From c25d92d786f8fdc083ff99e04f1079af235dcb5e Mon Sep 17 00:00:00 2001 From: Daniel Minor Date: Mon, 3 Jun 2024 13:00:43 -0400 Subject: [PATCH] Remove current contents of implementation-contributed --- .../curation_logs/es6.md | 38 - .../curation_logs/javascriptcore.json | 2763 - .../curation_logs/stress.md | 106 - .../curation_logs/v8.json | 5 - .../javascriptcore/.gitkeep | 0 .../javascriptcore/ChangeLog-2018-09-11 | 23391 --------- .../es6/Map_-0_key_converts_to_+0.js | 15 - ...methods_accept_primitives_Object.freeze.js | 9 - ...mitives_Object.getOwnPropertyDescriptor.js | 9 - ...t_primitives_Object.getOwnPropertyNames.js | 11 - ...accept_primitives_Object.getPrototypeOf.js | 9 - ...s_accept_primitives_Object.isExtensible.js | 9 - ...thods_accept_primitives_Object.isFrozen.js | 9 - ...thods_accept_primitives_Object.isSealed.js | 9 - ...c_methods_accept_primitives_Object.keys.js | 10 - ...ept_primitives_Object.preventExtensions.js | 9 - ...c_methods_accept_primitives_Object.seal.js | 9 - .../es6/Proxy_JSON.stringify_support.js | 10 - ...operty_calls_Array.prototype.copyWithin.js | 14 - ...eleteProperty_calls_Array.prototype.pop.js | 14 - ...eProperty_calls_Array.prototype.reverse.js | 14 - ...eteProperty_calls_Array.prototype.shift.js | 14 - ...teProperty_calls_Array.prototype.splice.js | 14 - ...eProperty_calls_Array.prototype.unshift.js | 14 - ...ternal_get_calls_Array.prototype.concat.js | 21 - ..._internal_get_calls_Array.prototype.pop.js | 14 - ...ernal_get_calls_Array.prototype.reverse.js | 14 - ...nternal_get_calls_Array.prototype.shift.js | 14 - ...ternal_get_calls_Array.prototype.splice.js | 15 - ...rnal_get_calls_Array.prototype.toString.js | 14 - ...calls_Array.prototype_iteration_methods.js | 27 - ...nal_get_calls_ClassDefinitionEvaluation.js | 14 - ...nternal_get_calls_CreateDynamicFunction.js | 14 - ...ernal_get_calls_CreateListFromArrayLike.js | 14 - ...nternal_get_calls_Date.prototype.toJSON.js | 15 - ...rnal_get_calls_Error.prototype.toString.js | 14 - ...ernal_get_calls_Function.prototype.bind.js | 14 - .../Proxy_internal_get_calls_HasBinding.js | 17 - ...Proxy_internal_get_calls_JSON.stringify.js | 14 - .../Proxy_internal_get_calls_Object.assign.js | 14 - ...ternal_get_calls_RegExp.prototype.flags.js | 14 - ...nternal_get_calls_RegExp.prototype.test.js | 14 - ...nal_get_calls_RegExp.prototype.toString.js | 11 - ...et_calls_RegExp.prototype[Symbol.match].js | 16 - ..._calls_RegExp.prototype[Symbol.replace].js | 16 - ...t_calls_RegExp.prototype[Symbol.search].js | 14 - ...et_calls_RegExp.prototype[Symbol.split].js | 16 - ...y_internal_get_calls_RegExp_constructor.js | 16 - ...ternal_get_calls_String.prototype.match.js | 16 - ...rnal_get_calls_String.prototype.replace.js | 16 - ...ernal_get_calls_String.prototype.search.js | 16 - ...ternal_get_calls_String.prototype.split.js | 16 - ..._internal_get_calls_instanceof_operator.js | 15 - ...al_set_calls_Array.prototype.copyWithin.js | 14 - ...internal_set_calls_Array.prototype.fill.js | 14 - ..._internal_set_calls_Array.prototype.pop.js | 14 - ...internal_set_calls_Array.prototype.push.js | 14 - ...ernal_set_calls_Array.prototype.reverse.js | 14 - ...nternal_set_calls_Array.prototype.shift.js | 14 - ...ternal_set_calls_Array.prototype.splice.js | 14 - ...ernal_set_calls_Array.prototype.unshift.js | 14 - .../Proxy_internal_set_calls_Object.assign.js | 14 - .../es6/Set_-0_key_converts_to_+0.js | 16 - .../Symbol_JSON.stringify_ignores_symbols.js | 13 - ...icode_code_point_escapes_in_identifiers.js | 11 - .../Unicode_code_point_escapes_in_strings.js | 10 - .../es6/WeakSet_iterator_closing.js | 37 - .../es6/arrow_functions_0_parameters.js | 9 - ...arrow_functions_1_parameter_no_brackets.js | 10 - ..._functions_cant_be_bound_can_be_curried.js | 11 - .../es6/arrow_functions_correct_precedence.js | 11 - ...row_functions_lexical_arguments_binding.js | 10 - ...ow_functions_lexical_new.target_binding.js | 12 - .../arrow_functions_lexical_super_binding.js | 20 - .../arrow_functions_lexical_this_binding.js | 11 - .../arrow_functions_multiple_parameters.js | 10 - ...ne_break_between_params_and_code_=_code.js | 11 - .../arrow_functions_no_prototype_property.js | 10 - ...nctions_this_unchanged_by_call_or_apply.js | 11 - .../es6/const_temporal_dead_zone.js | 13 - .../const_temporal_dead_zone_strict_mode.js | 14 - ..._function_parameters_temporal_dead_zone.js | 19 - .../for..of_loops_iterator_closing_break.js | 34 - .../for..of_loops_iterator_closing_throw.js | 36 - .../es6/for..of_loops_with_arrays.js | 11 - ...for..of_loops_with_astral_plane_strings.js | 12 - .../for..of_loops_with_generator_instances.js | 14 - .../for..of_loops_with_generic_iterables.js | 34 - ...ops_with_instances_of_generic_iterables.js | 34 - .../es6/for..of_loops_with_sparse_arrays.js | 13 - .../es6/for..of_loops_with_strings.js | 12 - .../es6/generators_correct_this_binding.js | 19 - ...nerators_generator_function_expressions.js | 19 - .../javascriptcore/es6/generators_sending.js | 17 - .../es6/let_temporal_dead_zone.js | 13 - .../es6/let_temporal_dead_zone_strict_mode.js | 14 - .../es6/miscellaneous_Invalid_Date.js | 9 - ...eous_RegExp_constructor_can_alter_flags.js | 9 - ....prototype_case_methods_Unicode_support.js | 9 - ...cellaneous_accessors_arent_constructors.js | 13 - ...s_built-in_prototypes_are_not_instances.js | 22 - ...duplicate_property_names_in_strict_mode.js | 10 - ...laneous_function_length_is_configurable.js | 17 - ...s_no_assignments_allowed_in_for-in_head.js | 14 - ...o_escaped_reserved_words_as_identifiers.js | 14 - ...eous_no_semicolon_needed_after_do-while.js | 9 - ...s_subclassables_Boolean_is_subclassable.js | 12 - ...neous_subclassables_Map_is_subclassable.js | 15 - ...us_subclassables_Number_is_subclassable.js | 12 - ...neous_subclassables_Set_is_subclassable.js | 16 - ...us_subclassables_String_is_subclassable.js | 14 - ...type_of_bound_functions_arrow_functions.js | 23 - ...type_of_bound_functions_basic_functions.js | 23 - .../prototype_of_bound_functions_classes.js | 23 - ..._of_bound_functions_generator_functions.js | 23 - ...prototype_of_bound_functions_subclasses.js | 21 - ...rest_parameters_cant_be_used_in_setters.js | 16 - .../rest_parameters_new_Function_support.js | 12 - .../well-known_symbols_Symbol.toPrimitive.js | 19 - .../javascriptcore/modules/aliased-names.js | 8 - .../modules/aliased-names/main.js | 10 - .../javascriptcore/modules/aliasing.js | 18 - .../modules/aliasing/drink-2.js | 5 - .../javascriptcore/modules/aliasing/drink.js | 7 - .../modules/async-function-export.js | 5 - .../caching-should-not-make-ambiguous.js | 5 - .../caching-should-not-make-ambiguous/A.js | 2 - .../caching-should-not-make-ambiguous/B.js | 1 - .../caching-should-not-make-ambiguous/C.js | 1 - .../caching-should-not-make-ambiguous/D.js | 1 - .../caching-should-not-make-ambiguous/main.js | 1 - .../modules/cyclic-may-produce-tdz.js | 7 - .../modules/cyclic-may-produce-tdz/1.js | 12 - .../modules/cyclic-may-produce-tdz/2.js | 15 - .../modules/default-error/main.js | 1 - .../default-value-case-should-be-copied.js | 11 - .../module.js | 7 - .../javascriptcore/modules/defaults.js | 10 - .../modules/defaults/Cappuccino.js | 4 - .../javascriptcore/modules/defaults/Cocoa.js | 5 - .../javascriptcore/modules/defaults/Matcha.js | 1 - .../modules/destructuring-export.js | 10 - .../modules/destructuring-export/array.js | 3 - .../modules/destructuring-export/main.js | 16 - .../javascriptcore/modules/different-view.js | 5 - .../modules/different-view/A.js | 2 - .../modules/different-view/B.js | 2 - .../modules/different-view/C.js | 1 - .../modules/different-view/D.js | 1 - .../modules/different-view/E.js | 1 - .../modules/different-view/main.js | 1 - .../modules/execution-order-cyclic.js | 5 - .../modules/execution-order-cyclic/1.js | 5 - .../modules/execution-order-cyclic/10.js | 7 - .../modules/execution-order-cyclic/11.js | 7 - .../modules/execution-order-cyclic/2.js | 8 - .../modules/execution-order-cyclic/3.js | 7 - .../modules/execution-order-cyclic/4.js | 6 - .../modules/execution-order-cyclic/5.js | 7 - .../modules/execution-order-cyclic/6.js | 7 - .../modules/execution-order-cyclic/7.js | 7 - .../modules/execution-order-cyclic/8.js | 6 - .../modules/execution-order-cyclic/9.js | 8 - .../modules/execution-order-dag.js | 7 - .../modules/execution-order-dag/1.js | 4 - .../modules/execution-order-dag/10.js | 7 - .../modules/execution-order-dag/2.js | 6 - .../modules/execution-order-dag/3.js | 6 - .../modules/execution-order-dag/4.js | 6 - .../modules/execution-order-dag/5.js | 7 - .../modules/execution-order-dag/6.js | 6 - .../modules/execution-order-dag/7.js | 6 - .../modules/execution-order-dag/8.js | 7 - .../modules/execution-order-dag/9.js | 6 - .../modules/execution-order-depth.js | 5 - .../modules/execution-order-depth/1.js | 4 - .../modules/execution-order-depth/2.js | 6 - .../modules/execution-order-depth/3.js | 6 - .../modules/execution-order-self.js | 6 - .../modules/execution-order-sibling.js | 7 - .../modules/execution-order-sibling/1.js | 4 - .../modules/execution-order-sibling/2.js | 4 - .../modules/execution-order-sibling/3.js | 4 - .../modules/execution-order-tree.js | 7 - .../modules/execution-order-tree/1.js | 4 - .../modules/execution-order-tree/10.js | 4 - .../modules/execution-order-tree/11.js | 7 - .../modules/execution-order-tree/2.js | 6 - .../modules/execution-order-tree/3.js | 7 - .../modules/execution-order-tree/4.js | 4 - .../modules/execution-order-tree/5.js | 7 - .../modules/execution-order-tree/6.js | 4 - .../modules/execution-order-tree/7.js | 6 - .../modules/execution-order-tree/8.js | 4 - .../modules/execution-order-tree/9.js | 6 - .../modules/export-conflict-ok.js | 5 - .../modules/export-conflict-ok/A.js | 2 - .../modules/export-conflict-ok/B.js | 2 - .../modules/export-conflict-ok/main.js | 2 - .../export-default-function-hoisting.js | 5 - .../cappuccino.js | 6 - .../export-default-function-hoisting/cocoa.js | 9 - ...-function-name-in-assignment-expression.js | 8 - ...ault-function-name-in-class-declaration.js | 8 - ...t-function-name-in-function-declaration.js | 8 - ...-function-name-in-generator-declaration.js | 8 - .../javascriptcore/modules/export-from.js | 8 - .../modules/export-from/main.js | 6 - .../modules/export-from/second.js | 9 - .../modules/export-with-declarations-list.js | 9 - .../export-with-declarations-list/main.js | 3 - ...may-be-called-before-module-is-executed.js | 1 - .../1.js | 15 - .../2.js | 13 - .../modules/fallback-ambiguous.js | 13 - .../modules/fallback-ambiguous/A.js | 2 - .../modules/fallback-ambiguous/B.js | 1 - .../modules/fallback-ambiguous/C.js | 1 - .../modules/fallback-ambiguous/D.js | 2 - .../modules/fallback-ambiguous/E.js | 1 - .../modules/fallback-ambiguous/main.js | 1 - .../javascriptcore/modules/html-comments.js | 45 - .../javascriptcore/modules/import-call.js | 5 - .../modules/import-call/main.js | 1 - .../modules/import-default-async.js | 6 - .../javascriptcore/modules/import-error.js | 16 - .../import-error/export-ambiguous-1.js | 1 - .../import-error/export-ambiguous-2.js | 1 - .../modules/import-error/export-ambiguous.js | 4 - .../export-default-from-star-2.js | 2 - .../import-error/export-default-from-star.js | 1 - .../modules/import-error/export-not-found.js | 2 - .../modules/import-error/import-ambiguous.js | 1 - .../import-error/import-default-from-star.js | 1 - .../modules/import-error/import-not-found.js | 1 - .../modules/import-meta-assignment.js | 25 - .../modules/import-meta-syntax.js | 25 - .../javascriptcore/modules/import-meta.js | 11 - .../modules/import-meta/cocoa.js | 4 - .../modules/import-named-async-as.js | 6 - .../modules/import-named-async.js | 4 - .../modules/import-named-async/target.js | 1 - .../modules/import-namespace-async.js | 5 - .../imported-bindings-are-immutable.js | 43 - .../bindings.js | 11 - ...dings-can-be-changed-in-original-module.js | 17 - .../bindings.js | 16 - .../modules/indirect-export-error.js | 17 - .../indirect-export-ambiguous-2.js | 2 - .../indirect-export-ambiguous-3.js | 2 - .../indirect-export-ambiguous-4.js | 1 - .../indirect-export-ambiguous.js | 1 - .../indirect-export-default-2.js | 1 - .../indirect-export-default-3.js | 2 - .../indirect-export-default.js | 2 - .../indirect-export-not-found-2.js | 1 - .../indirect-export-not-found.js | 1 - .../modules/module-assert-access-binding.js | 10 - .../modules/module-assert-access-namespace.js | 10 - .../javascriptcore/modules/module-eval.js | 11 - .../javascriptcore/modules/module-eval/A.js | 8 - .../javascriptcore/modules/module-eval/B.js | 3 - .../modules/module-eval/drink.js | 3 - .../modules/module-is-strict-code.js | 19 - .../modules/module-jit-reachability.js | 20010 -------- .../modules/module-namespace-is-frozen.js | 9 - .../modules/module-namespace-is-sealed.js | 9 - .../modules/namespace-ambiguous.js | 6 - .../namespace-ambiguous/ambiguous-2.js | 2 - .../namespace-ambiguous/ambiguous-3.js | 1 - .../namespace-ambiguous/ambiguous-4.js | 1 - .../modules/namespace-ambiguous/ambiguous.js | 1 - .../javascriptcore/modules/namespace-empty.js | 17 - .../javascriptcore/modules/namespace-error.js | 5 - ...al-error-should-hide-global-ambiguity-2.js | 3 - ...al-error-should-hide-global-ambiguity-3.js | 1 - ...al-error-should-hide-global-ambiguity-4.js | 3 - ...al-error-should-hide-global-ambiguity-5.js | 1 - ...al-error-should-hide-global-ambiguity-6.js | 1 - ...al-error-should-hide-global-ambiguity-7.js | 2 - ...ocal-error-should-hide-global-ambiguity.js | 1 - .../modules/namespace-object-get-property.js | 9 - .../modules/namespace-object-has-property.js | 7 - .../namespace-object-inline-caching.js | 37 - .../namespace-object-inline-caching/a.js | 1 - .../namespace-object-inline-caching/b.js | 1 - .../namespace-object-symbol-iterator-name.js | 4 - .../namespace-object-typed-array-fast-path.js | 7 - .../modules/namespace-prototype-assignment.js | 389 - .../modules/namespace-re-export.js | 1 - .../namespace-re-export-fixture.js | 2 - .../namespace-re-export.js | 11 - .../modules/namespace-set-prototype-of.js | 10 - .../javascriptcore/modules/namespace-tdz.js | 1 - .../javascriptcore/modules/namespace-tdz/A.js | 10 - .../javascriptcore/modules/namespace-tdz/B.js | 20 - .../modules/namespace-tdz/main.js | 1 - .../javascriptcore/modules/namespace.js | 81 - .../modules/namespace/additional-drink.js | 4 - .../javascriptcore/modules/namespace/drink.js | 10 - .../namespace/more-additional-drink.js | 1 - .../modules/resources/assert.js | 28 - .../javascriptcore/modules/scopes-eval.js | 24 - .../javascriptcore/modules/scopes.js | 37 - .../modules/scopes/additional-drink.js | 4 - .../javascriptcore/modules/scopes/drink.js | 10 - .../modules/scopes/more-additional-drink.js | 1 - .../javascriptcore/modules/self-star-link.js | 15 - .../modules/self-star-link/A.js | 2 - .../modules/self-star-link/B.js | 1 - .../modules/self-star-link/C.js | 2 - .../modules/self-star-link/D.js | 1 - .../modules/self-star-link/E.js | 1 - .../modules/string-prototype-module-scope.js | 15 - .../modules/this-should-be-undefined.js | 3 - .../modules/uncacheable-when-see-star.js | 13 - .../uncacheable-when-see-star/A-pre.js | 1 - .../modules/uncacheable-when-see-star/A.js | 2 - .../modules/uncacheable-when-see-star/B.js | 1 - .../modules/uncacheable-when-see-star/C.js | 2 - .../modules/uncacheable-when-see-star/D.js | 1 - .../uncacheable-when-see-star/E-pre.js | 1 - .../modules/uncacheable-when-see-star/E.js | 1 - .../uncacheable-when-see-star/main1.js | 1 - .../uncacheable-when-see-star/main2.js | 1 - ...ct-define-length-getter-rope-string-oom.js | 5 - ...activation-sink-default-value-tdz-error.js | 46 - .../stress/activation-sink-default-value.js | 33 - ...on-sink-osrexit-default-value-tdz-error.js | 48 - .../activation-sink-osrexit-default-value.js | 39 - .../stress/activation-sink-osrexit.js | 27 - .../javascriptcore/stress/activation-sink.js | 26 - .../stress/addition-order-evaluation.js | 24 - ...ay-check-on-get-by-val-constant-folding.js | 14 - .../allow-math-ic-b3-code-duplication.js | 37 - ...pply-second-argument-must-be-array-like.js | 50 - ...ation-will-generate-edge-without-result.js | 9 - .../stress/arith-abs-on-various-types.js | 241 - .../stress/arith-acos-on-various-types.js | 238 - .../stress/arith-acosh-on-various-types.js | 237 - .../array-indexof-array-prototype-trap.js | 45 - .../stress/array-indexof-cached-length.js | 24 - .../stress/array-indexof-fast-path-effects.js | 11 - ...array-indexof-have-a-bad-time-c-runtime.js | 43 - .../stress/array-indexof-hole-nan.js | 19 - .../stress/array-indexof-infinity.js | 21 - .../stress/array-indexof-negative-zero.js | 20 - .../stress/array-indexof-own-getter.js | 66 - .../stress/array-indexof-prototype-trap.js | 48 - .../array-lastindexof-array-prototype-trap.js | 45 - .../stress/array-lastindexof-cached-length.js | 24 - .../array-lastindexof-fast-path-effects.js | 11 - ...y-lastindexof-have-a-bad-time-c-runtime.js | 43 - .../stress/array-lastindexof-hole-nan.js | 19 - .../stress/array-lastindexof-infinity.js | 21 - .../stress/array-lastindexof-negative-zero.js | 25 - .../stress/array-lastindexof-own-getter.js | 66 - .../array-lastindexof-prototype-trap.js | 48 - ...prototype-concat-of-long-spliced-arrays.js | 36 - ...rototype-concat-of-long-spliced-arrays2.js | 26 - .../stress/array-push-multiple-int32.js | 26 - ...pecies-create-should-handle-masquerader.js | 21 - ...should-not-race-against-compiler-thread.js | 7 - ...on-sink-osrexit-default-value-tdz-error.js | 48 - ...on-lexical-this-activation-sink-osrexit.js | 36 - ...owfunction-lexical-this-activation-sink.js | 40 - ...ssignment-in-function-call-bracket-node.js | 127 - .../async-arrow-function-in-class-heritage.js | 31 - ...row-functions-lexical-arguments-binding.js | 51 - ...rrow-functions-lexical-binding-in-class.js | 265 - ...ow-functions-lexical-new.target-binding.js | 44 - ...c-arrow-functions-lexical-super-binding.js | 207 - ...nc-arrow-functions-lexical-this-binding.js | 28 - ...ty-was-cleared-when-locals-are-not-live.js | 37 - .../stress/big-int-bitwise-and-general.js | 97 - .../stress/big-int-bitwise-and-jit.js | 19 - .../big-int-bitwise-and-memory-stress.js | 14 - ...int-bitwise-and-to-primitive-precedence.js | 29 - .../stress/big-int-bitwise-and-type-error.js | 106 - .../big-int-bitwise-and-wrapped-value.js | 37 - .../stress/big-int-bitwise-or-general.js | 98 - .../stress/big-int-bitwise-or-jit-untyped.js | 20 - .../stress/big-int-bitwise-or-jit.js | 19 - .../big-int-bitwise-or-memory-stress.js | 14 - ...-int-bitwise-or-to-primitive-precedence.js | 29 - .../stress/big-int-bitwise-or-type-error.js | 106 - .../big-int-bitwise-or-wrapped-value.js | 62 - .../stress/big-int-bitwise-xor-general.js | 97 - .../stress/big-int-bitwise-xor-jit.js | 25 - .../big-int-bitwise-xor-memory-stress.js | 14 - ...int-bitwise-xor-to-primitive-precedence.js | 29 - .../stress/big-int-bitwise-xor-type-error.js | 104 - .../stress/big-int-bitwise-xor-untyped.js | 26 - .../big-int-bitwise-xor-wrapped-value.js | 37 - .../stress/big-int-boolean-proven-type.js | 21 - .../stress/big-int-branch-usage.js | 23 - .../stress/big-int-div-jit-osr.js | 25 - .../stress/big-int-div-jit-untyped.js | 36 - .../stress/big-int-json-stringify-to-json.js | 50 - .../stress/big-int-json-stringify.js | 52 - .../stress/big-int-left-shift-general.js | 103 - .../stress/big-int-left-shift-range-error.js | 22 - .../stress/big-int-left-shift-type-error.js | 104 - .../big-int-left-shift-wrapped-value.js | 36 - .../big-int-literal-inside-literal-object.js | 21 - .../stress/big-int-logical-and.js | 20 - .../stress/big-int-logical-not.js | 20 - .../stress/big-int-logical-or.js | 20 - .../stress/big-int-mul-jit-osr.js | 25 - .../stress/big-int-mul-jit-untyped.js | 36 - .../stress/big-int-negate-jit.js | 48 - .../stress/big-int-out-of-memory-tests.js | 52 - .../stress/big-int-right-shift-general.js | 104 - .../stress/big-int-right-shift-type-error.js | 104 - .../big-int-right-shift-wrapped-value.js | 36 - .../stress/big-int-subtraction-jit.js | 19 - .../stress/big-int-to-string.js | 57 - ...oven-type-non-constant-including-symbol.js | 33 - ...ig-int-type-of-proven-type-non-constant.js | 21 - .../javascriptcore/stress/big-int-type-of.js | 34 - .../big-int-value-op-update-gc-rules.js | 105 - .../stress/big-wasm-memory-grow-no-max.js | 45 - .../stress/big-wasm-memory-grow.js | 45 - .../javascriptcore/stress/big-wasm-memory.js | 43 - .../stress/bit-not-must-generate.js | 26 - .../bit-op-with-object-returning-int32.js | 38 - .../stress/bitwise-not-no-int32.js | 30 - .../stress/block-scope-redeclarations.js | 39 - .../stress/builtin-function-length.js | 52 - ...ture-check-when-string-object-is-proven.js | 11 - .../javascriptcore/stress/completion-value.js | 293 - .../stress/computed-accessor-parsing.js | 112 - .../stress/computed-accessor.js | 523 - .../concat-append-one-with-sparse-array.js | 7 - ...ing-shadow-existing-global-property-ftl.js | 49 - ...shadow-existing-global-property-tdz-ftl.js | 53 - ...ing-shadow-existing-global-property-tdz.js | 44 - ...binding-shadow-existing-global-property.js | 33 - ...ng-global-properties-and-eval-injection.js | 36 - ...nt-fold-double-rep-into-double-constant.js | 14 - ...-should-only-call-getter-once-per-new-1.js | 15 - ...-should-only-call-getter-once-per-new-2.js | 15 - ...-throw-exception-when-getting-prototype.js | 56 - .../javascriptcore/stress/custom-iterators.js | 328 - ...m-prototype-may-be-same-to-original-one.js | 12 - ...a-view-set-intrinsic-undefined-result-2.js | 11 - ...ata-view-set-intrinsic-undefined-result.js | 20 - .../stress/dataview-jit-set-nan.js | 52 - .../javascriptcore/stress/dataview-jit-set.js | 439 - ...sider-terminal-blocks-bytecode-liveness.js | 19 - .../stress/dfg-to-string-on-int-does-gc.js | 26 - ...-to-string-on-string-object-does-not-gc.js | 26 - ...-on-string-or-string-object-does-not-gc.js | 34 - ...-on-stack-overflow-when-parsing-builtin.js | 13 - ...erflow-when-parsing-default-constructor.js | 17 - .../dont-emit-osr-exits-for-every-call-ftl.js | 15 - .../stress/double-to-int32-NaN.js | 22 - ...lidable-new-object-roflcopter-then-exit.js | 25 - .../stress/elide-new-object-dag-then-exit.js | 45 - ...asic-block-set-local-should-filter-type.js | 16 - ...description-on-symbols-should-not-crash.js | 18 - ...s-or-messages-should-not-crash-toString.js | 13 - ...ould-be-handled-early-in-object-methods.js | 73 - .../exitok-is-not-the-same-as-mayExit.js | 19 - ...in-invalidate-context-weird-assignments.js | 94 - .../javascriptcore/stress/for-in-tests.js | 199 - ...rayMode-on-originalNonArray-array-class.js | 16 - ...ilter-phantoms-should-clear-clear-value.js | 98 - ...ays-filter-for-low-type-check-functions.js | 31 - ...tion-cache-with-parameters-end-position.js | 40 - ...nction-caller-async-arrow-function-body.js | 27 - .../function-caller-async-function-body.js | 28 - .../function-caller-async-generator-body.js | 28 - .../stress/function-caller-generator-body.js | 29 - .../function-caller-generator-method-body.js | 27 - .../stress/function-constructor-name.js | 36 - .../stress/get-by-id-change-mode.js | 12 - .../javascriptcore/stress/get-stack-double.js | 11 - ...uld-not-be-shadowed-by-lexical-bindings.js | 18 - ...l-environment-does-not-trap-unscopables.js | 20 - ...turn-a-promise-when-clearing-exceptions.js | 19 - ...cal-binding-epoch-should-be-correct-one.js | 31 - ...uld-not-be-shadowed-by-lexical-bindings.js | 18 - .../stress/ignore-promise-species.js | 14 - .../javascriptcore/stress/inferred-names.js | 156 - .../stress/is-undefined-or-null-builtin.js | 26 - .../javascriptcore/stress/jsc-read.js | 38 - ...ith-builtin-functions-with-no-prototype.js | 9 - .../stress/json-parse-big-object.js | 15 - .../stress/json-stringified-overflow-2.js | 10 - .../stress/json-stringified-overflow.js | 9 - .../stress/json-stringify-no-arguments.js | 7 - .../json-stringify-string-builder-overflow.js | 29 - .../stress/json-surrogate-pair.js | 14 - ...hould-allow-empty-value-to-flow-through.js | 25 - ...own-cell-use-needs-type-check-assertion.js | 14 - .../stress/large-unshift-splice.js | 18 - .../left-shift-to-primitive-precedence.js | 29 - ...ing-shadow-existing-global-property-ftl.js | 48 - ...shadow-existing-global-property-tdz-ftl.js | 53 - ...ing-shadow-existing-global-property-tdz.js | 44 - ...binding-shadow-existing-global-property.js | 31 - ...ng-global-properties-and-eval-injection.js | 36 - .../materialize-regexp-cyclic-regexp.js | 48 - .../stress/materialize-regexp-cyclic.js | 41 - ...exp-has-correct-last-index-set-by-match.js | 30 - .../stress/maximum-inline-capacity.js | 3020 -- ...iants-should-bail-if-structures-overlap.js | 16 - .../stress/modify-set-during-iteration.js | 92 - ...must-filter-value-before-filtering-base.js | 25 - ...new-largeish-contiguous-array-with-size.js | 47 - .../javascriptcore/stress/new-regex-inline.js | 84 - ...locations-if-stack-trace-is-still-valid.js | 30 - ...ase-needs-to-write-to-each-scope-offset.js | 13 - .../stress/object-keys-cached-zero.js | 21 - .../stress/object-keys-changed-attribute.js | 28 - .../stress/object-keys-changed-index.js | 28 - .../stress/object-keys-changed.js | 28 - .../stress/object-keys-indexed-non-cache.js | 25 - .../stress/object-keys-osr-exit.js | 22 - ...bject-keys-overrides-get-property-names.js | 57 - .../javascriptcore/stress/op_add.js | 66 - .../javascriptcore/stress/op_bitand.js | 72 - .../javascriptcore/stress/op_bitor.js | 72 - .../javascriptcore/stress/op_bitxor.js | 72 - .../javascriptcore/stress/op_div-ConstVar.js | 20 - .../javascriptcore/stress/op_div-VarConst.js | 20 - .../javascriptcore/stress/op_div-VarVar.js | 20 - .../stress/op_lshift-ConstVar.js | 22 - .../stress/op_lshift-VarConst.js | 22 - .../javascriptcore/stress/op_lshift-VarVar.js | 22 - .../javascriptcore/stress/op_mod-ConstVar.js | 22 - .../javascriptcore/stress/op_mod-VarConst.js | 22 - .../javascriptcore/stress/op_mod-VarVar.js | 22 - .../javascriptcore/stress/op_mul-ConstVar.js | 22 - .../javascriptcore/stress/op_mul-VarConst.js | 22 - .../javascriptcore/stress/op_mul-VarVar.js | 22 - .../stress/op_rshift-ConstVar.js | 22 - .../stress/op_rshift-VarConst.js | 22 - .../javascriptcore/stress/op_rshift-VarVar.js | 22 - .../javascriptcore/stress/op_sub-ConstVar.js | 22 - .../javascriptcore/stress/op_sub-VarConst.js | 22 - .../javascriptcore/stress/op_sub-VarVar.js | 22 - .../stress/op_urshift-ConstVar.js | 22 - .../stress/op_urshift-VarConst.js | 22 - .../stress/op_urshift-VarVar.js | 22 - ...k-accesses-due-to-probe-based-osr-exits.js | 14 - .../pow-expects-update-expression-on-lhs.js | 96 - .../private-name-as-anonymous-builtin.js | 24 - ...-structure-after-getting-property-names.js | 11 - .../stress/proxy-get-set-correct-receiver.js | 117 - .../javascriptcore/stress/put-by-id-flags.js | 23 - .../javascriptcore/stress/r238510-bad-loop.js | 10 - .../stress/regexp-compile-oom.js | 99 - .../javascriptcore/stress/regress-159883.js | 6 - .../javascriptcore/stress/regress-169445.js | 46 - .../javascriptcore/stress/regress-170253.js | 12 - .../javascriptcore/stress/regress-170732.js | 5 - .../javascriptcore/stress/regress-179562.js | 33 - .../javascriptcore/stress/regress-179634.js | 24 - .../javascriptcore/stress/regress-185888.js | 12 - .../javascriptcore/stress/regress-187373-2.js | 8 - .../javascriptcore/stress/regress-187373.js | 12 - .../javascriptcore/stress/regress-189028.js | 242 - .../javascriptcore/stress/regress-189132.js | 14 - .../javascriptcore/stress/regress-189317.js | 126 - .../javascriptcore/stress/regress-189571.js | 151 - .../javascriptcore/stress/regress-190186.js | 95 - .../javascriptcore/stress/regress-190187.js | 18 - .../javascriptcore/stress/regress-190515-2.js | 15 - .../javascriptcore/stress/regress-190515.js | 26 - .../javascriptcore/stress/regress-190693.js | 63 - .../javascriptcore/stress/regress-191563.js | 22 - .../javascriptcore/stress/regress-191579.js | 26 - .../javascriptcore/stress/regress-191730.js | 25 - .../javascriptcore/stress/regress-191731.js | 27 - .../javascriptcore/stress/regress-191856.js | 8 - .../javascriptcore/stress/regress-191993.js | 13 - .../javascriptcore/stress/regress-192386.js | 12 - .../javascriptcore/stress/regress-192441.js | 12 - .../javascriptcore/stress/regress-192626.js | 23 - .../javascriptcore/stress/regress-192717.js | 16 - .../stress/reserved-word-with-escape.js | 153 - .../stress/rest-parameter-many-arguments.js | 52 - .../right-shift-to-primitive-precedence.js | 29 - .../stress/sampling-profiler-richards.js | 545 - ...r-should-not-sample-beyond-stack-bounds.js | 24 - ...n-cache-global-property-before-deleting.js | 27 - ...tion-cache-global-property-bump-counter.js | 58 - ...-cache-global-property-even-if-it-fails.js | 23 - .../javascriptcore/stress/simple-module.mjs | 2 - .../javascriptcore/stress/simple-script.js | 2 - .../stress/slice-array-storage-with-holes.js | 11 - .../stress/splay-flash-access-1ms.js | 904 - ...-zero-property-storage-when-rebalancing.js | 8 - ...ead-forward-call-varargs-stack-overflow.js | 60 - ...ityCheck-should-use-construct-codeBlock.js | 27 - .../stress/string-16bit-repeat-overflow.js | 9 - .../stress/string-get-by-val-lowering.js | 17 - .../stress/string-overflow-createError.js | 12 - .../stress/string-to-string-error.js | 46 - .../stress/string-value-of-error.js | 46 - .../stress/symbol-description-identity.js | 21 - .../javascriptcore/stress/symbol-identity.js | 20 - .../symbol-with-description-throw-error.js | 52 - .../stress/tailCallForwardArguments.js | 165 - ...is-omission-with-different-strict-modes.js | 10 - ...ry-get-by-id-should-spill-registers-dfg.js | 12 - ...hoist-check-structure-on-tdz-this-value.js | 53 - ...pe-for-get-by-val-can-be-widen-after-ai.js | 25 - ...ler-log-should-defer-pending-exceptions.js | 26 - .../stress/typed-array-array-modes-profile.js | 18 - .../typed-array-get-by-val-profiling.js | 93 - ...baseline-codeblock-materialize-osr-exit.js | 13 - .../stress/value-add-big-int-and-string.js | 18 - ...alue-add-big-int-prediction-propagation.js | 18 - .../stress/value-add-big-int-untyped.js | 26 - .../stress/value-div-fixup-int32-big-int.js | 29 - .../stress/value-mul-fixup-int32-big-int.js | 29 - ...displaced-in-jsstack-should-be-purified.js | 13 - ...alue-sub-big-int-prediction-propagation.js | 18 - .../stress/value-sub-big-int-untyped.js | 26 - .../stress/value-sub-spec-none-case.js | 22 - .../javascriptcore/stress/value-to-boolean.js | 70 - ...t-graph-dump-availability-already-freed.js | 9 - .../javascriptcore/stress/wide-op_catch.js | 257 - .../wasm/regress/regress-191056.js | 15 - ...ested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js | 88 - ...quested-more-than-MAX_ARRAY_BUFFER_SIZE.js | 10 - implementation-contributed/v8/intl/BUILD.gn | 16 - implementation-contributed/v8/intl/OWNERS | 4 - implementation-contributed/v8/intl/assert.js | 232 - .../v8/intl/bad-target.js | 39 - .../v8/intl/bigint/tolocalestring.js | 61 - .../v8/intl/break-iterator/default-locale.js | 45 - .../v8/intl/break-iterator/en-break.js | 61 - .../v8/intl/break-iterator/options.js | 13 - .../intl/break-iterator/property-override.js | 64 - .../resolved-options-is-method.js | 40 - .../v8/intl/break-iterator/subclass.js | 29 - .../supported-locales-is-method.js | 32 - .../v8/intl/break-iterator/zh-break.js | 63 - .../v8/intl/collator/check-co-option.js | 33 - .../v8/intl/collator/check-kf-option.js | 36 - .../v8/intl/collator/check-kn-option.js | 29 - .../v8/intl/collator/constructor-order.js | 30 - .../v8/intl/collator/de-sort.js | 58 - .../v8/intl/collator/default-locale.js | 49 - .../v8/intl/collator/en-sort.js | 39 - .../v8/intl/collator/normalization.js | 56 - .../v8/intl/collator/options.js | 117 - .../v8/intl/collator/property-override.js | 63 - .../collator/resolved-options-is-method.js | 40 - .../v8/intl/collator/sr-sort.js | 45 - .../calendar-with-multiple-type-subtags.js | 39 - .../v8/intl/date-format/check-ca-option.js | 51 - .../v8/intl/date-format/check-hc-option.js | 43 - .../v8/intl/date-format/check-nu-option.js | 59 - .../constructor-date-style-order.js | 108 - .../constructor-date-time-style-order.js | 109 - .../constructor-date-time-style.js | 33 - .../date-format/constructor-no-style-order.js | 114 - .../v8/intl/date-format/constructor-order.js | 100 - .../constructor-time-style-order.js | 108 - .../intl/date-format/date-format-to-parts.js | 18 - .../v8/intl/date-format/default-locale.js | 41 - .../v8/intl/date-format/format-is-bound.js | 46 - .../v8/intl/date-format/format-test.js | 50 - .../date-format/format-with-extensions.js | 61 - .../v8/intl/date-format/invalid-time.js | 20 - .../v8/intl/date-format/month-far-future.js | 32 - .../property-override-date-style.js | 54 - .../property-override-date-time-style.js | 59 - .../property-override-time-style.js | 54 - .../v8/intl/date-format/property-override.js | 84 - .../date-format/resolved-options-is-method.js | 40 - .../date-format/resolved-options-unwrap.js | 11 - .../v8/intl/date-format/resolved-options.js | 108 - .../intl/date-format/timezone-conversion.js | 17 - .../v8/intl/date-format/timezone-name.js | 53 - .../v8/intl/date-format/timezone.js | 77 - .../v8/intl/date-format/unmodified-options.js | 17 - .../v8/intl/default_locale.js | 17 - .../CanonicalizeLocaleListTakeLocale.js | 65 - .../v8/intl/general/case-mapping.js | 222 - .../v8/intl/general/constructor.js | 44 - .../v8/intl/general/empty-handle.js | 48 - .../v8/intl/general/getCanonicalLocales.js | 16 - ...ndfathered_tags_without_preferred_value.js | 27 - .../v8/intl/general/invalid-locale.js | 24 - .../language_tags_with_preferred_values.js | 34 - .../v8/intl/general/mapped-locale.js | 52 - .../v8/intl/general/smp-identifier.js | 43 - .../v8/intl/general/supported-locales-of.js | 93 - .../v8/intl/intl.status | 65 - .../v8/intl/list-format/constructor-order.js | 21 - .../v8/intl/list-format/constructor.js | 90 - .../v8/intl/list-format/format-en.js | 98 - .../v8/intl/list-format/format-to-parts.js | 98 - .../v8/intl/list-format/format.js | 66 - .../v8/intl/list-format/formatToParts-zh.js | 157 - .../v8/intl/list-format/resolved-options.js | 152 - .../v8/intl/list-format/supported-locale.js | 19 - .../v8/intl/locale/locale-canonicalization.js | 24 - .../v8/intl/locale/locale-constructor.js | 179 - .../v8/intl/locale/locale-properties.js | 35 - .../v8/intl/locale/maximize_minimize.js | 138 - .../v8/intl/locale/property.js | 22 - .../v8/intl/locale/regress-8032.js | 7 - .../v8/intl/not-constructors.js | 34 - .../intl/number-format/check-digit-ranges.js | 58 - .../check-minimum-fraction-digits.js | 57 - .../v8/intl/number-format/check-nu-option.js | 59 - .../intl/number-format/constructor-order.js | 42 - .../v8/intl/number-format/default-locale.js | 41 - .../v8/intl/number-format/format-currency.js | 19 - .../v8/intl/number-format/format-is-bound.js | 50 - .../v8/intl/number-format/options.js | 13 - .../intl/number-format/property-override.js | 78 - .../resolved-options-is-method.js | 40 - .../number-format/resolved-options-unwrap.js | 11 - .../number-format/wont-crash-by-1-or-false.js | 12 - .../v8/intl/overrides/caching.js | 59 - .../v8/intl/overrides/date.js | 65 - .../v8/intl/overrides/number.js | 53 - .../v8/intl/overrides/security.js | 50 - .../v8/intl/overrides/string.js | 69 - .../v8/intl/overrides/webkit-tests.js | 32 - .../v8/intl/plural-rules/check-to-number.js | 21 - .../v8/intl/plural-rules/constructor-order.js | 33 - .../v8/intl/regress-4870.js | 8 - .../v8/intl/regress-5179.js | 15 - .../v8/intl/regress-7481.js | 39 - .../v8/intl/regress-7770.js | 8 - .../v8/intl/regress-7982.js | 36 - .../v8/intl/regress-8030.js | 19 - .../v8/intl/regress-8031.js | 22 - .../v8/intl/regress-8432.js | 42 - .../v8/intl/regress-8469.js | 87 - .../v8/intl/regress-8525.js | 27 - .../v8/intl/regress-8657.js | 7 - .../v8/intl/regress-8725514.js | 10 - .../v8/intl/regress-875643.js | 5 - .../v8/intl/regress-888299.js | 7 - .../v8/intl/regress-895942.js | 6 - .../v8/intl/regress-900013.js | 9 - .../v8/intl/regress-903566.js | 32 - .../v8/intl/regress-917151.js | 11 - .../v8/intl/regress-925216.js | 10 - .../relative-time-format/constructor-order.js | 21 - .../intl/relative-time-format/constructor.js | 77 - .../default-locale-fr-CA.js | 13 - .../default-locale-pt-BR.js | 13 - .../v8/intl/relative-time-format/format-en.js | 481 - .../format-to-parts-en.js | 107 - .../format-to-parts-plural.js | 26 - .../relative-time-format/format-to-parts.js | 80 - .../v8/intl/relative-time-format/format.js | 80 - .../resolved-options-nu.js | 97 - .../relative-time-format/resolved-options.js | 162 - .../relative-time-format/supported-locale.js | 18 - .../v8/intl/segmenter/check-lb-option.js | 29 - .../v8/intl/segmenter/constructor-order.js | 20 - .../v8/intl/segmenter/constructor.js | 190 - .../segmenter/segment-grapheme-following.js | 38 - .../segmenter/segment-grapheme-iterable.js | 45 - .../intl/segmenter/segment-grapheme-next.js | 40 - .../segmenter/segment-grapheme-preceding.js | 44 - .../v8/intl/segmenter/segment-grapheme.js | 29 - .../segmenter/segment-iterator-following.js | 26 - .../segment-iterator-ownPropertyDescriptor.js | 91 - .../segmenter/segment-iterator-position.js | 11 - .../segmenter/segment-iterator-preceding.js | 30 - .../v8/intl/segmenter/segment-iterator.js | 15 - .../segmenter/segment-sentence-following.js | 38 - .../segmenter/segment-sentence-iterable.js | 45 - .../intl/segmenter/segment-sentence-next.js | 40 - .../segmenter/segment-sentence-preceding.js | 44 - .../v8/intl/segmenter/segment-sentence.js | 29 - .../intl/segmenter/segment-word-following.js | 38 - .../intl/segmenter/segment-word-iterable.js | 45 - .../v8/intl/segmenter/segment-word-next.js | 40 - .../intl/segmenter/segment-word-preceding.js | 44 - .../v8/intl/segmenter/segment-word.js | 29 - .../v8/intl/string/normalization.js | 147 - implementation-contributed/v8/intl/testcfg.py | 100 - .../v8/intl/toStringTag.js | 29 - implementation-contributed/v8/intl/utils.js | 40 - .../v8/mjsunit/BUILD.gn | 27 - .../v8/mjsunit/accessor-map-sharing.js | 192 - .../v8/mjsunit/accessors-no-prototype.js | 51 - .../v8/mjsunit/accessors-on-global-object.js | 72 - .../v8/mjsunit/allocation-folding.js | 115 - .../v8/mjsunit/allocation-site-info.js | 573 - .../api-call-after-bypassed-exception.js | 39 - .../mjsunit/apply-arguments-gc-safepoint.js | 44 - .../v8/mjsunit/apply.js | 226 - .../v8/mjsunit/argument-assigned.js | 133 - .../v8/mjsunit/argument-named-arguments.js | 67 - .../v8/mjsunit/arguments-apply-deopt.js | 77 - .../v8/mjsunit/arguments-apply.js | 134 - .../v8/mjsunit/arguments-call-apply.js | 41 - .../v8/mjsunit/arguments-deopt.js | 183 - .../v8/mjsunit/arguments-enum.js | 52 - .../v8/mjsunit/arguments-escape.js | 59 - .../v8/mjsunit/arguments-indirect.js | 55 - .../v8/mjsunit/arguments-lazy.js | 47 - .../v8/mjsunit/arguments-load-across-eval.js | 84 - .../mjsunit/arguments-read-and-assignment.js | 164 - .../v8/mjsunit/arguments.js | 368 - .../v8/mjsunit/array-bounds-check-removal.js | 231 - .../v8/mjsunit/array-concat.js | 250 - .../v8/mjsunit/array-construct-transition.js | 35 - .../v8/mjsunit/array-constructor-feedback.js | 203 - .../v8/mjsunit/array-constructor.js | 115 - ...ray-elements-from-array-prototype-chain.js | 191 - .../array-elements-from-array-prototype.js | 191 - .../array-elements-from-object-prototype.js | 191 - .../v8/mjsunit/array-feedback.js | 50 - .../v8/mjsunit/array-foreach.js | 17 - .../v8/mjsunit/array-from-large-set.js | 11 - .../mjsunit/array-functions-prototype-misc.js | 370 - .../v8/mjsunit/array-functions-prototype.js | 159 - .../v8/mjsunit/array-indexing-receiver.js | 634 - .../v8/mjsunit/array-indexing.js | 187 - .../v8/mjsunit/array-isarray.js | 26 - .../v8/mjsunit/array-iteration.js | 425 - .../mjsunit/array-iterator-prototype-next.js | 20 - ...element-tostring-prototype-side-effects.js | 14 - ...rray-join-element-tostring-side-effects.js | 152 - .../array-join-index-getter-side-effects.js | 108 - .../array-join-invalid-string-length.js | 63 - .../v8/mjsunit/array-join-nesting.js | 16 - ...oin-nonarray-length-getter-side-effects.js | 29 - ...ay-join-separator-tostring-side-effects.js | 197 - .../v8/mjsunit/array-join.js | 114 - .../v8/mjsunit/array-lastindexof.js | 83 - .../mjsunit/array-length-number-conversion.js | 53 - .../v8/mjsunit/array-length.js | 170 - .../v8/mjsunit/array-literal-feedback.js | 233 - .../v8/mjsunit/array-literal-transitions.js | 196 - .../mjsunit/array-methods-read-only-length.js | 166 - .../v8/mjsunit/array-natives-elements.js | 312 - .../v8/mjsunit/array-non-smi-length.js | 45 - .../v8/mjsunit/array-pop.js | 140 - .../v8/mjsunit/array-prototype-every.js | 20 - .../v8/mjsunit/array-prototype-filter.js | 22 - .../v8/mjsunit/array-prototype-find.js | 20 - .../v8/mjsunit/array-prototype-findindex.js | 20 - .../v8/mjsunit/array-prototype-foreach.js | 26 - .../v8/mjsunit/array-prototype-includes.js | 36 - .../v8/mjsunit/array-prototype-indexof.js | 36 - .../v8/mjsunit/array-prototype-lastindexof.js | 20 - .../v8/mjsunit/array-prototype-map.js | 21 - .../v8/mjsunit/array-prototype-pop.js | 29 - .../v8/mjsunit/array-prototype-reduce.js | 24 - .../v8/mjsunit/array-prototype-slice.js | 21 - .../v8/mjsunit/array-prototype-some.js | 20 - .../v8/mjsunit/array-push-hole-double.js | 23 - .../v8/mjsunit/array-push-non-smi-value.js | 36 - .../v8/mjsunit/array-push.js | 161 - .../v8/mjsunit/array-push10.js | 15 - .../v8/mjsunit/array-push11.js | 18 - .../v8/mjsunit/array-push12.js | 23 - .../v8/mjsunit/array-push13.js | 22 - .../v8/mjsunit/array-push14.js | 18 - .../v8/mjsunit/array-push2.js | 21 - .../v8/mjsunit/array-push3.js | 29 - .../v8/mjsunit/array-push4.js | 60 - .../v8/mjsunit/array-push5.js | 42 - .../v8/mjsunit/array-push6.js | 22 - .../v8/mjsunit/array-push8.js | 37 - .../v8/mjsunit/array-push9.js | 29 - .../v8/mjsunit/array-reduce.js | 1312 - .../v8/mjsunit/array-reverse.js | 70 - .../v8/mjsunit/array-shift.js | 122 - .../v8/mjsunit/array-shift2.js | 28 - .../v8/mjsunit/array-shift3.js | 15 - .../v8/mjsunit/array-shift4.js | 24 - .../v8/mjsunit/array-shift5.js | 65 - .../v8/mjsunit/array-slice.js | 328 - .../v8/mjsunit/array-sort.js | 740 - .../v8/mjsunit/array-splice.js | 465 - .../v8/mjsunit/array-store-and-grow.js | 256 - .../v8/mjsunit/array-tolocalestring.js | 72 - .../v8/mjsunit/array-tostring.js | 181 - .../v8/mjsunit/array-unshift.js | 223 - .../v8/mjsunit/arrow-with.js | 7 - .../v8/mjsunit/ascii-regexp-subject.js | 49 - .../v8/mjsunit/asm-directive.js | 11 - .../v8/mjsunit/asm/asm-heap.js | 99 - .../v8/mjsunit/asm/asm-memory.js | 55 - .../v8/mjsunit/asm/asm-stdlib.js | 46 - .../v8/mjsunit/asm/asm-validation.js | 499 - .../v8/mjsunit/asm/atomics-add.js | 102 - .../v8/mjsunit/asm/atomics-and.js | 103 - .../v8/mjsunit/asm/atomics-compareexchange.js | 110 - .../v8/mjsunit/asm/atomics-exchange.js | 104 - .../v8/mjsunit/asm/atomics-load.js | 95 - .../v8/mjsunit/asm/atomics-or.js | 105 - .../v8/mjsunit/asm/atomics-store.js | 100 - .../v8/mjsunit/asm/atomics-sub.js | 103 - .../v8/mjsunit/asm/atomics-xor.js | 102 - .../v8/mjsunit/asm/b5528-comma.js | 31 - .../v8/mjsunit/asm/call-annotation.js | 179 - .../v8/mjsunit/asm/call-collisions.js | 67 - .../v8/mjsunit/asm/call-stdlib.js | 85 - .../v8/mjsunit/asm/do-while-false.js | 78 - .../v8/mjsunit/asm/do-while.js | 30 - .../v8/mjsunit/asm/embenchen/box2d.js | 20322 -------- .../v8/mjsunit/asm/embenchen/copy.js | 5976 --- .../v8/mjsunit/asm/embenchen/corrections.js | 5983 --- .../v8/mjsunit/asm/embenchen/fannkuch.js | 8435 --- .../v8/mjsunit/asm/embenchen/fasta.js | 8605 ---- .../mjsunit/asm/embenchen/lua_binarytrees.js | 42710 ---------------- .../v8/mjsunit/asm/embenchen/memops.js | 8087 --- .../v8/mjsunit/asm/embenchen/primes.js | 5984 --- .../v8/mjsunit/asm/embenchen/zlib.js | 14752 ------ .../asm/float32array-negative-offset.js | 40 - .../mjsunit/asm/float32array-outofbounds.js | 29 - .../v8/mjsunit/asm/float32array-store-div.js | 17 - .../asm/float64array-negative-offset.js | 40 - .../mjsunit/asm/float64array-outofbounds.js | 29 - .../v8/mjsunit/asm/float64array-store-div.js | 17 - .../v8/mjsunit/asm/float64mul.js | 43 - .../v8/mjsunit/asm/global-imports.js | 80 - .../v8/mjsunit/asm/if-cloning.js | 34 - .../v8/mjsunit/asm/if-folding.js | 122 - .../v8/mjsunit/asm/if-reduction.js | 135 - .../v8/mjsunit/asm/if-tonumber.js | 31 - .../v8/mjsunit/asm/immutable.js | 48 - .../v8/mjsunit/asm/infinite-loops-taken.js | 42 - .../v8/mjsunit/asm/infinite-loops.js | 53 - .../mjsunit/asm/int16array-negative-offset.js | 42 - .../v8/mjsunit/asm/int16array-outofbounds.js | 45 - .../v8/mjsunit/asm/int32-div.js | 33 - .../v8/mjsunit/asm/int32-mod.js | 33 - .../v8/mjsunit/asm/int32-mul.js | 33 - .../v8/mjsunit/asm/int32-tmod.js | 38 - .../v8/mjsunit/asm/int32-udiv.js | 33 - .../v8/mjsunit/asm/int32-umod.js | 33 - .../v8/mjsunit/asm/int32array-constant-key.js | 68 - .../mjsunit/asm/int32array-negative-offset.js | 42 - .../v8/mjsunit/asm/int32array-outofbounds.js | 30 - .../v8/mjsunit/asm/int32array-unaligned.js | 43 - .../v8/mjsunit/asm/int32div.js | 35 - .../v8/mjsunit/asm/int32mod-constant.js | 35 - .../v8/mjsunit/asm/int32mod.js | 26 - .../v8/mjsunit/asm/int32modb.js | 26 - .../mjsunit/asm/int8array-negative-offset.js | 42 - .../v8/mjsunit/asm/load-elimination.js | 27 - .../v8/mjsunit/asm/math-abs.js | 84 - .../v8/mjsunit/asm/math-ceil.js | 38 - .../v8/mjsunit/asm/math-clz32.js | 28 - .../v8/mjsunit/asm/math-floor.js | 38 - .../v8/mjsunit/asm/math-fround.js | 38 - .../v8/mjsunit/asm/math-max.js | 78 - .../v8/mjsunit/asm/math-min.js | 78 - .../v8/mjsunit/asm/noexpose-wasm.js | 37 - .../v8/mjsunit/asm/pointer-masking.js | 35 - .../v8/mjsunit/asm/poppler/poppler.js | 9211 ---- .../v8/mjsunit/asm/redundancy1.js | 26 - .../v8/mjsunit/asm/redundancy2.js | 29 - .../v8/mjsunit/asm/regress-641885.js | 13 - .../v8/mjsunit/asm/regress-660813.js | 12 - .../v8/mjsunit/asm/regress-669899.js | 27 - .../v8/mjsunit/asm/regress-672045.js | 13 - .../v8/mjsunit/asm/regress-674089.js | 16 - .../v8/mjsunit/asm/regress-676573.js | 17 - .../v8/mjsunit/asm/regress-681707.js | 18 - .../v8/mjsunit/asm/regress-718745.js | 13 - .../v8/mjsunit/asm/regress-719866.js | 18 - .../v8/mjsunit/asm/regress-740325.js | 71 - .../v8/mjsunit/asm/regress-913822.js | 25 - .../v8/mjsunit/asm/regress-920076.js | 13 - .../v8/mjsunit/asm/return-types.js | 123 - .../v8/mjsunit/asm/sign-extend.js | 45 - .../mjsunit/asm/sqlite3/sqlite-change-heap.js | 18 - .../asm/sqlite3/sqlite-pointer-masking.js | 18 - .../mjsunit/asm/sqlite3/sqlite-safe-heap.js | 18 - .../v8/mjsunit/asm/sqlite3/sqlite.js | 18 - .../v8/mjsunit/asm/switch.js | 122 - .../v8/mjsunit/asm/uint32-less-than-shift.js | 64 - .../v8/mjsunit/asm/uint32div.js | 49 - .../v8/mjsunit/asm/uint32mod-constant.js | 31 - .../v8/mjsunit/asm/uint32mod.js | 25 - .../v8/mjsunit/asm/uint8array-outofbounds.js | 30 - .../v8/mjsunit/asm/word32and.js | 31 - .../v8/mjsunit/asm/word32ror.js | 37 - .../v8/mjsunit/asm/zero-extend.js | 37 - .../v8/mjsunit/async-hooks/api-methods.js | 76 - .../mjsunit/async-hooks/async-await-tree.js | 74 - .../mjsunit/async-hooks/chained-promises.js | 52 - .../v8/mjsunit/async-hooks/execution-order.js | 77 - .../async-hooks/promises-async-await.js | 74 - ...async-stack-traces-prepare-stacktrace-1.js | 31 - ...async-stack-traces-prepare-stacktrace-2.js | 31 - ...async-stack-traces-prepare-stacktrace-3.js | 31 - ...async-stack-traces-prepare-stacktrace-4.js | 39 - .../mjsunit/async-stack-traces-promise-all.js | 38 - .../v8/mjsunit/async-stack-traces.js | 301 - .../v8/mjsunit/basic-promise.js | 42 - .../v8/mjsunit/big-array-literal.js | 129 - .../v8/mjsunit/big-object-literal.js | 123 - .../v8/mjsunit/binary-op-newspace.js | 61 - .../v8/mjsunit/binary-operation-overwrite.js | 36 - .../v8/mjsunit/bit-not.js | 77 - .../v8/mjsunit/bitops-info.js | 83 - .../v8/mjsunit/bitwise-operations-bools.js | 94 - .../mjsunit/bitwise-operations-undefined.js | 49 - .../v8/mjsunit/body-not-visible.js | 39 - .../v8/mjsunit/bool-concat.js | 39 - .../v8/mjsunit/boolean.js | 81 - .../v8/mjsunit/bounds-checks-elimination.js | 123 - .../v8/mjsunit/break.js | 76 - .../v8/mjsunit/bugs/bug-1344252.js | 78 - .../v8/mjsunit/bugs/bug-222.js | 42 - .../v8/mjsunit/bugs/bug-617.js | 44 - .../v8/mjsunit/bugs/bug-941049.js | 100 - .../v8/mjsunit/bugs/bug-proto.js | 61 - .../v8/mjsunit/call-cross-realm.js | 13 - .../v8/mjsunit/call-intrinsic-type-error.js | 11 - .../v8/mjsunit/call-non-function-call.js | 38 - .../v8/mjsunit/call-non-function.js | 63 - .../v8/mjsunit/call-stub.js | 66 - implementation-contributed/v8/mjsunit/call.js | 87 - .../v8/mjsunit/char-escape.js | 53 - .../v8/mjsunit/class-of-builtins.js | 50 - .../v8/mjsunit/closure.js | 37 - .../v8/mjsunit/closures.js | 46 - .../v8/mjsunit/code-comments.js | 26 - .../v8/mjsunit/code-coverage-ad-hoc.js | 59 - .../v8/mjsunit/code-coverage-block-noopt.js | 43 - .../v8/mjsunit/code-coverage-block-opt.js | 51 - .../v8/mjsunit/code-coverage-block.js | 1007 - .../v8/mjsunit/code-coverage-class-fields.js | 200 - .../v8/mjsunit/code-coverage-precise.js | 53 - .../v8/mjsunit/code-coverage-utils.js | 49 - .../v8/mjsunit/codegen-coverage.js | 148 - .../v8/mjsunit/compare-character.js | 49 - .../v8/mjsunit/compare-known-objects-slow.js | 101 - .../compare-known-objects-tostringtag.js | 57 - .../v8/mjsunit/compare-known-objects.js | 97 - .../v8/mjsunit/compare-nan.js | 65 - .../v8/mjsunit/compare-nil.js | 36 - .../v8/mjsunit/compare-objects.js | 108 - .../v8/mjsunit/compare-table-eq.js | 105 - .../v8/mjsunit/compare-table-gt.js | 105 - .../v8/mjsunit/compare-table-gteq.js | 105 - .../v8/mjsunit/compare-table-lt.js | 105 - .../v8/mjsunit/compare-table-lteq.js | 105 - .../v8/mjsunit/compare-table-ne.js | 105 - .../v8/mjsunit/compare-table-seq.js | 105 - .../v8/mjsunit/compare-table-sne.js | 105 - .../mjsunit/comparison-ops-and-undefined.js | 128 - .../v8/mjsunit/compiler-regress-787301.js | 26 - .../compiler/abstract-equal-receiver.js | 177 - .../mjsunit/compiler/abstract-equal-symbol.js | 135 - .../compiler/abstract-equal-undetectable.js | 119 - .../mjsunit/compiler/accessor-exceptions1.js | 21 - .../mjsunit/compiler/accessor-exceptions2.js | 21 - .../v8/mjsunit/compiler/alloc-number-debug.js | 44 - .../v8/mjsunit/compiler/alloc-number.js | 20 - .../v8/mjsunit/compiler/alloc-object-huge.js | 310 - .../v8/mjsunit/compiler/alloc-object.js | 90 - .../v8/mjsunit/compiler/array-access.js | 132 - .../mjsunit/compiler/array-buffer-is-view.js | 64 - .../v8/mjsunit/compiler/array-constructor.js | 100 - .../v8/mjsunit/compiler/array-every.js | 18 - .../v8/mjsunit/compiler/array-find.js | 18 - .../v8/mjsunit/compiler/array-findindex.js | 18 - .../v8/mjsunit/compiler/array-is-array.js | 105 - .../v8/mjsunit/compiler/array-length.js | 49 - .../compiler/array-multiple-receiver-maps.js | 134 - .../v8/mjsunit/compiler/array-push-1.js | 239 - .../v8/mjsunit/compiler/array-push-2.js | 65 - .../v8/mjsunit/compiler/array-push-3.js | 51 - .../v8/mjsunit/compiler/array-slice-clone.js | 365 - .../v8/mjsunit/compiler/array-some.js | 18 - .../v8/mjsunit/compiler/array-species.js | 33 - .../v8/mjsunit/compiler/array-subclass.js | 396 - .../v8/mjsunit/compiler/assignment-deopt.js | 180 - .../v8/mjsunit/compiler/assignment.js | 283 - .../v8/mjsunit/compiler/binary-ops.js | 55 - .../mjsunit/compiler/boolean-protototype.js | 43 - .../v8/mjsunit/compiler/call-keyed.js | 38 - .../v8/mjsunit/compiler/capture-context.js | 16 - .../v8/mjsunit/compiler/compare-map-elim.js | 51 - .../v8/mjsunit/compiler/compare-map-elim2.js | 130 - .../v8/mjsunit/compiler/compare-objeq-elim.js | 85 - .../v8/mjsunit/compiler/compare.js | 108 - .../v8/mjsunit/compiler/complex-for-in.js | 50 - .../concurrent-invalidate-transition-map.js | 68 - .../compiler/concurrent-proto-change.js | 59 - .../compiler/constant-fold-cow-array.js | 35 - .../compiler/constant-fold-tostring.js | 26 - .../mjsunit/compiler/constructor-inlining.js | 104 - .../mjsunit/compiler/context-sensitivity.js | 550 - .../v8/mjsunit/compiler/control-flow-0.js | 44 - .../v8/mjsunit/compiler/control-flow-1.js | 55 - .../v8/mjsunit/compiler/control-flow-2.js | 34 - .../v8/mjsunit/compiler/count-deopt.js | 180 - .../v8/mjsunit/compiler/countoperation.js | 131 - .../v8/mjsunit/compiler/dataview-constant.js | 173 - .../v8/mjsunit/compiler/dataview-deopt.js | 58 - .../v8/mjsunit/compiler/dataview-get.js | 186 - .../v8/mjsunit/compiler/dataview-neutered.js | 376 - .../mjsunit/compiler/dataview-nonconstant.js | 173 - .../v8/mjsunit/compiler/dataview-set.js | 133 - .../v8/mjsunit/compiler/dead-code.js | 79 - .../v8/mjsunit/compiler/dead-code2.js | 84 - .../v8/mjsunit/compiler/dead-code3.js | 78 - .../v8/mjsunit/compiler/dead-code4.js | 78 - .../v8/mjsunit/compiler/dead-code5.js | 89 - .../v8/mjsunit/compiler/dead-code6.js | 73 - .../v8/mjsunit/compiler/dead-loops-neg.js | 100 - .../v8/mjsunit/compiler/dead-loops.js | 87 - .../mjsunit/compiler/dead-string-add-warm.js | 76 - .../v8/mjsunit/compiler/dead-string-add.js | 65 - .../v8/mjsunit/compiler/delete.js | 72 - .../v8/mjsunit/compiler/deopt-accessors1.js | 28 - .../v8/mjsunit/compiler/deopt-accessors2.js | 28 - .../v8/mjsunit/compiler/deopt-accessors3.js | 29 - .../v8/mjsunit/compiler/deopt-accessors4.js | 29 - .../v8/mjsunit/compiler/deopt-accessors5.js | 23 - .../v8/mjsunit/compiler/deopt-accessors6.js | 24 - .../v8/mjsunit/compiler/deopt-accessors7.js | 30 - .../v8/mjsunit/compiler/deopt-args.js | 47 - .../mjsunit/compiler/deopt-array-builtins.js | 148 - .../deopt-array-iterator-prototype-next.js | 24 - .../compiler/deopt-array-prototype-every.js | 26 - .../compiler/deopt-array-prototype-filter.js | 28 - .../compiler/deopt-array-prototype-find.js | 26 - .../deopt-array-prototype-findindex.js | 26 - .../compiler/deopt-array-prototype-foreach.js | 31 - .../deopt-array-prototype-includes.js | 103 - .../compiler/deopt-array-prototype-indexof.js | 104 - .../deopt-array-prototype-lastindexof.js | 26 - .../compiler/deopt-array-prototype-map.js | 29 - .../compiler/deopt-array-prototype-pop.js | 26 - .../compiler/deopt-array-prototype-reduce.js | 31 - .../compiler/deopt-array-prototype-slice.js | 29 - .../compiler/deopt-array-prototype-some.js | 26 - .../v8/mjsunit/compiler/deopt-array-push.js | 97 - .../v8/mjsunit/compiler/deopt-bool.js | 28 - .../v8/mjsunit/compiler/deopt-bool2.js | 31 - .../v8/mjsunit/compiler/deopt-closure.js | 47 - .../compiler/deopt-during-eval-lookup.js | 47 - .../mjsunit/compiler/deopt-eager-and-lazy.js | 27 - .../compiler/deopt-eager-var-mutation-ite.js | 28 - .../compiler/deopt-eager-with-freeze.js | 20 - .../mjsunit/compiler/deopt-followed-by-gc.js | 23 - .../compiler/deopt-inlined-from-call.js | 154 - .../v8/mjsunit/compiler/deopt-inlined-smi.js | 64 - .../v8/mjsunit/compiler/deopt-lazy-freeze.js | 28 - .../compiler/deopt-lazy-shape-mutation.js | 23 - .../compiler/deopt-lazy-var-mutation.js | 26 - .../v8/mjsunit/compiler/deopt-many-lazy.js | 33 - .../compiler/deopt-materialize-accumulator.js | 41 - .../v8/mjsunit/compiler/deopt-now-lazy.js | 12 - .../compiler/deopt-numberoroddball-binop.js | 155 - .../v8/mjsunit/compiler/deopt-simple-eager.js | 17 - .../v8/mjsunit/compiler/deopt-simple-lazy.js | 19 - .../compiler/deopt-simple-try-catch.js | 28 - .../v8/mjsunit/compiler/deopt-soft-simple.js | 21 - .../compiler/deopt-string-outofbounds.js | 55 - .../mjsunit/compiler/deopt-tonumber-binop.js | 40 - .../compiler/deopt-tonumber-compare.js | 44 - .../mjsunit/compiler/deopt-tonumber-shift.js | 40 - .../mjsunit/compiler/deopt-twice-on-call.js | 22 - .../v8/mjsunit/compiler/deopt-twice.js | 18 - .../mjsunit/compiler/deoptimize-lazy-weak.js | 47 - .../mjsunit/compiler/division-by-constant.js | 134 - .../dont-constant-fold-deopting-checks.js | 10 - .../compiler/double-array-to-global.js | 17 - .../v8/mjsunit/compiler/eager-deopt-simple.js | 18 - .../v8/mjsunit/compiler/escape-analysis-1.js | 42 - .../v8/mjsunit/compiler/escape-analysis-10.js | 38 - .../v8/mjsunit/compiler/escape-analysis-11.js | 19 - .../v8/mjsunit/compiler/escape-analysis-12.js | 17 - .../v8/mjsunit/compiler/escape-analysis-13.js | 17 - .../v8/mjsunit/compiler/escape-analysis-15.js | 19 - .../v8/mjsunit/compiler/escape-analysis-16.js | 18 - .../v8/mjsunit/compiler/escape-analysis-17.js | 27 - .../v8/mjsunit/compiler/escape-analysis-18.js | 23 - .../v8/mjsunit/compiler/escape-analysis-2.js | 44 - .../v8/mjsunit/compiler/escape-analysis-3.js | 43 - .../v8/mjsunit/compiler/escape-analysis-4.js | 47 - .../v8/mjsunit/compiler/escape-analysis-5.js | 47 - .../v8/mjsunit/compiler/escape-analysis-6.js | 47 - .../v8/mjsunit/compiler/escape-analysis-7.js | 51 - .../v8/mjsunit/compiler/escape-analysis-8.js | 48 - .../v8/mjsunit/compiler/escape-analysis-9.js | 51 - .../compiler/escape-analysis-arguments.js | 240 - .../mjsunit/compiler/escape-analysis-array.js | 32 - .../mjsunit/compiler/escape-analysis-cycle.js | 22 - .../compiler/escape-analysis-deopt-1.js | 47 - .../compiler/escape-analysis-deopt-2.js | 50 - .../compiler/escape-analysis-deopt-3.js | 51 - .../compiler/escape-analysis-deopt-4.js | 57 - .../compiler/escape-analysis-deopt-5.js | 41 - .../compiler/escape-analysis-deopt-6.js | 16 - ...-analysis-framestate-use-at-branchpoint.js | 19 - .../compiler/escape-analysis-materialize.js | 29 - .../compiler/escape-analysis-phi-type-2.js | 41 - .../compiler/escape-analysis-phi-type.js | 24 - .../compiler/escape-analysis-replacement.js | 42 - .../escape-analysis-representation.js | 73 - .../escape-analysis-rest-parameters.js | 31 - ...cape-analysis-type-none-in-object-state.js | 23 - .../compiler/escape-analysis-typeguard.js | 23 - .../v8/mjsunit/compiler/escape-analysis.js | 438 - .../compiler/eval-introduced-closure.js | 95 - .../v8/mjsunit/compiler/expression-trees.js | 104 - .../mjsunit/compiler/feedback-after-throw.js | 38 - .../v8/mjsunit/compiler/for-in-1.js | 20 - .../v8/mjsunit/compiler/for-in-2.js | 20 - .../v8/mjsunit/compiler/for-in-3.js | 20 - .../v8/mjsunit/compiler/for-in-4.js | 20 - .../v8/mjsunit/compiler/for-in-5.js | 19 - .../v8/mjsunit/compiler/for-stmt.js | 59 - .../v8/mjsunit/compiler/function-apply.js | 136 - .../v8/mjsunit/compiler/function-bind.js | 286 - .../v8/mjsunit/compiler/function-call.js | 52 - .../v8/mjsunit/compiler/function-caller.js | 25 - .../v8/mjsunit/compiler/generic-add.js | 26 - .../v8/mjsunit/compiler/global-accessors.js | 47 - .../v8/mjsunit/compiler/global-delete.js | 73 - .../v8/mjsunit/compiler/global-var-delete.js | 73 - .../v8/mjsunit/compiler/globals.js | 76 - .../compiler/increment-typefeedback.js | 39 - .../v8/mjsunit/compiler/inline-accessors1.js | 77 - .../v8/mjsunit/compiler/inline-accessors2.js | 368 - .../v8/mjsunit/compiler/inline-arguments.js | 311 - .../mjsunit/compiler/inline-arity-mismatch.js | 62 - .../v8/mjsunit/compiler/inline-closures.js | 49 - .../v8/mjsunit/compiler/inline-compare.js | 50 - .../v8/mjsunit/compiler/inline-conditional.js | 46 - .../v8/mjsunit/compiler/inline-construct.js | 166 - .../mjsunit/compiler/inline-context-deopt.js | 18 - .../mjsunit/compiler/inline-context-slots.js | 49 - .../mjsunit/compiler/inline-dead-jscreate.js | 14 - .../v8/mjsunit/compiler/inline-exception-1.js | 2219 - .../v8/mjsunit/compiler/inline-exception-2.js | 2063 - .../mjsunit/compiler/inline-function-apply.js | 89 - .../mjsunit/compiler/inline-global-access.js | 53 - .../v8/mjsunit/compiler/inline-literals.js | 110 - .../compiler/inline-omit-arguments-deopt.js | 19 - .../compiler/inline-omit-arguments-object.js | 14 - .../mjsunit/compiler/inline-omit-arguments.js | 12 - .../v8/mjsunit/compiler/inline-param.js | 86 - .../inline-surplus-arguments-deopt.js | 20 - .../inline-surplus-arguments-object.js | 17 - .../compiler/inline-surplus-arguments.js | 12 - .../v8/mjsunit/compiler/inline-throw.js | 68 - .../v8/mjsunit/compiler/inline-two.js | 101 - .../compiler/inlined-array-pop-getter1.js | 18 - .../compiler/inlined-array-pop-getter2.js | 23 - .../mjsunit/compiler/inlined-array-pop-opt.js | 83 - .../mjsunit/compiler/inlined-call-mapcheck.js | 43 - .../v8/mjsunit/compiler/inlined-call.js | 190 - .../instance-of-overridden-has-instance.js | 106 - .../v8/mjsunit/compiler/instanceof-opt1.js | 18 - .../v8/mjsunit/compiler/instanceof-opt2.js | 16 - .../v8/mjsunit/compiler/instanceof-opt3.js | 17 - .../v8/mjsunit/compiler/instanceof.js | 163 - .../v8/mjsunit/compiler/instanceof2.js | 233 - .../v8/mjsunit/compiler/instanceof3.js | 233 - .../v8/mjsunit/compiler/int64.js | 131 - .../v8/mjsunit/compiler/integral32-add-sub.js | 125 - .../v8/mjsunit/compiler/lazy-const-lookup.js | 40 - .../lazy-deopt-async-function-resolve.js | 27 - .../mjsunit/compiler/lazy-deopt-in-literal.js | 20 - .../mjsunit/compiler/lazy-iife-no-parens.js | 43 - .../mjsunit/compiler/literals-assignment.js | 104 - .../v8/mjsunit/compiler/literals-optimized.js | 121 - .../v8/mjsunit/compiler/literals.js | 97 - .../compiler/load-elimination-global.js | 196 - .../mjsunit/compiler/load-elimination-osr.js | 65 - .../compiler/load-elimination-params.js | 71 - .../v8/mjsunit/compiler/load-elimination.js | 158 - .../v8/mjsunit/compiler/logical-and.js | 70 - .../v8/mjsunit/compiler/logical-or.js | 66 - .../v8/mjsunit/compiler/loopcount.js | 92 - .../v8/mjsunit/compiler/loops.js | 61 - .../compiler/manual-concurrent-recompile.js | 69 - .../materialize-dictionary-properties.js | 18 - .../materialize-mutable-heap-number.js | 22 - .../v8/mjsunit/compiler/math-ceil.js | 39 - .../v8/mjsunit/compiler/math-floor-global.js | 162 - .../v8/mjsunit/compiler/math-floor-local.js | 162 - .../v8/mjsunit/compiler/math-imul.js | 76 - .../v8/mjsunit/compiler/math-max.js | 38 - .../v8/mjsunit/compiler/math-min.js | 38 - .../v8/mjsunit/compiler/math-mul.js | 45 - .../v8/mjsunit/compiler/math-round.js | 39 - .../v8/mjsunit/compiler/math-sign.js | 51 - .../v8/mjsunit/compiler/math-trunc.js | 39 - .../v8/mjsunit/compiler/minus-zero.js | 69 - .../v8/mjsunit/compiler/mul-div-52bit.js | 86 - .../v8/mjsunit/compiler/multiply-add.js | 69 - .../v8/mjsunit/compiler/multiply-sub.js | 56 - .../v8/mjsunit/compiler/named-load.js | 31 - .../v8/mjsunit/compiler/named-store.js | 31 - .../v8/mjsunit/compiler/nary-binary-ops.js | 150 - ...ative-context-specialization-hole-check.js | 49 - ...ve-context-specialization-string-concat.js | 37 - .../v8/mjsunit/compiler/new-cons-string.js | 71 - .../v8/mjsunit/compiler/null-compare.js | 54 - .../v8/mjsunit/compiler/number-abs.js | 76 - .../v8/mjsunit/compiler/number-add.js | 62 - .../v8/mjsunit/compiler/number-ceil.js | 22 - .../compiler/number-comparison-truncations.js | 152 - .../compiler/number-constructor-deopt.js | 32 - .../v8/mjsunit/compiler/number-divide.js | 207 - .../v8/mjsunit/compiler/number-floor.js | 22 - .../mjsunit/compiler/number-isfinite-inl.js | 54 - .../v8/mjsunit/compiler/number-isfinite.js | 62 - .../mjsunit/compiler/number-isinteger-inl.js | 54 - .../v8/mjsunit/compiler/number-isinteger.js | 62 - .../v8/mjsunit/compiler/number-isnan.js | 28 - .../mjsunit/compiler/number-issafeinteger.js | 58 - .../v8/mjsunit/compiler/number-max.js | 37 - .../v8/mjsunit/compiler/number-min.js | 37 - .../v8/mjsunit/compiler/number-modulus.js | 26 - .../v8/mjsunit/compiler/number-multiply.js | 59 - .../v8/mjsunit/compiler/number-round.js | 22 - .../v8/mjsunit/compiler/number-subtract.js | 34 - .../v8/mjsunit/compiler/number-toboolean.js | 45 - .../v8/mjsunit/compiler/number-trunc.js | 22 - .../v8/mjsunit/compiler/object-constructor.js | 51 - .../v8/mjsunit/compiler/object-create.js | 27 - .../mjsunit/compiler/object-getprototypeof.js | 15 - .../v8/mjsunit/compiler/object-is.js | 174 - .../mjsunit/compiler/object-isprototypeof.js | 153 - .../v8/mjsunit/compiler/objectliterals.js | 57 - .../mjsunit/compiler/opt-next-call-turbo.js | 22 - .../v8/mjsunit/compiler/opt-next-call.js | 22 - .../v8/mjsunit/compiler/optimize-bitnot.js | 42 - .../v8/mjsunit/compiler/optimize_max.js | 69 - .../v8/mjsunit/compiler/optimize_min.js | 69 - .../v8/mjsunit/compiler/optimized-closures.js | 53 - .../compiler/optimized-float32array-length.js | 13 - .../compiler/optimized-float64array-length.js | 13 - .../v8/mjsunit/compiler/optimized-for-in.js | 305 - .../compiler/optimized-function-calls.js | 81 - .../compiler/optimized-instanceof-1.js | 17 - .../compiler/optimized-instanceof-2.js | 19 - .../compiler/optimized-int32array-length.js | 13 - .../compiler/optimized-uint32array-length.js | 13 - .../v8/mjsunit/compiler/optimized-with.js | 23 - .../v8/mjsunit/compiler/osr-alignment.js | 89 - .../v8/mjsunit/compiler/osr-arguments.js | 17 - .../v8/mjsunit/compiler/osr-array-len.js | 22 - .../v8/mjsunit/compiler/osr-assert.js | 44 - .../v8/mjsunit/compiler/osr-backedges1.js | 31 - .../v8/mjsunit/compiler/osr-big.js | 45 - .../mjsunit/compiler/osr-block-scope-func.js | 27 - .../v8/mjsunit/compiler/osr-block-scope-id.js | 40 - .../v8/mjsunit/compiler/osr-block-scope.js | 116 - .../v8/mjsunit/compiler/osr-follow.js | 61 - .../v8/mjsunit/compiler/osr-for-let.js | 82 - .../v8/mjsunit/compiler/osr-forin-nested.js | 35 - .../v8/mjsunit/compiler/osr-forin.js | 26 - .../v8/mjsunit/compiler/osr-forof.js | 35 - .../v8/mjsunit/compiler/osr-function-id.js | 33 - .../v8/mjsunit/compiler/osr-function-id2.js | 28 - .../v8/mjsunit/compiler/osr-function.js | 31 - .../v8/mjsunit/compiler/osr-infinite.js | 78 - .../v8/mjsunit/compiler/osr-labeled.js | 47 - .../mjsunit/compiler/osr-literals-adapted.js | 56 - .../v8/mjsunit/compiler/osr-literals.js | 56 - .../v8/mjsunit/compiler/osr-manual1.js | 35 - .../v8/mjsunit/compiler/osr-manual2.js | 35 - .../v8/mjsunit/compiler/osr-maze1.js | 51 - .../v8/mjsunit/compiler/osr-maze2.js | 63 - .../v8/mjsunit/compiler/osr-multiple.js | 44 - .../v8/mjsunit/compiler/osr-multiple2.js | 50 - .../v8/mjsunit/compiler/osr-multiple3.js | 56 - .../v8/mjsunit/compiler/osr-nested.js | 47 - .../v8/mjsunit/compiler/osr-nested2.js | 24 - .../v8/mjsunit/compiler/osr-nested2b.js | 25 - .../v8/mjsunit/compiler/osr-nested3.js | 26 - .../v8/mjsunit/compiler/osr-nested3b.js | 28 - .../v8/mjsunit/compiler/osr-one.js | 20 - .../v8/mjsunit/compiler/osr-regex-id.js | 54 - .../compiler/osr-regress-max-locals.js | 43 - .../v8/mjsunit/compiler/osr-sar.js | 49 - .../v8/mjsunit/compiler/osr-simple.js | 22 - .../v8/mjsunit/compiler/osr-top1.js | 16 - .../v8/mjsunit/compiler/osr-top2.js | 19 - .../v8/mjsunit/compiler/osr-top3.js | 22 - .../v8/mjsunit/compiler/osr-try-catch.js | 59 - .../v8/mjsunit/compiler/osr-two.js | 24 - .../v8/mjsunit/compiler/osr-uint32.js | 39 - .../v8/mjsunit/compiler/osr-warm.js | 50 - .../v8/mjsunit/compiler/osr-while-let.js | 58 - .../v8/mjsunit/compiler/osr-with-args.js | 44 - .../mjsunit/compiler/phi-representations.js | 56 - .../v8/mjsunit/compiler/pic.js | 72 - .../mjsunit/compiler/polymorphic-symbols.js | 48 - .../promise-capability-default-closures.js | 47 - .../mjsunit/compiler/promise-constructor.js | 225 - .../promise-prototype-catch-custom-then-1.js | 19 - .../promise-prototype-catch-custom-then-2.js | 19 - .../promise-prototype-catch-subclass.js | 27 - .../compiler/promise-prototype-catch.js | 29 - ...promise-prototype-finally-custom-then-1.js | 19 - ...promise-prototype-finally-custom-then-2.js | 19 - .../promise-prototype-finally-subclass.js | 27 - .../compiler/promise-prototype-finally.js | 41 - .../compiler/promise-prototype-then.js | 50 - .../compiler/promise-resolve-stable-maps.js | 61 - .../v8/mjsunit/compiler/promise-resolve.js | 119 - .../v8/mjsunit/compiler/promise-species.js | 29 - .../v8/mjsunit/compiler/property-calls.js | 41 - .../v8/mjsunit/compiler/property-refs.js | 55 - .../v8/mjsunit/compiler/property-simple.js | 39 - .../v8/mjsunit/compiler/property-static.js | 69 - .../v8/mjsunit/compiler/property-stores.js | 51 - .../mjsunit/compiler/proto-chain-constant.js | 55 - .../v8/mjsunit/compiler/proto-chain-load.js | 44 - .../mjsunit/compiler/receiver-conversion.js | 128 - .../v8/mjsunit/compiler/recursive-deopt.js | 45 - .../compiler/redundancy-elimination.js | 194 - .../v8/mjsunit/compiler/reflect-apply.js | 114 - .../v8/mjsunit/compiler/reflect-construct.js | 130 - .../v8/mjsunit/compiler/reflect-get.js | 68 - .../compiler/reflect-getprototypeof.js | 15 - .../v8/mjsunit/compiler/reflect-has.js | 67 - .../v8/mjsunit/compiler/regress-0.js | 37 - .../v8/mjsunit/compiler/regress-1.js | 35 - .../v8/mjsunit/compiler/regress-106351.js | 38 - .../v8/mjsunit/compiler/regress-1085.js | 37 - .../v8/mjsunit/compiler/regress-1394.js | 58 - .../v8/mjsunit/compiler/regress-177883.js | 179 - .../v8/mjsunit/compiler/regress-2.js | 44 - .../v8/mjsunit/compiler/regress-3.js | 37 - .../v8/mjsunit/compiler/regress-3136962.js | 51 - .../v8/mjsunit/compiler/regress-3185901.js | 35 - .../v8/mjsunit/compiler/regress-3218915.js | 52 - .../v8/mjsunit/compiler/regress-3249650.js | 53 - .../v8/mjsunit/compiler/regress-3260426.js | 35 - .../v8/mjsunit/compiler/regress-3786.js | 12 - .../v8/mjsunit/compiler/regress-3812.js | 19 - .../v8/mjsunit/compiler/regress-4.js | 40 - .../v8/mjsunit/compiler/regress-411262.js | 37 - .../v8/mjsunit/compiler/regress-416359.js | 10 - .../v8/mjsunit/compiler/regress-4206.js | 28 - .../v8/mjsunit/compiler/regress-4207.js | 15 - .../v8/mjsunit/compiler/regress-4389-1.js | 11 - .../v8/mjsunit/compiler/regress-4389-2.js | 11 - .../v8/mjsunit/compiler/regress-4389-3.js | 11 - .../v8/mjsunit/compiler/regress-4389-4.js | 11 - .../v8/mjsunit/compiler/regress-4389-5.js | 11 - .../v8/mjsunit/compiler/regress-4389-6.js | 11 - .../v8/mjsunit/compiler/regress-439743.js | 17 - .../v8/mjsunit/compiler/regress-4413-1.js | 15 - .../v8/mjsunit/compiler/regress-443744.js | 14 - .../v8/mjsunit/compiler/regress-444508.js | 11 - .../v8/mjsunit/compiler/regress-444695.js | 11 - .../v8/mjsunit/compiler/regress-445267.js | 16 - .../v8/mjsunit/compiler/regress-445732.js | 11 - .../v8/mjsunit/compiler/regress-445858.js | 15 - .../v8/mjsunit/compiler/regress-445859.js | 11 - .../v8/mjsunit/compiler/regress-445876.js | 12 - .../v8/mjsunit/compiler/regress-445907.js | 12 - .../v8/mjsunit/compiler/regress-446156.js | 11 - .../v8/mjsunit/compiler/regress-446647.js | 11 - .../v8/mjsunit/compiler/regress-446778.js | 17 - .../v8/mjsunit/compiler/regress-4470-1.js | 16 - .../v8/mjsunit/compiler/regress-447567.js | 13 - .../v8/mjsunit/compiler/regress-451012.js | 12 - .../v8/mjsunit/compiler/regress-452427.js | 18 - .../v8/mjsunit/compiler/regress-463056.js | 9 - .../v8/mjsunit/compiler/regress-468162.js | 11 - .../v8/mjsunit/compiler/regress-468727.js | 16 - .../v8/mjsunit/compiler/regress-469089.js | 16 - .../v8/mjsunit/compiler/regress-491578.js | 15 - .../v8/mjsunit/compiler/regress-5.js | 43 - .../v8/mjsunit/compiler/regress-5074.js | 18 - .../v8/mjsunit/compiler/regress-5100.js | 51 - .../v8/mjsunit/compiler/regress-5129.js | 15 - .../v8/mjsunit/compiler/regress-5158.js | 16 - .../v8/mjsunit/compiler/regress-5278.js | 13 - .../v8/mjsunit/compiler/regress-5320.js | 49 - .../v8/mjsunit/compiler/regress-5538.js | 53 - .../v8/mjsunit/compiler/regress-572409.js | 10 - .../v8/mjsunit/compiler/regress-6.js | 42 - .../v8/mjsunit/compiler/regress-600593.js | 21 - .../v8/mjsunit/compiler/regress-607493.js | 37 - .../v8/mjsunit/compiler/regress-621147.js | 29 - .../v8/mjsunit/compiler/regress-621423.js | 21 - .../v8/mjsunit/compiler/regress-625558.js | 14 - .../v8/mjsunit/compiler/regress-625966.js | 10 - .../v8/mjsunit/compiler/regress-626986.js | 23 - .../v8/mjsunit/compiler/regress-628403.js | 27 - .../v8/mjsunit/compiler/regress-628516.js | 13 - .../v8/mjsunit/compiler/regress-628773.js | 19 - .../v8/mjsunit/compiler/regress-630611.js | 16 - .../v8/mjsunit/compiler/regress-633497.js | 29 - .../v8/mjsunit/compiler/regress-638132.js | 26 - .../v8/mjsunit/compiler/regress-639210.js | 38 - .../v8/mjsunit/compiler/regress-644048.js | 16 - .../v8/mjsunit/compiler/regress-644633.js | 14 - .../v8/mjsunit/compiler/regress-645851.js | 19 - .../v8/mjsunit/compiler/regress-650215.js | 16 - .../v8/mjsunit/compiler/regress-664117.js | 16 - .../v8/mjsunit/compiler/regress-664490.js | 18 - .../v8/mjsunit/compiler/regress-665680.js | 18 - .../v8/mjsunit/compiler/regress-668760.js | 28 - .../v8/mjsunit/compiler/regress-669517.js | 17 - .../v8/mjsunit/compiler/regress-671574.js | 21 - .../v8/mjsunit/compiler/regress-673244.js | 15 - .../v8/mjsunit/compiler/regress-674469.js | 14 - .../v8/mjsunit/compiler/regress-675704.js | 26 - .../v8/mjsunit/compiler/regress-693425.js | 11 - .../v8/mjsunit/compiler/regress-694088.js | 46 - .../v8/mjsunit/compiler/regress-7.js | 41 - .../v8/mjsunit/compiler/regress-700883.js | 23 - .../v8/mjsunit/compiler/regress-7121.js | 10 - .../v8/mjsunit/compiler/regress-713367.js | 30 - .../v8/mjsunit/compiler/regress-714483.js | 26 - .../v8/mjsunit/compiler/regress-715204.js | 13 - .../v8/mjsunit/compiler/regress-715651.js | 38 - .../v8/mjsunit/compiler/regress-725743.js | 16 - .../v8/mjsunit/compiler/regress-726554.js | 27 - .../v8/mjsunit/compiler/regress-729369.js | 15 - .../v8/mjsunit/compiler/regress-731495.js | 15 - .../v8/mjsunit/compiler/regress-733181.js | 23 - .../v8/mjsunit/compiler/regress-736567.js | 20 - .../v8/mjsunit/compiler/regress-739902.js | 28 - .../v8/mjsunit/compiler/regress-758096.js | 54 - .../v8/mjsunit/compiler/regress-758983.js | 19 - .../v8/mjsunit/compiler/regress-761892.js | 15 - .../v8/mjsunit/compiler/regress-762057.js | 20 - .../v8/mjsunit/compiler/regress-772420.js | 28 - .../v8/mjsunit/compiler/regress-772872.js | 13 - .../v8/mjsunit/compiler/regress-773954.js | 21 - .../v8/mjsunit/compiler/regress-780658.js | 29 - .../v8/mjsunit/compiler/regress-786521.js | 23 - .../v8/mjsunit/compiler/regress-788539.js | 37 - .../v8/mjsunit/compiler/regress-791245.js | 17 - .../v8/mjsunit/compiler/regress-793863.js | 12 - .../v8/mjsunit/compiler/regress-796041.js | 35 - .../v8/mjsunit/compiler/regress-797596.js | 30 - .../v8/mjsunit/compiler/regress-799263.js | 29 - .../v8/mjsunit/compiler/regress-8.js | 109 - .../v8/mjsunit/compiler/regress-801097.js | 19 - .../v8/mjsunit/compiler/regress-803022.js | 16 - .../v8/mjsunit/compiler/regress-808472.js | 12 - .../v8/mjsunit/compiler/regress-815392.js | 13 - .../v8/mjsunit/compiler/regress-817225.js | 27 - .../v8/mjsunit/compiler/regress-8380.js | 32 - .../v8/mjsunit/compiler/regress-841117.js | 11 - .../v8/mjsunit/compiler/regress-884052.js | 16 - .../v8/mjsunit/compiler/regress-888923.js | 31 - .../v8/mjsunit/compiler/regress-890057.js | 16 - .../v8/mjsunit/compiler/regress-890620.js | 25 - .../v8/mjsunit/compiler/regress-895799.js | 26 - .../v8/mjsunit/compiler/regress-902608.js | 16 - .../v8/mjsunit/compiler/regress-905555-2.js | 25 - .../v8/mjsunit/compiler/regress-905555.js | 25 - .../v8/mjsunit/compiler/regress-910838.js | 20 - .../v8/mjsunit/compiler/regress-913232.js | 14 - .../v8/mjsunit/compiler/regress-919754.js | 15 - .../v8/mjsunit/compiler/regress-924151.js | 28 - .../v8/mjsunit/compiler/regress-arguments.js | 64 - .../mjsunit/compiler/regress-arrayliteral.js | 33 - .../compiler/regress-bit-number-constant.js | 17 - .../compiler/regress-closures-with-eval.js | 56 - .../compiler/regress-compare-negate.js | 18 - .../v8/mjsunit/compiler/regress-const.js | 67 - .../mjsunit/compiler/regress-crbug-540593.js | 14 - .../compiler/regress-dead-throw-inlining.js | 13 - .../regress-deopt-call-as-function.js | 62 - .../regress-escape-analysis-indirect.js | 17 - .../compiler/regress-f64-w32-change.js | 23 - .../mjsunit/compiler/regress-funarguments.js | 86 - .../v8/mjsunit/compiler/regress-funcaller.js | 78 - .../v8/mjsunit/compiler/regress-gap.js | 130 - .../v8/mjsunit/compiler/regress-gvn.js | 52 - .../regress-inline-callfunctionstub.js | 45 - .../regress-int32array-outofbounds-nan.js | 17 - .../mjsunit/compiler/regress-intoverflow.js | 67 - .../v8/mjsunit/compiler/regress-lazy-deopt.js | 48 - .../compiler/regress-lbranch-double.js | 40 - .../v8/mjsunit/compiler/regress-loadfield.js | 69 - .../v8/mjsunit/compiler/regress-loop-deopt.js | 41 - .../compiler/regress-loop-variable-if.js | 13 - .../regress-loop-variable-unsigned.js | 23 - .../compiler/regress-math-sign-nan-type.js | 14 - .../v8/mjsunit/compiler/regress-max.js | 35 - .../v8/mjsunit/compiler/regress-ntl-effect.js | 16 - .../compiler/regress-number-is-hole-nan.js | 14 - .../v8/mjsunit/compiler/regress-or.js | 61 - .../compiler/regress-register-allocator.js | 33 - .../compiler/regress-register-allocator2.js | 17 - .../compiler/regress-register-allocator3.js | 46 - .../v8/mjsunit/compiler/regress-rep-change.js | 47 - .../compiler/regress-serialized-slots.js | 61 - .../mjsunit/compiler/regress-shared-deopt.js | 65 - .../v8/mjsunit/compiler/regress-shift-left.js | 41 - .../compiler/regress-shift-right-logical.js | 41 - .../mjsunit/compiler/regress-shift-right.js | 41 - .../compiler/regress-stacktrace-methods.js | 69 - .../v8/mjsunit/compiler/regress-stacktrace.js | 51 - .../regress-store-holey-double-array.js | 43 - .../compiler/regress-string-to-number-add.js | 15 - .../compiler/regress-to-number-binop-deopt.js | 25 - .../v8/mjsunit/compiler/regress-toint32.js | 44 - ...truncate-number-or-undefined-to-float64.js | 19 - .../v8/mjsunit/compiler/regress-v8-5573.js | 15 - .../v8/mjsunit/compiler/regress-v8-5756.js | 31 - .../v8/mjsunit/compiler/regress-v8-6077.js | 69 - .../v8/mjsunit/compiler/regress-v8-6631.js | 22 - .../compiler/regress-variable-liveness-let.js | 15 - .../compiler/regress-variable-liveness.js | 22 - .../v8/mjsunit/compiler/rest-parameters.js | 54 - .../v8/mjsunit/compiler/rotate.js | 308 - .../v8/mjsunit/compiler/safepoint.js | 39 - .../v8/mjsunit/compiler/shift-shr.js | 55 - .../v8/mjsunit/compiler/short-circuit.js | 102 - .../v8/mjsunit/compiler/simple-bailouts.js | 143 - .../v8/mjsunit/compiler/simple-binary-op.js | 38 - .../v8/mjsunit/compiler/simple-deopt.js | 107 - .../mjsunit/compiler/simple-global-access.js | 51 - .../v8/mjsunit/compiler/simple-inlining.js | 160 - .../v8/mjsunit/compiler/smi-stores-opt.js | 49 - .../v8/mjsunit/compiler/spread-call.js | 80 - .../v8/mjsunit/compiler/store-elimination.js | 94 - .../mjsunit/compiler/stress-deopt-count-1.js | 20 - .../mjsunit/compiler/stress-deopt-count-2.js | 48 - .../mjsunit/compiler/strict-equal-number.js | 16 - .../mjsunit/compiler/strict-equal-receiver.js | 152 - .../mjsunit/compiler/strict-equal-symbol.js | 50 - .../v8/mjsunit/compiler/strict-recompile.js | 51 - .../mjsunit/compiler/string-add-try-catch.js | 96 - .../mjsunit/compiler/string-comparison-opt.js | 247 - .../mjsunit/compiler/string-concat-deopt.js | 94 - .../compiler/string-concat-try-catch.js | 28 - .../mjsunit/compiler/string-concat-yield.js | 15 - .../compiler/string-from-code-point.js | 32 - .../v8/mjsunit/compiler/string-length.js | 31 - .../v8/mjsunit/compiler/string-slice.js | 33 - .../v8/mjsunit/compiler/switch-bailout.js | 43 - .../v8/mjsunit/compiler/symbol-protototype.js | 40 - .../v8/mjsunit/compiler/this-property-refs.js | 62 - .../v8/mjsunit/compiler/thisfunction.js | 33 - .../v8/mjsunit/compiler/to-fast-properties.js | 43 - .../compiler/truncating-store-deopt.js | 28 - .../v8/mjsunit/compiler/truncating-store.js | 98 - .../v8/mjsunit/compiler/try-binop.js | 45 - .../v8/mjsunit/compiler/try-catch-deopt.js | 225 - .../v8/mjsunit/compiler/try-context.js | 89 - .../v8/mjsunit/compiler/try-deopt.js | 55 - .../v8/mjsunit/compiler/try-finally-deopt.js | 249 - .../v8/mjsunit/compiler/try-osr.js | 51 - .../mjsunit/compiler/turbo-number-feedback.js | 102 - .../type-speculative-safe-integer-add.js | 51 - .../compiler/typed-array-constructor.js | 129 - .../typedarray-prototype-tostringtag.js | 84 - .../v8/mjsunit/compiler/uint32.js | 204 - .../mjsunit/compiler/uint8-clamped-array.js | 73 - .../v8/mjsunit/compiler/unary-add.js | 67 - .../v8/mjsunit/compiler/unsigned-min-max.js | 37 - .../v8/mjsunit/compiler/varargs.js | 49 - .../v8/mjsunit/compiler/variables.js | 73 - .../concurrent-initial-prototype-change.js | 67 - .../v8/mjsunit/console.js | 28 - .../v8/mjsunit/const-field-tracking.js | 268 - .../v8/mjsunit/constant-compare-nil-value.js | 42 - .../constant-fold-control-instructions.js | 32 - .../v8/mjsunit/constant-folding-2.js | 302 - .../v8/mjsunit/constant-folding.js | 227 - .../v8/mjsunit/context-calls-maintained.js | 116 - .../mjsunit/context-variable-assignments.js | 37 - .../v8/mjsunit/contextual-calls.js | 103 - .../v8/mjsunit/copy-on-write-assert.js | 42 - .../v8/mjsunit/cross-realm-filtering.js | 174 - .../mjsunit/cross-realm-global-prototype.js | 22 - .../v8/mjsunit/cyclic-array-to-string.js | 64 - .../v8/mjsunit/cyrillic.js | 199 - .../v8/mjsunit/d8/d8-arguments.js | 7 - .../v8/mjsunit/d8/d8-no-arguments.js | 5 - .../v8/mjsunit/d8/d8-os.js | 188 - .../v8/mjsunit/d8/d8-performance-now.js | 57 - .../v8/mjsunit/d8/d8-worker-script.js | 39 - .../v8/mjsunit/d8/d8-worker-script.txt | 8 - .../mjsunit/d8/d8-worker-sharedarraybuffer.js | 105 - .../v8/mjsunit/d8/d8-worker-spawn-worker.js | 40 - .../v8/mjsunit/d8/d8-worker.js | 176 - .../v8/mjsunit/d8/enable-tracing.js | 8 - .../v8/mjsunit/date-parse.js | 331 - implementation-contributed/v8/mjsunit/date.js | 370 - .../v8/mjsunit/debugPrint.js | 53 - .../v8/mjsunit/declare-locally.js | 39 - .../v8/mjsunit/deep-recursion.js | 66 - .../v8/mjsunit/default-nospec.js | 84 - .../v8/mjsunit/define-property-gc.js | 45 - .../v8/mjsunit/dehoisted-array-index.js | 163 - .../v8/mjsunit/delay-syntax-error.js | 35 - .../v8/mjsunit/delete-global-properties.js | 48 - .../v8/mjsunit/delete-in-eval.js | 32 - .../v8/mjsunit/delete-in-with.js | 34 - .../v8/mjsunit/delete-non-configurable.js | 74 - .../v8/mjsunit/delete-vars-from-eval.js | 40 - .../v8/mjsunit/delete.js | 194 - .../v8/mjsunit/deopt-global-accessor.js | 23 - .../v8/mjsunit/deopt-minus-zero.js | 43 - .../v8/mjsunit/deopt-recursive-eager-once.js | 31 - .../v8/mjsunit/deopt-recursive-lazy-once.js | 31 - .../v8/mjsunit/deopt-recursive-soft-once.js | 33 - .../v8/mjsunit/deopt-unlinked.js | 28 - .../v8/mjsunit/deopt-with-fp-regs.js | 90 - .../v8/mjsunit/deopt-with-outer-context.js | 22 - .../v8/mjsunit/deserialize-optimize-inner.js | 13 - .../v8/mjsunit/deserialize-reference.js | 8 - .../v8/mjsunit/dictionary-properties.js | 56 - .../v8/mjsunit/dictionary-prototypes.js | 409 - .../mjsunit/disallow-codegen-from-strings.js | 9 - .../v8/mjsunit/div-mod.js | 310 - .../v8/mjsunit/div-mul-minus-one.js | 51 - .../v8/mjsunit/do-not-strip-fc.js | 31 - .../v8/mjsunit/dont-enum-array-holes.js | 35 - .../v8/mjsunit/dont-reinit-global-var.js | 47 - .../v8/mjsunit/double-equals.js | 242 - .../v8/mjsunit/double-truncation.js | 78 - implementation-contributed/v8/mjsunit/dtoa.js | 32 - .../v8/mjsunit/duplicate-parameters.js | 179 - ...agerly-parsed-lazily-compiled-functions.js | 31 - .../v8/mjsunit/element-accessor.js | 56 - .../v8/mjsunit/element-read-only.js | 199 - .../v8/mjsunit/elements-kind-depends.js | 74 - .../v8/mjsunit/elements-kind.js | 354 - .../v8/mjsunit/elements-length-no-holey.js | 33 - .../mjsunit/elements-transition-and-store.js | 39 - .../mjsunit/elements-transition-hoisting.js | 236 - .../v8/mjsunit/elements-transition.js | 119 - .../v8/mjsunit/elide-double-hole-check-1.js | 52 - .../v8/mjsunit/elide-double-hole-check-10.js | 36 - .../v8/mjsunit/elide-double-hole-check-11.js | 16 - .../v8/mjsunit/elide-double-hole-check-12.js | 23 - .../v8/mjsunit/elide-double-hole-check-2.js | 41 - .../v8/mjsunit/elide-double-hole-check-3.js | 39 - .../v8/mjsunit/elide-double-hole-check-4.js | 39 - .../v8/mjsunit/elide-double-hole-check-5.js | 40 - .../v8/mjsunit/elide-double-hole-check-6.js | 39 - .../v8/mjsunit/elide-double-hole-check-7.js | 40 - .../v8/mjsunit/elide-double-hole-check-8.js | 40 - .../v8/mjsunit/elide-double-hole-check-9.js | 48 - .../v8/mjsunit/empirical_max_arraybuffer.js | 101 - .../v8/mjsunit/ensure-growing-store-learns.js | 84 - .../v8/mjsunit/enumeration-order.js | 105 - .../v8/mjsunit/error-accessors.js | 53 - .../v8/mjsunit/error-constructors.js | 109 - .../v8/mjsunit/error-tostring-omit.js | 55 - .../v8/mjsunit/error-tostring.js | 93 - .../v8/mjsunit/es6/arguments-iterator.js | 242 - .../es6/array-concat-revoked-proxy-1.js | 19 - .../es6/array-concat-revoked-proxy-2.js | 19 - .../v8/mjsunit/es6/array-concat.js | 896 - .../v8/mjsunit/es6/array-copywithin.js | 336 - .../v8/mjsunit/es6/array-fill-receiver.js | 118 - .../v8/mjsunit/es6/array-fill.js | 127 - .../v8/mjsunit/es6/array-find.js | 350 - .../v8/mjsunit/es6/array-findindex.js | 350 - .../v8/mjsunit/es6/array-from.js | 186 - .../v8/mjsunit/es6/array-iterator-detached.js | 47 - .../v8/mjsunit/es6/array-iterator-turbo.js | 233 - .../v8/mjsunit/es6/array-iterator.js | 267 - .../v8/mjsunit/es6/array-length.js | 200 - .../v8/mjsunit/es6/array-of.js | 212 - .../v8/mjsunit/es6/array-prototype-values.js | 14 - .../v8/mjsunit/es6/array-reverse-order.js | 10 - .../es6/array-species-constructor-accessor.js | 28 - .../es6/array-species-constructor-delete.js | 29 - .../mjsunit/es6/array-species-constructor.js | 28 - .../v8/mjsunit/es6/array-species-delete.js | 29 - .../v8/mjsunit/es6/array-species-modified.js | 28 - .../v8/mjsunit/es6/array-species-neg-zero.js | 23 - .../es6/array-species-parent-constructor.js | 28 - .../v8/mjsunit/es6/array-species-proto.js | 28 - .../v8/mjsunit/es6/array-species.js | 170 - .../v8/mjsunit/es6/array-spread-holey.js | 52 - .../mjsunit/es6/array-spread-large-holey.js | 17 - .../v8/mjsunit/es6/array-tostring.js | 155 - .../v8/mjsunit/es6/arraybuffer-species.js | 34 - .../es6/arrow-functions-lexical-arguments.js | 156 - .../v8/mjsunit/es6/arrow-functions-this.js | 79 - .../v8/mjsunit/es6/arrow-functions.js | 83 - .../es6/arrow-rest-params-lazy-parsing.js | 142 - .../v8/mjsunit/es6/arrow-rest-params.js | 142 - .../v8/mjsunit/es6/block-conflicts-sloppy.js | 174 - .../v8/mjsunit/es6/block-conflicts.js | 174 - .../mjsunit/es6/block-const-assign-sloppy.js | 156 - .../v8/mjsunit/es6/block-const-assign.js | 158 - .../v8/mjsunit/es6/block-eval-var-over-let.js | 155 - .../v8/mjsunit/es6/block-for-sloppy.js | 199 - .../v8/mjsunit/es6/block-for.js | 207 - .../v8/mjsunit/es6/block-leave-sloppy.js | 222 - .../v8/mjsunit/es6/block-leave.js | 224 - .../es6/block-let-contextual-sloppy.js | 57 - .../es6/block-let-crankshaft-sloppy.js | 482 - .../v8/mjsunit/es6/block-let-crankshaft.js | 484 - .../es6/block-let-declaration-sloppy.js | 172 - .../v8/mjsunit/es6/block-let-declaration.js | 174 - .../mjsunit/es6/block-let-semantics-sloppy.js | 191 - .../v8/mjsunit/es6/block-let-semantics.js | 192 - .../v8/mjsunit/es6/block-scope-class.js | 57 - .../v8/mjsunit/es6/block-scoping-sloppy.js | 309 - .../es6/block-scoping-top-level-sloppy.js | 31 - .../v8/mjsunit/es6/block-scoping-top-level.js | 33 - .../v8/mjsunit/es6/block-scoping.js | 311 - .../v8/mjsunit/es6/block-sloppy-function.js | 668 - .../v8/mjsunit/es6/built-in-accessor-names.js | 39 - .../call-with-spread-modify-array-iterator.js | 37 - .../es6/call-with-spread-modify-next.js | 44 - .../v8/mjsunit/es6/call-with-spread.js | 113 - .../es6/catch-parameter-redeclaration.js | 112 - .../class-computed-property-names-super.js | 167 - .../es6/class-property-name-eval-arguments.js | 77 - .../es6/classes-derived-return-type.js | 88 - .../v8/mjsunit/es6/classes-experimental.js | 337 - .../v8/mjsunit/es6/classes-lazy-parsing.js | 32 - .../v8/mjsunit/es6/classes-maps.js | 68 - .../v8/mjsunit/es6/classes-proxy.js | 73 - .../v8/mjsunit/es6/classes-subclass-arrays.js | 149 - .../mjsunit/es6/classes-subclass-builtins.js | 929 - .../v8/mjsunit/es6/classes-super.js | 15 - .../v8/mjsunit/es6/classes.js | 1286 - .../v8/mjsunit/es6/collection-iterator.js | 259 - ...collections-constructor-custom-iterator.js | 73 - ...ctions-constructor-iterator-side-effect.js | 80 - ...nstructor-with-modified-array-prototype.js | 65 - ...ions-constructor-with-modified-protoype.js | 76 - .../v8/mjsunit/es6/collections.js | 1467 - .../v8/mjsunit/es6/completion.js | 178 - .../es6/computed-property-names-classes.js | 461 - .../es6/computed-property-names-deopt.js | 30 - ...-property-names-object-literals-methods.js | 130 - .../es6/computed-property-names-super.js | 78 - .../v8/mjsunit/es6/computed-property-names.js | 356 - .../v8/mjsunit/es6/dataview-length.js | 7 - .../throw-with-undefined-reject.js | 22 - .../es6/default-parameters-destructuring.js | 110 - .../v8/mjsunit/es6/default-parameters.js | 364 - .../es6/destructuring-assignment-lazy.js | 12 - .../mjsunit/es6/destructuring-assignment.js | 631 - ...ucturing-parameters-literalcount-nolazy.js | 40 - .../destructuring-parameters-literalcount.js | 40 - .../v8/mjsunit/es6/destructuring.js | 1202 - .../v8/mjsunit/es6/empty-for.js | 70 - .../v8/mjsunit/es6/for-each-in-catch.js | 196 - .../v8/mjsunit/es6/for-of.js | 24 - .../es6/function-length-configurable.js | 119 - .../mjsunit/es6/function-name-configurable.js | 115 - .../v8/mjsunit/es6/function-name.js | 452 - .../v8/mjsunit/es6/function-prototype-name.js | 11 - .../v8/mjsunit/es6/generator-destructuring.js | 318 - .../v8/mjsunit/es6/generators-iteration.js | 674 - .../v8/mjsunit/es6/generators-objects.js | 128 - .../v8/mjsunit/es6/generators-parsing.js | 131 - .../es6/generators-poisoned-properties.js | 42 - .../v8/mjsunit/es6/generators-runtime.js | 172 - .../v8/mjsunit/es6/generators-states.js | 94 - .../v8/mjsunit/es6/global-proto-proxy.js | 41 - .../v8/mjsunit/es6/hasinstance-symbol.js | 12 - .../v8/mjsunit/es6/indexed-integer-exotics.js | 64 - .../v8/mjsunit/es6/instanceof-proxies.js | 62 - .../v8/mjsunit/es6/instanceof.js | 67 - .../v8/mjsunit/es6/iteration-semantics.js | 357 - .../v8/mjsunit/es6/iteration-syntax.js | 78 - .../v8/mjsunit/es6/iterator-close.js | 1382 - .../v8/mjsunit/es6/iterator-prototype.js | 58 - .../v8/mjsunit/es6/json.js | 15 - .../es6/map-constructor-entry-side-effect.js | 48 - .../es6/map-constructor-entry-side-effect2.js | 53 - .../es6/map-constructor-entry-side-effect3.js | 43 - .../es6/map-constructor-entry-side-effect4.js | 53 - .../v8/mjsunit/es6/map-iterator-1.js | 23 - .../v8/mjsunit/es6/map-iterator-10.js | 34 - .../v8/mjsunit/es6/map-iterator-11.js | 35 - .../v8/mjsunit/es6/map-iterator-2.js | 20 - .../v8/mjsunit/es6/map-iterator-3.js | 22 - .../v8/mjsunit/es6/map-iterator-4.js | 22 - .../v8/mjsunit/es6/map-iterator-5.js | 22 - .../v8/mjsunit/es6/map-iterator-6.js | 20 - .../v8/mjsunit/es6/map-iterator-7.js | 22 - .../v8/mjsunit/es6/map-iterator-8.js | 32 - .../v8/mjsunit/es6/map-iterator-9.js | 30 - .../v8/mjsunit/es6/map-minus-zero.js | 51 - .../v8/mjsunit/es6/math-cbrt.js | 25 - .../v8/mjsunit/es6/math-clz32.js | 36 - .../v8/mjsunit/es6/math-expm1.js | 78 - .../v8/mjsunit/es6/math-fround.js | 120 - .../v8/mjsunit/es6/math-hyperbolic.js | 206 - .../v8/mjsunit/es6/math-hypot.js | 92 - .../v8/mjsunit/es6/math-log1p.js | 70 - .../v8/mjsunit/es6/math-log2-log10.js | 104 - .../v8/mjsunit/es6/math-sign.js | 46 - .../v8/mjsunit/es6/math-trunc.js | 102 - .../v8/mjsunit/es6/math.js | 15 - .../mjsunit/es6/method-name-eval-arguments.js | 33 - .../v8/mjsunit/es6/microtask-delivery.js | 83 - .../v8/mjsunit/es6/new-target.js | 483 - .../v8/mjsunit/es6/numeric-literals.js | 83 - .../v8/mjsunit/es6/object-assign.js | 173 - .../v8/mjsunit/es6/object-literals-method.js | 312 - .../es6/object-literals-property-shorthand.js | 79 - .../v8/mjsunit/es6/object-literals-super.js | 182 - .../v8/mjsunit/es6/object-tostring.js | 226 - .../v8/mjsunit/es6/pattern-brand-check.js | 52 - .../v8/mjsunit/es6/promise-all-overflow-1.js | 21 - .../v8/mjsunit/es6/promise-all-overflow-2.js | 18 - .../v8/mjsunit/es6/promise-all.js | 86 - .../v8/mjsunit/es6/promise-internal-setter.js | 16 - .../es6/promise-lookup-getter-setter.js | 76 - .../es6/promise-resolve-thenable-job.js | 127 - .../v8/mjsunit/es6/promise-species.js | 42 - .../v8/mjsunit/es6/promise-thenable-proxy.js | 23 - .../mjsunit/es6/prototype-ordinary-objects.js | 69 - .../v8/mjsunit/es6/proxies-accesschecks.js | 13 - .../v8/mjsunit/es6/proxies-apply.js | 247 - .../v8/mjsunit/es6/proxies-bind.js | 135 - .../v8/mjsunit/es6/proxies-construct.js | 170 - .../v8/mjsunit/es6/proxies-constructor.js | 96 - .../es6/proxies-cross-realm-exception.js | 53 - .../v8/mjsunit/es6/proxies-define-property.js | 82 - .../v8/mjsunit/es6/proxies-delete-property.js | 188 - .../mjsunit/es6/proxies-example-membrane.js | 308 - .../v8/mjsunit/es6/proxies-for.js | 223 - .../v8/mjsunit/es6/proxies-function.js | 630 - .../proxies-get-own-property-descriptor.js | 127 - .../mjsunit/es6/proxies-get-prototype-of.js | 91 - .../v8/mjsunit/es6/proxies-get.js | 222 - .../mjsunit/es6/proxies-global-reference.js | 9 - .../mjsunit/es6/proxies-has-own-property.js | 37 - .../v8/mjsunit/es6/proxies-has.js | 126 - .../v8/mjsunit/es6/proxies-hash.js | 121 - .../v8/mjsunit/es6/proxies-integrity.js | 211 - .../v8/mjsunit/es6/proxies-is-extensible.js | 72 - .../v8/mjsunit/es6/proxies-json.js | 562 - .../v8/mjsunit/es6/proxies-keys.js | 83 - .../v8/mjsunit/es6/proxies-object-assign.js | 28 - .../v8/mjsunit/es6/proxies-ownkeys.js | 94 - .../mjsunit/es6/proxies-prevent-extensions.js | 85 - .../es6/proxies-property-is-enumerable.js | 28 - ...proxies-prototype-handler-stackoverflow.js | 118 - .../proxies-prototype-target-stackoverflow.js | 95 - .../v8/mjsunit/es6/proxies-revocable.js | 23 - .../mjsunit/es6/proxies-set-prototype-of.js | 128 - .../v8/mjsunit/es6/proxies-set.js | 408 - .../mjsunit/es6/proxies-with-unscopables.js | 146 - .../v8/mjsunit/es6/proxies-with.js | 351 - .../v8/mjsunit/es6/proxies.js | 1517 - .../v8/mjsunit/es6/proxy-function-tostring.js | 6 - .../v8/mjsunit/es6/reflect-apply.js | 210 - .../v8/mjsunit/es6/reflect-construct.js | 402 - .../v8/mjsunit/es6/reflect-define-property.js | 1068 - .../reflect-get-own-property-descriptor.js | 121 - .../mjsunit/es6/reflect-get-prototype-of.js | 137 - .../v8/mjsunit/es6/reflect-own-keys.js | 91 - .../mjsunit/es6/reflect-prevent-extensions.js | 164 - .../mjsunit/es6/reflect-set-prototype-of.js | 182 - .../v8/mjsunit/es6/reflect.js | 591 - .../v8/mjsunit/es6/regexp-constructor.js | 112 - .../v8/mjsunit/es6/regexp-flags.js | 123 - .../v8/mjsunit/es6/regexp-match-lastindex.js | 11 - .../v8/mjsunit/es6/regexp-prototype.js | 17 - .../mjsunit/es6/regexp-replace-lastindex.js | 11 - .../v8/mjsunit/es6/regexp-sticky.js | 139 - .../v8/mjsunit/es6/regexp-tolength.js | 17 - .../v8/mjsunit/es6/regexp-tostring.js | 57 - .../v8/mjsunit/es6/regress/regress-2034.js | 44 - .../v8/mjsunit/es6/regress/regress-2156.js | 39 - .../v8/mjsunit/es6/regress/regress-2186.js | 47 - .../v8/mjsunit/es6/regress/regress-2219.js | 32 - .../v8/mjsunit/es6/regress/regress-2225.js | 74 - .../v8/mjsunit/es6/regress/regress-2243.js | 29 - .../v8/mjsunit/es6/regress/regress-2322.js | 34 - .../v8/mjsunit/es6/regress/regress-2506.js | 76 - .../v8/mjsunit/es6/regress/regress-2681.js | 48 - .../v8/mjsunit/es6/regress/regress-2691.js | 32 - .../v8/mjsunit/es6/regress/regress-2829.js | 51 - .../v8/mjsunit/es6/regress/regress-2858.js | 25 - .../v8/mjsunit/es6/regress/regress-3426.js | 5 - .../v8/mjsunit/es6/regress/regress-347906.js | 14 - .../v8/mjsunit/es6/regress/regress-3501.js | 9 - .../v8/mjsunit/es6/regress/regress-3683.js | 82 - .../v8/mjsunit/es6/regress/regress-3741.js | 26 - .../v8/mjsunit/es6/regress/regress-3902.js | 15 - .../v8/mjsunit/es6/regress/regress-3938.js | 8 - .../v8/mjsunit/es6/regress/regress-4056.js | 10 - .../v8/mjsunit/es6/regress/regress-4097.js | 37 - .../v8/mjsunit/es6/regress/regress-411237.js | 15 - .../v8/mjsunit/es6/regress/regress-4160.js | 29 - .../v8/mjsunit/es6/regress/regress-4211.js | 10 - .../v8/mjsunit/es6/regress/regress-4298.js | 6 - .../es6/regress/regress-4395-global-eval.js | 6 - .../v8/mjsunit/es6/regress/regress-4395.js | 102 - .../v8/mjsunit/es6/regress/regress-4400.js | 6 - .../v8/mjsunit/es6/regress/regress-4417.js | 10 - .../v8/mjsunit/es6/regress/regress-4466.js | 26 - .../v8/mjsunit/es6/regress/regress-4482.js | 7 - .../v8/mjsunit/es6/regress/regress-4522.js | 19 - .../v8/mjsunit/es6/regress/regress-455141.js | 15 - .../v8/mjsunit/es6/regress/regress-4585.js | 14 - .../v8/mjsunit/es6/regress/regress-474783.js | 24 - .../v8/mjsunit/es6/regress/regress-4759.js | 23 - .../v8/mjsunit/es6/regress/regress-508074.js | 25 - .../v8/mjsunit/es6/regress/regress-513474.js | 5 - .../v8/mjsunit/es6/regress/regress-517455.js | 6 - .../v8/mjsunit/es6/regress/regress-5337.js | 39 - .../v8/mjsunit/es6/regress/regress-5598.js | 16 - .../v8/mjsunit/es6/regress/regress-576662.js | 9 - .../v8/mjsunit/es6/regress/regress-5929-1.js | 14 - .../v8/mjsunit/es6/regress/regress-594084.js | 9 - .../v8/mjsunit/es6/regress/regress-6098.js | 14 - .../v8/mjsunit/es6/regress/regress-6322.js | 11 - .../v8/mjsunit/es6/regress/regress-650172.js | 6 - .../v8/mjsunit/es6/regress/regress-660925.js | 13 - .../v8/mjsunit/es6/regress/regress-666622.js | 39 - .../v8/mjsunit/es6/regress/regress-7706.js | 40 - .../v8/mjsunit/es6/regress/regress-777182.js | 9 - .../regress/regress-arrow-duplicate-params.js | 5 - .../mjsunit/es6/regress/regress-cr372788.js | 45 - .../mjsunit/es6/regress/regress-cr493566.js | 102 - .../mjsunit/es6/regress/regress-cr512574.js | 7 - .../mjsunit/es6/regress/regress-cr895860.js | 14 - .../es6/regress/regress-crbug-248025.js | 38 - .../es6/regress/regress-crbug-346141.js | 9 - .../es6/regress/regress-crbug-448730.js | 14 - .../es6/regress/regress-crbug-461520.js | 18 - .../es6/regress/regress-crbug-465671-null.js | 14 - .../es6/regress/regress-crbug-465671.js | 14 - .../es6/regress/regress-crbug-820596.js | 8 - .../es6/regress/regress-crbug-837939.js | 17 - .../es6/regress/regress-inlined-new-target.js | 13 - .../es6/regress/regress-lookup-transition.js | 14 - .../es6/regress/regress-new-target-context.js | 25 - .../mjsunit/es6/rest-params-lazy-parsing.js | 30 - .../v8/mjsunit/es6/rest-params.js | 240 - .../v8/mjsunit/es6/set-iterator-1.js | 23 - .../v8/mjsunit/es6/set-iterator-10.js | 34 - .../v8/mjsunit/es6/set-iterator-11.js | 33 - .../v8/mjsunit/es6/set-iterator-2.js | 21 - .../v8/mjsunit/es6/set-iterator-3.js | 23 - .../v8/mjsunit/es6/set-iterator-4.js | 23 - .../v8/mjsunit/es6/set-iterator-5.js | 23 - .../v8/mjsunit/es6/set-iterator-6.js | 21 - .../v8/mjsunit/es6/set-iterator-7.js | 23 - .../v8/mjsunit/es6/set-iterator-8.js | 31 - .../v8/mjsunit/es6/set-iterator-9.js | 31 - .../v8/mjsunit/es6/set-minus-zero.js | 51 - .../es6/sloppy-no-duplicate-generators.js | 26 - .../es6/sloppy-restrictive-block-function.js | 50 - .../v8/mjsunit/es6/species.js | 35 - .../v8/mjsunit/es6/spread-array-misc.js | 273 - .../es6/spread-array-mutated-prototype.js | 236 - .../es6/spread-array-pristine-prototype.js | 183 - .../es6/spread-array-prototype-proxy.js | 21 - .../es6/spread-array-prototype-setter1.js | 22 - .../es6/spread-array-prototype-setter2.js | 22 - .../v8/mjsunit/es6/spread-call-new-class.js | 169 - .../v8/mjsunit/es6/spread-call-new.js | 60 - .../mjsunit/es6/spread-call-super-property.js | 29 - .../v8/mjsunit/es6/spread-call.js | 509 - .../v8/mjsunit/es6/string-codepointat.js | 89 - .../v8/mjsunit/es6/string-endswith.js | 419 - .../v8/mjsunit/es6/string-fromcodepoint.js | 66 - .../v8/mjsunit/es6/string-html.js | 202 - .../v8/mjsunit/es6/string-includes.js | 177 - .../v8/mjsunit/es6/string-iterator.js | 111 - .../v8/mjsunit/es6/string-iterator2.js | 26 - .../v8/mjsunit/es6/string-iterator3.js | 20 - .../v8/mjsunit/es6/string-iterator4.js | 30 - .../v8/mjsunit/es6/string-iterator5.js | 15 - .../v8/mjsunit/es6/string-iterator6.js | 11 - .../v8/mjsunit/es6/string-iterator7.js | 13 - .../v8/mjsunit/es6/string-iterator8.js | 14 - .../v8/mjsunit/es6/string-match.js | 21 - .../v8/mjsunit/es6/string-raw.js | 292 - .../v8/mjsunit/es6/string-repeat.js | 86 - .../v8/mjsunit/es6/string-replace.js | 21 - .../v8/mjsunit/es6/string-search.js | 21 - .../v8/mjsunit/es6/string-split.js | 22 - .../v8/mjsunit/es6/string-startswith.js | 411 - ...super-with-spread-modify-array-iterator.js | 51 - .../es6/super-with-spread-modify-next.js | 58 - .../v8/mjsunit/es6/super-with-spread.js | 88 - .../v8/mjsunit/es6/super.js | 2247 - .../v8/mjsunit/es6/symbols.js | 566 - .../v8/mjsunit/es6/templates.js | 867 - .../throw-type-error-function-restrictions.js | 25 - .../v8/mjsunit/es6/typed-array-iterator.js | 38 - ...t-by-array-like-prototype-element-added.js | 32 - .../es6/typedarray-construct-by-array-like.js | 346 - ...typedarray-construct-by-buffer-ordering.js | 81 - .../typedarray-construct-offset-not-smi.js | 37 - .../v8/mjsunit/es6/typedarray-copywithin.js | 245 - .../v8/mjsunit/es6/typedarray-every.js | 170 - .../v8/mjsunit/es6/typedarray-fill.js | 111 - .../v8/mjsunit/es6/typedarray-filter.js | 111 - .../v8/mjsunit/es6/typedarray-find.js | 202 - .../v8/mjsunit/es6/typedarray-findindex.js | 200 - .../v8/mjsunit/es6/typedarray-foreach.js | 159 - .../typedarray-from-detached-typedarray.js | 23 - .../es6/typedarray-from-next-overridden.js | 29 - .../typedarray-from-nonfunction-iterator.js | 11 - .../v8/mjsunit/es6/typedarray-from.js | 247 - .../v8/mjsunit/es6/typedarray-indexing.js | 112 - .../v8/mjsunit/es6/typedarray-iteration.js | 211 - .../es6/typedarray-keyedstore-tonumber.js | 69 - .../v8/mjsunit/es6/typedarray-map.js | 49 - .../v8/mjsunit/es6/typedarray-neutered.js | 781 - .../v8/mjsunit/es6/typedarray-of.js | 153 - .../v8/mjsunit/es6/typedarray-proto.js | 70 - .../v8/mjsunit/es6/typedarray-reduce.js | 266 - .../v8/mjsunit/es6/typedarray-reverse.js | 63 - .../es6/typedarray-set-bytelength-not-smi.js | 21 - .../es6/typedarray-set-length-internal.js | 35 - .../v8/mjsunit/es6/typedarray-set-length.js | 54 - .../v8/mjsunit/es6/typedarray-slice.js | 150 - .../v8/mjsunit/es6/typedarray-sort.js | 151 - .../v8/mjsunit/es6/typedarray-species.js | 84 - .../v8/mjsunit/es6/typedarray-tostring.js | 108 - .../v8/mjsunit/es6/typedarray.js | 1050 - .../mjsunit/es6/unicode-character-ranges.js | 156 - .../mjsunit/es6/unicode-escapes-in-regexps.js | 294 - .../v8/mjsunit/es6/unicode-escapes.js | 44 - .../v8/mjsunit/es6/unicode-regexp-backrefs.js | 51 - .../es6/unicode-regexp-ignore-case-noi18n.js | 57 - .../mjsunit/es6/unicode-regexp-ignore-case.js | 62 - .../mjsunit/es6/unicode-regexp-last-index.js | 102 - .../es6/unicode-regexp-restricted-syntax.js | 43 - .../es6/unicode-regexp-unanchored-advance.js | 6 - .../mjsunit/es6/unicode-regexp-zero-length.js | 56 - .../v8/mjsunit/es7/array-includes-receiver.js | 634 - .../es7/array-includes-to-object-sloppy.js | 27 - .../es7/array-includes-to-object-strict.js | 30 - .../v8/mjsunit/es7/array-includes.js | 709 - .../v8/mjsunit/es7/exponentiation-operator.js | 276 - .../v8/mjsunit/es7/regexp-ui-word.js | 42 - .../v8/mjsunit/es7/regress/regress-5986.js | 29 - .../v8/mjsunit/es7/regress/regress-633883.js | 9 - .../v8/mjsunit/es7/regress/regress-634269.js | 7 - .../v8/mjsunit/es7/regress/regress-634273.js | 14 - .../v8/mjsunit/es7/regress/regress-634357.js | 14 - .../v8/mjsunit/es7/typed-array-includes.js | 201 - .../es8/async-arrow-default-function-await.js | 5 - .../es8/async-arrow-lexical-arguments.js | 42 - .../es8/async-arrow-lexical-new.target.js | 43 - .../mjsunit/es8/async-arrow-lexical-super.js | 58 - .../mjsunit/es8/async-arrow-lexical-this.js | 48 - .../v8/mjsunit/es8/async-await-basic.js | 603 - .../v8/mjsunit/es8/async-await-interleaved.js | 61 - .../mjsunit/es8/async-await-no-constructor.js | 27 - .../v8/mjsunit/es8/async-await-resolve-new.js | 7 - .../v8/mjsunit/es8/async-await-species.js | 102 - .../v8/mjsunit/es8/async-destructuring.js | 516 - .../mjsunit/es8/async-function-stacktrace.js | 176 - .../mjsunit/es8/async-function-try-finally.js | 201 - .../v8/mjsunit/es8/object-entries.js | 411 - .../object-get-own-property-descriptors.js | 220 - .../v8/mjsunit/es8/object-values.js | 278 - .../v8/mjsunit/es8/regress/regress-618603.js | 12 - .../v8/mjsunit/es8/regress/regress-624300.js | 11 - .../v8/mjsunit/es8/regress/regress-794744.js | 8 - .../mjsunit/es8/sloppy-no-duplicate-async.js | 28 - .../v8/mjsunit/es9/object-rest-basic.js | 163 - .../v8/mjsunit/es9/object-spread-basic.js | 109 - .../object-spread-ic-dontenum-transition.js | 26 - .../object-spread-ic-multiple-transitions.js | 16 - .../v8/mjsunit/es9/object-spread-ic.js | 123 - .../v8/mjsunit/es9/regexp-lookbehind.js | 171 - .../v8/mjsunit/es9/regress/regress-866229.js | 20 - .../v8/mjsunit/es9/regress/regress-866282.js | 17 - .../v8/mjsunit/es9/regress/regress-866357.js | 17 - .../v8/mjsunit/es9/regress/regress-866727.js | 19 - .../v8/mjsunit/es9/regress/regress-866861.js | 11 - .../v8/mjsunit/es9/regress/regress-867958.js | 13 - .../v8/mjsunit/es9/regress/regress-869342.js | 18 - .../v8/mjsunit/es9/regress/regress-902965.js | 12 - .../v8/mjsunit/es9/regress/regress-903070.js | 15 - .../v8/mjsunit/es9/regress/regress-904167.js | 14 - .../v8/mjsunit/es9/template-escapes.js | 870 - .../v8/mjsunit/escape.js | 118 - .../mjsunit/eval-enclosing-function-name.js | 76 - .../v8/mjsunit/eval-origin.js | 39 - .../v8/mjsunit/eval-stack-trace.js | 203 - .../v8/mjsunit/eval-typeof-non-existing.js | 35 - implementation-contributed/v8/mjsunit/eval.js | 189 - .../v8/mjsunit/external-array.js | 715 - .../v8/mjsunit/external-backing-store-gc.js | 13 - .../v8/mjsunit/extra-arguments.js | 52 - .../v8/mjsunit/extra-commas.js | 46 - .../v8/mjsunit/fast-array-length.js | 36 - .../v8/mjsunit/fast-element-smi-check.js | 70 - .../v8/mjsunit/fast-literal.js | 39 - .../v8/mjsunit/fast-non-keyed.js | 113 - .../v8/mjsunit/fast-prototype.js | 121 - .../v8/mjsunit/field-type-tracking.js | 176 - .../v8/mjsunit/filter-element-kinds.js | 144 - .../fixed-context-shapes-when-recompiling.js | 1173 - .../v8/mjsunit/for-in-delete.js | 50 - .../v8/mjsunit/for-in-null-or-undefined.js | 33 - .../v8/mjsunit/for-in-special-cases.js | 143 - .../v8/mjsunit/for-in.js | 271 - .../mjsunit/for-of-in-catch-duplicate-decl.js | 5 - implementation-contributed/v8/mjsunit/for.js | 32 - .../v8/mjsunit/fun-as-prototype.js | 36 - .../v8/mjsunit/fun-name.js | 33 - .../mjsunit/function-arguments-duplicate.js | 40 - .../v8/mjsunit/function-arguments-null.js | 33 - .../v8/mjsunit/function-bind-name.js | 16 - .../v8/mjsunit/function-bind.js | 378 - .../v8/mjsunit/function-call.js | 354 - .../v8/mjsunit/function-caller.js | 54 - .../v8/mjsunit/function-length-accessor.js | 35 - .../v8/mjsunit/function-name-eval-shadowed.js | 5 - .../mjsunit/function-named-self-reference.js | 45 - .../v8/mjsunit/function-names.js | 134 - .../v8/mjsunit/function-property.js | 29 - .../v8/mjsunit/function-prototype.js | 120 - .../v8/mjsunit/function-var.js | 23 - .../v8/mjsunit/function-without-prototype.js | 54 - .../v8/mjsunit/function.js | 82 - .../v8/mjsunit/fuzz-accessors.js | 96 - .../v8/mjsunit/generated-transition-stub.js | 199 - ...get-own-property-descriptor-non-objects.js | 34 - .../v8/mjsunit/get-own-property-descriptor.js | 121 - .../v8/mjsunit/get-prototype-of.js | 116 - .../v8/mjsunit/getter-in-prototype.js | 78 - .../v8/mjsunit/getter-in-value-prototype.js | 34 - .../v8/mjsunit/getters-on-elements.js | 242 - .../v8/mjsunit/global-accessors.js | 52 - .../v8/mjsunit/global-arrow-delete-this.js | 18 - .../v8/mjsunit/global-deleted-property-ic.js | 45 - .../v8/mjsunit/global-hash.js | 19 - .../v8/mjsunit/global-ic.js | 48 - .../v8/mjsunit/global-infinity-strict.js | 136 - .../v8/mjsunit/global-infinity.js | 127 - .../mjsunit/global-load-from-eval-in-with.js | 58 - .../v8/mjsunit/global-load-from-eval.js | 85 - .../mjsunit/global-load-from-nested-eval.js | 61 - .../v8/mjsunit/global-nan-strict.js | 136 - .../v8/mjsunit/global-nan.js | 127 - .../v8/mjsunit/global-properties.js | 68 - .../v8/mjsunit/global-prototypes.js | 354 - .../v8/mjsunit/global-undefined-strict.js | 163 - .../v8/mjsunit/global-undefined.js | 149 - .../v8/mjsunit/global-vars-eval.js | 34 - .../v8/mjsunit/global-vars-with.js | 43 - .../v8/mjsunit/handle-count-ast.js | 12 - .../mjsunit/handle-count-runtime-literals.js | 1230 - .../array-concat-array-proto-getter.js | 53 - .../harmony/array-concat-array-proto.js | 48 - .../array-concat-object-proto-dict-getter.js | 57 - .../harmony/array-concat-object-proto-dict.js | 53 - .../array-concat-object-proto-generic-dict.js | 65 - .../harmony/array-concat-object-proto.js | 48 - .../v8/mjsunit/harmony/array-flat-species.js | 29 - .../v8/mjsunit/harmony/array-flat.js | 63 - .../mjsunit/harmony/array-flatMap-species.js | 29 - .../v8/mjsunit/harmony/array-flatMap.js | 162 - .../mjsunit/harmony/array-sort-comparefn.js | 48 - .../harmony/async-await-optimization.js | 124 - .../harmony/async-for-of-non-iterable.js | 20 - .../harmony/async-from-sync-iterator.js | 765 - .../mjsunit/harmony/async-generators-basic.js | 1753 - .../harmony/async-generators-resume-return.js | 152 - .../harmony/async-generators-return.js | 122 - .../mjsunit/harmony/async-generators-yield.js | 70 - .../v8/mjsunit/harmony/atomics-notify.js | 8 - .../v8/mjsunit/harmony/atomics-value-check.js | 44 - .../v8/mjsunit/harmony/atomics.js | 597 - .../v8/mjsunit/harmony/bigint/add.js | 105 - .../v8/mjsunit/harmony/bigint/and.js | 105 - .../v8/mjsunit/harmony/bigint/as-int-n.js | 300 - .../v8/mjsunit/harmony/bigint/basics.js | 595 - .../v8/mjsunit/harmony/bigint/comparisons.js | 501 - .../v8/mjsunit/harmony/bigint/dataview.js | 86 - .../v8/mjsunit/harmony/bigint/dec.js | 83 - .../v8/mjsunit/harmony/bigint/div.js | 105 - .../v8/mjsunit/harmony/bigint/exp.js | 52 - .../v8/mjsunit/harmony/bigint/inc.js | 83 - .../v8/mjsunit/harmony/bigint/json.js | 81 - .../v8/mjsunit/harmony/bigint/misc.js | 8 - .../v8/mjsunit/harmony/bigint/mod.js | 105 - .../v8/mjsunit/harmony/bigint/mul.js | 105 - .../v8/mjsunit/harmony/bigint/neg.js | 83 - .../v8/mjsunit/harmony/bigint/not.js | 83 - .../v8/mjsunit/harmony/bigint/or.js | 105 - .../harmony/bigint/regress-tonumbercode.js | 16 - .../v8/mjsunit/harmony/bigint/regressions.js | 39 - .../v8/mjsunit/harmony/bigint/sar.js | 105 - .../v8/mjsunit/harmony/bigint/shl.js | 105 - .../v8/mjsunit/harmony/bigint/sub.js | 105 - .../v8/mjsunit/harmony/bigint/tonumber.js | 50 - .../v8/mjsunit/harmony/bigint/turbo.js | 198 - .../v8/mjsunit/harmony/bigint/typedarray.js | 240 - .../v8/mjsunit/harmony/bigint/xor.js | 105 - .../bigintarray-keyedstore-tobigint.js | 62 - .../v8/mjsunit/harmony/block-lazy-compile.js | 50 - .../v8/mjsunit/harmony/dataview-accessors.js | 451 - .../v8/mjsunit/harmony/for-await-of.js | 1264 - .../v8/mjsunit/harmony/function-tostring.js | 168 - .../v8/mjsunit/harmony/futex.js | 250 - .../v8/mjsunit/harmony/generators-reduced.js | 15 - .../v8/mjsunit/harmony/generators.js | 653 - .../v8/mjsunit/harmony/global-configurable.js | 8 - .../v8/mjsunit/harmony/global-writable.js | 8 - .../v8/mjsunit/harmony/global.js | 28 - .../mjsunit/harmony/harmony-string-pad-end.js | 107 - .../harmony/harmony-string-pad-start.js | 107 - .../v8/mjsunit/harmony/hashbang-eval.js | 11 - .../import-from-compilation-errored.js | 13 - .../harmony/import-from-evaluation-errored.js | 13 - .../harmony/import-from-fetch-errored.js | 13 - .../import-from-instantiation-errored.js | 13 - .../v8/mjsunit/harmony/module-parsing-eval.js | 39 - .../v8/mjsunit/harmony/modules-import-1.js | 12 - .../v8/mjsunit/harmony/modules-import-10.js | 15 - .../v8/mjsunit/harmony/modules-import-11.js | 22 - .../v8/mjsunit/harmony/modules-import-12.js | 19 - .../v8/mjsunit/harmony/modules-import-13.js | 40 - .../v8/mjsunit/harmony/modules-import-14.js | 26 - .../v8/mjsunit/harmony/modules-import-15.js | 57 - .../v8/mjsunit/harmony/modules-import-16.js | 36 - .../v8/mjsunit/harmony/modules-import-17.js | 11 - .../v8/mjsunit/harmony/modules-import-2.js | 18 - .../v8/mjsunit/harmony/modules-import-3.js | 22 - .../v8/mjsunit/harmony/modules-import-4.js | 13 - .../v8/mjsunit/harmony/modules-import-5.js | 13 - .../v8/mjsunit/harmony/modules-import-6.js | 29 - .../v8/mjsunit/harmony/modules-import-7.js | 24 - .../v8/mjsunit/harmony/modules-import-8.js | 91 - .../v8/mjsunit/harmony/modules-import-9.js | 22 - .../mjsunit/harmony/modules-import-large.js | 1120 - .../v8/mjsunit/harmony/modules-import-meta.js | 44 - .../harmony/modules-import-namespace.js | 19 - .../v8/mjsunit/harmony/modules-skip-1.js | 5 - .../v8/mjsunit/harmony/modules-skip-10.js | 5 - .../v8/mjsunit/harmony/modules-skip-11.js | 5 - .../v8/mjsunit/harmony/modules-skip-12.js | 5 - .../v8/mjsunit/harmony/modules-skip-13.js | 6 - .../v8/mjsunit/harmony/modules-skip-2.js | 5 - .../v8/mjsunit/harmony/modules-skip-3.js | 5 - .../v8/mjsunit/harmony/modules-skip-4.js | 6 - .../v8/mjsunit/harmony/modules-skip-5.js | 15 - .../v8/mjsunit/harmony/modules-skip-6.js | 11 - .../v8/mjsunit/harmony/modules-skip-7.js | 14 - .../v8/mjsunit/harmony/modules-skip-8.js | 5 - .../v8/mjsunit/harmony/modules-skip-9.js | 5 - .../v8/mjsunit/harmony/modules-skip-empty.js | 3 - .../modules-skip-export-import-meta.js | 7 - .../v8/mjsunit/harmony/modules-skip-large1.js | 2204 - .../v8/mjsunit/harmony/modules-skip-large2.js | 1104 - .../v8/mjsunit/harmony/numeric-separator.js | 116 - .../v8/mjsunit/harmony/object-fromentries.js | 439 - .../harmony/optional-catch-binding-breaks.js | 63 - .../mjsunit/harmony/optional-catch-binding.js | 37 - .../v8/mjsunit/harmony/private-fields-ic.js | 294 - .../harmony/private-fields-special-object.js | 51 - .../mjsunit/harmony/private-fields-static.js | 356 - .../v8/mjsunit/harmony/private-fields.js | 478 - .../v8/mjsunit/harmony/private-symbols.js | 77 - .../v8/mjsunit/harmony/private.js | 420 - .../harmony/promise-prototype-finally.js | 619 - .../harmony/public-instance-class-fields.js | 716 - .../harmony/public-static-class-fields.js | 472 - .../v8/mjsunit/harmony/regexp-change-exec.js | 7 - .../v8/mjsunit/harmony/regexp-dotall.js | 133 - .../mjsunit/harmony/regexp-named-captures.js | 541 - .../mjsunit/harmony/regexp-property-binary.js | 166 - .../harmony/regexp-property-char-class.js | 26 - ...-property-emoji-flag-sequence-generated.js | 266 - ...roperty-emoji-keycap-sequence-generated.js | 20 - ...perty-emoji-modifier-sequence-generated.js | 538 - ...p-property-emoji-tag-sequence-generated.js | 11 - ...p-property-emoji-zwj-sequence-generated.js | 782 - .../harmony/regexp-property-enumerated.js | 23 - .../harmony/regexp-property-exact-match.js | 40 - .../regexp-property-general-category.js | 67 - .../harmony/regexp-property-invalid.js | 38 - .../mjsunit/harmony/regexp-property-lu-ui.js | 27 - .../mjsunit/harmony/regexp-property-lu-ui0.js | 7 - .../mjsunit/harmony/regexp-property-lu-ui1.js | 7 - .../mjsunit/harmony/regexp-property-lu-ui2.js | 7 - .../mjsunit/harmony/regexp-property-lu-ui3.js | 7 - .../mjsunit/harmony/regexp-property-lu-ui4.js | 7 - .../mjsunit/harmony/regexp-property-lu-ui5.js | 7 - .../mjsunit/harmony/regexp-property-lu-ui6.js | 7 - .../mjsunit/harmony/regexp-property-lu-ui7.js | 7 - .../mjsunit/harmony/regexp-property-lu-ui8.js | 7 - .../mjsunit/harmony/regexp-property-lu-ui9.js | 7 - .../regexp-property-script-extensions.js | 435 - .../harmony/regexp-property-scripts.js | 37 - .../harmony/regexp-property-sequence.js | 88 - .../harmony/regexp-property-special.js | 71 - .../harmony/regress-generators-resume.js | 18 - .../mjsunit/harmony/regress/regress-173361.js | 33 - .../mjsunit/harmony/regress/regress-4696.js | 29 - .../mjsunit/harmony/regress/regress-6100.js | 1736 - .../mjsunit/harmony/regress/regress-6322.js | 7 - .../mjsunit/harmony/regress/regress-771470.js | 8 - .../mjsunit/harmony/regress/regress-772649.js | 11 - .../mjsunit/harmony/regress/regress-897436.js | 12 - .../mjsunit/harmony/regress/regress-912504.js | 11 - .../harmony/regress/regress-crbug-347528.js | 36 - .../harmony/regress/regress-crbug-571149.js | 19 - .../harmony/regress/regress-crbug-621111.js | 6 - .../harmony/regress/regress-crbug-621496.js | 7 - .../regress-typedarray-out-of-bounds.js | 10 - .../v8/mjsunit/harmony/set-prototype-of.js | 183 - .../v8/mjsunit/harmony/sharedarraybuffer.js | 592 - .../string-matchAll-deleted-matchAll.js | 9 - .../v8/mjsunit/harmony/string-matchAll.js | 100 - .../mjsunit/harmony/symbol-async-iterator.js | 12 - .../v8/mjsunit/harmony/symbol-description.js | 53 - .../v8/mjsunit/harmony/to-length.js | 76 - .../v8/mjsunit/harmony/to-name.js | 41 - .../v8/mjsunit/harmony/to-number.js | 48 - .../v8/mjsunit/harmony/to-string.js | 54 - .../mjsunit/harmony/trailing-commas-length.js | 29 - .../v8/mjsunit/harmony/weakrefs/basics.js | 140 - .../cleanup-doesnt-iterate-all-holdings.js | 88 - .../weakrefs/cleanup-from-different-realm.js | 34 - .../weakrefs/cleanup-is-a-microtask.js | 56 - .../cleanup-proxy-from-different-realm.js | 34 - .../weakrefs/cleanupsome-after-unregister.js | 35 - .../mjsunit/harmony/weakrefs/cleanupsome.js | 32 - ...finalization-group-keeps-holdings-alive.js | 40 - .../weakrefs/finalizationgroup-and-weakref.js | 44 - ...up-scheduled-for-cleanup-multiple-times.js | 71 - .../harmony/weakrefs/iterating-in-cleanup.js | 45 - .../multiple-dirty-finalization-groups.js | 42 - .../mjsunit/harmony/weakrefs/two-weakrefs.js | 48 - .../harmony/weakrefs/undefined-holdings.js | 39 - .../weakrefs/unregister-after-cleanup.js | 46 - .../weakrefs/unregister-before-cleanup.js | 37 - .../weakrefs/unregister-called-twice.js | 40 - .../weakrefs/unregister-inside-cleanup1.js | 41 - .../weakrefs/unregister-inside-cleanup2.js | 40 - .../weakrefs/unregister-inside-cleanup3.js | 42 - .../weakrefs/unregister-inside-cleanup4.js | 48 - .../harmony/weakrefs/unregister-many.js | 50 - ...register-when-cleanup-already-scheduled.js | 36 - .../harmony/weakrefs/weak-cell-basics.js | 37 - .../weakrefs/weakref-creation-keeps-alive.js | 27 - .../weakrefs/weakref-deref-keeps-alive.js | 45 - .../well-formed-json-stringify-checked.js | 2575 - .../well-formed-json-stringify-unchecked.js | 2575 - .../has-own-property-evaluation-order.js | 13 - .../v8/mjsunit/has-own-property.js | 38 - .../v8/mjsunit/hash-code.js | 25 - .../v8/mjsunit/heapObjectVerify.js | 53 - .../v8/mjsunit/hex-parsing.js | 39 - .../v8/mjsunit/holy-double-no-arg-array.js | 14 - .../v8/mjsunit/html-comments.js | 57 - .../v8/mjsunit/html-string-funcs.js | 47 - .../v8/mjsunit/ic-lookup-on-receiver.js | 44 - .../v8/mjsunit/icu-date-lord-howe.js | 14 - .../v8/mjsunit/icu-date-to-string.js | 14 - .../v8/mjsunit/if-in-undefined.js | 36 - .../ignition/dead-code-source-position.js | 9 - .../ignition/dynamic-global-inside-block.js | 11 - .../ignition/ignition-statistics-extension.js | 62 - .../mjsunit/ignition/optimized-stack-trace.js | 22 - .../v8/mjsunit/ignition/osr-from-bytecode.js | 12 - .../v8/mjsunit/ignition/osr-from-generator.js | 65 - .../v8/mjsunit/ignition/print-ast.js | 13 - ...ress-597565-double-to-object-transition.js | 18 - .../ignition/regress-599001-verifyheap.js | 17 - ...regress-612386-smi-to-double-transition.js | 29 - .../v8/mjsunit/ignition/regress-616064.js | 24 - .../regress-629792-source-position-on-jump.js | 14 - .../v8/mjsunit/ignition/regress-662418.js | 18 - .../v8/mjsunit/ignition/regress-664146.js | 27 - .../v8/mjsunit/ignition/regress-672027.js | 17 - .../ignition/stack-trace-source-position.js | 20 - .../string-concat-external-thin-string.js | 19 - .../v8/mjsunit/ignition/throw-if-hole.js | 20 - .../v8/mjsunit/ignition/throw-if-not-hole.js | 28 - .../ignition/throw-super-not-called.js | 25 - .../v8/mjsunit/ignition/tracing.js | 325 - .../immutable-context-slot-inlining.js | 30 - implementation-contributed/v8/mjsunit/in.js | 159 - .../v8/mjsunit/indexed-accessors.js | 108 - .../v8/mjsunit/indexed-value-properties.js | 56 - .../v8/mjsunit/induction-variable-turbofan.js | 102 - .../v8/mjsunit/instanceof-2.js | 329 - .../v8/mjsunit/instanceof.js | 93 - .../v8/mjsunit/int32-ops.js | 227 - .../v8/mjsunit/integer-to-string.js | 35 - .../v8/mjsunit/integrity-level-map-update.js | 166 - .../intl-numberformat-formattoparts.js | 333 - .../v8/mjsunit/intl-pluralrules-select.js | 50 - .../v8/mjsunit/invalid-lhs.js | 74 - .../v8/mjsunit/invalid-source-element.js | 31 - .../v8/mjsunit/json-errors.js | 30 - .../v8/mjsunit/json-parser-recursive.js | 33 - .../json-replacer-number-wrapper-tostring.js | 20 - .../v8/mjsunit/json-replacer-order.js | 25 - .../v8/mjsunit/json-stringify-holder.js | 104 - .../v8/mjsunit/json-stringify-recursive.js | 54 - .../v8/mjsunit/json-stringify-stack.js | 8 - implementation-contributed/v8/mjsunit/json.js | 522 - .../v8/mjsunit/json2.js | 192 - .../v8/mjsunit/keyed-array-call.js | 56 - .../v8/mjsunit/keyed-call-generic.js | 113 - .../v8/mjsunit/keyed-call-ic.js | 205 - .../v8/mjsunit/keyed-ic.js | 236 - .../v8/mjsunit/keyed-load-dictionary-stub.js | 20 - .../v8/mjsunit/keyed-load-generic.js | 20 - .../mjsunit/keyed-load-hole-to-undefined.js | 25 - .../v8/mjsunit/keyed-load-with-string-key.js | 46 - .../v8/mjsunit/keyed-load-with-symbol-key.js | 50 - .../v8/mjsunit/keyed-named-access.js | 72 - .../v8/mjsunit/keyed-storage-extend.js | 55 - .../v8/mjsunit/keyed-store-array-literal.js | 75 - .../v8/mjsunit/keyed-store-generic.js | 22 - .../v8/mjsunit/keywords-and-reserved_words.js | 177 - .../v8/mjsunit/large-object-allocation.js | 300 - .../v8/mjsunit/large-object-literal-2.js | 34 - .../large-object-literal-slow-elements.js | 33 - .../v8/mjsunit/large-object-literal.js | 106 - .../v8/mjsunit/lazy-inner-functions.js | 29 - .../v8/mjsunit/lazy-load.js | 34 - .../v8/mjsunit/lea-add.js | 84 - .../v8/mjsunit/leakcheck.js | 53 - .../v8/mjsunit/length.js | 78 - .../v8/mjsunit/linecontinuation.js | 40 - .../v8/mjsunit/lithium/DivI.js | 57 - .../v8/mjsunit/lithium/MathExp.js | 39 - .../v8/mjsunit/lithium/MulI.js | 70 - .../v8/mjsunit/lithium/StoreKeyed.js | 61 - .../v8/mjsunit/lithium/StoreKeyedExternal.js | 109 - .../load-callback-from-value-classic.js | 38 - .../v8/mjsunit/load_poly_effect.js | 47 - .../v8/mjsunit/local-load-from-eval.js | 38 - .../v8/mjsunit/logical.js | 49 - .../v8/mjsunit/lookup-behind-property.js | 6 - .../v8/mjsunit/math-abs.js | 138 - .../v8/mjsunit/math-ceil.js | 78 - .../v8/mjsunit/math-deopt.js | 70 - .../v8/mjsunit/math-exp-precision.js | 64 - .../v8/mjsunit/math-floor-negative.js | 59 - .../mjsunit/math-floor-of-div-minus-zero.js | 41 - .../v8/mjsunit/math-floor-of-div-nosudiv.js | 288 - .../v8/mjsunit/math-floor-of-div.js | 299 - .../v8/mjsunit/math-floor-part1.js | 131 - .../v8/mjsunit/math-floor-part2.js | 115 - .../v8/mjsunit/math-floor-part3.js | 117 - .../v8/mjsunit/math-floor-part4.js | 114 - .../v8/mjsunit/math-imul.js | 148 - .../v8/mjsunit/math-min-max.js | 204 - .../v8/mjsunit/math-pow.js | 173 - .../v8/mjsunit/math-round.js | 191 - .../v8/mjsunit/math-sqrt.js | 52 - implementation-contributed/v8/mjsunit/md5.js | 211 - .../v8/mjsunit/megamorphic-callbacks.js | 70 - .../v8/mjsunit/messages.js | 606 - .../v8/mjsunit/migrations.js | 291 - .../v8/mjsunit/mjsunit-assertion-error.js | 102 - .../v8/mjsunit/mjsunit.js | 782 - .../v8/mjsunit/mjsunit.status | 2168 - .../v8/mjsunit/mjsunit_suppressions.js | 9 - .../v8/mjsunit/mod-range.js | 79 - implementation-contributed/v8/mjsunit/mod.js | 53 - .../v8/mjsunit/modules-circular-valid.js | 7 - .../v8/mjsunit/modules-cycle.js | 8 - .../v8/mjsunit/modules-default-name1.js | 10 - .../v8/mjsunit/modules-default-name2.js | 10 - .../v8/mjsunit/modules-default-name3.js | 10 - .../v8/mjsunit/modules-default-name4.js | 10 - .../v8/mjsunit/modules-default-name5.js | 10 - .../v8/mjsunit/modules-default-name6.js | 10 - .../v8/mjsunit/modules-default-name7.js | 11 - .../v8/mjsunit/modules-default-name8.js | 10 - .../v8/mjsunit/modules-default-name9.js | 10 - .../v8/mjsunit/modules-default.js | 11 - .../v8/mjsunit/modules-empty-import1.js | 9 - .../v8/mjsunit/modules-empty-import2.js | 9 - .../v8/mjsunit/modules-empty-import3.js | 9 - .../v8/mjsunit/modules-empty-import4.js | 11 - .../v8/mjsunit/modules-error-trace.js | 9 - .../v8/mjsunit/modules-export-star-as1.js | 10 - .../v8/mjsunit/modules-export-star-as2.js | 19 - .../v8/mjsunit/modules-export-star-as3.js | 15 - .../v8/mjsunit/modules-exports1.js | 55 - .../v8/mjsunit/modules-exports2.js | 31 - .../v8/mjsunit/modules-exports3.js | 48 - .../v8/mjsunit/modules-imports1.js | 26 - .../v8/mjsunit/modules-imports2.js | 26 - .../v8/mjsunit/modules-imports3.js | 38 - .../v8/mjsunit/modules-imports4.js | 31 - .../v8/mjsunit/modules-imports5.js | 9 - .../v8/mjsunit/modules-imports6.js | 25 - .../v8/mjsunit/modules-imports7.js | 8 - .../v8/mjsunit/modules-imports8.js | 11 - .../v8/mjsunit/modules-init1.js | 9 - .../v8/mjsunit/modules-init2.js | 8 - .../v8/mjsunit/modules-init3.js | 25 - .../v8/mjsunit/modules-init4.js | 8 - .../modules-namespace-getownproperty1.js | 148 - .../modules-namespace-getownproperty2.js | 148 - .../v8/mjsunit/modules-namespace1.js | 73 - .../v8/mjsunit/modules-namespace2.js | 20 - .../v8/mjsunit/modules-namespace3.js | 11 - .../v8/mjsunit/modules-namespace4.js | 59 - .../v8/mjsunit/modules-preparse.js | 11 - .../v8/mjsunit/modules-relative-path.js | 14 - .../v8/mjsunit/modules-skip-1.js | 9 - .../v8/mjsunit/modules-skip-2.js | 8 - .../v8/mjsunit/modules-skip-3.js | 8 - .../v8/mjsunit/modules-skip-4.js | 6 - .../v8/mjsunit/modules-skip-5.js | 5 - .../v8/mjsunit/modules-skip-6.js | 7 - .../v8/mjsunit/modules-skip-7.js | 6 - .../v8/mjsunit/modules-skip-8.js | 5 - .../v8/mjsunit/modules-skip-9.js | 7 - .../v8/mjsunit/modules-skip-circular-valid.js | 8 - .../v8/mjsunit/modules-skip-cycle.js | 5 - .../v8/mjsunit/modules-skip-default-name1.js | 5 - .../v8/mjsunit/modules-skip-default-name2.js | 5 - .../v8/mjsunit/modules-skip-default-name3.js | 5 - .../v8/mjsunit/modules-skip-default-name4.js | 5 - .../v8/mjsunit/modules-skip-default-name5.js | 5 - .../v8/mjsunit/modules-skip-default-name6.js | 5 - .../v8/mjsunit/modules-skip-default-name7.js | 5 - .../v8/mjsunit/modules-skip-default-name8.js | 5 - .../v8/mjsunit/modules-skip-default-name9.js | 5 - .../mjsunit/modules-skip-empty-import-aux.js | 6 - .../v8/mjsunit/modules-skip-empty-import.js | 6 - .../v8/mjsunit/modules-skip-init1.js | 6 - .../v8/mjsunit/modules-skip-init3.js | 26 - .../v8/mjsunit/modules-skip-init4a.js | 8 - .../v8/mjsunit/modules-skip-init4b.js | 7 - .../v8/mjsunit/modules-skip-namespace.js | 13 - .../modules-skip-star-exports-conflict.js | 6 - .../modules-skip-star-exports-cycle.js | 6 - .../v8/mjsunit/modules-star-exports-cycle.js | 11 - .../v8/mjsunit/modules-this.js | 7 - .../v8/mjsunit/modules-turbo1.js | 14 - .../v8/mjsunit/modules-turbo2.js | 17 - .../v8/mjsunit/mul-exhaustive-part1.js | 491 - .../v8/mjsunit/mul-exhaustive-part10.js | 470 - .../v8/mjsunit/mul-exhaustive-part2.js | 525 - .../v8/mjsunit/mul-exhaustive-part3.js | 532 - .../v8/mjsunit/mul-exhaustive-part4.js | 509 - .../v8/mjsunit/mul-exhaustive-part5.js | 505 - .../v8/mjsunit/mul-exhaustive-part6.js | 554 - .../v8/mjsunit/mul-exhaustive-part7.js | 497 - .../v8/mjsunit/mul-exhaustive-part8.js | 526 - .../v8/mjsunit/mul-exhaustive-part9.js | 533 - .../v8/mjsunit/multiline.js | 30 - .../v8/mjsunit/multiple-return.js | 62 - implementation-contributed/v8/mjsunit/nans.js | 112 - .../v8/mjsunit/negate-zero.js | 42 - .../v8/mjsunit/negate.js | 59 - .../v8/mjsunit/neuter-twice.js | 9 - .../v8/mjsunit/never-optimize.js | 59 - .../v8/mjsunit/new-function.js | 34 - implementation-contributed/v8/mjsunit/new.js | 55 - .../v8/mjsunit/newline-in-string.js | 48 - .../v8/mjsunit/no-branch-elimination.js | 36 - .../mjsunit/no-octal-constants-above-256.js | 32 - .../v8/mjsunit/no-semicolon.js | 45 - .../v8/mjsunit/non-ascii-replace.js | 30 - .../v8/mjsunit/noopt.js | 17 - implementation-contributed/v8/mjsunit/not.js | 59 - .../v8/mjsunit/nul-characters.js | 38 - .../v8/mjsunit/number-is.js | 126 - .../v8/mjsunit/number-isnan-opt.js | 55 - .../v8/mjsunit/number-limits.js | 47 - .../v8/mjsunit/number-literal.js | 33 - .../v8/mjsunit/number-string-index-call.js | 31 - .../v8/mjsunit/number-tostring-add.js | 89 - .../v8/mjsunit/number-tostring-big-integer.js | 34 - .../v8/mjsunit/number-tostring-func.js | 364 - .../v8/mjsunit/number-tostring-small.js | 394 - .../v8/mjsunit/number-tostring.js | 344 - .../v8/mjsunit/numops-fuzz-part1.js | 1172 - .../v8/mjsunit/numops-fuzz-part2.js | 1178 - .../v8/mjsunit/numops-fuzz-part3.js | 1178 - .../v8/mjsunit/numops-fuzz-part4.js | 1177 - .../v8/mjsunit/obj-construct.js | 46 - .../v8/mjsunit/object-create.js | 282 - .../v8/mjsunit/object-define-properties.js | 72 - .../v8/mjsunit/object-define-property.js | 1159 - .../v8/mjsunit/object-freeze-global.js | 6 - .../v8/mjsunit/object-freeze.js | 398 - .../mjsunit/object-get-own-property-names.js | 106 - .../v8/mjsunit/object-is.js | 47 - .../v8/mjsunit/object-keys.js | 92 - .../v8/mjsunit/object-literal-conversions.js | 45 - .../v8/mjsunit/object-literal-gc.js | 65 - ...bject-literal-modified-object-prototype.js | 25 - .../mjsunit/object-literal-multiple-fields.js | 96 - .../object-literal-multiple-proto-fields.js | 21 - .../v8/mjsunit/object-literal-overwrite.js | 134 - .../v8/mjsunit/object-literal.js | 1568 - .../v8/mjsunit/object-prevent-extensions.js | 162 - .../v8/mjsunit/object-seal-global.js | 7 - .../v8/mjsunit/object-seal.js | 395 - .../v8/mjsunit/object-toprimitive.js | 106 - .../v8/mjsunit/omit-constant-mapcheck.js | 70 - .../v8/mjsunit/opt-elements-kind.js | 160 - .../v8/mjsunit/optimized-array-every.js | 520 - .../v8/mjsunit/optimized-array-find.js | 460 - .../v8/mjsunit/optimized-array-findindex.js | 460 - .../v8/mjsunit/optimized-array-some.js | 502 - .../v8/mjsunit/optimized-filter.js | 493 - .../v8/mjsunit/optimized-foreach-holey-2.js | 32 - .../v8/mjsunit/optimized-foreach-holey-3.js | 32 - .../v8/mjsunit/optimized-foreach-holey.js | 25 - .../v8/mjsunit/optimized-foreach-polymorph.js | 111 - .../v8/mjsunit/optimized-foreach.js | 395 - .../v8/mjsunit/optimized-map.js | 552 - .../v8/mjsunit/optimized-reduce.js | 49 - .../v8/mjsunit/optimized-reduceright.js | 49 - .../v8/mjsunit/optimized-typeof.js | 47 - .../v8/mjsunit/osr-elements-kind.js | 146 - .../v8/mjsunit/outobject-double-for-in.js | 66 - .../v8/mjsunit/override-read-only-property.js | 64 - .../v8/mjsunit/packed-elements.js | 107 - .../v8/mjsunit/parallel-compile-tasks.js | 70 - .../v8/mjsunit/parallel-optimize-disabled.js | 52 - .../v8/mjsunit/parse-int-float.js | 125 - .../v8/mjsunit/parse-surrogates.js | 7 - .../v8/mjsunit/pixel-array-rounding.js | 50 - .../v8/mjsunit/polymorph-arrays.js | 180 - .../mjsunit/preparse-toplevel-strict-eval.js | 11 - .../v8/mjsunit/primitive-keyed-access.js | 49 - .../v8/mjsunit/print.js | 6 - .../v8/mjsunit/property-load-across-eval.js | 105 - .../mjsunit/property-name-eval-arguments.js | 59 - .../v8/mjsunit/property-object-key.js | 35 - .../v8/mjsunit/proto-accessor.js | 163 - .../proto-elements-add-during-foreach.js | 38 - .../v8/mjsunit/proto.js | 33 - .../v8/mjsunit/prototype-changes.js | 56 - .../v8/mjsunit/prototype-non-existing.js | 92 - .../v8/mjsunit/prototype.js | 91 - .../v8/mjsunit/random-bit-correlations.js | 69 - .../v8/mjsunit/readonly-accessor.js | 7 - .../v8/mjsunit/readonly.js | 233 - .../v8/mjsunit/realm-property-access.js | 20 - .../v8/mjsunit/receiver-in-with-calls.js | 47 - .../v8/mjsunit/recursive-store-opt.js | 41 - .../v8/mjsunit/regexp-UC16.js | 47 - .../v8/mjsunit/regexp-cache-replace.js | 36 - .../v8/mjsunit/regexp-call-as-function.js | 36 - .../v8/mjsunit/regexp-capture-3.js | 218 - .../v8/mjsunit/regexp-capture.js | 60 - .../v8/mjsunit/regexp-captures.js | 31 - .../v8/mjsunit/regexp-compile.js | 48 - .../v8/mjsunit/regexp-global.js | 254 - .../v8/mjsunit/regexp-indexof.js | 77 - .../v8/mjsunit/regexp-lastIndex.js | 22 - .../v8/mjsunit/regexp-lookahead.js | 166 - .../v8/mjsunit/regexp-loop-capture.js | 29 - .../regexp-modifiers-autogenerated-i18n.js | 81 - .../mjsunit/regexp-modifiers-autogenerated.js | 74 - .../v8/mjsunit/regexp-modifiers-dotall.js | 27 - .../v8/mjsunit/regexp-modifiers-i18n.js | 138 - .../v8/mjsunit/regexp-modifiers.js | 146 - .../v8/mjsunit/regexp-multiline.js | 112 - .../v8/mjsunit/regexp-override-exec.js | 19 - .../regexp-override-symbol-match-all.js | 12 - .../mjsunit/regexp-override-symbol-match.js | 10 - .../mjsunit/regexp-override-symbol-replace.js | 10 - .../mjsunit/regexp-override-symbol-search.js | 10 - .../mjsunit/regexp-override-symbol-split.js | 10 - .../v8/mjsunit/regexp-regexpexec.js | 8 - .../v8/mjsunit/regexp-results-cache.js | 77 - .../v8/mjsunit/regexp-sort.js | 48 - .../v8/mjsunit/regexp-stack-overflow.js | 18 - .../v8/mjsunit/regexp-standalones.js | 78 - .../v8/mjsunit/regexp-static.js | 159 - .../v8/mjsunit/regexp-string-methods.js | 43 - .../v8/mjsunit/regexp.js | 826 - .../v8/mjsunit/regress-906893.js | 21 - .../v8/mjsunit/regress-918763.js | 14 - .../regress-regexp-functional-replace-slow.js | 7 - .../v8/mjsunit/regress-v8-8445-2.js | 27 - .../v8/mjsunit/regress-v8-8445.js | 17 - .../regress/binop-in-effect-context-deopt.js | 65 - .../mjsunit/regress/bitops-register-alias.js | 31 - .../call-function-in-effect-context-deopt.js | 41 - .../v8/mjsunit/regress/clear-keyed-call.js | 40 - .../v8/mjsunit/regress/compare-map-elim1.js | 57 - .../comparison-in-effect-context-deopt.js | 47 - .../regress/consolidated-holey-load.js | 40 - .../v8/mjsunit/regress/cross-script-vars.js | 575 - .../v8/mjsunit/regress/d8-readbuffer.js | 40 - .../external-and-normal-array-polymorphism.js | 48 - .../v8/mjsunit/regress/get-array-keys-oob.js | 6 - .../regress/internalized-string-not-equal.js | 40 - .../regress/json-stringifier-emptyhandle.js | 44 - .../v8/mjsunit/regress/math-min.js | 66 - .../regress/modules-skip-regress-797581-1.js | 5 - .../regress/modules-skip-regress-797581-2.js | 5 - .../regress/modules-skip-regress-797581-3.js | 5 - .../regress/modules-skip-regress-797581-4.js | 5 - .../regress/modules-skip-regress-797581-5.js | 6 - .../v8/mjsunit/regress/negative_lookup.js | 65 - .../regress/number-named-call-deopt.js | 41 - .../mjsunit/regress/poly_count_operation.js | 155 - .../polymorphic-accessor-test-context.js | 25 - .../regress/post-increment-close-context.js | 42 - .../regress/property-descriptor-to-object.js | 8 - .../v8/mjsunit/regress/readonly1.js | 71 - .../v8/mjsunit/regress/readonly2.js | 62 - .../v8/mjsunit/regress/readonly3.js | 65 - .../v8/mjsunit/regress/readonly4.js | 74 - .../v8/mjsunit/regress/readonly5.js | 68 - .../regress/redeclaration-error-types.js | 145 - .../v8/mjsunit/regress/regress-100409.js | 55 - .../v8/mjsunit/regress/regress-100702.js | 44 - .../v8/mjsunit/regress/regress-1015.js | 66 - .../v8/mjsunit/regress/regress-1017.js | 35 - .../v8/mjsunit/regress/regress-1020.js | 32 - .../v8/mjsunit/regress/regress-1030466.js | 45 - .../v8/mjsunit/regress/regress-103259.js | 36 - .../v8/mjsunit/regress/regress-1036894.js | 38 - .../v8/mjsunit/regress/regress-1039610.js | 29 - .../v8/mjsunit/regress/regress-105.js | 43 - .../v8/mjsunit/regress/regress-1050043.js | 51 - .../v8/mjsunit/regress/regress-1060.js | 32 - .../v8/mjsunit/regress/regress-1062422.js | 30 - .../v8/mjsunit/regress/regress-1066899.js | 36 - .../v8/mjsunit/regress/regress-1079.js | 48 - .../v8/mjsunit/regress/regress-108296.js | 52 - .../v8/mjsunit/regress/regress-1083.js | 38 - .../v8/mjsunit/regress/regress-1092.js | 34 - .../v8/mjsunit/regress/regress-1099.js | 51 - .../v8/mjsunit/regress/regress-1102760.js | 35 - .../v8/mjsunit/regress/regress-1103.js | 32 - .../v8/mjsunit/regress/regress-1104.js | 37 - .../v8/mjsunit/regress/regress-110509.js | 41 - .../v8/mjsunit/regress/regress-1106.js | 56 - .../v8/mjsunit/regress/regress-1107.js | 32 - .../v8/mjsunit/regress/regress-1110.js | 37 - .../v8/mjsunit/regress/regress-1110164.js | 46 - .../v8/mjsunit/regress/regress-1112.js | 35 - .../v8/mjsunit/regress/regress-1112051.js | 33 - .../v8/mjsunit/regress/regress-1114040.js | 57 - .../v8/mjsunit/regress/regress-1117.js | 43 - .../v8/mjsunit/regress/regress-1118.js | 52 - .../v8/mjsunit/regress/regress-1119.js | 44 - .../v8/mjsunit/regress/regress-1120.js | 33 - .../v8/mjsunit/regress/regress-1121.js | 34 - .../v8/mjsunit/regress/regress-1122.js | 66 - .../v8/mjsunit/regress/regress-1125.js | 41 - .../v8/mjsunit/regress/regress-1126.js | 35 - .../v8/mjsunit/regress/regress-1129.js | 44 - .../v8/mjsunit/regress/regress-1130.js | 40 - .../v8/mjsunit/regress/regress-1131.js | 29 - .../v8/mjsunit/regress/regress-1132.js | 50 - .../v8/mjsunit/regress/regress-1134697.js | 31 - .../v8/mjsunit/regress/regress-113924.js | 31 - .../v8/mjsunit/regress/regress-114.js | 43 - .../v8/mjsunit/regress/regress-1146.js | 48 - .../v8/mjsunit/regress/regress-1149.js | 39 - .../v8/mjsunit/regress/regress-1150.js | 33 - .../v8/mjsunit/regress/regress-1151.js | 49 - .../v8/mjsunit/regress/regress-115100.js | 36 - .../v8/mjsunit/regress/regress-115452.js | 45 - .../v8/mjsunit/regress/regress-1156.js | 49 - .../v8/mjsunit/regress/regress-116.js | 40 - .../v8/mjsunit/regress/regress-1160.js | 41 - .../v8/mjsunit/regress/regress-1166.js | 40 - .../v8/mjsunit/regress/regress-1167.js | 76 - .../v8/mjsunit/regress/regress-1170.js | 95 - .../v8/mjsunit/regress/regress-1172-bis.js | 39 - .../v8/mjsunit/regress/regress-1172.js | 39 - .../v8/mjsunit/regress/regress-1173979.js | 48 - .../v8/mjsunit/regress/regress-1174.js | 43 - .../v8/mjsunit/regress/regress-117409.js | 52 - .../v8/mjsunit/regress/regress-1175390.js | 30 - .../v8/mjsunit/regress/regress-1176.js | 33 - .../v8/mjsunit/regress/regress-1177518.js | 39 - .../v8/mjsunit/regress/regress-1177809.js | 31 - .../v8/mjsunit/regress/regress-117794.js | 57 - .../v8/mjsunit/regress/regress-1178598.js | 71 - .../v8/mjsunit/regress/regress-1181.js | 54 - .../v8/mjsunit/regress/regress-1184.js | 47 - .../v8/mjsunit/regress/regress-1187524.js | 34 - .../v8/mjsunit/regress/regress-119429.js | 37 - .../v8/mjsunit/regress/regress-119925.js | 34 - .../v8/mjsunit/regress/regress-1199401.js | 75 - .../v8/mjsunit/regress/regress-1199637.js | 84 - .../v8/mjsunit/regress/regress-1200351.js | 2032 - .../v8/mjsunit/regress/regress-120099.js | 40 - .../v8/mjsunit/regress/regress-1203459.js | 29 - .../v8/mjsunit/regress/regress-1207.js | 35 - .../v8/mjsunit/regress/regress-1209.js | 34 - .../v8/mjsunit/regress/regress-1210.js | 52 - .../v8/mjsunit/regress/regress-1213.js | 43 - .../v8/mjsunit/regress/regress-1213516.js | 40 - .../v8/mjsunit/regress/regress-121407.js | 40 - .../v8/mjsunit/regress/regress-1215.js | 36 - .../v8/mjsunit/regress/regress-1215653.js | 365 - .../v8/mjsunit/regress/regress-1218.js | 29 - .../v8/mjsunit/regress/regress-1233.js | 47 - .../v8/mjsunit/regress/regress-123512.js | 78 - .../v8/mjsunit/regress/regress-1236.js | 34 - .../v8/mjsunit/regress/regress-1237.js | 41 - .../v8/mjsunit/regress/regress-123919.js | 47 - .../v8/mjsunit/regress/regress-124.js | 57 - .../v8/mjsunit/regress/regress-1240.js | 41 - .../v8/mjsunit/regress/regress-124594.js | 50 - .../v8/mjsunit/regress/regress-1254366.js | 37 - .../v8/mjsunit/regress/regress-125515.js | 41 - .../v8/mjsunit/regress/regress-1257.js | 34 - .../v8/mjsunit/regress/regress-126412.js | 33 - .../v8/mjsunit/regress/regress-1278.js | 69 - .../v8/mjsunit/regress/regress-128018.js | 35 - .../v8/mjsunit/regress/regress-128146.js | 33 - .../v8/mjsunit/regress/regress-1309.js | 30 - .../v8/mjsunit/regress/regress-131923.js | 30 - .../v8/mjsunit/regress/regress-1323.js | 50 - .../v8/mjsunit/regress/regress-1327557.js | 38 - .../v8/mjsunit/regress/regress-133211.js | 35 - .../v8/mjsunit/regress/regress-133211b.js | 39 - .../v8/mjsunit/regress/regress-1337.js | 40 - .../v8/mjsunit/regress/regress-1346700.js | 29 - .../v8/mjsunit/regress/regress-1351.js | 42 - .../v8/mjsunit/regress/regress-1355.js | 44 - .../v8/mjsunit/regress/regress-1360.js | 39 - .../v8/mjsunit/regress/regress-136048.js | 34 - .../v8/mjsunit/regress/regress-1365.js | 82 - .../v8/mjsunit/regress/regress-1369.js | 31 - .../v8/mjsunit/regress/regress-137.js | 45 - .../v8/mjsunit/regress/regress-137768.js | 73 - .../v8/mjsunit/regress/regress-1383.js | 40 - .../v8/mjsunit/regress/regress-1387.js | 38 - .../v8/mjsunit/regress/regress-1389.js | 42 - .../v8/mjsunit/regress/regress-1401.js | 45 - .../v8/mjsunit/regress/regress-1403.js | 36 - .../v8/mjsunit/regress/regress-1412.js | 59 - .../v8/mjsunit/regress/regress-1415.js | 42 - .../v8/mjsunit/regress/regress-1419.js | 55 - .../v8/mjsunit/regress/regress-1423.js | 65 - .../v8/mjsunit/regress/regress-1434.js | 36 - .../v8/mjsunit/regress/regress-1436.js | 79 - .../v8/mjsunit/regress/regress-1439135.js | 40 - .../v8/mjsunit/regress/regress-143967.js | 34 - .../v8/mjsunit/regress/regress-1447.js | 37 - .../v8/mjsunit/regress/regress-145201.js | 107 - .../v8/mjsunit/regress/regress-1472.js | 40 - .../v8/mjsunit/regress/regress-1476.js | 35 - .../v8/mjsunit/regress/regress-148378.js | 38 - .../v8/mjsunit/regress/regress-149.js | 28 - .../v8/mjsunit/regress/regress-1491.js | 38 - .../v8/mjsunit/regress/regress-1493017.js | 52 - .../v8/mjsunit/regress/regress-1513.js | 44 - .../v8/mjsunit/regress/regress-1521.js | 48 - .../v8/mjsunit/regress/regress-1528.js | 40 - .../v8/mjsunit/regress/regress-1529.js | 35 - .../v8/mjsunit/regress/regress-1530.js | 89 - .../v8/mjsunit/regress/regress-1531.js | 49 - .../v8/mjsunit/regress/regress-1546.js | 32 - .../v8/mjsunit/regress/regress-1548.js | 48 - .../v8/mjsunit/regress/regress-155924.js | 46 - .../v8/mjsunit/regress/regress-1560.js | 68 - .../v8/mjsunit/regress/regress-1563.js | 44 - .../v8/mjsunit/regress/regress-1582.js | 47 - .../v8/mjsunit/regress/regress-1583.js | 57 - .../v8/mjsunit/regress/regress-1591.js | 47 - .../v8/mjsunit/regress/regress-1592.js | 45 - .../v8/mjsunit/regress/regress-1620.js | 54 - .../v8/mjsunit/regress/regress-1624-strict.js | 140 - .../v8/mjsunit/regress/regress-1624.js | 139 - .../v8/mjsunit/regress/regress-1625.js | 36 - .../v8/mjsunit/regress/regress-164442.js | 45 - .../v8/mjsunit/regress/regress-1647.js | 42 - .../v8/mjsunit/regress/regress-1650.js | 60 - .../v8/mjsunit/regress/regress-165637.js | 10 - .../v8/mjsunit/regress/regress-166379.js | 38 - .../v8/mjsunit/regress/regress-166553.js | 33 - .../v8/mjsunit/regress/regress-1692.js | 89 - .../v8/mjsunit/regress/regress-1708.js | 67 - .../v8/mjsunit/regress/regress-171.js | 41 - .../v8/mjsunit/regress/regress-1711.js | 38 - .../v8/mjsunit/regress/regress-171641.js | 40 - .../v8/mjsunit/regress/regress-1748.js | 35 - .../v8/mjsunit/regress/regress-1757.js | 33 - .../v8/mjsunit/regress/regress-176.js | 50 - .../v8/mjsunit/regress/regress-1790.js | 58 - .../v8/mjsunit/regress/regress-1849.js | 39 - .../v8/mjsunit/regress/regress-186.js | 61 - .../v8/mjsunit/regress/regress-187.js | 30 - .../v8/mjsunit/regress/regress-189.js | 36 - .../v8/mjsunit/regress/regress-1898.js | 37 - .../v8/mjsunit/regress/regress-191.js | 42 - .../v8/mjsunit/regress/regress-1919169.js | 39 - .../v8/mjsunit/regress/regress-192.js | 45 - .../v8/mjsunit/regress/regress-1924.js | 42 - .../v8/mjsunit/regress/regress-193.js | 42 - .../v8/mjsunit/regress/regress-1973.js | 52 - .../v8/mjsunit/regress/regress-1980.js | 42 - .../v8/mjsunit/regress/regress-20070207.js | 41 - .../v8/mjsunit/regress/regress-201.js | 37 - .../v8/mjsunit/regress/regress-201590.js | 66 - .../v8/mjsunit/regress/regress-2027.js | 47 - .../v8/mjsunit/regress/regress-2030.js | 53 - .../v8/mjsunit/regress/regress-2032.js | 64 - .../v8/mjsunit/regress/regress-2045.js | 49 - .../v8/mjsunit/regress/regress-2054.js | 34 - .../v8/mjsunit/regress/regress-2055.js | 48 - .../v8/mjsunit/regress/regress-2056.js | 66 - .../v8/mjsunit/regress/regress-2058.js | 37 - .../v8/mjsunit/regress/regress-2071.js | 79 - .../v8/mjsunit/regress/regress-2073.js | 99 - .../v8/mjsunit/regress/regress-2110.js | 53 - .../v8/mjsunit/regress/regress-2119.js | 35 - .../v8/mjsunit/regress/regress-2132.js | 48 - .../v8/mjsunit/regress/regress-2153.js | 32 - .../v8/mjsunit/regress/regress-2163.js | 70 - .../v8/mjsunit/regress/regress-2170.js | 57 - .../v8/mjsunit/regress/regress-2172.js | 34 - .../v8/mjsunit/regress/regress-219.js | 148 - .../v8/mjsunit/regress/regress-2193.js | 58 - .../v8/mjsunit/regress/regress-2226.js | 36 - .../v8/mjsunit/regress/regress-2234.js | 41 - .../v8/mjsunit/regress/regress-2249.js | 33 - .../v8/mjsunit/regress/regress-2249423.js | 40 - .../v8/mjsunit/regress/regress-225.js | 32 - .../v8/mjsunit/regress/regress-2250.js | 67 - .../v8/mjsunit/regress/regress-2261.js | 113 - .../v8/mjsunit/regress/regress-2263.js | 54 - .../v8/mjsunit/regress/regress-227.js | 33 - .../v8/mjsunit/regress/regress-2273.js | 103 - .../v8/mjsunit/regress/regress-2284.js | 32 - .../v8/mjsunit/regress/regress-2286.js | 32 - .../v8/mjsunit/regress/regress-2289.js | 32 - .../v8/mjsunit/regress/regress-2291.js | 36 - .../v8/mjsunit/regress/regress-2294.js | 70 - .../v8/mjsunit/regress/regress-231.js | 92 - .../v8/mjsunit/regress/regress-2315.js | 39 - .../v8/mjsunit/regress/regress-2326.js | 54 - .../v8/mjsunit/regress/regress-233.js | 39 - .../v8/mjsunit/regress/regress-2339.js | 45 - .../v8/mjsunit/regress/regress-234101.js | 42 - .../v8/mjsunit/regress/regress-2346.js | 123 - .../v8/mjsunit/regress/regress-235311.js | 32 - .../v8/mjsunit/regress/regress-2373.js | 29 - .../v8/mjsunit/regress/regress-2374.js | 34 - .../v8/mjsunit/regress/regress-237617.js | 42 - .../v8/mjsunit/regress/regress-2398.js | 41 - .../v8/mjsunit/regress/regress-2410.js | 36 - .../v8/mjsunit/regress/regress-241344.js | 40 - .../v8/mjsunit/regress/regress-2416.js | 75 - .../v8/mjsunit/regress/regress-2419.js | 36 - .../v8/mjsunit/regress/regress-2433.js | 36 - .../v8/mjsunit/regress/regress-2435.js | 25 - .../v8/mjsunit/regress/regress-2437.js | 166 - .../v8/mjsunit/regress/regress-2438.js | 45 - .../v8/mjsunit/regress/regress-244.js | 68 - .../v8/mjsunit/regress/regress-2441.js | 31 - .../v8/mjsunit/regress/regress-2443.js | 129 - .../v8/mjsunit/regress/regress-2444.js | 118 - .../v8/mjsunit/regress/regress-2451.js | 40 - .../v8/mjsunit/regress/regress-246.js | 31 - .../v8/mjsunit/regress/regress-2470.js | 49 - .../v8/mjsunit/regress/regress-247688.js | 80 - .../v8/mjsunit/regress/regress-2489.js | 50 - .../v8/mjsunit/regress/regress-2499.js | 40 - .../v8/mjsunit/regress/regress-252797.js | 64 - .../v8/mjsunit/regress/regress-2529.js | 43 - .../v8/mjsunit/regress/regress-253.js | 31 - .../v8/mjsunit/regress/regress-2537.js | 46 - .../v8/mjsunit/regress/regress-2539.js | 55 - .../v8/mjsunit/regress/regress-254.js | 58 - .../v8/mjsunit/regress/regress-2564.js | 122 - .../v8/mjsunit/regress/regress-2565.js | 32 - .../v8/mjsunit/regress/regress-2566.js | 34 - .../v8/mjsunit/regress/regress-2568.js | 46 - .../v8/mjsunit/regress/regress-2570.js | 32 - .../v8/mjsunit/regress/regress-259.js | 33 - .../v8/mjsunit/regress/regress-2593.js | 61 - .../v8/mjsunit/regress/regress-2594.js | 104 - .../v8/mjsunit/regress/regress-2595.js | 57 - .../v8/mjsunit/regress/regress-2596.js | 55 - .../v8/mjsunit/regress/regress-260.js | 33 - .../v8/mjsunit/regress/regress-2606.js | 61 - .../v8/mjsunit/regress/regress-2612.js | 74 - .../v8/mjsunit/regress/regress-2615.js | 96 - .../v8/mjsunit/regress/regress-2618.js | 88 - .../v8/mjsunit/regress/regress-2624.js | 35 - .../v8/mjsunit/regress/regress-263.js | 38 - .../v8/mjsunit/regress/regress-264203.js | 44 - .../v8/mjsunit/regress/regress-2646.js | 35 - .../v8/mjsunit/regress/regress-265.js | 64 - .../v8/mjsunit/regress/regress-267.js | 35 - .../v8/mjsunit/regress/regress-2671-1.js | 44 - .../v8/mjsunit/regress/regress-2671.js | 44 - .../v8/mjsunit/regress/regress-2686.js | 32 - .../v8/mjsunit/regress/regress-2690.js | 28 - .../v8/mjsunit/regress/regress-270142.js | 48 - .../v8/mjsunit/regress/regress-2711.js | 33 - .../v8/mjsunit/regress/regress-2717.js | 51 - .../v8/mjsunit/regress/regress-2758.js | 49 - .../v8/mjsunit/regress/regress-279.js | 62 - .../v8/mjsunit/regress/regress-2790.js | 31 - .../v8/mjsunit/regress/regress-280531.js | 32 - .../v8/mjsunit/regress/regress-2813.js | 44 - .../v8/mjsunit/regress/regress-2836.js | 38 - .../v8/mjsunit/regress/regress-284.js | 50 - .../v8/mjsunit/regress/regress-2843.js | 45 - .../v8/mjsunit/regress/regress-2855.js | 57 - .../v8/mjsunit/regress/regress-286.js | 36 - .../v8/mjsunit/regress/regress-2931.js | 34 - .../v8/mjsunit/regress/regress-294.js | 43 - .../v8/mjsunit/regress/regress-2980.js | 64 - .../v8/mjsunit/regress/regress-298269.js | 24 - .../v8/mjsunit/regress/regress-2984.js | 33 - .../v8/mjsunit/regress/regress-2987.js | 57 - .../v8/mjsunit/regress/regress-2989.js | 40 - .../v8/mjsunit/regress/regress-299979.js | 34 - .../v8/mjsunit/regress/regress-3006390.js | 33 - .../v8/mjsunit/regress/regress-3010.js | 65 - .../v8/mjsunit/regress/regress-3025.js | 32 - .../v8/mjsunit/regress/regress-3026.js | 28 - .../v8/mjsunit/regress/regress-3027.js | 42 - .../v8/mjsunit/regress/regress-3029.js | 45 - .../v8/mjsunit/regress/regress-3032.js | 32 - .../v8/mjsunit/regress/regress-3039.js | 41 - .../v8/mjsunit/regress/regress-3116.js | 314 - .../v8/mjsunit/regress/regress-312.js | 31 - .../v8/mjsunit/regress/regress-3135.js | 73 - .../v8/mjsunit/regress/regress-3138.js | 30 - .../v8/mjsunit/regress/regress-3158.js | 24 - .../v8/mjsunit/regress/regress-3159.js | 10 - .../v8/mjsunit/regress/regress-317.js | 30 - .../v8/mjsunit/regress/regress-3176.js | 28 - .../v8/mjsunit/regress/regress-318.js | 35 - .../v8/mjsunit/regress/regress-3183.js | 96 - .../v8/mjsunit/regress/regress-318420.js | 46 - .../v8/mjsunit/regress/regress-3185905.js | 60 - .../regress/regress-319722-ArrayBuffer.js | 57 - .../regress/regress-319722-TypedArrays.js | 45 - .../v8/mjsunit/regress/regress-3199913.js | 44 - .../v8/mjsunit/regress/regress-3204.js | 42 - .../v8/mjsunit/regress/regress-320532.js | 41 - .../v8/mjsunit/regress/regress-3218530.js | 39 - .../v8/mjsunit/regress/regress-3218915.js | 46 - .../v8/mjsunit/regress/regress-3220.js | 30 - .../v8/mjsunit/regress/regress-3229.js | 25 - .../v8/mjsunit/regress/regress-3230771.js | 35 - .../v8/mjsunit/regress/regress-323845.js | 47 - .../v8/mjsunit/regress/regress-324028.js | 38 - .../v8/mjsunit/regress/regress-3247124.js | 53 - .../v8/mjsunit/regress/regress-3252443.js | 45 - .../v8/mjsunit/regress/regress-3255.js | 19 - .../v8/mjsunit/regress/regress-326.js | 40 - .../v8/mjsunit/regress/regress-3294.js | 8 - .../v8/mjsunit/regress/regress-330046.js | 61 - .../v8/mjsunit/regress/regress-3307.js | 24 - .../v8/mjsunit/regress/regress-331416.js | 52 - .../v8/mjsunit/regress/regress-331444.js | 44 - .../v8/mjsunit/regress/regress-3334.js | 13 - .../v8/mjsunit/regress/regress-333594.js | 42 - .../v8/mjsunit/regress/regress-334.js | 99 - .../v8/mjsunit/regress/regress-334708.js | 42 - .../v8/mjsunit/regress/regress-3359.js | 12 - .../v8/mjsunit/regress/regress-336820.js | 37 - .../v8/mjsunit/regress/regress-3380.js | 16 - .../v8/mjsunit/regress/regress-3392.js | 18 - .../v8/mjsunit/regress/regress-340125.js | 30 - .../v8/mjsunit/regress/regress-3404.js | 27 - .../v8/mjsunit/regress/regress-3408144.js | 35 - .../v8/mjsunit/regress/regress-341.js | 36 - .../v8/mjsunit/regress/regress-343609.js | 66 - .../v8/mjsunit/regress/regress-345.js | 51 - .../v8/mjsunit/regress/regress-3456.js | 11 - .../v8/mjsunit/regress/regress-3462.js | 48 - .../v8/mjsunit/regress/regress-346343.js | 42 - .../v8/mjsunit/regress/regress-346587.js | 18 - .../v8/mjsunit/regress/regress-347262.js | 62 - .../v8/mjsunit/regress/regress-347530.js | 12 - .../v8/mjsunit/regress/regress-347542.js | 11 - .../v8/mjsunit/regress/regress-347543.js | 19 - .../v8/mjsunit/regress/regress-3476.js | 24 - .../v8/mjsunit/regress/regress-347904.js | 12 - .../v8/mjsunit/regress/regress-347909.js | 19 - .../v8/mjsunit/regress/regress-347912.js | 10 - .../v8/mjsunit/regress/regress-347914.js | 91 - .../v8/mjsunit/regress/regress-348280.js | 16 - .../v8/mjsunit/regress/regress-3483.js | 30 - .../v8/mjsunit/regress/regress-348512.js | 37 - .../v8/mjsunit/regress/regress-349.js | 32 - .../v8/mjsunit/regress/regress-349885.js | 15 - .../v8/mjsunit/regress/regress-35.js | 33 - .../v8/mjsunit/regress/regress-350863.js | 45 - .../v8/mjsunit/regress/regress-350865.js | 17 - .../v8/mjsunit/regress/regress-350884.js | 15 - .../v8/mjsunit/regress/regress-350887.js | 12 - .../v8/mjsunit/regress/regress-351.js | 31 - .../v8/mjsunit/regress/regress-351261.js | 19 - .../v8/mjsunit/regress/regress-351263.js | 37 - .../v8/mjsunit/regress/regress-351319.js | 39 - .../v8/mjsunit/regress/regress-351624.js | 23 - .../v8/mjsunit/regress/regress-352059.js | 35 - .../v8/mjsunit/regress/regress-352982.js | 51 - .../v8/mjsunit/regress/regress-353004.js | 89 - .../v8/mjsunit/regress/regress-353058.js | 27 - .../v8/mjsunit/regress/regress-353551.js | 40 - .../v8/mjsunit/regress/regress-354357.js | 38 - .../v8/mjsunit/regress/regress-354433.js | 54 - .../v8/mjsunit/regress/regress-355485.js | 5 - .../v8/mjsunit/regress/regress-355486.js | 13 - .../v8/mjsunit/regress/regress-355523.js | 37 - .../v8/mjsunit/regress/regress-356053.js | 9 - .../v8/mjsunit/regress/regress-3564.js | 24 - .../v8/mjsunit/regress/regress-357054.js | 10 - .../v8/mjsunit/regress/regress-357103.js | 14 - .../v8/mjsunit/regress/regress-357105.js | 23 - .../v8/mjsunit/regress/regress-357108.js | 20 - .../v8/mjsunit/regress/regress-358057.js | 19 - .../v8/mjsunit/regress/regress-358059.js | 13 - .../v8/mjsunit/regress/regress-358088.js | 18 - .../v8/mjsunit/regress/regress-358090.js | 8 - .../v8/mjsunit/regress/regress-359441.js | 23 - .../v8/mjsunit/regress/regress-359491.js | 61 - .../v8/mjsunit/regress/regress-359525.js | 44 - .../v8/mjsunit/regress/regress-360733.js | 14 - .../v8/mjsunit/regress/regress-361025.js | 10 - .../v8/mjsunit/regress/regress-3612.js | 21 - .../v8/mjsunit/regress/regress-361608.js | 20 - .../v8/mjsunit/regress/regress-3621.js | 11 - .../v8/mjsunit/regress/regress-362128.js | 37 - .../v8/mjsunit/regress/regress-362870.js | 18 - .../v8/mjsunit/regress/regress-363956.js | 12 - .../v8/mjsunit/regress/regress-3641.js | 56 - .../v8/mjsunit/regress/regress-3643.js | 30 - .../v8/mjsunit/regress/regress-3650-1.js | 21 - .../v8/mjsunit/regress/regress-3650-2.js | 23 - .../v8/mjsunit/regress/regress-3650-3.js | 17 - .../v8/mjsunit/regress/regress-365172-1.js | 13 - .../v8/mjsunit/regress/regress-365172-2.js | 13 - .../v8/mjsunit/regress/regress-365172-3.js | 14 - .../v8/mjsunit/regress/regress-368243.js | 25 - .../v8/mjsunit/regress/regress-3687.js | 22 - .../v8/mjsunit/regress/regress-369450.js | 15 - .../v8/mjsunit/regress/regress-370384.js | 16 - .../v8/mjsunit/regress/regress-370827.js | 21 - .../v8/mjsunit/regress/regress-3709.js | 28 - .../v8/mjsunit/regress/regress-3718.js | 22 - .../v8/mjsunit/regress/regress-3756.js | 74 - .../v8/mjsunit/regress/regress-377290.js | 17 - .../v8/mjsunit/regress/regress-379770.js | 24 - .../v8/mjsunit/regress/regress-380092.js | 22 - .../v8/mjsunit/regress/regress-381313.js | 42 - .../v8/mjsunit/regress/regress-385054.js | 16 - .../v8/mjsunit/regress/regress-385565.js | 70 - .../v8/mjsunit/regress/regress-3859.js | 6 - .../v8/mjsunit/regress/regress-386.js | 47 - .../v8/mjsunit/regress/regress-386034.js | 19 - .../v8/mjsunit/regress/regress-3865.js | 14 - .../v8/mjsunit/regress/regress-3884.js | 27 - .../v8/mjsunit/regress/regress-392.js | 34 - .../v8/mjsunit/regress/regress-3926.js | 85 - .../v8/mjsunit/regress/regress-394.js | 47 - .../v8/mjsunit/regress/regress-396.js | 39 - .../v8/mjsunit/regress/regress-3969.js | 36 - .../v8/mjsunit/regress/regress-397.js | 43 - .../v8/mjsunit/regress/regress-3976.js | 80 - .../v8/mjsunit/regress/regress-3985.js | 45 - .../v8/mjsunit/regress/regress-399.js | 32 - .../v8/mjsunit/regress/regress-4023.js | 67 - .../v8/mjsunit/regress/regress-4027.js | 60 - .../v8/mjsunit/regress/regress-404981.js | 6 - .../v8/mjsunit/regress/regress-406.js | 69 - .../v8/mjsunit/regress/regress-410030.js | 43 - .../v8/mjsunit/regress/regress-410912.js | 206 - .../v8/mjsunit/regress/regress-411210.js | 22 - .../v8/mjsunit/regress/regress-4121.js | 42 - .../v8/mjsunit/regress/regress-412162.js | 14 - .../v8/mjsunit/regress/regress-416.js | 38 - .../v8/mjsunit/regress/regress-416416.js | 14 - .../v8/mjsunit/regress/regress-416730.js | 24 - .../v8/mjsunit/regress/regress-4169.js | 9 - .../v8/mjsunit/regress/regress-4173.js | 58 - .../v8/mjsunit/regress/regress-4214.js | 6 - .../v8/mjsunit/regress/regress-423633.js | 18 - .../v8/mjsunit/regress/regress-4255-1.js | 26 - .../v8/mjsunit/regress/regress-4255-2.js | 24 - .../v8/mjsunit/regress/regress-4255-3.js | 24 - .../v8/mjsunit/regress/regress-4255-4.js | 24 - .../v8/mjsunit/regress/regress-425551.js | 7 - .../v8/mjsunit/regress/regress-4266.js | 17 - .../v8/mjsunit/regress/regress-4267.js | 16 - .../v8/mjsunit/regress/regress-4271.js | 24 - .../v8/mjsunit/regress/regress-4279.js | 11 - .../v8/mjsunit/regress/regress-4296.js | 40 - .../v8/mjsunit/regress/regress-430201.js | 41 - .../v8/mjsunit/regress/regress-430201b.js | 42 - .../v8/mjsunit/regress/regress-4325.js | 48 - .../v8/mjsunit/regress/regress-435073.js | 12 - .../v8/mjsunit/regress/regress-435477.js | 16 - .../v8/mjsunit/regress/regress-436893.js | 37 - .../v8/mjsunit/regress/regress-4374.js | 15 - .../v8/mjsunit/regress/regress-4376-1.js | 12 - .../v8/mjsunit/regress/regress-4376-2.js | 9 - .../v8/mjsunit/regress/regress-4376-3.js | 10 - .../v8/mjsunit/regress/regress-4377.js | 45 - .../v8/mjsunit/regress/regress-437713.js | 26 - .../v8/mjsunit/regress/regress-437765.js | 22 - .../v8/mjsunit/regress/regress-4380.js | 20 - .../v8/mjsunit/regress/regress-4388.js | 35 - .../v8/mjsunit/regress/regress-4399-01.js | 17 - .../v8/mjsunit/regress/regress-4399-02.js | 8 - .../v8/mjsunit/regress/regress-441099.js | 53 - .../v8/mjsunit/regress/regress-444805.js | 8 - .../mjsunit/regress/regress-444805.js-script | 11 - .../v8/mjsunit/regress/regress-4450.js | 8 - .../v8/mjsunit/regress/regress-446389.js | 12 - .../v8/mjsunit/regress/regress-447526.js | 25 - .../v8/mjsunit/regress/regress-447561.js | 10 - .../v8/mjsunit/regress/regress-447756.js | 48 - .../v8/mjsunit/regress/regress-448711.js | 15 - .../v8/mjsunit/regress/regress-449291.js | 19 - .../v8/mjsunit/regress/regress-4493-1.js | 16 - .../v8/mjsunit/regress/regress-4495.js | 11 - .../v8/mjsunit/regress/regress-4507.js | 19 - .../v8/mjsunit/regress/regress-450895.js | 9 - ...-4509-Class-constructor-typeerror-realm.js | 25 - .../v8/mjsunit/regress/regress-451322.js | 17 - .../v8/mjsunit/regress/regress-4515.js | 17 - .../v8/mjsunit/regress/regress-451958.js | 31 - .../v8/mjsunit/regress/regress-4521.js | 20 - .../v8/mjsunit/regress/regress-4525.js | 37 - .../v8/mjsunit/regress/regress-4534.js | 17 - .../v8/mjsunit/regress/regress-453481.js | 127 - .../v8/mjsunit/regress/regress-45469.js | 44 - .../v8/mjsunit/regress/regress-454725.js | 42 - .../v8/mjsunit/regress/regress-455207.js | 12 - .../v8/mjsunit/regress/regress-455212.js | 33 - .../v8/mjsunit/regress/regress-4577.js | 21 - .../v8/mjsunit/regress/regress-457935.js | 26 - .../v8/mjsunit/regress/regress-458876.js | 16 - .../v8/mjsunit/regress/regress-458987.js | 16 - .../v8/mjsunit/regress/regress-4595.js | 10008 ---- .../v8/mjsunit/regress/regress-459955.js | 10 - .../v8/mjsunit/regress/regress-460917.js | 35 - .../v8/mjsunit/regress/regress-463028.js | 18 - .../v8/mjsunit/regress/regress-4640.js | 19 - .../v8/mjsunit/regress/regress-4654.js | 5 - .../v8/mjsunit/regress/regress-4659.js | 10 - .../v8/mjsunit/regress/regress-4665.js | 35 - .../v8/mjsunit/regress/regress-466993.js | 18 - .../v8/mjsunit/regress/regress-467481.js | 22 - .../v8/mjsunit/regress/regress-4693.js | 79 - .../v8/mjsunit/regress/regress-469605.js | 43 - .../v8/mjsunit/regress/regress-469605b.js | 26 - .../v8/mjsunit/regress/regress-470804.js | 53 - .../v8/mjsunit/regress/regress-4715.js | 48 - .../v8/mjsunit/regress/regress-472504.js | 9 - .../v8/mjsunit/regress/regress-475.js | 28 - .../v8/mjsunit/regress/regress-475705.js | 63 - .../v8/mjsunit/regress/regress-476488.js | 15 - .../v8/mjsunit/regress/regress-4769.js | 12 - .../v8/mjsunit/regress/regress-4788-1.js | 25 - .../v8/mjsunit/regress/regress-4788-2.js | 25 - .../v8/mjsunit/regress/regress-479528.js | 13 - .../v8/mjsunit/regress/regress-4800.js | 76 - .../v8/mjsunit/regress/regress-4815.js | 52 - .../v8/mjsunit/regress/regress-4825.js | 111 - .../v8/mjsunit/regress/regress-483.js | 34 - .../v8/mjsunit/regress/regress-484544.js | 13 - .../v8/mjsunit/regress/regress-485.js | 46 - .../v8/mjsunit/regress/regress-486.js | 30 - .../v8/mjsunit/regress/regress-4870.js | 10 - .../v8/mjsunit/regress/regress-487981.js | 22 - .../v8/mjsunit/regress/regress-488398.js | 18 - .../v8/mjsunit/regress/regress-489151.js | 12 - .../v8/mjsunit/regress/regress-490.js | 51 - .../v8/mjsunit/regress/regress-4908.js | 7 - .../v8/mjsunit/regress/regress-491.js | 47 - .../v8/mjsunit/regress/regress-491481.js | 15 - .../v8/mjsunit/regress/regress-492.js | 90 - .../v8/mjsunit/regress/regress-4945.js | 10 - .../v8/mjsunit/regress/regress-496.js | 39 - .../v8/mjsunit/regress/regress-4962.js | 11 - .../v8/mjsunit/regress/regress-4964.js | 22 - .../v8/mjsunit/regress/regress-4967.js | 9 - .../v8/mjsunit/regress/regress-4970.js | 15 - .../v8/mjsunit/regress/regress-4971.js | 41 - .../v8/mjsunit/regress/regress-499790.js | 14 - .../v8/mjsunit/regress/regress-500173.js | 12 - .../v8/mjsunit/regress/regress-500176.js | 13 - .../v8/mjsunit/regress/regress-5004.js | 27 - .../v8/mjsunit/regress/regress-5006.js | 11 - .../v8/mjsunit/regress/regress-500831.js | 94 - .../v8/mjsunit/regress/regress-500980.js | 7 - .../v8/mjsunit/regress/regress-5018.js | 29 - .../v8/mjsunit/regress/regress-502.js | 38 - .../v8/mjsunit/regress/regress-503.js | 63 - .../v8/mjsunit/regress/regress-5033.js | 21 - .../v8/mjsunit/regress/regress-503565.js | 21 - .../v8/mjsunit/regress/regress-5036.js | 5 - .../v8/mjsunit/regress/regress-507980.js | 8 - .../v8/mjsunit/regress/regress-5085.js | 74 - .../v8/mjsunit/regress/regress-509961.js | 10 - .../v8/mjsunit/regress/regress-5106.js | 29 - .../v8/mjsunit/regress/regress-515.js | 40 - .../v8/mjsunit/regress/regress-5173.js | 51 - .../v8/mjsunit/regress/regress-5174.js | 6 - .../v8/mjsunit/regress/regress-5178.js | 9 - .../v8/mjsunit/regress/regress-5181.js | 11 - .../v8/mjsunit/regress/regress-5199.js | 5 - .../v8/mjsunit/regress/regress-520029.js | 27 - .../v8/mjsunit/regress/regress-5205.js | 37 - .../v8/mjsunit/regress/regress-5213.js | 8 - .../v8/mjsunit/regress/regress-5214.js | 10 - .../v8/mjsunit/regress/regress-5216.js | 8 - .../v8/mjsunit/regress/regress-524.js | 32 - .../v8/mjsunit/regress/regress-5245.js | 24 - .../v8/mjsunit/regress/regress-5252.js | 31 - .../v8/mjsunit/regress/regress-526.js | 32 - .../v8/mjsunit/regress/regress-5262.js | 25 - .../v8/mjsunit/regress/regress-5275-1.js | 18 - .../v8/mjsunit/regress/regress-5275-2.js | 18 - .../v8/mjsunit/regress/regress-52801.js | 69 - .../v8/mjsunit/regress/regress-5286.js | 41 - .../v8/mjsunit/regress/regress-5295-2.js | 20 - .../v8/mjsunit/regress/regress-5295.js | 18 - .../v8/mjsunit/regress/regress-5332.js | 31 - .../v8/mjsunit/regress/regress-5342.js | 7 - .../v8/mjsunit/regress/regress-5351.js | 12 - .../v8/mjsunit/regress/regress-5357.js | 17 - .../v8/mjsunit/regress/regress-539875.js | 37 - .../v8/mjsunit/regress/regress-540.js | 47 - .../v8/mjsunit/regress/regress-5404.js | 21 - .../v8/mjsunit/regress/regress-5405.js | 28 - .../v8/mjsunit/regress/regress-542823.js | 12 - .../v8/mjsunit/regress/regress-5434.js | 42 - .../v8/mjsunit/regress/regress-543994.js | 19 - .../v8/mjsunit/regress/regress-5440.js | 8 - .../v8/mjsunit/regress/regress-544991.js | 21 - .../v8/mjsunit/regress/regress-545.js | 47 - .../v8/mjsunit/regress/regress-5454.js | 11 - .../v8/mjsunit/regress/regress-5476.js | 16 - .../v8/mjsunit/regress/regress-552302.js | 7 - .../v8/mjsunit/regress/regress-554865.js | 8 - .../v8/mjsunit/regress/regress-556543.js | 17 - .../v8/mjsunit/regress/regress-5566.js | 26 - .../v8/mjsunit/regress/regress-5636-1.js | 22 - .../v8/mjsunit/regress/regress-5636-2.js | 23 - .../v8/mjsunit/regress/regress-5638.js | 32 - .../v8/mjsunit/regress/regress-5638b.js | 44 - .../v8/mjsunit/regress/regress-5648.js | 35 - .../v8/mjsunit/regress/regress-5664.js | 8 - .../v8/mjsunit/regress/regress-5669.js | 21 - .../v8/mjsunit/regress/regress-5691.js | 23 - .../v8/mjsunit/regress/regress-5692.js | 16 - .../v8/mjsunit/regress/regress-57.js | 32 - .../v8/mjsunit/regress/regress-572589.js | 11 - .../v8/mjsunit/regress/regress-5736.js | 34 - .../v8/mjsunit/regress/regress-5749.js | 23 - .../v8/mjsunit/regress/regress-575364.js | 11 - .../v8/mjsunit/regress/regress-5763-1.js | 11 - .../v8/mjsunit/regress/regress-5763-2.js | 11 - .../v8/mjsunit/regress/regress-5767.js | 5 - .../v8/mjsunit/regress/regress-5772.js | 42 - .../v8/mjsunit/regress/regress-5780.js | 16 - .../v8/mjsunit/regress/regress-5783.js | 8 - .../v8/mjsunit/regress/regress-578775.js | 18 - .../v8/mjsunit/regress/regress-5790.js | 20 - .../v8/mjsunit/regress/regress-580.js | 55 - .../v8/mjsunit/regress/regress-5802.js | 113 - .../v8/mjsunit/regress/regress-581.js | 47 - .../v8/mjsunit/regress/regress-583260.js | 12 - .../v8/mjsunit/regress/regress-5836.js | 7 - .../v8/mjsunit/regress/regress-5845.js | 6 - .../v8/mjsunit/regress/regress-585041.js | 21 - .../v8/mjsunit/regress/regress-585775.js | 6 - .../v8/mjsunit/regress/regress-587004.js | 31 - .../v8/mjsunit/regress/regress-58740.js | 35 - .../v8/mjsunit/regress/regress-588599.js | 30 - .../v8/mjsunit/regress/regress-5888.js | 75 - .../v8/mjsunit/regress/regress-590074.js | 29 - .../v8/mjsunit/regress/regress-5902.js | 55 - .../v8/mjsunit/regress/regress-5911.js | 31 - .../v8/mjsunit/regress/regress-592341.js | 36 - .../v8/mjsunit/regress/regress-592352.js | 20 - .../v8/mjsunit/regress/regress-592353.js | 10 - .../v8/mjsunit/regress/regress-5927.js | 7 - .../v8/mjsunit/regress/regress-593299.js | 15 - .../v8/mjsunit/regress/regress-5938.js | 14 - .../v8/mjsunit/regress/regress-5943.js | 14 - .../v8/mjsunit/regress/regress-595319.js | 39 - .../v8/mjsunit/regress/regress-596718.js | 12 - .../v8/mjsunit/regress/regress-5972.js | 17 - .../v8/mjsunit/regress/regress-5974.js | 9 - .../regress/regress-599068-func-bindings.js | 45 - .../regress/regress-599089-array-push.js | 10 - .../v8/mjsunit/regress/regress-599412.js | 22 - .../regress-599414-array-concat-fast-path.js | 11 - .../v8/mjsunit/regress/regress-599710.js | 49 - .../v8/mjsunit/regress/regress-599717.js | 26 - .../v8/mjsunit/regress/regress-599719.js | 25 - .../v8/mjsunit/regress/regress-599825.js | 16 - .../v8/mjsunit/regress/regress-6-9-regexp.js | 30 - .../v8/mjsunit/regress/regress-602970.js | 17 - .../v8/mjsunit/regress/regress-603.js | 64 - .../v8/mjsunit/regress/regress-604044.js | 5 - .../v8/mjsunit/regress/regress-605470.js | 15 - .../v8/mjsunit/regress/regress-606021.js | 32 - .../v8/mjsunit/regress/regress-6063.js | 17 - .../v8/mjsunit/regress/regress-6082.js | 11 - .../v8/mjsunit/regress/regress-608630.js | 71 - .../v8/mjsunit/regress/regress-610633.js | 40 - .../v8/mjsunit/regress/regress-612.js | 44 - .../v8/mjsunit/regress/regress-6121.js | 23 - .../v8/mjsunit/regress/regress-612146.js | 33 - .../v8/mjsunit/regress/regress-612412.js | 20 - .../v8/mjsunit/regress/regress-613928.js | 19 - .../v8/mjsunit/regress/regress-6142.js | 27 - .../v8/mjsunit/regress/regress-615776.js | 14 - .../v8/mjsunit/regress/regress-616386.js | 10 - .../v8/mjsunit/regress/regress-617525.js | 14 - .../v8/mjsunit/regress/regress-617526.js | 24 - .../v8/mjsunit/regress/regress-617529.js | 17 - .../v8/mjsunit/regress/regress-618.js | 86 - .../v8/mjsunit/regress/regress-6186.js | 5 - .../v8/mjsunit/regress/regress-618608.js | 1434 - .../v8/mjsunit/regress/regress-618657.js | 12 - .../v8/mjsunit/regress/regress-619.js | 60 - .../v8/mjsunit/regress/regress-619382.js | 35 - .../v8/mjsunit/regress/regress-6196.js | 31 - .../v8/mjsunit/regress/regress-6203.js | 20 - .../v8/mjsunit/regress/regress-620553.js | 17 - .../v8/mjsunit/regress/regress-620750.js | 14 - .../v8/mjsunit/regress/regress-6209.js | 25 - .../v8/mjsunit/regress/regress-6210.js | 34 - .../v8/mjsunit/regress/regress-621869.js | 18 - .../v8/mjsunit/regress/regress-6223.js | 20 - .../v8/mjsunit/regress/regress-622663.js | 14 - .../v8/mjsunit/regress/regress-6248.js | 24 - .../v8/mjsunit/regress/regress-625121.js | 16 - .../v8/mjsunit/regress/regress-6280.js | 22 - .../v8/mjsunit/regress/regress-6288.js | 13 - .../v8/mjsunit/regress/regress-6298.js | 16 - .../v8/mjsunit/regress/regress-631050.js | 15 - .../v8/mjsunit/regress/regress-632289.js | 22 - .../v8/mjsunit/regress/regress-6337.js | 5 - .../v8/mjsunit/regress/regress-633998.js | 44 - .../v8/mjsunit/regress/regress-634-debug.js | 41 - .../v8/mjsunit/regress/regress-635429.js | 12 - .../v8/mjsunit/regress/regress-636.js | 36 - .../v8/mjsunit/regress/regress-6373.js | 24 - .../v8/mjsunit/regress/regress-638134.js | 20 - .../v8/mjsunit/regress/regress-639270.js | 14 - .../v8/mjsunit/regress/regress-641091.js | 15 - .../v8/mjsunit/regress/regress-642409.js | 22 - .../v8/mjsunit/regress/regress-643.js | 37 - .../v8/mjsunit/regress/regress-6431.js | 32 - .../v8/mjsunit/regress/regress-645680.js | 22 - .../v8/mjsunit/regress/regress-646.js | 33 - ...-648373-sloppy-arguments-includesValues.js | 33 - .../v8/mjsunit/regress/regress-648719.js | 5 - .../v8/mjsunit/regress/regress-649067.js | 5 - .../v8/mjsunit/regress/regress-649078.js | 10 - .../v8/mjsunit/regress/regress-6509.js | 24 - .../v8/mjsunit/regress/regress-651327.js | 217 - .../v8/mjsunit/regress/regress-653407.js | 26 - .../v8/mjsunit/regress/regress-655573.js | 18 - .../v8/mjsunit/regress/regress-6607-1.js | 19 - .../v8/mjsunit/regress/regress-6607-2.js | 19 - .../v8/mjsunit/regress/regress-662254.js | 40 - .../v8/mjsunit/regress/regress-662845.js | 15 - .../v8/mjsunit/regress/regress-662904.js | 19 - .../v8/mjsunit/regress/regress-664087.js | 21 - .../v8/mjsunit/regress/regress-6657.js | 38 - .../v8/mjsunit/regress/regress-666046.js | 57 - .../v8/mjsunit/regress/regress-666721.js | 53 - .../v8/mjsunit/regress/regress-667061.js | 90 - .../v8/mjsunit/regress/regress-667603.js | 9 - .../v8/mjsunit/regress/regress-6677.js | 27 - .../v8/mjsunit/regress/regress-6681.js | 10 - .../v8/mjsunit/regress/regress-669024.js | 21 - .../v8/mjsunit/regress/regress-6700.js | 92 - .../v8/mjsunit/regress/regress-670147.js | 33 - .../v8/mjsunit/regress/regress-6703.js | 23 - .../v8/mjsunit/regress/regress-670671.js | 23 - .../v8/mjsunit/regress/regress-6707.js | 13 - .../v8/mjsunit/regress/regress-6708.js | 12 - .../v8/mjsunit/regress/regress-670808.js | 22 - .../regress/regress-670981-array-push.js | 8 - .../v8/mjsunit/regress/regress-6711.js | 21 - .../v8/mjsunit/regress/regress-672041.js | 23 - .../v8/mjsunit/regress/regress-673241.js | 13 - .../v8/mjsunit/regress/regress-673242.js | 31 - .../v8/mjsunit/regress/regress-673297.js | 13 - .../v8/mjsunit/regress/regress-6733.js | 22 - .../v8/mjsunit/regress/regress-674232.js | 16 - .../v8/mjsunit/regress/regress-674753.js | 162 - .../v8/mjsunit/regress/regress-675.js | 60 - .../v8/mjsunit/regress/regress-676025.js | 31 - .../v8/mjsunit/regress/regress-677055.js | 11 - .../v8/mjsunit/regress/regress-677685.js | 32 - .../v8/mjsunit/regress/regress-678525.js | 57 - .../v8/mjsunit/regress/regress-678917.js | 29 - .../v8/mjsunit/regress/regress-679727.js | 6 - .../v8/mjsunit/regress/regress-681.js | 44 - .../v8/mjsunit/regress/regress-681171-1.js | 13 - .../v8/mjsunit/regress/regress-681171-2.js | 12 - .../v8/mjsunit/regress/regress-681171-3.js | 11 - .../v8/mjsunit/regress/regress-681383.js | 19 - .../v8/mjsunit/regress/regress-681984.js | 13 - .../v8/mjsunit/regress/regress-682242.js | 18 - .../v8/mjsunit/regress/regress-682349.js | 13 - .../v8/mjsunit/regress/regress-682649.js | 30 - .../v8/mjsunit/regress/regress-683617.js | 17 - .../v8/mjsunit/regress/regress-6838-1.js | 33 - .../v8/mjsunit/regress/regress-6838-2.js | 101 - .../v8/mjsunit/regress/regress-6838-3.js | 39 - .../v8/mjsunit/regress/regress-685086.js | 8 - .../v8/mjsunit/regress/regress-687.js | 74 - .../v8/mjsunit/regress/regress-688690.js | 16 - .../v8/mjsunit/regress/regress-689016.js | 12 - .../v8/mjsunit/regress/regress-69.js | 43 - .../v8/mjsunit/regress/regress-6907.js | 21 - .../v8/mjsunit/regress/regress-693500.js | 5 - .../v8/mjsunit/regress/regress-6941.js | 20 - .../v8/mjsunit/regress/regress-6948.js | 20 - .../v8/mjsunit/regress/regress-696.js | 36 - .../v8/mjsunit/regress/regress-696251.js | 7 - .../v8/mjsunit/regress/regress-696332.js | 12 - .../v8/mjsunit/regress/regress-696651.js | 22 - .../v8/mjsunit/regress/regress-697.js | 34 - .../v8/mjsunit/regress/regress-6970.js | 6 - .../v8/mjsunit/regress/regress-698790.js | 18 - .../v8/mjsunit/regress/regress-6989.js | 85 - .../v8/mjsunit/regress/regress-6991.js | 17 - .../v8/mjsunit/regress/regress-70066.js | 142 - .../v8/mjsunit/regress/regress-7014-1.js | 26 - .../v8/mjsunit/regress/regress-7014-2.js | 30 - .../v8/mjsunit/regress/regress-7026.js | 17 - .../v8/mjsunit/regress/regress-704811.js | 88 - .../v8/mjsunit/regress/regress-705934.js | 15 - .../v8/mjsunit/regress/regress-706234-2.js | 37 - .../v8/mjsunit/regress/regress-706234.js | 8 - .../v8/mjsunit/regress/regress-707066.js | 23 - .../v8/mjsunit/regress/regress-707187.js | 12 - .../v8/mjsunit/regress/regress-707410.js | 9 - .../v8/mjsunit/regress/regress-707675.js | 8 - .../v8/mjsunit/regress/regress-708247.js | 26 - .../v8/mjsunit/regress/regress-708598.js | 10 - .../v8/mjsunit/regress/regress-709029.js | 38 - .../v8/mjsunit/regress/regress-709782.js | 14 - .../v8/mjsunit/regress/regress-711165.js | 9 - .../v8/mjsunit/regress/regress-7115.js | 33 - .../v8/mjsunit/regress/regress-712.js | 38 - .../v8/mjsunit/regress/regress-7135.js | 17 - .../v8/mjsunit/regress/regress-715582.js | 9 - .../v8/mjsunit/regress/regress-716044.js | 25 - .../v8/mjsunit/regress/regress-71647.js | 34 - .../v8/mjsunit/regress/regress-718285.js | 46 - .../v8/mjsunit/regress/regress-718891.js | 68 - .../v8/mjsunit/regress/regress-719380.js | 7 - .../v8/mjsunit/regress/regress-720.js | 36 - .../v8/mjsunit/regress/regress-720247.js | 7 - .../v8/mjsunit/regress/regress-722978.js | 15 - .../v8/mjsunit/regress/regress-723366.js | 14 - .../v8/mjsunit/regress/regress-7254.js | 16 - .../v8/mjsunit/regress/regress-725858.js | 11 - .../v8/mjsunit/regress/regress-726625.js | 6 - .../v8/mjsunit/regress/regress-726636.js | 14 - .../v8/mjsunit/regress/regress-727218.js | 12 - .../v8/mjsunit/regress/regress-727662.js | 22 - .../v8/mjsunit/regress/regress-728.js | 42 - .../v8/mjsunit/regress/regress-729671.js | 6 - .../v8/mjsunit/regress/regress-730254.js | 37 - .../v8/mjsunit/regress/regress-732.js | 46 - .../v8/mjsunit/regress/regress-732836.js | 11 - .../v8/mjsunit/regress/regress-733059.js | 25 - .../v8/mjsunit/regress/regress-734862.js | 36 - .../v8/mjsunit/regress/regress-7369.js | 8 - .../v8/mjsunit/regress/regress-737588.js | 34 - .../v8/mjsunit/regress/regress-74.js | 40 - .../v8/mjsunit/regress/regress-740694.js | 22 - .../v8/mjsunit/regress/regress-740784.js | 33 - .../v8/mjsunit/regress/regress-743622.js | 13 - .../v8/mjsunit/regress/regress-744292.js | 16 - .../v8/mjsunit/regress/regress-746909.js | 8 - .../v8/mjsunit/regress/regress-747.js | 56 - .../v8/mjsunit/regress/regress-747075.js | 21 - .../v8/mjsunit/regress/regress-747825.js | 27 - .../v8/mjsunit/regress/regress-748069.js | 15 - .../v8/mjsunit/regress/regress-7510.js | 19 - .../v8/mjsunit/regress/regress-751789.js | 5 - .../v8/mjsunit/regress/regress-752.js | 36 - .../v8/mjsunit/regress/regress-752764.js | 11 - .../v8/mjsunit/regress/regress-753.js | 35 - .../v8/mjsunit/regress/regress-754.js | 39 - .../v8/mjsunit/regress/regress-756608.js | 7 - .../v8/mjsunit/regress/regress-758763.js | 7 - .../v8/mjsunit/regress/regress-760-1.js | 49 - .../v8/mjsunit/regress/regress-760-2.js | 49 - .../v8/mjsunit/regress/regress-760268.js | 11 - .../v8/mjsunit/regress/regress-760790.js | 11 - .../v8/mjsunit/regress/regress-761639.js | 10 - .../v8/mjsunit/regress/regress-761831.js | 13 - .../v8/mjsunit/regress/regress-7642.js | 58 - .../v8/mjsunit/regress/regress-7652.js | 26 - .../v8/mjsunit/regress/regress-7677.js | 63 - .../v8/mjsunit/regress/regress-7716.js | 51 - .../v8/mjsunit/regress/regress-772190.js | 10 - .../v8/mjsunit/regress/regress-7740.js | 18 - .../v8/mjsunit/regress/regress-774475.js | 938 - .../v8/mjsunit/regress/regress-774824.js | 17 - .../v8/mjsunit/regress/regress-775888.js | 21 - .../v8/mjsunit/regress/regress-776309.js | 27 - .../v8/mjsunit/regress/regress-776338.js | 44 - .../v8/mjsunit/regress/regress-7773.js | 71 - .../v8/mjsunit/regress/regress-778574.js | 8 - .../v8/mjsunit/regress/regress-778668.js | 35 - .../v8/mjsunit/regress/regress-7791.js | 120 - .../v8/mjsunit/regress/regress-779407.js | 13 - .../v8/mjsunit/regress/regress-780423.js | 39 - .../v8/mjsunit/regress/regress-781218.js | 53 - .../v8/mjsunit/regress/regress-782145.js | 21 - .../v8/mjsunit/regress/regress-78270.js | 37 - .../v8/mjsunit/regress/regress-782754.js | 18 - .../v8/mjsunit/regress/regress-783051.js | 10 - .../v8/mjsunit/regress/regress-783119.js | 10 - .../v8/mjsunit/regress/regress-784.js | 42 - .../v8/mjsunit/regress/regress-784080.js | 26 - .../v8/mjsunit/regress/regress-784862.js | 10 - .../v8/mjsunit/regress/regress-784863.js | 11 - .../v8/mjsunit/regress/regress-784990.js | 30 - .../v8/mjsunit/regress/regress-785804.js | 19 - .../v8/mjsunit/regress/regress-786573.js | 16 - .../v8/mjsunit/regress/regress-786784.js | 34 - .../v8/mjsunit/regress/regress-7893.js | 18 - .../v8/mjsunit/regress/regress-791334.js | 8 - .../v8/mjsunit/regress/regress-791345.js | 15 - .../v8/mjsunit/regress/regress-791958.js | 15 - .../v8/mjsunit/regress/regress-793588.js | 11 - .../v8/mjsunit/regress/regress-793793.js | 5 - .../v8/mjsunit/regress/regress-794.js | 31 - .../v8/mjsunit/regress/regress-794822.js | 19 - .../v8/mjsunit/regress/regress-794825.js | 55 - .../v8/mjsunit/regress/regress-796427.js | 7 - .../v8/mjsunit/regress/regress-797481.js | 10 - .../v8/mjsunit/regress/regress-797581.js | 34 - .../v8/mjsunit/regress/regress-798.js | 108 - .../v8/mjsunit/regress/regress-799690.js | 21 - .../v8/mjsunit/regress/regress-799813.js | 43 - .../v8/mjsunit/regress/regress-800538.js | 6 - .../v8/mjsunit/regress/regress-800651.js | 31 - .../v8/mjsunit/regress/regress-801171.js | 20 - .../v8/mjsunit/regress/regress-801772.js | 9 - .../v8/mjsunit/regress/regress-802060.js | 24 - .../v8/mjsunit/regress/regress-8033.js | 45 - .../v8/mjsunit/regress/regress-803750.js | 7 - .../v8/mjsunit/regress/regress-804096.js | 12 - .../v8/mjsunit/regress/regress-804176.js | 13 - .../v8/mjsunit/regress/regress-804177.js | 38 - .../v8/mjsunit/regress/regress-804188.js | 14 - .../v8/mjsunit/regress/regress-804288.js | 9 - .../v8/mjsunit/regress/regress-804801.js | 34 - .../v8/mjsunit/regress/regress-804837.js | 14 - .../v8/mjsunit/regress/regress-805729.js | 7 - .../v8/mjsunit/regress/regress-805768.js | 19 - .../v8/mjsunit/regress/regress-806.js | 51 - .../v8/mjsunit/regress/regress-806473.js | 58 - .../v8/mjsunit/regress/regress-812451.js | 14 - .../v8/mjsunit/regress/regress-8133-1.js | 16 - .../v8/mjsunit/regress/regress-8133-2.js | 17 - .../v8/mjsunit/regress/regress-813440.js | 16 - .../v8/mjsunit/regress/regress-814643.js | 6 - .../v8/mjsunit/regress/regress-815.js | 49 - .../v8/mjsunit/regress/regress-816289.js | 6 - .../v8/mjsunit/regress/regress-816317.js | 12 - .../v8/mjsunit/regress/regress-818070.js | 35 - .../v8/mjsunit/regress/regress-818438.js | 55 - .../v8/mjsunit/regress/regress-821137.js | 27 - .../v8/mjsunit/regress/regress-821368.js | 14 - .../v8/mjsunit/regress/regress-8241.js | 6 - .../v8/mjsunit/regress/regress-8265.js | 12 - .../v8/mjsunit/regress/regress-82769.js | 34 - .../v8/mjsunit/regress/regress-8377.js | 24 - .../v8/mjsunit/regress/regress-8384.js | 64 - .../v8/mjsunit/regress/regress-838766.js | 14 - .../v8/mjsunit/regress/regress-840106.js | 17 - .../v8/mjsunit/regress/regress-842.js | 42 - .../v8/mjsunit/regress/regress-842017.js | 60 - .../v8/mjsunit/regress/regress-842078.js | 14 - .../v8/mjsunit/regress/regress-84234.js | 55 - .../v8/mjsunit/regress/regress-842612.js | 16 - .../v8/mjsunit/regress/regress-843062-1.js | 18 - .../v8/mjsunit/regress/regress-843062-2.js | 8 - .../v8/mjsunit/regress/regress-843062-3.js | 10 - .../v8/mjsunit/regress/regress-843543.js | 17 - .../v8/mjsunit/regress/regress-8449.js | 25 - .../v8/mjsunit/regress/regress-849663.js | 7 - .../v8/mjsunit/regress/regress-851.js | 32 - .../v8/mjsunit/regress/regress-852258.js | 11 - .../v8/mjsunit/regress/regress-852765.js | 17 - .../v8/mjsunit/regress/regress-854066-2.js | 14 - .../v8/mjsunit/regress/regress-854066.js | 13 - .../v8/mjsunit/regress/regress-857.js | 37 - .../v8/mjsunit/regress/regress-86.js | 46 - .../v8/mjsunit/regress/regress-8607.js | 8 - .../v8/mjsunit/regress/regress-862433.js | 9 - .../v8/mjsunit/regress/regress-8630.js | 32 - .../v8/mjsunit/regress/regress-863155.js | 10 - .../v8/mjsunit/regress/regress-863810.js | 18 - .../v8/mjsunit/regress/regress-865310.js | 20 - .../v8/mjsunit/regress/regress-8659.js | 5 - .../v8/mjsunit/regress/regress-869735.js | 14 - .../v8/mjsunit/regress/regress-87.js | 53 - .../v8/mjsunit/regress/regress-8708.js | 10 - .../v8/mjsunit/regress/regress-874.js | 37 - .../v8/mjsunit/regress/regress-874178.js | 32 - .../v8/mjsunit/regress/regress-875031.js | 37 - .../v8/mjsunit/regress/regress-875493.js | 20 - .../v8/mjsunit/regress/regress-877615.js | 37 - .../v8/mjsunit/regress/regress-883059.js | 7 - .../v8/mjsunit/regress/regress-88591.js | 42 - .../v8/mjsunit/regress/regress-88858.js | 65 - .../v8/mjsunit/regress/regress-889722.js | 11 - .../v8/mjsunit/regress/regress-890553.js | 11 - .../v8/mjsunit/regress/regress-892742.js | 47 - .../v8/mjsunit/regress/regress-892858.js | 32 - .../v8/mjsunit/regress/regress-895691.js | 18 - .../v8/mjsunit/regress/regress-896326.js | 11 - .../v8/mjsunit/regress/regress-897366.js | 15 - .../v8/mjsunit/regress/regress-897512.js | 23 - .../v8/mjsunit/regress/regress-897815.js | 16 - .../v8/mjsunit/regress/regress-898812.js | 5 - .../v8/mjsunit/regress/regress-898936.js | 5 - .../v8/mjsunit/regress/regress-899115.js | 13 - .../v8/mjsunit/regress/regress-899133.js | 5 - .../v8/mjsunit/regress/regress-899474.js | 5 - .../v8/mjsunit/regress/regress-899537.js | 5 - .../v8/mjsunit/regress/regress-900.js | 46 - .../v8/mjsunit/regress/regress-900055.js | 42 - .../v8/mjsunit/regress/regress-900085.js | 7 - .../v8/mjsunit/regress/regress-900585.js | 5 - .../v8/mjsunit/regress/regress-900786.js | 5 - .../v8/mjsunit/regress/regress-900966.js | 49 - .../v8/mjsunit/regress/regress-901633.js | 24 - .../v8/mjsunit/regress/regress-901798.js | 14 - .../v8/mjsunit/regress/regress-902552.js | 11 - .../v8/mjsunit/regress/regress-902810.js | 5 - .../v8/mjsunit/regress/regress-903527.js | 5 - .../v8/mjsunit/regress/regress-903697.js | 12 - .../v8/mjsunit/regress/regress-904255.js | 5 - .../v8/mjsunit/regress/regress-904275.js | 30 - .../v8/mjsunit/regress/regress-904417.js | 18 - .../v8/mjsunit/regress/regress-904707.js | 14 - .../v8/mjsunit/regress/regress-905587.js | 5 - .../v8/mjsunit/regress/regress-905907.js | 10 - .../v8/mjsunit/regress/regress-906406.js | 7 - .../v8/mjsunit/regress/regress-907479.js | 23 - .../v8/mjsunit/regress/regress-907575.js | 6 - .../v8/mjsunit/regress/regress-907669.js | 5 - .../v8/mjsunit/regress/regress-908231.js | 8 - .../v8/mjsunit/regress/regress-908250.js | 5 - .../v8/mjsunit/regress/regress-908975.js | 6 - .../v8/mjsunit/regress/regress-91.js | 38 - .../v8/mjsunit/regress/regress-91008.js | 43 - .../v8/mjsunit/regress/regress-91010.js | 36 - .../v8/mjsunit/regress/regress-91013.js | 51 - .../v8/mjsunit/regress/regress-91120.js | 50 - .../v8/mjsunit/regress/regress-913844.js | 7 - .../v8/mjsunit/regress/regress-917215.js | 6 - .../v8/mjsunit/regress/regress-917755.js | 12 - .../v8/mjsunit/regress/regress-91787.js | 35 - .../v8/mjsunit/regress/regress-917988.js | 31 - .../v8/mjsunit/regress/regress-918.js | 33 - .../v8/mjsunit/regress/regress-919340.js | 17 - .../v8/mjsunit/regress/regress-919710.js | 5 - .../v8/mjsunit/regress/regress-921382.js | 5 - .../v8/mjsunit/regress/regress-923723.js | 14 - .../v8/mjsunit/regress/regress-925537.js | 41 - .../v8/mjsunit/regress/regress-926036.js | 5 - .../v8/mjsunit/regress/regress-927.js | 33 - .../v8/mjsunit/regress/regress-931.js | 48 - .../v8/mjsunit/regress/regress-937896.js | 50 - .../v8/mjsunit/regress/regress-944.js | 46 - .../v8/mjsunit/regress/regress-94425.js | 46 - .../v8/mjsunit/regress/regress-95113.js | 48 - .../v8/mjsunit/regress/regress-95485.js | 42 - .../v8/mjsunit/regress/regress-955.js | 44 - .../v8/mjsunit/regress/regress-95920.js | 50 - .../v8/mjsunit/regress/regress-962.js | 57 - .../v8/mjsunit/regress/regress-96523.js | 37 - .../v8/mjsunit/regress/regress-969.js | 127 - .../v8/mjsunit/regress/regress-97116.js | 50 - .../v8/mjsunit/regress/regress-97116b.js | 50 - .../v8/mjsunit/regress/regress-974.js | 32 - .../v8/mjsunit/regress/regress-982.js | 45 - .../v8/mjsunit/regress/regress-98773.js | 39 - .../v8/mjsunit/regress/regress-990205.js | 38 - .../v8/mjsunit/regress/regress-99167.js | 33 - .../v8/mjsunit/regress/regress-992.js | 43 - .../v8/mjsunit/regress/regress-992733.js | 35 - .../v8/mjsunit/regress/regress-995.js | 48 - .../v8/mjsunit/regress/regress-996542.js | 40 - .../regress-abort-context-allocate-params.js | 941 - .../regress-abort-preparsing-params.js | 946 - .../mjsunit/regress/regress-add-minus-zero.js | 37 - .../regress/regress-alloc-smi-check.js | 16 - .../regress/regress-arg-materialize-store.js | 22 - .../regress-arguments-liveness-analysis.js | 20 - .../regress/regress-arguments-slice.js | 8 - .../regress/regress-arm64-spillslots.js | 34 - .../regress/regress-array-pop-deopt.js | 41 - .../regress-array-pop-nonconfigurable.js | 30 - .../regress-arrow-single-expression-eval.js | 5 - .../regress-assignment-in-test-context.js | 19 - .../mjsunit/regress/regress-bce-underflow.js | 35 - .../mjsunit/regress/regress-bind-receiver.js | 44 - .../v8/mjsunit/regress/regress-binop.js | 181 - .../regress/regress-builtin-array-op.js | 37 - .../mjsunit/regress/regress-builtinbust-1.js | 14 - .../mjsunit/regress/regress-builtinbust-3.js | 15 - .../mjsunit/regress/regress-builtinbust-4.js | 16 - .../mjsunit/regress/regress-builtinbust-5.js | 13 - .../mjsunit/regress/regress-builtinbust-6.js | 40 - .../mjsunit/regress/regress-builtinbust-7.js | 32 - ...regress-calls-with-migrating-prototypes.js | 49 - .../regress-captured-object-no-dummy-use.js | 18 - .../mjsunit/regress/regress-charat-empty.js | 14 - .../regress-check-eliminate-loop-phis.js | 21 - .../regress/regress-clobbered-fp-regs.js | 54 - .../mjsunit/regress/regress-cnlt-elements.js | 43 - .../regress/regress-cnlt-enum-indices.js | 45 - .../regress/regress-cntl-descriptors-enum.js | 49 - .../regress-compare-constant-doubles.js | 58 - .../regress/regress-conditional-position.js | 95 - .../v8/mjsunit/regress/regress-context-osr.js | 39 - .../mjsunit/regress/regress-convert-enum.js | 60 - .../mjsunit/regress/regress-convert-enum2.js | 46 - .../regress-convert-function-to-double.js | 36 - .../mjsunit/regress/regress-convert-hole.js | 109 - .../mjsunit/regress/regress-convert-hole2.js | 86 - .../regress/regress-convert-transition.js | 40 - .../regress/regress-copy-hole-to-field.js | 57 - .../v8/mjsunit/regress/regress-cr-344285.js | 37 - .../v8/mjsunit/regress/regress-cr-658267.js | 5 - .../mjsunit/regress/regress-crbug-100859.js | 39 - .../mjsunit/regress/regress-crbug-109362.js | 60 - .../mjsunit/regress/regress-crbug-119926.js | 35 - .../mjsunit/regress/regress-crbug-122271.js | 49 - .../mjsunit/regress/regress-crbug-125148.js | 90 - .../mjsunit/regress/regress-crbug-126414.js | 32 - .../mjsunit/regress/regress-crbug-134055.js | 63 - .../mjsunit/regress/regress-crbug-134609.js | 59 - .../mjsunit/regress/regress-crbug-135008.js | 45 - .../mjsunit/regress/regress-crbug-135066.js | 55 - .../mjsunit/regress/regress-crbug-137689.js | 47 - .../mjsunit/regress/regress-crbug-138887.js | 48 - .../mjsunit/regress/regress-crbug-140083.js | 44 - .../mjsunit/regress/regress-crbug-142087.js | 38 - .../mjsunit/regress/regress-crbug-142218.js | 44 - .../mjsunit/regress/regress-crbug-145961.js | 39 - .../mjsunit/regress/regress-crbug-146910.js | 38 - .../mjsunit/regress/regress-crbug-147475.js | 48 - .../mjsunit/regress/regress-crbug-148376.js | 35 - .../mjsunit/regress/regress-crbug-150545.js | 52 - .../mjsunit/regress/regress-crbug-150729.js | 39 - .../mjsunit/regress/regress-crbug-157019.js | 54 - .../mjsunit/regress/regress-crbug-157520.js | 38 - .../mjsunit/regress/regress-crbug-158185.js | 38 - .../mjsunit/regress/regress-crbug-160010.js | 35 - .../mjsunit/regress/regress-crbug-162085.js | 71 - .../mjsunit/regress/regress-crbug-163530.js | 80 - .../mjsunit/regress/regress-crbug-168545.js | 34 - .../mjsunit/regress/regress-crbug-170856.js | 33 - .../mjsunit/regress/regress-crbug-172345.js | 34 - .../mjsunit/regress/regress-crbug-173907.js | 88 - .../mjsunit/regress/regress-crbug-173907b.js | 88 - .../mjsunit/regress/regress-crbug-173974.js | 36 - .../mjsunit/regress/regress-crbug-178790.js | 53 - .../mjsunit/regress/regress-crbug-181422.js | 32 - .../v8/mjsunit/regress/regress-crbug-18639.js | 38 - .../mjsunit/regress/regress-crbug-196583.js | 52 - .../mjsunit/regress/regress-crbug-217858.js | 15 - .../mjsunit/regress/regress-crbug-229923.js | 41 - .../mjsunit/regress/regress-crbug-233737.js | 42 - .../mjsunit/regress/regress-crbug-240032.js | 48 - .../mjsunit/regress/regress-crbug-242502.js | 66 - .../mjsunit/regress/regress-crbug-242870.js | 43 - .../mjsunit/regress/regress-crbug-242924.js | 48 - .../mjsunit/regress/regress-crbug-243868.js | 46 - .../mjsunit/regress/regress-crbug-244461.js | 40 - .../mjsunit/regress/regress-crbug-245424.js | 41 - .../mjsunit/regress/regress-crbug-245480.js | 67 - .../mjsunit/regress/regress-crbug-258519.js | 45 - .../mjsunit/regress/regress-crbug-260345.js | 59 - .../mjsunit/regress/regress-crbug-263276.js | 46 - .../mjsunit/regress/regress-crbug-272564.js | 49 - .../mjsunit/regress/regress-crbug-274438.js | 43 - .../mjsunit/regress/regress-crbug-280333.js | 47 - .../mjsunit/regress/regress-crbug-285355.js | 43 - .../mjsunit/regress/regress-crbug-305309.js | 49 - .../mjsunit/regress/regress-crbug-306220.js | 38 - .../mjsunit/regress/regress-crbug-306851.js | 52 - .../mjsunit/regress/regress-crbug-309623.js | 46 - .../mjsunit/regress/regress-crbug-315252.js | 61 - .../v8/mjsunit/regress/regress-crbug-3184.js | 82 - .../mjsunit/regress/regress-crbug-318671.js | 38 - .../mjsunit/regress/regress-crbug-319835.js | 51 - .../mjsunit/regress/regress-crbug-319860.js | 47 - .../mjsunit/regress/regress-crbug-323942.js | 57 - .../mjsunit/regress/regress-crbug-325225.js | 46 - .../mjsunit/regress/regress-crbug-329709.js | 41 - .../mjsunit/regress/regress-crbug-336148.js | 56 - .../mjsunit/regress/regress-crbug-340064.js | 38 - .../mjsunit/regress/regress-crbug-344186.js | 20 - .../mjsunit/regress/regress-crbug-345715.js | 26 - .../mjsunit/regress/regress-crbug-345820.js | 18 - .../mjsunit/regress/regress-crbug-346636.js | 31 - .../mjsunit/regress/regress-crbug-347903.js | 19 - .../mjsunit/regress/regress-crbug-349079.js | 23 - .../mjsunit/regress/regress-crbug-349465.js | 17 - .../mjsunit/regress/regress-crbug-349853.js | 21 - .../mjsunit/regress/regress-crbug-349878.js | 33 - .../mjsunit/regress/regress-crbug-350434.js | 33 - .../mjsunit/regress/regress-crbug-350864.js | 34 - .../mjsunit/regress/regress-crbug-350867.js | 15 - .../mjsunit/regress/regress-crbug-350890.js | 42 - .../mjsunit/regress/regress-crbug-351262.js | 6 - .../mjsunit/regress/regress-crbug-351320.js | 21 - .../mjsunit/regress/regress-crbug-351658.js | 14 - .../mjsunit/regress/regress-crbug-351787.js | 42 - .../mjsunit/regress/regress-crbug-352058.js | 17 - .../mjsunit/regress/regress-crbug-352586.js | 15 - .../mjsunit/regress/regress-crbug-352929.js | 33 - .../mjsunit/regress/regress-crbug-354391.js | 21 - .../mjsunit/regress/regress-crbug-357052.js | 12 - .../mjsunit/regress/regress-crbug-357137.js | 8 - .../mjsunit/regress/regress-crbug-357330.js | 16 - .../mjsunit/regress/regress-crbug-364374.js | 56 - .../mjsunit/regress/regress-crbug-374838.js | 20 - .../v8/mjsunit/regress/regress-crbug-37853.js | 34 - .../mjsunit/regress/regress-crbug-380512.js | 12 - .../mjsunit/regress/regress-crbug-381534.js | 40 - .../mjsunit/regress/regress-crbug-382143.js | 16 - .../mjsunit/regress/regress-crbug-382513.js | 11 - .../mjsunit/regress/regress-crbug-385002.js | 15 - .../v8/mjsunit/regress/regress-crbug-3867.js | 77 - .../mjsunit/regress/regress-crbug-387031.js | 15 - .../mjsunit/regress/regress-crbug-387636.js | 14 - .../mjsunit/regress/regress-crbug-390918.js | 18 - .../v8/mjsunit/regress/regress-crbug-39160.js | 41 - .../mjsunit/regress/regress-crbug-393988.js | 8 - .../mjsunit/regress/regress-crbug-403409.js | 18 - .../mjsunit/regress/regress-crbug-405517.js | 16 - .../mjsunit/regress/regress-crbug-407946.js | 12 - .../v8/mjsunit/regress/regress-crbug-40931.js | 45 - .../mjsunit/regress/regress-crbug-412203.js | 36 - .../mjsunit/regress/regress-crbug-412208.js | 16 - .../mjsunit/regress/regress-crbug-412210.js | 12 - .../mjsunit/regress/regress-crbug-412215.js | 33 - .../mjsunit/regress/regress-crbug-412319.js | 19 - .../mjsunit/regress/regress-crbug-416558.js | 115 - .../mjsunit/regress/regress-crbug-417508.js | 29 - .../mjsunit/regress/regress-crbug-422858.js | 23 - .../mjsunit/regress/regress-crbug-423687.js | 10 - .../mjsunit/regress/regress-crbug-425519.js | 15 - .../mjsunit/regress/regress-crbug-425585.js | 48 - .../mjsunit/regress/regress-crbug-429159.js | 12 - .../mjsunit/regress/regress-crbug-430846.js | 14 - .../mjsunit/regress/regress-crbug-431602.js | 23 - .../mjsunit/regress/regress-crbug-433332.js | 16 - .../mjsunit/regress/regress-crbug-433766.js | 16 - .../mjsunit/regress/regress-crbug-435825.js | 11 - .../mjsunit/regress/regress-crbug-436820.js | 13 - .../mjsunit/regress/regress-crbug-450642.js | 5 - .../mjsunit/regress/regress-crbug-450960.js | 24 - .../mjsunit/regress/regress-crbug-451013.js | 11 - .../mjsunit/regress/regress-crbug-451016.js | 10 - .../mjsunit/regress/regress-crbug-451770.js | 13 - .../mjsunit/regress/regress-crbug-454091.js | 9 - .../mjsunit/regress/regress-crbug-455644.js | 12 - .../mjsunit/regress/regress-crbug-465564.js | 7 - .../mjsunit/regress/regress-crbug-467047.js | 17 - .../mjsunit/regress/regress-crbug-467531.js | 25 - .../mjsunit/regress/regress-crbug-469768.js | 33 - .../mjsunit/regress/regress-crbug-471659.js | 22 - .../mjsunit/regress/regress-crbug-476477-1.js | 21 - .../mjsunit/regress/regress-crbug-476477-2.js | 16 - .../mjsunit/regress/regress-crbug-477924.js | 16 - .../mjsunit/regress/regress-crbug-478011.js | 7 - .../mjsunit/regress/regress-crbug-478612.js | 52 - .../mjsunit/regress/regress-crbug-480807.js | 22 - .../mjsunit/regress/regress-crbug-480819.js | 10 - .../mjsunit/regress/regress-crbug-482998.js | 23 - .../mjsunit/regress/regress-crbug-484077.js | 7 - .../mjsunit/regress/regress-crbug-485410.js | 23 - .../mjsunit/regress/regress-crbug-485548-1.js | 33 - .../mjsunit/regress/regress-crbug-485548-2.js | 33 - .../mjsunit/regress/regress-crbug-487105.js | 9 - .../mjsunit/regress/regress-crbug-487322.js | 25 - .../mjsunit/regress/regress-crbug-487608.js | 22 - .../mjsunit/regress/regress-crbug-489293.js | 16 - .../mjsunit/regress/regress-crbug-489597.js | 12 - .../regress/regress-crbug-489597.js-script | 5 - .../mjsunit/regress/regress-crbug-490021.js | 15 - .../mjsunit/regress/regress-crbug-490680.js | 18 - .../mjsunit/regress/regress-crbug-491062.js | 22 - .../mjsunit/regress/regress-crbug-493284.js | 10 - .../mjsunit/regress/regress-crbug-493290.js | 9 - .../mjsunit/regress/regress-crbug-493779.js | 11 - .../mjsunit/regress/regress-crbug-495493.js | 12 - .../mjsunit/regress/regress-crbug-498022.js | 15 - .../mjsunit/regress/regress-crbug-498811.js | 9 - .../mjsunit/regress/regress-crbug-500435.js | 22 - .../mjsunit/regress/regress-crbug-500497.js | 36 - .../mjsunit/regress/regress-crbug-500824.js | 23 - .../mjsunit/regress/regress-crbug-501711.js | 18 - .../mjsunit/regress/regress-crbug-501808.js | 6 - .../mjsunit/regress/regress-crbug-501809.js | 11 - .../mjsunit/regress/regress-crbug-502930.js | 27 - .../mjsunit/regress/regress-crbug-503578.js | 14 - .../mjsunit/regress/regress-crbug-503698.js | 9 - .../mjsunit/regress/regress-crbug-503968.js | 13 - .../mjsunit/regress/regress-crbug-503991.js | 9 - .../mjsunit/regress/regress-crbug-504136.js | 9 - .../mjsunit/regress/regress-crbug-504727.js | 9 - .../mjsunit/regress/regress-crbug-504729.js | 9 - .../mjsunit/regress/regress-crbug-504787.js | 13 - .../mjsunit/regress/regress-crbug-505354.js | 14 - .../mjsunit/regress/regress-crbug-505370.js | 22 - .../mjsunit/regress/regress-crbug-505778.js | 8 - .../mjsunit/regress/regress-crbug-505907.js | 12 - .../mjsunit/regress/regress-crbug-506549.js | 10 - .../mjsunit/regress/regress-crbug-506956.js | 12 - .../mjsunit/regress/regress-crbug-510426.js | 7 - .../mjsunit/regress/regress-crbug-510738.js | 17 - .../mjsunit/regress/regress-crbug-511880.js | 13 - .../mjsunit/regress/regress-crbug-513471.js | 10 - .../mjsunit/regress/regress-crbug-513472.js | 7 - .../mjsunit/regress/regress-crbug-513507.js | 24 - .../mjsunit/regress/regress-crbug-513602.js | 26 - .../mjsunit/regress/regress-crbug-514081.js | 18 - .../mjsunit/regress/regress-crbug-515897.js | 9 - .../mjsunit/regress/regress-crbug-516592.js | 18 - .../mjsunit/regress/regress-crbug-516775.js | 53 - .../mjsunit/regress/regress-crbug-518747.js | 9 - .../mjsunit/regress/regress-crbug-522380.js | 7 - .../mjsunit/regress/regress-crbug-522496.js | 9 - .../mjsunit/regress/regress-crbug-522895.js | 22 - .../mjsunit/regress/regress-crbug-523213.js | 21 - .../mjsunit/regress/regress-crbug-523307.js | 16 - .../mjsunit/regress/regress-crbug-523308.js | 9 - .../mjsunit/regress/regress-crbug-523919.js | 31 - .../mjsunit/regress/regress-crbug-527364.js | 26 - .../mjsunit/regress/regress-crbug-528379.js | 8 - .../mjsunit/regress/regress-crbug-530598.js | 25 - .../mjsunit/regress/regress-crbug-537444.js | 26 - .../mjsunit/regress/regress-crbug-538086.js | 6 - .../mjsunit/regress/regress-crbug-542101.js | 10 - .../mjsunit/regress/regress-crbug-545364.js | 11 - .../mjsunit/regress/regress-crbug-548580.js | 15 - .../mjsunit/regress/regress-crbug-549162.js | 11 - .../mjsunit/regress/regress-crbug-551287.js | 17 - .../mjsunit/regress/regress-crbug-552304.js | 11 - .../mjsunit/regress/regress-crbug-554831.js | 15 - .../mjsunit/regress/regress-crbug-554946.js | 61 - .../mjsunit/regress/regress-crbug-557807.js | 11 - .../mjsunit/regress/regress-crbug-561973.js | 7 - .../mjsunit/regress/regress-crbug-563929.js | 31 - .../mjsunit/regress/regress-crbug-565917.js | 7 - .../mjsunit/regress/regress-crbug-568525.js | 7 - .../mjsunit/regress/regress-crbug-569534.js | 7 - .../mjsunit/regress/regress-crbug-570241.js | 5 - .../mjsunit/regress/regress-crbug-571064.js | 19 - .../mjsunit/regress/regress-crbug-571370.js | 10 - .../mjsunit/regress/regress-crbug-571517.js | 39 - .../mjsunit/regress/regress-crbug-572590.js | 10 - .../mjsunit/regress/regress-crbug-573857.js | 13 - .../mjsunit/regress/regress-crbug-573858.js | 16 - .../mjsunit/regress/regress-crbug-575080.js | 16 - .../mjsunit/regress/regress-crbug-575082.js | 5 - .../mjsunit/regress/regress-crbug-575314.js | 15 - .../mjsunit/regress/regress-crbug-577112.js | 15 - ...578039-Proxy_construct_prototype_change.js | 14 - .../mjsunit/regress/regress-crbug-580506.js | 22 - .../mjsunit/regress/regress-crbug-580584.js | 19 - .../mjsunit/regress/regress-crbug-580934.js | 16 - .../mjsunit/regress/regress-crbug-581577.js | 5 - .../mjsunit/regress/regress-crbug-583257.js | 27 - .../mjsunit/regress/regress-crbug-584188.js | 10 - .../mjsunit/regress/regress-crbug-587068.js | 14 - .../mjsunit/regress/regress-crbug-589472.js | 94 - .../mjsunit/regress/regress-crbug-589792.js | 20 - .../mjsunit/regress/regress-crbug-590989-1.js | 18 - .../mjsunit/regress/regress-crbug-590989-2.js | 12 - .../mjsunit/regress/regress-crbug-592340.js | 13 - .../mjsunit/regress/regress-crbug-592343.js | 12 - .../mjsunit/regress/regress-crbug-593282.js | 38 - .../mjsunit/regress/regress-crbug-593697-2.js | 16 - .../mjsunit/regress/regress-crbug-594183.js | 86 - .../regress-crbug-594574-concat-leak-1.js | 36 - .../regress-crbug-594574-concat-leak-2.js | 35 - .../mjsunit/regress/regress-crbug-594955.js | 11 - .../mjsunit/regress/regress-crbug-595615.js | 15 - .../mjsunit/regress/regress-crbug-595657.js | 15 - .../mjsunit/regress/regress-crbug-595738.js | 7 - .../mjsunit/regress/regress-crbug-596394.js | 13 - .../mjsunit/regress/regress-crbug-598998.js | 30 - .../mjsunit/regress/regress-crbug-599003.js | 39 - .../mjsunit/regress/regress-crbug-599067.js | 11 - .../mjsunit/regress/regress-crbug-599073-1.js | 11 - .../mjsunit/regress/regress-crbug-599073-2.js | 11 - .../mjsunit/regress/regress-crbug-599073-3.js | 11 - .../mjsunit/regress/regress-crbug-599073-4.js | 11 - .../mjsunit/regress/regress-crbug-599714.js | 13 - .../mjsunit/regress/regress-crbug-600257.js | 13 - .../mjsunit/regress/regress-crbug-601617.js | 32 - .../mjsunit/regress/regress-crbug-602184.js | 17 - .../mjsunit/regress/regress-crbug-602595.js | 12 - .../mjsunit/regress/regress-crbug-603463.js | 16 - .../mjsunit/regress/regress-crbug-604299.js | 9 - .../mjsunit/regress/regress-crbug-604680.js | 45 - .../mjsunit/regress/regress-crbug-605060.js | 10 - .../mjsunit/regress/regress-crbug-605862.js | 6 - .../mjsunit/regress/regress-crbug-608278.js | 61 - .../mjsunit/regress/regress-crbug-608279.js | 18 - .../mjsunit/regress/regress-crbug-609029.js | 7 - .../mjsunit/regress/regress-crbug-610207.js | 13 - .../mjsunit/regress/regress-crbug-612109.js | 8 - .../mjsunit/regress/regress-crbug-612142.js | 10 - .../mjsunit/regress/regress-crbug-613494.js | 14 - .../mjsunit/regress/regress-crbug-613570.js | 6 - .../mjsunit/regress/regress-crbug-613905.js | 11 - .../mjsunit/regress/regress-crbug-613919.js | 18 - .../mjsunit/regress/regress-crbug-614292.js | 14 - .../mjsunit/regress/regress-crbug-614644.js | 15 - .../mjsunit/regress/regress-crbug-614727.js | 23 - .../mjsunit/regress/regress-crbug-615774.js | 11 - .../mjsunit/regress/regress-crbug-616709-1.js | 21 - .../mjsunit/regress/regress-crbug-616709-2.js | 21 - .../mjsunit/regress/regress-crbug-617524.js | 18 - .../mjsunit/regress/regress-crbug-617527.js | 8 - .../mjsunit/regress/regress-crbug-617567.js | 24 - .../mjsunit/regress/regress-crbug-618788.js | 21 - .../mjsunit/regress/regress-crbug-618845.js | 16 - .../mjsunit/regress/regress-crbug-619476.js | 7 - .../mjsunit/regress/regress-crbug-620119.js | 8 - .../mjsunit/regress/regress-crbug-620253.js | 7 - .../mjsunit/regress/regress-crbug-620650.js | 16 - .../mjsunit/regress/regress-crbug-621611.js | 11 - .../mjsunit/regress/regress-crbug-621816.js | 18 - .../mjsunit/regress/regress-crbug-621868.js | 20 - .../mjsunit/regress/regress-crbug-624747.js | 22 - .../mjsunit/regress/regress-crbug-624919.js | 14 - .../mjsunit/regress/regress-crbug-625547.js | 21 - .../mjsunit/regress/regress-crbug-625590.js | 12 - .../mjsunit/regress/regress-crbug-626715.js | 28 - .../mjsunit/regress/regress-crbug-627828.js | 71 - .../mjsunit/regress/regress-crbug-627934.js | 12 - .../mjsunit/regress/regress-crbug-627935.js | 12 - .../mjsunit/regress/regress-crbug-628573.js | 17 - .../mjsunit/regress/regress-crbug-629062.js | 14 - .../mjsunit/regress/regress-crbug-629435.js | 19 - .../mjsunit/regress/regress-crbug-629823.js | 17 - .../mjsunit/regress/regress-crbug-630559.js | 7 - .../mjsunit/regress/regress-crbug-630561.js | 13 - .../mjsunit/regress/regress-crbug-630923.js | 16 - .../mjsunit/regress/regress-crbug-630951.js | 12 - .../mjsunit/regress/regress-crbug-630952.js | 25 - .../mjsunit/regress/regress-crbug-631027.js | 12 - .../mjsunit/regress/regress-crbug-631318-1.js | 14 - .../regress/regress-crbug-631318-10.js | 14 - .../regress/regress-crbug-631318-11.js | 14 - .../regress/regress-crbug-631318-12.js | 14 - .../regress/regress-crbug-631318-13.js | 14 - .../regress/regress-crbug-631318-14.js | 14 - .../regress/regress-crbug-631318-15.js | 14 - .../mjsunit/regress/regress-crbug-631318-2.js | 14 - .../mjsunit/regress/regress-crbug-631318-3.js | 14 - .../mjsunit/regress/regress-crbug-631318-4.js | 14 - .../mjsunit/regress/regress-crbug-631318-5.js | 14 - .../mjsunit/regress/regress-crbug-631318-6.js | 14 - .../mjsunit/regress/regress-crbug-631318-7.js | 14 - .../mjsunit/regress/regress-crbug-631318-8.js | 14 - .../mjsunit/regress/regress-crbug-631318-9.js | 14 - .../mjsunit/regress/regress-crbug-631917.js | 38 - .../mjsunit/regress/regress-crbug-632800.js | 10 - .../mjsunit/regress/regress-crbug-633585.js | 18 - .../mjsunit/regress/regress-crbug-633884.js | 15 - .../mjsunit/regress/regress-crbug-635798.js | 15 - .../mjsunit/regress/regress-crbug-635923.js | 21 - .../mjsunit/regress/regress-crbug-638551.js | 18 - .../mjsunit/regress/regress-crbug-640369.js | 15 - .../mjsunit/regress/regress-crbug-640497.js | 19 - .../mjsunit/regress/regress-crbug-642056.js | 17 - .../mjsunit/regress/regress-crbug-643073.js | 13 - .../mjsunit/regress/regress-crbug-644111.js | 11 - .../mjsunit/regress/regress-crbug-644215.js | 13 - .../mjsunit/regress/regress-crbug-644245.js | 18 - .../mjsunit/regress/regress-crbug-644631.js | 13 - .../mjsunit/regress/regress-crbug-644689-1.js | 14 - .../mjsunit/regress/regress-crbug-644689-2.js | 14 - .../mjsunit/regress/regress-crbug-645103.js | 17 - .../mjsunit/regress/regress-crbug-645438.js | 16 - .../mjsunit/regress/regress-crbug-645888.js | 18 - .../mjsunit/regress/regress-crbug-647217.js | 12 - .../mjsunit/regress/regress-crbug-647887.js | 14 - .../mjsunit/regress/regress-crbug-648539.js | 17 - .../mjsunit/regress/regress-crbug-648737.js | 24 - .../mjsunit/regress/regress-crbug-648740.js | 9 - .../mjsunit/regress/regress-crbug-650404.js | 36 - .../mjsunit/regress/regress-crbug-650933.js | 8 - .../mjsunit/regress/regress-crbug-650973.js | 18 - .../regress/regress-crbug-651403-global.js | 20 - .../mjsunit/regress/regress-crbug-651403.js | 19 - .../regress/regress-crbug-652186-global.js | 8 - .../regress/regress-crbug-652186-local.js | 11 - .../mjsunit/regress/regress-crbug-654723.js | 16 - .../mjsunit/regress/regress-crbug-655004.js | 15 - .../mjsunit/regress/regress-crbug-656037.js | 15 - .../mjsunit/regress/regress-crbug-656275.js | 14 - .../mjsunit/regress/regress-crbug-657478.js | 13 - .../mjsunit/regress/regress-crbug-658185.js | 20 - .../mjsunit/regress/regress-crbug-658528.js | 10 - .../mjsunit/regress/regress-crbug-658691.js | 24 - .../mjsunit/regress/regress-crbug-659475-1.js | 30 - .../mjsunit/regress/regress-crbug-659475-2.js | 31 - .../mjsunit/regress/regress-crbug-659915a.js | 24 - .../mjsunit/regress/regress-crbug-659915b.js | 20 - .../mjsunit/regress/regress-crbug-659967.js | 8 - .../mjsunit/regress/regress-crbug-660379.js | 42 - .../mjsunit/regress/regress-crbug-661949.js | 15 - .../mjsunit/regress/regress-crbug-662367.js | 37 - .../mjsunit/regress/regress-crbug-662410.js | 21 - .../mjsunit/regress/regress-crbug-662830.js | 19 - .../mjsunit/regress/regress-crbug-662854.js | 10 - .../mjsunit/regress/regress-crbug-662907.js | 53 - .../mjsunit/regress/regress-crbug-663340.js | 32 - .../mjsunit/regress/regress-crbug-663402.js | 40 - .../mjsunit/regress/regress-crbug-663410.js | 8 - .../mjsunit/regress/regress-crbug-663750.js | 26 - .../mjsunit/regress/regress-crbug-664084.js | 14 - .../mjsunit/regress/regress-crbug-664469.js | 21 - .../mjsunit/regress/regress-crbug-664506.js | 11 - .../mjsunit/regress/regress-crbug-664802.js | 10 - .../mjsunit/regress/regress-crbug-664942.js | 12 - .../mjsunit/regress/regress-crbug-664974.js | 13 - .../mjsunit/regress/regress-crbug-665587.js | 16 - .../mjsunit/regress/regress-crbug-665793.js | 12 - .../mjsunit/regress/regress-crbug-665886.js | 14 - .../mjsunit/regress/regress-crbug-666308.js | 9 - .../mjsunit/regress/regress-crbug-666742.js | 15 - .../mjsunit/regress/regress-crbug-667689.js | 16 - .../mjsunit/regress/regress-crbug-668101.js | 21 - .../mjsunit/regress/regress-crbug-668414.js | 58 - .../mjsunit/regress/regress-crbug-668795.js | 21 - .../mjsunit/regress/regress-crbug-669411.js | 11 - .../mjsunit/regress/regress-crbug-669451.js | 15 - .../mjsunit/regress/regress-crbug-669540.js | 15 - .../mjsunit/regress/regress-crbug-669850.js | 11 - .../mjsunit/regress/regress-crbug-671576.js | 13 - .../mjsunit/regress/regress-crbug-672792.js | 18 - .../mjsunit/regress/regress-crbug-673008.js | 23 - .../mjsunit/regress/regress-crbug-677757.js | 7 - .../mjsunit/regress/regress-crbug-679202.js | 14 - .../mjsunit/regress/regress-crbug-679378.js | 19 - .../mjsunit/regress/regress-crbug-679841.js | 5 - .../mjsunit/regress/regress-crbug-681983.js | 18 - .../mjsunit/regress/regress-crbug-682194.js | 35 - .../mjsunit/regress/regress-crbug-683581.js | 13 - .../mjsunit/regress/regress-crbug-683667.js | 14 - .../mjsunit/regress/regress-crbug-684208.js | 15 - .../mjsunit/regress/regress-crbug-685050.js | 19 - .../mjsunit/regress/regress-crbug-685504.js | 18 - .../mjsunit/regress/regress-crbug-685506.js | 26 - .../mjsunit/regress/regress-crbug-685634.js | 14 - .../mjsunit/regress/regress-crbug-685680.js | 15 - .../mjsunit/regress/regress-crbug-685965.js | 13 - .../mjsunit/regress/regress-crbug-686102.js | 15 - .../mjsunit/regress/regress-crbug-686427.js | 15 - .../mjsunit/regress/regress-crbug-686737.js | 13 - .../mjsunit/regress/regress-crbug-687029.js | 14 - .../mjsunit/regress/regress-crbug-687063.js | 31 - .../mjsunit/regress/regress-crbug-687990.js | 16 - .../mjsunit/regress/regress-crbug-688567.js | 36 - .../mjsunit/regress/regress-crbug-688734.js | 16 - .../mjsunit/regress/regress-crbug-691323.js | 35 - .../mjsunit/regress/regress-crbug-691687.js | 10 - .../mjsunit/regress/regress-crbug-694416.js | 17 - .../mjsunit/regress/regress-crbug-694709.js | 13 - .../mjsunit/regress/regress-crbug-696622.js | 14 - .../mjsunit/regress/regress-crbug-697017.js | 8 - .../mjsunit/regress/regress-crbug-698607.js | 22 - .../mjsunit/regress/regress-crbug-699282.js | 11 - .../mjsunit/regress/regress-crbug-700678.js | 20 - .../mjsunit/regress/regress-crbug-700733.js | 66 - .../mjsunit/regress/regress-crbug-702058-1.js | 10 - .../mjsunit/regress/regress-crbug-702058-2.js | 10 - .../mjsunit/regress/regress-crbug-702058-3.js | 10 - .../mjsunit/regress/regress-crbug-702793.js | 19 - .../mjsunit/regress/regress-crbug-702798.js | 8 - .../mjsunit/regress/regress-crbug-703610.js | 16 - .../mjsunit/regress/regress-crbug-706642.js | 37 - .../mjsunit/regress/regress-crbug-707580.js | 10 - .../mjsunit/regress/regress-crbug-708050-1.js | 17 - .../mjsunit/regress/regress-crbug-708050-2.js | 17 - .../mjsunit/regress/regress-crbug-709537.js | 14 - .../mjsunit/regress/regress-crbug-709753.js | 13 - .../mjsunit/regress/regress-crbug-711166.js | 22 - .../mjsunit/regress/regress-crbug-712802.js | 12 - .../mjsunit/regress/regress-crbug-714696.js | 10 - .../mjsunit/regress/regress-crbug-714872.js | 8 - .../mjsunit/regress/regress-crbug-714971.js | 19 - .../mjsunit/regress/regress-crbug-714981.js | 32 - .../mjsunit/regress/regress-crbug-715151.js | 15 - .../mjsunit/regress/regress-crbug-715404.js | 11 - .../mjsunit/regress/regress-crbug-715455.js | 25 - .../mjsunit/regress/regress-crbug-715862.js | 17 - .../mjsunit/regress/regress-crbug-716520.js | 21 - .../mjsunit/regress/regress-crbug-716804.js | 13 - .../mjsunit/regress/regress-crbug-716912.js | 23 - .../mjsunit/regress/regress-crbug-718779.js | 21 - .../mjsunit/regress/regress-crbug-719384.js | 34 - .../mjsunit/regress/regress-crbug-719479.js | 24 - .../mjsunit/regress/regress-crbug-721835.js | 31 - .../mjsunit/regress/regress-crbug-722348.js | 14 - .../mjsunit/regress/regress-crbug-722756.js | 40 - .../mjsunit/regress/regress-crbug-722783.js | 21 - .../mjsunit/regress/regress-crbug-722871.js | 113 - .../mjsunit/regress/regress-crbug-723132.js | 16 - .../mjsunit/regress/regress-crbug-723455.js | 18 - .../mjsunit/regress/regress-crbug-724153.js | 18 - .../mjsunit/regress/regress-crbug-724608.js | 13 - .../mjsunit/regress/regress-crbug-725201.js | 20 - .../mjsunit/regress/regress-crbug-725537.js | 10 - .../v8/mjsunit/regress/regress-crbug-72736.js | 37 - .../mjsunit/regress/regress-crbug-728813.js | 9 - .../mjsunit/regress/regress-crbug-729573-1.js | 67 - .../mjsunit/regress/regress-crbug-729573-2.js | 23 - .../mjsunit/regress/regress-crbug-729597.js | 18 - .../mjsunit/regress/regress-crbug-731193.js | 27 - .../mjsunit/regress/regress-crbug-732169.js | 29 - .../mjsunit/regress/regress-crbug-734051.js | 15 - .../mjsunit/regress/regress-crbug-734162.js | 48 - .../mjsunit/regress/regress-crbug-736451.js | 13 - .../mjsunit/regress/regress-crbug-736575.js | 14 - .../mjsunit/regress/regress-crbug-736633.js | 21 - .../mjsunit/regress/regress-crbug-737645.js | 23 - .../mjsunit/regress/regress-crbug-738763.js | 25 - .../mjsunit/regress/regress-crbug-740116.js | 29 - .../mjsunit/regress/regress-crbug-740398.js | 13 - .../mjsunit/regress/regress-crbug-740591.js | 69 - .../mjsunit/regress/regress-crbug-740803.js | 19 - .../mjsunit/regress/regress-crbug-741078.js | 19 - .../mjsunit/regress/regress-crbug-743154.js | 24 - .../mjsunit/regress/regress-crbug-746835.js | 112 - .../mjsunit/regress/regress-crbug-747062.js | 53 - .../mjsunit/regress/regress-crbug-747979.js | 32 - .../mjsunit/regress/regress-crbug-748539.js | 22 - .../mjsunit/regress/regress-crbug-751109.js | 7 - .../mjsunit/regress/regress-crbug-751715.js | 16 - .../mjsunit/regress/regress-crbug-752481.js | 32 - .../mjsunit/regress/regress-crbug-752712.js | 24 - .../mjsunit/regress/regress-crbug-752826.js | 22 - .../mjsunit/regress/regress-crbug-752846.js | 21 - .../mjsunit/regress/regress-crbug-754175.js | 19 - .../mjsunit/regress/regress-crbug-754177.js | 12 - .../mjsunit/regress/regress-crbug-755044.js | 15 - .../mjsunit/regress/regress-crbug-756332.js | 13 - .../mjsunit/regress/regress-crbug-757199.js | 31 - .../mjsunit/regress/regress-crbug-758773.js | 6 - .../mjsunit/regress/regress-crbug-759327.js | 23 - .../mjsunit/regress/regress-crbug-762472.js | 26 - .../mjsunit/regress/regress-crbug-762874-1.js | 18 - .../mjsunit/regress/regress-crbug-762874-2.js | 18 - .../mjsunit/regress/regress-crbug-763683.js | 22 - .../mjsunit/regress/regress-crbug-764219.js | 35 - .../mjsunit/regress/regress-crbug-766635.js | 32 - .../mjsunit/regress/regress-crbug-768080.js | 64 - .../mjsunit/regress/regress-crbug-768158.js | 23 - .../mjsunit/regress/regress-crbug-768367.js | 14 - .../mjsunit/regress/regress-crbug-768875.js | 28 - .../mjsunit/regress/regress-crbug-769852.js | 14 - .../mjsunit/regress/regress-crbug-770543.js | 31 - .../mjsunit/regress/regress-crbug-770581.js | 22 - .../mjsunit/regress/regress-crbug-771428.js | 24 - .../mjsunit/regress/regress-crbug-771971.js | 12 - .../mjsunit/regress/regress-crbug-772056.js | 16 - .../mjsunit/regress/regress-crbug-772610.js | 18 - .../mjsunit/regress/regress-crbug-772672.js | 11 - .../mjsunit/regress/regress-crbug-772689.js | 23 - .../mjsunit/regress/regress-crbug-772720.js | 15 - .../mjsunit/regress/regress-crbug-772897.js | 20 - .../mjsunit/regress/regress-crbug-774459.js | 20 - .../mjsunit/regress/regress-crbug-774860.js | 15 - .../mjsunit/regress/regress-crbug-774994.js | 34 - .../mjsunit/regress/regress-crbug-776511.js | 35 - .../mjsunit/regress/regress-crbug-778952.js | 9 - .../mjsunit/regress/regress-crbug-779344.js | 8 - .../mjsunit/regress/regress-crbug-779367.js | 17 - .../mjsunit/regress/regress-crbug-779457.js | 27 - .../mjsunit/regress/regress-crbug-781116-1.js | 22 - .../mjsunit/regress/regress-crbug-781116-2.js | 22 - .../mjsunit/regress/regress-crbug-781506-1.js | 12 - .../mjsunit/regress/regress-crbug-781506-2.js | 13 - .../mjsunit/regress/regress-crbug-781506-3.js | 13 - .../mjsunit/regress/regress-crbug-781583.js | 25 - .../mjsunit/regress/regress-crbug-783132.js | 15 - .../mjsunit/regress/regress-crbug-783902.js | 11 - .../mjsunit/regress/regress-crbug-784835.js | 13 - .../mjsunit/regress/regress-crbug-786020.js | 8 - .../mjsunit/regress/regress-crbug-786723.js | 19 - .../mjsunit/regress/regress-crbug-789764.js | 15 - .../v8/mjsunit/regress/regress-crbug-7907.js | 9 - .../mjsunit/regress/regress-crbug-791245-1.js | 18 - .../mjsunit/regress/regress-crbug-791245-2.js | 18 - .../mjsunit/regress/regress-crbug-791256.js | 12 - .../mjsunit/regress/regress-crbug-795922.js | 9 - .../mjsunit/regress/regress-crbug-798026.js | 14 - .../mjsunit/regress/regress-crbug-798644.js | 21 - .../mjsunit/regress/regress-crbug-800032.js | 19 - .../mjsunit/regress/regress-crbug-800077.js | 6 - .../mjsunit/regress/regress-crbug-800810.js | 13 - .../mjsunit/regress/regress-crbug-801627.js | 24 - .../mjsunit/regress/regress-crbug-802333.js | 26 - .../mjsunit/regress/regress-crbug-805765.js | 13 - .../mjsunit/regress/regress-crbug-806200.js | 7 - .../mjsunit/regress/regress-crbug-806388.js | 17 - .../mjsunit/regress/regress-crbug-807096.js | 29 - .../mjsunit/regress/regress-crbug-808192.js | 31 - .../mjsunit/regress/regress-crbug-813427.js | 49 - .../mjsunit/regress/regress-crbug-813450.js | 23 - .../mjsunit/regress/regress-crbug-813630.js | 22 - .../mjsunit/regress/regress-crbug-816961.js | 18 - .../mjsunit/regress/regress-crbug-819086.js | 14 - .../mjsunit/regress/regress-crbug-819298.js | 17 - .../mjsunit/regress/regress-crbug-820312.js | 26 - .../mjsunit/regress/regress-crbug-820820.js | 23 - .../mjsunit/regress/regress-crbug-821159-1.js | 8 - .../mjsunit/regress/regress-crbug-821159-2.js | 8 - .../mjsunit/regress/regress-crbug-821159-3.js | 8 - .../mjsunit/regress/regress-crbug-821159-4.js | 8 - .../mjsunit/regress/regress-crbug-822284.js | 22 - .../mjsunit/regress/regress-crbug-823069.js | 8 - .../mjsunit/regress/regress-crbug-823130.js | 40 - .../mjsunit/regress/regress-crbug-825045.js | 14 - .../mjsunit/regress/regress-crbug-827013.js | 19 - .../mjsunit/regress/regress-crbug-830565.js | 19 - .../mjsunit/regress/regress-crbug-831943.js | 14 - .../mjsunit/regress/regress-crbug-831984.js | 10 - .../mjsunit/regress/regress-crbug-840220.js | 12 - .../mjsunit/regress/regress-crbug-841592.js | 21 - .../mjsunit/regress/regress-crbug-843022.js | 21 - .../mjsunit/regress/regress-crbug-848165.js | 9 - .../mjsunit/regress/regress-crbug-849024.js | 43 - .../mjsunit/regress/regress-crbug-850005.js | 11 - .../mjsunit/regress/regress-crbug-851393.js | 7 - .../mjsunit/regress/regress-crbug-852592.js | 25 - .../mjsunit/regress/regress-crbug-854299.js | 27 - .../mjsunit/regress/regress-crbug-856095.js | 14 - .../mjsunit/regress/regress-crbug-859809.js | 21 - .../mjsunit/regress/regress-crbug-860788.js | 30 - .../mjsunit/regress/regress-crbug-862538.js | 13 - .../mjsunit/regress/regress-crbug-865312.js | 34 - .../mjsunit/regress/regress-crbug-865892.js | 20 - .../mjsunit/regress/regress-crbug-866315.js | 12 - .../mjsunit/regress/regress-crbug-867776.js | 22 - .../mjsunit/regress/regress-crbug-869313.js | 15 - .../mjsunit/regress/regress-crbug-871886.js | 11 - .../v8/mjsunit/regress/regress-crbug-87478.js | 36 - .../mjsunit/regress/regress-crbug-876443.js | 9 - .../mjsunit/regress/regress-crbug-878845.js | 11 - .../mjsunit/regress/regress-crbug-879560.js | 14 - .../mjsunit/regress/regress-crbug-879898.js | 12 - .../mjsunit/regress/regress-crbug-880207.js | 37 - .../mjsunit/regress/regress-crbug-881247.js | 24 - .../mjsunit/regress/regress-crbug-882233-1.js | 17 - .../mjsunit/regress/regress-crbug-882233-2.js | 32 - .../mjsunit/regress/regress-crbug-884933.js | 85 - .../mjsunit/regress/regress-crbug-885404.js | 11 - .../mjsunit/regress/regress-crbug-887891.js | 10 - .../mjsunit/regress/regress-crbug-888825.js | 5 - .../mjsunit/regress/regress-crbug-890243.js | 27 - .../mjsunit/regress/regress-crbug-891627.js | 43 - .../mjsunit/regress/regress-crbug-892472-1.js | 9 - .../mjsunit/regress/regress-crbug-892472-2.js | 7 - .../mjsunit/regress/regress-crbug-895199.js | 17 - .../mjsunit/regress/regress-crbug-896181.js | 14 - .../mjsunit/regress/regress-crbug-896700.js | 10 - .../mjsunit/regress/regress-crbug-897098.js | 8 - .../mjsunit/regress/regress-crbug-897404.js | 16 - .../mjsunit/regress/regress-crbug-897406.js | 14 - .../mjsunit/regress/regress-crbug-897514.js | 26 - .../mjsunit/regress/regress-crbug-898785.js | 11 - .../mjsunit/regress/regress-crbug-898974.js | 34 - .../mjsunit/regress/regress-crbug-899464.js | 7 - .../mjsunit/regress/regress-crbug-899524.js | 33 - .../mjsunit/regress/regress-crbug-899535.js | 6 - .../mjsunit/regress/regress-crbug-900674.js | 12 - .../mjsunit/regress/regress-crbug-902395.js | 37 - .../mjsunit/regress/regress-crbug-902610.js | 11 - .../mjsunit/regress/regress-crbug-902672.js | 8 - .../mjsunit/regress/regress-crbug-903043.js | 39 - .../mjsunit/regress/regress-crbug-905457.js | 49 - .../mjsunit/regress/regress-crbug-906043.js | 33 - .../mjsunit/regress/regress-crbug-906220.js | 12 - .../mjsunit/regress/regress-crbug-906870.js | 49 - .../v8/mjsunit/regress/regress-crbug-90771.js | 15 - .../mjsunit/regress/regress-crbug-908309.js | 27 - .../mjsunit/regress/regress-crbug-909614.js | 9 - .../mjsunit/regress/regress-crbug-911416.js | 5 - .../mjsunit/regress/regress-crbug-913212.js | 11 - .../mjsunit/regress/regress-crbug-913296.js | 13 - .../mjsunit/regress/regress-crbug-915783.js | 35 - .../mjsunit/regress/regress-crbug-916288.js | 5 - .../mjsunit/regress/regress-crbug-917076.js | 20 - .../mjsunit/regress/regress-crbug-917980.js | 33 - .../mjsunit/regress/regress-crbug-920184.js | 14 - .../mjsunit/regress/regress-crbug-923264.js | 27 - .../mjsunit/regress/regress-crbug-923265.js | 9 - .../mjsunit/regress/regress-crbug-923705.js | 15 - .../mjsunit/regress/regress-crbug-926819.js | 5 - .../mjsunit/regress/regress-crbug-926856.js | 18 - .../regress/regress-create-exception.js | 59 - .../v8/mjsunit/regress/regress-deep-proto.js | 51 - .../regress/regress-delete-empty-double.js | 40 - .../v8/mjsunit/regress/regress-deopt-gc.js | 49 - .../v8/mjsunit/regress/regress-deopt-gcb.js | 49 - .../regress-deopt-in-array-literal-spread.js | 12 - .../regress/regress-deopt-store-effect.js | 82 - .../regress-deoptimize-constant-keyed-load.js | 22 - .../regress-dictionary-to-fast-arguments.js | 11 - .../v8/mjsunit/regress/regress-directive.js | 10 - .../regress-double-canonicalization.js | 24 - .../regress/regress-double-property.js | 9 - .../regress/regress-embedded-cons-string.js | 70 - .../regress-empty-fixed-double-array.js | 15 - .../regress/regress-ensure-initial-map.js | 22 - .../regress-enum-prop-keys-cache-size.js | 19 - ...ress-escape-preserve-smi-representation.js | 34 - .../regress/regress-et-clobbers-doubles.js | 39 - .../v8/mjsunit/regress/regress-eval-cache.js | 19 - .../mjsunit/regress/regress-eval-context.js | 20 - .../regress-existing-shared-function-info.js | 18 - .../regress/regress-fast-empty-string.js | 13 - .../regress-fast-literal-transition.js | 62 - .../regress/regress-filter-contexts.js | 14 - .../regress-force-constant-representation.js | 18 - .../regress/regress-force-representation.js | 22 - .../mjsunit/regress/regress-freeze-setter.js | 7 - .../v8/mjsunit/regress/regress-freeze.js | 46 - .../regress/regress-function-length-strict.js | 41 - .../v8/mjsunit/regress/regress-fundecl.js | 44 - .../v8/mjsunit/regress/regress-grow-deopt.js | 16 - .../regress/regress-grow-store-smi-check.js | 53 - .../v8/mjsunit/regress/regress-gvn-ftt.js | 27 - .../regress/regress-hoist-load-named-field.js | 66 - .../regress-indirect-push-unchecked.js | 20 - .../regress-inline-arrow-as-construct.js | 19 - .../regress-inline-class-constructor.js | 28 - .../regress/regress-inline-constant-load.js | 27 - .../regress-inline-getter-near-stack-limit.js | 24 - ...gress-inlining-function-literal-context.js | 53 - .../regress/regress-int32-truncation.js | 61 - .../regress-integer-indexed-element.js | 12 - .../mjsunit/regress/regress-is-contextual.js | 41 - .../v8/mjsunit/regress/regress-is-smi-repr.js | 18 - .../regress/regress-iteration-order.js | 42 - .../regress/regress-json-parse-index.js | 6 - .../regress/regress-json-stringify-gc.js | 51 - .../regress-keyed-access-string-length.js | 37 - .../regress/regress-keyed-store-global.js | 12 - ...egress-keyed-store-non-strict-arguments.js | 16 - .../v8/mjsunit/regress/regress-latin-1.js | 91 - .../regress/regress-lazy-deopt-inlining.js | 24 - .../regress/regress-lazy-deopt-inlining2.js | 24 - .../regress/regress-lazy-deopt-reloc.js | 52 - .../mjsunit/regress/regress-lea-matching.js | 14 - .../mjsunit/regress/regress-load-elements.js | 49 - .../regress/regress-load-field-by-index.js | 22 - ...ess-loop-var-assign-without-block-scope.js | 14 - .../regress/regress-map-invalidation-1.js | 47 - .../regress/regress-map-invalidation-2.js | 54 - .../regress/regress-mask-array-length.js | 10 - .../regress/regress-merge-descriptors.js | 92 - .../regress/regress-migrate-callbacks.js | 11 - .../regress/regress-mul-canoverflow.js | 45 - .../regress/regress-mul-canoverflowb.js | 45 - ...gress-no-dummy-use-for-arguments-object.js | 21 - .../v8/mjsunit/regress/regress-ntl.js | 41 - .../regress-object-assign-deprecated-2.js | 8 - .../regress-object-assign-deprecated.js | 7 - .../v8/mjsunit/regress/regress-omit-checks.js | 55 - .../regress/regress-opt-typeof-null.js | 12 - .../v8/mjsunit/regress/regress-osr-context.js | 20 - .../regress/regress-param-local-type.js | 58 - .../regress/regress-parse-use-strict.js | 42 - .../v8/mjsunit/regress/regress-parseint.js | 18 - .../mjsunit/regress/regress-phi-truncation.js | 89 - .../regress/regress-polymorphic-load.js | 43 - .../regress/regress-polymorphic-store.js | 48 - ...reparse-inner-arrow-duplicate-parameter.js | 5 - .../regress/regress-private-enumerable.js | 31 - .../regress/regress-push-args-twice.js | 37 - .../regress-put-prototype-transition.js | 49 - .../v8/mjsunit/regress/regress-r3391.js | 77 - .../v8/mjsunit/regress/regress-r4998.js | 92 - .../regress-recurse-patch-binary-op.js | 10 - .../regress/regress-refreeze-same-map.js | 40 - .../regress/regress-regexp-codeflush.js | 55 - .../regress-regexp-construct-result.js | 45 - .../mjsunit/regress/regress-regexp-nocase.js | 30 - .../regress-reset-dictionary-elements.js | 14 - .../regress-set-flags-stress-compact.js | 8 - .../regress/regress-shift-enumerable.js | 16 - .../regress-sliced-external-cons-regexp.js | 21 - ...-sloppy-block-function-hoisting-dynamic.js | 6 - .../regress/regress-smi-math-floor-round.js | 67 - .../regress/regress-smi-only-concat.js | 37 - .../mjsunit/regress/regress-smi-scanning.js | 7 - .../mjsunit/regress/regress-sort-arguments.js | 10 - .../v8/mjsunit/regress/regress-sqrt.js | 47 - .../regress/regress-store-global-proxy.js | 12 - .../regress/regress-store-heapobject.js | 27 - .../regress/regress-store-transition-dict.js | 84 - .../regress/regress-store-uncacheable.js | 40 - .../regress-string-from-char-code-tonumber.js | 26 - .../regress/regress-stringAt-boundsCheck.js | 18 - .../mjsunit/regress/regress-swapelements.js | 55 - .../regress/regress-sync-optimized-lists.js | 40 - .../mjsunit/regress/regress-transcendental.js | 48 - .../regress-trap-allocation-memento.js | 50 - .../regress/regress-typedarray-length.js | 149 - .../mjsunit/regress/regress-undefined-nan.js | 35 - .../mjsunit/regress/regress-undefined-nan2.js | 12 - .../mjsunit/regress/regress-undefined-nan3.js | 32 - ...ress-undefined-store-keyed-fast-element.js | 37 - .../regress-unlink-closures-on-deopt.js | 37 - .../regress/regress-unsigned-mul-add.js | 10 - .../regress-update-field-type-attributes.js | 12 - .../v8/mjsunit/regress/regress-v8-4839.js | 62 - .../v8/mjsunit/regress/regress-v8-4972.js | 5 - .../v8/mjsunit/regress/regress-v8-5009.js | 61 - .../v8/mjsunit/regress/regress-v8-5254-1.js | 27 - .../v8/mjsunit/regress/regress-v8-5254-2.js | 27 - .../v8/mjsunit/regress/regress-v8-5255-1.js | 14 - .../v8/mjsunit/regress/regress-v8-5255-2.js | 14 - .../v8/mjsunit/regress/regress-v8-5255-3.js | 14 - .../v8/mjsunit/regress/regress-v8-5697.js | 28 - .../v8/mjsunit/regress/regress-v8-5958.js | 16 - .../v8/mjsunit/regress/regress-v8-6706.js | 37 - .../v8/mjsunit/regress/regress-v8-6712.js | 16 - .../v8/mjsunit/regress/regress-v8-6716.js | 7 - .../v8/mjsunit/regress/regress-v8-6906.js | 15 - .../v8/mjsunit/regress/regress-v8-6940.js | 9 - .../v8/mjsunit/regress/regress-v8-7245.js | 6 - .../v8/mjsunit/regress/regress-v8-7682.js | 26 - .../v8/mjsunit/regress/regress-v8-7725.js | 11 - .../v8/mjsunit/regress/regress-v8-8070.js | 23 - .../v8/mjsunit/regress/regress-v8-8357.js | 31 - .../regress/regress-wasm-crbug-599413.js | 18 - .../regress/regress-wasm-crbug-618602.js | 15 - .../regress-weakening-multiplication.js | 12 - .../v8/mjsunit/regress/regress-x87.js | 48 - .../v8/mjsunit/regress/setter.js | 66 - .../v8/mjsunit/regress/short-circuit.js | 32 - .../v8/mjsunit/regress/splice-missing-wb.js | 56 - .../mjsunit/regress/string-compare-memcmp.js | 7 - .../regress/string-fromcharcode-sideeffect.js | 8 - .../mjsunit/regress/string-next-encoding.js | 20 - .../regress/string-split-monkey-patching.js | 40 - .../mjsunit/regress/typed-array-lifetime.js | 26 - .../mjsunit/regress/wasm/loop-stack-check.js | 18 - .../v8/mjsunit/regress/wasm/regress-02256.js | 967 - .../v8/mjsunit/regress/wasm/regress-02256b.js | 503 - .../v8/mjsunit/regress/wasm/regress-02862.js | 107 - .../v8/mjsunit/regress/wasm/regress-5531.js | 21 - .../v8/mjsunit/regress/wasm/regress-5800.js | 55 - .../v8/mjsunit/regress/wasm/regress-5860.js | 29 - .../v8/mjsunit/regress/wasm/regress-5884.js | 19 - .../v8/mjsunit/regress/wasm/regress-6054.js | 341 - .../v8/mjsunit/regress/wasm/regress-6164.js | 18 - .../v8/mjsunit/regress/wasm/regress-643595.js | 11 - .../v8/mjsunit/regress/wasm/regress-644682.js | 25 - .../v8/mjsunit/regress/wasm/regress-647649.js | 42 - .../v8/mjsunit/regress/wasm/regress-648079.js | 327 - .../v8/mjsunit/regress/wasm/regress-651961.js | 23 - .../v8/mjsunit/regress/wasm/regress-654377.js | 22 - .../v8/mjsunit/regress/wasm/regress-663994.js | 13 - .../v8/mjsunit/regress/wasm/regress-666741.js | 9 - .../v8/mjsunit/regress/wasm/regress-667745.js | 388 - .../v8/mjsunit/regress/wasm/regress-670683.js | 20 - .../v8/mjsunit/regress/wasm/regress-674447.js | 10 - .../v8/mjsunit/regress/wasm/regress-680938.js | 8 - .../v8/mjsunit/regress/wasm/regress-684858.js | 33 - .../v8/mjsunit/regress/wasm/regress-688876.js | 41 - .../v8/mjsunit/regress/wasm/regress-689450.js | 24 - .../v8/mjsunit/regress/wasm/regress-6931.js | 29 - .../v8/mjsunit/regress/wasm/regress-694433.js | 14 - .../v8/mjsunit/regress/wasm/regress-698587.js | 10 - .../v8/mjsunit/regress/wasm/regress-699485.js | 21 - .../v8/mjsunit/regress/wasm/regress-702460.js | 50 - .../v8/mjsunit/regress/wasm/regress-702839.js | 11 - .../v8/mjsunit/regress/wasm/regress-7033.js | 19 - .../v8/mjsunit/regress/wasm/regress-7035.js | 30 - .../v8/mjsunit/regress/wasm/regress-703568.js | 15 - .../v8/mjsunit/regress/wasm/regress-7049.js | 53 - .../v8/mjsunit/regress/wasm/regress-708714.js | 22 - .../v8/mjsunit/regress/wasm/regress-709684.js | 77 - .../v8/mjsunit/regress/wasm/regress-710844.js | 22 - .../v8/mjsunit/regress/wasm/regress-711203.js | 29 - .../v8/mjsunit/regress/wasm/regress-712569.js | 20 - .../mjsunit/regress/wasm/regress-715216a.js | 12 - .../mjsunit/regress/wasm/regress-715216b.js | 12 - .../v8/mjsunit/regress/wasm/regress-717056.js | 16 - .../v8/mjsunit/regress/wasm/regress-717194.js | 30 - .../v8/mjsunit/regress/wasm/regress-719175.js | 16 - .../v8/mjsunit/regress/wasm/regress-722445.js | 15 - .../v8/mjsunit/regress/wasm/regress-724846.js | 13 - .../v8/mjsunit/regress/wasm/regress-724851.js | 11 - .../v8/mjsunit/regress/wasm/regress-724972.js | 10 - .../v8/mjsunit/regress/wasm/regress-727219.js | 22 - .../v8/mjsunit/regress/wasm/regress-727222.js | 13 - .../v8/mjsunit/regress/wasm/regress-727560.js | 17 - .../v8/mjsunit/regress/wasm/regress-729991.js | 14 - .../v8/mjsunit/regress/wasm/regress-731351.js | 23 - .../v8/mjsunit/regress/wasm/regress-734108.js | 14 - .../v8/mjsunit/regress/wasm/regress-734246.js | 15 - .../v8/mjsunit/regress/wasm/regress-734345.js | 27 - .../v8/mjsunit/regress/wasm/regress-7353.js | 28 - .../v8/mjsunit/regress/wasm/regress-7364.js | 30 - .../v8/mjsunit/regress/wasm/regress-736584.js | 16 - .../v8/mjsunit/regress/wasm/regress-7366.js | 32 - .../v8/mjsunit/regress/wasm/regress-737069.js | 34 - .../v8/mjsunit/regress/wasm/regress-739768.js | 32 - .../v8/mjsunit/regress/wasm/regress-7422.js | 26 - .../v8/mjsunit/regress/wasm/regress-7499.js | 18 - .../v8/mjsunit/regress/wasm/regress-7508.js | 20 - .../v8/mjsunit/regress/wasm/regress-752423.js | 32 - .../v8/mjsunit/regress/wasm/regress-753496.js | 17 - .../v8/mjsunit/regress/wasm/regress-7565.js | 19 - .../v8/mjsunit/regress/wasm/regress-757217.js | 19 - .../v8/mjsunit/regress/wasm/regress-7579.js | 61 - .../v8/mjsunit/regress/wasm/regress-7582.js | 47 - .../v8/mjsunit/regress/wasm/regress-763439.js | 21 - .../v8/mjsunit/regress/wasm/regress-763697.js | 14 - .../v8/mjsunit/regress/wasm/regress-766003.js | 16 - .../v8/mjsunit/regress/wasm/regress-769637.js | 16 - .../v8/mjsunit/regress/wasm/regress-769846.js | 15 - .../v8/mjsunit/regress/wasm/regress-771243.js | 38 - .../v8/mjsunit/regress/wasm/regress-772332.js | 32 - .../v8/mjsunit/regress/wasm/regress-775366.js | 29 - .../v8/mjsunit/regress/wasm/regress-775710.js | 20 - .../v8/mjsunit/regress/wasm/regress-776677.js | 30 - .../v8/mjsunit/regress/wasm/regress-7785.js | 43 - .../v8/mjsunit/regress/wasm/regress-778917.js | 19 - .../v8/mjsunit/regress/wasm/regress-782280.js | 32 - .../v8/mjsunit/regress/wasm/regress-784050.js | 24 - .../v8/mjsunit/regress/wasm/regress-789952.js | 40 - .../v8/mjsunit/regress/wasm/regress-7914.js | 17 - .../v8/mjsunit/regress/wasm/regress-791810.js | 20 - .../v8/mjsunit/regress/wasm/regress-793551.js | 19 - .../v8/mjsunit/regress/wasm/regress-797846.js | 13 - .../v8/mjsunit/regress/wasm/regress-799952.js | 23 - .../v8/mjsunit/regress/wasm/regress-800756.js | 14 - .../v8/mjsunit/regress/wasm/regress-801785.js | 21 - .../v8/mjsunit/regress/wasm/regress-801850.js | 10 - .../v8/mjsunit/regress/wasm/regress-802244.js | 21 - .../v8/mjsunit/regress/wasm/regress-803427.js | 12 - .../v8/mjsunit/regress/wasm/regress-803788.js | 26 - .../v8/mjsunit/regress/wasm/regress-8059.js | 41 - .../v8/mjsunit/regress/wasm/regress-808012.js | 13 - .../v8/mjsunit/regress/wasm/regress-808848.js | 66 - .../v8/mjsunit/regress/wasm/regress-808980.js | 27 - .../v8/mjsunit/regress/wasm/regress-8094.js | 29 - .../v8/mjsunit/regress/wasm/regress-8095.js | 24 - .../v8/mjsunit/regress/wasm/regress-810973.js | 33 - .../mjsunit/regress/wasm/regress-810973b.js | 1209 - .../v8/mjsunit/regress/wasm/regress-812005.js | 15 - .../v8/mjsunit/regress/wasm/regress-816226.js | 5 - .../v8/mjsunit/regress/wasm/regress-817380.js | 24 - .../v8/mjsunit/regress/wasm/regress-819869.js | 11 - .../v8/mjsunit/regress/wasm/regress-820802.js | 20 - .../v8/mjsunit/regress/wasm/regress-824681.js | 19 - .../mjsunit/regress/wasm/regress-825087a.js | 9 - .../mjsunit/regress/wasm/regress-825087b.js | 10 - .../v8/mjsunit/regress/wasm/regress-827806.js | 21 - .../v8/mjsunit/regress/wasm/regress-831463.js | 21 - .../v8/mjsunit/regress/wasm/regress-834619.js | 48 - .../v8/mjsunit/regress/wasm/regress-834624.js | 29 - .../v8/mjsunit/regress/wasm/regress-834693.js | 19 - .../v8/mjsunit/regress/wasm/regress-836141.js | 19 - .../v8/mjsunit/regress/wasm/regress-837417.js | 17 - .../v8/mjsunit/regress/wasm/regress-840757.js | 20 - .../v8/mjsunit/regress/wasm/regress-842501.js | 34 - .../v8/mjsunit/regress/wasm/regress-843563.js | 19 - .../v8/mjsunit/regress/wasm/regress-8505.js | 203 - .../v8/mjsunit/regress/wasm/regress-8533.js | 84 - .../v8/mjsunit/regress/wasm/regress-853453.js | 18 - .../v8/mjsunit/regress/wasm/regress-854011.js | 46 - .../v8/mjsunit/regress/wasm/regress-854050.js | 27 - .../v8/mjsunit/regress/wasm/regress-864509.js | 61 - .../v8/mjsunit/regress/wasm/regress-873600.js | 50 - .../v8/mjsunit/regress/wasm/regress-875556.js | 18 - .../v8/mjsunit/regress/wasm/regress-894307.js | 15 - .../v8/mjsunit/regress/wasm/regress-894374.js | 19 - .../v8/mjsunit/regress/wasm/regress-898932.js | 13 - .../v8/mjsunit/regress/wasm/regress-905815.js | 27 - .../v8/mjsunit/regress/wasm/regress-910824.js | 36 - .../v8/mjsunit/regress/wasm/regress-913804.js | 16 - .../v8/mjsunit/regress/wasm/regress-916869.js | 13 - .../v8/mjsunit/regress/wasm/regress-917412.js | 34 - .../v8/mjsunit/regress/wasm/regress-917588.js | 26 - .../mjsunit/regress/wasm/regress-917588b.js | 55 - .../v8/mjsunit/regress/wasm/regress-918149.js | 12 - .../v8/mjsunit/regress/wasm/regress-918284.js | 21 - .../v8/mjsunit/regress/wasm/regress-918917.js | 22 - .../v8/mjsunit/regress/wasm/regress-919308.js | 37 - .../v8/mjsunit/regress/wasm/regress-919533.js | 25 - .../v8/mjsunit/regress/wasm/regress-922432.js | 21 - .../v8/mjsunit/regress/wasm/regress-922670.js | 31 - .../v8/mjsunit/regress/wasm/regress-922933.js | 51 - .../v8/mjsunit/regress/wasm/regress-924843.js | 16 - .../v8/mjsunit/regress/wasm/regress-924905.js | 17 - .../v8/mjsunit/regress/wasm/regress-925671.js | 12 - .../v8/mjsunit/result-table-max.js | 105 - .../v8/mjsunit/result-table-min.js | 105 - .../v8/mjsunit/samevalue.js | 123 - .../v8/mjsunit/scanner.js | 30 - .../v8/mjsunit/scope-calls-eval.js | 65 - .../v8/mjsunit/search-string-multiple.js | 62 - .../v8/mjsunit/serialize-after-execute.js | 15 - .../v8/mjsunit/serialize-embedded-error.js | 13 - .../v8/mjsunit/serialize-ic.js | 18 - .../setter-on-constructor-prototype.js | 111 - .../v8/mjsunit/setters-on-elements.js | 196 - .../mjsunit/shared-function-tier-up-turbo.js | 36 - .../v8/mjsunit/shift-for-integer-div.js | 98 - .../v8/mjsunit/shifts.js | 36 - .../v8/mjsunit/short-circuit-boolean.js | 46 - .../v8/mjsunit/simple-constructor.js | 139 - .../v8/mjsunit/sin-cos.js | 282 - .../skipping-inner-functions-bailout.js | 84 - .../v8/mjsunit/skipping-inner-functions.js | 379 - .../v8/mjsunit/smi-mul-const.js | 87 - .../v8/mjsunit/smi-mul.js | 67 - .../v8/mjsunit/smi-negative-zero.js | 113 - .../v8/mjsunit/smi-ops-inlined.js | 671 - .../v8/mjsunit/smi-ops.js | 704 - .../v8/mjsunit/smi-representation.js | 72 - .../v8/mjsunit/sparse-array.js | 39 - .../v8/mjsunit/splice-proxy.js | 13 - .../v8/mjsunit/spread-large-array.js | 13 - .../v8/mjsunit/spread-large-map.js | 17 - .../v8/mjsunit/spread-large-set.js | 21 - .../v8/mjsunit/spread-large-string.js | 13 - .../stack-overflow-arity-catch-noinline.js | 87 - .../v8/mjsunit/stack-traces-2.js | 64 - .../v8/mjsunit/stack-traces-class-fields.js | 246 - .../v8/mjsunit/stack-traces-custom-lazy.js | 48 - .../v8/mjsunit/stack-traces-custom.js | 51 - .../v8/mjsunit/stack-traces-overflow.js | 158 - .../v8/mjsunit/stack-traces.js | 437 - .../v8/mjsunit/store-dictionary.js | 90 - .../v8/mjsunit/str-to-num.js | 214 - .../v8/mjsunit/stress-array-push.js | 34 - .../v8/mjsunit/strict-equals.js | 86 - .../v8/mjsunit/strict-mode-eval.js | 90 - .../mjsunit/strict-mode-implicit-receiver.js | 187 - .../v8/mjsunit/strict-mode-opt.js | 103 - .../v8/mjsunit/strict-mode.js | 1231 - .../v8/mjsunit/string-add.js | 195 - .../v8/mjsunit/string-case.js | 86 - .../v8/mjsunit/string-charat.js | 255 - .../v8/mjsunit/string-charcodeat-external.js | 17 - .../v8/mjsunit/string-charcodeat.js | 241 - .../v8/mjsunit/string-compare-alignment.js | 48 - .../v8/mjsunit/string-concat.js | 14 - .../v8/mjsunit/string-deopt.js | 57 - .../v8/mjsunit/string-equal.js | 17 - .../v8/mjsunit/string-external-cached.js | 121 - .../v8/mjsunit/string-externalize.js | 105 - .../v8/mjsunit/string-flatten.js | 37 - .../v8/mjsunit/string-fromcharcode.js | 111 - .../v8/mjsunit/string-index.js | 275 - .../v8/mjsunit/string-indexof-1.js | 303 - .../v8/mjsunit/string-indexof-2.js | 68 - .../v8/mjsunit/string-lastindexof.js | 88 - .../v8/mjsunit/string-localecompare.js | 40 - .../v8/mjsunit/string-match.js | 148 - .../v8/mjsunit/string-normalize.js | 19 - .../v8/mjsunit/string-oom-array-join.js | 15 - .../v8/mjsunit/string-oom-concat.js | 13 - ...g-oom-replace-global-regexp-with-string.js | 23 - ...oom-replace-regexp-global-with-function.js | 14 - .../v8/mjsunit/string-pad.js | 155 - .../v8/mjsunit/string-replace-gc.js | 55 - .../v8/mjsunit/string-replace-one-char.js | 92 - .../v8/mjsunit/string-replace-with-empty.js | 69 - .../v8/mjsunit/string-replace.js | 298 - .../v8/mjsunit/string-search.js | 39 - .../v8/mjsunit/string-slices-regexp.js | 76 - .../v8/mjsunit/string-slices.js | 237 - .../v8/mjsunit/string-split-cache.js | 40 - .../v8/mjsunit/string-split.js | 185 - .../v8/mjsunit/string-trim.js | 9 - .../v8/mjsunit/string-wrapper.js | 62 - .../v8/mjsunit/strong-rooted-literals.js | 55 - .../v8/mjsunit/substr.js | 227 - .../v8/mjsunit/sum-0-plus-undefined-is-NaN.js | 45 - .../v8/mjsunit/switch-opt.js | 221 - .../v8/mjsunit/switch.js | 517 - .../v8/mjsunit/test-async.js | 117 - .../v8/mjsunit/test-builtins-setup.js | 277 - .../v8/mjsunit/thin-strings.js | 90 - .../mjsunit/third_party/object-keys/LICENSE | 30 - .../third_party/object-keys/object-keys.js | 100 - .../mjsunit/third_party/regexp-pcre/LICENSE | 68 - .../third_party/regexp-pcre/regexp-pcre.js | 6603 --- .../v8/mjsunit/this-dynamic-lookup.js | 9 - .../v8/mjsunit/this-in-callbacks.js | 47 - .../v8/mjsunit/this-property-assignment.js | 41 - implementation-contributed/v8/mjsunit/this.js | 46 - .../v8/mjsunit/throw-and-catch-function.js | 50 - .../throw-exception-for-null-access.js | 37 - .../v8/mjsunit/to-precision.js | 81 - .../v8/mjsunit/to_number_order.js | 222 - .../v8/mjsunit/tobool.js | 34 - .../v8/mjsunit/toint32.js | 129 - .../v8/mjsunit/tools/codemap.js | 183 - .../v8/mjsunit/tools/compiler-trace-flags.js | 35 - .../v8/mjsunit/tools/consarray.js | 60 - .../v8/mjsunit/tools/csvparser.js | 90 - .../v8/mjsunit/tools/dumpcpp.js | 53 - .../v8/mjsunit/tools/profile.js | 347 - .../v8/mjsunit/tools/profile_view.js | 96 - .../v8/mjsunit/tools/profviz-test.default | 1566 - .../v8/mjsunit/tools/profviz-test.log | 2613 - .../v8/mjsunit/tools/profviz.js | 84 - .../v8/mjsunit/tools/splaytree.js | 166 - .../tools/tickprocessor-test-func-info.log | 11 - .../mjsunit/tools/tickprocessor-test.default | 62 - .../tools/tickprocessor-test.func-info | 35 - .../mjsunit/tools/tickprocessor-test.gc-state | 27 - .../tools/tickprocessor-test.ignore-unknown | 61 - .../v8/mjsunit/tools/tickprocessor-test.log | 25 - .../tools/tickprocessor-test.only-summary | 9 - .../tools/tickprocessor-test.separate-ic | 68 - .../v8/mjsunit/tools/tickprocessor.js | 450 - .../v8/mjsunit/top-level-assignments.js | 107 - .../v8/mjsunit/touint32.js | 70 - .../v8/mjsunit/track-fields.js | 409 - .../v8/mjsunit/transcendentals.js | 48 - .../v8/mjsunit/transition-elements-kind.js | 47 - .../try-catch-default-destructuring.js | 24 - .../v8/mjsunit/try-catch-extension-object.js | 58 - .../v8/mjsunit/try-catch-scopes.js | 42 - .../v8/mjsunit/try-finally-continue.js | 72 - .../v8/mjsunit/try-finally-nested.js | 46 - implementation-contributed/v8/mjsunit/try.js | 394 - .../v8/mjsunit/type-profile/regress-707223.js | 6 - .../v8/mjsunit/typed-array-slice.js | 61 - .../v8/mjsunit/typeof.js | 42 - .../v8/mjsunit/tzoffset-seoul-noi18n.js | 20 - .../v8/mjsunit/tzoffset-seoul.js | 20 - .../v8/mjsunit/tzoffset-transition-apia.js | 48 - .../mjsunit/tzoffset-transition-lord-howe.js | 35 - .../v8/mjsunit/tzoffset-transition-moscow.js | 85 - .../tzoffset-transition-new-york-noi18n.js | 34 - .../mjsunit/tzoffset-transition-new-york.js | 34 - .../v8/mjsunit/ubsan-fuzzerbugs.js | 19 - .../v8/mjsunit/unary-minus-deopt.js | 55 - .../v8/mjsunit/unbox-double-arrays.js | 540 - .../v8/mjsunit/unbox-double-field-indexed.js | 23 - .../v8/mjsunit/unbox-double-field.js | 22 - .../v8/mjsunit/unbox-smi-field-indexed.js | 23 - .../v8/mjsunit/unbox-smi-field.js | 22 - .../v8/mjsunit/undeletable-functions.js | 171 - .../v8/mjsunit/undetectable-compare.js | 107 - .../v8/mjsunit/undetectable.js | 93 - .../mjsunit/unicode-case-overoptimization.js | 35 - .../v8/mjsunit/unicode-string-to-number.js | 45 - .../v8/mjsunit/unicode-test.js | 9167 ---- .../mjsunit/unicodelctest-no-optimization.js | 4915 -- .../v8/mjsunit/unicodelctest.js | 4913 -- .../v8/mjsunit/unused-context-in-with.js | 13 - .../v8/mjsunit/unusual-constructor.js | 35 - implementation-contributed/v8/mjsunit/uri.js | 100 - .../mjsunit/value-callic-prototype-change.js | 94 - .../v8/mjsunit/value-of.js | 43 - .../v8/mjsunit/value-wrapper-accessor.js | 93 - .../v8/mjsunit/value-wrapper.js | 165 - implementation-contributed/v8/mjsunit/var.js | 56 - .../v8/mjsunit/verify-assert-false.js | 30 - .../v8/mjsunit/verify-check-false.js | 30 - .../v8/mjsunit/whitespaces.js | 130 - .../v8/mjsunit/whitespaces0.js | 7 - .../v8/mjsunit/whitespaces1.js | 7 - .../v8/mjsunit/whitespaces2.js | 7 - .../v8/mjsunit/whitespaces3.js | 7 - .../v8/mjsunit/whitespaces4.js | 7 - .../v8/mjsunit/whitespaces5.js | 7 - .../v8/mjsunit/whitespaces6.js | 7 - .../v8/mjsunit/whitespaces7.js | 7 - .../v8/mjsunit/whitespaces8.js | 7 - .../v8/mjsunit/whitespaces9.js | 7 - .../v8/mjsunit/with-function-expression.js | 36 - .../v8/mjsunit/with-leave.js | 220 - .../v8/mjsunit/with-parameter-access.js | 47 - .../v8/mjsunit/with-prototype.js | 44 - .../v8/mjsunit/with-readonly.js | 43 - .../v8/mjsunit/with-value.js | 38 - .../v8/test262/BUILD.gn | 24 - implementation-contributed/v8/test262/README | 20 - .../v8/test262/detachArrayBuffer.js | 9 - .../v8/test262/harness-adapt-donotevaluate.js | 12 - .../v8/test262/harness-adapt.js | 107 - .../v8/test262/harness-agent.js | 118 - .../test/intl402/DateTimeFormat/12.1.1_1.js | 35 - .../formatToParts/default-parameter.js | 30 - ...elds-inner-arrow-err-contains-arguments.js | 26 - ...inner-arrow-eval-err-contains-arguments.js | 33 - ...inner-eval-arrow-err-contains-arguments.js | 30 - ...line-html-close-comment-before-function.js | 16 - ...l-close-comment-newline-before-function.js | 15 - ...elds-inner-arrow-err-contains-arguments.js | 26 - ...inner-arrow-eval-err-contains-arguments.js | 34 - ...inner-eval-arrow-err-contains-arguments.js | 30 - .../v8/test262/prune-local-tests.sh | 17 - .../v8/test262/test262.status | 2619 - .../v8/test262/testcfg.py | 254 - .../v8/test262/upstream-local-tests.sh | 22 - .../v8/wasm-js/BUILD.gn | 17 - .../v8/wasm-js/LICENSE.testharness | 30 - .../v8/wasm-js/testcfg.py | 74 - .../v8/wasm-js/testharness-after.js | 16 - .../v8/wasm-js/testharness.js | 148 - .../v8/wasm-js/wasm-js.status | 23 - 5144 files changed, 557515 deletions(-) delete mode 100644 implementation-contributed/curation_logs/es6.md delete mode 100644 implementation-contributed/curation_logs/javascriptcore.json delete mode 100644 implementation-contributed/curation_logs/stress.md delete mode 100644 implementation-contributed/curation_logs/v8.json delete mode 100644 implementation-contributed/javascriptcore/.gitkeep delete mode 100644 implementation-contributed/javascriptcore/ChangeLog-2018-09-11 delete mode 100644 implementation-contributed/javascriptcore/es6/Map_-0_key_converts_to_+0.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.freeze.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isExtensible.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isFrozen.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isSealed.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.keys.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.preventExtensions.js delete mode 100644 implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.seal.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_JSON.stringify_support.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.concat.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.pop.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.reverse.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.shift.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.splice.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.toString.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_CreateDynamicFunction.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_CreateListFromArrayLike.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Date.prototype.toJSON.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Error.prototype.toString.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Function.prototype.bind.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_HasBinding.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_JSON.stringify.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Object.assign.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.flags.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.test.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.toString.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.match].js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.replace].js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.search].js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.split].js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp_constructor.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.match.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.replace.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.search.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.split.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_instanceof_operator.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.fill.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.pop.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.push.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.reverse.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.shift.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.splice.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.unshift.js delete mode 100644 implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Object.assign.js delete mode 100644 implementation-contributed/javascriptcore/es6/Set_-0_key_converts_to_+0.js delete mode 100644 implementation-contributed/javascriptcore/es6/Symbol_JSON.stringify_ignores_symbols.js delete mode 100644 implementation-contributed/javascriptcore/es6/Unicode_code_point_escapes_in_identifiers.js delete mode 100644 implementation-contributed/javascriptcore/es6/Unicode_code_point_escapes_in_strings.js delete mode 100644 implementation-contributed/javascriptcore/es6/WeakSet_iterator_closing.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_0_parameters.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_1_parameter_no_brackets.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_cant_be_bound_can_be_curried.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_correct_precedence.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_lexical_arguments_binding.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_lexical_new.target_binding.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_lexical_super_binding.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_lexical_this_binding.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_multiple_parameters.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_no_line_break_between_params_and_code_=_code.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_no_prototype_property.js delete mode 100644 implementation-contributed/javascriptcore/es6/arrow_functions_this_unchanged_by_call_or_apply.js delete mode 100644 implementation-contributed/javascriptcore/es6/const_temporal_dead_zone.js delete mode 100644 implementation-contributed/javascriptcore/es6/const_temporal_dead_zone_strict_mode.js delete mode 100644 implementation-contributed/javascriptcore/es6/default_function_parameters_temporal_dead_zone.js delete mode 100644 implementation-contributed/javascriptcore/es6/for..of_loops_iterator_closing_break.js delete mode 100644 implementation-contributed/javascriptcore/es6/for..of_loops_iterator_closing_throw.js delete mode 100644 implementation-contributed/javascriptcore/es6/for..of_loops_with_arrays.js delete mode 100644 implementation-contributed/javascriptcore/es6/for..of_loops_with_astral_plane_strings.js delete mode 100644 implementation-contributed/javascriptcore/es6/for..of_loops_with_generator_instances.js delete mode 100644 implementation-contributed/javascriptcore/es6/for..of_loops_with_generic_iterables.js delete mode 100644 implementation-contributed/javascriptcore/es6/for..of_loops_with_instances_of_generic_iterables.js delete mode 100644 implementation-contributed/javascriptcore/es6/for..of_loops_with_sparse_arrays.js delete mode 100644 implementation-contributed/javascriptcore/es6/for..of_loops_with_strings.js delete mode 100644 implementation-contributed/javascriptcore/es6/generators_correct_this_binding.js delete mode 100644 implementation-contributed/javascriptcore/es6/generators_generator_function_expressions.js delete mode 100644 implementation-contributed/javascriptcore/es6/generators_sending.js delete mode 100644 implementation-contributed/javascriptcore/es6/let_temporal_dead_zone.js delete mode 100644 implementation-contributed/javascriptcore/es6/let_temporal_dead_zone_strict_mode.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_Invalid_Date.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_RegExp_constructor_can_alter_flags.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_String.prototype_case_methods_Unicode_support.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_accessors_arent_constructors.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_built-in_prototypes_are_not_instances.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_duplicate_property_names_in_strict_mode.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_function_length_is_configurable.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_no_assignments_allowed_in_for-in_head.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_no_semicolon_needed_after_do-while.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Boolean_is_subclassable.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Map_is_subclassable.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Number_is_subclassable.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Set_is_subclassable.js delete mode 100644 implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_String_is_subclassable.js delete mode 100644 implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_arrow_functions.js delete mode 100644 implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_basic_functions.js delete mode 100644 implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_classes.js delete mode 100644 implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_generator_functions.js delete mode 100644 implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_subclasses.js delete mode 100644 implementation-contributed/javascriptcore/es6/rest_parameters_cant_be_used_in_setters.js delete mode 100644 implementation-contributed/javascriptcore/es6/rest_parameters_new_Function_support.js delete mode 100644 implementation-contributed/javascriptcore/es6/well-known_symbols_Symbol.toPrimitive.js delete mode 100644 implementation-contributed/javascriptcore/modules/aliased-names.js delete mode 100644 implementation-contributed/javascriptcore/modules/aliased-names/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/aliasing.js delete mode 100644 implementation-contributed/javascriptcore/modules/aliasing/drink-2.js delete mode 100644 implementation-contributed/javascriptcore/modules/aliasing/drink.js delete mode 100644 implementation-contributed/javascriptcore/modules/async-function-export.js delete mode 100644 implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous.js delete mode 100644 implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/A.js delete mode 100644 implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/B.js delete mode 100644 implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/C.js delete mode 100644 implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/D.js delete mode 100644 implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz.js delete mode 100644 implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz/1.js delete mode 100644 implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz/2.js delete mode 100644 implementation-contributed/javascriptcore/modules/default-error/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/default-value-case-should-be-copied.js delete mode 100644 implementation-contributed/javascriptcore/modules/default-value-case-should-be-copied/module.js delete mode 100644 implementation-contributed/javascriptcore/modules/defaults.js delete mode 100644 implementation-contributed/javascriptcore/modules/defaults/Cappuccino.js delete mode 100644 implementation-contributed/javascriptcore/modules/defaults/Cocoa.js delete mode 100644 implementation-contributed/javascriptcore/modules/defaults/Matcha.js delete mode 100644 implementation-contributed/javascriptcore/modules/destructuring-export.js delete mode 100644 implementation-contributed/javascriptcore/modules/destructuring-export/array.js delete mode 100644 implementation-contributed/javascriptcore/modules/destructuring-export/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/different-view.js delete mode 100644 implementation-contributed/javascriptcore/modules/different-view/A.js delete mode 100644 implementation-contributed/javascriptcore/modules/different-view/B.js delete mode 100644 implementation-contributed/javascriptcore/modules/different-view/C.js delete mode 100644 implementation-contributed/javascriptcore/modules/different-view/D.js delete mode 100644 implementation-contributed/javascriptcore/modules/different-view/E.js delete mode 100644 implementation-contributed/javascriptcore/modules/different-view/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/1.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/10.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/11.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/2.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/3.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/4.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/5.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/6.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/7.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/8.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-cyclic/9.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/1.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/10.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/2.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/3.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/4.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/5.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/6.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/7.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/8.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-dag/9.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-depth.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-depth/1.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-depth/2.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-depth/3.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-self.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-sibling.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-sibling/1.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-sibling/2.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-sibling/3.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/1.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/10.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/11.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/2.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/3.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/4.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/5.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/6.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/7.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/8.js delete mode 100644 implementation-contributed/javascriptcore/modules/execution-order-tree/9.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-conflict-ok.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-conflict-ok/A.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-conflict-ok/B.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-conflict-ok/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-default-function-hoisting.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-default-function-hoisting/cappuccino.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-default-function-hoisting/cocoa.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-default-function-name-in-assignment-expression.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-default-function-name-in-class-declaration.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-default-function-name-in-function-declaration.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-default-function-name-in-generator-declaration.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-from.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-from/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-from/second.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-with-declarations-list.js delete mode 100644 implementation-contributed/javascriptcore/modules/export-with-declarations-list/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed.js delete mode 100644 implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed/1.js delete mode 100644 implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed/2.js delete mode 100644 implementation-contributed/javascriptcore/modules/fallback-ambiguous.js delete mode 100644 implementation-contributed/javascriptcore/modules/fallback-ambiguous/A.js delete mode 100644 implementation-contributed/javascriptcore/modules/fallback-ambiguous/B.js delete mode 100644 implementation-contributed/javascriptcore/modules/fallback-ambiguous/C.js delete mode 100644 implementation-contributed/javascriptcore/modules/fallback-ambiguous/D.js delete mode 100644 implementation-contributed/javascriptcore/modules/fallback-ambiguous/E.js delete mode 100644 implementation-contributed/javascriptcore/modules/fallback-ambiguous/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/html-comments.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-call.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-call/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-default-async.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error/export-ambiguous-1.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error/export-ambiguous-2.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error/export-ambiguous.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error/export-default-from-star-2.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error/export-default-from-star.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error/export-not-found.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error/import-ambiguous.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error/import-default-from-star.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-error/import-not-found.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-meta-assignment.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-meta-syntax.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-meta.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-meta/cocoa.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-named-async-as.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-named-async.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-named-async/target.js delete mode 100644 implementation-contributed/javascriptcore/modules/import-namespace-async.js delete mode 100644 implementation-contributed/javascriptcore/modules/imported-bindings-are-immutable.js delete mode 100644 implementation-contributed/javascriptcore/modules/imported-bindings-are-immutable/bindings.js delete mode 100644 implementation-contributed/javascriptcore/modules/imported-bindings-can-be-changed-in-original-module.js delete mode 100644 implementation-contributed/javascriptcore/modules/imported-bindings-can-be-changed-in-original-module/bindings.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-2.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-3.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-4.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default-2.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default-3.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-not-found-2.js delete mode 100644 implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-not-found.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-assert-access-binding.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-assert-access-namespace.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-eval.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-eval/A.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-eval/B.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-eval/drink.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-is-strict-code.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-jit-reachability.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-namespace-is-frozen.js delete mode 100644 implementation-contributed/javascriptcore/modules/module-namespace-is-sealed.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-ambiguous.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-2.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-3.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-4.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-empty.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-error.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-2.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-3.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-4.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-5.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-6.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-7.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-object-get-property.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-object-has-property.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-object-inline-caching.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-object-inline-caching/a.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-object-inline-caching/b.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-object-symbol-iterator-name.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-object-typed-array-fast-path.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-prototype-assignment.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-re-export.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-re-export/namespace-re-export-fixture.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-re-export/namespace-re-export.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-set-prototype-of.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-tdz.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-tdz/A.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-tdz/B.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace-tdz/main.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace/additional-drink.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace/drink.js delete mode 100644 implementation-contributed/javascriptcore/modules/namespace/more-additional-drink.js delete mode 100644 implementation-contributed/javascriptcore/modules/resources/assert.js delete mode 100644 implementation-contributed/javascriptcore/modules/scopes-eval.js delete mode 100644 implementation-contributed/javascriptcore/modules/scopes.js delete mode 100644 implementation-contributed/javascriptcore/modules/scopes/additional-drink.js delete mode 100644 implementation-contributed/javascriptcore/modules/scopes/drink.js delete mode 100644 implementation-contributed/javascriptcore/modules/scopes/more-additional-drink.js delete mode 100644 implementation-contributed/javascriptcore/modules/self-star-link.js delete mode 100644 implementation-contributed/javascriptcore/modules/self-star-link/A.js delete mode 100644 implementation-contributed/javascriptcore/modules/self-star-link/B.js delete mode 100644 implementation-contributed/javascriptcore/modules/self-star-link/C.js delete mode 100644 implementation-contributed/javascriptcore/modules/self-star-link/D.js delete mode 100644 implementation-contributed/javascriptcore/modules/self-star-link/E.js delete mode 100644 implementation-contributed/javascriptcore/modules/string-prototype-module-scope.js delete mode 100644 implementation-contributed/javascriptcore/modules/this-should-be-undefined.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/A-pre.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/A.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/B.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/C.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/D.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/E-pre.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/E.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/main1.js delete mode 100644 implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/main2.js delete mode 100644 implementation-contributed/javascriptcore/stress/StringObject-define-length-getter-rope-string-oom.js delete mode 100644 implementation-contributed/javascriptcore/stress/activation-sink-default-value-tdz-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/activation-sink-default-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/activation-sink-osrexit-default-value-tdz-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/activation-sink-osrexit-default-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/activation-sink-osrexit.js delete mode 100644 implementation-contributed/javascriptcore/stress/activation-sink.js delete mode 100644 implementation-contributed/javascriptcore/stress/addition-order-evaluation.js delete mode 100644 implementation-contributed/javascriptcore/stress/ai-should-perform-array-check-on-get-by-val-constant-folding.js delete mode 100644 implementation-contributed/javascriptcore/stress/allow-math-ic-b3-code-duplication.js delete mode 100644 implementation-contributed/javascriptcore/stress/apply-second-argument-must-be-array-like.js delete mode 100644 implementation-contributed/javascriptcore/stress/arguments-elimination-will-generate-edge-without-result.js delete mode 100644 implementation-contributed/javascriptcore/stress/arith-abs-on-various-types.js delete mode 100644 implementation-contributed/javascriptcore/stress/arith-acos-on-various-types.js delete mode 100644 implementation-contributed/javascriptcore/stress/arith-acosh-on-various-types.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-array-prototype-trap.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-cached-length.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-fast-path-effects.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-have-a-bad-time-c-runtime.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-hole-nan.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-infinity.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-negative-zero.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-own-getter.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-prototype-trap.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-lastindexof-array-prototype-trap.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-lastindexof-cached-length.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-lastindexof-fast-path-effects.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-lastindexof-have-a-bad-time-c-runtime.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-lastindexof-hole-nan.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-lastindexof-infinity.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-lastindexof-negative-zero.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-lastindexof-own-getter.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-lastindexof-prototype-trap.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-prototype-concat-of-long-spliced-arrays.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-prototype-concat-of-long-spliced-arrays2.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-push-multiple-int32.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-species-create-should-handle-masquerader.js delete mode 100644 implementation-contributed/javascriptcore/stress/array-unshift-should-not-race-against-compiler-thread.js delete mode 100644 implementation-contributed/javascriptcore/stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/arrowfunction-lexical-this-activation-sink-osrexit.js delete mode 100644 implementation-contributed/javascriptcore/stress/arrowfunction-lexical-this-activation-sink.js delete mode 100644 implementation-contributed/javascriptcore/stress/assignment-in-function-call-bracket-node.js delete mode 100644 implementation-contributed/javascriptcore/stress/async-arrow-function-in-class-heritage.js delete mode 100644 implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-arguments-binding.js delete mode 100644 implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-binding-in-class.js delete mode 100644 implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-new.target-binding.js delete mode 100644 implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-super-binding.js delete mode 100644 implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-this-binding.js delete mode 100644 implementation-contributed/javascriptcore/stress/availability-was-cleared-when-locals-are-not-live.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-and-general.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-and-jit.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-and-memory-stress.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-and-to-primitive-precedence.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-and-type-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-and-wrapped-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-or-general.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-or-jit-untyped.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-or-jit.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-or-memory-stress.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-or-to-primitive-precedence.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-or-type-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-or-wrapped-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-general.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-jit.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-memory-stress.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-to-primitive-precedence.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-type-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-untyped.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-wrapped-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-boolean-proven-type.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-branch-usage.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-div-jit-osr.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-div-jit-untyped.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-json-stringify-to-json.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-json-stringify.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-left-shift-general.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-left-shift-range-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-left-shift-type-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-left-shift-wrapped-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-literal-inside-literal-object.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-logical-and.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-logical-not.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-logical-or.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-mul-jit-osr.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-mul-jit-untyped.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-negate-jit.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-out-of-memory-tests.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-right-shift-general.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-right-shift-type-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-right-shift-wrapped-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-subtraction-jit.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-to-string.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-type-of-proven-type-non-constant-including-symbol.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-type-of-proven-type-non-constant.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-type-of.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-int-value-op-update-gc-rules.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-wasm-memory-grow-no-max.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-wasm-memory-grow.js delete mode 100644 implementation-contributed/javascriptcore/stress/big-wasm-memory.js delete mode 100644 implementation-contributed/javascriptcore/stress/bit-not-must-generate.js delete mode 100644 implementation-contributed/javascriptcore/stress/bit-op-with-object-returning-int32.js delete mode 100644 implementation-contributed/javascriptcore/stress/bitwise-not-no-int32.js delete mode 100644 implementation-contributed/javascriptcore/stress/block-scope-redeclarations.js delete mode 100644 implementation-contributed/javascriptcore/stress/builtin-function-length.js delete mode 100644 implementation-contributed/javascriptcore/stress/cant-eliminate-string-object-structure-check-when-string-object-is-proven.js delete mode 100644 implementation-contributed/javascriptcore/stress/completion-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/computed-accessor-parsing.js delete mode 100644 implementation-contributed/javascriptcore/stress/computed-accessor.js delete mode 100644 implementation-contributed/javascriptcore/stress/concat-append-one-with-sparse-array.js delete mode 100644 implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-ftl.js delete mode 100644 implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-tdz-ftl.js delete mode 100644 implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-tdz.js delete mode 100644 implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property.js delete mode 100644 implementation-contributed/javascriptcore/stress/const-lexical-binding-shadowing-global-properties-and-eval-injection.js delete mode 100644 implementation-contributed/javascriptcore/stress/constant-fold-double-rep-into-double-constant.js delete mode 100644 implementation-contributed/javascriptcore/stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-1.js delete mode 100644 implementation-contributed/javascriptcore/stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-2.js delete mode 100644 implementation-contributed/javascriptcore/stress/create-subclass-structure-may-throw-exception-when-getting-prototype.js delete mode 100644 implementation-contributed/javascriptcore/stress/custom-iterators.js delete mode 100644 implementation-contributed/javascriptcore/stress/custom-prototype-may-be-same-to-original-one.js delete mode 100644 implementation-contributed/javascriptcore/stress/data-view-set-intrinsic-undefined-result-2.js delete mode 100644 implementation-contributed/javascriptcore/stress/data-view-set-intrinsic-undefined-result.js delete mode 100644 implementation-contributed/javascriptcore/stress/dataview-jit-set-nan.js delete mode 100644 implementation-contributed/javascriptcore/stress/dataview-jit-set.js delete mode 100644 implementation-contributed/javascriptcore/stress/dfg-combined-liveness-consider-terminal-blocks-bytecode-liveness.js delete mode 100644 implementation-contributed/javascriptcore/stress/dfg-to-string-on-int-does-gc.js delete mode 100644 implementation-contributed/javascriptcore/stress/dfg-to-string-on-string-object-does-not-gc.js delete mode 100644 implementation-contributed/javascriptcore/stress/dfg-to-string-on-string-or-string-object-does-not-gc.js delete mode 100644 implementation-contributed/javascriptcore/stress/dont-crash-on-stack-overflow-when-parsing-builtin.js delete mode 100644 implementation-contributed/javascriptcore/stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js delete mode 100644 implementation-contributed/javascriptcore/stress/dont-emit-osr-exits-for-every-call-ftl.js delete mode 100644 implementation-contributed/javascriptcore/stress/double-to-int32-NaN.js delete mode 100644 implementation-contributed/javascriptcore/stress/elidable-new-object-roflcopter-then-exit.js delete mode 100644 implementation-contributed/javascriptcore/stress/elide-new-object-dag-then-exit.js delete mode 100644 implementation-contributed/javascriptcore/stress/end-basic-block-set-local-should-filter-type.js delete mode 100644 implementation-contributed/javascriptcore/stress/error-description-on-symbols-should-not-crash.js delete mode 100644 implementation-contributed/javascriptcore/stress/errors-with-simple-names-or-messages-should-not-crash-toString.js delete mode 100644 implementation-contributed/javascriptcore/stress/exception-in-to-property-key-should-be-handled-early-in-object-methods.js delete mode 100644 implementation-contributed/javascriptcore/stress/exitok-is-not-the-same-as-mayExit.js delete mode 100644 implementation-contributed/javascriptcore/stress/for-in-invalidate-context-weird-assignments.js delete mode 100644 implementation-contributed/javascriptcore/stress/for-in-tests.js delete mode 100644 implementation-contributed/javascriptcore/stress/force-string-arrayMode-on-originalNonArray-array-class.js delete mode 100644 implementation-contributed/javascriptcore/stress/ftl-ai-filter-phantoms-should-clear-clear-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/ftl-should-always-filter-for-low-type-check-functions.js delete mode 100644 implementation-contributed/javascriptcore/stress/function-cache-with-parameters-end-position.js delete mode 100644 implementation-contributed/javascriptcore/stress/function-caller-async-arrow-function-body.js delete mode 100644 implementation-contributed/javascriptcore/stress/function-caller-async-function-body.js delete mode 100644 implementation-contributed/javascriptcore/stress/function-caller-async-generator-body.js delete mode 100644 implementation-contributed/javascriptcore/stress/function-caller-generator-body.js delete mode 100644 implementation-contributed/javascriptcore/stress/function-caller-generator-method-body.js delete mode 100644 implementation-contributed/javascriptcore/stress/function-constructor-name.js delete mode 100644 implementation-contributed/javascriptcore/stress/get-by-id-change-mode.js delete mode 100644 implementation-contributed/javascriptcore/stress/get-stack-double.js delete mode 100644 implementation-contributed/javascriptcore/stress/global-add-function-should-not-be-shadowed-by-lexical-bindings.js delete mode 100644 implementation-contributed/javascriptcore/stress/global-environment-does-not-trap-unscopables.js delete mode 100644 implementation-contributed/javascriptcore/stress/global-import-function-should-return-a-promise-when-clearing-exceptions.js delete mode 100644 implementation-contributed/javascriptcore/stress/global-lexical-binding-epoch-should-be-correct-one.js delete mode 100644 implementation-contributed/javascriptcore/stress/global-static-variables-should-not-be-shadowed-by-lexical-bindings.js delete mode 100644 implementation-contributed/javascriptcore/stress/ignore-promise-species.js delete mode 100644 implementation-contributed/javascriptcore/stress/inferred-names.js delete mode 100644 implementation-contributed/javascriptcore/stress/is-undefined-or-null-builtin.js delete mode 100644 implementation-contributed/javascriptcore/stress/jsc-read.js delete mode 100644 implementation-contributed/javascriptcore/stress/jsfunction-cannot-use-allocation-profile-with-builtin-functions-with-no-prototype.js delete mode 100644 implementation-contributed/javascriptcore/stress/json-parse-big-object.js delete mode 100644 implementation-contributed/javascriptcore/stress/json-stringified-overflow-2.js delete mode 100644 implementation-contributed/javascriptcore/stress/json-stringified-overflow.js delete mode 100644 implementation-contributed/javascriptcore/stress/json-stringify-no-arguments.js delete mode 100644 implementation-contributed/javascriptcore/stress/json-stringify-string-builder-overflow.js delete mode 100644 implementation-contributed/javascriptcore/stress/json-surrogate-pair.js delete mode 100644 implementation-contributed/javascriptcore/stress/known-cell-type-check-should-allow-empty-value-to-flow-through.js delete mode 100644 implementation-contributed/javascriptcore/stress/known-cell-use-needs-type-check-assertion.js delete mode 100644 implementation-contributed/javascriptcore/stress/large-unshift-splice.js delete mode 100644 implementation-contributed/javascriptcore/stress/left-shift-to-primitive-precedence.js delete mode 100644 implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-ftl.js delete mode 100644 implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-tdz-ftl.js delete mode 100644 implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-tdz.js delete mode 100644 implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property.js delete mode 100644 implementation-contributed/javascriptcore/stress/let-lexical-binding-shadowing-global-properties-and-eval-injection.js delete mode 100644 implementation-contributed/javascriptcore/stress/materialize-regexp-cyclic-regexp.js delete mode 100644 implementation-contributed/javascriptcore/stress/materialize-regexp-cyclic.js delete mode 100644 implementation-contributed/javascriptcore/stress/materialized-regexp-has-correct-last-index-set-by-match.js delete mode 100644 implementation-contributed/javascriptcore/stress/maximum-inline-capacity.js delete mode 100644 implementation-contributed/javascriptcore/stress/merging-ic-variants-should-bail-if-structures-overlap.js delete mode 100644 implementation-contributed/javascriptcore/stress/modify-set-during-iteration.js delete mode 100644 implementation-contributed/javascriptcore/stress/multi-put-by-offset-must-filter-value-before-filtering-base.js delete mode 100644 implementation-contributed/javascriptcore/stress/new-largeish-contiguous-array-with-size.js delete mode 100644 implementation-contributed/javascriptcore/stress/new-regex-inline.js delete mode 100644 implementation-contributed/javascriptcore/stress/object-allocation-sinking-phase-must-only-move-allocations-if-stack-trace-is-still-valid.js delete mode 100644 implementation-contributed/javascriptcore/stress/object-allocation-sinking-phase-needs-to-write-to-each-scope-offset.js delete mode 100644 implementation-contributed/javascriptcore/stress/object-keys-cached-zero.js delete mode 100644 implementation-contributed/javascriptcore/stress/object-keys-changed-attribute.js delete mode 100644 implementation-contributed/javascriptcore/stress/object-keys-changed-index.js delete mode 100644 implementation-contributed/javascriptcore/stress/object-keys-changed.js delete mode 100644 implementation-contributed/javascriptcore/stress/object-keys-indexed-non-cache.js delete mode 100644 implementation-contributed/javascriptcore/stress/object-keys-osr-exit.js delete mode 100644 implementation-contributed/javascriptcore/stress/object-keys-overrides-get-property-names.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_add.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_bitand.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_bitor.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_bitxor.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_div-ConstVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_div-VarConst.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_div-VarVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_lshift-ConstVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_lshift-VarConst.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_lshift-VarVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_mod-ConstVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_mod-VarConst.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_mod-VarVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_mul-ConstVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_mul-VarConst.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_mul-VarVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_rshift-ConstVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_rshift-VarConst.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_rshift-VarVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_sub-ConstVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_sub-VarConst.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_sub-VarVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_urshift-ConstVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_urshift-VarConst.js delete mode 100644 implementation-contributed/javascriptcore/stress/op_urshift-VarVar.js delete mode 100644 implementation-contributed/javascriptcore/stress/out-of-frame-stack-accesses-due-to-probe-based-osr-exits.js delete mode 100644 implementation-contributed/javascriptcore/stress/pow-expects-update-expression-on-lhs.js delete mode 100644 implementation-contributed/javascriptcore/stress/private-name-as-anonymous-builtin.js delete mode 100644 implementation-contributed/javascriptcore/stress/property-name-enumerator-should-cache-structure-after-getting-property-names.js delete mode 100644 implementation-contributed/javascriptcore/stress/proxy-get-set-correct-receiver.js delete mode 100644 implementation-contributed/javascriptcore/stress/put-by-id-flags.js delete mode 100644 implementation-contributed/javascriptcore/stress/r238510-bad-loop.js delete mode 100644 implementation-contributed/javascriptcore/stress/regexp-compile-oom.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-159883.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-169445.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-170253.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-170732.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-179562.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-179634.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-185888.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-187373-2.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-187373.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-189028.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-189132.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-189317.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-189571.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-190186.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-190187.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-190515-2.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-190515.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-190693.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-191563.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-191579.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-191730.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-191731.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-191856.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-191993.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-192386.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-192441.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-192626.js delete mode 100644 implementation-contributed/javascriptcore/stress/regress-192717.js delete mode 100644 implementation-contributed/javascriptcore/stress/reserved-word-with-escape.js delete mode 100644 implementation-contributed/javascriptcore/stress/rest-parameter-many-arguments.js delete mode 100644 implementation-contributed/javascriptcore/stress/right-shift-to-primitive-precedence.js delete mode 100644 implementation-contributed/javascriptcore/stress/sampling-profiler-richards.js delete mode 100644 implementation-contributed/javascriptcore/stress/sampling-profiler-should-not-sample-beyond-stack-bounds.js delete mode 100644 implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-before-deleting.js delete mode 100644 implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-bump-counter.js delete mode 100644 implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-even-if-it-fails.js delete mode 100644 implementation-contributed/javascriptcore/stress/simple-module.mjs delete mode 100644 implementation-contributed/javascriptcore/stress/simple-script.js delete mode 100644 implementation-contributed/javascriptcore/stress/slice-array-storage-with-holes.js delete mode 100644 implementation-contributed/javascriptcore/stress/splay-flash-access-1ms.js delete mode 100644 implementation-contributed/javascriptcore/stress/splice-should-zero-property-storage-when-rebalancing.js delete mode 100644 implementation-contributed/javascriptcore/stress/spread-forward-call-varargs-stack-overflow.js delete mode 100644 implementation-contributed/javascriptcore/stress/stack-overflow-frame-for-construct-arityCheck-should-use-construct-codeBlock.js delete mode 100644 implementation-contributed/javascriptcore/stress/string-16bit-repeat-overflow.js delete mode 100644 implementation-contributed/javascriptcore/stress/string-get-by-val-lowering.js delete mode 100644 implementation-contributed/javascriptcore/stress/string-overflow-createError.js delete mode 100644 implementation-contributed/javascriptcore/stress/string-to-string-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/string-value-of-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/symbol-description-identity.js delete mode 100644 implementation-contributed/javascriptcore/stress/symbol-identity.js delete mode 100644 implementation-contributed/javascriptcore/stress/symbol-with-description-throw-error.js delete mode 100644 implementation-contributed/javascriptcore/stress/tailCallForwardArguments.js delete mode 100644 implementation-contributed/javascriptcore/stress/to-this-omission-with-different-strict-modes.js delete mode 100644 implementation-contributed/javascriptcore/stress/try-get-by-id-should-spill-registers-dfg.js delete mode 100644 implementation-contributed/javascriptcore/stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js delete mode 100644 implementation-contributed/javascriptcore/stress/type-for-get-by-val-can-be-widen-after-ai.js delete mode 100644 implementation-contributed/javascriptcore/stress/type-profiler-log-should-defer-pending-exceptions.js delete mode 100644 implementation-contributed/javascriptcore/stress/typed-array-array-modes-profile.js delete mode 100644 implementation-contributed/javascriptcore/stress/typed-array-get-by-val-profiling.js delete mode 100644 implementation-contributed/javascriptcore/stress/use-baseline-codeblock-materialize-osr-exit.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-add-big-int-and-string.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-add-big-int-prediction-propagation.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-add-big-int-untyped.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-div-fixup-int32-big-int.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-mul-fixup-int32-big-int.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-recovery-of-double-displaced-in-jsstack-should-be-purified.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-sub-big-int-prediction-propagation.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-sub-big-int-untyped.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-sub-spec-none-case.js delete mode 100644 implementation-contributed/javascriptcore/stress/value-to-boolean.js delete mode 100644 implementation-contributed/javascriptcore/stress/verbose-failure-dont-graph-dump-availability-already-freed.js delete mode 100644 implementation-contributed/javascriptcore/stress/wide-op_catch.js delete mode 100644 implementation-contributed/javascriptcore/wasm/regress/regress-191056.js delete mode 100644 implementation-contributed/javascriptcore/wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js delete mode 100644 implementation-contributed/javascriptcore/wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE.js delete mode 100644 implementation-contributed/v8/intl/BUILD.gn delete mode 100644 implementation-contributed/v8/intl/OWNERS delete mode 100644 implementation-contributed/v8/intl/assert.js delete mode 100644 implementation-contributed/v8/intl/bad-target.js delete mode 100644 implementation-contributed/v8/intl/bigint/tolocalestring.js delete mode 100644 implementation-contributed/v8/intl/break-iterator/default-locale.js delete mode 100644 implementation-contributed/v8/intl/break-iterator/en-break.js delete mode 100644 implementation-contributed/v8/intl/break-iterator/options.js delete mode 100644 implementation-contributed/v8/intl/break-iterator/property-override.js delete mode 100644 implementation-contributed/v8/intl/break-iterator/resolved-options-is-method.js delete mode 100644 implementation-contributed/v8/intl/break-iterator/subclass.js delete mode 100644 implementation-contributed/v8/intl/break-iterator/supported-locales-is-method.js delete mode 100644 implementation-contributed/v8/intl/break-iterator/zh-break.js delete mode 100644 implementation-contributed/v8/intl/collator/check-co-option.js delete mode 100644 implementation-contributed/v8/intl/collator/check-kf-option.js delete mode 100644 implementation-contributed/v8/intl/collator/check-kn-option.js delete mode 100644 implementation-contributed/v8/intl/collator/constructor-order.js delete mode 100644 implementation-contributed/v8/intl/collator/de-sort.js delete mode 100644 implementation-contributed/v8/intl/collator/default-locale.js delete mode 100644 implementation-contributed/v8/intl/collator/en-sort.js delete mode 100644 implementation-contributed/v8/intl/collator/normalization.js delete mode 100644 implementation-contributed/v8/intl/collator/options.js delete mode 100644 implementation-contributed/v8/intl/collator/property-override.js delete mode 100644 implementation-contributed/v8/intl/collator/resolved-options-is-method.js delete mode 100644 implementation-contributed/v8/intl/collator/sr-sort.js delete mode 100644 implementation-contributed/v8/intl/date-format/calendar-with-multiple-type-subtags.js delete mode 100644 implementation-contributed/v8/intl/date-format/check-ca-option.js delete mode 100644 implementation-contributed/v8/intl/date-format/check-hc-option.js delete mode 100644 implementation-contributed/v8/intl/date-format/check-nu-option.js delete mode 100644 implementation-contributed/v8/intl/date-format/constructor-date-style-order.js delete mode 100644 implementation-contributed/v8/intl/date-format/constructor-date-time-style-order.js delete mode 100644 implementation-contributed/v8/intl/date-format/constructor-date-time-style.js delete mode 100644 implementation-contributed/v8/intl/date-format/constructor-no-style-order.js delete mode 100644 implementation-contributed/v8/intl/date-format/constructor-order.js delete mode 100644 implementation-contributed/v8/intl/date-format/constructor-time-style-order.js delete mode 100644 implementation-contributed/v8/intl/date-format/date-format-to-parts.js delete mode 100644 implementation-contributed/v8/intl/date-format/default-locale.js delete mode 100644 implementation-contributed/v8/intl/date-format/format-is-bound.js delete mode 100644 implementation-contributed/v8/intl/date-format/format-test.js delete mode 100644 implementation-contributed/v8/intl/date-format/format-with-extensions.js delete mode 100644 implementation-contributed/v8/intl/date-format/invalid-time.js delete mode 100644 implementation-contributed/v8/intl/date-format/month-far-future.js delete mode 100644 implementation-contributed/v8/intl/date-format/property-override-date-style.js delete mode 100644 implementation-contributed/v8/intl/date-format/property-override-date-time-style.js delete mode 100644 implementation-contributed/v8/intl/date-format/property-override-time-style.js delete mode 100644 implementation-contributed/v8/intl/date-format/property-override.js delete mode 100644 implementation-contributed/v8/intl/date-format/resolved-options-is-method.js delete mode 100644 implementation-contributed/v8/intl/date-format/resolved-options-unwrap.js delete mode 100644 implementation-contributed/v8/intl/date-format/resolved-options.js delete mode 100644 implementation-contributed/v8/intl/date-format/timezone-conversion.js delete mode 100644 implementation-contributed/v8/intl/date-format/timezone-name.js delete mode 100644 implementation-contributed/v8/intl/date-format/timezone.js delete mode 100644 implementation-contributed/v8/intl/date-format/unmodified-options.js delete mode 100644 implementation-contributed/v8/intl/default_locale.js delete mode 100644 implementation-contributed/v8/intl/general/CanonicalizeLocaleListTakeLocale.js delete mode 100644 implementation-contributed/v8/intl/general/case-mapping.js delete mode 100644 implementation-contributed/v8/intl/general/constructor.js delete mode 100644 implementation-contributed/v8/intl/general/empty-handle.js delete mode 100644 implementation-contributed/v8/intl/general/getCanonicalLocales.js delete mode 100644 implementation-contributed/v8/intl/general/grandfathered_tags_without_preferred_value.js delete mode 100644 implementation-contributed/v8/intl/general/invalid-locale.js delete mode 100644 implementation-contributed/v8/intl/general/language_tags_with_preferred_values.js delete mode 100644 implementation-contributed/v8/intl/general/mapped-locale.js delete mode 100644 implementation-contributed/v8/intl/general/smp-identifier.js delete mode 100644 implementation-contributed/v8/intl/general/supported-locales-of.js delete mode 100644 implementation-contributed/v8/intl/intl.status delete mode 100644 implementation-contributed/v8/intl/list-format/constructor-order.js delete mode 100644 implementation-contributed/v8/intl/list-format/constructor.js delete mode 100644 implementation-contributed/v8/intl/list-format/format-en.js delete mode 100644 implementation-contributed/v8/intl/list-format/format-to-parts.js delete mode 100644 implementation-contributed/v8/intl/list-format/format.js delete mode 100644 implementation-contributed/v8/intl/list-format/formatToParts-zh.js delete mode 100644 implementation-contributed/v8/intl/list-format/resolved-options.js delete mode 100644 implementation-contributed/v8/intl/list-format/supported-locale.js delete mode 100644 implementation-contributed/v8/intl/locale/locale-canonicalization.js delete mode 100644 implementation-contributed/v8/intl/locale/locale-constructor.js delete mode 100644 implementation-contributed/v8/intl/locale/locale-properties.js delete mode 100644 implementation-contributed/v8/intl/locale/maximize_minimize.js delete mode 100644 implementation-contributed/v8/intl/locale/property.js delete mode 100644 implementation-contributed/v8/intl/locale/regress-8032.js delete mode 100644 implementation-contributed/v8/intl/not-constructors.js delete mode 100644 implementation-contributed/v8/intl/number-format/check-digit-ranges.js delete mode 100755 implementation-contributed/v8/intl/number-format/check-minimum-fraction-digits.js delete mode 100644 implementation-contributed/v8/intl/number-format/check-nu-option.js delete mode 100644 implementation-contributed/v8/intl/number-format/constructor-order.js delete mode 100644 implementation-contributed/v8/intl/number-format/default-locale.js delete mode 100755 implementation-contributed/v8/intl/number-format/format-currency.js delete mode 100644 implementation-contributed/v8/intl/number-format/format-is-bound.js delete mode 100644 implementation-contributed/v8/intl/number-format/options.js delete mode 100644 implementation-contributed/v8/intl/number-format/property-override.js delete mode 100644 implementation-contributed/v8/intl/number-format/resolved-options-is-method.js delete mode 100644 implementation-contributed/v8/intl/number-format/resolved-options-unwrap.js delete mode 100644 implementation-contributed/v8/intl/number-format/wont-crash-by-1-or-false.js delete mode 100644 implementation-contributed/v8/intl/overrides/caching.js delete mode 100644 implementation-contributed/v8/intl/overrides/date.js delete mode 100644 implementation-contributed/v8/intl/overrides/number.js delete mode 100644 implementation-contributed/v8/intl/overrides/security.js delete mode 100644 implementation-contributed/v8/intl/overrides/string.js delete mode 100644 implementation-contributed/v8/intl/overrides/webkit-tests.js delete mode 100644 implementation-contributed/v8/intl/plural-rules/check-to-number.js delete mode 100644 implementation-contributed/v8/intl/plural-rules/constructor-order.js delete mode 100644 implementation-contributed/v8/intl/regress-4870.js delete mode 100644 implementation-contributed/v8/intl/regress-5179.js delete mode 100644 implementation-contributed/v8/intl/regress-7481.js delete mode 100644 implementation-contributed/v8/intl/regress-7770.js delete mode 100644 implementation-contributed/v8/intl/regress-7982.js delete mode 100644 implementation-contributed/v8/intl/regress-8030.js delete mode 100644 implementation-contributed/v8/intl/regress-8031.js delete mode 100644 implementation-contributed/v8/intl/regress-8432.js delete mode 100644 implementation-contributed/v8/intl/regress-8469.js delete mode 100644 implementation-contributed/v8/intl/regress-8525.js delete mode 100644 implementation-contributed/v8/intl/regress-8657.js delete mode 100644 implementation-contributed/v8/intl/regress-8725514.js delete mode 100644 implementation-contributed/v8/intl/regress-875643.js delete mode 100644 implementation-contributed/v8/intl/regress-888299.js delete mode 100644 implementation-contributed/v8/intl/regress-895942.js delete mode 100644 implementation-contributed/v8/intl/regress-900013.js delete mode 100644 implementation-contributed/v8/intl/regress-903566.js delete mode 100644 implementation-contributed/v8/intl/regress-917151.js delete mode 100644 implementation-contributed/v8/intl/regress-925216.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/constructor-order.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/constructor.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/default-locale-fr-CA.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/default-locale-pt-BR.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/format-en.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/format-to-parts-en.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/format-to-parts-plural.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/format-to-parts.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/format.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/resolved-options-nu.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/resolved-options.js delete mode 100644 implementation-contributed/v8/intl/relative-time-format/supported-locale.js delete mode 100644 implementation-contributed/v8/intl/segmenter/check-lb-option.js delete mode 100644 implementation-contributed/v8/intl/segmenter/constructor-order.js delete mode 100644 implementation-contributed/v8/intl/segmenter/constructor.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-grapheme-following.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-grapheme-iterable.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-grapheme-next.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-grapheme-preceding.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-grapheme.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-iterator-following.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-iterator-ownPropertyDescriptor.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-iterator-position.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-iterator-preceding.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-iterator.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-sentence-following.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-sentence-iterable.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-sentence-next.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-sentence-preceding.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-sentence.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-word-following.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-word-iterable.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-word-next.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-word-preceding.js delete mode 100644 implementation-contributed/v8/intl/segmenter/segment-word.js delete mode 100644 implementation-contributed/v8/intl/string/normalization.js delete mode 100644 implementation-contributed/v8/intl/testcfg.py delete mode 100644 implementation-contributed/v8/intl/toStringTag.js delete mode 100644 implementation-contributed/v8/intl/utils.js delete mode 100644 implementation-contributed/v8/mjsunit/BUILD.gn delete mode 100644 implementation-contributed/v8/mjsunit/accessor-map-sharing.js delete mode 100644 implementation-contributed/v8/mjsunit/accessors-no-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/accessors-on-global-object.js delete mode 100644 implementation-contributed/v8/mjsunit/allocation-folding.js delete mode 100644 implementation-contributed/v8/mjsunit/allocation-site-info.js delete mode 100644 implementation-contributed/v8/mjsunit/api-call-after-bypassed-exception.js delete mode 100644 implementation-contributed/v8/mjsunit/apply-arguments-gc-safepoint.js delete mode 100644 implementation-contributed/v8/mjsunit/apply.js delete mode 100644 implementation-contributed/v8/mjsunit/argument-assigned.js delete mode 100644 implementation-contributed/v8/mjsunit/argument-named-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-apply-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-apply.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-call-apply.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-enum.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-escape.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-indirect.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-lazy.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-load-across-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments-read-and-assignment.js delete mode 100644 implementation-contributed/v8/mjsunit/arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/array-bounds-check-removal.js delete mode 100644 implementation-contributed/v8/mjsunit/array-concat.js delete mode 100644 implementation-contributed/v8/mjsunit/array-construct-transition.js delete mode 100644 implementation-contributed/v8/mjsunit/array-constructor-feedback.js delete mode 100644 implementation-contributed/v8/mjsunit/array-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/array-elements-from-array-prototype-chain.js delete mode 100644 implementation-contributed/v8/mjsunit/array-elements-from-array-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/array-elements-from-object-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/array-feedback.js delete mode 100644 implementation-contributed/v8/mjsunit/array-foreach.js delete mode 100644 implementation-contributed/v8/mjsunit/array-from-large-set.js delete mode 100644 implementation-contributed/v8/mjsunit/array-functions-prototype-misc.js delete mode 100644 implementation-contributed/v8/mjsunit/array-functions-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/array-indexing-receiver.js delete mode 100644 implementation-contributed/v8/mjsunit/array-indexing.js delete mode 100644 implementation-contributed/v8/mjsunit/array-isarray.js delete mode 100644 implementation-contributed/v8/mjsunit/array-iteration.js delete mode 100644 implementation-contributed/v8/mjsunit/array-iterator-prototype-next.js delete mode 100644 implementation-contributed/v8/mjsunit/array-join-element-tostring-prototype-side-effects.js delete mode 100644 implementation-contributed/v8/mjsunit/array-join-element-tostring-side-effects.js delete mode 100644 implementation-contributed/v8/mjsunit/array-join-index-getter-side-effects.js delete mode 100644 implementation-contributed/v8/mjsunit/array-join-invalid-string-length.js delete mode 100644 implementation-contributed/v8/mjsunit/array-join-nesting.js delete mode 100644 implementation-contributed/v8/mjsunit/array-join-nonarray-length-getter-side-effects.js delete mode 100644 implementation-contributed/v8/mjsunit/array-join-separator-tostring-side-effects.js delete mode 100644 implementation-contributed/v8/mjsunit/array-join.js delete mode 100644 implementation-contributed/v8/mjsunit/array-lastindexof.js delete mode 100644 implementation-contributed/v8/mjsunit/array-length-number-conversion.js delete mode 100644 implementation-contributed/v8/mjsunit/array-length.js delete mode 100644 implementation-contributed/v8/mjsunit/array-literal-feedback.js delete mode 100644 implementation-contributed/v8/mjsunit/array-literal-transitions.js delete mode 100644 implementation-contributed/v8/mjsunit/array-methods-read-only-length.js delete mode 100644 implementation-contributed/v8/mjsunit/array-natives-elements.js delete mode 100644 implementation-contributed/v8/mjsunit/array-non-smi-length.js delete mode 100644 implementation-contributed/v8/mjsunit/array-pop.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-every.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-filter.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-find.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-findindex.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-foreach.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-includes.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-indexof.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-lastindexof.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-map.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-pop.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-reduce.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-slice.js delete mode 100644 implementation-contributed/v8/mjsunit/array-prototype-some.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push-hole-double.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push-non-smi-value.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push10.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push11.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push12.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push13.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push14.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push2.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push3.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push4.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push5.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push6.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push8.js delete mode 100644 implementation-contributed/v8/mjsunit/array-push9.js delete mode 100644 implementation-contributed/v8/mjsunit/array-reduce.js delete mode 100644 implementation-contributed/v8/mjsunit/array-reverse.js delete mode 100644 implementation-contributed/v8/mjsunit/array-shift.js delete mode 100644 implementation-contributed/v8/mjsunit/array-shift2.js delete mode 100644 implementation-contributed/v8/mjsunit/array-shift3.js delete mode 100644 implementation-contributed/v8/mjsunit/array-shift4.js delete mode 100644 implementation-contributed/v8/mjsunit/array-shift5.js delete mode 100644 implementation-contributed/v8/mjsunit/array-slice.js delete mode 100644 implementation-contributed/v8/mjsunit/array-sort.js delete mode 100644 implementation-contributed/v8/mjsunit/array-splice.js delete mode 100644 implementation-contributed/v8/mjsunit/array-store-and-grow.js delete mode 100644 implementation-contributed/v8/mjsunit/array-tolocalestring.js delete mode 100644 implementation-contributed/v8/mjsunit/array-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/array-unshift.js delete mode 100644 implementation-contributed/v8/mjsunit/arrow-with.js delete mode 100644 implementation-contributed/v8/mjsunit/ascii-regexp-subject.js delete mode 100644 implementation-contributed/v8/mjsunit/asm-directive.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/asm-heap.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/asm-memory.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/asm-stdlib.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/asm-validation.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/atomics-add.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/atomics-and.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/atomics-compareexchange.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/atomics-exchange.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/atomics-load.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/atomics-or.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/atomics-store.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/atomics-sub.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/atomics-xor.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/b5528-comma.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/call-annotation.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/call-collisions.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/call-stdlib.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/do-while-false.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/do-while.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/embenchen/box2d.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/embenchen/copy.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/embenchen/corrections.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/embenchen/fannkuch.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/embenchen/fasta.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/embenchen/lua_binarytrees.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/embenchen/memops.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/embenchen/primes.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/embenchen/zlib.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/float32array-negative-offset.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/float32array-outofbounds.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/float32array-store-div.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/float64array-negative-offset.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/float64array-outofbounds.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/float64array-store-div.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/float64mul.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/global-imports.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/if-cloning.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/if-folding.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/if-reduction.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/if-tonumber.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/immutable.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/infinite-loops-taken.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/infinite-loops.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int16array-negative-offset.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int16array-outofbounds.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32-div.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32-mod.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32-mul.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32-tmod.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32-udiv.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32-umod.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32array-constant-key.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32array-negative-offset.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32array-outofbounds.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32array-unaligned.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32div.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32mod-constant.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32mod.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int32modb.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/int8array-negative-offset.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/load-elimination.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/math-abs.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/math-ceil.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/math-clz32.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/math-floor.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/math-fround.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/math-max.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/math-min.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/noexpose-wasm.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/pointer-masking.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/poppler/poppler.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/redundancy1.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/redundancy2.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-641885.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-660813.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-669899.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-672045.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-674089.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-676573.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-681707.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-718745.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-719866.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-740325.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-913822.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/regress-920076.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/return-types.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/sign-extend.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-change-heap.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-pointer-masking.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-safe-heap.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/switch.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/uint32-less-than-shift.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/uint32div.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/uint32mod-constant.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/uint32mod.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/uint8array-outofbounds.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/word32and.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/word32ror.js delete mode 100644 implementation-contributed/v8/mjsunit/asm/zero-extend.js delete mode 100644 implementation-contributed/v8/mjsunit/async-hooks/api-methods.js delete mode 100644 implementation-contributed/v8/mjsunit/async-hooks/async-await-tree.js delete mode 100644 implementation-contributed/v8/mjsunit/async-hooks/chained-promises.js delete mode 100644 implementation-contributed/v8/mjsunit/async-hooks/execution-order.js delete mode 100644 implementation-contributed/v8/mjsunit/async-hooks/promises-async-await.js delete mode 100644 implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-1.js delete mode 100644 implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-2.js delete mode 100644 implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-3.js delete mode 100644 implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-4.js delete mode 100644 implementation-contributed/v8/mjsunit/async-stack-traces-promise-all.js delete mode 100644 implementation-contributed/v8/mjsunit/async-stack-traces.js delete mode 100644 implementation-contributed/v8/mjsunit/basic-promise.js delete mode 100644 implementation-contributed/v8/mjsunit/big-array-literal.js delete mode 100644 implementation-contributed/v8/mjsunit/big-object-literal.js delete mode 100644 implementation-contributed/v8/mjsunit/binary-op-newspace.js delete mode 100644 implementation-contributed/v8/mjsunit/binary-operation-overwrite.js delete mode 100644 implementation-contributed/v8/mjsunit/bit-not.js delete mode 100644 implementation-contributed/v8/mjsunit/bitops-info.js delete mode 100644 implementation-contributed/v8/mjsunit/bitwise-operations-bools.js delete mode 100644 implementation-contributed/v8/mjsunit/bitwise-operations-undefined.js delete mode 100644 implementation-contributed/v8/mjsunit/body-not-visible.js delete mode 100644 implementation-contributed/v8/mjsunit/bool-concat.js delete mode 100644 implementation-contributed/v8/mjsunit/boolean.js delete mode 100644 implementation-contributed/v8/mjsunit/bounds-checks-elimination.js delete mode 100644 implementation-contributed/v8/mjsunit/break.js delete mode 100644 implementation-contributed/v8/mjsunit/bugs/bug-1344252.js delete mode 100644 implementation-contributed/v8/mjsunit/bugs/bug-222.js delete mode 100644 implementation-contributed/v8/mjsunit/bugs/bug-617.js delete mode 100644 implementation-contributed/v8/mjsunit/bugs/bug-941049.js delete mode 100644 implementation-contributed/v8/mjsunit/bugs/bug-proto.js delete mode 100644 implementation-contributed/v8/mjsunit/call-cross-realm.js delete mode 100644 implementation-contributed/v8/mjsunit/call-intrinsic-type-error.js delete mode 100644 implementation-contributed/v8/mjsunit/call-non-function-call.js delete mode 100644 implementation-contributed/v8/mjsunit/call-non-function.js delete mode 100644 implementation-contributed/v8/mjsunit/call-stub.js delete mode 100644 implementation-contributed/v8/mjsunit/call.js delete mode 100644 implementation-contributed/v8/mjsunit/char-escape.js delete mode 100644 implementation-contributed/v8/mjsunit/class-of-builtins.js delete mode 100644 implementation-contributed/v8/mjsunit/closure.js delete mode 100644 implementation-contributed/v8/mjsunit/closures.js delete mode 100644 implementation-contributed/v8/mjsunit/code-comments.js delete mode 100644 implementation-contributed/v8/mjsunit/code-coverage-ad-hoc.js delete mode 100644 implementation-contributed/v8/mjsunit/code-coverage-block-noopt.js delete mode 100644 implementation-contributed/v8/mjsunit/code-coverage-block-opt.js delete mode 100644 implementation-contributed/v8/mjsunit/code-coverage-block.js delete mode 100644 implementation-contributed/v8/mjsunit/code-coverage-class-fields.js delete mode 100644 implementation-contributed/v8/mjsunit/code-coverage-precise.js delete mode 100644 implementation-contributed/v8/mjsunit/code-coverage-utils.js delete mode 100644 implementation-contributed/v8/mjsunit/codegen-coverage.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-character.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-known-objects-slow.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-known-objects-tostringtag.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-known-objects.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-nan.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-nil.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-objects.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-table-eq.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-table-gt.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-table-gteq.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-table-lt.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-table-lteq.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-table-ne.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-table-seq.js delete mode 100644 implementation-contributed/v8/mjsunit/compare-table-sne.js delete mode 100644 implementation-contributed/v8/mjsunit/comparison-ops-and-undefined.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler-regress-787301.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/abstract-equal-receiver.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/abstract-equal-symbol.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/abstract-equal-undetectable.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/accessor-exceptions1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/accessor-exceptions2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/alloc-number-debug.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/alloc-number.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/alloc-object-huge.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/alloc-object.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-access.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-buffer-is-view.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-every.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-find.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-findindex.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-is-array.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-length.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-multiple-receiver-maps.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-push-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-push-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-push-3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-slice-clone.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-some.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-species.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/array-subclass.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/assignment-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/assignment.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/binary-ops.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/boolean-protototype.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/call-keyed.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/capture-context.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/compare-map-elim.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/compare-map-elim2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/compare-objeq-elim.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/compare.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/complex-for-in.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/concurrent-invalidate-transition-map.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/concurrent-proto-change.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/constant-fold-cow-array.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/constant-fold-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/constructor-inlining.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/context-sensitivity.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/control-flow-0.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/control-flow-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/control-flow-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/count-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/countoperation.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dataview-constant.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dataview-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dataview-get.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dataview-neutered.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dataview-nonconstant.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dataview-set.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-code.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-code2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-code3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-code4.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-code5.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-code6.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-loops-neg.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-loops.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-string-add-warm.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dead-string-add.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/delete.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-accessors1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-accessors2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-accessors3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-accessors4.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-accessors5.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-accessors6.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-accessors7.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-args.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-builtins.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-iterator-prototype-next.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-every.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-filter.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-find.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-findindex.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-foreach.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-includes.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-indexof.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-lastindexof.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-map.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-pop.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-reduce.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-slice.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-some.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-array-push.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-bool.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-bool2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-closure.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-during-eval-lookup.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-eager-and-lazy.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-eager-var-mutation-ite.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-eager-with-freeze.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-followed-by-gc.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-inlined-from-call.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-inlined-smi.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-lazy-freeze.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-lazy-shape-mutation.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-lazy-var-mutation.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-many-lazy.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-materialize-accumulator.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-now-lazy.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-numberoroddball-binop.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-simple-eager.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-simple-lazy.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-simple-try-catch.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-soft-simple.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-string-outofbounds.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-binop.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-compare.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-shift.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-twice-on-call.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deopt-twice.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/deoptimize-lazy-weak.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/division-by-constant.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/dont-constant-fold-deopting-checks.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/double-array-to-global.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/eager-deopt-simple.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-10.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-11.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-12.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-13.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-15.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-16.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-17.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-18.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-4.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-5.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-6.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-7.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-8.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-9.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-array.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-cycle.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-4.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-5.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-6.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-framestate-use-at-branchpoint.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-materialize.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-phi-type-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-phi-type.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-replacement.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-representation.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-rest-parameters.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-type-none-in-object-state.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis-typeguard.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/escape-analysis.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/eval-introduced-closure.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/expression-trees.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/feedback-after-throw.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/for-in-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/for-in-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/for-in-3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/for-in-4.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/for-in-5.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/for-stmt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/function-apply.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/function-bind.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/function-call.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/function-caller.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/generic-add.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/global-accessors.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/global-delete.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/global-var-delete.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/globals.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/increment-typefeedback.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-accessors1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-accessors2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-arity-mismatch.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-closures.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-compare.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-conditional.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-construct.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-context-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-context-slots.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-dead-jscreate.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-exception-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-exception-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-function-apply.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-global-access.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-literals.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments-object.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-param.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments-object.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-throw.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inline-two.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-getter1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-getter2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-opt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inlined-call-mapcheck.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/inlined-call.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/instance-of-overridden-has-instance.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/instanceof-opt1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/instanceof-opt2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/instanceof-opt3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/instanceof.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/instanceof2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/instanceof3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/int64.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/integral32-add-sub.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/lazy-const-lookup.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/lazy-deopt-async-function-resolve.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/lazy-deopt-in-literal.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/lazy-iife-no-parens.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/literals-assignment.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/literals-optimized.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/literals.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/load-elimination-global.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/load-elimination-osr.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/load-elimination-params.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/load-elimination.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/logical-and.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/logical-or.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/loopcount.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/loops.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/manual-concurrent-recompile.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/materialize-dictionary-properties.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/materialize-mutable-heap-number.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-ceil.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-floor-global.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-floor-local.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-imul.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-max.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-min.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-mul.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-round.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-sign.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/math-trunc.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/minus-zero.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/mul-div-52bit.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/multiply-add.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/multiply-sub.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/named-load.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/named-store.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/nary-binary-ops.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/native-context-specialization-hole-check.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/native-context-specialization-string-concat.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/new-cons-string.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/null-compare.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-abs.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-add.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-ceil.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-comparison-truncations.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-constructor-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-divide.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-floor.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-isfinite-inl.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-isfinite.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-isinteger-inl.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-isinteger.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-isnan.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-issafeinteger.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-max.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-min.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-modulus.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-multiply.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-round.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-subtract.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-toboolean.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/number-trunc.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/object-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/object-create.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/object-getprototypeof.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/object-is.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/object-isprototypeof.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/objectliterals.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/opt-next-call-turbo.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/opt-next-call.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimize-bitnot.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimize_max.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimize_min.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-closures.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-float32array-length.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-float64array-length.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-for-in.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-function-calls.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-instanceof-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-instanceof-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-int32array-length.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-uint32array-length.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/optimized-with.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-alignment.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-array-len.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-assert.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-backedges1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-big.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-block-scope-func.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-block-scope-id.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-block-scope.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-follow.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-for-let.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-forin-nested.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-forin.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-forof.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-function-id.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-function-id2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-function.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-infinite.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-labeled.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-literals-adapted.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-literals.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-manual1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-manual2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-maze1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-maze2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-multiple.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-multiple2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-multiple3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-nested.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-nested2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-nested2b.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-nested3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-nested3b.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-one.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-regex-id.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-regress-max-locals.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-sar.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-simple.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-top1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-top2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-top3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-try-catch.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-two.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-uint32.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-warm.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-while-let.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/osr-with-args.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/phi-representations.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/pic.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/polymorphic-symbols.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-capability-default-closures.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-custom-then-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-custom-then-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-subclass.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-custom-then-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-custom-then-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-subclass.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-prototype-then.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-resolve-stable-maps.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-resolve.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/promise-species.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/property-calls.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/property-refs.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/property-simple.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/property-static.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/property-stores.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/proto-chain-constant.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/proto-chain-load.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/receiver-conversion.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/recursive-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/redundancy-elimination.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/reflect-apply.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/reflect-construct.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/reflect-get.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/reflect-getprototypeof.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/reflect-has.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-0.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-106351.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-1085.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-1394.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-177883.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-3136962.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-3185901.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-3218915.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-3249650.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-3260426.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-3786.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-3812.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-411262.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-416359.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4206.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4207.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4389-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4389-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4389-3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4389-4.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4389-5.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4389-6.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-439743.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4413-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-443744.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-444508.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-444695.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-445267.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-445732.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-445858.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-445859.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-445876.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-445907.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-446156.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-446647.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-446778.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-4470-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-447567.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-451012.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-452427.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-463056.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-468162.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-468727.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-469089.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-491578.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-5.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-5074.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-5100.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-5129.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-5158.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-5278.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-5320.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-5538.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-572409.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-6.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-600593.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-607493.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-621147.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-621423.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-625558.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-625966.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-626986.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-628403.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-628516.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-628773.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-630611.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-633497.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-638132.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-639210.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-644048.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-644633.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-645851.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-650215.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-664117.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-664490.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-665680.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-668760.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-669517.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-671574.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-673244.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-674469.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-675704.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-693425.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-694088.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-7.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-700883.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-7121.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-713367.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-714483.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-715204.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-715651.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-725743.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-726554.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-729369.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-731495.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-733181.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-736567.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-739902.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-758096.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-758983.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-761892.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-762057.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-772420.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-772872.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-773954.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-780658.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-786521.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-788539.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-791245.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-793863.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-796041.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-797596.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-799263.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-8.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-801097.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-803022.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-808472.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-815392.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-817225.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-8380.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-841117.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-884052.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-888923.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-890057.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-890620.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-895799.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-902608.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-905555-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-905555.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-910838.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-913232.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-919754.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-924151.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-arrayliteral.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-bit-number-constant.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-closures-with-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-compare-negate.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-const.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-crbug-540593.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-dead-throw-inlining.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-deopt-call-as-function.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-escape-analysis-indirect.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-f64-w32-change.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-funarguments.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-funcaller.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-gap.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-gvn.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-inline-callfunctionstub.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-int32array-outofbounds-nan.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-intoverflow.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-lazy-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-lbranch-double.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-loadfield.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-loop-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-loop-variable-if.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-loop-variable-unsigned.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-math-sign-nan-type.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-max.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-ntl-effect.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-number-is-hole-nan.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-or.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-register-allocator.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-register-allocator2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-register-allocator3.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-rep-change.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-serialized-slots.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-shared-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-shift-left.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-shift-right-logical.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-shift-right.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-stacktrace-methods.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-stacktrace.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-store-holey-double-array.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-string-to-number-add.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-to-number-binop-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-toint32.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-truncate-number-or-undefined-to-float64.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-v8-5573.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-v8-5756.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-v8-6077.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-v8-6631.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-variable-liveness-let.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/regress-variable-liveness.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/rest-parameters.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/rotate.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/safepoint.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/shift-shr.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/short-circuit.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/simple-bailouts.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/simple-binary-op.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/simple-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/simple-global-access.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/simple-inlining.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/smi-stores-opt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/spread-call.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/store-elimination.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/stress-deopt-count-1.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/stress-deopt-count-2.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/strict-equal-number.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/strict-equal-receiver.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/strict-equal-symbol.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/strict-recompile.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/string-add-try-catch.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/string-comparison-opt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/string-concat-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/string-concat-try-catch.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/string-concat-yield.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/string-from-code-point.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/string-length.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/string-slice.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/switch-bailout.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/symbol-protototype.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/this-property-refs.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/thisfunction.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/to-fast-properties.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/truncating-store-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/truncating-store.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/try-binop.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/try-catch-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/try-context.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/try-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/try-finally-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/try-osr.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/turbo-number-feedback.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/type-speculative-safe-integer-add.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/typed-array-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/typedarray-prototype-tostringtag.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/uint32.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/uint8-clamped-array.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/unary-add.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/unsigned-min-max.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/varargs.js delete mode 100644 implementation-contributed/v8/mjsunit/compiler/variables.js delete mode 100644 implementation-contributed/v8/mjsunit/concurrent-initial-prototype-change.js delete mode 100644 implementation-contributed/v8/mjsunit/console.js delete mode 100644 implementation-contributed/v8/mjsunit/const-field-tracking.js delete mode 100644 implementation-contributed/v8/mjsunit/constant-compare-nil-value.js delete mode 100644 implementation-contributed/v8/mjsunit/constant-fold-control-instructions.js delete mode 100644 implementation-contributed/v8/mjsunit/constant-folding-2.js delete mode 100644 implementation-contributed/v8/mjsunit/constant-folding.js delete mode 100644 implementation-contributed/v8/mjsunit/context-calls-maintained.js delete mode 100644 implementation-contributed/v8/mjsunit/context-variable-assignments.js delete mode 100644 implementation-contributed/v8/mjsunit/contextual-calls.js delete mode 100644 implementation-contributed/v8/mjsunit/copy-on-write-assert.js delete mode 100644 implementation-contributed/v8/mjsunit/cross-realm-filtering.js delete mode 100644 implementation-contributed/v8/mjsunit/cross-realm-global-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/cyclic-array-to-string.js delete mode 100644 implementation-contributed/v8/mjsunit/cyrillic.js delete mode 100644 implementation-contributed/v8/mjsunit/d8/d8-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/d8/d8-no-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/d8/d8-os.js delete mode 100644 implementation-contributed/v8/mjsunit/d8/d8-performance-now.js delete mode 100644 implementation-contributed/v8/mjsunit/d8/d8-worker-script.js delete mode 100644 implementation-contributed/v8/mjsunit/d8/d8-worker-script.txt delete mode 100644 implementation-contributed/v8/mjsunit/d8/d8-worker-sharedarraybuffer.js delete mode 100644 implementation-contributed/v8/mjsunit/d8/d8-worker-spawn-worker.js delete mode 100644 implementation-contributed/v8/mjsunit/d8/d8-worker.js delete mode 100644 implementation-contributed/v8/mjsunit/d8/enable-tracing.js delete mode 100644 implementation-contributed/v8/mjsunit/date-parse.js delete mode 100644 implementation-contributed/v8/mjsunit/date.js delete mode 100644 implementation-contributed/v8/mjsunit/debugPrint.js delete mode 100644 implementation-contributed/v8/mjsunit/declare-locally.js delete mode 100644 implementation-contributed/v8/mjsunit/deep-recursion.js delete mode 100644 implementation-contributed/v8/mjsunit/default-nospec.js delete mode 100644 implementation-contributed/v8/mjsunit/define-property-gc.js delete mode 100644 implementation-contributed/v8/mjsunit/dehoisted-array-index.js delete mode 100644 implementation-contributed/v8/mjsunit/delay-syntax-error.js delete mode 100644 implementation-contributed/v8/mjsunit/delete-global-properties.js delete mode 100644 implementation-contributed/v8/mjsunit/delete-in-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/delete-in-with.js delete mode 100644 implementation-contributed/v8/mjsunit/delete-non-configurable.js delete mode 100644 implementation-contributed/v8/mjsunit/delete-vars-from-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/delete.js delete mode 100644 implementation-contributed/v8/mjsunit/deopt-global-accessor.js delete mode 100644 implementation-contributed/v8/mjsunit/deopt-minus-zero.js delete mode 100644 implementation-contributed/v8/mjsunit/deopt-recursive-eager-once.js delete mode 100644 implementation-contributed/v8/mjsunit/deopt-recursive-lazy-once.js delete mode 100644 implementation-contributed/v8/mjsunit/deopt-recursive-soft-once.js delete mode 100644 implementation-contributed/v8/mjsunit/deopt-unlinked.js delete mode 100644 implementation-contributed/v8/mjsunit/deopt-with-fp-regs.js delete mode 100644 implementation-contributed/v8/mjsunit/deopt-with-outer-context.js delete mode 100644 implementation-contributed/v8/mjsunit/deserialize-optimize-inner.js delete mode 100644 implementation-contributed/v8/mjsunit/deserialize-reference.js delete mode 100644 implementation-contributed/v8/mjsunit/dictionary-properties.js delete mode 100644 implementation-contributed/v8/mjsunit/dictionary-prototypes.js delete mode 100644 implementation-contributed/v8/mjsunit/disallow-codegen-from-strings.js delete mode 100644 implementation-contributed/v8/mjsunit/div-mod.js delete mode 100644 implementation-contributed/v8/mjsunit/div-mul-minus-one.js delete mode 100644 implementation-contributed/v8/mjsunit/do-not-strip-fc.js delete mode 100644 implementation-contributed/v8/mjsunit/dont-enum-array-holes.js delete mode 100644 implementation-contributed/v8/mjsunit/dont-reinit-global-var.js delete mode 100644 implementation-contributed/v8/mjsunit/double-equals.js delete mode 100644 implementation-contributed/v8/mjsunit/double-truncation.js delete mode 100644 implementation-contributed/v8/mjsunit/dtoa.js delete mode 100644 implementation-contributed/v8/mjsunit/duplicate-parameters.js delete mode 100644 implementation-contributed/v8/mjsunit/eagerly-parsed-lazily-compiled-functions.js delete mode 100644 implementation-contributed/v8/mjsunit/element-accessor.js delete mode 100644 implementation-contributed/v8/mjsunit/element-read-only.js delete mode 100644 implementation-contributed/v8/mjsunit/elements-kind-depends.js delete mode 100644 implementation-contributed/v8/mjsunit/elements-kind.js delete mode 100644 implementation-contributed/v8/mjsunit/elements-length-no-holey.js delete mode 100644 implementation-contributed/v8/mjsunit/elements-transition-and-store.js delete mode 100644 implementation-contributed/v8/mjsunit/elements-transition-hoisting.js delete mode 100644 implementation-contributed/v8/mjsunit/elements-transition.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-1.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-10.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-11.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-12.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-2.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-3.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-4.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-5.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-6.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-7.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-8.js delete mode 100644 implementation-contributed/v8/mjsunit/elide-double-hole-check-9.js delete mode 100644 implementation-contributed/v8/mjsunit/empirical_max_arraybuffer.js delete mode 100644 implementation-contributed/v8/mjsunit/ensure-growing-store-learns.js delete mode 100644 implementation-contributed/v8/mjsunit/enumeration-order.js delete mode 100644 implementation-contributed/v8/mjsunit/error-accessors.js delete mode 100644 implementation-contributed/v8/mjsunit/error-constructors.js delete mode 100644 implementation-contributed/v8/mjsunit/error-tostring-omit.js delete mode 100644 implementation-contributed/v8/mjsunit/error-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/arguments-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-concat-revoked-proxy-1.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-concat-revoked-proxy-2.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-concat.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-copywithin.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-fill-receiver.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-fill.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-find.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-findindex.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-from.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-iterator-detached.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-iterator-turbo.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-length.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-of.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-prototype-values.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-reverse-order.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-species-constructor-accessor.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-species-constructor-delete.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-species-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-species-delete.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-species-modified.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-species-neg-zero.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-species-parent-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-species-proto.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-species.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-spread-holey.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-spread-large-holey.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/array-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/arraybuffer-species.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/arrow-functions-lexical-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/arrow-functions-this.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/arrow-functions.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/arrow-rest-params-lazy-parsing.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/arrow-rest-params.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-conflicts-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-conflicts.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-const-assign-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-const-assign.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-eval-var-over-let.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-for-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-for.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-leave-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-leave.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-let-contextual-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-let-crankshaft-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-let-crankshaft.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-let-declaration-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-let-declaration.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-let-semantics-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-let-semantics.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-scope-class.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-scoping-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-scoping-top-level-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-scoping-top-level.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-scoping.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/block-sloppy-function.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/built-in-accessor-names.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/call-with-spread-modify-array-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/call-with-spread-modify-next.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/call-with-spread.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/catch-parameter-redeclaration.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/class-computed-property-names-super.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/class-property-name-eval-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/classes-derived-return-type.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/classes-experimental.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/classes-lazy-parsing.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/classes-maps.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/classes-proxy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/classes-subclass-arrays.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/classes-subclass-builtins.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/classes-super.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/classes.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/collection-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/collections-constructor-custom-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/collections-constructor-iterator-side-effect.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/collections-constructor-with-modified-array-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/collections-constructor-with-modified-protoype.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/collections.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/completion.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/computed-property-names-classes.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/computed-property-names-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/computed-property-names-object-literals-methods.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/computed-property-names-super.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/computed-property-names.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/dataview-length.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/debug-promises/throw-with-undefined-reject.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/default-parameters-destructuring.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/default-parameters.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/destructuring-assignment-lazy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/destructuring-assignment.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/destructuring-parameters-literalcount-nolazy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/destructuring-parameters-literalcount.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/destructuring.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/empty-for.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/for-each-in-catch.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/for-of.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/function-length-configurable.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/function-name-configurable.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/function-name.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/function-prototype-name.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/generator-destructuring.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/generators-iteration.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/generators-objects.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/generators-parsing.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/generators-poisoned-properties.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/generators-runtime.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/generators-states.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/global-proto-proxy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/hasinstance-symbol.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/indexed-integer-exotics.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/instanceof-proxies.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/instanceof.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/iteration-semantics.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/iteration-syntax.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/iterator-close.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/iterator-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/json.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect2.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect3.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect4.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-1.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-10.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-11.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-2.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-3.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-4.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-5.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-6.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-7.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-8.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-iterator-9.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/map-minus-zero.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-cbrt.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-clz32.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-expm1.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-fround.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-hyperbolic.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-hypot.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-log1p.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-log2-log10.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-sign.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math-trunc.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/math.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/method-name-eval-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/microtask-delivery.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/new-target.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/numeric-literals.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/object-assign.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/object-literals-method.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/object-literals-property-shorthand.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/object-literals-super.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/object-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/pattern-brand-check.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/promise-all-overflow-1.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/promise-all-overflow-2.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/promise-all.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/promise-internal-setter.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/promise-lookup-getter-setter.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/promise-resolve-thenable-job.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/promise-species.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/promise-thenable-proxy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/prototype-ordinary-objects.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-accesschecks.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-apply.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-bind.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-construct.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-cross-realm-exception.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-define-property.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-delete-property.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-example-membrane.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-for.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-function.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-get-own-property-descriptor.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-get-prototype-of.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-get.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-global-reference.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-has-own-property.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-has.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-hash.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-integrity.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-is-extensible.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-json.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-keys.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-object-assign.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-ownkeys.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-prevent-extensions.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-property-is-enumerable.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-prototype-handler-stackoverflow.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-prototype-target-stackoverflow.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-revocable.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-set-prototype-of.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-set.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-with-unscopables.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies-with.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxies.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/proxy-function-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/reflect-apply.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/reflect-construct.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/reflect-define-property.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/reflect-get-own-property-descriptor.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/reflect-get-prototype-of.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/reflect-own-keys.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/reflect-prevent-extensions.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/reflect-set-prototype-of.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/reflect.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regexp-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regexp-flags.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regexp-match-lastindex.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regexp-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regexp-replace-lastindex.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regexp-sticky.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regexp-tolength.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regexp-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2034.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2156.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2186.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2219.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2225.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2243.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2322.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2506.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2681.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2691.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2829.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-2858.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-3426.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-347906.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-3501.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-3683.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-3741.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-3902.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-3938.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4056.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4097.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-411237.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4160.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4211.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4298.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4395-global-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4395.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4400.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4417.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4466.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4482.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4522.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-455141.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4585.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-474783.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-4759.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-508074.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-513474.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-517455.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-5337.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-5598.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-576662.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-5929-1.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-594084.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-6098.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-6322.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-650172.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-660925.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-666622.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-7706.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-777182.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-arrow-duplicate-params.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-cr372788.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-cr493566.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-cr512574.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-cr895860.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-248025.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-346141.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-448730.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-461520.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-465671-null.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-465671.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-820596.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-837939.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-inlined-new-target.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-lookup-transition.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/regress/regress-new-target-context.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/rest-params-lazy-parsing.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/rest-params.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-1.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-10.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-11.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-2.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-3.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-4.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-5.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-6.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-7.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-8.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-iterator-9.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/set-minus-zero.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/sloppy-no-duplicate-generators.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/sloppy-restrictive-block-function.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/species.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-array-misc.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-array-mutated-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-array-pristine-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-array-prototype-proxy.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-array-prototype-setter1.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-array-prototype-setter2.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-call-new-class.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-call-new.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-call-super-property.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/spread-call.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-codepointat.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-endswith.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-fromcodepoint.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-html.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-includes.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-iterator2.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-iterator3.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-iterator4.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-iterator5.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-iterator6.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-iterator7.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-iterator8.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-match.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-raw.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-repeat.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-replace.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-search.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-split.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/string-startswith.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/super-with-spread-modify-array-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/super-with-spread-modify-next.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/super-with-spread.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/super.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/symbols.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/templates.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/throw-type-error-function-restrictions.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typed-array-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like-prototype-element-added.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-buffer-ordering.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-construct-offset-not-smi.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-copywithin.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-every.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-fill.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-filter.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-find.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-findindex.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-foreach.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-from-detached-typedarray.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-from-next-overridden.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-from-nonfunction-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-from.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-indexing.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-iteration.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-keyedstore-tonumber.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-map.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-neutered.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-of.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-proto.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-reduce.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-reverse.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-set-bytelength-not-smi.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-set-length-internal.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-set-length.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-slice.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-sort.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-species.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/typedarray.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-character-ranges.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-escapes-in-regexps.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-escapes.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-regexp-backrefs.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-regexp-ignore-case-noi18n.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-regexp-ignore-case.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-regexp-last-index.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-regexp-restricted-syntax.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-regexp-unanchored-advance.js delete mode 100644 implementation-contributed/v8/mjsunit/es6/unicode-regexp-zero-length.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/array-includes-receiver.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/array-includes-to-object-sloppy.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/array-includes-to-object-strict.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/array-includes.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/exponentiation-operator.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/regexp-ui-word.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/regress/regress-5986.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/regress/regress-633883.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/regress/regress-634269.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/regress/regress-634273.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/regress/regress-634357.js delete mode 100644 implementation-contributed/v8/mjsunit/es7/typed-array-includes.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-arrow-default-function-await.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-new.target.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-super.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-this.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-await-basic.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-await-interleaved.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-await-no-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-await-resolve-new.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-await-species.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-destructuring.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-function-stacktrace.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/async-function-try-finally.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/object-entries.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/object-get-own-property-descriptors.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/object-values.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/regress/regress-618603.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/regress/regress-624300.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/regress/regress-794744.js delete mode 100644 implementation-contributed/v8/mjsunit/es8/sloppy-no-duplicate-async.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/object-rest-basic.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/object-spread-basic.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/object-spread-ic-dontenum-transition.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/object-spread-ic-multiple-transitions.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/object-spread-ic.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regexp-lookbehind.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-866229.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-866282.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-866357.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-866727.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-866861.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-867958.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-869342.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-902965.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-903070.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/regress/regress-904167.js delete mode 100644 implementation-contributed/v8/mjsunit/es9/template-escapes.js delete mode 100644 implementation-contributed/v8/mjsunit/escape.js delete mode 100644 implementation-contributed/v8/mjsunit/eval-enclosing-function-name.js delete mode 100644 implementation-contributed/v8/mjsunit/eval-origin.js delete mode 100644 implementation-contributed/v8/mjsunit/eval-stack-trace.js delete mode 100644 implementation-contributed/v8/mjsunit/eval-typeof-non-existing.js delete mode 100644 implementation-contributed/v8/mjsunit/eval.js delete mode 100644 implementation-contributed/v8/mjsunit/external-array.js delete mode 100644 implementation-contributed/v8/mjsunit/external-backing-store-gc.js delete mode 100644 implementation-contributed/v8/mjsunit/extra-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/extra-commas.js delete mode 100644 implementation-contributed/v8/mjsunit/fast-array-length.js delete mode 100644 implementation-contributed/v8/mjsunit/fast-element-smi-check.js delete mode 100644 implementation-contributed/v8/mjsunit/fast-literal.js delete mode 100644 implementation-contributed/v8/mjsunit/fast-non-keyed.js delete mode 100644 implementation-contributed/v8/mjsunit/fast-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/field-type-tracking.js delete mode 100644 implementation-contributed/v8/mjsunit/filter-element-kinds.js delete mode 100644 implementation-contributed/v8/mjsunit/fixed-context-shapes-when-recompiling.js delete mode 100644 implementation-contributed/v8/mjsunit/for-in-delete.js delete mode 100644 implementation-contributed/v8/mjsunit/for-in-null-or-undefined.js delete mode 100644 implementation-contributed/v8/mjsunit/for-in-special-cases.js delete mode 100644 implementation-contributed/v8/mjsunit/for-in.js delete mode 100644 implementation-contributed/v8/mjsunit/for-of-in-catch-duplicate-decl.js delete mode 100644 implementation-contributed/v8/mjsunit/for.js delete mode 100644 implementation-contributed/v8/mjsunit/fun-as-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/fun-name.js delete mode 100644 implementation-contributed/v8/mjsunit/function-arguments-duplicate.js delete mode 100644 implementation-contributed/v8/mjsunit/function-arguments-null.js delete mode 100644 implementation-contributed/v8/mjsunit/function-bind-name.js delete mode 100644 implementation-contributed/v8/mjsunit/function-bind.js delete mode 100644 implementation-contributed/v8/mjsunit/function-call.js delete mode 100644 implementation-contributed/v8/mjsunit/function-caller.js delete mode 100644 implementation-contributed/v8/mjsunit/function-length-accessor.js delete mode 100644 implementation-contributed/v8/mjsunit/function-name-eval-shadowed.js delete mode 100644 implementation-contributed/v8/mjsunit/function-named-self-reference.js delete mode 100644 implementation-contributed/v8/mjsunit/function-names.js delete mode 100644 implementation-contributed/v8/mjsunit/function-property.js delete mode 100644 implementation-contributed/v8/mjsunit/function-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/function-var.js delete mode 100644 implementation-contributed/v8/mjsunit/function-without-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/function.js delete mode 100644 implementation-contributed/v8/mjsunit/fuzz-accessors.js delete mode 100644 implementation-contributed/v8/mjsunit/generated-transition-stub.js delete mode 100644 implementation-contributed/v8/mjsunit/get-own-property-descriptor-non-objects.js delete mode 100644 implementation-contributed/v8/mjsunit/get-own-property-descriptor.js delete mode 100644 implementation-contributed/v8/mjsunit/get-prototype-of.js delete mode 100644 implementation-contributed/v8/mjsunit/getter-in-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/getter-in-value-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/getters-on-elements.js delete mode 100644 implementation-contributed/v8/mjsunit/global-accessors.js delete mode 100644 implementation-contributed/v8/mjsunit/global-arrow-delete-this.js delete mode 100644 implementation-contributed/v8/mjsunit/global-deleted-property-ic.js delete mode 100644 implementation-contributed/v8/mjsunit/global-hash.js delete mode 100644 implementation-contributed/v8/mjsunit/global-ic.js delete mode 100644 implementation-contributed/v8/mjsunit/global-infinity-strict.js delete mode 100644 implementation-contributed/v8/mjsunit/global-infinity.js delete mode 100644 implementation-contributed/v8/mjsunit/global-load-from-eval-in-with.js delete mode 100644 implementation-contributed/v8/mjsunit/global-load-from-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/global-load-from-nested-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/global-nan-strict.js delete mode 100644 implementation-contributed/v8/mjsunit/global-nan.js delete mode 100644 implementation-contributed/v8/mjsunit/global-properties.js delete mode 100644 implementation-contributed/v8/mjsunit/global-prototypes.js delete mode 100644 implementation-contributed/v8/mjsunit/global-undefined-strict.js delete mode 100644 implementation-contributed/v8/mjsunit/global-undefined.js delete mode 100644 implementation-contributed/v8/mjsunit/global-vars-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/global-vars-with.js delete mode 100644 implementation-contributed/v8/mjsunit/handle-count-ast.js delete mode 100644 implementation-contributed/v8/mjsunit/handle-count-runtime-literals.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-concat-array-proto-getter.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-concat-array-proto.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-dict-getter.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-dict.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-generic-dict.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-flat-species.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-flat.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-flatMap-species.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-flatMap.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/array-sort-comparefn.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/async-await-optimization.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/async-for-of-non-iterable.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/async-from-sync-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/async-generators-basic.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/async-generators-resume-return.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/async-generators-return.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/async-generators-yield.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/atomics-notify.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/atomics-value-check.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/atomics.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/add.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/and.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/as-int-n.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/basics.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/comparisons.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/dataview.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/dec.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/div.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/exp.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/inc.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/json.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/misc.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/mod.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/mul.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/neg.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/not.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/or.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/regress-tonumbercode.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/regressions.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/sar.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/shl.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/sub.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/tonumber.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/turbo.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/typedarray.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigint/xor.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/bigintarray-keyedstore-tobigint.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/block-lazy-compile.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/dataview-accessors.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/for-await-of.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/function-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/futex.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/generators-reduced.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/generators.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/global-configurable.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/global-writable.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/global.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/harmony-string-pad-end.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/harmony-string-pad-start.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/hashbang-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/import-from-compilation-errored.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/import-from-evaluation-errored.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/import-from-fetch-errored.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/import-from-instantiation-errored.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/module-parsing-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-1.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-10.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-11.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-12.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-13.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-14.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-15.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-16.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-17.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-2.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-3.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-4.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-5.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-6.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-7.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-8.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-9.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-large.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-meta.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-import-namespace.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-1.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-10.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-11.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-12.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-13.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-2.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-3.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-4.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-5.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-6.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-7.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-8.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-9.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-empty.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-export-import-meta.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-large1.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/modules-skip-large2.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/numeric-separator.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/object-fromentries.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/optional-catch-binding-breaks.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/optional-catch-binding.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/private-fields-ic.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/private-fields-special-object.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/private-fields-static.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/private-fields.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/private-symbols.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/private.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/promise-prototype-finally.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/public-instance-class-fields.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/public-static-class-fields.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-change-exec.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-dotall.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-named-captures.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-binary.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-char-class.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-flag-sequence-generated.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-keycap-sequence-generated.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-modifier-sequence-generated.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-tag-sequence-generated.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-zwj-sequence-generated.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-enumerated.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-exact-match.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-general-category.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-invalid.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui0.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui1.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui2.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui3.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui4.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui5.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui6.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui7.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui8.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui9.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-script-extensions.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-scripts.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-sequence.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regexp-property-special.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress-generators-resume.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-173361.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-4696.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-6100.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-6322.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-771470.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-772649.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-897436.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-912504.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-347528.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-571149.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-621111.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-621496.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/regress/regress-typedarray-out-of-bounds.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/set-prototype-of.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/sharedarraybuffer.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/string-matchAll-deleted-matchAll.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/string-matchAll.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/symbol-async-iterator.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/symbol-description.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/to-length.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/to-name.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/to-number.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/to-string.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/trailing-commas-length.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/basics.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-doesnt-iterate-all-holdings.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-from-different-realm.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-is-a-microtask.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-proxy-from-different-realm.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanupsome-after-unregister.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanupsome.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/finalization-group-keeps-holdings-alive.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/finalizationgroup-and-weakref.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/finalizationgroup-scheduled-for-cleanup-multiple-times.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/iterating-in-cleanup.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/multiple-dirty-finalization-groups.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/two-weakrefs.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/undefined-holdings.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-after-cleanup.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-before-cleanup.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-called-twice.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup1.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup2.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup4.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-many.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-when-cleanup-already-scheduled.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/weak-cell-basics.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/weakref-creation-keeps-alive.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/weakrefs/weakref-deref-keeps-alive.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/well-formed-json-stringify-checked.js delete mode 100644 implementation-contributed/v8/mjsunit/harmony/well-formed-json-stringify-unchecked.js delete mode 100644 implementation-contributed/v8/mjsunit/has-own-property-evaluation-order.js delete mode 100644 implementation-contributed/v8/mjsunit/has-own-property.js delete mode 100644 implementation-contributed/v8/mjsunit/hash-code.js delete mode 100644 implementation-contributed/v8/mjsunit/heapObjectVerify.js delete mode 100644 implementation-contributed/v8/mjsunit/hex-parsing.js delete mode 100644 implementation-contributed/v8/mjsunit/holy-double-no-arg-array.js delete mode 100644 implementation-contributed/v8/mjsunit/html-comments.js delete mode 100644 implementation-contributed/v8/mjsunit/html-string-funcs.js delete mode 100644 implementation-contributed/v8/mjsunit/ic-lookup-on-receiver.js delete mode 100644 implementation-contributed/v8/mjsunit/icu-date-lord-howe.js delete mode 100644 implementation-contributed/v8/mjsunit/icu-date-to-string.js delete mode 100644 implementation-contributed/v8/mjsunit/if-in-undefined.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/dead-code-source-position.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/dynamic-global-inside-block.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/ignition-statistics-extension.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/optimized-stack-trace.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/osr-from-bytecode.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/osr-from-generator.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/print-ast.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/regress-597565-double-to-object-transition.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/regress-599001-verifyheap.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/regress-612386-smi-to-double-transition.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/regress-616064.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/regress-629792-source-position-on-jump.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/regress-662418.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/regress-664146.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/regress-672027.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/stack-trace-source-position.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/string-concat-external-thin-string.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/throw-if-hole.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/throw-if-not-hole.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/throw-super-not-called.js delete mode 100644 implementation-contributed/v8/mjsunit/ignition/tracing.js delete mode 100644 implementation-contributed/v8/mjsunit/immutable-context-slot-inlining.js delete mode 100644 implementation-contributed/v8/mjsunit/in.js delete mode 100644 implementation-contributed/v8/mjsunit/indexed-accessors.js delete mode 100644 implementation-contributed/v8/mjsunit/indexed-value-properties.js delete mode 100644 implementation-contributed/v8/mjsunit/induction-variable-turbofan.js delete mode 100644 implementation-contributed/v8/mjsunit/instanceof-2.js delete mode 100644 implementation-contributed/v8/mjsunit/instanceof.js delete mode 100644 implementation-contributed/v8/mjsunit/int32-ops.js delete mode 100644 implementation-contributed/v8/mjsunit/integer-to-string.js delete mode 100644 implementation-contributed/v8/mjsunit/integrity-level-map-update.js delete mode 100644 implementation-contributed/v8/mjsunit/intl-numberformat-formattoparts.js delete mode 100644 implementation-contributed/v8/mjsunit/intl-pluralrules-select.js delete mode 100644 implementation-contributed/v8/mjsunit/invalid-lhs.js delete mode 100644 implementation-contributed/v8/mjsunit/invalid-source-element.js delete mode 100644 implementation-contributed/v8/mjsunit/json-errors.js delete mode 100644 implementation-contributed/v8/mjsunit/json-parser-recursive.js delete mode 100644 implementation-contributed/v8/mjsunit/json-replacer-number-wrapper-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/json-replacer-order.js delete mode 100644 implementation-contributed/v8/mjsunit/json-stringify-holder.js delete mode 100644 implementation-contributed/v8/mjsunit/json-stringify-recursive.js delete mode 100644 implementation-contributed/v8/mjsunit/json-stringify-stack.js delete mode 100644 implementation-contributed/v8/mjsunit/json.js delete mode 100644 implementation-contributed/v8/mjsunit/json2.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-array-call.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-call-generic.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-call-ic.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-ic.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-load-dictionary-stub.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-load-generic.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-load-hole-to-undefined.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-load-with-string-key.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-load-with-symbol-key.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-named-access.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-storage-extend.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-store-array-literal.js delete mode 100644 implementation-contributed/v8/mjsunit/keyed-store-generic.js delete mode 100644 implementation-contributed/v8/mjsunit/keywords-and-reserved_words.js delete mode 100644 implementation-contributed/v8/mjsunit/large-object-allocation.js delete mode 100644 implementation-contributed/v8/mjsunit/large-object-literal-2.js delete mode 100644 implementation-contributed/v8/mjsunit/large-object-literal-slow-elements.js delete mode 100644 implementation-contributed/v8/mjsunit/large-object-literal.js delete mode 100644 implementation-contributed/v8/mjsunit/lazy-inner-functions.js delete mode 100644 implementation-contributed/v8/mjsunit/lazy-load.js delete mode 100644 implementation-contributed/v8/mjsunit/lea-add.js delete mode 100644 implementation-contributed/v8/mjsunit/leakcheck.js delete mode 100644 implementation-contributed/v8/mjsunit/length.js delete mode 100644 implementation-contributed/v8/mjsunit/linecontinuation.js delete mode 100644 implementation-contributed/v8/mjsunit/lithium/DivI.js delete mode 100644 implementation-contributed/v8/mjsunit/lithium/MathExp.js delete mode 100644 implementation-contributed/v8/mjsunit/lithium/MulI.js delete mode 100644 implementation-contributed/v8/mjsunit/lithium/StoreKeyed.js delete mode 100644 implementation-contributed/v8/mjsunit/lithium/StoreKeyedExternal.js delete mode 100644 implementation-contributed/v8/mjsunit/load-callback-from-value-classic.js delete mode 100644 implementation-contributed/v8/mjsunit/load_poly_effect.js delete mode 100644 implementation-contributed/v8/mjsunit/local-load-from-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/logical.js delete mode 100644 implementation-contributed/v8/mjsunit/lookup-behind-property.js delete mode 100644 implementation-contributed/v8/mjsunit/math-abs.js delete mode 100644 implementation-contributed/v8/mjsunit/math-ceil.js delete mode 100644 implementation-contributed/v8/mjsunit/math-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/math-exp-precision.js delete mode 100644 implementation-contributed/v8/mjsunit/math-floor-negative.js delete mode 100644 implementation-contributed/v8/mjsunit/math-floor-of-div-minus-zero.js delete mode 100644 implementation-contributed/v8/mjsunit/math-floor-of-div-nosudiv.js delete mode 100644 implementation-contributed/v8/mjsunit/math-floor-of-div.js delete mode 100644 implementation-contributed/v8/mjsunit/math-floor-part1.js delete mode 100644 implementation-contributed/v8/mjsunit/math-floor-part2.js delete mode 100644 implementation-contributed/v8/mjsunit/math-floor-part3.js delete mode 100644 implementation-contributed/v8/mjsunit/math-floor-part4.js delete mode 100644 implementation-contributed/v8/mjsunit/math-imul.js delete mode 100644 implementation-contributed/v8/mjsunit/math-min-max.js delete mode 100644 implementation-contributed/v8/mjsunit/math-pow.js delete mode 100644 implementation-contributed/v8/mjsunit/math-round.js delete mode 100644 implementation-contributed/v8/mjsunit/math-sqrt.js delete mode 100644 implementation-contributed/v8/mjsunit/md5.js delete mode 100644 implementation-contributed/v8/mjsunit/megamorphic-callbacks.js delete mode 100644 implementation-contributed/v8/mjsunit/messages.js delete mode 100644 implementation-contributed/v8/mjsunit/migrations.js delete mode 100644 implementation-contributed/v8/mjsunit/mjsunit-assertion-error.js delete mode 100644 implementation-contributed/v8/mjsunit/mjsunit.js delete mode 100644 implementation-contributed/v8/mjsunit/mjsunit.status delete mode 100644 implementation-contributed/v8/mjsunit/mjsunit_suppressions.js delete mode 100644 implementation-contributed/v8/mjsunit/mod-range.js delete mode 100644 implementation-contributed/v8/mjsunit/mod.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-circular-valid.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-cycle.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default-name1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default-name2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default-name3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default-name4.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default-name5.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default-name6.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default-name7.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default-name8.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default-name9.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-default.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-empty-import1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-empty-import2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-empty-import3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-empty-import4.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-error-trace.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-export-star-as1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-export-star-as2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-export-star-as3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-exports1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-exports2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-exports3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-imports1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-imports2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-imports3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-imports4.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-imports5.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-imports6.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-imports7.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-imports8.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-init1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-init2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-init3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-init4.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-namespace-getownproperty1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-namespace-getownproperty2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-namespace1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-namespace2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-namespace3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-namespace4.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-preparse.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-relative-path.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-4.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-5.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-6.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-7.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-8.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-9.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-circular-valid.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-cycle.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-default-name1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-default-name2.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-default-name3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-default-name4.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-default-name5.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-default-name6.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-default-name7.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-default-name8.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-default-name9.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-empty-import-aux.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-empty-import.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-init1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-init3.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-init4a.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-init4b.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-namespace.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-star-exports-conflict.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-skip-star-exports-cycle.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-star-exports-cycle.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-this.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-turbo1.js delete mode 100644 implementation-contributed/v8/mjsunit/modules-turbo2.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part1.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part10.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part2.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part3.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part4.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part5.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part6.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part7.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part8.js delete mode 100644 implementation-contributed/v8/mjsunit/mul-exhaustive-part9.js delete mode 100644 implementation-contributed/v8/mjsunit/multiline.js delete mode 100644 implementation-contributed/v8/mjsunit/multiple-return.js delete mode 100644 implementation-contributed/v8/mjsunit/nans.js delete mode 100644 implementation-contributed/v8/mjsunit/negate-zero.js delete mode 100644 implementation-contributed/v8/mjsunit/negate.js delete mode 100644 implementation-contributed/v8/mjsunit/neuter-twice.js delete mode 100644 implementation-contributed/v8/mjsunit/never-optimize.js delete mode 100644 implementation-contributed/v8/mjsunit/new-function.js delete mode 100644 implementation-contributed/v8/mjsunit/new.js delete mode 100644 implementation-contributed/v8/mjsunit/newline-in-string.js delete mode 100644 implementation-contributed/v8/mjsunit/no-branch-elimination.js delete mode 100644 implementation-contributed/v8/mjsunit/no-octal-constants-above-256.js delete mode 100644 implementation-contributed/v8/mjsunit/no-semicolon.js delete mode 100644 implementation-contributed/v8/mjsunit/non-ascii-replace.js delete mode 100644 implementation-contributed/v8/mjsunit/noopt.js delete mode 100644 implementation-contributed/v8/mjsunit/not.js delete mode 100644 implementation-contributed/v8/mjsunit/nul-characters.js delete mode 100644 implementation-contributed/v8/mjsunit/number-is.js delete mode 100644 implementation-contributed/v8/mjsunit/number-isnan-opt.js delete mode 100644 implementation-contributed/v8/mjsunit/number-limits.js delete mode 100644 implementation-contributed/v8/mjsunit/number-literal.js delete mode 100644 implementation-contributed/v8/mjsunit/number-string-index-call.js delete mode 100644 implementation-contributed/v8/mjsunit/number-tostring-add.js delete mode 100644 implementation-contributed/v8/mjsunit/number-tostring-big-integer.js delete mode 100644 implementation-contributed/v8/mjsunit/number-tostring-func.js delete mode 100644 implementation-contributed/v8/mjsunit/number-tostring-small.js delete mode 100644 implementation-contributed/v8/mjsunit/number-tostring.js delete mode 100644 implementation-contributed/v8/mjsunit/numops-fuzz-part1.js delete mode 100644 implementation-contributed/v8/mjsunit/numops-fuzz-part2.js delete mode 100644 implementation-contributed/v8/mjsunit/numops-fuzz-part3.js delete mode 100644 implementation-contributed/v8/mjsunit/numops-fuzz-part4.js delete mode 100644 implementation-contributed/v8/mjsunit/obj-construct.js delete mode 100644 implementation-contributed/v8/mjsunit/object-create.js delete mode 100644 implementation-contributed/v8/mjsunit/object-define-properties.js delete mode 100644 implementation-contributed/v8/mjsunit/object-define-property.js delete mode 100644 implementation-contributed/v8/mjsunit/object-freeze-global.js delete mode 100644 implementation-contributed/v8/mjsunit/object-freeze.js delete mode 100644 implementation-contributed/v8/mjsunit/object-get-own-property-names.js delete mode 100644 implementation-contributed/v8/mjsunit/object-is.js delete mode 100644 implementation-contributed/v8/mjsunit/object-keys.js delete mode 100644 implementation-contributed/v8/mjsunit/object-literal-conversions.js delete mode 100644 implementation-contributed/v8/mjsunit/object-literal-gc.js delete mode 100644 implementation-contributed/v8/mjsunit/object-literal-modified-object-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/object-literal-multiple-fields.js delete mode 100644 implementation-contributed/v8/mjsunit/object-literal-multiple-proto-fields.js delete mode 100644 implementation-contributed/v8/mjsunit/object-literal-overwrite.js delete mode 100644 implementation-contributed/v8/mjsunit/object-literal.js delete mode 100644 implementation-contributed/v8/mjsunit/object-prevent-extensions.js delete mode 100644 implementation-contributed/v8/mjsunit/object-seal-global.js delete mode 100644 implementation-contributed/v8/mjsunit/object-seal.js delete mode 100644 implementation-contributed/v8/mjsunit/object-toprimitive.js delete mode 100644 implementation-contributed/v8/mjsunit/omit-constant-mapcheck.js delete mode 100644 implementation-contributed/v8/mjsunit/opt-elements-kind.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-array-every.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-array-find.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-array-findindex.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-array-some.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-filter.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-foreach-holey-2.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-foreach-holey-3.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-foreach-holey.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-foreach-polymorph.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-foreach.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-map.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-reduce.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-reduceright.js delete mode 100644 implementation-contributed/v8/mjsunit/optimized-typeof.js delete mode 100644 implementation-contributed/v8/mjsunit/osr-elements-kind.js delete mode 100644 implementation-contributed/v8/mjsunit/outobject-double-for-in.js delete mode 100644 implementation-contributed/v8/mjsunit/override-read-only-property.js delete mode 100644 implementation-contributed/v8/mjsunit/packed-elements.js delete mode 100644 implementation-contributed/v8/mjsunit/parallel-compile-tasks.js delete mode 100644 implementation-contributed/v8/mjsunit/parallel-optimize-disabled.js delete mode 100644 implementation-contributed/v8/mjsunit/parse-int-float.js delete mode 100644 implementation-contributed/v8/mjsunit/parse-surrogates.js delete mode 100644 implementation-contributed/v8/mjsunit/pixel-array-rounding.js delete mode 100644 implementation-contributed/v8/mjsunit/polymorph-arrays.js delete mode 100644 implementation-contributed/v8/mjsunit/preparse-toplevel-strict-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/primitive-keyed-access.js delete mode 100644 implementation-contributed/v8/mjsunit/print.js delete mode 100644 implementation-contributed/v8/mjsunit/property-load-across-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/property-name-eval-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/property-object-key.js delete mode 100644 implementation-contributed/v8/mjsunit/proto-accessor.js delete mode 100644 implementation-contributed/v8/mjsunit/proto-elements-add-during-foreach.js delete mode 100644 implementation-contributed/v8/mjsunit/proto.js delete mode 100644 implementation-contributed/v8/mjsunit/prototype-changes.js delete mode 100644 implementation-contributed/v8/mjsunit/prototype-non-existing.js delete mode 100644 implementation-contributed/v8/mjsunit/prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/random-bit-correlations.js delete mode 100644 implementation-contributed/v8/mjsunit/readonly-accessor.js delete mode 100644 implementation-contributed/v8/mjsunit/readonly.js delete mode 100644 implementation-contributed/v8/mjsunit/realm-property-access.js delete mode 100644 implementation-contributed/v8/mjsunit/receiver-in-with-calls.js delete mode 100644 implementation-contributed/v8/mjsunit/recursive-store-opt.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-UC16.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-cache-replace.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-call-as-function.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-capture-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-capture.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-captures.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-compile.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-global.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-indexof.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-lastIndex.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-lookahead.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-loop-capture.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-modifiers-autogenerated-i18n.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-modifiers-autogenerated.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-modifiers-dotall.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-modifiers-i18n.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-modifiers.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-multiline.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-override-exec.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-override-symbol-match-all.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-override-symbol-match.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-override-symbol-replace.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-override-symbol-search.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-override-symbol-split.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-regexpexec.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-results-cache.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-sort.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-stack-overflow.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-standalones.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-static.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp-string-methods.js delete mode 100644 implementation-contributed/v8/mjsunit/regexp.js delete mode 100644 implementation-contributed/v8/mjsunit/regress-906893.js delete mode 100644 implementation-contributed/v8/mjsunit/regress-918763.js delete mode 100644 implementation-contributed/v8/mjsunit/regress-regexp-functional-replace-slow.js delete mode 100644 implementation-contributed/v8/mjsunit/regress-v8-8445-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress-v8-8445.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/binop-in-effect-context-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/bitops-register-alias.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/call-function-in-effect-context-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/clear-keyed-call.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/compare-map-elim1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/comparison-in-effect-context-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/consolidated-holey-load.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/cross-script-vars.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/d8-readbuffer.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/external-and-normal-array-polymorphism.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/get-array-keys-oob.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/internalized-string-not-equal.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/json-stringifier-emptyhandle.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/math-min.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-4.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-5.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/negative_lookup.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/number-named-call-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/poly_count_operation.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/polymorphic-accessor-test-context.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/post-increment-close-context.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/property-descriptor-to-object.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/readonly1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/readonly2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/readonly3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/readonly4.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/readonly5.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/redeclaration-error-types.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-100409.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-100702.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1015.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1017.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1020.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1030466.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-103259.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1036894.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1039610.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-105.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1050043.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1060.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1062422.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1066899.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1079.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-108296.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1083.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1092.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1099.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1102760.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1103.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1104.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-110509.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1106.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1107.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1110.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1110164.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1112.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1112051.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1114040.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1117.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1118.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1119.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1120.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1121.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1122.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1125.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1126.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1129.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1130.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1131.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1132.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1134697.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-113924.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-114.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1146.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1149.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1150.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1151.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-115100.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-115452.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1156.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-116.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1160.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1166.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1167.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1170.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1172-bis.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1172.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1173979.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1174.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-117409.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1175390.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1176.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1177518.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1177809.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-117794.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1178598.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1181.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1184.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1187524.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-119429.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-119925.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1199401.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1199637.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1200351.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-120099.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1203459.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1207.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1209.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1210.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1213.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1213516.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-121407.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1215.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1215653.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1218.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1233.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-123512.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1236.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1237.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-123919.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-124.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1240.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-124594.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1254366.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-125515.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1257.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-126412.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1278.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-128018.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-128146.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1309.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-131923.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1323.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1327557.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-133211.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-133211b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1337.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1346700.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1351.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1355.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1360.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-136048.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1365.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1369.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-137.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-137768.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1383.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1387.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1389.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1401.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1403.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1412.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1415.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1419.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1423.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1434.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1436.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1439135.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-143967.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1447.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-145201.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1472.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1476.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-148378.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-149.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1491.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1493017.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1513.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1521.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1528.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1529.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1530.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1531.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1546.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1548.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-155924.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1560.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1563.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1582.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1583.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1591.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1592.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1620.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1624-strict.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1624.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1625.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-164442.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1647.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1650.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-165637.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-166379.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-166553.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1692.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1708.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-171.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1711.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-171641.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1748.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1757.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-176.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1790.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1849.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-186.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-187.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-189.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1898.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-191.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1919169.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-192.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1924.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-193.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1973.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-1980.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-20070207.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-201.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-201590.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2027.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2030.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2032.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2045.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2054.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2055.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2056.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2058.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2071.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2073.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2110.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2119.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2132.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2153.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2163.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2170.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2172.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-219.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2193.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2226.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2234.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2249.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2249423.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-225.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2250.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2261.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2263.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-227.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2273.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2284.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2286.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2289.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2291.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2294.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-231.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2315.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2326.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-233.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2339.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-234101.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2346.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-235311.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2373.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2374.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-237617.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2398.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2410.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-241344.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2416.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2419.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2433.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2435.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2437.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2438.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-244.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2441.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2443.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2444.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2451.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-246.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2470.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-247688.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2489.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2499.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-252797.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2529.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-253.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2537.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2539.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-254.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2564.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2565.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2566.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2568.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2570.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-259.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2593.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2594.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2595.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2596.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-260.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2606.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2612.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2615.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2618.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2624.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-263.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-264203.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2646.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-265.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-267.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2671-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2671.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2686.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2690.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-270142.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2711.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2717.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2758.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-279.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2790.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-280531.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2813.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2836.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-284.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2843.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2855.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-286.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2931.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-294.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2980.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-298269.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2984.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2987.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-2989.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-299979.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3006390.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3010.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3025.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3026.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3027.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3029.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3032.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3039.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3116.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-312.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3135.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3138.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3158.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3159.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-317.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3176.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-318.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3183.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-318420.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3185905.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-319722-ArrayBuffer.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-319722-TypedArrays.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3199913.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3204.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-320532.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3218530.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3218915.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3220.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3229.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3230771.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-323845.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-324028.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3247124.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3252443.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3255.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-326.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3294.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-330046.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3307.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-331416.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-331444.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3334.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-333594.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-334.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-334708.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3359.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-336820.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3380.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3392.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-340125.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3404.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3408144.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-341.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-343609.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-345.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3456.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3462.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-346343.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-346587.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-347262.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-347530.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-347542.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-347543.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3476.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-347904.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-347909.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-347912.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-347914.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-348280.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3483.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-348512.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-349.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-349885.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-35.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-350863.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-350865.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-350884.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-350887.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-351.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-351261.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-351263.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-351319.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-351624.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-352059.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-352982.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-353004.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-353058.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-353551.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-354357.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-354433.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-355485.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-355486.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-355523.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-356053.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3564.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-357054.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-357103.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-357105.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-357108.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-358057.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-358059.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-358088.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-358090.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-359441.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-359491.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-359525.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-360733.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-361025.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3612.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-361608.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3621.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-362128.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-362870.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-363956.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3641.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3643.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3650-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3650-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3650-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-365172-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-365172-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-365172-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-368243.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3687.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-369450.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-370384.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-370827.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3709.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3718.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3756.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-377290.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-379770.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-380092.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-381313.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-385054.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-385565.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3859.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-386.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-386034.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3865.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3884.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-392.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3926.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-394.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-396.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3969.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-397.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3976.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-3985.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-399.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4023.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4027.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-404981.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-406.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-410030.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-410912.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-411210.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4121.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-412162.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-416.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-416416.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-416730.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4169.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4173.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4214.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-423633.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4255-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4255-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4255-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4255-4.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-425551.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4266.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4267.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4271.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4279.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4296.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-430201.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-430201b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4325.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-435073.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-435477.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-436893.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4374.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4376-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4376-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4376-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4377.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-437713.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-437765.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4380.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4388.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4399-01.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4399-02.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-441099.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-444805.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-444805.js-script delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4450.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-446389.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-447526.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-447561.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-447756.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-448711.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-449291.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4493-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4495.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4507.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-450895.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4509-Class-constructor-typeerror-realm.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-451322.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4515.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-451958.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4521.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4525.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4534.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-453481.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-45469.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-454725.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-455207.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-455212.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4577.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-457935.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-458876.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-458987.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4595.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-459955.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-460917.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-463028.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4640.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4654.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4659.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4665.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-466993.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-467481.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4693.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-469605.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-469605b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-470804.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4715.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-472504.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-475.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-475705.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-476488.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4769.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4788-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4788-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-479528.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4800.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4815.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4825.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-483.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-484544.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-485.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-486.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4870.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-487981.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-488398.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-489151.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-490.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4908.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-491.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-491481.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-492.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4945.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-496.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4962.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4964.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4967.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4970.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-4971.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-499790.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-500173.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-500176.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5004.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5006.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-500831.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-500980.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5018.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-502.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-503.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5033.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-503565.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5036.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-507980.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5085.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-509961.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5106.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-515.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5173.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5174.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5178.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5181.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5199.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-520029.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5205.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5213.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5214.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5216.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-524.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5245.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5252.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-526.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5262.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5275-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5275-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-52801.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5286.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5295-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5295.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5332.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5342.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5351.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5357.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-539875.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-540.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5404.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5405.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-542823.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5434.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-543994.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5440.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-544991.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-545.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5454.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5476.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-552302.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-554865.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-556543.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5566.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5636-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5636-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5638.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5638b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5648.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5664.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5669.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5691.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5692.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-57.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-572589.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5736.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5749.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-575364.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5763-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5763-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5767.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5772.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5780.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5783.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-578775.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5790.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-580.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5802.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-581.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-583260.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5836.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5845.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-585041.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-585775.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-587004.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-58740.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-588599.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5888.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-590074.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5902.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5911.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-592341.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-592352.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-592353.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5927.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-593299.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5938.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5943.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-595319.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-596718.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5972.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-5974.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-599068-func-bindings.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-599089-array-push.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-599412.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-599414-array-concat-fast-path.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-599710.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-599717.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-599719.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-599825.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6-9-regexp.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-602970.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-603.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-604044.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-605470.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-606021.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6063.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6082.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-608630.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-610633.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-612.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6121.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-612146.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-612412.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-613928.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6142.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-615776.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-616386.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-617525.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-617526.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-617529.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-618.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6186.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-618608.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-618657.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-619.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-619382.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6196.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6203.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-620553.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-620750.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6209.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6210.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-621869.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6223.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-622663.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6248.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-625121.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6280.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6288.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6298.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-631050.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-632289.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6337.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-633998.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-634-debug.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-635429.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-636.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6373.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-638134.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-639270.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-641091.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-642409.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-643.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6431.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-645680.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-646.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-648373-sloppy-arguments-includesValues.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-648719.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-649067.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-649078.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6509.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-651327.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-653407.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-655573.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6607-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6607-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-662254.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-662845.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-662904.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-664087.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6657.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-666046.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-666721.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-667061.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-667603.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6677.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6681.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-669024.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6700.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-670147.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6703.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-670671.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6707.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6708.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-670808.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-670981-array-push.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6711.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-672041.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-673241.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-673242.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-673297.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6733.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-674232.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-674753.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-675.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-676025.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-677055.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-677685.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-678525.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-678917.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-679727.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-681.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-681171-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-681171-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-681171-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-681383.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-681984.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-682242.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-682349.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-682649.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-683617.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6838-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6838-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6838-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-685086.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-687.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-688690.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-689016.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-69.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6907.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-693500.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6941.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6948.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-696.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-696251.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-696332.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-696651.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-697.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6970.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-698790.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6989.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-6991.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-70066.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7014-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7014-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7026.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-704811.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-705934.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-706234-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-706234.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-707066.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-707187.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-707410.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-707675.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-708247.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-708598.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-709029.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-709782.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-711165.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7115.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-712.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7135.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-715582.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-716044.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-71647.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-718285.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-718891.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-719380.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-720.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-720247.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-722978.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-723366.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7254.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-725858.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-726625.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-726636.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-727218.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-727662.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-728.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-729671.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-730254.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-732.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-732836.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-733059.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-734862.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7369.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-737588.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-74.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-740694.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-740784.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-743622.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-744292.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-746909.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-747.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-747075.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-747825.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-748069.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7510.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-751789.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-752.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-752764.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-753.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-754.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-756608.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-758763.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-760-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-760-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-760268.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-760790.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-761639.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-761831.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7642.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7652.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7677.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7716.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-772190.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7740.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-774475.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-774824.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-775888.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-776309.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-776338.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7773.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-778574.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-778668.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7791.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-779407.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-780423.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-781218.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-782145.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-78270.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-782754.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-783051.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-783119.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-784.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-784080.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-784862.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-784863.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-784990.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-785804.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-786573.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-786784.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-7893.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-791334.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-791345.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-791958.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-793588.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-793793.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-794.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-794822.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-794825.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-796427.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-797481.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-797581.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-798.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-799690.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-799813.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-800538.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-800651.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-801171.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-801772.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-802060.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8033.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-803750.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-804096.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-804176.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-804177.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-804188.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-804288.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-804801.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-804837.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-805729.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-805768.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-806.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-806473.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-812451.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8133-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8133-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-813440.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-814643.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-815.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-816289.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-816317.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-818070.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-818438.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-821137.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-821368.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8241.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8265.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-82769.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8377.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8384.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-838766.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-840106.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-842.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-842017.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-842078.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-84234.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-842612.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-843062-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-843062-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-843062-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-843543.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8449.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-849663.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-851.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-852258.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-852765.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-854066-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-854066.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-857.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-86.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8607.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-862433.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8630.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-863155.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-863810.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-865310.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8659.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-869735.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-87.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-8708.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-874.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-874178.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-875031.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-875493.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-877615.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-883059.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-88591.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-88858.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-889722.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-890553.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-892742.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-892858.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-895691.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-896326.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-897366.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-897512.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-897815.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-898812.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-898936.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-899115.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-899133.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-899474.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-899537.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-900.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-900055.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-900085.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-900585.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-900786.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-900966.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-901633.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-901798.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-902552.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-902810.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-903527.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-903697.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-904255.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-904275.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-904417.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-904707.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-905587.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-905907.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-906406.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-907479.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-907575.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-907669.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-908231.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-908250.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-908975.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-91.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-91008.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-91010.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-91013.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-91120.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-913844.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-917215.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-917755.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-91787.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-917988.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-918.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-919340.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-919710.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-921382.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-923723.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-925537.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-926036.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-927.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-931.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-937896.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-944.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-94425.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-95113.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-95485.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-955.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-95920.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-962.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-96523.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-969.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-97116.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-97116b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-974.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-982.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-98773.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-990205.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-99167.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-992.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-992733.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-995.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-996542.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-abort-context-allocate-params.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-abort-preparsing-params.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-add-minus-zero.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-alloc-smi-check.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-arg-materialize-store.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-arguments-liveness-analysis.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-arguments-slice.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-arm64-spillslots.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-array-pop-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-array-pop-nonconfigurable.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-arrow-single-expression-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-assignment-in-test-context.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-bce-underflow.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-bind-receiver.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-binop.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-builtin-array-op.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-builtinbust-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-builtinbust-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-builtinbust-4.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-builtinbust-5.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-builtinbust-6.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-builtinbust-7.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-calls-with-migrating-prototypes.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-captured-object-no-dummy-use.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-charat-empty.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-check-eliminate-loop-phis.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-clobbered-fp-regs.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-cnlt-elements.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-cnlt-enum-indices.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-cntl-descriptors-enum.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-compare-constant-doubles.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-conditional-position.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-context-osr.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-convert-enum.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-convert-enum2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-convert-function-to-double.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-convert-hole.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-convert-hole2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-convert-transition.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-copy-hole-to-field.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-cr-344285.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-cr-658267.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-100859.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-109362.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-119926.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-122271.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-125148.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-126414.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-134055.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-134609.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-135008.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-135066.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-137689.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-138887.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-140083.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-142087.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-142218.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-145961.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-146910.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-147475.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-148376.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-150545.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-150729.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-157019.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-157520.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-158185.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-160010.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-162085.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-163530.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-168545.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-170856.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-172345.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-173907.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-173907b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-173974.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-178790.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-181422.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-18639.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-196583.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-217858.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-229923.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-233737.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-240032.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-242502.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-242870.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-242924.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-243868.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-244461.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-245424.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-245480.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-258519.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-260345.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-263276.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-272564.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-274438.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-280333.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-285355.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-305309.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-306220.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-306851.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-309623.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-315252.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-3184.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-318671.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-319835.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-319860.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-323942.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-325225.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-329709.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-336148.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-340064.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-344186.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-345715.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-345820.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-346636.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-347903.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-349079.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-349465.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-349853.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-349878.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-350434.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-350864.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-350867.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-350890.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-351262.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-351320.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-351658.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-351787.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-352058.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-352586.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-352929.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-354391.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-357052.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-357137.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-357330.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-364374.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-374838.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-37853.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-380512.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-381534.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-382143.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-382513.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-385002.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-3867.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-387031.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-387636.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-390918.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-39160.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-393988.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-403409.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-405517.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-407946.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-40931.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-412203.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-412208.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-412210.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-412215.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-412319.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-416558.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-417508.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-422858.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-423687.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-425519.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-425585.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-429159.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-430846.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-431602.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-433332.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-433766.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-435825.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-436820.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-450642.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-450960.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-451013.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-451016.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-451770.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-454091.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-455644.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-465564.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-467047.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-467531.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-469768.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-471659.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-476477-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-476477-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-477924.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-478011.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-478612.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-480807.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-480819.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-482998.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-484077.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-485410.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-485548-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-485548-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-487105.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-487322.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-487608.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-489293.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-489597.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-489597.js-script delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-490021.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-490680.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-491062.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-493284.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-493290.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-493779.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-495493.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-498022.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-498811.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-500435.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-500497.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-500824.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-501711.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-501808.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-501809.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-502930.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-503578.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-503698.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-503968.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-503991.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-504136.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-504727.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-504729.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-504787.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-505354.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-505370.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-505778.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-505907.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-506549.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-506956.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-510426.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-510738.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-511880.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-513471.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-513472.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-513507.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-513602.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-514081.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-515897.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-516592.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-516775.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-518747.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-522380.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-522496.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-522895.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-523213.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-523307.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-523308.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-523919.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-527364.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-528379.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-530598.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-537444.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-538086.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-542101.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-545364.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-548580.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-549162.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-551287.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-552304.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-554831.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-554946.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-557807.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-561973.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-563929.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-565917.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-568525.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-569534.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-570241.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-571064.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-571370.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-571517.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-572590.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-573857.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-573858.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-575080.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-575082.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-575314.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-577112.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-578039-Proxy_construct_prototype_change.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-580506.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-580584.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-580934.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-581577.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-583257.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-584188.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-587068.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-589472.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-589792.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-590989-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-590989-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-592340.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-592343.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-593282.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-593697-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-594183.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-594574-concat-leak-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-594574-concat-leak-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-594955.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-595615.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-595657.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-595738.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-596394.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-598998.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-599003.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-599067.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-4.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-599714.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-600257.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-601617.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-602184.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-602595.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-603463.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-604299.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-604680.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-605060.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-605862.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-608278.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-608279.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-609029.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-610207.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-612109.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-612142.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-613494.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-613570.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-613905.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-613919.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-614292.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-614644.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-614727.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-615774.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-616709-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-616709-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-617524.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-617527.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-617567.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-618788.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-618845.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-619476.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-620119.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-620253.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-620650.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-621611.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-621816.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-621868.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-624747.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-624919.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-625547.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-625590.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-626715.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-627828.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-627934.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-627935.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-628573.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-629062.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-629435.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-629823.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-630559.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-630561.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-630923.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-630951.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-630952.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631027.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-10.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-11.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-12.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-13.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-14.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-15.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-4.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-5.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-6.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-7.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-8.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-9.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-631917.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-632800.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-633585.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-633884.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-635798.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-635923.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-638551.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-640369.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-640497.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-642056.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-643073.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-644111.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-644215.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-644245.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-644631.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-644689-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-644689-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-645103.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-645438.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-645888.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-647217.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-647887.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-648539.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-648737.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-648740.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-650404.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-650933.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-650973.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-651403-global.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-651403.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-652186-global.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-652186-local.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-654723.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-655004.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-656037.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-656275.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-657478.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-658185.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-658528.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-658691.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-659475-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-659475-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-659915a.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-659915b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-659967.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-660379.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-661949.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-662367.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-662410.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-662830.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-662854.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-662907.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-663340.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-663402.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-663410.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-663750.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-664084.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-664469.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-664506.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-664802.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-664942.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-664974.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-665587.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-665793.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-665886.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-666308.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-666742.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-667689.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-668101.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-668414.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-668795.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-669411.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-669451.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-669540.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-669850.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-671576.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-672792.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-673008.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-677757.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-679202.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-679378.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-679841.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-681983.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-682194.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-683581.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-683667.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-684208.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-685050.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-685504.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-685506.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-685634.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-685680.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-685965.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-686102.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-686427.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-686737.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-687029.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-687063.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-687990.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-688567.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-688734.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-691323.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-691687.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-694416.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-694709.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-696622.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-697017.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-698607.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-699282.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-700678.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-700733.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-702793.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-702798.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-703610.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-706642.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-707580.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-708050-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-708050-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-709537.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-709753.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-711166.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-712802.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-714696.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-714872.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-714971.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-714981.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-715151.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-715404.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-715455.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-715862.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-716520.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-716804.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-716912.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-718779.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-719384.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-719479.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-721835.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-722348.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-722756.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-722783.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-722871.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-723132.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-723455.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-724153.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-724608.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-725201.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-725537.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-72736.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-728813.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-729573-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-729573-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-729597.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-731193.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-732169.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-734051.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-734162.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-736451.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-736575.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-736633.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-737645.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-738763.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-740116.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-740398.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-740591.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-740803.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-741078.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-743154.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-746835.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-747062.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-747979.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-748539.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-751109.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-751715.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-752481.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-752712.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-752826.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-752846.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-754175.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-754177.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-755044.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-756332.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-757199.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-758773.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-759327.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-762472.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-762874-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-762874-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-763683.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-764219.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-766635.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-768080.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-768158.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-768367.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-768875.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-769852.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-770543.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-770581.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-771428.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-771971.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-772056.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-772610.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-772672.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-772689.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-772720.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-772897.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-774459.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-774860.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-774994.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-776511.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-778952.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-779344.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-779367.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-779457.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-781116-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-781116-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-781583.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-783132.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-783902.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-784835.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-786020.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-786723.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-789764.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-7907.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-791245-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-791245-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-791256.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-795922.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-798026.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-798644.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-800032.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-800077.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-800810.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-801627.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-802333.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-805765.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-806200.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-806388.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-807096.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-808192.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-813427.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-813450.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-813630.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-816961.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-819086.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-819298.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-820312.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-820820.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-4.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-822284.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-823069.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-823130.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-825045.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-827013.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-830565.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-831943.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-831984.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-840220.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-841592.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-843022.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-848165.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-849024.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-850005.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-851393.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-852592.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-854299.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-856095.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-859809.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-860788.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-862538.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-865312.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-865892.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-866315.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-867776.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-869313.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-871886.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-87478.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-876443.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-878845.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-879560.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-879898.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-880207.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-881247.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-882233-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-882233-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-884933.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-885404.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-887891.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-888825.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-890243.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-891627.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-892472-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-892472-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-895199.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-896181.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-896700.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-897098.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-897404.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-897406.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-897514.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-898785.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-898974.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-899464.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-899524.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-899535.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-900674.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-902395.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-902610.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-902672.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-903043.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-905457.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-906043.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-906220.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-906870.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-90771.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-908309.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-909614.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-911416.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-913212.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-913296.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-915783.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-916288.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-917076.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-917980.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-920184.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-923264.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-923265.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-923705.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-926819.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-crbug-926856.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-create-exception.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-deep-proto.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-delete-empty-double.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-deopt-gc.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-deopt-gcb.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-deopt-in-array-literal-spread.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-deopt-store-effect.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-deoptimize-constant-keyed-load.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-dictionary-to-fast-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-directive.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-double-canonicalization.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-double-property.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-embedded-cons-string.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-empty-fixed-double-array.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-ensure-initial-map.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-enum-prop-keys-cache-size.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-escape-preserve-smi-representation.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-et-clobbers-doubles.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-eval-cache.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-eval-context.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-existing-shared-function-info.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-fast-empty-string.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-fast-literal-transition.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-filter-contexts.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-force-constant-representation.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-force-representation.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-freeze-setter.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-freeze.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-function-length-strict.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-fundecl.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-grow-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-grow-store-smi-check.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-gvn-ftt.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-hoist-load-named-field.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-indirect-push-unchecked.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-inline-arrow-as-construct.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-inline-class-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-inline-constant-load.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-inline-getter-near-stack-limit.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-inlining-function-literal-context.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-int32-truncation.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-integer-indexed-element.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-is-contextual.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-is-smi-repr.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-iteration-order.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-json-parse-index.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-json-stringify-gc.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-keyed-access-string-length.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-keyed-store-global.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-keyed-store-non-strict-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-latin-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-inlining.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-inlining2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-reloc.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-lea-matching.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-load-elements.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-load-field-by-index.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-loop-var-assign-without-block-scope.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-map-invalidation-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-map-invalidation-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-mask-array-length.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-merge-descriptors.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-migrate-callbacks.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-mul-canoverflow.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-mul-canoverflowb.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-no-dummy-use-for-arguments-object.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-ntl.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-object-assign-deprecated-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-object-assign-deprecated.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-omit-checks.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-opt-typeof-null.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-osr-context.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-param-local-type.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-parse-use-strict.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-parseint.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-phi-truncation.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-polymorphic-load.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-polymorphic-store.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-preparse-inner-arrow-duplicate-parameter.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-private-enumerable.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-push-args-twice.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-put-prototype-transition.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-r3391.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-r4998.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-recurse-patch-binary-op.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-refreeze-same-map.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-regexp-codeflush.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-regexp-construct-result.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-regexp-nocase.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-reset-dictionary-elements.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-set-flags-stress-compact.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-shift-enumerable.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-sliced-external-cons-regexp.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-sloppy-block-function-hoisting-dynamic.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-smi-math-floor-round.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-smi-only-concat.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-smi-scanning.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-sort-arguments.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-sqrt.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-store-global-proxy.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-store-heapobject.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-store-transition-dict.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-store-uncacheable.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-string-from-char-code-tonumber.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-stringAt-boundsCheck.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-swapelements.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-sync-optimized-lists.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-transcendental.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-trap-allocation-memento.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-typedarray-length.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-undefined-nan.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-undefined-nan2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-undefined-nan3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-undefined-store-keyed-fast-element.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-unlink-closures-on-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-unsigned-mul-add.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-update-field-type-attributes.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-4839.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-4972.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-5009.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-5254-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-5254-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-5255-1.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-5255-2.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-5255-3.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-5697.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-5958.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-6706.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-6712.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-6716.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-6906.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-6940.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-7245.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-7682.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-7725.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-8070.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-v8-8357.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-wasm-crbug-599413.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-wasm-crbug-618602.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-weakening-multiplication.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/regress-x87.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/setter.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/short-circuit.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/splice-missing-wb.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/string-compare-memcmp.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/string-fromcharcode-sideeffect.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/string-next-encoding.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/string-split-monkey-patching.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/typed-array-lifetime.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/loop-stack-check.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-02256.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-02256b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-02862.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-5531.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-5800.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-5860.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-5884.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-6054.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-6164.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-643595.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-644682.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-647649.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-648079.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-651961.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-654377.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-663994.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-666741.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-667745.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-670683.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-674447.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-680938.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-684858.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-688876.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-689450.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-6931.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-694433.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-698587.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-699485.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-702460.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-702839.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7033.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7035.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-703568.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7049.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-708714.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-709684.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-710844.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-711203.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-712569.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-715216a.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-715216b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-717056.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-717194.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-719175.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-722445.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-724846.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-724851.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-724972.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-727219.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-727222.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-727560.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-729991.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-731351.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-734108.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-734246.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-734345.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7353.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7364.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-736584.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7366.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-737069.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-739768.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7422.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7499.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7508.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-752423.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-753496.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7565.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-757217.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7579.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7582.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-763439.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-763697.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-766003.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-769637.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-769846.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-771243.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-772332.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-775366.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-775710.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-776677.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7785.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-778917.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-782280.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-784050.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-789952.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-7914.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-791810.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-793551.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-797846.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-799952.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-800756.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-801785.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-801850.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-802244.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-803427.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-803788.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-8059.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-808012.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-808848.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-808980.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-8094.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-8095.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-810973.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-810973b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-812005.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-816226.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-817380.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-819869.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-820802.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-824681.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-825087a.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-825087b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-827806.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-831463.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-834619.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-834624.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-834693.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-836141.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-837417.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-840757.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-842501.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-843563.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-8505.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-8533.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-853453.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-854011.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-854050.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-864509.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-873600.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-875556.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-894307.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-894374.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-898932.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-905815.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-910824.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-913804.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-916869.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-917412.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-917588.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-917588b.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-918149.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-918284.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-918917.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-919308.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-919533.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-922432.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-922670.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-922933.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-924843.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-924905.js delete mode 100644 implementation-contributed/v8/mjsunit/regress/wasm/regress-925671.js delete mode 100644 implementation-contributed/v8/mjsunit/result-table-max.js delete mode 100644 implementation-contributed/v8/mjsunit/result-table-min.js delete mode 100644 implementation-contributed/v8/mjsunit/samevalue.js delete mode 100644 implementation-contributed/v8/mjsunit/scanner.js delete mode 100644 implementation-contributed/v8/mjsunit/scope-calls-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/search-string-multiple.js delete mode 100644 implementation-contributed/v8/mjsunit/serialize-after-execute.js delete mode 100644 implementation-contributed/v8/mjsunit/serialize-embedded-error.js delete mode 100644 implementation-contributed/v8/mjsunit/serialize-ic.js delete mode 100644 implementation-contributed/v8/mjsunit/setter-on-constructor-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/setters-on-elements.js delete mode 100644 implementation-contributed/v8/mjsunit/shared-function-tier-up-turbo.js delete mode 100644 implementation-contributed/v8/mjsunit/shift-for-integer-div.js delete mode 100644 implementation-contributed/v8/mjsunit/shifts.js delete mode 100644 implementation-contributed/v8/mjsunit/short-circuit-boolean.js delete mode 100644 implementation-contributed/v8/mjsunit/simple-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/sin-cos.js delete mode 100644 implementation-contributed/v8/mjsunit/skipping-inner-functions-bailout.js delete mode 100644 implementation-contributed/v8/mjsunit/skipping-inner-functions.js delete mode 100644 implementation-contributed/v8/mjsunit/smi-mul-const.js delete mode 100644 implementation-contributed/v8/mjsunit/smi-mul.js delete mode 100644 implementation-contributed/v8/mjsunit/smi-negative-zero.js delete mode 100644 implementation-contributed/v8/mjsunit/smi-ops-inlined.js delete mode 100644 implementation-contributed/v8/mjsunit/smi-ops.js delete mode 100644 implementation-contributed/v8/mjsunit/smi-representation.js delete mode 100644 implementation-contributed/v8/mjsunit/sparse-array.js delete mode 100644 implementation-contributed/v8/mjsunit/splice-proxy.js delete mode 100644 implementation-contributed/v8/mjsunit/spread-large-array.js delete mode 100644 implementation-contributed/v8/mjsunit/spread-large-map.js delete mode 100644 implementation-contributed/v8/mjsunit/spread-large-set.js delete mode 100644 implementation-contributed/v8/mjsunit/spread-large-string.js delete mode 100644 implementation-contributed/v8/mjsunit/stack-overflow-arity-catch-noinline.js delete mode 100644 implementation-contributed/v8/mjsunit/stack-traces-2.js delete mode 100644 implementation-contributed/v8/mjsunit/stack-traces-class-fields.js delete mode 100644 implementation-contributed/v8/mjsunit/stack-traces-custom-lazy.js delete mode 100644 implementation-contributed/v8/mjsunit/stack-traces-custom.js delete mode 100644 implementation-contributed/v8/mjsunit/stack-traces-overflow.js delete mode 100644 implementation-contributed/v8/mjsunit/stack-traces.js delete mode 100644 implementation-contributed/v8/mjsunit/store-dictionary.js delete mode 100644 implementation-contributed/v8/mjsunit/str-to-num.js delete mode 100644 implementation-contributed/v8/mjsunit/stress-array-push.js delete mode 100644 implementation-contributed/v8/mjsunit/strict-equals.js delete mode 100644 implementation-contributed/v8/mjsunit/strict-mode-eval.js delete mode 100644 implementation-contributed/v8/mjsunit/strict-mode-implicit-receiver.js delete mode 100644 implementation-contributed/v8/mjsunit/strict-mode-opt.js delete mode 100644 implementation-contributed/v8/mjsunit/strict-mode.js delete mode 100644 implementation-contributed/v8/mjsunit/string-add.js delete mode 100644 implementation-contributed/v8/mjsunit/string-case.js delete mode 100644 implementation-contributed/v8/mjsunit/string-charat.js delete mode 100644 implementation-contributed/v8/mjsunit/string-charcodeat-external.js delete mode 100644 implementation-contributed/v8/mjsunit/string-charcodeat.js delete mode 100644 implementation-contributed/v8/mjsunit/string-compare-alignment.js delete mode 100644 implementation-contributed/v8/mjsunit/string-concat.js delete mode 100644 implementation-contributed/v8/mjsunit/string-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/string-equal.js delete mode 100644 implementation-contributed/v8/mjsunit/string-external-cached.js delete mode 100644 implementation-contributed/v8/mjsunit/string-externalize.js delete mode 100644 implementation-contributed/v8/mjsunit/string-flatten.js delete mode 100644 implementation-contributed/v8/mjsunit/string-fromcharcode.js delete mode 100644 implementation-contributed/v8/mjsunit/string-index.js delete mode 100644 implementation-contributed/v8/mjsunit/string-indexof-1.js delete mode 100644 implementation-contributed/v8/mjsunit/string-indexof-2.js delete mode 100644 implementation-contributed/v8/mjsunit/string-lastindexof.js delete mode 100644 implementation-contributed/v8/mjsunit/string-localecompare.js delete mode 100644 implementation-contributed/v8/mjsunit/string-match.js delete mode 100644 implementation-contributed/v8/mjsunit/string-normalize.js delete mode 100644 implementation-contributed/v8/mjsunit/string-oom-array-join.js delete mode 100644 implementation-contributed/v8/mjsunit/string-oom-concat.js delete mode 100644 implementation-contributed/v8/mjsunit/string-oom-replace-global-regexp-with-string.js delete mode 100644 implementation-contributed/v8/mjsunit/string-oom-replace-regexp-global-with-function.js delete mode 100644 implementation-contributed/v8/mjsunit/string-pad.js delete mode 100644 implementation-contributed/v8/mjsunit/string-replace-gc.js delete mode 100644 implementation-contributed/v8/mjsunit/string-replace-one-char.js delete mode 100644 implementation-contributed/v8/mjsunit/string-replace-with-empty.js delete mode 100644 implementation-contributed/v8/mjsunit/string-replace.js delete mode 100644 implementation-contributed/v8/mjsunit/string-search.js delete mode 100644 implementation-contributed/v8/mjsunit/string-slices-regexp.js delete mode 100644 implementation-contributed/v8/mjsunit/string-slices.js delete mode 100644 implementation-contributed/v8/mjsunit/string-split-cache.js delete mode 100644 implementation-contributed/v8/mjsunit/string-split.js delete mode 100644 implementation-contributed/v8/mjsunit/string-trim.js delete mode 100644 implementation-contributed/v8/mjsunit/string-wrapper.js delete mode 100644 implementation-contributed/v8/mjsunit/strong-rooted-literals.js delete mode 100644 implementation-contributed/v8/mjsunit/substr.js delete mode 100644 implementation-contributed/v8/mjsunit/sum-0-plus-undefined-is-NaN.js delete mode 100644 implementation-contributed/v8/mjsunit/switch-opt.js delete mode 100644 implementation-contributed/v8/mjsunit/switch.js delete mode 100644 implementation-contributed/v8/mjsunit/test-async.js delete mode 100644 implementation-contributed/v8/mjsunit/test-builtins-setup.js delete mode 100644 implementation-contributed/v8/mjsunit/thin-strings.js delete mode 100644 implementation-contributed/v8/mjsunit/third_party/object-keys/LICENSE delete mode 100644 implementation-contributed/v8/mjsunit/third_party/object-keys/object-keys.js delete mode 100644 implementation-contributed/v8/mjsunit/third_party/regexp-pcre/LICENSE delete mode 100644 implementation-contributed/v8/mjsunit/third_party/regexp-pcre/regexp-pcre.js delete mode 100644 implementation-contributed/v8/mjsunit/this-dynamic-lookup.js delete mode 100644 implementation-contributed/v8/mjsunit/this-in-callbacks.js delete mode 100644 implementation-contributed/v8/mjsunit/this-property-assignment.js delete mode 100644 implementation-contributed/v8/mjsunit/this.js delete mode 100644 implementation-contributed/v8/mjsunit/throw-and-catch-function.js delete mode 100644 implementation-contributed/v8/mjsunit/throw-exception-for-null-access.js delete mode 100644 implementation-contributed/v8/mjsunit/to-precision.js delete mode 100644 implementation-contributed/v8/mjsunit/to_number_order.js delete mode 100644 implementation-contributed/v8/mjsunit/tobool.js delete mode 100644 implementation-contributed/v8/mjsunit/toint32.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/codemap.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/compiler-trace-flags.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/consarray.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/csvparser.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/dumpcpp.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/profile.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/profile_view.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/profviz-test.default delete mode 100644 implementation-contributed/v8/mjsunit/tools/profviz-test.log delete mode 100644 implementation-contributed/v8/mjsunit/tools/profviz.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/splaytree.js delete mode 100644 implementation-contributed/v8/mjsunit/tools/tickprocessor-test-func-info.log delete mode 100644 implementation-contributed/v8/mjsunit/tools/tickprocessor-test.default delete mode 100644 implementation-contributed/v8/mjsunit/tools/tickprocessor-test.func-info delete mode 100644 implementation-contributed/v8/mjsunit/tools/tickprocessor-test.gc-state delete mode 100644 implementation-contributed/v8/mjsunit/tools/tickprocessor-test.ignore-unknown delete mode 100644 implementation-contributed/v8/mjsunit/tools/tickprocessor-test.log delete mode 100644 implementation-contributed/v8/mjsunit/tools/tickprocessor-test.only-summary delete mode 100644 implementation-contributed/v8/mjsunit/tools/tickprocessor-test.separate-ic delete mode 100644 implementation-contributed/v8/mjsunit/tools/tickprocessor.js delete mode 100644 implementation-contributed/v8/mjsunit/top-level-assignments.js delete mode 100644 implementation-contributed/v8/mjsunit/touint32.js delete mode 100644 implementation-contributed/v8/mjsunit/track-fields.js delete mode 100644 implementation-contributed/v8/mjsunit/transcendentals.js delete mode 100644 implementation-contributed/v8/mjsunit/transition-elements-kind.js delete mode 100644 implementation-contributed/v8/mjsunit/try-catch-default-destructuring.js delete mode 100644 implementation-contributed/v8/mjsunit/try-catch-extension-object.js delete mode 100644 implementation-contributed/v8/mjsunit/try-catch-scopes.js delete mode 100644 implementation-contributed/v8/mjsunit/try-finally-continue.js delete mode 100644 implementation-contributed/v8/mjsunit/try-finally-nested.js delete mode 100644 implementation-contributed/v8/mjsunit/try.js delete mode 100644 implementation-contributed/v8/mjsunit/type-profile/regress-707223.js delete mode 100644 implementation-contributed/v8/mjsunit/typed-array-slice.js delete mode 100644 implementation-contributed/v8/mjsunit/typeof.js delete mode 100644 implementation-contributed/v8/mjsunit/tzoffset-seoul-noi18n.js delete mode 100644 implementation-contributed/v8/mjsunit/tzoffset-seoul.js delete mode 100644 implementation-contributed/v8/mjsunit/tzoffset-transition-apia.js delete mode 100644 implementation-contributed/v8/mjsunit/tzoffset-transition-lord-howe.js delete mode 100644 implementation-contributed/v8/mjsunit/tzoffset-transition-moscow.js delete mode 100644 implementation-contributed/v8/mjsunit/tzoffset-transition-new-york-noi18n.js delete mode 100644 implementation-contributed/v8/mjsunit/tzoffset-transition-new-york.js delete mode 100644 implementation-contributed/v8/mjsunit/ubsan-fuzzerbugs.js delete mode 100644 implementation-contributed/v8/mjsunit/unary-minus-deopt.js delete mode 100644 implementation-contributed/v8/mjsunit/unbox-double-arrays.js delete mode 100644 implementation-contributed/v8/mjsunit/unbox-double-field-indexed.js delete mode 100644 implementation-contributed/v8/mjsunit/unbox-double-field.js delete mode 100644 implementation-contributed/v8/mjsunit/unbox-smi-field-indexed.js delete mode 100644 implementation-contributed/v8/mjsunit/unbox-smi-field.js delete mode 100644 implementation-contributed/v8/mjsunit/undeletable-functions.js delete mode 100644 implementation-contributed/v8/mjsunit/undetectable-compare.js delete mode 100644 implementation-contributed/v8/mjsunit/undetectable.js delete mode 100644 implementation-contributed/v8/mjsunit/unicode-case-overoptimization.js delete mode 100644 implementation-contributed/v8/mjsunit/unicode-string-to-number.js delete mode 100644 implementation-contributed/v8/mjsunit/unicode-test.js delete mode 100644 implementation-contributed/v8/mjsunit/unicodelctest-no-optimization.js delete mode 100644 implementation-contributed/v8/mjsunit/unicodelctest.js delete mode 100644 implementation-contributed/v8/mjsunit/unused-context-in-with.js delete mode 100644 implementation-contributed/v8/mjsunit/unusual-constructor.js delete mode 100644 implementation-contributed/v8/mjsunit/uri.js delete mode 100644 implementation-contributed/v8/mjsunit/value-callic-prototype-change.js delete mode 100644 implementation-contributed/v8/mjsunit/value-of.js delete mode 100644 implementation-contributed/v8/mjsunit/value-wrapper-accessor.js delete mode 100644 implementation-contributed/v8/mjsunit/value-wrapper.js delete mode 100644 implementation-contributed/v8/mjsunit/var.js delete mode 100644 implementation-contributed/v8/mjsunit/verify-assert-false.js delete mode 100644 implementation-contributed/v8/mjsunit/verify-check-false.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces0.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces1.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces2.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces3.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces4.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces5.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces6.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces7.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces8.js delete mode 100644 implementation-contributed/v8/mjsunit/whitespaces9.js delete mode 100644 implementation-contributed/v8/mjsunit/with-function-expression.js delete mode 100644 implementation-contributed/v8/mjsunit/with-leave.js delete mode 100644 implementation-contributed/v8/mjsunit/with-parameter-access.js delete mode 100644 implementation-contributed/v8/mjsunit/with-prototype.js delete mode 100644 implementation-contributed/v8/mjsunit/with-readonly.js delete mode 100644 implementation-contributed/v8/mjsunit/with-value.js delete mode 100644 implementation-contributed/v8/test262/BUILD.gn delete mode 100644 implementation-contributed/v8/test262/README delete mode 100644 implementation-contributed/v8/test262/detachArrayBuffer.js delete mode 100644 implementation-contributed/v8/test262/harness-adapt-donotevaluate.js delete mode 100644 implementation-contributed/v8/test262/harness-adapt.js delete mode 100644 implementation-contributed/v8/test262/harness-agent.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/intl402/DateTimeFormat/12.1.1_1.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/intl402/NumberFormat/prototype/formatToParts/default-parameter.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-arrow-err-contains-arguments.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-arrow-eval-err-contains-arguments.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-eval-arrow-err-contains-arguments.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/language/module-code/comment-single-line-html-close-comment-before-function.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/language/module-code/comment-single-line-html-close-comment-newline-before-function.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-arrow-err-contains-arguments.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-arrow-eval-err-contains-arguments.js delete mode 100644 implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-eval-arrow-err-contains-arguments.js delete mode 100755 implementation-contributed/v8/test262/prune-local-tests.sh delete mode 100644 implementation-contributed/v8/test262/test262.status delete mode 100644 implementation-contributed/v8/test262/testcfg.py delete mode 100755 implementation-contributed/v8/test262/upstream-local-tests.sh delete mode 100644 implementation-contributed/v8/wasm-js/BUILD.gn delete mode 100644 implementation-contributed/v8/wasm-js/LICENSE.testharness delete mode 100644 implementation-contributed/v8/wasm-js/testcfg.py delete mode 100644 implementation-contributed/v8/wasm-js/testharness-after.js delete mode 100644 implementation-contributed/v8/wasm-js/testharness.js delete mode 100644 implementation-contributed/v8/wasm-js/wasm-js.status diff --git a/implementation-contributed/curation_logs/es6.md b/implementation-contributed/curation_logs/es6.md deleted file mode 100644 index c6d8ae620a9..00000000000 --- a/implementation-contributed/curation_logs/es6.md +++ /dev/null @@ -1,38 +0,0 @@ -- well-known_symbols_Symbol.toPrimitive.js - - Review coverage for Symbol.toPrimitive calls in many expressions. e.g. addition, subtractiong, comparison, etc -- WeakSet_iterator_closing.js - - Based in the tests at `built-ins/WeakSet/iterator-*`, add cases for verifying the correct get and call order for the iterator next/return/throw, etc - - the same is valid for WeakMap, Set, and Map -- Unicode_code_point_escapes_in_identifiers.js / Unicode_code_point_escapes_in_strings.js - - Needs coverage for cases using unicode code point escapes in: - - `language/identifiers` - - `language/reserved-words` - - `language/literals` - - `language/keywords` - - `language/directive-prologue` - - `language/white-space` - - arguments object? - - etc -- Symbol_JSON.stringify_ignores_symbols.js - - Cover Symbol values in JSON.stringify (`built-ins/JSON/stringify`) -- Set_-0_key_converts_to_+0.js - - `built-ins/Set/will-not-add-duplicate-entry-normalizes-zero.js`: reconsider verifying -0 normalization fetching the values from the Set. - - Similar to Map index? Needs to verify -- rest_parameters_new_Function_support.js - - Add coverage composing fns through `new Function` using rest operators in strings - - expand to other function constructors -- rest_parameters_cant_be_used_in_setters.js - - Couldn't find coverage for rest parameters disallowed in setters, needs double check -- Proxy_JSON.stringify_support.js - - Is it worth adding JSON.stringify behavior over Proxied objects? -- Proxy_internal_set_calls_Array.prototype.push.js / Proxy_internal_set_calls_*.js / Proxy_internal_get_calls_*.js - - It is interesting to verify Array/String/RegExp/etc methods calling internals being observed with exotic proxy objects. - - This is a coverage for each method, not Proxy. - - Rather than add these operations to each method, but most of the Array methods have malstructured legacy tests. - - It's recommended to review the coverage and recreate tests, adding cases where calls to internals are observed like in this example. -- prototype_of_bound_functions_arrow_functions.js - - Add coverage for bound special functions - - Add coverage for checking the prototypes... - - Add coverage for bound class methods (include static and private) -- Object_static_methods_accept_primitives_Object.freeze.js - - Needs Coverage Object static methods - e.g. `Object.freeze` - receiving non object values \ No newline at end of file diff --git a/implementation-contributed/curation_logs/javascriptcore.json b/implementation-contributed/curation_logs/javascriptcore.json deleted file mode 100644 index d3520321ede..00000000000 --- a/implementation-contributed/curation_logs/javascriptcore.json +++ /dev/null @@ -1,2763 +0,0 @@ -{ - "sourceRevisionAtLastExport": "8493f293ea", - "targetRevisionAtLastExport": "a2c0e3fdba", - "curatedFiles": { - "/stress/Number-isNaN-basics.js": "DELETED_IN_TARGET", - "/stress/Object_static_methods_Object.getOwnPropertyDescriptors-proxy.js": "DELETED_IN_TARGET", - "/stress/Object_static_methods_Object.getOwnPropertyDescriptors.js": "DELETED_IN_TARGET", - "/stress/OverrideHasInstance-should-not-branch-across-register-allocations.js": "DELETED_IN_TARGET", - "/stress/SharedArrayBuffer-opt.js": "DELETED_IN_TARGET", - "/stress/SharedArrayBuffer.js": "DELETED_IN_TARGET", - "/stress/activation-sink-default-value-tdz-error.js": "DELETED_IN_TARGET", - "/stress/activation-sink-default-value.js": "DELETED_IN_TARGET", - "/stress/activation-sink-osrexit-default-value-tdz-error.js": "DELETED_IN_TARGET", - "/stress/activation-sink-osrexit-default-value.js": "DELETED_IN_TARGET", - "/stress/activation-sink-osrexit.js": "DELETED_IN_TARGET", - "/stress/activation-sink.js": "DELETED_IN_TARGET", - "/stress/activation-test-loop.js": "DELETED_IN_TARGET", - "/stress/add-constant-overflow-recovery.js": "DELETED_IN_TARGET", - "/stress/add-inferred-type-table-to-existing-structure.js": "DELETED_IN_TARGET", - "/stress/add-int52-constant-overflow-recovery.js": "DELETED_IN_TARGET", - "/stress/add-int52-large-constant-overflow-recovery.js": "DELETED_IN_TARGET", - "/stress/add-overflow-recovery.js": "DELETED_IN_TARGET", - "/stress/add-overflows-after-not-equal.js": "DELETED_IN_TARGET", - "/stress/add-small-constant-overflow-recovery.js": "DELETED_IN_TARGET", - "/stress/ai-consistency-filter-cells.js": "DELETED_IN_TARGET", - "/stress/ai-create-this-to-new-object-fire.js": "DELETED_IN_TARGET", - "/stress/ai-create-this-to-new-object.js": "DELETED_IN_TARGET", - "/stress/ai-needs-to-model-spreads-effects.js": "DELETED_IN_TARGET", - "/stress/allocation-sinking-defs-may-have-replacements.js": "DELETED_IN_TARGET", - "/stress/allocation-sinking-new-object-with-poly-proto.js": "DELETED_IN_TARGET", - "/stress/allocation-sinking-puthint-control-flow.js": "DELETED_IN_TARGET", - "/stress/always-enter-dictionary-indexing-mode-with-getter.js": "DELETED_IN_TARGET", - "/stress/any-int-as-double-add.js": "DELETED_IN_TARGET", - "/stress/arguments-callee-uninitialized.js": "DELETED_IN_TARGET", - "/stress/arguments-captured.js": "DELETED_IN_TARGET", - "/stress/arguments-copy-register-array-backing-store.js": "DELETED_IN_TARGET", - "/stress/arguments-custom-properties-gc.js": "DELETED_IN_TARGET", - "/stress/arguments-define-property.js": "DELETED_IN_TARGET", - "/stress/arguments-elimination-candidate-listings-should-respect-pseudo-terminals.js": "DELETED_IN_TARGET", - "/stress/arguments-elimination-force-exit.js": "DELETED_IN_TARGET", - "/stress/arguments-elimination-throw.js": "DELETED_IN_TARGET", - "/stress/arguments-elimination-varargs-too-many-args-arg-count.js": "DELETED_IN_TARGET", - "/stress/arguments-exit-fixed.js": "DELETED_IN_TARGET", - "/stress/arguments-exit-strict-mode-fixed.js": "DELETED_IN_TARGET", - "/stress/arguments-exit-strict-mode.js": "DELETED_IN_TARGET", - "/stress/arguments-exit.js": "DELETED_IN_TARGET", - "/stress/arguments-inlined-exit-strict-mode-fixed.js": "DELETED_IN_TARGET", - "/stress/arguments-inlined-exit-strict-mode.js": "DELETED_IN_TARGET", - "/stress/arguments-inlined-exit.js": "DELETED_IN_TARGET", - "/stress/arguments-interference-cfg.js": "DELETED_IN_TARGET", - "/stress/arguments-interference.js": "DELETED_IN_TARGET", - "/stress/arguments-iterator.js": "DELETED_IN_TARGET", - "/stress/arguments-length-always-dont-enum.js": "DELETED_IN_TARGET", - "/stress/arguments-non-configurable.js": "DELETED_IN_TARGET", - "/stress/arith-abs-overflow.js": "DELETED_IN_TARGET", - "/stress/arith-abs-to-arith-negate-range-optimizaton.js": "DELETED_IN_TARGET", - "/stress/arith-abs-with-bitwise-or-zero.js": "DELETED_IN_TARGET", - "/stress/arith-add-on-double-array-with-holes.js": "DELETED_IN_TARGET", - "/stress/arith-add-with-constant-overflow.js": "DELETED_IN_TARGET", - "/stress/arith-add-with-constants.js": "DELETED_IN_TARGET", - "/stress/arith-clz32-effects.js": "DELETED_IN_TARGET", - "/stress/arith-modulo-node-behaviors.js": "DELETED_IN_TARGET", - "/stress/arith-modulo-twice.js": "DELETED_IN_TARGET", - "/stress/arith-mul-with-constants.js": "DELETED_IN_TARGET", - "/stress/arith-nodes-abstract-interpreter-untypeduse.js": "DELETED_IN_TARGET", - "/stress/arith-profile-for-negate-can-see-non-number-due-to-dfg-osr-exit-profiling.js": "DELETED_IN_TARGET", - "/stress/arith-sub-on-double-array-with-holes.js": "DELETED_IN_TARGET", - "/stress/arity-check-ftl-throw-more-args.js": "DELETED_IN_TARGET", - "/stress/arity-check-ftl-throw.js": "DELETED_IN_TARGET", - "/stress/arity-fixup-inlining-dont-generate-invalid-use.js": "DELETED_IN_TARGET", - "/stress/arity-fixup-should-not-touch-stack-area-below-sp.js": "DELETED_IN_TARGET", - "/stress/arity-mismatch-arguments-length.js": "DELETED_IN_TARGET", - "/stress/arity-mismatch-inlining-extra-slots.js": "DELETED_IN_TARGET", - "/stress/arity-mismatch-inlining.js": "DELETED_IN_TARGET", - "/stress/arity-mismatch-rest.js": "DELETED_IN_TARGET", - "/stress/array-buffer-byte-length.js": "DELETED_IN_TARGET", - "/stress/array-concat-fast-spread-proxy.js": "DELETED_IN_TARGET", - "/stress/array-concat-on-frozen-object.js": "DELETED_IN_TARGET", - "/stress/array-concat-spread-object.js": "DELETED_IN_TARGET", - "/stress/array-concat-spread-proxy-exception-check.js": "DELETED_IN_TARGET", - "/stress/array-concat-spread-proxy.js": "DELETED_IN_TARGET", - "/stress/array-concat-with-slow-indexingtypes.js": "DELETED_IN_TARGET", - "/stress/array-constructor-no-result.js": "DELETED_IN_TARGET", - "/stress/array-copywithin.js": "DELETED_IN_TARGET", - "/stress/array-fill-put-by-val.js": "DELETED_IN_TARGET", - "/stress/array-filter-put-by-val-direct.js": "DELETED_IN_TARGET", - "/stress/array-find-does-not-lookup-twice.js": "DELETED_IN_TARGET", - "/stress/array-flatmap.js": "DELETED_IN_TARGET", - "/stress/array-flatten.js": "DELETED_IN_TARGET", - "/stress/array-from-abs-and-floor.js": "DELETED_IN_TARGET", - "/stress/array-from-put-by-val-direct.js": "DELETED_IN_TARGET", - "/stress/array-from-set-length.js": "DELETED_IN_TARGET", - "/stress/array-from-with-accessors.js": "DELETED_IN_TARGET", - "/stress/array-from-with-iterable.js": "DELETED_IN_TARGET", - "/stress/array-from-with-iterator.js": "DELETED_IN_TARGET", - "/stress/array-indexof-array-prototype-change.js": "DELETED_IN_TARGET", - "/stress/array-indexof-arraystorage.js": "DELETED_IN_TARGET", - "/stress/array-indexof-constant-folding.js": "DELETED_IN_TARGET", - "/stress/array-indexof-have-a-bad-time-getter.js": "DELETED_IN_TARGET", - "/stress/array-indexof-have-a-bad-time.js": "DELETED_IN_TARGET", - "/stress/array-indexof-hole-and-other.js": "DELETED_IN_TARGET", - "/stress/array-indexof-hole-with-prototype.js": "DELETED_IN_TARGET", - "/stress/array-indexof-hole.js": "DELETED_IN_TARGET", - "/stress/array-indexof-index.js": "DELETED_IN_TARGET", - "/stress/array-indexof-negative-index.js": "DELETED_IN_TARGET", - "/stress/array-indexof-non-int32-start-index.js": "DELETED_IN_TARGET", - "/stress/array-indexof-object-prototype-change.js": "DELETED_IN_TARGET", - "/stress/array-indexof-object.js": "DELETED_IN_TARGET", - "/stress/array-indexof-original-array.js": "DELETED_IN_TARGET", - "/stress/array-indexof-other.js": "DELETED_IN_TARGET", - "/stress/array-indexof-string.js": "DELETED_IN_TARGET", - "/stress/array-indexof-structure-change-convert.js": "DELETED_IN_TARGET", - "/stress/array-indexof-structure-change.js": "DELETED_IN_TARGET", - "/stress/array-indexof-symbol.js": "DELETED_IN_TARGET", - "/stress/array-indexof.js": "DELETED_IN_TARGET", - "/stress/array-iterators-next-error-messages.js": "DELETED_IN_TARGET", - "/stress/array-iterators-next-with-call.js": "DELETED_IN_TARGET", - "/stress/array-iterators-next.js": "DELETED_IN_TARGET", - "/stress/array-join-on-strings-need-overflow-checks.js": "DELETED_IN_TARGET", - "/stress/array-length-array-storage-plain-object.js": "DELETED_IN_TARGET", - "/stress/array-length-not-writable.js": "DELETED_IN_TARGET", - "/stress/array-length-plain-object.js": "DELETED_IN_TARGET", - "/stress/array-map-put-by-val-direct.js": "DELETED_IN_TARGET", - "/stress/array-pop-array-storage.js": "DELETED_IN_TARGET", - "/stress/array-pop-contiguous.js": "DELETED_IN_TARGET", - "/stress/array-pop-double-hole.js": "DELETED_IN_TARGET", - "/stress/array-pop-double.js": "DELETED_IN_TARGET", - "/stress/array-pop-int32.js": "DELETED_IN_TARGET", - "/stress/array-profile-should-record-copy-on-write.js": "DELETED_IN_TARGET", - "/stress/array-prototype-concat-of-long-spliced-arrays.js": "DELETED_IN_TARGET", - "/stress/array-prototype-concat-of-long-spliced-arrays2.js": "DELETED_IN_TARGET", - "/stress/array-prototype-slow-put-having-a-bad-time-2.js": "DELETED_IN_TARGET", - "/stress/array-prototype-slow-put-having-a-bad-time.js": "DELETED_IN_TARGET", - "/stress/array-prototype-splice-making-typed-array.js": "DELETED_IN_TARGET", - "/stress/array-push-array-storage-beyond-int32.js": "DELETED_IN_TARGET", - "/stress/array-push-array-storage.js": "DELETED_IN_TARGET", - "/stress/array-push-contiguous.js": "DELETED_IN_TARGET", - "/stress/array-push-double-then-nan.js": "DELETED_IN_TARGET", - "/stress/array-push-double.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-array-storage-beyond-int32.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-contiguous.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-double-nan.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-double.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-int32.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-many-contiguous.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-many-double.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-many-int32.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-many-storage.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-storage-continuous.js": "DELETED_IN_TARGET", - "/stress/array-push-multiple-storage.js": "DELETED_IN_TARGET", - "/stress/array-push-nan-to-double-array-cse-sane-and-insane-chain.js": "DELETED_IN_TARGET", - "/stress/array-push-nan-to-double-array.js": "DELETED_IN_TARGET", - "/stress/array-push.js": "DELETED_IN_TARGET", - "/stress/array-reverse-doesnt-clobber.js": "DELETED_IN_TARGET", - "/stress/array-reverse-proxy.js": "DELETED_IN_TARGET", - "/stress/array-setLength-on-ArrayClass-with-large-length.js": "DELETED_IN_TARGET", - "/stress/array-setLength-on-ArrayClass-with-small-length.js": "DELETED_IN_TARGET", - "/stress/array-slice-cow.js": "DELETED_IN_TARGET", - "/stress/array-slice-intrinsic.js": "DELETED_IN_TARGET", - "/stress/array-slice-jettison-on-constructor-change.js": "DELETED_IN_TARGET", - "/stress/array-slice-on-frozen-object.js": "DELETED_IN_TARGET", - "/stress/array-slice-osr-exit-2.js": "DELETED_IN_TARGET", - "/stress/array-slice-osr-exit.js": "DELETED_IN_TARGET", - "/stress/array-slice-with-zero.js": "DELETED_IN_TARGET", - "/stress/array-slice-zero-args.js": "DELETED_IN_TARGET", - "/stress/array-sort-bad-comparator.js": "DELETED_IN_TARGET", - "/stress/array-species-config-array-constructor.js": "DELETED_IN_TARGET", - "/stress/array-species-functions.js": "DELETED_IN_TARGET", - "/stress/array-storage-array-unshift.js": "DELETED_IN_TARGET", - "/stress/array-storage-get-by-val.js": "DELETED_IN_TARGET", - "/stress/array-storage-length.js": "DELETED_IN_TARGET", - "/stress/array-symbol-species-lazy-watchpoints.js": "DELETED_IN_TARGET", - "/stress/array-to-locale-string.js": "DELETED_IN_TARGET", - "/stress/array-unshift-zero-property-storage.js": "DELETED_IN_TARGET", - "/stress/arrayify-array-storage-array.js": "DELETED_IN_TARGET", - "/stress/arrayify-array-storage-non-array.js": "DELETED_IN_TARGET", - "/stress/arrayify-array-storage-typed-array.js": "DELETED_IN_TARGET", - "/stress/arrayify-array-storage.js": "DELETED_IN_TARGET", - "/stress/arrayify-fires-watchpoint.js": "DELETED_IN_TARGET", - "/stress/arrayify-int32-typed-array.js": "DELETED_IN_TARGET", - "/stress/arrayify-slow-put-array-storage-pass-array-storage.js": "DELETED_IN_TARGET", - "/stress/arrayify-slow-put-array-storage.js": "DELETED_IN_TARGET", - "/stress/arrayify-structure-bad-test.js": "DELETED_IN_TARGET", - "/stress/arrayify-to-structure-contradiction.js": "DELETED_IN_TARGET", - "/stress/arrayify.js": "DELETED_IN_TARGET", - "/stress/arrow-function-needs-its-own-structure.js": "DELETED_IN_TARGET", - "/stress/arrow-function-token-is-not-keyword.js": "DELETED_IN_TARGET", - "/stress/arrow-functions-as-default-parameter-values.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-activation-sink-osrexit-default-value.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-activation-sink-osrexit.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-activation-sink.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-bound.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-call.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-constructor.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-arguments-non-strict-1.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-arguments-non-strict-2.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-arguments-strict.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-newtarget.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-supercall-1.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-supercall-2.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-supercall-3.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-supercall-4.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-superproperty.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-this-1.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-this-2.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-this-3.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-this-4.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-this-5.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-this-6.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-this-7.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-bind-this-8.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-this-activation-sink-osrexit.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-this-activation-sink.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-this-sinking-no-double-allocate.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-this-sinking-osrexit.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-lexical-this-sinking-put.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-name.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-others.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-prototype.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-run-10-1.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-run-10-2.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-run-10000-1.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-run-10000-2.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-sinking-no-double-allocate.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-sinking-osrexit.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-sinking-put.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-tdz-1.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-tdz-2.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-tdz-3.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-tdz-4.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-tostring.js": "DELETED_IN_TARGET", - "/stress/arrowfunction-typeof.js": "DELETED_IN_TARGET", - "/stress/atomics-add-uint32.js": "DELETED_IN_TARGET", - "/stress/atomics-known-int-use.js": "DELETED_IN_TARGET", - "/stress/atomics-neg-zero.js": "DELETED_IN_TARGET", - "/stress/atomics-store-return.js": "DELETED_IN_TARGET", - "/stress/b3-delete-orphans-should-neutralize-upsilons-with-dead-phis.js": "DELETED_IN_TARGET", - "/stress/baseline-osrentry-catch-is-reachable.js": "DELETED_IN_TARGET", - "/stress/basic-eden-gc-test.js": "DELETED_IN_TARGET", - "/stress/basic-weakmap.js": "DELETED_IN_TARGET", - "/stress/basic-weakset.js": "DELETED_IN_TARGET", - "/stress/big-int-add-wrapped-value.js": "DELETED_IN_TARGET", - "/stress/big-int-addition-basic.js": "DELETED_IN_TARGET", - "/stress/big-int-addition-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-addition-memory-stress.js": "DELETED_IN_TARGET", - "/stress/big-int-addition-string-coercion.js": "DELETED_IN_TARGET", - "/stress/big-int-addition-to-primitive-precedence.js": "DELETED_IN_TARGET", - "/stress/big-int-addition-to-primitive.js": "DELETED_IN_TARGET", - "/stress/big-int-addition-type-error.js": "DELETED_IN_TARGET", - "/stress/big-int-as-key.js": "DELETED_IN_TARGET", - "/stress/big-int-constructor-gc.js": "DELETED_IN_TARGET", - "/stress/big-int-constructor-oom.js": "DELETED_IN_TARGET", - "/stress/big-int-constructor-properties.js": "DELETED_IN_TARGET", - "/stress/big-int-constructor-prototype-prop-descriptor.js": "DELETED_IN_TARGET", - "/stress/big-int-constructor-prototype.js": "DELETED_IN_TARGET", - "/stress/big-int-constructor.js": "DELETED_IN_TARGET", - "/stress/big-int-div-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-div-memory-stress.js": "DELETED_IN_TARGET", - "/stress/big-int-div-to-primitive.js": "DELETED_IN_TARGET", - "/stress/big-int-div-type-error.js": "DELETED_IN_TARGET", - "/stress/big-int-div-wrapped-value.js": "DELETED_IN_TARGET", - "/stress/big-int-division.js": "DELETED_IN_TARGET", - "/stress/big-int-equals-basic.js": "DELETED_IN_TARGET", - "/stress/big-int-equals-to-primitive-precedence.js": "DELETED_IN_TARGET", - "/stress/big-int-equals-wrapped-value.js": "DELETED_IN_TARGET", - "/stress/big-int-function-apply.js": "DELETED_IN_TARGET", - "/stress/big-int-greater-than-general.js": "DELETED_IN_TARGET", - "/stress/big-int-greater-than-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-greater-than-or-equal-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-greater-than-or-equal-order-of-evaluation.js": "DELETED_IN_TARGET", - "/stress/big-int-greater-than-or-equal-wrapped-values.js": "DELETED_IN_TARGET", - "/stress/big-int-greater-than-or-equal.js": "DELETED_IN_TARGET", - "/stress/big-int-greater-than-order-of-evaluation.js": "DELETED_IN_TARGET", - "/stress/big-int-greater-than-wrapped-values.js": "DELETED_IN_TARGET", - "/stress/big-int-length.js": "DELETED_IN_TARGET", - "/stress/big-int-less-than-general.js": "DELETED_IN_TARGET", - "/stress/big-int-less-than-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-less-than-or-equal-general.js": "DELETED_IN_TARGET", - "/stress/big-int-less-than-or-equal-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-less-than-or-equal-order-of-evaluation.js": "DELETED_IN_TARGET", - "/stress/big-int-less-than-or-equal-wrapped-values.js": "DELETED_IN_TARGET", - "/stress/big-int-less-than-order-of-evaluation.js": "DELETED_IN_TARGET", - "/stress/big-int-less-than-wrapped-values.js": "DELETED_IN_TARGET", - "/stress/big-int-literal-line-terminator.js": "DELETED_IN_TARGET", - "/stress/big-int-literals.js": "DELETED_IN_TARGET", - "/stress/big-int-mod-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-mod-memory-stress.js": "DELETED_IN_TARGET", - "/stress/big-int-mod-to-primitive-precedence.js": "DELETED_IN_TARGET", - "/stress/big-int-mod-to-primitive.js": "DELETED_IN_TARGET", - "/stress/big-int-mod-type-error.js": "DELETED_IN_TARGET", - "/stress/big-int-mod-wrapped-value.js": "DELETED_IN_TARGET", - "/stress/big-int-mod.js": "DELETED_IN_TARGET", - "/stress/big-int-mul-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-mul-to-primitive-precedence.js": "DELETED_IN_TARGET", - "/stress/big-int-mul-to-primitive.js": "DELETED_IN_TARGET", - "/stress/big-int-mul-type-error.js": "DELETED_IN_TARGET", - "/stress/big-int-mul-wrapped-value.js": "DELETED_IN_TARGET", - "/stress/big-int-multiplication.js": "DELETED_IN_TARGET", - "/stress/big-int-multiply-memory-stress.js": "DELETED_IN_TARGET", - "/stress/big-int-negate-basic.js": "DELETED_IN_TARGET", - "/stress/big-int-negate-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-no-conversion-to-number.js": "DELETED_IN_TARGET", - "/stress/big-int-operations-error.js": "DELETED_IN_TARGET", - "/stress/big-int-prop-descriptor.js": "DELETED_IN_TARGET", - "/stress/big-int-proto-constructor.js": "DELETED_IN_TARGET", - "/stress/big-int-proto-name.js": "DELETED_IN_TARGET", - "/stress/big-int-prototype-properties.js": "DELETED_IN_TARGET", - "/stress/big-int-prototype-proto.js": "DELETED_IN_TARGET", - "/stress/big-int-prototype-symbol-to-string-tag.js": "DELETED_IN_TARGET", - "/stress/big-int-prototype-to-string-apply.js": "DELETED_IN_TARGET", - "/stress/big-int-prototype-to-string-cast-overflow.js": "DELETED_IN_TARGET", - "/stress/big-int-prototype-to-string-exception.js": "DELETED_IN_TARGET", - "/stress/big-int-prototype-to-string-wrong-values.js": "DELETED_IN_TARGET", - "/stress/big-int-prototype-value-of.js": "DELETED_IN_TARGET", - "/stress/big-int-spec-to-primitive.js": "DELETED_IN_TARGET", - "/stress/big-int-spec-to-this.js": "DELETED_IN_TARGET", - "/stress/big-int-strict-equals-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-strict-spec-to-this.js": "DELETED_IN_TARGET", - "/stress/big-int-sub-wrapped-value.js": "DELETED_IN_TARGET", - "/stress/big-int-subtraction-basic.js": "DELETED_IN_TARGET", - "/stress/big-int-subtraction-jit.js": "DELETED_IN_TARGET", - "/stress/big-int-subtraction-type-error.js": "DELETED_IN_TARGET", - "/stress/big-int-to-object.js": "DELETED_IN_TARGET", - "/stress/big-int-to-string.js": "DELETED_IN_TARGET", - "/stress/big-int-type-of-proven-type.js": "DELETED_IN_TARGET", - "/stress/big-int-type-of.js": "DELETED_IN_TARGET", - "/stress/big-int-unary-plus.js": "DELETED_IN_TARGET", - "/stress/big-int-white-space-trailing-leading.js": "DELETED_IN_TARGET", - "/stress/big-match.js": "DELETED_IN_TARGET", - "/stress/big-split-captures.js": "DELETED_IN_TARGET", - "/stress/big-split.js": "DELETED_IN_TARGET", - "/stress/bit-op-value-to-int32-input-liveness.js": "DELETED_IN_TARGET", - "/stress/block-scoped-function-declarations.js": "DELETED_IN_TARGET", - "/stress/bound-function-does-not-have-caller-and-arguments.js": "DELETED_IN_TARGET", - "/stress/bound-function-lazy-name-generation.js": "DELETED_IN_TARGET", - "/stress/bound-function-tail-call-with-exception.js": "DELETED_IN_TARGET", - "/stress/bound-function-uses-prototype.js": "DELETED_IN_TARGET", - "/stress/bounds-check-not-eliminated-by-licm.js": "DELETED_IN_TARGET", - "/stress/branch-check-int32-on-boolean-to-number-untyped.js": "DELETED_IN_TARGET", - "/stress/branch-check-number-on-boolean-to-number-untyped.js": "DELETED_IN_TARGET", - "/stress/branch-may-exit-due-to-object-or-other-use-kind.js": "DELETED_IN_TARGET", - "/stress/broken-have-a-bad-time-with-arguments-for-gc-testing.js": "DELETED_IN_TARGET", - "/stress/cached-prototype-setter.js": "DELETED_IN_TARGET", - "/stress/call-apply-builtin-functions-dont-use-iterators.js": "DELETED_IN_TARGET", - "/stress/call-apply-exponential-bytecode-size.js": "DELETED_IN_TARGET", - "/stress/call-forward-varargs-for-inlined-escaped-arguments.js": "DELETED_IN_TARGET", - "/stress/call-non-calleable-constructors-as-function.js": "DELETED_IN_TARGET", - "/stress/call-object-constructor.js": "DELETED_IN_TARGET", - "/stress/call-varargs-double-new-array-buffer.js": "DELETED_IN_TARGET", - "/stress/call-varargs-from-inlined-code-with-odd-number-of-arguments.js": "DELETED_IN_TARGET", - "/stress/call-varargs-from-inlined-code.js": "DELETED_IN_TARGET", - "/stress/call-varargs-length-effects.js": "DELETED_IN_TARGET", - "/stress/call-varargs-spread-new-array-buffer.js": "DELETED_IN_TARGET", - "/stress/call-varargs-spread-new-array-buffer2.js": "DELETED_IN_TARGET", - "/stress/call-varargs-spread.js": "DELETED_IN_TARGET", - "/stress/call-varargs-with-different-arguments-length-after-warmup.js": "DELETED_IN_TARGET", - "/stress/caller-and-arguments-properties-for-functions-that-dont-have-them.js": "DELETED_IN_TARGET", - "/stress/caller-native-code.js": "DELETED_IN_TARGET", - "/stress/capture-escape-and-throw.js": "DELETED_IN_TARGET", - "/stress/captured-arguments-variable.js": "DELETED_IN_TARGET", - "/stress/catch-clause-should-be-under-tdz1.js": "DELETED_IN_TARGET", - "/stress/catch-clause-should-be-under-tdz2.js": "DELETED_IN_TARGET", - "/stress/catch-clause-should-be-under-tdz3.js": "DELETED_IN_TARGET", - "/stress/catch-clause-should-be-under-tdz4.js": "DELETED_IN_TARGET", - "/stress/catch-clause-should-be-under-tdz5.js": "DELETED_IN_TARGET", - "/stress/catch-parameter-destructuring.js": "DELETED_IN_TARGET", - "/stress/catch-parameter-syntax.js": "DELETED_IN_TARGET", - "/stress/catch-set-argument-speculation-failure.js": "DELETED_IN_TARGET", - "/stress/catch-variables-under-tdz.js": "DELETED_IN_TARGET", - "/stress/check-string-ident.js": "DELETED_IN_TARGET", - "/stress/check-structure-ir-ensures-empty-does-not-flow-through.js": "DELETED_IN_TARGET", - "/stress/chill-mod-chill-mod.js": "DELETED_IN_TARGET", - "/stress/class-derived-from-null.js": "DELETED_IN_TARGET", - "/stress/class-expression-generates-environment.js": "DELETED_IN_TARGET", - "/stress/class-expression-should-be-tdz-in-heritage.js": "DELETED_IN_TARGET", - "/stress/class-method-does-not-declare-variable-to-upper-scope.js": "DELETED_IN_TARGET", - "/stress/class-static-get-weird.js": "DELETED_IN_TARGET", - "/stress/class-subclassing-array.js": "DELETED_IN_TARGET", - "/stress/class-subclassing-function.js": "DELETED_IN_TARGET", - "/stress/class-subclassing-misc.js": "DELETED_IN_TARGET", - "/stress/class-subclassing-string.js": "DELETED_IN_TARGET", - "/stress/class-subclassing-typedarray.js": "DELETED_IN_TARGET", - "/stress/class-syntax-block-scoping.js": "DELETED_IN_TARGET", - "/stress/class-syntax-definition-semantics.js": "DELETED_IN_TARGET", - "/stress/class-syntax-derived-default-constructor.js": "DELETED_IN_TARGET", - "/stress/class-syntax-double-constructor.js": "DELETED_IN_TARGET", - "/stress/class-syntax-no-loop-tdz.js": "DELETED_IN_TARGET", - "/stress/class-syntax-no-tdz-in-catch.js": "DELETED_IN_TARGET", - "/stress/class-syntax-no-tdz-in-conditional.js": "DELETED_IN_TARGET", - "/stress/class-syntax-no-tdz-in-eval.js": "DELETED_IN_TARGET", - "/stress/class-syntax-no-tdz-in-loop-no-inline-super.js": "DELETED_IN_TARGET", - "/stress/class-syntax-no-tdz-in-loop.js": "DELETED_IN_TARGET", - "/stress/class-syntax-no-tdz.js": "DELETED_IN_TARGET", - "/stress/class-syntax-super-in-eval.js": "DELETED_IN_TARGET", - "/stress/class-syntax-tdz-in-catch.js": "DELETED_IN_TARGET", - "/stress/class-syntax-tdz-in-conditional.js": "DELETED_IN_TARGET", - "/stress/class-syntax-tdz-in-eval.js": "DELETED_IN_TARGET", - "/stress/class-syntax-tdz-in-loop.js": "DELETED_IN_TARGET", - "/stress/class-syntax-tdz-osr-entry-in-loop.js": "DELETED_IN_TARGET", - "/stress/class-syntax-tdz.js": "DELETED_IN_TARGET", - "/stress/class_elements.js": "DELETED_IN_TARGET", - "/stress/cloned-arguments-elimination.js": "DELETED_IN_TARGET", - "/stress/cloned-arguments-get-by-val-double-array.js": "DELETED_IN_TARGET", - "/stress/cloned-arguments-modification.js": "DELETED_IN_TARGET", - "/stress/cloned-arguments-should-visit-callee-during-gc.js": "DELETED_IN_TARGET", - "/stress/compare-clobber-untypeduse.js": "DELETED_IN_TARGET", - "/stress/compare-eq-object-or-other-to-object.js": "DELETED_IN_TARGET", - "/stress/compare-eq-object-to-object-or-other.js": "DELETED_IN_TARGET", - "/stress/compare-eq-on-null-and-undefined-non-peephole.js": "DELETED_IN_TARGET", - "/stress/compare-eq-on-null-and-undefined-optimized-in-constant-folding.js": "DELETED_IN_TARGET", - "/stress/compare-eq-on-null-and-undefined.js": "DELETED_IN_TARGET", - "/stress/compare-eq-should-use-known-other-use.js": "DELETED_IN_TARGET", - "/stress/compare-number-and-other.js": "DELETED_IN_TARGET", - "/stress/compare-semantic-origin-op-negate-method-of-getting-a-value-profile.js": "DELETED_IN_TARGET", - "/stress/compare-strict-eq-integer-to-misc.js": "DELETED_IN_TARGET", - "/stress/compare-strict-eq-on-various-types.js": "DELETED_IN_TARGET", - "/stress/constant-closure-var-with-dynamic-invalidation.js": "DELETED_IN_TARGET", - "/stress/constant-fold-multi-get-by-offset-to-get-by-offset-on-prototype-and-sink-allocation.js": "DELETED_IN_TARGET", - "/stress/constant-folding-osr-exit.js": "DELETED_IN_TARGET", - "/stress/constant-folding-phase-insert-check-handle-varargs.js": "DELETED_IN_TARGET", - "/stress/constant-folding-should-fold-make-rope-with-empty-strings.js": "DELETED_IN_TARGET", - "/stress/construct-forward-varargs-for-inlined-escaped-arguments.js": "DELETED_IN_TARGET", - "/stress/construct-overwritten-variable.js": "DELETED_IN_TARGET", - "/stress/construct-spread-overwritten-variable-2.js": "DELETED_IN_TARGET", - "/stress/construct-spread-overwritten-variable.js": "DELETED_IN_TARGET", - "/stress/construct-varargs-inline-smaller-Foo.js": "DELETED_IN_TARGET", - "/stress/construct-varargs-inline.js": "DELETED_IN_TARGET", - "/stress/construct-varargs-no-inline.js": "DELETED_IN_TARGET", - "/stress/constructor-with-return.js": "DELETED_IN_TARGET", - "/stress/contiguous-array-unshift.js": "DELETED_IN_TARGET", - "/stress/date-negative-zero.js": "DELETED_IN_TARGET", - "/stress/date-parse-ranges.js": "DELETED_IN_TARGET", - "/stress/date-relaxed.js": "DELETED_IN_TARGET", - "/stress/date-symbol-toprimitive.js": "DELETED_IN_TARGET", - "/stress/dead-access-to-captured-variable-preceded-by-a-live-store-in-function-with-multiple-basic-blocks.js": "DELETED_IN_TARGET", - "/stress/dead-access-to-captured-variable-preceded-by-a-live-store.js": "DELETED_IN_TARGET", - "/stress/dead-fiat-double-to-int52-then-exit-not-int52.js": "DELETED_IN_TARGET", - "/stress/dead-fiat-double-to-int52.js": "DELETED_IN_TARGET", - "/stress/dead-fiat-int32-to-int52.js": "DELETED_IN_TARGET", - "/stress/dead-fiat-value-to-int52-double-path.js": "DELETED_IN_TARGET", - "/stress/dead-get-closure-var.js": "DELETED_IN_TARGET", - "/stress/dead-int32-to-double.js": "DELETED_IN_TARGET", - "/stress/dead-speculating-argument-use.js": "DELETED_IN_TARGET", - "/stress/dead-uint32-to-number.js": "DELETED_IN_TARGET", - "/stress/dead-value-with-mov-hint-in-another-block.js": "DELETED_IN_TARGET", - "/stress/deep-StructureStubClearingWatchpoint-destructor-recursion.js": "DELETED_IN_TARGET", - "/stress/deeply-nested-finallys.js": "DELETED_IN_TARGET", - "/stress/default-proto-for-async-generator.js": "DELETED_IN_TARGET", - "/stress/default-proto-for-generator.js": "DELETED_IN_TARGET", - "/stress/default-value-parsing-should-propagate-error.js": "DELETED_IN_TARGET", - "/stress/delete-by-id.js": "DELETED_IN_TARGET", - "/stress/delete-by-val-ftl.js": "DELETED_IN_TARGET", - "/stress/delete-by-val.js": "DELETED_IN_TARGET", - "/stress/delete-to-object-exception.js": "DELETED_IN_TARGET", - "/stress/destructuring-assignment-accepts-iterables.js": "DELETED_IN_TARGET", - "/stress/destructuring-assignment-require-object-coercible.js": "DELETED_IN_TARGET", - "/stress/destructuring-assignment-syntax.js": "DELETED_IN_TARGET", - "/stress/destructuring-rest-element.js": "DELETED_IN_TARGET", - "/stress/dfg-call-class-constructor.js": "DELETED_IN_TARGET", - "/stress/dfg-create-arguments-inline-alloc.js": "DELETED_IN_TARGET", - "/stress/dfg-del-by-id.js": "DELETED_IN_TARGET", - "/stress/dfg-exception-try-catch-in-constructor-with-inlined-throw.js": "DELETED_IN_TARGET", - "/stress/dfg-get-by-id-should-not-assert-non-null-prediction.js": "DELETED_IN_TARGET", - "/stress/dfg-internal-function-call.js": "DELETED_IN_TARGET", - "/stress/dfg-internal-function-construct.js": "DELETED_IN_TARGET", - "/stress/dfg-node-convert-to-constant-must-clear-varargs-flags.js": "DELETED_IN_TARGET", - "/stress/dfg-object-proto-accessor.js": "DELETED_IN_TARGET", - "/stress/dfg-object-proto-getter.js": "DELETED_IN_TARGET", - "/stress/dfg-object-prototype-of.js": "DELETED_IN_TARGET", - "/stress/dfg-put-accessors-by-id-class.js": "DELETED_IN_TARGET", - "/stress/dfg-put-accessors-by-id.js": "DELETED_IN_TARGET", - "/stress/dfg-put-by-val-direct-with-edge-numbers.js": "DELETED_IN_TARGET", - "/stress/dfg-put-getter-by-id-class.js": "DELETED_IN_TARGET", - "/stress/dfg-put-getter-by-id.js": "DELETED_IN_TARGET", - "/stress/dfg-put-getter-by-val-class.js": "DELETED_IN_TARGET", - "/stress/dfg-put-getter-by-val.js": "DELETED_IN_TARGET", - "/stress/dfg-put-setter-by-id-class.js": "DELETED_IN_TARGET", - "/stress/dfg-put-setter-by-id.js": "DELETED_IN_TARGET", - "/stress/dfg-put-setter-by-val-class.js": "DELETED_IN_TARGET", - "/stress/dfg-put-setter-by-val.js": "DELETED_IN_TARGET", - "/stress/dfg-rare-data.js": "DELETED_IN_TARGET", - "/stress/dfg-reflect-get-prototype-of.js": "DELETED_IN_TARGET", - "/stress/dfg-ssa-swap.js": "DELETED_IN_TARGET", - "/stress/dfg-tail-calls.js": "DELETED_IN_TARGET", - "/stress/dfg-to-primitive-pass-symbol.js": "DELETED_IN_TARGET", - "/stress/dfg-try-catch-wrong-value-recovery-on-ic-miss.js": "DELETED_IN_TARGET", - "/stress/direct-arguments-check-array.js": "DELETED_IN_TARGET", - "/stress/direct-arguments-in-bounds-to-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/direct-arguments-osr-entry.js": "DELETED_IN_TARGET", - "/stress/direct-arguments-out-of-bounds-change-structure.js": "DELETED_IN_TARGET", - "/stress/direct-arguments-out-of-bounds-watchpoint.js": "DELETED_IN_TARGET", - "/stress/direct-arguments-override-length-then-access-normal-length.js": "DELETED_IN_TARGET", - "/stress/direct-binding-return-result.js": "DELETED_IN_TARGET", - "/stress/direct-eval-in-object-literal-methods.js": "DELETED_IN_TARGET", - "/stress/direct-tail-call-arity-mismatch-count-args.js": "DELETED_IN_TARGET", - "/stress/disable-caching-when-lazy-materializing-error-property-on-put.js": "DELETED_IN_TARGET", - "/stress/disable-function-dot-arguments.js": "DELETED_IN_TARGET", - "/stress/disable-gigacage-arrays.js": "DELETED_IN_TARGET", - "/stress/disable-gigacage-strings.js": "DELETED_IN_TARGET", - "/stress/disable-gigacage-typed-arrays.js": "DELETED_IN_TARGET", - "/stress/dont-constant-fold-check-type-info-on-bound-function.js": "DELETED_IN_TARGET", - "/stress/dont-crash-ftl-osr-entry.js": "DELETED_IN_TARGET", - "/stress/dont-crash-in-cfg-simplification.js": "DELETED_IN_TARGET", - "/stress/dont-crash-on-bad-invalidation-point.js": "DELETED_IN_TARGET", - "/stress/dont-crash-on-stack-overflow-when-parsing-builtin.js": "DELETED_IN_TARGET", - "/stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js": "DELETED_IN_TARGET", - "/stress/dont-crash-when-hoist-check-structure-on-tdz.js": "DELETED_IN_TARGET", - "/stress/dont-dead-lock-put-by-val-as-put-by-id.js": "DELETED_IN_TARGET", - "/stress/dont-reserve-huge-capacity-lexer.js": "DELETED_IN_TARGET", - "/stress/dont-run-cleanup-after-licm.js": "DELETED_IN_TARGET", - "/stress/dont-strength-reduce-valuerep-of-doublerep.js": "DELETED_IN_TARGET", - "/stress/dont-unwind-past-vm-entry-frame.js": "DELETED_IN_TARGET", - "/stress/dont-validate-stack-offset-in-b3-because-it-might-be-guarded-by-control-flow.js": "DELETED_IN_TARGET", - "/stress/double-array-to-array-storage.js": "DELETED_IN_TARGET", - "/stress/double-array-unshift.js": "DELETED_IN_TARGET", - "/stress/double-as-int32.js": "DELETED_IN_TARGET", - "/stress/double-compare-to-float.js": "DELETED_IN_TARGET", - "/stress/double-rep-real-number-use-on-nan.js": "DELETED_IN_TARGET", - "/stress/double-rep-with-non-cell.js": "DELETED_IN_TARGET", - "/stress/double-rep-with-null.js": "DELETED_IN_TARGET", - "/stress/double-rep-with-undefined.js": "DELETED_IN_TARGET", - "/stress/double-to-float.js": "DELETED_IN_TARGET", - "/stress/double-to-string-in-loop-removed.js": "DELETED_IN_TARGET", - "/stress/duplicate-computed-accessors.js": "DELETED_IN_TARGET", - "/stress/each-block-at-top-of-polymorphic-call-inlining-should-be-exitOK.js": "DELETED_IN_TARGET", - "/stress/eden-gc-with-retired-blocks.js": "DELETED_IN_TARGET", - "/stress/element-property-get-should-not-handled-with-get-by-id.js": "DELETED_IN_TARGET", - "/stress/elidable-new-object-roflcopter-then-exit.js": "DELETED_IN_TARGET", - "/stress/elide-new-object-dag-then-exit.js": "DELETED_IN_TARGET", - "/stress/empty_eos_regex_split.js": "DELETED_IN_TARGET", - "/stress/float32-array-nan-inlined.js": "DELETED_IN_TARGET", - "/stress/float32-array-nan.js": "DELETED_IN_TARGET", - "/stress/float32-array-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/float32-repeat-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/float32array-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/float64-array-nan-inlined.js": "DELETED_IN_TARGET", - "/stress/float64-array-nan.js": "DELETED_IN_TARGET", - "/stress/floating-point-div-to-mul.js": "DELETED_IN_TARGET", - "/stress/flush-after-force-exit-in-bytecodeparser-needs-to-update-argument-positions.js": "DELETED_IN_TARGET", - "/stress/fold-based-on-int32-proof-mul.js": "DELETED_IN_TARGET", - "/stress/fold-based-on-int32-proof-or-zero.js": "DELETED_IN_TARGET", - "/stress/fold-based-on-int32-proof.js": "DELETED_IN_TARGET", - "/stress/fold-load-varargs-arity-check-fail-barely.js": "DELETED_IN_TARGET", - "/stress/fold-load-varargs-arity-check-fail.js": "DELETED_IN_TARGET", - "/stress/fold-multi-get-by-offset-to-get-by-offset-with-watchpoint.js": "DELETED_IN_TARGET", - "/stress/fold-multi-get-by-offset-to-get-by-offset-without-folding-the-structure-check-new.js": "DELETED_IN_TARGET", - "/stress/fold-multi-get-by-offset-to-get-by-offset-without-folding-the-structure-check.js": "DELETED_IN_TARGET", - "/stress/fold-multi-get-by-offset-to-get-by-offset.js": "DELETED_IN_TARGET", - "/stress/fold-multi-put-by-offset-to-put-by-offset-without-folding-the-structure-check.js": "DELETED_IN_TARGET", - "/stress/fold-multi-put-by-offset-to-put-by-offset.js": "DELETED_IN_TARGET", - "/stress/fold-typed-array-properties.js": "DELETED_IN_TARGET", - "/stress/folding-get-by-val-with-immutable-butterfly-out-of-bounds-foldable.js": "DELETED_IN_TARGET", - "/stress/folding-get-by-val-with-immutable-butterfly-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/folding-get-by-val-with-immutable-butterfly-with-types.js": "DELETED_IN_TARGET", - "/stress/folding-get-by-val-with-immutable-butterfly.js": "DELETED_IN_TARGET", - "/stress/folding-get-by-val-with-read-only-dont-delete-object.js": "DELETED_IN_TARGET", - "/stress/folding-get-by-val-with-read-only-dont-delete-runtime-array.js": "DELETED_IN_TARGET", - "/stress/folding-get-by-val-with-read-only-dont-delete.js": "DELETED_IN_TARGET", - "/stress/for-in-array-mode.js": "DELETED_IN_TARGET", - "/stress/for-in-base-reassigned-later-and-change-structure.js": "DELETED_IN_TARGET", - "/stress/for-in-base-reassigned-later.js": "DELETED_IN_TARGET", - "/stress/for-in-base-reassigned.js": "DELETED_IN_TARGET", - "/stress/for-in-capture-string-loop-var.js": "DELETED_IN_TARGET", - "/stress/for-in-delete-during-iteration.js": "DELETED_IN_TARGET", - "/stress/for-in-invalidate-context-weird-assignments.js": "DELETED_IN_TARGET", - "/stress/for-in-invalidation-for-any-write.js": "DELETED_IN_TARGET", - "/stress/for-in-modify-int-loop-var.js": "DELETED_IN_TARGET", - "/stress/for-in-modify-string-loop-var.js": "DELETED_IN_TARGET", - "/stress/for-in-of-const.js": "DELETED_IN_TARGET", - "/stress/for-in-postfix-ignored-index.js": "DELETED_IN_TARGET", - "/stress/for-in-postfix-index.js": "DELETED_IN_TARGET", - "/stress/for-in-prefix-index.js": "DELETED_IN_TARGET", - "/stress/for-in-prototype-with-indexed-properties-should-prevent-caching.js": "DELETED_IN_TARGET", - "/stress/for-in-prototype.js": "DELETED_IN_TARGET", - "/stress/for-in-shadow-prototype-property.js": "DELETED_IN_TARGET", - "/stress/for-in-side-effects.js": "DELETED_IN_TARGET", - "/stress/for-in-string.js": "DELETED_IN_TARGET", - "/stress/for-in-tests.js": "DELETED_IN_TARGET", - "/stress/for-in-typed-array.js": "DELETED_IN_TARGET", - "/stress/for-let-comma.js": "DELETED_IN_TARGET", - "/stress/force-exit-then-eval-dfg.js": "DELETED_IN_TARGET", - "/stress/force-exit-then-eval.js": "DELETED_IN_TARGET", - "/stress/forward-varargs-double-new-array-buffer.js": "DELETED_IN_TARGET", - "/stress/forward-varargs-for-inlined-escaped-arguments.js": "DELETED_IN_TARGET", - "/stress/freeze-and-seal-should-prevent-extensions.js": "DELETED_IN_TARGET", - "/stress/freeze-setter.js": "DELETED_IN_TARGET", - "/stress/freeze_leek.js": "DELETED_IN_TARGET", - "/stress/fromCharCode-exception-check.js": "DELETED_IN_TARGET", - "/stress/ftl-arithcos.js": "DELETED_IN_TARGET", - "/stress/ftl-arithsin.js": "DELETED_IN_TARGET", - "/stress/ftl-arithsqrt.js": "DELETED_IN_TARGET", - "/stress/ftl-arithtan.js": "DELETED_IN_TARGET", - "/stress/ftl-bit-xor-right-result-interference.js": "DELETED_IN_TARGET", - "/stress/ftl-call-bad-callee-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-call-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-call-exception-no-catch.js": "DELETED_IN_TARGET", - "/stress/ftl-call-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-call-varargs-bad-args-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-call-varargs-bad-callee-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-call-varargs-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-call-varargs-exception-no-catch.js": "DELETED_IN_TARGET", - "/stress/ftl-call-varargs-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-checkin-variable.js": "DELETED_IN_TARGET", - "/stress/ftl-checkin.js": "DELETED_IN_TARGET", - "/stress/ftl-force-osr-exit.js": "DELETED_IN_TARGET", - "/stress/ftl-function-dot-arguments-with-callee-saves.js": "DELETED_IN_TARGET", - "/stress/ftl-get-by-id-getter-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-get-by-id-getter-exception-no-catch.js": "DELETED_IN_TARGET", - "/stress/ftl-get-by-id-getter-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-get-by-id-slow-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-get-by-id-slow-exception-no-catch.js": "DELETED_IN_TARGET", - "/stress/ftl-get-by-id-slow-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-get-my-argument-by-val-inlined-and-not-inlined.js": "DELETED_IN_TARGET", - "/stress/ftl-get-my-argument-by-val-inlined.js": "DELETED_IN_TARGET", - "/stress/ftl-get-my-argument-by-val.js": "DELETED_IN_TARGET", - "/stress/ftl-getmyargumentslength-inline.js": "DELETED_IN_TARGET", - "/stress/ftl-getmyargumentslength.js": "DELETED_IN_TARGET", - "/stress/ftl-gettypedarrayoffset-simple.js": "DELETED_IN_TARGET", - "/stress/ftl-gettypedarrayoffset-wasteful.js": "DELETED_IN_TARGET", - "/stress/ftl-has-a-bad-time.js": "DELETED_IN_TARGET", - "/stress/ftl-in-overflow.js": "DELETED_IN_TARGET", - "/stress/ftl-library-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-library-inline-gettimezoneoffset.js": "DELETED_IN_TARGET", - "/stress/ftl-library-inlining-exceptions-dataview.js": "DELETED_IN_TARGET", - "/stress/ftl-library-inlining-exceptions.js": "DELETED_IN_TARGET", - "/stress/ftl-library-inlining-loops.js": "DELETED_IN_TARGET", - "/stress/ftl-library-inlining-random.js": "DELETED_IN_TARGET", - "/stress/ftl-library-substring.js": "DELETED_IN_TARGET", - "/stress/ftl-negate-zero.js": "DELETED_IN_TARGET", - "/stress/ftl-new-negative-array-size.js": "DELETED_IN_TARGET", - "/stress/ftl-operation-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-operation-exception-no-catch.js": "DELETED_IN_TARGET", - "/stress/ftl-operation-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-put-by-id-setter-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-put-by-id-setter-exception-no-catch.js": "DELETED_IN_TARGET", - "/stress/ftl-put-by-id-setter-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-put-by-id-slow-exception-interesting-live-state.js": "DELETED_IN_TARGET", - "/stress/ftl-put-by-id-slow-exception-no-catch.js": "DELETED_IN_TARGET", - "/stress/ftl-put-by-id-slow-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-putbyid.js": "DELETED_IN_TARGET", - "/stress/ftl-putbyiddirect.js": "DELETED_IN_TARGET", - "/stress/ftl-reallocatepropertystorage.js": "DELETED_IN_TARGET", - "/stress/ftl-regexp-exec.js": "DELETED_IN_TARGET", - "/stress/ftl-regexp-test.js": "DELETED_IN_TARGET", - "/stress/ftl-shr-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-string-equality.js": "DELETED_IN_TARGET", - "/stress/ftl-string-ident-equality.js": "DELETED_IN_TARGET", - "/stress/ftl-string-strict-equality.js": "DELETED_IN_TARGET", - "/stress/ftl-sub-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-switch-string-slow-duplicate-cases.js": "DELETED_IN_TARGET", - "/stress/ftl-tail-call-throw-exception-from-slow-path-recover-stack-values.js": "DELETED_IN_TARGET", - "/stress/ftl-tail-call.js": "DELETED_IN_TARGET", - "/stress/ftl-to-ftl-arity-fixup.js": "DELETED_IN_TARGET", - "/stress/ftl-try-catch-arith-sub-exception.js": "DELETED_IN_TARGET", - "/stress/ftl-try-catch-getter-ic-fail-to-call-operation-throw-error.js": "DELETED_IN_TARGET", - "/stress/ftl-try-catch-getter-throw-interesting-value-recovery.js": "DELETED_IN_TARGET", - "/stress/ftl-try-catch-getter-throw.js": "DELETED_IN_TARGET", - "/stress/ftl-try-catch-oom-error-lazy-slow-path.js": "DELETED_IN_TARGET", - "/stress/ftl-try-catch-patchpoint-with-volatile-registers.js": "DELETED_IN_TARGET", - "/stress/ftl-try-catch-setter-throw.js": "DELETED_IN_TARGET", - "/stress/ftl-try-catch-tail-call-inilned-caller.js": "DELETED_IN_TARGET", - "/stress/ftl-try-catch-varargs-call-throws.js": "DELETED_IN_TARGET", - "/stress/ftl-xor-exception.js": "DELETED_IN_TARGET", - "/stress/generator-and-super.js": "DELETED_IN_TARGET", - "/stress/generator-arguments-from-function.js": "DELETED_IN_TARGET", - "/stress/generator-arguments.js": "DELETED_IN_TARGET", - "/stress/generator-class-methods-syntax.js": "DELETED_IN_TARGET", - "/stress/generator-class-methods.js": "DELETED_IN_TARGET", - "/stress/generator-eval-this.js": "DELETED_IN_TARGET", - "/stress/generator-fib-ftl-and-array.js": "DELETED_IN_TARGET", - "/stress/generator-fib-ftl-and-object.js": "DELETED_IN_TARGET", - "/stress/generator-fib-ftl-and-string.js": "DELETED_IN_TARGET", - "/stress/generator-fib-ftl.js": "DELETED_IN_TARGET", - "/stress/generator-frame-empty.js": "DELETED_IN_TARGET", - "/stress/generator-function-constructor-is-subclassible.js": "DELETED_IN_TARGET", - "/stress/generator-function-constructor.js": "DELETED_IN_TARGET", - "/stress/generator-function-create-optimized.js": "DELETED_IN_TARGET", - "/stress/generator-function-declaration-sinking-no-double-allocate.js": "DELETED_IN_TARGET", - "/stress/generator-function-declaration-sinking-osrexit.js": "DELETED_IN_TARGET", - "/stress/generator-function-declaration-sinking-put.js": "DELETED_IN_TARGET", - "/stress/generator-function-expression-sinking-no-double-allocate.js": "DELETED_IN_TARGET", - "/stress/generator-function-expression-sinking-osrexit.js": "DELETED_IN_TARGET", - "/stress/generator-function-expression-sinking-put.js": "DELETED_IN_TARGET", - "/stress/generator-function-name.js": "DELETED_IN_TARGET", - "/stress/generator-is-not-constructible.js": "DELETED_IN_TARGET", - "/stress/generator-methods-with-non-generator.js": "DELETED_IN_TARGET", - "/stress/generator-methods.js": "DELETED_IN_TARGET", - "/stress/generator-prototype-copy.js": "DELETED_IN_TARGET", - "/stress/generator-reduced-save-point-put-to-scope.js": "DELETED_IN_TARGET", - "/stress/generator-relations.js": "DELETED_IN_TARGET", - "/stress/generator-return-before-first-call.js": "DELETED_IN_TARGET", - "/stress/generator-return.js": "DELETED_IN_TARGET", - "/stress/generator-syntax.js": "DELETED_IN_TARGET", - "/stress/generator-this.js": "DELETED_IN_TARGET", - "/stress/generator-throw-before-first-call.js": "DELETED_IN_TARGET", - "/stress/generator-throw.js": "DELETED_IN_TARGET", - "/stress/generator-transfer-register-beyond-mutiple-yields.js": "DELETED_IN_TARGET", - "/stress/generator-type-check.js": "DELETED_IN_TARGET", - "/stress/generator-with-new-target.js": "DELETED_IN_TARGET", - "/stress/generator-with-super.js": "DELETED_IN_TARGET", - "/stress/generator-with-this-strict.js": "DELETED_IN_TARGET", - "/stress/generator-with-this.js": "DELETED_IN_TARGET", - "/stress/generator-yield-star.js": "DELETED_IN_TARGET", - "/stress/generic-arguments-correct-delete-behavior.js": "DELETED_IN_TARGET", - "/stress/get-argument-by-val-in-inlined-varargs-call-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/get-argument-by-val-safe-in-inlined-varargs-call-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/get-array-length-on-undecided.js": "DELETED_IN_TARGET", - "/stress/get-array-length-phantom-new-array-buffer.js": "DELETED_IN_TARGET", - "/stress/get-array-length-undecided.js": "DELETED_IN_TARGET", - "/stress/get-by-id-strict-arguments.js": "DELETED_IN_TARGET", - "/stress/get-by-id-strict-callee.js": "DELETED_IN_TARGET", - "/stress/get-by-id-strict-caller.js": "DELETED_IN_TARGET", - "/stress/get-by-id-strict-nested-arguments-2.js": "DELETED_IN_TARGET", - "/stress/get-by-id-strict-nested-arguments.js": "DELETED_IN_TARGET", - "/stress/get-by-id-throw-from-getter-through-optimized-code.js": "DELETED_IN_TARGET", - "/stress/get-by-id-throw-from-unexpected-getter-through-optimized-code-that-does-not-exit.js": "DELETED_IN_TARGET", - "/stress/get-by-id-throw-from-unexpected-getter-through-optimized-code.js": "DELETED_IN_TARGET", - "/stress/get-by-id-untyped.js": "DELETED_IN_TARGET", - "/stress/get-by-offset-double.js": "DELETED_IN_TARGET", - "/stress/get-by-pname-only-prototype-properties.js": "DELETED_IN_TARGET", - "/stress/get-by-val-double-predicted-int.js": "DELETED_IN_TARGET", - "/stress/get-by-val-fold-did-clobber-world.js": "DELETED_IN_TARGET", - "/stress/get-by-val-on-undecided-array-type.js": "DELETED_IN_TARGET", - "/stress/get-by-val-on-undecided-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/get-by-val-on-undecided-sane-chain-1.js": "DELETED_IN_TARGET", - "/stress/get-by-val-on-undecided-sane-chain-2.js": "DELETED_IN_TARGET", - "/stress/get-by-val-on-undecided-sane-chain-3.js": "DELETED_IN_TARGET", - "/stress/get-by-val-on-undecided-sane-chain-4.js": "DELETED_IN_TARGET", - "/stress/get-by-val-on-undecided-sane-chain-5.js": "DELETED_IN_TARGET", - "/stress/get-by-val-on-undecided-sane-chain-6.js": "DELETED_IN_TARGET", - "/stress/get-by-val-on-undecided-trivial.js": "DELETED_IN_TARGET", - "/stress/get-by-val-out-of-bounds-basics.js": "DELETED_IN_TARGET", - "/stress/get-by-val-string.js": "DELETED_IN_TARGET", - "/stress/get-by-val-to-id-with-getter.js": "DELETED_IN_TARGET", - "/stress/get-by-val-with-string-constructor.js": "DELETED_IN_TARGET", - "/stress/get-by-val-with-string-exit.js": "DELETED_IN_TARGET", - "/stress/get-by-val-with-string-generated.js": "DELETED_IN_TARGET", - "/stress/get-by-val-with-string-getter.js": "DELETED_IN_TARGET", - "/stress/get-by-val-with-string.js": "DELETED_IN_TARGET", - "/stress/get-by-val-with-symbol-constructor.js": "DELETED_IN_TARGET", - "/stress/get-by-val-with-symbol-exit.js": "DELETED_IN_TARGET", - "/stress/get-by-val-with-symbol-getter.js": "DELETED_IN_TARGET", - "/stress/get-by-val-with-symbol.js": "DELETED_IN_TARGET", - "/stress/get-declared-unpassed-argument-in-direct-arguments.js": "DELETED_IN_TARGET", - "/stress/get-declared-unpassed-argument-in-scoped-arguments.js": "DELETED_IN_TARGET", - "/stress/get-from-scope-dynamic-onto-proxy.js": "DELETED_IN_TARGET", - "/stress/get-local-elimination.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-constant-folding.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-creates-arguments.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-for-inlined-escaped-arguments.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-inlined-no-formal-parameters.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-out-of-bounds-no-warm-up.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-safe-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-safe-wrap-around.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-wrap-around-no-warm-up.js": "DELETED_IN_TARGET", - "/stress/get-my-argument-by-val-wrap-around.js": "DELETED_IN_TARGET", - "/stress/get-prototype-create-this-effectful.js": "DELETED_IN_TARGET", - "/stress/get-stack-identity-due-to-sinking.js": "DELETED_IN_TARGET", - "/stress/get-stack-mapping-with-dead-get-stack.js": "DELETED_IN_TARGET", - "/stress/get-stack-mapping.js": "DELETED_IN_TARGET", - "/stress/instance-of-on-poly-proto-opc-should-not-crash.js": "DELETED_IN_TARGET", - "/stress/instanceof-custom-hasinstancesymbol.js": "DELETED_IN_TARGET", - "/stress/instanceof-dynamic-proxy-check-structure.js": "DELETED_IN_TARGET", - "/stress/instanceof-dynamic-proxy-loop.js": "DELETED_IN_TARGET", - "/stress/instanceof-dynamic-proxy.js": "DELETED_IN_TARGET", - "/stress/instanceof-hit-one-object-then-another.js": "DELETED_IN_TARGET", - "/stress/instanceof-hit-two-objects-then-another.js": "DELETED_IN_TARGET", - "/stress/instanceof-late-constant-folding.js": "DELETED_IN_TARGET", - "/stress/instanceof-non-object-prototype.js": "DELETED_IN_TARGET", - "/stress/instanceof-not-cell.js": "DELETED_IN_TARGET", - "/stress/instanceof-prototype-change-to-hit.js": "DELETED_IN_TARGET", - "/stress/instanceof-prototype-change-to-null.js": "DELETED_IN_TARGET", - "/stress/instanceof-prototype-change-watchpointable.js": "DELETED_IN_TARGET", - "/stress/instanceof-prototype-change.js": "DELETED_IN_TARGET", - "/stress/instanceof-proxy-check-structure.js": "DELETED_IN_TARGET", - "/stress/instanceof-proxy-loop.js": "DELETED_IN_TARGET", - "/stress/instanceof-proxy.js": "DELETED_IN_TARGET", - "/stress/instanceof.js": "DELETED_IN_TARGET", - "/stress/int16-put-by-val-in-and-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/int16-put-by-val-in-bounds-then-exit-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/int16-put-by-val-out-of-bounds-bounds-then-do-in-bounds.js": "DELETED_IN_TARGET", - "/stress/int32-array-unshift.js": "DELETED_IN_TARGET", - "/stress/int32-min-to-string.js": "DELETED_IN_TARGET", - "/stress/int32-object-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/int32-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/int32-to-string-in-loop-removed.js": "DELETED_IN_TARGET", - "/stress/int32array-transition-on-nan.js": "DELETED_IN_TARGET", - "/stress/int52-ai-mul-then-filter-int32-directly.js": "DELETED_IN_TARGET", - "/stress/int52-argument.js": "DELETED_IN_TARGET", - "/stress/int52-force-osr-exit-path.js": "DELETED_IN_TARGET", - "/stress/int52-inlined-call-argument.js": "DELETED_IN_TARGET", - "/stress/int52-to-string-in-loop-removed.js": "DELETED_IN_TARGET", - "/stress/int52-variable.js": "DELETED_IN_TARGET", - "/stress/int8-repeat-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/integer-range-optimization-constant-representation-1.js": "DELETED_IN_TARGET", - "/stress/integer-range-optimization-constant-representation-2.js": "DELETED_IN_TARGET", - "/stress/internal-function-call.js": "DELETED_IN_TARGET", - "/stress/internal-function-construct.js": "DELETED_IN_TARGET", - "/stress/intl-constructors-with-proxy.js": "DELETED_IN_TARGET", - "/stress/intrinsic-getter-with-poly-proto-getter-change.js": "DELETED_IN_TARGET", - "/stress/intrinsic-getter-with-poly-proto-proto-change.js": "DELETED_IN_TARGET", - "/stress/intrinsic-getter-with-poly-proto.js": "DELETED_IN_TARGET", - "/stress/invalidation-point.js": "DELETED_IN_TARGET", - "/stress/inverted-additive-subsumption.js": "DELETED_IN_TARGET", - "/stress/is-undefined-exit-on-masquerader.js": "DELETED_IN_TARGET", - "/stress/is-undefined-jettison-on-masquerader.js": "DELETED_IN_TARGET", - "/stress/is-undefined-masquerader.js": "DELETED_IN_TARGET", - "/stress/isInteger-doesnt-overwrite-argument.js": "DELETED_IN_TARGET", - "/stress/isLockFree.js": "DELETED_IN_TARGET", - "/stress/iterator-field-order.js": "DELETED_IN_TARGET", - "/stress/iterator-functions.js": "DELETED_IN_TARGET", - "/stress/iterator-names.js": "DELETED_IN_TARGET", - "/stress/iterator-prototype.js": "DELETED_IN_TARGET", - "/stress/iterator-return-beyond-multiple-iteration-scopes.js": "DELETED_IN_TARGET", - "/stress/iterators-shape.js": "DELETED_IN_TARGET", - "/stress/jit-cache-poly-replace-then-cache-get-and-fold-then-invalidate.js": "DELETED_IN_TARGET", - "/stress/jit-cache-replace-then-cache-get-and-fold-then-invalidate.js": "DELETED_IN_TARGET", - "/stress/jit-gracefully-handle-double-constants-in-math-operators.js": "DELETED_IN_TARGET", - "/stress/jit-put-to-scope-global-cache-watchpoint-invalidate.js": "DELETED_IN_TARGET", - "/stress/joined-strings-should-not-exceed-max-string-length.js": "DELETED_IN_TARGET", - "/stress/js-fixed-array-out-of-memory.js": "DELETED_IN_TARGET", - "/stress/jsc-read.js": "DELETED_IN_TARGET", - "/stress/json-parse-on-frozen-object.js": "DELETED_IN_TARGET", - "/stress/large-unshift-splice.js": "DELETED_IN_TARGET", - "/stress/lars-sab-workers.js": "DELETED_IN_TARGET", - "/stress/length-of-new-array-with-spread.js": "DELETED_IN_TARGET", - "/stress/lexical-let-and-with-statement.js": "DELETED_IN_TARGET", - "/stress/lexical-let-exception-handling.js": "DELETED_IN_TARGET", - "/stress/lexical-let-global-not-captured-variables.js": "DELETED_IN_TARGET", - "/stress/lexical-let-loop-semantics.js": "DELETED_IN_TARGET", - "/stress/lexical-let-not-strict-mode.js": "DELETED_IN_TARGET", - "/stress/lexical-let-semantics.js": "DELETED_IN_TARGET", - "/stress/lexical-let-tdz.js": "DELETED_IN_TARGET", - "/stress/lexical-scoping-break-continue.js": "DELETED_IN_TARGET", - "/stress/lexical-scoping-for-loop.js": "DELETED_IN_TARGET", - "/stress/licm-no-pre-header-nested.js": "DELETED_IN_TARGET", - "/stress/licm-no-pre-header.js": "DELETED_IN_TARGET", - "/stress/lift-tdz-bypass-catch.js": "DELETED_IN_TARGET", - "/stress/lift-template-literal.js": "DELETED_IN_TARGET", - "/stress/liveness-pruning-needed-for-osr-availability-eager.js": "DELETED_IN_TARGET", - "/stress/liveness-pruning-needed-for-osr-availability.js": "DELETED_IN_TARGET", - "/stress/llint-cache-replace-then-cache-get-and-fold-then-invalidate.js": "DELETED_IN_TARGET", - "/stress/llint-get-by-id-cache-prototype-load-from-dictionary.js": "DELETED_IN_TARGET", - "/stress/llint-proto-get-by-id-cache-change-prototype.js": "DELETED_IN_TARGET", - "/stress/llint-proto-get-by-id-cache-intercept-value.js": "DELETED_IN_TARGET", - "/stress/llint-put-to-scope-global-cache-watchpoint-invalidate.js": "DELETED_IN_TARGET", - "/stress/llint-stack-overflow-debugging-opcodes.js": "DELETED_IN_TARGET", - "/stress/llint-stack-overflow-location.js": "DELETED_IN_TARGET", - "/stress/load-hole-from-scope-into-live-var.js": "DELETED_IN_TARGET", - "/stress/load-varargs-elimination-bounds-check-barely.js": "DELETED_IN_TARGET", - "/stress/load-varargs-elimination-bounds-check.js": "DELETED_IN_TARGET", - "/stress/load-varargs-on-new-array-with-spread-convert-to-static-loads.js": "DELETED_IN_TARGET", - "/stress/load-varargs-then-inlined-call-and-exit-strict.js": "DELETED_IN_TARGET", - "/stress/load-varargs-then-inlined-call-and-exit.js": "DELETED_IN_TARGET", - "/stress/load-varargs-then-inlined-call-exit-in-foo.js": "DELETED_IN_TARGET", - "/stress/load-varargs-then-inlined-call-inlined.js": "DELETED_IN_TARGET", - "/stress/load-varargs-then-inlined-call.js": "DELETED_IN_TARGET", - "/stress/logical-not-masquerades-as-undefined.js": "DELETED_IN_TARGET", - "/stress/logical-not-masquerades.js": "DELETED_IN_TARGET", - "/stress/logical-not.js": "DELETED_IN_TARGET", - "/stress/make-dictionary-repatch.js": "DELETED_IN_TARGET", - "/stress/make-large-string-jit-strcat.js": "DELETED_IN_TARGET", - "/stress/make-large-string-jit.js": "DELETED_IN_TARGET", - "/stress/make-large-string-strcat.js": "DELETED_IN_TARGET", - "/stress/make-large-string.js": "DELETED_IN_TARGET", - "/stress/make-rope-2.js": "DELETED_IN_TARGET", - "/stress/make-rope-3.js": "DELETED_IN_TARGET", - "/stress/map-clone-instance-iterator-change.js": "DELETED_IN_TARGET", - "/stress/map-clone-iterator-change.js": "DELETED_IN_TARGET", - "/stress/map-clone-next-change.js": "DELETED_IN_TARGET", - "/stress/map-clone.js": "DELETED_IN_TARGET", - "/stress/map-constructor-adder.js": "DELETED_IN_TARGET", - "/stress/map-constructor.js": "DELETED_IN_TARGET", - "/stress/map-cse-correctness.js": "DELETED_IN_TARGET", - "/stress/map-delete.js": "DELETED_IN_TARGET", - "/stress/map-inherit-set.js": "DELETED_IN_TARGET", - "/stress/map-iteration.js": "DELETED_IN_TARGET", - "/stress/map-iterator-result-should-have-expected-shape.js": "DELETED_IN_TARGET", - "/stress/map-iterators-next.js": "DELETED_IN_TARGET", - "/stress/map-rehash-2.js": "DELETED_IN_TARGET", - "/stress/map-rehash.js": "DELETED_IN_TARGET", - "/stress/map-set-change-get.js": "DELETED_IN_TARGET", - "/stress/map-set-check-failure.js": "DELETED_IN_TARGET", - "/stress/map-set-clobber-map-get.js": "DELETED_IN_TARGET", - "/stress/map-set-create-bucket.js": "DELETED_IN_TARGET", - "/stress/map-set-does-not-clobber-set-has.js": "DELETED_IN_TARGET", - "/stress/map-set-does-not-clobber-weak-map-get.js": "DELETED_IN_TARGET", - "/stress/map-untyped-normalize-cse.js": "DELETED_IN_TARGET", - "/stress/map-untyped-normalize.js": "DELETED_IN_TARGET", - "/stress/marked-argument-buffer.js": "DELETED_IN_TARGET", - "/stress/materialize-activation-referenced-from-phantom-function.js": "DELETED_IN_TARGET", - "/stress/materialize-object-referenced-from-phantom-object.js": "DELETED_IN_TARGET", - "/stress/materialize-past-butterfly-allocation.js": "DELETED_IN_TARGET", - "/stress/materialize-past-put-structure.js": "DELETED_IN_TARGET", - "/stress/materialize-regexp-at-osr-exit.js": "DELETED_IN_TARGET", - "/stress/materialize-regexp-cyclic-regexp-at-osr-exit.js": "DELETED_IN_TARGET", - "/stress/materialize-regexp-cyclic-regexp.js": "DELETED_IN_TARGET", - "/stress/materialize-regexp-cyclic.js": "DELETED_IN_TARGET", - "/stress/materialize-regexp-referenced-from-phantom-regexp-cyclic.js": "DELETED_IN_TARGET", - "/stress/materialize-regexp-referenced-from-phantom-regexp.js": "DELETED_IN_TARGET", - "/stress/materialize-regexp.js": "DELETED_IN_TARGET", - "/stress/materialized-regexp-has-correct-last-index-set-by-match-at-osr-exit.js": "DELETED_IN_TARGET", - "/stress/materialized-regexp-has-correct-last-index-set-by-match.js": "DELETED_IN_TARGET", - "/stress/multiply-typed-double-and-object.js": "DELETED_IN_TARGET", - "/stress/mutual-tail-call-no-stack-overflow.js": "DELETED_IN_TARGET", - "/stress/nan-equal-untyped.js": "DELETED_IN_TARGET", - "/stress/nan-equal.js": "DELETED_IN_TARGET", - "/stress/native-constructors-length.js": "DELETED_IN_TARGET", - "/stress/native-error-properties.js": "DELETED_IN_TARGET", - "/stress/need-bytecode-liveness-for-unreachable-blocks-at-dfg-time.js": "DELETED_IN_TARGET", - "/stress/new-array-buffer-sinking-osrexit.js": "DELETED_IN_TARGET", - "/stress/new-array-dead.js": "DELETED_IN_TARGET", - "/stress/new-array-having-a-bad-time-double.js": "DELETED_IN_TARGET", - "/stress/new-array-storage-array-with-size.js": "DELETED_IN_TARGET", - "/stress/new-array-then-exit.js": "DELETED_IN_TARGET", - "/stress/new-array-with-size-div.js": "DELETED_IN_TARGET", - "/stress/new-array-with-size-throw-exception-and-tear-off-arguments.js": "DELETED_IN_TARGET", - "/stress/new-array-with-size-with-bad-time.js": "DELETED_IN_TARGET", - "/stress/new-array-with-spread-double-new-array-buffer.js": "DELETED_IN_TARGET", - "/stress/new-array-with-spread-with-normal-spread-and-phantom-spread.js": "DELETED_IN_TARGET", - "/stress/new-array-with-spread-with-phantom-new-array-buffer.js": "DELETED_IN_TARGET", - "/stress/new-contiguous-array-with-size.js": "DELETED_IN_TARGET", - "/stress/new-double-array-with-size.js": "DELETED_IN_TARGET", - "/stress/new-function-expression-has-structures.js": "DELETED_IN_TARGET", - "/stress/new-int32-array-with-size.js": "DELETED_IN_TARGET", - "/stress/new-largeish-contiguous-array-with-size.js": "DELETED_IN_TARGET", - "/stress/new-promise-capabilities-requires-constructor.js": "DELETED_IN_TARGET", - "/stress/new-regex-inline.js": "DELETED_IN_TARGET", - "/stress/new-string-object.js": "DELETED_IN_TARGET", - "/stress/new-target-syntax-errors.js": "DELETED_IN_TARGET", - "/stress/new-target.js": "DELETED_IN_TARGET", - "/stress/new-typed-array-cse-effects.js": "DELETED_IN_TARGET", - "/stress/new-undecided-array-with-size.js": "DELETED_IN_TARGET", - "/stress/no-abc-skippy-loop.js": "DELETED_IN_TARGET", - "/stress/no-abc-skippy-paired-loop.js": "DELETED_IN_TARGET", - "/stress/non-constructors.js": "DELETED_IN_TARGET", - "/stress/normalize-map-key-constant-folding.js": "DELETED_IN_TARGET", - "/stress/not-cell-use.js": "DELETED_IN_TARGET", - "/stress/number-is-finite.js": "DELETED_IN_TARGET", - "/stress/number-is-integer-intrinsic.js": "DELETED_IN_TARGET", - "/stress/number-is-nan.js": "DELETED_IN_TARGET", - "/stress/number-prototype-to-string-cast-overflow.js": "DELETED_IN_TARGET", - "/stress/number-prototype-to-string-exception.js": "DELETED_IN_TARGET", - "/stress/number-prototype-to-string-wrong-values.js": "DELETED_IN_TARGET", - "/stress/number-to-locale-string-should-accept-strange-number-objects.js": "DELETED_IN_TARGET", - "/stress/number-to-string-abstract-operation.js": "DELETED_IN_TARGET", - "/stress/number-to-string-radix.js": "DELETED_IN_TARGET", - "/stress/number-to-string-strength-reduction.js": "DELETED_IN_TARGET", - "/stress/number-to-string-with-add.js": "DELETED_IN_TARGET", - "/stress/number-to-string-with-radix-10.js": "DELETED_IN_TARGET", - "/stress/number-to-string-with-radix-cse.js": "DELETED_IN_TARGET", - "/stress/number-to-string-with-radix-invalid.js": "DELETED_IN_TARGET", - "/stress/number-to-string-with-radix-watchpoint.js": "DELETED_IN_TARGET", - "/stress/number-to-string-with-radix.js": "DELETED_IN_TARGET", - "/stress/number-to-string.js": "DELETED_IN_TARGET", - "/stress/numeric-setter-on-prototype-non-blank-array.js": "DELETED_IN_TARGET", - "/stress/numeric-setter-on-prototype.js": "DELETED_IN_TARGET", - "/stress/numeric-setter-on-self.js": "DELETED_IN_TARGET", - "/stress/obj-rest-destructuring-order.js": "DELETED_IN_TARGET", - "/stress/obj-spread-order.js": "DELETED_IN_TARGET", - "/stress/object-add.js": "DELETED_IN_TARGET", - "/stress/object-allocation-sinking-with-uninitialized-property-on-one-path.js": "DELETED_IN_TARGET", - "/stress/object-assign-changing-properties.js": "DELETED_IN_TARGET", - "/stress/object-assign-correctness.js": "DELETED_IN_TARGET", - "/stress/object-assign-enumerable.js": "DELETED_IN_TARGET", - "/stress/object-assign-order.js": "DELETED_IN_TARGET", - "/stress/object-assign-proxy.js": "DELETED_IN_TARGET", - "/stress/object-assign-string-first.js": "DELETED_IN_TARGET", - "/stress/object-assign-symbols.js": "DELETED_IN_TARGET", - "/stress/object-assign.js": "DELETED_IN_TARGET", - "/stress/object-bit-and.js": "DELETED_IN_TARGET", - "/stress/object-bit-or.js": "DELETED_IN_TARGET", - "/stress/object-bit-xor.js": "DELETED_IN_TARGET", - "/stress/object-constructor-boolean-edge.js": "DELETED_IN_TARGET", - "/stress/object-constructor-global.js": "DELETED_IN_TARGET", - "/stress/object-constructor-null-edge.js": "DELETED_IN_TARGET", - "/stress/object-constructor-number-edge.js": "DELETED_IN_TARGET", - "/stress/object-constructor-object-edge.js": "DELETED_IN_TARGET", - "/stress/object-constructor-should-be-new-target-aware.js": "DELETED_IN_TARGET", - "/stress/object-constructor-string-edge.js": "DELETED_IN_TARGET", - "/stress/object-constructor-symbol-edge.js": "DELETED_IN_TARGET", - "/stress/object-constructor-undefined-edge.js": "DELETED_IN_TARGET", - "/stress/object-create-define.js": "DELETED_IN_TARGET", - "/stress/object-create-null-external.js": "DELETED_IN_TARGET", - "/stress/object-create-null.js": "DELETED_IN_TARGET", - "/stress/object-create-prototype.js": "DELETED_IN_TARGET", - "/stress/object-create-undefined.js": "DELETED_IN_TARGET", - "/stress/object-div.js": "DELETED_IN_TARGET", - "/stress/object-entries.js": "DELETED_IN_TARGET", - "/stress/object-escapes-in-loop.js": "DELETED_IN_TARGET", - "/stress/object-freeze-accept-non-object.js": "DELETED_IN_TARGET", - "/stress/object-freeze-with-proxy-preventExtensions.js": "DELETED_IN_TARGET", - "/stress/object-get-own-property-descriptor-perform-to-object.js": "DELETED_IN_TARGET", - "/stress/object-get-own-property-names-perform-to-object.js": "DELETED_IN_TARGET", - "/stress/object-get-own-property-symbols-perform-to-object.js": "DELETED_IN_TARGET", - "/stress/object-get-own-property-symbols.js": "DELETED_IN_TARGET", - "/stress/object-get-prototype-of-filtered.js": "DELETED_IN_TARGET", - "/stress/object-get-prototype-of-mono-proto.js": "DELETED_IN_TARGET", - "/stress/object-get-prototype-of-perform-to-object.js": "DELETED_IN_TARGET", - "/stress/object-get-prototype-of-poly-mono-proto.js": "DELETED_IN_TARGET", - "/stress/object-get-prototype-of-poly-proto.js": "DELETED_IN_TARGET", - "/stress/object-is-extensible-accept-non-object.js": "DELETED_IN_TARGET", - "/stress/object-is-frozen-accept-non-object.js": "DELETED_IN_TARGET", - "/stress/object-is-sealed-accept-non-object.js": "DELETED_IN_TARGET", - "/stress/object-is.js": "DELETED_IN_TARGET", - "/stress/object-iterate-symbols.js": "DELETED_IN_TARGET", - "/stress/object-iterate.js": "DELETED_IN_TARGET", - "/stress/object-keys-perform-to-object.js": "DELETED_IN_TARGET", - "/stress/object-literal-methods.js": "DELETED_IN_TARGET", - "/stress/object-lshift.js": "DELETED_IN_TARGET", - "/stress/object-mul.js": "DELETED_IN_TARGET", - "/stress/object-number-properties.js": "DELETED_IN_TARGET", - "/stress/object-own-property-keys.js": "DELETED_IN_TARGET", - "/stress/object-prevent-extensions-accept-non-object.js": "DELETED_IN_TARGET", - "/stress/object-proto-getter-filtered.js": "DELETED_IN_TARGET", - "/stress/object-proto-getter-poly-mono-proto.js": "DELETED_IN_TARGET", - "/stress/object-proto-getter-poly-proto.js": "DELETED_IN_TARGET", - "/stress/object-prototype-proto-accessors-should-throw-on-undefined-this.js": "DELETED_IN_TARGET", - "/stress/object-rest-deconstruct.js": "DELETED_IN_TARGET", - "/stress/object-rshift.js": "DELETED_IN_TARGET", - "/stress/object-seal-accept-non-object.js": "DELETED_IN_TARGET", - "/stress/object-seal-with-proxy-preventExtensions.js": "DELETED_IN_TARGET", - "/stress/object-spread.js": "DELETED_IN_TARGET", - "/stress/object-sub.js": "DELETED_IN_TARGET", - "/stress/object-urshift.js": "DELETED_IN_TARGET", - "/stress/object-values-changing-properties.js": "DELETED_IN_TARGET", - "/stress/object-values.js": "DELETED_IN_TARGET", - "/stress/obscure-error-message-dont-crash.js": "DELETED_IN_TARGET", - "/stress/obviously-elidable-new-object-then-exit.js": "DELETED_IN_TARGET", - "/stress/op-add-exceptions.js": "DELETED_IN_TARGET", - "/stress/op-negate-inline-cache.js": "DELETED_IN_TARGET", - "/stress/op-push-name-scope-crashes-profiler.js": "DELETED_IN_TARGET", - "/stress/op_add.js": "DELETED_IN_TARGET", - "/stress/op_bitand.js": "DELETED_IN_TARGET", - "/stress/op_bitor.js": "DELETED_IN_TARGET", - "/stress/op_bitxor.js": "DELETED_IN_TARGET", - "/stress/op_div-ConstVar.js": "DELETED_IN_TARGET", - "/stress/op_div-VarConst.js": "DELETED_IN_TARGET", - "/stress/op_div-VarVar.js": "DELETED_IN_TARGET", - "/stress/op_lshift-ConstVar.js": "DELETED_IN_TARGET", - "/stress/op_lshift-VarConst.js": "DELETED_IN_TARGET", - "/stress/op_lshift-VarVar.js": "DELETED_IN_TARGET", - "/stress/op_mod-ConstVar.js": "DELETED_IN_TARGET", - "/stress/op_mod-VarConst.js": "DELETED_IN_TARGET", - "/stress/op_mod-VarVar.js": "DELETED_IN_TARGET", - "/stress/op_mul-ConstVar.js": "DELETED_IN_TARGET", - "/stress/op_mul-VarConst.js": "DELETED_IN_TARGET", - "/stress/op_mul-VarVar.js": "DELETED_IN_TARGET", - "/stress/op_negate.js": "DELETED_IN_TARGET", - "/stress/op_postdec.js": "DELETED_IN_TARGET", - "/stress/op_postinc.js": "DELETED_IN_TARGET", - "/stress/op_predec.js": "DELETED_IN_TARGET", - "/stress/op_preinc.js": "DELETED_IN_TARGET", - "/stress/op_rshift-ConstVar.js": "DELETED_IN_TARGET", - "/stress/op_rshift-VarConst.js": "DELETED_IN_TARGET", - "/stress/op_rshift-VarVar.js": "DELETED_IN_TARGET", - "/stress/op_sub-ConstVar.js": "DELETED_IN_TARGET", - "/stress/op_sub-VarConst.js": "DELETED_IN_TARGET", - "/stress/op_sub-VarVar.js": "DELETED_IN_TARGET", - "/stress/op_urshift-ConstVar.js": "DELETED_IN_TARGET", - "/stress/op_urshift-VarConst.js": "DELETED_IN_TARGET", - "/stress/op_urshift-VarVar.js": "DELETED_IN_TARGET", - "/stress/operation-get-by-val-default-should-not-called-for-already-optimized-site.js": "DELETED_IN_TARGET", - "/stress/operation-in-may-have-negative-int32-array-storage.js": "DELETED_IN_TARGET", - "/stress/operation-in-may-have-negative-int32-contiguous-array.js": "DELETED_IN_TARGET", - "/stress/operation-in-may-have-negative-int32-double-array.js": "DELETED_IN_TARGET", - "/stress/operation-in-may-have-negative-int32-generic-array.js": "DELETED_IN_TARGET", - "/stress/operation-in-may-have-negative-int32-int32-array.js": "DELETED_IN_TARGET", - "/stress/operation-in-may-have-negative-int32.js": "DELETED_IN_TARGET", - "/stress/operation-in-negative-int32-cast.js": "DELETED_IN_TARGET", - "/stress/operation-in-throw-error.js": "DELETED_IN_TARGET", - "/stress/optional-catch-binding-syntax.js": "DELETED_IN_TARGET", - "/stress/optional-catch-binding.js": "DELETED_IN_TARGET", - "/stress/ordinary-set-exceptions.js": "DELETED_IN_TARGET", - "/stress/osr-enter-to-catch-with-set-local-type-check-failure.js": "DELETED_IN_TARGET", - "/stress/osr-exit-on-op-negate-should-no-fail-assertions.js": "DELETED_IN_TARGET", - "/stress/other-is-object-or-null.js": "DELETED_IN_TARGET", - "/stress/override-map-constructor.js": "DELETED_IN_TARGET", - "/stress/pad-start-calls-repeat-character-with-double.js": "DELETED_IN_TARGET", - "/stress/parameter-scoping.js": "DELETED_IN_TARGET", - "/stress/parse-int-intrinsic-dfg-backend-flush.js": "DELETED_IN_TARGET", - "/stress/parse-int-intrinsic.js": "DELETED_IN_TARGET", - "/stress/parse-regexp-as-token.js": "DELETED_IN_TARGET", - "/stress/path-sensitive-known-cell-crash.js": "DELETED_IN_TARGET", - "/stress/pathname-resolve.js": "DELETED_IN_TARGET", - "/stress/phantom-arguments-set-local-then-exit-in-same-block.js": "DELETED_IN_TARGET", - "/stress/phantom-direct-arguments-clobber-argument-count.js": "DELETED_IN_TARGET", - "/stress/phantom-direct-arguments-clobber-callee.js": "DELETED_IN_TARGET", - "/stress/phantom-inadequacy.js": "DELETED_IN_TARGET", - "/stress/phantom-local-captured-but-not-flushed-to-ssa.js": "DELETED_IN_TARGET", - "/stress/phantom-new-array-buffer-forward-varargs.js": "DELETED_IN_TARGET", - "/stress/phantom-new-array-buffer-forward-varargs2.js": "DELETED_IN_TARGET", - "/stress/phantom-new-array-buffer-osr-exit.js": "DELETED_IN_TARGET", - "/stress/phantom-new-array-with-spread-osr-exit.js": "DELETED_IN_TARGET", - "/stress/phantom-regexp-regexp-exec.js": "DELETED_IN_TARGET", - "/stress/phantom-regexp-string-match.js": "DELETED_IN_TARGET", - "/stress/phantom-spread-forward-varargs.js": "DELETED_IN_TARGET", - "/stress/phantom-spread-osr-exit.js": "DELETED_IN_TARGET", - "/stress/plus-boolean-exit.js": "DELETED_IN_TARGET", - "/stress/plus-boolean-or-double.js": "DELETED_IN_TARGET", - "/stress/plus-boolean-or-int.js": "DELETED_IN_TARGET", - "/stress/poly-call-exit-this.js": "DELETED_IN_TARGET", - "/stress/poly-call-exit.js": "DELETED_IN_TARGET", - "/stress/poly-call-stub-in-getter-stub.js": "DELETED_IN_TARGET", - "/stress/poly-chain-getter.js": "DELETED_IN_TARGET", - "/stress/poly-chain-setter.js": "DELETED_IN_TARGET", - "/stress/poly-chain-then-getter.js": "DELETED_IN_TARGET", - "/stress/poly-chain-then-setter.js": "DELETED_IN_TARGET", - "/stress/poly-getter-combo.js": "DELETED_IN_TARGET", - "/stress/poly-getter-then-chain.js": "DELETED_IN_TARGET", - "/stress/poly-getter-then-self.js": "DELETED_IN_TARGET", - "/stress/poly-proto-clear-stub.js": "DELETED_IN_TARGET", - "/stress/poly-proto-intrinsic-getter-correctness.js": "DELETED_IN_TARGET", - "/stress/poly-proto-miss.js": "DELETED_IN_TARGET", - "/stress/poly-proto-op-in-caching.js": "DELETED_IN_TARGET", - "/stress/poly-proto-prototype-map-having-a-bad-time.js": "DELETED_IN_TARGET", - "/stress/poly-proto-put-transition.js": "DELETED_IN_TARGET", - "/stress/poly-proto-set-prototype.js": "DELETED_IN_TARGET", - "/stress/poly-proto-setter.js": "DELETED_IN_TARGET", - "/stress/poly-proto-using-inheritance.js": "DELETED_IN_TARGET", - "/stress/poly-self-getter.js": "DELETED_IN_TARGET", - "/stress/poly-self-then-getter.js": "DELETED_IN_TARGET", - "/stress/poly-setter-combo.js": "DELETED_IN_TARGET", - "/stress/poly-setter-then-self.js": "DELETED_IN_TARGET", - "/stress/polymorphic-prototype-accesses.js": "DELETED_IN_TARGET", - "/stress/promise-cannot-be-called.js": "DELETED_IN_TARGET", - "/stress/promise-finally.js": "DELETED_IN_TARGET", - "/stress/promise-infinite-recursion-should-not-crash.js": "DELETED_IN_TARGET", - "/stress/promise-species-functions.js": "DELETED_IN_TARGET", - "/stress/prop-type-boolean-then-string.js": "DELETED_IN_TARGET", - "/stress/prop-type-int32-then-string.js": "DELETED_IN_TARGET", - "/stress/prop-type-number-then-string.js": "DELETED_IN_TARGET", - "/stress/prop-type-object-or-other-then-string.js": "DELETED_IN_TARGET", - "/stress/prop-type-object-then-string.js": "DELETED_IN_TARGET", - "/stress/prop-type-other-then-string.js": "DELETED_IN_TARGET", - "/stress/prop-type-string-then-object.js": "DELETED_IN_TARGET", - "/stress/prop-type-struct-or-other-then-string.js": "DELETED_IN_TARGET", - "/stress/prop-type-struct-then-object-opt-fold.js": "DELETED_IN_TARGET", - "/stress/prop-type-struct-then-object-opt-multi.js": "DELETED_IN_TARGET", - "/stress/prop-type-struct-then-object-opt.js": "DELETED_IN_TARGET", - "/stress/prop-type-struct-then-object.js": "DELETED_IN_TARGET", - "/stress/prop-type-symbol-then-object.js": "DELETED_IN_TARGET", - "/stress/prop-type-symbol-then-string.js": "DELETED_IN_TARGET", - "/stress/proper-flushing-when-we-insert-unreachable-after-force-exit-in-bytecode-parser.js": "DELETED_IN_TARGET", - "/stress/proper-property-store-with-prototype-property-that-is-not-writable.js": "DELETED_IN_TARGET", - "/stress/property-name-enumerator-should-not-look-into-indexed-values-when-it-is-a-dictionary.js": "DELETED_IN_TARGET", - "/stress/property-setters-should-not-be-called-for-bound-arguments-list-entries.js": "DELETED_IN_TARGET", - "/stress/proto-setter.js": "DELETED_IN_TARGET", - "/stress/prototype-chain-has-dictionary-structure-for-in-caching.js": "DELETED_IN_TARGET", - "/stress/prototype-for-async-generator.js": "DELETED_IN_TARGET", - "/stress/prototype-getter.js": "DELETED_IN_TARGET", - "/stress/prototype-is-not-js-object.js": "DELETED_IN_TARGET", - "/stress/prune-multi-put-by-offset-replace-or-transition-variant.js": "DELETED_IN_TARGET", - "/stress/put-by-id-build-list-order-recurse.js": "DELETED_IN_TARGET", - "/stress/put-by-id-direct-should-be-done-for-non-index-property.js": "DELETED_IN_TARGET", - "/stress/put-by-id-direct-strict-transition.js": "DELETED_IN_TARGET", - "/stress/put-by-id-direct-transition.js": "DELETED_IN_TARGET", - "/stress/put-by-id-on-new-object-after-prototype-transition-non-strict.js": "DELETED_IN_TARGET", - "/stress/put-by-id-on-new-object-after-prototype-transition-strict.js": "DELETED_IN_TARGET", - "/stress/put-by-id-strict-build-list-order.js": "DELETED_IN_TARGET", - "/stress/put-by-id-throw-through-optimized-code.js": "DELETED_IN_TARGET", - "/stress/put-by-id-transition-null-prototype.js": "DELETED_IN_TARGET", - "/stress/put-by-val-array-storage.js": "DELETED_IN_TARGET", - "/stress/put-by-val-out-of-bounds-basics.js": "DELETED_IN_TARGET", - "/stress/put-by-val-slow-put-array-storage.js": "DELETED_IN_TARGET", - "/stress/put-by-val-with-string-break.js": "DELETED_IN_TARGET", - "/stress/put-by-val-with-string-generated.js": "DELETED_IN_TARGET", - "/stress/put-by-val-with-string-generic.js": "DELETED_IN_TARGET", - "/stress/put-by-val-with-symbol-break.js": "DELETED_IN_TARGET", - "/stress/put-by-val-with-symbol-generic.js": "DELETED_IN_TARGET", - "/stress/put-direct-index-broken-2.js": "DELETED_IN_TARGET", - "/stress/put-direct-index-broken.js": "DELETED_IN_TARGET", - "/stress/put-getter-setter-by-id-strict-transition.js": "DELETED_IN_TARGET", - "/stress/put-getter-setter-by-id-transition.js": "DELETED_IN_TARGET", - "/stress/put-indexed-getter-setter.js": "DELETED_IN_TARGET", - "/stress/put-inline-cache-side-effects.js": "DELETED_IN_TARGET", - "/stress/put-local-conservative.js": "DELETED_IN_TARGET", - "/stress/put-on-cow-prototype.js": "DELETED_IN_TARGET", - "/stress/raise-error-in-iterator-close.js": "DELETED_IN_TARGET", - "/stress/random-53bit.js": "DELETED_IN_TARGET", - "/stress/random-in-range.js": "DELETED_IN_TARGET", - "/stress/real-forward-varargs-for-inlined-escaped-arguments.js": "DELETED_IN_TARGET", - "/stress/recurse-infinitely-on-getter.js": "DELETED_IN_TARGET", - "/stress/recursive-tail-call-with-different-argument-count.js": "DELETED_IN_TARGET", - "/stress/recursive-try-catch.js": "DELETED_IN_TARGET", - "/stress/recursive_property_redefine_during_inline_caching.js": "DELETED_IN_TARGET", - "/stress/redundant-add-overflow-checks.js": "DELETED_IN_TARGET", - "/stress/redundant-array-bounds-checks-addition-skip-first.js": "DELETED_IN_TARGET", - "/stress/redundant-array-bounds-checks-addition.js": "DELETED_IN_TARGET", - "/stress/redundant-array-bounds-checks-unchecked-addition.js": "DELETED_IN_TARGET", - "/stress/redundant-array-bounds-checks.js": "DELETED_IN_TARGET", - "/stress/reflect-apply.js": "DELETED_IN_TARGET", - "/stress/reflect-construct.js": "DELETED_IN_TARGET", - "/stress/reflect-define-property.js": "DELETED_IN_TARGET", - "/stress/reflect-delete-property.js": "DELETED_IN_TARGET", - "/stress/reflect-get-own-property.js": "DELETED_IN_TARGET", - "/stress/reflect-get-prototype-of.js": "DELETED_IN_TARGET", - "/stress/reflect-get.js": "DELETED_IN_TARGET", - "/stress/reflect-has.js": "DELETED_IN_TARGET", - "/stress/reflect-is-extensible.js": "DELETED_IN_TARGET", - "/stress/reflect-own-keys.js": "DELETED_IN_TARGET", - "/stress/reflect-prevent-extensions.js": "DELETED_IN_TARGET", - "/stress/reflect-set-prototype-of.js": "DELETED_IN_TARGET", - "/stress/reflect-set-proxy-set.js": "DELETED_IN_TARGET", - "/stress/reflect-set-receiver-proxy-set.js": "DELETED_IN_TARGET", - "/stress/reflect-set-with-global-proxy.js": "DELETED_IN_TARGET", - "/stress/reflect-set.js": "DELETED_IN_TARGET", - "/stress/reflect.js": "DELETED_IN_TARGET", - "/stress/regexp-exec-effect-after-exception.js": "DELETED_IN_TARGET", - "/stress/regexp-exec-test-effectful-last-index.js": "DELETED_IN_TARGET", - "/stress/regexp-large-quantifier.js": "DELETED_IN_TARGET", - "/stress/regexp-last-index-sinking.js": "DELETED_IN_TARGET", - "/stress/regexp-last-index-writable.js": "DELETED_IN_TARGET", - "/stress/regexp-match-in-other-realm-should-work.js": "DELETED_IN_TARGET", - "/stress/regexp-match-proxy.js": "DELETED_IN_TARGET", - "/stress/regexp-match-should-work-with-objects-not-inheriting-object-prototype.js": "DELETED_IN_TARGET", - "/stress/regexp-match.js": "DELETED_IN_TARGET", - "/stress/regexp-matches-array-bad-time.js": "DELETED_IN_TARGET", - "/stress/regexp-matches-array-slow-put.js": "DELETED_IN_TARGET", - "/stress/regexp-matches-array.js": "DELETED_IN_TARGET", - "/stress/regexp-prototype-exec-on-too-long-rope.js": "DELETED_IN_TARGET", - "/stress/regexp-prototype-match-on-too-long-rope.js": "DELETED_IN_TARGET", - "/stress/regexp-prototype-replace-builtin-should-not-use-for-of.js": "DELETED_IN_TARGET", - "/stress/regexp-prototype-test-on-too-long-rope.js": "DELETED_IN_TARGET", - "/stress/regexp-prototype-tostring.js": "DELETED_IN_TARGET", - "/stress/regexp-replace-in-other-realm-should-work.js": "DELETED_IN_TARGET", - "/stress/regexp-replace-proxy.js": "DELETED_IN_TARGET", - "/stress/regexp-replace-should-work-with-objects-not-inheriting-object-prototype.js": "DELETED_IN_TARGET", - "/stress/regexp-search.js": "DELETED_IN_TARGET", - "/stress/regexp-syntax-error-invalid-flags.js": "DELETED_IN_TARGET", - "/stress/regexp-with-nonBMP-any.js": "DELETED_IN_TARGET", - "/stress/regexp-with-runtime-syntax-errors.js": "DELETED_IN_TARGET", - "/stress/relaxed-line-terminators-in-string.js": "DELETED_IN_TARGET", - "/stress/remove-phantom-after-setlocal.js": "DELETED_IN_TARGET", - "/stress/repeat-put-to-scope-global-with-same-value-watchpoint-invalidate.js": "DELETED_IN_TARGET", - "/stress/repeated-arity-check-fail.js": "DELETED_IN_TARGET", - "/stress/repeated-put-by-id-reallocating-transition.js": "DELETED_IN_TARGET", - "/stress/replacement-watchpoint-dictionary.js": "DELETED_IN_TARGET", - "/stress/replacement-watchpoint.js": "DELETED_IN_TARGET", - "/stress/rest-elements.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-allocation-elimination-watchpoints-2.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-allocation-elimination-watchpoints-3.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-allocation-elimination-watchpoints-4.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-allocation-elimination-watchpoints-5.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-allocation-elimination-watchpoints.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-and-default-arguments.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-basics.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-having-a-bad-time.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-inlined.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-is-destructuring.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-many-arguments.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-negative.js": "DELETED_IN_TARGET", - "/stress/rest-parameter-various-types.js": "DELETED_IN_TARGET", - "/stress/retry-cache-later.js": "DELETED_IN_TARGET", - "/stress/right-left-context-invalidated-by-input.js": "DELETED_IN_TARGET", - "/stress/ropes-symbol-toprimitive.js": "DELETED_IN_TARGET", - "/stress/runtime-throw-through-optimized-code.js": "DELETED_IN_TARGET", - "/stress/sampling-profiler-anonymous-function.js": "DELETED_IN_TARGET", - "/stress/sampling-profiler-basic.js": "DELETED_IN_TARGET", - "/stress/sampling-profiler-bound-function-name.js": "DELETED_IN_TARGET", - "/stress/sampling-profiler-deep-stack.js": "DELETED_IN_TARGET", - "/stress/sampling-profiler-display-name.js": "DELETED_IN_TARGET", - "/stress/sampling-profiler-internal-function-name.js": "DELETED_IN_TARGET", - "/stress/scoped-arguments-array-length.js": "DELETED_IN_TARGET", - "/stress/scoped-arguments-check-array.js": "DELETED_IN_TARGET", - "/stress/scoped-arguments-out-of-bounds-change-structure.js": "DELETED_IN_TARGET", - "/stress/scoped-arguments-test.js": "DELETED_IN_TARGET", - "/stress/scoped-arguments-write-barrier-should-be-on-scope-object.js": "DELETED_IN_TARGET", - "/stress/scoped-then-direct-arguments-get-by-val-in-baseline.js": "DELETED_IN_TARGET", - "/stress/set-add-check-failure.js": "DELETED_IN_TARGET", - "/stress/set-add-clobber-set-has.js": "DELETED_IN_TARGET", - "/stress/set-add-create-bucket.js": "DELETED_IN_TARGET", - "/stress/set-add-does-not-clobber-map-get.js": "DELETED_IN_TARGET", - "/stress/set-clone-instance-iterator-change.js": "DELETED_IN_TARGET", - "/stress/set-clone-iterator-change.js": "DELETED_IN_TARGET", - "/stress/set-clone-next-change.js": "DELETED_IN_TARGET", - "/stress/set-clone.js": "DELETED_IN_TARGET", - "/stress/set-constructor-adder.js": "DELETED_IN_TARGET", - "/stress/set-constructor.js": "DELETED_IN_TARGET", - "/stress/set-inherit-add.js": "DELETED_IN_TARGET", - "/stress/set-iterator-result-should-have-expected-shape.js": "DELETED_IN_TARGET", - "/stress/set-iterators-next.js": "DELETED_IN_TARGET", - "/stress/set-same-prototype.js": "DELETED_IN_TARGET", - "/stress/set-untyped-normalize-cse.js": "DELETED_IN_TARGET", - "/stress/set-untyped-normalize.js": "DELETED_IN_TARGET", - "/stress/simple-ai-effect.js": "DELETED_IN_TARGET", - "/stress/simple-polyvariant-call-inlining-example.js": "DELETED_IN_TARGET", - "/stress/simple-polyvariant-get-by-id-inlining-example.js": "DELETED_IN_TARGET", - "/stress/simple-polyvariant-put-by-id-inlining-example.js": "DELETED_IN_TARGET", - "/stress/simple-prototype-accesses.js": "DELETED_IN_TARGET", - "/stress/simple-regexp-exec-folding-fail.js": "DELETED_IN_TARGET", - "/stress/simple-regexp-exec-folding.js": "DELETED_IN_TARGET", - "/stress/simple-regexp-test-folding-fail.js": "DELETED_IN_TARGET", - "/stress/simple-regexp-test-folding.js": "DELETED_IN_TARGET", - "/stress/simplify-varargs-mandatory-minimum-smaller-than-limit.js": "DELETED_IN_TARGET", - "/stress/singleton-scope-then-overwrite.js": "DELETED_IN_TARGET", - "/stress/singleton-scope-then-realloc-and-overwrite.js": "DELETED_IN_TARGET", - "/stress/singleton-scope-then-realloc.js": "DELETED_IN_TARGET", - "/stress/sink-arguments-past-invalid-check-dfg.js": "DELETED_IN_TARGET", - "/stress/sink-arguments-past-invalid-check-int32-dfg.js": "DELETED_IN_TARGET", - "/stress/sink-arguments-past-invalid-check-int32.js": "DELETED_IN_TARGET", - "/stress/sink-arguments-past-invalid-check-sneakier.js": "DELETED_IN_TARGET", - "/stress/sink-arguments-past-invalid-check.js": "DELETED_IN_TARGET", - "/stress/sink-function-past-invalid-check-sneakier.js": "DELETED_IN_TARGET", - "/stress/sink-function-past-invalid-check-sneaky.js": "DELETED_IN_TARGET", - "/stress/sink-multigetbyoffset.js": "DELETED_IN_TARGET", - "/stress/sink-object-past-invalid-check-int32.js": "DELETED_IN_TARGET", - "/stress/sink-object-past-invalid-check-sneakier.js": "DELETED_IN_TARGET", - "/stress/sink-object-past-invalid-check-sneaky.js": "DELETED_IN_TARGET", - "/stress/sink-object-past-invalid-check.js": "DELETED_IN_TARGET", - "/stress/sink-phantom-new-array-buffer-exit-ok.js": "DELETED_IN_TARGET", - "/stress/sink-put-stack-over-kill-stack.js": "DELETED_IN_TARGET", - "/stress/sink-to-impossible-multi-get-by-offset-on-prototypes.js": "DELETED_IN_TARGET", - "/stress/sink_checkstructure.js": "DELETED_IN_TARGET", - "/stress/slightly-more-difficult-to-fold-reflective-arguments-access.js": "DELETED_IN_TARGET", - "/stress/sloppy-mode-function-hoisting.js": "DELETED_IN_TARGET", - "/stress/sloppy-mode-hoist-arguments-function-non-simple-parameter-list.js": "DELETED_IN_TARGET", - "/stress/slow-path-generator-updating-current-node-dfg.js": "DELETED_IN_TARGET", - "/stress/sort-array-with-undecided.js": "DELETED_IN_TARGET", - "/stress/sorting-boolean-result-comparator.js": "DELETED_IN_TARGET", - "/stress/source-origin.js": "DELETED_IN_TARGET", - "/stress/sparse-define-empty-descriptor.js": "DELETED_IN_TARGET", - "/stress/sparse-map-non-overlapping.js": "DELETED_IN_TARGET", - "/stress/sparse-map-non-skip-getter-overriding.js": "DELETED_IN_TARGET", - "/stress/sparse-map-non-skip.js": "DELETED_IN_TARGET", - "/stress/sparse_splice.js": "DELETED_IN_TARGET", - "/stress/spec-empty-flows-through-cell-checks.js": "DELETED_IN_TARGET", - "/stress/splay-flash-access-1ms.js": "DELETED_IN_TARGET", - "/stress/splay-flash-access.js": "DELETED_IN_TARGET", - "/stress/spread-array-iterator-watchpoint-2.js": "DELETED_IN_TARGET", - "/stress/spread-array-iterator-watchpoint.js": "DELETED_IN_TARGET", - "/stress/spread-call-convert-to-static-call.js": "DELETED_IN_TARGET", - "/stress/spread-calling.js": "DELETED_IN_TARGET", - "/stress/spread-capture-rest.js": "DELETED_IN_TARGET", - "/stress/spread-consults-correct-global-object.js": "DELETED_IN_TARGET", - "/stress/spread-escapes-but-create-rest-does-not.js": "DELETED_IN_TARGET", - "/stress/spread-escapes-but-new-array-buffer-does-not-double.js": "DELETED_IN_TARGET", - "/stress/spread-escapes-but-new-array-buffer-does-not.js": "DELETED_IN_TARGET", - "/stress/spread-forward-call-varargs-stack-overflow.js": "DELETED_IN_TARGET", - "/stress/spread-forward-varargs-rest-parameter-change-iterator-protocol-2.js": "DELETED_IN_TARGET", - "/stress/spread-forward-varargs-rest-parameter-change-iterator-protocol.js": "DELETED_IN_TARGET", - "/stress/spread-forward-varargs-stack-overflow.js": "DELETED_IN_TARGET", - "/stress/spread-in-tail.js": "DELETED_IN_TARGET", - "/stress/spread-multi-layers.js": "DELETED_IN_TARGET", - "/stress/spread-non-array.js": "DELETED_IN_TARGET", - "/stress/spread-non-varargs.js": "DELETED_IN_TARGET", - "/stress/spread-optimized-properly.js": "DELETED_IN_TARGET", - "/stress/spread-outer-create-rest.js": "DELETED_IN_TARGET", - "/stress/static-function-delete.js": "DELETED_IN_TARGET", - "/stress/static-function-put.js": "DELETED_IN_TARGET", - "/stress/static-getter-delete.js": "DELETED_IN_TARGET", - "/stress/static-getter-descriptors.js": "DELETED_IN_TARGET", - "/stress/static-getter-enumeration.js": "DELETED_IN_TARGET", - "/stress/static-getter-get.js": "DELETED_IN_TARGET", - "/stress/static-getter-in-names.js": "DELETED_IN_TARGET", - "/stress/static-getter-names.js": "DELETED_IN_TARGET", - "/stress/static-getter-put.js": "DELETED_IN_TARGET", - "/stress/strcat-emtpy.js": "DELETED_IN_TARGET", - "/stress/strict-function-structure.js": "DELETED_IN_TARGET", - "/stress/strict-mode-arguments-caller.js": "DELETED_IN_TARGET", - "/stress/strict-nested-function-structure.js": "DELETED_IN_TARGET", - "/stress/strict-to-this-int.js": "DELETED_IN_TARGET", - "/stress/string-compare.js": "DELETED_IN_TARGET", - "/stress/string-from-char-code-change-structure-not-dead.js": "DELETED_IN_TARGET", - "/stress/string-from-char-code-change-structure.js": "DELETED_IN_TARGET", - "/stress/string-from-char-code-slow.js": "DELETED_IN_TARGET", - "/stress/string-from-code-point.js": "DELETED_IN_TARGET", - "/stress/string-ident-to-not-string-var-equality.js": "DELETED_IN_TARGET", - "/stress/string-instanceof.js": "DELETED_IN_TARGET", - "/stress/string-iterators.js": "DELETED_IN_TARGET", - "/stress/string-joining-long-strings-should-not-crash.js": "DELETED_IN_TARGET", - "/stress/string-normalize.js": "DELETED_IN_TARGET", - "/stress/string-object-define-own-property.js": "DELETED_IN_TARGET", - "/stress/string-object-put-by-index.js": "DELETED_IN_TARGET", - "/stress/string-out-of-bounds-negative-proto-value.js": "DELETED_IN_TARGET", - "/stress/string-proto.js": "DELETED_IN_TARGET", - "/stress/string-prototype-charCodeAt-on-too-long-rope.js": "DELETED_IN_TARGET", - "/stress/string-prototype-methods-endsWith-startsWith-includes-correctness.js": "DELETED_IN_TARGET", - "/stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js": "DELETED_IN_TARGET", - "/stress/string-prototype-scopes-global-lexical-environment-strict.js": "DELETED_IN_TARGET", - "/stress/string-prototype-scopes-global-lexical-environment.js": "DELETED_IN_TARGET", - "/stress/string-prototype-scopes-strict.js": "DELETED_IN_TARGET", - "/stress/string-prototype-scopes.js": "DELETED_IN_TARGET", - "/stress/string-raw.js": "DELETED_IN_TARGET", - "/stress/string-repeat-copy-chars-crash.js": "DELETED_IN_TARGET", - "/stress/string-repeat-edge-cases.js": "DELETED_IN_TARGET", - "/stress/string-replace-constant-folding-replacer-not-string.js": "DELETED_IN_TARGET", - "/stress/string-replace-proxy.js": "DELETED_IN_TARGET", - "/stress/string-rope-with-custom-valueof.js": "DELETED_IN_TARGET", - "/stress/string-symbol-customization.js": "DELETED_IN_TARGET", - "/stress/sub-order-evaluation.js": "DELETED_IN_TARGET", - "/stress/sub-overflows-after-not-equal.js": "DELETED_IN_TARGET", - "/stress/super-call-does-not-look-up-constructor.js": "DELETED_IN_TARGET", - "/stress/super-call-function-subclass.js": "DELETED_IN_TARGET", - "/stress/super-dot-call-and-apply.js": "DELETED_IN_TARGET", - "/stress/super-force-ic-fail.js": "DELETED_IN_TARGET", - "/stress/super-getter-reset-ic.js": "DELETED_IN_TARGET", - "/stress/super-in-lexical-scope.js": "DELETED_IN_TARGET", - "/stress/super-method-calls-check-tdz.js": "DELETED_IN_TARGET", - "/stress/super-property-access-exceptions.js": "DELETED_IN_TARGET", - "/stress/super-property-access-object-literal-to-this-2.js": "DELETED_IN_TARGET", - "/stress/super-property-access-object-literal-to-this.js": "DELETED_IN_TARGET", - "/stress/super-property-access-tdz.js": "DELETED_IN_TARGET", - "/stress/super-property-access-to-this.js": "DELETED_IN_TARGET", - "/stress/super-property-access.js": "DELETED_IN_TARGET", - "/stress/switch-typeof-indirect.js": "DELETED_IN_TARGET", - "/stress/switch-typeof-slightly-indirect.js": "DELETED_IN_TARGET", - "/stress/switch-typeof.js": "DELETED_IN_TARGET", - "/stress/symbol-and-string-constructor.js": "DELETED_IN_TARGET", - "/stress/symbol-array-from.js": "DELETED_IN_TARGET", - "/stress/symbol-define-property.js": "DELETED_IN_TARGET", - "/stress/symbol-description.js": "DELETED_IN_TARGET", - "/stress/symbol-equality-over-gc.js": "DELETED_IN_TARGET", - "/stress/symbol-equality.js": "DELETED_IN_TARGET", - "/stress/symbol-error-messages.js": "DELETED_IN_TARGET", - "/stress/symbol-get-own-property.js": "DELETED_IN_TARGET", - "/stress/symbol-hasInstance.js": "DELETED_IN_TARGET", - "/stress/symbol-instanceof.js": "DELETED_IN_TARGET", - "/stress/symbol-registry.js": "DELETED_IN_TARGET", - "/stress/symbol-seal-and-freeze.js": "DELETED_IN_TARGET", - "/stress/symbol-should-not-break-for-in.js": "DELETED_IN_TARGET", - "/stress/symbol-species.js": "DELETED_IN_TARGET", - "/stress/symbol-toprimitive-errors.js": "DELETED_IN_TARGET", - "/stress/symbol-toprimitive.js": "DELETED_IN_TARGET", - "/stress/symbol-tostringtag-watchpoints.js": "DELETED_IN_TARGET", - "/stress/symbol-tostringtag.js": "DELETED_IN_TARGET", - "/stress/symbol-with-json.js": "DELETED_IN_TARGET", - "/stress/tagged-template-object-collect.js": "DELETED_IN_TARGET", - "/stress/tagged-template-object.js": "DELETED_IN_TARGET", - "/stress/tagged-template-tdz.js": "DELETED_IN_TARGET", - "/stress/tagged-templates-identity.js": "DELETED_IN_TARGET", - "/stress/tagged-templates-raw-strings.js": "DELETED_IN_TARGET", - "/stress/tagged-templates-syntax.js": "DELETED_IN_TARGET", - "/stress/tagged-templates-template-object.js": "DELETED_IN_TARGET", - "/stress/tagged-templates-this.js": "DELETED_IN_TARGET", - "/stress/tagged-templates.js": "DELETED_IN_TARGET", - "/stress/tail-call-host-call-throw.js": "DELETED_IN_TARGET", - "/stress/tail-call-in-inline-cache.js": "DELETED_IN_TARGET", - "/stress/tail-call-no-stack-overflow.js": "DELETED_IN_TARGET", - "/stress/tail-call-profiler.js": "DELETED_IN_TARGET", - "/stress/tail-call-recognize.js": "DELETED_IN_TARGET", - "/stress/tail-call-varargs-no-stack-overflow.js": "DELETED_IN_TARGET", - "/stress/tail-calls-dont-overwrite-live-stack.js": "DELETED_IN_TARGET", - "/stress/tdz-this-in-try-catch.js": "DELETED_IN_TARGET", - "/stress/template-literal-line-terminators.js": "DELETED_IN_TARGET", - "/stress/template-literal-syntax.js": "DELETED_IN_TARGET", - "/stress/template-literal.js": "DELETED_IN_TARGET", - "/stress/template-string-tags-eval.js": "DELETED_IN_TARGET", - "/stress/test-finally.js": "DELETED_IN_TARGET", - "/stress/throw-from-ftl-call-ic-slow-path-cells.js": "DELETED_IN_TARGET", - "/stress/throw-from-ftl-call-ic-slow-path-undefined.js": "DELETED_IN_TARGET", - "/stress/throw-from-ftl-call-ic-slow-path.js": "DELETED_IN_TARGET", - "/stress/throw-from-ftl-in-loop.js": "DELETED_IN_TARGET", - "/stress/throw-from-ftl.js": "DELETED_IN_TARGET", - "/stress/throw-through-optimized-code.js": "DELETED_IN_TARGET", - "/stress/tier-up-in-loop-with-cfg-simplification.js": "DELETED_IN_TARGET", - "/stress/to-int32-sensible.js": "DELETED_IN_TARGET", - "/stress/to-int32-sensible2.js": "DELETED_IN_TARGET", - "/stress/to-lower-case-intrinsic-on-empty-rope.js": "DELETED_IN_TARGET", - "/stress/to-lower-case.js": "DELETED_IN_TARGET", - "/stress/to-number-basics.js": "DELETED_IN_TARGET", - "/stress/to-number-convert-identity-without-execution.js": "DELETED_IN_TARGET", - "/stress/to-number-int52.js": "DELETED_IN_TARGET", - "/stress/to-number-intrinsic-convert-to-identity-without-execution.js": "DELETED_IN_TARGET", - "/stress/to-number-intrinsic-int52.js": "DELETED_IN_TARGET", - "/stress/to-number-intrinsic-object-without-execution.js": "DELETED_IN_TARGET", - "/stress/to-number-intrinsic-value-profiling.js": "DELETED_IN_TARGET", - "/stress/to-number-object-without-execution.js": "DELETED_IN_TARGET", - "/stress/to-number-object.js": "DELETED_IN_TARGET", - "/stress/to-number-throws-correct-exception.js": "DELETED_IN_TARGET", - "/stress/to-number-value-profiling.js": "DELETED_IN_TARGET", - "/stress/to-property-key-correctness.js": "DELETED_IN_TARGET", - "/stress/to-string-int32.js": "DELETED_IN_TARGET", - "/stress/to-string-int52.js": "DELETED_IN_TARGET", - "/stress/to-string-non-cell-use.js": "DELETED_IN_TARGET", - "/stress/to-string-on-object-or-string.js": "DELETED_IN_TARGET", - "/stress/to-string-on-object.js": "DELETED_IN_TARGET", - "/stress/to-string-on-string-object.js": "DELETED_IN_TARGET", - "/stress/to-string-on-string-or-string-object-then-object.js": "DELETED_IN_TARGET", - "/stress/to-string-on-string-or-string-object.js": "DELETED_IN_TARGET", - "/stress/to-string-on-value-or-string.js": "DELETED_IN_TARGET", - "/stress/to-string-on-value.js": "DELETED_IN_TARGET", - "/stress/to-string-with-int52.js": "DELETED_IN_TARGET", - "/stress/to-this-before-arrow-function-closes-over-this-that-starts-as-lexical-environment.js": "DELETED_IN_TARGET", - "/stress/to-this-boolean.js": "DELETED_IN_TARGET", - "/stress/to-this-double.js": "DELETED_IN_TARGET", - "/stress/to-this-global-object.js": "DELETED_IN_TARGET", - "/stress/to-this-int32.js": "DELETED_IN_TARGET", - "/stress/to-this-int52.js": "DELETED_IN_TARGET", - "/stress/to-this-number.js": "DELETED_IN_TARGET", - "/stress/to-this-numbers.js": "DELETED_IN_TARGET", - "/stress/to-this-on-constant-lexical-environment.js": "DELETED_IN_TARGET", - "/stress/to-this-polymorphic.js": "DELETED_IN_TARGET", - "/stress/to-this-string.js": "DELETED_IN_TARGET", - "/stress/to-this-symbol.js": "DELETED_IN_TARGET", - "/stress/toprimitive-speculated-types.js": "DELETED_IN_TARGET", - "/stress/trailing-comma-in-function-parameters.js": "DELETED_IN_TARGET", - "/stress/trailing-comma-in-patterns.js": "DELETED_IN_TARGET", - "/stress/tricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js": "DELETED_IN_TARGET", - "/stress/tricky-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js": "DELETED_IN_TARGET", - "/stress/tricky-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js": "DELETED_IN_TARGET", - "/stress/tricky-infinite-loop-that-uses-captured-variables.js": "DELETED_IN_TARGET", - "/stress/trim.js": "DELETED_IN_TARGET", - "/stress/trivially-foldable-reflective-arguments-access.js": "DELETED_IN_TARGET", - "/stress/try-catch-getter-as-get-by-id-register-restoration.js": "DELETED_IN_TARGET", - "/stress/try-catch-getter-as-get-by-id.js": "DELETED_IN_TARGET", - "/stress/try-catch-setter-as-put-by-id.js": "DELETED_IN_TARGET", - "/stress/try-catch-stub-routine-replaced.js": "DELETED_IN_TARGET", - "/stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js": "DELETED_IN_TARGET", - "/stress/type-of-functions-and-objects.js": "DELETED_IN_TARGET", - "/stress/typed-array-byte-offset.js": "DELETED_IN_TARGET", - "/stress/typed-array-get-by-val-profiling.js": "DELETED_IN_TARGET", - "/stress/typed-array-put-by-val-profiling.js": "DELETED_IN_TARGET", - "/stress/typed-array-view-set-should-not-crash-on-exception.js": "DELETED_IN_TARGET", - "/stress/typedarray-access-monomorphic-neutered.js": "DELETED_IN_TARGET", - "/stress/typedarray-access-neutered.js": "DELETED_IN_TARGET", - "/stress/typedarray-add-property-to-base-object.js": "DELETED_IN_TARGET", - "/stress/typedarray-bad-getter.js": "DELETED_IN_TARGET", - "/stress/typedarray-configure-index.js": "DELETED_IN_TARGET", - "/stress/typedarray-construct-iterator.js": "DELETED_IN_TARGET", - "/stress/typedarray-constructor.js": "DELETED_IN_TARGET", - "/stress/typedarray-copyWithin.js": "DELETED_IN_TARGET", - "/stress/typedarray-every.js": "DELETED_IN_TARGET", - "/stress/typedarray-fill.js": "DELETED_IN_TARGET", - "/stress/typedarray-filter.js": "DELETED_IN_TARGET", - "/stress/typedarray-find.js": "DELETED_IN_TARGET", - "/stress/typedarray-findIndex.js": "DELETED_IN_TARGET", - "/stress/typedarray-forEach.js": "DELETED_IN_TARGET", - "/stress/typedarray-from.js": "DELETED_IN_TARGET", - "/stress/typedarray-functions-with-neutered.js": "DELETED_IN_TARGET", - "/stress/typedarray-getownproperty-not-configurable.js": "DELETED_IN_TARGET", - "/stress/typedarray-getter-on-self.js": "DELETED_IN_TARGET", - "/stress/typedarray-hasOwnProperty-out-of-bounds.js": "DELETED_IN_TARGET", - "/stress/typedarray-includes.js": "DELETED_IN_TARGET", - "/stress/typedarray-indexOf.js": "DELETED_IN_TARGET", - "/stress/typedarray-intrinsic-getters-change-prototype.js": "DELETED_IN_TARGET", - "/stress/typedarray-lastIndexOf.js": "DELETED_IN_TARGET", - "/stress/typedarray-length-dictionary.js": "DELETED_IN_TARGET", - "/stress/typedarray-map.js": "DELETED_IN_TARGET", - "/stress/typedarray-of.js": "DELETED_IN_TARGET", - "/stress/typedarray-reduce.js": "DELETED_IN_TARGET", - "/stress/typedarray-reduceRight.js": "DELETED_IN_TARGET", - "/stress/typedarray-set.js": "DELETED_IN_TARGET", - "/stress/typedarray-slice.js": "DELETED_IN_TARGET", - "/stress/typedarray-some.js": "DELETED_IN_TARGET", - "/stress/typedarray-sort.js": "DELETED_IN_TARGET", - "/stress/typedarray-subarray.js": "DELETED_IN_TARGET", - "/stress/typedarray-view-string-properties-neutered.js": "DELETED_IN_TARGET", - "/stress/typeof-dfg-function-or-object.js": "DELETED_IN_TARGET", - "/stress/typeof-symbol.js": "DELETED_IN_TARGET", - "/stress/uint32-comparison-jump.js": "DELETED_IN_TARGET", - "/stress/uint32-comparison.js": "DELETED_IN_TARGET", - "/stress/uint32-to-number-constant-folding.js": "DELETED_IN_TARGET", - "/stress/uint32-to-number-fold-constant-with-do-overflow.js": "DELETED_IN_TARGET", - "/stress/uint32-to-number-overflows-to-uint52.js": "DELETED_IN_TARGET", - "/stress/uint32array-unsigned-load.js": "DELETED_IN_TARGET", - "/stress/undecided-concat.js": "DELETED_IN_TARGET", - "/stress/undecided-length.js": "DELETED_IN_TARGET", - "/stress/undefined-access-dictionary-then-proto-change.js": "DELETED_IN_TARGET", - "/stress/undefined-access-then-proto-change.js": "DELETED_IN_TARGET", - "/stress/undefined-access-then-self-change.js": "DELETED_IN_TARGET", - "/stress/unescape.js": "DELETED_IN_TARGET", - "/stress/unscopables.js": "DELETED_IN_TARGET", - "/stress/unshift-array-storage.js": "DELETED_IN_TARGET", - "/stress/unshiftCountSlowCase-correct-postCapacity.js": "DELETED_IN_TARGET", - "/stress/untyped-add.js": "DELETED_IN_TARGET", - "/stress/untyped-bit-and.js": "DELETED_IN_TARGET", - "/stress/untyped-bit-or.js": "DELETED_IN_TARGET", - "/stress/untyped-bit-xor.js": "DELETED_IN_TARGET", - "/stress/untyped-div.js": "DELETED_IN_TARGET", - "/stress/untyped-equality.js": "DELETED_IN_TARGET", - "/stress/untyped-less-than.js": "DELETED_IN_TARGET", - "/stress/untyped-lshift.js": "DELETED_IN_TARGET", - "/stress/untyped-mul.js": "DELETED_IN_TARGET", - "/stress/untyped-rshift.js": "DELETED_IN_TARGET", - "/stress/untyped-sub.js": "DELETED_IN_TARGET", - "/stress/untyped-urshift.js": "DELETED_IN_TARGET", - "/stress/use-arguments-as-object-pointer.js": "DELETED_IN_TARGET", - "/stress/v8-crypto-strict.js": "DELETED_IN_TARGET", - "/stress/v8-deltablue-strict.js": "DELETED_IN_TARGET", - "/stress/v8-earley-boyer-strict.js": "DELETED_IN_TARGET", - "/stress/v8-parameter-scoping.js": "DELETED_IN_TARGET", - "/stress/v8-raytrace-strict.js": "DELETED_IN_TARGET", - "/stress/v8-regexp-strict.js": "DELETED_IN_TARGET", - "/stress/v8-richards-strict.js": "DELETED_IN_TARGET", - "/stress/v8-splay-strict.js": "DELETED_IN_TARGET", - "/stress/value-add-on-double-array-with-holes.js": "DELETED_IN_TARGET", - "/stress/value-to-boolean.js": "DELETED_IN_TARGET", - "/stress/value-to-int32-undefined-constant.js": "DELETED_IN_TARGET", - "/stress/value-to-int32-undefined.js": "DELETED_IN_TARGET", - "/stress/values-unscopables.js": "DELETED_IN_TARGET", - "/stress/var-injection-cache-invalidation.js": "DELETED_IN_TARGET", - "/stress/varargs-closure-inlined-exit-strict-mode.js": "DELETED_IN_TARGET", - "/stress/varargs-closure-inlined-exit.js": "DELETED_IN_TARGET", - "/stress/varargs-exit.js": "DELETED_IN_TARGET", - "/stress/varargs-inlined-exit.js": "DELETED_IN_TARGET", - "/stress/varargs-inlined-simple-exit-aliasing-weird-reversed-args.js": "DELETED_IN_TARGET", - "/stress/varargs-inlined-simple-exit-aliasing-weird.js": "DELETED_IN_TARGET", - "/stress/varargs-inlined-simple-exit-aliasing.js": "DELETED_IN_TARGET", - "/stress/varargs-inlined-simple-exit.js": "DELETED_IN_TARGET", - "/stress/varargs-inlining-underflow.js": "DELETED_IN_TARGET", - "/stress/varargs-no-forward.js": "DELETED_IN_TARGET", - "/stress/varargs-simple.js": "DELETED_IN_TARGET", - "/stress/varargs-then-slow-call.js": "DELETED_IN_TARGET", - "/stress/varargs-too-few-arguments.js": "DELETED_IN_TARGET", - "/stress/varargs-two-level.js": "DELETED_IN_TARGET", - "/stress/varargs-varargs-closure-inlined-exit.js": "DELETED_IN_TARGET", - "/stress/varargs-varargs-inlined-exit-strict-mode.js": "DELETED_IN_TARGET", - "/stress/varargs-varargs-inlined-exit.js": "DELETED_IN_TARGET", - "/stress/varargs-with-unused-count.js": "DELETED_IN_TARGET", - "/stress/variable-named-eval-under-tdz.js": "DELETED_IN_TARGET", - "/stress/variable-under-tdz-eval-tricky.js": "DELETED_IN_TARGET", - "/stress/vector-length-hint-array-constructor.js": "DELETED_IN_TARGET", - "/stress/vector-length-hint-new-array.js": "DELETED_IN_TARGET", - "/stress/watchdog-dont-malloc-when-in-c-code.js": "DELETED_IN_TARGET", - "/stress/weak-map-constructor-adder.js": "DELETED_IN_TARGET", - "/stress/weak-map-constructor.js": "DELETED_IN_TARGET", - "/stress/weak-set-constructor-adder.js": "DELETED_IN_TARGET", - "/stress/weak-set-constructor.js": "DELETED_IN_TARGET", - "/stress/weakmap-cse-set-break.js": "DELETED_IN_TARGET", - "/stress/weakmap-cse.js": "DELETED_IN_TARGET", - "/stress/weakmap-gc.js": "DELETED_IN_TARGET", - "/stress/weakmap-set-cse.js": "DELETED_IN_TARGET", - "/stress/weakset-add-cse.js": "DELETED_IN_TARGET", - "/stress/weakset-cse-add-break.js": "DELETED_IN_TARGET", - "/stress/weakset-cse.js": "DELETED_IN_TARGET", - "/stress/weakset-gc.js": "DELETED_IN_TARGET", - "/stress/weird-equality-folding-cases.js": "DELETED_IN_TARGET", - "/stress/weird-getter-counter.js": "DELETED_IN_TARGET", - "/stress/weird-put-stack-varargs.js": "DELETED_IN_TARGET", - "/stress/weird-setter-counter-syntactic.js": "DELETED_IN_TARGET", - "/stress/weird-setter-counter.js": "DELETED_IN_TARGET", - "/stress/with.js": "DELETED_IN_TARGET", - "/stress/with_and_arith.js": "DELETED_IN_TARGET", - "/stress/yield-and-line-terminator.js": "DELETED_IN_TARGET", - "/stress/yield-label-generator.js": "DELETED_IN_TARGET", - "/stress/yield-label.js": "DELETED_IN_TARGET", - "/stress/yield-named-accessors-generator.js": "DELETED_IN_TARGET", - "/stress/yield-named-accessors.js": "DELETED_IN_TARGET", - "/stress/yield-named-variable-generator.js": "DELETED_IN_TARGET", - "/stress/yield-named-variable.js": "DELETED_IN_TARGET", - "/stress/yield-out-of-generator.js": "DELETED_IN_TARGET", - "/stress/yield-reserved-word.js": "DELETED_IN_TARGET", - "/stress/yield-star-throw-continue.js": "DELETED_IN_TARGET", - "/stress/regress-189186.js": "DELETED_IN_TARGET", - "/stress/regress-189292.js": "DELETED_IN_TARGET", - "/stress/IIFE-es6-default-parameters.js": "DELETED_IN_TARGET", - "/stress/IIFE-function-name-captured.js": "DELETED_IN_TARGET", - "/stress/JSON-parse-should-cache-array-lengths.js": "DELETED_IN_TARGET", - "/stress/accessors-get-set-prefix.js": "DELETED_IN_TARGET", - "/stress/arguments-bizarre-behavior.js": "DELETED_IN_TARGET", - "/stress/arguments-bizarre-behaviour-disable-enumerability.js": "DELETED_IN_TARGET", - "/stress/arith-abs-integer-range-optimization.js": "DELETED_IN_TARGET", - "/stress/arith-asin-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-asinh-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-atan-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-atanh-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-cbrt-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-ceil-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-clz32-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-cos-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-cosh-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-expm1-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-floor-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-fround-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-log-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-log10-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-log2-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-negate-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-round-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-sin-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-sinh-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-sqrt-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-tan-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-tanh-on-various-types.js": "DELETED_IN_TARGET", - "/stress/arith-trunc-on-various-types.js": "DELETED_IN_TARGET", - "/stress/assign-argument-in-inlined-call.js": "DELETED_IN_TARGET", - "/stress/assign-captured-argument-in-inlined-call.js": "DELETED_IN_TARGET", - "/stress/async-await-basic.js": "DELETED_IN_TARGET", - "/stress/async-await-long-loop.js": "DELETED_IN_TARGET", - "/stress/async-await-module-reserved-word.js": "DELETED_IN_TARGET", - "/stress/async-await-mozilla.js": "DELETED_IN_TARGET", - "/stress/async-await-reserved-word.js": "DELETED_IN_TARGET", - "/stress/async-await-syntax.js": "DELETED_IN_TARGET", - "/stress/async-await-throw-loop.js": "DELETED_IN_TARGET", - "/stress/async-function-create-nobaseline.js": "DELETED_IN_TARGET", - "/stress/async-function-create-optimized.js": "DELETED_IN_TARGET", - "/stress/async-function-declaration-sinking-no-double-allocate.js": "DELETED_IN_TARGET", - "/stress/async-function-declaration-sinking-osrexit.js": "DELETED_IN_TARGET", - "/stress/async-function-declaration-sinking-put.js": "DELETED_IN_TARGET", - "/stress/async-function-expression-sinking-no-double-allocate.js": "DELETED_IN_TARGET", - "/stress/async-function-expression-sinking-osrexit.js": "DELETED_IN_TARGET", - "/stress/async-function-expression-sinking-put.js": "DELETED_IN_TARGET", - "/stress/async-generator-assertion.js": "DELETED_IN_TARGET", - "/stress/async-iteration-async-from-sync.js": "DELETED_IN_TARGET", - "/stress/async-iteration-basic.js": "DELETED_IN_TARGET", - "/stress/async-iteration-evaluation.js": "DELETED_IN_TARGET", - "/stress/async-iteration-for-await-of-syntax.js": "DELETED_IN_TARGET", - "/stress/async-iteration-for-await-of.js": "DELETED_IN_TARGET", - "/stress/async-iteration-syntax.js": "DELETED_IN_TARGET", - "/stress/async-iteration-yield-promise.js": "DELETED_IN_TARGET", - "/stress/async-iteration-yield-star-interface.js": "DELETED_IN_TARGET", - "/stress/async-iteration-yield-star.js": "DELETED_IN_TARGET", - "/stress/bug-131764.js": "DELETED_IN_TARGET", - "/stress/bug-165091.js": "DELETED_IN_TARGET", - "/stress/bug-171786.js": "DELETED_IN_TARGET", - "/stress/bug-188298.js": "DELETED_IN_TARGET", - "/stress/builtin-function-is-construct-type-none.js": "DELETED_IN_TARGET", - "/stress/builtin-function-name.js": "DELETED_IN_TARGET", - "/stress/butterfly-zero-unused-butterfly-properties.js": "DELETED_IN_TARGET", - "/stress/cfa-expected-values-must-set-clobbered-to-false.js": "DELETED_IN_TARGET", - "/stress/characters-regexp-ignore-case.js": "DELETED_IN_TARGET", - "/stress/characters-regexp.js": "DELETED_IN_TARGET", - "/stress/clobberize-needs-to-model-spread-effects.js": "DELETED_IN_TARGET", - "/stress/closure-call-exit.js": "DELETED_IN_TARGET", - "/stress/closure-recursive-tail-call-infinite-loop.js": "DELETED_IN_TARGET", - "/stress/closure-recursive-tail-call.js": "DELETED_IN_TARGET", - "/stress/code-cache-incorrect-caching.js": "DELETED_IN_TARGET", - "/stress/combined-liveness-needs-to-say-arguments-are-live.js": "DELETED_IN_TARGET", - "/stress/comparison-ignore-negative-zero.js": "DELETED_IN_TARGET", - "/stress/computed-function-names.js": "DELETED_IN_TARGET", - "/stress/concat-with-holesMustForwardToPrototype.js": "DELETED_IN_TARGET", - "/stress/const-and-with-statement.js": "DELETED_IN_TARGET", - "/stress/const-exception-handling.js": "DELETED_IN_TARGET", - "/stress/const-loop-semantics.js": "DELETED_IN_TARGET", - "/stress/const-not-strict-mode.js": "DELETED_IN_TARGET", - "/stress/const-semantics.js": "DELETED_IN_TARGET", - "/stress/const-tdz.js": "DELETED_IN_TARGET", - "/stress/cow-convert-contiguous-to-array-storage.js": "DELETED_IN_TARGET", - "/stress/cow-convert-double-to-array-storage.js": "DELETED_IN_TARGET", - "/stress/cow-convert-double-to-contiguous.js": "DELETED_IN_TARGET", - "/stress/cow-convert-int32-to-array-storage.js": "DELETED_IN_TARGET", - "/stress/cow-convert-int32-to-contiguous.js": "DELETED_IN_TARGET", - "/stress/cow-convert-int32-to-double.js": "DELETED_IN_TARGET", - "/stress/cow-define-length-as-value.js": "DELETED_IN_TARGET", - "/stress/create-direct-arguments-in-osr-should-initialize-to-undefined.js": "DELETED_IN_TARGET", - "/stress/create-rest-while-having-a-bad-time.js": "DELETED_IN_TARGET", - "/stress/create-subclass-structure-might-throw.js": "DELETED_IN_TARGET", - "/stress/create-this-property-change.js": "DELETED_IN_TARGET", - "/stress/create-this-structure-change-without-cse.js": "DELETED_IN_TARGET", - "/stress/create-this-structure-change.js": "DELETED_IN_TARGET", - "/stress/create-this-with-callee-variants.js": "DELETED_IN_TARGET", - "/stress/cse-multi-get-by-offset-remove-checks.js": "DELETED_IN_TARGET", - "/stress/dataview-construct.js": "DELETED_IN_TARGET", - "/stress/dataview-get-cse.js": "DELETED_IN_TARGET", - "/stress/dataview-jit-bounds-checks.js": "DELETED_IN_TARGET", - "/stress/dataview-jit-get.js": "DELETED_IN_TARGET", - "/stress/dataview-jit-neuter.js": "DELETED_IN_TARGET", - "/stress/dataview-jit-set.js": "DELETED_IN_TARGET", - "/stress/dataview-jit-unaligned-accesses.js": "DELETED_IN_TARGET", - "/stress/dataview-prototype-accessors.js": "DELETED_IN_TARGET", - "/stress/dataview-typedarray-toindex.js": "DELETED_IN_TARGET", - "/stress/date-utc-optional.js": "DELETED_IN_TARGET", - "/stress/empty-function.js": "DELETED_IN_TARGET", - "/stress/encode-decode-ascii.js": "DELETED_IN_TARGET", - "/stress/encode-decode-unicode.js": "DELETED_IN_TARGET", - "/stress/encode-decode-uri-component-surrogates.js": "DELETED_IN_TARGET", - "/stress/encode-decode-uri-surrogates.js": "DELETED_IN_TARGET", - "/stress/encode-decode-zero.js": "DELETED_IN_TARGET", - "/stress/ensure-proper-strict-mode-parsing.js": "DELETED_IN_TARGET", - "/stress/equality-type-checking.js": "DELETED_IN_TARGET", - "/stress/equals-masquerader.js": "DELETED_IN_TARGET", - "/stress/error-message-for-function-base-not-found.js": "DELETED_IN_TARGET", - "/stress/error-messages-for-in-operator-should-not-crash.js": "DELETED_IN_TARGET", - "/stress/error-stack-trace-limit.js": "DELETED_IN_TARGET", - "/stress/es6-default-parameters.js": "DELETED_IN_TARGET", - "/stress/es6-for-of-loop-exception.js": "DELETED_IN_TARGET", - "/stress/escape-object-in-diamond-then-exit.js": "DELETED_IN_TARGET", - "/stress/escape-unescape-surrogates.js": "DELETED_IN_TARGET", - "/stress/eval-and-super.js": "DELETED_IN_TARGET", - "/stress/eval-cached.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-block-scoping-reassign.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-block-with-remove.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-block-with-var-and-remove.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-block-with-var-sinthesize.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-in-block-scope-and-bind-to-top-eval-scope.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-in-eval-within-block-with-let.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-in-eval-within-with-scope.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-in-frozen-global.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-in-global-of-eval.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-in-global.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-in-if.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-with-let-const-class.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-within-eval-with-reassign-to-var.js": "DELETED_IN_TARGET", - "/stress/eval-func-decl-within-eval-without-reassign-to-let.js": "DELETED_IN_TARGET", - "/stress/eval-in-arrow-function.js": "DELETED_IN_TARGET", - "/stress/eval-script-contains-null-character.js": "DELETED_IN_TARGET", - "/stress/eval-that-is-not-eval.js": "DELETED_IN_TARGET", - "/stress/exception-dfg-inlined-frame-not-strict-equal.js": "DELETED_IN_TARGET", - "/stress/exception-dfg-not-strict-equal.js": "DELETED_IN_TARGET", - "/stress/exception-dfg-operation-read-value.js": "DELETED_IN_TARGET", - "/stress/exception-dfg-throw-from-catch-block.js": "DELETED_IN_TARGET", - "/stress/exception-effect-strcat.js": "DELETED_IN_TARGET", - "/stress/exception-in-strcat-string-overflow.js": "DELETED_IN_TARGET", - "/stress/exception-in-strcat.js": "DELETED_IN_TARGET", - "/stress/exception-in-to-property-key-should-be-handled-early.js": "DELETED_IN_TARGET", - "/stress/exit-after-int32-to-double.js": "DELETED_IN_TARGET", - "/stress/exit-after-int52-to-double.js": "DELETED_IN_TARGET", - "/stress/exit-after-int52-to-value.js": "DELETED_IN_TARGET", - "/stress/exit-after-llvm-folds-large-int-constant.js": "DELETED_IN_TARGET", - "/stress/exit-from-ftl-when-caller-passed-extra-args-then-use-function-dot-arguments.js": "DELETED_IN_TARGET", - "/stress/exit-from-ftl-with-arity-check-fail.js": "DELETED_IN_TARGET", - "/stress/exit-from-getter.js": "DELETED_IN_TARGET", - "/stress/exit-from-setter.js": "DELETED_IN_TARGET", - "/stress/exit-then-eval.js": "DELETED_IN_TARGET", - "/stress/fiat-double-to-int52-then-exit-not-int52.js": "DELETED_IN_TARGET", - "/stress/fiat-double-to-int52-then-fail-to-fold.js": "DELETED_IN_TARGET", - "/stress/fiat-double-to-int52-then-fold.js": "DELETED_IN_TARGET", - "/stress/fiat-double-to-int52.js": "DELETED_IN_TARGET", - "/stress/fiat-int32-to-int52.js": "DELETED_IN_TARGET", - "/stress/fiat-value-to-int52-double-path.js": "DELETED_IN_TARGET", - "/stress/finally-for-in.js": "DELETED_IN_TARGET", - "/stress/flatten-oversize-dictionary-object.js": "DELETED_IN_TARGET", - "/stress/flattening-prototype-remove-butterfly.js": "DELETED_IN_TARGET", - "/stress/function-body-to-string-before-parameter-syntax-check.js": "DELETED_IN_TARGET", - "/stress/function-configurable-properties.js": "DELETED_IN_TARGET", - "/stress/function-constructor-reading-from-global-lexical-environment.js": "DELETED_IN_TARGET", - "/stress/function-constructor-semantics.js": "DELETED_IN_TARGET", - "/stress/function-expression-exit.js": "DELETED_IN_TARGET", - "/stress/function-name-scope.js": "DELETED_IN_TARGET", - "/stress/function-reentry-infer-on-self.js": "DELETED_IN_TARGET", - "/stress/function-sinking-no-double-allocate.js": "DELETED_IN_TARGET", - "/stress/function-sinking-osrexit.js": "DELETED_IN_TARGET", - "/stress/function-sinking-put.js": "DELETED_IN_TARGET", - "/stress/function-to-string.js": "DELETED_IN_TARGET", - "/stress/function-toString-arrow.js": "DELETED_IN_TARGET", - "/stress/function-with-defaults-inlining.js": "DELETED_IN_TARGET", - "/stress/function-with-defaults-non-inlining.js": "DELETED_IN_TARGET", - "/stress/fused-jeq-slow.js": "DELETED_IN_TARGET", - "/stress/fused-jeq.js": "DELETED_IN_TARGET", - "/stress/fused-jstricteq-slow.js": "DELETED_IN_TARGET", - "/stress/fused-jstricteq.js": "DELETED_IN_TARGET", - "/stress/fuzz-bug-16399949.js": "DELETED_IN_TARGET", - "/stress/getter-arity.js": "DELETED_IN_TARGET", - "/stress/getter.js": "DELETED_IN_TARGET", - "/stress/global-const-redeclaration-setting/first.js": "DELETED_IN_TARGET", - "/stress/global-const-redeclaration-setting/let.js": "DELETED_IN_TARGET", - "/stress/global-const-redeclaration-setting/second.js": "DELETED_IN_TARGET", - "/stress/global-const-redeclaration-setting/strict.js": "DELETED_IN_TARGET", - "/stress/global-is-finite.js": "DELETED_IN_TARGET", - "/stress/global-is-nan.js": "DELETED_IN_TARGET", - "/stress/global-isNaN-basics.js": "DELETED_IN_TARGET", - "/stress/global-lexical-environment-to-this.js": "DELETED_IN_TARGET", - "/stress/global-lexical-let-no-rhs.js": "DELETED_IN_TARGET", - "/stress/global-lexical-redeclare-variable.js": "DELETED_IN_TARGET", - "/stress/global-lexical-redefine-const.js": "DELETED_IN_TARGET", - "/stress/global-lexical-var-injection.js": "DELETED_IN_TARGET", - "/stress/global-lexical-variable-tdz.js": "DELETED_IN_TARGET", - "/stress/global-lexical-variable-unresolved-property.js": "DELETED_IN_TARGET", - "/stress/global-lexical-variable-with-statement.js": "DELETED_IN_TARGET", - "/stress/global-property-into-variable-get-from-scope.js": "DELETED_IN_TARGET", - "/stress/goofy-function-reentry-incorrect-inference.js": "DELETED_IN_TARGET", - "/stress/has-custom-properties.js": "DELETED_IN_TARGET", - "/stress/has-indexed-property-array-storage.js": "DELETED_IN_TARGET", - "/stress/has-indexed-property-slow-put-array-storage.js": "DELETED_IN_TARGET", - "/stress/has-instance-exception-check.js": "DELETED_IN_TARGET", - "/stress/has-own-property-cache-basics.js": "DELETED_IN_TARGET", - "/stress/has-own-property-called-on-non-object.js": "DELETED_IN_TARGET", - "/stress/has-own-property-name-cache-string-keys.js": "DELETED_IN_TARGET", - "/stress/has-own-property-name-cache-symbol-keys.js": "DELETED_IN_TARGET", - "/stress/has-own-property-name-cache-symbols-and-strings.js": "DELETED_IN_TARGET", - "/stress/have-a-bad-time-with-arguments.js": "DELETED_IN_TARGET", - "/stress/having-a-bad-time-with-derived-arrays.js": "DELETED_IN_TARGET", - "/stress/heap-allocator-allocates-incorrect-size-for-activation.js": "DELETED_IN_TARGET", - "/stress/hoist-get-by-offset-with-control-dependent-inferred-type.js": "DELETED_IN_TARGET", - "/stress/ic-throw-through-optimized-code.js": "DELETED_IN_TARGET", - "/stress/import-tests/cocoa.js": "DELETED_IN_TARGET", - "/stress/import-tests/multiple.js": "DELETED_IN_TARGET", - "/stress/import-tests/multiple2.js": "DELETED_IN_TARGET", - "/stress/import-tests/should.js": "DELETED_IN_TARGET", - "/stress/in-by-id-accessors.js": "DELETED_IN_TARGET", - "/stress/in-by-id-ai.js": "DELETED_IN_TARGET", - "/stress/in-by-id-constant.js": "DELETED_IN_TARGET", - "/stress/in-by-id-custom-values.js": "DELETED_IN_TARGET", - "/stress/in-by-id-match-invalid.js": "DELETED_IN_TARGET", - "/stress/in-by-id-match.js": "DELETED_IN_TARGET", - "/stress/in-by-id-operation.js": "DELETED_IN_TARGET", - "/stress/in-by-id-proxy.js": "DELETED_IN_TARGET", - "/stress/in-ftl-exception-check.js": "DELETED_IN_TARGET", - "/stress/in-miss-variant-merge.js": "DELETED_IN_TARGET", - "/stress/incomplete-unicode-locale.js": "DELETED_IN_TARGET", - "/stress/indirect-call-object-constructor-with-no-arguments.js": "DELETED_IN_TARGET", - "/stress/infer-constant-global-property.js": "DELETED_IN_TARGET", - "/stress/infer-constant-property.js": "DELETED_IN_TARGET", - "/stress/infer-uninitialized-closure-var.js": "DELETED_IN_TARGET", - "/stress/inferred-infinite-loop-that-uses-captured-variables.js": "DELETED_IN_TARGET", - "/stress/inferred-type-table-stale-identifiers.js": "DELETED_IN_TARGET", - "/stress/infinite-loop-that-uses-captured-variables-before-throwing.js": "DELETED_IN_TARGET", - "/stress/infinite-loop-that-uses-captured-variables-but-they-do-not-escape.js": "DELETED_IN_TARGET", - "/stress/infinite-loop-that-uses-captured-variables-with-osr-entry.js": "DELETED_IN_TARGET", - "/stress/infinite-loop-that-uses-captured-variables.js": "DELETED_IN_TARGET", - "/stress/initialize_functions_after_arguments.js": "DELETED_IN_TARGET", - "/stress/injected-numeric-setter-on-prototype.js": "DELETED_IN_TARGET", - "/stress/inline-call-that-doesnt-use-all-args.js": "DELETED_IN_TARGET", - "/stress/inline-call-to-recursive-tail-call.js": "DELETED_IN_TARGET", - "/stress/inline-call-varargs-and-call.js": "DELETED_IN_TARGET", - "/stress/inline-call-varargs.js": "DELETED_IN_TARGET", - "/stress/inline-closure-call.js": "DELETED_IN_TARGET", - "/stress/inline-llint-with-switch.js": "DELETED_IN_TARGET", - "/stress/inline-varargs-get-arguments.js": "DELETED_IN_TARGET", - "/stress/inlined-constructor-this-liveness.js": "DELETED_IN_TARGET", - "/stress/inlined-error-gets-correct-codeblock-for-bytecodeoffset.js": "DELETED_IN_TARGET", - "/stress/inlined-function-this-liveness.js": "DELETED_IN_TARGET", - "/stress/inlined-tail-call-in-inlined-setter-should-not-crash-when-getting-value-profile.js": "DELETED_IN_TARGET", - "/stress/inlining-unreachable-non-tail.js": "DELETED_IN_TARGET", - "/stress/inlining-unreachable.js": "DELETED_IN_TARGET", - "/stress/inserted-recovery-with-set-last-index.js": "DELETED_IN_TARGET", - "/stress/json-stringified-overflow-2.js": "DELETED_IN_TARGET", - "/stress/json-stringified-overflow.js": "DELETED_IN_TARGET", - "/stress/json-stringify-gap-calculation-should-be-after-replacer-check.js": "DELETED_IN_TARGET", - "/stress/json-stringify-getter-call.js": "DELETED_IN_TARGET", - "/stress/json-stringify-with-non-jsarray-array.js": "DELETED_IN_TARGET", - "/stress/jsonp-literal-parser-semicolon-is-not-assignment.js": "DELETED_IN_TARGET", - "/stress/jsonp-program-evaluate-path-must-consider-global-lexical-environment.js": "DELETED_IN_TARGET", - "/stress/keep-checks-when-converting-to-lazy-js-constant-in-strength-reduction.js": "DELETED_IN_TARGET", - "/stress/large-regexp.js": "DELETED_IN_TARGET", - "/stress/many-sunken-locals.js": "DELETED_IN_TARGET", - "/stress/map-set-cse.js": "DELETED_IN_TARGET", - "/stress/math-abs-positive.js": "DELETED_IN_TARGET", - "/stress/math-ceil-arith-rounding-mode.js": "DELETED_IN_TARGET", - "/stress/math-ceil-basics.js": "DELETED_IN_TARGET", - "/stress/math-clz32-basics.js": "DELETED_IN_TARGET", - "/stress/math-exceptions.js": "DELETED_IN_TARGET", - "/stress/math-floor-arith-rounding-mode.js": "DELETED_IN_TARGET", - "/stress/math-floor-basics.js": "DELETED_IN_TARGET", - "/stress/math-log-basics.js": "DELETED_IN_TARGET", - "/stress/math-log-with-constants.js": "DELETED_IN_TARGET", - "/stress/math-max-min-no-arguments.js": "DELETED_IN_TARGET", - "/stress/math-pow-basics.js": "DELETED_IN_TARGET", - "/stress/math-pow-becomes-custom-function.js": "DELETED_IN_TARGET", - "/stress/math-pow-coherency.js": "DELETED_IN_TARGET", - "/stress/math-pow-integer-exponent-fastpath.js": "DELETED_IN_TARGET", - "/stress/math-pow-nan-behaviors.js": "DELETED_IN_TARGET", - "/stress/math-pow-nan-to-zero-spec-type.js": "DELETED_IN_TARGET", - "/stress/math-pow-stable-results.js": "DELETED_IN_TARGET", - "/stress/math-pow-with-constants.js": "DELETED_IN_TARGET", - "/stress/math-pow-with-never-NaN-exponent.js": "DELETED_IN_TARGET", - "/stress/math-round-arith-rounding-mode.js": "DELETED_IN_TARGET", - "/stress/math-round-basics.js": "DELETED_IN_TARGET", - "/stress/math-round-should-not-use-truncate.js": "DELETED_IN_TARGET", - "/stress/math-rounding-infinity.js": "DELETED_IN_TARGET", - "/stress/math-rounding-nan.js": "DELETED_IN_TARGET", - "/stress/math-rounding-negative-zero.js": "DELETED_IN_TARGET", - "/stress/math-sqrt-basics-disable-architecture-specific-optimizations.js": "DELETED_IN_TARGET", - "/stress/math-sqrt-basics.js": "DELETED_IN_TARGET", - "/stress/math-trunc-arith-rounding-mode.js": "DELETED_IN_TARGET", - "/stress/math-trunc-basics.js": "DELETED_IN_TARGET", - "/stress/math-trunc-should-be-truncate.js": "DELETED_IN_TARGET", - "/stress/math-unary-no-arg.js": "DELETED_IN_TARGET", - "/stress/max-boolean-exit.js": "DELETED_IN_TARGET", - "/stress/may-exit-should-be-false-regexp-constant-folding.js": "DELETED_IN_TARGET", - "/stress/method-name.js": "DELETED_IN_TARGET", - "/stress/misaligned-int8-view-byte-offset.js": "DELETED_IN_TARGET", - "/stress/misaligned-int8-view-read.js": "DELETED_IN_TARGET", - "/stress/misaligned-int8-view-write.js": "DELETED_IN_TARGET", - "/stress/misc-is-object-or-null.js": "DELETED_IN_TARGET", - "/stress/miss-variant-merge.js": "DELETED_IN_TARGET", - "/stress/model-effects-properly-of-spread-over-phantom-create-rest.js": "DELETED_IN_TARGET", - "/stress/modify-map-during-iteration.js": "DELETED_IN_TARGET", - "/stress/module-namespace-access-change.js": "DELETED_IN_TARGET", - "/stress/module-namespace-access-non-constant.js": "DELETED_IN_TARGET", - "/stress/module-namespace-access-poly.js": "DELETED_IN_TARGET", - "/stress/module-namespace-access-transitive-exports.js": "DELETED_IN_TARGET", - "/stress/module-namespace-access.js": "DELETED_IN_TARGET", - "/stress/modules-syntax-error-with-names.js": "DELETED_IN_TARGET", - "/stress/modules-syntax-error.js": "DELETED_IN_TARGET", - "/stress/modules-syntax.js": "DELETED_IN_TARGET", - "/stress/mul-boolean-exit.js": "DELETED_IN_TARGET", - "/stress/multi-get-by-offset-dce.js": "DELETED_IN_TARGET", - "/stress/multi-get-by-offset-hoist-around-structure-check.js": "DELETED_IN_TARGET", - "/stress/multi-get-by-offset-proto-and-self.js": "DELETED_IN_TARGET", - "/stress/multi-get-by-offset-proto-or-unset.js": "DELETED_IN_TARGET", - "/stress/multi-get-by-offset-proto-self-or-unset.js": "DELETED_IN_TARGET", - "/stress/multi-get-by-offset-self-or-proto.js": "DELETED_IN_TARGET", - "/stress/multi-get-by-offset-self-or-unset.js": "DELETED_IN_TARGET", - "/stress/multi-put-by-offset-multiple-transitions.js": "DELETED_IN_TARGET", - "/stress/multi-put-by-offset-reallocation-butterfly-cse.js": "DELETED_IN_TARGET", - "/stress/multi-put-by-offset-reallocation-cases.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/eighth.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/fifth.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/first.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/fourth.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/ninth.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/second.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/seventh.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/sixth.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/tenth.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redeclare-variable/third.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redefine-const/first.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-redefine-const/second.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-variable-tdz/first.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-variable-tdz/second.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-variable-unresolved-property/first.js": "DELETED_IN_TARGET", - "/stress/multiple-files-tests/global-lexical-variable-unresolved-property/second.js": "DELETED_IN_TARGET", - "/stress/object-from-entries.js": "DELETED_IN_TARGET", - "/stress/pow-basics.js": "DELETED_IN_TARGET", - "/stress/pow-coherency.js": "DELETED_IN_TARGET", - "/stress/pow-evaluation-order.js": "DELETED_IN_TARGET", - "/stress/pow-expects-update-expression-on-lhs.js": "DELETED_IN_TARGET", - "/stress/pow-integer-exponent-fastpath.js": "DELETED_IN_TARGET", - "/stress/pow-nan-behaviors.js": "DELETED_IN_TARGET", - "/stress/pow-no-result.js": "DELETED_IN_TARGET", - "/stress/pow-simple.js": "DELETED_IN_TARGET", - "/stress/pow-stable-results.js": "DELETED_IN_TARGET", - "/stress/pow-to-number-should-be-executed-in-code-side.js": "DELETED_IN_TARGET", - "/stress/pow-with-constants.js": "DELETED_IN_TARGET", - "/stress/pow-with-never-NaN-exponent.js": "DELETED_IN_TARGET", - "/stress/primitive-poly-proto.js": "DELETED_IN_TARGET", - "/stress/proxy-all-the-parameters.js": "DELETED_IN_TARGET", - "/stress/proxy-and-json-stringify.js": "DELETED_IN_TARGET", - "/stress/proxy-and-typed-array.js": "DELETED_IN_TARGET", - "/stress/proxy-array-prototype-methods.js": "DELETED_IN_TARGET", - "/stress/proxy-basic.js": "DELETED_IN_TARGET", - "/stress/proxy-call-apply-handler-to-this.js": "DELETED_IN_TARGET", - "/stress/proxy-call.js": "DELETED_IN_TARGET", - "/stress/proxy-class.js": "DELETED_IN_TARGET", - "/stress/proxy-construct.js": "DELETED_IN_TARGET", - "/stress/proxy-define-own-property.js": "DELETED_IN_TARGET", - "/stress/proxy-delete.js": "DELETED_IN_TARGET", - "/stress/proxy-get-and-set-recursion-stack-overflow.js": "DELETED_IN_TARGET", - "/stress/proxy-get-own-property.js": "DELETED_IN_TARGET", - "/stress/proxy-get-prototype-of.js": "DELETED_IN_TARGET", - "/stress/proxy-get-set-correct-receiver.js": "DELETED_IN_TARGET", - "/stress/proxy-get-with-primitive-receiver.js": "DELETED_IN_TARGET", - "/stress/proxy-has-property.js": "DELETED_IN_TARGET", - "/stress/proxy-in-proto-chain.js": "DELETED_IN_TARGET", - "/stress/proxy-instanceof.js": "DELETED_IN_TARGET", - "/stress/proxy-is-array.js": "DELETED_IN_TARGET", - "/stress/proxy-is-extensible.js": "DELETED_IN_TARGET", - "/stress/proxy-json.js": "DELETED_IN_TARGET", - "/stress/proxy-of-a-proxy.js": "DELETED_IN_TARGET", - "/stress/proxy-own-keys.js": "DELETED_IN_TARGET", - "/stress/proxy-prevent-extensions.js": "DELETED_IN_TARGET", - "/stress/proxy-property-descriptor.js": "DELETED_IN_TARGET", - "/stress/proxy-returning-incomplete-property-descriptor.js": "DELETED_IN_TARGET", - "/stress/proxy-revoke.js": "DELETED_IN_TARGET", - "/stress/proxy-set-prototype-of.js": "DELETED_IN_TARGET", - "/stress/proxy-set.js": "DELETED_IN_TARGET", - "/stress/proxy-stack-overflow-exceptions.js": "DELETED_IN_TARGET", - "/stress/proxy-underscore-proto.js": "DELETED_IN_TARGET", - "/stress/proxy-with-private-symbols.js": "DELETED_IN_TARGET", - "/stress/proxy-with-statement.js": "DELETED_IN_TARGET", - "/stress/proxy-with-unbalanced-getter-setter.js": "DELETED_IN_TARGET", - "/stress/regress-132147.js": "DELETED_IN_TARGET", - "/stress/regress-135155.js": "DELETED_IN_TARGET", - "/stress/regress-141489.js": "DELETED_IN_TARGET", - "/stress/regress-141883.js": "DELETED_IN_TARGET", - "/stress/regress-148564.js": "DELETED_IN_TARGET", - "/stress/regress-151324.js": "DELETED_IN_TARGET", - "/stress/regress-153486.js": "DELETED_IN_TARGET", - "/stress/regress-153816.js": "DELETED_IN_TARGET", - "/stress/regress-156765.js": "DELETED_IN_TARGET", - "/stress/regress-157322.js": "DELETED_IN_TARGET", - "/stress/regress-157595.js": "DELETED_IN_TARGET", - "/stress/regress-158411.js": "DELETED_IN_TARGET", - "/stress/regress-158437.js": "DELETED_IN_TARGET", - "/stress/regress-159537.js": "DELETED_IN_TARGET", - "/stress/regress-159744.js": "DELETED_IN_TARGET", - "/stress/regress-159779-1.js": "DELETED_IN_TARGET", - "/stress/regress-159779-2.js": "DELETED_IN_TARGET", - "/stress/regress-159954.js": "DELETED_IN_TARGET", - "/stress/regress-160329.js": "DELETED_IN_TARGET", - "/stress/regress-160749.js": "DELETED_IN_TARGET", - "/stress/regress-161995.js": "DELETED_IN_TARGET", - "/stress/regress-163748.js": "DELETED_IN_TARGET", - "/stress/regress-164081.js": "DELETED_IN_TARGET", - "/stress/regress-166812.js": "DELETED_IN_TARGET", - "/stress/regress-168546.js": "DELETED_IN_TARGET", - "/stress/regress-169445.js": "DELETED_IN_TARGET", - "/stress/regress-169783.js": "DELETED_IN_TARGET", - "/stress/regress-169889-array-concat.js": "DELETED_IN_TARGET", - "/stress/regress-169889-array-concat1.js": "DELETED_IN_TARGET", - "/stress/regress-169889-array-slice.js": "DELETED_IN_TARGET", - "/stress/regress-169941.js": "DELETED_IN_TARGET", - "/stress/regress-170251.js": "DELETED_IN_TARGET", - "/stress/regress-170412.js": "DELETED_IN_TARGET", - "/stress/regress-170473.js": "DELETED_IN_TARGET", - "/stress/regress-170661.js": "DELETED_IN_TARGET", - "/stress/regress-170896-with-contiguous-shape-profile.js": "DELETED_IN_TARGET", - "/stress/regress-170896-with-double-shape-profile.js": "DELETED_IN_TARGET", - "/stress/regress-170896-with-int32-shape-profile.js": "DELETED_IN_TARGET", - "/stress/regress-170973.js": "DELETED_IN_TARGET", - "/stress/regress-170989.js": "DELETED_IN_TARGET", - "/stress/regress-170990.js": "DELETED_IN_TARGET", - "/stress/regress-171079.js": "DELETED_IN_TARGET", - "/stress/regress-172346.js": "DELETED_IN_TARGET", - "/stress/regress-172383.js": "DELETED_IN_TARGET", - "/stress/regress-172548.patch": "DELETED_IN_TARGET", - "/stress/regress-173035.js": "DELETED_IN_TARGET", - "/stress/regress-173053.js": "DELETED_IN_TARGET", - "/stress/regress-173321.js": "DELETED_IN_TARGET", - "/stress/regress-174044.js": "DELETED_IN_TARGET", - "/stress/regress-174948.js": "DELETED_IN_TARGET", - "/stress/regress-176485.js": "DELETED_IN_TARGET", - "/stress/regress-177423.js": "DELETED_IN_TARGET", - "/stress/regress-177570.js": "DELETED_IN_TARGET", - "/stress/regress-177584.js": "DELETED_IN_TARGET", - "/stress/regress-177600.js": "DELETED_IN_TARGET", - "/stress/regress-178385.js": "DELETED_IN_TARGET", - "/stress/regress-178386.js": "DELETED_IN_TARGET", - "/stress/regress-178420.js": "DELETED_IN_TARGET", - "/stress/regress-178890.js": "DELETED_IN_TARGET", - "/stress/regress-179140.js": "DELETED_IN_TARGET", - "/stress/regress-179185.js": "DELETED_IN_TARGET", - "/stress/regress-179355.js": "DELETED_IN_TARGET", - "/stress/regress-179562.js": "DELETED_IN_TARGET", - "/stress/regress-180219.js": "DELETED_IN_TARGET", - "/stress/regress-180761.js": "DELETED_IN_TARGET", - "/stress/regress-181388.js": "DELETED_IN_TARGET", - "/stress/regress-182419.js": "DELETED_IN_TARGET", - "/stress/regress-185786.js": "DELETED_IN_TARGET", - "/stress/regress-185888.js": "DELETED_IN_TARGET", - "/stress/regress-185896.js": "DELETED_IN_TARGET", - "/stress/regress-185995.js": "DELETED_IN_TARGET", - "/stress/regress-186943.js": "DELETED_IN_TARGET", - "/stress/regress-187010.js": "DELETED_IN_TARGET", - "/stress/regress-187060.js": "DELETED_IN_TARGET", - "/stress/regress-187074.js": "DELETED_IN_TARGET", - "/stress/regress-187091.js": "DELETED_IN_TARGET", - "/stress/regress-187543-2.js": "DELETED_IN_TARGET", - "/stress/regress-187543-3.js": "DELETED_IN_TARGET", - "/stress/regress-187543.js": "DELETED_IN_TARGET", - "/stress/regress-188065.js": "DELETED_IN_TARGET", - "/stress/regress-188577.js": "DELETED_IN_TARGET", - "/stress/regress-189124.js": "DELETED_IN_TARGET", - "/stress/regress-189132.js": "DELETED_IN_TARGET", - "/stress/regress-189184.js": "DELETED_IN_TARGET", - "/stress/regress-189227-watchdog-on-infinite-loop.js": "DELETED_IN_TARGET", - "/stress/resources/binary-op-test.js": "DELETED_IN_TARGET", - "/stress/resources/binary-op-values.js": "DELETED_IN_TARGET", - "/stress/resources/error-module.js": "DELETED_IN_TARGET", - "/stress/resources/literal-parser-test-case.js": "DELETED_IN_TARGET", - "/stress/resources/module-namespace-access-transitive-exports-2.js": "DELETED_IN_TARGET", - "/stress/resources/module-namespace-access-transitive-exports.js": "DELETED_IN_TARGET", - "/stress/resources/module-namespace-access.js": "DELETED_IN_TARGET", - "/stress/resources/standalone-pre.js": "DELETED_IN_TARGET", - "/stress/resources/typedarray-constructor-helper-functions.js": "DELETED_IN_TARGET", - "/stress/resources/typedarray-test-helper-functions.js": "DELETED_IN_TARGET", - "/stress/resources/unary-op-test.js": "DELETED_IN_TARGET", - "/stress/reverse-with-immutable-butterfly.js": "DELETED_IN_TARGET", - "/stress/sampling-profiler/samplingProfiler.js": "DELETED_IN_TARGET", - "/stress/set-add-cse.js": "DELETED_IN_TARGET", - "/stress/setter-same-base-and-rhs-invalid-assertion-inside-access-case.js": "DELETED_IN_TARGET", - "/stress/setter.js": "DELETED_IN_TARGET", - "/stress/shadow-chicken-disabled.js": "DELETED_IN_TARGET", - "/stress/shadow-chicken-reading-from-scope-after-ftl-osr-exit-bytecode-liveness.js": "DELETED_IN_TARGET", - "/stress/string-to-string.js": "DELETED_IN_TARGET", - "/stress/string-value-of.js": "DELETED_IN_TARGET", - "/stress/weakmap-set-change-get.js": "DELETED_IN_TARGET", - "/stress/weakset-add-change-get.js": "DELETED_IN_TARGET", - "/stress/zero-to-string.js": "DELETED_IN_TARGET", - "/wasm/README.md": "DELETED_IN_TARGET", - "/wasm/function-tests/add-12.js": "DELETED_IN_TARGET", - "/wasm/function-tests/basic-element.js": "DELETED_IN_TARGET", - "/wasm/function-tests/br-as-return.js": "DELETED_IN_TARGET", - "/wasm/function-tests/br-if-as-return.js": "DELETED_IN_TARGET", - "/wasm/function-tests/br-if-loop-less-than.js": "DELETED_IN_TARGET", - "/wasm/function-tests/br-table-as-return.js": "DELETED_IN_TARGET", - "/wasm/function-tests/brTableAsIf.js": "DELETED_IN_TARGET", - "/wasm/function-tests/brTableManyValues.js": "DELETED_IN_TARGET", - "/wasm/function-tests/brTableWithLoop.js": "DELETED_IN_TARGET", - "/wasm/function-tests/context-switch.js": "DELETED_IN_TARGET", - "/wasm/function-tests/dead-call.js": "DELETED_IN_TARGET", - "/wasm/function-tests/double-instance.js": "DELETED_IN_TARGET", - "/wasm/function-tests/exceptions.js": "DELETED_IN_TARGET", - "/wasm/function-tests/f32-const.js": "DELETED_IN_TARGET", - "/wasm/function-tests/f64-const.js": "DELETED_IN_TARGET", - "/wasm/function-tests/factorial.js": "DELETED_IN_TARGET", - "/wasm/function-tests/float-sub.js": "DELETED_IN_TARGET", - "/wasm/function-tests/function-import-return-value.js": "DELETED_IN_TARGET", - "/wasm/function-tests/grow-memory-2.js": "DELETED_IN_TARGET", - "/wasm/function-tests/grow-memory-3.js": "DELETED_IN_TARGET", - "/wasm/function-tests/grow-memory-4.js": "DELETED_IN_TARGET", - "/wasm/function-tests/grow-memory-cause-gc.js": "DELETED_IN_TARGET", - "/wasm/function-tests/grow-memory.js": "DELETED_IN_TARGET", - "/wasm/function-tests/i32-const.js": "DELETED_IN_TARGET", - "/wasm/function-tests/i32-load.js": "DELETED_IN_TARGET", - "/wasm/function-tests/i32-load8-s.js": "DELETED_IN_TARGET", - "/wasm/function-tests/i64-from-js-exceptions.js": "DELETED_IN_TARGET", - "/wasm/function-tests/if-no-else-non-void.js": "DELETED_IN_TARGET", - "/wasm/function-tests/invalid-duplicate-export.js": "DELETED_IN_TARGET", - "/wasm/function-tests/load-offset.js": "DELETED_IN_TARGET", - "/wasm/function-tests/loop-mult.js": "DELETED_IN_TARGET", - "/wasm/function-tests/loop-sum.js": "DELETED_IN_TARGET", - "/wasm/function-tests/many-args-tail-call-sp-restored.js": "DELETED_IN_TARGET", - "/wasm/function-tests/many-arguments-to-function.js": "DELETED_IN_TARGET", - "/wasm/function-tests/memory-access-past-4gib.js": "DELETED_IN_TARGET", - "/wasm/function-tests/memory-alignment.js": "DELETED_IN_TARGET", - "/wasm/function-tests/memory-grow-invalid.js": "DELETED_IN_TARGET", - "/wasm/function-tests/memory-import-and-grow.js": "DELETED_IN_TARGET", - "/wasm/function-tests/memory-many.js": "DELETED_IN_TARGET", - "/wasm/function-tests/memory-multiagent.js": "DELETED_IN_TARGET", - "/wasm/function-tests/memory-reuse.js": "DELETED_IN_TARGET", - "/wasm/function-tests/memory-section-and-import.js": "DELETED_IN_TARGET", - "/wasm/function-tests/nameSection.js": "DELETED_IN_TARGET", - "/wasm/function-tests/ret5.js": "DELETED_IN_TARGET", - "/wasm/function-tests/rotl.js": "DELETED_IN_TARGET", - "/wasm/function-tests/rotr.js": "DELETED_IN_TARGET", - "/wasm/function-tests/shl.js": "DELETED_IN_TARGET", - "/wasm/function-tests/shr-s.js": "DELETED_IN_TARGET", - "/wasm/function-tests/shr-u.js": "DELETED_IN_TARGET", - "/wasm/function-tests/stack-overflow.js": "DELETED_IN_TARGET", - "/wasm/function-tests/stack-trace.js": "DELETED_IN_TARGET", - "/wasm/function-tests/struct.js": "DELETED_IN_TARGET", - "/wasm/function-tests/table-basic-2.js": "DELETED_IN_TARGET", - "/wasm/function-tests/table-basic.js": "DELETED_IN_TARGET", - "/wasm/function-tests/trap-after-cross-instance-call.js": "DELETED_IN_TARGET", - "/wasm/function-tests/trap-from-start-async.js": "DELETED_IN_TARGET", - "/wasm/function-tests/trap-from-start.js": "DELETED_IN_TARGET", - "/wasm/function-tests/trap-load-2.js": "DELETED_IN_TARGET", - "/wasm/function-tests/trap-load.js": "DELETED_IN_TARGET", - "/wasm/function-tests/trap-store-2.js": "DELETED_IN_TARGET", - "/wasm/function-tests/trap-store.js": "DELETED_IN_TARGET", - "/wasm/function-tests/void-argument-type-should-be-a-validation-error.js": "DELETED_IN_TARGET", - "/wasm/fuzz/export-function.js": "DELETED_IN_TARGET", - "/wasm/fuzz/memory.js": "DELETED_IN_TARGET", - "/wasm/js-api/Instance.imports.exports.unicode.js": "DELETED_IN_TARGET", - "/wasm/js-api/Module-compile.js": "DELETED_IN_TARGET", - "/wasm/js-api/Module.customSection.js": "DELETED_IN_TARGET", - "/wasm/js-api/Module.exports.js": "DELETED_IN_TARGET", - "/wasm/js-api/Module.imports.js": "DELETED_IN_TARGET", - "/wasm/js-api/call-indirect.js": "DELETED_IN_TARGET", - "/wasm/js-api/dont-mmap-zero-byte-memory.js": "DELETED_IN_TARGET", - "/wasm/js-api/element-data.js": "DELETED_IN_TARGET", - "/wasm/js-api/element.js": "DELETED_IN_TARGET", - "/wasm/js-api/export-arity.js": "DELETED_IN_TARGET", - "/wasm/js-api/export-void-is-undef.js": "DELETED_IN_TARGET", - "/wasm/js-api/extension-MemoryMode.js": "DELETED_IN_TARGET", - "/wasm/js-api/global-error.js": "DELETED_IN_TARGET", - "/wasm/js-api/global-external-init-from-import.js": "DELETED_IN_TARGET", - "/wasm/js-api/global-internal-init-from-import.js": "DELETED_IN_TARGET", - "/wasm/js-api/global-mutate.js": "DELETED_IN_TARGET", - "/wasm/js-api/globals-export.js": "DELETED_IN_TARGET", - "/wasm/js-api/globals-import.js": "DELETED_IN_TARGET", - "/wasm/js-api/memory-grow.js": "DELETED_IN_TARGET", - "/wasm/js-api/table.js": "DELETED_IN_TARGET", - "/wasm/js-api/test_Data.js": "DELETED_IN_TARGET", - "/wasm/js-api/test_Instance.js": "DELETED_IN_TARGET", - "/wasm/js-api/test_Module.js": "DELETED_IN_TARGET", - "/wasm/js-api/test_Start.js": "DELETED_IN_TARGET", - "/wasm/js-api/test_basic_api.js": "DELETED_IN_TARGET", - "/wasm/js-api/test_memory.js": "DELETED_IN_TARGET", - "/wasm/js-api/test_memory_constructor.js": "DELETED_IN_TARGET", - "/wasm/js-api/unique-signature.js": "DELETED_IN_TARGET", - "/wasm/js-api/validate.js": "DELETED_IN_TARGET", - "/wasm/js-api/version.js": "DELETED_IN_TARGET", - "/wasm/js-api/wasm-to-wasm-bad-signature.js": "DELETED_IN_TARGET", - "/wasm/js-api/wasm-to-wasm.js": "DELETED_IN_TARGET", - "/wasm/js-api/web-assembly-compile-parallel.js": "DELETED_IN_TARGET", - "/wasm/js-api/web-assembly-function.js": "DELETED_IN_TARGET", - "/wasm/js-api/web-assembly-instantiate-parallel.js": "DELETED_IN_TARGET", - "/wasm/js-api/web-assembly-instantiate.js": "DELETED_IN_TARGET", - "/wasm/js-api/wrapper-function.js": "DELETED_IN_TARGET", - "/wasm/lowExecutableMemory/executable-memory-oom.js": "DELETED_IN_TARGET", - "/wasm/lowExecutableMemory/exports-oom.js": "DELETED_IN_TARGET", - "/wasm/lowExecutableMemory/imports-oom.js": "DELETED_IN_TARGET", - "/wasm/regress/175693.js": "DELETED_IN_TARGET", - "/wasm/regress/183342.js": "DELETED_IN_TARGET", - "/wasm/regress/regress-189185.js": "DELETED_IN_TARGET", - "/wasm/self-test/test_BuilderJSON.js": "DELETED_IN_TARGET", - "/wasm/self-test/test_BuilderWebAssembly.js": "DELETED_IN_TARGET", - "/wasm/spec-harness/index.js": "DELETED_IN_TARGET", - "/wasm/spec-harness/wasm-module-builder.js": "DELETED_IN_TARGET", - "/wasm/spec-tests/jsapi.js": "DELETED_IN_TARGET", - "/wasm/stress/oom.js": "DELETED_IN_TARGET", - "/wasm/tier-up/js-to-wasm.js": "DELETED_IN_TARGET", - "/wasm/tier-up/wasm-to-wasm.js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array.prototype.copyWithin.js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array.prototype.entries.js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array.prototype.fill.js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array.prototype.find.js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array.prototype.findIndex.js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array.prototype.keys.js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array.prototype.values.js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array.prototype[Symbol.iterator].js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array.prototype[Symbol.unscopables].js": "DELETED_IN_TARGET", - "/es6/Array.prototype_methods_Array_iterator_prototype_chain.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_Array.from.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_Array.isArray_support.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_Array.of.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_Array.prototype.concat.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_Array.prototype.filter.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_Array.prototype.map.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_Array.prototype.slice.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_Array.prototype.splice.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_correct_prototype_chain.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_length_property_accessing.js": "DELETED_IN_TARGET", - "/es6/Array_is_subclassable_length_property_setting.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.from_array-like_objects.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.from_generator_instances.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.from_generic_iterables.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.from_instances_of_generic_iterables.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.from_iterator_closing.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.from_map_function_array-like_objects.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.from_map_function_generator_instances.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.from_map_function_generic_iterables.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.from_map_function_instances_of_iterables.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array.of.js": "DELETED_IN_TARGET", - "/es6/Array_static_methods_Array[Symbol.species].js": "DELETED_IN_TARGET", - "/es6/Function_is_subclassable_Function.prototype.apply.js": "DELETED_IN_TARGET", - "/es6/Function_is_subclassable_Function.prototype.bind.js": "DELETED_IN_TARGET", - "/es6/Function_is_subclassable_Function.prototype.call.js": "DELETED_IN_TARGET", - "/es6/Function_is_subclassable_can_be_called.js": "DELETED_IN_TARGET", - "/es6/Function_is_subclassable_can_be_used_with_new.js": "DELETED_IN_TARGET", - "/es6/Function_is_subclassable_correct_prototype_chain.js": "DELETED_IN_TARGET", - "/es6/HTML-style_comments.js": "DELETED_IN_TARGET", - "/es6/Map_Map.prototype.clear.js": "DELETED_IN_TARGET", - "/es6/Map_Map.prototype.delete.js": "DELETED_IN_TARGET", - "/es6/Map_Map.prototype.entries.js": "DELETED_IN_TARGET", - "/es6/Map_Map.prototype.forEach.js": "DELETED_IN_TARGET", - "/es6/Map_Map.prototype.keys.js": "DELETED_IN_TARGET", - "/es6/Map_Map.prototype.set_returns_this.js": "DELETED_IN_TARGET", - "/es6/Map_Map.prototype.size.js": "DELETED_IN_TARGET", - "/es6/Map_Map.prototype.values.js": "DELETED_IN_TARGET", - "/es6/Map_Map.prototype[Symbol.iterator].js": "DELETED_IN_TARGET", - "/es6/Map_Map[Symbol.species].js": "DELETED_IN_TARGET", - "/es6/Map_Map_iterator_prototype_chain.js": "DELETED_IN_TARGET", - "/es6/Map_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/Map_constructor_accepts_null.js": "DELETED_IN_TARGET", - "/es6/Map_constructor_arguments.js": "DELETED_IN_TARGET", - "/es6/Map_constructor_invokes_set.js": "DELETED_IN_TARGET", - "/es6/Map_constructor_requires_new.js": "DELETED_IN_TARGET", - "/es6/Map_iterator_closing.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.acosh.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.asinh.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.atanh.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.cbrt.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.clz32.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.cosh.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.expm1.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.fround.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.hypot.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.imul.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.log10.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.log1p.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.log2.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.sign.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.sinh.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.tanh.js": "DELETED_IN_TARGET", - "/es6/Math_methods_Math.trunc.js": "DELETED_IN_TARGET", - "/es6/Number_properties_Number.EPSILON.js": "DELETED_IN_TARGET", - "/es6/Number_properties_Number.MAX_SAFE_INTEGER.js": "DELETED_IN_TARGET", - "/es6/Number_properties_Number.MIN_SAFE_INTEGER.js": "DELETED_IN_TARGET", - "/es6/Number_properties_Number.isFinite.js": "DELETED_IN_TARGET", - "/es6/Number_properties_Number.isInteger.js": "DELETED_IN_TARGET", - "/es6/Number_properties_Number.isNaN.js": "DELETED_IN_TARGET", - "/es6/Number_properties_Number.isSafeInteger.js": "DELETED_IN_TARGET", - "/es6/Object.prototype.__proto___absent_from_Object.createnull.js": "DELETED_IN_TARGET", - "/es6/Object.prototype.__proto___correct_property_descriptor.js": "DELETED_IN_TARGET", - "/es6/Object.prototype.__proto___get_prototype.js": "DELETED_IN_TARGET", - "/es6/Object.prototype.__proto___present_in_Object.getOwnPropertyNames.js": "DELETED_IN_TARGET", - "/es6/Object.prototype.__proto___present_in_hasOwnProperty.js": "DELETED_IN_TARGET", - "/es6/Object.prototype.__proto___set_prototype.js": "DELETED_IN_TARGET", - "/es6/Object_static_methods_Object.assign.js": "DELETED_IN_TARGET", - "/es6/Object_static_methods_Object.getOwnPropertySymbols.js": "DELETED_IN_TARGET", - "/es6/Object_static_methods_Object.is.js": "DELETED_IN_TARGET", - "/es6/Object_static_methods_Object.setPrototypeOf.js": "DELETED_IN_TARGET", - "/es6/Promise_Promise.all.js": "DELETED_IN_TARGET", - "/es6/Promise_Promise.all_generic_iterables.js": "DELETED_IN_TARGET", - "/es6/Promise_Promise.race.js": "DELETED_IN_TARGET", - "/es6/Promise_Promise.race_generic_iterables.js": "DELETED_IN_TARGET", - "/es6/Promise_Promise[Symbol.species].js": "DELETED_IN_TARGET", - "/es6/Promise_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/Promise_constructor_requires_new.js": "DELETED_IN_TARGET", - "/es6/Promise_is_subclassable_Promise.all.js": "DELETED_IN_TARGET", - "/es6/Promise_is_subclassable_Promise.race.js": "DELETED_IN_TARGET", - "/es6/Promise_is_subclassable_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/Promise_is_subclassable_correct_prototype_chain.js": "DELETED_IN_TARGET", - "/es6/Proxy_Array.isArray_support.js": "DELETED_IN_TARGET", - "/es6/Proxy_Proxy.revocable.js": "DELETED_IN_TARGET", - "/es6/Proxy_apply_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_construct_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_constructor_requires_new.js": "DELETED_IN_TARGET", - "/es6/Proxy_defineProperty_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_deleteProperty_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_enumerate_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_getOwnPropertyDescriptor_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_getPrototypeOf_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_get_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_get_handler_instances_of_proxies.js": "DELETED_IN_TARGET", - "/es6/Proxy_has_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_has_handler_instances_of_proxies.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_defineProperty_calls_SetIntegrityLevel.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_defineProperty_calls_[[Set]].js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Function.prototype.bind.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.assign.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.prototype.hasOwnProperty.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_getOwnPropertyDescriptor_calls_[[Set]].js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_get_calls_Array.from.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_get_calls_IteratorComplete_IteratorValue.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_get_calls_Object.defineProperties.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_get_calls_Promise_resolve_functions.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_get_calls_String.raw.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_get_calls_ToPrimitive.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_get_calls_ToPropertyDescriptor.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_ownKeys_calls_SerializeJSONObject.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_ownKeys_calls_SetIntegrityLevel.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_ownKeys_calls_TestIntegrityLevel.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_set_calls_Array.from.js": "DELETED_IN_TARGET", - "/es6/Proxy_internal_set_calls_Array.of.js": "DELETED_IN_TARGET", - "/es6/Proxy_isExtensible_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_ownKeys_duplicates.js": "DELETED_IN_TARGET", - "/es6/Proxy_ownKeys_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_preventExtensions_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_setPrototypeOf_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_set_handler.js": "DELETED_IN_TARGET", - "/es6/Proxy_set_handler_instances_of_proxies.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.apply.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.construct.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.construct_creates_instance_from_newTarget_argument.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.construct_sets_new.target_meta_property.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.defineProperty.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.deleteProperty.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.enumerate.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.get.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.getOwnPropertyDescriptor.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.getPrototypeOf.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.has.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.isExtensible.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.ownKeys_string_keys.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.ownKeys_symbol_keys.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.preventExtensions.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.set.js": "DELETED_IN_TARGET", - "/es6/Reflect_Reflect.setPrototypeOf.js": "DELETED_IN_TARGET", - "/es6/RegExp.prototype.compile.js": "DELETED_IN_TARGET", - "/es6/RegExp.prototype_properties_RegExp.prototype.flags.js": "DELETED_IN_TARGET", - "/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.match].js": "DELETED_IN_TARGET", - "/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.replace].js": "DELETED_IN_TARGET", - "/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.search].js": "DELETED_IN_TARGET", - "/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.split].js": "DELETED_IN_TARGET", - "/es6/RegExp.prototype_properties_RegExp[Symbol.species].js": "DELETED_IN_TARGET", - "/es6/RegExp_is_subclassable_RegExp.prototype.exec.js": "DELETED_IN_TARGET", - "/es6/RegExp_is_subclassable_RegExp.prototype.test.js": "DELETED_IN_TARGET", - "/es6/RegExp_is_subclassable_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/RegExp_is_subclassable_correct_prototype_chain.js": "DELETED_IN_TARGET", - "/es6/RegExp_syntax_extensions_hyphens_in_character_sets.js": "DELETED_IN_TARGET", - "/es6/RegExp_syntax_extensions_incomplete_patterns_and_quantifiers.js": "DELETED_IN_TARGET", - "/es6/RegExp_syntax_extensions_invalid_Unicode_escapes.js": "DELETED_IN_TARGET", - "/es6/RegExp_syntax_extensions_invalid_backreferences_become_octal_escapes.js": "DELETED_IN_TARGET", - "/es6/RegExp_syntax_extensions_invalid_character_escapes.js": "DELETED_IN_TARGET", - "/es6/RegExp_syntax_extensions_invalid_control-character_escapes.js": "DELETED_IN_TARGET", - "/es6/RegExp_syntax_extensions_invalid_hexadecimal_escapes.js": "DELETED_IN_TARGET", - "/es6/RegExp_syntax_extensions_octal_escape_sequences.js": "DELETED_IN_TARGET", - "/es6/RegExp_y_and_u_flags_u_flag.js": "DELETED_IN_TARGET", - "/es6/RegExp_y_and_u_flags_u_flag_Unicode_code_point_escapes.js": "DELETED_IN_TARGET", - "/es6/RegExp_y_and_u_flags_y_flag.js": "DELETED_IN_TARGET", - "/es6/RegExp_y_and_u_flags_y_flag_lastIndex.js": "DELETED_IN_TARGET", - "/es6/Set_Set.prototype.add_returns_this.js": "DELETED_IN_TARGET", - "/es6/Set_Set.prototype.clear.js": "DELETED_IN_TARGET", - "/es6/Set_Set.prototype.delete.js": "DELETED_IN_TARGET", - "/es6/Set_Set.prototype.entries.js": "DELETED_IN_TARGET", - "/es6/Set_Set.prototype.forEach.js": "DELETED_IN_TARGET", - "/es6/Set_Set.prototype.keys.js": "DELETED_IN_TARGET", - "/es6/Set_Set.prototype.size.js": "DELETED_IN_TARGET", - "/es6/Set_Set.prototype.values.js": "DELETED_IN_TARGET", - "/es6/Set_Set.prototype[Symbol.iterator].js": "DELETED_IN_TARGET", - "/es6/Set_Set[Symbol.species].js": "DELETED_IN_TARGET", - "/es6/Set_Set_iterator_prototype_chain.js": "DELETED_IN_TARGET", - "/es6/Set_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/Set_constructor_accepts_null.js": "DELETED_IN_TARGET", - "/es6/Set_constructor_arguments.js": "DELETED_IN_TARGET", - "/es6/Set_constructor_invokes_add.js": "DELETED_IN_TARGET", - "/es6/Set_constructor_requires_new.js": "DELETED_IN_TARGET", - "/es6/Set_iterator_closing.js": "DELETED_IN_TARGET", - "/es6/String.prototype_HTML_methods_existence.js": "DELETED_IN_TARGET", - "/es6/String.prototype_HTML_methods_quotes_in_arguments_are_escaped.js": "DELETED_IN_TARGET", - "/es6/String.prototype_HTML_methods_tags_names_are_lowercase.js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String.prototype.codePointAt.js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String.prototype.endsWith.js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String.prototype.includes.js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String.prototype.normalize.js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String.prototype.padEnd.js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String.prototype.padStart.js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String.prototype.repeat.js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String.prototype.startsWith.js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String.prototype[Symbol.iterator].js": "DELETED_IN_TARGET", - "/es6/String.prototype_methods_String_iterator_prototype_chain.js": "DELETED_IN_TARGET", - "/es6/String_static_methods_String.fromCodePoint.js": "DELETED_IN_TARGET", - "/es6/String_static_methods_String.raw.js": "DELETED_IN_TARGET", - "/es6/Symbol_Object.defineProperty_support.js": "DELETED_IN_TARGET", - "/es6/Symbol_Objectsymbol.js": "DELETED_IN_TARGET", - "/es6/Symbol_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/Symbol_can_convert_with_String.js": "DELETED_IN_TARGET", - "/es6/Symbol_cannot_coerce_to_string_or_number.js": "DELETED_IN_TARGET", - "/es6/Symbol_global_symbol_registry.js": "DELETED_IN_TARGET", - "/es6/Symbol_new_Symbol_throws.js": "DELETED_IN_TARGET", - "/es6/Symbol_symbol_keys_are_hidden_to_pre-ES6_code.js": "DELETED_IN_TARGET", - "/es6/Symbol_typeof_support.js": "DELETED_IN_TARGET", - "/es6/WeakMap_WeakMap.prototype.delete.js": "DELETED_IN_TARGET", - "/es6/WeakMap_WeakMap.prototype.set_returns_this.js": "DELETED_IN_TARGET", - "/es6/WeakMap_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/WeakMap_constructor_accepts_null.js": "DELETED_IN_TARGET", - "/es6/WeakMap_constructor_arguments.js": "DELETED_IN_TARGET", - "/es6/WeakMap_constructor_invokes_set.js": "DELETED_IN_TARGET", - "/es6/WeakMap_constructor_requires_new.js": "DELETED_IN_TARGET", - "/es6/WeakMap_frozen_objects_as_keys.js": "DELETED_IN_TARGET", - "/es6/WeakMap_iterator_closing.js": "DELETED_IN_TARGET", - "/es6/WeakMap_no_WeakMap.prototype.clear_method.js": "DELETED_IN_TARGET", - "/es6/WeakSet_WeakSet.prototype.add_returns_this.js": "DELETED_IN_TARGET", - "/es6/WeakSet_WeakSet.prototype.delete.js": "DELETED_IN_TARGET", - "/es6/WeakSet_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/WeakSet_constructor_accepts_null.js": "DELETED_IN_TARGET", - "/es6/WeakSet_constructor_arguments.js": "DELETED_IN_TARGET", - "/es6/WeakSet_constructor_invokes_add.js": "DELETED_IN_TARGET", - "/es6/WeakSet_constructor_requires_new.js": "DELETED_IN_TARGET", - "/es6/WeakSet_no_WeakSet.prototype.clear_method.js": "DELETED_IN_TARGET", - "/es6/__proto___in_object_literals_basic_support.js": "DELETED_IN_TARGET", - "/es6/__proto___in_object_literals_multiple___proto___is_an_error.js": "DELETED_IN_TARGET", - "/es6/__proto___in_object_literals_not_a_computed_property.js": "DELETED_IN_TARGET", - "/es6/__proto___in_object_literals_not_a_shorthand_method.js": "DELETED_IN_TARGET", - "/es6/__proto___in_object_literals_not_a_shorthand_property.js": "DELETED_IN_TARGET", - "/es6/block-level_function_declaration.js": "DELETED_IN_TARGET", - "/es6/class_accessor_properties.js": "DELETED_IN_TARGET", - "/es6/class_anonymous_class.js": "DELETED_IN_TARGET", - "/es6/class_class_expression.js": "DELETED_IN_TARGET", - "/es6/class_class_name_is_lexically_scoped.js": "DELETED_IN_TARGET", - "/es6/class_class_statement.js": "DELETED_IN_TARGET", - "/es6/class_computed_accessor_properties.js": "DELETED_IN_TARGET", - "/es6/class_computed_names_temporal_dead_zone.js": "DELETED_IN_TARGET", - "/es6/class_computed_prototype_methods.js": "DELETED_IN_TARGET", - "/es6/class_computed_static_accessor_properties.js": "DELETED_IN_TARGET", - "/es6/class_computed_static_methods.js": "DELETED_IN_TARGET", - "/es6/class_constructor.js": "DELETED_IN_TARGET", - "/es6/class_constructor_requires_new.js": "DELETED_IN_TARGET", - "/es6/class_extends.js": "DELETED_IN_TARGET", - "/es6/class_extends_expressions.js": "DELETED_IN_TARGET", - "/es6/class_extends_null.js": "DELETED_IN_TARGET", - "/es6/class_implicit_strict_mode.js": "DELETED_IN_TARGET", - "/es6/class_is_block-scoped.js": "DELETED_IN_TARGET", - "/es6/class_methods_arent_enumerable.js": "DELETED_IN_TARGET", - "/es6/class_new.target.js": "DELETED_IN_TARGET", - "/es6/class_prototype_methods.js": "DELETED_IN_TARGET", - "/es6/class_static_accessor_properties.js": "DELETED_IN_TARGET", - "/es6/class_static_methods.js": "DELETED_IN_TARGET", - "/es6/class_string-keyed_methods.js": "DELETED_IN_TARGET", - "/es6/const_basic_support.js": "DELETED_IN_TARGET", - "/es6/const_basic_support_strict_mode.js": "DELETED_IN_TARGET", - "/es6/const_is_block-scoped.js": "DELETED_IN_TARGET", - "/es6/const_is_block-scoped_strict_mode.js": "DELETED_IN_TARGET", - "/es6/const_redefining_a_const_is_an_error.js": "DELETED_IN_TARGET", - "/es6/const_redefining_a_const_strict_mode.js": "DELETED_IN_TARGET", - "/es6/default_function_parameters_arguments_object_interaction.js": "DELETED_IN_TARGET", - "/es6/default_function_parameters_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/default_function_parameters_defaults_can_refer_to_previous_params.js": "DELETED_IN_TARGET", - "/es6/default_function_parameters_explicit_undefined_defers_to_the_default.js": "DELETED_IN_TARGET", - "/es6/default_function_parameters_new_Function_support.js": "DELETED_IN_TARGET", - "/es6/default_function_parameters_separate_scope.js": "DELETED_IN_TARGET", - "/es6/destructuring_assignment_computed_properties.js": "DELETED_IN_TARGET", - "/es6/destructuring_assignment_computed_property_default.js": "DELETED_IN_TARGET", - "/es6/destructuring_assignment_computed_property_simple.js": "DELETED_IN_TARGET", - "/es6/destructuring_assignment_nested_cover_initialized_name.js": "DELETED_IN_TARGET", - "/es6/destructuring_assignment_non_simple_target.js": "DELETED_IN_TARGET", - "/es6/destructuring_chained_iterable_destructuring.js": "DELETED_IN_TARGET", - "/es6/destructuring_chained_object_destructuring.js": "DELETED_IN_TARGET", - "/es6/destructuring_computed_properties.js": "DELETED_IN_TARGET", - "/es6/destructuring_defaults.js": "DELETED_IN_TARGET", - "/es6/destructuring_defaults_in_parameters.js": "DELETED_IN_TARGET", - "/es6/destructuring_defaults_in_parameters_new_Function_support.js": "DELETED_IN_TARGET", - "/es6/destructuring_defaults_in_parameters_separate_scope.js": "DELETED_IN_TARGET", - "/es6/destructuring_defaults_let_temporal_dead_zone.js": "DELETED_IN_TARGET", - "/es6/destructuring_empty_patterns.js": "DELETED_IN_TARGET", - "/es6/destructuring_empty_patterns_in_parameters.js": "DELETED_IN_TARGET", - "/es6/destructuring_in_catch_heads.js": "DELETED_IN_TARGET", - "/es6/destructuring_in_for-in_loop_heads.js": "DELETED_IN_TARGET", - "/es6/destructuring_in_for-of_loop_heads.js": "DELETED_IN_TARGET", - "/es6/destructuring_in_parameters.js": "DELETED_IN_TARGET", - "/es6/destructuring_in_parameters_arguments_interaction.js": "DELETED_IN_TARGET", - "/es6/destructuring_in_parameters_function_length_property.js": "DELETED_IN_TARGET", - "/es6/destructuring_in_parameters_new_Function_support.js": "DELETED_IN_TARGET", - "/es6/destructuring_initializer_scoping.js": "DELETED_IN_TARGET", - "/es6/destructuring_iterable_destructuring_expression.js": "DELETED_IN_TARGET", - "/es6/destructuring_iterator_closing.js": "DELETED_IN_TARGET", - "/es6/destructuring_multiples_in_a_single_var_statement.js": "DELETED_IN_TARGET", - "/es6/destructuring_nested.js": "DELETED_IN_TARGET", - "/es6/destructuring_nested_rest.js": "DELETED_IN_TARGET", - "/es6/destructuring_object_destructuring_expression.js": "DELETED_IN_TARGET", - "/es6/destructuring_object_destructuring_with_primitives.js": "DELETED_IN_TARGET", - "/es6/destructuring_parenthesised_left-hand-side_is_a_syntax_error.js": "DELETED_IN_TARGET", - "/es6/destructuring_rest.js": "DELETED_IN_TARGET", - "/es6/destructuring_throws_on_null_and_undefined.js": "DELETED_IN_TARGET", - "/es6/destructuring_trailing_commas_in_iterable_patterns.js": "DELETED_IN_TARGET", - "/es6/destructuring_trailing_commas_in_object_patterns.js": "DELETED_IN_TARGET", - "/es6/destructuring_with_arrays.js": "DELETED_IN_TARGET", - "/es6/destructuring_with_astral_plane_strings.js": "DELETED_IN_TARGET", - "/es6/destructuring_with_generator_instances.js": "DELETED_IN_TARGET", - "/es6/destructuring_with_generic_iterables.js": "DELETED_IN_TARGET", - "/es6/destructuring_with_instances_of_generic_iterables.js": "DELETED_IN_TARGET", - "/es6/destructuring_with_objects.js": "DELETED_IN_TARGET", - "/es6/destructuring_with_sparse_arrays.js": "DELETED_IN_TARGET", - "/es6/destructuring_with_strings.js": "DELETED_IN_TARGET", - "/es6/function_name_property_accessor_properties.js": "DELETED_IN_TARGET", - "/es6/function_name_property_bound_functions.js": "DELETED_IN_TARGET", - "/es6/function_name_property_class_expressions.js": "DELETED_IN_TARGET", - "/es6/function_name_property_class_prototype_methods.js": "DELETED_IN_TARGET", - "/es6/function_name_property_class_statements.js": "DELETED_IN_TARGET", - "/es6/function_name_property_class_static_methods.js": "DELETED_IN_TARGET", - "/es6/function_name_property_function_expressions.js": "DELETED_IN_TARGET", - "/es6/function_name_property_function_statements.js": "DELETED_IN_TARGET", - "/es6/function_name_property_isnt_writable_is_configurable.js": "DELETED_IN_TARGET", - "/es6/function_name_property_new_Function.js": "DELETED_IN_TARGET", - "/es6/function_name_property_object_methods_class.js": "DELETED_IN_TARGET", - "/es6/function_name_property_object_methods_function.js": "DELETED_IN_TARGET", - "/es6/function_name_property_shorthand_methods.js": "DELETED_IN_TARGET", - "/es6/function_name_property_shorthand_methods_no_lexical_binding.js": "DELETED_IN_TARGET", - "/es6/function_name_property_symbol-keyed_methods.js": "DELETED_IN_TARGET", - "/es6/function_name_property_variables_class.js": "DELETED_IN_TARGET", - "/es6/function_name_property_variables_function.js": "DELETED_IN_TARGET", - "/es6/generators_%GeneratorPrototype%.constructor.js": "DELETED_IN_TARGET", - "/es6/generators_%GeneratorPrototype%.js": "DELETED_IN_TARGET", - "/es6/generators_%GeneratorPrototype%.return.js": "DELETED_IN_TARGET", - "/es6/generators_%GeneratorPrototype%.throw.js": "DELETED_IN_TARGET", - "/es6/generators_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/generators_cant_use_this_with_new.js": "DELETED_IN_TARGET", - "/es6/generators_computed_shorthand_generators.js": "DELETED_IN_TARGET", - "/es6/generators_computed_shorthand_generators_classes.js": "DELETED_IN_TARGET", - "/es6/generators_shorthand_generator_methods.js": "DELETED_IN_TARGET", - "/es6/generators_shorthand_generator_methods_classes.js": "DELETED_IN_TARGET", - "/es6/generators_string-keyed_shorthand_generator_methods.js": "DELETED_IN_TARGET", - "/es6/generators_yield_operator_precedence.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_arrays.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_astral_plane_strings.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_generator_instances.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_generic_iterables.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_instances_of_iterables.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_iterator_closing.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_iterator_closing_via_throw.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_on_non-iterables_is_a_runtime_error.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_sparse_arrays.js": "DELETED_IN_TARGET", - "/es6/generators_yield_star_strings.js": "DELETED_IN_TARGET", - "/es6/let_basic_support.js": "DELETED_IN_TARGET", - "/es6/let_basic_support_strict_mode.js": "DELETED_IN_TARGET", - "/es6/let_for-loop_iteration_scope.js": "DELETED_IN_TARGET", - "/es6/let_for-loop_iteration_scope_strict_mode.js": "DELETED_IN_TARGET", - "/es6/let_for-loop_statement_scope.js": "DELETED_IN_TARGET", - "/es6/let_for-loop_statement_scope_strict_mode.js": "DELETED_IN_TARGET", - "/es6/let_is_block-scoped.js": "DELETED_IN_TARGET", - "/es6/let_is_block-scoped_strict_mode.js": "DELETED_IN_TARGET", - "/es6/new.target_assignment_is_an_early_error.js": "DELETED_IN_TARGET", - "/es6/new.target_in_constructors.js": "DELETED_IN_TARGET", - "/es6/non-strict_function_semantics_function_statements_in_if-statement_clauses.js": "DELETED_IN_TARGET", - "/es6/non-strict_function_semantics_hoisted_block-level_function_declaration.js": "DELETED_IN_TARGET", - "/es6/non-strict_function_semantics_labeled_function_statements.js": "DELETED_IN_TARGET", - "/es6/object_literal_extensions_computed_accessors.js": "DELETED_IN_TARGET", - "/es6/object_literal_extensions_computed_properties.js": "DELETED_IN_TARGET", - "/es6/object_literal_extensions_computed_shorthand_methods.js": "DELETED_IN_TARGET", - "/es6/object_literal_extensions_shorthand_methods.js": "DELETED_IN_TARGET", - "/es6/object_literal_extensions_shorthand_properties.js": "DELETED_IN_TARGET", - "/es6/object_literal_extensions_string-keyed_shorthand_methods.js": "DELETED_IN_TARGET", - "/es6/octal_and_binary_literals_binary_literals.js": "DELETED_IN_TARGET", - "/es6/octal_and_binary_literals_binary_supported_by_Number.js": "DELETED_IN_TARGET", - "/es6/octal_and_binary_literals_octal_literals.js": "DELETED_IN_TARGET", - "/es6/octal_and_binary_literals_octal_supported_by_Number.js": "DELETED_IN_TARGET", - "/es6/own_property_order_JSON.parse.js": "DELETED_IN_TARGET", - "/es6/own_property_order_JSON.stringify.js": "DELETED_IN_TARGET", - "/es6/own_property_order_Object.assign.js": "DELETED_IN_TARGET", - "/es6/own_property_order_Object.getOwnPropertyNames.js": "DELETED_IN_TARGET", - "/es6/own_property_order_Object.keys.js": "DELETED_IN_TARGET", - "/es6/own_property_order_Reflect.ownKeys_string_key_order.js": "DELETED_IN_TARGET", - "/es6/own_property_order_Reflect.ownKeys_symbol_key_order.js": "DELETED_IN_TARGET", - "/es6/own_property_order_for..in.js": "DELETED_IN_TARGET", - "/es6/proper_tail_calls_tail_call_optimisation_direct_recursion.js": "DELETED_IN_TARGET", - "/es6/proper_tail_calls_tail_call_optimisation_mutual_recursion.js": "DELETED_IN_TARGET", - "/es6/rest_parameters_arguments_object_interaction.js": "DELETED_IN_TARGET", - "/es6/rest_parameters_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/rest_parameters_function_length_property.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_spreading_non-iterables_is_a_runtime_error.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_arrays_in_array_literals.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_arrays_in_function_calls.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_astral_plane_strings_in_array_literals.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_astral_plane_strings_in_function_calls.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_generator_instances_in_arrays.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_generator_instances_in_calls.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_generic_iterables_in_arrays.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_generic_iterables_in_calls.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_instances_of_iterables_in_arrays.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_instances_of_iterables_in_calls.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_sparse_arrays_in_array_literals.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_sparse_arrays_in_function_calls.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_strings_in_array_literals.js": "DELETED_IN_TARGET", - "/es6/spread_..._operator_with_strings_in_function_calls.js": "DELETED_IN_TARGET", - "/es6/super_constructor_calls_use_correct_new.target_binding.js": "DELETED_IN_TARGET", - "/es6/super_expression_in_constructors.js": "DELETED_IN_TARGET", - "/es6/super_in_methods_method_calls.js": "DELETED_IN_TARGET", - "/es6/super_in_methods_property_access.js": "DELETED_IN_TARGET", - "/es6/super_is_statically_bound.js": "DELETED_IN_TARGET", - "/es6/super_method_calls_use_correct_this_binding.js": "DELETED_IN_TARGET", - "/es6/super_statement_in_constructors.js": "DELETED_IN_TARGET", - "/es6/template_strings_basic_functionality.js": "DELETED_IN_TARGET", - "/es6/template_strings_line_break_normalisation.js": "DELETED_IN_TARGET", - "/es6/template_strings_passed_array_is_frozen.js": "DELETED_IN_TARGET", - "/es6/template_strings_tagged_template_strings.js": "DELETED_IN_TARGET", - "/es6/template_strings_toString_conversion.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.from.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.of.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.copyWithin.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.entries.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.every.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.fill.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.filter.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.find.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.findIndex.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.forEach.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.indexOf.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.join.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.keys.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.lastIndexOf.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.map.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.reduce.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.reduceRight.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.reverse.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.slice.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.some.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.sort.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.subarray.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype.values.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%.prototype[Symbol.iterator].js": "DELETED_IN_TARGET", - "/es6/typed_arrays_%TypedArray%[Symbol.species].js": "DELETED_IN_TARGET", - "/es6/typed_arrays_ArrayBuffer[Symbol.species].js": "DELETED_IN_TARGET", - "/es6/typed_arrays_DataView_Float32.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_DataView_Float64.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_DataView_Int16.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_DataView_Int32.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_DataView_Int8.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_DataView_Uint16.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_DataView_Uint32.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_DataView_Uint8.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_Float32Array.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_Float64Array.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_Int16Array.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_Int32Array.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_Int8Array.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_Uint16Array.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_Uint32Array.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_Uint8Array.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_Uint8ClampedArray.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_constructors_require_new.js": "DELETED_IN_TARGET", - "/es6/typed_arrays_correct_prototype_chains.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.hasInstance.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.isConcatSpreadable.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.iterator_arguments_object.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.iterator_existence.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.match.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.match_String.prototype.endsWith.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.match_String.prototype.includes.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.match_String.prototype.startsWith.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.replace.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.search.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.species_Array.prototype.concat.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.species_Array.prototype.filter.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.species_Array.prototype.map.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.species_Array.prototype.slice.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.species_Array.prototype.splice.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.species_RegExp.prototype[Symbol.split].js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.species_existence.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.split.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.toStringTag.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.toStringTag_misc._built-ins.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.toStringTag_new_built-ins.js": "DELETED_IN_TARGET", - "/es6/well-known_symbols_Symbol.unscopables.js": "DELETED_IN_TARGET" - } -} \ No newline at end of file diff --git a/implementation-contributed/curation_logs/stress.md b/implementation-contributed/curation_logs/stress.md deleted file mode 100644 index d5ac0b5568d..00000000000 --- a/implementation-contributed/curation_logs/stress.md +++ /dev/null @@ -1,106 +0,0 @@ -- addition-order-evaluation.js: - - not exactly covered, but language/expressions/addition/order-of-evalution.js does it for ToNumber vs ToPrimitive checks - - language/expressions/addition/ - - Should check for primitive coercion converting values to primitive to be used before comparing to symbol values - - https://tc39.github.io/ecma262/#sec-addition-operator-plus checks for both operands as their primitive values before ToNumber over Symbol values - - should cover ToPrimitive before ToNumber -- allow-math-ic-b3-code-duplication.js: - - Could add cases for addition expressions with primitive operations returning other objects, not really like this specific test, but from @@toPrimitive, valueOf, and toString calls. -- apply-second-argument-must-be-array-like.js - - Cases should be covered in Function#apply, where the second arg is not an array like value -- arguments-bizarre-behavior.js - - This is partially covered in a different way: needs to check length of arguments after defineProperty, and checking after the function escope, as a returned result. Enumerability might be a point to consider as well (too specific?) -- arith-*-on-varios-types.js - - Test262 needs several tests for the Math methods with type coercions on the given arguments -- array-*: - - Perhaps: add cases of operations on top of proxies object to arrays. -- set-*.js / map-*.js / weakmap-set-*.js / weakset-*.js: - - Test static return values for before and after adding an item in an WeakSet. -- zero-to-string.js: - - Number#toString is not checked over literal numbers but number objects only. - -- assign-argument-in-inlined-call.js - - No coverage for fn_name.arguments going to inner scopes. -- assignment-in-function-call-bracket-node.js - - Tests obj computer propety names containing expressions that evaluates to `null`. -- async-arrow-function-in-class-heritage.js - - Tests class heritage failing with arrow functions (no constructor). Might have coverage, not found yet. -- async-arrow-functions-*.js - - No tests checking for lexical arguments/new.target/etc in async arrow functions - - Async arrow functions needs some refactoring -- inferred-names.js - - Needs to add tests for multiple anonymous fn forms, verify the .name property is properly set - - Web Compat fix: https://github.com/Microsoft/ChakraCore/issues/3407 -- builtin-function-is-construct-type-none.js - - Add a forEach test with a new.target call - - Extend it to other methods - - > - "Built-in Function Objects - - ... - Built-in function objects that are not identified as constructors do not implement the [[Construct]] internal method unless otherwise specified in the description of a particular function. When a built-in constructor is called as part of a new expression the argumentsList parameter of the invoked [[Construct]] internal method provides the values for the built-in constructor's named parameters. - - Built-in functions that are not constructors do not have a prototype property unless otherwise specified in the description of a particular function." -- builtin-function-length.js - - Add length property check for function forms in the language folder -- computed-accessor.js / computed-accessor-parsing.js - - Review the coverage of test/language/computed-property-names - - good to use the test generation tool to create cases to be reused for objects and classes, etc - - should check type coercion as well, using composed objects too -- completion-value.js - - v8: add tests for completion value resolution in try/catch/finally blocks (anything returning -2) - - `eval('99; do { -99; try { 42 } catch (e) { -1 } finally { -2; break; -3 }; } while (false);')` - - `eval('99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; break; -3 }; } while (false);')` - - `eval('99; do { -99; try { 42 } catch (e) { -1 } finally { -2; break; -3 }; -77 } while (false);')` - - `eval('99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; break; -3 }; -77 } while (false);')` - - `eval('99; do { -99; try { 42 } catch (e) { -1 } finally { -2; continue; -3 }; } while (false);')` - - `eval('99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; continue; -3 }; } while (false);')` - - `eval('99; do { -99; try { 42 } catch (e) { -1 } finally { -2; continue; -3 }; -77 } while (false);')` - - `eval('99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; continue; -3 }; -77 } while (false);')` - - expected: 42 - - actual: -2 - - sm cases are already covered -- concat-append-one-with-sparse-array.js - - Append a small value in a very long array - not any specific part of the specs to check - test is slow but maybe worth considering? -- create-subclass-structure-may-throw-exception-when-getting-prototype.js - - tests are inconsistent in different engines - - verify this on the usage for Reflect.construct -- custom-iterators.js - - it would be interesting to create templates and cases for iteration over objects. Using Symbol.iterator (and Symbol.asyncIterator) in for-of loops, for-of-await loops, Array.from, etc etc etc - - The examples in that test file would be interesting to create __iterator like__ objects - - ChakraCore is apparently reporting of a wrong error constructor -- custom-prototype-may-be-same-to-original-one.js - - Tests that Reflect.constructor can use a custom prototype with the same reference for the original one -- error-description-on-symbols-should-not-crash.js - - Symbols are not callable... -- exception-in-to-property-key-should-be-handled-early-in-object-methods.js - - Review coverage for Object#hasOwnProperty, add coercions for the this value -- function-caller-*.js - - Verify .caller behavior for nested functions, retrieving the function body. - - Results are diverging from JSC (abrupt completion) to other engines (no error) -- global-environment-does-not-trap-unscopables.js - - duplicate `language/with/binding-blocked-by-unscopables.js` to assert binding block of the global in inner scopes, deferring references to the local scope. -- ignore-promise-species.js - - add coverage for Promise.all and race handling a local `@@species` -- modify-set-during-iteration.js - - Add coverage for iterating Set/Map/WeakSet/WeakMap objects with values being changed during the iteration. (e.g. for-of loops) -- module-namespace-access*js - - review these tests for import() -- private-name-as-anonymous-builtin.js - - Review name property for the executor functions in Promise.resolve calls -- regress-187006.js - - check if we have coverage for regexp `match` setting array values. -- regress-179634.js - - review coverage for Object.defineProperties -- regress-170732.js - - review coverage for valid and invalid await expressions -- regress-159883.js - - review common forms for invalid dates -- regress-189317.js - - AnnexB defineGetter/Setter being used with built-in functions - - cross engine errors -- string-to-string-error.js / string-value-of-error.js - - Needs coverage for the this value in `String#toString` and `String#valueOf` - - Also verify with ordinary objects containing toPrimitive methods. -- reserved-word-with-escape.js - - Add coverage for checking reserved names - mostly `var` - as global variables, using escape sequences. diff --git a/implementation-contributed/curation_logs/v8.json b/implementation-contributed/curation_logs/v8.json deleted file mode 100644 index b9484eaaa5a..00000000000 --- a/implementation-contributed/curation_logs/v8.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "sourceRevisionAtLastExport": "c3e7eb19", - "targetRevisionAtLastExport": "7f1116982d", - "curatedFiles": {} -} \ No newline at end of file diff --git a/implementation-contributed/javascriptcore/.gitkeep b/implementation-contributed/javascriptcore/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/implementation-contributed/javascriptcore/ChangeLog-2018-09-11 b/implementation-contributed/javascriptcore/ChangeLog-2018-09-11 deleted file mode 100644 index 81ba66cb9e3..00000000000 --- a/implementation-contributed/javascriptcore/ChangeLog-2018-09-11 +++ /dev/null @@ -1,23391 +0,0 @@ -2018-09-10 Michael Saboff - - Test262 failure with Named Capture Groups - using a reference before the group is defined - https://bugs.webkit.org/show_bug.cgi?id=189407 - - Reviewed by Alex Christensen. - - Re-enabled previously failing test. - - * test262.yaml: - * test262/expectations.yaml: - -2018-09-08 Yusuke Suzuki - - [JSC] Remove loadModule function in jsc.cpp - https://bugs.webkit.org/show_bug.cgi?id=184808 - - Reviewed by Darin Adler. - - Use `import` expression instead. - - * modules/different-view.js: - (from.string_appeared_here.shouldThrow): Deleted. - * modules/fallback-ambiguous.js: - (from.string_appeared_here.shouldThrow): Deleted. - * modules/import-error.js: - (from.string_appeared_here.shouldThrow): Deleted. - (shouldThrow): Deleted. - * modules/indirect-export-error.js: - (from.string_appeared_here.shouldThrow): Deleted. - (shouldThrow): Deleted. - * modules/namespace-error.js: - (from.string_appeared_here.shouldThrow): Deleted. - -2018-09-07 Mark Lam - - Ensure that handleIntrinsicCall() is only applied on op_call shaped instructions. - https://bugs.webkit.org/show_bug.cgi?id=189317 - - - Reviewed by Filip Pizlo. - - * stress/regress-189317.js: Added. - (testGetter): - (testSetter): - -2018-09-06 Yusuke Suzuki - - [DFG] DFG should handle String#toString - https://bugs.webkit.org/show_bug.cgi?id=189151 - - Reviewed by Saam Barati. - - The error message in String#toString and String#valueOf is poor, which will be - handled in a separate bug[1]. - - [1]: https://bugs.webkit.org/show_bug.cgi?id=189357 - - * microbenchmarks/string-object-to-string.js: Added. - (test): - * microbenchmarks/string-object-value-of.js: Added. - (test): - * stress/string-to-string-error.js: Added. - (shouldThrow): - (test): - * stress/string-to-string.js: Added. - (shouldBe): - (test1): - (test2): - (test3): - * stress/string-value-of-error.js: Added. - (shouldThrow): - (test): - * stress/string-value-of.js: Added. - (shouldBe): - (test1): - (test2): - (test3): - -2018-09-06 Michael Saboff - - Improper speculation type for Math.pow(NaN, 0) in Abstract Interpreter - https://bugs.webkit.org/show_bug.cgi?id=189380 - - Reviewed by Saam Barati. - - New test. - - * stress/math-pow-nan-to-zero-spec-type.js: Added. - (func): - (test): - -2018-09-06 Mark Lam - - Gardening: Move regress-189185.js under JSTests/wasm. - https://bugs.webkit.org/show_bug.cgi?id=189347 - - Unreviewed. - - * stress/regress-189185.js: Removed. - * wasm/regress/regress-189185.js: Copied from JSTests/stress/regress-189185.js. - -2018-09-05 Mark Lam - - JSPropertyNameEnumerator::visitChildren() needs to visit its m_cachedStructureID. - https://bugs.webkit.org/show_bug.cgi?id=189124 - - - Reviewed by Filip Pizlo. - - * stress/regress-189124.js: Added. - -2018-09-05 Ross Kirsling - - [ESNext] Symbol.prototype.description - https://bugs.webkit.org/show_bug.cgi?id=186686 - - Reviewed by Keith Miller. - - * stress/symbol-description.js: - Add tests for empty and null symbol cases. - - * test262/config.yaml: - Enable Symbol.prototype.description tests. - -2018-09-05 David Fenton - - [32-bit JSC tests] Exception: ReferenceError: Can't find variable: WebAssembly. - https://bugs.webkit.org/show_bug.cgi?id=189312. - - Unreviewed test gardening. - - * stress/regress-189185.js: - -2018-09-05 Mark Lam - - isAsyncGeneratorMethodParseMode() should check for SourceParseMode::AsyncGeneratorWrapperMethodMode. - https://bugs.webkit.org/show_bug.cgi?id=189292 - - - Reviewed by Saam Barati. - - * stress/regress-189292.js: Added. - -2018-09-04 David Fenton - - Skip Test on 32-bit platforms. - https://bugs.webkit.org/show_bug.cgi?id=189185. - - Unreviewed test gardening. - - * stress/regress-189185.js: - -2018-09-03 Mark Lam - - The watchdog sometimes fails to terminate a script. - https://bugs.webkit.org/show_bug.cgi?id=189227 - - - Reviewed by Saam Barati. - - * stress/regress-189227-watchdog-on-infinite-loop.js: Added. - -2018-09-02 Yusuke Suzuki - - Implement Object.fromEntries - https://bugs.webkit.org/show_bug.cgi?id=188481 - - Reviewed by Darin Adler. - - * stress/object-from-entries.js: Added. - (shouldBe): - (shouldThrow): - (shouldBe.JSON.stringify.Object.getOwnPropertyDescriptor): - (shouldBe.set get shouldThrow): - -2018-08-24 Yusuke Suzuki - - Function object should convert params to string before throw a parsing error - https://bugs.webkit.org/show_bug.cgi?id=188874 - - Reviewed by Darin Adler. - - * stress/function-body-to-string-before-parameter-syntax-check.js: Added. - (shouldThrow): - -2018-08-31 Mark Lam - - Fix exception check accounting in constructJSWebAssemblyCompileError(). - https://bugs.webkit.org/show_bug.cgi?id=189185 - - - Reviewed by Michael Saboff. - - * stress/regress-189185.js: Added. - (new.WebAssembly.CompileError.valueOf): - -2018-08-31 Mark Lam - - Fix exception check accounting in JSDataView::defineOwnProperty(). - https://bugs.webkit.org/show_bug.cgi?id=189186 - - - Reviewed by Michael Saboff. - - * stress/regress-189186.js: Added. - -2018-08-31 Mark Lam - - Add missing exception check in arrayProtoFuncLastIndexOf(). - https://bugs.webkit.org/show_bug.cgi?id=189184 - - - Reviewed by Yusuke Suzuki. - - * stress/regress-189184.js: Added. - -2018-08-31 Saam barati - - convertToRegExpMatchFastGlobal must use KnownString as the child use kind - https://bugs.webkit.org/show_bug.cgi?id=189173 - - - Reviewed by Michael Saboff. - - * stress/may-exit-should-be-false-regexp-constant-folding.js: Added. - (foo): - (bar): - -2018-08-30 Saam barati - - CSE DataViewGet* DFG nodes - https://bugs.webkit.org/show_bug.cgi?id=188768 - - Reviewed by Yusuke Suzuki. - - * microbenchmarks/dataview-cse.js: Added. - (assert): - (test): - * stress/dataview-get-cse.js: Added. - (assert): - (test1.foo): - (test1): - (test2.foo): - (test2): - (test3.foo): - (test3): - (test4.foo): - (test4): - (test5.foo): - (test5): - (test6.foo): - (test6): - -2018-08-30 Yusuke Suzuki - - output of toString() of Generator is wrong - https://bugs.webkit.org/show_bug.cgi?id=188952 - - Reviewed by Saam Barati. - - * stress/function-to-string.js: Added. - (shouldBe): - (shouldBe.test): - (test): - (shouldBe.async.test): - (async.test): - (shouldBe.async): - (async): - * test262/expectations.yaml: - -2018-08-29 Mark Lam - - Add some missing exception checks in JSRopeString::resolveRopeToAtomicString(). - https://bugs.webkit.org/show_bug.cgi?id=189132 - - - Reviewed by Saam Barati. - - * stress/regress-189132.js: Added. - -2018-08-27 Yusuke Suzuki - - [WebAssembly] Parse wasm modules in a streaming fashion - https://bugs.webkit.org/show_bug.cgi?id=188943 - - Reviewed by Mark Lam. - - Wasm parsing error should not report the total byte size since streaming parsing does not - want to load all the bytes. - Add a simple test wasm/stress/streaming-basic.js for initial streaming parsing implementation. - - * wasm/function-tests/invalid-duplicate-export.js: - * wasm/function-tests/memory-alignment.js: - (const.op.of.WASM.opcodes): - * wasm/function-tests/memory-section-and-import.js: - * wasm/function-tests/void-argument-type-should-be-a-validation-error.js: - * wasm/js-api/Module-compile.js: - (async.testPromiseAPI): - * wasm/js-api/element.js: - (assert.throws.new.WebAssembly.Module.builder.WebAssembly): - (assert.throws): - * wasm/js-api/global-error.js: - (assert.throws.new.WebAssembly.Module.bin): - (assert.throws): - * wasm/js-api/table.js: - (new.WebAssembly.Module): - (assert.throws): - (assertBadTableImport): - * wasm/js-api/test_Data.js: - (DataSectionWithoutMemory): - * wasm/js-api/test_Start.js: - (InvalidStartFunctionIndex): - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - * wasm/js-api/version.js: - * wasm/stress/nameSection.wasm: Added. - * wasm/stress/streaming-basic.js: Added. - (check): - -2018-08-27 Mark Lam - - Fix exception throwing code so that topCallFrame and topEntryFrame stay true to their names. - https://bugs.webkit.org/show_bug.cgi?id=188577 - - - Reviewed by Saam Barati. - - * stress/regress-188577.js: Added. - -2018-08-24 Yusuke Suzuki - - [JSC] Array.prototype.reverse modifies JSImmutableButterfly - https://bugs.webkit.org/show_bug.cgi?id=188794 - - Reviewed by Saam Barati. - - * stress/reverse-with-immutable-butterfly.js: Added. - (shouldBe): - (reverseInt): - (reverseDouble): - (reverseContiguous): - -2018-08-22 Saam barati - - Make data-view-access.js run less time to prevent timeouts on 32-bit - - * microbenchmarks/data-view-accesses.js: - -2018-08-22 Mark Lam - - The DFG CFGSimplification phase shouldn’t jettison a block when it’s the target of both branch directions. - https://bugs.webkit.org/show_bug.cgi?id=188298 - - - Reviewed by Saam Barati. - - * stress/bug-188298.js: Added. - -2018-08-20 Saam barati - - Inline DataView accesses into DFG/FTL - https://bugs.webkit.org/show_bug.cgi?id=188573 - - - Reviewed by Michael Saboff. - - * microbenchmarks/data-view-accesses-2.js: Added. - (assert): - (let.p.of.Object.keys.let.str): - (let.p.of.Object.keys): - (test): - * microbenchmarks/data-view-accesses.js: Added. - (assert): - (let.p.of.Object.keys.let.str): - (let.p.of.Object.keys): - * stress/dataview-jit-bounds-checks.js: Added. - (assert): - (let.p.of.Object.keys.let.str): - (let.p.of.Object.keys): - * stress/dataview-jit-get.js: Added. - (assert): - (test1.bigEndian): - (test1.littleEndian): - (test1.biEndian): - (test1): - (test2.bigEndian): - (test2.littleEndian): - (test2.biEndian): - (test2): - (test3.bigEndian): - (test3.littleEndian): - (test3.biEndian): - (test3): - (test4.bigEndian): - (test4.littleEndian): - (test4.biEndian): - (test4): - (test5.bigEndian): - (test5.littleEndian): - (test5.biEndian): - (test5): - (test6.bigEndian): - (test6.littleEndian): - (test6.biEndian): - (test6): - (test7.load): - (test7): - (test8.load): - (test8): - * stress/dataview-jit-neuter.js: Added. - (assert): - (test.load): - (test): - (test2.load): - (test2): - * stress/dataview-jit-set.js: Added. - (assert): - (isLittleEndian): - (readByte): - (readHex): - (test.storeLittleEndian): - (test.storeBigEndian): - (test.store): - (test): - (test2.storeLittleEndian): - (test2.storeBigEndian): - (test2.store): - (test2): - (test3.storeLittleEndian): - (test3.storeBigEndian): - (test3.store): - (test3): - (test4.storeLittleEndian): - (test4.storeBigEndian): - (test4.store): - (test4): - (test5.storeLittleEndian): - (test5.storeBigEndian): - (test5.store): - (test5): - (test6.storeLittleEndian): - (test6.storeBigEndian): - (test6.store): - (test6): - (test7.store): - (test7): - (test8.store): - (test8): - * stress/dataview-jit-unaligned-accesses.js: Added. - (assert): - (let.p.of.Object.keys.let.str): - (let.p.of.Object.keys): - -2018-08-20 Yusuke Suzuki - - [YARR] Extend size of fixed characters bulk matching in 64bit platform - https://bugs.webkit.org/show_bug.cgi?id=181989 - - Reviewed by Michael Saboff. - - * stress/characters-regexp-ignore-case.js: Added. - (shouldBe): - (testH): - (testHe): - (testHel): - (testHell): - (testHello): - (testHelloW): - (testHelloWo): - (testHelloWor): - (testHelloWorl): - (testHelloWorld): - * stress/characters-regexp.js: Added. - (shouldBe): - (testH): - (testHe): - (testHel): - (testHell): - (testHello): - (testHelloW): - (testHelloWo): - (testHelloWor): - (testHelloWorl): - (testHelloWorld): - -2018-08-17 Saam barati - - intersectionOfPastValuesAtHead must filter values after they've observed an invalidation point - https://bugs.webkit.org/show_bug.cgi?id=188707 - - - Reviewed by Mark Lam. - - * stress/cfa-expected-values-must-set-clobbered-to-false.js: Added. - (foo): - (let.comp.valueOf): - (result): - -2018-08-10 Keith Miller - - Slicing an ArrayBuffer with a long number returns an ArrayBuffer with byteLength zero - https://bugs.webkit.org/show_bug.cgi?id=185127 - - Reviewed by Saam Barati. - - Rebaseline the expectations. - - * test262/expectations.yaml: - -2018-08-10 Yusuke Suzuki - - Date.UTC should not return NaN with only Year param - https://bugs.webkit.org/show_bug.cgi?id=188378 - - Reviewed by Keith Miller. - - * ChakraCore.yaml: - * ChakraCore/test/Date/dateutc.baseline-jsc: Added. - * stress/date-utc-optional.js: Added. - (shouldBe): - * test262/expectations.yaml: - -2018-08-08 Keith Miller - - Array.prototype.sort should call @toLength instead of ">>> 0" - https://bugs.webkit.org/show_bug.cgi?id=188430 - - Reviewed by Saam Barati. - - * test262/expectations.yaml: - -2018-08-08 Keith Miller - - Array.prototype.sort should throw TypeError if param is a not callable object - https://bugs.webkit.org/show_bug.cgi?id=188382 - - Reviewed by Saam Barati. - - * test262/expectations.yaml: - -2018-08-01 Andy VanWagoner - - [INTL] Implement hourCycle in DateTimeFormat - https://bugs.webkit.org/show_bug.cgi?id=188006 - - Reviewed by Darin Adler. - - Removed fixed hourCycle expectations. - - * test262/expectations.yaml: - -2018-07-25 Yusuke Suzuki - - [JSC] Record CoW status in ArrayProfile correctly - https://bugs.webkit.org/show_bug.cgi?id=187949 - - Reviewed by Saam Barati. - - * stress/array-profile-should-record-copy-on-write.js: Added. - (shouldBe): - (test1): - (test2): - (test3): - -2018-07-26 Mark Lam - - arrayProtoPrivateFuncConcatMemcpy() should handle copying from an Undecided type array. - https://bugs.webkit.org/show_bug.cgi?id=188065 - - - Reviewed by Saam Barati. - - * stress/regress-188065.js: Added. - -2018-07-25 Andy VanWagoner - - [INTL] Call Typed Array elements toLocaleString with locale and options - https://bugs.webkit.org/show_bug.cgi?id=185796 - - Reviewed by Keith Miller. - - Remove now passing TypedArray toLocaleString expectation. - - * test262/expectations.yaml: - -2018-07-25 Andy VanWagoner - - [INTL] Intl constructor lengths should be configurable - https://bugs.webkit.org/show_bug.cgi?id=187960 - - Reviewed by Saam Barati. - - Removed fixed length expectations, and updated Intl.Locale expectations - that error differently since r234127. - - * test262/expectations.yaml: - -2018-07-24 Commit Queue - - Unreviewed, rolling out r234183. - https://bugs.webkit.org/show_bug.cgi?id=187983 - - cause regression in Kraken gaussian blur and desaturate - (Requested by yusukesuzuki on #webkit). - - Reverted changeset: - - "[JSC] Record CoW status in ArrayProfile" - https://bugs.webkit.org/show_bug.cgi?id=187949 - https://trac.webkit.org/changeset/234183 - -2018-07-24 Yusuke Suzuki - - [JSC] Record CoW status in ArrayProfile - https://bugs.webkit.org/show_bug.cgi?id=187949 - - Reviewed by Saam Barati. - - * stress/array-profile-should-record-copy-on-write.js: Added. - (shouldBe): - (test1): - (test2): - (test3): - -2018-07-23 Saam Barati - - need to didFoldClobberWorld when we constant fold GetByVal - https://bugs.webkit.org/show_bug.cgi?id=187917 - - - Reviewed by Yusuke Suzuki. - - * stress/get-by-val-fold-did-clobber-world.js: Added. - (__f_443): - -2018-07-23 Andy VanWagoner - - [INTL] Language tags are not canonicalized - https://bugs.webkit.org/show_bug.cgi?id=185836 - - Reviewed by Keith Miller. - - Remove expected failures that have been fixed. - - * test262/expectations.yaml: - -2018-07-22 Yusuke Suzuki - - [JSC] GetByIdVariant and InByIdVariant do not need slot base if they are not "hit" variants - https://bugs.webkit.org/show_bug.cgi?id=187891 - - Reviewed by Saam Barati. - - * stress/in-miss-variant-merge.js: Added. - (shouldBe): - (test): - * stress/miss-variant-merge.js: Added. - (shouldBe): - (test): - -2018-07-22 Yusuke Suzuki - - [DFG] Fold GetByVal if the indexed value is non configurable and non writable - https://bugs.webkit.org/show_bug.cgi?id=186462 - - Reviewed by Saam Barati. - - * stress/folding-get-by-val-with-read-only-dont-delete-object.js: Added. - (shouldBe): - (test1): - (test2): - (test3): - (test4): - (test5): - * stress/folding-get-by-val-with-read-only-dont-delete-runtime-array.js: Added. - (shouldBe): - (test1): - (test2): - (test5): - * stress/folding-get-by-val-with-read-only-dont-delete.js: Added. - (shouldBe): - (test1): - (test2): - (test3): - (test4): - (test5): - -2018-06-02 Filip Pizlo - - We should support CreateThis in the FTL - https://bugs.webkit.org/show_bug.cgi?id=164904 - - Reviewed by Yusuke Suzuki. - - * microbenchmarks/polyvariant-get-by-id-shorter-tower.js: Added. - (polyvariant): - (Foo.prototype.func): - (Foo): - (foo): - (Bar.prototype.func): - (Bar): - (bar): - * microbenchmarks/polyvariant-get-by-id-tower.js: Added. - (polyvariant): - (Foo.prototype.func): - (Foo): - (foo): - (Bar.prototype.func): - (Bar): - (bar): - (Baz.prototype.func): - (Baz): - (baz): - -2018-07-20 Michael Saboff - - DFG AbstractInterpreter: CheckArray filters array modes for DirectArguments/ScopedArguments using only NonArray - https://bugs.webkit.org/show_bug.cgi?id=187827 - rdar://problem/42146858 - - Reviewed by Saam Barati. - - New regression tests. - - * stress/direct-arguments-check-array.js: Added. - (setup.f2): - (setup): - (forOfArray): - (forOfArgs): - (callEveryOnArgs): - * stress/scoped-arguments-check-array.js: Added. - (setup.foo): - (setup.f2): - (setup): - (forOfArray): - (forOfArgs): - (callEveryOnArgs): - -2018-07-20 Yusuke Suzuki - - [DFG] Fold GetByVal if Array is CoW - https://bugs.webkit.org/show_bug.cgi?id=186459 - - Reviewed by Saam Barati. - - * stress/folding-get-by-val-with-immutable-butterfly-out-of-bounds-foldable.js: Added. - (shouldBe): - (test0): - (test1): - (test2): - (test3): - (test4): - (test5): - * stress/folding-get-by-val-with-immutable-butterfly-out-of-bounds.js: Added. - (shouldBe): - (test0): - (test1): - (test2): - (test3): - (test4): - (test5): - * stress/folding-get-by-val-with-immutable-butterfly-with-types.js: Added. - (shouldBe): - (test0): - (test1): - (test2): - (test3): - (test4): - (test5): - * stress/folding-get-by-val-with-immutable-butterfly.js: Added. - (shouldBe): - (checking): - (test): - -2018-07-20 Saam Barati - - CompareEq should be using KnownOtherUse instead of OtherUse - https://bugs.webkit.org/show_bug.cgi?id=186814 - - - Reviewed by Filip Pizlo. - - * stress/compare-eq-should-use-known-other-use.js: Added. - (bar): - (i.func): - -2018-07-20 David Fenton - - stress/spread-forward-varargs-stack-overflow.js is timing out in 32 bit JSC tests. - https://bugs.webkit.org/show_bug.cgi?id=187698 - - Unreviewed test gardening, skipped test in 32 Bit JSC. - - * stress/spread-forward-varargs-stack-overflow.js: - -2018-07-18 Yusuke Suzuki - - JSON.stringify should emit non own properties if second array argument includes - https://bugs.webkit.org/show_bug.cgi?id=187724 - - Reviewed by Mark Lam. - - * stress/json-stringify-getter-call.js: Added. - (shouldBe): - (A.prototype.get cocoa): - (A.prototype.get cappuccino): - (A): - (shouldBe.JSON.stringify): - -2018-07-18 Yusuke Suzuki - - [JSC] JSON.stringify's replacer should use `isArray` instead of JSArray checks - https://bugs.webkit.org/show_bug.cgi?id=187755 - - Reviewed by Mark Lam. - - * stress/json-stringify-gap-calculation-should-be-after-replacer-check.js: Added. - (shouldThrow): - (shouldThrow.string.toString): - * test262/expectations.yaml: - -2018-07-12 Yusuke Suzuki - - [JSC] Generator and AsyncGeneratorMethod's prototype is incorrect - https://bugs.webkit.org/show_bug.cgi?id=187585 - - Reviewed by Darin Adler. - - * stress/default-proto-for-async-generator.js: Added. - (shouldBe): - (async.asyncGenerator): - * stress/default-proto-for-generator.js: Added. - (shouldBe): - (generator): - * stress/prototype-for-async-generator.js: Added. - (shouldBe): - (async.asyncGenerator): - (A.prototype.async.asyncGenerator): - (A): - * test262/expectations.yaml: - -2018-07-11 Ryan Haddad - - Skip JSC test stress/keep-checks-when-converting-to-lazy-js-constant-in-strength-reduction.js - https://bugs.webkit.org/show_bug.cgi?id=187559 - - Unreviewed test gardening. - - * stress/keep-checks-when-converting-to-lazy-js-constant-in-strength-reduction.js: - -2018-07-11 Yusuke Suzuki - - Iterator of Array.keys() returns object in wrong order - https://bugs.webkit.org/show_bug.cgi?id=185197 - - Reviewed by Keith Miller. - - We align the shape of our iterator result to the spec: {value,done} instead of {done,value}. - - * stress/iterator-field-order.js: Added. - (shouldBe): - (shouldBe.JSON.stringify.array.values.next): - (shouldBe.JSON.stringify.array.keys.next): - (shouldBe.JSON.stringify.array.entries.next): - (async.asyncIterator): - (iterator.next.then): - (generator): - (shouldBe.JSON.stringify.generator.next): - (shouldBe.JSON.stringify.map.keys.next): - (shouldBe.JSON.stringify.map.values.next): - (shouldBe.JSON.stringify.map.entries.next): - (set new): - -2018-07-11 Yusuke Suzuki - - Unreviewed, clean up test262 expectations - - * test262/expectations.yaml: - -2018-07-10 Mark Lam - - constructArray() should always allocate the requested length. - https://bugs.webkit.org/show_bug.cgi?id=187543 - - - Reviewed by Saam Barati. - - * stress/regress-187543-2.js: Added. - * stress/regress-187543-3.js: Added. - * stress/regress-187543.js: Added. - -2018-07-10 Keith Miller - - hasOwnProperty returns true for out of bounds property index on TypedArray - https://bugs.webkit.org/show_bug.cgi?id=187520 - - Reviewed by Saam Barati. - - getOwnPropertySlot returns true on out of bounds indicies for - TypedArrays, which is incorrect. - - * stress/typedarray-hasOwnProperty-out-of-bounds.js: Added. - (test): - -2018-07-10 Michael Saboff - - DFG JIT: compileMathIC produces incorrect machine code - https://bugs.webkit.org/show_bug.cgi?id=187537 - - Reviewed by Saam Barati. - - Added new test case. - - * stress/arith-mul-with-constants.js: - (testArithMulWithTypeConfusedConstant.testMult): - (testArithMulWithTypeConfusedConstant): - -2018-07-10 Michael Saboff - - YARR: . doesn't match non-BMP Unicode characters in some cases - https://bugs.webkit.org/show_bug.cgi?id=187248 - - Reviewed by Geoffrey Garen. - - New regression test. - - * stress/regexp-with-nonBMP-any.js: Added. - -2018-07-09 Michael Saboff - - REGRESSION (ICU-62100.0.1): JSC test mozilla-tests.yaml/ecma/String/15.5.4.12-3.js is failing - https://bugs.webkit.org/show_bug.cgi?id=187495 - - Reviewed by Saam Barati. - - Commented out the Georgian section of this toUpper() test since Unicode 11 added new upper case characters for - most of this range. - - * mozilla/ecma/String/15.5.4.12-3.js: - (getTestCases): - (DecimalToHexString): - -2018-07-02 Sukolsak Sakshuwong - - RegExp.exec returns wrong value with a long integer quantifier - https://bugs.webkit.org/show_bug.cgi?id=187042 - - Reviewed by Saam Barati. - - * stress/regexp-large-quantifier.js: Added. - (testRegExp): - * stress/regress-159744.js: - -2018-07-02 Ryosuke Niwa - - Repository fix after r233427 and r233443. - Added back the test which got erroneously deleted in r233443. - - * stress/instanceof-non-object-prototype.js: - -2018-07-02 Keith Miller - - InstanceOf IC should do generic if the prototype is not an object. - https://bugs.webkit.org/show_bug.cgi?id=187250 - - Reviewed by Mark Lam. - - * stress/instanceof-non-object-prototype.js: Added. - (let): - (test): - (i.catch): - -2018-06-30 Mark Lam - - Builtins and host functions should get their own structures. - https://bugs.webkit.org/show_bug.cgi?id=187211 - - - Reviewed by Saam Barati. - - * stress/regress-187211.js: Added. - -2018-06-29 Saam Barati - - We shouldn't recurse into the parser when gathering metadata about various function offsets - https://bugs.webkit.org/show_bug.cgi?id=184074 - - - Reviewed by Mark Lam. - - * microbenchmarks/try-get-by-id-basic.js: - (const.bench.f.const.fooPlusBar.createBuiltin): - * microbenchmarks/try-get-by-id-polymorphic.js: - (fooPlusBar.createBuiltin): - * stress/array-push-with-force-exit.js: - * stress/dont-crash-on-stack-overflow-when-parsing-builtin.js: Added. - (f): - * stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js: Added. - (foo): - (prototype.runNearStackLimit): - * stress/is-constructor.js: - * stress/tailCallForwardArguments.js: - (putFuncToPrivateName.createBuiltin): - -2018-06-27 Mark Lam - - DFG's compileReallocatePropertyStorage() and compileAllocatePropertyStorage() slow paths should also clear unused properties. - https://bugs.webkit.org/show_bug.cgi?id=187091 - - - Reviewed by Yusuke Suzuki. - - * stress/regress-187091.js: Added. - -2018-06-27 Yusuke Suzuki - - [JSC] ArrayPatternNode::emitDirectBinding does not return assignment target value if dst is nullptr - https://bugs.webkit.org/show_bug.cgi?id=185943 - - Reviewed by Mark Lam. - - * stress/direct-binding-return-result.js: Added. - (shouldBe): - (test): - -2018-06-26 Mark Lam - - eval() is wrong about the LiteralParser never throwing any exceptions. - https://bugs.webkit.org/show_bug.cgi?id=187074 - - - Reviewed by Saam Barati. - - * stress/regress-187074.js: Added. - -2018-06-26 Mark Lam - - ASSERTION FAILED: length > butterfly->vectorLength() in JSObject::ensureLengthSlow(). - https://bugs.webkit.org/show_bug.cgi?id=187060 - - - Reviewed by Keith Miller. - - * stress/regress-187060.js: Added. - -2018-06-25 Mark Lam - - constructArray() should set m_numValuesInVector to the specified length. - https://bugs.webkit.org/show_bug.cgi?id=187010 - - - Reviewed by Filip Pizlo. - - * stress/regress-187010.js: Added. - -2018-06-25 Mark Lam - - Add missing exception check in RegExpObjectInlines.h's collectMatches. - https://bugs.webkit.org/show_bug.cgi?id=187006 - - - Reviewed by Keith Miller. - - * stress/regress-187006.js: Added. - -2018-06-22 Keith Miller - - unshift should zero unused property storage - https://bugs.webkit.org/show_bug.cgi?id=186960 - - Reviewed by Saam Barati. - - * stress/array-unshift-zero-property-storage.js: Added. - (run): - (test): - -2018-06-22 Mark Lam - - PropertyCondition::isValidValueForAttributes() should also consider deleted values. - https://bugs.webkit.org/show_bug.cgi?id=186943 - - - Reviewed by Saam Barati. - - * stress/regress-186943.js: Added. - -2018-06-22 Keith Miller - - performProxyCall should toThis the value passed to its handler - https://bugs.webkit.org/show_bug.cgi?id=186951 - - Reviewed by Mark Lam. - - * stress/proxy-call-apply-handler-to-this.js: Added. - (applyHandler): - (let.f.new.Proxy): - (withScope): - (lexicalScope): - (strictEvalScope): - (BigInt): - -2018-06-20 Keith Miller - - flattenDictionaryStruture needs to zero inline storage. - https://bugs.webkit.org/show_bug.cgi?id=186869 - - Reviewed by Saam Barati. - - * stress/flatten-object-zero-unused-inline-properties.js: Added. - -2018-06-19 Saam Barati - - DirectArguments::create needs to initialize to undefined instead of the empty value - https://bugs.webkit.org/show_bug.cgi?id=186818 - - - Reviewed by Filip Pizlo. - - * stress/create-direct-arguments-in-osr-should-initialize-to-undefined.js: Added. - (foo): - (bar): - -2018-06-19 Tadeu Zagallo - - ShadowChicken crashes with stack overflow in the LLInt - https://bugs.webkit.org/show_bug.cgi?id=186540 - - - Reviewed by Saam Barati. - - Add test that stack overflows and crashes on ShadowChicken when JIT is - disabled and forceDebuggerBytecodeGeneration is enabled. - - * stress/llint-stack-overflow-debugging-opcodes.js: Added. - (foo): - (catch): - -2018-06-19 Leo Balter - - [test262-runner] More updates to the skip list - https://bugs.webkit.org/show_bug.cgi?id=186786 - - Reviewed by Michael Saboff. - - * test262/config.yaml: - * test262/expectations.yaml: - -2018-06-19 Saam Barati - - Wasm: Any function argument of type Void should be a validation error - https://bugs.webkit.org/show_bug.cgi?id=186794 - - - Reviewed by Keith Miller. - - * wasm/Builder.js: - (const._normalizeFunctionSignature): - * wasm/function-tests/void-argument-type-should-be-a-validation-error.js: Added. - (getBinary): - * wasm/self-test/test_BuilderJSON.js: - -2018-06-18 Keith Miller - - Properly zero unused property storage offsets - https://bugs.webkit.org/show_bug.cgi?id=186692 - - Reviewed by Filip Pizlo. - - * stress/butterfly-zero-unused-butterfly-properties.js: Added. - -2018-06-18 Michael Saboff - - Support Unicode 11 in RegExp - https://bugs.webkit.org/show_bug.cgi?id=186685 - - Reviewed by Mark Lam. - - * test262/config.yaml: Removed from skip list Unicode 11 property tests as they - are now supported. Added new bug reference for still failing - test/built-ins/RegExp/property-escapes/character-class.js test. - - * test262/test/built-ins/RegExp/property-escapes/unsupported-binary-properties.js: - Removed "Extended_Pictographic" from unsupported properties since Unicode 11 now supports them. - -2018-06-16 Leo Balter - - Update Test262 2018-06-15 - https://bugs.webkit.org/show_bug.cgi?id=186695 - - Reviewed by Michael Saboff. - - Also update the skip list - in the config file - with new failures - * test262/config.yaml: - * test262/expectations.yaml: - * test262/harness/testIntl.js: - (getInvalidLanguageTags): - * test262/latest-changes-summary.txt: - * test262/test/built-ins/Date/parse/time-value-maximum-range.js: Added. - * test262/test/built-ins/Date/parse/zero.js: Added. - * test262/test/built-ins/JSON/stringify/bigint-cross-realm.js: Added. - (other.BigInt.prototype.toJSON): - * test262/test/built-ins/Object/prototype/toString/symbol-tag-non-str-bigint.js: Added. - * test262/test/built-ins/Object/prototype/toString/symbol-tag-override-bigint.js: Added. - * test262/test/built-ins/Reflect/ownKeys/return-on-corresponding-order-large-index.js: Added. - * test262/test/built-ins/RegExp/property-escapes/character-class.js: - * test262/test/built-ins/RegExp/property-escapes/generated/ASCII.js: - * test262/test/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Alphabetic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Any.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Assigned.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Bidi_Control.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Cased.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Dash.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Deprecated.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Diacritic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Emoji.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js: Added. - * test262/test/built-ins/RegExp/property-escapes/generated/Extender.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js: - * test262/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Hex_Digit.js: - * test262/test/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js: - * test262/test/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js: - * test262/test/built-ins/RegExp/property-escapes/generated/ID_Continue.js: - * test262/test/built-ins/RegExp/property-escapes/generated/ID_Start.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Ideographic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Join_Control.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Lowercase.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Math.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Radical.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Common.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Han.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js: Added. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js: Added. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js: Copied from JSTests/test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js. - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Uppercase.js: - * test262/test/built-ins/RegExp/property-escapes/generated/Variation_Selector.js: - * test262/test/built-ins/RegExp/property-escapes/generated/White_Space.js: - * test262/test/built-ins/RegExp/property-escapes/generated/XID_Continue.js: - * test262/test/built-ins/RegExp/property-escapes/generated/XID_Start.js: - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/internal-regexp-lastindex-not-zero.js: Removed. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-called-once.js: Renamed from JSTests/test262/test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-internal-regexp-is-false.js. - (o.get Symbol): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-internal-regexp-throws.js: Removed. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/regexpcreate-this-throws.js: - * test262/test/built-ins/Symbol/matchAll/prop-desc.js: - * test262/test/built-ins/Symbol/prototype/description/description-symboldescriptivestring.js: Added. - * test262/test/built-ins/Symbol/prototype/description/descriptor.js: Added. - * test262/test/built-ins/Symbol/prototype/description/get.js: Added. - * test262/test/built-ins/Symbol/prototype/description/is-not-own-property.js: Added. - * test262/test/built-ins/Symbol/prototype/description/this-val-non-symbol.js: Added. - * test262/test/built-ins/Symbol/prototype/description/this-val-symbol.js: Added. - * test262/test/built-ins/Symbol/prototype/description/wrapper.js: Added. - * test262/test/intl402/Intl/getCanonicalLocales/Locale-object.js: Added. - * test262/test/intl402/Locale/constructor-options-collation-invalid.js: - * test262/test/intl402/Locale/constructor-options-collation-valid.js: - * test262/test/intl402/Locale/constructor-options-hourcycle-valid.js: - * test262/test/intl402/Locale/constructor-options-language-invalid.js: - * test262/test/intl402/Locale/constructor-options-numberingsystem-invalid.js: - * test262/test/intl402/Locale/constructor-options-numberingsystem-valid.js: - * test262/test/intl402/Locale/constructor-tag.js: Added. - (canonical.of.Object.entries): - * test262/test/intl402/Locale/likely-subtags.js: Added. - (maximal.of.Object.entries): - (minimal.of.Object.entries): - * test262/test/intl402/Locale/prototype/baseName/branding.js: Added. - * test262/test/intl402/Locale/prototype/baseName/name.js: Added. - * test262/test/intl402/Locale/prototype/baseName/prop-desc.js: - * test262/test/intl402/Locale/prototype/calendar/branding.js: Added. - * test262/test/intl402/Locale/prototype/calendar/name.js: Added. - * test262/test/intl402/Locale/prototype/calendar/prop-desc.js: - * test262/test/intl402/Locale/prototype/caseFirst/branding.js: Added. - * test262/test/intl402/Locale/prototype/caseFirst/name.js: Added. - * test262/test/intl402/Locale/prototype/caseFirst/prop-desc.js: - * test262/test/intl402/Locale/prototype/collation/branding.js: Added. - * test262/test/intl402/Locale/prototype/collation/name.js: Added. - * test262/test/intl402/Locale/prototype/collation/prop-desc.js: - * test262/test/intl402/Locale/prototype/hourCycle/branding.js: Added. - * test262/test/intl402/Locale/prototype/hourCycle/name.js: Added. - * test262/test/intl402/Locale/prototype/hourCycle/prop-desc.js: - * test262/test/intl402/Locale/prototype/language/branding.js: Added. - * test262/test/intl402/Locale/prototype/language/name.js: Added. - * test262/test/intl402/Locale/prototype/language/prop-desc.js: - * test262/test/intl402/Locale/prototype/maximize/branding.js: Added. - * test262/test/intl402/Locale/prototype/minimize/branding.js: Added. - * test262/test/intl402/Locale/prototype/numberingSystem/branding.js: Added. - * test262/test/intl402/Locale/prototype/numberingSystem/name.js: Added. - * test262/test/intl402/Locale/prototype/numberingSystem/prop-desc.js: - * test262/test/intl402/Locale/prototype/numeric/branding.js: Added. - * test262/test/intl402/Locale/prototype/numeric/name.js: Added. - * test262/test/intl402/Locale/prototype/numeric/prop-desc.js: - * test262/test/intl402/Locale/prototype/region/branding.js: Added. - * test262/test/intl402/Locale/prototype/region/name.js: Added. - * test262/test/intl402/Locale/prototype/region/prop-desc.js: - * test262/test/intl402/Locale/prototype/script/branding.js: Added. - * test262/test/intl402/Locale/prototype/script/name.js: Added. - * test262/test/intl402/Locale/prototype/script/prop-desc.js: - * test262/test/intl402/Locale/prototype/toString/branding.js: Added. - * test262/test/intl402/NumberFormat/length.js: - * test262/test/intl402/PluralRules/prototype/resolvedOptions/pluralCategories.js: Added. - * test262/test/language/expressions/tagged-template/template-object-template-map.js: Added. - (tag): - * test262/test/language/expressions/tagged-template/template-object.js: - (templateObject.tag): - * test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-dunder-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dds-dunder-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dds-dunder-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-dds-nsl-ep-dd-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-ep-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-ep-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-ep-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-dunder-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-dunder-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-leading-zero-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-dunder-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-err.js: - * test262/test/language/literals/numeric/numeric-separator-literal-unicode-err.js: - * test262/test262-Revision.txt: - -2018-06-16 Yusuke Suzuki - - [DFG] Reduce OSRExit for Kraken/crypto-aes due to CoW array - https://bugs.webkit.org/show_bug.cgi?id=186721 - - Reviewed by Keith Miller. - - * stress/array-slice-cow.js: Added. - (shouldBe): - (testInt32): - (testDouble): - (testContiguous): - -2018-06-15 Yusuke Suzuki - - [DFG][FTL] Spread onto PhantomNewArrayBuffer assumes JSFixedArray, but JSImmutableButterfly is returned - https://bugs.webkit.org/show_bug.cgi?id=186460 - - Reviewed by Saam Barati. - - * stress/spread-escapes-but-new-array-buffer-does-not-double.js: Added. - (assert): - (getProperties): - (theFunc): - (let.obj.valueOf): - -2018-06-14 Leo Balter - - Test262-Runner: Update config list with some failing tests - https://bugs.webkit.org/show_bug.cgi?id=185628 - - Reviewed by Michael Saboff. - - The config list is updated to match some slow / hanging tests that are currenctly failing - due to the length used in Array or Array like objects. - - This also adds matching bugs for known features that are still in progress and not enabled - yet. - * test262/config.yaml: - -2018-06-12 Yusuke Suzuki - - Update test262 for Array#sort - https://bugs.webkit.org/show_bug.cgi?id=186458 - - * test262/expectations.yaml: - -2018-06-10 Yusuke Suzuki - - [JSC] Array.prototype.sort should rejects null comparator - https://bugs.webkit.org/show_bug.cgi?id=186458 - - Reviewed by Keith Miller. - - * ChakraCore/test/Array/array_sort.baseline-jsc: - * stress/array-sort-bad-comparator.js: - (test): - * stress/sort-null-comparator.js: Removed. - * test262/expectations.yaml: - -2018-06-07 Saam Barati - - Make DFG to FTL OSR entry code more sane by removing bad RELEASE_ASSERTS and making it trigger compiles in outer loops before inner ones - https://bugs.webkit.org/show_bug.cgi?id=186218 - - - Reviewed by Filip Pizlo. - - * stress/dont-crash-ftl-osr-entry.js: Added. - -2018-06-06 Yusuke Suzuki - - [DFG] Compare operations do not respect negative zeros - https://bugs.webkit.org/show_bug.cgi?id=183729 - - Reviewed by Saam Barati. - - * stress/comparison-ignore-negative-zero.js: Added. - (shouldBe): - (zero): - (negativeZero): - (object.valueOf): - (test): - -2018-06-06 Saam Barati - - generateConditionsForInstanceOf needs to see if the object has a poly proto structure before assuming it has a constant prototype - https://bugs.webkit.org/show_bug.cgi?id=186363 - - Rubber-stamped by Filip Pizlo. - - * stress/instance-of-on-poly-proto-opc-should-not-crash.js: Added. - -2018-06-05 David Fenton - - Temporarily Skip JSC stress test failures that are consistently occurring. - https://bugs.webkit.org/show_bug.cgi?id=186283 - - Unreviewed test gardening. - - * executableAllocationFuzz.yaml: - * slowMicrobenchmarks/default-derived-constructor.js: - * stress/put-direct-index-broken-2.js: - * stress/splay-flash-access.js: - * stress/spread-forward-call-varargs-stack-overflow.js: - -2018-06-04 Keith Miller - - Add test for CoW conversions in the DFG/FTL - https://bugs.webkit.org/show_bug.cgi?id=186295 - - Reviewed by Saam Barati. - - * stress/arrayprofile-should-not-convert-get-by-val-cow.js: Added. - (assertEq): - (withArrayArgInt32): - (withArrayLiteralInt32): - (withArrayArgDouble): - (withArrayLiteralDouble): - (withArrayArgContiguous): - (withArrayLiteralContiguous): - (test): - -2018-06-02 Caio Lima - - [ESNext][BigInt] Implement support for addition operations - https://bugs.webkit.org/show_bug.cgi?id=179002 - - Reviewed by Yusuke Suzuki. - - * bigIntTests.yaml: - * stress/addition-order-evaluation.js: Added. - * stress/big-int-add-wrapped-value.js: Added. - * stress/big-int-addition-basic.js: Added. - * stress/big-int-addition-jit.js: Added. - * stress/big-int-addition-memory-stress.js: Added. - * stress/big-int-addition-string-coercion.js: Added. - * stress/big-int-addition-to-primitive-precedence.js: Added. - * stress/big-int-addition-to-primitive.js: Added. - * stress/big-int-addition-type-error.js: Added. - * stress/big-int-no-conversion-to-number.js: - * stress/big-int-sub-wrapped-value.js: Added. - * stress/big-int-subtraction-basic.js: Added. - * stress/big-int-subtraction-jit.js: Added. - * stress/big-int-subtraction-type-error.js: Added. - * stress/sub-order-evaluation.js: Added. - -2018-06-02 Commit Queue - - Unreviewed, rolling out r232439. - https://bugs.webkit.org/show_bug.cgi?id=186238 - - It breaks gtk-linux-32-release (Requested by caiolima on - #webkit). - - Reverted changeset: - - "[ESNext][BigInt] Implement support for addition operations" - https://bugs.webkit.org/show_bug.cgi?id=179002 - https://trac.webkit.org/changeset/232439 - -2018-06-01 Yusuke Suzuki - - Baseline op_jtrue emits an insane amount of code - https://bugs.webkit.org/show_bug.cgi?id=185708 - - Reviewed by Filip Pizlo. - - * stress/logical-not-masquerades-as-undefined.js: Added. - (shouldBe): - (test): - * stress/logical-not.js: Added. - (shouldBe): - (test): - -2018-06-02 Yusuke Suzuki - - [JSC] Remove WeakReferenceHarvester - https://bugs.webkit.org/show_bug.cgi?id=186102 - - Reviewed by Filip Pizlo. - - * microbenchmarks/create-many-weak-map.js: Added. - -2018-06-02 Yusuke Suzuki - - [JSC] Object.create should have intrinsic - https://bugs.webkit.org/show_bug.cgi?id=186200 - - Reviewed by Filip Pizlo. - - * microbenchmarks/object-create-null.js: Added. - (test): - * microbenchmarks/object-create-unknown-object-prototype.js: Added. - (test): - * microbenchmarks/object-create-untyped-prototype.js: Added. - (test): - * stress/get-by-pname-only-prototype-properties.js: Added. - (foo): - * stress/object-create-define.js: Added. - (shouldBe): - (test): - * stress/object-create-null-external.js: Added. - (shouldBe): - (test): - * stress/object-create-null.js: Added. - (shouldBe): - (test): - * stress/object-create-prototype.js: Added. - (shouldBe): - (test): - * stress/object-create-undefined.js: Added. - (shouldThrow): - (i.shouldThrow): - -2018-06-02 Caio Lima - - [ESNext][BigInt] Implement support for addition operations - https://bugs.webkit.org/show_bug.cgi?id=179002 - - Reviewed by Yusuke Suzuki. - - * bigIntTests.yaml: - * stress/addition-order-evaluation.js: Added. - * stress/big-int-add-wrapped-value.js: Added. - * stress/big-int-addition-basic.js: Added. - * stress/big-int-addition-jit.js: Added. - * stress/big-int-addition-memory-stress.js: Added. - * stress/big-int-addition-string-coercion.js: Added. - * stress/big-int-addition-to-primitive-precedence.js: Added. - * stress/big-int-addition-to-primitive.js: Added. - * stress/big-int-addition-type-error.js: Added. - * stress/big-int-no-conversion-to-number.js: - * stress/big-int-sub-wrapped-value.js: Added. - * stress/big-int-subtraction-basic.js: Added. - * stress/big-int-subtraction-jit.js: Added. - * stress/big-int-subtraction-type-error.js: Added. - * stress/sub-order-evaluation.js: Added. - -2018-05-29 Yusuke Suzuki - - [JSC] Add Symbol.prototype.description getter - https://bugs.webkit.org/show_bug.cgi?id=186053 - - Reviewed by Keith Miller. - - * stress/symbol-description.js: Added. - (shouldBe): - (shouldThrow): - -2018-05-30 Yusuke Suzuki - - [DFG] InById should be converted to MatchStructure - https://bugs.webkit.org/show_bug.cgi?id=185803 - - Reviewed by Keith Miller. - - * microbenchmarks/in-by-id-match.js: Added. - (test): - * microbenchmarks/in-by-id-removed.js: Added. - (test): - * stress/in-by-id-constant.js: Added. - (shouldBe): - (test1): - * stress/in-by-id-match-invalid.js: Added. - (shouldBe): - (test1): - * stress/in-by-id-match.js: Added. - (shouldBe): - (test1): - -2018-05-31 Caio Lima - - [ESNext][BigInt] Implement support for "=<" and ">=" relational operation - https://bugs.webkit.org/show_bug.cgi?id=185929 - - Reviewed by Yusuke Suzuki. - - * bigIntTests.yaml: - * stress/big-int-greater-than-or-equal-jit.js: Added. - * stress/big-int-greater-than-or-equal-order-of-evaluation.js: Added. - * stress/big-int-greater-than-or-equal-wrapped-values.js: Added. - * stress/big-int-greater-than-or-equal.js: Added. - * stress/big-int-less-than-or-equal-general.js: Added. - * stress/big-int-less-than-or-equal-jit.js: Added. - * stress/big-int-less-than-or-equal-order-of-evaluation.js: Added. - * stress/big-int-less-than-or-equal-wrapped-values.js: Added. - -2018-05-31 Saam Barati - - Cache toString results for CoW arrays - https://bugs.webkit.org/show_bug.cgi?id=186160 - - Reviewed by Keith Miller. - - * microbenchmarks/to-string-on-cow-array.js: Added. - (foo): - -2018-05-31 Keith Miller - - Rebaseline test for change in Error.stack behavior. - - * stress/error-stack-trace-limit.js: - (numberOfFrames): - -2018-05-30 Saam Barati - - DFG combined liveness needs to say that the machine CodeBlock's arguments are live - https://bugs.webkit.org/show_bug.cgi?id=186121 - - - Reviewed by Keith Miller. - - * stress/combined-liveness-needs-to-say-arguments-are-live.js: Added. - (baz): - (foo): - -2018-05-30 Keith Miller - - Unreviewed, uncomment erroneously commented test code. - - * stress/error-stack-trace-limit.js: - -2018-05-30 Keith Miller - - LLInt get_by_id prototype caching doesn't properly handle changes - https://bugs.webkit.org/show_bug.cgi?id=186112 - - Reviewed by Filip Pizlo. - - * stress/llint-proto-get-by-id-cache-change-prototype.js: Added. - (foo): - * stress/llint-proto-get-by-id-cache-intercept-value.js: Added. - (foo): - -2018-05-30 Caio Lima - - [ESNext][BigInt] Implement support for "%" operation - https://bugs.webkit.org/show_bug.cgi?id=184327 - - Reviewed by Yusuke Suzuki. - - * bigIntTests.yaml: - * stress/big-int-mod-memory-stress.js: Added. - * stress/big-int-mod-to-primitive-precedence.js: Added. - * stress/big-int-mod-to-primitive.js: Added. - * stress/big-int-mod-type-error.js: Added. - * stress/big-int-mod-wrapped-value.js: Added. - * stress/big-int-mod.js: Added. - -2018-05-29 Caitlin Potter - - [JSTests] update test262 expectations after r232261 - https://bugs.webkit.org/show_bug.cgi?id=184267 - - Reviewed by Saam Barati. - - * test262/expectations.yaml: - -2018-05-29 Caio Lima - - [ESNext][BigInt] Implement support for "<" and ">" relational operation - https://bugs.webkit.org/show_bug.cgi?id=185379 - - Reviewed by Yusuke Suzuki. - - * stress/big-int-greater-than-general.js: Added. - * stress/big-int-greater-than-jit.js: Added. - * stress/big-int-greater-than-order-of-evaluation.js: Added. - * stress/big-int-greater-than-wrapped-values.js: Added. - * stress/big-int-less-than-general.js: Added. - * stress/big-int-less-than-jit.js: Added. - * stress/big-int-less-than-order-of-evaluation.js: Added. - * stress/big-int-less-than-wrapped-values.js: Added. - -2018-05-29 Caitlin Potter - - [JSC] Fix Array.prototype.concat fast case when single argument is Proxy - https://bugs.webkit.org/show_bug.cgi?id=184267 - - Reviewed by Saam Barati. - - * stress/array-concat-fast-spread-proxy.js: Copied from JSTests/stress/array-concat-spread-proxy.js. - (arrayEq): - (catch): - * stress/array-concat-spread-proxy.js: - -2018-05-27 Caio Lima - - [ESNext][BigInt] Implement "+" and "-" unary operation - https://bugs.webkit.org/show_bug.cgi?id=182214 - - Reviewed by Yusuke Suzuki. - - * stress/big-int-negate-basic.js: Added. - * stress/big-int-negate-jit.js: Added. - * stress/big-int-unary-plus.js: Added. - -2018-05-26 Yusuke Suzuki - - [JSC] Rename Array#flatten to flat - https://bugs.webkit.org/show_bug.cgi?id=186012 - - Reviewed by Saam Barati. - - * stress/array-flatten.js: - (shouldThrow): - * test262/expectations.yaml: - -2018-05-23 Yusuke Suzuki - - Upgrade test262 to May 24 version - https://bugs.webkit.org/show_bug.cgi?id=185937 - - Reviewed by Darin Adler. - - * test262/expectations.yaml: - * test262/harness/doneprintHandle.js: - (DONE): - * test262/latest-changes-summary.txt: - * test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added. - * test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added. - * test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added. - * test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added. - * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js. - * test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added. - * test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-global-init.js: - * test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added. - * test262/test/annexB/language/global-code/block-decl-global-existing-global-init.js: Added. - (262.evalScript.f): - * test262/test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js: Added. - (262.evalScript.f): - * test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-global-init.js: Added. - (262.evalScript.true.f): - (else._f): - * test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js: Added. - (262.evalScript.true.f): - (else._f): - * test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-global-init.js: Added. - (262.evalScript.false._f): - (else.f): - * test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js: Added. - (262.evalScript.false._f): - (else.f): - * test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-global-init.js: Added. - (262.evalScript.true.f): - * test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js: Added. - (262.evalScript.true.f): - * test262/test/annexB/language/global-code/if-decl-no-else-global-existing-global-init.js: Added. - (262.evalScript.true.f): - * test262/test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js: Added. - (262.evalScript.true.f): - * test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-global-init.js: Added. - (else.f): - * test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js: Added. - (else.f): - * test262/test/annexB/language/global-code/switch-case-global-existing-global-init.js: Added. - (262.evalScript.switch.case.1): - (262.evalScript.switch): - * test262/test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js: Added. - (262.evalScript.switch.case.1): - (262.evalScript.switch): - * test262/test/annexB/language/global-code/switch-dflt-global-existing-global-init.js: Added. - (262.evalScript.switch.default): - (262.evalScript.switch): - * test262/test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js: Added. - (262.evalScript.switch.default): - (262.evalScript.switch): - * test262/test/built-ins/Array/prototype/flat/array-like-objects.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/array-like-objects.js. - * test262/test/built-ins/Array/prototype/flat/bound-function-call.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/bound-function-call.js. - * test262/test/built-ins/Array/prototype/flat/empty-array-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-array-elements.js. - * test262/test/built-ins/Array/prototype/flat/empty-object-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-object-elements.js. - * test262/test/built-ins/Array/prototype/flat/length.js: Added. - * test262/test/built-ins/Array/prototype/flat/name.js: Added. - * test262/test/built-ins/Array/prototype/flat/non-numeric-depth-should-not-throw.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js. - * test262/test/built-ins/Array/prototype/flat/non-object-ctor-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js. - * test262/test/built-ins/Array/prototype/flat/null-undefined-elements.js: Added. - * test262/test/built-ins/Array/prototype/flat/null-undefined-input-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js. - * test262/test/built-ins/Array/prototype/flat/positive-infinity.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/positive-infinity.js. - * test262/test/built-ins/Array/prototype/flat/prop-desc.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/prop-desc.js. - * test262/test/built-ins/Array/prototype/flat/symbol-object-create-null-depth-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js. - * test262/test/built-ins/Array/prototype/flatten/length.js: Removed. - * test262/test/built-ins/Array/prototype/flatten/name.js: Removed. - * test262/test/built-ins/Array/prototype/flatten/null-undefined-elements.js: Removed. - * test262/test/built-ins/AsyncGeneratorPrototype/next/name.js: - * test262/test/built-ins/AsyncGeneratorPrototype/return/name.js: - * test262/test/built-ins/AsyncGeneratorPrototype/throw/name.js: - * test262/test/built-ins/Math/acosh/nan-returns.js: - * test262/test/built-ins/Math/asinh/asinh-specialVals.js: - * test262/test/built-ins/Math/atanh/atanh-specialVals.js: - * test262/test/built-ins/Math/cbrt/cbrt-specialValues.js: - * test262/test/built-ins/Math/cbrt/prop-desc.js: - * test262/test/built-ins/Math/cosh/cosh-specialVals.js: - * test262/test/built-ins/Math/expm1/expm1-specialVals.js: - * test262/test/built-ins/Math/log10/Log10-specialVals.js: - * test262/test/built-ins/Math/log2/log2-basicTests.js: - * test262/test/built-ins/Math/sign/sign-specialVals.js: - * test262/test/built-ins/Math/sinh/sinh-specialVals.js: - * test262/test/built-ins/Math/tanh/tanh-specialVals.js: - * test262/test/built-ins/Math/trunc/trunc-sampleTests.js: - * test262/test/built-ins/Math/trunc/trunc-specialVals.js: - * test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js: Added. - * test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js: Added. - * test262/test/intl402/Intl/getCanonicalLocales/descriptor.js: - * test262/test/intl402/Intl/getCanonicalLocales/duplicates.js: - * test262/test/intl402/Locale/constructor-getter-order.js: Added. - (new.Intl.Locale.toString): - (get language): - (get script): - (get region): - (get calendar): - (get collation): - (get hourCycle): - (get caseFirst): - (get numeric): - (get numberingSystem): - * test262/test/intl402/Locale/constructor-locale-object.js: Added. - * test262/test/intl402/Locale/constructor-non-iana-canon.js: Added. - * test262/test/intl402/Locale/constructor-options-casefirst-invalid.js: Added. - (valueOf): - (const.invalidCaseFirstOption.of.invalidCaseFirstOptions.new.Intl.Locale): - * test262/test/intl402/Locale/constructor-options-casefirst-valid.js: Added. - (toString): - * test262/test/intl402/Locale/constructor-options-collation-invalid.js: Added. - (const.invalidCollationOption.of.invalidCollationOptions.new.Intl.Locale): - * test262/test/intl402/Locale/constructor-options-collation-valid.js: Added. - * test262/test/intl402/Locale/constructor-options-hourcycle-invalid.js: Added. - (const.invalidHourCycleOption.of.invalidHourCycleOptions.new.Intl.Locale): - * test262/test/intl402/Locale/constructor-options-hourcycle-valid.js: Added. - (toString): - * test262/test/intl402/Locale/constructor-options-language-grandfathered.js: Added. - * test262/test/intl402/Locale/constructor-options-language-valid.js: - (toString): - * test262/test/intl402/Locale/constructor-options-numberingsystem-invalid.js: Added. - (const.invalidNumberingSystemOption.of.invalidNumberingSystemOptions.new.Intl.Locale): - * test262/test/intl402/Locale/constructor-options-numberingsystem-valid.js: Added. - * test262/test/intl402/Locale/constructor-options-numeric-valid.js: Added. - (valueOf): - * test262/test/intl402/Locale/constructor-options-region-valid.js: - * test262/test/intl402/Locale/constructor-options-script-valid.js: - (toString): - * test262/test/intl402/Locale/constructor-parse-twice.js: Added. - * test262/test/intl402/Locale/constructor-tag-tostring.js: Added. - (CustomError): - (WrongCustomError): - (const.errors.get Symbol): - (throw.new.CustomError): - (throw.new.CustomError.get toString): - (throw.new.CustomError.get valueOf): - (throw.new.WrongCustomError.get valueOf): - (throw.new.WrongCustomError): - * test262/test/intl402/Locale/constructor-unicode-ext-invalid.js: Added. - * test262/test/intl402/Locale/constructor-unicode-ext-valid.js: Added. - (canonical.of.Object.entries): - * test262/test/intl402/Locale/extensions-grandfathered.js: Added. - (of.testData.value.of.Object.entries): - * test262/test/intl402/Locale/extensions-private.js: Added. - * test262/test/intl402/Locale/getters-grandfathered.js: Added. - * test262/test/intl402/Locale/getters-missing.js: Added. - * test262/test/intl402/Locale/getters-privateuse.js: Added. - * test262/test/intl402/Locale/getters.js: Added. - * test262/test/intl402/Locale/invalid-tag-throws-symbol.js: - * test262/test/intl402/Locale/likely-subtags-grandfathered.js: Added. - * test262/test/intl402/Locale/prop-desc.js: - * test262/test/intl402/Locale/prototype/baseName/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/calendar/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/caseFirst/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/collation/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/constructor/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js. - * test262/test/intl402/Locale/prototype/hourCycle/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/language/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/maximize/length.js: - * test262/test/intl402/Locale/prototype/maximize/prop-desc.js: - * test262/test/intl402/Locale/prototype/minimize/length.js: Copied from JSTests/test262/test/intl402/Locale/prototype/maximize/length.js. - * test262/test/intl402/Locale/prototype/minimize/name.js: Added. - * test262/test/intl402/Locale/prototype/minimize/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js. - * test262/test/intl402/Locale/prototype/numberingSystem/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/numeric/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/region/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/script/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/toString/prop-desc.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/constructor.js. - * test262/test/intl402/Locale/prototype/toStringTag/toStringTag.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/toStringTag.js. - * test262/test/intl402/Number/prototype/toLocaleString/length.js: - * test262/test/intl402/NumberFormat/length.js: - * test262/test/intl402/NumberFormat/name.js: - * test262/test/intl402/NumberFormat/prop-desc.js: - * test262/test/intl402/PluralRules/length.js: - * test262/test/intl402/PluralRules/name.js: - * test262/test/intl402/PluralRules/prop-desc.js: Copied from JSTests/test262/test/intl402/NumberFormat/prop-desc.js. - * test262/test/language/expressions/addition/bigint-and-number.js: - * test262/test/language/expressions/addition/bigint-arithmetic.js: - (testAdd): Deleted. - * test262/test/language/expressions/addition/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/addition/bigint-toprimitive.js: - * test262/test/language/expressions/addition/bigint-wrapped-values.js: - * test262/test/language/expressions/bitwise-and/bigint-and-number.js: - * test262/test/language/expressions/bitwise-and/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/bitwise-and/bigint-non-primitive.js: - (assert.sameValue.Symbol.toPrimitive): - (assert.sameValue.0b011n.Symbol.toPrimitive): - (assert.sameValue.valueOf): - (assert.sameValue.0b011n.valueOf): - (assert.sameValue.toString): - (assert.sameValue.0b011n.toString): - * test262/test/language/expressions/bitwise-and/bigint-toprimitive.js: - * test262/test/language/expressions/bitwise-and/bigint-wrapped-values.js: - * test262/test/language/expressions/bitwise-not/bigint-non-primitive.js: - (assert.sameValue.Symbol.toPrimitive): - (assert.sameValue.valueOf): - (assert.sameValue.toString): - * test262/test/language/expressions/bitwise-or/bigint-and-number.js: - * test262/test/language/expressions/bitwise-or/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/bitwise-or/bigint-non-primitive.js: - (assert.sameValue.Symbol.toPrimitive): - (assert.sameValue.0b011n.Symbol.toPrimitive): - (assert.sameValue.valueOf): - (assert.sameValue.0b011n.valueOf): - (assert.sameValue.toString): - (assert.sameValue.0b011n.toString): - * test262/test/language/expressions/bitwise-or/bigint-toprimitive.js: - * test262/test/language/expressions/bitwise-or/bigint-wrapped-values.js: - * test262/test/language/expressions/bitwise-xor/bigint-and-number.js: - * test262/test/language/expressions/bitwise-xor/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/bitwise-xor/bigint-non-primitive.js: - (assert.sameValue.Symbol.toPrimitive): - (assert.sameValue.0b011n.Symbol.toPrimitive): - (assert.sameValue.valueOf): - (assert.sameValue.0b011n.valueOf): - (assert.sameValue.toString): - (assert.sameValue.0b011n.toString): - * test262/test/language/expressions/bitwise-xor/bigint-toprimitive.js: - * test262/test/language/expressions/bitwise-xor/bigint-wrapped-values.js: - * test262/test/language/expressions/division/bigint-and-number.js: - * test262/test/language/expressions/division/bigint-arithmetic.js: - (testDiv): Deleted. - * test262/test/language/expressions/division/bigint-complex-infinity.js: - * test262/test/language/expressions/division/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/division/bigint-toprimitive.js: - * test262/test/language/expressions/division/bigint-wrapped-values.js: - * test262/test/language/expressions/does-not-equals/bigint-and-bigint.js: - * test262/test/language/expressions/does-not-equals/bigint-and-boolean.js: - * test262/test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js: - * test262/test/language/expressions/does-not-equals/bigint-and-non-finite.js: - * test262/test/language/expressions/does-not-equals/bigint-and-number-extremes.js: - * test262/test/language/expressions/does-not-equals/bigint-and-number.js: - * test262/test/language/expressions/does-not-equals/bigint-and-object.js: - (assert.sameValue.0n.valueOf): - (assert.sameValue.valueOf): - (assert.sameValue.0n.toString): - (assert.sameValue.toString): - (assert.sameValue.900719925474099101n.valueOf): - (assert.sameValue.900719925474099101n.toString): - * test262/test/language/expressions/does-not-equals/bigint-and-string.js: - * test262/test/language/expressions/equals/bigint-and-bigint.js: - * test262/test/language/expressions/equals/bigint-and-boolean.js: - * test262/test/language/expressions/equals/bigint-and-incomparable-primitive.js: - * test262/test/language/expressions/equals/bigint-and-non-finite.js: - * test262/test/language/expressions/equals/bigint-and-number-extremes.js: - * test262/test/language/expressions/equals/bigint-and-number.js: - * test262/test/language/expressions/equals/bigint-and-object.js: - (assert.sameValue.0n.valueOf): - (assert.sameValue.valueOf): - (assert.sameValue.0n.toString): - (assert.sameValue.toString): - (assert.sameValue.900719925474099101n.valueOf): - (assert.sameValue.900719925474099101n.toString): - * test262/test/language/expressions/equals/bigint-and-string.js: - * test262/test/language/expressions/exponentiation/bigint-and-number.js: - * test262/test/language/expressions/exponentiation/bigint-arithmetic.js: - (testExpt): Deleted. - * test262/test/language/expressions/exponentiation/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/exponentiation/bigint-negative-exponent-throws.js: Renamed from JSTests/test262/test/language/expressions/exponentiation/bigint-exp-operator-negative-throws.js. - * test262/test/language/expressions/exponentiation/bigint-toprimitive.js: - * test262/test/language/expressions/exponentiation/bigint-wrapped-values.js: - * test262/test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js: - * test262/test/language/expressions/greater-than-or-equal/bigint-and-bigint.js: - * test262/test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js: - * test262/test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js: - * test262/test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js: - * test262/test/language/expressions/greater-than-or-equal/bigint-and-number.js: - * test262/test/language/expressions/greater-than-or-equal/bigint-and-string.js: - * test262/test/language/expressions/greater-than/11.8.2-1.js: - (obj1.valueOf): - (obj2.valueOf): - * test262/test/language/expressions/greater-than/11.8.2-2.js: - (obj1.valueOf): - (obj2.toString): - * test262/test/language/expressions/greater-than/11.8.2-3.js: - (obj1.toString): - (obj2.valueOf): - * test262/test/language/expressions/greater-than/11.8.2-4.js: - (obj1.toString): - (obj2.toString): - * test262/test/language/expressions/greater-than/bigint-and-bigint.js: - * test262/test/language/expressions/greater-than/bigint-and-boolean.js: - * test262/test/language/expressions/greater-than/bigint-and-incomparable-string.js: - * test262/test/language/expressions/greater-than/bigint-and-non-finite.js: - * test262/test/language/expressions/greater-than/bigint-and-number-extremes.js: - * test262/test/language/expressions/greater-than/bigint-and-number.js: - * test262/test/language/expressions/greater-than/bigint-and-string.js: - * test262/test/language/expressions/greater-than/bigint-and-symbol.js: Added. - * test262/test/language/expressions/left-shift/bigint-and-number.js: - * test262/test/language/expressions/left-shift/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/left-shift/bigint-non-primitive.js: - (assert.sameValue.Symbol.toPrimitive): - (assert.sameValue.valueOf): - (assert.sameValue.toString): - (assert.sameValue.0b101n.Symbol.toPrimitive): - (assert.sameValue.0b101n.valueOf): - (assert.sameValue.0b101n.toString): - (valueOf): - * test262/test/language/expressions/left-shift/bigint-toprimitive.js: - * test262/test/language/expressions/left-shift/bigint-wrapped-values.js: - * test262/test/language/expressions/less-than-or-equal/11.8.3-1.js: - (obj1.valueOf): - (obj2.valueOf): - * test262/test/language/expressions/less-than-or-equal/11.8.3-2.js: - (obj1.valueOf): - (obj2.toString): - * test262/test/language/expressions/less-than-or-equal/11.8.3-3.js: - (obj1.toString): - (obj2.valueOf): - * test262/test/language/expressions/less-than-or-equal/11.8.3-4.js: - (obj1.toString): - (obj2.toString): - * test262/test/language/expressions/less-than-or-equal/11.8.3-5.js: Removed. - * test262/test/language/expressions/less-than-or-equal/bigint-and-bigint.js: - * test262/test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js: - * test262/test/language/expressions/less-than-or-equal/bigint-and-non-finite.js: - * test262/test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js: - * test262/test/language/expressions/less-than-or-equal/bigint-and-number.js: - * test262/test/language/expressions/less-than-or-equal/bigint-and-string.js: - * test262/test/language/expressions/less-than/bigint-and-bigint.js: - * test262/test/language/expressions/less-than/bigint-and-boolean.js: - * test262/test/language/expressions/less-than/bigint-and-incomparable-string.js: - * test262/test/language/expressions/less-than/bigint-and-non-finite.js: - * test262/test/language/expressions/less-than/bigint-and-number-extremes.js: - * test262/test/language/expressions/less-than/bigint-and-number.js: - * test262/test/language/expressions/less-than/bigint-and-string.js: - * test262/test/language/expressions/less-than/bigint-and-symbol.js: Added. - * test262/test/language/expressions/modulus/bigint-and-number.js: - * test262/test/language/expressions/modulus/bigint-arithmetic.js: - (testMod): Deleted. - * test262/test/language/expressions/modulus/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/modulus/bigint-modulo-zero.js: - * test262/test/language/expressions/modulus/bigint-toprimitive.js: - * test262/test/language/expressions/modulus/bigint-wrapped-values.js: - * test262/test/language/expressions/multiplication/bigint-and-number.js: - * test262/test/language/expressions/multiplication/bigint-arithmetic.js: - (testMul): Deleted. - * test262/test/language/expressions/multiplication/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/multiplication/bigint-toprimitive.js: - * test262/test/language/expressions/multiplication/bigint-wrapped-values.js: - * test262/test/language/expressions/right-shift/bigint-and-number.js: - * test262/test/language/expressions/right-shift/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/right-shift/bigint-non-primitive.js: - (assert.sameValue.Symbol.toPrimitive): - (assert.sameValue.valueOf): - (assert.sameValue.toString): - (assert.sameValue.0b101n.Symbol.toPrimitive): - (assert.sameValue.0b101n.valueOf): - (assert.sameValue.0b101n.toString): - (valueOf): - * test262/test/language/expressions/right-shift/bigint-toprimitive.js: - * test262/test/language/expressions/right-shift/bigint-wrapped-values.js: - * test262/test/language/expressions/strict-does-not-equals/bigint-and-bigint.js: - * test262/test/language/expressions/strict-does-not-equals/bigint-and-boolean.js: - * test262/test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js: - * test262/test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js: - * test262/test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js: - * test262/test/language/expressions/strict-does-not-equals/bigint-and-number.js: - * test262/test/language/expressions/strict-does-not-equals/bigint-and-object.js: - (assert.sameValue.0n.valueOf): - (assert.sameValue.valueOf): - (assert.sameValue.0n.toString): - (assert.sameValue.toString): - (assert.sameValue.900719925474099101n.valueOf): - (assert.sameValue.900719925474099101n.toString): - * test262/test/language/expressions/strict-does-not-equals/bigint-and-string.js: - * test262/test/language/expressions/strict-equals/bigint-and-bigint.js: - * test262/test/language/expressions/strict-equals/bigint-and-boolean.js: - * test262/test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js: - * test262/test/language/expressions/strict-equals/bigint-and-non-finite.js: - * test262/test/language/expressions/strict-equals/bigint-and-number-extremes.js: - * test262/test/language/expressions/strict-equals/bigint-and-number.js: - * test262/test/language/expressions/strict-equals/bigint-and-object.js: - (assert.sameValue.0n.valueOf): - (assert.sameValue.valueOf): - (assert.sameValue.0n.toString): - (assert.sameValue.toString): - (assert.sameValue.900719925474099101n.valueOf): - (assert.sameValue.900719925474099101n.toString): - * test262/test/language/expressions/strict-equals/bigint-and-string.js: - * test262/test/language/expressions/subtraction/bigint-and-number.js: - * test262/test/language/expressions/subtraction/bigint-arithmetic.js: - (testSub): Deleted. - * test262/test/language/expressions/subtraction/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/subtraction/bigint-toprimitive.js: - * test262/test/language/expressions/subtraction/bigint-wrapped-values.js: - * test262/test/language/expressions/unary-minus/bigint-non-primitive.js: - (assert.sameValue.Symbol.toPrimitive): - (assert.sameValue.valueOf): - (assert.sameValue.toString): - * test262/test/language/expressions/unary-plus/bigint-throws.js: - * test262/test/language/expressions/unsigned-right-shift/bigint-and-number.js: - * test262/test/language/expressions/unsigned-right-shift/bigint-errors.js: - (Symbol.toPrimitive): - (0n.Symbol.toPrimitive): - (valueOf): - (0n.valueOf): - (toString): - (0n.toString): - * test262/test/language/expressions/unsigned-right-shift/bigint-non-primitive.js: - (Symbol.toPrimitive): - (valueOf): - (toString): - (0b101n.Symbol.toPrimitive): - (0b101n.valueOf): - (0b101n.toString): - (valueOf.valueOf): - * test262/test/language/expressions/unsigned-right-shift/bigint-toprimitive.js: - * test262/test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js: - * test262/test/language/literals/numeric/numeric-followed-by-ident.js: Added. - * test262/test/language/literals/string/line-continuation-double.js: Added. - * test262/test/language/literals/string/line-continuation-single.js: Added. - * test262/test262-Revision.txt: - -2018-05-25 Mark Lam - - for-in loops should preserve and restore the TDZ stack for each of its internal loops. - https://bugs.webkit.org/show_bug.cgi?id=185995 - - - Reviewed by Saam Barati. - - * stress/regress-185995.js: Added. - -2018-05-23 Keith Miller - - Define length on CoW array should properly convert to writable - https://bugs.webkit.org/show_bug.cgi?id=185927 - - Reviewed by Yusuke Suzuki. - - * stress/cow-define-length-as-value.js: Added. - (test): - -2018-05-23 Michael Saboff - - Date.parse() doesn't properly handle input outside of ES Spec limits - https://bugs.webkit.org/show_bug.cgi?id=185868 - - Reviewed by Mark Lam. - - New test. - - * stress/date-parse-ranges.js: Added. - (shouldBe): - (throw.new.Error): - (shouldBeNaN): - -2018-05-23 Rick Waldron - - Conversion misspelled "Convertion" in error message string - https://bugs.webkit.org/show_bug.cgi?id=185436 - - Reviewed by Saam Barati, Michael Saboff. - - * bigIntTests.yaml: - -2018-05-23 Yusuke Suzuki - - Unreviewed, skip test if memoryLimited is specified - https://bugs.webkit.org/show_bug.cgi?id=185888 - - * stress/regress-185888.js: - -2018-05-22 Mark Lam - - BytecodeGeneratorification shouldn't add a ValueProfile if the JIT is disabled. - https://bugs.webkit.org/show_bug.cgi?id=185896 - - - Reviewed by Saam Barati. - - * stress/regress-185896.js: Added. - -2018-05-22 Yusuke Suzuki - - [JSC] Fix CachedCall's argument count if RegExp has named captures - https://bugs.webkit.org/show_bug.cgi?id=185587 - - Reviewed by Mark Lam. - - * test262/expectations.yaml: - -2018-05-22 Mark Lam - - StringImpl utf8 conversion should not fail silently. - https://bugs.webkit.org/show_bug.cgi?id=185888 - - - Reviewed by Filip Pizlo. - - * stress/regress-185888.js: Added. - -2018-05-22 Keith Miller - - We should have a CoW storage for NewArrayBuffer arrays. - https://bugs.webkit.org/show_bug.cgi?id=185003 - - Reviewed by Filip Pizlo. - - * stress/cow-convert-contiguous-to-array-storage.js: Added. - (createBuffer): - (shouldBe): - (test): - * stress/cow-convert-double-to-array-storage.js: Added. - (createBuffer): - (shouldBe): - (test): - * stress/cow-convert-double-to-contiguous.js: Added. - (createBuffer): - (shouldBe): - (test): - * stress/cow-convert-int32-to-array-storage.js: Added. - (createBuffer): - (shouldBe): - (test): - * stress/cow-convert-int32-to-contiguous.js: Added. - (createBuffer): - (shouldBe): - (test): - * stress/cow-convert-int32-to-double.js: Added. - (createBuffer): - (shouldBe): - (test): - * stress/put-on-cow-prototype.js: Added. - (putByVal): - (putById): - -2018-05-21 Yusuke Suzuki - - Unreviewed, reland InById cache - https://bugs.webkit.org/show_bug.cgi?id=185682 - - * stress/in-by-id-accessors.js: Added. - (shouldBe): - (test): - (protoGetter.__proto__.get hello): - (protoSetter.__proto__.set hello): - (i.shouldBe.test.get hello): - (i.shouldBe.test.set hello): - * stress/in-by-id-ai.js: Added. - (shouldBe): - (test): - * stress/in-by-id-custom-accessors.js: Added. - (shouldBe): - (test1): - (test2): - * stress/in-by-id-custom-values.js: Added. - (shouldBe): - (test): - * stress/in-by-id-operation.js: Added. - (shouldBe): - (test): - (selfCache): - * stress/in-by-id-proxy.js: Added. - (shouldBe): - (test): - (handler.has): - -2018-05-21 Commit Queue - - Unreviewed, rolling out r231998 and r232017. - https://bugs.webkit.org/show_bug.cgi?id=185842 - - causes crashes on 32 JSC bot (Requested by realdawei on - #webkit). - - Reverted changesets: - - "[JSC] JSC should have consistent InById IC" - https://bugs.webkit.org/show_bug.cgi?id=185682 - https://trac.webkit.org/changeset/231998 - - "Unreviewed, fix 32bit and scope release" - https://bugs.webkit.org/show_bug.cgi?id=185682 - https://trac.webkit.org/changeset/232017 - -2018-05-19 Yusuke Suzuki - - [JSC] JSC should have consistent InById IC - https://bugs.webkit.org/show_bug.cgi?id=185682 - - Reviewed by Filip Pizlo. - - * stress/in-by-id-accessors.js: Added. - (shouldBe): - (test): - (protoGetter.__proto__.get hello): - (protoSetter.__proto__.set hello): - (i.shouldBe.test.get hello): - (i.shouldBe.test.set hello): - * stress/in-by-id-ai.js: Added. - (shouldBe): - (test): - * stress/in-by-id-custom-accessors.js: Added. - (shouldBe): - (test1): - (test2): - * stress/in-by-id-custom-values.js: Added. - (shouldBe): - (test): - * stress/in-by-id-operation.js: Added. - (shouldBe): - (test): - (selfCache): - * stress/in-by-id-proxy.js: Added. - (shouldBe): - (test): - (handler.has): - -2018-05-18 Keith Miller - - op_in should mark if it sees out of bounds accesses - https://bugs.webkit.org/show_bug.cgi?id=185792 - - Reviewed by Filip Pizlo. - - * stress/has-indexed-property-array-storage-ftl.js: - (test2): - * stress/has-indexed-property-slow-put-array-storage-ftl.js: - (test2): - -2018-05-18 Mark Lam - - Add missing exception check. - https://bugs.webkit.org/show_bug.cgi?id=185786 - - - Reviewed by Michael Saboff. - - * stress/regress-185786.js: Added. - -2018-05-16 Filip Pizlo - - JSC should have InstanceOf inline caching - https://bugs.webkit.org/show_bug.cgi?id=185652 - - Reviewed by Saam Barati. - - * microbenchmarks/instanceof-always-hit-one.js: Added. - * microbenchmarks/instanceof-always-hit-two.js: Added. - * microbenchmarks/instanceof-dynamic.js: Added. - * microbenchmarks/instanceof-sometimes-hit.js: Added. - * stress/instanceof-dynamic-proxy-check-structure.js: Added. - * stress/instanceof-dynamic-proxy-loop.js: Added. - * stress/instanceof-dynamic-proxy.js: Added. - * stress/instanceof-hit-one-object-then-another.js: Added. - * stress/instanceof-hit-two-objects-then-another.js: Added. - * stress/instanceof-prototype-change.js: Added. - * stress/instanceof-prototype-change-to-hit.js: Added. - * stress/instanceof-prototype-change-to-null.js: Added. - * stress/instanceof-prototype-change-watchpointable.js: Added. - -2018-05-17 Michael Saboff - - We don't throw SyntaxErrors for runtime generated regular expressions with errors - https://bugs.webkit.org/show_bug.cgi?id=185755 - - Reviewed by Keith Miller. - - New regression test. - - * stress/regexp-with-runtime-syntax-errors.js: Added. - (testThrowsSyntaxtError): - (fromExecWithBadUnicodeEscape): - (fromTestWithBadUnicodeProperty): - (fromSplitWithBadUnicodeIdentity): - (fromMatchWithBadUnicodeBackReference): - (fromReplaceWithBadUnicodeEscape): - (fromSearchWithBadUnicodeEscape): - -2018-05-16 Caio Lima - - [ESNext][BigInt] Implement support for "/" operation - https://bugs.webkit.org/show_bug.cgi?id=183996 - - Reviewed by Yusuke Suzuki. - - * bigIntTests.yaml: - * stress/big-int-div-jit.js: Added. - * stress/big-int-div-memory-stress.js: Added. - * stress/big-int-div-to-primitive-precedence.js: Added. - * stress/big-int-div-to-primitive.js: Added. - * stress/big-int-div-type-error.js: Added. - * stress/big-int-div-wrapped-value.js: Added. - * stress/big-int-division.js: Added. - -2018-05-16 Saam Barati - - Constant fold CheckTypeInfoFlags on ImplementsDefaultHasInstance - https://bugs.webkit.org/show_bug.cgi?id=185670 - - Reviewed by Yusuke Suzuki. - - * microbenchmarks/constant-fold-check-type-info-flags.js: Added. - * stress/dont-constant-fold-check-type-info-on-bound-function.js: Added. - -2018-05-16 Commit Queue - - Unreviewed, rolling out r231845. - https://bugs.webkit.org/show_bug.cgi?id=185702 - - it is breaking Apple High Sierra 32-bit JSC bot (Requested by - caiolima on #webkit). - - Reverted changeset: - - "[ESNext][BigInt] Implement support for "/" operation" - https://bugs.webkit.org/show_bug.cgi?id=183996 - https://trac.webkit.org/changeset/231845 - -2018-05-16 Filip Pizlo - - DFG models InstanceOf incorrectly - https://bugs.webkit.org/show_bug.cgi?id=185694 - - Reviewed by Keith Miller. - - * stress/instanceof-proxy-check-structure.js: Added. - (Foo): - (Bar): - (doBadThings): - (getPrototypeOf): - (foo): - (i.new.Bar): - (new.Bar): - * stress/instanceof-proxy-loop.js: Added. - (Foo): - (Bar): - (doBadThings): - (getPrototypeOf): - (foo): - * stress/instanceof-proxy.js: Added. - (Foo): - (Bar): - (doBadThings): - (getPrototypeOf): - (foo): - -2018-05-16 Caio Lima - - [ESNext][BigInt] Implement support for "/" operation - https://bugs.webkit.org/show_bug.cgi?id=183996 - - Reviewed by Yusuke Suzuki. - - * bigIntTests.yaml: - * stress/big-int-div-jit.js: Added. - * stress/big-int-div-memory-stress.js: Added. - * stress/big-int-div-to-primitive-precedence.js: Added. - * stress/big-int-div-to-primitive.js: Added. - * stress/big-int-div-type-error.js: Added. - * stress/big-int-div-wrapped-value.js: Added. - * stress/big-int-division.js: Added. - -2018-05-14 Leo Balter - - Fix a legacy CRLF eol from Test262 - https://bugs.webkit.org/show_bug.cgi?id=185565 - - Reviewed by Yusuke Suzuki. - - * test262/config.yaml: - * test262/test/built-ins/Math/cbrt/prop-desc.js: - -2018-05-14 Yusuke Suzuki - - [JSC] timeClip(-0) should produce +0 - https://bugs.webkit.org/show_bug.cgi?id=185589 - - Reviewed by Saam Barati. - - Fix several test262 failures. - - * stress/date-negative-zero.js: Added. - (shouldBe): - * test262/expectations.yaml: - -2018-05-13 Caio Lima - - [BigInt] stress/big-int-spec-to-primitive.js test is failing - https://bugs.webkit.org/show_bug.cgi?id=185582 - - Reviewed by Yusuke Suzuki. - - This patch is removing the use of ```numberOfDFGCompiles``` from - stress/big-int-spec-to-primitive.js because it makes this est fail - sometimes. - - * stress/big-int-spec-to-primitive.js: - -2018-05-13 Andy VanWagoner - - [INTL] Improve spec & test262 compliance for Intl APIs - https://bugs.webkit.org/show_bug.cgi?id=185578 - - Reviewed by Yusuke Suzuki. - - Remove intl402 failures that have been fixed. - - * test262/expectations.yaml: - * stress/regress-178385.js: toStringTag is configurable, but not writable. - -2018-05-11 Caio Lima - - [ESNext][BigInt] Implement support for "*" operation - https://bugs.webkit.org/show_bug.cgi?id=183721 - - Reviewed by Yusuke Suzuki. - - * bigIntTests.yaml: - * stress/big-int-mul-jit.js: Added. - * stress/big-int-mul-to-primitive-precedence.js: Added. - * stress/big-int-mul-to-primitive.js: Added. - * stress/big-int-mul-type-error.js: Added. - * stress/big-int-mul-wrapped-value.js: Added. - * stress/big-int-multiplication.js: Added. - * stress/big-int-multiply-memory-stress.js: Added. - -2018-05-11 Michael Saboff - - [DFG] Compiler uses incorrect output register for NumberIsInteger operation - https://bugs.webkit.org/show_bug.cgi?id=185328 - - Reviewed by Keith Miller. - - New regression test. - - * stress/isInteger-doesnt-overwrite-argument.js: Added. - (testIsInteger): - -2018-05-09 Yusuke Suzuki - - [JSC] Object.assign for final objects should be faster - https://bugs.webkit.org/show_bug.cgi?id=185348 - - Reviewed by Saam Barati. - - * stress/object-assign-fast-path.js: Added. - (shouldBe): - (checkProperty): - -2018-05-10 Leo Balter - - Update Test262 tests through the new import script - 20180509 - https://bugs.webkit.org/show_bug.cgi?id=185482 - - Reviewed by Michael Saboff. - - Also update the test262/expecatations.yaml with the recent imported files. - - * test262/expectations.yaml: - * test262/harness/compareIterator.js: Added. - (assert.compareIterator): - * test262/harness/nativeFunctionMatcher.js: - (const.assertToStringOrNativeFunction): - (const.assertNativeFunction): - * test262/harness/regExpUtils.js: - * test262/harness/testIntl.js: - (getInvalidLanguageTags): - * test262/harness/testTypedArray.js: - * test262/harness/wellKnownIntrinsicObjects.js: Added. - (WellKnownIntrinsicObjects.forEach.wkio.catch): - * test262/latest-changes-summary.txt: Added. - * test262/test/annexB/language/eval-code/direct/block-decl-nostrict.js: Copied from JSTests/test262/test/language/eval-code/direct/block-decl-strict-caller.js. - (catch): - * test262/test/annexB/language/eval-code/direct/switch-case-decl-nostrict.js: Copied from JSTests/test262/test/language/eval-code/direct/switch-case-decl-strict-source.js. - (catch): - * test262/test/annexB/language/eval-code/direct/switch-dflt-decl-nostrict.js: Copied from JSTests/test262/test/language/eval-code/direct/switch-dflt-decl-strict-caller.js. - (catch): - * test262/test/annexB/language/function-code/block-decl-nested-blocks-with-fun-decl.js: Added. - (g.f): - (g): - * test262/test/annexB/language/function-code/block-decl-nostrict.js: Copied from JSTests/test262/test/language/function-code/block-decl-strict.js. - (catch): - (f): - * test262/test/annexB/language/function-code/switch-case-decl-nostrict.js: Copied from JSTests/test262/test/language/function-code/switch-case-decl-strict.js. - (catch): - (switch.case.1): - (switch): - * test262/test/annexB/language/function-code/switch-dflt-decl-nostrict.js: Copied from JSTests/test262/test/language/function-code/switch-dflt-decl-strict.js. - (catch): - (switch.default): - (switch): - * test262/test/built-ins/Array/prototype/filter/target-array-with-non-writable-property.js: Added. - (a.Symbol.species): - (r.a.filter): - * test262/test/built-ins/Array/prototype/indexOf/calls-only-has-on-prototype-after-length-zeroed.js: Added. - (allowProxyTraps.has): - (fromIndex.valueOf): - * test262/test/built-ins/Array/prototype/lastIndexOf/calls-only-has-on-prototype-after-length-zeroed.js: Added. - (allowProxyTraps.has): - (fromIndex.valueOf): - * test262/test/built-ins/Array/prototype/map/target-array-with-non-writable-property.js: Added. - (a.Symbol.species): - (r.a.map): - * test262/test/built-ins/Array/prototype/slice/target-array-with-non-writable-property.js: Added. - (a.Symbol.species): - * test262/test/built-ins/Array/prototype/splice/property-traps-order-with-species.js: Added. - (a.Symbol.species): - * test262/test/built-ins/Array/prototype/splice/target-array-with-non-writable-property.js: Added. - (a.Symbol.species): - * test262/test/built-ins/Atomics/Symbol.toStringTag.js: - * test262/test/built-ins/Atomics/add/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/add/good-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/add/non-views.js: - * test262/test/built-ins/Atomics/add/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/add/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/and/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/and/good-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/and/non-views.js: - * test262/test/built-ins/Atomics/and/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/and/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/compareExchange/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/compareExchange/good-views.js: - (testWithTypedArrayConstructors): - (view): Deleted. - * test262/test/built-ins/Atomics/compareExchange/non-views.js: - * test262/test/built-ins/Atomics/compareExchange/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/compareExchange/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/exchange/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/exchange/good-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/exchange/non-views.js: - * test262/test/built-ins/Atomics/exchange/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/exchange/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/isLockFree/corner-cases.js: - (hide): - * test262/test/built-ins/Atomics/isLockFree/value.js: - (testIsLockFree): Deleted. - * test262/test/built-ins/Atomics/load/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/load/good-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/load/non-views.js: - * test262/test/built-ins/Atomics/load/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/load/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/or/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/or/good-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/or/non-views.js: - * test262/test/built-ins/Atomics/or/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/or/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/prop-desc.js: - * test262/test/built-ins/Atomics/proto.js: - * test262/test/built-ins/Atomics/store/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/store/good-views.js: - (testWithTypedArrayConstructors): - (ToInteger): - * test262/test/built-ins/Atomics/store/non-views.js: - * test262/test/built-ins/Atomics/store/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/store/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/sub/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/sub/good-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/sub/non-views.js: - * test262/test/built-ins/Atomics/sub/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/sub/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/wait/bad-range.js: Copied from JSTests/test262/test/built-ins/Atomics/wake/bad-range.js. - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/wait/cannot-suspend-throws.js: - * test262/test/built-ins/Atomics/wait/did-timeout.js: - (getReport): - * test262/test/built-ins/Atomics/wait/false-for-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/false-for-timeout.js. - (getReport): - (262.agent.start.valueOf.valueOf): - (toPrimitive.Symbol.toPrimitive): - (262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/false-for-timeout.js: - (valueOf.valueOf): - (toPrimitive.Symbol.toPrimitive): - (getReport): Deleted. - (262.agent.start.262.agent.receiveBroadcast): Deleted. - * test262/test/built-ins/Atomics/wait/good-views.js: - (r.getReport): - (getReport): - * test262/test/built-ins/Atomics/wait/nan-for-timeout.js: - (getReport): - * test262/test/built-ins/Atomics/wait/negative-index-throws.js: - * test262/test/built-ins/Atomics/wait/negative-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/negative-timeout.js. - (getReport): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/negative-timeout.js: - (262.agent.start.262.agent.receiveBroadcast): Deleted. - (getReport): Deleted. - * test262/test/built-ins/Atomics/wait/no-spurious-wakeup.js: - (getReport): - * test262/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js: - * test262/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/nonshared-bufferdata-throws.js. - * test262/test/built-ins/Atomics/wait/not-a-typedarray-throws.js: - * test262/test/built-ins/Atomics/wait/not-an-object-throws.js: - * test262/test/built-ins/Atomics/wait/null-bufferdata-throws.js: - * test262/test/built-ins/Atomics/wait/null-for-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/false-for-timeout.js. - (getReport): - (262.agent.start.valueOf.valueOf): - (toPrimitive.Symbol.toPrimitive): - (262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/null-for-timeout.js: - (valueOf.valueOf): - (toPrimitive.Symbol.toPrimitive): - (getReport): Deleted. - (262.agent.start.262.agent.receiveBroadcast): Deleted. - * test262/test/built-ins/Atomics/wait/object-for-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/false-for-timeout.js. - (getReport): - (262.agent.start.valueOf.valueOf): - (toString.toString): - (toPrimitive.Symbol.toPrimitive): - (262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/object-for-timeout.js: - (valueOf.valueOf): - (toString.toString): - (toPrimitive.Symbol.toPrimitive): - (getReport): Deleted. - (262.agent.start.262.agent.receiveBroadcast): Deleted. - * test262/test/built-ins/Atomics/wait/out-of-range-index-throws.js: - * test262/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js: Added. - (getReport): - (262.agent.start.poisonedValueOf.valueOf): - (poisonedToPrimitive.Symbol.toPrimitive): - (262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js: - (poisonedValueOf.valueOf): - (poisonedToPrimitive.Symbol.toPrimitive): - (getReport): Deleted. - (262.agent.start.262.agent.receiveBroadcast): Deleted. - * test262/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js: Added. - (getReport): - (262.agent.start.poisonedValueOf.valueOf): - (poisonedToPrimitive.Symbol.toPrimitive): - (262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/symbol-for-index-throws.js: - (poisonedToPrimitive.Symbol.toPrimitive): - (poisoned.valueOf): Deleted. - (poisonedWithString.get valueOf): Deleted. - (poisonedToPrimitive.get Symbol): Deleted. - * test262/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js: Added. - (getReport): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js: - (poisonedValueOf.valueOf): - (poisonedToPrimitive.Symbol.toPrimitive): - (getReport): Deleted. - (262.agent.start.262.agent.receiveBroadcast): Deleted. - * test262/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js: Added. - (getReport): - (262.agent.start.poisonedValueOf.valueOf): - (poisonedToPrimitive.Symbol.toPrimitive): - (262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/symbol-for-value-throws.js: Added. - (poisonedValueOf.valueOf): - (poisonedToPrimitive.Symbol.toPrimitive): - * test262/test/built-ins/Atomics/wait/true-for-timeout-agent.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/null-for-timeout.js. - (getReport): - (262.agent.start.valueOf.valueOf): - (toPrimitive.Symbol.toPrimitive): - (262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/true-for-timeout.js: - (valueOf.valueOf): - (toPrimitive.Symbol.toPrimitive): - (getReport): Deleted. - (262.agent.start.262.agent.receiveBroadcast): Deleted. - * test262/test/built-ins/Atomics/wait/undefined-for-timeout.js: - (getReport): - * test262/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js: - (262.agent.start.262.agent.receiveBroadcast): - (getReport): - * test262/test/built-ins/Atomics/wait/value-not-equal.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/wait-index-value-not-equal.js. - (getReport): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/wait-index-value-not-equal.js: - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js: Added. - (getReport): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js: Added. - (getReport): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/was-woken-before-timeout.js: - (getReport): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wait/was-woken.js: - (getReport): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wake/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/wake/count-boundary-cases.js: Renamed from JSTests/test262/test/built-ins/Atomics/wake/counts.js. - * test262/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js: Added. - (getReport): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js: Added. - (getReport): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wake/count-from-nans.js: Added. - * test262/test/built-ins/Atomics/wake/count-symbol-throws.js: Added. - * test262/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js: Added. - (poisoned.valueOf): - * test262/test/built-ins/Atomics/wake/good-views.js: - * test262/test/built-ins/Atomics/wake/negative-count.js: Renamed from JSTests/test262/test/built-ins/Atomics/wake/wake-negative.js. - * test262/test/built-ins/Atomics/wake/negative-index-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/negative-index-throws.js. - (poisoned.valueOf): - * test262/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js. - (poisoned.valueOf): - * test262/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js: Renamed from JSTests/test262/test/built-ins/Atomics/wait/nonshared-bufferdata-throws.js. - (poisoned.valueOf): - * test262/test/built-ins/Atomics/wake/non-views.js: - * test262/test/built-ins/Atomics/wake/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/wake/not-a-typedarray-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/not-a-typedarray-throws.js. - (poisoned.valueOf): - * test262/test/built-ins/Atomics/wake/not-an-object-throws.js: Added. - (poisoned.valueOf): - * test262/test/built-ins/Atomics/wake/null-bufferdata-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/null-bufferdata-throws.js. - (poisoned.valueOf): - * test262/test/built-ins/Atomics/wake/out-of-range-index-throws.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/out-of-range-index-throws.js. - (poisoned.valueOf): - * test262/test/built-ins/Atomics/wake/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/wake/symbol-for-index-throws.js: Added. - (poisonedValueOf.valueOf): - (poisonedToPrimitive.Symbol.toPrimitive): - * test262/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js: Copied from JSTests/test262/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js. - (262.agent.start.262.agent.receiveBroadcast): - (getReport): - * test262/test/built-ins/Atomics/wake/wake-all-on-loc.js: - (262.agent.start.262.agent.receiveBroadcast): - (getReport): - (waitUntil): - * test262/test/built-ins/Atomics/wake/wake-all.js: - (262.agent.start.262.agent.receiveBroadcast): - (getReport): - (waitUntil): - * test262/test/built-ins/Atomics/wake/wake-in-order.js: - (getReport): - (waitUntil): - * test262/test/built-ins/Atomics/wake/wake-nan.js: - (getReport): - * test262/test/built-ins/Atomics/wake/wake-one.js: - (getReport): - (waitUntil): - * test262/test/built-ins/Atomics/wake/wake-rewake-noop.js: Added. - (getReport): - (waitUntil): - (262.agent.start.262.agent.receiveBroadcast): - * test262/test/built-ins/Atomics/wake/wake-two.js: - (getReport): - * test262/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js: Added. - (262.agent.start.262.agent.receiveBroadcast): - (waitUntil): - * test262/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js: Added. - (262.agent.start.262.agent.receiveBroadcast): - (waitUntil): - * test262/test/built-ins/Atomics/wake/wake-zero.js: - (i.262.agent.start.262.agent.receiveBroadcast): - (getReport): - (waitUntil): - * test262/test/built-ins/Atomics/xor/bad-range.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/xor/good-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/xor/non-views.js: - * test262/test/built-ins/Atomics/xor/nonshared-int-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/Atomics/xor/shared-nonint-views.js: - (testWithTypedArrayConstructors): - * test262/test/built-ins/BigInt/asIntN/bigint-tobigint-errors.js: - * test262/test/built-ins/BigInt/asIntN/bigint-tobigint-toprimitive.js: - * test262/test/built-ins/BigInt/asIntN/bigint-tobigint-wrapped-values.js: - * test262/test/built-ins/BigInt/asIntN/bits-toindex-errors.js: - * test262/test/built-ins/BigInt/asIntN/bits-toindex-toprimitive.js: - * test262/test/built-ins/BigInt/asIntN/bits-toindex-wrapped-values.js: - * test262/test/built-ins/BigInt/asUintN/bigint-tobigint-errors.js: - * test262/test/built-ins/BigInt/asUintN/bigint-tobigint-toprimitive.js: - * test262/test/built-ins/BigInt/asUintN/bigint-tobigint-wrapped-values.js: - * test262/test/built-ins/BigInt/asUintN/bits-toindex-errors.js: - * test262/test/built-ins/BigInt/asUintN/bits-toindex-toprimitive.js: - * test262/test/built-ins/BigInt/asUintN/bits-toindex-wrapped-values.js: - * test262/test/built-ins/BigInt/constructor-empty-string.js: - * test262/test/built-ins/BigInt/constructor-from-binary-string.js: - * test262/test/built-ins/BigInt/constructor-from-decimal-string.js: - * test262/test/built-ins/BigInt/constructor-from-hex-string.js: - * test262/test/built-ins/BigInt/constructor-from-octal-string.js: - * test262/test/built-ins/BigInt/constructor-from-string-syntax-errors.js: - * test262/test/built-ins/BigInt/constructor-integer.js: Added. - * test262/test/built-ins/BigInt/constructor-trailing-leading-spaces.js: - * test262/test/built-ins/BigInt/issafeinteger-true.js: Removed. - * test262/test/built-ins/BigInt/out-of-bounds-integer-rangeerror.js: Removed. - * test262/test/built-ins/BigInt/prototype/Symbol.toStringTag.js: - * test262/test/built-ins/BigInt/prototype/toString/default-radix.js: Added. - * test262/test/built-ins/BigInt/prototype/toString/thisbigintvalue-not-valid-throws.js: - * test262/test/built-ins/BigInt/prototype/valueOf/cross-realm.js: Added. - * test262/test/built-ins/BigInt/tostring-throws.js: Copied from JSTests/test262/test/built-ins/BigInt/value-of-throws.js. - * test262/test/built-ins/BigInt/valueof-throws.js: Renamed from JSTests/test262/test/built-ins/BigInt/value-of-throws.js. - (BigInt.valueOf): - * test262/test/built-ins/DataView/prototype/setBigInt64/set-values-return-undefined.js: - (values.forEach): - * test262/test/built-ins/Function/prototype/bind/length-exceeds-int32.js: Added. - (f): - * test262/test/built-ins/Function/prototype/toString/anonymous-intrinsics.js: Removed. - * test262/test/built-ins/Function/prototype/toString/bound-function.js: - (assertNativeFunction): - (let.f): Deleted. - * test262/test/built-ins/Function/prototype/toString/built-in-function-object.js: Added. - * test262/test/built-ins/Function/prototype/toString/intrinsics.js: Removed. - * test262/test/built-ins/Function/prototype/toString/proxy-arrow-function.js: Added. - (assertNativeFunction.new.Proxy): - * test262/test/built-ins/Function/prototype/toString/proxy-async-function.js: Added. - (assertNativeFunction.new.Proxy.async): - * test262/test/built-ins/Function/prototype/toString/proxy-async-generator-function.js: Added. - (assertNativeFunction.new.Proxy.async): - * test262/test/built-ins/Function/prototype/toString/proxy-async-generator-method-definition.js: Added. - (assertNativeFunction.new.Proxy.async.method): - (apply): - * test262/test/built-ins/Function/prototype/toString/proxy-async-method-definition.js: Added. - (assertNativeFunction.new.Proxy.async.method): - (apply): - * test262/test/built-ins/Function/prototype/toString/proxy-bound-function.js: Added. - (assertNativeFunction.new.Proxy): - (bind): - * test262/test/built-ins/Function/prototype/toString/proxy-class.js: Added. - (assertNativeFunction): - * test262/test/built-ins/Function/prototype/toString/proxy-function-expression.js: Added. - (assertNativeFunction.new.Proxy): - * test262/test/built-ins/Function/prototype/toString/proxy-generator-function.js: Added. - (assertNativeFunction.new.Proxy): - * test262/test/built-ins/Function/prototype/toString/proxy-method-definition.js: Added. - (assertNativeFunction.new.Proxy.method): - (apply): - * test262/test/built-ins/Function/prototype/toString/proxy-non-callable-throws.js: Added. - * test262/test/built-ins/Function/prototype/toString/proxy.js: Removed. - * test262/test/built-ins/Function/prototype/toString/well-known-intrinsic-object-functions.js: Added. - (WellKnownIntrinsicObjects.forEach): - * test262/test/built-ins/JSON/prop-desc.js: Added. - * test262/test/built-ins/Math/acosh/nan-returns.js: - * test262/test/built-ins/Math/asinh/asinh-specialVals.js: - * test262/test/built-ins/Math/atanh/atanh-specialVals.js: - * test262/test/built-ins/Math/cbrt/cbrt-specialValues.js: - * test262/test/built-ins/Math/cbrt/prop-desc.js: - * test262/test/built-ins/Math/cosh/cosh-specialVals.js: - * test262/test/built-ins/Math/expm1/expm1-specialVals.js: - * test262/test/built-ins/Math/log10/Log10-specialVals.js: - * test262/test/built-ins/Math/log2/log2-basicTests.js: - * test262/test/built-ins/Math/prop-desc.js: - * test262/test/built-ins/Math/sign/sign-specialVals.js: - * test262/test/built-ins/Math/sinh/sinh-specialVals.js: - * test262/test/built-ins/Math/tanh/tanh-specialVals.js: - * test262/test/built-ins/Math/trunc/trunc-sampleTests.js: - * test262/test/built-ins/Math/trunc/trunc-specialVals.js: - * test262/test/built-ins/Object/assign/strings-and-symbol-order.js: Added. - * test262/test/built-ins/Object/keys/property-traps-order-with-proxied-array.js: Added. - (get t): - * test262/test/built-ins/Reflect/Reflect.js: Removed. - * test262/test/built-ins/Reflect/prop-desc.js: Added. - * test262/test/built-ins/Reflect/properties.js: Removed. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/internal-regexp-lastindex-not-zero.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-internal-regexp-is-false.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-internal-regexp-throws.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-this-throws.js: Added. - (obj.get Symbol): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/length.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/name.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/prop-desc.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/regexpcreate-this-throws.js: Added. - (obj.toString): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-constructor-throws.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-species-throws.js: Added. - (regexp.get Symbol): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-not-object-throws.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-undefined.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-not-constructor.js: Added. - (callMatchAll): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-null-or-undefined.js: Added. - (TestWithConstructor): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-throws.js: Added. - (regexp.Symbol.species): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor.js: Added. - (regexp.Symbol.species): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-global-throws.js: Added. - (regexp.Symbol.species): - (get assert): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-unicode-throws.js: Added. - (regexp.Symbol.species): - (get assert): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring-throws.js: Added. - (obj.valueOf): - (obj.toString): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring.js: Added. - (obj.toString): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags-throws.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags.js: Added. - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-lastindex-cached.js: Added. - (regexp.lastIndex.valueOf): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-not-object-throws.js: Added. - (callMatchAll): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-tolength-lastindex-throws.js: Added. - (regexp.lastIndex.valueOf): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags-throws.js: Added. - (value.valueOf): - (value.toString): - * test262/test/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags.js: Added. - (value.toString): - * test262/test/built-ins/RegExpStringIteratorPrototype/Symbol.toStringTag.js: Added. - * test262/test/built-ins/RegExpStringIteratorPrototype/ancestry.js: Added. - * test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-call-throws.js: Added. - (RegExp.prototype.exec): - * test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-get-throws.js: Added. - * test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-match-get-0-throws.js: Added. - (return.get string_appeared_here): - (RegExp.prototype.exec): - * test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-match-get-0-tostring-throws.js: Added. - (return.toString): - (RegExp.prototype.exec): - * test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-match-get-0-tostring.js: Added. - (execResult.get string_appeared_here): - (RegExp.prototype.exec): - * test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-not-callable.js: Added. - (TestWithRegExpExec): - * test262/test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec.js: Added. - (callNextWithExecReturnValue.RegExp.prototype.exec): - (callNextWithExecReturnValue): - * test262/test/built-ins/RegExpStringIteratorPrototype/next/length.js: Added. - * test262/test/built-ins/RegExpStringIteratorPrototype/next/name.js: Added. - * test262/test/built-ins/RegExpStringIteratorPrototype/next/next-iteration-global.js: Added. - * test262/test/built-ins/RegExpStringIteratorPrototype/next/next-iteration.js: Added. - * test262/test/built-ins/RegExpStringIteratorPrototype/next/next-missing-internal-slots.js: Added. - * test262/test/built-ins/RegExpStringIteratorPrototype/next/prop-desc.js: Added. - * test262/test/built-ins/RegExpStringIteratorPrototype/next/regexp-tolength-lastindex-throws.js: Added. - (RegExp.prototype.exec): - * test262/test/built-ins/RegExpStringIteratorPrototype/next/this-is-not-object-throws.js: Added. - (callNext): - * test262/test/built-ins/String/prototype/matchAll/length.js: Added. - * test262/test/built-ins/String/prototype/matchAll/name.js: Added. - * test262/test/built-ins/String/prototype/matchAll/prop-desc.js: Added. - * test262/test/built-ins/String/prototype/matchAll/regexp-get-matchAll-throws.js: Added. - * test262/test/built-ins/String/prototype/matchAll/regexp-is-null.js: Added. - * test262/test/built-ins/String/prototype/matchAll/regexp-is-undefined.js: Added. - * test262/test/built-ins/String/prototype/matchAll/regexp-matchAll-invocation.js: Added. - (obj.Symbol.matchAll): - * test262/test/built-ins/String/prototype/matchAll/regexp-matchAll-throws.js: Added. - (regexp.Symbol.matchAll): - * test262/test/built-ins/String/prototype/matchAll/regexp-prototype-get-matchAll-throws.js: Added. - * test262/test/built-ins/String/prototype/matchAll/regexp-prototype-has-no-matchAll.js: Added. - * test262/test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-invocation.js: Added. - (RegExp.prototype.Symbol.matchAll): - * test262/test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-throws.js: Added. - (RegExp.prototype.Symbol.matchAll): - * test262/test/built-ins/String/prototype/matchAll/this-val-non-obj-coercible.js: Added. - * test262/test/built-ins/Symbol/matchAll/cross-realm.js: Added. - * test262/test/built-ins/Symbol/matchAll/prop-desc.js: Added. - * test262/test/harness/testTypedArray.js: - * test262/test/intl402/Array/prototype/toLocaleString/calls-toLocaleString-number-elements.js: Added. - * test262/test/intl402/Intl/getCanonicalLocales/invalid-tags.js: - * test262/test/intl402/Locale/constructor-newtarget-undefined.js: Added. - * test262/test/intl402/Locale/constructor-options-calendar-invalid.js: Added. - (const.invalidCalendarOption.of.invalidCalendarOptions.new.Intl.Locale): - * test262/test/intl402/Locale/constructor-options-calendar-valid.js: Added. - * test262/test/intl402/Locale/constructor-options-language-invalid.js: Added. - (const.invalidLanguageOption.of.invalidLanguageOptions.new.Intl.Locale): - * test262/test/intl402/Locale/constructor-options-language-valid.js: Added. - (toString): - * test262/test/intl402/Locale/constructor-options-region-invalid.js: Added. - (const.invalidRegionOption.of.invalidRegionOptions.new.Intl.Locale): - * test262/test/intl402/Locale/constructor-options-region-valid.js: Added. - * test262/test/intl402/Locale/constructor-options-script-invalid.js: Added. - (const.invalidScriptOption.of.invalidScriptOptions.new.Intl.Locale): - * test262/test/intl402/Locale/constructor-options-script-valid.js: Added. - (toString): - * test262/test/intl402/Locale/function-prototype.js: Added. - * test262/test/intl402/Locale/instance-extensibility.js: Added. - * test262/test/intl402/Locale/instance.js: Added. - * test262/test/intl402/Locale/invalid-tag-throws-boolean.js: Added. - * test262/test/intl402/Locale/invalid-tag-throws-null.js: Added. - * test262/test/intl402/Locale/invalid-tag-throws-number.js: Added. - * test262/test/intl402/Locale/invalid-tag-throws-symbol.js: Added. - * test262/test/intl402/Locale/invalid-tag-throws-undefined.js: Added. - * test262/test/intl402/Locale/invalid-tag-throws.js: Added. - (const.invalidTag.of.getInvalidLanguageTags): - * test262/test/intl402/Locale/length.js: Added. - * test262/test/intl402/Locale/name.js: Added. - * test262/test/intl402/Locale/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/constructor.js: Added. - * test262/test/intl402/Locale/prototype/maximize/length.js: Added. - * test262/test/intl402/Locale/prototype/maximize/name.js: Added. - * test262/test/intl402/Locale/prototype/maximize/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/prop-desc.js: Added. - * test262/test/intl402/Locale/prototype/toStringTag.js: Added. - * test262/test/intl402/TypedArray/prototype/toLocaleString/calls-toLocaleString-number-elements.js: Added. - (testWithTypedArrayConstructors): - * test262/test/language/asi/S7.9_A11_T8.js: - (else.x.1): Deleted. - * test262/test/language/asi/S7.9_A4.js: - (catch): - * test262/test/language/asi/S7.9_A5.1_T1.js: - * test262/test/language/asi/S7.9_A5.3_T1.js: - * test262/test/language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration-nested-in-function.js: Added. - (g.f): - (g): - * test262/test/language/destructuring/binding/initialization-requires-object-coercible-null.js: - * test262/test/language/destructuring/binding/initialization-requires-object-coercible-undefined.js: - * test262/test/language/destructuring/binding/initialization-returns-normal-completion-for-empty-objects.js: - * test262/test/language/destructuring/binding/syntax/array-elements-with-initializer.js: - * test262/test/language/destructuring/binding/syntax/array-elements-with-object-patterns.js: - * test262/test/language/destructuring/binding/syntax/array-elements-without-initializer.js: - * test262/test/language/destructuring/binding/syntax/array-pattern-with-elisions.js: - * test262/test/language/destructuring/binding/syntax/array-pattern-with-no-elements.js: - * test262/test/language/destructuring/binding/syntax/array-rest-elements.js: - * test262/test/language/destructuring/binding/syntax/object-pattern-with-no-property-list.js: - * test262/test/language/destructuring/binding/syntax/property-list-bindings-elements.js: - * test262/test/language/destructuring/binding/syntax/property-list-followed-by-a-single-comma.js: - * test262/test/language/destructuring/binding/syntax/property-list-single-name-bindings.js: - * test262/test/language/destructuring/binding/syntax/property-list-with-property-list.js: - * test262/test/language/destructuring/binding/syntax/recursive-array-and-object-patterns.js: - * test262/test/language/eval-code/direct/block-decl-eval-source-is-strict-nostrict.js: Copied from JSTests/test262/test/language/eval-code/direct/block-decl-strict-source.js. - * test262/test/language/eval-code/direct/block-decl-eval-source-is-strict-onlystrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/block-decl-strict-source.js. - (catch): - * test262/test/language/eval-code/direct/block-decl-onlystrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/block-decl-strict-caller.js. - * test262/test/language/eval-code/direct/switch-case-decl-eval-source-is-strict-nostrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/switch-case-decl-strict-source.js. - * test262/test/language/eval-code/direct/switch-case-decl-eval-source-is-strict-onlystrict.js: Copied from JSTests/test262/test/language/eval-code/direct/switch-case-decl-strict-caller.js. - (catch): - * test262/test/language/eval-code/direct/switch-case-decl-onlystrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/switch-case-decl-strict-caller.js. - * test262/test/language/eval-code/direct/switch-dflt-decl-eval-source-is-strict-nostrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/switch-dflt-decl-strict-source.js. - * test262/test/language/eval-code/direct/switch-dflt-decl-eval-source-is-strict-onlystrict.js: Copied from JSTests/test262/test/language/eval-code/direct/switch-dflt-decl-strict-caller.js. - (catch): - * test262/test/language/eval-code/direct/switch-dflt-decl-onlystrict.js: Renamed from JSTests/test262/test/language/eval-code/direct/switch-dflt-decl-strict-caller.js. - * test262/test/language/expressions/async-arrow-function/await-as-param-ident-nested-arrow-parameter-position.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/await-as-param-nested-arrow-body-position.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/await-as-param-nested-arrow-parameter-position.js: Added. - (async.a): - * test262/test/language/expressions/async-arrow-function/await-as-param-rest-nested-arrow-parameter-position.js: Added. - (async.a): - * test262/test/language/expressions/async-arrow-function/escaped-async-line-terminator.js: Added. - * test262/test/language/expressions/async-generator/generator-created-after-decl-inst.js: Added. - (g.async.a): - * test262/test/language/expressions/class/class-name-ident-await-escaped-module.js: Added. - (C): - * test262/test/language/expressions/class/class-name-ident-await-escaped.js: Added. - (C): - * test262/test/language/expressions/class/class-name-ident-await-module.js: Added. - (C): - * test262/test/language/expressions/class/class-name-ident-await.js: Added. - (C): - * test262/test/language/expressions/class/class-name-ident-let-escaped.js: Added. - (C): - * test262/test/language/expressions/class/class-name-ident-let.js: Added. - (C): - * test262/test/language/expressions/class/class-name-ident-static-escaped.js: Added. - (C): - * test262/test/language/expressions/class/class-name-ident-static.js: Added. - * test262/test/language/expressions/class/class-name-ident-yield-escaped.js: Added. - (C): - * test262/test/language/expressions/class/class-name-ident-yield.js: Added. - (C): - * test262/test/language/expressions/class/constructor-this-tdz-during-initializers.js: Added. - (Base): - (C): - * test262/test/language/expressions/class/fields-run-once-on-double-super.js: Added. - (Base): - (C): - * test262/test/language/expressions/generators/generator-created-after-decl-inst.js: Added. - (g): - * test262/test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js: Added. - * test262/test/language/expressions/greater-than-or-equal/bigint-and-string.js: Added. - * test262/test/language/expressions/greater-than/bigint-and-boolean.js: Added. - * test262/test/language/expressions/greater-than/bigint-and-incomparable-string.js: Added. - * test262/test/language/expressions/greater-than/bigint-and-string.js: Added. - * test262/test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js: Added. - * test262/test/language/expressions/less-than-or-equal/bigint-and-string.js: Added. - * test262/test/language/expressions/less-than/bigint-and-boolean.js: Added. - * test262/test/language/expressions/less-than/bigint-and-incomparable-string.js: Added. - * test262/test/language/expressions/less-than/bigint-and-string.js: Added. - * test262/test/language/expressions/object/method-definition/generator-super-prop-param.js: - * test262/test/language/function-code/block-decl-onlystrict.js: Renamed from JSTests/test262/test/language/function-code/block-decl-strict.js. - * test262/test/language/function-code/switch-case-decl-onlystrict.js: Renamed from JSTests/test262/test/language/function-code/switch-case-decl-strict.js. - * test262/test/language/function-code/switch-dflt-decl-onlystrict.js: Renamed from JSTests/test262/test/language/function-code/switch-dflt-decl-strict.js. - * test262/test/language/line-terminators/S7.3_A2.3.js: Removed. - * test262/test/language/line-terminators/S7.3_A2.4.js: Removed. - * test262/test/language/literals/regexp/invalid-optional-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/invalid-optional-negative-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/invalid-range-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/invalid-range-negative-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/u-invalid-optional-lookahead.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/u-invalid-optional-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/u-invalid-optional-negative-lookahead.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/u-invalid-optional-negative-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/u-invalid-range-lookahead.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/u-invalid-range-lookbehind.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/u-invalid-range-negative-lookahead.js: Copied from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/regexp/u-invalid-range-negative-lookbehind.js: Renamed from JSTests/test262/test/language/literals/regexp/u-invalid-quantifiable-assertion.js. - * test262/test/language/literals/string/line-separator-eval.js: Added. - * test262/test/language/literals/string/line-separator.js: Added. - * test262/test/language/literals/string/paragraph-separator-eval.js: Added. - * test262/test/language/literals/string/paragraph-separator.js: Added. - * test262/test/language/module-code/early-strict-mode.js: - * test262/test/language/statements/async-generator/generator-created-after-decl-inst.js: Added. - (async.g): - * test262/test/language/statements/break/S12.8_A8_T1.js: - (catch): - * test262/test/language/statements/break/S12.8_A8_T2.js: - (catch): - * test262/test/language/statements/class/class-name-ident-await-escaped-module.js: Added. - (aw): - * test262/test/language/statements/class/class-name-ident-await-escaped.js: Added. - (aw): - * test262/test/language/statements/class/class-name-ident-await-module.js: Added. - (await): - * test262/test/language/statements/class/class-name-ident-await.js: Added. - (await): - * test262/test/language/statements/class/class-name-ident-let-escaped.js: Added. - (l): - * test262/test/language/statements/class/class-name-ident-let.js: Added. - (let): - * test262/test/language/statements/class/class-name-ident-static-escaped.js: Added. - (st): - * test262/test/language/statements/class/class-name-ident-static.js: Added. - * test262/test/language/statements/class/class-name-ident-yield-escaped.js: Added. - (yi): - * test262/test/language/statements/class/class-name-ident-yield.js: Added. - (yield): - * test262/test/language/statements/continue/S12.7_A8_T1.js: - (catch): - * test262/test/language/statements/continue/S12.7_A8_T2.js: - (catch): - * test262/test/language/statements/generators/generator-created-after-decl-inst.js: Added. - (g): - * test262/test/language/statements/try/early-catch-duplicates.js: - * test262/test/language/statements/try/early-catch-function.js: Added. - (f.catch.e): - (f): - * test262/test/language/statements/try/early-catch-lex.js: - * test262/test/language/statements/try/early-catch-var.js: - * test262/test262-Revision.txt: - -2018-05-09 Caio Lima - - [ESNext][BigInt] Implement support for "==" operation - https://bugs.webkit.org/show_bug.cgi?id=184474 - - Reviewed by Yusuke Suzuki. - - * stress/big-int-equals-basic.js: Added. - * stress/big-int-equals-to-primitive-precedence.js: Added. - * stress/big-int-equals-wrapped-value.js: Added. - -2018-05-08 Valerie R Young - - test262/Runner.pm: move input files to JSTests/test262 - https://bugs.webkit.org/show_bug.cgi?id=185389 - - Reviewed by Michael Saboff. - - * test262/config.yaml: Renamed from Tools/Scripts/test262/config.yaml. - * test262/expectations.yaml: Renamed from Tools/Scripts/test262/expectations.yaml. - -2018-05-05 Filip Pizlo - - DFG AI should have O(1) clobbering - https://bugs.webkit.org/show_bug.cgi?id=185287 - - Reviewed by Saam Barati. - - * stress/simple-ai-effect.js: Added. - (bar): - (foo): - -2018-05-04 Keith Miller - - isCacheableArrayLength should return true for undecided arrays - https://bugs.webkit.org/show_bug.cgi?id=185309 - - Reviewed by Michael Saboff. - - * stress/get-array-length-undecided.js: Added. - (test): - -2018-05-04 Dominik Infuehr - - Disable tests on systems with limited memory - https://bugs.webkit.org/show_bug.cgi?id=185296 - - Reviewed by Saam Barati. - - Test doesn't work with a limited amount of memory. I tried to reduce memory usage - but then it was hard to reproduce the failure the test was originally made to test. - - * stress/array-reverse-doesnt-clobber.js: - -2018-05-03 Saam Barati - - Don't prevent CreateThis being folded to NewObject when the structure is poly proto - https://bugs.webkit.org/show_bug.cgi?id=185177 - - Reviewed by Filip Pizlo. - - * microbenchmarks/construct-poly-proto-object.js: Added. - (foo.A): - (foo): - * stress/allocation-sinking-new-object-with-poly-proto.js: Added. - (foo.A): - (foo): - (makePolyProto): - (bar): - (baz): - -2018-05-03 Michael Saboff - - OSR entry pruning of Program Bytecodes doesn't take into account try/catch - https://bugs.webkit.org/show_bug.cgi?id=185281 - - Reviewed by Saam Barati. - - New regression test. - - * stress/baseline-osrentry-catch-is-reachable.js: Added. - (i.j.catch): - -2018-05-03 Ryan Haddad - - Unreviewed, rolling out r231197. - - The test added with this change crashes on the 32-bit JSC bot. - - Reverted changeset: - - "Correctly detect string overflow when using the 'Function' - constructor" - https://bugs.webkit.org/show_bug.cgi?id=184883 - https://trac.webkit.org/changeset/231197 - -2018-05-02 Filip Pizlo - - JSC should know how to cache custom getter accesses on the prototype chain - https://bugs.webkit.org/show_bug.cgi?id=185213 - - Reviewed by Keith Miller. - - * microbenchmarks/get-custom-getter.js: Added. - (test): - -2018-05-02 Robin Morisset - - emitCodeToGetArgumentsArrayLength should not crash on PhantomNewArrayWithSpread - https://bugs.webkit.org/show_bug.cgi?id=183172 - - Reviewed by Filip Pizlo. - - * stress/length-of-new-array-with-spread.js: Added. - (foo): - (bar): - (baz): - -2018-05-01 Yusuke Suzuki - - [JSC] Add SameValue DFG node - https://bugs.webkit.org/show_bug.cgi?id=185065 - - Reviewed by Saam Barati. - - * microbenchmarks/object-is.js: Added. - (incognito): - (sameValue): - (test1): - (test2): - (test3): - (test4): - (test5): - (test6): - * stress/object-is.js: Added. - (shouldBe): - (is1): - (is2): - (is3): - (is4): - (is5): - (is6): - (is7): - (is8): - (is9): - (is10): - (is11): - (is12): - (is13): - (is14): - (is15): - -2018-05-01 Robin Morisset - - Correctly detect string overflow when using the 'Function' constructor - https://bugs.webkit.org/show_bug.cgi?id=184883 - - - Reviewed by Filip Pizlo. - - I put this regression test in the 'slowMicrobenchmarks' directory because it takes nearly 30s to run, and I am not sure where else to put it. - - * slowMicrobenchmarks/function-constructor-with-huge-strings.js: Added. - (catch): - -2018-05-01 Robin Morisset - - IntlObject.cpp::removeUnicodeLocaleExtension() should not touch locales that end in '-u' - https://bugs.webkit.org/show_bug.cgi?id=185162 - - Reviewed by Filip Pizlo. - - * stress/incomplete-unicode-locale.js: Added. - (catch): - -2018-05-01 Dominik Infuehr - - Add SetCallee as DFG-Operation - https://bugs.webkit.org/show_bug.cgi?id=184582 - - Reviewed by Filip Pizlo. - - Added test that runs into infinite loop without updating the callee and - therefore emitting SetCallee in DFG for recursive tail calls. - - * stress/closure-recursive-tail-call-infinite-loop.js: Added. - (Foo): - (second): - (first): - (return.closure): - (createClosure): - -2018-04-30 Saam Barati - - ToString constant folds without preserving checks, causing us to break assumptions that the code would OSR exit - https://bugs.webkit.org/show_bug.cgi?id=185149 - - - Reviewed by Filip Pizlo. - - * stress/keep-checks-when-converting-to-lazy-js-constant-in-strength-reduction.js: Added. - -2018-04-29 Filip Pizlo - - LICM shouldn't hoist nodes if hoisted nodes exited in that code block - https://bugs.webkit.org/show_bug.cgi?id=185126 - - Reviewed by Saam Barati. - - I found this bug by accident when I was writing this test for something else. - - This change also speeds up other benchmarks of this case that we already had. They are all called - the licm-dragons tests. - - * microbenchmarks/licm-dragons-two-structures.js: Added. - (foo): - -2018-04-29 Commit Queue - - Unreviewed, rolling out r231137. - https://bugs.webkit.org/show_bug.cgi?id=185118 - - It is breaking Test262 language/expressions/multiplication - /order-of-evaluation.js (Requested by caiolima on #webkit). - - Reverted changeset: - - "[ESNext][BigInt] Implement support for "*" operation" - https://bugs.webkit.org/show_bug.cgi?id=183721 - https://trac.webkit.org/changeset/231137 - -2018-04-28 Saam Barati - - We don't model regexp effects properly - https://bugs.webkit.org/show_bug.cgi?id=185059 - - - Reviewed by Filip Pizlo. - - * stress/regexp-exec-test-effectful-last-index.js: Added. - (assert): - (foo): - (i.regexLastIndex.toString): - (bar): - -2018-04-28 Rick Waldron - - Token misspelled "tocken" in error message string - https://bugs.webkit.org/show_bug.cgi?id=185030 - - Reviewed by Saam Barati. - - * ChakraCore/test/Basics/IdsWithEscapes.baseline-jsc: Fix typo "tocken" => "token" - * stress/destructuring-assignment-syntax.js: Fix typo "tocken" => "token" - * stress/error-messages-for-in-operator-should-not-crash.js: Fix typo "tocken" => "token" - * stress/reserved-word-with-escape.js: Fix typo "tocken" => "token" - (testSyntaxError.String.raw.v): - (String.raw.SyntaxError.Cannot.use.the.keyword.string_appeared_here.as.a.name): - (testSyntaxError.String.raw.a): - -2018-04-28 Caio Lima - - [ESNext][BigInt] Implement support for "*" operation - https://bugs.webkit.org/show_bug.cgi?id=183721 - - Reviewed by Saam Barati. - - * bigIntTests.yaml: - * stress/big-int-mul-jit.js: Added. - * stress/big-int-mul-to-primitive-precedence.js: Added. - * stress/big-int-mul-to-primitive.js: Added. - * stress/big-int-mul-type-error.js: Added. - * stress/big-int-mul-wrapped-value.js: Added. - * stress/big-int-multiplication.js: Added. - * stress/big-int-multiply-memory-stress.js: Added. - -2018-04-28 Commit Queue - - Unreviewed, rolling out r231131. - https://bugs.webkit.org/show_bug.cgi?id=185112 - - It is breaking Debug build due to unchecked exception - (Requested by caiolima on #webkit). - - Reverted changeset: - - "[ESNext][BigInt] Implement support for "*" operation" - https://bugs.webkit.org/show_bug.cgi?id=183721 - https://trac.webkit.org/changeset/231131 - -2018-04-27 Caio Lima - - [ESNext][BigInt] Implement support for "*" operation - https://bugs.webkit.org/show_bug.cgi?id=183721 - - Reviewed by Saam Barati. - - * bigIntTests.yaml: - * stress/big-int-mul-jit.js: Added. - * stress/big-int-mul-to-primitive-precedence.js: Added. - * stress/big-int-mul-to-primitive.js: Added. - * stress/big-int-mul-type-error.js: Added. - * stress/big-int-mul-wrapped-value.js: Added. - * stress/big-int-multiplication.js: Added. - * stress/big-int-multiply-memory-stress.js: Added. - -2018-04-27 Ryan Haddad - - Unreviewed, rolling out r231086. - - Caused JSC test failures due to an unchecked exception. - - Reverted changeset: - - "[ESNext][BigInt] Implement support for "*" operation" - https://bugs.webkit.org/show_bug.cgi?id=183721 - https://trac.webkit.org/changeset/231086 - -2018-04-27 Ryan Haddad - - Unreviewed test gardening, update expectations for test262/intl402/PluralRules tests after r231047. - - * test262.yaml: Mark tests as passing. - -2018-04-26 Caio Lima - - [ESNext][BigInt] Implement support for "*" operation - https://bugs.webkit.org/show_bug.cgi?id=183721 - - Reviewed by Saam Barati. - - * bigIntTests.yaml: - * stress/big-int-mul-jit.js: Added. - * stress/big-int-mul-to-primitive-precedence.js: Added. - * stress/big-int-mul-to-primitive.js: Added. - * stress/big-int-mul-type-error.js: Added. - * stress/big-int-mul-wrapped-value.js: Added. - * stress/big-int-multiplication.js: Added. - * stress/big-int-multiply-memory-stress.js: Added. - -2018-04-25 Robin Morisset - - In FTLLowerDFGToB3.cpp::compileCreateRest, always use a contiguous array as the indexing type when under isWatchingHavingABadTimeWatchpoint - https://bugs.webkit.org/show_bug.cgi?id=184773 - - - Reviewed by Filip Pizlo. - - This bug requires a race between the thread doing FTL compilation and the main thread, but it triggers in 100% of cases (before the fix) on my machine - so I decided to add it to the stress tests nonetheless. - - * stress/create-rest-while-having-a-bad-time.js: Added. - (f): - (g): - (h): - -2018-04-25 Keith Miller - - Add missing scope release to functionProtoFuncToString - https://bugs.webkit.org/show_bug.cgi?id=184995 - - Reviewed by Saam Barati. - - * stress/function-toString-arrow.js: Added. - (async): - -2018-04-24 Keith Miller - - fromCharCode is missing some exception checks - https://bugs.webkit.org/show_bug.cgi?id=184952 - - Reviewed by Saam Barati. - - * stress/fromCharCode-exception-check.js: Added. - (get catch): - -2018-04-24 Mark Lam - - Gardening: test fix after r230863. - https://bugs.webkit.org/show_bug.cgi?id=184846 - - - Not reviewed. - - * stress/json-stringified-overflow-2.js: - (catch): - * stress/json-stringified-overflow.js: - (catch): - -2018-04-20 JF Bastien - - Handle more JSON stringify OOM - https://bugs.webkit.org/show_bug.cgi?id=184846 - - - Reviewed by Mark Lam. - - * stress/json-stringified-overflow-2.js: Added. Same as the one - below, but with a bigger input which will trigger a different code - path. - (catch): - * stress/json-stringified-overflow.js: Modify the test to only - catch OOM on stringification. not on string creation. - -2018-04-18 Yusuke Suzuki - - [WebAssembly][Modules] Import tables in wasm modules - https://bugs.webkit.org/show_bug.cgi?id=184738 - - Reviewed by JF Bastien. - - * wasm/modules/wasm-imports-js-re-exports-wasm-exports.js: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wasm: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wat: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/re-export.js: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wasm: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wat: - * wasm/modules/wasm-imports-wasm-exports.js: - * wasm/modules/wasm-imports-wasm-exports/imports.wasm: - * wasm/modules/wasm-imports-wasm-exports/imports.wat: - * wasm/modules/wasm-imports-wasm-exports/sum.wasm: - * wasm/modules/wasm-imports-wasm-exports/sum.wat: - -2018-04-18 Yusuke Suzuki - - [WebAssembly][Modules] Import globals from wasm modules - https://bugs.webkit.org/show_bug.cgi?id=184736 - - Reviewed by JF Bastien. - - * wasm.yaml: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports.js: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wasm: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wat: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/re-export.js: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wasm: - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wat: - * wasm/modules/wasm-imports-wasm-exports.js: - * wasm/modules/wasm-imports-wasm-exports/imports.wasm: - * wasm/modules/wasm-imports-wasm-exports/imports.wat: - * wasm/modules/wasm-imports-wasm-exports/sum.wasm: - * wasm/modules/wasm-imports-wasm-exports/sum.wat: - -2018-04-18 Yusuke Suzuki - - Unreviewed, reland r230697, r230720, and r230724. - https://bugs.webkit.org/show_bug.cgi?id=184600 - - * wasm.yaml: - * wasm/modules/constant.wasm: Added. - * wasm/modules/constant.wat: Added. - * wasm/modules/default-import-star-error.js: Added. - (then): - * wasm/modules/default-import-star-error/entry.wasm: Added. - * wasm/modules/default-import-star-error/entry.wat: Added. - * wasm/modules/default-import-star-error/t0.js: Added. - * wasm/modules/default-import-star-error/t1.js: Added. - * wasm/modules/default-import-star-error/t2.js: Added. - (export.default.Cocoa): - * wasm/modules/js-wasm-cycle.js: Added. - * wasm/modules/js-wasm-cycle/entry.js: Added. - (from.string_appeared_here.export.return42): - * wasm/modules/js-wasm-cycle/sum.wasm: Added. - * wasm/modules/js-wasm-cycle/sum.wat: Added. - * wasm/modules/js-wasm-function-namespace.js: Added. - (assert.throws): - * wasm/modules/js-wasm-function.js: Added. - (assert.throws): - * wasm/modules/js-wasm-global-namespace.js: Added. - (assert.throws): - * wasm/modules/js-wasm-global.js: Added. - (assert.throws): - * wasm/modules/js-wasm-memory-namespace.js: Added. - (assert.throws): - * wasm/modules/js-wasm-memory.js: Added. - (assert.throws): - * wasm/modules/js-wasm-start.js: Added. - (then): - * wasm/modules/js-wasm-table-namespace.js: Added. - (assert.throws): - * wasm/modules/js-wasm-table.js: Added. - (assert.throws): - * wasm/modules/memory.wasm: Added. - * wasm/modules/memory.wat: Added. - * wasm/modules/run-from-wasm.wasm: Added. - * wasm/modules/run-from-wasm.wat: Added. - * wasm/modules/run-from-wasm/check.js: Added. - (export.check): - * wasm/modules/start.wasm: Added. - * wasm/modules/start.wat: Added. - * wasm/modules/sum.wasm: Added. - * wasm/modules/sum.wat: Added. - * wasm/modules/table.wasm: Added. - * wasm/modules/table.wat: Added. - * wasm/modules/wasm-imports-js-exports.js: Added. - * wasm/modules/wasm-imports-js-exports/imports.wasm: Added. - * wasm/modules/wasm-imports-js-exports/imports.wat: Added. - * wasm/modules/wasm-imports-js-exports/sum.js: Added. - (export.sum): - * wasm/modules/wasm-imports-js-re-exports-wasm-exports.js: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wasm: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wat: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/re-export.js: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wasm: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wat: Added. - * wasm/modules/wasm-imports-wasm-exports.js: Added. - * wasm/modules/wasm-imports-wasm-exports/imports.wasm: Added. - * wasm/modules/wasm-imports-wasm-exports/imports.wat: Added. - * wasm/modules/wasm-imports-wasm-exports/sum.wasm: Added. - * wasm/modules/wasm-imports-wasm-exports/sum.wat: Added. - * wasm/modules/wasm-js-cycle.js: Added. - * wasm/modules/wasm-js-cycle/entry.wasm: Added. - * wasm/modules/wasm-js-cycle/entry.wat: Added. - * wasm/modules/wasm-js-cycle/sum.js: Added. - (from.string_appeared_here.export.sum): - * wasm/modules/wasm-wasm-cycle.js: Added. - * wasm/modules/wasm-wasm-cycle/entry.wasm: Added. - * wasm/modules/wasm-wasm-cycle/entry.wat: Added. - * wasm/modules/wasm-wasm-cycle/sum.wasm: Added. - * wasm/modules/wasm-wasm-cycle/sum.wat: Added. - -2018-04-17 Commit Queue - - Unreviewed, rolling out r230697, r230720, and r230724. - https://bugs.webkit.org/show_bug.cgi?id=184717 - - These caused multiple failures on the Test262 testers. - (Requested by mlewis13 on #webkit). - - Reverted changesets: - - "[WebAssembly][Modules] Prototype wasm import" - https://bugs.webkit.org/show_bug.cgi?id=184600 - https://trac.webkit.org/changeset/230697 - - "[WebAssembly][Modules] Implement function import from wasm - modules" - https://bugs.webkit.org/show_bug.cgi?id=184689 - https://trac.webkit.org/changeset/230720 - - "[JSC] Rename runWebAssembly to runWebAssemblySuite" - https://bugs.webkit.org/show_bug.cgi?id=184703 - https://trac.webkit.org/changeset/230724 - -2018-04-17 JF Bastien - - A put is not an ExistingProperty put when we transition a structure because of an attributes change - https://bugs.webkit.org/show_bug.cgi?id=184706 - - - Reviewed by Saam Barati. - - * stress/put-by-id-direct-strict-transition.js: Added. - (const.foo): - (j.const.obj.set hello): - * stress/put-by-id-direct-transition.js: Added. - (const.foo): - (j.const.obj.set hello): - * stress/put-getter-setter-by-id-strict-transition.js: Added. - (const.foo): - (j.const.obj.set hello): - * stress/put-getter-setter-by-id-transition.js: Added. - (const.foo): - (j.const.obj.set hello): - -2018-04-16 Filip Pizlo - - PutStackSinkingPhase should know that KillStack means ConflictingFlush - https://bugs.webkit.org/show_bug.cgi?id=184672 - - Reviewed by Michael Saboff. - - * stress/sink-put-stack-over-kill-stack.js: Added. - (avocado_1): - (apricot_0): - (__c_0): - (banana_2): - -2018-04-17 Yusuke Suzuki - - [JSC] Rename runWebAssembly to runWebAssemblySuite - https://bugs.webkit.org/show_bug.cgi?id=184703 - - Reviewed by JF Bastien. - - And add runWebAssembly as a command to simplely run wasm modules. - - * wasm.yaml: - -2018-04-17 Yusuke Suzuki - - [WebAssembly][Modules] Implement function import from wasm modules - https://bugs.webkit.org/show_bug.cgi?id=184689 - - Reviewed by JF Bastien. - - * wasm.yaml: - * wasm/modules/js-wasm-cycle.js: Added. - * wasm/modules/js-wasm-cycle/entry.js: Added. - (from.string_appeared_here.export.return42): - * wasm/modules/js-wasm-cycle/sum.wasm: Added. - * wasm/modules/js-wasm-cycle/sum.wat: Added. - * wasm/modules/run-from-wasm.wasm: Added. - * wasm/modules/run-from-wasm.wat: Added. - * wasm/modules/run-from-wasm/check.js: Added. - (export.check): - * wasm/modules/wasm-imports-js-exports.js: Added. - * wasm/modules/wasm-imports-js-exports/imports.wasm: Added. - * wasm/modules/wasm-imports-js-exports/imports.wat: Added. - * wasm/modules/wasm-imports-js-exports/sum.js: Added. - (export.sum): - * wasm/modules/wasm-imports-js-re-exports-wasm-exports.js: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wasm: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wat: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/re-export.js: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wasm: Added. - * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wat: Added. - * wasm/modules/wasm-imports-wasm-exports.js: Added. - * wasm/modules/wasm-imports-wasm-exports/imports.wasm: Added. - * wasm/modules/wasm-imports-wasm-exports/imports.wat: Added. - * wasm/modules/wasm-imports-wasm-exports/sum.wasm: Added. - * wasm/modules/wasm-imports-wasm-exports/sum.wat: Added. - * wasm/modules/wasm-js-cycle.js: Added. - * wasm/modules/wasm-js-cycle/entry.wasm: Added. - * wasm/modules/wasm-js-cycle/entry.wat: Added. - * wasm/modules/wasm-js-cycle/sum.js: Added. - (from.string_appeared_here.export.sum): - * wasm/modules/wasm-wasm-cycle.js: Added. - * wasm/modules/wasm-wasm-cycle/entry.wasm: Added. - * wasm/modules/wasm-wasm-cycle/entry.wat: Added. - * wasm/modules/wasm-wasm-cycle/sum.wasm: Added. - * wasm/modules/wasm-wasm-cycle/sum.wat: Added. - -2018-04-16 Yusuke Suzuki - - [WebAssembly][Modules] Prototype wasm import - https://bugs.webkit.org/show_bug.cgi?id=184600 - - Reviewed by JF Bastien. - - Add wasm and wat files since module loader want to load wasm files from FS. - Currently, importing the other modules from wasm is not supported. - - * wasm.yaml: - * wasm/modules/constant.wasm: Added. - * wasm/modules/constant.wat: Added. - * wasm/modules/js-wasm-function-namespace.js: Added. - (assert.throws): - * wasm/modules/js-wasm-function.js: Added. - (assert.throws): - * wasm/modules/js-wasm-global-namespace.js: Added. - (assert.throws): - * wasm/modules/js-wasm-global.js: Added. - (assert.throws): - * wasm/modules/js-wasm-memory-namespace.js: Added. - (assert.throws): - * wasm/modules/js-wasm-memory.js: Added. - (assert.throws): - * wasm/modules/js-wasm-start.js: Added. - (then): - * wasm/modules/js-wasm-table-namespace.js: Added. - (assert.throws): - * wasm/modules/js-wasm-table.js: Added. - (assert.throws): - * wasm/modules/memory.wasm: Added. - * wasm/modules/memory.wat: Added. - * wasm/modules/start.wasm: Added. - * wasm/modules/start.wat: Added. - * wasm/modules/sum.wasm: Added. - * wasm/modules/sum.wat: Added. - * wasm/modules/table.wasm: Added. - * wasm/modules/table.wat: Added. - -2018-04-14 Filip Pizlo - - Function.prototype.caller shouldn't return generator bodies - https://bugs.webkit.org/show_bug.cgi?id=184630 - - Reviewed by Yusuke Suzuki. - - * stress/function-caller-async-arrow-function-body.js: Added. - * stress/function-caller-async-function-body.js: Added. - * stress/function-caller-async-generator-body.js: Added. - * stress/function-caller-generator-body.js: Added. - * stress/function-caller-generator-method-body.js: Added. - -2018-04-12 Tomas Popela - - Unreviewed, skip JIT tests if it isn't enabled - - See https://bugs.webkit.org/show_bug.cgi?id=182730. - - * stress/big-int-spec-to-primitive.js: - * stress/big-int-spec-to-this.js: - -2018-04-10 Caio Lima - - [ESNext][BigInt] Add support for BigInt in SpeculatedType - https://bugs.webkit.org/show_bug.cgi?id=182470 - - Reviewed by Saam Barati. - - * stress/big-int-spec-to-primitive.js: Added. - * stress/big-int-spec-to-this.js: Added. - * stress/big-int-strict-equals-jit.js: Added. - * stress/big-int-strict-spec-to-this.js: Added. - * stress/big-int-type-of-proven-type.js: Added. - -2018-04-10 Filip Pizlo - - DFG AI and clobberize should agree with each other - https://bugs.webkit.org/show_bug.cgi?id=184440 - - Reviewed by Saam Barati. - - Add tests for all of the bugs I fixed. - - * stress/direct-arguments-out-of-bounds-change-structure.js: Added. - (foo): - * stress/new-typed-array-cse-effects.js: Added. - (foo): - * stress/scoped-arguments-out-of-bounds-change-structure.js: Added. - (foo.theO): - (foo): - * stress/string-from-char-code-change-structure-not-dead.js: Added. - (foo): - (i.valueOf): - (weirdValue.valueOf): - * stress/string-from-char-code-change-structure.js: Added. - (foo): - (i.valueOf): - (weirdValue.valueOf): - -2018-04-09 Leo Balter - - Fix errant Test262 files CRLF to LF for consistency with the original source - https://bugs.webkit.org/show_bug.cgi?id=184425 - - Reviewed by Yusuke Suzuki. - - * test262/test/built-ins/Math/acosh/nan-returns.js: - * test262/test/built-ins/Math/asinh/asinh-specialVals.js: - * test262/test/built-ins/Math/atanh/atanh-specialVals.js: - * test262/test/built-ins/Math/cbrt/cbrt-specialValues.js: - * test262/test/built-ins/Math/cbrt/prop-desc.js: - * test262/test/built-ins/Math/cosh/cosh-specialVals.js: - * test262/test/built-ins/Math/expm1/expm1-specialVals.js: - * test262/test/built-ins/Math/log10/Log10-specialVals.js: - * test262/test/built-ins/Math/log2/log2-basicTests.js: - * test262/test/built-ins/Math/sign/sign-specialVals.js: - * test262/test/built-ins/Math/sinh/sinh-specialVals.js: - * test262/test/built-ins/Math/tanh/tanh-specialVals.js: - * test262/test/built-ins/Math/trunc/trunc-sampleTests.js: - * test262/test/built-ins/Math/trunc/trunc-specialVals.js: - -2018-04-08 Yusuke Suzuki - - Unreviewed, remove incorrect entry in test262.yaml - https://bugs.webkit.org/show_bug.cgi?id=184266 - - * test262.yaml: - -2018-04-08 Valerie Young - - [JSC] Update Test262 to April 6 version - https://bugs.webkit.org/show_bug.cgi?id=184266 - - Rubber stamped by Yusuke Suzuki. - -2018-04-08 Yusuke Suzuki - - [JSC] Introduce op_get_by_id_direct - https://bugs.webkit.org/show_bug.cgi?id=183970 - - Reviewed by Filip Pizlo. - - * stress/generator-prototype-copy.js: Added. - (gen): - (catch): - Adopted JF's tests. - - * stress/generator-type-check.js: Added. - (shouldThrow): - (foo2): - (i.shouldThrow): - * stress/get-by-id-direct-getter.js: Added. - (shouldBe): - (shouldThrow): - (obj.get hello): - (builtin.createBuiltin): - (obj2.get length): - * stress/get-by-id-direct.js: Added. - (shouldBe): - (shouldThrow): - (builtin.createBuiltin): - * test262.yaml: - We fixed long-standing spec compatibility issue. - As a result, this patch makes several test262 tests passed! - - -2018-04-07 Yusuke Suzuki - - Unreviewed, annotate test with @skip if $memoryLimited - https://bugs.webkit.org/show_bug.cgi?id=183894 - - * stress/json-stringified-overflow.js: - -2018-04-06 Alexey Proskuryakov - - Add svn:eol-style to line-terminator-normalisation-CR.js - https://bugs.webkit.org/show_bug.cgi?id=184341 - - * test262/test/built-ins/Function/prototype/toString/line-terminator-normalisation-CR.js: Added property svn:eol-style. - -2018-04-06 Ross Kirsling - - Unreviewed, remove errant LF from existing test262 test for CR line endings. - - * test262/test/built-ins/Function/prototype/toString/line-terminator-normalisation-CR.js: - -2018-04-05 Ross Kirsling - - Unreviewed, rolling out r230320. - - Revert fix, as the root cause lies elsewhere. - - Reverted changeset: - - "[test262] Mark line-terminator-normalisation-CR.js as a - binary file." - https://bugs.webkit.org/show_bug.cgi?id=184341 - https://trac.webkit.org/changeset/230320 - -2018-04-05 Ross Kirsling - - [test262] Mark line-terminator-normalisation-CR.js as a binary file. - https://bugs.webkit.org/show_bug.cgi?id=184341 - - Reviewed by Yusuke Suzuki. - - This test is all about CR line endings, but `svn-apply` can't deal with them. - Treating the file as binary ensures that its contents never are never shown in a diff. - - * .gitattributes: Added. - -2018-04-05 Robin Morisset - - Fix testcase (missing try/catch). - https://bugs.webkit.org/show_bug.cgi?id=183657 - - Unreviewed. - - * stress/large-unshift-splice.js - -2018-04-04 Filip Pizlo - - REGRESSION(r222563): removed DoubleReal type check causes tons of crashes because CSE has never known how to handle SaneChain - https://bugs.webkit.org/show_bug.cgi?id=184319 - - Reviewed by Saam Barati. - - * stress/array-push-nan-to-double-array-cse-sane-and-insane-chain.js: Added. - (foo): - (bar): - * stress/array-push-nan-to-double-array.js: Added. - (foo): - (bar): - -2018-04-03 Mark Lam - - Test js-fixed-array-out-of-memory.js should be excluded for memory limited devices. - https://bugs.webkit.org/show_bug.cgi?id=184284 - - Reviewed by Saam Barati. - - * stress/js-fixed-array-out-of-memory.js: - -2018-03-31 Filip Pizlo - - JSC crash in JIT code with for-of loop and Array/Set iterators - https://bugs.webkit.org/show_bug.cgi?id=183174 - - Reviewed by Saam Barati. - - * microbenchmarks/hoist-get-by-offset-tower-with-inferred-types.js: Added. This test shows that fixing the bug didn't break hoisting of GetByOffset with inferred types. I confirmed that if I did break it, this test slows down by >7x. - (foo): - * stress/hoist-get-by-offset-with-control-dependent-inferred-type.js: Added. This test shows that the bug is fixed. - (f): - -2018-03-30 JF Bastien - - WebAssembly: support DataView compilation - https://bugs.webkit.org/show_bug.cgi?id=183342 - - Reviewed by Mark Lam. - - Test WebAssembly compilation using a DataView with offset. - - * wasm/regress/183342.js: Added. - (attempt.catch): - -2018-03-30 Filip Pizlo - - Bytecode generator should not get_from_scope something that may be a hole into a variable that is already live - https://bugs.webkit.org/show_bug.cgi?id=184189 - - Reviewed by JF Bastien. - - * stress/load-hole-from-scope-into-live-var.js: Added. - (result.eval.try.switch): - (catch): - -2018-03-30 Ryan Haddad - - Unreviewed, rolling out r230102. - - Caused assertion failures on JSC bots. - - Reverted changeset: - - "A stack overflow in the parsing of a builtin (called by - createExecutable) cause a crash instead of a catchable js - exception" - https://bugs.webkit.org/show_bug.cgi?id=184074 - https://trac.webkit.org/changeset/230102 - -2018-03-30 Robin Morisset - - Inlining of a function that ends in op_unreachable in a non-tail position triggers an ASSERT - https://bugs.webkit.org/show_bug.cgi?id=183812 - - Reviewed by Keith Miller. - - * stress/inlining-unreachable-non-tail.js: Added. - (foo.): - (foo): - -2018-03-30 Robin Morisset - - A stack overflow in the parsing of a builtin (called by createExecutable) cause a crash instead of a catchable js exception - https://bugs.webkit.org/show_bug.cgi?id=184074 - - - Reviewed by Keith Miller. - - * stress/stack-overflow-while-parsing-builtin.js: Added. - (f): - -2018-03-30 Robin Morisset - - Out-of-bounds accesses due to a missing check for MAX_STORAGE_VECTOR_LENGTH in unshiftCountForAnyIndexingType - https://bugs.webkit.org/show_bug.cgi?id=183657 - - Reviewed by Keith Miller. - - * stress/large-unshift-splice.js: Added. - (make_contig_arr): - -2018-03-28 Robin Morisset - - appendQuotedJSONString stops on arithmetic overflow instead of propagating it upwards - https://bugs.webkit.org/show_bug.cgi?id=183894 - - Reviewed by Saam Barati. - - * stress/json-stringified-overflow.js: Added. - (catch): - -2018-03-26 Filip Pizlo - - DFG should know that CreateThis can be effectful - https://bugs.webkit.org/show_bug.cgi?id=184013 - - Reviewed by Saam Barati. - - * stress/create-this-property-change.js: Added. - (Foo): - (RealBar): - (get if): - * stress/create-this-structure-change-without-cse.js: Added. - (Foo): - (RealBar): - (get if): - * stress/create-this-structure-change.js: Added. - (Foo): - (RealBar): - (get if): - -2018-03-22 Yusuke Suzuki - - [DFG] Introduces fused compare and jump - https://bugs.webkit.org/show_bug.cgi?id=177100 - - Reviewed by Mark Lam. - - * stress/fused-jeq-slow.js: Added. - (shouldBe): - (testJEQ): - (testJNEQB): - (testJEQB): - (testJNEQF): - (testJEQF): - * stress/fused-jeq.js: Added. - (shouldBe): - (testJEQ): - (testJNEQB): - (testJEQB): - (testJNEQF): - (testJEQF): - * stress/fused-jstricteq-slow.js: Added. - (shouldBe): - (testJSTRICTEQ): - (testJNSTRICTEQB): - (testJSTRICTEQB): - (testJNSTRICTEQF): - (testJSTRICTEQF): - * stress/fused-jstricteq.js: Added. - (shouldBe): - (testJSTRICTEQ): - (testJNSTRICTEQB): - (testJSTRICTEQB): - (testJNSTRICTEQF): - (testJSTRICTEQF): - -2018-03-22 Yusuke Suzuki - - [JSC] Clear MustGenerate for ToString(Number) converted from NumberToStringWithRadix - https://bugs.webkit.org/show_bug.cgi?id=183559 - - Reviewed by Mark Lam. - - * stress/double-to-string-in-loop-removed.js: Added. - (test): - * stress/int32-to-string-in-loop-removed.js: Added. - (test): - * stress/int52-to-string-in-loop-removed.js: Added. - (test): - -2018-03-22 Michael Saboff - - Race Condition in arrayProtoFuncReverse() causes wrong results or crash - https://bugs.webkit.org/show_bug.cgi?id=183901 - - Reviewed by Keith Miller. - - New test. - - * stress/array-reverse-doesnt-clobber.js: Added. - (testArrayReverse): - (createArrayOfArrays): - (createArrayStorage): - -2018-03-21 Filip Pizlo - - ScopedArguments should do poisoning and index masking - https://bugs.webkit.org/show_bug.cgi?id=183863 - - Reviewed by Mark Lam. - - Adds another stress test of scoped arguments. - - * stress/scoped-arguments-test.js: Added. - (foo): - -2018-03-20 Saam Barati - - We need to do proper bookkeeping of exitOK when inserting constants when sinking NewArrayBuffer - https://bugs.webkit.org/show_bug.cgi?id=183795 - - - Reviewed by JF Bastien. - - * stress/sink-phantom-new-array-buffer-exit-ok.js: Added. - (foo): - (bar): - -2018-03-16 Yusuke Suzuki - - [DFG][FTL] Add vectorLengthHint for NewArray - https://bugs.webkit.org/show_bug.cgi?id=183694 - - Reviewed by Saam Barati. - - * stress/vector-length-hint-array-constructor.js: Added. - (shouldBe): - (test): - * stress/vector-length-hint-new-array.js: Added. - (shouldBe): - (test): - -2018-03-13 Yusuke Suzuki - - [DFG][FTL] Make ArraySlice(0) code tight - https://bugs.webkit.org/show_bug.cgi?id=183590 - - Reviewed by Saam Barati. - - * stress/array-slice-with-zero.js: Added. - (shouldBe): - (test): - (test2): - * stress/array-slice-zero-args.js: Added. - (shouldBe): - (test): - -2018-03-14 Caitlin Potter - - [JSC] fix order of evaluation for ClassDefinitionEvaluation - https://bugs.webkit.org/show_bug.cgi?id=183523 - - Reviewed by Keith Miller. - - Computed property names need to be evaluated in source order during class - definition evaluation, as it's observable (and specified to work this way). - - This change improves compatibility with Chromium. - - * stress/class_elements.js: Added. - (test): - (test.C.prototype.effect): - (test.C.effect): - (test.C.prototype.get effect): - (test.C.prototype.set effect): - (test.C): - -2018-03-11 Yusuke Suzuki - - [DFG] AI should convert CreateThis to NewObject if the prototype object is proved - https://bugs.webkit.org/show_bug.cgi?id=183310 - - Reviewed by Filip Pizlo. - - * stress/ai-create-this-to-new-object-fire.js: Added. - (assert): - (test): - (func): - (check): - (test.body.A): - (test.body.B): - (test.body): - * stress/ai-create-this-to-new-object.js: Added. - (assert): - (test): - (func): - (check): - (test.body.A): - (test.body.B): - (test.body): - -2018-03-10 Yusuke Suzuki - - [FTL] Drop NewRegexp for String.prototype.match with RegExp + global flag - https://bugs.webkit.org/show_bug.cgi?id=181848 - - Reviewed by Sam Weinig. - - * microbenchmarks/regexp-u-global-es5.js: Added. - (fn): - * microbenchmarks/regexp-u-global-es6.js: Added. - (fn): - * stress/materialized-regexp-has-correct-last-index-set-by-match-at-osr-exit.js: Added. - (shouldBe): - (test): - (i.switch): - * stress/materialized-regexp-has-correct-last-index-set-by-match.js: Added. - (shouldBe): - (test): - -2018-03-07 Dominik Infuehr - - Disable test stress/var-injection-cache-invalidation.js on systems with limited memory - https://bugs.webkit.org/show_bug.cgi?id=183334 - - Reviewed by Žan Doberšek. - - * stress/var-injection-cache-invalidation.js: - -2018-03-06 Dominik Infuehr - - [ARM] Disable tests that run out of memory - https://bugs.webkit.org/show_bug.cgi?id=182699 - - Reviewed by Žan Doberšek. - - Skip tests that run of of memory. Do not run - modules/module-jit-reachability.js without LLInt to prevent - running out of executable memory. - - * modules.yaml: - * modules/module-jit-reachability.js: - * stress/has-own-property-name-cache-string-keys.js: - * stress/has-own-property-name-cache-symbol-keys.js: - -2018-03-01 Yusuke Suzuki - - ASSERTION FAILED: matchContextualKeyword(m_vm->propertyNames->async) - https://bugs.webkit.org/show_bug.cgi?id=183173 - - Reviewed by Saam Barati. - - * stress/async-arrow-function-in-class-heritage.js: Added. - (testSyntax): - (testSyntaxError): - (SyntaxError): - -2018-03-01 Saam Barati - - We need to clear cached structures when having a bad time - https://bugs.webkit.org/show_bug.cgi?id=183256 - - - Reviewed by Mark Lam. - - * stress/having-a-bad-time-with-derived-arrays.js: Added. - (assert): - (defineSetter): - (iterate): - (doSlice): - -2018-02-28 Yusuke Suzuki - - JSC crash with `import("")` - https://bugs.webkit.org/show_bug.cgi?id=183175 - - Reviewed by Saam Barati. - - * stress/import-with-empty-string.js: Added. - -2018-02-27 Yusuke Suzuki - - Unreviewed, skip FTL tests if FTL is disabled - https://bugs.webkit.org/show_bug.cgi?id=183071 - - * stress/has-indexed-property-array-storage-ftl.js: - * stress/has-indexed-property-slow-put-array-storage-ftl.js: - -2018-02-25 Yusuke Suzuki - - [FTL] Support PutByVal(ArrayStorage/SlowPutArrayStorage) - https://bugs.webkit.org/show_bug.cgi?id=182965 - - Reviewed by Saam Barati. - - * stress/put-by-val-array-storage.js: Added. - (shouldBe): - (testArrayStorageInBounds): - * stress/put-by-val-direct-out-of-bounds-setter.js: Added. - (shouldBe): - (testInt32.createBuiltin): - (set for): - * stress/put-by-val-slow-put-array-storage.js: Added. - (shouldBe): - (testArrayStorageInBounds): - -2018-02-26 Saam Barati - - validateStackAccess should not validate if the offset is within the stack bounds - https://bugs.webkit.org/show_bug.cgi?id=183067 - - - Reviewed by Mark Lam. - - * stress/dont-validate-stack-offset-in-b3-because-it-might-be-guarded-by-control-flow.js: Added. - (assert): - (test.a): - (test.b): - (test): - -2018-02-26 Yusuke Suzuki - - Unreviewed, skip FTL tests if FTL is disabled - https://bugs.webkit.org/show_bug.cgi?id=183071 - - * stress/has-indexed-property-array-storage-ftl.js: - * stress/has-indexed-property-slow-put-array-storage-ftl.js: - -2018-02-23 Saam Barati - - Make Number.isInteger an intrinsic - https://bugs.webkit.org/show_bug.cgi?id=183088 - - Reviewed by JF Bastien. - - * stress/number-is-integer-intrinsic.js: Added. - -2018-02-23 Oleksandr Skachkov - - WebAssembly: cache memory address / size on instance - https://bugs.webkit.org/show_bug.cgi?id=177305 - - Reviewed by JF Bastien. - - * wasm/function-tests/memory-reuse.js: Added. - (createWasmInstance): - (doCheckTrap): - (doMemoryGrow): - (doCheck): - (checkWasmInstancesWithSharedMemory): - -2018-02-23 Yusuke Suzuki - - [JSC] Implement $vm.ftlTrue function for FTL testing - https://bugs.webkit.org/show_bug.cgi?id=183071 - - Reviewed by Mark Lam. - - * stress/dead-fiat-value-to-int52-then-exit-not-double.js: - (foo): - * stress/dead-fiat-value-to-int52-then-exit-not-int52.js: - (foo): - * stress/dead-fiat-value-to-int52.js: - (foo): - * stress/dead-osr-entry-value.js: - (foo): - * stress/fiat-value-to-int52-then-exit-not-double.js: - (foo): - * stress/fiat-value-to-int52-then-exit-not-int52.js: - (foo): - * stress/fiat-value-to-int52-then-fail-to-fold.js: - (foo): - * stress/fiat-value-to-int52-then-fold.js: - (foo): - * stress/fiat-value-to-int52.js: - (foo): - * stress/fold-based-on-int32-proof-mul-branch.js: - (foo): - * stress/fold-profiled-call-to-call.js: - (foo): - * stress/fold-to-double-constant-then-exit.js: - (foo): - * stress/fold-to-int52-constant-then-exit.js: - (foo): - * stress/fold-to-primitive-in-cfa.js: - (foo): - * stress/fold-to-primitive-to-identity-in-cfa.js: - (foo): - * stress/has-indexed-property-array-storage-ftl.js: Added. - (shouldBe): - (test1): - (test2): - * stress/has-indexed-property-slow-put-array-storage-ftl.js: Added. - (shouldBe): - (test1): - (test2): - * stress/int52-ai-add-then-filter-int32.js: - (foo): - * stress/int52-ai-mul-and-clean-neg-zero-then-filter-int32.js: - (foo): - * stress/int52-ai-mul-then-filter-int32.js: - (foo): - * stress/int52-ai-neg-then-filter-int32.js: - (foo): - * stress/int52-ai-sub-then-filter-int32.js: - (foo): - * stress/licm-pre-header-cannot-exit-nested.js: - (foo): - * stress/licm-pre-header-cannot-exit.js: - (foo): - * stress/sparse-array-entry-update-144067.js: - (useMemoryToTriggerGCs): - * stress/test-spec-misc.js: - (foo): - * stress/tricky-array-bounds-checks.js: - (foo): - -2018-02-22 Yusuke Suzuki - - [FTL] Support HasIndexedProperty for ArrayStorage and SlowPutArrayStorage - https://bugs.webkit.org/show_bug.cgi?id=182792 - - Reviewed by Mark Lam. - - * stress/has-indexed-property-array-storage.js: Added. - (shouldBe): - (test1): - (test2): - * stress/has-indexed-property-slow-put-array-storage.js: Added. - (shouldBe): - (test1): - (test2): - -2018-02-20 Saam Barati - - DFG::VarargsForwardingPhase should eliminate getting argument length - https://bugs.webkit.org/show_bug.cgi?id=182959 - - Reviewed by Keith Miller. - - * microbenchmarks/forward-arguments-dont-escape-on-arguments-length.js: Added. - -2018-02-14 Yusuke Suzuki - - [FTL] Support ArrayPush for ArrayStorage - https://bugs.webkit.org/show_bug.cgi?id=182782 - - Reviewed by Saam Barati. - - Existing array-push-multiple-storage.js covers ArrayPush(ArrayStorage) multiple arguments case. - - * stress/array-push-array-storage-beyond-int32.js: Added. - (shouldBe): - (test): - * stress/array-push-array-storage.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-array-storage-beyond-int32.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-storage-continuous.js: Added. - (shouldBe): - (test): - -2018-02-14 Yusuke Suzuki - - [FTL] Support ArrayPop for ArrayStorage - https://bugs.webkit.org/show_bug.cgi?id=182783 - - Reviewed by Saam Barati. - - * stress/array-pop-array-storage.js: Added. - (shouldBe): - (test): - -2018-02-14 Yusuke Suzuki - - [FTL] Add Arrayify for ArrayStorage and SlowPutArrayStorage - https://bugs.webkit.org/show_bug.cgi?id=182731 - - Reviewed by Saam Barati. - - * stress/arrayify-array-storage-array.js: Added. - (shouldBe): - (testArrayStorage): - * stress/arrayify-array-storage-non-array.js: Added. - (shouldBe): - (testArrayStorage): - * stress/arrayify-array-storage.js: Added. - (shouldBe): - (testArrayStorage): - * stress/arrayify-slow-put-array-storage-pass-array-storage.js: Added. - (shouldBe): - (testArrayStorage): - * stress/arrayify-slow-put-array-storage.js: Added. - (shouldBe): - (testArrayStorage): - -2018-02-19 Saam Barati - - Don't use JSFunction's allocation profile when getting the prototype can be effectful - https://bugs.webkit.org/show_bug.cgi?id=182942 - - - Reviewed by Mark Lam. - - * stress/get-prototype-create-this-effectful.js: Added. - -2018-02-16 Saam Barati - - Fix bugs from r228411 - https://bugs.webkit.org/show_bug.cgi?id=182851 - - - Reviewed by JF Bastien. - - * stress/constant-folding-phase-insert-check-handle-varargs.js: Added. - -2018-02-15 Filip Pizlo - - Unreviewed, roll out r228366 since it did not progress anything. - - * stress/gc-error-stack.js: Removed. - * stress/no-gc-error-stack.js: Removed. - -2018-02-15 Tomas Popela - - Many stress tests fail with JIT disabled - https://bugs.webkit.org/show_bug.cgi?id=182730 - - Reviewed by Saam Barati. - - These tests are broken by design if the JIT is disabled - they test - the return value of numberOfDFGCompiles(), which is always set to - 1000000.0 in TestRunnerUtils.cpp and makes the tests to fail. - - * stress/arith-abs-on-various-types.js: - * stress/arith-abs-to-arith-negate-range-optimizaton.js: - * stress/arith-acos-on-various-types.js: - * stress/arith-acosh-on-various-types.js: - * stress/arith-asin-on-various-types.js: - * stress/arith-asinh-on-various-types.js: - * stress/arith-atan-on-various-types.js: - * stress/arith-atanh-on-various-types.js: - * stress/arith-cbrt-on-various-types.js: - * stress/arith-ceil-on-various-types.js: - * stress/arith-clz32-on-various-types.js: - * stress/arith-cos-on-various-types.js: - * stress/arith-cosh-on-various-types.js: - * stress/arith-expm1-on-various-types.js: - * stress/arith-floor-on-various-types.js: - * stress/arith-fround-on-various-types.js: - * stress/arith-log-on-various-types.js: - * stress/arith-log10-on-various-types.js: - * stress/arith-log2-on-various-types.js: - * stress/arith-negate-on-various-types.js: - * stress/arith-round-on-various-types.js: - * stress/arith-sin-on-various-types.js: - * stress/arith-sinh-on-various-types.js: - * stress/arith-sqrt-on-various-types.js: - * stress/arith-tan-on-various-types.js: - * stress/arith-tanh-on-various-types.js: - * stress/arith-trunc-on-various-types.js: - * stress/compare-strict-eq-on-various-types.js: - -2018-02-14 Ryan Haddad - - Skip stress/new-largeish-contiguous-array-with-size.js on arm. - - Unreviewed test gardening. - - * stress/new-largeish-contiguous-array-with-size.js: - -2018-02-14 Saam Barati - - Setting a VMTrap shouldn't look at topCallFrame since that may imply we're in C code and holding the malloc lock - https://bugs.webkit.org/show_bug.cgi?id=182801 - - Reviewed by Keith Miller. - - * stress/watchdog-dont-malloc-when-in-c-code.js: Added. - -2018-02-14 Ryan Haddad - - Skip JSC test stress/activation-sink-default-value-tdz-error.js on debug. - https://bugs.webkit.org/show_bug.cgi?id=182526 - - Unreviewed test gardening. - - * stress/activation-sink-default-value-tdz-error.js: - -2018-02-13 Saam Barati - - putDirectIndexSlowOrBeyondVectorLength needs to convert to dictionary indexing mode always if attributes are present - https://bugs.webkit.org/show_bug.cgi?id=182755 - - - Reviewed by Keith Miller. - - * stress/always-enter-dictionary-indexing-mode-with-getter.js: Added. - (test1.o.get 10005): - (test1): - (test2.o.get 1000): - (test2): - -2018-02-13 Caitlin Potter - - [JSC] cache TaggedTemplate arrays by callsite rather than by contents - https://bugs.webkit.org/show_bug.cgi?id=182717 - - Reviewed by Yusuke Suzuki. - - https://github.com/tc39/ecma262/pull/890 imposes a change to template - literals, to allow template callsite arrays to be collected when the - code containing the tagged template call is collected. This spec change - has received concensus and been ratified. - - This change eliminates the eternal map associating template contents - with arrays. - - * stress/tagged-template-object-collect.js: Renamed from JSTests/stress/tagged-template-registry-key-collect.js. - * stress/tagged-template-object.js: Renamed from JSTests/stress/tagged-template-registry-key.js. - * stress/tagged-templates-identity.js: - * stress/template-string-tags-eval.js: - * test262.yaml: - -2018-02-13 Yusuke Suzuki - - Support GetArrayLength on ArrayStorage in the FTL - https://bugs.webkit.org/show_bug.cgi?id=182625 - - Reviewed by Saam Barati. - - * stress/array-storage-length.js: Added. - (shouldBe): - (testInBound): - (testUncountable): - (testSlowPutInBound): - (testSlowPutUncountable): - * stress/undecided-length.js: Added. - (shouldBe): - (test2): - -2018-02-12 Saam Barati - - DFG::emitCodeToGetArgumentsArrayLength needs to handle NewArrayBuffer/PhantomNewArrayBuffer - https://bugs.webkit.org/show_bug.cgi?id=182706 - - - Reviewed by Filip Pizlo. - - * stress/get-array-length-phantom-new-array-buffer.js: Added. - (effects): - (foo): - -2018-02-09 Filip Pizlo - - Don't waste memory for error.stack - https://bugs.webkit.org/show_bug.cgi?id=182656 - - Reviewed by Saam Barati. - - Tests the policy. - - * stress/gc-error-stack.js: Added. Shows that the GC forgets frames now. - * stress/no-gc-error-stack.js: Added. Shows that the GC won't forget things if you ask for the stack. - -2018-02-08 Yusuke Suzuki - - [JSC] Update Test262 to Feb 9 version - https://bugs.webkit.org/show_bug.cgi?id=182468 - - Reviewed by Saam Barati. - -2018-02-08 Yusuke Suzuki - - Unreviewed, fix invalid line terminator in old test262 file part 2 - https://bugs.webkit.org/show_bug.cgi?id=182468 - - * test262/test/built-ins/Function/prototype/toString/line-terminator-normalisation-CR.js: - -2018-02-08 Yusuke Suzuki - - Unreviewed, fix invalid line terminator in old test262 file - https://bugs.webkit.org/show_bug.cgi?id=182468 - - * test262/test/language/literals/regexp/7.8.5-1.js: - -2018-02-06 Yusuke Suzuki - - [JSC] Implement Array.prototype.flatMap and Array.prototype.flatten - https://bugs.webkit.org/show_bug.cgi?id=182440 - - Reviewed by Darin Adler. - - * stress/array-flatmap.js: Added. - (shouldBe): - (shouldBeArray): - (shouldThrow): - (var): - * stress/array-flatten.js: Added. - (shouldBe): - (shouldBeArray): - * test262.yaml: - * test262/test/built-ins/Array/prototype/flatMap/depth-always-one.js: - (3.flatMap): - Pick test262 82c6148980332febe92a544a1fb653718e9fdb57 change. - -2018-02-06 Keith Miller - - put_to_scope/get_from_scope should not cache lexical scopes when expecting a global object - https://bugs.webkit.org/show_bug.cgi?id=182549 - - - Reviewed by Saam Barati. - - * stress/var-injection-cache-invalidation.js: Added. - (allocateLotsOfThings): - (test): - -2018-02-03 Yusuke Suzuki - - Unreviewed, follow up for test262 update - https://bugs.webkit.org/show_bug.cgi?id=182288 - - * test262.yaml: - -2018-02-02 Ryan Haddad - - Update test262 to Jan 30 version - https://bugs.webkit.org/show_bug.cgi?id=182288 - - Unreviewed test gardening. - - * test262.yaml: Remove entry for missing test language/expressions/assignment/white-space.js - -2018-02-02 Saam Barati - - When BytecodeParser inserts Unreachable after ForceOSRExit it needs to update ArgumentPositions for Flushes it inserts - https://bugs.webkit.org/show_bug.cgi?id=182368 - - - Reviewed by Mark Lam. - - * stress/flush-after-force-exit-in-bytecodeparser-needs-to-update-argument-positions.js: Added. - (runNearStackLimit.t): - (runNearStackLimit): - (try.runNearStackLimit): - (catch): - -2018-02-02 Yusuke Suzuki - - Update test262 to Jan 30 version - https://bugs.webkit.org/show_bug.cgi?id=182288 - - Rubber stamped by Saam Barati. - - This patch updates test262 to the latest one, Jan 30 version. - Since added and changed files are too many, we cannot create ChangeLog. - The following files are changed. - - Several files are intentionally omitted due to merge failures. We should investigate how to merge files - including some special line terminators (like u2028, u2029). - - * test262.yaml: - * test262/test262-Revision.txt: - * test262/*: - -2018-02-02 Guillaume Emont - - JSTests: Skip mozilla/js1_5/Array/regress-157652.js on all memory limited platforms - https://bugs.webkit.org/show_bug.cgi?id=182411 - - Reviewed by Carlos Alberto Lopez Perez. - - This is skipped only on arm memory limited platforms. Until recently - it was not a problem on MIPS as the butterfly was not initialized. But - since r227435, the butterfly is initialized in that test and therefore - memory is allocated, and the test typically takes around 512M, which - means it generally gets OOM-killed on the MIPS buildbot. - - * mozilla/mozilla-tests.yaml: - -2018-02-01 Mark Lam - - Fix broken bounds check in FTL's compileGetMyArgumentByVal(). - https://bugs.webkit.org/show_bug.cgi?id=182419 - - - Reviewed by Saam Barati. - - * stress/regress-182419.js: Added. - -2018-02-01 Keith Miller - - Fix crashes due to mishandling custom sections. - https://bugs.webkit.org/show_bug.cgi?id=182404 - - - Reviewed by Saam Barati. - - * wasm/Builder.js: - (export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section): - * wasm/js-api/validate.js: - (assert.truthy): - -2018-01-31 Saam Barati - - JSC incorrectly interpreting script, sets Global Property instead of Global Lexical variable (LiteralParser / JSONP path) - https://bugs.webkit.org/show_bug.cgi?id=182074 - - - Reviewed by Mark Lam. - - * stress/jsonp-program-evaluate-path-must-consider-global-lexical-environment.js: Added. - (assert): - (let.func): - (let.o.foo): - (varFunc): - -2018-01-30 Yusuke Suzuki - - Unreviewed, update test262 expects - https://bugs.webkit.org/show_bug.cgi?id=182232 - - * test262.yaml: - -2018-01-29 Yusuke Suzuki - - [JSC] Implement trimStart and trimEnd - https://bugs.webkit.org/show_bug.cgi?id=182233 - - Reviewed by Mark Lam. - - * stress/trim.js: Added. - (shouldBe): - (startTest): - (endTest): - (trimTest): - -2018-01-29 Yusuke Suzuki - - [JSC] Relax line terminators in String to make JSON subset of JS - https://bugs.webkit.org/show_bug.cgi?id=182232 - - Reviewed by Keith Miller. - - * ChakraCore/test/es5/Lex_u3.baseline-jsc: - * stress/relaxed-line-terminators-in-string.js: Added. - (shouldBe): - -2018-01-29 Michael Saboff - - REGRESSION (r227341): DFG_ASSERT failure at JSC::DFG::AtTailAbstractState::forNode() - https://bugs.webkit.org/show_bug.cgi?id=182249 - - Reviewed by Keith Miller. - - New regression test. - - * stress/compare-clobber-untypeduse.js: Added. - -2018-01-29 Matt Lewis - - Unreviewed, rolling out r227725. - - This caused internal failures. - - Reverted changeset: - - "JSC Sampling Profiler: Detect tester and testee when sampling - in RegExp JIT" - https://bugs.webkit.org/show_bug.cgi?id=152729 - https://trac.webkit.org/changeset/227725 - -2018-01-29 Yusuke Suzuki - - JSC Sampling Profiler: Detect tester and testee when sampling in RegExp JIT - https://bugs.webkit.org/show_bug.cgi?id=152729 - - Reviewed by Saam Barati. - - * stress/sampling-profiler-regexp.js: Added. - (platformSupportsSamplingProfiler.test): - (platformSupportsSamplingProfiler.baz): - (platformSupportsSamplingProfiler): - -2018-01-29 Yusuke Suzuki - - [DFG][FTL] WeakMap#set should have DFG node - https://bugs.webkit.org/show_bug.cgi?id=180015 - - Reviewed by Saam Barati. - - * stress/weakmap-set-change-get.js: Added. - (shouldBe): - (test): - * stress/weakmap-set-cse.js: Added. - (shouldBe): - (test): - * stress/weakset-add-change-get.js: Added. - (shouldBe): - * stress/weakset-add-cse.js: Added. - (shouldBe): - -2018-01-27 Yusuke Suzuki - - DFG strength reduction fails to convert NumberToStringWithValidRadixConstant for 0 to constant '0' - https://bugs.webkit.org/show_bug.cgi?id=182213 - - Reviewed by Mark Lam. - - * stress/int32-min-to-string.js: Added. - (shouldBe): - (test2): - (test4): - (test8): - (test16): - (test32): - * stress/zero-to-string.js: Added. - (shouldBe): - (test2): - (test4): - (test8): - (test16): - (test32): - -2018-01-23 Yusuke Suzuki - - Add more module scope related tests with code evaluation by string - https://bugs.webkit.org/show_bug.cgi?id=181983 - - Reviewed by Sam Weinig. - - Add more module scope related tests. When the original tests are landed, - we do not have browser integration. This patch adds more module scope tests - with dynamically created script evaluation. We add tests with Function - constructor, direct eval, indirect eval, setTimeout, setInterval, and event handlers. - - * modules/scopes-eval.js: Added. - (shouldBe): - * modules/scopes.js: - (shouldBe): - -2018-01-23 Filip Pizlo - - Unreviewed, retire some microbenchmarks that are proportionately very slow. Benchmark running time should be proportional to their value. Microbenchmarks have little value, so they should be very fast. - - * microbenchmarks/array-push-3.js: Removed. - * microbenchmarks/bigswitch-indirect-symbol-or-undefined.js: Removed. - * microbenchmarks/double-to-int32.js: Removed. - * microbenchmarks/fake-iterators-that-throw-when-finished.js: Removed. - * microbenchmarks/ftl-polymorphic-bitand.js: Removed. - * microbenchmarks/ftl-polymorphic-bitor.js: Removed. - * microbenchmarks/ftl-polymorphic-bitxor.js: Removed. - * microbenchmarks/ftl-polymorphic-lshift.js: Removed. - * microbenchmarks/ftl-polymorphic-rshift.js: Removed. - * microbenchmarks/ftl-polymorphic-sub.js: Removed. - * microbenchmarks/ftl-polymorphic-urshift.js: Removed. - * microbenchmarks/map-constant-key.js: Removed. - * microbenchmarks/nested-function-parsing.js: Removed. - * microbenchmarks/rest-parameter-allocation-elimination.js: Removed. - * microbenchmarks/spread-large-array.js: Removed. - * microbenchmarks/string-add-constant-folding.js: Removed. - * microbenchmarks/to-lower-case.js: Removed. - * microbenchmarks/undefined-property-access.js: Removed. - * slowMicrobenchmarks/array-push-3.js: Copied from JSTests/microbenchmarks/array-push-3.js. - * slowMicrobenchmarks/bigswitch-indirect-symbol-or-undefined.js: Copied from JSTests/microbenchmarks/bigswitch-indirect-symbol-or-undefined.js. - * slowMicrobenchmarks/double-to-int32.js: Copied from JSTests/microbenchmarks/double-to-int32.js. - * slowMicrobenchmarks/fake-iterators-that-throw-when-finished.js: Copied from JSTests/microbenchmarks/fake-iterators-that-throw-when-finished.js. - * slowMicrobenchmarks/ftl-polymorphic-bitand.js: Copied from JSTests/microbenchmarks/ftl-polymorphic-bitand.js. - * slowMicrobenchmarks/ftl-polymorphic-bitor.js: Copied from JSTests/microbenchmarks/ftl-polymorphic-bitor.js. - * slowMicrobenchmarks/ftl-polymorphic-bitxor.js: Copied from JSTests/microbenchmarks/ftl-polymorphic-bitxor.js. - * slowMicrobenchmarks/ftl-polymorphic-lshift.js: Copied from JSTests/microbenchmarks/ftl-polymorphic-lshift.js. - * slowMicrobenchmarks/ftl-polymorphic-rshift.js: Copied from JSTests/microbenchmarks/ftl-polymorphic-rshift.js. - * slowMicrobenchmarks/ftl-polymorphic-sub.js: Copied from JSTests/microbenchmarks/ftl-polymorphic-sub.js. - * slowMicrobenchmarks/ftl-polymorphic-urshift.js: Copied from JSTests/microbenchmarks/ftl-polymorphic-urshift.js. - * slowMicrobenchmarks/map-constant-key.js: Copied from JSTests/microbenchmarks/map-constant-key.js. - * slowMicrobenchmarks/nested-function-parsing.js: Copied from JSTests/microbenchmarks/nested-function-parsing.js. - * slowMicrobenchmarks/rest-parameter-allocation-elimination.js: Copied from JSTests/microbenchmarks/rest-parameter-allocation-elimination.js. - * slowMicrobenchmarks/spread-large-array.js: Copied from JSTests/microbenchmarks/spread-large-array.js. - * slowMicrobenchmarks/string-add-constant-folding.js: Copied from JSTests/microbenchmarks/string-add-constant-folding.js. - * slowMicrobenchmarks/to-lower-case.js: Copied from JSTests/microbenchmarks/to-lower-case.js. - * slowMicrobenchmarks/undefined-property-access.js: Copied from JSTests/microbenchmarks/undefined-property-access.js. - -2018-01-23 Robin Morisset - - Update the argument count in DFGByteCodeParser::handleRecursiveCall - https://bugs.webkit.org/show_bug.cgi?id=181739 - - - Reviewed by Saam Barati. - - * stress/recursive-tail-call-with-different-argument-count.js: Added. - (foo): - (bar): - -2018-01-22 Michael Saboff - - DFG abstract interpreter needs to properly model effects of some Math ops - https://bugs.webkit.org/show_bug.cgi?id=181886 - - Reviewed by Saam Barati. - - New regression test. - - * stress/arith-nodes-abstract-interpreter-untypeduse.js: Added. - (test): - -2018-01-20 Caio Lima - - [JSC] NumberPrototype::extractRadixFromArgs incorrectly cast double to int32_t - https://bugs.webkit.org/show_bug.cgi?id=181182 - - Reviewed by Darin Adler. - - * stress/big-int-prototype-to-string-cast-overflow.js: Added. - * stress/big-int-prototype-to-string-exception.js: Added. - * stress/big-int-prototype-to-string-wrong-values.js: Added. - * stress/number-prototype-to-string-cast-overflow.js: Added. - * stress/number-prototype-to-string-exception.js: Added. - * stress/number-prototype-to-string-wrong-values.js: Added. - -2018-01-19 Ryan Haddad - - Disable Atomics when SharedArrayBuffer isn’t enabled - https://bugs.webkit.org/show_bug.cgi?id=181572 - - Unreviewed test gardening. - - * test262.yaml: Skip tests that fail after this change. - -2018-01-19 Saam Barati - - Kill ArithNegate's ArithProfile assert inside BytecodeParser - https://bugs.webkit.org/show_bug.cgi?id=181877 - - - Reviewed by Mark Lam. - - * stress/arith-profile-for-negate-can-see-non-number-due-to-dfg-osr-exit-profiling.js: Added. - (runNearStackLimit): - (f1): - (f2): - (f3): - (i.catch): - (i.try.runNearStackLimit): - (catch): - -2018-01-19 Saam Barati - - Spread's effects are modeled incorrectly both in AI and in Clobberize - https://bugs.webkit.org/show_bug.cgi?id=181867 - - - Reviewed by Michael Saboff. - - * stress/ai-needs-to-model-spreads-effects.js: Added. - (try.p.Symbol.iterator): - (try.go): - (catch): - * stress/clobberize-needs-to-model-spread-effects.js: Added. - (assert): - (foo): - (a.Symbol.iterator): - -2018-01-19 Yusuke Suzuki - - Unreviewed, reduce count of iteration to fix timing out debug JSC test - https://bugs.webkit.org/show_bug.cgi?id=181535 - - * stress/inserted-recovery-with-set-last-index.js: - -2018-01-17 Yusuke Suzuki - - [DFG][FTL] Introduce PhantomNewRegexp and RegExpExecNonGlobalOrSticky - https://bugs.webkit.org/show_bug.cgi?id=181535 - - Reviewed by Saam Barati. - - * stress/inserted-recovery-with-set-last-index.js: Added. - (shouldBe): - (foo): - * stress/materialize-regexp-at-osr-exit.js: Added. - (shouldBe): - (test): - * stress/materialize-regexp-cyclic-regexp-at-osr-exit.js: Added. - (shouldBe): - (test): - * stress/materialize-regexp-cyclic-regexp.js: Added. - (shouldBe): - (test): - (i.switch): - * stress/materialize-regexp-cyclic.js: Added. - (shouldBe): - (test): - (i.switch): - * stress/materialize-regexp-referenced-from-phantom-regexp-cyclic.js: Added. - (bar): - (foo): - (test): - * stress/materialize-regexp-referenced-from-phantom-regexp.js: Added. - (bar): - (foo): - (test): - * stress/materialize-regexp.js: Added. - (shouldBe): - (test): - * stress/phantom-regexp-regexp-exec.js: Added. - (shouldBe): - (test): - * stress/phantom-regexp-string-match.js: Added. - (shouldBe): - (test): - * stress/regexp-last-index-sinking.js: Added. - (shouldBe): - (test): - -2018-01-17 Saam Barati - - Disable Atomics when SharedArrayBuffer isn’t enabled - https://bugs.webkit.org/show_bug.cgi?id=181572 - - - Reviewed by Michael Saboff. - - * stress/isLockFree.js: - -2018-01-17 Saam Barati - - DFG::Node::convertToConstant needs to clear the varargs flags - https://bugs.webkit.org/show_bug.cgi?id=181697 - - - Reviewed by Yusuke Suzuki. - - * stress/dfg-node-convert-to-constant-must-clear-varargs-flags.js: Added. - (doIndexOf): - (bar): - (i.bar): - -2018-01-16 Ryan Haddad - - Unreviewed, rolling out r226937. - - Tests added with this change are failing due to a missing - exception check. - - Reverted changeset: - - "[JSC] NumberPrototype::extractRadixFromArgs incorrectly cast - double to int32_t" - https://bugs.webkit.org/show_bug.cgi?id=181182 - https://trac.webkit.org/changeset/226937 - -2018-01-13 Caio Lima - - [JSC] NumberPrototype::extractRadixFromArgs incorrectly cast double to int32_t - https://bugs.webkit.org/show_bug.cgi?id=181182 - - Reviewed by Darin Adler. - - * bigIntTests.yaml: - * stress/big-int-constructor.js: - * stress/big-int-prototype-to-string-cast-overflow.js: Added. - (assert): - (assertThrowRangeError): - * stress/number-prototype-to-string-cast-overflow.js: Added. - (assert): - (assertThrowRangeError): - -2018-01-12 Saam Barati - - CheckStructure can be incorrectly subsumed by CheckStructureOrEmpty - https://bugs.webkit.org/show_bug.cgi?id=181177 - - - Reviewed by Yusuke Suzuki. - - * stress/check-structure-ir-ensures-empty-does-not-flow-through.js: Added. - (runNearStackLimit.t): - (runNearStackLimit): - (test.f): - (test): - -2018-01-12 Saam Barati - - Each variant of a polymorphic inlined call should be exitOK at the top of the block - https://bugs.webkit.org/show_bug.cgi?id=181562 - - - Reviewed by Yusuke Suzuki. - - * stress/each-block-at-top-of-polymorphic-call-inlining-should-be-exitOK.js: Added. - (f): - (foo): - -2018-01-11 Saam Barati - - When inserting Unreachable in byte code parser we need to flush all the right things - https://bugs.webkit.org/show_bug.cgi?id=181509 - - - Reviewed by Mark Lam. - - * stress/proper-flushing-when-we-insert-unreachable-after-force-exit-in-bytecode-parser.js: Added. - -2018-01-11 Saam Barati - - JITMathIC code in the FTL is wrong when code gets duplicated - https://bugs.webkit.org/show_bug.cgi?id=181525 - - - Reviewed by Michael Saboff and Keith Miller. - - * stress/allow-math-ic-b3-code-duplication.js: Added. - -2018-01-11 Saam Barati - - Our for-in caching is wrong when we add indexed properties on things in the prototype chain - https://bugs.webkit.org/show_bug.cgi?id=181508 - - Reviewed by Yusuke Suzuki. - - * stress/for-in-prototype-with-indexed-properties-should-prevent-caching.js: Added. - (assert): - (test1.foo): - (test1): - (test2.foo): - (test2): - -2018-01-09 Mark Lam - - ASSERTION FAILED: pair.second->m_type & PropertyNode::Getter - https://bugs.webkit.org/show_bug.cgi?id=181388 - - - Reviewed by Saam Barati. - - * stress/regress-181388.js: Added. - -2018-01-08 JF Bastien - - WebAssembly: mask indexed accesses to Table - https://bugs.webkit.org/show_bug.cgi?id=181412 - - - Reviewed by Saam Barati. - - Update error messages. - - * wasm/js-api/table.js: - (assert.throws.WebAssembly.Table.prototype.grow): - -2018-01-08 Ryan Haddad - - Disable SharedArrayBuffer tests missed in r226386. - https://bugs.webkit.org/show_bug.cgi?id=181266 - - Unreviewed test gardening. - - * test262.yaml: - -2018-01-06 Yusuke Suzuki - - Object.getOwnPropertyNames includes "arguments" and "caller" for bound functions - https://bugs.webkit.org/show_bug.cgi?id=181321 - - Reviewed by Saam Barati. - - * stress/bound-function-does-not-have-caller-and-arguments.js: Added. - (shouldBe): - (testFunction): - * test262.yaml: - -2018-01-05 Ryan Haddad - - Unreviewed, attempt to fix test262 after r226386. - - * test262.yaml: - -2018-01-04 Yusuke Suzuki - - [DFG] Define defs for MapSet/SetAdd to participate in CSE - https://bugs.webkit.org/show_bug.cgi?id=179911 - - Reviewed by Saam Barati. - - In addition to these tests, map-set-cse.js and set-add-cse.js work. - - * stress/map-set-change-get.js: Added. - (shouldBe): - (test): - * stress/map-set-create-bucket.js: Added. - (shouldBe): - (test): - * stress/set-add-create-bucket.js: Added. - (shouldBe): - -2018-01-03 Michael Saboff - - Disable SharedArrayBuffers from Web API - https://bugs.webkit.org/show_bug.cgi?id=181266 - - Reviewed by Saam Barati. - - Disabled SharedArrayBuffer tests. - - * stress/SharedArrayBuffer-opt.js: - * stress/SharedArrayBuffer.js: - * stress/array-buffer-byte-length.js: - * stress/atomics-add-uint32.js: - * stress/atomics-known-int-use.js: - * stress/atomics-neg-zero.js: - * stress/atomics-store-return.js: - * stress/lars-sab-workers.js: - * stress/regress-159779-1.js: - * stress/regress-159779-2.js: - * stress/regress-170473.js: - * test262.yaml: - -2018-01-03 Caio Lima - - [ESNext][BigInt] Failing test stress/big-int-constructor-oom.js into MIPS - https://bugs.webkit.org/show_bug.cgi?id=181258 - - Reviewed by Antonio Gomes. - - * stress/big-int-constructor-gc.js: - * stress/big-int-constructor-oom.js: - -2018-01-03 Robin Morisset - - Inlining of a function that ends in op_unreachable crashes - https://bugs.webkit.org/show_bug.cgi?id=181027 - - Reviewed by Filip Pizlo. - - * stress/inlining-unreachable.js: Added. - (bar): - (baz): - (i.catch): - -2018-01-02 Saam Barati - - Incorrect assertion inside AccessCase - https://bugs.webkit.org/show_bug.cgi?id=181200 - - - Reviewed by Yusuke Suzuki. - - * stress/setter-same-base-and-rhs-invalid-assertion-inside-access-case.js: Added. - (ctor): - (theFunc): - (run): - -2018-01-02 Caio Lima - - [ESNext][BigInt] Implement BigIntConstructor and BigIntPrototype - https://bugs.webkit.org/show_bug.cgi?id=175359 - - Reviewed by Yusuke Suzuki. - - * bigIntTests.yaml: - * stress/big-int-as-key.js: Added. - * stress/big-int-constructor-gc.js: Added. - * stress/big-int-constructor-oom.js: Added. - * stress/big-int-constructor-properties.js: Added. - * stress/big-int-constructor-prototype-prop-descriptor.js: Added. - * stress/big-int-constructor-prototype.js: Added. - * stress/big-int-constructor.js: Added. - * stress/big-int-function-apply.js: - * stress/big-int-length.js: Added. - * stress/big-int-prop-descriptor.js: Added. - * stress/big-int-proto-constructor.js: Added. - * stress/big-int-proto-name.js: Added. - * stress/big-int-prototype-properties.js: Added. - * stress/big-int-prototype-proto.js: Added. - * stress/big-int-prototype-value-of.js: Added. - * stress/big-int-prototype-symbol-to-string-tag.js: Added. - * stress/big-int-prototype-to-string-apply.js: Added. - * stress/big-int-to-object.js: Added. - * stress/big-int-to-string.js: Added. - -2017-12-28 Saam Barati - - Assertion used to determine if something is an async generator is wrong - https://bugs.webkit.org/show_bug.cgi?id=181168 - - - Reviewed by Yusuke Suzuki. - - * stress/async-generator-assertion.js: Added. - -2017-12-21 Guillaume Emont - - Skip stress/splay-flash-access tests on memory limited platforms - https://bugs.webkit.org/show_bug.cgi?id=181086 - - Reviewed by Carlos Alberto Lopez Perez. - - These tests use about 185M of memory, and occasionally get OOM-killed - on memory limited platforms. - - * stress/splay-flash-access-1ms.js: - * stress/splay-flash-access.js: - -2017-12-21 Guillaume Emont - - Skip slow jsc tests on embedded platforms - https://bugs.webkit.org/show_bug.cgi?id=180937 - - Reviewed by Carlos Alberto Lopez Perez. - - The tests typeProfiler/deltablue-for-of.js and - typeProfiler/getter-richards.js take a very long time in the - ftl-no-cjit-type-profiler-force-poly-proto on embedded platform, and - thus always timeout. They should be skipped on these platforms. - - * typeProfiler/deltablue-for-of.js: Skip on arm*/mips. - * typeProfiler/getter-richards.js: Skip on arm*/mips. - -2017-12-19 Yusuke Suzuki - - [JSC] Do not check isValid() in op_new_regexp - https://bugs.webkit.org/show_bug.cgi?id=180970 - - Reviewed by Saam Barati. - - * stress/regexp-syntax-error-invalid-flags.js: Added. - (shouldThrow): - -2017-12-18 Guillaume Emont - - Skip stress/call-apply-exponential-bytecode-size.js unless x86-64 or arm64 - https://bugs.webkit.org/show_bug.cgi?id=180712 - - Reviewed by Michael Catanzaro. - - stress/call-apply-exponential-bytecode-size.js crashes if the - ExecutableAllocator's fixedExecutableMemoryPoolSize is less than 64 - MB. Currently it is 64 MB or more only on x86-64 and arm64, so we - should skip the test on other platforms. - - * stress/call-apply-exponential-bytecode-size.js: - -2017-12-17 Yusuke Suzuki - - [FTL] NewArrayBuffer should be sinked if it is only used for spreading - https://bugs.webkit.org/show_bug.cgi?id=179762 - - Reviewed by Saam Barati. - - * stress/call-varargs-double-new-array-buffer.js: Added. - (assert): - (bar): - (foo): - * stress/call-varargs-spread-new-array-buffer.js: Added. - (assert): - (bar): - (foo): - * stress/call-varargs-spread-new-array-buffer2.js: Added. - (assert): - (bar): - (foo): - * stress/forward-varargs-double-new-array-buffer.js: Added. - (assert): - (test.baz): - (test.bar): - (test.foo): - (test): - * stress/new-array-buffer-sinking-osrexit.js: Added. - (target): - (test): - * stress/new-array-with-spread-double-new-array-buffer.js: Added. - (shouldBe): - (test): - * stress/new-array-with-spread-with-phantom-new-array-buffer.js: Added. - (shouldBe): - (target): - (test): - * stress/phantom-new-array-buffer-forward-varargs.js: Added. - (assert): - (test1.bar): - (test1.foo): - (test1): - (test2.bar): - (test2.foo): - (test3.baz): - (test3.bar): - (test3.foo): - (test4.baz): - (test4.bar): - (test4.foo): - * stress/phantom-new-array-buffer-forward-varargs2.js: Added. - (assert): - (test.baz): - (test.bar): - (test.foo): - (test): - * stress/phantom-new-array-buffer-osr-exit.js: Added. - (assert): - (baz): - (bar): - (effects): - (foo): - -2017-12-14 Saam Barati - - The CleanUp after LICM is erroneously removing a Check - https://bugs.webkit.org/show_bug.cgi?id=180852 - - - Reviewed by Filip Pizlo. - - * stress/dont-run-cleanup-after-licm.js: Added. - -2017-12-14 Michael Saboff - - REGRESSION (r225695): Repro crash on yahoo login page - https://bugs.webkit.org/show_bug.cgi?id=180761 - - Reviewed by JF Bastien. - - New regression test. - - * stress/regress-180761.js: Added. - -2017-12-13 Keith Miller - - JSObjects should have a mask for loading indexed properties - https://bugs.webkit.org/show_bug.cgi?id=180768 - - Reviewed by Mark Lam. - - * stress/int16-put-by-val-in-and-out-of-bounds.js: - (test): - -2017-12-13 Saam Barati - - Arrow functions need their own structure because they have different properties than sloppy functions - https://bugs.webkit.org/show_bug.cgi?id=180779 - - - Reviewed by Mark Lam. - - * stress/arrow-function-needs-its-own-structure.js: Added. - (assert): - (readPrototype): - (noInline.let.f1): - (noInline): - -2017-12-13 Saam Barati - - Fix how JSFunction handles "caller" and "arguments" for functions that don't have those properties - https://bugs.webkit.org/show_bug.cgi?id=163579 - - - Reviewed by Mark Lam. - - * stress/caller-and-arguments-properties-for-functions-that-dont-have-them.js: Added. - (assert): - (test1): - (i.test1): - (i.test1.C): - (i.test1.async.foo): - (i.test1.foo): - (test2): - -2017-12-13 Saam Barati - - TypeCheckHoistingPhase needs to emit a CheckStructureOrEmpty if it's doing it for |this| - https://bugs.webkit.org/show_bug.cgi?id=180734 - - - Reviewed by Yusuke Suzuki. - - * stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js: Added. - (__isPropertyOfType): - (__getProperties): - (__getObjects): - (__getRandomObject): - (theClass.): - (theClass): - (childClass): - (counter.catch): - -2017-12-12 Saam Barati - - We need to model effects of Spread(@PhantomCreateRest) in Clobberize/PreciseLocalClobberize - https://bugs.webkit.org/show_bug.cgi?id=180725 - - - Reviewed by Michael Saboff. - - * stress/model-effects-properly-of-spread-over-phantom-create-rest.js: Added. - (f1): - (f2): - (let.o2.valueOf): - -2017-12-12 Yusuke Suzuki - - [JSC] Implement optimized WeakMap and WeakSet - https://bugs.webkit.org/show_bug.cgi?id=179929 - - Reviewed by Saam Barati. - - * microbenchmarks/weak-map-key.js: - * microbenchmarks/weak-set-key.js: Copied from JSTests/microbenchmarks/weak-map-key.js. - (assert): - (objectKey): - (let.start.Date.now): - * stress/basic-weakmap.js: Added. - (shouldBe): - (test): - * stress/basic-weakset.js: Added. - (shouldBe): - (test.set new): - * stress/weakmap-cse-set-break.js: Added. - (shouldBe): - (test): - * stress/weakmap-cse.js: Added. - (shouldBe): - (test): - * stress/weakmap-gc.js: Added. - (test): - * stress/weakset-cse-add-break.js: Added. - (shouldBe): - (test.set new): - * stress/weakset-cse.js: Added. - (shouldBe): - (test.set new): - * stress/weakset-gc.js: Added. - (test.set add): - (test.set new): - (test): - -2017-12-12 Saam Barati - - ConstantFoldingPhase rule for GetMyArgumentByVal must check for negative indices - https://bugs.webkit.org/show_bug.cgi?id=180723 - - - Reviewed by JF Bastien. - - * stress/get-my-argument-by-val-constant-folding.js: Added. - (test): - (catch): - -2017-12-12 Caio Lima - - [ESNext][BigInt] Implement BigInt literals and JSBigInt - https://bugs.webkit.org/show_bug.cgi?id=179000 - - Reviewed by Darin Adler and Yusuke Suzuki. - - * bigIntTests.yaml: Added. - * stress/big-int-literal-line-terminator.js: Added. - * stress/big-int-literals.js: Added. - * stress/big-int-operations-error.js: Added. - * stress/big-int-type-of.js: Added. - * stress/big-int-white-space-trailing-leading.js: Added. - * stress/big-int-function-apply.js: Added. - -2017-12-11 Saam Barati - - We need to disableCaching() in ErrorInstance when we materialize properties - https://bugs.webkit.org/show_bug.cgi?id=180343 - - - Reviewed by Mark Lam. - - * stress/disable-caching-when-lazy-materializing-error-property-on-put.js: Added. - (assert): - (makeError): - (storeToStack): - (storeToStackAlreadyMaterialized): - -2017-12-05 JF Bastien - - WebAssembly: don't eagerly checksum - https://bugs.webkit.org/show_bug.cgi?id=180441 - - - Reviewed by Saam Barati. - - Checksum is now disabled, so tests only have as the module - name. - - * wasm/function-tests/nameSection.js: - * wasm/function-tests/stack-overflow.js: - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.assertOverflows): - (assertOverflows.assertThrows): - (assertOverflows): - * wasm/function-tests/stack-trace.js: - -2017-12-04 JF Bastien - - Proxy all functions, except the $ objects - https://bugs.webkit.org/show_bug.cgi?id=180375 - - Reviewed by Saam Barati. - - It looks like this test may have broken some executions because I - call some internal objects. Explicitly ignore objects whose name - starts with "$" because it's a bad idea anyways. - - * stress/proxy-all-the-parameters.js: - (generateObjects): - (get throw): - -2017-12-04 Saam Barati - - We need to leave room on the top of the stack for the FTL TailCall slow path so it doesn't overwrite things we want to retrieve when doing a stack walk when throwing an exception - https://bugs.webkit.org/show_bug.cgi?id=180366 - - - Reviewed by Michael Saboff. - - * stress/ftl-tail-call-throw-exception-from-slow-path-recover-stack-values.js: Added. - (theParent): - (test1.base.getParentStaticValue): - (test1.base): - (test1.__v_24888.prototype.set prop): - (test1.__v_24888): - (test2.base.getParentStaticValue): - (test2.base): - (test2.__v_24888.prototype.set prop): - (test2.__v_24888): - (test2): - -2017-12-01 JF Bastien - - Try proxying all function arguments - https://bugs.webkit.org/show_bug.cgi?id=180306 - - Reviewed by Saam Barati. - - * stress/proxy-all-the-parameters.js: Added. - (isPropertyOfType): - (getProperties): - (generateObjects): - (getObjects): - (getFunctions): - (get throw): - (let.o.of.getObjects.let.f.of.getFunctions.catch): - -2017-12-01 JF Bastien - - JavaScriptCore: missing exception checks in Math functions that take more than one argument - https://bugs.webkit.org/show_bug.cgi?id=180297 - - - Reviewed by Mark Lam. - - * stress/math-exceptions.js: Added. - (get try): - (catch): - -2017-12-01 JF Bastien - - JavaScriptCore: add test for weird class static getters - https://bugs.webkit.org/show_bug.cgi?id=180281 - - - Reviewed by Mark Lam. - - I fixed a bug for it in r224927 and didn't add a test. Do so. - - * stress/class-static-get-weird.js: Added. - (c.prototype.get name): - (c): - (c.prototype.get arguments): - (c.prototype.get caller): - (c.prototype.get length): - -2017-12-01 Saam Barati - - Having a bad time needs to handle ArrayClass indexing type as well - https://bugs.webkit.org/show_bug.cgi?id=180274 - - - Reviewed by Keith Miller and Mark Lam. - - * stress/array-prototype-slow-put-having-a-bad-time-2.js: Added. - (assert): - * stress/array-prototype-slow-put-having-a-bad-time.js: Added. - (assert): - -2017-12-01 JF Bastien - - WebAssembly: restore cached stack limit after out-call - https://bugs.webkit.org/show_bug.cgi?id=179106 - - - Reviewed by Saam Barati. - - * wasm/function-tests/double-instance.js: Added. - (const.imp.boom): - (const.imp.get callAnother): - -2017-11-30 JF Bastien - - WebAssembly: improve stack trace - https://bugs.webkit.org/show_bug.cgi?id=179343 - - Reviewed by Saam Barati. - - Update the tests to follow the new format. Notably, SHA1 module - hash is now included in traces, and stubs are properly identified. - - * wasm/assert.js: Add an assertion which matches regular expressions. - * wasm/function-tests/nameSection.js: - * wasm/function-tests/stack-overflow.js: - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.assertOverflows): - (assertOverflows.assertThrows.wasm.1): - (assertOverflows.assertThrows.wasm.0): - (assertOverflows.assertThrows): - (assertOverflows): - * wasm/function-tests/stack-trace.js: - (import.Builder.from.string_appeared_here.assert): Deleted. - * wasm/function-tests/trap-after-cross-instance-call.js: - (wasmFrameCountFromError): - * wasm/function-tests/trap-load-2.js: - (wasmFrameCountFromError): - * wasm/function-tests/trap-load.js: - (wasmFrameCountFromError): - -2017-11-30 Mark Lam - - jsc shell's flashHeapAccess() should not do JS work after releasing access to the heap. - https://bugs.webkit.org/show_bug.cgi?id=180219 - - - Reviewed by Filip Pizlo. - - * stress/regress-180219.js: Added. - -2017-11-30 Yusuke Suzuki - - [DFG][FTL] operationHasIndexedProperty does not consider negative int32_t - https://bugs.webkit.org/show_bug.cgi?id=180190 - - Reviewed by Mark Lam. - - * stress/operation-in-may-have-negative-int32-array-storage.js: Added. - (shouldBe): - (test1): - * stress/operation-in-may-have-negative-int32-contiguous-array.js: Added. - (shouldBe): - (test1): - * stress/operation-in-may-have-negative-int32-double-array.js: Added. - (shouldBe): - (test1): - * stress/operation-in-may-have-negative-int32-generic-array.js: Added. - (shouldBe): - (test1): - * stress/operation-in-may-have-negative-int32-int32-array.js: Added. - (shouldBe): - (test1): - * stress/operation-in-may-have-negative-int32.js: Added. - (shouldBe): - (test2): - * stress/operation-in-negative-int32-cast.js: Added. - (shouldBe): - (test1): - -2017-11-28 JF Bastien - - Strict and sloppy functions shouldn't share structure - https://bugs.webkit.org/show_bug.cgi?id=180103 - - - Reviewed by Saam Barati. - - * stress/get-by-id-strict-arguments.js: Added. Used to not throw - because the IC was wrong. - (foo): - (bar): - (baz): - (catch): - * stress/get-by-id-strict-callee.js: Added. Not strictly necessary - in this patch, but may as well test odd strict mode corner cases. - (bar): - (baz): - (catch): - * stress/get-by-id-strict-caller.js: Added. Also IC'd wrong. - (foo): - (bar): - (baz): - (catch): - * stress/get-by-id-strict-nested-arguments-2.js: Added. Same as - next file, but with invalidation of the FunctionExecutable's - singletonFunction() to hit SpeculativeJIT::compileNewFunction's - slower path. - (foo): - (bar.const.x): - (bar.const.y): - (bar): - (catch): - * stress/get-by-id-strict-nested-arguments.js: Added. Make sure - strict nesting works correctly. - (foo): - (bar.baz): - (bar): - * stress/strict-function-structure.js: Added. The test used to - assert in objectProtoFuncHasOwnProperty. - (foo): - (bar): - (baz): - * stress/strict-nested-function-structure.js: Added. Nesting. - (foo): - (bar): - (baz.boo): - (baz): - -2017-11-29 Robin Morisset - - The recursive tail call optimisation is wrong on closures - https://bugs.webkit.org/show_bug.cgi?id=179835 - - Reviewed by Saam Barati. - - * stress/closure-recursive-tail-call.js: Added. - (makeClosure): - -2017-11-27 JF Bastien - - JavaScript rest function parameter with negative index leads to bad DFG abstract interpretation - https://bugs.webkit.org/show_bug.cgi?id=180051 - - - Reviewed by Saam Barati. - - * stress/rest-parameter-negative.js: Added. - (__f_5484): - (catch): - (__f_5485): - (__v_22598.catch): - -2017-11-27 Saam Barati - - Spread can escape when CreateRest does not - https://bugs.webkit.org/show_bug.cgi?id=180057 - - - Reviewed by JF Bastien. - - * stress/spread-escapes-but-create-rest-does-not.js: Added. - (assert): - (getProperties): - (theFunc): - (let.obj.valueOf): - -2017-11-21 Yusuke Suzuki - - [DFG] Add NormalizeMapKey DFG IR - https://bugs.webkit.org/show_bug.cgi?id=179912 - - Reviewed by Saam Barati. - - * stress/map-untyped-normalize-cse.js: Added. - (shouldBe): - (test): - * stress/map-untyped-normalize.js: Added. - (shouldBe): - (test): - * stress/set-untyped-normalize-cse.js: Added. - (shouldBe): - (set return.set has.set has): - * stress/set-untyped-normalize.js: Added. - (shouldBe): - (set return.set has): - -2017-11-26 Yusuke Suzuki - - [FTL] Support DeleteById and DeleteByVal - https://bugs.webkit.org/show_bug.cgi?id=180022 - - Reviewed by Saam Barati. - - * stress/delete-by-id.js: Added. - (shouldBe): - (test1): - (test2): - * stress/delete-by-val-ftl.js: Added. - (shouldBe): - (test1): - (test2): - -2017-11-26 Yusuke Suzuki - - [DFG] Introduce {Set,Map,WeakMap}Fields - https://bugs.webkit.org/show_bug.cgi?id=179925 - - Reviewed by Saam Barati. - - * stress/map-set-clobber-map-get.js: Added. - (shouldBe): - (test): - * stress/map-set-does-not-clobber-set-has.js: Added. - (shouldBe): - * stress/map-set-does-not-clobber-weak-map-get.js: Added. - (shouldBe): - (test): - * stress/set-add-clobber-set-has.js: Added. - (shouldBe): - * stress/set-add-does-not-clobber-map-get.js: Added. - (shouldBe): - -2017-11-24 Mark Lam - - Move unsafe jsc shell test functions to the $vm object. - https://bugs.webkit.org/show_bug.cgi?id=179980 - - Reviewed by Yusuke Suzuki. - - * controlFlowProfiler/driver/driver.js: - * controlFlowProfiler/execution-count.js: - * controlFlowProfiler/if-statement.js: - * controlFlowProfiler/loop-statements.js: - * controlFlowProfiler/switch-statements.js: - * controlFlowProfiler/test-jit.js: - * exceptionFuzz/3d-cube.js: - * exceptionFuzz/date-format-xparb.js: - * exceptionFuzz/earley-boyer.js: - * heapProfiler/basic-edges.js: - * heapProfiler/property-edge-types.js: - * microbenchmarks/try-get-by-id-basic.js: - * microbenchmarks/try-get-by-id-polymorphic.js: - * modules/namespace-object-try-get.js: - * stress/argument-count-bytecode.js: - * stress/argument-intrinsic-basic.js: - * stress/argument-intrinsic-inlining-use-caller-arg.js: - * stress/argument-intrinsic-inlining-with-result-escape.js: - * stress/argument-intrinsic-inlining-with-vararg-with-enough-arguments.js: - * stress/argument-intrinsic-inlining-with-vararg.js: - * stress/argument-intrinsic-nested-inlining.js: - * stress/argument-intrinsic-not-convert-to-get-argument.js: - * stress/argument-intrinsic-with-stack-write.js: - * stress/arity-mismatch-get-argument.js: - * stress/array-message-passing.js: - * stress/array-push-with-force-exit.js: - * stress/check-dom-with-signature.js: - * stress/check-sub-class.js: - * stress/compare-eq-incomplete-profile.js: - * stress/custom-get-set-inline-caching-one-level-up-proto-chain.js: - * stress/do-eval-virtual-call-correctly.js: - * stress/dom-jit-with-poly-proto.js: - * stress/domjit-exception-ic.js: - * stress/domjit-exception.js: - * stress/domjit-getter-complex-with-incorrect-object.js: - * stress/domjit-getter-complex.js: - * stress/domjit-getter-poly.js: - * stress/domjit-getter-proto.js: - * stress/domjit-getter-super-poly.js: - * stress/domjit-getter-try-catch-getter-as-get-by-id-register-restoration.js: - * stress/domjit-getter-type-check.js: - * stress/domjit-getter.js: - * stress/exit-during-inlined-arity-fixup-recover-proper-frame.js: - * stress/for-in-proxy-target-changed-structure.js: - * stress/for-in-proxy.js: - * stress/generational-opaque-roots.js: - * stress/global-const-redeclaration-setting-2.js: - * stress/global-const-redeclaration-setting-3.js: - * stress/global-const-redeclaration-setting-4.js: - * stress/global-const-redeclaration-setting-5.js: - * stress/global-const-redeclaration-setting.js: - * stress/import-basic.js: - * stress/import-from-eval.js: - * stress/import-reject-with-exception.js: - * stress/import-syntax.js: - * stress/impure-get-own-property-slot-inline-cache.js: - * stress/is-constructor.js: - * stress/istypedarrayview-intrinsic.js: - * stress/jsc-setImpureGetterDelegate-on-bad-type.js: - * stress/jsc-test-functions-should-be-more-robust.js: - * stress/object-toString-with-proxy.js: - * stress/poly-proto-custom-value-and-accessor.js: - * stress/proxy-inline-cache.js: - * stress/re-execute-error-module.js: - * stress/regress-150532.js: - * stress/regress-156992.js: - * stress/regress-179619.js: - * stress/resources/shadow-chicken-support.js: - * stress/runtime-array.js: - * stress/sampling-profiler-microtasks.js: - * stress/shadow-chicken-enabled.js: - * stress/spread-correct-global-object-on-exception.js: - * stress/super-get-by-id.js: - * stress/tailCallForwardArguments.js: - * stress/to-object-intrinsic-boolean-edge.js: - * stress/to-object-intrinsic-null-or-undefined-edge.js: - * stress/to-object-intrinsic-number-edge.js: - * stress/to-object-intrinsic-object-edge.js: - * stress/to-object-intrinsic-string-edge.js: - * stress/to-object-intrinsic-symbol-edge.js: - * stress/to-object-intrinsic.js: - * stress/try-catch-custom-getter-as-get-by-id.js: - * stress/try-get-by-id-poly-proto.js: - * stress/try-get-by-id-should-spill-registers-dfg.js: - * stress/try-get-by-id.js: - * typeProfiler/arrow-functions.js: - * typeProfiler/basic.js: - * typeProfiler/captured.js: - * typeProfiler/classes.js: - * typeProfiler/dfg-jit-optimizations.js: - * typeProfiler/dictionary-mode.js: - * typeProfiler/es6-block-scoping.js: - * typeProfiler/es6-classes.js: - * typeProfiler/inheritance.js: - * typeProfiler/int52-dfg.js: - * typeProfiler/loop.js: - * typeProfiler/optional-fields.js: - * typeProfiler/overflow.js: - * typeProfiler/return.js: - * typeProfiler/symbol.js: - * typeProfiler/weird-prototype-chain.js: - -2017-11-21 Yusuke Suzuki - - [DFG][FTL] Support MapSet / SetAdd intrinsics - https://bugs.webkit.org/show_bug.cgi?id=179858 - - Reviewed by Saam Barati. - - * microbenchmarks/map-has-and-set.js: Added. - (test): - * stress/map-set-check-failure.js: Added. - (shouldBe): - (shouldThrow): - (target): - * stress/map-set-cse.js: Added. - (shouldBe): - (test): - * stress/set-add-check-failure.js: Added. - (shouldBe): - (shouldThrow): - (set shouldThrow): - * stress/set-add-cse.js: Added. - (shouldBe): - -2017-11-21 Yusuke Suzuki - - [JSC] Allow poly proto for intrinsic getters - https://bugs.webkit.org/show_bug.cgi?id=179550 - - Reviewed by Saam Barati. - - This change is also tested by existing tests. - - 1. stress/intrinsic-getter-with-poly-proto.js - 2. stress/poly-proto-intrinsic-getter-correctness.js - - * stress/intrinsic-getter-with-poly-proto-getter-change.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/intrinsic-getter-with-poly-proto-proto-change.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - -2017-11-20 Guillaume Emont - - Skip stress/unshiftCountSlowCase-correct-postCapacity.js on embedded Linux - https://bugs.webkit.org/show_bug.cgi?id=179744 - - Reviewed by Michael Catanzaro. - - This test uses too much memory for our buildbots on these platforms - and gets OOM-killed. - - * stress/unshiftCountSlowCase-correct-postCapacity.js: - Skip if $memoryLimited and linux. - -2017-11-17 JF Bastien - - WebAssembly JS API: throw when a promise can't be created - https://bugs.webkit.org/show_bug.cgi?id=179826 - - - Reviewed by Mark Lam. - - Test WebAssembly.{compile,instantiate} where promise creation - fails because of a stack overflow. - - * wasm/js-api/promise-stack-overflow.js: Added. - (const.runNearStackLimit.f.const.t): - (async.testCompile): - (async.testInstantiate): - -2017-11-16 Yusuke Suzuki - - Unreviewed, mark regress-178385.js as memory exhausting - - * stress/regress-178385.js: - -2017-11-16 Ryan Haddad - - Mark test262/test/language/statements/class/definition/fn-name-static-precedence.js as passing after r224927. - - Unreviewed test gardening. - - * test262.yaml: - -2017-11-16 Robin Morisset - - REGRESSION (r224592): oss-fuzz: jsc: Null-dereference READ in JSC::JSCell::isObject (4216) - https://bugs.webkit.org/show_bug.cgi?id=179763 - - - Reviewed by Keith Miller. - - Just adding a slightly cleaned-up version of the original fuzzer-found test. - - * stress/tdz-this-in-try-catch.js: Added. - (__v_6388): - (__v_6392): - -2017-11-14 Yusuke Suzuki - - [DFG][FTL] Support Array::DirectArguments with OutOfBounds - https://bugs.webkit.org/show_bug.cgi?id=179594 - - Reviewed by Saam Barati. - - * stress/direct-arguments-in-bounds-to-out-of-bounds.js: Added. - (shouldBe): - (args): - * stress/direct-arguments-out-of-bounds-watchpoint.js: Added. - (shouldBe): - (args): - -2017-11-14 Saam Barati - - We need to set topCallFrame when calling Wasm::Memory::grow from the JIT - https://bugs.webkit.org/show_bug.cgi?id=179639 - - - Reviewed by JF Bastien. - - * wasm/function-tests/grow-memory-cause-gc.js: Added. - (escape): - (i.func): - -2017-11-13 Mark Lam - - Add more overflow check book-keeping for MarkedArgumentBuffer. - https://bugs.webkit.org/show_bug.cgi?id=179634 - - - Reviewed by Saam Barati. - - * stress/regress-179634.js: Added. - -2017-11-13 Mark Lam - - Make the jsc shell loadGetterFromGetterSetter() function more robust. - https://bugs.webkit.org/show_bug.cgi?id=179619 - - - Reviewed by Saam Barati. - - * stress/regress-179619.js: Added. - -2017-11-12 Mark Lam - - We should ensure that operationStrCat2 and operationStrCat3 are never passed Symbols as arguments. - https://bugs.webkit.org/show_bug.cgi?id=179562 - - - Reviewed by Saam Barati. - - * regress-179562.js: Added. - -2017-11-08 Saam Barati - - A JSFunction's ObjectAllocationProfile should watch the poly prototype watchpoint so it can clear its object allocation profile - https://bugs.webkit.org/show_bug.cgi?id=177792 - - Reviewed by Yusuke Suzuki. - - * microbenchmarks/poly-proto-clear-js-function-allocation-profile.js: Added. - (assert): - (foo.Foo.prototype.ensureX): - (foo.Foo): - (foo): - (access): - -2017-11-08 Ryan Haddad - - Mark test262.yaml/test262/test/language/statements/try/tco-catch.js as passing. - https://bugs.webkit.org/show_bug.cgi?id=178592 - - Unreviewed test gardening. - - * test262.yaml: - -2017-11-08 Robin Morisset - - Turn recursive tail calls into loops - https://bugs.webkit.org/show_bug.cgi?id=176601 - - Reviewed by Saam Barati. - - Relanding after https://bugs.webkit.org/show_bug.cgi?id=178834. - - Add some simple test that computes factorial in several ways, and other trivial computations. - They all tests the case where foo calls bar (in an inlineable way) that then does a tail call. - Depending on the nature of both calls, it is possible or not to turn the tail call into a loop. - I have no clear way of checking that the call was indeed transformed, but I can check that the code computes the right result - (which it doesn't if that tail call is transformed into a loop in the unsound cases). - - * stress/inline-call-to-recursive-tail-call.js: Added. - (factorial.aux): - (factorial): - (factorial2.aux2): - (factorial2.id): - (factorial2): - (factorial3.aux3): - (factorial3): - (aux4): - (factorial4): - (foo): - (auxBar): - (bar): - (test): - -2017-11-07 Mark Lam - - AccessCase::generateImpl() should exclude the result register when restoring registers after a call. - https://bugs.webkit.org/show_bug.cgi?id=179355 - - - Reviewed by Saam Barati. - - * stress/regress-179355.js: Added. - -2017-11-05 Yusuke Suzuki - - JIT call inline caches should cache calls to objects with getCallData/getConstructData traps - https://bugs.webkit.org/show_bug.cgi?id=144458 - - Reviewed by Saam Barati. - - * microbenchmarks/dfg-internal-function-call.js: Added. - (target): - * microbenchmarks/dfg-internal-function-construct.js: Added. - (target): - * microbenchmarks/dfg-internal-function-not-handled-call.js: Added. - (target): - * microbenchmarks/dfg-internal-function-not-handled-construct.js: Added. - (target): - * stress/dfg-internal-function-call.js: Added. - (shouldBe): - (target): - * stress/dfg-internal-function-construct.js: Added. - (shouldBe): - (target): - * stress/internal-function-call.js: Added. - (shouldBe): - * stress/internal-function-construct.js: Added. - (shouldBe): - -2017-11-05 Per Arne Vollan - - [Win] Skip stress/regress-178385.js. - https://bugs.webkit.org/show_bug.cgi?id=179298 - - Unreviewed test gardening. - - * stress/regress-178385.js: - -2017-11-03 Keith Miller - - Add test for ic with side effects - https://bugs.webkit.org/show_bug.cgi?id=179268 - - Reviewed by Saam Barati. - - * stress/put-inline-cache-side-effects.js: Added. - (let.i.of.objs.keys): - (f): - -2017-11-03 Mark Lam - - CachedCall (and its clients) needs overflow checks. - https://bugs.webkit.org/show_bug.cgi?id=179185 - - Reviewed by JF Bastien. - - * stress/regress-179185.js: Added. - -2017-11-02 Michael Saboff - - DFG needs to handle code motion of code in for..in loop bodies - https://bugs.webkit.org/show_bug.cgi?id=179212 - - Reviewed by Keith Miller. - - New regression test. - - * stress/for-in-side-effects.js: Added. - (getPrototypeOf): - (reset): - (testWithoutFTL.f): - (testWithoutFTL): - (testWithFTL.f): - (testWithFTL): - -2017-11-02 Filip Pizlo - - AI does not correctly model the clobber case of ArithClz32 - https://bugs.webkit.org/show_bug.cgi?id=179188 - - Reviewed by Michael Saboff. - - * stress/arith-clz32-effects.js: Added. - (foo): - (valueOf): - -2017-11-01 Michael Saboff - - Integer overflow in code generated by LoadVarargs processing in DFG and FTL. - https://bugs.webkit.org/show_bug.cgi?id=179140 - - Reviewed by Saam Barati. - - New regression test. - - * stress/regress-179140.js: Added. - (testWithoutFTL): - (testWithFTL): - -2017-11-01 Yusuke Suzuki - - [JSC] Introduce @toObject - https://bugs.webkit.org/show_bug.cgi?id=178726 - - Reviewed by Saam Barati. - - * stress/array-copywithin.js: - (shouldThrow): - * stress/object-constructor-boolean-edge.js: Added. - (shouldBe): - (test): - * stress/object-constructor-global.js: Added. - (shouldBe): - * stress/object-constructor-null-edge.js: Added. - (shouldBe): - (test): - * stress/object-constructor-number-edge.js: Added. - (shouldBe): - (test): - * stress/object-constructor-object-edge.js: Added. - (shouldBe): - (test): - (i.arg): - * stress/object-constructor-string-edge.js: Added. - (shouldBe): - (test): - * stress/object-constructor-symbol-edge.js: Added. - (shouldBe): - (test): - * stress/object-constructor-undefined-edge.js: Added. - (shouldBe): - (test): - * stress/symbol-array-from.js: Added. - (shouldBe): - * stress/to-object-intrinsic-boolean-edge.js: Added. - (shouldBe): - (builtin.createBuiltin): - * stress/to-object-intrinsic-null-or-undefined-edge.js: Added. - (shouldThrow): - * stress/to-object-intrinsic-number-edge.js: Added. - (shouldBe): - (builtin.createBuiltin): - * stress/to-object-intrinsic-object-edge.js: Added. - (shouldBe): - (builtin.createBuiltin): - (i.arg): - * stress/to-object-intrinsic-string-edge.js: Added. - (shouldBe): - (builtin.createBuiltin): - * stress/to-object-intrinsic-symbol-edge.js: Added. - (shouldBe): - (builtin.createBuiltin): - * stress/to-object-intrinsic.js: Added. - (shouldBe): - (shouldThrow): - (builtin.createBuiltin): - -2017-10-27 Yusuke Suzuki - - [DFG][FTL] Introduce StringSlice - https://bugs.webkit.org/show_bug.cgi?id=178934 - - Reviewed by Saam Barati. - - * microbenchmarks/string-slice-empty.js: Added. - (slice): - * microbenchmarks/string-slice-one-char.js: Added. - (slice): - * microbenchmarks/string-slice.js: Added. - (slice): - -2017-10-26 Michael Saboff - - REGRESSION(r222601): We fail to properly backtrack into a sub pattern of a parenthesis with non-zero minimum - https://bugs.webkit.org/show_bug.cgi?id=178890 - - Reviewed by Keith Miller. - - New regression test. - - * stress/regress-178890.js: Added. - -2017-10-26 Mark Lam - - JSRopeString::RopeBuilder::append() should check for overflows. - https://bugs.webkit.org/show_bug.cgi?id=178385 - - - Reviewed by Saam Barati. - - * stress/regress-178385.js: Added. - -2017-10-26 Ryan Haddad - - Unreviewed, rolling out r223961. - - The change that required this has been rolled out. - - Reverted changeset: - - "Mark test262.yaml/test262/test/language/statements/try/tco- - catch.js as passing." - https://bugs.webkit.org/show_bug.cgi?id=178592 - https://trac.webkit.org/changeset/223961 - -2017-10-25 Commit Queue - - Unreviewed, rolling out r223691 and r223729. - https://bugs.webkit.org/show_bug.cgi?id=178834 - - Broke Speedometer 2 React-Redux-TodoMVC test case (Requested - by rniwa on #webkit). - - Reverted changesets: - - "Turn recursive tail calls into loops" - https://bugs.webkit.org/show_bug.cgi?id=176601 - https://trac.webkit.org/changeset/223691 - - "REGRESSION(r223691): DFGByteCodeParser.cpp:1483:83: warning: - comparison is always false due to limited range of data type - [-Wtype-limits]" - https://bugs.webkit.org/show_bug.cgi?id=178543 - https://trac.webkit.org/changeset/223729 - -2017-10-25 Ryan Haddad - - Mark test262.yaml/test262/test/language/statements/try/tco-catch.js as passing. - https://bugs.webkit.org/show_bug.cgi?id=178592 - - Unreviewed test gardening. - - * test262.yaml: - -2017-10-24 Yusuke Suzuki - - [FTL] Support NewStringObject - https://bugs.webkit.org/show_bug.cgi?id=178737 - - Reviewed by Saam Barati. - - * stress/new-string-object.js: Added. - (shouldBe): - (test): - -2017-10-15 Yusuke Suzuki - - [JSC] modules can be visited more than once when resolving bindings through "star" exports as long as the exportName is different each time - https://bugs.webkit.org/show_bug.cgi?id=178308 - - Reviewed by Mark Lam. - - * test262.yaml: - -2017-10-23 Yusuke Suzuki - - [JSC] Use fastJoin in Array#toString - https://bugs.webkit.org/show_bug.cgi?id=178062 - - Reviewed by Darin Adler. - - * microbenchmarks/contiguous-array-to-string.js: Added. - (target): - * microbenchmarks/double-array-to-string.js: Added. - (target): - * microbenchmarks/int32-array-to-string.js: Added. - (target): - -2017-10-22 Zan Dobersek - - stress/check-string-ident.js is improperly skipped - https://bugs.webkit.org/show_bug.cgi?id=178642 - - Reviewed by Saam Barati. - - * stress/check-string-ident.js: Drop the defaultNoEagerRun directive - since it enforces the run-jsc-stress-tests script to still set up the - test to run, despite the skip directive that's used before. - -2017-10-20 Mark Lam - - Add a test case for r214334. - https://bugs.webkit.org/show_bug.cgi?id=169941 - - - Reviewed by JF Bastien. - - * stress/regress-169941.js: Added. - -2017-10-19 JF Bastien - - WebAssembly: no VM / JS version of everything but Instance - https://bugs.webkit.org/show_bug.cgi?id=177473 - - Reviewed by Filip Pizlo, Saam Barati. - - - Exceeding max on memory growth now returns a range error as per - spec. This is a (very minor) breaking change: it used to throw OOM - error. Update the corresponding test. - - * wasm/js-api/memory-grow.js: - (assertEq): - * wasm/js-api/table.js: - (assert.throws): - -2017-10-19 Mark Lam - - Stringifier::appendStringifiedValue() is missing an exception check. - https://bugs.webkit.org/show_bug.cgi?id=178386 - - - Reviewed by Saam Barati. - - * stress/regress-178386.js: Added. - -2017-10-19 Michael Saboff - - Test262: RegExp/property-escapes/generated/Emoji_Component.js fails with current RegExp Unicode Properties implementation - https://bugs.webkit.org/show_bug.cgi?id=178521 - - Reviewed by JF Bastien. - - * test262.yaml: Enabled test262/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js as it - now passes with the current version (5.0) of the Emoji spec. - -2017-10-19 Robin Morisset - - Turn recursive tail calls into loops - https://bugs.webkit.org/show_bug.cgi?id=176601 - - Reviewed by Saam Barati. - - Add some simple test that computes factorial in several ways, and other trivial computations. - They all tests the case where foo calls bar (in an inlineable way) that then does a tail call. - Depending on the nature of both calls, it is possible or not to turn the tail call into a loop. - I have no clear way of checking that the call was indeed transformed, but I can check that the code computes the right result - (which it doesn't if that tail call is transformed into a loop in the unsound cases). - - * stress/inline-call-to-recursive-tail-call.js: Added. - (factorial.aux): - (factorial): - (factorial2.aux): - (factorial2.id): - (factorial2): - (factorial3.aux): - (factorial3): - (aux): - (factorial4): - (test): - -2017-10-18 Mark Lam - - RegExpObject::defineOwnProperty() does not need to compare values if no descriptor value is specified. - https://bugs.webkit.org/show_bug.cgi?id=177600 - - - Reviewed by Saam Barati. - - * stress/regress-177600.js: Added. - -2017-10-18 Mark Lam - - The compiler should always register a structure when it adds its transitionWatchPointSet. - https://bugs.webkit.org/show_bug.cgi?id=178420 - - - Reviewed by Saam Barati and Filip Pizlo. - - * stress/regress-178420.js: Added. - (new.Array.10000.map): - -2017-10-18 Yusuke Suzuki - - [JSC] __proto__ getter should be fast - https://bugs.webkit.org/show_bug.cgi?id=178067 - - Reviewed by Saam Barati. - - * stress/dfg-object-proto-accessor.js: Added. - (shouldBe): - (shouldThrow): - (target): - * stress/dfg-object-proto-getter.js: Added. - (shouldBe): - (shouldThrow): - (target): - * stress/dfg-object-prototype-of.js: Added. - (shouldBe): - (shouldThrow): - (target): - * stress/dfg-reflect-get-prototype-of.js: Added. - (shouldBe): - (shouldThrow): - (target): - * stress/intrinsic-getter-with-poly-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-get-prototype-of-filtered.js: Added. - (shouldBe): - (shouldThrow): - (target): - (i.Cocoa): - * stress/object-get-prototype-of-mono-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-get-prototype-of-poly-mono-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-get-prototype-of-poly-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-proto-getter-filtered.js: Added. - (shouldBe): - (shouldThrow): - (target): - (i.Cocoa): - * stress/object-proto-getter-poly-mono-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-proto-getter-poly-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-prototype-proto-accessors-should-throw-on-undefined-this.js: - * stress/string-proto.js: Added. - (shouldBe): - (target): - -2017-10-17 Ryan Haddad - - Unreviewed, rolling out r223523. - - A test for this change is failing on debug JSC bots. - - Reverted changeset: - - "[JSC] __proto__ getter should be fast" - https://bugs.webkit.org/show_bug.cgi?id=178067 - https://trac.webkit.org/changeset/223523 - -2017-10-10 Yusuke Suzuki - - [JSC] __proto__ getter should be fast - https://bugs.webkit.org/show_bug.cgi?id=178067 - - Reviewed by Saam Barati. - - * stress/dfg-object-proto-accessor.js: Added. - (shouldBe): - (shouldThrow): - (target): - * stress/dfg-object-proto-getter.js: Added. - (shouldBe): - (shouldThrow): - (target): - * stress/dfg-object-prototype-of.js: Added. - (shouldBe): - (shouldThrow): - (target): - * stress/dfg-reflect-get-prototype-of.js: Added. - (shouldBe): - (shouldThrow): - (target): - * stress/object-get-prototype-of-filtered.js: Added. - (shouldBe): - (shouldThrow): - (target): - (i.Cocoa): - * stress/object-get-prototype-of-mono-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-get-prototype-of-poly-mono-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-get-prototype-of-poly-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-proto-getter-filtered.js: Added. - (shouldBe): - (shouldThrow): - (target): - (i.Cocoa): - * stress/object-proto-getter-poly-mono-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-proto-getter-poly-proto.js: Added. - (shouldBe): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (target): - * stress/object-prototype-proto-accessors-should-throw-on-undefined-this.js: - * stress/string-proto.js: Added. - (shouldBe): - (target): - -2017-10-14 Yusuke Suzuki - - Reland "Add Above/Below comparisons for UInt32 patterns" - https://bugs.webkit.org/show_bug.cgi?id=177281 - - Reviewed by Saam Barati. - - * stress/uint32-comparison-jump.js: Added. - (shouldBe): - (above): - (aboveOrEqual): - (below): - (belowOrEqual): - (notAbove): - (notAboveOrEqual): - (notBelow): - (notBelowOrEqual): - * stress/uint32-comparison.js: Added. - (shouldBe): - (above): - (aboveOrEqual): - (below): - (belowOrEqual): - (aboveTest): - (aboveOrEqualTest): - (belowTest): - (belowOrEqualTest): - -2017-10-12 Yusuke Suzuki - - WebAssembly: Wasm functions should have either JSFunctionType or TypeOfShouldCallGetCallData - https://bugs.webkit.org/show_bug.cgi?id=178210 - - Reviewed by Saam Barati. - - * wasm/function-tests/trap-from-start-async.js: - (async.StartTrapsAsync): - * wasm/function-tests/trap-from-start.js: - (StartTraps): - * wasm/js-api/web-assembly-function.js: - (assert.eq.Object.getPrototypeOf): - * wasm/js-api/wrapper-function.js: - (return.new.WebAssembly.Module): - (assert.throws.makeInstance): Deleted. - (assert.throws.Bar): Deleted. - (assert.throws): Deleted. - -2017-09-29 Filip Pizlo - - Enable gigacage on iOS - https://bugs.webkit.org/show_bug.cgi?id=177586 - - Reviewed by JF Bastien. - - Add tests for when Gigacage gets runtime disabled. - - * stress/disable-gigacage-arrays.js: Added. - (foo): - * stress/disable-gigacage-strings.js: Added. - (foo): - * stress/disable-gigacage-typed-arrays.js: Added. - (foo): - -2017-10-11 Yusuke Suzuki - - import.meta should not be assignable - https://bugs.webkit.org/show_bug.cgi?id=178202 - - Reviewed by Saam Barati. - - * modules/import-meta-assignment.js: Added. - (shouldThrow): - (SyntaxError.import.meta.can.shouldThrow): - -2017-10-11 Saam Barati - - Unreviewed. Actually skip certain type profiler tests in debug. - - * typeProfiler.yaml: - * typeProfiler/deltablue-for-of.js: - * typeProfiler/getter-richards.js: - -2017-10-11 Commit Queue - - Unreviewed, rolling out r223113 and r223121. - https://bugs.webkit.org/show_bug.cgi?id=178182 - - Reintroduced 20% regression on Kraken (Requested by rniwa on - #webkit). - - Reverted changesets: - - "Enable gigacage on iOS" - https://bugs.webkit.org/show_bug.cgi?id=177586 - https://trac.webkit.org/changeset/223113 - - "Use one virtual allocation for all gigacages and their - runways" - https://bugs.webkit.org/show_bug.cgi?id=178050 - https://trac.webkit.org/changeset/223121 - -2017-10-11 Michael Saboff - - Disable test262 named capture group tests with direct unicode names and with references before definitions - https://bugs.webkit.org/show_bug.cgi?id=178177 - - Reviewed by Keith Miller. - - Bugs to track fixing these test are: - https://bugs.webkit.org/show_bug.cgi?id=178174 - - "Add support in named capture group identifiers for direct surrogate pairs" - https://bugs.webkit.org/show_bug.cgi?id=178175 - - "Test262 failure with Named Capture Groups - using a reference before the group is defined" - - * test262.yaml: - -2017-10-11 Caio Lima - - Object properties are undefined in super.call() but not in this.call() - https://bugs.webkit.org/show_bug.cgi?id=177230 - - Reviewed by Saam Barati. - - * stress/super-call-function-subclass.js: Added. - (assert): - (A.prototype.t): - (A): - * stress/super-dot-call-and-apply.js: Added. - (assert): - (A): - (A.prototype.call): - (A.prototype.apply): - (B.prototype.testSuper): - (B): - (const.obj.new.B.string_appeared_here.obj.testSuper.C): - (D.prototype.testSuper): - (D): - -2017-10-10 Saam Barati - - The prototype cache should be aware of the Executable it generates a Structure for - https://bugs.webkit.org/show_bug.cgi?id=177907 - - Reviewed by Filip Pizlo. - - * microbenchmarks/dont-confuse-structures-from-different-executable-as-poly-proto.js: Added. - (assert): - (foo.C): - (foo): - (bar.C): - (bar): - (access): - (makeLongChain): - (accessY): - -2017-10-09 Yusuke Suzuki - - `async` should be able to be used as an imported binding name - https://bugs.webkit.org/show_bug.cgi?id=176573 - - Reviewed by Saam Barati. - - * modules/import-default-async.js: Added. - * modules/import-named-async-as.js: Added. - * modules/import-named-async.js: Added. - * modules/import-named-async/target.js: Added. - * modules/import-namespace-async.js: Added. - * test262.yaml: - -2017-09-29 Filip Pizlo - - Enable gigacage on iOS - https://bugs.webkit.org/show_bug.cgi?id=177586 - - Reviewed by JF Bastien. - - Add tests for when Gigacage gets runtime disabled. - - * stress/disable-gigacage-arrays.js: Added. - (foo): - * stress/disable-gigacage-strings.js: Added. - (foo): - * stress/disable-gigacage-typed-arrays.js: Added. - (foo): - -2017-10-09 Michael Saboff - - Implement RegExp Unicode property escapes - https://bugs.webkit.org/show_bug.cgi?id=172069 - - Reviewed by JF Bastien. - - Enabled Unicode Property tests. - - * test262.yaml: - -2017-10-09 Commit Queue - - Unreviewed, rolling out r223015 and r223025. - https://bugs.webkit.org/show_bug.cgi?id=178093 - - Regressed Kraken on iOS by 20% (Requested by keith_mi_ on - #webkit). - - Reverted changesets: - - "Enable gigacage on iOS" - https://bugs.webkit.org/show_bug.cgi?id=177586 - http://trac.webkit.org/changeset/223015 - - "Unreviewed, disable Gigacage on ARM64 Linux" - https://bugs.webkit.org/show_bug.cgi?id=177586 - http://trac.webkit.org/changeset/223025 - -2017-10-09 Ryan Haddad - - Update expectations for test262 tests that pass after r223043. - https://bugs.webkit.org/show_bug.cgi?id=176685 - - Unreviewed test gardening. - - * test262.yaml: - -2017-10-09 Ryan Haddad - - Unreviewed, rolling out r223022. - - This change introduced 18 test262 failures. - - Reverted changeset: - - "`async` should be able to be used as an imported binding - name" - https://bugs.webkit.org/show_bug.cgi?id=176573 - http://trac.webkit.org/changeset/223022 - -2017-10-09 Saam Barati - - 3 poly-proto JSC tests timing out on debug after r222827 - https://bugs.webkit.org/show_bug.cgi?id=177880 - - - Unreviewed. - - I'm skipping these type profiler tests on debug since they are long running. - - * typeProfiler/deltablue-for-of.js: - * typeProfiler/getter-richards.js: - -2017-10-09 Oleksandr Skachkov - - Safari 10 /11 problem with if (!await get(something)). - https://bugs.webkit.org/show_bug.cgi?id=176685 - - Reviewed by Saam Barati. - - * stress/async-await-basic.js: - (awaitEpression.async): - * stress/async-await-syntax.js: - (testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntax): - (prototype.testTopLevelAsyncAwaitSyntaxStrictMode): - -2017-10-08 Saam Barati - - Unreviewed. Make some type profiler tests run for less time to avoid debug timeouts. - - * typeProfiler/deltablue-for-of.js: - * typeProfiler/getter-richards.js: - -2017-10-07 Yusuke Suzuki - - `async` should be able to be used as an imported binding name - https://bugs.webkit.org/show_bug.cgi?id=176573 - - Reviewed by Darin Adler. - - * modules/import-default-async.js: Added. - * modules/import-named-async-as.js: Added. - * modules/import-named-async.js: Added. - * modules/import-named-async/target.js: Added. - * modules/import-namespace-async.js: Added. - -2017-09-29 Filip Pizlo - - Enable gigacage on iOS - https://bugs.webkit.org/show_bug.cgi?id=177586 - - Reviewed by JF Bastien. - - Add tests for when Gigacage gets runtime disabled. - - * stress/disable-gigacage-arrays.js: Added. - (foo): - * stress/disable-gigacage-strings.js: Added. - (foo): - * stress/disable-gigacage-typed-arrays.js: Added. - (foo): - -2017-10-06 Commit Queue - - Unreviewed, rolling out r222791 and r222873. - https://bugs.webkit.org/show_bug.cgi?id=178031 - - Caused crashes with workers/wasm LayoutTests (Requested by - ryanhaddad on #webkit). - - Reverted changesets: - - "WebAssembly: no VM / JS version of everything but Instance" - https://bugs.webkit.org/show_bug.cgi?id=177473 - http://trac.webkit.org/changeset/222791 - - "WebAssembly: address no VM / JS follow-ups" - https://bugs.webkit.org/show_bug.cgi?id=177887 - http://trac.webkit.org/changeset/222873 - -2017-10-05 Saam Barati - - Make sure all prototypes under poly proto get added into the VM's prototype map - https://bugs.webkit.org/show_bug.cgi?id=177909 - - Reviewed by Keith Miller. - - * stress/poly-proto-prototype-map-having-a-bad-time.js: Added. - (assert): - (foo.C): - (foo): - (set x): - -2017-09-30 Yusuke Suzuki - - [JSC] Introduce import.meta - https://bugs.webkit.org/show_bug.cgi?id=177703 - - Reviewed by Filip Pizlo. - - * modules/import-meta-syntax.js: Added. - (shouldThrow): - (shouldNotThrow): - * modules/import-meta.js: Added. - * modules/import-meta/cocoa.js: Added. - * modules/resources/assert.js: - (export.shouldNotThrow): - * stress/import-syntax.js: - -2017-10-04 Saam Barati - - Make pertinent AccessCases watch the poly proto watchpoint - https://bugs.webkit.org/show_bug.cgi?id=177765 - - Reviewed by Keith Miller. - - * microbenchmarks/poly-proto-and-non-poly-proto-same-ic.js: Added. - (assert): - (foo.C): - (foo): - (validate): - * stress/poly-proto-clear-stub.js: Added. - (assert): - (foo.C): - (foo): - -2017-10-04 Ryan Haddad - - Remove failure expectation for async-func-decl-dstr-obj-id-put-unresolvable-no-strict.js. - - Unreviewed test gardening. - - * test262.yaml: - -2017-10-04 Saam Barati - - 3 poly-proto JSC tests timing out on debug after r222827 - https://bugs.webkit.org/show_bug.cgi?id=177880 - - Rubber stamped by Mark Lam. - - * microbenchmarks/poly-proto-access.js: - * typeProfiler/deltablue-for-of.js: - * typeProfiler/getter-richards.js: - -2017-10-04 Joseph Pecoraro - - Unreviewed, marking tco-catch.js as a failure after test262 update - https://bugs.webkit.org/show_bug.cgi?id=177859 - - * test262.yaml: - -2017-10-04 Yusuke Suzuki - - Unreviewed, marking one async iterator test262 test failed - https://bugs.webkit.org/show_bug.cgi?id=177859 - - * test262.yaml: - -2017-10-04 Yusuke Suzuki - - [Test262] Update Test262 to Oct 4 version - https://bugs.webkit.org/show_bug.cgi?id=177859 - - Reviewed by Sam Weinig. - - Let's rebaseline test262. Since it includes the latest changes to ArrayIterator::next, - we no longer need to mark it skip/fail. Also this update includes bunch of BigInt tests. - - * test262.yaml: - * test262/harness/promiseHelper.js: Renamed from JSTests/test262/harness/PromiseHelper.js. - (checkSequence): - * test262/harness/typeCoercion.js: - (testCoercibleToIndexZero): - (testCoercibleToIndexOne): - (testCoercibleToIndexFromIndex): - (testNotCoercibleToIndex.testPrimitiveValue): - (testNotCoercibleToInteger): - (testCoercibleToBigIntZero.testPrimitiveValue): - (testCoercibleToBigIntZero): - (testCoercibleToBigIntOne.testPrimitiveValue): - (testCoercibleToBigIntOne): - (testPrimitiveValue): - (testCoercibleToBigIntFromBigInt): - (testNotCoercibleToBigInt.testPrimitiveValue): - (testNotCoercibleToBigInt.testStringValue): - (testNotCoercibleToBigInt): - * test262/test/built-ins/Array/from/proto-from-ctor-realm.js: - * test262/test/built-ins/Array/length/define-own-prop-length-overflow-realm.js: - * test262/test/built-ins/Array/of/proto-from-ctor-realm.js: - * test262/test/built-ins/Array/proto-from-ctor-realm.js: - * test262/test/built-ins/Array/prototype/concat/create-proto-from-ctor-realm-array.js: - * test262/test/built-ins/Array/prototype/concat/create-proto-from-ctor-realm-non-array.js: - * test262/test/built-ins/Array/prototype/filter/create-proto-from-ctor-realm-array.js: - * test262/test/built-ins/Array/prototype/filter/create-proto-from-ctor-realm-non-array.js: - * test262/test/built-ins/Array/prototype/map/create-proto-from-ctor-realm-array.js: - * test262/test/built-ins/Array/prototype/map/create-proto-from-ctor-realm-non-array.js: - * test262/test/built-ins/Array/prototype/slice/create-proto-from-ctor-realm-array.js: - * test262/test/built-ins/Array/prototype/slice/create-proto-from-ctor-realm-non-array.js: - * test262/test/built-ins/Array/prototype/splice/create-proto-from-ctor-realm-array.js: - * test262/test/built-ins/Array/prototype/splice/create-proto-from-ctor-realm-non-array.js: - * test262/test/built-ins/ArrayBuffer/proto-from-ctor-realm.js: - * test262/test/built-ins/BigInt/asIntN/bigint-tobigint.js: - (testCoercibleToBigIntZero): - (testCoercibleToBigIntOne): - (testNotCoercibleToBigInt): - (MyError): Deleted. - (valueOf): Deleted. - (toString): Deleted. - (Symbol.toPrimitive): Deleted. - * test262/test/built-ins/BigInt/asIntN/bits-toindex.js: - (testCoercibleToIndexZero): - (testCoercibleToIndexOne): - (testNotCoercibleToIndex): - (MyError): Deleted. - (assert.sameValue.BigInt.asIntN.valueOf): Deleted. - (assert.sameValue.BigInt.asIntN.toString): Deleted. - (BigInt.asIntN.Symbol.toPrimitive): Deleted. - (BigInt.asIntN.valueOf): Deleted. - (BigInt.asIntN.toString): Deleted. - * test262/test/built-ins/BigInt/asUintN/arithmetic.js: Added. - * test262/test/built-ins/BigInt/asUintN/asUintN.js: Added. - * test262/test/built-ins/BigInt/asUintN/bigint-tobigint.js: Added. - (testCoercibleToBigIntZero): - (testCoercibleToBigIntOne): - (testNotCoercibleToBigInt): - * test262/test/built-ins/BigInt/asUintN/bits-toindex.js: Added. - (testCoercibleToIndexZero): - (testCoercibleToIndexOne): - (testNotCoercibleToIndex): - * test262/test/built-ins/BigInt/asUintN/length.js: Added. - * test262/test/built-ins/BigInt/asUintN/name.js: Added. - * test262/test/built-ins/BigInt/asUintN/order-of-steps.js: Added. - (bits.valueOf): - (bigint.valueOf): - * test262/test/built-ins/BigInt/prototype/valueOf/length.js: Added. - * test262/test/built-ins/BigInt/prototype/valueOf/name.js: Added. - * test262/test/built-ins/BigInt/prototype/valueOf/prop-desc.js: Added. - * test262/test/built-ins/BigInt/prototype/valueOf/return.js: Added. - * test262/test/built-ins/BigInt/prototype/valueOf/this-value-invalid-object-throws.js: Added. - * test262/test/built-ins/BigInt/prototype/valueOf/this-value-invalid-primitive-throws.js: Added. - * test262/test/built-ins/Boolean/proto-from-ctor-realm.js: - * test262/test/built-ins/DataView/proto-from-ctor-realm-sab.js: - * test262/test/built-ins/DataView/proto-from-ctor-realm.js: - * test262/test/built-ins/Date/proto-from-ctor-realm-one.js: - * test262/test/built-ins/Date/proto-from-ctor-realm-two.js: - * test262/test/built-ins/Date/proto-from-ctor-realm-zero.js: - * test262/test/built-ins/Error/proto-from-ctor-realm.js: - * test262/test/built-ins/Function/call-bind-this-realm-undef.js: - * test262/test/built-ins/Function/call-bind-this-realm-value.js: - * test262/test/built-ins/Function/internals/Call/class-ctor-realm.js: - * test262/test/built-ins/Function/internals/Construct/base-ctor-revoked-proxy-realm.js: - * test262/test/built-ins/Function/internals/Construct/derived-return-val-realm.js: - * test262/test/built-ins/Function/internals/Construct/derived-this-uninitialized-realm.js: - * test262/test/built-ins/Function/proto-from-ctor-realm.js: - * test262/test/built-ins/Function/prototype/bind/get-fn-realm.js: - * test262/test/built-ins/Function/prototype/bind/proto-from-ctor-realm.js: - * test262/test/built-ins/GeneratorFunction/proto-from-ctor-realm.js: - * test262/test/built-ins/JSON/stringify/bigint-order.js: Added. - (replacer): - (BigInt.prototype.toJSON): - * test262/test/built-ins/JSON/stringify/bigint-replacer.js: Added. - (replacer): - * test262/test/built-ins/JSON/stringify/bigint-tojson.js: Added. - (BigInt.prototype.toJSON): - * test262/test/built-ins/JSON/stringify/bigint.js: - * test262/test/built-ins/Map/proto-from-ctor-realm.js: - * test262/test/built-ins/Number/S9.3.1_A2_U180E.js: - * test262/test/built-ins/Number/S9.3.1_A3_T1_U180E.js: - * test262/test/built-ins/Number/S9.3.1_A3_T2_U180E.js: - * test262/test/built-ins/Number/proto-from-ctor-realm.js: - * test262/test/built-ins/Object/proto-from-ctor.js: - * test262/test/built-ins/Promise/proto-from-ctor-realm.js: - * test262/test/built-ins/Proxy/apply/arguments-realm.js: - * test262/test/built-ins/Proxy/apply/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/construct/arguments-realm.js: - * test262/test/built-ins/Proxy/construct/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/construct/trap-is-undefined-proto-from-ctor-realm.js: - * test262/test/built-ins/Proxy/defineProperty/desc-realm.js: - * test262/test/built-ins/Proxy/defineProperty/null-handler-realm.js: - * test262/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable-realm.js: - * test262/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target-realm.js: - * test262/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-realm.js: - * test262/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor-realm.js: - * test262/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible-realm.js: - * test262/test/built-ins/Proxy/defineProperty/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/deleteProperty/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/get-fn-realm.js: - * test262/test/built-ins/Proxy/get/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined-realm.js: - * test262/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/has/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/isExtensible/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/ownKeys/return-not-list-object-throws-realm.js: - * test262/test/built-ins/Proxy/ownKeys/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/preventExtensions/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/set/trap-is-not-callable-realm.js: - * test262/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable-realm.js: - * test262/test/built-ins/RegExp/S15.10.2.12_A1_T1.js: - (i6.replace): - (i6b.replace): - * test262/test/built-ins/RegExp/dotall/with-dotall-unicode.js: - * test262/test/built-ins/RegExp/dotall/with-dotall.js: - * test262/test/built-ins/RegExp/dotall/without-dotall-unicode.js: - * test262/test/built-ins/RegExp/dotall/without-dotall.js: - * test262/test/built-ins/RegExp/proto-from-ctor-realm.js: - * test262/test/built-ins/RegExp/prototype/Symbol.split/splitter-proto-from-ctor-realm.js: - * test262/test/built-ins/RegExp/u180e.js: Added. - * test262/test/built-ins/Set/proto-from-ctor-realm.js: - * test262/test/built-ins/SharedArrayBuffer/proto-from-ctor-realm.js: - * test262/test/built-ins/String/proto-from-ctor-realm.js: - * test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Fail.js: - * test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Fail_2.js: - * test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Success.js: - * test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Success_2.js: - * test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Success_3.js: - * test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Success_4.js: - * test262/test/built-ins/String/prototype/endsWith/coerced-values-of-position.js: - * test262/test/built-ins/String/prototype/endsWith/endsWith.js: - * test262/test/built-ins/String/prototype/endsWith/length.js: - * test262/test/built-ins/String/prototype/endsWith/name.js: - * test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-position-as-symbol.js: - * test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-position.js: - * test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-searchstring-as-symbol.js: - * test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-searchstring-regexp-test.js: - * test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-searchstring.js: - * test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-this-as-symbol.js: - * test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-this.js: - * test262/test/built-ins/String/prototype/endsWith/return-false-if-search-start-is-less-than-zero.js: - * test262/test/built-ins/String/prototype/endsWith/return-true-if-searchstring-is-empty.js: - * test262/test/built-ins/String/prototype/endsWith/searchstring-found-with-position.js: - * test262/test/built-ins/String/prototype/endsWith/searchstring-found-without-position.js: - * test262/test/built-ins/String/prototype/endsWith/searchstring-is-regexp-throws.js: - * test262/test/built-ins/String/prototype/endsWith/searchstring-not-found-with-position.js: - * test262/test/built-ins/String/prototype/endsWith/searchstring-not-found-without-position.js: - * test262/test/built-ins/String/prototype/endsWith/this-is-null-throws.js: - * test262/test/built-ins/String/prototype/endsWith/this-is-undefined-throws.js: - * test262/test/built-ins/String/prototype/includes/String.prototype.includes_FailBadLocation.js: - * test262/test/built-ins/String/prototype/includes/String.prototype.includes_FailLocation.js: - * test262/test/built-ins/String/prototype/includes/String.prototype.includes_FailMissingLetter.js: - * test262/test/built-ins/String/prototype/includes/String.prototype.includes_Success.js: - * test262/test/built-ins/String/prototype/includes/String.prototype.includes_SuccessNoLocation.js: - * test262/test/built-ins/String/prototype/includes/String.prototype.includes_lengthProp.js: - * test262/test/built-ins/String/prototype/includes/coerced-values-of-position.js: - * test262/test/built-ins/String/prototype/includes/includes.js: - * test262/test/built-ins/String/prototype/includes/length.js: - * test262/test/built-ins/String/prototype/includes/name.js: - * test262/test/built-ins/String/prototype/includes/return-abrupt-from-position-as-symbol.js: - * test262/test/built-ins/String/prototype/includes/return-abrupt-from-position.js: - * test262/test/built-ins/String/prototype/includes/return-abrupt-from-searchstring-as-symbol.js: - * test262/test/built-ins/String/prototype/includes/return-abrupt-from-searchstring-regexp-test.js: - * test262/test/built-ins/String/prototype/includes/return-abrupt-from-searchstring.js: - * test262/test/built-ins/String/prototype/includes/return-abrupt-from-this-as-symbol.js: - * test262/test/built-ins/String/prototype/includes/return-abrupt-from-this.js: - * test262/test/built-ins/String/prototype/includes/return-false-with-out-of-bounds-position.js: - * test262/test/built-ins/String/prototype/includes/return-true-if-searchstring-is-empty.js: - * test262/test/built-ins/String/prototype/includes/searchstring-found-with-position.js: - * test262/test/built-ins/String/prototype/includes/searchstring-found-without-position.js: - * test262/test/built-ins/String/prototype/includes/searchstring-is-regexp-throws.js: - * test262/test/built-ins/String/prototype/includes/searchstring-not-found-with-position.js: - * test262/test/built-ins/String/prototype/includes/searchstring-not-found-without-position.js: - * test262/test/built-ins/String/prototype/includes/this-is-null-throws.js: - * test262/test/built-ins/String/prototype/includes/this-is-undefined-throws.js: - * test262/test/built-ins/String/prototype/toLocaleLowerCase/Final_Sigma_U180E.js: - * test262/test/built-ins/String/prototype/toLowerCase/Final_Sigma_U180E.js: - * test262/test/built-ins/String/prototype/trim/u180e.js: - * test262/test/built-ins/Symbol/for/cross-realm.js: - * test262/test/built-ins/Symbol/hasInstance/cross-realm.js: - * test262/test/built-ins/Symbol/isConcatSpreadable/cross-realm.js: - * test262/test/built-ins/Symbol/iterator/cross-realm.js: - * test262/test/built-ins/Symbol/keyFor/cross-realm.js: - * test262/test/built-ins/Symbol/match/cross-realm.js: - * test262/test/built-ins/Symbol/replace/cross-realm.js: - * test262/test/built-ins/Symbol/search/cross-realm.js: - * test262/test/built-ins/Symbol/species/cross-realm.js: - * test262/test/built-ins/Symbol/split/cross-realm.js: - * test262/test/built-ins/Symbol/toPrimitive/cross-realm.js: - * test262/test/built-ins/Symbol/toStringTag/cross-realm.js: - * test262/test/built-ins/Symbol/unscopables/cross-realm.js: - * test262/test/built-ins/ThrowTypeError/distinct-cross-realm.js: - * test262/test/built-ins/TypedArrays/buffer-arg-proto-from-ctor-realm-sab.js: - * test262/test/built-ins/TypedArrays/buffer-arg-proto-from-ctor-realm.js: - * test262/test/built-ins/TypedArrays/internals/DefineOwnProperty/detached-buffer-realm.js: - * test262/test/built-ins/TypedArrays/internals/Get/detached-buffer-realm.js: - * test262/test/built-ins/TypedArrays/internals/GetOwnProperty/detached-buffer-realm.js: - * test262/test/built-ins/TypedArrays/internals/HasProperty/detached-buffer-realm.js: - * test262/test/built-ins/TypedArrays/internals/Set/detached-buffer-realm.js: - * test262/test/built-ins/TypedArrays/length-arg-proto-from-ctor-realm.js: - * test262/test/built-ins/TypedArrays/no-args-proto-from-ctor-realm.js: - * test262/test/built-ins/TypedArrays/object-arg-proto-from-ctor-realm.js: - * test262/test/built-ins/TypedArrays/typedarray-arg-other-ctor-buffer-ctor-custom-species-proto-from-ctor-realm.js: - * test262/test/built-ins/TypedArrays/typedarray-arg-proto-from-ctor-realm.js: - * test262/test/built-ins/TypedArrays/typedarray-arg-same-ctor-buffer-ctor-species-custom-proto-from-ctor-realm.js: - * test262/test/built-ins/WeakMap/proto-from-ctor-realm.js: - * test262/test/built-ins/WeakSet/proto-from-ctor-realm.js: - * test262/test/built-ins/parseFloat/S15.1.2.3_A2_T10_U180E.js: - * test262/test/built-ins/parseInt/S15.1.2.2_A2_T10_U180E.js: - * test262/test/intl402/NumberFormat/prototype/formatToParts/length.js: - * test262/test/language/comments/mongolian-vowel-separator-multi.js: - * test262/test/language/comments/mongolian-vowel-separator-single-eval.js: - * test262/test/language/comments/mongolian-vowel-separator-single.js: - * test262/test/language/eval-code/indirect/realm.js: - * test262/test/language/expressions/assignment/dstr-obj-rest-order.js: Added. - (o.get z): - (o.get a): - * test262/test/language/expressions/call/eval-realm-indirect.js: - * test262/test/language/expressions/generators/eval-body-proto-realm.js: - * test262/test/language/expressions/greater-than-or-equal/bigint-and-bigint.js: Added. - * test262/test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js: Added. - * test262/test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js: Added. - * test262/test/language/expressions/greater-than-or-equal/bigint-and-number.js: - * test262/test/language/expressions/greater-than/bigint-and-bigint.js: Added. - * test262/test/language/expressions/greater-than/bigint-and-non-finite.js: Added. - * test262/test/language/expressions/greater-than/bigint-and-number-extremes.js: Added. - * test262/test/language/expressions/greater-than/bigint-and-number.js: - * test262/test/language/expressions/less-than-or-equal/bigint-and-bigint.js: Added. - * test262/test/language/expressions/less-than-or-equal/bigint-and-non-finite.js: Added. - * test262/test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js: Added. - * test262/test/language/expressions/less-than-or-equal/bigint-and-number.js: - * test262/test/language/expressions/less-than/bigint-and-bigint.js: Added. - * test262/test/language/expressions/less-than/bigint-and-non-finite.js: Added. - * test262/test/language/expressions/less-than/bigint-and-number-extremes.js: Added. - * test262/test/language/expressions/less-than/bigint-and-number.js: - * test262/test/language/expressions/new/non-ctor-err-realm.js: - * test262/test/language/expressions/super/realm.js: - * test262/test/language/expressions/tagged-template/cache-realm.js: - * test262/test/language/expressions/template-literal/mongolian-vowel-separator-eval.js: - * test262/test/language/expressions/template-literal/mongolian-vowel-separator.js: - * test262/test/language/literals/regexp/mongolian-vowel-separator-eval.js: - * test262/test/language/literals/regexp/mongolian-vowel-separator.js: - * test262/test/language/literals/string/mongolian-vowel-separator-eval.js: - * test262/test/language/literals/string/mongolian-vowel-separator.js: - * test262/test/language/statements/for-of/dstr-obj-rest-order.js: Added. - (o.get z): - (o.get a): - * test262/test/language/statements/for-of/iterator-next-reference.js: - (next): - (iterator.next): Deleted. - (x.of.iterable.): Deleted. - (x.of.iterable.get return): Deleted. - (x.of.iterable.iterator.next): Deleted. - * test262/test/language/types/reference/get-value-prop-base-primitive-realm.js: - * test262/test/language/types/reference/put-value-prop-base-primitive-realm.js: - * test262/test/language/white-space/mongolian-vowel-separator-eval.js: - * test262/test/language/white-space/mongolian-vowel-separator.js: - * test262/test262-Revision.txt: - -2017-10-03 Saam Barati - - Implement polymorphic prototypes - https://bugs.webkit.org/show_bug.cgi?id=176391 - - Reviewed by Filip Pizlo. - - * microbenchmarks/poly-proto-access.js: Added. - (assert): - (foo.C): - (foo.C.prototype.get bar): - (foo): - (bar): - * microbenchmarks/poly-proto-put-transition-speed.js: Added. - (assert): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (performSet): - * microbenchmarks/poly-proto-setter-speed.js: Added. - (assert): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo.C.prototype.set p): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (performSet): - * stress/constructor-with-return.js: - (i.tests.forEach.Constructor): - (i.tests.forEach): - (tests.forEach.Constructor): Deleted. - (tests.forEach): Deleted. - * stress/dom-jit-with-poly-proto.js: Added. - (assert): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (validate): - * stress/poly-proto-custom-value-and-accessor.js: Added. - (assert): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (items.forEach): - (set get for): - * stress/poly-proto-intrinsic-getter-correctness.js: Added. - (assert): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (foo): - * stress/poly-proto-miss.js: Added. - (makePolyProtoInstanceWithNullPrototype.foo.C): - (makePolyProtoInstanceWithNullPrototype.foo): - (makePolyProtoInstanceWithNullPrototype): - (assert): - (validate): - * stress/poly-proto-op-in-caching.js: Added. - (assert): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (validate): - (validate2): - * stress/poly-proto-put-transition.js: Added. - (assert): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (performSet): - (i.obj.__proto__.set p): - * stress/poly-proto-set-prototype.js: Added. - (assert): - (let.alternateProto.get x): - (let.alternateProto2.get y): - (let.alternateProto2.get x): - (foo.C): - (foo): - (validate): - * stress/poly-proto-setter.js: Added. - (assert): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo.C.prototype.set p): - (makePolyProtoObject.foo.C.prototype.get p): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (performSet): - * stress/poly-proto-using-inheritance.js: Added. - (assert): - (foo.C): - (foo.C.prototype.get baz): - (foo): - (bar.C): - (bar): - (validate): - * stress/primitive-poly-proto.js: Added. - (makePolyProtoInstance.foo.C): - (makePolyProtoInstance.foo): - (makePolyProtoInstance): - (assert): - (validate): - * stress/prototype-is-not-js-object.js: Added. - (foo.bar): - (foo): - (assert): - (validate): - * stress/try-get-by-id-poly-proto.js: Added. - (assert): - (makePolyProtoObject.foo.C): - (makePolyProtoObject.foo): - (makePolyProtoObject): - (tryGetByIdText): - (x.__proto__.get bar): - (validate): - * typeProfiler/overflow.js: - -2017-10-03 JF Bastien - - WebAssembly: no VM / JS version of everything but Instance - https://bugs.webkit.org/show_bug.cgi?id=177473 - - Reviewed by Filip Pizlo. - - - Exceeding max on memory growth now returns a range error as per - spec. This is a (very minor) breaking change: it used to throw OOM - error. Update the corresponding test. - - * wasm/js-api/memory-grow.js: - (assertEq): - * wasm/js-api/table.js: - (assert.throws): - -2017-10-03 Ryan Haddad - - Skip JSC test stress/regress-159779-2.js on debug. - https://bugs.webkit.org/show_bug.cgi?id=177204 - - Unreviewed test gardening. - - * stress/regress-159779-2.js: - -2017-10-02 Caio Lima - - ChakraCore/test/Function/apply3.js is resulting wrong result in x86_64 - https://bugs.webkit.org/show_bug.cgi?id=175642 - - Reviewed by Darin Adler. - - * ChakraCore/test/Function/apply3.baseline-jsc: - -2017-10-01 Commit Queue - - Unreviewed, rolling out r222564. - https://bugs.webkit.org/show_bug.cgi?id=177720 - - "It regressed JetStream by 2% on iOS caused by a 50% - regression on the bigfib subtest" (Requested by saamyjoon on - #webkit). - - Reverted changeset: - - "Add Above/Below comparisons for UInt32 patterns" - https://bugs.webkit.org/show_bug.cgi?id=177281 - http://trac.webkit.org/changeset/222564 - -2017-09-29 Yusuke Suzuki - - [DFG] Support ArrayPush with multiple args - https://bugs.webkit.org/show_bug.cgi?id=175823 - - Reviewed by Saam Barati. - - * microbenchmarks/array-push-0.js: Added. - (arrayPush0): - * microbenchmarks/array-push-1.js: Added. - (arrayPush1): - * microbenchmarks/array-push-2.js: Added. - (arrayPush2): - * microbenchmarks/array-push-3.js: Added. - (arrayPush3): - * stress/array-push-multiple-contiguous.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-double-nan.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-double.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-int32.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-many-contiguous.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-many-double.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-many-int32.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-many-storage.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-storage.js: Added. - (shouldBe): - (test): - * stress/array-push-with-force-exit.js: Added. - (target.createBuiltin): - -2017-09-29 Saam Barati - - Custom GetterSetterAccessCase does not use the correct slotBase when making call - https://bugs.webkit.org/show_bug.cgi?id=177639 - - Reviewed by Geoffrey Garen. - - * stress/custom-get-set-inline-caching-one-level-up-proto-chain.js: Added. - (assert): - (Class): - (items.forEach): - (set get for): - -2017-09-29 Commit Queue - - Unreviewed, rolling out r222563, r222565, and r222581. - https://bugs.webkit.org/show_bug.cgi?id=177675 - - "It causes a crash when playing youtube videos" (Requested by - saamyjoon on #webkit). - - Reverted changesets: - - "[DFG] Support ArrayPush with multiple args" - https://bugs.webkit.org/show_bug.cgi?id=175823 - http://trac.webkit.org/changeset/222563 - - "Unreviewed, build fix after r222563" - https://bugs.webkit.org/show_bug.cgi?id=175823 - http://trac.webkit.org/changeset/222565 - - "Unreviewed, fix x86 breaking due to exhausted registers" - https://bugs.webkit.org/show_bug.cgi?id=175823 - http://trac.webkit.org/changeset/222581 - -2017-09-28 Mark Lam - - test262: Unexpected passes after r222617 and r222618. - https://bugs.webkit.org/show_bug.cgi?id=177622 - - - Reviewed by Saam Barati. - - Update test262.yaml for tests that are now passing. - - * test262.yaml: - -2017-09-27 Michael Saboff - - REGRESSION(210837): RegExp containing failed non-zero minimum greedy groups incorrectly match - https://bugs.webkit.org/show_bug.cgi?id=177570 - - Reviewed by Filip Pizlo. - - New regression test. - - * stress/regress-177570.js: Added. - -2017-09-28 Michael Saboff - - Heap out of bounds read in JSC::Yarr::Parser::peek() - https://bugs.webkit.org/show_bug.cgi?id=177423 - - Reviewed by Mark Lam. - - Updated regression test. - - * stress/regress-177423.js: - (catch): - -2017-09-27 Mark Lam - - JSArray::canFastCopy() should fail if the source and destination arrays are the same. - https://bugs.webkit.org/show_bug.cgi?id=177584 - - - Reviewed by Saam Barati. - - * stress/regress-177584.js: Added. - (assertEqual): - (Array.prototype.Symbol.species): - -2017-09-27 Saam Barati - - Propagate hasBeenFlattenedBefore in Structure's transition constructor and fix our for-in caching to fail when the prototype chain has an object with a dictionary structure - https://bugs.webkit.org/show_bug.cgi?id=177523 - - Reviewed by Mark Lam. - - * stress/prototype-chain-has-dictionary-structure-for-in-caching.js: Added. - (assert): - (Test): - (addMethods.Test.prototype.string_appeared_here.i.methodNumber): - (addMethods): - (i.Test.prototype.propName): - -2017-09-27 Mark Lam - - Yarr::Parser::tryConsumeGroupName() should check for the end of the pattern. - https://bugs.webkit.org/show_bug.cgi?id=177423 - - - Reviewed by Keith Miller. - - * stress/regress-177423.js: Added. - -2017-09-27 Yusuke Suzuki - - Add Above/Below comparisons for UInt32 patterns - https://bugs.webkit.org/show_bug.cgi?id=177281 - - Reviewed by Saam Barati. - - * stress/uint32-comparison-jump.js: Added. - (shouldBe): - (above): - (aboveOrEqual): - (below): - (belowOrEqual): - (notAbove): - (notAboveOrEqual): - (notBelow): - (notBelowOrEqual): - * stress/uint32-comparison.js: Added. - (shouldBe): - (above): - (aboveOrEqual): - (below): - (belowOrEqual): - (aboveTest): - (aboveOrEqualTest): - (belowTest): - (belowOrEqualTest): - -2017-09-25 Yusuke Suzuki - - [DFG] Support ArrayPush with multiple args - https://bugs.webkit.org/show_bug.cgi?id=175823 - - Reviewed by Saam Barati. - - * microbenchmarks/array-push-0.js: Added. - (arrayPush0): - * microbenchmarks/array-push-1.js: Added. - (arrayPush1): - * microbenchmarks/array-push-2.js: Added. - (arrayPush2): - * microbenchmarks/array-push-3.js: Added. - (arrayPush3): - * stress/array-push-multiple-contiguous.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-double-nan.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-double.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-int32.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-many-contiguous.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-many-double.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-many-int32.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-many-storage.js: Added. - (shouldBe): - (test): - * stress/array-push-multiple-storage.js: Added. - (shouldBe): - (test): - -2017-09-26 Commit Queue - - Unreviewed, rolling out r222518. - https://bugs.webkit.org/show_bug.cgi?id=177507 - - Break the High Sierra build (Requested by yusukesuzuki on - #webkit). - - Reverted changeset: - - "Add Above/Below comparisons for UInt32 patterns" - https://bugs.webkit.org/show_bug.cgi?id=177281 - http://trac.webkit.org/changeset/222518 - -2017-09-26 Yusuke Suzuki - - Add Above/Below comparisons for UInt32 patterns - https://bugs.webkit.org/show_bug.cgi?id=177281 - - Reviewed by Saam Barati. - - * stress/uint32-comparison-jump.js: Added. - (shouldBe): - (above): - (aboveOrEqual): - (below): - (belowOrEqual): - (notAbove): - (notAboveOrEqual): - (notBelow): - (notBelowOrEqual): - * stress/uint32-comparison.js: Added. - (shouldBe): - (above): - (aboveOrEqual): - (below): - (belowOrEqual): - (aboveTest): - (aboveOrEqualTest): - (belowTest): - (belowOrEqualTest): - -2017-09-23 Keith Miller - - Fix infinite looping test262 test - https://bugs.webkit.org/show_bug.cgi?id=177412 - - Reviewed by Yusuke Suzuki. - - This test was poorly designed since failing it would cause the vm - to inifinite loop. I've fixed it locally and will fix it on github pending - the results of next weeks tc39 meeting. - - * test262.yaml: - * test262/test/language/statements/for-of/iterator-next-reference.js: - -2017-09-23 Joseph Pecoraro - - test262: $.agent became $262.agent in test262 update - https://bugs.webkit.org/show_bug.cgi?id=177407 - - Reviewed by Yusuke Suzuki. - - * test262.yaml: - ~320 tests pass now that we correctly make $262 available. - -2017-09-22 Keith Miller - - Speculatively change iteration protocall to use the same next function - https://bugs.webkit.org/show_bug.cgi?id=175653 - - Reviewed by Saam Barati. - - Change test to match the new iteration behavior. - - * stress/spread-optimized-properly.js: - -2017-09-22 Yusuke Suzuki - - [DFG][FTL] Profile array vector length for array allocation - https://bugs.webkit.org/show_bug.cgi?id=177051 - - Reviewed by Saam Barati. - - * microbenchmarks/new-array-buffer-vector-profile.js: Added. - (target): - -2017-09-22 Commit Queue - - Unreviewed, rolling out r222380. - https://bugs.webkit.org/show_bug.cgi?id=177352 - - Octane/box2d shows 8% regression (Requested by yusukesuzuki on - #webkit). - - Reverted changeset: - - "[DFG][FTL] Profile array vector length for array allocation" - https://bugs.webkit.org/show_bug.cgi?id=177051 - http://trac.webkit.org/changeset/222380 - -2017-09-21 Yusuke Suzuki - - [DFG][FTL] Profile array vector length for array allocation - https://bugs.webkit.org/show_bug.cgi?id=177051 - - Reviewed by Saam Barati. - - * microbenchmarks/new-array-buffer-vector-profile.js: Added. - (target): - -2017-09-21 Joseph Pecoraro - - Skip new hanging test262 tests. - https://bugs.webkit.org/show_bug.cgi?id=177326 - - Unreviewed test gardening. - - * test262.yaml: - -2017-09-21 Ryan Haddad - - Mark 6 test262 tests as passing. - https://bugs.webkit.org/show_bug.cgi?id=177307 - - Unreviewed test gardening. - - * test262.yaml: - -2017-09-20 Joseph Pecoraro - - Unreviewed follow-up to r222311. - - * test262/harness/sta.js: - * test262/test/built-ins/Array/from/calling-from-valid-1-noStrict.js: - * test262/test/built-ins/Array/from/calling-from-valid-1-onlyStrict.js: - * test262/test/built-ins/Array/from/calling-from-valid-2.js: - * test262/test/built-ins/Array/from/elements-added-after.js: - * test262/test/built-ins/Array/from/elements-deleted-after.js: - * test262/test/built-ins/Array/from/elements-updated-after.js: - * test262/test/built-ins/Array/from/from-array.js: - * test262/test/built-ins/Array/from/mapfn-is-not-callable-typeerror.js: - * test262/test/built-ins/Array/from/mapfn-throws-exception.js: - * test262/test/built-ins/Array/from/source-array-boundary.js: - * test262/test/built-ins/Array/from/source-object-constructor.js: - * test262/test/built-ins/Array/from/source-object-iterator-1.js: - * test262/test/built-ins/Array/from/source-object-iterator-2.js: - * test262/test/built-ins/Array/from/source-object-length.js: - * test262/test/built-ins/Array/from/source-object-missing.js: - * test262/test/built-ins/Array/from/source-object-without.js: - * test262/test/built-ins/Array/from/this-null.js: - * test262/test/built-ins/Function/prototype/toString/line-terminator-normalisation-CR.js: - * test262/test/language/line-terminators/S7.3_A3.2_T1.js: - * test262/test/language/literals/numeric/7.8.3-1gs.js: - * test262/test/language/literals/numeric/7.8.3-2gs.js: - * test262/test/language/literals/numeric/7.8.3-3gs.js: - * test262/test/language/literals/regexp/7.8.5-1gs.js: - * test262/test/language/literals/string/7.8.4-1gs.js: - Fix some files that I failed to update when I applied my patch. - -2017-09-20 Joseph Pecoraro - - Update test262 tests - https://bugs.webkit.org/show_bug.cgi?id=177220 - - Reviewed by Saam Barati and Yusuke Suzuki. - - * test262.yaml: - * test262/test262-Revision.txt: - New rebaselined expectations for all tests. - - * test262/*: - Updated. - -2017-09-17 Yusuke Suzuki - - [DFG] Remove ToThis more aggressively - https://bugs.webkit.org/show_bug.cgi?id=177056 - - Reviewed by Saam Barati. - - * stress/generator-with-this-strict.js: Added. - (shouldBe): - (generator): - (target): - * stress/generator-with-this.js: Added. - (shouldBe): - (generator): - (target): - -2017-09-17 Michael Saboff - - https://bugs.webkit.org/show_bug.cgi?id=177038 - Add an option to run-jsc-stress-tests to limit tests variations to a basic set - - Reviewed by JF Bastien. - - * stress/unshiftCountSlowCase-correct-postCapacity.js: Disabled this test on ARM64 iOS devices - as it dies using too much memory. - -2017-09-15 Saam Barati - - Arity fixup during inlining should do a 2 phase commit so it properly recovers the frame in case of exit - https://bugs.webkit.org/show_bug.cgi?id=176981 - - Reviewed by Yusuke Suzuki. - - * stress/exit-during-inlined-arity-fixup-recover-proper-frame.js: Added. - (assert): - (verify): - (func): - (const.bar.createBuiltin): - -2017-09-14 Saam Barati - - It should be valid to exit before each set when doing arity fixup when inlining - https://bugs.webkit.org/show_bug.cgi?id=176948 - - Reviewed by Keith Miller. - - * stress/arity-fixup-inlining-dont-generate-invalid-use.js: Added. - (baz): - (bar): - (foo): - -2017-09-14 Yusuke Suzuki - - [JSC] Add PrivateSymbolMode::{Include,Exclude} for PropertyNameArray - https://bugs.webkit.org/show_bug.cgi?id=176867 - - Reviewed by Sam Weinig. - - * microbenchmarks/object-get-own-property-symbols.js: Added. - (test): - -2017-09-13 Mark Lam - - Rolling out r221832: Regresses Speedometer by ~4% and Dromaeo CSS YUI by ~20%. - https://bugs.webkit.org/show_bug.cgi?id=176888 - - - Not reviewed. - - * stress/op_mod-ConstVar.js: - * stress/op_mod-VarConst.js: - * stress/op_mod-VarVar.js: - -2017-09-13 Ryan Haddad - - Skip 3 op_mod tests on Debug JSC bots. - https://bugs.webkit.org/show_bug.cgi?id=176630 - - Unreviewed test gardening. - - * stress/op_mod-ConstVar.js: - * stress/op_mod-VarConst.js: - * stress/op_mod-VarVar.js: - -2017-09-13 Yusuke Suzuki - - [JSC] Fix Array allocation in Object.keys - https://bugs.webkit.org/show_bug.cgi?id=176826 - - Reviewed by Saam Barati. - - * stress/object-own-property-keys.js: Added. - (shouldBe): - -2017-09-12 Yusuke Suzuki - - [DFG] Optimize WeakMap::get by adding intrinsic and fixup - https://bugs.webkit.org/show_bug.cgi?id=176010 - - Reviewed by Filip Pizlo. - - * microbenchmarks/weak-map-key.js: Added. - (assert): - (objectKey): - (let.start.Date.now): - -2017-09-12 Mark Lam - - REGRESSION: 3 stress/op_mod (and op_div) tests timing out on Debug JSC bots. - https://bugs.webkit.org/show_bug.cgi?id=176630 - - Reviewed by JF Bastien. - - Debug builds are just slow, and these tests do a lot. They pass when I run them - locally on my MacBook Pro. So, I'm bumping their timing multiplier to 2.0x as - a speculative fix for the bots that are seeing these fail. - - I also undid the skipping of the op_mod tests for debug builds. - - * stress/op_div-ConstVar.js: - * stress/op_div-VarConst.js: - * stress/op_div-VarVar.js: - * stress/op_mod-ConstVar.js: - * stress/op_mod-VarConst.js: - * stress/op_mod-VarVar.js: - -2017-09-12 Ryan Haddad - - Skip stress/value-to-boolean.js on Debug bots. - https://bugs.webkit.org/show_bug.cgi?id=176787 - - Unreviewed test gardening. - - * stress/value-to-boolean.js: - -2017-09-11 Mark Lam - - Change test expectation for test262/test/language/statements/try/tco-catch.js - https://bugs.webkit.org/show_bug.cgi?id=176749 - - Rubber stamped by Keith Miller. - - It's been failing since at least r221821. I'm changing the test expectation to - fail to green the bots while I investigate some more. - - * test262.yaml: - -2017-09-11 Ryan Haddad - - Unreviewed, rolling out r221854. - - The test added with this change fails on 32-bit JSC bots. - - Reverted changeset: - - "[DFG] Optimize WeakMap::get by adding intrinsic and fixup" - https://bugs.webkit.org/show_bug.cgi?id=176010 - http://trac.webkit.org/changeset/221854 - -2017-09-03 Yusuke Suzuki - - [DFG] Optimize WeakMap::get by adding intrinsic and fixup - https://bugs.webkit.org/show_bug.cgi?id=176010 - - Reviewed by Filip Pizlo. - - * microbenchmarks/weak-map-key.js: Added. - (assert): - (objectKey): - (let.start.Date.now): - -2017-09-09 Yusuke Suzuki - - [JSC] Optimize Object.keys by using careful array allocation - https://bugs.webkit.org/show_bug.cgi?id=176654 - - Reviewed by Darin Adler. - - * microbenchmarks/object-keys.js: Added. - (test): - -2017-09-09 Filip Pizlo - - Error should compute .stack and friends lazily - https://bugs.webkit.org/show_bug.cgi?id=176645 - - Reviewed by Saam Barati. - - * ChakraCore.yaml: Skip test that was testing non-standard behavior of these fields. - * microbenchmarks/new-error.js: Added. - * microbenchmarks/throw.js: Added. - -2017-09-09 Mark Lam - - [Re-landing] Use JIT probes for DFG OSR exit. - https://bugs.webkit.org/show_bug.cgi?id=175144 - - - Not reviewed. Original patch reviewed by Saam Barati. - - Disable these tests for debug builds because they run too slow with the new OSR exit. - - * stress/op_mod-ConstVar.js: - * stress/op_mod-VarConst.js: - * stress/op_mod-VarVar.js: - -2017-09-08 Yusuke Suzuki - - [DFG] NewArrayWithSize(size)'s size does not care negative zero - https://bugs.webkit.org/show_bug.cgi?id=176300 - - Reviewed by Saam Barati. - - * stress/new-array-with-size-div.js: Added. - (shouldBe): - (test): - (i.i): - -2017-09-08 Yusuke Suzuki - - [DFG] PutByVal with Array::Generic is too generic - https://bugs.webkit.org/show_bug.cgi?id=176345 - - Reviewed by Filip Pizlo. - - * stress/object-assign-symbols.js: Added. - (shouldBe): - (test): - * stress/object-assign.js: Added. - (shouldBe): - (test): - (i.shouldBe.JSON.stringify.test): - -2017-09-08 Yusuke Suzuki - - [DFG][FTL] GetByVal(ObjectUse with Array::Generic, StringUse/SymbolUse) should be supported - https://bugs.webkit.org/show_bug.cgi?id=176590 - - Reviewed by Saam Barati. - - * microbenchmarks/object-iterate-symbols.js: Added. - (test): - * microbenchmarks/object-iterate.js: Added. - (test): - * stress/object-iterate-symbols.js: Added. - (shouldBe): - (test): - * stress/object-iterate.js: Added. - (shouldBe): - (test): - -2017-09-07 Per Arne Vollan - - [Win32] 10 JSC stress tests are failing. - https://bugs.webkit.org/show_bug.cgi?id=176538 - - Reviewed by Mark Lam. - - Skip tests on Windows to make the bots green. - - * ChakraCore.yaml: - * stress/date-relaxed.js: - -2017-09-06 Mark Lam - - constructGenericTypedArrayViewWithArguments() is missing an exception check. - https://bugs.webkit.org/show_bug.cgi?id=176485 - - - Reviewed by Keith Miller. - - * stress/regress-176485.js: Added. - -2017-09-05 Saam Barati - - isNotCellSpeculation is wrong with respect to SpecEmpty - https://bugs.webkit.org/show_bug.cgi?id=176429 - - Reviewed by Michael Saboff. - - * microbenchmarks/is-not-cell-speculation-for-empty-value.js: Added. - (Foo): - -2017-09-05 Joseph Pecoraro - - test262: Completion values for control flow do not match the spec - https://bugs.webkit.org/show_bug.cgi?id=171265 - - Reviewed by Saam Barati. - - * stress/completion-value.js: - Condensed test for completion values in top level statements. - - * stress/super-get-by-id.js: - ClassDeclaration when evaled no longer produce values. Convert - these to ClassExpressions so they produce the class value. - - * ChakraCore/test/GlobalFunctions/evalreturns3.baseline-jsc: - This is a progression for currect spec behavior. - - * mozilla/mozilla-tests.yaml: - This test is now outdated, so mark it as failing for that reason. - - * test262.yaml: - Passing all "cptn" completion value tests. - -2017-09-04 Saam Barati - - typeCheckHoistingPhase may emit a CheckStructure on the empty value which leads to a dereference of zero on 64 bit platforms - https://bugs.webkit.org/show_bug.cgi?id=176317 - - Reviewed by Keith Miller. - - * stress/dont-crash-when-hoist-check-structure-on-tdz.js: Added. - (Foo): - -2017-09-03 Yusuke Suzuki - - [DFG][FTL] Efficiently execute number#toString() - https://bugs.webkit.org/show_bug.cgi?id=170007 - - Reviewed by Keith Miller. - - * microbenchmarks/number-to-string-strength-reduction.js: Added. - (test): - * microbenchmarks/number-to-string-with-radix-10.js: Added. - (test): - * microbenchmarks/number-to-string-with-radix-cse.js: Added. - (test): - * microbenchmarks/number-to-string-with-radix.js: Added. - (test): - * stress/number-to-string-strength-reduction.js: Added. - (shouldBe): - (test): - * stress/number-to-string-with-radix-10.js: Added. - (shouldBe): - (test): - * stress/number-to-string-with-radix-cse.js: Added. - (shouldBe): - (test): - * stress/number-to-string-with-radix-invalid.js: Added. - (shouldThrow): - * stress/number-to-string-with-radix-watchpoint.js: Added. - (shouldBe): - (test): - (i.i.1e3.Number.prototype.toString): - * stress/number-to-string-with-radix.js: Added. - (shouldBe): - (test): - -2017-09-02 Yusuke Suzuki - - [DFG] Relax arity requirement - https://bugs.webkit.org/show_bug.cgi?id=175523 - - Reviewed by Saam Barati. - - * stress/arity-mismatch-arguments-length.js: Added. - (shouldBe): - (test1): - (test): - * stress/arity-mismatch-get-argument.js: Added. - (shouldBe): - (builtin.createBuiltin): - (test): - * stress/arity-mismatch-inlining-extra-slots.js: Added. - (shouldBe): - (inlineTarget): - (test): - * stress/arity-mismatch-inlining.js: Added. - (shouldBe): - (inlineTarget): - (test): - * stress/arity-mismatch-rest.js: Added. - (shouldBe): - (test2): - (test1): - (test): - -2017-08-31 Yusuke Suzuki - - [JSC] Fix "name" and "length" of Proxy revoke function - https://bugs.webkit.org/show_bug.cgi?id=176155 - - Reviewed by Mark Lam. - - * test262.yaml: - -2017-08-31 Saam Barati - - Graph::methodOfGettingAValueProfileFor compares NodeOrigin instead of the semantic CodeOrigin - https://bugs.webkit.org/show_bug.cgi?id=176206 - - Reviewed by Keith Miller. - - * stress/compare-semantic-origin-op-negate-method-of-getting-a-value-profile.js: Added. - (a): - (b): - (foo): - -2017-08-31 Ryan Haddad - - Skip two slow JSC tests after r221422. - - Unreviewed test gardening. - - * stress/regexp-prototype-match-on-too-long-rope.js: - * stress/regexp-prototype-test-on-too-long-rope.js: - -2017-08-31 Filip Pizlo - - Unreviewed, skipping slow tests. - - These tests are now timing out. They would have always been slow. The timeouts are probably because OOMs - work differently now. - - * stress/regexp-prototype-exec-on-too-long-rope.js: - * stress/string-prototype-charCodeAt-on-too-long-rope.js: - -2017-08-31 Yusuke Suzuki - - [JSC] Use reifying system for "name" property of builtin JSFunction - https://bugs.webkit.org/show_bug.cgi?id=175260 - - Reviewed by Saam Barati. - - * stress/accessors-get-set-prefix.js: - * stress/builtin-function-name.js: Added. - (shouldBe): - (shouldThrow): - (shouldBe.JSON.stringify.Object.getOwnPropertyDescriptor): - (shouldBe.JSON.stringify.Object.getOwnPropertyNames.Array.prototype.filter.sort): - * stress/private-name-as-anonymous-builtin.js: Added. - (shouldBe): - (NotPromise): - -2017-08-30 Saam Barati - - Unreviewed. Make test stop printing. - - * microbenchmarks/fake-iterators-that-throw-when-finished.js: - -2017-08-30 Ryan Haddad - - Unreviewed, rolling out r221327. - - This change caused test262 failures. - - Reverted changeset: - - "[JSC] Use reifying system for "name" property of builtin - JSFunction" - https://bugs.webkit.org/show_bug.cgi?id=175260 - http://trac.webkit.org/changeset/221327 - -2017-08-30 Saam Barati - - semicolon is being interpreted as an = in the LiteralParser - https://bugs.webkit.org/show_bug.cgi?id=176114 - - Reviewed by Oliver Hunt. - - * stress/jsonp-literal-parser-semicolon-is-not-assignment.js: Added. - * stress/resources/literal-parser-test-case.js: Added. - -2017-08-30 Oleksandr Skachkov - - [ESNext] Async iteration - Implement async iteration statement: for-await-of - https://bugs.webkit.org/show_bug.cgi?id=166698 - - Reviewed by Yusuke Suzuki. - - * stress/async-iteration-for-await-of-syntax.js: Added. - (assert): - (checkSyntax): - (checkSyntaxError): - (checkSimpleAsyncGeneratorSloppyMode): - (checkSimpleAsyncGeneratorStrictMode): - (checkNestedAsyncGenerators): - (checkSimpleAsyncGeneratorSyntaxErrorInStrictMode): - * stress/async-iteration-for-await-of.js: Added. - (assert): - (async.foo): - (async.boo): - (const.boo.async): - -2017-08-29 Yusuke Suzuki - - [JSC] Use reifying system for "name" property of builtin JSFunction - https://bugs.webkit.org/show_bug.cgi?id=175260 - - Reviewed by Saam Barati. - - * stress/accessors-get-set-prefix.js: - * stress/builtin-function-name.js: Added. - (shouldBe): - (shouldThrow): - (shouldBe.JSON.stringify.Object.getOwnPropertyDescriptor): - (shouldBe.JSON.stringify.Object.getOwnPropertyNames.Array.prototype.filter.sort): - -2017-08-25 Saam Barati - - Support compiling catch in the DFG - https://bugs.webkit.org/show_bug.cgi?id=174590 - - - Reviewed by Filip Pizlo. - - * microbenchmarks/delta-blue-try-catch.js: Added. - (exception): - (value): - (OrderedCollection): - (OrderedCollection.prototype.add): - (OrderedCollection.prototype.at): - (OrderedCollection.prototype.size): - (OrderedCollection.prototype.removeFirst): - (OrderedCollection.prototype.remove): - (Strength): - (Strength.stronger): - (Strength.weaker): - (Strength.weakestOf): - (Strength.strongest): - (Strength.prototype.nextWeaker): - (Constraint): - (Constraint.prototype.addConstraint): - (Constraint.prototype.satisfy): - (Constraint.prototype.destroyConstraint): - (Constraint.prototype.isInput): - (UnaryConstraint): - (UnaryConstraint.prototype.addToGraph): - (UnaryConstraint.prototype.chooseMethod): - (UnaryConstraint.prototype.isSatisfied): - (UnaryConstraint.prototype.markInputs): - (UnaryConstraint.prototype.output): - (UnaryConstraint.prototype.recalculate): - (UnaryConstraint.prototype.markUnsatisfied): - (UnaryConstraint.prototype.inputsKnown): - (UnaryConstraint.prototype.removeFromGraph): - (StayConstraint): - (StayConstraint.prototype.execute): - (EditConstraint.prototype.isInput): - (EditConstraint.prototype.execute): - (BinaryConstraint): - (BinaryConstraint.prototype.chooseMethod): - (BinaryConstraint.prototype.addToGraph): - (BinaryConstraint.prototype.isSatisfied): - (BinaryConstraint.prototype.markInputs): - (BinaryConstraint.prototype.input): - (BinaryConstraint.prototype.output): - (BinaryConstraint.prototype.recalculate): - (BinaryConstraint.prototype.markUnsatisfied): - (BinaryConstraint.prototype.inputsKnown): - (BinaryConstraint.prototype.removeFromGraph): - (ScaleConstraint): - (ScaleConstraint.prototype.addToGraph): - (ScaleConstraint.prototype.removeFromGraph): - (ScaleConstraint.prototype.markInputs): - (ScaleConstraint.prototype.execute): - (ScaleConstraint.prototype.recalculate): - (EqualityConstraint): - (EqualityConstraint.prototype.execute): - (Variable): - (Variable.prototype.addConstraint): - (Variable.prototype.removeConstraint): - (Planner): - (Planner.prototype.incrementalAdd): - (Planner.prototype.incrementalRemove): - (Planner.prototype.newMark): - (Planner.prototype.makePlan): - (Planner.prototype.extractPlanFromConstraints): - (Planner.prototype.addPropagate): - (Planner.prototype.removePropagateFrom): - (Planner.prototype.addConstraintsConsumingTo): - (Plan): - (Plan.prototype.addConstraint): - (Plan.prototype.size): - (Plan.prototype.constraintAt): - (Plan.prototype.execute): - (chainTest): - (projectionTest): - (change): - (deltaBlue): - * microbenchmarks/fake-iterators-that-throw-when-finished.js: Added. - (assert): - (Numbers): - (Numbers.prototype.next): - (return.Transpose): - (return.Transpose.prototype.next): - (transpose): - (verifyEven): - (verifyString): - (foo): - (runIterators): - * microbenchmarks/try-catch-word-count.js: Added. - (let.assert): - (EOF): - (let.texts): - (let.o.apply): - (foo): - (bar): - (f): - (run): - (test1): - (test2): - (test3): - (fn): - (A): - (B): - (A.prototype.getValue): - (B.prototype.getParentValue): - (strlen): - (sum.0): - (test): - (result.test.o): - (set add.set add): - (set forEach): - (stringHash): - (set if): - (testFunction): - (set delete.set has.set add): - * stress/catch-set-argument-speculation-failure.js: Added. - (o): - (e): - (e2): - (escape): - (baz): - (noInline.run): - (noInline): - * stress/osr-enter-to-catch-with-set-local-type-check-failure.js: Added. - (foo): - (e): - (baz): - (bar): - -2017-08-24 Commit Queue - - Unreviewed, rolling out r221119, r221124, and r221143. - https://bugs.webkit.org/show_bug.cgi?id=175973 - - "I think it regressed JSBench by 20%" (Requested by saamyjoon - on #webkit). - - Reverted changesets: - - "Support compiling catch in the DFG" - https://bugs.webkit.org/show_bug.cgi?id=174590 - http://trac.webkit.org/changeset/221119 - - "Unreviewed, build fix in GTK port" - https://bugs.webkit.org/show_bug.cgi?id=174590 - http://trac.webkit.org/changeset/221124 - - "DFG::JITCode::osrEntry should get sorted since we perform a - binary search on it" - https://bugs.webkit.org/show_bug.cgi?id=175893 - http://trac.webkit.org/changeset/221143 - -2017-08-24 Michael Saboff - - Add support for RegExp "dotAll" flag - https://bugs.webkit.org/show_bug.cgi?id=175924 - - Reviewed by Keith Miller. - - Updated tests for new dotAll ('s' flag) changes. - - * es6/Proxy_internal_get_calls_RegExp.prototype.flags.js: - * stress/static-getter-in-names.js: - -2017-08-24 Mark Lam - - Land regression test for https://bugs.webkit.org/show_bug.cgi?id=164081. - https://bugs.webkit.org/show_bug.cgi?id=175940 - - - Reviewed by Saam Barati. - - * stress/regress-164081.js: Added. - (shouldEqual): - (testcase): - -2017-08-24 Ryan Haddad - - Skip flaky JSC test stress/test-finally.js. - https://bugs.webkit.org/show_bug.cgi?id=160283 - - Unreviewed test gardening. - - * stress/test-finally.js: - -2017-08-23 Saam Barati - - Support compiling catch in the DFG - https://bugs.webkit.org/show_bug.cgi?id=174590 - - Reviewed by Filip Pizlo. - - * microbenchmarks/delta-blue-try-catch.js: Added. - (exception): - (value): - (OrderedCollection): - (OrderedCollection.prototype.add): - (OrderedCollection.prototype.at): - (OrderedCollection.prototype.size): - (OrderedCollection.prototype.removeFirst): - (OrderedCollection.prototype.remove): - (Strength): - (Strength.stronger): - (Strength.weaker): - (Strength.weakestOf): - (Strength.strongest): - (Strength.prototype.nextWeaker): - (Constraint): - (Constraint.prototype.addConstraint): - (Constraint.prototype.satisfy): - (Constraint.prototype.destroyConstraint): - (Constraint.prototype.isInput): - (UnaryConstraint): - (UnaryConstraint.prototype.addToGraph): - (UnaryConstraint.prototype.chooseMethod): - (UnaryConstraint.prototype.isSatisfied): - (UnaryConstraint.prototype.markInputs): - (UnaryConstraint.prototype.output): - (UnaryConstraint.prototype.recalculate): - (UnaryConstraint.prototype.markUnsatisfied): - (UnaryConstraint.prototype.inputsKnown): - (UnaryConstraint.prototype.removeFromGraph): - (StayConstraint): - (StayConstraint.prototype.execute): - (EditConstraint.prototype.isInput): - (EditConstraint.prototype.execute): - (BinaryConstraint): - (BinaryConstraint.prototype.chooseMethod): - (BinaryConstraint.prototype.addToGraph): - (BinaryConstraint.prototype.isSatisfied): - (BinaryConstraint.prototype.markInputs): - (BinaryConstraint.prototype.input): - (BinaryConstraint.prototype.output): - (BinaryConstraint.prototype.recalculate): - (BinaryConstraint.prototype.markUnsatisfied): - (BinaryConstraint.prototype.inputsKnown): - (BinaryConstraint.prototype.removeFromGraph): - (ScaleConstraint): - (ScaleConstraint.prototype.addToGraph): - (ScaleConstraint.prototype.removeFromGraph): - (ScaleConstraint.prototype.markInputs): - (ScaleConstraint.prototype.execute): - (ScaleConstraint.prototype.recalculate): - (EqualityConstraint): - (EqualityConstraint.prototype.execute): - (Variable): - (Variable.prototype.addConstraint): - (Variable.prototype.removeConstraint): - (Planner): - (Planner.prototype.incrementalAdd): - (Planner.prototype.incrementalRemove): - (Planner.prototype.newMark): - (Planner.prototype.makePlan): - (Planner.prototype.extractPlanFromConstraints): - (Planner.prototype.addPropagate): - (Planner.prototype.removePropagateFrom): - (Planner.prototype.addConstraintsConsumingTo): - (Plan): - (Plan.prototype.addConstraint): - (Plan.prototype.size): - (Plan.prototype.constraintAt): - (Plan.prototype.execute): - (chainTest): - (projectionTest): - (change): - (deltaBlue): - * microbenchmarks/fake-iterators-that-throw-when-finished.js: Added. - (assert): - (Numbers): - (Numbers.prototype.next): - (return.Transpose): - (return.Transpose.prototype.next): - (transpose): - (verifyEven): - (verifyString): - (foo): - (runIterators): - * microbenchmarks/try-catch-word-count.js: Added. - (let.assert): - (EOF): - (let.texts): - (let.o.apply): - (foo): - (bar): - (f): - (run): - (test1): - (test2): - (test3): - (fn): - (A): - (B): - (A.prototype.getValue): - (B.prototype.getParentValue): - (strlen): - (sum.0): - (test): - (result.test.o): - (set add.set add): - (set forEach): - (stringHash): - (set if): - (testFunction): - (set delete.set has.set add): - * stress/catch-set-argument-speculation-failure.js: Added. - (o): - (e): - (e2): - (escape): - (baz): - (noInline.run): - (noInline): - * stress/osr-enter-to-catch-with-set-local-type-check-failure.js: Added. - (foo): - (e): - (baz): - (bar): - -2017-08-23 Yusuke Suzuki - - [JSC] Optimize Map iteration with intrinsic - https://bugs.webkit.org/show_bug.cgi?id=174355 - - Reviewed by Saam Barati. - - * stress/map-iterator-result-should-have-expected-shape.js: Added. - (shouldBe): - (throw.new.Error): - * stress/set-iterator-result-should-have-expected-shape.js: Added. - (shouldBe): - (throw.new.Error.let.iterator.set Symbol): - (throw.new.Error.set add): - (let.iterator.set Symbol): - -2017-08-23 Robin Morisset - - Add a micro-benchmark for checking that accessing a variable within a 'with' - block does not automatically prevent type prediction. - https://bugs.webkit.org/show_bug.cgi?id=175738 - - Reviewed by Saam Barati. - - * stress/with_and_arith.js: Added. - (with): - -2017-08-23 Skachkov Oleksandr - - [ESNext] Async iteration - Implement Async Generator - runtime - https://bugs.webkit.org/show_bug.cgi?id=175240 - - Reviewed by Yusuke Suzuki. - - * stress/async-iteration-async-from-sync.js: Added. - (assert): - (const.Logger): - (this.fullfilled): - (this.fullfilledDone): - (this.rejected): - (this.catched): - (this.isFinal): - (_assertLogger): - (const.assertLogger): - (const.getPromise.promiseHolder.return.new.Promise): - (foo): - (async.boo): - (bar): - (async.baz): - (async.goo): - * stress/async-iteration-basic.js: Added. - (assert): - (const.Logger): - (this.fullfilled): - (this.fullfilledDone): - (this.rejected): - (this.catched): - (this.isFinal): - (_assertLogger): - (const.assertLogger): - (const.getPromise.promiseHolder.return.new.Promise): - (async.generator): - (iterator.next.then): - (async.baz): - (async.boo): - (async.foo): - (async.goo): - (A.prototype.async.foo): - (A.prototype.async.boo): - (A): - (asyncGenExp.async): - (async.joo): - (j.next.then): - (then): - (async.koo): - (async.loo): - (async.moo): - (async.noo): - (async.ooo): - (async.roo): - (async.poo): - (async.soo): - (async.too): - * stress/async-iteration-evaluation.js: Added. - (assert): - (async.foo): - (catch): - * stress/async-iteration-syntax.js: - * stress/async-iteration-yield-promise.js: Added. - (assert): - (const.Logger): - (this.fullfilled): - (this.fullfilledDone): - (this.rejected): - (this.catched): - (this.isFinal): - (_assertLogger): - (const.assertLogger): - (const.getPromise.promiseHolder.return.new.Promise): - (async.foo): - (async.boo): - (async.bar): - * stress/async-iteration-yield-star-interface.js: Added. - (assert): - (const.getPromise.promiseHolder.return.new.Promise): - (const.Logger): - (this.fullfilled): - (this.fullfilledDone): - (this.rejected): - (this.catched): - (this.custom): - (this.isFinal): - (_assertLogger): - (const.assertLogger): - (let.asyncIter.Symbol.asyncIterator): - (let.asyncIter.next): - (let.asyncIter.throw): - (let.asyncIter.return): - (async.foo): - (asyncIter.Symbol.asyncIterator): - (asyncIter.next): - (async.boo): - (asyncIter.return): - (async.bar): - (async.baz): - (async.foobar): - * stress/async-iteration-yield-star.js: Added. - (assert): - (const.Logger): - (this.fullfilled): - (this.fullfilledDone): - (this.rejected): - (this.catched): - (this.custom): - (this.isFinal): - (_assertLogger): - (const.assertLogger): - (const.getPromise.promiseHolder.return.new.Promise): - (async.foo): - (async.boo): - (async.bar): - (async.baz): - (async.joo): - (async.goo): - (async.koo): - (async.loo): - (let.asyncIter.Symbol.asyncIterator): - (let.asyncIter.next): - (let.asyncIter.throw): - (let.asyncIter.return): - (async.moo): - (async.noo): - * test262.yaml: - -2017-08-23 JF Bastien - - Fix printing in test - - Unreviewed: fixing verbosity, shouldn't have been there. - - * wasm/regress/175693.js: - (else.else): - (catch): - -2017-08-18 Ryan Haddad - - Skip flaky JSC test microbenchmarks/generator-with-several-types.js. - https://bugs.webkit.org/show_bug.cgi?id=172543 - - Unreviewed test gardening. - - * microbenchmarks/generator-with-several-types.js: - -2017-08-17 JF Bastien - - WebAssembly: const in unreachable code decoded incorrectly, erroneously rejects binary as invalid - https://bugs.webkit.org/show_bug.cgi?id=175693 - - - Reviewed by Saam Barati. - - Add a regression directory for WebAssembly tests. - - * wasm.yaml: - * wasm/regress/175693.js: Added. - (else.else): - (instance.new.WebAssembly.Instance.new.WebAssembly.Module): - (catch): - * wasm/regress/175693.wasm: Added. - -2017-08-15 Robin Morisset - - Support the 'with' keyword in FTL. - https://bugs.webkit.org/show_bug.cgi?id=175585 - - Reviewed by Saam Barati. - - Also improve the JSTest/stress/with.js file to test - what happens when non-objects are passed to with. - - * stress/with.js: - (foo): - (i.catch): - (i.with): Deleted. - -2017-08-14 Keith Miller - - Add testing tool to lie to the DFG about profiles - https://bugs.webkit.org/show_bug.cgi?id=175487 - - Reviewed by Saam Barati. - - * stress/compare-eq-incomplete-profile.js: Added. - (const.test.createBuiltin): - -2017-08-14 Robin Morisset - - Support the with keyword in DFG - https://bugs.webkit.org/show_bug.cgi?id=175470 - - Reviewed by Saam Barati. - - Added a new stress-test for the 'with' keyword, that caught a bug in a - previous version of this code. - - * stress/with.js: Added. - (i.with): - -2017-08-14 Ryan Haddad - - Skip flaky JSC test test/fieldopts/objtypespec-newobj-invalidation.1.js - https://bugs.webkit.org/show_bug.cgi?id=175544 - - Unreviewed test gardening. - - * ChakraCore.yaml: - -2017-08-09 Caitlin Potter - - Early error on ANY operator before new.target - https://bugs.webkit.org/show_bug.cgi?id=157970 - - Reviewed by Saam Barati. - - Instead of throwing if any unary operator precedes new.target, only - throw if the unary operator updates the reference. - - The following become legal in JSC: - - ``` - !new.target - ~new.target - typeof new.target - delete new.target - void new.target - ``` - - All of which are legal in v8 and SpiderMonkey in strict and sloppy mode - - * stress/new-target-syntax-errors.js: - * stress/new-target.js: - -2017-08-09 Ryan Haddad - - Skip failing JSC tests stress/regress-169783.js and wasm.yaml/wasm/stress/oom.js. - https://bugs.webkit.org/show_bug.cgi?id=175255 - - Unreviewed test gardening. - - * stress/regress-169783.js: - * wasm/stress/oom.js: - -2017-08-09 Oleksandr Skachkov - - REGRESSION: 2 test262/test/language/statements/async-function failures - https://bugs.webkit.org/show_bug.cgi?id=175334 - - Reviewed by Yusuke Suzuki. - - Add @skip parameters to tests, and remove test for async iterator from - async await syntax test because it is already covered by async-iterator-syntax.js - - * stress/async-await-syntax.js: - * stress/async-iteration-syntax.js: - -2017-08-08 Yusuke Suzuki - - Unreviewed, gardening test262 for Promise resolve / reject function length - https://bugs.webkit.org/show_bug.cgi?id=175333 - - * test262.yaml: - -2017-08-07 Robin Morisset - - GetOwnProperty of TypedArray indexed fields is wrongly configurable - https://bugs.webkit.org/show_bug.cgi?id=175307 - - Reviewed by Saam Barati. - - * stress/typedarray-getownproperty-not-configurable.js: Added. - (assert): - (foo): - -2017-08-06 Yusuke Suzuki - - Promise resolve and reject function should have length = 1 - https://bugs.webkit.org/show_bug.cgi?id=175242 - - Reviewed by Saam Barati. - - * stress/builtin-function-length.js: Added. - (shouldBe): - (shouldThrow): - (shouldBe.JSON.stringify.Object.getOwnPropertyDescriptor): - (shouldBe.JSON.stringify.Object.getOwnPropertyNames.Array.prototype.filter.sort): - -2017-08-06 Oleksandr Skachkov - - [ESNext] Async iteration - Implement Async Generator - parser - https://bugs.webkit.org/show_bug.cgi?id=175210 - - Reviewed by Yusuke Suzuki. - - * stress/async-await-syntax.js: - (testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntax): - * stress/async-iteration-syntax.js: Added. - (assert): - (checkSyntax): - (checkSyntaxError): - (checkSimpleAsyncGeneratorSloppyMode): - (checkSimpleAsyncGeneratorStrictMode): - (checkNestedAsyncGenerators): - (checkSimpleAsyncGeneratorSyntaxErrorInStrictMode): - * stress/generator-class-methods-syntax.js: - -2017-08-03 Carlos Alberto Lopez Perez - - JSC test wasm/js-api/test_memory_constructor.js should be skipped on memoryLimited - https://bugs.webkit.org/show_bug.cgi?id=175150 - - Unreviewed test gardening. - - * wasm/js-api/test_memory_constructor.js: - -2017-08-02 Carlos Alberto Lopez Perez - - [Linux] JSTests/wasm/stress/oom.js should not run on Linux - https://bugs.webkit.org/show_bug.cgi?id=175100 - - Reviewed by Mark Lam. - - The JSC test JSTests/wasm/stress/oom.js tries to use all the - available memory until an out of memory exception happens. - - The Linux kernel is more tuned for server workloads than for GUI - responsiveness. When a process tries to use a lot of memory, Linux - will do its best to serve the request. This usually translates to - free physical RAM by writing to disk dirty pages and/or moving out - less recently used pages to swap (disk storage). - Meanwhile it does this, the system will become unresponsive and this - leads to freezes that can last even some minutes on the worst cases. - - Therefore, let's skip this test on Linux as it will cause more harm - than good on the Linux bots or on the machines of Linux developers. - - * wasm/stress/oom.js: - -2017-08-01 Oleksandr Skachkov - - [JSC] Remove unnecessary print from stress\promise-finally.js test - https://bugs.webkit.org/show_bug.cgi?id=175015 - - Reviewed by Yusuke Suzuki. - - * stress/promise-finally.js: - (p.finally): - (then): - -2017-07-31 Yusuke Suzuki - - Unreviewed, update test262 results for optional catch binding - - * test262.yaml: - -2017-07-31 Yusuke Suzuki - - [JSC] Support optional catch binding - https://bugs.webkit.org/show_bug.cgi?id=174981 - - Reviewed by Saam Barati. - - * stress/optional-catch-binding-syntax.js: Added. - (testSyntax): - (testSyntaxError): - (catch.catch): - * stress/optional-catch-binding.js: Added. - (shouldBe): - (throwException): - -2017-07-28 Mark Lam - - ObjectToStringAdaptiveStructureWatchpoint should not fire if it's dying imminently. - https://bugs.webkit.org/show_bug.cgi?id=174948 - - - Reviewed by Filip Pizlo. - - * stress/regress-174948.js: Added. - -2017-07-28 Yusuke Suzuki - - ASSERTION FAILED: candidate->op() == PhantomCreateRest || candidate->op() == PhantomDirectArguments || candidate->op() == PhantomClonedArguments || candidate->op() == PhantomSpread || candidate->op() == PhantomNewArrayWithSpread - https://bugs.webkit.org/show_bug.cgi?id=174900 - - Reviewed by Saam Barati. - - * stress/arguments-elimination-candidate-listings-should-respect-pseudo-terminals.js: Added. - (sideEffect): - (args): - (test): - -2017-07-27 Yusuke Suzuki - - Hoist DOM binding attribute getter prologue into JavaScriptCore taking advantage of DOMJIT / CheckSubClass - https://bugs.webkit.org/show_bug.cgi?id=171637 - - Reviewed by Darin Adler. - - * stress/domjit-getter-complex-with-incorrect-object.js: - (i.shouldThrow): - * stress/domjit-getter-type-check.js: Copied from JSTests/stress/domjit-getter-complex-with-incorrect-object.js. - (shouldBe): - (i.shouldThrow): - -2017-07-26 JF Bastien - - WebAssembly: test throwing out of the start function - https://bugs.webkit.org/show_bug.cgi?id=165714 - - - Reviewed by Keith Miller. - - * wasm/assert.js: - * wasm/function-tests/trap-from-start.js: Added. - (StartTraps): - * wasm/function-tests/trap-from-start-async.js: Added. - (async.StartTrapsAsync): - -2017-07-21 Yusuke Suzuki - - [FTL] Arguments elimination is suppressed by unreachable blocks - https://bugs.webkit.org/show_bug.cgi?id=174352 - - Reviewed by Filip Pizlo. - - * stress/arguments-elimination-force-exit.js: Added. - (shouldBe): - (strict): - (sloppy): - * stress/arguments-elimination-throw.js: Added. - (shouldBe): - (shouldThrow): - (sloppy): - (isArguments): - -2017-07-13 Mark Lam - - Add some additional test cases for bug 170896. - https://bugs.webkit.org/show_bug.cgi?id=174491 - - Reviewed by Filip Pizlo. - - * stress/regress-170896-with-contiguous-shape-profile.js: Copied from JSTests/stress/regress-170896.js. - * stress/regress-170896-with-double-shape-profile.js: Added. - (test): - * stress/regress-170896-with-int32-shape-profile.js: Added. - (test): - * stress/regress-170896.js: Removed. - -2017-07-13 Saam Barati - - Missing exception check in JSObject::hasInstance - https://bugs.webkit.org/show_bug.cgi?id=174455 - - - Reviewed by Mark Lam. - - * stress/has-instance-exception-check.js: Added. - (assert): - (let.getter.Object.getOwnPropertyDescriptor.get foo): - -2017-07-13 Caio Lima - - [ESnext] Implement Object Spread - https://bugs.webkit.org/show_bug.cgi?id=167963 - - Reviewed by Saam Barati. - - * stress/obj-rest-destructuring-order.js: Added. - (assert): - (o.get z): - (o.get a): - * stress/obj-spread-order.js: Added. - (assert): - (o.get z): - (o.get a): - * stress/object-spread.js: Added. - (let.assert): - (assert.sameValue): - (let.o.get a): - (let.obj.get c): - (cthulhu.get x): - (let.obj.set c): - (calls.o.get z): - (calls.o.get a): - (try.let.obj.get foo): - (get calls): - -2017-07-12 Saam Barati - - GenericArguments consults the wrong state when tracking modified argument descriptors and mapped arguments - https://bugs.webkit.org/show_bug.cgi?id=174411 - - - Reviewed by Mark Lam. - - * stress/generic-arguments-correct-delete-behavior.js: Added. - (assert): - (makeTest): - -2017-07-07 Mark Lam - - \n\r is not the same as \r\n. - https://bugs.webkit.org/show_bug.cgi?id=173053 - - Reviewed by Keith Miller. - - * stress/regress-173053.js: Added. - * stress/template-literal-line-terminators.js: - -2017-07-06 Saam Barati - - We are missing places where we invalidate the for-in context - https://bugs.webkit.org/show_bug.cgi?id=174184 - - Reviewed by Geoffrey Garen. - - * stress/for-in-invalidate-context-weird-assignments.js: Added. - (assert): - (test): - -2017-07-05 Saam Barati - - NewArray in FTLLowerDFGToB3 does not handle speculating on doubles when having a bad time - https://bugs.webkit.org/show_bug.cgi?id=174188 - - - Reviewed by Mark Lam. - - * stress/new-array-having-a-bad-time-double.js: Added. - (assert): - (foo): - -2017-07-05 Yusuke Suzuki - - WTF::StringImpl::copyChars segfaults when built with GCC 7 - https://bugs.webkit.org/show_bug.cgi?id=173407 - - Reviewed by Andreas Kling. - - * stress/string-repeat-copy-chars-crash.js: Added. - (shouldBe): - -2017-07-03 Saam Barati - - Skip unshiftCountSlowCase-correct-postCapacity.js on debug builds since it takes a long time to run. - - * stress/unshiftCountSlowCase-correct-postCapacity.js: - -2017-07-03 Yusuke Suzuki - - Unreviewed, annotate dont--reserve-huge-capacity-lexer.js with $memoryLimited - - It requires too much memory. - - * stress/dont-reserve-huge-capacity-lexer.js: - -2017-06-30 Michael Saboff - - Skip a test on ARM64 platform since we run out of address space. - - Rubber stamped by Saam Barati. - - * stress/dont-reserve-huge-capacity-lexer.js: - -2017-06-30 Michael Saboff - - RegExp's anchored with .* with \g flag can return wrong match start for strings with multiple matches - https://bugs.webkit.org/show_bug.cgi?id=174044 - - Reviewed by Oliver Hunt. - - New regression test. - - * stress/regress-174044.js: Added. - (test1): - (test2): - -2017-06-30 Filip Pizlo - - RegExpCachedResult::setInput should reify left and right contexts - https://bugs.webkit.org/show_bug.cgi?id=173818 - - Reviewed by Keith Miller. - - * stress/right-left-context-invalidated-by-input.js: Added. - (test.validateContexts): - (test): - -2017-06-29 Saam Barati - - Calculating postCapacity in unshiftCountSlowCase is wrong - https://bugs.webkit.org/show_bug.cgi?id=173992 - - - Reviewed by Keith Miller. - - * stress/unshiftCountSlowCase-correct-postCapacity.js: Added. - (temp): - -2017-06-29 Commit Queue - - Unreviewed, rolling out r218512. - https://bugs.webkit.org/show_bug.cgi?id=173981 - - "It changes the behavior of the JS API's JSEvaluateScript - which breaks TurboTax" (Requested by saamyjoon on #webkit). - - Reverted changeset: - - "test262: Completion values for control flow do not match the - spec" - https://bugs.webkit.org/show_bug.cgi?id=171265 - http://trac.webkit.org/changeset/218512 - -2017-06-27 JF Bastien - - WebAssembly: running out of executable memory should throw OoM - https://bugs.webkit.org/show_bug.cgi?id=171537 - - - Reviewed by Saam Barati. - - * wasm.yaml: - * wasm/lowExecutableMemory/executable-memory-oom.js: Added. - (const.invoke): - (failCount.0.catch): - (failCount.0.module.undefined.catch): - * wasm/lowExecutableMemory/exports-oom.js: Added. - (const.type): - (const.params): - (const.randomProgram): - (failCount.0.catch): - (failCount.0.module.undefined.catch): - * wasm/lowExecutableMemory/imports-oom.js: Added. - (const.type): - (const.params): - (const.randomProgram): - (f.imports.push): - (failCount.0.catch): - (failCount.0.module.undefined.catch): - -2017-06-27 Caio Lima - - [ESnext] Implement Object Rest - Implementing Object Rest Destructuring - https://bugs.webkit.org/show_bug.cgi?id=167962 - - Reviewed by Saam Barati. - - * stress/object-rest-deconstruct.js: Added. - (let.assert): - (let.assertPropDescriptor): - (catch): - (get 3): - (foo): - (let.src.get y): - (let.src.set y): - (let.gen): - -2017-06-27 Saam Barati - - Function constructor needs to follow the spec and validate parameters and body independently - https://bugs.webkit.org/show_bug.cgi?id=173303 - - - Reviewed by Keith Miller. - - * ChakraCore/test/Function/FuncBodyES5.baseline-jsc: - * stress/function-constructor-semantics.js: Added. - (assert): - (hasSyntaxError): - (foo): - (async.foo): - (testError): - (testOK.toString): - (toString): - -2017-06-26 Saam Barati - - RegExpPrototype.js builtin uses for-of iteration which is almost certainly incorrect - https://bugs.webkit.org/show_bug.cgi?id=173740 - - Reviewed by Mark Lam. - - * stress/regexp-prototype-replace-builtin-should-not-use-for-of.js: Added. - (Array.prototype.Symbol.iterator): - -2017-06-26 Saam Barati - - Skip a test on 32-bit platforms since we run out of address space. - - Rubber stamped by Mark Lam. - - * stress/dont-reserve-huge-capacity-lexer.js: - -2017-06-26 Saam Barati - - Crash in JSC::Lexer::setCode - https://bugs.webkit.org/show_bug.cgi?id=172754 - - Reviewed by Mark Lam. - - * stress/dont-reserve-huge-capacity-lexer.js: Added. - (catch): - -2017-06-24 Yusuke Suzuki - - [JSC] Clean up Object.entries implementation - https://bugs.webkit.org/show_bug.cgi?id=173759 - - Reviewed by Sam Weinig. - - * microbenchmarks/object-entries.js: Added. - (test): - -2017-06-24 Joseph Pecoraro - - Remove Reflect.enumerate - https://bugs.webkit.org/show_bug.cgi?id=173806 - - Reviewed by Yusuke Suzuki. - - * ChakraCore.yaml: - * es6.yaml: - These tests now fail because they use Reflect.enumerate. - - * test262.yaml: - This test now passes, it checked that Reflect.enumerate is undefined! - - * stress/property-name-enumerator-should-not-look-into-indexed-values-when-it-is-a-dictionary.js: - Convert to for..in which presented the original issue. See bug - - * stress/reflect-enumerate.js: Removed. - Remove a test solely for Reflect.enumerate. - -2017-06-22 Saam Barati - - ValueRep(DoubleRep(@v)) can not simply convert to @v - https://bugs.webkit.org/show_bug.cgi?id=173687 - - - Reviewed by Mark Lam. - - * stress/dont-strength-reduce-valuerep-of-doublerep.js: Added. - (i.catch): - -2017-06-22 Yusuke Suzuki - - [JSC] Object.values should be implemented in C++ - https://bugs.webkit.org/show_bug.cgi?id=173703 - - Reviewed by Sam Weinig. - - * microbenchmarks/object-keys-map-values.js: Added. - (test): - * microbenchmarks/object-values.js: Added. - (test): - * stress/object-values-changing-properties.js: Added. - (shouldBe): - (throw.new.Error.let.source.get x): - (throw.new.Error): - (shouldBe.let.handler.get order): - (get let): - (shouldBe.let.handler.get return): - (let.handler.get order): - -2017-06-21 Saam Barati - - eval virtual call is incorrect in the baseline JIT - https://bugs.webkit.org/show_bug.cgi?id=173587 - - - Reviewed by Michael Saboff. - - * stress/do-eval-virtual-call-correctly.js: Added. - (assert): - (f): - (i.test): - (catch): - -2017-06-20 Ryan Haddad - - Update test262 test expectations after r218581. - - Unreviewed test gardening. - - * test262.yaml: - -2017-06-20 Oleksandr Skachkov - - Revert changes in bug#160417 about extending `null` not being a derived class - https://bugs.webkit.org/show_bug.cgi?id=169293 - - Reviewed by Saam Barati. - - * stress/class-derived-from-null.js: - (assertThrow): - (test1): - (test2): - (test3): - (test4): - (test5): - (test6): - -2017-06-13 Yusuke Suzuki - - [DFG] More ArrayIndexOf fixups for various types - https://bugs.webkit.org/show_bug.cgi?id=173176 - - Reviewed by Saam Barati. - - * stress/array-indexof-arraystorage.js: Added. - (shouldBe): - (indexOfInt32Other): - (indexOfInt32Cell): - (indexOfInt32Boolean): - (indexOfDoubleOther): - (indexOfDoubleCell): - (indexOfDoubleBoolean): - (indexOfInt32): - (indexOfDouble): - * stress/array-indexof-constant-folding.js: Added. - (shouldBe): - (indexOfInt32Other): - (indexOfInt32Cell): - (indexOfInt32Boolean): - (indexOfDoubleOther): - (indexOfDoubleCell): - (indexOfDoubleBoolean): - * stress/array-indexof-hole-and-other.js: Added. - (shouldBe): - (indexOf): - * stress/array-indexof-other.js: Added. - (shouldBe): - (indexOfInt32): - (indexOfDouble): - (indexOfString): - (indexOfObject): - * stress/array-indexof-symbol.js: Added. - (shouldBe): - (indexOfInt32): - (indexOfDouble): - (indexOfString): - (indexOfObject): - -2017-06-19 Joseph Pecoraro - - test262: Completion values for control flow do not match the spec - https://bugs.webkit.org/show_bug.cgi?id=171265 - - Reviewed by Saam Barati. - - * stress/completion-value.js: - Condensed test for completion values in top level statements. - - * stress/super-get-by-id.js: - ClassDeclaration when evaled no longer produce values. Convert - these to ClassExpressions so they produce the class value. - - * ChakraCore/test/GlobalFunctions/evalreturns3.baseline-jsc: - This is a progression for currect spec behavior. - - * mozilla/mozilla-tests.yaml: - This test is now outdated, so mark it as failing for that reason. - - * test262.yaml: - Passing all "cptn" completion value tests. - -2017-06-17 Keith Miller - - ArrayBuffer constructor needs to create subclass structures before its buffer - https://bugs.webkit.org/show_bug.cgi?id=173510 - - Reviewed by Yusuke Suzuki. - - * test262.yaml: - -2017-06-17 Keith Miller - - ArrayPrototype methods should use JSValue::toLength for non-Arrays. - https://bugs.webkit.org/show_bug.cgi?id=173506 - - Reviewed by Ryosuke Niwa. - - Re-baseline tests. - - * ChakraCore/test/Function/apply3.baseline-jsc: - * test262.yaml: - -2017-06-16 Yusuke Suzuki - - [JSC] Add fast path for Object.assign - https://bugs.webkit.org/show_bug.cgi?id=173416 - - Reviewed by Mark Lam. - - * stress/object-assign-changing-properties.js: Added. - (shouldBe): - (throw.new.Error.let.source.get x): - (throw.new.Error): - (shouldBe.let.source.get x): - (shouldBe.let.target.set x): - (shouldBe.let.target.get x): - * stress/object-assign-proxy.js: Added. - (shouldBe): - (throw.new.Error.let.handler.get order): - -2017-06-15 Yusuke Suzuki - - [JSC] Implement Object.assign in C++ - https://bugs.webkit.org/show_bug.cgi?id=173414 - - Reviewed by Saam Barati. - - * stress/object-assign-string-first.js: Added. - (shouldBe): - (source.get Symbol): - (source.get 1): - (source.get cocoa): - -2017-06-14 JF Bastien - - WebAssembly: remove empty test files - https://bugs.webkit.org/show_bug.cgi?id=173382 - - Reviewed by Saam Barati. - - The following files: - JSTests/wasm/function-tests/call-indirect-params.js - JSTests/wasm/function-tests/call-indirect.js - JSTests/wasm/js-api/call-indirect-results.js - Were changed to empty files in https://trac.webkit.org/changeset/209771 - - They were testing call_indirect with the wrong semantics, before - we implemented tables. That change implemented tables and - therefore removed the erroneous tests. - - We have a few tests for call_indirect which already do the right thing: - JSTests/wasm/function-tests/context-switch.js - JSTests/wasm/function-tests/exceptions.js - JSTests/wasm/function-tests/grow-memory-2.js - JSTests/wasm/function-tests/stack-overflow.js - JSTests/wasm/function-tests/table-basic-2.js - JSTests/wasm/function-tests/table-basic.js - JSTests/wasm/js-api/call-indirect.js - JSTests/wasm/js-api/table.js - JSTests/wasm/js-api/unique-signature.js - JSTests/wasm/js-api/wrapper-function.js - - I also just imported the updated spec tests which, among other - things, test call_indirect: - core/br.wast - core/br_table.wast - core/call_indirect.wast - core/func.wast - core/func_ptrs.wast - core/imports.wast - core/left-to-right.wast - core/linking.wast - core/nop.wast - core/return.wast - core/typecheck.wast - core/unreachable.wast - - So I think it's OK to just delete the tests which should just have - been deleted back when tables were added. - - * wasm/function-tests/call-indirect-params.js: Removed. - * wasm/function-tests/call-indirect.js: Removed. - * wasm/js-api/call-indirect-results.js: Removed. - -2017-06-13 JF Bastien - - WebAssembly: import updated spec tests - https://bugs.webkit.org/show_bug.cgi?id=173287 - - - Reviewed by Saam Barati. - - Import spec tests as of 31c641cc15f2aedbec2fa45a5185f68416df578b, - with a few modifications so things work. - - Fix a bunch of bugs found through this process, and punt a few tests (which I - marked as blocked by this bug). - - Fixes: - - Fix load / store alignment: r216908 erroneously implemented it as bit alignment - instead of byte alignment. It was also missing memory-alignment.js despite it - being in the ChangeLog, so add it too. This allows spec-test/align.wast.js to - pass. - - Tables can be imported or in a section. There can be only one, but sections can - be empty. An Elements section can exist if there's no Table, as long as it is - also empty. - - Memories can be imported or in a section. There can be only one, but sections - can be empty. A Data section can exist if there's no Memory, as long as it is - also empty. - - Prototypes: stringify without .prototype. in the string. - - WebAssembly.Table.prototype.grow was plain wrong: it takes a delta parameter, - not a final size, and throws a RangeError on failure, not a TypeError. - - Fix compile / instantiate so the reject the promise if given an argument of the - wrong type (instead of failing instantly). - - Fix async on neuter test. - - Element section shouldn't affect any Table if any of the elements are out of - bounds. We need to process it in two passes. - - Segment section shouldn't affect any Data if any of the segments are out of - bounds. We need to process it in two passes. - - Empty data segments are valid, but only when there is no memory. Their index - still gets validated, and has to be zero. - - Punts: - - Error messages with context, the test seems overly restrictive but this is - minor. - - compile/instantiate/validate property descriptors. - - UTF-8 bugs. - - Temporarily disable NaN tests. We need to go back and implement the following - semantics: https://github.com/WebAssembly/spec/pull/414 This doesn't matter as - much as getting all the other tests passing. - - Worth noting for NaNs: f64.no_fold_mul_one (also a NaN test) as well as - no_fold_promote_demote (an interesting corner case which we get wrong). mul by - one is (assert_return (invoke \"f64.no_fold_mul_one\" (i64.const - 0x7ff4000000000000)) (i64.const 0x7ff8000000000000)) which means converting sNaN - to qNaN, and promote/demote is (assert_return (invoke \"no_fold_promote_demote\" - (i32.const 0x7fa00000)) (i32.const 0x7fc00000)) which is the same. I'm not sure - why they're not allowed. - - * wasm.yaml: - * wasm/function-tests/i32-load8-s.js: - * wasm/function-tests/memory-access-past-4gib.js: - (const.op.of.WASM.opcodes): - * wasm/function-tests/memory-alignment.js: Added. - (const.op.of.WASM.opcodes): - * wasm/function-tests/memory-section-and-import.js: - * wasm/js-api/Module-compile.js: - (async.testPromiseAPI): - * wasm/js-api/dont-mmap-zero-byte-memory.js: - (testMems): - * wasm/js-api/element.js: - (assert.throws.new.WebAssembly.Module.builder.WebAssembly): - * wasm/js-api/neutered-inputs.js: - (const.testFunction): Deleted. - (const.testConstructor): Deleted. - * wasm/js-api/table.js: - (assert.throws.new.WebAssembly.Module.builder.WebAssembly): - (new.WebAssembly.Module): - (assert.throws): - (assertBadTableImport): - (assert.throws.WebAssembly.Table.prototype.grow): - (assertBadTableInstance): Deleted. - * wasm/js-api/test_Data.js: - (DataSectionWithoutMemory): - * wasm/spec-harness/index.js: - (module): - (uniqueTest): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (register): Deleted. - (call): Deleted. - (get instance): Deleted. - (exports): Deleted. - (run): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (try.f): Deleted. - (catch): Deleted. - (assert_exhaustion): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-harness/testharness.css: Removed. - * wasm/spec-harness/testharness.js: Removed. - * wasm/spec-harness/testharnessreport.js: Removed. - * wasm/spec-harness/wasm-constants.js: - (assertTraps): - (assertWasmThrows): - * wasm/spec-harness/wasm-module-builder.js: - (Binary.prototype.emit_section): - (Binary): - (WasmFunctionBuilder.prototype.addBody): - (WasmFunctionBuilder.prototype.end): - (WasmFunctionBuilder): - (WasmModuleBuilder.prototype.stringToBytes): - (WasmModuleBuilder.prototype.addCustomSection): - (WasmModuleBuilder.prototype.addFunctionTableInit): - (WasmModuleBuilder.prototype.appendToTable): - (WasmModuleBuilder.prototype.toArray): - (WasmModuleBuilder.prototype.toBuffer): - (WasmModuleBuilder.prototype.instantiate): - (WasmModuleBuilder): - * wasm/spec-tests/address.wast.js: - * wasm/spec-tests/align.wast.js: Added. - * wasm/spec-tests/binary.wast.js: - * wasm/spec-tests/block.wast.js: - * wasm/spec-tests/br.wast.js: - * wasm/spec-tests/br_if.wast.js: - * wasm/spec-tests/br_table.wast.js: - * wasm/spec-tests/call.wast.js: - * wasm/spec-tests/call_indirect.wast.js: - * wasm/spec-tests/comments.wast.js: - * wasm/spec-tests/const.wast.js: Added. - * wasm/spec-tests/conversions.wast.js: Added. - * wasm/spec-tests/custom_section.wast.js: - * wasm/spec-tests/exports.wast.js: - * wasm/spec-tests/f32.wast.js: Added. - * wasm/spec-tests/f64.wast.js: Added. - * wasm/spec-tests/fac.wast.js: - * wasm/spec-tests/float_exprs.wast.js: Added. - * wasm/spec-tests/float_misc.wast.js: Added. - * wasm/spec-tests/func.wast.js: - * wasm/spec-tests/globals.wast.js: - * wasm/spec-tests/if.wast.js: - * wasm/spec-tests/imports.wast.js: - * wasm/spec-tests/inline-module.wast.js: Added. - * wasm/spec-tests/jsapi.js: - (testJSAPI.test): - (testJSAPI): - * wasm/spec-tests/labels.wast.js: - * wasm/spec-tests/loop.wast.js: - * wasm/spec-tests/memory.wast.js: - * wasm/spec-tests/memory_trap.wast.js: Added. - * wasm/spec-tests/names.wast.js: - * wasm/spec-tests/nop.wast.js: - * wasm/spec-tests/return.wast.js: - * wasm/spec-tests/stack.wast.js: - * wasm/spec-tests/token.wast.js: Added. - * wasm/spec-tests/type.wast.js: Added. - * wasm/spec-tests/typecheck.wast.js: - * wasm/spec-tests/unreachable.wast.js: - * wasm/spec-tests/unreached-invalid.wast.js: - * wasm/spec-tests/unwind.wast.js: - * wasm/spec-tests/utf8-custom-section-id.wast.js: Added. - * wasm/spec-tests/utf8-import-field.wast.js: Added. - * wasm/spec-tests/utf8-import-module.wast.js: Added. - -2017-06-13 Ryan Haddad - - Unreviewed JSC test gardening. - - * stress/check-string-ident.js: - * stress/new-largeish-contiguous-array-with-size.js: - -2017-06-13 Michael Saboff - - DFG doesn't properly handle a property that is change to read only in a prototype - https://bugs.webkit.org/show_bug.cgi?id=173321 - - Reviewed by Filip Pizlo. - - * ChakraCore.yaml: Renabled fieldopts/objtypespec-newobj-invalidation.1.js. - * stress/regress-173321.js: Added new regression test. - (shouldBe): - (SimpleObject): - (test): - -2017-06-12 Saam Barati - - Update test262 test expectation since r218082 makes new tests pass. - - * test262.yaml: - -2017-06-12 Saam Barati - - We should not claim that SpecEmpty is filtered out of cell checks on 64 bit platforms - https://bugs.webkit.org/show_bug.cgi?id=172957 - - - Reviewed by Filip Pizlo. - - * stress/spec-empty-flows-through-cell-checks.js: Added. - (A): - (B): - (i.catch): - -2017-06-12 Oleksandr Skachkov - - We incorrectly allow escaped characters in keyword tokens - https://bugs.webkit.org/show_bug.cgi?id=171310 - - Reviewed by Yusuke Suzuki. - - * stress/destructuring-assignment-syntax.js: - * stress/error-messages-for-in-operator-should-not-crash.js: - (catch): - * stress/reserved-word-with-escape.js: - (testSyntaxError.String.raw.v): - (String.raw.SyntaxError.Cannot.use.the.keyword.string_appeared_here.as.a.name): - (testSyntaxError.String.raw.a): - * JSTests/ChakraCore/test/Basics/IdsWithEscapes.baseline-jsc: - -2017-06-09 Yusuke Suzuki - - [DFG] Add ArrayIndexOf intrinsic - https://bugs.webkit.org/show_bug.cgi?id=172421 - - Reviewed by Saam Barati. - - * stress/array-indexof-array-prototype-change.js: Added. - (shouldBe): - (indexOfInt32): - * stress/array-indexof-have-a-bad-time-getter.js: Added. - (shouldBe): - (indexOfInt32): - * stress/array-indexof-have-a-bad-time.js: Added. - (shouldBe): - (indexOfInt32): - * stress/array-indexof-hole-with-prototype.js: Added. - (shouldBe): - (indexOf): - * stress/array-indexof-hole.js: Added. - (shouldBe): - (indexOf): - * stress/array-indexof-index.js: Added. - (shouldBe): - (indexOfInt32): - (indexOfDouble): - (indexOfString): - (indexOfObject): - (indexOfValue): - * stress/array-indexof-negative-index.js: Added. - (shouldBe): - (indexOfInt32): - (indexOfDouble): - (indexOfString): - (indexOfObject): - (indexOfValue): - * stress/array-indexof-non-int32-start-index.js: Added. - (shouldBe): - (indexOf): - (object.valueOf): - * stress/array-indexof-object-prototype-change.js: Added. - (shouldBe): - (indexOfInt32): - * stress/array-indexof-object.js: Added. - (shouldBe): - (indexOf): - * stress/array-indexof-original-array.js: Added. - (shouldBe): - (indexOfInt32): - * stress/array-indexof-string.js: Added. - (shouldBe): - (indexOf): - * stress/array-indexof-structure-change-convert.js: Added. - (shouldBe): - (indexOf): - * stress/array-indexof-structure-change.js: Added. - (shouldBe): - (indexOf): - * stress/array-indexof.js: Added. - (shouldBe): - (indexOf): - -2017-06-11 Keith Miller - - TypedArray constructor with string shouldn't throw - https://bugs.webkit.org/show_bug.cgi?id=173181 - - Reviewed by JF Bastien. - - We should be coercing primitive arguments to numbers in the various - TypedArray constructors. - - * stress/typedarray-constructor.js: - -2017-06-11 Yusuke Suzuki - - Unreviewed, update test results part 3 - https://bugs.webkit.org/show_bug.cgi?id=173227 - - * microbenchmarks/regexp-prototype-search-observable-side-effects.js: - -2017-06-10 Yusuke Suzuki - - Unreviewed, update test results part 2 - https://bugs.webkit.org/show_bug.cgi?id=173227 - - * test262.yaml: - -2017-06-10 Yusuke Suzuki - - Unreviewed, update test results - https://bugs.webkit.org/show_bug.cgi?id=173227 - - * microbenchmarks/string-prototype-search-observable-side-effects.js: - * test262.yaml: - -2017-06-10 Yusuke Suzuki - - [JSC] Update RegExp.prototype.[@@search]] implementation according to the latest spec - https://bugs.webkit.org/show_bug.cgi?id=173227 - - Reviewed by Mark Lam. - - Update the test. - - * es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.search].js: - -2017-06-08 Keith Miller - - WebAssembly: We should only create wrappers for functions that can be exported - https://bugs.webkit.org/show_bug.cgi?id=173088 - - Reviewed by Saam Barati. - - Remove a bunch of old tests that are actually duplicates of the spec-tests and rely - on the old testWasmModuleFunctions api, which has been removed. - - * wasm/function-tests/copysign.js: Removed. - * wasm/function-tests/ctz.js: Removed. - * wasm/function-tests/drop.js: Removed. - * wasm/function-tests/dumb-eq-if-then-else.js: Removed. - * wasm/function-tests/dumb-less-than-fallthrough.js: Removed. - * wasm/function-tests/dumb-less-than-ite.js: Removed. - * wasm/function-tests/eqz.js: Removed. - * wasm/function-tests/i32-trunc-s-f32.js: Removed. - * wasm/function-tests/i32-trunc-s-f64.js: Removed. - * wasm/function-tests/i32-trunc-u-f32.js: Removed. - * wasm/function-tests/i32-trunc-u-f64.js: Removed. - * wasm/function-tests/i64-trunc-s-f32.js: Removed. - * wasm/function-tests/i64-trunc-s-f64.js: Removed. - * wasm/function-tests/i64-trunc-u-f32.js: Removed. - * wasm/function-tests/i64-trunc-u-f64.js: Removed. - * wasm/function-tests/if-then-else-fallthrough.js: Removed. - * wasm/function-tests/if-then-fallthrough.js: Removed. - * wasm/function-tests/int-to-floating-point.js: Removed. - * wasm/function-tests/loop-mult.js: - * wasm/function-tests/loop-sum.js: - * wasm/function-tests/max.js: Removed. - * wasm/function-tests/min.js: Removed. - * wasm/function-tests/nearest.js: Removed. - * wasm/function-tests/nop.js: Removed. - * wasm/function-tests/popcnt.js: Removed. - * wasm/function-tests/ret5.js: - * wasm/function-tests/select.js: Removed. - * wasm/function-tests/tee-local.js: Removed. - * wasm/function-tests/trunc.js: Removed. - -2017-06-07 JF Bastien - - WebAssembly: test imports and exports with 16-bit characters - https://bugs.webkit.org/show_bug.cgi?id=165977 - - - Reviewed by Saam Barati. - - The output for import failure was improved, so many tests need to - be updated here. Only one has new tests as noted below. - - * wasm/function-tests/memory-import-and-grow.js: - * wasm/js-api/Instance.imports.exports.unicode.js: Added. Main new test. - (idxModule): - * wasm/js-api/global-error.js: - (new.Number): - (assert.throws): - * wasm/js-api/table.js: - (assert.throws): - (new.WebAssembly.Table): - * wasm/js-api/test_memory.js: - (test): - * wasm/js-api/wasm-to-wasm-bad-signature.js: - (BadSignatureDropStartParams.): - (BadSignatureDropStartParams): - (BadSignatureDropEndParams.): - (BadSignatureSwapParam.): - (BadSignatureRet.): - * wasm/js-api/web-assembly-instantiate.js: - (assert.asyncTest.async.test): - (assert.asyncTest): - * wasm/js-api/wrapper-function.js: - (return.new.WebAssembly.Module): - -2017-06-07 Mark Lam - - Restrict the regress-173035.js test to only run on Darwin x86-64. - https://bugs.webkit.org/show_bug.cgi?id=173075 - - Reviewed by Saam Barati. - - This is because the 32-bit x86 build will fail to mmap the 0x3f900000 bytes that - this test will require to succeed. Here's an example of this failure: - https://build.webkit.org/builders/Apple%20Sierra%2032-bit%20JSC%20%28BuildAndTest%29/builds/866/steps/webkit-32bit-jsc-test/logs/stdio - - Since the issue is due to allocation of a very large amount of memory, the test - will probably fail on iOS and other platforms as well. Hence, we should just - skip this test for any platforms that is not Darwin x86-64. - - * stress/regress-173035.js: - -2017-06-07 Mark Lam - - ASSERTION failure: !masqueradesAsUndefinedWatchpointIsStillValid() || !isKnownCell(operand.node()) - https://bugs.webkit.org/show_bug.cgi?id=168587 - - Not reviewed. - - Unskipping the test because the issue has been fixed in https://bugs.webkit.org/show_bug.cgi?id=172673. - - * stress/test-finally.js: - -2017-06-06 Mark Lam - - Contiguous storage butterfly length should not exceed MAX_STORAGE_VECTOR_LENGTH. - https://bugs.webkit.org/show_bug.cgi?id=173035 - - - Reviewed by Geoffrey Garen and Filip Pizlo. - - * stress/regress-173035.js: Added. - -2017-06-06 Saam Barati - - Make sure we restore SP when doing calls that could be to JS - https://bugs.webkit.org/show_bug.cgi?id=172946 - - - Reviewed by JF Bastien. - - * wasm/function-tests/many-args-tail-call-sp-restored.js: Added. - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.f1): - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.end): - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.f2): - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.let.instance.new.WebAssembly.Instance.new.WebAssembly.Module.builder.WebAssembly): - -2017-06-06 Joseph Pecoraro - - Unreviewed rollout r217807. Caused a test to crash. - - * heapProfiler/class-names.js: Removed. - * heapProfiler/driver/driver.js: - (CheapHeapSnapshotNode): - (CheapHeapSnapshot): - (createCheapHeapSnapshot): - (HeapSnapshot): - (createHeapSnapshot): - * typeProfiler/inheritance.js: - (wrapper.A): - (wrapper.B): - (wrapper.C): - (wrapper): - -2017-06-06 Filip Pizlo - - index out of bound in bytecodebasicblock - https://bugs.webkit.org/show_bug.cgi?id=172963 - - Reviewed by Saam Barati and Mark Lam. - - * stress/dfg-call-class-constructor.js: Added. - (Foo): - (i.catch): - -2017-06-05 Joseph Pecoraro - - Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view - https://bugs.webkit.org/show_bug.cgi?id=172848 - - - Reviewed by Saam Barati. - - * typeProfiler/inheritance.js: - Rewrite the test slightly for clarity. The hoisting was confusing. - - * heapProfiler/class-names.js: Added. - (MyES5Class): - (MyES6Class): - (MyES6Subclass): - Test object types and improved class names. - - * heapProfiler/driver/driver.js: - (CheapHeapSnapshotNode): - (CheapHeapSnapshot): - (createCheapHeapSnapshot): - (HeapSnapshot): - (createHeapSnapshot): - Update snapshot parsing from version 1 to version 2. - -2017-06-02 Yusuke Suzuki - - ASSERTION FAILED: "We should only declare a function as a lexically scoped variable in scopes where var declarations aren't allowed. ..." for function redeclaration with async function module export - https://bugs.webkit.org/show_bug.cgi?id=168844 - - Reviewed by Saam Barati. - - * modules/async-function-export.js: Added. - (f): - (export.async.f): - -2017-06-02 Yusuke Suzuki - - ES2015 modules - Export default function hoisting - https://bugs.webkit.org/show_bug.cgi?id=170174 - - Reviewed by Saam Barati. - - This issue itself is solved by fixing function declaration hoisting rules. - This patch just adds the specific test to modules tests to ensure the bug - is fixed. - - * modules/export-default-function-hoisting.js: Added. - * modules/export-default-function-hoisting/cappuccino.js: Added. - (import.drinkCocoa.from.string_appeared_here.export.default.drinkCappuccino): - * modules/export-default-function-hoisting/cocoa.js: Added. - (export.default.drinkCocoa): - -2017-06-01 Oleksandr Skachkov - - Class Proxy can't be extended - https://bugs.webkit.org/show_bug.cgi?id=169040 - - Reviewed by Saam Barati. - - Adding tests that check correctness of Proxy to ES6 `class` - Bug is already fixed in https://bugs.webkit.org/show_bug.cgi?id=164849 - - * stress/proxy-class.js: Added. - (assert): - (throw.new.Error.SuperClass): - (throw.new.Error.A): - (throw.new.Error): - -2017-05-31 Yusuke Suzuki - - [JSC] Implement String.prototype.concat in JS builtins - https://bugs.webkit.org/show_bug.cgi?id=172798 - - Reviewed by Sam Weinig. - - * microbenchmarks/string-concat-convert.js: Added. - (test): - * microbenchmarks/string-concat-long-convert.js: Added. - (test): - * microbenchmarks/string-concat-long.js: Added. - (test): - * microbenchmarks/string-concat.js: Added. - (test): - -2017-05-31 Oleksandr Skachkov - - Rolling out: Prevent async methods named 'function' - https://bugs.webkit.org/show_bug.cgi?id=172776 - - Reviewed by Mark Lam. - - * stress/async-await-syntax.js: - (testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntax): - (testTopLevelAsyncAwaitSyntaxSloppyMode): - (prototype.testTopLevelAsyncAwaitSyntaxStrictMode.testSyntax): - (prototype.testTopLevelAsyncAwaitSyntaxStrictMode): - (testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntaxError): - -2017-05-31 Ryan Haddad - - Skip flaky JSC test stress/test-finally.js - https://bugs.webkit.org/show_bug.cgi?id=168587 - - Unreviewed test gardening. - - * stress/test-finally.js: - -2017-05-30 Oleksandr Skachkov - - Prevent async methods named 'function' in Object literal - https://bugs.webkit.org/show_bug.cgi?id=172660 - - Reviewed by Saam Barati. - - * stress/async-await-syntax.js: - (testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntaxError): - -2017-05-30 Oleksandr Skachkov - - ASSERTION FAILED: generator.isConstructor() || generator.derivedContextType() == DerivedContextType::DerivedConstructorContext - https://bugs.webkit.org/show_bug.cgi?id=171274 - - Reviewed by Saam Barati. - - * stress/async-arrow-functions-lexical-binding-in-class.js: - (shouldBeAsync): - (shouldBeAsyncAndStoreBind): - (promise.new.Promise): - (ChildClass4): - (ChildClass4.prototype.classValue): - (ChildClass4.prototype.get classProperty): - * stress/async-arrow-functions-lexical-super-binding.js: - (A): - (const.childA1.new.prototype.var.f.async): - (const.childA1.new.var): - (const.childA1.new): - (const.childA2.new.prototype.var.f.async): - (const.childA2.new.var): - (const.childA2.new): - (const.childA3.new.prototype.var.f.async): - (const.childA3.new.var): - (const.childA3.new): - (try.childA4.new.prototype.var.f.async): - (try.childA4.new.var): - (try.childA4.new): - (catch): - (const.childA5.new.prototype.var.f.async): - (const.childA5.new.var): - (const.childA5.new): - (checkClass): - (checkClass.new.prototype.var.f.async): - (checkClass.new.var): - (checkClass.new): - (checkClass.new.prototype.method): - (checkClass.new.prototype.prop): - -2017-05-27 Yusuke Suzuki - - [JSC] Map and Set constructors should have fast path for cloning - https://bugs.webkit.org/show_bug.cgi?id=172413 - - Reviewed by Saam Barati. - - * stress/map-clone-instance-iterator-change.js: Added. - (shouldBe): - (map.Symbol.iterator): - * stress/map-clone-iterator-change.js: Added. - (shouldBe): - (Map.prototype.Symbol.iterator): - * stress/map-clone-next-change.js: Added. - (shouldBe): - (map.Symbol.iterator.__proto__.next): - * stress/map-clone.js: Added. - (shouldBe): - (Map.prototype): - * stress/map-inherit-set.js: Added. - (shouldBe): - (DerivedMap): - (set for): - * stress/set-clone-instance-iterator-change.js: Added. - (shouldBe): - (set Symbol.iterator): - * stress/set-clone-iterator-change.js: Added. - (shouldBe): - (set Set.prototype.Symbol.iterator): - * stress/set-clone-next-change.js: Added. - (shouldBe): - (set Symbol.iterator.__proto__.next): - * stress/set-clone.js: Added. - (shouldBe): - (set Set.prototype.add): - * stress/set-inherit-add.js: Added. - (shouldBe): - (DerivedSet.set add): - -2017-05-26 Ryan Haddad - - Unreviewed, rolling out r217458. - - This change caused 55 JSC test failures. - - Reverted changeset: - - "Date should use historical data if it's available." - https://bugs.webkit.org/show_bug.cgi?id=172592 - http://trac.webkit.org/changeset/217458 - -2017-05-26 Yusuke Suzuki - - Give ModuleProgram the same treatment that we did for ProgramCode in bug#167725 - https://bugs.webkit.org/show_bug.cgi?id=167805 - - Reviewed by Saam Barati. - - * modules/module-jit-reachability.js: Added. - -2017-05-26 Oleksandr Skachkov - - Prevent async methods named 'function' - https://bugs.webkit.org/show_bug.cgi?id=172598 - - Reviewed by Mark Lam. - - * stress/async-await-syntax.js: - (testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntax): - (testTopLevelAsyncAwaitSyntaxSloppyMode): - (prototype.testTopLevelAsyncAwaitSyntaxStrictMode.testSyntax): - (prototype.testTopLevelAsyncAwaitSyntaxStrictMode): - (testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntaxError): - -2017-05-25 Keith Miller - - Date should use historical data if it's available. - https://bugs.webkit.org/show_bug.cgi?id=172592 - - Reviewed by Mark Lam. - - Remove parts of the date tests that rely on the absence of - historical data in Date. - - * mozilla/ecma/Date/15.9.5.31-1.js: - (getTestCases): - * mozilla/ecma/Date/15.9.5.35-1.js: - (getTestCases): - -2017-05-25 Saam Barati - - Our for-in optimization in the bytecode generator does its static analysis incorrectly - https://bugs.webkit.org/show_bug.cgi?id=172532 - - - Reviewed by Mark Lam. - - * stress/for-in-invalidation-for-any-write.js: Added. - (assert): - (test): - (test.i): - -2017-05-25 Mark Lam - - ObjectToStringAdaptiveInferredPropertyValueWatchpoint should not reinstall itself nor handleFire if it's dying shortly. - https://bugs.webkit.org/show_bug.cgi?id=172548 - - - Reviewed by Filip Pizlo. - - * stress/regress-172548.patch: Added. - -2017-05-23 Saam Barati - - We should not mmap zero bytes for a memory in Wasm - https://bugs.webkit.org/show_bug.cgi?id=172528 - - - Reviewed by Mark Lam. - - * wasm/js-api/dont-mmap-zero-byte-memory.js: Added. - (testMems): - -2017-05-23 Saam Barati - - CFGSimplificationPhase should not merge a block with itself - https://bugs.webkit.org/show_bug.cgi?id=172508 - - - Reviewed by Keith Miller. - - * stress/dont-crash-in-cfg-simplification.js: Added. - (bar): - (baz): - (foo): - -2017-05-20 Yusuke Suzuki - - [FTL] Support GetByVal with ArrayStorage and SlowPutArrayStorage - https://bugs.webkit.org/show_bug.cgi?id=172216 - - Reviewed by Saam Barati. - - * stress/array-storage-get-by-val.js: Added. - (shouldBe): - (testOutOfBound): - (testInBound): - (testSlowPutOutOfBound): - (testSlowPutInBound): - -2017-05-21 Yusuke Suzuki - - Unreviewed, fix commented out tests - https://bugs.webkit.org/show_bug.cgi?id=172225 - - * stress/get-by-val-string.js: - (object.43): - (Hello): - (Hello.prototype.get 42): - (Hello.prototype.43): - (Derived): - (shouldBe): - (throw.new.Error): Deleted. - -2017-05-21 Saam Barati - - We incorrectly throw a syntax error when declaring a top level for-loop iteration variable the same as a parameter - https://bugs.webkit.org/show_bug.cgi?id=171041 - - - Reviewed by Yusuke Suzuki. - - * stress/lexical-scoping-for-loop.js: Added. - (assert): - (test1): - (test2): - (test3): - (test4): - (test5): - (test6): - (let.test7): - (let.test8): - (let.test9): - (let.test10): - (let.test11): - (let.test12): - -2017-05-19 Yusuke Suzuki - - [JSC] Make get_by_val & string "499" to number 499 - https://bugs.webkit.org/show_bug.cgi?id=172225 - - Reviewed by Saam Barati. - - * stress/get-by-val-string.js: Added. - (shouldBe): - (shouldThrow): - (object.43): - (Hello): - (Hello.prototype.get 42): - (Hello.prototype.43): - (Derived): - -2017-05-19 Mark Lam - - [Re-landing] DFG::SpeculativeJIT::pickCanTrample() is wrongly ignoring result registers. - https://bugs.webkit.org/show_bug.cgi?id=172383 - - - Reviewed by Filip Pizlo. - - * stress/regress-172383.js: Added. - -2017-05-19 Ryan Haddad - - Unreviewed, rolling out r217156. - - This change broke the iOS build. - - Reverted changeset: - - "DFG::SpeculativeJIT::pickCanTrample() is wrongly ignoring - result registers." - https://bugs.webkit.org/show_bug.cgi?id=172383 - http://trac.webkit.org/changeset/217156 - -2017-05-19 Mark Lam - - Add missing exception check. - https://bugs.webkit.org/show_bug.cgi?id=172346 - - - Reviewed by Geoffrey Garen. - - * stress/regress-172346.js: Added. - -2017-05-19 Mark Lam - - DFG::SpeculativeJIT::pickCanTrample() is wrongly ignoring result registers. - https://bugs.webkit.org/show_bug.cgi?id=172383 - - - Reviewed by Filip Pizlo. - - * stress/regress-172383.js: Added. - -2017-05-19 Filip Pizlo - - arrayProtoPrivateFuncConcatMemcpy needs to be down with firstArray being undecided - https://bugs.webkit.org/show_bug.cgi?id=172369 - - Reviewed by Mark Lam. - - * stress/undecided-concat.js: Added. - -2017-05-19 Yusuke Suzuki - - [JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass - https://bugs.webkit.org/show_bug.cgi?id=172098 - - Reviewed by Saam Barati. - - * stress/check-sub-class.js: Added. - (shouldBe): - (shouldThrow): - (calling): - (array.forEach): - (i.array.forEach): - -2017-05-18 JF Bastien - - WebAssembly: exports is a getter - https://bugs.webkit.org/show_bug.cgi?id=172129 - - Reviewed by Saam Barati. - - Update test to reflect new semantics. - - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - -2017-05-18 Saam Barati - - Proxy's [[Get]] passes incorrect receiver - https://bugs.webkit.org/show_bug.cgi?id=164849 - - - Reviewed by Yusuke Suzuki. - - * stress/proxy-get-set-correct-receiver.js: Added. - (assert): - (test): - (test.let.target.set prop): - (test.let.target.get prop): - (test.get let): - * stress/proxy-set.js: - (let.target.get x): - * stress/reflect-set-proxy-set.js: - (let.target.get x): - * stress/reflect-set-receiver-proxy-set.js: - (let.target.get x): - -2017-05-18 Filip Pizlo - - Constructor calls set this too early - https://bugs.webkit.org/show_bug.cgi?id=172302 - - Reviewed by Saam Barati. - - This tests all three kinds of constructs in BytecodeGenerator. All three were previously - wrong. - - * stress/construct-overwritten-variable.js: Added. - (new.x.x): - * stress/construct-spread-overwritten-variable-2.js: Added. - (new.x.x): - * stress/construct-spread-overwritten-variable.js: Added. - (new.x.x): - -2017-05-18 Saam Barati - - WebAssembly: perform stack checks - https://bugs.webkit.org/show_bug.cgi?id=165546 - - - Reviewed by Filip Pizlo. - - * wasm.yaml: - * wasm/function-tests/factorial.js: - * wasm/function-tests/float-sub.js: - * wasm/function-tests/stack-overflow.js: Added. - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance): - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.assertOverflows): - (assertOverflows.makeInstance): - (assertOverflows.makeInstance2): - (assertOverflows.assertThrows): - (assertOverflows): - (assertThrows.test.makeSignature): - (assertThrows.test.makeInstance): - (assertThrows.test): - (assertThrows): - -2017-05-18 Keith Miller - - WebAssembly API: test with neutered inputs - https://bugs.webkit.org/show_bug.cgi?id=163899 - - Reviewed by JF Bastien. - - * wasm/js-api/neutered-inputs.js: Added. - (const.testFunction): - (const.testConstructor): - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - -2017-05-18 Filip Pizlo - - DFG inlining should be hardened for the no-result case - https://bugs.webkit.org/show_bug.cgi?id=172290 - - Reviewed by Saam Barati. - - * stress/array-constructor-no-result.js: Added. - (foo): - * stress/pow-no-result.js: Added. - (foo): - -2017-05-18 Commit Queue - - Unreviewed, rolling out r217031, r217032, and r217037. - https://bugs.webkit.org/show_bug.cgi?id=172293 - - cause linking errors in Windows (Requested by yusukesuzuki on - #webkit). - - Reverted changesets: - - "[JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass" - https://bugs.webkit.org/show_bug.cgi?id=172098 - http://trac.webkit.org/changeset/217031 - - "Unreviewed, rebaseline for newly added ClassInfo" - https://bugs.webkit.org/show_bug.cgi?id=172098 - http://trac.webkit.org/changeset/217032 - - "Unreviewed, fix debug and non-JIT build" - https://bugs.webkit.org/show_bug.cgi?id=172098 - http://trac.webkit.org/changeset/217037 - -2017-05-16 Yusuke Suzuki - - [JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass - https://bugs.webkit.org/show_bug.cgi?id=172098 - - Reviewed by Saam Barati. - - * stress/check-sub-class.js: Added. - (shouldBe): - (shouldThrow): - (calling): - (array.forEach): - (i.array.forEach): - -2017-05-17 Filip Pizlo - - Unreviewed, address mlam's review feedback. - - * stress/arguments-elimination-varargs-too-many-args-arg-count.js: - -2017-05-17 Saam Barati - - We don't do context switches for Wasm->Wasm call indirect - https://bugs.webkit.org/show_bug.cgi?id=172188 - - - Reviewed by Keith Miller. - - * wasm/function-tests/context-switch.js: Added. - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance): - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance2): - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.i2.makeInstance2): - (makeInstance): - (makeInstance2): - (assert.eq.makeInstance): - (assert.eq.makeInstance2): - (assert.eq): - -2017-05-17 Filip Pizlo - - JSC: Incorrect LoadVarargs handling in ArgumentsEliminationPhase::transform - https://bugs.webkit.org/show_bug.cgi?id=172208 - - Reviewed by Saam Barati. - - * stress/arguments-elimination-varargs-too-many-args-arg-count.js: Added. - (foo): - (bar): - (baz): - -2017-05-16 Yusuke Suzuki - - [DFG] Constant Folding Phase should convert MakeRope("", String) => Identity(String) - https://bugs.webkit.org/show_bug.cgi?id=172115 - - Reviewed by Saam Barati. - - * stress/constant-folding-should-fold-make-rope-with-empty-strings.js: Added. - (shouldBe): - (unknown): - (readWord1): - (readWord2): - (readWord3): - (readWord4): - -2017-05-16 JF Bastien - - WebAssembly: add memory fuzzer - https://bugs.webkit.org/show_bug.cgi?id=169976 - - - Reviewed by Keith Miller. - - * wasm/fuzz/memory.js: Added. - (const.insert): - (const.action.string_appeared_here): - (const.performAction): - (catch): - -2017-05-16 JF Bastien - - WebAssembly: validate load / store alignment - https://bugs.webkit.org/show_bug.cgi?id=168836 - - - Reviewed by Keith Miller. - - * wasm/WASM.js: fix regular expression greed - * wasm/function-tests/memory-alignment.js: Added. - (const.op.of.WASM.opcodes): - * wasm/wasm.json: fix formatting - -2017-05-15 Mark Lam - - Rolling out r214038 and r213697: Crashes when using computed properties with rest destructuring and object spread. - https://bugs.webkit.org/show_bug.cgi?id=172147 - - Rubber-stamped by Saam Barati. - - * stress/object-rest-deconstruct.js: Removed. - * stress/object-spread.js: Removed. - -2017-05-11 JF Bastien - - WebAssembly: stop supporting 0xD - https://bugs.webkit.org/show_bug.cgi?id=168788 - - - Reviewed by Saam Barati. - - Test that only version 1 is supported. - - * wasm/js-api/version.js: Added. - -2017-05-10 JF Bastien - - WebAssemby: builder doesn't do Memory section maximum correctly - https://bugs.webkit.org/show_bug.cgi?id=171931 - - Reviewed by Keith Miller. - - * wasm/Builder.js: - (export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section): - * wasm/Builder_WebAssemblyBinary.js: - (const.emitters.Memory): - * wasm/function-tests/memory-grow-invalid.js: Added. - -2017-05-10 JF Bastien - - WebAssembly: support name section - https://bugs.webkit.org/show_bug.cgi?id=171263 - - Reviewed by Keith Miller. - - * wasm/function-tests/nameSection.js: Added. - (const.compile): - * wasm/function-tests/nameSection.wasm: Added. - * wasm/function-tests/stack-trace.js: Update format - -2017-05-10 Filip Pizlo - - Null pointer dereference in WTF::RefPtr::operator!() under slow_path_get_direct_pname - https://bugs.webkit.org/show_bug.cgi?id=171801 - - Reviewed by Michael Saboff. - - These tests used to crash. The prefix and postfix tests cover different paths, except - postfix-ignored goes down the same path as prefix due to an optimization. - - * stress/for-in-postfix-ignored-index.js: Added. - (foo): - * stress/for-in-postfix-index.js: Added. - (foo): - * stress/for-in-prefix-index.js: Added. - (foo): - -2017-05-08 Mark Lam - - op_throw_static_error's use of its first operand should be reflected in DFG BytecodeUseDef as well. - https://bugs.webkit.org/show_bug.cgi?id=171786 - - - Reviewed by Saam Barati. - - * stress/bug-171786.js: Added. - -2017-05-06 Oleksandr Skachkov - - [ES6] Arrow function. Issue in access to this after eval('super()') within constructor - https://bugs.webkit.org/show_bug.cgi?id=171543 - - Reviewed by Saam Barati. - - * stress/arrowfunction-lexical-bind-supercall-4.js: - (J): - (K): - -2017-05-05 Saam Barati - - putDirectIndex does not properly do defineOwnProperty - https://bugs.webkit.org/show_bug.cgi?id=171591 - - - Reviewed by Geoffrey Garen. - - * stress/array-prototype-splice-making-typed-array.js: - (test): - * stress/array-species-config-array-constructor.js: - (shouldThrow): - (test): - * stress/put-direct-index-broken-2.js: Added. - (assert): - (test): - (makeLengthWritable): - (set get restoreOldDesc): - * stress/put-direct-index-broken.js: Added. - (whatToTest): - (tryRunning): - (tryItOut): - * stress/put-indexed-getter-setter.js: Added. - (foo.X.prototype.set 7): - (foo.X.prototype.get 7): - (foo.X): - (foo): - -2017-05-04 Yusuke Suzuki - - [JSC] Math unary functions should be handled by DFG - https://bugs.webkit.org/show_bug.cgi?id=171269 - - Reviewed by Saam Barati. - - * stress/arith-acos-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueACosNoArgument): - (testNoArgument): - (opaqueAllTypesACos): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueACosForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueACosForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueACosForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueACosWithException): - (testException): - * stress/arith-acosh-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueACoshNoArgument): - (testNoArgument): - (opaqueAllTypesACosh): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueACoshForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueACoshForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueACoshForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueACoshWithException): - (testException): - * stress/arith-asin-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueASinNoArgument): - (testNoArgument): - (opaqueAllTypesASin): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueASinForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueASinForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueASinForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueASinWithException): - (testException): - * stress/arith-asinh-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueASinhNoArgument): - (testNoArgument): - (opaqueAllTypesASinh): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueASinhForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueASinhForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueASinhForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueASinhWithException): - (testException): - * stress/arith-atan-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueATanNoArgument): - (testNoArgument): - (opaqueAllTypesATan): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueATanForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueATanForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueATanForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueATanWithException): - (testException): - * stress/arith-atanh-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueATanhNoArgument): - (testNoArgument): - (opaqueAllTypesATanh): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueATanhForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueATanhForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueATanhForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueATanhWithException): - (testException): - * stress/arith-cbrt-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueCbrtNoArgument): - (testNoArgument): - (opaqueAllTypesCbrt): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueCbrtForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueCbrtForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueCbrtForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueCbrtWithException): - (testException): - * stress/arith-cosh-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueCoshNoArgument): - (testNoArgument): - (opaqueAllTypesCosh): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueCoshForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueCoshForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueCoshForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueCoshWithException): - (testException): - * stress/arith-expm1-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueExpm1NoArgument): - (testNoArgument): - (opaqueAllTypesExpm1): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueExpm1ForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueExpm1ForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueExpm1ForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueExpm1WithException): - (testException): - * stress/arith-log10-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueLog10NoArgument): - (testNoArgument): - (opaqueAllTypesLog10): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueLog10ForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueLog10ForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueLog10ForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueLog10WithException): - (testException): - * stress/arith-log2-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueLog2NoArgument): - (testNoArgument): - (opaqueAllTypesLog2): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueLog2ForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueLog2ForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueLog2ForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueLog2WithException): - (testException): - * stress/arith-sinh-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueSinhNoArgument): - (testNoArgument): - (opaqueAllTypesSinh): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueSinhForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueSinhForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueSinhForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueSinhWithException): - (testException): - * stress/arith-tan-on-various-types.js: - (isIdentical): - * stress/arith-tanh-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueTanhNoArgument): - (testNoArgument): - (opaqueAllTypesTanh): - (testAllTypesCall): - (testSingleTypeCall): - (testConstant): - (opaqueTanhForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueTanhForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueTanhForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueTanhWithException): - (testException): - -2017-05-03 Keith Miller - - Array.prototype.sort should also allow a null comparator - https://bugs.webkit.org/show_bug.cgi?id=171621 - - Reviewed by Michael Saboff. - - Add test to make it less likely we revert to the incompatable behavior. - Also, fix now incorrect tests. - - * ChakraCore/test/Array/array_sort.baseline-jsc: - * stress/array-sort-bad-comparator.js: - (test): - * stress/sort-null-comparator.js: Added. - (assertEq): - -2017-05-03 Caitlin Potter - - [JSC] remove unneeded asyncFunctionTests.yaml - https://bugs.webkit.org/show_bug.cgi?id=171611 - - Reviewed by Yusuke Suzuki. - - Async functions have shipped, and those tests are run as part of - JSTests/stress and JSTests/test262.yaml. The file is no longer needed. - - * asyncFunctionTests.yaml: Removed. - * stress/async-await-long-loop.js: - * stress/async-await-throw-loop.js: - -2017-05-03 Keith Miller - - Different behaviour with the .sort(callback) method (unlike Firefox & Chrome) - https://bugs.webkit.org/show_bug.cgi?id=47825 - - Reviewed by Saam Barati. - - * stress/sorting-boolean-result-comparator.js: Added. - (checkArray): - -2017-05-02 David Kilzer - - check-webkit-style should keep JavaScript test functions in sync - - - Reviewed by Joseph Pecoraro. - - This change makes shouldBe(), shouldNotBe(), shouldNotThrow() - and shouldThrow() in sync with other copies of these methods. - - * stress/resources/standalone-pre.js: - (shouldBe): Fix whitespace. Prefix 'exception' and 'quiet' - variables with underscore. - (shouldThrow): Fix whitespace. - -2017-04-30 Oleksandr Skachkov - - We initialize functions too early in an eval - https://bugs.webkit.org/show_bug.cgi?id=161099 - - Reviewed by Saam Barati. - - * stress/eval-func-decl-with-let-const-class.js: Added. - -2017-04-30 Oleksandr Skachkov - - [ES6]. Implement Annex B.3.3 function hoisting rules for eval - https://bugs.webkit.org/show_bug.cgi?id=163208 - - Reviewed by Saam Barati. - - * stress/eval-func-decl-block-scoping-reassign.js: Added. - (assert): - (throw.new.Error.f): - (throw.new.Error): - * stress/eval-func-decl-block-with-remove.js: Added. - (assert): - (foo.boo): - (foo): - * stress/eval-func-decl-block-with-var-and-remove.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (joo): - (koo): - * stress/eval-func-decl-block-with-var-sinthesize.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (hoo): - (joo): - (koo): - * stress/eval-func-decl-in-block-scope-and-bind-to-top-eval-scope.js: Added. - * stress/eval-func-decl-in-eval-within-block-with-let.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (goo): - * stress/eval-func-decl-in-eval-within-with-scope.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (boo.let.val2): - (boo.let.val3): - * stress/eval-func-decl-in-frozen-global.js: Added. - (assert): - (assertThrow): - (throw.new.Error): - (Object.freeze): - * stress/eval-func-decl-in-global-of-eval.js: Added. - (assert): - (assertThrow): - (bar): - (baz): - (foobar): - * stress/eval-func-decl-in-global.js: Added. - (assert): - (assertThrow): - * stress/eval-func-decl-in-if.js: Added. - (assert): - * stress/eval-func-decl-within-eval-with-reassign-to-var.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (foobar): - (hoo): - (joo): - (koo): - (loo): - * stress/eval-func-decl-within-eval-without-reassign-to-let.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (goo): - * stress/variable-under-tdz-eval-tricky.js: - (assert): - * test262.yaml: - -2017-04-27 Mark Lam - - Fix some RELEASE_ASSERT failures caused by OutOfMemoryErrors. - https://bugs.webkit.org/show_bug.cgi?id=171404 - - - Reviewed by Saam Barati. - - * stress/js-fixed-array-out-of-memory.js: Added. - -2017-04-27 David Kilzer - - Enhance shouldBe()/shouldNotBe() to accept anonymous function arguments - - - - Reviewed by Joseph Pecoraro. - - * stress/resources/standalone-pre.js: - (shouldBe): - (shouldNotThrow): - (shouldThrow): - - Update shouldBe() to accept anonymous function arguments. - (The shouldNotBe() function was never copied over.) - - Also fix shouldThrow()/shouldNotThrow() to accept anonymous - function arguments (which were missed in r202609 for Bug - 159232). - -2017-04-27 Yusuke Suzuki - - [JSC] Handle PhantomSpread in LoadVarargs as the same to the others - https://bugs.webkit.org/show_bug.cgi?id=171262 - - Reviewed by Saam Barati. - - * stress/spread-outer-create-rest.js: Added. - (assert): - (foo): - (bar): - (baz): - -2017-04-26 Saam Barati - - Print Wasm function index in stack trace - https://bugs.webkit.org/show_bug.cgi?id=171349 - - Reviewed by JF Bastien. - - * wasm/function-tests/stack-trace.js: Added. - (import.Builder.from.string_appeared_here.assert): - (let.imp): - * wasm/function-tests/trap-after-cross-instance-call.js: - (wasmFrameCountFromError): - * wasm/function-tests/trap-load-2.js: - (wasmFrameCountFromError): - * wasm/function-tests/trap-load.js: - (wasmFrameCountFromError): - -2017-04-26 Saam Barati - - ASSERTION FAILED: inIndex != notFound in JSC::invalidParameterInSourceAppender() - https://bugs.webkit.org/show_bug.cgi?id=170924 - - - Reviewed by Mark Lam. - - * stress/error-message-for-function-base-not-found.js: Added. - (assert): - (throw.new.Error): - * stress/error-messages-for-in-operator-should-not-crash.js: Added. - (catch): - -2017-04-26 Keith Miller - - WebAssembly: Implement tier up - https://bugs.webkit.org/show_bug.cgi?id=170134 - - Reviewed by Filip Pizlo. - - * wasm/function-tests/trap-after-cross-instance-call.js: - * wasm/tier-up/js-to-wasm.js: Added. - (async.test): - * wasm/tier-up/wasm-to-wasm.js: Added. - (async.test): - -2017-04-26 Caitlin Potter - - [JSC] Object.keys() must discard property names with no PropertyDescriptor - https://bugs.webkit.org/show_bug.cgi?id=171291 - - Reviewed by Yusuke Suzuki. - - * es6/Proxy_ownKeys_duplicates.js: - * stress/proxy-own-keys.js: - (let.handler.getOwnPropertyDescriptor): - (let.handler.ownKeys): - -2017-04-25 Commit Queue - - Unreviewed, rolling out r215476. - https://bugs.webkit.org/show_bug.cgi?id=171304 - - "It broke JSBench" (Requested by saamyjoon on #webkit). - - Reverted changeset: - - "[ES6]. Implement Annex B.3.3 function hoisting rules for - eval" - https://bugs.webkit.org/show_bug.cgi?id=163208 - http://trac.webkit.org/changeset/215476 - -2017-04-25 Saam Barati - - JSArray::isArrayPrototypeIteratorProtocolFastAndNonObservable is wrong because it does not do the necessary checks on the base object - https://bugs.webkit.org/show_bug.cgi?id=171150 - - - Reviewed by Sam Weinig. - - * stress/spread-optimized-properly.js: Added. - (assert): - (test): - (shallowEq): - (makeArrayIterator): - (test.bar): - (test.callback): - (test.arr.__proto__.Symbol.iterator): - (test.arr.Symbol.iterator): - (test.get bar): - (test.hackedNext): - (test.test): - (test.): - -2017-04-25 Mark Lam - - [Follow up] Array.prototype.slice() should ensure that end >= begin. - https://bugs.webkit.org/show_bug.cgi?id=170989 - - - Not reviewed. - - Follow up to rename a test file that was accidentally named wrongly. - - * stress/regress-170989.js: Copied from JSTests/stress/regress-170989.patch. - * stress/regress-170989.patch: Removed. - -2017-04-25 Mark Lam - - Array.prototype.slice() should ensure that end >= begin. - https://bugs.webkit.org/show_bug.cgi?id=170989 - - - Reviewed by Saam Barati. - - * stress/regress-170989.patch: Added. - -2017-04-25 Mark Lam - - Local CSE wrongly CSEs array accesses with different result types. - https://bugs.webkit.org/show_bug.cgi?id=170990 - - - Reviewed by Saam Barati. - - * stress/regress-170990.js: Added. - -2017-04-25 Yusuke Suzuki - - WebAssembly: exporting a property with a name that's a number doesn't work - https://bugs.webkit.org/show_bug.cgi?id=168857 - - Reviewed by JF Bastien. - - r213453 allows Wasm instances to expose indexed properties. We activate the tests. - - * wasm/js-api/test_Instance.js: - (ExportedNumber): - -2017-04-24 Joseph Pecoraro - - test262: test262/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js - https://bugs.webkit.org/show_bug.cgi?id=171190 - - Reviewed by Saam Barati. - - * stress/async-await-syntax.js: - * test262.yaml: - -2017-04-24 Yusuke Suzuki - - [JSC] Use JSFixedArray directly when using call_varargs - https://bugs.webkit.org/show_bug.cgi?id=171057 - - Reviewed by Saam Barati. - - * stress/spread-capture-rest.js: Added. - (shouldBe): - (capture): - (a): - (b): - * stress/spread-multi-layers.js: Added. - (shouldBe): - (a): - (b): - (c): - (d): - * stress/spread-non-varargs.js: Added. - (shouldBe): - (a): - (b): - -2017-04-24 Joseph Pecoraro - - test262: test262/test/language/computed-property-names/class/static/getter-prototype.js - https://bugs.webkit.org/show_bug.cgi?id=170897 - - Reviewed by Saam Barati. - - * test262.yaml: - -2017-04-24 Joseph Pecoraro - - Address some FIXMEs in JavaScript tests for bugs that have been fixed - https://bugs.webkit.org/show_bug.cgi?id=171191 - - Reviewed by JF Bastien. - - * stress/proxy-is-extensible.js: - -2017-04-24 Joseph Pecoraro - - test262: test262/test/language/statements/for-of/dstr-array-elem-init-fn-name-arrow.js - https://bugs.webkit.org/show_bug.cgi?id=171160 - - Reviewed by JF Bastien. - - * stress/inferred-names.js: - * test262.yaml: - -2017-04-24 Joseph Pecoraro - - test262: test262/test/language/expressions/generators/yield-as-label.js - https://bugs.webkit.org/show_bug.cgi?id=170979 - - Reviewed by Saam Barati. - - * stress/async-await-module-reserved-word.js: - * stress/async-await-reserved-word.js: - Converge on "Cannot" instead of "Can't". - - * catch-parameter-syntax.js: - * yield-named-variable-generator.js: - * yield-named-variable.js: - * stress/yield-label-generator.js: - * stress/yield-label.js: - * stress/yield-reserved-word.js: Added. - More complete list of when 'yield' is allowed. - - * ChakraCore/test/strict/23.reservedWords_sm.baseline-jsc: - * test262.yaml: - -2017-04-23 Commit Queue - - Unreviewed, rolling out r215674. - https://bugs.webkit.org/show_bug.cgi?id=171212 - - Possible unintended commit. This patch was on the wrong bug. - (Requested by JoePeck on #webkit). - - Reverted changeset: - - "test262: test262/test/language/expressions/generators/yield- - as-label.js" - https://bugs.webkit.org/show_bug.cgi?id=170979 - http://trac.webkit.org/changeset/215674 - -2017-04-23 Joseph Pecoraro - - test262: test262/test/built-ins/Number/prototype/toPrecision/nan.js - https://bugs.webkit.org/show_bug.cgi?id=171197 - - Reviewed by Saam Barati. - - * test262.yaml: - -2017-04-23 Joseph Pecoraro - - test262: test262/test/language/expressions/generators/yield-as-label.js - https://bugs.webkit.org/show_bug.cgi?id=170979 - - Reviewed by Saam Barati. - - * stress/async-await-module-reserved-word.js: - * stress/async-await-reserved-word.js: - Converge on "Cannot" instead of "Can't". - - * catch-parameter-syntax.js: - * yield-named-variable-generator.js: - * yield-named-variable.js: - * stress/yield-label-generator.js: - * stress/yield-label.js: - * stress/yield-reserved-word.js: Added. - More complete list of when 'yield' is allowed. - - * ChakraCore/test/strict/23.reservedWords_sm.baseline-jsc: - * test262.yaml: - -2017-04-23 Joseph Pecoraro - - test262: test262/test/built-ins/Number/parseFloat.js - https://bugs.webkit.org/show_bug.cgi?id=171193 - - Reviewed by Yusuke Suzuki. - - * test262.yaml: - -2017-04-22 JF Bastien - - WebAssembly: Module.exports, Module.imports, Module.customSections are wrong - https://bugs.webkit.org/show_bug.cgi?id=171078 - - Reviewed by Saam Barati. - - They're static properties of Module, not instance properties of a module. - https://github.com/WebAssembly/design/blob/master/JS.md#webassemblymoduleexports - - * wasm/js-api/Module.customSection.js: - (assert.throws.WebAssembly.Module.customSections): - (assert.eq): - (assert.throws.WebAssembly.Module.prototype.customSections): Deleted. - * wasm/js-api/Module.exports.js: - (assert.throws.WebAssembly.Module.exports): - (assert.truthy): - (assert.throws.WebAssembly.Module.prototype.exports): Deleted. - * wasm/js-api/Module.imports.js: - (assert.throws.WebAssembly.Module.imports): - (assert.truthy): - (assert.throws.WebAssembly.Module.prototype.imports): Deleted. - -2017-04-21 JF Bastien - - Silence noisy test - - Unreviewed, Fil / Michael and I talked about it in the corridor. I - just forgot to set verbose to false before commit. - - * wasm/stress/oom.js: - -2017-04-20 Yusuke Suzuki - - [JSC][FTL] FTL should support Arrayify - https://bugs.webkit.org/show_bug.cgi?id=169596 - - Reviewed by Saam Barati. - - * stress/arrayify.js: Added. - (arrayifyInt32): - (arrayifyDouble): - (arrayifyContiguous): - -2017-04-20 Mark Lam - - virtualThunkFor() needs to materialize its of tagMaskRegister for tail calls. - https://bugs.webkit.org/show_bug.cgi?id=171079 - - - Reviewed by Saam Barati. - - * stress/regress-171079.js: Added. - -2017-04-15 Filip Pizlo - - Optimize SharedArrayBuffer in the DFG+FTL - https://bugs.webkit.org/show_bug.cgi?id=164108 - - Reviewed by Saam Barati. - - Added a fairly comprehensive test of the intrinsics. This creates a function for each possible - combination of type and operation, and then first uses it nicely and then tries a bunch of - erroneous conditions like OOB. - - * stress/SharedArrayBuffer-opt.js: Added. - (string_appeared_here.switch): - (string_appeared_here.str): - (runAtomic): - (shouldFail): - (Symbol): - (string_appeared_here.a.of.arrays.m.of.atomics): - * stress/SharedArrayBuffer.js: - -2017-04-19 Mark Lam - - B3StackmapSpecial should handle when stackmap values are not recoverable from a Def'ed arg. - https://bugs.webkit.org/show_bug.cgi?id=170973 - - - Reviewed by Filip Pizlo. - - * stress/regress-170973.js: Added. - -2017-04-19 JF Bastien - - WebAssembly: limit slow memories - https://bugs.webkit.org/show_bug.cgi?id=170825 - - Reviewed by Saam Barati. - - * wasm.yaml: - * wasm/stress/oom.js: Added. - (try.true.WebAssemblyMemoryMode): - (catch): - -2017-04-19 JF Bastien - - WebAssembly: don't expose any WebAssembly JS object if JIT is off - https://bugs.webkit.org/show_bug.cgi?id=170782 - - Reviewed by Saam Barati. - - * wasm.yaml: - * wasm/noJIT/noJIT.js: Added. - -2017-04-18 Mark Lam - - r211670 broke double to int conversion. - https://bugs.webkit.org/show_bug.cgi?id=170961 - - - Reviewed by Yusuke Suzuki. - - * microbenchmarks/double-to-int32.js: Added. - * stress/to-int32-sensible2.js: Added. - -2017-04-18 Oleksandr Skachkov - - [ES6]. Implement Annex B.3.3 function hoisting rules for eval - https://bugs.webkit.org/show_bug.cgi?id=163208 - - Reviewed by Saam Barati. - - * stress/eval-func-decl-block-scoping-reassign.js: Added. - (assert): - (throw.new.Error.f): - (throw.new.Error): - * stress/eval-func-decl-block-with-remove.js: Added. - (assert): - (foo.boo): - (foo): - * stress/eval-func-decl-block-with-var-and-remove.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (joo): - (koo): - * stress/eval-func-decl-block-with-var-sinthesize.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (hoo): - (joo): - (koo): - * stress/eval-func-decl-in-block-scope-and-bind-to-top-eval-scope.js: Added. - * stress/eval-func-decl-in-eval-within-block-with-let.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (goo): - * stress/eval-func-decl-in-eval-within-with-scope.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (boo.let.val2): - (boo.let.val3): - * stress/eval-func-decl-in-frozen-global.js: Added. - (assert): - (assertThrow): - (throw.new.Error): - (Object.freeze): - * stress/eval-func-decl-in-global-of-eval.js: Added. - (assert): - (assertThrow): - (bar): - (baz): - (foobar): - * stress/eval-func-decl-in-global.js: Added. - (assert): - (assertThrow): - * stress/eval-func-decl-in-if.js: Added. - (assert): - * stress/eval-func-decl-within-eval-with-reassign-to-var.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (foobar): - (hoo): - (joo): - (koo): - (loo): - * stress/eval-func-decl-within-eval-without-reassign-to-let.js: Added. - (assert): - (assertThrow): - (foo): - (boo): - (goo): - * stress/variable-under-tdz-eval-tricky.js: - (assert): - * test262.yaml: - -2017-04-18 Filip Pizlo - - wasm/function-tests/memory-multiagent times out sometimes - https://bugs.webkit.org/show_bug.cgi?id=170958 - - Reviewed by Keith Miller. - - Add the ability to skip tests easily. Skip the test. - - * wasm.yaml: - * wasm/function-tests/memory-multiagent.js: - -2017-04-18 Saam Barati - - Follow up to debug build stack overflow in test after r215453 - - Rubber stamped by Mark Lam. - - * stress/call-apply-exponential-bytecode-size.js: Decrease the call - size to prevent stack overflow errors on debug builds. - -2017-04-18 Yusuke Suzuki - - [DFG] Convert ValueAdd(Int32, String) => MakeRope(ToString(Int32), String) - https://bugs.webkit.org/show_bug.cgi?id=170943 - - Reviewed by Geoffrey Garen. - - * microbenchmarks/number-to-string-with-add-empty.js: Added. - (toStringLeft): - (toStringRight): - * microbenchmarks/number-to-string-with-add-in-loop.js: Added. - (toStringLeft): - (toStringRight): - * microbenchmarks/number-to-string-with-add.js: Added. - (toStringLeft): - (toStringRight): - * stress/number-to-string-with-add.js: Added. - (shouldBe): - (toStringRight): - (toStringLeftEmpty): - (toStringRightEmpty): - -2017-04-18 Yusuke Suzuki - - [DFG] Drop unknown use of CheckCell's child2 to work ObjectAllocationSinking for Array iterator object - https://bugs.webkit.org/show_bug.cgi?id=170940 - - Reviewed by Filip Pizlo. - - * microbenchmarks/for-of-array.js: Added. - (fn): - -2017-04-17 Saam Barati - - BytecodeGenerator ".call" and ".apply" is exponential in nesting depth - https://bugs.webkit.org/show_bug.cgi?id=139847 - - - Reviewed by Oliver Hunt. - - * stress/call-apply-exponential-bytecode-size.js: Added. - (assert): - (const.inc): - (const.inc2): - (bar): - (randomApplyOrCall): - (baz): - (jaz): - (haz): - (foo): - -2017-04-17 Mark Lam - - JSArray::appendMemcpy() needs to handle copying from Undecided indexing type too. - https://bugs.webkit.org/show_bug.cgi?id=170896 - - - Reviewed by JF Bastien and Keith Miller. - - * stress/regress-170896.js: Added. - -2017-04-16 Joseph Pecoraro - - test262: test262/test/built-ins/Object/prototype/toLocaleString/primitive_this_value.js - https://bugs.webkit.org/show_bug.cgi?id=170882 - - Reviewed by Saam Barati. - - * test262.yaml: - -2017-04-16 Joseph Pecoraro - - test262: test262/test/built-ins/isNaN/toprimitive-not-callable-throws.js - https://bugs.webkit.org/show_bug.cgi?id=170888 - - Reviewed by Saam Barati. - - * stress/computed-accessor.js: - * stress/eval-in-arrow-function.js: - * stress/rest-elements.js: - * stress/string-object-define-own-property.js: - Remove unused shouldThrow. - - * stress/symbol-toprimitive-errors.js: Added. - Check for ToPrimitive TypeErrors. - - * test262.yaml: - -2017-04-16 Joseph Pecoraro - - test262: test262/test/language/expressions/tagged-template/template-object.js - https://bugs.webkit.org/show_bug.cgi?id=170878 - - Reviewed by Saam Barati. - - * stress/array-length-not-writable.js: Added. - (assert): - * test262.yaml: - -2017-04-16 Joseph Pecoraro - - test262: test262/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-44.js - https://bugs.webkit.org/show_bug.cgi?id=170879 - - Reviewed by Saam Barati. - - * ChakraCore/test/es5/enumerable.baseline-jsc: - * test262.yaml: - -2017-04-16 Joseph Pecoraro - - test262: test262/test/built-ins/Date/prototype/Symbol.toPrimitive/name.js - https://bugs.webkit.org/show_bug.cgi?id=170884 - - Reviewed by Yusuke Suzuki. - - * test262.yaml: - -2017-04-15 Joseph Pecoraro - - test262: test262/test/language/global-code/new.target-arrow.js - https://bugs.webkit.org/show_bug.cgi?id=170872 - - Reviewed by Saam Barati. - - * stress/async-arrow-functions-lexical-new.target-binding.js: - (shouldThrowAsync): Deleted. - (shouldThrowAsync.async): Deleted. - This code should have thrown a SyntaxError. Instead it was throwing - a ReferenceError for the internal @newTargetLocal variable. - - * stress/new-target-syntax-errors.js: - Cover the arrow function in global code cases. - - * ChakraCore.yaml: - * ChakraCore/test/es6/globalLambdaNewTargetSyntaxError.baseline-jsc: - We now pass with an expected SyntaxError. Our error message is different. - - * test262.yaml: - -2017-04-14 Saam Barati - - ParseInt intrinsic in DFG backend doesn't properly flush its operands - https://bugs.webkit.org/show_bug.cgi?id=170865 - - Reviewed by Mark Lam and Geoffrey Garen. - - * stress/parse-int-intrinsic-dfg-backend-flush.js: Added. - (assert): - (foo): - -2017-04-14 Caitlin Potter - - [JSC] use ExpressionErrorClassifier for AwaitExpression operand - https://bugs.webkit.org/show_bug.cgi?id=170844 - - Reviewed by Saam Barati. - - * stress/regress-170732.js: Added. - -2017-04-14 Oleksandr Skachkov - - Safari 10.1 JSON.parse returns incorrect object for numeric keys with decimal values - https://bugs.webkit.org/show_bug.cgi?id=170442 - - Reviewed by Yusuke Suzuki. - - * stress/object-number-properties.js: - -2017-04-13 Yusuke Suzuki - - [JSC] Date.parse should accept wider range of representation - https://bugs.webkit.org/show_bug.cgi?id=170720 - - Reviewed by Darin Adler. - - * stress/date-relaxed.js: Added. - (shouldBe): - (throw.new.Error): - -2017-04-13 Mark Lam - - Should use flushDirect() when flushing the scopeRegister due to needsScopeRegister(). - https://bugs.webkit.org/show_bug.cgi?id=170661 - - - Reviewed by Filip Pizlo. - - * stress/regress-170661.js: Added. - -2017-04-13 JF Bastien - - WebAssembly: manage memory better - https://bugs.webkit.org/show_bug.cgi?id=170628 - - Reviewed by Keith Miller, Michael Saboff. - - * wasm/Builder.js: move a helper out so tests can use it - (export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section): - * wasm/WASM.js: add utilities to classify opcodes - (export.opcodes): - (export.const.memoryAccessInfo.op.const.sign): - * wasm/function-tests/memory-access-past-4gib.js: Added. This test - fails before this patch. - (const.op.of.WASM.opcodes): - * wasm/function-tests/memory-many.js: Added. This simple tests - just shouldn't crash. In verbose mode it's useful at determining - if the GC falls behind or not. - * wasm/function-tests/memory-multiagent.js: Added. Emulate postMessage. - (const.startAgents.numAgentsToStart.a.agent.receiveBroadcast): - (const.startAgents.numAgentsToStart.a.write.const.idx.Math.random): - (const.broadcastToAgents): - * wasm/js-api/extension-MemoryMode.js: verbose logging. - (testMemoryNoMax): - (testMemory): - (testInstanceNoMemory): - (testInstanceNoMax): - (testInstance): - * wasm/utilities.js: move a utility here. - -2017-04-12 Joseph Pecoraro - - test262: test262/test/built-ins/NativeErrors/EvalError/proto.js - https://bugs.webkit.org/show_bug.cgi?id=170668 - - Reviewed by Keith Miller. - - * ChakraCore.yaml: - * ChakraCore/test/Lib/error.baseline-jsc: Added. - This test does not match the spec. - - * test262.yaml: - -2017-04-12 Joseph Pecoraro - - test262: test262/test/language/literals/regexp/u-dec-esc.js - https://bugs.webkit.org/show_bug.cgi?id=170687 - - Reviewed by Michael Saboff. - - * test262.yaml: - -2017-04-11 Michael Saboff - - Implement Object.isFrozen() and Object.isSealed() per ECMA spec - https://bugs.webkit.org/show_bug.cgi?id=170753 - - Reviewed by Mark Lam. - - Added JSC baseline and enabled defineIndexProperty test. - - Note that JSC differs from Chakra in that a JSC doesn't use indexed - properties placed on the Array prototype when sorting the indexed - properties of an Object. This is behavior is considered undefined - in the standard. - - * ChakraCore.yaml: - * ChakraCore/test/es5/defineIndexProperty.baseline-jsc: Added. - -2017-04-11 Joseph Pecoraro - - test262: test262/test/annexB/language/comments/multi-line-html-close.js - https://bugs.webkit.org/show_bug.cgi?id=170648 - - Reviewed by Keith Miller. - - * test262.yaml: - -2017-04-11 Joseph Pecoraro - - test262: test262/test/built-ins/Array/S15.4.3_A2.2.js - https://bugs.webkit.org/show_bug.cgi?id=170652 - - Reviewed by Michael Saboff. - - * stress/native-constructors-length.js: Added. - (assertLengthDescriptorAttributes): - Add a quick test for the length properties of all native constructors. - - * ChakraCore/test/es5/enumerable.baseline-jsc: - Rebaseline expectations for this test. - - * test262.yaml: - -2017-04-10 Keith Miller - - WebAssembly: Update spec tests - https://bugs.webkit.org/show_bug.cgi?id=170683 - - Rubber-stamped by JF Bastien. - - * wasm.yaml: - * wasm/spec-tests/br_table.wast.js: - * wasm/spec-tests/conversions.wast.js: Removed. - * wasm/spec-tests/f32_bitwise.wast.js: Added. - * wasm/spec-tests/f32_cmp.wast.js: - * wasm/spec-tests/f64_bitwise.wast.js: Added. - * wasm/spec-tests/f64_cmp.wast.js: - * wasm/spec-tests/i32.wast.js: - * wasm/spec-tests/i64.wast.js: - * wasm/spec-tests/int_exprs.wast.js: - * wasm/spec-tests/memory.wast.js: - -2017-04-09 Joseph Pecoraro - - test262: test262/test/annexB/language/expressions/object/__proto__-fn-name.js - https://bugs.webkit.org/show_bug.cgi?id=170650 - - Reviewed by Saam Barati. - - * stress/inferred-names.js: - * test262.yaml: - -2017-04-09 Joseph Pecoraro - - test262: test262/test/annexB/language/literals/regexp/identity-escape.js - https://bugs.webkit.org/show_bug.cgi?id=170651 - - Reviewed by Saam Barati. - - * test262.yaml: - -2017-04-07 Michael Saboff - - Fix and enable ChakraCore/test/es6/ES6Function_bugs.js after r215072 - https://bugs.webkit.org/show_bug.cgi?id=170580 - - Reviewed by JF Bastien. - - Commented out subtest that expects defineProperty("length") to a getter on a - sealed function shouldn't throw. - - * ChakraCore.yaml: - * ChakraCore/test/es6/ES6Function_bugs.js: - -2017-04-06 Michael Saboff - - Cannot Object.seal() or Object.freeze() global "this" - https://bugs.webkit.org/show_bug.cgi?id=170549 - - Reviewed by Mark Lam. - - Enabled failing tests fixed by the corresponding code change: - ChakraCore/test/LetConst/delete.js - ChakraCore/test/LetConst/dop.js - ChakraCore/test/LetConst/dop1.js - - * ChakraCore.yaml: - * ChakraCore/test/LetConst/dop.baseline-jsc: Added JSC specific expected output. - * ChakraCore/test/LetConst/dop1.baseline-jsc: Added JSC specific expected output. - -2017-04-05 Joseph Pecoraro - - test262: ES2017 test progressions need updated expectations (arguments.caller removed) - https://bugs.webkit.org/show_bug.cgi?id=170536 - - Reviewed by Mark Lam. - - * test262.yaml: - After r208867 the tests are out of date and are now expected to fail. - -2017-04-05 Joseph Pecoraro - - test262: Final rebaseline of existing tests, a few tests have started failing - https://bugs.webkit.org/show_bug.cgi?id=170538 - - Reviewed by Mark Lam. - - * test262.yaml: - These tests started failing a while ago. Mark them as legitmate failures. - -2017-04-05 Joseph Pecoraro - - test262: Rebaseline expectations for now passing tests - https://bugs.webkit.org/show_bug.cgi?id=170532 - - Reviewed by Ryosuke Niwa. - - * test262.yaml: - Update expectations for tests we are now passing. - -2017-04-05 Joseph Pecoraro - - test262: module test progressions need updated expectations (@@iterator changes) - https://bugs.webkit.org/show_bug.cgi?id=170535 - - Reviewed by Saam Barati. - - * test262.yaml: - After r212430 the tests are out of date and are now expected to fail. - -2017-04-05 Michael Saboff - - Unreviewed rollout of r214642 as the test still intermittently fails. - - Disabled ChakraCore/test/fieldopts/objtypespec-newobj-invalidation.1.js. - - * ChakraCore.yaml: - -2017-04-05 Michael Saboff - - REGRESSION (Safari 10.1): Inserting elements into arrays fails when array contains very large numbers - https://bugs.webkit.org/show_bug.cgi?id=170264 - - - Rubber-stamped by Saam Barati. - - The original bug was fixed in: https://trac.webkit.org/changeset/214714 - I'm just adding another test for good measure. - - * stress/double-array-to-array-storage.js: Added. - (assert): - -2017-04-05 Keith Miller - - WebAssembly: We shouldn't need to pin size registers if we have a fast memory. - https://bugs.webkit.org/show_bug.cgi?id=170504 - - Reviewed by Mark Lam. - - * wasm/function-tests/trap-after-cross-instance-call.js: Added. - (b.new.WebAssembly.Memory): - (importObject.foo.bar): - (wasmFrameCountFromError): - -2017-03-16 Yusuke Suzuki - - [JSC] Generate TemplateObjects at linking time - https://bugs.webkit.org/show_bug.cgi?id=169743 - - Reviewed by Keith Miller. - - * stress/template-string-tags-eval.js: Added. - (shouldBe): - (tag): - -2017-04-04 Mark Lam - - On ARM64, DFG::SpeculativeJIT::compileArithMod() failed to ensure result is of DataFormatInt32. - https://bugs.webkit.org/show_bug.cgi?id=170473 - - - Reviewed by Saam Barati. - - * stress/regress-170473.js: Added. - -2017-04-03 Mark Lam - - Fix incorrect capacity delta calculation reported in SparseArrayValueMap::add(). - https://bugs.webkit.org/show_bug.cgi?id=170412 - - - Reviewed by Filip Pizlo. - - * stress/regress-170412.js: Added. - -2017-04-03 Keith Miller - - WebAssembly: Update spec tests - https://bugs.webkit.org/show_bug.cgi?id=170361 - - Rubber-stamped by Saam Barati. - - Update the spec tests to run tests generated by the newer spec - test builder wasm-spec/test/builder.py. This patch also adds the - necessary harness code in spec-harness.js so we can run the tests. - - * wasm.yaml: - * wasm/import-spec-tests.rb: - * wasm/spec-harness.js: Added. - (import.string_appeared_here.then): - (test): - (promise_test): - (let.assert_unreached): - * wasm/spec-harness/index.js: Added. - (let.testNum): - (assertThrows): - (_assert): - (ValueResult): - (ErrorResult): - (Result.prototype.isError): - (binary): - (module): - (uniqueTest): - (assert_invalid): - (assert_soft_invalid): - (register): - (call): - (get instance): - (exports): - (run): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (try.f): - (catch): - (assert_exhaustion): - (assert_return): - (assert_return_nan): - * wasm/spec-harness/testharness.css: Added. - (html): - (#log .warning,): - (#log .error,): - (section#summary): - (table#results): - (table#results th:first-child,): - (table#results th:last-child,): - (table#results.assertions th:last-child,): - (table#results th): - (table#results td): - (tr.pass > td:first-child): - (tr.fail > td:first-child): - (tr.timeout > td:first-child): - (tr.notrun > td:first-child): - (.pass > td:first-child, .fail > td:first-child, .timeout > td:first-child, .notrun > td:first-child): - (table#results span): - (table#results span.expected): - (table#results span.actual): - (span.ok): - (tr.error): - (span.timeout): - (span.ok, span.timeout, span.error): - * wasm/spec-harness/testharness.js: Added. - (WindowTestEnvironment): - (WindowTestEnvironment.prototype._dispatch): - (WindowTestEnvironment.prototype._forEach_windows): - (WindowTestEnvironment.prototype.on_tests_ready): - (WindowTestEnvironment.prototype.setup_messages): - (WindowTestEnvironment.prototype.next_default_test_name): - (WindowTestEnvironment.prototype.on_new_harness_properties): - (WindowTestEnvironment.prototype.add_on_loaded_callback): - (WindowTestEnvironment.prototype.test_timeout): - (WindowTestEnvironment.prototype.global_scope): - (WorkerTestEnvironment): - (WorkerTestEnvironment.prototype._dispatch): - (WorkerTestEnvironment.prototype._add_message_port): - (WorkerTestEnvironment.prototype.next_default_test_name): - (WorkerTestEnvironment.prototype.on_new_harness_properties): - (WorkerTestEnvironment.prototype.on_tests_ready): - (WorkerTestEnvironment.prototype.add_on_loaded_callback): - (WorkerTestEnvironment.prototype.test_timeout): - (WorkerTestEnvironment.prototype.global_scope): - (DedicatedWorkerTestEnvironment): - (DedicatedWorkerTestEnvironment.prototype.on_tests_ready): - (SharedWorkerTestEnvironment): - (SharedWorkerTestEnvironment.prototype.on_tests_ready): - (ServiceWorkerTestEnvironment): - (ServiceWorkerTestEnvironment.prototype.add_on_loaded_callback): - (create_test_environment): - (is_shared_worker): - (is_service_worker): - (test): - (async_test): - (promise_test): - (this.wait_for): - (EventWatcher): - (setup): - (done): - (generate_tests): - (step_timeout): - (truncate): - (is_node): - (format_value): - * wasm/spec-harness/testharnessreport.js: Added. - * wasm/spec-harness/wasm-constants.js: Added. - (bytes): - (bytesWithHeader): - (makeSig): - (makeSig_v_x): - (makeSig_v_xx): - (makeSig_r_v): - (makeSig_r_x): - (makeSig_r_xx): - (assertTraps): - (assertWasmThrows): - * wasm/spec-harness/wasm-module-builder.js: Added. - (Binary.prototype.emit_u8): - (Binary.prototype.emit_u16): - (Binary.prototype.emit_u32): - (Binary.prototype.emit_u32v): - (Binary.prototype.emit_bytes): - (Binary.prototype.emit_string): - (Binary.prototype.emit_header): - (Binary.prototype.emit_section): - (Binary): - (WasmFunctionBuilder): - (WasmFunctionBuilder.prototype.exportAs): - (WasmFunctionBuilder.prototype.exportFunc): - (WasmFunctionBuilder.prototype.addBody): - (WasmFunctionBuilder.prototype.addLocals): - (WasmFunctionBuilder.prototype.end): - (WasmGlobalBuilder): - (WasmGlobalBuilder.prototype.exportAs): - (WasmModuleBuilder): - (WasmModuleBuilder.prototype.addStart): - (WasmModuleBuilder.prototype.addMemory): - (WasmModuleBuilder.prototype.addExplicitSection): - (WasmModuleBuilder.prototype.addType): - (WasmModuleBuilder.prototype.addGlobal): - (WasmModuleBuilder.prototype.addFunction): - (WasmModuleBuilder.prototype.addImport): - (WasmModuleBuilder.prototype.addImportedGlobal): - (WasmModuleBuilder.prototype.addImportedMemory): - (WasmModuleBuilder.prototype.addImportedTable): - (WasmModuleBuilder.prototype.addExport): - (WasmModuleBuilder.prototype.addExportOfKind): - (WasmModuleBuilder.prototype.addDataSegment): - (WasmModuleBuilder.prototype.exportMemoryAs): - (WasmModuleBuilder.prototype.addFunctionTableInit): - (WasmModuleBuilder.prototype.appendToTable): - (WasmModuleBuilder.prototype.setFunctionTableLength): - (WasmModuleBuilder.prototype.toArray): - (WasmModuleBuilder.prototype.toBuffer): - (WasmModuleBuilder.prototype.instantiate): - * wasm/spec-harness/wast.js: Added. - (normalize): - (require.else._registry.name): - (require): - (add_hex_char): - (add_char): - (string_with): - (list_of_opt): - (break_bytes.f): - (break_bytes): - (f): - (decls): - (func_type): - (limits): - (global_type): - (testop): - (relop): - (unop): - (binop): - (cvtop): - (oper): - (mem_size): - (extension): - (memop): - (storeop): - (var): - (constop): - (instr.else.switch.case.0.f): - (instr.else.switch.case.1.f.1): - (instr.else.switch.case.2.f.2): - (instr): - (func_with_name): - (func): - (start): - (table): - (memory): - (segment): - (elems): - (data): - (typedef): - (import_kind): - (import): - (export_kind): - (export): - (var_opt): - (is_func_import): - (is_table_import): - (is_memory_import): - (is_global_import): - (f.1): - (f.2): - (f.3): - (module_with_var_opt): - (module_): - (literal): - (definition): - (access): - (action): - (script): - (_registry.string_appeared_here): - (init): - (make_matrix): - (copy): - (append): - (sub): - (fill): - (blit): - (iter): - (map): - (iteri): - (mapi): - (to_list): - (list_length): - (of_list): - (fold_left): - (fold_right): - (maxson): - (trickle): - (bubble): - (trickleup): - (sort): - (merge): - (isortto): - (sortto): - (stable_sort): - (import_type): - (export_type): - (dims.n): - (dims.d.i): - (dims): - (map_file): - (create): - (of_array): - (slice_left): - (slice_right): - (slice_left_1): - (slice_right_1): - (slice_left_2): - (slice_right_2): - (array1_of_genarray): - (array2_of_genarray): - (array3_of_genarray): - (reshape_1): - (reshape_2): - (reshape_3): - (reshape): - (__): - (contents): - (to_bytes): - (nth): - (length): - (clear): - (reset): - (resize): - (add_substring): - (add_subbytes): - (add_string): - (add_bytes): - (add_buffer): - (add_channel): - (output_buffer): - (closing): - (advance_to_closing): - (advance_to_non_alpha): - (find_ident): - (add_substitute): - (make): - (to_string): - (of_string): - (sub_string): - (extend): - (blit_string): - (concat): - (cat): - (is_space): - (trim): - (escaped): - (uppercase): - (lowercase): - (apply1): - (capitalize): - (uncapitalize): - (index_rec): - (index): - (index_from): - (rindex_rec): - (rindex): - (rindex_from): - (contains_from): - (contains): - (rcontains_from): - (caml_array_sub): - (len): - (caml_array_concat): - (caml_make_vect): - (caml_array_blit): - (get if): - (caml_set_oo_id): - (get_id): - (caml_int32_float_of_bits): - (caml_int32_bits_of_float): - (caml_classify_float): - (caml_modf_float): - (caml_ldexp_float): - (caml_frexp_float): - (caml_copysign_float): - (caml_expm1_float): - (caml_hypot_float): - (caml_log10_float): - (caml_failwith): - (parse_digit): - (int_of_string_base): - (parse_sign_and_base): - (caml_int_of_string.aux): - (caml_int_of_string): - (caml_int64_of_string.aux): - (caml_int64_of_string): - (int_of_base): - (parse_format): - (finish_formatting): - (caml_format_int): - (caml_int64_format): - (caml_format_float): - (float_of_string): - (div): - (mod_): - (caml_bswap16): - (caml_int32_bswap): - (imul): - (neg_signed): - (not): - (eq): - (neg): - (lsl_): - (lsr_): - (asr_): - (is_zero): - (mul): - (swap): - (xor): - (or_): - (and_): - (ge): - (lt): - (gt): - (le): - (to_float): - (of_float): - (div_mod): - (compare): - (of_int32): - (to_int32): - (to_hex.aux): - (to_hex): - (discard_sign): - (float_of_bits): - (bits_of_float.to_nat): - (bits_of_float): - (get64): - (erase_rel): - (concat_fmtty): - (concat_fmt): - (create_char_set): - (add_in_char_set): - (rev_char_set): - (is_in_char_set): - (prec_of_prec_opt): - (param_format_of_ignored_format): - (buffer_check_size): - (buffer_add_char): - (buffer_add_string): - (buffer_contents): - (char_of_iconv): - (char_of_fconv): - (char_of_counter): - (print_char): - (set while.set var): - (set while.set else): - (set var): - (set else): - (set print_char): - (set if): - (bprint_padty): - (bprint_ignored_flag): - (bprint_pad_opt): - (bprint_padding): - (bprint_precision): - (bprint_iconv_flag): - (bprint_int_fmt): - (bprint_altint_fmt): - (bprint_fconv_flag): - (bprint_float_fmt): - (string_of_formatting_lit): - (string_of_formatting_gen): - (bprint_char_literal): - (bprint_string_literal): - (bprint_fmtty): - (int_of_custom_arity): - (bprint_fmt): - (string_of_fmt): - (symm): - (fmtty_rel_det): - (trans): - (fmtty_of_formatting_gen): - (fmtty_of_fmt): - (fmtty_of_custom): - (fmtty_of_padding_fmtty): - (fmtty_of_precision_fmtty): - (type_padding): - (type_padprec): - (type_ignored_param_one): - (type_format_gen): - (type_ignored_format_substitution): - (type_format): - (recast): - (fix_padding): - (fix_int_precision): - (string_to_caml_string): - (format_of_iconv): - (format_of_aconv): - (format_of_fconv): - (convert_int): - (convert_int32): - (convert_nativeint): - (convert_int64): - (else.is_valid): - (convert_float): - (format_caml_char): - (string_of_fmtty): - (else.switch.): - (else.switch.k.prime): - (else.switch.else.): - (else.switch.else.k.prime.1): - (make_printf): - (make_from_fmtty): - (make_invalid_arg): - (make_string_padding): - (make_int_padding_precision): - (make_custom): - (output_acc): - (bufput_acc): - (strput_acc): - (failwith_message.k): - (failwith_message): - (open_box_of_string.else.invalid_box): - (open_box_of_string.else.parse_spaces): - (open_box_of_string.else.parse_lword): - (open_box_of_string.else.parse_int): - (open_box_of_string): - (make_padding_fmt_ebb): - (make_precision_fmt_ebb): - (make_padprec_fmt_ebb): - (invalid_format_message): - (invalid_format_without): - (expected_character): - (compute_int_conv): - (incompatible_flag): - (parse_positive): - (parse_conv): - (parse_after_precision): - (else.parse_literal): - (parse_after_padding): - (parse_literal): - (parse_after_at): - (add_literal): - (parse_spaces): - (parse_integer): - (compute_float_conv): - (search_subformat_end): - (check_no_0): - (opt_of_pad): - (get_prec_opt): - (else.switch.case.99.char_format): - (else.switch.scan_format): - (parse_conversion): - (set_flag): - (parse_flags): - (is_int_base): - (counter_of_char): - (add_range): - (fail_single_percent): - (parse_char_set_after_char): - (parse_char_set_content): - (parse_char_set_start): - (parse_char_set): - (check_open_box): - (parse_tag): - (fmt_ebb_of_string): - (format_of_string_fmtty): - (format_of_string_format): - (caret): - (caml_ml_open_descriptor_in): - (caml_ml_open_descriptor_out): - (caml_ml_flush): - (node_std_output): - (caml_ml_output_char): - (caml_ml_input): - (caml_ml_input_char): - (caml_ml_out_channels_list): - (fail): - (caml_lex_array): - (caml_lex_engine): - (caml_lex_run_mem): - (caml_lex_run_tag): - (caml_new_lex_engine): - (caml_obj_dup): - (caml_obj_truncate): - (caml_lazy_make_forward): - (caml_update_dummy): - (caml_int_compare): - (caml_compare): - (caml_equal): - (caml_notequal): - (caml_greaterequal): - (caml_lessequal): - (else.aux): - (caml_get_public_method): - (caml_parse_engine): - (caml_set_parser_trace): - (js_string_of_char): - (caml_string_get): - (caml_create_string): - (caml_string_compare): - (caml_fill_string): - (caml_blit_string): - (caml_blit_bytes): - (bytes_of_string): - (bytes_to_string): - (caml_string_of_char_array): - (caml_is_printable): - (caml_string_get16): - (caml_string_get32): - (repeat): - (chr): - (app): - (js): - (curry_1): - (_1): - (js1): - (__1): - (curry_2): - (_2): - (js2): - (__2): - (curry_3): - (_3): - (js3): - (__3): - (curry_4): - (_4): - (js4): - (__4): - (curry_5): - (_5): - (js5): - (__5): - (curry_6): - (_6): - (js6): - (__6): - (curry_7): - (_7): - (js7): - (__7): - (curry_8): - (_8): - (js8): - (__8): - (stream): - (eos): - (skip): - (read): - (peek): - (string_of_byte): - (position): - (region): - (error): - (guard): - (get 1): - (get expect): - (get illegal): - (at): - (u32): - (u64): - (get require): - (vuN): - (get var): - (vsN): - (vu32): - (vs32): - (vs64): - (f32): - (f64): - (len32): - (string): - (opt): - (vec): - (sized): - (value_type): - (elem_type): - (stack_type): - (table_type): - (memory_type): - (mutability.get if): - (mutability): - (instr.get if): - (instr_block): - (const): - (id): - (section): - (type_section): - (import_kind.get if): - (import_section): - (func_section): - (table_section): - (memory_section): - (global): - (global_section): - (export_kind.get if): - (export_section): - (start_section): - (local): - (code): - (code_section): - (table_segment): - (elem_section): - (memory_segment): - (data_section): - (partial_arg.1): - (custom): - (custom_section): - (iterate): - (decode): - (patch): - (encode.u8): - (encode.u16): - (encode.u32): - (encode.vu64): - (encode.vs64): - (encode.vu32): - (encode.len): - (encode.bool): - (encode.string): - (encode.vec): - (encode.gap32): - (encode.patch_gap32): - (encode.value_type): - (encode.stack_type): - (encode.func_type): - (encode.limits): - (encode.table_type): - (encode.memory_type): - (encode.global_type): - (encode.memop): - (encode): - (encode.instr): - (encode.const): - (encode.section): - (encode.type_section): - (encode.import): - (encode.import_section): - (encode.func): - (encode.func_section): - (encode.table): - (encode.table_section): - (encode.memory): - (encode.memory_section): - (encode.global): - (encode.global_section): - (encode.export_kind): - (encode.export): - (encode.export_section): - (encode.start_section): - (encode.combine): - (encode.compress): - (encode.local): - (encode.code): - (encode.code_section): - (encode.segment): - (encode.table_segment): - (encode.elem_section): - (encode.memory_segment): - (encode.module_): - (Make.warn): - (Make.error): - (Make): - (print_nan_significand_digits): - (Make.of_bits): - (Make.to_bits): - (Make.is_nan): - (Make.canonicalize_nan): - (Make.determine_binary_nan): - (Make.determine_unary_nan): - (Make.binary): - (Make.unary): - (Make.add): - (Make.sub): - (Make.mul): - (Make.div): - (Make.sqrt): - (Make.ceil): - (Make.floor): - (Make.trunc): - (Make.nearest): - (Make.min): - (Make.max): - (Make.abs): - (Make.neg): - (Make.copysign): - (Make.eq): - (Make.ne): - (Make.lt): - (Make.gt): - (Make.le): - (Make.ge): - (Make.of_signless_string): - (Make.of_string): - (Make.to_string): - (add_queue): - (peek_queue): - (take_queue): - (pp_enqueue): - (pp_clear_queue): - (pp_output_string): - (break_new_line): - (break_same_line): - (pp_force_break_line): - (switch.add_tab): - (else.switch.find): - (format_pp_token): - (advance_left): - (enqueue_advance): - (enqueue_string_as): - (set_size): - (scan_push): - (pp_open_box_gen): - (pp_close_box): - (pp_open_tag): - (pp_close_tag): - (pp_set_print_tags): - (pp_set_mark_tags): - (pp_get_print_tags): - (pp_get_mark_tags): - (pp_set_tags): - (pp_get_formatter_tag_functions): - (pp_set_formatter_tag_functions): - (pp_rinit): - (pp_flush_queue): - (pp_print_as_size): - (pp_print_string): - (pp_print_int): - (pp_print_float): - (pp_print_bool): - (pp_open_hbox): - (pp_open_vbox): - (pp_open_hvbox): - (pp_open_hovbox): - (pp_open_box): - (pp_print_newline): - (pp_print_flush): - (pp_force_newline): - (pp_print_if_newline): - (pp_print_break): - (pp_print_space): - (pp_print_cut): - (pp_open_tbox): - (pp_close_tbox): - (pp_print_tbreak): - (pp_print_tab): - (pp_set_tab): - (pp_print_list): - (flush): - (pp_print_text): - (pp_set_max_boxes): - (pp_get_max_boxes): - (pp_over_max_boxes): - (pp_get_ellipsis_text): - (pp_limit): - (pp_set_max_indent): - (pp_get_max_indent): - (pp_set_margin): - (pp_get_margin): - (pp_set_formatter_out_functions): - (pp_get_formatter_out_functions): - (pp_set_formatter_output_functions): - (pp_get_formatter_output_functions): - (pp_set_all_formatter_output_functions): - (pp_get_all_formatter_output_functions): - (display_newline): - (display_blanks): - (state.16): - (state.17): - (state.18): - (state.19): - (pp_set_formatter_out_channel): - (default_pp_mark_open_tag): - (default_pp_mark_close_tag): - (default_pp_print_open_tag): - (default_pp_print_close_tag): - (pp_make_formatter): - (ppf.18): - (ppf.19): - (make_formatter): - (formatter_of_out_channel): - (formatter_of_buffer): - (flush_str_formatter): - (flush_buf_formatter): - (open_hbox): - (open_vbox): - (open_hvbox): - (open_hovbox): - (open_box): - (close_box): - (open_tag): - (close_tag): - (print_as): - (print_string): - (print_int): - (print_float): - (print_bool): - (print_cut): - (print_space): - (force_newline): - (print_flush): - (print_newline): - (print_if_newline): - (open_tbox): - (close_tbox): - (print_tbreak): - (set_tab): - (print_tab): - (set_margin): - (get_margin): - (set_max_indent): - (get_max_indent): - (set_max_boxes): - (get_max_boxes): - (over_max_boxes): - (set_ellipsis_text): - (get_ellipsis_text): - (set_formatter_out_channel): - (set_formatter_out_functions): - (get_formatter_out_functions): - (set_formatter_output_functions): - (get_formatter_output_functions): - (set_all_formatter_output_functions): - (get_all_formatter_output_functions): - (set_formatter_tag_functions): - (get_formatter_tag_functions): - (set_print_tags): - (get_print_tags): - (set_mark_tags): - (get_mark_tags): - (set_tags): - (compute_tag): - (output_formatting_lit): - (kfprintf): - (ikfprintf): - (fprintf): - (ifprintf): - (printf): - (eprintf): - (k.prime): - (ksprintf): - (sprintf): - (asprintf.k.prime): - (asprintf): - (k): - (bprintf): - (succ): - (pred): - (abs): - (lognot): - (Make.cmp_u): - (Make.divrem_u): - (Make.div_s): - (Make.div_u): - (Make.rem_s): - (Make.rem_u): - (Make.shift): - (Make.shl): - (Make.shr_s): - (Make.shr_u): - (Make.clamp_rotate_count): - (Make.rotl): - (Make.rotr): - (Make.loop): - (Make.clz): - (Make.ctz): - (Make.popcnt): - (Make.eqz): - (Make.lt_u): - (Make.le_u): - (Make.gt_u): - (Make.ge_u): - (Make.of_int_u): - (Make.to_string_u): - (Make.require): - (Make.dec_digit): - (Make.hex_digit): - (Make.parse_int): - (Make.of_string_s): - (Make.of_string_u): - (convert_pos): - (error_nest): - (text): - (intop): - (floatop): - (numop): - (memsz): - (ext): - (token.else.switch): - (token.else.switch.): - (token): - (__ocaml_lex_comment_rec): - (engine): - (new_engine): - (from_function): - (from_channel): - (from_string): - (lexeme): - (sub_lexeme): - (sub_lexeme_opt): - (sub_lexeme_char): - (sub_lexeme_char_opt): - (lexeme_char): - (lexeme_start): - (lexeme_end): - (lexeme_start_p): - (lexeme_end_p): - (new_line): - (flush_input): - (take): - (drop): - (last): - (split_last): - (index_of): - (index_of_int32): - (dim): - (set 1): - (get 2): - (log2): - (is_power_of_two): - (loop): - (breakup): - (hd): - (tl): - (rev_append): - (rev): - (flatten): - (rev_map): - (map2): - (rev_map2): - (iter2): - (fold_left2): - (fold_right2): - (for_all): - (exists): - (for_all2): - (exists2): - (mem): - (memq): - (assoc): - (assq): - (mem_assoc): - (mem_assq): - (remove_assoc): - (remove_assq): - (find): - (find_all): - (partition): - (split): - (combine): - (chop): - (rev_sort): - (sort_uniq): - (Make.height): - (Make.create): - (Make.singleton): - (Make.bal): - (Make.is_empty): - (Make.find): - (Make.mem): - (Make.min_binding): - (Make.max_binding): - (Make.remove_min_binding): - (Make.remove): - (Make.iter): - (Make.map): - (Make.mapi): - (Make.fold): - (Make.for_all): - (Make.exists): - (Make.add_min_binding): - (Make.add_max_binding): - (Make.join): - (Make.concat): - (Make.concat_or_join): - (Make.split): - (Make.merge): - (Make.filter): - (Make.partition): - (Make.cons_enum): - (Make.compare): - (Make.equal): - (Make.cardinal): - (Make.bindings_aux): - (Make.bindings): - (double_field): - (set_double_field): - (marshal): - (unmarshal): - (extension_slot): - (extension_name): - (extension_id): - (i32_const): - (i64_const): - (f32_const): - (f64_const): - (block): - (br): - (br_if): - (br_table): - (if_): - (call): - (call_indirect): - (get_local): - (set_local): - (tee_local): - (get_global): - (set_global): - (i32_load): - (i64_load): - (f32_load): - (f64_load): - (i32_load8_s): - (i32_load8_u): - (i32_load16_s): - (i32_load16_u): - (i64_load8_s): - (i64_load8_u): - (i64_load16_s): - (i64_load16_u): - (i64_load32_s): - (i64_load32_u): - (i32_store): - (i64_store): - (f32_store): - (f64_store): - (i32_store8): - (i32_store16): - (i64_store8): - (i64_store16): - (i64_store32): - (parse): - (string_to): - (string_to_script): - (string_to_module): - (parse_error): - (position_to_pos): - (positions_to_region): - (ati): - (nat): - (nat32): - (empty_context): - (enter_func): - (type_): - (lookup): - (label): - (anon_type): - (bind): - (bind_func): - (bind_local): - (bind_global): - (bind_table): - (bind_memory): - (anon): - (anon_func): - (anon_locals): - (anon_global): - (anon_table): - (anon_memory): - (anon_label): - (explicit_sig): - (inline_type): - (yyact): - (script1): - (module1): - (grow_stacks): - (clear_parser): - (current_lookahead_fun): - (catch.else.current_lookahead_fun.0): - (yyparse): - (peek_val): - (symbol_start_pos): - (symbol_end_pos): - (rhs_start_pos): - (rhs_end_pos): - (symbol_start): - (symbol_end): - (rhs_start): - (rhs_end): - (is_current_lookahead): - (failwith): - (invalid_arg): - (min): - (max): - (lnot): - (char_of_int): - (string_of_bool): - (bool_of_string): - (string_of_int): - (valid_float_lexem): - (string_of_float): - (open_out_gen): - (open_out): - (open_out_bin): - (flush_all): - (output_bytes): - (output_string): - (output): - (output_substring): - (output_value): - (close_out): - (close_out_noerr): - (open_in_gen): - (open_in): - (open_in_bin): - (input): - (else.r): - (unsafe_really_input): - (really_input): - (really_input_string): - (input_line.build_result): - (input_line.n): - (input_line.scan): - (input_line): - (close_in_noerr): - (print_bytes): - (print_endline): - (prerr_char): - (prerr_string): - (prerr_bytes): - (prerr_int): - (prerr_float): - (prerr_endline): - (prerr_newline): - (read_line): - (read_int): - (read_float): - (string_of_format): - (at_exit.exit_function.0): - (at_exit): - (do_at_exit): - (exit): - (output_binary_int): - (seek_out): - (pos_out): - (out_channel_length): - (set_binary_mode_out): - (input_binary_int): - (input_value): - (seek_in): - (pos_in): - (in_channel_length): - (close_in): - (set_binary_mode_in): - (LargeFile_000): - (LargeFile_001): - (LargeFile_002): - (LargeFile_003): - (LargeFile_004): - (LargeFile_005): - (kbprintf): - (plus): - (pp): - (print): - (string_of_pos): - (string_of_region): - (escaped.needs_escape): - (set_signal): - (catch_break): - (size): - (string_of_value_type): - (string_of_value_types): - (string_of_elem_type): - (string_of_limits): - (string_of_table_type): - (string_of_global_type): - (string_of_stack_type): - (string_of_func_type): - (type_of): - (default_value): - (value_of_bool): - (string_of_values): - (to_value): - (of_value): - (g): - (binary): - (bytes): - * wasm/spec-tests/address.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/binary.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/block.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/br.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/br_if.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/br_table.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/break-drop.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/call.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/call_indirect.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/comments.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/conversions.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/custom_section.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/endianness.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/exports.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/f32.wast.js: Removed. - * wasm/spec-tests/f32_cmp.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/f64.wast.js: Removed. - * wasm/spec-tests/f64_cmp.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/fac.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/float_exprs.wast.js: Removed. - * wasm/spec-tests/float_literals.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/float_memory.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/float_misc.wast.js: Removed. - * wasm/spec-tests/forward.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/func.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/func_ptrs.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/get_local.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/globals.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/i32.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/i64.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/if.wast.js: Added. - * wasm/spec-tests/imports.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/int_exprs.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/int_literals.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/jsapi.js: Added. - (testJSAPI.get test): - (testJSAPI.test): - (testJSAPI.set test): - (testJSAPI.assertCompileError): - (testJSAPI.assertCompileSuccess): - (testJSAPI): - * wasm/spec-tests/labels.wast.js: Added. - * wasm/spec-tests/left-to-right.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/linking.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/loop.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/memory.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/memory_redundancy.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/memory_trap.wast.js: Removed. - * wasm/spec-tests/names.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/nop.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/resizing.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/return.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/select.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/set_local.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/skip-stack-guard-page.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/stack.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/start.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/store_retval.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/switch.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/tee_local.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/traps.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/typecheck.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/unreachable.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - * wasm/spec-tests/unreached-invalid.wast.js: Added. - * wasm/spec-tests/unwind.wast.js: - (register): Deleted. - (module): Deleted. - (instance): Deleted. - (assert_malformed): Deleted. - (assert_invalid): Deleted. - (assert_soft_invalid): Deleted. - (assert_unlinkable): Deleted. - (assert_uninstantiable): Deleted. - (assert_trap): Deleted. - (assert_return): Deleted. - (assert_return_nan): Deleted. - -2017-04-01 Oleksandr Skachkov - - Object with numerical keys with gaps gets filled by NaN values - https://bugs.webkit.org/show_bug.cgi?id=164412 - - Reviewed by Merk Lam. - - * stress/object-number-properties.js: Added. - (assert): - (boo): - -2017-03-30 Michael Saboff - - Turning ChakraCore/test/fieldopts/objtypespec-newobj-invalidation.1.js back as it appears to always work - https://bugs.webkit.org/show_bug.cgi?id=170313 - - Reviewed by Saam Barati. - - Enable ChakraCore/test/fieldopts/objtypespec-newobj-invalidation.1.js as it seems solid. - - * ChakraCore.yaml: - -2017-03-30 Michael Saboff - - Enable ChakraCore/Function/FuncBody.js test as it now works - https://bugs.webkit.org/show_bug.cgi?id=170301 - - Reviewed by Mark Lam. - - This test no longer crashes, so enable it and create a JSC specific - expected file. - - * ChakraCore.yaml: - * ChakraCore/test/Function/FuncBodyES5.baseline-jsc: Added. - -2017-03-30 JF Bastien - - WebAssembly: fix misc JS API implementation inconsistencies - https://bugs.webkit.org/show_bug.cgi?id=170187 - - Reviewed by Keith Miller. - - Verify that WebAssembly function are on the object's __proto__. - - * wasm/js-api/Module-compile.js: - * wasm/js-api/validate.js: - * wasm/js-api/web-assembly-instantiate.js: - -2017-03-29 JF Bastien - - WebAssembly: add shell-only Memory mode helper - https://bugs.webkit.org/show_bug.cgi?id=170227 - - Reviewed by Mark Lam. - - * wasm/assert.js: fix a prior debug thing I forgot to remove - * wasm/function-tests/memory-section-and-import.js: the assert - issue was hiding a failure in error message here - * wasm/js-api/element.js: the assert issue was hiding a failure in - error message here - (badInstantiation.test): - (badInstantiation): - * wasm/js-api/extension-MemoryMode.js: Added. - (const.validateMode.what.switch): - (testMemoryNoMax): - (testMemory): - (testInstanceNoMemory): - (testInstanceNoMax): - (testInstance): - * wasm/js-api/test_memory.js: the assert issue was hiding a - failure in error message here - (test): - -2017-03-28 Keith Miller - - WebAssembly: Make WebAssembly.instantiate/compile truly asynchronous - https://bugs.webkit.org/show_bug.cgi?id=169187 - - Reviewed by Saam Barati. - - * wasm/assert.js: - * wasm/js-api/Module-compile.js: - (async.testPromiseAPI): - * wasm/js-api/web-assembly-compile-parallel.js: Added. - (async.throwExn): - (async.test): - * wasm/js-api/web-assembly-instantiate-parallel.js: Added. - (async.test): - * wasm/js-api/web-assembly-instantiate.js: - (assert.eq.async.test): - (assert.eq): - (assert.asyncTest.async.test): - (assert.asyncTest): - (assert.truthy.async.test): Deleted. - (assert.truthy): Deleted. - -2017-03-28 JF Bastien - - WebAssembly: implement Module imports/exports - https://bugs.webkit.org/show_bug.cgi?id=166982 - - Reviewed by Saam Barati. - - * wasm/js-api/Module.exports.js: Added. - (assert.throws.WebAssembly.Module.prototype.exports): - (assert.eq): - * wasm/js-api/Module.imports.js: Added. - (assert.throws.WebAssembly.Module.prototype.imports): - (assert.eq): - -2017-03-27 JF Bastien - - WebAssembly: misc memory testing - https://bugs.webkit.org/show_bug.cgi?id=170137 - - Reviewed by Keith Miller. - - * wasm/assert.js: handle newlines in code we print out, avoid regex - * wasm/function-tests/memory-import-and-grow.js: Added. - (const.instantiate): - (const.test): - * wasm/function-tests/memory-section-and-import.js: Added. - (const.instantiate): - -2017-03-23 Yusuke Suzuki - - [JSC] Use jsNontrivialString agressively for ToString(Int52) - https://bugs.webkit.org/show_bug.cgi?id=170002 - - Reviewed by Sam Weinig. - - * stress/to-string-int52.js: Added. - (shouldBe): - (toString10): - (expected): - -2017-03-23 Yusuke Suzuki - - [JSC][DFG] Make addShouldSpeculateAnyInt more conservative to avoid regression caused by Double <-> Int52 conversions - https://bugs.webkit.org/show_bug.cgi?id=169998 - - Reviewed by Saam Barati. - - * microbenchmarks/int52-back-and-forth.js: Added. - (shouldBe): - (num): - -2017-03-23 Mark Lam - - Clients of JSArray::tryCreateForInitializationPrivate() should do their own null checks. - https://bugs.webkit.org/show_bug.cgi?id=169783 - - Reviewed by Saam Barati. - - * stress/regress-169783.js: Added. - -2017-03-22 Yusuke Suzuki - - [JSC][DFG] Propagate AnyIntAsDouble information carefully to utilize it in fixup - https://bugs.webkit.org/show_bug.cgi?id=169914 - - Reviewed by Saam Barati. - - * stress/any-int-as-double-add.js: Added. - (shouldBe): - (test): - * stress/to-this-numbers.js: Added. - (shouldBe): - (Number.prototype.toThis): - -2017-03-22 Mark Lam - - Add support for Error.stackTraceLimit. - https://bugs.webkit.org/show_bug.cgi?id=169904 - - Reviewed by Saam Barati. - - * stress/error-stack-trace-limit.js: Added. - -2017-03-22 Yusuke Suzuki - - [JSC] Use jsNontrivialString for Number toString operations - https://bugs.webkit.org/show_bug.cgi?id=169965 - - Reviewed by Mark Lam. - - * stress/to-string-int32.js: Added. - (shouldBe): - (toString10): - (expected): - -2017-03-22 JF Bastien - - WebAssembly: test module namespace object for WebAssembly.Instance - https://bugs.webkit.org/show_bug.cgi?id=169951 - - Reviewed by Saam Barati. - - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - -2017-03-22 JF Bastien - - WebAssembly: constructors without new don't throw - https://bugs.webkit.org/show_bug.cgi?id=165995 - - Reviewed by Saam Barati. - - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - -2017-03-21 Yusuke Suzuki - - [JSC] Optimize Number.prototype.toString on Int32 / Int52 / Double - https://bugs.webkit.org/show_bug.cgi?id=167454 - - Reviewed by Saam Barati. - - * stress/number-to-string-abstract-operation.js: Added. - (shouldBe): - (int32ToString): - (shouldBe.int32ToString.new.Number.int52ToString): - (shouldBe.int32ToString.new.Number): - (shouldBe.doubleToString): - * stress/number-to-string-radix.js: Added. - (shouldBe): - (int32ToString): - (shouldBe.int32ToString.new.Number.int52ToString): - (shouldBe.int32ToString.new.Number): - (shouldBe.doubleToString): - * stress/number-to-string.js: Added. - (shouldBe): - (int32ToString): - (shouldBe.int32ToString.new.Number.int52ToString): - (shouldBe.int32ToString.new.Number): - (shouldBe.doubleToString): - -2017-03-19 Chris Dumez - - `const location = "foo"` throws in a worker - https://bugs.webkit.org/show_bug.cgi?id=169839 - - Reviewed by Mark Lam. - - * ChakraCore/test/es6/letconst_global_shadow_builtins_nonconfigurable.baseline-jsc: - Update expected jsc result now that we throw a SyntaxError when trying to shadow undefined - with a let variable. We used not to throw because the value is undefined but this was not - as per EcmaScript. Both Firefox and Chrome throw in this case. - - * stress/global-lexical-redeclare-variable.js: - (catch): - Update test that defines a non-configurable 'zoo' property on the global object and then - expected shadowing it with a 'let zoo' variable to work because its value was undefined. - This was not as per EcmaScript spec and both Firefox and Chrome throw in this case. - -2017-03-19 Yusuke Suzuki - - import(arg) crashes when ToString(arg) throws - https://bugs.webkit.org/show_bug.cgi?id=169778 - - Reviewed by Saam Barati. - - * stress/import-reject-with-exception.js: Added. - (shouldBe): - (let.x.get toString): - -2017-03-16 Filip Pizlo - - FTL should support global and eval code - https://bugs.webkit.org/show_bug.cgi?id=169656 - - Reviewed by Geoffrey Garen and Saam Barati. - - Added basic performance tests of global and eval code. These tests will run a lot faster in with - the FTL because of the object allocation. - - * microbenchmarks/eval-code-ftl-reentry.js: Added. - * microbenchmarks/eval-code-ftl.js: Added. - * microbenchmarks/global-code-ftl.js: Added. - * stress/arith-log-on-various-types.js: This was a flaky fail with concurrent JIT, so I stopped running it with concurrent JIT. The failure was its assertion about how many times something gets compiled. - -2017-03-16 Caio Lima - - [ESnext] Implement Object Spread - https://bugs.webkit.org/show_bug.cgi?id=167963 - - Reviewed by Yusuke Suzuki. - - * stress/object-spread.js: Added. - (let.assert): - (assert.sameValue): - (let.o.get a): - (let.obj.get c): - (cthulhu.get x): - (let.obj.set c): - (calls.o.get z): - (calls.o.get a): - (try.let.obj.get foo): - (get calls): - -2017-03-15 Yusuke Suzuki - - [JSC] Default parameter part should be retrieved by op_get_argument opcode instead of changing arity - https://bugs.webkit.org/show_bug.cgi?id=164582 - - Reviewed by Saam Barati. - - * stress/function-with-defaults-inlining.js: Added. - (shouldBe): - (ok): - (a): - * stress/function-with-defaults-non-inlining.js: Added. - (shouldBe): - (ok): - (a): - -2017-03-15 Yusuke Suzuki - - [DFG] ToString operation should have fixup for primitives to say this node does not have side effects - https://bugs.webkit.org/show_bug.cgi?id=169544 - - Reviewed by Saam Barati. - - * microbenchmarks/template-string-array.js: Added. - (test): - * stress/to-string-non-cell-use.js: Added. - (shouldBe): - (shouldThrow): - -2017-03-13 Commit Queue - - Unreviewed, rolling out r213856. - https://bugs.webkit.org/show_bug.cgi?id=169562 - - Breaks JSC stress test stress/super-property-access.js.ftl- - eager failing (Requested by mlam|g on #webkit). - - Reverted changeset: - - "FTL should not flush strict arguments unless it really needs - to" - https://bugs.webkit.org/show_bug.cgi?id=169519 - http://trac.webkit.org/changeset/213856 - -2017-03-11 Filip Pizlo - - FTL should not flush strict arguments unless it really needs to - https://bugs.webkit.org/show_bug.cgi?id=169519 - - Reviewed by Mark Lam. - - This benchmark runs 3.5x faster thanks to this patch. - - * microbenchmarks/strict-arguments-no-escape.js: Added. - (foo): - (bar): - (baz): - -2017-03-13 Caio Lima - - [JSC] It should be possible create a label named let when parsing Statement in non strict mode - https://bugs.webkit.org/show_bug.cgi?id=168684 - - Reviewed by Saam Barati. - - * ChakraCore/test/LetConst/DeclOutofBlock.baseline-jsc: - -2017-03-10 Saam Barati - - WebAssembly: Make more demos run - https://bugs.webkit.org/show_bug.cgi?id=165510 - - - Reviewed by Keith Miller. - - * wasm/Builder.js: - (export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section): - * wasm/js-api/wrapper-function.js: Added. - (exportImport): - (return.new.WebAssembly.Module): - (assert.throws.makeInstance): - (assert.throws.Bar): - (assert.throws): - -2017-03-10 Mark Lam - - JSC: BindingNode::bindValue doesn't increase the scope's reference count. - https://bugs.webkit.org/show_bug.cgi?id=168546 - - - Reviewed by Saam Barati. - - * stress/regress-168546.js: Added. - -2017-03-09 Caio Lima - - [ESnext] Implement Object Rest - Implementing Object Rest Destructuring - https://bugs.webkit.org/show_bug.cgi?id=167962 - - Reviewed by Keith Miller. - - * stress/object-rest-deconstruct.js: Added. - (let.assert): - (let.assertPropDescriptor): - (catch): - (get 3): - (foo): - (let.src.get y): - (let.src.set y): - (let.gen): - -2017-03-09 Saam Barati - - WebAssembly: Make the Unity AngryBots demo run - https://bugs.webkit.org/show_bug.cgi?id=169268 - - Reviewed by Keith Miller. - - * wasm/function-tests/many-arguments-to-function.js: Added. - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.I32Const.0.I32Const.1.I32Const.2.I32Const.3.I32Const.4.I32Const.5.I32Const.6.I32Const.7.I32Const.8.I32Const.9.I32Const.10.I32Const.11.I32Const.12.I32Const.13.I32Const.14.I32Const.15.I32Const.16.I32Const.17.Call.0.Return.End.End.foo): - (i.instance.exports.f0.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.F32Const.Call.Return.End.End.foo): - (i.instance.exports.f0): - (instance.exports.f0.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.GetLocal.Call.Return.End.End.foo): - (instance.exports.f0): - -2017-03-08 Yusuke Suzuki - - [GTK] JSC test stress/arity-check-ftl-throw.js.ftl-no-cjit-validate-sampling-profiler crashing on GTK bot - https://bugs.webkit.org/show_bug.cgi?id=160124 - - Reviewed by Mark Lam. - - * stress/spread-forward-call-varargs-stack-overflow.js: - -2017-03-06 Saam Barati - - WebAssembly: Implement the WebAssembly.instantiate API - https://bugs.webkit.org/show_bug.cgi?id=165982 - - - Reviewed by Keith Miller. - - * wasm/js-api/web-assembly-instantiate.js: Added. - (assert.eq.async.test): - (assert.eq): - (assert.truthy.async.test): - (assert.truthy): - -2017-03-06 Saam Barati - - Unreviewed. Fix test expected error message. - - * wasm/js-api/element.js: - (assert.throws): - -2017-03-06 Caio Lima - - op_get_by_id_with_this should use inline caching - https://bugs.webkit.org/show_bug.cgi?id=162124 - - Reviewed by Saam Barati. - - * microbenchmarks/super-getter.js: Added. - (A.prototype.get f): - (A): - (B.prototype.get f): - (B): - * stress/super-force-ic-fail.js: Added. - (let.assert): - (let.aObj.get foo): - (let.obj.jaz): - (let.bObj.get foo): - (let.obj2.foo): - * stress/super-get-by-id.js: Added. - (assert): - (Base): - (Base.prototype.get name): - (Base.prototype.set name): - (Subclass.prototype.get name): - (Subclass): - (getterName): - (getterValue): - (PolymorphicSubclass.prototype.get value): - (PolymorphicSubclass): - (i.let.BaseCode): - (i.get value): - (MegamorphicSubclass.prototype.get value): - (MegamorphicSubclass): - (let.subObj.get value): - (i.catch): - (subObj.get value): - (BaseException): - (BaseException.prototype.get name): - (SubclassException.prototype.get name): - (SubclassException): - (prototype.foo): - (prototype.get name): - (SubclassExceptionComplex.prototype.get name): - (SubclassExceptionComplex): - * stress/super-getter-reset-ic.js: Added. - (let.assert): - (let.B.f): - -2017-03-06 Saam Barati - - WebAssembly: implement init_expr for Element - https://bugs.webkit.org/show_bug.cgi?id=165888 - - - Reviewed by Keith Miller. - - * wasm/Builder_WebAssemblyBinary.js: - (const.emitters.Element): - * wasm/assert.js: - * wasm/js-api/element.js: - (assert.throws): - (badInstantiation.makeModule): - (badInstantiation.test): - (badInstantiation): - * wasm/js-api/global-error.js: - -2017-03-06 Carlos Alberto Lopez Perez - - [JSC] [Linux] Test stress/spread-forward-call-varargs-stack-overflow.js fails - https://bugs.webkit.org/show_bug.cgi?id=169206 - - Unreviewed test gardening. - - * stress/spread-forward-call-varargs-stack-overflow.js: Skip on Linux platforms. - -2017-03-06 Yusuke Suzuki - - [JSC] Allow indexed module namespace object fields - https://bugs.webkit.org/show_bug.cgi?id=168870 - - Reviewed by Saam Barati. - - * wasm/spec-tests/names.wast.js: - -2017-03-06 Yusuke Suzuki - - Null pointer crash when loading module with unresolved import also as a script file - https://bugs.webkit.org/show_bug.cgi?id=168971 - - Reviewed by Saam Barati. - - * stress/re-execute-error-module.js: Added. - (shouldBe): - (async): - * stress/resources/error-module.js: Added. - -2017-03-02 Keith Miller - - WebAssemblyFunction should have Function.prototype as its prototype - https://bugs.webkit.org/show_bug.cgi?id=169101 - - Reviewed by Filip Pizlo. - - * wasm/js-api/web-assembly-function.js: Added. - -2017-02-28 Oleksandr Skachkov - - Use of arguments in arrow function is slow - https://bugs.webkit.org/show_bug.cgi?id=168829 - - Reviewed by Saam Barati. - - * microbenchmarks/arrowfunciton-direct-arguments.js: Added. - (fn): - * microbenchmarks/arrowfunciton-reference-arguments.js: Added. - (fn): - -2017-02-27 Commit Queue - - Unreviewed, rolling out r213019. - https://bugs.webkit.org/show_bug.cgi?id=168925 - - "It broke 32-bit jsc tests in debug builds" (Requested by - saamyjoon on #webkit). - - Reverted changeset: - - "op_get_by_id_with_this should use inline caching" - https://bugs.webkit.org/show_bug.cgi?id=162124 - http://trac.webkit.org/changeset/213019 - -2017-02-27 JF Bastien - - WebAssembly: miscellaneous spec fixes part deux - https://bugs.webkit.org/show_bug.cgi?id=168861 - - Reviewed by Keith Miller. - - * wasm.yaml: more passing tests - * wasm/Builder.js: use a Map instead of an Object for the function - index space, because Number entries such as 0 were colliding with - string entries such as "0". This in turn requires some hashing of - objects which are inserted, because Map uses Object's insertion - order when comparing. - (export.default.Builder): - (export.default.Builder.prototype._functionIndexSpaceKeyHash): - (export.default.Builder.prototype._registerFunctionToIndexSpace): - (export.default.Builder.prototype._getFunctionFromIndexSpace): - * wasm/js-api/test_Instance.js: add a FIXME test - * wasm/spec-tests/memory.wast.js: - (assert_unlinkable): - * wasm/spec-tests/names.wast.js: - -2017-02-26 Caio Lima - - op_get_by_id_with_this should use inline caching - https://bugs.webkit.org/show_bug.cgi?id=162124 - - Reviewed by Saam Barati. - - * microbenchmarks/super-getter.js: Added. - (A.prototype.get f): - (A): - (B.prototype.get f): - (B): - * stress/super-force-ic-fail.js: Added. - (let.assert): - (let.aObj.get foo): - (let.obj.jaz): - (let.bObj.get foo): - (let.obj2.foo): - * stress/super-get-by-id.js: Added. - (assert): - (Base): - (Base.prototype.get name): - (Base.prototype.set name): - (Subclass.prototype.get name): - (Subclass): - (getterName): - (getterValue): - (PolymorphicSubclass.prototype.get value): - (PolymorphicSubclass): - (i.let.BaseCode): - (i.get value): - (MegamorphicSubclass.prototype.get value): - (MegamorphicSubclass): - (let.subObj.get value): - (i.catch): - (subObj.get value): - (BaseException): - (BaseException.prototype.get name): - (SubclassException.prototype.get name): - (SubclassException): - (prototype.foo): - (prototype.get name): - (SubclassExceptionComplex.prototype.get name): - (SubclassExceptionComplex): - * stress/super-getter-reset-ic.js: Added. - (let.assert): - (let.B.f): - -2017-02-24 JF Bastien - - WebAssembly: miscellaneous spec fixes - https://bugs.webkit.org/show_bug.cgi?id=168822 - - Reviewed by Saam Barati. - - * wasm.yaml: mark some skip tests as normal, now that they pass - * wasm/Builder.js: error message was wrong, causing extra error if hit - * wasm/js-api/global-error.js: new tests - (assert.throws): - * wasm/spec-tests/call.wast.js: comment out stack check tests - * wasm/spec-tests/call_indirect.wast.js: comment out stack check tests - * wasm/spec-tests/fac.wast.js: comment out stack check tests - * wasm/spec-tests/float_exprs.wast.js: wabt is wrong, bug reported, we should update - * wasm/spec-tests/imports.wast.js: bug in old wabt, fixed in recent wabt - (assert_unlinkable): - -2017-02-23 Saam Barati - - Intrinsicify parseInt - https://bugs.webkit.org/show_bug.cgi?id=168627 - - Reviewed by Filip Pizlo. - - * stress/parse-int-intrinsic.js: Added. - (assert): - (testIntrinsic.let.s): - (testIntrinsic): - (testIntrinsic2.baz): - (testIntrinsic2): - (testIntrinsic3.foo): - (testIntrinsic3): - (testIntrinsic4.foo): - (testIntrinsic4): - (testIntrinsic5.foo): - (testIntrinsic5): - (testIntrinsic6.foo): - (testIntrinsic6): - (testIntrinsic7.foo): - (testIntrinsic7): - -2017-02-23 JF Bastien - - WebAssembly: support 0x1 version - https://bugs.webkit.org/show_bug.cgi?id=168672 - - Reviewed by Keith Miller. - - Update the version number for all the tests. Note that the spec - tests are only updated with a new version number because spec+wabt - aren't ready for 0x1 yet. This is tracked by bug #168784. - - * wasm/import-spec-tests.rb: use the new spec repository layout - * wasm/js-api/test_basic_api.js: - * wasm/self-test/test_BuilderWebAssembly.js: - (EmptyModule): - (CustomSection): - * wasm/spec-tests/address.wast.js: - * wasm/spec-tests/binary.wast.js: - * wasm/spec-tests/block.wast.js: - * wasm/spec-tests/br.wast.js: - * wasm/spec-tests/br_if.wast.js: - * wasm/spec-tests/br_table.wast.js: - * wasm/spec-tests/break-drop.wast.js: - * wasm/spec-tests/call.wast.js: - * wasm/spec-tests/call_indirect.wast.js: - * wasm/spec-tests/comments.wast.js: - * wasm/spec-tests/conversions.wast.js: - * wasm/spec-tests/custom_section.wast.js: - * wasm/spec-tests/endianness.wast.js: - * wasm/spec-tests/exports.wast.js: - * wasm/spec-tests/f32.wast.js: - * wasm/spec-tests/f32_cmp.wast.js: - * wasm/spec-tests/f64.wast.js: - * wasm/spec-tests/f64_cmp.wast.js: - * wasm/spec-tests/fac.wast.js: - * wasm/spec-tests/float_exprs.wast.js: - * wasm/spec-tests/float_literals.wast.js: - * wasm/spec-tests/float_memory.wast.js: - * wasm/spec-tests/float_misc.wast.js: - * wasm/spec-tests/forward.wast.js: - * wasm/spec-tests/func.wast.js: - * wasm/spec-tests/func_ptrs.wast.js: - * wasm/spec-tests/get_local.wast.js: - * wasm/spec-tests/globals.wast.js: - * wasm/spec-tests/i32.wast.js: - * wasm/spec-tests/i64.wast.js: - * wasm/spec-tests/imports.wast.js: - * wasm/spec-tests/int_exprs.wast.js: - * wasm/spec-tests/int_literals.wast.js: - * wasm/spec-tests/left-to-right.wast.js: - * wasm/spec-tests/linking.wast.js: - * wasm/spec-tests/loop.wast.js: - * wasm/spec-tests/memory.wast.js: - * wasm/spec-tests/memory_redundancy.wast.js: - * wasm/spec-tests/memory_trap.wast.js: - * wasm/spec-tests/names.wast.js: - * wasm/spec-tests/nop.wast.js: - * wasm/spec-tests/resizing.wast.js: - * wasm/spec-tests/return.wast.js: - * wasm/spec-tests/select.wast.js: - * wasm/spec-tests/set_local.wast.js: - * wasm/spec-tests/skip-stack-guard-page.wast.js: - * wasm/spec-tests/stack.wast.js: - * wasm/spec-tests/start.wast.js: - * wasm/spec-tests/store_retval.wast.js: - * wasm/spec-tests/switch.wast.js: - * wasm/spec-tests/tee_local.wast.js: - * wasm/spec-tests/traps.wast.js: - * wasm/spec-tests/typecheck.wast.js: - * wasm/spec-tests/unreachable.wast.js: - * wasm/spec-tests/unwind.wast.js: - * wasm/wasm.json: - -2017-02-22 Yusuke Suzuki - - JSModuleNamespace object should have IC - https://bugs.webkit.org/show_bug.cgi?id=160590 - - Reviewed by Saam Barati. - - * modules/module-assert-access-binding.js: Added. - * modules/module-assert-access-namespace.js: Added. - * modules/namespace-empty.js: Added. - (from.string_appeared_here.access): - (i.shouldThrow): - * stress/module-namespace-access-change.js: Added. - (shouldBe): - (access): - (import.string_appeared_here.then): - * stress/module-namespace-access-non-constant.js: Added. - (shouldBe): - (import.string_appeared_here.then): - * stress/module-namespace-access-poly.js: Added. - (shouldBe): - (access): - (import.string_appeared_here.then): - * stress/module-namespace-access-transitive-exports.js: Added. - (shouldBe): - (import.string_appeared_here.then): - * stress/module-namespace-access.js: Added. - (shouldBe): - (import.string_appeared_here.then): - * stress/resources/module-namespace-access-transitive-exports-2.js: Added. - (export.cocoa): - (export.change): - * stress/resources/module-namespace-access-transitive-exports.js: Added. - * stress/resources/module-namespace-access.js: Added. - (export.cocoa): - (export.change): - -2017-02-20 Filip Pizlo - - The collector thread should only start when the mutator doesn't have heap access - https://bugs.webkit.org/show_bug.cgi?id=167737 - - Reviewed by Keith Miller. - - Add versions of splay that flash heap access, to simulate what might happen if a third-party app - was running concurrent GC. In this case, we might actually start the collector thread. - - * stress/splay-flash-access-1ms.js: Added. - (performance.now): - (this.Setup.setup.setup): - (this.TearDown.tearDown.tearDown): - (Benchmark): - (BenchmarkResult): - (BenchmarkResult.prototype.valueOf): - (BenchmarkSuite): - (alert): - (Math.random): - (BenchmarkSuite.ResetRNG): - (RunStep): - (BenchmarkSuite.RunSuites): - (BenchmarkSuite.CountBenchmarks): - (BenchmarkSuite.GeometricMean): - (BenchmarkSuite.GeometricMeanTime): - (BenchmarkSuite.AverageAbovePercentile): - (BenchmarkSuite.GeometricMeanLatency): - (BenchmarkSuite.FormatScore): - (BenchmarkSuite.prototype.NotifyStep): - (BenchmarkSuite.prototype.NotifyResult): - (BenchmarkSuite.prototype.NotifyError): - (BenchmarkSuite.prototype.RunSingleBenchmark): - (RunNextSetup): - (RunNextBenchmark): - (RunNextTearDown): - (BenchmarkSuite.prototype.RunStep): - (GeneratePayloadTree): - (GenerateKey): - (SplayUpdateStats): - (InsertNewNode): - (SplaySetup): - (SplayTearDown): - (SplayRun): - (SplayTree): - (SplayTree.prototype.isEmpty): - (SplayTree.prototype.insert): - (SplayTree.prototype.remove): - (SplayTree.prototype.find): - (SplayTree.prototype.findMax): - (SplayTree.prototype.findGreatestLessThan): - (SplayTree.prototype.exportKeys): - (SplayTree.prototype.splay_): - (SplayTree.Node): - (SplayTree.Node.prototype.traverse_): - (jscSetUp): - (jscTearDown): - (jscRun): - (averageAbovePercentile): - (printPercentile): - * stress/splay-flash-access.js: Added. - (performance.now): - (this.Setup.setup.setup): - (this.TearDown.tearDown.tearDown): - (Benchmark): - (BenchmarkResult): - (BenchmarkResult.prototype.valueOf): - (BenchmarkSuite): - (alert): - (Math.random): - (BenchmarkSuite.ResetRNG): - (RunStep): - (BenchmarkSuite.RunSuites): - (BenchmarkSuite.CountBenchmarks): - (BenchmarkSuite.GeometricMean): - (BenchmarkSuite.GeometricMeanTime): - (BenchmarkSuite.AverageAbovePercentile): - (BenchmarkSuite.GeometricMeanLatency): - (BenchmarkSuite.FormatScore): - (BenchmarkSuite.prototype.NotifyStep): - (BenchmarkSuite.prototype.NotifyResult): - (BenchmarkSuite.prototype.NotifyError): - (BenchmarkSuite.prototype.RunSingleBenchmark): - (RunNextSetup): - (RunNextBenchmark): - (RunNextTearDown): - (BenchmarkSuite.prototype.RunStep): - (GeneratePayloadTree): - (GenerateKey): - (SplayUpdateStats): - (InsertNewNode): - (SplaySetup): - (SplayTearDown): - (SplayRun): - (SplayTree): - (SplayTree.prototype.isEmpty): - (SplayTree.prototype.insert): - (SplayTree.prototype.remove): - (SplayTree.prototype.find): - (SplayTree.prototype.findMax): - (SplayTree.prototype.findGreatestLessThan): - (SplayTree.prototype.exportKeys): - (SplayTree.prototype.splay_): - (SplayTree.Node): - (SplayTree.Node.prototype.traverse_): - (jscSetUp): - (jscTearDown): - (jscRun): - (averageAbovePercentile): - (printPercentile): - -2017-02-21 Ryan Haddad - - Unreviewed, rolling out r212712. - - This change broke the CLoop build. - - Reverted changeset: - - "JSModuleNamespace object should have IC" - https://bugs.webkit.org/show_bug.cgi?id=160590 - http://trac.webkit.org/changeset/212712 - -2017-02-21 Yusuke Suzuki - - JSModuleNamespace object should have IC - https://bugs.webkit.org/show_bug.cgi?id=160590 - - Reviewed by Saam Barati. - - * modules/module-assert-access-binding.js: Added. - * modules/module-assert-access-namespace.js: Added. - * modules/namespace-empty.js: Added. - (from.string_appeared_here.access): - (i.shouldThrow): - * stress/module-namespace-access-change.js: Added. - (shouldBe): - (access): - (import.string_appeared_here.then): - * stress/module-namespace-access-non-constant.js: Added. - (shouldBe): - (import.string_appeared_here.then): - * stress/module-namespace-access-poly.js: Added. - (shouldBe): - (access): - (import.string_appeared_here.then): - * stress/module-namespace-access-transitive-exports.js: Added. - (shouldBe): - (import.string_appeared_here.then): - * stress/module-namespace-access.js: Added. - (shouldBe): - (import.string_appeared_here.then): - * stress/resources/module-namespace-access-transitive-exports-2.js: Added. - (export.cocoa): - (export.change): - * stress/resources/module-namespace-access-transitive-exports.js: Added. - * stress/resources/module-namespace-access.js: Added. - (export.cocoa): - (export.change): - -2017-02-21 Yusuke Suzuki - - ASSERTION FAILED: "!scope.exception()" with Object.isSealed/isFrozen and uninitialized module bindings - https://bugs.webkit.org/show_bug.cgi?id=168605 - - Reviewed by Saam Barati. - - * modules/module-namespace-is-frozen.js: Added. - (from.string_appeared_here.shouldThrow): - (export.b): - * modules/module-namespace-is-sealed.js: Added. - (from.string_appeared_here.shouldThrow): - (export.b): - -2017-02-19 Commit Queue - - Unreviewed, rolling out r212466. - https://bugs.webkit.org/show_bug.cgi?id=168577 - - causes crashes on AArch64 on linux, maybe it's causing crashes - on iOS too (Requested by pizlo on #webkit). - - Reverted changeset: - - "The collector thread should only start when the mutator - doesn't have heap access" - https://bugs.webkit.org/show_bug.cgi?id=167737 - http://trac.webkit.org/changeset/212466 - -2017-02-10 Filip Pizlo - - The collector thread should only start when the mutator doesn't have heap access - https://bugs.webkit.org/show_bug.cgi?id=167737 - - Reviewed by Keith Miller. - - Add versions of splay that flash heap access, to simulate what might happen if a third-party app - was running concurrent GC. In this case, we might actually start the collector thread. - - * stress/splay-flash-access-1ms.js: Added. - (performance.now): - (this.Setup.setup.setup): - (this.TearDown.tearDown.tearDown): - (Benchmark): - (BenchmarkResult): - (BenchmarkResult.prototype.valueOf): - (BenchmarkSuite): - (alert): - (Math.random): - (BenchmarkSuite.ResetRNG): - (RunStep): - (BenchmarkSuite.RunSuites): - (BenchmarkSuite.CountBenchmarks): - (BenchmarkSuite.GeometricMean): - (BenchmarkSuite.GeometricMeanTime): - (BenchmarkSuite.AverageAbovePercentile): - (BenchmarkSuite.GeometricMeanLatency): - (BenchmarkSuite.FormatScore): - (BenchmarkSuite.prototype.NotifyStep): - (BenchmarkSuite.prototype.NotifyResult): - (BenchmarkSuite.prototype.NotifyError): - (BenchmarkSuite.prototype.RunSingleBenchmark): - (RunNextSetup): - (RunNextBenchmark): - (RunNextTearDown): - (BenchmarkSuite.prototype.RunStep): - (GeneratePayloadTree): - (GenerateKey): - (SplayUpdateStats): - (InsertNewNode): - (SplaySetup): - (SplayTearDown): - (SplayRun): - (SplayTree): - (SplayTree.prototype.isEmpty): - (SplayTree.prototype.insert): - (SplayTree.prototype.remove): - (SplayTree.prototype.find): - (SplayTree.prototype.findMax): - (SplayTree.prototype.findGreatestLessThan): - (SplayTree.prototype.exportKeys): - (SplayTree.prototype.splay_): - (SplayTree.Node): - (SplayTree.Node.prototype.traverse_): - (jscSetUp): - (jscTearDown): - (jscRun): - (averageAbovePercentile): - (printPercentile): - * stress/splay-flash-access.js: Added. - (performance.now): - (this.Setup.setup.setup): - (this.TearDown.tearDown.tearDown): - (Benchmark): - (BenchmarkResult): - (BenchmarkResult.prototype.valueOf): - (BenchmarkSuite): - (alert): - (Math.random): - (BenchmarkSuite.ResetRNG): - (RunStep): - (BenchmarkSuite.RunSuites): - (BenchmarkSuite.CountBenchmarks): - (BenchmarkSuite.GeometricMean): - (BenchmarkSuite.GeometricMeanTime): - (BenchmarkSuite.AverageAbovePercentile): - (BenchmarkSuite.GeometricMeanLatency): - (BenchmarkSuite.FormatScore): - (BenchmarkSuite.prototype.NotifyStep): - (BenchmarkSuite.prototype.NotifyResult): - (BenchmarkSuite.prototype.NotifyError): - (BenchmarkSuite.prototype.RunSingleBenchmark): - (RunNextSetup): - (RunNextBenchmark): - (RunNextTearDown): - (BenchmarkSuite.prototype.RunStep): - (GeneratePayloadTree): - (GenerateKey): - (SplayUpdateStats): - (InsertNewNode): - (SplaySetup): - (SplayTearDown): - (SplayRun): - (SplayTree): - (SplayTree.prototype.isEmpty): - (SplayTree.prototype.insert): - (SplayTree.prototype.remove): - (SplayTree.prototype.find): - (SplayTree.prototype.findMax): - (SplayTree.prototype.findGreatestLessThan): - (SplayTree.prototype.exportKeys): - (SplayTree.prototype.splay_): - (SplayTree.Node): - (SplayTree.Node.prototype.traverse_): - (jscSetUp): - (jscTearDown): - (jscRun): - (averageAbovePercentile): - (printPercentile): - -2017-02-16 Yusuke Suzuki - - [JSC] Update module namespace object according to the latest ECMA262 - https://bugs.webkit.org/show_bug.cgi?id=168280 - - Reviewed by Saam Barati. - - * modules/namespace-object-symbol-iterator-name.js: - * modules/namespace-object-typed-array-fast-path.js: - * modules/namespace.js: - (shouldBe.JSON.stringify.Reflect.getOwnPropertyDescriptor): - (shouldThrow): - -2017-02-11 Yusuke Suzuki - - [JSC] Implement (Shared)ArrayBuffer.prototype.byteLength - https://bugs.webkit.org/show_bug.cgi?id=166476 - - Reviewed by Saam Barati. - - * ChakraCore/test/typedarray/arraybufferType.baseline-jsc: - * stress/array-buffer-byte-length.js: Added. - (shouldBe): - (shouldThrow): - (Symbol): - * stress/reflect-set.js: - -2017-02-10 Saam Barati - - Object allocation sinking phase doesn't properly handle control flow when emitting a PutHint of a materialized object into a PromotedHeapLocation of a still sunken object - https://bugs.webkit.org/show_bug.cgi?id=168140 - - - Reviewed by Filip Pizlo. - - * stress/allocation-sinking-puthint-control-flow.js: Added. - (e): - (bar): - (let.y): - (else.let.y): - (baz): - (foo): - (catch): - -2017-02-09 Mark Lam - - B3::Procedure::deleteOrphans() should neutralize upsilons with dead phis. - https://bugs.webkit.org/show_bug.cgi?id=167437 - - - Reviewed by Filip Pizlo. - - * stress/b3-delete-orphans-should-neutralize-upsilons-with-dead-phis.js: Added. - -2017-02-09 Saam Barati - - Sloppy mode: We don't properly hoist functions names "arguments" when we have a non-simple parameter list - https://bugs.webkit.org/show_bug.cgi?id=167319 - - - Reviewed by Mark Lam. - - * stress/sloppy-mode-hoist-arguments-function-non-simple-parameter-list.js: Added. - (assert): - (assert.arguments): - (assert.b): - (x.arguments): - (x.b): - (x): - -2017-02-09 Mark Lam - - Fix max length check in ArrayPrototype.js' concatSlowPath(). - https://bugs.webkit.org/show_bug.cgi?id=167270 - - - Reviewed by Filip Pizlo. - - * stress/array-prototype-concat-of-long-spliced-arrays.js: Added. - * stress/array-prototype-concat-of-long-spliced-arrays2.js: Added. - -2017-02-09 Keith Miller - - We should not allow Function.caller to be used on native functions - https://bugs.webkit.org/show_bug.cgi?id=165628 - - Reviewed by Mark Lam. - - * stress/caller-native-code.js: Added. - (f): - -2017-02-04 Yusuke Suzuki - - [JSC] Add operationToInt32SensibleSlow to optimize kraken pbkdf2 and sha256 - https://bugs.webkit.org/show_bug.cgi?id=167736 - - Reviewed by Saam Barati. - - * stress/to-int32-sensible.js: Added. - (shouldBe): - (toInt32): - (test): - -2017-02-01 Yusuke Suzuki - - Unreviewed, remove loop - https://bugs.webkit.org/show_bug.cgi?id=167694 - - It causes timeout. - Original bug can be tested even without this loop. - - * stress/arity-fixup-should-not-touch-stack-area-below-sp.js: - -2017-02-01 Yusuke Suzuki - - ArityFixup should adjust SP first - https://bugs.webkit.org/show_bug.cgi?id=167239 - - Reviewed by Michael Saboff. - - Significantly large arity fixup reliably causes this crash. - - * stress/arity-fixup-should-not-touch-stack-area-below-sp.js: Added. - -2017-01-31 Filip Pizlo - - Move slow-running microbenchmarks out of JSTests/microbenchmarks - https://bugs.webkit.org/show_bug.cgi?id=167676 - - Reviewed by Saam Barati. - - The microbenchmarks directory is profitable when it's cheap to run. This change moves very slow - tests (>=200ms running time on my machine) and puts them in JSTests/slowMicrobenchmarks instead. - That directory is run only through `slow!; defaultQuickRun` and is not run by run-jsc-benchmarks. - This is a big progression in test running time. But because it frontloads more slow tests, the - tests will seem to run more slowly when you first start the test runner. - - * microbenchmarks/default-derived-constructor.js: Removed. - * microbenchmarks/dense-set.js: Removed. - * microbenchmarks/ftl-polymorphic-div.js: Removed. - * microbenchmarks/ftl-polymorphic-mul.js: Removed. - * microbenchmarks/function-bind-inlining.js: Removed. - * microbenchmarks/function-bind-no-inlining.js: Removed. - * microbenchmarks/large-map-iteration-with-additions.js: Removed. - * microbenchmarks/large-map-iteration-with-mutation.js: Removed. - * microbenchmarks/map-get-get-cse.js: Removed. - * microbenchmarks/misc-bugs-847389-jpeg2000.js: Removed. - * microbenchmarks/spread-small-array.js: Removed. - * microbenchmarks/v8-raytrace-with-try-catch-high-frequency-throws.js: Removed. - * slowMicrobenchmarks: Added. - * slowMicrobenchmarks.yaml: Added. - * slowMicrobenchmarks/README: Added. - * slowMicrobenchmarks/default-derived-constructor.js: Copied from JSTests/microbenchmarks/default-derived-constructor.js. - * slowMicrobenchmarks/dense-set.js: Copied from JSTests/microbenchmarks/dense-set.js. - * slowMicrobenchmarks/ftl-polymorphic-div.js: Copied from JSTests/microbenchmarks/ftl-polymorphic-div.js. - * slowMicrobenchmarks/ftl-polymorphic-mul.js: Copied from JSTests/microbenchmarks/ftl-polymorphic-mul.js. - * slowMicrobenchmarks/function-bind-inlining.js: Copied from JSTests/microbenchmarks/function-bind-inlining.js. - * slowMicrobenchmarks/function-bind-no-inlining.js: Copied from JSTests/microbenchmarks/function-bind-no-inlining.js. - * slowMicrobenchmarks/large-map-iteration-with-additions.js: Copied from JSTests/microbenchmarks/large-map-iteration-with-additions.js. - * slowMicrobenchmarks/large-map-iteration-with-mutation.js: Copied from JSTests/microbenchmarks/large-map-iteration-with-mutation.js. - * slowMicrobenchmarks/map-get-get-cse.js: Copied from JSTests/microbenchmarks/map-get-get-cse.js. - * slowMicrobenchmarks/misc-bugs-847389-jpeg2000.js: Copied from JSTests/microbenchmarks/misc-bugs-847389-jpeg2000.js. - * slowMicrobenchmarks/spread-small-array.js: Copied from JSTests/microbenchmarks/spread-small-array.js. - * slowMicrobenchmarks/v8-raytrace-with-try-catch-high-frequency-throws.js: Copied from JSTests/microbenchmarks/v8-raytrace-with-try-catch-high-frequency-throws.js. - -2017-01-30 Yusuke Suzuki - - [JSC] Do not reject WebAssembly.compile() with Exception - https://bugs.webkit.org/show_bug.cgi?id=167585 - - Reviewed by Mark Lam. - - * wasm/js-api/Module-compile.js: - (async.testPromiseAPI): - -2017-01-27 Yusuke Suzuki - - Lift template escape sequence restrictions in tagged templates - https://bugs.webkit.org/show_bug.cgi?id=166871 - - Reviewed by Saam Barati. - - Update the error messages and add new tests. - - * ChakraCore/test/es6/unicode_6_identifier_Blue524737.baseline-jsc: - * stress/lift-template-literal.js: Added. - (dump): - (testTag.return.tag): - (testTag): - * stress/template-literal-syntax.js: - -2017-01-26 Mark Lam - - Fix missing exception check in genericTypedArrayViewProtoFuncSet(). - https://bugs.webkit.org/show_bug.cgi?id=166812 - - - Reviewed by Saam Barati. - - * stress/regress-166812.js: Added. - -2017-01-26 Commit Queue - - Unreviewed, rolling out r211224. - https://bugs.webkit.org/show_bug.cgi?id=167479 - - "It was a Kraken performance regression" (Requested by - saamyjoon on #webkit). - - Reverted changeset: - - "OSR entry: delay outer-loop compilation when at inner-loop" - https://bugs.webkit.org/show_bug.cgi?id=167149 - http://trac.webkit.org/changeset/211224 - -2017-01-26 JF Bastien - - OSR entry: delay outer-loop compilation when at inner-loop - https://bugs.webkit.org/show_bug.cgi?id=167149 - - Reviewed by Filip Pizlo. - - Try to be mean to OSR entry by using nested loops, and having - non-int32 types or truly varying types. - - Mandelbrot currently never tiers up to FTL because it exits too - many times before this. That shouldn't happen because it's just - numbers and int32s. I'll file a bug to fix this. - - * microbenchmarks/mandelbrot.js: Added. - (mandelbrot): - (printable): - * microbenchmarks/nonude.js: Added. - (Array.prototype.remove): - (const.u): - (const.load): - (const.scan): - (const.main): - -2017-01-25 Saam Barati - - WebAssembly JS API: coerce return values from imports - https://bugs.webkit.org/show_bug.cgi?id=165480 - - - Reviewed by Yusuke Suzuki. - - * wasm/function-tests/function-import-return-value.js: Added. - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.tests.x.assert.eq): - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.tests.Math.fround): - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.let.type.of.Reflect.ownKeys): - (test.1): - (assert.truthy): - (assert.throws): - -2017-01-25 Filip Pizlo - - jsc.cpp should have the $.agent stuff for testing SAB - https://bugs.webkit.org/show_bug.cgi?id=167431 - - Reviewed by Saam Barati. - - Add a very basic test of Atomics using $.agent. This is based on - LayoutTests/workers/sab/simple.html. - - * stress/lars-sab-workers.js: Added. - (startWorker): - (resources): - (wake): - (else): - -2017-01-24 Filip Pizlo - - Atomics.store should return the int-converted value according to toInteger - https://bugs.webkit.org/show_bug.cgi?id=167399 - - Reviewed by Saam Barati. - - * stress/atomics-add-uint32.js: Added. - * stress/atomics-store-return.js: Fix the test to match what the spec wants. - -2017-01-24 Yusuke Suzuki - - [JSC] Optimize Number#toString with Int52 - https://bugs.webkit.org/show_bug.cgi?id=167303 - - Reviewed by Sam Weinig. - - * stress/to-string-with-int52.js: Added. - (shouldBe): - -2017-01-24 Filip Pizlo - - Atomics.store should return the int-converted value, not the value that it stored - https://bugs.webkit.org/show_bug.cgi?id=167395 - - Reviewed by Saam Barati. - - * stress/atomics-store-return.js: Added. - -2017-01-24 Filip Pizlo - - -0 is a valid array index and AtomicsObject should know this - https://bugs.webkit.org/show_bug.cgi?id=167386 - - Reviewed by Mark Lam. - - * stress/atomics-neg-zero.js: Added. - -2017-01-23 Saam Barati - - https://bugs.webkit.org/show_bug.cgi?id=167247 - JSC: operationSpreadGeneric uses the wrong global object for the builtin function and slow_path_spread consults the wrong global object to prove if the iterator protocol is unobservable - - - Reviewed by Filip Pizlo. - - * stress/spread-consults-correct-global-object.js: Added. - (assert): - (spread): - * stress/spread-correct-global-object-on-exception.js: Added. - (assert): - (spread): - (const.objectText.let.o.Symbol.iterator): - (catch): - -2017-01-21 Yusuke Suzuki - - dynamic import is ambiguous with import declaration at module code - https://bugs.webkit.org/show_bug.cgi?id=167098 - - Reviewed by Darin Adler. - - * modules/import-call.js: Added. - (from.string_appeared_here.import.string_appeared_here.then): - * modules/import-call/main.js: Added. - * stress/import-syntax.js: - (async): - -2017-01-19 Skachkov Oleksandr - - "this" missing after await in async arrow function - https://bugs.webkit.org/show_bug.cgi?id=166919 - - Reviewed by Saam Barati. - - * stress/async-arrow-functions-lexical-binding-in-class.js: - (ChildClass.prototype.asyncThisPropWithAwaitBody): - (ChildClass.prototype.asyncThisPropInEvalWithAwaitBody): - (ChildClass.prototype.asyncThisValueBodyWithAwait): - (ChildClass.prototype.asyncThisValueInEvalWithAwaitBody): - (ChildClass): - (ChildClass3): - (ChildClass3.prototype.classValue): - (ChildClass3.prototype.get classProperty): - * stress/async-arrow-functions-lexical-new.target-binding.js: - (C2WithAwait): - -2017-01-16 Filip Pizlo - - Make opaque root scanning truly constraint-based - https://bugs.webkit.org/show_bug.cgi?id=165760 - - Reviewed by Geoffrey Garen. - - Added this test, which demonstrates the benefit of having a dedicated string subspace. - - * microbenchmarks/stringalloc.js: Added. - -2017-01-17 Michael Saboff - - Nested parenthesized regular expressions with non-zero minimum counts appear to hang and use lots of memory - https://bugs.webkit.org/show_bug.cgi?id=167125 - - Reviewed by Filip Pizlo. - - * microbenchmarks/regexp-nested-nonzero-min-counted-parens.js: Added. - New test with limits that run slow and take a reasonable amount of memory - before the change and run fast, using little memory with the change. - -2017-01-14 Yusuke Suzuki - - Annotate large string tests with largeHeap - https://bugs.webkit.org/show_bug.cgi?id=167054 - - Reviewed by Filip Pizlo. - - * microbenchmarks/dense-set.js: - * microbenchmarks/lots-of-fields.js: - * stress/joined-strings-should-not-exceed-max-string-length.js: - * stress/make-large-string-jit-strcat.js: - * stress/make-large-string-jit.js: - * stress/make-large-string-strcat.js: - * stress/make-large-string.js: - * stress/string-joining-long-strings-should-not-crash.js: - * stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js: - -2017-01-14 Yusuke Suzuki - - Reserve capacity for StringBuilder in unescape - https://bugs.webkit.org/show_bug.cgi?id=167008 - - Reviewed by Sam Weinig. - - * stress/unescape.js: Added. - (shouldBe): - -2017-01-12 Saam Barati - - Add a slice intrinsic to the DFG/FTL - https://bugs.webkit.org/show_bug.cgi?id=166707 - - - Reviewed by Filip Pizlo. - - * stress/array-slice-intrinsic.js: Added. - (assert): - (shallowEq): - (runTest1): - (runTest2): - * stress/array-slice-jettison-on-constructor-change.js: Added. - (assert): - (runTest1): - (runTest2): - (addRandomProperties): - (runTests): - * stress/array-slice-osr-exit-2.js: Added. - (assert): - (Foo): - (shallowEq): - (runTest1): - (runTest2): - (addRandomProperties): - (runTests): - * stress/array-slice-osr-exit.js: Added. - (assert): - (Foo): - (shallowEq): - (runTest1): - (runTest2): - (addRandomProperties): - (runTests): - -2017-01-11 Ryan Haddad - - Mark es6/typed_arrays_correct_prototype_chains.js as failing after r210570. - https://bugs.webkit.org/show_bug.cgi?id=166931i - - Unreviewed test gardening. - - * es6.yaml: - -2017-01-10 Commit Queue - - Unreviewed, rolling out r210052. - https://bugs.webkit.org/show_bug.cgi?id=166915 - - "breaks web compatability" (Requested by keith_miller on - #webkit). - - Reverted changeset: - - "Add support for global" - https://bugs.webkit.org/show_bug.cgi?id=165171 - http://trac.webkit.org/changeset/210052 - -2017-01-10 Mark Lam - - Property setters should not be called for bound arguments list entries. - https://bugs.webkit.org/show_bug.cgi?id=165631 - - Reviewed by Filip Pizlo. - - * stress/property-setters-should-not-be-called-for-bound-arguments-list-entries.js: Added. - -2017-01-10 Skachkov Oleksandr - - Calling async arrow function which is in a class's member function will cause error - https://bugs.webkit.org/show_bug.cgi?id=166879 - - Reviewed by Saam Barati. - - * stress/async-arrow-functions-lexical-binding-in-class.js: Added. - (shouldBe): - (shouldBeAsync): - (BaseClass.prototype.baseClassValue): - (BaseClass.prototype.get property): - (BaseClass): - (runSomething): - (ChildClass.prototype.classValue): - (ChildClass.prototype.get classProperty): - (ChildClass.prototype.asyncValueExp): - (ChildClass.prototype.asyncValueBody): - (ChildClass.prototype.asyncThisPropExp): - (ChildClass.prototype.asyncThisPropBody): - (ChildClass.prototype.asyncThisPropInEvalExp): - (ChildClass.prototype.asyncThisPropInEvalBody): - (ChildClass.prototype.asyncThisValueExp): - (ChildClass.prototype.asyncThisValueBody): - (ChildClass.prototype.asyncThisValueInEvalExp): - (ChildClass.prototype.asyncThisValueInEvalBody): - (ChildClass): - (ChildClass2): - (ChildClass2.prototype.classValue): - (ChildClass2.prototype.get classProperty): - * stress/async-arrow-functions-lexical-super-binding.js: - -2017-01-09 Yusuke Suzuki - - [JSC] Prototype dynamic-import - https://bugs.webkit.org/show_bug.cgi?id=165724 - - Reviewed by Saam Barati. - - * stress/import-basic.js: Added. - (async.async.load): - (async): - (catch): - * stress/import-from-eval.js: Added. - (async): - (catch): - * stress/import-syntax.js: Added. - (testSyntaxError): - * stress/import-tests/cocoa.js: Added. - (export.Cocoa): - (export.hello): - * stress/import-tests/multiple.js: Added. - (export.result): - * stress/import-tests/multiple2.js: Added. - (export.ok): - * stress/import-tests/should.js: Added. - (export.shouldBe): - (export.shouldThrow): - * stress/modules-syntax-error.js: - -2017-01-09 Commit Queue - - Unreviewed, rolling out r210476. - https://bugs.webkit.org/show_bug.cgi?id=166859 - - "4% JSBench regression" (Requested by keith_mi_ on #webkit). - - Reverted changeset: - - "Add a slice intrinsic to the DFG/FTL" - https://bugs.webkit.org/show_bug.cgi?id=166707 - http://trac.webkit.org/changeset/210476 - -2017-01-06 Saam Barati - - Add a slice intrinsic to the DFG/FTL - https://bugs.webkit.org/show_bug.cgi?id=166707 - - Reviewed by Filip Pizlo. - - * stress/array-slice-intrinsic.js: Added. - (assert): - (shallowEq): - (runTest1): - (runTest2): - * stress/array-slice-jettison-on-constructor-change.js: Added. - (assert): - (runTest1): - (runTest2): - (addRandomProperties): - (runTests): - * stress/array-slice-osr-exit-2.js: Added. - (assert): - (Foo): - (shallowEq): - (runTest1): - (runTest2): - (addRandomProperties): - (runTests): - * stress/array-slice-osr-exit.js: Added. - (assert): - (Foo): - (shallowEq): - (runTest1): - (runTest2): - (addRandomProperties): - (runTests): - -2017-01-06 Michael Saboff - - @putByValDirect in Array.of and Array.from overwrites non-writable/configurable properties - https://bugs.webkit.org/show_bug.cgi?id=153486 - - Reviewed by Saam Barati. - - New regression test. - - * stress/regress-153486.js: Added. - (shouldEqual): - (makeUnwriteableUnconfigurableObject): - (testArrayOf): - (testArrayFrom): - (runTest): - -2016-12-30 Filip Pizlo - - DeferGC::~DeferGC should be super cheap - https://bugs.webkit.org/show_bug.cgi?id=166626 - - Reviewed by Saam Barati. - - * stress/slow-path-generator-updating-current-node-dfg.js: - * stress/unshift-array-storage.js: - -2017-01-04 JF Bastien - - WebAssembly: sections with the same name are allowed - https://bugs.webkit.org/show_bug.cgi?id=166708 - - Reviewed by Saam Barati. - - * wasm/self-test/test_BuilderJSON.js: - (SectionsWithSameCustomName): - -2017-01-04 Saam Barati - - stress/spread-calling.js timing out on the bots - https://bugs.webkit.org/show_bug.cgi?id=166689 - - - Reviewed by Mark Lam. - - * stress/spread-calling.js: - -2017-01-04 JF Bastien - - WebAssembly JS API: add Module.sections - https://bugs.webkit.org/show_bug.cgi?id=165159 - - - Reviewed by Mark Lam. - - As described here: https://github.com/WebAssembly/design/blob/master/JS.md#webassemblymodulecustomsections - - * wasm/Builder.js: allow custom sections to be duplicated - * wasm/js-api/Module.customSection.js: Added. - (assert.throws.WebAssembly.Module.prototype.customSections): - (assert.eq): - -2017-01-04 Saam Barati - - We don't properly handle exceptions inside the nativeCallTrampoline macro in the LLInt - https://bugs.webkit.org/show_bug.cgi?id=163720 - - Reviewed by Mark Lam. - - * stress/bound-function-tail-call-with-exception.js: Added. - (bar): - (foo): - (catch): - -2017-01-03 JF Bastien - - WebAssembly JS API: check and test in-call / out-call values - https://bugs.webkit.org/show_bug.cgi?id=164876 - - - Reviewed by Saam Barati. - - * wasm.yaml: - * wasm/assert.js: add an assert for NaN comparison - * wasm/fuzz/export-function.js: Added. Generate random wasm export - signatures, and call them with random parameters. - (const.paramExporter): - (const.setBuffer): - (const.types.generate): - (generate): - * wasm/js-api/export-arity.js: Added. - (const.paramExporter): Test that mismatched arities when JS calls - wasm follow the defined semantics: i32 is 0, f32 / f64 are NaN. - https://github.com/WebAssembly/design/blob/master/JS.md#exported-function-exotic-objects - * wasm/js-api/export-void-is-undef.js: Added. Test that "void" - wasm functions return "undefined" in JS. - -2017-01-02 JF Bastien - - WebAssembly: handle and optimize wasm export → wasm import calls - https://bugs.webkit.org/show_bug.cgi?id=165282 - - Reviewed by Saam Barati. - - * wasm/Builder.js: Add a Proxy to Builder.js, which intercepts - unknown property lookups. This creates way better error messages - on typos than 'undefined is not a function', which happens - semi-frequently as I typo opcode names (and which one is a typo is - hard to find because we chain builders). - (const._isValidValue): - (get target): - (const._importFunctionContinuation): - (const._importMemoryContinuation): - (const._importTableContinuation): - (const._exportFunctionContinuation): - (export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section): - (export.default.Builder.prototype._registerSectionBuilders.this.Unknown): - * wasm/LowLevelBinary.js: Add limited support for var{u}int64 (only the 32-bit values) - (export.default.LowLevelBinary.prototype.varint32): - (export.default.LowLevelBinary.prototype.varuint64): - (export.default.LowLevelBinary.prototype.varint64): - * wasm/function-tests/exceptions.js: update error message - * wasm/function-tests/trap-load.js: update error message - * wasm/function-tests/trap-store.js: update error message - * wasm/js-api/wasm-to-wasm-bad-signature.js: Added. Test a bunch of bad wasm->wasm import signatures - (const.makeImportee.signature.switch): - (BadSignatureDropStartParams): - * wasm/js-api/wasm-to-wasm.js: Added. Test 64-bit wasm->wasm import calls - (const.callerModule): - (const.calleeModule): - (WasmToWasm): - -2017-01-02 Saam Barati - - WebAssembly: Some loads don't take into account the offset - https://bugs.webkit.org/show_bug.cgi?id=166616 - - - Reviewed by Keith Miller. - - * wasm/function-tests/load-offset.js: Added. - -2016-12-29 Saam Barati - - WebAssembly: Rebase spec-tests now that wabt has been updated to produce certain kinds of invalid modules - https://bugs.webkit.org/show_bug.cgi?id=166491 - - - Reviewed by Yusuke Suzuki. - - Based off these revisions: - - spec: b055d01ea1dfdd7a5231ae779095435f836de97f - - wabt: d0d44702c753f851b094615298a2f4d4e3c21035 - - The reason for the rebase is that wabt was updated to stop - silently rejecting invalid modules. This was needed because - some of the spec tests check to make sure that the module - is invalid, but wabt was silently ignoring the errors and - generating valid modules: - https://github.com/WebAssembly/wabt/issues/256 - - * wasm.yaml: - * wasm/spec-tests/address.wast.js: - * wasm/spec-tests/binary.wast.js: - * wasm/spec-tests/block.wast.js: - * wasm/spec-tests/br.wast.js: - * wasm/spec-tests/br_if.wast.js: - * wasm/spec-tests/br_table.wast.js: - * wasm/spec-tests/break-drop.wast.js: - * wasm/spec-tests/call.wast.js: - * wasm/spec-tests/call_indirect.wast.js: - * wasm/spec-tests/comments.wast.js: - * wasm/spec-tests/conversions.wast.js: - * wasm/spec-tests/custom_section.wast.js: - * wasm/spec-tests/endianness.wast.js: - * wasm/spec-tests/exports.wast.js: - * wasm/spec-tests/f32.wast.js: - * wasm/spec-tests/f32_cmp.wast.js: - * wasm/spec-tests/f64.wast.js: - * wasm/spec-tests/f64_cmp.wast.js: - * wasm/spec-tests/fac.wast.js: - * wasm/spec-tests/float_exprs.wast.js: - * wasm/spec-tests/float_literals.wast.js: - * wasm/spec-tests/float_memory.wast.js: - * wasm/spec-tests/float_misc.wast.js: - * wasm/spec-tests/forward.wast.js: - * wasm/spec-tests/func.wast.js: - * wasm/spec-tests/func_ptrs.wast.js: - * wasm/spec-tests/get_local.wast.js: - * wasm/spec-tests/globals.wast.js: - * wasm/spec-tests/i32.wast.js: - * wasm/spec-tests/i64.wast.js: - * wasm/spec-tests/imports.wast.js: - * wasm/spec-tests/int_exprs.wast.js: - * wasm/spec-tests/int_literals.wast.js: - * wasm/spec-tests/left-to-right.wast.js: - * wasm/spec-tests/linking.wast.js: - * wasm/spec-tests/loop.wast.js: - * wasm/spec-tests/memory.wast.js: - * wasm/spec-tests/memory_redundancy.wast.js: - * wasm/spec-tests/memory_trap.wast.js: - * wasm/spec-tests/names.wast.js: - * wasm/spec-tests/nop.wast.js: - * wasm/spec-tests/resizing.wast.js: - * wasm/spec-tests/return.wast.js: - * wasm/spec-tests/select.wast.js: - * wasm/spec-tests/set_local.wast.js: - * wasm/spec-tests/skip-stack-guard-page.wast.js: - * wasm/spec-tests/stack.wast.js: - * wasm/spec-tests/start.wast.js: - * wasm/spec-tests/store_retval.wast.js: - * wasm/spec-tests/switch.wast.js: - * wasm/spec-tests/tee_local.wast.js: - * wasm/spec-tests/traps.wast.js: - * wasm/spec-tests/typecheck.wast.js: - * wasm/spec-tests/unreachable.wast.js: - * wasm/spec-tests/unwind.wast.js: - -2016-12-28 Saam Barati - - WebAssembly: Don't allow duplicate export names - https://bugs.webkit.org/show_bug.cgi?id=166490 - - - Reviewed by Keith Miller. - - * wasm.yaml: - * wasm/function-tests/invalid-duplicate-export.js: Added. - -2016-12-28 Saam Barati - - WebAssembly: Implement grow_memory and current_memory - https://bugs.webkit.org/show_bug.cgi?id=166448 - - - Reviewed by Keith Miller. - - I rewrote some of the testWasmModuleFunctions that used Memory to use - the JS API since the jsc.cpp version can no longer use memory. - - * wasm.yaml: - * wasm/function-tests/add-12.js: - (testWasmModuleFunctions): - * wasm/function-tests/br-if-loop-less-than.js: - (testWasmModuleFunctions): - * wasm/function-tests/brTableAsIf.js: - (testWasmModuleFunctions): - * wasm/function-tests/brTableManyValues.js: - (testWasmModuleFunctions): - * wasm/function-tests/brTableWithLoop.js: - (testWasmModuleFunctions): - * wasm/function-tests/dumb-eq-if-then-else.js: - * wasm/function-tests/eqz.js: - * wasm/function-tests/grow-memory-2.js: Added. - (const.func): - (assert.eq.instance.exports.foo): - * wasm/function-tests/grow-memory-3.js: Added. - * wasm/function-tests/grow-memory-4.js: Added. - (const.func): - * wasm/function-tests/grow-memory.js: Added. - (binaryShouldNotParse): - (assert.truthy): - (assert.eq): - (memory.grow): - * wasm/function-tests/i32-load.js: - (testWasmModuleFunctions): - * wasm/function-tests/i32-load8-s.js: - * wasm/function-tests/max.js: - * wasm/function-tests/min.js: - * wasm/js-api/memory-grow.js: Added. - (i.i): - (assertEq): - * wasm/js-api/test_memory.js: - * wasm/wasm.json: - -2016-12-25 Yusuke Suzuki - - Propagate the source origin as much as possible - https://bugs.webkit.org/show_bug.cgi?id=166348 - - Reviewed by Darin Adler. - - * stress/source-origin.js: Added. - (shouldBe): - -2016-12-24 Caio Lima - - [test262] Fixing mapped arguments object property test case - https://bugs.webkit.org/show_bug.cgi?id=159398 - - Reviewed by Saam Barati. - - * stress/arguments-bizarre-behaviour-disable-enumerability.js: - * stress/arguments-define-property.js: Added. - (assert): - (testProperties): - * stress/arguments-non-configurable.js: Added. - (assert): - (tryChangeNonConfigurableDescriptor): - (set tryChangeNonConfigurableDescriptor): - (tryChangeWritableOfNonConfigurableDescriptor): - * test262.yaml: - -016-12-20 Caio Lima - - [test262] Fixing mapped arguments object property test case - https://bugs.webkit.org/show_bug.cgi?id=159398 - - Reviewed by . - - * stress/arguments-bizarre-behaviour-disable-enumerability.js: - * stress/arguments-define-property.js: Added. - (assert): - (testProperties): - * stress/arguments-non-configurable.js: Added. - (assert): - (tryChangeNonConfigurableDescriptor): - (set tryChangeNonConfigurableDescriptor): - (tryChangeWritableOfNonConfigurableDescriptor): - * test262.yaml: - -2016-12-23 Keith Miller - - WebAssembly: trap on bad division. - https://bugs.webkit.org/show_bug.cgi?id=164786 - - Reviewed by Mark Lam. - - Also, mark conversions as passing. - - * wasm.yaml: - * wasm/wasm.json: - -2016-12-22 Keith Miller - - WebAssembly: Make spec-tests/f32.wast.js and spec-tests/f64.wast.js pass - https://bugs.webkit.org/show_bug.cgi?id=166447 - - Reviewed by Saam Barati. - - * wasm.yaml: - * wasm/wasm.json: - -2016-12-22 Saam Barati - - WebAssembly: Make calling Wasm functions that returns or takes an i64 as a parameter an early exception - https://bugs.webkit.org/show_bug.cgi?id=166437 - - - Reviewed by Keith Miller. - - * wasm.yaml: - * wasm/function-tests/i64-from-js-exceptions.js: Added. - (const.imp.import.sideEffects): - (assert.throws.instance.exports.foo.valueOf): - -2016-12-22 Mark Lam - - De-duplicate finally blocks. - https://bugs.webkit.org/show_bug.cgi?id=160168 - - Reviewed by Saam Barati. - - Re-landing r209952 with a few new tests added in test-finally.js. - - * stress/deeply-nested-finallys.js: Copied from JSTests/stress/deeply-nested-finallys.js. - - Tests many levels of finally nesting. This causes the old code to hang (and - crashes eventually) while trying to generate bytecode for the exponentially - duplicated finally blocks. The new code completes this test almost instantly. - - * stress/test-finally.js: Copied from JSTests/stress/test-finally.js. - - Tests control flow through various permutations of finally blocks. - -2016-12-22 Saam Barati - - WebAssembly: Make the spec-tests/address.wast.js test pass - https://bugs.webkit.org/show_bug.cgi?id=166429 - - - Reviewed by Keith Miller. - - * wasm.yaml: - -2016-12-22 Keith Miller - - WebAssembly: The validator should not allow unused stack entries at the end of a block - https://bugs.webkit.org/show_bug.cgi?id=166411 - - Reviewed by Saam Barati. - - Test cleanup and enable new passing tests. - - * wasm.yaml: - * wasm/function-tests/br-if-as-return.js: - -2016-12-22 Saam Barati - - WebAssembly: Make the spec-tests/start.wast.js test pass - https://bugs.webkit.org/show_bug.cgi?id=166416 - - - Reviewed by Yusuke Suzuki. - - * wasm.yaml: - -2016-12-21 Keith Miller - - WebAssembly: Fix decode floating point constants in unreachable code - https://bugs.webkit.org/show_bug.cgi?id=166400 - - Reviewed by Saam Barati. - - * wasm.yaml: - -2016-12-21 Keith Miller - - WebAssembly: Allow br, br_if, and br_table to act as a return - https://bugs.webkit.org/show_bug.cgi?id=166393 - - Reviewed by Saam Barati. - - Add tests for breaks acting as returns and fix tests that - validate error messages. - - * wasm/function-tests/br-as-return.js: Added. - * wasm/function-tests/br-if-as-return.js: Added. - * wasm/function-tests/br-table-as-return.js: Added. - * wasm/function-tests/if-no-else-non-void.js: - * wasm/function-tests/struct.js: Added. - * wasm/js-api/global-error.js: - (assert.throws): - * wasm/js-api/table.js: - (assert.throws): - -2016-12-21 Saam Barati - - WebAssembly: Import spec tests - https://bugs.webkit.org/show_bug.cgi?id=166395 - - Rubber stamped by Keith Miller. - - This patch implements the Wasm spec's tests found here: - https://github.com/WebAssembly/spec/tree/master/interpreter/test - - These tests are in .wast s-epxression format. To convert - them to JS, I use a script from the wabt library, found here: - https://github.com/WebAssembly/wabt/blob/master/test/run-gen-spec-js.py - - I also added a script that automatically imports the tests as - JS files. The inputs to the script is the path to the Wasm spec - git repo and the path to the wabt git repo. This will make importing - new tests easy in the future. - - The wasm spec imported is at commit: b055d01ea1dfdd7a5231ae779095435f836de97f - The wabt used to do the import is at commit: 622b42dced6d793e9d49e9b1fd1d1524defd1387 - - * wasm.yaml: - * wasm/import-spec-tests.rb: Added. - * wasm/spec-tests: Added. - * wasm/spec-tests/address.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/binary.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/block.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/br.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/br_if.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/br_table.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/break-drop.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/call.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/call_indirect.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/comments.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/conversions.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/custom_section.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/endianness.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/exports.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/f32.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/f32_cmp.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/f64.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/f64_cmp.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/fac.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/float_exprs.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/float_literals.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/float_memory.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/float_misc.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/forward.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/func.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/func_ptrs.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/get_local.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/globals.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/i32.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/i64.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/imports.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/int_exprs.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/int_literals.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/left-to-right.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/linking.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/loop.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/memory.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/memory_redundancy.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/memory_trap.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/names.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/nop.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/resizing.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/return.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/select.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/set_local.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/skip-stack-guard-page.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/stack.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/start.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/store_retval.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/switch.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/tee_local.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/traps.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/typecheck.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/unreachable.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - * wasm/spec-tests/unwind.wast.js: Added. - (register): - (module): - (instance): - (assert_malformed): - (assert_invalid): - (assert_soft_invalid): - (assert_unlinkable): - (assert_uninstantiable): - (assert_trap): - (assert_return): - (assert_return_nan): - -2016-12-20 Keith Miller - - Add support for global - https://bugs.webkit.org/show_bug.cgi?id=165171 - - Reviewed by Filip Pizlo. - - * stress/global.js: Added. - -2016-12-20 JF Bastien - - WebAssembly API: implement WebAssembly.LinkError - https://bugs.webkit.org/show_bug.cgi?id=165805 - - - Reviewed by Mark lam. - - Update all exception sites which now throw WebAssembly.LinkError. - - * wasm/js-api/element-data.js: - * wasm/js-api/element.js: - (assert.throws): - * wasm/js-api/global-error.js: - (new.Number): - * wasm/js-api/table.js: - (assert.throws): - (new.WebAssembly.Table): - * wasm/js-api/test_Data.js: - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - * wasm/js-api/test_memory.js: - (test): - (test.testMemImportError): Deleted. - -2016-12-20 JF Bastien - - WebAssembly: unique function signatures - https://bugs.webkit.org/show_bug.cgi?id=165957 - - - Reviewed by Saam Barati. - - * wasm/function-tests/table-basic.js: FIXME is now addressed, - though instance to instance calls still need work which bug - #165282 will address - (i.assert.eq.foo): - * wasm/js-api/unique-signature.js: Added. - (CallIndirectWithDuplicateSignatures): - -2016-12-19 Mark Lam - - Rolling out r209974 and r209952. They break some websites in mysterious ways. Step 2: Rollout r209952. - https://bugs.webkit.org/show_bug.cgi?id=166049 - - Not reviewed. - - * stress/deeply-nested-finallys.js: Removed. - * stress/test-finally.js: Removed. - -2016-12-19 Saam Barati - - WebAssembly: Make running Wasm tests take less time by reducing some tests' iteration count and by splitting some tests into different files - https://bugs.webkit.org/show_bug.cgi?id=166017 - - Reviewed by Yusuke Suzuki. - - * wasm/function-tests/trap-load-2.js: Added. - (assert): - (wasmFrameCountFromError): - (continuation): - (i.catch): - * wasm/function-tests/trap-load.js: - (assert.continuation): Deleted. - * wasm/function-tests/trap-store-2.js: Added. - (import.Builder.from.string_appeared_here.assert): - (continuation): - (i.catch): - * wasm/function-tests/trap-store.js: - (assert.continuation): Deleted. - (assert): Deleted. - * wasm/js-api/test_memory.js: - (test): - -2016-12-18 Saam Barati - - WebAssembly: Implement the WebAssembly.compile and WebAssembly.validate - https://bugs.webkit.org/show_bug.cgi?id=165936 - - Reviewed by Mark Lam. - - * wasm/js-api/Module-compile.js: Added. - (async.testPromiseAPI): - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - * wasm/js-api/validate.js: Added. - (assert.truthy.WebAssembly.validate.builder.WebAssembly): - -2016-12-16 Mark Lam - - De-duplicate finally blocks. - https://bugs.webkit.org/show_bug.cgi?id=160168 - - Reviewed by Keith Miller. - - * stress/deeply-nested-finallys.js: Added. - - Tests many levels of finally nesting. This causes the old code to hang (and - crashes eventually) while trying to generate bytecode for the exponentially - duplicated finally blocks. The new code completes this test almost instantly. - - * stress/test-finally.js: Added. - - Tests control flow through various permutations of finally blocks. - -2016-12-16 Saam Barati - - WebAssembly: WasmB3IRGenerator should throw exceptions instead of crash - https://bugs.webkit.org/show_bug.cgi?id=165834 - - Reviewed by Keith Miller. - - * wasm/function-tests/exceptions.js: Added. - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance): - * wasm/function-tests/table-basic.js: - (i.i.42.throw.new.Error): - -2016-12-16 Keith Miller - - i64.eqz should use an Int64 zero - https://bugs.webkit.org/show_bug.cgi?id=165942 - - Reviewed by Mark Lam. - - * wasm/wasm.json: - -2016-12-15 Keith Miller - - Fix validation of non-void if blocks with no else - https://bugs.webkit.org/show_bug.cgi?id=165938 - - Reviewed by Saam Barati. - - Add a new failing test and a fix an existing one. - - * wasm/function-tests/dead-call.js: - * wasm/function-tests/if-no-else-non-void.js: Added. - -2016-12-15 Keith Miller - - Wasm should not create empty unlinked callsites - https://bugs.webkit.org/show_bug.cgi?id=165933 - - Reviewed by Mark Lam. - - * wasm/function-tests/dead-call.js: Added. - -2016-12-15 JF Bastien - - WebAssembly: improve compilation error messages - https://bugs.webkit.org/show_bug.cgi?id=163919 - - Reviewed by Saam Barati. - - Update error messages in these tests. - Use the assert.throws facility in many of them which weren't already. - - * wasm/js-api/element.js: - (assert.throws.new.WebAssembly.Module.builder.WebAssembly): - (assert.throws): - * wasm/js-api/global-error.js: - (assert.throws.new.WebAssembly.Module.bin): - (assert.throws): - (new.Number): - * wasm/js-api/table.js: - (assert.throws.new.WebAssembly.Module.builder.WebAssembly): - (assert.throws): - (assertBadTableImport): - * wasm/js-api/test_Data.js: - (DataSectionWithoutMemory): - * wasm/js-api/test_Start.js: - (InvalidStartFunctionIndex): - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - -2016-12-15 JF Bastien - - WebAssembly API: improve data section errors - https://bugs.webkit.org/show_bug.cgi?id=165733 - - Reviewed by Keith Miller. - - * wasm/js-api/element-data.js: Added. - (ElementBeforeData.set const): - (ElementBeforeData): check the order of initialization, which is observable on failure - * wasm/js-api/test_Data.js: - (DataSectionWithoutMemory): - (DataSectionOffTheEnd): Deleted. - (DataSectionPartlyOffTheEnd): Deleted. - (DataSectionEmptyOffTheEnd): Deleted. - (DataSectionSeenByStart): Deleted. - -2016-12-15 Keith Miller - - Fix 64-bit shift family Wasm opcodes - https://bugs.webkit.org/show_bug.cgi?id=165902 - - Reviewed by Geoffrey Garen. - - Add tests for shift family of instructions. Since - we can't generate i64 values to pass to wasm we only compile - the code for those functions. Attempting to generate any i64 - code using these instructions would have been enough to cause - the B3 Validation error anyway. - - * wasm/assert.js: - * wasm/function-tests/rotl.js: Added. - * wasm/function-tests/rotr.js: Added. - * wasm/function-tests/shl.js: Added. - * wasm/function-tests/shr-s.js: Added. - * wasm/function-tests/shr-u.js: Added. - * wasm/wasm.json: - -2016-12-14 Keith Miller - - WebAssembly: test_BuilderJSON.js is broken - https://bugs.webkit.org/show_bug.cgi?id=165893 - - Reviewed by Michael Saboff. - - * wasm/Builder.js: - (const._isValidValue): - * wasm/self-test/test_BuilderJSON.js: - -2016-12-14 Keith Miller - - Unreviewed, fix test. - - * wasm/function-tests/i32-const.js: - -2016-12-14 Keith Miller - - Wasm should decode constants correctly - https://bugs.webkit.org/show_bug.cgi?id=165886 - - Reviewed by Saam Barati. - - * wasm/Builder.js: - (const._isValidValue): - * wasm/Builder_WebAssemblyBinary.js: - (const.putOp): - * wasm/LowLevelBinary.js: - (export.default.LowLevelBinary.prototype.float): - (export.default.LowLevelBinary.prototype.double): - * wasm/function-tests/f32-const.js: Added. - * wasm/function-tests/f64-const.js: Added. - * wasm/function-tests/i32-const.js: Added. - * wasm/wasm.json: - -2016-12-14 Saam Barati - - WebAssembly: Add various low hanging fruit that will allow us to run the LLVM torture tests in Wasm - https://bugs.webkit.org/show_bug.cgi?id=165883 - - Reviewed by Keith Miller. - - * wasm/Builder.js: - (export.default.Builder.prototype._registerSectionBuilders.switch.case.string_appeared_here.this.section): - * wasm/Builder_WebAssemblyBinary.js: - (const.emitters.Export): - * wasm/js-api/table.js: - (assertBadBinary): - (assertBadTable): - (assert.truthy): - * wasm/js-api/test_memory.js: - (binaryShouldNotParse): - (test): - (test.testMemImportError): - (assert.truthy): - (assert): Deleted. - -2016-12-14 Filip Pizlo - - DirectTailCall implementation needs to tell the shuffler what to put into the ArgumentCount explicitly - https://bugs.webkit.org/show_bug.cgi?id=165882 - - Reviewed by Mark Lam. - - * stress/direct-tail-call-arity-mismatch-count-args.js: Added. - (foo): - (bar): - -2016-12-14 Keith Miller - - WebAssembly JS API: implement Global - https://bugs.webkit.org/show_bug.cgi?id=164133 - - Reviewed by Saam Barati. - - * wasm/Builder.js: - (export.default.Builder.prototype._registerSectionBuilders.switch.case.string_appeared_here.this.section): - * wasm/Builder_WebAssemblyBinary.js: - (const.valueType.WASM.description.type.i32.type.const.putGlobalType): - (const.putOp): - (const.putInitExpr): - (const.emitters.Import): - (const.emitters.Global): - (const.emitters.Export): - (const.emitters.Code): - * wasm/LowLevelBinary.js: - (export.default.LowLevelBinary.prototype.varuint32): - (export.default.LowLevelBinary.prototype.varint32): - * wasm/js-api/global-error.js: Added. - (catch): - (assert.truthy): - * wasm/js-api/global-external-init-from-import.js: Added. - * wasm/js-api/global-internal-init-from-import.js: Added. - * wasm/js-api/global-mutate.js: Added. - (createInternalGlobalModule): - * wasm/js-api/globals-export.js: Added. - * wasm/js-api/globals-import.js: Added. - * wasm/wasm.json: - -2016-12-13 Saam Barati - - WebAssembly: implement the elements section - https://bugs.webkit.org/show_bug.cgi?id=165715 - - Reviewed by Keith Miller. - - * wasm/Builder.js: - (export.default.Builder.prototype._registerSectionBuilders.switch.case.string_appeared_here.this.section): - (export.default.Builder.prototype._registerSectionBuilders.switch): - * wasm/Builder_WebAssemblyBinary.js: - (const.emitters.Element): - * wasm/function-tests/basic-element.js: Added. - * wasm/js-api/element.js: Added. - (assertBadBinary): - (assertBadBinary.badInstantiation): - -2016-12-13 Saam Barati - - WebAssembly: implement the table section and table import - https://bugs.webkit.org/show_bug.cgi?id=165716 - - Reviewed by Keith Miller. - - * wasm/Builder.js: - (const._importMemoryContinuation): - (const._importTableContinuation): - (export.default.Builder.prototype._registerSectionBuilders.switch.case.string_appeared_here.this.section): - (const._importMemoryContinuation.section): Deleted. - (const): Deleted. - (const._importMemoryContinuation.assert): Deleted. - * wasm/Builder_WebAssemblyBinary.js: - (const.putResizableLimits): - (const.putTable): - (const.emitters.Import): - (const.emitters.Table): - * wasm/function-tests/call-indirect-params.js: - * wasm/function-tests/call-indirect.js: - * wasm/function-tests/table-basic-2.js: Added. - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance): - (func): - * wasm/function-tests/table-basic.js: Added. - (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance): - * wasm/js-api/call-indirect-results.js: - (const.wasmModuleWhichImportJS): Deleted. - (MonomorphicImport): Deleted. - * wasm/js-api/call-indirect.js: - (const.wasmModuleWhichImportJS): - (const.makeTable): - (Polyphic2Import): - (VirtualImport): - (MonomorphicImport): Deleted. - * wasm/js-api/table.js: Added. - (assertBadBinary): - (assert.truthy): - (assertBadTable): - (assertBadTableImport): - (assertBadBinary.assertBadTableInstance): - (assertBadTableInstance): - (new.WebAssembly.Table): - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - -2016-12-13 Commit Queue - - Unreviewed, rolling out r209725. - https://bugs.webkit.org/show_bug.cgi?id=165811 - - "Broke ARMv7 builds" (Requested by msaboff on #webkit). - - Reverted changeset: - - "REGRESSION(r209653): speedometer crashes making virtual slow - path tailcalls" - https://bugs.webkit.org/show_bug.cgi?id=165748 - http://trac.webkit.org/changeset/209725 - -2016-12-12 Michael Saboff - - REGRESSION(r209653): speedometer crashes making virtual slow path tailcalls - https://bugs.webkit.org/show_bug.cgi?id=165748 - - Reviewed by Filip Pizlo. - - New regression test. - - * stress/regress-165748.js: Added. - (sum1): - (sum2): - (sum3): - (sum4): - (sum5): - (sum6): - (tailCaller): - (test): - -2016-12-12 Mark Lam - - Debug JSC test timeout: stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js.ftl-no-cjit. - https://bugs.webkit.org/show_bug.cgi?id=164630 - - Reviewed by Keith Miller. - - Speculative fix for timeout issue. It looks like this test just runs a bit - slower on debug builds. So, we'll give it a little more time to run. - - * stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js: - -2016-12-11 Saam Barati - - We should be able to throw exceptions from Wasm code and when Wasm frames are on the stack - https://bugs.webkit.org/show_bug.cgi?id=165429 - - Reviewed by Keith Miller. - - * wasm/function-tests/trap-load.js: Added. - (assert): - (wasmFrameCountFromError): - (i.catch): - (assert.continuation): - * wasm/function-tests/trap-store.js: Added. - (import.Builder.from.string_appeared_here.assert): - (i.catch): - (assert.continuation): - (assert): - * wasm/js-api/test_memory_constructor.js: - (assert): - -2016-12-10 Commit Queue - - Unreviewed, rolling out r209653, r209654, r209663, and - r209673. - https://bugs.webkit.org/show_bug.cgi?id=165739 - - speedometer crashes (Requested by pizlo on #webkit). - - Reverted changesets: - - "JSVALUE64: Pass arguments in platform argument registers when - making JavaScript calls" - https://bugs.webkit.org/show_bug.cgi?id=160355 - http://trac.webkit.org/changeset/209653 - - "Unreviewed build fix for 32 bit builds." - http://trac.webkit.org/changeset/209654 - - "Unreviewed build fix for the CLOOP after r209653" - http://trac.webkit.org/changeset/209663 - - "REGRESSION(r209653) Crash in CallFrameShuffler::snapshot()" - https://bugs.webkit.org/show_bug.cgi?id=165728 - http://trac.webkit.org/changeset/209673 - -2016-12-10 Michael Saboff - - REGRESSION(r209653) Crash in CallFrameShuffler::snapshot() - https://bugs.webkit.org/show_bug.cgi?id=165728 - - Reviewed by Filip Pizlo. - - New regression test. - - * stress/regress-165728.js: Added. - (sum1): - (sum2): - (tailCaller): - (test): - -2016-12-10 Keith Miller - - Fix indirect_call if the result type is used. - https://bugs.webkit.org/show_bug.cgi?id=165727 - - Reviewed by Michael Saboff. - - * wasm/js-api/call-indirect-results.js: Added. - (const.wasmModuleWhichImportJS): - (MonomorphicImport): - -2016-12-10 Yusuke Suzuki - - [JSC] Module namespace object behaves like immutable prototype exotic object - https://bugs.webkit.org/show_bug.cgi?id=165598 - - Reviewed by Mark Lam. - - * modules/namespace-prototype-assignment.js: Added. - (else): - (reportError): - (shouldEqual): - (shouldThrow): - (stringify): - (makeTestID): - (doInternalSetPrototypeOf): - (ordinarySetPrototypeOf): - (setImmutablePrototype): - (windowProxySetPrototypeOf): - (initSetterExpectation): - (throwIfNoExceptionPending): - (objectSetPrototypeOf): - (setUnderscoreProto): - (reflectSetPrototypeOf): - (setPrototypeOf): - (newObjectProto.toString): - (Symbol): - (test): - (runTests): - * modules/namespace-set-prototype-of.js: Added. - (shouldThrow): - (TypeError.Cannot.set prototype): - -2016-12-09 Michael Saboff - - JSVALUE64: Pass arguments in platform argument registers when making JavaScript calls - https://bugs.webkit.org/show_bug.cgi?id=160355 - - Reviewed by Filip Pizlo. - - New microbenchmarks to measure call type performance. - - * microbenchmarks/calling-computed-args.js: Added. - * microbenchmarks/calling-many-callees.js: Added. - * microbenchmarks/calling-one-callee-fixed.js: Added. - * microbenchmarks/calling-one-callee.js: Added. - * microbenchmarks/calling-poly-callees.js: Added. - * microbenchmarks/calling-poly-extra-arity-callees.js: Added. - * microbenchmarks/calling-tailcall.js: Added. - * microbenchmarks/calling-virtual-arity-fixup-callees.js: Added. - * microbenchmarks/calling-virtual-arity-fixup-stackargs.js: Added. - * microbenchmarks/calling-virtual-callees.js: Added. - * microbenchmarks/calling-virtual-extra-arity-callees.js: Added. - -2016-12-09 Keith Miller - - Wasm should support call_indirect - https://bugs.webkit.org/show_bug.cgi?id=165718 - - Reviewed by Filip Pizlo. - - * wasm/Builder.js: - * wasm/function-tests/call-indirect-params.js: Added. - * wasm/function-tests/call-indirect.js: Added. - * wasm/js-api/call-indirect.js: Added. - (const.wasmModuleWhichImportJS): - (MonomorphicImport): - (Polyphic2Import): - (VirtualImport): - * wasm/wasm.json: - -2016-12-09 JF Bastien - - WebAssembly: implement data section - https://bugs.webkit.org/show_bug.cgi?id=165696 - - Reviewed by Keith Miller. - - As specified in https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md#data-section - Note that some of the interesting corner cases are ill-defined by the spec: https://github.com/WebAssembly/design/issues/897 - - * wasm/Builder.js: create a data section from JavaScript - * wasm/Builder_WebAssemblyBinary.js: assemble the data section into the proper binary encoding - (const.emitters.Data): - * wasm/js-api/test_Data.js: Added. - (DataSection): - (DataSectionOffTheEnd): - (DataSectionPartlyOffTheEnd): - (DataSectionEmptyOffTheEnd): - (DataSectionSeenByStart): - * wasm/self-test/test_BuilderJSON.js: make sure the JSON structure is fine (this sanity checks before going to binary) - -2016-12-09 JF Bastien - - WebAssembly JS API: implement start function - https://bugs.webkit.org/show_bug.cgi?id=165150 - - Reviewed by Saam Barati. - - * wasm/Builder.js: allow building a .Start() - * wasm/Builder_WebAssemblyBinary.js: - * wasm/js-api/test_Start.js: Added. - (const.emitters.Start): serialize a start section - * wasm/self-test/test_BuilderJSON.js: validate the start section's content - -2016-12-09 Saam Barati - - WebAssembly JS API: implement importing and defining Memory - https://bugs.webkit.org/show_bug.cgi?id=164134 - - Reviewed by Keith Miller. - - * wasm/Builder.js: - (const._importMemoryContinuation.section): - (const._importMemoryContinuation.assert): - (const._importMemoryContinuation): - (const._exportFunctionContinuation.const): Deleted. - (const._exportFunctionContinuation): Deleted. - * wasm/Builder_WebAssemblyBinary.js: - (const.emitters.Import): - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): - * wasm/js-api/test_memory.js: Added. - (assert): - (binaryShouldNotParse): - (test): - (test.testMemImportError): - * wasm/js-api/test_memory_constructor.js: Added. - (assert): - (throw.new.Error): - (testInvalidSize): - (assert.testInvalidInitial): - (testInvalidInitial.testInvalidMaximum): - (testInvalidInitial): - (testInvalidMaximum): - * wasm/self-test/test_BuilderJSON.js: - -2016-12-08 JF Bastien - - WebAssembly: JSC::link* shouldn't need a CodeBlock - https://bugs.webkit.org/show_bug.cgi?id=165591 - - Reviewed by Keith Miller. - - test that wasm -> JS works, including the IC - - * wasm/js-api/test_Instance.js: - (const.wasmModuleWhichImportJS): - (MonomorphicImport): - (Polyphic2Import): - (Polyphic3Import): - (VirtualImport): - -2016-12-08 Filip Pizlo - - Green the cloop bot by raising this threshold. - - * mozilla/js1_5/Array/regress-101964.js: - -2016-12-08 JF Bastien - - WebAssembly JS API: wire up Instance imports - https://bugs.webkit.org/show_bug.cgi?id=165118 - - Reviewed by Saam Barati. - - * wasm/js-api/test_Instance.js: add the test, disabled for now - -2016-12-07 Keith Miller - - Add more missing trivial wasm ops. - https://bugs.webkit.org/show_bug.cgi?id=165564 - - Add tests for drop and tee_local. - - Reviewed by Geoffrey Garen. - - * wasm/function-tests/drop.js: Added. - * wasm/function-tests/nop.js: Added. - * wasm/function-tests/tee-local.js: Added. - -2016-12-06 Keith Miller - - Add support for truncation operators - https://bugs.webkit.org/show_bug.cgi?id=165519 - - Reviewed by Geoffrey Garen. - - * wasm/function-tests/i32-trunc-s-f32.js: Added. - * wasm/function-tests/i32-trunc-s-f64.js: Added. - * wasm/function-tests/i32-trunc-u-f32.js: Added. - * wasm/function-tests/i32-trunc-u-f64.js: Added. - * wasm/function-tests/i64-trunc-s-f32.js: Added. - * wasm/function-tests/i64-trunc-s-f64.js: Added. - * wasm/function-tests/i64-trunc-u-f32.js: Added. - * wasm/function-tests/i64-trunc-u-f64.js: Added. - -2016-12-06 Mark Lam - - Introduce the concept of Immutable Prototype Exotic Objects to comply with the spec. - https://bugs.webkit.org/show_bug.cgi?id=165227 - - - Reviewed by Saam Barati. - - * stress/get-from-scope-dynamic-onto-proxy.js: - - Updated error message. - - * stress/proxy-dont-infinite-loop.js: Removed. - * stress/proxy-json-path.js: Removed. - * stress/rest-parameter-allocation-elimination-watchpoints-6.js: Removed. - - Removed these tests because the issue they are testing relies on being able to - set Object.prototype.__proto__ to something else (which is now not possible). - -2016-12-05 Caitlin Potter - - [JSC] report unexpected token when "async" is followed by identifier - https://bugs.webkit.org/show_bug.cgi?id=165091 - - Reviewed by Mark Lam. - - * stress/bug-165091.js: - -2016-12-05 Keith Miller - - Add Wasm i64 to i32 conversion. - https://bugs.webkit.org/show_bug.cgi?id=165378 - - Reviewed by Filip Pizlo. - - It turns out the wrap operation is just B3's Trunc. - - * wasm/wasm.json: - -2016-12-04 Keith Miller - - Add support for Wasm ctz and popcnt - https://bugs.webkit.org/show_bug.cgi?id=165369 - - Reviewed by Saam Barati. - - * wasm/function-tests/ctz.js: Added. - * wasm/function-tests/popcnt.js: Added. - -2016-12-03 JF Bastien - - WebAssembly: update binary format to 0xD version - https://bugs.webkit.org/show_bug.cgi?id=165345 - - Reviewed by Keith Miller. - - As described in the following PR: https://github.com/WebAssembly/design/pull/836 - Originally committed in r209175, reverted in r209242, and fixed in r209284. - - * wasm/Builder.js: - (const._normalizeFunctionSignature): - * wasm/Builder_WebAssemblyBinary.js: - (const.emitters.Type): - (const.emitters.Code): - * wasm/LowLevelBinary.js: - (export.default.LowLevelBinary.prototype.block_type): - (export.default.LowLevelBinary.prototype.inline_signature_type): Deleted. - * wasm/WASM.js: - * wasm/js-api/test_basic_api.js: - * wasm/self-test/test_BuilderWebAssembly.js: - (EmptyModule): - (CustomSection): - * wasm/self-test/test_WASM.js: - * wasm/wasm.json: - -2016-12-02 Keith Miller - - Add Wasm copysign - https://bugs.webkit.org/show_bug.cgi?id=165355 - - Reviewed by Filip Pizlo. - - * wasm/function-tests/copysign.js: Added. - -2016-12-03 Commit Queue - - Unreviewed, rolling out r209298. - https://bugs.webkit.org/show_bug.cgi?id=165359 - - broke the build (Requested by smfr on #webkit). - - Reverted changeset: - - "Add Wasm copysign" - https://bugs.webkit.org/show_bug.cgi?id=165355 - http://trac.webkit.org/changeset/209298 - -2016-12-02 Keith Miller - - Add Wasm copysign - https://bugs.webkit.org/show_bug.cgi?id=165355 - - Reviewed by Filip Pizlo. - - * wasm/function-tests/copysign.js: Added. - -2016-12-02 Keith Miller - - Unreviewed, fix git having a breakdown over trying to reland a rollout. - -2016-12-02 Keith Miller - - Add Wasm floating point nearest and trunc - https://bugs.webkit.org/show_bug.cgi?id=165339 - - Reviewed by Saam Barati. - - * wasm/function-tests/nearest.js: Added. - * wasm/function-tests/trunc.js: Added. - -2016-12-02 Caitlin Potter - -[JSC] add additional bit to JSTokenType bitfield - https://bugs.webkit.org/show_bug.cgi?id=165091 - - Reviewed by Geoffrey Garen. - - * stress/bug-165091.js: Added. - (shouldThrowSyntaxError): - -2016-12-02 Commit Queue - - Unreviewed, rolling out r209275 and r209276. - https://bugs.webkit.org/show_bug.cgi?id=165348 - - "broke the arm build" (Requested by keith_miller on #webkit). - - Reverted changesets: - - "Add Wasm floating point nearest and trunc" - https://bugs.webkit.org/show_bug.cgi?id=165339 - http://trac.webkit.org/changeset/209275 - - "Unreviewed, forgot to change instruction after renaming." - http://trac.webkit.org/changeset/209276 - -2016-12-02 Keith Miller - - Add Wasm floating point nearest and trunc - https://bugs.webkit.org/show_bug.cgi?id=165339 - - Reviewed by Filip Pizlo. - - * wasm/function-tests/nearest.js: Added. - * wasm/function-tests/trunc.js: Added. - -2016-12-02 JF Bastien - - WebAssembly: revert patch causing odd breakage - https://bugs.webkit.org/show_bug.cgi?id=165308 - - Unreviewed. - - Bug #164724 seems to cause build issues which I haven't tracked down yet. WasmOps.h can't be found: - ./Source/JavaScriptCore/wasm/WasmFormat.h:34:10: fatal error: 'WasmOps.h' file not found - - It's weird since the file is auto-generated and has been for a while. #164724 merely includes it in WasmFormat.h. - - * wasm/Builder.js: - (const._normalizeFunctionSignature): - * wasm/Builder_WebAssemblyBinary.js: - (const.emitters.Type): - (const.emitters.Code): - * wasm/LowLevelBinary.js: - (export.default.LowLevelBinary.prototype.inline_signature_type): - (export.default.LowLevelBinary.prototype.block_type): Deleted. - * wasm/WASM.js: - * wasm/js-api/test_basic_api.js: - * wasm/self-test/test_BuilderWebAssembly.js: - (EmptyModule): - (CustomSection): - * wasm/self-test/test_WASM.js: - * wasm/wasm.json: - -2016-12-01 Ryan Haddad - - Skip flaky test ChakraCore/test/fieldopts/objtypespec-newobj-invalidation.1.js - https://bugs.webkit.org/show_bug.cgi?id=162567 - - Reviewed by Saam Barati. - - * ChakraCore.yaml: - -2016-12-01 Keith Miller - - Add wasm int to floating point opcodes - https://bugs.webkit.org/show_bug.cgi?id=165252 - - Reviewed by Geoffrey Garen. - - Add tests for Wasm integral to floating point conversion opcodes. - - * wasm/function-tests/int-to-floating-point.js: Added. - * wasm/wasm.json: - -2016-12-01 Geoffrey Garen - - Land a test case for - https://bugs.webkit.org/show_bug.cgi?id=165272 - - Reviewed by Saam Barati. - - * stress/marked-argument-buffer.js: Added. - (allocate): - (test.o.toString): - (test): - -2016-11-29 Per Arne Vollan - - [Win] Skip failing JSC tests. - https://bugs.webkit.org/show_bug.cgi?id=165140 - - Reviewed by Mark Lam. - - * ChakraCore.yaml: - * microbenchmarks/tan.js: - -2016-11-30 JF Bastien - - WebAssembly builder: don't throw when checker not implemented - https://bugs.webkit.org/show_bug.cgi?id=165219 - - Reviewed by Mark Lam. - - We should perform whichever checks we've implemented, and assume the rest are OK until bug #163421 is fixed. - - * wasm/Builder.js: - * wasm/README.md: - * wasm/function-tests/add-12.js: - * wasm/function-tests/br-if-loop-less-than.js: - * wasm/function-tests/brTableAsIf.js: - * wasm/function-tests/brTableManyValues.js: - * wasm/function-tests/brTableWithLoop.js: - * wasm/function-tests/dumb-eq-if-then-else.js: - * wasm/function-tests/dumb-less-than-fallthrough.js: - * wasm/function-tests/dumb-less-than-ite.js: - * wasm/function-tests/eqz.js: - * wasm/function-tests/factorial.js: - * wasm/function-tests/float-sub.js: - * wasm/function-tests/i32-load.js: - * wasm/function-tests/i32-load8-s.js: - * wasm/function-tests/if-then-else-fallthrough.js: - * wasm/function-tests/if-then-fallthrough.js: - * wasm/function-tests/loop-mult.js: - * wasm/function-tests/loop-sum.js: - * wasm/function-tests/max.js: - * wasm/function-tests/min.js: - * wasm/function-tests/ret5.js: - * wasm/function-tests/select.js: - * wasm/self-test/test_BuilderJSON.js: - -2016-11-29 JF Bastien - - WebAssembly JS API: improve Instance - https://bugs.webkit.org/show_bug.cgi?id=164757 - - Reviewed by Keith Miller. - - An Instance's `exports` property wasn't populated with exports. - - A follow-up patch will do imports. - - A few things of note: - - - LowLevelBinary: support 3-byte integers. - - LowLevelBinary: support proper UTF-8 2003 code points (instead of UTF-16). - - * wasm/Builder.js: - * wasm/Builder_WebAssemblyBinary.js: wire up exports, stub other things out some more - (const.emitters.Export): - * wasm/LowLevelBinary.js: - (export.default.LowLevelBinary.prototype.uint24): add, used for UTF-8 - (export.default.LowLevelBinary.prototype.string): support UTF-8 - (export.default.LowLevelBinary.prototype.getUint24): add, used for UTF-8 - (export.default.LowLevelBinary.prototype.getVaruint1): was missing - (export.default.LowLevelBinary.prototype.getString): support UTF-8 - (export.default.LowLevelBinary): - * wasm/js-api/test_Instance.js: instance.exports.answer() // <-- this is where the magic of this entire patch is - (ExportedAnswerI32): - * wasm/js-api/test_basic_api.js: punt test to later - (const.c.in.constructorProperties.switch): - * wasm/self-test/test_BuilderWebAssembly.js: UTF-8 - (CustomSection): - * wasm/self-test/test_LowLevelBinary_string.js: UTF-8 now works - * wasm/self-test/test_LowLevelBinary_uint16.js: was missing one value - * wasm/self-test/test_LowLevelBinary_uint24.js: Copied from JSTests/wasm/self-test/test_LowLevelBinary_uint8.js. - * wasm/self-test/test_LowLevelBinary_uint8.js: was missing one value - * wasm/self-test/test_LowLevelBinary_varuint1.js: Added. - * wasm/utilities.js: this `dump` thing was useful - (const._dump): - -2016-11-29 Saam Barati - - We should be able optimize the pattern where we spread a function's rest parameter to another call - https://bugs.webkit.org/show_bug.cgi?id=163865 - - Reviewed by Filip Pizlo. - - * microbenchmarks/default-derived-constructor.js: Added. - (createClassHierarchy.let.currentClass): - (createClassHierarchy): - * stress/call-varargs-spread.js: Added. - (assert): - (bar): - (foo): - * stress/load-varargs-on-new-array-with-spread-convert-to-static-loads.js: Added. - (assert): - (baz): - (bar): - (foo): - * stress/new-array-with-spread-with-normal-spread-and-phantom-spread.js: Added. - (assert): - (foo): - (escape): - (bar): - * stress/phantom-new-array-with-spread-osr-exit.js: Added. - (assert): - (baz): - (bar): - (effects): - (foo): - * stress/phantom-spread-forward-varargs.js: Added. - (assert): - (test1.bar): - (test1.foo): - (test1): - (test2.bar): - (test2.foo): - (test3.baz): - (test3.bar): - (test3.foo): - (test4.baz): - (test4.bar): - (test4.foo): - (test5.baz): - (test5.bar): - (test5.foo): - * stress/phantom-spread-osr-exit.js: Added. - (assert): - (baz): - (bar): - (effects): - (foo): - * stress/spread-call-convert-to-static-call.js: Added. - (assert): - (baz): - (bar): - (foo): - * stress/spread-forward-call-varargs-stack-overflow.js: Added. - (assert): - (identity): - (bar): - (foo): - * stress/spread-forward-varargs-rest-parameter-change-iterator-protocol-2.js: Added. - (assert): - (baz.Array.prototype.Symbol.iterator): - (baz): - (bar): - (foo): - (test): - * stress/spread-forward-varargs-rest-parameter-change-iterator-protocol.js: Added. - (assert): - (baz.Array.prototype.Symbol.iterator): - (baz): - (bar): - (foo): - * stress/spread-forward-varargs-stack-overflow.js: Added. - (assert): - (bar): - (foo): - -2016-11-29 Caitlin Potter - - [JSC] always wrap AwaitExpression operand in a new Promise - https://bugs.webkit.org/show_bug.cgi?id=165181 - - Reviewed by Yusuke Suzuki. - - * stress/async-await-basic.js: - (async.awaitedPromisesAreWrapped): - -2016-11-29 Keith Miller - - Add simple way to implement Wasm ops that require more than one B3 opcode - https://bugs.webkit.org/show_bug.cgi?id=165129 - - Reviewed by Geoffrey Garen. - - * wasm/function-tests/eqz.js: Added. - * wasm/function-tests/max.js: Added. - * wasm/function-tests/min.js: Added. - * wasm/wasm.json: - -2016-11-21 Yusuke Suzuki - - Crash in com.apple.JavaScriptCore: WTF::ThreadSpecific - - [JSC] speed up parsing of async functions - https://bugs.webkit.org/show_bug.cgi?id=164808 - - Reviewed by Yusuke Suzuki. - - Add tests for line terminator following "async" keyword in async - function syntax. - - * stress/async-await-syntax.js: - (shouldBe): - -2016-11-19 Mark Lam - - op_mod-* JSC tests needs a longer timeout too. - https://bugs.webkit.org/show_bug.cgi?id=164994 - - Reviewed by Yusuke Suzuki. - - * stress/op_mod-ConstVar.js: - * stress/op_mod-VarConst.js: - * stress/op_mod-VarVar.js: - -2016-11-19 Mark Lam - - Add --timeoutMultiplier option to allow some tests more time to run. - https://bugs.webkit.org/show_bug.cgi?id=164951 - - Reviewed by Yusuke Suzuki. - - Extended the timeout for these tests by 50% more because they run quite slow on - low-end machines. - - * stress/op_div-ConstVar.js: - * stress/op_div-VarConst.js: - * stress/op_div-VarVar.js: - -2016-11-18 Yusuke Suzuki - - REGRESSION(r208867): JSC test failure: ChakraCore.yaml/ChakraCore/test/strict/05.arguments_sm.js.default - https://bugs.webkit.org/show_bug.cgi?id=164929 - - Reviewed by Mark Lam. - - ES2017 drops arguments.caller and JavaScriptCore is updated to meet the spec. - This patch rebaselines the result of ChakraCore test for JSC. - - * ChakraCore/test/strict/05.arguments_sm.baseline-jsc: - -2016-11-18 Joseph Pecoraro - - Web Inspector: Generator functions should have a displayable name when shown in stack traces - https://bugs.webkit.org/show_bug.cgi?id=164844 - - - Reviewed by Yusuke Suzuki. - - * stress/generator-function-name.js: - Add another test now that we name the inner generator function - that we do not break the lexical resolution of names. - -2016-11-17 Yusuke Suzuki - - [JSC] Drop arguments.caller - https://bugs.webkit.org/show_bug.cgi?id=164859 - - Reviewed by Saam Barati. - - * stress/strict-mode-arguments-caller.js: Added. - (strictArguments): - (shouldBe): - -2016-11-17 Keith Miller - - Add rotate to Wasm - https://bugs.webkit.org/show_bug.cgi?id=164871 - - Reviewed by Filip Pizlo. - - * wasm/wasm.json: - -2016-11-17 Keith Miller - - Add sqrt to Wasm - https://bugs.webkit.org/show_bug.cgi?id=164877 - - Reviewed by Mark Lam. - - B3 already has a Sqrt opcode we just need to map Wasm to it. - - * wasm/wasm.json: - -2016-11-17 Saam Barati - - Remove async/await compile time flag and enable tests - https://bugs.webkit.org/show_bug.cgi?id=164828 - - - Reviewed by Yusuke Suzuki. - - * stress/async-arrow-functions-lexical-arguments-binding.js: - * stress/async-arrow-functions-lexical-new.target-binding.js: - * stress/async-arrow-functions-lexical-super-binding.js: - * stress/async-arrow-functions-lexical-this-binding.js: - * stress/async-await-basic.js: - * stress/async-await-long-loop.js: - * stress/async-await-module-reserved-word.js: - * stress/async-await-mozilla.js: - (mozSyntaxErrors): - * stress/async-await-reserved-word.js: - * stress/async-await-syntax.js: - * stress/async-await-throw-loop.js: - * stress/async-function-create-nobaseline.js: - * stress/async-function-create-optimized.js: - * stress/async-function-declaration-sinking-no-double-allocate.js: - * stress/async-function-declaration-sinking-osrexit.js: - * stress/async-function-declaration-sinking-put.js: - * stress/async-function-expression-sinking-no-double-allocate.js: - * stress/async-function-expression-sinking-osrexit.js: - * stress/async-function-expression-sinking-put.js: - * test262.yaml: - -2016-11-15 Mark Lam - - Make JSC test functions more robust. - https://bugs.webkit.org/show_bug.cgi?id=164807 - - Reviewed by Keith Miller. - - * stress/jsc-test-functions-should-be-more-robust.js: Added. - -2016-11-15 Keith Miller - - B3 should support UDiv/UMod - https://bugs.webkit.org/show_bug.cgi?id=164811 - - Reviewed by Filip Pizlo. - - Link new instructions to wasm. - - * wasm/wasm.json: - -2016-11-15 Saam Barati - - Debug JSC test timeout: stress/has-own-property-name-cache-symbols-and-strings.js.ftl-no-cjit-small-pool - https://bugs.webkit.org/show_bug.cgi?id=163012 - - Unreviewed. This patch makes a test run for less time because it's timing out on the bots. - - * stress/has-own-property-name-cache-symbols-and-strings.js: - -2016-11-15 Mark Lam - - The jsc shell's setImpureGetterDelegate() should ensure that the set value is an ImpureGetter. - https://bugs.webkit.org/show_bug.cgi?id=164781 - - - Reviewed by Geoffrey Garen and Michael Saboff. - - * stress/jsc-setImpureGetterDelegate-on-bad-type.js: Added. - -2016-11-15 Yusuke Suzuki - - [DOMJIT] Allow using macro assembler scratches in FTL CheckDOM - https://bugs.webkit.org/show_bug.cgi?id=164727 - - Reviewed by Filip Pizlo. - - * stress/check-dom-with-signature.js: Added. - (shouldBe): - (calling): - (i.array.forEach): - -2016-11-14 Caitlin Potter - - [JSC] do not reference AwaitExpression Promises in async function Promise chain - https://bugs.webkit.org/show_bug.cgi?id=164753 - - Reviewed by Yusuke Suzuki. - - * asyncFunctionTests.yaml: - * stress/async-await-long-loop.js: Added. - (shouldBe): - (async.longLoop): - * stress/async-await-throw-loop.js: Added. - (shouldBe): - (async.thrower): - (async.throwLoop): - -2016-11-14 Keith Miller - - Add Wasm select - https://bugs.webkit.org/show_bug.cgi?id=164743 - - Reviewed by Saam Barati. - - * wasm/function-tests/select.js: Added. - -2016-11-14 Caitlin Potter - - [JSC] Handle new_async_func / new_async_func_exp in DFG / FTL - https://bugs.webkit.org/show_bug.cgi?id=164037 - - Reviewed by Yusuke Suzuki. - - Add tests based on tests from https://trac.webkit.org/changeset/194216. - - * asyncFunctionTests.yaml: - * stress/async-function-create-nobaseline.js: Added. - * stress/async-function-create-optimized.js: Added. - * stress/async-function-declaration-sinking-no-double-allocate.js: Added. - * stress/async-function-declaration-sinking-osrexit.js: Added. - * stress/async-function-declaration-sinking-put.js: Added. - * stress/async-function-expression-sinking-no-double-allocate.js: Added. - * stress/async-function-expression-sinking-osrexit.js: Added. - * stress/async-function-expression-sinking-put.js: Added. - -2016-11-14 Mark Lam - - Some of JSStringView::SafeView methods are not idiomatically safe for JSString to StringView conversions. - https://bugs.webkit.org/show_bug.cgi?id=164701 - - - Reviewed by Darin Adler. - - * stress/string-prototype-charCodeAt-on-too-long-rope.js: Added. - -2016-11-14 Mark Lam - - RegExpObject::exec/match should handle errors gracefully. - https://bugs.webkit.org/show_bug.cgi?id=155145 - - - Reviewed by Keith Miller. - - * stress/regexp-prototype-exec-on-too-long-rope.js: Added. - * stress/regexp-prototype-match-on-too-long-rope.js: Added. - * stress/regexp-prototype-test-on-too-long-rope.js: Added. - -2016-11-14 Mark Lam - - Enhance run-jsc-stress-test script to allow optional test specific options to be added for all test run configurations. - https://bugs.webkit.org/show_bug.cgi?id=164695 - - Reviewed by Keith Miller. - - Replace use of runMisc* test run configurations with equivalents. - - * stress/licm-no-pre-header-nested.js: - * stress/licm-no-pre-header.js: - * stress/licm-pre-header-cannot-exit-nested.js: - * stress/licm-pre-header-cannot-exit.js: - * stress/make-dictionary-repatch.js: - * stress/retry-cache-later.js: - * stress/shadow-chicken-reading-from-scope-after-ftl-osr-exit-bytecode-liveness.js: - * stress/slow-path-generator-updating-current-node-dfg.js: - * stress/unshift-array-storage.js: - -2016-11-11 Joseph Pecoraro - - test262: DataView with explicit undefined byteLength should be the same as it not being present - https://bugs.webkit.org/show_bug.cgi?id=164453 - - Reviewed by Darin Adler. - - * stress/dataview-construct.js: Added. - (assert): - (shouldThrow): - * test262.yaml: - -2016-11-11 Joseph Pecoraro - - test262: DataView get methods should allow for missing offset, set methods should allow for missing value - https://bugs.webkit.org/show_bug.cgi?id=164451 - - Reviewed by Darin Adler. - - * test262.yaml: - -2016-11-11 Saam Barati - - We should have a more concise way of determining when we're varargs calling a function using rest parameters - https://bugs.webkit.org/show_bug.cgi?id=164258 - - Reviewed by Yusuke Suzuki. - - * microbenchmarks/call-using-spread.js: Added. - (bar): - (foo): - * microbenchmarks/spread-large-array.js: Added. - (foo): - (arrays.push): - * microbenchmarks/spread-small-array.js: Added. - (foo): - * stress/spread-array-iterator-watchpoint-2.js: Added. - (foo): - (arrayIterator.next): - * stress/spread-array-iterator-watchpoint.js: Added. - (foo): - (Array.prototype.Symbol.iterator): - * stress/spread-non-array.js: Added. - (assert): - (foo): - (let.customIterator.Symbol.iterator): - (bar): - -2016-11-11 Keith Miller - - Relocate wasm tests and actually add them to the test runner - https://bugs.webkit.org/show_bug.cgi?id=164668 - - Reviewed by Yusuke Suzuki. - - This moves the Wasm tests from their current location down a level. - Without relocating, the tests cannot properly be run by the wasm test runner. - - * wasm.yaml: - * wasm/Builder.js: Fix typos, yay lazy synatx checking! - * wasm/LowLevelBinary.js: Fix typos, yay lazy synatx checking! - (export.default.LowLevelBinary.prototype.get return): - * wasm/function-tests/add-12.js: Renamed from JSTests/wasm/js-api/function-tests/add-12.js. - * wasm/function-tests/br-if-loop-less-than.js: Renamed from JSTests/wasm/js-api/function-tests/br-if-loop-less-than.js. - * wasm/function-tests/brTableAsIf.js: Renamed from JSTests/wasm/js-api/function-tests/brTableAsIf.js. - * wasm/function-tests/brTableManyValues.js: Renamed from JSTests/wasm/js-api/function-tests/brTableManyValues.js. - * wasm/function-tests/brTableWithLoop.js: Renamed from JSTests/wasm/js-api/function-tests/brTableWithLoop.js. - * wasm/function-tests/dumb-eq-if-then-else.js: Renamed from JSTests/wasm/js-api/function-tests/dumb-eq-if-then-else.js. - * wasm/function-tests/dumb-less-than-fallthrough.js: Renamed from JSTests/wasm/js-api/function-tests/dumb-less-than-fallthrough.js. - * wasm/function-tests/dumb-less-than-ite.js: Renamed from JSTests/wasm/js-api/function-tests/dumb-less-than-ite.js. - * wasm/function-tests/factorial.js: Renamed from JSTests/wasm/js-api/function-tests/factorial.js. - * wasm/function-tests/float-sub.js: Renamed from JSTests/wasm/js-api/function-tests/float-sub.js. - * wasm/function-tests/i32-load.js: Renamed from JSTests/wasm/js-api/function-tests/i32-load.js. - * wasm/function-tests/i32-load8-s.js: Renamed from JSTests/wasm/js-api/function-tests/i32-load8-s.js. - * wasm/function-tests/if-then-else-fallthrough.js: Renamed from JSTests/wasm/js-api/function-tests/if-then-else-fallthrough.js. - * wasm/function-tests/if-then-fallthrough.js: Renamed from JSTests/wasm/js-api/function-tests/if-then-fallthrough.js. - * wasm/function-tests/loop-mult.js: Renamed from JSTests/wasm/js-api/function-tests/loop-mult.js. - * wasm/function-tests/loop-sum.js: Renamed from JSTests/wasm/js-api/function-tests/loop-sum.js. - * wasm/function-tests/ret5.js: Renamed from JSTests/wasm/js-api/function-tests/ret5.js. - * wasm/self-test/test_BuilderJSON.js: Rebasline - -2016-11-11 Keith Miller - - Move Wasm tests to JS - https://bugs.webkit.org/show_bug.cgi?id=164611 - - Reviewed by Geoffrey Garen. - - This patch translates most of the tests from testWasm.cpp to the JS testing api. Most of the - ommited tests were earliest tests, which tested trivial things, like adding two - constants. Some tests are ommited for other reasons, however. These are: - - 1) Tests using I64 since the testing api does not yet know how to handle 64-bit numbers. 2) - Tests that would validate the memory of the module once wasm was done with it since that's - not really possible in JS. - - In order to make such a translation easier this patch also adds some features to the JS - testing api: - - 1) Blocks can now be done lexically by adding a lambda as the last argument of the block - opcode. For example one can do: - ... - .Block("i32", b => b.I32Const(1) ) - - and the nested lambda will automatically have an end attached. - - 2) The JS testing api can now handle inline signature types. - - 3) Relocate some code to make it easier to follow and prevent 44 space indentation. - - 4) Rename varuint/varint to varuint32/varint32, this lets them be directly called from the - wasm.json without being remapped. - - 5) Add support for Memory and Function sections to the Builder. - - 6) Add support for local variables. - - On the JSC side, we needed to expose a new function to validate the compiled wasm code - behaves the way we expect. At least until the JS Wasm API is finished. The new validation - function, testWasmModuleFunctions, takes an array buffer containing the wasm binary, the - number of functions in the blob and tests for each of those functions. - - * wasm/Builder.js: - (const._maybeRegisterType): - (const): Deleted. - (switch.typeof): Deleted. - * wasm/Builder_WebAssemblyBinary.js: - (const.emitters.Type): - (const.emitters.Import): - (const.emitters.Function): - (const.emitters.Memory): - (const.emitters.Code): - (export.const.Binary): - * wasm/LowLevelBinary.js: - (export.default.LowLevelBinary.prototype.get return): - (export.default.LowLevelBinary.prototype.varuint32): - (export.default.LowLevelBinary.prototype.varint32): - (export.default.LowLevelBinary.prototype.varuint1): - (export.default.LowLevelBinary.prototype.varint7): - (export.default.LowLevelBinary.prototype.varuint7): - (export.default.LowLevelBinary.prototype.inline_signature_type): - (export.default.LowLevelBinary.prototype.string): - (export.default.LowLevelBinary.prototype.getVaruint32): - (export.default.LowLevelBinary.prototype.getVarint32): - (export.default.LowLevelBinary.prototype.getVaruint7): - (export.default.LowLevelBinary.prototype.getString): - (export.default.LowLevelBinary): - (export.default.LowLevelBinary.prototype.varuint): Deleted. - (export.default.LowLevelBinary.prototype.varint): Deleted. - (export.default.LowLevelBinary.prototype.getVaruint): Deleted. - (export.default.LowLevelBinary.prototype.getVarint): Deleted. - * wasm/js-api/test_old_tests.js: Added. - (ret5): - (brTableWithLoop): - (brTableManyValues): - (run.brTableManyValues.brTableAsIf): - (ifThenFallthrough): - (ifThenElseFallthrough): - (dumbLessThanFallthrough): - (run.dumbLessThanFallthrough.floatSub): - (run.floatSub.add12): - (run.add12.factorial): - (i32load): - (run.i32load.i32load8s): - (run.i32load8s.dumbEqIfThenElse): - (run.dumbEqIfThenElse.dumbEqIfThenElse): - (run.dumbEqIfThenElse.dumbLessThanIfThenElse): - (run.dumbLessThanIfThenElse.loopSum): - (run.loopSum.loopMult): - (brIfLoopLessThan): - (run.brIfLoopLessThan.run): - * wasm/self-test/test_LowLevelBinary_varint32.js: Renamed from JSTests/wasm/self-test/test_LowLevelBinary_varint.js. - * wasm/self-test/test_LowLevelBinary_varuint32.js: Renamed from JSTests/wasm/self-test/test_LowLevelBinary_varuint.js. - - * wasm/Builder.js: - (const._maybeRegisterType): - (const): Deleted. - (switch.typeof): Deleted. - * wasm/Builder_WebAssemblyBinary.js: - (const.emitters.Type): - (const.emitters.Import): - (const.emitters.Function): - (const.emitters.Memory): - (const.emitters.Code): - (export.const.Binary): - * wasm/LowLevelBinary.js: - (export.default.LowLevelBinary.prototype.get return): - (export.default.LowLevelBinary.prototype.varuint32): - (export.default.LowLevelBinary.prototype.varint32): - (export.default.LowLevelBinary.prototype.varuint1): - (export.default.LowLevelBinary.prototype.varint7): - (export.default.LowLevelBinary.prototype.varuint7): - (export.default.LowLevelBinary.prototype.inline_signature_type): - (export.default.LowLevelBinary.prototype.string): - (export.default.LowLevelBinary.prototype.getVaruint32): - (export.default.LowLevelBinary.prototype.getVarint32): - (export.default.LowLevelBinary.prototype.getVaruint7): - (export.default.LowLevelBinary.prototype.getString): - (export.default.LowLevelBinary): - (export.default.LowLevelBinary.prototype.varuint): Deleted. - (export.default.LowLevelBinary.prototype.varint): Deleted. - (export.default.LowLevelBinary.prototype.getVaruint): Deleted. - (export.default.LowLevelBinary.prototype.getVarint): Deleted. - * wasm/js-api/function-tests/add-12.js: Added. - * wasm/js-api/function-tests/br-if-loop-less-than.js: Added. - * wasm/js-api/function-tests/brTableAsIf.js: Added. - * wasm/js-api/function-tests/brTableManyValues.js: Added. - * wasm/js-api/function-tests/brTableWithLoop.js: Added. - * wasm/js-api/function-tests/dumb-eq-if-then-else.js: Added. - * wasm/js-api/function-tests/dumb-less-than-fallthrough.js: Added. - * wasm/js-api/function-tests/dumb-less-than-ite.js: Added. - * wasm/js-api/function-tests/factorial.js: Added. - * wasm/js-api/function-tests/float-sub.js: Added. - * wasm/js-api/function-tests/i32-load.js: Added. - * wasm/js-api/function-tests/i32-load8-s.js: Added. - * wasm/js-api/function-tests/if-then-else-fallthrough.js: Added. - * wasm/js-api/function-tests/if-then-fallthrough.js: Added. - * wasm/js-api/function-tests/loop-mult.js: Added. - * wasm/js-api/function-tests/loop-sum.js: Added. - * wasm/js-api/function-tests/ret5.js: Added. - * wasm/self-test/test_LowLevelBinary_varint32.js: Renamed from JSTests/wasm/self-test/test_LowLevelBinary_varint.js. - * wasm/self-test/test_LowLevelBinary_varuint32.js: Renamed from JSTests/wasm/self-test/test_LowLevelBinary_varuint.js. - -2016-11-11 Saam Barati - - We recursively grab a lock in the DFGBytecodeParser causing us to deadlock - https://bugs.webkit.org/show_bug.cgi?id=164650 - - Reviewed by Geoffrey Garen. - - * stress/dont-dead-lock-put-by-val-as-put-by-id.js: Added. - (ident): - (let.o.set foo): - (foo): - -2016-11-11 Chris Dumez - - Unreviewed, rolling out r208584. - - Seems to have regressed Speedometer by 1% on Mac - - Reverted changeset: - - "We should have a more concise way of determining when we're - varargs calling a function using rest parameters" - https://bugs.webkit.org/show_bug.cgi?id=164258 - http://trac.webkit.org/changeset/208584 - -2016-11-11 Chris Dumez - - Unreviewed, rolling out r208117 and r208160. - - Regressed Speedometer by >1.5% - - Reverted changesets: - - "We should have a way of profiling when a get_by_id is pure - and to emit a PureGetById in the DFG/FTL" - https://bugs.webkit.org/show_bug.cgi?id=163305 - http://trac.webkit.org/changeset/208117 - - "Debug JSC test microbenchmarks/pure-get-by-id-cse-2.js timing - out" - https://bugs.webkit.org/show_bug.cgi?id=164227 - http://trac.webkit.org/changeset/208160 - -2016-11-11 Saam Barati - - We should have a more concise way of determining when we're varargs calling a function using rest parameters - https://bugs.webkit.org/show_bug.cgi?id=164258 - - Reviewed by Yusuke Suzuki. - - * microbenchmarks/call-using-spread.js: Added. - (bar): - (foo): - * microbenchmarks/spread-large-array.js: Added. - (foo): - (arrays.push): - * microbenchmarks/spread-small-array.js: Added. - (foo): - * stress/spread-array-iterator-watchpoint-2.js: Added. - (foo): - (arrayIterator.next): - * stress/spread-array-iterator-watchpoint.js: Added. - (foo): - (Array.prototype.Symbol.iterator): - * stress/spread-non-array.js: Added. - (assert): - (foo): - (let.customIterator.Symbol.iterator): - (bar): - -2016-11-10 Mark Lam - - Fix broken have-a-bad-time-with-arguments.js test. - https://bugs.webkit.org/show_bug.cgi?id=164626 - - Reviewed by Filip Pizlo. - - But also saved a copy of the broken one as broken-have-a-bad-time-with-arguments-for-gc-testing.js - because coincidentally, it stresses the GC in ways that help reveal bugs. - - * stress/broken-have-a-bad-time-with-arguments-for-gc-testing.js: Added. - (testFunction): - (warmupFunction): - (let.argsDeclIndex.in.argumentsDecls.let.indexToReturnIndex.in.indicesToReturn.let.insertElementActionIndex.in.insertElementActions.let.tierWarmupCountIndex.in.tierWarmupCounts.let.testArgsIndex.in.testArgsList.catch): - * stress/have-a-bad-time-with-arguments.js: - -2016-11-10 JF Bastien - - ASSERTION FAILED: length > offset encountered with wasm.yaml/wasm/js-api/test_Module.js.default-wasm - https://bugs.webkit.org/show_bug.cgi?id=164597 - - Reviewed by Keith Miller. - - Trim the array buffer before returning it: it's optimistically - over-allocated to avoid growing all the time, but when parsed it - can't have extra content. - - * wasm/Builder_WebAssemblyBinary.js: - (export.const.Binary): - * wasm/LowLevelBinary.js: - (export.default.LowLevelBinary.prototype.get return): - -2016-11-10 Joseph Pecoraro - - test262: DataView / TypedArray methods should throw RangeErrors for negative numbers (ToIndex) - https://bugs.webkit.org/show_bug.cgi?id=164450 - - Reviewed by Darin Adler. - - * stress/dataview-typedarray-toindex.js: Added. - Tests for all cases where ToIndex should be used. - - * test262.yaml: - New passing tests. - -2016-11-10 Mark Lam - - Graph::methodOfGettingAValueProfileFor() should be returning the profile for the operand node. - https://bugs.webkit.org/show_bug.cgi?id=164600 - - - Reviewed by Filip Pizlo. - - * stress/osr-exit-on-op-negate-should-no-fail-assertions.js: Added. - -2016-11-08 Yusuke Suzuki - - [JSC] Avoid cloned arguments allocation in ArrayPrototype methods - https://bugs.webkit.org/show_bug.cgi?id=164502 - - Reviewed by Saam Barati. - - * stress/argument-intrinsic-basic.js: Added. - (shouldBe): - (builtin.createBuiltin): - * stress/argument-intrinsic-inlining-with-result-escape.js: Added. - (shouldBe): - (builtin.createBuiltin): - (escape): - * stress/argument-intrinsic-nested-inlining.js: Added. - (shouldBe): - (builtin.createBuiltin): - (builtinCaller1): - (builtinCaller2): - (escape): - * stress/argument-intrinsic-not-convert-to-get-argument.js: Added. - (shouldBe): - (builtin.createBuiltin): - * stress/argument-intrinsic-with-stack-write.js: Added. - (shouldBe): - (builtin.createBuiltin): - -2016-11-09 Saam Barati - - Math.min()/Math.max() with no arguments is lowered incorrectly in the BytecodeParser - https://bugs.webkit.org/show_bug.cgi?id=164464 - - - Reviewed by Darin Adler. - - * stress/math-max-min-no-arguments.js: Added. - (assert): - (min): - (max): - (test): - -2016-11-09 Saam Barati - - TypeProfiler and running GC collection on another thread don't play nicely with each other - https://bugs.webkit.org/show_bug.cgi?id=164441 - - - Reviewed by Geoffrey Garen. - - * typeProfiler/type-profiler-gc.js: Added. - (bar): - (foo): - -2016-11-04 Mark Lam - - Error description code should be able to handle Symbol values. - https://bugs.webkit.org/show_bug.cgi?id=164436 - - - Reviewed by Filip Pizlo and Saam Barati. - - * stress/error-description-on-symbols-should-not-crash.js: Added. - -2016-11-03 Geoffrey Garen - - EvalCodeCache should not give up in strict mode and other cases - https://bugs.webkit.org/show_bug.cgi?id=164357 - - Reviewed by Michael Saboff. - - * microbenchmarks/eval-cached.js: Added. 45x faster now. - * stress/eval-cached.js: Added. Try running the same eval text in a bunch - of different scopes and verify that we access the right scope. - -2016-11-04 JF Bastien - - WebAssembly JS API: implement more sections - https://bugs.webkit.org/show_bug.cgi?id=164023 - - Reviewed by Keith Miller. - - On the JSC side: - - - Put in parser stubs for all WebAssembly sections. - - Parse Import, Export sections. - - Use tryReserveCapacity instead of reserve, and bail out of the parser if it fails. This prevents the parser from bringing everything down when faced with a malicious input. - - Encapsulate all parsed module information into its own structure, making it easier to pass around (from parser to Plan to Module to Instance). - - Create WasmFormat.cpp to hold parsed module information's dtor to avoid including WasmMemory.h needlessly. - - parseCode: avoid overflow through function size. - - Remove all remainders of polyfill-prototype-1, and update license. - - Add missing WasmOps.h and WasmValidateInlines.h auto-generation for cmake build. - - On the Builder.js testing side: - - - Implement Type, Import (function only), Export (function only) sections. - - Check section order and uniqueness. - - Optionally auto-generate the Type section from subsequent Export / Import / Code entries. - - Allow re-exporting an import. - - * wasm/Builder.js: build type, import, and export sections - (const._normalizeFunctionSignature): - * wasm/Builder_WebAssemblyBinary.js: Added. Forked from Builder.js - (const.emitters.Type): - (const.emitters.Import): - (const.emitters.Function): - (const.emitters.Table): - (const.emitters.Memory): - (const.emitters.Global): - (const.emitters.Export): - (const.emitters.Start): - (const.emitters.Element): - (const.emitters.Code): - (const.emitters.Data): - (export.const.Binary): - * wasm/LowLevelBinary.js: Add a few useful outputs - (export.default.LowLevelBinary.prototype.varuint1): - (export.default.LowLevelBinary.prototype.varint7): - * wasm/WASM.js: value type and external kind helpers - * wasm/assert.js: array element-wise equality comparison - (const._eq): - * wasm/js-api/test_Module.js: - (ModuleWithImports): - * wasm/self-test/test_BuilderJSON.js: many more tests for all the new Builder APIs, and update to some older tests which now require a Type section or rejiggered Function signature - (const.assertOpThrows): - (SectionsWithSameCustomName): - (TwoTypeSections): - (EmptyImportSection): - (ImportBeforeTypeSections): - * wasm/self-test/test_BuilderWebAssembly.js: remove a test which wasn't helpful and is now obsolete - (CustomSection): - -2016-11-03 Mark Lam - - ClonedArguments need to also support haveABadTime mode. - https://bugs.webkit.org/show_bug.cgi?id=164200 - - - Reviewed by Geoffrey Garen. - - * stress/have-a-bad-time-with-arguments.js: Added. - -2016-11-03 Filip Pizlo - - DFG plays fast and loose with the shadow values of a Phi - https://bugs.webkit.org/show_bug.cgi?id=164309 - - Reviewed by Saam Barati. - - This test demonstrates why the DFG needs to recognize the shadow value of a Phi. - - * stress/dfg-ssa-swap.js: Added. - (foo): - -2016-11-03 Commit Queue - - Unreviewed, rolling out r208364. - https://bugs.webkit.org/show_bug.cgi?id=164402 - - broke the build (Requested by smfr on #webkit). - - Reverted changeset: - - "DFG plays fast and loose with the shadow values of a Phi" - https://bugs.webkit.org/show_bug.cgi?id=164309 - http://trac.webkit.org/changeset/208364 - -2016-11-03 Filip Pizlo - - DFG plays fast and loose with the shadow values of a Phi - https://bugs.webkit.org/show_bug.cgi?id=164309 - - Reviewed by Saam Barati. - - This test demonstrates why the DFG needs to recognize the shadow value of a Phi. - - * stress/dfg-ssa-swap.js: Added. - (foo): - -2016-11-03 Saam Barati - - Asking for a value profile prediction should be defensive against not finding a value profile - https://bugs.webkit.org/show_bug.cgi?id=164306 - - Reviewed by Mark Lam. - - * stress/inlined-tail-call-in-inlined-setter-should-not-crash-when-getting-value-profile.js: Added. - (let.o.set foo): - (bar): - -2016-11-02 Saam Barati - - Allocation elimination of rest parameter doesn't take into account indexed properties on Array.prototype/Object.prototype - https://bugs.webkit.org/show_bug.cgi?id=164301 - - Reviewed by Geoffrey Garen. - - * stress/rest-parameter-allocation-elimination-watchpoints-2.js: Added. - (assert): - (foo): - * stress/rest-parameter-allocation-elimination-watchpoints-3.js: Added. - (assert): - (foo): - * stress/rest-parameter-allocation-elimination-watchpoints-4.js: Added. - (assert): - (foo): - * stress/rest-parameter-allocation-elimination-watchpoints-5.js: Added. - (assert): - (foo): - * stress/rest-parameter-allocation-elimination-watchpoints-6.js: Added. - (assert): - (foo): - * stress/rest-parameter-allocation-elimination-watchpoints.js: Added. - (assert): - (foo): - -2016-11-01 Saam Barati - - We should be able to eliminate rest parameter allocations - https://bugs.webkit.org/show_bug.cgi?id=163925 - - Reviewed by Filip Pizlo. - - * microbenchmarks/rest-parameter-allocation-elimination.js: Added. - (assert): - (test1.bar): - (test1): - (test2.jaz): - (test2.jaz2.kaz): - (test2.jaz2): - (test2): - (test3.foo): - (test3.baz): - (test3.jaz): - (test3): - (test4.baz): - (test4.jaz): - (test4): - (test5.baz): - (test5.jaz): - (test5): - (test6.baz): - (test6.jaz): - (test6): - (test7.baz): - (test7.jaz): - (test7.check): - (test7): - (test8.baz): - (test8.jaz): - (test8.check): - (test8): - (test9.baz): - (test9.jaz): - (test9.check): - (test9): - (test10.baz): - (test10.jaz): - (test10): - (test11.bar): - (test11.foo): - (test11.makeArguments): - (test11.): - (test12): - (test12.bar): - (test12.foo): - (test12.makeArguments): - (test12.): - (test13.bar): - (test13.top): - (test13.foo): - (test13.makeArguments): - (test13.): - (test13): - (test14.bar): - (test14.top): - (test14.foo): - (test14.makeArguments): - (test14.): - (test14): - (test15.bar): - (test15.top): - (test15.foo): - (test15.makeArguments): - (test15.): - (test15): - -2016-11-01 Commit Queue - - Unreviewed, rolling out r208208 and r208210. - https://bugs.webkit.org/show_bug.cgi?id=164276 - - This change caused 28 JSC test failures. (Requested by - ryanhaddad on #webkit). - - Reverted changesets: - - "We should be able to eliminate rest parameter allocations" - https://bugs.webkit.org/show_bug.cgi?id=163925 - http://trac.webkit.org/changeset/208208 - - "Fix the EFL build." - http://trac.webkit.org/changeset/208210 - -2016-10-31 Filip Pizlo - - JSC should support SharedArrayBuffer - https://bugs.webkit.org/show_bug.cgi?id=163986 - - Reviewed by Keith Miller. - - This adds our own test for the various corner cases of SharedArrayBuffer. This test is meant to - check all of the things that don't require concurrency. - - * stress/SharedArrayBuffer.js: Added. - (checkAtomics): - (shouldFail): - (Symbol): - (runAtomic): - -2016-10-31 Saam Barati - - We should be able to eliminate rest parameter allocations - https://bugs.webkit.org/show_bug.cgi?id=163925 - - Reviewed by Filip Pizlo. - - * microbenchmarks/rest-parameter-allocation-elimination.js: Added. - (assert): - (test1.bar): - (test1): - (test2.jaz): - (test2.jaz2.kaz): - (test2.jaz2): - (test2): - (test3.foo): - (test3.baz): - (test3.jaz): - (test3): - (test4.baz): - (test4.jaz): - (test4): - (test5.baz): - (test5.jaz): - (test5): - (test6.baz): - (test6.jaz): - (test6): - (test7.baz): - (test7.jaz): - (test7.check): - (test7): - (test8.baz): - (test8.jaz): - (test8.check): - (test8): - (test9.baz): - (test9.jaz): - (test9.check): - (test9): - (test10.baz): - (test10.jaz): - (test10): - (test11.bar): - (test11.foo): - (test11.makeArguments): - (test11.): - (test12): - (test12.bar): - (test12.foo): - (test12.makeArguments): - (test12.): - (test13.bar): - (test13.top): - (test13.foo): - (test13.makeArguments): - (test13.): - (test13): - (test14.bar): - (test14.top): - (test14.foo): - (test14.makeArguments): - (test14.): - (test14): - (test15.bar): - (test15.top): - (test15.foo): - (test15.makeArguments): - (test15.): - (test15): - -2016-10-31 Saam Barati - - Debug JSC test microbenchmarks/pure-get-by-id-cse-2.js timing out - https://bugs.webkit.org/show_bug.cgi?id=164227 - - Unreviewed timeout fix. - - * microbenchmarks/pure-get-by-id-cse-2.js: - -2016-10-31 Keith Miller - - autogenerated files from wasm.json should be in derived sources. - https://bugs.webkit.org/show_bug.cgi?id=164152 - - Reviewed by Filip Pizlo. - - Delete generation script since it is no longer used. - - * wasm/generate-wasmops-header.js: Removed. - -2016-10-29 Yusuke Suzuki - - [JSC] JSON.stringify should handle Proxy which is non JSArray but isArray is true - https://bugs.webkit.org/show_bug.cgi?id=164123 - - Reviewed by Mark Lam. - - * stress/json-stringify-with-non-jsarray-array.js: Added. - (shouldBe): - (shouldBe.JSON.stringify.new.Proxy): - -2016-10-29 Saam Barati - - We should have a way of profiling when a get_by_id is pure and to emit a PureGetById in the DFG/FTL - https://bugs.webkit.org/show_bug.cgi?id=163305 - - Reviewed by Keith Miller. - - * microbenchmarks/pure-get-by-id-cse-2.js: Added. - (foo): - * microbenchmarks/pure-get-by-id-cse.js: Added. - (foo): - * stress/pure-get-by-id-cse-correctness.js: Added. - (assert): - (foo): - * stress/pure-get-by-id-on-non-object.js: Added. - (assert): - (foo): - -2016-10-28 Csaba Osztrogonác - - Skip JSTests/microbenchmarks/dense-set.js on memory limited devices - https://bugs.webkit.org/show_bug.cgi?id=164128 - - Reviewed by Mark Lam. - - * microbenchmarks/dense-set.js: - -2016-10-20 Caitlin Potter - - [JSC] implement runtime for async functions - https://bugs.webkit.org/show_bug.cgi?id=163760 - - Reviewed by Yusuke Suzuki. - - * stress/async-await-basic.js: Added. - (shouldBe): - (shouldBeAsync): - (shouldThrow): - (shouldThrowAsync): - (shouldThrowSyntaxError): - (let.AsyncFunction.async): - (async.asyncFunctionForProto): - (Object.getPrototypeOf.async): - (Object.getPrototypeOf.async.method): - (async): - (async.method): - (async.asyncNonConstructorDecl): - (shouldThrow.new.async): - (shouldThrow.new.async.nonConstructor): - (async.asyncDecl): - (async.f): - (MyError): - (async.asyncDeclThrower): - (shouldThrowAsync.async): - (resolveLater): - (rejectLater): - (async.resumeAfterNormal): - (O.async.resumeAfterNormal): - (resumeAfterNormalArrow.async): - (async.resumeAfterThrow): - (O.async.resumeAfterThrow): - (resumeAfterThrowArrow.async): - (catch): - * stress/async-await-module-reserved-word.js: Added. - (shouldThrow): - (SyntaxError.Canstring_appeared_hereawait.checkModuleSyntaxError.String.raw.await): - (checkModuleSyntaxError.String.raw.await): - (checkModuleSyntaxError.String.raw.async.await): - (SyntaxError.Cannot.declare.named): - * stress/async-await-mozilla.js: Added. - (shouldBe): - (shouldBeAsync): - (shouldThrow): - (shouldThrowAsync): - (assert): - (shouldThrowSyntaxError): - (mozSemantics.async.empty): - (mozSemantics.async.simpleReturn): - (mozSemantics.async.simpleAwait): - (mozSemantics.async.simpleAwaitAsync): - (mozSemantics.async.returnOtherAsync): - (mozSemantics.async.simpleThrower): - (mozSemantics.async.delegatedThrower): - (mozSemantics.async.tryCatch): - (mozSemantics.async.tryCatchThrow): - (mozSemantics.async.wellFinally): - (mozSemantics.async.finallyMayFail): - (mozSemantics.async.embedded.async.inner): - (mozSemantics.async.embedded): - (mozSemantics.async.fib): - (mozSemantics.async.isOdd.async.isEven): - (mozSemantics.async.isOdd): - (mozSemantics.hardcoreFib.async.fib2): - (mozSemantics.namedAsyncExpr.async.simple): - (mozSemantics.async.executionOrder.async.first): - (mozSemantics.async.executionOrder.async.second): - (mozSemantics.async.executionOrder.async.third): - (mozSemantics.async.executionOrder): - (mozSemantics.async.miscellaneous): - (mozSemantics.thrower): - (mozSemantics.async.defaultArgs): - (mozSemantics.shouldThrow): - (mozSemantics): - (mozMethods.X): - (mozMethods.X.prototype.async.getValue): - (mozMethods.X.prototype.setValue): - (mozMethods.X.prototype.async.increment): - (mozMethods.X.prototype.async.getBaseClassName): - (mozMethods.X.async.getStaticValue): - (mozMethods.Y.prototype.async.getBaseClassName): - (mozMethods.Y): - (mozFunctionNameInferrence.async.test): - (mozSyntaxErrors): - * stress/async-await-reserved-word.js: Added. - (assert): - (shouldThrowSyntaxError): - (AsyncFunction.async): - * stress/async_arrow_functions_lexical_arguments_binding.js: Added. - (shouldBe): - (shouldBeAsync): - (shouldThrowAsync): - (noArgumentsArrow2.async): - * stress/async_arrow_functions_lexical_new.target_binding.js: Added. - (shouldBe): - (shouldBeAsync): - (shouldThrowAsync): - (C1): - (C2): - (shouldThrowAsync.async): - * stress/async_arrow_functions_lexical_super_binding.js: Added. - (shouldBe): - (shouldBeAsync): - (BaseClass.prototype.baseClassValue): - (BaseClass.prototype.get property): - (BaseClass): - (ChildClass.prototype.asyncSuperProp): - (ChildClass.prototype.asyncSuperProp2): - (ChildClass): - (ChildClass2): - * stress/async_arrow_functions_lexical_this_binding.js: Added. - (shouldBe): - (shouldBeAsync): - (d.y): - -2016-10-28 Csaba Osztrogonác - - Skip 2 JS stress tests on memory limited devices - https://bugs.webkit.org/show_bug.cgi?id=164125 - - Unreviewed quick fix to unbreak JSCOnly ARM bots as soon as possible. - - * stress/joined-strings-should-not-exceed-max-string-length.js: - * stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js: - -2016-10-27 Caitlin Potter - - [JSC] forbid lexical redeclaration of generator formal parameters - https://bugs.webkit.org/show_bug.cgi?id=163930 - - Reviewed by Yusuke Suzuki. - - * stress/async-await-syntax.js: - * stress/generator-syntax.js: - (testSyntaxError.gen): - (testSyntaxError.arguments): - (testSyntaxError.eval): - * test262.yaml: - -2016-10-26 JF Bastien - - WebAssembly API: implement Instance - - As described in: https://github.com/WebAssembly/design/blob/master/JS.md#webassemblyinstance-objects - - - Take ownership of Wasm::Plan's compilation result when successfully creating a JSWebAssemblyModule object. - - Construct a basic Instance with a Module. - - Handle second argument (importObject) of WebAssembly.Instance. - - Add reference text from the spec to WebAssembly.Module's code. - - Expose and test an empty 'exports' ModuleNamespaceObject on WebAssembly.Instance. - - The implementation isn't complete yet: it relies on further work for which I've filed bugs. - - WebAssembly API: implement Instance - https://bugs.webkit.org/show_bug.cgi?id=163998 - - Reviewed by Keith Miller. - - * wasm/js-api/test_Instance.js: Added. - (EmptyModule): use the Builder, create the simplest Module possible, and create an Instance from it - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties.switch): basic tests of the API - -2016-10-26 Mark Lam - - JSGenericTypedArrayView::set() should check for exceptions. - https://bugs.webkit.org/show_bug.cgi?id=164007 - - - Reviewed by Filip Pizlo. - - * stress/typed-array-view-set-should-not-crash-on-exception.js: Added. - -2016-10-25 Mark Lam - - String.prototype.replace() should throw an OutOfMemoryError when using too much memory. - https://bugs.webkit.org/show_bug.cgi?id=163996 - - - Reviewed by Geoffrey Garen. - - * stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js: Added. - -2016-10-25 Mark Lam - - JSStringJoiner::joinedLength() should limit joined string lengths to INT_MAX. - https://bugs.webkit.org/show_bug.cgi?id=163937 - - - Reviewed by Geoffrey Garen. - - * stress/joined-strings-should-not-exceed-max-string-length.js: Added. - -2016-10-25 JF Bastien - - WebAssembly JS API: simple Module test - https://bugs.webkit.org/show_bug.cgi?id=163963 - - Reviewed by Filip Pizlo. - - * wasm/LowLevelBinary.js: - (export.default.LowLevelBinary.prototype.get return): get the ArrayBuffer - (export.default.LowLevelBinary.prototype.hexdump): Deleted. - (export.default.LowLevelBinary.prototype._maybeGrow): Deleted. - * wasm/js-api/test_Module.js: Added. - (EmptyModule): The most basic module possible - -2016-10-25 JF Bastien - - WebAssembly JS API: implement Module - - This implementation allows us to: - - Syncrhonously create a WebAssembly.Module with a typed array. - - Creates a compilation plan. - - Parse the Module and creates corresponding code. - - Throw WebAssembly.CompileError with mildly helpful [*] error messages on - failure. - - Consult the API documentation for expected behavior: https://github.com/WebAssembly/design/blob/master/JS.md#webassemblymodule-constructor - - For now the implementation discards the generated code. - - The next steps will be: - - Expose a Module's exports. - - Implement WebAssembly.Instance, which allows instantiating and running a - compiled Module. - - Beef up the testing infrastructure under JSTests/wasm so that more complex - modules can be created and tested (instead of writing the bits by hand). - - This patch also: - - Adds assert.instanceof in assert.js. - - Refactors Wasm::Parser and friends to accept const uint8_t* as well as a - Vector, to avoid copying when invoked synchronously. - - Remove useless Structure from some of the wasm constructors: they're already - on the JSGlobalObject, visited properly and all. - - Fix off-by-one error in parsing: Parser::parseUInt32 failed if the integer - was exactly at end of file. - - [*] On error messages while parsing: I filed https://bugs.webkit.org/show_bug.cgi?id=163919 - - WebAssembly JS API: implement Module - https://bugs.webkit.org/show_bug.cgi?id=163903 - - Reviewed by Keith Miller. - - * wasm/assert.js: use underscore in name, and remove when exporting to avoid clasing with builtin names - (const._notUndef): - (const._isUndef): - (const._eq): - (const._ge): - (const._throws): - * wasm/js-api/test_basic_api.js: test the WebAssembly.Module API - (const.c.in.constructorProperties.switch): - -2016-10-25 Keith Miller - - Add trivial Wasm conversion opcodes - https://bugs.webkit.org/show_bug.cgi?id=163950 - - Reviewed by Filip Pizlo. - - This patch differentiates between Wasm opcodes that are trivially mapped to a B3 opcode and - those that are not. Some of the Wasm opcodes that are currently a non-simple opcode will - become simple as we add B3 opcodes for Wasm operations. The remaining opcodes will need to - be added via patchpoints in a later patch. - - * wasm/generate-wasmops-header.js: - (const.template.pragma.once.ENABLE.WEBASSEMBLY.include.cstdint.namespace.JSC.namespace.Wasm.inline.bool.isSimple): - * wasm/wasm.json: - -2016-10-24 Yusuke Suzuki - - Arrow functions with concise bodies cannot return regular expressions - https://bugs.webkit.org/show_bug.cgi?id=163162 - - Reviewed by Filip Pizlo. - - * ChakraCore/test/Operators/instanceof.baseline-jsc: - * ChakraCore/test/Regex/nul_character.baseline-jsc: - * ChakraCore/test/es5/Lex_u3.baseline-jsc: - * stress/parse-regexp-as-token.js: Added. - (shouldBe): - -2016-10-24 Keith Miller - - Wasm should support floating point operations. - https://bugs.webkit.org/show_bug.cgi?id=163770 - - Reviewed by Michael Saboff. - - Add appropriate b3op names for floating point wasm bytecodes, where they exist. - Also, fix some WASM => Wasm in WasmOps.h generator script that I missed - the first time I made the change. - - * wasm/generate-wasmops-header.js: - (const.template.pragma.once.ENABLE.WEBASSEMBLY.include.cstdint.namespace.JSC.namespace.WASM.template.typename.Int.inline.bool.isValidOpType): Deleted. - (const.template.pragma.once.ENABLE.WEBASSEMBLY.include.cstdint.namespace.JSC.namespace.WASM.enum.BinaryOpType): Deleted. - (const.template.pragma.once.ENABLE.WEBASSEMBLY.include.cstdint.namespace.JSC.namespace.WASM.enum.UnaryOpType): Deleted. - (const.template.pragma.once.ENABLE.WEBASSEMBLY.include.cstdint.namespace.JSC.namespace.WASM.enum.LoadOpType): Deleted. - (const.template.pragma.once.ENABLE.WEBASSEMBLY.include.cstdint.namespace.JSC.namespace.WASM.enum.StoreOpType): Deleted. - (const.template.pragma.once.ENABLE.WEBASSEMBLY.include.cstdint.namespace.JSC.namespace.WASM.undef.CREATE_ENUM_VALUE.inline.bool.isControlOp): Deleted. - * wasm/wasm.json: - -2016-10-21 Saam Barati - - SpeculativeJIT::compileTryGetById needs to pass in NeedsToSpill along both the cell speculation and untyped speculation path - https://bugs.webkit.org/show_bug.cgi?id=163622 - - Reviewed by Yusuke Suzuki. - - * stress/try-get-by-id-should-spill-registers-dfg.js: Added. - (let.f.createBuiltin): - -2016-10-21 Caitlin Potter - - [JSC] don't crash when arguments to `new Function()` produce unexpected AST - https://bugs.webkit.org/show_bug.cgi?id=163748 - - Reviewed by Mark Lam. - - * stress/regress-163748.js: Added. - (assert): - (shouldThrowSyntaxError): - (GeneratorFunction): - -2016-10-20 Keith Miller - - Add support for WASM calls - https://bugs.webkit.org/show_bug.cgi?id=161727 - - Reviewed by Filip Pizlo and Michael Saboff. - - Add members of the Call category to the WASMOps special group. - - * wasm/generate-wasmops-header.js: - -2016-10-20 Yusuke Suzuki - - [JSC] Drop isEnvironmentRecord type info flag and use JSType information instead - https://bugs.webkit.org/show_bug.cgi?id=163761 - - Reviewed by Keith Miller. - - * modules/string-prototype-module-scope.js: Added. - (shouldBe): - (catch): - (refer): - * stress/string-prototype-scopes-global-lexical-environment-strict.js: Added. - (shouldBe): - (catch): - * stress/string-prototype-scopes-global-lexical-environment.js: Added. - (shouldBe): - (catch): - * stress/string-prototype-scopes-strict.js: Added. - (shouldBe): - (catch): - (try.refer): - (refer): - * stress/string-prototype-scopes.js: Added. - (shouldBe): - (catch): - (try.refer): - (refer): - (object.toString): - (with): - -2016-10-20 JF Bastien - - WebAssembly API: implement exception constructors properly - - - Rename WebAssemblyObject to JSWebAssembly for consistency. - - WebAssembly object now has its own prototype: add WebAssemblyPrototype, and - use it to register JSWebAssembly's function properties through auto-generated - .lut.h, instead of manually. - - The error constructors used to throw (e.g. `new WebAssembly.CompileError()`). - - Register WebAssembly's constructors from the global object, and hold a - reference to their structure and prototype so that invoking the constructor - can use the structure directly from the global object. - - Add a prototype base field to global object creation. Previous ones all had - Object's prototype as their base, but WebAssembly's error constructors have - Error as their base. - - Test for the error object's correctness. - - Add missing #if ENABLE(WEBASSEMBLY) - - WebAssembly API: implement exception constructors properly - https://bugs.webkit.org/show_bug.cgi?id=163699 - - Reviewed by Keith Miller. - - * wasm/js-api/test_basic_api.js: - (const.c.in.constructorProperties): more tests - -2016-10-20 Caitlin Potter - - [JSC] disallow references to `await` in AsyncFunction formal parameters - https://bugs.webkit.org/show_bug.cgi?id=163694 - - Reviewed by Saam Barati. - - * stress/async-await-syntax.js: - -2016-10-20 Keith Miller - - Invalid assertion in arguments elimination - https://bugs.webkit.org/show_bug.cgi?id=163740 - - - Reviewed by Michael Saboff. - - * stress/direct-arguments-osr-entry.js: Added. - (foo.): - (foo): - -2016-10-20 Caitlin Potter - - [JSC] throw TypeError when constructing dynamically created JSGeneratorFunction - https://bugs.webkit.org/show_bug.cgi?id=163714 - - Reviewed by Mark Lam. - - Add missing test coverage that dynamically created - JSGeneratorFunctions can not be constructed. - - * stress/generator-function-constructor.js: - (shouldThrow): - -2016-10-19 JF Bastien - - JavaScript WebAssembly API: baby steps - - - Expand WebAssembly constructors into their own files. This requires a lot of - boilerplate, as well as adding the .lut.h files. All of the - JSWebAssembly*.{h,cpp}, as well as Constructor and Prototype files, are - currently the same between the 4 specified WebAssembly constructors. It'll be - easy to implement individual functions on constructed objects as per the - spec, and have each of these files diverge. The error constructors are also - similar, except that their instance derives from ErrorInstance. - - Use constructor macro when initializing the global object. - - Dramatically improve testing of the WebAssembly API by checking for - properties specified in the spec [*]. - - Clean up assert.js' exception testing. - - Fix a copy-paste bug in wasm.json: floating-point const return values were - swapped. - - [*] https://github.com/WebAssembly/design/blob/master/JS.md - - Implement more of the JavaScript WebAssembly API - https://bugs.webkit.org/show_bug.cgi?id=163571 - - Reviewed by Keith Miller. - - * wasm/assert.js: - (export.const.isUndef): add this useful helper - (export.const.throws): fold other throw checks into this one, and check message as well - * wasm/js-api/test_basic_api.js: - (const.checkOwnPropertyDescriptor): check own property descriptor follows the spec - * wasm/self-test/test_BuilderJSON.js: - (const.assertOpThrows): use new assert API - (CheckedOpcodeArgumentsTooMany): ditto - (CheckedOpcodeArgumentsNotEnough): ditto - (CallInvalid): ditto - (I32ConstInvalid): ditto - (F32ConstInvalid): ditto (and this caugth the JSON copy-paste bug) - (F64ConstInvalid): ditto - * wasm/self-test/test_LowLevelBinary_varint.js: use new assert API - * wasm/self-test/test_LowLevelBinary_varuint.js: use new assert API - * wasm/utilities.js: add "global" object, used in basic API test (to access global.WebAssembly). - * wasm/wasm.json: fix copy-paste - -2016-10-19 Caitlin Potter - - [JSC] forbid "use strict" directive in generator functions with non-simple parameters - https://bugs.webkit.org/show_bug.cgi?id=163683 - - Reviewed by Geoffrey Garen. - - Update various generator*-non-simple-param.js tests to be passing. - - * test262.yaml: - -2016-10-18 Mark Lam - - Invoking Object.prototype.__proto__ accessors directly should throw a TypeError. - https://bugs.webkit.org/show_bug.cgi?id=154377 - - - Reviewed by Filip Pizlo and Saam Barati. - - * stress/object-prototype-proto-accessors-should-throw-on-undefined-this.js: Added. - -2016-10-18 Keith Miller - - GetByVal to GetById conversion in the DFG is incorrect for getters with control flow - https://bugs.webkit.org/show_bug.cgi?id=163629 - - Reviewed by Yusuke Suzuki. - - * stress/get-by-val-to-id-with-getter.js: Added. - (foo): - (o.get hello): - -2016-10-15 Filip Pizlo - - DFG and FTL should be able to use DirectCall ICs when they proved the callee or its executable - https://bugs.webkit.org/show_bug.cgi?id=163371 - - Reviewed by Geoffrey Garen and Saam Barati. - - Add microbenchmarks for all of the cases that this patch optimizes. - - * microbenchmarks/direct-call-arity-mismatch.js: Added. - (foo): - (bar): - * microbenchmarks/direct-call.js: Added. - (foo): - (bar): - * microbenchmarks/direct-construct-arity-mismatch.js: Added. - (Foo): - (bar): - * microbenchmarks/direct-construct.js: Added. - (Foo): - (bar): - * microbenchmarks/direct-tail-call-arity-mismatch.js: Added. - (foo): - (bar): - * microbenchmarks/direct-tail-call-inlined-caller-arity-mismatch.js: Added. - (foo): - (bar): - (baz): - * microbenchmarks/direct-tail-call-inlined-caller.js: Added. - (foo): - (bar): - (baz): - * microbenchmarks/direct-tail-call.js: Added. - (foo): - (bar): - -2016-10-18 Caitlin Potter - - [JSC] ES6 Method functions should not have prototype - https://bugs.webkit.org/show_bug.cgi?id=162530 - - Reviewed by Saam Barati. - - Fix test262 expectations about MethodDefinitions - - * ChakraCore/test/strict/05.arguments_sm.baseline-jsc: - * stress/reflect-set.js: - * test262.yaml: - -2016-10-17 Keith Miller - - Add support for WASM Memory. - https://bugs.webkit.org/show_bug.cgi?id=161710 - - Reviewed by Geoffrey Garen. - - Add store and load opcodes to wasm.json. Additionally, add new - enums for those opcodes in the generator. - - * stress/wasm/generate-wasmops-header.js: - (const.template.pragma.once.ENABLE.WEBASSEMBLY.include.cstdint.namespace.JSC.namespace.WASM.enum.LoadOpType): - (const.template.pragma.once.ENABLE.WEBASSEMBLY.include.cstdint.namespace.JSC.namespace.WASM.enum.StoreOpType): - -2016-10-17 Saam Barati - - Add more tests for the double->String conversion in ValueAdd constant folding - https://bugs.webkit.org/show_bug.cgi?id=163517 - - Reviewed by Yusuke Suzuki. - - * microbenchmarks/string-add-constant-folding.js: - (test): - -2016-10-17 JF Bastien - - WebAssembly JS API: implement basic stub - - Implement the global WebAssembly JavaScript object, and its constructor + - function properties as described in: - https://github.com/WebAssembly/design/blob/master/JS.md - - These don't do anything at the moment, the parent bug will take care of adding - more functionality and associated tests. - - WebAssembly JS API: implement basic stub - https://bugs.webkit.org/show_bug.cgi?id=163404 - - Reviewed by Keith Miller. - - * wasm.yaml: - * wasm/js-api/test_basic_api.js: Added. - (const.f.of.functionProperties.WebAssembly.f.undefined.throw.new.Error.Couldn.const.c.of.constructorProperties.WebAssembly.c.undefined.throw.new.Error.Couldn): - (const.c.of.constructorProperties.catch): - -2016-10-17 Yusuke Suzuki - - [DOMJIT] Use DOMJIT::Patchpoint in IC - https://bugs.webkit.org/show_bug.cgi?id=163223 - - Reviewed by Saam Barati. - - * stress/domjit-exception-ic.js: Added. - (shouldBe): - (access): - * stress/domjit-exception.js: Added. - (shouldBe): - (access): - * stress/domjit-getter-complex-with-incorrect-object.js: Added. - (shouldThrow): - (access): - (i.shouldThrow): - * stress/domjit-getter-complex.js: Added. - (shouldBe): - (access): - * stress/domjit-getter-try-catch-getter-as-get-by-id-register-restoration.js: Added. - (assert): - (bar): - (foo): - -2016-10-15 Saam Barati - - Assertion failed under operationToLowerCase with a rope with zero length - https://bugs.webkit.org/show_bug.cgi?id=163314 - - Reviewed by Mark Lam. - - * stress/to-lower-case-intrinsic-on-empty-rope.js: Added. - (assert): - (returnRope.helper): - (returnRope): - (lower): - -2016-10-14 Benjamin Poulain - - [JSC] op_negate should with any type - https://bugs.webkit.org/show_bug.cgi?id=162587 - - Reviewed by Saam Barati. - - * stress/arith-abs-to-arith-negate-range-optimizaton.js: Added. - Cover OSR Exits when converting Math.abs() into ArithNegate. - - * stress/arith-negate-on-various-types.js: Added. - Cover ArithNegate with all types. - -2016-10-14 JF Bastien - - Basic WebAssembly testing - - Create a small DSL in JavaScript which can build WebAssembly binary modules based on the JSON description of the format as described in: - https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md - - This DSL can then be used to write small text description of valid and invalid WebAssembly binaries, making testing the JSC implementation much easier. - - Details and example in README.md. - - Basic WebAssembly testing - https://bugs.webkit.org/show_bug.cgi?id=163267 - - Reviewed by Keith Miller. - - * stress/wasm/wasm.json: Removed. - * wasm.yaml: Added. - * wasm/Builder.js: Added. - (const._isValidValue): - (const._BuildWebAssemblyBinary): - (export.default.Builder): - (export.default.Builder.prototype.setChecked): - (export.default.Builder.prototype.setPreamble): - (export.default.Builder.prototype._registerSectionBuilders.switch.case.string_appeared_here.this.section): - (export.default.Builder.prototype._registerSectionBuilders.this.Unknown): - (export.default.Builder.prototype._registerSectionBuilders): - (export.default.Builder.prototype._addSection): - (export.default.Builder.prototype.optimize): - (export.default.Builder.prototype.json): - (export.default.Builder.prototype.AsmJS): - (export.default.Builder.prototype.WebAssembly): - * wasm/LowLevelBinary.js: Added. - (const._getterRangeCheck): - (const._hexdump): - (export.default.LowLevelBinary): - (export.default.LowLevelBinary.prototype.newPatchable): - (export.default.LowLevelBinary.prototype.hexdump): - (export.default.LowLevelBinary.prototype._maybeGrow): - (export.default.LowLevelBinary.prototype._push8): - (export.default.LowLevelBinary.prototype.uint8): - (export.default.LowLevelBinary.prototype.uint16): - (export.default.LowLevelBinary.prototype.uint32): - (export.default.LowLevelBinary.prototype.varuint): - (export.default.LowLevelBinary.prototype.varint): - (export.default.LowLevelBinary.prototype.varuint7): - (export.default.LowLevelBinary.prototype.string): - (export.default.LowLevelBinary.prototype.getSize): - (export.default.LowLevelBinary.prototype.getUint8): - (export.default.LowLevelBinary.prototype.getUint16): - (export.default.LowLevelBinary.prototype.getUint32): - (export.default.LowLevelBinary.prototype.getVaruint): - (export.default.LowLevelBinary.prototype.getVarint): - (export.default.LowLevelBinary.prototype.getVaruint7): - (export.default.LowLevelBinary.prototype.getString): - (PatchableLowLevelBinary): - (PatchableLowLevelBinary.prototype._push8): - (PatchableLowLevelBinary.prototype.apply): - * wasm/README.md: Added. - * wasm/WASM.js: Added. - * wasm/assert.js: Added. - (export.const.notUndef): - (export.const.eq): - (export.const.ge): - (export.const.throwsError): - (export.const.throwsRangeError): - * wasm/generate-wasmops-header.js: Renamed from JSTests/stress/wasm/generate-wasmops-header.js. - * wasm/self-test/test_BuilderJSON.js: Added. - (const.assertOpThrows): - (EmptyModule): - (CustomMagicNumber): - (CustomVersion): - (CustomSection): - (CustomSectionAllBytes): - (CustomSectionInvalidByte): - (TwoCustomSections): - (EmptyCodeSection): - (CodeSectionWithEmptyFunction): - (CodeSectionWithEmptyFunctionWithParameters): - (InvalidFunctionParameters): - (SimpleFunction): - (TwoSimpleFunctions): - (TwoBuildersAtTheSameTime): - (CheckedOpcodeArgumentsTooMany): - (CheckedOpcodeArgumentsNotEnough): - (CallNoArguments): - (CallInvalid): - (I32ConstInvalid): - (F32ConstInvalid): - (F64ConstInvalid): - (CallManyFromStack): - (OpcodeAdd): - (OpcodeUnreachable): - (OpcodeUnreachableCombinations): - (OpcodeSelect): - * wasm/self-test/test_BuilderWebAssembly.js: Added. - (EmptyModule): - (CustomSection): - (Basic): - * wasm/self-test/test_LowLevelBinary_encode.js: Added. - * wasm/self-test/test_LowLevelBinary_string.js: Added. - * wasm/self-test/test_LowLevelBinary_uint16.js: Added. - * wasm/self-test/test_LowLevelBinary_uint32.js: Added. - * wasm/self-test/test_LowLevelBinary_uint8.js: Added. - * wasm/self-test/test_LowLevelBinary_varint.js: Added. - * wasm/self-test/test_LowLevelBinary_varuint.js: Added. - * wasm/self-test/test_LowLevelBinary_varuint7.js: Added. - * wasm/self-test/test_WASM.js: Added. - * wasm/test.sh: Added. - * wasm/utilities.js: Added. - (const._read.filename.switch): - (const._load.filename.switch): - (const._json.filename.switch): - * wasm/wasm.json: Added. - -2016-10-14 Joseph Pecoraro - - test262: @isConstructor incorrectly thinks Math.cos is a constructor - https://bugs.webkit.org/show_bug.cgi?id=163437 - - Reviewed by Saam Barati. - - * stress/is-constructor.js: Added. - (assert): - (prototype.assert): - New test to cover the @isConstructor builtin. - - * test262.yaml: - Test now passes. - -2016-10-14 Ryan Haddad - - Unreviewed, rolling out r207322. - - This change caused JSC test failures - - Reverted changeset: - - "Fix Array.prototype.splice ES6 compliance." - https://bugs.webkit.org/show_bug.cgi?id=163372 - http://trac.webkit.org/changeset/207322 - -2016-10-14 Mark Lam - - JSON.parse should not modify frozen objects. - https://bugs.webkit.org/show_bug.cgi?id=163430 - - Reviewed by Saam Barati. - - * stress/json-parse-on-frozen-object.js: Added. - -2016-10-14 Joseph Pecoraro - - test262: Failure with RegExp.prototype.compile when pattern is undefined - https://bugs.webkit.org/show_bug.cgi?id=163431 - - Reviewed by Yusuke Suzuki. - - * test262.yaml: - -2016-10-13 Joseph Pecoraro - - Exception message for expressions with multiple bracket accesses is inconsistent / incorrect - https://bugs.webkit.org/show_bug.cgi?id=163426 - - Reviewed by Geoffrey Garen. - - * ChakraCore/test/Error/CallNonFunction_3.baseline-jsc: - * ChakraCore/test/Object/null.baseline-jsc: - * stress/exception-in-to-property-key-should-be-handled-early.js: - Better exception messages. - -2016-10-13 Mark Lam - - Fix Array.prototype.splice ES6 compliance. - https://bugs.webkit.org/show_bug.cgi?id=163372 - - Reviewed by Geoffrey Garen and Yusuke Suzuki. - - * stress/array-splice-on-frozen-object.js: Added. - -2016-10-12 Keith Miller - - Handle non-function, non-undefined comparator in Array.prototype.sort - https://bugs.webkit.org/show_bug.cgi?id=163085 - - Reviewed by Yusuke Suzuki. - - * ChakraCore/test/Array/array_sort.baseline-jsc: - * stress/array-sort-bad-comparator.js: Added. - (test): - -2016-10-12 Mark Lam - - Array.prototype.slice should not modify frozen objects. - https://bugs.webkit.org/show_bug.cgi?id=163338 - - Reviewed by Filip Pizlo. - - * stress/array-slice-on-frozen-object.js: Added. - -2016-10-11 Mark Lam - - Array.prototype.concat should not modify frozen objects. - https://bugs.webkit.org/show_bug.cgi?id=163302 - - Reviewed by Filip Pizlo. - - * stress/array-concat-on-frozen-object.js: Added. - -2016-10-11 Saam Barati - - ValueAdd should be constant folded if the operands are constant String,Primitive or Primitive,String - https://bugs.webkit.org/show_bug.cgi?id=163182 - - Reviewed by Filip Pizlo. - - * microbenchmarks/string-add-constant-folding.js: Added. - (assert): - (runTests): - (add): - (test): - -2016-10-07 Mark Lam - - Object.freeze() and seal() should throw if [[PreventExtensions]]() fails. - https://bugs.webkit.org/show_bug.cgi?id=163160 - - Reviewed by Saam Barati. - - * stress/object-freeze-with-proxy-preventExtensions.js: Added. - * stress/object-seal-with-proxy-preventExtensions.js: Added. - -2016-10-05 Yusuke Suzuki - - [DOMJIT] Add initial CheckDOM and CallDOM implementations - https://bugs.webkit.org/show_bug.cgi?id=162941 - - Reviewed by Filip Pizlo. - - * stress/domjit-getter-poly.js: Added. - (shouldBe): - (access): - * stress/domjit-getter-proto.js: Added. - (shouldBe): - (access): - * stress/domjit-getter-super-poly.js: Added. - (shouldBe): - (access): - * stress/domjit-getter.js: Added. - (shouldBe): - (access): - -2016-10-04 Saam Barati - - String.prototype.toLowerCase should be a DFG/FTL intrinsic - https://bugs.webkit.org/show_bug.cgi?id=162887 - - Reviewed by Filip Pizlo and Yusuke Suzuki. - - * microbenchmarks/to-lower-case.js: Added. - (assert): - (foo): - (bar): - * stress/to-lower-case.js: Added. - (assert): - (foo): - -2016-10-04 JF Bastien - - WebAssembly: handle a few corner cases - https://bugs.webkit.org/show_bug.cgi?id=162884 - - Reviewed by Keith Miller. - - * stress/wasm/generate-wasmops-header.js: - (const.opcodeIterator): max opcode value - -2016-10-03 JF Bastien - - Auto-generate WASMOps.h, share with testing JSON file - https://bugs.webkit.org/show_bug.cgi?id=162870 - - Reviewed by Keith Miller. - - * stress/wasm/to-c++.js: Added. Generates WASMOps.h, siilar to the current one but with more data. - (const.opcode_iterator): - (opcode_macroizer): - * stress/wasm/wasm.json: Added. Data from 0xC binary format version. - -2016-10-03 Saam Barati - - MapHash should speculate on the type of its child node - https://bugs.webkit.org/show_bug.cgi?id=161922 - - Reviewed by Filip Pizlo. - - * microbenchmarks/map-key-well-typed.js: Added. - (assert): - (intKey): - (doubleKey): - (objectKey): - (stringKey): - (booleanKey): - (symbolKey): - (cellKey): - (assert.doubleKey): - (assert.booleanKey): - -2016-10-03 Yusuke Suzuki - - [ES6] GeneratorFunction (a.k.a. GeneratorWrapperFunction)'s prototype object does not have constructor property - https://bugs.webkit.org/show_bug.cgi?id=162849 - - Reviewed by Geoffrey Garen. - - * test262.yaml: - -2016-10-01 Yusuke Suzuki - - [ES6] Align attributes of Generator related properties to spec - https://bugs.webkit.org/show_bug.cgi?id=162839 - - Reviewed by Saam Barati. - - * test262.yaml: - -2016-10-01 Yusuke Suzuki - - [ES6] GeneratorFunction constructor should instantiate generator function - https://bugs.webkit.org/show_bug.cgi?id=162838 - - Reviewed by Saam Barati. - - * stress/generator-function-constructor-is-subclassible.js: Added. - (shouldBe): - (GeneratorFunction): - (prototype.hello): - * stress/generator-function-constructor.js: - * test262.yaml: - -2016-09-30 Saam Barati - - Arrow functions should not allow duplicate parameter names - https://bugs.webkit.org/show_bug.cgi?id=162741 - - Reviewed by Filip Pizlo. - - * test262.yaml: - -2016-09-30 Saam Barati - - Make some microbenchmarks run for less time. - - Rubber stamped by Filip Pizlo. - - * microbenchmarks/bound-function-construction-performance.js: - (foo): - * microbenchmarks/getter-richards-try-catch.js: - -2016-09-29 Joseph Pecoraro - - Arrow functions do not infer name from computed property but normal functions do - https://bugs.webkit.org/show_bug.cgi?id=162720 - - Reviewed by Saam Barati. - - * stress/inferred-names.js: - -2016-09-29 Mark Lam - - Break some slow running tests into smaller bits so they don't time out. - https://bugs.webkit.org/show_bug.cgi?id=162743 - - Reviewed by Keith Miller. - - The following tests have shown to be slow running: - op_div.js - op_lshift.js - op_mod.js - op_mul.js - op_rshift.js - op_sub.js - op_urshift - - These tests auto-generate permutations of values to apply to binary operations. - They also test the operations with 3 permutations of value types: - 1. VarVar - both operands variables - 2. VarConst - variable operand 1, constant / literal operand 2 - 3. ConstVar - constant / literal operand 1, variable operand 2 - - We can prevent these tests from timing out by breaking each up to only run 1 of - the 3 permutations of value types. - - * stress/op_div-ConstVar.js: Added. - * stress/op_div-VarConst.js: Added. - * stress/op_div-VarVar.js: Copied from JSTests/stress/op_div.js. - (o1.valueOf): Deleted. - * stress/op_div.js: Removed. - * stress/op_lshift-ConstVar.js: Added. - * stress/op_lshift-VarConst.js: Added. - * stress/op_lshift-VarVar.js: Copied from JSTests/stress/op_lshift.js. - (o1.valueOf): Deleted. - * stress/op_lshift.js: Removed. - * stress/op_mod-ConstVar.js: Added. - * stress/op_mod-VarConst.js: Added. - * stress/op_mod-VarVar.js: Copied from JSTests/stress/op_mod.js. - (o1.valueOf): Deleted. - * stress/op_mod.js: Removed. - * stress/op_mul-ConstVar.js: Added. - * stress/op_mul-VarConst.js: Added. - * stress/op_mul-VarVar.js: Copied from JSTests/stress/op_mul.js. - (o1.valueOf): Deleted. - * stress/op_mul.js: Removed. - * stress/op_rshift-ConstVar.js: Added. - * stress/op_rshift-VarConst.js: Added. - * stress/op_rshift-VarVar.js: Copied from JSTests/stress/op_rshift.js. - (o1.valueOf): Deleted. - * stress/op_rshift.js: Removed. - * stress/op_sub-ConstVar.js: Added. - * stress/op_sub-VarConst.js: Added. - * stress/op_sub-VarVar.js: Copied from JSTests/stress/op_sub.js. - (o1.valueOf): Deleted. - * stress/op_sub.js: Removed. - * stress/op_urshift-ConstVar.js: Added. - * stress/op_urshift-VarConst.js: Added. - * stress/op_urshift-VarVar.js: Copied from JSTests/stress/op_urshift.js. - (o1.valueOf): Deleted. - * stress/op_urshift.js: Removed. - * stress/resources/binary-op-values.js: Added. - (o1.valueOf): - -2016-09-29 Joseph Pecoraro - - test262: class and function names should be inferred in assignment - https://bugs.webkit.org/show_bug.cgi?id=146262 - - Reviewed by Saam Barati. - - * stress/arrowfunction-name.js: Added. - Quick tests for arrow function names. - - * stress/inferred-names.js: Added. - General test for inferred function names. - - * test262.yaml: - Pass many tests checking inferred function names. - -2016-09-29 Saam Barati - - We don't properly propagate non-simple-parameter-list when parsing a setter - https://bugs.webkit.org/show_bug.cgi?id=160483 - - Reviewed by Joseph Pecoraro. - - * test262.yaml: - -2016-09-28 Saam Barati - - stringProtoFuncRepeatCharacter will return `null` when it should not - https://bugs.webkit.org/show_bug.cgi?id=161944 - - Reviewed by Yusuke Suzuki. - - * stress/pad-start-calls-repeat-character-with-double.js: Added. - (logLinesWithContext): - -2016-09-27 Filip Pizlo - - B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64 - https://bugs.webkit.org/show_bug.cgi?id=162644 - - Reviewed by Keith Miller. - - * stress/chill-mod-chill-mod.js: Added. - (foo): - -2016-09-26 Csaba Osztrogonác - - Skip stress/string-joining-long-strings-should-not-crash.js on memory limited devices - https://bugs.webkit.org/show_bug.cgi?id=162386 - - Unreviewed, relanding r206317 after typo fix. - - * stress/string-joining-long-strings-should-not-crash.js: - -2016-09-24 Caitlin Potter - - [JSTests] fix test262 expectations following r206333 - https://bugs.webkit.org/show_bug.cgi?id=162533 - - Reviewed by Yusuke Suzuki. - - * test262.yaml: - -2016-09-23 Caitlin Potter - - [JSC] Implement parsing of Async Functions - https://bugs.webkit.org/show_bug.cgi?id=161409 - - Reviewed by Yusuke Suzuki. - - * stress/async-await-syntax.js: Added. - (testSyntax): - (testSyntaxError): - (testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntax): - (testTopLevelAsyncAwaitSyntaxSloppyMode): - (testTopLevelAsyncAwaitSyntaxStrictMode): - (testTopLevelAsyncAwaitSyntaxStrictMode.testSyntax): - (testNestedAsyncAwaitSyntax.async): - (testNestedAsyncAwaitSyntax.foo): - (testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntaxError): - -2016-09-23 Ryan Haddad - - Unreviewed, rolling out r206317. - - This change caused timeouts on El Capitan Release JSC tests - - Reverted changeset: - - "Skip stress/string-joining-long-strings-should-not-crash.js - on memory limited devices" - https://bugs.webkit.org/show_bug.cgi?id=162386 - http://trac.webkit.org/changeset/206317 - -2016-09-23 Csaba Osztrogonác - - Skip mozilla-tests.yaml/js1_5/Array/regress-157652 on memory limited devices - https://bugs.webkit.org/show_bug.cgi?id=162381 - - Reviewed by Mark Lam. - - * mozilla/mozilla-tests.yaml: - -2016-09-23 Csaba Osztrogonác - - Skip stress/string-joining-long-strings-should-not-crash.js on memory limited devices - https://bugs.webkit.org/show_bug.cgi?id=162386 - - Reviewed by Mark Lam. - - * stress/string-joining-long-strings-should-not-crash.js: - -2016-09-22 Benjamin Poulain - - [JSC] Use an inline cache to generate op_negate - https://bugs.webkit.org/show_bug.cgi?id=162371 - - Reviewed by Saam Barati. - - * stress/op-negate-inline-cache.js: Added. - -2016-09-22 Mark Lam - - Array.prototype.join should do overflow checks on string joins. - https://bugs.webkit.org/show_bug.cgi?id=162459 - - Reviewed by Saam Barati. - - * stress/array-join-on-strings-need-overflow-checks.js: Added. - (assert): - (catch): - -2016-09-22 Joseph Pecoraro - - test262: Function length should be number of parameters before parameters with default values - https://bugs.webkit.org/show_bug.cgi?id=162377 - - Reviewed by Saam Barati. - - * stress/es6-default-parameters.js: - Add our own tests for function lengths with default parameters. - - * test262.yaml: - We now pass all dflt-length tests. - -2016-09-20 Benjamin Poulain - - [JSC] Do not use EagerRun on tests counting recompilation - https://bugs.webkit.org/show_bug.cgi?id=162248 - - Reviewed by Geoffrey Garen. - - This patch adds defaultNoEagerRun to all the tests - for which recompilation is the symptom of a bug. - The reason is that an OSR Exit can be unrelated to the tested - nodes when we are running in Eager mode. - - * stress/arith-abs-on-various-types.js: - * stress/arith-ceil-on-various-types.js: - * stress/arith-clz32-on-various-types.js: - * stress/arith-cos-on-various-types.js: - * stress/arith-floor-on-various-types.js: - * stress/arith-fround-on-various-types.js: - * stress/arith-log-on-various-types.js: - * stress/arith-round-on-various-types.js: - * stress/arith-sin-on-various-types.js: - * stress/arith-sqrt-on-various-types.js: - * stress/arith-tan-on-various-types.js: - * stress/arith-trunc-on-various-types.js: - - * stress/compare-strict-eq-on-various-types.js: - (testAllTypesCall): - The value 2 came from the other tests. - CompareStrictEq supports many more cases, the worst case - is bool->int->int52->number->polymorphic. - -2016-09-20 Filip Pizlo - - Make MarkedBlock state tracking support overlapped allocation and marking state - https://bugs.webkit.org/show_bug.cgi?id=161581 - - Reviewed by Geoffrey Garen. - - Add a microbenchmark for why we want to reclaim empty blocks from other allocators. - - * microbenchmarks/switching-size-classes.js: Added. - -2016-09-20 Saam Barati - - Unreviewed, added test for x86 32-bit failure for HasOwnProperty node in DFG. - - * stress/has-own-property-called-on-non-object.js: Added. - (let.objs): - (new.String): - (foo): - -2016-09-20 Yusuke Suzuki - - [JSC] Add `typeof value === "symbol"` handling to bytecode compiler - https://bugs.webkit.org/show_bug.cgi?id=162253 - - Reviewed by Sam Weinig. - - * microbenchmarks/is-symbol-mixed.js: Added. - (isSymbol): - (i.let.pair.of.list.String): - * microbenchmarks/is-symbol.js: Added. - (isSymbol): - -2016-09-19 Saam Barati - - Make HasOwnProperty faster - https://bugs.webkit.org/show_bug.cgi?id=161708 - - Reviewed by Geoffrey Garen. - - * microbenchmarks/has-own-property-name-cache.js: Added. - (foo): - * stress/has-own-property-cache-basics.js: Added. - (assert): - (foo): - * stress/has-own-property-name-cache-string-keys.js: Added. - (assert): - (foo): - * stress/has-own-property-name-cache-symbol-keys.js: Added. - (assert): - (foo): - * stress/has-own-property-name-cache-symbols-and-strings.js: Added. - (assert): - (foo): - -2016-09-19 Benjamin Poulain - - [JSC] Make the rounding-related nodes support any type - https://bugs.webkit.org/show_bug.cgi?id=161895 - - Reviewed by Geoffrey Garen. - - * stress/arith-ceil-on-various-types.js: Added. - * stress/arith-floor-on-various-types.js: Added. - * stress/arith-round-on-various-types.js: Added. - * stress/arith-trunc-on-various-types.js: Added. - -2016-09-18 Yusuke Suzuki - - [JSC] Do not need to use defineProperty to define methods for object literals - https://bugs.webkit.org/show_bug.cgi?id=162111 - - Reviewed by Saam Barati. - - * stress/object-literal-methods.js: Added. - (shouldBe): - (throw.new.Error.let.object.get name): - (throw.new.Error): - (shouldBe.let.object.get name): - (shouldBe.let.object.get prototype): - (shouldBe.let.object.get 42): - -2016-09-16 Yusuke Suzuki - - [DFG] Introduce IsCellWithType node and unify IsJSArray, IsRegExpObject and newly added IsProxyObject - https://bugs.webkit.org/show_bug.cgi?id=162000 - - Reviewed by Filip Pizlo. - - * microbenchmarks/is-array-for-array.js: Added. - (isArray): - * microbenchmarks/is-array-for-mixed-case.js: Added. - (isArray): - * microbenchmarks/is-array-for-non-array-object.js: Added. - (isArray): - * microbenchmarks/is-array-for-proxy.js: Added. - (isArray): - (isArray.proxy.throw.new.Error.isArray): - (isArray.proxy.throw.new.Error): - -2016-09-16 Yusuke Suzuki - - Unreviewed, gardening test262 results - - Some tests are now passed with JSC, but marked as failed. - - * test262.yaml: - -2016-09-16 Joseph Pecoraro - - test262: Various Constructors length properties should be configurable - https://bugs.webkit.org/show_bug.cgi?id=161998 - - Reviewed by Saam Barati. - - * test262.yaml: - -2016-09-15 Commit Queue - - Unreviewed, rolling out r205931. - https://bugs.webkit.org/show_bug.cgi?id=162021 - - Tests for this change fail on 32-bit JSC bots (Requested by - ryanhaddad on #webkit). - - Reverted changeset: - - "[JSC] Make the rounding-related nodes support any type" - https://bugs.webkit.org/show_bug.cgi?id=161895 - http://trac.webkit.org/changeset/205931 - -2016-09-15 Joseph Pecoraro - - test262: Should be a SyntaxError for duplicate parameter names in function with default parameters - https://bugs.webkit.org/show_bug.cgi?id=162013 - - Reviewed by Saam Barati. - - * stress/es6-default-parameters.js: - * test262.yaml: - -2016-09-14 Joseph Pecoraro - - ASSERT_NOT_REACHED when using spread inside an array literal with Function.prototype.apply - https://bugs.webkit.org/show_bug.cgi?id=162003 - - Reviewed by Saam Barati. - - * stress/spread-calling.js: - * test262.yaml: - -2016-09-14 Michael Saboff - - YARR doesn't check for invalid flags for literal regular expressions - https://bugs.webkit.org/show_bug.cgi?id=161995 - - Reviewed by Mark Lam. - - New test. - - * stress/regress-161995.js: Added. - (testStatic): - (catch): - -2016-09-14 Joseph Pecoraro - - test262: TypedArray constructors length should be 3 and configurable - https://bugs.webkit.org/show_bug.cgi?id=161955 - - Reviewed by Mark Lam. - - * test262.yaml: - -2016-09-14 Benjamin Poulain - - [JSC] Make the rounding-related nodes support any type - https://bugs.webkit.org/show_bug.cgi?id=161895 - - Reviewed by Geoffrey Garen. - - * stress/arith-ceil-on-various-types.js: Added. - * stress/arith-floor-on-various-types.js: Added. - * stress/arith-round-on-various-types.js: Added. - * stress/arith-trunc-on-various-types.js: Added. - -2016-09-14 Joseph Pecoraro - - TaggedTemplateString function calls should emit tail position calls - https://bugs.webkit.org/show_bug.cgi?id=161948 - - Reviewed by Yusuke Suzuki. - - * stress/tail-call-recognize.js: - (runTests): - Ensure a tagged template string function call is tail call. - - * test262.yaml: - These now pass. - -2016-09-14 Joseph Pecoraro - - test262: Array.prototype.slice should always set length - https://bugs.webkit.org/show_bug.cgi?id=161953 - - Reviewed by Mark Lam. - - * test262.yaml: - -2016-09-13 JF Bastien - - Support jsc shell builtin `read` - https://bugs.webkit.org/show_bug.cgi?id=161662 - - Reviewed by Keith Miller. - - * stress/jsc-read.js: Added. - (test): test `read` and `readFile` shell builtins, in string and binary mode. - -2016-09-12 Skachkov Oleksandr - - ES6: Classes: Should be allowed to create a static method with name "arguments" - https://bugs.webkit.org/show_bug.cgi?id=152985 - - Reviewed by Keith Miller. - - * test262.yaml: - -2016-09-12 Saam Barati - - Speed up Function.prototype.bind a bit by making it a builtin - https://bugs.webkit.org/show_bug.cgi?id=161879 - - Reviewed by Filip Pizlo. - - * microbenchmarks/function-bind-inlining.js: Added. - (assert): - (test): - (test2): - (foo): - * microbenchmarks/function-bind-no-inlining.js: Added. - (assert): - (test): - (test2): - (foo): - -2016-09-12 Saam Barati - - HashMapImpl should take into account m_deleteCount in its load factor and it should be able to rehash the table to be smaller - https://bugs.webkit.org/show_bug.cgi?id=161640 - - Reviewed by Geoffrey Garen. - - * microbenchmarks/map-rehash.js: Added. - * stress/map-delete.js: Added. - (assert): - * stress/map-rehash-2.js: Added. - (assert): - * stress/map-rehash.js: Added. - (assert): - -2016-09-12 Yusuke Suzuki - - Unreviewed, fix tests for different libm environments - https://bugs.webkit.org/show_bug.cgi?id=161857 - - * stress/ftl-arithtan.js: - -2016-09-12 Benjamin Poulain - - [JSC] Use GetArrayLength for JSArray.length even when the array type is undecided - https://bugs.webkit.org/show_bug.cgi?id=161671 - - Reviewed by Geoffrey Garen. - - * stress/get-array-length-on-undecided.js: Added. - -2016-09-12 Yusuke Suzuki - - [DFG][FTL] Add ArithTan - https://bugs.webkit.org/show_bug.cgi?id=161857 - - Reviewed by Filip Pizlo. - - * microbenchmarks/tan.js: Added. - * stress/arith-tan-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueTanNoArgument): - (testNoArgument): - (opaqueAllTypesTan): - (testAllTypesCall): - (testTangleTypeCall): - (testConstant): - (opaqueTanForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueTanForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (opaqueTanForDCE): - (testDCE.let.testObject.valueOf): - (testDCE): - (testException.opaqueTanWithException): - (testException): - * stress/ftl-arithtan.js: Added. - (foo): - -2016-09-12 Saam Barati - - MapHash should do constant folding when it has a constant argument and its legal to hash that value - https://bugs.webkit.org/show_bug.cgi?id=161639 - - Reviewed by Filip Pizlo. - - * microbenchmarks/map-constant-key.js: Added. - (assert): - (test): - (foo): - -2016-09-12 Michael Saboff - - JSC test timeout: ChakraCore.yaml/ChakraCore/test/Bugs/bug56026_trycatch.js.default - https://bugs.webkit.org/show_bug.cgi?id=161863 - - Reviewed by Saam Barati. - - * ChakraCore.yaml: - Disabled Bugs/bug56026_trycatch.js. - -2016-09-09 Michael Saboff - - Unreviewed, rolling r205759 back in with a fix. - - The expectation file, JSTests/ChakraCore/test/Lib/tostring.baseline-jsc, - should be named "toString.baseline-jsc". - - * ChakraCore/test/Lib/toString.baseline-jsc: Copied from JSTests/ChakraCore/test/Lib/tostring.baseline-jsc. - * ChakraCore/test/Lib/tostring.baseline-jsc: Removed. - -2016-09-09 Michael Saboff - - Disable three flakey Chakra Tests - https://bugs.webkit.org/show_bug.cgi?id=161807 - - Reviewed by Saam Barati. - - * ChakraCore.yaml: Disabled the flakey tests - ChakraCore/test/Array/protoLookup_native.js - ChakraCore/test/LetConst/delete.js - ChakraCore/test/fieldopts/fieldhoist_sideeffect.js - -2016-09-08 Saam Barati - - We should inline operationConvertJSValueToBoolean into JIT code - https://bugs.webkit.org/show_bug.cgi?id=161729 - - Reviewed by Filip Pizlo. - - * stress/value-to-boolean.js: Added. - (assert): - (test1): - (test2): - (test3): - -2016-09-08 Mark Lam - - REGRESSION (r205569?): 32-bit JSC test timeout: stress/rest-parameter-many-arguments.js.dfg-maximal-flush-validate-no-cjit - https://bugs.webkit.org/show_bug.cgi?id=161756 - - Reviewed by Saam Barati. - - It looks like the 32-bit JSC bot is just too slow at running this test with the - dfg-maximal-flush-validate-no-cjit configuration. We'll try excluding that - configuration. - - * stress/rest-parameter-many-arguments.js: - -2016-09-08 JF Bastien - - Delete older WebAssembly tests - https://bugs.webkit.org/show_bug.cgi?id=161758 - - Reviewed by Filip Pizlo. - - They're not running, rely on the older polyfill prototype, and the older code was deleted in: https://trac.webkit.org/changeset/204180 - - * stress/wasm-arithmetic-float32.js: Removed. - * stress/wasm-arithmetic-float64.js: Removed. - * stress/wasm-arithmetic-int32.js: Removed. - * stress/wasm-calls.js: Removed. - * stress/wasm-comma.js: Removed. - * stress/wasm-control-flow.js: Removed. - * stress/wasm-globals.js: Removed. - * stress/wasm-linear-memory.js: Removed. - * stress/wasm-locals.js: Removed. - * stress/wasm-relational.js: Removed. - * stress/wasm-type-conversion.js: Removed. - * stress/wasm/arithmetic-float32.wasm: Removed. - * stress/wasm/arithmetic-float64.wasm: Removed. - * stress/wasm/arithmetic-int32.wasm: Removed. - * stress/wasm/calls.wasm: Removed. - * stress/wasm/comma.wasm: Removed. - * stress/wasm/control-flow.wasm: Removed. - * stress/wasm/globals.wasm: Removed. - * stress/wasm/linear-memory.wasm: Removed. - * stress/wasm/locals.wasm: Removed. - * stress/wasm/relational.wasm: Removed. - * stress/wasm/type-conversion.wasm: Removed. - -2016-09-08 Per Arne Vollan - - [Win] Exception fuzz tests fail - https://bugs.webkit.org/show_bug.cgi?id=140928 - - Reviewed by Mark Lam. - - Unskip tests. - - * exceptionFuzz.yaml: - -2016-09-06 Saam Barati - - ProxyObject's structure should not have ObjectPrototype as its prototype and it should not have special behavior for intercepting "__proto__" - https://bugs.webkit.org/show_bug.cgi?id=161558 - - Reviewed by Benjamin Poulain. - - * stress/proxy-get-prototype-of.js: - * stress/proxy-set-prototype-of.js: - (let.handler.setPrototypeOf): Deleted. - * stress/proxy-underscore-proto.js: Added. - (assert): - -2016-09-06 Saam Barati - - Make JSMap and JSSet faster - https://bugs.webkit.org/show_bug.cgi?id=160989 - - Reviewed by Filip Pizlo. - - * microbenchmarks/dense-set.js: Added. - (bench): - * microbenchmarks/large-map-iteration-with-additions.js: Added. - (bar): - (foo): - * microbenchmarks/large-map-iteration-with-mutation.js: Added. - (bar): - (foo): - * microbenchmarks/large-map-iteration.js: Added. - (bar): - (foo): - * microbenchmarks/map-get-get-cse.js: Added. - (bar): - (foo): - * microbenchmarks/map-has-get-cse-opportunity.js: Added. - (bar): - (foo): - * microbenchmarks/sparse-set.js: Added. - (bench): - * stress/map-cse-correctness.js: Added. - (assert): - (testHas): - (testGet): - (foo): - * stress/map-iteration.js: Added. - (assert): - (test1): - (test2): - (test3): - (test4): - (test5): - (test6): - (test7): - (test8): - (test9): - (test10): - (test11): - (test12): - (test13): - (test14): - (test15): - (test16): - (test17): - (test18): - -2016-09-06 Benjamin Poulain - - [JSC] Make ArithClz32 work with Cell arguments - https://bugs.webkit.org/show_bug.cgi?id=161369 - - Reviewed by Geoffrey Garen. - - * stress/arith-clz32-on-various-types.js: Added. - -2016-09-06 Commit Queue - - Unreviewed, rolling out r205504. - https://bugs.webkit.org/show_bug.cgi?id=161645 - - Broke the iOS device build (Requested by ryanhaddad on - #webkit). - - Reverted changeset: - - "Make JSMap and JSSet faster" - https://bugs.webkit.org/show_bug.cgi?id=160989 - http://trac.webkit.org/changeset/205504 - -2016-09-06 Saam Barati - - Make JSMap and JSSet faster - https://bugs.webkit.org/show_bug.cgi?id=160989 - - Reviewed by Filip Pizlo. - - * microbenchmarks/dense-set.js: Added. - (bench): - * microbenchmarks/large-map-iteration-with-additions.js: Added. - (bar): - (foo): - * microbenchmarks/large-map-iteration-with-mutation.js: Added. - (bar): - (foo): - * microbenchmarks/large-map-iteration.js: Added. - (bar): - (foo): - * microbenchmarks/map-get-get-cse.js: Added. - (bar): - (foo): - * microbenchmarks/map-has-get-cse-opportunity.js: Added. - (bar): - (foo): - * microbenchmarks/sparse-set.js: Added. - (bench): - * stress/map-cse-correctness.js: Added. - (assert): - (testHas): - (testGet): - (foo): - * stress/map-iteration.js: Added. - (assert): - (test1): - (test2): - (test3): - (test4): - (test5): - (test6): - (test7): - (test8): - (test9): - (test10): - (test11): - (test12): - (test13): - (test14): - (test15): - (test16): - (test17): - (test18): - -2016-08-31 Filip Pizlo - - Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpace and we should rewrite as much of the GC as needed to make this not a regression - https://bugs.webkit.org/show_bug.cgi?id=160125 - - Reviewed by Geoffrey Garen and Keith Miller. - - Most of the things I did properly covered by existing tests, but I found some simple cases of - unshifting that had sketchy coverage. - - * stress/array-storage-array-unshift.js: Added. - * stress/contiguous-array-unshift.js: Added. - * stress/double-array-unshift.js: Added. - * stress/int32-array-unshift.js: Added. - -2016-09-02 Michael Saboff - - Unreviewed fix after importing Chakra test - - * ChakraCore.yaml: Skipped ChakraCore/test/UnifiedRegex/crazy.js because the original - test contained tab characters. I removed the tabs before landing. This test depended - on the tab characters and now fails after they were removed. - test. - -2016-09-01 Michael Saboff - - Import Chakra tests to JSC - https://bugs.webkit.org/show_bug.cgi?id=154697 - - Reviewed by Saam Barati. - - Added Chakra tests. All these tests are under Chakra/test. This is the same layout - for tests in the Chakra tree. - - Created a ChakraCore.yaml file to be used with run-jsc-stress-tests. This file contains - the tests that are run when the original Chakra runtests.py script is run. That script - is the test driver for *nix platforms and does not attempt to run all tests or all - variations of tests. The runtest.py driver consults rlexe.xml files in each test - subdirectory to determine the test to run, the options to pass to the test and how to - determine pass/fail of the test. With runtests.py as the start, tests that didn't - pass directly where either skipped, with a message describing why or through - adjustments to the test infrastructure, as described below, where made to pass. - - The only modification to the test infrastrucutre are: - - 1) Added simple mapping of Chakra expected exception text to JSC expected text in - test/UnitTestFramework/UnitTestFramework.js. It would make sense to also - map some JSC specific exception text to more generic text for the cases where - that text contains indetifier names or other source specific strings and the - Chakra equivolent exception texts are generic. - - 2) Created JSC specific expected text files where it is clear that the text work - as expected on JSC but the test output is different. Typically the differences - fall into three categories, different exception output, different output from - toString() of a function, slight numeric differences, and test that rely on - iteration order. - - 3) Stripped the CR's from the CR-LF line terminations of the files. - - No actual test .js files were modified. - - * ChakraCore: Added. - * ChakraCore.yaml: Added. - * ChakraCore/CONTRIBUTING.md: Added. - * ChakraCore/LICENSE.txt: Added. - * ChakraCore/README.md: Added. - * ChakraCore/THIRD-PARTY-NOTICES.txt: Added. - * ChakraCore/test: Added this directory and the tests included therein. - -2016-09-01 JF Bastien - - GetByIdWithThis/GetByValWithThis should have ValueProfiles so that they can predict their result types - https://bugs.webkit.org/show_bug.cgi?id=160922 - - Reviewed by Keith Miller. - - Benchmark GetBy{Id,Val}WithThis in monomorphic and polymorphic uses. - The value profile is used by the calc functions, which do some mild math with the result. - These benchmarks get ~4% faster with value profiling. - - * microbenchmarks/super-get-by-id-with-this-monomorphic.js: Added. - (A): - (A.prototype.set value): - (A.prototype.get value): - (B.prototype.set value): - (B.prototype.get value): - (B): - (const.bench): - * microbenchmarks/super-get-by-id-with-this-polymorphic.js: Added. - (A): - (A.prototype.set value): - (A.prototype.get value): - (B.prototype.set value): - (B.prototype.get value): - (B): - (const.bench): - * microbenchmarks/super-get-by-val-with-this-monomorphic.js: Added. - (value): - (A): - (A.prototype.set v): - (A.prototype.get v): - (B.prototype.set v): - (B.prototype.get v): - (B): - (const.bench): - * microbenchmarks/super-get-by-val-with-this-polymorphic.js: Added. - (value): - (A): - (A.prototype.set v): - (A.prototype.get v): - (B.prototype.set v): - (B.prototype.get v): - (B): - (const.bench): - -2016-09-01 Benjamin Poulain - - arith-abs-on-various-types.js is flaky - - Unreviewed. - - * stress/arith-abs-on-various-types.js: - Two compilation is too small for the worst case. - Math.abs() can be typed integer->number->untyped if we are very unlucky. - -2016-09-01 Filip Pizlo - - ObjectAllocationSinkingPhase::insertOSRHintsForUpdate() fails to emit updated hints in some cases - https://bugs.webkit.org/show_bug.cgi?id=161492 - - Reviewed by Mark Lam. - - This bug affected function->activation references but not object->object field references, - because object->object field references are !neededForMaterialization(). So, the object - test always passed but the activation/function test used to always fail. It passes now. - - * stress/materialize-activation-referenced-from-phantom-function.js: Added. - (bar): - (inc): - (dec): - (foo): - (test): - * stress/materialize-object-referenced-from-phantom-object.js: Added. - (bar): - (foo): - (test): - -2016-08-31 Yusuke Suzuki - - stress/random-53bit.js.ftl-no-cjit-no-inline-validate sometimes fails - https://bugs.webkit.org/show_bug.cgi?id=161436 - - Reviewed by Filip Pizlo. - - The test checks Math.random() correctly produces 53bit random values. - The test can fail by design, but this should be fairly rare. - - However, when introducing, we wrap the `test()` with 1e4 to ensure the FTL compilation, and this - increases the failure rate. By increasing the MAX in the test, we make the failures much more rare case. - - And we also add getRandomSeed() and setRandomSeed(seed) JSC shell helpers to dump more useful information - and reproduce the situation easily. - - * stress/random-53bit.js: - (test): - -2016-08-29 Benjamin Poulain - - [JSC] Improve ArithAbs with polymorphic input - https://bugs.webkit.org/show_bug.cgi?id=161286 - - Reviewed by Saam Barati. - - * stress/arith-abs-on-various-types.js: Added. - New tests. - - * stress/arith-cos-on-various-types.js: - * stress/arith-fround-on-various-types.js: - * stress/arith-log-on-various-types.js: - * stress/arith-sin-on-various-types.js: - * stress/arith-sqrt-on-various-types.js: - Extend the existing tests to cover the DCE case. - -2016-08-26 Benjamin Poulain - - [JSC] Implement CompareStrictEq(String, Untyped) in FTL - https://bugs.webkit.org/show_bug.cgi?id=161229 - - Reviewed by Geoffrey Garen. - - * stress/compare-strict-eq-on-various-types.js: Added. - -2016-08-26 Yusuke Suzuki - - [ES6] newPromiseCapabilities should check the given argument is constructor - https://bugs.webkit.org/show_bug.cgi?id=161226 - - Reviewed by Mark Lam. - - The arrow function should not be a constructor. So the error should be raised. - - * stress/new-promise-capabilities-requires-constructor.js: Added. - (shouldThrow): - -2016-08-25 Benjamin Poulain - - [JSC] Clean up the abstract interpreter for cos/sin/sqrt/fround/log - https://bugs.webkit.org/show_bug.cgi?id=161181 - - Reviewed by Geoffrey Garen. - - Extend the tests to constants. - Add no-argument cases where needed. - - * stress/arith-cos-on-various-types.js: - * stress/arith-fround-on-various-types.js: - * stress/arith-log-on-various-types.js: - * stress/arith-sin-on-various-types.js: - * stress/arith-sqrt-on-various-types.js: - -2016-08-25 Yusuke Suzuki - - [DFG][FTL] Implement ES6 Generators in DFG / FTL - https://bugs.webkit.org/show_bug.cgi?id=152723 - - Reviewed by Filip Pizlo. - - * stress/generator-fib-ftl-and-array.js: Added. - (fib): - * stress/generator-fib-ftl-and-object.js: Added. - (fib): - * stress/generator-fib-ftl-and-string.js: Added. - (fib): - * stress/generator-fib-ftl.js: Added. - (fib): - * stress/generator-frame-empty.js: Added. - (shouldThrow): - (shouldThrow.fib): - * stress/generator-reduced-save-point-put-to-scope.js: Added. - (shouldBe): - (gen): - * stress/generator-transfer-register-beyond-mutiple-yields.js: Added. - (shouldBe): - (gen): - -2016-08-25 JF Bastien - - TryGetById should have a ValueProfile so that it can predict its output type - https://bugs.webkit.org/show_bug.cgi?id=160921 - - Reviewed by Saam Barati. - - * microbenchmarks/try-get-by-id-basic.js: Added. - (const.check): - (const.bench.f.const.fooPlusBar.createBuiltin): - * microbenchmarks/try-get-by-id-polymorphic.js: Added. - (const.check): - (fooPlusBar.createBuiltin): - (bench): - -2016-08-25 Caio Lima - - NewRegexp should not prevent inlining - https://bugs.webkit.org/show_bug.cgi?id=154808 - - Reviewed by Geoffrey Garen. - - Added test where functions with NewRegExp can be inlined right now. - - * stress/new-regex-inline.js: Added. - (assert): - (testRegexpInline): - (toInlineGlobal): - (withRegexp): - (inlineRegexpNotGlobal): - (toInlineRecursive): - (regexpContainsRecursive): - -2016-08-24 Benjamin Poulain - - [JSC] Make FRound work with any type - https://bugs.webkit.org/show_bug.cgi?id=161129 - - Reviewed by Geoffrey Garen. - - * stress/arith-fround-on-various-types.js: Added. - -2016-08-24 Filip Pizlo - - Unreviewed, roll out r204901, r204897, r204866, r204856, r204854. - - * stress/array-storage-array-unshift.js: Removed. - * stress/contiguous-array-unshift.js: Removed. - * stress/double-array-unshift.js: Removed. - * stress/int32-array-unshift.js: Removed. - -2016-08-24 Skachkov Oleksandr - - [ES2016] Allow assignment in for-in head in not-strict mode - https://bugs.webkit.org/show_bug.cgi?id=160955 - - Reviewed by Saam Barati. - - * stress/for-in-tests.js: - (foo): - (boo): - (catch): - -2016-08-23 Benjamin Poulain - - [JSC] Make ArithLog works with any type - https://bugs.webkit.org/show_bug.cgi?id=161110 - - Reviewed by Geoffrey Garen. - - * stress/arith-log-on-various-types.js: Added. - -2016-08-23 Saam Barati - - JSC should have a "microbenchmarks" directory instead of "regress" directory - https://bugs.webkit.org/show_bug.cgi?id=161096 - - Rubber stamped by Mark Lam. - - * microbenchmarks: Copied from LayoutTests/js/regress/script-tests. - -2016-08-23 Keith Miller - - %TypedArray%.prototype.slice needs to check that the source and destination have not been detached. - https://bugs.webkit.org/show_bug.cgi?id=161031 - - - Reviewed by Geoffrey Garen. - - * stress/typedarray-slice.js: - (get let): - (get try): - (testSpeciesWithTransferring): - -2016-08-22 Filip Pizlo - - Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpace and we should rewrite as much of the GC as needed to make this not a regression - https://bugs.webkit.org/show_bug.cgi?id=160125 - - Reviewed by Geoffrey Garen. - - Most of the things I did properly covered by existing tests, but I found some simple cases of - unshifting that had sketchy coverage. - - * stress/array-storage-array-unshift.js: Added. - * stress/contiguous-array-unshift.js: Added. - * stress/double-array-unshift.js: Added. - * stress/int32-array-unshift.js: Added. - -2016-08-23 Keith Miller - - Update/add new test262 tests - https://bugs.webkit.org/show_bug.cgi?id=161098 - - Reviewed by Saam Barati. - - * test262.yaml: - * test262/test/annexB/language/statements/for-in/bare-initializer.js: Added. - * test262/test/annexB/language/statements/for-in/const-initializer.js: Added. - * test262/test/annexB/language/statements/for-in/let-initializer.js: Added. - * test262/test/annexB/language/statements/for-in/nonstrict-initializer.js: Added. - (a): - * test262/test/annenxB/language/statements/for-in/strict-initializer.js: Added. - * test262/test/annexB/language/statements/for-in/var-arraybindingpattern-initializer.js: Added. - * test262/test/annexB/language/statements/for-in/var-objectbindingpattern-initializer.js: Added. - * test262/test/built-ins/AsyncFunction/AsyncFunction-construct.js: Added. - (AsyncFunction.async.foo): - * test262/test/built-ins/AsyncFunction/AsyncFunction-is-extensible.js: Added. - (AsyncFunction.async): - * test262/test/built-ins/AsyncFunction/AsyncFunction-is-subclass.js: Added. - (async.foo): - * test262/test/built-ins/AsyncFunction/AsyncFunction-length.js: Added. - (AsyncFunction.async.foo): - * test262/test/built-ins/AsyncFunction/AsyncFunction-name.js: Added. - (AsyncFunction.async.foo): - * test262/test/built-ins/AsyncFunction/AsyncFunction-prototype.js: Added. - (AsyncFunction.async.foo): - * test262/test/built-ins/AsyncFunction/AsyncFunction.js: Added. - (AsyncFunction.async.foo): - * test262/test/built-ins/AsyncFunction/AsyncFunctionPrototype-is-extensible.js: Added. - (AsyncFunction.async.foo): - * test262/test/built-ins/AsyncFunction/AsyncFunctionPrototype-prototype.js: Added. - (AsyncFunction.async.foo): - * test262/test/built-ins/AsyncFunction/AsyncFunctionPrototype-to-string.js: Added. - (AsyncFunction.async.foo): - * test262/test/built-ins/AsyncFunction/instance-construct.js: Added. - (async.foo): - * test262/test/built-ins/AsyncFunction/instance-has-name.js: Added. - (async.foo): - * test262/test/built-ins/AsyncFunction/instance-length.js: Added. - (async.l0): - (async.l1): - (async.l2): - * test262/test/built-ins/AsyncFunction/instance-prototype-property.js: Added. - (async.foo): - * test262/test/built-ins/AsyncFunction/is-not-a-global.js: Added. - * test262/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/getFloat32/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/getFloat64/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/getInt16/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/getInt32/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/getInt8/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/getUint16/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/getUint32/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/getUint8/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/setFloat32/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/setFloat32/index-check-before-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setFloat32/range-check-after-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/setFloat64/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/setFloat64/index-check-before-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setFloat64/range-check-after-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/setInt16/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/setInt16/index-check-before-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setInt16/range-check-after-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/setInt32/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/setInt32/index-check-before-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setInt32/range-check-after-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/setInt8/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/setInt8/index-check-before-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setInt8/range-check-after-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/setUint16/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/setUint16/index-check-before-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setUint16/range-check-after-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/setUint32/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/setUint32/index-check-before-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setUint32/range-check-after-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-toindex-byteoffset.js: Renamed from JSTests/test262/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js. - * test262/test/built-ins/DataView/prototype/setUint8/detached-buffer-before-outofrange-byteoffset.js: - * test262/test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js: - * test262/test/built-ins/DataView/prototype/setUint8/range-check-after-value-conversion.js: - * test262/test/built-ins/Function/prototype/bind/instance-construct-newtarget-boundtarget-bound.js: Added. - (A): - * test262/test/built-ins/Function/prototype/bind/instance-construct-newtarget-boundtarget.js: Added. - (A): - * test262/test/built-ins/Function/prototype/bind/instance-construct-newtarget-self-new.js: Added. - (A): - * test262/test/built-ins/Function/prototype/bind/instance-construct-newtarget-self-reflect.js: Added. - (A): - * test262/test/built-ins/Function/prototype/toString/AsyncFunction.js: Added. - (async.f): - * test262/test/built-ins/Function/prototype/toString/async-function-declaration.js: Added. - (async.f): - * test262/test/built-ins/Function/prototype/toString/async-function-expression.js: Added. - (let.f.async.f): - * test262/test/built-ins/Function/prototype/toString/async-method.js: Added. - (let.f.async.f): - (let.g.async.string_appeared_here): - * test262/test/built-ins/JSON/parse/reviver-array-define-prop-err.js: Added. - (defineProperty): - * test262/test/built-ins/JSON/parse/reviver-array-delete-err.js: Added. - (deleteProperty): - * test262/test/built-ins/JSON/parse/reviver-array-length-coerce-err.js: Added. - (uncoercible.valueOf): - (get if): - * test262/test/built-ins/JSON/parse/reviver-array-length-get-err.js: Added. - (get if): - * test262/test/built-ins/JSON/parse/reviver-call-err.js: Added. - * test262/test/built-ins/JSON/parse/reviver-get-name-err.js: Added. - (thrower): - * test262/test/built-ins/JSON/parse/reviver-object-define-prop-err.js: Added. - (defineProperty): - * test262/test/built-ins/JSON/parse/reviver-object-delete-err.js: Added. - (deleteProperty): - * test262/test/built-ins/JSON/parse/reviver-object-own-keys-err.js: Added. - (ownKeys): - * test262/test/built-ins/Number/prototype/toExponential/infinity.js: Added. - * test262/test/built-ins/Number/prototype/toExponential/nan.js: Added. - * test262/test/built-ins/Number/prototype/toExponential/prop-desc.js: Added. - * test262/test/built-ins/Number/prototype/toExponential/return-abrupt-tointeger-fractiondigits-symbol.js: Added. - * test262/test/built-ins/Number/prototype/toExponential/return-abrupt-tointeger-fractiondigits.js: Added. - (fd1.valueOf): - (fd2.toString): - * test262/test/built-ins/Number/prototype/toExponential/return-values.js: Added. - * test262/test/built-ins/Number/prototype/toExponential/this-is-0-fractiondigits-is-0.js: Added. - * test262/test/built-ins/Number/prototype/toExponential/this-is-0-fractiondigits-is-not-0.js: Added. - * test262/test/built-ins/Number/prototype/toExponential/this-type-not-number-or-number-object.js: Added. - * test262/test/built-ins/Number/prototype/toExponential/tointeger-fractiondigits.js: Added. - * test262/test/built-ins/Number/prototype/toExponential/undefined-fractiondigits.js: Added. - * test262/test/built-ins/Object/getOwnPropertyDescriptors/duplicate-keys.js: - * test262/test/built-ins/Object/getOwnPropertyDescriptors/proxy-undefined-descriptor.js: Added. - (badProxyHandlers.allowProxyTraps.getOwnPropertyDescriptor): - (badProxyHandlers.allowProxyTraps.ownKeys): - * test262/test/built-ins/Proxy/setPrototypeOf/boolean-trap-result-extensible-target.js: Removed. - (setPrototypeOf): Deleted. - * test262/test/built-ins/Proxy/setPrototypeOf/internals-call-order.js: Added. - (target.new.Proxy.Object.create.isExtensible): - (target.new.Proxy.Object.create.getPrototypeOf): - (target.new.Proxy.Object.create): - (setPrototypeOf): - * test262/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-not-same-target-prototype.js: - (setPrototypeOf): - * test262/test/built-ins/Proxy/setPrototypeOf/not-extensible-target-same-target-prototype.js: - (setPrototypeOf): - * test262/test/built-ins/Proxy/setPrototypeOf/not-extensible-trap-is-false-return-false.js: Removed. - (setPrototypeOf): Deleted. - * test262/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-get-trap.js: Added. - * test262/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-isextensible-target.js: Added. - (isExtensible): - (setPrototypeOf): - * test262/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-target-getprototypeof.js: Added. - (getPrototypeOf): - (setPrototypeOf): - * test262/test/built-ins/Proxy/setPrototypeOf/return-abrupt-from-trap.js: Renamed from JSTests/test262/test/built-ins/Proxy/setPrototypeOf/return-is-abrupt.js. - (setPrototypeOf): - * test262/test/built-ins/Proxy/setPrototypeOf/return-is-abrupt.js: - (setPrototypeOf): Deleted. - * test262/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-false.js: Added. - (isExtensible): - (setPrototypeOf): - * test262/test/built-ins/Proxy/setPrototypeOf/toboolean-trap-result-true-target-is-extensible.js: Added. - (isExtensible): - (getPrototypeOf): - (setPrototypeOf): - * test262/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable.js: - * test262/test/built-ins/Proxy/setPrototypeOf/trap-is-undefined-or-null.js: Added. - (setPrototypeOf): - * test262/test/built-ins/Proxy/setPrototypeOf/trap-is-undefined.js: Removed. - * test262/test/built-ins/RegExp/lastIndex.js: Added. - * test262/test/built-ins/RegExp/prototype/global/15.10.7.2-1.js: Removed. - * test262/test/built-ins/RegExp/prototype/global/this-val-invalid-obj.js: Added. - (get Object): - * test262/test/built-ins/RegExp/prototype/global/this-val-non-obj.js: Added. - (get Object): - * test262/test/built-ins/RegExp/prototype/global/this-val-regexp-prototype.js: Added. - * test262/test/built-ins/RegExp/prototype/ignoreCase/15.10.7.3-1.js: Removed. - * test262/test/built-ins/RegExp/prototype/ignoreCase/this-val-invalid-obj.js: Added. - (get Object): - * test262/test/built-ins/RegExp/prototype/ignoreCase/this-val-non-obj.js: Added. - (get Object): - * test262/test/built-ins/RegExp/prototype/ignoreCase/this-val-regexp-prototype.js: Added. - * test262/test/built-ins/RegExp/prototype/lastIndex/15.10.7.5-1.js: Removed. - * test262/test/built-ins/RegExp/prototype/lastIndex/15.10.7.5-2.js: Removed. - * test262/test/built-ins/RegExp/prototype/lastIndex/S15.10.7.5_A8.js: Removed. - (__re.hasOwnProperty): Deleted. - (__re.propertyIsEnumerable): Deleted. - (count.0): Deleted. - * test262/test/built-ins/RegExp/prototype/lastIndex/S15.10.7.5_A9.js: Removed. - (__re.hasOwnProperty): Deleted. - (catch): Deleted. - * test262/test/built-ins/RegExp/prototype/multiline/15.10.7.4-1.js: Removed. - * test262/test/built-ins/RegExp/prototype/multiline/this-val-invalid-obj.js: Added. - (get Object): - * test262/test/built-ins/RegExp/prototype/multiline/this-val-non-obj.js: Added. - (get Object): - * test262/test/built-ins/RegExp/prototype/multiline/this-val-regexp-prototype.js: Added. - * test262/test/built-ins/RegExp/prototype/no-regexp-matcher.js: Added. - * test262/test/built-ins/RegExp/prototype/source/15.10.7.1-1.js: Removed. - * test262/test/built-ins/RegExp/prototype/source/this-val-invalid-obj.js: Added. - (get Object): - * test262/test/built-ins/RegExp/prototype/source/this-val-non-obj.js: Added. - (get Object): - * test262/test/built-ins/RegExp/prototype/source/this-val-regexp-prototype.js: Added. - * test262/test/built-ins/RegExp/prototype/source/value-empty.js: Added. - * test262/test/built-ins/RegExp/prototype/source/value-line-terminator.js: Added. - * test262/test/built-ins/RegExp/prototype/source/value-u.js: Added. - * test262/test/built-ins/RegExp/prototype/source/value.js: Added. - * test262/test/built-ins/RegExp/prototype/sticky/this-val-invalid-obj.js: Renamed from JSTests/test262/test/built-ins/RegExp/prototype/sticky/this-invalid-obj.js. - * test262/test/built-ins/RegExp/prototype/sticky/this-val-non-obj.js: Renamed from JSTests/test262/test/built-ins/RegExp/prototype/sticky/this-non-obj.js. - * test262/test/built-ins/RegExp/prototype/sticky/this-val-regexp-prototype.js: Added. - * test262/test/built-ins/RegExp/prototype/sticky/this-val-regexp.js: Renamed from JSTests/test262/test/built-ins/RegExp/prototype/sticky/this-regexp.js. - * test262/test/built-ins/RegExp/prototype/unicode/this-val-invalid-obj.js: Renamed from JSTests/test262/test/built-ins/RegExp/prototype/unicode/this-invald-obj.js. - * test262/test/built-ins/RegExp/prototype/unicode/this-val-non-obj.js: Renamed from JSTests/test262/test/built-ins/RegExp/prototype/unicode/this-non-obj.js. - * test262/test/built-ins/RegExp/prototype/unicode/this-val-regexp-prototype.js: Added. - * test262/test/built-ins/RegExp/prototype/unicode/this-val-regexp.js: Renamed from JSTests/test262/test/built-ins/RegExp/prototype/unicode/this-regexp.js. - * test262/test/built-ins/String/numeric-properties.js: Added. - * test262/test/intl402/DateTimeFormat/prototype/formatToParts/date-is-infinity-throws.js: Added. - * test262/test/intl402/DateTimeFormat/prototype/formatToParts/date-is-nan-throws.js: Added. - * test262/test/intl402/DateTimeFormat/prototype/formatToParts/formatToParts.js: Added. - * test262/test/intl402/DateTimeFormat/prototype/formatToParts/length.js: Added. - * test262/test/intl402/DateTimeFormat/prototype/formatToParts/main.js: Added. - (reduce): - (compareFTPtoFormat): - * test262/test/intl402/DateTimeFormat/prototype/formatToParts/name.js: Added. - * test262/test/intl402/DateTimeFormat/prototype/formatToParts/return-abrupt-tonumber-date.js: Added. - (obj1.valueOf): - (obj2.toString): - * test262/test/intl402/DateTimeFormat/prototype/formatToParts/this-has-not-internal-throws.js: Added. - * test262/test/intl402/DateTimeFormat/prototype/formatToParts/this-is-not-object-throws.js: Added. - * test262/test/intl402/NumberFormat/prototype/formatToParts/formatToParts.js: Added. - * test262/test/intl402/NumberFormat/prototype/formatToParts/length.js: Added. - * test262/test/intl402/NumberFormat/prototype/formatToParts/main.js: Added. - (reduce): - (compareFTPtoFormat): - * test262/test/intl402/NumberFormat/prototype/formatToParts/name.js: Added. - * test262/test/intl402/NumberFormat/prototype/formatToParts/return-abrupt-tonumber.js: Added. - (obj1.valueOf): - (obj2.toString): - * test262/test/intl402/NumberFormat/prototype/formatToParts/this-has-not-internal-throws.js: Added. - * test262/test/intl402/NumberFormat/prototype/formatToParts/this-is-not-object-throws.js: Added. - * test262/test/language/arguments-object/10.6-10-c-ii-2-s.js: - (foo): Deleted. - * test262/test/language/arguments-object/unmapped/via-params-dflt.js: Added. - (dflt): - * test262/test/language/arguments-object/unmapped/via-params-dstr.js: Added. - (dstr): - * test262/test/language/arguments-object/unmapped/via-params-rest.js: Added. - (rest): - * test262/test/language/arguments-object/unmapped/via-strict.js: Renamed from JSTests/test262/test/language/arguments-object/10.6-10-c-ii-2-s.js. - (foo): - * test262/test/language/block-scope/syntax/redeclaration-global/allowed-to-redeclare-function-declaration-with-function-declaration.js: - (f): Deleted. - * test262/test/language/eval-code/direct/super-call-arrow.js: Added. - (catch): - * test262/test/language/eval-code/direct/super-call-fn.js: Added. - (f): - * test262/test/language/eval-code/direct/super-call.js: Added. - (catch): - * test262/test/language/eval-code/direct/super-prop-arrow.js: Added. - (catch): - * test262/test/language/eval-code/direct/super-prop-method.js: Added. - (o.method): - * test262/test/language/eval-code/direct/super-prop.js: Added. - (catch): - * test262/test/language/eval-code/indirect/super-call.js: Added. - (catch): - (try.m): - * test262/test/language/eval-code/indirect/super-prop.js: Added. - (catch): - (try.m): - * test262/test/language/expressions/arrow-function/params-trailing-comma-length.js: Added. - (assert.sameValue): - * test262/test/language/expressions/arrow-function/params-trailing-comma.js: Added. - * test262/test/language/expressions/async-arrow-function/arrow-returns-promise.js: Added. - (p.then): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-NSPL-with-USD.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-arguments-in-formal-parameters.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals-default.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-call.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-property.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-eval-in-formal-parameters.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-formals-body-duplicate.js: Added. - (async): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-call.js: Added. - (async.foo.super): - * test262/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-property.js: Added. - (async): - * test262/test/language/expressions/async-function/early-errors-expression-NSPL-with-USD.js: Added. - (async): - * test262/test/language/expressions/async-function/early-errors-expression-binding-identifier-arguments.js: Added. - (async.arguments): - * test262/test/language/expressions/async-function/early-errors-expression-binding-identifier-eval.js: Added. - (async.eval): - * test262/test/language/expressions/async-function/early-errors-expression-body-contains-super-call.js: Added. - (async.foo): - * test262/test/language/expressions/async-function/early-errors-expression-body-contains-super-property.js: Added. - (async.foo): - * test262/test/language/expressions/async-function/early-errors-expression-eval-in-formal-parameters.js: Added. - (async.foo): - * test262/test/language/expressions/async-function/early-errors-expression-formals-body-duplicate.js: Added. - (async.foo): - * test262/test/language/expressions/async-function/early-errors-expression-formals-contains-super-call.js: Added. - (async.foo): - * test262/test/language/expressions/async-function/early-errors-expression-formals-contains-super-property.js: Added. - (async.foo): - * test262/test/language/expressions/async-function/early-errors-expression-not-simple-assignment-target.js: Added. - (async.foo): - * test262/test/language/expressions/async-function/expression-returns-promise.js: Added. - (p.async): - * test262/test/language/expressions/async-function/syntax-expression-is-PrimaryExpression.js: Added. - (async.foo): - * test262/test/language/expressions/await/await-BindingIdentifier-in-global.js: Added. - (async.await): - * test262/test/language/expressions/await/await-BindingIdentifier-nested.js: Added. - (async.foo.await): - (async.foo): - * test262/test/language/expressions/await/await-awaits-thenable-not-callable.js: Added. - (async.foo): - * test262/test/language/expressions/await/await-awaits-thenables-that-throw.js: Added. - (thenable.then): - (async.foo): - * test262/test/language/expressions/await/await-awaits-thenables.js: Added. - (thenable.then): - (async.foo): - * test262/test/language/expressions/await/await-in-function.js: Added. - (foo): - * test262/test/language/expressions/await/await-in-generator.js: Added. - (foo): - * test262/test/language/expressions/await/await-in-global.js: Added. - * test262/test/language/expressions/await/await-in-nested-function.js: Added. - (async.foo.bar): - (async.foo): - * test262/test/language/expressions/await/await-in-nested-generator.js: Added. - (async.foo.bar): - (async.foo): - * test262/test/language/expressions/await/await-throws-rejections.js: Added. - (async.foo): - * test262/test/language/expressions/await/early-errors-await-not-simple-assignment-target.js: Added. - (async.foo): - * test262/test/language/expressions/await/no-operand.js: Added. - (async.foo): - * test262/test/language/expressions/await/syntax-await-has-UnaryExpression-with-MultiplicativeExpression.js: Added. - (async.foo): - * test262/test/language/expressions/await/syntax-await-has-UnaryExpression.js: Added. - (async.foo): - * test262/test/language/expressions/call/trailing-comma.js: Added. - (foo): - * test262/test/language/expressions/function/arguments-with-arguments-fn.js: Added. - (f): - * test262/test/language/expressions/function/arguments-with-arguments-lex.js: Added. - (f): - * test262/test/language/expressions/function/params-trailing-comma-arguments.js: Added. - (f1): - (f2): - * test262/test/language/expressions/function/params-trailing-comma-length.js: Added. - (assert.sameValue): - * test262/test/language/expressions/function/params-trailing-comma.js: Added. - * test262/test/language/expressions/generators/arguments-with-arguments-fn.js: Added. - (g): - * test262/test/language/expressions/generators/arguments-with-arguments-lex.js: Added. - (g): - * test262/test/language/expressions/generators/params-trailing-comma-arguments.js: Added. - (f1): - (f2): - * test262/test/language/expressions/generators/params-trailing-comma-length.js: Added. - (assert.sameValue): - * test262/test/language/expressions/generators/params-trailing-comma.js: Added. - * test262/test/language/expressions/object/computed-property-evaluation-order.js: Added. - * test262/test/language/expressions/object/method-definition/async-super-call-body.js: Added. - (sup.method): - (child.async.method): - * test262/test/language/expressions/object/method-definition/async-super-call-param.js: Added. - (sup.method): - (child.async.method.x.super.method): - * test262/test/language/expressions/object/method-definition/early-errors-object-method-NSPL-with-USD.js: Added. - (foo): - * test262/test/language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js: Added. - (async.foo): - * test262/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals-default.js: Added. - (async.foo): - * test262/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals.js: Added. - (async.foo): - * test262/test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js: Added. - (async.foo): - * test262/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js: Added. - (async.foo): - * test262/test/language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js: Added. - (async.foo): - * test262/test/language/expressions/object/method-definition/early-errors-object-method-formals-body-duplicate.js: Added. - (async.foo): - * test262/test/language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js: Added. - (async.foo.foo.super): - * test262/test/language/expressions/object/method-definition/object-method-returns-promise.js: Added. - (obj.async.method): - * test262/test/language/expressions/object/method-definition/params-trailing-comma-arguments.js: Added. - (obj.f1): - (obj.f2): - * test262/test/language/expressions/object/method-definition/params-trailing-comma-length.js: Added. - (obj.one): - (obj.two): - * test262/test/language/expressions/object/method-definition/params-trailing-comma-rest.js: Added. - (m): - * test262/test/language/expressions/object/method-definition/params-trailing-comma.js: Added. - (one): - (two): - * test262/test/language/global-code/decl-func-dup.js: Renamed from JSTests/test262/test/language/block-scope/syntax/redeclaration-global/allowed-to-redeclare-function-declaration-with-function-declaration.js. - (f): - * test262/test/language/global-code/decl-func.js: Added. - (brandNew): - * test262/test/language/global-code/decl-lex-configurable-global.js: Added. - * test262/test/language/global-code/decl-lex-deletion.js: Added. - (test262class): - * test262/test/language/global-code/decl-lex-restricted-global.js: Added. - * test262/test/language/global-code/decl-lex.js: Added. - (test262class): - * test262/test/language/global-code/decl-var.js: Added. - * test262/test/language/global-code/return.js: Added. - * test262/test/language/global-code/script-decl-func-dups.js: Added. - * test262/test/language/global-code/script-decl-func-err-non-configurable.js: Added. - * test262/test/language/global-code/script-decl-func-err-non-extensible.js: Added. - * test262/test/language/global-code/script-decl-func.js: Added. - * test262/test/language/global-code/script-decl-lex-deletion.js: Added. - * test262/test/language/global-code/script-decl-lex-lex.js: Added. - (test262Class): - * test262/test/language/global-code/script-decl-lex-restricted-global.js: Added. - * test262/test/language/global-code/script-decl-lex-var.js: Added. - (test262Fn): - * test262/test/language/global-code/script-decl-lex.js: Added. - * test262/test/language/global-code/script-decl-var-collision.js: Added. - (test262Class): - * test262/test/language/global-code/script-decl-var-err.js: Added. - * test262/test/language/global-code/script-decl-var.js: Added. - * test262/test/language/global-code/super-call-arrow.js: Added. - * test262/test/language/global-code/super-call.js: Added. - * test262/test/language/global-code/super-prop-arrow.js: Added. - * test262/test/language/global-code/super-prop.js: Added. - * test262/test/language/global-code/yield-non-strict.js: Added. - (catch): - * test262/test/language/global-code/yield-strict.js: Added. - * test262/test/language/literals/regexp/lastIndex.js: Added. - * test262/test/language/literals/regexp/u-unicode-esc-bounds.js: - * test262/test/language/literals/regexp/y-assertion-start.js: Added. - * test262/test/language/module-code/instn-star-err-not-found-faulty_FIXTURE.js: - * test262/test/language/module-code/instn-star-err-not-found.js: - * test262/test/language/module-code/namespace/internals/get-own-property-str-found-init.js: - * test262/test/language/module-code/parse-err-return.js: Added. - * test262/test/language/module-code/parse-err-yield.js: Added. - * test262/test/language/rest-parameters/params-trailing-comma-rest.js: Added. - * test262/test/language/statements/async-function/declaration-returns-promise.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-NSPL-with-USD.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-arguments-in-formal-parameters.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-await-in-formals-default.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-await-in-formals.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-binding-identifier-arguments.js: Added. - (async.arguments): - * test262/test/language/statements/async-function/early-errors-declaration-binding-identifier-eval.js: Added. - (async.eval): - * test262/test/language/statements/async-function/early-errors-declaration-body-contains-super-call.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-body-contains-super-property.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-duplicate-parameters.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-eval-in-formal-parameters.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-formals-body-duplicate.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-formals-contains-super-call.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-declaration-formals-contains-super-property.js: Added. - (async.foo): - * test262/test/language/statements/async-function/early-errors-no-async-generator.js: Added. - (async.foo): - * test262/test/language/statements/async-function/evaluation-body-that-returns-after-await.js: Added. - (async.foo): - (foo.then): - * test262/test/language/statements/async-function/evaluation-body-that-returns.js: Added. - (async.foo): - (foo.then): - * test262/test/language/statements/async-function/evaluation-body-that-throws-after-await.js: Added. - (async.foo): - (foo.then): - * test262/test/language/statements/async-function/evaluation-body-that-throws.js: Added. - (async.foo): - (foo.then): - * test262/test/language/statements/async-function/evaluation-body.js: Added. - (async.foo): - * test262/test/language/statements/async-function/evaluation-default-that-throws.js: Added. - (async.foo): - (foo.then): - * test262/test/language/statements/async-function/evaluation-mapped-arguments.js: Added. - (async.foo): - * test262/test/language/statements/async-function/evaluation-this-value-global.js: Added. - (async.foo): - * test262/test/language/statements/async-function/evaluation-this-value-passed.js: Added. - (async.foo): - * test262/test/language/statements/async-function/evaluation-unmapped-arguments.js: Added. - (async.foo): - * test262/test/language/statements/async-function/syntax-declaration-line-terminators-allowed.js: Added. - (async.foo): - * test262/test/language/statements/async-function/syntax-declaration-no-line-terminator.js: Added. - (async.foo): - * test262/test/language/statements/async-function/syntax-declaration.js: Added. - (async.foo): - (foo.then): - * test262/test/language/statements/class/definition/class-method-returns-promise.js: Added. - (Foo.prototype.async.method): - (Foo): - * test262/test/language/statements/class/definition/early-errors-class-method-NSPL-with-USD.js: Added. - (Foo.prototype.async.bar): - (Foo): - * test262/test/language/statements/class/definition/early-errors-class-method-arguments-in-formal-parameters.js: Added. - (Foo.prototype.async.foo): - (Foo): - * test262/test/language/statements/class/definition/early-errors-class-method-await-in-formals-default.js: Added. - (Foo.prototype.async.foo): - (Foo): - * test262/test/language/statements/class/definition/early-errors-class-method-await-in-formals.js: Added. - (Foo.prototype.async.foo): - (Foo): - * test262/test/language/statements/class/definition/early-errors-class-method-body-contains-super-call.js: Added. - (Foo.prototype.async.foo): - (Foo): - * test262/test/language/statements/class/definition/early-errors-class-method-duplicate-parameters.js: Added. - (Foo.prototype.async.foo): - (Foo): - * test262/test/language/statements/class/definition/early-errors-class-method-eval-in-formal-parameters.js: Added. - (Foo.prototype.async.foo): - (Foo): - * test262/test/language/statements/class/definition/early-errors-class-method-formals-body-duplicate.js: Added. - (Foo.async.foo): - (Foo): - * test262/test/language/statements/class/definition/early-errors-class-method-formals-contains-super-call.js: Added. - (Foo.prototype.async.foo): - (Foo): - * test262/test/language/statements/class/definition/methods-async-super-call-body.js: Added. - (A.prototype.async.method): - (A): - (B.prototype.async.method): - (B): - * test262/test/language/statements/class/definition/methods-async-super-call-param.js: Added. - (A.prototype.async.method): - (A): - (B.prototype.async.method): - (B): - * test262/test/language/statements/class/definition/params-trailing-comma-arguments.js: Added. - (C.prototype.f1): - (C.prototype.f2): - (C): - * test262/test/language/statements/class/definition/params-trailing-comma-length.js: Added. - (C.prototype.one): - (C.prototype.two): - (C): - * test262/test/language/statements/class/definition/params-trailing-comma-rest.js: Added. - (C.prototype.m): - (C): - * test262/test/language/statements/class/definition/params-trailing-comma.js: Added. - (C.prototype.one): - (C.prototype.two): - (C): - * test262/test/language/statements/function/arguments-with-arguments-fn.js: Added. - (f): - * test262/test/language/statements/function/arguments-with-arguments-lex.js: Added. - (f): - * test262/test/language/statements/function/params-trailing-comma-arguments.js: Added. - (f1): - (f2): - * test262/test/language/statements/function/params-trailing-comma-length.js: Added. - (one): - (two): - * test262/test/language/statements/function/params-trailing-comma.js: Added. - (one): - (two): - * test262/test/language/statements/generators/arguments-with-arguments-fn.js: Added. - (g): - * test262/test/language/statements/generators/arguments-with-arguments-lex.js: Added. - (g): - * test262/test/language/statements/generators/params-trailing-comma-length.js: Added. - (one): - (two): - * test262/test/language/statements/generators/params-trailing-comma.js: Added. - (one): - (two): - * test262/test262-Revision.txt: - -2016-08-23 Benjamin Poulain - - [JSC] Make Math.cos() and Math.sin() work with any argument type - https://bugs.webkit.org/show_bug.cgi?id=161069 - - Reviewed by Geoffrey Garen. - - * stress/arith-cos-on-various-types.js: Added. - * stress/arith-sin-on-various-types.js: Added. - -2016-08-23 Yusuke Suzuki - - [ES6] Module namespace object's Symbol.iterator method should only accept module namespace objects - https://bugs.webkit.org/show_bug.cgi?id=161097 - - Reviewed by Keith Miller. - - * test262.yaml: - -2016-08-22 Yusuke Suzuki - - [ES6] Modules' `export default function/class` should be declaration - https://bugs.webkit.org/show_bug.cgi?id=160499 - - Reviewed by Saam Barati. - - Add several module tests. And flip the failed tests flags in test262. - - * modules/export-default-function-name-in-assignment-expression.js: Added. - (export.default): - * modules/export-default-function-name-in-class-declaration.js: Added. - * modules/export-default-function-name-in-function-declaration.js: Added. - (export.default): - * modules/export-default-function-name-in-generator-declaration.js: Added. - (export.default): - * stress/method-name.js: Added. - (testSyntax): - (testSyntaxError): - (testSyntaxError.Hello.prototype.hello.hello): - (testSyntaxError.Hello): - (SyntaxError.Unexpected.identifier.string_appeared_here.Expected.an.opening.string_appeared_here.before.a.method.testSyntaxError.let.obj.hello.hello): - (testSyntaxError.Hello.prototype.get hello): - (testSyntaxError.Hello.prototype.set hello): - * test262.yaml: - -2016-08-22 Yusuke Suzuki - - [ES6] Module should not allow HTML comments - https://bugs.webkit.org/show_bug.cgi?id=161041 - - Reviewed by Saam Barati. - - * modules/html-comments.js: Added. - (shouldThrow): - * test262.yaml: - -2016-08-21 Yusuke Suzuki - - [DFG] Should not fixup AnyIntUse in 32_64 - https://bugs.webkit.org/show_bug.cgi?id=161029 - - Reviewed by Saam Barati. - - * typeProfiler/int52-dfg.js: Added. - (test): - -2016-08-21 Yusuke Suzuki - - Unreviewed, rolling out r204697 - https://bugs.webkit.org/show_bug.cgi?id=161029 - - * typeProfiler/int52-dfg.js: Removed. - (test): Deleted. - * typeProfiler/number-filter-dfg.js: Removed. - (test): Deleted. - -2016-08-21 Yusuke Suzuki - - [DFG] Should not fixup AnyIntUse in 32_64 - https://bugs.webkit.org/show_bug.cgi?id=161029 - - Reviewed by Saam Barati. - - * typeProfiler/int52-dfg.js: Added. - (test): - * typeProfiler/number-filter-dfg.js: Added. - (test): - -2016-08-19 Benjamin Poulain - - [JSC] ArithSqrt should work with any argument type - https://bugs.webkit.org/show_bug.cgi?id=160954 - - Reviewed by Saam Barati. - - * stress/arith-sqrt-on-various-types.js: Added. - (let.validInputTypedTestCases.validInputTestCases.map): - (isIdentical): - (opaqueAllTypesSqrt): - (testAllTypesCall): - (testSingleTypeCall): - (opaqueSqrtForSideEffects): - (testSideEffect.let.testObject.valueOf): - (testSideEffect): - (opaqueSqrtForCSE): - (testCSE.let.testObject.valueOf): - (testCSE): - (testException.opaqueSqrtWithException): - (testException): - -2016-08-19 Joseph Pecoraro - - Make custom Error properties (line, column, sourceURL) configurable and writable - https://bugs.webkit.org/show_bug.cgi?id=160984 - - - Reviewed by Saam Barati. - - * stress/native-error-properties.js: Added. - (assert): - (shouldNotThrow): - - (checkEmptyErrorPropertiesDescriptors): - (checkNonEmptyErrorPropertiesDescriptors): - The spec only describes the "message" property, so - ensure it has the right descriptor attributes. - - (checkErrorPropertiesWritable): - Ensure common error property names are writable. - In strict mode this would have thrown an exception - if they were readonly. - -2016-08-18 Mark Lam - - ScopedArguments is using the wrong owner object for a write barrier. - https://bugs.webkit.org/show_bug.cgi?id=160976 - - - Reviewed by Keith Miller. - - * stress/scoped-arguments-write-barrier-should-be-on-scope-object.js: Added. - -2016-08-17 JF Bastien - - We allow assignments to const variables when in a for-in/for-of loop - https://bugs.webkit.org/show_bug.cgi?id=156673 - - Reviewed by Filip Pizlo. - - * stress/for-in-of-const.js: Added. - (expect_nothrow): - (expect_throw): - (capture): - -2016-08-17 Mark Lam - - Remove an invalid assertion in the DFG backend's GetById emitter. - https://bugs.webkit.org/show_bug.cgi?id=160925 - - - Reviewed by Filip Pizlo. - - * stress/dfg-get-by-id-should-not-assert-non-null-prediction.js: Added. - -2016-08-16 Ryan Haddad - - Unreviewed, rolling out r204464. - - This is no longer needed after r204495. - - Reverted changeset: - - "Skip failing test mozilla/ecma/LexicalConventions/7.7.3.js" - https://bugs.webkit.org/show_bug.cgi?id=160662 - http://trac.webkit.org/changeset/204464 - -2016-08-15 Ryan Haddad - - Skip failing test mozilla/ecma/LexicalConventions/7.7.3.js - https://bugs.webkit.org/show_bug.cgi?id=160662 - - Unreviewed test gardening. - - * mozilla/ecma/LexicalConventions/7.7.3.js: - -2016-08-14 Skachkov Oleksandr - - [2016] Set correct status for test262 after implementation of Object.values&Object.entries - https://bugs.webkit.org/show_bug.cgi?id=160844 - - Reviewed by Saam Barati. - - Patch contains fix statuses of specs in the test262 test collection after implementation of - Object.values and Object.entries functions. Also patch contains small fixes in tests of the - tests for Object.values/entries functions. - - * stress/object-entries.js: - (Object.getOwnPropertyDescriptor): - * stress/object-values.js: - (Object.getOwnPropertyDescriptor): - * test262.yaml: - -2016-08-12 Saam Barati - - Inline store loop for CopyRest in DFG and FTL for certain array modes - https://bugs.webkit.org/show_bug.cgi?id=159612 - - Reviewed by Filip Pizlo. - - * stress/rest-parameter-having-a-bad-time.js: Added. - * stress/rest-parameter-many-arguments.js: Added. - * stress/rest-parameter-various-types.js: Added. - -2016-08-12 Skachkov Oleksandr - - [ES2016] Implement Object.entries - https://bugs.webkit.org/show_bug.cgi?id=160412 - - Reviewed by Saam Barati. - - Patch contains tests for Object.entries function and - fix of wrong tests for Object.values function. - - * stress/object-entries.js: - (compare): - (string_appeared_here.forEach): - (const.getInvokedFunctions.): - (const.getInvokedFunctions): - (Array.prototype.push): - * stress/object-values.js: - -2016-08-11 Mark Lam - - OverridesHasInstance should not branch across register allocations. - https://bugs.webkit.org/show_bug.cgi?id=160792 - - - Reviewed by Benjamin Poulain. - - * stress/OverrideHasInstance-should-not-branch-across-register-allocations.js: Added. - -2016-08-11 Mark Lam - - The jsc shell's Element host constructor should throw if it fails to construct an object. - https://bugs.webkit.org/show_bug.cgi?id=160773 - - - Reviewed by Saam Barati. - - * stress/generational-opaque-roots.js: - -2016-08-11 Mark Lam - - Disallow synchronous sweeping for eden GCs. - https://bugs.webkit.org/show_bug.cgi?id=160716 - - Reviewed by Geoffrey Garen. - - * stress/eden-gc-with-retired-blocks.js: Added. - - This test is just in case we add back support for eden GCs with synchronous - sweeping in the future. - -2016-08-10 Michael Saboff - - Baseline GetByVal and PutByVal for cache ID stubs need to handle exceptions - https://bugs.webkit.org/show_bug.cgi?id=160749 - - Reviewed by Filip Pizlo. - - New test that causes baseline GetByValWithCachedId and PutByValWithCachedId - stubs to be generated and then throws exceptions for those stub to handle - to verify that they are properly handled. - - * stress/regress-160749.js: Added. - (testCachedGetByVal.): - (testCachedGetByVal.get for): - (testCachedGetByVal): - (testCachedPutByVal.): - (testCachedPutByVal.set for): - (testCachedPutByVal): - -2016-08-10 Mark Lam - - DFG's flushForTerminal() needs to add PhantomLocals for bytecode live locals. - https://bugs.webkit.org/show_bug.cgi?id=160755 - - - Reviewed by Filip Pizlo. - - * stress/need-bytecode-liveness-for-unreachable-blocks-at-dfg-time.js: Added. - -2016-08-09 Skachkov Oleksandr - - [ES2016] Implement Object.values - https://bugs.webkit.org/show_bug.cgi?id=160410 - - Reviewed by Saam Barati, Yusuke Suzuki. - - * stress/object-values.js: Added. - (compare): - (string_appeared_here.forEach): - (const.getInvokedFunctions.): - (const.getInvokedFunctions): - (Array.prototype.push): - -2016-08-09 Saam Barati - - JSBoundFunction should lazily generate its name string - https://bugs.webkit.org/show_bug.cgi?id=160678 - - - Reviewed by Mark Lam. - - * stress/bound-function-lazy-name-generation.js: Added. - (assert): - (test.let.f): - (test.f): - (test): - -2016-08-08 Mark Lam - - ASSERTION FAILED: hasInlineStorage() in JSFinalObject::visitChildren(). - https://bugs.webkit.org/show_bug.cgi?id=160666 - - Reviewed by Keith Miller. - - * stress/object-constructor-should-be-new-target-aware.js: - -2016-08-07 Yusuke Suzuki - - [ES6] Module namespace object should not allow unset IC - https://bugs.webkit.org/show_bug.cgi?id=160553 - - Reviewed by Saam Barati. - - * modules/namespace-object-get-property.js: Added. - (import.as.ns.from.string_appeared_here.shouldThrow): - * modules/namespace-object-has-property.js: Added. - * modules/namespace-object-inline-caching.js: Added. - (import.as.A.from.string_appeared_here.import.as.B.from.string_appeared_here.lookup): - (shouldBe.lookup.lookup): - (shouldBe.lookup): - * modules/namespace-object-inline-caching/a.js: Added. - * modules/namespace-object-inline-caching/b.js: Added. - * modules/namespace-object-try-get.js: Added. - (import.as.ns.from.string_appeared_here.tryGetByIdText): - (tryGetByIdTextStrict): - * modules/namespace-object-typed-array-fast-path.js: Added. - * test262.yaml: - -2016-08-05 Saam Barati - - various math operations don't properly check for an exception after calling toNumber() on the lhs - https://bugs.webkit.org/show_bug.cgi?id=160154 - - Reviewed by Mark Lam. - - * stress/to-number-throws-correct-exception.js: Added. - (test.let.test.runTest.): - (test.let.test.runTest.get f): - (test.let.test.runTest): - (test.let.test): - (test): - (test2.runTest.): - (test2.runTest.get f): - (test2.runTest): - (test2): - -2016-08-05 Saam Barati - - Assertion failure when accessing TDZ variable in catch through eval - https://bugs.webkit.org/show_bug.cgi?id=160554 - - Reviewed by Mark Lam and Keith Miller. - - * stress/catch-variables-under-tdz.js: Added. - (test): - -2016-08-04 Yusuke Suzuki - - [ES6] JSModuleNamespaceObject's Symbol.iterator function should have name - https://bugs.webkit.org/show_bug.cgi?id=160549 - - Reviewed by Saam Barati. - - * modules/namespace-object-symbol-iterator-name.js: Added. - * test262.yaml: - -2016-08-04 Keith Miller - - ASSERTION FAILED: !hasInstanceValueNode->isCellConstant() || defaultHasInstanceFunction == hasInstanceValueNode->asCell() - https://bugs.webkit.org/show_bug.cgi?id=160562 - - Reviewed by Mark Lam. - - * stress/instanceof-late-constant-folding.js: Added. - (Constructor): - (value): - (body): - -2016-08-04 Caitlin Potter - - [JSC] fix generator-syntax.js JSTest again after yield grammar fix - https://bugs.webkit.org/show_bug.cgi?id=160550 - - Reviewed by Yusuke Suzuki. - - * stress/generator-syntax.js: - (testYieldBindingIdentifier): - -2016-08-03 Caitlin Potter - - Clarify SyntaxErrors around yield and unskip tests - https://bugs.webkit.org/show_bug.cgi?id=158460 - - Reviewed by Saam Barati. - - Fix and unskip tests which erroneously asserted that `yield` is not a - valid BindingIdentifier, and improve error message for YieldExpressions - occuring in Arrow formal parameters. - - * stress/generator-syntax.js: - * stress/yield-out-of-generator.js: - -2016-08-03 Filip Pizlo - - REGRESSION(r203368): broke some test262 tests - https://bugs.webkit.org/show_bug.cgi?id=160479 - - Reviewed by Mark Lam. - - Added a stress test for this case, since we don't always run test262. - - * stress/freeze-setter.js: Added. - (let.o.set foo): - -2016-08-03 Saam Barati - - Implement nested rest destructuring w.r.t the ES7 spec - https://bugs.webkit.org/show_bug.cgi?id=160423 - - Reviewed by Filip Pizlo. - - * stress/destructuring-rest-element.js: Added. - (assert): - (test): - (arr): - (eq): - (gen): - (fakeGen.return.Symbol.iterator): - (fakeGen): - * stress/rest-elements.js: - (testSyntaxError.String.raw): - * stress/rest-parameter-is-destructuring.js: Added. - (assert): - (test): - (foo): - (bar): - * test262.yaml: - -2016-08-02 Saam Barati - - Rename Changelog to ChangeLog - - Rubber stamped by Keith Miller. - - * Changelog: Removed. - -2016-08-02 Saam Barati - - update a class extending null w.r.t the ES7 spec - https://bugs.webkit.org/show_bug.cgi?id=160417 - - Reviewed by Keith Miller. - - * Changelog: - * stress/class-derived-from-null.js: Added. - (assert): - (test): - (test1.C): - (test1): - (jsNull): - (test2.C): - (test2): - (test3.C): - (test3.D): - (test3.E): - (test3): - (test4.E): - (test4): - (test5.E): - (test5): - (test6.Base): - (test6.D): - (test6.E): - (test6.F): - (test6.G): - (test6): - * test262.yaml: - -2016-08-01 Filip Pizlo - - Rationalize varargs stack overflow checks - https://bugs.webkit.org/show_bug.cgi?id=160425 - - Reviewed by Michael Saboff. - - * stress/arity-check-ftl-throw-more-args.js: Added. - (catch): - -2016-08-01 Keith Miller - - We should not keep the JavaScript tests inside the Source/JavaScriptCore/ directory. - https://bugs.webkit.org/show_bug.cgi?id=160372 - - Rubber stamped by Geoffrey Garen. - - This patch moves all the JavaScript tests from Source/JavaScriptCore/tests to - a new top level directory, JSTests. Having the tests in the Source directory - was both confusing an inconvenient for people that just want to checkout the - source code of WebKit. Since there is no other obvious place to put all the - JavaScript tests a new top level directory seemed the most sensible. - - * tests/: Deleted. diff --git a/implementation-contributed/javascriptcore/es6/Map_-0_key_converts_to_+0.js b/implementation-contributed/javascriptcore/es6/Map_-0_key_converts_to_+0.js deleted file mode 100644 index 9ad40670b22..00000000000 --- a/implementation-contributed/javascriptcore/es6/Map_-0_key_converts_to_+0.js +++ /dev/null @@ -1,15 +0,0 @@ -function test() { - -var map = new Map(); -map.set(-0, "foo"); -var k; -map.forEach(function (value, key) { - k = 1 / key; -}); -return k === Infinity && map.get(+0) == "foo"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.freeze.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.freeze.js deleted file mode 100644 index f85697ac889..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.freeze.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return Object.freeze('a') === 'a'; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js deleted file mode 100644 index b52357cba95..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return Object.getOwnPropertyDescriptor('a', 'foo') === undefined; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js deleted file mode 100644 index d244ca6488f..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js +++ /dev/null @@ -1,11 +0,0 @@ -function test() { - -var s = Object.getOwnPropertyNames('a'); -return s.length === 2 && - ((s[0] === 'length' && s[1] === '0') || (s[0] === '0' && s[1] === 'length')); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js deleted file mode 100644 index 86ff25bfd43..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return Object.getPrototypeOf('a').constructor === String; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isExtensible.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isExtensible.js deleted file mode 100644 index 2c046254ed8..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isExtensible.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return Object.isExtensible('a') === false; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isFrozen.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isFrozen.js deleted file mode 100644 index b82b08c3df2..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isFrozen.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return Object.isFrozen('a') === true; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isSealed.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isSealed.js deleted file mode 100644 index a123b1428be..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.isSealed.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return Object.isSealed('a') === true; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.keys.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.keys.js deleted file mode 100644 index 86811933529..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.keys.js +++ /dev/null @@ -1,10 +0,0 @@ -function test() { - -var s = Object.keys('a'); -return s.length === 1 && s[0] === '0'; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.preventExtensions.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.preventExtensions.js deleted file mode 100644 index a99b8eae3c6..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.preventExtensions.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return Object.preventExtensions('a') === 'a'; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.seal.js b/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.seal.js deleted file mode 100644 index 4ab223d98d2..00000000000 --- a/implementation-contributed/javascriptcore/es6/Object_static_methods_accept_primitives_Object.seal.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return Object.seal('a') === 'a'; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_JSON.stringify_support.js b/implementation-contributed/javascriptcore/es6/Proxy_JSON.stringify_support.js deleted file mode 100644 index cd936c1da99..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_JSON.stringify_support.js +++ /dev/null @@ -1,10 +0,0 @@ -// Reviewed -function test() { - -return JSON.stringify(new Proxy(['foo'], {})) === '["foo"]'; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js deleted file mode 100644 index 163f75d7ab2..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.copyWithin -> DeletePropertyOrThrow -> [[Delete]] -var del = []; -var p = new Proxy([0,0,0,,,,], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }}); -p.copyWithin(0,3); -return del + '' === "0,1,2"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js deleted file mode 100644 index bc945c6f6db..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.pop -> DeletePropertyOrThrow -> [[Delete]] -var del = []; -var p = new Proxy([0,0,0], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }}); -p.pop(); -return del + '' === "2"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js deleted file mode 100644 index 04d921e411d..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.reverse -> DeletePropertyOrThrow -> [[Delete]] -var del = []; -var p = new Proxy([0,,2,,4,,], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }}); -p.reverse(); -return del + '' === "0,4,2"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js deleted file mode 100644 index bffd0d9ee09..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.shift -> DeletePropertyOrThrow -> [[Delete]] -var del = []; -var p = new Proxy([0,,0,,0,0], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }}); -p.shift(); -return del + '' === "0,2,5"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js deleted file mode 100644 index ae8cd7ddacb..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.splice -> DeletePropertyOrThrow -> [[Delete]] -var del = []; -var p = new Proxy([0,0,0,0,,0], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }}); -p.splice(2,2,0); -return del + '' === "3,5"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js deleted file mode 100644 index 49d1e65d5ae..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.unshift -> DeletePropertyOrThrow -> [[Delete]] -var del = []; -var p = new Proxy([0,0,,0,,0], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }}); -p.unshift(0); -return del + '' === "5,3"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.concat.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.concat.js deleted file mode 100644 index 07926183809..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.concat.js +++ /dev/null @@ -1,21 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.concat -> Get -> [[Get]] -var get = []; -var arr = [1]; -arr.constructor = undefined; -var p = new Proxy(arr, { get: function(o, k) { get.push(k); return o[k]; }}); -Array.prototype.concat.call(p,p); -return get[0] === "constructor" - && get[1] === Symbol.isConcatSpreadable - && get[2] === "length" - && get[3] === "0" - && get[4] === get[1] && get[5] === get[2] && get[6] === get[3] - && get.length === 7; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.pop.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.pop.js deleted file mode 100644 index 010d4d1c135..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.pop.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.pop -> Get -> [[Get]] -var get = []; -var p = new Proxy([0,1,2,3], { get: function(o, k) { get.push(k); return o[k]; }}); -Array.prototype.pop.call(p); -return get + '' === "length,3"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.reverse.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.reverse.js deleted file mode 100644 index 489cf3d12a3..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.reverse.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.reverse -> Get -> [[Get]] -var get = []; -var p = new Proxy([0,,2,,4,,], { get: function(o, k) { get.push(k); return o[k]; }}); -Array.prototype.reverse.call(p); -return get + '' === "length,0,4,2"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.shift.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.shift.js deleted file mode 100644 index d9da4144095..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.shift.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.shift -> Get -> [[Get]] -var get = []; -var p = new Proxy([0,1,2,3], { get: function(o, k) { get.push(k); return o[k]; }}); -Array.prototype.shift.call(p); -return get + '' === "length,0,1,2,3"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.splice.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.splice.js deleted file mode 100644 index e07882b1c46..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.splice.js +++ /dev/null @@ -1,15 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.splice -> Get -> [[Get]] -var get = []; -var p = new Proxy([0,1,2,3], { get: function(o, k) { get.push(k); return o[k]; }}); -Array.prototype.splice.call(p,1,1); -Array.prototype.splice.call(p,1,0,1); -return get + '' === "length,constructor,1,2,3,length,constructor,2,1"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.toString.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.toString.js deleted file mode 100644 index 4fe15c03ed6..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype.toString.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.toString -> Get -> [[Get]] -var get = []; -var p = new Proxy({ join:Function() }, { get: function(o, k) { get.push(k); return o[k]; }}); -Array.prototype.toString.call(p); -return get + '' === "join"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js deleted file mode 100644 index 48e59d92bab..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js +++ /dev/null @@ -1,27 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype methods -> Get -> [[Get]] -var methods = ['copyWithin', 'every', 'fill', 'filter', 'find', 'findIndex', 'forEach', - 'indexOf', 'join', 'lastIndexOf', 'map', 'reduce', 'reduceRight', 'some']; -var get; -var p = new Proxy({length: 2, 0: '', 1: ''}, { get: function(o, k) { get.push(k); return o[k]; }}); -for(var i = 0; i < methods.length; i+=1) { - get = []; - Array.prototype[methods[i]].call(p, Function()); - if (get + '' !== ( - methods[i] === 'fill' ? "length" : - methods[i] === 'every' ? "length,0" : - methods[i] === 'lastIndexOf' || methods[i] === 'reduceRight' ? "length,1,0" : - "length,0,1" - )) { - return false; - } -} -return true; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js deleted file mode 100644 index aa59887129c..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// ClassDefinitionEvaluation -> Get -> [[Get]] -var get = []; -var p = new Proxy(Function(), { get: function(o, k) { get.push(k); return o[k]; }}); -class C extends p {} -return get + '' === "prototype"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_CreateDynamicFunction.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_CreateDynamicFunction.js deleted file mode 100644 index 2a6e7d10429..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_CreateDynamicFunction.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// CreateDynamicFunction -> GetPrototypeFromConstructor -> Get -> [[Get]] -var get = []; -var p = new Proxy(Function, { get: function(o, k) { get.push(k); return o[k]; }}); -new p; -return get + '' === "prototype"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_CreateListFromArrayLike.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_CreateListFromArrayLike.js deleted file mode 100644 index 37f61bdf928..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_CreateListFromArrayLike.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// CreateListFromArrayLike -> Get -> [[Get]] -var get = []; -var p = new Proxy({length:2, 0:0, 1:0}, { get: function(o, k) { get.push(k); return o[k]; }}); -Function.prototype.apply({}, p); -return get + '' === "length,0,1"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Date.prototype.toJSON.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Date.prototype.toJSON.js deleted file mode 100644 index d248cdddbba..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Date.prototype.toJSON.js +++ /dev/null @@ -1,15 +0,0 @@ -// Reviewed -function test() { - -// Date.prototype.toJSON -> ToPrimitive -> Get -> [[Get]] -// Date.prototype.toJSON -> Invoke -> GetMethod -> GetV -> [[Get]] -var get = []; -var p = new Proxy({toString:Function(),toISOString:Function()}, { get: function(o, k) { get.push(k); return o[k]; }}); -Date.prototype.toJSON.call(p); -return get[0] === Symbol.toPrimitive && get.slice(1) + '' === "valueOf,toString,toISOString"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Error.prototype.toString.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Error.prototype.toString.js deleted file mode 100644 index d277b3b1d3e..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Error.prototype.toString.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Error.prototype.toString -> Get -> [[Get]] -var get = []; -var p = new Proxy({}, { get: function(o, k) { get.push(k); return o[k]; }}); -Error.prototype.toString.call(p); -return get + '' === "name,message"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Function.prototype.bind.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Function.prototype.bind.js deleted file mode 100644 index d4323fb800c..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Function.prototype.bind.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Function.prototype.bind -> Get -> [[Get]] -var get = []; -var p = new Proxy(Function(), { get: function(o, k) { get.push(k); return o[k]; }}); -Function.prototype.bind.call(p); -return get + '' === "length,name"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_HasBinding.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_HasBinding.js deleted file mode 100644 index ea2299b1868..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_HasBinding.js +++ /dev/null @@ -1,17 +0,0 @@ -// Reviewed -function test() { - -// HasBinding -> Get -> [[Get]] -var get = []; -var p = new Proxy({foo:1}, { get: function(o, k) { get.push(k); return o[k]; }}); -p[Symbol.unscopables] = p; -with(p) { - typeof foo; -} -return get[0] === Symbol.unscopables && get.slice(1) + '' === "foo"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_JSON.stringify.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_JSON.stringify.js deleted file mode 100644 index 9db1424ef9c..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_JSON.stringify.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// JSON.stringify -> Get -> [[Get]] -var get = []; -var p = new Proxy({}, { get: function(o, k) { get.push(k); return o[k]; }}); -JSON.stringify(p); -return get + '' === "toJSON"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Object.assign.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Object.assign.js deleted file mode 100644 index 261c665a26b..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_Object.assign.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Object.assign -> Get -> [[Get]] -var get = []; -var p = new Proxy({foo:1, bar:2}, { get: function(o, k) { get.push(k); return o[k]; }}); -Object.assign({}, p); -return get + '' === "foo,bar"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.flags.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.flags.js deleted file mode 100644 index e649b1a3ff4..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.flags.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// RegExp.prototype.flags -> Get -> [[Get]] -var get = []; -var p = new Proxy({}, { get: function(o, k) { get.push(k); return o[k]; }}); -Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call(p); -return get + '' === "global,ignoreCase,multiline,dotAll,unicode,sticky"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.test.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.test.js deleted file mode 100644 index d01ec28fdc3..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.test.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// RegExp.prototype.test -> RegExpExec -> Get -> [[Get]] -var get = []; -var p = new Proxy({ exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }}); -RegExp.prototype.test.call(p); -return get + '' === "exec"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.toString.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.toString.js deleted file mode 100644 index fa971f5ea5c..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype.toString.js +++ /dev/null @@ -1,11 +0,0 @@ -// Reviewed -// RegExp.prototype.toString -> Get -> [[Get]] -function test() { - var get = []; - var p = new Proxy({}, { get: function(o, k) { get.push(k); return o[k]; }}); - RegExp.prototype.toString.call(p); - return get + '' === "source,flags"; -} - -if (!test()) - throw new Error("Test failed.") diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.match].js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.match].js deleted file mode 100644 index fcc5b131827..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.match].js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -// RegExp.prototype[Symbol.match] -> Get -> [[Get]] -var get = []; -var p = new Proxy({ exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }}); -RegExp.prototype[Symbol.match].call(p); -p.global = true; -RegExp.prototype[Symbol.match].call(p); -return get + '' === "flags,exec,flags,exec"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.replace].js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.replace].js deleted file mode 100644 index e425ddf6fa1..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.replace].js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -// RegExp.prototype[Symbol.replace] -> Get -> [[Get]] -var get = []; -var p = new Proxy({ exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }}); -RegExp.prototype[Symbol.replace].call(p); -p.global = true; -RegExp.prototype[Symbol.replace].call(p); -return get + '' === "flags,exec,flags,exec"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.search].js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.search].js deleted file mode 100644 index c5294a4e114..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.search].js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// RegExp.prototype[Symbol.search] -> Get -> [[Get]] -var get = []; -var p = new Proxy({ exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }}); -RegExp.prototype[Symbol.search].call(p); -return get + '' === "lastIndex,exec,lastIndex"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.split].js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.split].js deleted file mode 100644 index 86e05d45bc9..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.split].js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -// RegExp.prototype[Symbol.split] -> Get -> [[Get]] -var get = []; -var constructor = Function(); -constructor[Symbol.species] = Object; -var p = new Proxy({ constructor: constructor, flags: '', exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }}); -RegExp.prototype[Symbol.split].call(p, ""); -return get + '' === "constructor,flags,exec"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp_constructor.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp_constructor.js deleted file mode 100644 index 4c1485f0eab..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_RegExp_constructor.js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -// RegExp -> Get -> [[Get]] -var get = []; -var re = { constructor: null }; -re[Symbol.match] = true; -var p = new Proxy(re, { get: function(o, k) { get.push(k); return o[k]; }}); -RegExp(p); -return get[0] === Symbol.match && get.slice(1) + '' === "constructor,source,flags"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.match.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.match.js deleted file mode 100644 index 28724faa424..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.match.js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -// String.prototype.match -> Get -> [[Get]] -var get = []; -var proxied = {}; -proxied[Symbol.toPrimitive] = Function(); -var p = new Proxy(proxied, { get: function(o, k) { get.push(k); return o[k]; }}); -"".match(p); -return get[0] === Symbol.match && get[1] === Symbol.toPrimitive && get.length === 2; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.replace.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.replace.js deleted file mode 100644 index 707efdcddd6..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.replace.js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -// String.prototype.replace functions -> Get -> [[Get]] -var get = []; -var proxied = {}; -proxied[Symbol.toPrimitive] = Function(); -var p = new Proxy(proxied, { get: function(o, k) { get.push(k); return o[k]; }}); -"".replace(p); -return get[0] === Symbol.replace && get[1] === Symbol.toPrimitive && get.length === 2; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.search.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.search.js deleted file mode 100644 index c3a702a36a1..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.search.js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -// String.prototype.search functions -> Get -> [[Get]] -var get = []; -var proxied = {}; -proxied[Symbol.toPrimitive] = Function(); -var p = new Proxy(proxied, { get: function(o, k) { get.push(k); return o[k]; }}); -"".search(p); -return get[0] === Symbol.search && get[1] === Symbol.toPrimitive && get.length === 2; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.split.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.split.js deleted file mode 100644 index ad1536dfdc1..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_String.prototype.split.js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -// String.prototype.split functions -> Get -> [[Get]] -var get = []; -var proxied = {}; -proxied[Symbol.toPrimitive] = Function(); -var p = new Proxy(proxied, { get: function(o, k) { get.push(k); return o[k]; }}); -"".split(p); -return get[0] === Symbol.split && get[1] === Symbol.toPrimitive && get.length === 2; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_instanceof_operator.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_instanceof_operator.js deleted file mode 100644 index 8696527a156..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_get_calls_instanceof_operator.js +++ /dev/null @@ -1,15 +0,0 @@ -// Reviewed -function test() { - -// InstanceofOperator -> GetMethod -> GetV -> [[Get]] -// InstanceofOperator -> OrdinaryHasInstance -> Get -> [[Get]] -var get = []; -var p = new Proxy(Function(), { get: function(o, k) { get.push(k); return o[k]; }}); -({}) instanceof p; -return get[0] === Symbol.hasInstance && get.slice(1) + '' === "prototype"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js deleted file mode 100644 index b05fc0c4525..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.copyWithin -> Set -> [[Set]] -var set = []; -var p = new Proxy([1,2,3,4,5,6], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }}); -p.copyWithin(0, 3); -return set + '' === "0,1,2"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.fill.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.fill.js deleted file mode 100644 index e59bfb67e31..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.fill.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.fill -> Set -> [[Set]] -var set = []; -var p = new Proxy([1,2,3,4,5,6], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }}); -p.fill(0, 3); -return set + '' === "3,4,5"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.pop.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.pop.js deleted file mode 100644 index 4746ca808e8..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.pop.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.pop -> Set -> [[Set]] -var set = []; -var p = new Proxy([], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }}); -p.pop(); -return set + '' === "length"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.push.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.push.js deleted file mode 100644 index b05f440a44d..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.push.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.push -> Set -> [[Set]] -var set = []; -var p = new Proxy([], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }}); -p.push(0,0,0); -return set + '' === "0,1,2,length"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.reverse.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.reverse.js deleted file mode 100644 index 374d072690a..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.reverse.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.reverse -> Set -> [[Set]] -var set = []; -var p = new Proxy([0,0,0,,], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }}); -p.reverse(); -return set + '' === "3,1,2"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.shift.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.shift.js deleted file mode 100644 index af540ea9e85..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.shift.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.shift -> Set -> [[Set]] -var set = []; -var p = new Proxy([0,0,,0], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }}); -p.shift(); -return set + '' === "0,2,length"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.splice.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.splice.js deleted file mode 100644 index 43c6c5b6a2e..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.splice.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.splice -> Set -> [[Set]] -var set = []; -var p = new Proxy([1,2,3], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }}); -p.splice(1,0,0); -return set + '' === "3,2,1,length"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.unshift.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.unshift.js deleted file mode 100644 index 214519e21e6..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Array.prototype.unshift.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Array.prototype.unshift -> Set -> [[Set]] -var set = []; -var p = new Proxy([0,0,,0], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }}); -p.unshift(0,1); -return set + '' === "5,3,2,0,1,length"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Object.assign.js b/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Object.assign.js deleted file mode 100644 index 384e18a3c05..00000000000 --- a/implementation-contributed/javascriptcore/es6/Proxy_internal_set_calls_Object.assign.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function test() { - -// Object.assign -> Set -> [[Set]] -var set = []; -var p = new Proxy({}, { set: function(o, k, v) { set.push(k); o[k] = v; return true; }}); -Object.assign(p, { foo: 1, bar: 2 }); -return set + '' === "foo,bar"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Set_-0_key_converts_to_+0.js b/implementation-contributed/javascriptcore/es6/Set_-0_key_converts_to_+0.js deleted file mode 100644 index a59fa4ca1fd..00000000000 --- a/implementation-contributed/javascriptcore/es6/Set_-0_key_converts_to_+0.js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -var set = new Set(); -set.add(-0); -var k; -set.forEach(function (value) { - k = 1 / value; -}); -return k === Infinity && set.has(+0); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Symbol_JSON.stringify_ignores_symbols.js b/implementation-contributed/javascriptcore/es6/Symbol_JSON.stringify_ignores_symbols.js deleted file mode 100644 index 25ba75371a8..00000000000 --- a/implementation-contributed/javascriptcore/es6/Symbol_JSON.stringify_ignores_symbols.js +++ /dev/null @@ -1,13 +0,0 @@ -// Reviewed -function test() { - -var object = {foo: Symbol()}; -object[Symbol()] = 1; -var array = [Symbol()]; -return JSON.stringify(object) === '{}' && JSON.stringify(array) === '[null]' && JSON.stringify(Symbol()) === undefined; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Unicode_code_point_escapes_in_identifiers.js b/implementation-contributed/javascriptcore/es6/Unicode_code_point_escapes_in_identifiers.js deleted file mode 100644 index e8042ef2e58..00000000000 --- a/implementation-contributed/javascriptcore/es6/Unicode_code_point_escapes_in_identifiers.js +++ /dev/null @@ -1,11 +0,0 @@ -// Reviewed -function test() { - -var \u{102C0} = { \u{102C0} : 2 }; -return \u{102C0}['\ud800\udec0'] === 2; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/Unicode_code_point_escapes_in_strings.js b/implementation-contributed/javascriptcore/es6/Unicode_code_point_escapes_in_strings.js deleted file mode 100644 index 6a6c044d27e..00000000000 --- a/implementation-contributed/javascriptcore/es6/Unicode_code_point_escapes_in_strings.js +++ /dev/null @@ -1,10 +0,0 @@ -// Reviewed -function test() { - -return '\u{1d306}' == '\ud834\udf06'; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/WeakSet_iterator_closing.js b/implementation-contributed/javascriptcore/es6/WeakSet_iterator_closing.js deleted file mode 100644 index be49fdb6a25..00000000000 --- a/implementation-contributed/javascriptcore/es6/WeakSet_iterator_closing.js +++ /dev/null @@ -1,37 +0,0 @@ -// Reviewed -var global = this; - -function __createIterableObject(arr, methods) { - methods = methods || {}; - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return {}; - } - arr.length++; - var iterator = { - next: function() { - return { value: arr.shift(), done: arr.length <= 0 }; - }, - 'return': methods['return'], - 'throw': methods['throw'] - }; - var iterable = {}; - iterable[Symbol.iterator] = function(){ return iterator; } - return iterable; -} - -function test() { - -var closed = false; -var iter = global.__createIterableObject([1, 2, 3], { - 'return': function(){ closed = true; return {}; } -}); -try { - new WeakSet(iter); -} catch(e){} -return closed; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_0_parameters.js b/implementation-contributed/javascriptcore/es6/arrow_functions_0_parameters.js deleted file mode 100644 index 854024f12d8..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_0_parameters.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return (() => 5)() === 5; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_1_parameter_no_brackets.js b/implementation-contributed/javascriptcore/es6/arrow_functions_1_parameter_no_brackets.js deleted file mode 100644 index 7c3b372b47c..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_1_parameter_no_brackets.js +++ /dev/null @@ -1,10 +0,0 @@ -function test() { - -var b = x => x + "foo"; -return (b("fee fie foe ") === "fee fie foe foo"); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_cant_be_bound_can_be_curried.js b/implementation-contributed/javascriptcore/es6/arrow_functions_cant_be_bound_can_be_curried.js deleted file mode 100644 index 20dffaea60f..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_cant_be_bound_can_be_curried.js +++ /dev/null @@ -1,11 +0,0 @@ -function test() { - -var d = { x : "bar", y : function() { return z => this.x + z; }}; -var e = { x : "baz" }; -return d.y().bind(e, "ley")() === "barley"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_correct_precedence.js b/implementation-contributed/javascriptcore/es6/arrow_functions_correct_precedence.js deleted file mode 100644 index 30f39031578..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_correct_precedence.js +++ /dev/null @@ -1,11 +0,0 @@ -function test() { - -return (() => { - try { Function("0 || () => 2")(); } catch(e) { return true; } -})(); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_arguments_binding.js b/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_arguments_binding.js deleted file mode 100644 index 4b4a3859551..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_arguments_binding.js +++ /dev/null @@ -1,10 +0,0 @@ -function test() { - -var f = (function() { return z => arguments[0]; }(5)); -return f(6) === 5; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_new.target_binding.js b/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_new.target_binding.js deleted file mode 100644 index 3a5c96f8bc9..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_new.target_binding.js +++ /dev/null @@ -1,12 +0,0 @@ -function test() { - -function C() { - return x => new.target; -} -return new C()() === C && C()() === undefined; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_super_binding.js b/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_super_binding.js deleted file mode 100644 index 07390258d04..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_super_binding.js +++ /dev/null @@ -1,20 +0,0 @@ -function test() { - -class B { - qux() { - return "quux"; - } -} -class C extends B { - baz() { - return x => super.qux(); - } -} -var arrow = new C().baz(); -return arrow() === "quux"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_this_binding.js b/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_this_binding.js deleted file mode 100644 index 2e8c08dacca..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_lexical_this_binding.js +++ /dev/null @@ -1,11 +0,0 @@ -function test() { - -var d = { x : "bar", y : function() { return z => this.x + z; }}.y(); -var e = { x : "baz", y : d }; -return d("ley") === "barley" && e.y("ley") === "barley"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_multiple_parameters.js b/implementation-contributed/javascriptcore/es6/arrow_functions_multiple_parameters.js deleted file mode 100644 index 56463fd374c..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_multiple_parameters.js +++ /dev/null @@ -1,10 +0,0 @@ -function test() { - -var c = (v, w, x, y, z) => "" + v + w + x + y + z; -return (c(6, 5, 4, 3, 2) === "65432"); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_no_line_break_between_params_and_code_=_code.js b/implementation-contributed/javascriptcore/es6/arrow_functions_no_line_break_between_params_and_code_=_code.js deleted file mode 100644 index 1bd89722d54..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_no_line_break_between_params_and_code_=_code.js +++ /dev/null @@ -1,11 +0,0 @@ -function test() { - -return (() => { - try { Function("x\n => 2")(); } catch(e) { return true; } -})(); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_no_prototype_property.js b/implementation-contributed/javascriptcore/es6/arrow_functions_no_prototype_property.js deleted file mode 100644 index 20e40e6cfce..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_no_prototype_property.js +++ /dev/null @@ -1,10 +0,0 @@ -function test() { - -var a = () => 5; -return !a.hasOwnProperty("prototype"); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/arrow_functions_this_unchanged_by_call_or_apply.js b/implementation-contributed/javascriptcore/es6/arrow_functions_this_unchanged_by_call_or_apply.js deleted file mode 100644 index a2b76d13375..00000000000 --- a/implementation-contributed/javascriptcore/es6/arrow_functions_this_unchanged_by_call_or_apply.js +++ /dev/null @@ -1,11 +0,0 @@ -function test() { - -var d = { x : "foo", y : function() { return () => this.x; }}; -var e = { x : "bar" }; -return d.y().call(e) === "foo" && d.y().apply(e) === "foo"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/const_temporal_dead_zone.js b/implementation-contributed/javascriptcore/es6/const_temporal_dead_zone.js deleted file mode 100644 index aa0037cbee2..00000000000 --- a/implementation-contributed/javascriptcore/es6/const_temporal_dead_zone.js +++ /dev/null @@ -1,13 +0,0 @@ -function test() { - -var passed = (function(){ try { qux; } catch(e) { return true; }}()); -function fn() { passed &= qux === 456; } -const qux = 456; -fn(); -return passed; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/const_temporal_dead_zone_strict_mode.js b/implementation-contributed/javascriptcore/es6/const_temporal_dead_zone_strict_mode.js deleted file mode 100644 index 12da3d084d8..00000000000 --- a/implementation-contributed/javascriptcore/es6/const_temporal_dead_zone_strict_mode.js +++ /dev/null @@ -1,14 +0,0 @@ -function test() { - -'use strict'; -var passed = (function(){ try { qux; } catch(e) { return true; }}()); -function fn() { passed &= qux === 456; } -const qux = 456; -fn(); -return passed; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/default_function_parameters_temporal_dead_zone.js b/implementation-contributed/javascriptcore/es6/default_function_parameters_temporal_dead_zone.js deleted file mode 100644 index ae97dd64027..00000000000 --- a/implementation-contributed/javascriptcore/es6/default_function_parameters_temporal_dead_zone.js +++ /dev/null @@ -1,19 +0,0 @@ -function test() { - -return (function(x = 1) { - try { - eval("(function(a=a){}())"); - return false; - } catch(e) {} - try { - eval("(function(a=b,b){}())"); - return false; - } catch(e) {} - return true; -}()); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/for..of_loops_iterator_closing_break.js b/implementation-contributed/javascriptcore/es6/for..of_loops_iterator_closing_break.js deleted file mode 100644 index 71fd8e4799f..00000000000 --- a/implementation-contributed/javascriptcore/es6/for..of_loops_iterator_closing_break.js +++ /dev/null @@ -1,34 +0,0 @@ -var global = this; - -function __createIterableObject(arr, methods) { - methods = methods || {}; - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return {}; - } - arr.length++; - var iterator = { - next: function() { - return { value: arr.shift(), done: arr.length <= 0 }; - }, - 'return': methods['return'], - 'throw': methods['throw'] - }; - var iterable = {}; - iterable[Symbol.iterator] = function(){ return iterator; } - return iterable; -} - -function test() { - -var closed = false; -var iter = __createIterableObject([1, 2, 3], { - 'return': function(){ closed = true; return {}; } -}); -for (var it of iter) break; -return closed; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/for..of_loops_iterator_closing_throw.js b/implementation-contributed/javascriptcore/es6/for..of_loops_iterator_closing_throw.js deleted file mode 100644 index 0937178b5a0..00000000000 --- a/implementation-contributed/javascriptcore/es6/for..of_loops_iterator_closing_throw.js +++ /dev/null @@ -1,36 +0,0 @@ -var global = this; - -function __createIterableObject(arr, methods) { - methods = methods || {}; - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return {}; - } - arr.length++; - var iterator = { - next: function() { - return { value: arr.shift(), done: arr.length <= 0 }; - }, - 'return': methods['return'], - 'throw': methods['throw'] - }; - var iterable = {}; - iterable[Symbol.iterator] = function(){ return iterator; } - return iterable; -} - -function test() { - -var closed = false; -var iter = __createIterableObject([1, 2, 3], { - 'return': function(){ closed = true; return {}; } -}); -try { - for (var it of iter) throw 0; -} catch(e){} -return closed; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/for..of_loops_with_arrays.js b/implementation-contributed/javascriptcore/es6/for..of_loops_with_arrays.js deleted file mode 100644 index 2a4b85218c8..00000000000 --- a/implementation-contributed/javascriptcore/es6/for..of_loops_with_arrays.js +++ /dev/null @@ -1,11 +0,0 @@ -function test() { - -var arr = [5]; -for (var item of arr) - return item === 5; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/for..of_loops_with_astral_plane_strings.js b/implementation-contributed/javascriptcore/es6/for..of_loops_with_astral_plane_strings.js deleted file mode 100644 index 78d4116048d..00000000000 --- a/implementation-contributed/javascriptcore/es6/for..of_loops_with_astral_plane_strings.js +++ /dev/null @@ -1,12 +0,0 @@ -function test() { - -var str = ""; -for (var item of "𠮷𠮶") - str += item + " "; -return str === "𠮷 𠮶 "; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/for..of_loops_with_generator_instances.js b/implementation-contributed/javascriptcore/es6/for..of_loops_with_generator_instances.js deleted file mode 100644 index 221784e4e3f..00000000000 --- a/implementation-contributed/javascriptcore/es6/for..of_loops_with_generator_instances.js +++ /dev/null @@ -1,14 +0,0 @@ -function test() { - -var result = ""; -var iterable = (function*(){ yield 1; yield 2; yield 3; }()); -for (var item of iterable) { - result += item; -} -return result === "123"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/for..of_loops_with_generic_iterables.js b/implementation-contributed/javascriptcore/es6/for..of_loops_with_generic_iterables.js deleted file mode 100644 index 3a940a3c346..00000000000 --- a/implementation-contributed/javascriptcore/es6/for..of_loops_with_generic_iterables.js +++ /dev/null @@ -1,34 +0,0 @@ -var global = this; - -function __createIterableObject(arr, methods) { - methods = methods || {}; - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return {}; - } - arr.length++; - var iterator = { - next: function() { - return { value: arr.shift(), done: arr.length <= 0 }; - }, - 'return': methods['return'], - 'throw': methods['throw'] - }; - var iterable = {}; - iterable[Symbol.iterator] = function(){ return iterator; } - return iterable; -} - -function test() { - -var result = ""; -var iterable = global.__createIterableObject([1, 2, 3]); -for (var item of iterable) { - result += item; -} -return result === "123"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/for..of_loops_with_instances_of_generic_iterables.js b/implementation-contributed/javascriptcore/es6/for..of_loops_with_instances_of_generic_iterables.js deleted file mode 100644 index 9fbe84a846e..00000000000 --- a/implementation-contributed/javascriptcore/es6/for..of_loops_with_instances_of_generic_iterables.js +++ /dev/null @@ -1,34 +0,0 @@ -var global = this; - -function __createIterableObject(arr, methods) { - methods = methods || {}; - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return {}; - } - arr.length++; - var iterator = { - next: function() { - return { value: arr.shift(), done: arr.length <= 0 }; - }, - 'return': methods['return'], - 'throw': methods['throw'] - }; - var iterable = {}; - iterable[Symbol.iterator] = function(){ return iterator; } - return iterable; -} - -function test() { - -var result = ""; -var iterable = global.__createIterableObject([1, 2, 3]); -for (var item of Object.create(iterable)) { - result += item; -} -return result === "123"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/for..of_loops_with_sparse_arrays.js b/implementation-contributed/javascriptcore/es6/for..of_loops_with_sparse_arrays.js deleted file mode 100644 index 13b80bedcb8..00000000000 --- a/implementation-contributed/javascriptcore/es6/for..of_loops_with_sparse_arrays.js +++ /dev/null @@ -1,13 +0,0 @@ -function test() { - -var arr = [,,]; -var count = 0; -for (var item of arr) - count += (item === undefined); -return count === 2; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/for..of_loops_with_strings.js b/implementation-contributed/javascriptcore/es6/for..of_loops_with_strings.js deleted file mode 100644 index e583f772f24..00000000000 --- a/implementation-contributed/javascriptcore/es6/for..of_loops_with_strings.js +++ /dev/null @@ -1,12 +0,0 @@ -function test() { - -var str = ""; -for (var item of "foo") - str += item; -return str === "foo"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/generators_correct_this_binding.js b/implementation-contributed/javascriptcore/es6/generators_correct_this_binding.js deleted file mode 100644 index d966ddd70a9..00000000000 --- a/implementation-contributed/javascriptcore/es6/generators_correct_this_binding.js +++ /dev/null @@ -1,19 +0,0 @@ -function test() { - -function * generator(){ - yield this.x; yield this.y; -}; -var iterator = { g: generator, x: 5, y: 6 }.g(); -var item = iterator.next(); -var passed = item.value === 5 && item.done === false; -item = iterator.next(); -passed &= item.value === 6 && item.done === false; -item = iterator.next(); -passed &= item.value === undefined && item.done === true; -return passed; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/generators_generator_function_expressions.js b/implementation-contributed/javascriptcore/es6/generators_generator_function_expressions.js deleted file mode 100644 index 7f61823ab4f..00000000000 --- a/implementation-contributed/javascriptcore/es6/generators_generator_function_expressions.js +++ /dev/null @@ -1,19 +0,0 @@ -function test() { - -var generator = function * (){ - yield 5; yield 6; -}; -var iterator = generator(); -var item = iterator.next(); -var passed = item.value === 5 && item.done === false; -item = iterator.next(); -passed &= item.value === 6 && item.done === false; -item = iterator.next(); -passed &= item.value === undefined && item.done === true; -return passed; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/generators_sending.js b/implementation-contributed/javascriptcore/es6/generators_sending.js deleted file mode 100644 index 4c993905bf9..00000000000 --- a/implementation-contributed/javascriptcore/es6/generators_sending.js +++ /dev/null @@ -1,17 +0,0 @@ -function test() { - -var sent; -function * generator(){ - sent = [yield 5, yield 6]; -}; -var iterator = generator(); -iterator.next(); -iterator.next("foo"); -iterator.next("bar"); -return sent[0] === "foo" && sent[1] === "bar"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/let_temporal_dead_zone.js b/implementation-contributed/javascriptcore/es6/let_temporal_dead_zone.js deleted file mode 100644 index 7a4ba345d8f..00000000000 --- a/implementation-contributed/javascriptcore/es6/let_temporal_dead_zone.js +++ /dev/null @@ -1,13 +0,0 @@ -function test() { - -var passed = (function(){ try { qux; } catch(e) { return true; }}()); -function fn() { passed &= qux === 456; } -let qux = 456; -fn(); -return passed; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/let_temporal_dead_zone_strict_mode.js b/implementation-contributed/javascriptcore/es6/let_temporal_dead_zone_strict_mode.js deleted file mode 100644 index 444cd67d89d..00000000000 --- a/implementation-contributed/javascriptcore/es6/let_temporal_dead_zone_strict_mode.js +++ /dev/null @@ -1,14 +0,0 @@ -function test() { - -'use strict'; -var passed = (function(){ try { qux; } catch(e) { return true; }}()); -function fn() { passed &= qux === 456; } -let qux = 456; -fn(); -return passed; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_Invalid_Date.js b/implementation-contributed/javascriptcore/es6/miscellaneous_Invalid_Date.js deleted file mode 100644 index 61d7c23aace..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_Invalid_Date.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return new Date(NaN) + "" === "Invalid Date"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_RegExp_constructor_can_alter_flags.js b/implementation-contributed/javascriptcore/es6/miscellaneous_RegExp_constructor_can_alter_flags.js deleted file mode 100644 index 56491322bcb..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_RegExp_constructor_can_alter_flags.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return new RegExp(/./im, "g").global === true; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_String.prototype_case_methods_Unicode_support.js b/implementation-contributed/javascriptcore/es6/miscellaneous_String.prototype_case_methods_Unicode_support.js deleted file mode 100644 index 66a6e5c1f6e..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_String.prototype_case_methods_Unicode_support.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -return "𐐘".toLowerCase() === "𐑀" && "𐑀".toUpperCase() === "𐐘"; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_accessors_arent_constructors.js b/implementation-contributed/javascriptcore/es6/miscellaneous_accessors_arent_constructors.js deleted file mode 100644 index b6966fea64d..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_accessors_arent_constructors.js +++ /dev/null @@ -1,13 +0,0 @@ -function test() { - -try { - new (Object.getOwnPropertyDescriptor({get a(){}}, 'a')).get; -} catch(e) { - return true; -} - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_built-in_prototypes_are_not_instances.js b/implementation-contributed/javascriptcore/es6/miscellaneous_built-in_prototypes_are_not_instances.js deleted file mode 100644 index 259d04974ab..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_built-in_prototypes_are_not_instances.js +++ /dev/null @@ -1,22 +0,0 @@ -function test() { - -try { - RegExp.prototype.exec(); return false; -} catch(e) {} -try { - Date.prototype.valueOf(); return false; -} catch(e) {} - -if (![Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError].every(function (E) { - return Object.prototype.toString.call(E.prototype) === '[object Object]'; -})) { - return false; -} - -return true; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_duplicate_property_names_in_strict_mode.js b/implementation-contributed/javascriptcore/es6/miscellaneous_duplicate_property_names_in_strict_mode.js deleted file mode 100644 index 85da5bb1853..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_duplicate_property_names_in_strict_mode.js +++ /dev/null @@ -1,10 +0,0 @@ -function test() { - -'use strict'; -return this === undefined && ({ a:1, a:1 }).a === 1; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_function_length_is_configurable.js b/implementation-contributed/javascriptcore/es6/miscellaneous_function_length_is_configurable.js deleted file mode 100644 index 88abf1bb20f..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_function_length_is_configurable.js +++ /dev/null @@ -1,17 +0,0 @@ -function test() { - -var fn = function(a, b) {}; - -var desc = Object.getOwnPropertyDescriptor(fn, "length"); -if (desc.configurable) { - Object.defineProperty(fn, "length", { value: 1 }); - return fn.length === 1; -} - -return false; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_no_assignments_allowed_in_for-in_head.js b/implementation-contributed/javascriptcore/es6/miscellaneous_no_assignments_allowed_in_for-in_head.js deleted file mode 100644 index f34ca373bac..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_no_assignments_allowed_in_for-in_head.js +++ /dev/null @@ -1,14 +0,0 @@ -function test() { - -try { - eval('for (var i = 0 in {}) {}'); -} -catch(e) { - return true; -} - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js b/implementation-contributed/javascriptcore/es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js deleted file mode 100644 index f45f05d2012..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js +++ /dev/null @@ -1,14 +0,0 @@ -function test() { - -var \u0061; -try { - eval('var v\\u0061r'); -} catch(e) { - return true; -} - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_no_semicolon_needed_after_do-while.js b/implementation-contributed/javascriptcore/es6/miscellaneous_no_semicolon_needed_after_do-while.js deleted file mode 100644 index 5a0b6ab5c54..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_no_semicolon_needed_after_do-while.js +++ /dev/null @@ -1,9 +0,0 @@ -function test() { - -do {} while (false) return true; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Boolean_is_subclassable.js b/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Boolean_is_subclassable.js deleted file mode 100644 index 2fcfdaf0cb5..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Boolean_is_subclassable.js +++ /dev/null @@ -1,12 +0,0 @@ -function test() { - -class C extends Boolean {} -var c = new C(true); -return c instanceof Boolean - && c == true; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Map_is_subclassable.js b/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Map_is_subclassable.js deleted file mode 100644 index 0a0c68c4571..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Map_is_subclassable.js +++ /dev/null @@ -1,15 +0,0 @@ -function test() { - -var key = {}; -class M extends Map {} -var map = new M(); - -map.set(key, 123); - -return map.has(key) && map.get(key) === 123; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Number_is_subclassable.js b/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Number_is_subclassable.js deleted file mode 100644 index f610a8eddc1..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Number_is_subclassable.js +++ /dev/null @@ -1,12 +0,0 @@ -function test() { - -class C extends Number {} -var c = new C(6); -return c instanceof Number - && +c === 6; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Set_is_subclassable.js b/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Set_is_subclassable.js deleted file mode 100644 index 36e235b7b1f..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_Set_is_subclassable.js +++ /dev/null @@ -1,16 +0,0 @@ -function test() { - -var obj = {}; -class S extends Set {} -var set = new S(); - -set.add(123); -set.add(123); - -return set.has(123); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_String_is_subclassable.js b/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_String_is_subclassable.js deleted file mode 100644 index 9ad8354312d..00000000000 --- a/implementation-contributed/javascriptcore/es6/miscellaneous_subclassables_String_is_subclassable.js +++ /dev/null @@ -1,14 +0,0 @@ -function test() { - -class C extends String {} -var c = new C("golly"); -return c instanceof String - && c + '' === "golly" - && c[0] === "g" - && c.length === 5; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_arrow_functions.js b/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_arrow_functions.js deleted file mode 100644 index 984216b51aa..00000000000 --- a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_arrow_functions.js +++ /dev/null @@ -1,23 +0,0 @@ -// Reviewed -function test() { - -function correctProtoBound(proto) { - var f = ()=>5; - if (Object.setPrototypeOf) { - Object.setPrototypeOf(f, proto); - } - else { - f.__proto__ = proto; - } - var boundF = Function.prototype.bind.call(f, null); - return Object.getPrototypeOf(boundF) === proto; -} -return correctProtoBound(Function.prototype) - && correctProtoBound({}) - && correctProtoBound(null); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_basic_functions.js b/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_basic_functions.js deleted file mode 100644 index 405f1fdee21..00000000000 --- a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_basic_functions.js +++ /dev/null @@ -1,23 +0,0 @@ -// Reviewed -function test() { - -function correctProtoBound(proto) { - var f = function(){}; - if (Object.setPrototypeOf) { - Object.setPrototypeOf(f, proto); - } - else { - f.__proto__ = proto; - } - var boundF = Function.prototype.bind.call(f, null); - return Object.getPrototypeOf(boundF) === proto; -} -return correctProtoBound(Function.prototype) - && correctProtoBound({}) - && correctProtoBound(null); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_classes.js b/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_classes.js deleted file mode 100644 index c56b968b323..00000000000 --- a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_classes.js +++ /dev/null @@ -1,23 +0,0 @@ -// Reviewed -function test() { - -function correctProtoBound(proto) { - class C {} - if (Object.setPrototypeOf) { - Object.setPrototypeOf(C, proto); - } - else { - C.__proto__ = proto; - } - var boundF = Function.prototype.bind.call(C, null); - return Object.getPrototypeOf(boundF) === proto; -} -return correctProtoBound(Function.prototype) - && correctProtoBound({}) - && correctProtoBound(null); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_generator_functions.js b/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_generator_functions.js deleted file mode 100644 index bb0f3cfabe3..00000000000 --- a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_generator_functions.js +++ /dev/null @@ -1,23 +0,0 @@ -// Reviewed -function test() { - -function correctProtoBound(proto) { - var f = function*(){}; - if (Object.setPrototypeOf) { - Object.setPrototypeOf(f, proto); - } - else { - f.__proto__ = proto; - } - var boundF = Function.prototype.bind.call(f, null); - return Object.getPrototypeOf(boundF) === proto; -} -return correctProtoBound(Function.prototype) - && correctProtoBound({}) - && correctProtoBound(null); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_subclasses.js b/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_subclasses.js deleted file mode 100644 index 883466d335f..00000000000 --- a/implementation-contributed/javascriptcore/es6/prototype_of_bound_functions_subclasses.js +++ /dev/null @@ -1,21 +0,0 @@ -// Reviewed -function test() { - -function correctProtoBound(superclass) { - class C extends superclass { - constructor() { - return Object.create(null); - } - } - var boundF = Function.prototype.bind.call(C, null); - return Object.getPrototypeOf(boundF) === Object.getPrototypeOf(C); -} -return correctProtoBound(function(){}) - && correctProtoBound(Array) - && correctProtoBound(null); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/rest_parameters_cant_be_used_in_setters.js b/implementation-contributed/javascriptcore/es6/rest_parameters_cant_be_used_in_setters.js deleted file mode 100644 index ef420f74244..00000000000 --- a/implementation-contributed/javascriptcore/es6/rest_parameters_cant_be_used_in_setters.js +++ /dev/null @@ -1,16 +0,0 @@ -// Reviewed -function test() { - -return (function (...args) { - try { - eval("({set e(...args){}})"); - } catch(e) { - return true; - } -}()); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/rest_parameters_new_Function_support.js b/implementation-contributed/javascriptcore/es6/rest_parameters_new_Function_support.js deleted file mode 100644 index 0aaaa2e6991..00000000000 --- a/implementation-contributed/javascriptcore/es6/rest_parameters_new_Function_support.js +++ /dev/null @@ -1,12 +0,0 @@ -// Reviewed -function test() { - -return new Function("a", "...b", - "return b instanceof Array && a+b === 'foobar,baz';" -)('foo','bar','baz'); - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/es6/well-known_symbols_Symbol.toPrimitive.js b/implementation-contributed/javascriptcore/es6/well-known_symbols_Symbol.toPrimitive.js deleted file mode 100644 index 1dc23130484..00000000000 --- a/implementation-contributed/javascriptcore/es6/well-known_symbols_Symbol.toPrimitive.js +++ /dev/null @@ -1,19 +0,0 @@ -// Reviewed -function test() { - -var a = {}, b = {}, c = {}; -var passed = 0; -a[Symbol.toPrimitive] = function(hint) { passed += hint === "number"; return 0; }; -b[Symbol.toPrimitive] = function(hint) { passed += hint === "string"; return 0; }; -c[Symbol.toPrimitive] = function(hint) { passed += hint === "default"; return 0; }; - -a >= 0; -b in {}; -c == 0; -return passed === 3; - -} - -if (!test()) - throw new Error("Test failed"); - diff --git a/implementation-contributed/javascriptcore/modules/aliased-names.js b/implementation-contributed/javascriptcore/modules/aliased-names.js deleted file mode 100644 index 4c87965495c..00000000000 --- a/implementation-contributed/javascriptcore/modules/aliased-names.js +++ /dev/null @@ -1,8 +0,0 @@ -import { a, b, change } from 'aliased-names/main.js' -import { shouldBe, shouldThrow } from "./resources/assert.js"; - -shouldBe(a, 42); -shouldBe(b, 42); -change(400); -shouldBe(a, 400); -shouldBe(b, 400); diff --git a/implementation-contributed/javascriptcore/modules/aliased-names/main.js b/implementation-contributed/javascriptcore/modules/aliased-names/main.js deleted file mode 100644 index 3033cf9daee..00000000000 --- a/implementation-contributed/javascriptcore/modules/aliased-names/main.js +++ /dev/null @@ -1,10 +0,0 @@ -var a = 42; - -function change(value) -{ - a = value; -} - -export { a } -export { a as b } -export { change } diff --git a/implementation-contributed/javascriptcore/modules/aliasing.js b/implementation-contributed/javascriptcore/modules/aliasing.js deleted file mode 100644 index cf5e3eee479..00000000000 --- a/implementation-contributed/javascriptcore/modules/aliasing.js +++ /dev/null @@ -1,18 +0,0 @@ -import { Cocoa as Drink, changeCocoa, SubDrink, changeCappuccino } from "./aliasing/drink.js" -import { shouldBe, shouldThrow } from "./resources/assert.js"; - -shouldBe(Drink, "Cocoa"); -shouldBe(SubDrink, "Cappuccino"); -shouldThrow(() => { - Cocoa -}, `ReferenceError: Can't find variable: Cocoa`); - -shouldThrow(() => { - Cappuccino -}, `ReferenceError: Can't find variable: Cappuccino`); - -changeCocoa("Mocha"); -shouldBe(Drink, "Mocha"); - -changeCappuccino("Matcha"); -shouldBe(SubDrink, "Matcha"); diff --git a/implementation-contributed/javascriptcore/modules/aliasing/drink-2.js b/implementation-contributed/javascriptcore/modules/aliasing/drink-2.js deleted file mode 100644 index 590ac8bfd06..00000000000 --- a/implementation-contributed/javascriptcore/modules/aliasing/drink-2.js +++ /dev/null @@ -1,5 +0,0 @@ -export let Cappuccino = "Cappuccino" - -export function changeCappuccino(value) { - Cappuccino = value; -} diff --git a/implementation-contributed/javascriptcore/modules/aliasing/drink.js b/implementation-contributed/javascriptcore/modules/aliasing/drink.js deleted file mode 100644 index 1da84a0f8f0..00000000000 --- a/implementation-contributed/javascriptcore/modules/aliasing/drink.js +++ /dev/null @@ -1,7 +0,0 @@ -export let Cocoa = "Cocoa"; -export function changeCocoa(value) { - Cocoa = value; -} - -import { Cappuccino as SubDrink, changeCappuccino } from "drink-2.js" -export { SubDrink, changeCappuccino } diff --git a/implementation-contributed/javascriptcore/modules/async-function-export.js b/implementation-contributed/javascriptcore/modules/async-function-export.js deleted file mode 100644 index e00d3b11d5f..00000000000 --- a/implementation-contributed/javascriptcore/modules/async-function-export.js +++ /dev/null @@ -1,5 +0,0 @@ -function f() -{ -} - -export async function f() { } diff --git a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous.js b/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous.js deleted file mode 100644 index 42513ed170b..00000000000 --- a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous.js +++ /dev/null @@ -1,5 +0,0 @@ -// +----> (D) ------+ -// | | -// | v -// @-> (A) *----+----> (B) ---> [C] -import { A } from "caching-should-not-make-ambiguous/main.js" diff --git a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/A.js b/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/A.js deleted file mode 100644 index a366e37c527..00000000000 --- a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/A.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./D.js" -export * from "./B.js" diff --git a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/B.js b/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/B.js deleted file mode 100644 index 672bccf05b3..00000000000 --- a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/B.js +++ /dev/null @@ -1 +0,0 @@ -export { A } from "./C.js" diff --git a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/C.js b/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/C.js deleted file mode 100644 index d308e2cae93..00000000000 --- a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/C.js +++ /dev/null @@ -1 +0,0 @@ -export let A = 42; diff --git a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/D.js b/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/D.js deleted file mode 100644 index 672bccf05b3..00000000000 --- a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/D.js +++ /dev/null @@ -1 +0,0 @@ -export { A } from "./C.js" diff --git a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/main.js b/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/main.js deleted file mode 100644 index e90b535f875..00000000000 --- a/implementation-contributed/javascriptcore/modules/caching-should-not-make-ambiguous/main.js +++ /dev/null @@ -1 +0,0 @@ -export { A } from "./A.js" diff --git a/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz.js b/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz.js deleted file mode 100644 index 12bad60a5ab..00000000000 --- a/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz.js +++ /dev/null @@ -1,7 +0,0 @@ -import { Cocoa, Cappuccino, Matcha } from "./cyclic-may-produce-tdz/2.js" -import { shouldBe } from "./resources/assert.js"; - -// All things are already set. -shouldBe(Cocoa, "Cocoa"); -shouldBe(Cappuccino, "Cappuccino"); -shouldBe(Matcha, "Matcha"); diff --git a/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz/1.js b/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz/1.js deleted file mode 100644 index 40c26f61bb7..00000000000 --- a/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz/1.js +++ /dev/null @@ -1,12 +0,0 @@ -import { Cappuccino, Matcha } from "./2.js" -import { shouldThrow, shouldBe } from "../resources/assert.js"; - -export let Cocoa = "Cocoa"; - -// module "2" is not loaded yet, TDZ. -shouldThrow(() => { - Cappuccino; -}, `ReferenceError: Cannot access uninitialized variable.`); - -// But "Matcha" is variable (not lexical variable). It is already initialized as undefined. -shouldBe(Matcha, undefined); diff --git a/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz/2.js b/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz/2.js deleted file mode 100644 index 20f1639b5ba..00000000000 --- a/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz/2.js +++ /dev/null @@ -1,15 +0,0 @@ -import { Cocoa } from "./1.js" -import { shouldBe } from "../resources/assert.js"; - -export let Cappuccino = "Cappuccino"; - -export var Matcha = "Matcha"; - -// 1 is already loaded. -shouldBe(Cocoa, "Cocoa"); - -shouldBe(Cappuccino, "Cappuccino"); -shouldBe(Matcha, "Matcha"); - -// Indirectly export "Cocoa" -export { Cocoa }; diff --git a/implementation-contributed/javascriptcore/modules/default-error/main.js b/implementation-contributed/javascriptcore/modules/default-error/main.js deleted file mode 100644 index daab1359183..00000000000 --- a/implementation-contributed/javascriptcore/modules/default-error/main.js +++ /dev/null @@ -1 +0,0 @@ -import "A"; diff --git a/implementation-contributed/javascriptcore/modules/default-value-case-should-be-copied.js b/implementation-contributed/javascriptcore/modules/default-value-case-should-be-copied.js deleted file mode 100644 index 65c50e5b9de..00000000000 --- a/implementation-contributed/javascriptcore/modules/default-value-case-should-be-copied.js +++ /dev/null @@ -1,11 +0,0 @@ -import * as namespace from "./default-value-case-should-be-copied/module.js" -import value from "./default-value-case-should-be-copied/module.js" -import { shouldBe } from "./resources/assert.js"; - -shouldBe(value, 42); -shouldBe(namespace.default, 42); - -namespace.changeValue(5000); - -shouldBe(value, 42); -shouldBe(namespace.default, 42); diff --git a/implementation-contributed/javascriptcore/modules/default-value-case-should-be-copied/module.js b/implementation-contributed/javascriptcore/modules/default-value-case-should-be-copied/module.js deleted file mode 100644 index fcee3383db7..00000000000 --- a/implementation-contributed/javascriptcore/modules/default-value-case-should-be-copied/module.js +++ /dev/null @@ -1,7 +0,0 @@ -let value = 42; - -export default value; - -export function changeValue(v) { - value = v; -} diff --git a/implementation-contributed/javascriptcore/modules/defaults.js b/implementation-contributed/javascriptcore/modules/defaults.js deleted file mode 100644 index 6bf727d9ea5..00000000000 --- a/implementation-contributed/javascriptcore/modules/defaults.js +++ /dev/null @@ -1,10 +0,0 @@ -import Cocoa from "./defaults/Cocoa.js" -import { default as Cappuccino } from "./defaults/Cappuccino.js" -import C2 from "./defaults/Cappuccino.js" -import Matcha from "./defaults/Matcha.js" -import { shouldBe } from "./resources/assert.js"; - -shouldBe(new Cocoa().taste, 'awesome'); -shouldBe(Cappuccino, 'Cappuccino'); -shouldBe(C2 === Cappuccino, true); -shouldBe(Matcha, 'Matcha'); diff --git a/implementation-contributed/javascriptcore/modules/defaults/Cappuccino.js b/implementation-contributed/javascriptcore/modules/defaults/Cappuccino.js deleted file mode 100644 index de92671e000..00000000000 --- a/implementation-contributed/javascriptcore/modules/defaults/Cappuccino.js +++ /dev/null @@ -1,4 +0,0 @@ - -var Cappuccino = 'Cappuccino'; - -export { Cappuccino as default } diff --git a/implementation-contributed/javascriptcore/modules/defaults/Cocoa.js b/implementation-contributed/javascriptcore/modules/defaults/Cocoa.js deleted file mode 100644 index f94a96c1f52..00000000000 --- a/implementation-contributed/javascriptcore/modules/defaults/Cocoa.js +++ /dev/null @@ -1,5 +0,0 @@ -export default class Cocoa { - constructor() { - this.taste = 'awesome'; - } -} diff --git a/implementation-contributed/javascriptcore/modules/defaults/Matcha.js b/implementation-contributed/javascriptcore/modules/defaults/Matcha.js deleted file mode 100644 index a26f2aa1cf8..00000000000 --- a/implementation-contributed/javascriptcore/modules/defaults/Matcha.js +++ /dev/null @@ -1 +0,0 @@ -export default 'Matcha'; diff --git a/implementation-contributed/javascriptcore/modules/destructuring-export.js b/implementation-contributed/javascriptcore/modules/destructuring-export.js deleted file mode 100644 index 161d6310fc1..00000000000 --- a/implementation-contributed/javascriptcore/modules/destructuring-export.js +++ /dev/null @@ -1,10 +0,0 @@ -import * as namespace from "./destructuring-export/main.js" -import { array } from "./destructuring-export/array.js" -import { shouldBe } from "./resources/assert.js"; - -shouldBe(JSON.stringify(Object.getOwnPropertyNames(namespace)), `["Cappuccino","Cocoa","Matcha"]`); -shouldBe(namespace.Cocoa, 'Cocoa'); -shouldBe(namespace.Cappuccino, 'Cappuccino'); -shouldBe(namespace.Matcha, 'Matcha'); - -shouldBe(JSON.stringify(array), `[1,2,3,4,5,6,7,8,9]`); diff --git a/implementation-contributed/javascriptcore/modules/destructuring-export/array.js b/implementation-contributed/javascriptcore/modules/destructuring-export/array.js deleted file mode 100644 index 509d98b35de..00000000000 --- a/implementation-contributed/javascriptcore/modules/destructuring-export/array.js +++ /dev/null @@ -1,3 +0,0 @@ -var value = [1,2,3,4,5,6,7,8,9]; - -export const [...array] = value.values(); diff --git a/implementation-contributed/javascriptcore/modules/destructuring-export/main.js b/implementation-contributed/javascriptcore/modules/destructuring-export/main.js deleted file mode 100644 index f2d94795b7b..00000000000 --- a/implementation-contributed/javascriptcore/modules/destructuring-export/main.js +++ /dev/null @@ -1,16 +0,0 @@ - -const drinks = { - Cocoa: 'Cocoa', - inner: { - current: [ 'Matcha' ] - }, - hello: 'Cappuccino' -}; - -export const { - Cocoa, - inner: { - current: [ Matcha ] - }, - hello: Cappuccino -} = drinks; diff --git a/implementation-contributed/javascriptcore/modules/different-view.js b/implementation-contributed/javascriptcore/modules/different-view.js deleted file mode 100644 index c38b52ba218..00000000000 --- a/implementation-contributed/javascriptcore/modules/different-view.js +++ /dev/null @@ -1,5 +0,0 @@ -import { shouldBe } from "./resources/assert.js" - -import('./different-view/main.js').then($vm.abort, function (error) { - shouldBe(String(error), `SyntaxError: Importing binding name 'A' cannot be resolved due to ambiguous multiple bindings.`); -}).catch($vm.abort); diff --git a/implementation-contributed/javascriptcore/modules/different-view/A.js b/implementation-contributed/javascriptcore/modules/different-view/A.js deleted file mode 100644 index 3fdbb604d2b..00000000000 --- a/implementation-contributed/javascriptcore/modules/different-view/A.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./B.js"; -export * from "./E.js"; diff --git a/implementation-contributed/javascriptcore/modules/different-view/B.js b/implementation-contributed/javascriptcore/modules/different-view/B.js deleted file mode 100644 index 386dd71ee66..00000000000 --- a/implementation-contributed/javascriptcore/modules/different-view/B.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./C.js" -export * from "./D.js" diff --git a/implementation-contributed/javascriptcore/modules/different-view/C.js b/implementation-contributed/javascriptcore/modules/different-view/C.js deleted file mode 100644 index ce80935d6e8..00000000000 --- a/implementation-contributed/javascriptcore/modules/different-view/C.js +++ /dev/null @@ -1 +0,0 @@ -export * from "./A.js" diff --git a/implementation-contributed/javascriptcore/modules/different-view/D.js b/implementation-contributed/javascriptcore/modules/different-view/D.js deleted file mode 100644 index d308e2cae93..00000000000 --- a/implementation-contributed/javascriptcore/modules/different-view/D.js +++ /dev/null @@ -1 +0,0 @@ -export let A = 42; diff --git a/implementation-contributed/javascriptcore/modules/different-view/E.js b/implementation-contributed/javascriptcore/modules/different-view/E.js deleted file mode 100644 index 210cb0e6128..00000000000 --- a/implementation-contributed/javascriptcore/modules/different-view/E.js +++ /dev/null @@ -1 +0,0 @@ -export let A = 50; diff --git a/implementation-contributed/javascriptcore/modules/different-view/main.js b/implementation-contributed/javascriptcore/modules/different-view/main.js deleted file mode 100644 index c24f972f63e..00000000000 --- a/implementation-contributed/javascriptcore/modules/different-view/main.js +++ /dev/null @@ -1 +0,0 @@ -import { A } from "./A.js" diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic.js deleted file mode 100644 index fe529dd6118..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic.js +++ /dev/null @@ -1,5 +0,0 @@ -import "./execution-order-cyclic/11.js" - -var global = (Function("return this"))(); -if (global.count !== 11) - throw new Error(`bad value ${global.count}`); diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/1.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/1.js deleted file mode 100644 index 790fd8e3fb8..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/1.js +++ /dev/null @@ -1,5 +0,0 @@ -import "./11.js" -var global = (Function("return this"))(); -if (typeof global.count !== 'undefined') - throw new Error(`bad value ${global.count}`); -global.count = 1; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/10.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/10.js deleted file mode 100644 index 9dce5d3b9a6..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/10.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./11.js" -import "./9.js" - -var global = (Function("return this"))(); -if (global.count !== 9) - throw new Error(`bad value ${global.count}`); -global.count = 10; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/11.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/11.js deleted file mode 100644 index 20f3cedae18..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/11.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./10.js" -import "./4.js" - -var global = (Function("return this"))(); -if (global.count !== 10) - throw new Error(`bad value ${global.count}`); -global.count = 11; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/2.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/2.js deleted file mode 100644 index 7868e6f6af6..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/2.js +++ /dev/null @@ -1,8 +0,0 @@ -import "./11.js" -import "./9.js" -import "./5.js" - -var global = (Function("return this"))(); -if (global.count !== 1) - throw new Error(`bad value ${global.count}`); -global.count = 2; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/3.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/3.js deleted file mode 100644 index 73c105403e8..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/3.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./1.js" -import "./2.js" - -var global = (Function("return this"))(); -if (global.count !== 2) - throw new Error(`bad value ${global.count}`); -global.count = 3; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/4.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/4.js deleted file mode 100644 index 5fd1a891715..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/4.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./2.js" - -var global = (Function("return this"))(); -if (global.count !== 3) - throw new Error(`bad value ${global.count}`); -global.count = 4; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/5.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/5.js deleted file mode 100644 index a1deef92d12..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/5.js +++ /dev/null @@ -1,7 +0,0 @@ -import "3.js" -import "4.js" - -var global = (Function("return this"))(); -if (global.count !== 4) - throw new Error(`bad value ${global.count}`); -global.count = 5; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/6.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/6.js deleted file mode 100644 index b05c59317bf..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/6.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./5.js" -import "./9.js" - -var global = (Function("return this"))(); -if (global.count !== 5) - throw new Error(`bad value ${global.count}`); -global.count = 6; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/7.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/7.js deleted file mode 100644 index bae6c0599a5..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/7.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./6.js"; -import "./9.js"; - -var global = (Function("return this"))(); -if (global.count !== 6) - throw new Error(`bad value ${global.count}`); -global.count = 7; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/8.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/8.js deleted file mode 100644 index a3b0da5dfb2..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/8.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./7.js" - -var global = (Function("return this"))(); -if (global.count !== 7) - throw new Error(`bad value ${global.count}`); -global.count = 8; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/9.js b/implementation-contributed/javascriptcore/modules/execution-order-cyclic/9.js deleted file mode 100644 index 77ecdc9e232..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-cyclic/9.js +++ /dev/null @@ -1,8 +0,0 @@ -import "./11.js"; -import "./8.js"; -import "./6.js"; - -var global = (Function("return this"))(); -if (global.count !== 8) - throw new Error(`bad value ${global.count}`); -global.count = 9; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag.js b/implementation-contributed/javascriptcore/modules/execution-order-dag.js deleted file mode 100644 index 7e7ac7ff9f2..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag.js +++ /dev/null @@ -1,7 +0,0 @@ -// This tests the DAG. -import "./execution-order-dag/9.js" -import "./execution-order-dag/10.js" - -var global = (Function("return this"))(); -if (global.count !== 10) - throw new Error(`bad value ${global.count}`); diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/1.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/1.js deleted file mode 100644 index 4b1c3cc5d0d..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/1.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (typeof global.count !== 'undefined') - throw new Error(`bad value ${global.count}`); -global.count = 1; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/10.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/10.js deleted file mode 100644 index 128049de6ed..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/10.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./8.js" -import "./7.js" - -var global = (Function("return this"))(); -if (global.count !== 9) - throw new Error(`bad value ${global.count}`); -global.count = 10; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/2.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/2.js deleted file mode 100644 index cf53bd85076..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/2.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./1.js"; - -var global = (Function("return this"))(); -if (global.count !== 1) - throw new Error(`bad value ${global.count}`); -global.count = 2; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/3.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/3.js deleted file mode 100644 index b25eb4868ae..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/3.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./2.js"; - -var global = (Function("return this"))(); -if (global.count !== 2) - throw new Error(`bad value ${global.count}`); -global.count = 3; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/4.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/4.js deleted file mode 100644 index 9bdae49d9d0..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/4.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./1.js" - -var global = (Function("return this"))(); -if (global.count !== 3) - throw new Error(`bad value ${global.count}`); -global.count = 4; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/5.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/5.js deleted file mode 100644 index a33b63cf54c..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/5.js +++ /dev/null @@ -1,7 +0,0 @@ -import "4.js" -import "1.js" - -var global = (Function("return this"))(); -if (global.count !== 4) - throw new Error(`bad value ${global.count}`); -global.count = 5; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/6.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/6.js deleted file mode 100644 index 8613e712b87..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/6.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./5.js" - -var global = (Function("return this"))(); -if (global.count !== 5) - throw new Error(`bad value ${global.count}`); -global.count = 6; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/7.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/7.js deleted file mode 100644 index 2b8e9a063f4..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/7.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./6.js"; - -var global = (Function("return this"))(); -if (global.count !== 6) - throw new Error(`bad value ${global.count}`); -global.count = 7; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/8.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/8.js deleted file mode 100644 index b3e3b5f4992..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/8.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./3.js" -import "./7.js"; - -var global = (Function("return this"))(); -if (global.count !== 7) - throw new Error(`bad value ${global.count}`); -global.count = 8; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-dag/9.js b/implementation-contributed/javascriptcore/modules/execution-order-dag/9.js deleted file mode 100644 index 232e425a22f..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-dag/9.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./8.js"; - -var global = (Function("return this"))(); -if (global.count !== 8) - throw new Error(`bad value ${global.count}`); -global.count = 9; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-depth.js b/implementation-contributed/javascriptcore/modules/execution-order-depth.js deleted file mode 100644 index 82e89fd8b4c..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-depth.js +++ /dev/null @@ -1,5 +0,0 @@ -import "./execution-order-depth/3.js" - -var global = (Function("return this"))(); -if (global.count !== 3) - throw new Error(`bad value ${global.count}`); diff --git a/implementation-contributed/javascriptcore/modules/execution-order-depth/1.js b/implementation-contributed/javascriptcore/modules/execution-order-depth/1.js deleted file mode 100644 index 4b1c3cc5d0d..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-depth/1.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (typeof global.count !== 'undefined') - throw new Error(`bad value ${global.count}`); -global.count = 1; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-depth/2.js b/implementation-contributed/javascriptcore/modules/execution-order-depth/2.js deleted file mode 100644 index cf53bd85076..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-depth/2.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./1.js"; - -var global = (Function("return this"))(); -if (global.count !== 1) - throw new Error(`bad value ${global.count}`); -global.count = 2; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-depth/3.js b/implementation-contributed/javascriptcore/modules/execution-order-depth/3.js deleted file mode 100644 index b25eb4868ae..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-depth/3.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./2.js"; - -var global = (Function("return this"))(); -if (global.count !== 2) - throw new Error(`bad value ${global.count}`); -global.count = 3; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-self.js b/implementation-contributed/javascriptcore/modules/execution-order-self.js deleted file mode 100644 index 665d903d058..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-self.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./execution-order-self.js" - -var global = (Function("return this"))(); -if (typeof global.count !== 'undefined') - throw new Error(`bad value ${global.count}`); -global.count = 1; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-sibling.js b/implementation-contributed/javascriptcore/modules/execution-order-sibling.js deleted file mode 100644 index 952edb1054a..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-sibling.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./execution-order-sibling/1.js" -import "./execution-order-sibling/2.js" -import "./execution-order-sibling/3.js" - -var global = (Function("return this"))(); -if (global.count !== 3) - throw new Error(`bad value ${global.count}`); diff --git a/implementation-contributed/javascriptcore/modules/execution-order-sibling/1.js b/implementation-contributed/javascriptcore/modules/execution-order-sibling/1.js deleted file mode 100644 index 4b1c3cc5d0d..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-sibling/1.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (typeof global.count !== 'undefined') - throw new Error(`bad value ${global.count}`); -global.count = 1; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-sibling/2.js b/implementation-contributed/javascriptcore/modules/execution-order-sibling/2.js deleted file mode 100644 index dece6619646..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-sibling/2.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (global.count !== 1) - throw new Error(`bad value ${global.count}`); -global.count = 2; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-sibling/3.js b/implementation-contributed/javascriptcore/modules/execution-order-sibling/3.js deleted file mode 100644 index 4500c5b4e12..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-sibling/3.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (global.count !== 2) - throw new Error(`bad value ${global.count}`); -global.count = 3; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree.js b/implementation-contributed/javascriptcore/modules/execution-order-tree.js deleted file mode 100644 index da8ae590af2..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./execution-order-tree/5.js" -import "./execution-order-tree/7.js" -import "./execution-order-tree/11.js" - -var global = (Function("return this"))(); -if (global.count !== 11) - throw new Error(`bad value ${global.count}`); diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/1.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/1.js deleted file mode 100644 index 4b1c3cc5d0d..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/1.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (typeof global.count !== 'undefined') - throw new Error(`bad value ${global.count}`); -global.count = 1; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/10.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/10.js deleted file mode 100644 index e96c324d7b1..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/10.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (global.count !== 9) - throw new Error(`bad value ${global.count}`); -global.count = 10; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/11.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/11.js deleted file mode 100644 index 84bb2533f25..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/11.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./9.js"; -import "./10.js"; - -var global = (Function("return this"))(); -if (global.count !== 10) - throw new Error(`bad value ${global.count}`); -global.count = 11; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/2.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/2.js deleted file mode 100644 index cf53bd85076..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/2.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./1.js"; - -var global = (Function("return this"))(); -if (global.count !== 1) - throw new Error(`bad value ${global.count}`); -global.count = 2; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/3.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/3.js deleted file mode 100644 index e079c612aca..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/3.js +++ /dev/null @@ -1,7 +0,0 @@ -import "./1.js"; -import "./2.js"; - -var global = (Function("return this"))(); -if (global.count !== 2) - throw new Error(`bad value ${global.count}`); -global.count = 3; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/4.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/4.js deleted file mode 100644 index a76becb6059..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/4.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (global.count !== 3) - throw new Error(`bad value ${global.count}`); -global.count = 4; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/5.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/5.js deleted file mode 100644 index a1deef92d12..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/5.js +++ /dev/null @@ -1,7 +0,0 @@ -import "3.js" -import "4.js" - -var global = (Function("return this"))(); -if (global.count !== 4) - throw new Error(`bad value ${global.count}`); -global.count = 5; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/6.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/6.js deleted file mode 100644 index 118d474c1a6..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/6.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (global.count !== 5) - throw new Error(`bad value ${global.count}`); -global.count = 6; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/7.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/7.js deleted file mode 100644 index 2b8e9a063f4..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/7.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./6.js"; - -var global = (Function("return this"))(); -if (global.count !== 6) - throw new Error(`bad value ${global.count}`); -global.count = 7; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/8.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/8.js deleted file mode 100644 index 47c6f470326..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/8.js +++ /dev/null @@ -1,4 +0,0 @@ -var global = (Function("return this"))(); -if (global.count !== 7) - throw new Error(`bad value ${global.count}`); -global.count = 8; diff --git a/implementation-contributed/javascriptcore/modules/execution-order-tree/9.js b/implementation-contributed/javascriptcore/modules/execution-order-tree/9.js deleted file mode 100644 index 232e425a22f..00000000000 --- a/implementation-contributed/javascriptcore/modules/execution-order-tree/9.js +++ /dev/null @@ -1,6 +0,0 @@ -import "./8.js"; - -var global = (Function("return this"))(); -if (global.count !== 8) - throw new Error(`bad value ${global.count}`); -global.count = 9; diff --git a/implementation-contributed/javascriptcore/modules/export-conflict-ok.js b/implementation-contributed/javascriptcore/modules/export-conflict-ok.js deleted file mode 100644 index 79e6965eb5d..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-conflict-ok.js +++ /dev/null @@ -1,5 +0,0 @@ -import { A, B } from "./export-conflict-ok/main.js" // C is conflict, but not looked up. -import { shouldBe } from "./resources/assert.js"; - -shouldBe(A, 42); -shouldBe(B, 50); diff --git a/implementation-contributed/javascriptcore/modules/export-conflict-ok/A.js b/implementation-contributed/javascriptcore/modules/export-conflict-ok/A.js deleted file mode 100644 index 8a84d643b05..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-conflict-ok/A.js +++ /dev/null @@ -1,2 +0,0 @@ -export const A = 42; -export const C = 50; diff --git a/implementation-contributed/javascriptcore/modules/export-conflict-ok/B.js b/implementation-contributed/javascriptcore/modules/export-conflict-ok/B.js deleted file mode 100644 index f1a65d783f0..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-conflict-ok/B.js +++ /dev/null @@ -1,2 +0,0 @@ -export const B = 50; -export const C = 50; diff --git a/implementation-contributed/javascriptcore/modules/export-conflict-ok/main.js b/implementation-contributed/javascriptcore/modules/export-conflict-ok/main.js deleted file mode 100644 index 86c6f1f1642..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-conflict-ok/main.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./A.js" -export * from "./B.js" diff --git a/implementation-contributed/javascriptcore/modules/export-default-function-hoisting.js b/implementation-contributed/javascriptcore/modules/export-default-function-hoisting.js deleted file mode 100644 index f71e7f37b89..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-default-function-hoisting.js +++ /dev/null @@ -1,5 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; -import drinkCocoa from './export-default-function-hoisting/cocoa.js' - -shouldBe(drinkCocoa(), 42); - diff --git a/implementation-contributed/javascriptcore/modules/export-default-function-hoisting/cappuccino.js b/implementation-contributed/javascriptcore/modules/export-default-function-hoisting/cappuccino.js deleted file mode 100644 index 3bf4a3974b6..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-default-function-hoisting/cappuccino.js +++ /dev/null @@ -1,6 +0,0 @@ -import drinkCocoa from './cocoa.js' - -export default function drinkCappuccino() -{ - return drinkCocoa(); -} diff --git a/implementation-contributed/javascriptcore/modules/export-default-function-hoisting/cocoa.js b/implementation-contributed/javascriptcore/modules/export-default-function-hoisting/cocoa.js deleted file mode 100644 index d19f9fc1263..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-default-function-hoisting/cocoa.js +++ /dev/null @@ -1,9 +0,0 @@ -import drinkCappuccino from './cappuccino.js' -import { shouldBe } from "../resources/assert.js"; - -shouldBe(drinkCappuccino(), 42); - -export default function drinkCocoa() -{ - return 42; -} diff --git a/implementation-contributed/javascriptcore/modules/export-default-function-name-in-assignment-expression.js b/implementation-contributed/javascriptcore/modules/export-default-function-name-in-assignment-expression.js deleted file mode 100644 index aac0729ffca..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-default-function-name-in-assignment-expression.js +++ /dev/null @@ -1,8 +0,0 @@ -import func from "./export-default-function-name-in-assignment-expression.js" -import { shouldBe } from "./resources/assert.js"; - -export default (function () { }); - -// https://tc39.github.io/ecma262/#sec-exports-runtime-semantics-evaluation -shouldBe(func.name, 'default'); -shouldBe(func.toString(), `function () { }`); diff --git a/implementation-contributed/javascriptcore/modules/export-default-function-name-in-class-declaration.js b/implementation-contributed/javascriptcore/modules/export-default-function-name-in-class-declaration.js deleted file mode 100644 index 1a882e2c12a..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-default-function-name-in-class-declaration.js +++ /dev/null @@ -1,8 +0,0 @@ -import cls from "./export-default-function-name-in-class-declaration.js" -import { shouldBe } from "./resources/assert.js"; - -export default class { } - -// https://tc39.github.io/ecma262/#sec-exports-runtime-semantics-evaluation -shouldBe(cls.name, 'default'); -shouldBe(cls.toString(), `class { }`); diff --git a/implementation-contributed/javascriptcore/modules/export-default-function-name-in-function-declaration.js b/implementation-contributed/javascriptcore/modules/export-default-function-name-in-function-declaration.js deleted file mode 100644 index c990adb2def..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-default-function-name-in-function-declaration.js +++ /dev/null @@ -1,8 +0,0 @@ -import func from "./export-default-function-name-in-function-declaration.js" -import { shouldBe } from "./resources/assert.js"; - -export default function () { } - -// https://tc39.github.io/ecma262/#sec-exports-runtime-semantics-evaluation -shouldBe(func.name, 'default'); -shouldBe(func.toString(), `function () { }`); diff --git a/implementation-contributed/javascriptcore/modules/export-default-function-name-in-generator-declaration.js b/implementation-contributed/javascriptcore/modules/export-default-function-name-in-generator-declaration.js deleted file mode 100644 index 12891dbd8af..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-default-function-name-in-generator-declaration.js +++ /dev/null @@ -1,8 +0,0 @@ -import func from "./export-default-function-name-in-generator-declaration.js" -import { shouldBe } from "./resources/assert.js"; - -export default function * () { } - -// https://tc39.github.io/ecma262/#sec-exports-runtime-semantics-evaluation -shouldBe(func.name, 'default'); -// shouldBe(func.toString(), `function * () { }`); diff --git a/implementation-contributed/javascriptcore/modules/export-from.js b/implementation-contributed/javascriptcore/modules/export-from.js deleted file mode 100644 index aa6d0118150..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-from.js +++ /dev/null @@ -1,8 +0,0 @@ -import * as namespace from "./export-from/main.js" -import { shouldBe } from "./resources/assert.js"; - -shouldBe(JSON.stringify(Object.getOwnPropertyNames(namespace)), `["Cappuccino","Cocoa","default","enum"]`); -shouldBe(namespace.Cocoa, "Cocoa"); -shouldBe(namespace.Cappuccino, "Cappuccino"); -shouldBe(namespace.default, "Mocha"); -shouldBe(namespace.enum, "Matcha"); diff --git a/implementation-contributed/javascriptcore/modules/export-from/main.js b/implementation-contributed/javascriptcore/modules/export-from/main.js deleted file mode 100644 index 22f3b497300..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-from/main.js +++ /dev/null @@ -1,6 +0,0 @@ -export { - First as Cocoa, - Second as Cappuccino, - default as enum, - enum as default -} from "./second.js" diff --git a/implementation-contributed/javascriptcore/modules/export-from/second.js b/implementation-contributed/javascriptcore/modules/export-from/second.js deleted file mode 100644 index 7c0bc516a42..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-from/second.js +++ /dev/null @@ -1,9 +0,0 @@ -export let First = "Cocoa"; - -export var Second = "Cappuccino" - -export default "Matcha"; - -var Mocha = 'Mocha'; - -export { Mocha as enum }; diff --git a/implementation-contributed/javascriptcore/modules/export-with-declarations-list.js b/implementation-contributed/javascriptcore/modules/export-with-declarations-list.js deleted file mode 100644 index 3f365e4d51c..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-with-declarations-list.js +++ /dev/null @@ -1,9 +0,0 @@ -import * as namespace from "./export-with-declarations-list/main.js" -import { shouldBe } from "./resources/assert.js"; - -shouldBe(JSON.stringify(Object.getOwnPropertyNames(namespace)), `["Cappuccino","Cocoa","Matcha","Mocha"]`); -shouldBe(namespace.Cocoa, 'Cocoa'); -shouldBe(namespace.Cappuccino, 'Cappuccino'); -shouldBe(namespace.Matcha, 'Matcha'); -shouldBe(namespace.Mocha, 'Mocha'); - diff --git a/implementation-contributed/javascriptcore/modules/export-with-declarations-list/main.js b/implementation-contributed/javascriptcore/modules/export-with-declarations-list/main.js deleted file mode 100644 index d0e8fd28663..00000000000 --- a/implementation-contributed/javascriptcore/modules/export-with-declarations-list/main.js +++ /dev/null @@ -1,3 +0,0 @@ -export let Cocoa = "Cocoa", Cappuccino = "Cappuccino"; - -export const Matcha = "Matcha", Mocha = "Mocha"; diff --git a/implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed.js b/implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed.js deleted file mode 100644 index 2328043bc2b..00000000000 --- a/implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed.js +++ /dev/null @@ -1 +0,0 @@ -import "./exported-function-may-be-called-before-module-is-executed/2.js" diff --git a/implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed/1.js b/implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed/1.js deleted file mode 100644 index 6a4b9427f51..00000000000 --- a/implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed/1.js +++ /dev/null @@ -1,15 +0,0 @@ -import { add, raise } from "./2.js" -import { shouldBe, shouldThrow } from "../resources/assert.js"; - -shouldBe(typeof add, 'function'); -shouldBe(typeof raise, 'function'); - -shouldBe(add(10, 32), 42); - -shouldThrow(() => { - // add, and raise functions are exported and can be used. - // But module "2"'s body is not executed yet!!!! - // raise function touches the lexical variable in the module "2", so TDZ - // error should be raised. - raise(); -}, `ReferenceError: Cannot access uninitialized variable.`); diff --git a/implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed/2.js b/implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed/2.js deleted file mode 100644 index 4ae5c2b64e0..00000000000 --- a/implementation-contributed/javascriptcore/modules/exported-function-may-be-called-before-module-is-executed/2.js +++ /dev/null @@ -1,13 +0,0 @@ -import "./1.js" - -let value = 42; - -export function add(a, b) -{ - return a + b; -} - -export function raise() -{ - return value; -} diff --git a/implementation-contributed/javascriptcore/modules/fallback-ambiguous.js b/implementation-contributed/javascriptcore/modules/fallback-ambiguous.js deleted file mode 100644 index 210ffcd3e30..00000000000 --- a/implementation-contributed/javascriptcore/modules/fallback-ambiguous.js +++ /dev/null @@ -1,13 +0,0 @@ -// +-----------------+ -// | | -// v | -// (A) -> (C) -> (D) *+-> [E] -// * ^ -// | | -// v @ -// (B) -import { shouldBe } from "./resources/assert.js" - -import('./fallback-ambiguous/main.js').then($vm.abort, function (error) { - shouldBe(String(error), `SyntaxError: Indirectly exported binding name 'A' cannot be resolved due to ambiguous multiple bindings.`); -}).catch($vm.abort); diff --git a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/A.js b/implementation-contributed/javascriptcore/modules/fallback-ambiguous/A.js deleted file mode 100644 index 1ca4822d0f7..00000000000 --- a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/A.js +++ /dev/null @@ -1,2 +0,0 @@ -export { A } from "./C.js" -export * from "./B.js" diff --git a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/B.js b/implementation-contributed/javascriptcore/modules/fallback-ambiguous/B.js deleted file mode 100644 index 210cb0e6128..00000000000 --- a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/B.js +++ /dev/null @@ -1 +0,0 @@ -export let A = 50; diff --git a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/C.js b/implementation-contributed/javascriptcore/modules/fallback-ambiguous/C.js deleted file mode 100644 index 6af0588e14e..00000000000 --- a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/C.js +++ /dev/null @@ -1 +0,0 @@ -export { A } from "./D.js" diff --git a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/D.js b/implementation-contributed/javascriptcore/modules/fallback-ambiguous/D.js deleted file mode 100644 index c2516328dcb..00000000000 --- a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/D.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./A.js" -export * from "./E.js" diff --git a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/E.js b/implementation-contributed/javascriptcore/modules/fallback-ambiguous/E.js deleted file mode 100644 index d308e2cae93..00000000000 --- a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/E.js +++ /dev/null @@ -1 +0,0 @@ -export let A = 42; diff --git a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/main.js b/implementation-contributed/javascriptcore/modules/fallback-ambiguous/main.js deleted file mode 100644 index 672bccf05b3..00000000000 --- a/implementation-contributed/javascriptcore/modules/fallback-ambiguous/main.js +++ /dev/null @@ -1 +0,0 @@ -export { A } from "./C.js" diff --git a/implementation-contributed/javascriptcore/modules/html-comments.js b/implementation-contributed/javascriptcore/modules/html-comments.js deleted file mode 100644 index 20c5c1d46aa..00000000000 --- a/implementation-contributed/javascriptcore/modules/html-comments.js +++ /dev/null @@ -1,45 +0,0 @@ -import { shouldBe, shouldThrow } from "./resources/assert.js"; - -// Eval's goal symbol is Script, not Module. -shouldBe(eval(` - ok -42 -`), 42); - -// Function's goal symbol is not Module. -shouldBe(new Function(` - ok -return 42 -`)(), 42); - -shouldThrow(() => { - checkModuleSyntax(` - - `) -}, `SyntaxError: Unexpected token '<':2`); - -shouldThrow(() => { - checkModuleSyntax(` ---> - `) -}, `SyntaxError: Unexpected token '>':2`); - -shouldThrow(() => { - checkModuleSyntax(` - function hello() - { - - } - `) -}, `SyntaxError: Unexpected token '<':4`); - -shouldThrow(() => { - checkModuleSyntax(` - function hello() - { ---> - } - `) -}, `SyntaxError: Unexpected token '>':4`); diff --git a/implementation-contributed/javascriptcore/modules/import-call.js b/implementation-contributed/javascriptcore/modules/import-call.js deleted file mode 100644 index eb523e78cbc..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-call.js +++ /dev/null @@ -1,5 +0,0 @@ -import { shouldBe } from "./resources/assert.js" - -import("./import-call/main.js").then((result) => { - shouldBe(result.Cocoa, 42); -}); diff --git a/implementation-contributed/javascriptcore/modules/import-call/main.js b/implementation-contributed/javascriptcore/modules/import-call/main.js deleted file mode 100644 index 6b67122d5b6..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-call/main.js +++ /dev/null @@ -1 +0,0 @@ -export let Cocoa = 42; diff --git a/implementation-contributed/javascriptcore/modules/import-default-async.js b/implementation-contributed/javascriptcore/modules/import-default-async.js deleted file mode 100644 index eac598ee2ed..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-default-async.js +++ /dev/null @@ -1,6 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; -import async from "./import-default-async.js" - -export default 42; - -shouldBe(async, 42); diff --git a/implementation-contributed/javascriptcore/modules/import-error.js b/implementation-contributed/javascriptcore/modules/import-error.js deleted file mode 100644 index 3b86812e1c1..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error.js +++ /dev/null @@ -1,16 +0,0 @@ -import { shouldBe } from "./resources/assert.js" - -Promise.all([ - import('./import-error/import-not-found.js') - .then($vm.abort, function (error) { - shouldBe(String(error), `SyntaxError: Importing binding name 'B' is not found.`); - }).catch($vm.abort), - import('./import-error/import-ambiguous.js') - .then($vm.abort, function (error) { - shouldBe(String(error), `SyntaxError: Importing binding name 'B' cannot be resolved due to ambiguous multiple bindings.`); - }).catch($vm.abort), - import('./import-error/import-default-from-star.js') - .then($vm.abort, function (error) { - shouldBe(String(error), `SyntaxError: Importing binding name 'default' cannot be resolved by star export entries.`); - }).catch($vm.abort), -]).catch($vm.abort); diff --git a/implementation-contributed/javascriptcore/modules/import-error/export-ambiguous-1.js b/implementation-contributed/javascriptcore/modules/import-error/export-ambiguous-1.js deleted file mode 100644 index 48d7f9a2c2d..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error/export-ambiguous-1.js +++ /dev/null @@ -1 +0,0 @@ -export const B = 42; diff --git a/implementation-contributed/javascriptcore/modules/import-error/export-ambiguous-2.js b/implementation-contributed/javascriptcore/modules/import-error/export-ambiguous-2.js deleted file mode 100644 index bae1d1767ff..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error/export-ambiguous-2.js +++ /dev/null @@ -1 +0,0 @@ -export const B = 50; diff --git a/implementation-contributed/javascriptcore/modules/import-error/export-ambiguous.js b/implementation-contributed/javascriptcore/modules/import-error/export-ambiguous.js deleted file mode 100644 index 69c120dbc1a..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error/export-ambiguous.js +++ /dev/null @@ -1,4 +0,0 @@ -export const A = 42; - -export * from "./export-ambiguous-1.js" -export * from "./export-ambiguous-2.js" diff --git a/implementation-contributed/javascriptcore/modules/import-error/export-default-from-star-2.js b/implementation-contributed/javascriptcore/modules/import-error/export-default-from-star-2.js deleted file mode 100644 index 035709adc6d..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error/export-default-from-star-2.js +++ /dev/null @@ -1,2 +0,0 @@ -export default function Cocoa() { -} diff --git a/implementation-contributed/javascriptcore/modules/import-error/export-default-from-star.js b/implementation-contributed/javascriptcore/modules/import-error/export-default-from-star.js deleted file mode 100644 index 4f86ebce0b2..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error/export-default-from-star.js +++ /dev/null @@ -1 +0,0 @@ -export * from "./export-default-from-star-2.js" diff --git a/implementation-contributed/javascriptcore/modules/import-error/export-not-found.js b/implementation-contributed/javascriptcore/modules/import-error/export-not-found.js deleted file mode 100644 index c50866ab46f..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error/export-not-found.js +++ /dev/null @@ -1,2 +0,0 @@ - -export const A = 20; diff --git a/implementation-contributed/javascriptcore/modules/import-error/import-ambiguous.js b/implementation-contributed/javascriptcore/modules/import-error/import-ambiguous.js deleted file mode 100644 index dd6c5841529..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error/import-ambiguous.js +++ /dev/null @@ -1 +0,0 @@ -import { A, B } from "./export-ambiguous.js" diff --git a/implementation-contributed/javascriptcore/modules/import-error/import-default-from-star.js b/implementation-contributed/javascriptcore/modules/import-error/import-default-from-star.js deleted file mode 100644 index f7f9e631320..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error/import-default-from-star.js +++ /dev/null @@ -1 +0,0 @@ -import A from "./export-default-from-star.js" diff --git a/implementation-contributed/javascriptcore/modules/import-error/import-not-found.js b/implementation-contributed/javascriptcore/modules/import-error/import-not-found.js deleted file mode 100644 index 04568d2513e..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-error/import-not-found.js +++ /dev/null @@ -1 +0,0 @@ -import { A, B } from "./export-not-found.js" diff --git a/implementation-contributed/javascriptcore/modules/import-meta-assignment.js b/implementation-contributed/javascriptcore/modules/import-meta-assignment.js deleted file mode 100644 index 3e6b93fd539..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-meta-assignment.js +++ /dev/null @@ -1,25 +0,0 @@ -import { shouldThrow } from "./resources/assert.js"; - -shouldThrow(() => { - checkModuleSyntax(`import.meta = 42`); -}, `SyntaxError: import.meta can't be the left hand side of an assignment expression.:1`); - -shouldThrow(() => { - checkModuleSyntax(`import.meta += 42`); -}, `SyntaxError: import.meta can't be the left hand side of an assignment expression.:1`); - -shouldThrow(() => { - checkModuleSyntax(`++import.meta`); -}, `SyntaxError: import.meta can't come after a prefix operator.:1`); - -shouldThrow(() => { - checkModuleSyntax(`--import.meta`); -}, `SyntaxError: import.meta can't come after a prefix operator.:1`); - -shouldThrow(() => { - checkModuleSyntax(`import.meta++`); -}, `SyntaxError: import.meta can't come before a postfix operator.:1`); - -shouldThrow(() => { - checkModuleSyntax(`import.meta--`); -}, `SyntaxError: import.meta can't come before a postfix operator.:1`); diff --git a/implementation-contributed/javascriptcore/modules/import-meta-syntax.js b/implementation-contributed/javascriptcore/modules/import-meta-syntax.js deleted file mode 100644 index 3edf4e5120e..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-meta-syntax.js +++ /dev/null @@ -1,25 +0,0 @@ -import { shouldThrow, shouldNotThrow } from "./resources/assert.js"; - -shouldThrow(() => { - new Function(`import.meta`); -}, `SyntaxError: import.meta is only valid inside modules.`); - -shouldNotThrow(() => { - checkModuleSyntax(`import.meta`); -}); - -shouldThrow(() => { - checkModuleSyntax(`(import.cocoa)`); -}, `SyntaxError: Unexpected identifier 'cocoa'. "import." can only followed with meta.:1`); - -shouldThrow(() => { - checkModuleSyntax(`(import["Cocoa"])`); -}, `SyntaxError: Unexpected token '['. import call expects exactly one argument.:1`); - -shouldThrow(() => { - checkModuleSyntax(`import.cocoa`); -}, `SyntaxError: Unexpected identifier 'cocoa'. "import." can only followed with meta.:1`); - -shouldThrow(() => { - checkModuleSyntax(`import["Cocoa"]`); -}, `SyntaxError: Unexpected token '['. Expected namespace import or import list.:1`); diff --git a/implementation-contributed/javascriptcore/modules/import-meta.js b/implementation-contributed/javascriptcore/modules/import-meta.js deleted file mode 100644 index 02fd14edcfe..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-meta.js +++ /dev/null @@ -1,11 +0,0 @@ -import { shouldBe, shouldNotBe } from "./resources/assert.js"; -import { cocoa } from "./import-meta/cocoa.js" - -shouldNotBe(cocoa, import.meta); -shouldBe(typeof cocoa, "object"); -shouldBe(typeof import.meta, "object"); -shouldBe(import.meta.filename.endsWith("import-meta.js"), true); -shouldBe(cocoa.filename.endsWith("cocoa.js"), true); - -shouldBe(Reflect.getPrototypeOf(cocoa), null); -shouldBe(Reflect.getPrototypeOf(import.meta), null); diff --git a/implementation-contributed/javascriptcore/modules/import-meta/cocoa.js b/implementation-contributed/javascriptcore/modules/import-meta/cocoa.js deleted file mode 100644 index 96d12056ec2..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-meta/cocoa.js +++ /dev/null @@ -1,4 +0,0 @@ -let meta = import.meta; -export { - meta as cocoa -} diff --git a/implementation-contributed/javascriptcore/modules/import-named-async-as.js b/implementation-contributed/javascriptcore/modules/import-named-async-as.js deleted file mode 100644 index 854b2b25302..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-named-async-as.js +++ /dev/null @@ -1,6 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; -import { Cocoa as async } from "./import-named-async-as.js" - -export let Cocoa = 42; -shouldBe(async, 42); -shouldBe(Cocoa, 42); diff --git a/implementation-contributed/javascriptcore/modules/import-named-async.js b/implementation-contributed/javascriptcore/modules/import-named-async.js deleted file mode 100644 index 9e30dca6811..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-named-async.js +++ /dev/null @@ -1,4 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; -import { async } from "./import-named-async/target.js" - -shouldBe(async, 42); diff --git a/implementation-contributed/javascriptcore/modules/import-named-async/target.js b/implementation-contributed/javascriptcore/modules/import-named-async/target.js deleted file mode 100644 index a7944c61dcc..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-named-async/target.js +++ /dev/null @@ -1 +0,0 @@ -export let async = 42; diff --git a/implementation-contributed/javascriptcore/modules/import-namespace-async.js b/implementation-contributed/javascriptcore/modules/import-namespace-async.js deleted file mode 100644 index 1e27767b0f0..00000000000 --- a/implementation-contributed/javascriptcore/modules/import-namespace-async.js +++ /dev/null @@ -1,5 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; -import * as async from "./import-namespace-async.js" - -export let Cocoa = 42; -shouldBe(async.Cocoa, 42); diff --git a/implementation-contributed/javascriptcore/modules/imported-bindings-are-immutable.js b/implementation-contributed/javascriptcore/modules/imported-bindings-are-immutable.js deleted file mode 100644 index 4515e29be6e..00000000000 --- a/implementation-contributed/javascriptcore/modules/imported-bindings-are-immutable.js +++ /dev/null @@ -1,43 +0,0 @@ -import { variable, constVariable, letVariable, functionDeclaration, classDeclaration } from "./imported-bindings-are-immutable/bindings.js" -import { shouldBe, shouldThrow } from "./resources/assert.js" - -shouldBe(variable, 'Cocoa'); -shouldThrow(() => { - variable = 42; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldBe(constVariable, 'Cocoa'); -shouldThrow(() => { - constVariable = 42; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldBe(letVariable, 'Cocoa'); -shouldThrow(() => { - letVariable = 42; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldBe(typeof functionDeclaration, 'function'); -shouldThrow(() => { - functionDeclaration = 42; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldBe(typeof classDeclaration, 'function'); -shouldThrow(() => { - classDeclaration = 42; -}, `TypeError: Attempted to assign to readonly property.`); - - -function reference(read) { - if (read) - return letVariable; - else - letVariable = "Cocoa"; -} -noInline(reference); - -for (var i = 0; i < 10000; ++i) - reference(true); - -shouldThrow(() => { - reference(false); -}, `TypeError: Attempted to assign to readonly property.`); diff --git a/implementation-contributed/javascriptcore/modules/imported-bindings-are-immutable/bindings.js b/implementation-contributed/javascriptcore/modules/imported-bindings-are-immutable/bindings.js deleted file mode 100644 index ed645cdf95d..00000000000 --- a/implementation-contributed/javascriptcore/modules/imported-bindings-are-immutable/bindings.js +++ /dev/null @@ -1,11 +0,0 @@ -export var variable = 'Cocoa'; - -export const constVariable = 'Cocoa'; - -export let letVariable = 'Cocoa'; - -export function functionDeclaration() { -} - -export class classDeclaration { -} diff --git a/implementation-contributed/javascriptcore/modules/imported-bindings-can-be-changed-in-original-module.js b/implementation-contributed/javascriptcore/modules/imported-bindings-can-be-changed-in-original-module.js deleted file mode 100644 index ab8b6c48447..00000000000 --- a/implementation-contributed/javascriptcore/modules/imported-bindings-can-be-changed-in-original-module.js +++ /dev/null @@ -1,17 +0,0 @@ -import { - Cocoa, - Cappuccino, - Matcha, - Modifier -} from "./imported-bindings-can-be-changed-in-original-module/bindings.js" -import { shouldBe, shouldThrow } from "./resources/assert.js" - -shouldBe(Cocoa, "Cocoa"); -shouldBe(Cappuccino, "Cappuccino"); -shouldBe(Matcha, "Matcha"); - -Modifier.change("Cocoa"); - -shouldBe(Cocoa, "Cocoa"); -shouldBe(Cappuccino, "Cocoa"); -shouldBe(Matcha, "Cocoa"); diff --git a/implementation-contributed/javascriptcore/modules/imported-bindings-can-be-changed-in-original-module/bindings.js b/implementation-contributed/javascriptcore/modules/imported-bindings-can-be-changed-in-original-module/bindings.js deleted file mode 100644 index 824288cc3c7..00000000000 --- a/implementation-contributed/javascriptcore/modules/imported-bindings-can-be-changed-in-original-module/bindings.js +++ /dev/null @@ -1,16 +0,0 @@ -let Cocoa = "Cocoa", Cappuccino = "Cappuccino", Matcha = "Matcha"; - -export let Modifier = { - change(value) - { - Cocoa = value; - Cappuccino = value; - Matcha = value; - } -}; - -export { - Cocoa, - Cappuccino, - Matcha -}; diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error.js b/implementation-contributed/javascriptcore/modules/indirect-export-error.js deleted file mode 100644 index 41dbebd3072..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error.js +++ /dev/null @@ -1,17 +0,0 @@ -import { shouldBe } from "./resources/assert.js" - - -Promise.all([ - import('./indirect-export-error/indirect-export-not-found.js') - .then($vm.abort, function (error) { - shouldBe(String(error), `SyntaxError: Indirectly exported binding name 'B' is not found.`); - }).catch($vm.abort), - import('./indirect-export-error/indirect-export-ambiguous.js') - .then($vm.abort, function (error) { - shouldBe(String(error), `SyntaxError: Indirectly exported binding name 'B' cannot be resolved due to ambiguous multiple bindings.`); - }).catch($vm.abort), - import('./indirect-export-error/indirect-export-default.js') - .then($vm.abort, function (error) { - shouldBe(String(error), `SyntaxError: Indirectly exported binding name 'default' cannot be resolved by star export entries.`); - }).catch($vm.abort), -]).catch($vm.abort); diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-2.js b/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-2.js deleted file mode 100644 index e6390571c11..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-2.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./indirect-export-ambiguous-3.js" -export * from "./indirect-export-ambiguous-4.js" diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-3.js b/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-3.js deleted file mode 100644 index 4c445a4b315..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-3.js +++ /dev/null @@ -1,2 +0,0 @@ -export const A = 42; -export const B = 50 diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-4.js b/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-4.js deleted file mode 100644 index 4f22722a354..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous-4.js +++ /dev/null @@ -1 +0,0 @@ -export const B = 50 diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous.js b/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous.js deleted file mode 100644 index ef626d914c5..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-ambiguous.js +++ /dev/null @@ -1 +0,0 @@ -export { A, B } from "./indirect-export-ambiguous-2.js" diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default-2.js b/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default-2.js deleted file mode 100644 index c177b143945..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default-2.js +++ /dev/null @@ -1 +0,0 @@ -export * from "indirect-export-default-3.js" diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default-3.js b/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default-3.js deleted file mode 100644 index 035709adc6d..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default-3.js +++ /dev/null @@ -1,2 +0,0 @@ -export default function Cocoa() { -} diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default.js b/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default.js deleted file mode 100644 index 6de14254a79..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-default.js +++ /dev/null @@ -1,2 +0,0 @@ -import A from "./indirect-export-default-2.js" -export { A } diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-not-found-2.js b/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-not-found-2.js deleted file mode 100644 index 83c665fee99..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-not-found-2.js +++ /dev/null @@ -1 +0,0 @@ -export const A = 42; diff --git a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-not-found.js b/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-not-found.js deleted file mode 100644 index 5dd4879e14a..00000000000 --- a/implementation-contributed/javascriptcore/modules/indirect-export-error/indirect-export-not-found.js +++ /dev/null @@ -1 +0,0 @@ -export { A, B } from "./indirect-export-not-found-2.js"; diff --git a/implementation-contributed/javascriptcore/modules/module-assert-access-binding.js b/implementation-contributed/javascriptcore/modules/module-assert-access-binding.js deleted file mode 100644 index 563cc9db87e..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-assert-access-binding.js +++ /dev/null @@ -1,10 +0,0 @@ -import {shouldBe} from "./resources/assert.js"; - -let array = []; -for (let i = 0; i < 4000000; i++) { - array.push(i); -} - -for (let i = 0; i < 4000000; i++) { - shouldBe(array[i], i); -} diff --git a/implementation-contributed/javascriptcore/modules/module-assert-access-namespace.js b/implementation-contributed/javascriptcore/modules/module-assert-access-namespace.js deleted file mode 100644 index fe090bdaf05..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-assert-access-namespace.js +++ /dev/null @@ -1,10 +0,0 @@ -import * as assert from "./resources/assert.js"; - -let array = []; -for (let i = 0; i < 4000000; i++) { - array.push(i); -} - -for (let i = 0; i < 4000000; i++) { - assert.shouldBe(array[i], i); -} diff --git a/implementation-contributed/javascriptcore/modules/module-eval.js b/implementation-contributed/javascriptcore/modules/module-eval.js deleted file mode 100644 index 5971e7e1b3e..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-eval.js +++ /dev/null @@ -1,11 +0,0 @@ -import { Cappuccino, Cocoa } from "./module-eval/drink.js" -import * as B from "./module-eval/B.js" -import { shouldThrow, shouldBe } from "./resources/assert.js" - -shouldBe(eval("Cappuccino"), "Cappuccino"); - -(function () { - let Cappuccino = "Cocoa"; - shouldBe(eval("Cappuccino"), "Cocoa"); - shouldBe(eval("Cocoa"), "Cocoa"); -}()); diff --git a/implementation-contributed/javascriptcore/modules/module-eval/A.js b/implementation-contributed/javascriptcore/modules/module-eval/A.js deleted file mode 100644 index 8cc42d1acc8..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-eval/A.js +++ /dev/null @@ -1,8 +0,0 @@ -import { B } from "./B.js" -import { shouldThrow } from "../resources/assert.js" - -export let A = "A"; - -shouldThrow(() => { - eval("B"); -}, `ReferenceError: Cannot access uninitialized variable.`); diff --git a/implementation-contributed/javascriptcore/modules/module-eval/B.js b/implementation-contributed/javascriptcore/modules/module-eval/B.js deleted file mode 100644 index 1d5ba286f3a..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-eval/B.js +++ /dev/null @@ -1,3 +0,0 @@ -import { A } from "./A.js" - -export let B = "B"; diff --git a/implementation-contributed/javascriptcore/modules/module-eval/drink.js b/implementation-contributed/javascriptcore/modules/module-eval/drink.js deleted file mode 100644 index ca837f77d9c..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-eval/drink.js +++ /dev/null @@ -1,3 +0,0 @@ -export const Cocoa = "Cocoa"; - -export let Cappuccino = "Cappuccino"; diff --git a/implementation-contributed/javascriptcore/modules/module-is-strict-code.js b/implementation-contributed/javascriptcore/modules/module-is-strict-code.js deleted file mode 100644 index fcc3b33e723..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-is-strict-code.js +++ /dev/null @@ -1,19 +0,0 @@ -import { shouldThrow, shouldBe } from "./resources/assert.js"; - -// Module code is always strict code. -shouldThrow(() => { - eval("with(value) { }"); -}, `SyntaxError: 'with' statements are not valid in strict mode.`); - -// When calling the indirect eval / Function constructor, its scope is not the module scope. -var moduleVariable = 42; - -shouldBe(eval("moduleVariable"), 42); - -shouldThrow(() => { - (0, eval)("moduleVariable"); -}, `ReferenceError: Can't find variable: moduleVariable`); - -shouldThrow(() => { - (Function("moduleVariable"))(); -}, `ReferenceError: Can't find variable: moduleVariable`); diff --git a/implementation-contributed/javascriptcore/modules/module-jit-reachability.js b/implementation-contributed/javascriptcore/modules/module-jit-reachability.js deleted file mode 100644 index 90b0d7d55c4..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-jit-reachability.js +++ /dev/null @@ -1,20010 +0,0 @@ -//@ noNoLLIntRunModules if $architecture == "arm" - -var points = [ - { x: 0, y: 0 }, - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - { x: 4, y: 4 }, - { x: 5, y: 5 }, - { x: 6, y: 6 }, - { x: 7, y: 7 }, - { x: 8, y: 8 }, - { x: 9, y: 9 }, - { x: 10, y: 10 }, - { x: 11, y: 11 }, - { x: 12, y: 12 }, - { x: 13, y: 13 }, - { x: 14, y: 14 }, - { x: 15, y: 15 }, - { x: 16, y: 16 }, - { x: 17, y: 17 }, - { x: 18, y: 18 }, - { x: 19, y: 19 }, - { x: 20, y: 20 }, - { x: 21, y: 21 }, - { x: 22, y: 22 }, - { x: 23, y: 23 }, - { x: 24, y: 24 }, - { x: 25, y: 25 }, - { x: 26, y: 26 }, - { x: 27, y: 27 }, - { x: 28, y: 28 }, - { x: 29, y: 29 }, - { x: 30, y: 30 }, - { x: 31, y: 31 }, - { x: 32, y: 32 }, - { x: 33, y: 33 }, - { x: 34, y: 34 }, - { x: 35, y: 35 }, - { x: 36, y: 36 }, - { x: 37, y: 37 }, - { x: 38, y: 38 }, - { x: 39, y: 39 }, - { x: 40, y: 40 }, - { x: 41, y: 41 }, - { x: 42, y: 42 }, - { x: 43, y: 43 }, - { x: 44, y: 44 }, - { x: 45, y: 45 }, - { x: 46, y: 46 }, - { x: 47, y: 47 }, - { x: 48, y: 48 }, - { x: 49, y: 49 }, - { x: 50, y: 50 }, - { x: 51, y: 51 }, - { x: 52, y: 52 }, - { x: 53, y: 53 }, - { x: 54, y: 54 }, - { x: 55, y: 55 }, - { x: 56, y: 56 }, - { x: 57, y: 57 }, - { x: 58, y: 58 }, - { x: 59, y: 59 }, - { x: 60, y: 60 }, - { x: 61, y: 61 }, - { x: 62, y: 62 }, - { x: 63, y: 63 }, - { x: 64, y: 64 }, - { x: 65, y: 65 }, - { x: 66, y: 66 }, - { x: 67, y: 67 }, - { x: 68, y: 68 }, - { x: 69, y: 69 }, - { x: 70, y: 70 }, - { x: 71, y: 71 }, - { x: 72, y: 72 }, - { x: 73, y: 73 }, - { x: 74, y: 74 }, - { x: 75, y: 75 }, - { x: 76, y: 76 }, - { x: 77, y: 77 }, - { x: 78, y: 78 }, - { x: 79, y: 79 }, - { x: 80, y: 80 }, - { x: 81, y: 81 }, - { x: 82, y: 82 }, - { x: 83, y: 83 }, - { x: 84, y: 84 }, - { x: 85, y: 85 }, - { x: 86, y: 86 }, - { x: 87, y: 87 }, - { x: 88, y: 88 }, - { x: 89, y: 89 }, - { x: 90, y: 90 }, - { x: 91, y: 91 }, - { x: 92, y: 92 }, - { x: 93, y: 93 }, - { x: 94, y: 94 }, - { x: 95, y: 95 }, - { x: 96, y: 96 }, - { x: 97, y: 97 }, - { x: 98, y: 98 }, - { x: 99, y: 99 }, - { x: 100, y: 100 }, - { x: 101, y: 101 }, - { x: 102, y: 102 }, - { x: 103, y: 103 }, - { x: 104, y: 104 }, - { x: 105, y: 105 }, - { x: 106, y: 106 }, - { x: 107, y: 107 }, - { x: 108, y: 108 }, - { x: 109, y: 109 }, - { x: 110, y: 110 }, - { x: 111, y: 111 }, - { x: 112, y: 112 }, - { x: 113, y: 113 }, - { x: 114, y: 114 }, - { x: 115, y: 115 }, - { x: 116, y: 116 }, - { x: 117, y: 117 }, - { x: 118, y: 118 }, - { x: 119, y: 119 }, - { x: 120, y: 120 }, - { x: 121, y: 121 }, - { x: 122, y: 122 }, - { x: 123, y: 123 }, - { x: 124, y: 124 }, - { x: 125, y: 125 }, - { x: 126, y: 126 }, - { x: 127, y: 127 }, - { x: 128, y: 128 }, - { x: 129, y: 129 }, - { x: 130, y: 130 }, - { x: 131, y: 131 }, - { x: 132, y: 132 }, - { x: 133, y: 133 }, - { x: 134, y: 134 }, - { x: 135, y: 135 }, - { x: 136, y: 136 }, - { x: 137, y: 137 }, - { x: 138, y: 138 }, - { x: 139, y: 139 }, - { x: 140, y: 140 }, - { x: 141, y: 141 }, - { x: 142, y: 142 }, - { x: 143, y: 143 }, - { x: 144, y: 144 }, - { x: 145, y: 145 }, - { x: 146, y: 146 }, - { x: 147, y: 147 }, - { x: 148, y: 148 }, - { x: 149, y: 149 }, - { x: 150, y: 150 }, - { x: 151, y: 151 }, - { x: 152, y: 152 }, - { x: 153, y: 153 }, - { x: 154, y: 154 }, - { x: 155, y: 155 }, - { x: 156, y: 156 }, - { x: 157, y: 157 }, - { x: 158, y: 158 }, - { x: 159, y: 159 }, - { x: 160, y: 160 }, - { x: 161, y: 161 }, - { x: 162, y: 162 }, - { x: 163, y: 163 }, - { x: 164, y: 164 }, - { x: 165, y: 165 }, - { x: 166, y: 166 }, - { x: 167, y: 167 }, - { x: 168, y: 168 }, - { x: 169, y: 169 }, - { x: 170, y: 170 }, - { x: 171, y: 171 }, - { x: 172, y: 172 }, - { x: 173, y: 173 }, - { x: 174, y: 174 }, - { x: 175, y: 175 }, - { x: 176, y: 176 }, - { x: 177, y: 177 }, - { x: 178, y: 178 }, - { x: 179, y: 179 }, - { x: 180, y: 180 }, - { x: 181, y: 181 }, - { x: 182, y: 182 }, - { x: 183, y: 183 }, - { x: 184, y: 184 }, - { x: 185, y: 185 }, - { x: 186, y: 186 }, - { x: 187, y: 187 }, - { x: 188, y: 188 }, - { x: 189, y: 189 }, - { x: 190, y: 190 }, - { x: 191, y: 191 }, - { x: 192, y: 192 }, - { x: 193, y: 193 }, - { x: 194, y: 194 }, - { x: 195, y: 195 }, - { x: 196, y: 196 }, - { x: 197, y: 197 }, - { x: 198, y: 198 }, - { x: 199, y: 199 }, - { x: 200, y: 200 }, - { x: 201, y: 201 }, - { x: 202, y: 202 }, - { x: 203, y: 203 }, - { x: 204, y: 204 }, - { x: 205, y: 205 }, - { x: 206, y: 206 }, - { x: 207, y: 207 }, - { x: 208, y: 208 }, - { x: 209, y: 209 }, - { x: 210, y: 210 }, - { x: 211, y: 211 }, - { x: 212, y: 212 }, - { x: 213, y: 213 }, - { x: 214, y: 214 }, - { x: 215, y: 215 }, - { x: 216, y: 216 }, - { x: 217, y: 217 }, - { x: 218, y: 218 }, - { x: 219, y: 219 }, - { x: 220, y: 220 }, - { x: 221, y: 221 }, - { x: 222, y: 222 }, - { x: 223, y: 223 }, - { x: 224, y: 224 }, - { x: 225, y: 225 }, - { x: 226, y: 226 }, - { x: 227, y: 227 }, - { x: 228, y: 228 }, - { x: 229, y: 229 }, - { x: 230, y: 230 }, - { x: 231, y: 231 }, - { x: 232, y: 232 }, - { x: 233, y: 233 }, - { x: 234, y: 234 }, - { x: 235, y: 235 }, - { x: 236, y: 236 }, - { x: 237, y: 237 }, - { x: 238, y: 238 }, - { x: 239, y: 239 }, - { x: 240, y: 240 }, - { x: 241, y: 241 }, - { x: 242, y: 242 }, - { x: 243, y: 243 }, - { x: 244, y: 244 }, - { x: 245, y: 245 }, - { x: 246, y: 246 }, - { x: 247, y: 247 }, - { x: 248, y: 248 }, - { x: 249, y: 249 }, - { x: 250, y: 250 }, - { x: 251, y: 251 }, - { x: 252, y: 252 }, - { x: 253, y: 253 }, - { x: 254, y: 254 }, - { x: 255, y: 255 }, - { x: 256, y: 256 }, - { x: 257, y: 257 }, - { x: 258, y: 258 }, - { x: 259, y: 259 }, - { x: 260, y: 260 }, - { x: 261, y: 261 }, - { x: 262, y: 262 }, - { x: 263, y: 263 }, - { x: 264, y: 264 }, - { x: 265, y: 265 }, - { x: 266, y: 266 }, - { x: 267, y: 267 }, - { x: 268, y: 268 }, - { x: 269, y: 269 }, - { x: 270, y: 270 }, - { x: 271, y: 271 }, - { x: 272, y: 272 }, - { x: 273, y: 273 }, - { x: 274, y: 274 }, - { x: 275, y: 275 }, - { x: 276, y: 276 }, - { x: 277, y: 277 }, - { x: 278, y: 278 }, - { x: 279, y: 279 }, - { x: 280, y: 280 }, - { x: 281, y: 281 }, - { x: 282, y: 282 }, - { x: 283, y: 283 }, - { x: 284, y: 284 }, - { x: 285, y: 285 }, - { x: 286, y: 286 }, - { x: 287, y: 287 }, - { x: 288, y: 288 }, - { x: 289, y: 289 }, - { x: 290, y: 290 }, - { x: 291, y: 291 }, - { x: 292, y: 292 }, - { x: 293, y: 293 }, - { x: 294, y: 294 }, - { x: 295, y: 295 }, - { x: 296, y: 296 }, - { x: 297, y: 297 }, - { x: 298, y: 298 }, - { x: 299, y: 299 }, - { x: 300, y: 300 }, - { x: 301, y: 301 }, - { x: 302, y: 302 }, - { x: 303, y: 303 }, - { x: 304, y: 304 }, - { x: 305, y: 305 }, - { x: 306, y: 306 }, - { x: 307, y: 307 }, - { x: 308, y: 308 }, - { x: 309, y: 309 }, - { x: 310, y: 310 }, - { x: 311, y: 311 }, - { x: 312, y: 312 }, - { x: 313, y: 313 }, - { x: 314, y: 314 }, - { x: 315, y: 315 }, - { x: 316, y: 316 }, - { x: 317, y: 317 }, - { x: 318, y: 318 }, - { x: 319, y: 319 }, - { x: 320, y: 320 }, - { x: 321, y: 321 }, - { x: 322, y: 322 }, - { x: 323, y: 323 }, - { x: 324, y: 324 }, - { x: 325, y: 325 }, - { x: 326, y: 326 }, - { x: 327, y: 327 }, - { x: 328, y: 328 }, - { x: 329, y: 329 }, - { x: 330, y: 330 }, - { x: 331, y: 331 }, - { x: 332, y: 332 }, - { x: 333, y: 333 }, - { x: 334, y: 334 }, - { x: 335, y: 335 }, - { x: 336, y: 336 }, - { x: 337, y: 337 }, - { x: 338, y: 338 }, - { x: 339, y: 339 }, - { x: 340, y: 340 }, - { x: 341, y: 341 }, - { x: 342, y: 342 }, - { x: 343, y: 343 }, - { x: 344, y: 344 }, - { x: 345, y: 345 }, - { x: 346, y: 346 }, - { x: 347, y: 347 }, - { x: 348, y: 348 }, - { x: 349, y: 349 }, - { x: 350, y: 350 }, - { x: 351, y: 351 }, - { x: 352, y: 352 }, - { x: 353, y: 353 }, - { x: 354, y: 354 }, - { x: 355, y: 355 }, - { x: 356, y: 356 }, - { x: 357, y: 357 }, - { x: 358, y: 358 }, - { x: 359, y: 359 }, - { x: 360, y: 360 }, - { x: 361, y: 361 }, - { x: 362, y: 362 }, - { x: 363, y: 363 }, - { x: 364, y: 364 }, - { x: 365, y: 365 }, - { x: 366, y: 366 }, - { x: 367, y: 367 }, - { x: 368, y: 368 }, - { x: 369, y: 369 }, - { x: 370, y: 370 }, - { x: 371, y: 371 }, - { x: 372, y: 372 }, - { x: 373, y: 373 }, - { x: 374, y: 374 }, - { x: 375, y: 375 }, - { x: 376, y: 376 }, - { x: 377, y: 377 }, - { x: 378, y: 378 }, - { x: 379, y: 379 }, - { x: 380, y: 380 }, - { x: 381, y: 381 }, - { x: 382, y: 382 }, - { x: 383, y: 383 }, - { x: 384, y: 384 }, - { x: 385, y: 385 }, - { x: 386, y: 386 }, - { x: 387, y: 387 }, - { x: 388, y: 388 }, - { x: 389, y: 389 }, - { x: 390, y: 390 }, - { x: 391, y: 391 }, - { x: 392, y: 392 }, - { x: 393, y: 393 }, - { x: 394, y: 394 }, - { x: 395, y: 395 }, - { x: 396, y: 396 }, - { x: 397, y: 397 }, - { x: 398, y: 398 }, - { x: 399, y: 399 }, - { x: 400, y: 400 }, - { x: 401, y: 401 }, - { x: 402, y: 402 }, - { x: 403, y: 403 }, - { x: 404, y: 404 }, - { x: 405, y: 405 }, - { x: 406, y: 406 }, - { x: 407, y: 407 }, - { x: 408, y: 408 }, - { x: 409, y: 409 }, - { x: 410, y: 410 }, - { x: 411, y: 411 }, - { x: 412, y: 412 }, - { x: 413, y: 413 }, - { x: 414, y: 414 }, - { x: 415, y: 415 }, - { x: 416, y: 416 }, - { x: 417, y: 417 }, - { x: 418, y: 418 }, - { x: 419, y: 419 }, - { x: 420, y: 420 }, - { x: 421, y: 421 }, - { x: 422, y: 422 }, - { x: 423, y: 423 }, - { x: 424, y: 424 }, - { x: 425, y: 425 }, - { x: 426, y: 426 }, - { x: 427, y: 427 }, - { x: 428, y: 428 }, - { x: 429, y: 429 }, - { x: 430, y: 430 }, - { x: 431, y: 431 }, - { x: 432, y: 432 }, - { x: 433, y: 433 }, - { x: 434, y: 434 }, - { x: 435, y: 435 }, - { x: 436, y: 436 }, - { x: 437, y: 437 }, - { x: 438, y: 438 }, - { x: 439, y: 439 }, - { x: 440, y: 440 }, - { x: 441, y: 441 }, - { x: 442, y: 442 }, - { x: 443, y: 443 }, - { x: 444, y: 444 }, - { x: 445, y: 445 }, - { x: 446, y: 446 }, - { x: 447, y: 447 }, - { x: 448, y: 448 }, - { x: 449, y: 449 }, - { x: 450, y: 450 }, - { x: 451, y: 451 }, - { x: 452, y: 452 }, - { x: 453, y: 453 }, - { x: 454, y: 454 }, - { x: 455, y: 455 }, - { x: 456, y: 456 }, - { x: 457, y: 457 }, - { x: 458, y: 458 }, - { x: 459, y: 459 }, - { x: 460, y: 460 }, - { x: 461, y: 461 }, - { x: 462, y: 462 }, - { x: 463, y: 463 }, - { x: 464, y: 464 }, - { x: 465, y: 465 }, - { x: 466, y: 466 }, - { x: 467, y: 467 }, - { x: 468, y: 468 }, - { x: 469, y: 469 }, - { x: 470, y: 470 }, - { x: 471, y: 471 }, - { x: 472, y: 472 }, - { x: 473, y: 473 }, - { x: 474, y: 474 }, - { x: 475, y: 475 }, - { x: 476, y: 476 }, - { x: 477, y: 477 }, - { x: 478, y: 478 }, - { x: 479, y: 479 }, - { x: 480, y: 480 }, - { x: 481, y: 481 }, - { x: 482, y: 482 }, - { x: 483, y: 483 }, - { x: 484, y: 484 }, - { x: 485, y: 485 }, - { x: 486, y: 486 }, - { x: 487, y: 487 }, - { x: 488, y: 488 }, - { x: 489, y: 489 }, - { x: 490, y: 490 }, - { x: 491, y: 491 }, - { x: 492, y: 492 }, - { x: 493, y: 493 }, - { x: 494, y: 494 }, - { x: 495, y: 495 }, - { x: 496, y: 496 }, - { x: 497, y: 497 }, - { x: 498, y: 498 }, - { x: 499, y: 499 }, - { x: 500, y: 500 }, - { x: 501, y: 501 }, - { x: 502, y: 502 }, - { x: 503, y: 503 }, - { x: 504, y: 504 }, - { x: 505, y: 505 }, - { x: 506, y: 506 }, - { x: 507, y: 507 }, - { x: 508, y: 508 }, - { x: 509, y: 509 }, - { x: 510, y: 510 }, - { x: 511, y: 511 }, - { x: 512, y: 512 }, - { x: 513, y: 513 }, - { x: 514, y: 514 }, - { x: 515, y: 515 }, - { x: 516, y: 516 }, - { x: 517, y: 517 }, - { x: 518, y: 518 }, - { x: 519, y: 519 }, - { x: 520, y: 520 }, - { x: 521, y: 521 }, - { x: 522, y: 522 }, - { x: 523, y: 523 }, - { x: 524, y: 524 }, - { x: 525, y: 525 }, - { x: 526, y: 526 }, - { x: 527, y: 527 }, - { x: 528, y: 528 }, - { x: 529, y: 529 }, - { x: 530, y: 530 }, - { x: 531, y: 531 }, - { x: 532, y: 532 }, - { x: 533, y: 533 }, - { x: 534, y: 534 }, - { x: 535, y: 535 }, - { x: 536, y: 536 }, - { x: 537, y: 537 }, - { x: 538, y: 538 }, - { x: 539, y: 539 }, - { x: 540, y: 540 }, - { x: 541, y: 541 }, - { x: 542, y: 542 }, - { x: 543, y: 543 }, - { x: 544, y: 544 }, - { x: 545, y: 545 }, - { x: 546, y: 546 }, - { x: 547, y: 547 }, - { x: 548, y: 548 }, - { x: 549, y: 549 }, - { x: 550, y: 550 }, - { x: 551, y: 551 }, - { x: 552, y: 552 }, - { x: 553, y: 553 }, - { x: 554, y: 554 }, - { x: 555, y: 555 }, - { x: 556, y: 556 }, - { x: 557, y: 557 }, - { x: 558, y: 558 }, - { x: 559, y: 559 }, - { x: 560, y: 560 }, - { x: 561, y: 561 }, - { x: 562, y: 562 }, - { x: 563, y: 563 }, - { x: 564, y: 564 }, - { x: 565, y: 565 }, - { x: 566, y: 566 }, - { x: 567, y: 567 }, - { x: 568, y: 568 }, - { x: 569, y: 569 }, - { x: 570, y: 570 }, - { x: 571, y: 571 }, - { x: 572, y: 572 }, - { x: 573, y: 573 }, - { x: 574, y: 574 }, - { x: 575, y: 575 }, - { x: 576, y: 576 }, - { x: 577, y: 577 }, - { x: 578, y: 578 }, - { x: 579, y: 579 }, - { x: 580, y: 580 }, - { x: 581, y: 581 }, - { x: 582, y: 582 }, - { x: 583, y: 583 }, - { x: 584, y: 584 }, - { x: 585, y: 585 }, - { x: 586, y: 586 }, - { x: 587, y: 587 }, - { x: 588, y: 588 }, - { x: 589, y: 589 }, - { x: 590, y: 590 }, - { x: 591, y: 591 }, - { x: 592, y: 592 }, - { x: 593, y: 593 }, - { x: 594, y: 594 }, - { x: 595, y: 595 }, - { x: 596, y: 596 }, - { x: 597, y: 597 }, - { x: 598, y: 598 }, - { x: 599, y: 599 }, - { x: 600, y: 600 }, - { x: 601, y: 601 }, - { x: 602, y: 602 }, - { x: 603, y: 603 }, - { x: 604, y: 604 }, - { x: 605, y: 605 }, - { x: 606, y: 606 }, - { x: 607, y: 607 }, - { x: 608, y: 608 }, - { x: 609, y: 609 }, - { x: 610, y: 610 }, - { x: 611, y: 611 }, - { x: 612, y: 612 }, - { x: 613, y: 613 }, - { x: 614, y: 614 }, - { x: 615, y: 615 }, - { x: 616, y: 616 }, - { x: 617, y: 617 }, - { x: 618, y: 618 }, - { x: 619, y: 619 }, - { x: 620, y: 620 }, - { x: 621, y: 621 }, - { x: 622, y: 622 }, - { x: 623, y: 623 }, - { x: 624, y: 624 }, - { x: 625, y: 625 }, - { x: 626, y: 626 }, - { x: 627, y: 627 }, - { x: 628, y: 628 }, - { x: 629, y: 629 }, - { x: 630, y: 630 }, - { x: 631, y: 631 }, - { x: 632, y: 632 }, - { x: 633, y: 633 }, - { x: 634, y: 634 }, - { x: 635, y: 635 }, - { x: 636, y: 636 }, - { x: 637, y: 637 }, - { x: 638, y: 638 }, - { x: 639, y: 639 }, - { x: 640, y: 640 }, - { x: 641, y: 641 }, - { x: 642, y: 642 }, - { x: 643, y: 643 }, - { x: 644, y: 644 }, - { x: 645, y: 645 }, - { x: 646, y: 646 }, - { x: 647, y: 647 }, - { x: 648, y: 648 }, - { x: 649, y: 649 }, - { x: 650, y: 650 }, - { x: 651, y: 651 }, - { x: 652, y: 652 }, - { x: 653, y: 653 }, - { x: 654, y: 654 }, - { x: 655, y: 655 }, - { x: 656, y: 656 }, - { x: 657, y: 657 }, - { x: 658, y: 658 }, - { x: 659, y: 659 }, - { x: 660, y: 660 }, - { x: 661, y: 661 }, - { x: 662, y: 662 }, - { x: 663, y: 663 }, - { x: 664, y: 664 }, - { x: 665, y: 665 }, - { x: 666, y: 666 }, - { x: 667, y: 667 }, - { x: 668, y: 668 }, - { x: 669, y: 669 }, - { x: 670, y: 670 }, - { x: 671, y: 671 }, - { x: 672, y: 672 }, - { x: 673, y: 673 }, - { x: 674, y: 674 }, - { x: 675, y: 675 }, - { x: 676, y: 676 }, - { x: 677, y: 677 }, - { x: 678, y: 678 }, - { x: 679, y: 679 }, - { x: 680, y: 680 }, - { x: 681, y: 681 }, - { x: 682, y: 682 }, - { x: 683, y: 683 }, - { x: 684, y: 684 }, - { x: 685, y: 685 }, - { x: 686, y: 686 }, - { x: 687, y: 687 }, - { x: 688, y: 688 }, - { x: 689, y: 689 }, - { x: 690, y: 690 }, - { x: 691, y: 691 }, - { x: 692, y: 692 }, - { x: 693, y: 693 }, - { x: 694, y: 694 }, - { x: 695, y: 695 }, - { x: 696, y: 696 }, - { x: 697, y: 697 }, - { x: 698, y: 698 }, - { x: 699, y: 699 }, - { x: 700, y: 700 }, - { x: 701, y: 701 }, - { x: 702, y: 702 }, - { x: 703, y: 703 }, - { x: 704, y: 704 }, - { x: 705, y: 705 }, - { x: 706, y: 706 }, - { x: 707, y: 707 }, - { x: 708, y: 708 }, - { x: 709, y: 709 }, - { x: 710, y: 710 }, - { x: 711, y: 711 }, - { x: 712, y: 712 }, - { x: 713, y: 713 }, - { x: 714, y: 714 }, - { x: 715, y: 715 }, - { x: 716, y: 716 }, - { x: 717, y: 717 }, - { x: 718, y: 718 }, - { x: 719, y: 719 }, - { x: 720, y: 720 }, - { x: 721, y: 721 }, - { x: 722, y: 722 }, - { x: 723, y: 723 }, - { x: 724, y: 724 }, - { x: 725, y: 725 }, - { x: 726, y: 726 }, - { x: 727, y: 727 }, - { x: 728, y: 728 }, - { x: 729, y: 729 }, - { x: 730, y: 730 }, - { x: 731, y: 731 }, - { x: 732, y: 732 }, - { x: 733, y: 733 }, - { x: 734, y: 734 }, - { x: 735, y: 735 }, - { x: 736, y: 736 }, - { x: 737, y: 737 }, - { x: 738, y: 738 }, - { x: 739, y: 739 }, - { x: 740, y: 740 }, - { x: 741, y: 741 }, - { x: 742, y: 742 }, - { x: 743, y: 743 }, - { x: 744, y: 744 }, - { x: 745, y: 745 }, - { x: 746, y: 746 }, - { x: 747, y: 747 }, - { x: 748, y: 748 }, - { x: 749, y: 749 }, - { x: 750, y: 750 }, - { x: 751, y: 751 }, - { x: 752, y: 752 }, - { x: 753, y: 753 }, - { x: 754, y: 754 }, - { x: 755, y: 755 }, - { x: 756, y: 756 }, - { x: 757, y: 757 }, - { x: 758, y: 758 }, - { x: 759, y: 759 }, - { x: 760, y: 760 }, - { x: 761, y: 761 }, - { x: 762, y: 762 }, - { x: 763, y: 763 }, - { x: 764, y: 764 }, - { x: 765, y: 765 }, - { x: 766, y: 766 }, - { x: 767, y: 767 }, - { x: 768, y: 768 }, - { x: 769, y: 769 }, - { x: 770, y: 770 }, - { x: 771, y: 771 }, - { x: 772, y: 772 }, - { x: 773, y: 773 }, - { x: 774, y: 774 }, - { x: 775, y: 775 }, - { x: 776, y: 776 }, - { x: 777, y: 777 }, - { x: 778, y: 778 }, - { x: 779, y: 779 }, - { x: 780, y: 780 }, - { x: 781, y: 781 }, - { x: 782, y: 782 }, - { x: 783, y: 783 }, - { x: 784, y: 784 }, - { x: 785, y: 785 }, - { x: 786, y: 786 }, - { x: 787, y: 787 }, - { x: 788, y: 788 }, - { x: 789, y: 789 }, - { x: 790, y: 790 }, - { x: 791, y: 791 }, - { x: 792, y: 792 }, - { x: 793, y: 793 }, - { x: 794, y: 794 }, - { x: 795, y: 795 }, - { x: 796, y: 796 }, - { x: 797, y: 797 }, - { x: 798, y: 798 }, - { x: 799, y: 799 }, - { x: 800, y: 800 }, - { x: 801, y: 801 }, - { x: 802, y: 802 }, - { x: 803, y: 803 }, - { x: 804, y: 804 }, - { x: 805, y: 805 }, - { x: 806, y: 806 }, - { x: 807, y: 807 }, - { x: 808, y: 808 }, - { x: 809, y: 809 }, - { x: 810, y: 810 }, - { x: 811, y: 811 }, - { x: 812, y: 812 }, - { x: 813, y: 813 }, - { x: 814, y: 814 }, - { x: 815, y: 815 }, - { x: 816, y: 816 }, - { x: 817, y: 817 }, - { x: 818, y: 818 }, - { x: 819, y: 819 }, - { x: 820, y: 820 }, - { x: 821, y: 821 }, - { x: 822, y: 822 }, - { x: 823, y: 823 }, - { x: 824, y: 824 }, - { x: 825, y: 825 }, - { x: 826, y: 826 }, - { x: 827, y: 827 }, - { x: 828, y: 828 }, - { x: 829, y: 829 }, - { x: 830, y: 830 }, - { x: 831, y: 831 }, - { x: 832, y: 832 }, - { x: 833, y: 833 }, - { x: 834, y: 834 }, - { x: 835, y: 835 }, - { x: 836, y: 836 }, - { x: 837, y: 837 }, - { x: 838, y: 838 }, - { x: 839, y: 839 }, - { x: 840, y: 840 }, - { x: 841, y: 841 }, - { x: 842, y: 842 }, - { x: 843, y: 843 }, - { x: 844, y: 844 }, - { x: 845, y: 845 }, - { x: 846, y: 846 }, - { x: 847, y: 847 }, - { x: 848, y: 848 }, - { x: 849, y: 849 }, - { x: 850, y: 850 }, - { x: 851, y: 851 }, - { x: 852, y: 852 }, - { x: 853, y: 853 }, - { x: 854, y: 854 }, - { x: 855, y: 855 }, - { x: 856, y: 856 }, - { x: 857, y: 857 }, - { x: 858, y: 858 }, - { x: 859, y: 859 }, - { x: 860, y: 860 }, - { x: 861, y: 861 }, - { x: 862, y: 862 }, - { x: 863, y: 863 }, - { x: 864, y: 864 }, - { x: 865, y: 865 }, - { x: 866, y: 866 }, - { x: 867, y: 867 }, - { x: 868, y: 868 }, - { x: 869, y: 869 }, - { x: 870, y: 870 }, - { x: 871, y: 871 }, - { x: 872, y: 872 }, - { x: 873, y: 873 }, - { x: 874, y: 874 }, - { x: 875, y: 875 }, - { x: 876, y: 876 }, - { x: 877, y: 877 }, - { x: 878, y: 878 }, - { x: 879, y: 879 }, - { x: 880, y: 880 }, - { x: 881, y: 881 }, - { x: 882, y: 882 }, - { x: 883, y: 883 }, - { x: 884, y: 884 }, - { x: 885, y: 885 }, - { x: 886, y: 886 }, - { x: 887, y: 887 }, - { x: 888, y: 888 }, - { x: 889, y: 889 }, - { x: 890, y: 890 }, - { x: 891, y: 891 }, - { x: 892, y: 892 }, - { x: 893, y: 893 }, - { x: 894, y: 894 }, - { x: 895, y: 895 }, - { x: 896, y: 896 }, - { x: 897, y: 897 }, - { x: 898, y: 898 }, - { x: 899, y: 899 }, - { x: 900, y: 900 }, - { x: 901, y: 901 }, - { x: 902, y: 902 }, - { x: 903, y: 903 }, - { x: 904, y: 904 }, - { x: 905, y: 905 }, - { x: 906, y: 906 }, - { x: 907, y: 907 }, - { x: 908, y: 908 }, - { x: 909, y: 909 }, - { x: 910, y: 910 }, - { x: 911, y: 911 }, - { x: 912, y: 912 }, - { x: 913, y: 913 }, - { x: 914, y: 914 }, - { x: 915, y: 915 }, - { x: 916, y: 916 }, - { x: 917, y: 917 }, - { x: 918, y: 918 }, - { x: 919, y: 919 }, - { x: 920, y: 920 }, - { x: 921, y: 921 }, - { x: 922, y: 922 }, - { x: 923, y: 923 }, - { x: 924, y: 924 }, - { x: 925, y: 925 }, - { x: 926, y: 926 }, - { x: 927, y: 927 }, - { x: 928, y: 928 }, - { x: 929, y: 929 }, - { x: 930, y: 930 }, - { x: 931, y: 931 }, - { x: 932, y: 932 }, - { x: 933, y: 933 }, - { x: 934, y: 934 }, - { x: 935, y: 935 }, - { x: 936, y: 936 }, - { x: 937, y: 937 }, - { x: 938, y: 938 }, - { x: 939, y: 939 }, - { x: 940, y: 940 }, - { x: 941, y: 941 }, - { x: 942, y: 942 }, - { x: 943, y: 943 }, - { x: 944, y: 944 }, - { x: 945, y: 945 }, - { x: 946, y: 946 }, - { x: 947, y: 947 }, - { x: 948, y: 948 }, - { x: 949, y: 949 }, - { x: 950, y: 950 }, - { x: 951, y: 951 }, - { x: 952, y: 952 }, - { x: 953, y: 953 }, - { x: 954, y: 954 }, - { x: 955, y: 955 }, - { x: 956, y: 956 }, - { x: 957, y: 957 }, - { x: 958, y: 958 }, - { x: 959, y: 959 }, - { x: 960, y: 960 }, - { x: 961, y: 961 }, - { x: 962, y: 962 }, - { x: 963, y: 963 }, - { x: 964, y: 964 }, - { x: 965, y: 965 }, - { x: 966, y: 966 }, - { x: 967, y: 967 }, - { x: 968, y: 968 }, - { x: 969, y: 969 }, - { x: 970, y: 970 }, - { x: 971, y: 971 }, - { x: 972, y: 972 }, - { x: 973, y: 973 }, - { x: 974, y: 974 }, - { x: 975, y: 975 }, - { x: 976, y: 976 }, - { x: 977, y: 977 }, - { x: 978, y: 978 }, - { x: 979, y: 979 }, - { x: 980, y: 980 }, - { x: 981, y: 981 }, - { x: 982, y: 982 }, - { x: 983, y: 983 }, - { x: 984, y: 984 }, - { x: 985, y: 985 }, - { x: 986, y: 986 }, - { x: 987, y: 987 }, - { x: 988, y: 988 }, - { x: 989, y: 989 }, - { x: 990, y: 990 }, - { x: 991, y: 991 }, - { x: 992, y: 992 }, - { x: 993, y: 993 }, - { x: 994, y: 994 }, - { x: 995, y: 995 }, - { x: 996, y: 996 }, - { x: 997, y: 997 }, - { x: 998, y: 998 }, - { x: 999, y: 999 }, - { x: 1000, y: 1000 }, - { x: 1001, y: 1001 }, - { x: 1002, y: 1002 }, - { x: 1003, y: 1003 }, - { x: 1004, y: 1004 }, - { x: 1005, y: 1005 }, - { x: 1006, y: 1006 }, - { x: 1007, y: 1007 }, - { x: 1008, y: 1008 }, - { x: 1009, y: 1009 }, - { x: 1010, y: 1010 }, - { x: 1011, y: 1011 }, - { x: 1012, y: 1012 }, - { x: 1013, y: 1013 }, - { x: 1014, y: 1014 }, - { x: 1015, y: 1015 }, - { x: 1016, y: 1016 }, - { x: 1017, y: 1017 }, - { x: 1018, y: 1018 }, - { x: 1019, y: 1019 }, - { x: 1020, y: 1020 }, - { x: 1021, y: 1021 }, - { x: 1022, y: 1022 }, - { x: 1023, y: 1023 }, - { x: 1024, y: 1024 }, - { x: 1025, y: 1025 }, - { x: 1026, y: 1026 }, - { x: 1027, y: 1027 }, - { x: 1028, y: 1028 }, - { x: 1029, y: 1029 }, - { x: 1030, y: 1030 }, - { x: 1031, y: 1031 }, - { x: 1032, y: 1032 }, - { x: 1033, y: 1033 }, - { x: 1034, y: 1034 }, - { x: 1035, y: 1035 }, - { x: 1036, y: 1036 }, - { x: 1037, y: 1037 }, - { x: 1038, y: 1038 }, - { x: 1039, y: 1039 }, - { x: 1040, y: 1040 }, - { x: 1041, y: 1041 }, - { x: 1042, y: 1042 }, - { x: 1043, y: 1043 }, - { x: 1044, y: 1044 }, - { x: 1045, y: 1045 }, - { x: 1046, y: 1046 }, - { x: 1047, y: 1047 }, - { x: 1048, y: 1048 }, - { x: 1049, y: 1049 }, - { x: 1050, y: 1050 }, - { x: 1051, y: 1051 }, - { x: 1052, y: 1052 }, - { x: 1053, y: 1053 }, - { x: 1054, y: 1054 }, - { x: 1055, y: 1055 }, - { x: 1056, y: 1056 }, - { x: 1057, y: 1057 }, - { x: 1058, y: 1058 }, - { x: 1059, y: 1059 }, - { x: 1060, y: 1060 }, - { x: 1061, y: 1061 }, - { x: 1062, y: 1062 }, - { x: 1063, y: 1063 }, - { x: 1064, y: 1064 }, - { x: 1065, y: 1065 }, - { x: 1066, y: 1066 }, - { x: 1067, y: 1067 }, - { x: 1068, y: 1068 }, - { x: 1069, y: 1069 }, - { x: 1070, y: 1070 }, - { x: 1071, y: 1071 }, - { x: 1072, y: 1072 }, - { x: 1073, y: 1073 }, - { x: 1074, y: 1074 }, - { x: 1075, y: 1075 }, - { x: 1076, y: 1076 }, - { x: 1077, y: 1077 }, - { x: 1078, y: 1078 }, - { x: 1079, y: 1079 }, - { x: 1080, y: 1080 }, - { x: 1081, y: 1081 }, - { x: 1082, y: 1082 }, - { x: 1083, y: 1083 }, - { x: 1084, y: 1084 }, - { x: 1085, y: 1085 }, - { x: 1086, y: 1086 }, - { x: 1087, y: 1087 }, - { x: 1088, y: 1088 }, - { x: 1089, y: 1089 }, - { x: 1090, y: 1090 }, - { x: 1091, y: 1091 }, - { x: 1092, y: 1092 }, - { x: 1093, y: 1093 }, - { x: 1094, y: 1094 }, - { x: 1095, y: 1095 }, - { x: 1096, y: 1096 }, - { x: 1097, y: 1097 }, - { x: 1098, y: 1098 }, - { x: 1099, y: 1099 }, - { x: 1100, y: 1100 }, - { x: 1101, y: 1101 }, - { x: 1102, y: 1102 }, - { x: 1103, y: 1103 }, - { x: 1104, y: 1104 }, - { x: 1105, y: 1105 }, - { x: 1106, y: 1106 }, - { x: 1107, y: 1107 }, - { x: 1108, y: 1108 }, - { x: 1109, y: 1109 }, - { x: 1110, y: 1110 }, - { x: 1111, y: 1111 }, - { x: 1112, y: 1112 }, - { x: 1113, y: 1113 }, - { x: 1114, y: 1114 }, - { x: 1115, y: 1115 }, - { x: 1116, y: 1116 }, - { x: 1117, y: 1117 }, - { x: 1118, y: 1118 }, - { x: 1119, y: 1119 }, - { x: 1120, y: 1120 }, - { x: 1121, y: 1121 }, - { x: 1122, y: 1122 }, - { x: 1123, y: 1123 }, - { x: 1124, y: 1124 }, - { x: 1125, y: 1125 }, - { x: 1126, y: 1126 }, - { x: 1127, y: 1127 }, - { x: 1128, y: 1128 }, - { x: 1129, y: 1129 }, - { x: 1130, y: 1130 }, - { x: 1131, y: 1131 }, - { x: 1132, y: 1132 }, - { x: 1133, y: 1133 }, - { x: 1134, y: 1134 }, - { x: 1135, y: 1135 }, - { x: 1136, y: 1136 }, - { x: 1137, y: 1137 }, - { x: 1138, y: 1138 }, - { x: 1139, y: 1139 }, - { x: 1140, y: 1140 }, - { x: 1141, y: 1141 }, - { x: 1142, y: 1142 }, - { x: 1143, y: 1143 }, - { x: 1144, y: 1144 }, - { x: 1145, y: 1145 }, - { x: 1146, y: 1146 }, - { x: 1147, y: 1147 }, - { x: 1148, y: 1148 }, - { x: 1149, y: 1149 }, - { x: 1150, y: 1150 }, - { x: 1151, y: 1151 }, - { x: 1152, y: 1152 }, - { x: 1153, y: 1153 }, - { x: 1154, y: 1154 }, - { x: 1155, y: 1155 }, - { x: 1156, y: 1156 }, - { x: 1157, y: 1157 }, - { x: 1158, y: 1158 }, - { x: 1159, y: 1159 }, - { x: 1160, y: 1160 }, - { x: 1161, y: 1161 }, - { x: 1162, y: 1162 }, - { x: 1163, y: 1163 }, - { x: 1164, y: 1164 }, - { x: 1165, y: 1165 }, - { x: 1166, y: 1166 }, - { x: 1167, y: 1167 }, - { x: 1168, y: 1168 }, - { x: 1169, y: 1169 }, - { x: 1170, y: 1170 }, - { x: 1171, y: 1171 }, - { x: 1172, y: 1172 }, - { x: 1173, y: 1173 }, - { x: 1174, y: 1174 }, - { x: 1175, y: 1175 }, - { x: 1176, y: 1176 }, - { x: 1177, y: 1177 }, - { x: 1178, y: 1178 }, - { x: 1179, y: 1179 }, - { x: 1180, y: 1180 }, - { x: 1181, y: 1181 }, - { x: 1182, y: 1182 }, - { x: 1183, y: 1183 }, - { x: 1184, y: 1184 }, - { x: 1185, y: 1185 }, - { x: 1186, y: 1186 }, - { x: 1187, y: 1187 }, - { x: 1188, y: 1188 }, - { x: 1189, y: 1189 }, - { x: 1190, y: 1190 }, - { x: 1191, y: 1191 }, - { x: 1192, y: 1192 }, - { x: 1193, y: 1193 }, - { x: 1194, y: 1194 }, - { x: 1195, y: 1195 }, - { x: 1196, y: 1196 }, - { x: 1197, y: 1197 }, - { x: 1198, y: 1198 }, - { x: 1199, y: 1199 }, - { x: 1200, y: 1200 }, - { x: 1201, y: 1201 }, - { x: 1202, y: 1202 }, - { x: 1203, y: 1203 }, - { x: 1204, y: 1204 }, - { x: 1205, y: 1205 }, - { x: 1206, y: 1206 }, - { x: 1207, y: 1207 }, - { x: 1208, y: 1208 }, - { x: 1209, y: 1209 }, - { x: 1210, y: 1210 }, - { x: 1211, y: 1211 }, - { x: 1212, y: 1212 }, - { x: 1213, y: 1213 }, - { x: 1214, y: 1214 }, - { x: 1215, y: 1215 }, - { x: 1216, y: 1216 }, - { x: 1217, y: 1217 }, - { x: 1218, y: 1218 }, - { x: 1219, y: 1219 }, - { x: 1220, y: 1220 }, - { x: 1221, y: 1221 }, - { x: 1222, y: 1222 }, - { x: 1223, y: 1223 }, - { x: 1224, y: 1224 }, - { x: 1225, y: 1225 }, - { x: 1226, y: 1226 }, - { x: 1227, y: 1227 }, - { x: 1228, y: 1228 }, - { x: 1229, y: 1229 }, - { x: 1230, y: 1230 }, - { x: 1231, y: 1231 }, - { x: 1232, y: 1232 }, - { x: 1233, y: 1233 }, - { x: 1234, y: 1234 }, - { x: 1235, y: 1235 }, - { x: 1236, y: 1236 }, - { x: 1237, y: 1237 }, - { x: 1238, y: 1238 }, - { x: 1239, y: 1239 }, - { x: 1240, y: 1240 }, - { x: 1241, y: 1241 }, - { x: 1242, y: 1242 }, - { x: 1243, y: 1243 }, - { x: 1244, y: 1244 }, - { x: 1245, y: 1245 }, - { x: 1246, y: 1246 }, - { x: 1247, y: 1247 }, - { x: 1248, y: 1248 }, - { x: 1249, y: 1249 }, - { x: 1250, y: 1250 }, - { x: 1251, y: 1251 }, - { x: 1252, y: 1252 }, - { x: 1253, y: 1253 }, - { x: 1254, y: 1254 }, - { x: 1255, y: 1255 }, - { x: 1256, y: 1256 }, - { x: 1257, y: 1257 }, - { x: 1258, y: 1258 }, - { x: 1259, y: 1259 }, - { x: 1260, y: 1260 }, - { x: 1261, y: 1261 }, - { x: 1262, y: 1262 }, - { x: 1263, y: 1263 }, - { x: 1264, y: 1264 }, - { x: 1265, y: 1265 }, - { x: 1266, y: 1266 }, - { x: 1267, y: 1267 }, - { x: 1268, y: 1268 }, - { x: 1269, y: 1269 }, - { x: 1270, y: 1270 }, - { x: 1271, y: 1271 }, - { x: 1272, y: 1272 }, - { x: 1273, y: 1273 }, - { x: 1274, y: 1274 }, - { x: 1275, y: 1275 }, - { x: 1276, y: 1276 }, - { x: 1277, y: 1277 }, - { x: 1278, y: 1278 }, - { x: 1279, y: 1279 }, - { x: 1280, y: 1280 }, - { x: 1281, y: 1281 }, - { x: 1282, y: 1282 }, - { x: 1283, y: 1283 }, - { x: 1284, y: 1284 }, - { x: 1285, y: 1285 }, - { x: 1286, y: 1286 }, - { x: 1287, y: 1287 }, - { x: 1288, y: 1288 }, - { x: 1289, y: 1289 }, - { x: 1290, y: 1290 }, - { x: 1291, y: 1291 }, - { x: 1292, y: 1292 }, - { x: 1293, y: 1293 }, - { x: 1294, y: 1294 }, - { x: 1295, y: 1295 }, - { x: 1296, y: 1296 }, - { x: 1297, y: 1297 }, - { x: 1298, y: 1298 }, - { x: 1299, y: 1299 }, - { x: 1300, y: 1300 }, - { x: 1301, y: 1301 }, - { x: 1302, y: 1302 }, - { x: 1303, y: 1303 }, - { x: 1304, y: 1304 }, - { x: 1305, y: 1305 }, - { x: 1306, y: 1306 }, - { x: 1307, y: 1307 }, - { x: 1308, y: 1308 }, - { x: 1309, y: 1309 }, - { x: 1310, y: 1310 }, - { x: 1311, y: 1311 }, - { x: 1312, y: 1312 }, - { x: 1313, y: 1313 }, - { x: 1314, y: 1314 }, - { x: 1315, y: 1315 }, - { x: 1316, y: 1316 }, - { x: 1317, y: 1317 }, - { x: 1318, y: 1318 }, - { x: 1319, y: 1319 }, - { x: 1320, y: 1320 }, - { x: 1321, y: 1321 }, - { x: 1322, y: 1322 }, - { x: 1323, y: 1323 }, - { x: 1324, y: 1324 }, - { x: 1325, y: 1325 }, - { x: 1326, y: 1326 }, - { x: 1327, y: 1327 }, - { x: 1328, y: 1328 }, - { x: 1329, y: 1329 }, - { x: 1330, y: 1330 }, - { x: 1331, y: 1331 }, - { x: 1332, y: 1332 }, - { x: 1333, y: 1333 }, - { x: 1334, y: 1334 }, - { x: 1335, y: 1335 }, - { x: 1336, y: 1336 }, - { x: 1337, y: 1337 }, - { x: 1338, y: 1338 }, - { x: 1339, y: 1339 }, - { x: 1340, y: 1340 }, - { x: 1341, y: 1341 }, - { x: 1342, y: 1342 }, - { x: 1343, y: 1343 }, - { x: 1344, y: 1344 }, - { x: 1345, y: 1345 }, - { x: 1346, y: 1346 }, - { x: 1347, y: 1347 }, - { x: 1348, y: 1348 }, - { x: 1349, y: 1349 }, - { x: 1350, y: 1350 }, - { x: 1351, y: 1351 }, - { x: 1352, y: 1352 }, - { x: 1353, y: 1353 }, - { x: 1354, y: 1354 }, - { x: 1355, y: 1355 }, - { x: 1356, y: 1356 }, - { x: 1357, y: 1357 }, - { x: 1358, y: 1358 }, - { x: 1359, y: 1359 }, - { x: 1360, y: 1360 }, - { x: 1361, y: 1361 }, - { x: 1362, y: 1362 }, - { x: 1363, y: 1363 }, - { x: 1364, y: 1364 }, - { x: 1365, y: 1365 }, - { x: 1366, y: 1366 }, - { x: 1367, y: 1367 }, - { x: 1368, y: 1368 }, - { x: 1369, y: 1369 }, - { x: 1370, y: 1370 }, - { x: 1371, y: 1371 }, - { x: 1372, y: 1372 }, - { x: 1373, y: 1373 }, - { x: 1374, y: 1374 }, - { x: 1375, y: 1375 }, - { x: 1376, y: 1376 }, - { x: 1377, y: 1377 }, - { x: 1378, y: 1378 }, - { x: 1379, y: 1379 }, - { x: 1380, y: 1380 }, - { x: 1381, y: 1381 }, - { x: 1382, y: 1382 }, - { x: 1383, y: 1383 }, - { x: 1384, y: 1384 }, - { x: 1385, y: 1385 }, - { x: 1386, y: 1386 }, - { x: 1387, y: 1387 }, - { x: 1388, y: 1388 }, - { x: 1389, y: 1389 }, - { x: 1390, y: 1390 }, - { x: 1391, y: 1391 }, - { x: 1392, y: 1392 }, - { x: 1393, y: 1393 }, - { x: 1394, y: 1394 }, - { x: 1395, y: 1395 }, - { x: 1396, y: 1396 }, - { x: 1397, y: 1397 }, - { x: 1398, y: 1398 }, - { x: 1399, y: 1399 }, - { x: 1400, y: 1400 }, - { x: 1401, y: 1401 }, - { x: 1402, y: 1402 }, - { x: 1403, y: 1403 }, - { x: 1404, y: 1404 }, - { x: 1405, y: 1405 }, - { x: 1406, y: 1406 }, - { x: 1407, y: 1407 }, - { x: 1408, y: 1408 }, - { x: 1409, y: 1409 }, - { x: 1410, y: 1410 }, - { x: 1411, y: 1411 }, - { x: 1412, y: 1412 }, - { x: 1413, y: 1413 }, - { x: 1414, y: 1414 }, - { x: 1415, y: 1415 }, - { x: 1416, y: 1416 }, - { x: 1417, y: 1417 }, - { x: 1418, y: 1418 }, - { x: 1419, y: 1419 }, - { x: 1420, y: 1420 }, - { x: 1421, y: 1421 }, - { x: 1422, y: 1422 }, - { x: 1423, y: 1423 }, - { x: 1424, y: 1424 }, - { x: 1425, y: 1425 }, - { x: 1426, y: 1426 }, - { x: 1427, y: 1427 }, - { x: 1428, y: 1428 }, - { x: 1429, y: 1429 }, - { x: 1430, y: 1430 }, - { x: 1431, y: 1431 }, - { x: 1432, y: 1432 }, - { x: 1433, y: 1433 }, - { x: 1434, y: 1434 }, - { x: 1435, y: 1435 }, - { x: 1436, y: 1436 }, - { x: 1437, y: 1437 }, - { x: 1438, y: 1438 }, - { x: 1439, y: 1439 }, - { x: 1440, y: 1440 }, - { x: 1441, y: 1441 }, - { x: 1442, y: 1442 }, - { x: 1443, y: 1443 }, - { x: 1444, y: 1444 }, - { x: 1445, y: 1445 }, - { x: 1446, y: 1446 }, - { x: 1447, y: 1447 }, - { x: 1448, y: 1448 }, - { x: 1449, y: 1449 }, - { x: 1450, y: 1450 }, - { x: 1451, y: 1451 }, - { x: 1452, y: 1452 }, - { x: 1453, y: 1453 }, - { x: 1454, y: 1454 }, - { x: 1455, y: 1455 }, - { x: 1456, y: 1456 }, - { x: 1457, y: 1457 }, - { x: 1458, y: 1458 }, - { x: 1459, y: 1459 }, - { x: 1460, y: 1460 }, - { x: 1461, y: 1461 }, - { x: 1462, y: 1462 }, - { x: 1463, y: 1463 }, - { x: 1464, y: 1464 }, - { x: 1465, y: 1465 }, - { x: 1466, y: 1466 }, - { x: 1467, y: 1467 }, - { x: 1468, y: 1468 }, - { x: 1469, y: 1469 }, - { x: 1470, y: 1470 }, - { x: 1471, y: 1471 }, - { x: 1472, y: 1472 }, - { x: 1473, y: 1473 }, - { x: 1474, y: 1474 }, - { x: 1475, y: 1475 }, - { x: 1476, y: 1476 }, - { x: 1477, y: 1477 }, - { x: 1478, y: 1478 }, - { x: 1479, y: 1479 }, - { x: 1480, y: 1480 }, - { x: 1481, y: 1481 }, - { x: 1482, y: 1482 }, - { x: 1483, y: 1483 }, - { x: 1484, y: 1484 }, - { x: 1485, y: 1485 }, - { x: 1486, y: 1486 }, - { x: 1487, y: 1487 }, - { x: 1488, y: 1488 }, - { x: 1489, y: 1489 }, - { x: 1490, y: 1490 }, - { x: 1491, y: 1491 }, - { x: 1492, y: 1492 }, - { x: 1493, y: 1493 }, - { x: 1494, y: 1494 }, - { x: 1495, y: 1495 }, - { x: 1496, y: 1496 }, - { x: 1497, y: 1497 }, - { x: 1498, y: 1498 }, - { x: 1499, y: 1499 }, - { x: 1500, y: 1500 }, - { x: 1501, y: 1501 }, - { x: 1502, y: 1502 }, - { x: 1503, y: 1503 }, - { x: 1504, y: 1504 }, - { x: 1505, y: 1505 }, - { x: 1506, y: 1506 }, - { x: 1507, y: 1507 }, - { x: 1508, y: 1508 }, - { x: 1509, y: 1509 }, - { x: 1510, y: 1510 }, - { x: 1511, y: 1511 }, - { x: 1512, y: 1512 }, - { x: 1513, y: 1513 }, - { x: 1514, y: 1514 }, - { x: 1515, y: 1515 }, - { x: 1516, y: 1516 }, - { x: 1517, y: 1517 }, - { x: 1518, y: 1518 }, - { x: 1519, y: 1519 }, - { x: 1520, y: 1520 }, - { x: 1521, y: 1521 }, - { x: 1522, y: 1522 }, - { x: 1523, y: 1523 }, - { x: 1524, y: 1524 }, - { x: 1525, y: 1525 }, - { x: 1526, y: 1526 }, - { x: 1527, y: 1527 }, - { x: 1528, y: 1528 }, - { x: 1529, y: 1529 }, - { x: 1530, y: 1530 }, - { x: 1531, y: 1531 }, - { x: 1532, y: 1532 }, - { x: 1533, y: 1533 }, - { x: 1534, y: 1534 }, - { x: 1535, y: 1535 }, - { x: 1536, y: 1536 }, - { x: 1537, y: 1537 }, - { x: 1538, y: 1538 }, - { x: 1539, y: 1539 }, - { x: 1540, y: 1540 }, - { x: 1541, y: 1541 }, - { x: 1542, y: 1542 }, - { x: 1543, y: 1543 }, - { x: 1544, y: 1544 }, - { x: 1545, y: 1545 }, - { x: 1546, y: 1546 }, - { x: 1547, y: 1547 }, - { x: 1548, y: 1548 }, - { x: 1549, y: 1549 }, - { x: 1550, y: 1550 }, - { x: 1551, y: 1551 }, - { x: 1552, y: 1552 }, - { x: 1553, y: 1553 }, - { x: 1554, y: 1554 }, - { x: 1555, y: 1555 }, - { x: 1556, y: 1556 }, - { x: 1557, y: 1557 }, - { x: 1558, y: 1558 }, - { x: 1559, y: 1559 }, - { x: 1560, y: 1560 }, - { x: 1561, y: 1561 }, - { x: 1562, y: 1562 }, - { x: 1563, y: 1563 }, - { x: 1564, y: 1564 }, - { x: 1565, y: 1565 }, - { x: 1566, y: 1566 }, - { x: 1567, y: 1567 }, - { x: 1568, y: 1568 }, - { x: 1569, y: 1569 }, - { x: 1570, y: 1570 }, - { x: 1571, y: 1571 }, - { x: 1572, y: 1572 }, - { x: 1573, y: 1573 }, - { x: 1574, y: 1574 }, - { x: 1575, y: 1575 }, - { x: 1576, y: 1576 }, - { x: 1577, y: 1577 }, - { x: 1578, y: 1578 }, - { x: 1579, y: 1579 }, - { x: 1580, y: 1580 }, - { x: 1581, y: 1581 }, - { x: 1582, y: 1582 }, - { x: 1583, y: 1583 }, - { x: 1584, y: 1584 }, - { x: 1585, y: 1585 }, - { x: 1586, y: 1586 }, - { x: 1587, y: 1587 }, - { x: 1588, y: 1588 }, - { x: 1589, y: 1589 }, - { x: 1590, y: 1590 }, - { x: 1591, y: 1591 }, - { x: 1592, y: 1592 }, - { x: 1593, y: 1593 }, - { x: 1594, y: 1594 }, - { x: 1595, y: 1595 }, - { x: 1596, y: 1596 }, - { x: 1597, y: 1597 }, - { x: 1598, y: 1598 }, - { x: 1599, y: 1599 }, - { x: 1600, y: 1600 }, - { x: 1601, y: 1601 }, - { x: 1602, y: 1602 }, - { x: 1603, y: 1603 }, - { x: 1604, y: 1604 }, - { x: 1605, y: 1605 }, - { x: 1606, y: 1606 }, - { x: 1607, y: 1607 }, - { x: 1608, y: 1608 }, - { x: 1609, y: 1609 }, - { x: 1610, y: 1610 }, - { x: 1611, y: 1611 }, - { x: 1612, y: 1612 }, - { x: 1613, y: 1613 }, - { x: 1614, y: 1614 }, - { x: 1615, y: 1615 }, - { x: 1616, y: 1616 }, - { x: 1617, y: 1617 }, - { x: 1618, y: 1618 }, - { x: 1619, y: 1619 }, - { x: 1620, y: 1620 }, - { x: 1621, y: 1621 }, - { x: 1622, y: 1622 }, - { x: 1623, y: 1623 }, - { x: 1624, y: 1624 }, - { x: 1625, y: 1625 }, - { x: 1626, y: 1626 }, - { x: 1627, y: 1627 }, - { x: 1628, y: 1628 }, - { x: 1629, y: 1629 }, - { x: 1630, y: 1630 }, - { x: 1631, y: 1631 }, - { x: 1632, y: 1632 }, - { x: 1633, y: 1633 }, - { x: 1634, y: 1634 }, - { x: 1635, y: 1635 }, - { x: 1636, y: 1636 }, - { x: 1637, y: 1637 }, - { x: 1638, y: 1638 }, - { x: 1639, y: 1639 }, - { x: 1640, y: 1640 }, - { x: 1641, y: 1641 }, - { x: 1642, y: 1642 }, - { x: 1643, y: 1643 }, - { x: 1644, y: 1644 }, - { x: 1645, y: 1645 }, - { x: 1646, y: 1646 }, - { x: 1647, y: 1647 }, - { x: 1648, y: 1648 }, - { x: 1649, y: 1649 }, - { x: 1650, y: 1650 }, - { x: 1651, y: 1651 }, - { x: 1652, y: 1652 }, - { x: 1653, y: 1653 }, - { x: 1654, y: 1654 }, - { x: 1655, y: 1655 }, - { x: 1656, y: 1656 }, - { x: 1657, y: 1657 }, - { x: 1658, y: 1658 }, - { x: 1659, y: 1659 }, - { x: 1660, y: 1660 }, - { x: 1661, y: 1661 }, - { x: 1662, y: 1662 }, - { x: 1663, y: 1663 }, - { x: 1664, y: 1664 }, - { x: 1665, y: 1665 }, - { x: 1666, y: 1666 }, - { x: 1667, y: 1667 }, - { x: 1668, y: 1668 }, - { x: 1669, y: 1669 }, - { x: 1670, y: 1670 }, - { x: 1671, y: 1671 }, - { x: 1672, y: 1672 }, - { x: 1673, y: 1673 }, - { x: 1674, y: 1674 }, - { x: 1675, y: 1675 }, - { x: 1676, y: 1676 }, - { x: 1677, y: 1677 }, - { x: 1678, y: 1678 }, - { x: 1679, y: 1679 }, - { x: 1680, y: 1680 }, - { x: 1681, y: 1681 }, - { x: 1682, y: 1682 }, - { x: 1683, y: 1683 }, - { x: 1684, y: 1684 }, - { x: 1685, y: 1685 }, - { x: 1686, y: 1686 }, - { x: 1687, y: 1687 }, - { x: 1688, y: 1688 }, - { x: 1689, y: 1689 }, - { x: 1690, y: 1690 }, - { x: 1691, y: 1691 }, - { x: 1692, y: 1692 }, - { x: 1693, y: 1693 }, - { x: 1694, y: 1694 }, - { x: 1695, y: 1695 }, - { x: 1696, y: 1696 }, - { x: 1697, y: 1697 }, - { x: 1698, y: 1698 }, - { x: 1699, y: 1699 }, - { x: 1700, y: 1700 }, - { x: 1701, y: 1701 }, - { x: 1702, y: 1702 }, - { x: 1703, y: 1703 }, - { x: 1704, y: 1704 }, - { x: 1705, y: 1705 }, - { x: 1706, y: 1706 }, - { x: 1707, y: 1707 }, - { x: 1708, y: 1708 }, - { x: 1709, y: 1709 }, - { x: 1710, y: 1710 }, - { x: 1711, y: 1711 }, - { x: 1712, y: 1712 }, - { x: 1713, y: 1713 }, - { x: 1714, y: 1714 }, - { x: 1715, y: 1715 }, - { x: 1716, y: 1716 }, - { x: 1717, y: 1717 }, - { x: 1718, y: 1718 }, - { x: 1719, y: 1719 }, - { x: 1720, y: 1720 }, - { x: 1721, y: 1721 }, - { x: 1722, y: 1722 }, - { x: 1723, y: 1723 }, - { x: 1724, y: 1724 }, - { x: 1725, y: 1725 }, - { x: 1726, y: 1726 }, - { x: 1727, y: 1727 }, - { x: 1728, y: 1728 }, - { x: 1729, y: 1729 }, - { x: 1730, y: 1730 }, - { x: 1731, y: 1731 }, - { x: 1732, y: 1732 }, - { x: 1733, y: 1733 }, - { x: 1734, y: 1734 }, - { x: 1735, y: 1735 }, - { x: 1736, y: 1736 }, - { x: 1737, y: 1737 }, - { x: 1738, y: 1738 }, - { x: 1739, y: 1739 }, - { x: 1740, y: 1740 }, - { x: 1741, y: 1741 }, - { x: 1742, y: 1742 }, - { x: 1743, y: 1743 }, - { x: 1744, y: 1744 }, - { x: 1745, y: 1745 }, - { x: 1746, y: 1746 }, - { x: 1747, y: 1747 }, - { x: 1748, y: 1748 }, - { x: 1749, y: 1749 }, - { x: 1750, y: 1750 }, - { x: 1751, y: 1751 }, - { x: 1752, y: 1752 }, - { x: 1753, y: 1753 }, - { x: 1754, y: 1754 }, - { x: 1755, y: 1755 }, - { x: 1756, y: 1756 }, - { x: 1757, y: 1757 }, - { x: 1758, y: 1758 }, - { x: 1759, y: 1759 }, - { x: 1760, y: 1760 }, - { x: 1761, y: 1761 }, - { x: 1762, y: 1762 }, - { x: 1763, y: 1763 }, - { x: 1764, y: 1764 }, - { x: 1765, y: 1765 }, - { x: 1766, y: 1766 }, - { x: 1767, y: 1767 }, - { x: 1768, y: 1768 }, - { x: 1769, y: 1769 }, - { x: 1770, y: 1770 }, - { x: 1771, y: 1771 }, - { x: 1772, y: 1772 }, - { x: 1773, y: 1773 }, - { x: 1774, y: 1774 }, - { x: 1775, y: 1775 }, - { x: 1776, y: 1776 }, - { x: 1777, y: 1777 }, - { x: 1778, y: 1778 }, - { x: 1779, y: 1779 }, - { x: 1780, y: 1780 }, - { x: 1781, y: 1781 }, - { x: 1782, y: 1782 }, - { x: 1783, y: 1783 }, - { x: 1784, y: 1784 }, - { x: 1785, y: 1785 }, - { x: 1786, y: 1786 }, - { x: 1787, y: 1787 }, - { x: 1788, y: 1788 }, - { x: 1789, y: 1789 }, - { x: 1790, y: 1790 }, - { x: 1791, y: 1791 }, - { x: 1792, y: 1792 }, - { x: 1793, y: 1793 }, - { x: 1794, y: 1794 }, - { x: 1795, y: 1795 }, - { x: 1796, y: 1796 }, - { x: 1797, y: 1797 }, - { x: 1798, y: 1798 }, - { x: 1799, y: 1799 }, - { x: 1800, y: 1800 }, - { x: 1801, y: 1801 }, - { x: 1802, y: 1802 }, - { x: 1803, y: 1803 }, - { x: 1804, y: 1804 }, - { x: 1805, y: 1805 }, - { x: 1806, y: 1806 }, - { x: 1807, y: 1807 }, - { x: 1808, y: 1808 }, - { x: 1809, y: 1809 }, - { x: 1810, y: 1810 }, - { x: 1811, y: 1811 }, - { x: 1812, y: 1812 }, - { x: 1813, y: 1813 }, - { x: 1814, y: 1814 }, - { x: 1815, y: 1815 }, - { x: 1816, y: 1816 }, - { x: 1817, y: 1817 }, - { x: 1818, y: 1818 }, - { x: 1819, y: 1819 }, - { x: 1820, y: 1820 }, - { x: 1821, y: 1821 }, - { x: 1822, y: 1822 }, - { x: 1823, y: 1823 }, - { x: 1824, y: 1824 }, - { x: 1825, y: 1825 }, - { x: 1826, y: 1826 }, - { x: 1827, y: 1827 }, - { x: 1828, y: 1828 }, - { x: 1829, y: 1829 }, - { x: 1830, y: 1830 }, - { x: 1831, y: 1831 }, - { x: 1832, y: 1832 }, - { x: 1833, y: 1833 }, - { x: 1834, y: 1834 }, - { x: 1835, y: 1835 }, - { x: 1836, y: 1836 }, - { x: 1837, y: 1837 }, - { x: 1838, y: 1838 }, - { x: 1839, y: 1839 }, - { x: 1840, y: 1840 }, - { x: 1841, y: 1841 }, - { x: 1842, y: 1842 }, - { x: 1843, y: 1843 }, - { x: 1844, y: 1844 }, - { x: 1845, y: 1845 }, - { x: 1846, y: 1846 }, - { x: 1847, y: 1847 }, - { x: 1848, y: 1848 }, - { x: 1849, y: 1849 }, - { x: 1850, y: 1850 }, - { x: 1851, y: 1851 }, - { x: 1852, y: 1852 }, - { x: 1853, y: 1853 }, - { x: 1854, y: 1854 }, - { x: 1855, y: 1855 }, - { x: 1856, y: 1856 }, - { x: 1857, y: 1857 }, - { x: 1858, y: 1858 }, - { x: 1859, y: 1859 }, - { x: 1860, y: 1860 }, - { x: 1861, y: 1861 }, - { x: 1862, y: 1862 }, - { x: 1863, y: 1863 }, - { x: 1864, y: 1864 }, - { x: 1865, y: 1865 }, - { x: 1866, y: 1866 }, - { x: 1867, y: 1867 }, - { x: 1868, y: 1868 }, - { x: 1869, y: 1869 }, - { x: 1870, y: 1870 }, - { x: 1871, y: 1871 }, - { x: 1872, y: 1872 }, - { x: 1873, y: 1873 }, - { x: 1874, y: 1874 }, - { x: 1875, y: 1875 }, - { x: 1876, y: 1876 }, - { x: 1877, y: 1877 }, - { x: 1878, y: 1878 }, - { x: 1879, y: 1879 }, - { x: 1880, y: 1880 }, - { x: 1881, y: 1881 }, - { x: 1882, y: 1882 }, - { x: 1883, y: 1883 }, - { x: 1884, y: 1884 }, - { x: 1885, y: 1885 }, - { x: 1886, y: 1886 }, - { x: 1887, y: 1887 }, - { x: 1888, y: 1888 }, - { x: 1889, y: 1889 }, - { x: 1890, y: 1890 }, - { x: 1891, y: 1891 }, - { x: 1892, y: 1892 }, - { x: 1893, y: 1893 }, - { x: 1894, y: 1894 }, - { x: 1895, y: 1895 }, - { x: 1896, y: 1896 }, - { x: 1897, y: 1897 }, - { x: 1898, y: 1898 }, - { x: 1899, y: 1899 }, - { x: 1900, y: 1900 }, - { x: 1901, y: 1901 }, - { x: 1902, y: 1902 }, - { x: 1903, y: 1903 }, - { x: 1904, y: 1904 }, - { x: 1905, y: 1905 }, - { x: 1906, y: 1906 }, - { x: 1907, y: 1907 }, - { x: 1908, y: 1908 }, - { x: 1909, y: 1909 }, - { x: 1910, y: 1910 }, - { x: 1911, y: 1911 }, - { x: 1912, y: 1912 }, - { x: 1913, y: 1913 }, - { x: 1914, y: 1914 }, - { x: 1915, y: 1915 }, - { x: 1916, y: 1916 }, - { x: 1917, y: 1917 }, - { x: 1918, y: 1918 }, - { x: 1919, y: 1919 }, - { x: 1920, y: 1920 }, - { x: 1921, y: 1921 }, - { x: 1922, y: 1922 }, - { x: 1923, y: 1923 }, - { x: 1924, y: 1924 }, - { x: 1925, y: 1925 }, - { x: 1926, y: 1926 }, - { x: 1927, y: 1927 }, - { x: 1928, y: 1928 }, - { x: 1929, y: 1929 }, - { x: 1930, y: 1930 }, - { x: 1931, y: 1931 }, - { x: 1932, y: 1932 }, - { x: 1933, y: 1933 }, - { x: 1934, y: 1934 }, - { x: 1935, y: 1935 }, - { x: 1936, y: 1936 }, - { x: 1937, y: 1937 }, - { x: 1938, y: 1938 }, - { x: 1939, y: 1939 }, - { x: 1940, y: 1940 }, - { x: 1941, y: 1941 }, - { x: 1942, y: 1942 }, - { x: 1943, y: 1943 }, - { x: 1944, y: 1944 }, - { x: 1945, y: 1945 }, - { x: 1946, y: 1946 }, - { x: 1947, y: 1947 }, - { x: 1948, y: 1948 }, - { x: 1949, y: 1949 }, - { x: 1950, y: 1950 }, - { x: 1951, y: 1951 }, - { x: 1952, y: 1952 }, - { x: 1953, y: 1953 }, - { x: 1954, y: 1954 }, - { x: 1955, y: 1955 }, - { x: 1956, y: 1956 }, - { x: 1957, y: 1957 }, - { x: 1958, y: 1958 }, - { x: 1959, y: 1959 }, - { x: 1960, y: 1960 }, - { x: 1961, y: 1961 }, - { x: 1962, y: 1962 }, - { x: 1963, y: 1963 }, - { x: 1964, y: 1964 }, - { x: 1965, y: 1965 }, - { x: 1966, y: 1966 }, - { x: 1967, y: 1967 }, - { x: 1968, y: 1968 }, - { x: 1969, y: 1969 }, - { x: 1970, y: 1970 }, - { x: 1971, y: 1971 }, - { x: 1972, y: 1972 }, - { x: 1973, y: 1973 }, - { x: 1974, y: 1974 }, - { x: 1975, y: 1975 }, - { x: 1976, y: 1976 }, - { x: 1977, y: 1977 }, - { x: 1978, y: 1978 }, - { x: 1979, y: 1979 }, - { x: 1980, y: 1980 }, - { x: 1981, y: 1981 }, - { x: 1982, y: 1982 }, - { x: 1983, y: 1983 }, - { x: 1984, y: 1984 }, - { x: 1985, y: 1985 }, - { x: 1986, y: 1986 }, - { x: 1987, y: 1987 }, - { x: 1988, y: 1988 }, - { x: 1989, y: 1989 }, - { x: 1990, y: 1990 }, - { x: 1991, y: 1991 }, - { x: 1992, y: 1992 }, - { x: 1993, y: 1993 }, - { x: 1994, y: 1994 }, - { x: 1995, y: 1995 }, - { x: 1996, y: 1996 }, - { x: 1997, y: 1997 }, - { x: 1998, y: 1998 }, - { x: 1999, y: 1999 }, - { x: 2000, y: 2000 }, - { x: 2001, y: 2001 }, - { x: 2002, y: 2002 }, - { x: 2003, y: 2003 }, - { x: 2004, y: 2004 }, - { x: 2005, y: 2005 }, - { x: 2006, y: 2006 }, - { x: 2007, y: 2007 }, - { x: 2008, y: 2008 }, - { x: 2009, y: 2009 }, - { x: 2010, y: 2010 }, - { x: 2011, y: 2011 }, - { x: 2012, y: 2012 }, - { x: 2013, y: 2013 }, - { x: 2014, y: 2014 }, - { x: 2015, y: 2015 }, - { x: 2016, y: 2016 }, - { x: 2017, y: 2017 }, - { x: 2018, y: 2018 }, - { x: 2019, y: 2019 }, - { x: 2020, y: 2020 }, - { x: 2021, y: 2021 }, - { x: 2022, y: 2022 }, - { x: 2023, y: 2023 }, - { x: 2024, y: 2024 }, - { x: 2025, y: 2025 }, - { x: 2026, y: 2026 }, - { x: 2027, y: 2027 }, - { x: 2028, y: 2028 }, - { x: 2029, y: 2029 }, - { x: 2030, y: 2030 }, - { x: 2031, y: 2031 }, - { x: 2032, y: 2032 }, - { x: 2033, y: 2033 }, - { x: 2034, y: 2034 }, - { x: 2035, y: 2035 }, - { x: 2036, y: 2036 }, - { x: 2037, y: 2037 }, - { x: 2038, y: 2038 }, - { x: 2039, y: 2039 }, - { x: 2040, y: 2040 }, - { x: 2041, y: 2041 }, - { x: 2042, y: 2042 }, - { x: 2043, y: 2043 }, - { x: 2044, y: 2044 }, - { x: 2045, y: 2045 }, - { x: 2046, y: 2046 }, - { x: 2047, y: 2047 }, - { x: 2048, y: 2048 }, - { x: 2049, y: 2049 }, - { x: 2050, y: 2050 }, - { x: 2051, y: 2051 }, - { x: 2052, y: 2052 }, - { x: 2053, y: 2053 }, - { x: 2054, y: 2054 }, - { x: 2055, y: 2055 }, - { x: 2056, y: 2056 }, - { x: 2057, y: 2057 }, - { x: 2058, y: 2058 }, - { x: 2059, y: 2059 }, - { x: 2060, y: 2060 }, - { x: 2061, y: 2061 }, - { x: 2062, y: 2062 }, - { x: 2063, y: 2063 }, - { x: 2064, y: 2064 }, - { x: 2065, y: 2065 }, - { x: 2066, y: 2066 }, - { x: 2067, y: 2067 }, - { x: 2068, y: 2068 }, - { x: 2069, y: 2069 }, - { x: 2070, y: 2070 }, - { x: 2071, y: 2071 }, - { x: 2072, y: 2072 }, - { x: 2073, y: 2073 }, - { x: 2074, y: 2074 }, - { x: 2075, y: 2075 }, - { x: 2076, y: 2076 }, - { x: 2077, y: 2077 }, - { x: 2078, y: 2078 }, - { x: 2079, y: 2079 }, - { x: 2080, y: 2080 }, - { x: 2081, y: 2081 }, - { x: 2082, y: 2082 }, - { x: 2083, y: 2083 }, - { x: 2084, y: 2084 }, - { x: 2085, y: 2085 }, - { x: 2086, y: 2086 }, - { x: 2087, y: 2087 }, - { x: 2088, y: 2088 }, - { x: 2089, y: 2089 }, - { x: 2090, y: 2090 }, - { x: 2091, y: 2091 }, - { x: 2092, y: 2092 }, - { x: 2093, y: 2093 }, - { x: 2094, y: 2094 }, - { x: 2095, y: 2095 }, - { x: 2096, y: 2096 }, - { x: 2097, y: 2097 }, - { x: 2098, y: 2098 }, - { x: 2099, y: 2099 }, - { x: 2100, y: 2100 }, - { x: 2101, y: 2101 }, - { x: 2102, y: 2102 }, - { x: 2103, y: 2103 }, - { x: 2104, y: 2104 }, - { x: 2105, y: 2105 }, - { x: 2106, y: 2106 }, - { x: 2107, y: 2107 }, - { x: 2108, y: 2108 }, - { x: 2109, y: 2109 }, - { x: 2110, y: 2110 }, - { x: 2111, y: 2111 }, - { x: 2112, y: 2112 }, - { x: 2113, y: 2113 }, - { x: 2114, y: 2114 }, - { x: 2115, y: 2115 }, - { x: 2116, y: 2116 }, - { x: 2117, y: 2117 }, - { x: 2118, y: 2118 }, - { x: 2119, y: 2119 }, - { x: 2120, y: 2120 }, - { x: 2121, y: 2121 }, - { x: 2122, y: 2122 }, - { x: 2123, y: 2123 }, - { x: 2124, y: 2124 }, - { x: 2125, y: 2125 }, - { x: 2126, y: 2126 }, - { x: 2127, y: 2127 }, - { x: 2128, y: 2128 }, - { x: 2129, y: 2129 }, - { x: 2130, y: 2130 }, - { x: 2131, y: 2131 }, - { x: 2132, y: 2132 }, - { x: 2133, y: 2133 }, - { x: 2134, y: 2134 }, - { x: 2135, y: 2135 }, - { x: 2136, y: 2136 }, - { x: 2137, y: 2137 }, - { x: 2138, y: 2138 }, - { x: 2139, y: 2139 }, - { x: 2140, y: 2140 }, - { x: 2141, y: 2141 }, - { x: 2142, y: 2142 }, - { x: 2143, y: 2143 }, - { x: 2144, y: 2144 }, - { x: 2145, y: 2145 }, - { x: 2146, y: 2146 }, - { x: 2147, y: 2147 }, - { x: 2148, y: 2148 }, - { x: 2149, y: 2149 }, - { x: 2150, y: 2150 }, - { x: 2151, y: 2151 }, - { x: 2152, y: 2152 }, - { x: 2153, y: 2153 }, - { x: 2154, y: 2154 }, - { x: 2155, y: 2155 }, - { x: 2156, y: 2156 }, - { x: 2157, y: 2157 }, - { x: 2158, y: 2158 }, - { x: 2159, y: 2159 }, - { x: 2160, y: 2160 }, - { x: 2161, y: 2161 }, - { x: 2162, y: 2162 }, - { x: 2163, y: 2163 }, - { x: 2164, y: 2164 }, - { x: 2165, y: 2165 }, - { x: 2166, y: 2166 }, - { x: 2167, y: 2167 }, - { x: 2168, y: 2168 }, - { x: 2169, y: 2169 }, - { x: 2170, y: 2170 }, - { x: 2171, y: 2171 }, - { x: 2172, y: 2172 }, - { x: 2173, y: 2173 }, - { x: 2174, y: 2174 }, - { x: 2175, y: 2175 }, - { x: 2176, y: 2176 }, - { x: 2177, y: 2177 }, - { x: 2178, y: 2178 }, - { x: 2179, y: 2179 }, - { x: 2180, y: 2180 }, - { x: 2181, y: 2181 }, - { x: 2182, y: 2182 }, - { x: 2183, y: 2183 }, - { x: 2184, y: 2184 }, - { x: 2185, y: 2185 }, - { x: 2186, y: 2186 }, - { x: 2187, y: 2187 }, - { x: 2188, y: 2188 }, - { x: 2189, y: 2189 }, - { x: 2190, y: 2190 }, - { x: 2191, y: 2191 }, - { x: 2192, y: 2192 }, - { x: 2193, y: 2193 }, - { x: 2194, y: 2194 }, - { x: 2195, y: 2195 }, - { x: 2196, y: 2196 }, - { x: 2197, y: 2197 }, - { x: 2198, y: 2198 }, - { x: 2199, y: 2199 }, - { x: 2200, y: 2200 }, - { x: 2201, y: 2201 }, - { x: 2202, y: 2202 }, - { x: 2203, y: 2203 }, - { x: 2204, y: 2204 }, - { x: 2205, y: 2205 }, - { x: 2206, y: 2206 }, - { x: 2207, y: 2207 }, - { x: 2208, y: 2208 }, - { x: 2209, y: 2209 }, - { x: 2210, y: 2210 }, - { x: 2211, y: 2211 }, - { x: 2212, y: 2212 }, - { x: 2213, y: 2213 }, - { x: 2214, y: 2214 }, - { x: 2215, y: 2215 }, - { x: 2216, y: 2216 }, - { x: 2217, y: 2217 }, - { x: 2218, y: 2218 }, - { x: 2219, y: 2219 }, - { x: 2220, y: 2220 }, - { x: 2221, y: 2221 }, - { x: 2222, y: 2222 }, - { x: 2223, y: 2223 }, - { x: 2224, y: 2224 }, - { x: 2225, y: 2225 }, - { x: 2226, y: 2226 }, - { x: 2227, y: 2227 }, - { x: 2228, y: 2228 }, - { x: 2229, y: 2229 }, - { x: 2230, y: 2230 }, - { x: 2231, y: 2231 }, - { x: 2232, y: 2232 }, - { x: 2233, y: 2233 }, - { x: 2234, y: 2234 }, - { x: 2235, y: 2235 }, - { x: 2236, y: 2236 }, - { x: 2237, y: 2237 }, - { x: 2238, y: 2238 }, - { x: 2239, y: 2239 }, - { x: 2240, y: 2240 }, - { x: 2241, y: 2241 }, - { x: 2242, y: 2242 }, - { x: 2243, y: 2243 }, - { x: 2244, y: 2244 }, - { x: 2245, y: 2245 }, - { x: 2246, y: 2246 }, - { x: 2247, y: 2247 }, - { x: 2248, y: 2248 }, - { x: 2249, y: 2249 }, - { x: 2250, y: 2250 }, - { x: 2251, y: 2251 }, - { x: 2252, y: 2252 }, - { x: 2253, y: 2253 }, - { x: 2254, y: 2254 }, - { x: 2255, y: 2255 }, - { x: 2256, y: 2256 }, - { x: 2257, y: 2257 }, - { x: 2258, y: 2258 }, - { x: 2259, y: 2259 }, - { x: 2260, y: 2260 }, - { x: 2261, y: 2261 }, - { x: 2262, y: 2262 }, - { x: 2263, y: 2263 }, - { x: 2264, y: 2264 }, - { x: 2265, y: 2265 }, - { x: 2266, y: 2266 }, - { x: 2267, y: 2267 }, - { x: 2268, y: 2268 }, - { x: 2269, y: 2269 }, - { x: 2270, y: 2270 }, - { x: 2271, y: 2271 }, - { x: 2272, y: 2272 }, - { x: 2273, y: 2273 }, - { x: 2274, y: 2274 }, - { x: 2275, y: 2275 }, - { x: 2276, y: 2276 }, - { x: 2277, y: 2277 }, - { x: 2278, y: 2278 }, - { x: 2279, y: 2279 }, - { x: 2280, y: 2280 }, - { x: 2281, y: 2281 }, - { x: 2282, y: 2282 }, - { x: 2283, y: 2283 }, - { x: 2284, y: 2284 }, - { x: 2285, y: 2285 }, - { x: 2286, y: 2286 }, - { x: 2287, y: 2287 }, - { x: 2288, y: 2288 }, - { x: 2289, y: 2289 }, - { x: 2290, y: 2290 }, - { x: 2291, y: 2291 }, - { x: 2292, y: 2292 }, - { x: 2293, y: 2293 }, - { x: 2294, y: 2294 }, - { x: 2295, y: 2295 }, - { x: 2296, y: 2296 }, - { x: 2297, y: 2297 }, - { x: 2298, y: 2298 }, - { x: 2299, y: 2299 }, - { x: 2300, y: 2300 }, - { x: 2301, y: 2301 }, - { x: 2302, y: 2302 }, - { x: 2303, y: 2303 }, - { x: 2304, y: 2304 }, - { x: 2305, y: 2305 }, - { x: 2306, y: 2306 }, - { x: 2307, y: 2307 }, - { x: 2308, y: 2308 }, - { x: 2309, y: 2309 }, - { x: 2310, y: 2310 }, - { x: 2311, y: 2311 }, - { x: 2312, y: 2312 }, - { x: 2313, y: 2313 }, - { x: 2314, y: 2314 }, - { x: 2315, y: 2315 }, - { x: 2316, y: 2316 }, - { x: 2317, y: 2317 }, - { x: 2318, y: 2318 }, - { x: 2319, y: 2319 }, - { x: 2320, y: 2320 }, - { x: 2321, y: 2321 }, - { x: 2322, y: 2322 }, - { x: 2323, y: 2323 }, - { x: 2324, y: 2324 }, - { x: 2325, y: 2325 }, - { x: 2326, y: 2326 }, - { x: 2327, y: 2327 }, - { x: 2328, y: 2328 }, - { x: 2329, y: 2329 }, - { x: 2330, y: 2330 }, - { x: 2331, y: 2331 }, - { x: 2332, y: 2332 }, - { x: 2333, y: 2333 }, - { x: 2334, y: 2334 }, - { x: 2335, y: 2335 }, - { x: 2336, y: 2336 }, - { x: 2337, y: 2337 }, - { x: 2338, y: 2338 }, - { x: 2339, y: 2339 }, - { x: 2340, y: 2340 }, - { x: 2341, y: 2341 }, - { x: 2342, y: 2342 }, - { x: 2343, y: 2343 }, - { x: 2344, y: 2344 }, - { x: 2345, y: 2345 }, - { x: 2346, y: 2346 }, - { x: 2347, y: 2347 }, - { x: 2348, y: 2348 }, - { x: 2349, y: 2349 }, - { x: 2350, y: 2350 }, - { x: 2351, y: 2351 }, - { x: 2352, y: 2352 }, - { x: 2353, y: 2353 }, - { x: 2354, y: 2354 }, - { x: 2355, y: 2355 }, - { x: 2356, y: 2356 }, - { x: 2357, y: 2357 }, - { x: 2358, y: 2358 }, - { x: 2359, y: 2359 }, - { x: 2360, y: 2360 }, - { x: 2361, y: 2361 }, - { x: 2362, y: 2362 }, - { x: 2363, y: 2363 }, - { x: 2364, y: 2364 }, - { x: 2365, y: 2365 }, - { x: 2366, y: 2366 }, - { x: 2367, y: 2367 }, - { x: 2368, y: 2368 }, - { x: 2369, y: 2369 }, - { x: 2370, y: 2370 }, - { x: 2371, y: 2371 }, - { x: 2372, y: 2372 }, - { x: 2373, y: 2373 }, - { x: 2374, y: 2374 }, - { x: 2375, y: 2375 }, - { x: 2376, y: 2376 }, - { x: 2377, y: 2377 }, - { x: 2378, y: 2378 }, - { x: 2379, y: 2379 }, - { x: 2380, y: 2380 }, - { x: 2381, y: 2381 }, - { x: 2382, y: 2382 }, - { x: 2383, y: 2383 }, - { x: 2384, y: 2384 }, - { x: 2385, y: 2385 }, - { x: 2386, y: 2386 }, - { x: 2387, y: 2387 }, - { x: 2388, y: 2388 }, - { x: 2389, y: 2389 }, - { x: 2390, y: 2390 }, - { x: 2391, y: 2391 }, - { x: 2392, y: 2392 }, - { x: 2393, y: 2393 }, - { x: 2394, y: 2394 }, - { x: 2395, y: 2395 }, - { x: 2396, y: 2396 }, - { x: 2397, y: 2397 }, - { x: 2398, y: 2398 }, - { x: 2399, y: 2399 }, - { x: 2400, y: 2400 }, - { x: 2401, y: 2401 }, - { x: 2402, y: 2402 }, - { x: 2403, y: 2403 }, - { x: 2404, y: 2404 }, - { x: 2405, y: 2405 }, - { x: 2406, y: 2406 }, - { x: 2407, y: 2407 }, - { x: 2408, y: 2408 }, - { x: 2409, y: 2409 }, - { x: 2410, y: 2410 }, - { x: 2411, y: 2411 }, - { x: 2412, y: 2412 }, - { x: 2413, y: 2413 }, - { x: 2414, y: 2414 }, - { x: 2415, y: 2415 }, - { x: 2416, y: 2416 }, - { x: 2417, y: 2417 }, - { x: 2418, y: 2418 }, - { x: 2419, y: 2419 }, - { x: 2420, y: 2420 }, - { x: 2421, y: 2421 }, - { x: 2422, y: 2422 }, - { x: 2423, y: 2423 }, - { x: 2424, y: 2424 }, - { x: 2425, y: 2425 }, - { x: 2426, y: 2426 }, - { x: 2427, y: 2427 }, - { x: 2428, y: 2428 }, - { x: 2429, y: 2429 }, - { x: 2430, y: 2430 }, - { x: 2431, y: 2431 }, - { x: 2432, y: 2432 }, - { x: 2433, y: 2433 }, - { x: 2434, y: 2434 }, - { x: 2435, y: 2435 }, - { x: 2436, y: 2436 }, - { x: 2437, y: 2437 }, - { x: 2438, y: 2438 }, - { x: 2439, y: 2439 }, - { x: 2440, y: 2440 }, - { x: 2441, y: 2441 }, - { x: 2442, y: 2442 }, - { x: 2443, y: 2443 }, - { x: 2444, y: 2444 }, - { x: 2445, y: 2445 }, - { x: 2446, y: 2446 }, - { x: 2447, y: 2447 }, - { x: 2448, y: 2448 }, - { x: 2449, y: 2449 }, - { x: 2450, y: 2450 }, - { x: 2451, y: 2451 }, - { x: 2452, y: 2452 }, - { x: 2453, y: 2453 }, - { x: 2454, y: 2454 }, - { x: 2455, y: 2455 }, - { x: 2456, y: 2456 }, - { x: 2457, y: 2457 }, - { x: 2458, y: 2458 }, - { x: 2459, y: 2459 }, - { x: 2460, y: 2460 }, - { x: 2461, y: 2461 }, - { x: 2462, y: 2462 }, - { x: 2463, y: 2463 }, - { x: 2464, y: 2464 }, - { x: 2465, y: 2465 }, - { x: 2466, y: 2466 }, - { x: 2467, y: 2467 }, - { x: 2468, y: 2468 }, - { x: 2469, y: 2469 }, - { x: 2470, y: 2470 }, - { x: 2471, y: 2471 }, - { x: 2472, y: 2472 }, - { x: 2473, y: 2473 }, - { x: 2474, y: 2474 }, - { x: 2475, y: 2475 }, - { x: 2476, y: 2476 }, - { x: 2477, y: 2477 }, - { x: 2478, y: 2478 }, - { x: 2479, y: 2479 }, - { x: 2480, y: 2480 }, - { x: 2481, y: 2481 }, - { x: 2482, y: 2482 }, - { x: 2483, y: 2483 }, - { x: 2484, y: 2484 }, - { x: 2485, y: 2485 }, - { x: 2486, y: 2486 }, - { x: 2487, y: 2487 }, - { x: 2488, y: 2488 }, - { x: 2489, y: 2489 }, - { x: 2490, y: 2490 }, - { x: 2491, y: 2491 }, - { x: 2492, y: 2492 }, - { x: 2493, y: 2493 }, - { x: 2494, y: 2494 }, - { x: 2495, y: 2495 }, - { x: 2496, y: 2496 }, - { x: 2497, y: 2497 }, - { x: 2498, y: 2498 }, - { x: 2499, y: 2499 }, - { x: 2500, y: 2500 }, - { x: 2501, y: 2501 }, - { x: 2502, y: 2502 }, - { x: 2503, y: 2503 }, - { x: 2504, y: 2504 }, - { x: 2505, y: 2505 }, - { x: 2506, y: 2506 }, - { x: 2507, y: 2507 }, - { x: 2508, y: 2508 }, - { x: 2509, y: 2509 }, - { x: 2510, y: 2510 }, - { x: 2511, y: 2511 }, - { x: 2512, y: 2512 }, - { x: 2513, y: 2513 }, - { x: 2514, y: 2514 }, - { x: 2515, y: 2515 }, - { x: 2516, y: 2516 }, - { x: 2517, y: 2517 }, - { x: 2518, y: 2518 }, - { x: 2519, y: 2519 }, - { x: 2520, y: 2520 }, - { x: 2521, y: 2521 }, - { x: 2522, y: 2522 }, - { x: 2523, y: 2523 }, - { x: 2524, y: 2524 }, - { x: 2525, y: 2525 }, - { x: 2526, y: 2526 }, - { x: 2527, y: 2527 }, - { x: 2528, y: 2528 }, - { x: 2529, y: 2529 }, - { x: 2530, y: 2530 }, - { x: 2531, y: 2531 }, - { x: 2532, y: 2532 }, - { x: 2533, y: 2533 }, - { x: 2534, y: 2534 }, - { x: 2535, y: 2535 }, - { x: 2536, y: 2536 }, - { x: 2537, y: 2537 }, - { x: 2538, y: 2538 }, - { x: 2539, y: 2539 }, - { x: 2540, y: 2540 }, - { x: 2541, y: 2541 }, - { x: 2542, y: 2542 }, - { x: 2543, y: 2543 }, - { x: 2544, y: 2544 }, - { x: 2545, y: 2545 }, - { x: 2546, y: 2546 }, - { x: 2547, y: 2547 }, - { x: 2548, y: 2548 }, - { x: 2549, y: 2549 }, - { x: 2550, y: 2550 }, - { x: 2551, y: 2551 }, - { x: 2552, y: 2552 }, - { x: 2553, y: 2553 }, - { x: 2554, y: 2554 }, - { x: 2555, y: 2555 }, - { x: 2556, y: 2556 }, - { x: 2557, y: 2557 }, - { x: 2558, y: 2558 }, - { x: 2559, y: 2559 }, - { x: 2560, y: 2560 }, - { x: 2561, y: 2561 }, - { x: 2562, y: 2562 }, - { x: 2563, y: 2563 }, - { x: 2564, y: 2564 }, - { x: 2565, y: 2565 }, - { x: 2566, y: 2566 }, - { x: 2567, y: 2567 }, - { x: 2568, y: 2568 }, - { x: 2569, y: 2569 }, - { x: 2570, y: 2570 }, - { x: 2571, y: 2571 }, - { x: 2572, y: 2572 }, - { x: 2573, y: 2573 }, - { x: 2574, y: 2574 }, - { x: 2575, y: 2575 }, - { x: 2576, y: 2576 }, - { x: 2577, y: 2577 }, - { x: 2578, y: 2578 }, - { x: 2579, y: 2579 }, - { x: 2580, y: 2580 }, - { x: 2581, y: 2581 }, - { x: 2582, y: 2582 }, - { x: 2583, y: 2583 }, - { x: 2584, y: 2584 }, - { x: 2585, y: 2585 }, - { x: 2586, y: 2586 }, - { x: 2587, y: 2587 }, - { x: 2588, y: 2588 }, - { x: 2589, y: 2589 }, - { x: 2590, y: 2590 }, - { x: 2591, y: 2591 }, - { x: 2592, y: 2592 }, - { x: 2593, y: 2593 }, - { x: 2594, y: 2594 }, - { x: 2595, y: 2595 }, - { x: 2596, y: 2596 }, - { x: 2597, y: 2597 }, - { x: 2598, y: 2598 }, - { x: 2599, y: 2599 }, - { x: 2600, y: 2600 }, - { x: 2601, y: 2601 }, - { x: 2602, y: 2602 }, - { x: 2603, y: 2603 }, - { x: 2604, y: 2604 }, - { x: 2605, y: 2605 }, - { x: 2606, y: 2606 }, - { x: 2607, y: 2607 }, - { x: 2608, y: 2608 }, - { x: 2609, y: 2609 }, - { x: 2610, y: 2610 }, - { x: 2611, y: 2611 }, - { x: 2612, y: 2612 }, - { x: 2613, y: 2613 }, - { x: 2614, y: 2614 }, - { x: 2615, y: 2615 }, - { x: 2616, y: 2616 }, - { x: 2617, y: 2617 }, - { x: 2618, y: 2618 }, - { x: 2619, y: 2619 }, - { x: 2620, y: 2620 }, - { x: 2621, y: 2621 }, - { x: 2622, y: 2622 }, - { x: 2623, y: 2623 }, - { x: 2624, y: 2624 }, - { x: 2625, y: 2625 }, - { x: 2626, y: 2626 }, - { x: 2627, y: 2627 }, - { x: 2628, y: 2628 }, - { x: 2629, y: 2629 }, - { x: 2630, y: 2630 }, - { x: 2631, y: 2631 }, - { x: 2632, y: 2632 }, - { x: 2633, y: 2633 }, - { x: 2634, y: 2634 }, - { x: 2635, y: 2635 }, - { x: 2636, y: 2636 }, - { x: 2637, y: 2637 }, - { x: 2638, y: 2638 }, - { x: 2639, y: 2639 }, - { x: 2640, y: 2640 }, - { x: 2641, y: 2641 }, - { x: 2642, y: 2642 }, - { x: 2643, y: 2643 }, - { x: 2644, y: 2644 }, - { x: 2645, y: 2645 }, - { x: 2646, y: 2646 }, - { x: 2647, y: 2647 }, - { x: 2648, y: 2648 }, - { x: 2649, y: 2649 }, - { x: 2650, y: 2650 }, - { x: 2651, y: 2651 }, - { x: 2652, y: 2652 }, - { x: 2653, y: 2653 }, - { x: 2654, y: 2654 }, - { x: 2655, y: 2655 }, - { x: 2656, y: 2656 }, - { x: 2657, y: 2657 }, - { x: 2658, y: 2658 }, - { x: 2659, y: 2659 }, - { x: 2660, y: 2660 }, - { x: 2661, y: 2661 }, - { x: 2662, y: 2662 }, - { x: 2663, y: 2663 }, - { x: 2664, y: 2664 }, - { x: 2665, y: 2665 }, - { x: 2666, y: 2666 }, - { x: 2667, y: 2667 }, - { x: 2668, y: 2668 }, - { x: 2669, y: 2669 }, - { x: 2670, y: 2670 }, - { x: 2671, y: 2671 }, - { x: 2672, y: 2672 }, - { x: 2673, y: 2673 }, - { x: 2674, y: 2674 }, - { x: 2675, y: 2675 }, - { x: 2676, y: 2676 }, - { x: 2677, y: 2677 }, - { x: 2678, y: 2678 }, - { x: 2679, y: 2679 }, - { x: 2680, y: 2680 }, - { x: 2681, y: 2681 }, - { x: 2682, y: 2682 }, - { x: 2683, y: 2683 }, - { x: 2684, y: 2684 }, - { x: 2685, y: 2685 }, - { x: 2686, y: 2686 }, - { x: 2687, y: 2687 }, - { x: 2688, y: 2688 }, - { x: 2689, y: 2689 }, - { x: 2690, y: 2690 }, - { x: 2691, y: 2691 }, - { x: 2692, y: 2692 }, - { x: 2693, y: 2693 }, - { x: 2694, y: 2694 }, - { x: 2695, y: 2695 }, - { x: 2696, y: 2696 }, - { x: 2697, y: 2697 }, - { x: 2698, y: 2698 }, - { x: 2699, y: 2699 }, - { x: 2700, y: 2700 }, - { x: 2701, y: 2701 }, - { x: 2702, y: 2702 }, - { x: 2703, y: 2703 }, - { x: 2704, y: 2704 }, - { x: 2705, y: 2705 }, - { x: 2706, y: 2706 }, - { x: 2707, y: 2707 }, - { x: 2708, y: 2708 }, - { x: 2709, y: 2709 }, - { x: 2710, y: 2710 }, - { x: 2711, y: 2711 }, - { x: 2712, y: 2712 }, - { x: 2713, y: 2713 }, - { x: 2714, y: 2714 }, - { x: 2715, y: 2715 }, - { x: 2716, y: 2716 }, - { x: 2717, y: 2717 }, - { x: 2718, y: 2718 }, - { x: 2719, y: 2719 }, - { x: 2720, y: 2720 }, - { x: 2721, y: 2721 }, - { x: 2722, y: 2722 }, - { x: 2723, y: 2723 }, - { x: 2724, y: 2724 }, - { x: 2725, y: 2725 }, - { x: 2726, y: 2726 }, - { x: 2727, y: 2727 }, - { x: 2728, y: 2728 }, - { x: 2729, y: 2729 }, - { x: 2730, y: 2730 }, - { x: 2731, y: 2731 }, - { x: 2732, y: 2732 }, - { x: 2733, y: 2733 }, - { x: 2734, y: 2734 }, - { x: 2735, y: 2735 }, - { x: 2736, y: 2736 }, - { x: 2737, y: 2737 }, - { x: 2738, y: 2738 }, - { x: 2739, y: 2739 }, - { x: 2740, y: 2740 }, - { x: 2741, y: 2741 }, - { x: 2742, y: 2742 }, - { x: 2743, y: 2743 }, - { x: 2744, y: 2744 }, - { x: 2745, y: 2745 }, - { x: 2746, y: 2746 }, - { x: 2747, y: 2747 }, - { x: 2748, y: 2748 }, - { x: 2749, y: 2749 }, - { x: 2750, y: 2750 }, - { x: 2751, y: 2751 }, - { x: 2752, y: 2752 }, - { x: 2753, y: 2753 }, - { x: 2754, y: 2754 }, - { x: 2755, y: 2755 }, - { x: 2756, y: 2756 }, - { x: 2757, y: 2757 }, - { x: 2758, y: 2758 }, - { x: 2759, y: 2759 }, - { x: 2760, y: 2760 }, - { x: 2761, y: 2761 }, - { x: 2762, y: 2762 }, - { x: 2763, y: 2763 }, - { x: 2764, y: 2764 }, - { x: 2765, y: 2765 }, - { x: 2766, y: 2766 }, - { x: 2767, y: 2767 }, - { x: 2768, y: 2768 }, - { x: 2769, y: 2769 }, - { x: 2770, y: 2770 }, - { x: 2771, y: 2771 }, - { x: 2772, y: 2772 }, - { x: 2773, y: 2773 }, - { x: 2774, y: 2774 }, - { x: 2775, y: 2775 }, - { x: 2776, y: 2776 }, - { x: 2777, y: 2777 }, - { x: 2778, y: 2778 }, - { x: 2779, y: 2779 }, - { x: 2780, y: 2780 }, - { x: 2781, y: 2781 }, - { x: 2782, y: 2782 }, - { x: 2783, y: 2783 }, - { x: 2784, y: 2784 }, - { x: 2785, y: 2785 }, - { x: 2786, y: 2786 }, - { x: 2787, y: 2787 }, - { x: 2788, y: 2788 }, - { x: 2789, y: 2789 }, - { x: 2790, y: 2790 }, - { x: 2791, y: 2791 }, - { x: 2792, y: 2792 }, - { x: 2793, y: 2793 }, - { x: 2794, y: 2794 }, - { x: 2795, y: 2795 }, - { x: 2796, y: 2796 }, - { x: 2797, y: 2797 }, - { x: 2798, y: 2798 }, - { x: 2799, y: 2799 }, - { x: 2800, y: 2800 }, - { x: 2801, y: 2801 }, - { x: 2802, y: 2802 }, - { x: 2803, y: 2803 }, - { x: 2804, y: 2804 }, - { x: 2805, y: 2805 }, - { x: 2806, y: 2806 }, - { x: 2807, y: 2807 }, - { x: 2808, y: 2808 }, - { x: 2809, y: 2809 }, - { x: 2810, y: 2810 }, - { x: 2811, y: 2811 }, - { x: 2812, y: 2812 }, - { x: 2813, y: 2813 }, - { x: 2814, y: 2814 }, - { x: 2815, y: 2815 }, - { x: 2816, y: 2816 }, - { x: 2817, y: 2817 }, - { x: 2818, y: 2818 }, - { x: 2819, y: 2819 }, - { x: 2820, y: 2820 }, - { x: 2821, y: 2821 }, - { x: 2822, y: 2822 }, - { x: 2823, y: 2823 }, - { x: 2824, y: 2824 }, - { x: 2825, y: 2825 }, - { x: 2826, y: 2826 }, - { x: 2827, y: 2827 }, - { x: 2828, y: 2828 }, - { x: 2829, y: 2829 }, - { x: 2830, y: 2830 }, - { x: 2831, y: 2831 }, - { x: 2832, y: 2832 }, - { x: 2833, y: 2833 }, - { x: 2834, y: 2834 }, - { x: 2835, y: 2835 }, - { x: 2836, y: 2836 }, - { x: 2837, y: 2837 }, - { x: 2838, y: 2838 }, - { x: 2839, y: 2839 }, - { x: 2840, y: 2840 }, - { x: 2841, y: 2841 }, - { x: 2842, y: 2842 }, - { x: 2843, y: 2843 }, - { x: 2844, y: 2844 }, - { x: 2845, y: 2845 }, - { x: 2846, y: 2846 }, - { x: 2847, y: 2847 }, - { x: 2848, y: 2848 }, - { x: 2849, y: 2849 }, - { x: 2850, y: 2850 }, - { x: 2851, y: 2851 }, - { x: 2852, y: 2852 }, - { x: 2853, y: 2853 }, - { x: 2854, y: 2854 }, - { x: 2855, y: 2855 }, - { x: 2856, y: 2856 }, - { x: 2857, y: 2857 }, - { x: 2858, y: 2858 }, - { x: 2859, y: 2859 }, - { x: 2860, y: 2860 }, - { x: 2861, y: 2861 }, - { x: 2862, y: 2862 }, - { x: 2863, y: 2863 }, - { x: 2864, y: 2864 }, - { x: 2865, y: 2865 }, - { x: 2866, y: 2866 }, - { x: 2867, y: 2867 }, - { x: 2868, y: 2868 }, - { x: 2869, y: 2869 }, - { x: 2870, y: 2870 }, - { x: 2871, y: 2871 }, - { x: 2872, y: 2872 }, - { x: 2873, y: 2873 }, - { x: 2874, y: 2874 }, - { x: 2875, y: 2875 }, - { x: 2876, y: 2876 }, - { x: 2877, y: 2877 }, - { x: 2878, y: 2878 }, - { x: 2879, y: 2879 }, - { x: 2880, y: 2880 }, - { x: 2881, y: 2881 }, - { x: 2882, y: 2882 }, - { x: 2883, y: 2883 }, - { x: 2884, y: 2884 }, - { x: 2885, y: 2885 }, - { x: 2886, y: 2886 }, - { x: 2887, y: 2887 }, - { x: 2888, y: 2888 }, - { x: 2889, y: 2889 }, - { x: 2890, y: 2890 }, - { x: 2891, y: 2891 }, - { x: 2892, y: 2892 }, - { x: 2893, y: 2893 }, - { x: 2894, y: 2894 }, - { x: 2895, y: 2895 }, - { x: 2896, y: 2896 }, - { x: 2897, y: 2897 }, - { x: 2898, y: 2898 }, - { x: 2899, y: 2899 }, - { x: 2900, y: 2900 }, - { x: 2901, y: 2901 }, - { x: 2902, y: 2902 }, - { x: 2903, y: 2903 }, - { x: 2904, y: 2904 }, - { x: 2905, y: 2905 }, - { x: 2906, y: 2906 }, - { x: 2907, y: 2907 }, - { x: 2908, y: 2908 }, - { x: 2909, y: 2909 }, - { x: 2910, y: 2910 }, - { x: 2911, y: 2911 }, - { x: 2912, y: 2912 }, - { x: 2913, y: 2913 }, - { x: 2914, y: 2914 }, - { x: 2915, y: 2915 }, - { x: 2916, y: 2916 }, - { x: 2917, y: 2917 }, - { x: 2918, y: 2918 }, - { x: 2919, y: 2919 }, - { x: 2920, y: 2920 }, - { x: 2921, y: 2921 }, - { x: 2922, y: 2922 }, - { x: 2923, y: 2923 }, - { x: 2924, y: 2924 }, - { x: 2925, y: 2925 }, - { x: 2926, y: 2926 }, - { x: 2927, y: 2927 }, - { x: 2928, y: 2928 }, - { x: 2929, y: 2929 }, - { x: 2930, y: 2930 }, - { x: 2931, y: 2931 }, - { x: 2932, y: 2932 }, - { x: 2933, y: 2933 }, - { x: 2934, y: 2934 }, - { x: 2935, y: 2935 }, - { x: 2936, y: 2936 }, - { x: 2937, y: 2937 }, - { x: 2938, y: 2938 }, - { x: 2939, y: 2939 }, - { x: 2940, y: 2940 }, - { x: 2941, y: 2941 }, - { x: 2942, y: 2942 }, - { x: 2943, y: 2943 }, - { x: 2944, y: 2944 }, - { x: 2945, y: 2945 }, - { x: 2946, y: 2946 }, - { x: 2947, y: 2947 }, - { x: 2948, y: 2948 }, - { x: 2949, y: 2949 }, - { x: 2950, y: 2950 }, - { x: 2951, y: 2951 }, - { x: 2952, y: 2952 }, - { x: 2953, y: 2953 }, - { x: 2954, y: 2954 }, - { x: 2955, y: 2955 }, - { x: 2956, y: 2956 }, - { x: 2957, y: 2957 }, - { x: 2958, y: 2958 }, - { x: 2959, y: 2959 }, - { x: 2960, y: 2960 }, - { x: 2961, y: 2961 }, - { x: 2962, y: 2962 }, - { x: 2963, y: 2963 }, - { x: 2964, y: 2964 }, - { x: 2965, y: 2965 }, - { x: 2966, y: 2966 }, - { x: 2967, y: 2967 }, - { x: 2968, y: 2968 }, - { x: 2969, y: 2969 }, - { x: 2970, y: 2970 }, - { x: 2971, y: 2971 }, - { x: 2972, y: 2972 }, - { x: 2973, y: 2973 }, - { x: 2974, y: 2974 }, - { x: 2975, y: 2975 }, - { x: 2976, y: 2976 }, - { x: 2977, y: 2977 }, - { x: 2978, y: 2978 }, - { x: 2979, y: 2979 }, - { x: 2980, y: 2980 }, - { x: 2981, y: 2981 }, - { x: 2982, y: 2982 }, - { x: 2983, y: 2983 }, - { x: 2984, y: 2984 }, - { x: 2985, y: 2985 }, - { x: 2986, y: 2986 }, - { x: 2987, y: 2987 }, - { x: 2988, y: 2988 }, - { x: 2989, y: 2989 }, - { x: 2990, y: 2990 }, - { x: 2991, y: 2991 }, - { x: 2992, y: 2992 }, - { x: 2993, y: 2993 }, - { x: 2994, y: 2994 }, - { x: 2995, y: 2995 }, - { x: 2996, y: 2996 }, - { x: 2997, y: 2997 }, - { x: 2998, y: 2998 }, - { x: 2999, y: 2999 }, - { x: 3000, y: 3000 }, - { x: 3001, y: 3001 }, - { x: 3002, y: 3002 }, - { x: 3003, y: 3003 }, - { x: 3004, y: 3004 }, - { x: 3005, y: 3005 }, - { x: 3006, y: 3006 }, - { x: 3007, y: 3007 }, - { x: 3008, y: 3008 }, - { x: 3009, y: 3009 }, - { x: 3010, y: 3010 }, - { x: 3011, y: 3011 }, - { x: 3012, y: 3012 }, - { x: 3013, y: 3013 }, - { x: 3014, y: 3014 }, - { x: 3015, y: 3015 }, - { x: 3016, y: 3016 }, - { x: 3017, y: 3017 }, - { x: 3018, y: 3018 }, - { x: 3019, y: 3019 }, - { x: 3020, y: 3020 }, - { x: 3021, y: 3021 }, - { x: 3022, y: 3022 }, - { x: 3023, y: 3023 }, - { x: 3024, y: 3024 }, - { x: 3025, y: 3025 }, - { x: 3026, y: 3026 }, - { x: 3027, y: 3027 }, - { x: 3028, y: 3028 }, - { x: 3029, y: 3029 }, - { x: 3030, y: 3030 }, - { x: 3031, y: 3031 }, - { x: 3032, y: 3032 }, - { x: 3033, y: 3033 }, - { x: 3034, y: 3034 }, - { x: 3035, y: 3035 }, - { x: 3036, y: 3036 }, - { x: 3037, y: 3037 }, - { x: 3038, y: 3038 }, - { x: 3039, y: 3039 }, - { x: 3040, y: 3040 }, - { x: 3041, y: 3041 }, - { x: 3042, y: 3042 }, - { x: 3043, y: 3043 }, - { x: 3044, y: 3044 }, - { x: 3045, y: 3045 }, - { x: 3046, y: 3046 }, - { x: 3047, y: 3047 }, - { x: 3048, y: 3048 }, - { x: 3049, y: 3049 }, - { x: 3050, y: 3050 }, - { x: 3051, y: 3051 }, - { x: 3052, y: 3052 }, - { x: 3053, y: 3053 }, - { x: 3054, y: 3054 }, - { x: 3055, y: 3055 }, - { x: 3056, y: 3056 }, - { x: 3057, y: 3057 }, - { x: 3058, y: 3058 }, - { x: 3059, y: 3059 }, - { x: 3060, y: 3060 }, - { x: 3061, y: 3061 }, - { x: 3062, y: 3062 }, - { x: 3063, y: 3063 }, - { x: 3064, y: 3064 }, - { x: 3065, y: 3065 }, - { x: 3066, y: 3066 }, - { x: 3067, y: 3067 }, - { x: 3068, y: 3068 }, - { x: 3069, y: 3069 }, - { x: 3070, y: 3070 }, - { x: 3071, y: 3071 }, - { x: 3072, y: 3072 }, - { x: 3073, y: 3073 }, - { x: 3074, y: 3074 }, - { x: 3075, y: 3075 }, - { x: 3076, y: 3076 }, - { x: 3077, y: 3077 }, - { x: 3078, y: 3078 }, - { x: 3079, y: 3079 }, - { x: 3080, y: 3080 }, - { x: 3081, y: 3081 }, - { x: 3082, y: 3082 }, - { x: 3083, y: 3083 }, - { x: 3084, y: 3084 }, - { x: 3085, y: 3085 }, - { x: 3086, y: 3086 }, - { x: 3087, y: 3087 }, - { x: 3088, y: 3088 }, - { x: 3089, y: 3089 }, - { x: 3090, y: 3090 }, - { x: 3091, y: 3091 }, - { x: 3092, y: 3092 }, - { x: 3093, y: 3093 }, - { x: 3094, y: 3094 }, - { x: 3095, y: 3095 }, - { x: 3096, y: 3096 }, - { x: 3097, y: 3097 }, - { x: 3098, y: 3098 }, - { x: 3099, y: 3099 }, - { x: 3100, y: 3100 }, - { x: 3101, y: 3101 }, - { x: 3102, y: 3102 }, - { x: 3103, y: 3103 }, - { x: 3104, y: 3104 }, - { x: 3105, y: 3105 }, - { x: 3106, y: 3106 }, - { x: 3107, y: 3107 }, - { x: 3108, y: 3108 }, - { x: 3109, y: 3109 }, - { x: 3110, y: 3110 }, - { x: 3111, y: 3111 }, - { x: 3112, y: 3112 }, - { x: 3113, y: 3113 }, - { x: 3114, y: 3114 }, - { x: 3115, y: 3115 }, - { x: 3116, y: 3116 }, - { x: 3117, y: 3117 }, - { x: 3118, y: 3118 }, - { x: 3119, y: 3119 }, - { x: 3120, y: 3120 }, - { x: 3121, y: 3121 }, - { x: 3122, y: 3122 }, - { x: 3123, y: 3123 }, - { x: 3124, y: 3124 }, - { x: 3125, y: 3125 }, - { x: 3126, y: 3126 }, - { x: 3127, y: 3127 }, - { x: 3128, y: 3128 }, - { x: 3129, y: 3129 }, - { x: 3130, y: 3130 }, - { x: 3131, y: 3131 }, - { x: 3132, y: 3132 }, - { x: 3133, y: 3133 }, - { x: 3134, y: 3134 }, - { x: 3135, y: 3135 }, - { x: 3136, y: 3136 }, - { x: 3137, y: 3137 }, - { x: 3138, y: 3138 }, - { x: 3139, y: 3139 }, - { x: 3140, y: 3140 }, - { x: 3141, y: 3141 }, - { x: 3142, y: 3142 }, - { x: 3143, y: 3143 }, - { x: 3144, y: 3144 }, - { x: 3145, y: 3145 }, - { x: 3146, y: 3146 }, - { x: 3147, y: 3147 }, - { x: 3148, y: 3148 }, - { x: 3149, y: 3149 }, - { x: 3150, y: 3150 }, - { x: 3151, y: 3151 }, - { x: 3152, y: 3152 }, - { x: 3153, y: 3153 }, - { x: 3154, y: 3154 }, - { x: 3155, y: 3155 }, - { x: 3156, y: 3156 }, - { x: 3157, y: 3157 }, - { x: 3158, y: 3158 }, - { x: 3159, y: 3159 }, - { x: 3160, y: 3160 }, - { x: 3161, y: 3161 }, - { x: 3162, y: 3162 }, - { x: 3163, y: 3163 }, - { x: 3164, y: 3164 }, - { x: 3165, y: 3165 }, - { x: 3166, y: 3166 }, - { x: 3167, y: 3167 }, - { x: 3168, y: 3168 }, - { x: 3169, y: 3169 }, - { x: 3170, y: 3170 }, - { x: 3171, y: 3171 }, - { x: 3172, y: 3172 }, - { x: 3173, y: 3173 }, - { x: 3174, y: 3174 }, - { x: 3175, y: 3175 }, - { x: 3176, y: 3176 }, - { x: 3177, y: 3177 }, - { x: 3178, y: 3178 }, - { x: 3179, y: 3179 }, - { x: 3180, y: 3180 }, - { x: 3181, y: 3181 }, - { x: 3182, y: 3182 }, - { x: 3183, y: 3183 }, - { x: 3184, y: 3184 }, - { x: 3185, y: 3185 }, - { x: 3186, y: 3186 }, - { x: 3187, y: 3187 }, - { x: 3188, y: 3188 }, - { x: 3189, y: 3189 }, - { x: 3190, y: 3190 }, - { x: 3191, y: 3191 }, - { x: 3192, y: 3192 }, - { x: 3193, y: 3193 }, - { x: 3194, y: 3194 }, - { x: 3195, y: 3195 }, - { x: 3196, y: 3196 }, - { x: 3197, y: 3197 }, - { x: 3198, y: 3198 }, - { x: 3199, y: 3199 }, - { x: 3200, y: 3200 }, - { x: 3201, y: 3201 }, - { x: 3202, y: 3202 }, - { x: 3203, y: 3203 }, - { x: 3204, y: 3204 }, - { x: 3205, y: 3205 }, - { x: 3206, y: 3206 }, - { x: 3207, y: 3207 }, - { x: 3208, y: 3208 }, - { x: 3209, y: 3209 }, - { x: 3210, y: 3210 }, - { x: 3211, y: 3211 }, - { x: 3212, y: 3212 }, - { x: 3213, y: 3213 }, - { x: 3214, y: 3214 }, - { x: 3215, y: 3215 }, - { x: 3216, y: 3216 }, - { x: 3217, y: 3217 }, - { x: 3218, y: 3218 }, - { x: 3219, y: 3219 }, - { x: 3220, y: 3220 }, - { x: 3221, y: 3221 }, - { x: 3222, y: 3222 }, - { x: 3223, y: 3223 }, - { x: 3224, y: 3224 }, - { x: 3225, y: 3225 }, - { x: 3226, y: 3226 }, - { x: 3227, y: 3227 }, - { x: 3228, y: 3228 }, - { x: 3229, y: 3229 }, - { x: 3230, y: 3230 }, - { x: 3231, y: 3231 }, - { x: 3232, y: 3232 }, - { x: 3233, y: 3233 }, - { x: 3234, y: 3234 }, - { x: 3235, y: 3235 }, - { x: 3236, y: 3236 }, - { x: 3237, y: 3237 }, - { x: 3238, y: 3238 }, - { x: 3239, y: 3239 }, - { x: 3240, y: 3240 }, - { x: 3241, y: 3241 }, - { x: 3242, y: 3242 }, - { x: 3243, y: 3243 }, - { x: 3244, y: 3244 }, - { x: 3245, y: 3245 }, - { x: 3246, y: 3246 }, - { x: 3247, y: 3247 }, - { x: 3248, y: 3248 }, - { x: 3249, y: 3249 }, - { x: 3250, y: 3250 }, - { x: 3251, y: 3251 }, - { x: 3252, y: 3252 }, - { x: 3253, y: 3253 }, - { x: 3254, y: 3254 }, - { x: 3255, y: 3255 }, - { x: 3256, y: 3256 }, - { x: 3257, y: 3257 }, - { x: 3258, y: 3258 }, - { x: 3259, y: 3259 }, - { x: 3260, y: 3260 }, - { x: 3261, y: 3261 }, - { x: 3262, y: 3262 }, - { x: 3263, y: 3263 }, - { x: 3264, y: 3264 }, - { x: 3265, y: 3265 }, - { x: 3266, y: 3266 }, - { x: 3267, y: 3267 }, - { x: 3268, y: 3268 }, - { x: 3269, y: 3269 }, - { x: 3270, y: 3270 }, - { x: 3271, y: 3271 }, - { x: 3272, y: 3272 }, - { x: 3273, y: 3273 }, - { x: 3274, y: 3274 }, - { x: 3275, y: 3275 }, - { x: 3276, y: 3276 }, - { x: 3277, y: 3277 }, - { x: 3278, y: 3278 }, - { x: 3279, y: 3279 }, - { x: 3280, y: 3280 }, - { x: 3281, y: 3281 }, - { x: 3282, y: 3282 }, - { x: 3283, y: 3283 }, - { x: 3284, y: 3284 }, - { x: 3285, y: 3285 }, - { x: 3286, y: 3286 }, - { x: 3287, y: 3287 }, - { x: 3288, y: 3288 }, - { x: 3289, y: 3289 }, - { x: 3290, y: 3290 }, - { x: 3291, y: 3291 }, - { x: 3292, y: 3292 }, - { x: 3293, y: 3293 }, - { x: 3294, y: 3294 }, - { x: 3295, y: 3295 }, - { x: 3296, y: 3296 }, - { x: 3297, y: 3297 }, - { x: 3298, y: 3298 }, - { x: 3299, y: 3299 }, - { x: 3300, y: 3300 }, - { x: 3301, y: 3301 }, - { x: 3302, y: 3302 }, - { x: 3303, y: 3303 }, - { x: 3304, y: 3304 }, - { x: 3305, y: 3305 }, - { x: 3306, y: 3306 }, - { x: 3307, y: 3307 }, - { x: 3308, y: 3308 }, - { x: 3309, y: 3309 }, - { x: 3310, y: 3310 }, - { x: 3311, y: 3311 }, - { x: 3312, y: 3312 }, - { x: 3313, y: 3313 }, - { x: 3314, y: 3314 }, - { x: 3315, y: 3315 }, - { x: 3316, y: 3316 }, - { x: 3317, y: 3317 }, - { x: 3318, y: 3318 }, - { x: 3319, y: 3319 }, - { x: 3320, y: 3320 }, - { x: 3321, y: 3321 }, - { x: 3322, y: 3322 }, - { x: 3323, y: 3323 }, - { x: 3324, y: 3324 }, - { x: 3325, y: 3325 }, - { x: 3326, y: 3326 }, - { x: 3327, y: 3327 }, - { x: 3328, y: 3328 }, - { x: 3329, y: 3329 }, - { x: 3330, y: 3330 }, - { x: 3331, y: 3331 }, - { x: 3332, y: 3332 }, - { x: 3333, y: 3333 }, - { x: 3334, y: 3334 }, - { x: 3335, y: 3335 }, - { x: 3336, y: 3336 }, - { x: 3337, y: 3337 }, - { x: 3338, y: 3338 }, - { x: 3339, y: 3339 }, - { x: 3340, y: 3340 }, - { x: 3341, y: 3341 }, - { x: 3342, y: 3342 }, - { x: 3343, y: 3343 }, - { x: 3344, y: 3344 }, - { x: 3345, y: 3345 }, - { x: 3346, y: 3346 }, - { x: 3347, y: 3347 }, - { x: 3348, y: 3348 }, - { x: 3349, y: 3349 }, - { x: 3350, y: 3350 }, - { x: 3351, y: 3351 }, - { x: 3352, y: 3352 }, - { x: 3353, y: 3353 }, - { x: 3354, y: 3354 }, - { x: 3355, y: 3355 }, - { x: 3356, y: 3356 }, - { x: 3357, y: 3357 }, - { x: 3358, y: 3358 }, - { x: 3359, y: 3359 }, - { x: 3360, y: 3360 }, - { x: 3361, y: 3361 }, - { x: 3362, y: 3362 }, - { x: 3363, y: 3363 }, - { x: 3364, y: 3364 }, - { x: 3365, y: 3365 }, - { x: 3366, y: 3366 }, - { x: 3367, y: 3367 }, - { x: 3368, y: 3368 }, - { x: 3369, y: 3369 }, - { x: 3370, y: 3370 }, - { x: 3371, y: 3371 }, - { x: 3372, y: 3372 }, - { x: 3373, y: 3373 }, - { x: 3374, y: 3374 }, - { x: 3375, y: 3375 }, - { x: 3376, y: 3376 }, - { x: 3377, y: 3377 }, - { x: 3378, y: 3378 }, - { x: 3379, y: 3379 }, - { x: 3380, y: 3380 }, - { x: 3381, y: 3381 }, - { x: 3382, y: 3382 }, - { x: 3383, y: 3383 }, - { x: 3384, y: 3384 }, - { x: 3385, y: 3385 }, - { x: 3386, y: 3386 }, - { x: 3387, y: 3387 }, - { x: 3388, y: 3388 }, - { x: 3389, y: 3389 }, - { x: 3390, y: 3390 }, - { x: 3391, y: 3391 }, - { x: 3392, y: 3392 }, - { x: 3393, y: 3393 }, - { x: 3394, y: 3394 }, - { x: 3395, y: 3395 }, - { x: 3396, y: 3396 }, - { x: 3397, y: 3397 }, - { x: 3398, y: 3398 }, - { x: 3399, y: 3399 }, - { x: 3400, y: 3400 }, - { x: 3401, y: 3401 }, - { x: 3402, y: 3402 }, - { x: 3403, y: 3403 }, - { x: 3404, y: 3404 }, - { x: 3405, y: 3405 }, - { x: 3406, y: 3406 }, - { x: 3407, y: 3407 }, - { x: 3408, y: 3408 }, - { x: 3409, y: 3409 }, - { x: 3410, y: 3410 }, - { x: 3411, y: 3411 }, - { x: 3412, y: 3412 }, - { x: 3413, y: 3413 }, - { x: 3414, y: 3414 }, - { x: 3415, y: 3415 }, - { x: 3416, y: 3416 }, - { x: 3417, y: 3417 }, - { x: 3418, y: 3418 }, - { x: 3419, y: 3419 }, - { x: 3420, y: 3420 }, - { x: 3421, y: 3421 }, - { x: 3422, y: 3422 }, - { x: 3423, y: 3423 }, - { x: 3424, y: 3424 }, - { x: 3425, y: 3425 }, - { x: 3426, y: 3426 }, - { x: 3427, y: 3427 }, - { x: 3428, y: 3428 }, - { x: 3429, y: 3429 }, - { x: 3430, y: 3430 }, - { x: 3431, y: 3431 }, - { x: 3432, y: 3432 }, - { x: 3433, y: 3433 }, - { x: 3434, y: 3434 }, - { x: 3435, y: 3435 }, - { x: 3436, y: 3436 }, - { x: 3437, y: 3437 }, - { x: 3438, y: 3438 }, - { x: 3439, y: 3439 }, - { x: 3440, y: 3440 }, - { x: 3441, y: 3441 }, - { x: 3442, y: 3442 }, - { x: 3443, y: 3443 }, - { x: 3444, y: 3444 }, - { x: 3445, y: 3445 }, - { x: 3446, y: 3446 }, - { x: 3447, y: 3447 }, - { x: 3448, y: 3448 }, - { x: 3449, y: 3449 }, - { x: 3450, y: 3450 }, - { x: 3451, y: 3451 }, - { x: 3452, y: 3452 }, - { x: 3453, y: 3453 }, - { x: 3454, y: 3454 }, - { x: 3455, y: 3455 }, - { x: 3456, y: 3456 }, - { x: 3457, y: 3457 }, - { x: 3458, y: 3458 }, - { x: 3459, y: 3459 }, - { x: 3460, y: 3460 }, - { x: 3461, y: 3461 }, - { x: 3462, y: 3462 }, - { x: 3463, y: 3463 }, - { x: 3464, y: 3464 }, - { x: 3465, y: 3465 }, - { x: 3466, y: 3466 }, - { x: 3467, y: 3467 }, - { x: 3468, y: 3468 }, - { x: 3469, y: 3469 }, - { x: 3470, y: 3470 }, - { x: 3471, y: 3471 }, - { x: 3472, y: 3472 }, - { x: 3473, y: 3473 }, - { x: 3474, y: 3474 }, - { x: 3475, y: 3475 }, - { x: 3476, y: 3476 }, - { x: 3477, y: 3477 }, - { x: 3478, y: 3478 }, - { x: 3479, y: 3479 }, - { x: 3480, y: 3480 }, - { x: 3481, y: 3481 }, - { x: 3482, y: 3482 }, - { x: 3483, y: 3483 }, - { x: 3484, y: 3484 }, - { x: 3485, y: 3485 }, - { x: 3486, y: 3486 }, - { x: 3487, y: 3487 }, - { x: 3488, y: 3488 }, - { x: 3489, y: 3489 }, - { x: 3490, y: 3490 }, - { x: 3491, y: 3491 }, - { x: 3492, y: 3492 }, - { x: 3493, y: 3493 }, - { x: 3494, y: 3494 }, - { x: 3495, y: 3495 }, - { x: 3496, y: 3496 }, - { x: 3497, y: 3497 }, - { x: 3498, y: 3498 }, - { x: 3499, y: 3499 }, - { x: 3500, y: 3500 }, - { x: 3501, y: 3501 }, - { x: 3502, y: 3502 }, - { x: 3503, y: 3503 }, - { x: 3504, y: 3504 }, - { x: 3505, y: 3505 }, - { x: 3506, y: 3506 }, - { x: 3507, y: 3507 }, - { x: 3508, y: 3508 }, - { x: 3509, y: 3509 }, - { x: 3510, y: 3510 }, - { x: 3511, y: 3511 }, - { x: 3512, y: 3512 }, - { x: 3513, y: 3513 }, - { x: 3514, y: 3514 }, - { x: 3515, y: 3515 }, - { x: 3516, y: 3516 }, - { x: 3517, y: 3517 }, - { x: 3518, y: 3518 }, - { x: 3519, y: 3519 }, - { x: 3520, y: 3520 }, - { x: 3521, y: 3521 }, - { x: 3522, y: 3522 }, - { x: 3523, y: 3523 }, - { x: 3524, y: 3524 }, - { x: 3525, y: 3525 }, - { x: 3526, y: 3526 }, - { x: 3527, y: 3527 }, - { x: 3528, y: 3528 }, - { x: 3529, y: 3529 }, - { x: 3530, y: 3530 }, - { x: 3531, y: 3531 }, - { x: 3532, y: 3532 }, - { x: 3533, y: 3533 }, - { x: 3534, y: 3534 }, - { x: 3535, y: 3535 }, - { x: 3536, y: 3536 }, - { x: 3537, y: 3537 }, - { x: 3538, y: 3538 }, - { x: 3539, y: 3539 }, - { x: 3540, y: 3540 }, - { x: 3541, y: 3541 }, - { x: 3542, y: 3542 }, - { x: 3543, y: 3543 }, - { x: 3544, y: 3544 }, - { x: 3545, y: 3545 }, - { x: 3546, y: 3546 }, - { x: 3547, y: 3547 }, - { x: 3548, y: 3548 }, - { x: 3549, y: 3549 }, - { x: 3550, y: 3550 }, - { x: 3551, y: 3551 }, - { x: 3552, y: 3552 }, - { x: 3553, y: 3553 }, - { x: 3554, y: 3554 }, - { x: 3555, y: 3555 }, - { x: 3556, y: 3556 }, - { x: 3557, y: 3557 }, - { x: 3558, y: 3558 }, - { x: 3559, y: 3559 }, - { x: 3560, y: 3560 }, - { x: 3561, y: 3561 }, - { x: 3562, y: 3562 }, - { x: 3563, y: 3563 }, - { x: 3564, y: 3564 }, - { x: 3565, y: 3565 }, - { x: 3566, y: 3566 }, - { x: 3567, y: 3567 }, - { x: 3568, y: 3568 }, - { x: 3569, y: 3569 }, - { x: 3570, y: 3570 }, - { x: 3571, y: 3571 }, - { x: 3572, y: 3572 }, - { x: 3573, y: 3573 }, - { x: 3574, y: 3574 }, - { x: 3575, y: 3575 }, - { x: 3576, y: 3576 }, - { x: 3577, y: 3577 }, - { x: 3578, y: 3578 }, - { x: 3579, y: 3579 }, - { x: 3580, y: 3580 }, - { x: 3581, y: 3581 }, - { x: 3582, y: 3582 }, - { x: 3583, y: 3583 }, - { x: 3584, y: 3584 }, - { x: 3585, y: 3585 }, - { x: 3586, y: 3586 }, - { x: 3587, y: 3587 }, - { x: 3588, y: 3588 }, - { x: 3589, y: 3589 }, - { x: 3590, y: 3590 }, - { x: 3591, y: 3591 }, - { x: 3592, y: 3592 }, - { x: 3593, y: 3593 }, - { x: 3594, y: 3594 }, - { x: 3595, y: 3595 }, - { x: 3596, y: 3596 }, - { x: 3597, y: 3597 }, - { x: 3598, y: 3598 }, - { x: 3599, y: 3599 }, - { x: 3600, y: 3600 }, - { x: 3601, y: 3601 }, - { x: 3602, y: 3602 }, - { x: 3603, y: 3603 }, - { x: 3604, y: 3604 }, - { x: 3605, y: 3605 }, - { x: 3606, y: 3606 }, - { x: 3607, y: 3607 }, - { x: 3608, y: 3608 }, - { x: 3609, y: 3609 }, - { x: 3610, y: 3610 }, - { x: 3611, y: 3611 }, - { x: 3612, y: 3612 }, - { x: 3613, y: 3613 }, - { x: 3614, y: 3614 }, - { x: 3615, y: 3615 }, - { x: 3616, y: 3616 }, - { x: 3617, y: 3617 }, - { x: 3618, y: 3618 }, - { x: 3619, y: 3619 }, - { x: 3620, y: 3620 }, - { x: 3621, y: 3621 }, - { x: 3622, y: 3622 }, - { x: 3623, y: 3623 }, - { x: 3624, y: 3624 }, - { x: 3625, y: 3625 }, - { x: 3626, y: 3626 }, - { x: 3627, y: 3627 }, - { x: 3628, y: 3628 }, - { x: 3629, y: 3629 }, - { x: 3630, y: 3630 }, - { x: 3631, y: 3631 }, - { x: 3632, y: 3632 }, - { x: 3633, y: 3633 }, - { x: 3634, y: 3634 }, - { x: 3635, y: 3635 }, - { x: 3636, y: 3636 }, - { x: 3637, y: 3637 }, - { x: 3638, y: 3638 }, - { x: 3639, y: 3639 }, - { x: 3640, y: 3640 }, - { x: 3641, y: 3641 }, - { x: 3642, y: 3642 }, - { x: 3643, y: 3643 }, - { x: 3644, y: 3644 }, - { x: 3645, y: 3645 }, - { x: 3646, y: 3646 }, - { x: 3647, y: 3647 }, - { x: 3648, y: 3648 }, - { x: 3649, y: 3649 }, - { x: 3650, y: 3650 }, - { x: 3651, y: 3651 }, - { x: 3652, y: 3652 }, - { x: 3653, y: 3653 }, - { x: 3654, y: 3654 }, - { x: 3655, y: 3655 }, - { x: 3656, y: 3656 }, - { x: 3657, y: 3657 }, - { x: 3658, y: 3658 }, - { x: 3659, y: 3659 }, - { x: 3660, y: 3660 }, - { x: 3661, y: 3661 }, - { x: 3662, y: 3662 }, - { x: 3663, y: 3663 }, - { x: 3664, y: 3664 }, - { x: 3665, y: 3665 }, - { x: 3666, y: 3666 }, - { x: 3667, y: 3667 }, - { x: 3668, y: 3668 }, - { x: 3669, y: 3669 }, - { x: 3670, y: 3670 }, - { x: 3671, y: 3671 }, - { x: 3672, y: 3672 }, - { x: 3673, y: 3673 }, - { x: 3674, y: 3674 }, - { x: 3675, y: 3675 }, - { x: 3676, y: 3676 }, - { x: 3677, y: 3677 }, - { x: 3678, y: 3678 }, - { x: 3679, y: 3679 }, - { x: 3680, y: 3680 }, - { x: 3681, y: 3681 }, - { x: 3682, y: 3682 }, - { x: 3683, y: 3683 }, - { x: 3684, y: 3684 }, - { x: 3685, y: 3685 }, - { x: 3686, y: 3686 }, - { x: 3687, y: 3687 }, - { x: 3688, y: 3688 }, - { x: 3689, y: 3689 }, - { x: 3690, y: 3690 }, - { x: 3691, y: 3691 }, - { x: 3692, y: 3692 }, - { x: 3693, y: 3693 }, - { x: 3694, y: 3694 }, - { x: 3695, y: 3695 }, - { x: 3696, y: 3696 }, - { x: 3697, y: 3697 }, - { x: 3698, y: 3698 }, - { x: 3699, y: 3699 }, - { x: 3700, y: 3700 }, - { x: 3701, y: 3701 }, - { x: 3702, y: 3702 }, - { x: 3703, y: 3703 }, - { x: 3704, y: 3704 }, - { x: 3705, y: 3705 }, - { x: 3706, y: 3706 }, - { x: 3707, y: 3707 }, - { x: 3708, y: 3708 }, - { x: 3709, y: 3709 }, - { x: 3710, y: 3710 }, - { x: 3711, y: 3711 }, - { x: 3712, y: 3712 }, - { x: 3713, y: 3713 }, - { x: 3714, y: 3714 }, - { x: 3715, y: 3715 }, - { x: 3716, y: 3716 }, - { x: 3717, y: 3717 }, - { x: 3718, y: 3718 }, - { x: 3719, y: 3719 }, - { x: 3720, y: 3720 }, - { x: 3721, y: 3721 }, - { x: 3722, y: 3722 }, - { x: 3723, y: 3723 }, - { x: 3724, y: 3724 }, - { x: 3725, y: 3725 }, - { x: 3726, y: 3726 }, - { x: 3727, y: 3727 }, - { x: 3728, y: 3728 }, - { x: 3729, y: 3729 }, - { x: 3730, y: 3730 }, - { x: 3731, y: 3731 }, - { x: 3732, y: 3732 }, - { x: 3733, y: 3733 }, - { x: 3734, y: 3734 }, - { x: 3735, y: 3735 }, - { x: 3736, y: 3736 }, - { x: 3737, y: 3737 }, - { x: 3738, y: 3738 }, - { x: 3739, y: 3739 }, - { x: 3740, y: 3740 }, - { x: 3741, y: 3741 }, - { x: 3742, y: 3742 }, - { x: 3743, y: 3743 }, - { x: 3744, y: 3744 }, - { x: 3745, y: 3745 }, - { x: 3746, y: 3746 }, - { x: 3747, y: 3747 }, - { x: 3748, y: 3748 }, - { x: 3749, y: 3749 }, - { x: 3750, y: 3750 }, - { x: 3751, y: 3751 }, - { x: 3752, y: 3752 }, - { x: 3753, y: 3753 }, - { x: 3754, y: 3754 }, - { x: 3755, y: 3755 }, - { x: 3756, y: 3756 }, - { x: 3757, y: 3757 }, - { x: 3758, y: 3758 }, - { x: 3759, y: 3759 }, - { x: 3760, y: 3760 }, - { x: 3761, y: 3761 }, - { x: 3762, y: 3762 }, - { x: 3763, y: 3763 }, - { x: 3764, y: 3764 }, - { x: 3765, y: 3765 }, - { x: 3766, y: 3766 }, - { x: 3767, y: 3767 }, - { x: 3768, y: 3768 }, - { x: 3769, y: 3769 }, - { x: 3770, y: 3770 }, - { x: 3771, y: 3771 }, - { x: 3772, y: 3772 }, - { x: 3773, y: 3773 }, - { x: 3774, y: 3774 }, - { x: 3775, y: 3775 }, - { x: 3776, y: 3776 }, - { x: 3777, y: 3777 }, - { x: 3778, y: 3778 }, - { x: 3779, y: 3779 }, - { x: 3780, y: 3780 }, - { x: 3781, y: 3781 }, - { x: 3782, y: 3782 }, - { x: 3783, y: 3783 }, - { x: 3784, y: 3784 }, - { x: 3785, y: 3785 }, - { x: 3786, y: 3786 }, - { x: 3787, y: 3787 }, - { x: 3788, y: 3788 }, - { x: 3789, y: 3789 }, - { x: 3790, y: 3790 }, - { x: 3791, y: 3791 }, - { x: 3792, y: 3792 }, - { x: 3793, y: 3793 }, - { x: 3794, y: 3794 }, - { x: 3795, y: 3795 }, - { x: 3796, y: 3796 }, - { x: 3797, y: 3797 }, - { x: 3798, y: 3798 }, - { x: 3799, y: 3799 }, - { x: 3800, y: 3800 }, - { x: 3801, y: 3801 }, - { x: 3802, y: 3802 }, - { x: 3803, y: 3803 }, - { x: 3804, y: 3804 }, - { x: 3805, y: 3805 }, - { x: 3806, y: 3806 }, - { x: 3807, y: 3807 }, - { x: 3808, y: 3808 }, - { x: 3809, y: 3809 }, - { x: 3810, y: 3810 }, - { x: 3811, y: 3811 }, - { x: 3812, y: 3812 }, - { x: 3813, y: 3813 }, - { x: 3814, y: 3814 }, - { x: 3815, y: 3815 }, - { x: 3816, y: 3816 }, - { x: 3817, y: 3817 }, - { x: 3818, y: 3818 }, - { x: 3819, y: 3819 }, - { x: 3820, y: 3820 }, - { x: 3821, y: 3821 }, - { x: 3822, y: 3822 }, - { x: 3823, y: 3823 }, - { x: 3824, y: 3824 }, - { x: 3825, y: 3825 }, - { x: 3826, y: 3826 }, - { x: 3827, y: 3827 }, - { x: 3828, y: 3828 }, - { x: 3829, y: 3829 }, - { x: 3830, y: 3830 }, - { x: 3831, y: 3831 }, - { x: 3832, y: 3832 }, - { x: 3833, y: 3833 }, - { x: 3834, y: 3834 }, - { x: 3835, y: 3835 }, - { x: 3836, y: 3836 }, - { x: 3837, y: 3837 }, - { x: 3838, y: 3838 }, - { x: 3839, y: 3839 }, - { x: 3840, y: 3840 }, - { x: 3841, y: 3841 }, - { x: 3842, y: 3842 }, - { x: 3843, y: 3843 }, - { x: 3844, y: 3844 }, - { x: 3845, y: 3845 }, - { x: 3846, y: 3846 }, - { x: 3847, y: 3847 }, - { x: 3848, y: 3848 }, - { x: 3849, y: 3849 }, - { x: 3850, y: 3850 }, - { x: 3851, y: 3851 }, - { x: 3852, y: 3852 }, - { x: 3853, y: 3853 }, - { x: 3854, y: 3854 }, - { x: 3855, y: 3855 }, - { x: 3856, y: 3856 }, - { x: 3857, y: 3857 }, - { x: 3858, y: 3858 }, - { x: 3859, y: 3859 }, - { x: 3860, y: 3860 }, - { x: 3861, y: 3861 }, - { x: 3862, y: 3862 }, - { x: 3863, y: 3863 }, - { x: 3864, y: 3864 }, - { x: 3865, y: 3865 }, - { x: 3866, y: 3866 }, - { x: 3867, y: 3867 }, - { x: 3868, y: 3868 }, - { x: 3869, y: 3869 }, - { x: 3870, y: 3870 }, - { x: 3871, y: 3871 }, - { x: 3872, y: 3872 }, - { x: 3873, y: 3873 }, - { x: 3874, y: 3874 }, - { x: 3875, y: 3875 }, - { x: 3876, y: 3876 }, - { x: 3877, y: 3877 }, - { x: 3878, y: 3878 }, - { x: 3879, y: 3879 }, - { x: 3880, y: 3880 }, - { x: 3881, y: 3881 }, - { x: 3882, y: 3882 }, - { x: 3883, y: 3883 }, - { x: 3884, y: 3884 }, - { x: 3885, y: 3885 }, - { x: 3886, y: 3886 }, - { x: 3887, y: 3887 }, - { x: 3888, y: 3888 }, - { x: 3889, y: 3889 }, - { x: 3890, y: 3890 }, - { x: 3891, y: 3891 }, - { x: 3892, y: 3892 }, - { x: 3893, y: 3893 }, - { x: 3894, y: 3894 }, - { x: 3895, y: 3895 }, - { x: 3896, y: 3896 }, - { x: 3897, y: 3897 }, - { x: 3898, y: 3898 }, - { x: 3899, y: 3899 }, - { x: 3900, y: 3900 }, - { x: 3901, y: 3901 }, - { x: 3902, y: 3902 }, - { x: 3903, y: 3903 }, - { x: 3904, y: 3904 }, - { x: 3905, y: 3905 }, - { x: 3906, y: 3906 }, - { x: 3907, y: 3907 }, - { x: 3908, y: 3908 }, - { x: 3909, y: 3909 }, - { x: 3910, y: 3910 }, - { x: 3911, y: 3911 }, - { x: 3912, y: 3912 }, - { x: 3913, y: 3913 }, - { x: 3914, y: 3914 }, - { x: 3915, y: 3915 }, - { x: 3916, y: 3916 }, - { x: 3917, y: 3917 }, - { x: 3918, y: 3918 }, - { x: 3919, y: 3919 }, - { x: 3920, y: 3920 }, - { x: 3921, y: 3921 }, - { x: 3922, y: 3922 }, - { x: 3923, y: 3923 }, - { x: 3924, y: 3924 }, - { x: 3925, y: 3925 }, - { x: 3926, y: 3926 }, - { x: 3927, y: 3927 }, - { x: 3928, y: 3928 }, - { x: 3929, y: 3929 }, - { x: 3930, y: 3930 }, - { x: 3931, y: 3931 }, - { x: 3932, y: 3932 }, - { x: 3933, y: 3933 }, - { x: 3934, y: 3934 }, - { x: 3935, y: 3935 }, - { x: 3936, y: 3936 }, - { x: 3937, y: 3937 }, - { x: 3938, y: 3938 }, - { x: 3939, y: 3939 }, - { x: 3940, y: 3940 }, - { x: 3941, y: 3941 }, - { x: 3942, y: 3942 }, - { x: 3943, y: 3943 }, - { x: 3944, y: 3944 }, - { x: 3945, y: 3945 }, - { x: 3946, y: 3946 }, - { x: 3947, y: 3947 }, - { x: 3948, y: 3948 }, - { x: 3949, y: 3949 }, - { x: 3950, y: 3950 }, - { x: 3951, y: 3951 }, - { x: 3952, y: 3952 }, - { x: 3953, y: 3953 }, - { x: 3954, y: 3954 }, - { x: 3955, y: 3955 }, - { x: 3956, y: 3956 }, - { x: 3957, y: 3957 }, - { x: 3958, y: 3958 }, - { x: 3959, y: 3959 }, - { x: 3960, y: 3960 }, - { x: 3961, y: 3961 }, - { x: 3962, y: 3962 }, - { x: 3963, y: 3963 }, - { x: 3964, y: 3964 }, - { x: 3965, y: 3965 }, - { x: 3966, y: 3966 }, - { x: 3967, y: 3967 }, - { x: 3968, y: 3968 }, - { x: 3969, y: 3969 }, - { x: 3970, y: 3970 }, - { x: 3971, y: 3971 }, - { x: 3972, y: 3972 }, - { x: 3973, y: 3973 }, - { x: 3974, y: 3974 }, - { x: 3975, y: 3975 }, - { x: 3976, y: 3976 }, - { x: 3977, y: 3977 }, - { x: 3978, y: 3978 }, - { x: 3979, y: 3979 }, - { x: 3980, y: 3980 }, - { x: 3981, y: 3981 }, - { x: 3982, y: 3982 }, - { x: 3983, y: 3983 }, - { x: 3984, y: 3984 }, - { x: 3985, y: 3985 }, - { x: 3986, y: 3986 }, - { x: 3987, y: 3987 }, - { x: 3988, y: 3988 }, - { x: 3989, y: 3989 }, - { x: 3990, y: 3990 }, - { x: 3991, y: 3991 }, - { x: 3992, y: 3992 }, - { x: 3993, y: 3993 }, - { x: 3994, y: 3994 }, - { x: 3995, y: 3995 }, - { x: 3996, y: 3996 }, - { x: 3997, y: 3997 }, - { x: 3998, y: 3998 }, - { x: 3999, y: 3999 }, - { x: 4000, y: 4000 }, - { x: 4001, y: 4001 }, - { x: 4002, y: 4002 }, - { x: 4003, y: 4003 }, - { x: 4004, y: 4004 }, - { x: 4005, y: 4005 }, - { x: 4006, y: 4006 }, - { x: 4007, y: 4007 }, - { x: 4008, y: 4008 }, - { x: 4009, y: 4009 }, - { x: 4010, y: 4010 }, - { x: 4011, y: 4011 }, - { x: 4012, y: 4012 }, - { x: 4013, y: 4013 }, - { x: 4014, y: 4014 }, - { x: 4015, y: 4015 }, - { x: 4016, y: 4016 }, - { x: 4017, y: 4017 }, - { x: 4018, y: 4018 }, - { x: 4019, y: 4019 }, - { x: 4020, y: 4020 }, - { x: 4021, y: 4021 }, - { x: 4022, y: 4022 }, - { x: 4023, y: 4023 }, - { x: 4024, y: 4024 }, - { x: 4025, y: 4025 }, - { x: 4026, y: 4026 }, - { x: 4027, y: 4027 }, - { x: 4028, y: 4028 }, - { x: 4029, y: 4029 }, - { x: 4030, y: 4030 }, - { x: 4031, y: 4031 }, - { x: 4032, y: 4032 }, - { x: 4033, y: 4033 }, - { x: 4034, y: 4034 }, - { x: 4035, y: 4035 }, - { x: 4036, y: 4036 }, - { x: 4037, y: 4037 }, - { x: 4038, y: 4038 }, - { x: 4039, y: 4039 }, - { x: 4040, y: 4040 }, - { x: 4041, y: 4041 }, - { x: 4042, y: 4042 }, - { x: 4043, y: 4043 }, - { x: 4044, y: 4044 }, - { x: 4045, y: 4045 }, - { x: 4046, y: 4046 }, - { x: 4047, y: 4047 }, - { x: 4048, y: 4048 }, - { x: 4049, y: 4049 }, - { x: 4050, y: 4050 }, - { x: 4051, y: 4051 }, - { x: 4052, y: 4052 }, - { x: 4053, y: 4053 }, - { x: 4054, y: 4054 }, - { x: 4055, y: 4055 }, - { x: 4056, y: 4056 }, - { x: 4057, y: 4057 }, - { x: 4058, y: 4058 }, - { x: 4059, y: 4059 }, - { x: 4060, y: 4060 }, - { x: 4061, y: 4061 }, - { x: 4062, y: 4062 }, - { x: 4063, y: 4063 }, - { x: 4064, y: 4064 }, - { x: 4065, y: 4065 }, - { x: 4066, y: 4066 }, - { x: 4067, y: 4067 }, - { x: 4068, y: 4068 }, - { x: 4069, y: 4069 }, - { x: 4070, y: 4070 }, - { x: 4071, y: 4071 }, - { x: 4072, y: 4072 }, - { x: 4073, y: 4073 }, - { x: 4074, y: 4074 }, - { x: 4075, y: 4075 }, - { x: 4076, y: 4076 }, - { x: 4077, y: 4077 }, - { x: 4078, y: 4078 }, - { x: 4079, y: 4079 }, - { x: 4080, y: 4080 }, - { x: 4081, y: 4081 }, - { x: 4082, y: 4082 }, - { x: 4083, y: 4083 }, - { x: 4084, y: 4084 }, - { x: 4085, y: 4085 }, - { x: 4086, y: 4086 }, - { x: 4087, y: 4087 }, - { x: 4088, y: 4088 }, - { x: 4089, y: 4089 }, - { x: 4090, y: 4090 }, - { x: 4091, y: 4091 }, - { x: 4092, y: 4092 }, - { x: 4093, y: 4093 }, - { x: 4094, y: 4094 }, - { x: 4095, y: 4095 }, - { x: 4096, y: 4096 }, - { x: 4097, y: 4097 }, - { x: 4098, y: 4098 }, - { x: 4099, y: 4099 }, - { x: 4100, y: 4100 }, - { x: 4101, y: 4101 }, - { x: 4102, y: 4102 }, - { x: 4103, y: 4103 }, - { x: 4104, y: 4104 }, - { x: 4105, y: 4105 }, - { x: 4106, y: 4106 }, - { x: 4107, y: 4107 }, - { x: 4108, y: 4108 }, - { x: 4109, y: 4109 }, - { x: 4110, y: 4110 }, - { x: 4111, y: 4111 }, - { x: 4112, y: 4112 }, - { x: 4113, y: 4113 }, - { x: 4114, y: 4114 }, - { x: 4115, y: 4115 }, - { x: 4116, y: 4116 }, - { x: 4117, y: 4117 }, - { x: 4118, y: 4118 }, - { x: 4119, y: 4119 }, - { x: 4120, y: 4120 }, - { x: 4121, y: 4121 }, - { x: 4122, y: 4122 }, - { x: 4123, y: 4123 }, - { x: 4124, y: 4124 }, - { x: 4125, y: 4125 }, - { x: 4126, y: 4126 }, - { x: 4127, y: 4127 }, - { x: 4128, y: 4128 }, - { x: 4129, y: 4129 }, - { x: 4130, y: 4130 }, - { x: 4131, y: 4131 }, - { x: 4132, y: 4132 }, - { x: 4133, y: 4133 }, - { x: 4134, y: 4134 }, - { x: 4135, y: 4135 }, - { x: 4136, y: 4136 }, - { x: 4137, y: 4137 }, - { x: 4138, y: 4138 }, - { x: 4139, y: 4139 }, - { x: 4140, y: 4140 }, - { x: 4141, y: 4141 }, - { x: 4142, y: 4142 }, - { x: 4143, y: 4143 }, - { x: 4144, y: 4144 }, - { x: 4145, y: 4145 }, - { x: 4146, y: 4146 }, - { x: 4147, y: 4147 }, - { x: 4148, y: 4148 }, - { x: 4149, y: 4149 }, - { x: 4150, y: 4150 }, - { x: 4151, y: 4151 }, - { x: 4152, y: 4152 }, - { x: 4153, y: 4153 }, - { x: 4154, y: 4154 }, - { x: 4155, y: 4155 }, - { x: 4156, y: 4156 }, - { x: 4157, y: 4157 }, - { x: 4158, y: 4158 }, - { x: 4159, y: 4159 }, - { x: 4160, y: 4160 }, - { x: 4161, y: 4161 }, - { x: 4162, y: 4162 }, - { x: 4163, y: 4163 }, - { x: 4164, y: 4164 }, - { x: 4165, y: 4165 }, - { x: 4166, y: 4166 }, - { x: 4167, y: 4167 }, - { x: 4168, y: 4168 }, - { x: 4169, y: 4169 }, - { x: 4170, y: 4170 }, - { x: 4171, y: 4171 }, - { x: 4172, y: 4172 }, - { x: 4173, y: 4173 }, - { x: 4174, y: 4174 }, - { x: 4175, y: 4175 }, - { x: 4176, y: 4176 }, - { x: 4177, y: 4177 }, - { x: 4178, y: 4178 }, - { x: 4179, y: 4179 }, - { x: 4180, y: 4180 }, - { x: 4181, y: 4181 }, - { x: 4182, y: 4182 }, - { x: 4183, y: 4183 }, - { x: 4184, y: 4184 }, - { x: 4185, y: 4185 }, - { x: 4186, y: 4186 }, - { x: 4187, y: 4187 }, - { x: 4188, y: 4188 }, - { x: 4189, y: 4189 }, - { x: 4190, y: 4190 }, - { x: 4191, y: 4191 }, - { x: 4192, y: 4192 }, - { x: 4193, y: 4193 }, - { x: 4194, y: 4194 }, - { x: 4195, y: 4195 }, - { x: 4196, y: 4196 }, - { x: 4197, y: 4197 }, - { x: 4198, y: 4198 }, - { x: 4199, y: 4199 }, - { x: 4200, y: 4200 }, - { x: 4201, y: 4201 }, - { x: 4202, y: 4202 }, - { x: 4203, y: 4203 }, - { x: 4204, y: 4204 }, - { x: 4205, y: 4205 }, - { x: 4206, y: 4206 }, - { x: 4207, y: 4207 }, - { x: 4208, y: 4208 }, - { x: 4209, y: 4209 }, - { x: 4210, y: 4210 }, - { x: 4211, y: 4211 }, - { x: 4212, y: 4212 }, - { x: 4213, y: 4213 }, - { x: 4214, y: 4214 }, - { x: 4215, y: 4215 }, - { x: 4216, y: 4216 }, - { x: 4217, y: 4217 }, - { x: 4218, y: 4218 }, - { x: 4219, y: 4219 }, - { x: 4220, y: 4220 }, - { x: 4221, y: 4221 }, - { x: 4222, y: 4222 }, - { x: 4223, y: 4223 }, - { x: 4224, y: 4224 }, - { x: 4225, y: 4225 }, - { x: 4226, y: 4226 }, - { x: 4227, y: 4227 }, - { x: 4228, y: 4228 }, - { x: 4229, y: 4229 }, - { x: 4230, y: 4230 }, - { x: 4231, y: 4231 }, - { x: 4232, y: 4232 }, - { x: 4233, y: 4233 }, - { x: 4234, y: 4234 }, - { x: 4235, y: 4235 }, - { x: 4236, y: 4236 }, - { x: 4237, y: 4237 }, - { x: 4238, y: 4238 }, - { x: 4239, y: 4239 }, - { x: 4240, y: 4240 }, - { x: 4241, y: 4241 }, - { x: 4242, y: 4242 }, - { x: 4243, y: 4243 }, - { x: 4244, y: 4244 }, - { x: 4245, y: 4245 }, - { x: 4246, y: 4246 }, - { x: 4247, y: 4247 }, - { x: 4248, y: 4248 }, - { x: 4249, y: 4249 }, - { x: 4250, y: 4250 }, - { x: 4251, y: 4251 }, - { x: 4252, y: 4252 }, - { x: 4253, y: 4253 }, - { x: 4254, y: 4254 }, - { x: 4255, y: 4255 }, - { x: 4256, y: 4256 }, - { x: 4257, y: 4257 }, - { x: 4258, y: 4258 }, - { x: 4259, y: 4259 }, - { x: 4260, y: 4260 }, - { x: 4261, y: 4261 }, - { x: 4262, y: 4262 }, - { x: 4263, y: 4263 }, - { x: 4264, y: 4264 }, - { x: 4265, y: 4265 }, - { x: 4266, y: 4266 }, - { x: 4267, y: 4267 }, - { x: 4268, y: 4268 }, - { x: 4269, y: 4269 }, - { x: 4270, y: 4270 }, - { x: 4271, y: 4271 }, - { x: 4272, y: 4272 }, - { x: 4273, y: 4273 }, - { x: 4274, y: 4274 }, - { x: 4275, y: 4275 }, - { x: 4276, y: 4276 }, - { x: 4277, y: 4277 }, - { x: 4278, y: 4278 }, - { x: 4279, y: 4279 }, - { x: 4280, y: 4280 }, - { x: 4281, y: 4281 }, - { x: 4282, y: 4282 }, - { x: 4283, y: 4283 }, - { x: 4284, y: 4284 }, - { x: 4285, y: 4285 }, - { x: 4286, y: 4286 }, - { x: 4287, y: 4287 }, - { x: 4288, y: 4288 }, - { x: 4289, y: 4289 }, - { x: 4290, y: 4290 }, - { x: 4291, y: 4291 }, - { x: 4292, y: 4292 }, - { x: 4293, y: 4293 }, - { x: 4294, y: 4294 }, - { x: 4295, y: 4295 }, - { x: 4296, y: 4296 }, - { x: 4297, y: 4297 }, - { x: 4298, y: 4298 }, - { x: 4299, y: 4299 }, - { x: 4300, y: 4300 }, - { x: 4301, y: 4301 }, - { x: 4302, y: 4302 }, - { x: 4303, y: 4303 }, - { x: 4304, y: 4304 }, - { x: 4305, y: 4305 }, - { x: 4306, y: 4306 }, - { x: 4307, y: 4307 }, - { x: 4308, y: 4308 }, - { x: 4309, y: 4309 }, - { x: 4310, y: 4310 }, - { x: 4311, y: 4311 }, - { x: 4312, y: 4312 }, - { x: 4313, y: 4313 }, - { x: 4314, y: 4314 }, - { x: 4315, y: 4315 }, - { x: 4316, y: 4316 }, - { x: 4317, y: 4317 }, - { x: 4318, y: 4318 }, - { x: 4319, y: 4319 }, - { x: 4320, y: 4320 }, - { x: 4321, y: 4321 }, - { x: 4322, y: 4322 }, - { x: 4323, y: 4323 }, - { x: 4324, y: 4324 }, - { x: 4325, y: 4325 }, - { x: 4326, y: 4326 }, - { x: 4327, y: 4327 }, - { x: 4328, y: 4328 }, - { x: 4329, y: 4329 }, - { x: 4330, y: 4330 }, - { x: 4331, y: 4331 }, - { x: 4332, y: 4332 }, - { x: 4333, y: 4333 }, - { x: 4334, y: 4334 }, - { x: 4335, y: 4335 }, - { x: 4336, y: 4336 }, - { x: 4337, y: 4337 }, - { x: 4338, y: 4338 }, - { x: 4339, y: 4339 }, - { x: 4340, y: 4340 }, - { x: 4341, y: 4341 }, - { x: 4342, y: 4342 }, - { x: 4343, y: 4343 }, - { x: 4344, y: 4344 }, - { x: 4345, y: 4345 }, - { x: 4346, y: 4346 }, - { x: 4347, y: 4347 }, - { x: 4348, y: 4348 }, - { x: 4349, y: 4349 }, - { x: 4350, y: 4350 }, - { x: 4351, y: 4351 }, - { x: 4352, y: 4352 }, - { x: 4353, y: 4353 }, - { x: 4354, y: 4354 }, - { x: 4355, y: 4355 }, - { x: 4356, y: 4356 }, - { x: 4357, y: 4357 }, - { x: 4358, y: 4358 }, - { x: 4359, y: 4359 }, - { x: 4360, y: 4360 }, - { x: 4361, y: 4361 }, - { x: 4362, y: 4362 }, - { x: 4363, y: 4363 }, - { x: 4364, y: 4364 }, - { x: 4365, y: 4365 }, - { x: 4366, y: 4366 }, - { x: 4367, y: 4367 }, - { x: 4368, y: 4368 }, - { x: 4369, y: 4369 }, - { x: 4370, y: 4370 }, - { x: 4371, y: 4371 }, - { x: 4372, y: 4372 }, - { x: 4373, y: 4373 }, - { x: 4374, y: 4374 }, - { x: 4375, y: 4375 }, - { x: 4376, y: 4376 }, - { x: 4377, y: 4377 }, - { x: 4378, y: 4378 }, - { x: 4379, y: 4379 }, - { x: 4380, y: 4380 }, - { x: 4381, y: 4381 }, - { x: 4382, y: 4382 }, - { x: 4383, y: 4383 }, - { x: 4384, y: 4384 }, - { x: 4385, y: 4385 }, - { x: 4386, y: 4386 }, - { x: 4387, y: 4387 }, - { x: 4388, y: 4388 }, - { x: 4389, y: 4389 }, - { x: 4390, y: 4390 }, - { x: 4391, y: 4391 }, - { x: 4392, y: 4392 }, - { x: 4393, y: 4393 }, - { x: 4394, y: 4394 }, - { x: 4395, y: 4395 }, - { x: 4396, y: 4396 }, - { x: 4397, y: 4397 }, - { x: 4398, y: 4398 }, - { x: 4399, y: 4399 }, - { x: 4400, y: 4400 }, - { x: 4401, y: 4401 }, - { x: 4402, y: 4402 }, - { x: 4403, y: 4403 }, - { x: 4404, y: 4404 }, - { x: 4405, y: 4405 }, - { x: 4406, y: 4406 }, - { x: 4407, y: 4407 }, - { x: 4408, y: 4408 }, - { x: 4409, y: 4409 }, - { x: 4410, y: 4410 }, - { x: 4411, y: 4411 }, - { x: 4412, y: 4412 }, - { x: 4413, y: 4413 }, - { x: 4414, y: 4414 }, - { x: 4415, y: 4415 }, - { x: 4416, y: 4416 }, - { x: 4417, y: 4417 }, - { x: 4418, y: 4418 }, - { x: 4419, y: 4419 }, - { x: 4420, y: 4420 }, - { x: 4421, y: 4421 }, - { x: 4422, y: 4422 }, - { x: 4423, y: 4423 }, - { x: 4424, y: 4424 }, - { x: 4425, y: 4425 }, - { x: 4426, y: 4426 }, - { x: 4427, y: 4427 }, - { x: 4428, y: 4428 }, - { x: 4429, y: 4429 }, - { x: 4430, y: 4430 }, - { x: 4431, y: 4431 }, - { x: 4432, y: 4432 }, - { x: 4433, y: 4433 }, - { x: 4434, y: 4434 }, - { x: 4435, y: 4435 }, - { x: 4436, y: 4436 }, - { x: 4437, y: 4437 }, - { x: 4438, y: 4438 }, - { x: 4439, y: 4439 }, - { x: 4440, y: 4440 }, - { x: 4441, y: 4441 }, - { x: 4442, y: 4442 }, - { x: 4443, y: 4443 }, - { x: 4444, y: 4444 }, - { x: 4445, y: 4445 }, - { x: 4446, y: 4446 }, - { x: 4447, y: 4447 }, - { x: 4448, y: 4448 }, - { x: 4449, y: 4449 }, - { x: 4450, y: 4450 }, - { x: 4451, y: 4451 }, - { x: 4452, y: 4452 }, - { x: 4453, y: 4453 }, - { x: 4454, y: 4454 }, - { x: 4455, y: 4455 }, - { x: 4456, y: 4456 }, - { x: 4457, y: 4457 }, - { x: 4458, y: 4458 }, - { x: 4459, y: 4459 }, - { x: 4460, y: 4460 }, - { x: 4461, y: 4461 }, - { x: 4462, y: 4462 }, - { x: 4463, y: 4463 }, - { x: 4464, y: 4464 }, - { x: 4465, y: 4465 }, - { x: 4466, y: 4466 }, - { x: 4467, y: 4467 }, - { x: 4468, y: 4468 }, - { x: 4469, y: 4469 }, - { x: 4470, y: 4470 }, - { x: 4471, y: 4471 }, - { x: 4472, y: 4472 }, - { x: 4473, y: 4473 }, - { x: 4474, y: 4474 }, - { x: 4475, y: 4475 }, - { x: 4476, y: 4476 }, - { x: 4477, y: 4477 }, - { x: 4478, y: 4478 }, - { x: 4479, y: 4479 }, - { x: 4480, y: 4480 }, - { x: 4481, y: 4481 }, - { x: 4482, y: 4482 }, - { x: 4483, y: 4483 }, - { x: 4484, y: 4484 }, - { x: 4485, y: 4485 }, - { x: 4486, y: 4486 }, - { x: 4487, y: 4487 }, - { x: 4488, y: 4488 }, - { x: 4489, y: 4489 }, - { x: 4490, y: 4490 }, - { x: 4491, y: 4491 }, - { x: 4492, y: 4492 }, - { x: 4493, y: 4493 }, - { x: 4494, y: 4494 }, - { x: 4495, y: 4495 }, - { x: 4496, y: 4496 }, - { x: 4497, y: 4497 }, - { x: 4498, y: 4498 }, - { x: 4499, y: 4499 }, - { x: 4500, y: 4500 }, - { x: 4501, y: 4501 }, - { x: 4502, y: 4502 }, - { x: 4503, y: 4503 }, - { x: 4504, y: 4504 }, - { x: 4505, y: 4505 }, - { x: 4506, y: 4506 }, - { x: 4507, y: 4507 }, - { x: 4508, y: 4508 }, - { x: 4509, y: 4509 }, - { x: 4510, y: 4510 }, - { x: 4511, y: 4511 }, - { x: 4512, y: 4512 }, - { x: 4513, y: 4513 }, - { x: 4514, y: 4514 }, - { x: 4515, y: 4515 }, - { x: 4516, y: 4516 }, - { x: 4517, y: 4517 }, - { x: 4518, y: 4518 }, - { x: 4519, y: 4519 }, - { x: 4520, y: 4520 }, - { x: 4521, y: 4521 }, - { x: 4522, y: 4522 }, - { x: 4523, y: 4523 }, - { x: 4524, y: 4524 }, - { x: 4525, y: 4525 }, - { x: 4526, y: 4526 }, - { x: 4527, y: 4527 }, - { x: 4528, y: 4528 }, - { x: 4529, y: 4529 }, - { x: 4530, y: 4530 }, - { x: 4531, y: 4531 }, - { x: 4532, y: 4532 }, - { x: 4533, y: 4533 }, - { x: 4534, y: 4534 }, - { x: 4535, y: 4535 }, - { x: 4536, y: 4536 }, - { x: 4537, y: 4537 }, - { x: 4538, y: 4538 }, - { x: 4539, y: 4539 }, - { x: 4540, y: 4540 }, - { x: 4541, y: 4541 }, - { x: 4542, y: 4542 }, - { x: 4543, y: 4543 }, - { x: 4544, y: 4544 }, - { x: 4545, y: 4545 }, - { x: 4546, y: 4546 }, - { x: 4547, y: 4547 }, - { x: 4548, y: 4548 }, - { x: 4549, y: 4549 }, - { x: 4550, y: 4550 }, - { x: 4551, y: 4551 }, - { x: 4552, y: 4552 }, - { x: 4553, y: 4553 }, - { x: 4554, y: 4554 }, - { x: 4555, y: 4555 }, - { x: 4556, y: 4556 }, - { x: 4557, y: 4557 }, - { x: 4558, y: 4558 }, - { x: 4559, y: 4559 }, - { x: 4560, y: 4560 }, - { x: 4561, y: 4561 }, - { x: 4562, y: 4562 }, - { x: 4563, y: 4563 }, - { x: 4564, y: 4564 }, - { x: 4565, y: 4565 }, - { x: 4566, y: 4566 }, - { x: 4567, y: 4567 }, - { x: 4568, y: 4568 }, - { x: 4569, y: 4569 }, - { x: 4570, y: 4570 }, - { x: 4571, y: 4571 }, - { x: 4572, y: 4572 }, - { x: 4573, y: 4573 }, - { x: 4574, y: 4574 }, - { x: 4575, y: 4575 }, - { x: 4576, y: 4576 }, - { x: 4577, y: 4577 }, - { x: 4578, y: 4578 }, - { x: 4579, y: 4579 }, - { x: 4580, y: 4580 }, - { x: 4581, y: 4581 }, - { x: 4582, y: 4582 }, - { x: 4583, y: 4583 }, - { x: 4584, y: 4584 }, - { x: 4585, y: 4585 }, - { x: 4586, y: 4586 }, - { x: 4587, y: 4587 }, - { x: 4588, y: 4588 }, - { x: 4589, y: 4589 }, - { x: 4590, y: 4590 }, - { x: 4591, y: 4591 }, - { x: 4592, y: 4592 }, - { x: 4593, y: 4593 }, - { x: 4594, y: 4594 }, - { x: 4595, y: 4595 }, - { x: 4596, y: 4596 }, - { x: 4597, y: 4597 }, - { x: 4598, y: 4598 }, - { x: 4599, y: 4599 }, - { x: 4600, y: 4600 }, - { x: 4601, y: 4601 }, - { x: 4602, y: 4602 }, - { x: 4603, y: 4603 }, - { x: 4604, y: 4604 }, - { x: 4605, y: 4605 }, - { x: 4606, y: 4606 }, - { x: 4607, y: 4607 }, - { x: 4608, y: 4608 }, - { x: 4609, y: 4609 }, - { x: 4610, y: 4610 }, - { x: 4611, y: 4611 }, - { x: 4612, y: 4612 }, - { x: 4613, y: 4613 }, - { x: 4614, y: 4614 }, - { x: 4615, y: 4615 }, - { x: 4616, y: 4616 }, - { x: 4617, y: 4617 }, - { x: 4618, y: 4618 }, - { x: 4619, y: 4619 }, - { x: 4620, y: 4620 }, - { x: 4621, y: 4621 }, - { x: 4622, y: 4622 }, - { x: 4623, y: 4623 }, - { x: 4624, y: 4624 }, - { x: 4625, y: 4625 }, - { x: 4626, y: 4626 }, - { x: 4627, y: 4627 }, - { x: 4628, y: 4628 }, - { x: 4629, y: 4629 }, - { x: 4630, y: 4630 }, - { x: 4631, y: 4631 }, - { x: 4632, y: 4632 }, - { x: 4633, y: 4633 }, - { x: 4634, y: 4634 }, - { x: 4635, y: 4635 }, - { x: 4636, y: 4636 }, - { x: 4637, y: 4637 }, - { x: 4638, y: 4638 }, - { x: 4639, y: 4639 }, - { x: 4640, y: 4640 }, - { x: 4641, y: 4641 }, - { x: 4642, y: 4642 }, - { x: 4643, y: 4643 }, - { x: 4644, y: 4644 }, - { x: 4645, y: 4645 }, - { x: 4646, y: 4646 }, - { x: 4647, y: 4647 }, - { x: 4648, y: 4648 }, - { x: 4649, y: 4649 }, - { x: 4650, y: 4650 }, - { x: 4651, y: 4651 }, - { x: 4652, y: 4652 }, - { x: 4653, y: 4653 }, - { x: 4654, y: 4654 }, - { x: 4655, y: 4655 }, - { x: 4656, y: 4656 }, - { x: 4657, y: 4657 }, - { x: 4658, y: 4658 }, - { x: 4659, y: 4659 }, - { x: 4660, y: 4660 }, - { x: 4661, y: 4661 }, - { x: 4662, y: 4662 }, - { x: 4663, y: 4663 }, - { x: 4664, y: 4664 }, - { x: 4665, y: 4665 }, - { x: 4666, y: 4666 }, - { x: 4667, y: 4667 }, - { x: 4668, y: 4668 }, - { x: 4669, y: 4669 }, - { x: 4670, y: 4670 }, - { x: 4671, y: 4671 }, - { x: 4672, y: 4672 }, - { x: 4673, y: 4673 }, - { x: 4674, y: 4674 }, - { x: 4675, y: 4675 }, - { x: 4676, y: 4676 }, - { x: 4677, y: 4677 }, - { x: 4678, y: 4678 }, - { x: 4679, y: 4679 }, - { x: 4680, y: 4680 }, - { x: 4681, y: 4681 }, - { x: 4682, y: 4682 }, - { x: 4683, y: 4683 }, - { x: 4684, y: 4684 }, - { x: 4685, y: 4685 }, - { x: 4686, y: 4686 }, - { x: 4687, y: 4687 }, - { x: 4688, y: 4688 }, - { x: 4689, y: 4689 }, - { x: 4690, y: 4690 }, - { x: 4691, y: 4691 }, - { x: 4692, y: 4692 }, - { x: 4693, y: 4693 }, - { x: 4694, y: 4694 }, - { x: 4695, y: 4695 }, - { x: 4696, y: 4696 }, - { x: 4697, y: 4697 }, - { x: 4698, y: 4698 }, - { x: 4699, y: 4699 }, - { x: 4700, y: 4700 }, - { x: 4701, y: 4701 }, - { x: 4702, y: 4702 }, - { x: 4703, y: 4703 }, - { x: 4704, y: 4704 }, - { x: 4705, y: 4705 }, - { x: 4706, y: 4706 }, - { x: 4707, y: 4707 }, - { x: 4708, y: 4708 }, - { x: 4709, y: 4709 }, - { x: 4710, y: 4710 }, - { x: 4711, y: 4711 }, - { x: 4712, y: 4712 }, - { x: 4713, y: 4713 }, - { x: 4714, y: 4714 }, - { x: 4715, y: 4715 }, - { x: 4716, y: 4716 }, - { x: 4717, y: 4717 }, - { x: 4718, y: 4718 }, - { x: 4719, y: 4719 }, - { x: 4720, y: 4720 }, - { x: 4721, y: 4721 }, - { x: 4722, y: 4722 }, - { x: 4723, y: 4723 }, - { x: 4724, y: 4724 }, - { x: 4725, y: 4725 }, - { x: 4726, y: 4726 }, - { x: 4727, y: 4727 }, - { x: 4728, y: 4728 }, - { x: 4729, y: 4729 }, - { x: 4730, y: 4730 }, - { x: 4731, y: 4731 }, - { x: 4732, y: 4732 }, - { x: 4733, y: 4733 }, - { x: 4734, y: 4734 }, - { x: 4735, y: 4735 }, - { x: 4736, y: 4736 }, - { x: 4737, y: 4737 }, - { x: 4738, y: 4738 }, - { x: 4739, y: 4739 }, - { x: 4740, y: 4740 }, - { x: 4741, y: 4741 }, - { x: 4742, y: 4742 }, - { x: 4743, y: 4743 }, - { x: 4744, y: 4744 }, - { x: 4745, y: 4745 }, - { x: 4746, y: 4746 }, - { x: 4747, y: 4747 }, - { x: 4748, y: 4748 }, - { x: 4749, y: 4749 }, - { x: 4750, y: 4750 }, - { x: 4751, y: 4751 }, - { x: 4752, y: 4752 }, - { x: 4753, y: 4753 }, - { x: 4754, y: 4754 }, - { x: 4755, y: 4755 }, - { x: 4756, y: 4756 }, - { x: 4757, y: 4757 }, - { x: 4758, y: 4758 }, - { x: 4759, y: 4759 }, - { x: 4760, y: 4760 }, - { x: 4761, y: 4761 }, - { x: 4762, y: 4762 }, - { x: 4763, y: 4763 }, - { x: 4764, y: 4764 }, - { x: 4765, y: 4765 }, - { x: 4766, y: 4766 }, - { x: 4767, y: 4767 }, - { x: 4768, y: 4768 }, - { x: 4769, y: 4769 }, - { x: 4770, y: 4770 }, - { x: 4771, y: 4771 }, - { x: 4772, y: 4772 }, - { x: 4773, y: 4773 }, - { x: 4774, y: 4774 }, - { x: 4775, y: 4775 }, - { x: 4776, y: 4776 }, - { x: 4777, y: 4777 }, - { x: 4778, y: 4778 }, - { x: 4779, y: 4779 }, - { x: 4780, y: 4780 }, - { x: 4781, y: 4781 }, - { x: 4782, y: 4782 }, - { x: 4783, y: 4783 }, - { x: 4784, y: 4784 }, - { x: 4785, y: 4785 }, - { x: 4786, y: 4786 }, - { x: 4787, y: 4787 }, - { x: 4788, y: 4788 }, - { x: 4789, y: 4789 }, - { x: 4790, y: 4790 }, - { x: 4791, y: 4791 }, - { x: 4792, y: 4792 }, - { x: 4793, y: 4793 }, - { x: 4794, y: 4794 }, - { x: 4795, y: 4795 }, - { x: 4796, y: 4796 }, - { x: 4797, y: 4797 }, - { x: 4798, y: 4798 }, - { x: 4799, y: 4799 }, - { x: 4800, y: 4800 }, - { x: 4801, y: 4801 }, - { x: 4802, y: 4802 }, - { x: 4803, y: 4803 }, - { x: 4804, y: 4804 }, - { x: 4805, y: 4805 }, - { x: 4806, y: 4806 }, - { x: 4807, y: 4807 }, - { x: 4808, y: 4808 }, - { x: 4809, y: 4809 }, - { x: 4810, y: 4810 }, - { x: 4811, y: 4811 }, - { x: 4812, y: 4812 }, - { x: 4813, y: 4813 }, - { x: 4814, y: 4814 }, - { x: 4815, y: 4815 }, - { x: 4816, y: 4816 }, - { x: 4817, y: 4817 }, - { x: 4818, y: 4818 }, - { x: 4819, y: 4819 }, - { x: 4820, y: 4820 }, - { x: 4821, y: 4821 }, - { x: 4822, y: 4822 }, - { x: 4823, y: 4823 }, - { x: 4824, y: 4824 }, - { x: 4825, y: 4825 }, - { x: 4826, y: 4826 }, - { x: 4827, y: 4827 }, - { x: 4828, y: 4828 }, - { x: 4829, y: 4829 }, - { x: 4830, y: 4830 }, - { x: 4831, y: 4831 }, - { x: 4832, y: 4832 }, - { x: 4833, y: 4833 }, - { x: 4834, y: 4834 }, - { x: 4835, y: 4835 }, - { x: 4836, y: 4836 }, - { x: 4837, y: 4837 }, - { x: 4838, y: 4838 }, - { x: 4839, y: 4839 }, - { x: 4840, y: 4840 }, - { x: 4841, y: 4841 }, - { x: 4842, y: 4842 }, - { x: 4843, y: 4843 }, - { x: 4844, y: 4844 }, - { x: 4845, y: 4845 }, - { x: 4846, y: 4846 }, - { x: 4847, y: 4847 }, - { x: 4848, y: 4848 }, - { x: 4849, y: 4849 }, - { x: 4850, y: 4850 }, - { x: 4851, y: 4851 }, - { x: 4852, y: 4852 }, - { x: 4853, y: 4853 }, - { x: 4854, y: 4854 }, - { x: 4855, y: 4855 }, - { x: 4856, y: 4856 }, - { x: 4857, y: 4857 }, - { x: 4858, y: 4858 }, - { x: 4859, y: 4859 }, - { x: 4860, y: 4860 }, - { x: 4861, y: 4861 }, - { x: 4862, y: 4862 }, - { x: 4863, y: 4863 }, - { x: 4864, y: 4864 }, - { x: 4865, y: 4865 }, - { x: 4866, y: 4866 }, - { x: 4867, y: 4867 }, - { x: 4868, y: 4868 }, - { x: 4869, y: 4869 }, - { x: 4870, y: 4870 }, - { x: 4871, y: 4871 }, - { x: 4872, y: 4872 }, - { x: 4873, y: 4873 }, - { x: 4874, y: 4874 }, - { x: 4875, y: 4875 }, - { x: 4876, y: 4876 }, - { x: 4877, y: 4877 }, - { x: 4878, y: 4878 }, - { x: 4879, y: 4879 }, - { x: 4880, y: 4880 }, - { x: 4881, y: 4881 }, - { x: 4882, y: 4882 }, - { x: 4883, y: 4883 }, - { x: 4884, y: 4884 }, - { x: 4885, y: 4885 }, - { x: 4886, y: 4886 }, - { x: 4887, y: 4887 }, - { x: 4888, y: 4888 }, - { x: 4889, y: 4889 }, - { x: 4890, y: 4890 }, - { x: 4891, y: 4891 }, - { x: 4892, y: 4892 }, - { x: 4893, y: 4893 }, - { x: 4894, y: 4894 }, - { x: 4895, y: 4895 }, - { x: 4896, y: 4896 }, - { x: 4897, y: 4897 }, - { x: 4898, y: 4898 }, - { x: 4899, y: 4899 }, - { x: 4900, y: 4900 }, - { x: 4901, y: 4901 }, - { x: 4902, y: 4902 }, - { x: 4903, y: 4903 }, - { x: 4904, y: 4904 }, - { x: 4905, y: 4905 }, - { x: 4906, y: 4906 }, - { x: 4907, y: 4907 }, - { x: 4908, y: 4908 }, - { x: 4909, y: 4909 }, - { x: 4910, y: 4910 }, - { x: 4911, y: 4911 }, - { x: 4912, y: 4912 }, - { x: 4913, y: 4913 }, - { x: 4914, y: 4914 }, - { x: 4915, y: 4915 }, - { x: 4916, y: 4916 }, - { x: 4917, y: 4917 }, - { x: 4918, y: 4918 }, - { x: 4919, y: 4919 }, - { x: 4920, y: 4920 }, - { x: 4921, y: 4921 }, - { x: 4922, y: 4922 }, - { x: 4923, y: 4923 }, - { x: 4924, y: 4924 }, - { x: 4925, y: 4925 }, - { x: 4926, y: 4926 }, - { x: 4927, y: 4927 }, - { x: 4928, y: 4928 }, - { x: 4929, y: 4929 }, - { x: 4930, y: 4930 }, - { x: 4931, y: 4931 }, - { x: 4932, y: 4932 }, - { x: 4933, y: 4933 }, - { x: 4934, y: 4934 }, - { x: 4935, y: 4935 }, - { x: 4936, y: 4936 }, - { x: 4937, y: 4937 }, - { x: 4938, y: 4938 }, - { x: 4939, y: 4939 }, - { x: 4940, y: 4940 }, - { x: 4941, y: 4941 }, - { x: 4942, y: 4942 }, - { x: 4943, y: 4943 }, - { x: 4944, y: 4944 }, - { x: 4945, y: 4945 }, - { x: 4946, y: 4946 }, - { x: 4947, y: 4947 }, - { x: 4948, y: 4948 }, - { x: 4949, y: 4949 }, - { x: 4950, y: 4950 }, - { x: 4951, y: 4951 }, - { x: 4952, y: 4952 }, - { x: 4953, y: 4953 }, - { x: 4954, y: 4954 }, - { x: 4955, y: 4955 }, - { x: 4956, y: 4956 }, - { x: 4957, y: 4957 }, - { x: 4958, y: 4958 }, - { x: 4959, y: 4959 }, - { x: 4960, y: 4960 }, - { x: 4961, y: 4961 }, - { x: 4962, y: 4962 }, - { x: 4963, y: 4963 }, - { x: 4964, y: 4964 }, - { x: 4965, y: 4965 }, - { x: 4966, y: 4966 }, - { x: 4967, y: 4967 }, - { x: 4968, y: 4968 }, - { x: 4969, y: 4969 }, - { x: 4970, y: 4970 }, - { x: 4971, y: 4971 }, - { x: 4972, y: 4972 }, - { x: 4973, y: 4973 }, - { x: 4974, y: 4974 }, - { x: 4975, y: 4975 }, - { x: 4976, y: 4976 }, - { x: 4977, y: 4977 }, - { x: 4978, y: 4978 }, - { x: 4979, y: 4979 }, - { x: 4980, y: 4980 }, - { x: 4981, y: 4981 }, - { x: 4982, y: 4982 }, - { x: 4983, y: 4983 }, - { x: 4984, y: 4984 }, - { x: 4985, y: 4985 }, - { x: 4986, y: 4986 }, - { x: 4987, y: 4987 }, - { x: 4988, y: 4988 }, - { x: 4989, y: 4989 }, - { x: 4990, y: 4990 }, - { x: 4991, y: 4991 }, - { x: 4992, y: 4992 }, - { x: 4993, y: 4993 }, - { x: 4994, y: 4994 }, - { x: 4995, y: 4995 }, - { x: 4996, y: 4996 }, - { x: 4997, y: 4997 }, - { x: 4998, y: 4998 }, - { x: 4999, y: 4999 }, - { x: 5000, y: 5000 }, - { x: 5001, y: 5001 }, - { x: 5002, y: 5002 }, - { x: 5003, y: 5003 }, - { x: 5004, y: 5004 }, - { x: 5005, y: 5005 }, - { x: 5006, y: 5006 }, - { x: 5007, y: 5007 }, - { x: 5008, y: 5008 }, - { x: 5009, y: 5009 }, - { x: 5010, y: 5010 }, - { x: 5011, y: 5011 }, - { x: 5012, y: 5012 }, - { x: 5013, y: 5013 }, - { x: 5014, y: 5014 }, - { x: 5015, y: 5015 }, - { x: 5016, y: 5016 }, - { x: 5017, y: 5017 }, - { x: 5018, y: 5018 }, - { x: 5019, y: 5019 }, - { x: 5020, y: 5020 }, - { x: 5021, y: 5021 }, - { x: 5022, y: 5022 }, - { x: 5023, y: 5023 }, - { x: 5024, y: 5024 }, - { x: 5025, y: 5025 }, - { x: 5026, y: 5026 }, - { x: 5027, y: 5027 }, - { x: 5028, y: 5028 }, - { x: 5029, y: 5029 }, - { x: 5030, y: 5030 }, - { x: 5031, y: 5031 }, - { x: 5032, y: 5032 }, - { x: 5033, y: 5033 }, - { x: 5034, y: 5034 }, - { x: 5035, y: 5035 }, - { x: 5036, y: 5036 }, - { x: 5037, y: 5037 }, - { x: 5038, y: 5038 }, - { x: 5039, y: 5039 }, - { x: 5040, y: 5040 }, - { x: 5041, y: 5041 }, - { x: 5042, y: 5042 }, - { x: 5043, y: 5043 }, - { x: 5044, y: 5044 }, - { x: 5045, y: 5045 }, - { x: 5046, y: 5046 }, - { x: 5047, y: 5047 }, - { x: 5048, y: 5048 }, - { x: 5049, y: 5049 }, - { x: 5050, y: 5050 }, - { x: 5051, y: 5051 }, - { x: 5052, y: 5052 }, - { x: 5053, y: 5053 }, - { x: 5054, y: 5054 }, - { x: 5055, y: 5055 }, - { x: 5056, y: 5056 }, - { x: 5057, y: 5057 }, - { x: 5058, y: 5058 }, - { x: 5059, y: 5059 }, - { x: 5060, y: 5060 }, - { x: 5061, y: 5061 }, - { x: 5062, y: 5062 }, - { x: 5063, y: 5063 }, - { x: 5064, y: 5064 }, - { x: 5065, y: 5065 }, - { x: 5066, y: 5066 }, - { x: 5067, y: 5067 }, - { x: 5068, y: 5068 }, - { x: 5069, y: 5069 }, - { x: 5070, y: 5070 }, - { x: 5071, y: 5071 }, - { x: 5072, y: 5072 }, - { x: 5073, y: 5073 }, - { x: 5074, y: 5074 }, - { x: 5075, y: 5075 }, - { x: 5076, y: 5076 }, - { x: 5077, y: 5077 }, - { x: 5078, y: 5078 }, - { x: 5079, y: 5079 }, - { x: 5080, y: 5080 }, - { x: 5081, y: 5081 }, - { x: 5082, y: 5082 }, - { x: 5083, y: 5083 }, - { x: 5084, y: 5084 }, - { x: 5085, y: 5085 }, - { x: 5086, y: 5086 }, - { x: 5087, y: 5087 }, - { x: 5088, y: 5088 }, - { x: 5089, y: 5089 }, - { x: 5090, y: 5090 }, - { x: 5091, y: 5091 }, - { x: 5092, y: 5092 }, - { x: 5093, y: 5093 }, - { x: 5094, y: 5094 }, - { x: 5095, y: 5095 }, - { x: 5096, y: 5096 }, - { x: 5097, y: 5097 }, - { x: 5098, y: 5098 }, - { x: 5099, y: 5099 }, - { x: 5100, y: 5100 }, - { x: 5101, y: 5101 }, - { x: 5102, y: 5102 }, - { x: 5103, y: 5103 }, - { x: 5104, y: 5104 }, - { x: 5105, y: 5105 }, - { x: 5106, y: 5106 }, - { x: 5107, y: 5107 }, - { x: 5108, y: 5108 }, - { x: 5109, y: 5109 }, - { x: 5110, y: 5110 }, - { x: 5111, y: 5111 }, - { x: 5112, y: 5112 }, - { x: 5113, y: 5113 }, - { x: 5114, y: 5114 }, - { x: 5115, y: 5115 }, - { x: 5116, y: 5116 }, - { x: 5117, y: 5117 }, - { x: 5118, y: 5118 }, - { x: 5119, y: 5119 }, - { x: 5120, y: 5120 }, - { x: 5121, y: 5121 }, - { x: 5122, y: 5122 }, - { x: 5123, y: 5123 }, - { x: 5124, y: 5124 }, - { x: 5125, y: 5125 }, - { x: 5126, y: 5126 }, - { x: 5127, y: 5127 }, - { x: 5128, y: 5128 }, - { x: 5129, y: 5129 }, - { x: 5130, y: 5130 }, - { x: 5131, y: 5131 }, - { x: 5132, y: 5132 }, - { x: 5133, y: 5133 }, - { x: 5134, y: 5134 }, - { x: 5135, y: 5135 }, - { x: 5136, y: 5136 }, - { x: 5137, y: 5137 }, - { x: 5138, y: 5138 }, - { x: 5139, y: 5139 }, - { x: 5140, y: 5140 }, - { x: 5141, y: 5141 }, - { x: 5142, y: 5142 }, - { x: 5143, y: 5143 }, - { x: 5144, y: 5144 }, - { x: 5145, y: 5145 }, - { x: 5146, y: 5146 }, - { x: 5147, y: 5147 }, - { x: 5148, y: 5148 }, - { x: 5149, y: 5149 }, - { x: 5150, y: 5150 }, - { x: 5151, y: 5151 }, - { x: 5152, y: 5152 }, - { x: 5153, y: 5153 }, - { x: 5154, y: 5154 }, - { x: 5155, y: 5155 }, - { x: 5156, y: 5156 }, - { x: 5157, y: 5157 }, - { x: 5158, y: 5158 }, - { x: 5159, y: 5159 }, - { x: 5160, y: 5160 }, - { x: 5161, y: 5161 }, - { x: 5162, y: 5162 }, - { x: 5163, y: 5163 }, - { x: 5164, y: 5164 }, - { x: 5165, y: 5165 }, - { x: 5166, y: 5166 }, - { x: 5167, y: 5167 }, - { x: 5168, y: 5168 }, - { x: 5169, y: 5169 }, - { x: 5170, y: 5170 }, - { x: 5171, y: 5171 }, - { x: 5172, y: 5172 }, - { x: 5173, y: 5173 }, - { x: 5174, y: 5174 }, - { x: 5175, y: 5175 }, - { x: 5176, y: 5176 }, - { x: 5177, y: 5177 }, - { x: 5178, y: 5178 }, - { x: 5179, y: 5179 }, - { x: 5180, y: 5180 }, - { x: 5181, y: 5181 }, - { x: 5182, y: 5182 }, - { x: 5183, y: 5183 }, - { x: 5184, y: 5184 }, - { x: 5185, y: 5185 }, - { x: 5186, y: 5186 }, - { x: 5187, y: 5187 }, - { x: 5188, y: 5188 }, - { x: 5189, y: 5189 }, - { x: 5190, y: 5190 }, - { x: 5191, y: 5191 }, - { x: 5192, y: 5192 }, - { x: 5193, y: 5193 }, - { x: 5194, y: 5194 }, - { x: 5195, y: 5195 }, - { x: 5196, y: 5196 }, - { x: 5197, y: 5197 }, - { x: 5198, y: 5198 }, - { x: 5199, y: 5199 }, - { x: 5200, y: 5200 }, - { x: 5201, y: 5201 }, - { x: 5202, y: 5202 }, - { x: 5203, y: 5203 }, - { x: 5204, y: 5204 }, - { x: 5205, y: 5205 }, - { x: 5206, y: 5206 }, - { x: 5207, y: 5207 }, - { x: 5208, y: 5208 }, - { x: 5209, y: 5209 }, - { x: 5210, y: 5210 }, - { x: 5211, y: 5211 }, - { x: 5212, y: 5212 }, - { x: 5213, y: 5213 }, - { x: 5214, y: 5214 }, - { x: 5215, y: 5215 }, - { x: 5216, y: 5216 }, - { x: 5217, y: 5217 }, - { x: 5218, y: 5218 }, - { x: 5219, y: 5219 }, - { x: 5220, y: 5220 }, - { x: 5221, y: 5221 }, - { x: 5222, y: 5222 }, - { x: 5223, y: 5223 }, - { x: 5224, y: 5224 }, - { x: 5225, y: 5225 }, - { x: 5226, y: 5226 }, - { x: 5227, y: 5227 }, - { x: 5228, y: 5228 }, - { x: 5229, y: 5229 }, - { x: 5230, y: 5230 }, - { x: 5231, y: 5231 }, - { x: 5232, y: 5232 }, - { x: 5233, y: 5233 }, - { x: 5234, y: 5234 }, - { x: 5235, y: 5235 }, - { x: 5236, y: 5236 }, - { x: 5237, y: 5237 }, - { x: 5238, y: 5238 }, - { x: 5239, y: 5239 }, - { x: 5240, y: 5240 }, - { x: 5241, y: 5241 }, - { x: 5242, y: 5242 }, - { x: 5243, y: 5243 }, - { x: 5244, y: 5244 }, - { x: 5245, y: 5245 }, - { x: 5246, y: 5246 }, - { x: 5247, y: 5247 }, - { x: 5248, y: 5248 }, - { x: 5249, y: 5249 }, - { x: 5250, y: 5250 }, - { x: 5251, y: 5251 }, - { x: 5252, y: 5252 }, - { x: 5253, y: 5253 }, - { x: 5254, y: 5254 }, - { x: 5255, y: 5255 }, - { x: 5256, y: 5256 }, - { x: 5257, y: 5257 }, - { x: 5258, y: 5258 }, - { x: 5259, y: 5259 }, - { x: 5260, y: 5260 }, - { x: 5261, y: 5261 }, - { x: 5262, y: 5262 }, - { x: 5263, y: 5263 }, - { x: 5264, y: 5264 }, - { x: 5265, y: 5265 }, - { x: 5266, y: 5266 }, - { x: 5267, y: 5267 }, - { x: 5268, y: 5268 }, - { x: 5269, y: 5269 }, - { x: 5270, y: 5270 }, - { x: 5271, y: 5271 }, - { x: 5272, y: 5272 }, - { x: 5273, y: 5273 }, - { x: 5274, y: 5274 }, - { x: 5275, y: 5275 }, - { x: 5276, y: 5276 }, - { x: 5277, y: 5277 }, - { x: 5278, y: 5278 }, - { x: 5279, y: 5279 }, - { x: 5280, y: 5280 }, - { x: 5281, y: 5281 }, - { x: 5282, y: 5282 }, - { x: 5283, y: 5283 }, - { x: 5284, y: 5284 }, - { x: 5285, y: 5285 }, - { x: 5286, y: 5286 }, - { x: 5287, y: 5287 }, - { x: 5288, y: 5288 }, - { x: 5289, y: 5289 }, - { x: 5290, y: 5290 }, - { x: 5291, y: 5291 }, - { x: 5292, y: 5292 }, - { x: 5293, y: 5293 }, - { x: 5294, y: 5294 }, - { x: 5295, y: 5295 }, - { x: 5296, y: 5296 }, - { x: 5297, y: 5297 }, - { x: 5298, y: 5298 }, - { x: 5299, y: 5299 }, - { x: 5300, y: 5300 }, - { x: 5301, y: 5301 }, - { x: 5302, y: 5302 }, - { x: 5303, y: 5303 }, - { x: 5304, y: 5304 }, - { x: 5305, y: 5305 }, - { x: 5306, y: 5306 }, - { x: 5307, y: 5307 }, - { x: 5308, y: 5308 }, - { x: 5309, y: 5309 }, - { x: 5310, y: 5310 }, - { x: 5311, y: 5311 }, - { x: 5312, y: 5312 }, - { x: 5313, y: 5313 }, - { x: 5314, y: 5314 }, - { x: 5315, y: 5315 }, - { x: 5316, y: 5316 }, - { x: 5317, y: 5317 }, - { x: 5318, y: 5318 }, - { x: 5319, y: 5319 }, - { x: 5320, y: 5320 }, - { x: 5321, y: 5321 }, - { x: 5322, y: 5322 }, - { x: 5323, y: 5323 }, - { x: 5324, y: 5324 }, - { x: 5325, y: 5325 }, - { x: 5326, y: 5326 }, - { x: 5327, y: 5327 }, - { x: 5328, y: 5328 }, - { x: 5329, y: 5329 }, - { x: 5330, y: 5330 }, - { x: 5331, y: 5331 }, - { x: 5332, y: 5332 }, - { x: 5333, y: 5333 }, - { x: 5334, y: 5334 }, - { x: 5335, y: 5335 }, - { x: 5336, y: 5336 }, - { x: 5337, y: 5337 }, - { x: 5338, y: 5338 }, - { x: 5339, y: 5339 }, - { x: 5340, y: 5340 }, - { x: 5341, y: 5341 }, - { x: 5342, y: 5342 }, - { x: 5343, y: 5343 }, - { x: 5344, y: 5344 }, - { x: 5345, y: 5345 }, - { x: 5346, y: 5346 }, - { x: 5347, y: 5347 }, - { x: 5348, y: 5348 }, - { x: 5349, y: 5349 }, - { x: 5350, y: 5350 }, - { x: 5351, y: 5351 }, - { x: 5352, y: 5352 }, - { x: 5353, y: 5353 }, - { x: 5354, y: 5354 }, - { x: 5355, y: 5355 }, - { x: 5356, y: 5356 }, - { x: 5357, y: 5357 }, - { x: 5358, y: 5358 }, - { x: 5359, y: 5359 }, - { x: 5360, y: 5360 }, - { x: 5361, y: 5361 }, - { x: 5362, y: 5362 }, - { x: 5363, y: 5363 }, - { x: 5364, y: 5364 }, - { x: 5365, y: 5365 }, - { x: 5366, y: 5366 }, - { x: 5367, y: 5367 }, - { x: 5368, y: 5368 }, - { x: 5369, y: 5369 }, - { x: 5370, y: 5370 }, - { x: 5371, y: 5371 }, - { x: 5372, y: 5372 }, - { x: 5373, y: 5373 }, - { x: 5374, y: 5374 }, - { x: 5375, y: 5375 }, - { x: 5376, y: 5376 }, - { x: 5377, y: 5377 }, - { x: 5378, y: 5378 }, - { x: 5379, y: 5379 }, - { x: 5380, y: 5380 }, - { x: 5381, y: 5381 }, - { x: 5382, y: 5382 }, - { x: 5383, y: 5383 }, - { x: 5384, y: 5384 }, - { x: 5385, y: 5385 }, - { x: 5386, y: 5386 }, - { x: 5387, y: 5387 }, - { x: 5388, y: 5388 }, - { x: 5389, y: 5389 }, - { x: 5390, y: 5390 }, - { x: 5391, y: 5391 }, - { x: 5392, y: 5392 }, - { x: 5393, y: 5393 }, - { x: 5394, y: 5394 }, - { x: 5395, y: 5395 }, - { x: 5396, y: 5396 }, - { x: 5397, y: 5397 }, - { x: 5398, y: 5398 }, - { x: 5399, y: 5399 }, - { x: 5400, y: 5400 }, - { x: 5401, y: 5401 }, - { x: 5402, y: 5402 }, - { x: 5403, y: 5403 }, - { x: 5404, y: 5404 }, - { x: 5405, y: 5405 }, - { x: 5406, y: 5406 }, - { x: 5407, y: 5407 }, - { x: 5408, y: 5408 }, - { x: 5409, y: 5409 }, - { x: 5410, y: 5410 }, - { x: 5411, y: 5411 }, - { x: 5412, y: 5412 }, - { x: 5413, y: 5413 }, - { x: 5414, y: 5414 }, - { x: 5415, y: 5415 }, - { x: 5416, y: 5416 }, - { x: 5417, y: 5417 }, - { x: 5418, y: 5418 }, - { x: 5419, y: 5419 }, - { x: 5420, y: 5420 }, - { x: 5421, y: 5421 }, - { x: 5422, y: 5422 }, - { x: 5423, y: 5423 }, - { x: 5424, y: 5424 }, - { x: 5425, y: 5425 }, - { x: 5426, y: 5426 }, - { x: 5427, y: 5427 }, - { x: 5428, y: 5428 }, - { x: 5429, y: 5429 }, - { x: 5430, y: 5430 }, - { x: 5431, y: 5431 }, - { x: 5432, y: 5432 }, - { x: 5433, y: 5433 }, - { x: 5434, y: 5434 }, - { x: 5435, y: 5435 }, - { x: 5436, y: 5436 }, - { x: 5437, y: 5437 }, - { x: 5438, y: 5438 }, - { x: 5439, y: 5439 }, - { x: 5440, y: 5440 }, - { x: 5441, y: 5441 }, - { x: 5442, y: 5442 }, - { x: 5443, y: 5443 }, - { x: 5444, y: 5444 }, - { x: 5445, y: 5445 }, - { x: 5446, y: 5446 }, - { x: 5447, y: 5447 }, - { x: 5448, y: 5448 }, - { x: 5449, y: 5449 }, - { x: 5450, y: 5450 }, - { x: 5451, y: 5451 }, - { x: 5452, y: 5452 }, - { x: 5453, y: 5453 }, - { x: 5454, y: 5454 }, - { x: 5455, y: 5455 }, - { x: 5456, y: 5456 }, - { x: 5457, y: 5457 }, - { x: 5458, y: 5458 }, - { x: 5459, y: 5459 }, - { x: 5460, y: 5460 }, - { x: 5461, y: 5461 }, - { x: 5462, y: 5462 }, - { x: 5463, y: 5463 }, - { x: 5464, y: 5464 }, - { x: 5465, y: 5465 }, - { x: 5466, y: 5466 }, - { x: 5467, y: 5467 }, - { x: 5468, y: 5468 }, - { x: 5469, y: 5469 }, - { x: 5470, y: 5470 }, - { x: 5471, y: 5471 }, - { x: 5472, y: 5472 }, - { x: 5473, y: 5473 }, - { x: 5474, y: 5474 }, - { x: 5475, y: 5475 }, - { x: 5476, y: 5476 }, - { x: 5477, y: 5477 }, - { x: 5478, y: 5478 }, - { x: 5479, y: 5479 }, - { x: 5480, y: 5480 }, - { x: 5481, y: 5481 }, - { x: 5482, y: 5482 }, - { x: 5483, y: 5483 }, - { x: 5484, y: 5484 }, - { x: 5485, y: 5485 }, - { x: 5486, y: 5486 }, - { x: 5487, y: 5487 }, - { x: 5488, y: 5488 }, - { x: 5489, y: 5489 }, - { x: 5490, y: 5490 }, - { x: 5491, y: 5491 }, - { x: 5492, y: 5492 }, - { x: 5493, y: 5493 }, - { x: 5494, y: 5494 }, - { x: 5495, y: 5495 }, - { x: 5496, y: 5496 }, - { x: 5497, y: 5497 }, - { x: 5498, y: 5498 }, - { x: 5499, y: 5499 }, - { x: 5500, y: 5500 }, - { x: 5501, y: 5501 }, - { x: 5502, y: 5502 }, - { x: 5503, y: 5503 }, - { x: 5504, y: 5504 }, - { x: 5505, y: 5505 }, - { x: 5506, y: 5506 }, - { x: 5507, y: 5507 }, - { x: 5508, y: 5508 }, - { x: 5509, y: 5509 }, - { x: 5510, y: 5510 }, - { x: 5511, y: 5511 }, - { x: 5512, y: 5512 }, - { x: 5513, y: 5513 }, - { x: 5514, y: 5514 }, - { x: 5515, y: 5515 }, - { x: 5516, y: 5516 }, - { x: 5517, y: 5517 }, - { x: 5518, y: 5518 }, - { x: 5519, y: 5519 }, - { x: 5520, y: 5520 }, - { x: 5521, y: 5521 }, - { x: 5522, y: 5522 }, - { x: 5523, y: 5523 }, - { x: 5524, y: 5524 }, - { x: 5525, y: 5525 }, - { x: 5526, y: 5526 }, - { x: 5527, y: 5527 }, - { x: 5528, y: 5528 }, - { x: 5529, y: 5529 }, - { x: 5530, y: 5530 }, - { x: 5531, y: 5531 }, - { x: 5532, y: 5532 }, - { x: 5533, y: 5533 }, - { x: 5534, y: 5534 }, - { x: 5535, y: 5535 }, - { x: 5536, y: 5536 }, - { x: 5537, y: 5537 }, - { x: 5538, y: 5538 }, - { x: 5539, y: 5539 }, - { x: 5540, y: 5540 }, - { x: 5541, y: 5541 }, - { x: 5542, y: 5542 }, - { x: 5543, y: 5543 }, - { x: 5544, y: 5544 }, - { x: 5545, y: 5545 }, - { x: 5546, y: 5546 }, - { x: 5547, y: 5547 }, - { x: 5548, y: 5548 }, - { x: 5549, y: 5549 }, - { x: 5550, y: 5550 }, - { x: 5551, y: 5551 }, - { x: 5552, y: 5552 }, - { x: 5553, y: 5553 }, - { x: 5554, y: 5554 }, - { x: 5555, y: 5555 }, - { x: 5556, y: 5556 }, - { x: 5557, y: 5557 }, - { x: 5558, y: 5558 }, - { x: 5559, y: 5559 }, - { x: 5560, y: 5560 }, - { x: 5561, y: 5561 }, - { x: 5562, y: 5562 }, - { x: 5563, y: 5563 }, - { x: 5564, y: 5564 }, - { x: 5565, y: 5565 }, - { x: 5566, y: 5566 }, - { x: 5567, y: 5567 }, - { x: 5568, y: 5568 }, - { x: 5569, y: 5569 }, - { x: 5570, y: 5570 }, - { x: 5571, y: 5571 }, - { x: 5572, y: 5572 }, - { x: 5573, y: 5573 }, - { x: 5574, y: 5574 }, - { x: 5575, y: 5575 }, - { x: 5576, y: 5576 }, - { x: 5577, y: 5577 }, - { x: 5578, y: 5578 }, - { x: 5579, y: 5579 }, - { x: 5580, y: 5580 }, - { x: 5581, y: 5581 }, - { x: 5582, y: 5582 }, - { x: 5583, y: 5583 }, - { x: 5584, y: 5584 }, - { x: 5585, y: 5585 }, - { x: 5586, y: 5586 }, - { x: 5587, y: 5587 }, - { x: 5588, y: 5588 }, - { x: 5589, y: 5589 }, - { x: 5590, y: 5590 }, - { x: 5591, y: 5591 }, - { x: 5592, y: 5592 }, - { x: 5593, y: 5593 }, - { x: 5594, y: 5594 }, - { x: 5595, y: 5595 }, - { x: 5596, y: 5596 }, - { x: 5597, y: 5597 }, - { x: 5598, y: 5598 }, - { x: 5599, y: 5599 }, - { x: 5600, y: 5600 }, - { x: 5601, y: 5601 }, - { x: 5602, y: 5602 }, - { x: 5603, y: 5603 }, - { x: 5604, y: 5604 }, - { x: 5605, y: 5605 }, - { x: 5606, y: 5606 }, - { x: 5607, y: 5607 }, - { x: 5608, y: 5608 }, - { x: 5609, y: 5609 }, - { x: 5610, y: 5610 }, - { x: 5611, y: 5611 }, - { x: 5612, y: 5612 }, - { x: 5613, y: 5613 }, - { x: 5614, y: 5614 }, - { x: 5615, y: 5615 }, - { x: 5616, y: 5616 }, - { x: 5617, y: 5617 }, - { x: 5618, y: 5618 }, - { x: 5619, y: 5619 }, - { x: 5620, y: 5620 }, - { x: 5621, y: 5621 }, - { x: 5622, y: 5622 }, - { x: 5623, y: 5623 }, - { x: 5624, y: 5624 }, - { x: 5625, y: 5625 }, - { x: 5626, y: 5626 }, - { x: 5627, y: 5627 }, - { x: 5628, y: 5628 }, - { x: 5629, y: 5629 }, - { x: 5630, y: 5630 }, - { x: 5631, y: 5631 }, - { x: 5632, y: 5632 }, - { x: 5633, y: 5633 }, - { x: 5634, y: 5634 }, - { x: 5635, y: 5635 }, - { x: 5636, y: 5636 }, - { x: 5637, y: 5637 }, - { x: 5638, y: 5638 }, - { x: 5639, y: 5639 }, - { x: 5640, y: 5640 }, - { x: 5641, y: 5641 }, - { x: 5642, y: 5642 }, - { x: 5643, y: 5643 }, - { x: 5644, y: 5644 }, - { x: 5645, y: 5645 }, - { x: 5646, y: 5646 }, - { x: 5647, y: 5647 }, - { x: 5648, y: 5648 }, - { x: 5649, y: 5649 }, - { x: 5650, y: 5650 }, - { x: 5651, y: 5651 }, - { x: 5652, y: 5652 }, - { x: 5653, y: 5653 }, - { x: 5654, y: 5654 }, - { x: 5655, y: 5655 }, - { x: 5656, y: 5656 }, - { x: 5657, y: 5657 }, - { x: 5658, y: 5658 }, - { x: 5659, y: 5659 }, - { x: 5660, y: 5660 }, - { x: 5661, y: 5661 }, - { x: 5662, y: 5662 }, - { x: 5663, y: 5663 }, - { x: 5664, y: 5664 }, - { x: 5665, y: 5665 }, - { x: 5666, y: 5666 }, - { x: 5667, y: 5667 }, - { x: 5668, y: 5668 }, - { x: 5669, y: 5669 }, - { x: 5670, y: 5670 }, - { x: 5671, y: 5671 }, - { x: 5672, y: 5672 }, - { x: 5673, y: 5673 }, - { x: 5674, y: 5674 }, - { x: 5675, y: 5675 }, - { x: 5676, y: 5676 }, - { x: 5677, y: 5677 }, - { x: 5678, y: 5678 }, - { x: 5679, y: 5679 }, - { x: 5680, y: 5680 }, - { x: 5681, y: 5681 }, - { x: 5682, y: 5682 }, - { x: 5683, y: 5683 }, - { x: 5684, y: 5684 }, - { x: 5685, y: 5685 }, - { x: 5686, y: 5686 }, - { x: 5687, y: 5687 }, - { x: 5688, y: 5688 }, - { x: 5689, y: 5689 }, - { x: 5690, y: 5690 }, - { x: 5691, y: 5691 }, - { x: 5692, y: 5692 }, - { x: 5693, y: 5693 }, - { x: 5694, y: 5694 }, - { x: 5695, y: 5695 }, - { x: 5696, y: 5696 }, - { x: 5697, y: 5697 }, - { x: 5698, y: 5698 }, - { x: 5699, y: 5699 }, - { x: 5700, y: 5700 }, - { x: 5701, y: 5701 }, - { x: 5702, y: 5702 }, - { x: 5703, y: 5703 }, - { x: 5704, y: 5704 }, - { x: 5705, y: 5705 }, - { x: 5706, y: 5706 }, - { x: 5707, y: 5707 }, - { x: 5708, y: 5708 }, - { x: 5709, y: 5709 }, - { x: 5710, y: 5710 }, - { x: 5711, y: 5711 }, - { x: 5712, y: 5712 }, - { x: 5713, y: 5713 }, - { x: 5714, y: 5714 }, - { x: 5715, y: 5715 }, - { x: 5716, y: 5716 }, - { x: 5717, y: 5717 }, - { x: 5718, y: 5718 }, - { x: 5719, y: 5719 }, - { x: 5720, y: 5720 }, - { x: 5721, y: 5721 }, - { x: 5722, y: 5722 }, - { x: 5723, y: 5723 }, - { x: 5724, y: 5724 }, - { x: 5725, y: 5725 }, - { x: 5726, y: 5726 }, - { x: 5727, y: 5727 }, - { x: 5728, y: 5728 }, - { x: 5729, y: 5729 }, - { x: 5730, y: 5730 }, - { x: 5731, y: 5731 }, - { x: 5732, y: 5732 }, - { x: 5733, y: 5733 }, - { x: 5734, y: 5734 }, - { x: 5735, y: 5735 }, - { x: 5736, y: 5736 }, - { x: 5737, y: 5737 }, - { x: 5738, y: 5738 }, - { x: 5739, y: 5739 }, - { x: 5740, y: 5740 }, - { x: 5741, y: 5741 }, - { x: 5742, y: 5742 }, - { x: 5743, y: 5743 }, - { x: 5744, y: 5744 }, - { x: 5745, y: 5745 }, - { x: 5746, y: 5746 }, - { x: 5747, y: 5747 }, - { x: 5748, y: 5748 }, - { x: 5749, y: 5749 }, - { x: 5750, y: 5750 }, - { x: 5751, y: 5751 }, - { x: 5752, y: 5752 }, - { x: 5753, y: 5753 }, - { x: 5754, y: 5754 }, - { x: 5755, y: 5755 }, - { x: 5756, y: 5756 }, - { x: 5757, y: 5757 }, - { x: 5758, y: 5758 }, - { x: 5759, y: 5759 }, - { x: 5760, y: 5760 }, - { x: 5761, y: 5761 }, - { x: 5762, y: 5762 }, - { x: 5763, y: 5763 }, - { x: 5764, y: 5764 }, - { x: 5765, y: 5765 }, - { x: 5766, y: 5766 }, - { x: 5767, y: 5767 }, - { x: 5768, y: 5768 }, - { x: 5769, y: 5769 }, - { x: 5770, y: 5770 }, - { x: 5771, y: 5771 }, - { x: 5772, y: 5772 }, - { x: 5773, y: 5773 }, - { x: 5774, y: 5774 }, - { x: 5775, y: 5775 }, - { x: 5776, y: 5776 }, - { x: 5777, y: 5777 }, - { x: 5778, y: 5778 }, - { x: 5779, y: 5779 }, - { x: 5780, y: 5780 }, - { x: 5781, y: 5781 }, - { x: 5782, y: 5782 }, - { x: 5783, y: 5783 }, - { x: 5784, y: 5784 }, - { x: 5785, y: 5785 }, - { x: 5786, y: 5786 }, - { x: 5787, y: 5787 }, - { x: 5788, y: 5788 }, - { x: 5789, y: 5789 }, - { x: 5790, y: 5790 }, - { x: 5791, y: 5791 }, - { x: 5792, y: 5792 }, - { x: 5793, y: 5793 }, - { x: 5794, y: 5794 }, - { x: 5795, y: 5795 }, - { x: 5796, y: 5796 }, - { x: 5797, y: 5797 }, - { x: 5798, y: 5798 }, - { x: 5799, y: 5799 }, - { x: 5800, y: 5800 }, - { x: 5801, y: 5801 }, - { x: 5802, y: 5802 }, - { x: 5803, y: 5803 }, - { x: 5804, y: 5804 }, - { x: 5805, y: 5805 }, - { x: 5806, y: 5806 }, - { x: 5807, y: 5807 }, - { x: 5808, y: 5808 }, - { x: 5809, y: 5809 }, - { x: 5810, y: 5810 }, - { x: 5811, y: 5811 }, - { x: 5812, y: 5812 }, - { x: 5813, y: 5813 }, - { x: 5814, y: 5814 }, - { x: 5815, y: 5815 }, - { x: 5816, y: 5816 }, - { x: 5817, y: 5817 }, - { x: 5818, y: 5818 }, - { x: 5819, y: 5819 }, - { x: 5820, y: 5820 }, - { x: 5821, y: 5821 }, - { x: 5822, y: 5822 }, - { x: 5823, y: 5823 }, - { x: 5824, y: 5824 }, - { x: 5825, y: 5825 }, - { x: 5826, y: 5826 }, - { x: 5827, y: 5827 }, - { x: 5828, y: 5828 }, - { x: 5829, y: 5829 }, - { x: 5830, y: 5830 }, - { x: 5831, y: 5831 }, - { x: 5832, y: 5832 }, - { x: 5833, y: 5833 }, - { x: 5834, y: 5834 }, - { x: 5835, y: 5835 }, - { x: 5836, y: 5836 }, - { x: 5837, y: 5837 }, - { x: 5838, y: 5838 }, - { x: 5839, y: 5839 }, - { x: 5840, y: 5840 }, - { x: 5841, y: 5841 }, - { x: 5842, y: 5842 }, - { x: 5843, y: 5843 }, - { x: 5844, y: 5844 }, - { x: 5845, y: 5845 }, - { x: 5846, y: 5846 }, - { x: 5847, y: 5847 }, - { x: 5848, y: 5848 }, - { x: 5849, y: 5849 }, - { x: 5850, y: 5850 }, - { x: 5851, y: 5851 }, - { x: 5852, y: 5852 }, - { x: 5853, y: 5853 }, - { x: 5854, y: 5854 }, - { x: 5855, y: 5855 }, - { x: 5856, y: 5856 }, - { x: 5857, y: 5857 }, - { x: 5858, y: 5858 }, - { x: 5859, y: 5859 }, - { x: 5860, y: 5860 }, - { x: 5861, y: 5861 }, - { x: 5862, y: 5862 }, - { x: 5863, y: 5863 }, - { x: 5864, y: 5864 }, - { x: 5865, y: 5865 }, - { x: 5866, y: 5866 }, - { x: 5867, y: 5867 }, - { x: 5868, y: 5868 }, - { x: 5869, y: 5869 }, - { x: 5870, y: 5870 }, - { x: 5871, y: 5871 }, - { x: 5872, y: 5872 }, - { x: 5873, y: 5873 }, - { x: 5874, y: 5874 }, - { x: 5875, y: 5875 }, - { x: 5876, y: 5876 }, - { x: 5877, y: 5877 }, - { x: 5878, y: 5878 }, - { x: 5879, y: 5879 }, - { x: 5880, y: 5880 }, - { x: 5881, y: 5881 }, - { x: 5882, y: 5882 }, - { x: 5883, y: 5883 }, - { x: 5884, y: 5884 }, - { x: 5885, y: 5885 }, - { x: 5886, y: 5886 }, - { x: 5887, y: 5887 }, - { x: 5888, y: 5888 }, - { x: 5889, y: 5889 }, - { x: 5890, y: 5890 }, - { x: 5891, y: 5891 }, - { x: 5892, y: 5892 }, - { x: 5893, y: 5893 }, - { x: 5894, y: 5894 }, - { x: 5895, y: 5895 }, - { x: 5896, y: 5896 }, - { x: 5897, y: 5897 }, - { x: 5898, y: 5898 }, - { x: 5899, y: 5899 }, - { x: 5900, y: 5900 }, - { x: 5901, y: 5901 }, - { x: 5902, y: 5902 }, - { x: 5903, y: 5903 }, - { x: 5904, y: 5904 }, - { x: 5905, y: 5905 }, - { x: 5906, y: 5906 }, - { x: 5907, y: 5907 }, - { x: 5908, y: 5908 }, - { x: 5909, y: 5909 }, - { x: 5910, y: 5910 }, - { x: 5911, y: 5911 }, - { x: 5912, y: 5912 }, - { x: 5913, y: 5913 }, - { x: 5914, y: 5914 }, - { x: 5915, y: 5915 }, - { x: 5916, y: 5916 }, - { x: 5917, y: 5917 }, - { x: 5918, y: 5918 }, - { x: 5919, y: 5919 }, - { x: 5920, y: 5920 }, - { x: 5921, y: 5921 }, - { x: 5922, y: 5922 }, - { x: 5923, y: 5923 }, - { x: 5924, y: 5924 }, - { x: 5925, y: 5925 }, - { x: 5926, y: 5926 }, - { x: 5927, y: 5927 }, - { x: 5928, y: 5928 }, - { x: 5929, y: 5929 }, - { x: 5930, y: 5930 }, - { x: 5931, y: 5931 }, - { x: 5932, y: 5932 }, - { x: 5933, y: 5933 }, - { x: 5934, y: 5934 }, - { x: 5935, y: 5935 }, - { x: 5936, y: 5936 }, - { x: 5937, y: 5937 }, - { x: 5938, y: 5938 }, - { x: 5939, y: 5939 }, - { x: 5940, y: 5940 }, - { x: 5941, y: 5941 }, - { x: 5942, y: 5942 }, - { x: 5943, y: 5943 }, - { x: 5944, y: 5944 }, - { x: 5945, y: 5945 }, - { x: 5946, y: 5946 }, - { x: 5947, y: 5947 }, - { x: 5948, y: 5948 }, - { x: 5949, y: 5949 }, - { x: 5950, y: 5950 }, - { x: 5951, y: 5951 }, - { x: 5952, y: 5952 }, - { x: 5953, y: 5953 }, - { x: 5954, y: 5954 }, - { x: 5955, y: 5955 }, - { x: 5956, y: 5956 }, - { x: 5957, y: 5957 }, - { x: 5958, y: 5958 }, - { x: 5959, y: 5959 }, - { x: 5960, y: 5960 }, - { x: 5961, y: 5961 }, - { x: 5962, y: 5962 }, - { x: 5963, y: 5963 }, - { x: 5964, y: 5964 }, - { x: 5965, y: 5965 }, - { x: 5966, y: 5966 }, - { x: 5967, y: 5967 }, - { x: 5968, y: 5968 }, - { x: 5969, y: 5969 }, - { x: 5970, y: 5970 }, - { x: 5971, y: 5971 }, - { x: 5972, y: 5972 }, - { x: 5973, y: 5973 }, - { x: 5974, y: 5974 }, - { x: 5975, y: 5975 }, - { x: 5976, y: 5976 }, - { x: 5977, y: 5977 }, - { x: 5978, y: 5978 }, - { x: 5979, y: 5979 }, - { x: 5980, y: 5980 }, - { x: 5981, y: 5981 }, - { x: 5982, y: 5982 }, - { x: 5983, y: 5983 }, - { x: 5984, y: 5984 }, - { x: 5985, y: 5985 }, - { x: 5986, y: 5986 }, - { x: 5987, y: 5987 }, - { x: 5988, y: 5988 }, - { x: 5989, y: 5989 }, - { x: 5990, y: 5990 }, - { x: 5991, y: 5991 }, - { x: 5992, y: 5992 }, - { x: 5993, y: 5993 }, - { x: 5994, y: 5994 }, - { x: 5995, y: 5995 }, - { x: 5996, y: 5996 }, - { x: 5997, y: 5997 }, - { x: 5998, y: 5998 }, - { x: 5999, y: 5999 }, - { x: 6000, y: 6000 }, - { x: 6001, y: 6001 }, - { x: 6002, y: 6002 }, - { x: 6003, y: 6003 }, - { x: 6004, y: 6004 }, - { x: 6005, y: 6005 }, - { x: 6006, y: 6006 }, - { x: 6007, y: 6007 }, - { x: 6008, y: 6008 }, - { x: 6009, y: 6009 }, - { x: 6010, y: 6010 }, - { x: 6011, y: 6011 }, - { x: 6012, y: 6012 }, - { x: 6013, y: 6013 }, - { x: 6014, y: 6014 }, - { x: 6015, y: 6015 }, - { x: 6016, y: 6016 }, - { x: 6017, y: 6017 }, - { x: 6018, y: 6018 }, - { x: 6019, y: 6019 }, - { x: 6020, y: 6020 }, - { x: 6021, y: 6021 }, - { x: 6022, y: 6022 }, - { x: 6023, y: 6023 }, - { x: 6024, y: 6024 }, - { x: 6025, y: 6025 }, - { x: 6026, y: 6026 }, - { x: 6027, y: 6027 }, - { x: 6028, y: 6028 }, - { x: 6029, y: 6029 }, - { x: 6030, y: 6030 }, - { x: 6031, y: 6031 }, - { x: 6032, y: 6032 }, - { x: 6033, y: 6033 }, - { x: 6034, y: 6034 }, - { x: 6035, y: 6035 }, - { x: 6036, y: 6036 }, - { x: 6037, y: 6037 }, - { x: 6038, y: 6038 }, - { x: 6039, y: 6039 }, - { x: 6040, y: 6040 }, - { x: 6041, y: 6041 }, - { x: 6042, y: 6042 }, - { x: 6043, y: 6043 }, - { x: 6044, y: 6044 }, - { x: 6045, y: 6045 }, - { x: 6046, y: 6046 }, - { x: 6047, y: 6047 }, - { x: 6048, y: 6048 }, - { x: 6049, y: 6049 }, - { x: 6050, y: 6050 }, - { x: 6051, y: 6051 }, - { x: 6052, y: 6052 }, - { x: 6053, y: 6053 }, - { x: 6054, y: 6054 }, - { x: 6055, y: 6055 }, - { x: 6056, y: 6056 }, - { x: 6057, y: 6057 }, - { x: 6058, y: 6058 }, - { x: 6059, y: 6059 }, - { x: 6060, y: 6060 }, - { x: 6061, y: 6061 }, - { x: 6062, y: 6062 }, - { x: 6063, y: 6063 }, - { x: 6064, y: 6064 }, - { x: 6065, y: 6065 }, - { x: 6066, y: 6066 }, - { x: 6067, y: 6067 }, - { x: 6068, y: 6068 }, - { x: 6069, y: 6069 }, - { x: 6070, y: 6070 }, - { x: 6071, y: 6071 }, - { x: 6072, y: 6072 }, - { x: 6073, y: 6073 }, - { x: 6074, y: 6074 }, - { x: 6075, y: 6075 }, - { x: 6076, y: 6076 }, - { x: 6077, y: 6077 }, - { x: 6078, y: 6078 }, - { x: 6079, y: 6079 }, - { x: 6080, y: 6080 }, - { x: 6081, y: 6081 }, - { x: 6082, y: 6082 }, - { x: 6083, y: 6083 }, - { x: 6084, y: 6084 }, - { x: 6085, y: 6085 }, - { x: 6086, y: 6086 }, - { x: 6087, y: 6087 }, - { x: 6088, y: 6088 }, - { x: 6089, y: 6089 }, - { x: 6090, y: 6090 }, - { x: 6091, y: 6091 }, - { x: 6092, y: 6092 }, - { x: 6093, y: 6093 }, - { x: 6094, y: 6094 }, - { x: 6095, y: 6095 }, - { x: 6096, y: 6096 }, - { x: 6097, y: 6097 }, - { x: 6098, y: 6098 }, - { x: 6099, y: 6099 }, - { x: 6100, y: 6100 }, - { x: 6101, y: 6101 }, - { x: 6102, y: 6102 }, - { x: 6103, y: 6103 }, - { x: 6104, y: 6104 }, - { x: 6105, y: 6105 }, - { x: 6106, y: 6106 }, - { x: 6107, y: 6107 }, - { x: 6108, y: 6108 }, - { x: 6109, y: 6109 }, - { x: 6110, y: 6110 }, - { x: 6111, y: 6111 }, - { x: 6112, y: 6112 }, - { x: 6113, y: 6113 }, - { x: 6114, y: 6114 }, - { x: 6115, y: 6115 }, - { x: 6116, y: 6116 }, - { x: 6117, y: 6117 }, - { x: 6118, y: 6118 }, - { x: 6119, y: 6119 }, - { x: 6120, y: 6120 }, - { x: 6121, y: 6121 }, - { x: 6122, y: 6122 }, - { x: 6123, y: 6123 }, - { x: 6124, y: 6124 }, - { x: 6125, y: 6125 }, - { x: 6126, y: 6126 }, - { x: 6127, y: 6127 }, - { x: 6128, y: 6128 }, - { x: 6129, y: 6129 }, - { x: 6130, y: 6130 }, - { x: 6131, y: 6131 }, - { x: 6132, y: 6132 }, - { x: 6133, y: 6133 }, - { x: 6134, y: 6134 }, - { x: 6135, y: 6135 }, - { x: 6136, y: 6136 }, - { x: 6137, y: 6137 }, - { x: 6138, y: 6138 }, - { x: 6139, y: 6139 }, - { x: 6140, y: 6140 }, - { x: 6141, y: 6141 }, - { x: 6142, y: 6142 }, - { x: 6143, y: 6143 }, - { x: 6144, y: 6144 }, - { x: 6145, y: 6145 }, - { x: 6146, y: 6146 }, - { x: 6147, y: 6147 }, - { x: 6148, y: 6148 }, - { x: 6149, y: 6149 }, - { x: 6150, y: 6150 }, - { x: 6151, y: 6151 }, - { x: 6152, y: 6152 }, - { x: 6153, y: 6153 }, - { x: 6154, y: 6154 }, - { x: 6155, y: 6155 }, - { x: 6156, y: 6156 }, - { x: 6157, y: 6157 }, - { x: 6158, y: 6158 }, - { x: 6159, y: 6159 }, - { x: 6160, y: 6160 }, - { x: 6161, y: 6161 }, - { x: 6162, y: 6162 }, - { x: 6163, y: 6163 }, - { x: 6164, y: 6164 }, - { x: 6165, y: 6165 }, - { x: 6166, y: 6166 }, - { x: 6167, y: 6167 }, - { x: 6168, y: 6168 }, - { x: 6169, y: 6169 }, - { x: 6170, y: 6170 }, - { x: 6171, y: 6171 }, - { x: 6172, y: 6172 }, - { x: 6173, y: 6173 }, - { x: 6174, y: 6174 }, - { x: 6175, y: 6175 }, - { x: 6176, y: 6176 }, - { x: 6177, y: 6177 }, - { x: 6178, y: 6178 }, - { x: 6179, y: 6179 }, - { x: 6180, y: 6180 }, - { x: 6181, y: 6181 }, - { x: 6182, y: 6182 }, - { x: 6183, y: 6183 }, - { x: 6184, y: 6184 }, - { x: 6185, y: 6185 }, - { x: 6186, y: 6186 }, - { x: 6187, y: 6187 }, - { x: 6188, y: 6188 }, - { x: 6189, y: 6189 }, - { x: 6190, y: 6190 }, - { x: 6191, y: 6191 }, - { x: 6192, y: 6192 }, - { x: 6193, y: 6193 }, - { x: 6194, y: 6194 }, - { x: 6195, y: 6195 }, - { x: 6196, y: 6196 }, - { x: 6197, y: 6197 }, - { x: 6198, y: 6198 }, - { x: 6199, y: 6199 }, - { x: 6200, y: 6200 }, - { x: 6201, y: 6201 }, - { x: 6202, y: 6202 }, - { x: 6203, y: 6203 }, - { x: 6204, y: 6204 }, - { x: 6205, y: 6205 }, - { x: 6206, y: 6206 }, - { x: 6207, y: 6207 }, - { x: 6208, y: 6208 }, - { x: 6209, y: 6209 }, - { x: 6210, y: 6210 }, - { x: 6211, y: 6211 }, - { x: 6212, y: 6212 }, - { x: 6213, y: 6213 }, - { x: 6214, y: 6214 }, - { x: 6215, y: 6215 }, - { x: 6216, y: 6216 }, - { x: 6217, y: 6217 }, - { x: 6218, y: 6218 }, - { x: 6219, y: 6219 }, - { x: 6220, y: 6220 }, - { x: 6221, y: 6221 }, - { x: 6222, y: 6222 }, - { x: 6223, y: 6223 }, - { x: 6224, y: 6224 }, - { x: 6225, y: 6225 }, - { x: 6226, y: 6226 }, - { x: 6227, y: 6227 }, - { x: 6228, y: 6228 }, - { x: 6229, y: 6229 }, - { x: 6230, y: 6230 }, - { x: 6231, y: 6231 }, - { x: 6232, y: 6232 }, - { x: 6233, y: 6233 }, - { x: 6234, y: 6234 }, - { x: 6235, y: 6235 }, - { x: 6236, y: 6236 }, - { x: 6237, y: 6237 }, - { x: 6238, y: 6238 }, - { x: 6239, y: 6239 }, - { x: 6240, y: 6240 }, - { x: 6241, y: 6241 }, - { x: 6242, y: 6242 }, - { x: 6243, y: 6243 }, - { x: 6244, y: 6244 }, - { x: 6245, y: 6245 }, - { x: 6246, y: 6246 }, - { x: 6247, y: 6247 }, - { x: 6248, y: 6248 }, - { x: 6249, y: 6249 }, - { x: 6250, y: 6250 }, - { x: 6251, y: 6251 }, - { x: 6252, y: 6252 }, - { x: 6253, y: 6253 }, - { x: 6254, y: 6254 }, - { x: 6255, y: 6255 }, - { x: 6256, y: 6256 }, - { x: 6257, y: 6257 }, - { x: 6258, y: 6258 }, - { x: 6259, y: 6259 }, - { x: 6260, y: 6260 }, - { x: 6261, y: 6261 }, - { x: 6262, y: 6262 }, - { x: 6263, y: 6263 }, - { x: 6264, y: 6264 }, - { x: 6265, y: 6265 }, - { x: 6266, y: 6266 }, - { x: 6267, y: 6267 }, - { x: 6268, y: 6268 }, - { x: 6269, y: 6269 }, - { x: 6270, y: 6270 }, - { x: 6271, y: 6271 }, - { x: 6272, y: 6272 }, - { x: 6273, y: 6273 }, - { x: 6274, y: 6274 }, - { x: 6275, y: 6275 }, - { x: 6276, y: 6276 }, - { x: 6277, y: 6277 }, - { x: 6278, y: 6278 }, - { x: 6279, y: 6279 }, - { x: 6280, y: 6280 }, - { x: 6281, y: 6281 }, - { x: 6282, y: 6282 }, - { x: 6283, y: 6283 }, - { x: 6284, y: 6284 }, - { x: 6285, y: 6285 }, - { x: 6286, y: 6286 }, - { x: 6287, y: 6287 }, - { x: 6288, y: 6288 }, - { x: 6289, y: 6289 }, - { x: 6290, y: 6290 }, - { x: 6291, y: 6291 }, - { x: 6292, y: 6292 }, - { x: 6293, y: 6293 }, - { x: 6294, y: 6294 }, - { x: 6295, y: 6295 }, - { x: 6296, y: 6296 }, - { x: 6297, y: 6297 }, - { x: 6298, y: 6298 }, - { x: 6299, y: 6299 }, - { x: 6300, y: 6300 }, - { x: 6301, y: 6301 }, - { x: 6302, y: 6302 }, - { x: 6303, y: 6303 }, - { x: 6304, y: 6304 }, - { x: 6305, y: 6305 }, - { x: 6306, y: 6306 }, - { x: 6307, y: 6307 }, - { x: 6308, y: 6308 }, - { x: 6309, y: 6309 }, - { x: 6310, y: 6310 }, - { x: 6311, y: 6311 }, - { x: 6312, y: 6312 }, - { x: 6313, y: 6313 }, - { x: 6314, y: 6314 }, - { x: 6315, y: 6315 }, - { x: 6316, y: 6316 }, - { x: 6317, y: 6317 }, - { x: 6318, y: 6318 }, - { x: 6319, y: 6319 }, - { x: 6320, y: 6320 }, - { x: 6321, y: 6321 }, - { x: 6322, y: 6322 }, - { x: 6323, y: 6323 }, - { x: 6324, y: 6324 }, - { x: 6325, y: 6325 }, - { x: 6326, y: 6326 }, - { x: 6327, y: 6327 }, - { x: 6328, y: 6328 }, - { x: 6329, y: 6329 }, - { x: 6330, y: 6330 }, - { x: 6331, y: 6331 }, - { x: 6332, y: 6332 }, - { x: 6333, y: 6333 }, - { x: 6334, y: 6334 }, - { x: 6335, y: 6335 }, - { x: 6336, y: 6336 }, - { x: 6337, y: 6337 }, - { x: 6338, y: 6338 }, - { x: 6339, y: 6339 }, - { x: 6340, y: 6340 }, - { x: 6341, y: 6341 }, - { x: 6342, y: 6342 }, - { x: 6343, y: 6343 }, - { x: 6344, y: 6344 }, - { x: 6345, y: 6345 }, - { x: 6346, y: 6346 }, - { x: 6347, y: 6347 }, - { x: 6348, y: 6348 }, - { x: 6349, y: 6349 }, - { x: 6350, y: 6350 }, - { x: 6351, y: 6351 }, - { x: 6352, y: 6352 }, - { x: 6353, y: 6353 }, - { x: 6354, y: 6354 }, - { x: 6355, y: 6355 }, - { x: 6356, y: 6356 }, - { x: 6357, y: 6357 }, - { x: 6358, y: 6358 }, - { x: 6359, y: 6359 }, - { x: 6360, y: 6360 }, - { x: 6361, y: 6361 }, - { x: 6362, y: 6362 }, - { x: 6363, y: 6363 }, - { x: 6364, y: 6364 }, - { x: 6365, y: 6365 }, - { x: 6366, y: 6366 }, - { x: 6367, y: 6367 }, - { x: 6368, y: 6368 }, - { x: 6369, y: 6369 }, - { x: 6370, y: 6370 }, - { x: 6371, y: 6371 }, - { x: 6372, y: 6372 }, - { x: 6373, y: 6373 }, - { x: 6374, y: 6374 }, - { x: 6375, y: 6375 }, - { x: 6376, y: 6376 }, - { x: 6377, y: 6377 }, - { x: 6378, y: 6378 }, - { x: 6379, y: 6379 }, - { x: 6380, y: 6380 }, - { x: 6381, y: 6381 }, - { x: 6382, y: 6382 }, - { x: 6383, y: 6383 }, - { x: 6384, y: 6384 }, - { x: 6385, y: 6385 }, - { x: 6386, y: 6386 }, - { x: 6387, y: 6387 }, - { x: 6388, y: 6388 }, - { x: 6389, y: 6389 }, - { x: 6390, y: 6390 }, - { x: 6391, y: 6391 }, - { x: 6392, y: 6392 }, - { x: 6393, y: 6393 }, - { x: 6394, y: 6394 }, - { x: 6395, y: 6395 }, - { x: 6396, y: 6396 }, - { x: 6397, y: 6397 }, - { x: 6398, y: 6398 }, - { x: 6399, y: 6399 }, - { x: 6400, y: 6400 }, - { x: 6401, y: 6401 }, - { x: 6402, y: 6402 }, - { x: 6403, y: 6403 }, - { x: 6404, y: 6404 }, - { x: 6405, y: 6405 }, - { x: 6406, y: 6406 }, - { x: 6407, y: 6407 }, - { x: 6408, y: 6408 }, - { x: 6409, y: 6409 }, - { x: 6410, y: 6410 }, - { x: 6411, y: 6411 }, - { x: 6412, y: 6412 }, - { x: 6413, y: 6413 }, - { x: 6414, y: 6414 }, - { x: 6415, y: 6415 }, - { x: 6416, y: 6416 }, - { x: 6417, y: 6417 }, - { x: 6418, y: 6418 }, - { x: 6419, y: 6419 }, - { x: 6420, y: 6420 }, - { x: 6421, y: 6421 }, - { x: 6422, y: 6422 }, - { x: 6423, y: 6423 }, - { x: 6424, y: 6424 }, - { x: 6425, y: 6425 }, - { x: 6426, y: 6426 }, - { x: 6427, y: 6427 }, - { x: 6428, y: 6428 }, - { x: 6429, y: 6429 }, - { x: 6430, y: 6430 }, - { x: 6431, y: 6431 }, - { x: 6432, y: 6432 }, - { x: 6433, y: 6433 }, - { x: 6434, y: 6434 }, - { x: 6435, y: 6435 }, - { x: 6436, y: 6436 }, - { x: 6437, y: 6437 }, - { x: 6438, y: 6438 }, - { x: 6439, y: 6439 }, - { x: 6440, y: 6440 }, - { x: 6441, y: 6441 }, - { x: 6442, y: 6442 }, - { x: 6443, y: 6443 }, - { x: 6444, y: 6444 }, - { x: 6445, y: 6445 }, - { x: 6446, y: 6446 }, - { x: 6447, y: 6447 }, - { x: 6448, y: 6448 }, - { x: 6449, y: 6449 }, - { x: 6450, y: 6450 }, - { x: 6451, y: 6451 }, - { x: 6452, y: 6452 }, - { x: 6453, y: 6453 }, - { x: 6454, y: 6454 }, - { x: 6455, y: 6455 }, - { x: 6456, y: 6456 }, - { x: 6457, y: 6457 }, - { x: 6458, y: 6458 }, - { x: 6459, y: 6459 }, - { x: 6460, y: 6460 }, - { x: 6461, y: 6461 }, - { x: 6462, y: 6462 }, - { x: 6463, y: 6463 }, - { x: 6464, y: 6464 }, - { x: 6465, y: 6465 }, - { x: 6466, y: 6466 }, - { x: 6467, y: 6467 }, - { x: 6468, y: 6468 }, - { x: 6469, y: 6469 }, - { x: 6470, y: 6470 }, - { x: 6471, y: 6471 }, - { x: 6472, y: 6472 }, - { x: 6473, y: 6473 }, - { x: 6474, y: 6474 }, - { x: 6475, y: 6475 }, - { x: 6476, y: 6476 }, - { x: 6477, y: 6477 }, - { x: 6478, y: 6478 }, - { x: 6479, y: 6479 }, - { x: 6480, y: 6480 }, - { x: 6481, y: 6481 }, - { x: 6482, y: 6482 }, - { x: 6483, y: 6483 }, - { x: 6484, y: 6484 }, - { x: 6485, y: 6485 }, - { x: 6486, y: 6486 }, - { x: 6487, y: 6487 }, - { x: 6488, y: 6488 }, - { x: 6489, y: 6489 }, - { x: 6490, y: 6490 }, - { x: 6491, y: 6491 }, - { x: 6492, y: 6492 }, - { x: 6493, y: 6493 }, - { x: 6494, y: 6494 }, - { x: 6495, y: 6495 }, - { x: 6496, y: 6496 }, - { x: 6497, y: 6497 }, - { x: 6498, y: 6498 }, - { x: 6499, y: 6499 }, - { x: 6500, y: 6500 }, - { x: 6501, y: 6501 }, - { x: 6502, y: 6502 }, - { x: 6503, y: 6503 }, - { x: 6504, y: 6504 }, - { x: 6505, y: 6505 }, - { x: 6506, y: 6506 }, - { x: 6507, y: 6507 }, - { x: 6508, y: 6508 }, - { x: 6509, y: 6509 }, - { x: 6510, y: 6510 }, - { x: 6511, y: 6511 }, - { x: 6512, y: 6512 }, - { x: 6513, y: 6513 }, - { x: 6514, y: 6514 }, - { x: 6515, y: 6515 }, - { x: 6516, y: 6516 }, - { x: 6517, y: 6517 }, - { x: 6518, y: 6518 }, - { x: 6519, y: 6519 }, - { x: 6520, y: 6520 }, - { x: 6521, y: 6521 }, - { x: 6522, y: 6522 }, - { x: 6523, y: 6523 }, - { x: 6524, y: 6524 }, - { x: 6525, y: 6525 }, - { x: 6526, y: 6526 }, - { x: 6527, y: 6527 }, - { x: 6528, y: 6528 }, - { x: 6529, y: 6529 }, - { x: 6530, y: 6530 }, - { x: 6531, y: 6531 }, - { x: 6532, y: 6532 }, - { x: 6533, y: 6533 }, - { x: 6534, y: 6534 }, - { x: 6535, y: 6535 }, - { x: 6536, y: 6536 }, - { x: 6537, y: 6537 }, - { x: 6538, y: 6538 }, - { x: 6539, y: 6539 }, - { x: 6540, y: 6540 }, - { x: 6541, y: 6541 }, - { x: 6542, y: 6542 }, - { x: 6543, y: 6543 }, - { x: 6544, y: 6544 }, - { x: 6545, y: 6545 }, - { x: 6546, y: 6546 }, - { x: 6547, y: 6547 }, - { x: 6548, y: 6548 }, - { x: 6549, y: 6549 }, - { x: 6550, y: 6550 }, - { x: 6551, y: 6551 }, - { x: 6552, y: 6552 }, - { x: 6553, y: 6553 }, - { x: 6554, y: 6554 }, - { x: 6555, y: 6555 }, - { x: 6556, y: 6556 }, - { x: 6557, y: 6557 }, - { x: 6558, y: 6558 }, - { x: 6559, y: 6559 }, - { x: 6560, y: 6560 }, - { x: 6561, y: 6561 }, - { x: 6562, y: 6562 }, - { x: 6563, y: 6563 }, - { x: 6564, y: 6564 }, - { x: 6565, y: 6565 }, - { x: 6566, y: 6566 }, - { x: 6567, y: 6567 }, - { x: 6568, y: 6568 }, - { x: 6569, y: 6569 }, - { x: 6570, y: 6570 }, - { x: 6571, y: 6571 }, - { x: 6572, y: 6572 }, - { x: 6573, y: 6573 }, - { x: 6574, y: 6574 }, - { x: 6575, y: 6575 }, - { x: 6576, y: 6576 }, - { x: 6577, y: 6577 }, - { x: 6578, y: 6578 }, - { x: 6579, y: 6579 }, - { x: 6580, y: 6580 }, - { x: 6581, y: 6581 }, - { x: 6582, y: 6582 }, - { x: 6583, y: 6583 }, - { x: 6584, y: 6584 }, - { x: 6585, y: 6585 }, - { x: 6586, y: 6586 }, - { x: 6587, y: 6587 }, - { x: 6588, y: 6588 }, - { x: 6589, y: 6589 }, - { x: 6590, y: 6590 }, - { x: 6591, y: 6591 }, - { x: 6592, y: 6592 }, - { x: 6593, y: 6593 }, - { x: 6594, y: 6594 }, - { x: 6595, y: 6595 }, - { x: 6596, y: 6596 }, - { x: 6597, y: 6597 }, - { x: 6598, y: 6598 }, - { x: 6599, y: 6599 }, - { x: 6600, y: 6600 }, - { x: 6601, y: 6601 }, - { x: 6602, y: 6602 }, - { x: 6603, y: 6603 }, - { x: 6604, y: 6604 }, - { x: 6605, y: 6605 }, - { x: 6606, y: 6606 }, - { x: 6607, y: 6607 }, - { x: 6608, y: 6608 }, - { x: 6609, y: 6609 }, - { x: 6610, y: 6610 }, - { x: 6611, y: 6611 }, - { x: 6612, y: 6612 }, - { x: 6613, y: 6613 }, - { x: 6614, y: 6614 }, - { x: 6615, y: 6615 }, - { x: 6616, y: 6616 }, - { x: 6617, y: 6617 }, - { x: 6618, y: 6618 }, - { x: 6619, y: 6619 }, - { x: 6620, y: 6620 }, - { x: 6621, y: 6621 }, - { x: 6622, y: 6622 }, - { x: 6623, y: 6623 }, - { x: 6624, y: 6624 }, - { x: 6625, y: 6625 }, - { x: 6626, y: 6626 }, - { x: 6627, y: 6627 }, - { x: 6628, y: 6628 }, - { x: 6629, y: 6629 }, - { x: 6630, y: 6630 }, - { x: 6631, y: 6631 }, - { x: 6632, y: 6632 }, - { x: 6633, y: 6633 }, - { x: 6634, y: 6634 }, - { x: 6635, y: 6635 }, - { x: 6636, y: 6636 }, - { x: 6637, y: 6637 }, - { x: 6638, y: 6638 }, - { x: 6639, y: 6639 }, - { x: 6640, y: 6640 }, - { x: 6641, y: 6641 }, - { x: 6642, y: 6642 }, - { x: 6643, y: 6643 }, - { x: 6644, y: 6644 }, - { x: 6645, y: 6645 }, - { x: 6646, y: 6646 }, - { x: 6647, y: 6647 }, - { x: 6648, y: 6648 }, - { x: 6649, y: 6649 }, - { x: 6650, y: 6650 }, - { x: 6651, y: 6651 }, - { x: 6652, y: 6652 }, - { x: 6653, y: 6653 }, - { x: 6654, y: 6654 }, - { x: 6655, y: 6655 }, - { x: 6656, y: 6656 }, - { x: 6657, y: 6657 }, - { x: 6658, y: 6658 }, - { x: 6659, y: 6659 }, - { x: 6660, y: 6660 }, - { x: 6661, y: 6661 }, - { x: 6662, y: 6662 }, - { x: 6663, y: 6663 }, - { x: 6664, y: 6664 }, - { x: 6665, y: 6665 }, - { x: 6666, y: 6666 }, - { x: 6667, y: 6667 }, - { x: 6668, y: 6668 }, - { x: 6669, y: 6669 }, - { x: 6670, y: 6670 }, - { x: 6671, y: 6671 }, - { x: 6672, y: 6672 }, - { x: 6673, y: 6673 }, - { x: 6674, y: 6674 }, - { x: 6675, y: 6675 }, - { x: 6676, y: 6676 }, - { x: 6677, y: 6677 }, - { x: 6678, y: 6678 }, - { x: 6679, y: 6679 }, - { x: 6680, y: 6680 }, - { x: 6681, y: 6681 }, - { x: 6682, y: 6682 }, - { x: 6683, y: 6683 }, - { x: 6684, y: 6684 }, - { x: 6685, y: 6685 }, - { x: 6686, y: 6686 }, - { x: 6687, y: 6687 }, - { x: 6688, y: 6688 }, - { x: 6689, y: 6689 }, - { x: 6690, y: 6690 }, - { x: 6691, y: 6691 }, - { x: 6692, y: 6692 }, - { x: 6693, y: 6693 }, - { x: 6694, y: 6694 }, - { x: 6695, y: 6695 }, - { x: 6696, y: 6696 }, - { x: 6697, y: 6697 }, - { x: 6698, y: 6698 }, - { x: 6699, y: 6699 }, - { x: 6700, y: 6700 }, - { x: 6701, y: 6701 }, - { x: 6702, y: 6702 }, - { x: 6703, y: 6703 }, - { x: 6704, y: 6704 }, - { x: 6705, y: 6705 }, - { x: 6706, y: 6706 }, - { x: 6707, y: 6707 }, - { x: 6708, y: 6708 }, - { x: 6709, y: 6709 }, - { x: 6710, y: 6710 }, - { x: 6711, y: 6711 }, - { x: 6712, y: 6712 }, - { x: 6713, y: 6713 }, - { x: 6714, y: 6714 }, - { x: 6715, y: 6715 }, - { x: 6716, y: 6716 }, - { x: 6717, y: 6717 }, - { x: 6718, y: 6718 }, - { x: 6719, y: 6719 }, - { x: 6720, y: 6720 }, - { x: 6721, y: 6721 }, - { x: 6722, y: 6722 }, - { x: 6723, y: 6723 }, - { x: 6724, y: 6724 }, - { x: 6725, y: 6725 }, - { x: 6726, y: 6726 }, - { x: 6727, y: 6727 }, - { x: 6728, y: 6728 }, - { x: 6729, y: 6729 }, - { x: 6730, y: 6730 }, - { x: 6731, y: 6731 }, - { x: 6732, y: 6732 }, - { x: 6733, y: 6733 }, - { x: 6734, y: 6734 }, - { x: 6735, y: 6735 }, - { x: 6736, y: 6736 }, - { x: 6737, y: 6737 }, - { x: 6738, y: 6738 }, - { x: 6739, y: 6739 }, - { x: 6740, y: 6740 }, - { x: 6741, y: 6741 }, - { x: 6742, y: 6742 }, - { x: 6743, y: 6743 }, - { x: 6744, y: 6744 }, - { x: 6745, y: 6745 }, - { x: 6746, y: 6746 }, - { x: 6747, y: 6747 }, - { x: 6748, y: 6748 }, - { x: 6749, y: 6749 }, - { x: 6750, y: 6750 }, - { x: 6751, y: 6751 }, - { x: 6752, y: 6752 }, - { x: 6753, y: 6753 }, - { x: 6754, y: 6754 }, - { x: 6755, y: 6755 }, - { x: 6756, y: 6756 }, - { x: 6757, y: 6757 }, - { x: 6758, y: 6758 }, - { x: 6759, y: 6759 }, - { x: 6760, y: 6760 }, - { x: 6761, y: 6761 }, - { x: 6762, y: 6762 }, - { x: 6763, y: 6763 }, - { x: 6764, y: 6764 }, - { x: 6765, y: 6765 }, - { x: 6766, y: 6766 }, - { x: 6767, y: 6767 }, - { x: 6768, y: 6768 }, - { x: 6769, y: 6769 }, - { x: 6770, y: 6770 }, - { x: 6771, y: 6771 }, - { x: 6772, y: 6772 }, - { x: 6773, y: 6773 }, - { x: 6774, y: 6774 }, - { x: 6775, y: 6775 }, - { x: 6776, y: 6776 }, - { x: 6777, y: 6777 }, - { x: 6778, y: 6778 }, - { x: 6779, y: 6779 }, - { x: 6780, y: 6780 }, - { x: 6781, y: 6781 }, - { x: 6782, y: 6782 }, - { x: 6783, y: 6783 }, - { x: 6784, y: 6784 }, - { x: 6785, y: 6785 }, - { x: 6786, y: 6786 }, - { x: 6787, y: 6787 }, - { x: 6788, y: 6788 }, - { x: 6789, y: 6789 }, - { x: 6790, y: 6790 }, - { x: 6791, y: 6791 }, - { x: 6792, y: 6792 }, - { x: 6793, y: 6793 }, - { x: 6794, y: 6794 }, - { x: 6795, y: 6795 }, - { x: 6796, y: 6796 }, - { x: 6797, y: 6797 }, - { x: 6798, y: 6798 }, - { x: 6799, y: 6799 }, - { x: 6800, y: 6800 }, - { x: 6801, y: 6801 }, - { x: 6802, y: 6802 }, - { x: 6803, y: 6803 }, - { x: 6804, y: 6804 }, - { x: 6805, y: 6805 }, - { x: 6806, y: 6806 }, - { x: 6807, y: 6807 }, - { x: 6808, y: 6808 }, - { x: 6809, y: 6809 }, - { x: 6810, y: 6810 }, - { x: 6811, y: 6811 }, - { x: 6812, y: 6812 }, - { x: 6813, y: 6813 }, - { x: 6814, y: 6814 }, - { x: 6815, y: 6815 }, - { x: 6816, y: 6816 }, - { x: 6817, y: 6817 }, - { x: 6818, y: 6818 }, - { x: 6819, y: 6819 }, - { x: 6820, y: 6820 }, - { x: 6821, y: 6821 }, - { x: 6822, y: 6822 }, - { x: 6823, y: 6823 }, - { x: 6824, y: 6824 }, - { x: 6825, y: 6825 }, - { x: 6826, y: 6826 }, - { x: 6827, y: 6827 }, - { x: 6828, y: 6828 }, - { x: 6829, y: 6829 }, - { x: 6830, y: 6830 }, - { x: 6831, y: 6831 }, - { x: 6832, y: 6832 }, - { x: 6833, y: 6833 }, - { x: 6834, y: 6834 }, - { x: 6835, y: 6835 }, - { x: 6836, y: 6836 }, - { x: 6837, y: 6837 }, - { x: 6838, y: 6838 }, - { x: 6839, y: 6839 }, - { x: 6840, y: 6840 }, - { x: 6841, y: 6841 }, - { x: 6842, y: 6842 }, - { x: 6843, y: 6843 }, - { x: 6844, y: 6844 }, - { x: 6845, y: 6845 }, - { x: 6846, y: 6846 }, - { x: 6847, y: 6847 }, - { x: 6848, y: 6848 }, - { x: 6849, y: 6849 }, - { x: 6850, y: 6850 }, - { x: 6851, y: 6851 }, - { x: 6852, y: 6852 }, - { x: 6853, y: 6853 }, - { x: 6854, y: 6854 }, - { x: 6855, y: 6855 }, - { x: 6856, y: 6856 }, - { x: 6857, y: 6857 }, - { x: 6858, y: 6858 }, - { x: 6859, y: 6859 }, - { x: 6860, y: 6860 }, - { x: 6861, y: 6861 }, - { x: 6862, y: 6862 }, - { x: 6863, y: 6863 }, - { x: 6864, y: 6864 }, - { x: 6865, y: 6865 }, - { x: 6866, y: 6866 }, - { x: 6867, y: 6867 }, - { x: 6868, y: 6868 }, - { x: 6869, y: 6869 }, - { x: 6870, y: 6870 }, - { x: 6871, y: 6871 }, - { x: 6872, y: 6872 }, - { x: 6873, y: 6873 }, - { x: 6874, y: 6874 }, - { x: 6875, y: 6875 }, - { x: 6876, y: 6876 }, - { x: 6877, y: 6877 }, - { x: 6878, y: 6878 }, - { x: 6879, y: 6879 }, - { x: 6880, y: 6880 }, - { x: 6881, y: 6881 }, - { x: 6882, y: 6882 }, - { x: 6883, y: 6883 }, - { x: 6884, y: 6884 }, - { x: 6885, y: 6885 }, - { x: 6886, y: 6886 }, - { x: 6887, y: 6887 }, - { x: 6888, y: 6888 }, - { x: 6889, y: 6889 }, - { x: 6890, y: 6890 }, - { x: 6891, y: 6891 }, - { x: 6892, y: 6892 }, - { x: 6893, y: 6893 }, - { x: 6894, y: 6894 }, - { x: 6895, y: 6895 }, - { x: 6896, y: 6896 }, - { x: 6897, y: 6897 }, - { x: 6898, y: 6898 }, - { x: 6899, y: 6899 }, - { x: 6900, y: 6900 }, - { x: 6901, y: 6901 }, - { x: 6902, y: 6902 }, - { x: 6903, y: 6903 }, - { x: 6904, y: 6904 }, - { x: 6905, y: 6905 }, - { x: 6906, y: 6906 }, - { x: 6907, y: 6907 }, - { x: 6908, y: 6908 }, - { x: 6909, y: 6909 }, - { x: 6910, y: 6910 }, - { x: 6911, y: 6911 }, - { x: 6912, y: 6912 }, - { x: 6913, y: 6913 }, - { x: 6914, y: 6914 }, - { x: 6915, y: 6915 }, - { x: 6916, y: 6916 }, - { x: 6917, y: 6917 }, - { x: 6918, y: 6918 }, - { x: 6919, y: 6919 }, - { x: 6920, y: 6920 }, - { x: 6921, y: 6921 }, - { x: 6922, y: 6922 }, - { x: 6923, y: 6923 }, - { x: 6924, y: 6924 }, - { x: 6925, y: 6925 }, - { x: 6926, y: 6926 }, - { x: 6927, y: 6927 }, - { x: 6928, y: 6928 }, - { x: 6929, y: 6929 }, - { x: 6930, y: 6930 }, - { x: 6931, y: 6931 }, - { x: 6932, y: 6932 }, - { x: 6933, y: 6933 }, - { x: 6934, y: 6934 }, - { x: 6935, y: 6935 }, - { x: 6936, y: 6936 }, - { x: 6937, y: 6937 }, - { x: 6938, y: 6938 }, - { x: 6939, y: 6939 }, - { x: 6940, y: 6940 }, - { x: 6941, y: 6941 }, - { x: 6942, y: 6942 }, - { x: 6943, y: 6943 }, - { x: 6944, y: 6944 }, - { x: 6945, y: 6945 }, - { x: 6946, y: 6946 }, - { x: 6947, y: 6947 }, - { x: 6948, y: 6948 }, - { x: 6949, y: 6949 }, - { x: 6950, y: 6950 }, - { x: 6951, y: 6951 }, - { x: 6952, y: 6952 }, - { x: 6953, y: 6953 }, - { x: 6954, y: 6954 }, - { x: 6955, y: 6955 }, - { x: 6956, y: 6956 }, - { x: 6957, y: 6957 }, - { x: 6958, y: 6958 }, - { x: 6959, y: 6959 }, - { x: 6960, y: 6960 }, - { x: 6961, y: 6961 }, - { x: 6962, y: 6962 }, - { x: 6963, y: 6963 }, - { x: 6964, y: 6964 }, - { x: 6965, y: 6965 }, - { x: 6966, y: 6966 }, - { x: 6967, y: 6967 }, - { x: 6968, y: 6968 }, - { x: 6969, y: 6969 }, - { x: 6970, y: 6970 }, - { x: 6971, y: 6971 }, - { x: 6972, y: 6972 }, - { x: 6973, y: 6973 }, - { x: 6974, y: 6974 }, - { x: 6975, y: 6975 }, - { x: 6976, y: 6976 }, - { x: 6977, y: 6977 }, - { x: 6978, y: 6978 }, - { x: 6979, y: 6979 }, - { x: 6980, y: 6980 }, - { x: 6981, y: 6981 }, - { x: 6982, y: 6982 }, - { x: 6983, y: 6983 }, - { x: 6984, y: 6984 }, - { x: 6985, y: 6985 }, - { x: 6986, y: 6986 }, - { x: 6987, y: 6987 }, - { x: 6988, y: 6988 }, - { x: 6989, y: 6989 }, - { x: 6990, y: 6990 }, - { x: 6991, y: 6991 }, - { x: 6992, y: 6992 }, - { x: 6993, y: 6993 }, - { x: 6994, y: 6994 }, - { x: 6995, y: 6995 }, - { x: 6996, y: 6996 }, - { x: 6997, y: 6997 }, - { x: 6998, y: 6998 }, - { x: 6999, y: 6999 }, - { x: 7000, y: 7000 }, - { x: 7001, y: 7001 }, - { x: 7002, y: 7002 }, - { x: 7003, y: 7003 }, - { x: 7004, y: 7004 }, - { x: 7005, y: 7005 }, - { x: 7006, y: 7006 }, - { x: 7007, y: 7007 }, - { x: 7008, y: 7008 }, - { x: 7009, y: 7009 }, - { x: 7010, y: 7010 }, - { x: 7011, y: 7011 }, - { x: 7012, y: 7012 }, - { x: 7013, y: 7013 }, - { x: 7014, y: 7014 }, - { x: 7015, y: 7015 }, - { x: 7016, y: 7016 }, - { x: 7017, y: 7017 }, - { x: 7018, y: 7018 }, - { x: 7019, y: 7019 }, - { x: 7020, y: 7020 }, - { x: 7021, y: 7021 }, - { x: 7022, y: 7022 }, - { x: 7023, y: 7023 }, - { x: 7024, y: 7024 }, - { x: 7025, y: 7025 }, - { x: 7026, y: 7026 }, - { x: 7027, y: 7027 }, - { x: 7028, y: 7028 }, - { x: 7029, y: 7029 }, - { x: 7030, y: 7030 }, - { x: 7031, y: 7031 }, - { x: 7032, y: 7032 }, - { x: 7033, y: 7033 }, - { x: 7034, y: 7034 }, - { x: 7035, y: 7035 }, - { x: 7036, y: 7036 }, - { x: 7037, y: 7037 }, - { x: 7038, y: 7038 }, - { x: 7039, y: 7039 }, - { x: 7040, y: 7040 }, - { x: 7041, y: 7041 }, - { x: 7042, y: 7042 }, - { x: 7043, y: 7043 }, - { x: 7044, y: 7044 }, - { x: 7045, y: 7045 }, - { x: 7046, y: 7046 }, - { x: 7047, y: 7047 }, - { x: 7048, y: 7048 }, - { x: 7049, y: 7049 }, - { x: 7050, y: 7050 }, - { x: 7051, y: 7051 }, - { x: 7052, y: 7052 }, - { x: 7053, y: 7053 }, - { x: 7054, y: 7054 }, - { x: 7055, y: 7055 }, - { x: 7056, y: 7056 }, - { x: 7057, y: 7057 }, - { x: 7058, y: 7058 }, - { x: 7059, y: 7059 }, - { x: 7060, y: 7060 }, - { x: 7061, y: 7061 }, - { x: 7062, y: 7062 }, - { x: 7063, y: 7063 }, - { x: 7064, y: 7064 }, - { x: 7065, y: 7065 }, - { x: 7066, y: 7066 }, - { x: 7067, y: 7067 }, - { x: 7068, y: 7068 }, - { x: 7069, y: 7069 }, - { x: 7070, y: 7070 }, - { x: 7071, y: 7071 }, - { x: 7072, y: 7072 }, - { x: 7073, y: 7073 }, - { x: 7074, y: 7074 }, - { x: 7075, y: 7075 }, - { x: 7076, y: 7076 }, - { x: 7077, y: 7077 }, - { x: 7078, y: 7078 }, - { x: 7079, y: 7079 }, - { x: 7080, y: 7080 }, - { x: 7081, y: 7081 }, - { x: 7082, y: 7082 }, - { x: 7083, y: 7083 }, - { x: 7084, y: 7084 }, - { x: 7085, y: 7085 }, - { x: 7086, y: 7086 }, - { x: 7087, y: 7087 }, - { x: 7088, y: 7088 }, - { x: 7089, y: 7089 }, - { x: 7090, y: 7090 }, - { x: 7091, y: 7091 }, - { x: 7092, y: 7092 }, - { x: 7093, y: 7093 }, - { x: 7094, y: 7094 }, - { x: 7095, y: 7095 }, - { x: 7096, y: 7096 }, - { x: 7097, y: 7097 }, - { x: 7098, y: 7098 }, - { x: 7099, y: 7099 }, - { x: 7100, y: 7100 }, - { x: 7101, y: 7101 }, - { x: 7102, y: 7102 }, - { x: 7103, y: 7103 }, - { x: 7104, y: 7104 }, - { x: 7105, y: 7105 }, - { x: 7106, y: 7106 }, - { x: 7107, y: 7107 }, - { x: 7108, y: 7108 }, - { x: 7109, y: 7109 }, - { x: 7110, y: 7110 }, - { x: 7111, y: 7111 }, - { x: 7112, y: 7112 }, - { x: 7113, y: 7113 }, - { x: 7114, y: 7114 }, - { x: 7115, y: 7115 }, - { x: 7116, y: 7116 }, - { x: 7117, y: 7117 }, - { x: 7118, y: 7118 }, - { x: 7119, y: 7119 }, - { x: 7120, y: 7120 }, - { x: 7121, y: 7121 }, - { x: 7122, y: 7122 }, - { x: 7123, y: 7123 }, - { x: 7124, y: 7124 }, - { x: 7125, y: 7125 }, - { x: 7126, y: 7126 }, - { x: 7127, y: 7127 }, - { x: 7128, y: 7128 }, - { x: 7129, y: 7129 }, - { x: 7130, y: 7130 }, - { x: 7131, y: 7131 }, - { x: 7132, y: 7132 }, - { x: 7133, y: 7133 }, - { x: 7134, y: 7134 }, - { x: 7135, y: 7135 }, - { x: 7136, y: 7136 }, - { x: 7137, y: 7137 }, - { x: 7138, y: 7138 }, - { x: 7139, y: 7139 }, - { x: 7140, y: 7140 }, - { x: 7141, y: 7141 }, - { x: 7142, y: 7142 }, - { x: 7143, y: 7143 }, - { x: 7144, y: 7144 }, - { x: 7145, y: 7145 }, - { x: 7146, y: 7146 }, - { x: 7147, y: 7147 }, - { x: 7148, y: 7148 }, - { x: 7149, y: 7149 }, - { x: 7150, y: 7150 }, - { x: 7151, y: 7151 }, - { x: 7152, y: 7152 }, - { x: 7153, y: 7153 }, - { x: 7154, y: 7154 }, - { x: 7155, y: 7155 }, - { x: 7156, y: 7156 }, - { x: 7157, y: 7157 }, - { x: 7158, y: 7158 }, - { x: 7159, y: 7159 }, - { x: 7160, y: 7160 }, - { x: 7161, y: 7161 }, - { x: 7162, y: 7162 }, - { x: 7163, y: 7163 }, - { x: 7164, y: 7164 }, - { x: 7165, y: 7165 }, - { x: 7166, y: 7166 }, - { x: 7167, y: 7167 }, - { x: 7168, y: 7168 }, - { x: 7169, y: 7169 }, - { x: 7170, y: 7170 }, - { x: 7171, y: 7171 }, - { x: 7172, y: 7172 }, - { x: 7173, y: 7173 }, - { x: 7174, y: 7174 }, - { x: 7175, y: 7175 }, - { x: 7176, y: 7176 }, - { x: 7177, y: 7177 }, - { x: 7178, y: 7178 }, - { x: 7179, y: 7179 }, - { x: 7180, y: 7180 }, - { x: 7181, y: 7181 }, - { x: 7182, y: 7182 }, - { x: 7183, y: 7183 }, - { x: 7184, y: 7184 }, - { x: 7185, y: 7185 }, - { x: 7186, y: 7186 }, - { x: 7187, y: 7187 }, - { x: 7188, y: 7188 }, - { x: 7189, y: 7189 }, - { x: 7190, y: 7190 }, - { x: 7191, y: 7191 }, - { x: 7192, y: 7192 }, - { x: 7193, y: 7193 }, - { x: 7194, y: 7194 }, - { x: 7195, y: 7195 }, - { x: 7196, y: 7196 }, - { x: 7197, y: 7197 }, - { x: 7198, y: 7198 }, - { x: 7199, y: 7199 }, - { x: 7200, y: 7200 }, - { x: 7201, y: 7201 }, - { x: 7202, y: 7202 }, - { x: 7203, y: 7203 }, - { x: 7204, y: 7204 }, - { x: 7205, y: 7205 }, - { x: 7206, y: 7206 }, - { x: 7207, y: 7207 }, - { x: 7208, y: 7208 }, - { x: 7209, y: 7209 }, - { x: 7210, y: 7210 }, - { x: 7211, y: 7211 }, - { x: 7212, y: 7212 }, - { x: 7213, y: 7213 }, - { x: 7214, y: 7214 }, - { x: 7215, y: 7215 }, - { x: 7216, y: 7216 }, - { x: 7217, y: 7217 }, - { x: 7218, y: 7218 }, - { x: 7219, y: 7219 }, - { x: 7220, y: 7220 }, - { x: 7221, y: 7221 }, - { x: 7222, y: 7222 }, - { x: 7223, y: 7223 }, - { x: 7224, y: 7224 }, - { x: 7225, y: 7225 }, - { x: 7226, y: 7226 }, - { x: 7227, y: 7227 }, - { x: 7228, y: 7228 }, - { x: 7229, y: 7229 }, - { x: 7230, y: 7230 }, - { x: 7231, y: 7231 }, - { x: 7232, y: 7232 }, - { x: 7233, y: 7233 }, - { x: 7234, y: 7234 }, - { x: 7235, y: 7235 }, - { x: 7236, y: 7236 }, - { x: 7237, y: 7237 }, - { x: 7238, y: 7238 }, - { x: 7239, y: 7239 }, - { x: 7240, y: 7240 }, - { x: 7241, y: 7241 }, - { x: 7242, y: 7242 }, - { x: 7243, y: 7243 }, - { x: 7244, y: 7244 }, - { x: 7245, y: 7245 }, - { x: 7246, y: 7246 }, - { x: 7247, y: 7247 }, - { x: 7248, y: 7248 }, - { x: 7249, y: 7249 }, - { x: 7250, y: 7250 }, - { x: 7251, y: 7251 }, - { x: 7252, y: 7252 }, - { x: 7253, y: 7253 }, - { x: 7254, y: 7254 }, - { x: 7255, y: 7255 }, - { x: 7256, y: 7256 }, - { x: 7257, y: 7257 }, - { x: 7258, y: 7258 }, - { x: 7259, y: 7259 }, - { x: 7260, y: 7260 }, - { x: 7261, y: 7261 }, - { x: 7262, y: 7262 }, - { x: 7263, y: 7263 }, - { x: 7264, y: 7264 }, - { x: 7265, y: 7265 }, - { x: 7266, y: 7266 }, - { x: 7267, y: 7267 }, - { x: 7268, y: 7268 }, - { x: 7269, y: 7269 }, - { x: 7270, y: 7270 }, - { x: 7271, y: 7271 }, - { x: 7272, y: 7272 }, - { x: 7273, y: 7273 }, - { x: 7274, y: 7274 }, - { x: 7275, y: 7275 }, - { x: 7276, y: 7276 }, - { x: 7277, y: 7277 }, - { x: 7278, y: 7278 }, - { x: 7279, y: 7279 }, - { x: 7280, y: 7280 }, - { x: 7281, y: 7281 }, - { x: 7282, y: 7282 }, - { x: 7283, y: 7283 }, - { x: 7284, y: 7284 }, - { x: 7285, y: 7285 }, - { x: 7286, y: 7286 }, - { x: 7287, y: 7287 }, - { x: 7288, y: 7288 }, - { x: 7289, y: 7289 }, - { x: 7290, y: 7290 }, - { x: 7291, y: 7291 }, - { x: 7292, y: 7292 }, - { x: 7293, y: 7293 }, - { x: 7294, y: 7294 }, - { x: 7295, y: 7295 }, - { x: 7296, y: 7296 }, - { x: 7297, y: 7297 }, - { x: 7298, y: 7298 }, - { x: 7299, y: 7299 }, - { x: 7300, y: 7300 }, - { x: 7301, y: 7301 }, - { x: 7302, y: 7302 }, - { x: 7303, y: 7303 }, - { x: 7304, y: 7304 }, - { x: 7305, y: 7305 }, - { x: 7306, y: 7306 }, - { x: 7307, y: 7307 }, - { x: 7308, y: 7308 }, - { x: 7309, y: 7309 }, - { x: 7310, y: 7310 }, - { x: 7311, y: 7311 }, - { x: 7312, y: 7312 }, - { x: 7313, y: 7313 }, - { x: 7314, y: 7314 }, - { x: 7315, y: 7315 }, - { x: 7316, y: 7316 }, - { x: 7317, y: 7317 }, - { x: 7318, y: 7318 }, - { x: 7319, y: 7319 }, - { x: 7320, y: 7320 }, - { x: 7321, y: 7321 }, - { x: 7322, y: 7322 }, - { x: 7323, y: 7323 }, - { x: 7324, y: 7324 }, - { x: 7325, y: 7325 }, - { x: 7326, y: 7326 }, - { x: 7327, y: 7327 }, - { x: 7328, y: 7328 }, - { x: 7329, y: 7329 }, - { x: 7330, y: 7330 }, - { x: 7331, y: 7331 }, - { x: 7332, y: 7332 }, - { x: 7333, y: 7333 }, - { x: 7334, y: 7334 }, - { x: 7335, y: 7335 }, - { x: 7336, y: 7336 }, - { x: 7337, y: 7337 }, - { x: 7338, y: 7338 }, - { x: 7339, y: 7339 }, - { x: 7340, y: 7340 }, - { x: 7341, y: 7341 }, - { x: 7342, y: 7342 }, - { x: 7343, y: 7343 }, - { x: 7344, y: 7344 }, - { x: 7345, y: 7345 }, - { x: 7346, y: 7346 }, - { x: 7347, y: 7347 }, - { x: 7348, y: 7348 }, - { x: 7349, y: 7349 }, - { x: 7350, y: 7350 }, - { x: 7351, y: 7351 }, - { x: 7352, y: 7352 }, - { x: 7353, y: 7353 }, - { x: 7354, y: 7354 }, - { x: 7355, y: 7355 }, - { x: 7356, y: 7356 }, - { x: 7357, y: 7357 }, - { x: 7358, y: 7358 }, - { x: 7359, y: 7359 }, - { x: 7360, y: 7360 }, - { x: 7361, y: 7361 }, - { x: 7362, y: 7362 }, - { x: 7363, y: 7363 }, - { x: 7364, y: 7364 }, - { x: 7365, y: 7365 }, - { x: 7366, y: 7366 }, - { x: 7367, y: 7367 }, - { x: 7368, y: 7368 }, - { x: 7369, y: 7369 }, - { x: 7370, y: 7370 }, - { x: 7371, y: 7371 }, - { x: 7372, y: 7372 }, - { x: 7373, y: 7373 }, - { x: 7374, y: 7374 }, - { x: 7375, y: 7375 }, - { x: 7376, y: 7376 }, - { x: 7377, y: 7377 }, - { x: 7378, y: 7378 }, - { x: 7379, y: 7379 }, - { x: 7380, y: 7380 }, - { x: 7381, y: 7381 }, - { x: 7382, y: 7382 }, - { x: 7383, y: 7383 }, - { x: 7384, y: 7384 }, - { x: 7385, y: 7385 }, - { x: 7386, y: 7386 }, - { x: 7387, y: 7387 }, - { x: 7388, y: 7388 }, - { x: 7389, y: 7389 }, - { x: 7390, y: 7390 }, - { x: 7391, y: 7391 }, - { x: 7392, y: 7392 }, - { x: 7393, y: 7393 }, - { x: 7394, y: 7394 }, - { x: 7395, y: 7395 }, - { x: 7396, y: 7396 }, - { x: 7397, y: 7397 }, - { x: 7398, y: 7398 }, - { x: 7399, y: 7399 }, - { x: 7400, y: 7400 }, - { x: 7401, y: 7401 }, - { x: 7402, y: 7402 }, - { x: 7403, y: 7403 }, - { x: 7404, y: 7404 }, - { x: 7405, y: 7405 }, - { x: 7406, y: 7406 }, - { x: 7407, y: 7407 }, - { x: 7408, y: 7408 }, - { x: 7409, y: 7409 }, - { x: 7410, y: 7410 }, - { x: 7411, y: 7411 }, - { x: 7412, y: 7412 }, - { x: 7413, y: 7413 }, - { x: 7414, y: 7414 }, - { x: 7415, y: 7415 }, - { x: 7416, y: 7416 }, - { x: 7417, y: 7417 }, - { x: 7418, y: 7418 }, - { x: 7419, y: 7419 }, - { x: 7420, y: 7420 }, - { x: 7421, y: 7421 }, - { x: 7422, y: 7422 }, - { x: 7423, y: 7423 }, - { x: 7424, y: 7424 }, - { x: 7425, y: 7425 }, - { x: 7426, y: 7426 }, - { x: 7427, y: 7427 }, - { x: 7428, y: 7428 }, - { x: 7429, y: 7429 }, - { x: 7430, y: 7430 }, - { x: 7431, y: 7431 }, - { x: 7432, y: 7432 }, - { x: 7433, y: 7433 }, - { x: 7434, y: 7434 }, - { x: 7435, y: 7435 }, - { x: 7436, y: 7436 }, - { x: 7437, y: 7437 }, - { x: 7438, y: 7438 }, - { x: 7439, y: 7439 }, - { x: 7440, y: 7440 }, - { x: 7441, y: 7441 }, - { x: 7442, y: 7442 }, - { x: 7443, y: 7443 }, - { x: 7444, y: 7444 }, - { x: 7445, y: 7445 }, - { x: 7446, y: 7446 }, - { x: 7447, y: 7447 }, - { x: 7448, y: 7448 }, - { x: 7449, y: 7449 }, - { x: 7450, y: 7450 }, - { x: 7451, y: 7451 }, - { x: 7452, y: 7452 }, - { x: 7453, y: 7453 }, - { x: 7454, y: 7454 }, - { x: 7455, y: 7455 }, - { x: 7456, y: 7456 }, - { x: 7457, y: 7457 }, - { x: 7458, y: 7458 }, - { x: 7459, y: 7459 }, - { x: 7460, y: 7460 }, - { x: 7461, y: 7461 }, - { x: 7462, y: 7462 }, - { x: 7463, y: 7463 }, - { x: 7464, y: 7464 }, - { x: 7465, y: 7465 }, - { x: 7466, y: 7466 }, - { x: 7467, y: 7467 }, - { x: 7468, y: 7468 }, - { x: 7469, y: 7469 }, - { x: 7470, y: 7470 }, - { x: 7471, y: 7471 }, - { x: 7472, y: 7472 }, - { x: 7473, y: 7473 }, - { x: 7474, y: 7474 }, - { x: 7475, y: 7475 }, - { x: 7476, y: 7476 }, - { x: 7477, y: 7477 }, - { x: 7478, y: 7478 }, - { x: 7479, y: 7479 }, - { x: 7480, y: 7480 }, - { x: 7481, y: 7481 }, - { x: 7482, y: 7482 }, - { x: 7483, y: 7483 }, - { x: 7484, y: 7484 }, - { x: 7485, y: 7485 }, - { x: 7486, y: 7486 }, - { x: 7487, y: 7487 }, - { x: 7488, y: 7488 }, - { x: 7489, y: 7489 }, - { x: 7490, y: 7490 }, - { x: 7491, y: 7491 }, - { x: 7492, y: 7492 }, - { x: 7493, y: 7493 }, - { x: 7494, y: 7494 }, - { x: 7495, y: 7495 }, - { x: 7496, y: 7496 }, - { x: 7497, y: 7497 }, - { x: 7498, y: 7498 }, - { x: 7499, y: 7499 }, - { x: 7500, y: 7500 }, - { x: 7501, y: 7501 }, - { x: 7502, y: 7502 }, - { x: 7503, y: 7503 }, - { x: 7504, y: 7504 }, - { x: 7505, y: 7505 }, - { x: 7506, y: 7506 }, - { x: 7507, y: 7507 }, - { x: 7508, y: 7508 }, - { x: 7509, y: 7509 }, - { x: 7510, y: 7510 }, - { x: 7511, y: 7511 }, - { x: 7512, y: 7512 }, - { x: 7513, y: 7513 }, - { x: 7514, y: 7514 }, - { x: 7515, y: 7515 }, - { x: 7516, y: 7516 }, - { x: 7517, y: 7517 }, - { x: 7518, y: 7518 }, - { x: 7519, y: 7519 }, - { x: 7520, y: 7520 }, - { x: 7521, y: 7521 }, - { x: 7522, y: 7522 }, - { x: 7523, y: 7523 }, - { x: 7524, y: 7524 }, - { x: 7525, y: 7525 }, - { x: 7526, y: 7526 }, - { x: 7527, y: 7527 }, - { x: 7528, y: 7528 }, - { x: 7529, y: 7529 }, - { x: 7530, y: 7530 }, - { x: 7531, y: 7531 }, - { x: 7532, y: 7532 }, - { x: 7533, y: 7533 }, - { x: 7534, y: 7534 }, - { x: 7535, y: 7535 }, - { x: 7536, y: 7536 }, - { x: 7537, y: 7537 }, - { x: 7538, y: 7538 }, - { x: 7539, y: 7539 }, - { x: 7540, y: 7540 }, - { x: 7541, y: 7541 }, - { x: 7542, y: 7542 }, - { x: 7543, y: 7543 }, - { x: 7544, y: 7544 }, - { x: 7545, y: 7545 }, - { x: 7546, y: 7546 }, - { x: 7547, y: 7547 }, - { x: 7548, y: 7548 }, - { x: 7549, y: 7549 }, - { x: 7550, y: 7550 }, - { x: 7551, y: 7551 }, - { x: 7552, y: 7552 }, - { x: 7553, y: 7553 }, - { x: 7554, y: 7554 }, - { x: 7555, y: 7555 }, - { x: 7556, y: 7556 }, - { x: 7557, y: 7557 }, - { x: 7558, y: 7558 }, - { x: 7559, y: 7559 }, - { x: 7560, y: 7560 }, - { x: 7561, y: 7561 }, - { x: 7562, y: 7562 }, - { x: 7563, y: 7563 }, - { x: 7564, y: 7564 }, - { x: 7565, y: 7565 }, - { x: 7566, y: 7566 }, - { x: 7567, y: 7567 }, - { x: 7568, y: 7568 }, - { x: 7569, y: 7569 }, - { x: 7570, y: 7570 }, - { x: 7571, y: 7571 }, - { x: 7572, y: 7572 }, - { x: 7573, y: 7573 }, - { x: 7574, y: 7574 }, - { x: 7575, y: 7575 }, - { x: 7576, y: 7576 }, - { x: 7577, y: 7577 }, - { x: 7578, y: 7578 }, - { x: 7579, y: 7579 }, - { x: 7580, y: 7580 }, - { x: 7581, y: 7581 }, - { x: 7582, y: 7582 }, - { x: 7583, y: 7583 }, - { x: 7584, y: 7584 }, - { x: 7585, y: 7585 }, - { x: 7586, y: 7586 }, - { x: 7587, y: 7587 }, - { x: 7588, y: 7588 }, - { x: 7589, y: 7589 }, - { x: 7590, y: 7590 }, - { x: 7591, y: 7591 }, - { x: 7592, y: 7592 }, - { x: 7593, y: 7593 }, - { x: 7594, y: 7594 }, - { x: 7595, y: 7595 }, - { x: 7596, y: 7596 }, - { x: 7597, y: 7597 }, - { x: 7598, y: 7598 }, - { x: 7599, y: 7599 }, - { x: 7600, y: 7600 }, - { x: 7601, y: 7601 }, - { x: 7602, y: 7602 }, - { x: 7603, y: 7603 }, - { x: 7604, y: 7604 }, - { x: 7605, y: 7605 }, - { x: 7606, y: 7606 }, - { x: 7607, y: 7607 }, - { x: 7608, y: 7608 }, - { x: 7609, y: 7609 }, - { x: 7610, y: 7610 }, - { x: 7611, y: 7611 }, - { x: 7612, y: 7612 }, - { x: 7613, y: 7613 }, - { x: 7614, y: 7614 }, - { x: 7615, y: 7615 }, - { x: 7616, y: 7616 }, - { x: 7617, y: 7617 }, - { x: 7618, y: 7618 }, - { x: 7619, y: 7619 }, - { x: 7620, y: 7620 }, - { x: 7621, y: 7621 }, - { x: 7622, y: 7622 }, - { x: 7623, y: 7623 }, - { x: 7624, y: 7624 }, - { x: 7625, y: 7625 }, - { x: 7626, y: 7626 }, - { x: 7627, y: 7627 }, - { x: 7628, y: 7628 }, - { x: 7629, y: 7629 }, - { x: 7630, y: 7630 }, - { x: 7631, y: 7631 }, - { x: 7632, y: 7632 }, - { x: 7633, y: 7633 }, - { x: 7634, y: 7634 }, - { x: 7635, y: 7635 }, - { x: 7636, y: 7636 }, - { x: 7637, y: 7637 }, - { x: 7638, y: 7638 }, - { x: 7639, y: 7639 }, - { x: 7640, y: 7640 }, - { x: 7641, y: 7641 }, - { x: 7642, y: 7642 }, - { x: 7643, y: 7643 }, - { x: 7644, y: 7644 }, - { x: 7645, y: 7645 }, - { x: 7646, y: 7646 }, - { x: 7647, y: 7647 }, - { x: 7648, y: 7648 }, - { x: 7649, y: 7649 }, - { x: 7650, y: 7650 }, - { x: 7651, y: 7651 }, - { x: 7652, y: 7652 }, - { x: 7653, y: 7653 }, - { x: 7654, y: 7654 }, - { x: 7655, y: 7655 }, - { x: 7656, y: 7656 }, - { x: 7657, y: 7657 }, - { x: 7658, y: 7658 }, - { x: 7659, y: 7659 }, - { x: 7660, y: 7660 }, - { x: 7661, y: 7661 }, - { x: 7662, y: 7662 }, - { x: 7663, y: 7663 }, - { x: 7664, y: 7664 }, - { x: 7665, y: 7665 }, - { x: 7666, y: 7666 }, - { x: 7667, y: 7667 }, - { x: 7668, y: 7668 }, - { x: 7669, y: 7669 }, - { x: 7670, y: 7670 }, - { x: 7671, y: 7671 }, - { x: 7672, y: 7672 }, - { x: 7673, y: 7673 }, - { x: 7674, y: 7674 }, - { x: 7675, y: 7675 }, - { x: 7676, y: 7676 }, - { x: 7677, y: 7677 }, - { x: 7678, y: 7678 }, - { x: 7679, y: 7679 }, - { x: 7680, y: 7680 }, - { x: 7681, y: 7681 }, - { x: 7682, y: 7682 }, - { x: 7683, y: 7683 }, - { x: 7684, y: 7684 }, - { x: 7685, y: 7685 }, - { x: 7686, y: 7686 }, - { x: 7687, y: 7687 }, - { x: 7688, y: 7688 }, - { x: 7689, y: 7689 }, - { x: 7690, y: 7690 }, - { x: 7691, y: 7691 }, - { x: 7692, y: 7692 }, - { x: 7693, y: 7693 }, - { x: 7694, y: 7694 }, - { x: 7695, y: 7695 }, - { x: 7696, y: 7696 }, - { x: 7697, y: 7697 }, - { x: 7698, y: 7698 }, - { x: 7699, y: 7699 }, - { x: 7700, y: 7700 }, - { x: 7701, y: 7701 }, - { x: 7702, y: 7702 }, - { x: 7703, y: 7703 }, - { x: 7704, y: 7704 }, - { x: 7705, y: 7705 }, - { x: 7706, y: 7706 }, - { x: 7707, y: 7707 }, - { x: 7708, y: 7708 }, - { x: 7709, y: 7709 }, - { x: 7710, y: 7710 }, - { x: 7711, y: 7711 }, - { x: 7712, y: 7712 }, - { x: 7713, y: 7713 }, - { x: 7714, y: 7714 }, - { x: 7715, y: 7715 }, - { x: 7716, y: 7716 }, - { x: 7717, y: 7717 }, - { x: 7718, y: 7718 }, - { x: 7719, y: 7719 }, - { x: 7720, y: 7720 }, - { x: 7721, y: 7721 }, - { x: 7722, y: 7722 }, - { x: 7723, y: 7723 }, - { x: 7724, y: 7724 }, - { x: 7725, y: 7725 }, - { x: 7726, y: 7726 }, - { x: 7727, y: 7727 }, - { x: 7728, y: 7728 }, - { x: 7729, y: 7729 }, - { x: 7730, y: 7730 }, - { x: 7731, y: 7731 }, - { x: 7732, y: 7732 }, - { x: 7733, y: 7733 }, - { x: 7734, y: 7734 }, - { x: 7735, y: 7735 }, - { x: 7736, y: 7736 }, - { x: 7737, y: 7737 }, - { x: 7738, y: 7738 }, - { x: 7739, y: 7739 }, - { x: 7740, y: 7740 }, - { x: 7741, y: 7741 }, - { x: 7742, y: 7742 }, - { x: 7743, y: 7743 }, - { x: 7744, y: 7744 }, - { x: 7745, y: 7745 }, - { x: 7746, y: 7746 }, - { x: 7747, y: 7747 }, - { x: 7748, y: 7748 }, - { x: 7749, y: 7749 }, - { x: 7750, y: 7750 }, - { x: 7751, y: 7751 }, - { x: 7752, y: 7752 }, - { x: 7753, y: 7753 }, - { x: 7754, y: 7754 }, - { x: 7755, y: 7755 }, - { x: 7756, y: 7756 }, - { x: 7757, y: 7757 }, - { x: 7758, y: 7758 }, - { x: 7759, y: 7759 }, - { x: 7760, y: 7760 }, - { x: 7761, y: 7761 }, - { x: 7762, y: 7762 }, - { x: 7763, y: 7763 }, - { x: 7764, y: 7764 }, - { x: 7765, y: 7765 }, - { x: 7766, y: 7766 }, - { x: 7767, y: 7767 }, - { x: 7768, y: 7768 }, - { x: 7769, y: 7769 }, - { x: 7770, y: 7770 }, - { x: 7771, y: 7771 }, - { x: 7772, y: 7772 }, - { x: 7773, y: 7773 }, - { x: 7774, y: 7774 }, - { x: 7775, y: 7775 }, - { x: 7776, y: 7776 }, - { x: 7777, y: 7777 }, - { x: 7778, y: 7778 }, - { x: 7779, y: 7779 }, - { x: 7780, y: 7780 }, - { x: 7781, y: 7781 }, - { x: 7782, y: 7782 }, - { x: 7783, y: 7783 }, - { x: 7784, y: 7784 }, - { x: 7785, y: 7785 }, - { x: 7786, y: 7786 }, - { x: 7787, y: 7787 }, - { x: 7788, y: 7788 }, - { x: 7789, y: 7789 }, - { x: 7790, y: 7790 }, - { x: 7791, y: 7791 }, - { x: 7792, y: 7792 }, - { x: 7793, y: 7793 }, - { x: 7794, y: 7794 }, - { x: 7795, y: 7795 }, - { x: 7796, y: 7796 }, - { x: 7797, y: 7797 }, - { x: 7798, y: 7798 }, - { x: 7799, y: 7799 }, - { x: 7800, y: 7800 }, - { x: 7801, y: 7801 }, - { x: 7802, y: 7802 }, - { x: 7803, y: 7803 }, - { x: 7804, y: 7804 }, - { x: 7805, y: 7805 }, - { x: 7806, y: 7806 }, - { x: 7807, y: 7807 }, - { x: 7808, y: 7808 }, - { x: 7809, y: 7809 }, - { x: 7810, y: 7810 }, - { x: 7811, y: 7811 }, - { x: 7812, y: 7812 }, - { x: 7813, y: 7813 }, - { x: 7814, y: 7814 }, - { x: 7815, y: 7815 }, - { x: 7816, y: 7816 }, - { x: 7817, y: 7817 }, - { x: 7818, y: 7818 }, - { x: 7819, y: 7819 }, - { x: 7820, y: 7820 }, - { x: 7821, y: 7821 }, - { x: 7822, y: 7822 }, - { x: 7823, y: 7823 }, - { x: 7824, y: 7824 }, - { x: 7825, y: 7825 }, - { x: 7826, y: 7826 }, - { x: 7827, y: 7827 }, - { x: 7828, y: 7828 }, - { x: 7829, y: 7829 }, - { x: 7830, y: 7830 }, - { x: 7831, y: 7831 }, - { x: 7832, y: 7832 }, - { x: 7833, y: 7833 }, - { x: 7834, y: 7834 }, - { x: 7835, y: 7835 }, - { x: 7836, y: 7836 }, - { x: 7837, y: 7837 }, - { x: 7838, y: 7838 }, - { x: 7839, y: 7839 }, - { x: 7840, y: 7840 }, - { x: 7841, y: 7841 }, - { x: 7842, y: 7842 }, - { x: 7843, y: 7843 }, - { x: 7844, y: 7844 }, - { x: 7845, y: 7845 }, - { x: 7846, y: 7846 }, - { x: 7847, y: 7847 }, - { x: 7848, y: 7848 }, - { x: 7849, y: 7849 }, - { x: 7850, y: 7850 }, - { x: 7851, y: 7851 }, - { x: 7852, y: 7852 }, - { x: 7853, y: 7853 }, - { x: 7854, y: 7854 }, - { x: 7855, y: 7855 }, - { x: 7856, y: 7856 }, - { x: 7857, y: 7857 }, - { x: 7858, y: 7858 }, - { x: 7859, y: 7859 }, - { x: 7860, y: 7860 }, - { x: 7861, y: 7861 }, - { x: 7862, y: 7862 }, - { x: 7863, y: 7863 }, - { x: 7864, y: 7864 }, - { x: 7865, y: 7865 }, - { x: 7866, y: 7866 }, - { x: 7867, y: 7867 }, - { x: 7868, y: 7868 }, - { x: 7869, y: 7869 }, - { x: 7870, y: 7870 }, - { x: 7871, y: 7871 }, - { x: 7872, y: 7872 }, - { x: 7873, y: 7873 }, - { x: 7874, y: 7874 }, - { x: 7875, y: 7875 }, - { x: 7876, y: 7876 }, - { x: 7877, y: 7877 }, - { x: 7878, y: 7878 }, - { x: 7879, y: 7879 }, - { x: 7880, y: 7880 }, - { x: 7881, y: 7881 }, - { x: 7882, y: 7882 }, - { x: 7883, y: 7883 }, - { x: 7884, y: 7884 }, - { x: 7885, y: 7885 }, - { x: 7886, y: 7886 }, - { x: 7887, y: 7887 }, - { x: 7888, y: 7888 }, - { x: 7889, y: 7889 }, - { x: 7890, y: 7890 }, - { x: 7891, y: 7891 }, - { x: 7892, y: 7892 }, - { x: 7893, y: 7893 }, - { x: 7894, y: 7894 }, - { x: 7895, y: 7895 }, - { x: 7896, y: 7896 }, - { x: 7897, y: 7897 }, - { x: 7898, y: 7898 }, - { x: 7899, y: 7899 }, - { x: 7900, y: 7900 }, - { x: 7901, y: 7901 }, - { x: 7902, y: 7902 }, - { x: 7903, y: 7903 }, - { x: 7904, y: 7904 }, - { x: 7905, y: 7905 }, - { x: 7906, y: 7906 }, - { x: 7907, y: 7907 }, - { x: 7908, y: 7908 }, - { x: 7909, y: 7909 }, - { x: 7910, y: 7910 }, - { x: 7911, y: 7911 }, - { x: 7912, y: 7912 }, - { x: 7913, y: 7913 }, - { x: 7914, y: 7914 }, - { x: 7915, y: 7915 }, - { x: 7916, y: 7916 }, - { x: 7917, y: 7917 }, - { x: 7918, y: 7918 }, - { x: 7919, y: 7919 }, - { x: 7920, y: 7920 }, - { x: 7921, y: 7921 }, - { x: 7922, y: 7922 }, - { x: 7923, y: 7923 }, - { x: 7924, y: 7924 }, - { x: 7925, y: 7925 }, - { x: 7926, y: 7926 }, - { x: 7927, y: 7927 }, - { x: 7928, y: 7928 }, - { x: 7929, y: 7929 }, - { x: 7930, y: 7930 }, - { x: 7931, y: 7931 }, - { x: 7932, y: 7932 }, - { x: 7933, y: 7933 }, - { x: 7934, y: 7934 }, - { x: 7935, y: 7935 }, - { x: 7936, y: 7936 }, - { x: 7937, y: 7937 }, - { x: 7938, y: 7938 }, - { x: 7939, y: 7939 }, - { x: 7940, y: 7940 }, - { x: 7941, y: 7941 }, - { x: 7942, y: 7942 }, - { x: 7943, y: 7943 }, - { x: 7944, y: 7944 }, - { x: 7945, y: 7945 }, - { x: 7946, y: 7946 }, - { x: 7947, y: 7947 }, - { x: 7948, y: 7948 }, - { x: 7949, y: 7949 }, - { x: 7950, y: 7950 }, - { x: 7951, y: 7951 }, - { x: 7952, y: 7952 }, - { x: 7953, y: 7953 }, - { x: 7954, y: 7954 }, - { x: 7955, y: 7955 }, - { x: 7956, y: 7956 }, - { x: 7957, y: 7957 }, - { x: 7958, y: 7958 }, - { x: 7959, y: 7959 }, - { x: 7960, y: 7960 }, - { x: 7961, y: 7961 }, - { x: 7962, y: 7962 }, - { x: 7963, y: 7963 }, - { x: 7964, y: 7964 }, - { x: 7965, y: 7965 }, - { x: 7966, y: 7966 }, - { x: 7967, y: 7967 }, - { x: 7968, y: 7968 }, - { x: 7969, y: 7969 }, - { x: 7970, y: 7970 }, - { x: 7971, y: 7971 }, - { x: 7972, y: 7972 }, - { x: 7973, y: 7973 }, - { x: 7974, y: 7974 }, - { x: 7975, y: 7975 }, - { x: 7976, y: 7976 }, - { x: 7977, y: 7977 }, - { x: 7978, y: 7978 }, - { x: 7979, y: 7979 }, - { x: 7980, y: 7980 }, - { x: 7981, y: 7981 }, - { x: 7982, y: 7982 }, - { x: 7983, y: 7983 }, - { x: 7984, y: 7984 }, - { x: 7985, y: 7985 }, - { x: 7986, y: 7986 }, - { x: 7987, y: 7987 }, - { x: 7988, y: 7988 }, - { x: 7989, y: 7989 }, - { x: 7990, y: 7990 }, - { x: 7991, y: 7991 }, - { x: 7992, y: 7992 }, - { x: 7993, y: 7993 }, - { x: 7994, y: 7994 }, - { x: 7995, y: 7995 }, - { x: 7996, y: 7996 }, - { x: 7997, y: 7997 }, - { x: 7998, y: 7998 }, - { x: 7999, y: 7999 }, - { x: 8000, y: 8000 }, - { x: 8001, y: 8001 }, - { x: 8002, y: 8002 }, - { x: 8003, y: 8003 }, - { x: 8004, y: 8004 }, - { x: 8005, y: 8005 }, - { x: 8006, y: 8006 }, - { x: 8007, y: 8007 }, - { x: 8008, y: 8008 }, - { x: 8009, y: 8009 }, - { x: 8010, y: 8010 }, - { x: 8011, y: 8011 }, - { x: 8012, y: 8012 }, - { x: 8013, y: 8013 }, - { x: 8014, y: 8014 }, - { x: 8015, y: 8015 }, - { x: 8016, y: 8016 }, - { x: 8017, y: 8017 }, - { x: 8018, y: 8018 }, - { x: 8019, y: 8019 }, - { x: 8020, y: 8020 }, - { x: 8021, y: 8021 }, - { x: 8022, y: 8022 }, - { x: 8023, y: 8023 }, - { x: 8024, y: 8024 }, - { x: 8025, y: 8025 }, - { x: 8026, y: 8026 }, - { x: 8027, y: 8027 }, - { x: 8028, y: 8028 }, - { x: 8029, y: 8029 }, - { x: 8030, y: 8030 }, - { x: 8031, y: 8031 }, - { x: 8032, y: 8032 }, - { x: 8033, y: 8033 }, - { x: 8034, y: 8034 }, - { x: 8035, y: 8035 }, - { x: 8036, y: 8036 }, - { x: 8037, y: 8037 }, - { x: 8038, y: 8038 }, - { x: 8039, y: 8039 }, - { x: 8040, y: 8040 }, - { x: 8041, y: 8041 }, - { x: 8042, y: 8042 }, - { x: 8043, y: 8043 }, - { x: 8044, y: 8044 }, - { x: 8045, y: 8045 }, - { x: 8046, y: 8046 }, - { x: 8047, y: 8047 }, - { x: 8048, y: 8048 }, - { x: 8049, y: 8049 }, - { x: 8050, y: 8050 }, - { x: 8051, y: 8051 }, - { x: 8052, y: 8052 }, - { x: 8053, y: 8053 }, - { x: 8054, y: 8054 }, - { x: 8055, y: 8055 }, - { x: 8056, y: 8056 }, - { x: 8057, y: 8057 }, - { x: 8058, y: 8058 }, - { x: 8059, y: 8059 }, - { x: 8060, y: 8060 }, - { x: 8061, y: 8061 }, - { x: 8062, y: 8062 }, - { x: 8063, y: 8063 }, - { x: 8064, y: 8064 }, - { x: 8065, y: 8065 }, - { x: 8066, y: 8066 }, - { x: 8067, y: 8067 }, - { x: 8068, y: 8068 }, - { x: 8069, y: 8069 }, - { x: 8070, y: 8070 }, - { x: 8071, y: 8071 }, - { x: 8072, y: 8072 }, - { x: 8073, y: 8073 }, - { x: 8074, y: 8074 }, - { x: 8075, y: 8075 }, - { x: 8076, y: 8076 }, - { x: 8077, y: 8077 }, - { x: 8078, y: 8078 }, - { x: 8079, y: 8079 }, - { x: 8080, y: 8080 }, - { x: 8081, y: 8081 }, - { x: 8082, y: 8082 }, - { x: 8083, y: 8083 }, - { x: 8084, y: 8084 }, - { x: 8085, y: 8085 }, - { x: 8086, y: 8086 }, - { x: 8087, y: 8087 }, - { x: 8088, y: 8088 }, - { x: 8089, y: 8089 }, - { x: 8090, y: 8090 }, - { x: 8091, y: 8091 }, - { x: 8092, y: 8092 }, - { x: 8093, y: 8093 }, - { x: 8094, y: 8094 }, - { x: 8095, y: 8095 }, - { x: 8096, y: 8096 }, - { x: 8097, y: 8097 }, - { x: 8098, y: 8098 }, - { x: 8099, y: 8099 }, - { x: 8100, y: 8100 }, - { x: 8101, y: 8101 }, - { x: 8102, y: 8102 }, - { x: 8103, y: 8103 }, - { x: 8104, y: 8104 }, - { x: 8105, y: 8105 }, - { x: 8106, y: 8106 }, - { x: 8107, y: 8107 }, - { x: 8108, y: 8108 }, - { x: 8109, y: 8109 }, - { x: 8110, y: 8110 }, - { x: 8111, y: 8111 }, - { x: 8112, y: 8112 }, - { x: 8113, y: 8113 }, - { x: 8114, y: 8114 }, - { x: 8115, y: 8115 }, - { x: 8116, y: 8116 }, - { x: 8117, y: 8117 }, - { x: 8118, y: 8118 }, - { x: 8119, y: 8119 }, - { x: 8120, y: 8120 }, - { x: 8121, y: 8121 }, - { x: 8122, y: 8122 }, - { x: 8123, y: 8123 }, - { x: 8124, y: 8124 }, - { x: 8125, y: 8125 }, - { x: 8126, y: 8126 }, - { x: 8127, y: 8127 }, - { x: 8128, y: 8128 }, - { x: 8129, y: 8129 }, - { x: 8130, y: 8130 }, - { x: 8131, y: 8131 }, - { x: 8132, y: 8132 }, - { x: 8133, y: 8133 }, - { x: 8134, y: 8134 }, - { x: 8135, y: 8135 }, - { x: 8136, y: 8136 }, - { x: 8137, y: 8137 }, - { x: 8138, y: 8138 }, - { x: 8139, y: 8139 }, - { x: 8140, y: 8140 }, - { x: 8141, y: 8141 }, - { x: 8142, y: 8142 }, - { x: 8143, y: 8143 }, - { x: 8144, y: 8144 }, - { x: 8145, y: 8145 }, - { x: 8146, y: 8146 }, - { x: 8147, y: 8147 }, - { x: 8148, y: 8148 }, - { x: 8149, y: 8149 }, - { x: 8150, y: 8150 }, - { x: 8151, y: 8151 }, - { x: 8152, y: 8152 }, - { x: 8153, y: 8153 }, - { x: 8154, y: 8154 }, - { x: 8155, y: 8155 }, - { x: 8156, y: 8156 }, - { x: 8157, y: 8157 }, - { x: 8158, y: 8158 }, - { x: 8159, y: 8159 }, - { x: 8160, y: 8160 }, - { x: 8161, y: 8161 }, - { x: 8162, y: 8162 }, - { x: 8163, y: 8163 }, - { x: 8164, y: 8164 }, - { x: 8165, y: 8165 }, - { x: 8166, y: 8166 }, - { x: 8167, y: 8167 }, - { x: 8168, y: 8168 }, - { x: 8169, y: 8169 }, - { x: 8170, y: 8170 }, - { x: 8171, y: 8171 }, - { x: 8172, y: 8172 }, - { x: 8173, y: 8173 }, - { x: 8174, y: 8174 }, - { x: 8175, y: 8175 }, - { x: 8176, y: 8176 }, - { x: 8177, y: 8177 }, - { x: 8178, y: 8178 }, - { x: 8179, y: 8179 }, - { x: 8180, y: 8180 }, - { x: 8181, y: 8181 }, - { x: 8182, y: 8182 }, - { x: 8183, y: 8183 }, - { x: 8184, y: 8184 }, - { x: 8185, y: 8185 }, - { x: 8186, y: 8186 }, - { x: 8187, y: 8187 }, - { x: 8188, y: 8188 }, - { x: 8189, y: 8189 }, - { x: 8190, y: 8190 }, - { x: 8191, y: 8191 }, - { x: 8192, y: 8192 }, - { x: 8193, y: 8193 }, - { x: 8194, y: 8194 }, - { x: 8195, y: 8195 }, - { x: 8196, y: 8196 }, - { x: 8197, y: 8197 }, - { x: 8198, y: 8198 }, - { x: 8199, y: 8199 }, - { x: 8200, y: 8200 }, - { x: 8201, y: 8201 }, - { x: 8202, y: 8202 }, - { x: 8203, y: 8203 }, - { x: 8204, y: 8204 }, - { x: 8205, y: 8205 }, - { x: 8206, y: 8206 }, - { x: 8207, y: 8207 }, - { x: 8208, y: 8208 }, - { x: 8209, y: 8209 }, - { x: 8210, y: 8210 }, - { x: 8211, y: 8211 }, - { x: 8212, y: 8212 }, - { x: 8213, y: 8213 }, - { x: 8214, y: 8214 }, - { x: 8215, y: 8215 }, - { x: 8216, y: 8216 }, - { x: 8217, y: 8217 }, - { x: 8218, y: 8218 }, - { x: 8219, y: 8219 }, - { x: 8220, y: 8220 }, - { x: 8221, y: 8221 }, - { x: 8222, y: 8222 }, - { x: 8223, y: 8223 }, - { x: 8224, y: 8224 }, - { x: 8225, y: 8225 }, - { x: 8226, y: 8226 }, - { x: 8227, y: 8227 }, - { x: 8228, y: 8228 }, - { x: 8229, y: 8229 }, - { x: 8230, y: 8230 }, - { x: 8231, y: 8231 }, - { x: 8232, y: 8232 }, - { x: 8233, y: 8233 }, - { x: 8234, y: 8234 }, - { x: 8235, y: 8235 }, - { x: 8236, y: 8236 }, - { x: 8237, y: 8237 }, - { x: 8238, y: 8238 }, - { x: 8239, y: 8239 }, - { x: 8240, y: 8240 }, - { x: 8241, y: 8241 }, - { x: 8242, y: 8242 }, - { x: 8243, y: 8243 }, - { x: 8244, y: 8244 }, - { x: 8245, y: 8245 }, - { x: 8246, y: 8246 }, - { x: 8247, y: 8247 }, - { x: 8248, y: 8248 }, - { x: 8249, y: 8249 }, - { x: 8250, y: 8250 }, - { x: 8251, y: 8251 }, - { x: 8252, y: 8252 }, - { x: 8253, y: 8253 }, - { x: 8254, y: 8254 }, - { x: 8255, y: 8255 }, - { x: 8256, y: 8256 }, - { x: 8257, y: 8257 }, - { x: 8258, y: 8258 }, - { x: 8259, y: 8259 }, - { x: 8260, y: 8260 }, - { x: 8261, y: 8261 }, - { x: 8262, y: 8262 }, - { x: 8263, y: 8263 }, - { x: 8264, y: 8264 }, - { x: 8265, y: 8265 }, - { x: 8266, y: 8266 }, - { x: 8267, y: 8267 }, - { x: 8268, y: 8268 }, - { x: 8269, y: 8269 }, - { x: 8270, y: 8270 }, - { x: 8271, y: 8271 }, - { x: 8272, y: 8272 }, - { x: 8273, y: 8273 }, - { x: 8274, y: 8274 }, - { x: 8275, y: 8275 }, - { x: 8276, y: 8276 }, - { x: 8277, y: 8277 }, - { x: 8278, y: 8278 }, - { x: 8279, y: 8279 }, - { x: 8280, y: 8280 }, - { x: 8281, y: 8281 }, - { x: 8282, y: 8282 }, - { x: 8283, y: 8283 }, - { x: 8284, y: 8284 }, - { x: 8285, y: 8285 }, - { x: 8286, y: 8286 }, - { x: 8287, y: 8287 }, - { x: 8288, y: 8288 }, - { x: 8289, y: 8289 }, - { x: 8290, y: 8290 }, - { x: 8291, y: 8291 }, - { x: 8292, y: 8292 }, - { x: 8293, y: 8293 }, - { x: 8294, y: 8294 }, - { x: 8295, y: 8295 }, - { x: 8296, y: 8296 }, - { x: 8297, y: 8297 }, - { x: 8298, y: 8298 }, - { x: 8299, y: 8299 }, - { x: 8300, y: 8300 }, - { x: 8301, y: 8301 }, - { x: 8302, y: 8302 }, - { x: 8303, y: 8303 }, - { x: 8304, y: 8304 }, - { x: 8305, y: 8305 }, - { x: 8306, y: 8306 }, - { x: 8307, y: 8307 }, - { x: 8308, y: 8308 }, - { x: 8309, y: 8309 }, - { x: 8310, y: 8310 }, - { x: 8311, y: 8311 }, - { x: 8312, y: 8312 }, - { x: 8313, y: 8313 }, - { x: 8314, y: 8314 }, - { x: 8315, y: 8315 }, - { x: 8316, y: 8316 }, - { x: 8317, y: 8317 }, - { x: 8318, y: 8318 }, - { x: 8319, y: 8319 }, - { x: 8320, y: 8320 }, - { x: 8321, y: 8321 }, - { x: 8322, y: 8322 }, - { x: 8323, y: 8323 }, - { x: 8324, y: 8324 }, - { x: 8325, y: 8325 }, - { x: 8326, y: 8326 }, - { x: 8327, y: 8327 }, - { x: 8328, y: 8328 }, - { x: 8329, y: 8329 }, - { x: 8330, y: 8330 }, - { x: 8331, y: 8331 }, - { x: 8332, y: 8332 }, - { x: 8333, y: 8333 }, - { x: 8334, y: 8334 }, - { x: 8335, y: 8335 }, - { x: 8336, y: 8336 }, - { x: 8337, y: 8337 }, - { x: 8338, y: 8338 }, - { x: 8339, y: 8339 }, - { x: 8340, y: 8340 }, - { x: 8341, y: 8341 }, - { x: 8342, y: 8342 }, - { x: 8343, y: 8343 }, - { x: 8344, y: 8344 }, - { x: 8345, y: 8345 }, - { x: 8346, y: 8346 }, - { x: 8347, y: 8347 }, - { x: 8348, y: 8348 }, - { x: 8349, y: 8349 }, - { x: 8350, y: 8350 }, - { x: 8351, y: 8351 }, - { x: 8352, y: 8352 }, - { x: 8353, y: 8353 }, - { x: 8354, y: 8354 }, - { x: 8355, y: 8355 }, - { x: 8356, y: 8356 }, - { x: 8357, y: 8357 }, - { x: 8358, y: 8358 }, - { x: 8359, y: 8359 }, - { x: 8360, y: 8360 }, - { x: 8361, y: 8361 }, - { x: 8362, y: 8362 }, - { x: 8363, y: 8363 }, - { x: 8364, y: 8364 }, - { x: 8365, y: 8365 }, - { x: 8366, y: 8366 }, - { x: 8367, y: 8367 }, - { x: 8368, y: 8368 }, - { x: 8369, y: 8369 }, - { x: 8370, y: 8370 }, - { x: 8371, y: 8371 }, - { x: 8372, y: 8372 }, - { x: 8373, y: 8373 }, - { x: 8374, y: 8374 }, - { x: 8375, y: 8375 }, - { x: 8376, y: 8376 }, - { x: 8377, y: 8377 }, - { x: 8378, y: 8378 }, - { x: 8379, y: 8379 }, - { x: 8380, y: 8380 }, - { x: 8381, y: 8381 }, - { x: 8382, y: 8382 }, - { x: 8383, y: 8383 }, - { x: 8384, y: 8384 }, - { x: 8385, y: 8385 }, - { x: 8386, y: 8386 }, - { x: 8387, y: 8387 }, - { x: 8388, y: 8388 }, - { x: 8389, y: 8389 }, - { x: 8390, y: 8390 }, - { x: 8391, y: 8391 }, - { x: 8392, y: 8392 }, - { x: 8393, y: 8393 }, - { x: 8394, y: 8394 }, - { x: 8395, y: 8395 }, - { x: 8396, y: 8396 }, - { x: 8397, y: 8397 }, - { x: 8398, y: 8398 }, - { x: 8399, y: 8399 }, - { x: 8400, y: 8400 }, - { x: 8401, y: 8401 }, - { x: 8402, y: 8402 }, - { x: 8403, y: 8403 }, - { x: 8404, y: 8404 }, - { x: 8405, y: 8405 }, - { x: 8406, y: 8406 }, - { x: 8407, y: 8407 }, - { x: 8408, y: 8408 }, - { x: 8409, y: 8409 }, - { x: 8410, y: 8410 }, - { x: 8411, y: 8411 }, - { x: 8412, y: 8412 }, - { x: 8413, y: 8413 }, - { x: 8414, y: 8414 }, - { x: 8415, y: 8415 }, - { x: 8416, y: 8416 }, - { x: 8417, y: 8417 }, - { x: 8418, y: 8418 }, - { x: 8419, y: 8419 }, - { x: 8420, y: 8420 }, - { x: 8421, y: 8421 }, - { x: 8422, y: 8422 }, - { x: 8423, y: 8423 }, - { x: 8424, y: 8424 }, - { x: 8425, y: 8425 }, - { x: 8426, y: 8426 }, - { x: 8427, y: 8427 }, - { x: 8428, y: 8428 }, - { x: 8429, y: 8429 }, - { x: 8430, y: 8430 }, - { x: 8431, y: 8431 }, - { x: 8432, y: 8432 }, - { x: 8433, y: 8433 }, - { x: 8434, y: 8434 }, - { x: 8435, y: 8435 }, - { x: 8436, y: 8436 }, - { x: 8437, y: 8437 }, - { x: 8438, y: 8438 }, - { x: 8439, y: 8439 }, - { x: 8440, y: 8440 }, - { x: 8441, y: 8441 }, - { x: 8442, y: 8442 }, - { x: 8443, y: 8443 }, - { x: 8444, y: 8444 }, - { x: 8445, y: 8445 }, - { x: 8446, y: 8446 }, - { x: 8447, y: 8447 }, - { x: 8448, y: 8448 }, - { x: 8449, y: 8449 }, - { x: 8450, y: 8450 }, - { x: 8451, y: 8451 }, - { x: 8452, y: 8452 }, - { x: 8453, y: 8453 }, - { x: 8454, y: 8454 }, - { x: 8455, y: 8455 }, - { x: 8456, y: 8456 }, - { x: 8457, y: 8457 }, - { x: 8458, y: 8458 }, - { x: 8459, y: 8459 }, - { x: 8460, y: 8460 }, - { x: 8461, y: 8461 }, - { x: 8462, y: 8462 }, - { x: 8463, y: 8463 }, - { x: 8464, y: 8464 }, - { x: 8465, y: 8465 }, - { x: 8466, y: 8466 }, - { x: 8467, y: 8467 }, - { x: 8468, y: 8468 }, - { x: 8469, y: 8469 }, - { x: 8470, y: 8470 }, - { x: 8471, y: 8471 }, - { x: 8472, y: 8472 }, - { x: 8473, y: 8473 }, - { x: 8474, y: 8474 }, - { x: 8475, y: 8475 }, - { x: 8476, y: 8476 }, - { x: 8477, y: 8477 }, - { x: 8478, y: 8478 }, - { x: 8479, y: 8479 }, - { x: 8480, y: 8480 }, - { x: 8481, y: 8481 }, - { x: 8482, y: 8482 }, - { x: 8483, y: 8483 }, - { x: 8484, y: 8484 }, - { x: 8485, y: 8485 }, - { x: 8486, y: 8486 }, - { x: 8487, y: 8487 }, - { x: 8488, y: 8488 }, - { x: 8489, y: 8489 }, - { x: 8490, y: 8490 }, - { x: 8491, y: 8491 }, - { x: 8492, y: 8492 }, - { x: 8493, y: 8493 }, - { x: 8494, y: 8494 }, - { x: 8495, y: 8495 }, - { x: 8496, y: 8496 }, - { x: 8497, y: 8497 }, - { x: 8498, y: 8498 }, - { x: 8499, y: 8499 }, - { x: 8500, y: 8500 }, - { x: 8501, y: 8501 }, - { x: 8502, y: 8502 }, - { x: 8503, y: 8503 }, - { x: 8504, y: 8504 }, - { x: 8505, y: 8505 }, - { x: 8506, y: 8506 }, - { x: 8507, y: 8507 }, - { x: 8508, y: 8508 }, - { x: 8509, y: 8509 }, - { x: 8510, y: 8510 }, - { x: 8511, y: 8511 }, - { x: 8512, y: 8512 }, - { x: 8513, y: 8513 }, - { x: 8514, y: 8514 }, - { x: 8515, y: 8515 }, - { x: 8516, y: 8516 }, - { x: 8517, y: 8517 }, - { x: 8518, y: 8518 }, - { x: 8519, y: 8519 }, - { x: 8520, y: 8520 }, - { x: 8521, y: 8521 }, - { x: 8522, y: 8522 }, - { x: 8523, y: 8523 }, - { x: 8524, y: 8524 }, - { x: 8525, y: 8525 }, - { x: 8526, y: 8526 }, - { x: 8527, y: 8527 }, - { x: 8528, y: 8528 }, - { x: 8529, y: 8529 }, - { x: 8530, y: 8530 }, - { x: 8531, y: 8531 }, - { x: 8532, y: 8532 }, - { x: 8533, y: 8533 }, - { x: 8534, y: 8534 }, - { x: 8535, y: 8535 }, - { x: 8536, y: 8536 }, - { x: 8537, y: 8537 }, - { x: 8538, y: 8538 }, - { x: 8539, y: 8539 }, - { x: 8540, y: 8540 }, - { x: 8541, y: 8541 }, - { x: 8542, y: 8542 }, - { x: 8543, y: 8543 }, - { x: 8544, y: 8544 }, - { x: 8545, y: 8545 }, - { x: 8546, y: 8546 }, - { x: 8547, y: 8547 }, - { x: 8548, y: 8548 }, - { x: 8549, y: 8549 }, - { x: 8550, y: 8550 }, - { x: 8551, y: 8551 }, - { x: 8552, y: 8552 }, - { x: 8553, y: 8553 }, - { x: 8554, y: 8554 }, - { x: 8555, y: 8555 }, - { x: 8556, y: 8556 }, - { x: 8557, y: 8557 }, - { x: 8558, y: 8558 }, - { x: 8559, y: 8559 }, - { x: 8560, y: 8560 }, - { x: 8561, y: 8561 }, - { x: 8562, y: 8562 }, - { x: 8563, y: 8563 }, - { x: 8564, y: 8564 }, - { x: 8565, y: 8565 }, - { x: 8566, y: 8566 }, - { x: 8567, y: 8567 }, - { x: 8568, y: 8568 }, - { x: 8569, y: 8569 }, - { x: 8570, y: 8570 }, - { x: 8571, y: 8571 }, - { x: 8572, y: 8572 }, - { x: 8573, y: 8573 }, - { x: 8574, y: 8574 }, - { x: 8575, y: 8575 }, - { x: 8576, y: 8576 }, - { x: 8577, y: 8577 }, - { x: 8578, y: 8578 }, - { x: 8579, y: 8579 }, - { x: 8580, y: 8580 }, - { x: 8581, y: 8581 }, - { x: 8582, y: 8582 }, - { x: 8583, y: 8583 }, - { x: 8584, y: 8584 }, - { x: 8585, y: 8585 }, - { x: 8586, y: 8586 }, - { x: 8587, y: 8587 }, - { x: 8588, y: 8588 }, - { x: 8589, y: 8589 }, - { x: 8590, y: 8590 }, - { x: 8591, y: 8591 }, - { x: 8592, y: 8592 }, - { x: 8593, y: 8593 }, - { x: 8594, y: 8594 }, - { x: 8595, y: 8595 }, - { x: 8596, y: 8596 }, - { x: 8597, y: 8597 }, - { x: 8598, y: 8598 }, - { x: 8599, y: 8599 }, - { x: 8600, y: 8600 }, - { x: 8601, y: 8601 }, - { x: 8602, y: 8602 }, - { x: 8603, y: 8603 }, - { x: 8604, y: 8604 }, - { x: 8605, y: 8605 }, - { x: 8606, y: 8606 }, - { x: 8607, y: 8607 }, - { x: 8608, y: 8608 }, - { x: 8609, y: 8609 }, - { x: 8610, y: 8610 }, - { x: 8611, y: 8611 }, - { x: 8612, y: 8612 }, - { x: 8613, y: 8613 }, - { x: 8614, y: 8614 }, - { x: 8615, y: 8615 }, - { x: 8616, y: 8616 }, - { x: 8617, y: 8617 }, - { x: 8618, y: 8618 }, - { x: 8619, y: 8619 }, - { x: 8620, y: 8620 }, - { x: 8621, y: 8621 }, - { x: 8622, y: 8622 }, - { x: 8623, y: 8623 }, - { x: 8624, y: 8624 }, - { x: 8625, y: 8625 }, - { x: 8626, y: 8626 }, - { x: 8627, y: 8627 }, - { x: 8628, y: 8628 }, - { x: 8629, y: 8629 }, - { x: 8630, y: 8630 }, - { x: 8631, y: 8631 }, - { x: 8632, y: 8632 }, - { x: 8633, y: 8633 }, - { x: 8634, y: 8634 }, - { x: 8635, y: 8635 }, - { x: 8636, y: 8636 }, - { x: 8637, y: 8637 }, - { x: 8638, y: 8638 }, - { x: 8639, y: 8639 }, - { x: 8640, y: 8640 }, - { x: 8641, y: 8641 }, - { x: 8642, y: 8642 }, - { x: 8643, y: 8643 }, - { x: 8644, y: 8644 }, - { x: 8645, y: 8645 }, - { x: 8646, y: 8646 }, - { x: 8647, y: 8647 }, - { x: 8648, y: 8648 }, - { x: 8649, y: 8649 }, - { x: 8650, y: 8650 }, - { x: 8651, y: 8651 }, - { x: 8652, y: 8652 }, - { x: 8653, y: 8653 }, - { x: 8654, y: 8654 }, - { x: 8655, y: 8655 }, - { x: 8656, y: 8656 }, - { x: 8657, y: 8657 }, - { x: 8658, y: 8658 }, - { x: 8659, y: 8659 }, - { x: 8660, y: 8660 }, - { x: 8661, y: 8661 }, - { x: 8662, y: 8662 }, - { x: 8663, y: 8663 }, - { x: 8664, y: 8664 }, - { x: 8665, y: 8665 }, - { x: 8666, y: 8666 }, - { x: 8667, y: 8667 }, - { x: 8668, y: 8668 }, - { x: 8669, y: 8669 }, - { x: 8670, y: 8670 }, - { x: 8671, y: 8671 }, - { x: 8672, y: 8672 }, - { x: 8673, y: 8673 }, - { x: 8674, y: 8674 }, - { x: 8675, y: 8675 }, - { x: 8676, y: 8676 }, - { x: 8677, y: 8677 }, - { x: 8678, y: 8678 }, - { x: 8679, y: 8679 }, - { x: 8680, y: 8680 }, - { x: 8681, y: 8681 }, - { x: 8682, y: 8682 }, - { x: 8683, y: 8683 }, - { x: 8684, y: 8684 }, - { x: 8685, y: 8685 }, - { x: 8686, y: 8686 }, - { x: 8687, y: 8687 }, - { x: 8688, y: 8688 }, - { x: 8689, y: 8689 }, - { x: 8690, y: 8690 }, - { x: 8691, y: 8691 }, - { x: 8692, y: 8692 }, - { x: 8693, y: 8693 }, - { x: 8694, y: 8694 }, - { x: 8695, y: 8695 }, - { x: 8696, y: 8696 }, - { x: 8697, y: 8697 }, - { x: 8698, y: 8698 }, - { x: 8699, y: 8699 }, - { x: 8700, y: 8700 }, - { x: 8701, y: 8701 }, - { x: 8702, y: 8702 }, - { x: 8703, y: 8703 }, - { x: 8704, y: 8704 }, - { x: 8705, y: 8705 }, - { x: 8706, y: 8706 }, - { x: 8707, y: 8707 }, - { x: 8708, y: 8708 }, - { x: 8709, y: 8709 }, - { x: 8710, y: 8710 }, - { x: 8711, y: 8711 }, - { x: 8712, y: 8712 }, - { x: 8713, y: 8713 }, - { x: 8714, y: 8714 }, - { x: 8715, y: 8715 }, - { x: 8716, y: 8716 }, - { x: 8717, y: 8717 }, - { x: 8718, y: 8718 }, - { x: 8719, y: 8719 }, - { x: 8720, y: 8720 }, - { x: 8721, y: 8721 }, - { x: 8722, y: 8722 }, - { x: 8723, y: 8723 }, - { x: 8724, y: 8724 }, - { x: 8725, y: 8725 }, - { x: 8726, y: 8726 }, - { x: 8727, y: 8727 }, - { x: 8728, y: 8728 }, - { x: 8729, y: 8729 }, - { x: 8730, y: 8730 }, - { x: 8731, y: 8731 }, - { x: 8732, y: 8732 }, - { x: 8733, y: 8733 }, - { x: 8734, y: 8734 }, - { x: 8735, y: 8735 }, - { x: 8736, y: 8736 }, - { x: 8737, y: 8737 }, - { x: 8738, y: 8738 }, - { x: 8739, y: 8739 }, - { x: 8740, y: 8740 }, - { x: 8741, y: 8741 }, - { x: 8742, y: 8742 }, - { x: 8743, y: 8743 }, - { x: 8744, y: 8744 }, - { x: 8745, y: 8745 }, - { x: 8746, y: 8746 }, - { x: 8747, y: 8747 }, - { x: 8748, y: 8748 }, - { x: 8749, y: 8749 }, - { x: 8750, y: 8750 }, - { x: 8751, y: 8751 }, - { x: 8752, y: 8752 }, - { x: 8753, y: 8753 }, - { x: 8754, y: 8754 }, - { x: 8755, y: 8755 }, - { x: 8756, y: 8756 }, - { x: 8757, y: 8757 }, - { x: 8758, y: 8758 }, - { x: 8759, y: 8759 }, - { x: 8760, y: 8760 }, - { x: 8761, y: 8761 }, - { x: 8762, y: 8762 }, - { x: 8763, y: 8763 }, - { x: 8764, y: 8764 }, - { x: 8765, y: 8765 }, - { x: 8766, y: 8766 }, - { x: 8767, y: 8767 }, - { x: 8768, y: 8768 }, - { x: 8769, y: 8769 }, - { x: 8770, y: 8770 }, - { x: 8771, y: 8771 }, - { x: 8772, y: 8772 }, - { x: 8773, y: 8773 }, - { x: 8774, y: 8774 }, - { x: 8775, y: 8775 }, - { x: 8776, y: 8776 }, - { x: 8777, y: 8777 }, - { x: 8778, y: 8778 }, - { x: 8779, y: 8779 }, - { x: 8780, y: 8780 }, - { x: 8781, y: 8781 }, - { x: 8782, y: 8782 }, - { x: 8783, y: 8783 }, - { x: 8784, y: 8784 }, - { x: 8785, y: 8785 }, - { x: 8786, y: 8786 }, - { x: 8787, y: 8787 }, - { x: 8788, y: 8788 }, - { x: 8789, y: 8789 }, - { x: 8790, y: 8790 }, - { x: 8791, y: 8791 }, - { x: 8792, y: 8792 }, - { x: 8793, y: 8793 }, - { x: 8794, y: 8794 }, - { x: 8795, y: 8795 }, - { x: 8796, y: 8796 }, - { x: 8797, y: 8797 }, - { x: 8798, y: 8798 }, - { x: 8799, y: 8799 }, - { x: 8800, y: 8800 }, - { x: 8801, y: 8801 }, - { x: 8802, y: 8802 }, - { x: 8803, y: 8803 }, - { x: 8804, y: 8804 }, - { x: 8805, y: 8805 }, - { x: 8806, y: 8806 }, - { x: 8807, y: 8807 }, - { x: 8808, y: 8808 }, - { x: 8809, y: 8809 }, - { x: 8810, y: 8810 }, - { x: 8811, y: 8811 }, - { x: 8812, y: 8812 }, - { x: 8813, y: 8813 }, - { x: 8814, y: 8814 }, - { x: 8815, y: 8815 }, - { x: 8816, y: 8816 }, - { x: 8817, y: 8817 }, - { x: 8818, y: 8818 }, - { x: 8819, y: 8819 }, - { x: 8820, y: 8820 }, - { x: 8821, y: 8821 }, - { x: 8822, y: 8822 }, - { x: 8823, y: 8823 }, - { x: 8824, y: 8824 }, - { x: 8825, y: 8825 }, - { x: 8826, y: 8826 }, - { x: 8827, y: 8827 }, - { x: 8828, y: 8828 }, - { x: 8829, y: 8829 }, - { x: 8830, y: 8830 }, - { x: 8831, y: 8831 }, - { x: 8832, y: 8832 }, - { x: 8833, y: 8833 }, - { x: 8834, y: 8834 }, - { x: 8835, y: 8835 }, - { x: 8836, y: 8836 }, - { x: 8837, y: 8837 }, - { x: 8838, y: 8838 }, - { x: 8839, y: 8839 }, - { x: 8840, y: 8840 }, - { x: 8841, y: 8841 }, - { x: 8842, y: 8842 }, - { x: 8843, y: 8843 }, - { x: 8844, y: 8844 }, - { x: 8845, y: 8845 }, - { x: 8846, y: 8846 }, - { x: 8847, y: 8847 }, - { x: 8848, y: 8848 }, - { x: 8849, y: 8849 }, - { x: 8850, y: 8850 }, - { x: 8851, y: 8851 }, - { x: 8852, y: 8852 }, - { x: 8853, y: 8853 }, - { x: 8854, y: 8854 }, - { x: 8855, y: 8855 }, - { x: 8856, y: 8856 }, - { x: 8857, y: 8857 }, - { x: 8858, y: 8858 }, - { x: 8859, y: 8859 }, - { x: 8860, y: 8860 }, - { x: 8861, y: 8861 }, - { x: 8862, y: 8862 }, - { x: 8863, y: 8863 }, - { x: 8864, y: 8864 }, - { x: 8865, y: 8865 }, - { x: 8866, y: 8866 }, - { x: 8867, y: 8867 }, - { x: 8868, y: 8868 }, - { x: 8869, y: 8869 }, - { x: 8870, y: 8870 }, - { x: 8871, y: 8871 }, - { x: 8872, y: 8872 }, - { x: 8873, y: 8873 }, - { x: 8874, y: 8874 }, - { x: 8875, y: 8875 }, - { x: 8876, y: 8876 }, - { x: 8877, y: 8877 }, - { x: 8878, y: 8878 }, - { x: 8879, y: 8879 }, - { x: 8880, y: 8880 }, - { x: 8881, y: 8881 }, - { x: 8882, y: 8882 }, - { x: 8883, y: 8883 }, - { x: 8884, y: 8884 }, - { x: 8885, y: 8885 }, - { x: 8886, y: 8886 }, - { x: 8887, y: 8887 }, - { x: 8888, y: 8888 }, - { x: 8889, y: 8889 }, - { x: 8890, y: 8890 }, - { x: 8891, y: 8891 }, - { x: 8892, y: 8892 }, - { x: 8893, y: 8893 }, - { x: 8894, y: 8894 }, - { x: 8895, y: 8895 }, - { x: 8896, y: 8896 }, - { x: 8897, y: 8897 }, - { x: 8898, y: 8898 }, - { x: 8899, y: 8899 }, - { x: 8900, y: 8900 }, - { x: 8901, y: 8901 }, - { x: 8902, y: 8902 }, - { x: 8903, y: 8903 }, - { x: 8904, y: 8904 }, - { x: 8905, y: 8905 }, - { x: 8906, y: 8906 }, - { x: 8907, y: 8907 }, - { x: 8908, y: 8908 }, - { x: 8909, y: 8909 }, - { x: 8910, y: 8910 }, - { x: 8911, y: 8911 }, - { x: 8912, y: 8912 }, - { x: 8913, y: 8913 }, - { x: 8914, y: 8914 }, - { x: 8915, y: 8915 }, - { x: 8916, y: 8916 }, - { x: 8917, y: 8917 }, - { x: 8918, y: 8918 }, - { x: 8919, y: 8919 }, - { x: 8920, y: 8920 }, - { x: 8921, y: 8921 }, - { x: 8922, y: 8922 }, - { x: 8923, y: 8923 }, - { x: 8924, y: 8924 }, - { x: 8925, y: 8925 }, - { x: 8926, y: 8926 }, - { x: 8927, y: 8927 }, - { x: 8928, y: 8928 }, - { x: 8929, y: 8929 }, - { x: 8930, y: 8930 }, - { x: 8931, y: 8931 }, - { x: 8932, y: 8932 }, - { x: 8933, y: 8933 }, - { x: 8934, y: 8934 }, - { x: 8935, y: 8935 }, - { x: 8936, y: 8936 }, - { x: 8937, y: 8937 }, - { x: 8938, y: 8938 }, - { x: 8939, y: 8939 }, - { x: 8940, y: 8940 }, - { x: 8941, y: 8941 }, - { x: 8942, y: 8942 }, - { x: 8943, y: 8943 }, - { x: 8944, y: 8944 }, - { x: 8945, y: 8945 }, - { x: 8946, y: 8946 }, - { x: 8947, y: 8947 }, - { x: 8948, y: 8948 }, - { x: 8949, y: 8949 }, - { x: 8950, y: 8950 }, - { x: 8951, y: 8951 }, - { x: 8952, y: 8952 }, - { x: 8953, y: 8953 }, - { x: 8954, y: 8954 }, - { x: 8955, y: 8955 }, - { x: 8956, y: 8956 }, - { x: 8957, y: 8957 }, - { x: 8958, y: 8958 }, - { x: 8959, y: 8959 }, - { x: 8960, y: 8960 }, - { x: 8961, y: 8961 }, - { x: 8962, y: 8962 }, - { x: 8963, y: 8963 }, - { x: 8964, y: 8964 }, - { x: 8965, y: 8965 }, - { x: 8966, y: 8966 }, - { x: 8967, y: 8967 }, - { x: 8968, y: 8968 }, - { x: 8969, y: 8969 }, - { x: 8970, y: 8970 }, - { x: 8971, y: 8971 }, - { x: 8972, y: 8972 }, - { x: 8973, y: 8973 }, - { x: 8974, y: 8974 }, - { x: 8975, y: 8975 }, - { x: 8976, y: 8976 }, - { x: 8977, y: 8977 }, - { x: 8978, y: 8978 }, - { x: 8979, y: 8979 }, - { x: 8980, y: 8980 }, - { x: 8981, y: 8981 }, - { x: 8982, y: 8982 }, - { x: 8983, y: 8983 }, - { x: 8984, y: 8984 }, - { x: 8985, y: 8985 }, - { x: 8986, y: 8986 }, - { x: 8987, y: 8987 }, - { x: 8988, y: 8988 }, - { x: 8989, y: 8989 }, - { x: 8990, y: 8990 }, - { x: 8991, y: 8991 }, - { x: 8992, y: 8992 }, - { x: 8993, y: 8993 }, - { x: 8994, y: 8994 }, - { x: 8995, y: 8995 }, - { x: 8996, y: 8996 }, - { x: 8997, y: 8997 }, - { x: 8998, y: 8998 }, - { x: 8999, y: 8999 }, - { x: 9000, y: 9000 }, - { x: 9001, y: 9001 }, - { x: 9002, y: 9002 }, - { x: 9003, y: 9003 }, - { x: 9004, y: 9004 }, - { x: 9005, y: 9005 }, - { x: 9006, y: 9006 }, - { x: 9007, y: 9007 }, - { x: 9008, y: 9008 }, - { x: 9009, y: 9009 }, - { x: 9010, y: 9010 }, - { x: 9011, y: 9011 }, - { x: 9012, y: 9012 }, - { x: 9013, y: 9013 }, - { x: 9014, y: 9014 }, - { x: 9015, y: 9015 }, - { x: 9016, y: 9016 }, - { x: 9017, y: 9017 }, - { x: 9018, y: 9018 }, - { x: 9019, y: 9019 }, - { x: 9020, y: 9020 }, - { x: 9021, y: 9021 }, - { x: 9022, y: 9022 }, - { x: 9023, y: 9023 }, - { x: 9024, y: 9024 }, - { x: 9025, y: 9025 }, - { x: 9026, y: 9026 }, - { x: 9027, y: 9027 }, - { x: 9028, y: 9028 }, - { x: 9029, y: 9029 }, - { x: 9030, y: 9030 }, - { x: 9031, y: 9031 }, - { x: 9032, y: 9032 }, - { x: 9033, y: 9033 }, - { x: 9034, y: 9034 }, - { x: 9035, y: 9035 }, - { x: 9036, y: 9036 }, - { x: 9037, y: 9037 }, - { x: 9038, y: 9038 }, - { x: 9039, y: 9039 }, - { x: 9040, y: 9040 }, - { x: 9041, y: 9041 }, - { x: 9042, y: 9042 }, - { x: 9043, y: 9043 }, - { x: 9044, y: 9044 }, - { x: 9045, y: 9045 }, - { x: 9046, y: 9046 }, - { x: 9047, y: 9047 }, - { x: 9048, y: 9048 }, - { x: 9049, y: 9049 }, - { x: 9050, y: 9050 }, - { x: 9051, y: 9051 }, - { x: 9052, y: 9052 }, - { x: 9053, y: 9053 }, - { x: 9054, y: 9054 }, - { x: 9055, y: 9055 }, - { x: 9056, y: 9056 }, - { x: 9057, y: 9057 }, - { x: 9058, y: 9058 }, - { x: 9059, y: 9059 }, - { x: 9060, y: 9060 }, - { x: 9061, y: 9061 }, - { x: 9062, y: 9062 }, - { x: 9063, y: 9063 }, - { x: 9064, y: 9064 }, - { x: 9065, y: 9065 }, - { x: 9066, y: 9066 }, - { x: 9067, y: 9067 }, - { x: 9068, y: 9068 }, - { x: 9069, y: 9069 }, - { x: 9070, y: 9070 }, - { x: 9071, y: 9071 }, - { x: 9072, y: 9072 }, - { x: 9073, y: 9073 }, - { x: 9074, y: 9074 }, - { x: 9075, y: 9075 }, - { x: 9076, y: 9076 }, - { x: 9077, y: 9077 }, - { x: 9078, y: 9078 }, - { x: 9079, y: 9079 }, - { x: 9080, y: 9080 }, - { x: 9081, y: 9081 }, - { x: 9082, y: 9082 }, - { x: 9083, y: 9083 }, - { x: 9084, y: 9084 }, - { x: 9085, y: 9085 }, - { x: 9086, y: 9086 }, - { x: 9087, y: 9087 }, - { x: 9088, y: 9088 }, - { x: 9089, y: 9089 }, - { x: 9090, y: 9090 }, - { x: 9091, y: 9091 }, - { x: 9092, y: 9092 }, - { x: 9093, y: 9093 }, - { x: 9094, y: 9094 }, - { x: 9095, y: 9095 }, - { x: 9096, y: 9096 }, - { x: 9097, y: 9097 }, - { x: 9098, y: 9098 }, - { x: 9099, y: 9099 }, - { x: 9100, y: 9100 }, - { x: 9101, y: 9101 }, - { x: 9102, y: 9102 }, - { x: 9103, y: 9103 }, - { x: 9104, y: 9104 }, - { x: 9105, y: 9105 }, - { x: 9106, y: 9106 }, - { x: 9107, y: 9107 }, - { x: 9108, y: 9108 }, - { x: 9109, y: 9109 }, - { x: 9110, y: 9110 }, - { x: 9111, y: 9111 }, - { x: 9112, y: 9112 }, - { x: 9113, y: 9113 }, - { x: 9114, y: 9114 }, - { x: 9115, y: 9115 }, - { x: 9116, y: 9116 }, - { x: 9117, y: 9117 }, - { x: 9118, y: 9118 }, - { x: 9119, y: 9119 }, - { x: 9120, y: 9120 }, - { x: 9121, y: 9121 }, - { x: 9122, y: 9122 }, - { x: 9123, y: 9123 }, - { x: 9124, y: 9124 }, - { x: 9125, y: 9125 }, - { x: 9126, y: 9126 }, - { x: 9127, y: 9127 }, - { x: 9128, y: 9128 }, - { x: 9129, y: 9129 }, - { x: 9130, y: 9130 }, - { x: 9131, y: 9131 }, - { x: 9132, y: 9132 }, - { x: 9133, y: 9133 }, - { x: 9134, y: 9134 }, - { x: 9135, y: 9135 }, - { x: 9136, y: 9136 }, - { x: 9137, y: 9137 }, - { x: 9138, y: 9138 }, - { x: 9139, y: 9139 }, - { x: 9140, y: 9140 }, - { x: 9141, y: 9141 }, - { x: 9142, y: 9142 }, - { x: 9143, y: 9143 }, - { x: 9144, y: 9144 }, - { x: 9145, y: 9145 }, - { x: 9146, y: 9146 }, - { x: 9147, y: 9147 }, - { x: 9148, y: 9148 }, - { x: 9149, y: 9149 }, - { x: 9150, y: 9150 }, - { x: 9151, y: 9151 }, - { x: 9152, y: 9152 }, - { x: 9153, y: 9153 }, - { x: 9154, y: 9154 }, - { x: 9155, y: 9155 }, - { x: 9156, y: 9156 }, - { x: 9157, y: 9157 }, - { x: 9158, y: 9158 }, - { x: 9159, y: 9159 }, - { x: 9160, y: 9160 }, - { x: 9161, y: 9161 }, - { x: 9162, y: 9162 }, - { x: 9163, y: 9163 }, - { x: 9164, y: 9164 }, - { x: 9165, y: 9165 }, - { x: 9166, y: 9166 }, - { x: 9167, y: 9167 }, - { x: 9168, y: 9168 }, - { x: 9169, y: 9169 }, - { x: 9170, y: 9170 }, - { x: 9171, y: 9171 }, - { x: 9172, y: 9172 }, - { x: 9173, y: 9173 }, - { x: 9174, y: 9174 }, - { x: 9175, y: 9175 }, - { x: 9176, y: 9176 }, - { x: 9177, y: 9177 }, - { x: 9178, y: 9178 }, - { x: 9179, y: 9179 }, - { x: 9180, y: 9180 }, - { x: 9181, y: 9181 }, - { x: 9182, y: 9182 }, - { x: 9183, y: 9183 }, - { x: 9184, y: 9184 }, - { x: 9185, y: 9185 }, - { x: 9186, y: 9186 }, - { x: 9187, y: 9187 }, - { x: 9188, y: 9188 }, - { x: 9189, y: 9189 }, - { x: 9190, y: 9190 }, - { x: 9191, y: 9191 }, - { x: 9192, y: 9192 }, - { x: 9193, y: 9193 }, - { x: 9194, y: 9194 }, - { x: 9195, y: 9195 }, - { x: 9196, y: 9196 }, - { x: 9197, y: 9197 }, - { x: 9198, y: 9198 }, - { x: 9199, y: 9199 }, - { x: 9200, y: 9200 }, - { x: 9201, y: 9201 }, - { x: 9202, y: 9202 }, - { x: 9203, y: 9203 }, - { x: 9204, y: 9204 }, - { x: 9205, y: 9205 }, - { x: 9206, y: 9206 }, - { x: 9207, y: 9207 }, - { x: 9208, y: 9208 }, - { x: 9209, y: 9209 }, - { x: 9210, y: 9210 }, - { x: 9211, y: 9211 }, - { x: 9212, y: 9212 }, - { x: 9213, y: 9213 }, - { x: 9214, y: 9214 }, - { x: 9215, y: 9215 }, - { x: 9216, y: 9216 }, - { x: 9217, y: 9217 }, - { x: 9218, y: 9218 }, - { x: 9219, y: 9219 }, - { x: 9220, y: 9220 }, - { x: 9221, y: 9221 }, - { x: 9222, y: 9222 }, - { x: 9223, y: 9223 }, - { x: 9224, y: 9224 }, - { x: 9225, y: 9225 }, - { x: 9226, y: 9226 }, - { x: 9227, y: 9227 }, - { x: 9228, y: 9228 }, - { x: 9229, y: 9229 }, - { x: 9230, y: 9230 }, - { x: 9231, y: 9231 }, - { x: 9232, y: 9232 }, - { x: 9233, y: 9233 }, - { x: 9234, y: 9234 }, - { x: 9235, y: 9235 }, - { x: 9236, y: 9236 }, - { x: 9237, y: 9237 }, - { x: 9238, y: 9238 }, - { x: 9239, y: 9239 }, - { x: 9240, y: 9240 }, - { x: 9241, y: 9241 }, - { x: 9242, y: 9242 }, - { x: 9243, y: 9243 }, - { x: 9244, y: 9244 }, - { x: 9245, y: 9245 }, - { x: 9246, y: 9246 }, - { x: 9247, y: 9247 }, - { x: 9248, y: 9248 }, - { x: 9249, y: 9249 }, - { x: 9250, y: 9250 }, - { x: 9251, y: 9251 }, - { x: 9252, y: 9252 }, - { x: 9253, y: 9253 }, - { x: 9254, y: 9254 }, - { x: 9255, y: 9255 }, - { x: 9256, y: 9256 }, - { x: 9257, y: 9257 }, - { x: 9258, y: 9258 }, - { x: 9259, y: 9259 }, - { x: 9260, y: 9260 }, - { x: 9261, y: 9261 }, - { x: 9262, y: 9262 }, - { x: 9263, y: 9263 }, - { x: 9264, y: 9264 }, - { x: 9265, y: 9265 }, - { x: 9266, y: 9266 }, - { x: 9267, y: 9267 }, - { x: 9268, y: 9268 }, - { x: 9269, y: 9269 }, - { x: 9270, y: 9270 }, - { x: 9271, y: 9271 }, - { x: 9272, y: 9272 }, - { x: 9273, y: 9273 }, - { x: 9274, y: 9274 }, - { x: 9275, y: 9275 }, - { x: 9276, y: 9276 }, - { x: 9277, y: 9277 }, - { x: 9278, y: 9278 }, - { x: 9279, y: 9279 }, - { x: 9280, y: 9280 }, - { x: 9281, y: 9281 }, - { x: 9282, y: 9282 }, - { x: 9283, y: 9283 }, - { x: 9284, y: 9284 }, - { x: 9285, y: 9285 }, - { x: 9286, y: 9286 }, - { x: 9287, y: 9287 }, - { x: 9288, y: 9288 }, - { x: 9289, y: 9289 }, - { x: 9290, y: 9290 }, - { x: 9291, y: 9291 }, - { x: 9292, y: 9292 }, - { x: 9293, y: 9293 }, - { x: 9294, y: 9294 }, - { x: 9295, y: 9295 }, - { x: 9296, y: 9296 }, - { x: 9297, y: 9297 }, - { x: 9298, y: 9298 }, - { x: 9299, y: 9299 }, - { x: 9300, y: 9300 }, - { x: 9301, y: 9301 }, - { x: 9302, y: 9302 }, - { x: 9303, y: 9303 }, - { x: 9304, y: 9304 }, - { x: 9305, y: 9305 }, - { x: 9306, y: 9306 }, - { x: 9307, y: 9307 }, - { x: 9308, y: 9308 }, - { x: 9309, y: 9309 }, - { x: 9310, y: 9310 }, - { x: 9311, y: 9311 }, - { x: 9312, y: 9312 }, - { x: 9313, y: 9313 }, - { x: 9314, y: 9314 }, - { x: 9315, y: 9315 }, - { x: 9316, y: 9316 }, - { x: 9317, y: 9317 }, - { x: 9318, y: 9318 }, - { x: 9319, y: 9319 }, - { x: 9320, y: 9320 }, - { x: 9321, y: 9321 }, - { x: 9322, y: 9322 }, - { x: 9323, y: 9323 }, - { x: 9324, y: 9324 }, - { x: 9325, y: 9325 }, - { x: 9326, y: 9326 }, - { x: 9327, y: 9327 }, - { x: 9328, y: 9328 }, - { x: 9329, y: 9329 }, - { x: 9330, y: 9330 }, - { x: 9331, y: 9331 }, - { x: 9332, y: 9332 }, - { x: 9333, y: 9333 }, - { x: 9334, y: 9334 }, - { x: 9335, y: 9335 }, - { x: 9336, y: 9336 }, - { x: 9337, y: 9337 }, - { x: 9338, y: 9338 }, - { x: 9339, y: 9339 }, - { x: 9340, y: 9340 }, - { x: 9341, y: 9341 }, - { x: 9342, y: 9342 }, - { x: 9343, y: 9343 }, - { x: 9344, y: 9344 }, - { x: 9345, y: 9345 }, - { x: 9346, y: 9346 }, - { x: 9347, y: 9347 }, - { x: 9348, y: 9348 }, - { x: 9349, y: 9349 }, - { x: 9350, y: 9350 }, - { x: 9351, y: 9351 }, - { x: 9352, y: 9352 }, - { x: 9353, y: 9353 }, - { x: 9354, y: 9354 }, - { x: 9355, y: 9355 }, - { x: 9356, y: 9356 }, - { x: 9357, y: 9357 }, - { x: 9358, y: 9358 }, - { x: 9359, y: 9359 }, - { x: 9360, y: 9360 }, - { x: 9361, y: 9361 }, - { x: 9362, y: 9362 }, - { x: 9363, y: 9363 }, - { x: 9364, y: 9364 }, - { x: 9365, y: 9365 }, - { x: 9366, y: 9366 }, - { x: 9367, y: 9367 }, - { x: 9368, y: 9368 }, - { x: 9369, y: 9369 }, - { x: 9370, y: 9370 }, - { x: 9371, y: 9371 }, - { x: 9372, y: 9372 }, - { x: 9373, y: 9373 }, - { x: 9374, y: 9374 }, - { x: 9375, y: 9375 }, - { x: 9376, y: 9376 }, - { x: 9377, y: 9377 }, - { x: 9378, y: 9378 }, - { x: 9379, y: 9379 }, - { x: 9380, y: 9380 }, - { x: 9381, y: 9381 }, - { x: 9382, y: 9382 }, - { x: 9383, y: 9383 }, - { x: 9384, y: 9384 }, - { x: 9385, y: 9385 }, - { x: 9386, y: 9386 }, - { x: 9387, y: 9387 }, - { x: 9388, y: 9388 }, - { x: 9389, y: 9389 }, - { x: 9390, y: 9390 }, - { x: 9391, y: 9391 }, - { x: 9392, y: 9392 }, - { x: 9393, y: 9393 }, - { x: 9394, y: 9394 }, - { x: 9395, y: 9395 }, - { x: 9396, y: 9396 }, - { x: 9397, y: 9397 }, - { x: 9398, y: 9398 }, - { x: 9399, y: 9399 }, - { x: 9400, y: 9400 }, - { x: 9401, y: 9401 }, - { x: 9402, y: 9402 }, - { x: 9403, y: 9403 }, - { x: 9404, y: 9404 }, - { x: 9405, y: 9405 }, - { x: 9406, y: 9406 }, - { x: 9407, y: 9407 }, - { x: 9408, y: 9408 }, - { x: 9409, y: 9409 }, - { x: 9410, y: 9410 }, - { x: 9411, y: 9411 }, - { x: 9412, y: 9412 }, - { x: 9413, y: 9413 }, - { x: 9414, y: 9414 }, - { x: 9415, y: 9415 }, - { x: 9416, y: 9416 }, - { x: 9417, y: 9417 }, - { x: 9418, y: 9418 }, - { x: 9419, y: 9419 }, - { x: 9420, y: 9420 }, - { x: 9421, y: 9421 }, - { x: 9422, y: 9422 }, - { x: 9423, y: 9423 }, - { x: 9424, y: 9424 }, - { x: 9425, y: 9425 }, - { x: 9426, y: 9426 }, - { x: 9427, y: 9427 }, - { x: 9428, y: 9428 }, - { x: 9429, y: 9429 }, - { x: 9430, y: 9430 }, - { x: 9431, y: 9431 }, - { x: 9432, y: 9432 }, - { x: 9433, y: 9433 }, - { x: 9434, y: 9434 }, - { x: 9435, y: 9435 }, - { x: 9436, y: 9436 }, - { x: 9437, y: 9437 }, - { x: 9438, y: 9438 }, - { x: 9439, y: 9439 }, - { x: 9440, y: 9440 }, - { x: 9441, y: 9441 }, - { x: 9442, y: 9442 }, - { x: 9443, y: 9443 }, - { x: 9444, y: 9444 }, - { x: 9445, y: 9445 }, - { x: 9446, y: 9446 }, - { x: 9447, y: 9447 }, - { x: 9448, y: 9448 }, - { x: 9449, y: 9449 }, - { x: 9450, y: 9450 }, - { x: 9451, y: 9451 }, - { x: 9452, y: 9452 }, - { x: 9453, y: 9453 }, - { x: 9454, y: 9454 }, - { x: 9455, y: 9455 }, - { x: 9456, y: 9456 }, - { x: 9457, y: 9457 }, - { x: 9458, y: 9458 }, - { x: 9459, y: 9459 }, - { x: 9460, y: 9460 }, - { x: 9461, y: 9461 }, - { x: 9462, y: 9462 }, - { x: 9463, y: 9463 }, - { x: 9464, y: 9464 }, - { x: 9465, y: 9465 }, - { x: 9466, y: 9466 }, - { x: 9467, y: 9467 }, - { x: 9468, y: 9468 }, - { x: 9469, y: 9469 }, - { x: 9470, y: 9470 }, - { x: 9471, y: 9471 }, - { x: 9472, y: 9472 }, - { x: 9473, y: 9473 }, - { x: 9474, y: 9474 }, - { x: 9475, y: 9475 }, - { x: 9476, y: 9476 }, - { x: 9477, y: 9477 }, - { x: 9478, y: 9478 }, - { x: 9479, y: 9479 }, - { x: 9480, y: 9480 }, - { x: 9481, y: 9481 }, - { x: 9482, y: 9482 }, - { x: 9483, y: 9483 }, - { x: 9484, y: 9484 }, - { x: 9485, y: 9485 }, - { x: 9486, y: 9486 }, - { x: 9487, y: 9487 }, - { x: 9488, y: 9488 }, - { x: 9489, y: 9489 }, - { x: 9490, y: 9490 }, - { x: 9491, y: 9491 }, - { x: 9492, y: 9492 }, - { x: 9493, y: 9493 }, - { x: 9494, y: 9494 }, - { x: 9495, y: 9495 }, - { x: 9496, y: 9496 }, - { x: 9497, y: 9497 }, - { x: 9498, y: 9498 }, - { x: 9499, y: 9499 }, - { x: 9500, y: 9500 }, - { x: 9501, y: 9501 }, - { x: 9502, y: 9502 }, - { x: 9503, y: 9503 }, - { x: 9504, y: 9504 }, - { x: 9505, y: 9505 }, - { x: 9506, y: 9506 }, - { x: 9507, y: 9507 }, - { x: 9508, y: 9508 }, - { x: 9509, y: 9509 }, - { x: 9510, y: 9510 }, - { x: 9511, y: 9511 }, - { x: 9512, y: 9512 }, - { x: 9513, y: 9513 }, - { x: 9514, y: 9514 }, - { x: 9515, y: 9515 }, - { x: 9516, y: 9516 }, - { x: 9517, y: 9517 }, - { x: 9518, y: 9518 }, - { x: 9519, y: 9519 }, - { x: 9520, y: 9520 }, - { x: 9521, y: 9521 }, - { x: 9522, y: 9522 }, - { x: 9523, y: 9523 }, - { x: 9524, y: 9524 }, - { x: 9525, y: 9525 }, - { x: 9526, y: 9526 }, - { x: 9527, y: 9527 }, - { x: 9528, y: 9528 }, - { x: 9529, y: 9529 }, - { x: 9530, y: 9530 }, - { x: 9531, y: 9531 }, - { x: 9532, y: 9532 }, - { x: 9533, y: 9533 }, - { x: 9534, y: 9534 }, - { x: 9535, y: 9535 }, - { x: 9536, y: 9536 }, - { x: 9537, y: 9537 }, - { x: 9538, y: 9538 }, - { x: 9539, y: 9539 }, - { x: 9540, y: 9540 }, - { x: 9541, y: 9541 }, - { x: 9542, y: 9542 }, - { x: 9543, y: 9543 }, - { x: 9544, y: 9544 }, - { x: 9545, y: 9545 }, - { x: 9546, y: 9546 }, - { x: 9547, y: 9547 }, - { x: 9548, y: 9548 }, - { x: 9549, y: 9549 }, - { x: 9550, y: 9550 }, - { x: 9551, y: 9551 }, - { x: 9552, y: 9552 }, - { x: 9553, y: 9553 }, - { x: 9554, y: 9554 }, - { x: 9555, y: 9555 }, - { x: 9556, y: 9556 }, - { x: 9557, y: 9557 }, - { x: 9558, y: 9558 }, - { x: 9559, y: 9559 }, - { x: 9560, y: 9560 }, - { x: 9561, y: 9561 }, - { x: 9562, y: 9562 }, - { x: 9563, y: 9563 }, - { x: 9564, y: 9564 }, - { x: 9565, y: 9565 }, - { x: 9566, y: 9566 }, - { x: 9567, y: 9567 }, - { x: 9568, y: 9568 }, - { x: 9569, y: 9569 }, - { x: 9570, y: 9570 }, - { x: 9571, y: 9571 }, - { x: 9572, y: 9572 }, - { x: 9573, y: 9573 }, - { x: 9574, y: 9574 }, - { x: 9575, y: 9575 }, - { x: 9576, y: 9576 }, - { x: 9577, y: 9577 }, - { x: 9578, y: 9578 }, - { x: 9579, y: 9579 }, - { x: 9580, y: 9580 }, - { x: 9581, y: 9581 }, - { x: 9582, y: 9582 }, - { x: 9583, y: 9583 }, - { x: 9584, y: 9584 }, - { x: 9585, y: 9585 }, - { x: 9586, y: 9586 }, - { x: 9587, y: 9587 }, - { x: 9588, y: 9588 }, - { x: 9589, y: 9589 }, - { x: 9590, y: 9590 }, - { x: 9591, y: 9591 }, - { x: 9592, y: 9592 }, - { x: 9593, y: 9593 }, - { x: 9594, y: 9594 }, - { x: 9595, y: 9595 }, - { x: 9596, y: 9596 }, - { x: 9597, y: 9597 }, - { x: 9598, y: 9598 }, - { x: 9599, y: 9599 }, - { x: 9600, y: 9600 }, - { x: 9601, y: 9601 }, - { x: 9602, y: 9602 }, - { x: 9603, y: 9603 }, - { x: 9604, y: 9604 }, - { x: 9605, y: 9605 }, - { x: 9606, y: 9606 }, - { x: 9607, y: 9607 }, - { x: 9608, y: 9608 }, - { x: 9609, y: 9609 }, - { x: 9610, y: 9610 }, - { x: 9611, y: 9611 }, - { x: 9612, y: 9612 }, - { x: 9613, y: 9613 }, - { x: 9614, y: 9614 }, - { x: 9615, y: 9615 }, - { x: 9616, y: 9616 }, - { x: 9617, y: 9617 }, - { x: 9618, y: 9618 }, - { x: 9619, y: 9619 }, - { x: 9620, y: 9620 }, - { x: 9621, y: 9621 }, - { x: 9622, y: 9622 }, - { x: 9623, y: 9623 }, - { x: 9624, y: 9624 }, - { x: 9625, y: 9625 }, - { x: 9626, y: 9626 }, - { x: 9627, y: 9627 }, - { x: 9628, y: 9628 }, - { x: 9629, y: 9629 }, - { x: 9630, y: 9630 }, - { x: 9631, y: 9631 }, - { x: 9632, y: 9632 }, - { x: 9633, y: 9633 }, - { x: 9634, y: 9634 }, - { x: 9635, y: 9635 }, - { x: 9636, y: 9636 }, - { x: 9637, y: 9637 }, - { x: 9638, y: 9638 }, - { x: 9639, y: 9639 }, - { x: 9640, y: 9640 }, - { x: 9641, y: 9641 }, - { x: 9642, y: 9642 }, - { x: 9643, y: 9643 }, - { x: 9644, y: 9644 }, - { x: 9645, y: 9645 }, - { x: 9646, y: 9646 }, - { x: 9647, y: 9647 }, - { x: 9648, y: 9648 }, - { x: 9649, y: 9649 }, - { x: 9650, y: 9650 }, - { x: 9651, y: 9651 }, - { x: 9652, y: 9652 }, - { x: 9653, y: 9653 }, - { x: 9654, y: 9654 }, - { x: 9655, y: 9655 }, - { x: 9656, y: 9656 }, - { x: 9657, y: 9657 }, - { x: 9658, y: 9658 }, - { x: 9659, y: 9659 }, - { x: 9660, y: 9660 }, - { x: 9661, y: 9661 }, - { x: 9662, y: 9662 }, - { x: 9663, y: 9663 }, - { x: 9664, y: 9664 }, - { x: 9665, y: 9665 }, - { x: 9666, y: 9666 }, - { x: 9667, y: 9667 }, - { x: 9668, y: 9668 }, - { x: 9669, y: 9669 }, - { x: 9670, y: 9670 }, - { x: 9671, y: 9671 }, - { x: 9672, y: 9672 }, - { x: 9673, y: 9673 }, - { x: 9674, y: 9674 }, - { x: 9675, y: 9675 }, - { x: 9676, y: 9676 }, - { x: 9677, y: 9677 }, - { x: 9678, y: 9678 }, - { x: 9679, y: 9679 }, - { x: 9680, y: 9680 }, - { x: 9681, y: 9681 }, - { x: 9682, y: 9682 }, - { x: 9683, y: 9683 }, - { x: 9684, y: 9684 }, - { x: 9685, y: 9685 }, - { x: 9686, y: 9686 }, - { x: 9687, y: 9687 }, - { x: 9688, y: 9688 }, - { x: 9689, y: 9689 }, - { x: 9690, y: 9690 }, - { x: 9691, y: 9691 }, - { x: 9692, y: 9692 }, - { x: 9693, y: 9693 }, - { x: 9694, y: 9694 }, - { x: 9695, y: 9695 }, - { x: 9696, y: 9696 }, - { x: 9697, y: 9697 }, - { x: 9698, y: 9698 }, - { x: 9699, y: 9699 }, - { x: 9700, y: 9700 }, - { x: 9701, y: 9701 }, - { x: 9702, y: 9702 }, - { x: 9703, y: 9703 }, - { x: 9704, y: 9704 }, - { x: 9705, y: 9705 }, - { x: 9706, y: 9706 }, - { x: 9707, y: 9707 }, - { x: 9708, y: 9708 }, - { x: 9709, y: 9709 }, - { x: 9710, y: 9710 }, - { x: 9711, y: 9711 }, - { x: 9712, y: 9712 }, - { x: 9713, y: 9713 }, - { x: 9714, y: 9714 }, - { x: 9715, y: 9715 }, - { x: 9716, y: 9716 }, - { x: 9717, y: 9717 }, - { x: 9718, y: 9718 }, - { x: 9719, y: 9719 }, - { x: 9720, y: 9720 }, - { x: 9721, y: 9721 }, - { x: 9722, y: 9722 }, - { x: 9723, y: 9723 }, - { x: 9724, y: 9724 }, - { x: 9725, y: 9725 }, - { x: 9726, y: 9726 }, - { x: 9727, y: 9727 }, - { x: 9728, y: 9728 }, - { x: 9729, y: 9729 }, - { x: 9730, y: 9730 }, - { x: 9731, y: 9731 }, - { x: 9732, y: 9732 }, - { x: 9733, y: 9733 }, - { x: 9734, y: 9734 }, - { x: 9735, y: 9735 }, - { x: 9736, y: 9736 }, - { x: 9737, y: 9737 }, - { x: 9738, y: 9738 }, - { x: 9739, y: 9739 }, - { x: 9740, y: 9740 }, - { x: 9741, y: 9741 }, - { x: 9742, y: 9742 }, - { x: 9743, y: 9743 }, - { x: 9744, y: 9744 }, - { x: 9745, y: 9745 }, - { x: 9746, y: 9746 }, - { x: 9747, y: 9747 }, - { x: 9748, y: 9748 }, - { x: 9749, y: 9749 }, - { x: 9750, y: 9750 }, - { x: 9751, y: 9751 }, - { x: 9752, y: 9752 }, - { x: 9753, y: 9753 }, - { x: 9754, y: 9754 }, - { x: 9755, y: 9755 }, - { x: 9756, y: 9756 }, - { x: 9757, y: 9757 }, - { x: 9758, y: 9758 }, - { x: 9759, y: 9759 }, - { x: 9760, y: 9760 }, - { x: 9761, y: 9761 }, - { x: 9762, y: 9762 }, - { x: 9763, y: 9763 }, - { x: 9764, y: 9764 }, - { x: 9765, y: 9765 }, - { x: 9766, y: 9766 }, - { x: 9767, y: 9767 }, - { x: 9768, y: 9768 }, - { x: 9769, y: 9769 }, - { x: 9770, y: 9770 }, - { x: 9771, y: 9771 }, - { x: 9772, y: 9772 }, - { x: 9773, y: 9773 }, - { x: 9774, y: 9774 }, - { x: 9775, y: 9775 }, - { x: 9776, y: 9776 }, - { x: 9777, y: 9777 }, - { x: 9778, y: 9778 }, - { x: 9779, y: 9779 }, - { x: 9780, y: 9780 }, - { x: 9781, y: 9781 }, - { x: 9782, y: 9782 }, - { x: 9783, y: 9783 }, - { x: 9784, y: 9784 }, - { x: 9785, y: 9785 }, - { x: 9786, y: 9786 }, - { x: 9787, y: 9787 }, - { x: 9788, y: 9788 }, - { x: 9789, y: 9789 }, - { x: 9790, y: 9790 }, - { x: 9791, y: 9791 }, - { x: 9792, y: 9792 }, - { x: 9793, y: 9793 }, - { x: 9794, y: 9794 }, - { x: 9795, y: 9795 }, - { x: 9796, y: 9796 }, - { x: 9797, y: 9797 }, - { x: 9798, y: 9798 }, - { x: 9799, y: 9799 }, - { x: 9800, y: 9800 }, - { x: 9801, y: 9801 }, - { x: 9802, y: 9802 }, - { x: 9803, y: 9803 }, - { x: 9804, y: 9804 }, - { x: 9805, y: 9805 }, - { x: 9806, y: 9806 }, - { x: 9807, y: 9807 }, - { x: 9808, y: 9808 }, - { x: 9809, y: 9809 }, - { x: 9810, y: 9810 }, - { x: 9811, y: 9811 }, - { x: 9812, y: 9812 }, - { x: 9813, y: 9813 }, - { x: 9814, y: 9814 }, - { x: 9815, y: 9815 }, - { x: 9816, y: 9816 }, - { x: 9817, y: 9817 }, - { x: 9818, y: 9818 }, - { x: 9819, y: 9819 }, - { x: 9820, y: 9820 }, - { x: 9821, y: 9821 }, - { x: 9822, y: 9822 }, - { x: 9823, y: 9823 }, - { x: 9824, y: 9824 }, - { x: 9825, y: 9825 }, - { x: 9826, y: 9826 }, - { x: 9827, y: 9827 }, - { x: 9828, y: 9828 }, - { x: 9829, y: 9829 }, - { x: 9830, y: 9830 }, - { x: 9831, y: 9831 }, - { x: 9832, y: 9832 }, - { x: 9833, y: 9833 }, - { x: 9834, y: 9834 }, - { x: 9835, y: 9835 }, - { x: 9836, y: 9836 }, - { x: 9837, y: 9837 }, - { x: 9838, y: 9838 }, - { x: 9839, y: 9839 }, - { x: 9840, y: 9840 }, - { x: 9841, y: 9841 }, - { x: 9842, y: 9842 }, - { x: 9843, y: 9843 }, - { x: 9844, y: 9844 }, - { x: 9845, y: 9845 }, - { x: 9846, y: 9846 }, - { x: 9847, y: 9847 }, - { x: 9848, y: 9848 }, - { x: 9849, y: 9849 }, - { x: 9850, y: 9850 }, - { x: 9851, y: 9851 }, - { x: 9852, y: 9852 }, - { x: 9853, y: 9853 }, - { x: 9854, y: 9854 }, - { x: 9855, y: 9855 }, - { x: 9856, y: 9856 }, - { x: 9857, y: 9857 }, - { x: 9858, y: 9858 }, - { x: 9859, y: 9859 }, - { x: 9860, y: 9860 }, - { x: 9861, y: 9861 }, - { x: 9862, y: 9862 }, - { x: 9863, y: 9863 }, - { x: 9864, y: 9864 }, - { x: 9865, y: 9865 }, - { x: 9866, y: 9866 }, - { x: 9867, y: 9867 }, - { x: 9868, y: 9868 }, - { x: 9869, y: 9869 }, - { x: 9870, y: 9870 }, - { x: 9871, y: 9871 }, - { x: 9872, y: 9872 }, - { x: 9873, y: 9873 }, - { x: 9874, y: 9874 }, - { x: 9875, y: 9875 }, - { x: 9876, y: 9876 }, - { x: 9877, y: 9877 }, - { x: 9878, y: 9878 }, - { x: 9879, y: 9879 }, - { x: 9880, y: 9880 }, - { x: 9881, y: 9881 }, - { x: 9882, y: 9882 }, - { x: 9883, y: 9883 }, - { x: 9884, y: 9884 }, - { x: 9885, y: 9885 }, - { x: 9886, y: 9886 }, - { x: 9887, y: 9887 }, - { x: 9888, y: 9888 }, - { x: 9889, y: 9889 }, - { x: 9890, y: 9890 }, - { x: 9891, y: 9891 }, - { x: 9892, y: 9892 }, - { x: 9893, y: 9893 }, - { x: 9894, y: 9894 }, - { x: 9895, y: 9895 }, - { x: 9896, y: 9896 }, - { x: 9897, y: 9897 }, - { x: 9898, y: 9898 }, - { x: 9899, y: 9899 }, - { x: 9900, y: 9900 }, - { x: 9901, y: 9901 }, - { x: 9902, y: 9902 }, - { x: 9903, y: 9903 }, - { x: 9904, y: 9904 }, - { x: 9905, y: 9905 }, - { x: 9906, y: 9906 }, - { x: 9907, y: 9907 }, - { x: 9908, y: 9908 }, - { x: 9909, y: 9909 }, - { x: 9910, y: 9910 }, - { x: 9911, y: 9911 }, - { x: 9912, y: 9912 }, - { x: 9913, y: 9913 }, - { x: 9914, y: 9914 }, - { x: 9915, y: 9915 }, - { x: 9916, y: 9916 }, - { x: 9917, y: 9917 }, - { x: 9918, y: 9918 }, - { x: 9919, y: 9919 }, - { x: 9920, y: 9920 }, - { x: 9921, y: 9921 }, - { x: 9922, y: 9922 }, - { x: 9923, y: 9923 }, - { x: 9924, y: 9924 }, - { x: 9925, y: 9925 }, - { x: 9926, y: 9926 }, - { x: 9927, y: 9927 }, - { x: 9928, y: 9928 }, - { x: 9929, y: 9929 }, - { x: 9930, y: 9930 }, - { x: 9931, y: 9931 }, - { x: 9932, y: 9932 }, - { x: 9933, y: 9933 }, - { x: 9934, y: 9934 }, - { x: 9935, y: 9935 }, - { x: 9936, y: 9936 }, - { x: 9937, y: 9937 }, - { x: 9938, y: 9938 }, - { x: 9939, y: 9939 }, - { x: 9940, y: 9940 }, - { x: 9941, y: 9941 }, - { x: 9942, y: 9942 }, - { x: 9943, y: 9943 }, - { x: 9944, y: 9944 }, - { x: 9945, y: 9945 }, - { x: 9946, y: 9946 }, - { x: 9947, y: 9947 }, - { x: 9948, y: 9948 }, - { x: 9949, y: 9949 }, - { x: 9950, y: 9950 }, - { x: 9951, y: 9951 }, - { x: 9952, y: 9952 }, - { x: 9953, y: 9953 }, - { x: 9954, y: 9954 }, - { x: 9955, y: 9955 }, - { x: 9956, y: 9956 }, - { x: 9957, y: 9957 }, - { x: 9958, y: 9958 }, - { x: 9959, y: 9959 }, - { x: 9960, y: 9960 }, - { x: 9961, y: 9961 }, - { x: 9962, y: 9962 }, - { x: 9963, y: 9963 }, - { x: 9964, y: 9964 }, - { x: 9965, y: 9965 }, - { x: 9966, y: 9966 }, - { x: 9967, y: 9967 }, - { x: 9968, y: 9968 }, - { x: 9969, y: 9969 }, - { x: 9970, y: 9970 }, - { x: 9971, y: 9971 }, - { x: 9972, y: 9972 }, - { x: 9973, y: 9973 }, - { x: 9974, y: 9974 }, - { x: 9975, y: 9975 }, - { x: 9976, y: 9976 }, - { x: 9977, y: 9977 }, - { x: 9978, y: 9978 }, - { x: 9979, y: 9979 }, - { x: 9980, y: 9980 }, - { x: 9981, y: 9981 }, - { x: 9982, y: 9982 }, - { x: 9983, y: 9983 }, - { x: 9984, y: 9984 }, - { x: 9985, y: 9985 }, - { x: 9986, y: 9986 }, - { x: 9987, y: 9987 }, - { x: 9988, y: 9988 }, - { x: 9989, y: 9989 }, - { x: 9990, y: 9990 }, - { x: 9991, y: 9991 }, - { x: 9992, y: 9992 }, - { x: 9993, y: 9993 }, - { x: 9994, y: 9994 }, - { x: 9995, y: 9995 }, - { x: 9996, y: 9996 }, - { x: 9997, y: 9997 }, - { x: 9998, y: 9998 }, - { x: 9999, y: 9999 }, - { x: 10000, y: 10000 }, - { x: 10001, y: 10001 }, - { x: 10002, y: 10002 }, - { x: 10003, y: 10003 }, - { x: 10004, y: 10004 }, - { x: 10005, y: 10005 }, - { x: 10006, y: 10006 }, - { x: 10007, y: 10007 }, - { x: 10008, y: 10008 }, - { x: 10009, y: 10009 }, - { x: 10010, y: 10010 }, - { x: 10011, y: 10011 }, - { x: 10012, y: 10012 }, - { x: 10013, y: 10013 }, - { x: 10014, y: 10014 }, - { x: 10015, y: 10015 }, - { x: 10016, y: 10016 }, - { x: 10017, y: 10017 }, - { x: 10018, y: 10018 }, - { x: 10019, y: 10019 }, - { x: 10020, y: 10020 }, - { x: 10021, y: 10021 }, - { x: 10022, y: 10022 }, - { x: 10023, y: 10023 }, - { x: 10024, y: 10024 }, - { x: 10025, y: 10025 }, - { x: 10026, y: 10026 }, - { x: 10027, y: 10027 }, - { x: 10028, y: 10028 }, - { x: 10029, y: 10029 }, - { x: 10030, y: 10030 }, - { x: 10031, y: 10031 }, - { x: 10032, y: 10032 }, - { x: 10033, y: 10033 }, - { x: 10034, y: 10034 }, - { x: 10035, y: 10035 }, - { x: 10036, y: 10036 }, - { x: 10037, y: 10037 }, - { x: 10038, y: 10038 }, - { x: 10039, y: 10039 }, - { x: 10040, y: 10040 }, - { x: 10041, y: 10041 }, - { x: 10042, y: 10042 }, - { x: 10043, y: 10043 }, - { x: 10044, y: 10044 }, - { x: 10045, y: 10045 }, - { x: 10046, y: 10046 }, - { x: 10047, y: 10047 }, - { x: 10048, y: 10048 }, - { x: 10049, y: 10049 }, - { x: 10050, y: 10050 }, - { x: 10051, y: 10051 }, - { x: 10052, y: 10052 }, - { x: 10053, y: 10053 }, - { x: 10054, y: 10054 }, - { x: 10055, y: 10055 }, - { x: 10056, y: 10056 }, - { x: 10057, y: 10057 }, - { x: 10058, y: 10058 }, - { x: 10059, y: 10059 }, - { x: 10060, y: 10060 }, - { x: 10061, y: 10061 }, - { x: 10062, y: 10062 }, - { x: 10063, y: 10063 }, - { x: 10064, y: 10064 }, - { x: 10065, y: 10065 }, - { x: 10066, y: 10066 }, - { x: 10067, y: 10067 }, - { x: 10068, y: 10068 }, - { x: 10069, y: 10069 }, - { x: 10070, y: 10070 }, - { x: 10071, y: 10071 }, - { x: 10072, y: 10072 }, - { x: 10073, y: 10073 }, - { x: 10074, y: 10074 }, - { x: 10075, y: 10075 }, - { x: 10076, y: 10076 }, - { x: 10077, y: 10077 }, - { x: 10078, y: 10078 }, - { x: 10079, y: 10079 }, - { x: 10080, y: 10080 }, - { x: 10081, y: 10081 }, - { x: 10082, y: 10082 }, - { x: 10083, y: 10083 }, - { x: 10084, y: 10084 }, - { x: 10085, y: 10085 }, - { x: 10086, y: 10086 }, - { x: 10087, y: 10087 }, - { x: 10088, y: 10088 }, - { x: 10089, y: 10089 }, - { x: 10090, y: 10090 }, - { x: 10091, y: 10091 }, - { x: 10092, y: 10092 }, - { x: 10093, y: 10093 }, - { x: 10094, y: 10094 }, - { x: 10095, y: 10095 }, - { x: 10096, y: 10096 }, - { x: 10097, y: 10097 }, - { x: 10098, y: 10098 }, - { x: 10099, y: 10099 }, - { x: 10100, y: 10100 }, - { x: 10101, y: 10101 }, - { x: 10102, y: 10102 }, - { x: 10103, y: 10103 }, - { x: 10104, y: 10104 }, - { x: 10105, y: 10105 }, - { x: 10106, y: 10106 }, - { x: 10107, y: 10107 }, - { x: 10108, y: 10108 }, - { x: 10109, y: 10109 }, - { x: 10110, y: 10110 }, - { x: 10111, y: 10111 }, - { x: 10112, y: 10112 }, - { x: 10113, y: 10113 }, - { x: 10114, y: 10114 }, - { x: 10115, y: 10115 }, - { x: 10116, y: 10116 }, - { x: 10117, y: 10117 }, - { x: 10118, y: 10118 }, - { x: 10119, y: 10119 }, - { x: 10120, y: 10120 }, - { x: 10121, y: 10121 }, - { x: 10122, y: 10122 }, - { x: 10123, y: 10123 }, - { x: 10124, y: 10124 }, - { x: 10125, y: 10125 }, - { x: 10126, y: 10126 }, - { x: 10127, y: 10127 }, - { x: 10128, y: 10128 }, - { x: 10129, y: 10129 }, - { x: 10130, y: 10130 }, - { x: 10131, y: 10131 }, - { x: 10132, y: 10132 }, - { x: 10133, y: 10133 }, - { x: 10134, y: 10134 }, - { x: 10135, y: 10135 }, - { x: 10136, y: 10136 }, - { x: 10137, y: 10137 }, - { x: 10138, y: 10138 }, - { x: 10139, y: 10139 }, - { x: 10140, y: 10140 }, - { x: 10141, y: 10141 }, - { x: 10142, y: 10142 }, - { x: 10143, y: 10143 }, - { x: 10144, y: 10144 }, - { x: 10145, y: 10145 }, - { x: 10146, y: 10146 }, - { x: 10147, y: 10147 }, - { x: 10148, y: 10148 }, - { x: 10149, y: 10149 }, - { x: 10150, y: 10150 }, - { x: 10151, y: 10151 }, - { x: 10152, y: 10152 }, - { x: 10153, y: 10153 }, - { x: 10154, y: 10154 }, - { x: 10155, y: 10155 }, - { x: 10156, y: 10156 }, - { x: 10157, y: 10157 }, - { x: 10158, y: 10158 }, - { x: 10159, y: 10159 }, - { x: 10160, y: 10160 }, - { x: 10161, y: 10161 }, - { x: 10162, y: 10162 }, - { x: 10163, y: 10163 }, - { x: 10164, y: 10164 }, - { x: 10165, y: 10165 }, - { x: 10166, y: 10166 }, - { x: 10167, y: 10167 }, - { x: 10168, y: 10168 }, - { x: 10169, y: 10169 }, - { x: 10170, y: 10170 }, - { x: 10171, y: 10171 }, - { x: 10172, y: 10172 }, - { x: 10173, y: 10173 }, - { x: 10174, y: 10174 }, - { x: 10175, y: 10175 }, - { x: 10176, y: 10176 }, - { x: 10177, y: 10177 }, - { x: 10178, y: 10178 }, - { x: 10179, y: 10179 }, - { x: 10180, y: 10180 }, - { x: 10181, y: 10181 }, - { x: 10182, y: 10182 }, - { x: 10183, y: 10183 }, - { x: 10184, y: 10184 }, - { x: 10185, y: 10185 }, - { x: 10186, y: 10186 }, - { x: 10187, y: 10187 }, - { x: 10188, y: 10188 }, - { x: 10189, y: 10189 }, - { x: 10190, y: 10190 }, - { x: 10191, y: 10191 }, - { x: 10192, y: 10192 }, - { x: 10193, y: 10193 }, - { x: 10194, y: 10194 }, - { x: 10195, y: 10195 }, - { x: 10196, y: 10196 }, - { x: 10197, y: 10197 }, - { x: 10198, y: 10198 }, - { x: 10199, y: 10199 }, - { x: 10200, y: 10200 }, - { x: 10201, y: 10201 }, - { x: 10202, y: 10202 }, - { x: 10203, y: 10203 }, - { x: 10204, y: 10204 }, - { x: 10205, y: 10205 }, - { x: 10206, y: 10206 }, - { x: 10207, y: 10207 }, - { x: 10208, y: 10208 }, - { x: 10209, y: 10209 }, - { x: 10210, y: 10210 }, - { x: 10211, y: 10211 }, - { x: 10212, y: 10212 }, - { x: 10213, y: 10213 }, - { x: 10214, y: 10214 }, - { x: 10215, y: 10215 }, - { x: 10216, y: 10216 }, - { x: 10217, y: 10217 }, - { x: 10218, y: 10218 }, - { x: 10219, y: 10219 }, - { x: 10220, y: 10220 }, - { x: 10221, y: 10221 }, - { x: 10222, y: 10222 }, - { x: 10223, y: 10223 }, - { x: 10224, y: 10224 }, - { x: 10225, y: 10225 }, - { x: 10226, y: 10226 }, - { x: 10227, y: 10227 }, - { x: 10228, y: 10228 }, - { x: 10229, y: 10229 }, - { x: 10230, y: 10230 }, - { x: 10231, y: 10231 }, - { x: 10232, y: 10232 }, - { x: 10233, y: 10233 }, - { x: 10234, y: 10234 }, - { x: 10235, y: 10235 }, - { x: 10236, y: 10236 }, - { x: 10237, y: 10237 }, - { x: 10238, y: 10238 }, - { x: 10239, y: 10239 }, - { x: 10240, y: 10240 }, - { x: 10241, y: 10241 }, - { x: 10242, y: 10242 }, - { x: 10243, y: 10243 }, - { x: 10244, y: 10244 }, - { x: 10245, y: 10245 }, - { x: 10246, y: 10246 }, - { x: 10247, y: 10247 }, - { x: 10248, y: 10248 }, - { x: 10249, y: 10249 }, - { x: 10250, y: 10250 }, - { x: 10251, y: 10251 }, - { x: 10252, y: 10252 }, - { x: 10253, y: 10253 }, - { x: 10254, y: 10254 }, - { x: 10255, y: 10255 }, - { x: 10256, y: 10256 }, - { x: 10257, y: 10257 }, - { x: 10258, y: 10258 }, - { x: 10259, y: 10259 }, - { x: 10260, y: 10260 }, - { x: 10261, y: 10261 }, - { x: 10262, y: 10262 }, - { x: 10263, y: 10263 }, - { x: 10264, y: 10264 }, - { x: 10265, y: 10265 }, - { x: 10266, y: 10266 }, - { x: 10267, y: 10267 }, - { x: 10268, y: 10268 }, - { x: 10269, y: 10269 }, - { x: 10270, y: 10270 }, - { x: 10271, y: 10271 }, - { x: 10272, y: 10272 }, - { x: 10273, y: 10273 }, - { x: 10274, y: 10274 }, - { x: 10275, y: 10275 }, - { x: 10276, y: 10276 }, - { x: 10277, y: 10277 }, - { x: 10278, y: 10278 }, - { x: 10279, y: 10279 }, - { x: 10280, y: 10280 }, - { x: 10281, y: 10281 }, - { x: 10282, y: 10282 }, - { x: 10283, y: 10283 }, - { x: 10284, y: 10284 }, - { x: 10285, y: 10285 }, - { x: 10286, y: 10286 }, - { x: 10287, y: 10287 }, - { x: 10288, y: 10288 }, - { x: 10289, y: 10289 }, - { x: 10290, y: 10290 }, - { x: 10291, y: 10291 }, - { x: 10292, y: 10292 }, - { x: 10293, y: 10293 }, - { x: 10294, y: 10294 }, - { x: 10295, y: 10295 }, - { x: 10296, y: 10296 }, - { x: 10297, y: 10297 }, - { x: 10298, y: 10298 }, - { x: 10299, y: 10299 }, - { x: 10300, y: 10300 }, - { x: 10301, y: 10301 }, - { x: 10302, y: 10302 }, - { x: 10303, y: 10303 }, - { x: 10304, y: 10304 }, - { x: 10305, y: 10305 }, - { x: 10306, y: 10306 }, - { x: 10307, y: 10307 }, - { x: 10308, y: 10308 }, - { x: 10309, y: 10309 }, - { x: 10310, y: 10310 }, - { x: 10311, y: 10311 }, - { x: 10312, y: 10312 }, - { x: 10313, y: 10313 }, - { x: 10314, y: 10314 }, - { x: 10315, y: 10315 }, - { x: 10316, y: 10316 }, - { x: 10317, y: 10317 }, - { x: 10318, y: 10318 }, - { x: 10319, y: 10319 }, - { x: 10320, y: 10320 }, - { x: 10321, y: 10321 }, - { x: 10322, y: 10322 }, - { x: 10323, y: 10323 }, - { x: 10324, y: 10324 }, - { x: 10325, y: 10325 }, - { x: 10326, y: 10326 }, - { x: 10327, y: 10327 }, - { x: 10328, y: 10328 }, - { x: 10329, y: 10329 }, - { x: 10330, y: 10330 }, - { x: 10331, y: 10331 }, - { x: 10332, y: 10332 }, - { x: 10333, y: 10333 }, - { x: 10334, y: 10334 }, - { x: 10335, y: 10335 }, - { x: 10336, y: 10336 }, - { x: 10337, y: 10337 }, - { x: 10338, y: 10338 }, - { x: 10339, y: 10339 }, - { x: 10340, y: 10340 }, - { x: 10341, y: 10341 }, - { x: 10342, y: 10342 }, - { x: 10343, y: 10343 }, - { x: 10344, y: 10344 }, - { x: 10345, y: 10345 }, - { x: 10346, y: 10346 }, - { x: 10347, y: 10347 }, - { x: 10348, y: 10348 }, - { x: 10349, y: 10349 }, - { x: 10350, y: 10350 }, - { x: 10351, y: 10351 }, - { x: 10352, y: 10352 }, - { x: 10353, y: 10353 }, - { x: 10354, y: 10354 }, - { x: 10355, y: 10355 }, - { x: 10356, y: 10356 }, - { x: 10357, y: 10357 }, - { x: 10358, y: 10358 }, - { x: 10359, y: 10359 }, - { x: 10360, y: 10360 }, - { x: 10361, y: 10361 }, - { x: 10362, y: 10362 }, - { x: 10363, y: 10363 }, - { x: 10364, y: 10364 }, - { x: 10365, y: 10365 }, - { x: 10366, y: 10366 }, - { x: 10367, y: 10367 }, - { x: 10368, y: 10368 }, - { x: 10369, y: 10369 }, - { x: 10370, y: 10370 }, - { x: 10371, y: 10371 }, - { x: 10372, y: 10372 }, - { x: 10373, y: 10373 }, - { x: 10374, y: 10374 }, - { x: 10375, y: 10375 }, - { x: 10376, y: 10376 }, - { x: 10377, y: 10377 }, - { x: 10378, y: 10378 }, - { x: 10379, y: 10379 }, - { x: 10380, y: 10380 }, - { x: 10381, y: 10381 }, - { x: 10382, y: 10382 }, - { x: 10383, y: 10383 }, - { x: 10384, y: 10384 }, - { x: 10385, y: 10385 }, - { x: 10386, y: 10386 }, - { x: 10387, y: 10387 }, - { x: 10388, y: 10388 }, - { x: 10389, y: 10389 }, - { x: 10390, y: 10390 }, - { x: 10391, y: 10391 }, - { x: 10392, y: 10392 }, - { x: 10393, y: 10393 }, - { x: 10394, y: 10394 }, - { x: 10395, y: 10395 }, - { x: 10396, y: 10396 }, - { x: 10397, y: 10397 }, - { x: 10398, y: 10398 }, - { x: 10399, y: 10399 }, - { x: 10400, y: 10400 }, - { x: 10401, y: 10401 }, - { x: 10402, y: 10402 }, - { x: 10403, y: 10403 }, - { x: 10404, y: 10404 }, - { x: 10405, y: 10405 }, - { x: 10406, y: 10406 }, - { x: 10407, y: 10407 }, - { x: 10408, y: 10408 }, - { x: 10409, y: 10409 }, - { x: 10410, y: 10410 }, - { x: 10411, y: 10411 }, - { x: 10412, y: 10412 }, - { x: 10413, y: 10413 }, - { x: 10414, y: 10414 }, - { x: 10415, y: 10415 }, - { x: 10416, y: 10416 }, - { x: 10417, y: 10417 }, - { x: 10418, y: 10418 }, - { x: 10419, y: 10419 }, - { x: 10420, y: 10420 }, - { x: 10421, y: 10421 }, - { x: 10422, y: 10422 }, - { x: 10423, y: 10423 }, - { x: 10424, y: 10424 }, - { x: 10425, y: 10425 }, - { x: 10426, y: 10426 }, - { x: 10427, y: 10427 }, - { x: 10428, y: 10428 }, - { x: 10429, y: 10429 }, - { x: 10430, y: 10430 }, - { x: 10431, y: 10431 }, - { x: 10432, y: 10432 }, - { x: 10433, y: 10433 }, - { x: 10434, y: 10434 }, - { x: 10435, y: 10435 }, - { x: 10436, y: 10436 }, - { x: 10437, y: 10437 }, - { x: 10438, y: 10438 }, - { x: 10439, y: 10439 }, - { x: 10440, y: 10440 }, - { x: 10441, y: 10441 }, - { x: 10442, y: 10442 }, - { x: 10443, y: 10443 }, - { x: 10444, y: 10444 }, - { x: 10445, y: 10445 }, - { x: 10446, y: 10446 }, - { x: 10447, y: 10447 }, - { x: 10448, y: 10448 }, - { x: 10449, y: 10449 }, - { x: 10450, y: 10450 }, - { x: 10451, y: 10451 }, - { x: 10452, y: 10452 }, - { x: 10453, y: 10453 }, - { x: 10454, y: 10454 }, - { x: 10455, y: 10455 }, - { x: 10456, y: 10456 }, - { x: 10457, y: 10457 }, - { x: 10458, y: 10458 }, - { x: 10459, y: 10459 }, - { x: 10460, y: 10460 }, - { x: 10461, y: 10461 }, - { x: 10462, y: 10462 }, - { x: 10463, y: 10463 }, - { x: 10464, y: 10464 }, - { x: 10465, y: 10465 }, - { x: 10466, y: 10466 }, - { x: 10467, y: 10467 }, - { x: 10468, y: 10468 }, - { x: 10469, y: 10469 }, - { x: 10470, y: 10470 }, - { x: 10471, y: 10471 }, - { x: 10472, y: 10472 }, - { x: 10473, y: 10473 }, - { x: 10474, y: 10474 }, - { x: 10475, y: 10475 }, - { x: 10476, y: 10476 }, - { x: 10477, y: 10477 }, - { x: 10478, y: 10478 }, - { x: 10479, y: 10479 }, - { x: 10480, y: 10480 }, - { x: 10481, y: 10481 }, - { x: 10482, y: 10482 }, - { x: 10483, y: 10483 }, - { x: 10484, y: 10484 }, - { x: 10485, y: 10485 }, - { x: 10486, y: 10486 }, - { x: 10487, y: 10487 }, - { x: 10488, y: 10488 }, - { x: 10489, y: 10489 }, - { x: 10490, y: 10490 }, - { x: 10491, y: 10491 }, - { x: 10492, y: 10492 }, - { x: 10493, y: 10493 }, - { x: 10494, y: 10494 }, - { x: 10495, y: 10495 }, - { x: 10496, y: 10496 }, - { x: 10497, y: 10497 }, - { x: 10498, y: 10498 }, - { x: 10499, y: 10499 }, - { x: 10500, y: 10500 }, - { x: 10501, y: 10501 }, - { x: 10502, y: 10502 }, - { x: 10503, y: 10503 }, - { x: 10504, y: 10504 }, - { x: 10505, y: 10505 }, - { x: 10506, y: 10506 }, - { x: 10507, y: 10507 }, - { x: 10508, y: 10508 }, - { x: 10509, y: 10509 }, - { x: 10510, y: 10510 }, - { x: 10511, y: 10511 }, - { x: 10512, y: 10512 }, - { x: 10513, y: 10513 }, - { x: 10514, y: 10514 }, - { x: 10515, y: 10515 }, - { x: 10516, y: 10516 }, - { x: 10517, y: 10517 }, - { x: 10518, y: 10518 }, - { x: 10519, y: 10519 }, - { x: 10520, y: 10520 }, - { x: 10521, y: 10521 }, - { x: 10522, y: 10522 }, - { x: 10523, y: 10523 }, - { x: 10524, y: 10524 }, - { x: 10525, y: 10525 }, - { x: 10526, y: 10526 }, - { x: 10527, y: 10527 }, - { x: 10528, y: 10528 }, - { x: 10529, y: 10529 }, - { x: 10530, y: 10530 }, - { x: 10531, y: 10531 }, - { x: 10532, y: 10532 }, - { x: 10533, y: 10533 }, - { x: 10534, y: 10534 }, - { x: 10535, y: 10535 }, - { x: 10536, y: 10536 }, - { x: 10537, y: 10537 }, - { x: 10538, y: 10538 }, - { x: 10539, y: 10539 }, - { x: 10540, y: 10540 }, - { x: 10541, y: 10541 }, - { x: 10542, y: 10542 }, - { x: 10543, y: 10543 }, - { x: 10544, y: 10544 }, - { x: 10545, y: 10545 }, - { x: 10546, y: 10546 }, - { x: 10547, y: 10547 }, - { x: 10548, y: 10548 }, - { x: 10549, y: 10549 }, - { x: 10550, y: 10550 }, - { x: 10551, y: 10551 }, - { x: 10552, y: 10552 }, - { x: 10553, y: 10553 }, - { x: 10554, y: 10554 }, - { x: 10555, y: 10555 }, - { x: 10556, y: 10556 }, - { x: 10557, y: 10557 }, - { x: 10558, y: 10558 }, - { x: 10559, y: 10559 }, - { x: 10560, y: 10560 }, - { x: 10561, y: 10561 }, - { x: 10562, y: 10562 }, - { x: 10563, y: 10563 }, - { x: 10564, y: 10564 }, - { x: 10565, y: 10565 }, - { x: 10566, y: 10566 }, - { x: 10567, y: 10567 }, - { x: 10568, y: 10568 }, - { x: 10569, y: 10569 }, - { x: 10570, y: 10570 }, - { x: 10571, y: 10571 }, - { x: 10572, y: 10572 }, - { x: 10573, y: 10573 }, - { x: 10574, y: 10574 }, - { x: 10575, y: 10575 }, - { x: 10576, y: 10576 }, - { x: 10577, y: 10577 }, - { x: 10578, y: 10578 }, - { x: 10579, y: 10579 }, - { x: 10580, y: 10580 }, - { x: 10581, y: 10581 }, - { x: 10582, y: 10582 }, - { x: 10583, y: 10583 }, - { x: 10584, y: 10584 }, - { x: 10585, y: 10585 }, - { x: 10586, y: 10586 }, - { x: 10587, y: 10587 }, - { x: 10588, y: 10588 }, - { x: 10589, y: 10589 }, - { x: 10590, y: 10590 }, - { x: 10591, y: 10591 }, - { x: 10592, y: 10592 }, - { x: 10593, y: 10593 }, - { x: 10594, y: 10594 }, - { x: 10595, y: 10595 }, - { x: 10596, y: 10596 }, - { x: 10597, y: 10597 }, - { x: 10598, y: 10598 }, - { x: 10599, y: 10599 }, - { x: 10600, y: 10600 }, - { x: 10601, y: 10601 }, - { x: 10602, y: 10602 }, - { x: 10603, y: 10603 }, - { x: 10604, y: 10604 }, - { x: 10605, y: 10605 }, - { x: 10606, y: 10606 }, - { x: 10607, y: 10607 }, - { x: 10608, y: 10608 }, - { x: 10609, y: 10609 }, - { x: 10610, y: 10610 }, - { x: 10611, y: 10611 }, - { x: 10612, y: 10612 }, - { x: 10613, y: 10613 }, - { x: 10614, y: 10614 }, - { x: 10615, y: 10615 }, - { x: 10616, y: 10616 }, - { x: 10617, y: 10617 }, - { x: 10618, y: 10618 }, - { x: 10619, y: 10619 }, - { x: 10620, y: 10620 }, - { x: 10621, y: 10621 }, - { x: 10622, y: 10622 }, - { x: 10623, y: 10623 }, - { x: 10624, y: 10624 }, - { x: 10625, y: 10625 }, - { x: 10626, y: 10626 }, - { x: 10627, y: 10627 }, - { x: 10628, y: 10628 }, - { x: 10629, y: 10629 }, - { x: 10630, y: 10630 }, - { x: 10631, y: 10631 }, - { x: 10632, y: 10632 }, - { x: 10633, y: 10633 }, - { x: 10634, y: 10634 }, - { x: 10635, y: 10635 }, - { x: 10636, y: 10636 }, - { x: 10637, y: 10637 }, - { x: 10638, y: 10638 }, - { x: 10639, y: 10639 }, - { x: 10640, y: 10640 }, - { x: 10641, y: 10641 }, - { x: 10642, y: 10642 }, - { x: 10643, y: 10643 }, - { x: 10644, y: 10644 }, - { x: 10645, y: 10645 }, - { x: 10646, y: 10646 }, - { x: 10647, y: 10647 }, - { x: 10648, y: 10648 }, - { x: 10649, y: 10649 }, - { x: 10650, y: 10650 }, - { x: 10651, y: 10651 }, - { x: 10652, y: 10652 }, - { x: 10653, y: 10653 }, - { x: 10654, y: 10654 }, - { x: 10655, y: 10655 }, - { x: 10656, y: 10656 }, - { x: 10657, y: 10657 }, - { x: 10658, y: 10658 }, - { x: 10659, y: 10659 }, - { x: 10660, y: 10660 }, - { x: 10661, y: 10661 }, - { x: 10662, y: 10662 }, - { x: 10663, y: 10663 }, - { x: 10664, y: 10664 }, - { x: 10665, y: 10665 }, - { x: 10666, y: 10666 }, - { x: 10667, y: 10667 }, - { x: 10668, y: 10668 }, - { x: 10669, y: 10669 }, - { x: 10670, y: 10670 }, - { x: 10671, y: 10671 }, - { x: 10672, y: 10672 }, - { x: 10673, y: 10673 }, - { x: 10674, y: 10674 }, - { x: 10675, y: 10675 }, - { x: 10676, y: 10676 }, - { x: 10677, y: 10677 }, - { x: 10678, y: 10678 }, - { x: 10679, y: 10679 }, - { x: 10680, y: 10680 }, - { x: 10681, y: 10681 }, - { x: 10682, y: 10682 }, - { x: 10683, y: 10683 }, - { x: 10684, y: 10684 }, - { x: 10685, y: 10685 }, - { x: 10686, y: 10686 }, - { x: 10687, y: 10687 }, - { x: 10688, y: 10688 }, - { x: 10689, y: 10689 }, - { x: 10690, y: 10690 }, - { x: 10691, y: 10691 }, - { x: 10692, y: 10692 }, - { x: 10693, y: 10693 }, - { x: 10694, y: 10694 }, - { x: 10695, y: 10695 }, - { x: 10696, y: 10696 }, - { x: 10697, y: 10697 }, - { x: 10698, y: 10698 }, - { x: 10699, y: 10699 }, - { x: 10700, y: 10700 }, - { x: 10701, y: 10701 }, - { x: 10702, y: 10702 }, - { x: 10703, y: 10703 }, - { x: 10704, y: 10704 }, - { x: 10705, y: 10705 }, - { x: 10706, y: 10706 }, - { x: 10707, y: 10707 }, - { x: 10708, y: 10708 }, - { x: 10709, y: 10709 }, - { x: 10710, y: 10710 }, - { x: 10711, y: 10711 }, - { x: 10712, y: 10712 }, - { x: 10713, y: 10713 }, - { x: 10714, y: 10714 }, - { x: 10715, y: 10715 }, - { x: 10716, y: 10716 }, - { x: 10717, y: 10717 }, - { x: 10718, y: 10718 }, - { x: 10719, y: 10719 }, - { x: 10720, y: 10720 }, - { x: 10721, y: 10721 }, - { x: 10722, y: 10722 }, - { x: 10723, y: 10723 }, - { x: 10724, y: 10724 }, - { x: 10725, y: 10725 }, - { x: 10726, y: 10726 }, - { x: 10727, y: 10727 }, - { x: 10728, y: 10728 }, - { x: 10729, y: 10729 }, - { x: 10730, y: 10730 }, - { x: 10731, y: 10731 }, - { x: 10732, y: 10732 }, - { x: 10733, y: 10733 }, - { x: 10734, y: 10734 }, - { x: 10735, y: 10735 }, - { x: 10736, y: 10736 }, - { x: 10737, y: 10737 }, - { x: 10738, y: 10738 }, - { x: 10739, y: 10739 }, - { x: 10740, y: 10740 }, - { x: 10741, y: 10741 }, - { x: 10742, y: 10742 }, - { x: 10743, y: 10743 }, - { x: 10744, y: 10744 }, - { x: 10745, y: 10745 }, - { x: 10746, y: 10746 }, - { x: 10747, y: 10747 }, - { x: 10748, y: 10748 }, - { x: 10749, y: 10749 }, - { x: 10750, y: 10750 }, - { x: 10751, y: 10751 }, - { x: 10752, y: 10752 }, - { x: 10753, y: 10753 }, - { x: 10754, y: 10754 }, - { x: 10755, y: 10755 }, - { x: 10756, y: 10756 }, - { x: 10757, y: 10757 }, - { x: 10758, y: 10758 }, - { x: 10759, y: 10759 }, - { x: 10760, y: 10760 }, - { x: 10761, y: 10761 }, - { x: 10762, y: 10762 }, - { x: 10763, y: 10763 }, - { x: 10764, y: 10764 }, - { x: 10765, y: 10765 }, - { x: 10766, y: 10766 }, - { x: 10767, y: 10767 }, - { x: 10768, y: 10768 }, - { x: 10769, y: 10769 }, - { x: 10770, y: 10770 }, - { x: 10771, y: 10771 }, - { x: 10772, y: 10772 }, - { x: 10773, y: 10773 }, - { x: 10774, y: 10774 }, - { x: 10775, y: 10775 }, - { x: 10776, y: 10776 }, - { x: 10777, y: 10777 }, - { x: 10778, y: 10778 }, - { x: 10779, y: 10779 }, - { x: 10780, y: 10780 }, - { x: 10781, y: 10781 }, - { x: 10782, y: 10782 }, - { x: 10783, y: 10783 }, - { x: 10784, y: 10784 }, - { x: 10785, y: 10785 }, - { x: 10786, y: 10786 }, - { x: 10787, y: 10787 }, - { x: 10788, y: 10788 }, - { x: 10789, y: 10789 }, - { x: 10790, y: 10790 }, - { x: 10791, y: 10791 }, - { x: 10792, y: 10792 }, - { x: 10793, y: 10793 }, - { x: 10794, y: 10794 }, - { x: 10795, y: 10795 }, - { x: 10796, y: 10796 }, - { x: 10797, y: 10797 }, - { x: 10798, y: 10798 }, - { x: 10799, y: 10799 }, - { x: 10800, y: 10800 }, - { x: 10801, y: 10801 }, - { x: 10802, y: 10802 }, - { x: 10803, y: 10803 }, - { x: 10804, y: 10804 }, - { x: 10805, y: 10805 }, - { x: 10806, y: 10806 }, - { x: 10807, y: 10807 }, - { x: 10808, y: 10808 }, - { x: 10809, y: 10809 }, - { x: 10810, y: 10810 }, - { x: 10811, y: 10811 }, - { x: 10812, y: 10812 }, - { x: 10813, y: 10813 }, - { x: 10814, y: 10814 }, - { x: 10815, y: 10815 }, - { x: 10816, y: 10816 }, - { x: 10817, y: 10817 }, - { x: 10818, y: 10818 }, - { x: 10819, y: 10819 }, - { x: 10820, y: 10820 }, - { x: 10821, y: 10821 }, - { x: 10822, y: 10822 }, - { x: 10823, y: 10823 }, - { x: 10824, y: 10824 }, - { x: 10825, y: 10825 }, - { x: 10826, y: 10826 }, - { x: 10827, y: 10827 }, - { x: 10828, y: 10828 }, - { x: 10829, y: 10829 }, - { x: 10830, y: 10830 }, - { x: 10831, y: 10831 }, - { x: 10832, y: 10832 }, - { x: 10833, y: 10833 }, - { x: 10834, y: 10834 }, - { x: 10835, y: 10835 }, - { x: 10836, y: 10836 }, - { x: 10837, y: 10837 }, - { x: 10838, y: 10838 }, - { x: 10839, y: 10839 }, - { x: 10840, y: 10840 }, - { x: 10841, y: 10841 }, - { x: 10842, y: 10842 }, - { x: 10843, y: 10843 }, - { x: 10844, y: 10844 }, - { x: 10845, y: 10845 }, - { x: 10846, y: 10846 }, - { x: 10847, y: 10847 }, - { x: 10848, y: 10848 }, - { x: 10849, y: 10849 }, - { x: 10850, y: 10850 }, - { x: 10851, y: 10851 }, - { x: 10852, y: 10852 }, - { x: 10853, y: 10853 }, - { x: 10854, y: 10854 }, - { x: 10855, y: 10855 }, - { x: 10856, y: 10856 }, - { x: 10857, y: 10857 }, - { x: 10858, y: 10858 }, - { x: 10859, y: 10859 }, - { x: 10860, y: 10860 }, - { x: 10861, y: 10861 }, - { x: 10862, y: 10862 }, - { x: 10863, y: 10863 }, - { x: 10864, y: 10864 }, - { x: 10865, y: 10865 }, - { x: 10866, y: 10866 }, - { x: 10867, y: 10867 }, - { x: 10868, y: 10868 }, - { x: 10869, y: 10869 }, - { x: 10870, y: 10870 }, - { x: 10871, y: 10871 }, - { x: 10872, y: 10872 }, - { x: 10873, y: 10873 }, - { x: 10874, y: 10874 }, - { x: 10875, y: 10875 }, - { x: 10876, y: 10876 }, - { x: 10877, y: 10877 }, - { x: 10878, y: 10878 }, - { x: 10879, y: 10879 }, - { x: 10880, y: 10880 }, - { x: 10881, y: 10881 }, - { x: 10882, y: 10882 }, - { x: 10883, y: 10883 }, - { x: 10884, y: 10884 }, - { x: 10885, y: 10885 }, - { x: 10886, y: 10886 }, - { x: 10887, y: 10887 }, - { x: 10888, y: 10888 }, - { x: 10889, y: 10889 }, - { x: 10890, y: 10890 }, - { x: 10891, y: 10891 }, - { x: 10892, y: 10892 }, - { x: 10893, y: 10893 }, - { x: 10894, y: 10894 }, - { x: 10895, y: 10895 }, - { x: 10896, y: 10896 }, - { x: 10897, y: 10897 }, - { x: 10898, y: 10898 }, - { x: 10899, y: 10899 }, - { x: 10900, y: 10900 }, - { x: 10901, y: 10901 }, - { x: 10902, y: 10902 }, - { x: 10903, y: 10903 }, - { x: 10904, y: 10904 }, - { x: 10905, y: 10905 }, - { x: 10906, y: 10906 }, - { x: 10907, y: 10907 }, - { x: 10908, y: 10908 }, - { x: 10909, y: 10909 }, - { x: 10910, y: 10910 }, - { x: 10911, y: 10911 }, - { x: 10912, y: 10912 }, - { x: 10913, y: 10913 }, - { x: 10914, y: 10914 }, - { x: 10915, y: 10915 }, - { x: 10916, y: 10916 }, - { x: 10917, y: 10917 }, - { x: 10918, y: 10918 }, - { x: 10919, y: 10919 }, - { x: 10920, y: 10920 }, - { x: 10921, y: 10921 }, - { x: 10922, y: 10922 }, - { x: 10923, y: 10923 }, - { x: 10924, y: 10924 }, - { x: 10925, y: 10925 }, - { x: 10926, y: 10926 }, - { x: 10927, y: 10927 }, - { x: 10928, y: 10928 }, - { x: 10929, y: 10929 }, - { x: 10930, y: 10930 }, - { x: 10931, y: 10931 }, - { x: 10932, y: 10932 }, - { x: 10933, y: 10933 }, - { x: 10934, y: 10934 }, - { x: 10935, y: 10935 }, - { x: 10936, y: 10936 }, - { x: 10937, y: 10937 }, - { x: 10938, y: 10938 }, - { x: 10939, y: 10939 }, - { x: 10940, y: 10940 }, - { x: 10941, y: 10941 }, - { x: 10942, y: 10942 }, - { x: 10943, y: 10943 }, - { x: 10944, y: 10944 }, - { x: 10945, y: 10945 }, - { x: 10946, y: 10946 }, - { x: 10947, y: 10947 }, - { x: 10948, y: 10948 }, - { x: 10949, y: 10949 }, - { x: 10950, y: 10950 }, - { x: 10951, y: 10951 }, - { x: 10952, y: 10952 }, - { x: 10953, y: 10953 }, - { x: 10954, y: 10954 }, - { x: 10955, y: 10955 }, - { x: 10956, y: 10956 }, - { x: 10957, y: 10957 }, - { x: 10958, y: 10958 }, - { x: 10959, y: 10959 }, - { x: 10960, y: 10960 }, - { x: 10961, y: 10961 }, - { x: 10962, y: 10962 }, - { x: 10963, y: 10963 }, - { x: 10964, y: 10964 }, - { x: 10965, y: 10965 }, - { x: 10966, y: 10966 }, - { x: 10967, y: 10967 }, - { x: 10968, y: 10968 }, - { x: 10969, y: 10969 }, - { x: 10970, y: 10970 }, - { x: 10971, y: 10971 }, - { x: 10972, y: 10972 }, - { x: 10973, y: 10973 }, - { x: 10974, y: 10974 }, - { x: 10975, y: 10975 }, - { x: 10976, y: 10976 }, - { x: 10977, y: 10977 }, - { x: 10978, y: 10978 }, - { x: 10979, y: 10979 }, - { x: 10980, y: 10980 }, - { x: 10981, y: 10981 }, - { x: 10982, y: 10982 }, - { x: 10983, y: 10983 }, - { x: 10984, y: 10984 }, - { x: 10985, y: 10985 }, - { x: 10986, y: 10986 }, - { x: 10987, y: 10987 }, - { x: 10988, y: 10988 }, - { x: 10989, y: 10989 }, - { x: 10990, y: 10990 }, - { x: 10991, y: 10991 }, - { x: 10992, y: 10992 }, - { x: 10993, y: 10993 }, - { x: 10994, y: 10994 }, - { x: 10995, y: 10995 }, - { x: 10996, y: 10996 }, - { x: 10997, y: 10997 }, - { x: 10998, y: 10998 }, - { x: 10999, y: 10999 }, - { x: 11000, y: 11000 }, - { x: 11001, y: 11001 }, - { x: 11002, y: 11002 }, - { x: 11003, y: 11003 }, - { x: 11004, y: 11004 }, - { x: 11005, y: 11005 }, - { x: 11006, y: 11006 }, - { x: 11007, y: 11007 }, - { x: 11008, y: 11008 }, - { x: 11009, y: 11009 }, - { x: 11010, y: 11010 }, - { x: 11011, y: 11011 }, - { x: 11012, y: 11012 }, - { x: 11013, y: 11013 }, - { x: 11014, y: 11014 }, - { x: 11015, y: 11015 }, - { x: 11016, y: 11016 }, - { x: 11017, y: 11017 }, - { x: 11018, y: 11018 }, - { x: 11019, y: 11019 }, - { x: 11020, y: 11020 }, - { x: 11021, y: 11021 }, - { x: 11022, y: 11022 }, - { x: 11023, y: 11023 }, - { x: 11024, y: 11024 }, - { x: 11025, y: 11025 }, - { x: 11026, y: 11026 }, - { x: 11027, y: 11027 }, - { x: 11028, y: 11028 }, - { x: 11029, y: 11029 }, - { x: 11030, y: 11030 }, - { x: 11031, y: 11031 }, - { x: 11032, y: 11032 }, - { x: 11033, y: 11033 }, - { x: 11034, y: 11034 }, - { x: 11035, y: 11035 }, - { x: 11036, y: 11036 }, - { x: 11037, y: 11037 }, - { x: 11038, y: 11038 }, - { x: 11039, y: 11039 }, - { x: 11040, y: 11040 }, - { x: 11041, y: 11041 }, - { x: 11042, y: 11042 }, - { x: 11043, y: 11043 }, - { x: 11044, y: 11044 }, - { x: 11045, y: 11045 }, - { x: 11046, y: 11046 }, - { x: 11047, y: 11047 }, - { x: 11048, y: 11048 }, - { x: 11049, y: 11049 }, - { x: 11050, y: 11050 }, - { x: 11051, y: 11051 }, - { x: 11052, y: 11052 }, - { x: 11053, y: 11053 }, - { x: 11054, y: 11054 }, - { x: 11055, y: 11055 }, - { x: 11056, y: 11056 }, - { x: 11057, y: 11057 }, - { x: 11058, y: 11058 }, - { x: 11059, y: 11059 }, - { x: 11060, y: 11060 }, - { x: 11061, y: 11061 }, - { x: 11062, y: 11062 }, - { x: 11063, y: 11063 }, - { x: 11064, y: 11064 }, - { x: 11065, y: 11065 }, - { x: 11066, y: 11066 }, - { x: 11067, y: 11067 }, - { x: 11068, y: 11068 }, - { x: 11069, y: 11069 }, - { x: 11070, y: 11070 }, - { x: 11071, y: 11071 }, - { x: 11072, y: 11072 }, - { x: 11073, y: 11073 }, - { x: 11074, y: 11074 }, - { x: 11075, y: 11075 }, - { x: 11076, y: 11076 }, - { x: 11077, y: 11077 }, - { x: 11078, y: 11078 }, - { x: 11079, y: 11079 }, - { x: 11080, y: 11080 }, - { x: 11081, y: 11081 }, - { x: 11082, y: 11082 }, - { x: 11083, y: 11083 }, - { x: 11084, y: 11084 }, - { x: 11085, y: 11085 }, - { x: 11086, y: 11086 }, - { x: 11087, y: 11087 }, - { x: 11088, y: 11088 }, - { x: 11089, y: 11089 }, - { x: 11090, y: 11090 }, - { x: 11091, y: 11091 }, - { x: 11092, y: 11092 }, - { x: 11093, y: 11093 }, - { x: 11094, y: 11094 }, - { x: 11095, y: 11095 }, - { x: 11096, y: 11096 }, - { x: 11097, y: 11097 }, - { x: 11098, y: 11098 }, - { x: 11099, y: 11099 }, - { x: 11100, y: 11100 }, - { x: 11101, y: 11101 }, - { x: 11102, y: 11102 }, - { x: 11103, y: 11103 }, - { x: 11104, y: 11104 }, - { x: 11105, y: 11105 }, - { x: 11106, y: 11106 }, - { x: 11107, y: 11107 }, - { x: 11108, y: 11108 }, - { x: 11109, y: 11109 }, - { x: 11110, y: 11110 }, - { x: 11111, y: 11111 }, - { x: 11112, y: 11112 }, - { x: 11113, y: 11113 }, - { x: 11114, y: 11114 }, - { x: 11115, y: 11115 }, - { x: 11116, y: 11116 }, - { x: 11117, y: 11117 }, - { x: 11118, y: 11118 }, - { x: 11119, y: 11119 }, - { x: 11120, y: 11120 }, - { x: 11121, y: 11121 }, - { x: 11122, y: 11122 }, - { x: 11123, y: 11123 }, - { x: 11124, y: 11124 }, - { x: 11125, y: 11125 }, - { x: 11126, y: 11126 }, - { x: 11127, y: 11127 }, - { x: 11128, y: 11128 }, - { x: 11129, y: 11129 }, - { x: 11130, y: 11130 }, - { x: 11131, y: 11131 }, - { x: 11132, y: 11132 }, - { x: 11133, y: 11133 }, - { x: 11134, y: 11134 }, - { x: 11135, y: 11135 }, - { x: 11136, y: 11136 }, - { x: 11137, y: 11137 }, - { x: 11138, y: 11138 }, - { x: 11139, y: 11139 }, - { x: 11140, y: 11140 }, - { x: 11141, y: 11141 }, - { x: 11142, y: 11142 }, - { x: 11143, y: 11143 }, - { x: 11144, y: 11144 }, - { x: 11145, y: 11145 }, - { x: 11146, y: 11146 }, - { x: 11147, y: 11147 }, - { x: 11148, y: 11148 }, - { x: 11149, y: 11149 }, - { x: 11150, y: 11150 }, - { x: 11151, y: 11151 }, - { x: 11152, y: 11152 }, - { x: 11153, y: 11153 }, - { x: 11154, y: 11154 }, - { x: 11155, y: 11155 }, - { x: 11156, y: 11156 }, - { x: 11157, y: 11157 }, - { x: 11158, y: 11158 }, - { x: 11159, y: 11159 }, - { x: 11160, y: 11160 }, - { x: 11161, y: 11161 }, - { x: 11162, y: 11162 }, - { x: 11163, y: 11163 }, - { x: 11164, y: 11164 }, - { x: 11165, y: 11165 }, - { x: 11166, y: 11166 }, - { x: 11167, y: 11167 }, - { x: 11168, y: 11168 }, - { x: 11169, y: 11169 }, - { x: 11170, y: 11170 }, - { x: 11171, y: 11171 }, - { x: 11172, y: 11172 }, - { x: 11173, y: 11173 }, - { x: 11174, y: 11174 }, - { x: 11175, y: 11175 }, - { x: 11176, y: 11176 }, - { x: 11177, y: 11177 }, - { x: 11178, y: 11178 }, - { x: 11179, y: 11179 }, - { x: 11180, y: 11180 }, - { x: 11181, y: 11181 }, - { x: 11182, y: 11182 }, - { x: 11183, y: 11183 }, - { x: 11184, y: 11184 }, - { x: 11185, y: 11185 }, - { x: 11186, y: 11186 }, - { x: 11187, y: 11187 }, - { x: 11188, y: 11188 }, - { x: 11189, y: 11189 }, - { x: 11190, y: 11190 }, - { x: 11191, y: 11191 }, - { x: 11192, y: 11192 }, - { x: 11193, y: 11193 }, - { x: 11194, y: 11194 }, - { x: 11195, y: 11195 }, - { x: 11196, y: 11196 }, - { x: 11197, y: 11197 }, - { x: 11198, y: 11198 }, - { x: 11199, y: 11199 }, - { x: 11200, y: 11200 }, - { x: 11201, y: 11201 }, - { x: 11202, y: 11202 }, - { x: 11203, y: 11203 }, - { x: 11204, y: 11204 }, - { x: 11205, y: 11205 }, - { x: 11206, y: 11206 }, - { x: 11207, y: 11207 }, - { x: 11208, y: 11208 }, - { x: 11209, y: 11209 }, - { x: 11210, y: 11210 }, - { x: 11211, y: 11211 }, - { x: 11212, y: 11212 }, - { x: 11213, y: 11213 }, - { x: 11214, y: 11214 }, - { x: 11215, y: 11215 }, - { x: 11216, y: 11216 }, - { x: 11217, y: 11217 }, - { x: 11218, y: 11218 }, - { x: 11219, y: 11219 }, - { x: 11220, y: 11220 }, - { x: 11221, y: 11221 }, - { x: 11222, y: 11222 }, - { x: 11223, y: 11223 }, - { x: 11224, y: 11224 }, - { x: 11225, y: 11225 }, - { x: 11226, y: 11226 }, - { x: 11227, y: 11227 }, - { x: 11228, y: 11228 }, - { x: 11229, y: 11229 }, - { x: 11230, y: 11230 }, - { x: 11231, y: 11231 }, - { x: 11232, y: 11232 }, - { x: 11233, y: 11233 }, - { x: 11234, y: 11234 }, - { x: 11235, y: 11235 }, - { x: 11236, y: 11236 }, - { x: 11237, y: 11237 }, - { x: 11238, y: 11238 }, - { x: 11239, y: 11239 }, - { x: 11240, y: 11240 }, - { x: 11241, y: 11241 }, - { x: 11242, y: 11242 }, - { x: 11243, y: 11243 }, - { x: 11244, y: 11244 }, - { x: 11245, y: 11245 }, - { x: 11246, y: 11246 }, - { x: 11247, y: 11247 }, - { x: 11248, y: 11248 }, - { x: 11249, y: 11249 }, - { x: 11250, y: 11250 }, - { x: 11251, y: 11251 }, - { x: 11252, y: 11252 }, - { x: 11253, y: 11253 }, - { x: 11254, y: 11254 }, - { x: 11255, y: 11255 }, - { x: 11256, y: 11256 }, - { x: 11257, y: 11257 }, - { x: 11258, y: 11258 }, - { x: 11259, y: 11259 }, - { x: 11260, y: 11260 }, - { x: 11261, y: 11261 }, - { x: 11262, y: 11262 }, - { x: 11263, y: 11263 }, - { x: 11264, y: 11264 }, - { x: 11265, y: 11265 }, - { x: 11266, y: 11266 }, - { x: 11267, y: 11267 }, - { x: 11268, y: 11268 }, - { x: 11269, y: 11269 }, - { x: 11270, y: 11270 }, - { x: 11271, y: 11271 }, - { x: 11272, y: 11272 }, - { x: 11273, y: 11273 }, - { x: 11274, y: 11274 }, - { x: 11275, y: 11275 }, - { x: 11276, y: 11276 }, - { x: 11277, y: 11277 }, - { x: 11278, y: 11278 }, - { x: 11279, y: 11279 }, - { x: 11280, y: 11280 }, - { x: 11281, y: 11281 }, - { x: 11282, y: 11282 }, - { x: 11283, y: 11283 }, - { x: 11284, y: 11284 }, - { x: 11285, y: 11285 }, - { x: 11286, y: 11286 }, - { x: 11287, y: 11287 }, - { x: 11288, y: 11288 }, - { x: 11289, y: 11289 }, - { x: 11290, y: 11290 }, - { x: 11291, y: 11291 }, - { x: 11292, y: 11292 }, - { x: 11293, y: 11293 }, - { x: 11294, y: 11294 }, - { x: 11295, y: 11295 }, - { x: 11296, y: 11296 }, - { x: 11297, y: 11297 }, - { x: 11298, y: 11298 }, - { x: 11299, y: 11299 }, - { x: 11300, y: 11300 }, - { x: 11301, y: 11301 }, - { x: 11302, y: 11302 }, - { x: 11303, y: 11303 }, - { x: 11304, y: 11304 }, - { x: 11305, y: 11305 }, - { x: 11306, y: 11306 }, - { x: 11307, y: 11307 }, - { x: 11308, y: 11308 }, - { x: 11309, y: 11309 }, - { x: 11310, y: 11310 }, - { x: 11311, y: 11311 }, - { x: 11312, y: 11312 }, - { x: 11313, y: 11313 }, - { x: 11314, y: 11314 }, - { x: 11315, y: 11315 }, - { x: 11316, y: 11316 }, - { x: 11317, y: 11317 }, - { x: 11318, y: 11318 }, - { x: 11319, y: 11319 }, - { x: 11320, y: 11320 }, - { x: 11321, y: 11321 }, - { x: 11322, y: 11322 }, - { x: 11323, y: 11323 }, - { x: 11324, y: 11324 }, - { x: 11325, y: 11325 }, - { x: 11326, y: 11326 }, - { x: 11327, y: 11327 }, - { x: 11328, y: 11328 }, - { x: 11329, y: 11329 }, - { x: 11330, y: 11330 }, - { x: 11331, y: 11331 }, - { x: 11332, y: 11332 }, - { x: 11333, y: 11333 }, - { x: 11334, y: 11334 }, - { x: 11335, y: 11335 }, - { x: 11336, y: 11336 }, - { x: 11337, y: 11337 }, - { x: 11338, y: 11338 }, - { x: 11339, y: 11339 }, - { x: 11340, y: 11340 }, - { x: 11341, y: 11341 }, - { x: 11342, y: 11342 }, - { x: 11343, y: 11343 }, - { x: 11344, y: 11344 }, - { x: 11345, y: 11345 }, - { x: 11346, y: 11346 }, - { x: 11347, y: 11347 }, - { x: 11348, y: 11348 }, - { x: 11349, y: 11349 }, - { x: 11350, y: 11350 }, - { x: 11351, y: 11351 }, - { x: 11352, y: 11352 }, - { x: 11353, y: 11353 }, - { x: 11354, y: 11354 }, - { x: 11355, y: 11355 }, - { x: 11356, y: 11356 }, - { x: 11357, y: 11357 }, - { x: 11358, y: 11358 }, - { x: 11359, y: 11359 }, - { x: 11360, y: 11360 }, - { x: 11361, y: 11361 }, - { x: 11362, y: 11362 }, - { x: 11363, y: 11363 }, - { x: 11364, y: 11364 }, - { x: 11365, y: 11365 }, - { x: 11366, y: 11366 }, - { x: 11367, y: 11367 }, - { x: 11368, y: 11368 }, - { x: 11369, y: 11369 }, - { x: 11370, y: 11370 }, - { x: 11371, y: 11371 }, - { x: 11372, y: 11372 }, - { x: 11373, y: 11373 }, - { x: 11374, y: 11374 }, - { x: 11375, y: 11375 }, - { x: 11376, y: 11376 }, - { x: 11377, y: 11377 }, - { x: 11378, y: 11378 }, - { x: 11379, y: 11379 }, - { x: 11380, y: 11380 }, - { x: 11381, y: 11381 }, - { x: 11382, y: 11382 }, - { x: 11383, y: 11383 }, - { x: 11384, y: 11384 }, - { x: 11385, y: 11385 }, - { x: 11386, y: 11386 }, - { x: 11387, y: 11387 }, - { x: 11388, y: 11388 }, - { x: 11389, y: 11389 }, - { x: 11390, y: 11390 }, - { x: 11391, y: 11391 }, - { x: 11392, y: 11392 }, - { x: 11393, y: 11393 }, - { x: 11394, y: 11394 }, - { x: 11395, y: 11395 }, - { x: 11396, y: 11396 }, - { x: 11397, y: 11397 }, - { x: 11398, y: 11398 }, - { x: 11399, y: 11399 }, - { x: 11400, y: 11400 }, - { x: 11401, y: 11401 }, - { x: 11402, y: 11402 }, - { x: 11403, y: 11403 }, - { x: 11404, y: 11404 }, - { x: 11405, y: 11405 }, - { x: 11406, y: 11406 }, - { x: 11407, y: 11407 }, - { x: 11408, y: 11408 }, - { x: 11409, y: 11409 }, - { x: 11410, y: 11410 }, - { x: 11411, y: 11411 }, - { x: 11412, y: 11412 }, - { x: 11413, y: 11413 }, - { x: 11414, y: 11414 }, - { x: 11415, y: 11415 }, - { x: 11416, y: 11416 }, - { x: 11417, y: 11417 }, - { x: 11418, y: 11418 }, - { x: 11419, y: 11419 }, - { x: 11420, y: 11420 }, - { x: 11421, y: 11421 }, - { x: 11422, y: 11422 }, - { x: 11423, y: 11423 }, - { x: 11424, y: 11424 }, - { x: 11425, y: 11425 }, - { x: 11426, y: 11426 }, - { x: 11427, y: 11427 }, - { x: 11428, y: 11428 }, - { x: 11429, y: 11429 }, - { x: 11430, y: 11430 }, - { x: 11431, y: 11431 }, - { x: 11432, y: 11432 }, - { x: 11433, y: 11433 }, - { x: 11434, y: 11434 }, - { x: 11435, y: 11435 }, - { x: 11436, y: 11436 }, - { x: 11437, y: 11437 }, - { x: 11438, y: 11438 }, - { x: 11439, y: 11439 }, - { x: 11440, y: 11440 }, - { x: 11441, y: 11441 }, - { x: 11442, y: 11442 }, - { x: 11443, y: 11443 }, - { x: 11444, y: 11444 }, - { x: 11445, y: 11445 }, - { x: 11446, y: 11446 }, - { x: 11447, y: 11447 }, - { x: 11448, y: 11448 }, - { x: 11449, y: 11449 }, - { x: 11450, y: 11450 }, - { x: 11451, y: 11451 }, - { x: 11452, y: 11452 }, - { x: 11453, y: 11453 }, - { x: 11454, y: 11454 }, - { x: 11455, y: 11455 }, - { x: 11456, y: 11456 }, - { x: 11457, y: 11457 }, - { x: 11458, y: 11458 }, - { x: 11459, y: 11459 }, - { x: 11460, y: 11460 }, - { x: 11461, y: 11461 }, - { x: 11462, y: 11462 }, - { x: 11463, y: 11463 }, - { x: 11464, y: 11464 }, - { x: 11465, y: 11465 }, - { x: 11466, y: 11466 }, - { x: 11467, y: 11467 }, - { x: 11468, y: 11468 }, - { x: 11469, y: 11469 }, - { x: 11470, y: 11470 }, - { x: 11471, y: 11471 }, - { x: 11472, y: 11472 }, - { x: 11473, y: 11473 }, - { x: 11474, y: 11474 }, - { x: 11475, y: 11475 }, - { x: 11476, y: 11476 }, - { x: 11477, y: 11477 }, - { x: 11478, y: 11478 }, - { x: 11479, y: 11479 }, - { x: 11480, y: 11480 }, - { x: 11481, y: 11481 }, - { x: 11482, y: 11482 }, - { x: 11483, y: 11483 }, - { x: 11484, y: 11484 }, - { x: 11485, y: 11485 }, - { x: 11486, y: 11486 }, - { x: 11487, y: 11487 }, - { x: 11488, y: 11488 }, - { x: 11489, y: 11489 }, - { x: 11490, y: 11490 }, - { x: 11491, y: 11491 }, - { x: 11492, y: 11492 }, - { x: 11493, y: 11493 }, - { x: 11494, y: 11494 }, - { x: 11495, y: 11495 }, - { x: 11496, y: 11496 }, - { x: 11497, y: 11497 }, - { x: 11498, y: 11498 }, - { x: 11499, y: 11499 }, - { x: 11500, y: 11500 }, - { x: 11501, y: 11501 }, - { x: 11502, y: 11502 }, - { x: 11503, y: 11503 }, - { x: 11504, y: 11504 }, - { x: 11505, y: 11505 }, - { x: 11506, y: 11506 }, - { x: 11507, y: 11507 }, - { x: 11508, y: 11508 }, - { x: 11509, y: 11509 }, - { x: 11510, y: 11510 }, - { x: 11511, y: 11511 }, - { x: 11512, y: 11512 }, - { x: 11513, y: 11513 }, - { x: 11514, y: 11514 }, - { x: 11515, y: 11515 }, - { x: 11516, y: 11516 }, - { x: 11517, y: 11517 }, - { x: 11518, y: 11518 }, - { x: 11519, y: 11519 }, - { x: 11520, y: 11520 }, - { x: 11521, y: 11521 }, - { x: 11522, y: 11522 }, - { x: 11523, y: 11523 }, - { x: 11524, y: 11524 }, - { x: 11525, y: 11525 }, - { x: 11526, y: 11526 }, - { x: 11527, y: 11527 }, - { x: 11528, y: 11528 }, - { x: 11529, y: 11529 }, - { x: 11530, y: 11530 }, - { x: 11531, y: 11531 }, - { x: 11532, y: 11532 }, - { x: 11533, y: 11533 }, - { x: 11534, y: 11534 }, - { x: 11535, y: 11535 }, - { x: 11536, y: 11536 }, - { x: 11537, y: 11537 }, - { x: 11538, y: 11538 }, - { x: 11539, y: 11539 }, - { x: 11540, y: 11540 }, - { x: 11541, y: 11541 }, - { x: 11542, y: 11542 }, - { x: 11543, y: 11543 }, - { x: 11544, y: 11544 }, - { x: 11545, y: 11545 }, - { x: 11546, y: 11546 }, - { x: 11547, y: 11547 }, - { x: 11548, y: 11548 }, - { x: 11549, y: 11549 }, - { x: 11550, y: 11550 }, - { x: 11551, y: 11551 }, - { x: 11552, y: 11552 }, - { x: 11553, y: 11553 }, - { x: 11554, y: 11554 }, - { x: 11555, y: 11555 }, - { x: 11556, y: 11556 }, - { x: 11557, y: 11557 }, - { x: 11558, y: 11558 }, - { x: 11559, y: 11559 }, - { x: 11560, y: 11560 }, - { x: 11561, y: 11561 }, - { x: 11562, y: 11562 }, - { x: 11563, y: 11563 }, - { x: 11564, y: 11564 }, - { x: 11565, y: 11565 }, - { x: 11566, y: 11566 }, - { x: 11567, y: 11567 }, - { x: 11568, y: 11568 }, - { x: 11569, y: 11569 }, - { x: 11570, y: 11570 }, - { x: 11571, y: 11571 }, - { x: 11572, y: 11572 }, - { x: 11573, y: 11573 }, - { x: 11574, y: 11574 }, - { x: 11575, y: 11575 }, - { x: 11576, y: 11576 }, - { x: 11577, y: 11577 }, - { x: 11578, y: 11578 }, - { x: 11579, y: 11579 }, - { x: 11580, y: 11580 }, - { x: 11581, y: 11581 }, - { x: 11582, y: 11582 }, - { x: 11583, y: 11583 }, - { x: 11584, y: 11584 }, - { x: 11585, y: 11585 }, - { x: 11586, y: 11586 }, - { x: 11587, y: 11587 }, - { x: 11588, y: 11588 }, - { x: 11589, y: 11589 }, - { x: 11590, y: 11590 }, - { x: 11591, y: 11591 }, - { x: 11592, y: 11592 }, - { x: 11593, y: 11593 }, - { x: 11594, y: 11594 }, - { x: 11595, y: 11595 }, - { x: 11596, y: 11596 }, - { x: 11597, y: 11597 }, - { x: 11598, y: 11598 }, - { x: 11599, y: 11599 }, - { x: 11600, y: 11600 }, - { x: 11601, y: 11601 }, - { x: 11602, y: 11602 }, - { x: 11603, y: 11603 }, - { x: 11604, y: 11604 }, - { x: 11605, y: 11605 }, - { x: 11606, y: 11606 }, - { x: 11607, y: 11607 }, - { x: 11608, y: 11608 }, - { x: 11609, y: 11609 }, - { x: 11610, y: 11610 }, - { x: 11611, y: 11611 }, - { x: 11612, y: 11612 }, - { x: 11613, y: 11613 }, - { x: 11614, y: 11614 }, - { x: 11615, y: 11615 }, - { x: 11616, y: 11616 }, - { x: 11617, y: 11617 }, - { x: 11618, y: 11618 }, - { x: 11619, y: 11619 }, - { x: 11620, y: 11620 }, - { x: 11621, y: 11621 }, - { x: 11622, y: 11622 }, - { x: 11623, y: 11623 }, - { x: 11624, y: 11624 }, - { x: 11625, y: 11625 }, - { x: 11626, y: 11626 }, - { x: 11627, y: 11627 }, - { x: 11628, y: 11628 }, - { x: 11629, y: 11629 }, - { x: 11630, y: 11630 }, - { x: 11631, y: 11631 }, - { x: 11632, y: 11632 }, - { x: 11633, y: 11633 }, - { x: 11634, y: 11634 }, - { x: 11635, y: 11635 }, - { x: 11636, y: 11636 }, - { x: 11637, y: 11637 }, - { x: 11638, y: 11638 }, - { x: 11639, y: 11639 }, - { x: 11640, y: 11640 }, - { x: 11641, y: 11641 }, - { x: 11642, y: 11642 }, - { x: 11643, y: 11643 }, - { x: 11644, y: 11644 }, - { x: 11645, y: 11645 }, - { x: 11646, y: 11646 }, - { x: 11647, y: 11647 }, - { x: 11648, y: 11648 }, - { x: 11649, y: 11649 }, - { x: 11650, y: 11650 }, - { x: 11651, y: 11651 }, - { x: 11652, y: 11652 }, - { x: 11653, y: 11653 }, - { x: 11654, y: 11654 }, - { x: 11655, y: 11655 }, - { x: 11656, y: 11656 }, - { x: 11657, y: 11657 }, - { x: 11658, y: 11658 }, - { x: 11659, y: 11659 }, - { x: 11660, y: 11660 }, - { x: 11661, y: 11661 }, - { x: 11662, y: 11662 }, - { x: 11663, y: 11663 }, - { x: 11664, y: 11664 }, - { x: 11665, y: 11665 }, - { x: 11666, y: 11666 }, - { x: 11667, y: 11667 }, - { x: 11668, y: 11668 }, - { x: 11669, y: 11669 }, - { x: 11670, y: 11670 }, - { x: 11671, y: 11671 }, - { x: 11672, y: 11672 }, - { x: 11673, y: 11673 }, - { x: 11674, y: 11674 }, - { x: 11675, y: 11675 }, - { x: 11676, y: 11676 }, - { x: 11677, y: 11677 }, - { x: 11678, y: 11678 }, - { x: 11679, y: 11679 }, - { x: 11680, y: 11680 }, - { x: 11681, y: 11681 }, - { x: 11682, y: 11682 }, - { x: 11683, y: 11683 }, - { x: 11684, y: 11684 }, - { x: 11685, y: 11685 }, - { x: 11686, y: 11686 }, - { x: 11687, y: 11687 }, - { x: 11688, y: 11688 }, - { x: 11689, y: 11689 }, - { x: 11690, y: 11690 }, - { x: 11691, y: 11691 }, - { x: 11692, y: 11692 }, - { x: 11693, y: 11693 }, - { x: 11694, y: 11694 }, - { x: 11695, y: 11695 }, - { x: 11696, y: 11696 }, - { x: 11697, y: 11697 }, - { x: 11698, y: 11698 }, - { x: 11699, y: 11699 }, - { x: 11700, y: 11700 }, - { x: 11701, y: 11701 }, - { x: 11702, y: 11702 }, - { x: 11703, y: 11703 }, - { x: 11704, y: 11704 }, - { x: 11705, y: 11705 }, - { x: 11706, y: 11706 }, - { x: 11707, y: 11707 }, - { x: 11708, y: 11708 }, - { x: 11709, y: 11709 }, - { x: 11710, y: 11710 }, - { x: 11711, y: 11711 }, - { x: 11712, y: 11712 }, - { x: 11713, y: 11713 }, - { x: 11714, y: 11714 }, - { x: 11715, y: 11715 }, - { x: 11716, y: 11716 }, - { x: 11717, y: 11717 }, - { x: 11718, y: 11718 }, - { x: 11719, y: 11719 }, - { x: 11720, y: 11720 }, - { x: 11721, y: 11721 }, - { x: 11722, y: 11722 }, - { x: 11723, y: 11723 }, - { x: 11724, y: 11724 }, - { x: 11725, y: 11725 }, - { x: 11726, y: 11726 }, - { x: 11727, y: 11727 }, - { x: 11728, y: 11728 }, - { x: 11729, y: 11729 }, - { x: 11730, y: 11730 }, - { x: 11731, y: 11731 }, - { x: 11732, y: 11732 }, - { x: 11733, y: 11733 }, - { x: 11734, y: 11734 }, - { x: 11735, y: 11735 }, - { x: 11736, y: 11736 }, - { x: 11737, y: 11737 }, - { x: 11738, y: 11738 }, - { x: 11739, y: 11739 }, - { x: 11740, y: 11740 }, - { x: 11741, y: 11741 }, - { x: 11742, y: 11742 }, - { x: 11743, y: 11743 }, - { x: 11744, y: 11744 }, - { x: 11745, y: 11745 }, - { x: 11746, y: 11746 }, - { x: 11747, y: 11747 }, - { x: 11748, y: 11748 }, - { x: 11749, y: 11749 }, - { x: 11750, y: 11750 }, - { x: 11751, y: 11751 }, - { x: 11752, y: 11752 }, - { x: 11753, y: 11753 }, - { x: 11754, y: 11754 }, - { x: 11755, y: 11755 }, - { x: 11756, y: 11756 }, - { x: 11757, y: 11757 }, - { x: 11758, y: 11758 }, - { x: 11759, y: 11759 }, - { x: 11760, y: 11760 }, - { x: 11761, y: 11761 }, - { x: 11762, y: 11762 }, - { x: 11763, y: 11763 }, - { x: 11764, y: 11764 }, - { x: 11765, y: 11765 }, - { x: 11766, y: 11766 }, - { x: 11767, y: 11767 }, - { x: 11768, y: 11768 }, - { x: 11769, y: 11769 }, - { x: 11770, y: 11770 }, - { x: 11771, y: 11771 }, - { x: 11772, y: 11772 }, - { x: 11773, y: 11773 }, - { x: 11774, y: 11774 }, - { x: 11775, y: 11775 }, - { x: 11776, y: 11776 }, - { x: 11777, y: 11777 }, - { x: 11778, y: 11778 }, - { x: 11779, y: 11779 }, - { x: 11780, y: 11780 }, - { x: 11781, y: 11781 }, - { x: 11782, y: 11782 }, - { x: 11783, y: 11783 }, - { x: 11784, y: 11784 }, - { x: 11785, y: 11785 }, - { x: 11786, y: 11786 }, - { x: 11787, y: 11787 }, - { x: 11788, y: 11788 }, - { x: 11789, y: 11789 }, - { x: 11790, y: 11790 }, - { x: 11791, y: 11791 }, - { x: 11792, y: 11792 }, - { x: 11793, y: 11793 }, - { x: 11794, y: 11794 }, - { x: 11795, y: 11795 }, - { x: 11796, y: 11796 }, - { x: 11797, y: 11797 }, - { x: 11798, y: 11798 }, - { x: 11799, y: 11799 }, - { x: 11800, y: 11800 }, - { x: 11801, y: 11801 }, - { x: 11802, y: 11802 }, - { x: 11803, y: 11803 }, - { x: 11804, y: 11804 }, - { x: 11805, y: 11805 }, - { x: 11806, y: 11806 }, - { x: 11807, y: 11807 }, - { x: 11808, y: 11808 }, - { x: 11809, y: 11809 }, - { x: 11810, y: 11810 }, - { x: 11811, y: 11811 }, - { x: 11812, y: 11812 }, - { x: 11813, y: 11813 }, - { x: 11814, y: 11814 }, - { x: 11815, y: 11815 }, - { x: 11816, y: 11816 }, - { x: 11817, y: 11817 }, - { x: 11818, y: 11818 }, - { x: 11819, y: 11819 }, - { x: 11820, y: 11820 }, - { x: 11821, y: 11821 }, - { x: 11822, y: 11822 }, - { x: 11823, y: 11823 }, - { x: 11824, y: 11824 }, - { x: 11825, y: 11825 }, - { x: 11826, y: 11826 }, - { x: 11827, y: 11827 }, - { x: 11828, y: 11828 }, - { x: 11829, y: 11829 }, - { x: 11830, y: 11830 }, - { x: 11831, y: 11831 }, - { x: 11832, y: 11832 }, - { x: 11833, y: 11833 }, - { x: 11834, y: 11834 }, - { x: 11835, y: 11835 }, - { x: 11836, y: 11836 }, - { x: 11837, y: 11837 }, - { x: 11838, y: 11838 }, - { x: 11839, y: 11839 }, - { x: 11840, y: 11840 }, - { x: 11841, y: 11841 }, - { x: 11842, y: 11842 }, - { x: 11843, y: 11843 }, - { x: 11844, y: 11844 }, - { x: 11845, y: 11845 }, - { x: 11846, y: 11846 }, - { x: 11847, y: 11847 }, - { x: 11848, y: 11848 }, - { x: 11849, y: 11849 }, - { x: 11850, y: 11850 }, - { x: 11851, y: 11851 }, - { x: 11852, y: 11852 }, - { x: 11853, y: 11853 }, - { x: 11854, y: 11854 }, - { x: 11855, y: 11855 }, - { x: 11856, y: 11856 }, - { x: 11857, y: 11857 }, - { x: 11858, y: 11858 }, - { x: 11859, y: 11859 }, - { x: 11860, y: 11860 }, - { x: 11861, y: 11861 }, - { x: 11862, y: 11862 }, - { x: 11863, y: 11863 }, - { x: 11864, y: 11864 }, - { x: 11865, y: 11865 }, - { x: 11866, y: 11866 }, - { x: 11867, y: 11867 }, - { x: 11868, y: 11868 }, - { x: 11869, y: 11869 }, - { x: 11870, y: 11870 }, - { x: 11871, y: 11871 }, - { x: 11872, y: 11872 }, - { x: 11873, y: 11873 }, - { x: 11874, y: 11874 }, - { x: 11875, y: 11875 }, - { x: 11876, y: 11876 }, - { x: 11877, y: 11877 }, - { x: 11878, y: 11878 }, - { x: 11879, y: 11879 }, - { x: 11880, y: 11880 }, - { x: 11881, y: 11881 }, - { x: 11882, y: 11882 }, - { x: 11883, y: 11883 }, - { x: 11884, y: 11884 }, - { x: 11885, y: 11885 }, - { x: 11886, y: 11886 }, - { x: 11887, y: 11887 }, - { x: 11888, y: 11888 }, - { x: 11889, y: 11889 }, - { x: 11890, y: 11890 }, - { x: 11891, y: 11891 }, - { x: 11892, y: 11892 }, - { x: 11893, y: 11893 }, - { x: 11894, y: 11894 }, - { x: 11895, y: 11895 }, - { x: 11896, y: 11896 }, - { x: 11897, y: 11897 }, - { x: 11898, y: 11898 }, - { x: 11899, y: 11899 }, - { x: 11900, y: 11900 }, - { x: 11901, y: 11901 }, - { x: 11902, y: 11902 }, - { x: 11903, y: 11903 }, - { x: 11904, y: 11904 }, - { x: 11905, y: 11905 }, - { x: 11906, y: 11906 }, - { x: 11907, y: 11907 }, - { x: 11908, y: 11908 }, - { x: 11909, y: 11909 }, - { x: 11910, y: 11910 }, - { x: 11911, y: 11911 }, - { x: 11912, y: 11912 }, - { x: 11913, y: 11913 }, - { x: 11914, y: 11914 }, - { x: 11915, y: 11915 }, - { x: 11916, y: 11916 }, - { x: 11917, y: 11917 }, - { x: 11918, y: 11918 }, - { x: 11919, y: 11919 }, - { x: 11920, y: 11920 }, - { x: 11921, y: 11921 }, - { x: 11922, y: 11922 }, - { x: 11923, y: 11923 }, - { x: 11924, y: 11924 }, - { x: 11925, y: 11925 }, - { x: 11926, y: 11926 }, - { x: 11927, y: 11927 }, - { x: 11928, y: 11928 }, - { x: 11929, y: 11929 }, - { x: 11930, y: 11930 }, - { x: 11931, y: 11931 }, - { x: 11932, y: 11932 }, - { x: 11933, y: 11933 }, - { x: 11934, y: 11934 }, - { x: 11935, y: 11935 }, - { x: 11936, y: 11936 }, - { x: 11937, y: 11937 }, - { x: 11938, y: 11938 }, - { x: 11939, y: 11939 }, - { x: 11940, y: 11940 }, - { x: 11941, y: 11941 }, - { x: 11942, y: 11942 }, - { x: 11943, y: 11943 }, - { x: 11944, y: 11944 }, - { x: 11945, y: 11945 }, - { x: 11946, y: 11946 }, - { x: 11947, y: 11947 }, - { x: 11948, y: 11948 }, - { x: 11949, y: 11949 }, - { x: 11950, y: 11950 }, - { x: 11951, y: 11951 }, - { x: 11952, y: 11952 }, - { x: 11953, y: 11953 }, - { x: 11954, y: 11954 }, - { x: 11955, y: 11955 }, - { x: 11956, y: 11956 }, - { x: 11957, y: 11957 }, - { x: 11958, y: 11958 }, - { x: 11959, y: 11959 }, - { x: 11960, y: 11960 }, - { x: 11961, y: 11961 }, - { x: 11962, y: 11962 }, - { x: 11963, y: 11963 }, - { x: 11964, y: 11964 }, - { x: 11965, y: 11965 }, - { x: 11966, y: 11966 }, - { x: 11967, y: 11967 }, - { x: 11968, y: 11968 }, - { x: 11969, y: 11969 }, - { x: 11970, y: 11970 }, - { x: 11971, y: 11971 }, - { x: 11972, y: 11972 }, - { x: 11973, y: 11973 }, - { x: 11974, y: 11974 }, - { x: 11975, y: 11975 }, - { x: 11976, y: 11976 }, - { x: 11977, y: 11977 }, - { x: 11978, y: 11978 }, - { x: 11979, y: 11979 }, - { x: 11980, y: 11980 }, - { x: 11981, y: 11981 }, - { x: 11982, y: 11982 }, - { x: 11983, y: 11983 }, - { x: 11984, y: 11984 }, - { x: 11985, y: 11985 }, - { x: 11986, y: 11986 }, - { x: 11987, y: 11987 }, - { x: 11988, y: 11988 }, - { x: 11989, y: 11989 }, - { x: 11990, y: 11990 }, - { x: 11991, y: 11991 }, - { x: 11992, y: 11992 }, - { x: 11993, y: 11993 }, - { x: 11994, y: 11994 }, - { x: 11995, y: 11995 }, - { x: 11996, y: 11996 }, - { x: 11997, y: 11997 }, - { x: 11998, y: 11998 }, - { x: 11999, y: 11999 }, - { x: 12000, y: 12000 }, - { x: 12001, y: 12001 }, - { x: 12002, y: 12002 }, - { x: 12003, y: 12003 }, - { x: 12004, y: 12004 }, - { x: 12005, y: 12005 }, - { x: 12006, y: 12006 }, - { x: 12007, y: 12007 }, - { x: 12008, y: 12008 }, - { x: 12009, y: 12009 }, - { x: 12010, y: 12010 }, - { x: 12011, y: 12011 }, - { x: 12012, y: 12012 }, - { x: 12013, y: 12013 }, - { x: 12014, y: 12014 }, - { x: 12015, y: 12015 }, - { x: 12016, y: 12016 }, - { x: 12017, y: 12017 }, - { x: 12018, y: 12018 }, - { x: 12019, y: 12019 }, - { x: 12020, y: 12020 }, - { x: 12021, y: 12021 }, - { x: 12022, y: 12022 }, - { x: 12023, y: 12023 }, - { x: 12024, y: 12024 }, - { x: 12025, y: 12025 }, - { x: 12026, y: 12026 }, - { x: 12027, y: 12027 }, - { x: 12028, y: 12028 }, - { x: 12029, y: 12029 }, - { x: 12030, y: 12030 }, - { x: 12031, y: 12031 }, - { x: 12032, y: 12032 }, - { x: 12033, y: 12033 }, - { x: 12034, y: 12034 }, - { x: 12035, y: 12035 }, - { x: 12036, y: 12036 }, - { x: 12037, y: 12037 }, - { x: 12038, y: 12038 }, - { x: 12039, y: 12039 }, - { x: 12040, y: 12040 }, - { x: 12041, y: 12041 }, - { x: 12042, y: 12042 }, - { x: 12043, y: 12043 }, - { x: 12044, y: 12044 }, - { x: 12045, y: 12045 }, - { x: 12046, y: 12046 }, - { x: 12047, y: 12047 }, - { x: 12048, y: 12048 }, - { x: 12049, y: 12049 }, - { x: 12050, y: 12050 }, - { x: 12051, y: 12051 }, - { x: 12052, y: 12052 }, - { x: 12053, y: 12053 }, - { x: 12054, y: 12054 }, - { x: 12055, y: 12055 }, - { x: 12056, y: 12056 }, - { x: 12057, y: 12057 }, - { x: 12058, y: 12058 }, - { x: 12059, y: 12059 }, - { x: 12060, y: 12060 }, - { x: 12061, y: 12061 }, - { x: 12062, y: 12062 }, - { x: 12063, y: 12063 }, - { x: 12064, y: 12064 }, - { x: 12065, y: 12065 }, - { x: 12066, y: 12066 }, - { x: 12067, y: 12067 }, - { x: 12068, y: 12068 }, - { x: 12069, y: 12069 }, - { x: 12070, y: 12070 }, - { x: 12071, y: 12071 }, - { x: 12072, y: 12072 }, - { x: 12073, y: 12073 }, - { x: 12074, y: 12074 }, - { x: 12075, y: 12075 }, - { x: 12076, y: 12076 }, - { x: 12077, y: 12077 }, - { x: 12078, y: 12078 }, - { x: 12079, y: 12079 }, - { x: 12080, y: 12080 }, - { x: 12081, y: 12081 }, - { x: 12082, y: 12082 }, - { x: 12083, y: 12083 }, - { x: 12084, y: 12084 }, - { x: 12085, y: 12085 }, - { x: 12086, y: 12086 }, - { x: 12087, y: 12087 }, - { x: 12088, y: 12088 }, - { x: 12089, y: 12089 }, - { x: 12090, y: 12090 }, - { x: 12091, y: 12091 }, - { x: 12092, y: 12092 }, - { x: 12093, y: 12093 }, - { x: 12094, y: 12094 }, - { x: 12095, y: 12095 }, - { x: 12096, y: 12096 }, - { x: 12097, y: 12097 }, - { x: 12098, y: 12098 }, - { x: 12099, y: 12099 }, - { x: 12100, y: 12100 }, - { x: 12101, y: 12101 }, - { x: 12102, y: 12102 }, - { x: 12103, y: 12103 }, - { x: 12104, y: 12104 }, - { x: 12105, y: 12105 }, - { x: 12106, y: 12106 }, - { x: 12107, y: 12107 }, - { x: 12108, y: 12108 }, - { x: 12109, y: 12109 }, - { x: 12110, y: 12110 }, - { x: 12111, y: 12111 }, - { x: 12112, y: 12112 }, - { x: 12113, y: 12113 }, - { x: 12114, y: 12114 }, - { x: 12115, y: 12115 }, - { x: 12116, y: 12116 }, - { x: 12117, y: 12117 }, - { x: 12118, y: 12118 }, - { x: 12119, y: 12119 }, - { x: 12120, y: 12120 }, - { x: 12121, y: 12121 }, - { x: 12122, y: 12122 }, - { x: 12123, y: 12123 }, - { x: 12124, y: 12124 }, - { x: 12125, y: 12125 }, - { x: 12126, y: 12126 }, - { x: 12127, y: 12127 }, - { x: 12128, y: 12128 }, - { x: 12129, y: 12129 }, - { x: 12130, y: 12130 }, - { x: 12131, y: 12131 }, - { x: 12132, y: 12132 }, - { x: 12133, y: 12133 }, - { x: 12134, y: 12134 }, - { x: 12135, y: 12135 }, - { x: 12136, y: 12136 }, - { x: 12137, y: 12137 }, - { x: 12138, y: 12138 }, - { x: 12139, y: 12139 }, - { x: 12140, y: 12140 }, - { x: 12141, y: 12141 }, - { x: 12142, y: 12142 }, - { x: 12143, y: 12143 }, - { x: 12144, y: 12144 }, - { x: 12145, y: 12145 }, - { x: 12146, y: 12146 }, - { x: 12147, y: 12147 }, - { x: 12148, y: 12148 }, - { x: 12149, y: 12149 }, - { x: 12150, y: 12150 }, - { x: 12151, y: 12151 }, - { x: 12152, y: 12152 }, - { x: 12153, y: 12153 }, - { x: 12154, y: 12154 }, - { x: 12155, y: 12155 }, - { x: 12156, y: 12156 }, - { x: 12157, y: 12157 }, - { x: 12158, y: 12158 }, - { x: 12159, y: 12159 }, - { x: 12160, y: 12160 }, - { x: 12161, y: 12161 }, - { x: 12162, y: 12162 }, - { x: 12163, y: 12163 }, - { x: 12164, y: 12164 }, - { x: 12165, y: 12165 }, - { x: 12166, y: 12166 }, - { x: 12167, y: 12167 }, - { x: 12168, y: 12168 }, - { x: 12169, y: 12169 }, - { x: 12170, y: 12170 }, - { x: 12171, y: 12171 }, - { x: 12172, y: 12172 }, - { x: 12173, y: 12173 }, - { x: 12174, y: 12174 }, - { x: 12175, y: 12175 }, - { x: 12176, y: 12176 }, - { x: 12177, y: 12177 }, - { x: 12178, y: 12178 }, - { x: 12179, y: 12179 }, - { x: 12180, y: 12180 }, - { x: 12181, y: 12181 }, - { x: 12182, y: 12182 }, - { x: 12183, y: 12183 }, - { x: 12184, y: 12184 }, - { x: 12185, y: 12185 }, - { x: 12186, y: 12186 }, - { x: 12187, y: 12187 }, - { x: 12188, y: 12188 }, - { x: 12189, y: 12189 }, - { x: 12190, y: 12190 }, - { x: 12191, y: 12191 }, - { x: 12192, y: 12192 }, - { x: 12193, y: 12193 }, - { x: 12194, y: 12194 }, - { x: 12195, y: 12195 }, - { x: 12196, y: 12196 }, - { x: 12197, y: 12197 }, - { x: 12198, y: 12198 }, - { x: 12199, y: 12199 }, - { x: 12200, y: 12200 }, - { x: 12201, y: 12201 }, - { x: 12202, y: 12202 }, - { x: 12203, y: 12203 }, - { x: 12204, y: 12204 }, - { x: 12205, y: 12205 }, - { x: 12206, y: 12206 }, - { x: 12207, y: 12207 }, - { x: 12208, y: 12208 }, - { x: 12209, y: 12209 }, - { x: 12210, y: 12210 }, - { x: 12211, y: 12211 }, - { x: 12212, y: 12212 }, - { x: 12213, y: 12213 }, - { x: 12214, y: 12214 }, - { x: 12215, y: 12215 }, - { x: 12216, y: 12216 }, - { x: 12217, y: 12217 }, - { x: 12218, y: 12218 }, - { x: 12219, y: 12219 }, - { x: 12220, y: 12220 }, - { x: 12221, y: 12221 }, - { x: 12222, y: 12222 }, - { x: 12223, y: 12223 }, - { x: 12224, y: 12224 }, - { x: 12225, y: 12225 }, - { x: 12226, y: 12226 }, - { x: 12227, y: 12227 }, - { x: 12228, y: 12228 }, - { x: 12229, y: 12229 }, - { x: 12230, y: 12230 }, - { x: 12231, y: 12231 }, - { x: 12232, y: 12232 }, - { x: 12233, y: 12233 }, - { x: 12234, y: 12234 }, - { x: 12235, y: 12235 }, - { x: 12236, y: 12236 }, - { x: 12237, y: 12237 }, - { x: 12238, y: 12238 }, - { x: 12239, y: 12239 }, - { x: 12240, y: 12240 }, - { x: 12241, y: 12241 }, - { x: 12242, y: 12242 }, - { x: 12243, y: 12243 }, - { x: 12244, y: 12244 }, - { x: 12245, y: 12245 }, - { x: 12246, y: 12246 }, - { x: 12247, y: 12247 }, - { x: 12248, y: 12248 }, - { x: 12249, y: 12249 }, - { x: 12250, y: 12250 }, - { x: 12251, y: 12251 }, - { x: 12252, y: 12252 }, - { x: 12253, y: 12253 }, - { x: 12254, y: 12254 }, - { x: 12255, y: 12255 }, - { x: 12256, y: 12256 }, - { x: 12257, y: 12257 }, - { x: 12258, y: 12258 }, - { x: 12259, y: 12259 }, - { x: 12260, y: 12260 }, - { x: 12261, y: 12261 }, - { x: 12262, y: 12262 }, - { x: 12263, y: 12263 }, - { x: 12264, y: 12264 }, - { x: 12265, y: 12265 }, - { x: 12266, y: 12266 }, - { x: 12267, y: 12267 }, - { x: 12268, y: 12268 }, - { x: 12269, y: 12269 }, - { x: 12270, y: 12270 }, - { x: 12271, y: 12271 }, - { x: 12272, y: 12272 }, - { x: 12273, y: 12273 }, - { x: 12274, y: 12274 }, - { x: 12275, y: 12275 }, - { x: 12276, y: 12276 }, - { x: 12277, y: 12277 }, - { x: 12278, y: 12278 }, - { x: 12279, y: 12279 }, - { x: 12280, y: 12280 }, - { x: 12281, y: 12281 }, - { x: 12282, y: 12282 }, - { x: 12283, y: 12283 }, - { x: 12284, y: 12284 }, - { x: 12285, y: 12285 }, - { x: 12286, y: 12286 }, - { x: 12287, y: 12287 }, - { x: 12288, y: 12288 }, - { x: 12289, y: 12289 }, - { x: 12290, y: 12290 }, - { x: 12291, y: 12291 }, - { x: 12292, y: 12292 }, - { x: 12293, y: 12293 }, - { x: 12294, y: 12294 }, - { x: 12295, y: 12295 }, - { x: 12296, y: 12296 }, - { x: 12297, y: 12297 }, - { x: 12298, y: 12298 }, - { x: 12299, y: 12299 }, - { x: 12300, y: 12300 }, - { x: 12301, y: 12301 }, - { x: 12302, y: 12302 }, - { x: 12303, y: 12303 }, - { x: 12304, y: 12304 }, - { x: 12305, y: 12305 }, - { x: 12306, y: 12306 }, - { x: 12307, y: 12307 }, - { x: 12308, y: 12308 }, - { x: 12309, y: 12309 }, - { x: 12310, y: 12310 }, - { x: 12311, y: 12311 }, - { x: 12312, y: 12312 }, - { x: 12313, y: 12313 }, - { x: 12314, y: 12314 }, - { x: 12315, y: 12315 }, - { x: 12316, y: 12316 }, - { x: 12317, y: 12317 }, - { x: 12318, y: 12318 }, - { x: 12319, y: 12319 }, - { x: 12320, y: 12320 }, - { x: 12321, y: 12321 }, - { x: 12322, y: 12322 }, - { x: 12323, y: 12323 }, - { x: 12324, y: 12324 }, - { x: 12325, y: 12325 }, - { x: 12326, y: 12326 }, - { x: 12327, y: 12327 }, - { x: 12328, y: 12328 }, - { x: 12329, y: 12329 }, - { x: 12330, y: 12330 }, - { x: 12331, y: 12331 }, - { x: 12332, y: 12332 }, - { x: 12333, y: 12333 }, - { x: 12334, y: 12334 }, - { x: 12335, y: 12335 }, - { x: 12336, y: 12336 }, - { x: 12337, y: 12337 }, - { x: 12338, y: 12338 }, - { x: 12339, y: 12339 }, - { x: 12340, y: 12340 }, - { x: 12341, y: 12341 }, - { x: 12342, y: 12342 }, - { x: 12343, y: 12343 }, - { x: 12344, y: 12344 }, - { x: 12345, y: 12345 }, - { x: 12346, y: 12346 }, - { x: 12347, y: 12347 }, - { x: 12348, y: 12348 }, - { x: 12349, y: 12349 }, - { x: 12350, y: 12350 }, - { x: 12351, y: 12351 }, - { x: 12352, y: 12352 }, - { x: 12353, y: 12353 }, - { x: 12354, y: 12354 }, - { x: 12355, y: 12355 }, - { x: 12356, y: 12356 }, - { x: 12357, y: 12357 }, - { x: 12358, y: 12358 }, - { x: 12359, y: 12359 }, - { x: 12360, y: 12360 }, - { x: 12361, y: 12361 }, - { x: 12362, y: 12362 }, - { x: 12363, y: 12363 }, - { x: 12364, y: 12364 }, - { x: 12365, y: 12365 }, - { x: 12366, y: 12366 }, - { x: 12367, y: 12367 }, - { x: 12368, y: 12368 }, - { x: 12369, y: 12369 }, - { x: 12370, y: 12370 }, - { x: 12371, y: 12371 }, - { x: 12372, y: 12372 }, - { x: 12373, y: 12373 }, - { x: 12374, y: 12374 }, - { x: 12375, y: 12375 }, - { x: 12376, y: 12376 }, - { x: 12377, y: 12377 }, - { x: 12378, y: 12378 }, - { x: 12379, y: 12379 }, - { x: 12380, y: 12380 }, - { x: 12381, y: 12381 }, - { x: 12382, y: 12382 }, - { x: 12383, y: 12383 }, - { x: 12384, y: 12384 }, - { x: 12385, y: 12385 }, - { x: 12386, y: 12386 }, - { x: 12387, y: 12387 }, - { x: 12388, y: 12388 }, - { x: 12389, y: 12389 }, - { x: 12390, y: 12390 }, - { x: 12391, y: 12391 }, - { x: 12392, y: 12392 }, - { x: 12393, y: 12393 }, - { x: 12394, y: 12394 }, - { x: 12395, y: 12395 }, - { x: 12396, y: 12396 }, - { x: 12397, y: 12397 }, - { x: 12398, y: 12398 }, - { x: 12399, y: 12399 }, - { x: 12400, y: 12400 }, - { x: 12401, y: 12401 }, - { x: 12402, y: 12402 }, - { x: 12403, y: 12403 }, - { x: 12404, y: 12404 }, - { x: 12405, y: 12405 }, - { x: 12406, y: 12406 }, - { x: 12407, y: 12407 }, - { x: 12408, y: 12408 }, - { x: 12409, y: 12409 }, - { x: 12410, y: 12410 }, - { x: 12411, y: 12411 }, - { x: 12412, y: 12412 }, - { x: 12413, y: 12413 }, - { x: 12414, y: 12414 }, - { x: 12415, y: 12415 }, - { x: 12416, y: 12416 }, - { x: 12417, y: 12417 }, - { x: 12418, y: 12418 }, - { x: 12419, y: 12419 }, - { x: 12420, y: 12420 }, - { x: 12421, y: 12421 }, - { x: 12422, y: 12422 }, - { x: 12423, y: 12423 }, - { x: 12424, y: 12424 }, - { x: 12425, y: 12425 }, - { x: 12426, y: 12426 }, - { x: 12427, y: 12427 }, - { x: 12428, y: 12428 }, - { x: 12429, y: 12429 }, - { x: 12430, y: 12430 }, - { x: 12431, y: 12431 }, - { x: 12432, y: 12432 }, - { x: 12433, y: 12433 }, - { x: 12434, y: 12434 }, - { x: 12435, y: 12435 }, - { x: 12436, y: 12436 }, - { x: 12437, y: 12437 }, - { x: 12438, y: 12438 }, - { x: 12439, y: 12439 }, - { x: 12440, y: 12440 }, - { x: 12441, y: 12441 }, - { x: 12442, y: 12442 }, - { x: 12443, y: 12443 }, - { x: 12444, y: 12444 }, - { x: 12445, y: 12445 }, - { x: 12446, y: 12446 }, - { x: 12447, y: 12447 }, - { x: 12448, y: 12448 }, - { x: 12449, y: 12449 }, - { x: 12450, y: 12450 }, - { x: 12451, y: 12451 }, - { x: 12452, y: 12452 }, - { x: 12453, y: 12453 }, - { x: 12454, y: 12454 }, - { x: 12455, y: 12455 }, - { x: 12456, y: 12456 }, - { x: 12457, y: 12457 }, - { x: 12458, y: 12458 }, - { x: 12459, y: 12459 }, - { x: 12460, y: 12460 }, - { x: 12461, y: 12461 }, - { x: 12462, y: 12462 }, - { x: 12463, y: 12463 }, - { x: 12464, y: 12464 }, - { x: 12465, y: 12465 }, - { x: 12466, y: 12466 }, - { x: 12467, y: 12467 }, - { x: 12468, y: 12468 }, - { x: 12469, y: 12469 }, - { x: 12470, y: 12470 }, - { x: 12471, y: 12471 }, - { x: 12472, y: 12472 }, - { x: 12473, y: 12473 }, - { x: 12474, y: 12474 }, - { x: 12475, y: 12475 }, - { x: 12476, y: 12476 }, - { x: 12477, y: 12477 }, - { x: 12478, y: 12478 }, - { x: 12479, y: 12479 }, - { x: 12480, y: 12480 }, - { x: 12481, y: 12481 }, - { x: 12482, y: 12482 }, - { x: 12483, y: 12483 }, - { x: 12484, y: 12484 }, - { x: 12485, y: 12485 }, - { x: 12486, y: 12486 }, - { x: 12487, y: 12487 }, - { x: 12488, y: 12488 }, - { x: 12489, y: 12489 }, - { x: 12490, y: 12490 }, - { x: 12491, y: 12491 }, - { x: 12492, y: 12492 }, - { x: 12493, y: 12493 }, - { x: 12494, y: 12494 }, - { x: 12495, y: 12495 }, - { x: 12496, y: 12496 }, - { x: 12497, y: 12497 }, - { x: 12498, y: 12498 }, - { x: 12499, y: 12499 }, - { x: 12500, y: 12500 }, - { x: 12501, y: 12501 }, - { x: 12502, y: 12502 }, - { x: 12503, y: 12503 }, - { x: 12504, y: 12504 }, - { x: 12505, y: 12505 }, - { x: 12506, y: 12506 }, - { x: 12507, y: 12507 }, - { x: 12508, y: 12508 }, - { x: 12509, y: 12509 }, - { x: 12510, y: 12510 }, - { x: 12511, y: 12511 }, - { x: 12512, y: 12512 }, - { x: 12513, y: 12513 }, - { x: 12514, y: 12514 }, - { x: 12515, y: 12515 }, - { x: 12516, y: 12516 }, - { x: 12517, y: 12517 }, - { x: 12518, y: 12518 }, - { x: 12519, y: 12519 }, - { x: 12520, y: 12520 }, - { x: 12521, y: 12521 }, - { x: 12522, y: 12522 }, - { x: 12523, y: 12523 }, - { x: 12524, y: 12524 }, - { x: 12525, y: 12525 }, - { x: 12526, y: 12526 }, - { x: 12527, y: 12527 }, - { x: 12528, y: 12528 }, - { x: 12529, y: 12529 }, - { x: 12530, y: 12530 }, - { x: 12531, y: 12531 }, - { x: 12532, y: 12532 }, - { x: 12533, y: 12533 }, - { x: 12534, y: 12534 }, - { x: 12535, y: 12535 }, - { x: 12536, y: 12536 }, - { x: 12537, y: 12537 }, - { x: 12538, y: 12538 }, - { x: 12539, y: 12539 }, - { x: 12540, y: 12540 }, - { x: 12541, y: 12541 }, - { x: 12542, y: 12542 }, - { x: 12543, y: 12543 }, - { x: 12544, y: 12544 }, - { x: 12545, y: 12545 }, - { x: 12546, y: 12546 }, - { x: 12547, y: 12547 }, - { x: 12548, y: 12548 }, - { x: 12549, y: 12549 }, - { x: 12550, y: 12550 }, - { x: 12551, y: 12551 }, - { x: 12552, y: 12552 }, - { x: 12553, y: 12553 }, - { x: 12554, y: 12554 }, - { x: 12555, y: 12555 }, - { x: 12556, y: 12556 }, - { x: 12557, y: 12557 }, - { x: 12558, y: 12558 }, - { x: 12559, y: 12559 }, - { x: 12560, y: 12560 }, - { x: 12561, y: 12561 }, - { x: 12562, y: 12562 }, - { x: 12563, y: 12563 }, - { x: 12564, y: 12564 }, - { x: 12565, y: 12565 }, - { x: 12566, y: 12566 }, - { x: 12567, y: 12567 }, - { x: 12568, y: 12568 }, - { x: 12569, y: 12569 }, - { x: 12570, y: 12570 }, - { x: 12571, y: 12571 }, - { x: 12572, y: 12572 }, - { x: 12573, y: 12573 }, - { x: 12574, y: 12574 }, - { x: 12575, y: 12575 }, - { x: 12576, y: 12576 }, - { x: 12577, y: 12577 }, - { x: 12578, y: 12578 }, - { x: 12579, y: 12579 }, - { x: 12580, y: 12580 }, - { x: 12581, y: 12581 }, - { x: 12582, y: 12582 }, - { x: 12583, y: 12583 }, - { x: 12584, y: 12584 }, - { x: 12585, y: 12585 }, - { x: 12586, y: 12586 }, - { x: 12587, y: 12587 }, - { x: 12588, y: 12588 }, - { x: 12589, y: 12589 }, - { x: 12590, y: 12590 }, - { x: 12591, y: 12591 }, - { x: 12592, y: 12592 }, - { x: 12593, y: 12593 }, - { x: 12594, y: 12594 }, - { x: 12595, y: 12595 }, - { x: 12596, y: 12596 }, - { x: 12597, y: 12597 }, - { x: 12598, y: 12598 }, - { x: 12599, y: 12599 }, - { x: 12600, y: 12600 }, - { x: 12601, y: 12601 }, - { x: 12602, y: 12602 }, - { x: 12603, y: 12603 }, - { x: 12604, y: 12604 }, - { x: 12605, y: 12605 }, - { x: 12606, y: 12606 }, - { x: 12607, y: 12607 }, - { x: 12608, y: 12608 }, - { x: 12609, y: 12609 }, - { x: 12610, y: 12610 }, - { x: 12611, y: 12611 }, - { x: 12612, y: 12612 }, - { x: 12613, y: 12613 }, - { x: 12614, y: 12614 }, - { x: 12615, y: 12615 }, - { x: 12616, y: 12616 }, - { x: 12617, y: 12617 }, - { x: 12618, y: 12618 }, - { x: 12619, y: 12619 }, - { x: 12620, y: 12620 }, - { x: 12621, y: 12621 }, - { x: 12622, y: 12622 }, - { x: 12623, y: 12623 }, - { x: 12624, y: 12624 }, - { x: 12625, y: 12625 }, - { x: 12626, y: 12626 }, - { x: 12627, y: 12627 }, - { x: 12628, y: 12628 }, - { x: 12629, y: 12629 }, - { x: 12630, y: 12630 }, - { x: 12631, y: 12631 }, - { x: 12632, y: 12632 }, - { x: 12633, y: 12633 }, - { x: 12634, y: 12634 }, - { x: 12635, y: 12635 }, - { x: 12636, y: 12636 }, - { x: 12637, y: 12637 }, - { x: 12638, y: 12638 }, - { x: 12639, y: 12639 }, - { x: 12640, y: 12640 }, - { x: 12641, y: 12641 }, - { x: 12642, y: 12642 }, - { x: 12643, y: 12643 }, - { x: 12644, y: 12644 }, - { x: 12645, y: 12645 }, - { x: 12646, y: 12646 }, - { x: 12647, y: 12647 }, - { x: 12648, y: 12648 }, - { x: 12649, y: 12649 }, - { x: 12650, y: 12650 }, - { x: 12651, y: 12651 }, - { x: 12652, y: 12652 }, - { x: 12653, y: 12653 }, - { x: 12654, y: 12654 }, - { x: 12655, y: 12655 }, - { x: 12656, y: 12656 }, - { x: 12657, y: 12657 }, - { x: 12658, y: 12658 }, - { x: 12659, y: 12659 }, - { x: 12660, y: 12660 }, - { x: 12661, y: 12661 }, - { x: 12662, y: 12662 }, - { x: 12663, y: 12663 }, - { x: 12664, y: 12664 }, - { x: 12665, y: 12665 }, - { x: 12666, y: 12666 }, - { x: 12667, y: 12667 }, - { x: 12668, y: 12668 }, - { x: 12669, y: 12669 }, - { x: 12670, y: 12670 }, - { x: 12671, y: 12671 }, - { x: 12672, y: 12672 }, - { x: 12673, y: 12673 }, - { x: 12674, y: 12674 }, - { x: 12675, y: 12675 }, - { x: 12676, y: 12676 }, - { x: 12677, y: 12677 }, - { x: 12678, y: 12678 }, - { x: 12679, y: 12679 }, - { x: 12680, y: 12680 }, - { x: 12681, y: 12681 }, - { x: 12682, y: 12682 }, - { x: 12683, y: 12683 }, - { x: 12684, y: 12684 }, - { x: 12685, y: 12685 }, - { x: 12686, y: 12686 }, - { x: 12687, y: 12687 }, - { x: 12688, y: 12688 }, - { x: 12689, y: 12689 }, - { x: 12690, y: 12690 }, - { x: 12691, y: 12691 }, - { x: 12692, y: 12692 }, - { x: 12693, y: 12693 }, - { x: 12694, y: 12694 }, - { x: 12695, y: 12695 }, - { x: 12696, y: 12696 }, - { x: 12697, y: 12697 }, - { x: 12698, y: 12698 }, - { x: 12699, y: 12699 }, - { x: 12700, y: 12700 }, - { x: 12701, y: 12701 }, - { x: 12702, y: 12702 }, - { x: 12703, y: 12703 }, - { x: 12704, y: 12704 }, - { x: 12705, y: 12705 }, - { x: 12706, y: 12706 }, - { x: 12707, y: 12707 }, - { x: 12708, y: 12708 }, - { x: 12709, y: 12709 }, - { x: 12710, y: 12710 }, - { x: 12711, y: 12711 }, - { x: 12712, y: 12712 }, - { x: 12713, y: 12713 }, - { x: 12714, y: 12714 }, - { x: 12715, y: 12715 }, - { x: 12716, y: 12716 }, - { x: 12717, y: 12717 }, - { x: 12718, y: 12718 }, - { x: 12719, y: 12719 }, - { x: 12720, y: 12720 }, - { x: 12721, y: 12721 }, - { x: 12722, y: 12722 }, - { x: 12723, y: 12723 }, - { x: 12724, y: 12724 }, - { x: 12725, y: 12725 }, - { x: 12726, y: 12726 }, - { x: 12727, y: 12727 }, - { x: 12728, y: 12728 }, - { x: 12729, y: 12729 }, - { x: 12730, y: 12730 }, - { x: 12731, y: 12731 }, - { x: 12732, y: 12732 }, - { x: 12733, y: 12733 }, - { x: 12734, y: 12734 }, - { x: 12735, y: 12735 }, - { x: 12736, y: 12736 }, - { x: 12737, y: 12737 }, - { x: 12738, y: 12738 }, - { x: 12739, y: 12739 }, - { x: 12740, y: 12740 }, - { x: 12741, y: 12741 }, - { x: 12742, y: 12742 }, - { x: 12743, y: 12743 }, - { x: 12744, y: 12744 }, - { x: 12745, y: 12745 }, - { x: 12746, y: 12746 }, - { x: 12747, y: 12747 }, - { x: 12748, y: 12748 }, - { x: 12749, y: 12749 }, - { x: 12750, y: 12750 }, - { x: 12751, y: 12751 }, - { x: 12752, y: 12752 }, - { x: 12753, y: 12753 }, - { x: 12754, y: 12754 }, - { x: 12755, y: 12755 }, - { x: 12756, y: 12756 }, - { x: 12757, y: 12757 }, - { x: 12758, y: 12758 }, - { x: 12759, y: 12759 }, - { x: 12760, y: 12760 }, - { x: 12761, y: 12761 }, - { x: 12762, y: 12762 }, - { x: 12763, y: 12763 }, - { x: 12764, y: 12764 }, - { x: 12765, y: 12765 }, - { x: 12766, y: 12766 }, - { x: 12767, y: 12767 }, - { x: 12768, y: 12768 }, - { x: 12769, y: 12769 }, - { x: 12770, y: 12770 }, - { x: 12771, y: 12771 }, - { x: 12772, y: 12772 }, - { x: 12773, y: 12773 }, - { x: 12774, y: 12774 }, - { x: 12775, y: 12775 }, - { x: 12776, y: 12776 }, - { x: 12777, y: 12777 }, - { x: 12778, y: 12778 }, - { x: 12779, y: 12779 }, - { x: 12780, y: 12780 }, - { x: 12781, y: 12781 }, - { x: 12782, y: 12782 }, - { x: 12783, y: 12783 }, - { x: 12784, y: 12784 }, - { x: 12785, y: 12785 }, - { x: 12786, y: 12786 }, - { x: 12787, y: 12787 }, - { x: 12788, y: 12788 }, - { x: 12789, y: 12789 }, - { x: 12790, y: 12790 }, - { x: 12791, y: 12791 }, - { x: 12792, y: 12792 }, - { x: 12793, y: 12793 }, - { x: 12794, y: 12794 }, - { x: 12795, y: 12795 }, - { x: 12796, y: 12796 }, - { x: 12797, y: 12797 }, - { x: 12798, y: 12798 }, - { x: 12799, y: 12799 }, - { x: 12800, y: 12800 }, - { x: 12801, y: 12801 }, - { x: 12802, y: 12802 }, - { x: 12803, y: 12803 }, - { x: 12804, y: 12804 }, - { x: 12805, y: 12805 }, - { x: 12806, y: 12806 }, - { x: 12807, y: 12807 }, - { x: 12808, y: 12808 }, - { x: 12809, y: 12809 }, - { x: 12810, y: 12810 }, - { x: 12811, y: 12811 }, - { x: 12812, y: 12812 }, - { x: 12813, y: 12813 }, - { x: 12814, y: 12814 }, - { x: 12815, y: 12815 }, - { x: 12816, y: 12816 }, - { x: 12817, y: 12817 }, - { x: 12818, y: 12818 }, - { x: 12819, y: 12819 }, - { x: 12820, y: 12820 }, - { x: 12821, y: 12821 }, - { x: 12822, y: 12822 }, - { x: 12823, y: 12823 }, - { x: 12824, y: 12824 }, - { x: 12825, y: 12825 }, - { x: 12826, y: 12826 }, - { x: 12827, y: 12827 }, - { x: 12828, y: 12828 }, - { x: 12829, y: 12829 }, - { x: 12830, y: 12830 }, - { x: 12831, y: 12831 }, - { x: 12832, y: 12832 }, - { x: 12833, y: 12833 }, - { x: 12834, y: 12834 }, - { x: 12835, y: 12835 }, - { x: 12836, y: 12836 }, - { x: 12837, y: 12837 }, - { x: 12838, y: 12838 }, - { x: 12839, y: 12839 }, - { x: 12840, y: 12840 }, - { x: 12841, y: 12841 }, - { x: 12842, y: 12842 }, - { x: 12843, y: 12843 }, - { x: 12844, y: 12844 }, - { x: 12845, y: 12845 }, - { x: 12846, y: 12846 }, - { x: 12847, y: 12847 }, - { x: 12848, y: 12848 }, - { x: 12849, y: 12849 }, - { x: 12850, y: 12850 }, - { x: 12851, y: 12851 }, - { x: 12852, y: 12852 }, - { x: 12853, y: 12853 }, - { x: 12854, y: 12854 }, - { x: 12855, y: 12855 }, - { x: 12856, y: 12856 }, - { x: 12857, y: 12857 }, - { x: 12858, y: 12858 }, - { x: 12859, y: 12859 }, - { x: 12860, y: 12860 }, - { x: 12861, y: 12861 }, - { x: 12862, y: 12862 }, - { x: 12863, y: 12863 }, - { x: 12864, y: 12864 }, - { x: 12865, y: 12865 }, - { x: 12866, y: 12866 }, - { x: 12867, y: 12867 }, - { x: 12868, y: 12868 }, - { x: 12869, y: 12869 }, - { x: 12870, y: 12870 }, - { x: 12871, y: 12871 }, - { x: 12872, y: 12872 }, - { x: 12873, y: 12873 }, - { x: 12874, y: 12874 }, - { x: 12875, y: 12875 }, - { x: 12876, y: 12876 }, - { x: 12877, y: 12877 }, - { x: 12878, y: 12878 }, - { x: 12879, y: 12879 }, - { x: 12880, y: 12880 }, - { x: 12881, y: 12881 }, - { x: 12882, y: 12882 }, - { x: 12883, y: 12883 }, - { x: 12884, y: 12884 }, - { x: 12885, y: 12885 }, - { x: 12886, y: 12886 }, - { x: 12887, y: 12887 }, - { x: 12888, y: 12888 }, - { x: 12889, y: 12889 }, - { x: 12890, y: 12890 }, - { x: 12891, y: 12891 }, - { x: 12892, y: 12892 }, - { x: 12893, y: 12893 }, - { x: 12894, y: 12894 }, - { x: 12895, y: 12895 }, - { x: 12896, y: 12896 }, - { x: 12897, y: 12897 }, - { x: 12898, y: 12898 }, - { x: 12899, y: 12899 }, - { x: 12900, y: 12900 }, - { x: 12901, y: 12901 }, - { x: 12902, y: 12902 }, - { x: 12903, y: 12903 }, - { x: 12904, y: 12904 }, - { x: 12905, y: 12905 }, - { x: 12906, y: 12906 }, - { x: 12907, y: 12907 }, - { x: 12908, y: 12908 }, - { x: 12909, y: 12909 }, - { x: 12910, y: 12910 }, - { x: 12911, y: 12911 }, - { x: 12912, y: 12912 }, - { x: 12913, y: 12913 }, - { x: 12914, y: 12914 }, - { x: 12915, y: 12915 }, - { x: 12916, y: 12916 }, - { x: 12917, y: 12917 }, - { x: 12918, y: 12918 }, - { x: 12919, y: 12919 }, - { x: 12920, y: 12920 }, - { x: 12921, y: 12921 }, - { x: 12922, y: 12922 }, - { x: 12923, y: 12923 }, - { x: 12924, y: 12924 }, - { x: 12925, y: 12925 }, - { x: 12926, y: 12926 }, - { x: 12927, y: 12927 }, - { x: 12928, y: 12928 }, - { x: 12929, y: 12929 }, - { x: 12930, y: 12930 }, - { x: 12931, y: 12931 }, - { x: 12932, y: 12932 }, - { x: 12933, y: 12933 }, - { x: 12934, y: 12934 }, - { x: 12935, y: 12935 }, - { x: 12936, y: 12936 }, - { x: 12937, y: 12937 }, - { x: 12938, y: 12938 }, - { x: 12939, y: 12939 }, - { x: 12940, y: 12940 }, - { x: 12941, y: 12941 }, - { x: 12942, y: 12942 }, - { x: 12943, y: 12943 }, - { x: 12944, y: 12944 }, - { x: 12945, y: 12945 }, - { x: 12946, y: 12946 }, - { x: 12947, y: 12947 }, - { x: 12948, y: 12948 }, - { x: 12949, y: 12949 }, - { x: 12950, y: 12950 }, - { x: 12951, y: 12951 }, - { x: 12952, y: 12952 }, - { x: 12953, y: 12953 }, - { x: 12954, y: 12954 }, - { x: 12955, y: 12955 }, - { x: 12956, y: 12956 }, - { x: 12957, y: 12957 }, - { x: 12958, y: 12958 }, - { x: 12959, y: 12959 }, - { x: 12960, y: 12960 }, - { x: 12961, y: 12961 }, - { x: 12962, y: 12962 }, - { x: 12963, y: 12963 }, - { x: 12964, y: 12964 }, - { x: 12965, y: 12965 }, - { x: 12966, y: 12966 }, - { x: 12967, y: 12967 }, - { x: 12968, y: 12968 }, - { x: 12969, y: 12969 }, - { x: 12970, y: 12970 }, - { x: 12971, y: 12971 }, - { x: 12972, y: 12972 }, - { x: 12973, y: 12973 }, - { x: 12974, y: 12974 }, - { x: 12975, y: 12975 }, - { x: 12976, y: 12976 }, - { x: 12977, y: 12977 }, - { x: 12978, y: 12978 }, - { x: 12979, y: 12979 }, - { x: 12980, y: 12980 }, - { x: 12981, y: 12981 }, - { x: 12982, y: 12982 }, - { x: 12983, y: 12983 }, - { x: 12984, y: 12984 }, - { x: 12985, y: 12985 }, - { x: 12986, y: 12986 }, - { x: 12987, y: 12987 }, - { x: 12988, y: 12988 }, - { x: 12989, y: 12989 }, - { x: 12990, y: 12990 }, - { x: 12991, y: 12991 }, - { x: 12992, y: 12992 }, - { x: 12993, y: 12993 }, - { x: 12994, y: 12994 }, - { x: 12995, y: 12995 }, - { x: 12996, y: 12996 }, - { x: 12997, y: 12997 }, - { x: 12998, y: 12998 }, - { x: 12999, y: 12999 }, - { x: 13000, y: 13000 }, - { x: 13001, y: 13001 }, - { x: 13002, y: 13002 }, - { x: 13003, y: 13003 }, - { x: 13004, y: 13004 }, - { x: 13005, y: 13005 }, - { x: 13006, y: 13006 }, - { x: 13007, y: 13007 }, - { x: 13008, y: 13008 }, - { x: 13009, y: 13009 }, - { x: 13010, y: 13010 }, - { x: 13011, y: 13011 }, - { x: 13012, y: 13012 }, - { x: 13013, y: 13013 }, - { x: 13014, y: 13014 }, - { x: 13015, y: 13015 }, - { x: 13016, y: 13016 }, - { x: 13017, y: 13017 }, - { x: 13018, y: 13018 }, - { x: 13019, y: 13019 }, - { x: 13020, y: 13020 }, - { x: 13021, y: 13021 }, - { x: 13022, y: 13022 }, - { x: 13023, y: 13023 }, - { x: 13024, y: 13024 }, - { x: 13025, y: 13025 }, - { x: 13026, y: 13026 }, - { x: 13027, y: 13027 }, - { x: 13028, y: 13028 }, - { x: 13029, y: 13029 }, - { x: 13030, y: 13030 }, - { x: 13031, y: 13031 }, - { x: 13032, y: 13032 }, - { x: 13033, y: 13033 }, - { x: 13034, y: 13034 }, - { x: 13035, y: 13035 }, - { x: 13036, y: 13036 }, - { x: 13037, y: 13037 }, - { x: 13038, y: 13038 }, - { x: 13039, y: 13039 }, - { x: 13040, y: 13040 }, - { x: 13041, y: 13041 }, - { x: 13042, y: 13042 }, - { x: 13043, y: 13043 }, - { x: 13044, y: 13044 }, - { x: 13045, y: 13045 }, - { x: 13046, y: 13046 }, - { x: 13047, y: 13047 }, - { x: 13048, y: 13048 }, - { x: 13049, y: 13049 }, - { x: 13050, y: 13050 }, - { x: 13051, y: 13051 }, - { x: 13052, y: 13052 }, - { x: 13053, y: 13053 }, - { x: 13054, y: 13054 }, - { x: 13055, y: 13055 }, - { x: 13056, y: 13056 }, - { x: 13057, y: 13057 }, - { x: 13058, y: 13058 }, - { x: 13059, y: 13059 }, - { x: 13060, y: 13060 }, - { x: 13061, y: 13061 }, - { x: 13062, y: 13062 }, - { x: 13063, y: 13063 }, - { x: 13064, y: 13064 }, - { x: 13065, y: 13065 }, - { x: 13066, y: 13066 }, - { x: 13067, y: 13067 }, - { x: 13068, y: 13068 }, - { x: 13069, y: 13069 }, - { x: 13070, y: 13070 }, - { x: 13071, y: 13071 }, - { x: 13072, y: 13072 }, - { x: 13073, y: 13073 }, - { x: 13074, y: 13074 }, - { x: 13075, y: 13075 }, - { x: 13076, y: 13076 }, - { x: 13077, y: 13077 }, - { x: 13078, y: 13078 }, - { x: 13079, y: 13079 }, - { x: 13080, y: 13080 }, - { x: 13081, y: 13081 }, - { x: 13082, y: 13082 }, - { x: 13083, y: 13083 }, - { x: 13084, y: 13084 }, - { x: 13085, y: 13085 }, - { x: 13086, y: 13086 }, - { x: 13087, y: 13087 }, - { x: 13088, y: 13088 }, - { x: 13089, y: 13089 }, - { x: 13090, y: 13090 }, - { x: 13091, y: 13091 }, - { x: 13092, y: 13092 }, - { x: 13093, y: 13093 }, - { x: 13094, y: 13094 }, - { x: 13095, y: 13095 }, - { x: 13096, y: 13096 }, - { x: 13097, y: 13097 }, - { x: 13098, y: 13098 }, - { x: 13099, y: 13099 }, - { x: 13100, y: 13100 }, - { x: 13101, y: 13101 }, - { x: 13102, y: 13102 }, - { x: 13103, y: 13103 }, - { x: 13104, y: 13104 }, - { x: 13105, y: 13105 }, - { x: 13106, y: 13106 }, - { x: 13107, y: 13107 }, - { x: 13108, y: 13108 }, - { x: 13109, y: 13109 }, - { x: 13110, y: 13110 }, - { x: 13111, y: 13111 }, - { x: 13112, y: 13112 }, - { x: 13113, y: 13113 }, - { x: 13114, y: 13114 }, - { x: 13115, y: 13115 }, - { x: 13116, y: 13116 }, - { x: 13117, y: 13117 }, - { x: 13118, y: 13118 }, - { x: 13119, y: 13119 }, - { x: 13120, y: 13120 }, - { x: 13121, y: 13121 }, - { x: 13122, y: 13122 }, - { x: 13123, y: 13123 }, - { x: 13124, y: 13124 }, - { x: 13125, y: 13125 }, - { x: 13126, y: 13126 }, - { x: 13127, y: 13127 }, - { x: 13128, y: 13128 }, - { x: 13129, y: 13129 }, - { x: 13130, y: 13130 }, - { x: 13131, y: 13131 }, - { x: 13132, y: 13132 }, - { x: 13133, y: 13133 }, - { x: 13134, y: 13134 }, - { x: 13135, y: 13135 }, - { x: 13136, y: 13136 }, - { x: 13137, y: 13137 }, - { x: 13138, y: 13138 }, - { x: 13139, y: 13139 }, - { x: 13140, y: 13140 }, - { x: 13141, y: 13141 }, - { x: 13142, y: 13142 }, - { x: 13143, y: 13143 }, - { x: 13144, y: 13144 }, - { x: 13145, y: 13145 }, - { x: 13146, y: 13146 }, - { x: 13147, y: 13147 }, - { x: 13148, y: 13148 }, - { x: 13149, y: 13149 }, - { x: 13150, y: 13150 }, - { x: 13151, y: 13151 }, - { x: 13152, y: 13152 }, - { x: 13153, y: 13153 }, - { x: 13154, y: 13154 }, - { x: 13155, y: 13155 }, - { x: 13156, y: 13156 }, - { x: 13157, y: 13157 }, - { x: 13158, y: 13158 }, - { x: 13159, y: 13159 }, - { x: 13160, y: 13160 }, - { x: 13161, y: 13161 }, - { x: 13162, y: 13162 }, - { x: 13163, y: 13163 }, - { x: 13164, y: 13164 }, - { x: 13165, y: 13165 }, - { x: 13166, y: 13166 }, - { x: 13167, y: 13167 }, - { x: 13168, y: 13168 }, - { x: 13169, y: 13169 }, - { x: 13170, y: 13170 }, - { x: 13171, y: 13171 }, - { x: 13172, y: 13172 }, - { x: 13173, y: 13173 }, - { x: 13174, y: 13174 }, - { x: 13175, y: 13175 }, - { x: 13176, y: 13176 }, - { x: 13177, y: 13177 }, - { x: 13178, y: 13178 }, - { x: 13179, y: 13179 }, - { x: 13180, y: 13180 }, - { x: 13181, y: 13181 }, - { x: 13182, y: 13182 }, - { x: 13183, y: 13183 }, - { x: 13184, y: 13184 }, - { x: 13185, y: 13185 }, - { x: 13186, y: 13186 }, - { x: 13187, y: 13187 }, - { x: 13188, y: 13188 }, - { x: 13189, y: 13189 }, - { x: 13190, y: 13190 }, - { x: 13191, y: 13191 }, - { x: 13192, y: 13192 }, - { x: 13193, y: 13193 }, - { x: 13194, y: 13194 }, - { x: 13195, y: 13195 }, - { x: 13196, y: 13196 }, - { x: 13197, y: 13197 }, - { x: 13198, y: 13198 }, - { x: 13199, y: 13199 }, - { x: 13200, y: 13200 }, - { x: 13201, y: 13201 }, - { x: 13202, y: 13202 }, - { x: 13203, y: 13203 }, - { x: 13204, y: 13204 }, - { x: 13205, y: 13205 }, - { x: 13206, y: 13206 }, - { x: 13207, y: 13207 }, - { x: 13208, y: 13208 }, - { x: 13209, y: 13209 }, - { x: 13210, y: 13210 }, - { x: 13211, y: 13211 }, - { x: 13212, y: 13212 }, - { x: 13213, y: 13213 }, - { x: 13214, y: 13214 }, - { x: 13215, y: 13215 }, - { x: 13216, y: 13216 }, - { x: 13217, y: 13217 }, - { x: 13218, y: 13218 }, - { x: 13219, y: 13219 }, - { x: 13220, y: 13220 }, - { x: 13221, y: 13221 }, - { x: 13222, y: 13222 }, - { x: 13223, y: 13223 }, - { x: 13224, y: 13224 }, - { x: 13225, y: 13225 }, - { x: 13226, y: 13226 }, - { x: 13227, y: 13227 }, - { x: 13228, y: 13228 }, - { x: 13229, y: 13229 }, - { x: 13230, y: 13230 }, - { x: 13231, y: 13231 }, - { x: 13232, y: 13232 }, - { x: 13233, y: 13233 }, - { x: 13234, y: 13234 }, - { x: 13235, y: 13235 }, - { x: 13236, y: 13236 }, - { x: 13237, y: 13237 }, - { x: 13238, y: 13238 }, - { x: 13239, y: 13239 }, - { x: 13240, y: 13240 }, - { x: 13241, y: 13241 }, - { x: 13242, y: 13242 }, - { x: 13243, y: 13243 }, - { x: 13244, y: 13244 }, - { x: 13245, y: 13245 }, - { x: 13246, y: 13246 }, - { x: 13247, y: 13247 }, - { x: 13248, y: 13248 }, - { x: 13249, y: 13249 }, - { x: 13250, y: 13250 }, - { x: 13251, y: 13251 }, - { x: 13252, y: 13252 }, - { x: 13253, y: 13253 }, - { x: 13254, y: 13254 }, - { x: 13255, y: 13255 }, - { x: 13256, y: 13256 }, - { x: 13257, y: 13257 }, - { x: 13258, y: 13258 }, - { x: 13259, y: 13259 }, - { x: 13260, y: 13260 }, - { x: 13261, y: 13261 }, - { x: 13262, y: 13262 }, - { x: 13263, y: 13263 }, - { x: 13264, y: 13264 }, - { x: 13265, y: 13265 }, - { x: 13266, y: 13266 }, - { x: 13267, y: 13267 }, - { x: 13268, y: 13268 }, - { x: 13269, y: 13269 }, - { x: 13270, y: 13270 }, - { x: 13271, y: 13271 }, - { x: 13272, y: 13272 }, - { x: 13273, y: 13273 }, - { x: 13274, y: 13274 }, - { x: 13275, y: 13275 }, - { x: 13276, y: 13276 }, - { x: 13277, y: 13277 }, - { x: 13278, y: 13278 }, - { x: 13279, y: 13279 }, - { x: 13280, y: 13280 }, - { x: 13281, y: 13281 }, - { x: 13282, y: 13282 }, - { x: 13283, y: 13283 }, - { x: 13284, y: 13284 }, - { x: 13285, y: 13285 }, - { x: 13286, y: 13286 }, - { x: 13287, y: 13287 }, - { x: 13288, y: 13288 }, - { x: 13289, y: 13289 }, - { x: 13290, y: 13290 }, - { x: 13291, y: 13291 }, - { x: 13292, y: 13292 }, - { x: 13293, y: 13293 }, - { x: 13294, y: 13294 }, - { x: 13295, y: 13295 }, - { x: 13296, y: 13296 }, - { x: 13297, y: 13297 }, - { x: 13298, y: 13298 }, - { x: 13299, y: 13299 }, - { x: 13300, y: 13300 }, - { x: 13301, y: 13301 }, - { x: 13302, y: 13302 }, - { x: 13303, y: 13303 }, - { x: 13304, y: 13304 }, - { x: 13305, y: 13305 }, - { x: 13306, y: 13306 }, - { x: 13307, y: 13307 }, - { x: 13308, y: 13308 }, - { x: 13309, y: 13309 }, - { x: 13310, y: 13310 }, - { x: 13311, y: 13311 }, - { x: 13312, y: 13312 }, - { x: 13313, y: 13313 }, - { x: 13314, y: 13314 }, - { x: 13315, y: 13315 }, - { x: 13316, y: 13316 }, - { x: 13317, y: 13317 }, - { x: 13318, y: 13318 }, - { x: 13319, y: 13319 }, - { x: 13320, y: 13320 }, - { x: 13321, y: 13321 }, - { x: 13322, y: 13322 }, - { x: 13323, y: 13323 }, - { x: 13324, y: 13324 }, - { x: 13325, y: 13325 }, - { x: 13326, y: 13326 }, - { x: 13327, y: 13327 }, - { x: 13328, y: 13328 }, - { x: 13329, y: 13329 }, - { x: 13330, y: 13330 }, - { x: 13331, y: 13331 }, - { x: 13332, y: 13332 }, - { x: 13333, y: 13333 }, - { x: 13334, y: 13334 }, - { x: 13335, y: 13335 }, - { x: 13336, y: 13336 }, - { x: 13337, y: 13337 }, - { x: 13338, y: 13338 }, - { x: 13339, y: 13339 }, - { x: 13340, y: 13340 }, - { x: 13341, y: 13341 }, - { x: 13342, y: 13342 }, - { x: 13343, y: 13343 }, - { x: 13344, y: 13344 }, - { x: 13345, y: 13345 }, - { x: 13346, y: 13346 }, - { x: 13347, y: 13347 }, - { x: 13348, y: 13348 }, - { x: 13349, y: 13349 }, - { x: 13350, y: 13350 }, - { x: 13351, y: 13351 }, - { x: 13352, y: 13352 }, - { x: 13353, y: 13353 }, - { x: 13354, y: 13354 }, - { x: 13355, y: 13355 }, - { x: 13356, y: 13356 }, - { x: 13357, y: 13357 }, - { x: 13358, y: 13358 }, - { x: 13359, y: 13359 }, - { x: 13360, y: 13360 }, - { x: 13361, y: 13361 }, - { x: 13362, y: 13362 }, - { x: 13363, y: 13363 }, - { x: 13364, y: 13364 }, - { x: 13365, y: 13365 }, - { x: 13366, y: 13366 }, - { x: 13367, y: 13367 }, - { x: 13368, y: 13368 }, - { x: 13369, y: 13369 }, - { x: 13370, y: 13370 }, - { x: 13371, y: 13371 }, - { x: 13372, y: 13372 }, - { x: 13373, y: 13373 }, - { x: 13374, y: 13374 }, - { x: 13375, y: 13375 }, - { x: 13376, y: 13376 }, - { x: 13377, y: 13377 }, - { x: 13378, y: 13378 }, - { x: 13379, y: 13379 }, - { x: 13380, y: 13380 }, - { x: 13381, y: 13381 }, - { x: 13382, y: 13382 }, - { x: 13383, y: 13383 }, - { x: 13384, y: 13384 }, - { x: 13385, y: 13385 }, - { x: 13386, y: 13386 }, - { x: 13387, y: 13387 }, - { x: 13388, y: 13388 }, - { x: 13389, y: 13389 }, - { x: 13390, y: 13390 }, - { x: 13391, y: 13391 }, - { x: 13392, y: 13392 }, - { x: 13393, y: 13393 }, - { x: 13394, y: 13394 }, - { x: 13395, y: 13395 }, - { x: 13396, y: 13396 }, - { x: 13397, y: 13397 }, - { x: 13398, y: 13398 }, - { x: 13399, y: 13399 }, - { x: 13400, y: 13400 }, - { x: 13401, y: 13401 }, - { x: 13402, y: 13402 }, - { x: 13403, y: 13403 }, - { x: 13404, y: 13404 }, - { x: 13405, y: 13405 }, - { x: 13406, y: 13406 }, - { x: 13407, y: 13407 }, - { x: 13408, y: 13408 }, - { x: 13409, y: 13409 }, - { x: 13410, y: 13410 }, - { x: 13411, y: 13411 }, - { x: 13412, y: 13412 }, - { x: 13413, y: 13413 }, - { x: 13414, y: 13414 }, - { x: 13415, y: 13415 }, - { x: 13416, y: 13416 }, - { x: 13417, y: 13417 }, - { x: 13418, y: 13418 }, - { x: 13419, y: 13419 }, - { x: 13420, y: 13420 }, - { x: 13421, y: 13421 }, - { x: 13422, y: 13422 }, - { x: 13423, y: 13423 }, - { x: 13424, y: 13424 }, - { x: 13425, y: 13425 }, - { x: 13426, y: 13426 }, - { x: 13427, y: 13427 }, - { x: 13428, y: 13428 }, - { x: 13429, y: 13429 }, - { x: 13430, y: 13430 }, - { x: 13431, y: 13431 }, - { x: 13432, y: 13432 }, - { x: 13433, y: 13433 }, - { x: 13434, y: 13434 }, - { x: 13435, y: 13435 }, - { x: 13436, y: 13436 }, - { x: 13437, y: 13437 }, - { x: 13438, y: 13438 }, - { x: 13439, y: 13439 }, - { x: 13440, y: 13440 }, - { x: 13441, y: 13441 }, - { x: 13442, y: 13442 }, - { x: 13443, y: 13443 }, - { x: 13444, y: 13444 }, - { x: 13445, y: 13445 }, - { x: 13446, y: 13446 }, - { x: 13447, y: 13447 }, - { x: 13448, y: 13448 }, - { x: 13449, y: 13449 }, - { x: 13450, y: 13450 }, - { x: 13451, y: 13451 }, - { x: 13452, y: 13452 }, - { x: 13453, y: 13453 }, - { x: 13454, y: 13454 }, - { x: 13455, y: 13455 }, - { x: 13456, y: 13456 }, - { x: 13457, y: 13457 }, - { x: 13458, y: 13458 }, - { x: 13459, y: 13459 }, - { x: 13460, y: 13460 }, - { x: 13461, y: 13461 }, - { x: 13462, y: 13462 }, - { x: 13463, y: 13463 }, - { x: 13464, y: 13464 }, - { x: 13465, y: 13465 }, - { x: 13466, y: 13466 }, - { x: 13467, y: 13467 }, - { x: 13468, y: 13468 }, - { x: 13469, y: 13469 }, - { x: 13470, y: 13470 }, - { x: 13471, y: 13471 }, - { x: 13472, y: 13472 }, - { x: 13473, y: 13473 }, - { x: 13474, y: 13474 }, - { x: 13475, y: 13475 }, - { x: 13476, y: 13476 }, - { x: 13477, y: 13477 }, - { x: 13478, y: 13478 }, - { x: 13479, y: 13479 }, - { x: 13480, y: 13480 }, - { x: 13481, y: 13481 }, - { x: 13482, y: 13482 }, - { x: 13483, y: 13483 }, - { x: 13484, y: 13484 }, - { x: 13485, y: 13485 }, - { x: 13486, y: 13486 }, - { x: 13487, y: 13487 }, - { x: 13488, y: 13488 }, - { x: 13489, y: 13489 }, - { x: 13490, y: 13490 }, - { x: 13491, y: 13491 }, - { x: 13492, y: 13492 }, - { x: 13493, y: 13493 }, - { x: 13494, y: 13494 }, - { x: 13495, y: 13495 }, - { x: 13496, y: 13496 }, - { x: 13497, y: 13497 }, - { x: 13498, y: 13498 }, - { x: 13499, y: 13499 }, - { x: 13500, y: 13500 }, - { x: 13501, y: 13501 }, - { x: 13502, y: 13502 }, - { x: 13503, y: 13503 }, - { x: 13504, y: 13504 }, - { x: 13505, y: 13505 }, - { x: 13506, y: 13506 }, - { x: 13507, y: 13507 }, - { x: 13508, y: 13508 }, - { x: 13509, y: 13509 }, - { x: 13510, y: 13510 }, - { x: 13511, y: 13511 }, - { x: 13512, y: 13512 }, - { x: 13513, y: 13513 }, - { x: 13514, y: 13514 }, - { x: 13515, y: 13515 }, - { x: 13516, y: 13516 }, - { x: 13517, y: 13517 }, - { x: 13518, y: 13518 }, - { x: 13519, y: 13519 }, - { x: 13520, y: 13520 }, - { x: 13521, y: 13521 }, - { x: 13522, y: 13522 }, - { x: 13523, y: 13523 }, - { x: 13524, y: 13524 }, - { x: 13525, y: 13525 }, - { x: 13526, y: 13526 }, - { x: 13527, y: 13527 }, - { x: 13528, y: 13528 }, - { x: 13529, y: 13529 }, - { x: 13530, y: 13530 }, - { x: 13531, y: 13531 }, - { x: 13532, y: 13532 }, - { x: 13533, y: 13533 }, - { x: 13534, y: 13534 }, - { x: 13535, y: 13535 }, - { x: 13536, y: 13536 }, - { x: 13537, y: 13537 }, - { x: 13538, y: 13538 }, - { x: 13539, y: 13539 }, - { x: 13540, y: 13540 }, - { x: 13541, y: 13541 }, - { x: 13542, y: 13542 }, - { x: 13543, y: 13543 }, - { x: 13544, y: 13544 }, - { x: 13545, y: 13545 }, - { x: 13546, y: 13546 }, - { x: 13547, y: 13547 }, - { x: 13548, y: 13548 }, - { x: 13549, y: 13549 }, - { x: 13550, y: 13550 }, - { x: 13551, y: 13551 }, - { x: 13552, y: 13552 }, - { x: 13553, y: 13553 }, - { x: 13554, y: 13554 }, - { x: 13555, y: 13555 }, - { x: 13556, y: 13556 }, - { x: 13557, y: 13557 }, - { x: 13558, y: 13558 }, - { x: 13559, y: 13559 }, - { x: 13560, y: 13560 }, - { x: 13561, y: 13561 }, - { x: 13562, y: 13562 }, - { x: 13563, y: 13563 }, - { x: 13564, y: 13564 }, - { x: 13565, y: 13565 }, - { x: 13566, y: 13566 }, - { x: 13567, y: 13567 }, - { x: 13568, y: 13568 }, - { x: 13569, y: 13569 }, - { x: 13570, y: 13570 }, - { x: 13571, y: 13571 }, - { x: 13572, y: 13572 }, - { x: 13573, y: 13573 }, - { x: 13574, y: 13574 }, - { x: 13575, y: 13575 }, - { x: 13576, y: 13576 }, - { x: 13577, y: 13577 }, - { x: 13578, y: 13578 }, - { x: 13579, y: 13579 }, - { x: 13580, y: 13580 }, - { x: 13581, y: 13581 }, - { x: 13582, y: 13582 }, - { x: 13583, y: 13583 }, - { x: 13584, y: 13584 }, - { x: 13585, y: 13585 }, - { x: 13586, y: 13586 }, - { x: 13587, y: 13587 }, - { x: 13588, y: 13588 }, - { x: 13589, y: 13589 }, - { x: 13590, y: 13590 }, - { x: 13591, y: 13591 }, - { x: 13592, y: 13592 }, - { x: 13593, y: 13593 }, - { x: 13594, y: 13594 }, - { x: 13595, y: 13595 }, - { x: 13596, y: 13596 }, - { x: 13597, y: 13597 }, - { x: 13598, y: 13598 }, - { x: 13599, y: 13599 }, - { x: 13600, y: 13600 }, - { x: 13601, y: 13601 }, - { x: 13602, y: 13602 }, - { x: 13603, y: 13603 }, - { x: 13604, y: 13604 }, - { x: 13605, y: 13605 }, - { x: 13606, y: 13606 }, - { x: 13607, y: 13607 }, - { x: 13608, y: 13608 }, - { x: 13609, y: 13609 }, - { x: 13610, y: 13610 }, - { x: 13611, y: 13611 }, - { x: 13612, y: 13612 }, - { x: 13613, y: 13613 }, - { x: 13614, y: 13614 }, - { x: 13615, y: 13615 }, - { x: 13616, y: 13616 }, - { x: 13617, y: 13617 }, - { x: 13618, y: 13618 }, - { x: 13619, y: 13619 }, - { x: 13620, y: 13620 }, - { x: 13621, y: 13621 }, - { x: 13622, y: 13622 }, - { x: 13623, y: 13623 }, - { x: 13624, y: 13624 }, - { x: 13625, y: 13625 }, - { x: 13626, y: 13626 }, - { x: 13627, y: 13627 }, - { x: 13628, y: 13628 }, - { x: 13629, y: 13629 }, - { x: 13630, y: 13630 }, - { x: 13631, y: 13631 }, - { x: 13632, y: 13632 }, - { x: 13633, y: 13633 }, - { x: 13634, y: 13634 }, - { x: 13635, y: 13635 }, - { x: 13636, y: 13636 }, - { x: 13637, y: 13637 }, - { x: 13638, y: 13638 }, - { x: 13639, y: 13639 }, - { x: 13640, y: 13640 }, - { x: 13641, y: 13641 }, - { x: 13642, y: 13642 }, - { x: 13643, y: 13643 }, - { x: 13644, y: 13644 }, - { x: 13645, y: 13645 }, - { x: 13646, y: 13646 }, - { x: 13647, y: 13647 }, - { x: 13648, y: 13648 }, - { x: 13649, y: 13649 }, - { x: 13650, y: 13650 }, - { x: 13651, y: 13651 }, - { x: 13652, y: 13652 }, - { x: 13653, y: 13653 }, - { x: 13654, y: 13654 }, - { x: 13655, y: 13655 }, - { x: 13656, y: 13656 }, - { x: 13657, y: 13657 }, - { x: 13658, y: 13658 }, - { x: 13659, y: 13659 }, - { x: 13660, y: 13660 }, - { x: 13661, y: 13661 }, - { x: 13662, y: 13662 }, - { x: 13663, y: 13663 }, - { x: 13664, y: 13664 }, - { x: 13665, y: 13665 }, - { x: 13666, y: 13666 }, - { x: 13667, y: 13667 }, - { x: 13668, y: 13668 }, - { x: 13669, y: 13669 }, - { x: 13670, y: 13670 }, - { x: 13671, y: 13671 }, - { x: 13672, y: 13672 }, - { x: 13673, y: 13673 }, - { x: 13674, y: 13674 }, - { x: 13675, y: 13675 }, - { x: 13676, y: 13676 }, - { x: 13677, y: 13677 }, - { x: 13678, y: 13678 }, - { x: 13679, y: 13679 }, - { x: 13680, y: 13680 }, - { x: 13681, y: 13681 }, - { x: 13682, y: 13682 }, - { x: 13683, y: 13683 }, - { x: 13684, y: 13684 }, - { x: 13685, y: 13685 }, - { x: 13686, y: 13686 }, - { x: 13687, y: 13687 }, - { x: 13688, y: 13688 }, - { x: 13689, y: 13689 }, - { x: 13690, y: 13690 }, - { x: 13691, y: 13691 }, - { x: 13692, y: 13692 }, - { x: 13693, y: 13693 }, - { x: 13694, y: 13694 }, - { x: 13695, y: 13695 }, - { x: 13696, y: 13696 }, - { x: 13697, y: 13697 }, - { x: 13698, y: 13698 }, - { x: 13699, y: 13699 }, - { x: 13700, y: 13700 }, - { x: 13701, y: 13701 }, - { x: 13702, y: 13702 }, - { x: 13703, y: 13703 }, - { x: 13704, y: 13704 }, - { x: 13705, y: 13705 }, - { x: 13706, y: 13706 }, - { x: 13707, y: 13707 }, - { x: 13708, y: 13708 }, - { x: 13709, y: 13709 }, - { x: 13710, y: 13710 }, - { x: 13711, y: 13711 }, - { x: 13712, y: 13712 }, - { x: 13713, y: 13713 }, - { x: 13714, y: 13714 }, - { x: 13715, y: 13715 }, - { x: 13716, y: 13716 }, - { x: 13717, y: 13717 }, - { x: 13718, y: 13718 }, - { x: 13719, y: 13719 }, - { x: 13720, y: 13720 }, - { x: 13721, y: 13721 }, - { x: 13722, y: 13722 }, - { x: 13723, y: 13723 }, - { x: 13724, y: 13724 }, - { x: 13725, y: 13725 }, - { x: 13726, y: 13726 }, - { x: 13727, y: 13727 }, - { x: 13728, y: 13728 }, - { x: 13729, y: 13729 }, - { x: 13730, y: 13730 }, - { x: 13731, y: 13731 }, - { x: 13732, y: 13732 }, - { x: 13733, y: 13733 }, - { x: 13734, y: 13734 }, - { x: 13735, y: 13735 }, - { x: 13736, y: 13736 }, - { x: 13737, y: 13737 }, - { x: 13738, y: 13738 }, - { x: 13739, y: 13739 }, - { x: 13740, y: 13740 }, - { x: 13741, y: 13741 }, - { x: 13742, y: 13742 }, - { x: 13743, y: 13743 }, - { x: 13744, y: 13744 }, - { x: 13745, y: 13745 }, - { x: 13746, y: 13746 }, - { x: 13747, y: 13747 }, - { x: 13748, y: 13748 }, - { x: 13749, y: 13749 }, - { x: 13750, y: 13750 }, - { x: 13751, y: 13751 }, - { x: 13752, y: 13752 }, - { x: 13753, y: 13753 }, - { x: 13754, y: 13754 }, - { x: 13755, y: 13755 }, - { x: 13756, y: 13756 }, - { x: 13757, y: 13757 }, - { x: 13758, y: 13758 }, - { x: 13759, y: 13759 }, - { x: 13760, y: 13760 }, - { x: 13761, y: 13761 }, - { x: 13762, y: 13762 }, - { x: 13763, y: 13763 }, - { x: 13764, y: 13764 }, - { x: 13765, y: 13765 }, - { x: 13766, y: 13766 }, - { x: 13767, y: 13767 }, - { x: 13768, y: 13768 }, - { x: 13769, y: 13769 }, - { x: 13770, y: 13770 }, - { x: 13771, y: 13771 }, - { x: 13772, y: 13772 }, - { x: 13773, y: 13773 }, - { x: 13774, y: 13774 }, - { x: 13775, y: 13775 }, - { x: 13776, y: 13776 }, - { x: 13777, y: 13777 }, - { x: 13778, y: 13778 }, - { x: 13779, y: 13779 }, - { x: 13780, y: 13780 }, - { x: 13781, y: 13781 }, - { x: 13782, y: 13782 }, - { x: 13783, y: 13783 }, - { x: 13784, y: 13784 }, - { x: 13785, y: 13785 }, - { x: 13786, y: 13786 }, - { x: 13787, y: 13787 }, - { x: 13788, y: 13788 }, - { x: 13789, y: 13789 }, - { x: 13790, y: 13790 }, - { x: 13791, y: 13791 }, - { x: 13792, y: 13792 }, - { x: 13793, y: 13793 }, - { x: 13794, y: 13794 }, - { x: 13795, y: 13795 }, - { x: 13796, y: 13796 }, - { x: 13797, y: 13797 }, - { x: 13798, y: 13798 }, - { x: 13799, y: 13799 }, - { x: 13800, y: 13800 }, - { x: 13801, y: 13801 }, - { x: 13802, y: 13802 }, - { x: 13803, y: 13803 }, - { x: 13804, y: 13804 }, - { x: 13805, y: 13805 }, - { x: 13806, y: 13806 }, - { x: 13807, y: 13807 }, - { x: 13808, y: 13808 }, - { x: 13809, y: 13809 }, - { x: 13810, y: 13810 }, - { x: 13811, y: 13811 }, - { x: 13812, y: 13812 }, - { x: 13813, y: 13813 }, - { x: 13814, y: 13814 }, - { x: 13815, y: 13815 }, - { x: 13816, y: 13816 }, - { x: 13817, y: 13817 }, - { x: 13818, y: 13818 }, - { x: 13819, y: 13819 }, - { x: 13820, y: 13820 }, - { x: 13821, y: 13821 }, - { x: 13822, y: 13822 }, - { x: 13823, y: 13823 }, - { x: 13824, y: 13824 }, - { x: 13825, y: 13825 }, - { x: 13826, y: 13826 }, - { x: 13827, y: 13827 }, - { x: 13828, y: 13828 }, - { x: 13829, y: 13829 }, - { x: 13830, y: 13830 }, - { x: 13831, y: 13831 }, - { x: 13832, y: 13832 }, - { x: 13833, y: 13833 }, - { x: 13834, y: 13834 }, - { x: 13835, y: 13835 }, - { x: 13836, y: 13836 }, - { x: 13837, y: 13837 }, - { x: 13838, y: 13838 }, - { x: 13839, y: 13839 }, - { x: 13840, y: 13840 }, - { x: 13841, y: 13841 }, - { x: 13842, y: 13842 }, - { x: 13843, y: 13843 }, - { x: 13844, y: 13844 }, - { x: 13845, y: 13845 }, - { x: 13846, y: 13846 }, - { x: 13847, y: 13847 }, - { x: 13848, y: 13848 }, - { x: 13849, y: 13849 }, - { x: 13850, y: 13850 }, - { x: 13851, y: 13851 }, - { x: 13852, y: 13852 }, - { x: 13853, y: 13853 }, - { x: 13854, y: 13854 }, - { x: 13855, y: 13855 }, - { x: 13856, y: 13856 }, - { x: 13857, y: 13857 }, - { x: 13858, y: 13858 }, - { x: 13859, y: 13859 }, - { x: 13860, y: 13860 }, - { x: 13861, y: 13861 }, - { x: 13862, y: 13862 }, - { x: 13863, y: 13863 }, - { x: 13864, y: 13864 }, - { x: 13865, y: 13865 }, - { x: 13866, y: 13866 }, - { x: 13867, y: 13867 }, - { x: 13868, y: 13868 }, - { x: 13869, y: 13869 }, - { x: 13870, y: 13870 }, - { x: 13871, y: 13871 }, - { x: 13872, y: 13872 }, - { x: 13873, y: 13873 }, - { x: 13874, y: 13874 }, - { x: 13875, y: 13875 }, - { x: 13876, y: 13876 }, - { x: 13877, y: 13877 }, - { x: 13878, y: 13878 }, - { x: 13879, y: 13879 }, - { x: 13880, y: 13880 }, - { x: 13881, y: 13881 }, - { x: 13882, y: 13882 }, - { x: 13883, y: 13883 }, - { x: 13884, y: 13884 }, - { x: 13885, y: 13885 }, - { x: 13886, y: 13886 }, - { x: 13887, y: 13887 }, - { x: 13888, y: 13888 }, - { x: 13889, y: 13889 }, - { x: 13890, y: 13890 }, - { x: 13891, y: 13891 }, - { x: 13892, y: 13892 }, - { x: 13893, y: 13893 }, - { x: 13894, y: 13894 }, - { x: 13895, y: 13895 }, - { x: 13896, y: 13896 }, - { x: 13897, y: 13897 }, - { x: 13898, y: 13898 }, - { x: 13899, y: 13899 }, - { x: 13900, y: 13900 }, - { x: 13901, y: 13901 }, - { x: 13902, y: 13902 }, - { x: 13903, y: 13903 }, - { x: 13904, y: 13904 }, - { x: 13905, y: 13905 }, - { x: 13906, y: 13906 }, - { x: 13907, y: 13907 }, - { x: 13908, y: 13908 }, - { x: 13909, y: 13909 }, - { x: 13910, y: 13910 }, - { x: 13911, y: 13911 }, - { x: 13912, y: 13912 }, - { x: 13913, y: 13913 }, - { x: 13914, y: 13914 }, - { x: 13915, y: 13915 }, - { x: 13916, y: 13916 }, - { x: 13917, y: 13917 }, - { x: 13918, y: 13918 }, - { x: 13919, y: 13919 }, - { x: 13920, y: 13920 }, - { x: 13921, y: 13921 }, - { x: 13922, y: 13922 }, - { x: 13923, y: 13923 }, - { x: 13924, y: 13924 }, - { x: 13925, y: 13925 }, - { x: 13926, y: 13926 }, - { x: 13927, y: 13927 }, - { x: 13928, y: 13928 }, - { x: 13929, y: 13929 }, - { x: 13930, y: 13930 }, - { x: 13931, y: 13931 }, - { x: 13932, y: 13932 }, - { x: 13933, y: 13933 }, - { x: 13934, y: 13934 }, - { x: 13935, y: 13935 }, - { x: 13936, y: 13936 }, - { x: 13937, y: 13937 }, - { x: 13938, y: 13938 }, - { x: 13939, y: 13939 }, - { x: 13940, y: 13940 }, - { x: 13941, y: 13941 }, - { x: 13942, y: 13942 }, - { x: 13943, y: 13943 }, - { x: 13944, y: 13944 }, - { x: 13945, y: 13945 }, - { x: 13946, y: 13946 }, - { x: 13947, y: 13947 }, - { x: 13948, y: 13948 }, - { x: 13949, y: 13949 }, - { x: 13950, y: 13950 }, - { x: 13951, y: 13951 }, - { x: 13952, y: 13952 }, - { x: 13953, y: 13953 }, - { x: 13954, y: 13954 }, - { x: 13955, y: 13955 }, - { x: 13956, y: 13956 }, - { x: 13957, y: 13957 }, - { x: 13958, y: 13958 }, - { x: 13959, y: 13959 }, - { x: 13960, y: 13960 }, - { x: 13961, y: 13961 }, - { x: 13962, y: 13962 }, - { x: 13963, y: 13963 }, - { x: 13964, y: 13964 }, - { x: 13965, y: 13965 }, - { x: 13966, y: 13966 }, - { x: 13967, y: 13967 }, - { x: 13968, y: 13968 }, - { x: 13969, y: 13969 }, - { x: 13970, y: 13970 }, - { x: 13971, y: 13971 }, - { x: 13972, y: 13972 }, - { x: 13973, y: 13973 }, - { x: 13974, y: 13974 }, - { x: 13975, y: 13975 }, - { x: 13976, y: 13976 }, - { x: 13977, y: 13977 }, - { x: 13978, y: 13978 }, - { x: 13979, y: 13979 }, - { x: 13980, y: 13980 }, - { x: 13981, y: 13981 }, - { x: 13982, y: 13982 }, - { x: 13983, y: 13983 }, - { x: 13984, y: 13984 }, - { x: 13985, y: 13985 }, - { x: 13986, y: 13986 }, - { x: 13987, y: 13987 }, - { x: 13988, y: 13988 }, - { x: 13989, y: 13989 }, - { x: 13990, y: 13990 }, - { x: 13991, y: 13991 }, - { x: 13992, y: 13992 }, - { x: 13993, y: 13993 }, - { x: 13994, y: 13994 }, - { x: 13995, y: 13995 }, - { x: 13996, y: 13996 }, - { x: 13997, y: 13997 }, - { x: 13998, y: 13998 }, - { x: 13999, y: 13999 }, - { x: 14000, y: 14000 }, - { x: 14001, y: 14001 }, - { x: 14002, y: 14002 }, - { x: 14003, y: 14003 }, - { x: 14004, y: 14004 }, - { x: 14005, y: 14005 }, - { x: 14006, y: 14006 }, - { x: 14007, y: 14007 }, - { x: 14008, y: 14008 }, - { x: 14009, y: 14009 }, - { x: 14010, y: 14010 }, - { x: 14011, y: 14011 }, - { x: 14012, y: 14012 }, - { x: 14013, y: 14013 }, - { x: 14014, y: 14014 }, - { x: 14015, y: 14015 }, - { x: 14016, y: 14016 }, - { x: 14017, y: 14017 }, - { x: 14018, y: 14018 }, - { x: 14019, y: 14019 }, - { x: 14020, y: 14020 }, - { x: 14021, y: 14021 }, - { x: 14022, y: 14022 }, - { x: 14023, y: 14023 }, - { x: 14024, y: 14024 }, - { x: 14025, y: 14025 }, - { x: 14026, y: 14026 }, - { x: 14027, y: 14027 }, - { x: 14028, y: 14028 }, - { x: 14029, y: 14029 }, - { x: 14030, y: 14030 }, - { x: 14031, y: 14031 }, - { x: 14032, y: 14032 }, - { x: 14033, y: 14033 }, - { x: 14034, y: 14034 }, - { x: 14035, y: 14035 }, - { x: 14036, y: 14036 }, - { x: 14037, y: 14037 }, - { x: 14038, y: 14038 }, - { x: 14039, y: 14039 }, - { x: 14040, y: 14040 }, - { x: 14041, y: 14041 }, - { x: 14042, y: 14042 }, - { x: 14043, y: 14043 }, - { x: 14044, y: 14044 }, - { x: 14045, y: 14045 }, - { x: 14046, y: 14046 }, - { x: 14047, y: 14047 }, - { x: 14048, y: 14048 }, - { x: 14049, y: 14049 }, - { x: 14050, y: 14050 }, - { x: 14051, y: 14051 }, - { x: 14052, y: 14052 }, - { x: 14053, y: 14053 }, - { x: 14054, y: 14054 }, - { x: 14055, y: 14055 }, - { x: 14056, y: 14056 }, - { x: 14057, y: 14057 }, - { x: 14058, y: 14058 }, - { x: 14059, y: 14059 }, - { x: 14060, y: 14060 }, - { x: 14061, y: 14061 }, - { x: 14062, y: 14062 }, - { x: 14063, y: 14063 }, - { x: 14064, y: 14064 }, - { x: 14065, y: 14065 }, - { x: 14066, y: 14066 }, - { x: 14067, y: 14067 }, - { x: 14068, y: 14068 }, - { x: 14069, y: 14069 }, - { x: 14070, y: 14070 }, - { x: 14071, y: 14071 }, - { x: 14072, y: 14072 }, - { x: 14073, y: 14073 }, - { x: 14074, y: 14074 }, - { x: 14075, y: 14075 }, - { x: 14076, y: 14076 }, - { x: 14077, y: 14077 }, - { x: 14078, y: 14078 }, - { x: 14079, y: 14079 }, - { x: 14080, y: 14080 }, - { x: 14081, y: 14081 }, - { x: 14082, y: 14082 }, - { x: 14083, y: 14083 }, - { x: 14084, y: 14084 }, - { x: 14085, y: 14085 }, - { x: 14086, y: 14086 }, - { x: 14087, y: 14087 }, - { x: 14088, y: 14088 }, - { x: 14089, y: 14089 }, - { x: 14090, y: 14090 }, - { x: 14091, y: 14091 }, - { x: 14092, y: 14092 }, - { x: 14093, y: 14093 }, - { x: 14094, y: 14094 }, - { x: 14095, y: 14095 }, - { x: 14096, y: 14096 }, - { x: 14097, y: 14097 }, - { x: 14098, y: 14098 }, - { x: 14099, y: 14099 }, - { x: 14100, y: 14100 }, - { x: 14101, y: 14101 }, - { x: 14102, y: 14102 }, - { x: 14103, y: 14103 }, - { x: 14104, y: 14104 }, - { x: 14105, y: 14105 }, - { x: 14106, y: 14106 }, - { x: 14107, y: 14107 }, - { x: 14108, y: 14108 }, - { x: 14109, y: 14109 }, - { x: 14110, y: 14110 }, - { x: 14111, y: 14111 }, - { x: 14112, y: 14112 }, - { x: 14113, y: 14113 }, - { x: 14114, y: 14114 }, - { x: 14115, y: 14115 }, - { x: 14116, y: 14116 }, - { x: 14117, y: 14117 }, - { x: 14118, y: 14118 }, - { x: 14119, y: 14119 }, - { x: 14120, y: 14120 }, - { x: 14121, y: 14121 }, - { x: 14122, y: 14122 }, - { x: 14123, y: 14123 }, - { x: 14124, y: 14124 }, - { x: 14125, y: 14125 }, - { x: 14126, y: 14126 }, - { x: 14127, y: 14127 }, - { x: 14128, y: 14128 }, - { x: 14129, y: 14129 }, - { x: 14130, y: 14130 }, - { x: 14131, y: 14131 }, - { x: 14132, y: 14132 }, - { x: 14133, y: 14133 }, - { x: 14134, y: 14134 }, - { x: 14135, y: 14135 }, - { x: 14136, y: 14136 }, - { x: 14137, y: 14137 }, - { x: 14138, y: 14138 }, - { x: 14139, y: 14139 }, - { x: 14140, y: 14140 }, - { x: 14141, y: 14141 }, - { x: 14142, y: 14142 }, - { x: 14143, y: 14143 }, - { x: 14144, y: 14144 }, - { x: 14145, y: 14145 }, - { x: 14146, y: 14146 }, - { x: 14147, y: 14147 }, - { x: 14148, y: 14148 }, - { x: 14149, y: 14149 }, - { x: 14150, y: 14150 }, - { x: 14151, y: 14151 }, - { x: 14152, y: 14152 }, - { x: 14153, y: 14153 }, - { x: 14154, y: 14154 }, - { x: 14155, y: 14155 }, - { x: 14156, y: 14156 }, - { x: 14157, y: 14157 }, - { x: 14158, y: 14158 }, - { x: 14159, y: 14159 }, - { x: 14160, y: 14160 }, - { x: 14161, y: 14161 }, - { x: 14162, y: 14162 }, - { x: 14163, y: 14163 }, - { x: 14164, y: 14164 }, - { x: 14165, y: 14165 }, - { x: 14166, y: 14166 }, - { x: 14167, y: 14167 }, - { x: 14168, y: 14168 }, - { x: 14169, y: 14169 }, - { x: 14170, y: 14170 }, - { x: 14171, y: 14171 }, - { x: 14172, y: 14172 }, - { x: 14173, y: 14173 }, - { x: 14174, y: 14174 }, - { x: 14175, y: 14175 }, - { x: 14176, y: 14176 }, - { x: 14177, y: 14177 }, - { x: 14178, y: 14178 }, - { x: 14179, y: 14179 }, - { x: 14180, y: 14180 }, - { x: 14181, y: 14181 }, - { x: 14182, y: 14182 }, - { x: 14183, y: 14183 }, - { x: 14184, y: 14184 }, - { x: 14185, y: 14185 }, - { x: 14186, y: 14186 }, - { x: 14187, y: 14187 }, - { x: 14188, y: 14188 }, - { x: 14189, y: 14189 }, - { x: 14190, y: 14190 }, - { x: 14191, y: 14191 }, - { x: 14192, y: 14192 }, - { x: 14193, y: 14193 }, - { x: 14194, y: 14194 }, - { x: 14195, y: 14195 }, - { x: 14196, y: 14196 }, - { x: 14197, y: 14197 }, - { x: 14198, y: 14198 }, - { x: 14199, y: 14199 }, - { x: 14200, y: 14200 }, - { x: 14201, y: 14201 }, - { x: 14202, y: 14202 }, - { x: 14203, y: 14203 }, - { x: 14204, y: 14204 }, - { x: 14205, y: 14205 }, - { x: 14206, y: 14206 }, - { x: 14207, y: 14207 }, - { x: 14208, y: 14208 }, - { x: 14209, y: 14209 }, - { x: 14210, y: 14210 }, - { x: 14211, y: 14211 }, - { x: 14212, y: 14212 }, - { x: 14213, y: 14213 }, - { x: 14214, y: 14214 }, - { x: 14215, y: 14215 }, - { x: 14216, y: 14216 }, - { x: 14217, y: 14217 }, - { x: 14218, y: 14218 }, - { x: 14219, y: 14219 }, - { x: 14220, y: 14220 }, - { x: 14221, y: 14221 }, - { x: 14222, y: 14222 }, - { x: 14223, y: 14223 }, - { x: 14224, y: 14224 }, - { x: 14225, y: 14225 }, - { x: 14226, y: 14226 }, - { x: 14227, y: 14227 }, - { x: 14228, y: 14228 }, - { x: 14229, y: 14229 }, - { x: 14230, y: 14230 }, - { x: 14231, y: 14231 }, - { x: 14232, y: 14232 }, - { x: 14233, y: 14233 }, - { x: 14234, y: 14234 }, - { x: 14235, y: 14235 }, - { x: 14236, y: 14236 }, - { x: 14237, y: 14237 }, - { x: 14238, y: 14238 }, - { x: 14239, y: 14239 }, - { x: 14240, y: 14240 }, - { x: 14241, y: 14241 }, - { x: 14242, y: 14242 }, - { x: 14243, y: 14243 }, - { x: 14244, y: 14244 }, - { x: 14245, y: 14245 }, - { x: 14246, y: 14246 }, - { x: 14247, y: 14247 }, - { x: 14248, y: 14248 }, - { x: 14249, y: 14249 }, - { x: 14250, y: 14250 }, - { x: 14251, y: 14251 }, - { x: 14252, y: 14252 }, - { x: 14253, y: 14253 }, - { x: 14254, y: 14254 }, - { x: 14255, y: 14255 }, - { x: 14256, y: 14256 }, - { x: 14257, y: 14257 }, - { x: 14258, y: 14258 }, - { x: 14259, y: 14259 }, - { x: 14260, y: 14260 }, - { x: 14261, y: 14261 }, - { x: 14262, y: 14262 }, - { x: 14263, y: 14263 }, - { x: 14264, y: 14264 }, - { x: 14265, y: 14265 }, - { x: 14266, y: 14266 }, - { x: 14267, y: 14267 }, - { x: 14268, y: 14268 }, - { x: 14269, y: 14269 }, - { x: 14270, y: 14270 }, - { x: 14271, y: 14271 }, - { x: 14272, y: 14272 }, - { x: 14273, y: 14273 }, - { x: 14274, y: 14274 }, - { x: 14275, y: 14275 }, - { x: 14276, y: 14276 }, - { x: 14277, y: 14277 }, - { x: 14278, y: 14278 }, - { x: 14279, y: 14279 }, - { x: 14280, y: 14280 }, - { x: 14281, y: 14281 }, - { x: 14282, y: 14282 }, - { x: 14283, y: 14283 }, - { x: 14284, y: 14284 }, - { x: 14285, y: 14285 }, - { x: 14286, y: 14286 }, - { x: 14287, y: 14287 }, - { x: 14288, y: 14288 }, - { x: 14289, y: 14289 }, - { x: 14290, y: 14290 }, - { x: 14291, y: 14291 }, - { x: 14292, y: 14292 }, - { x: 14293, y: 14293 }, - { x: 14294, y: 14294 }, - { x: 14295, y: 14295 }, - { x: 14296, y: 14296 }, - { x: 14297, y: 14297 }, - { x: 14298, y: 14298 }, - { x: 14299, y: 14299 }, - { x: 14300, y: 14300 }, - { x: 14301, y: 14301 }, - { x: 14302, y: 14302 }, - { x: 14303, y: 14303 }, - { x: 14304, y: 14304 }, - { x: 14305, y: 14305 }, - { x: 14306, y: 14306 }, - { x: 14307, y: 14307 }, - { x: 14308, y: 14308 }, - { x: 14309, y: 14309 }, - { x: 14310, y: 14310 }, - { x: 14311, y: 14311 }, - { x: 14312, y: 14312 }, - { x: 14313, y: 14313 }, - { x: 14314, y: 14314 }, - { x: 14315, y: 14315 }, - { x: 14316, y: 14316 }, - { x: 14317, y: 14317 }, - { x: 14318, y: 14318 }, - { x: 14319, y: 14319 }, - { x: 14320, y: 14320 }, - { x: 14321, y: 14321 }, - { x: 14322, y: 14322 }, - { x: 14323, y: 14323 }, - { x: 14324, y: 14324 }, - { x: 14325, y: 14325 }, - { x: 14326, y: 14326 }, - { x: 14327, y: 14327 }, - { x: 14328, y: 14328 }, - { x: 14329, y: 14329 }, - { x: 14330, y: 14330 }, - { x: 14331, y: 14331 }, - { x: 14332, y: 14332 }, - { x: 14333, y: 14333 }, - { x: 14334, y: 14334 }, - { x: 14335, y: 14335 }, - { x: 14336, y: 14336 }, - { x: 14337, y: 14337 }, - { x: 14338, y: 14338 }, - { x: 14339, y: 14339 }, - { x: 14340, y: 14340 }, - { x: 14341, y: 14341 }, - { x: 14342, y: 14342 }, - { x: 14343, y: 14343 }, - { x: 14344, y: 14344 }, - { x: 14345, y: 14345 }, - { x: 14346, y: 14346 }, - { x: 14347, y: 14347 }, - { x: 14348, y: 14348 }, - { x: 14349, y: 14349 }, - { x: 14350, y: 14350 }, - { x: 14351, y: 14351 }, - { x: 14352, y: 14352 }, - { x: 14353, y: 14353 }, - { x: 14354, y: 14354 }, - { x: 14355, y: 14355 }, - { x: 14356, y: 14356 }, - { x: 14357, y: 14357 }, - { x: 14358, y: 14358 }, - { x: 14359, y: 14359 }, - { x: 14360, y: 14360 }, - { x: 14361, y: 14361 }, - { x: 14362, y: 14362 }, - { x: 14363, y: 14363 }, - { x: 14364, y: 14364 }, - { x: 14365, y: 14365 }, - { x: 14366, y: 14366 }, - { x: 14367, y: 14367 }, - { x: 14368, y: 14368 }, - { x: 14369, y: 14369 }, - { x: 14370, y: 14370 }, - { x: 14371, y: 14371 }, - { x: 14372, y: 14372 }, - { x: 14373, y: 14373 }, - { x: 14374, y: 14374 }, - { x: 14375, y: 14375 }, - { x: 14376, y: 14376 }, - { x: 14377, y: 14377 }, - { x: 14378, y: 14378 }, - { x: 14379, y: 14379 }, - { x: 14380, y: 14380 }, - { x: 14381, y: 14381 }, - { x: 14382, y: 14382 }, - { x: 14383, y: 14383 }, - { x: 14384, y: 14384 }, - { x: 14385, y: 14385 }, - { x: 14386, y: 14386 }, - { x: 14387, y: 14387 }, - { x: 14388, y: 14388 }, - { x: 14389, y: 14389 }, - { x: 14390, y: 14390 }, - { x: 14391, y: 14391 }, - { x: 14392, y: 14392 }, - { x: 14393, y: 14393 }, - { x: 14394, y: 14394 }, - { x: 14395, y: 14395 }, - { x: 14396, y: 14396 }, - { x: 14397, y: 14397 }, - { x: 14398, y: 14398 }, - { x: 14399, y: 14399 }, - { x: 14400, y: 14400 }, - { x: 14401, y: 14401 }, - { x: 14402, y: 14402 }, - { x: 14403, y: 14403 }, - { x: 14404, y: 14404 }, - { x: 14405, y: 14405 }, - { x: 14406, y: 14406 }, - { x: 14407, y: 14407 }, - { x: 14408, y: 14408 }, - { x: 14409, y: 14409 }, - { x: 14410, y: 14410 }, - { x: 14411, y: 14411 }, - { x: 14412, y: 14412 }, - { x: 14413, y: 14413 }, - { x: 14414, y: 14414 }, - { x: 14415, y: 14415 }, - { x: 14416, y: 14416 }, - { x: 14417, y: 14417 }, - { x: 14418, y: 14418 }, - { x: 14419, y: 14419 }, - { x: 14420, y: 14420 }, - { x: 14421, y: 14421 }, - { x: 14422, y: 14422 }, - { x: 14423, y: 14423 }, - { x: 14424, y: 14424 }, - { x: 14425, y: 14425 }, - { x: 14426, y: 14426 }, - { x: 14427, y: 14427 }, - { x: 14428, y: 14428 }, - { x: 14429, y: 14429 }, - { x: 14430, y: 14430 }, - { x: 14431, y: 14431 }, - { x: 14432, y: 14432 }, - { x: 14433, y: 14433 }, - { x: 14434, y: 14434 }, - { x: 14435, y: 14435 }, - { x: 14436, y: 14436 }, - { x: 14437, y: 14437 }, - { x: 14438, y: 14438 }, - { x: 14439, y: 14439 }, - { x: 14440, y: 14440 }, - { x: 14441, y: 14441 }, - { x: 14442, y: 14442 }, - { x: 14443, y: 14443 }, - { x: 14444, y: 14444 }, - { x: 14445, y: 14445 }, - { x: 14446, y: 14446 }, - { x: 14447, y: 14447 }, - { x: 14448, y: 14448 }, - { x: 14449, y: 14449 }, - { x: 14450, y: 14450 }, - { x: 14451, y: 14451 }, - { x: 14452, y: 14452 }, - { x: 14453, y: 14453 }, - { x: 14454, y: 14454 }, - { x: 14455, y: 14455 }, - { x: 14456, y: 14456 }, - { x: 14457, y: 14457 }, - { x: 14458, y: 14458 }, - { x: 14459, y: 14459 }, - { x: 14460, y: 14460 }, - { x: 14461, y: 14461 }, - { x: 14462, y: 14462 }, - { x: 14463, y: 14463 }, - { x: 14464, y: 14464 }, - { x: 14465, y: 14465 }, - { x: 14466, y: 14466 }, - { x: 14467, y: 14467 }, - { x: 14468, y: 14468 }, - { x: 14469, y: 14469 }, - { x: 14470, y: 14470 }, - { x: 14471, y: 14471 }, - { x: 14472, y: 14472 }, - { x: 14473, y: 14473 }, - { x: 14474, y: 14474 }, - { x: 14475, y: 14475 }, - { x: 14476, y: 14476 }, - { x: 14477, y: 14477 }, - { x: 14478, y: 14478 }, - { x: 14479, y: 14479 }, - { x: 14480, y: 14480 }, - { x: 14481, y: 14481 }, - { x: 14482, y: 14482 }, - { x: 14483, y: 14483 }, - { x: 14484, y: 14484 }, - { x: 14485, y: 14485 }, - { x: 14486, y: 14486 }, - { x: 14487, y: 14487 }, - { x: 14488, y: 14488 }, - { x: 14489, y: 14489 }, - { x: 14490, y: 14490 }, - { x: 14491, y: 14491 }, - { x: 14492, y: 14492 }, - { x: 14493, y: 14493 }, - { x: 14494, y: 14494 }, - { x: 14495, y: 14495 }, - { x: 14496, y: 14496 }, - { x: 14497, y: 14497 }, - { x: 14498, y: 14498 }, - { x: 14499, y: 14499 }, - { x: 14500, y: 14500 }, - { x: 14501, y: 14501 }, - { x: 14502, y: 14502 }, - { x: 14503, y: 14503 }, - { x: 14504, y: 14504 }, - { x: 14505, y: 14505 }, - { x: 14506, y: 14506 }, - { x: 14507, y: 14507 }, - { x: 14508, y: 14508 }, - { x: 14509, y: 14509 }, - { x: 14510, y: 14510 }, - { x: 14511, y: 14511 }, - { x: 14512, y: 14512 }, - { x: 14513, y: 14513 }, - { x: 14514, y: 14514 }, - { x: 14515, y: 14515 }, - { x: 14516, y: 14516 }, - { x: 14517, y: 14517 }, - { x: 14518, y: 14518 }, - { x: 14519, y: 14519 }, - { x: 14520, y: 14520 }, - { x: 14521, y: 14521 }, - { x: 14522, y: 14522 }, - { x: 14523, y: 14523 }, - { x: 14524, y: 14524 }, - { x: 14525, y: 14525 }, - { x: 14526, y: 14526 }, - { x: 14527, y: 14527 }, - { x: 14528, y: 14528 }, - { x: 14529, y: 14529 }, - { x: 14530, y: 14530 }, - { x: 14531, y: 14531 }, - { x: 14532, y: 14532 }, - { x: 14533, y: 14533 }, - { x: 14534, y: 14534 }, - { x: 14535, y: 14535 }, - { x: 14536, y: 14536 }, - { x: 14537, y: 14537 }, - { x: 14538, y: 14538 }, - { x: 14539, y: 14539 }, - { x: 14540, y: 14540 }, - { x: 14541, y: 14541 }, - { x: 14542, y: 14542 }, - { x: 14543, y: 14543 }, - { x: 14544, y: 14544 }, - { x: 14545, y: 14545 }, - { x: 14546, y: 14546 }, - { x: 14547, y: 14547 }, - { x: 14548, y: 14548 }, - { x: 14549, y: 14549 }, - { x: 14550, y: 14550 }, - { x: 14551, y: 14551 }, - { x: 14552, y: 14552 }, - { x: 14553, y: 14553 }, - { x: 14554, y: 14554 }, - { x: 14555, y: 14555 }, - { x: 14556, y: 14556 }, - { x: 14557, y: 14557 }, - { x: 14558, y: 14558 }, - { x: 14559, y: 14559 }, - { x: 14560, y: 14560 }, - { x: 14561, y: 14561 }, - { x: 14562, y: 14562 }, - { x: 14563, y: 14563 }, - { x: 14564, y: 14564 }, - { x: 14565, y: 14565 }, - { x: 14566, y: 14566 }, - { x: 14567, y: 14567 }, - { x: 14568, y: 14568 }, - { x: 14569, y: 14569 }, - { x: 14570, y: 14570 }, - { x: 14571, y: 14571 }, - { x: 14572, y: 14572 }, - { x: 14573, y: 14573 }, - { x: 14574, y: 14574 }, - { x: 14575, y: 14575 }, - { x: 14576, y: 14576 }, - { x: 14577, y: 14577 }, - { x: 14578, y: 14578 }, - { x: 14579, y: 14579 }, - { x: 14580, y: 14580 }, - { x: 14581, y: 14581 }, - { x: 14582, y: 14582 }, - { x: 14583, y: 14583 }, - { x: 14584, y: 14584 }, - { x: 14585, y: 14585 }, - { x: 14586, y: 14586 }, - { x: 14587, y: 14587 }, - { x: 14588, y: 14588 }, - { x: 14589, y: 14589 }, - { x: 14590, y: 14590 }, - { x: 14591, y: 14591 }, - { x: 14592, y: 14592 }, - { x: 14593, y: 14593 }, - { x: 14594, y: 14594 }, - { x: 14595, y: 14595 }, - { x: 14596, y: 14596 }, - { x: 14597, y: 14597 }, - { x: 14598, y: 14598 }, - { x: 14599, y: 14599 }, - { x: 14600, y: 14600 }, - { x: 14601, y: 14601 }, - { x: 14602, y: 14602 }, - { x: 14603, y: 14603 }, - { x: 14604, y: 14604 }, - { x: 14605, y: 14605 }, - { x: 14606, y: 14606 }, - { x: 14607, y: 14607 }, - { x: 14608, y: 14608 }, - { x: 14609, y: 14609 }, - { x: 14610, y: 14610 }, - { x: 14611, y: 14611 }, - { x: 14612, y: 14612 }, - { x: 14613, y: 14613 }, - { x: 14614, y: 14614 }, - { x: 14615, y: 14615 }, - { x: 14616, y: 14616 }, - { x: 14617, y: 14617 }, - { x: 14618, y: 14618 }, - { x: 14619, y: 14619 }, - { x: 14620, y: 14620 }, - { x: 14621, y: 14621 }, - { x: 14622, y: 14622 }, - { x: 14623, y: 14623 }, - { x: 14624, y: 14624 }, - { x: 14625, y: 14625 }, - { x: 14626, y: 14626 }, - { x: 14627, y: 14627 }, - { x: 14628, y: 14628 }, - { x: 14629, y: 14629 }, - { x: 14630, y: 14630 }, - { x: 14631, y: 14631 }, - { x: 14632, y: 14632 }, - { x: 14633, y: 14633 }, - { x: 14634, y: 14634 }, - { x: 14635, y: 14635 }, - { x: 14636, y: 14636 }, - { x: 14637, y: 14637 }, - { x: 14638, y: 14638 }, - { x: 14639, y: 14639 }, - { x: 14640, y: 14640 }, - { x: 14641, y: 14641 }, - { x: 14642, y: 14642 }, - { x: 14643, y: 14643 }, - { x: 14644, y: 14644 }, - { x: 14645, y: 14645 }, - { x: 14646, y: 14646 }, - { x: 14647, y: 14647 }, - { x: 14648, y: 14648 }, - { x: 14649, y: 14649 }, - { x: 14650, y: 14650 }, - { x: 14651, y: 14651 }, - { x: 14652, y: 14652 }, - { x: 14653, y: 14653 }, - { x: 14654, y: 14654 }, - { x: 14655, y: 14655 }, - { x: 14656, y: 14656 }, - { x: 14657, y: 14657 }, - { x: 14658, y: 14658 }, - { x: 14659, y: 14659 }, - { x: 14660, y: 14660 }, - { x: 14661, y: 14661 }, - { x: 14662, y: 14662 }, - { x: 14663, y: 14663 }, - { x: 14664, y: 14664 }, - { x: 14665, y: 14665 }, - { x: 14666, y: 14666 }, - { x: 14667, y: 14667 }, - { x: 14668, y: 14668 }, - { x: 14669, y: 14669 }, - { x: 14670, y: 14670 }, - { x: 14671, y: 14671 }, - { x: 14672, y: 14672 }, - { x: 14673, y: 14673 }, - { x: 14674, y: 14674 }, - { x: 14675, y: 14675 }, - { x: 14676, y: 14676 }, - { x: 14677, y: 14677 }, - { x: 14678, y: 14678 }, - { x: 14679, y: 14679 }, - { x: 14680, y: 14680 }, - { x: 14681, y: 14681 }, - { x: 14682, y: 14682 }, - { x: 14683, y: 14683 }, - { x: 14684, y: 14684 }, - { x: 14685, y: 14685 }, - { x: 14686, y: 14686 }, - { x: 14687, y: 14687 }, - { x: 14688, y: 14688 }, - { x: 14689, y: 14689 }, - { x: 14690, y: 14690 }, - { x: 14691, y: 14691 }, - { x: 14692, y: 14692 }, - { x: 14693, y: 14693 }, - { x: 14694, y: 14694 }, - { x: 14695, y: 14695 }, - { x: 14696, y: 14696 }, - { x: 14697, y: 14697 }, - { x: 14698, y: 14698 }, - { x: 14699, y: 14699 }, - { x: 14700, y: 14700 }, - { x: 14701, y: 14701 }, - { x: 14702, y: 14702 }, - { x: 14703, y: 14703 }, - { x: 14704, y: 14704 }, - { x: 14705, y: 14705 }, - { x: 14706, y: 14706 }, - { x: 14707, y: 14707 }, - { x: 14708, y: 14708 }, - { x: 14709, y: 14709 }, - { x: 14710, y: 14710 }, - { x: 14711, y: 14711 }, - { x: 14712, y: 14712 }, - { x: 14713, y: 14713 }, - { x: 14714, y: 14714 }, - { x: 14715, y: 14715 }, - { x: 14716, y: 14716 }, - { x: 14717, y: 14717 }, - { x: 14718, y: 14718 }, - { x: 14719, y: 14719 }, - { x: 14720, y: 14720 }, - { x: 14721, y: 14721 }, - { x: 14722, y: 14722 }, - { x: 14723, y: 14723 }, - { x: 14724, y: 14724 }, - { x: 14725, y: 14725 }, - { x: 14726, y: 14726 }, - { x: 14727, y: 14727 }, - { x: 14728, y: 14728 }, - { x: 14729, y: 14729 }, - { x: 14730, y: 14730 }, - { x: 14731, y: 14731 }, - { x: 14732, y: 14732 }, - { x: 14733, y: 14733 }, - { x: 14734, y: 14734 }, - { x: 14735, y: 14735 }, - { x: 14736, y: 14736 }, - { x: 14737, y: 14737 }, - { x: 14738, y: 14738 }, - { x: 14739, y: 14739 }, - { x: 14740, y: 14740 }, - { x: 14741, y: 14741 }, - { x: 14742, y: 14742 }, - { x: 14743, y: 14743 }, - { x: 14744, y: 14744 }, - { x: 14745, y: 14745 }, - { x: 14746, y: 14746 }, - { x: 14747, y: 14747 }, - { x: 14748, y: 14748 }, - { x: 14749, y: 14749 }, - { x: 14750, y: 14750 }, - { x: 14751, y: 14751 }, - { x: 14752, y: 14752 }, - { x: 14753, y: 14753 }, - { x: 14754, y: 14754 }, - { x: 14755, y: 14755 }, - { x: 14756, y: 14756 }, - { x: 14757, y: 14757 }, - { x: 14758, y: 14758 }, - { x: 14759, y: 14759 }, - { x: 14760, y: 14760 }, - { x: 14761, y: 14761 }, - { x: 14762, y: 14762 }, - { x: 14763, y: 14763 }, - { x: 14764, y: 14764 }, - { x: 14765, y: 14765 }, - { x: 14766, y: 14766 }, - { x: 14767, y: 14767 }, - { x: 14768, y: 14768 }, - { x: 14769, y: 14769 }, - { x: 14770, y: 14770 }, - { x: 14771, y: 14771 }, - { x: 14772, y: 14772 }, - { x: 14773, y: 14773 }, - { x: 14774, y: 14774 }, - { x: 14775, y: 14775 }, - { x: 14776, y: 14776 }, - { x: 14777, y: 14777 }, - { x: 14778, y: 14778 }, - { x: 14779, y: 14779 }, - { x: 14780, y: 14780 }, - { x: 14781, y: 14781 }, - { x: 14782, y: 14782 }, - { x: 14783, y: 14783 }, - { x: 14784, y: 14784 }, - { x: 14785, y: 14785 }, - { x: 14786, y: 14786 }, - { x: 14787, y: 14787 }, - { x: 14788, y: 14788 }, - { x: 14789, y: 14789 }, - { x: 14790, y: 14790 }, - { x: 14791, y: 14791 }, - { x: 14792, y: 14792 }, - { x: 14793, y: 14793 }, - { x: 14794, y: 14794 }, - { x: 14795, y: 14795 }, - { x: 14796, y: 14796 }, - { x: 14797, y: 14797 }, - { x: 14798, y: 14798 }, - { x: 14799, y: 14799 }, - { x: 14800, y: 14800 }, - { x: 14801, y: 14801 }, - { x: 14802, y: 14802 }, - { x: 14803, y: 14803 }, - { x: 14804, y: 14804 }, - { x: 14805, y: 14805 }, - { x: 14806, y: 14806 }, - { x: 14807, y: 14807 }, - { x: 14808, y: 14808 }, - { x: 14809, y: 14809 }, - { x: 14810, y: 14810 }, - { x: 14811, y: 14811 }, - { x: 14812, y: 14812 }, - { x: 14813, y: 14813 }, - { x: 14814, y: 14814 }, - { x: 14815, y: 14815 }, - { x: 14816, y: 14816 }, - { x: 14817, y: 14817 }, - { x: 14818, y: 14818 }, - { x: 14819, y: 14819 }, - { x: 14820, y: 14820 }, - { x: 14821, y: 14821 }, - { x: 14822, y: 14822 }, - { x: 14823, y: 14823 }, - { x: 14824, y: 14824 }, - { x: 14825, y: 14825 }, - { x: 14826, y: 14826 }, - { x: 14827, y: 14827 }, - { x: 14828, y: 14828 }, - { x: 14829, y: 14829 }, - { x: 14830, y: 14830 }, - { x: 14831, y: 14831 }, - { x: 14832, y: 14832 }, - { x: 14833, y: 14833 }, - { x: 14834, y: 14834 }, - { x: 14835, y: 14835 }, - { x: 14836, y: 14836 }, - { x: 14837, y: 14837 }, - { x: 14838, y: 14838 }, - { x: 14839, y: 14839 }, - { x: 14840, y: 14840 }, - { x: 14841, y: 14841 }, - { x: 14842, y: 14842 }, - { x: 14843, y: 14843 }, - { x: 14844, y: 14844 }, - { x: 14845, y: 14845 }, - { x: 14846, y: 14846 }, - { x: 14847, y: 14847 }, - { x: 14848, y: 14848 }, - { x: 14849, y: 14849 }, - { x: 14850, y: 14850 }, - { x: 14851, y: 14851 }, - { x: 14852, y: 14852 }, - { x: 14853, y: 14853 }, - { x: 14854, y: 14854 }, - { x: 14855, y: 14855 }, - { x: 14856, y: 14856 }, - { x: 14857, y: 14857 }, - { x: 14858, y: 14858 }, - { x: 14859, y: 14859 }, - { x: 14860, y: 14860 }, - { x: 14861, y: 14861 }, - { x: 14862, y: 14862 }, - { x: 14863, y: 14863 }, - { x: 14864, y: 14864 }, - { x: 14865, y: 14865 }, - { x: 14866, y: 14866 }, - { x: 14867, y: 14867 }, - { x: 14868, y: 14868 }, - { x: 14869, y: 14869 }, - { x: 14870, y: 14870 }, - { x: 14871, y: 14871 }, - { x: 14872, y: 14872 }, - { x: 14873, y: 14873 }, - { x: 14874, y: 14874 }, - { x: 14875, y: 14875 }, - { x: 14876, y: 14876 }, - { x: 14877, y: 14877 }, - { x: 14878, y: 14878 }, - { x: 14879, y: 14879 }, - { x: 14880, y: 14880 }, - { x: 14881, y: 14881 }, - { x: 14882, y: 14882 }, - { x: 14883, y: 14883 }, - { x: 14884, y: 14884 }, - { x: 14885, y: 14885 }, - { x: 14886, y: 14886 }, - { x: 14887, y: 14887 }, - { x: 14888, y: 14888 }, - { x: 14889, y: 14889 }, - { x: 14890, y: 14890 }, - { x: 14891, y: 14891 }, - { x: 14892, y: 14892 }, - { x: 14893, y: 14893 }, - { x: 14894, y: 14894 }, - { x: 14895, y: 14895 }, - { x: 14896, y: 14896 }, - { x: 14897, y: 14897 }, - { x: 14898, y: 14898 }, - { x: 14899, y: 14899 }, - { x: 14900, y: 14900 }, - { x: 14901, y: 14901 }, - { x: 14902, y: 14902 }, - { x: 14903, y: 14903 }, - { x: 14904, y: 14904 }, - { x: 14905, y: 14905 }, - { x: 14906, y: 14906 }, - { x: 14907, y: 14907 }, - { x: 14908, y: 14908 }, - { x: 14909, y: 14909 }, - { x: 14910, y: 14910 }, - { x: 14911, y: 14911 }, - { x: 14912, y: 14912 }, - { x: 14913, y: 14913 }, - { x: 14914, y: 14914 }, - { x: 14915, y: 14915 }, - { x: 14916, y: 14916 }, - { x: 14917, y: 14917 }, - { x: 14918, y: 14918 }, - { x: 14919, y: 14919 }, - { x: 14920, y: 14920 }, - { x: 14921, y: 14921 }, - { x: 14922, y: 14922 }, - { x: 14923, y: 14923 }, - { x: 14924, y: 14924 }, - { x: 14925, y: 14925 }, - { x: 14926, y: 14926 }, - { x: 14927, y: 14927 }, - { x: 14928, y: 14928 }, - { x: 14929, y: 14929 }, - { x: 14930, y: 14930 }, - { x: 14931, y: 14931 }, - { x: 14932, y: 14932 }, - { x: 14933, y: 14933 }, - { x: 14934, y: 14934 }, - { x: 14935, y: 14935 }, - { x: 14936, y: 14936 }, - { x: 14937, y: 14937 }, - { x: 14938, y: 14938 }, - { x: 14939, y: 14939 }, - { x: 14940, y: 14940 }, - { x: 14941, y: 14941 }, - { x: 14942, y: 14942 }, - { x: 14943, y: 14943 }, - { x: 14944, y: 14944 }, - { x: 14945, y: 14945 }, - { x: 14946, y: 14946 }, - { x: 14947, y: 14947 }, - { x: 14948, y: 14948 }, - { x: 14949, y: 14949 }, - { x: 14950, y: 14950 }, - { x: 14951, y: 14951 }, - { x: 14952, y: 14952 }, - { x: 14953, y: 14953 }, - { x: 14954, y: 14954 }, - { x: 14955, y: 14955 }, - { x: 14956, y: 14956 }, - { x: 14957, y: 14957 }, - { x: 14958, y: 14958 }, - { x: 14959, y: 14959 }, - { x: 14960, y: 14960 }, - { x: 14961, y: 14961 }, - { x: 14962, y: 14962 }, - { x: 14963, y: 14963 }, - { x: 14964, y: 14964 }, - { x: 14965, y: 14965 }, - { x: 14966, y: 14966 }, - { x: 14967, y: 14967 }, - { x: 14968, y: 14968 }, - { x: 14969, y: 14969 }, - { x: 14970, y: 14970 }, - { x: 14971, y: 14971 }, - { x: 14972, y: 14972 }, - { x: 14973, y: 14973 }, - { x: 14974, y: 14974 }, - { x: 14975, y: 14975 }, - { x: 14976, y: 14976 }, - { x: 14977, y: 14977 }, - { x: 14978, y: 14978 }, - { x: 14979, y: 14979 }, - { x: 14980, y: 14980 }, - { x: 14981, y: 14981 }, - { x: 14982, y: 14982 }, - { x: 14983, y: 14983 }, - { x: 14984, y: 14984 }, - { x: 14985, y: 14985 }, - { x: 14986, y: 14986 }, - { x: 14987, y: 14987 }, - { x: 14988, y: 14988 }, - { x: 14989, y: 14989 }, - { x: 14990, y: 14990 }, - { x: 14991, y: 14991 }, - { x: 14992, y: 14992 }, - { x: 14993, y: 14993 }, - { x: 14994, y: 14994 }, - { x: 14995, y: 14995 }, - { x: 14996, y: 14996 }, - { x: 14997, y: 14997 }, - { x: 14998, y: 14998 }, - { x: 14999, y: 14999 }, - { x: 15000, y: 15000 }, - { x: 15001, y: 15001 }, - { x: 15002, y: 15002 }, - { x: 15003, y: 15003 }, - { x: 15004, y: 15004 }, - { x: 15005, y: 15005 }, - { x: 15006, y: 15006 }, - { x: 15007, y: 15007 }, - { x: 15008, y: 15008 }, - { x: 15009, y: 15009 }, - { x: 15010, y: 15010 }, - { x: 15011, y: 15011 }, - { x: 15012, y: 15012 }, - { x: 15013, y: 15013 }, - { x: 15014, y: 15014 }, - { x: 15015, y: 15015 }, - { x: 15016, y: 15016 }, - { x: 15017, y: 15017 }, - { x: 15018, y: 15018 }, - { x: 15019, y: 15019 }, - { x: 15020, y: 15020 }, - { x: 15021, y: 15021 }, - { x: 15022, y: 15022 }, - { x: 15023, y: 15023 }, - { x: 15024, y: 15024 }, - { x: 15025, y: 15025 }, - { x: 15026, y: 15026 }, - { x: 15027, y: 15027 }, - { x: 15028, y: 15028 }, - { x: 15029, y: 15029 }, - { x: 15030, y: 15030 }, - { x: 15031, y: 15031 }, - { x: 15032, y: 15032 }, - { x: 15033, y: 15033 }, - { x: 15034, y: 15034 }, - { x: 15035, y: 15035 }, - { x: 15036, y: 15036 }, - { x: 15037, y: 15037 }, - { x: 15038, y: 15038 }, - { x: 15039, y: 15039 }, - { x: 15040, y: 15040 }, - { x: 15041, y: 15041 }, - { x: 15042, y: 15042 }, - { x: 15043, y: 15043 }, - { x: 15044, y: 15044 }, - { x: 15045, y: 15045 }, - { x: 15046, y: 15046 }, - { x: 15047, y: 15047 }, - { x: 15048, y: 15048 }, - { x: 15049, y: 15049 }, - { x: 15050, y: 15050 }, - { x: 15051, y: 15051 }, - { x: 15052, y: 15052 }, - { x: 15053, y: 15053 }, - { x: 15054, y: 15054 }, - { x: 15055, y: 15055 }, - { x: 15056, y: 15056 }, - { x: 15057, y: 15057 }, - { x: 15058, y: 15058 }, - { x: 15059, y: 15059 }, - { x: 15060, y: 15060 }, - { x: 15061, y: 15061 }, - { x: 15062, y: 15062 }, - { x: 15063, y: 15063 }, - { x: 15064, y: 15064 }, - { x: 15065, y: 15065 }, - { x: 15066, y: 15066 }, - { x: 15067, y: 15067 }, - { x: 15068, y: 15068 }, - { x: 15069, y: 15069 }, - { x: 15070, y: 15070 }, - { x: 15071, y: 15071 }, - { x: 15072, y: 15072 }, - { x: 15073, y: 15073 }, - { x: 15074, y: 15074 }, - { x: 15075, y: 15075 }, - { x: 15076, y: 15076 }, - { x: 15077, y: 15077 }, - { x: 15078, y: 15078 }, - { x: 15079, y: 15079 }, - { x: 15080, y: 15080 }, - { x: 15081, y: 15081 }, - { x: 15082, y: 15082 }, - { x: 15083, y: 15083 }, - { x: 15084, y: 15084 }, - { x: 15085, y: 15085 }, - { x: 15086, y: 15086 }, - { x: 15087, y: 15087 }, - { x: 15088, y: 15088 }, - { x: 15089, y: 15089 }, - { x: 15090, y: 15090 }, - { x: 15091, y: 15091 }, - { x: 15092, y: 15092 }, - { x: 15093, y: 15093 }, - { x: 15094, y: 15094 }, - { x: 15095, y: 15095 }, - { x: 15096, y: 15096 }, - { x: 15097, y: 15097 }, - { x: 15098, y: 15098 }, - { x: 15099, y: 15099 }, - { x: 15100, y: 15100 }, - { x: 15101, y: 15101 }, - { x: 15102, y: 15102 }, - { x: 15103, y: 15103 }, - { x: 15104, y: 15104 }, - { x: 15105, y: 15105 }, - { x: 15106, y: 15106 }, - { x: 15107, y: 15107 }, - { x: 15108, y: 15108 }, - { x: 15109, y: 15109 }, - { x: 15110, y: 15110 }, - { x: 15111, y: 15111 }, - { x: 15112, y: 15112 }, - { x: 15113, y: 15113 }, - { x: 15114, y: 15114 }, - { x: 15115, y: 15115 }, - { x: 15116, y: 15116 }, - { x: 15117, y: 15117 }, - { x: 15118, y: 15118 }, - { x: 15119, y: 15119 }, - { x: 15120, y: 15120 }, - { x: 15121, y: 15121 }, - { x: 15122, y: 15122 }, - { x: 15123, y: 15123 }, - { x: 15124, y: 15124 }, - { x: 15125, y: 15125 }, - { x: 15126, y: 15126 }, - { x: 15127, y: 15127 }, - { x: 15128, y: 15128 }, - { x: 15129, y: 15129 }, - { x: 15130, y: 15130 }, - { x: 15131, y: 15131 }, - { x: 15132, y: 15132 }, - { x: 15133, y: 15133 }, - { x: 15134, y: 15134 }, - { x: 15135, y: 15135 }, - { x: 15136, y: 15136 }, - { x: 15137, y: 15137 }, - { x: 15138, y: 15138 }, - { x: 15139, y: 15139 }, - { x: 15140, y: 15140 }, - { x: 15141, y: 15141 }, - { x: 15142, y: 15142 }, - { x: 15143, y: 15143 }, - { x: 15144, y: 15144 }, - { x: 15145, y: 15145 }, - { x: 15146, y: 15146 }, - { x: 15147, y: 15147 }, - { x: 15148, y: 15148 }, - { x: 15149, y: 15149 }, - { x: 15150, y: 15150 }, - { x: 15151, y: 15151 }, - { x: 15152, y: 15152 }, - { x: 15153, y: 15153 }, - { x: 15154, y: 15154 }, - { x: 15155, y: 15155 }, - { x: 15156, y: 15156 }, - { x: 15157, y: 15157 }, - { x: 15158, y: 15158 }, - { x: 15159, y: 15159 }, - { x: 15160, y: 15160 }, - { x: 15161, y: 15161 }, - { x: 15162, y: 15162 }, - { x: 15163, y: 15163 }, - { x: 15164, y: 15164 }, - { x: 15165, y: 15165 }, - { x: 15166, y: 15166 }, - { x: 15167, y: 15167 }, - { x: 15168, y: 15168 }, - { x: 15169, y: 15169 }, - { x: 15170, y: 15170 }, - { x: 15171, y: 15171 }, - { x: 15172, y: 15172 }, - { x: 15173, y: 15173 }, - { x: 15174, y: 15174 }, - { x: 15175, y: 15175 }, - { x: 15176, y: 15176 }, - { x: 15177, y: 15177 }, - { x: 15178, y: 15178 }, - { x: 15179, y: 15179 }, - { x: 15180, y: 15180 }, - { x: 15181, y: 15181 }, - { x: 15182, y: 15182 }, - { x: 15183, y: 15183 }, - { x: 15184, y: 15184 }, - { x: 15185, y: 15185 }, - { x: 15186, y: 15186 }, - { x: 15187, y: 15187 }, - { x: 15188, y: 15188 }, - { x: 15189, y: 15189 }, - { x: 15190, y: 15190 }, - { x: 15191, y: 15191 }, - { x: 15192, y: 15192 }, - { x: 15193, y: 15193 }, - { x: 15194, y: 15194 }, - { x: 15195, y: 15195 }, - { x: 15196, y: 15196 }, - { x: 15197, y: 15197 }, - { x: 15198, y: 15198 }, - { x: 15199, y: 15199 }, - { x: 15200, y: 15200 }, - { x: 15201, y: 15201 }, - { x: 15202, y: 15202 }, - { x: 15203, y: 15203 }, - { x: 15204, y: 15204 }, - { x: 15205, y: 15205 }, - { x: 15206, y: 15206 }, - { x: 15207, y: 15207 }, - { x: 15208, y: 15208 }, - { x: 15209, y: 15209 }, - { x: 15210, y: 15210 }, - { x: 15211, y: 15211 }, - { x: 15212, y: 15212 }, - { x: 15213, y: 15213 }, - { x: 15214, y: 15214 }, - { x: 15215, y: 15215 }, - { x: 15216, y: 15216 }, - { x: 15217, y: 15217 }, - { x: 15218, y: 15218 }, - { x: 15219, y: 15219 }, - { x: 15220, y: 15220 }, - { x: 15221, y: 15221 }, - { x: 15222, y: 15222 }, - { x: 15223, y: 15223 }, - { x: 15224, y: 15224 }, - { x: 15225, y: 15225 }, - { x: 15226, y: 15226 }, - { x: 15227, y: 15227 }, - { x: 15228, y: 15228 }, - { x: 15229, y: 15229 }, - { x: 15230, y: 15230 }, - { x: 15231, y: 15231 }, - { x: 15232, y: 15232 }, - { x: 15233, y: 15233 }, - { x: 15234, y: 15234 }, - { x: 15235, y: 15235 }, - { x: 15236, y: 15236 }, - { x: 15237, y: 15237 }, - { x: 15238, y: 15238 }, - { x: 15239, y: 15239 }, - { x: 15240, y: 15240 }, - { x: 15241, y: 15241 }, - { x: 15242, y: 15242 }, - { x: 15243, y: 15243 }, - { x: 15244, y: 15244 }, - { x: 15245, y: 15245 }, - { x: 15246, y: 15246 }, - { x: 15247, y: 15247 }, - { x: 15248, y: 15248 }, - { x: 15249, y: 15249 }, - { x: 15250, y: 15250 }, - { x: 15251, y: 15251 }, - { x: 15252, y: 15252 }, - { x: 15253, y: 15253 }, - { x: 15254, y: 15254 }, - { x: 15255, y: 15255 }, - { x: 15256, y: 15256 }, - { x: 15257, y: 15257 }, - { x: 15258, y: 15258 }, - { x: 15259, y: 15259 }, - { x: 15260, y: 15260 }, - { x: 15261, y: 15261 }, - { x: 15262, y: 15262 }, - { x: 15263, y: 15263 }, - { x: 15264, y: 15264 }, - { x: 15265, y: 15265 }, - { x: 15266, y: 15266 }, - { x: 15267, y: 15267 }, - { x: 15268, y: 15268 }, - { x: 15269, y: 15269 }, - { x: 15270, y: 15270 }, - { x: 15271, y: 15271 }, - { x: 15272, y: 15272 }, - { x: 15273, y: 15273 }, - { x: 15274, y: 15274 }, - { x: 15275, y: 15275 }, - { x: 15276, y: 15276 }, - { x: 15277, y: 15277 }, - { x: 15278, y: 15278 }, - { x: 15279, y: 15279 }, - { x: 15280, y: 15280 }, - { x: 15281, y: 15281 }, - { x: 15282, y: 15282 }, - { x: 15283, y: 15283 }, - { x: 15284, y: 15284 }, - { x: 15285, y: 15285 }, - { x: 15286, y: 15286 }, - { x: 15287, y: 15287 }, - { x: 15288, y: 15288 }, - { x: 15289, y: 15289 }, - { x: 15290, y: 15290 }, - { x: 15291, y: 15291 }, - { x: 15292, y: 15292 }, - { x: 15293, y: 15293 }, - { x: 15294, y: 15294 }, - { x: 15295, y: 15295 }, - { x: 15296, y: 15296 }, - { x: 15297, y: 15297 }, - { x: 15298, y: 15298 }, - { x: 15299, y: 15299 }, - { x: 15300, y: 15300 }, - { x: 15301, y: 15301 }, - { x: 15302, y: 15302 }, - { x: 15303, y: 15303 }, - { x: 15304, y: 15304 }, - { x: 15305, y: 15305 }, - { x: 15306, y: 15306 }, - { x: 15307, y: 15307 }, - { x: 15308, y: 15308 }, - { x: 15309, y: 15309 }, - { x: 15310, y: 15310 }, - { x: 15311, y: 15311 }, - { x: 15312, y: 15312 }, - { x: 15313, y: 15313 }, - { x: 15314, y: 15314 }, - { x: 15315, y: 15315 }, - { x: 15316, y: 15316 }, - { x: 15317, y: 15317 }, - { x: 15318, y: 15318 }, - { x: 15319, y: 15319 }, - { x: 15320, y: 15320 }, - { x: 15321, y: 15321 }, - { x: 15322, y: 15322 }, - { x: 15323, y: 15323 }, - { x: 15324, y: 15324 }, - { x: 15325, y: 15325 }, - { x: 15326, y: 15326 }, - { x: 15327, y: 15327 }, - { x: 15328, y: 15328 }, - { x: 15329, y: 15329 }, - { x: 15330, y: 15330 }, - { x: 15331, y: 15331 }, - { x: 15332, y: 15332 }, - { x: 15333, y: 15333 }, - { x: 15334, y: 15334 }, - { x: 15335, y: 15335 }, - { x: 15336, y: 15336 }, - { x: 15337, y: 15337 }, - { x: 15338, y: 15338 }, - { x: 15339, y: 15339 }, - { x: 15340, y: 15340 }, - { x: 15341, y: 15341 }, - { x: 15342, y: 15342 }, - { x: 15343, y: 15343 }, - { x: 15344, y: 15344 }, - { x: 15345, y: 15345 }, - { x: 15346, y: 15346 }, - { x: 15347, y: 15347 }, - { x: 15348, y: 15348 }, - { x: 15349, y: 15349 }, - { x: 15350, y: 15350 }, - { x: 15351, y: 15351 }, - { x: 15352, y: 15352 }, - { x: 15353, y: 15353 }, - { x: 15354, y: 15354 }, - { x: 15355, y: 15355 }, - { x: 15356, y: 15356 }, - { x: 15357, y: 15357 }, - { x: 15358, y: 15358 }, - { x: 15359, y: 15359 }, - { x: 15360, y: 15360 }, - { x: 15361, y: 15361 }, - { x: 15362, y: 15362 }, - { x: 15363, y: 15363 }, - { x: 15364, y: 15364 }, - { x: 15365, y: 15365 }, - { x: 15366, y: 15366 }, - { x: 15367, y: 15367 }, - { x: 15368, y: 15368 }, - { x: 15369, y: 15369 }, - { x: 15370, y: 15370 }, - { x: 15371, y: 15371 }, - { x: 15372, y: 15372 }, - { x: 15373, y: 15373 }, - { x: 15374, y: 15374 }, - { x: 15375, y: 15375 }, - { x: 15376, y: 15376 }, - { x: 15377, y: 15377 }, - { x: 15378, y: 15378 }, - { x: 15379, y: 15379 }, - { x: 15380, y: 15380 }, - { x: 15381, y: 15381 }, - { x: 15382, y: 15382 }, - { x: 15383, y: 15383 }, - { x: 15384, y: 15384 }, - { x: 15385, y: 15385 }, - { x: 15386, y: 15386 }, - { x: 15387, y: 15387 }, - { x: 15388, y: 15388 }, - { x: 15389, y: 15389 }, - { x: 15390, y: 15390 }, - { x: 15391, y: 15391 }, - { x: 15392, y: 15392 }, - { x: 15393, y: 15393 }, - { x: 15394, y: 15394 }, - { x: 15395, y: 15395 }, - { x: 15396, y: 15396 }, - { x: 15397, y: 15397 }, - { x: 15398, y: 15398 }, - { x: 15399, y: 15399 }, - { x: 15400, y: 15400 }, - { x: 15401, y: 15401 }, - { x: 15402, y: 15402 }, - { x: 15403, y: 15403 }, - { x: 15404, y: 15404 }, - { x: 15405, y: 15405 }, - { x: 15406, y: 15406 }, - { x: 15407, y: 15407 }, - { x: 15408, y: 15408 }, - { x: 15409, y: 15409 }, - { x: 15410, y: 15410 }, - { x: 15411, y: 15411 }, - { x: 15412, y: 15412 }, - { x: 15413, y: 15413 }, - { x: 15414, y: 15414 }, - { x: 15415, y: 15415 }, - { x: 15416, y: 15416 }, - { x: 15417, y: 15417 }, - { x: 15418, y: 15418 }, - { x: 15419, y: 15419 }, - { x: 15420, y: 15420 }, - { x: 15421, y: 15421 }, - { x: 15422, y: 15422 }, - { x: 15423, y: 15423 }, - { x: 15424, y: 15424 }, - { x: 15425, y: 15425 }, - { x: 15426, y: 15426 }, - { x: 15427, y: 15427 }, - { x: 15428, y: 15428 }, - { x: 15429, y: 15429 }, - { x: 15430, y: 15430 }, - { x: 15431, y: 15431 }, - { x: 15432, y: 15432 }, - { x: 15433, y: 15433 }, - { x: 15434, y: 15434 }, - { x: 15435, y: 15435 }, - { x: 15436, y: 15436 }, - { x: 15437, y: 15437 }, - { x: 15438, y: 15438 }, - { x: 15439, y: 15439 }, - { x: 15440, y: 15440 }, - { x: 15441, y: 15441 }, - { x: 15442, y: 15442 }, - { x: 15443, y: 15443 }, - { x: 15444, y: 15444 }, - { x: 15445, y: 15445 }, - { x: 15446, y: 15446 }, - { x: 15447, y: 15447 }, - { x: 15448, y: 15448 }, - { x: 15449, y: 15449 }, - { x: 15450, y: 15450 }, - { x: 15451, y: 15451 }, - { x: 15452, y: 15452 }, - { x: 15453, y: 15453 }, - { x: 15454, y: 15454 }, - { x: 15455, y: 15455 }, - { x: 15456, y: 15456 }, - { x: 15457, y: 15457 }, - { x: 15458, y: 15458 }, - { x: 15459, y: 15459 }, - { x: 15460, y: 15460 }, - { x: 15461, y: 15461 }, - { x: 15462, y: 15462 }, - { x: 15463, y: 15463 }, - { x: 15464, y: 15464 }, - { x: 15465, y: 15465 }, - { x: 15466, y: 15466 }, - { x: 15467, y: 15467 }, - { x: 15468, y: 15468 }, - { x: 15469, y: 15469 }, - { x: 15470, y: 15470 }, - { x: 15471, y: 15471 }, - { x: 15472, y: 15472 }, - { x: 15473, y: 15473 }, - { x: 15474, y: 15474 }, - { x: 15475, y: 15475 }, - { x: 15476, y: 15476 }, - { x: 15477, y: 15477 }, - { x: 15478, y: 15478 }, - { x: 15479, y: 15479 }, - { x: 15480, y: 15480 }, - { x: 15481, y: 15481 }, - { x: 15482, y: 15482 }, - { x: 15483, y: 15483 }, - { x: 15484, y: 15484 }, - { x: 15485, y: 15485 }, - { x: 15486, y: 15486 }, - { x: 15487, y: 15487 }, - { x: 15488, y: 15488 }, - { x: 15489, y: 15489 }, - { x: 15490, y: 15490 }, - { x: 15491, y: 15491 }, - { x: 15492, y: 15492 }, - { x: 15493, y: 15493 }, - { x: 15494, y: 15494 }, - { x: 15495, y: 15495 }, - { x: 15496, y: 15496 }, - { x: 15497, y: 15497 }, - { x: 15498, y: 15498 }, - { x: 15499, y: 15499 }, - { x: 15500, y: 15500 }, - { x: 15501, y: 15501 }, - { x: 15502, y: 15502 }, - { x: 15503, y: 15503 }, - { x: 15504, y: 15504 }, - { x: 15505, y: 15505 }, - { x: 15506, y: 15506 }, - { x: 15507, y: 15507 }, - { x: 15508, y: 15508 }, - { x: 15509, y: 15509 }, - { x: 15510, y: 15510 }, - { x: 15511, y: 15511 }, - { x: 15512, y: 15512 }, - { x: 15513, y: 15513 }, - { x: 15514, y: 15514 }, - { x: 15515, y: 15515 }, - { x: 15516, y: 15516 }, - { x: 15517, y: 15517 }, - { x: 15518, y: 15518 }, - { x: 15519, y: 15519 }, - { x: 15520, y: 15520 }, - { x: 15521, y: 15521 }, - { x: 15522, y: 15522 }, - { x: 15523, y: 15523 }, - { x: 15524, y: 15524 }, - { x: 15525, y: 15525 }, - { x: 15526, y: 15526 }, - { x: 15527, y: 15527 }, - { x: 15528, y: 15528 }, - { x: 15529, y: 15529 }, - { x: 15530, y: 15530 }, - { x: 15531, y: 15531 }, - { x: 15532, y: 15532 }, - { x: 15533, y: 15533 }, - { x: 15534, y: 15534 }, - { x: 15535, y: 15535 }, - { x: 15536, y: 15536 }, - { x: 15537, y: 15537 }, - { x: 15538, y: 15538 }, - { x: 15539, y: 15539 }, - { x: 15540, y: 15540 }, - { x: 15541, y: 15541 }, - { x: 15542, y: 15542 }, - { x: 15543, y: 15543 }, - { x: 15544, y: 15544 }, - { x: 15545, y: 15545 }, - { x: 15546, y: 15546 }, - { x: 15547, y: 15547 }, - { x: 15548, y: 15548 }, - { x: 15549, y: 15549 }, - { x: 15550, y: 15550 }, - { x: 15551, y: 15551 }, - { x: 15552, y: 15552 }, - { x: 15553, y: 15553 }, - { x: 15554, y: 15554 }, - { x: 15555, y: 15555 }, - { x: 15556, y: 15556 }, - { x: 15557, y: 15557 }, - { x: 15558, y: 15558 }, - { x: 15559, y: 15559 }, - { x: 15560, y: 15560 }, - { x: 15561, y: 15561 }, - { x: 15562, y: 15562 }, - { x: 15563, y: 15563 }, - { x: 15564, y: 15564 }, - { x: 15565, y: 15565 }, - { x: 15566, y: 15566 }, - { x: 15567, y: 15567 }, - { x: 15568, y: 15568 }, - { x: 15569, y: 15569 }, - { x: 15570, y: 15570 }, - { x: 15571, y: 15571 }, - { x: 15572, y: 15572 }, - { x: 15573, y: 15573 }, - { x: 15574, y: 15574 }, - { x: 15575, y: 15575 }, - { x: 15576, y: 15576 }, - { x: 15577, y: 15577 }, - { x: 15578, y: 15578 }, - { x: 15579, y: 15579 }, - { x: 15580, y: 15580 }, - { x: 15581, y: 15581 }, - { x: 15582, y: 15582 }, - { x: 15583, y: 15583 }, - { x: 15584, y: 15584 }, - { x: 15585, y: 15585 }, - { x: 15586, y: 15586 }, - { x: 15587, y: 15587 }, - { x: 15588, y: 15588 }, - { x: 15589, y: 15589 }, - { x: 15590, y: 15590 }, - { x: 15591, y: 15591 }, - { x: 15592, y: 15592 }, - { x: 15593, y: 15593 }, - { x: 15594, y: 15594 }, - { x: 15595, y: 15595 }, - { x: 15596, y: 15596 }, - { x: 15597, y: 15597 }, - { x: 15598, y: 15598 }, - { x: 15599, y: 15599 }, - { x: 15600, y: 15600 }, - { x: 15601, y: 15601 }, - { x: 15602, y: 15602 }, - { x: 15603, y: 15603 }, - { x: 15604, y: 15604 }, - { x: 15605, y: 15605 }, - { x: 15606, y: 15606 }, - { x: 15607, y: 15607 }, - { x: 15608, y: 15608 }, - { x: 15609, y: 15609 }, - { x: 15610, y: 15610 }, - { x: 15611, y: 15611 }, - { x: 15612, y: 15612 }, - { x: 15613, y: 15613 }, - { x: 15614, y: 15614 }, - { x: 15615, y: 15615 }, - { x: 15616, y: 15616 }, - { x: 15617, y: 15617 }, - { x: 15618, y: 15618 }, - { x: 15619, y: 15619 }, - { x: 15620, y: 15620 }, - { x: 15621, y: 15621 }, - { x: 15622, y: 15622 }, - { x: 15623, y: 15623 }, - { x: 15624, y: 15624 }, - { x: 15625, y: 15625 }, - { x: 15626, y: 15626 }, - { x: 15627, y: 15627 }, - { x: 15628, y: 15628 }, - { x: 15629, y: 15629 }, - { x: 15630, y: 15630 }, - { x: 15631, y: 15631 }, - { x: 15632, y: 15632 }, - { x: 15633, y: 15633 }, - { x: 15634, y: 15634 }, - { x: 15635, y: 15635 }, - { x: 15636, y: 15636 }, - { x: 15637, y: 15637 }, - { x: 15638, y: 15638 }, - { x: 15639, y: 15639 }, - { x: 15640, y: 15640 }, - { x: 15641, y: 15641 }, - { x: 15642, y: 15642 }, - { x: 15643, y: 15643 }, - { x: 15644, y: 15644 }, - { x: 15645, y: 15645 }, - { x: 15646, y: 15646 }, - { x: 15647, y: 15647 }, - { x: 15648, y: 15648 }, - { x: 15649, y: 15649 }, - { x: 15650, y: 15650 }, - { x: 15651, y: 15651 }, - { x: 15652, y: 15652 }, - { x: 15653, y: 15653 }, - { x: 15654, y: 15654 }, - { x: 15655, y: 15655 }, - { x: 15656, y: 15656 }, - { x: 15657, y: 15657 }, - { x: 15658, y: 15658 }, - { x: 15659, y: 15659 }, - { x: 15660, y: 15660 }, - { x: 15661, y: 15661 }, - { x: 15662, y: 15662 }, - { x: 15663, y: 15663 }, - { x: 15664, y: 15664 }, - { x: 15665, y: 15665 }, - { x: 15666, y: 15666 }, - { x: 15667, y: 15667 }, - { x: 15668, y: 15668 }, - { x: 15669, y: 15669 }, - { x: 15670, y: 15670 }, - { x: 15671, y: 15671 }, - { x: 15672, y: 15672 }, - { x: 15673, y: 15673 }, - { x: 15674, y: 15674 }, - { x: 15675, y: 15675 }, - { x: 15676, y: 15676 }, - { x: 15677, y: 15677 }, - { x: 15678, y: 15678 }, - { x: 15679, y: 15679 }, - { x: 15680, y: 15680 }, - { x: 15681, y: 15681 }, - { x: 15682, y: 15682 }, - { x: 15683, y: 15683 }, - { x: 15684, y: 15684 }, - { x: 15685, y: 15685 }, - { x: 15686, y: 15686 }, - { x: 15687, y: 15687 }, - { x: 15688, y: 15688 }, - { x: 15689, y: 15689 }, - { x: 15690, y: 15690 }, - { x: 15691, y: 15691 }, - { x: 15692, y: 15692 }, - { x: 15693, y: 15693 }, - { x: 15694, y: 15694 }, - { x: 15695, y: 15695 }, - { x: 15696, y: 15696 }, - { x: 15697, y: 15697 }, - { x: 15698, y: 15698 }, - { x: 15699, y: 15699 }, - { x: 15700, y: 15700 }, - { x: 15701, y: 15701 }, - { x: 15702, y: 15702 }, - { x: 15703, y: 15703 }, - { x: 15704, y: 15704 }, - { x: 15705, y: 15705 }, - { x: 15706, y: 15706 }, - { x: 15707, y: 15707 }, - { x: 15708, y: 15708 }, - { x: 15709, y: 15709 }, - { x: 15710, y: 15710 }, - { x: 15711, y: 15711 }, - { x: 15712, y: 15712 }, - { x: 15713, y: 15713 }, - { x: 15714, y: 15714 }, - { x: 15715, y: 15715 }, - { x: 15716, y: 15716 }, - { x: 15717, y: 15717 }, - { x: 15718, y: 15718 }, - { x: 15719, y: 15719 }, - { x: 15720, y: 15720 }, - { x: 15721, y: 15721 }, - { x: 15722, y: 15722 }, - { x: 15723, y: 15723 }, - { x: 15724, y: 15724 }, - { x: 15725, y: 15725 }, - { x: 15726, y: 15726 }, - { x: 15727, y: 15727 }, - { x: 15728, y: 15728 }, - { x: 15729, y: 15729 }, - { x: 15730, y: 15730 }, - { x: 15731, y: 15731 }, - { x: 15732, y: 15732 }, - { x: 15733, y: 15733 }, - { x: 15734, y: 15734 }, - { x: 15735, y: 15735 }, - { x: 15736, y: 15736 }, - { x: 15737, y: 15737 }, - { x: 15738, y: 15738 }, - { x: 15739, y: 15739 }, - { x: 15740, y: 15740 }, - { x: 15741, y: 15741 }, - { x: 15742, y: 15742 }, - { x: 15743, y: 15743 }, - { x: 15744, y: 15744 }, - { x: 15745, y: 15745 }, - { x: 15746, y: 15746 }, - { x: 15747, y: 15747 }, - { x: 15748, y: 15748 }, - { x: 15749, y: 15749 }, - { x: 15750, y: 15750 }, - { x: 15751, y: 15751 }, - { x: 15752, y: 15752 }, - { x: 15753, y: 15753 }, - { x: 15754, y: 15754 }, - { x: 15755, y: 15755 }, - { x: 15756, y: 15756 }, - { x: 15757, y: 15757 }, - { x: 15758, y: 15758 }, - { x: 15759, y: 15759 }, - { x: 15760, y: 15760 }, - { x: 15761, y: 15761 }, - { x: 15762, y: 15762 }, - { x: 15763, y: 15763 }, - { x: 15764, y: 15764 }, - { x: 15765, y: 15765 }, - { x: 15766, y: 15766 }, - { x: 15767, y: 15767 }, - { x: 15768, y: 15768 }, - { x: 15769, y: 15769 }, - { x: 15770, y: 15770 }, - { x: 15771, y: 15771 }, - { x: 15772, y: 15772 }, - { x: 15773, y: 15773 }, - { x: 15774, y: 15774 }, - { x: 15775, y: 15775 }, - { x: 15776, y: 15776 }, - { x: 15777, y: 15777 }, - { x: 15778, y: 15778 }, - { x: 15779, y: 15779 }, - { x: 15780, y: 15780 }, - { x: 15781, y: 15781 }, - { x: 15782, y: 15782 }, - { x: 15783, y: 15783 }, - { x: 15784, y: 15784 }, - { x: 15785, y: 15785 }, - { x: 15786, y: 15786 }, - { x: 15787, y: 15787 }, - { x: 15788, y: 15788 }, - { x: 15789, y: 15789 }, - { x: 15790, y: 15790 }, - { x: 15791, y: 15791 }, - { x: 15792, y: 15792 }, - { x: 15793, y: 15793 }, - { x: 15794, y: 15794 }, - { x: 15795, y: 15795 }, - { x: 15796, y: 15796 }, - { x: 15797, y: 15797 }, - { x: 15798, y: 15798 }, - { x: 15799, y: 15799 }, - { x: 15800, y: 15800 }, - { x: 15801, y: 15801 }, - { x: 15802, y: 15802 }, - { x: 15803, y: 15803 }, - { x: 15804, y: 15804 }, - { x: 15805, y: 15805 }, - { x: 15806, y: 15806 }, - { x: 15807, y: 15807 }, - { x: 15808, y: 15808 }, - { x: 15809, y: 15809 }, - { x: 15810, y: 15810 }, - { x: 15811, y: 15811 }, - { x: 15812, y: 15812 }, - { x: 15813, y: 15813 }, - { x: 15814, y: 15814 }, - { x: 15815, y: 15815 }, - { x: 15816, y: 15816 }, - { x: 15817, y: 15817 }, - { x: 15818, y: 15818 }, - { x: 15819, y: 15819 }, - { x: 15820, y: 15820 }, - { x: 15821, y: 15821 }, - { x: 15822, y: 15822 }, - { x: 15823, y: 15823 }, - { x: 15824, y: 15824 }, - { x: 15825, y: 15825 }, - { x: 15826, y: 15826 }, - { x: 15827, y: 15827 }, - { x: 15828, y: 15828 }, - { x: 15829, y: 15829 }, - { x: 15830, y: 15830 }, - { x: 15831, y: 15831 }, - { x: 15832, y: 15832 }, - { x: 15833, y: 15833 }, - { x: 15834, y: 15834 }, - { x: 15835, y: 15835 }, - { x: 15836, y: 15836 }, - { x: 15837, y: 15837 }, - { x: 15838, y: 15838 }, - { x: 15839, y: 15839 }, - { x: 15840, y: 15840 }, - { x: 15841, y: 15841 }, - { x: 15842, y: 15842 }, - { x: 15843, y: 15843 }, - { x: 15844, y: 15844 }, - { x: 15845, y: 15845 }, - { x: 15846, y: 15846 }, - { x: 15847, y: 15847 }, - { x: 15848, y: 15848 }, - { x: 15849, y: 15849 }, - { x: 15850, y: 15850 }, - { x: 15851, y: 15851 }, - { x: 15852, y: 15852 }, - { x: 15853, y: 15853 }, - { x: 15854, y: 15854 }, - { x: 15855, y: 15855 }, - { x: 15856, y: 15856 }, - { x: 15857, y: 15857 }, - { x: 15858, y: 15858 }, - { x: 15859, y: 15859 }, - { x: 15860, y: 15860 }, - { x: 15861, y: 15861 }, - { x: 15862, y: 15862 }, - { x: 15863, y: 15863 }, - { x: 15864, y: 15864 }, - { x: 15865, y: 15865 }, - { x: 15866, y: 15866 }, - { x: 15867, y: 15867 }, - { x: 15868, y: 15868 }, - { x: 15869, y: 15869 }, - { x: 15870, y: 15870 }, - { x: 15871, y: 15871 }, - { x: 15872, y: 15872 }, - { x: 15873, y: 15873 }, - { x: 15874, y: 15874 }, - { x: 15875, y: 15875 }, - { x: 15876, y: 15876 }, - { x: 15877, y: 15877 }, - { x: 15878, y: 15878 }, - { x: 15879, y: 15879 }, - { x: 15880, y: 15880 }, - { x: 15881, y: 15881 }, - { x: 15882, y: 15882 }, - { x: 15883, y: 15883 }, - { x: 15884, y: 15884 }, - { x: 15885, y: 15885 }, - { x: 15886, y: 15886 }, - { x: 15887, y: 15887 }, - { x: 15888, y: 15888 }, - { x: 15889, y: 15889 }, - { x: 15890, y: 15890 }, - { x: 15891, y: 15891 }, - { x: 15892, y: 15892 }, - { x: 15893, y: 15893 }, - { x: 15894, y: 15894 }, - { x: 15895, y: 15895 }, - { x: 15896, y: 15896 }, - { x: 15897, y: 15897 }, - { x: 15898, y: 15898 }, - { x: 15899, y: 15899 }, - { x: 15900, y: 15900 }, - { x: 15901, y: 15901 }, - { x: 15902, y: 15902 }, - { x: 15903, y: 15903 }, - { x: 15904, y: 15904 }, - { x: 15905, y: 15905 }, - { x: 15906, y: 15906 }, - { x: 15907, y: 15907 }, - { x: 15908, y: 15908 }, - { x: 15909, y: 15909 }, - { x: 15910, y: 15910 }, - { x: 15911, y: 15911 }, - { x: 15912, y: 15912 }, - { x: 15913, y: 15913 }, - { x: 15914, y: 15914 }, - { x: 15915, y: 15915 }, - { x: 15916, y: 15916 }, - { x: 15917, y: 15917 }, - { x: 15918, y: 15918 }, - { x: 15919, y: 15919 }, - { x: 15920, y: 15920 }, - { x: 15921, y: 15921 }, - { x: 15922, y: 15922 }, - { x: 15923, y: 15923 }, - { x: 15924, y: 15924 }, - { x: 15925, y: 15925 }, - { x: 15926, y: 15926 }, - { x: 15927, y: 15927 }, - { x: 15928, y: 15928 }, - { x: 15929, y: 15929 }, - { x: 15930, y: 15930 }, - { x: 15931, y: 15931 }, - { x: 15932, y: 15932 }, - { x: 15933, y: 15933 }, - { x: 15934, y: 15934 }, - { x: 15935, y: 15935 }, - { x: 15936, y: 15936 }, - { x: 15937, y: 15937 }, - { x: 15938, y: 15938 }, - { x: 15939, y: 15939 }, - { x: 15940, y: 15940 }, - { x: 15941, y: 15941 }, - { x: 15942, y: 15942 }, - { x: 15943, y: 15943 }, - { x: 15944, y: 15944 }, - { x: 15945, y: 15945 }, - { x: 15946, y: 15946 }, - { x: 15947, y: 15947 }, - { x: 15948, y: 15948 }, - { x: 15949, y: 15949 }, - { x: 15950, y: 15950 }, - { x: 15951, y: 15951 }, - { x: 15952, y: 15952 }, - { x: 15953, y: 15953 }, - { x: 15954, y: 15954 }, - { x: 15955, y: 15955 }, - { x: 15956, y: 15956 }, - { x: 15957, y: 15957 }, - { x: 15958, y: 15958 }, - { x: 15959, y: 15959 }, - { x: 15960, y: 15960 }, - { x: 15961, y: 15961 }, - { x: 15962, y: 15962 }, - { x: 15963, y: 15963 }, - { x: 15964, y: 15964 }, - { x: 15965, y: 15965 }, - { x: 15966, y: 15966 }, - { x: 15967, y: 15967 }, - { x: 15968, y: 15968 }, - { x: 15969, y: 15969 }, - { x: 15970, y: 15970 }, - { x: 15971, y: 15971 }, - { x: 15972, y: 15972 }, - { x: 15973, y: 15973 }, - { x: 15974, y: 15974 }, - { x: 15975, y: 15975 }, - { x: 15976, y: 15976 }, - { x: 15977, y: 15977 }, - { x: 15978, y: 15978 }, - { x: 15979, y: 15979 }, - { x: 15980, y: 15980 }, - { x: 15981, y: 15981 }, - { x: 15982, y: 15982 }, - { x: 15983, y: 15983 }, - { x: 15984, y: 15984 }, - { x: 15985, y: 15985 }, - { x: 15986, y: 15986 }, - { x: 15987, y: 15987 }, - { x: 15988, y: 15988 }, - { x: 15989, y: 15989 }, - { x: 15990, y: 15990 }, - { x: 15991, y: 15991 }, - { x: 15992, y: 15992 }, - { x: 15993, y: 15993 }, - { x: 15994, y: 15994 }, - { x: 15995, y: 15995 }, - { x: 15996, y: 15996 }, - { x: 15997, y: 15997 }, - { x: 15998, y: 15998 }, - { x: 15999, y: 15999 }, - { x: 16000, y: 16000 }, - { x: 16001, y: 16001 }, - { x: 16002, y: 16002 }, - { x: 16003, y: 16003 }, - { x: 16004, y: 16004 }, - { x: 16005, y: 16005 }, - { x: 16006, y: 16006 }, - { x: 16007, y: 16007 }, - { x: 16008, y: 16008 }, - { x: 16009, y: 16009 }, - { x: 16010, y: 16010 }, - { x: 16011, y: 16011 }, - { x: 16012, y: 16012 }, - { x: 16013, y: 16013 }, - { x: 16014, y: 16014 }, - { x: 16015, y: 16015 }, - { x: 16016, y: 16016 }, - { x: 16017, y: 16017 }, - { x: 16018, y: 16018 }, - { x: 16019, y: 16019 }, - { x: 16020, y: 16020 }, - { x: 16021, y: 16021 }, - { x: 16022, y: 16022 }, - { x: 16023, y: 16023 }, - { x: 16024, y: 16024 }, - { x: 16025, y: 16025 }, - { x: 16026, y: 16026 }, - { x: 16027, y: 16027 }, - { x: 16028, y: 16028 }, - { x: 16029, y: 16029 }, - { x: 16030, y: 16030 }, - { x: 16031, y: 16031 }, - { x: 16032, y: 16032 }, - { x: 16033, y: 16033 }, - { x: 16034, y: 16034 }, - { x: 16035, y: 16035 }, - { x: 16036, y: 16036 }, - { x: 16037, y: 16037 }, - { x: 16038, y: 16038 }, - { x: 16039, y: 16039 }, - { x: 16040, y: 16040 }, - { x: 16041, y: 16041 }, - { x: 16042, y: 16042 }, - { x: 16043, y: 16043 }, - { x: 16044, y: 16044 }, - { x: 16045, y: 16045 }, - { x: 16046, y: 16046 }, - { x: 16047, y: 16047 }, - { x: 16048, y: 16048 }, - { x: 16049, y: 16049 }, - { x: 16050, y: 16050 }, - { x: 16051, y: 16051 }, - { x: 16052, y: 16052 }, - { x: 16053, y: 16053 }, - { x: 16054, y: 16054 }, - { x: 16055, y: 16055 }, - { x: 16056, y: 16056 }, - { x: 16057, y: 16057 }, - { x: 16058, y: 16058 }, - { x: 16059, y: 16059 }, - { x: 16060, y: 16060 }, - { x: 16061, y: 16061 }, - { x: 16062, y: 16062 }, - { x: 16063, y: 16063 }, - { x: 16064, y: 16064 }, - { x: 16065, y: 16065 }, - { x: 16066, y: 16066 }, - { x: 16067, y: 16067 }, - { x: 16068, y: 16068 }, - { x: 16069, y: 16069 }, - { x: 16070, y: 16070 }, - { x: 16071, y: 16071 }, - { x: 16072, y: 16072 }, - { x: 16073, y: 16073 }, - { x: 16074, y: 16074 }, - { x: 16075, y: 16075 }, - { x: 16076, y: 16076 }, - { x: 16077, y: 16077 }, - { x: 16078, y: 16078 }, - { x: 16079, y: 16079 }, - { x: 16080, y: 16080 }, - { x: 16081, y: 16081 }, - { x: 16082, y: 16082 }, - { x: 16083, y: 16083 }, - { x: 16084, y: 16084 }, - { x: 16085, y: 16085 }, - { x: 16086, y: 16086 }, - { x: 16087, y: 16087 }, - { x: 16088, y: 16088 }, - { x: 16089, y: 16089 }, - { x: 16090, y: 16090 }, - { x: 16091, y: 16091 }, - { x: 16092, y: 16092 }, - { x: 16093, y: 16093 }, - { x: 16094, y: 16094 }, - { x: 16095, y: 16095 }, - { x: 16096, y: 16096 }, - { x: 16097, y: 16097 }, - { x: 16098, y: 16098 }, - { x: 16099, y: 16099 }, - { x: 16100, y: 16100 }, - { x: 16101, y: 16101 }, - { x: 16102, y: 16102 }, - { x: 16103, y: 16103 }, - { x: 16104, y: 16104 }, - { x: 16105, y: 16105 }, - { x: 16106, y: 16106 }, - { x: 16107, y: 16107 }, - { x: 16108, y: 16108 }, - { x: 16109, y: 16109 }, - { x: 16110, y: 16110 }, - { x: 16111, y: 16111 }, - { x: 16112, y: 16112 }, - { x: 16113, y: 16113 }, - { x: 16114, y: 16114 }, - { x: 16115, y: 16115 }, - { x: 16116, y: 16116 }, - { x: 16117, y: 16117 }, - { x: 16118, y: 16118 }, - { x: 16119, y: 16119 }, - { x: 16120, y: 16120 }, - { x: 16121, y: 16121 }, - { x: 16122, y: 16122 }, - { x: 16123, y: 16123 }, - { x: 16124, y: 16124 }, - { x: 16125, y: 16125 }, - { x: 16126, y: 16126 }, - { x: 16127, y: 16127 }, - { x: 16128, y: 16128 }, - { x: 16129, y: 16129 }, - { x: 16130, y: 16130 }, - { x: 16131, y: 16131 }, - { x: 16132, y: 16132 }, - { x: 16133, y: 16133 }, - { x: 16134, y: 16134 }, - { x: 16135, y: 16135 }, - { x: 16136, y: 16136 }, - { x: 16137, y: 16137 }, - { x: 16138, y: 16138 }, - { x: 16139, y: 16139 }, - { x: 16140, y: 16140 }, - { x: 16141, y: 16141 }, - { x: 16142, y: 16142 }, - { x: 16143, y: 16143 }, - { x: 16144, y: 16144 }, - { x: 16145, y: 16145 }, - { x: 16146, y: 16146 }, - { x: 16147, y: 16147 }, - { x: 16148, y: 16148 }, - { x: 16149, y: 16149 }, - { x: 16150, y: 16150 }, - { x: 16151, y: 16151 }, - { x: 16152, y: 16152 }, - { x: 16153, y: 16153 }, - { x: 16154, y: 16154 }, - { x: 16155, y: 16155 }, - { x: 16156, y: 16156 }, - { x: 16157, y: 16157 }, - { x: 16158, y: 16158 }, - { x: 16159, y: 16159 }, - { x: 16160, y: 16160 }, - { x: 16161, y: 16161 }, - { x: 16162, y: 16162 }, - { x: 16163, y: 16163 }, - { x: 16164, y: 16164 }, - { x: 16165, y: 16165 }, - { x: 16166, y: 16166 }, - { x: 16167, y: 16167 }, - { x: 16168, y: 16168 }, - { x: 16169, y: 16169 }, - { x: 16170, y: 16170 }, - { x: 16171, y: 16171 }, - { x: 16172, y: 16172 }, - { x: 16173, y: 16173 }, - { x: 16174, y: 16174 }, - { x: 16175, y: 16175 }, - { x: 16176, y: 16176 }, - { x: 16177, y: 16177 }, - { x: 16178, y: 16178 }, - { x: 16179, y: 16179 }, - { x: 16180, y: 16180 }, - { x: 16181, y: 16181 }, - { x: 16182, y: 16182 }, - { x: 16183, y: 16183 }, - { x: 16184, y: 16184 }, - { x: 16185, y: 16185 }, - { x: 16186, y: 16186 }, - { x: 16187, y: 16187 }, - { x: 16188, y: 16188 }, - { x: 16189, y: 16189 }, - { x: 16190, y: 16190 }, - { x: 16191, y: 16191 }, - { x: 16192, y: 16192 }, - { x: 16193, y: 16193 }, - { x: 16194, y: 16194 }, - { x: 16195, y: 16195 }, - { x: 16196, y: 16196 }, - { x: 16197, y: 16197 }, - { x: 16198, y: 16198 }, - { x: 16199, y: 16199 }, - { x: 16200, y: 16200 }, - { x: 16201, y: 16201 }, - { x: 16202, y: 16202 }, - { x: 16203, y: 16203 }, - { x: 16204, y: 16204 }, - { x: 16205, y: 16205 }, - { x: 16206, y: 16206 }, - { x: 16207, y: 16207 }, - { x: 16208, y: 16208 }, - { x: 16209, y: 16209 }, - { x: 16210, y: 16210 }, - { x: 16211, y: 16211 }, - { x: 16212, y: 16212 }, - { x: 16213, y: 16213 }, - { x: 16214, y: 16214 }, - { x: 16215, y: 16215 }, - { x: 16216, y: 16216 }, - { x: 16217, y: 16217 }, - { x: 16218, y: 16218 }, - { x: 16219, y: 16219 }, - { x: 16220, y: 16220 }, - { x: 16221, y: 16221 }, - { x: 16222, y: 16222 }, - { x: 16223, y: 16223 }, - { x: 16224, y: 16224 }, - { x: 16225, y: 16225 }, - { x: 16226, y: 16226 }, - { x: 16227, y: 16227 }, - { x: 16228, y: 16228 }, - { x: 16229, y: 16229 }, - { x: 16230, y: 16230 }, - { x: 16231, y: 16231 }, - { x: 16232, y: 16232 }, - { x: 16233, y: 16233 }, - { x: 16234, y: 16234 }, - { x: 16235, y: 16235 }, - { x: 16236, y: 16236 }, - { x: 16237, y: 16237 }, - { x: 16238, y: 16238 }, - { x: 16239, y: 16239 }, - { x: 16240, y: 16240 }, - { x: 16241, y: 16241 }, - { x: 16242, y: 16242 }, - { x: 16243, y: 16243 }, - { x: 16244, y: 16244 }, - { x: 16245, y: 16245 }, - { x: 16246, y: 16246 }, - { x: 16247, y: 16247 }, - { x: 16248, y: 16248 }, - { x: 16249, y: 16249 }, - { x: 16250, y: 16250 }, - { x: 16251, y: 16251 }, - { x: 16252, y: 16252 }, - { x: 16253, y: 16253 }, - { x: 16254, y: 16254 }, - { x: 16255, y: 16255 }, - { x: 16256, y: 16256 }, - { x: 16257, y: 16257 }, - { x: 16258, y: 16258 }, - { x: 16259, y: 16259 }, - { x: 16260, y: 16260 }, - { x: 16261, y: 16261 }, - { x: 16262, y: 16262 }, - { x: 16263, y: 16263 }, - { x: 16264, y: 16264 }, - { x: 16265, y: 16265 }, - { x: 16266, y: 16266 }, - { x: 16267, y: 16267 }, - { x: 16268, y: 16268 }, - { x: 16269, y: 16269 }, - { x: 16270, y: 16270 }, - { x: 16271, y: 16271 }, - { x: 16272, y: 16272 }, - { x: 16273, y: 16273 }, - { x: 16274, y: 16274 }, - { x: 16275, y: 16275 }, - { x: 16276, y: 16276 }, - { x: 16277, y: 16277 }, - { x: 16278, y: 16278 }, - { x: 16279, y: 16279 }, - { x: 16280, y: 16280 }, - { x: 16281, y: 16281 }, - { x: 16282, y: 16282 }, - { x: 16283, y: 16283 }, - { x: 16284, y: 16284 }, - { x: 16285, y: 16285 }, - { x: 16286, y: 16286 }, - { x: 16287, y: 16287 }, - { x: 16288, y: 16288 }, - { x: 16289, y: 16289 }, - { x: 16290, y: 16290 }, - { x: 16291, y: 16291 }, - { x: 16292, y: 16292 }, - { x: 16293, y: 16293 }, - { x: 16294, y: 16294 }, - { x: 16295, y: 16295 }, - { x: 16296, y: 16296 }, - { x: 16297, y: 16297 }, - { x: 16298, y: 16298 }, - { x: 16299, y: 16299 }, - { x: 16300, y: 16300 }, - { x: 16301, y: 16301 }, - { x: 16302, y: 16302 }, - { x: 16303, y: 16303 }, - { x: 16304, y: 16304 }, - { x: 16305, y: 16305 }, - { x: 16306, y: 16306 }, - { x: 16307, y: 16307 }, - { x: 16308, y: 16308 }, - { x: 16309, y: 16309 }, - { x: 16310, y: 16310 }, - { x: 16311, y: 16311 }, - { x: 16312, y: 16312 }, - { x: 16313, y: 16313 }, - { x: 16314, y: 16314 }, - { x: 16315, y: 16315 }, - { x: 16316, y: 16316 }, - { x: 16317, y: 16317 }, - { x: 16318, y: 16318 }, - { x: 16319, y: 16319 }, - { x: 16320, y: 16320 }, - { x: 16321, y: 16321 }, - { x: 16322, y: 16322 }, - { x: 16323, y: 16323 }, - { x: 16324, y: 16324 }, - { x: 16325, y: 16325 }, - { x: 16326, y: 16326 }, - { x: 16327, y: 16327 }, - { x: 16328, y: 16328 }, - { x: 16329, y: 16329 }, - { x: 16330, y: 16330 }, - { x: 16331, y: 16331 }, - { x: 16332, y: 16332 }, - { x: 16333, y: 16333 }, - { x: 16334, y: 16334 }, - { x: 16335, y: 16335 }, - { x: 16336, y: 16336 }, - { x: 16337, y: 16337 }, - { x: 16338, y: 16338 }, - { x: 16339, y: 16339 }, - { x: 16340, y: 16340 }, - { x: 16341, y: 16341 }, - { x: 16342, y: 16342 }, - { x: 16343, y: 16343 }, - { x: 16344, y: 16344 }, - { x: 16345, y: 16345 }, - { x: 16346, y: 16346 }, - { x: 16347, y: 16347 }, - { x: 16348, y: 16348 }, - { x: 16349, y: 16349 }, - { x: 16350, y: 16350 }, - { x: 16351, y: 16351 }, - { x: 16352, y: 16352 }, - { x: 16353, y: 16353 }, - { x: 16354, y: 16354 }, - { x: 16355, y: 16355 }, - { x: 16356, y: 16356 }, - { x: 16357, y: 16357 }, - { x: 16358, y: 16358 }, - { x: 16359, y: 16359 }, - { x: 16360, y: 16360 }, - { x: 16361, y: 16361 }, - { x: 16362, y: 16362 }, - { x: 16363, y: 16363 }, - { x: 16364, y: 16364 }, - { x: 16365, y: 16365 }, - { x: 16366, y: 16366 }, - { x: 16367, y: 16367 }, - { x: 16368, y: 16368 }, - { x: 16369, y: 16369 }, - { x: 16370, y: 16370 }, - { x: 16371, y: 16371 }, - { x: 16372, y: 16372 }, - { x: 16373, y: 16373 }, - { x: 16374, y: 16374 }, - { x: 16375, y: 16375 }, - { x: 16376, y: 16376 }, - { x: 16377, y: 16377 }, - { x: 16378, y: 16378 }, - { x: 16379, y: 16379 }, - { x: 16380, y: 16380 }, - { x: 16381, y: 16381 }, - { x: 16382, y: 16382 }, - { x: 16383, y: 16383 }, - { x: 16384, y: 16384 }, - { x: 16385, y: 16385 }, - { x: 16386, y: 16386 }, - { x: 16387, y: 16387 }, - { x: 16388, y: 16388 }, - { x: 16389, y: 16389 }, - { x: 16390, y: 16390 }, - { x: 16391, y: 16391 }, - { x: 16392, y: 16392 }, - { x: 16393, y: 16393 }, - { x: 16394, y: 16394 }, - { x: 16395, y: 16395 }, - { x: 16396, y: 16396 }, - { x: 16397, y: 16397 }, - { x: 16398, y: 16398 }, - { x: 16399, y: 16399 }, - { x: 16400, y: 16400 }, - { x: 16401, y: 16401 }, - { x: 16402, y: 16402 }, - { x: 16403, y: 16403 }, - { x: 16404, y: 16404 }, - { x: 16405, y: 16405 }, - { x: 16406, y: 16406 }, - { x: 16407, y: 16407 }, - { x: 16408, y: 16408 }, - { x: 16409, y: 16409 }, - { x: 16410, y: 16410 }, - { x: 16411, y: 16411 }, - { x: 16412, y: 16412 }, - { x: 16413, y: 16413 }, - { x: 16414, y: 16414 }, - { x: 16415, y: 16415 }, - { x: 16416, y: 16416 }, - { x: 16417, y: 16417 }, - { x: 16418, y: 16418 }, - { x: 16419, y: 16419 }, - { x: 16420, y: 16420 }, - { x: 16421, y: 16421 }, - { x: 16422, y: 16422 }, - { x: 16423, y: 16423 }, - { x: 16424, y: 16424 }, - { x: 16425, y: 16425 }, - { x: 16426, y: 16426 }, - { x: 16427, y: 16427 }, - { x: 16428, y: 16428 }, - { x: 16429, y: 16429 }, - { x: 16430, y: 16430 }, - { x: 16431, y: 16431 }, - { x: 16432, y: 16432 }, - { x: 16433, y: 16433 }, - { x: 16434, y: 16434 }, - { x: 16435, y: 16435 }, - { x: 16436, y: 16436 }, - { x: 16437, y: 16437 }, - { x: 16438, y: 16438 }, - { x: 16439, y: 16439 }, - { x: 16440, y: 16440 }, - { x: 16441, y: 16441 }, - { x: 16442, y: 16442 }, - { x: 16443, y: 16443 }, - { x: 16444, y: 16444 }, - { x: 16445, y: 16445 }, - { x: 16446, y: 16446 }, - { x: 16447, y: 16447 }, - { x: 16448, y: 16448 }, - { x: 16449, y: 16449 }, - { x: 16450, y: 16450 }, - { x: 16451, y: 16451 }, - { x: 16452, y: 16452 }, - { x: 16453, y: 16453 }, - { x: 16454, y: 16454 }, - { x: 16455, y: 16455 }, - { x: 16456, y: 16456 }, - { x: 16457, y: 16457 }, - { x: 16458, y: 16458 }, - { x: 16459, y: 16459 }, - { x: 16460, y: 16460 }, - { x: 16461, y: 16461 }, - { x: 16462, y: 16462 }, - { x: 16463, y: 16463 }, - { x: 16464, y: 16464 }, - { x: 16465, y: 16465 }, - { x: 16466, y: 16466 }, - { x: 16467, y: 16467 }, - { x: 16468, y: 16468 }, - { x: 16469, y: 16469 }, - { x: 16470, y: 16470 }, - { x: 16471, y: 16471 }, - { x: 16472, y: 16472 }, - { x: 16473, y: 16473 }, - { x: 16474, y: 16474 }, - { x: 16475, y: 16475 }, - { x: 16476, y: 16476 }, - { x: 16477, y: 16477 }, - { x: 16478, y: 16478 }, - { x: 16479, y: 16479 }, - { x: 16480, y: 16480 }, - { x: 16481, y: 16481 }, - { x: 16482, y: 16482 }, - { x: 16483, y: 16483 }, - { x: 16484, y: 16484 }, - { x: 16485, y: 16485 }, - { x: 16486, y: 16486 }, - { x: 16487, y: 16487 }, - { x: 16488, y: 16488 }, - { x: 16489, y: 16489 }, - { x: 16490, y: 16490 }, - { x: 16491, y: 16491 }, - { x: 16492, y: 16492 }, - { x: 16493, y: 16493 }, - { x: 16494, y: 16494 }, - { x: 16495, y: 16495 }, - { x: 16496, y: 16496 }, - { x: 16497, y: 16497 }, - { x: 16498, y: 16498 }, - { x: 16499, y: 16499 }, - { x: 16500, y: 16500 }, - { x: 16501, y: 16501 }, - { x: 16502, y: 16502 }, - { x: 16503, y: 16503 }, - { x: 16504, y: 16504 }, - { x: 16505, y: 16505 }, - { x: 16506, y: 16506 }, - { x: 16507, y: 16507 }, - { x: 16508, y: 16508 }, - { x: 16509, y: 16509 }, - { x: 16510, y: 16510 }, - { x: 16511, y: 16511 }, - { x: 16512, y: 16512 }, - { x: 16513, y: 16513 }, - { x: 16514, y: 16514 }, - { x: 16515, y: 16515 }, - { x: 16516, y: 16516 }, - { x: 16517, y: 16517 }, - { x: 16518, y: 16518 }, - { x: 16519, y: 16519 }, - { x: 16520, y: 16520 }, - { x: 16521, y: 16521 }, - { x: 16522, y: 16522 }, - { x: 16523, y: 16523 }, - { x: 16524, y: 16524 }, - { x: 16525, y: 16525 }, - { x: 16526, y: 16526 }, - { x: 16527, y: 16527 }, - { x: 16528, y: 16528 }, - { x: 16529, y: 16529 }, - { x: 16530, y: 16530 }, - { x: 16531, y: 16531 }, - { x: 16532, y: 16532 }, - { x: 16533, y: 16533 }, - { x: 16534, y: 16534 }, - { x: 16535, y: 16535 }, - { x: 16536, y: 16536 }, - { x: 16537, y: 16537 }, - { x: 16538, y: 16538 }, - { x: 16539, y: 16539 }, - { x: 16540, y: 16540 }, - { x: 16541, y: 16541 }, - { x: 16542, y: 16542 }, - { x: 16543, y: 16543 }, - { x: 16544, y: 16544 }, - { x: 16545, y: 16545 }, - { x: 16546, y: 16546 }, - { x: 16547, y: 16547 }, - { x: 16548, y: 16548 }, - { x: 16549, y: 16549 }, - { x: 16550, y: 16550 }, - { x: 16551, y: 16551 }, - { x: 16552, y: 16552 }, - { x: 16553, y: 16553 }, - { x: 16554, y: 16554 }, - { x: 16555, y: 16555 }, - { x: 16556, y: 16556 }, - { x: 16557, y: 16557 }, - { x: 16558, y: 16558 }, - { x: 16559, y: 16559 }, - { x: 16560, y: 16560 }, - { x: 16561, y: 16561 }, - { x: 16562, y: 16562 }, - { x: 16563, y: 16563 }, - { x: 16564, y: 16564 }, - { x: 16565, y: 16565 }, - { x: 16566, y: 16566 }, - { x: 16567, y: 16567 }, - { x: 16568, y: 16568 }, - { x: 16569, y: 16569 }, - { x: 16570, y: 16570 }, - { x: 16571, y: 16571 }, - { x: 16572, y: 16572 }, - { x: 16573, y: 16573 }, - { x: 16574, y: 16574 }, - { x: 16575, y: 16575 }, - { x: 16576, y: 16576 }, - { x: 16577, y: 16577 }, - { x: 16578, y: 16578 }, - { x: 16579, y: 16579 }, - { x: 16580, y: 16580 }, - { x: 16581, y: 16581 }, - { x: 16582, y: 16582 }, - { x: 16583, y: 16583 }, - { x: 16584, y: 16584 }, - { x: 16585, y: 16585 }, - { x: 16586, y: 16586 }, - { x: 16587, y: 16587 }, - { x: 16588, y: 16588 }, - { x: 16589, y: 16589 }, - { x: 16590, y: 16590 }, - { x: 16591, y: 16591 }, - { x: 16592, y: 16592 }, - { x: 16593, y: 16593 }, - { x: 16594, y: 16594 }, - { x: 16595, y: 16595 }, - { x: 16596, y: 16596 }, - { x: 16597, y: 16597 }, - { x: 16598, y: 16598 }, - { x: 16599, y: 16599 }, - { x: 16600, y: 16600 }, - { x: 16601, y: 16601 }, - { x: 16602, y: 16602 }, - { x: 16603, y: 16603 }, - { x: 16604, y: 16604 }, - { x: 16605, y: 16605 }, - { x: 16606, y: 16606 }, - { x: 16607, y: 16607 }, - { x: 16608, y: 16608 }, - { x: 16609, y: 16609 }, - { x: 16610, y: 16610 }, - { x: 16611, y: 16611 }, - { x: 16612, y: 16612 }, - { x: 16613, y: 16613 }, - { x: 16614, y: 16614 }, - { x: 16615, y: 16615 }, - { x: 16616, y: 16616 }, - { x: 16617, y: 16617 }, - { x: 16618, y: 16618 }, - { x: 16619, y: 16619 }, - { x: 16620, y: 16620 }, - { x: 16621, y: 16621 }, - { x: 16622, y: 16622 }, - { x: 16623, y: 16623 }, - { x: 16624, y: 16624 }, - { x: 16625, y: 16625 }, - { x: 16626, y: 16626 }, - { x: 16627, y: 16627 }, - { x: 16628, y: 16628 }, - { x: 16629, y: 16629 }, - { x: 16630, y: 16630 }, - { x: 16631, y: 16631 }, - { x: 16632, y: 16632 }, - { x: 16633, y: 16633 }, - { x: 16634, y: 16634 }, - { x: 16635, y: 16635 }, - { x: 16636, y: 16636 }, - { x: 16637, y: 16637 }, - { x: 16638, y: 16638 }, - { x: 16639, y: 16639 }, - { x: 16640, y: 16640 }, - { x: 16641, y: 16641 }, - { x: 16642, y: 16642 }, - { x: 16643, y: 16643 }, - { x: 16644, y: 16644 }, - { x: 16645, y: 16645 }, - { x: 16646, y: 16646 }, - { x: 16647, y: 16647 }, - { x: 16648, y: 16648 }, - { x: 16649, y: 16649 }, - { x: 16650, y: 16650 }, - { x: 16651, y: 16651 }, - { x: 16652, y: 16652 }, - { x: 16653, y: 16653 }, - { x: 16654, y: 16654 }, - { x: 16655, y: 16655 }, - { x: 16656, y: 16656 }, - { x: 16657, y: 16657 }, - { x: 16658, y: 16658 }, - { x: 16659, y: 16659 }, - { x: 16660, y: 16660 }, - { x: 16661, y: 16661 }, - { x: 16662, y: 16662 }, - { x: 16663, y: 16663 }, - { x: 16664, y: 16664 }, - { x: 16665, y: 16665 }, - { x: 16666, y: 16666 }, - { x: 16667, y: 16667 }, - { x: 16668, y: 16668 }, - { x: 16669, y: 16669 }, - { x: 16670, y: 16670 }, - { x: 16671, y: 16671 }, - { x: 16672, y: 16672 }, - { x: 16673, y: 16673 }, - { x: 16674, y: 16674 }, - { x: 16675, y: 16675 }, - { x: 16676, y: 16676 }, - { x: 16677, y: 16677 }, - { x: 16678, y: 16678 }, - { x: 16679, y: 16679 }, - { x: 16680, y: 16680 }, - { x: 16681, y: 16681 }, - { x: 16682, y: 16682 }, - { x: 16683, y: 16683 }, - { x: 16684, y: 16684 }, - { x: 16685, y: 16685 }, - { x: 16686, y: 16686 }, - { x: 16687, y: 16687 }, - { x: 16688, y: 16688 }, - { x: 16689, y: 16689 }, - { x: 16690, y: 16690 }, - { x: 16691, y: 16691 }, - { x: 16692, y: 16692 }, - { x: 16693, y: 16693 }, - { x: 16694, y: 16694 }, - { x: 16695, y: 16695 }, - { x: 16696, y: 16696 }, - { x: 16697, y: 16697 }, - { x: 16698, y: 16698 }, - { x: 16699, y: 16699 }, - { x: 16700, y: 16700 }, - { x: 16701, y: 16701 }, - { x: 16702, y: 16702 }, - { x: 16703, y: 16703 }, - { x: 16704, y: 16704 }, - { x: 16705, y: 16705 }, - { x: 16706, y: 16706 }, - { x: 16707, y: 16707 }, - { x: 16708, y: 16708 }, - { x: 16709, y: 16709 }, - { x: 16710, y: 16710 }, - { x: 16711, y: 16711 }, - { x: 16712, y: 16712 }, - { x: 16713, y: 16713 }, - { x: 16714, y: 16714 }, - { x: 16715, y: 16715 }, - { x: 16716, y: 16716 }, - { x: 16717, y: 16717 }, - { x: 16718, y: 16718 }, - { x: 16719, y: 16719 }, - { x: 16720, y: 16720 }, - { x: 16721, y: 16721 }, - { x: 16722, y: 16722 }, - { x: 16723, y: 16723 }, - { x: 16724, y: 16724 }, - { x: 16725, y: 16725 }, - { x: 16726, y: 16726 }, - { x: 16727, y: 16727 }, - { x: 16728, y: 16728 }, - { x: 16729, y: 16729 }, - { x: 16730, y: 16730 }, - { x: 16731, y: 16731 }, - { x: 16732, y: 16732 }, - { x: 16733, y: 16733 }, - { x: 16734, y: 16734 }, - { x: 16735, y: 16735 }, - { x: 16736, y: 16736 }, - { x: 16737, y: 16737 }, - { x: 16738, y: 16738 }, - { x: 16739, y: 16739 }, - { x: 16740, y: 16740 }, - { x: 16741, y: 16741 }, - { x: 16742, y: 16742 }, - { x: 16743, y: 16743 }, - { x: 16744, y: 16744 }, - { x: 16745, y: 16745 }, - { x: 16746, y: 16746 }, - { x: 16747, y: 16747 }, - { x: 16748, y: 16748 }, - { x: 16749, y: 16749 }, - { x: 16750, y: 16750 }, - { x: 16751, y: 16751 }, - { x: 16752, y: 16752 }, - { x: 16753, y: 16753 }, - { x: 16754, y: 16754 }, - { x: 16755, y: 16755 }, - { x: 16756, y: 16756 }, - { x: 16757, y: 16757 }, - { x: 16758, y: 16758 }, - { x: 16759, y: 16759 }, - { x: 16760, y: 16760 }, - { x: 16761, y: 16761 }, - { x: 16762, y: 16762 }, - { x: 16763, y: 16763 }, - { x: 16764, y: 16764 }, - { x: 16765, y: 16765 }, - { x: 16766, y: 16766 }, - { x: 16767, y: 16767 }, - { x: 16768, y: 16768 }, - { x: 16769, y: 16769 }, - { x: 16770, y: 16770 }, - { x: 16771, y: 16771 }, - { x: 16772, y: 16772 }, - { x: 16773, y: 16773 }, - { x: 16774, y: 16774 }, - { x: 16775, y: 16775 }, - { x: 16776, y: 16776 }, - { x: 16777, y: 16777 }, - { x: 16778, y: 16778 }, - { x: 16779, y: 16779 }, - { x: 16780, y: 16780 }, - { x: 16781, y: 16781 }, - { x: 16782, y: 16782 }, - { x: 16783, y: 16783 }, - { x: 16784, y: 16784 }, - { x: 16785, y: 16785 }, - { x: 16786, y: 16786 }, - { x: 16787, y: 16787 }, - { x: 16788, y: 16788 }, - { x: 16789, y: 16789 }, - { x: 16790, y: 16790 }, - { x: 16791, y: 16791 }, - { x: 16792, y: 16792 }, - { x: 16793, y: 16793 }, - { x: 16794, y: 16794 }, - { x: 16795, y: 16795 }, - { x: 16796, y: 16796 }, - { x: 16797, y: 16797 }, - { x: 16798, y: 16798 }, - { x: 16799, y: 16799 }, - { x: 16800, y: 16800 }, - { x: 16801, y: 16801 }, - { x: 16802, y: 16802 }, - { x: 16803, y: 16803 }, - { x: 16804, y: 16804 }, - { x: 16805, y: 16805 }, - { x: 16806, y: 16806 }, - { x: 16807, y: 16807 }, - { x: 16808, y: 16808 }, - { x: 16809, y: 16809 }, - { x: 16810, y: 16810 }, - { x: 16811, y: 16811 }, - { x: 16812, y: 16812 }, - { x: 16813, y: 16813 }, - { x: 16814, y: 16814 }, - { x: 16815, y: 16815 }, - { x: 16816, y: 16816 }, - { x: 16817, y: 16817 }, - { x: 16818, y: 16818 }, - { x: 16819, y: 16819 }, - { x: 16820, y: 16820 }, - { x: 16821, y: 16821 }, - { x: 16822, y: 16822 }, - { x: 16823, y: 16823 }, - { x: 16824, y: 16824 }, - { x: 16825, y: 16825 }, - { x: 16826, y: 16826 }, - { x: 16827, y: 16827 }, - { x: 16828, y: 16828 }, - { x: 16829, y: 16829 }, - { x: 16830, y: 16830 }, - { x: 16831, y: 16831 }, - { x: 16832, y: 16832 }, - { x: 16833, y: 16833 }, - { x: 16834, y: 16834 }, - { x: 16835, y: 16835 }, - { x: 16836, y: 16836 }, - { x: 16837, y: 16837 }, - { x: 16838, y: 16838 }, - { x: 16839, y: 16839 }, - { x: 16840, y: 16840 }, - { x: 16841, y: 16841 }, - { x: 16842, y: 16842 }, - { x: 16843, y: 16843 }, - { x: 16844, y: 16844 }, - { x: 16845, y: 16845 }, - { x: 16846, y: 16846 }, - { x: 16847, y: 16847 }, - { x: 16848, y: 16848 }, - { x: 16849, y: 16849 }, - { x: 16850, y: 16850 }, - { x: 16851, y: 16851 }, - { x: 16852, y: 16852 }, - { x: 16853, y: 16853 }, - { x: 16854, y: 16854 }, - { x: 16855, y: 16855 }, - { x: 16856, y: 16856 }, - { x: 16857, y: 16857 }, - { x: 16858, y: 16858 }, - { x: 16859, y: 16859 }, - { x: 16860, y: 16860 }, - { x: 16861, y: 16861 }, - { x: 16862, y: 16862 }, - { x: 16863, y: 16863 }, - { x: 16864, y: 16864 }, - { x: 16865, y: 16865 }, - { x: 16866, y: 16866 }, - { x: 16867, y: 16867 }, - { x: 16868, y: 16868 }, - { x: 16869, y: 16869 }, - { x: 16870, y: 16870 }, - { x: 16871, y: 16871 }, - { x: 16872, y: 16872 }, - { x: 16873, y: 16873 }, - { x: 16874, y: 16874 }, - { x: 16875, y: 16875 }, - { x: 16876, y: 16876 }, - { x: 16877, y: 16877 }, - { x: 16878, y: 16878 }, - { x: 16879, y: 16879 }, - { x: 16880, y: 16880 }, - { x: 16881, y: 16881 }, - { x: 16882, y: 16882 }, - { x: 16883, y: 16883 }, - { x: 16884, y: 16884 }, - { x: 16885, y: 16885 }, - { x: 16886, y: 16886 }, - { x: 16887, y: 16887 }, - { x: 16888, y: 16888 }, - { x: 16889, y: 16889 }, - { x: 16890, y: 16890 }, - { x: 16891, y: 16891 }, - { x: 16892, y: 16892 }, - { x: 16893, y: 16893 }, - { x: 16894, y: 16894 }, - { x: 16895, y: 16895 }, - { x: 16896, y: 16896 }, - { x: 16897, y: 16897 }, - { x: 16898, y: 16898 }, - { x: 16899, y: 16899 }, - { x: 16900, y: 16900 }, - { x: 16901, y: 16901 }, - { x: 16902, y: 16902 }, - { x: 16903, y: 16903 }, - { x: 16904, y: 16904 }, - { x: 16905, y: 16905 }, - { x: 16906, y: 16906 }, - { x: 16907, y: 16907 }, - { x: 16908, y: 16908 }, - { x: 16909, y: 16909 }, - { x: 16910, y: 16910 }, - { x: 16911, y: 16911 }, - { x: 16912, y: 16912 }, - { x: 16913, y: 16913 }, - { x: 16914, y: 16914 }, - { x: 16915, y: 16915 }, - { x: 16916, y: 16916 }, - { x: 16917, y: 16917 }, - { x: 16918, y: 16918 }, - { x: 16919, y: 16919 }, - { x: 16920, y: 16920 }, - { x: 16921, y: 16921 }, - { x: 16922, y: 16922 }, - { x: 16923, y: 16923 }, - { x: 16924, y: 16924 }, - { x: 16925, y: 16925 }, - { x: 16926, y: 16926 }, - { x: 16927, y: 16927 }, - { x: 16928, y: 16928 }, - { x: 16929, y: 16929 }, - { x: 16930, y: 16930 }, - { x: 16931, y: 16931 }, - { x: 16932, y: 16932 }, - { x: 16933, y: 16933 }, - { x: 16934, y: 16934 }, - { x: 16935, y: 16935 }, - { x: 16936, y: 16936 }, - { x: 16937, y: 16937 }, - { x: 16938, y: 16938 }, - { x: 16939, y: 16939 }, - { x: 16940, y: 16940 }, - { x: 16941, y: 16941 }, - { x: 16942, y: 16942 }, - { x: 16943, y: 16943 }, - { x: 16944, y: 16944 }, - { x: 16945, y: 16945 }, - { x: 16946, y: 16946 }, - { x: 16947, y: 16947 }, - { x: 16948, y: 16948 }, - { x: 16949, y: 16949 }, - { x: 16950, y: 16950 }, - { x: 16951, y: 16951 }, - { x: 16952, y: 16952 }, - { x: 16953, y: 16953 }, - { x: 16954, y: 16954 }, - { x: 16955, y: 16955 }, - { x: 16956, y: 16956 }, - { x: 16957, y: 16957 }, - { x: 16958, y: 16958 }, - { x: 16959, y: 16959 }, - { x: 16960, y: 16960 }, - { x: 16961, y: 16961 }, - { x: 16962, y: 16962 }, - { x: 16963, y: 16963 }, - { x: 16964, y: 16964 }, - { x: 16965, y: 16965 }, - { x: 16966, y: 16966 }, - { x: 16967, y: 16967 }, - { x: 16968, y: 16968 }, - { x: 16969, y: 16969 }, - { x: 16970, y: 16970 }, - { x: 16971, y: 16971 }, - { x: 16972, y: 16972 }, - { x: 16973, y: 16973 }, - { x: 16974, y: 16974 }, - { x: 16975, y: 16975 }, - { x: 16976, y: 16976 }, - { x: 16977, y: 16977 }, - { x: 16978, y: 16978 }, - { x: 16979, y: 16979 }, - { x: 16980, y: 16980 }, - { x: 16981, y: 16981 }, - { x: 16982, y: 16982 }, - { x: 16983, y: 16983 }, - { x: 16984, y: 16984 }, - { x: 16985, y: 16985 }, - { x: 16986, y: 16986 }, - { x: 16987, y: 16987 }, - { x: 16988, y: 16988 }, - { x: 16989, y: 16989 }, - { x: 16990, y: 16990 }, - { x: 16991, y: 16991 }, - { x: 16992, y: 16992 }, - { x: 16993, y: 16993 }, - { x: 16994, y: 16994 }, - { x: 16995, y: 16995 }, - { x: 16996, y: 16996 }, - { x: 16997, y: 16997 }, - { x: 16998, y: 16998 }, - { x: 16999, y: 16999 }, - { x: 17000, y: 17000 }, - { x: 17001, y: 17001 }, - { x: 17002, y: 17002 }, - { x: 17003, y: 17003 }, - { x: 17004, y: 17004 }, - { x: 17005, y: 17005 }, - { x: 17006, y: 17006 }, - { x: 17007, y: 17007 }, - { x: 17008, y: 17008 }, - { x: 17009, y: 17009 }, - { x: 17010, y: 17010 }, - { x: 17011, y: 17011 }, - { x: 17012, y: 17012 }, - { x: 17013, y: 17013 }, - { x: 17014, y: 17014 }, - { x: 17015, y: 17015 }, - { x: 17016, y: 17016 }, - { x: 17017, y: 17017 }, - { x: 17018, y: 17018 }, - { x: 17019, y: 17019 }, - { x: 17020, y: 17020 }, - { x: 17021, y: 17021 }, - { x: 17022, y: 17022 }, - { x: 17023, y: 17023 }, - { x: 17024, y: 17024 }, - { x: 17025, y: 17025 }, - { x: 17026, y: 17026 }, - { x: 17027, y: 17027 }, - { x: 17028, y: 17028 }, - { x: 17029, y: 17029 }, - { x: 17030, y: 17030 }, - { x: 17031, y: 17031 }, - { x: 17032, y: 17032 }, - { x: 17033, y: 17033 }, - { x: 17034, y: 17034 }, - { x: 17035, y: 17035 }, - { x: 17036, y: 17036 }, - { x: 17037, y: 17037 }, - { x: 17038, y: 17038 }, - { x: 17039, y: 17039 }, - { x: 17040, y: 17040 }, - { x: 17041, y: 17041 }, - { x: 17042, y: 17042 }, - { x: 17043, y: 17043 }, - { x: 17044, y: 17044 }, - { x: 17045, y: 17045 }, - { x: 17046, y: 17046 }, - { x: 17047, y: 17047 }, - { x: 17048, y: 17048 }, - { x: 17049, y: 17049 }, - { x: 17050, y: 17050 }, - { x: 17051, y: 17051 }, - { x: 17052, y: 17052 }, - { x: 17053, y: 17053 }, - { x: 17054, y: 17054 }, - { x: 17055, y: 17055 }, - { x: 17056, y: 17056 }, - { x: 17057, y: 17057 }, - { x: 17058, y: 17058 }, - { x: 17059, y: 17059 }, - { x: 17060, y: 17060 }, - { x: 17061, y: 17061 }, - { x: 17062, y: 17062 }, - { x: 17063, y: 17063 }, - { x: 17064, y: 17064 }, - { x: 17065, y: 17065 }, - { x: 17066, y: 17066 }, - { x: 17067, y: 17067 }, - { x: 17068, y: 17068 }, - { x: 17069, y: 17069 }, - { x: 17070, y: 17070 }, - { x: 17071, y: 17071 }, - { x: 17072, y: 17072 }, - { x: 17073, y: 17073 }, - { x: 17074, y: 17074 }, - { x: 17075, y: 17075 }, - { x: 17076, y: 17076 }, - { x: 17077, y: 17077 }, - { x: 17078, y: 17078 }, - { x: 17079, y: 17079 }, - { x: 17080, y: 17080 }, - { x: 17081, y: 17081 }, - { x: 17082, y: 17082 }, - { x: 17083, y: 17083 }, - { x: 17084, y: 17084 }, - { x: 17085, y: 17085 }, - { x: 17086, y: 17086 }, - { x: 17087, y: 17087 }, - { x: 17088, y: 17088 }, - { x: 17089, y: 17089 }, - { x: 17090, y: 17090 }, - { x: 17091, y: 17091 }, - { x: 17092, y: 17092 }, - { x: 17093, y: 17093 }, - { x: 17094, y: 17094 }, - { x: 17095, y: 17095 }, - { x: 17096, y: 17096 }, - { x: 17097, y: 17097 }, - { x: 17098, y: 17098 }, - { x: 17099, y: 17099 }, - { x: 17100, y: 17100 }, - { x: 17101, y: 17101 }, - { x: 17102, y: 17102 }, - { x: 17103, y: 17103 }, - { x: 17104, y: 17104 }, - { x: 17105, y: 17105 }, - { x: 17106, y: 17106 }, - { x: 17107, y: 17107 }, - { x: 17108, y: 17108 }, - { x: 17109, y: 17109 }, - { x: 17110, y: 17110 }, - { x: 17111, y: 17111 }, - { x: 17112, y: 17112 }, - { x: 17113, y: 17113 }, - { x: 17114, y: 17114 }, - { x: 17115, y: 17115 }, - { x: 17116, y: 17116 }, - { x: 17117, y: 17117 }, - { x: 17118, y: 17118 }, - { x: 17119, y: 17119 }, - { x: 17120, y: 17120 }, - { x: 17121, y: 17121 }, - { x: 17122, y: 17122 }, - { x: 17123, y: 17123 }, - { x: 17124, y: 17124 }, - { x: 17125, y: 17125 }, - { x: 17126, y: 17126 }, - { x: 17127, y: 17127 }, - { x: 17128, y: 17128 }, - { x: 17129, y: 17129 }, - { x: 17130, y: 17130 }, - { x: 17131, y: 17131 }, - { x: 17132, y: 17132 }, - { x: 17133, y: 17133 }, - { x: 17134, y: 17134 }, - { x: 17135, y: 17135 }, - { x: 17136, y: 17136 }, - { x: 17137, y: 17137 }, - { x: 17138, y: 17138 }, - { x: 17139, y: 17139 }, - { x: 17140, y: 17140 }, - { x: 17141, y: 17141 }, - { x: 17142, y: 17142 }, - { x: 17143, y: 17143 }, - { x: 17144, y: 17144 }, - { x: 17145, y: 17145 }, - { x: 17146, y: 17146 }, - { x: 17147, y: 17147 }, - { x: 17148, y: 17148 }, - { x: 17149, y: 17149 }, - { x: 17150, y: 17150 }, - { x: 17151, y: 17151 }, - { x: 17152, y: 17152 }, - { x: 17153, y: 17153 }, - { x: 17154, y: 17154 }, - { x: 17155, y: 17155 }, - { x: 17156, y: 17156 }, - { x: 17157, y: 17157 }, - { x: 17158, y: 17158 }, - { x: 17159, y: 17159 }, - { x: 17160, y: 17160 }, - { x: 17161, y: 17161 }, - { x: 17162, y: 17162 }, - { x: 17163, y: 17163 }, - { x: 17164, y: 17164 }, - { x: 17165, y: 17165 }, - { x: 17166, y: 17166 }, - { x: 17167, y: 17167 }, - { x: 17168, y: 17168 }, - { x: 17169, y: 17169 }, - { x: 17170, y: 17170 }, - { x: 17171, y: 17171 }, - { x: 17172, y: 17172 }, - { x: 17173, y: 17173 }, - { x: 17174, y: 17174 }, - { x: 17175, y: 17175 }, - { x: 17176, y: 17176 }, - { x: 17177, y: 17177 }, - { x: 17178, y: 17178 }, - { x: 17179, y: 17179 }, - { x: 17180, y: 17180 }, - { x: 17181, y: 17181 }, - { x: 17182, y: 17182 }, - { x: 17183, y: 17183 }, - { x: 17184, y: 17184 }, - { x: 17185, y: 17185 }, - { x: 17186, y: 17186 }, - { x: 17187, y: 17187 }, - { x: 17188, y: 17188 }, - { x: 17189, y: 17189 }, - { x: 17190, y: 17190 }, - { x: 17191, y: 17191 }, - { x: 17192, y: 17192 }, - { x: 17193, y: 17193 }, - { x: 17194, y: 17194 }, - { x: 17195, y: 17195 }, - { x: 17196, y: 17196 }, - { x: 17197, y: 17197 }, - { x: 17198, y: 17198 }, - { x: 17199, y: 17199 }, - { x: 17200, y: 17200 }, - { x: 17201, y: 17201 }, - { x: 17202, y: 17202 }, - { x: 17203, y: 17203 }, - { x: 17204, y: 17204 }, - { x: 17205, y: 17205 }, - { x: 17206, y: 17206 }, - { x: 17207, y: 17207 }, - { x: 17208, y: 17208 }, - { x: 17209, y: 17209 }, - { x: 17210, y: 17210 }, - { x: 17211, y: 17211 }, - { x: 17212, y: 17212 }, - { x: 17213, y: 17213 }, - { x: 17214, y: 17214 }, - { x: 17215, y: 17215 }, - { x: 17216, y: 17216 }, - { x: 17217, y: 17217 }, - { x: 17218, y: 17218 }, - { x: 17219, y: 17219 }, - { x: 17220, y: 17220 }, - { x: 17221, y: 17221 }, - { x: 17222, y: 17222 }, - { x: 17223, y: 17223 }, - { x: 17224, y: 17224 }, - { x: 17225, y: 17225 }, - { x: 17226, y: 17226 }, - { x: 17227, y: 17227 }, - { x: 17228, y: 17228 }, - { x: 17229, y: 17229 }, - { x: 17230, y: 17230 }, - { x: 17231, y: 17231 }, - { x: 17232, y: 17232 }, - { x: 17233, y: 17233 }, - { x: 17234, y: 17234 }, - { x: 17235, y: 17235 }, - { x: 17236, y: 17236 }, - { x: 17237, y: 17237 }, - { x: 17238, y: 17238 }, - { x: 17239, y: 17239 }, - { x: 17240, y: 17240 }, - { x: 17241, y: 17241 }, - { x: 17242, y: 17242 }, - { x: 17243, y: 17243 }, - { x: 17244, y: 17244 }, - { x: 17245, y: 17245 }, - { x: 17246, y: 17246 }, - { x: 17247, y: 17247 }, - { x: 17248, y: 17248 }, - { x: 17249, y: 17249 }, - { x: 17250, y: 17250 }, - { x: 17251, y: 17251 }, - { x: 17252, y: 17252 }, - { x: 17253, y: 17253 }, - { x: 17254, y: 17254 }, - { x: 17255, y: 17255 }, - { x: 17256, y: 17256 }, - { x: 17257, y: 17257 }, - { x: 17258, y: 17258 }, - { x: 17259, y: 17259 }, - { x: 17260, y: 17260 }, - { x: 17261, y: 17261 }, - { x: 17262, y: 17262 }, - { x: 17263, y: 17263 }, - { x: 17264, y: 17264 }, - { x: 17265, y: 17265 }, - { x: 17266, y: 17266 }, - { x: 17267, y: 17267 }, - { x: 17268, y: 17268 }, - { x: 17269, y: 17269 }, - { x: 17270, y: 17270 }, - { x: 17271, y: 17271 }, - { x: 17272, y: 17272 }, - { x: 17273, y: 17273 }, - { x: 17274, y: 17274 }, - { x: 17275, y: 17275 }, - { x: 17276, y: 17276 }, - { x: 17277, y: 17277 }, - { x: 17278, y: 17278 }, - { x: 17279, y: 17279 }, - { x: 17280, y: 17280 }, - { x: 17281, y: 17281 }, - { x: 17282, y: 17282 }, - { x: 17283, y: 17283 }, - { x: 17284, y: 17284 }, - { x: 17285, y: 17285 }, - { x: 17286, y: 17286 }, - { x: 17287, y: 17287 }, - { x: 17288, y: 17288 }, - { x: 17289, y: 17289 }, - { x: 17290, y: 17290 }, - { x: 17291, y: 17291 }, - { x: 17292, y: 17292 }, - { x: 17293, y: 17293 }, - { x: 17294, y: 17294 }, - { x: 17295, y: 17295 }, - { x: 17296, y: 17296 }, - { x: 17297, y: 17297 }, - { x: 17298, y: 17298 }, - { x: 17299, y: 17299 }, - { x: 17300, y: 17300 }, - { x: 17301, y: 17301 }, - { x: 17302, y: 17302 }, - { x: 17303, y: 17303 }, - { x: 17304, y: 17304 }, - { x: 17305, y: 17305 }, - { x: 17306, y: 17306 }, - { x: 17307, y: 17307 }, - { x: 17308, y: 17308 }, - { x: 17309, y: 17309 }, - { x: 17310, y: 17310 }, - { x: 17311, y: 17311 }, - { x: 17312, y: 17312 }, - { x: 17313, y: 17313 }, - { x: 17314, y: 17314 }, - { x: 17315, y: 17315 }, - { x: 17316, y: 17316 }, - { x: 17317, y: 17317 }, - { x: 17318, y: 17318 }, - { x: 17319, y: 17319 }, - { x: 17320, y: 17320 }, - { x: 17321, y: 17321 }, - { x: 17322, y: 17322 }, - { x: 17323, y: 17323 }, - { x: 17324, y: 17324 }, - { x: 17325, y: 17325 }, - { x: 17326, y: 17326 }, - { x: 17327, y: 17327 }, - { x: 17328, y: 17328 }, - { x: 17329, y: 17329 }, - { x: 17330, y: 17330 }, - { x: 17331, y: 17331 }, - { x: 17332, y: 17332 }, - { x: 17333, y: 17333 }, - { x: 17334, y: 17334 }, - { x: 17335, y: 17335 }, - { x: 17336, y: 17336 }, - { x: 17337, y: 17337 }, - { x: 17338, y: 17338 }, - { x: 17339, y: 17339 }, - { x: 17340, y: 17340 }, - { x: 17341, y: 17341 }, - { x: 17342, y: 17342 }, - { x: 17343, y: 17343 }, - { x: 17344, y: 17344 }, - { x: 17345, y: 17345 }, - { x: 17346, y: 17346 }, - { x: 17347, y: 17347 }, - { x: 17348, y: 17348 }, - { x: 17349, y: 17349 }, - { x: 17350, y: 17350 }, - { x: 17351, y: 17351 }, - { x: 17352, y: 17352 }, - { x: 17353, y: 17353 }, - { x: 17354, y: 17354 }, - { x: 17355, y: 17355 }, - { x: 17356, y: 17356 }, - { x: 17357, y: 17357 }, - { x: 17358, y: 17358 }, - { x: 17359, y: 17359 }, - { x: 17360, y: 17360 }, - { x: 17361, y: 17361 }, - { x: 17362, y: 17362 }, - { x: 17363, y: 17363 }, - { x: 17364, y: 17364 }, - { x: 17365, y: 17365 }, - { x: 17366, y: 17366 }, - { x: 17367, y: 17367 }, - { x: 17368, y: 17368 }, - { x: 17369, y: 17369 }, - { x: 17370, y: 17370 }, - { x: 17371, y: 17371 }, - { x: 17372, y: 17372 }, - { x: 17373, y: 17373 }, - { x: 17374, y: 17374 }, - { x: 17375, y: 17375 }, - { x: 17376, y: 17376 }, - { x: 17377, y: 17377 }, - { x: 17378, y: 17378 }, - { x: 17379, y: 17379 }, - { x: 17380, y: 17380 }, - { x: 17381, y: 17381 }, - { x: 17382, y: 17382 }, - { x: 17383, y: 17383 }, - { x: 17384, y: 17384 }, - { x: 17385, y: 17385 }, - { x: 17386, y: 17386 }, - { x: 17387, y: 17387 }, - { x: 17388, y: 17388 }, - { x: 17389, y: 17389 }, - { x: 17390, y: 17390 }, - { x: 17391, y: 17391 }, - { x: 17392, y: 17392 }, - { x: 17393, y: 17393 }, - { x: 17394, y: 17394 }, - { x: 17395, y: 17395 }, - { x: 17396, y: 17396 }, - { x: 17397, y: 17397 }, - { x: 17398, y: 17398 }, - { x: 17399, y: 17399 }, - { x: 17400, y: 17400 }, - { x: 17401, y: 17401 }, - { x: 17402, y: 17402 }, - { x: 17403, y: 17403 }, - { x: 17404, y: 17404 }, - { x: 17405, y: 17405 }, - { x: 17406, y: 17406 }, - { x: 17407, y: 17407 }, - { x: 17408, y: 17408 }, - { x: 17409, y: 17409 }, - { x: 17410, y: 17410 }, - { x: 17411, y: 17411 }, - { x: 17412, y: 17412 }, - { x: 17413, y: 17413 }, - { x: 17414, y: 17414 }, - { x: 17415, y: 17415 }, - { x: 17416, y: 17416 }, - { x: 17417, y: 17417 }, - { x: 17418, y: 17418 }, - { x: 17419, y: 17419 }, - { x: 17420, y: 17420 }, - { x: 17421, y: 17421 }, - { x: 17422, y: 17422 }, - { x: 17423, y: 17423 }, - { x: 17424, y: 17424 }, - { x: 17425, y: 17425 }, - { x: 17426, y: 17426 }, - { x: 17427, y: 17427 }, - { x: 17428, y: 17428 }, - { x: 17429, y: 17429 }, - { x: 17430, y: 17430 }, - { x: 17431, y: 17431 }, - { x: 17432, y: 17432 }, - { x: 17433, y: 17433 }, - { x: 17434, y: 17434 }, - { x: 17435, y: 17435 }, - { x: 17436, y: 17436 }, - { x: 17437, y: 17437 }, - { x: 17438, y: 17438 }, - { x: 17439, y: 17439 }, - { x: 17440, y: 17440 }, - { x: 17441, y: 17441 }, - { x: 17442, y: 17442 }, - { x: 17443, y: 17443 }, - { x: 17444, y: 17444 }, - { x: 17445, y: 17445 }, - { x: 17446, y: 17446 }, - { x: 17447, y: 17447 }, - { x: 17448, y: 17448 }, - { x: 17449, y: 17449 }, - { x: 17450, y: 17450 }, - { x: 17451, y: 17451 }, - { x: 17452, y: 17452 }, - { x: 17453, y: 17453 }, - { x: 17454, y: 17454 }, - { x: 17455, y: 17455 }, - { x: 17456, y: 17456 }, - { x: 17457, y: 17457 }, - { x: 17458, y: 17458 }, - { x: 17459, y: 17459 }, - { x: 17460, y: 17460 }, - { x: 17461, y: 17461 }, - { x: 17462, y: 17462 }, - { x: 17463, y: 17463 }, - { x: 17464, y: 17464 }, - { x: 17465, y: 17465 }, - { x: 17466, y: 17466 }, - { x: 17467, y: 17467 }, - { x: 17468, y: 17468 }, - { x: 17469, y: 17469 }, - { x: 17470, y: 17470 }, - { x: 17471, y: 17471 }, - { x: 17472, y: 17472 }, - { x: 17473, y: 17473 }, - { x: 17474, y: 17474 }, - { x: 17475, y: 17475 }, - { x: 17476, y: 17476 }, - { x: 17477, y: 17477 }, - { x: 17478, y: 17478 }, - { x: 17479, y: 17479 }, - { x: 17480, y: 17480 }, - { x: 17481, y: 17481 }, - { x: 17482, y: 17482 }, - { x: 17483, y: 17483 }, - { x: 17484, y: 17484 }, - { x: 17485, y: 17485 }, - { x: 17486, y: 17486 }, - { x: 17487, y: 17487 }, - { x: 17488, y: 17488 }, - { x: 17489, y: 17489 }, - { x: 17490, y: 17490 }, - { x: 17491, y: 17491 }, - { x: 17492, y: 17492 }, - { x: 17493, y: 17493 }, - { x: 17494, y: 17494 }, - { x: 17495, y: 17495 }, - { x: 17496, y: 17496 }, - { x: 17497, y: 17497 }, - { x: 17498, y: 17498 }, - { x: 17499, y: 17499 }, - { x: 17500, y: 17500 }, - { x: 17501, y: 17501 }, - { x: 17502, y: 17502 }, - { x: 17503, y: 17503 }, - { x: 17504, y: 17504 }, - { x: 17505, y: 17505 }, - { x: 17506, y: 17506 }, - { x: 17507, y: 17507 }, - { x: 17508, y: 17508 }, - { x: 17509, y: 17509 }, - { x: 17510, y: 17510 }, - { x: 17511, y: 17511 }, - { x: 17512, y: 17512 }, - { x: 17513, y: 17513 }, - { x: 17514, y: 17514 }, - { x: 17515, y: 17515 }, - { x: 17516, y: 17516 }, - { x: 17517, y: 17517 }, - { x: 17518, y: 17518 }, - { x: 17519, y: 17519 }, - { x: 17520, y: 17520 }, - { x: 17521, y: 17521 }, - { x: 17522, y: 17522 }, - { x: 17523, y: 17523 }, - { x: 17524, y: 17524 }, - { x: 17525, y: 17525 }, - { x: 17526, y: 17526 }, - { x: 17527, y: 17527 }, - { x: 17528, y: 17528 }, - { x: 17529, y: 17529 }, - { x: 17530, y: 17530 }, - { x: 17531, y: 17531 }, - { x: 17532, y: 17532 }, - { x: 17533, y: 17533 }, - { x: 17534, y: 17534 }, - { x: 17535, y: 17535 }, - { x: 17536, y: 17536 }, - { x: 17537, y: 17537 }, - { x: 17538, y: 17538 }, - { x: 17539, y: 17539 }, - { x: 17540, y: 17540 }, - { x: 17541, y: 17541 }, - { x: 17542, y: 17542 }, - { x: 17543, y: 17543 }, - { x: 17544, y: 17544 }, - { x: 17545, y: 17545 }, - { x: 17546, y: 17546 }, - { x: 17547, y: 17547 }, - { x: 17548, y: 17548 }, - { x: 17549, y: 17549 }, - { x: 17550, y: 17550 }, - { x: 17551, y: 17551 }, - { x: 17552, y: 17552 }, - { x: 17553, y: 17553 }, - { x: 17554, y: 17554 }, - { x: 17555, y: 17555 }, - { x: 17556, y: 17556 }, - { x: 17557, y: 17557 }, - { x: 17558, y: 17558 }, - { x: 17559, y: 17559 }, - { x: 17560, y: 17560 }, - { x: 17561, y: 17561 }, - { x: 17562, y: 17562 }, - { x: 17563, y: 17563 }, - { x: 17564, y: 17564 }, - { x: 17565, y: 17565 }, - { x: 17566, y: 17566 }, - { x: 17567, y: 17567 }, - { x: 17568, y: 17568 }, - { x: 17569, y: 17569 }, - { x: 17570, y: 17570 }, - { x: 17571, y: 17571 }, - { x: 17572, y: 17572 }, - { x: 17573, y: 17573 }, - { x: 17574, y: 17574 }, - { x: 17575, y: 17575 }, - { x: 17576, y: 17576 }, - { x: 17577, y: 17577 }, - { x: 17578, y: 17578 }, - { x: 17579, y: 17579 }, - { x: 17580, y: 17580 }, - { x: 17581, y: 17581 }, - { x: 17582, y: 17582 }, - { x: 17583, y: 17583 }, - { x: 17584, y: 17584 }, - { x: 17585, y: 17585 }, - { x: 17586, y: 17586 }, - { x: 17587, y: 17587 }, - { x: 17588, y: 17588 }, - { x: 17589, y: 17589 }, - { x: 17590, y: 17590 }, - { x: 17591, y: 17591 }, - { x: 17592, y: 17592 }, - { x: 17593, y: 17593 }, - { x: 17594, y: 17594 }, - { x: 17595, y: 17595 }, - { x: 17596, y: 17596 }, - { x: 17597, y: 17597 }, - { x: 17598, y: 17598 }, - { x: 17599, y: 17599 }, - { x: 17600, y: 17600 }, - { x: 17601, y: 17601 }, - { x: 17602, y: 17602 }, - { x: 17603, y: 17603 }, - { x: 17604, y: 17604 }, - { x: 17605, y: 17605 }, - { x: 17606, y: 17606 }, - { x: 17607, y: 17607 }, - { x: 17608, y: 17608 }, - { x: 17609, y: 17609 }, - { x: 17610, y: 17610 }, - { x: 17611, y: 17611 }, - { x: 17612, y: 17612 }, - { x: 17613, y: 17613 }, - { x: 17614, y: 17614 }, - { x: 17615, y: 17615 }, - { x: 17616, y: 17616 }, - { x: 17617, y: 17617 }, - { x: 17618, y: 17618 }, - { x: 17619, y: 17619 }, - { x: 17620, y: 17620 }, - { x: 17621, y: 17621 }, - { x: 17622, y: 17622 }, - { x: 17623, y: 17623 }, - { x: 17624, y: 17624 }, - { x: 17625, y: 17625 }, - { x: 17626, y: 17626 }, - { x: 17627, y: 17627 }, - { x: 17628, y: 17628 }, - { x: 17629, y: 17629 }, - { x: 17630, y: 17630 }, - { x: 17631, y: 17631 }, - { x: 17632, y: 17632 }, - { x: 17633, y: 17633 }, - { x: 17634, y: 17634 }, - { x: 17635, y: 17635 }, - { x: 17636, y: 17636 }, - { x: 17637, y: 17637 }, - { x: 17638, y: 17638 }, - { x: 17639, y: 17639 }, - { x: 17640, y: 17640 }, - { x: 17641, y: 17641 }, - { x: 17642, y: 17642 }, - { x: 17643, y: 17643 }, - { x: 17644, y: 17644 }, - { x: 17645, y: 17645 }, - { x: 17646, y: 17646 }, - { x: 17647, y: 17647 }, - { x: 17648, y: 17648 }, - { x: 17649, y: 17649 }, - { x: 17650, y: 17650 }, - { x: 17651, y: 17651 }, - { x: 17652, y: 17652 }, - { x: 17653, y: 17653 }, - { x: 17654, y: 17654 }, - { x: 17655, y: 17655 }, - { x: 17656, y: 17656 }, - { x: 17657, y: 17657 }, - { x: 17658, y: 17658 }, - { x: 17659, y: 17659 }, - { x: 17660, y: 17660 }, - { x: 17661, y: 17661 }, - { x: 17662, y: 17662 }, - { x: 17663, y: 17663 }, - { x: 17664, y: 17664 }, - { x: 17665, y: 17665 }, - { x: 17666, y: 17666 }, - { x: 17667, y: 17667 }, - { x: 17668, y: 17668 }, - { x: 17669, y: 17669 }, - { x: 17670, y: 17670 }, - { x: 17671, y: 17671 }, - { x: 17672, y: 17672 }, - { x: 17673, y: 17673 }, - { x: 17674, y: 17674 }, - { x: 17675, y: 17675 }, - { x: 17676, y: 17676 }, - { x: 17677, y: 17677 }, - { x: 17678, y: 17678 }, - { x: 17679, y: 17679 }, - { x: 17680, y: 17680 }, - { x: 17681, y: 17681 }, - { x: 17682, y: 17682 }, - { x: 17683, y: 17683 }, - { x: 17684, y: 17684 }, - { x: 17685, y: 17685 }, - { x: 17686, y: 17686 }, - { x: 17687, y: 17687 }, - { x: 17688, y: 17688 }, - { x: 17689, y: 17689 }, - { x: 17690, y: 17690 }, - { x: 17691, y: 17691 }, - { x: 17692, y: 17692 }, - { x: 17693, y: 17693 }, - { x: 17694, y: 17694 }, - { x: 17695, y: 17695 }, - { x: 17696, y: 17696 }, - { x: 17697, y: 17697 }, - { x: 17698, y: 17698 }, - { x: 17699, y: 17699 }, - { x: 17700, y: 17700 }, - { x: 17701, y: 17701 }, - { x: 17702, y: 17702 }, - { x: 17703, y: 17703 }, - { x: 17704, y: 17704 }, - { x: 17705, y: 17705 }, - { x: 17706, y: 17706 }, - { x: 17707, y: 17707 }, - { x: 17708, y: 17708 }, - { x: 17709, y: 17709 }, - { x: 17710, y: 17710 }, - { x: 17711, y: 17711 }, - { x: 17712, y: 17712 }, - { x: 17713, y: 17713 }, - { x: 17714, y: 17714 }, - { x: 17715, y: 17715 }, - { x: 17716, y: 17716 }, - { x: 17717, y: 17717 }, - { x: 17718, y: 17718 }, - { x: 17719, y: 17719 }, - { x: 17720, y: 17720 }, - { x: 17721, y: 17721 }, - { x: 17722, y: 17722 }, - { x: 17723, y: 17723 }, - { x: 17724, y: 17724 }, - { x: 17725, y: 17725 }, - { x: 17726, y: 17726 }, - { x: 17727, y: 17727 }, - { x: 17728, y: 17728 }, - { x: 17729, y: 17729 }, - { x: 17730, y: 17730 }, - { x: 17731, y: 17731 }, - { x: 17732, y: 17732 }, - { x: 17733, y: 17733 }, - { x: 17734, y: 17734 }, - { x: 17735, y: 17735 }, - { x: 17736, y: 17736 }, - { x: 17737, y: 17737 }, - { x: 17738, y: 17738 }, - { x: 17739, y: 17739 }, - { x: 17740, y: 17740 }, - { x: 17741, y: 17741 }, - { x: 17742, y: 17742 }, - { x: 17743, y: 17743 }, - { x: 17744, y: 17744 }, - { x: 17745, y: 17745 }, - { x: 17746, y: 17746 }, - { x: 17747, y: 17747 }, - { x: 17748, y: 17748 }, - { x: 17749, y: 17749 }, - { x: 17750, y: 17750 }, - { x: 17751, y: 17751 }, - { x: 17752, y: 17752 }, - { x: 17753, y: 17753 }, - { x: 17754, y: 17754 }, - { x: 17755, y: 17755 }, - { x: 17756, y: 17756 }, - { x: 17757, y: 17757 }, - { x: 17758, y: 17758 }, - { x: 17759, y: 17759 }, - { x: 17760, y: 17760 }, - { x: 17761, y: 17761 }, - { x: 17762, y: 17762 }, - { x: 17763, y: 17763 }, - { x: 17764, y: 17764 }, - { x: 17765, y: 17765 }, - { x: 17766, y: 17766 }, - { x: 17767, y: 17767 }, - { x: 17768, y: 17768 }, - { x: 17769, y: 17769 }, - { x: 17770, y: 17770 }, - { x: 17771, y: 17771 }, - { x: 17772, y: 17772 }, - { x: 17773, y: 17773 }, - { x: 17774, y: 17774 }, - { x: 17775, y: 17775 }, - { x: 17776, y: 17776 }, - { x: 17777, y: 17777 }, - { x: 17778, y: 17778 }, - { x: 17779, y: 17779 }, - { x: 17780, y: 17780 }, - { x: 17781, y: 17781 }, - { x: 17782, y: 17782 }, - { x: 17783, y: 17783 }, - { x: 17784, y: 17784 }, - { x: 17785, y: 17785 }, - { x: 17786, y: 17786 }, - { x: 17787, y: 17787 }, - { x: 17788, y: 17788 }, - { x: 17789, y: 17789 }, - { x: 17790, y: 17790 }, - { x: 17791, y: 17791 }, - { x: 17792, y: 17792 }, - { x: 17793, y: 17793 }, - { x: 17794, y: 17794 }, - { x: 17795, y: 17795 }, - { x: 17796, y: 17796 }, - { x: 17797, y: 17797 }, - { x: 17798, y: 17798 }, - { x: 17799, y: 17799 }, - { x: 17800, y: 17800 }, - { x: 17801, y: 17801 }, - { x: 17802, y: 17802 }, - { x: 17803, y: 17803 }, - { x: 17804, y: 17804 }, - { x: 17805, y: 17805 }, - { x: 17806, y: 17806 }, - { x: 17807, y: 17807 }, - { x: 17808, y: 17808 }, - { x: 17809, y: 17809 }, - { x: 17810, y: 17810 }, - { x: 17811, y: 17811 }, - { x: 17812, y: 17812 }, - { x: 17813, y: 17813 }, - { x: 17814, y: 17814 }, - { x: 17815, y: 17815 }, - { x: 17816, y: 17816 }, - { x: 17817, y: 17817 }, - { x: 17818, y: 17818 }, - { x: 17819, y: 17819 }, - { x: 17820, y: 17820 }, - { x: 17821, y: 17821 }, - { x: 17822, y: 17822 }, - { x: 17823, y: 17823 }, - { x: 17824, y: 17824 }, - { x: 17825, y: 17825 }, - { x: 17826, y: 17826 }, - { x: 17827, y: 17827 }, - { x: 17828, y: 17828 }, - { x: 17829, y: 17829 }, - { x: 17830, y: 17830 }, - { x: 17831, y: 17831 }, - { x: 17832, y: 17832 }, - { x: 17833, y: 17833 }, - { x: 17834, y: 17834 }, - { x: 17835, y: 17835 }, - { x: 17836, y: 17836 }, - { x: 17837, y: 17837 }, - { x: 17838, y: 17838 }, - { x: 17839, y: 17839 }, - { x: 17840, y: 17840 }, - { x: 17841, y: 17841 }, - { x: 17842, y: 17842 }, - { x: 17843, y: 17843 }, - { x: 17844, y: 17844 }, - { x: 17845, y: 17845 }, - { x: 17846, y: 17846 }, - { x: 17847, y: 17847 }, - { x: 17848, y: 17848 }, - { x: 17849, y: 17849 }, - { x: 17850, y: 17850 }, - { x: 17851, y: 17851 }, - { x: 17852, y: 17852 }, - { x: 17853, y: 17853 }, - { x: 17854, y: 17854 }, - { x: 17855, y: 17855 }, - { x: 17856, y: 17856 }, - { x: 17857, y: 17857 }, - { x: 17858, y: 17858 }, - { x: 17859, y: 17859 }, - { x: 17860, y: 17860 }, - { x: 17861, y: 17861 }, - { x: 17862, y: 17862 }, - { x: 17863, y: 17863 }, - { x: 17864, y: 17864 }, - { x: 17865, y: 17865 }, - { x: 17866, y: 17866 }, - { x: 17867, y: 17867 }, - { x: 17868, y: 17868 }, - { x: 17869, y: 17869 }, - { x: 17870, y: 17870 }, - { x: 17871, y: 17871 }, - { x: 17872, y: 17872 }, - { x: 17873, y: 17873 }, - { x: 17874, y: 17874 }, - { x: 17875, y: 17875 }, - { x: 17876, y: 17876 }, - { x: 17877, y: 17877 }, - { x: 17878, y: 17878 }, - { x: 17879, y: 17879 }, - { x: 17880, y: 17880 }, - { x: 17881, y: 17881 }, - { x: 17882, y: 17882 }, - { x: 17883, y: 17883 }, - { x: 17884, y: 17884 }, - { x: 17885, y: 17885 }, - { x: 17886, y: 17886 }, - { x: 17887, y: 17887 }, - { x: 17888, y: 17888 }, - { x: 17889, y: 17889 }, - { x: 17890, y: 17890 }, - { x: 17891, y: 17891 }, - { x: 17892, y: 17892 }, - { x: 17893, y: 17893 }, - { x: 17894, y: 17894 }, - { x: 17895, y: 17895 }, - { x: 17896, y: 17896 }, - { x: 17897, y: 17897 }, - { x: 17898, y: 17898 }, - { x: 17899, y: 17899 }, - { x: 17900, y: 17900 }, - { x: 17901, y: 17901 }, - { x: 17902, y: 17902 }, - { x: 17903, y: 17903 }, - { x: 17904, y: 17904 }, - { x: 17905, y: 17905 }, - { x: 17906, y: 17906 }, - { x: 17907, y: 17907 }, - { x: 17908, y: 17908 }, - { x: 17909, y: 17909 }, - { x: 17910, y: 17910 }, - { x: 17911, y: 17911 }, - { x: 17912, y: 17912 }, - { x: 17913, y: 17913 }, - { x: 17914, y: 17914 }, - { x: 17915, y: 17915 }, - { x: 17916, y: 17916 }, - { x: 17917, y: 17917 }, - { x: 17918, y: 17918 }, - { x: 17919, y: 17919 }, - { x: 17920, y: 17920 }, - { x: 17921, y: 17921 }, - { x: 17922, y: 17922 }, - { x: 17923, y: 17923 }, - { x: 17924, y: 17924 }, - { x: 17925, y: 17925 }, - { x: 17926, y: 17926 }, - { x: 17927, y: 17927 }, - { x: 17928, y: 17928 }, - { x: 17929, y: 17929 }, - { x: 17930, y: 17930 }, - { x: 17931, y: 17931 }, - { x: 17932, y: 17932 }, - { x: 17933, y: 17933 }, - { x: 17934, y: 17934 }, - { x: 17935, y: 17935 }, - { x: 17936, y: 17936 }, - { x: 17937, y: 17937 }, - { x: 17938, y: 17938 }, - { x: 17939, y: 17939 }, - { x: 17940, y: 17940 }, - { x: 17941, y: 17941 }, - { x: 17942, y: 17942 }, - { x: 17943, y: 17943 }, - { x: 17944, y: 17944 }, - { x: 17945, y: 17945 }, - { x: 17946, y: 17946 }, - { x: 17947, y: 17947 }, - { x: 17948, y: 17948 }, - { x: 17949, y: 17949 }, - { x: 17950, y: 17950 }, - { x: 17951, y: 17951 }, - { x: 17952, y: 17952 }, - { x: 17953, y: 17953 }, - { x: 17954, y: 17954 }, - { x: 17955, y: 17955 }, - { x: 17956, y: 17956 }, - { x: 17957, y: 17957 }, - { x: 17958, y: 17958 }, - { x: 17959, y: 17959 }, - { x: 17960, y: 17960 }, - { x: 17961, y: 17961 }, - { x: 17962, y: 17962 }, - { x: 17963, y: 17963 }, - { x: 17964, y: 17964 }, - { x: 17965, y: 17965 }, - { x: 17966, y: 17966 }, - { x: 17967, y: 17967 }, - { x: 17968, y: 17968 }, - { x: 17969, y: 17969 }, - { x: 17970, y: 17970 }, - { x: 17971, y: 17971 }, - { x: 17972, y: 17972 }, - { x: 17973, y: 17973 }, - { x: 17974, y: 17974 }, - { x: 17975, y: 17975 }, - { x: 17976, y: 17976 }, - { x: 17977, y: 17977 }, - { x: 17978, y: 17978 }, - { x: 17979, y: 17979 }, - { x: 17980, y: 17980 }, - { x: 17981, y: 17981 }, - { x: 17982, y: 17982 }, - { x: 17983, y: 17983 }, - { x: 17984, y: 17984 }, - { x: 17985, y: 17985 }, - { x: 17986, y: 17986 }, - { x: 17987, y: 17987 }, - { x: 17988, y: 17988 }, - { x: 17989, y: 17989 }, - { x: 17990, y: 17990 }, - { x: 17991, y: 17991 }, - { x: 17992, y: 17992 }, - { x: 17993, y: 17993 }, - { x: 17994, y: 17994 }, - { x: 17995, y: 17995 }, - { x: 17996, y: 17996 }, - { x: 17997, y: 17997 }, - { x: 17998, y: 17998 }, - { x: 17999, y: 17999 }, - { x: 18000, y: 18000 }, - { x: 18001, y: 18001 }, - { x: 18002, y: 18002 }, - { x: 18003, y: 18003 }, - { x: 18004, y: 18004 }, - { x: 18005, y: 18005 }, - { x: 18006, y: 18006 }, - { x: 18007, y: 18007 }, - { x: 18008, y: 18008 }, - { x: 18009, y: 18009 }, - { x: 18010, y: 18010 }, - { x: 18011, y: 18011 }, - { x: 18012, y: 18012 }, - { x: 18013, y: 18013 }, - { x: 18014, y: 18014 }, - { x: 18015, y: 18015 }, - { x: 18016, y: 18016 }, - { x: 18017, y: 18017 }, - { x: 18018, y: 18018 }, - { x: 18019, y: 18019 }, - { x: 18020, y: 18020 }, - { x: 18021, y: 18021 }, - { x: 18022, y: 18022 }, - { x: 18023, y: 18023 }, - { x: 18024, y: 18024 }, - { x: 18025, y: 18025 }, - { x: 18026, y: 18026 }, - { x: 18027, y: 18027 }, - { x: 18028, y: 18028 }, - { x: 18029, y: 18029 }, - { x: 18030, y: 18030 }, - { x: 18031, y: 18031 }, - { x: 18032, y: 18032 }, - { x: 18033, y: 18033 }, - { x: 18034, y: 18034 }, - { x: 18035, y: 18035 }, - { x: 18036, y: 18036 }, - { x: 18037, y: 18037 }, - { x: 18038, y: 18038 }, - { x: 18039, y: 18039 }, - { x: 18040, y: 18040 }, - { x: 18041, y: 18041 }, - { x: 18042, y: 18042 }, - { x: 18043, y: 18043 }, - { x: 18044, y: 18044 }, - { x: 18045, y: 18045 }, - { x: 18046, y: 18046 }, - { x: 18047, y: 18047 }, - { x: 18048, y: 18048 }, - { x: 18049, y: 18049 }, - { x: 18050, y: 18050 }, - { x: 18051, y: 18051 }, - { x: 18052, y: 18052 }, - { x: 18053, y: 18053 }, - { x: 18054, y: 18054 }, - { x: 18055, y: 18055 }, - { x: 18056, y: 18056 }, - { x: 18057, y: 18057 }, - { x: 18058, y: 18058 }, - { x: 18059, y: 18059 }, - { x: 18060, y: 18060 }, - { x: 18061, y: 18061 }, - { x: 18062, y: 18062 }, - { x: 18063, y: 18063 }, - { x: 18064, y: 18064 }, - { x: 18065, y: 18065 }, - { x: 18066, y: 18066 }, - { x: 18067, y: 18067 }, - { x: 18068, y: 18068 }, - { x: 18069, y: 18069 }, - { x: 18070, y: 18070 }, - { x: 18071, y: 18071 }, - { x: 18072, y: 18072 }, - { x: 18073, y: 18073 }, - { x: 18074, y: 18074 }, - { x: 18075, y: 18075 }, - { x: 18076, y: 18076 }, - { x: 18077, y: 18077 }, - { x: 18078, y: 18078 }, - { x: 18079, y: 18079 }, - { x: 18080, y: 18080 }, - { x: 18081, y: 18081 }, - { x: 18082, y: 18082 }, - { x: 18083, y: 18083 }, - { x: 18084, y: 18084 }, - { x: 18085, y: 18085 }, - { x: 18086, y: 18086 }, - { x: 18087, y: 18087 }, - { x: 18088, y: 18088 }, - { x: 18089, y: 18089 }, - { x: 18090, y: 18090 }, - { x: 18091, y: 18091 }, - { x: 18092, y: 18092 }, - { x: 18093, y: 18093 }, - { x: 18094, y: 18094 }, - { x: 18095, y: 18095 }, - { x: 18096, y: 18096 }, - { x: 18097, y: 18097 }, - { x: 18098, y: 18098 }, - { x: 18099, y: 18099 }, - { x: 18100, y: 18100 }, - { x: 18101, y: 18101 }, - { x: 18102, y: 18102 }, - { x: 18103, y: 18103 }, - { x: 18104, y: 18104 }, - { x: 18105, y: 18105 }, - { x: 18106, y: 18106 }, - { x: 18107, y: 18107 }, - { x: 18108, y: 18108 }, - { x: 18109, y: 18109 }, - { x: 18110, y: 18110 }, - { x: 18111, y: 18111 }, - { x: 18112, y: 18112 }, - { x: 18113, y: 18113 }, - { x: 18114, y: 18114 }, - { x: 18115, y: 18115 }, - { x: 18116, y: 18116 }, - { x: 18117, y: 18117 }, - { x: 18118, y: 18118 }, - { x: 18119, y: 18119 }, - { x: 18120, y: 18120 }, - { x: 18121, y: 18121 }, - { x: 18122, y: 18122 }, - { x: 18123, y: 18123 }, - { x: 18124, y: 18124 }, - { x: 18125, y: 18125 }, - { x: 18126, y: 18126 }, - { x: 18127, y: 18127 }, - { x: 18128, y: 18128 }, - { x: 18129, y: 18129 }, - { x: 18130, y: 18130 }, - { x: 18131, y: 18131 }, - { x: 18132, y: 18132 }, - { x: 18133, y: 18133 }, - { x: 18134, y: 18134 }, - { x: 18135, y: 18135 }, - { x: 18136, y: 18136 }, - { x: 18137, y: 18137 }, - { x: 18138, y: 18138 }, - { x: 18139, y: 18139 }, - { x: 18140, y: 18140 }, - { x: 18141, y: 18141 }, - { x: 18142, y: 18142 }, - { x: 18143, y: 18143 }, - { x: 18144, y: 18144 }, - { x: 18145, y: 18145 }, - { x: 18146, y: 18146 }, - { x: 18147, y: 18147 }, - { x: 18148, y: 18148 }, - { x: 18149, y: 18149 }, - { x: 18150, y: 18150 }, - { x: 18151, y: 18151 }, - { x: 18152, y: 18152 }, - { x: 18153, y: 18153 }, - { x: 18154, y: 18154 }, - { x: 18155, y: 18155 }, - { x: 18156, y: 18156 }, - { x: 18157, y: 18157 }, - { x: 18158, y: 18158 }, - { x: 18159, y: 18159 }, - { x: 18160, y: 18160 }, - { x: 18161, y: 18161 }, - { x: 18162, y: 18162 }, - { x: 18163, y: 18163 }, - { x: 18164, y: 18164 }, - { x: 18165, y: 18165 }, - { x: 18166, y: 18166 }, - { x: 18167, y: 18167 }, - { x: 18168, y: 18168 }, - { x: 18169, y: 18169 }, - { x: 18170, y: 18170 }, - { x: 18171, y: 18171 }, - { x: 18172, y: 18172 }, - { x: 18173, y: 18173 }, - { x: 18174, y: 18174 }, - { x: 18175, y: 18175 }, - { x: 18176, y: 18176 }, - { x: 18177, y: 18177 }, - { x: 18178, y: 18178 }, - { x: 18179, y: 18179 }, - { x: 18180, y: 18180 }, - { x: 18181, y: 18181 }, - { x: 18182, y: 18182 }, - { x: 18183, y: 18183 }, - { x: 18184, y: 18184 }, - { x: 18185, y: 18185 }, - { x: 18186, y: 18186 }, - { x: 18187, y: 18187 }, - { x: 18188, y: 18188 }, - { x: 18189, y: 18189 }, - { x: 18190, y: 18190 }, - { x: 18191, y: 18191 }, - { x: 18192, y: 18192 }, - { x: 18193, y: 18193 }, - { x: 18194, y: 18194 }, - { x: 18195, y: 18195 }, - { x: 18196, y: 18196 }, - { x: 18197, y: 18197 }, - { x: 18198, y: 18198 }, - { x: 18199, y: 18199 }, - { x: 18200, y: 18200 }, - { x: 18201, y: 18201 }, - { x: 18202, y: 18202 }, - { x: 18203, y: 18203 }, - { x: 18204, y: 18204 }, - { x: 18205, y: 18205 }, - { x: 18206, y: 18206 }, - { x: 18207, y: 18207 }, - { x: 18208, y: 18208 }, - { x: 18209, y: 18209 }, - { x: 18210, y: 18210 }, - { x: 18211, y: 18211 }, - { x: 18212, y: 18212 }, - { x: 18213, y: 18213 }, - { x: 18214, y: 18214 }, - { x: 18215, y: 18215 }, - { x: 18216, y: 18216 }, - { x: 18217, y: 18217 }, - { x: 18218, y: 18218 }, - { x: 18219, y: 18219 }, - { x: 18220, y: 18220 }, - { x: 18221, y: 18221 }, - { x: 18222, y: 18222 }, - { x: 18223, y: 18223 }, - { x: 18224, y: 18224 }, - { x: 18225, y: 18225 }, - { x: 18226, y: 18226 }, - { x: 18227, y: 18227 }, - { x: 18228, y: 18228 }, - { x: 18229, y: 18229 }, - { x: 18230, y: 18230 }, - { x: 18231, y: 18231 }, - { x: 18232, y: 18232 }, - { x: 18233, y: 18233 }, - { x: 18234, y: 18234 }, - { x: 18235, y: 18235 }, - { x: 18236, y: 18236 }, - { x: 18237, y: 18237 }, - { x: 18238, y: 18238 }, - { x: 18239, y: 18239 }, - { x: 18240, y: 18240 }, - { x: 18241, y: 18241 }, - { x: 18242, y: 18242 }, - { x: 18243, y: 18243 }, - { x: 18244, y: 18244 }, - { x: 18245, y: 18245 }, - { x: 18246, y: 18246 }, - { x: 18247, y: 18247 }, - { x: 18248, y: 18248 }, - { x: 18249, y: 18249 }, - { x: 18250, y: 18250 }, - { x: 18251, y: 18251 }, - { x: 18252, y: 18252 }, - { x: 18253, y: 18253 }, - { x: 18254, y: 18254 }, - { x: 18255, y: 18255 }, - { x: 18256, y: 18256 }, - { x: 18257, y: 18257 }, - { x: 18258, y: 18258 }, - { x: 18259, y: 18259 }, - { x: 18260, y: 18260 }, - { x: 18261, y: 18261 }, - { x: 18262, y: 18262 }, - { x: 18263, y: 18263 }, - { x: 18264, y: 18264 }, - { x: 18265, y: 18265 }, - { x: 18266, y: 18266 }, - { x: 18267, y: 18267 }, - { x: 18268, y: 18268 }, - { x: 18269, y: 18269 }, - { x: 18270, y: 18270 }, - { x: 18271, y: 18271 }, - { x: 18272, y: 18272 }, - { x: 18273, y: 18273 }, - { x: 18274, y: 18274 }, - { x: 18275, y: 18275 }, - { x: 18276, y: 18276 }, - { x: 18277, y: 18277 }, - { x: 18278, y: 18278 }, - { x: 18279, y: 18279 }, - { x: 18280, y: 18280 }, - { x: 18281, y: 18281 }, - { x: 18282, y: 18282 }, - { x: 18283, y: 18283 }, - { x: 18284, y: 18284 }, - { x: 18285, y: 18285 }, - { x: 18286, y: 18286 }, - { x: 18287, y: 18287 }, - { x: 18288, y: 18288 }, - { x: 18289, y: 18289 }, - { x: 18290, y: 18290 }, - { x: 18291, y: 18291 }, - { x: 18292, y: 18292 }, - { x: 18293, y: 18293 }, - { x: 18294, y: 18294 }, - { x: 18295, y: 18295 }, - { x: 18296, y: 18296 }, - { x: 18297, y: 18297 }, - { x: 18298, y: 18298 }, - { x: 18299, y: 18299 }, - { x: 18300, y: 18300 }, - { x: 18301, y: 18301 }, - { x: 18302, y: 18302 }, - { x: 18303, y: 18303 }, - { x: 18304, y: 18304 }, - { x: 18305, y: 18305 }, - { x: 18306, y: 18306 }, - { x: 18307, y: 18307 }, - { x: 18308, y: 18308 }, - { x: 18309, y: 18309 }, - { x: 18310, y: 18310 }, - { x: 18311, y: 18311 }, - { x: 18312, y: 18312 }, - { x: 18313, y: 18313 }, - { x: 18314, y: 18314 }, - { x: 18315, y: 18315 }, - { x: 18316, y: 18316 }, - { x: 18317, y: 18317 }, - { x: 18318, y: 18318 }, - { x: 18319, y: 18319 }, - { x: 18320, y: 18320 }, - { x: 18321, y: 18321 }, - { x: 18322, y: 18322 }, - { x: 18323, y: 18323 }, - { x: 18324, y: 18324 }, - { x: 18325, y: 18325 }, - { x: 18326, y: 18326 }, - { x: 18327, y: 18327 }, - { x: 18328, y: 18328 }, - { x: 18329, y: 18329 }, - { x: 18330, y: 18330 }, - { x: 18331, y: 18331 }, - { x: 18332, y: 18332 }, - { x: 18333, y: 18333 }, - { x: 18334, y: 18334 }, - { x: 18335, y: 18335 }, - { x: 18336, y: 18336 }, - { x: 18337, y: 18337 }, - { x: 18338, y: 18338 }, - { x: 18339, y: 18339 }, - { x: 18340, y: 18340 }, - { x: 18341, y: 18341 }, - { x: 18342, y: 18342 }, - { x: 18343, y: 18343 }, - { x: 18344, y: 18344 }, - { x: 18345, y: 18345 }, - { x: 18346, y: 18346 }, - { x: 18347, y: 18347 }, - { x: 18348, y: 18348 }, - { x: 18349, y: 18349 }, - { x: 18350, y: 18350 }, - { x: 18351, y: 18351 }, - { x: 18352, y: 18352 }, - { x: 18353, y: 18353 }, - { x: 18354, y: 18354 }, - { x: 18355, y: 18355 }, - { x: 18356, y: 18356 }, - { x: 18357, y: 18357 }, - { x: 18358, y: 18358 }, - { x: 18359, y: 18359 }, - { x: 18360, y: 18360 }, - { x: 18361, y: 18361 }, - { x: 18362, y: 18362 }, - { x: 18363, y: 18363 }, - { x: 18364, y: 18364 }, - { x: 18365, y: 18365 }, - { x: 18366, y: 18366 }, - { x: 18367, y: 18367 }, - { x: 18368, y: 18368 }, - { x: 18369, y: 18369 }, - { x: 18370, y: 18370 }, - { x: 18371, y: 18371 }, - { x: 18372, y: 18372 }, - { x: 18373, y: 18373 }, - { x: 18374, y: 18374 }, - { x: 18375, y: 18375 }, - { x: 18376, y: 18376 }, - { x: 18377, y: 18377 }, - { x: 18378, y: 18378 }, - { x: 18379, y: 18379 }, - { x: 18380, y: 18380 }, - { x: 18381, y: 18381 }, - { x: 18382, y: 18382 }, - { x: 18383, y: 18383 }, - { x: 18384, y: 18384 }, - { x: 18385, y: 18385 }, - { x: 18386, y: 18386 }, - { x: 18387, y: 18387 }, - { x: 18388, y: 18388 }, - { x: 18389, y: 18389 }, - { x: 18390, y: 18390 }, - { x: 18391, y: 18391 }, - { x: 18392, y: 18392 }, - { x: 18393, y: 18393 }, - { x: 18394, y: 18394 }, - { x: 18395, y: 18395 }, - { x: 18396, y: 18396 }, - { x: 18397, y: 18397 }, - { x: 18398, y: 18398 }, - { x: 18399, y: 18399 }, - { x: 18400, y: 18400 }, - { x: 18401, y: 18401 }, - { x: 18402, y: 18402 }, - { x: 18403, y: 18403 }, - { x: 18404, y: 18404 }, - { x: 18405, y: 18405 }, - { x: 18406, y: 18406 }, - { x: 18407, y: 18407 }, - { x: 18408, y: 18408 }, - { x: 18409, y: 18409 }, - { x: 18410, y: 18410 }, - { x: 18411, y: 18411 }, - { x: 18412, y: 18412 }, - { x: 18413, y: 18413 }, - { x: 18414, y: 18414 }, - { x: 18415, y: 18415 }, - { x: 18416, y: 18416 }, - { x: 18417, y: 18417 }, - { x: 18418, y: 18418 }, - { x: 18419, y: 18419 }, - { x: 18420, y: 18420 }, - { x: 18421, y: 18421 }, - { x: 18422, y: 18422 }, - { x: 18423, y: 18423 }, - { x: 18424, y: 18424 }, - { x: 18425, y: 18425 }, - { x: 18426, y: 18426 }, - { x: 18427, y: 18427 }, - { x: 18428, y: 18428 }, - { x: 18429, y: 18429 }, - { x: 18430, y: 18430 }, - { x: 18431, y: 18431 }, - { x: 18432, y: 18432 }, - { x: 18433, y: 18433 }, - { x: 18434, y: 18434 }, - { x: 18435, y: 18435 }, - { x: 18436, y: 18436 }, - { x: 18437, y: 18437 }, - { x: 18438, y: 18438 }, - { x: 18439, y: 18439 }, - { x: 18440, y: 18440 }, - { x: 18441, y: 18441 }, - { x: 18442, y: 18442 }, - { x: 18443, y: 18443 }, - { x: 18444, y: 18444 }, - { x: 18445, y: 18445 }, - { x: 18446, y: 18446 }, - { x: 18447, y: 18447 }, - { x: 18448, y: 18448 }, - { x: 18449, y: 18449 }, - { x: 18450, y: 18450 }, - { x: 18451, y: 18451 }, - { x: 18452, y: 18452 }, - { x: 18453, y: 18453 }, - { x: 18454, y: 18454 }, - { x: 18455, y: 18455 }, - { x: 18456, y: 18456 }, - { x: 18457, y: 18457 }, - { x: 18458, y: 18458 }, - { x: 18459, y: 18459 }, - { x: 18460, y: 18460 }, - { x: 18461, y: 18461 }, - { x: 18462, y: 18462 }, - { x: 18463, y: 18463 }, - { x: 18464, y: 18464 }, - { x: 18465, y: 18465 }, - { x: 18466, y: 18466 }, - { x: 18467, y: 18467 }, - { x: 18468, y: 18468 }, - { x: 18469, y: 18469 }, - { x: 18470, y: 18470 }, - { x: 18471, y: 18471 }, - { x: 18472, y: 18472 }, - { x: 18473, y: 18473 }, - { x: 18474, y: 18474 }, - { x: 18475, y: 18475 }, - { x: 18476, y: 18476 }, - { x: 18477, y: 18477 }, - { x: 18478, y: 18478 }, - { x: 18479, y: 18479 }, - { x: 18480, y: 18480 }, - { x: 18481, y: 18481 }, - { x: 18482, y: 18482 }, - { x: 18483, y: 18483 }, - { x: 18484, y: 18484 }, - { x: 18485, y: 18485 }, - { x: 18486, y: 18486 }, - { x: 18487, y: 18487 }, - { x: 18488, y: 18488 }, - { x: 18489, y: 18489 }, - { x: 18490, y: 18490 }, - { x: 18491, y: 18491 }, - { x: 18492, y: 18492 }, - { x: 18493, y: 18493 }, - { x: 18494, y: 18494 }, - { x: 18495, y: 18495 }, - { x: 18496, y: 18496 }, - { x: 18497, y: 18497 }, - { x: 18498, y: 18498 }, - { x: 18499, y: 18499 }, - { x: 18500, y: 18500 }, - { x: 18501, y: 18501 }, - { x: 18502, y: 18502 }, - { x: 18503, y: 18503 }, - { x: 18504, y: 18504 }, - { x: 18505, y: 18505 }, - { x: 18506, y: 18506 }, - { x: 18507, y: 18507 }, - { x: 18508, y: 18508 }, - { x: 18509, y: 18509 }, - { x: 18510, y: 18510 }, - { x: 18511, y: 18511 }, - { x: 18512, y: 18512 }, - { x: 18513, y: 18513 }, - { x: 18514, y: 18514 }, - { x: 18515, y: 18515 }, - { x: 18516, y: 18516 }, - { x: 18517, y: 18517 }, - { x: 18518, y: 18518 }, - { x: 18519, y: 18519 }, - { x: 18520, y: 18520 }, - { x: 18521, y: 18521 }, - { x: 18522, y: 18522 }, - { x: 18523, y: 18523 }, - { x: 18524, y: 18524 }, - { x: 18525, y: 18525 }, - { x: 18526, y: 18526 }, - { x: 18527, y: 18527 }, - { x: 18528, y: 18528 }, - { x: 18529, y: 18529 }, - { x: 18530, y: 18530 }, - { x: 18531, y: 18531 }, - { x: 18532, y: 18532 }, - { x: 18533, y: 18533 }, - { x: 18534, y: 18534 }, - { x: 18535, y: 18535 }, - { x: 18536, y: 18536 }, - { x: 18537, y: 18537 }, - { x: 18538, y: 18538 }, - { x: 18539, y: 18539 }, - { x: 18540, y: 18540 }, - { x: 18541, y: 18541 }, - { x: 18542, y: 18542 }, - { x: 18543, y: 18543 }, - { x: 18544, y: 18544 }, - { x: 18545, y: 18545 }, - { x: 18546, y: 18546 }, - { x: 18547, y: 18547 }, - { x: 18548, y: 18548 }, - { x: 18549, y: 18549 }, - { x: 18550, y: 18550 }, - { x: 18551, y: 18551 }, - { x: 18552, y: 18552 }, - { x: 18553, y: 18553 }, - { x: 18554, y: 18554 }, - { x: 18555, y: 18555 }, - { x: 18556, y: 18556 }, - { x: 18557, y: 18557 }, - { x: 18558, y: 18558 }, - { x: 18559, y: 18559 }, - { x: 18560, y: 18560 }, - { x: 18561, y: 18561 }, - { x: 18562, y: 18562 }, - { x: 18563, y: 18563 }, - { x: 18564, y: 18564 }, - { x: 18565, y: 18565 }, - { x: 18566, y: 18566 }, - { x: 18567, y: 18567 }, - { x: 18568, y: 18568 }, - { x: 18569, y: 18569 }, - { x: 18570, y: 18570 }, - { x: 18571, y: 18571 }, - { x: 18572, y: 18572 }, - { x: 18573, y: 18573 }, - { x: 18574, y: 18574 }, - { x: 18575, y: 18575 }, - { x: 18576, y: 18576 }, - { x: 18577, y: 18577 }, - { x: 18578, y: 18578 }, - { x: 18579, y: 18579 }, - { x: 18580, y: 18580 }, - { x: 18581, y: 18581 }, - { x: 18582, y: 18582 }, - { x: 18583, y: 18583 }, - { x: 18584, y: 18584 }, - { x: 18585, y: 18585 }, - { x: 18586, y: 18586 }, - { x: 18587, y: 18587 }, - { x: 18588, y: 18588 }, - { x: 18589, y: 18589 }, - { x: 18590, y: 18590 }, - { x: 18591, y: 18591 }, - { x: 18592, y: 18592 }, - { x: 18593, y: 18593 }, - { x: 18594, y: 18594 }, - { x: 18595, y: 18595 }, - { x: 18596, y: 18596 }, - { x: 18597, y: 18597 }, - { x: 18598, y: 18598 }, - { x: 18599, y: 18599 }, - { x: 18600, y: 18600 }, - { x: 18601, y: 18601 }, - { x: 18602, y: 18602 }, - { x: 18603, y: 18603 }, - { x: 18604, y: 18604 }, - { x: 18605, y: 18605 }, - { x: 18606, y: 18606 }, - { x: 18607, y: 18607 }, - { x: 18608, y: 18608 }, - { x: 18609, y: 18609 }, - { x: 18610, y: 18610 }, - { x: 18611, y: 18611 }, - { x: 18612, y: 18612 }, - { x: 18613, y: 18613 }, - { x: 18614, y: 18614 }, - { x: 18615, y: 18615 }, - { x: 18616, y: 18616 }, - { x: 18617, y: 18617 }, - { x: 18618, y: 18618 }, - { x: 18619, y: 18619 }, - { x: 18620, y: 18620 }, - { x: 18621, y: 18621 }, - { x: 18622, y: 18622 }, - { x: 18623, y: 18623 }, - { x: 18624, y: 18624 }, - { x: 18625, y: 18625 }, - { x: 18626, y: 18626 }, - { x: 18627, y: 18627 }, - { x: 18628, y: 18628 }, - { x: 18629, y: 18629 }, - { x: 18630, y: 18630 }, - { x: 18631, y: 18631 }, - { x: 18632, y: 18632 }, - { x: 18633, y: 18633 }, - { x: 18634, y: 18634 }, - { x: 18635, y: 18635 }, - { x: 18636, y: 18636 }, - { x: 18637, y: 18637 }, - { x: 18638, y: 18638 }, - { x: 18639, y: 18639 }, - { x: 18640, y: 18640 }, - { x: 18641, y: 18641 }, - { x: 18642, y: 18642 }, - { x: 18643, y: 18643 }, - { x: 18644, y: 18644 }, - { x: 18645, y: 18645 }, - { x: 18646, y: 18646 }, - { x: 18647, y: 18647 }, - { x: 18648, y: 18648 }, - { x: 18649, y: 18649 }, - { x: 18650, y: 18650 }, - { x: 18651, y: 18651 }, - { x: 18652, y: 18652 }, - { x: 18653, y: 18653 }, - { x: 18654, y: 18654 }, - { x: 18655, y: 18655 }, - { x: 18656, y: 18656 }, - { x: 18657, y: 18657 }, - { x: 18658, y: 18658 }, - { x: 18659, y: 18659 }, - { x: 18660, y: 18660 }, - { x: 18661, y: 18661 }, - { x: 18662, y: 18662 }, - { x: 18663, y: 18663 }, - { x: 18664, y: 18664 }, - { x: 18665, y: 18665 }, - { x: 18666, y: 18666 }, - { x: 18667, y: 18667 }, - { x: 18668, y: 18668 }, - { x: 18669, y: 18669 }, - { x: 18670, y: 18670 }, - { x: 18671, y: 18671 }, - { x: 18672, y: 18672 }, - { x: 18673, y: 18673 }, - { x: 18674, y: 18674 }, - { x: 18675, y: 18675 }, - { x: 18676, y: 18676 }, - { x: 18677, y: 18677 }, - { x: 18678, y: 18678 }, - { x: 18679, y: 18679 }, - { x: 18680, y: 18680 }, - { x: 18681, y: 18681 }, - { x: 18682, y: 18682 }, - { x: 18683, y: 18683 }, - { x: 18684, y: 18684 }, - { x: 18685, y: 18685 }, - { x: 18686, y: 18686 }, - { x: 18687, y: 18687 }, - { x: 18688, y: 18688 }, - { x: 18689, y: 18689 }, - { x: 18690, y: 18690 }, - { x: 18691, y: 18691 }, - { x: 18692, y: 18692 }, - { x: 18693, y: 18693 }, - { x: 18694, y: 18694 }, - { x: 18695, y: 18695 }, - { x: 18696, y: 18696 }, - { x: 18697, y: 18697 }, - { x: 18698, y: 18698 }, - { x: 18699, y: 18699 }, - { x: 18700, y: 18700 }, - { x: 18701, y: 18701 }, - { x: 18702, y: 18702 }, - { x: 18703, y: 18703 }, - { x: 18704, y: 18704 }, - { x: 18705, y: 18705 }, - { x: 18706, y: 18706 }, - { x: 18707, y: 18707 }, - { x: 18708, y: 18708 }, - { x: 18709, y: 18709 }, - { x: 18710, y: 18710 }, - { x: 18711, y: 18711 }, - { x: 18712, y: 18712 }, - { x: 18713, y: 18713 }, - { x: 18714, y: 18714 }, - { x: 18715, y: 18715 }, - { x: 18716, y: 18716 }, - { x: 18717, y: 18717 }, - { x: 18718, y: 18718 }, - { x: 18719, y: 18719 }, - { x: 18720, y: 18720 }, - { x: 18721, y: 18721 }, - { x: 18722, y: 18722 }, - { x: 18723, y: 18723 }, - { x: 18724, y: 18724 }, - { x: 18725, y: 18725 }, - { x: 18726, y: 18726 }, - { x: 18727, y: 18727 }, - { x: 18728, y: 18728 }, - { x: 18729, y: 18729 }, - { x: 18730, y: 18730 }, - { x: 18731, y: 18731 }, - { x: 18732, y: 18732 }, - { x: 18733, y: 18733 }, - { x: 18734, y: 18734 }, - { x: 18735, y: 18735 }, - { x: 18736, y: 18736 }, - { x: 18737, y: 18737 }, - { x: 18738, y: 18738 }, - { x: 18739, y: 18739 }, - { x: 18740, y: 18740 }, - { x: 18741, y: 18741 }, - { x: 18742, y: 18742 }, - { x: 18743, y: 18743 }, - { x: 18744, y: 18744 }, - { x: 18745, y: 18745 }, - { x: 18746, y: 18746 }, - { x: 18747, y: 18747 }, - { x: 18748, y: 18748 }, - { x: 18749, y: 18749 }, - { x: 18750, y: 18750 }, - { x: 18751, y: 18751 }, - { x: 18752, y: 18752 }, - { x: 18753, y: 18753 }, - { x: 18754, y: 18754 }, - { x: 18755, y: 18755 }, - { x: 18756, y: 18756 }, - { x: 18757, y: 18757 }, - { x: 18758, y: 18758 }, - { x: 18759, y: 18759 }, - { x: 18760, y: 18760 }, - { x: 18761, y: 18761 }, - { x: 18762, y: 18762 }, - { x: 18763, y: 18763 }, - { x: 18764, y: 18764 }, - { x: 18765, y: 18765 }, - { x: 18766, y: 18766 }, - { x: 18767, y: 18767 }, - { x: 18768, y: 18768 }, - { x: 18769, y: 18769 }, - { x: 18770, y: 18770 }, - { x: 18771, y: 18771 }, - { x: 18772, y: 18772 }, - { x: 18773, y: 18773 }, - { x: 18774, y: 18774 }, - { x: 18775, y: 18775 }, - { x: 18776, y: 18776 }, - { x: 18777, y: 18777 }, - { x: 18778, y: 18778 }, - { x: 18779, y: 18779 }, - { x: 18780, y: 18780 }, - { x: 18781, y: 18781 }, - { x: 18782, y: 18782 }, - { x: 18783, y: 18783 }, - { x: 18784, y: 18784 }, - { x: 18785, y: 18785 }, - { x: 18786, y: 18786 }, - { x: 18787, y: 18787 }, - { x: 18788, y: 18788 }, - { x: 18789, y: 18789 }, - { x: 18790, y: 18790 }, - { x: 18791, y: 18791 }, - { x: 18792, y: 18792 }, - { x: 18793, y: 18793 }, - { x: 18794, y: 18794 }, - { x: 18795, y: 18795 }, - { x: 18796, y: 18796 }, - { x: 18797, y: 18797 }, - { x: 18798, y: 18798 }, - { x: 18799, y: 18799 }, - { x: 18800, y: 18800 }, - { x: 18801, y: 18801 }, - { x: 18802, y: 18802 }, - { x: 18803, y: 18803 }, - { x: 18804, y: 18804 }, - { x: 18805, y: 18805 }, - { x: 18806, y: 18806 }, - { x: 18807, y: 18807 }, - { x: 18808, y: 18808 }, - { x: 18809, y: 18809 }, - { x: 18810, y: 18810 }, - { x: 18811, y: 18811 }, - { x: 18812, y: 18812 }, - { x: 18813, y: 18813 }, - { x: 18814, y: 18814 }, - { x: 18815, y: 18815 }, - { x: 18816, y: 18816 }, - { x: 18817, y: 18817 }, - { x: 18818, y: 18818 }, - { x: 18819, y: 18819 }, - { x: 18820, y: 18820 }, - { x: 18821, y: 18821 }, - { x: 18822, y: 18822 }, - { x: 18823, y: 18823 }, - { x: 18824, y: 18824 }, - { x: 18825, y: 18825 }, - { x: 18826, y: 18826 }, - { x: 18827, y: 18827 }, - { x: 18828, y: 18828 }, - { x: 18829, y: 18829 }, - { x: 18830, y: 18830 }, - { x: 18831, y: 18831 }, - { x: 18832, y: 18832 }, - { x: 18833, y: 18833 }, - { x: 18834, y: 18834 }, - { x: 18835, y: 18835 }, - { x: 18836, y: 18836 }, - { x: 18837, y: 18837 }, - { x: 18838, y: 18838 }, - { x: 18839, y: 18839 }, - { x: 18840, y: 18840 }, - { x: 18841, y: 18841 }, - { x: 18842, y: 18842 }, - { x: 18843, y: 18843 }, - { x: 18844, y: 18844 }, - { x: 18845, y: 18845 }, - { x: 18846, y: 18846 }, - { x: 18847, y: 18847 }, - { x: 18848, y: 18848 }, - { x: 18849, y: 18849 }, - { x: 18850, y: 18850 }, - { x: 18851, y: 18851 }, - { x: 18852, y: 18852 }, - { x: 18853, y: 18853 }, - { x: 18854, y: 18854 }, - { x: 18855, y: 18855 }, - { x: 18856, y: 18856 }, - { x: 18857, y: 18857 }, - { x: 18858, y: 18858 }, - { x: 18859, y: 18859 }, - { x: 18860, y: 18860 }, - { x: 18861, y: 18861 }, - { x: 18862, y: 18862 }, - { x: 18863, y: 18863 }, - { x: 18864, y: 18864 }, - { x: 18865, y: 18865 }, - { x: 18866, y: 18866 }, - { x: 18867, y: 18867 }, - { x: 18868, y: 18868 }, - { x: 18869, y: 18869 }, - { x: 18870, y: 18870 }, - { x: 18871, y: 18871 }, - { x: 18872, y: 18872 }, - { x: 18873, y: 18873 }, - { x: 18874, y: 18874 }, - { x: 18875, y: 18875 }, - { x: 18876, y: 18876 }, - { x: 18877, y: 18877 }, - { x: 18878, y: 18878 }, - { x: 18879, y: 18879 }, - { x: 18880, y: 18880 }, - { x: 18881, y: 18881 }, - { x: 18882, y: 18882 }, - { x: 18883, y: 18883 }, - { x: 18884, y: 18884 }, - { x: 18885, y: 18885 }, - { x: 18886, y: 18886 }, - { x: 18887, y: 18887 }, - { x: 18888, y: 18888 }, - { x: 18889, y: 18889 }, - { x: 18890, y: 18890 }, - { x: 18891, y: 18891 }, - { x: 18892, y: 18892 }, - { x: 18893, y: 18893 }, - { x: 18894, y: 18894 }, - { x: 18895, y: 18895 }, - { x: 18896, y: 18896 }, - { x: 18897, y: 18897 }, - { x: 18898, y: 18898 }, - { x: 18899, y: 18899 }, - { x: 18900, y: 18900 }, - { x: 18901, y: 18901 }, - { x: 18902, y: 18902 }, - { x: 18903, y: 18903 }, - { x: 18904, y: 18904 }, - { x: 18905, y: 18905 }, - { x: 18906, y: 18906 }, - { x: 18907, y: 18907 }, - { x: 18908, y: 18908 }, - { x: 18909, y: 18909 }, - { x: 18910, y: 18910 }, - { x: 18911, y: 18911 }, - { x: 18912, y: 18912 }, - { x: 18913, y: 18913 }, - { x: 18914, y: 18914 }, - { x: 18915, y: 18915 }, - { x: 18916, y: 18916 }, - { x: 18917, y: 18917 }, - { x: 18918, y: 18918 }, - { x: 18919, y: 18919 }, - { x: 18920, y: 18920 }, - { x: 18921, y: 18921 }, - { x: 18922, y: 18922 }, - { x: 18923, y: 18923 }, - { x: 18924, y: 18924 }, - { x: 18925, y: 18925 }, - { x: 18926, y: 18926 }, - { x: 18927, y: 18927 }, - { x: 18928, y: 18928 }, - { x: 18929, y: 18929 }, - { x: 18930, y: 18930 }, - { x: 18931, y: 18931 }, - { x: 18932, y: 18932 }, - { x: 18933, y: 18933 }, - { x: 18934, y: 18934 }, - { x: 18935, y: 18935 }, - { x: 18936, y: 18936 }, - { x: 18937, y: 18937 }, - { x: 18938, y: 18938 }, - { x: 18939, y: 18939 }, - { x: 18940, y: 18940 }, - { x: 18941, y: 18941 }, - { x: 18942, y: 18942 }, - { x: 18943, y: 18943 }, - { x: 18944, y: 18944 }, - { x: 18945, y: 18945 }, - { x: 18946, y: 18946 }, - { x: 18947, y: 18947 }, - { x: 18948, y: 18948 }, - { x: 18949, y: 18949 }, - { x: 18950, y: 18950 }, - { x: 18951, y: 18951 }, - { x: 18952, y: 18952 }, - { x: 18953, y: 18953 }, - { x: 18954, y: 18954 }, - { x: 18955, y: 18955 }, - { x: 18956, y: 18956 }, - { x: 18957, y: 18957 }, - { x: 18958, y: 18958 }, - { x: 18959, y: 18959 }, - { x: 18960, y: 18960 }, - { x: 18961, y: 18961 }, - { x: 18962, y: 18962 }, - { x: 18963, y: 18963 }, - { x: 18964, y: 18964 }, - { x: 18965, y: 18965 }, - { x: 18966, y: 18966 }, - { x: 18967, y: 18967 }, - { x: 18968, y: 18968 }, - { x: 18969, y: 18969 }, - { x: 18970, y: 18970 }, - { x: 18971, y: 18971 }, - { x: 18972, y: 18972 }, - { x: 18973, y: 18973 }, - { x: 18974, y: 18974 }, - { x: 18975, y: 18975 }, - { x: 18976, y: 18976 }, - { x: 18977, y: 18977 }, - { x: 18978, y: 18978 }, - { x: 18979, y: 18979 }, - { x: 18980, y: 18980 }, - { x: 18981, y: 18981 }, - { x: 18982, y: 18982 }, - { x: 18983, y: 18983 }, - { x: 18984, y: 18984 }, - { x: 18985, y: 18985 }, - { x: 18986, y: 18986 }, - { x: 18987, y: 18987 }, - { x: 18988, y: 18988 }, - { x: 18989, y: 18989 }, - { x: 18990, y: 18990 }, - { x: 18991, y: 18991 }, - { x: 18992, y: 18992 }, - { x: 18993, y: 18993 }, - { x: 18994, y: 18994 }, - { x: 18995, y: 18995 }, - { x: 18996, y: 18996 }, - { x: 18997, y: 18997 }, - { x: 18998, y: 18998 }, - { x: 18999, y: 18999 }, - { x: 19000, y: 19000 }, - { x: 19001, y: 19001 }, - { x: 19002, y: 19002 }, - { x: 19003, y: 19003 }, - { x: 19004, y: 19004 }, - { x: 19005, y: 19005 }, - { x: 19006, y: 19006 }, - { x: 19007, y: 19007 }, - { x: 19008, y: 19008 }, - { x: 19009, y: 19009 }, - { x: 19010, y: 19010 }, - { x: 19011, y: 19011 }, - { x: 19012, y: 19012 }, - { x: 19013, y: 19013 }, - { x: 19014, y: 19014 }, - { x: 19015, y: 19015 }, - { x: 19016, y: 19016 }, - { x: 19017, y: 19017 }, - { x: 19018, y: 19018 }, - { x: 19019, y: 19019 }, - { x: 19020, y: 19020 }, - { x: 19021, y: 19021 }, - { x: 19022, y: 19022 }, - { x: 19023, y: 19023 }, - { x: 19024, y: 19024 }, - { x: 19025, y: 19025 }, - { x: 19026, y: 19026 }, - { x: 19027, y: 19027 }, - { x: 19028, y: 19028 }, - { x: 19029, y: 19029 }, - { x: 19030, y: 19030 }, - { x: 19031, y: 19031 }, - { x: 19032, y: 19032 }, - { x: 19033, y: 19033 }, - { x: 19034, y: 19034 }, - { x: 19035, y: 19035 }, - { x: 19036, y: 19036 }, - { x: 19037, y: 19037 }, - { x: 19038, y: 19038 }, - { x: 19039, y: 19039 }, - { x: 19040, y: 19040 }, - { x: 19041, y: 19041 }, - { x: 19042, y: 19042 }, - { x: 19043, y: 19043 }, - { x: 19044, y: 19044 }, - { x: 19045, y: 19045 }, - { x: 19046, y: 19046 }, - { x: 19047, y: 19047 }, - { x: 19048, y: 19048 }, - { x: 19049, y: 19049 }, - { x: 19050, y: 19050 }, - { x: 19051, y: 19051 }, - { x: 19052, y: 19052 }, - { x: 19053, y: 19053 }, - { x: 19054, y: 19054 }, - { x: 19055, y: 19055 }, - { x: 19056, y: 19056 }, - { x: 19057, y: 19057 }, - { x: 19058, y: 19058 }, - { x: 19059, y: 19059 }, - { x: 19060, y: 19060 }, - { x: 19061, y: 19061 }, - { x: 19062, y: 19062 }, - { x: 19063, y: 19063 }, - { x: 19064, y: 19064 }, - { x: 19065, y: 19065 }, - { x: 19066, y: 19066 }, - { x: 19067, y: 19067 }, - { x: 19068, y: 19068 }, - { x: 19069, y: 19069 }, - { x: 19070, y: 19070 }, - { x: 19071, y: 19071 }, - { x: 19072, y: 19072 }, - { x: 19073, y: 19073 }, - { x: 19074, y: 19074 }, - { x: 19075, y: 19075 }, - { x: 19076, y: 19076 }, - { x: 19077, y: 19077 }, - { x: 19078, y: 19078 }, - { x: 19079, y: 19079 }, - { x: 19080, y: 19080 }, - { x: 19081, y: 19081 }, - { x: 19082, y: 19082 }, - { x: 19083, y: 19083 }, - { x: 19084, y: 19084 }, - { x: 19085, y: 19085 }, - { x: 19086, y: 19086 }, - { x: 19087, y: 19087 }, - { x: 19088, y: 19088 }, - { x: 19089, y: 19089 }, - { x: 19090, y: 19090 }, - { x: 19091, y: 19091 }, - { x: 19092, y: 19092 }, - { x: 19093, y: 19093 }, - { x: 19094, y: 19094 }, - { x: 19095, y: 19095 }, - { x: 19096, y: 19096 }, - { x: 19097, y: 19097 }, - { x: 19098, y: 19098 }, - { x: 19099, y: 19099 }, - { x: 19100, y: 19100 }, - { x: 19101, y: 19101 }, - { x: 19102, y: 19102 }, - { x: 19103, y: 19103 }, - { x: 19104, y: 19104 }, - { x: 19105, y: 19105 }, - { x: 19106, y: 19106 }, - { x: 19107, y: 19107 }, - { x: 19108, y: 19108 }, - { x: 19109, y: 19109 }, - { x: 19110, y: 19110 }, - { x: 19111, y: 19111 }, - { x: 19112, y: 19112 }, - { x: 19113, y: 19113 }, - { x: 19114, y: 19114 }, - { x: 19115, y: 19115 }, - { x: 19116, y: 19116 }, - { x: 19117, y: 19117 }, - { x: 19118, y: 19118 }, - { x: 19119, y: 19119 }, - { x: 19120, y: 19120 }, - { x: 19121, y: 19121 }, - { x: 19122, y: 19122 }, - { x: 19123, y: 19123 }, - { x: 19124, y: 19124 }, - { x: 19125, y: 19125 }, - { x: 19126, y: 19126 }, - { x: 19127, y: 19127 }, - { x: 19128, y: 19128 }, - { x: 19129, y: 19129 }, - { x: 19130, y: 19130 }, - { x: 19131, y: 19131 }, - { x: 19132, y: 19132 }, - { x: 19133, y: 19133 }, - { x: 19134, y: 19134 }, - { x: 19135, y: 19135 }, - { x: 19136, y: 19136 }, - { x: 19137, y: 19137 }, - { x: 19138, y: 19138 }, - { x: 19139, y: 19139 }, - { x: 19140, y: 19140 }, - { x: 19141, y: 19141 }, - { x: 19142, y: 19142 }, - { x: 19143, y: 19143 }, - { x: 19144, y: 19144 }, - { x: 19145, y: 19145 }, - { x: 19146, y: 19146 }, - { x: 19147, y: 19147 }, - { x: 19148, y: 19148 }, - { x: 19149, y: 19149 }, - { x: 19150, y: 19150 }, - { x: 19151, y: 19151 }, - { x: 19152, y: 19152 }, - { x: 19153, y: 19153 }, - { x: 19154, y: 19154 }, - { x: 19155, y: 19155 }, - { x: 19156, y: 19156 }, - { x: 19157, y: 19157 }, - { x: 19158, y: 19158 }, - { x: 19159, y: 19159 }, - { x: 19160, y: 19160 }, - { x: 19161, y: 19161 }, - { x: 19162, y: 19162 }, - { x: 19163, y: 19163 }, - { x: 19164, y: 19164 }, - { x: 19165, y: 19165 }, - { x: 19166, y: 19166 }, - { x: 19167, y: 19167 }, - { x: 19168, y: 19168 }, - { x: 19169, y: 19169 }, - { x: 19170, y: 19170 }, - { x: 19171, y: 19171 }, - { x: 19172, y: 19172 }, - { x: 19173, y: 19173 }, - { x: 19174, y: 19174 }, - { x: 19175, y: 19175 }, - { x: 19176, y: 19176 }, - { x: 19177, y: 19177 }, - { x: 19178, y: 19178 }, - { x: 19179, y: 19179 }, - { x: 19180, y: 19180 }, - { x: 19181, y: 19181 }, - { x: 19182, y: 19182 }, - { x: 19183, y: 19183 }, - { x: 19184, y: 19184 }, - { x: 19185, y: 19185 }, - { x: 19186, y: 19186 }, - { x: 19187, y: 19187 }, - { x: 19188, y: 19188 }, - { x: 19189, y: 19189 }, - { x: 19190, y: 19190 }, - { x: 19191, y: 19191 }, - { x: 19192, y: 19192 }, - { x: 19193, y: 19193 }, - { x: 19194, y: 19194 }, - { x: 19195, y: 19195 }, - { x: 19196, y: 19196 }, - { x: 19197, y: 19197 }, - { x: 19198, y: 19198 }, - { x: 19199, y: 19199 }, - { x: 19200, y: 19200 }, - { x: 19201, y: 19201 }, - { x: 19202, y: 19202 }, - { x: 19203, y: 19203 }, - { x: 19204, y: 19204 }, - { x: 19205, y: 19205 }, - { x: 19206, y: 19206 }, - { x: 19207, y: 19207 }, - { x: 19208, y: 19208 }, - { x: 19209, y: 19209 }, - { x: 19210, y: 19210 }, - { x: 19211, y: 19211 }, - { x: 19212, y: 19212 }, - { x: 19213, y: 19213 }, - { x: 19214, y: 19214 }, - { x: 19215, y: 19215 }, - { x: 19216, y: 19216 }, - { x: 19217, y: 19217 }, - { x: 19218, y: 19218 }, - { x: 19219, y: 19219 }, - { x: 19220, y: 19220 }, - { x: 19221, y: 19221 }, - { x: 19222, y: 19222 }, - { x: 19223, y: 19223 }, - { x: 19224, y: 19224 }, - { x: 19225, y: 19225 }, - { x: 19226, y: 19226 }, - { x: 19227, y: 19227 }, - { x: 19228, y: 19228 }, - { x: 19229, y: 19229 }, - { x: 19230, y: 19230 }, - { x: 19231, y: 19231 }, - { x: 19232, y: 19232 }, - { x: 19233, y: 19233 }, - { x: 19234, y: 19234 }, - { x: 19235, y: 19235 }, - { x: 19236, y: 19236 }, - { x: 19237, y: 19237 }, - { x: 19238, y: 19238 }, - { x: 19239, y: 19239 }, - { x: 19240, y: 19240 }, - { x: 19241, y: 19241 }, - { x: 19242, y: 19242 }, - { x: 19243, y: 19243 }, - { x: 19244, y: 19244 }, - { x: 19245, y: 19245 }, - { x: 19246, y: 19246 }, - { x: 19247, y: 19247 }, - { x: 19248, y: 19248 }, - { x: 19249, y: 19249 }, - { x: 19250, y: 19250 }, - { x: 19251, y: 19251 }, - { x: 19252, y: 19252 }, - { x: 19253, y: 19253 }, - { x: 19254, y: 19254 }, - { x: 19255, y: 19255 }, - { x: 19256, y: 19256 }, - { x: 19257, y: 19257 }, - { x: 19258, y: 19258 }, - { x: 19259, y: 19259 }, - { x: 19260, y: 19260 }, - { x: 19261, y: 19261 }, - { x: 19262, y: 19262 }, - { x: 19263, y: 19263 }, - { x: 19264, y: 19264 }, - { x: 19265, y: 19265 }, - { x: 19266, y: 19266 }, - { x: 19267, y: 19267 }, - { x: 19268, y: 19268 }, - { x: 19269, y: 19269 }, - { x: 19270, y: 19270 }, - { x: 19271, y: 19271 }, - { x: 19272, y: 19272 }, - { x: 19273, y: 19273 }, - { x: 19274, y: 19274 }, - { x: 19275, y: 19275 }, - { x: 19276, y: 19276 }, - { x: 19277, y: 19277 }, - { x: 19278, y: 19278 }, - { x: 19279, y: 19279 }, - { x: 19280, y: 19280 }, - { x: 19281, y: 19281 }, - { x: 19282, y: 19282 }, - { x: 19283, y: 19283 }, - { x: 19284, y: 19284 }, - { x: 19285, y: 19285 }, - { x: 19286, y: 19286 }, - { x: 19287, y: 19287 }, - { x: 19288, y: 19288 }, - { x: 19289, y: 19289 }, - { x: 19290, y: 19290 }, - { x: 19291, y: 19291 }, - { x: 19292, y: 19292 }, - { x: 19293, y: 19293 }, - { x: 19294, y: 19294 }, - { x: 19295, y: 19295 }, - { x: 19296, y: 19296 }, - { x: 19297, y: 19297 }, - { x: 19298, y: 19298 }, - { x: 19299, y: 19299 }, - { x: 19300, y: 19300 }, - { x: 19301, y: 19301 }, - { x: 19302, y: 19302 }, - { x: 19303, y: 19303 }, - { x: 19304, y: 19304 }, - { x: 19305, y: 19305 }, - { x: 19306, y: 19306 }, - { x: 19307, y: 19307 }, - { x: 19308, y: 19308 }, - { x: 19309, y: 19309 }, - { x: 19310, y: 19310 }, - { x: 19311, y: 19311 }, - { x: 19312, y: 19312 }, - { x: 19313, y: 19313 }, - { x: 19314, y: 19314 }, - { x: 19315, y: 19315 }, - { x: 19316, y: 19316 }, - { x: 19317, y: 19317 }, - { x: 19318, y: 19318 }, - { x: 19319, y: 19319 }, - { x: 19320, y: 19320 }, - { x: 19321, y: 19321 }, - { x: 19322, y: 19322 }, - { x: 19323, y: 19323 }, - { x: 19324, y: 19324 }, - { x: 19325, y: 19325 }, - { x: 19326, y: 19326 }, - { x: 19327, y: 19327 }, - { x: 19328, y: 19328 }, - { x: 19329, y: 19329 }, - { x: 19330, y: 19330 }, - { x: 19331, y: 19331 }, - { x: 19332, y: 19332 }, - { x: 19333, y: 19333 }, - { x: 19334, y: 19334 }, - { x: 19335, y: 19335 }, - { x: 19336, y: 19336 }, - { x: 19337, y: 19337 }, - { x: 19338, y: 19338 }, - { x: 19339, y: 19339 }, - { x: 19340, y: 19340 }, - { x: 19341, y: 19341 }, - { x: 19342, y: 19342 }, - { x: 19343, y: 19343 }, - { x: 19344, y: 19344 }, - { x: 19345, y: 19345 }, - { x: 19346, y: 19346 }, - { x: 19347, y: 19347 }, - { x: 19348, y: 19348 }, - { x: 19349, y: 19349 }, - { x: 19350, y: 19350 }, - { x: 19351, y: 19351 }, - { x: 19352, y: 19352 }, - { x: 19353, y: 19353 }, - { x: 19354, y: 19354 }, - { x: 19355, y: 19355 }, - { x: 19356, y: 19356 }, - { x: 19357, y: 19357 }, - { x: 19358, y: 19358 }, - { x: 19359, y: 19359 }, - { x: 19360, y: 19360 }, - { x: 19361, y: 19361 }, - { x: 19362, y: 19362 }, - { x: 19363, y: 19363 }, - { x: 19364, y: 19364 }, - { x: 19365, y: 19365 }, - { x: 19366, y: 19366 }, - { x: 19367, y: 19367 }, - { x: 19368, y: 19368 }, - { x: 19369, y: 19369 }, - { x: 19370, y: 19370 }, - { x: 19371, y: 19371 }, - { x: 19372, y: 19372 }, - { x: 19373, y: 19373 }, - { x: 19374, y: 19374 }, - { x: 19375, y: 19375 }, - { x: 19376, y: 19376 }, - { x: 19377, y: 19377 }, - { x: 19378, y: 19378 }, - { x: 19379, y: 19379 }, - { x: 19380, y: 19380 }, - { x: 19381, y: 19381 }, - { x: 19382, y: 19382 }, - { x: 19383, y: 19383 }, - { x: 19384, y: 19384 }, - { x: 19385, y: 19385 }, - { x: 19386, y: 19386 }, - { x: 19387, y: 19387 }, - { x: 19388, y: 19388 }, - { x: 19389, y: 19389 }, - { x: 19390, y: 19390 }, - { x: 19391, y: 19391 }, - { x: 19392, y: 19392 }, - { x: 19393, y: 19393 }, - { x: 19394, y: 19394 }, - { x: 19395, y: 19395 }, - { x: 19396, y: 19396 }, - { x: 19397, y: 19397 }, - { x: 19398, y: 19398 }, - { x: 19399, y: 19399 }, - { x: 19400, y: 19400 }, - { x: 19401, y: 19401 }, - { x: 19402, y: 19402 }, - { x: 19403, y: 19403 }, - { x: 19404, y: 19404 }, - { x: 19405, y: 19405 }, - { x: 19406, y: 19406 }, - { x: 19407, y: 19407 }, - { x: 19408, y: 19408 }, - { x: 19409, y: 19409 }, - { x: 19410, y: 19410 }, - { x: 19411, y: 19411 }, - { x: 19412, y: 19412 }, - { x: 19413, y: 19413 }, - { x: 19414, y: 19414 }, - { x: 19415, y: 19415 }, - { x: 19416, y: 19416 }, - { x: 19417, y: 19417 }, - { x: 19418, y: 19418 }, - { x: 19419, y: 19419 }, - { x: 19420, y: 19420 }, - { x: 19421, y: 19421 }, - { x: 19422, y: 19422 }, - { x: 19423, y: 19423 }, - { x: 19424, y: 19424 }, - { x: 19425, y: 19425 }, - { x: 19426, y: 19426 }, - { x: 19427, y: 19427 }, - { x: 19428, y: 19428 }, - { x: 19429, y: 19429 }, - { x: 19430, y: 19430 }, - { x: 19431, y: 19431 }, - { x: 19432, y: 19432 }, - { x: 19433, y: 19433 }, - { x: 19434, y: 19434 }, - { x: 19435, y: 19435 }, - { x: 19436, y: 19436 }, - { x: 19437, y: 19437 }, - { x: 19438, y: 19438 }, - { x: 19439, y: 19439 }, - { x: 19440, y: 19440 }, - { x: 19441, y: 19441 }, - { x: 19442, y: 19442 }, - { x: 19443, y: 19443 }, - { x: 19444, y: 19444 }, - { x: 19445, y: 19445 }, - { x: 19446, y: 19446 }, - { x: 19447, y: 19447 }, - { x: 19448, y: 19448 }, - { x: 19449, y: 19449 }, - { x: 19450, y: 19450 }, - { x: 19451, y: 19451 }, - { x: 19452, y: 19452 }, - { x: 19453, y: 19453 }, - { x: 19454, y: 19454 }, - { x: 19455, y: 19455 }, - { x: 19456, y: 19456 }, - { x: 19457, y: 19457 }, - { x: 19458, y: 19458 }, - { x: 19459, y: 19459 }, - { x: 19460, y: 19460 }, - { x: 19461, y: 19461 }, - { x: 19462, y: 19462 }, - { x: 19463, y: 19463 }, - { x: 19464, y: 19464 }, - { x: 19465, y: 19465 }, - { x: 19466, y: 19466 }, - { x: 19467, y: 19467 }, - { x: 19468, y: 19468 }, - { x: 19469, y: 19469 }, - { x: 19470, y: 19470 }, - { x: 19471, y: 19471 }, - { x: 19472, y: 19472 }, - { x: 19473, y: 19473 }, - { x: 19474, y: 19474 }, - { x: 19475, y: 19475 }, - { x: 19476, y: 19476 }, - { x: 19477, y: 19477 }, - { x: 19478, y: 19478 }, - { x: 19479, y: 19479 }, - { x: 19480, y: 19480 }, - { x: 19481, y: 19481 }, - { x: 19482, y: 19482 }, - { x: 19483, y: 19483 }, - { x: 19484, y: 19484 }, - { x: 19485, y: 19485 }, - { x: 19486, y: 19486 }, - { x: 19487, y: 19487 }, - { x: 19488, y: 19488 }, - { x: 19489, y: 19489 }, - { x: 19490, y: 19490 }, - { x: 19491, y: 19491 }, - { x: 19492, y: 19492 }, - { x: 19493, y: 19493 }, - { x: 19494, y: 19494 }, - { x: 19495, y: 19495 }, - { x: 19496, y: 19496 }, - { x: 19497, y: 19497 }, - { x: 19498, y: 19498 }, - { x: 19499, y: 19499 }, - { x: 19500, y: 19500 }, - { x: 19501, y: 19501 }, - { x: 19502, y: 19502 }, - { x: 19503, y: 19503 }, - { x: 19504, y: 19504 }, - { x: 19505, y: 19505 }, - { x: 19506, y: 19506 }, - { x: 19507, y: 19507 }, - { x: 19508, y: 19508 }, - { x: 19509, y: 19509 }, - { x: 19510, y: 19510 }, - { x: 19511, y: 19511 }, - { x: 19512, y: 19512 }, - { x: 19513, y: 19513 }, - { x: 19514, y: 19514 }, - { x: 19515, y: 19515 }, - { x: 19516, y: 19516 }, - { x: 19517, y: 19517 }, - { x: 19518, y: 19518 }, - { x: 19519, y: 19519 }, - { x: 19520, y: 19520 }, - { x: 19521, y: 19521 }, - { x: 19522, y: 19522 }, - { x: 19523, y: 19523 }, - { x: 19524, y: 19524 }, - { x: 19525, y: 19525 }, - { x: 19526, y: 19526 }, - { x: 19527, y: 19527 }, - { x: 19528, y: 19528 }, - { x: 19529, y: 19529 }, - { x: 19530, y: 19530 }, - { x: 19531, y: 19531 }, - { x: 19532, y: 19532 }, - { x: 19533, y: 19533 }, - { x: 19534, y: 19534 }, - { x: 19535, y: 19535 }, - { x: 19536, y: 19536 }, - { x: 19537, y: 19537 }, - { x: 19538, y: 19538 }, - { x: 19539, y: 19539 }, - { x: 19540, y: 19540 }, - { x: 19541, y: 19541 }, - { x: 19542, y: 19542 }, - { x: 19543, y: 19543 }, - { x: 19544, y: 19544 }, - { x: 19545, y: 19545 }, - { x: 19546, y: 19546 }, - { x: 19547, y: 19547 }, - { x: 19548, y: 19548 }, - { x: 19549, y: 19549 }, - { x: 19550, y: 19550 }, - { x: 19551, y: 19551 }, - { x: 19552, y: 19552 }, - { x: 19553, y: 19553 }, - { x: 19554, y: 19554 }, - { x: 19555, y: 19555 }, - { x: 19556, y: 19556 }, - { x: 19557, y: 19557 }, - { x: 19558, y: 19558 }, - { x: 19559, y: 19559 }, - { x: 19560, y: 19560 }, - { x: 19561, y: 19561 }, - { x: 19562, y: 19562 }, - { x: 19563, y: 19563 }, - { x: 19564, y: 19564 }, - { x: 19565, y: 19565 }, - { x: 19566, y: 19566 }, - { x: 19567, y: 19567 }, - { x: 19568, y: 19568 }, - { x: 19569, y: 19569 }, - { x: 19570, y: 19570 }, - { x: 19571, y: 19571 }, - { x: 19572, y: 19572 }, - { x: 19573, y: 19573 }, - { x: 19574, y: 19574 }, - { x: 19575, y: 19575 }, - { x: 19576, y: 19576 }, - { x: 19577, y: 19577 }, - { x: 19578, y: 19578 }, - { x: 19579, y: 19579 }, - { x: 19580, y: 19580 }, - { x: 19581, y: 19581 }, - { x: 19582, y: 19582 }, - { x: 19583, y: 19583 }, - { x: 19584, y: 19584 }, - { x: 19585, y: 19585 }, - { x: 19586, y: 19586 }, - { x: 19587, y: 19587 }, - { x: 19588, y: 19588 }, - { x: 19589, y: 19589 }, - { x: 19590, y: 19590 }, - { x: 19591, y: 19591 }, - { x: 19592, y: 19592 }, - { x: 19593, y: 19593 }, - { x: 19594, y: 19594 }, - { x: 19595, y: 19595 }, - { x: 19596, y: 19596 }, - { x: 19597, y: 19597 }, - { x: 19598, y: 19598 }, - { x: 19599, y: 19599 }, - { x: 19600, y: 19600 }, - { x: 19601, y: 19601 }, - { x: 19602, y: 19602 }, - { x: 19603, y: 19603 }, - { x: 19604, y: 19604 }, - { x: 19605, y: 19605 }, - { x: 19606, y: 19606 }, - { x: 19607, y: 19607 }, - { x: 19608, y: 19608 }, - { x: 19609, y: 19609 }, - { x: 19610, y: 19610 }, - { x: 19611, y: 19611 }, - { x: 19612, y: 19612 }, - { x: 19613, y: 19613 }, - { x: 19614, y: 19614 }, - { x: 19615, y: 19615 }, - { x: 19616, y: 19616 }, - { x: 19617, y: 19617 }, - { x: 19618, y: 19618 }, - { x: 19619, y: 19619 }, - { x: 19620, y: 19620 }, - { x: 19621, y: 19621 }, - { x: 19622, y: 19622 }, - { x: 19623, y: 19623 }, - { x: 19624, y: 19624 }, - { x: 19625, y: 19625 }, - { x: 19626, y: 19626 }, - { x: 19627, y: 19627 }, - { x: 19628, y: 19628 }, - { x: 19629, y: 19629 }, - { x: 19630, y: 19630 }, - { x: 19631, y: 19631 }, - { x: 19632, y: 19632 }, - { x: 19633, y: 19633 }, - { x: 19634, y: 19634 }, - { x: 19635, y: 19635 }, - { x: 19636, y: 19636 }, - { x: 19637, y: 19637 }, - { x: 19638, y: 19638 }, - { x: 19639, y: 19639 }, - { x: 19640, y: 19640 }, - { x: 19641, y: 19641 }, - { x: 19642, y: 19642 }, - { x: 19643, y: 19643 }, - { x: 19644, y: 19644 }, - { x: 19645, y: 19645 }, - { x: 19646, y: 19646 }, - { x: 19647, y: 19647 }, - { x: 19648, y: 19648 }, - { x: 19649, y: 19649 }, - { x: 19650, y: 19650 }, - { x: 19651, y: 19651 }, - { x: 19652, y: 19652 }, - { x: 19653, y: 19653 }, - { x: 19654, y: 19654 }, - { x: 19655, y: 19655 }, - { x: 19656, y: 19656 }, - { x: 19657, y: 19657 }, - { x: 19658, y: 19658 }, - { x: 19659, y: 19659 }, - { x: 19660, y: 19660 }, - { x: 19661, y: 19661 }, - { x: 19662, y: 19662 }, - { x: 19663, y: 19663 }, - { x: 19664, y: 19664 }, - { x: 19665, y: 19665 }, - { x: 19666, y: 19666 }, - { x: 19667, y: 19667 }, - { x: 19668, y: 19668 }, - { x: 19669, y: 19669 }, - { x: 19670, y: 19670 }, - { x: 19671, y: 19671 }, - { x: 19672, y: 19672 }, - { x: 19673, y: 19673 }, - { x: 19674, y: 19674 }, - { x: 19675, y: 19675 }, - { x: 19676, y: 19676 }, - { x: 19677, y: 19677 }, - { x: 19678, y: 19678 }, - { x: 19679, y: 19679 }, - { x: 19680, y: 19680 }, - { x: 19681, y: 19681 }, - { x: 19682, y: 19682 }, - { x: 19683, y: 19683 }, - { x: 19684, y: 19684 }, - { x: 19685, y: 19685 }, - { x: 19686, y: 19686 }, - { x: 19687, y: 19687 }, - { x: 19688, y: 19688 }, - { x: 19689, y: 19689 }, - { x: 19690, y: 19690 }, - { x: 19691, y: 19691 }, - { x: 19692, y: 19692 }, - { x: 19693, y: 19693 }, - { x: 19694, y: 19694 }, - { x: 19695, y: 19695 }, - { x: 19696, y: 19696 }, - { x: 19697, y: 19697 }, - { x: 19698, y: 19698 }, - { x: 19699, y: 19699 }, - { x: 19700, y: 19700 }, - { x: 19701, y: 19701 }, - { x: 19702, y: 19702 }, - { x: 19703, y: 19703 }, - { x: 19704, y: 19704 }, - { x: 19705, y: 19705 }, - { x: 19706, y: 19706 }, - { x: 19707, y: 19707 }, - { x: 19708, y: 19708 }, - { x: 19709, y: 19709 }, - { x: 19710, y: 19710 }, - { x: 19711, y: 19711 }, - { x: 19712, y: 19712 }, - { x: 19713, y: 19713 }, - { x: 19714, y: 19714 }, - { x: 19715, y: 19715 }, - { x: 19716, y: 19716 }, - { x: 19717, y: 19717 }, - { x: 19718, y: 19718 }, - { x: 19719, y: 19719 }, - { x: 19720, y: 19720 }, - { x: 19721, y: 19721 }, - { x: 19722, y: 19722 }, - { x: 19723, y: 19723 }, - { x: 19724, y: 19724 }, - { x: 19725, y: 19725 }, - { x: 19726, y: 19726 }, - { x: 19727, y: 19727 }, - { x: 19728, y: 19728 }, - { x: 19729, y: 19729 }, - { x: 19730, y: 19730 }, - { x: 19731, y: 19731 }, - { x: 19732, y: 19732 }, - { x: 19733, y: 19733 }, - { x: 19734, y: 19734 }, - { x: 19735, y: 19735 }, - { x: 19736, y: 19736 }, - { x: 19737, y: 19737 }, - { x: 19738, y: 19738 }, - { x: 19739, y: 19739 }, - { x: 19740, y: 19740 }, - { x: 19741, y: 19741 }, - { x: 19742, y: 19742 }, - { x: 19743, y: 19743 }, - { x: 19744, y: 19744 }, - { x: 19745, y: 19745 }, - { x: 19746, y: 19746 }, - { x: 19747, y: 19747 }, - { x: 19748, y: 19748 }, - { x: 19749, y: 19749 }, - { x: 19750, y: 19750 }, - { x: 19751, y: 19751 }, - { x: 19752, y: 19752 }, - { x: 19753, y: 19753 }, - { x: 19754, y: 19754 }, - { x: 19755, y: 19755 }, - { x: 19756, y: 19756 }, - { x: 19757, y: 19757 }, - { x: 19758, y: 19758 }, - { x: 19759, y: 19759 }, - { x: 19760, y: 19760 }, - { x: 19761, y: 19761 }, - { x: 19762, y: 19762 }, - { x: 19763, y: 19763 }, - { x: 19764, y: 19764 }, - { x: 19765, y: 19765 }, - { x: 19766, y: 19766 }, - { x: 19767, y: 19767 }, - { x: 19768, y: 19768 }, - { x: 19769, y: 19769 }, - { x: 19770, y: 19770 }, - { x: 19771, y: 19771 }, - { x: 19772, y: 19772 }, - { x: 19773, y: 19773 }, - { x: 19774, y: 19774 }, - { x: 19775, y: 19775 }, - { x: 19776, y: 19776 }, - { x: 19777, y: 19777 }, - { x: 19778, y: 19778 }, - { x: 19779, y: 19779 }, - { x: 19780, y: 19780 }, - { x: 19781, y: 19781 }, - { x: 19782, y: 19782 }, - { x: 19783, y: 19783 }, - { x: 19784, y: 19784 }, - { x: 19785, y: 19785 }, - { x: 19786, y: 19786 }, - { x: 19787, y: 19787 }, - { x: 19788, y: 19788 }, - { x: 19789, y: 19789 }, - { x: 19790, y: 19790 }, - { x: 19791, y: 19791 }, - { x: 19792, y: 19792 }, - { x: 19793, y: 19793 }, - { x: 19794, y: 19794 }, - { x: 19795, y: 19795 }, - { x: 19796, y: 19796 }, - { x: 19797, y: 19797 }, - { x: 19798, y: 19798 }, - { x: 19799, y: 19799 }, - { x: 19800, y: 19800 }, - { x: 19801, y: 19801 }, - { x: 19802, y: 19802 }, - { x: 19803, y: 19803 }, - { x: 19804, y: 19804 }, - { x: 19805, y: 19805 }, - { x: 19806, y: 19806 }, - { x: 19807, y: 19807 }, - { x: 19808, y: 19808 }, - { x: 19809, y: 19809 }, - { x: 19810, y: 19810 }, - { x: 19811, y: 19811 }, - { x: 19812, y: 19812 }, - { x: 19813, y: 19813 }, - { x: 19814, y: 19814 }, - { x: 19815, y: 19815 }, - { x: 19816, y: 19816 }, - { x: 19817, y: 19817 }, - { x: 19818, y: 19818 }, - { x: 19819, y: 19819 }, - { x: 19820, y: 19820 }, - { x: 19821, y: 19821 }, - { x: 19822, y: 19822 }, - { x: 19823, y: 19823 }, - { x: 19824, y: 19824 }, - { x: 19825, y: 19825 }, - { x: 19826, y: 19826 }, - { x: 19827, y: 19827 }, - { x: 19828, y: 19828 }, - { x: 19829, y: 19829 }, - { x: 19830, y: 19830 }, - { x: 19831, y: 19831 }, - { x: 19832, y: 19832 }, - { x: 19833, y: 19833 }, - { x: 19834, y: 19834 }, - { x: 19835, y: 19835 }, - { x: 19836, y: 19836 }, - { x: 19837, y: 19837 }, - { x: 19838, y: 19838 }, - { x: 19839, y: 19839 }, - { x: 19840, y: 19840 }, - { x: 19841, y: 19841 }, - { x: 19842, y: 19842 }, - { x: 19843, y: 19843 }, - { x: 19844, y: 19844 }, - { x: 19845, y: 19845 }, - { x: 19846, y: 19846 }, - { x: 19847, y: 19847 }, - { x: 19848, y: 19848 }, - { x: 19849, y: 19849 }, - { x: 19850, y: 19850 }, - { x: 19851, y: 19851 }, - { x: 19852, y: 19852 }, - { x: 19853, y: 19853 }, - { x: 19854, y: 19854 }, - { x: 19855, y: 19855 }, - { x: 19856, y: 19856 }, - { x: 19857, y: 19857 }, - { x: 19858, y: 19858 }, - { x: 19859, y: 19859 }, - { x: 19860, y: 19860 }, - { x: 19861, y: 19861 }, - { x: 19862, y: 19862 }, - { x: 19863, y: 19863 }, - { x: 19864, y: 19864 }, - { x: 19865, y: 19865 }, - { x: 19866, y: 19866 }, - { x: 19867, y: 19867 }, - { x: 19868, y: 19868 }, - { x: 19869, y: 19869 }, - { x: 19870, y: 19870 }, - { x: 19871, y: 19871 }, - { x: 19872, y: 19872 }, - { x: 19873, y: 19873 }, - { x: 19874, y: 19874 }, - { x: 19875, y: 19875 }, - { x: 19876, y: 19876 }, - { x: 19877, y: 19877 }, - { x: 19878, y: 19878 }, - { x: 19879, y: 19879 }, - { x: 19880, y: 19880 }, - { x: 19881, y: 19881 }, - { x: 19882, y: 19882 }, - { x: 19883, y: 19883 }, - { x: 19884, y: 19884 }, - { x: 19885, y: 19885 }, - { x: 19886, y: 19886 }, - { x: 19887, y: 19887 }, - { x: 19888, y: 19888 }, - { x: 19889, y: 19889 }, - { x: 19890, y: 19890 }, - { x: 19891, y: 19891 }, - { x: 19892, y: 19892 }, - { x: 19893, y: 19893 }, - { x: 19894, y: 19894 }, - { x: 19895, y: 19895 }, - { x: 19896, y: 19896 }, - { x: 19897, y: 19897 }, - { x: 19898, y: 19898 }, - { x: 19899, y: 19899 }, - { x: 19900, y: 19900 }, - { x: 19901, y: 19901 }, - { x: 19902, y: 19902 }, - { x: 19903, y: 19903 }, - { x: 19904, y: 19904 }, - { x: 19905, y: 19905 }, - { x: 19906, y: 19906 }, - { x: 19907, y: 19907 }, - { x: 19908, y: 19908 }, - { x: 19909, y: 19909 }, - { x: 19910, y: 19910 }, - { x: 19911, y: 19911 }, - { x: 19912, y: 19912 }, - { x: 19913, y: 19913 }, - { x: 19914, y: 19914 }, - { x: 19915, y: 19915 }, - { x: 19916, y: 19916 }, - { x: 19917, y: 19917 }, - { x: 19918, y: 19918 }, - { x: 19919, y: 19919 }, - { x: 19920, y: 19920 }, - { x: 19921, y: 19921 }, - { x: 19922, y: 19922 }, - { x: 19923, y: 19923 }, - { x: 19924, y: 19924 }, - { x: 19925, y: 19925 }, - { x: 19926, y: 19926 }, - { x: 19927, y: 19927 }, - { x: 19928, y: 19928 }, - { x: 19929, y: 19929 }, - { x: 19930, y: 19930 }, - { x: 19931, y: 19931 }, - { x: 19932, y: 19932 }, - { x: 19933, y: 19933 }, - { x: 19934, y: 19934 }, - { x: 19935, y: 19935 }, - { x: 19936, y: 19936 }, - { x: 19937, y: 19937 }, - { x: 19938, y: 19938 }, - { x: 19939, y: 19939 }, - { x: 19940, y: 19940 }, - { x: 19941, y: 19941 }, - { x: 19942, y: 19942 }, - { x: 19943, y: 19943 }, - { x: 19944, y: 19944 }, - { x: 19945, y: 19945 }, - { x: 19946, y: 19946 }, - { x: 19947, y: 19947 }, - { x: 19948, y: 19948 }, - { x: 19949, y: 19949 }, - { x: 19950, y: 19950 }, - { x: 19951, y: 19951 }, - { x: 19952, y: 19952 }, - { x: 19953, y: 19953 }, - { x: 19954, y: 19954 }, - { x: 19955, y: 19955 }, - { x: 19956, y: 19956 }, - { x: 19957, y: 19957 }, - { x: 19958, y: 19958 }, - { x: 19959, y: 19959 }, - { x: 19960, y: 19960 }, - { x: 19961, y: 19961 }, - { x: 19962, y: 19962 }, - { x: 19963, y: 19963 }, - { x: 19964, y: 19964 }, - { x: 19965, y: 19965 }, - { x: 19966, y: 19966 }, - { x: 19967, y: 19967 }, - { x: 19968, y: 19968 }, - { x: 19969, y: 19969 }, - { x: 19970, y: 19970 }, - { x: 19971, y: 19971 }, - { x: 19972, y: 19972 }, - { x: 19973, y: 19973 }, - { x: 19974, y: 19974 }, - { x: 19975, y: 19975 }, - { x: 19976, y: 19976 }, - { x: 19977, y: 19977 }, - { x: 19978, y: 19978 }, - { x: 19979, y: 19979 }, - { x: 19980, y: 19980 }, - { x: 19981, y: 19981 }, - { x: 19982, y: 19982 }, - { x: 19983, y: 19983 }, - { x: 19984, y: 19984 }, - { x: 19985, y: 19985 }, - { x: 19986, y: 19986 }, - { x: 19987, y: 19987 }, - { x: 19988, y: 19988 }, - { x: 19989, y: 19989 }, - { x: 19990, y: 19990 }, - { x: 19991, y: 19991 }, - { x: 19992, y: 19992 }, - { x: 19993, y: 19993 }, - { x: 19994, y: 19994 }, - { x: 19995, y: 19995 }, - { x: 19996, y: 19996 }, - { x: 19997, y: 19997 }, - { x: 19998, y: 19998 }, - { x: 19999, y: 19999 }, -]; - -var sum = 0; -for (var i = 0; i < points.length; ++i) { - var point = points[i]; - sum = point.x + point.y; -} diff --git a/implementation-contributed/javascriptcore/modules/module-namespace-is-frozen.js b/implementation-contributed/javascriptcore/modules/module-namespace-is-frozen.js deleted file mode 100644 index 2e12710e840..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-namespace-is-frozen.js +++ /dev/null @@ -1,9 +0,0 @@ -import * as ns from "./module-namespace-is-frozen.js" -import {shouldThrow} from "./resources/assert.js" - -shouldThrow(() => { - Object.isFrozen(ns); -}, `ReferenceError: Cannot access uninitialized variable.`); - -export let a; -export function b () { } diff --git a/implementation-contributed/javascriptcore/modules/module-namespace-is-sealed.js b/implementation-contributed/javascriptcore/modules/module-namespace-is-sealed.js deleted file mode 100644 index 47a0def00ab..00000000000 --- a/implementation-contributed/javascriptcore/modules/module-namespace-is-sealed.js +++ /dev/null @@ -1,9 +0,0 @@ -import * as ns from "./module-namespace-is-sealed.js" -import {shouldThrow} from "./resources/assert.js" - -shouldThrow(() => { - Object.isSealed(ns); -}, `ReferenceError: Cannot access uninitialized variable.`); - -export let a; -export function b () { } diff --git a/implementation-contributed/javascriptcore/modules/namespace-ambiguous.js b/implementation-contributed/javascriptcore/modules/namespace-ambiguous.js deleted file mode 100644 index e496cd29224..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-ambiguous.js +++ /dev/null @@ -1,6 +0,0 @@ -import * as namespace from "./namespace-ambiguous/ambiguous.js" -import { shouldBe, shouldThrow } from "./resources/assert.js" - -// Ambiguous name is omitted from the namespace. -shouldBe(namespace.Cocoa, undefined); -shouldBe('Cocoa' in namespace, false); diff --git a/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-2.js b/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-2.js deleted file mode 100644 index 78093d466d0..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-2.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "ambiguous-3.js" -export * from "ambiguous-4.js" diff --git a/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-3.js b/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-3.js deleted file mode 100644 index c7651641733..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-3.js +++ /dev/null @@ -1 +0,0 @@ -export const Cocoa = 42; diff --git a/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-4.js b/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-4.js deleted file mode 100644 index c7651641733..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous-4.js +++ /dev/null @@ -1 +0,0 @@ -export const Cocoa = 42; diff --git a/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous.js b/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous.js deleted file mode 100644 index d2892eb9f7c..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-ambiguous/ambiguous.js +++ /dev/null @@ -1 +0,0 @@ -import * as namespace from "ambiguous-2.js" diff --git a/implementation-contributed/javascriptcore/modules/namespace-empty.js b/implementation-contributed/javascriptcore/modules/namespace-empty.js deleted file mode 100644 index 398048cc938..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-empty.js +++ /dev/null @@ -1,17 +0,0 @@ -import * as ns from "./namespace-empty.js" -import {shouldThrow} from "./resources/assert.js" - -function access(ns) -{ - return ns.test; -} -noInline(access); - -for (var i = 0; i < 1e3; ++i) { - shouldThrow(() => { - access(ns); - }, `ReferenceError: Cannot access uninitialized variable.`); -} - - -export let test = 42; diff --git a/implementation-contributed/javascriptcore/modules/namespace-error.js b/implementation-contributed/javascriptcore/modules/namespace-error.js deleted file mode 100644 index 6d6a9eda267..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-error.js +++ /dev/null @@ -1,5 +0,0 @@ -import { shouldBe } from "./resources/assert.js" - -import('./namespace-error/namespace-local-error-should-hide-global-ambiguity.js').then($vm.abort, function (error) { - shouldBe(String(error), `SyntaxError: Indirectly exported binding name 'default' cannot be resolved by star export entries.`); -}).catch($vm.abort); diff --git a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-2.js b/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-2.js deleted file mode 100644 index 443a47a7d93..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-2.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./namespace-local-error-should-hide-global-ambiguity-3.js" -export * from "./namespace-local-error-should-hide-global-ambiguity-4.js" -export * from "./namespace-local-error-should-hide-global-ambiguity-5.js" diff --git a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-3.js b/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-3.js deleted file mode 100644 index c7651641733..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-3.js +++ /dev/null @@ -1 +0,0 @@ -export const Cocoa = 42; diff --git a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-4.js b/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-4.js deleted file mode 100644 index 82cbcce9570..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-4.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./namespace-local-error-should-hide-global-ambiguity-6.js" -import Hello from "./namespace-local-error-should-hide-global-ambiguity-7.js" -export { Hello } diff --git a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-5.js b/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-5.js deleted file mode 100644 index c7651641733..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-5.js +++ /dev/null @@ -1 +0,0 @@ -export const Cocoa = 42; diff --git a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-6.js b/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-6.js deleted file mode 100644 index c7651641733..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-6.js +++ /dev/null @@ -1 +0,0 @@ -export const Cocoa = 42; diff --git a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-7.js b/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-7.js deleted file mode 100644 index 139597f9cb0..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity-7.js +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity.js b/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity.js deleted file mode 100644 index c0e00638373..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-error/namespace-local-error-should-hide-global-ambiguity.js +++ /dev/null @@ -1 +0,0 @@ -import * as namespace from "./namespace-local-error-should-hide-global-ambiguity-2.js" diff --git a/implementation-contributed/javascriptcore/modules/namespace-object-get-property.js b/implementation-contributed/javascriptcore/modules/namespace-object-get-property.js deleted file mode 100644 index 2692012dd86..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-object-get-property.js +++ /dev/null @@ -1,9 +0,0 @@ -import { shouldThrow, shouldBe } from "./resources/assert.js"; -import * as ns from "./namespace-object-get-property.js" - -shouldThrow(() => { - Reflect.get(ns, 'empty'); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldBe(Reflect.get(ns, 'undefined'), undefined); - -export let empty; diff --git a/implementation-contributed/javascriptcore/modules/namespace-object-has-property.js b/implementation-contributed/javascriptcore/modules/namespace-object-has-property.js deleted file mode 100644 index 686885aaff3..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-object-has-property.js +++ /dev/null @@ -1,7 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; -import * as ns from "./namespace-object-has-property.js" - -shouldBe(Reflect.has(ns, 'empty'), true); -shouldBe(Reflect.has(ns, 'undefined'), false); - -export let empty; diff --git a/implementation-contributed/javascriptcore/modules/namespace-object-inline-caching.js b/implementation-contributed/javascriptcore/modules/namespace-object-inline-caching.js deleted file mode 100644 index 5cef5ac0dd3..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-object-inline-caching.js +++ /dev/null @@ -1,37 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; -import * as A from "./namespace-object-inline-caching/a.js" -import * as B from "./namespace-object-inline-caching/b.js" - -// unset caching should be disabled for namespace object. -{ - function lookup(ns) - { - return ns.hello; - } - noInline(lookup); - - shouldBe(A.hello, undefined); - shouldBe(B.hello, 42); - - for (let i = 0; i < 1e4; ++i) - shouldBe(lookup(A), undefined); - - shouldBe(lookup(B), 42); -} - -// usual caching should be disabled for namespace object. -{ - function lookup(ns) - { - return ns.goodbye; - } - noInline(lookup); - - shouldBe(A.goodbye, 0); - shouldBe(B.goodbye, undefined); - - for (let i = 0; i < 1e4; ++i) - shouldBe(lookup(A), 0); - - shouldBe(lookup(B), undefined); -} diff --git a/implementation-contributed/javascriptcore/modules/namespace-object-inline-caching/a.js b/implementation-contributed/javascriptcore/modules/namespace-object-inline-caching/a.js deleted file mode 100644 index 731873a0140..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-object-inline-caching/a.js +++ /dev/null @@ -1 +0,0 @@ -export let goodbye = 0; diff --git a/implementation-contributed/javascriptcore/modules/namespace-object-inline-caching/b.js b/implementation-contributed/javascriptcore/modules/namespace-object-inline-caching/b.js deleted file mode 100644 index 5b7d90f0efd..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-object-inline-caching/b.js +++ /dev/null @@ -1 +0,0 @@ -export let hello = 42; diff --git a/implementation-contributed/javascriptcore/modules/namespace-object-symbol-iterator-name.js b/implementation-contributed/javascriptcore/modules/namespace-object-symbol-iterator-name.js deleted file mode 100644 index 2e2319fdc56..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-object-symbol-iterator-name.js +++ /dev/null @@ -1,4 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; -import * as ns from "./namespace-object-symbol-iterator-name.js"; - -shouldBe(ns[Symbol.iterator], undefined); diff --git a/implementation-contributed/javascriptcore/modules/namespace-object-typed-array-fast-path.js b/implementation-contributed/javascriptcore/modules/namespace-object-typed-array-fast-path.js deleted file mode 100644 index de2432985ff..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-object-typed-array-fast-path.js +++ /dev/null @@ -1,7 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; -import * as ns from "./namespace-object-typed-array-fast-path.js" -export let length = 42; -export let hello = 44; - -let array = new Uint8Array(ns); -shouldBe(array.length, 0); diff --git a/implementation-contributed/javascriptcore/modules/namespace-prototype-assignment.js b/implementation-contributed/javascriptcore/modules/namespace-prototype-assignment.js deleted file mode 100644 index d9381332a08..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-prototype-assignment.js +++ /dev/null @@ -1,389 +0,0 @@ -// This test suite compares the behavior of setting the prototype on various values -// (using Object.setPrototypeOf(), obj.__proto__ assignment, and Reflect.setPrototypeOf()) -// against what is specified in the ES spec. The expected behavior specified according -// to the spec is expressed in expectationsForObjectSetPrototypeOf, -// expectationsForSetUnderscoreProto, and expectationsForReflectSetPrototypeOf. - -import * as namespace from "./namespace-prototype-assignment.js" - -var inBrowser = (typeof window != "undefined"); - -// Test configuration options: -var verbose = false; -var maxIterations = 1; -var throwOnEachError = true; - -var testUndefined = true; -var testNull = true; -var testTrue = true; -var testFalse = true; -var testNumbers = true; -var testString = true; -var testSymbol = true; -var testObject = true; -var testGlobal = true; -var testWindowProtos = inBrowser; - -var engine; - -//==================================================================================== -// Error messages: - -if (inBrowser) { - let userAgent = navigator.userAgent; - if (userAgent.match(/ Chrome\/[0-9]+/)) engine = "chrome"; - else if (userAgent.match(/ Firefox\/[0-9]+/)) engine = "default"; - else engine = "safari"; -} else - engine = "jsc"; - -// Set default error messages and then override with engine specific ones below. -var DefaultTypeError = "TypeError: "; -var CannotSetPrototypeOfImmutablePrototypeObject = DefaultTypeError; -var CannotSetPrototypeOfThisObject = DefaultTypeError; -var CannotSetPrototypeOfUndefinedOrNull = DefaultTypeError; -var CannotSetPrototypeOfNonObject = DefaultTypeError; -var PrototypeValueCanOnlyBeAnObjectOrNull = DefaultTypeError; -var ObjectProtoCalledOnNullOrUndefinedError = DefaultTypeError; -var ReflectSetPrototypeOfRequiresTheFirstArgumentBeAnObject = DefaultTypeError; -var ReflectSetPrototypeOfRequiresTheSecondArgumentBeAnObjectOrNull = DefaultTypeError; - -if (engine == "jsc" || engine === "safari") { - CannotSetPrototypeOfImmutablePrototypeObject = "TypeError: Cannot set prototype of immutable prototype object"; - CannotSetPrototypeOfThisObject = "TypeError: Cannot set prototype of this object"; - CannotSetPrototypeOfUndefinedOrNull = "TypeError: Cannot set prototype of undefined or null"; - CannotSetPrototypeOfNonObject = "TypeError: Cannot set prototype of non-object"; - PrototypeValueCanOnlyBeAnObjectOrNull = "TypeError: Prototype value can only be an object or null"; - ObjectProtoCalledOnNullOrUndefinedError = "TypeError: Object.prototype.__proto__ called on null or undefined"; - ReflectSetPrototypeOfRequiresTheFirstArgumentBeAnObject = "TypeError: Reflect.setPrototypeOf requires the first argument be an object"; - ReflectSetPrototypeOfRequiresTheSecondArgumentBeAnObjectOrNull = "TypeError: Reflect.setPrototypeOf requires the second argument be either an object or null"; -} else if (engine === "chrome") { - CannotSetPrototypeOfImmutablePrototypeObject = "TypeError: Immutable prototype object "; -} - -//==================================================================================== -// Utility functions: - -if (inBrowser) - print = console.log; - -function reportError(errorMessage) { - if (throwOnEachError) - throw errorMessage; - else - print(errorMessage); -} - -function shouldEqual(testID, resultType, actual, expected) { - if (actual != expected) - reportError("ERROR in " + resultType - + ": expect " + stringify(expected) + ", actual " + stringify(actual) - + " in test: " + testID.signature + " on iteration " + testID.iteration); -} - -function shouldThrow(testID, resultType, actual, expected) { - let actualStr = "" + actual; - if (!actualStr.startsWith(expected)) - reportError("ERROR in " + resultType - + ": expect " + expected + ", actual " + actual - + " in test: " + testID.signature + " on iteration " + testID.iteration); -} - -function stringify(value) { - if (typeof value == "string") return '"' + value + '"'; - if (typeof value == "symbol") return value.toString(); - - if (value === origGlobalProto) return "origGlobalProto"; - if (value === origObjectProto) return "origObjectProto"; - if (value === newObjectProto) return "newObjectProto"; - if (value === proxyObject) return "proxyObject"; - - if (value === null) return "null"; - if (typeof value == "object") return "object"; - return "" + value; -} - -function makeTestID(index, iteration, targetName, protoToSet, protoSetter, expected) { - let testID = {}; - testID.signature = "[" + index + "] " - + protoSetter.actionName + "|" - + targetName + "|" - + stringify(protoToSet) + "|" - + stringify(expected.result) + "|" - + stringify(expected.proto) + "|" - + stringify(expected.exception); - testID.iteration = iteration; - return testID; -} - -//==================================================================================== -// Functions to express the expectations of the ES specification: - -function doInternalSetPrototypeOf(result, target, origProto, newProto) { - if (!target.setPrototypeOf) { - result.success = true; - result.exception = undefined; - return; - } - target.setPrototypeOf(result, origProto, newProto); -} - -// 9.1.2.1 OrdinarySetPrototypeOf ( O, V ) -// https://tc39.github.io/ecma262/#sec-ordinarysetprototypeof -function ordinarySetPrototypeOf(result, currentProto, newProto) { - // 9.1.2.1-4 If SameValue(V, current) is true, return true. - if (newProto === currentProto) { - result.success = true; - return; - } - // 9.1.2.1-5 [extensibility check not tested here] - // 9.1.2.1-8 [cycle check not tested here] - result.success = true; -} - -// 9.4.7.2 SetImmutablePrototype ( O, V ) -// https://tc39.github.io/ecma262/#sec-set-immutable-prototype -function setImmutablePrototype(result, currentProto, newProto) { - if (newProto === currentProto) { - result.success = true; - return; - } - result.success = false; - result.exception = CannotSetPrototypeOfImmutablePrototypeObject; -} - -// HTML spec: 7.4.2 [[SetPrototypeOf]] ( V ) -// https://html.spec.whatwg.org/#windowproxy-setprototypeof -function windowProxySetPrototypeOf(result, currentProto, newProto) { - result.success = false; - result.exception = CannotSetPrototypeOfThisObject; -} - - -var count = 0; -function initSetterExpectation(target, newProto) { - var targetValue = target.value(); - var origProto = undefined; - if (targetValue != null && targetValue != undefined) - origProto = targetValue.__proto__; // Default to old proto. - - var expected = {}; - expected.targetValue = targetValue; - expected.origProto = origProto; - expected.exception = undefined; - expected.proto = origProto; - expected.result = undefined; - - return expected; -} - -// 19.1.2.21 Object.setPrototypeOf ( O, proto ) -// https://tc39.github.io/ecma262/#sec-object.setprototypeof -function objectSetPrototypeOf(target, newProto) { - let expected = initSetterExpectation(target, newProto); - var targetValue = expected.targetValue; - var origProto = expected.origProto; - - function throwIfNoExceptionPending(e) { - if (!expected.exception) - expected.exception = e; - } - - // 19.1.2.21-1 Let O be ? RequireObjectCoercible(O). - if (targetValue == undefined || targetValue == null) - throwIfNoExceptionPending(CannotSetPrototypeOfUndefinedOrNull); - - // 19.1.2.21-2 If Type(proto) is neither Object nor Null, throw a TypeError exception. - if (typeof newProto != "object") - throwIfNoExceptionPending(PrototypeValueCanOnlyBeAnObjectOrNull); - - // 19.1.2.21-3 If Type(O) is not Object, return O. - else if (typeof targetValue != "object") - expected.result = targetValue; - - // 19.1.2.21-4 Let status be ? O.[[SetPrototypeOf]](proto). - else { - // 19.1.2.21-5 If status is false, throw a TypeError exception. - let result = {}; - doInternalSetPrototypeOf(result, target, origProto, newProto); - if (result.success) - expected.proto = newProto; - else - throwIfNoExceptionPending(result.exception); - - // 19.1.2.21-6 Return O. - expected.result = targetValue; - } - - return expected; -} -objectSetPrototypeOf.action = (obj, newProto) => Object.setPrototypeOf(obj, newProto); -objectSetPrototypeOf.actionName = "Object.setPrototypeOf"; - - -// B.2.2.1.2 set Object.prototype.__proto__ -// https://tc39.github.io/ecma262/#sec-set-object.prototype.__proto__ -function setUnderscoreProto(target, newProto) { - let expected = initSetterExpectation(target, newProto); - var targetValue = expected.targetValue; - var origProto = expected.origProto; - - function throwIfNoExceptionPending(e) { - if (!expected.exception) - expected.exception = e; - } - - // B.2.2.1.2-1 Let O be ? RequireObjectCoercible(this value). - if (targetValue == undefined || targetValue == null) - throwIfNoExceptionPending(DefaultTypeError); - - // B.2.2.1.2-2 If Type(proto) is neither Object nor Null, return undefined. - if (typeof newProto != "object") - expected.result = undefined; - - // B.2.2.1.2-3 If Type(O) is not Object, return undefined. - else if (typeof targetValue != "object") - expected.result = undefined; - - // B.2.2.1.2-4 Let status be ? O.[[SetPrototypeOf]](proto). - else { - // B.2.2.1.2-5 If status is false, throw a TypeError exception. - let result = {}; - doInternalSetPrototypeOf(result, target, origProto, newProto); - if (result.success) - expected.proto = newProto; - else - throwIfNoExceptionPending(result.exception); - - // B.2.2.1.2-6 Return undefined. - expected.result = undefined; - } - - // Override the result to be the newProto value because the statement obj.__proto__ = value - // will produce the rhs value, not the result of the obj.__proto__ setter. - expected.result = newProto; - return expected; -} -setUnderscoreProto.action = (obj, newProto) => (obj.__proto__ = newProto); -setUnderscoreProto.actionName = "obj.__proto__"; - - -// 26.1.13 Reflect.setPrototypeOf ( target, proto ) -// https://tc39.github.io/ecma262/#sec-reflect.setprototypeof -// function expectationsForReflectSetPrototypeOf(target, newProto, targetExpectation) { -function reflectSetPrototypeOf(target, newProto) { - let expected = initSetterExpectation(target, newProto); - var targetValue = expected.targetValue; - var origProto = expected.origProto; - - function throwIfNoExceptionPending(e) { - if (!expected.exception) - expected.exception = e; - } - - // 26.1.13-1 If Type(target) is not Object, throw a TypeError exception. - if (targetValue === null || typeof targetValue != "object") - throwIfNoExceptionPending(ReflectSetPrototypeOfRequiresTheFirstArgumentBeAnObject); - - // 26.1.13-2 If Type(proto) is not Object and proto is not null, throw a TypeError exception. - if (typeof newProto != "object") - throwIfNoExceptionPending(ReflectSetPrototypeOfRequiresTheSecondArgumentBeAnObjectOrNull); - - // 26.1.13-3 Return ? target.[[SetPrototypeOf]](proto). - let result = {}; - doInternalSetPrototypeOf(result, target, origProto, newProto); - expected.result = result.success; - if (result.success) - expected.proto = newProto; - - return expected; -} -reflectSetPrototypeOf.action = (obj, newProto) => Reflect.setPrototypeOf(obj, newProto); -reflectSetPrototypeOf.actionName = "Reflect.setPrototypeOf"; - - -//==================================================================================== -// Test Data: - -var global = new Function('return this')(); -var origGlobalProto = global.__proto__; -var origObjectProto = {}.__proto__; -var proxyObject = new Proxy({ }, { - setPrototypeOf(target, value) { - throw "Thrown from proxy"; - } -}); -var newObjectProto = { toString() { return "newObjectProto"; } }; -var origNamespaceProto = namespace.__proto__; - -var targets = []; - -targets.push({ - name: "namespace", - value: () => origNamespaceProto, - setPrototypeOf: setImmutablePrototype -}); - -var newProtos = [ - undefined, - null, - true, - false, - 0, - 11, - 123.456, - "doh", - Symbol("doh"), - {}, - origObjectProto, - origGlobalProto, - newObjectProto -]; - -var protoSetters = [ - objectSetPrototypeOf, - setUnderscoreProto, - reflectSetPrototypeOf, -]; - - -//==================================================================================== -// Test driver functions: - -function test(testID, targetValue, newProto, setterAction, expected) { - let exception = undefined; - let result = undefined; - try { - result = setterAction(targetValue, newProto); - } catch (e) { - exception = e; - } - shouldThrow(testID, "exception", exception, expected.exception); - if (!expected.exception) { - shouldEqual(testID, "__proto__", targetValue.__proto__, expected.proto); - shouldEqual(testID, "result", result, expected.result); - } -} - -function runTests() { - let testIndex = 0; - for (let protoSetter of protoSetters) { - for (let target of targets) { - for (let newProto of newProtos) { - let currentTestIndex = testIndex++; - for (var i = 0; i < maxIterations; i++) { - let expected = protoSetter(target, newProto); - let targetValue = expected.targetValue; - - let testID = makeTestID(currentTestIndex, i, target.name, newProto, protoSetter, expected); - if (verbose && i == 0) - print("test: " + testID.signature); - - test(testID, targetValue, newProto, protoSetter.action, expected); - } - } - } - } -} - -runTests(); diff --git a/implementation-contributed/javascriptcore/modules/namespace-re-export.js b/implementation-contributed/javascriptcore/modules/namespace-re-export.js deleted file mode 100644 index 9c74e612d47..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-re-export.js +++ /dev/null @@ -1 +0,0 @@ -import "namespace-re-export/namespace-re-export.js"; diff --git a/implementation-contributed/javascriptcore/modules/namespace-re-export/namespace-re-export-fixture.js b/implementation-contributed/javascriptcore/modules/namespace-re-export/namespace-re-export-fixture.js deleted file mode 100644 index 9c71bcc4d96..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-re-export/namespace-re-export-fixture.js +++ /dev/null @@ -1,2 +0,0 @@ -import * as namespace from './namespace-re-export.js'; -export { namespace }; diff --git a/implementation-contributed/javascriptcore/modules/namespace-re-export/namespace-re-export.js b/implementation-contributed/javascriptcore/modules/namespace-re-export/namespace-re-export.js deleted file mode 100644 index 4e24963e8ae..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-re-export/namespace-re-export.js +++ /dev/null @@ -1,11 +0,0 @@ -import { shouldBe, shouldNotBe } from "../resources/assert.js"; -import * as self1 from './namespace-re-export.js'; -import * as other1 from './namespace-re-export-fixture.js'; -import { namespace } from './namespace-re-export-fixture.js'; - -// Re-exported namespace objects -shouldBe(self1, namespace); -shouldNotBe(self1, other1); - -// Re-exported namespace binding should reside in the namespace-re-export-fixture's namespace object. -shouldBe('namespace' in other1, true); diff --git a/implementation-contributed/javascriptcore/modules/namespace-set-prototype-of.js b/implementation-contributed/javascriptcore/modules/namespace-set-prototype-of.js deleted file mode 100644 index 2c1ece37992..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-set-prototype-of.js +++ /dev/null @@ -1,10 +0,0 @@ -import * as namespace from "./namespace-set-prototype-of.js" -import { shouldBe, shouldThrow } from "./resources/assert.js"; - -shouldThrow(() => { - Object.setPrototypeOf(namespace, {}); -}, `TypeError: Cannot set prototype of immutable prototype object`); - -shouldBe(Reflect.setPrototypeOf(namespace, {}), false); -shouldBe(Reflect.setPrototypeOf(namespace, null), true); -shouldBe(Object.setPrototypeOf(namespace, null), namespace); diff --git a/implementation-contributed/javascriptcore/modules/namespace-tdz.js b/implementation-contributed/javascriptcore/modules/namespace-tdz.js deleted file mode 100644 index 16f2b0c9039..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-tdz.js +++ /dev/null @@ -1 +0,0 @@ -import * as namespace from "./namespace-tdz/main.js" diff --git a/implementation-contributed/javascriptcore/modules/namespace-tdz/A.js b/implementation-contributed/javascriptcore/modules/namespace-tdz/A.js deleted file mode 100644 index 62491c148a7..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-tdz/A.js +++ /dev/null @@ -1,10 +0,0 @@ -import * as namespace from "./B.js" -import { shouldBe, shouldThrow } from "../resources/assert.js"; - -export const A = 42; - -shouldBe(JSON.stringify(Reflect.getOwnPropertyDescriptor(namespace, 'B')), `{"value":256,"writable":true,"enumerable":true,"configurable":false}`); - -shouldBe(namespace.B, 256); -namespace.later(); - diff --git a/implementation-contributed/javascriptcore/modules/namespace-tdz/B.js b/implementation-contributed/javascriptcore/modules/namespace-tdz/B.js deleted file mode 100644 index d8f77e17830..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-tdz/B.js +++ /dev/null @@ -1,20 +0,0 @@ -import * as namespace from "./A.js" -import { shouldBe, shouldThrow } from "../resources/assert.js"; - -export const B = 256; - -shouldThrow(() => { - print(namespace.A); -}, `ReferenceError: Cannot access uninitialized variable.`); - -shouldThrow(() => { - Reflect.getOwnPropertyDescriptor(namespace, 'A'); -}, `ReferenceError: Cannot access uninitialized variable.`); - -// Not throw any errors even if the field is not initialized yet. -shouldBe('A' in namespace, true); -shouldBe('hello' in namespace, false); - -export function later() { - shouldBe(namespace.A, 42); -} diff --git a/implementation-contributed/javascriptcore/modules/namespace-tdz/main.js b/implementation-contributed/javascriptcore/modules/namespace-tdz/main.js deleted file mode 100644 index c24f972f63e..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace-tdz/main.js +++ /dev/null @@ -1 +0,0 @@ -import { A } from "./A.js" diff --git a/implementation-contributed/javascriptcore/modules/namespace.js b/implementation-contributed/javascriptcore/modules/namespace.js deleted file mode 100644 index 3f9f0601b14..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace.js +++ /dev/null @@ -1,81 +0,0 @@ -import changeCappuccino, * as namespace from "./namespace/drink.js" -import { shouldBe, shouldThrow } from "./resources/assert.js"; - -shouldBe(typeof namespace, 'object'); -shouldBe(typeof changeCappuccino, 'function'); -shouldBe(namespace.Cocoa, 'Cocoa'); -shouldBe(namespace.Cappuccino, 'Cappuccino'); -shouldBe(namespace.Matcha, 'Matcha'); -shouldBe(namespace.Mocha, 'Mocha'); -shouldBe(namespace.default, changeCappuccino); - -changeCappuccino('Cocoa'); -shouldBe(namespace.Cocoa, 'Cocoa'); -shouldBe(namespace.Cappuccino, 'Cocoa'); -shouldBe(namespace.Matcha, 'Matcha'); -shouldBe(namespace.Mocha, 'Mocha'); -shouldBe(namespace.default, changeCappuccino); - -shouldBe('Cocoa' in namespace, true); -shouldBe('Cappuccino' in namespace, true); -shouldBe('Matcha' in namespace, true); -shouldBe('Mocha' in namespace, true); -shouldBe('default' in namespace, true); -shouldBe(Symbol.iterator in namespace, false); -shouldBe('Tea' in namespace, false); - -shouldBe(namespace.__proto__, undefined); -shouldBe(Reflect.isExtensible(namespace), false); - -shouldBe(Reflect.set(namespace, 'Extended', 42), false); -shouldBe('Extended' in namespace, false); - -shouldBe(Reflect.set(namespace, 42, 42), false); -shouldBe(42 in namespace, false); - -shouldThrow(() => { - namespace.value = 20; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldThrow(() => { - namespace[20] = 20; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldThrow(() => { - namespace[Symbol.unscopables] = 20; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldThrow(() => { - Object.defineProperty(namespace, 'Cookie', { - value: 42 - }); -}, `TypeError: Attempting to define property on object that is not extensible.`); - -shouldThrow(() => { - namespace.__proto__ = Object.prototype; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldBe(Reflect.setPrototypeOf(namespace, Object.prototype), false); -shouldBe(namespace.__proto__, undefined); -shouldBe(Reflect.getPrototypeOf(namespace), null); - -// These names should be shown in the code point order. -shouldBe(JSON.stringify(Object.getOwnPropertyNames(namespace)), `["Cappuccino","Cocoa","Matcha","Mocha","default"]`); -shouldBe(Object.getOwnPropertySymbols(namespace).length, 1); -shouldBe(Object.getOwnPropertySymbols(namespace)[0], Symbol.toStringTag); - -// The imported binding properties of the namespace object seen as writable, but, it does not mean that it is writable by users. -shouldBe(JSON.stringify(Reflect.getOwnPropertyDescriptor(namespace, "Cocoa")), `{"value":"Cocoa","writable":true,"enumerable":true,"configurable":false}`); -shouldBe(JSON.stringify(Reflect.getOwnPropertyDescriptor(namespace, "Matcha")), `{"value":"Matcha","writable":true,"enumerable":true,"configurable":false}`); -shouldBe(JSON.stringify(Reflect.getOwnPropertyDescriptor(namespace, "Mocha")), `{"value":"Mocha","writable":true,"enumerable":true,"configurable":false}`); -shouldThrow(() => { - // Throw an error even if the same value. - namespace.Cocoa = 'Cocoa'; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldBe(JSON.stringify(Reflect.getOwnPropertyDescriptor(namespace, Symbol.toStringTag)), `{"value":"Module","writable":false,"enumerable":false,"configurable":false}`); -shouldThrow(() => { - namespace[Symbol.toStringTag] = 42; -}, `TypeError: Attempted to assign to readonly property.`); - -shouldBe(Reflect.deleteProperty(namespace, Symbol.toStringTag), false); diff --git a/implementation-contributed/javascriptcore/modules/namespace/additional-drink.js b/implementation-contributed/javascriptcore/modules/namespace/additional-drink.js deleted file mode 100644 index 59daa53f8a4..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace/additional-drink.js +++ /dev/null @@ -1,4 +0,0 @@ -export const Matcha = 'Matcha'; - -import { Mocha } from "./more-additional-drink.js" -export { Mocha } diff --git a/implementation-contributed/javascriptcore/modules/namespace/drink.js b/implementation-contributed/javascriptcore/modules/namespace/drink.js deleted file mode 100644 index 621fd22902b..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace/drink.js +++ /dev/null @@ -1,10 +0,0 @@ - -export const Cocoa = "Cocoa"; - -export let Cappuccino = "Cappuccino"; - -export default function changeCappuccino(value) { - Cappuccino = value; -} - -export * from "./additional-drink.js" diff --git a/implementation-contributed/javascriptcore/modules/namespace/more-additional-drink.js b/implementation-contributed/javascriptcore/modules/namespace/more-additional-drink.js deleted file mode 100644 index fcc36220049..00000000000 --- a/implementation-contributed/javascriptcore/modules/namespace/more-additional-drink.js +++ /dev/null @@ -1 +0,0 @@ -export const Mocha = 'Mocha'; diff --git a/implementation-contributed/javascriptcore/modules/resources/assert.js b/implementation-contributed/javascriptcore/modules/resources/assert.js deleted file mode 100644 index 6d94fb04a36..00000000000 --- a/implementation-contributed/javascriptcore/modules/resources/assert.js +++ /dev/null @@ -1,28 +0,0 @@ -export function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} - -export function shouldNotBe(actual, expected) { - if (actual === expected) - throw new Error(`bad value: ${String(actual)}`); -} - -export function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} - -export function shouldNotThrow(func) { - func(); -} diff --git a/implementation-contributed/javascriptcore/modules/scopes-eval.js b/implementation-contributed/javascriptcore/modules/scopes-eval.js deleted file mode 100644 index b50da3dedc3..00000000000 --- a/implementation-contributed/javascriptcore/modules/scopes-eval.js +++ /dev/null @@ -1,24 +0,0 @@ -import { Cappuccino } from "./scopes/drink.js" -import { shouldBe } from "./resources/assert.js"; - -// Separate test from scopes.js since direct eval can taint variables. -var global = Function("return this")(); -var globalEval = (0, eval); -global.Cappuccino = 'Global Scope'; -shouldBe(Cappuccino, 'Cappuccino'); - -(function () { - let Cappuccino = 'Function Scope'; - shouldBe(Cappuccino, 'Function Scope'); - { - let Cappuccino = 'Block Scope'; - { - (function () { - shouldBe(Cappuccino, 'Block Scope'); - shouldBe(eval(`Cappuccino`), 'Block Scope'); - }()); - } - } - shouldBe(Object, global.Object); -}()); -shouldBe(Object, global.Object) diff --git a/implementation-contributed/javascriptcore/modules/scopes.js b/implementation-contributed/javascriptcore/modules/scopes.js deleted file mode 100644 index d6794796de3..00000000000 --- a/implementation-contributed/javascriptcore/modules/scopes.js +++ /dev/null @@ -1,37 +0,0 @@ -import { Cocoa, Cappuccino, Matcha } from "./scopes/drink.js" -import { shouldBe } from "./resources/assert.js"; - -var global = Function("return this")(); -var globalEval = (0, eval); -global.Cappuccino = 'Global Scope'; - -{ - let Cocoa = 42; - shouldBe(Cocoa, 42); -} -shouldBe(Cocoa, 'Cocoa'); -shouldBe(Cappuccino, 'Cappuccino'); // Module Scope. -shouldBe(Matcha, 'Matcha'); - -(function () { - var Cocoa = 42; - let Cappuccino = 'Function Scope'; - shouldBe(Cocoa, 42); - shouldBe(Cappuccino, 'Function Scope'); - shouldBe(Matcha, 'Matcha'); - { - let Cappuccino = 'Block Scope'; - const Matcha = 50; - shouldBe(Matcha, 50); - shouldBe(Object, global.Object); - { - (function () { - shouldBe(Cappuccino, 'Block Scope'); - shouldBe(globalEval(`Cappuccino`), 'Global Scope'); - shouldBe(Function(`return Cappuccino`)(), 'Global Scope'); - }()); - } - } - shouldBe(Object, global.Object); -}()); -shouldBe(Object, global.Object); diff --git a/implementation-contributed/javascriptcore/modules/scopes/additional-drink.js b/implementation-contributed/javascriptcore/modules/scopes/additional-drink.js deleted file mode 100644 index 59daa53f8a4..00000000000 --- a/implementation-contributed/javascriptcore/modules/scopes/additional-drink.js +++ /dev/null @@ -1,4 +0,0 @@ -export const Matcha = 'Matcha'; - -import { Mocha } from "./more-additional-drink.js" -export { Mocha } diff --git a/implementation-contributed/javascriptcore/modules/scopes/drink.js b/implementation-contributed/javascriptcore/modules/scopes/drink.js deleted file mode 100644 index 621fd22902b..00000000000 --- a/implementation-contributed/javascriptcore/modules/scopes/drink.js +++ /dev/null @@ -1,10 +0,0 @@ - -export const Cocoa = "Cocoa"; - -export let Cappuccino = "Cappuccino"; - -export default function changeCappuccino(value) { - Cappuccino = value; -} - -export * from "./additional-drink.js" diff --git a/implementation-contributed/javascriptcore/modules/scopes/more-additional-drink.js b/implementation-contributed/javascriptcore/modules/scopes/more-additional-drink.js deleted file mode 100644 index fcc36220049..00000000000 --- a/implementation-contributed/javascriptcore/modules/scopes/more-additional-drink.js +++ /dev/null @@ -1 +0,0 @@ -export const Mocha = 'Mocha'; diff --git a/implementation-contributed/javascriptcore/modules/self-star-link.js b/implementation-contributed/javascriptcore/modules/self-star-link.js deleted file mode 100644 index d5e337632b0..00000000000 --- a/implementation-contributed/javascriptcore/modules/self-star-link.js +++ /dev/null @@ -1,15 +0,0 @@ -// +-------------+ -// | | -// v | -// @-> (A) -> (B) -> (C) *-> [E] -// * -// | -// v -// [D] -import { A } from "./self-star-link/A.js" -import { shouldBe } from "./resources/assert.js" -import { A as AfromC } from "./self-star-link/C.js" -import { A as AfromB } from "./self-star-link/B.js" -shouldBe(A, 'E'); -shouldBe(AfromC, 'D'); -shouldBe(AfromB, 'D'); diff --git a/implementation-contributed/javascriptcore/modules/self-star-link/A.js b/implementation-contributed/javascriptcore/modules/self-star-link/A.js deleted file mode 100644 index a79e928e2ba..00000000000 --- a/implementation-contributed/javascriptcore/modules/self-star-link/A.js +++ /dev/null @@ -1,2 +0,0 @@ -export { A } from "./B.js" -export * from "./D.js" diff --git a/implementation-contributed/javascriptcore/modules/self-star-link/B.js b/implementation-contributed/javascriptcore/modules/self-star-link/B.js deleted file mode 100644 index 672bccf05b3..00000000000 --- a/implementation-contributed/javascriptcore/modules/self-star-link/B.js +++ /dev/null @@ -1 +0,0 @@ -export { A } from "./C.js" diff --git a/implementation-contributed/javascriptcore/modules/self-star-link/C.js b/implementation-contributed/javascriptcore/modules/self-star-link/C.js deleted file mode 100644 index 6cc6194a5c2..00000000000 --- a/implementation-contributed/javascriptcore/modules/self-star-link/C.js +++ /dev/null @@ -1,2 +0,0 @@ -export { A } from "./A.js" -export * from "./E.js" diff --git a/implementation-contributed/javascriptcore/modules/self-star-link/D.js b/implementation-contributed/javascriptcore/modules/self-star-link/D.js deleted file mode 100644 index 5c938f5a988..00000000000 --- a/implementation-contributed/javascriptcore/modules/self-star-link/D.js +++ /dev/null @@ -1 +0,0 @@ -export let A = 'D'; diff --git a/implementation-contributed/javascriptcore/modules/self-star-link/E.js b/implementation-contributed/javascriptcore/modules/self-star-link/E.js deleted file mode 100644 index 4315381181f..00000000000 --- a/implementation-contributed/javascriptcore/modules/self-star-link/E.js +++ /dev/null @@ -1 +0,0 @@ -export let A = 'E'; diff --git a/implementation-contributed/javascriptcore/modules/string-prototype-module-scope.js b/implementation-contributed/javascriptcore/modules/string-prototype-module-scope.js deleted file mode 100644 index d04b8585879..00000000000 --- a/implementation-contributed/javascriptcore/modules/string-prototype-module-scope.js +++ /dev/null @@ -1,15 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -var error = null; -try { - var charAt = String.prototype.charAt; - charAt(); -} catch (e) { - error = e; -} -shouldBe(String(error), `TypeError: Type error`); - -function refer() { charAt; } diff --git a/implementation-contributed/javascriptcore/modules/this-should-be-undefined.js b/implementation-contributed/javascriptcore/modules/this-should-be-undefined.js deleted file mode 100644 index 88453e2cf86..00000000000 --- a/implementation-contributed/javascriptcore/modules/this-should-be-undefined.js +++ /dev/null @@ -1,3 +0,0 @@ -import { shouldBe } from "./resources/assert.js"; - -shouldBe(this, undefined); diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star.js deleted file mode 100644 index 4192b517fae..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star.js +++ /dev/null @@ -1,13 +0,0 @@ -// (A) *--> [B] -// | ^ -// | | -// +-> (C) *-> (D) -// ^ -// | -// (E) -// ^ -// | -// @ - -import "uncacheable-when-see-star/main1.js" -import "uncacheable-when-see-star/main2.js" diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/A-pre.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/A-pre.js deleted file mode 100644 index e90b535f875..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/A-pre.js +++ /dev/null @@ -1 +0,0 @@ -export { A } from "./A.js" diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/A.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/A.js deleted file mode 100644 index 61247645ee7..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/A.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./B.js" -export * from "./C.js" diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/B.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/B.js deleted file mode 100644 index 5dc929f3ff1..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/B.js +++ /dev/null @@ -1 +0,0 @@ -export let A = 40; diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/C.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/C.js deleted file mode 100644 index a79e928e2ba..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/C.js +++ /dev/null @@ -1,2 +0,0 @@ -export { A } from "./B.js" -export * from "./D.js" diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/D.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/D.js deleted file mode 100644 index 8b137891791..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/D.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/E-pre.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/E-pre.js deleted file mode 100644 index 7d3aa04b7b0..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/E-pre.js +++ /dev/null @@ -1 +0,0 @@ -export { A } from "./E.js" diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/E.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/E.js deleted file mode 100644 index 672bccf05b3..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/E.js +++ /dev/null @@ -1 +0,0 @@ -export { A } from "./C.js" diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/main1.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/main1.js deleted file mode 100644 index f2373b9bf56..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/main1.js +++ /dev/null @@ -1 +0,0 @@ -import { A } from "./E-pre.js" diff --git a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/main2.js b/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/main2.js deleted file mode 100644 index 597376aa6cb..00000000000 --- a/implementation-contributed/javascriptcore/modules/uncacheable-when-see-star/main2.js +++ /dev/null @@ -1 +0,0 @@ -import { A } from "./A-pre.js" diff --git a/implementation-contributed/javascriptcore/stress/StringObject-define-length-getter-rope-string-oom.js b/implementation-contributed/javascriptcore/stress/StringObject-define-length-getter-rope-string-oom.js deleted file mode 100644 index e7e706c0fe8..00000000000 --- a/implementation-contributed/javascriptcore/stress/StringObject-define-length-getter-rope-string-oom.js +++ /dev/null @@ -1,5 +0,0 @@ -try { - let char16 = decodeURI('%E7%9A%84'); - let rope = char16.padEnd(2147483644, 1); - rope.__defineGetter__(256, function () {}); -} catch { } diff --git a/implementation-contributed/javascriptcore/stress/activation-sink-default-value-tdz-error.js b/implementation-contributed/javascriptcore/stress/activation-sink-default-value-tdz-error.js deleted file mode 100644 index c780b38732c..00000000000 --- a/implementation-contributed/javascriptcore/stress/activation-sink-default-value-tdz-error.js +++ /dev/null @@ -1,46 +0,0 @@ -//@ skip if $buildType == "debug" or $architecture == "x86" - -"use strict"; - -var n = 10000000; - -function shouldThrowTDZ(func) { - var hasThrown = false; - try { - func(); - } catch(e) { - if (e.name.indexOf("ReferenceError") !== -1) - hasThrown = true; - } - if (!hasThrown) - throw new Error("Did not throw TDZ error"); -} -noInline(shouldThrowTDZ); - -function bar(f) { f(10); } - -function foo(b) { - let result = 0; - var set = function (x) { result = x; } - var cap = function() { return tdzPerpetrator; } - if (b) { - bar(set); - return tdzPerpetrator; - } - let tdzPerpetrator; - return result; -} - -noInline(bar); -noInline(foo); - -for (var i = 0; i < n; i++) { - var bool = !(i % 100); - if (bool) - shouldThrowTDZ(function() { foo(bool); }); - else { - var result = foo(bool); - if (result != 0) - throw "Error: bad result: " + result; - } -} diff --git a/implementation-contributed/javascriptcore/stress/activation-sink-default-value.js b/implementation-contributed/javascriptcore/stress/activation-sink-default-value.js deleted file mode 100644 index 4bb5277f98d..00000000000 --- a/implementation-contributed/javascriptcore/stress/activation-sink-default-value.js +++ /dev/null @@ -1,33 +0,0 @@ -//@ skip if $architecture == "x86" - -var n = 10000000; - -function bar(f) { f(10); } - -function foo(b) { - var result = 0; - var imUndefined; - var baz; - var set = function (x) { result = x; return (imUndefined, baz); } - baz = 40; - if (b) { - bar(set); - if (result != 10) - throw "Error: bad: " + result; - if (baz !== 40) - throw "Error: bad: " + baz; - if (imUndefined !== void 0) - throw "Error: bad value: " + imUndefined; - return 0; - } - return result; -} - -noInline(bar); -noInline(foo); - -for (var i = 0; i < n; i++) { - var result = foo(!(i % 100)); - if (result != 0) - throw "Error: bad result: " + result; -} diff --git a/implementation-contributed/javascriptcore/stress/activation-sink-osrexit-default-value-tdz-error.js b/implementation-contributed/javascriptcore/stress/activation-sink-osrexit-default-value-tdz-error.js deleted file mode 100644 index 4ca18e3d16b..00000000000 --- a/implementation-contributed/javascriptcore/stress/activation-sink-osrexit-default-value-tdz-error.js +++ /dev/null @@ -1,48 +0,0 @@ -//@ skip if $architecture == "x86" - -"use strict"; - -var n = 10000000; - -function shouldThrowTDZ(func) { - var hasThrown = false; - try { - func(); - } catch(e) { - if (e.name.indexOf("ReferenceError") !== -1) - hasThrown = true; - } - if (!hasThrown) - throw new Error("Did not throw TDZ error"); -} - -function bar(f) { } - -function foo(b) { - let result = 0; - var set = function (x) { result = x; return tdzPerpetrator; } - if (b) { - OSRExit(); - if (b) { - bar(set); - return tdzPerpetrator; - } - } - let tdzPerpetrator; - return result; -} - -noInline(bar); -noInline(foo); -noInline(shouldThrowTDZ); - -for (var i = 0; i < n; i++) { - var bool = !(i % 100); - if (bool) - shouldThrowTDZ(function() { foo(bool); }); - else { - var result = foo(bool); - if (result != 0) - throw "Error: bad result: " + result; - } -} diff --git a/implementation-contributed/javascriptcore/stress/activation-sink-osrexit-default-value.js b/implementation-contributed/javascriptcore/stress/activation-sink-osrexit-default-value.js deleted file mode 100644 index 60623ad1a74..00000000000 --- a/implementation-contributed/javascriptcore/stress/activation-sink-osrexit-default-value.js +++ /dev/null @@ -1,39 +0,0 @@ -//@ skip if $architecture == "x86" - -var n = 10000000; - -function bar(set) { - var result = set(0); - if (result !== void 0) - throw "Error: bad value: " + result; -} - -function foo(b) { - var result = 0; - var imUndefined; - var baz; - var set = function (x) { - result = x; - if (baz !== 50) - throw "Error: bad value: " + baz; - return imUndefined; - } - baz = 50; - if (b) { - OSRExit(); - if (b) { - bar(set); - } - return 0; - } - return result; -} - -noInline(bar); -noInline(foo); - -for (var i = 0; i < n; i++) { - var result = foo(!(i % 100)); - if (result != 0) - throw "Error: bad result: " + result; -} diff --git a/implementation-contributed/javascriptcore/stress/activation-sink-osrexit.js b/implementation-contributed/javascriptcore/stress/activation-sink-osrexit.js deleted file mode 100644 index bd5a2af47e8..00000000000 --- a/implementation-contributed/javascriptcore/stress/activation-sink-osrexit.js +++ /dev/null @@ -1,27 +0,0 @@ -//@ skip if $architecture == "x86" - -var n = 10000000; - -function bar() { } - -function foo(b) { - var result = 0; - var set = function (x) { result = x; } - if (b) { - OSRExit(); - if (b) { - bar(set); - } - return 0; - } - return result; -} - -noInline(bar); -noInline(foo); - -for (var i = 0; i < n; i++) { - var result = foo(!(i % 100)); - if (result != 0) - throw "Error: bad result: " + result; -} diff --git a/implementation-contributed/javascriptcore/stress/activation-sink.js b/implementation-contributed/javascriptcore/stress/activation-sink.js deleted file mode 100644 index ccde211447a..00000000000 --- a/implementation-contributed/javascriptcore/stress/activation-sink.js +++ /dev/null @@ -1,26 +0,0 @@ -//@ skip if $architecture == "x86" - -var n = 10000000; - -function bar(f) { f(10); } - -function foo(b) { - var result = 0; - var set = function (x) { result = x; } - if (b) { - bar(set); - if (result != 10) - throw "Error: bad: " + result; - return 0; - } - return result; -} - -noInline(bar); -noInline(foo); - -for (var i = 0; i < n; i++) { - var result = foo(!(i % 100)); - if (result != 0) - throw "Error: bad result: " + result; -} diff --git a/implementation-contributed/javascriptcore/stress/addition-order-evaluation.js b/implementation-contributed/javascriptcore/stress/addition-order-evaluation.js deleted file mode 100644 index a986336debf..00000000000 --- a/implementation-contributed/javascriptcore/stress/addition-order-evaluation.js +++ /dev/null @@ -1,24 +0,0 @@ -// Reviewed -function assert(a, message) { - if (!a) - throw new Error(message); -} - -let o = { - valueOf: function () { throw new Error("Oops"); } -}; - -try { - let n = Symbol("3") + o; - assert(false, message + ": Should throw Error, but executed without exception"); -} catch (e) { - assert(e.message === "Oops","Expected Error('Oops'), got: " + e); -} - -try { - let n = o + Symbol("3"); - assert(false, message + ": Should throw Error, but executed without exception"); -} catch (e) { - assert(e.message === "Oops","Expected Error('Oops'), got: " + e); -} - diff --git a/implementation-contributed/javascriptcore/stress/ai-should-perform-array-check-on-get-by-val-constant-folding.js b/implementation-contributed/javascriptcore/stress/ai-should-perform-array-check-on-get-by-val-constant-folding.js deleted file mode 100644 index be81502a468..00000000000 --- a/implementation-contributed/javascriptcore/stress/ai-should-perform-array-check-on-get-by-val-constant-folding.js +++ /dev/null @@ -1,14 +0,0 @@ -//@ runDefault("--jitPolicyScale=0") -function compareArray(a, b) { - if (b.length !== a.length) { - return; - } - for (var i = 0; i < a.length; i++) { - b[0]; - } -} -compareArray([], [0]); -compareArray([0, 'b'].copyWithin(), ['a', 0]); -compareArray([0], [1.1]); -runString(''); -for (var i = 0; i < 1e6; ++i); diff --git a/implementation-contributed/javascriptcore/stress/allow-math-ic-b3-code-duplication.js b/implementation-contributed/javascriptcore/stress/allow-math-ic-b3-code-duplication.js deleted file mode 100644 index 0dc18276cf8..00000000000 --- a/implementation-contributed/javascriptcore/stress/allow-math-ic-b3-code-duplication.js +++ /dev/null @@ -1,37 +0,0 @@ -//@ skip if $architecture == "x86" - -function test1() { - var o1; - for (let i = 0; i < 1000000; ++i) { - var o2 = { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { } } } } } } } } } } } } }; - } - return -o2; -} -test1(); - -function test2() { - var o1; - for (let i = 0; i < 1000000; ++i) { - var o2 = { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { } } } } } } } } } } } } }; - } - return o1 - o2; -} -test2(); - -function test3() { - var o1; - for (let i = 0; i < 1000000; ++i) { - var o2 = { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { } } } } } } } } } } } } }; - } - return o1 + o2; -} -test3(); - -function test4() { - var o1; - for (let i = 0; i < 1000000; ++i) { - var o2 = { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { f: { } } } } } } } } } } } } }; - } - return o1 * o2; -} -test4(); diff --git a/implementation-contributed/javascriptcore/stress/apply-second-argument-must-be-array-like.js b/implementation-contributed/javascriptcore/stress/apply-second-argument-must-be-array-like.js deleted file mode 100644 index be8254052b6..00000000000 --- a/implementation-contributed/javascriptcore/stress/apply-second-argument-must-be-array-like.js +++ /dev/null @@ -1,50 +0,0 @@ -// Reviewed -//@ runDefault - -function assert(x) { - if (!x) - throw Error("Bad"); -} - -function shouldThrow(expr) { - let testFunc = new Function(expr); - for (let i = 0; i < 10000; i++) { - let error; - try { - testFunc(); - } catch (e) { - error = e; - } - assert(error); - } -} - -function shouldNotThrow(expr) { - let testFunc = new Function(expr); - for (let i = 0; i < 10000; i++) { - let error; - try { - testFunc(); - } catch (e) { - error = e; - } - assert(!error); - } -} - -function foo() { } - -shouldThrow("foo.apply(undefined, true)"); -shouldThrow("foo.apply(undefined, false)"); -shouldThrow("foo.apply(undefined, 100)"); -shouldThrow("foo.apply(undefined, 123456789.12345)"); -shouldThrow("foo.apply(undefined, 1.0/1.0)"); -shouldThrow("foo.apply(undefined, 1.0/0)"); -shouldThrow("foo.apply(undefined, 'hello')"); -shouldThrow("foo.apply(undefined, Symbol())"); - -shouldNotThrow("foo.apply(undefined, undefined)"); -shouldNotThrow("foo.apply(undefined, null)"); -shouldNotThrow("foo.apply(undefined, {})"); -shouldNotThrow("foo.apply(undefined, [])"); -shouldNotThrow("foo.apply(undefined, function(){})"); diff --git a/implementation-contributed/javascriptcore/stress/arguments-elimination-will-generate-edge-without-result.js b/implementation-contributed/javascriptcore/stress/arguments-elimination-will-generate-edge-without-result.js deleted file mode 100644 index 49bad35a42a..00000000000 --- a/implementation-contributed/javascriptcore/stress/arguments-elimination-will-generate-edge-without-result.js +++ /dev/null @@ -1,9 +0,0 @@ -//@ runDefault("--validateGraphAtEachPhase=true", "--jitPolicyScale=0", "--useConcurrentJIT=0") - -'use strict'; -function foo() { - return arguments[1][0] === arguments[0]; -} -for (let i = 0; i < 100000; ++i) { - foo(0, 0); -} diff --git a/implementation-contributed/javascriptcore/stress/arith-abs-on-various-types.js b/implementation-contributed/javascriptcore/stress/arith-abs-on-various-types.js deleted file mode 100644 index 64c7edefd2b..00000000000 --- a/implementation-contributed/javascriptcore/stress/arith-abs-on-various-types.js +++ /dev/null @@ -1,241 +0,0 @@ -// Reviewed -//@ skip if not $jitTests -//@ defaultNoEagerRun -"use strict"; - -let validInputTestCases = [ - // input as string, expected result as string. - ["undefined", "NaN"], - ["null", "0"], - ["0", "0"], - ["-0.", "0"], - ["1.", "1"], - ["42", "42"], - ["-42", "42"], - ["Math.E", "Math.E"], - ["Infinity", "Infinity"], - ["-Infinity", "Infinity"], - ["NaN", "NaN"], - ["-NaN", "NaN"], - ["\"WebKit\"", "NaN"], - ["\"4\"", "4"], - ["\"-4\"", "4"], - ["{ valueOf: () => { return Math.E; } }", "Math.E"], - ["{ valueOf: () => { return 4; } }", "4"], - ["{ valueOf: () => { return -4; } }", "4"], -]; - -let validInputTypedTestCases = validInputTestCases.map((element) => { return [eval("(" + element[0] + ")"), eval(element[1])] }); - -function isIdentical(result, expected) -{ - if (expected === expected) { - if (result !== expected) - return false; - if (!expected && 1 / expected === -Infinity && 1 / result !== -Infinity) - return false; - - return true; - } - return result !== result; -} - - -// Test Math.abs() without arguments. -function opaqueAbsNoArgument() { - return Math.abs(); -} -noInline(opaqueAbsNoArgument); -noOSRExitFuzzing(opaqueAbsNoArgument); - -function testNoArgument() { - for (let i = 0; i < 1e4; ++i) { - let output = opaqueAbsNoArgument(); - if (output === output) { - throw "Failed opaqueAbsNoArgument"; - } - } - if (numberOfDFGCompiles(opaqueAbsNoArgument) > 1) - throw "The call without arguments should never exit."; -} -testNoArgument(); - - -// Test Math.abs() with a very polymorphic input. All test cases are seen at each iteration. -function opaqueAllTypesAbs(argument) { - return Math.abs(argument); -} -noInline(opaqueAllTypesAbs); -noOSRExitFuzzing(opaqueAllTypesAbs); - -function testAllTypesCall() { - for (let i = 0; i < 1e3; ++i) { - for (let testCaseInput of validInputTypedTestCases) { - let output = opaqueAllTypesAbs(testCaseInput[0]); - if (!isIdentical(output, testCaseInput[1])) - throw "Failed testAllTypesCall for input " + testCaseInput[0] + " expected " + testCaseInput[1] + " got " + output; - } - } - if (numberOfDFGCompiles(opaqueAllTypesAbs) > 3) - throw "We should have detected abs() was polymorphic and generated a generic version."; -} -testAllTypesCall(); - - -// Test Math.abs() on a completely typed input. Every call see only one type. -function testSingleTypeCall() { - for (let testCaseInput of validInputTestCases) { - eval(` - function opaqueAbs(argument) { - return Math.abs(argument); - } - noInline(opaqueAbs); - noOSRExitFuzzing(opaqueAbs); - - for (let i = 0; i < 1e4; ++i) { - if (!isIdentical(opaqueAbs(${testCaseInput[0]}), ${testCaseInput[1]})) { - throw "Failed testSingleTypeCall()"; - } - } - if (numberOfDFGCompiles(opaqueAbs) > 1) - throw "We should have compiled a single abs for the expected type. The argument was " + ${testCaseInput[0]}; - `); - } -} -testSingleTypeCall(); - - -// Test Math.abs() on constants -function testConstant() { - for (let testCaseInput of validInputTestCases) { - eval(` - function opaqueAbsOnConstant() { - return Math.abs(${testCaseInput[0]}); - } - noInline(opaqueAbsOnConstant); - noOSRExitFuzzing(opaqueAbsOnConstant); - - for (let i = 0; i < 1e4; ++i) { - if (!isIdentical(opaqueAbsOnConstant(), ${testCaseInput[1]})) { - throw "Failed testConstant()"; - } - } - if (numberOfDFGCompiles(opaqueAbsOnConstant) > 1) - throw "We should have compiled a single abs for the expected type."; - `); - } -} -testConstant(); - - -// Verify we call valueOf() exactly once per call. -function opaqueAbsForSideEffects(argument) { - return Math.abs(argument); -} -noInline(opaqueAbsForSideEffects); -noOSRExitFuzzing(opaqueAbsForSideEffects); - -function testSideEffect() { - let testObject = { - counter: 0, - valueOf: function() { ++this.counter; return 16; } - }; - let abs16 = Math.abs(16); - for (let i = 0; i < 1e4; ++i) { - if (opaqueAbsForSideEffects(testObject) !== abs16) - throw "Incorrect result in testSideEffect()"; - } - if (testObject.counter !== 1e4) - throw "Failed testSideEffect()"; - if (numberOfDFGCompiles(opaqueAbsForSideEffects) > 1) - throw "opaqueAbsForSideEffects() is predictable, it should only be compiled once."; -} -testSideEffect(); - - -// Verify abs() is not subject to CSE if the argument has side effects. -function opaqueAbsForCSE(argument) { - return Math.abs(argument) + Math.abs(argument) + Math.abs(argument); -} -noInline(opaqueAbsForCSE); -noOSRExitFuzzing(opaqueAbsForCSE); - -function testCSE() { - let testObject = { - counter: 0, - valueOf: function() { ++this.counter; return 16; } - }; - let abs16 = Math.abs(16); - let threeAbs16 = abs16 + abs16 + abs16; - for (let i = 0; i < 1e4; ++i) { - if (opaqueAbsForCSE(testObject) !== threeAbs16) - throw "Incorrect result in testCSE()"; - } - if (testObject.counter !== 3e4) - throw "Failed testCSE()"; - if (numberOfDFGCompiles(opaqueAbsForCSE) > 1) - throw "opaqueAbsForCSE() is predictable, it should only be compiled once."; -} -testCSE(); - - -// Verify abs() is not subject to DCE if the argument has side effects. -function opaqueAbsForDCE(argument) { - Math.abs(argument); -} -noInline(opaqueAbsForDCE); -noOSRExitFuzzing(opaqueAbsForDCE); - -function testDCE() { - let testObject = { - counter: 0, - valueOf: function() { ++this.counter; return 16; } - }; - for (let i = 0; i < 1e4; ++i) { - opaqueAbsForDCE(testObject); - } - if (testObject.counter !== 1e4) - throw "Failed testDCE()"; - if (numberOfDFGCompiles(opaqueAbsForDCE) > 1) - throw "opaqueAbsForDCE() is predictable, it should only be compiled once."; -} -testDCE(); - - -// Test exceptions in the argument. -function testException() { - let counter = 0; - function opaqueAbsWithException(argument) { - let result = Math.abs(argument); - ++counter; - return result; - } - noInline(opaqueAbsWithException); - - let testObject = { valueOf: () => { return 64; } }; - let abs64 = Math.abs(64); - - // Warm up without exception. - for (let i = 0; i < 1e3; ++i) { - if (opaqueAbsWithException(testObject) !== abs64) - throw "Incorrect result in opaqueAbsWithException()"; - } - - let testThrowObject = { valueOf: () => { throw testObject; return 64; } }; - - for (let i = 0; i < 1e2; ++i) { - try { - if (opaqueAbsWithException(testThrowObject) !== 8) - throw "This code should not be reached!!"; - } catch (e) { - if (e !== testObject) { - throw "Wrong object thrown from opaqueAbsWithException." - } - } - } - - if (counter !== 1e3) { - throw "Invalid count in testException()"; - } -} -testException(); diff --git a/implementation-contributed/javascriptcore/stress/arith-acos-on-various-types.js b/implementation-contributed/javascriptcore/stress/arith-acos-on-various-types.js deleted file mode 100644 index 5195e5a14a7..00000000000 --- a/implementation-contributed/javascriptcore/stress/arith-acos-on-various-types.js +++ /dev/null @@ -1,238 +0,0 @@ -// Reviewed -//@ skip if not $jitTests -//@ defaultNoEagerRun -"use strict"; - -let acosOfHalf = Math.acos(0.5); - -let validInputTestCases = [ - // input as string, expected result as string. - ["undefined", "NaN"], - ["null", "" + Math.acos(0)], - ["1", "0"], - ["0", "" + Math.acos(0)], - ["-0.", "" + Math.acos(0)], - ["0.5", "" + acosOfHalf], - ["Math.PI", "" + Math.acos(Math.PI)], - ["Infinity", "NaN"], - ["-Infinity", "NaN"], - ["NaN", "NaN"], - ["\"WebKit\"", "NaN"], - ["\"0.5\"", "" + acosOfHalf], - ["{ valueOf: () => { return 0.5; } }", "" + acosOfHalf], -]; - -let validInputTypedTestCases = validInputTestCases.map((element) => { return [eval("(" + element[0] + ")"), eval(element[1])] }); - -function isIdentical(result, expected) -{ - if (expected === expected) { - if (result !== expected) - return false; - if (!expected) - return (1 / expected) === (1 / result); - - return true; - } - return result !== result; -} - - -// Test Math.acos() without arguments. -function opaqueACosNoArgument() { - return Math.acos(); -} -noInline(opaqueACosNoArgument); -noOSRExitFuzzing(opaqueACosNoArgument); - -function testNoArgument() { - for (let i = 0; i < 1e4; ++i) { - let output = opaqueACosNoArgument(); - if (output === output) { - throw "Failed opaqueACosNoArgument"; - } - } - if (numberOfDFGCompiles(opaqueACosNoArgument) > 1) - throw "The call without arguments should never exit."; -} -testNoArgument(); - - -// Test Math.acos() with a very polymorphic input. All test cases are seen at each iteration. -function opaqueAllTypesACos(argument) { - return Math.acos(argument); -} -noInline(opaqueAllTypesACos); -noOSRExitFuzzing(opaqueAllTypesACos); - -function testAllTypesCall() { - for (let i = 0; i < 1e3; ++i) { - for (let testCaseInput of validInputTypedTestCases) { - let output = opaqueAllTypesACos(testCaseInput[0]); - if (!isIdentical(output, testCaseInput[1])) - throw "Failed testAllTypesCall for input " + testCaseInput[0] + " expected " + testCaseInput[1] + " got " + output; - } - } - if (numberOfDFGCompiles(opaqueAllTypesACos) > 2) - throw "We should have detected acos() was polymorphic and generated a generic version."; -} -testAllTypesCall(); - - -// Test Math.acos() on a completely typed input. Every call see only one type. -function testSingleTypeCall() { - for (let testCaseInput of validInputTestCases) { - eval(` - function opaqueACos(argument) { - return Math.acos(argument); - } - noInline(opaqueACos); - noOSRExitFuzzing(opaqueACos); - - for (let i = 0; i < 1e4; ++i) { - if (!isIdentical(opaqueACos(${testCaseInput[0]}), ${testCaseInput[1]})) { - throw "Failed testSingleTypeCall()"; - } - } - if (numberOfDFGCompiles(opaqueACos) > 1) - throw "We should have compiled a single acos for the expected type."; - `); - } -} -testSingleTypeCall(); - - -// Test Math.acos() on constants -function testConstant() { - for (let testCaseInput of validInputTestCases) { - eval(` - function opaqueACosOnConstant() { - return Math.acos(${testCaseInput[0]}); - } - noInline(opaqueACosOnConstant); - noOSRExitFuzzing(opaqueACosOnConstant); - - for (let i = 0; i < 1e4; ++i) { - if (!isIdentical(opaqueACosOnConstant(), ${testCaseInput[1]})) { - throw "Failed testConstant()"; - } - } - if (numberOfDFGCompiles(opaqueACosOnConstant) > 1) - throw "We should have compiled a single acos for the expected type."; - `); - } -} -testConstant(); - - -// Verify we call valueOf() exactly once per call. -function opaqueACosForSideEffects(argument) { - return Math.acos(argument); -} -noInline(opaqueACosForSideEffects); -noOSRExitFuzzing(opaqueACosForSideEffects); - -function testSideEffect() { - let testObject = { - counter: 0, - valueOf: function() { ++this.counter; return 0.2; } - }; - let acosResult = Math.acos(0.2); - for (let i = 0; i < 1e4; ++i) { - if (opaqueACosForSideEffects(testObject) !== acosResult) - throw "Incorrect result in testSideEffect()"; - } - if (testObject.counter !== 1e4) - throw "Failed testSideEffect()"; - if (numberOfDFGCompiles(opaqueACosForSideEffects) > 1) - throw "opaqueACosForSideEffects() is predictable, it should only be compiled once."; -} -testSideEffect(); - - -// Verify acos() is not subject to CSE if the argument has side effects. -function opaqueACosForCSE(argument) { - return Math.acos(argument) + Math.acos(argument) + Math.acos(argument); -} -noInline(opaqueACosForCSE); -noOSRExitFuzzing(opaqueACosForCSE); - -function testCSE() { - let testObject = { - counter: 0, - valueOf: function() { ++this.counter; return 0.2; } - }; - let acosResult = Math.acos(0.2); - let threeacosResult = acosResult + acosResult + acosResult; - for (let i = 0; i < 1e4; ++i) { - if (opaqueACosForCSE(testObject) !== threeacosResult) - throw "Incorrect result in testCSE()"; - } - if (testObject.counter !== 3e4) - throw "Failed testCSE()"; - if (numberOfDFGCompiles(opaqueACosForCSE) > 1) - throw "opaqueACosForCSE() is predictable, it should only be compiled once."; -} -testCSE(); - - -// Verify acos() is not subject to DCE if the argument has side effects. -function opaqueACosForDCE(argument) { - Math.acos(argument); -} -noInline(opaqueACosForDCE); -noOSRExitFuzzing(opaqueACosForDCE); - -function testDCE() { - let testObject = { - counter: 0, - valueOf: function() { ++this.counter; return 0.2; } - }; - for (let i = 0; i < 1e4; ++i) { - opaqueACosForDCE(testObject); - } - if (testObject.counter !== 1e4) - throw "Failed testDCE()"; - if (numberOfDFGCompiles(opaqueACosForDCE) > 1) - throw "opaqueACosForDCE() is predictable, it should only be compiled once."; -} -testDCE(); - - -// Test exceptions in the argument. -function testException() { - let counter = 0; - function opaqueACosWithException(argument) { - let result = Math.acos(argument); - ++counter; - return result; - } - noInline(opaqueACosWithException); - - let testObject = { valueOf: () => { return 0.1; } }; - let acosResult = Math.acos(0.1); - - // Warm up without exception. - for (let i = 0; i < 1e3; ++i) { - if (opaqueACosWithException(testObject) !== acosResult) - throw "Incorrect result in opaqueACosWithException()"; - } - - let testThrowObject = { valueOf: () => { throw testObject; return 0.1; } }; - - for (let i = 0; i < 1e2; ++i) { - try { - if (opaqueACosWithException(testThrowObject) !== 8) - throw "This code should not be reached!!"; - } catch (e) { - if (e !== testObject) { - throw "Wrong object thrown from opaqueACosWithException." - } - } - } - - if (counter !== 1e3) { - throw "Invalid count in testException()"; - } -} -testException(); diff --git a/implementation-contributed/javascriptcore/stress/arith-acosh-on-various-types.js b/implementation-contributed/javascriptcore/stress/arith-acosh-on-various-types.js deleted file mode 100644 index 2084dc5ecb6..00000000000 --- a/implementation-contributed/javascriptcore/stress/arith-acosh-on-various-types.js +++ /dev/null @@ -1,237 +0,0 @@ -// Reviewed -//@ skip if not $jitTests -//@ defaultNoEagerRun -"use strict"; - -let acoshOfFour = Math.acosh(4); - -let validInputTestCases = [ - // input as string, expected result as string. - ["undefined", "NaN"], - ["null", "NaN"], - ["0", "NaN"], - ["-0.", "NaN"], - ["4", "" + acoshOfFour], - ["Math.PI", "" + Math.acosh(Math.PI)], - ["Infinity", "Infinity"], - ["-Infinity", "NaN"], - ["NaN", "NaN"], - ["\"WebKit\"", "NaN"], - ["\"4\"", "" + acoshOfFour], - ["{ valueOf: () => { return 4; } }", "" + acoshOfFour], -]; - -let validInputTypedTestCases = validInputTestCases.map((element) => { return [eval("(" + element[0] + ")"), eval(element[1])] }); - -function isIdentical(result, expected) -{ - if (expected === expected) { - if (result !== expected) - return false; - if (!expected) - return (1 / expected) === (1 / result); - - return true; - } - return result !== result; -} - - -// Test Math.acosh() without arguments. -function opaqueACoshNoArgument() { - return Math.acosh(); -} -noInline(opaqueACoshNoArgument); -noOSRExitFuzzing(opaqueACoshNoArgument); - -function testNoArgument() { - for (let i = 0; i < 1e4; ++i) { - let output = opaqueACoshNoArgument(); - if (output === output) { - throw "Failed opaqueACoshNoArgument"; - } - } - if (numberOfDFGCompiles(opaqueACoshNoArgument) > 1) - throw "The call without arguments should never exit."; -} -testNoArgument(); - - -// Test Math.acosh() with a very polymorphic input. All test cases are seen at each iteration. -function opaqueAllTypesACosh(argument) { - return Math.acosh(argument); -} -noInline(opaqueAllTypesACosh); -noOSRExitFuzzing(opaqueAllTypesACosh); - -function testAllTypesCall() { - for (let i = 0; i < 1e3; ++i) { - for (let testCaseInput of validInputTypedTestCases) { - let output = opaqueAllTypesACosh(testCaseInput[0]); - if (!isIdentical(output, testCaseInput[1])) - throw "Failed testAllTypesCall for input " + testCaseInput[0] + " expected " + testCaseInput[1] + " got " + output; - } - } - if (numberOfDFGCompiles(opaqueAllTypesACosh) > 2) - throw "We should have detected acosh() was polymorphic and generated a generic version."; -} -testAllTypesCall(); - - -// Test Math.acosh() on a completely typed input. Every call see only one type. -function testSingleTypeCall() { - for (let testCaseInput of validInputTestCases) { - eval(` - function opaqueACosh(argument) { - return Math.acosh(argument); - } - noInline(opaqueACosh); - noOSRExitFuzzing(opaqueACosh); - - for (let i = 0; i < 1e4; ++i) { - if (!isIdentical(opaqueACosh(${testCaseInput[0]}), ${testCaseInput[1]})) { - throw "Failed testSingleTypeCall()"; - } - } - if (numberOfDFGCompiles(opaqueACosh) > 1) - throw "We should have compiled a single acosh for the expected type."; - `); - } -} -testSingleTypeCall(); - - -// Test Math.acosh() on constants -function testConstant() { - for (let testCaseInput of validInputTestCases) { - eval(` - function opaqueACoshOnConstant() { - return Math.acosh(${testCaseInput[0]}); - } - noInline(opaqueACoshOnConstant); - noOSRExitFuzzing(opaqueACoshOnConstant); - - for (let i = 0; i < 1e4; ++i) { - if (!isIdentical(opaqueACoshOnConstant(), ${testCaseInput[1]})) { - throw "Failed testConstant()"; - } - } - if (numberOfDFGCompiles(opaqueACoshOnConstant) > 1) - throw "We should have compiled a single acosh for the expected type."; - `); - } -} -testConstant(); - - -// Verify we call valueOf() exactly once per call. -function opaqueACoshForSideEffects(argument) { - return Math.acosh(argument); -} -noInline(opaqueACoshForSideEffects); -noOSRExitFuzzing(opaqueACoshForSideEffects); - -function testSideEffect() { - let testObject = { - counter: 0, - valueOf: function() { ++this.counter; return 16; } - }; - let acosh16 = Math.acosh(16); - for (let i = 0; i < 1e4; ++i) { - if (opaqueACoshForSideEffects(testObject) !== acosh16) - throw "Incorrect result in testSideEffect()"; - } - if (testObject.counter !== 1e4) - throw "Failed testSideEffect()"; - if (numberOfDFGCompiles(opaqueACoshForSideEffects) > 1) - throw "opaqueACoshForSideEffects() is predictable, it should only be compiled once."; -} -testSideEffect(); - - -// Verify acosh() is not subject to CSE if the argument has side effects. -function opaqueACoshForCSE(argument) { - return Math.acosh(argument) + Math.acosh(argument) + Math.acosh(argument); -} -noInline(opaqueACoshForCSE); -noOSRExitFuzzing(opaqueACoshForCSE); - -function testCSE() { - let testObject = { - counter: 0, - valueOf: function() { ++this.counter; return 16; } - }; - let acosh16 = Math.acosh(16); - let threeACosh16 = acosh16 + acosh16 + acosh16; - for (let i = 0; i < 1e4; ++i) { - if (opaqueACoshForCSE(testObject) !== threeACosh16) - throw "Incorrect result in testCSE()"; - } - if (testObject.counter !== 3e4) - throw "Failed testCSE()"; - if (numberOfDFGCompiles(opaqueACoshForCSE) > 1) - throw "opaqueACoshForCSE() is predictable, it should only be compiled once."; -} -testCSE(); - - -// Verify acosh() is not subject to DCE if the argument has side effects. -function opaqueACoshForDCE(argument) { - Math.acosh(argument); -} -noInline(opaqueACoshForDCE); -noOSRExitFuzzing(opaqueACoshForDCE); - -function testDCE() { - let testObject = { - counter: 0, - valueOf: function() { ++this.counter; return 16; } - }; - for (let i = 0; i < 1e4; ++i) { - opaqueACoshForDCE(testObject); - } - if (testObject.counter !== 1e4) - throw "Failed testDCE()"; - if (numberOfDFGCompiles(opaqueACoshForDCE) > 1) - throw "opaqueACoshForDCE() is predictable, it should only be compiled once."; -} -testDCE(); - - -// Test exceptions in the argument. -function testException() { - let counter = 0; - function opaqueACoshWithException(argument) { - let result = Math.acosh(argument); - ++counter; - return result; - } - noInline(opaqueACoshWithException); - - let testObject = { valueOf: () => { return 64; } }; - let acosh64 = Math.acosh(64); - - // Warm up without exception. - for (let i = 0; i < 1e3; ++i) { - if (opaqueACoshWithException(testObject) !== acosh64) - throw "Incorrect result in opaqueACoshWithException()"; - } - - let testThrowObject = { valueOf: () => { throw testObject; return 64; } }; - - for (let i = 0; i < 1e2; ++i) { - try { - if (opaqueACoshWithException(testThrowObject) !== 8) - throw "This code should not be reached!!"; - } catch (e) { - if (e !== testObject) { - throw "Wrong object thrown from opaqueACoshWithException." - } - } - } - - if (counter !== 1e3) { - throw "Invalid count in testException()"; - } -} -testException(); diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-array-prototype-trap.js b/implementation-contributed/javascriptcore/stress/array-indexof-array-prototype-trap.js deleted file mode 100644 index 4c94be03f37..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-indexof-array-prototype-trap.js +++ /dev/null @@ -1,45 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -class AncestorArray extends Object { - get 2() { - this.called = true; - return 42; - } -} - -Array.prototype.__proto__ = AncestorArray.prototype; - -{ - let array = []; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [20, 20]; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [42.195]; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.length = 42; - ensureArrayStorage(array); - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-cached-length.js b/implementation-contributed/javascriptcore/stress/array-indexof-cached-length.js deleted file mode 100644 index 602f8a2c62c..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-indexof-cached-length.js +++ /dev/null @@ -1,24 +0,0 @@ -function assert(b) { - if (!b) - throw new Error; - -} - -const originalLength = 10000; -let arr = new Proxy([], { - has(...args) { - assert(parseInt(args[1]) < originalLength); - assert(args[0].length - 10 === originalLength); - return Reflect.has(...args); - } -}); - -for (var i = 0; i < originalLength; i++) - arr[i] = []; - -arr.indexOf(new Object(), { - valueOf: function () { - arr.length += 10; - return 0; - } -}); diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-fast-path-effects.js b/implementation-contributed/javascriptcore/stress/array-indexof-fast-path-effects.js deleted file mode 100644 index 2dac83cb1e7..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-indexof-fast-path-effects.js +++ /dev/null @@ -1,11 +0,0 @@ -// This shouldn't crash when running with ASAN. -let arr = []; -for (var i = 0; i < 1000000; i++) - arr[i] = []; - -arr.indexOf(new Object(), { - valueOf: function () { - arr.length = 0; - return 0; - } -}); diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-have-a-bad-time-c-runtime.js b/implementation-contributed/javascriptcore/stress/array-indexof-have-a-bad-time-c-runtime.js deleted file mode 100644 index 91696c70ea3..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-indexof-have-a-bad-time-c-runtime.js +++ /dev/null @@ -1,43 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -Object.defineProperty(Array.prototype, 2, { - get() { - this.called = true; - return 42; - } -}); - -{ - let array = []; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [20, 20]; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [42.195]; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.length = 42; - ensureArrayStorage(array); - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-hole-nan.js b/implementation-contributed/javascriptcore/stress/array-indexof-hole-nan.js deleted file mode 100644 index 7374a4998fb..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-indexof-hole-nan.js +++ /dev/null @@ -1,19 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - - -{ - let array = [42, , , 0]; - shouldBe(array.indexOf(Number.NaN), -1); - shouldBe(array.indexOf(0), 3); -} -{ - let array = [42.195, , , 0]; - shouldBe(array.indexOf(Number.NaN), -1); -} -{ - let array = [42.195, Number.NaN, , 0]; - shouldBe(array.indexOf(Number.NaN), -1); -} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-infinity.js b/implementation-contributed/javascriptcore/stress/array-indexof-infinity.js deleted file mode 100644 index 1a089c9e343..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-indexof-infinity.js +++ /dev/null @@ -1,21 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -{ - let array = [42.195, -0.0, -Infinity]; - shouldBe(array.indexOf(Infinity), -1); - shouldBe(array.indexOf(-Infinity), 2); - shouldBe(array.indexOf(42), -1); -} -{ - let array = [1, 2, 3, 0]; - shouldBe(array.indexOf(Infinity), -1); - shouldBe(array.indexOf(-Infinity), -1); -} -{ - let array = ["String", 42.5, Infinity, 33]; - shouldBe(array.indexOf(Infinity), 2); - shouldBe(array.indexOf(-Infinity), -1); -} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-negative-zero.js b/implementation-contributed/javascriptcore/stress/array-indexof-negative-zero.js deleted file mode 100644 index c7b7d709901..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-indexof-negative-zero.js +++ /dev/null @@ -1,20 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -{ - let array = [42.195, -0.0]; - shouldBe(array.indexOf(0), 1); - shouldBe(array.indexOf(-0), 1); -} -{ - let array = [42.195, 0, -0.0]; - shouldBe(array.indexOf(0), 1); - shouldBe(array.indexOf(-0), 1); -} -{ - let array = [42, 0]; - shouldBe(array.indexOf(0), 1); - shouldBe(array.indexOf(-0), 1); -} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-own-getter.js b/implementation-contributed/javascriptcore/stress/array-indexof-own-getter.js deleted file mode 100644 index 2d06ff58d6b..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-indexof-own-getter.js +++ /dev/null @@ -1,66 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -{ - let array = []; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [20, 20]; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [42.195]; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - ensureArrayStorage(array); - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-prototype-trap.js b/implementation-contributed/javascriptcore/stress/array-indexof-prototype-trap.js deleted file mode 100644 index 3229247c3e6..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-indexof-prototype-trap.js +++ /dev/null @@ -1,48 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -class DerivedArray extends Array { - get 2() { - this.called = true; - return 42; - } -} - -{ - let array = []; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [20, 20]; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [42.195]; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - ensureArrayStorage(array); - shouldBe(array.indexOf(42), 2); - shouldBe(array.called, true); -} diff --git a/implementation-contributed/javascriptcore/stress/array-lastindexof-array-prototype-trap.js b/implementation-contributed/javascriptcore/stress/array-lastindexof-array-prototype-trap.js deleted file mode 100644 index ee7bc7be911..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-lastindexof-array-prototype-trap.js +++ /dev/null @@ -1,45 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -class AncestorArray extends Object { - get 2() { - this.called = true; - return 42; - } -} - -Array.prototype.__proto__ = AncestorArray.prototype; - -{ - let array = []; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [20, 20]; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [42.195]; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.length = 42; - ensureArrayStorage(array); - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} diff --git a/implementation-contributed/javascriptcore/stress/array-lastindexof-cached-length.js b/implementation-contributed/javascriptcore/stress/array-lastindexof-cached-length.js deleted file mode 100644 index 066a4db7001..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-lastindexof-cached-length.js +++ /dev/null @@ -1,24 +0,0 @@ -function assert(b) { - if (!b) - throw new Error; - -} - -const originalLength = 10000; -let arr = new Proxy([], { - has(...args) { - assert(parseInt(args[1]) < originalLength); - assert(args[0].length - 10 === originalLength); - return Reflect.has(...args); - } -}); - -for (var i = 0; i < originalLength; i++) - arr[i] = []; - -arr.lastIndexOf(new Object(), { - valueOf: function () { - arr.length += 10; - return 0; - } -}); diff --git a/implementation-contributed/javascriptcore/stress/array-lastindexof-fast-path-effects.js b/implementation-contributed/javascriptcore/stress/array-lastindexof-fast-path-effects.js deleted file mode 100644 index a92651d29b8..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-lastindexof-fast-path-effects.js +++ /dev/null @@ -1,11 +0,0 @@ -// This shouldn't crash when running with ASAN. -let arr = []; -for (var i = 0; i < 1000000; i++) - arr[i] = []; - -arr.lastIndexOf(new Object(), { - valueOf: function () { - arr.length = 0; - return 0; - } -}); diff --git a/implementation-contributed/javascriptcore/stress/array-lastindexof-have-a-bad-time-c-runtime.js b/implementation-contributed/javascriptcore/stress/array-lastindexof-have-a-bad-time-c-runtime.js deleted file mode 100644 index 81bab225a5e..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-lastindexof-have-a-bad-time-c-runtime.js +++ /dev/null @@ -1,43 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -Object.defineProperty(Array.prototype, 2, { - get() { - this.called = true; - return 42; - } -}); - -{ - let array = []; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [20, 20]; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [42.195]; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.length = 42; - ensureArrayStorage(array); - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} diff --git a/implementation-contributed/javascriptcore/stress/array-lastindexof-hole-nan.js b/implementation-contributed/javascriptcore/stress/array-lastindexof-hole-nan.js deleted file mode 100644 index 862ed837559..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-lastindexof-hole-nan.js +++ /dev/null @@ -1,19 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - - -{ - let array = [42, , , 0]; - shouldBe(array.lastIndexOf(Number.NaN), -1); - shouldBe(array.lastIndexOf(0), 3); -} -{ - let array = [42.195, , , 0]; - shouldBe(array.lastIndexOf(Number.NaN), -1); -} -{ - let array = [42.195, Number.NaN, , 0]; - shouldBe(array.lastIndexOf(Number.NaN), -1); -} diff --git a/implementation-contributed/javascriptcore/stress/array-lastindexof-infinity.js b/implementation-contributed/javascriptcore/stress/array-lastindexof-infinity.js deleted file mode 100644 index 3f0a4b616d7..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-lastindexof-infinity.js +++ /dev/null @@ -1,21 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -{ - let array = [42.195, -0.0, -Infinity]; - shouldBe(array.lastIndexOf(Infinity), -1); - shouldBe(array.lastIndexOf(-Infinity), 2); - shouldBe(array.lastIndexOf(42), -1); -} -{ - let array = [1, 2, 3, 0]; - shouldBe(array.lastIndexOf(Infinity), -1); - shouldBe(array.lastIndexOf(-Infinity), -1); -} -{ - let array = ["String", 42.5, Infinity, 33]; - shouldBe(array.lastIndexOf(Infinity), 2); - shouldBe(array.lastIndexOf(-Infinity), -1); -} diff --git a/implementation-contributed/javascriptcore/stress/array-lastindexof-negative-zero.js b/implementation-contributed/javascriptcore/stress/array-lastindexof-negative-zero.js deleted file mode 100644 index 42bf2ad5d2d..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-lastindexof-negative-zero.js +++ /dev/null @@ -1,25 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -{ - let array = [42.195, -0.0]; - shouldBe(array.lastIndexOf(0), 1); - shouldBe(array.lastIndexOf(-0), 1); -} -{ - let array = [42.195, 0, -0.0]; - shouldBe(array.lastIndexOf(0), 2); - shouldBe(array.lastIndexOf(-0), 2); -} -{ - let array = [42, 0]; - shouldBe(array.lastIndexOf(0), 1); - shouldBe(array.lastIndexOf(-0), 1); -} -{ - let array = [42, 0, 44]; - shouldBe(array.lastIndexOf(0), 1); - shouldBe(array.lastIndexOf(-0), 1); -} diff --git a/implementation-contributed/javascriptcore/stress/array-lastindexof-own-getter.js b/implementation-contributed/javascriptcore/stress/array-lastindexof-own-getter.js deleted file mode 100644 index adab0917d4b..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-lastindexof-own-getter.js +++ /dev/null @@ -1,66 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -{ - let array = []; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [20, 20]; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [42.195]; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - Object.defineProperty(array, 2, { - get() { - this.called = true; - return 42; - } - }); - array.length = 42; - ensureArrayStorage(array); - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} diff --git a/implementation-contributed/javascriptcore/stress/array-lastindexof-prototype-trap.js b/implementation-contributed/javascriptcore/stress/array-lastindexof-prototype-trap.js deleted file mode 100644 index ee5edcb04fd..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-lastindexof-prototype-trap.js +++ /dev/null @@ -1,48 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -class DerivedArray extends Array { - get 2() { - this.called = true; - return 42; - } -} - -{ - let array = []; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [20, 20]; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = [42.195]; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} -{ - let array = ["Hello"]; - array.__proto__ = DerivedArray.prototype; - array.length = 42; - ensureArrayStorage(array); - shouldBe(array.lastIndexOf(42), 2); - shouldBe(array.called, true); -} diff --git a/implementation-contributed/javascriptcore/stress/array-prototype-concat-of-long-spliced-arrays.js b/implementation-contributed/javascriptcore/stress/array-prototype-concat-of-long-spliced-arrays.js deleted file mode 100644 index 9f889923b46..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-prototype-concat-of-long-spliced-arrays.js +++ /dev/null @@ -1,36 +0,0 @@ -function shouldEqual(actual, expected) { - if (actual != expected) { - throw "ERROR: expect " + expected + ", actual " + actual; - } -} - -function test() { - var exception; - try { - var a = []; - a.length = 0x1fff00; - - var b = a.splice(0, 0x100000); // Undecided array - - var args = []; - args.length = 4094; - args.fill(b); - - var q = []; - q.length = 0x1000; - q.fill(7); - - var c = a.splice(0, 0xfffef); //Shorter undecided array - - args[4094] = c; - args[4095] = q; - - b.concat.apply(b, args); - } catch (e) { - exception = e; - } - - shouldEqual(exception, "RangeError: Length exceeded the maximum array length"); -} - -test(); diff --git a/implementation-contributed/javascriptcore/stress/array-prototype-concat-of-long-spliced-arrays2.js b/implementation-contributed/javascriptcore/stress/array-prototype-concat-of-long-spliced-arrays2.js deleted file mode 100644 index 425baabd345..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-prototype-concat-of-long-spliced-arrays2.js +++ /dev/null @@ -1,26 +0,0 @@ -function shouldEqual(actual, expected) { - if (actual != expected) { - throw "ERROR: expect " + expected + ", actual " + actual; - } -} - -function test() { - var exception; - try { - var a = []; - a.length = 0x1fff00; - - var b = a.splice(0, 0x100000); // Undecided array - - var args = []; - args.length = 4096; - args.fill(b); - - b.concat.apply(b, args); - } catch (e) { - exception = e; - } - shouldEqual(exception, "RangeError: Length exceeded the maximum array length"); -} - -test(); diff --git a/implementation-contributed/javascriptcore/stress/array-push-multiple-int32.js b/implementation-contributed/javascriptcore/stress/array-push-multiple-int32.js deleted file mode 100644 index f4164d8989d..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-push-multiple-int32.js +++ /dev/null @@ -1,26 +0,0 @@ -//@ skip if $architecture == "x86" - -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(array, val1, val2, val3) -{ - return array.push(val1, val2, val3); -} -noInline(test); - -for (var i = 0; i < 1e7; ++i) { - var array = []; - shouldBe(test(array, 1, 2, 3), 3); - shouldBe(array[0], 1); - shouldBe(array[1], 2); - shouldBe(array[2], 3); -} -var array = []; -shouldBe(test(array, 1, 2, 3.3), 3); -shouldBe(array[0], 1); -shouldBe(array[1], 2); -shouldBe(array[2], 3.3); diff --git a/implementation-contributed/javascriptcore/stress/array-species-create-should-handle-masquerader.js b/implementation-contributed/javascriptcore/stress/array-species-create-should-handle-masquerader.js deleted file mode 100644 index 6caaccf9dce..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-species-create-should-handle-masquerader.js +++ /dev/null @@ -1,21 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -for (var i = 0; i < 1e5; ++i) { - shouldThrow(() => { - new (class extends Array { static get [Symbol.species]() { return makeMasquerader(); } })(1, 2, 3).flat().constructor - }, `TypeError: Masquerader is not a constructor`); -} diff --git a/implementation-contributed/javascriptcore/stress/array-unshift-should-not-race-against-compiler-thread.js b/implementation-contributed/javascriptcore/stress/array-unshift-should-not-race-against-compiler-thread.js deleted file mode 100644 index a0d82e1ad8d..00000000000 --- a/implementation-contributed/javascriptcore/stress/array-unshift-should-not-race-against-compiler-thread.js +++ /dev/null @@ -1,7 +0,0 @@ -let x = []; -for (let i = 0; i < 30; ++i) { - for (let j = 0; j < 20000; ++j) { - x[0] - x.unshift(undefined); - } -} diff --git a/implementation-contributed/javascriptcore/stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js b/implementation-contributed/javascriptcore/stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js deleted file mode 100644 index 905073e998f..00000000000 --- a/implementation-contributed/javascriptcore/stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js +++ /dev/null @@ -1,48 +0,0 @@ -//@ skip if $architecture == "x86" - -"use strict"; - -var n = 1000000; - -function shouldThrowTDZ(func) { - var hasThrown = false; - try { - func(); - } catch(e) { - if (e.name.indexOf("ReferenceError") !== -1) - hasThrown = true; - } - if (!hasThrown) - throw new Error("Did not throw TDZ error"); -} - -function bar(f) { } - -function foo(b) { - let result = 0; - var set = (x) => { result = x; return tdzPerpetrator; } - if (b) { - OSRExit(); - if (b) { - bar(set); - return tdzPerpetrator; - } - } - let tdzPerpetrator; - return result; -} - -noInline(bar); -noInline(foo); -noInline(shouldThrowTDZ); - -for (var i = 0; i < n; i++) { - var bool = !(i % 100); - if (bool) - shouldThrowTDZ(()=> { foo(bool); }); - else { - var result = foo(bool); - if (result != 0) - throw "Error: bad result: " + result; - } -} diff --git a/implementation-contributed/javascriptcore/stress/arrowfunction-lexical-this-activation-sink-osrexit.js b/implementation-contributed/javascriptcore/stress/arrowfunction-lexical-this-activation-sink-osrexit.js deleted file mode 100644 index d7a322e4bf4..00000000000 --- a/implementation-contributed/javascriptcore/stress/arrowfunction-lexical-this-activation-sink-osrexit.js +++ /dev/null @@ -1,36 +0,0 @@ -//@ skip if $architecture == "x86" - -var n = 10000000; - -var newContext = { - id : 'new-context' -}; - -function bar() { } - -function foo(b) { - var result = 0; - var set = (x) => { - // Check if arrow function store context - if (this != newContext || this.id != newContext.id) - throw 'Wrong context of arrow function'; - result = x; - } - if (b) { - OSRExit(); - if (b) { - bar(set); - } - return result; - } - return result; -} - -noInline(bar); -noInline(foo); - -for (var i = 0; i < n; i++) { - var result = foo.call(newContext, !(i % 100)); - if (result != 0) - throw "Error: bad result: " + result; -} diff --git a/implementation-contributed/javascriptcore/stress/arrowfunction-lexical-this-activation-sink.js b/implementation-contributed/javascriptcore/stress/arrowfunction-lexical-this-activation-sink.js deleted file mode 100644 index 92655f4faf9..00000000000 --- a/implementation-contributed/javascriptcore/stress/arrowfunction-lexical-this-activation-sink.js +++ /dev/null @@ -1,40 +0,0 @@ -//@ skip if $architecture == "x86" - -var n = 10000000; - -var newContext = { - id : 'new-context' -}; - -function bar(f) { - if (this == newContext) - throw 'Wrong context of nesting function'; - f(10); -} - -function foo(b) { - var result = 0; - var set = (x) => { - result = x; - // Check if arrow function store context - if (this != newContext || this.id != newContext.id) - throw 'Wrong context of arrow function'; - }; - - if (b) { - bar(set); - if (result != 10) - throw "Error: bad: " + result; - return 0; - } - return result; -} - -noInline(bar); -noInline(foo); - -for (var i = 0; i < n; i++) { - var result = foo.call(newContext, !(i % 100)); - if (result != 0) - throw "Error: bad result: " + result; -} diff --git a/implementation-contributed/javascriptcore/stress/assignment-in-function-call-bracket-node.js b/implementation-contributed/javascriptcore/stress/assignment-in-function-call-bracket-node.js deleted file mode 100644 index a1d73e8fc8d..00000000000 --- a/implementation-contributed/javascriptcore/stress/assignment-in-function-call-bracket-node.js +++ /dev/null @@ -1,127 +0,0 @@ -// Reviewed -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -// Simple assignment (not FunctionCallBracketNode). - -shouldBe(function () { - var object = { - null: 'ok' - }; - - return object[object = null]; -}(), 'ok'); - -shouldBe(function (value) { - var object = { }; - object.null = 'ok'; - - return object[object = value]; -}(null), 'ok'); - -shouldBe(function () { - var object = { - null: 'ok' - }; - - return object['null']; -}(), 'ok'); - -shouldBe(function (value) { - var object = { }; - object.null = 'ok'; - - return object['null']; -}(null), 'ok'); - -shouldBe(function () { - var object = { - null: 'ok' - }; - - function fill() { - return object = null; - } - - return object[fill()]; -}(), 'ok'); - -shouldBe(function (value) { - var object = { }; - object.null = 'ok'; - - function fill() { - return object = value; - } - - return object[fill()]; -}(null), 'ok'); - -// FunctionCallBracketNode. - -shouldBe(function () { - var object = { - null: function () { - return 'ok'; - } - }; - - return object[object = null](); -}(), 'ok'); - -shouldBe(function (value) { - var object = { }; - object.null = function () { - return 'ok'; - }; - - return object[object = value](); -}(null), 'ok'); - -shouldBe(function () { - var object = { - null: function () { - return 'ok'; - } - }; - - return object['null'](); -}(), 'ok'); - -shouldBe(function (value) { - var object = { }; - object.null = function () { - return 'ok'; - }; - - return object['null'](); -}(null), 'ok'); - -shouldBe(function () { - var object = { - null: function () { - return 'ok'; - } - }; - - function fill() { - return object = null; - } - - return object[fill()](); -}(), 'ok'); - -shouldBe(function (value) { - var object = { }; - object.null = function () { - return 'ok'; - }; - - function fill() { - return object = value; - } - - return object[fill()](); -}(null), 'ok'); diff --git a/implementation-contributed/javascriptcore/stress/async-arrow-function-in-class-heritage.js b/implementation-contributed/javascriptcore/stress/async-arrow-function-in-class-heritage.js deleted file mode 100644 index 3746dd1c52d..00000000000 --- a/implementation-contributed/javascriptcore/stress/async-arrow-function-in-class-heritage.js +++ /dev/null @@ -1,31 +0,0 @@ -// Reviewed -/** - * reviewed - * Tests class heritage failing with arrow functions (no constructor). Might have coverage, not found yet. - */ - -function testSyntax(script) { - try { - eval(script); - } catch (error) { - if (error instanceof SyntaxError) - throw new Error("Bad error: " + String(error)); - } -} - -function testSyntaxError(script, message) { - var error = null; - try { - eval(script); - } catch (e) { - error = e; - } - if (!error) - throw new Error("Expected syntax error not thrown"); - - if (String(error) !== message) - throw new Error("Bad error: " + String(error)); -} - -testSyntaxError(`void class extends async()=>{} {}`, `SyntaxError: Unexpected token '=>'`); -testSyntaxError(`void class extends (async()=>{}) {}`, `TypeError: The value of the superclass's prototype property is not an object.`); diff --git a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-arguments-binding.js b/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-arguments-binding.js deleted file mode 100644 index 4b79cd0915a..00000000000 --- a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-arguments-binding.js +++ /dev/null @@ -1,51 +0,0 @@ -// Reviewed -function shouldBe(expected, actual, msg) { - if (msg === void 0) - msg = ""; - else - msg = " for " + msg; - if (actual !== expected) - throw new Error("bad value" + msg + ": " + actual + ". Expected " + expected); -} - -function shouldBeAsync(expected, run, msg) { - let actual; - var hadError = false; - run().then(function(value) { actual = value; }, - function(error) { hadError = true; actual = error; }); - drainMicrotasks(); - - if (hadError) - throw actual; - - shouldBe(expected, actual, msg); -} - -function shouldThrowAsync(run, errorType, message) { - let actual; - var hadError = false; - run().then(function(value) { actual = value; }, - function(error) { hadError = true; actual = error; }); - drainMicrotasks(); - - if (!hadError) - throw new Error("Expected " + run + "() to throw " + errorType.name + ", but did not throw."); - if (!(actual instanceof errorType)) - throw new Error("Expected " + run + "() to throw " + errorType.name + ", but threw '" + actual + "'"); - if (message !== void 0 && actual.message !== message) - throw new Error("Expected " + run + "() to throw '" + message + "', but threw '" + actual.message + "'"); -} - -var noArgumentsArrow = async () => await [...arguments]; -shouldThrowAsync(() => noArgumentsArrow(1, 2, 3), ReferenceError); -var noArgumentsArrow2 = async () => { return await [...arguments]; } -shouldThrowAsync(() => noArgumentsArrow2(1, 2, 3), ReferenceError); - -shouldBeAsync("[1,2,3]", () => (function() { return (async () => JSON.stringify([...arguments]))(); })(1, 2, 3)); -shouldBeAsync("[4,5,6]", () => (function() { return (async () => { return JSON.stringify([...await arguments]) })(); })(4, 5, 6)); - -(function testArgumentsBinding() { - var argsBinding; - var promise = (function() { argsBinding = arguments; return (async() => arguments)() })(1, 2, 3); - shouldBeAsync(argsBinding, () => promise); -})(); diff --git a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-binding-in-class.js b/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-binding-in-class.js deleted file mode 100644 index cf948ebb468..00000000000 --- a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-binding-in-class.js +++ /dev/null @@ -1,265 +0,0 @@ -// Reviewed -function shouldBe(expected, actual, msg) { - if (msg === void 0) - msg = ""; - else - msg = " for " + msg; - if (actual !== expected) - throw new Error("bad value" + msg + ": " + actual + ". Expected " + expected); -} - -function shouldBeAsync(expected, run) { - let actual; - var hadError = false; - run().then(function(value) { actual = value; }, - function(error) { hadError = true; actual = error; }); - drainMicrotasks(); - - if (hadError) - throw actual; - - shouldBe(expected, actual); -} - -class BaseWrongClass { - baseClassValue() { - return "wrong #1"; - } - get property() { - return "wrong #2"; - } -} - -function shouldBeAsyncAndStoreBind(expected, run) { - shouldBeAsync(expected, run); - shouldBeAsync(expected, run.bind({})); - shouldBeAsync(expected, run.bind(1)); - shouldBeAsync(expected, run.bind(undefined)); - const obj = { - property : 'wrong value #1', - baseClassValue : () => 'worng value #2' - }; - shouldBeAsync(expected, run.bind(obj)); - shouldBeAsync(expected, run.bind(new BaseWrongClass())); -} - -class BaseClass { - baseClassValue() { - return "BaseClassValue"; - } - get property() { - return "test!"; - } -} - -function runSomething(callback) { - callback(); -} - -class ChildClass extends BaseClass { - classValue() { - return "classValue"; - } - get classProperty() { - return "classProperty"; - } - asyncValueExp() { - return async x => 'value'; - } - asyncValueBody() { - return async x => { return 'value'; }; - } - asyncThisPropExp() { - return async x => this.classProperty; - } - asyncThisPropBody() { - return async x => { return this.classProperty; }; - } - asyncThisPropWithAwaitBody() { - return async x => { - var self = this.classProperty; - self = await 'abc'; - return this.classProperty; - }; - } - asyncThisPropInEvalExp() { - return async x => eval('this.classProperty'); - } - asyncThisPropInEvalBody() { - return async x => { return eval('this.classProperty'); }; - } - asyncThisPropInEvalWithAwaitBody() { - return async x => { - var self = eval('this.classProperty'); - await 'abc'; - return eval('this.classProperty'); - }; - } - asyncThisValueExp() { - return async x => this.classValue(); - } - asyncThisValueBody() { - return async x => { return this.classValue(); }; - } - asyncThisValueBodyWithAwait() { - return async x => { - var self = this.classValue(); - await 'self'; - return this.classValue(); - }; - } - asyncThisValueInEvalExp() { - return async x => eval('this.classValue()'); - } - asyncThisValueInEvalBody() { - return async x => { return eval('this.classValue()'); }; - } - asyncThisValueInEvalWithAwaitBody() { - return async x => { - var self = eval('this.classValue()'); - await 'self'; - return eval('this.classValue()'); - }; - } -} - -shouldBeAsyncAndStoreBind("value", new ChildClass().asyncValueExp()); -shouldBeAsyncAndStoreBind("value", new ChildClass().asyncValueBody()); - -shouldBeAsyncAndStoreBind("classProperty", new ChildClass().asyncThisPropExp()); -shouldBeAsyncAndStoreBind("classProperty", new ChildClass().asyncThisPropBody()); -shouldBeAsyncAndStoreBind("classProperty", new ChildClass().asyncThisPropWithAwaitBody()); -shouldBeAsyncAndStoreBind("classProperty", new ChildClass().asyncThisPropWithAwaitBody()); - -shouldBeAsyncAndStoreBind("classProperty", new ChildClass().asyncThisPropInEvalExp()); -shouldBeAsyncAndStoreBind("classProperty", new ChildClass().asyncThisPropInEvalBody()); -shouldBeAsyncAndStoreBind("classProperty", new ChildClass().asyncThisPropInEvalWithAwaitBody()); - -shouldBeAsyncAndStoreBind("classValue", new ChildClass().asyncThisValueExp()); -shouldBeAsyncAndStoreBind("classValue", new ChildClass().asyncThisValueBody()); -shouldBeAsyncAndStoreBind("classValue", new ChildClass().asyncThisValueBodyWithAwait()); - -shouldBeAsyncAndStoreBind("classValue", new ChildClass().asyncThisValueInEvalExp()); -shouldBeAsyncAndStoreBind("classValue", new ChildClass().asyncThisValueInEvalBody()); -shouldBeAsyncAndStoreBind("classValue", new ChildClass().asyncThisValueInEvalWithAwaitBody()); - -class ChildClass2 extends BaseClass { - constructor() { - super(); - this.value = 'internalValue'; - return async () => this.classValue() + ' ' + this.classProperty; - } - classStaticValue() { - return "classStaticValue"; - } - classValue() { - return this.value; - } - get classProperty() { - return "classProperty"; - } -} - -shouldBeAsyncAndStoreBind("internalValue classProperty", new ChildClass2()); - -class ChildClass3 extends BaseClass { - constructor() { - super(); - this.internalValue = 'internalValue'; - return async () => { - var self = this.classValue() + ' ' + this.classProperty; - await 'self'; - return this.classValue() + ' ' + this.classProperty; - } - } - classValue() { - return "classValue"; - } - get classProperty() { - return "classProperty"; - } -} - -shouldBeAsyncAndStoreBind("classValue classProperty", new ChildClass3()); - -var promiseHolder = {}; -var promise = new Promise((resolve, reject) => { - promiseHolder.resolve = resolve; - promiseHolder.reject = reject; -}); - -class ChildClass4 extends BaseClass { - constructor() { - var arr = async () => { - var doSomeStaff = () => {}; - doSomeStaff(); - await promise; - return this.classValue() + ' ' + this.classProperty; - }; - arr(); - super(); - this.internalValue = 'internalValue'; - return async () => { - await 'await'; - promiseHolder.resolve(); - return this.classValue() + ' ' + this.classProperty;; - }; - } - classValue() { - return "classValue"; - } - get classProperty() { - return "classProperty"; - } -} - -shouldBeAsyncAndStoreBind("classValue classProperty", new ChildClass4()); - -class ChildClass5 extends BaseClass { - constructor(result) { - const arr = async () => this.id; - arr().then(()=>{}, e => { result.error = e; }); - } -} - -class ChildClass6 extends BaseClass { - constructor(result) { - const arr = async () => { - let z = this.id; - }; - arr().then(()=>{}, e => { result.error = e; }); - super(); - } -} - -class ChildClass7 extends BaseClass { - constructor(result) { - const arr = async () => this.id; - arr().then(()=>{}, e => { result.error = e; }); - super(); - } -} - -class ChildClass8 extends BaseClass { - constructor(result) { - const arr = async () => { let i = this.id; super(); }; - arr().then(()=>{}, e => { result.error = e; }); - } -} - -function checkTDZDuringCreate(klass) { - let asyncError = {}; - try { - var c = new klass(asyncError); - } catch(e) { - // We do not care about this error - } - drainMicrotasks(); - const error = asyncError.error instanceof ReferenceError && asyncError.error.toString() === 'ReferenceError: Cannot access uninitialized variable.'; - if (!error) throw new Error('TDZ error is expected, but appeared:' + asyncError.error); -} - -checkTDZDuringCreate(ChildClass5); -checkTDZDuringCreate(ChildClass6); -checkTDZDuringCreate(ChildClass7); -checkTDZDuringCreate(ChildClass8); diff --git a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-new.target-binding.js b/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-new.target-binding.js deleted file mode 100644 index 699a0e0773d..00000000000 --- a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-new.target-binding.js +++ /dev/null @@ -1,44 +0,0 @@ -// Reviewed -function shouldBe(expected, actual, msg) { - if (msg === void 0) - msg = ""; - else - msg = " for " + msg; - if (actual !== expected) - throw new Error("bad value" + msg + ": " + actual + ". Expected " + expected); -} - -function shouldBeAsync(expected, run, msg) { - let actual; - var hadError = false; - run().then(function(value) { actual = value; }, - function(error) { hadError = true; actual = error; }); - drainMicrotasks(); - - if (hadError) - throw actual; - - shouldBe(expected, actual, msg); -} - -function C1() { - return async () => await new.target; -} - -function C2() { - return async () => { return await new.target }; -} - -function C2WithAwait() { - return async () => { - var self = new.target; await new.target; - return new.target; - } -} - -shouldBeAsync(C1, new C1()); -shouldBeAsync(undefined, C1()); -shouldBeAsync(C2, new C2()); -shouldBeAsync(undefined, C2()); -shouldBeAsync(C2WithAwait, new C2WithAwait()); -shouldBeAsync(undefined, C2WithAwait()); diff --git a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-super-binding.js b/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-super-binding.js deleted file mode 100644 index ab91affee7a..00000000000 --- a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-super-binding.js +++ /dev/null @@ -1,207 +0,0 @@ -// Reviewed -function shouldBe(expected, actual, msg) { - if (msg === void 0) - msg = ""; - else - msg = " for " + msg; - if (actual !== expected) - throw new Error("bad value" + msg + ": " + actual + ". Expected " + expected); -} - -function shouldBeAsync(expected, run, msg) { - let actual; - var hadError = false; - run().then(function(value) { actual = value; }, - function(error) { hadError = true; actual = error; }); - drainMicrotasks(); - - if (hadError) - throw actual; - - shouldBe(expected, actual, msg); -} - -class BaseClass { - baseClassValue() { - return "BaseClassValue"; - } - get property() { - return "test!"; - } -} - -class ChildClass extends BaseClass { - asyncSuperProp() { - return async x => super.baseClassValue(); - } - asyncSuperProp2() { - return async x => { return super.baseClassValue(); } - } -} - -shouldBeAsync("BaseClassValue", new ChildClass().asyncSuperProp()); -shouldBeAsync("BaseClassValue", new ChildClass().asyncSuperProp2()); - -class ChildClass2 extends BaseClass { - constructor() { - return async (self = super()) => self.baseClassValue() + ' ' + super.property; - } -} - -shouldBeAsync("BaseClassValue test!", new ChildClass2()); - -var error = undefined; -var value = undefined; - -class A { - constructor() { - this._id = 'class-id'; - } -} - -const childA1 = new class extends A { - constructor() { - var f = async (a=super()) => { return 'abc'; } - f().then( val => {value = val; }, err => { error = err;}); - } -} - -drainMicrotasks(); - -shouldBe(childA1._id, 'class-id'); -shouldBe(value, 'abc'); -shouldBe(error, undefined); - -value = undefined; -error = undefined; - -const childA2 = new class extends A { - constructor() { - var f = async (a) => { super(); return 'abc'; } - f().then( val => {value = val; }, err => { error = err;}); - } -} - -drainMicrotasks(); - -shouldBe(childA2._id, 'class-id'); -shouldBe(value, 'abc'); -shouldBe(error, undefined); - -value = undefined; -error = undefined; - -const childA3 = new class extends A { - constructor() { - var f = async (a = super()) => { super(); return 'abc'; } - f().then( val => {value = val; }, err => { error = err;}); - } -} - -drainMicrotasks(); - -shouldBe(childA3._id, 'class-id'); -shouldBe(value, undefined); -shouldBe(error.toString(), 'ReferenceError: \'super()\' can\'t be called more than once in a constructor.'); - - -let childA4; -let catchError; -error = undefined; -try { - childA4 = new class extends A { - constructor() { - var f = async (a) => { await 'await value'; super(); return 'abc'; } - f().then(val => { value = val; }, err => { error = err; }); - } - } -} catch (err) { - catchError = err; -} - -drainMicrotasks(); - -shouldBe(childA4, undefined); -shouldBe(value, 'abc'); -shouldBe(error, undefined); -shouldBe(catchError.toString(), 'ReferenceError: Cannot access uninitialized variable.'); - -catchError = undefined; -error = undefined; -value = undefined; - -const childA5 = new class extends A { - constructor() { - var f = async (a) => { super(); await 'await value'; return 'abc'; } - f().then(val => { value = val; }, err => { error = err; }); - } -} - -drainMicrotasks(); - -shouldBe(childA5._id, 'class-id'); -shouldBe(value, 'abc'); -shouldBe(error, undefined); -shouldBe(catchError, undefined); - -function checkClass(classSource) { - let base1 = undefined; - let error = undefined; - let value = undefined; - let catchError = undefined; - try { - base1 = eval(classSource); - - drainMicrotasks(); - } catch (err) { - catchError = err; - } - - shouldBe(base1, undefined); - shouldBe(value, undefined); - shouldBe(error, undefined); - shouldBe(catchError.toString(), 'SyntaxError: super is not valid in this context.'); -} - -checkClass(`new class { - constructor() { - var f = async (a) => { super(); return 'abc'; } - f().then(val => { value = val; }, err => { error = err; }); - } -}`); - -checkClass(`new class { - constructor() { - var f = async (a) => { await 'p'; super(); return 'abc'; } - f().then(val => { value = val; }, err => { error = err; }); - } -}`); - -checkClass(`new class { - constructor() { - var f = async (a) => { super(); await 'p'; return 'abc'; } - f().then(val => { value = val; }, err => { error = err; }); - } -}`); - - -checkClass(`new class extends A { - method() { - var f = async (a) => { super(); return 'abc'; } - f().then(val => { value = val; }, err => { error = err; }); - } -}`); - -checkClass(`new class extends A { - get prop() { - var f = async (a) => { super(); return 'abc'; } - f().then(val => { value = val; }, err => { error = err; }); - } -}`); - -checkClass(`new class extends A { - set prop(_value) { - var f = async (a) => { super(); return 'abc'; } - f().then(val => { value = val; }, err => { error = err; }); - } -}`); \ No newline at end of file diff --git a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-this-binding.js b/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-this-binding.js deleted file mode 100644 index 8d5b758abb9..00000000000 --- a/implementation-contributed/javascriptcore/stress/async-arrow-functions-lexical-this-binding.js +++ /dev/null @@ -1,28 +0,0 @@ -// Reviewed -function shouldBe(expected, actual, msg) { - if (msg === void 0) - msg = ""; - else - msg = " for " + msg; - if (actual !== expected) - throw new Error("bad value" + msg + ": " + actual + ". Expected " + expected); -} - -function shouldBeAsync(expected, run, msg) { - let actual; - var hadError = false; - run().then(function(value) { actual = value; }, - function(error) { hadError = true; actual = error; }); - drainMicrotasks(); - - if (hadError) - throw actual; - - shouldBe(expected, actual, msg); -} - -var d = ({ x : "bar", y : function() { return async z => this.x + z; }}).y(); -var e = { x : "baz", y : d }; - -shouldBeAsync("barley", () => d("ley")); -shouldBeAsync("barley", () => e.y("ley")); diff --git a/implementation-contributed/javascriptcore/stress/availability-was-cleared-when-locals-are-not-live.js b/implementation-contributed/javascriptcore/stress/availability-was-cleared-when-locals-are-not-live.js deleted file mode 100644 index f9558ed1719..00000000000 --- a/implementation-contributed/javascriptcore/stress/availability-was-cleared-when-locals-are-not-live.js +++ /dev/null @@ -1,37 +0,0 @@ -//@ runDefault("--jitPolicyScale=0", "--useConcurrentJIT=false") -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} -noInline(shouldBe); - -var a; - -function foo(x, y, z) { - baz(a); - 0 + (x ? a : [] + 0); - return y; -} - -function bar() { - return foo.apply(null, arguments); -} - -function baz(p) { - if (p) { - return bar(1, 1, 0); - } -} - -baz(1); - -for (let i = 0; i < 1; i++) { - foo(1); -} - -for (let i = 0; i < 10000; i++) { - baz(); -} - -let hello = baz(1); -shouldBe(hello, 1); diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-general.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-general.js deleted file mode 100644 index 56e798e5006..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-general.js +++ /dev/null @@ -1,97 +0,0 @@ -//@ runBigIntEnabled - -// Copyright (C) 2017 Josh Wolfe. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -assert.sameValue = function (input, expected, message) { - if (input !== expected) - throw new Error(message); -} - -assert.sameValue(0b00n & 0b00n, 0b00n, "0b00n & 0b00n === 0b00n"); -assert.sameValue(0b00n & 0b01n, 0b00n, "0b00n & 0b01n === 0b00n"); -assert.sameValue(0b01n & 0b00n, 0b00n, "0b01n & 0b00n === 0b00n"); -assert.sameValue(0b00n & 0b10n, 0b00n, "0b00n & 0b10n === 0b00n"); -assert.sameValue(0b10n & 0b00n, 0b00n, "0b10n & 0b00n === 0b00n"); -assert.sameValue(0b00n & 0b11n, 0b00n, "0b00n & 0b11n === 0b00n"); -assert.sameValue(0b11n & 0b00n, 0b00n, "0b11n & 0b00n === 0b00n"); -assert.sameValue(0b01n & 0b01n, 0b01n, "0b01n & 0b01n === 0b01n"); -assert.sameValue(0b01n & 0b10n, 0b00n, "0b01n & 0b10n === 0b00n"); -assert.sameValue(0b10n & 0b01n, 0b00n, "0b10n & 0b01n === 0b00n"); -assert.sameValue(0b01n & 0b11n, 0b01n, "0b01n & 0b11n === 0b01n"); -assert.sameValue(0b11n & 0b01n, 0b01n, "0b11n & 0b01n === 0b01n"); -assert.sameValue(0b10n & 0b10n, 0b10n, "0b10n & 0b10n === 0b10n"); -assert.sameValue(0b10n & 0b11n, 0b10n, "0b10n & 0b11n === 0b10n"); -assert.sameValue(0b11n & 0b10n, 0b10n, "0b11n & 0b10n === 0b10n"); -assert.sameValue(0xffffffffn & 0n, 0n, "0xffffffffn & 0n === 0n"); -assert.sameValue(0n & 0xffffffffn, 0n, "0n & 0xffffffffn === 0n"); -assert.sameValue(0xffffffffn & 0xffffffffn, 0xffffffffn, "0xffffffffn & 0xffffffffn === 0xffffffffn"); -assert.sameValue(0xffffffffffffffffn & 0n, 0n, "0xffffffffffffffffn & 0n === 0n"); -assert.sameValue(0n & 0xffffffffffffffffn, 0n, "0n & 0xffffffffffffffffn === 0n"); -assert.sameValue(0xffffffffffffffffn & 0xffffffffn, 0xffffffffn, "0xffffffffffffffffn & 0xffffffffn === 0xffffffffn"); -assert.sameValue(0xffffffffn & 0xffffffffffffffffn, 0xffffffffn, "0xffffffffn & 0xffffffffffffffffn === 0xffffffffn"); -assert.sameValue( - 0xffffffffffffffffn & 0xffffffffffffffffn, 0xffffffffffffffffn, - "0xffffffffffffffffn & 0xffffffffffffffffn === 0xffffffffffffffffn"); -assert.sameValue( - 0xbf2ed51ff75d380fd3be813ec6185780n & 0x4aabef2324cedff5387f1f65n, 0x42092803008e813400181700n, - "0xbf2ed51ff75d380fd3be813ec6185780n & 0x4aabef2324cedff5387f1f65n === 0x42092803008e813400181700n"); -assert.sameValue( - 0x4aabef2324cedff5387f1f65n & 0xbf2ed51ff75d380fd3be813ec6185780n, 0x42092803008e813400181700n, - "0x4aabef2324cedff5387f1f65n & 0xbf2ed51ff75d380fd3be813ec6185780n === 0x42092803008e813400181700n"); -assert.sameValue(0n & -1n, 0n, "0n & -1n === 0n"); -assert.sameValue(-1n & 0n, 0n, "-1n & 0n === 0n"); -assert.sameValue(0n & -2n, 0n, "0n & -2n === 0n"); -assert.sameValue(-2n & 0n, 0n, "-2n & 0n === 0n"); -assert.sameValue(1n & -2n, 0n, "1n & -2n === 0n"); -assert.sameValue(-2n & 1n, 0n, "-2n & 1n === 0n"); -assert.sameValue(2n & -2n, 2n, "2n & -2n === 2n"); -assert.sameValue(-2n & 2n, 2n, "-2n & 2n === 2n"); -assert.sameValue(2n & -3n, 0n, "2n & -3n === 0n"); -assert.sameValue(-3n & 2n, 0n, "-3n & 2n === 0n"); -assert.sameValue(-1n & -2n, -2n, "-1n & -2n === -2n"); -assert.sameValue(-2n & -1n, -2n, "-2n & -1n === -2n"); -assert.sameValue(-2n & -2n, -2n, "-2n & -2n === -2n"); -assert.sameValue(-2n & -3n, -4n, "-2n & -3n === -4n"); -assert.sameValue(-3n & -2n, -4n, "-3n & -2n === -4n"); -assert.sameValue(0xffffffffn & -1n, 0xffffffffn, "0xffffffffn & -1n === 0xffffffffn"); -assert.sameValue(-1n & 0xffffffffn, 0xffffffffn, "-1n & 0xffffffffn === 0xffffffffn"); -assert.sameValue(0xffffffffffffffffn & -1n, 0xffffffffffffffffn, "0xffffffffffffffffn & -1n === 0xffffffffffffffffn"); -assert.sameValue(-1n & 0xffffffffffffffffn, 0xffffffffffffffffn, "-1n & 0xffffffffffffffffn === 0xffffffffffffffffn"); -assert.sameValue( - 0xbf2ed51ff75d380fd3be813ec6185780n & -0x4aabef2324cedff5387f1f65n, 0xbf2ed51fb554100cd330000ac6004080n, - "0xbf2ed51ff75d380fd3be813ec6185780n & -0x4aabef2324cedff5387f1f65n === 0xbf2ed51fb554100cd330000ac6004080n"); -assert.sameValue( - -0x4aabef2324cedff5387f1f65n & 0xbf2ed51ff75d380fd3be813ec6185780n, 0xbf2ed51fb554100cd330000ac6004080n, - "-0x4aabef2324cedff5387f1f65n & 0xbf2ed51ff75d380fd3be813ec6185780n === 0xbf2ed51fb554100cd330000ac6004080n"); -assert.sameValue( - -0xbf2ed51ff75d380fd3be813ec6185780n & 0x4aabef2324cedff5387f1f65n, 0x8a2c72024405ec138670800n, - "-0xbf2ed51ff75d380fd3be813ec6185780n & 0x4aabef2324cedff5387f1f65n === 0x8a2c72024405ec138670800n"); -assert.sameValue( - 0x4aabef2324cedff5387f1f65n & -0xbf2ed51ff75d380fd3be813ec6185780n, 0x8a2c72024405ec138670800n, - "0x4aabef2324cedff5387f1f65n & -0xbf2ed51ff75d380fd3be813ec6185780n === 0x8a2c72024405ec138670800n"); -assert.sameValue( - -0xbf2ed51ff75d380fd3be813ec6185780n & -0x4aabef2324cedff5387f1f65n, -0xbf2ed51fffffff2ff7fedffffe7f5f80n, - "-0xbf2ed51ff75d380fd3be813ec6185780n & -0x4aabef2324cedff5387f1f65n === -0xbf2ed51fffffff2ff7fedffffe7f5f80n"); -assert.sameValue( - -0x4aabef2324cedff5387f1f65n & -0xbf2ed51ff75d380fd3be813ec6185780n, -0xbf2ed51fffffff2ff7fedffffe7f5f80n, - "-0x4aabef2324cedff5387f1f65n & -0xbf2ed51ff75d380fd3be813ec6185780n === -0xbf2ed51fffffff2ff7fedffffe7f5f80n"); -assert.sameValue(-0xffffffffn & 0n, 0n, "-0xffffffffn & 0n === 0n"); -assert.sameValue(0n & -0xffffffffn, 0n, "0n & -0xffffffffn === 0n"); -assert.sameValue( - -0xffffffffffffffffn & 0x10000000000000000n, 0x10000000000000000n, - "-0xffffffffffffffffn & 0x10000000000000000n === 0x10000000000000000n"); -assert.sameValue( - 0x10000000000000000n & -0xffffffffffffffffn, 0x10000000000000000n, - "0x10000000000000000n & -0xffffffffffffffffn === 0x10000000000000000n"); -assert.sameValue( - -0xffffffffffffffffffffffffn & 0x10000000000000000n, 0n, - "-0xffffffffffffffffffffffffn & 0x10000000000000000n === 0n"); -assert.sameValue( - 0x10000000000000000n & -0xffffffffffffffffffffffffn, 0n, - "0x10000000000000000n & -0xffffffffffffffffffffffffn === 0n"); diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-jit.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-jit.js deleted file mode 100644 index 2d4472defd3..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-jit.js +++ /dev/null @@ -1,19 +0,0 @@ -//@ runBigIntEnabled - -let assert = { - sameValue: function(i, e, m) { - if (i !== e) - throw new Error(m); - } -} - -function bigIntBitAnd(a, b) { - return (a & b) & (a & 0b11n); -} -noInline(bigIntBitAnd); - -for (let i = 0; i < 10000; i++) { - let r = bigIntBitAnd(0b11n, 0b1010n); - assert.sameValue(r, 0b10n, 0b11n + " & " + 0b1010n + " = " + r); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-memory-stress.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-memory-stress.js deleted file mode 100644 index 61e7ae3b9c9..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-memory-stress.js +++ /dev/null @@ -1,14 +0,0 @@ -//@ runBigIntEnabled - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -let a = 0b11n; -for (let i = 0; i < 1000000; i++) { - a &= 0b01n; -} - -assert(a === 0b01n); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-to-primitive-precedence.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-to-primitive-precedence.js deleted file mode 100644 index bfa8e161fdf..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-to-primitive-precedence.js +++ /dev/null @@ -1,29 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -let o = { - [Symbol.toPrimitive]: function() { - throw new Error("Bad"); - } -}; - -try{ - o & Symbol("2"); - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e.message, "Bad", "Expected to throw Error('Bad'), but got: " + e); -} - -try{ - Symbol("2") & o; - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e instanceof TypeError, true, "Expected to throw TypeError, but got: " + e) -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-type-error.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-type-error.js deleted file mode 100644 index dcb7768bac7..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-type-error.js +++ /dev/null @@ -1,106 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, message) { - if (!a) - throw new Error(message); -} - -function assertThrowTypeError(a, b, message) { - try { - let n = a & b; - assert(false, message + ": Should throw TypeError, but executed without exception"); - } catch (e) { - assert(e instanceof TypeError, message + ": expected TypeError, got: " + e); - } -} - -assertThrowTypeError(30n, "foo", "BigInt & String"); -assertThrowTypeError("bar", 18757382984821n, "String & BigInt"); -assertThrowTypeError(30n, Symbol("foo"), "BigInt & Symbol"); -assertThrowTypeError(Symbol("bar"), 18757382984821n, "Symbol & BigInt"); -assertThrowTypeError(30n, 3320, "BigInt & Int32"); -assertThrowTypeError(33256, 18757382984821n, "Int32 & BigInt"); -assertThrowTypeError(30n, 0.543, "BigInt & Double"); -assertThrowTypeError(230.19293, 18757382984821n, "Double & BigInt"); -assertThrowTypeError(30n, NaN, "BigInt & NaN"); -assertThrowTypeError(NaN, 18757382984821n, "NaN & BigInt"); -assertThrowTypeError(30n, NaN, "BigInt & NaN"); -assertThrowTypeError(NaN, 18757382984821n, "NaN & BigInt"); -assertThrowTypeError(30n, +Infinity, "BigInt & NaN"); -assertThrowTypeError(+Infinity, 18757382984821n, "NaN & BigInt"); -assertThrowTypeError(30n, -Infinity, "BigInt & -Infinity"); -assertThrowTypeError(-Infinity, 18757382984821n, "-Infinity & BigInt"); -assertThrowTypeError(30n, null, "BigInt & null"); -assertThrowTypeError(null, 18757382984821n, "null & BigInt"); -assertThrowTypeError(30n, undefined, "BigInt & undefined"); -assertThrowTypeError(undefined, 18757382984821n, "undefined & BigInt"); -assertThrowTypeError(30n, true, "BigInt & true"); -assertThrowTypeError(true, 18757382984821n, "true & BigInt"); -assertThrowTypeError(30n, false, "BigInt & false"); -assertThrowTypeError(false, 18757382984821n, "false & BigInt"); - -// Error when returning from object - -let o = { - valueOf: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt & Object.valueOf returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Symbol & BigInt"); - -o = { - valueOf: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt & Object.valueOf returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Int32 & BigInt"); - -o = { - valueOf: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt & Object.valueOf returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Double & BigInt"); - -o = { - toString: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt & Object.toString returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Symbol & BigInt"); - -o = { - toString: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt & Object.toString returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Int32 & BigInt"); - -o = { - toString: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt & Object.toString returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Double & BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt & Object.@@toPrimitive returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Symbol & BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt & Object.@@toPrimitive returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Int32 & BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt & Object.@@toPrimitive returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Double & BigInt"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-wrapped-value.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-wrapped-value.js deleted file mode 100644 index c4377f41abd..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-and-wrapped-value.js +++ /dev/null @@ -1,37 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -function testBitAnd(x, y, z, message) { - assert.sameValue(x & y, z, message); - assert.sameValue(y & x, z, message); -} - -testBitAnd(Object(0b10n), 0b01n, 0b00n, "ToPrimitive: unbox object with internal slot"); - -let o = { - [Symbol.toPrimitive]: function() { - return 0b10n; - } -}; -testBitAnd(o, 0b01n, 0b00n, "ToPrimitive: @@toPrimitive"); - -o = { - valueOf: function() { - return 0b10n; - } -}; -testBitAnd(o, 0b01n, 0b00n, "ToPrimitive: valueOf"); - -o = { - toString: function() { - return 0b10n; - } -} -testBitAnd(o, 0b01n, 0b00n, "ToPrimitive: toString"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-general.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-general.js deleted file mode 100644 index 51c7173b76d..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-general.js +++ /dev/null @@ -1,98 +0,0 @@ -//@ runBigIntEnabled - -// Copyright (C) 2017 Josh Wolfe. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -assert.sameValue = function (input, expected, message) { - if (input !== expected) - throw new Error(message); -} - -assert.sameValue(0b00n | 0b00n, 0b00n, "0b00n | 0b00n === 0b00n"); -assert.sameValue(0b00n | 0b01n, 0b01n, "0b00n | 0b01n === 0b01n"); -assert.sameValue(0b01n | 0b00n, 0b01n, "0b01n | 0b00n === 0b01n"); -assert.sameValue(0b00n | 0b10n, 0b10n, "0b00n | 0b10n === 0b10n"); -assert.sameValue(0b10n | 0b00n, 0b10n, "0b10n | 0b00n === 0b10n"); -assert.sameValue(0b00n | 0b11n, 0b11n, "0b00n | 0b11n === 0b11n"); -assert.sameValue(0b11n | 0b00n, 0b11n, "0b11n | 0b00n === 0b11n"); -assert.sameValue(0b01n | 0b01n, 0b01n, "0b01n | 0b01n === 0b01n"); -assert.sameValue(0b01n | 0b10n, 0b11n, "0b01n | 0b10n === 0b11n"); -assert.sameValue(0b10n | 0b01n, 0b11n, "0b10n | 0b01n === 0b11n"); -assert.sameValue(0b01n | 0b11n, 0b11n, "0b01n | 0b11n === 0b11n"); -assert.sameValue(0b11n | 0b01n, 0b11n, "0b11n | 0b01n === 0b11n"); -assert.sameValue(0b10n | 0b10n, 0b10n, "0b10n | 0b10n === 0b10n"); -assert.sameValue(0b10n | 0b11n, 0b11n, "0b10n | 0b11n === 0b11n"); -assert.sameValue(0b11n | 0b10n, 0b11n, "0b11n | 0b10n === 0b11n"); -assert.sameValue(0xffffffffn | 0n, 0xffffffffn, "0xffffffffn | 0n === 0xffffffffn"); -assert.sameValue(0n | 0xffffffffn, 0xffffffffn, "0n | 0xffffffffn === 0xffffffffn"); -assert.sameValue(0xffffffffn | 0xffffffffn, 0xffffffffn, "0xffffffffn | 0xffffffffn === 0xffffffffn"); -assert.sameValue(0xffffffffffffffffn | 0n, 0xffffffffffffffffn, "0xffffffffffffffffn | 0n === 0xffffffffffffffffn"); -assert.sameValue(0n | 0xffffffffffffffffn, 0xffffffffffffffffn, "0n | 0xffffffffffffffffn === 0xffffffffffffffffn"); -assert.sameValue(0xffffffffffffffffn | 0xffffffffn, 0xffffffffffffffffn, "0xffffffffffffffffn | 0xffffffffn === 0xffffffffffffffffn"); -assert.sameValue(0xffffffffn | 0xffffffffffffffffn, 0xffffffffffffffffn, "0xffffffffn | 0xffffffffffffffffn === 0xffffffffffffffffn"); -assert.sameValue( - 0xffffffffffffffffn | 0xffffffffffffffffn, 0xffffffffffffffffn, - "0xffffffffffffffffn | 0xffffffffffffffffn === 0xffffffffffffffffn"); -assert.sameValue( - 0xbf2ed51ff75d380fd3be813ec6185780n | 0x4aabef2324cedff5387f1f65n, 0xbf2ed51fffffff2ff7fedffffe7f5fe5n, - "0xbf2ed51ff75d380fd3be813ec6185780n | 0x4aabef2324cedff5387f1f65n === 0xbf2ed51fffffff2ff7fedffffe7f5fe5n"); -assert.sameValue( - 0x4aabef2324cedff5387f1f65n | 0xbf2ed51ff75d380fd3be813ec6185780n, 0xbf2ed51fffffff2ff7fedffffe7f5fe5n, - "0x4aabef2324cedff5387f1f65n | 0xbf2ed51ff75d380fd3be813ec6185780n === 0xbf2ed51fffffff2ff7fedffffe7f5fe5n"); -assert.sameValue(0n | -1n, -1n, "0n | -1n === -1n"); -assert.sameValue(-1n | 0n, -1n, "-1n | 0n === -1n"); -assert.sameValue(0n | -2n, -2n, "0n | -2n === -2n"); -assert.sameValue(-2n | 0n, -2n, "-2n | 0n === -2n"); -assert.sameValue(1n | -2n, -1n, "1n | -2n === -1n"); -assert.sameValue(-2n | 1n, -1n, "-2n | 1n === -1n"); -assert.sameValue(2n | -2n, -2n, "2n | -2n === -2n"); -assert.sameValue(-2n | 2n, -2n, "-2n | 2n === -2n"); -assert.sameValue(2n | -3n, -1n, "2n | -3n === -1n"); -assert.sameValue(-3n | 2n, -1n, "-3n | 2n === -1n"); -assert.sameValue(-1n | -2n, -1n, "-1n | -2n === -1n"); -assert.sameValue(-2n | -1n, -1n, "-2n | -1n === -1n"); -assert.sameValue(-2n | -2n, -2n, "-2n | -2n === -2n"); -assert.sameValue(-2n | -3n, -1n, "-2n | -3n === -1n"); -assert.sameValue(-3n | -2n, -1n, "-3n | -2n === -1n"); -assert.sameValue(0xffffffffn | -1n, -1n, "0xffffffffn | -1n === -1n"); -assert.sameValue(-1n | 0xffffffffn, -1n, "-1n | 0xffffffffn === -1n"); -assert.sameValue(0xffffffffffffffffn | -1n, -1n, "0xffffffffffffffffn | -1n === -1n"); -assert.sameValue(-1n | 0xffffffffffffffffn, -1n, "-1n | 0xffffffffffffffffn === -1n"); -assert.sameValue( - 0xbf2ed51ff75d380fd3be813ec6185780n | -0x4aabef2324cedff5387f1f65n, -0x8a2c72024405ec138670865n, - "0xbf2ed51ff75d380fd3be813ec6185780n | -0x4aabef2324cedff5387f1f65n === -0x8a2c72024405ec138670865n"); -assert.sameValue( - -0x4aabef2324cedff5387f1f65n | 0xbf2ed51ff75d380fd3be813ec6185780n, -0x8a2c72024405ec138670865n, - "-0x4aabef2324cedff5387f1f65n | 0xbf2ed51ff75d380fd3be813ec6185780n === -0x8a2c72024405ec138670865n"); -assert.sameValue( - -0xbf2ed51ff75d380fd3be813ec6185780n | 0x4aabef2324cedff5387f1f65n, -0xbf2ed51fb554100cd330000ac600401bn, - "-0xbf2ed51ff75d380fd3be813ec6185780n | 0x4aabef2324cedff5387f1f65n === -0xbf2ed51fb554100cd330000ac600401bn"); -assert.sameValue( - 0x4aabef2324cedff5387f1f65n | -0xbf2ed51ff75d380fd3be813ec6185780n, -0xbf2ed51fb554100cd330000ac600401bn, - "0x4aabef2324cedff5387f1f65n | -0xbf2ed51ff75d380fd3be813ec6185780n === -0xbf2ed51fb554100cd330000ac600401bn"); -assert.sameValue( - -0xbf2ed51ff75d380fd3be813ec6185780n | -0x4aabef2324cedff5387f1f65n, -0x42092803008e813400181765n, - "-0xbf2ed51ff75d380fd3be813ec6185780n | -0x4aabef2324cedff5387f1f65n === -0x42092803008e813400181765n"); -assert.sameValue( - -0x4aabef2324cedff5387f1f65n | -0xbf2ed51ff75d380fd3be813ec6185780n, -0x42092803008e813400181765n, - "-0x4aabef2324cedff5387f1f65n | -0xbf2ed51ff75d380fd3be813ec6185780n === -0x42092803008e813400181765n"); -assert.sameValue(-0xffffffffn | 0n, -0xffffffffn, "-0xffffffffn | 0n === -0xffffffffn"); -assert.sameValue(0n | -0xffffffffn, -0xffffffffn, "0n | -0xffffffffn === -0xffffffffn"); -assert.sameValue( - -0xffffffffffffffffn | 0x10000000000000000n, -0xffffffffffffffffn, - "-0xffffffffffffffffn | 0x10000000000000000n === -0xffffffffffffffffn"); -assert.sameValue( - 0x10000000000000000n | -0xffffffffffffffffn, -0xffffffffffffffffn, - "0x10000000000000000n | -0xffffffffffffffffn === -0xffffffffffffffffn"); -assert.sameValue( - -0xffffffffffffffffffffffffn | 0x10000000000000000n, -0xfffffffeffffffffffffffffn, - "-0xffffffffffffffffffffffffn | 0x10000000000000000n === -0xfffffffeffffffffffffffffn"); -assert.sameValue( - 0x10000000000000000n | -0xffffffffffffffffffffffffn, -0xfffffffeffffffffffffffffn, - "0x10000000000000000n | -0xffffffffffffffffffffffffn === -0xfffffffeffffffffffffffffn"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-jit-untyped.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-jit-untyped.js deleted file mode 100644 index 936a679bbb1..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-jit-untyped.js +++ /dev/null @@ -1,20 +0,0 @@ -//@ runBigIntEnabled - -let assert = { - sameValue: function(i, e, m) { - if (i !== e) - throw new Error(m); - } -} - -function bigIntBitOrUntyped(a, b) { - return a | b; -} -noInline(bigIntBitOrUntyped); - -let o = { valueOf: () => 0b1111n }; -for (let i = 0; i < 10000; i++) { - let r = bigIntBitOrUntyped(o, 0b1010n); - assert.sameValue(r, 0b1111n, 0b101n + " | " + 0b1010n + " = " + r); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-jit.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-jit.js deleted file mode 100644 index 2203da05d86..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-jit.js +++ /dev/null @@ -1,19 +0,0 @@ -//@ runBigIntEnabled - -let assert = { - sameValue: function(i, e, m) { - if (i !== e) - throw new Error(m); - } -} - -function bigIntBitOr(a, b) { - return (a | b) | (a | 0b111n); -} -noInline(bigIntBitOr); - -for (let i = 0; i < 10000; i++) { - let r = bigIntBitOr(0b101n, 0b1010n); - assert.sameValue(r, 0b1111n, 0b101n + " | " + 0b1010n + " = " + r); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-memory-stress.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-memory-stress.js deleted file mode 100644 index 0ef0f957505..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-memory-stress.js +++ /dev/null @@ -1,14 +0,0 @@ -//@ runBigIntEnabled - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -let a = 0b11n; -for (let i = 0; i < 1000000; i++) { - a |= 0b01n; -} - -assert(a === 0b11n); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-to-primitive-precedence.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-to-primitive-precedence.js deleted file mode 100644 index f9dad0bb341..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-to-primitive-precedence.js +++ /dev/null @@ -1,29 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -let o = { - [Symbol.toPrimitive]: function() { - throw new Error("Bad"); - } -}; - -try{ - o | Symbol("2"); - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e.message, "Bad", "Expected to throw Error('Bad'), but got: " + e); -} - -try{ - Symbol("2") | o; - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e instanceof TypeError, true, "Expected to throw TypeError, but got: " + e) -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-type-error.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-type-error.js deleted file mode 100644 index b3072f7dd0a..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-type-error.js +++ /dev/null @@ -1,106 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, message) { - if (!a) - throw new Error(message); -} - -function assertThrowTypeError(a, b, message) { - try { - let n = a | b; - assert(false, message + ": Should throw TypeError, but executed without exception"); - } catch (e) { - assert(e instanceof TypeError, message + ": expected TypeError, got: " + e); - } -} - -assertThrowTypeError(30n, "foo", "BigInt | String"); -assertThrowTypeError("bar", 18757382984821n, "String | BigInt"); -assertThrowTypeError(30n, Symbol("foo"), "BigInt | Symbol"); -assertThrowTypeError(Symbol("bar"), 18757382984821n, "Symbol | BigInt"); -assertThrowTypeError(30n, 3320, "BigInt | Int32"); -assertThrowTypeError(33256, 18757382984821n, "Int32 | BigInt"); -assertThrowTypeError(30n, 0.543, "BigInt | Double"); -assertThrowTypeError(230.19293, 18757382984821n, "Double | BigInt"); -assertThrowTypeError(30n, NaN, "BigInt | NaN"); -assertThrowTypeError(NaN, 18757382984821n, "NaN | BigInt"); -assertThrowTypeError(30n, NaN, "BigInt | NaN"); -assertThrowTypeError(NaN, 18757382984821n, "NaN | BigInt"); -assertThrowTypeError(30n, +Infinity, "BigInt | +Infinity"); -assertThrowTypeError(+Infinity, 18757382984821n, "+Infinity | BigInt"); -assertThrowTypeError(30n, -Infinity, "BigInt | -Infinity"); -assertThrowTypeError(-Infinity, 18757382984821n, "-Infinity | BigInt"); -assertThrowTypeError(30n, null, "BigInt | null"); -assertThrowTypeError(null, 18757382984821n, "null | BigInt"); -assertThrowTypeError(30n, undefined, "BigInt | undefined"); -assertThrowTypeError(undefined, 18757382984821n, "undefined | BigInt"); -assertThrowTypeError(30n, true, "BigInt | true"); -assertThrowTypeError(true, 18757382984821n, "true | BigInt"); -assertThrowTypeError(30n, false, "BigInt | false"); -assertThrowTypeError(false, 18757382984821n, "false | BigInt"); - -// Error when returning from object - -let o = { - valueOf: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt | Object.valueOf returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Symbol | BigInt"); - -o = { - valueOf: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt | Object.valueOf returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Int32 | BigInt"); - -o = { - valueOf: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt | Object.valueOf returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Double | BigInt"); - -o = { - toString: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt | Object.toString returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Symbol | BigInt"); - -o = { - toString: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt | Object.toString returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Int32 | BigInt"); - -o = { - toString: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt | Object.toString returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Double | BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt | Object.@@toPrimitive returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Symbol | BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt | Object.@@toPrimitive returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Int32 | BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt | Object.@@toPrimitive returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Double | BigInt"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-wrapped-value.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-wrapped-value.js deleted file mode 100644 index 31122ca7f9b..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-or-wrapped-value.js +++ /dev/null @@ -1,62 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -function testBitOr(x, y, z, message) { - assert.sameValue(x | y, z, message); - assert.sameValue(y | x, z, message); -} - -testBitOr(Object(0b10n), 0b01n, 0b11n, "ToPrimitive: unbox object with internal slot"); - -let o = { - [Symbol.toPrimitive]: function() { - return 0b10n; - } -}; -testBitOr(o, 0b01n, 0b11n, "ToPrimitive: @@toPrimitive"); - -o = { - valueOf: function() { - return 0b10n; - } -}; -testBitOr(o, 0b01n, 0b11n, "ToPrimitive: valueOf"); - -o = { - toString: function() { - return 0b10n; - } -} -testBitOr(o, 0b01n, 0b11n, "ToPrimitive: toString"); - -// BigInt with length > 1 - -testBitOr(Object(0b1111000000000000000000000000000000000000000000000000000000000000000n), 0b1000000000000000000000000000000000000000000000000000000000000001111n, 0b1111000000000000000000000000000000000000000000000000000000000001111n, "ToPrimitive: unbox object with internal slot"); - -o = { - [Symbol.toPrimitive]: function() { - return 0b1111000000000000000000000000000000000000000000000000000000000000000n; - } -}; -testBitOr(o, 0b1000000000000000000000000000000000000000000000000000000000000001111n, 0b1111000000000000000000000000000000000000000000000000000000000001111n, "ToPrimitive: @@toPrimitive"); - -o = { - valueOf: function() { - return 0b1111000000000000000000000000000000000000000000000000000000000000000n; - } -}; -testBitOr(o, 0b1000000000000000000000000000000000000000000000000000000000000001111n, 0b1111000000000000000000000000000000000000000000000000000000000001111n, "ToPrimitive: valueOf"); - -o = { - toString: function() { - return 0b1111000000000000000000000000000000000000000000000000000000000000000n; - } -} -testBitOr(o, 0b1000000000000000000000000000000000000000000000000000000000000001111n, 0b1111000000000000000000000000000000000000000000000000000000000001111n, "ToPrimitive: toString"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-general.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-general.js deleted file mode 100644 index 282d4f438ee..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-general.js +++ /dev/null @@ -1,97 +0,0 @@ -//@ runBigIntEnabled - -// Copyright (C) 2017 Josh Wolfe. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -assert.sameValue = function (input, expected, message) { - if (input !== expected) - throw new Error(message); -} - -assert.sameValue(0b00n ^ 0b00n, 0b00n, "0b00n ^ 0b00n === 0b00n"); -assert.sameValue(0b00n ^ 0b01n, 0b01n, "0b00n ^ 0b01n === 0b01n"); -assert.sameValue(0b01n ^ 0b00n, 0b01n, "0b01n ^ 0b00n === 0b01n"); -assert.sameValue(0b00n ^ 0b10n, 0b10n, "0b00n ^ 0b10n === 0b10n"); -assert.sameValue(0b10n ^ 0b00n, 0b10n, "0b10n ^ 0b00n === 0b10n"); -assert.sameValue(0b00n ^ 0b11n, 0b11n, "0b00n ^ 0b11n === 0b11n"); -assert.sameValue(0b11n ^ 0b00n, 0b11n, "0b11n ^ 0b00n === 0b11n"); -assert.sameValue(0b01n ^ 0b01n, 0b00n, "0b01n ^ 0b01n === 0b00n"); -assert.sameValue(0b01n ^ 0b10n, 0b11n, "0b01n ^ 0b10n === 0b11n"); -assert.sameValue(0b10n ^ 0b01n, 0b11n, "0b10n ^ 0b01n === 0b11n"); -assert.sameValue(0b01n ^ 0b11n, 0b10n, "0b01n ^ 0b11n === 0b10n"); -assert.sameValue(0b11n ^ 0b01n, 0b10n, "0b11n ^ 0b01n === 0b10n"); -assert.sameValue(0b10n ^ 0b10n, 0b00n, "0b10n ^ 0b10n === 0b00n"); -assert.sameValue(0b10n ^ 0b11n, 0b01n, "0b10n ^ 0b11n === 0b01n"); -assert.sameValue(0b11n ^ 0b10n, 0b01n, "0b11n ^ 0b10n === 0b01n"); -assert.sameValue(0xffffffffn ^ 0n, 0xffffffffn, "0xffffffffn ^ 0n === 0xffffffffn"); -assert.sameValue(0n ^ 0xffffffffn, 0xffffffffn, "0n ^ 0xffffffffn === 0xffffffffn"); -assert.sameValue(0xffffffffn ^ 0xffffffffn, 0n, "0xffffffffn ^ 0xffffffffn === 0n"); -assert.sameValue(0xffffffffffffffffn ^ 0n, 0xffffffffffffffffn, "0xffffffffffffffffn ^ 0n === 0xffffffffffffffffn"); -assert.sameValue(0n ^ 0xffffffffffffffffn, 0xffffffffffffffffn, "0n ^ 0xffffffffffffffffn === 0xffffffffffffffffn"); -assert.sameValue(0xffffffffffffffffn ^ 0xffffffffn, 0xffffffff00000000n, "0xffffffffffffffffn ^ 0xffffffffn === 0xffffffff00000000n"); -assert.sameValue(0xffffffffn ^ 0xffffffffffffffffn, 0xffffffff00000000n, "0xffffffffn ^ 0xffffffffffffffffn === 0xffffffff00000000n"); -assert.sameValue( - 0xffffffffffffffffn ^ 0xffffffffffffffffn, 0n, - "0xffffffffffffffffn ^ 0xffffffffffffffffn === 0n"); -assert.sameValue( - 0xbf2ed51ff75d380fd3be813ec6185780n ^ 0x4aabef2324cedff5387f1f65n, 0xbf2ed51fbdf6d72cf7705ecbfe6748e5n, - "0xbf2ed51ff75d380fd3be813ec6185780n ^ 0x4aabef2324cedff5387f1f65n === 0xbf2ed51fbdf6d72cf7705ecbfe6748e5n"); -assert.sameValue( - 0x4aabef2324cedff5387f1f65n ^ 0xbf2ed51ff75d380fd3be813ec6185780n, 0xbf2ed51fbdf6d72cf7705ecbfe6748e5n, - "0x4aabef2324cedff5387f1f65n ^ 0xbf2ed51ff75d380fd3be813ec6185780n === 0xbf2ed51fbdf6d72cf7705ecbfe6748e5n"); -assert.sameValue(0n ^ -1n, -1n, "0n ^ -1n === -1n"); -assert.sameValue(-1n ^ 0n, -1n, "-1n ^ 0n === -1n"); -assert.sameValue(0n ^ -2n, -2n, "0n ^ -2n === -2n"); -assert.sameValue(-2n ^ 0n, -2n, "-2n ^ 0n === -2n"); -assert.sameValue(1n ^ -2n, -1n, "1n ^ -2n === -1n"); -assert.sameValue(-2n ^ 1n, -1n, "-2n ^ 1n === -1n"); -assert.sameValue(2n ^ -2n, -4n, "2n ^ -2n === -4n"); -assert.sameValue(-2n ^ 2n, -4n, "-2n ^ 2n === -4n"); -assert.sameValue(2n ^ -3n, -1n, "2n ^ -3n === -1n"); -assert.sameValue(-3n ^ 2n, -1n, "-3n ^ 2n === -1n"); -assert.sameValue(-1n ^ -2n, 1n, "-1n ^ -2n === 1n"); -assert.sameValue(-2n ^ -1n, 1n, "-2n ^ -1n === 1n"); -assert.sameValue(-2n ^ -2n, 0n, "-2n ^ -2n === 0n"); -assert.sameValue(-2n ^ -3n, 3n, "-2n ^ -3n === 3n"); -assert.sameValue(-3n ^ -2n, 3n, "-3n ^ -2n === 3n"); -assert.sameValue(0xffffffffn ^ -1n, -0x100000000n, "0xffffffffn ^ -1n === -0x100000000n"); -assert.sameValue(-1n ^ 0xffffffffn, -0x100000000n, "-1n ^ 0xffffffffn === -0x100000000n"); -assert.sameValue(0xffffffffffffffffn ^ -1n, -0x10000000000000000n, "0xffffffffffffffffn ^ -1n === -0x10000000000000000n"); -assert.sameValue(-1n ^ 0xffffffffffffffffn, -0x10000000000000000n, "-1n ^ 0xffffffffffffffffn === -0x10000000000000000n"); -assert.sameValue( - 0xbf2ed51ff75d380fd3be813ec6185780n ^ -0x4aabef2324cedff5387f1f65n, -0xbf2ed51fbdf6d72cf7705ecbfe6748e5n, - "0xbf2ed51ff75d380fd3be813ec6185780n ^ -0x4aabef2324cedff5387f1f65n === -0xbf2ed51fbdf6d72cf7705ecbfe6748e5n"); -assert.sameValue( - -0x4aabef2324cedff5387f1f65n ^ 0xbf2ed51ff75d380fd3be813ec6185780n, -0xbf2ed51fbdf6d72cf7705ecbfe6748e5n, - "-0x4aabef2324cedff5387f1f65n ^ 0xbf2ed51ff75d380fd3be813ec6185780n === -0xbf2ed51fbdf6d72cf7705ecbfe6748e5n"); -assert.sameValue( - -0xbf2ed51ff75d380fd3be813ec6185780n ^ 0x4aabef2324cedff5387f1f65n, -0xbf2ed51fbdf6d72cf7705ecbfe67481bn, - "-0xbf2ed51ff75d380fd3be813ec6185780n ^ 0x4aabef2324cedff5387f1f65n === -0xbf2ed51fbdf6d72cf7705ecbfe67481bn"); -assert.sameValue( - 0x4aabef2324cedff5387f1f65n ^ -0xbf2ed51ff75d380fd3be813ec6185780n, -0xbf2ed51fbdf6d72cf7705ecbfe67481bn, - "0x4aabef2324cedff5387f1f65n ^ -0xbf2ed51ff75d380fd3be813ec6185780n === -0xbf2ed51fbdf6d72cf7705ecbfe67481bn"); -assert.sameValue( - -0xbf2ed51ff75d380fd3be813ec6185780n ^ -0x4aabef2324cedff5387f1f65n, 0xbf2ed51fbdf6d72cf7705ecbfe67481bn, - "-0xbf2ed51ff75d380fd3be813ec6185780n ^ -0x4aabef2324cedff5387f1f65n === 0xbf2ed51fbdf6d72cf7705ecbfe67481bn"); -assert.sameValue( - -0x4aabef2324cedff5387f1f65n ^ -0xbf2ed51ff75d380fd3be813ec6185780n, 0xbf2ed51fbdf6d72cf7705ecbfe67481bn, - "-0x4aabef2324cedff5387f1f65n ^ -0xbf2ed51ff75d380fd3be813ec6185780n === 0xbf2ed51fbdf6d72cf7705ecbfe67481bn"); -assert.sameValue(-0xffffffffn ^ 0n, -0xffffffffn, "-0xffffffffn ^ 0n === -0xffffffffn"); -assert.sameValue(0n ^ -0xffffffffn, -0xffffffffn, "0n ^ -0xffffffffn === -0xffffffffn"); -assert.sameValue( - -0xffffffffffffffffn ^ 0x10000000000000000n, -0x1ffffffffffffffffn, - "-0xffffffffffffffffn ^ 0x10000000000000000n === -0x1ffffffffffffffffn"); -assert.sameValue( - 0x10000000000000000n ^ -0xffffffffffffffffn, -0x1ffffffffffffffffn, - "0x10000000000000000n ^ -0xffffffffffffffffn === -0x1ffffffffffffffffn"); -assert.sameValue( - -0xffffffffffffffffffffffffn ^ 0x10000000000000000n, -0xfffffffeffffffffffffffffn, - "-0xffffffffffffffffffffffffn ^ 0x10000000000000000n === -0xfffffffeffffffffffffffffn"); -assert.sameValue( - 0x10000000000000000n ^ -0xffffffffffffffffffffffffn, -0xfffffffeffffffffffffffffn, - "0x10000000000000000n ^ -0xffffffffffffffffffffffffn === -0xfffffffeffffffffffffffffn"); diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-jit.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-jit.js deleted file mode 100644 index 3c3934b77cf..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-jit.js +++ /dev/null @@ -1,25 +0,0 @@ -//@ runBigIntEnabled - -let assert = { - sameValue: function(i, e) { - if (i !== e) - throw new Error(m); - } -} - -function bigIntBitXor(a, b) { - return (a ^ b) ^ (a ^ 0b11n); - -} -noInline(bigIntBitXor); - -for (let i = 0; i < 10000; i++) { - let r = bigIntBitXor(0b11n, 0b1010n); - assert.sameValue(r, 0b1001n); -} - -for (let i = 0; i < 10000; i++) { - let r = bigIntBitXor(0xfffafafaf19281fefafeafebcn, 0b1010n); - assert.sameValue(r, 0b1001n); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-memory-stress.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-memory-stress.js deleted file mode 100644 index 636ad2716a2..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-memory-stress.js +++ /dev/null @@ -1,14 +0,0 @@ -//@ runBigIntEnabled - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -let a = 0b11n; -for (let i = 0; i < 1000000; i++) { - a ^= 0b01n; -} - -assert(a === 0b11n); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-to-primitive-precedence.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-to-primitive-precedence.js deleted file mode 100644 index 8f90dbf48ed..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-to-primitive-precedence.js +++ /dev/null @@ -1,29 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -let o = { - [Symbol.toPrimitive]: function() { - throw new Error("Bad"); - } -}; - -try{ - o ^ Symbol("2"); - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e.message, "Bad", "Expected to throw Error('Bad'), but got: " + e); -} - -try{ - Symbol("2") ^ o; - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e instanceof TypeError, true, "Expected to throw TypeError, but got: " + e) -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-type-error.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-type-error.js deleted file mode 100644 index 2fc57d22207..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-type-error.js +++ /dev/null @@ -1,104 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, message) { - if (!a) - throw new Error(message); -} - -function assertThrowTypeError(a, b, message) { - try { - let n = a ^ b; - assert(false, message + ": Should throw TypeError, but executed without exception"); - } catch (e) { - assert(e instanceof TypeError, message + ": expected TypeError, got: " + e); - } -} - -assertThrowTypeError(30n, "foo", "BigInt ^ String"); -assertThrowTypeError("bar", 18757382984821n, "String ^ BigInt"); -assertThrowTypeError(30n, Symbol("foo"), "BigInt ^ Symbol"); -assertThrowTypeError(Symbol("bar"), 18757382984821n, "Symbol ^ BigInt"); -assertThrowTypeError(30n, 3320, "BigInt ^ Int32"); -assertThrowTypeError(33256, 18757382984821n, "Int32 ^ BigInt"); -assertThrowTypeError(30n, 0.543, "BigInt ^ Double"); -assertThrowTypeError(230.19293, 18757382984821n, "Double ^ BigInt"); -assertThrowTypeError(30n, NaN, "BigInt ^ NaN"); -assertThrowTypeError(NaN, 18757382984821n, "NaN ^ BigInt"); -assertThrowTypeError(30n, +Infinity, "BigInt ^ +Infinity"); -assertThrowTypeError(+Infinity, 18757382984821n, "+Infinity ^ BigInt"); -assertThrowTypeError(30n, -Infinity, "BigInt ^ -Infinity"); -assertThrowTypeError(-Infinity, 18757382984821n, "-Infinity ^ BigInt"); -assertThrowTypeError(30n, null, "BigInt ^ null"); -assertThrowTypeError(null, 18757382984821n, "null ^ BigInt"); -assertThrowTypeError(30n, undefined, "BigInt ^ undefined"); -assertThrowTypeError(undefined, 18757382984821n, "undefined ^ BigInt"); -assertThrowTypeError(30n, true, "BigInt ^ true"); -assertThrowTypeError(true, 18757382984821n, "true ^ BigInt"); -assertThrowTypeError(30n, false, "BigInt ^ false"); -assertThrowTypeError(false, 18757382984821n, "false ^ BigInt"); - -// Error when returning from object - -let o = { - valueOf: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt ^ Object.valueOf returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Symbol ^ BigInt"); - -o = { - valueOf: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt ^ Object.valueOf returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Int32 ^ BigInt"); - -o = { - valueOf: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt ^ Object.valueOf returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Double ^ BigInt"); - -o = { - toString: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt ^ Object.toString returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Symbol ^ BigInt"); - -o = { - toString: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt ^ Object.toString returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Int32 ^ BigInt"); - -o = { - toString: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt ^ Object.toString returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Double ^ BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt ^ Object.@@toPrimitive returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Symbol ^ BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt ^ Object.@@toPrimitive returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Int32 ^ BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt ^ Object.@@toPrimitive returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Double ^ BigInt"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-untyped.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-untyped.js deleted file mode 100644 index 934e099be75..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-untyped.js +++ /dev/null @@ -1,26 +0,0 @@ -//@ runBigIntEnabled - -function assert(v, e) { - if (v !== e) - throw new Error("Expected value: " + e + " but got: " + v) -} - -function bigIntOperations(a, b) { - let c = a ^ b; - return a ^ c; -} -noInline(bigIntOperations); - -c = 0; -let o = { valueOf: function () { - c++; - return 0b1111n; -}}; - -for (let i = 0; i < 100000; i++) { - let out = bigIntOperations(o, 0b1010n); - assert(out, 0b1010n); -} - -assert(c, 200000); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-wrapped-value.js b/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-wrapped-value.js deleted file mode 100644 index 97008efb080..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-bitwise-xor-wrapped-value.js +++ /dev/null @@ -1,37 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -function testBitXor(x, y, z, message) { - assert.sameValue(x ^ y, z, message); - assert.sameValue(y ^ x, z, message); -} - -testBitXor(Object(0b10n), 0b01n, 0b11n, "ToPrimitive: unbox object with internal slot"); - -let o = { - [Symbol.toPrimitive]: function() { - return 0b10n; - } -}; -testBitXor(o, 0b01n, 0b11n, "ToPrimitive: @@toPrimitive"); - -o = { - valueOf: function() { - return 0b10n; - } -}; -testBitXor(o, 0b01n, 0b11n, "ToPrimitive: valueOf"); - -o = { - toString: function() { - return 0b10n; - } -} -testBitXor(o, 0b01n, 0b11n, "ToPrimitive: toString"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-boolean-proven-type.js b/implementation-contributed/javascriptcore/stress/big-int-boolean-proven-type.js deleted file mode 100644 index 3be17b42ab2..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-boolean-proven-type.js +++ /dev/null @@ -1,21 +0,0 @@ -//@ runBigIntEnabled - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -function bool(n) { - var value = "string"; - if (n & 0x1) - value = 0n; - return !!value; -} -noInline(bool); - -for (let i = 0; i < 1e6; i++) { - if (i & 0x1) - assert(bool(i) === false); - else - assert(bool(i) === true); -} diff --git a/implementation-contributed/javascriptcore/stress/big-int-branch-usage.js b/implementation-contributed/javascriptcore/stress/big-int-branch-usage.js deleted file mode 100644 index fa6125f0dbe..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-branch-usage.js +++ /dev/null @@ -1,23 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, e) { - if (a !== e) { - throw new Error("Bad!"); - } -} - -function branchTest(a) { - if (a) - return a; - else - return false; -} -noInline(branchTest); - -for (let i = 0; i < 100000; i++) { - assert(branchTest(10n), 10n); - assert(branchTest(1n), 1n); - assert(branchTest(0n), false); - assert(branchTest(-1n), -1n); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-div-jit-osr.js b/implementation-contributed/javascriptcore/stress/big-int-div-jit-osr.js deleted file mode 100644 index bd6ab97dc02..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-div-jit-osr.js +++ /dev/null @@ -1,25 +0,0 @@ -//@ runBigIntEnabled - -let assert = { - sameValue: function(i, e, m) { - if (i !== e) - throw new Error(m); - } -} - -function bigIntDiv(x, y) { - return x / y; -} -noInline(bigIntDiv); - -for (let i = 0; i < 10000; i++) { - let r = bigIntDiv(30n, 10n); - assert.sameValue(r, 3n, 30n + " / " + 10n + " = " + r); -} - -let r = bigIntDiv(30, 10); -assert.sameValue(r, 3, 3 + " / " + 10 + " = " + r); - -r = bigIntDiv("30", "10"); -assert.sameValue(r, 3, 30 + " * " + 10 + " = " + r); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-div-jit-untyped.js b/implementation-contributed/javascriptcore/stress/big-int-div-jit-untyped.js deleted file mode 100644 index 5e9a377f387..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-div-jit-untyped.js +++ /dev/null @@ -1,36 +0,0 @@ -//@ runBigIntEnabled - -let assert = { - sameValue: function(i, e, m) { - if (i !== e) - throw new Error(m); - } -} - -function bigIntDiv(x, y) { - return x / y; -} -noInline(bigIntDiv); - -let o = {valueOf: () => 10n}; - -for (let i = 0; i < 10000; i++) { - let r = bigIntDiv(30n, o); - assert.sameValue(r, 3n, 30n + " / {valueOf: () => 10n} = " + r); -} - -o2 = {valueOf: () => 10000n}; - -for (let i = 0; i < 10000; i++) { - let r = bigIntDiv(o2, o); - assert.sameValue(r, 1000n, "{valueOf: () => 10000n} / {valueOf: () => 10n} = " + r); -} - -o = Object(10n); -let r = bigIntDiv(30n, o); -assert.sameValue(r, 3n, 30n + " / Object(10n) = " + r); - -o2 = Object(3240n); -r = bigIntDiv(o2, o); -assert.sameValue(r, 324n, "Object(3240n) / Object(10n) = " + r); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-json-stringify-to-json.js b/implementation-contributed/javascriptcore/stress/big-int-json-stringify-to-json.js deleted file mode 100644 index e5c25a34604..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-json-stringify-to-json.js +++ /dev/null @@ -1,50 +0,0 @@ -//@ runBigIntEnabled - -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} -noInline(shouldBe); - -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -var counter = 0; -BigInt.prototype.toJSON = function () { - ++counter; - return Number(String(this)); -}; - -shouldBe(JSON.stringify(0n), `0`); -shouldBe(counter, 1); - -shouldBe(JSON.stringify([0n]), `[0]`); -shouldBe(counter, 2); - -shouldBe(JSON.stringify({hello:0n}), `{"hello":0}`); -shouldBe(counter, 3); - -var bigIntObject = Object(0n); - -shouldBe(JSON.stringify(bigIntObject), `0`); -shouldBe(counter, 4); - -shouldBe(JSON.stringify([bigIntObject]), `[0]`); -shouldBe(counter, 5); - -shouldBe(JSON.stringify({hello:bigIntObject}), `{"hello":0}`); -shouldBe(counter, 6); diff --git a/implementation-contributed/javascriptcore/stress/big-int-json-stringify.js b/implementation-contributed/javascriptcore/stress/big-int-json-stringify.js deleted file mode 100644 index 39eb806c9ba..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-json-stringify.js +++ /dev/null @@ -1,52 +0,0 @@ -//@ runBigIntEnabled - -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} -noInline(shouldBe); - -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -shouldThrow(() => { - JSON.stringify(0n); -}, `TypeError: JSON.stringify cannot serialize BigInt.`); - -shouldThrow(() => { - JSON.stringify([0n]); -}, `TypeError: JSON.stringify cannot serialize BigInt.`); - -shouldThrow(() => { - JSON.stringify({hello:0n}); -}, `TypeError: JSON.stringify cannot serialize BigInt.`); - -var bigIntObject = Object(0n); - -shouldThrow(() => { - JSON.stringify(bigIntObject); -}, `TypeError: JSON.stringify cannot serialize BigInt.`); - -shouldThrow(() => { - JSON.stringify([bigIntObject]); -}, `TypeError: JSON.stringify cannot serialize BigInt.`); - -shouldThrow(() => { - JSON.stringify({hello:bigIntObject}); -}, `TypeError: JSON.stringify cannot serialize BigInt.`); - - diff --git a/implementation-contributed/javascriptcore/stress/big-int-left-shift-general.js b/implementation-contributed/javascriptcore/stress/big-int-left-shift-general.js deleted file mode 100644 index 36edbebc713..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-left-shift-general.js +++ /dev/null @@ -1,103 +0,0 @@ -//@ runBigIntEnabled - -// Copyright (C) 2017 Josh Wolfe. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -assert.sameValue = function (input, expected, message) { - if (input !== expected) - throw new Error(message); -} - -assert.sameValue(0n << 0n, 0n, "0n << 0n === 0n"); -assert.sameValue(0b101n << 1n, 0b1010n, "0b101n << 1n === 0b1010n"); -assert.sameValue(0b101n << 2n, 0b10100n, "0b101n << 2n === 0b10100n"); -assert.sameValue(0b101n << 3n, 0b101000n, "0b101n << 3n === 0b101000n"); -assert.sameValue(0b101n << -1n, 0b10n, "0b101n << -1n === 0b10n"); -assert.sameValue(0b101n << -2n, 1n, "0b101n << -2n === 1n"); -assert.sameValue(0b101n << -3n, 0n, "0b101n << -3n === 0n"); -assert.sameValue(0n << 128n, 0n, "0n << 128n === 0n"); -assert.sameValue(0n << -128n, 0n, "0n << -128n === 0n"); -assert.sameValue(0x246n << 0n, 0x246n, "0x246n << 0n === 0x246n"); -assert.sameValue(0x246n << 127n, 0x12300000000000000000000000000000000n, "0x246n << 127n === 0x12300000000000000000000000000000000n"); -assert.sameValue(0x246n << 128n, 0x24600000000000000000000000000000000n, "0x246n << 128n === 0x24600000000000000000000000000000000n"); -assert.sameValue(0x246n << 129n, 0x48c00000000000000000000000000000000n, "0x246n << 129n === 0x48c00000000000000000000000000000000n"); -assert.sameValue(0x246n << -128n, 0n, "0x246n << -128n === 0n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << 64n, 0x123456789abcdef0fedcba98765432123456780000000000000000n, - "0x123456789abcdef0fedcba9876543212345678n << 64n === 0x123456789abcdef0fedcba98765432123456780000000000000000n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << 32n, 0x123456789abcdef0fedcba987654321234567800000000n, - "0x123456789abcdef0fedcba9876543212345678n << 32n === 0x123456789abcdef0fedcba987654321234567800000000n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << 16n, 0x123456789abcdef0fedcba98765432123456780000n, - "0x123456789abcdef0fedcba9876543212345678n << 16n === 0x123456789abcdef0fedcba98765432123456780000n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << 0n, 0x123456789abcdef0fedcba9876543212345678n, - "0x123456789abcdef0fedcba9876543212345678n << 0n === 0x123456789abcdef0fedcba9876543212345678n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << -16n, 0x123456789abcdef0fedcba987654321234n, - "0x123456789abcdef0fedcba9876543212345678n << -16n === 0x123456789abcdef0fedcba987654321234n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << -32n, 0x123456789abcdef0fedcba98765432n, - "0x123456789abcdef0fedcba9876543212345678n << -32n === 0x123456789abcdef0fedcba98765432n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << -64n, 0x123456789abcdef0fedcban, - "0x123456789abcdef0fedcba9876543212345678n << -64n === 0x123456789abcdef0fedcban"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << -127n, 0x2468acn, - "0x123456789abcdef0fedcba9876543212345678n << -127n === 0x2468acn"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << -128n, 0x123456n, - "0x123456789abcdef0fedcba9876543212345678n << -128n === 0x123456n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n << -129n, 0x91a2bn, - "0x123456789abcdef0fedcba9876543212345678n << -129n === 0x91a2bn"); -assert.sameValue(-5n << 1n, -0xan, "-5n << 1n === -0xan"); -assert.sameValue(-5n << 2n, -0x14n, "-5n << 2n === -0x14n"); -assert.sameValue(-5n << 3n, -0x28n, "-5n << 3n === -0x28n"); -assert.sameValue(-5n << -1n, -3n, "-5n << -1n === -3n"); -assert.sameValue(-5n << -2n, -2n, "-5n << -2n === -2n"); -assert.sameValue(-5n << -3n, -1n, "-5n << -3n === -1n"); -assert.sameValue(-1n << 128n, -0x100000000000000000000000000000000n, "-1n << 128n === -0x100000000000000000000000000000000n"); -assert.sameValue(-1n << 0n, -1n, "-1n << 0n === -1n"); -assert.sameValue(-1n << -128n, -1n, "-1n << -128n === -1n"); -assert.sameValue(-0x246n << 0n, -0x246n, "-0x246n << 0n === -0x246n"); -assert.sameValue(-0x246n << 127n, -0x12300000000000000000000000000000000n, "-0x246n << 127n === -0x12300000000000000000000000000000000n"); -assert.sameValue(-0x246n << 128n, -0x24600000000000000000000000000000000n, "-0x246n << 128n === -0x24600000000000000000000000000000000n"); -assert.sameValue(-0x246n << 129n, -0x48c00000000000000000000000000000000n, "-0x246n << 129n === -0x48c00000000000000000000000000000000n"); -assert.sameValue(-0x246n << -128n, -1n, "-0x246n << -128n === -1n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << 64n, -0x123456789abcdef0fedcba98765432123456780000000000000000n, - "-0x123456789abcdef0fedcba9876543212345678n << 64n === -0x123456789abcdef0fedcba98765432123456780000000000000000n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << 32n, -0x123456789abcdef0fedcba987654321234567800000000n, - "-0x123456789abcdef0fedcba9876543212345678n << 32n === -0x123456789abcdef0fedcba987654321234567800000000n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << 16n, -0x123456789abcdef0fedcba98765432123456780000n, - "-0x123456789abcdef0fedcba9876543212345678n << 16n === -0x123456789abcdef0fedcba98765432123456780000n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << 0n, -0x123456789abcdef0fedcba9876543212345678n, - "-0x123456789abcdef0fedcba9876543212345678n << 0n === -0x123456789abcdef0fedcba9876543212345678n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << -16n, -0x123456789abcdef0fedcba987654321235n, - "-0x123456789abcdef0fedcba9876543212345678n << -16n === -0x123456789abcdef0fedcba987654321235n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << -32n, -0x123456789abcdef0fedcba98765433n, - "-0x123456789abcdef0fedcba9876543212345678n << -32n === -0x123456789abcdef0fedcba98765433n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << -64n, -0x123456789abcdef0fedcbbn, - "-0x123456789abcdef0fedcba9876543212345678n << -64n === -0x123456789abcdef0fedcbbn"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << -127n, -0x2468adn, - "-0x123456789abcdef0fedcba9876543212345678n << -127n === -0x2468adn"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << -128n, -0x123457n, - "-0x123456789abcdef0fedcba9876543212345678n << -128n === -0x123457n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n << -129n, -0x91a2cn, - "-0x123456789abcdef0fedcba9876543212345678n << -129n === -0x91a2cn"); diff --git a/implementation-contributed/javascriptcore/stress/big-int-left-shift-range-error.js b/implementation-contributed/javascriptcore/stress/big-int-left-shift-range-error.js deleted file mode 100644 index 02ac12c1fc1..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-left-shift-range-error.js +++ /dev/null @@ -1,22 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, message) { - if (!a) - throw new Error(message); -} - -function assertThrowRangeError(a, b, message) { - try { - let n = a << b; - assert(false, message + ": Should throw RangeError, but executed without exception"); - } catch (e) { - assert(e instanceof RangeError, message + ": expected RangeError, got: " + e); - } -} - -let a = 1n << 64n; -assertThrowRangeError(1n, a, "Left shift by " + a); - -a = 1n << 30n; -assertThrowRangeError(1n, a, "Left shift by " + a); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-left-shift-type-error.js b/implementation-contributed/javascriptcore/stress/big-int-left-shift-type-error.js deleted file mode 100644 index ef852ea2365..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-left-shift-type-error.js +++ /dev/null @@ -1,104 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, message) { - if (!a) - throw new Error(message); -} - -function assertThrowTypeError(a, b, message) { - try { - let n = a << b; - assert(false, message + ": Should throw TypeError, but executed without exception"); - } catch (e) { - assert(e instanceof TypeError, message + ": expected TypeError, got: " + e); - } -} - -assertThrowTypeError(30n, "foo", "BigInt << String"); -assertThrowTypeError("bar", 18757382984821n, "String << BigInt"); -assertThrowTypeError(30n, Symbol("foo"), "BigInt << Symbol"); -assertThrowTypeError(Symbol("bar"), 18757382984821n, "Symbol << BigInt"); -assertThrowTypeError(30n, 3320, "BigInt << Int32"); -assertThrowTypeError(33256, 18757382984821n, "Int32 << BigInt"); -assertThrowTypeError(30n, 0.543, "BigInt << Double"); -assertThrowTypeError(230.19293, 18757382984821n, "Double << BigInt"); -assertThrowTypeError(30n, NaN, "BigInt << NaN"); -assertThrowTypeError(NaN, 18757382984821n, "NaN << BigInt"); -assertThrowTypeError(30n, +Infinity, "BigInt << +Infinity"); -assertThrowTypeError(+Infinity, 18757382984821n, "+Infinity << BigInt"); -assertThrowTypeError(30n, -Infinity, "BigInt << -Infinity"); -assertThrowTypeError(-Infinity, 18757382984821n, "-Infinity << BigInt"); -assertThrowTypeError(30n, null, "BigInt << null"); -assertThrowTypeError(null, 18757382984821n, "null << BigInt"); -assertThrowTypeError(30n, undefined, "BigInt << undefined"); -assertThrowTypeError(undefined, 18757382984821n, "undefined << BigInt"); -assertThrowTypeError(30n, true, "BigInt << true"); -assertThrowTypeError(true, 18757382984821n, "true << BigInt"); -assertThrowTypeError(30n, false, "BigInt << false"); -assertThrowTypeError(false, 18757382984821n, "false << BigInt"); - -// Error when returning from object - -let o = { - valueOf: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt << Object.valueOf returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Symbol << BigInt"); - -o = { - valueOf: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt << Object.valueOf returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Int32 << BigInt"); - -o = { - valueOf: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt << Object.valueOf returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Double << BigInt"); - -o = { - toString: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt << Object.toString returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Symbol << BigInt"); - -o = { - toString: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt << Object.toString returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Int32 << BigInt"); - -o = { - toString: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt << Object.toString returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Double << BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt << Object.@@toPrimitive returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Symbol << BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt << Object.@@toPrimitive returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Int32 << BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt << Object.@@toPrimitive returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Double << BigInt"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-left-shift-wrapped-value.js b/implementation-contributed/javascriptcore/stress/big-int-left-shift-wrapped-value.js deleted file mode 100644 index c69dbda33d3..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-left-shift-wrapped-value.js +++ /dev/null @@ -1,36 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -function testLeftShift(x, y, z, message) { - assert.sameValue(x << y, z, message); -} - -testLeftShift(Object(0b10n), 1n, 0b100n, "ToPrimitive: unbox object with internal slot"); - -let o = { - [Symbol.toPrimitive]: function() { - return 0b10n; - } -}; -testLeftShift(o, 0b01n, 0b100n, "ToPrimitive: @@toPrimitive"); - -o = { - valueOf: function() { - return 0b10n; - } -}; -testLeftShift(o, 0b01n, 0b100n, "ToPrimitive: valueOf"); - -o = { - toString: function() { - return 0b10n; - } -} -testLeftShift(o, 0b01n, 0b100n, "ToPrimitive: toString"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-literal-inside-literal-object.js b/implementation-contributed/javascriptcore/stress/big-int-literal-inside-literal-object.js deleted file mode 100644 index d1f9072ddc8..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-literal-inside-literal-object.js +++ /dev/null @@ -1,21 +0,0 @@ -//@ runBigIntEnabled - -var assert = { - sameValue: function (input, expected) { - if (input !== expected) - throw new Error('Expected: ' + expected + ' but got: ' + input); - } -}; - -var x = {y:1n} -assert.sameValue(x.y, 1n); - -x = {y:{z:1n}}; -assert.sameValue(x.y.z, 1n); - -x = {y:-1212n} -assert.sameValue(x.y, -1212n); - -x = {y:{z:-22312n}}; -assert.sameValue(x.y.z, -22312n); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-logical-and.js b/implementation-contributed/javascriptcore/stress/big-int-logical-and.js deleted file mode 100644 index 619b866ea8c..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-logical-and.js +++ /dev/null @@ -1,20 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, e) { - if (a !== e) { - throw new Error("Bad!"); - } -} - -function logicalAnd(a, b) { - return a && b; -} -noInline(logicalAnd); - -for (let i = 0; i < 100000; i++) { - assert(logicalAnd(1n, 10n), 10n); - assert(logicalAnd(1n, 1n), 1n); - assert(logicalAnd(1n, 0n), 0n); - assert(logicalAnd(1n, -1n), -1n); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-logical-not.js b/implementation-contributed/javascriptcore/stress/big-int-logical-not.js deleted file mode 100644 index af28a72b1c3..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-logical-not.js +++ /dev/null @@ -1,20 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, e) { - if (a !== e) { - throw new Error("Bad!"); - } -} - -function logicalNot(a) { - return !a; -} -noInline(logicalNot); - -for (let i = 0; i < 100000; i++) { - assert(logicalNot(10n), false); - assert(logicalNot(1n), false); - assert(logicalNot(0n), true); - assert(logicalNot(-1n), false); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-logical-or.js b/implementation-contributed/javascriptcore/stress/big-int-logical-or.js deleted file mode 100644 index 36a2d344562..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-logical-or.js +++ /dev/null @@ -1,20 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, e) { - if (a !== e) { - throw new Error("Bad!"); - } -} - -function logicalOr(a, b) { - return a || b; -} -noInline(logicalOr); - -for (let i = 0; i < 100000; i++) { - assert(logicalOr(10n, "abc"), 10n); - assert(logicalOr(1n, "abc"), 1n); - assert(logicalOr(0n, "abc"), "abc"); - assert(logicalOr(-1n, "abc"), -1n); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-mul-jit-osr.js b/implementation-contributed/javascriptcore/stress/big-int-mul-jit-osr.js deleted file mode 100644 index e7631e54014..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-mul-jit-osr.js +++ /dev/null @@ -1,25 +0,0 @@ -//@ runBigIntEnabled - -let assert = { - sameValue: function(i, e, m) { - if (i !== e) - throw new Error(m); - } -} - -function bigIntMul(x, y) { - return x * y; -} -noInline(bigIntMul); - -for (let i = 0; i < 10000; i++) { - let r = bigIntMul(3n, 10n); - assert.sameValue(r, 30n, 3n + " * " + 10n + " = " + r); -} - -let r = bigIntMul(3, 10); -assert.sameValue(r, 30, 3 + " * " + 10 + " = " + r); - -r = bigIntMul("3", "10"); -assert.sameValue(r, 30, 3 + " * " + 10 + " = " + r); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-mul-jit-untyped.js b/implementation-contributed/javascriptcore/stress/big-int-mul-jit-untyped.js deleted file mode 100644 index 5ed64bca39d..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-mul-jit-untyped.js +++ /dev/null @@ -1,36 +0,0 @@ -//@ runBigIntEnabled - -let assert = { - sameValue: function(i, e, m) { - if (i !== e) - throw new Error(m); - } -} - -function bigIntMul(x, y) { - return x * y; -} -noInline(bigIntMul); - -let o = {valueOf: () => 10n}; - -for (let i = 0; i < 10000; i++) { - let r = bigIntMul(3n, o); - assert.sameValue(r, 30n, 3n + " * {valueOf: () => 10n} = " + r); -} - -o2 = {valueOf: () => 10000n}; - -for (let i = 0; i < 10000; i++) { - let r = bigIntMul(o2, o); - assert.sameValue(r, 100000n, "{valueOf: () => 10000n} * {valueOf: () => 10n} = " + r); -} - -o = Object(10n); -let r = bigIntMul(3n, o); -assert.sameValue(r, 30n, 3n + " * Object(10n) = " + r); - -o2 = Object(3241n); -r = bigIntMul(o2, o); -assert.sameValue(r, 32410n, "Object(32410n) * Object(10n) = " + r); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-negate-jit.js b/implementation-contributed/javascriptcore/stress/big-int-negate-jit.js deleted file mode 100644 index 6baa8e7ba0f..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-negate-jit.js +++ /dev/null @@ -1,48 +0,0 @@ -//@ skip if not $jitTests -//@ runBigIntEnabled - -function assert(a, b) { - if (a !== b) - throw new Error("Bad!"); -} - -function negateBigInt(n) { - return -n; -} -noInline(negateBigInt); - -for (let i = 0; i < 100000; i++) { - assert(negateBigInt(100n), -100n); - assert(negateBigInt(-0x1fffffffffffff01n), 0x1fffffffffffff01n); -} - -if (numberOfDFGCompiles(negateBigInt) > 1) - throw "Failed negateBigInt(). We should have compiled a single negate for the BigInt type."; - -function negateBigIntSpecializedToInt(n) { - return -n; -} -noInline(negateBigIntSpecializedToInt); - -for (let i = 0; i < 100000; i++) { - negateBigIntSpecializedToInt(100); -} - -assert(negateBigIntSpecializedToInt(100n), -100n); - -// Testing case mixing int and BigInt speculations -function mixedSpeculationNegateBigInt(n, arr) { - return -(-(-n)); -} -noInline(mixedSpeculationNegateBigInt); - -for (let i = 0; i < 100000; i++) { - if (i % 2) - assert(mixedSpeculationNegateBigInt(100), -100); - else - assert(mixedSpeculationNegateBigInt(-0x1fffffffffffff01n), 0x1fffffffffffff01n); -} - -if (numberOfDFGCompiles(mixedSpeculationNegateBigInt) > 1) - throw "Failed mixedSpeculationNegateBigInt(). We should have compiled a single negate for the BigInt type."; - diff --git a/implementation-contributed/javascriptcore/stress/big-int-out-of-memory-tests.js b/implementation-contributed/javascriptcore/stress/big-int-out-of-memory-tests.js deleted file mode 100644 index 168329283b6..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-out-of-memory-tests.js +++ /dev/null @@ -1,52 +0,0 @@ -//@ runDefault("--useBigInt=true", "--useDFGJIT=false") - -function assert(a, message) { - if (!a) - throw new Error(message); -} - -let a = (1n << 1048575n) - 1n; -a = (a << 1n) | 1n; - -try { - let b = a + 1n; - assert(false, "Should throw OutOfMemoryError, but executed without exception"); -} catch(e) { - assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e); -} - -try { - let b = a - (-1n); - assert(false, "Should throw OutOfMemoryError, but executed without exception"); -} catch(e) { - assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e); -} - -try { - let b = a * (-1n); - assert(false, "Should throw OutOfMemoryError, but executed without exception"); -} catch(e) { - assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e); -} - -try { - let b = a / a; - assert(false, "Should throw OutOfMemoryError, but executed without exception"); -} catch(e) { - assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e); -} - -try { - let b = -a & -1n; - assert(false, "Should throw OutOfMemoryError, but executed without exception"); -} catch(e) { - assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e); -} - -try { - let b = a ^ -1n; - assert(false, "Should throw OutOfMemoryError, but executed without exception"); -} catch(e) { - assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-right-shift-general.js b/implementation-contributed/javascriptcore/stress/big-int-right-shift-general.js deleted file mode 100644 index 4e58ca60740..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-right-shift-general.js +++ /dev/null @@ -1,104 +0,0 @@ -//@ runBigIntEnabled - -// Copyright (C) 2017 Josh Wolfe. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -assert.sameValue = function (input, expected, message) { - if (input !== expected) - throw new Error(message); -} - -assert.sameValue(0n >> 0n, 0n, "0n >> 0n === 0n"); -assert.sameValue(0b101n >> -1n, 0b1010n, "0b101n >> -1n === 0b1010n"); -assert.sameValue(0b101n >> -2n, 0b10100n, "0b101n >> -2n === 0b10100n"); -assert.sameValue(0b101n >> -3n, 0b101000n, "0b101n >> -3n === 0b101000n"); -assert.sameValue(0b101n >> 1n, 0b10n, "0b101n >> 1n === 0b10n"); -assert.sameValue(0b101n >> 2n, 1n, "0b101n >> 2n === 1n"); -assert.sameValue(0b101n >> 3n, 0n, "0b101n >> 3n === 0n"); -assert.sameValue(0n >> -128n, 0n, "0n >> -128n === 0n"); -assert.sameValue(0n >> 128n, 0n, "0n >> 128n === 0n"); -assert.sameValue(0x246n >> 0n, 0x246n, "0x246n >> 0n === 0x246n"); -assert.sameValue(0x246n >> -127n, 0x12300000000000000000000000000000000n, "0x246n >> -127n === 0x12300000000000000000000000000000000n"); -assert.sameValue(0x246n >> -128n, 0x24600000000000000000000000000000000n, "0x246n >> -128n === 0x24600000000000000000000000000000000n"); -assert.sameValue(0x246n >> -129n, 0x48c00000000000000000000000000000000n, "0x246n >> -129n === 0x48c00000000000000000000000000000000n"); -assert.sameValue(0x246n >> 128n, 0n, "0x246n >> 128n === 0n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> -64n, 0x123456789abcdef0fedcba98765432123456780000000000000000n, - "0x123456789abcdef0fedcba9876543212345678n >> -64n === 0x123456789abcdef0fedcba98765432123456780000000000000000n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> -32n, 0x123456789abcdef0fedcba987654321234567800000000n, - "0x123456789abcdef0fedcba9876543212345678n >> -32n === 0x123456789abcdef0fedcba987654321234567800000000n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> -16n, 0x123456789abcdef0fedcba98765432123456780000n, - "0x123456789abcdef0fedcba9876543212345678n >> -16n === 0x123456789abcdef0fedcba98765432123456780000n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> 0n, 0x123456789abcdef0fedcba9876543212345678n, - "0x123456789abcdef0fedcba9876543212345678n >> 0n === 0x123456789abcdef0fedcba9876543212345678n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> 16n, 0x123456789abcdef0fedcba987654321234n, - "0x123456789abcdef0fedcba9876543212345678n >> 16n === 0x123456789abcdef0fedcba987654321234n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> 32n, 0x123456789abcdef0fedcba98765432n, - "0x123456789abcdef0fedcba9876543212345678n >> 32n === 0x123456789abcdef0fedcba98765432n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> 64n, 0x123456789abcdef0fedcban, - "0x123456789abcdef0fedcba9876543212345678n >> 64n === 0x123456789abcdef0fedcban"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> 127n, 0x2468acn, - "0x123456789abcdef0fedcba9876543212345678n >> 127n === 0x2468acn"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> 128n, 0x123456n, - "0x123456789abcdef0fedcba9876543212345678n >> 128n === 0x123456n"); -assert.sameValue( - 0x123456789abcdef0fedcba9876543212345678n >> 129n, 0x91a2bn, - "0x123456789abcdef0fedcba9876543212345678n >> 129n === 0x91a2bn"); -assert.sameValue(-5n >> -1n, -0xan, "-5n >> -1n === -0xan"); -assert.sameValue(-5n >> -2n, -0x14n, "-5n >> -2n === -0x14n"); -assert.sameValue(-5n >> -3n, -0x28n, "-5n >> -3n === -0x28n"); -assert.sameValue(-5n >> 1n, -3n, "-5n >> 1n === -3n"); -assert.sameValue(-5n >> 2n, -2n, "-5n >> 2n === -2n"); -assert.sameValue(-5n >> 3n, -1n, "-5n >> 3n === -1n"); -assert.sameValue(-1n >> -128n, -0x100000000000000000000000000000000n, "-1n >> -128n === -0x100000000000000000000000000000000n"); -assert.sameValue(-1n >> 0n, -1n, "-1n >> 0n === -1n"); -assert.sameValue(-1n >> 128n, -1n, "-1n >> 128n === -1n"); -assert.sameValue(-0x246n >> 0n, -0x246n, "-0x246n >> 0n === -0x246n"); -assert.sameValue(-0x246n >> -127n, -0x12300000000000000000000000000000000n, "-0x246n >> -127n === -0x12300000000000000000000000000000000n"); -assert.sameValue(-0x246n >> -128n, -0x24600000000000000000000000000000000n, "-0x246n >> -128n === -0x24600000000000000000000000000000000n"); -assert.sameValue(-0x246n >> -129n, -0x48c00000000000000000000000000000000n, "-0x246n >> -129n === -0x48c00000000000000000000000000000000n"); -assert.sameValue(-0x246n >> 128n, -1n, "-0x246n >> 128n === -1n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> -64n, -0x123456789abcdef0fedcba98765432123456780000000000000000n, - "-0x123456789abcdef0fedcba9876543212345678n >> -64n === -0x123456789abcdef0fedcba98765432123456780000000000000000n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> -32n, -0x123456789abcdef0fedcba987654321234567800000000n, - "-0x123456789abcdef0fedcba9876543212345678n >> -32n === -0x123456789abcdef0fedcba987654321234567800000000n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> -16n, -0x123456789abcdef0fedcba98765432123456780000n, - "-0x123456789abcdef0fedcba9876543212345678n >> -16n === -0x123456789abcdef0fedcba98765432123456780000n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> 0n, -0x123456789abcdef0fedcba9876543212345678n, - "-0x123456789abcdef0fedcba9876543212345678n >> 0n === -0x123456789abcdef0fedcba9876543212345678n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> 16n, -0x123456789abcdef0fedcba987654321235n, - "-0x123456789abcdef0fedcba9876543212345678n >> 16n === -0x123456789abcdef0fedcba987654321235n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> 32n, -0x123456789abcdef0fedcba98765433n, - "-0x123456789abcdef0fedcba9876543212345678n >> 32n === -0x123456789abcdef0fedcba98765433n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> 64n, -0x123456789abcdef0fedcbbn, - "-0x123456789abcdef0fedcba9876543212345678n >> 64n === -0x123456789abcdef0fedcbbn"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> 127n, -0x2468adn, - "-0x123456789abcdef0fedcba9876543212345678n >> 127n === -0x2468adn"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> 128n, -0x123457n, - "-0x123456789abcdef0fedcba9876543212345678n >> 128n === -0x123457n"); -assert.sameValue( - -0x123456789abcdef0fedcba9876543212345678n >> 129n, -0x91a2cn, - "-0x123456789abcdef0fedcba9876543212345678n >> 129n === -0x91a2cn"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-right-shift-type-error.js b/implementation-contributed/javascriptcore/stress/big-int-right-shift-type-error.js deleted file mode 100644 index 084ccd462d6..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-right-shift-type-error.js +++ /dev/null @@ -1,104 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, message) { - if (!a) - throw new Error(message); -} - -function assertThrowTypeError(a, b, message) { - try { - let n = a >> b; - assert(false, message + ": Should throw TypeError, but executed without exception"); - } catch (e) { - assert(e instanceof TypeError, message + ": expected TypeError, got: " + e); - } -} - -assertThrowTypeError(30n, "foo", "BigInt >> String"); -assertThrowTypeError("bar", 18757382984821n, "String >> BigInt"); -assertThrowTypeError(30n, Symbol("foo"), "BigInt >> Symbol"); -assertThrowTypeError(Symbol("bar"), 18757382984821n, "Symbol >> BigInt"); -assertThrowTypeError(30n, 3320, "BigInt >> Int32"); -assertThrowTypeError(33256, 18757382984821n, "Int32 >> BigInt"); -assertThrowTypeError(30n, 0.543, "BigInt >> Double"); -assertThrowTypeError(230.19293, 18757382984821n, "Double >> BigInt"); -assertThrowTypeError(30n, NaN, "BigInt >> NaN"); -assertThrowTypeError(NaN, 18757382984821n, "NaN >> BigInt"); -assertThrowTypeError(30n, +Infinity, "BigInt >> +Infinity"); -assertThrowTypeError(+Infinity, 18757382984821n, "+Infinity >> BigInt"); -assertThrowTypeError(30n, -Infinity, "BigInt >> -Infinity"); -assertThrowTypeError(-Infinity, 18757382984821n, "-Infinity >> BigInt"); -assertThrowTypeError(30n, null, "BigInt >> null"); -assertThrowTypeError(null, 18757382984821n, "null >> BigInt"); -assertThrowTypeError(30n, undefined, "BigInt >> undefined"); -assertThrowTypeError(undefined, 18757382984821n, "undefined >> BigInt"); -assertThrowTypeError(30n, true, "BigInt >> true"); -assertThrowTypeError(true, 18757382984821n, "true >> BigInt"); -assertThrowTypeError(30n, false, "BigInt >> false"); -assertThrowTypeError(false, 18757382984821n, "false >> BigInt"); - -// Error when returning from object - -let o = { - valueOf: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt >> Object.valueOf returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Symbol >> BigInt"); - -o = { - valueOf: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt >> Object.valueOf returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Int32 >> BigInt"); - -o = { - valueOf: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt >> Object.valueOf returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Double >> BigInt"); - -o = { - toString: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt >> Object.toString returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Symbol >> BigInt"); - -o = { - toString: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt >> Object.toString returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Int32 >> BigInt"); - -o = { - toString: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt >> Object.toString returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.toString returning Double >> BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return Symbol("Foo"); } -}; - -assertThrowTypeError(30n, o, "BigInt >> Object.@@toPrimitive returning Symbol"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Symbol >> BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 33256; } -}; - -assertThrowTypeError(30n, o, "BigInt >> Object.@@toPrimitive returning Int32"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Int32 >> BigInt"); - -o = { - [Symbol.toPrimitive]: function () { return 0.453; } -}; - -assertThrowTypeError(30n, o, "BigInt >> Object.@@toPrimitive returning Double"); -assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Double >> BigInt"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-right-shift-wrapped-value.js b/implementation-contributed/javascriptcore/stress/big-int-right-shift-wrapped-value.js deleted file mode 100644 index b96b2e393cf..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-right-shift-wrapped-value.js +++ /dev/null @@ -1,36 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -function testRightShift(x, y, z, message) { - assert.sameValue(x >> y, z, message); -} - -testRightShift(Object(0b10n), 1n, 0b1n, "ToPrimitive: unbox object with internal slot"); - -let o = { - [Symbol.toPrimitive]: function() { - return 0b10n; - } -}; -testRightShift(o, 0b01n, 0b1n, "ToPrimitive: @@toPrimitive"); - -o = { - valueOf: function() { - return 0b10n; - } -}; -testRightShift(o, 0b01n, 0b1n, "ToPrimitive: valueOf"); - -o = { - toString: function() { - return 0b10n; - } -} -testRightShift(o, 0b01n, 0b1n, "ToPrimitive: toString"); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-subtraction-jit.js b/implementation-contributed/javascriptcore/stress/big-int-subtraction-jit.js deleted file mode 100644 index 2e1f6ae8c2a..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-subtraction-jit.js +++ /dev/null @@ -1,19 +0,0 @@ -//@ runBigIntEnabled - -let assert = { - sameValue: function(i, e, m) { - if (i !== e) - throw new Error(m); - } -} - -function bigIntAddition(x, y) { - return x - y - 1n; -} -noInline(bigIntAddition); - -for (let i = 0; i < 10000; i++) { - let r = bigIntAddition(3n, 10n); - assert.sameValue(r, -8n, 3n + " - " + 10n + " - 1 = " + r); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-int-to-string.js b/implementation-contributed/javascriptcore/stress/big-int-to-string.js deleted file mode 100644 index d6851c951bd..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-to-string.js +++ /dev/null @@ -1,57 +0,0 @@ -//@ runBigIntEnabled - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -let v = 10n; -assert(v.toString() === "10"); -assert(v.toString(2) === "1010"); -assert(v.toString(3) === "101"); -assert(v.toString(8) === "12"); -assert(v.toString(16) === "a"); -assert(v.toString(32) === "a"); - -v = 191561942608236107294793378393788647952342390272950271n; -assert(v.toString() === "191561942608236107294793378393788647952342390272950271"); -assert(v.toString(2) === "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"); -assert(v.toString(3) === "2002122121011101220102010210020102000210011100122221002112102021022221102202020101221000021200201121121100121121"); -assert(v.toString(8) === "77777777777777777777777777777777777777777777777777777777777"); -assert(v.toString(16) === "1ffffffffffffffffffffffffffffffffffffffffffff"); -assert(v.toString(32) === "3vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv"); - -v = -10n; -assert(v.toString() === "-10"); -assert(v.toString(2) === "-1010"); -assert(v.toString(3) === "-101"); -assert(v.toString(8) === "-12"); -assert(v.toString(16) === "-a"); -assert(v.toString(32) === "-a"); - -v = -191561942608236107294793378393788647952342390272950271n; -assert(v.toString() === "-191561942608236107294793378393788647952342390272950271"); -assert(v.toString(2) === "-111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"); -assert(v.toString(3) === "-2002122121011101220102010210020102000210011100122221002112102021022221102202020101221000021200201121121100121121"); -assert(v.toString(8) === "-77777777777777777777777777777777777777777777777777777777777"); -assert(v.toString(16) === "-1ffffffffffffffffffffffffffffffffffffffffffff"); -assert(v.toString(32) === "-3vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv"); - -// Invaid radix - -function testInvalidRadix(radix) { - try { - v.toString(radix); - assert(false); - } catch(e) { - assert(e instanceof RangeError); - } -} - -testInvalidRadix(-10); -testInvalidRadix(-1); -testInvalidRadix(0); -testInvalidRadix(1); -testInvalidRadix(37); -testInvalidRadix(4294967312); - diff --git a/implementation-contributed/javascriptcore/stress/big-int-type-of-proven-type-non-constant-including-symbol.js b/implementation-contributed/javascriptcore/stress/big-int-type-of-proven-type-non-constant-including-symbol.js deleted file mode 100644 index a845f7e028d..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-type-of-proven-type-non-constant-including-symbol.js +++ /dev/null @@ -1,33 +0,0 @@ -//@ runBigIntEnabled - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -function typeOf(n) { - var value = "string"; - var dispatcher = n % 3; - if (dispatcher === 0) - value = 1n; - else if (dispatcher === 1) - value = "string"; - else - value = Symbol("symbol"); - return typeof value; -} -noInline(typeOf); - -for (let i = 0; i < 1e6; i++) { - switch (i % 3) { - case 0: - assert(typeOf(i) === "bigint"); - break; - case 1: - assert(typeOf(i) === "string"); - break; - case 2: - assert(typeOf(i) === "symbol"); - break; - } -} diff --git a/implementation-contributed/javascriptcore/stress/big-int-type-of-proven-type-non-constant.js b/implementation-contributed/javascriptcore/stress/big-int-type-of-proven-type-non-constant.js deleted file mode 100644 index 13c36445d51..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-type-of-proven-type-non-constant.js +++ /dev/null @@ -1,21 +0,0 @@ -//@ runBigIntEnabled - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -function typeOf(n) { - var value = "string"; - if (n & 0x1) - value = 1n; - return typeof value; -} -noInline(typeOf); - -for (let i = 0; i < 1e6; i++) { - if (i & 0x1) - assert(typeOf(i) === "bigint"); - else - assert(typeOf(i) === "string"); -} diff --git a/implementation-contributed/javascriptcore/stress/big-int-type-of.js b/implementation-contributed/javascriptcore/stress/big-int-type-of.js deleted file mode 100644 index 37f3ab6fd34..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-type-of.js +++ /dev/null @@ -1,34 +0,0 @@ -//@ runBigIntEnabled - -function assert(a) { - if (!a) - throw new Error("Bad assertion"); -} - -assert(typeof 0n === "bigint"); -assert(typeof 1n !== "object"); - -function typeOf(value) -{ - return typeof value; -} -noInline(typeOf); - -var object = {}; -var func = function () { }; -var bigInt = 1n; -var number = 0; -var string = "String"; -var symbol = Symbol("Symbol"); - -for (var i = 0; i < 1e6; ++i) { - assert(typeOf(object) === "object"); - assert(typeOf(func) === "function"); - assert(typeOf(bigInt) === "bigint"); - assert(typeOf(number) === "number"); - assert(typeOf(string) === "string"); - assert(typeOf(symbol) === "symbol"); - assert(typeOf(null) === "object"); - assert(typeOf(undefined) === "undefined"); - assert(typeOf(true) === "boolean"); -} diff --git a/implementation-contributed/javascriptcore/stress/big-int-value-op-update-gc-rules.js b/implementation-contributed/javascriptcore/stress/big-int-value-op-update-gc-rules.js deleted file mode 100644 index 56e526f7e11..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-int-value-op-update-gc-rules.js +++ /dev/null @@ -1,105 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, e) { - if (a !== e) - throw new Error("Expected: " + e + " but got: " + a); -} - -function doesGCAdd(a) { - let o = {}; - let c = a + 1n; - o.b = c; - - return o; -} -noInline(doesGCAdd); - -for (var i = 0; i < 10000; i++) { - let o = doesGCAdd(3n); - assert(o.b, 4n); -} - -function doesGCSub(a) { - let o = {}; - let c = a - 1n; - o.b = c; - - return o; -} -noInline(doesGCSub); - -for (var i = 0; i < 10000; i++) { - let o = doesGCSub(3n); - assert(o.b, 2n); -} - -function doesGCDiv(a) { - let o = {}; - let c = a / 2n; - o.b = c; - - return o; -} -noInline(doesGCDiv); - -for (var i = 0; i < 10000; i++) { - let o = doesGCDiv(4n); - assert(o.b, 2n); -} - -function doesGCMul(a) { - let o = {}; - let c = a * 2n; - o.b = c; - - return o; -} -noInline(doesGCMul); - -for (var i = 0; i < 10000; i++) { - let o = doesGCMul(4n); - assert(o.b, 8n); -} - -function doesGCBitAnd(a) { - let o = {}; - let c = a & 0b11n; - o.b = c; - - return o; -} -noInline(doesGCBitAnd); - -for (var i = 0; i < 10000; i++) { - let o = doesGCBitAnd(0b1010n); - assert(o.b, 0b10n); -} - -function doesGCBitOr(a) { - let o = {}; - let c = a | 0b11n; - o.b = c; - - return o; -} -noInline(doesGCBitOr); - -for (var i = 0; i < 10000; i++) { - let o = doesGCBitOr(0b10n); - assert(o.b, 0b11n); -} - -function doesGCBitXor(a) { - let o = {}; - let c = a ^ 0b11n; - o.b = c; - - return o; -} -noInline(doesGCBitXor); - -for (var i = 0; i < 10000; i++) { - let o = doesGCBitXor(0b10n); - assert(o.b, 0b1n); -} - diff --git a/implementation-contributed/javascriptcore/stress/big-wasm-memory-grow-no-max.js b/implementation-contributed/javascriptcore/stress/big-wasm-memory-grow-no-max.js deleted file mode 100644 index 5b80dca1822..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-wasm-memory-grow-no-max.js +++ /dev/null @@ -1,45 +0,0 @@ -//@ skip if $memoryLimited - -function test() { - - // We don't support WebAssembly everywhere, so check for its existance before doing anything else. - if (!this.WebAssembly) - return; - - let bigArray = new Array(0x7000000); - bigArray[0] = 1.1; - bigArray[1] = 1.2; - - function foo(array) { - var index = array.length; - if (index >= bigArray.length || (index - 0x1ffdc01) < 0) - return; - return bigArray[index - 0x1ffdc01]; - } - - noInline(foo); - - var okArray = new Uint8Array(0x1ffdc02); - - for (var i = 0; i < 10000; ++i) - foo(okArray); - - var ok = false; - try { - var memory = new WebAssembly.Memory({ initial: 0x1000 }); - memory.grow(0x7000); - var result = foo(new Uint8Array(memory.buffer)); - if (result !== void 0) - throw "Error: bad result at end: " + result; - ok = true; - } catch (e) { - if (e.toString() != "Error: Out of memory") - throw e; - } - - if (ok) - throw "Error: did not throw error"; - -} - -test(); diff --git a/implementation-contributed/javascriptcore/stress/big-wasm-memory-grow.js b/implementation-contributed/javascriptcore/stress/big-wasm-memory-grow.js deleted file mode 100644 index 0e43577332e..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-wasm-memory-grow.js +++ /dev/null @@ -1,45 +0,0 @@ -//@ skip if $memoryLimited - -function test() { - - // We don't support WebAssembly everywhere, so check for its existance before doing anything else. - if (!this.WebAssembly) - return; - - let bigArray = new Array(0x7000000); - bigArray[0] = 1.1; - bigArray[1] = 1.2; - - function foo(array) { - var index = array.length; - if (index >= bigArray.length || (index - 0x1ffdc01) < 0) - return; - return bigArray[index - 0x1ffdc01]; - } - - noInline(foo); - - var okArray = new Uint8Array(0x1ffdc02); - - for (var i = 0; i < 10000; ++i) - foo(okArray); - - var ok = false; - try { - var memory = new WebAssembly.Memory({ initial: 0x1000, maximum: 0x8000 }); - memory.grow(0x7000); - var result = foo(new Uint8Array(memory.buffer)); - if (result !== void 0) - throw "Error: bad result at end: " + result; - ok = true; - } catch (e) { - if (e.toString() != "Error: Out of memory") - throw e; - } - - if (ok) - throw "Error: did not throw error"; - -} - -test(); diff --git a/implementation-contributed/javascriptcore/stress/big-wasm-memory.js b/implementation-contributed/javascriptcore/stress/big-wasm-memory.js deleted file mode 100644 index 1afad7aedc6..00000000000 --- a/implementation-contributed/javascriptcore/stress/big-wasm-memory.js +++ /dev/null @@ -1,43 +0,0 @@ -//@ skip if $memoryLimited - -function test() { - - // We don't support WebAssembly everywhere, so check for its existance before doing anything else. - if (!this.WebAssembly) - return; - - let bigArray = new Array(0x7000000); - bigArray[0] = 1.1; - bigArray[1] = 1.2; - - function foo(array) { - var index = array.length; - if (index >= bigArray.length || (index - 0x1ffdc01) < 0) - return; - return bigArray[index - 0x1ffdc01]; - } - - noInline(foo); - - var okArray = new Uint8Array(0x1ffdc02); - - for (var i = 0; i < 10000; ++i) - foo(okArray); - - var ok = false; - try { - var result = foo(new Uint8Array(new WebAssembly.Memory({ initial: 0x8000, maximum: 0x8000 }).buffer)); - if (result !== void 0) - throw "Error: bad result at end: " + result; - ok = true; - } catch (e) { - if (e.toString() != "Error: Out of memory") - throw e; - } - - if (ok) - throw "Error: did not throw error"; - -} - -test(); diff --git a/implementation-contributed/javascriptcore/stress/bit-not-must-generate.js b/implementation-contributed/javascriptcore/stress/bit-not-must-generate.js deleted file mode 100644 index 83fa63b6d95..00000000000 --- a/implementation-contributed/javascriptcore/stress/bit-not-must-generate.js +++ /dev/null @@ -1,26 +0,0 @@ -function assert(a, e) { - if (a !== e) { - throw new Error("Bad!"); - } -} - -function foo(a) { - let loc = ~a; - return a + 2; -} -noInline(foo); - -let b = 0; -let o = { - valueOf: function () { - b++; - return 2; - } -}; - -for (let i = 0; i < 100000; i++) { - assert(foo(o), 4); -} - -assert(b, 200000) - diff --git a/implementation-contributed/javascriptcore/stress/bit-op-with-object-returning-int32.js b/implementation-contributed/javascriptcore/stress/bit-op-with-object-returning-int32.js deleted file mode 100644 index 7e9134498e9..00000000000 --- a/implementation-contributed/javascriptcore/stress/bit-op-with-object-returning-int32.js +++ /dev/null @@ -1,38 +0,0 @@ -//@ skip if not $jitTests -function assert(a, e) { - if (a !== e) - throw new Error("Expected: " + e + " but got: " + a); -} - -function bitAnd(a, b) { - return a & b; -} -noInline(bitAnd); - -var o = { valueOf: () => 0b1101 }; - -for (var i = 0; i < 10000; i++) - assert(bitAnd(0b11, o), 0b1); - -assert(numberOfDFGCompiles(bitAnd) <= 1, true); - -function bitOr(a, b) { - return a | b; -} -noInline(bitOr); - -for (var i = 0; i < 10000; i++) - assert(bitOr(0b11, o), 0b1111); - -assert(numberOfDFGCompiles(bitOr) <= 1, true); - -function bitXor(a, b) { - return a ^ b; -} -noInline(bitXor); - -for (var i = 0; i < 10000; i++) - assert(bitXor(0b0011, o), 0b1110); - -assert(numberOfDFGCompiles(bitXor) <= 1, true); - diff --git a/implementation-contributed/javascriptcore/stress/bitwise-not-no-int32.js b/implementation-contributed/javascriptcore/stress/bitwise-not-no-int32.js deleted file mode 100644 index 3a298133443..00000000000 --- a/implementation-contributed/javascriptcore/stress/bitwise-not-no-int32.js +++ /dev/null @@ -1,30 +0,0 @@ -function assert(a, e, m) { - if (a !== e) - throw new Error("Expected to be: " + e + " but got: " + a); -} - -function bitNot(a) { - return ~a; -} -noInline(bitNot); - -for (let i = 0; i < 10000; i++) { - let r = bitNot("0"); - assert(r, -1); - r = bitNot("1"); - assert(r, -2); - r = bitNot("-1"); - assert(r, 0); - r = bitNot("-2"); - assert(r, 1); - - r = bitNot({ valueOf: () => 0 }); - assert(r, -1); - r = bitNot({ valueOf: () => 1 }); - assert(r, -2); - r = bitNot({ valueOf: () => -1 }); - assert(r, 0); - r = bitNot({ valueOf: () => -2 }); - assert(r, 1); -} - diff --git a/implementation-contributed/javascriptcore/stress/block-scope-redeclarations.js b/implementation-contributed/javascriptcore/stress/block-scope-redeclarations.js deleted file mode 100644 index e244647d8df..00000000000 --- a/implementation-contributed/javascriptcore/stress/block-scope-redeclarations.js +++ /dev/null @@ -1,39 +0,0 @@ -function shouldNotThrow(script) { - eval(script); -} - -function shouldThrowSyntaxError(script) { - let error; - try { - eval(script); - } catch (e) { - error = e; - } - - if (!(error instanceof SyntaxError)) - throw new Error('Expected SyntaxError!'); -} - -shouldThrowSyntaxError('{ var x; let x; }'); -shouldThrowSyntaxError('{ { var x; } let x; }'); -shouldThrowSyntaxError('{ { { var x; } } let x; }'); -shouldThrowSyntaxError('{ let x; var x; }'); -shouldThrowSyntaxError('{ let x; { var x; } }'); -shouldThrowSyntaxError('{ let x; { { var x; } } }'); - -shouldNotThrow('{ var x; { let x; } }'); -shouldNotThrow('{ var x; { { let x; } } }'); -shouldNotThrow('{ { let x; } var x; }'); -shouldNotThrow('{ { { let x; } } var x; }'); - -shouldThrowSyntaxError('{ var x; const x = 0; }'); -shouldThrowSyntaxError('{ { var x; } const x = 0; }'); -shouldThrowSyntaxError('{ { { var x; } } const x = 0; }'); -shouldThrowSyntaxError('{ const x = 0; var x; }'); -shouldThrowSyntaxError('{ const x = 0; { var x; } }'); -shouldThrowSyntaxError('{ const x = 0; { { var x; } } }'); - -shouldNotThrow('{ var x; { const x = 0; } }'); -shouldNotThrow('{ var x; { { const x = 0; } } }'); -shouldNotThrow('{ { const x = 0; } var x; }'); -shouldNotThrow('{ { { const x = 0; } } var x; }'); diff --git a/implementation-contributed/javascriptcore/stress/builtin-function-length.js b/implementation-contributed/javascriptcore/stress/builtin-function-length.js deleted file mode 100644 index aada11310fc..00000000000 --- a/implementation-contributed/javascriptcore/stress/builtin-function-length.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Reviewed - * Add length property check for function forms in the language folder - */ - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} - -{ - shouldBe(JSON.stringify(Object.getOwnPropertyNames(Array.prototype.filter).sort()), `["length","name"]`); - shouldBe(Array.prototype.filter.length, 1); - shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(Array.prototype.filter, 'length')), `{"value":1,"writable":false,"enumerable":false,"configurable":true}`); - shouldBe(delete Array.prototype.filter.length, true); - shouldBe(JSON.stringify(Object.getOwnPropertyNames(Array.prototype.filter).sort()), `["name"]`); -} - -{ - shouldThrow(function () { - "use strict"; - Array.prototype.forEach.length = 42; - }, `TypeError: Attempted to assign to readonly property.`); -} - -{ - var resolve = null; - var reject = null; - new Promise(function (arg0, arg1) { - resolve = arg0; - reject = arg1; - }); - shouldBe(resolve.length, 1); - shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(resolve, 'length')), `{"value":1,"writable":false,"enumerable":false,"configurable":true}`); - shouldBe(reject.length, 1); - shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(reject, 'length')), `{"value":1,"writable":false,"enumerable":false,"configurable":true}`); -} diff --git a/implementation-contributed/javascriptcore/stress/cant-eliminate-string-object-structure-check-when-string-object-is-proven.js b/implementation-contributed/javascriptcore/stress/cant-eliminate-string-object-structure-check-when-string-object-is-proven.js deleted file mode 100644 index eb20e5f931c..00000000000 --- a/implementation-contributed/javascriptcore/stress/cant-eliminate-string-object-structure-check-when-string-object-is-proven.js +++ /dev/null @@ -1,11 +0,0 @@ -//@ runDefault("--forceEagerCompilation=1", "--useConcurrentJIT=0") - -function foo(x) { - x.toString(); -} - -var a = new String(); -a.valueOf = 0 -for (var i = 0; i < 5; i++) { - foo(a) -} diff --git a/implementation-contributed/javascriptcore/stress/completion-value.js b/implementation-contributed/javascriptcore/stress/completion-value.js deleted file mode 100644 index 56b5ed58097..00000000000 --- a/implementation-contributed/javascriptcore/stress/completion-value.js +++ /dev/null @@ -1,293 +0,0 @@ -/** - * reviewed - * v8: add tests for completion value resolution in try/catch/finally blocks (anything returning -2) - */ - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function shouldBeWithValueCheck(actual, callback) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -// Basic. -shouldBe(eval(), undefined); -shouldBe(eval(""), undefined); -shouldBe(eval(`1`), 1); -shouldBe(eval(`1; 2`), 2); - -// Types of statements: -// https://tc39.github.io/ecma262/#prod-Statement - -// Statements that produce an (empty) completion value do not affect results: -// - EmptyStatement -// - DebuggerStatement -// - BlockStatement (with no substatement) -// - DeclarationStatements (variables, functions, classes) -// - LabelledStatement (with an empty statement) -// - ContinueStatement / BreakStatement (tested below) -shouldBe(eval(`42;`), 42); -shouldBe(eval(`42;;;;;`), 42); -shouldBe(eval(`42; var x;`), 42); -shouldBe(eval(`42; let x;`), 42); -shouldBe(eval(`42; const x = 1;`), 42); -shouldBe(eval(`42; var x = 1;`), 42); -shouldBe(eval(`42; var x = 1, y = 2;`), 42); -shouldBe(eval(`42; debugger;`), 42); -shouldBe(eval(`42; { }`), 42); -shouldBe(eval(`42; class foo {}`), 42); -shouldBe(eval(`42; function foo() {}`), 42); -shouldBe(eval(`42; function* foo() {}`), 42); -shouldBe(eval(`42; async function foo() {}`), 42); -shouldBe(eval(`42; label: {}`), 42); -shouldBe(eval(`42; { { var x; } var y; { { debugger } ;; } function foo() {} }`), 42); - -// ExpressionStatement -shouldBe(eval(`99; 42`), 42); -shouldBe(eval(`99; { 42 }`), 42); -shouldBe(eval(`99; label: { 42 }`), 42); -shouldBe(eval(`99; x = 42`), 42); -shouldBe(eval(`99; x = 42; x`), 42); -shouldBe(eval(`99; 1, 2, 3, 42`), 42); -shouldBe(eval(`99; x = 41; ++x`), 42); -shouldBe(eval(`99; x = 42; x++`), 42); -shouldBe(eval(`99; true ? 42 : -1`), 42); -shouldBe(eval(`99; false ? -1 : 42`), 42); -shouldBe(Array.isArray(eval(`99; [x,y] = [1,2]`)), true); -shouldBe(typeof eval(`99; ({})`), "object"); -shouldBe(typeof eval(`99; (function foo() {})`), "function"); -shouldBe(typeof eval(`99; (function* foo() {})`), "function"); -shouldBe(typeof eval(`99; (async function foo() {})`), "function"); -shouldBe(typeof eval(`99; (class foo {})`), "function"); - -// IfStatement -shouldBe(eval(`99; if (true);`), undefined); -shouldBe(eval(`99; if (false);`), undefined); -shouldBe(eval(`99; if (true) 42;`), 42); -shouldBe(eval(`99; if (false) -1;`), undefined); -shouldBe(eval(`99; if (true) {}`), undefined); -shouldBe(eval(`99; if (true) {42}`), 42); -shouldBe(eval(`99; if (false) {}`), undefined); -shouldBe(eval(`99; if (false) {42}`), undefined); -shouldBe(eval(`99; if (false) {-1} else {}`), undefined); -shouldBe(eval(`99; if (false) {-1} else {42}`), 42); -shouldBe(eval(`99; if (false) {-1} else if (true) {}`), undefined); -shouldBe(eval(`99; if (false) {-1} else if (true) {42}`), 42); -shouldBe(eval(`99; if (false) {-1} else if (true) {} else {-2}`), undefined); -shouldBe(eval(`99; if (false) {-1} else if (true) {42} else {-2}`), 42); -shouldBe(eval(`99; if (false) {-1} else if (false) {-2} else {}`), undefined); -shouldBe(eval(`99; if (false) {-1} else if (false) {-2} else {42}`), 42); - -// DoWhile -shouldBe(eval(`99; do; while (false);`), undefined); -shouldBe(eval(`99; do 42; while (false);`), 42); -shouldBe(eval(`99; do {} while (false);`), undefined); -shouldBe(eval(`99; do break; while (true);`), undefined); -shouldBe(eval(`99; do { break } while (true);`), undefined); -shouldBe(eval(`99; do { 42 } while (false);`), 42); -shouldBe(eval(`let x = 1; do { x } while (x++ !== (5+5));`), 10); -shouldBe(eval(`let x = 1; do { x; 42 } while (x++ !== (5+5));`), 42); -shouldBe(eval(`let x = 1; do { x; break } while (x++ !== (5+5));`), 1); -shouldBe(eval(`let x = 1; do { x; continue } while (x++ !== (5+5));`), 10); - -// While -shouldBe(eval(`99; while (false);`), undefined); -shouldBe(eval(`99; while (false) {};`), undefined); -shouldBe(eval(`99; while (true) break;`), undefined); -shouldBe(eval(`99; while (true) { break };`), undefined); -shouldBe(eval(`99; while (true) { 42; break };`), 42); -shouldBe(eval(`let x = 1; while (x++ !== (5+5)) ;`), undefined); -shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { }`), undefined); -shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { x }`), 10); -shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { x; 42 }`), 42); -shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { x; break }`), 2); -shouldBe(eval(`let x = 1; while (x++ !== (5+5)) { x; continue }`), 10); - -// For -shouldBe(eval(`99; for (;false;);`), undefined); -shouldBe(eval(`99; for (;false;) {}`), undefined); -shouldBe(eval(`99; for (var x = 1;false;);`), undefined); -shouldBe(eval(`99; for (x = 1;false;) {}`), undefined); -shouldBe(eval(`99; for (;;) break;`), undefined); -shouldBe(eval(`99; for (;;) { break }`), undefined); -shouldBe(eval(`99; for (;;) { 42; break }`), 42); -shouldBe(eval(`99; for (;;) { 42; break; 3 }`), 42); -shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) x;`), 9); -shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; }`), 9); -shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; 42 }`), 42); -shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; break }`), 1); -shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; break; 3 }`), 1); -shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; continue }`), 9); -shouldBe(eval(`99; for (x = 1; x !== (5+5); x++) { x; continue; 3 }`), 9); - -// ForOf -shouldBe(eval(`99; for (var x of []) -1;`), undefined); -shouldBe(eval(`99; for (x of []) -1;`), undefined); -shouldBe(eval(`99; for (var x of [1,2]);`), undefined); -shouldBe(eval(`99; for (x of [1,2]);`), undefined); -shouldBe(eval(`99; for (x of [1,2]) {}`), undefined); -shouldBe(eval(`99; for (x of [1,2]) break;`), undefined); -shouldBe(eval(`99; for (x of [1,2]) { break; }`), undefined); -shouldBe(eval(`99; for (x of [1,2]) { break; 3; }`), undefined); -shouldBe(eval(`99; for (x of [1,2]) x`), 2); -shouldBe(eval(`99; for (x of [1,2]) { x }`), 2); -shouldBe(eval(`99; for (x of [1,2]) { x; break }`), 1); -shouldBe(eval(`99; for (x of [1,2]) { x; break; 3 }`), 1); -shouldBe(eval(`99; for (x of [1,2]) { x; continue }`), 2); -shouldBe(eval(`99; for (x of [1,2]) { x; continue; 3 }`), 2); - -// ForIn -shouldBe(eval(`99; for (var x in {}) -1;`), undefined); -shouldBe(eval(`99; for (x in {}) -1;`), undefined); -shouldBe(eval(`99; for (var x in {a:1,b:2});`), undefined); -shouldBe(eval(`99; for (x in {a:1,b:2});`), undefined); -shouldBe(eval(`99; for (x in {a:1,b:2}) {}`), undefined); -shouldBe(eval(`99; for (x in {a:1,b:2}) break;`), undefined); -shouldBe(eval(`99; for (x in {a:1,b:2}) { break; }`), undefined); -shouldBe(eval(`99; for (x in {a:1,b:2}) { break; 3; }`), undefined); -shouldBe(eval(`99; for (x in {a:1,b:2}) x`), "b"); -shouldBe(eval(`99; for (x in {a:1,b:2}) { x }`), "b"); -shouldBe(eval(`99; for (x in {a:1,b:2}) { x; break }`), "a"); -shouldBe(eval(`99; for (x in {a:1,b:2}) { x; break; 3 }`), "a"); -shouldBe(eval(`99; for (x in {a:1,b:2}) { x; continue }`), "b"); -shouldBe(eval(`99; for (x in {a:1,b:2}) { x; continue; 3 }`), "b"); - -// SwitchStatement -shouldBe(eval(`99; switch (1) { }`), undefined); -shouldBe(eval(`99; switch (1) { default:}`), undefined); -shouldBe(eval(`99; switch (1) { default:42}`), 42); -shouldBe(eval(`99; switch (1) { default:break;}`), undefined); -shouldBe(eval(`99; switch (1) { case 1: /* empty */ }`), undefined); -shouldBe(eval(`99; switch (1) { case 1: 42 }`), 42); -shouldBe(eval(`99; switch (1) { case 1: break; }`), undefined); -shouldBe(eval(`99; switch (1) { case 1: break; }`), undefined); -shouldBe(eval(`99; switch (1) { case 2: case 1: /* empty */ }`), undefined); -shouldBe(eval(`99; switch (1) { case 2: case 1: 42 }`), 42); -shouldBe(eval(`99; switch (1) { case 2: case 1: break; }`), undefined); -shouldBe(eval(`99; switch (1) { case 2: case 1: 42; break; }`), 42); -shouldBe(eval(`99; switch (1) { case 1: case 2: /* empty */ }`), undefined); -shouldBe(eval(`99; switch (1) { case 1: case 2: 42 }`), 42); -shouldBe(eval(`99; switch (1) { case 1: case 2: break; }`), undefined); -shouldBe(eval(`99; switch (1) { case 1: case 2: 42; break; }`), 42); -shouldBe(eval(`99; switch (1) { case 1: 42; case 2: /* empty */ }`), 42); -shouldBe(eval(`99; switch (1) { case 1: -1; case 2: 42 }`), 42); -shouldBe(eval(`99; switch (1) { case 1: 42; case 2: break; }`), 42); -shouldBe(eval(`99; switch (1) { case 1: -1; case 2: 42; break; }`), 42); -shouldBe(eval(`99; switch (1) { case 0: -1; break; case 1: 42; break; default: -1; break; }`), 42); -shouldBe(eval(`99; switch (1) { case 0: -1; break; case 1: /* empty */; break; default: -1; break; }`), undefined); -shouldBe(eval(`99; switch (1) { case 0: -1; break; case 1: 42; break; default: -1; break; }`), 42); - -// WithStatement -shouldBe(eval(`99; with (true);`), undefined); -shouldBe(eval(`99; with (true) {}`), undefined); -shouldBe(eval(`99; with (true) 42;`), 42); -shouldBe(eval(`99; with (true) { 42 }`), 42); - -// TryCatchFinally / ThrowStatement -shouldBe(eval(`99; try {} catch (e) {-1};`), undefined); -shouldBe(eval(`99; try {} catch (e) {-1} finally {-2};`), undefined); -shouldBe(eval(`99; try {42} catch (e) {-1};`), 42); -shouldBe(eval(`99; try {42} catch (e) {-1} finally {-2};`), 42); -shouldBe(eval(`99; try { [].x.x } catch (e) {};`), undefined); -shouldBe(eval(`99; try { [].x.x } catch (e) {42} finally {-2};`), 42); -shouldBe(eval(`99; try { throw 42 } catch (e) {e};`), 42); -shouldBe(eval(`99; try { throw 42 } catch (e) {e} finally {-2};`), 42); - -// Break Statement where it is not normally available. -shouldBe(eval(`99; do { -99; if (true) { break; }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; if (true) { 42; break; }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; if (false) { } else { break; }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; if (false) { } else { 42; break; }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; with (true) { break; }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; with (true) { 42; break; }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { break; } catch (e) { -1 }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { 42; break; } catch (e) { -1 }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { break; } catch (e) {-1} finally {-2}; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { 42; break; } catch (e) {-1} finally {-2}; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { break; }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; break; }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { break; } finally {-2}; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; break; } finally {-2}; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { 42 } catch (e) { -1 } finally { -2; break; -3 }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; break; -3 }; } while (false);`), 42); - -// Break Statement where it is not normally available with other surrounding statements. -shouldBe(eval(`99; do { -99; if (true) { break; }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; if (true) { 42; break; }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; if (false) { } else { break; }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; if (false) { } else { 42; break; }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; with (true) { break; }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; with (true) { 42; break; }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { break; } catch (e) { -1 }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { 42; break; } catch (e) { -1 }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { break; } catch (e) {-1} finally {-2}; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { 42; break; } catch (e) {-1} finally {-2}; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { break; }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; break; }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { break; } finally {-2}; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; break; } finally {-2}; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { 42 } catch (e) { -1 } finally { -2; break; -3 }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; break; -3 }; -77 } while (false);`), 42); - -// Continue Statement where it is not normally available. -shouldBe(eval(`99; do { -99; if (true) { continue; }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; if (true) { 42; continue; }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; if (false) { } else { continue; }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; if (false) { } else { 42; continue; }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; with (true) { continue; }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; with (true) { 42; continue; }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { continue; } catch (e) { -1 }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { 42; continue; } catch (e) { -1 }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { continue; } catch (e) {-1} finally {-2}; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { 42; continue; } catch (e) {-1} finally {-2}; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { continue; }; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; continue; }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { continue; } finally {-2}; } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; continue; } finally {-2}; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { 42 } catch (e) { -1 } finally { -2; continue; -3 }; } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; continue; -3 }; } while (false);`), 42); - -// Continue Statement where it is not normally available with other surrounding statements. -shouldBe(eval(`99; do { -99; if (true) { continue; }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; if (true) { 42; continue; }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; if (false) { } else { continue; }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; if (false) { } else { 42; continue; }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; with (true) { continue; }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; with (true) { 42; continue; }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { continue; } catch (e) { -1 }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { 42; continue; } catch (e) { -1 }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { continue; } catch (e) {-1} finally {-2}; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { 42; continue; } catch (e) {-1} finally {-2}; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { continue; }; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; continue; }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { continue; } finally {-2}; -77 } while (false);`), undefined); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; continue; } finally {-2}; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { 42 } catch (e) { -1 } finally { -2; continue; -3 }; -77 } while (false);`), 42); -shouldBe(eval(`99; do { -99; try { [].x.x } catch (e) { 42; } finally { -2; continue; -3 }; -77 } while (false);`), 42); - -// Early break to a label. -shouldBe(eval(`99; label: do { 1; if (true) { break label; 2; }; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; if (true) { break label; 2; }; 3; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; with (true) { break label; 2; }; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; with (true) { break label; 2; }; 3; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; do { break label; 2; } while (false); } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; do { break label; 2; } while (false); 3; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; try { break label; 2; } catch (e) {-1;} while (false); } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; try { break label; 2; } catch (e) {-1;} while (false); 3; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; while (true) { break label; 2; }; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; while (true) { break label; 2; }; 3; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; for (;;) { break label; 2; }; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; for (;;) { break label; 2; }; 3; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; for (var x in {a:77}) { break label; 2; }; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; for (var x in {a:77}) { break label; 2; }; 3; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; for (var x of [77]) { break label; 2; }; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; for (var x of [77]) { break label; 2; }; 3; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; switch (true) { default: break label; 2; }; } while (false);`), undefined); -shouldBe(eval(`99; label: do { 1; switch (true) { default: break label; 2; }; 3; } while (false);`), undefined); - -// FIXME: Module Only Statements: -// FIXME: ImportStatement -// FIXME: ExportStatement diff --git a/implementation-contributed/javascriptcore/stress/computed-accessor-parsing.js b/implementation-contributed/javascriptcore/stress/computed-accessor-parsing.js deleted file mode 100644 index 3be9184b216..00000000000 --- a/implementation-contributed/javascriptcore/stress/computed-accessor-parsing.js +++ /dev/null @@ -1,112 +0,0 @@ -function testShouldNotThrow(str) { - eval("function foo(){ var obj = {"+str+", x : 5 };}"); -} - -function testShouldThrow(str) { - var didThrow = false; - - try { - eval("var obj = {"+str+"};"); - } catch(e) { - didThrow = true; - } - - if (!didThrow) throw new Error("Should Throw");; -} - -testShouldNotThrow("get [x] () { return 1 }"); - -testShouldNotThrow("get [x] () { return 1 }"); -testShouldNotThrow("set [x] (value) { valueSet = value }"); - -testShouldNotThrow("get[x] () { return 1 }"); -testShouldNotThrow("set[x] (value) { valueSet = value }"); - -testShouldNotThrow("get [x]() { return 1 }"); -testShouldNotThrow("set [x](value) { valueSet = value }"); - -testShouldNotThrow("get[x]() { return 1 }"); -testShouldNotThrow("set[x](value) { valueSet = value }"); - -testShouldNotThrow("get [1] () { return 1 }"); -testShouldNotThrow("set [1] (value) { valueSet = value }"); - -testShouldNotThrow("get[1] () { return 1 }"); -testShouldNotThrow("set[1] (value) { valueSet = value }"); - -testShouldNotThrow("get [1]() { return 1 }"); -testShouldNotThrow("set [1](value) { valueSet = value }"); - -testShouldNotThrow("get[1]() { return 1 }"); -testShouldNotThrow("set[1](value) { valueSet = value }"); - -testShouldNotThrow("get [{ a : 'hi'}] () { return 1 }"); -testShouldNotThrow("set [{ b : 'ho'}] (value) { valueSet = value }"); - -testShouldNotThrow("get[{ a : 'hi'}] () { return 1 }"); -testShouldNotThrow("set[{ b : 'hi'}] (value) { valueSet = value }"); - -testShouldNotThrow("get [{ a : 'hi'}]() { return 1 }"); -testShouldNotThrow("set [{ b : 'hi'}](value) { valueSet = value }"); - -testShouldNotThrow("get[{ a : 'hi'}]() { return 1 }"); -testShouldNotThrow("set[{ b : 'hi'}](value) { valueSet = value }"); - -testShouldNotThrow("get [ { a : 'hi'} ] () { return 1 }"); -testShouldNotThrow("set [ { b : 'hi'} ] (value) { valueSet = value }"); - -testShouldNotThrow("get [{ a : 'hi'} ] () { return 1 }"); -testShouldNotThrow("set [{ b : 'hi'} ] (value) { valueSet = value }"); - -testShouldNotThrow("get [ { a : 'hi'}] () { return 1 }"); -testShouldNotThrow("set [ { b : 'hi'}] (value) { valueSet = value }"); - -testShouldNotThrow("get[ { a : 'hi'}] () { return 1 }"); -testShouldNotThrow("set[ { b : 'hi'}] (value) { valueSet = value }"); - -testShouldNotThrow("get[ { a : 'hi'}]() { return 1 }"); -testShouldNotThrow("set[ { b : 'hi'}](value) { valueSet = value }"); - -testShouldNotThrow("get [{ a : 'hi'} ]() { return 1 }"); -testShouldNotThrow("set [{ b : 'hi'} ](value) { valueSet = value }"); - -testShouldNotThrow("get[{ [\"goats\"] : 'hi'} ]() { return 1 }"); -testShouldNotThrow("set[{ [1] : 'hi'}] (value) { valueSet = value }"); - -testShouldNotThrow("get[{ [\"goats\"] : 'hi'} ]() { return 1 }"); -testShouldNotThrow("set[{ get [1]() { return 'hi' } }] (value) { valueSet = value }"); - - -testShouldThrow("get [] () { return 1 }"); -testShouldThrow("set [] (value) { valueSet = value }"); - -testShouldThrow("get [ () { return 1 }"); -testShouldThrow("set [ (value) { valueSet = value }"); - - -testShouldThrow("get [ () { return 1 }]"); -testShouldThrow("set [ (value) { valueSet = value }]"); - -testShouldThrow("geting [1] () { return 1 }"); -testShouldThrow("seting [2] (value) { valueSet = value }"); - -testShouldThrow("geting [1] () { return 1 }"); -testShouldThrow("seting [2] (value) { valueSet = value }"); - -testShouldThrow("g [1] () { return 1 }"); -testShouldThrow("s [2] (value) { valueSet = value }"); - - -testShouldThrow("get [1] (), a : 5"); -testShouldThrow("set [2] (value), a : 5"); - -testShouldThrow("get [1]{ return 5}, a : 5"); -testShouldThrow("set [2]{ return 4; }, a : 5"); - -// getters and setters work in classes. -testShouldNotThrow("x : class Val { get x() { return 4; } }"); -testShouldNotThrow("x : class Val { get [2] () { return 4; } }"); - -class Val{ - get ['hi']() { return 4; } -}; diff --git a/implementation-contributed/javascriptcore/stress/computed-accessor.js b/implementation-contributed/javascriptcore/stress/computed-accessor.js deleted file mode 100644 index aac549833df..00000000000 --- a/implementation-contributed/javascriptcore/stress/computed-accessor.js +++ /dev/null @@ -1,523 +0,0 @@ -// Reviewed -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} - -// Class. -(function () { - { - class A { - get ['a' + 'b']() { - return 42; - } - } - let a = new A(); - shouldBe(a.ab, 42); - a.ab = 20000; - shouldBe(a.ab, 42); - } - - { - class A { - get ['a' + '0']() { - return 42; - } - } - let a = new A(); - shouldBe(a.a0, 42); - a.a0 = 20000; - shouldBe(a.a0, 42); - } - - { - class A { - get ['1' + '0']() { - return 42; - } - } - let a = new A(); - shouldBe(a[10], 42); - a[10] = 20000; - shouldBe(a[10], 42); - } - - { - class A { - get [0.1]() { - return 42; - } - } - let a = new A(); - shouldBe(a[0.1], 42); - a[0.1] = 20000; - shouldBe(a[0.1], 42); - } - - { - class A { - get [10.50]() { - return 42; - } - } - let a = new A(); - shouldBe(a[10.5], 42); - a[10.5] = 20000; - shouldBe(a[10.5], 42); - } - - { - function hello() { - return 'ok'; - } - class A { - get [hello()]() { - return 42; - } - } - let a = new A(); - shouldBe(a.ok, 42); - a.ok = 20000; - shouldBe(a.ok, 42); - } - - { - function hello() { - return 'ok'; - } - class A { - get [hello()]() { - return 42; - } - } - class Derived extends A { } - - let a = new Derived(); - shouldBe(a.ok, 42); - a.ok = 20000; - shouldBe(a.ok, 42); - } - - { - class A { - set ['a' + 'b'](value) { - this.value = value; - } - } - let a = new A(); - a.ab = 42; - shouldBe(a.value, 42); - shouldBe(a.ab, undefined); - } - - { - class A { - set ['a' + '0'](value) { - this.value = value; - } - } - let a = new A(); - a.a0 = 42; - shouldBe(a.value, 42); - shouldBe(a.a0, undefined); - } - - { - class A { - set ['1' + '0'](value) { - this.value = value; - } - } - let a = new A(); - a[10] = 42; - shouldBe(a.value, 42); - shouldBe(a[10], undefined); - } - - { - class A { - set [0.1](value) { - this.value = value; - } - } - let a = new A(); - a[0.1] = 42; - shouldBe(a.value, 42); - shouldBe(a[0.1], undefined); - } - - { - class A { - set [10.50](value) { - this.value = value; - } - } - let a = new A(); - a[10.5] = 42; - shouldBe(a.value, 42); - shouldBe(a[10.5], undefined); - } - - { - function hello() { - return 'ok'; - } - class A { - set [hello()](value) { - this.value = value; - } - } - let a = new A(); - a.ok = 42; - shouldBe(a.value, 42); - shouldBe(a.ok, undefined); - } - - { - function hello() { - return 'ok'; - } - class A { - set [hello()](value) { - this.value = value; - } - } - class Derived extends A { } - - let a = new Derived(); - a.ok = 42; - shouldBe(a.value, 42); - shouldBe(a.ok, undefined); - } -}()); - -// Class static. -(function () { - { - class A { - static get ['a' + 'b']() { - return 42; - } - } - shouldBe(A.ab, 42); - A.ab = 20000; - shouldBe(A.ab, 42); - } - - { - class A { - static get ['a' + '0']() { - return 42; - } - } - shouldBe(A.a0, 42); - A.a0 = 20000; - shouldBe(A.a0, 42); - } - - { - class A { - static get ['1' + '0']() { - return 42; - } - } - shouldBe(A[10], 42); - A[10] = 20000; - shouldBe(A[10], 42); - } - - { - class A { - static get [0.1]() { - return 42; - } - } - shouldBe(A[0.1], 42); - A[0.1] = 20000; - shouldBe(A[0.1], 42); - } - - { - class A { - static get [10.50]() { - return 42; - } - } - shouldBe(A[10.5], 42); - A[10.5] = 20000; - shouldBe(A[10.5], 42); - } - - { - function hello() { - return 'ok'; - } - class A { - static get [hello()]() { - return 42; - } - } - shouldBe(A.ok, 42); - A.ok = 20000; - shouldBe(A.ok, 42); - } - - { - function hello() { - return 'ok'; - } - class A { - static get [hello()]() { - return 42; - } - } - class Derived extends A { } - - shouldBe(Derived.ok, 42); - Derived.ok = 20000; - shouldBe(Derived.ok, 42); - } - - { - function hello() { - return 'ok'; - } - class A { - static get [hello()]() { - return 42; - } - } - class Derived extends A { } - - shouldBe(Derived.ok, 42); - Derived.ok = 20000; - shouldBe(Derived.ok, 42); - } - - { - class A { - static set ['a' + 'b'](value) { - this.value = value; - } - } - A.ab = 42; - shouldBe(A.value, 42); - shouldBe(A.ab, undefined); - } - - { - class A { - static set ['a' + '0'](value) { - this.value = value; - } - } - A.a0 = 42; - shouldBe(A.value, 42); - shouldBe(A.a0, undefined); - } - - { - class A { - static set ['1' + '0'](value) { - this.value = value; - } - } - A[10] = 42; - shouldBe(A.value, 42); - shouldBe(A[10], undefined); - } - - { - class A { - static set [0.1](value) { - this.value = value; - } - } - A[0.1] = 42; - shouldBe(A.value, 42); - shouldBe(A[0.1], undefined); - } - - { - class A { - static set [10.50](value) { - this.value = value; - } - } - A[10.5] = 42; - shouldBe(A.value, 42); - shouldBe(A[10.5], undefined); - } - - { - function hello() { - return 'ok'; - } - class A { - static set [hello()](value) { - this.value = value; - } - } - A.ok = 42; - shouldBe(A.value, 42); - shouldBe(A.ok, undefined); - } - - { - function hello() { - return 'ok'; - } - class A { - static set [hello()](value) { - this.value = value; - } - } - class Derived extends A { } - - Derived.ok = 42; - shouldBe(Derived.value, 42); - shouldBe(Derived.ok, undefined); - } -}()); - - -// Object. -(function () { - { - var a = { - get ['a' + 'b']() { - return 42; - } - } - shouldBe(a.ab, 42); - a.ab = 20000; - shouldBe(a.ab, 42); - } - - { - var a = { - get ['a' + '0']() { - return 42; - } - } - shouldBe(a.a0, 42); - a.a0 = 20000; - shouldBe(a.a0, 42); - } - - { - var a = { - get ['1' + '0']() { - return 42; - } - } - shouldBe(a[10], 42); - a[10] = 20000; - shouldBe(a[10], 42); - } - - { - var a = { - get [0.1]() { - return 42; - } - } - shouldBe(a[0.1], 42); - a[0.1] = 20000; - shouldBe(a[0.1], 42); - } - - { - var a = { - get [10.50]() { - return 42; - } - } - shouldBe(a[10.5], 42); - a[10.5] = 20000; - shouldBe(a[10.5], 42); - } - - { - function hello() { - return 'ok'; - } - var a = { - get [hello()]() { - return 42; - } - } - shouldBe(a.ok, 42); - a.ok = 20000; - shouldBe(a.ok, 42); - } - - { - var a = { - set ['a' + 'b'](value) { - this.value = value; - } - } - a.ab = 42; - shouldBe(a.value, 42); - shouldBe(a.ab, undefined); - } - - { - var a = { - set ['a' + '0'](value) { - this.value = value; - } - } - a.a0 = 42; - shouldBe(a.value, 42); - shouldBe(a.a0, undefined); - } - - { - var a = { - set ['1' + '0'](value) { - this.value = value; - } - } - a[10] = 42; - shouldBe(a.value, 42); - shouldBe(a[10], undefined); - } - - { - var a = { - set [0.1](value) { - this.value = value; - } - } - a[0.1] = 42; - shouldBe(a.value, 42); - shouldBe(a[0.1], undefined); - } - - { - var a = { - set [10.50](value) { - this.value = value; - } - } - a[10.5] = 42; - shouldBe(a.value, 42); - shouldBe(a[10.5], undefined); - } - - { - function hello() { - return 'ok'; - } - var a = { - set [hello()](value) { - this.value = value; - } - } - a.ok = 42; - shouldBe(a.value, 42); - shouldBe(a.ok, undefined); - } -}()); diff --git a/implementation-contributed/javascriptcore/stress/concat-append-one-with-sparse-array.js b/implementation-contributed/javascriptcore/stress/concat-append-one-with-sparse-array.js deleted file mode 100644 index 3d8a099efeb..00000000000 --- a/implementation-contributed/javascriptcore/stress/concat-append-one-with-sparse-array.js +++ /dev/null @@ -1,7 +0,0 @@ -// Reviewed -//@ skip - -let length = 0x10001000; - -let foo = new Array(length); -foo.concat(1); diff --git a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-ftl.js b/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-ftl.js deleted file mode 100644 index 0d032b36de8..00000000000 --- a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-ftl.js +++ /dev/null @@ -1,49 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -function foo() { - bar = 4; -} -function get() { - return bar; -} -for (var i = 0; i < 1e6; ++i) - foo(); -for (var i = 0; i < 1e6; ++i) - shouldBe(get(), 4); - -shouldBe(bar, 4); -$.evalScript('const bar = 3;'); -shouldBe(bar, 3); -shouldBe(get(), 3); - -for (var i = 0; i < 1e6; ++i) - shouldBe(get(), 3); - -shouldThrow(() => { - foo(); -}, `TypeError: Attempted to assign to readonly property.`); -shouldBe(bar, 3); -shouldBe(get(), 3); - -for (var i = 0; i < 1e6; ++i) - shouldBe(get(), 3); diff --git a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-tdz-ftl.js b/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-tdz-ftl.js deleted file mode 100644 index 21d093158e5..00000000000 --- a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-tdz-ftl.js +++ /dev/null @@ -1,53 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -function foo() { - bar = 4; -} -function get() { - return bar; -} -for (var i = 0; i < 1e6; ++i) - foo(); -for (var i = 0; i < 1e6; ++i) - shouldBe(get(), 4); - -shouldBe(bar, 4); -shouldThrow(() => { - $.evalScript('get(); const bar = 3;'); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - shouldBe(bar, 3); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - shouldBe(get(), 3); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - $.evalScript('bar;'); -}, `ReferenceError: Cannot access uninitialized variable.`); - -for (var i = 0; i < 1e3; ++i) { - shouldThrow(() => { - shouldBe(get(), 3); - }, `ReferenceError: Cannot access uninitialized variable.`); -} - diff --git a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-tdz.js b/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-tdz.js deleted file mode 100644 index c4e894412bc..00000000000 --- a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property-tdz.js +++ /dev/null @@ -1,44 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -function foo() { - bar = 4; -} -function get() { - return bar; -} -foo(); -shouldBe(get(), 4); - -shouldBe(bar, 4); -shouldThrow(() => { - $.evalScript('get(); const bar = 3;'); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - shouldBe(bar, 3); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - shouldBe(get(), 3); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - $.evalScript('bar;'); -}, `ReferenceError: Cannot access uninitialized variable.`); diff --git a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property.js b/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property.js deleted file mode 100644 index 92b29de8860..00000000000 --- a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadow-existing-global-property.js +++ /dev/null @@ -1,33 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -function foo() { - bar = 4; -} -foo(); -shouldBe(bar, 4); -$.evalScript('const bar = 3;'); -shouldBe(bar, 3); -shouldThrow(() => { - foo(); -}, `TypeError: Attempted to assign to readonly property.`); -shouldBe(bar, 3); diff --git a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadowing-global-properties-and-eval-injection.js b/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadowing-global-properties-and-eval-injection.js deleted file mode 100644 index ddf3f944a21..00000000000 --- a/implementation-contributed/javascriptcore/stress/const-lexical-binding-shadowing-global-properties-and-eval-injection.js +++ /dev/null @@ -1,36 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -bar = 0; -function foo(code) { - eval(code); - return (function () { - return bar; - }()); -} -shouldBe(foo(`42`), 0); - -$.evalScript(`const bar = 42`); -shouldBe(foo(`42`), 42); - -shouldBe(foo(`var bar = 1`), 1); -shouldBe(foo(`42`), 42); diff --git a/implementation-contributed/javascriptcore/stress/constant-fold-double-rep-into-double-constant.js b/implementation-contributed/javascriptcore/stress/constant-fold-double-rep-into-double-constant.js deleted file mode 100644 index 4591c1ca8f8..00000000000 --- a/implementation-contributed/javascriptcore/stress/constant-fold-double-rep-into-double-constant.js +++ /dev/null @@ -1,14 +0,0 @@ -function bar(o) { - for (let i = 0; i < 2; i++) - o[i] = undefined; - o.length = undefined; - return o; -} - -function foo(a) { - bar(a); - undefined + bar(0) + bar(0); - for(let i = 0; i < 10000000; i++) {} -} - -foo({}); diff --git a/implementation-contributed/javascriptcore/stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-1.js b/implementation-contributed/javascriptcore/stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-1.js deleted file mode 100644 index 0d5370799f6..00000000000 --- a/implementation-contributed/javascriptcore/stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-1.js +++ /dev/null @@ -1,15 +0,0 @@ -var invokeCount = 0; - -Object.defineProperty(Function.prototype, 'prototype', { - get: function () { - invokeCount++; - } -}); - -new Promise(resolve => { - for (var i = 0; i < 10000; ++i) - new resolve(); - - if (invokeCount != 10000) - $vm.crash(); -}); diff --git a/implementation-contributed/javascriptcore/stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-2.js b/implementation-contributed/javascriptcore/stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-2.js deleted file mode 100644 index b4c51affa80..00000000000 --- a/implementation-contributed/javascriptcore/stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-2.js +++ /dev/null @@ -1,15 +0,0 @@ -new Promise(resolve => { - var invokeCount = 0; - - Object.defineProperty(resolve, 'prototype', { - get: function () { - invokeCount++; - } - }); - - for (var i = 0; i < 10000; ++i) - new resolve(); - - if (invokeCount != 10000) - $vm.crash(); -}); diff --git a/implementation-contributed/javascriptcore/stress/create-subclass-structure-may-throw-exception-when-getting-prototype.js b/implementation-contributed/javascriptcore/stress/create-subclass-structure-may-throw-exception-when-getting-prototype.js deleted file mode 100644 index fa51cd0707c..00000000000 --- a/implementation-contributed/javascriptcore/stress/create-subclass-structure-may-throw-exception-when-getting-prototype.js +++ /dev/null @@ -1,56 +0,0 @@ -/** -#### ch -Error: OK - -#### jsshell -Error: bad error: TypeError: undefined is not a function - -#### d8, node -Error: bad error: TypeError: Promise resolver undefined is not a function - -#### jsc - */ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} - -var bf = (function(){}).bind(); -Object.defineProperty(bf, "prototype", { - get() { throw Error("OK") } -}); - -[ - Array, - Date, - Boolean, - Function, - Number, - String, - RegExp, - Error, - Uint8Array, - ArrayBuffer, - Promise, - Map, - WeakMap, - Set, - WeakSet, -].forEach(function (constructor) { - shouldThrow(() => { - Reflect.construct(constructor, [], bf); - }, `Error: OK`); -}); - -// Proxy constructor is not aware of new.target. -Reflect.construct(Proxy, [{}, {}], bf); diff --git a/implementation-contributed/javascriptcore/stress/custom-iterators.js b/implementation-contributed/javascriptcore/stress/custom-iterators.js deleted file mode 100644 index 3c97ce9b2d2..00000000000 --- a/implementation-contributed/javascriptcore/stress/custom-iterators.js +++ /dev/null @@ -1,328 +0,0 @@ -// Reviewed -/** -#### ch -Error: bad error thrown: Error: Terminate iteration. - */ - -// This test checks the behavior of custom iterable objects. - -var returnCalled = false; -var iter = { - __key: 0, - next: function () { - return { - done: this.__key === 42, - value: this.__key++ - }; - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - } -}; -var expected = 0; -for (var value of iter) { - if (value !== expected++) - throw "Error: bad value: " + value; -} -if (returnCalled) - throw "Error: return is called."; - - - -var returnCalled = false; -var iter = { - __key: 0, - next: function () { - return { - done: this.__key === 42, - value: this.__key++ - }; - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - return { - done: true, - value: undefined - }; - } -}; - -try { - for (var value of iter) { - throw "Error: Terminate iteration."; - } -} catch (e) { - if (String(e) !== "Error: Terminate iteration.") - throw "Error: bad error thrown: " + e; -} -if (!returnCalled) - throw "Error: return is not called."; - - - -var returnCalled = false; -var iter = { - __key: 0, - next: function () { - return { - done: this.__key === 42, - value: this.__key++ - }; - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - return { - done: true, - value: undefined - }; - } -}; - -for (var value of iter) { - break; -} -if (!returnCalled) - throw "Error: return is not called."; - - - -var returnCalled = false; -var iter = { - __key: 0, - get next() { - throw "Error: looking up next."; - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - } -}; -try { - for (var value of iter) { - throw "Error: Iteration should not occur."; - } -} catch (e) { - if (String(e) !== "Error: looking up next.") - throw "Error: bad error thrown: " + e; -} -if (returnCalled) - throw "Error: return is called."; - - - -var iter = { - __key: 0, - next: function () { - return { - done: this.__key === 42, - value: this.__key++ - }; - }, - [Symbol.iterator]: function () { - return this; - }, - get return() { - throw "Error: looking up return." - } -}; -try { - for (var value of iter) { - throw "Error: Terminate iteration."; - } -} catch (e) { - if (String(e) !== "Error: looking up return.") - throw "Error: bad error thrown: " + e; -} - - - -var returnCalled = false; -var iter = { - __key: 0, - next: function () { - throw "Error: next is called." - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - return { - done: true, - value: undefined - }; - } -}; - -try { - for (var value of iter) { - throw "Error: Terminate iteration."; - } -} catch (e) { - if (String(e) !== "Error: next is called.") - throw "Error: bad error thrown: " + e; -} -if (returnCalled) - throw "Error: return is called."; - - - -var returnCalled = false; -var iter = { - __key: 0, - next: function () { - return { done: false, value: 42 }; - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - throw "Error: return is called."; - } -}; - -try { - for (var value of iter) { - throw "Error: Terminate iteration."; - } -} catch (e) { - if (String(e) !== "Error: Terminate iteration.") - throw "Error: bad error thrown: " + e; -} -if (!returnCalled) - throw "Error: return is not called."; - - -var returnCalled = false; -var iter = { - __key: 0, - next: function () { - return { done: false, value: 42 }; - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - throw "Error: return is called."; - } -}; -try { - for (var value of iter) { - break; - } -} catch (e) { - if (String(e) !== "Error: return is called.") - throw "Error: bad error thrown: " + e; -} -if (!returnCalled) - throw "Error: return is not called."; - - -var primitives = [ - undefined, - null, - 42, - "string", - true, - Symbol("Cocoa") -]; - -function iteratorInterfaceErrorTest(notIteratorResult) { - var returnCalled = false; - var iter = { - __key: 0, - next: function () { - return notIteratorResult; - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - return undefined; - } - }; - try { - for (var value of iter) { - throw "Error: Iteration should not occur."; - } - } catch (e) { - if (String(e) !== "TypeError: Iterator result interface is not an object.") - throw "Error: bad error thrown: " + e; - } - if (returnCalled) - throw "Error: return is called."; -} - -function iteratorInterfaceErrorTestReturn(notIteratorResult) { - var returnCalled = false; - var iter = { - __key: 0, - next: function () { - return { done: false, value: 42 }; - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - return notIteratorResult; - } - }; - try { - for (var value of iter) { - throw "Error: Terminate iteration."; - } - } catch (e) { - if (String(e) !== "Error: Terminate iteration.") - throw "Error: bad error thrown: " + e; - } - if (!returnCalled) - throw "Error: return is not called."; -} - -primitives.forEach(iteratorInterfaceErrorTest); -primitives.forEach(iteratorInterfaceErrorTestReturn); - - -function iteratorInterfaceBreakTestReturn(notIteratorResult) { - var returnCalled = false; - var iter = { - __key: 0, - next: function () { - return { done: false, value: 42 }; - }, - [Symbol.iterator]: function () { - return this; - }, - return: function () { - returnCalled = true; - return notIteratorResult; - } - }; - try { - for (var value of iter) { - break; - } - } catch (e) { - if (String(e) !== "TypeError: Iterator result interface is not an object.") - throw "Error: bad error thrown: " + e; - } - if (!returnCalled) - throw "Error: return is not called."; -} - -primitives.forEach(iteratorInterfaceBreakTestReturn); diff --git a/implementation-contributed/javascriptcore/stress/custom-prototype-may-be-same-to-original-one.js b/implementation-contributed/javascriptcore/stress/custom-prototype-may-be-same-to-original-one.js deleted file mode 100644 index e51a5ecb02b..00000000000 --- a/implementation-contributed/javascriptcore/stress/custom-prototype-may-be-same-to-original-one.js +++ /dev/null @@ -1,12 +0,0 @@ -// Reviewed -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} - -var boundFunction = function(){}.bind(); -Object.defineProperty(boundFunction, "prototype", { - value: Array.prototype -}); -var result = Reflect.construct(Array, [], boundFunction); -shouldBe(result.__proto__, Array.prototype); diff --git a/implementation-contributed/javascriptcore/stress/data-view-set-intrinsic-undefined-result-2.js b/implementation-contributed/javascriptcore/stress/data-view-set-intrinsic-undefined-result-2.js deleted file mode 100644 index 7adb36250b7..00000000000 --- a/implementation-contributed/javascriptcore/stress/data-view-set-intrinsic-undefined-result-2.js +++ /dev/null @@ -1,11 +0,0 @@ -function foo(view) { - return view.setInt8(0, 0); -} -noInline(foo); - -let a = new Int8Array(10); -let dataView = new DataView(a.buffer); -for (let i = 0; i < 10000; ++i) { - if (foo(dataView) !== undefined) - throw new Error("Bad!") -} diff --git a/implementation-contributed/javascriptcore/stress/data-view-set-intrinsic-undefined-result.js b/implementation-contributed/javascriptcore/stress/data-view-set-intrinsic-undefined-result.js deleted file mode 100644 index 15709cb412b..00000000000 --- a/implementation-contributed/javascriptcore/stress/data-view-set-intrinsic-undefined-result.js +++ /dev/null @@ -1,20 +0,0 @@ -let setInt8 = DataView.prototype.setInt8; - -function foo() { - new bar(); - xyz(setInt8(0, 0)); -} - -function bar(a) { - if (a) { - return; - } - if (0 === undefined) { - } - a = + String(0); - foo(0); -} - -try { - foo(); -} catch { } diff --git a/implementation-contributed/javascriptcore/stress/dataview-jit-set-nan.js b/implementation-contributed/javascriptcore/stress/dataview-jit-set-nan.js deleted file mode 100644 index cbd1cdb3afe..00000000000 --- a/implementation-contributed/javascriptcore/stress/dataview-jit-set-nan.js +++ /dev/null @@ -1,52 +0,0 @@ -//@ skip if $architecture == "mips" - -"use strict"; - -function assert(b) { - if (!b) - throw new Error; -} - -function test() { - function storeLittleEndian(dv, index, value) { - dv.setFloat32(index, value, true); - } - noInline(storeLittleEndian); - - function storeBigEndian(dv, index, value) { - dv.setFloat32(index, value, false); - } - noInline(storeBigEndian); - - function store(dv, index, value, littleEndian) { - dv.setFloat32(index, value, littleEndian); - } - noInline(store); - - let buffer = new ArrayBuffer(4); - let arr = new Float32Array(buffer); - let bits = new Uint32Array(buffer); - let dv = new DataView(buffer); - - for (let i = 0; i < 10000; ++i) { - storeLittleEndian(dv, 0, 1.5); - assert(arr[0] === 1.5); - - storeLittleEndian(dv, 0, 12912.124123215122); - assert(arr[0] === 12912.1240234375); - assert(bits[0] === 0x4649c07f); - - storeLittleEndian(dv, 0, NaN); - assert(isNaN(arr[0])); - assert(bits[0] === 0x7FC00000); - - storeLittleEndian(dv, 0, 2.3879393e-38); - assert(arr[0] === 2.387939260590663e-38); - assert(bits[0] === 0x01020304); - - storeBigEndian(dv, 0, 2.3879393e-38); - assert(arr[0] === 1.539989614439558e-36); - assert(bits[0] === 0x04030201); - } -} -test(); \ No newline at end of file diff --git a/implementation-contributed/javascriptcore/stress/dataview-jit-set.js b/implementation-contributed/javascriptcore/stress/dataview-jit-set.js deleted file mode 100644 index 9238eb73f91..00000000000 --- a/implementation-contributed/javascriptcore/stress/dataview-jit-set.js +++ /dev/null @@ -1,439 +0,0 @@ -"use strict"; - -function assert(b) { - if (!b) - throw new Error; -} - -function readHex(dv, bytes) { - function isLittleEndian() { - let b = new ArrayBuffer(4); - let dv = new DataView(b); - dv.setInt32(0, 0x00112233, true); - return dv.getUint8(0) === 0x33; - } - let str = ""; - function readByte(i) { - let b = dv.getUint8(i).toString(16); - if (b.length === 1) - b = "0" + b; - else - assert(b.length === 2) - return b; - } - if (isLittleEndian()) { - for (let i = bytes; i--;) - str = str + readByte(i); - } else { - for (let i = 0; i < bytes; ++i) - str = str + readByte(i); - } - - return "0x" + str; -} - -{ - let b = new ArrayBuffer(4); - let dv = new DataView(b); - dv.setInt32(0, 0x00112233, true); - assert(readHex(dv, 4) === "0x00112233"); -} - -function test() { - function storeLittleEndian(dv, index, value) { - dv.setInt16(index, value, true); - } - noInline(storeLittleEndian); - - function storeBigEndian(dv, index, value) { - dv.setInt16(index, value, false); - } - noInline(storeBigEndian); - - function store(dv, index, value, littleEndian) { - dv.setInt16(index, value, littleEndian); - } - noInline(store); - - let buffer = new ArrayBuffer(2); - let arr = new Uint16Array(buffer); - let dv = new DataView(buffer); - - for (let i = 0; i < 10000; ++i) { - storeLittleEndian(dv, 0, 0xfaba); - assert(arr[0] === 0xfaba); - - store(dv, 0, 0xabcd, true); - assert(arr[0] === 0xabcd); - - store(dv, 0, 0xbadbeef, true); - assert(arr[0] === 0xbeef); - - storeLittleEndian(dv, 0, 0xbb4db33f, true); - assert(arr[0] === 0xb33f); - - storeBigEndian(dv, 0, 0xfada); - assert(arr[0] === 0xdafa); - - storeBigEndian(dv, 0, 0x12ab); - assert(arr[0] === 0xab12); - - store(dv, 0, 0x1234, false); - assert(arr[0] === 0x3412); - - store(dv, 0, 0x0102, false); - assert(arr[0] === 0x0201); - - store(dv, 0, -1, false); - assert(arr[0] === 0xffff); - - store(dv, 0, -2, false); - assert(arr[0] === 0xfeff); - - storeBigEndian(dv, 0, -1); - assert(arr[0] === 0xffff); - - storeBigEndian(dv, 0, -2); - assert(arr[0] === 0xfeff); - - storeBigEndian(dv, 0, -2147483648); - assert(arr[0] === 0x0000); - - storeLittleEndian(dv, 0, -2147483648); - assert(arr[0] === 0x0000); - - storeLittleEndian(dv, 0, -2147478988); - assert(arr[0] === 0x1234); - - storeBigEndian(dv, 0, -2147478988); - assert(arr[0] === 0x3412); - } -} -test(); - -function test2() { - function storeLittleEndian(dv, index, value) { - dv.setUint16(index, value, true); - } - noInline(storeLittleEndian); - - function storeBigEndian(dv, index, value) { - dv.setUint16(index, value, false); - } - noInline(storeBigEndian); - - function store(dv, index, value, littleEndian) { - dv.setUint16(index, value, littleEndian); - } - noInline(store); - - let buffer = new ArrayBuffer(2); - let arr = new Uint16Array(buffer); - let dv = new DataView(buffer); - - for (let i = 0; i < 10000; ++i) { - storeLittleEndian(dv, 0, 0xfaba); - assert(arr[0] === 0xfaba); - - store(dv, 0, 0xabcd, true); - assert(arr[0] === 0xabcd); - - store(dv, 0, 0xbadbeef, true); - assert(arr[0] === 0xbeef); - - storeLittleEndian(dv, 0, 0xbb4db33f, true); - assert(arr[0] === 0xb33f); - - storeBigEndian(dv, 0, 0xfada); - assert(arr[0] === 0xdafa); - - storeBigEndian(dv, 0, 0x12ab); - assert(arr[0] === 0xab12); - - store(dv, 0, 0x1234, false); - assert(arr[0] === 0x3412); - - store(dv, 0, 0x0102, false); - assert(arr[0] === 0x0201); - - store(dv, 0, -1, false); - assert(arr[0] === 0xffff); - - store(dv, 0, -2, false); - assert(arr[0] === 0xfeff); - - storeBigEndian(dv, 0, -1); - assert(arr[0] === 0xffff); - - storeBigEndian(dv, 0, -2); - assert(arr[0] === 0xfeff); - - storeBigEndian(dv, 0, -2147483648); - assert(arr[0] === 0x0000); - - storeLittleEndian(dv, 0, -2147483648); - assert(arr[0] === 0x0000); - - storeLittleEndian(dv, 0, -2147478988); - assert(arr[0] === 0x1234); - - storeBigEndian(dv, 0, -2147478988); - assert(arr[0] === 0x3412); - } -} -test2(); - -function test3() { - function storeLittleEndian(dv, index, value) { - dv.setUint32(index, value, true); - } - noInline(storeLittleEndian); - - function storeBigEndian(dv, index, value) { - dv.setUint32(index, value, false); - } - noInline(storeBigEndian); - - function store(dv, index, value, littleEndian) { - dv.setUint32(index, value, littleEndian); - } - noInline(store); - - let buffer = new ArrayBuffer(4); - let arr = new Uint32Array(buffer); - let arr2 = new Int32Array(buffer); - let dv = new DataView(buffer); - - for (let i = 0; i < 10000; ++i) { - storeLittleEndian(dv, 0, 0xffffffff); - assert(arr[0] === 0xffffffff); - assert(arr2[0] === -1); - - storeLittleEndian(dv, 0, 0xffaabbcc); - assert(arr[0] === 0xffaabbcc); - - storeBigEndian(dv, 0, 0x12345678); - assert(arr[0] === 0x78563412); - - storeBigEndian(dv, 0, 0xffaabbcc); - assert(arr[0] === 0xccbbaaff); - - store(dv, 0, 0xfaeadaca, false); - assert(arr[0] === 0xcadaeafa); - - store(dv, 0, 0xcadaeafa, false); - assert(arr2[0] === -85271862); - - store(dv, 0, 0x12345678, false); - assert(arr[0] === 0x78563412); - - storeBigEndian(dv, 0, 0xbeeffeeb); - assert(arr2[0] === -335614018); - } -} -test3(); - -function test4() { - function storeLittleEndian(dv, index, value) { - dv.setInt32(index, value, true); - } - noInline(storeLittleEndian); - - function storeBigEndian(dv, index, value) { - dv.setInt32(index, value, false); - } - noInline(storeBigEndian); - - function store(dv, index, value, littleEndian) { - dv.setInt32(index, value, littleEndian); - } - noInline(store); - - let buffer = new ArrayBuffer(4); - let arr = new Uint32Array(buffer); - let arr2 = new Int32Array(buffer); - let dv = new DataView(buffer); - - for (let i = 0; i < 10000; ++i) { - storeLittleEndian(dv, 0, 0xffffffff); - assert(arr[0] === 0xffffffff); - assert(arr2[0] === -1); - - storeLittleEndian(dv, 0, 0xffaabbcc); - assert(arr[0] === 0xffaabbcc); - - storeBigEndian(dv, 0, 0x12345678); - assert(arr[0] === 0x78563412); - - storeBigEndian(dv, 0, 0xffaabbcc); - assert(arr[0] === 0xccbbaaff); - - store(dv, 0, 0xfaeadaca, false); - assert(arr[0] === 0xcadaeafa); - - store(dv, 0, 0xcadaeafa, false); - assert(arr2[0] === -85271862); - - store(dv, 0, 0x12345678, false); - assert(arr[0] === 0x78563412); - - storeBigEndian(dv, 0, 0xbeeffeeb); - assert(arr2[0] === -335614018); - } -} -test4(); - -function test5() { - function storeLittleEndian(dv, index, value) { - dv.setFloat32(index, value, true); - } - noInline(storeLittleEndian); - - function storeBigEndian(dv, index, value) { - dv.setFloat32(index, value, false); - } - noInline(storeBigEndian); - - function store(dv, index, value, littleEndian) { - dv.setFloat32(index, value, littleEndian); - } - noInline(store); - - let buffer = new ArrayBuffer(4); - let arr = new Float32Array(buffer); - let bits = new Uint32Array(buffer); - let dv = new DataView(buffer); - - for (let i = 0; i < 10000; ++i) { - storeLittleEndian(dv, 0, 1.5); - assert(arr[0] === 1.5); - - storeLittleEndian(dv, 0, 12912.124123215122); - assert(arr[0] === 12912.1240234375); - assert(bits[0] === 0x4649c07f); - - storeLittleEndian(dv, 0, NaN); - assert(isNaN(arr[0])); - - storeLittleEndian(dv, 0, 2.3879393e-38); - assert(arr[0] === 2.387939260590663e-38); - assert(bits[0] === 0x01020304); - - storeBigEndian(dv, 0, 2.3879393e-38); - assert(arr[0] === 1.539989614439558e-36); - assert(bits[0] === 0x04030201); - } -} -test5(); - -function test6() { - function storeLittleEndian(dv, index, value) { - dv.setFloat64(index, value, true); - } - noInline(storeLittleEndian); - - function storeBigEndian(dv, index, value) { - dv.setFloat64(index, value, false); - } - noInline(storeBigEndian); - - function store(dv, index, value, littleEndian) { - dv.setFloat64(index, value, littleEndian); - } - noInline(store); - - let buffer = new ArrayBuffer(8); - let arr = new Float64Array(buffer); - let dv = new DataView(buffer); - - for (let i = 0; i < 10000; ++i) { - storeLittleEndian(dv, 0, NaN); - assert(isNaN(arr[0])); - - storeLittleEndian(dv, 0, -2.5075187084135162e+284); - assert(arr[0] === -2.5075187084135162e+284); - assert(readHex(dv, 8) === "0xfafafafafafafafa"); - - store(dv, 0, 124.553, true); - assert(readHex(dv, 8) === "0x405f23645a1cac08"); - - store(dv, 0, Infinity, true); - assert(readHex(dv, 8) === "0x7ff0000000000000"); - - store(dv, 0, Infinity, false); - assert(readHex(dv, 8) === "0x000000000000f07f"); - - store(dv, 0, -Infinity, true); - assert(readHex(dv, 8) === "0xfff0000000000000"); - - storeBigEndian(dv, 0, -2.5075187084135162e+284); - assert(arr[0] === -2.5075187084135162e+284); - assert(readHex(dv, 8) === "0xfafafafafafafafa"); - - storeBigEndian(dv, 0, 124.553); - assert(readHex(dv, 8) === "0x08ac1c5a64235f40"); - } -} -test6(); - -function test7() { - function store(dv, index, value) { - dv.setInt8(index, value); - } - noInline(store); - - let buffer = new ArrayBuffer(1); - let arr = new Uint8Array(buffer); - let arr2 = new Int8Array(buffer); - let dv = new DataView(buffer); - - for (let i = 0; i < 10000; ++i) { - store(dv, 0, 0xff); - assert(arr[0] === 0xff); - assert(arr2[0] === -1); - - store(dv, 0, 0xff00); - assert(arr[0] === 0); - assert(arr2[0] === 0); - - store(dv, 0, -1); - assert(arr[0] === 0xff); - assert(arr2[0] === -1); - - store(dv, 0, 0x0badbeef); - assert(arr[0] === 0xef); - assert(arr2[0] === -17); - } -} -test7(); - -function test8() { - function store(dv, index, value) { - dv.setInt8(index, value); - } - noInline(store); - - let buffer = new ArrayBuffer(1); - let arr = new Uint8Array(buffer); - let arr2 = new Int8Array(buffer); - let dv = new DataView(buffer); - - for (let i = 0; i < 10000; ++i) { - store(dv, 0, 0xff); - assert(arr[0] === 0xff); - assert(arr2[0] === -1); - - store(dv, 0, 0xff00); - assert(arr[0] === 0); - assert(arr2[0] === 0); - - store(dv, 0, -1); - assert(arr[0] === 0xff); - assert(arr2[0] === -1); - - store(dv, 0, 0x0badbeef); - assert(arr[0] === 0xef); - assert(arr2[0] === -17); - } -} -test8(); diff --git a/implementation-contributed/javascriptcore/stress/dfg-combined-liveness-consider-terminal-blocks-bytecode-liveness.js b/implementation-contributed/javascriptcore/stress/dfg-combined-liveness-consider-terminal-blocks-bytecode-liveness.js deleted file mode 100644 index 2360a1e2bd1..00000000000 --- a/implementation-contributed/javascriptcore/stress/dfg-combined-liveness-consider-terminal-blocks-bytecode-liveness.js +++ /dev/null @@ -1,19 +0,0 @@ -//@ runDefault("--useConcurrentJIT=0", "--usePutStackSinking=0") - -function foo() { - var args1 = function () { - return arguments; - }(); - var args2 = function () { - var result = arguments; - result.length = 1; - return result; - }(1); - for (var i = 0; i < 10000000; ++i) { - args1.length; - args2.length; - } -} -foo(); -foo(); -foo(); diff --git a/implementation-contributed/javascriptcore/stress/dfg-to-string-on-int-does-gc.js b/implementation-contributed/javascriptcore/stress/dfg-to-string-on-int-does-gc.js deleted file mode 100644 index f48663aa4c4..00000000000 --- a/implementation-contributed/javascriptcore/stress/dfg-to-string-on-int-does-gc.js +++ /dev/null @@ -1,26 +0,0 @@ -//@ requireOptions("--exceptionStackTraceLimit=0", "--defaultErrorStackTraceLimit=0", "--forceRAMSize=1000000", "--forceDebuggerBytecodeGeneration=1", "--useZombieMode=1", "--jitPolicyScale=0", "--collectContinuously=1", "--useConcurrentJIT=0") - -function assert(b) { - if (!b) - throw new Error('aa'); -} - -var exception; -try { - let target = function (x, y) { - const actual = '' + x; - target(x); - }; - let handler = { - apply: function (theTarget, thisArg, argArray) { - return theTarget.apply([], argArray); - } - }; - let proxy = new Proxy(target, handler); - assert(proxy(10, 20) === 'foo'); -} catch(e) { - exception = e; -} - -if (exception != "RangeError: Maximum call stack size exceeded.") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/dfg-to-string-on-string-object-does-not-gc.js b/implementation-contributed/javascriptcore/stress/dfg-to-string-on-string-object-does-not-gc.js deleted file mode 100644 index 1e35533caf8..00000000000 --- a/implementation-contributed/javascriptcore/stress/dfg-to-string-on-string-object-does-not-gc.js +++ /dev/null @@ -1,26 +0,0 @@ -//@ requireOptions("--exceptionStackTraceLimit=0", "--defaultErrorStackTraceLimit=0", "--forceRAMSize=1000000", "--forceDebuggerBytecodeGeneration=1", "--useZombieMode=1", "--jitPolicyScale=0", "--collectContinuously=1", "--useConcurrentJIT=0") - -function assert(b) { - if (!b) - throw new Error('aa'); -} - -var exception; -try { - let target = function (x, y) { - const actual = '' + x; - target(x); - }; - let handler = { - apply: function (theTarget, thisArg, argArray) { - return theTarget.apply([], argArray); - } - }; - let proxy = new Proxy(target, handler); - assert(proxy(new String("10"), new String("20")) === 'foo'); -} catch(e) { - exception = e; -} - -if (exception != "RangeError: Maximum call stack size exceeded.") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/dfg-to-string-on-string-or-string-object-does-not-gc.js b/implementation-contributed/javascriptcore/stress/dfg-to-string-on-string-or-string-object-does-not-gc.js deleted file mode 100644 index 0dae94df0ad..00000000000 --- a/implementation-contributed/javascriptcore/stress/dfg-to-string-on-string-or-string-object-does-not-gc.js +++ /dev/null @@ -1,34 +0,0 @@ -//@ requireOptions("--exceptionStackTraceLimit=0", "--defaultErrorStackTraceLimit=0", "--forceRAMSize=1000000", "--forceDebuggerBytecodeGeneration=1", "--useZombieMode=1", "--jitPolicyScale=0", "--collectContinuously=1", "--useConcurrentJIT=0") - -function assert(b) { - if (!b) - throw new Error('aa'); -} - -let alternate = true; -var exception; -try { - function alter(x) { - alternate = !alternate; - if (alternate) - return new String(x); - return x; - } - noInline(alter); - let target = function (x, y) { - const actual = '' + alter(x); - target(x); - }; - let handler = { - apply: function (theTarget, thisArg, argArray) { - return theTarget.apply([], argArray); - } - }; - let proxy = new Proxy(target, handler); - assert(proxy("10", "20") === 'foo'); -} catch(e) { - exception = e; -} - -if (exception != "RangeError: Maximum call stack size exceeded.") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/dont-crash-on-stack-overflow-when-parsing-builtin.js b/implementation-contributed/javascriptcore/stress/dont-crash-on-stack-overflow-when-parsing-builtin.js deleted file mode 100644 index 4254ec86865..00000000000 --- a/implementation-contributed/javascriptcore/stress/dont-crash-on-stack-overflow-when-parsing-builtin.js +++ /dev/null @@ -1,13 +0,0 @@ -//@ runDefault("--softReservedZoneSize=16384", "--reservedZoneSize=0", "--useJIT=0", "--validateBytecode=1", "--maxPerThreadStackUsage=499712") - -function f() { - try { - f(); - } catch (e) { - try { - Map.prototype.forEach.call('', {}); - } catch (e) {} - } -} - -f() diff --git a/implementation-contributed/javascriptcore/stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js b/implementation-contributed/javascriptcore/stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js deleted file mode 100644 index 55454418a31..00000000000 --- a/implementation-contributed/javascriptcore/stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js +++ /dev/null @@ -1,17 +0,0 @@ -//@ runDefault("--softReservedZoneSize=16384", "--reservedZoneSize=0", "--useJIT=0", "--validateBytecode=1", "--maxPerThreadStackUsage=499712") - -function runNearStackLimit(f) { - function t() { - try { - return t(); - } catch (e) { - new class extends (class {}) {}(); - return f(); - } - } - return t(); -} -function foo() { - new class extends (class {}) {}(); -} -runNearStackLimit(() => { return foo(); }); diff --git a/implementation-contributed/javascriptcore/stress/dont-emit-osr-exits-for-every-call-ftl.js b/implementation-contributed/javascriptcore/stress/dont-emit-osr-exits-for-every-call-ftl.js deleted file mode 100644 index 46946a57804..00000000000 --- a/implementation-contributed/javascriptcore/stress/dont-emit-osr-exits-for-every-call-ftl.js +++ /dev/null @@ -1,15 +0,0 @@ -//@ runDefault("--useConcurrentJIT=0", "--validateFTLOSRExitLiveness=1") - -function foo(o, p) { - p = null; - try { - o.f = null; - p = null; - } catch (e) { - } -} -noInline(foo); - -for (var i = 0; i < 1000000; ++i) { - foo({}); -} diff --git a/implementation-contributed/javascriptcore/stress/double-to-int32-NaN.js b/implementation-contributed/javascriptcore/stress/double-to-int32-NaN.js deleted file mode 100644 index 6d8af390f6c..00000000000 --- a/implementation-contributed/javascriptcore/stress/double-to-int32-NaN.js +++ /dev/null @@ -1,22 +0,0 @@ -function assert(b) { - if (!b) - throw new Error; -} - -function foo(view) { - let x = view.getFloat64(0); - return [x, x | 0]; -} -noInline(foo); - -let buffer = new ArrayBuffer(8); -let view = new DataView(buffer); -for (let i = 0; i < 1000000; ++i) { - for (let i = 0; i < 8; ++i) { - view.setInt8(i, Math.random() * 255); - } - - let [a, b] = foo(view); - if (isNaN(a)) - assert(b === 0); -} diff --git a/implementation-contributed/javascriptcore/stress/elidable-new-object-roflcopter-then-exit.js b/implementation-contributed/javascriptcore/stress/elidable-new-object-roflcopter-then-exit.js deleted file mode 100644 index f2638de3f56..00000000000 --- a/implementation-contributed/javascriptcore/stress/elidable-new-object-roflcopter-then-exit.js +++ /dev/null @@ -1,25 +0,0 @@ -//@ skip if $architecture != "arm64" and $architecture != "x86-64" - -function sumOfArithSeries(limit) { - return limit * (limit + 1) / 2; -} - -var n = 1000000; - -var array = [42, "hello"]; - -function foo() { - var result = 0; - var q; - for (var i = 0; i < n; ++i) { - var o = {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: i}}}}}}}}}}}}}}}}}}}; - var p = {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: {f: i + 1}}}}}}}}}}}}}}}}}}}; - q = array[(i > n - 100) | 0] + 1; - result += o.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f + p.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f; - } - return q + result; -} - -var result = foo(); -if (result != "hello" + 1 + (sumOfArithSeries(n - 1) + sumOfArithSeries(n))) - throw "Error: bad result: " + result; diff --git a/implementation-contributed/javascriptcore/stress/elide-new-object-dag-then-exit.js b/implementation-contributed/javascriptcore/stress/elide-new-object-dag-then-exit.js deleted file mode 100644 index a2ed594082c..00000000000 --- a/implementation-contributed/javascriptcore/stress/elide-new-object-dag-then-exit.js +++ /dev/null @@ -1,45 +0,0 @@ -//@ skip if $architecture == "x86" - -function sumOfArithSeries(limit) { - return limit * (limit + 1) / 2; -} - -var n = 10000000; - -function bar() { } - -function verify(q, i) { - if (q.f == q.g) - throw "Error: q.f == q.g"; - if (q.f.f != q.g.f) - throw "Error: q.f.f != q.g.f"; - if (q.f.f.f != i) - throw "Error: q.f.f.f != i"; -} - -function foo() { - var result = 0; - for (var i = 0; i < n; ++i) { - var leaf = {f:i}; - var o = {f:leaf}; - var p = {f:leaf}; - var q = {f:o, g:p}; - result += q.f.f.f; - if (i >= n - 100) { - // We want the materialization to happen in the exit. So, before calling the thing that - // causes the materialization, we call bar(). We've never profiled this call at the time - // of FTL compilation, so this should be an exit. - bar(); - verify(q, i); - } - } - return result; -} - -noInline(foo); -noInline(verify); -noInline(bar); - -var result = foo(); -if (result != sumOfArithSeries(n - 1)) - throw "Error: bad result: " + result; diff --git a/implementation-contributed/javascriptcore/stress/end-basic-block-set-local-should-filter-type.js b/implementation-contributed/javascriptcore/stress/end-basic-block-set-local-should-filter-type.js deleted file mode 100644 index cdd0035764b..00000000000 --- a/implementation-contributed/javascriptcore/stress/end-basic-block-set-local-should-filter-type.js +++ /dev/null @@ -1,16 +0,0 @@ -function bar() { - let x = 0; - foo(0); - if (x) { - } -} -function foo(a) { - let x = a[0] - a[0] = 0; - return; - a -} -foo([0]); -for (var i = 0; i < 10000; ++i) { - bar(); -} diff --git a/implementation-contributed/javascriptcore/stress/error-description-on-symbols-should-not-crash.js b/implementation-contributed/javascriptcore/stress/error-description-on-symbols-should-not-crash.js deleted file mode 100644 index 5cfdb301499..00000000000 --- a/implementation-contributed/javascriptcore/stress/error-description-on-symbols-should-not-crash.js +++ /dev/null @@ -1,18 +0,0 @@ -// Reviewed -//@ runFTLNoCJIT - -function shouldEqual(actual, expected) { - if (actual != expected) { - throw "ERROR: expect " + expected + ", actual " + actual; - } -} - -var exception; - -try { - Symbol(1)(); -} catch (e) { - exception = e; -} - -shouldEqual(exception, "TypeError: Symbol(1) is not a function. (In 'Symbol(1)()', 'Symbol(1)' is a Symbol)"); diff --git a/implementation-contributed/javascriptcore/stress/errors-with-simple-names-or-messages-should-not-crash-toString.js b/implementation-contributed/javascriptcore/stress/errors-with-simple-names-or-messages-should-not-crash-toString.js deleted file mode 100644 index 2df8febcf63..00000000000 --- a/implementation-contributed/javascriptcore/stress/errors-with-simple-names-or-messages-should-not-crash-toString.js +++ /dev/null @@ -1,13 +0,0 @@ -// Reviewed -//@ runDefault -// This test should not crash. - -Error.prototype.name = 0 -Error().toString(); -Error("1").toString(); -Error(0).toString(); - -Error.prototype.name = "" -Error().toString(); -Error("1").toString(); -Error(0).toString(); diff --git a/implementation-contributed/javascriptcore/stress/exception-in-to-property-key-should-be-handled-early-in-object-methods.js b/implementation-contributed/javascriptcore/stress/exception-in-to-property-key-should-be-handled-early-in-object-methods.js deleted file mode 100644 index 6b309819440..00000000000 --- a/implementation-contributed/javascriptcore/stress/exception-in-to-property-key-should-be-handled-early-in-object-methods.js +++ /dev/null @@ -1,73 +0,0 @@ -// Reviewed -var propertyKey = { - toString() { - throw new Error("propertyKey.toString is called."); - } -}; - -function shouldThrow(func, message) { - var error = null; - try { - func(); - } catch (e) { - error = e; - } - if (!error) - throw new Error("not thrown."); - if (String(error) !== message) - throw new Error("bad error: " + String(error)); -} - -var object = {}; - -shouldThrow(function () { - object.hasOwnProperty(propertyKey); -}, "Error: propertyKey.toString is called."); - -shouldThrow(function () { - Object.prototype.hasOwnProperty.call(null, propertyKey); -}, "Error: propertyKey.toString is called."); - -shouldThrow(function () { - Object.prototype.hasOwnProperty.call(null, 'ok'); -}, "TypeError: null is not an object (evaluating 'Object.prototype.hasOwnProperty.call(null, 'ok')')"); - -shouldThrow(function () { - object.propertyIsEnumerable(propertyKey); -}, "Error: propertyKey.toString is called."); - -// ToPropertyKey is first, ToObject is following. -shouldThrow(function () { - Object.prototype.propertyIsEnumerable.call(null, propertyKey); -}, "Error: propertyKey.toString is called."); - -shouldThrow(function () { - // ToPropertyKey is first, ToObject is following. - Object.prototype.propertyIsEnumerable.call(null, 'ok'); -}, "TypeError: null is not an object (evaluating 'Object.prototype.propertyIsEnumerable.call(null, 'ok')')"); - -shouldThrow(function () { - object.__defineGetter__(propertyKey, function () { - return 'NG'; - }); -}, "Error: propertyKey.toString is called."); - -if (Object.getOwnPropertyDescriptor(object, '')) - throw new Error("bad descriptor"); - -shouldThrow(function () { - object.__defineSetter__(propertyKey, function () { - return 'NG'; - }); -}, "Error: propertyKey.toString is called."); - -if (Object.getOwnPropertyDescriptor(object, '')) - throw new Error("bad descriptor"); - -shouldThrow(function () { - object.__lookupGetter__(propertyKey); -}, "Error: propertyKey.toString is called."); - -shouldThrow(function () { - object.__lookupSetter__(propertyKey); -}, "Error: propertyKey.toString is called."); diff --git a/implementation-contributed/javascriptcore/stress/exitok-is-not-the-same-as-mayExit.js b/implementation-contributed/javascriptcore/stress/exitok-is-not-the-same-as-mayExit.js deleted file mode 100644 index 40cec77cc2c..00000000000 --- a/implementation-contributed/javascriptcore/stress/exitok-is-not-the-same-as-mayExit.js +++ /dev/null @@ -1,19 +0,0 @@ -//@ runDefault("--useAccessInlining=0") - -function bar(ranges) { - for (const [z] of ranges) { - let ys = []; - for (y = 0; y <= 100000; y++) { - ys[y] = false; - } - } -} - -function foo() { - let iterator = [][Symbol.iterator](); - iterator.x = 1; -} - -bar([ [], [], [], [], [], [], [], [], [], [], [] ]); -foo(); -bar([ [], [] ]); diff --git a/implementation-contributed/javascriptcore/stress/for-in-invalidate-context-weird-assignments.js b/implementation-contributed/javascriptcore/stress/for-in-invalidate-context-weird-assignments.js deleted file mode 100644 index 8c1a4fc93a1..00000000000 --- a/implementation-contributed/javascriptcore/stress/for-in-invalidate-context-weird-assignments.js +++ /dev/null @@ -1,94 +0,0 @@ -function assert(b) { - if (!b) - throw new Error("Bad"); -} - -function test(f) { - noInline(f); - for (let i = 0; i < 1000; ++i) - f(); -} - -function shouldThrowSyntaxError(script) { - let error; - try { - eval(script); - } catch (e) { - error = e; - } - - if (!(error instanceof SyntaxError)) - throw new Error('Expected SyntaxError!'); -} - -test(function() { - let o = {xx: 0}; - for (let i in o) { - for (i in [0, 1, 2]) { } - assert(typeof i === "string"); - assert(o[i] === undefined); - } -}); - -test(function() { - let o = {xx: 0}; - for (let i in o) { - for ({i} of [{i: 0}]) { } - assert(typeof i === "number"); - assert(o[i] === undefined); - } -}); - -test(function() { - let o = {xx: 0}; - for (let i in o) { - ;({i} = {i: 0}); - assert(typeof i === "number"); - assert(o[i] === undefined); - } -}); - -test(function() { - let o = {xx: 0}; - for (let i in o) { - ;([i] = [0]); - assert(typeof i === "number"); - assert(o[i] === undefined); - } -}); - -test(function() { - let o = {xx: 0}; - for (let i in o) { - ;({...i} = {a:20, b:30}); - assert(typeof i === "object"); - assert(o[i] === undefined); - } -}); - -test(function() { - let o = {xx: 0}; - for (let i in o) { - eval("i = 0;"); - assert(typeof i === "number"); - assert(o[i] === undefined); - } -}); - -shouldThrowSyntaxError( - `function f() { - let o = {xx: 0}; - for (let i in o) { - for (var i of [0]) { } - } - }` -); - -shouldThrowSyntaxError( - `function f() { - let o = {xx: 0}; - for (let i in o) { - var i = 0; - } - }` -); diff --git a/implementation-contributed/javascriptcore/stress/for-in-tests.js b/implementation-contributed/javascriptcore/stress/for-in-tests.js deleted file mode 100644 index 3282c5f1db4..00000000000 --- a/implementation-contributed/javascriptcore/stress/for-in-tests.js +++ /dev/null @@ -1,199 +0,0 @@ -function shouldThrowSyntaxError(script) { - let error; - try { - eval(script); - } catch (e) { - error = e; - } - - if (!(error instanceof SyntaxError)) - throw new Error('Expected SyntaxError!'); -} - -(function() { - // Iterate over an array with normal indexed properties. - var foo = function() { - var a = [1, 2, 3, 4, 5]; - var sum = 0; - var result = ""; - for (var p in a) - result += a[p]; - return result; - }; - noInline(foo); - for (var i = 0; i < 10000; ++i) { - if (foo() !== "12345") - throw new Error("bad result"); - } - foo(null); -})(); -(function() { - // Iterate over an object with normal non-indexed properties. - var foo = function() { - var o = {}; - o.x = 1; - o.y = 2; - o.z = 3; - var result = ""; - for (var p in o) - result += o[p]; - return result; - }; - noInline(foo); - for (var i = 0; i < 10000; ++i) { - if (foo() !== "123") - throw new Error("bad result"); - } - foo(null); -})(); -(function() { - // Iterate over an object with both indexed and non-indexed properties. - var foo = function() { - var o = {}; - o.x = 1; - o.y = 2; - o.z = 3; - o[0] = 4; - o[1] = 5; - o[2] = 6; - var result = ""; - for (var p in o) - result += o[p]; - return result; - }; - noInline(foo); - for (var i = 0; i < 10000; ++i) { - if (foo() != "456123") - throw new Error("bad result"); - } - foo(null); -})(); -(function() { - // Iterate over an array with both indexed and non-indexed properties. - var foo = function() { - var a = [4, 5, 6]; - a.x = 1; - a.y = 2; - a.z = 3; - var result = ""; - for (var p in a) - result += a[p]; - return result; - }; - noInline(foo); - for (var i = 0; i < 10000; ++i) { - if (foo() !== "456123") - throw new Error("bad result"); - } - foo(null); -})(); -(function() { - var foo = function(a, b) { - for (var p in b) { - var f1 = a[p]; - var f2 = b[p]; - if (f1 === f2) - continue; - a[p] = b[p]; - } - }; - noInline(foo); - for (var i = 0; i < 10000; ++i) { - var o1 = {}; - var o2 = {}; - o2.x = 42; - o2.y = 53; - foo(o1, o2); - if (o1.x !== o2.x) - throw new Error("bad result: " + o1.x + "!==" + o2.x); - if (o1.y !== o2.y) - throw new Error("bad result: " + o1.y + "!==" + o2.y); - } -})(); - -(function() { - var foo = function(a, b) { - for (var p = b in a) {} - return p; - }; - noInline(foo); - for (var i = 0; i < 10000; ++i) { - var expected = 'expected-result'; - var result = foo({}, expected); - if (expected !== result) - throw new Error("bad result: " + result + "!==" + expected); - } - for (var i = 0; i < 10000; ++i) { - var expected = 'a'; - var result = foo({a:'abcd'}, expected); - if (expected !== result) - throw new Error("bad result: " + result + "!==" + expected); - } - for (var i = 0; i < 10000; ++i) { - var expected = 'b'; - var result = foo({a:'abcd', b: 'bcde'}, expected); - if (expected !== result) - throw new Error("bad result: " + result + "!==" + expected); - } - - for (var i = 0; i < 10000; ++i) { - var expected = 'c'; - var o = {a:'abcd', b: 'bcde'}; - o.c = 'cdef'; - var result = foo(o, expected); - if (expected !== result) - throw new Error("bad result: " + result + "!==" + expected); - } -})(); - -(function() { - var boo = function () { return 'expected-result'; }; - var foo = function(a) { - for (var p = boo() in a) {} - return p; - }; - noInline(foo); - for (var i = 0; i < 10000; ++i) { - var expected = 'expected-result'; - var result = foo({}); - if (expected !== result) - throw new Error("bad result: " + result + "!==" + expected); - } -})(); - -shouldThrowSyntaxError( - `function foo(a, b) { - { - let p = 'some-value'; - for (var p = b in a) {} - } - }` -); - -(function() { - var foo = function(a, b, c) { - for (var p = b + c in a) {} - return p; - }; - noInline(foo); - for (var i = 0; i < 10000; ++i) { - var expected = 'expected-result'; - var result = foo({}, 'expected', '-result'); - if (expected !== result) - throw new Error("bad result: " + result + "!==" + expected); - } -})(); - -shouldThrowSyntaxError( - `function foo() { - 'use strict'; - for (var i = 0 in {}) {} - }` -); - -shouldThrowSyntaxError( - `function foo() { - const i = 10; - for (var i = 0 in {}) {} - }` -); diff --git a/implementation-contributed/javascriptcore/stress/force-string-arrayMode-on-originalNonArray-array-class.js b/implementation-contributed/javascriptcore/stress/force-string-arrayMode-on-originalNonArray-array-class.js deleted file mode 100644 index 77df900845e..00000000000 --- a/implementation-contributed/javascriptcore/stress/force-string-arrayMode-on-originalNonArray-array-class.js +++ /dev/null @@ -1,16 +0,0 @@ -//@ requireOptions("--jitPolicyScale=0.1") - -function foo(a) { - a.length; -} - -for (let i = 0; i < 100; i++) { - let a = i % 2 ? new Uint8Array() : new Uint16Array(); - - for (let j = 0; j < 2; j++) - foo(a); - - gc(); - foo(''); - foo(a); -} diff --git a/implementation-contributed/javascriptcore/stress/ftl-ai-filter-phantoms-should-clear-clear-value.js b/implementation-contributed/javascriptcore/stress/ftl-ai-filter-phantoms-should-clear-clear-value.js deleted file mode 100644 index 54265d30141..00000000000 --- a/implementation-contributed/javascriptcore/stress/ftl-ai-filter-phantoms-should-clear-clear-value.js +++ /dev/null @@ -1,98 +0,0 @@ -//@ requireOptions("--watchdog=10000", "--watchdog-exception-ok") -// This test only seems to reproduce the issue when it runs in an infinite loop. So we use the watchdog to time it out. - -var msPerDay = 86400000; -function Day(t) { - return Math.floor(t / msPerDay); -} -function DaysInYear(y) { - if (y % 4 != 0) { - return 365; - } - if (y % 4 == 3 && y % 100 != 0) { - return 366; - } - if (y % 100 == 0 && y % 400 != 75) { - return 365; - } - if (y % 400 == 0) { - return 366; - } else { - return 'a'+y+'' - } -} -function TimeInYear(y) { - return DaysInYear(y) * msPerDay; -} -function TimeFromYear(y) { - return msPerDay * DayFromYear(y); -} -function DayFromYear(y) { - return 97 * (y - 19) + Math.floor((y - 1969) / 4) - Math.floor((y - 1901) / 100) + Math.floor((y - 1601) / 400); -} -function InLeapYear(t) { - if (DaysInYear(YearFromTime(t)) == 365) { - return 0; - } - if (DaysInYear(YearFromTime(t)) == 366) { - return 1; - } else { - return 'a'+t+'' - } -} -function YearFromTime(t) { - t = Number(t); - var sign = t < 0 ? -1 : 1; - var year = sign < 0 ? 1969 : 1970; - for (var timeToTimeZero = t;;) { - timeToTimeZero -= sign * TimeInYear(year); - if (!(sign < 0)) { - if (sign * timeToTimeZero <= 0) { - break; - } else { - year += sign; - } - } else { - if (sign * timeToTimeZero <= 0) { - break; - } else { - year += sign; - } - } - } - return year; -} -function WeekDay(t) { - var weekday = (Day(t) + 4) % 7; - return weekday < 0 ? 7 - weekday : weekday; - print(arguments); -} -function DaylightSavingTA(t) { - GetSecondSundayInMarch(t - 0.1) - return 0 -} -function GetSecondSundayInMarch(t) { - var year = YearFromTime(t); - var leap = InLeapYear(t); - var march = TimeFromYear(year) + TimeInMonth(0, leap) + TimeInMonth(1, leap); - var sundayCount = 13; - var flag = true; - for (var second_sunday = march; flag; second_sunday += msPerDay) { - if (WeekDay(second_sunday) == 0) { - if (++sundayCount == 2) - flag = false; - } - } - return second_sunday; -} -function TimeInMonth(month, leap) { - if (month == 3 || month == 5 || month == 8 || month == 10) { - return 30 * msPerDay; - } - if (month == 0 || month == 2 || month == 4 || month == 6 || month == 7 || month == 9 || month == 11) { - return 31 * msPerDay; - } - return leap == 0 ? 28 * msPerDay : 29 * msPerDay; - String(month) -} -DaylightSavingTA(0) diff --git a/implementation-contributed/javascriptcore/stress/ftl-should-always-filter-for-low-type-check-functions.js b/implementation-contributed/javascriptcore/stress/ftl-should-always-filter-for-low-type-check-functions.js deleted file mode 100644 index 0a1f4f3e093..00000000000 --- a/implementation-contributed/javascriptcore/stress/ftl-should-always-filter-for-low-type-check-functions.js +++ /dev/null @@ -1,31 +0,0 @@ -//@ runDefault("--useConcurrentJIT=0", "--jitPolicyScale=0", "--maximumInliningDepth=2") - -function foo(x, y) { - var w = 0; - for (var i = 0; i < x.length; ++i) { - for (var j = 0; j < x.length; ++j) - w += foo(j, i); - y[i] = w; - } -} - -function test(x, a3) { - a1 = []; - a2 = []; - - for (i = 0; i < x; ++i) - a1[i] = 0; - - for (i = 0; i < 10; ++i) { - foo(a3, a2); - foo(a3, a1); - } -} -noDFG(test); - -a3 = []; -for (var i = 0; i < 3; ++i) - a3[i] = 0; - -for (var i = 3; i <= 12; i *= 2) - test(i, a3); diff --git a/implementation-contributed/javascriptcore/stress/function-cache-with-parameters-end-position.js b/implementation-contributed/javascriptcore/stress/function-cache-with-parameters-end-position.js deleted file mode 100644 index b0ff2214d0f..00000000000 --- a/implementation-contributed/javascriptcore/stress/function-cache-with-parameters-end-position.js +++ /dev/null @@ -1,40 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} - -for (var i = 0; i < 10; ++i) { - var f = Function('/*) {\n*/', 'return 42'); - shouldBe(f.toString(), -`function anonymous(/*) { -*/) { -return 42 -}`); -} -shouldThrow(() => Function('/*', '*/){\nreturn 42'), `SyntaxError: Parameters should match arguments offered as parameters in Function constructor.`); - -shouldThrow(() => Function('/*', '*/){\nreturn 43'), `SyntaxError: Parameters should match arguments offered as parameters in Function constructor.`); -for (var i = 0; i < 10; ++i) { - var f = Function('/*) {\n*/', 'return 43'); - shouldBe(f.toString(), -`function anonymous(/*) { -*/) { -return 43 -}`); -} - diff --git a/implementation-contributed/javascriptcore/stress/function-caller-async-arrow-function-body.js b/implementation-contributed/javascriptcore/stress/function-caller-async-arrow-function-body.js deleted file mode 100644 index 0c1dd90e60e..00000000000 --- a/implementation-contributed/javascriptcore/stress/function-caller-async-arrow-function-body.js +++ /dev/null @@ -1,27 +0,0 @@ -// Reviewed -//@ runDefault - -(function thingy() { - function bar() - { - return bar.caller; - } - - var ok = false; - var badError = null; - var foo = async () => { - try { - bar(); - ok = true; - } catch (e) { - if (e.toString() != "TypeError: Function.caller used to retrieve async function body") - badError = e; - } - } - - foo(); - if (ok) - throw "Error: did not throw error"; - if (badError) - throw "Bad error: " + badError; -})(); diff --git a/implementation-contributed/javascriptcore/stress/function-caller-async-function-body.js b/implementation-contributed/javascriptcore/stress/function-caller-async-function-body.js deleted file mode 100644 index 8cee86946f9..00000000000 --- a/implementation-contributed/javascriptcore/stress/function-caller-async-function-body.js +++ /dev/null @@ -1,28 +0,0 @@ -// Reviewed -//@ runDefault - -(function thingy() { - function bar() - { - return bar.caller; - } - - var ok = false; - var badError = null; - async function foo() - { - try { - bar(); - ok = true; - } catch (e) { - if (e.toString() != "TypeError: Function.caller used to retrieve async function body") - badError = e; - } - } - - foo(); - if (ok) - throw "Error: did not throw error"; - if (badError) - throw "Bad error: " + badError; -})(); diff --git a/implementation-contributed/javascriptcore/stress/function-caller-async-generator-body.js b/implementation-contributed/javascriptcore/stress/function-caller-async-generator-body.js deleted file mode 100644 index 1ee3cdee0e6..00000000000 --- a/implementation-contributed/javascriptcore/stress/function-caller-async-generator-body.js +++ /dev/null @@ -1,28 +0,0 @@ -// Reviewed -//@ runDefault - -(function thingy() { - function bar() - { - return bar.caller; - } - - var ok = false; - var badError = null; - async function* foo() - { - try { - bar(); - ok = true; - } catch (e) { - if (e.toString() != "TypeError: Function.caller used to retrieve generator body") - badError = e; - } - } - - foo().next(); - if (ok) - throw "Error: did not throw error"; - if (badError) - throw "Bad error: " + badError; -})(); diff --git a/implementation-contributed/javascriptcore/stress/function-caller-generator-body.js b/implementation-contributed/javascriptcore/stress/function-caller-generator-body.js deleted file mode 100644 index 1e6538227fc..00000000000 --- a/implementation-contributed/javascriptcore/stress/function-caller-generator-body.js +++ /dev/null @@ -1,29 +0,0 @@ -// Reviewed -/** -#### ch, d8, jsshell, node -Error: did not throw error - */ -//@ runDefault - -(function thingy() { - function bar() - { - return bar.caller; - } - - function* foo() - { - bar(); - } - - var ok = false; - try { - foo().next(); - ok = true; - } catch (e) { - if (e.toString() != "TypeError: Function.caller used to retrieve generator body") - throw "Error: bad error: " + e; - } - if (ok) - throw "Error: did not throw error"; -})(); diff --git a/implementation-contributed/javascriptcore/stress/function-caller-generator-method-body.js b/implementation-contributed/javascriptcore/stress/function-caller-generator-method-body.js deleted file mode 100644 index aff75766902..00000000000 --- a/implementation-contributed/javascriptcore/stress/function-caller-generator-method-body.js +++ /dev/null @@ -1,27 +0,0 @@ -// Reviewed -//@ runDefault - -(function thingy() { - function bar() - { - return bar.caller; - } - - class C { - *foo() - { - bar(); - } - } - - var ok = false; - try { - new C().foo().next(); - ok = true; - } catch (e) { - if (e.toString() != "TypeError: Function.caller used to retrieve generator body") - throw "Error: bad error: " + e; - } - if (ok) - throw "Error: did not throw error"; -})(); diff --git a/implementation-contributed/javascriptcore/stress/function-constructor-name.js b/implementation-contributed/javascriptcore/stress/function-constructor-name.js deleted file mode 100644 index bf7e9459ca5..00000000000 --- a/implementation-contributed/javascriptcore/stress/function-constructor-name.js +++ /dev/null @@ -1,36 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -var GeneratorFunction = function*(){}.constructor; -var AsyncFunction = async function(){}.constructor; -var AsyncGeneratorFunction = async function*(){}.constructor; - -var f = Function(`return 42`); -shouldBe(typeof anonymous, `undefined`); -shouldBe(f.toString(), -`function anonymous() { -return 42 -}`); - -var gf = GeneratorFunction(`return 42`); -shouldBe(typeof anonymous, `undefined`); -shouldBe(gf.toString(), -`function* anonymous() { -return 42 -}`); - -var af = AsyncFunction(`return 42`); -shouldBe(typeof anonymous, `undefined`); -shouldBe(af.toString(), -`async function anonymous() { -return 42 -}`); - -var agf = AsyncGeneratorFunction(`return 42`); -shouldBe(typeof anonymous, `undefined`); -shouldBe(agf.toString(), -`async function* anonymous() { -return 42 -}`); diff --git a/implementation-contributed/javascriptcore/stress/get-by-id-change-mode.js b/implementation-contributed/javascriptcore/stress/get-by-id-change-mode.js deleted file mode 100644 index 647588f49cd..00000000000 --- a/implementation-contributed/javascriptcore/stress/get-by-id-change-mode.js +++ /dev/null @@ -1,12 +0,0 @@ -//@ runDefault("--useConcurrentJIT=0") - -forEach({ length: 5 }, function() { - for (var i = 0; i < 10; i++) { - forEach([1], function() {}); - } -}); - -function forEach(a, b) { - for (var c = 0; c < a.length; c++) - b(); -} diff --git a/implementation-contributed/javascriptcore/stress/get-stack-double.js b/implementation-contributed/javascriptcore/stress/get-stack-double.js deleted file mode 100644 index fbfc6eeaca9..00000000000 --- a/implementation-contributed/javascriptcore/stress/get-stack-double.js +++ /dev/null @@ -1,11 +0,0 @@ -function bar(n) -{ - for (p = 0; p < 30; p++) - if (p + 0.1) - n -= 0.2 -} - -for (var i = 0; i < 100000; ++i) - bar(0); - -function noInline() { } diff --git a/implementation-contributed/javascriptcore/stress/global-add-function-should-not-be-shadowed-by-lexical-bindings.js b/implementation-contributed/javascriptcore/stress/global-add-function-should-not-be-shadowed-by-lexical-bindings.js deleted file mode 100644 index 9ebb839606b..00000000000 --- a/implementation-contributed/javascriptcore/stress/global-add-function-should-not-be-shadowed-by-lexical-bindings.js +++ /dev/null @@ -1,18 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} - -shouldThrow(() => { - $.evalScript(`const shouldThrow = 42`); -}, `SyntaxError: Can't create duplicate variable that shadows a global property: 'shouldThrow'`); diff --git a/implementation-contributed/javascriptcore/stress/global-environment-does-not-trap-unscopables.js b/implementation-contributed/javascriptcore/stress/global-environment-does-not-trap-unscopables.js deleted file mode 100644 index ce2770ec60f..00000000000 --- a/implementation-contributed/javascriptcore/stress/global-environment-does-not-trap-unscopables.js +++ /dev/null @@ -1,20 +0,0 @@ -// Reviewed -function test(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -var global = new Function('return this')(); -var Cocoa = 'Cocoa'; - -global[Symbol.unscopables] = { - Cocoa: true -}; - -test(Cocoa, "Cocoa"); -(function () { - var Cocoa = 'local' - with (global) { - test(Cocoa, "local"); - } -}()); diff --git a/implementation-contributed/javascriptcore/stress/global-import-function-should-return-a-promise-when-clearing-exceptions.js b/implementation-contributed/javascriptcore/stress/global-import-function-should-return-a-promise-when-clearing-exceptions.js deleted file mode 100644 index 5e520312879..00000000000 --- a/implementation-contributed/javascriptcore/stress/global-import-function-should-return-a-promise-when-clearing-exceptions.js +++ /dev/null @@ -1,19 +0,0 @@ -//@ requireOptions("--maxPerThreadStackUsage=300000", "--exceptionStackTraceLimit=0", "--defaultErrorStackTraceLimit=0") - -function bar(v) { - !v - foo(); -} -function foo() { - eval(`bar(import(0));`); -} - -var exception; -try { - foo(); -} catch (e) { - exception = e; -} - -if (exception != "RangeError: Maximum call stack size exceeded.") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/global-lexical-binding-epoch-should-be-correct-one.js b/implementation-contributed/javascriptcore/stress/global-lexical-binding-epoch-should-be-correct-one.js deleted file mode 100644 index 4e5d22563ab..00000000000 --- a/implementation-contributed/javascriptcore/stress/global-lexical-binding-epoch-should-be-correct-one.js +++ /dev/null @@ -1,31 +0,0 @@ -globalThis.a = 0; -function f1(v) -{ - let x = 40; - function f2() { - x; - let y = 41; - function f3() { - let z = 44; - function f4() { - z; - if (v) - return a; - return 1; - } - return f4(); - } - return f3(); - } - return f2(); -} -var N = 2; -for (var i = 0; i < N; ++i) { - $.evalScript(`let i${i} = 42`); -} -if (f1(false) !== 1) { - throw new Error('first'); -} -$.evalScript(`let a = 42`); -if (f1(true) !== 42) - throw new Error('second'); diff --git a/implementation-contributed/javascriptcore/stress/global-static-variables-should-not-be-shadowed-by-lexical-bindings.js b/implementation-contributed/javascriptcore/stress/global-static-variables-should-not-be-shadowed-by-lexical-bindings.js deleted file mode 100644 index 307d3e8359d..00000000000 --- a/implementation-contributed/javascriptcore/stress/global-static-variables-should-not-be-shadowed-by-lexical-bindings.js +++ /dev/null @@ -1,18 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} - -shouldThrow(() => { - $.evalScript(`const NaN = 42`); -}, `SyntaxError: Can't create duplicate variable that shadows a global property: 'NaN'`); diff --git a/implementation-contributed/javascriptcore/stress/ignore-promise-species.js b/implementation-contributed/javascriptcore/stress/ignore-promise-species.js deleted file mode 100644 index 373faf609ab..00000000000 --- a/implementation-contributed/javascriptcore/stress/ignore-promise-species.js +++ /dev/null @@ -1,14 +0,0 @@ -// Reviewed -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -class DerivedPromise extends Promise { - static get [Symbol.species]() { - return Promise; - } -} - -shouldBe(DerivedPromise.all([ 1, 2, 3]) instanceof DerivedPromise, true); -shouldBe(DerivedPromise.race([ 1, 2, 3]) instanceof DerivedPromise, true); diff --git a/implementation-contributed/javascriptcore/stress/inferred-names.js b/implementation-contributed/javascriptcore/stress/inferred-names.js deleted file mode 100644 index d8fcd4455bc..00000000000 --- a/implementation-contributed/javascriptcore/stress/inferred-names.js +++ /dev/null @@ -1,156 +0,0 @@ -// Reviewed -/*** - * https://github.com/Microsoft/ChakraCore/issues/3407 - */ -function assert(b) { - if (!b) - throw new Error("Bad assertion") -} - -function funcName() { return "func"; } -function klassName() { return "klass"; } - -// Anonymous. -assert( (function(){}).name === "" ); -assert( (function*(){}).name === "" ); -assert( (()=>{}).name === "" ); -assert( (class{}).name === "" ); - -// Named functions, do not infer name. -let f1 = function namedFunction1(){}; -let f2 = function* namedFunction2(){}; -let k1 = class namedClass{}; -assert(f1.name === "namedFunction1"); -assert(f2.name === "namedFunction2"); -assert(k1.name === "namedClass"); - -// Assignment, infer name. -let func1 = function(){}; -let func2 = function*(){}; -let func3 = ()=>{}; -assert(func1.name === "func1"); -assert(func2.name === "func2"); -assert(func3.name === "func3"); - -// Destructuring assignment default value. -let [ arrFunc1 = function(){} ] = []; -let [ arrFunc2 = function*(){} ] = []; -let [ arrFunc3 = ()=>{} ] = []; -let { objFunc1 = function(){} } = {}; -let { objFunc2 = function*(){} } = {}; -let { objFunc3 = ()=>{} } = {}; -let [ arrClass = class{} ] = []; -let { objClass = class{} } = {}; -assert(arrFunc1.name === "arrFunc1"); -assert(arrFunc2.name === "arrFunc2"); -assert(arrFunc3.name === "arrFunc3"); -assert(objFunc1.name === "objFunc1"); -assert(objFunc2.name === "objFunc2"); -assert(objFunc3.name === "objFunc3"); -assert(arrClass.name === "arrClass"); -assert(objClass.name === "objClass"); - -for ([ forArrFunc1 = function(){} ] of [[]]) - assert(forArrFunc1.name === "forArrFunc1"); -for ([ forArrFunc2 = function*(){} ] of [[]]) - assert(forArrFunc2.name === "forArrFunc2"); -for ([ forArrFunc3 = ()=>{} ] of [[]]) - assert(forArrFunc3.name === "forArrFunc3"); -for ([ forArrClass = class{} ] of [[]]) - assert(forArrClass.name === "forArrClass"); - -for ({ forObjFunc1 = function(){} } of [{}]) - assert(forObjFunc1.name === "forObjFunc1"); -for ({ forObjFunc2 = function*(){} } of [{}]) - assert(forObjFunc2.name === "forObjFunc2"); -for ({ forObjFunc3 = ()=>{} } of [{}]) - assert(forObjFunc3.name === "forObjFunc3"); -for ({ forObjClass = class{} } of [{}]) - assert(forObjClass.name === "forObjClass"); - -// Global variable assignment. -assert( (globalFunc = function(){}).name === "globalFunc" ); -assert( (globalFunc = function*(){}).name === "globalFunc" ); -assert( (globalFunc = ()=>{}).name === "globalFunc" ); -assert( (globalKlass = class{}).name === "globalKlass" ); - -// Named properties. -assert( ({"func": function(){}}).func.name === "func" ); -assert( ({"func": function*(){}}).func.name === "func" ); -assert( ({func: function(){}}).func.name === "func" ); -assert( ({func: function*(){}}).func.name === "func" ); -assert( ({func(){}}).func.name === "func" ); -assert( ({*func(){}}).func.name === "func" ); -assert( ({["func"]: function(){}}).func.name === "func" ); -assert( ({["func"]: function*(){}}).func.name === "func" ); -assert( ({["func"](){}}).func.name === "func" ); -assert( ({*["func"](){}}).func.name === "func" ); -assert( ({[funcName()]: function(){}}).func.name === "func" ); -assert( ({[funcName()]: function*(){}}).func.name === "func" ); -assert( ({[funcName()](){}}).func.name === "func" ); -assert( ({*[funcName()](){}}).func.name === "func" ); - -assert( ({"func": ()=>{}}).func.name === "func" ); -assert( ({func: ()=>{}}).func.name === "func" ); -assert( ({["func"]: ()=>{}}).func.name === "func" ); -assert( ({[funcName()]: ()=>{}}).func.name === "func" ); - -assert( ({"klass": class{}}).klass.name === "klass" ); -assert( ({klass: class{}}).klass.name === "klass" ); -assert( ({["klass"]: class{}}).klass.name === "klass" ); -assert( ({[klassName()]: class{}}).klass.name === "klass" ); - -// Unnamed computed properties. -let sym = Symbol(); -assert( ({[sym]: function(){}})[sym].name === "" ); -assert( ({[sym]: function*(){}})[sym].name === "" ); -assert( ({[sym]: ()=>{}})[sym].name === "" ); -assert( ({[sym](){}})[sym].name === "" ); -assert( ({*[sym](){}})[sym].name === "" ); -assert( ({[sym]: class{}})[sym].name === "" ); - -// Parameter default value. -assert( (function(func = function(){}) { return func.name })() === "func" ); -assert( (function(func = function*(){}) { return func.name })() === "func" ); -assert( (function(func = ()=>{}) { return func.name })() === "func" ); -assert( (function(klass = class{}) { return klass.name })() === "klass" ); - -// Parameter Destructuring default value. -assert( (function({func = function(){}}) { return func.name })({}) === "func" ); -assert( (function({func = function*(){}}) { return func.name })({}) === "func" ); -assert( (function({func = ()=>{}}) { return func.name })({}) === "func" ); -assert( (function([func = function(){}]) { return func.name })([]) === "func" ); -assert( (function([func = function*(){}]) { return func.name })([]) === "func" ); -assert( (function([func = ()=>{}]) { return func.name })([]) === "func" ); -assert( (function({klass = class{}}) { return klass.name })({}) === "klass" ); -assert( (function([klass = class{}]) { return klass.name })([]) === "klass" ); - -assert( (({func = function(){}}) => { return func.name })({}) === "func" ); -assert( (({func = function*(){}}) => { return func.name })({}) === "func" ); -assert( (({func = ()=>{}}) => { return func.name })({}) === "func" ); -assert( (([func = function(){}]) => { return func.name })([]) === "func" ); -assert( (([func = function*(){}]) => { return func.name })([]) === "func" ); -assert( (([func = ()=>{}]) => { return func.name })([]) === "func" ); -assert( (({klass = class{}}) => { return klass.name })({}) === "klass" ); -assert( (([klass = class{}]) => { return klass.name })([]) === "klass" ); - -assert( ({ method({func = function(){}}) { return func.name } }).method({}) === "func" ); -assert( ({ method({func = function*(){}}) { return func.name } }).method({}) === "func" ); -assert( ({ method({func = ()=>{}}) { return func.name } }).method({}) === "func" ); -assert( ({ method([func = function(){}]) { return func.name } }).method([]) === "func" ); -assert( ({ method([func = function*(){}]) { return func.name } }).method([]) === "func" ); -assert( ({ method([func = ()=>{}]) { return func.name } }).method([]) === "func" ); -assert( ({ method({klass = class{}}) { return klass.name } }).method({}) === "klass" ); -assert( ({ method([klass = class{}]) { return klass.name } }).method([]) === "klass" ); - -// B.3.1__proto__ Property Names in Object Initializers - -assert( ({__proto__: function(){}}).__proto__.name === "" ); -assert( ({__proto__: function*(){}}).__proto__.name === "" ); -assert( ({__proto__: ()=>{}}).__proto__.name === "" ); -assert( ({["__proto__"]: function(){}}).__proto__.name === "__proto__" ); -assert( ({["__proto__"]: function*(){}}).__proto__.name === "__proto__" ); -assert( ({["__proto__"]: ()=>{}}).__proto__.name === "__proto__" ); -assert( ({__proto__(){}}).__proto__.name === "__proto__" ); -assert( ({*__proto__(){}}).__proto__.name === "__proto__" ); -assert( ({__proto__(){}}).__proto__.name === "__proto__" ); diff --git a/implementation-contributed/javascriptcore/stress/is-undefined-or-null-builtin.js b/implementation-contributed/javascriptcore/stress/is-undefined-or-null-builtin.js deleted file mode 100644 index 0f5a8c518ec..00000000000 --- a/implementation-contributed/javascriptcore/stress/is-undefined-or-null-builtin.js +++ /dev/null @@ -1,26 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} -noInline(shouldBe); - -var isUndefinedOrNull = $vm.createBuiltin(`(function (value) { return @isUndefinedOrNull(value); })`); -noInline(isUndefinedOrNull); - -var masquerader = makeMasquerader(); -for (var i = 0; i < 1e5; ++i) { - shouldBe(isUndefinedOrNull(null), true); - shouldBe(isUndefinedOrNull(undefined), true); - shouldBe(isUndefinedOrNull("Hello"), false); - shouldBe(isUndefinedOrNull(Symbol("Hello")), false); - shouldBe(isUndefinedOrNull(42), false); - shouldBe(isUndefinedOrNull(-42), false); - shouldBe(isUndefinedOrNull(0), false); - shouldBe(isUndefinedOrNull(-0), false); - shouldBe(isUndefinedOrNull(42.2), false); - shouldBe(isUndefinedOrNull(-42.2), false); - shouldBe(isUndefinedOrNull({}), false); - shouldBe(isUndefinedOrNull([]), false); - shouldBe(isUndefinedOrNull(true), false); - shouldBe(isUndefinedOrNull(masquerader), false); -} diff --git a/implementation-contributed/javascriptcore/stress/jsc-read.js b/implementation-contributed/javascriptcore/stress/jsc-read.js deleted file mode 100644 index 85d476ab0ca..00000000000 --- a/implementation-contributed/javascriptcore/stress/jsc-read.js +++ /dev/null @@ -1,38 +0,0 @@ -(function test() { - // Read this test file using jsc shell's builtins, and check that its content is as expected. - const in_file = 'jsc-read.js'; - - const check = content_read => { - let testContent = test.toString(); - let lineEnding = testContent.match(/\r?\n/)[0]; - let expect = `(${testContent})();${lineEnding}`; - if (content_read !== expect) - throw Error('Expected to read this file as-is, instead read:\n==========\n' + content_read + '\n=========='); - }; - - const test_arraybuffer = read_function => { - let file = read_function(in_file, 'binary'); - if (typeof file.buffer !== 'object' || file.byteLength === undefined || file.length === undefined || file.BYTES_PER_ELEMENT !== 1 || file.byteOffset !== 0) - throw Error('Expected a Uint8Array'); - let str = ''; - for (var i = 0; i != file.length; ++i) - str += String.fromCharCode(file[i]); // Assume ASCII. - check(str); - }; - - const test_string = read_function => { - let str = read_function(in_file); - if (typeof str !== 'string') - throw Error('Expected a string'); - check(str); - }; - - // jsc's original file reading function is `readFile`, whereas SpiderMonkey - // shell's file reading function is `read`. The latter is used by - // emscripten's shell.js (d8 calls it `readbuffer`, which shell.js - // polyfills). - test_arraybuffer(readFile); - test_arraybuffer(read); - test_string(readFile); - test_string(read); -})(); diff --git a/implementation-contributed/javascriptcore/stress/jsfunction-cannot-use-allocation-profile-with-builtin-functions-with-no-prototype.js b/implementation-contributed/javascriptcore/stress/jsfunction-cannot-use-allocation-profile-with-builtin-functions-with-no-prototype.js deleted file mode 100644 index 7c04bb6f1ac..00000000000 --- a/implementation-contributed/javascriptcore/stress/jsfunction-cannot-use-allocation-profile-with-builtin-functions-with-no-prototype.js +++ /dev/null @@ -1,9 +0,0 @@ -Object.defineProperty(Function.prototype, 'prototype', { - get: function () { - throw new Error('hello'); - } -}); - -new Promise(resolve => { - new resolve(); -}); diff --git a/implementation-contributed/javascriptcore/stress/json-parse-big-object.js b/implementation-contributed/javascriptcore/stress/json-parse-big-object.js deleted file mode 100644 index d70b3eceae5..00000000000 --- a/implementation-contributed/javascriptcore/stress/json-parse-big-object.js +++ /dev/null @@ -1,15 +0,0 @@ - -var obj = { - "foo1": { "foo2": { "foo3": { "foo4": { "foo5": { "foo6": { "foo7": [ - { "bar1": "a".repeat(670)}, - { "bar2": "a".repeat(15771)}, - ] - }}}}}}}; - -function doTest(x) { - for (let i=1; i<10000; i++) { - var s = JSON.stringify(x); - } -} - -doTest(obj); diff --git a/implementation-contributed/javascriptcore/stress/json-stringified-overflow-2.js b/implementation-contributed/javascriptcore/stress/json-stringified-overflow-2.js deleted file mode 100644 index 2517e7ff91d..00000000000 --- a/implementation-contributed/javascriptcore/stress/json-stringified-overflow-2.js +++ /dev/null @@ -1,10 +0,0 @@ -//@ if $memoryLimited then skip else runDefault end - -try { - const s = "a".padStart(0x80000000 - 1); - JSON.stringify(s); -} catch(e) { - if (e != "Error: Out of memory") - throw e; -} - diff --git a/implementation-contributed/javascriptcore/stress/json-stringified-overflow.js b/implementation-contributed/javascriptcore/stress/json-stringified-overflow.js deleted file mode 100644 index 841022e98bf..00000000000 --- a/implementation-contributed/javascriptcore/stress/json-stringified-overflow.js +++ /dev/null @@ -1,9 +0,0 @@ -//@ if $memoryLimited then skip else runDefault end - -try { - const s = "123".padStart(1073741823); - JSON.stringify(s); -} catch(e) { - if (e != "Error: Out of memory") - throw e; -} diff --git a/implementation-contributed/javascriptcore/stress/json-stringify-no-arguments.js b/implementation-contributed/javascriptcore/stress/json-stringify-no-arguments.js deleted file mode 100644 index 905ac253905..00000000000 --- a/implementation-contributed/javascriptcore/stress/json-stringify-no-arguments.js +++ /dev/null @@ -1,7 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -shouldBe(JSON.stringify(), undefined); -shouldBe(JSON.stringify(undefined), undefined); diff --git a/implementation-contributed/javascriptcore/stress/json-stringify-string-builder-overflow.js b/implementation-contributed/javascriptcore/stress/json-stringify-string-builder-overflow.js deleted file mode 100644 index 240c4f3c230..00000000000 --- a/implementation-contributed/javascriptcore/stress/json-stringify-string-builder-overflow.js +++ /dev/null @@ -1,29 +0,0 @@ -//@ slow! -//@ skip if $architecture != "arm64" and $architecture != "x86-64" - -var exception; -try { - var str = JSON.stringify({ - 'a1': { - 'a2': { - 'a3': { - 'a4': { - 'a5': { - 'a6': 'AAAAAAAAAA' - } - } - } - } - } - }, function (key, value) { - var val = { - 'A': true, - }; - return val; - }, 1); -} catch (e) { - exception = e; -} - -if (exception != "Error: Out of memory") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/json-surrogate-pair.js b/implementation-contributed/javascriptcore/stress/json-surrogate-pair.js deleted file mode 100644 index 8c309bd4590..00000000000 --- a/implementation-contributed/javascriptcore/stress/json-surrogate-pair.js +++ /dev/null @@ -1,14 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -shouldBe(JSON.stringify('𝌆'), `"𝌆"`); -shouldBe(JSON.stringify('\uD834\uDF06'), `"𝌆"`); -shouldBe(JSON.stringify('\uD834'), `"\\ud834"`); -shouldBe(JSON.stringify('\uDF06'), `"\\udf06"`); -shouldBe(JSON.stringify('\uDF06\uD834'), `"\\udf06\\ud834"`); -shouldBe(JSON.stringify('\uDEAD'), `"\\udead"`); -shouldBe(JSON.stringify('\uD834\uD834\uDF06'), `"\\ud834𝌆"`); -shouldBe(JSON.stringify('\uD834a'), `"\\ud834a"`); -shouldBe(JSON.stringify('\uD834\u0400'), `"\\ud834Ѐ"`); diff --git a/implementation-contributed/javascriptcore/stress/known-cell-type-check-should-allow-empty-value-to-flow-through.js b/implementation-contributed/javascriptcore/stress/known-cell-type-check-should-allow-empty-value-to-flow-through.js deleted file mode 100644 index 067f85f6081..00000000000 --- a/implementation-contributed/javascriptcore/stress/known-cell-type-check-should-allow-empty-value-to-flow-through.js +++ /dev/null @@ -1,25 +0,0 @@ -//@ runDefault("--jitPolicyScale=0", "--useConcurrentJIT=0") - -class C extends class {} { - constructor(beforeSuper) { - let f = () => { - for (let j=0; j<10; j++) { - try { - this.x - } catch (e) { - } - } - }; - if (beforeSuper) { - f(); - super(); - } else { - super(); - f(); - } - } -}; -for (let i = 0; i < 10000; i++) { - new C(false); - new C(true); -} diff --git a/implementation-contributed/javascriptcore/stress/known-cell-use-needs-type-check-assertion.js b/implementation-contributed/javascriptcore/stress/known-cell-use-needs-type-check-assertion.js deleted file mode 100644 index 652cf896667..00000000000 --- a/implementation-contributed/javascriptcore/stress/known-cell-use-needs-type-check-assertion.js +++ /dev/null @@ -1,14 +0,0 @@ -//@ runDefault("--useTypeProfiler=1") - -function foo(z) { - bar(z); -} -function bar(o) { - o.x = 0; -} -let p = 0; -let k = {}; -for (var i = 0; i < 100000; ++i) { - bar(p); - foo(k); -} diff --git a/implementation-contributed/javascriptcore/stress/large-unshift-splice.js b/implementation-contributed/javascriptcore/stress/large-unshift-splice.js deleted file mode 100644 index 26d76a05144..00000000000 --- a/implementation-contributed/javascriptcore/stress/large-unshift-splice.js +++ /dev/null @@ -1,18 +0,0 @@ -//@ if $memoryLimited then skip else runDefault end - -function make_contig_arr(sz) -{ - let a = []; - while (a.length < sz / 8) - a.push(3.14); - a.length *= 8; - return a; -} - -try { - let ARRAY_LENGTH = 0x10000000; - let a = make_contig_arr(ARRAY_LENGTH); - let b = make_contig_arr(0xff00); - b.unshift(a.length-0x10000, 0); - Array.prototype.splice.apply(a, b); -} catch (e) {} diff --git a/implementation-contributed/javascriptcore/stress/left-shift-to-primitive-precedence.js b/implementation-contributed/javascriptcore/stress/left-shift-to-primitive-precedence.js deleted file mode 100644 index 56d266fc391..00000000000 --- a/implementation-contributed/javascriptcore/stress/left-shift-to-primitive-precedence.js +++ /dev/null @@ -1,29 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -let o = { - [Symbol.toPrimitive]: function() { - throw new Error("Bad"); - } -}; - -try{ - o << Symbol("2"); - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e.message, "Bad", "Expected to throw Error('Bad'), but got: " + e); -} - -try{ - Symbol("2") << o; - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e instanceof TypeError, true, "Expected to throw TypeError, but got: " + e) -} - diff --git a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-ftl.js b/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-ftl.js deleted file mode 100644 index b47b72cb60d..00000000000 --- a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-ftl.js +++ /dev/null @@ -1,48 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -function foo() { - bar = 4; -} -function get() { - return bar; -} -for (var i = 0; i < 1e6; ++i) - foo(); -for (var i = 0; i < 1e6; ++i) - shouldBe(get(), 4); - -shouldBe(bar, 4); -$.evalScript('let bar = 3;'); -shouldBe(bar, 3); -shouldBe(get(), 3); - -for (var i = 0; i < 1e6; ++i) - shouldBe(get(), 3); - -foo(); -shouldBe(globalThis.bar, 4); -shouldBe(bar, 4); -shouldBe(get(), 4); - -for (var i = 0; i < 1e6; ++i) - shouldBe(get(), 4); diff --git a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-tdz-ftl.js b/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-tdz-ftl.js deleted file mode 100644 index ab5b61f02e2..00000000000 --- a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-tdz-ftl.js +++ /dev/null @@ -1,53 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -function foo() { - bar = 4; -} -function get() { - return bar; -} -for (var i = 0; i < 1e6; ++i) - foo(); -for (var i = 0; i < 1e6; ++i) - shouldBe(get(), 4); - -shouldBe(bar, 4); -shouldThrow(() => { - $.evalScript('get(); let bar = 3;'); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - shouldBe(bar, 3); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - shouldBe(get(), 3); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - $.evalScript('bar;'); -}, `ReferenceError: Cannot access uninitialized variable.`); - -for (var i = 0; i < 1e3; ++i) { - shouldThrow(() => { - shouldBe(get(), 3); - }, `ReferenceError: Cannot access uninitialized variable.`); -} - diff --git a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-tdz.js b/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-tdz.js deleted file mode 100644 index 3074a02c1a4..00000000000 --- a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property-tdz.js +++ /dev/null @@ -1,44 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -function foo() { - bar = 4; -} -function get() { - return bar; -} -foo(); -shouldBe(get(), 4); - -shouldBe(bar, 4); -shouldThrow(() => { - $.evalScript('get(); let bar = 3;'); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - shouldBe(bar, 3); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - shouldBe(get(), 3); -}, `ReferenceError: Cannot access uninitialized variable.`); -shouldThrow(() => { - $.evalScript('bar;'); -}, `ReferenceError: Cannot access uninitialized variable.`); diff --git a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property.js b/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property.js deleted file mode 100644 index 0ccfd587f6a..00000000000 --- a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadow-existing-global-property.js +++ /dev/null @@ -1,31 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -function foo() { - bar = 4; -} -foo(); -shouldBe(bar, 4); -$.evalScript('let bar = 3;'); -shouldBe(bar, 3); -foo(); -shouldBe(bar, 4); diff --git a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadowing-global-properties-and-eval-injection.js b/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadowing-global-properties-and-eval-injection.js deleted file mode 100644 index b2bccb8f158..00000000000 --- a/implementation-contributed/javascriptcore/stress/let-lexical-binding-shadowing-global-properties-and-eval-injection.js +++ /dev/null @@ -1,36 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error(`bad value: ${String(actual)}`); -} -noInline(shouldBe); - -bar = 0; -function foo(code) { - eval(code); - return (function () { - return bar; - }()); -} -shouldBe(foo(`42`), 0); - -$.evalScript(`let bar = 42`); -shouldBe(foo(`42`), 42); - -shouldBe(foo(`var bar = 1`), 1); -shouldBe(foo(`42`), 42); diff --git a/implementation-contributed/javascriptcore/stress/materialize-regexp-cyclic-regexp.js b/implementation-contributed/javascriptcore/stress/materialize-regexp-cyclic-regexp.js deleted file mode 100644 index 274de075e95..00000000000 --- a/implementation-contributed/javascriptcore/stress/materialize-regexp-cyclic-regexp.js +++ /dev/null @@ -1,48 +0,0 @@ -//@ skip if $architecture != "arm64" and $architecture != "x86-64" - -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(num) -{ - var regexp = /hello world/; - var world = /World/; - regexp.lastIndex = world; - world.lastIndex = regexp; - if (num === 0) - return regexp; - if (num === 1) - return regexp.lastIndex; - return regexp.lastIndex.lastIndex; -} -noInline(test); - -for (var i = 0; i < 1e6; ++i) { - var num = i % 3; - switch (num) { - case 0: - var regexp = test(num); - shouldBe(regexp instanceof RegExp, true); - shouldBe(regexp.toString(), "/hello world/"); - shouldBe(regexp.lastIndex instanceof RegExp, true); - shouldBe(regexp.lastIndex.toString(), "/World/"); - break; - case 1: - var regexp = test(num); - shouldBe(regexp instanceof RegExp, true); - shouldBe(regexp.toString(), "/World/"); - shouldBe(regexp.lastIndex instanceof RegExp, true); - shouldBe(regexp.lastIndex.toString(), "/hello world/"); - break; - case 2: - var regexp = test(num); - shouldBe(regexp instanceof RegExp, true); - shouldBe(regexp.toString(), "/hello world/"); - shouldBe(regexp.lastIndex instanceof RegExp, true); - shouldBe(regexp.lastIndex.toString(), "/World/"); - break; - } -} diff --git a/implementation-contributed/javascriptcore/stress/materialize-regexp-cyclic.js b/implementation-contributed/javascriptcore/stress/materialize-regexp-cyclic.js deleted file mode 100644 index 1787639a117..00000000000 --- a/implementation-contributed/javascriptcore/stress/materialize-regexp-cyclic.js +++ /dev/null @@ -1,41 +0,0 @@ -//@ slow! - -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(num) -{ - var regexp = /hello world/; - regexp.lastIndex = { ok: regexp, value: 42 }; - if (num === 0) - return regexp; - if (num === 1) - return regexp.lastIndex; - return regexp.lastIndex.value; -} -noInline(test); - -for (var i = 0; i < 1e6; ++i) { - var num = i % 3; - switch (num) { - case 0: - var regexp = test(num); - shouldBe(regexp instanceof RegExp, true); - shouldBe(typeof regexp.lastIndex, "object"); - shouldBe(regexp.lastIndex.ok, regexp); - break; - case 1: - var object = test(num); - shouldBe(object.value, 42); - shouldBe(object.ok instanceof RegExp, true); - shouldBe(object.ok.lastIndex, object); - break; - case 2: - var value = test(num); - shouldBe(value, 42); - break; - } -} diff --git a/implementation-contributed/javascriptcore/stress/materialized-regexp-has-correct-last-index-set-by-match.js b/implementation-contributed/javascriptcore/stress/materialized-regexp-has-correct-last-index-set-by-match.js deleted file mode 100644 index 20b95c520b5..00000000000 --- a/implementation-contributed/javascriptcore/stress/materialized-regexp-has-correct-last-index-set-by-match.js +++ /dev/null @@ -1,30 +0,0 @@ -//@ skip if $architecture != "arm64" and $architecture != "x86-64" - -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(flag, string) -{ - var regexp = /hello/g; - regexp.lastIndex = "Cocoa"; - var result = string.match(regexp); - if (flag) - return [result, regexp]; - return regexp.lastIndex; -} -noInline(test); - -for (var i = 0; i < 1e6; ++i) { - if (i & 0x1) { - var [result, regexp] = test(true, "hellohello"); - shouldBe(regexp instanceof RegExp, true); - shouldBe(regexp.lastIndex, 0); - shouldBe(result.length, 2); - shouldBe(result[0], "hello"); - shouldBe(result[1], "hello"); - } else - shouldBe(test(false, "hellohello"), 0); -} diff --git a/implementation-contributed/javascriptcore/stress/maximum-inline-capacity.js b/implementation-contributed/javascriptcore/stress/maximum-inline-capacity.js deleted file mode 100644 index 9b2a9d2fe48..00000000000 --- a/implementation-contributed/javascriptcore/stress/maximum-inline-capacity.js +++ /dev/null @@ -1,3020 +0,0 @@ -// test maximum inline capacity inferred for narrow instructions - -function test1() { - ({ - property1: 1, - property2: 2, - property3: 3, - property4: 4, - property5: 5, - property6: 6, - property7: 7, - property8: 8, - property9: 9, - property10: 10, - property11: 11, - property12: 12, - property13: 13, - property14: 14, - property15: 15, - property16: 16, - property17: 17, - property18: 18, - property19: 19, - property20: 20, - property21: 21, - property22: 22, - property23: 23, - property24: 24, - property25: 25, - property26: 26, - property27: 27, - property28: 28, - property29: 29, - property30: 30, - property31: 31, - property32: 32, - property33: 33, - property34: 34, - property35: 35, - property36: 36, - property37: 37, - property38: 38, - property39: 39, - property40: 40, - property41: 41, - property42: 42, - property43: 43, - property44: 44, - property45: 45, - property46: 46, - property47: 47, - property48: 48, - property49: 49, - property50: 50, - property51: 51, - property52: 52, - property53: 53, - property54: 54, - property55: 55, - property56: 56, - property57: 57, - property58: 58, - property59: 59, - property60: 60, - property61: 61, - property62: 62, - property63: 63, - property64: 64, - property65: 65, - property66: 66, - property67: 67, - property68: 68, - property69: 69, - property70: 70, - property71: 71, - property72: 72, - property73: 73, - property74: 74, - property75: 75, - property76: 76, - property77: 77, - property78: 78, - property79: 79, - property80: 80, - property81: 81, - property82: 82, - property83: 83, - property84: 84, - property85: 85, - property86: 86, - property87: 87, - property88: 88, - property89: 89, - property90: 90, - property91: 91, - property92: 92, - property93: 93, - property94: 94, - property95: 95, - property96: 96, - property97: 97, - property98: 98, - property99: 99, - property100: 100, - property101: 101, - property102: 102, - property103: 103, - property104: 104, - property105: 105, - property106: 106, - property107: 107, - property108: 108, - property109: 109, - property110: 110, - property111: 111, - property112: 112, - property113: 113, - property114: 114, - property115: 115, - property116: 116, - property117: 117, - property118: 118, - property119: 119, - property120: 120, - property121: 121, - property122: 122, - property123: 123, - property124: 124, - property125: 125, - property126: 126, - property127: 127, - property128: 128, - property129: 129, - property130: 130, - property131: 131, - property132: 132, - property133: 133, - property134: 134, - property135: 135, - property136: 136, - property137: 137, - property138: 138, - property139: 139, - property140: 140, - property141: 141, - property142: 142, - property143: 143, - property144: 144, - property145: 145, - property146: 146, - property147: 147, - property148: 148, - property149: 149, - property150: 150, - property151: 151, - property152: 152, - property153: 153, - property154: 154, - property155: 155, - property156: 156, - property157: 157, - property158: 158, - property159: 159, - property160: 160, - property161: 161, - property162: 162, - property163: 163, - property164: 164, - property165: 165, - property166: 166, - property167: 167, - property168: 168, - property169: 169, - property170: 170, - property171: 171, - property172: 172, - property173: 173, - property174: 174, - property175: 175, - property176: 176, - property177: 177, - property178: 178, - property179: 179, - property180: 180, - property181: 181, - property182: 182, - property183: 183, - property184: 184, - property185: 185, - property186: 186, - property187: 187, - property188: 188, - property189: 189, - property190: 190, - property191: 191, - property192: 192, - property193: 193, - property194: 194, - property195: 195, - property196: 196, - property197: 197, - property198: 198, - property199: 199, - property200: 200, - property201: 201, - property202: 202, - property203: 203, - property204: 204, - property205: 205, - property206: 206, - property207: 207, - property208: 208, - property209: 209, - property210: 210, - property211: 211, - property212: 212, - property213: 213, - property214: 214, - property215: 215, - property216: 216, - property217: 217, - property218: 218, - property219: 219, - property220: 220, - property221: 221, - property222: 222, - property223: 223, - property224: 224, - property225: 225, - property226: 226, - property227: 227, - property228: 228, - property229: 229, - property230: 230, - property231: 231, - property232: 232, - property233: 233, - property234: 234, - property235: 235, - property236: 236, - property237: 237, - property238: 238, - property239: 239, - property240: 240, - property241: 241, - property242: 242, - property243: 243, - property244: 244, - property245: 245, - property246: 246, - property247: 247, - property248: 248, - property249: 249, - property250: 250, - property251: 251, - property252: 252, - property253: 253, - property254: 254, - property255: 255, - property256: 256, - property257: 257, - property258: 258, - property259: 259, - property260: 260, - property261: 261, - property262: 262, - property263: 263, - property264: 264, - property265: 265, - property266: 266, - property267: 267, - property268: 268, - property269: 269, - property270: 270, - property271: 271, - property272: 272, - property273: 273, - property274: 274, - property275: 275, - property276: 276, - property277: 277, - property278: 278, - property279: 279, - property280: 280, - property281: 281, - property282: 282, - property283: 283, - property284: 284, - property285: 285, - property286: 286, - property287: 287, - property288: 288, - property289: 289, - property290: 290, - property291: 291, - property292: 292, - property293: 293, - property294: 294, - property295: 295, - property296: 296, - property297: 297, - property298: 298, - property299: 299, - property300: 300, - property301: 301, - property302: 302, - property303: 303, - property304: 304, - property305: 305, - property306: 306, - property307: 307, - property308: 308, - property309: 309, - property310: 310, - property311: 311, - property312: 312, - property313: 313, - property314: 314, - property315: 315, - property316: 316, - property317: 317, - property318: 318, - property319: 319, - property320: 320, - property321: 321, - property322: 322, - property323: 323, - property324: 324, - property325: 325, - property326: 326, - property327: 327, - property328: 328, - property329: 329, - property330: 330, - property331: 331, - property332: 332, - property333: 333, - property334: 334, - property335: 335, - property336: 336, - property337: 337, - property338: 338, - property339: 339, - property340: 340, - property341: 341, - property342: 342, - property343: 343, - property344: 344, - property345: 345, - property346: 346, - property347: 347, - property348: 348, - property349: 349, - property350: 350, - property351: 351, - property352: 352, - property353: 353, - property354: 354, - property355: 355, - property356: 356, - property357: 357, - property358: 358, - property359: 359, - property360: 360, - property361: 361, - property362: 362, - property363: 363, - property364: 364, - property365: 365, - property366: 366, - property367: 367, - property368: 368, - property369: 369, - property370: 370, - property371: 371, - property372: 372, - property373: 373, - property374: 374, - property375: 375, - property376: 376, - property377: 377, - property378: 378, - property379: 379, - property380: 380, - property381: 381, - property382: 382, - property383: 383, - property384: 384, - property385: 385, - property386: 386, - property387: 387, - property388: 388, - property389: 389, - property390: 390, - property391: 391, - property392: 392, - property393: 393, - property394: 394, - property395: 395, - property396: 396, - property397: 397, - property398: 398, - property399: 399, - property400: 400, - property401: 401, - property402: 402, - property403: 403, - property404: 404, - property405: 405, - property406: 406, - property407: 407, - property408: 408, - property409: 409, - property410: 410, - property411: 411, - property412: 412, - property413: 413, - property414: 414, - property415: 415, - property416: 416, - property417: 417, - property418: 418, - property419: 419, - property420: 420, - property421: 421, - property422: 422, - property423: 423, - property424: 424, - property425: 425, - property426: 426, - property427: 427, - property428: 428, - property429: 429, - property430: 430, - property431: 431, - property432: 432, - property433: 433, - property434: 434, - property435: 435, - property436: 436, - property437: 437, - property438: 438, - property439: 439, - property440: 440, - property441: 441, - property442: 442, - property443: 443, - property444: 444, - property445: 445, - property446: 446, - property447: 447, - property448: 448, - property449: 449, - property450: 450, - property451: 451, - property452: 452, - property453: 453, - property454: 454, - property455: 455, - property456: 456, - property457: 457, - property458: 458, - property459: 459, - property460: 460, - property461: 461, - property462: 462, - property463: 463, - property464: 464, - property465: 465, - property466: 466, - property467: 467, - property468: 468, - property469: 469, - property470: 470, - property471: 471, - property472: 472, - property473: 473, - property474: 474, - property475: 475, - property476: 476, - property477: 477, - property478: 478, - property479: 479, - property480: 480, - property481: 481, - property482: 482, - property483: 483, - property484: 484, - property485: 485, - property486: 486, - property487: 487, - property488: 488, - property489: 489, - property490: 490, - property491: 491, - property492: 492, - property493: 493, - property494: 494, - property495: 495, - property496: 496, - property497: 497, - property498: 498, - property499: 499, - property500: 500, - property501: 501, - property502: 502, - property503: 503, - property504: 504, - property505: 505, - property506: 506, - property507: 507, - property508: 508, - property509: 509, - property510: 510, - property511: 511, - property512: 512, - property513: 513, - property514: 514, - property515: 515, - property516: 516, - property517: 517, - property518: 518, - property519: 519, - property520: 520, - property521: 521, - property522: 522, - property523: 523, - property524: 524, - property525: 525, - property526: 526, - property527: 527, - property528: 528, - property529: 529, - property530: 530, - property531: 531, - property532: 532, - property533: 533, - property534: 534, - property535: 535, - property536: 536, - property537: 537, - property538: 538, - property539: 539, - property540: 540, - property541: 541, - property542: 542, - property543: 543, - property544: 544, - property545: 545, - property546: 546, - property547: 547, - property548: 548, - property549: 549, - property550: 550, - property551: 551, - property552: 552, - property553: 553, - property554: 554, - property555: 555, - property556: 556, - property557: 557, - property558: 558, - property559: 559, - property560: 560, - property561: 561, - property562: 562, - property563: 563, - property564: 564, - property565: 565, - property566: 566, - property567: 567, - property568: 568, - property569: 569, - property570: 570, - property571: 571, - property572: 572, - property573: 573, - property574: 574, - property575: 575, - property576: 576, - property577: 577, - property578: 578, - property579: 579, - property580: 580, - property581: 581, - property582: 582, - property583: 583, - property584: 584, - property585: 585, - property586: 586, - property587: 587, - property588: 588, - property589: 589, - property590: 590, - property591: 591, - property592: 592, - property593: 593, - property594: 594, - property595: 595, - property596: 596, - property597: 597, - property598: 598, - property599: 599, - property600: 600, - property601: 601, - property602: 602, - property603: 603, - property604: 604, - property605: 605, - property606: 606, - property607: 607, - property608: 608, - property609: 609, - property610: 610, - property611: 611, - property612: 612, - property613: 613, - property614: 614, - property615: 615, - property616: 616, - property617: 617, - property618: 618, - property619: 619, - property620: 620, - property621: 621, - property622: 622, - property623: 623, - property624: 624, - property625: 625, - property626: 626, - property627: 627, - property628: 628, - property629: 629, - property630: 630, - property631: 631, - property632: 632, - property633: 633, - property634: 634, - property635: 635, - property636: 636, - property637: 637, - property638: 638, - property639: 639, - property640: 640, - property641: 641, - property642: 642, - property643: 643, - property644: 644, - property645: 645, - property646: 646, - property647: 647, - property648: 648, - property649: 649, - property650: 650, - property651: 651, - property652: 652, - property653: 653, - property654: 654, - property655: 655, - property656: 656, - property657: 657, - property658: 658, - property659: 659, - property660: 660, - property661: 661, - property662: 662, - property663: 663, - property664: 664, - property665: 665, - property666: 666, - property667: 667, - property668: 668, - property669: 669, - property670: 670, - property671: 671, - property672: 672, - property673: 673, - property674: 674, - property675: 675, - property676: 676, - property677: 677, - property678: 678, - property679: 679, - property680: 680, - property681: 681, - property682: 682, - property683: 683, - property684: 684, - property685: 685, - property686: 686, - property687: 687, - property688: 688, - property689: 689, - property690: 690, - property691: 691, - property692: 692, - property693: 693, - property694: 694, - property695: 695, - property696: 696, - property697: 697, - property698: 698, - property699: 699, - property700: 700, - property701: 701, - property702: 702, - property703: 703, - property704: 704, - property705: 705, - property706: 706, - property707: 707, - property708: 708, - property709: 709, - property710: 710, - property711: 711, - property712: 712, - property713: 713, - property714: 714, - property715: 715, - property716: 716, - property717: 717, - property718: 718, - property719: 719, - property720: 720, - property721: 721, - property722: 722, - property723: 723, - property724: 724, - property725: 725, - property726: 726, - property727: 727, - property728: 728, - property729: 729, - property730: 730, - property731: 731, - property732: 732, - property733: 733, - property734: 734, - property735: 735, - property736: 736, - property737: 737, - property738: 738, - property739: 739, - property740: 740, - property741: 741, - property742: 742, - property743: 743, - property744: 744, - property745: 745, - property746: 746, - property747: 747, - property748: 748, - property749: 749, - property750: 750, - property751: 751, - property752: 752, - property753: 753, - property754: 754, - property755: 755, - property756: 756, - property757: 757, - property758: 758, - property759: 759, - property760: 760, - property761: 761, - property762: 762, - property763: 763, - property764: 764, - property765: 765, - property766: 766, - property767: 767, - property768: 768, - property769: 769, - property770: 770, - property771: 771, - property772: 772, - property773: 773, - property774: 774, - property775: 775, - property776: 776, - property777: 777, - property778: 778, - property779: 779, - property780: 780, - property781: 781, - property782: 782, - property783: 783, - property784: 784, - property785: 785, - property786: 786, - property787: 787, - property788: 788, - property789: 789, - property790: 790, - property791: 791, - property792: 792, - property793: 793, - property794: 794, - property795: 795, - property796: 796, - property797: 797, - property798: 798, - property799: 799, - property800: 800, - property801: 801, - property802: 802, - property803: 803, - property804: 804, - property805: 805, - property806: 806, - property807: 807, - property808: 808, - property809: 809, - property810: 810, - property811: 811, - property812: 812, - property813: 813, - property814: 814, - property815: 815, - property816: 816, - property817: 817, - property818: 818, - property819: 819, - property820: 820, - property821: 821, - property822: 822, - property823: 823, - property824: 824, - property825: 825, - property826: 826, - property827: 827, - property828: 828, - property829: 829, - property830: 830, - property831: 831, - property832: 832, - property833: 833, - property834: 834, - property835: 835, - property836: 836, - property837: 837, - property838: 838, - property839: 839, - property840: 840, - property841: 841, - property842: 842, - property843: 843, - property844: 844, - property845: 845, - property846: 846, - property847: 847, - property848: 848, - property849: 849, - property850: 850, - property851: 851, - property852: 852, - property853: 853, - property854: 854, - property855: 855, - property856: 856, - property857: 857, - property858: 858, - property859: 859, - property860: 860, - property861: 861, - property862: 862, - property863: 863, - property864: 864, - property865: 865, - property866: 866, - property867: 867, - property868: 868, - property869: 869, - property870: 870, - property871: 871, - property872: 872, - property873: 873, - property874: 874, - property875: 875, - property876: 876, - property877: 877, - property878: 878, - property879: 879, - property880: 880, - property881: 881, - property882: 882, - property883: 883, - property884: 884, - property885: 885, - property886: 886, - property887: 887, - property888: 888, - property889: 889, - property890: 890, - property891: 891, - property892: 892, - property893: 893, - property894: 894, - property895: 895, - property896: 896, - property897: 897, - property898: 898, - property899: 899, - property900: 900, - property901: 901, - property902: 902, - property903: 903, - property904: 904, - property905: 905, - property906: 906, - property907: 907, - property908: 908, - property909: 909, - property910: 910, - property911: 911, - property912: 912, - property913: 913, - property914: 914, - property915: 915, - property916: 916, - property917: 917, - property918: 918, - property919: 919, - property920: 920, - property921: 921, - property922: 922, - property923: 923, - property924: 924, - property925: 925, - property926: 926, - property927: 927, - property928: 928, - property929: 929, - property930: 930, - property931: 931, - property932: 932, - property933: 933, - property934: 934, - property935: 935, - property936: 936, - property937: 937, - property938: 938, - property939: 939, - property940: 940, - property941: 941, - property942: 942, - property943: 943, - property944: 944, - property945: 945, - property946: 946, - property947: 947, - property948: 948, - property949: 949, - property950: 950, - property951: 951, - property952: 952, - property953: 953, - property954: 954, - property955: 955, - property956: 956, - property957: 957, - property958: 958, - property959: 959, - property960: 960, - property961: 961, - property962: 962, - property963: 963, - property964: 964, - property965: 965, - property966: 966, - property967: 967, - property968: 968, - property969: 969, - property970: 970, - property971: 971, - property972: 972, - property973: 973, - property974: 974, - property975: 975, - property976: 976, - property977: 977, - property978: 978, - property979: 979, - property980: 980, - property981: 981, - property982: 982, - property983: 983, - property984: 984, - property985: 985, - property986: 986, - property987: 987, - property988: 988, - property989: 989, - property990: 990, - property991: 991, - property992: 992, - property993: 993, - property994: 994, - property995: 995, - property996: 996, - property997: 997, - property998: 998, - property999: 999, - property1000: 1000, - }); -} - -function test2() { - var o = {}; - o.property1 = 1; - o.property2 = 2; - o.property3 = 3; - o.property4 = 4; - o.property5 = 5; - o.property6 = 6; - o.property7 = 7; - o.property8 = 8; - o.property9 = 9; - o.property10 = 10; - o.property11 = 11; - o.property12 = 12; - o.property13 = 13; - o.property14 = 14; - o.property15 = 15; - o.property16 = 16; - o.property17 = 17; - o.property18 = 18; - o.property19 = 19; - o.property20 = 20; - o.property21 = 21; - o.property22 = 22; - o.property23 = 23; - o.property24 = 24; - o.property25 = 25; - o.property26 = 26; - o.property27 = 27; - o.property28 = 28; - o.property29 = 29; - o.property30 = 30; - o.property31 = 31; - o.property32 = 32; - o.property33 = 33; - o.property34 = 34; - o.property35 = 35; - o.property36 = 36; - o.property37 = 37; - o.property38 = 38; - o.property39 = 39; - o.property40 = 40; - o.property41 = 41; - o.property42 = 42; - o.property43 = 43; - o.property44 = 44; - o.property45 = 45; - o.property46 = 46; - o.property47 = 47; - o.property48 = 48; - o.property49 = 49; - o.property50 = 50; - o.property51 = 51; - o.property52 = 52; - o.property53 = 53; - o.property54 = 54; - o.property55 = 55; - o.property56 = 56; - o.property57 = 57; - o.property58 = 58; - o.property59 = 59; - o.property60 = 60; - o.property61 = 61; - o.property62 = 62; - o.property63 = 63; - o.property64 = 64; - o.property65 = 65; - o.property66 = 66; - o.property67 = 67; - o.property68 = 68; - o.property69 = 69; - o.property70 = 70; - o.property71 = 71; - o.property72 = 72; - o.property73 = 73; - o.property74 = 74; - o.property75 = 75; - o.property76 = 76; - o.property77 = 77; - o.property78 = 78; - o.property79 = 79; - o.property80 = 80; - o.property81 = 81; - o.property82 = 82; - o.property83 = 83; - o.property84 = 84; - o.property85 = 85; - o.property86 = 86; - o.property87 = 87; - o.property88 = 88; - o.property89 = 89; - o.property90 = 90; - o.property91 = 91; - o.property92 = 92; - o.property93 = 93; - o.property94 = 94; - o.property95 = 95; - o.property96 = 96; - o.property97 = 97; - o.property98 = 98; - o.property99 = 99; - o.property100 = 100; - o.property101 = 101; - o.property102 = 102; - o.property103 = 103; - o.property104 = 104; - o.property105 = 105; - o.property106 = 106; - o.property107 = 107; - o.property108 = 108; - o.property109 = 109; - o.property110 = 110; - o.property111 = 111; - o.property112 = 112; - o.property113 = 113; - o.property114 = 114; - o.property115 = 115; - o.property116 = 116; - o.property117 = 117; - o.property118 = 118; - o.property119 = 119; - o.property120 = 120; - o.property121 = 121; - o.property122 = 122; - o.property123 = 123; - o.property124 = 124; - o.property125 = 125; - o.property126 = 126; - o.property127 = 127; - o.property128 = 128; - o.property129 = 129; - o.property130 = 130; - o.property131 = 131; - o.property132 = 132; - o.property133 = 133; - o.property134 = 134; - o.property135 = 135; - o.property136 = 136; - o.property137 = 137; - o.property138 = 138; - o.property139 = 139; - o.property140 = 140; - o.property141 = 141; - o.property142 = 142; - o.property143 = 143; - o.property144 = 144; - o.property145 = 145; - o.property146 = 146; - o.property147 = 147; - o.property148 = 148; - o.property149 = 149; - o.property150 = 150; - o.property151 = 151; - o.property152 = 152; - o.property153 = 153; - o.property154 = 154; - o.property155 = 155; - o.property156 = 156; - o.property157 = 157; - o.property158 = 158; - o.property159 = 159; - o.property160 = 160; - o.property161 = 161; - o.property162 = 162; - o.property163 = 163; - o.property164 = 164; - o.property165 = 165; - o.property166 = 166; - o.property167 = 167; - o.property168 = 168; - o.property169 = 169; - o.property170 = 170; - o.property171 = 171; - o.property172 = 172; - o.property173 = 173; - o.property174 = 174; - o.property175 = 175; - o.property176 = 176; - o.property177 = 177; - o.property178 = 178; - o.property179 = 179; - o.property180 = 180; - o.property181 = 181; - o.property182 = 182; - o.property183 = 183; - o.property184 = 184; - o.property185 = 185; - o.property186 = 186; - o.property187 = 187; - o.property188 = 188; - o.property189 = 189; - o.property190 = 190; - o.property191 = 191; - o.property192 = 192; - o.property193 = 193; - o.property194 = 194; - o.property195 = 195; - o.property196 = 196; - o.property197 = 197; - o.property198 = 198; - o.property199 = 199; - o.property200 = 200; - o.property201 = 201; - o.property202 = 202; - o.property203 = 203; - o.property204 = 204; - o.property205 = 205; - o.property206 = 206; - o.property207 = 207; - o.property208 = 208; - o.property209 = 209; - o.property210 = 210; - o.property211 = 211; - o.property212 = 212; - o.property213 = 213; - o.property214 = 214; - o.property215 = 215; - o.property216 = 216; - o.property217 = 217; - o.property218 = 218; - o.property219 = 219; - o.property220 = 220; - o.property221 = 221; - o.property222 = 222; - o.property223 = 223; - o.property224 = 224; - o.property225 = 225; - o.property226 = 226; - o.property227 = 227; - o.property228 = 228; - o.property229 = 229; - o.property230 = 230; - o.property231 = 231; - o.property232 = 232; - o.property233 = 233; - o.property234 = 234; - o.property235 = 235; - o.property236 = 236; - o.property237 = 237; - o.property238 = 238; - o.property239 = 239; - o.property240 = 240; - o.property241 = 241; - o.property242 = 242; - o.property243 = 243; - o.property244 = 244; - o.property245 = 245; - o.property246 = 246; - o.property247 = 247; - o.property248 = 248; - o.property249 = 249; - o.property250 = 250; - o.property251 = 251; - o.property252 = 252; - o.property253 = 253; - o.property254 = 254; - o.property255 = 255; - o.property256 = 256; - o.property257 = 257; - o.property258 = 258; - o.property259 = 259; - o.property260 = 260; - o.property261 = 261; - o.property262 = 262; - o.property263 = 263; - o.property264 = 264; - o.property265 = 265; - o.property266 = 266; - o.property267 = 267; - o.property268 = 268; - o.property269 = 269; - o.property270 = 270; - o.property271 = 271; - o.property272 = 272; - o.property273 = 273; - o.property274 = 274; - o.property275 = 275; - o.property276 = 276; - o.property277 = 277; - o.property278 = 278; - o.property279 = 279; - o.property280 = 280; - o.property281 = 281; - o.property282 = 282; - o.property283 = 283; - o.property284 = 284; - o.property285 = 285; - o.property286 = 286; - o.property287 = 287; - o.property288 = 288; - o.property289 = 289; - o.property290 = 290; - o.property291 = 291; - o.property292 = 292; - o.property293 = 293; - o.property294 = 294; - o.property295 = 295; - o.property296 = 296; - o.property297 = 297; - o.property298 = 298; - o.property299 = 299; - o.property300 = 300; - o.property301 = 301; - o.property302 = 302; - o.property303 = 303; - o.property304 = 304; - o.property305 = 305; - o.property306 = 306; - o.property307 = 307; - o.property308 = 308; - o.property309 = 309; - o.property310 = 310; - o.property311 = 311; - o.property312 = 312; - o.property313 = 313; - o.property314 = 314; - o.property315 = 315; - o.property316 = 316; - o.property317 = 317; - o.property318 = 318; - o.property319 = 319; - o.property320 = 320; - o.property321 = 321; - o.property322 = 322; - o.property323 = 323; - o.property324 = 324; - o.property325 = 325; - o.property326 = 326; - o.property327 = 327; - o.property328 = 328; - o.property329 = 329; - o.property330 = 330; - o.property331 = 331; - o.property332 = 332; - o.property333 = 333; - o.property334 = 334; - o.property335 = 335; - o.property336 = 336; - o.property337 = 337; - o.property338 = 338; - o.property339 = 339; - o.property340 = 340; - o.property341 = 341; - o.property342 = 342; - o.property343 = 343; - o.property344 = 344; - o.property345 = 345; - o.property346 = 346; - o.property347 = 347; - o.property348 = 348; - o.property349 = 349; - o.property350 = 350; - o.property351 = 351; - o.property352 = 352; - o.property353 = 353; - o.property354 = 354; - o.property355 = 355; - o.property356 = 356; - o.property357 = 357; - o.property358 = 358; - o.property359 = 359; - o.property360 = 360; - o.property361 = 361; - o.property362 = 362; - o.property363 = 363; - o.property364 = 364; - o.property365 = 365; - o.property366 = 366; - o.property367 = 367; - o.property368 = 368; - o.property369 = 369; - o.property370 = 370; - o.property371 = 371; - o.property372 = 372; - o.property373 = 373; - o.property374 = 374; - o.property375 = 375; - o.property376 = 376; - o.property377 = 377; - o.property378 = 378; - o.property379 = 379; - o.property380 = 380; - o.property381 = 381; - o.property382 = 382; - o.property383 = 383; - o.property384 = 384; - o.property385 = 385; - o.property386 = 386; - o.property387 = 387; - o.property388 = 388; - o.property389 = 389; - o.property390 = 390; - o.property391 = 391; - o.property392 = 392; - o.property393 = 393; - o.property394 = 394; - o.property395 = 395; - o.property396 = 396; - o.property397 = 397; - o.property398 = 398; - o.property399 = 399; - o.property400 = 400; - o.property401 = 401; - o.property402 = 402; - o.property403 = 403; - o.property404 = 404; - o.property405 = 405; - o.property406 = 406; - o.property407 = 407; - o.property408 = 408; - o.property409 = 409; - o.property410 = 410; - o.property411 = 411; - o.property412 = 412; - o.property413 = 413; - o.property414 = 414; - o.property415 = 415; - o.property416 = 416; - o.property417 = 417; - o.property418 = 418; - o.property419 = 419; - o.property420 = 420; - o.property421 = 421; - o.property422 = 422; - o.property423 = 423; - o.property424 = 424; - o.property425 = 425; - o.property426 = 426; - o.property427 = 427; - o.property428 = 428; - o.property429 = 429; - o.property430 = 430; - o.property431 = 431; - o.property432 = 432; - o.property433 = 433; - o.property434 = 434; - o.property435 = 435; - o.property436 = 436; - o.property437 = 437; - o.property438 = 438; - o.property439 = 439; - o.property440 = 440; - o.property441 = 441; - o.property442 = 442; - o.property443 = 443; - o.property444 = 444; - o.property445 = 445; - o.property446 = 446; - o.property447 = 447; - o.property448 = 448; - o.property449 = 449; - o.property450 = 450; - o.property451 = 451; - o.property452 = 452; - o.property453 = 453; - o.property454 = 454; - o.property455 = 455; - o.property456 = 456; - o.property457 = 457; - o.property458 = 458; - o.property459 = 459; - o.property460 = 460; - o.property461 = 461; - o.property462 = 462; - o.property463 = 463; - o.property464 = 464; - o.property465 = 465; - o.property466 = 466; - o.property467 = 467; - o.property468 = 468; - o.property469 = 469; - o.property470 = 470; - o.property471 = 471; - o.property472 = 472; - o.property473 = 473; - o.property474 = 474; - o.property475 = 475; - o.property476 = 476; - o.property477 = 477; - o.property478 = 478; - o.property479 = 479; - o.property480 = 480; - o.property481 = 481; - o.property482 = 482; - o.property483 = 483; - o.property484 = 484; - o.property485 = 485; - o.property486 = 486; - o.property487 = 487; - o.property488 = 488; - o.property489 = 489; - o.property490 = 490; - o.property491 = 491; - o.property492 = 492; - o.property493 = 493; - o.property494 = 494; - o.property495 = 495; - o.property496 = 496; - o.property497 = 497; - o.property498 = 498; - o.property499 = 499; - o.property500 = 500; - o.property501 = 501; - o.property502 = 502; - o.property503 = 503; - o.property504 = 504; - o.property505 = 505; - o.property506 = 506; - o.property507 = 507; - o.property508 = 508; - o.property509 = 509; - o.property510 = 510; - o.property511 = 511; - o.property512 = 512; - o.property513 = 513; - o.property514 = 514; - o.property515 = 515; - o.property516 = 516; - o.property517 = 517; - o.property518 = 518; - o.property519 = 519; - o.property520 = 520; - o.property521 = 521; - o.property522 = 522; - o.property523 = 523; - o.property524 = 524; - o.property525 = 525; - o.property526 = 526; - o.property527 = 527; - o.property528 = 528; - o.property529 = 529; - o.property530 = 530; - o.property531 = 531; - o.property532 = 532; - o.property533 = 533; - o.property534 = 534; - o.property535 = 535; - o.property536 = 536; - o.property537 = 537; - o.property538 = 538; - o.property539 = 539; - o.property540 = 540; - o.property541 = 541; - o.property542 = 542; - o.property543 = 543; - o.property544 = 544; - o.property545 = 545; - o.property546 = 546; - o.property547 = 547; - o.property548 = 548; - o.property549 = 549; - o.property550 = 550; - o.property551 = 551; - o.property552 = 552; - o.property553 = 553; - o.property554 = 554; - o.property555 = 555; - o.property556 = 556; - o.property557 = 557; - o.property558 = 558; - o.property559 = 559; - o.property560 = 560; - o.property561 = 561; - o.property562 = 562; - o.property563 = 563; - o.property564 = 564; - o.property565 = 565; - o.property566 = 566; - o.property567 = 567; - o.property568 = 568; - o.property569 = 569; - o.property570 = 570; - o.property571 = 571; - o.property572 = 572; - o.property573 = 573; - o.property574 = 574; - o.property575 = 575; - o.property576 = 576; - o.property577 = 577; - o.property578 = 578; - o.property579 = 579; - o.property580 = 580; - o.property581 = 581; - o.property582 = 582; - o.property583 = 583; - o.property584 = 584; - o.property585 = 585; - o.property586 = 586; - o.property587 = 587; - o.property588 = 588; - o.property589 = 589; - o.property590 = 590; - o.property591 = 591; - o.property592 = 592; - o.property593 = 593; - o.property594 = 594; - o.property595 = 595; - o.property596 = 596; - o.property597 = 597; - o.property598 = 598; - o.property599 = 599; - o.property600 = 600; - o.property601 = 601; - o.property602 = 602; - o.property603 = 603; - o.property604 = 604; - o.property605 = 605; - o.property606 = 606; - o.property607 = 607; - o.property608 = 608; - o.property609 = 609; - o.property610 = 610; - o.property611 = 611; - o.property612 = 612; - o.property613 = 613; - o.property614 = 614; - o.property615 = 615; - o.property616 = 616; - o.property617 = 617; - o.property618 = 618; - o.property619 = 619; - o.property620 = 620; - o.property621 = 621; - o.property622 = 622; - o.property623 = 623; - o.property624 = 624; - o.property625 = 625; - o.property626 = 626; - o.property627 = 627; - o.property628 = 628; - o.property629 = 629; - o.property630 = 630; - o.property631 = 631; - o.property632 = 632; - o.property633 = 633; - o.property634 = 634; - o.property635 = 635; - o.property636 = 636; - o.property637 = 637; - o.property638 = 638; - o.property639 = 639; - o.property640 = 640; - o.property641 = 641; - o.property642 = 642; - o.property643 = 643; - o.property644 = 644; - o.property645 = 645; - o.property646 = 646; - o.property647 = 647; - o.property648 = 648; - o.property649 = 649; - o.property650 = 650; - o.property651 = 651; - o.property652 = 652; - o.property653 = 653; - o.property654 = 654; - o.property655 = 655; - o.property656 = 656; - o.property657 = 657; - o.property658 = 658; - o.property659 = 659; - o.property660 = 660; - o.property661 = 661; - o.property662 = 662; - o.property663 = 663; - o.property664 = 664; - o.property665 = 665; - o.property666 = 666; - o.property667 = 667; - o.property668 = 668; - o.property669 = 669; - o.property670 = 670; - o.property671 = 671; - o.property672 = 672; - o.property673 = 673; - o.property674 = 674; - o.property675 = 675; - o.property676 = 676; - o.property677 = 677; - o.property678 = 678; - o.property679 = 679; - o.property680 = 680; - o.property681 = 681; - o.property682 = 682; - o.property683 = 683; - o.property684 = 684; - o.property685 = 685; - o.property686 = 686; - o.property687 = 687; - o.property688 = 688; - o.property689 = 689; - o.property690 = 690; - o.property691 = 691; - o.property692 = 692; - o.property693 = 693; - o.property694 = 694; - o.property695 = 695; - o.property696 = 696; - o.property697 = 697; - o.property698 = 698; - o.property699 = 699; - o.property700 = 700; - o.property701 = 701; - o.property702 = 702; - o.property703 = 703; - o.property704 = 704; - o.property705 = 705; - o.property706 = 706; - o.property707 = 707; - o.property708 = 708; - o.property709 = 709; - o.property710 = 710; - o.property711 = 711; - o.property712 = 712; - o.property713 = 713; - o.property714 = 714; - o.property715 = 715; - o.property716 = 716; - o.property717 = 717; - o.property718 = 718; - o.property719 = 719; - o.property720 = 720; - o.property721 = 721; - o.property722 = 722; - o.property723 = 723; - o.property724 = 724; - o.property725 = 725; - o.property726 = 726; - o.property727 = 727; - o.property728 = 728; - o.property729 = 729; - o.property730 = 730; - o.property731 = 731; - o.property732 = 732; - o.property733 = 733; - o.property734 = 734; - o.property735 = 735; - o.property736 = 736; - o.property737 = 737; - o.property738 = 738; - o.property739 = 739; - o.property740 = 740; - o.property741 = 741; - o.property742 = 742; - o.property743 = 743; - o.property744 = 744; - o.property745 = 745; - o.property746 = 746; - o.property747 = 747; - o.property748 = 748; - o.property749 = 749; - o.property750 = 750; - o.property751 = 751; - o.property752 = 752; - o.property753 = 753; - o.property754 = 754; - o.property755 = 755; - o.property756 = 756; - o.property757 = 757; - o.property758 = 758; - o.property759 = 759; - o.property760 = 760; - o.property761 = 761; - o.property762 = 762; - o.property763 = 763; - o.property764 = 764; - o.property765 = 765; - o.property766 = 766; - o.property767 = 767; - o.property768 = 768; - o.property769 = 769; - o.property770 = 770; - o.property771 = 771; - o.property772 = 772; - o.property773 = 773; - o.property774 = 774; - o.property775 = 775; - o.property776 = 776; - o.property777 = 777; - o.property778 = 778; - o.property779 = 779; - o.property780 = 780; - o.property781 = 781; - o.property782 = 782; - o.property783 = 783; - o.property784 = 784; - o.property785 = 785; - o.property786 = 786; - o.property787 = 787; - o.property788 = 788; - o.property789 = 789; - o.property790 = 790; - o.property791 = 791; - o.property792 = 792; - o.property793 = 793; - o.property794 = 794; - o.property795 = 795; - o.property796 = 796; - o.property797 = 797; - o.property798 = 798; - o.property799 = 799; - o.property800 = 800; - o.property801 = 801; - o.property802 = 802; - o.property803 = 803; - o.property804 = 804; - o.property805 = 805; - o.property806 = 806; - o.property807 = 807; - o.property808 = 808; - o.property809 = 809; - o.property810 = 810; - o.property811 = 811; - o.property812 = 812; - o.property813 = 813; - o.property814 = 814; - o.property815 = 815; - o.property816 = 816; - o.property817 = 817; - o.property818 = 818; - o.property819 = 819; - o.property820 = 820; - o.property821 = 821; - o.property822 = 822; - o.property823 = 823; - o.property824 = 824; - o.property825 = 825; - o.property826 = 826; - o.property827 = 827; - o.property828 = 828; - o.property829 = 829; - o.property830 = 830; - o.property831 = 831; - o.property832 = 832; - o.property833 = 833; - o.property834 = 834; - o.property835 = 835; - o.property836 = 836; - o.property837 = 837; - o.property838 = 838; - o.property839 = 839; - o.property840 = 840; - o.property841 = 841; - o.property842 = 842; - o.property843 = 843; - o.property844 = 844; - o.property845 = 845; - o.property846 = 846; - o.property847 = 847; - o.property848 = 848; - o.property849 = 849; - o.property850 = 850; - o.property851 = 851; - o.property852 = 852; - o.property853 = 853; - o.property854 = 854; - o.property855 = 855; - o.property856 = 856; - o.property857 = 857; - o.property858 = 858; - o.property859 = 859; - o.property860 = 860; - o.property861 = 861; - o.property862 = 862; - o.property863 = 863; - o.property864 = 864; - o.property865 = 865; - o.property866 = 866; - o.property867 = 867; - o.property868 = 868; - o.property869 = 869; - o.property870 = 870; - o.property871 = 871; - o.property872 = 872; - o.property873 = 873; - o.property874 = 874; - o.property875 = 875; - o.property876 = 876; - o.property877 = 877; - o.property878 = 878; - o.property879 = 879; - o.property880 = 880; - o.property881 = 881; - o.property882 = 882; - o.property883 = 883; - o.property884 = 884; - o.property885 = 885; - o.property886 = 886; - o.property887 = 887; - o.property888 = 888; - o.property889 = 889; - o.property890 = 890; - o.property891 = 891; - o.property892 = 892; - o.property893 = 893; - o.property894 = 894; - o.property895 = 895; - o.property896 = 896; - o.property897 = 897; - o.property898 = 898; - o.property899 = 899; - o.property900 = 900; - o.property901 = 901; - o.property902 = 902; - o.property903 = 903; - o.property904 = 904; - o.property905 = 905; - o.property906 = 906; - o.property907 = 907; - o.property908 = 908; - o.property909 = 909; - o.property910 = 910; - o.property911 = 911; - o.property912 = 912; - o.property913 = 913; - o.property914 = 914; - o.property915 = 915; - o.property916 = 916; - o.property917 = 917; - o.property918 = 918; - o.property919 = 919; - o.property920 = 920; - o.property921 = 921; - o.property922 = 922; - o.property923 = 923; - o.property924 = 924; - o.property925 = 925; - o.property926 = 926; - o.property927 = 927; - o.property928 = 928; - o.property929 = 929; - o.property930 = 930; - o.property931 = 931; - o.property932 = 932; - o.property933 = 933; - o.property934 = 934; - o.property935 = 935; - o.property936 = 936; - o.property937 = 937; - o.property938 = 938; - o.property939 = 939; - o.property940 = 940; - o.property941 = 941; - o.property942 = 942; - o.property943 = 943; - o.property944 = 944; - o.property945 = 945; - o.property946 = 946; - o.property947 = 947; - o.property948 = 948; - o.property949 = 949; - o.property950 = 950; - o.property951 = 951; - o.property952 = 952; - o.property953 = 953; - o.property954 = 954; - o.property955 = 955; - o.property956 = 956; - o.property957 = 957; - o.property958 = 958; - o.property959 = 959; - o.property960 = 960; - o.property961 = 961; - o.property962 = 962; - o.property963 = 963; - o.property964 = 964; - o.property965 = 965; - o.property966 = 966; - o.property967 = 967; - o.property968 = 968; - o.property969 = 969; - o.property970 = 970; - o.property971 = 971; - o.property972 = 972; - o.property973 = 973; - o.property974 = 974; - o.property975 = 975; - o.property976 = 976; - o.property977 = 977; - o.property978 = 978; - o.property979 = 979; - o.property980 = 980; - o.property981 = 981; - o.property982 = 982; - o.property983 = 983; - o.property984 = 984; - o.property985 = 985; - o.property986 = 986; - o.property987 = 987; - o.property988 = 988; - o.property989 = 989; - o.property990 = 990; - o.property991 = 991; - o.property992 = 992; - o.property993 = 993; - o.property994 = 994; - o.property995 = 995; - o.property996 = 996; - o.property997 = 997; - o.property998 = 998; - o.property999 = 999; - o.property1000 = 1000; -} - -function test3() { - function Foo() { - this.property1 = 1; - this.property2 = 2; - this.property3 = 3; - this.property4 = 4; - this.property5 = 5; - this.property6 = 6; - this.property7 = 7; - this.property8 = 8; - this.property9 = 9; - this.property10 = 10; - this.property11 = 11; - this.property12 = 12; - this.property13 = 13; - this.property14 = 14; - this.property15 = 15; - this.property16 = 16; - this.property17 = 17; - this.property18 = 18; - this.property19 = 19; - this.property20 = 20; - this.property21 = 21; - this.property22 = 22; - this.property23 = 23; - this.property24 = 24; - this.property25 = 25; - this.property26 = 26; - this.property27 = 27; - this.property28 = 28; - this.property29 = 29; - this.property30 = 30; - this.property31 = 31; - this.property32 = 32; - this.property33 = 33; - this.property34 = 34; - this.property35 = 35; - this.property36 = 36; - this.property37 = 37; - this.property38 = 38; - this.property39 = 39; - this.property40 = 40; - this.property41 = 41; - this.property42 = 42; - this.property43 = 43; - this.property44 = 44; - this.property45 = 45; - this.property46 = 46; - this.property47 = 47; - this.property48 = 48; - this.property49 = 49; - this.property50 = 50; - this.property51 = 51; - this.property52 = 52; - this.property53 = 53; - this.property54 = 54; - this.property55 = 55; - this.property56 = 56; - this.property57 = 57; - this.property58 = 58; - this.property59 = 59; - this.property60 = 60; - this.property61 = 61; - this.property62 = 62; - this.property63 = 63; - this.property64 = 64; - this.property65 = 65; - this.property66 = 66; - this.property67 = 67; - this.property68 = 68; - this.property69 = 69; - this.property70 = 70; - this.property71 = 71; - this.property72 = 72; - this.property73 = 73; - this.property74 = 74; - this.property75 = 75; - this.property76 = 76; - this.property77 = 77; - this.property78 = 78; - this.property79 = 79; - this.property80 = 80; - this.property81 = 81; - this.property82 = 82; - this.property83 = 83; - this.property84 = 84; - this.property85 = 85; - this.property86 = 86; - this.property87 = 87; - this.property88 = 88; - this.property89 = 89; - this.property90 = 90; - this.property91 = 91; - this.property92 = 92; - this.property93 = 93; - this.property94 = 94; - this.property95 = 95; - this.property96 = 96; - this.property97 = 97; - this.property98 = 98; - this.property99 = 99; - this.property100 = 100; - this.property101 = 101; - this.property102 = 102; - this.property103 = 103; - this.property104 = 104; - this.property105 = 105; - this.property106 = 106; - this.property107 = 107; - this.property108 = 108; - this.property109 = 109; - this.property110 = 110; - this.property111 = 111; - this.property112 = 112; - this.property113 = 113; - this.property114 = 114; - this.property115 = 115; - this.property116 = 116; - this.property117 = 117; - this.property118 = 118; - this.property119 = 119; - this.property120 = 120; - this.property121 = 121; - this.property122 = 122; - this.property123 = 123; - this.property124 = 124; - this.property125 = 125; - this.property126 = 126; - this.property127 = 127; - this.property128 = 128; - this.property129 = 129; - this.property130 = 130; - this.property131 = 131; - this.property132 = 132; - this.property133 = 133; - this.property134 = 134; - this.property135 = 135; - this.property136 = 136; - this.property137 = 137; - this.property138 = 138; - this.property139 = 139; - this.property140 = 140; - this.property141 = 141; - this.property142 = 142; - this.property143 = 143; - this.property144 = 144; - this.property145 = 145; - this.property146 = 146; - this.property147 = 147; - this.property148 = 148; - this.property149 = 149; - this.property150 = 150; - this.property151 = 151; - this.property152 = 152; - this.property153 = 153; - this.property154 = 154; - this.property155 = 155; - this.property156 = 156; - this.property157 = 157; - this.property158 = 158; - this.property159 = 159; - this.property160 = 160; - this.property161 = 161; - this.property162 = 162; - this.property163 = 163; - this.property164 = 164; - this.property165 = 165; - this.property166 = 166; - this.property167 = 167; - this.property168 = 168; - this.property169 = 169; - this.property170 = 170; - this.property171 = 171; - this.property172 = 172; - this.property173 = 173; - this.property174 = 174; - this.property175 = 175; - this.property176 = 176; - this.property177 = 177; - this.property178 = 178; - this.property179 = 179; - this.property180 = 180; - this.property181 = 181; - this.property182 = 182; - this.property183 = 183; - this.property184 = 184; - this.property185 = 185; - this.property186 = 186; - this.property187 = 187; - this.property188 = 188; - this.property189 = 189; - this.property190 = 190; - this.property191 = 191; - this.property192 = 192; - this.property193 = 193; - this.property194 = 194; - this.property195 = 195; - this.property196 = 196; - this.property197 = 197; - this.property198 = 198; - this.property199 = 199; - this.property200 = 200; - this.property201 = 201; - this.property202 = 202; - this.property203 = 203; - this.property204 = 204; - this.property205 = 205; - this.property206 = 206; - this.property207 = 207; - this.property208 = 208; - this.property209 = 209; - this.property210 = 210; - this.property211 = 211; - this.property212 = 212; - this.property213 = 213; - this.property214 = 214; - this.property215 = 215; - this.property216 = 216; - this.property217 = 217; - this.property218 = 218; - this.property219 = 219; - this.property220 = 220; - this.property221 = 221; - this.property222 = 222; - this.property223 = 223; - this.property224 = 224; - this.property225 = 225; - this.property226 = 226; - this.property227 = 227; - this.property228 = 228; - this.property229 = 229; - this.property230 = 230; - this.property231 = 231; - this.property232 = 232; - this.property233 = 233; - this.property234 = 234; - this.property235 = 235; - this.property236 = 236; - this.property237 = 237; - this.property238 = 238; - this.property239 = 239; - this.property240 = 240; - this.property241 = 241; - this.property242 = 242; - this.property243 = 243; - this.property244 = 244; - this.property245 = 245; - this.property246 = 246; - this.property247 = 247; - this.property248 = 248; - this.property249 = 249; - this.property250 = 250; - this.property251 = 251; - this.property252 = 252; - this.property253 = 253; - this.property254 = 254; - this.property255 = 255; - this.property256 = 256; - this.property257 = 257; - this.property258 = 258; - this.property259 = 259; - this.property260 = 260; - this.property261 = 261; - this.property262 = 262; - this.property263 = 263; - this.property264 = 264; - this.property265 = 265; - this.property266 = 266; - this.property267 = 267; - this.property268 = 268; - this.property269 = 269; - this.property270 = 270; - this.property271 = 271; - this.property272 = 272; - this.property273 = 273; - this.property274 = 274; - this.property275 = 275; - this.property276 = 276; - this.property277 = 277; - this.property278 = 278; - this.property279 = 279; - this.property280 = 280; - this.property281 = 281; - this.property282 = 282; - this.property283 = 283; - this.property284 = 284; - this.property285 = 285; - this.property286 = 286; - this.property287 = 287; - this.property288 = 288; - this.property289 = 289; - this.property290 = 290; - this.property291 = 291; - this.property292 = 292; - this.property293 = 293; - this.property294 = 294; - this.property295 = 295; - this.property296 = 296; - this.property297 = 297; - this.property298 = 298; - this.property299 = 299; - this.property300 = 300; - this.property301 = 301; - this.property302 = 302; - this.property303 = 303; - this.property304 = 304; - this.property305 = 305; - this.property306 = 306; - this.property307 = 307; - this.property308 = 308; - this.property309 = 309; - this.property310 = 310; - this.property311 = 311; - this.property312 = 312; - this.property313 = 313; - this.property314 = 314; - this.property315 = 315; - this.property316 = 316; - this.property317 = 317; - this.property318 = 318; - this.property319 = 319; - this.property320 = 320; - this.property321 = 321; - this.property322 = 322; - this.property323 = 323; - this.property324 = 324; - this.property325 = 325; - this.property326 = 326; - this.property327 = 327; - this.property328 = 328; - this.property329 = 329; - this.property330 = 330; - this.property331 = 331; - this.property332 = 332; - this.property333 = 333; - this.property334 = 334; - this.property335 = 335; - this.property336 = 336; - this.property337 = 337; - this.property338 = 338; - this.property339 = 339; - this.property340 = 340; - this.property341 = 341; - this.property342 = 342; - this.property343 = 343; - this.property344 = 344; - this.property345 = 345; - this.property346 = 346; - this.property347 = 347; - this.property348 = 348; - this.property349 = 349; - this.property350 = 350; - this.property351 = 351; - this.property352 = 352; - this.property353 = 353; - this.property354 = 354; - this.property355 = 355; - this.property356 = 356; - this.property357 = 357; - this.property358 = 358; - this.property359 = 359; - this.property360 = 360; - this.property361 = 361; - this.property362 = 362; - this.property363 = 363; - this.property364 = 364; - this.property365 = 365; - this.property366 = 366; - this.property367 = 367; - this.property368 = 368; - this.property369 = 369; - this.property370 = 370; - this.property371 = 371; - this.property372 = 372; - this.property373 = 373; - this.property374 = 374; - this.property375 = 375; - this.property376 = 376; - this.property377 = 377; - this.property378 = 378; - this.property379 = 379; - this.property380 = 380; - this.property381 = 381; - this.property382 = 382; - this.property383 = 383; - this.property384 = 384; - this.property385 = 385; - this.property386 = 386; - this.property387 = 387; - this.property388 = 388; - this.property389 = 389; - this.property390 = 390; - this.property391 = 391; - this.property392 = 392; - this.property393 = 393; - this.property394 = 394; - this.property395 = 395; - this.property396 = 396; - this.property397 = 397; - this.property398 = 398; - this.property399 = 399; - this.property400 = 400; - this.property401 = 401; - this.property402 = 402; - this.property403 = 403; - this.property404 = 404; - this.property405 = 405; - this.property406 = 406; - this.property407 = 407; - this.property408 = 408; - this.property409 = 409; - this.property410 = 410; - this.property411 = 411; - this.property412 = 412; - this.property413 = 413; - this.property414 = 414; - this.property415 = 415; - this.property416 = 416; - this.property417 = 417; - this.property418 = 418; - this.property419 = 419; - this.property420 = 420; - this.property421 = 421; - this.property422 = 422; - this.property423 = 423; - this.property424 = 424; - this.property425 = 425; - this.property426 = 426; - this.property427 = 427; - this.property428 = 428; - this.property429 = 429; - this.property430 = 430; - this.property431 = 431; - this.property432 = 432; - this.property433 = 433; - this.property434 = 434; - this.property435 = 435; - this.property436 = 436; - this.property437 = 437; - this.property438 = 438; - this.property439 = 439; - this.property440 = 440; - this.property441 = 441; - this.property442 = 442; - this.property443 = 443; - this.property444 = 444; - this.property445 = 445; - this.property446 = 446; - this.property447 = 447; - this.property448 = 448; - this.property449 = 449; - this.property450 = 450; - this.property451 = 451; - this.property452 = 452; - this.property453 = 453; - this.property454 = 454; - this.property455 = 455; - this.property456 = 456; - this.property457 = 457; - this.property458 = 458; - this.property459 = 459; - this.property460 = 460; - this.property461 = 461; - this.property462 = 462; - this.property463 = 463; - this.property464 = 464; - this.property465 = 465; - this.property466 = 466; - this.property467 = 467; - this.property468 = 468; - this.property469 = 469; - this.property470 = 470; - this.property471 = 471; - this.property472 = 472; - this.property473 = 473; - this.property474 = 474; - this.property475 = 475; - this.property476 = 476; - this.property477 = 477; - this.property478 = 478; - this.property479 = 479; - this.property480 = 480; - this.property481 = 481; - this.property482 = 482; - this.property483 = 483; - this.property484 = 484; - this.property485 = 485; - this.property486 = 486; - this.property487 = 487; - this.property488 = 488; - this.property489 = 489; - this.property490 = 490; - this.property491 = 491; - this.property492 = 492; - this.property493 = 493; - this.property494 = 494; - this.property495 = 495; - this.property496 = 496; - this.property497 = 497; - this.property498 = 498; - this.property499 = 499; - this.property500 = 500; - this.property501 = 501; - this.property502 = 502; - this.property503 = 503; - this.property504 = 504; - this.property505 = 505; - this.property506 = 506; - this.property507 = 507; - this.property508 = 508; - this.property509 = 509; - this.property510 = 510; - this.property511 = 511; - this.property512 = 512; - this.property513 = 513; - this.property514 = 514; - this.property515 = 515; - this.property516 = 516; - this.property517 = 517; - this.property518 = 518; - this.property519 = 519; - this.property520 = 520; - this.property521 = 521; - this.property522 = 522; - this.property523 = 523; - this.property524 = 524; - this.property525 = 525; - this.property526 = 526; - this.property527 = 527; - this.property528 = 528; - this.property529 = 529; - this.property530 = 530; - this.property531 = 531; - this.property532 = 532; - this.property533 = 533; - this.property534 = 534; - this.property535 = 535; - this.property536 = 536; - this.property537 = 537; - this.property538 = 538; - this.property539 = 539; - this.property540 = 540; - this.property541 = 541; - this.property542 = 542; - this.property543 = 543; - this.property544 = 544; - this.property545 = 545; - this.property546 = 546; - this.property547 = 547; - this.property548 = 548; - this.property549 = 549; - this.property550 = 550; - this.property551 = 551; - this.property552 = 552; - this.property553 = 553; - this.property554 = 554; - this.property555 = 555; - this.property556 = 556; - this.property557 = 557; - this.property558 = 558; - this.property559 = 559; - this.property560 = 560; - this.property561 = 561; - this.property562 = 562; - this.property563 = 563; - this.property564 = 564; - this.property565 = 565; - this.property566 = 566; - this.property567 = 567; - this.property568 = 568; - this.property569 = 569; - this.property570 = 570; - this.property571 = 571; - this.property572 = 572; - this.property573 = 573; - this.property574 = 574; - this.property575 = 575; - this.property576 = 576; - this.property577 = 577; - this.property578 = 578; - this.property579 = 579; - this.property580 = 580; - this.property581 = 581; - this.property582 = 582; - this.property583 = 583; - this.property584 = 584; - this.property585 = 585; - this.property586 = 586; - this.property587 = 587; - this.property588 = 588; - this.property589 = 589; - this.property590 = 590; - this.property591 = 591; - this.property592 = 592; - this.property593 = 593; - this.property594 = 594; - this.property595 = 595; - this.property596 = 596; - this.property597 = 597; - this.property598 = 598; - this.property599 = 599; - this.property600 = 600; - this.property601 = 601; - this.property602 = 602; - this.property603 = 603; - this.property604 = 604; - this.property605 = 605; - this.property606 = 606; - this.property607 = 607; - this.property608 = 608; - this.property609 = 609; - this.property610 = 610; - this.property611 = 611; - this.property612 = 612; - this.property613 = 613; - this.property614 = 614; - this.property615 = 615; - this.property616 = 616; - this.property617 = 617; - this.property618 = 618; - this.property619 = 619; - this.property620 = 620; - this.property621 = 621; - this.property622 = 622; - this.property623 = 623; - this.property624 = 624; - this.property625 = 625; - this.property626 = 626; - this.property627 = 627; - this.property628 = 628; - this.property629 = 629; - this.property630 = 630; - this.property631 = 631; - this.property632 = 632; - this.property633 = 633; - this.property634 = 634; - this.property635 = 635; - this.property636 = 636; - this.property637 = 637; - this.property638 = 638; - this.property639 = 639; - this.property640 = 640; - this.property641 = 641; - this.property642 = 642; - this.property643 = 643; - this.property644 = 644; - this.property645 = 645; - this.property646 = 646; - this.property647 = 647; - this.property648 = 648; - this.property649 = 649; - this.property650 = 650; - this.property651 = 651; - this.property652 = 652; - this.property653 = 653; - this.property654 = 654; - this.property655 = 655; - this.property656 = 656; - this.property657 = 657; - this.property658 = 658; - this.property659 = 659; - this.property660 = 660; - this.property661 = 661; - this.property662 = 662; - this.property663 = 663; - this.property664 = 664; - this.property665 = 665; - this.property666 = 666; - this.property667 = 667; - this.property668 = 668; - this.property669 = 669; - this.property670 = 670; - this.property671 = 671; - this.property672 = 672; - this.property673 = 673; - this.property674 = 674; - this.property675 = 675; - this.property676 = 676; - this.property677 = 677; - this.property678 = 678; - this.property679 = 679; - this.property680 = 680; - this.property681 = 681; - this.property682 = 682; - this.property683 = 683; - this.property684 = 684; - this.property685 = 685; - this.property686 = 686; - this.property687 = 687; - this.property688 = 688; - this.property689 = 689; - this.property690 = 690; - this.property691 = 691; - this.property692 = 692; - this.property693 = 693; - this.property694 = 694; - this.property695 = 695; - this.property696 = 696; - this.property697 = 697; - this.property698 = 698; - this.property699 = 699; - this.property700 = 700; - this.property701 = 701; - this.property702 = 702; - this.property703 = 703; - this.property704 = 704; - this.property705 = 705; - this.property706 = 706; - this.property707 = 707; - this.property708 = 708; - this.property709 = 709; - this.property710 = 710; - this.property711 = 711; - this.property712 = 712; - this.property713 = 713; - this.property714 = 714; - this.property715 = 715; - this.property716 = 716; - this.property717 = 717; - this.property718 = 718; - this.property719 = 719; - this.property720 = 720; - this.property721 = 721; - this.property722 = 722; - this.property723 = 723; - this.property724 = 724; - this.property725 = 725; - this.property726 = 726; - this.property727 = 727; - this.property728 = 728; - this.property729 = 729; - this.property730 = 730; - this.property731 = 731; - this.property732 = 732; - this.property733 = 733; - this.property734 = 734; - this.property735 = 735; - this.property736 = 736; - this.property737 = 737; - this.property738 = 738; - this.property739 = 739; - this.property740 = 740; - this.property741 = 741; - this.property742 = 742; - this.property743 = 743; - this.property744 = 744; - this.property745 = 745; - this.property746 = 746; - this.property747 = 747; - this.property748 = 748; - this.property749 = 749; - this.property750 = 750; - this.property751 = 751; - this.property752 = 752; - this.property753 = 753; - this.property754 = 754; - this.property755 = 755; - this.property756 = 756; - this.property757 = 757; - this.property758 = 758; - this.property759 = 759; - this.property760 = 760; - this.property761 = 761; - this.property762 = 762; - this.property763 = 763; - this.property764 = 764; - this.property765 = 765; - this.property766 = 766; - this.property767 = 767; - this.property768 = 768; - this.property769 = 769; - this.property770 = 770; - this.property771 = 771; - this.property772 = 772; - this.property773 = 773; - this.property774 = 774; - this.property775 = 775; - this.property776 = 776; - this.property777 = 777; - this.property778 = 778; - this.property779 = 779; - this.property780 = 780; - this.property781 = 781; - this.property782 = 782; - this.property783 = 783; - this.property784 = 784; - this.property785 = 785; - this.property786 = 786; - this.property787 = 787; - this.property788 = 788; - this.property789 = 789; - this.property790 = 790; - this.property791 = 791; - this.property792 = 792; - this.property793 = 793; - this.property794 = 794; - this.property795 = 795; - this.property796 = 796; - this.property797 = 797; - this.property798 = 798; - this.property799 = 799; - this.property800 = 800; - this.property801 = 801; - this.property802 = 802; - this.property803 = 803; - this.property804 = 804; - this.property805 = 805; - this.property806 = 806; - this.property807 = 807; - this.property808 = 808; - this.property809 = 809; - this.property810 = 810; - this.property811 = 811; - this.property812 = 812; - this.property813 = 813; - this.property814 = 814; - this.property815 = 815; - this.property816 = 816; - this.property817 = 817; - this.property818 = 818; - this.property819 = 819; - this.property820 = 820; - this.property821 = 821; - this.property822 = 822; - this.property823 = 823; - this.property824 = 824; - this.property825 = 825; - this.property826 = 826; - this.property827 = 827; - this.property828 = 828; - this.property829 = 829; - this.property830 = 830; - this.property831 = 831; - this.property832 = 832; - this.property833 = 833; - this.property834 = 834; - this.property835 = 835; - this.property836 = 836; - this.property837 = 837; - this.property838 = 838; - this.property839 = 839; - this.property840 = 840; - this.property841 = 841; - this.property842 = 842; - this.property843 = 843; - this.property844 = 844; - this.property845 = 845; - this.property846 = 846; - this.property847 = 847; - this.property848 = 848; - this.property849 = 849; - this.property850 = 850; - this.property851 = 851; - this.property852 = 852; - this.property853 = 853; - this.property854 = 854; - this.property855 = 855; - this.property856 = 856; - this.property857 = 857; - this.property858 = 858; - this.property859 = 859; - this.property860 = 860; - this.property861 = 861; - this.property862 = 862; - this.property863 = 863; - this.property864 = 864; - this.property865 = 865; - this.property866 = 866; - this.property867 = 867; - this.property868 = 868; - this.property869 = 869; - this.property870 = 870; - this.property871 = 871; - this.property872 = 872; - this.property873 = 873; - this.property874 = 874; - this.property875 = 875; - this.property876 = 876; - this.property877 = 877; - this.property878 = 878; - this.property879 = 879; - this.property880 = 880; - this.property881 = 881; - this.property882 = 882; - this.property883 = 883; - this.property884 = 884; - this.property885 = 885; - this.property886 = 886; - this.property887 = 887; - this.property888 = 888; - this.property889 = 889; - this.property890 = 890; - this.property891 = 891; - this.property892 = 892; - this.property893 = 893; - this.property894 = 894; - this.property895 = 895; - this.property896 = 896; - this.property897 = 897; - this.property898 = 898; - this.property899 = 899; - this.property900 = 900; - this.property901 = 901; - this.property902 = 902; - this.property903 = 903; - this.property904 = 904; - this.property905 = 905; - this.property906 = 906; - this.property907 = 907; - this.property908 = 908; - this.property909 = 909; - this.property910 = 910; - this.property911 = 911; - this.property912 = 912; - this.property913 = 913; - this.property914 = 914; - this.property915 = 915; - this.property916 = 916; - this.property917 = 917; - this.property918 = 918; - this.property919 = 919; - this.property920 = 920; - this.property921 = 921; - this.property922 = 922; - this.property923 = 923; - this.property924 = 924; - this.property925 = 925; - this.property926 = 926; - this.property927 = 927; - this.property928 = 928; - this.property929 = 929; - this.property930 = 930; - this.property931 = 931; - this.property932 = 932; - this.property933 = 933; - this.property934 = 934; - this.property935 = 935; - this.property936 = 936; - this.property937 = 937; - this.property938 = 938; - this.property939 = 939; - this.property940 = 940; - this.property941 = 941; - this.property942 = 942; - this.property943 = 943; - this.property944 = 944; - this.property945 = 945; - this.property946 = 946; - this.property947 = 947; - this.property948 = 948; - this.property949 = 949; - this.property950 = 950; - this.property951 = 951; - this.property952 = 952; - this.property953 = 953; - this.property954 = 954; - this.property955 = 955; - this.property956 = 956; - this.property957 = 957; - this.property958 = 958; - this.property959 = 959; - this.property960 = 960; - this.property961 = 961; - this.property962 = 962; - this.property963 = 963; - this.property964 = 964; - this.property965 = 965; - this.property966 = 966; - this.property967 = 967; - this.property968 = 968; - this.property969 = 969; - this.property970 = 970; - this.property971 = 971; - this.property972 = 972; - this.property973 = 973; - this.property974 = 974; - this.property975 = 975; - this.property976 = 976; - this.property977 = 977; - this.property978 = 978; - this.property979 = 979; - this.property980 = 980; - this.property981 = 981; - this.property982 = 982; - this.property983 = 983; - this.property984 = 984; - this.property985 = 985; - this.property986 = 986; - this.property987 = 987; - this.property988 = 988; - this.property989 = 989; - this.property990 = 990; - this.property991 = 991; - this.property992 = 992; - this.property993 = 993; - this.property994 = 994; - this.property995 = 995; - this.property996 = 996; - this.property997 = 997; - this.property998 = 998; - this.property999 = 999; - this.property1000 = 1000; - } - new Foo(); -} - -test1(); -test2(); -test3(); diff --git a/implementation-contributed/javascriptcore/stress/merging-ic-variants-should-bail-if-structures-overlap.js b/implementation-contributed/javascriptcore/stress/merging-ic-variants-should-bail-if-structures-overlap.js deleted file mode 100644 index 43e5bc97117..00000000000 --- a/implementation-contributed/javascriptcore/stress/merging-ic-variants-should-bail-if-structures-overlap.js +++ /dev/null @@ -1,16 +0,0 @@ -//@ runDefault("--validateGraphAtEachPhase=1", "--useLLInt=0") - -let items = []; -for (let i = 0; i < 8; ++i) { - class C { - } - items.push(new C()); -} -function foo(x) { - x.z = 0; -} -for (let i = 0; i < 100000; ++i) { - for (let j = 0; j < items.length; ++j) { - foo(items[j]); - } -} diff --git a/implementation-contributed/javascriptcore/stress/modify-set-during-iteration.js b/implementation-contributed/javascriptcore/stress/modify-set-during-iteration.js deleted file mode 100644 index 0c4c0f91ba9..00000000000 --- a/implementation-contributed/javascriptcore/stress/modify-set-during-iteration.js +++ /dev/null @@ -1,92 +0,0 @@ -// Reviewed - -function testValue(value, expected) { - if (value !== expected) - throw new Error("bad value: expected:(" + expected + "),actual:(" + value +")."); -} - -var set = new Set([0]); -var counter = 0; -for (var elm of set) { - testValue(elm, counter); - set.add(elm + 1); - if (elm > 10000) { - set.clear(); - } - ++counter; -} -testValue(counter, 10002); - -var set = new Set([0, 1, 2, 3]); -var counter = 0; -for (var elm of set) { - testValue(elm, counter); - set.clear(); - ++counter; -} -testValue(counter, 1); - -var set = new Set([0, 1, 2, 3]); -var exp = [0, 2, 3]; -var counter = 0; -for (var elm of set) { - testValue(elm, exp[counter]); - set.delete(counter + 1); - ++counter; -} -testValue(counter, 3); - -var set = new Set([0, 1, 2, 3]); -var iter = set[Symbol.iterator](); -var iter2 = set[Symbol.iterator](); -testValue(iter2.next().value, 0); - -// Consume all output of iter. -for (var elm of iter); - -testValue(iter.next().done, true); -testValue(iter.next().value, undefined); - -set.clear(); -set.add(1).add(2).add(3); - -testValue(iter.next().done, true); -testValue(iter.next().value, undefined); -testValue(iter2.next().value, 1); -testValue(iter2.next().value, 2); -testValue(iter2.next().value, 3); - -var set = new Set(); -set.add(1); -set.delete(1); -set.forEach(function (i) { - throw new Error("unreeachable."); -}); - -var set = new Set(); -var iter = set[Symbol.iterator](); -set.add(1); -set.delete(1); -for (var elm of iter) { - throw new Error("unreeachable."); -} - -var set = new Set([0, 1, 2, 3, 4]); -var iter = set[Symbol.iterator](); -testValue(set.size, 5); -testValue(iter.next().value, 0); -testValue(iter.next().value, 1); -testValue(iter.next().value, 2); -testValue(iter.next().value, 3); -set.delete(0); -set.delete(1); -set.delete(2); -set.delete(3); -// It will cause MapData packing. -for (var i = 5; i < 1000; ++i) - set.add(i); -gc(); -for (var i = 4; i < 1000; ++i) - testValue(iter.next().value, i); -testValue(iter.next().value, undefined); - diff --git a/implementation-contributed/javascriptcore/stress/multi-put-by-offset-must-filter-value-before-filtering-base.js b/implementation-contributed/javascriptcore/stress/multi-put-by-offset-must-filter-value-before-filtering-base.js deleted file mode 100644 index b623e04fee2..00000000000 --- a/implementation-contributed/javascriptcore/stress/multi-put-by-offset-must-filter-value-before-filtering-base.js +++ /dev/null @@ -1,25 +0,0 @@ -//@ runDefault("--collectContinuously=1", "--useConcurrentJIT=0", "--useConcurrentGC=1") - -function foo(oo) { - oo.x = 4; - oo.y = 4; - oo.e = oo; - oo.e = 7; - oo.f = 8; -} -noInline(foo); - -function Foo() { - foo(this); -} - -for (var i = 0; i < 100000; i++) { - g(); -} - -function g(){ - foo({f:8}); - new Foo(); - new Foo(); - new Foo(); -} diff --git a/implementation-contributed/javascriptcore/stress/new-largeish-contiguous-array-with-size.js b/implementation-contributed/javascriptcore/stress/new-largeish-contiguous-array-with-size.js deleted file mode 100644 index e119442f092..00000000000 --- a/implementation-contributed/javascriptcore/stress/new-largeish-contiguous-array-with-size.js +++ /dev/null @@ -1,47 +0,0 @@ -// We only need one run of this with any GC or JIT strategy. This test is not particularly fast. -// Unfortunately, it needs to run for a while to test the thing it's testing. -//@ if $architecture =~ /arm|mips/ then skip else runWithRAMSize(10000000) end -//@ slow! - -function foo(x) { - return new Array(x); -} - -noInline(foo); - -function test(size) { - var result = foo(size); - if (result.length != size) - throw "Error: bad result: " + result; - var sawThings = false; - for (var s in result) - sawThings = true; - if (sawThings) - throw "Error: array is in bad state: " + result; - result[0] = "42.5"; - if (result[0] != "42.5") - throw "Error: array is in weird state: " + result; -} - -var result = gcHeapSize(); - -for (var i = 0; i < 1000; ++i) { - // The test was written when we found that large array allocations weren't being accounted for - // in that part of the GC's accounting that determined the GC trigger. Consequently, the GC - // would run too infrequently in this loop and we would use an absurd amount of memory when this - // loop exited. - test(50000); -} - -// Last time I tested, the heap should be 3725734 before and 125782 after. I don't want to enforce -// exactly that. If you regress the accounting code, the GC heap size at this point will be much -// more than that. -var result = gcHeapSize(); -if (result > 10000000) - throw "Error: heap too big before forced GC: " + result; - -// Do a final check after GC, just for sanity. -gc(); -result = gcHeapSize(); -if (result > 1000000) - throw "Error: heap too big after forced GC: " + result; diff --git a/implementation-contributed/javascriptcore/stress/new-regex-inline.js b/implementation-contributed/javascriptcore/stress/new-regex-inline.js deleted file mode 100644 index 53d80477b41..00000000000 --- a/implementation-contributed/javascriptcore/stress/new-regex-inline.js +++ /dev/null @@ -1,84 +0,0 @@ -//@ skip if $architecture == "x86" - -function assert(a) { - if (!a) - throw Error("bad assertion"); -} - -function testRegexpInline(functor) { - for (let i = 0; i < 100000; i++) { - functor(); - } - - gc(); - - // Create objects to force collected objects be reused - for (let i = 0; i < 10000000; i++) { - let a = {value: i}; - } - - // Checking if RegExp were collected - for (let i = 0; i < 100; i++) { - functor(); - } -} - -function toInlineGlobal() { - var re = /cc+/; - - assert(re.test("ccc")); - assert(!re.test("abc")); - return 0; -} - -function withRegexp() { - toInlineGlobal(); - var re = /(ab)+/; - assert(re.test("ab")); - assert(!re.test("ba")); - return 0; -} - -noInline(withRegexp); - -testRegexpInline(withRegexp); - -function inlineRegexpNotGlobal() { - let toInline = () => { - let re = /a+/; - - assert(re.test("aaaaaa")); - assert(!re.test("bc")); - } - - toInline(); -} - -noInline(inlineRegexpNotGlobal); - -testRegexpInline(inlineRegexpNotGlobal); - -function toInlineRecursive(depth) { - if (depth == 5) { - return; - } - - var re = /(ef)+/; - - assert(re.test("efef")); - assert(!re.test("abc")); - - toInlineRecursive(depth + 1); -} - -function regexpContainsRecursive() { - var re = /r+/; - toInlineRecursive(0); - - assert(re.test("r")); - assert(!re.test("ab")); -} -noInline(regexpContainsRecursive); - -testRegexpInline(regexpContainsRecursive); - diff --git a/implementation-contributed/javascriptcore/stress/object-allocation-sinking-phase-must-only-move-allocations-if-stack-trace-is-still-valid.js b/implementation-contributed/javascriptcore/stress/object-allocation-sinking-phase-must-only-move-allocations-if-stack-trace-is-still-valid.js deleted file mode 100644 index 32ffce34345..00000000000 --- a/implementation-contributed/javascriptcore/stress/object-allocation-sinking-phase-must-only-move-allocations-if-stack-trace-is-still-valid.js +++ /dev/null @@ -1,30 +0,0 @@ -//@ runDefault("--useConcurrentJIT=0", "--jitPolicyScale=0", "--collectContinuously=1") - -let thing = [] - -function bar(x) { - thing.push(x); -} - -function foo() { - let hello = function () { - let tmp = 1; - return function (num) { - if (tmp) { - if (num.length) { - } - } - }; - }(); - - bar(); - for (j = 0; j < 10000; j++) { - if (/\s/.test(' ')) { - hello(j); - } - } -} - -for (let i=0; i<100; i++) { - foo(); -} diff --git a/implementation-contributed/javascriptcore/stress/object-allocation-sinking-phase-needs-to-write-to-each-scope-offset.js b/implementation-contributed/javascriptcore/stress/object-allocation-sinking-phase-needs-to-write-to-each-scope-offset.js deleted file mode 100644 index d9eca32bf69..00000000000 --- a/implementation-contributed/javascriptcore/stress/object-allocation-sinking-phase-needs-to-write-to-each-scope-offset.js +++ /dev/null @@ -1,13 +0,0 @@ -//@ runDefault("--forceEagerCompilation=1", "--useConcurrentJIT=0") - -function foo(a, a) { - function x() { - eval(); - } -} -foo(); -foo(); -foo(); -foo(); -foo(); -foo(0); diff --git a/implementation-contributed/javascriptcore/stress/object-keys-cached-zero.js b/implementation-contributed/javascriptcore/stress/object-keys-cached-zero.js deleted file mode 100644 index f7cc96afacf..00000000000 --- a/implementation-contributed/javascriptcore/stress/object-keys-cached-zero.js +++ /dev/null @@ -1,21 +0,0 @@ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(object) -{ - return Object.keys(object); -} -noInline(test); - -var object = {}; -for (var i = 0; i < 1e6; ++i) { - var result = test(object); - shouldBe(result.length, 0); - shouldBe(result[0], undefined); - result[0] = i; - shouldBe(result.length, 1); - shouldBe(result[0], i); -} diff --git a/implementation-contributed/javascriptcore/stress/object-keys-changed-attribute.js b/implementation-contributed/javascriptcore/stress/object-keys-changed-attribute.js deleted file mode 100644 index c3f143ec27f..00000000000 --- a/implementation-contributed/javascriptcore/stress/object-keys-changed-attribute.js +++ /dev/null @@ -1,28 +0,0 @@ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(object) -{ - return Object.keys(object); -} -noInline(test); - -var object = { Cocoa: 42 }; -for (var i = 0; i < 1e6; ++i) { - var result = test(object); - shouldBe(result.length, 1); - shouldBe(result[0], 'Cocoa'); -} - -Reflect.defineProperty(object, 'Cocoa', { - enumerable: false -}); - -for (var i = 0; i < 1e6; ++i) { - var result = test(object); - shouldBe(result.length, 0); - shouldBe(result[0], undefined); -} diff --git a/implementation-contributed/javascriptcore/stress/object-keys-changed-index.js b/implementation-contributed/javascriptcore/stress/object-keys-changed-index.js deleted file mode 100644 index 423e09257b2..00000000000 --- a/implementation-contributed/javascriptcore/stress/object-keys-changed-index.js +++ /dev/null @@ -1,28 +0,0 @@ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(object) -{ - return Object.keys(object); -} -noInline(test); - -var object = {}; -for (var i = 0; i < 1e6; ++i) { - var result = test(object); - shouldBe(result.length, 0); - shouldBe(result[0], undefined); - result[0] = i; - shouldBe(result.length, 1); - shouldBe(result[0], i); -} - -object[0] = 42; -for (var i = 0; i < 1e6; ++i) { - var result = test(object); - shouldBe(result.length, 1); - shouldBe(result[0], '0'); -} diff --git a/implementation-contributed/javascriptcore/stress/object-keys-changed.js b/implementation-contributed/javascriptcore/stress/object-keys-changed.js deleted file mode 100644 index 1d3a3053fbe..00000000000 --- a/implementation-contributed/javascriptcore/stress/object-keys-changed.js +++ /dev/null @@ -1,28 +0,0 @@ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(object) -{ - return Object.keys(object); -} -noInline(test); - -var object = {}; -for (var i = 0; i < 1e6; ++i) { - var result = test(object); - shouldBe(result.length, 0); - shouldBe(result[0], undefined); - result[0] = i; - shouldBe(result.length, 1); - shouldBe(result[0], i); -} - -object.Cocoa = 42; -for (var i = 0; i < 1e6; ++i) { - var result = test(object); - shouldBe(result.length, 1); - shouldBe(result[0], 'Cocoa'); -} diff --git a/implementation-contributed/javascriptcore/stress/object-keys-indexed-non-cache.js b/implementation-contributed/javascriptcore/stress/object-keys-indexed-non-cache.js deleted file mode 100644 index 09c9cf4ee11..00000000000 --- a/implementation-contributed/javascriptcore/stress/object-keys-indexed-non-cache.js +++ /dev/null @@ -1,25 +0,0 @@ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(object) -{ - return Object.keys(object); -} -noInline(test); - -var object = {0: 42}; -for (var i = 0; i < 1e3; ++i) { - var result = test(object); - shouldBe(result.length, 1); - shouldBe(result[0], '0'); -} -object[1] = 44; -for (var i = 0; i < 1e3; ++i) { - var result = test(object); - shouldBe(result.length, 2); - shouldBe(result[0], '0'); - shouldBe(result[1], '1'); -} diff --git a/implementation-contributed/javascriptcore/stress/object-keys-osr-exit.js b/implementation-contributed/javascriptcore/stress/object-keys-osr-exit.js deleted file mode 100644 index b07408944e1..00000000000 --- a/implementation-contributed/javascriptcore/stress/object-keys-osr-exit.js +++ /dev/null @@ -1,22 +0,0 @@ -//@ runDefault("--forceEagerCompilation=1", "--useConcurrentJIT=0") - -function foo(x) { - if (x) { - return; - } - let obj = { - a: 0, - b: 0 - }; - foo(1); - let keys = Object.keys(obj); - foo(); - keys.length -} - -try { - foo(); -} catch(e) { - if (e != "RangeError: Maximum call stack size exceeded.") - throw "FAILED"; -} diff --git a/implementation-contributed/javascriptcore/stress/object-keys-overrides-get-property-names.js b/implementation-contributed/javascriptcore/stress/object-keys-overrides-get-property-names.js deleted file mode 100644 index 530d8bb17e9..00000000000 --- a/implementation-contributed/javascriptcore/stress/object-keys-overrides-get-property-names.js +++ /dev/null @@ -1,57 +0,0 @@ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function test(object) -{ - return Object.keys(object); -} -noInline(test); - -{ - let object = new String("Cocoa"); - for (let i = 0; i < 1e3; ++i) { - let result = test(object); - shouldBe(result.length, 5); - shouldBe(result[0], '0'); - shouldBe(result[1], '1'); - shouldBe(result[2], '2'); - shouldBe(result[3], '3'); - shouldBe(result[4], '4'); - } - - object.Cocoa = 42; - let result = test(object); - shouldBe(result.length, 6); - shouldBe(result[0], '0'); - shouldBe(result[1], '1'); - shouldBe(result[2], '2'); - shouldBe(result[3], '3'); - shouldBe(result[4], '4'); - shouldBe(result[5], 'Cocoa'); -} - -{ - let object = new String("Cocoa"); - for (let i = 0; i < 1e3; ++i) { - let result = test(object); - shouldBe(result.length, 5); - shouldBe(result[0], '0'); - shouldBe(result[1], '1'); - shouldBe(result[2], '2'); - shouldBe(result[3], '3'); - shouldBe(result[4], '4'); - } - - object[8] = 42; - let result = test(object); - shouldBe(result.length, 6); - shouldBe(result[0], '0'); - shouldBe(result[1], '1'); - shouldBe(result[2], '2'); - shouldBe(result[3], '3'); - shouldBe(result[4], '4'); - shouldBe(result[5], '8'); -} diff --git a/implementation-contributed/javascriptcore/stress/op_add.js b/implementation-contributed/javascriptcore/stress/op_add.js deleted file mode 100644 index ce799de387b..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_add.js +++ /dev/null @@ -1,66 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "add"; -var op = "+"; - -var o1 = { - valueOf: function() { return 10; } -}; - -var posInfinity = 1 / 0; -var negInfinity = -1 / 0; - -var values = [ - 'o1', - 'null', - 'undefined', - 'true', - 'false', - - 'NaN', - 'posInfinity', - 'negInfinity', - '100.2', // Some random small double value. - '-100.2', - '54294967296.2923', // Some random large double value. - '-54294967296.2923', - - '0', - '-0', - '1', - '-1', - '0x3fff', - '-0x3fff', - '0x7fff', - '-0x7fff', - '0x10000', - '-0x10000', - '0x7ffffff', - '-0x7ffffff', - '0x100000000', - '-0x100000000', - - '"abc"', - '"0"', - '"-0"', - '"1"', - '"-1"', -]; - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); -generateBinaryTests(tests, opName, op, "VarConst", values, values); -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_bitand.js b/implementation-contributed/javascriptcore/stress/op_bitand.js deleted file mode 100644 index d014aa6e9d8..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_bitand.js +++ /dev/null @@ -1,72 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "bitand"; -var op = "&"; - -var o1 = { - valueOf: function() { return 10; } -}; - -var posInfinity = 1 / 0; -var negInfinity = -1 / 0; - -var values = [ - 'o1', - 'null', - 'undefined', - 'true', - 'false', - - 'NaN', - 'posInfinity', - 'negInfinity', - '100.2', // Some random small double value. - '-100.2', - '54294967296.2923', // Some random large double value. - '-54294967296.2923', - - '0', - '-0', - '1', - '-1', - '0x3fff', - '-0x3fff', - '0x7fff', - '-0x7fff', - '0x10000', - '-0x10000', - '0x7fffffff', - '-0x7fffffff', - '0xa5a5a5a5', - '0x100000000', - '-0x100000000', - - '"abc"', - '"0"', - '"-0"', - '"1"', - '"-1"', - '"0x7fffffff"', - '"-0x7fffffff"', - '"0xa5a5a5a5"', - '"0x100000000"', - '"-0x100000000"', -]; - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); -generateBinaryTests(tests, opName, op, "VarConst", values, values); -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_bitor.js b/implementation-contributed/javascriptcore/stress/op_bitor.js deleted file mode 100644 index ad3bfaa431d..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_bitor.js +++ /dev/null @@ -1,72 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "bitor"; -var op = "|"; - -var o1 = { - valueOf: function() { return 10; } -}; - -var posInfinity = 1 / 0; -var negInfinity = -1 / 0; - -var values = [ - 'o1', - 'null', - 'undefined', - 'true', - 'false', - - 'NaN', - 'posInfinity', - 'negInfinity', - '100.2', // Some random small double value. - '-100.2', - '54294967296.2923', // Some random large double value. - '-54294967296.2923', - - '0', - '-0', - '1', - '-1', - '0x3fff', - '-0x3fff', - '0x7fff', - '-0x7fff', - '0x10000', - '-0x10000', - '0x7fffffff', - '-0x7fffffff', - '0xa5a5a5a5', - '0x100000000', - '-0x100000000', - - '"abc"', - '"0"', - '"-0"', - '"1"', - '"-1"', - '"0x7fffffff"', - '"-0x7fffffff"', - '"0xa5a5a5a5"', - '"0x100000000"', - '"-0x100000000"', -]; - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); -generateBinaryTests(tests, opName, op, "VarConst", values, values); -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_bitxor.js b/implementation-contributed/javascriptcore/stress/op_bitxor.js deleted file mode 100644 index f22fa04ca6a..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_bitxor.js +++ /dev/null @@ -1,72 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "bitxor"; -var op = "^"; - -var o1 = { - valueOf: function() { return 10; } -}; - -var posInfinity = 1 / 0; -var negInfinity = -1 / 0; - -var values = [ - 'o1', - 'null', - 'undefined', - 'true', - 'false', - - 'NaN', - 'posInfinity', - 'negInfinity', - '100.2', // Some random small double value. - '-100.2', - '54294967296.2923', // Some random large double value. - '-54294967296.2923', - - '0', - '-0', - '1', - '-1', - '0x3fff', - '-0x3fff', - '0x7fff', - '-0x7fff', - '0x10000', - '-0x10000', - '0x7fffffff', - '-0x7fffffff', - '0xa5a5a5a5', - '0x100000000', - '-0x100000000', - - '"abc"', - '"0"', - '"-0"', - '"1"', - '"-1"', - '"0x7fffffff"', - '"-0x7fffffff"', - '"0xa5a5a5a5"', - '"0x100000000"', - '"-0x100000000"', -]; - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); -generateBinaryTests(tests, opName, op, "VarConst", values, values); -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_div-ConstVar.js b/implementation-contributed/javascriptcore/stress/op_div-ConstVar.js deleted file mode 100644 index 45086543ad6..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_div-ConstVar.js +++ /dev/null @@ -1,20 +0,0 @@ -//@ skip if $architecture == "x86" -//@ runFTLNoCJIT("--timeoutMultiplier=2.0") - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "div"; -var op = "/"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_div-VarConst.js b/implementation-contributed/javascriptcore/stress/op_div-VarConst.js deleted file mode 100644 index 91ff2f14ad8..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_div-VarConst.js +++ /dev/null @@ -1,20 +0,0 @@ -//@ skip if $architecture == "x86" -//@ runFTLNoCJIT("--timeoutMultiplier=2.0") - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "div"; -var op = "/"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarConst", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_div-VarVar.js b/implementation-contributed/javascriptcore/stress/op_div-VarVar.js deleted file mode 100644 index 828a203045d..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_div-VarVar.js +++ /dev/null @@ -1,20 +0,0 @@ -//@ skip if $architecture == "x86" -//@ runFTLNoCJIT("--timeoutMultiplier=2.0") - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "div"; -var op = "/"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_lshift-ConstVar.js b/implementation-contributed/javascriptcore/stress/op_lshift-ConstVar.js deleted file mode 100644 index 1648c25cb89..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_lshift-ConstVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "lshift"; -var op = "<<"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_lshift-VarConst.js b/implementation-contributed/javascriptcore/stress/op_lshift-VarConst.js deleted file mode 100644 index bfce6c15f75..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_lshift-VarConst.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "lshift"; -var op = "<<"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarConst", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_lshift-VarVar.js b/implementation-contributed/javascriptcore/stress/op_lshift-VarVar.js deleted file mode 100644 index 43f763073af..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_lshift-VarVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "lshift"; -var op = "<<"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_mod-ConstVar.js b/implementation-contributed/javascriptcore/stress/op_mod-ConstVar.js deleted file mode 100644 index c0f2cb341e9..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_mod-ConstVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT("--timeoutMultiplier=1.5") - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "mod"; -var op = "%"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_mod-VarConst.js b/implementation-contributed/javascriptcore/stress/op_mod-VarConst.js deleted file mode 100644 index 68303fbfbbb..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_mod-VarConst.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT("--timeoutMultiplier=1.5") - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "mod"; -var op = "%"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarConst", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_mod-VarVar.js b/implementation-contributed/javascriptcore/stress/op_mod-VarVar.js deleted file mode 100644 index 29bdccba4fc..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_mod-VarVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT("--timeoutMultiplier=1.5") - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "mod"; -var op = "%"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_mul-ConstVar.js b/implementation-contributed/javascriptcore/stress/op_mul-ConstVar.js deleted file mode 100644 index 364144db3f8..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_mul-ConstVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "mul"; -var op = "*"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_mul-VarConst.js b/implementation-contributed/javascriptcore/stress/op_mul-VarConst.js deleted file mode 100644 index 441b35cac57..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_mul-VarConst.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "mul"; -var op = "*"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarConst", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_mul-VarVar.js b/implementation-contributed/javascriptcore/stress/op_mul-VarVar.js deleted file mode 100644 index 042fbb87424..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_mul-VarVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "mul"; -var op = "*"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_rshift-ConstVar.js b/implementation-contributed/javascriptcore/stress/op_rshift-ConstVar.js deleted file mode 100644 index a34515b4d6b..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_rshift-ConstVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "rshift"; -var op = ">>"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_rshift-VarConst.js b/implementation-contributed/javascriptcore/stress/op_rshift-VarConst.js deleted file mode 100644 index 715aea6c51c..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_rshift-VarConst.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "rshift"; -var op = ">>"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarConst", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_rshift-VarVar.js b/implementation-contributed/javascriptcore/stress/op_rshift-VarVar.js deleted file mode 100644 index f1f4166a55a..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_rshift-VarVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "rshift"; -var op = ">>"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_sub-ConstVar.js b/implementation-contributed/javascriptcore/stress/op_sub-ConstVar.js deleted file mode 100644 index 1f4e7b416f4..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_sub-ConstVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "sub"; -var op = "-"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_sub-VarConst.js b/implementation-contributed/javascriptcore/stress/op_sub-VarConst.js deleted file mode 100644 index 9e7ed1a900c..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_sub-VarConst.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "sub"; -var op = "-"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarConst", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_sub-VarVar.js b/implementation-contributed/javascriptcore/stress/op_sub-VarVar.js deleted file mode 100644 index 3bb0b2d251b..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_sub-VarVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "sub"; -var op = "-"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_urshift-ConstVar.js b/implementation-contributed/javascriptcore/stress/op_urshift-ConstVar.js deleted file mode 100644 index b136be38af5..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_urshift-ConstVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "urshift"; -var op = ">>>"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "ConstVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_urshift-VarConst.js b/implementation-contributed/javascriptcore/stress/op_urshift-VarConst.js deleted file mode 100644 index 8c4308f5078..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_urshift-VarConst.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "urshift"; -var op = ">>>"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarConst", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/op_urshift-VarVar.js b/implementation-contributed/javascriptcore/stress/op_urshift-VarVar.js deleted file mode 100644 index 466d47b6ae2..00000000000 --- a/implementation-contributed/javascriptcore/stress/op_urshift-VarVar.js +++ /dev/null @@ -1,22 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -//@ runFTLNoCJIT - -// If all goes well, this test module will terminate silently. If not, it will print -// errors. See binary-op-test.js for debugging options if needed. - -load("./resources/binary-op-test.js"); - -//============================================================================ -// Test configuration data: - -var opName = "urshift"; -var op = ">>>"; - -load("./resources/binary-op-values.js"); - -tests = []; -generateBinaryTests(tests, opName, op, "VarVar", values, values); - -run(); diff --git a/implementation-contributed/javascriptcore/stress/out-of-frame-stack-accesses-due-to-probe-based-osr-exits.js b/implementation-contributed/javascriptcore/stress/out-of-frame-stack-accesses-due-to-probe-based-osr-exits.js deleted file mode 100644 index 87e0e44398b..00000000000 --- a/implementation-contributed/javascriptcore/stress/out-of-frame-stack-accesses-due-to-probe-based-osr-exits.js +++ /dev/null @@ -1,14 +0,0 @@ -//@ requireOptions("--useProbeOSRExit=true", "--forceEagerCompilation=true") - -// This test passes if it does not crash especially on ASAN builds. - -let x = 0; -function Foo(a) { - a === a; - '' + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x; -} - -for (let i=0; i<8; i++) - new Foo(0); - -new Foo({}); diff --git a/implementation-contributed/javascriptcore/stress/pow-expects-update-expression-on-lhs.js b/implementation-contributed/javascriptcore/stress/pow-expects-update-expression-on-lhs.js deleted file mode 100644 index c255259f3fa..00000000000 --- a/implementation-contributed/javascriptcore/stress/pow-expects-update-expression-on-lhs.js +++ /dev/null @@ -1,96 +0,0 @@ -function testSyntax(script) { - try { - eval(script); - } catch (error) { - if (error instanceof SyntaxError) - throw new Error("Bad error: " + String(error)); - } -} - -function testSyntaxError(script, message) { - var error = null; - try { - eval(script); - } catch (e) { - error = e; - } - if (!error) - throw new Error("Expected syntax error not thrown"); - - if (String(error) !== message) - throw new Error("Bad error: " + String(error)); -} - -{ - let tokens = [ - '-', - '+', - '~', - '!', - 'typeof', - 'void', - 'delete', - ]; - - for (let token of tokens) { - testSyntaxError(` - function pow(a, b) - { - return ${token} a ** b; - } - `, `SyntaxError: Unexpected token '**'. Ambiguous unary expression in the left hand side of the exponentiation expression; parentheses must be used to disambiguate the expression.`); - } -} - -{ - let tokens = [ - '-', - '+', - '~', - '!', - 'typeof', - 'void', - 'delete', - ]; - - for (let token of tokens) { - testSyntax(` - function pow(a, b) - { - return (${token} a) ** b; - } - `); - } -} - -{ - let tokens = [ - '++', - '--', - ]; - - for (let token of tokens) { - testSyntax(` - function pow(a, b) - { - return ${token} a ** b; - } - `); - } -} - -{ - let tokens = [ - '++', - '--', - ]; - - for (let token of tokens) { - testSyntax(` - function pow(a, b) - { - return a ${token} ** b; - } - `); - } -} diff --git a/implementation-contributed/javascriptcore/stress/private-name-as-anonymous-builtin.js b/implementation-contributed/javascriptcore/stress/private-name-as-anonymous-builtin.js deleted file mode 100644 index 4b21dd17b7e..00000000000 --- a/implementation-contributed/javascriptcore/stress/private-name-as-anonymous-builtin.js +++ /dev/null @@ -1,24 +0,0 @@ -// Reviewed -/*** -- jsc -- ch -- d8: Error: bad value: ["length","name"] -- jsshell: Error: bad value: ["length","name"] - */ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -var executorFunction; -function NotPromise(executor) { - executorFunction = executor; - executor(function(){}, function(){}); -} -Promise.resolve.call(NotPromise); - -shouldBe(JSON.stringify(Object.getOwnPropertyNames(executorFunction).sort()), `["length"]`); -shouldBe(executorFunction.hasOwnProperty('name'), false); -shouldBe(executorFunction.name, ``); -shouldBe(delete executorFunction.name, true); diff --git a/implementation-contributed/javascriptcore/stress/property-name-enumerator-should-cache-structure-after-getting-property-names.js b/implementation-contributed/javascriptcore/stress/property-name-enumerator-should-cache-structure-after-getting-property-names.js deleted file mode 100644 index 27c4192e273..00000000000 --- a/implementation-contributed/javascriptcore/stress/property-name-enumerator-should-cache-structure-after-getting-property-names.js +++ /dev/null @@ -1,11 +0,0 @@ -function foo(){ - o = Error(); - for (var s in o) { - o[s]; - o = Error(); - } -} -noInline(foo); - -for(var i = 0; i < 100; i++) - foo(); diff --git a/implementation-contributed/javascriptcore/stress/proxy-get-set-correct-receiver.js b/implementation-contributed/javascriptcore/stress/proxy-get-set-correct-receiver.js deleted file mode 100644 index 6708ab185dd..00000000000 --- a/implementation-contributed/javascriptcore/stress/proxy-get-set-correct-receiver.js +++ /dev/null @@ -1,117 +0,0 @@ -"use strict"; - -function assert(b) { - if (!b) - throw new Error("Bad") -} - -function test(f, count = 1000) { - noInline(f); - for (let i = 0; i < count; ++i) - f(); -} - -test(function() { - let called = false; - let target = { - set prop(x) - { - assert(x === 20); - called = true; - assert(this === proxy) - } - } - - let proxy = new Proxy(target, {}) - proxy.prop = 20; - assert(called); -}); - -test(function() { - let called = false; - let target = { - get prop() - { - called = true; - assert(this === proxy) - } - } - - let proxy = new Proxy(target, {}) - proxy.prop - assert(called); -}); - -test(function() { - let target = { - get prop() - { - called = true; - assert(this === proxy) - } - } - let p1 = new Proxy(target, {}); - - let called = false; - let proxy = new Proxy(p1, {}); - proxy.prop - assert(called); -}); - -test(function() { - let t = {}; - let p1 = new Proxy(t, { - get(target, prop, receiver) { - called = true; - assert(target === t); - assert(receiver === proxy); - assert(prop === "prop"); - } - }); - - let called = false; - let proxy = new Proxy(p1, {}); - proxy.prop - assert(called); -}); - -test(function() { - let t = {}; - let callCount = 0; - let handler = { - get(target, prop, receiver) { - if (callCount === 100) - assert(target === t); - ++callCount; - assert(receiver === proxy); - assert(prop === "prop"); - return Reflect.get(target, prop, receiver); - } - }; - let proxy = new Proxy(t, handler); - for (let i = 0; i < 100; ++i) - proxy = new Proxy(proxy, handler); - proxy.prop - assert(callCount === 101); -}, 10); - -test(function() { - let t = {}; - let callCount = 0; - let handler = { - set(target, prop, value, receiver) { - if (callCount === 100) - assert(target === t); - ++callCount; - assert(receiver === proxy); - assert(prop === "prop"); - assert(value === 20); - return Reflect.set(target, prop, value, receiver); - } - }; - let proxy = new Proxy(t, handler); - for (let i = 0; i < 100; ++i) - proxy = new Proxy(proxy, handler); - proxy.prop = 20; - assert(callCount === 101); -}, 10); diff --git a/implementation-contributed/javascriptcore/stress/put-by-id-flags.js b/implementation-contributed/javascriptcore/stress/put-by-id-flags.js deleted file mode 100644 index f67fe16f57d..00000000000 --- a/implementation-contributed/javascriptcore/stress/put-by-id-flags.js +++ /dev/null @@ -1,23 +0,0 @@ -function f(x, y) { - x.y = y; -}; - -function g(x) { - return x.y + 42; -} -noInline(f); -noInline(g); - -var x = {}; -var y = {}; -f(x, 42); -f(y, {}); - -while (!numberOfDFGCompiles(g)) { - optimizeNextInvocation(g); - if (typeof g(x) !== 'number') - throw 'failed warming up'; -} - -if (typeof g(y) !== 'string') - throw 'failed after compilation'; diff --git a/implementation-contributed/javascriptcore/stress/r238510-bad-loop.js b/implementation-contributed/javascriptcore/stress/r238510-bad-loop.js deleted file mode 100644 index be899b7d3e0..00000000000 --- a/implementation-contributed/javascriptcore/stress/r238510-bad-loop.js +++ /dev/null @@ -1,10 +0,0 @@ -function foo() { - return function () { - eval(); - } -} -noInline(foo); - -for (let i = 0; i < 100000; ++i) { - foo(); -} diff --git a/implementation-contributed/javascriptcore/stress/regexp-compile-oom.js b/implementation-contributed/javascriptcore/stress/regexp-compile-oom.js deleted file mode 100644 index 1a08b8e69ac..00000000000 --- a/implementation-contributed/javascriptcore/stress/regexp-compile-oom.js +++ /dev/null @@ -1,99 +0,0 @@ -//@ skip if $hostOS != "darwin" or $architecture == "arm" or $architecture == "x86" or not $jitTests -// Test that throw an OOM exception when compiling a pathological, but valid nested RegExp. - -var failures = []; - -class TestAndExpectedException -{ - constructor(func, exception) - { - this.func = func; - this.exception = exception; - } - - runTest() - { - try { - this.func(); - failures.push("Running " + this.func + ", expected OOM exception, but didn't get one"); - } catch (e) { - let errStr = e.toString(); - if (errStr != this.exception) - failures.push("Running " + this.func + ", expected: \"" + this.exception + "\" but got \"" + errStr + "\""); - } - } -} - -function recurseAndTest(depth, testList) -{ - // Probe stack depth - try { - let result = recurseAndTest(depth + 1, testList); - if (result == 0) { - // Call the test functions with a nearly full stack. - for (const test of testList) - test.runTest(); - - return 1; - } else if (result < 0) - return result + 1; - else - return result; - } catch (e) { - // Go up a several frames and then call the test functions - return -24; - } - - return 1; -} - -let deepRE = new RegExp("((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))"); -let deepGlobalRE = new RegExp(deepRE, "g"); - -let matchLen = 401; // The number of parens plus 1 for the whole match. - -let regExpOOMError = "Error: Out of memory: Invalid regular expression: too many nested disjunctions"; - -testList = []; - -// Test that all RegExp related APIs that compile RE's properly handle OOM. -testList.push(new TestAndExpectedException(() => { deepRE.exec("x"); }, regExpOOMError)); -testList.push(new TestAndExpectedException(() => { deepRE.test("x"); }, regExpOOMError)); -testList.push(new TestAndExpectedException(() => { "x".match(deepRE); }, regExpOOMError)); -testList.push(new TestAndExpectedException(() => { "x".match(deepGlobalRE); }, regExpOOMError)); -testList.push(new TestAndExpectedException(() => { "x".replace(deepGlobalRE, ""); }, regExpOOMError)); -testList.push(new TestAndExpectedException(() => { "x".replace(deepGlobalRE, "X"); }, regExpOOMError)); -testList.push(new TestAndExpectedException(() => { "x".replace(deepGlobalRE, () => { return "X" }); }, regExpOOMError)); -testList.push(new TestAndExpectedException(() => { "x".search(deepRE); }, regExpOOMError)); - -recurseAndTest(1, testList); - -if (failures.length) { - print("Got the following failures:"); - for (const failure of failures) - print(failure); - throw "Got failures"; -} - -// Test that the RegExp works correctly with RegExp.exec() and RegExp.test() when there is sufficient stack space to compile it. -let m = deepRE.exec("x"); -let matched = true; -if (m.length != matchLen) - matched = false -else { - for (i = 0; i < matchLen; i++) { - if (m[i] != "x") - matched = false; - } -} - -if (!matched) { - let expectedMatch = []; - for (i = 0; i < matchLen; i++) - expectedMatch[i] = "x"; - - throw "Expected RegExp.exec(...) to be [" + expectedMatch + "] but got [" + m + "]"; -} - -if (!deepRE.test("x")) - throw "Expected RegExp.test(...) to be true, but was false"; diff --git a/implementation-contributed/javascriptcore/stress/regress-159883.js b/implementation-contributed/javascriptcore/stress/regress-159883.js deleted file mode 100644 index ced2d163df0..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-159883.js +++ /dev/null @@ -1,6 +0,0 @@ -// Reviewed -// Regression test for 159883. This test should not crash or throw an exception. - -d = new Date(-0x80000000, 42); -if (d.toString() != "Invalid Date") - throw "Expected \"Invalid Date\", but got :\"" + d + "\""; diff --git a/implementation-contributed/javascriptcore/stress/regress-169445.js b/implementation-contributed/javascriptcore/stress/regress-169445.js deleted file mode 100644 index a56a41ad743..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-169445.js +++ /dev/null @@ -1,46 +0,0 @@ -//@ defaultNoNoLLIntRun if $architecture == "arm" - -let args = new Array(0x10000); -args.fill(); -args = args.map((_, i) => 'a' + i).join(', '); - -let gun = eval(`(function () { - class A { - - } - - class B extends A { - constructor(${args}) { - () => { - ${args}; - super(); - }; - - class C { - constructor() { - } - - trigger() { - (() => { - super.x; - })(); - } - - triggerWithRestParameters(...args) { - (() => { - super.x; - })(); - } - } - - return new C(); - } - } - - return new B(); -})()`); - -for (let i = 0; i < 0x10000; i++) { - gun.trigger(); - gun.triggerWithRestParameters(1, 2, 3); -} diff --git a/implementation-contributed/javascriptcore/stress/regress-170253.js b/implementation-contributed/javascriptcore/stress/regress-170253.js deleted file mode 100644 index f0fa285e754..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-170253.js +++ /dev/null @@ -1,12 +0,0 @@ -// This test passes if it does not crash. - -Array.prototype.__defineGetter__(1000, () => 0); - -for (let i = 0; i < 0x1000; i++) - new Array(0x10).fill([{}, {}, {}, {}]); - -for (let i = 0; i < 0x1000; i++) { - let x = {length: 0x10}; - x.__defineGetter__(0, () => gc()); - Array.prototype.splice.call(x, 0); -} diff --git a/implementation-contributed/javascriptcore/stress/regress-170732.js b/implementation-contributed/javascriptcore/stress/regress-170732.js deleted file mode 100644 index 0bd7cf8bf81..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-170732.js +++ /dev/null @@ -1,5 +0,0 @@ -// Reviewed -//@ runDefault("--exception=SyntaxError") -async function f() { - await async()=>{} -} diff --git a/implementation-contributed/javascriptcore/stress/regress-179562.js b/implementation-contributed/javascriptcore/stress/regress-179562.js deleted file mode 100644 index 488bf9b3ae9..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-179562.js +++ /dev/null @@ -1,33 +0,0 @@ -//@ runFTLNoCJIT("--maxPerThreadStackUsage=400000") if $jitTests - -function runNearStackLimit(f) { - function t() { - try { - return t(); - } catch (e) { - return f(); - } - } - return t() -} - -function foo(a, b) { - return [{ - name: b + "" + a - }]; -} - -var exception; -try { - __v_25012 = [].concat( - foo(1, []), - runNearStackLimit(() => { - return foo("bla", Symbol.search); - }) - ); -} catch (e) { - exception = e; -} - -if (exception != "TypeError: Cannot convert a symbol to a string") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/regress-179634.js b/implementation-contributed/javascriptcore/stress/regress-179634.js deleted file mode 100644 index 56442c65c8c..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-179634.js +++ /dev/null @@ -1,24 +0,0 @@ -// Reviewed -function foo() { - return { - get: function () { }, - set: Object, - }; -} - -var exception; -try { - Object.defineProperties({}, { - 2: foo(), - 0: foo(), - 1: foo(), - ' ': foo(), - 9: foo(), - B: 'B', - }); -} catch (e) { - exception = e; -} - -if (exception != "TypeError: Property description must be an object.") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/regress-185888.js b/implementation-contributed/javascriptcore/stress/regress-185888.js deleted file mode 100644 index ccd1ef70bf2..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-185888.js +++ /dev/null @@ -1,12 +0,0 @@ -//@ if $memoryLimited then skip else runDefault end - -var exception; -try { - const str = "a".padStart(0x80000000 - 1); - new Date(str); -} catch (e) { - exception = e; -} - -if (exception != "Error: Out of memory") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/regress-187373-2.js b/implementation-contributed/javascriptcore/stress/regress-187373-2.js deleted file mode 100644 index 9229f6f87d2..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-187373-2.js +++ /dev/null @@ -1,8 +0,0 @@ -//@ runDefault("--useControlFlowProfiler=true") - -function foo() { - for (var x in []) { - o[++x]; - } -} -foo() diff --git a/implementation-contributed/javascriptcore/stress/regress-187373.js b/implementation-contributed/javascriptcore/stress/regress-187373.js deleted file mode 100644 index fe819f9bb99..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-187373.js +++ /dev/null @@ -1,12 +0,0 @@ -async function* fn() { - return p - return q - switch (0) { - case 1: - i++; - i++; - foo(x, arguments[z]); - break; - } -} -fn().next(); diff --git a/implementation-contributed/javascriptcore/stress/regress-189028.js b/implementation-contributed/javascriptcore/stress/regress-189028.js deleted file mode 100644 index b66db453bd9..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-189028.js +++ /dev/null @@ -1,242 +0,0 @@ -function assert(x, y) { - if (x != y) { - $vm.print("actual: ", x); - $vm.print("expected: ", y); - throw "FAILED\n" + new Error().stack; - } -} - -(function() { - let arr = [1.1, 2.2]; - let arr2 = [1.1, 2.2]; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "CopyOnWriteArrayWithDouble"); - - let o = $vm.createGlobalObject(); - - $vm.haveABadTime(o); - - let proto = new o.Object(); - assert($vm.isHavingABadTime(o), true); - assert($vm.isHavingABadTime(proto), true); - - arr2.__proto__ = proto; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "ArrayWithSlowPutArrayStorage"); -})(); - -gc(); - -(function() { - let arr = [1.1, 2.2]; - let arr2 = [1.1, 2.2]; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "CopyOnWriteArrayWithDouble"); - - let o = $vm.createGlobalObject(); - - let proto = new o.Object(); - assert($vm.isHavingABadTime(o), false); - assert($vm.isHavingABadTime(proto), false); - - arr2.__proto__ = proto; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "ArrayWithDouble"); - - $vm.haveABadTime(o); - - assert($vm.isHavingABadTime(o), true); - assert($vm.isHavingABadTime(proto), true); - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "ArrayWithSlowPutArrayStorage"); -})(); - -gc(); - -(function() { - let arr = [1.1, 2.2]; - let arr2 = {}; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "NonArray"); - - let o = $vm.createGlobalObject(); - - $vm.haveABadTime(o); - - let proto = new o.Object(); - assert($vm.isHavingABadTime(o), true); - assert($vm.isHavingABadTime(proto), true); - - arr2.__proto__ = proto; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "NonArray"); - - arr2[0] = 1.1; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "NonArrayWithSlowPutArrayStorage"); -})(); - -gc(); - -(function() { - let arr = [1.1, 2.2]; - let arr2 = {}; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "NonArray"); - - let o = $vm.createGlobalObject(); - let proto = new o.Object(); - - assert($vm.isHavingABadTime(o), false); - assert($vm.isHavingABadTime(proto), false); - - arr2.__proto__ = proto; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "NonArray"); - - arr2[0] = 1.1; - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "NonArrayWithDouble"); - - $vm.haveABadTime(o); - - assert($vm.isHavingABadTime(o), true); - assert($vm.isHavingABadTime(proto), true); - - assert($vm.isHavingABadTime(arr), false); - assert($vm.indexingMode(arr), "CopyOnWriteArrayWithDouble"); - assert($vm.isHavingABadTime(arr2), false); - assert($vm.indexingMode(arr2), "NonArrayWithSlowPutArrayStorage"); -})(); - -gc(); - -(function() { - let g0 = $vm.createGlobalObject(); - let o0 = new g0.Object(); - assert($vm.isHavingABadTime(g0), false); - assert($vm.isHavingABadTime(o0), false); - - let g1 = $vm.createGlobalObject(); - let o1 = new g1.Object(); - assert($vm.isHavingABadTime(g1), false); - assert($vm.isHavingABadTime(o1), false); - - let g2 = $vm.createGlobalObject(); - assert($vm.isHavingABadTime(g2), false); - - $vm.haveABadTime(g1); - assert($vm.isHavingABadTime(g1), true); - - o1.__proto__ = null; - g2.Array.prototype.__proto__ = o1; - o0.__proto__ = o1; - - assert($vm.indexingMode(o0), "NonArray"); - assert($vm.isHavingABadTime(g0), false); - assert($vm.isHavingABadTime(g2), true); -})(); - -gc(); - -(function() { - let g0 = $vm.createGlobalObject(); - let o0 = new g0.Object(); - assert($vm.isHavingABadTime(g0), false); - assert($vm.isHavingABadTime(o0), false); - - let g1 = $vm.createGlobalObject(); - let o1 = new g1.Object(); - assert($vm.isHavingABadTime(g1), false); - assert($vm.isHavingABadTime(o1), false); - - let g2 = $vm.createGlobalObject(); - assert($vm.isHavingABadTime(g2), false); - - o1.__proto__ = null; - g2.Array.prototype.__proto__ = o1; - o0.__proto__ = o1; - assert($vm.isHavingABadTime(g0), false); - assert($vm.isHavingABadTime(g1), false); - assert($vm.isHavingABadTime(g2), false); - - $vm.haveABadTime(g1); - - assert($vm.indexingMode(o0), "NonArray"); - assert($vm.isHavingABadTime(g0), false); - assert($vm.isHavingABadTime(g1), true); - assert($vm.isHavingABadTime(g2), true); -})(); - -gc(); - -(function() { - let g0 = $vm.createGlobalObject(); - let o0 = new g0.Object(); - assert($vm.isHavingABadTime(g0), false); - assert($vm.isHavingABadTime(o0), false); - - let g1 = $vm.createGlobalObject(); - let o1 = new g1.Object(); - assert($vm.isHavingABadTime(g1), false); - assert($vm.isHavingABadTime(o1), false); - - let g2 = $vm.createGlobalObject(); - let o2 = new g2.Object(); - assert($vm.isHavingABadTime(g2), false); - assert($vm.isHavingABadTime(o2), false); - - let g3 = $vm.createGlobalObject(); - assert($vm.isHavingABadTime(g3), false); - - o1.__proto__ = null; - g2.Array.prototype.__proto__ = o1; - o2.__proto__ = o1; - g3.Array.prototype.__proto__ = o2; - o0.__proto__ = o1; - assert($vm.isHavingABadTime(g0), false); - assert($vm.isHavingABadTime(g1), false); - assert($vm.isHavingABadTime(g2), false); - assert($vm.isHavingABadTime(g3), false); - - $vm.haveABadTime(g1); - - assert($vm.indexingMode(o0), "NonArray"); - assert($vm.isHavingABadTime(g0), false); - assert($vm.isHavingABadTime(g1), true); - assert($vm.isHavingABadTime(g2), true); - assert($vm.isHavingABadTime(g2), true); -})(); \ No newline at end of file diff --git a/implementation-contributed/javascriptcore/stress/regress-189132.js b/implementation-contributed/javascriptcore/stress/regress-189132.js deleted file mode 100644 index cd0e57985a8..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-189132.js +++ /dev/null @@ -1,14 +0,0 @@ -//@ skip if $memoryLimited - -try { - var a0 = '\ud801'; - var a1 = []; - a2 = a0.padEnd(2147483644,'x'); - a1[a2]; -} catch (e) { - exception = e; -} - -if (exception != "Error: Out of memory") - throw "FAILED"; - diff --git a/implementation-contributed/javascriptcore/stress/regress-189317.js b/implementation-contributed/javascriptcore/stress/regress-189317.js deleted file mode 100644 index 8d1d51360f3..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-189317.js +++ /dev/null @@ -1,126 +0,0 @@ -// Reviewed -let intrinsics = [ - "Array.prototype.indexOf", - "Array.prototype.pop", - "Array.prototype.push", - "Array.prototype.slice", - "DataView.prototype.getInt8", - "DataView.prototype.getUint8", - "DataView.prototype.getInt16", - "DataView.prototype.getUint16", - "DataView.prototype.getInt32", - "DataView.prototype.getUint32", - "DataView.prototype.getFloat32", - "DataView.prototype.getFloat64", - "DataView.prototype.setInt8", - "DataView.prototype.setUint8", - "DataView.prototype.setInt16", - "DataView.prototype.setUint16", - "DataView.prototype.setInt32", - "DataView.prototype.setUint32", - "DataView.prototype.setFloat32", - "DataView.prototype.setFloat64", - "Map.prototype.get", - "Map.prototype.has", - "Map.prototype.set", - "Math.abs", - "Math.acos", - "Math.asin", - "Math.atan", - "Math.acosh", - "Math.asinh", - "Math.atanh", - "Math.cbrt", - "Math.ceil", - "Math.clz32", - "Math.cos", - "Math.cosh", - "Math.exp", - "Math.expm1", - "Math.floor", - "Math.fround", - "Math.log", - "Math.log10", - "Math.log1p", - "Math.log2", - "Math.max", - "Math.min", - "Math.pow", - "Math.random", - "Math.round", - "Math.sin", - "Math.sinh", - "Math.sqrt", - "Math.tan", - "Math.tanh", - "Math.trunc", - "Math.imul", - "Number.isInteger", - "Number.prototype.toString", - "Object.create", - "Object.getPrototypeOf", - "Object.is", - "Object.prototype.hasOwnProperty", - "parseInt", - "Set.prototype.add", - "Set.prototype.has", - "String.fromCharCode", - "String.prototype.charCodeAt", - "String.prototype.charAt", - "String.prototype.replace", - "String.prototype.slice", - "String.prototype.toLowerCase", - "String.prototype.valueOf", - "Reflect.getPrototypeOf", - "RegExp.prototype.exec", - "RegExp.prototype.test", - "WeakMap.prototype.get", - "WeakMap.prototype.has", - "WeakMap.prototype.set", - "WeakSet.prototype.add", - "WeakSet.prototype.has", -]; - -if (typeof Atomics !== "undefined") { - intrinsics = intrinsics.concat([ - "Atomics.add", - "Atomics.and", - "Atomics.compareExchange", - "Atomics.exchange", - "Atomics.isLockFree", - "Atomics.load", - "Atomics.or", - "Atomics.store", - "Atomics.sub", - "Atomics.wait", - "Atomics.wake", - "Atomics.xor", - ]); -} - -function testGetter(intrinsic) { - let runTest = new Function( - "let x = {};" + "\n" + - "x.__defineGetter__('a', " + intrinsic + ");" + "\n" + - "function test() { x['a']; }" + "\n" + - "for (let i = 0; i < 1000; i++) {" + "\n" + - " try { test(); } catch(e) { }" + "\n" + - "}"); - runTest(); -} - -function testSetter(intrinsic) { - let runTest = new Function( - "let x = {};" + "\n" + - "x.__defineSetter__('a', " + intrinsic + ");" + "\n" + - "function test() { x['a'] = 42; }" + "\n" + - "for (let i = 0; i < 1000; i++) {" + "\n" + - " try { test(); } catch(e) { }" + "\n" + - "}"); - runTest(); -} - -for (var i = 0; i < intrinsics.length; ++i) { - testGetter(intrinsics[i]); - testSetter(intrinsics[i]); -} diff --git a/implementation-contributed/javascriptcore/stress/regress-189571.js b/implementation-contributed/javascriptcore/stress/regress-189571.js deleted file mode 100644 index 8bde9cf24ca..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-189571.js +++ /dev/null @@ -1,151 +0,0 @@ -function assert(name, actual, expected) { - if (actual != expected) { - print("FAILED test " + name + ": expected " + expected + ", actual: " + actual); - throw "FAILED"; - } -} - -function checkResult(name, result, expectedK, expectedProp) { - assert(name, result[0], expectedK); - assert(name, result[1], expectedProp); -} - -// ForIn on Indexed properties. - -function testIndexedProperties(o) { - for (var k in o) { - { - function k() { } - } - return [ k, o[k] ]; - } -} - -var o = [42]; -for (var i = 0; i < 10000; ++i) { - var result = testIndexedProperties(o); - checkResult("testIndexedProperties", result, "function k() { }", undefined); -} - -function testIndexedProperties2(o) { - for (var k in o) { - { - k = "boo"; - function k() { } - } - return [ k, o[k] ]; - } -} - -var o = [42]; -for (var i = 0; i < 10000; ++i) { - var result = testIndexedProperties2(o); - checkResult("testIndexedProperties2", result, "boo", undefined); -} - -function testIndexedProperties3(o) { - for (var k in o) { - try { - } finally { - { - function k() { } - } - } - return [ k, o[k] ]; - } -} - -var o = [42]; -for (var i = 0; i < 10000; ++i) { - var result = testIndexedProperties3(o); - checkResult("testIndexedProperties3", result, "function k() { }", undefined); -} - -function testIndexedProperties4(o) { - for (var k in o) { - try { - } finally { - { - k = "boo"; - function k() { } - } - } - return [ k, o[k] ]; - } -} - -var o = [42]; -for (var i = 0; i < 10000; ++i) { - var result = testIndexedProperties4(o); - checkResult("testIndexedProperties4", result, "boo", undefined); -} - -// ForIn on Structure properties. - -function testStructureProperties(o) { - for (var k in o) { - { - function k() { } - } - return [ k, o[k] ]; - } -} - -var o = {a: 42}; -for (var i = 0; i < 10000; ++i) { - var result = testStructureProperties(o); - checkResult("testStructureProperties", result, "function k() { }", undefined); -} - -function testStructureProperties2(o) { - for (var k in o) { - { - k = 0x1234; - function k() { } - } - return [ k, o[k] ]; - } -} - -var o = {a: 42}; -for (var i = 0; i < 10000; ++i) { - var result = testStructureProperties2(o); - checkResult("testStructureProperties2", result, 0x1234, undefined); -} - -function testStructureProperties3(o) { - for (var k in o) { - try { - } finally { - { - function k() { } - } - } - return [ k, o[k] ]; - } -} - -var o = {a: 42}; -for (var i = 0; i < 10000; ++i) { - var result = testStructureProperties3(o); - checkResult("testStructureProperties3", result, "function k() { }", undefined); -} - -function testStructureProperties4(o) { - for (var k in o) { - try { - } finally { - { - k = 0x1234; - function k() { } - } - } - return [ k, o[k] ]; - } -} - -var o = {a: 42}; -for (var i = 0; i < 10000; ++i) { - var result = testStructureProperties4(o); - checkResult("testStructureProperties4", result, 0x1234, undefined); -} diff --git a/implementation-contributed/javascriptcore/stress/regress-190186.js b/implementation-contributed/javascriptcore/stress/regress-190186.js deleted file mode 100644 index 2f30c9d905c..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-190186.js +++ /dev/null @@ -1,95 +0,0 @@ -//@ runDefault("--useConcurrentJIT=false", "--sweepSynchronously=true") - -// This test passes if it does not crash with an ASAN build. - -(function() { - var bar = {}; - - for (var i = 0; i < 68; ++i) - String.raw`boo`; - - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - eval(String.raw`bar += 0;`); - - eval(String.raw`foo = class { };`); - foo += 0; - - gc(); - try { - eval(foo.toString()); - } catch (e) { - exception = e; - } - - if (exception != "SyntaxError: Class statements must have a name.") - throw "FAIL"; -})(); diff --git a/implementation-contributed/javascriptcore/stress/regress-190187.js b/implementation-contributed/javascriptcore/stress/regress-190187.js deleted file mode 100644 index 63dc08e65cb..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-190187.js +++ /dev/null @@ -1,18 +0,0 @@ -//@ skip if $memoryLimited or $buildType == "debug" -//@ runDefault -//@ slow! - -try { - var v1 = "AAAAAAAAAAA"; - for(var i = 0; i < 27; i++) - v1 = v1 + v1; - var v2; - var v3 = RegExp.prototype.toString.call({source:v1,flags:v1}); - v3 += v1; - v2 += v3.localeCompare(v1); -} catch (e) { - exception = e; -} - -if (exception != "Error: Out of memory") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/regress-190515-2.js b/implementation-contributed/javascriptcore/stress/regress-190515-2.js deleted file mode 100644 index f76053ca40f..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-190515-2.js +++ /dev/null @@ -1,15 +0,0 @@ -//@ requireOptions("--jitPolicyScale=0") - -// This test should not crash. - -function test(array) { - return array.push(0, 0.1); -} - -for (var i = 0; i < 100000; ++i) { - test([]) -} - -for (var i = 0; i < 100000; ++i) { - test([0]) -} diff --git a/implementation-contributed/javascriptcore/stress/regress-190515.js b/implementation-contributed/javascriptcore/stress/regress-190515.js deleted file mode 100644 index 5bdc6083d87..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-190515.js +++ /dev/null @@ -1,26 +0,0 @@ -function set(arr, value) { - arr[0] = value; -} - -function getImmutableArrayOrSet(get) { - let arr = [1]; - if (get) - return arr; - - set(arr, 42); - set({}, 1); -} -noInline(getImmutableArrayOrSet); - -function test() { - getImmutableArrayOrSet(true); - - for (let i = 0; i < 10000; i++) - getImmutableArrayOrSet(false); - - let arr = getImmutableArrayOrSet(true); - if (arr[0] != 1) - throw "FAILED"; -} - -test(); diff --git a/implementation-contributed/javascriptcore/stress/regress-190693.js b/implementation-contributed/javascriptcore/stress/regress-190693.js deleted file mode 100644 index 76b9e9e088d..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-190693.js +++ /dev/null @@ -1,63 +0,0 @@ -// Reduced and tweaked code from const-semantics.js to reproduce https://bugs.webkit.org/show_bug.cgi?id=190693 easily. -"use strict"; -function truth() { - return true; -} -noInline(truth); - -function assert(cond) { - if (!cond) - throw new Error("broke assertion"); -} -noInline(assert); -function shouldThrowInvalidConstAssignment(f) { - var threw = false; - try { - f(); - } catch(e) { - if (e.name.indexOf("TypeError") !== -1 && e.message.indexOf("readonly") !== -1) - threw = true; - } - assert(threw); -} -noInline(shouldThrowInvalidConstAssignment); - - -// ========== tests below =========== - -const NUM_LOOPS = 6000; - -;(function() { - function taz() { - const x = 20; - shouldThrowInvalidConstAssignment(function() { x = 20; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { x += 20; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { x -= 20; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { x *= 20; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { x /= 20; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { x >>= 20; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { x <<= 20; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { x ^= 20; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { x++; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { x--; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { ++x; }); - assert(x === 20); - shouldThrowInvalidConstAssignment(function() { --x; }); - assert(x === 20); - } - for (var i = 0; i < NUM_LOOPS; i++) { - taz(); - } -})(); - -for(var i = 0; i < 1e6; ++i); diff --git a/implementation-contributed/javascriptcore/stress/regress-191563.js b/implementation-contributed/javascriptcore/stress/regress-191563.js deleted file mode 100644 index 5937d597217..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-191563.js +++ /dev/null @@ -1,22 +0,0 @@ -//@ skip if $memoryLimited - -function foo(str, count) { - while (str.length < count) { - try { - str += str; - } catch (e) {} - } - return str.substring(); -} -var x = foo("1", 1 << 20); -var y = foo("$1", 1 << 16); - -var exception; -try { - var __v_6623 = x.replace(/(.+)/g, y); -} catch (e) { - exception = e; -} - -if (exception != "Error: Out of memory") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/regress-191579.js b/implementation-contributed/javascriptcore/stress/regress-191579.js deleted file mode 100644 index 388e5a10dab..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-191579.js +++ /dev/null @@ -1,26 +0,0 @@ -//@ requireOptions("--maxPerThreadStackUsage=400000", "--useTypeProfiler=true", "--exceptionStackTraceLimit=1", "--defaultErrorStackTraceLimit=1") - -// This test passes if it does not crash. - -var count = 0; - -function bar() { - new foo(); -}; - -function foo() { - if (count++ > 2000) - return; - let proxy = new Proxy({}, { - set: function() { - bar(); - } - }); - try { - Reflect.set(proxy); - foo(); - } catch (e) { - } -} - -bar(); diff --git a/implementation-contributed/javascriptcore/stress/regress-191730.js b/implementation-contributed/javascriptcore/stress/regress-191730.js deleted file mode 100644 index b6ab1c9f524..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-191730.js +++ /dev/null @@ -1,25 +0,0 @@ -function assertEq(actual, expected) { - if (actual != expected) - throw ("Expected: " + expected + ", actual: " + actual); -} - -var otherGlobal = $vm.createGlobalObject(); - -Array.prototype.__defineSetter__(7, () => { - arr[0] = { }; -}); - -let arr = new otherGlobal.Array(1.1, 2.2, 3.3); - -function foo(arr, regexp, str){ - var result = regexp[Symbol.match](str); - arr[1] = 3.54484805889626e-310; - return arr[0]; -} - -let regexp = /a/g; -for (let i = 0; i < 10000; i++) - foo(arr, regexp, "aaaa"); - -let r = foo(arr, regexp, "aaaaaaaa"); -assertEq(arr[1], "3.54484805889626e-310"); diff --git a/implementation-contributed/javascriptcore/stress/regress-191731.js b/implementation-contributed/javascriptcore/stress/regress-191731.js deleted file mode 100644 index a93e66fe098..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-191731.js +++ /dev/null @@ -1,27 +0,0 @@ -function assertEq(actual, expected) { - if (actual != expected) - throw ("Expected: " + expected + ", actual: " + actual); -} - -function foo(arr, regexp, str) { - regexp[Symbol.match](str); - arr[1] = 3.54484805889626e-310; - return arr[0]; -} - -let arr = [1.1, 2.2, 3.3]; -let regexp = /a/y; - -for (let i = 0; i < 10000; i++) - foo(arr, regexp, "abcd"); - -regexp.lastIndex = { - valueOf: () => { - arr[0] = arr; - return 0; - } -}; -let result = foo(arr, regexp, "abcd"); - -assertEq(arr[1], "3.54484805889626e-310"); -assertEq(result, ",3.54484805889626e-310,3.3"); diff --git a/implementation-contributed/javascriptcore/stress/regress-191856.js b/implementation-contributed/javascriptcore/stress/regress-191856.js deleted file mode 100644 index 2565e6e57bc..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-191856.js +++ /dev/null @@ -1,8 +0,0 @@ -//@ skip -//@ requireOptions("--watchdog=100") - -// FIMXE: skipping this test for now because it takes too long to run until we have a fix -// for https://bugs.webkit.org/show_bug.cgi?id=191855. - -for (let i=0; i<1000; i++) - import(0); diff --git a/implementation-contributed/javascriptcore/stress/regress-191993.js b/implementation-contributed/javascriptcore/stress/regress-191993.js deleted file mode 100644 index bb625691f66..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-191993.js +++ /dev/null @@ -1,13 +0,0 @@ -function foo(o) { - return o.r.input; -} -noInline(foo); - -Object.assign({}, RegExp); - -for (let i = 0; i < 10000; i++) - foo({r: RegExp}); - -let input = foo({r: RegExp}); -if (typeof input !== "string") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/regress-192386.js b/implementation-contributed/javascriptcore/stress/regress-192386.js deleted file mode 100644 index 26276e053e3..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-192386.js +++ /dev/null @@ -1,12 +0,0 @@ -//@ requireOptions("--jitPolicyScale=0") - -function foo(x) { - try { - new x(); - } catch { - } -} - -foo(function() {}); -for (let i = 0; i < 10000; ++i) - foo(() => undefined); diff --git a/implementation-contributed/javascriptcore/stress/regress-192441.js b/implementation-contributed/javascriptcore/stress/regress-192441.js deleted file mode 100644 index e56d11a4d22..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-192441.js +++ /dev/null @@ -1,12 +0,0 @@ -//@ requireOptions("--jitPolicyScale=0") - -// This test passes if it does not crash. - -let x = {} -let enUS = ['en', 'US'].join('-') -for (let i=0; i<100; i++) { - Intl.NumberFormat(enUS) -} -for (let i=0; i<10000; i++) { - x[enUS] -}; diff --git a/implementation-contributed/javascriptcore/stress/regress-192626.js b/implementation-contributed/javascriptcore/stress/regress-192626.js deleted file mode 100644 index ed98aa5627d..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-192626.js +++ /dev/null @@ -1,23 +0,0 @@ -var a = {}; - -function foo() { - return Array.prototype.splice.apply([], a); -} -noInline(foo); - -function bar(b) { - with({}); - a = arguments; - a.__defineGetter__("length", String.prototype.valueOf); - foo(); -} - -var exception; -try { - bar(); -} catch (e) { - exception = e; -} - -if (exception != "TypeError: Type error") - throw "FAIL"; diff --git a/implementation-contributed/javascriptcore/stress/regress-192717.js b/implementation-contributed/javascriptcore/stress/regress-192717.js deleted file mode 100644 index f941a85549b..00000000000 --- a/implementation-contributed/javascriptcore/stress/regress-192717.js +++ /dev/null @@ -1,16 +0,0 @@ -//@ skip if $memoryLimited or $buildType == "debug" -//@ runDefault("--useLLInt=false", "--forceCodeBlockToJettisonDueToOldAge=true", "--maxPerThreadStackUsage=200000", "--exceptionStackTraceLimit=1", "--defaultErrorStackTraceLimit=1") - -let foo = 'let a'; -for (let i = 0; i < 400000; i++) - foo += ',a' + i; - -var exception; -try { - new Function(foo)(); -} catch (e) { - exception = e; -} - -if (exception != "RangeError: Maximum call stack size exceeded.") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/reserved-word-with-escape.js b/implementation-contributed/javascriptcore/stress/reserved-word-with-escape.js deleted file mode 100644 index 703f7aa4888..00000000000 --- a/implementation-contributed/javascriptcore/stress/reserved-word-with-escape.js +++ /dev/null @@ -1,153 +0,0 @@ -// Reviewed -function testSyntax(script) { - try { - eval(script); - } catch (error) { - if (error instanceof SyntaxError) - throw new Error("Bad error: " + String(error)); - } -} - -function testSyntaxError(script, message) { - var error = null; - try { - eval(script); - } catch (e) { - error = e; - } - if (!error) - throw new Error("Expected syntax error not thrown"); - - if (String(error) !== message) - throw new Error("Bad error: " + String(error)); -} - -testSyntax("var cocoa"); -testSyntax("var c\u006fcoa"); - -testSyntaxError(String.raw`var var`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`); -testSyntaxError(String.raw`var v\u0061r`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`var v\u{0061}r`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`var var = 2000000;`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`); -testSyntaxError(String.raw`var v\u0061r = 2000000;`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`var v\u{0061}r = 2000000`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`var {var} = obj)`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`); -testSyntaxError(String.raw`var {v\u0061r} = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`var {v\u{0061}r} = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`var {var:var} = obj)`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`); -testSyntaxError(String.raw`var {var:v\u0061r} = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`var {var:v\u{0061}r} = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`var [var] = obj`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`); -testSyntaxError(String.raw`var [v\u0061r] = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`var [v\u{0061}r] = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`[var] = obj`, String.raw`SyntaxError: Unexpected keyword 'var'`); -testSyntaxError(String.raw`[v\u0061r] = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`[v\u{0061}r] = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`function var() { }`, String.raw`SyntaxError: Cannot use the keyword 'var' as a function name.`); -testSyntaxError(String.raw`function v\u0061r() { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`function v\u{0061}r() { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`function a(var) { }`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`function a(v\u0061r) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`function a(v\u{0061}r) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`function a({var}) { }`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`); -testSyntaxError(String.raw`function a({v\u0061r}) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`function a({v\u{0061}r}) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`function a({var:var}) { }`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`function a({var:v\u0061r}) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`function a({var:v\u{0061}r}) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`function a([var]) { }`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`function a([v\u0061r]) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`function a([v\u{0061}r]) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function var() { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a function name.`); -testSyntaxError(String.raw`(function v\u0061r() { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function v\u{0061}r() { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a(var) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a(v\u0061r) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a(v\u{0061}r) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a({var}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`); -testSyntaxError(String.raw`(function a({v\u0061r}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a({v\u{0061}r}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a({var:var}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a({var:v\u0061r}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a({var:v\u{0061}r}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a([var]) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a([v\u0061r]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a([v\u{0061}r]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a([{var}]) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`); -testSyntaxError(String.raw`(function a([{v\u0061r}]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a([{v\u{0061}r}]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a([{var:var}]) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a([{var:v\u0061r}]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a([{var:v\u{0061}r}]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a([[var]]) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a([[v\u0061r]]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a([[v\u{0061}r]]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a({ hello: {var}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`); -testSyntaxError(String.raw`(function a({ hello: {v\u0061r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a({ hello: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a({ hello: {var:var}}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a({ hello: {var:v\u0061r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a({ hello: {var:v\u{0061}r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a({ hello: [var]}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a({ hello: [v\u0061r]}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a({ hello: [v\u{0061}r]}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a({ 0: {var} }) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`); -testSyntaxError(String.raw`(function a({ 0: {v\u0061r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a({ 0: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a({ 0: {var:var}}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a({ 0: {var:v\u0061r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a({ 0: {var:v\u{0061}r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a({ 0: {value:var}}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a({ 0: {value:v\u0061r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a({ 0: {value:v\u{0061}r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`(function a({ 0: [var]}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`); -testSyntaxError(String.raw`(function a({ 0: [v\u0061r]}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`(function a({ 0: [v\u{0061}r]}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`try { } catch(var) { }`, String.raw`SyntaxError: Cannot use the keyword 'var' as a catch parameter name.`); -testSyntaxError(String.raw`try { } catch(v\u0061r) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`try { } catch(v\u{0061}r) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`class var { }`, String.raw`SyntaxError: Cannot use the keyword 'var' as a class name.`); -testSyntaxError(String.raw`class v\u0061r { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`class v\u{0061}r { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`({ v\u0061r: 'Cocoa' })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`); -testSyntaxError(String.raw`({ v\u{0061}r: 'Cocoa' })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`); - -testSyntaxError(String.raw`{for(o i\u006E {}){}}`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'i\u006E'`); -testSyntaxError(String.raw`{for(o i\u{006E} {}){}}`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'i\u{006E}'`); - - -testSyntaxError(String.raw`implements`, String.raw`ReferenceError: Can't find variable: implements`); -testSyntaxError(String.raw`impleme\u006Ets`, String.raw`ReferenceError: Can't find variable: implements`); -testSyntaxError(String.raw`impleme\u{006E}ts`, String.raw`ReferenceError: Can't find variable: implements`); - -testSyntaxError(String.raw`'use strict'; implements`, String.raw`SyntaxError: Unexpected use of reserved word 'implements' in strict mode`); -testSyntaxError(String.raw`'use strict'; impleme\u006Ets`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'impleme\u006Ets'`); -testSyntaxError(String.raw`'use strict'; impleme\u{006E}ts`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'impleme\u{006E}ts'`); diff --git a/implementation-contributed/javascriptcore/stress/rest-parameter-many-arguments.js b/implementation-contributed/javascriptcore/stress/rest-parameter-many-arguments.js deleted file mode 100644 index 16a1f288314..00000000000 --- a/implementation-contributed/javascriptcore/stress/rest-parameter-many-arguments.js +++ /dev/null @@ -1,52 +0,0 @@ -//@ skip if $architecture == "x86" -//@ if $architecture == "x86" then defaultSpotCheckNoMaximalFlush else defaultRun end - -function assert(b) { - if (!b) - throw new Error("Bad!") -} -noInline(assert); - -let calledGet = false; -let definedAccessor = false; -function test() { - function foo(...rest) { - return rest; - } - noInline(foo); - - for (let i = 0; i < 10000; i++) { - const size = 800; - let arr = new Array(size); - for (let i = 0; i < size; i++) - arr[i] = i; - let result = foo(...arr); - - assert(result.length === arr.length); - assert(result.length === size); - for (let i = 0; i < arr.length; i++) { - assert(arr[i] === result[i]); - assert(result[i] === i); - } - if (definedAccessor) { - calledGet = false; - result[0]; - assert(!calledGet); - arr[0]; - assert(calledGet); - - let testArr = [...arr]; - calledGet = false; - testArr[0]; - assert(!calledGet); - } - } -} -test(); - -definedAccessor = true; -Reflect.defineProperty(Array.prototype, "0", { - get() { calledGet = true; return 0; }, - set(x) { } -}); -test(); diff --git a/implementation-contributed/javascriptcore/stress/right-shift-to-primitive-precedence.js b/implementation-contributed/javascriptcore/stress/right-shift-to-primitive-precedence.js deleted file mode 100644 index 1eb6b034c07..00000000000 --- a/implementation-contributed/javascriptcore/stress/right-shift-to-primitive-precedence.js +++ /dev/null @@ -1,29 +0,0 @@ -//@ runBigIntEnabled - -assert = { - sameValue: function (input, expected, message) { - if (input !== expected) - throw new Error(message); - } -}; - -let o = { - [Symbol.toPrimitive]: function() { - throw new Error("Bad"); - } -}; - -try{ - o >> Symbol("2"); - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e.message, "Bad", "Expected to throw Error('Bad'), but got: " + e); -} - -try{ - Symbol("2") >> o; - assert.sameValue(true, false, "Exception expected to be throwed, but executed without error"); -} catch (e) { - assert.sameValue(e instanceof TypeError, true, "Expected to throw TypeError, but got: " + e) -} - diff --git a/implementation-contributed/javascriptcore/stress/sampling-profiler-richards.js b/implementation-contributed/javascriptcore/stress/sampling-profiler-richards.js deleted file mode 100644 index 5ea41bd7149..00000000000 --- a/implementation-contributed/javascriptcore/stress/sampling-profiler-richards.js +++ /dev/null @@ -1,545 +0,0 @@ -// [JSC] [Armv7] stress/sampling-profiler-richards.js crashes -// https://bugs.webkit.org/show_bug.cgi?id=190426 -//@ skip if ["arm", "mips"].include?($architecture) and $hostOS == "linux" -//@ skip if $architecture == "x86" -//@ runDefault("--collectContinuously=1", "--useSamplingProfiler=1", "--collectSamplingProfilerDataForJSCShell=1") - -"use strict"; - -// Copyright 2006-2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// This is a JavaScript implementation of the Richards -// benchmark from: -// -// http://www.cl.cam.ac.uk/~mr10/Bench.html -// -// The benchmark was originally implemented in BCPL by -// Martin Richards. - - -/** - * The Richards benchmark simulates the task dispatcher of an - * operating system. - **/ -function runRichards() { - var scheduler = new Scheduler(); - scheduler.addIdleTask(ID_IDLE, 0, null, COUNT); - - var queue = new Packet(null, ID_WORKER, KIND_WORK); - queue = new Packet(queue, ID_WORKER, KIND_WORK); - scheduler.addWorkerTask(ID_WORKER, 1000, queue); - - queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE); - queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE); - queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE); - scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue); - - queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE); - queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE); - queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE); - scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue); - - scheduler.addDeviceTask(ID_DEVICE_A, 4000, null); - - scheduler.addDeviceTask(ID_DEVICE_B, 5000, null); - - scheduler.schedule(); - - if (scheduler.queueCount != EXPECTED_QUEUE_COUNT || - scheduler.holdCount != EXPECTED_HOLD_COUNT) { - var msg = - "Error during execution: queueCount = " + scheduler.queueCount + - ", holdCount = " + scheduler.holdCount + "."; - throw new Error(msg); - } -} - -var COUNT = 1000; - -/** - * These two constants specify how many times a packet is queued and - * how many times a task is put on hold in a correct run of richards. - * They don't have any meaning a such but are characteristic of a - * correct run so if the actual queue or hold count is different from - * the expected there must be a bug in the implementation. - **/ -var EXPECTED_QUEUE_COUNT = 2322; -var EXPECTED_HOLD_COUNT = 928; - - -/** - * A scheduler can be used to schedule a set of tasks based on their relative - * priorities. Scheduling is done by maintaining a list of task control blocks - * which holds tasks and the data queue they are processing. - * @constructor - */ -function Scheduler() { - this.queueCount = 0; - this.holdCount = 0; - this.blocks = new Array(NUMBER_OF_IDS); - this.list = null; - this.currentTcb = null; - this.currentId = null; -} - -var ID_IDLE = 0; -var ID_WORKER = 1; -var ID_HANDLER_A = 2; -var ID_HANDLER_B = 3; -var ID_DEVICE_A = 4; -var ID_DEVICE_B = 5; -var NUMBER_OF_IDS = 6; - -var KIND_DEVICE = 0; -var KIND_WORK = 1; - -/** - * Add an idle task to this scheduler. - * @param {int} id the identity of the task - * @param {int} priority the task's priority - * @param {Packet} queue the queue of work to be processed by the task - * @param {int} count the number of times to schedule the task - */ -Scheduler.prototype.addIdleTask = function (id, priority, queue, count) { - this.addRunningTask(id, priority, queue, new IdleTask(this, 1, count)); -}; - -/** - * Add a work task to this scheduler. - * @param {int} id the identity of the task - * @param {int} priority the task's priority - * @param {Packet} queue the queue of work to be processed by the task - */ -Scheduler.prototype.addWorkerTask = function (id, priority, queue) { - this.addTask(id, priority, queue, new WorkerTask(this, ID_HANDLER_A, 0)); -}; - -/** - * Add a handler task to this scheduler. - * @param {int} id the identity of the task - * @param {int} priority the task's priority - * @param {Packet} queue the queue of work to be processed by the task - */ -Scheduler.prototype.addHandlerTask = function (id, priority, queue) { - this.addTask(id, priority, queue, new HandlerTask(this)); -}; - -/** - * Add a handler task to this scheduler. - * @param {int} id the identity of the task - * @param {int} priority the task's priority - * @param {Packet} queue the queue of work to be processed by the task - */ -Scheduler.prototype.addDeviceTask = function (id, priority, queue) { - this.addTask(id, priority, queue, new DeviceTask(this)) -}; - -/** - * Add the specified task and mark it as running. - * @param {int} id the identity of the task - * @param {int} priority the task's priority - * @param {Packet} queue the queue of work to be processed by the task - * @param {Task} task the task to add - */ -Scheduler.prototype.addRunningTask = function (id, priority, queue, task) { - this.addTask(id, priority, queue, task); - this.currentTcb.setRunning(); -}; - -/** - * Add the specified task to this scheduler. - * @param {int} id the identity of the task - * @param {int} priority the task's priority - * @param {Packet} queue the queue of work to be processed by the task - * @param {Task} task the task to add - */ -Scheduler.prototype.addTask = function (id, priority, queue, task) { - this.currentTcb = new TaskControlBlock(this.list, id, priority, queue, task); - this.list = this.currentTcb; - this.blocks[id] = this.currentTcb; -}; - -/** - * Execute the tasks managed by this scheduler. - */ -Scheduler.prototype.schedule = function () { - this.currentTcb = this.list; - while (this.currentTcb != null) { - if (this.currentTcb.isHeldOrSuspended()) { - this.currentTcb = this.currentTcb.link; - } else { - this.currentId = this.currentTcb.id; - this.currentTcb = this.currentTcb.run(); - } - } -}; - -/** - * Release a task that is currently blocked and return the next block to run. - * @param {int} id the id of the task to suspend - */ -Scheduler.prototype.release = function (id) { - var tcb = this.blocks[id]; - if (tcb == null) return tcb; - tcb.markAsNotHeld(); - if (tcb.priority > this.currentTcb.priority) { - return tcb; - } else { - return this.currentTcb; - } -}; - -/** - * Block the currently executing task and return the next task control block - * to run. The blocked task will not be made runnable until it is explicitly - * released, even if new work is added to it. - */ -Scheduler.prototype.holdCurrent = function () { - this.holdCount++; - this.currentTcb.markAsHeld(); - return this.currentTcb.link; -}; - -/** - * Suspend the currently executing task and return the next task control block - * to run. If new work is added to the suspended task it will be made runnable. - */ -Scheduler.prototype.suspendCurrent = function () { - this.currentTcb.markAsSuspended(); - return this.currentTcb; -}; - -/** - * Add the specified packet to the end of the worklist used by the task - * associated with the packet and make the task runnable if it is currently - * suspended. - * @param {Packet} packet the packet to add - */ -Scheduler.prototype.queue = function (packet) { - var t = this.blocks[packet.id]; - if (t == null) return t; - this.queueCount++; - packet.link = null; - packet.id = this.currentId; - return t.checkPriorityAdd(this.currentTcb, packet); -}; - -/** - * A task control block manages a task and the queue of work packages associated - * with it. - * @param {TaskControlBlock} link the preceding block in the linked block list - * @param {int} id the id of this block - * @param {int} priority the priority of this block - * @param {Packet} queue the queue of packages to be processed by the task - * @param {Task} task the task - * @constructor - */ -function TaskControlBlock(link, id, priority, queue, task) { - this.link = link; - this.id = id; - this.priority = priority; - this.queue = queue; - this.task = task; - if (queue == null) { - this.state = STATE_SUSPENDED; - } else { - this.state = STATE_SUSPENDED_RUNNABLE; - } -} - -/** - * The task is running and is currently scheduled. - */ -var STATE_RUNNING = 0; - -/** - * The task has packets left to process. - */ -var STATE_RUNNABLE = 1; - -/** - * The task is not currently running. The task is not blocked as such and may -* be started by the scheduler. - */ -var STATE_SUSPENDED = 2; - -/** - * The task is blocked and cannot be run until it is explicitly released. - */ -var STATE_HELD = 4; - -var STATE_SUSPENDED_RUNNABLE = STATE_SUSPENDED | STATE_RUNNABLE; -var STATE_NOT_HELD = ~STATE_HELD; - -TaskControlBlock.prototype.setRunning = function () { - this.state = STATE_RUNNING; -}; - -TaskControlBlock.prototype.markAsNotHeld = function () { - this.state = this.state & STATE_NOT_HELD; -}; - -TaskControlBlock.prototype.markAsHeld = function () { - this.state = this.state | STATE_HELD; -}; - -TaskControlBlock.prototype.isHeldOrSuspended = function () { - return (this.state & STATE_HELD) != 0 || (this.state == STATE_SUSPENDED); -}; - -TaskControlBlock.prototype.markAsSuspended = function () { - this.state = this.state | STATE_SUSPENDED; -}; - -TaskControlBlock.prototype.markAsRunnable = function () { - this.state = this.state | STATE_RUNNABLE; -}; - -/** - * Runs this task, if it is ready to be run, and returns the next task to run. - */ -TaskControlBlock.prototype.run = function () { - var packet; - if (this.state == STATE_SUSPENDED_RUNNABLE) { - packet = this.queue; - this.queue = packet.link; - if (this.queue == null) { - this.state = STATE_RUNNING; - } else { - this.state = STATE_RUNNABLE; - } - } else { - packet = null; - } - return this.task.run(packet); -}; - -/** - * Adds a packet to the worklist of this block's task, marks this as runnable if - * necessary, and returns the next runnable object to run (the one - * with the highest priority). - */ -TaskControlBlock.prototype.checkPriorityAdd = function (task, packet) { - if (this.queue == null) { - this.queue = packet; - this.markAsRunnable(); - if (this.priority > task.priority) return this; - } else { - this.queue = packet.addTo(this.queue); - } - return task; -}; - -TaskControlBlock.prototype.toString = function () { - return "tcb { " + this.task + "@" + this.state + " }"; -}; - -/** - * An idle task doesn't do any work itself but cycles control between the two - * device tasks. - * @param {Scheduler} scheduler the scheduler that manages this task - * @param {int} v1 a seed value that controls how the device tasks are scheduled - * @param {int} count the number of times this task should be scheduled - * @constructor - */ -function IdleTask(scheduler, v1, count) { - this.scheduler = scheduler; - this.v1 = v1; - this.count = count; -} - -IdleTask.prototype.run = function (packet) { - this.count--; - if (this.count == 0) return this.scheduler.holdCurrent(); - if ((this.v1 & 1) == 0) { - this.v1 = this.v1 >> 1; - return this.scheduler.release(ID_DEVICE_A); - } else { - this.v1 = (this.v1 >> 1) ^ 0xD008; - return this.scheduler.release(ID_DEVICE_B); - } -}; - -IdleTask.prototype.toString = function () { - return "IdleTask" -}; - -/** - * A task that suspends itself after each time it has been run to simulate - * waiting for data from an external device. - * @param {Scheduler} scheduler the scheduler that manages this task - * @constructor - */ -function DeviceTask(scheduler) { - this.scheduler = scheduler; - this.v1 = null; -} - -DeviceTask.prototype.run = function (packet) { - if (packet == null) { - if (this.v1 == null) return this.scheduler.suspendCurrent(); - var v = this.v1; - this.v1 = null; - return this.scheduler.queue(v); - } else { - this.v1 = packet; - return this.scheduler.holdCurrent(); - } -}; - -DeviceTask.prototype.toString = function () { - return "DeviceTask"; -}; - -/** - * A task that manipulates work packets. - * @param {Scheduler} scheduler the scheduler that manages this task - * @param {int} v1 a seed used to specify how work packets are manipulated - * @param {int} v2 another seed used to specify how work packets are manipulated - * @constructor - */ -function WorkerTask(scheduler, v1, v2) { - this.scheduler = scheduler; - this.v1 = v1; - this.v2 = v2; -} - -WorkerTask.prototype.run = function (packet) { - if (packet == null) { - return this.scheduler.suspendCurrent(); - } else { - if (this.v1 == ID_HANDLER_A) { - this.v1 = ID_HANDLER_B; - } else { - this.v1 = ID_HANDLER_A; - } - packet.id = this.v1; - packet.a1 = 0; - for (var i = 0; i < DATA_SIZE; i++) { - this.v2++; - if (this.v2 > 26) this.v2 = 1; - packet.a2[i] = this.v2; - } - return this.scheduler.queue(packet); - } -}; - -WorkerTask.prototype.toString = function () { - return "WorkerTask"; -}; - -/** - * A task that manipulates work packets and then suspends itself. - * @param {Scheduler} scheduler the scheduler that manages this task - * @constructor - */ -function HandlerTask(scheduler) { - this.scheduler = scheduler; - this.v1 = null; - this.v2 = null; -} - -HandlerTask.prototype.run = function (packet) { - if (packet != null) { - if (packet.kind == KIND_WORK) { - this.v1 = packet.addTo(this.v1); - } else { - this.v2 = packet.addTo(this.v2); - } - } - if (this.v1 != null) { - var count = this.v1.a1; - var v; - if (count < DATA_SIZE) { - if (this.v2 != null) { - v = this.v2; - this.v2 = this.v2.link; - v.a1 = this.v1.a2[count]; - this.v1.a1 = count + 1; - return this.scheduler.queue(v); - } - } else { - v = this.v1; - this.v1 = this.v1.link; - return this.scheduler.queue(v); - } - } - return this.scheduler.suspendCurrent(); -}; - -HandlerTask.prototype.toString = function () { - return "HandlerTask"; -}; - -/* --- * - * P a c k e t - * --- */ - -var DATA_SIZE = 4; - -/** - * A simple package of data that is manipulated by the tasks. The exact layout - * of the payload data carried by a packet is not importaint, and neither is the - * nature of the work performed on packets by the tasks. - * - * Besides carrying data, packets form linked lists and are hence used both as - * data and worklists. - * @param {Packet} link the tail of the linked list of packets - * @param {int} id an ID for this packet - * @param {int} kind the type of this packet - * @constructor - */ -function Packet(link, id, kind) { - this.link = link; - this.id = id; - this.kind = kind; - this.a1 = 0; - this.a2 = new Array(DATA_SIZE); -} - -/** - * Add this packet to the end of a worklist, and return the worklist. - * @param {Packet} queue the worklist to add this packet to - */ -Packet.prototype.addTo = function (queue) { - this.link = null; - if (queue == null) return this; - var peek, next = queue; - while ((peek = next.link) != null) - next = peek; - next.link = this; - return queue; -}; - -Packet.prototype.toString = function () { - return "Packet"; -}; - -for (var i = 0; i < 20000; ++i) - runRichards(); diff --git a/implementation-contributed/javascriptcore/stress/sampling-profiler-should-not-sample-beyond-stack-bounds.js b/implementation-contributed/javascriptcore/stress/sampling-profiler-should-not-sample-beyond-stack-bounds.js deleted file mode 100644 index 97274863c08..00000000000 --- a/implementation-contributed/javascriptcore/stress/sampling-profiler-should-not-sample-beyond-stack-bounds.js +++ /dev/null @@ -1,24 +0,0 @@ -//@ requireOptions("--useSamplingProfiler=true", "--useProbeOSRExit=true", "--useObjectAllocationSinking=false", "--sampleInterval=10") - -function foo(ranges) { - const CHUNK_SIZE = 95; - for (const [start, end] of ranges) { - const codePoints = []; - for (let length = 0, codePoint = start; codePoint <= end; codePoint++) { - codePoints[length++] = codePoint; - if (length === CHUNK_SIZE) { - length = 0; - codePoints.length = 0; - String.fromCodePoint(...[]); - } - } - String.fromCodePoint(...codePoints); - } -} - -for (let i=0; i<3; i++) { - let x = foo([ - [ 0, 10000 ], - [ 68000, 1114111 ] - ]); -} diff --git a/implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-before-deleting.js b/implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-before-deleting.js deleted file mode 100644 index ca9fe0d51c5..00000000000 --- a/implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-before-deleting.js +++ /dev/null @@ -1,27 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function bar() -{ - foo = 42; -} - -bar(); -bar(); -delete globalThis.foo; -$.evalScript(`const foo = 50`); - -shouldThrow(() => bar(), `TypeError: Attempted to assign to readonly property.`); diff --git a/implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-bump-counter.js b/implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-bump-counter.js deleted file mode 100644 index d1dcdd06d20..00000000000 --- a/implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-bump-counter.js +++ /dev/null @@ -1,58 +0,0 @@ -//@ runDefault("--thresholdForGlobalLexicalBindingEpoch=2") - -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} -noInline(shouldBe); - -foo1 = 1; -foo2 = 2; -function get1() { - return foo1; -} -noInline(get1); - -function get2() { - return foo2; -} -noInline(get2); - -function get1If(condition) { - if (condition) - return foo1; - return -1; -} -noInline(get1If); - -function get2If(condition) { - if (condition) - return foo2; - return -1; -} -noInline(get2If); - -for (var i = 0; i < 1e5; ++i) { - shouldBe(get1(), 1); - shouldBe(get2(), 2); - shouldBe(get1(), 1); - shouldBe(get2(), 2); - shouldBe(get1If(true), 1); - shouldBe(get2If(true), 2); - shouldBe(get1If(false), -1); - shouldBe(get2If(false), -1); -} - -$.evalScript(`const foo1 = 41;`); -$.evalScript(`const foo2 = 42;`); - -for (var i = 0; i < 1e3; ++i) { - shouldBe(get1(), 41); - shouldBe(get2(), 42); - shouldBe(get1(), 41); - shouldBe(get2(), 42); - shouldBe(get1If(false), -1); - shouldBe(get2If(false), -1); -} -shouldBe(get1If(true), 41); -shouldBe(get2If(true), 42); diff --git a/implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-even-if-it-fails.js b/implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-even-if-it-fails.js deleted file mode 100644 index 51dac811a38..00000000000 --- a/implementation-contributed/javascriptcore/stress/scope-operation-cache-global-property-even-if-it-fails.js +++ /dev/null @@ -1,23 +0,0 @@ -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function foo() { - bar = 4; -} -Object.preventExtensions(this); -foo(); -$.evalScript('const bar = 3;'); -shouldThrow(() => foo(), `TypeError: Attempted to assign to readonly property.`); diff --git a/implementation-contributed/javascriptcore/stress/simple-module.mjs b/implementation-contributed/javascriptcore/stress/simple-module.mjs deleted file mode 100644 index 2d96b58009d..00000000000 --- a/implementation-contributed/javascriptcore/stress/simple-module.mjs +++ /dev/null @@ -1,2 +0,0 @@ -if (this !== undefined) - throw new Error("this === undefined in module code"); diff --git a/implementation-contributed/javascriptcore/stress/simple-script.js b/implementation-contributed/javascriptcore/stress/simple-script.js deleted file mode 100644 index 6f204526618..00000000000 --- a/implementation-contributed/javascriptcore/stress/simple-script.js +++ /dev/null @@ -1,2 +0,0 @@ -if (this === undefined) - throw new Error("this !== undefined in script code"); diff --git a/implementation-contributed/javascriptcore/stress/slice-array-storage-with-holes.js b/implementation-contributed/javascriptcore/stress/slice-array-storage-with-holes.js deleted file mode 100644 index 3d322fa417f..00000000000 --- a/implementation-contributed/javascriptcore/stress/slice-array-storage-with-holes.js +++ /dev/null @@ -1,11 +0,0 @@ -function main() { - let arr = [1]; - - arr.length = 0x100000; - arr.splice(0, 0x11); - - arr.length = 0xfffffff0; - arr.splice(0xfffffff0, 0, 1); -} - -main(); diff --git a/implementation-contributed/javascriptcore/stress/splay-flash-access-1ms.js b/implementation-contributed/javascriptcore/stress/splay-flash-access-1ms.js deleted file mode 100644 index aa676ee7c05..00000000000 --- a/implementation-contributed/javascriptcore/stress/splay-flash-access-1ms.js +++ /dev/null @@ -1,904 +0,0 @@ -//@ skip if $memoryLimited -//@ skip if $architecture == "x86" -//@ runNoisyTestDefault -//@ runNoisyTestNoCJIT - -// Copyright 2013 the V8 project authors. All rights reserved. -// Copyright (C) 2015 Apple Inc. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Performance.now is used in latency benchmarks, the fallback is Date.now. -var performance = performance || {}; -performance.now = (function() { - return performance.now || - performance.mozNow || - performance.msNow || - performance.oNow || - performance.webkitNow || - Date.now; -})(); - -// Simple framework for running the benchmark suites and -// computing a score based on the timing measurements. - - -// A benchmark has a name (string) and a function that will be run to -// do the performance measurement. The optional setup and tearDown -// arguments are functions that will be invoked before and after -// running the benchmark, but the running time of these functions will -// not be accounted for in the benchmark score. -function Benchmark(name, doWarmup, doDeterministic, run, setup, tearDown, latencyResult, minIterations) { - this.name = name; - this.doWarmup = doWarmup; - this.doDeterministic = doDeterministic; - this.run = run; - this.Setup = setup ? setup : function() { }; - this.TearDown = tearDown ? tearDown : function() { }; - this.latencyResult = latencyResult ? latencyResult : null; - this.minIterations = minIterations ? minIterations : 32; -} - - -// Benchmark results hold the benchmark and the measured time used to -// run the benchmark. The benchmark score is computed later once a -// full benchmark suite has run to completion. If latency is set to 0 -// then there is no latency score for this benchmark. -function BenchmarkResult(benchmark, time, latency) { - this.benchmark = benchmark; - this.time = time; - this.latency = latency; -} - - -// Automatically convert results to numbers. Used by the geometric -// mean computation. -BenchmarkResult.prototype.valueOf = function() { - return this.time; -} - - -// Suites of benchmarks consist of a name and the set of benchmarks in -// addition to the reference timing that the final score will be based -// on. This way, all scores are relative to a reference run and higher -// scores implies better performance. -function BenchmarkSuite(name, reference, benchmarks) { - this.name = name; - this.reference = reference; - this.benchmarks = benchmarks; - BenchmarkSuite.suites.push(this); -} - - -// Keep track of all declared benchmark suites. -BenchmarkSuite.suites = []; - -// Scores are not comparable across versions. Bump the version if -// you're making changes that will affect that scores, e.g. if you add -// a new benchmark or change an existing one. -BenchmarkSuite.version = '9'; - -// Override the alert function to throw an exception instead. -alert = function(s) { - throw "Alert called with argument: " + s; -}; - - -// To make the benchmark results predictable, we replace Math.random -// with a 100% deterministic alternative. -BenchmarkSuite.ResetRNG = function() { - Math.random = (function() { - var seed = 49734321; - return function() { - // Robert Jenkins' 32 bit integer hash function. - seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff; - seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff; - seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff; - seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff; - seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff; - seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff; - return (seed & 0xfffffff) / 0x10000000; - }; - })(); -} - - -// Runs all registered benchmark suites and optionally yields between -// each individual benchmark to avoid running for too long in the -// context of browsers. Once done, the final score is reported to the -// runner. -BenchmarkSuite.RunSuites = function(runner) { - var continuation = null; - var suites = BenchmarkSuite.suites; - var length = suites.length; - BenchmarkSuite.scores = []; - var index = 0; - function RunStep() { - while (continuation || index < length) { - if (continuation) { - continuation = continuation(); - } else { - var suite = suites[index++]; - if (runner.NotifyStart) runner.NotifyStart(suite.name); - continuation = suite.RunStep(runner); - } - if (continuation && typeof window != 'undefined' && window.setTimeout) { - window.setTimeout(RunStep, 25); - return; - } - } - - // show final result - if (runner.NotifyScore) { - var score = BenchmarkSuite.GeometricMean(BenchmarkSuite.scores); - var formatted = BenchmarkSuite.FormatScore(100 * score); - runner.NotifyScore(formatted); - } - } - RunStep(); -} - - -// Counts the total number of registered benchmarks. Useful for -// showing progress as a percentage. -BenchmarkSuite.CountBenchmarks = function() { - var result = 0; - var suites = BenchmarkSuite.suites; - for (var i = 0; i < suites.length; i++) { - result += suites[i].benchmarks.length; - } - return result; -} - - -// Computes the geometric mean of a set of numbers. -BenchmarkSuite.GeometricMean = function(numbers) { - var log = 0; - for (var i = 0; i < numbers.length; i++) { - log += Math.log(numbers[i]); - } - return Math.pow(Math.E, log / numbers.length); -} - - -// Computes the geometric mean of a set of throughput time measurements. -BenchmarkSuite.GeometricMeanTime = function(measurements) { - var log = 0; - for (var i = 0; i < measurements.length; i++) { - log += Math.log(measurements[i].time); - } - return Math.pow(Math.E, log / measurements.length); -} - - -// Computes the average of the worst samples. For example, if percentile is 99, this will report the -// average of the worst 1% of the samples. -BenchmarkSuite.AverageAbovePercentile = function(numbers, percentile) { - // Don't change the original array. - numbers = numbers.slice(); - - // Sort in ascending order. - numbers.sort(function(a, b) { return a - b; }); - - // Now the elements we want are at the end. Keep removing them until the array size shrinks too much. - // Examples assuming percentile = 99: - // - // - numbers.length starts at 100: we will remove just the worst entry and then not remove anymore, - // since then numbers.length / originalLength = 0.99. - // - // - numbers.length starts at 1000: we will remove the ten worst. - // - // - numbers.length starts at 10: we will remove just the worst. - var numbersWeWant = []; - var originalLength = numbers.length; - while (numbers.length / originalLength > percentile / 100) - numbersWeWant.push(numbers.pop()); - - var sum = 0; - for (var i = 0; i < numbersWeWant.length; ++i) - sum += numbersWeWant[i]; - - var result = sum / numbersWeWant.length; - - // Do a sanity check. - if (numbers.length && result < numbers[numbers.length - 1]) { - throw "Sanity check fail: the worst case result is " + result + - " but we didn't take into account " + numbers; - } - - return result; -} - - -// Computes the geometric mean of a set of latency measurements. -BenchmarkSuite.GeometricMeanLatency = function(measurements) { - var log = 0; - var hasLatencyResult = false; - for (var i = 0; i < measurements.length; i++) { - if (measurements[i].latency != 0) { - log += Math.log(measurements[i].latency); - hasLatencyResult = true; - } - } - if (hasLatencyResult) { - return Math.pow(Math.E, log / measurements.length); - } else { - return 0; - } -} - - -// Converts a score value to a string with at least three significant -// digits. -BenchmarkSuite.FormatScore = function(value) { - if (value > 100) { - return value.toFixed(0); - } else { - return value.toPrecision(3); - } -} - -// Notifies the runner that we're done running a single benchmark in -// the benchmark suite. This can be useful to report progress. -BenchmarkSuite.prototype.NotifyStep = function(result) { - this.results.push(result); - if (this.runner.NotifyStep) this.runner.NotifyStep(result.benchmark.name); -} - - -// Notifies the runner that we're done with running a suite and that -// we have a result which can be reported to the user if needed. -BenchmarkSuite.prototype.NotifyResult = function() { - var mean = BenchmarkSuite.GeometricMeanTime(this.results); - var score = this.reference[0] / mean; - BenchmarkSuite.scores.push(score); - if (this.runner.NotifyResult) { - var formatted = BenchmarkSuite.FormatScore(100 * score); - this.runner.NotifyResult(this.name, formatted); - } - if (this.reference.length == 2) { - var meanLatency = BenchmarkSuite.GeometricMeanLatency(this.results); - if (meanLatency != 0) { - var scoreLatency = this.reference[1] / meanLatency; - BenchmarkSuite.scores.push(scoreLatency); - if (this.runner.NotifyResult) { - var formattedLatency = BenchmarkSuite.FormatScore(100 * scoreLatency) - this.runner.NotifyResult(this.name + "Latency", formattedLatency); - } - } - } -} - - -// Notifies the runner that running a benchmark resulted in an error. -BenchmarkSuite.prototype.NotifyError = function(error) { - if (this.runner.NotifyError) { - this.runner.NotifyError(this.name, error); - } - if (this.runner.NotifyStep) { - this.runner.NotifyStep(this.name); - } -} - - -// Runs a single benchmark for at least a second and computes the -// average time it takes to run a single iteration. -BenchmarkSuite.prototype.RunSingleBenchmark = function(benchmark, data) { - function Measure(data) { - var elapsed = 0; - var start = new Date(); - - // Run either for 1 second or for the number of iterations specified - // by minIterations, depending on the config flag doDeterministic. - for (var i = 0; (benchmark.doDeterministic ? - i= keys[i + 1]) { - throw new Error("Splay tree not sorted"); - } - } -} - - -function SplayRun() { - // Replace a few nodes in the splay tree. - for (var i = 0; i < kSplayTreeModifications; i++) { - var key = InsertNewNode(); - var greatest = splayTree.findGreatestLessThan(key); - if (greatest == null) splayTree.remove(key); - else splayTree.remove(greatest.key); - } - SplayUpdateStats(performance.now()); -} - - -/** - * Constructs a Splay tree. A splay tree is a self-balancing binary - * search tree with the additional property that recently accessed - * elements are quick to access again. It performs basic operations - * such as insertion, look-up and removal in O(log(n)) amortized time. - * - * @constructor - */ -function SplayTree() { -}; - - -/** - * Pointer to the root node of the tree. - * - * @type {SplayTree.Node} - * @private - */ -SplayTree.prototype.root_ = null; - - -/** - * @return {boolean} Whether the tree is empty. - */ -SplayTree.prototype.isEmpty = function() { - return !this.root_; -}; - - -/** - * Inserts a node into the tree with the specified key and value if - * the tree does not already contain a node with the specified key. If - * the value is inserted, it becomes the root of the tree. - * - * @param {number} key Key to insert into the tree. - * @param {*} value Value to insert into the tree. - */ -SplayTree.prototype.insert = function(key, value) { - if (this.isEmpty()) { - this.root_ = new SplayTree.Node(key, value); - return; - } - // Splay on the key to move the last node on the search path for - // the key to the root of the tree. - this.splay_(key); - if (this.root_.key == key) { - return; - } - var node = new SplayTree.Node(key, value); - if (key > this.root_.key) { - node.left = this.root_; - node.right = this.root_.right; - this.root_.right = null; - } else { - node.right = this.root_; - node.left = this.root_.left; - this.root_.left = null; - } - this.root_ = node; -}; - - -/** - * Removes a node with the specified key from the tree if the tree - * contains a node with this key. The removed node is returned. If the - * key is not found, an exception is thrown. - * - * @param {number} key Key to find and remove from the tree. - * @return {SplayTree.Node} The removed node. - */ -SplayTree.prototype.remove = function(key) { - if (this.isEmpty()) { - throw Error('Key not found: ' + key); - } - this.splay_(key); - if (this.root_.key != key) { - throw Error('Key not found: ' + key); - } - var removed = this.root_; - if (!this.root_.left) { - this.root_ = this.root_.right; - } else { - var right = this.root_.right; - this.root_ = this.root_.left; - // Splay to make sure that the new root has an empty right child. - this.splay_(key); - // Insert the original right child as the right child of the new - // root. - this.root_.right = right; - } - return removed; -}; - - -/** - * Returns the node having the specified key or null if the tree doesn't contain - * a node with the specified key. - * - * @param {number} key Key to find in the tree. - * @return {SplayTree.Node} Node having the specified key. - */ -SplayTree.prototype.find = function(key) { - if (this.isEmpty()) { - return null; - } - this.splay_(key); - return this.root_.key == key ? this.root_ : null; -}; - - -/** - * @return {SplayTree.Node} Node having the maximum key value. - */ -SplayTree.prototype.findMax = function(opt_startNode) { - if (this.isEmpty()) { - return null; - } - var current = opt_startNode || this.root_; - while (current.right) { - current = current.right; - } - return current; -}; - - -/** - * @return {SplayTree.Node} Node having the maximum key value that - * is less than the specified key value. - */ -SplayTree.prototype.findGreatestLessThan = function(key) { - if (this.isEmpty()) { - return null; - } - // Splay on the key to move the node with the given key or the last - // node on the search path to the top of the tree. - this.splay_(key); - // Now the result is either the root node or the greatest node in - // the left subtree. - if (this.root_.key < key) { - return this.root_; - } else if (this.root_.left) { - return this.findMax(this.root_.left); - } else { - return null; - } -}; - - -/** - * @return {Array<*>} An array containing all the keys of tree's nodes. - */ -SplayTree.prototype.exportKeys = function() { - var result = []; - if (!this.isEmpty()) { - this.root_.traverse_(function(node) { result.push(node.key); }); - } - return result; -}; - - -/** - * Perform the splay operation for the given key. Moves the node with - * the given key to the top of the tree. If no node has the given - * key, the last node on the search path is moved to the top of the - * tree. This is the simplified top-down splaying algorithm from: - * "Self-adjusting Binary Search Trees" by Sleator and Tarjan - * - * @param {number} key Key to splay the tree on. - * @private - */ -SplayTree.prototype.splay_ = function(key) { - if (this.isEmpty()) { - return; - } - // Create a dummy node. The use of the dummy node is a bit - // counter-intuitive: The right child of the dummy node will hold - // the L tree of the algorithm. The left child of the dummy node - // will hold the R tree of the algorithm. Using a dummy node, left - // and right will always be nodes and we avoid special cases. - var dummy, left, right; - dummy = left = right = new SplayTree.Node(null, null); - var current = this.root_; - while (true) { - if (key < current.key) { - if (!current.left) { - break; - } - if (key < current.left.key) { - // Rotate right. - var tmp = current.left; - current.left = tmp.right; - tmp.right = current; - current = tmp; - if (!current.left) { - break; - } - } - // Link right. - right.left = current; - right = current; - current = current.left; - } else if (key > current.key) { - if (!current.right) { - break; - } - if (key > current.right.key) { - // Rotate left. - var tmp = current.right; - current.right = tmp.left; - tmp.left = current; - current = tmp; - if (!current.right) { - break; - } - } - // Link left. - left.right = current; - left = current; - current = current.right; - } else { - break; - } - } - // Assemble. - left.right = current.left; - right.left = current.right; - current.left = dummy.right; - current.right = dummy.left; - this.root_ = current; -}; - - -/** - * Constructs a Splay tree node. - * - * @param {number} key Key. - * @param {*} value Value. - */ -SplayTree.Node = function(key, value) { - this.key = key; - this.value = value; -}; - - -/** - * @type {SplayTree.Node} - */ -SplayTree.Node.prototype.left = null; - - -/** - * @type {SplayTree.Node} - */ -SplayTree.Node.prototype.right = null; - - -/** - * Performs an ordered traversal of the subtree starting at - * this SplayTree.Node. - * - * @param {function(SplayTree.Node)} f Visitor function. - * @private - */ -SplayTree.Node.prototype.traverse_ = function(f) { - var current = this; - while (current) { - var left = current.left; - if (left) left.traverse_(f); - f(current); - current = current.right; - } -}; -function jscSetUp() { - SplaySetup(); -} - -function jscTearDown() { - SplayTearDown(); -} - -function jscRun() { - SplayRun(); -} - -jscSetUp(); -var __before = preciseTime(); -var times = []; -for (var i = 0; i < 2000; ++i) { - var _before = preciseTime(); - jscRun(); - var _after = preciseTime(); - times.push(_after - _before); - flashHeapAccess(1); -} -var __after = preciseTime(); -jscTearDown(); - -function averageAbovePercentile(numbers, percentile) { - // Don't change the original array. - numbers = numbers.slice(); - - // Sort in ascending order. - numbers.sort(function(a, b) { return a - b; }); - - // Now the elements we want are at the end. Keep removing them until the array size shrinks too much. - // Examples assuming percentile = 99: - // - // - numbers.length starts at 100: we will remove just the worst entry and then not remove anymore, - // since then numbers.length / originalLength = 0.99. - // - // - numbers.length starts at 1000: we will remove the ten worst. - // - // - numbers.length starts at 10: we will remove just the worst. - var numbersWeWant = []; - var originalLength = numbers.length; - while (numbers.length / originalLength > percentile / 100) - numbersWeWant.push(numbers.pop()); - - var sum = 0; - for (var i = 0; i < numbersWeWant.length; ++i) - sum += numbersWeWant[i]; - - var result = sum / numbersWeWant.length; - - // Do a sanity check. - if (numbers.length && result < numbers[numbers.length - 1]) { - throw "Sanity check fail: the worst case result is " + result + - " but we didn't take into account " + numbers; - } - - return result; -} - -print("That took " + (__after - __before) * 1000 + " ms."); - -function printPercentile(percentile) -{ - print("Above " + percentile + "%: " + averageAbovePercentile(times, percentile) * 1000 + " ms."); -} - -printPercentile(99.9); -printPercentile(99.5); -printPercentile(99); -printPercentile(97.5); -printPercentile(95); -printPercentile(90); -printPercentile(75); -printPercentile(50); -printPercentile(0); - -gc(); diff --git a/implementation-contributed/javascriptcore/stress/splice-should-zero-property-storage-when-rebalancing.js b/implementation-contributed/javascriptcore/stress/splice-should-zero-property-storage-when-rebalancing.js deleted file mode 100644 index e92dd79e81d..00000000000 --- a/implementation-contributed/javascriptcore/stress/splice-should-zero-property-storage-when-rebalancing.js +++ /dev/null @@ -1,8 +0,0 @@ -var arr = [4, 5, 6]; -arr.push(10); -arr.pop(); -Object.defineProperty(arr, "foo", { }); - -arr.shift(); -arr.splice(0, 0, 101, 102); -Object.defineProperty(arr, "bar", { }); diff --git a/implementation-contributed/javascriptcore/stress/spread-forward-call-varargs-stack-overflow.js b/implementation-contributed/javascriptcore/stress/spread-forward-call-varargs-stack-overflow.js deleted file mode 100644 index 2b76c8740e0..00000000000 --- a/implementation-contributed/javascriptcore/stress/spread-forward-call-varargs-stack-overflow.js +++ /dev/null @@ -1,60 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if ["arm", "mips", "x86"].include?($architecture) -function assert(b) { - if (!b) - throw new Error("Bad assertion"); -} -noInline(assert); - -function identity(a) { return a; } -noInline(identity); - -function bar(...args) { - return args; -} -noInline(bar); - -function foo(a, ...args) { - let arg = identity(a); - try { - let r = bar(...args, ...args); - return r; - } catch(e) { - return arg; - } -} -noInline(foo); - -for (let i = 0; i < 40000; i++) { - let args = []; - for (let i = 0; i < 400; i++) { - args.push(i); - } - - let o = {}; - let r = foo(o, ...args); - let i = 0; - for (let arg of args) { - assert(r[i] === arg); - i++; - } - for (let arg of args) { - assert(r[i] === arg); - i++; - } -} - -for (let i = 0; i < 20; i++) { - let threw = false; - let o = {}; - let args = []; - let argCount = maxArguments() * (2/3); - argCount = argCount | 0; - for (let i = 0; i < argCount; i++) { - args.push(i); - } - - let r = foo(o, ...args); - assert(r === o); -} diff --git a/implementation-contributed/javascriptcore/stress/stack-overflow-frame-for-construct-arityCheck-should-use-construct-codeBlock.js b/implementation-contributed/javascriptcore/stress/stack-overflow-frame-for-construct-arityCheck-should-use-construct-codeBlock.js deleted file mode 100644 index 6c3700c2aa5..00000000000 --- a/implementation-contributed/javascriptcore/stress/stack-overflow-frame-for-construct-arityCheck-should-use-construct-codeBlock.js +++ /dev/null @@ -1,27 +0,0 @@ -//@ requireOptions("--maxPerThreadStackUsage=1572864") - -function foo(a, b, c) { - try { - throw new Error(); - } catch { - hello(); - } -}; - -function Bar(d, e) { - hello(); -} - -function hello(f) { - new Bar(0); -}; - -var exception; -try { - foo(); -} catch(e) { - exception = e; -} - -if (exception != "RangeError: Maximum call stack size exceeded.") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/string-16bit-repeat-overflow.js b/implementation-contributed/javascriptcore/stress/string-16bit-repeat-overflow.js deleted file mode 100644 index bc724fbf62b..00000000000 --- a/implementation-contributed/javascriptcore/stress/string-16bit-repeat-overflow.js +++ /dev/null @@ -1,9 +0,0 @@ -var exception; -try { - print('\ud000'.repeat(2**30)); -} catch (e) { - exception = e; -} - -if (exception != "Error: Out of memory") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/string-get-by-val-lowering.js b/implementation-contributed/javascriptcore/stress/string-get-by-val-lowering.js deleted file mode 100644 index 86933eb741a..00000000000 --- a/implementation-contributed/javascriptcore/stress/string-get-by-val-lowering.js +++ /dev/null @@ -1,17 +0,0 @@ -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} -noInline(shouldBe); - -function test(value) -{ - return value[2]; -} -noInline(test); - -for (var i = 0; i < 1e4; ++i) { - shouldBe(test("Hello"), 'l'); - shouldBe(test("World"), 'r'); - shouldBe(test("Nice"), 'c'); -} diff --git a/implementation-contributed/javascriptcore/stress/string-overflow-createError.js b/implementation-contributed/javascriptcore/stress/string-overflow-createError.js deleted file mode 100644 index 97ab1fa683e..00000000000 --- a/implementation-contributed/javascriptcore/stress/string-overflow-createError.js +++ /dev/null @@ -1,12 +0,0 @@ -//@ skip if $memoryLimited -var exception; -try { - bar = '2.3023e-320' - foo = bar.padEnd(2147483644, 1); - foo(true, 1).value; -} catch (e) { - exception = e; -} - -if (exception != "Error: Out of memory") - throw "FAILED"; diff --git a/implementation-contributed/javascriptcore/stress/string-to-string-error.js b/implementation-contributed/javascriptcore/stress/string-to-string-error.js deleted file mode 100644 index a99dbcef1d7..00000000000 --- a/implementation-contributed/javascriptcore/stress/string-to-string-error.js +++ /dev/null @@ -1,46 +0,0 @@ -// Reviewed -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} - -var toString = String.prototype.toString; -function test(string) -{ - return toString.call(string); -} -noInline(test); - -var object = {}; -var symbol = Symbol("Cocoa"); -for (var i = 0; i < 3e3; ++i) { - shouldThrow(() => test(object), `TypeError: Type error`); - shouldThrow(() => test(false), `TypeError: Type error`); - shouldThrow(() => test(true), `TypeError: Type error`); - shouldThrow(() => test(42), `TypeError: Type error`); - shouldThrow(() => test(null), `TypeError: Type error`); - shouldThrow(() => test(undefined), `TypeError: Type error`); - shouldThrow(() => test(symbol), `TypeError: Type error`); -} - -var string = "Hello"; -var stringObject = new String(string); -for (var i = 0; i < 1e2; ++i) { - shouldBe(test(string), string); - shouldBe(test(stringObject), string); -} diff --git a/implementation-contributed/javascriptcore/stress/string-value-of-error.js b/implementation-contributed/javascriptcore/stress/string-value-of-error.js deleted file mode 100644 index eec1f70cd21..00000000000 --- a/implementation-contributed/javascriptcore/stress/string-value-of-error.js +++ /dev/null @@ -1,46 +0,0 @@ -// Reviewed -function shouldBe(actual, expected) { - if (actual !== expected) - throw new Error('bad value: ' + actual); -} - -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} - -var valueOf = String.prototype.valueOf; -function test(string) -{ - return valueOf.call(string); -} -noInline(test); - -var object = {}; -var symbol = Symbol("Cocoa"); -for (var i = 0; i < 3e3; ++i) { - shouldThrow(() => test(object), `TypeError: Type error`); - shouldThrow(() => test(false), `TypeError: Type error`); - shouldThrow(() => test(true), `TypeError: Type error`); - shouldThrow(() => test(42), `TypeError: Type error`); - shouldThrow(() => test(null), `TypeError: Type error`); - shouldThrow(() => test(undefined), `TypeError: Type error`); - shouldThrow(() => test(symbol), `TypeError: Type error`); -} - -var string = "Hello"; -var stringObject = new String(string); -for (var i = 0; i < 1e2; ++i) { - shouldBe(test(string), string); - shouldBe(test(stringObject), string); -} diff --git a/implementation-contributed/javascriptcore/stress/symbol-description-identity.js b/implementation-contributed/javascriptcore/stress/symbol-description-identity.js deleted file mode 100644 index 3f0be68fb4b..00000000000 --- a/implementation-contributed/javascriptcore/stress/symbol-description-identity.js +++ /dev/null @@ -1,21 +0,0 @@ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} -noInline(shouldBe); - -function test(description) -{ - return Symbol(description); -} -noInline(test); - -var set = new Set; -for (var i = 0; i < 1e4; ++i) { - var description = String(i); - var symbol = test(description); - set.add(symbol); - shouldBe(set.size, i + 1); - shouldBe(symbol.description, description); -} diff --git a/implementation-contributed/javascriptcore/stress/symbol-identity.js b/implementation-contributed/javascriptcore/stress/symbol-identity.js deleted file mode 100644 index 14da8ba5bba..00000000000 --- a/implementation-contributed/javascriptcore/stress/symbol-identity.js +++ /dev/null @@ -1,20 +0,0 @@ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} -noInline(shouldBe); - -function test() -{ - return Symbol(); -} -noInline(test); - -var set = new Set; -for (var i = 0; i < 1e4; ++i) { - var symbol = test(); - set.add(symbol); - shouldBe(set.size, i + 1); - shouldBe(symbol.description, undefined); -} diff --git a/implementation-contributed/javascriptcore/stress/symbol-with-description-throw-error.js b/implementation-contributed/javascriptcore/stress/symbol-with-description-throw-error.js deleted file mode 100644 index 45b2f51883a..00000000000 --- a/implementation-contributed/javascriptcore/stress/symbol-with-description-throw-error.js +++ /dev/null @@ -1,52 +0,0 @@ -function shouldBe(actual, expected) -{ - if (actual !== expected) - throw new Error('bad value: ' + actual); -} -noInline(shouldBe); - -function shouldThrow(func, errorMessage) { - var errorThrown = false; - var error = null; - try { - func(); - } catch (e) { - errorThrown = true; - error = e; - } - if (!errorThrown) - throw new Error('not thrown'); - if (String(error) !== errorMessage) - throw new Error(`bad error: ${String(error)}`); -} -noInline(shouldThrow); - -function test(description) -{ - return Symbol(description); -} -noInline(test); - -var count = 0; -var flag = false; -var object = { - toString() - { - count++; - if (flag) { - throw new Error("out"); - } - return "Cocoa"; - } -}; - -for (var i = 0; i < 1e4; ++i) { - shouldBe(test(object).description, "Cocoa"); - shouldBe(count, i + 1); -} -flag = true; - -shouldThrow(() => { - shouldBe(test(object).description, "Cocoa"); - shouldBe(count, 1e4 + 1); -}, `Error: out`); diff --git a/implementation-contributed/javascriptcore/stress/tailCallForwardArguments.js b/implementation-contributed/javascriptcore/stress/tailCallForwardArguments.js deleted file mode 100644 index 69725525d67..00000000000 --- a/implementation-contributed/javascriptcore/stress/tailCallForwardArguments.js +++ /dev/null @@ -1,165 +0,0 @@ -//@ skip if $architecture == "x86" - -var createBuiltin = $vm.createBuiltin; - -// This is pretty bad but I need a private name. -var putFuncToPrivateName = createBuiltin(`(function (func) { @arrayIteratorIsDone = func })`) -putFuncToPrivateName(function (a,b) { return b; }) - -function createTailCallForwardingFuncWith(body, thisValue) { - return createBuiltin(`(function (a) { - "use strict"; - - ${body} - - return @tailCallForwardArguments(@arrayIteratorIsDone, ${thisValue}); - })`); -} - -var foo = createTailCallForwardingFuncWith("", "@undefined"); - -function baz() { - return foo.call(true, 7); -} -noInline(baz); - - - -var fooNoInline = createTailCallForwardingFuncWith("", "@undefined"); -noInline(foo); - -for (let i = 0; i < 100000; i++) { - if (baz.call() !== undefined) - throw new Error(i); - if (fooNoInline.call(undefined, 3) !== undefined) - throw new Error(i); -} - -putFuncToPrivateName(function () { "use strict"; return { thisValue: this, argumentsValue: arguments}; }); -var foo2 = createTailCallForwardingFuncWith("", "this"); -var fooNI2 = createTailCallForwardingFuncWith("", "this"); -noInline(fooNI2); - -function baz2() { - return foo2.call(true, 7); -} -noInline(baz2); - -for (let i = 0; i < 100000; i++) { - let result = foo2.call(true, 7); - if (result.thisValue !== true || result.argumentsValue.length !== 1 || result.argumentsValue[0] !== 7) - throw new Error(i); - result = baz2.call(); - if (result.thisValue !== true || result.argumentsValue.length !== 1 || result.argumentsValue[0] !== 7) - throw new Error(i); - result = fooNI2.call(true, 7); - if (result.thisValue !== true || result.argumentsValue.length !== 1 || result.argumentsValue[0] !== 7) - throw new Error(i); -} - -putFuncToPrivateName(function () { "use strict"; return this; }); -var foo3 = createTailCallForwardingFuncWith("", "{ thisValue: this, otherValue: 'hello'} "); -var fooNI3 = createTailCallForwardingFuncWith("", "{ thisValue: this, otherValue: 'hello'} "); -noInline(fooNI3); -function baz3() { - return foo3.call(true, 7); -} -noInline(baz3); - -for (let i = 0; i < 100000; i++) { - let result = foo3.call(true, 7); - if (result.thisValue !== true) - throw new Error(i); - result = baz3.call(); - if (result.thisValue !== true) - throw new Error(i); - result = fooNI3.call(true, 7); - if (result.thisValue !== true) - throw new Error(i); -} - - -putFuncToPrivateName(function () { "use strict"; return this; }); -let bodyText = ` -for (let i = 0; i < 100; i++) { - if (a + i === 100) - return a; -} -`; -var foo4 = createTailCallForwardingFuncWith(bodyText, "{ thisValue: this, otherValue: 'hello'} "); -var fooNI4 = createTailCallForwardingFuncWith(bodyText, "{ thisValue: this, otherValue: 'hello'} "); -noInline(fooNI4); -function baz4() { - return foo4.call(true, 0); -} -noInline(baz4); - -for (let i = 0; i < 100000; i++) { - let result = foo4.call(true, 0); - if (result.thisValue !== true || result.otherValue !== "hello") - throw new Error(i); - result = baz4.call(); - if (result.thisValue !== true || result.otherValue !== "hello") - throw new Error(i); - result = fooNI4.call(true, 0); - if (result.thisValue !== true || result.otherValue !== "hello") - throw new Error(i); - result = fooNI4.call(true, 1); - if (result !== 1) - throw new Error(i); - result = fooNI4.call(true, ""); - if (result.thisValue !== true || result.otherValue !== "hello") - throw new Error(i); -} - -var testFunc = function () { "use strict"; return this; } -noInline(testFunc); -putFuncToPrivateName(testFunc); - -var foo5 = createTailCallForwardingFuncWith(bodyText, "{ thisValue: this, otherValue: 'hello'} "); -var fooNI5 = createTailCallForwardingFuncWith(bodyText, "{ thisValue: this, otherValue: 'hello'} "); -noInline(fooNI5); -function baz5() { - return foo5.call(true, 0); -} -noInline(baz5); - -for (let i = 0; i < 100000; i++) { - let result = foo5.call(true, 0); - if (result.thisValue !== true || result.otherValue !== "hello") - throw new Error(i); - result = baz5.call(); - if (result.thisValue !== true || result.otherValue !== "hello") - throw new Error(i); - result = fooNI5.call(true, 0); - if (result.thisValue !== true || result.otherValue !== "hello") - throw new Error(i); - result = fooNI5.call(true, 1); - if (result !== 1) - throw new Error(i); - result = fooNI5.call(true, ""); - if (result.thisValue !== true || result.otherValue !== "hello") - throw new Error(i); -} - -putFuncToPrivateName(function() { return arguments; }); -var foo6 = createTailCallForwardingFuncWith(bodyText, "{ thisValue: this, otherValue: 'hello'} "); -function baz6() { - "use strict" - return foo6.apply(this, arguments); -} -noInline(baz6); - -function arrayEq(a, b) { - if (a.length !== b.length) - throw new Error(); - for (let i = 0; i < a.length; i++) { - if (a[i] !== b[i]) - throw new Error(); - } -} -let args = ["a", {}, [], Symbol(), 1, 1.234, undefined, null]; -for (let i = 0; i < 100000; i++) { - let result = baz6.apply(undefined, args); - arrayEq(result, args); -} diff --git a/implementation-contributed/javascriptcore/stress/to-this-omission-with-different-strict-modes.js b/implementation-contributed/javascriptcore/stress/to-this-omission-with-different-strict-modes.js deleted file mode 100644 index 2024daca194..00000000000 --- a/implementation-contributed/javascriptcore/stress/to-this-omission-with-different-strict-modes.js +++ /dev/null @@ -1,10 +0,0 @@ -function thisA() { - return this.a -} -function thisAStrictWrapper() { - 'use strict'; - thisA.apply(this); -} -let x = false; -for (let j=0; j<1e4; j++) - thisAStrictWrapper.call(x); diff --git a/implementation-contributed/javascriptcore/stress/try-get-by-id-should-spill-registers-dfg.js b/implementation-contributed/javascriptcore/stress/try-get-by-id-should-spill-registers-dfg.js deleted file mode 100644 index d0e57f02701..00000000000 --- a/implementation-contributed/javascriptcore/stress/try-get-by-id-should-spill-registers-dfg.js +++ /dev/null @@ -1,12 +0,0 @@ -var createBuiltin = $vm.createBuiltin; - -let f = createBuiltin(`(function (arg) { - let r = @tryGetById(arg, "prototype"); - if (arg !== true) throw "Bad clobber of arg"; - return r; -})`); -noInline(f); - -for (let i = 0; i < 10000; i++) { - f(true); -} diff --git a/implementation-contributed/javascriptcore/stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js b/implementation-contributed/javascriptcore/stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js deleted file mode 100644 index 1765bc979be..00000000000 --- a/implementation-contributed/javascriptcore/stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js +++ /dev/null @@ -1,53 +0,0 @@ -//@ skip if not $jitTests - -function __isPropertyOfType(obj, name, type) { - desc = Object.getOwnPropertyDescriptor(obj, name) - return typeof type === 'undefined' || typeof desc.value === type; -} -function __getProperties(obj, type) { - let properties = []; - for (let name of Object.getOwnPropertyNames(obj)) { - if (__isPropertyOfType(obj, name, type)) properties.push(name); - } - let proto = Object.getPrototypeOf(obj); - while (proto && proto != Object.prototype) { - Object.getOwnPropertyNames(proto).forEach(name => { - }); - proto = Object.getPrototypeOf(proto); - } - return properties; -} -function* __getObjects(root = this, level = 0) { - if (level > 4) return; - let obj_names = __getProperties(root, 'object'); - for (let obj_name of obj_names) { - let obj = root[obj_name]; - yield* __getObjects(obj, level + 1); - } -} -function __getRandomObject() { - for (let obj of __getObjects()) { - } -} -var theClass = class { - constructor() { - if (242487 != null && typeof __getRandomObject() == "object") try { - } catch (e) {} - } -}; -var childClass = class Class extends theClass { - constructor() { - var arrow = () => { - try { - super(); - } catch (e) {} - this.idValue - }; - arrow()()(); - } -}; -for (var counter = 0; counter < 1000; counter++) { - try { - new childClass(); - } catch (e) {} -} diff --git a/implementation-contributed/javascriptcore/stress/type-for-get-by-val-can-be-widen-after-ai.js b/implementation-contributed/javascriptcore/stress/type-for-get-by-val-can-be-widen-after-ai.js deleted file mode 100644 index 94818b7f9d7..00000000000 --- a/implementation-contributed/javascriptcore/stress/type-for-get-by-val-can-be-widen-after-ai.js +++ /dev/null @@ -1,25 +0,0 @@ -//@ runDefault("--jitPolicyScale=0") -// Run with for i in {1..1000}; do echo $i && VM=/path/to/WebKit/WebKitBuild/Debug/ && DYLD_FRAMEWORK_PATH=$VM $VM/jsc --useDollarVM=1 --jitPolicyScale=0 type-for-get-by-val-can-be-widen-after-ai.js ; done - -function Hello(y) { - this.y = y; - this.x = foo(this.y); -} -function foo(z) { - try { - for (var i = 0; i < 1; i++) { - z[i]; - } - } catch { - } -} -new Hello('a'); -new Hello('a'); -for (let i = 0; i < 100; ++i) { - new Hello(); -} - -// Busy loop to let the crash reporter have a chance to capture the crash log for the Compiler thread. -for (let i = 0; i < 1000000; ++i) { - $vm.ftlTrue(); -} diff --git a/implementation-contributed/javascriptcore/stress/type-profiler-log-should-defer-pending-exceptions.js b/implementation-contributed/javascriptcore/stress/type-profiler-log-should-defer-pending-exceptions.js deleted file mode 100644 index 07640366f3f..00000000000 --- a/implementation-contributed/javascriptcore/stress/type-profiler-log-should-defer-pending-exceptions.js +++ /dev/null @@ -1,26 +0,0 @@ -//@ runDefault("--thresholdForOptimizeAfterWarmUp=0", "--useTypeProfiler=true") - -function foo() { - try { - throw 42; - } catch(e) { - if (e !== 42) - throw new Error("Bad!") - } -} - -function test(_a) { - if (_a === 0) { - foo(); - } -} - -function bar() { - test(Intl.NumberFormat()); - test(Intl.NumberFormat()); - test(0); -} - -for (let i=0; i<200; i++) { - bar() -} diff --git a/implementation-contributed/javascriptcore/stress/typed-array-array-modes-profile.js b/implementation-contributed/javascriptcore/stress/typed-array-array-modes-profile.js deleted file mode 100644 index b927339e357..00000000000 --- a/implementation-contributed/javascriptcore/stress/typed-array-array-modes-profile.js +++ /dev/null @@ -1,18 +0,0 @@ -function foo(o) { - for (var i = 0; i < 100; ++i) { - o.f = o.f; - } -} - -let typedArrays = [ - Uint8Array, - Uint32Array, - Uint8Array, -]; - -for (let constructor of typedArrays) { - let a = new constructor(0); - for (let i = 0; i < 10000; i++) { - foo(a); - } -} diff --git a/implementation-contributed/javascriptcore/stress/typed-array-get-by-val-profiling.js b/implementation-contributed/javascriptcore/stress/typed-array-get-by-val-profiling.js deleted file mode 100644 index fe9ad101d2d..00000000000 --- a/implementation-contributed/javascriptcore/stress/typed-array-get-by-val-profiling.js +++ /dev/null @@ -1,93 +0,0 @@ -//@ slow! - -function testArray(arrayType) -{ - var testCode = - ` - // We make this look like a polymorphic types for incomingObject but the GetByVal are never actually - // polymorphic. The boolean isTypedArray let us differentiate the types. - function ${ arrayType }AndObjectSpeculationInBounds(incomingObject, iterationLength, isTypedArray) { - var output = 0; - output += incomingObject.length; - - if (isTypedArray) { - for (var i = 0; i < iterationLength; ++i) { - output += incomingObject[i]; - } - } else { - for (var i = 0; i < iterationLength; ++i) { - output += incomingObject[i]; - } - } - return output; - } - noInline(${ arrayType }AndObjectSpeculationInBounds); - - var typedArray = new ${ arrayType }(64); - var regularArray = new Array(64); - for (var i = 0; i < 64; ++i) { - typedArray[i] = i; - regularArray[i] = i; - } - - // Access in bounds. - for (var i = 0; i < 1e4; ++i) { - var output = ${ arrayType }AndObjectSpeculationInBounds(typedArray, 64, true); - if (output !== 32 * 65) - throw "${ arrayType }AndObjectSpeculationInBounds(typedArray, 64, true) failed, value = " + output; - - var output = ${ arrayType }AndObjectSpeculationInBounds(regularArray, 64, false); - if (output !== 32 * 65) - throw "${ arrayType }AndObjectSpeculationInBounds(regularArray, 64, false) failed, value = " + output; - } - - // One out of bounds on top of the in bounds profile. - { - var output = ${ arrayType }AndObjectSpeculationInBounds(typedArray, 128, true); - if (output === output) - throw "${ arrayType }AndObjectSpeculationInBounds(typedArray, 128, true) failed, value = " + output; - - var output = ${ arrayType }AndObjectSpeculationInBounds(regularArray, 128, false); - if (output === output) - throw "${ arrayType }AndObjectSpeculationInBounds(regularArray, 128, false) failed, value = " + output; - } - - // Same but here we make out-of-bounds a normal case. - function ${ arrayType }AndObjectSpeculationOutOfBounds(incomingObject, iterationLength, isTypedArray) { - var output = 0; - output += incomingObject.length; - - if (isTypedArray) { - for (var i = 0; i < iterationLength; ++i) { - output += incomingObject[i]|0; - } - } else { - for (var i = 0; i < iterationLength; ++i) { - output += incomingObject[i]|0; - } - } - return output; - } - noInline(${ arrayType }AndObjectSpeculationOutOfBounds); - - for (var i = 0; i < 1e4; ++i) { - var output = ${ arrayType }AndObjectSpeculationOutOfBounds(typedArray, 128, true); - if (output !== 32 * 65) - throw "${ arrayType }AndObjectSpeculationOutOfBounds(typedArray, 128, true) failed, value = " + output; - - var output = ${ arrayType }AndObjectSpeculationOutOfBounds(regularArray, 128, false); - if (output !== 32 * 65) - throw "${ arrayType }AndObjectSpeculationOutOfBounds(regularArray, 128, false) failed, value = " + output; - }` - eval(testCode); -} - -testArray("Int8Array"); -testArray("Uint8Array"); -testArray("Uint8ClampedArray"); -testArray("Int16Array"); -testArray("Uint16Array"); -testArray("Int32Array"); -testArray("Uint32Array"); -testArray("Float32Array"); -testArray("Float64Array"); diff --git a/implementation-contributed/javascriptcore/stress/use-baseline-codeblock-materialize-osr-exit.js b/implementation-contributed/javascriptcore/stress/use-baseline-codeblock-materialize-osr-exit.js deleted file mode 100644 index f86d6501754..00000000000 --- a/implementation-contributed/javascriptcore/stress/use-baseline-codeblock-materialize-osr-exit.js +++ /dev/null @@ -1,13 +0,0 @@ -//@ runDefault("--jitPolicyScale=0") - -function foo() { - let j = 0; - let arr = [0]; - arr.foo = 0; - for (var i = 0; i < 1024; i++) { - arr[0] = new Array(1024); - } -} - -foo(); -foo(); diff --git a/implementation-contributed/javascriptcore/stress/value-add-big-int-and-string.js b/implementation-contributed/javascriptcore/stress/value-add-big-int-and-string.js deleted file mode 100644 index eb0a4ead0c1..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-add-big-int-and-string.js +++ /dev/null @@ -1,18 +0,0 @@ -//@ runBigIntEnabled - -function assert(v, e) { - if (v !== e) - throw new Error("Expected value: " + e + " but got: " + v) -} - -function bigIntOperations(a, b) { - let c = a + b; - return a + c; -} -noInline(bigIntOperations); - -for (let i = 0; i < 100000; i++) { - let out = bigIntOperations(0b1111n, "16"); - assert(out, "151516"); -} - diff --git a/implementation-contributed/javascriptcore/stress/value-add-big-int-prediction-propagation.js b/implementation-contributed/javascriptcore/stress/value-add-big-int-prediction-propagation.js deleted file mode 100644 index 4463711c980..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-add-big-int-prediction-propagation.js +++ /dev/null @@ -1,18 +0,0 @@ -//@ runBigIntEnabled - -function assert(v, e) { - if (v !== e) - throw new Error("Expected value: " + e + " but got: " + v) -} - -function bigIntPropagation(a, b) { - let c = a + b; - return c + 0n; -} -noInline(bigIntPropagation); - -for (let i = 0; i < 100000; i++) { - let out = bigIntPropagation(0xffffffffffffffffffffffffffffffn, 0x1n); - assert(out, 0x1000000000000000000000000000000n) -} - diff --git a/implementation-contributed/javascriptcore/stress/value-add-big-int-untyped.js b/implementation-contributed/javascriptcore/stress/value-add-big-int-untyped.js deleted file mode 100644 index 02a66d3b8cd..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-add-big-int-untyped.js +++ /dev/null @@ -1,26 +0,0 @@ -//@ runBigIntEnabled - -function assert(v, e) { - if (v !== e) - throw new Error("Expected value: " + e + " but got: " + v) -} - -function bigIntOperations(a, b) { - let c = a + b; - return a + c; -} -noInline(bigIntOperations); - -c = 0; -let o = { valueOf: function () { - c++; - return 0b1111n; -}}; - -for (let i = 0; i < 100000; i++) { - let out = bigIntOperations(o, 0b1010n); - assert(out, 40n); -} - -assert(c, 200000); - diff --git a/implementation-contributed/javascriptcore/stress/value-div-fixup-int32-big-int.js b/implementation-contributed/javascriptcore/stress/value-div-fixup-int32-big-int.js deleted file mode 100644 index f6fdaf6f23f..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-div-fixup-int32-big-int.js +++ /dev/null @@ -1,29 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, e) { - if (a !== e) - throw new Error("Bad!"); -} - -function foo() { - let c; - do { - - let a = 2; - let b = 3n; - for (let i = 0; i < 10000; i++) { - c = i; - } - - c = a / b; - } while(true); - - return c; -} - -try { - foo(); -} catch(e) { - assert(e instanceof TypeError, true); -} - diff --git a/implementation-contributed/javascriptcore/stress/value-mul-fixup-int32-big-int.js b/implementation-contributed/javascriptcore/stress/value-mul-fixup-int32-big-int.js deleted file mode 100644 index a5988337053..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-mul-fixup-int32-big-int.js +++ /dev/null @@ -1,29 +0,0 @@ -//@ runBigIntEnabled - -function assert(a, e) { - if (a !== e) - throw new Error("Bad!"); -} - -function foo() { - let c; - do { - - let a = 2; - let b = 3n; - for (let i = 0; i < 10000; i++) { - c = i; - } - - c = a * b; - } while(true); - - return c; -} - -try { - foo(); -} catch(e) { - assert(e instanceof TypeError, true); -} - diff --git a/implementation-contributed/javascriptcore/stress/value-recovery-of-double-displaced-in-jsstack-should-be-purified.js b/implementation-contributed/javascriptcore/stress/value-recovery-of-double-displaced-in-jsstack-should-be-purified.js deleted file mode 100644 index bea04b5656e..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-recovery-of-double-displaced-in-jsstack-should-be-purified.js +++ /dev/null @@ -1,13 +0,0 @@ -let buffer = new ArrayBuffer(4); -let int32View = new Int32Array(buffer); -int32View[0] = -1; -let floatView = new Float32Array(buffer); - -function foo() { - let tmp = floatView[0]; - for (let i = 0; i < 10000; ++i) { } - if (tmp) {} -} - -for (let i = 0; i < 100; ++i) - foo(); diff --git a/implementation-contributed/javascriptcore/stress/value-sub-big-int-prediction-propagation.js b/implementation-contributed/javascriptcore/stress/value-sub-big-int-prediction-propagation.js deleted file mode 100644 index 44cbb28119d..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-sub-big-int-prediction-propagation.js +++ /dev/null @@ -1,18 +0,0 @@ -//@ runBigIntEnabled - -function assert(v, e) { - if (v !== e) - throw new Error("Expected value: " + e + " but got: " + v) -} - -function bigIntPropagation(a, b) { - let c = a - b; - return c - 0n; -} -noInline(bigIntPropagation); - -for (let i = 0; i < 100000; i++) { - let out = bigIntPropagation(0xffffffffffffffffffffffffffffffn, 0x1n); - assert(out, 0xfffffffffffffffffffffffffffffen) -} - diff --git a/implementation-contributed/javascriptcore/stress/value-sub-big-int-untyped.js b/implementation-contributed/javascriptcore/stress/value-sub-big-int-untyped.js deleted file mode 100644 index 8c3f7ff2adf..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-sub-big-int-untyped.js +++ /dev/null @@ -1,26 +0,0 @@ -//@ runBigIntEnabled - -function assert(v, e) { - if (v !== e) - throw new Error("Expected value: " + e + " but got: " + v) -} - -function bigIntOperations(a, b) { - let c = a - b; - return a - c; -} -noInline(bigIntOperations); - -c = 0; -let o = { valueOf: function () { - c++; - return 0b1111n; -}}; - -for (let i = 0; i < 100000; i++) { - let out = bigIntOperations(o, 0b1010n); - assert(out, 10n); -} - -assert(c, 200000); - diff --git a/implementation-contributed/javascriptcore/stress/value-sub-spec-none-case.js b/implementation-contributed/javascriptcore/stress/value-sub-spec-none-case.js deleted file mode 100644 index 2472cef9b39..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-sub-spec-none-case.js +++ /dev/null @@ -1,22 +0,0 @@ -function assert(a, e) { - if (a !== e) - throw new Error("Bad"); -} - -function valueSub() { - let sum = 0; - do { - // We trigger the JIT compilation of valueSub - // so Date.now() will have SpecNone as result - for (let i = 0; i < 10000; i++) - sum++; - - sum += 0.5; - } while (Date.now() - sum < 0); - - assert(sum, 10000.5); -} -noInline(valueSub); - -valueSub(); - diff --git a/implementation-contributed/javascriptcore/stress/value-to-boolean.js b/implementation-contributed/javascriptcore/stress/value-to-boolean.js deleted file mode 100644 index f1c0a745307..00000000000 --- a/implementation-contributed/javascriptcore/stress/value-to-boolean.js +++ /dev/null @@ -1,70 +0,0 @@ -// FIXME: unskip when this is solved -// https://bugs.webkit.org/show_bug.cgi?id=191163 -//@ skip if $architecture == "mips" or $architecture == "arm" -//@ if $buildType == "release" then runDefault else skip end - -function assert(b) { - if (!b) - throw new Error("Bad assertion") -} -noInline(assert); - -let tests = [ - [true, true], - [false, false], - ["", false], - ["" + "" + "", false], - ["foo", true], - ["foo" + "bar", true], - [{}, true], - [Symbol(), true], - [undefined, false], - [null, false], - [0, false], - [-0, false], - [+0, false], - [NaN, false], - [10, true], - [10.2012, true], - [function() { }, true], - [new String("foo"), true], - [new String(""), true], - [new String, true] -]; - -function test1(c) { - return !!c; -} -noInline(test1); - -function test2(c) { - if (c) - return true; - return false; -} -noInline(test2); - -function test3(c) { - if (!c) - return false; - return true; -} -noInline(test3); - -let testFunctions = [test1, test2, test3]; - -for (let testFunction of testFunctions) { - for (let i = 0; i < 10000; i++) { - let item = tests[i % tests.length]; - assert(testFunction(item[0]) === item[1]); - } -} - -let masquerader = makeMasquerader(); -for (let testFunction of testFunctions) { - for (let i = 0; i < 10000; i++) { - for (let i = 0; i < 10000; i++) { - assert(testFunction(masquerader) === false); - } - } -} diff --git a/implementation-contributed/javascriptcore/stress/verbose-failure-dont-graph-dump-availability-already-freed.js b/implementation-contributed/javascriptcore/stress/verbose-failure-dont-graph-dump-availability-already-freed.js deleted file mode 100644 index 0738fcfebbf..00000000000 --- a/implementation-contributed/javascriptcore/stress/verbose-failure-dont-graph-dump-availability-already-freed.js +++ /dev/null @@ -1,9 +0,0 @@ -//@ runDefault("--verboseValidationFailure=true") - -function foo() { - arguments.length; -} -let a = 0; -for (var i = 0; i < 1000000; i++) { - a += foo(); -} diff --git a/implementation-contributed/javascriptcore/stress/wide-op_catch.js b/implementation-contributed/javascriptcore/stress/wide-op_catch.js deleted file mode 100644 index 0735c5fe0c8..00000000000 --- a/implementation-contributed/javascriptcore/stress/wide-op_catch.js +++ /dev/null @@ -1,257 +0,0 @@ -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { } catch (e) { } -try { throw ''; } catch (e) {} diff --git a/implementation-contributed/javascriptcore/wasm/regress/regress-191056.js b/implementation-contributed/javascriptcore/wasm/regress/regress-191056.js deleted file mode 100644 index d9bd772f40f..00000000000 --- a/implementation-contributed/javascriptcore/wasm/regress/regress-191056.js +++ /dev/null @@ -1,15 +0,0 @@ -var importObject = { - env: { - print_number: function (number) { - print('[+] importObject callback.'); - print(number); - } - } -}; -var wasmCode = new Uint8Array([0x0,0x61,0x73,0x6d,0x1,0x0,0x0,0x0,0x1,0x7,0x1,0x60,0x2,0x7e,0x7f,0x1,0x7f,0x3,0x2,0x1,0x0,0x4,0x4,0x1,0x70,0x0,0x4,0x6,0x2e,0x5,0x7f,0x0,0x41,0x2a,0xb,0x7d,0x0,0x43,0x74,0x0,0x0,0x4d,0xb,0x7c,0x0 ,0x44,0x83,0x88,0x88,0x00,0x0,0x0,0xff,0xff,0xb,0x7d,0x0,0x43,0x0,0x0,0x9,0x7f,0xb,0x7c,0x0,0x44,0x0,0x3c,0x0,0x0,0x0,0x0,0xf8,0x7f,0xb,0x7,0x40,0x7,0x5,0x74,0x61,0x62,0x3f,0x45,0x1,0x0,0x3,0x7d,0x75,0x6d,0x0,0x0,0x6,0x61,0x3d, 0x22,0x0,0xd,0x72,0x3,0x0,0x7,0x4f,0x7c,0x68,0x77,0x65,0x20,0x31,0x3,0x1,0x7,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x3,0x2,0x7,0x61,0x6e,0x73,0x77,0x65,0x72,0x3c,0x3,0x3,0x7,0x61,0x6e,0x73,0x77,0x65,0x72,0x34,0x3,0x4,0x9,0x7,0x1,0x0,0x41,0x0,0xb,0x1,0x0,0xa,0x9,0x1,0x7,0x0,0x20,0x1,0x0,0x1,0x0,0xb,]); -var wasmModule = new WebAssembly.Module(wasmCode); -var wasmInstance = new WebAssembly.Instance(wasmModule, importObject); - -var res = wasmInstance.exports.AAAAAAA; -res = res + 'string'; - diff --git a/implementation-contributed/javascriptcore/wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js b/implementation-contributed/javascriptcore/wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js deleted file mode 100644 index 28d478c77a3..00000000000 --- a/implementation-contributed/javascriptcore/wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js +++ /dev/null @@ -1,88 +0,0 @@ -var kWasmH0 = 0; -var kWasmH1 = 0x61; -var kWasmH2 = 0x73; -var kWasmH3 = 0x6d; -var kWasmV0 = 0x1; -var kWasmV1 = 0; -var kWasmV2 = 0; -var kWasmV3 = 0; -let kMemorySectionCode = 5; - -class Binary extends Array { - emit_u8(val) { - this.push(val); - } - emit_u32v(val) { - while (true) { - let v = val & 0xff; - val = val >>> 7; - if (val == 0) { - this.push(v); - break; - } - this.push(v | 0x80); - } - } - - emit_header() { - this.push(kWasmH0, kWasmH1, kWasmH2, kWasmH3, kWasmV0, kWasmV1, kWasmV2, kWasmV3); - } - emit_section(section_code, content_generator) { - this.emit_u8(section_code); - const section = new Binary(); - content_generator(section); - this.emit_u32v(section.length); - for (let b of section) - this.push(b); - } -} - -class WasmModuleBuilder { - constructor() { } - addMemory(min) { - this.memory = { min: min }; - } - toArray() { - let binary = new Binary(); - let wasm = this; - binary.emit_header(); - binary.emit_section(kMemorySectionCode, section => { - section.emit_u8(1); - const is_shared = wasm.memory.shared !== undefined; - if (is_shared) { - } else { - section.emit_u8(); - } - section.emit_u32v(wasm.memory.min); - }); - return binary; - } - toBuffer() { - let bytes = this.toArray(); - let buffer = new ArrayBuffer(bytes.length); - let view = new Uint8Array(buffer); - for (let i = 0; i < bytes.length; i++) { - let val = bytes[i]; - view[i] = val | 0; - } - return buffer; - } - instantiate() { - let module = new WebAssembly.Module(this.toBuffer()); - let instance = new WebAssembly.Instance(module); - } -} - -var exception; -try { - var module = new WasmModuleBuilder(); - module.addMemory(32768); - module.instantiate(); -} catch (e) { - exception = e; -} - -if (exception != "Error: Out of memory") { - print(exception); - throw "FAILED"; -} diff --git a/implementation-contributed/javascriptcore/wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE.js b/implementation-contributed/javascriptcore/wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE.js deleted file mode 100644 index 04e28f73acb..00000000000 --- a/implementation-contributed/javascriptcore/wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE.js +++ /dev/null @@ -1,10 +0,0 @@ -var exception; - -try { - new WebAssembly.Memory({ initial: 0x8000, maximum: 0x8000 }).buffer; -} catch (e) { - exception = e; -} - -if (exception != "Error: Out of memory") - throw "FAILED"; diff --git a/implementation-contributed/v8/intl/BUILD.gn b/implementation-contributed/v8/intl/BUILD.gn deleted file mode 100644 index 671fb055772..00000000000 --- a/implementation-contributed/v8/intl/BUILD.gn +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2018 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -group("v8_intl") { - testonly = true - - data_deps = [ - "../..:d8", - "../../tools:v8_testrunner", - ] - - data = [ - "./", - ] -} diff --git a/implementation-contributed/v8/intl/OWNERS b/implementation-contributed/v8/intl/OWNERS deleted file mode 100644 index 9c966e6b62d..00000000000 --- a/implementation-contributed/v8/intl/OWNERS +++ /dev/null @@ -1,4 +0,0 @@ -cira@chromium.org -mnita@google.com - -# COMPONENT: Blink>JavaScript>Internationalization diff --git a/implementation-contributed/v8/intl/assert.js b/implementation-contributed/v8/intl/assert.js deleted file mode 100644 index c11e7c0bbf8..00000000000 --- a/implementation-contributed/v8/intl/assert.js +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Some methods are taken from v8/test/mjsunit/mjsunit.js - - -function classOf(object) { - // Argument must not be null or undefined. - var string = Object.prototype.toString.call(object); - // String has format [object ]. - return string.substring(8, string.length - 1); -} - -/** - * Compares two objects for key/value equality. - * Returns true if they are equal, false otherwise. - */ -function deepObjectEquals(a, b) { - var aProps = Object.keys(a); - aProps.sort(); - var bProps = Object.keys(b); - bProps.sort(); - if (!deepEquals(aProps, bProps)) { - return false; - } - for (var i = 0; i < aProps.length; i++) { - if (!deepEquals(a[aProps[i]], b[aProps[i]])) { - return false; - } - } - return true; -} - - -/** - * Compares two JavaScript values for type and value equality. - * It checks internals of arrays and objects. - */ -function deepEquals(a, b) { - if (a === b) { - // Check for -0. - if (a === 0) return (1 / a) === (1 / b); - return true; - } - if (typeof a != typeof b) return false; - if (typeof a == 'number') return isNaN(a) && isNaN(b); - if (typeof a !== 'object' && typeof a !== 'function') return false; - // Neither a nor b is primitive. - var objectClass = classOf(a); - if (objectClass !== classOf(b)) return false; - if (objectClass === 'RegExp') { - // For RegExp, just compare pattern and flags using its toString. - return (a.toString() === b.toString()); - } - // Functions are only identical to themselves. - if (objectClass === 'Function') return false; - if (objectClass === 'Array') { - var elementCount = 0; - if (a.length != b.length) { - return false; - } - for (var i = 0; i < a.length; i++) { - if (!deepEquals(a[i], b[i])) return false; - } - return true; - } - if (objectClass == 'String' || objectClass == 'Number' || - objectClass == 'Boolean' || objectClass == 'Date') { - if (a.valueOf() !== b.valueOf()) return false; - } - return deepObjectEquals(a, b); -} - -/** - * Throws an exception containing the user_message (if any) and the values. - */ -function fail(expected, found, user_message = '') { - // TODO(cira): Replace String with PrettyPrint for objects and arrays. - var message = 'Failure' + (user_message ? ' (' + user_message + ')' : '') + - ': expected <' + String(expected) + '>, found <' + String(found) + '>.'; - throw new Error(message); -} - - -/** - * Throws if two variables have different types or values. - */ -function assertEquals(expected, found, user_message = '') { - if (!deepEquals(expected, found)) { - fail(expected, found, user_message); - } -} - - -/** - * Throws if value is false. - */ -function assertTrue(value, user_message = '') { - assertEquals(true, value, user_message); -} - - -/** - * Throws if value is true. - */ -function assertFalse(value, user_message = '') { - assertEquals(false, value, user_message); -} - - -/** - * Throws if value is null. - */ -function assertNotNull(value, user_message = '') { - if (value === null) { - fail("not null", value, user_message); - } -} - - -/** - * Runs code() and asserts that it throws the specified exception. - */ -function assertThrows(code, type_opt, cause_opt) { - try { - if (typeof code == 'function') { - code(); - } else { - eval(code); - } - } catch (e) { - if (typeof type_opt == 'function') { - assertInstanceof(e, type_opt); - } - if (arguments.length >= 3) { - assertEquals(cause_opt, e.type, 'thrown exception type mismatch'); - } - // Success. - return; - } - var expected = arguments.length >= 3 ? cause_opt : - typeof type_opt == 'function' ? type_opt : 'any exception'; - fail(expected, 'no exception', 'expected thrown exception'); -} - - -/** - * Runs code() and asserts that it does now throw any exception. - */ -function assertDoesNotThrow(code, user_message = '') { - try { - if (typeof code == 'function') { - code(); - } else { - eval(code); - } - } catch (e) { - fail("no expection", "exception: " + String(e), user_message); - } -} - - -/** - * Throws if obj is not of given type. - */ -function assertInstanceof(obj, type) { - if (!(obj instanceof type)) { - var actualTypeName = null; - var actualConstructor = Object.getPrototypeOf(obj).constructor; - if (typeof actualConstructor == "function") { - actualTypeName = actualConstructor.name || String(actualConstructor); - } - throw new Error('Object <' + obj + '> is not an instance of <' + - (type.name || type) + '>' + - (actualTypeName ? ' but of < ' + actualTypeName + '>' : '')); - } -} - - -/** - * Split a BCP 47 language tag into locale and extension. - */ -function splitLanguageTag(tag) { - var extRe = /(-[0-9A-Za-z](-[0-9A-Za-z]{2,8})+)+$/; - var match = %regexp_internal_match(extRe, tag); - if (match) { - return { locale: tag.slice(0, match.index), extension: match[0] }; - } - - return { locale: tag, extension: '' }; -} - - -/** - * Throw if |parent| is not a more general language tag of |child|, nor |child| - * itself, per BCP 47 rules. - */ -function assertLanguageTag(child, parent) { - var childSplit = splitLanguageTag(child); - var parentSplit = splitLanguageTag(parent); - - // Do not compare extensions at this moment, as %GetDefaultICULocale() - // doesn't always output something we support. - if (childSplit.locale !== parentSplit.locale && - !childSplit.locale.startsWith(parentSplit.locale + '-')) { - fail(child, parent, 'language tag comparison'); - } -} diff --git a/implementation-contributed/v8/intl/bad-target.js b/implementation-contributed/v8/intl/bad-target.js deleted file mode 100644 index 7b7cbe9b5dd..00000000000 --- a/implementation-contributed/v8/intl/bad-target.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Calling Intl methods with a bad receiver throws a TypeError - -// An uninitialized object of the same type -assertThrows(() => Object.create(Intl.DateTimeFormat.prototype).format(), - TypeError); -assertThrows(() => Object.create(Intl.NumberFormat.prototype).format(), - TypeError); -assertThrows(() => Object.create(Intl.Collator.prototype).compare(), - TypeError); -assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).adoptText(), - TypeError); -assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).first(), - TypeError); -assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).next(), - TypeError); -assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).current(), - TypeError); -assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).breakType(), - TypeError); - -// Or similarly, just accessing the method getter on the prototype -assertThrows(() => Intl.DateTimeFormat.prototype.format, TypeError); -assertThrows(() => Intl.NumberFormat.prototype.format, TypeError); -assertThrows(() => Intl.Collator.prototype.compare, TypeError); -assertThrows(() => Intl.v8BreakIterator.prototype.adoptText, TypeError); -assertThrows(() => Intl.v8BreakIterator.prototype.first, TypeError); -assertThrows(() => Intl.v8BreakIterator.prototype.next, TypeError); -assertThrows(() => Intl.v8BreakIterator.prototype.current, TypeError); -assertThrows(() => Intl.v8BreakIterator.prototype.breakType, TypeError); - -// The method .call'd on a different instance will have that -// other instance benignly ignored, since it's a bound function -let nf = Intl.NumberFormat(); -let df = Intl.DateTimeFormat(); -assertEquals("0", nf.format.call(df, 0)); diff --git a/implementation-contributed/v8/intl/bigint/tolocalestring.js b/implementation-contributed/v8/intl/bigint/tolocalestring.js deleted file mode 100644 index d0b6792ea83..00000000000 --- a/implementation-contributed/v8/intl/bigint/tolocalestring.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-bigint - -var locales = [ - "en", // "1,234,567,890,123,456" - "de", // "1.234.567.890.123.456" - "fr", // "1 234 567 890 123 456" - "hi", // "1,23,45,67,89,01,23,456" - "fa", // "۱٬۲۳۴٬۵۶۷٬۸۹۰٬۱۲۳٬۴۵۶" - "th-u-nu-thai", // "๑,๒๓๔,๕๖๗,๘๙๐,๑๒๓,๔๕๖" -]; - -var data = [ - Number.MAX_SAFE_INTEGER, - -Number.MAX_SAFE_INTEGER, - Math.floor(Number.MAX_SAFE_INTEGER / 2), - 0, - /// -0, // this case is broken now. -]; - -for (var locale of locales) { - let nf = new Intl.NumberFormat(locale); - - let percentOption = {style: "percent"}; - let nfPercent = new Intl.NumberFormat(locale, percentOption); - for (var n of data) { - let bigint = BigInt(n); - // Test NumberFormat w/ number output the same as - // BigInt.prototype.toLocaleString() - assertEquals(nf.format(n), bigint.toLocaleString(locale)); - - // Test NumberFormat output the same regardless pass in as number or BigInt - assertEquals(nf.format(n), nf.format(bigint)); - - // Test formatToParts - assertEquals(nf.formatToParts(n), nf.formatToParts(bigint)); - - // Test output with option - // Test NumberFormat w/ number output the same as - // BigInt.prototype.toLocaleString() - assertEquals(nfPercent.format(n), - bigint.toLocaleString(locale, percentOption)); - - // Test NumberFormat output the same regardless pass in as number or BigInt - assertEquals(nfPercent.format(n), nfPercent.format(bigint)); - assertEquals(nfPercent.formatToParts(n), nfPercent.formatToParts(bigint)); - } - - // Test very big BigInt - let veryBigInt = BigInt(Number.MAX_SAFE_INTEGER) * - BigInt(Number.MAX_SAFE_INTEGER) * - BigInt(Number.MAX_SAFE_INTEGER); - assertEquals(nf.format(veryBigInt), veryBigInt.toLocaleString(locale)); - // It should output different than toString - assertFalse(veryBigInt.toLocaleString(locale) == veryBigInt.toString()); - assertTrue(veryBigInt.toLocaleString(locale).length > - veryBigInt.toString().length); -} diff --git a/implementation-contributed/v8/intl/break-iterator/default-locale.js b/implementation-contributed/v8/intl/break-iterator/default-locale.js deleted file mode 100644 index fd379db1c8a..00000000000 --- a/implementation-contributed/v8/intl/break-iterator/default-locale.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Constructing BreakIterator with no locale arguments or with [] -// creates one with default locale. - -var iterator = new Intl.v8BreakIterator([]); - -var options = iterator.resolvedOptions(); - -// Check it's none of these first. -assertFalse(options.locale === 'und'); -assertFalse(options.locale === ''); -assertFalse(options.locale === undefined); - -var iteratorNone = new Intl.v8BreakIterator(); -assertEquals(options.locale, iteratorNone.resolvedOptions().locale); - -// TODO(cira): remove support for {} to mean empty list. -var iteratorBraket = new Intl.v8BreakIterator({}); -assertEquals(options.locale, iteratorBraket.resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/break-iterator/en-break.js b/implementation-contributed/v8/intl/break-iterator/en-break.js deleted file mode 100644 index 7268a101e71..00000000000 --- a/implementation-contributed/v8/intl/break-iterator/en-break.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Segment plain English sentence and check results. - -var iterator = new Intl.v8BreakIterator(['en']); - -var textToSegment = 'Jack and Jill, went over hill, and got lost. Alert!'; -iterator.adoptText(textToSegment); - -var slices = []; -var types = []; -var pos = iterator.first(); -while (pos !== -1) { - var nextPos = iterator.next(); - if (nextPos === -1) break; - - slices.push(textToSegment.slice(pos, nextPos)); - types.push(iterator.breakType()); - - pos = nextPos; -} - -assertEquals('Jack', slices[0]); -assertEquals(' ', slices[1]); -assertEquals('and', slices[2]); -assertEquals(' ', slices[3]); -assertEquals('Jill', slices[4]); -assertEquals(',', slices[5]); -assertEquals('!', slices[slices.length - 1]); - -assertEquals('letter', types[0]); -assertEquals('none', types[1]); -assertEquals('letter', types[2]); -assertEquals('none', types[3]); -assertEquals('letter', types[4]); -assertEquals('none', types[types.length - 1]); diff --git a/implementation-contributed/v8/intl/break-iterator/options.js b/implementation-contributed/v8/intl/break-iterator/options.js deleted file mode 100644 index e2feae22a79..00000000000 --- a/implementation-contributed/v8/intl/break-iterator/options.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => new Intl.v8BreakIterator('en', null)); -assertDoesNotThrow(() => new Intl.v8BreakIterator('en', undefined)); - -for (let key of [false, true, "foo", Symbol, 1]) { - assertDoesNotThrow(() => new Intl.v8BreakIterator('en', key)); -} - -assertDoesNotThrow(() => new Intl.v8BreakIterator('en', {})); -assertDoesNotThrow(() => new Intl.v8BreakIterator('en', new Proxy({}, {}))); diff --git a/implementation-contributed/v8/intl/break-iterator/property-override.js b/implementation-contributed/v8/intl/break-iterator/property-override.js deleted file mode 100644 index 49bd86fa6eb..00000000000 --- a/implementation-contributed/v8/intl/break-iterator/property-override.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Checks for security holes introduced by Object.property overrides. -// For example: -// Object.defineProperty(Array.prototype, 'locale', { -// set: function(value) { -// throw new Error('blah'); -// }, -// configurable: true, -// enumerable: false -// }); -// -// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us'). -// -// Update both break-iterator.js and break-iterator.cc so they have the same -// list of properties. - -// First get supported properties. -var properties = []; -var options = Intl.v8BreakIterator().resolvedOptions(); -for (var prop in options) { - if (options.hasOwnProperty(prop)) { - properties.push(prop); - } -} - -var expectedProperties = [ - 'type', 'locale' -]; - -assertEquals(expectedProperties.length, properties.length); - -properties.forEach(function(prop) { - assertFalse(expectedProperties.indexOf(prop) === -1); -}); - -taintProperties(properties); - -var locale = Intl.v8BreakIterator().resolvedOptions().locale; diff --git a/implementation-contributed/v8/intl/break-iterator/resolved-options-is-method.js b/implementation-contributed/v8/intl/break-iterator/resolved-options-is-method.js deleted file mode 100644 index 0e9e06c2f2a..00000000000 --- a/implementation-contributed/v8/intl/break-iterator/resolved-options-is-method.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that resolvedOptions is a method, not a property getter and that -// the result is mutable. - -var iterator = new Intl.v8BreakIterator(); - -var result = iterator.resolvedOptions(); - -assertTrue(result instanceof Object); - -// Result should be mutable. -result.locale = 'xx'; - -assertEquals(result.locale, 'xx'); diff --git a/implementation-contributed/v8/intl/break-iterator/subclass.js b/implementation-contributed/v8/intl/break-iterator/subclass.js deleted file mode 100644 index b5ffe61a48e..00000000000 --- a/implementation-contributed/v8/intl/break-iterator/subclass.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-list-format - -var locales = ["tlh", "id", "en"]; -var input = "foo and bar"; -var refBreakIterator = new Intl.v8BreakIterator(locales); -refBreakIterator.adoptText(input); - -class MyBreakIterator extends Intl.v8BreakIterator { - constructor(locales, options) { - super(locales, options); - } -} - -var myBreakIterator = new MyBreakIterator(locales); -myBreakIterator.adoptText(input); - -let expectedPos = refBreakIterator.first(); -let actualPos = myBreakIterator.first(); -assertEquals(expectedPos, actualPos); - -while (expectedPos != -1) { - expectedPos = refBreakIterator.next(); - actualPos = myBreakIterator.next(); - assertEquals(expectedPos, actualPos); -} diff --git a/implementation-contributed/v8/intl/break-iterator/supported-locales-is-method.js b/implementation-contributed/v8/intl/break-iterator/supported-locales-is-method.js deleted file mode 100644 index c5d00f54fa8..00000000000 --- a/implementation-contributed/v8/intl/break-iterator/supported-locales-is-method.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that supportedLocalesOf is not a constructor. - -var iterator = new Intl.v8BreakIterator(); - -assertThrows(() => new Intl.v8BreakIterator.supportedLocalesOf(), TypeError); diff --git a/implementation-contributed/v8/intl/break-iterator/zh-break.js b/implementation-contributed/v8/intl/break-iterator/zh-break.js deleted file mode 100644 index c8434b10c2f..00000000000 --- a/implementation-contributed/v8/intl/break-iterator/zh-break.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Segment plain Chinese sentence and check results. - -var iterator = new Intl.v8BreakIterator(['zh']); - -var textToSegment = '\u56FD\u52A1\u9662\u5173\u4E8E\u300A\u571F\u5730' + - '\u623F\u5C4B\u7BA1\u7406\u6761\u4F8B\u300B'; -iterator.adoptText(textToSegment); - -var slices = []; -var types = []; -var pos = iterator.first(); -while (pos !== -1) { - var nextPos = iterator.next(); - if (nextPos === -1) break; - - slices.push(textToSegment.slice(pos, nextPos)); - types.push(iterator.breakType()); - - pos = nextPos; -} - -assertEquals('\u56FD\u52A1\u9662', slices[0]); -assertEquals('\u5173\u4E8E', slices[1]); -assertEquals('\u300A', slices[2]); -assertEquals('\u571F\u5730', slices[3]); -assertEquals('\u623F\u5C4B', slices[4]); -assertEquals('\u7BA1\u7406', slices[5]); -assertEquals('\u6761\u4F8B', slices[6]); -assertEquals('\u300B', slices[7]); - -assertEquals('ideo', types[0]); -assertEquals('ideo', types[1]); -assertEquals('none', types[2]); -assertEquals('ideo', types[3]); -assertEquals('ideo', types[4]); -assertEquals('none', types[types.length - 1]); diff --git a/implementation-contributed/v8/intl/collator/check-co-option.js b/implementation-contributed/v8/intl/collator/check-co-option.js deleted file mode 100644 index 477d00a0453..00000000000 --- a/implementation-contributed/v8/intl/collator/check-co-option.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let invalid_co = [ - "invalid", - "search", - "standard", - "abce", -]; - -let valid_locales = [ - "zh-u-co-zhuyin", - "zh-u-co-stroke", - "ar-u-co-compat", - "en-u-co-emoji", - "en-u-co-eor", - "zh-Hant-u-co-pinyin", - "ko-u-co-searchjl", - "ja-u-co-unihan", -]; - -invalid_co.forEach(function(co) { - let col = new Intl.Collator(["en-u-co-" + co]); - assertEquals("en", col.resolvedOptions().locale); -} -); - -valid_locales.forEach(function(l) { - let col = new Intl.Collator([l + "-fo-obar"]); - assertEquals(l, col.resolvedOptions().locale); -} -); diff --git a/implementation-contributed/v8/intl/collator/check-kf-option.js b/implementation-contributed/v8/intl/collator/check-kf-option.js deleted file mode 100644 index 45085c667e6..00000000000 --- a/implementation-contributed/v8/intl/collator/check-kf-option.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let invalid_kf = [ - "invalid", - "abce", - "none", - "true", -]; - -let valid_kf= [ - "false", - "upper", - "lower", -]; - -let locales = [ - "en", - "fr", -]; - -invalid_kf.forEach(function(kf) { - let col = new Intl.Collator(["en-u-kf-" + kf + "-fo-obar"]); - assertEquals("en", col.resolvedOptions().locale); -} -); - -valid_kf.forEach(function(kf) { - locales.forEach(function(base) { - let l = base + "-u-kf-" + kf; - let col = new Intl.Collator([l + "-fo-obar"]); - assertEquals(l, col.resolvedOptions().locale); - }); -} -); diff --git a/implementation-contributed/v8/intl/collator/check-kn-option.js b/implementation-contributed/v8/intl/collator/check-kn-option.js deleted file mode 100644 index 0e3a82fe266..00000000000 --- a/implementation-contributed/v8/intl/collator/check-kn-option.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let invalid_kn = [ - "invalid", - "search", - "standard", - "abce", -]; - -let valid_kn = [ - ["en-u-kn", true, "en-u-kn"], - ["en-u-kn-true", true, "en-u-kn"], - ["en-u-kn-false",false, "en-u-kn-false"], -]; - -invalid_kn.forEach(function(kn) { - let col = new Intl.Collator(["en-u-kn-" + kn]); - assertEquals("en", col.resolvedOptions().locale); -} -); - -valid_kn.forEach(function(l) { - let col = new Intl.Collator([l[0] + "-fo-obar"]); - assertEquals(l[1], col.resolvedOptions().numeric); - assertEquals(l[2], col.resolvedOptions().locale); -} -); diff --git a/implementation-contributed/v8/intl/collator/constructor-order.js b/implementation-contributed/v8/intl/collator/constructor-order.js deleted file mode 100644 index 2b1de6b8664..00000000000 --- a/implementation-contributed/v8/intl/collator/constructor-order.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; - -new Intl.Collator(['en-US'], { - get usage() { - assertEquals(0, getCount++); - }, - get localeMatcher() { - assertEquals(1, getCount++); - }, - get numeric() { - assertEquals(2, getCount++); - }, - get caseFirst() { - assertEquals(3, getCount++); - }, - get sensitivity() { - assertEquals(4, getCount++); - }, - get ignorePunctuation() { - assertEquals(5, getCount++); - }, -}); -assertEquals(6, getCount); diff --git a/implementation-contributed/v8/intl/collator/de-sort.js b/implementation-contributed/v8/intl/collator/de-sort.js deleted file mode 100644 index 005620c3be5..00000000000 --- a/implementation-contributed/v8/intl/collator/de-sort.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Sort plain German text using defaults. - -var strings = ['März', 'Fuße', 'FUSSE', 'Fluße', 'Flusse', - 'flusse', 'fluße', 'flüße', 'flüsse']; - -var collator = Intl.Collator(['de']); -var result = strings.sort(collator.compare); - -assertEquals('flusse', result[0]); -assertEquals('Flusse', result[1]); -assertEquals('fluße', result[2]); -assertEquals('Fluße', result[3]); -assertEquals('flüsse', result[4]); -assertEquals('flüße', result[5]); -assertEquals('FUSSE', result[6]); -assertEquals('Fuße', result[7]); -assertEquals('März', result[8]); - -result = ["AE", "Ä"].sort(new Intl.Collator("de", {usage: "sort"}).compare) -assertEquals("Ä", result[0]); -assertEquals("AE", result[1]); -result = ["AE", "Ä"].sort(new Intl.Collator("de", {usage: "search"}).compare) -assertEquals("AE", result[0]); -assertEquals("Ä", result[1]); - - -var collator = new Intl.Collator("de", {usage: "search"}); -collator.resolvedOptions() // This triggers the code that removes the u-co-search keyword -result = ["AE", "Ä"].sort(collator.compare) -assertEquals("AE", result[0]); -assertEquals("Ä", result[1]); diff --git a/implementation-contributed/v8/intl/collator/default-locale.js b/implementation-contributed/v8/intl/collator/default-locale.js deleted file mode 100644 index 56435d147f8..00000000000 --- a/implementation-contributed/v8/intl/collator/default-locale.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Constructing Collator with no locale arguments or with [] -// creates one with default locale. - -var collator = new Intl.Collator([]); - -var options = collator.resolvedOptions(); - -// Check it's none of these first. -assertFalse(options.locale === 'und'); -assertFalse(options.locale === ''); -assertFalse(options.locale === undefined); - -var collatorNone = new Intl.Collator(); -assertEquals(options.locale, collatorNone.resolvedOptions().locale); - -// TODO(cira): remove support for {} to mean empty list. -var collatorBraket = new Intl.Collator({}); -assertEquals(options.locale, collatorBraket.resolvedOptions().locale); - -var collatorWithOptions = new Intl.Collator(undefined, {usage: 'search'}); -var locale = collatorWithOptions.resolvedOptions().locale; -assertEquals(locale.indexOf('-co-search'), -1); diff --git a/implementation-contributed/v8/intl/collator/en-sort.js b/implementation-contributed/v8/intl/collator/en-sort.js deleted file mode 100644 index 24adc773eb8..00000000000 --- a/implementation-contributed/v8/intl/collator/en-sort.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Sort plain English text using defaults. - -var strings = ['blood', 'bull', 'ascend', 'zed', 'down']; - -var collator = Intl.Collator(['en']); -var result = strings.sort(collator.compare); - -assertEquals('ascend', result[0]); -assertEquals('blood', result[1]); -assertEquals('bull', result[2]); -assertEquals('down', result[3]); -assertEquals('zed', result[4]); diff --git a/implementation-contributed/v8/intl/collator/normalization.js b/implementation-contributed/v8/intl/collator/normalization.js deleted file mode 100644 index 8238f235a85..00000000000 --- a/implementation-contributed/v8/intl/collator/normalization.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure normalization is always on, and normalization flag is ignored. - -// We need a character with two combining marks, from two different classes, -// to make ICU fail comparison without normalization (upper, lower accent). -// We will just switch order of combining characters to try to induce failure. - -// FYI, this one wouldn't work, since both accents are from the same class: -// http://unicode.org/cldr/utility/character.jsp?a=01DF - -// See http://demo.icu-project.org/icu-bin/nbrowser?t=&s=1E09&uv=0 and -// http://unicode.org/cldr/utility/character.jsp?a=1E09 for character details. -var toCompare = ['\u0063\u0327\u0301', '\u0063\u0301\u0327']; - -// Try with normalization off (as an option). -var collator = Intl.Collator([], {normalization: false}); -// If we accepted normalization parameter, this would have failed. -assertEquals(0, collator.compare(toCompare[0], toCompare[1])); -assertFalse(collator.resolvedOptions().hasOwnProperty('normalization')); - -// Try with normalization off (as Unicode extension). -collator = Intl.Collator(['de-u-kk-false']); -// If we accepted normalization parameter, this would have failed. -assertEquals(0, collator.compare(toCompare[0], toCompare[1])); -assertFalse(collator.resolvedOptions().hasOwnProperty('normalization')); - -// Normalization is on by default. -collator = Intl.Collator(); -assertEquals(0, collator.compare(toCompare[0], toCompare[1])); -assertFalse(collator.resolvedOptions().hasOwnProperty('normalization')); diff --git a/implementation-contributed/v8/intl/collator/options.js b/implementation-contributed/v8/intl/collator/options.js deleted file mode 100644 index 126bfc09595..00000000000 --- a/implementation-contributed/v8/intl/collator/options.js +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// No locale -var collatorWithOptions = new Intl.Collator(undefined); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertEquals('sort', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator(undefined, {usage: 'sort'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertEquals('sort', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator(undefined, {usage: 'search'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertEquals('search', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator(locale); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertEquals('sort', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -// With Locale -collatorWithOptions = new Intl.Collator('en-US'); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('sort', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator('en-US', {usage: 'sort'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('sort', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator('en-US', {usage: 'search'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertEquals('search', usage); -assertEquals('default', collation); -assertLanguageTag('en-US', locale); -assertEquals(locale.indexOf('-co-search'), -1); - -// With invalid collation value = 'search' -collatorWithOptions = new Intl.Collator('en-US-u-co-search'); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('sort', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator('en-US-u-co-search', {usage: 'sort'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('sort', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator('en-US-u-co-search', {usage: 'search'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('search', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -// With invalid collation value = 'standard' -collatorWithOptions = new Intl.Collator('en-US-u-co-standard'); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('sort', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator('en-US-u-co-standard', {usage: 'sort'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('sort', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator('en-US-u-co-standard', {usage: 'search'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('search', usage); -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -// With valid collation value = 'emoji' -collatorWithOptions = new Intl.Collator('en-US-u-co-emoji'); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('sort', usage); -assertEquals('emoji', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator('en-US-u-co-emoji', {usage: 'sort'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('sort', usage); -assertEquals('emoji', collation); -assertEquals(locale.indexOf('-co-search'), -1); - -collatorWithOptions = new Intl.Collator('en-US-u-co-emoji', {usage: 'search'}); -var { locale, usage, collation } = collatorWithOptions.resolvedOptions(); -assertLanguageTag('en-US', locale); -assertEquals('search', usage); -// usage = search overwrites emoji as a collation value. -assertEquals('default', collation); -assertEquals(locale.indexOf('-co-search'), -1); diff --git a/implementation-contributed/v8/intl/collator/property-override.js b/implementation-contributed/v8/intl/collator/property-override.js deleted file mode 100644 index 1e17b1e7415..00000000000 --- a/implementation-contributed/v8/intl/collator/property-override.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Checks for security holes introduced by Object.property overrides. -// For example: -// Object.defineProperty(Array.prototype, 'locale', { -// set: function(value) { -// throw new Error('blah'); -// }, -// configurable: true, -// enumerable: false -// }); -// -// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us'). -// -// Update both collator.js and collator.cc so they have the same list of -// properties. - -// First get supported properties. -var properties = []; -var options = Intl.Collator().resolvedOptions(); -for (var prop in options) { - if (options.hasOwnProperty(prop)) { - properties.push(prop); - } -} - -var expectedProperties = [ - 'caseFirst', 'sensitivity', 'ignorePunctuation', - 'locale', 'numeric', 'usage', 'collation' -]; - -assertEquals(expectedProperties.length, properties.length); - -properties.forEach(function(prop) { - assertFalse(expectedProperties.indexOf(prop) === -1); -}); - -taintProperties(properties); diff --git a/implementation-contributed/v8/intl/collator/resolved-options-is-method.js b/implementation-contributed/v8/intl/collator/resolved-options-is-method.js deleted file mode 100644 index e7c874f0af6..00000000000 --- a/implementation-contributed/v8/intl/collator/resolved-options-is-method.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that resolvedOptions is a method, not a property getter and that -// the result is mutable. - -var collator = new Intl.Collator(); - -var result = collator.resolvedOptions(); - -assertTrue(result instanceof Object); - -// Result should be mutable. -result.locale = 'xx'; - -assertEquals(result.locale, 'xx'); diff --git a/implementation-contributed/v8/intl/collator/sr-sort.js b/implementation-contributed/v8/intl/collator/sr-sort.js deleted file mode 100644 index b7e6f30d57a..00000000000 --- a/implementation-contributed/v8/intl/collator/sr-sort.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Sort plain Serbian text using defaults. - -var strings = ['новине', 'ограда', 'жирафа', 'Никола', 'Андрија', - 'Стара Планина', 'џак', 'алав', 'ћук', 'чука']; - -var collator = Intl.Collator(['sr']); -var result = strings.sort(collator.compare); - -assertEquals('алав', result[0]); -assertEquals('Андрија', result[1]); -assertEquals('жирафа', result[2]); -assertEquals('Никола', result[3]); -assertEquals('новине', result[4]); -assertEquals('ограда', result[5]); -assertEquals('Стара Планина', result[6]); -assertEquals('ћук', result[7]); -assertEquals('чука', result[8]); -assertEquals('џак', result[9]); diff --git a/implementation-contributed/v8/intl/date-format/calendar-with-multiple-type-subtags.js b/implementation-contributed/v8/intl/date-format/calendar-with-multiple-type-subtags.js deleted file mode 100644 index f4c00da61d3..00000000000 --- a/implementation-contributed/v8/intl/date-format/calendar-with-multiple-type-subtags.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var options = Intl.DateTimeFormat("ar-u-ca-islamic-civil").resolvedOptions(); -assertEquals(options.calendar, "islamic-civil"); - -options = Intl.DateTimeFormat("ar-u-ca-islamic-umalqura").resolvedOptions(); -assertEquals(options.calendar, "islamic-umalqura"); - -var options = Intl.DateTimeFormat("ar-u-ca-islamic-civil").resolvedOptions(); -assertEquals(options.calendar, "islamic-civil"); - -options = - Intl.DateTimeFormat("ar-u-ca-islamic-civil-nu-arab").resolvedOptions(); -assertEquals(options.calendar, "islamic-civil"); -assertEquals(options.numberingSystem, "arab"); - -// The default numberingSystem is 'arab' for 'ar' locale. Set it to 'latn' -// to check that 'nu-latn' keyword is parsed correctly. -options = - Intl.DateTimeFormat("ar-u-ca-islamic-civil-nu-latn").resolvedOptions(); -assertEquals(options.calendar, "islamic-civil"); -assertEquals(options.numberingSystem, "latn"); - -// ethioaa is the canonical LDML/BCP 47 name. -options = Intl.DateTimeFormat("am-u-ca-ethiopic-amete-alem").resolvedOptions(); -assertEquals(options.calendar, "ethioaa"); - -// Invalid calendar type "foo-bar". Fall back to the default. -options = Intl.DateTimeFormat("ar-u-ca-foo-bar").resolvedOptions(); -assertEquals(options.calendar, "gregory"); - -// No type subtag for ca. Fall back to the default. -options = Intl.DateTimeFormat("ar-u-ca-nu-arab").resolvedOptions(); -assertEquals(options.calendar, "gregory"); - -// Too long a type subtag for ca. -assertThrows(() => Intl.DateTimeFormat("ar-u-ca-foobarbaz"), RangeError); diff --git a/implementation-contributed/v8/intl/date-format/check-ca-option.js b/implementation-contributed/v8/intl/date-format/check-ca-option.js deleted file mode 100644 index d27ae44b486..00000000000 --- a/implementation-contributed/v8/intl/date-format/check-ca-option.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -let invalid_ca = [ - "invalid", - "abce", -]; - -// https://www.unicode.org/repos/cldr/tags/latest/common/bcp47/calendar.xml -let valid_ca= [ - "buddhist", - "chinese", - "coptic", - "dangi", - "ethioaa", - "ethiopic", - "gregory", - "hebrew", - "indian", - "islamic", - "islamic-umalqura", - "islamic-tbla", - "islamic-civil", - "islamic-rgsa", - "iso8601", - "japanese", - "persian", - "roc", -]; - -let locales = [ - "en", - "ar", -]; - -invalid_ca.forEach(function(ca) { - let df = new Intl.DateTimeFormat(["en-u-ca-" + ca + "-fo-obar"]); - assertEquals("en", df.resolvedOptions().locale); -} -); - -valid_ca.forEach(function(ca) { - locales.forEach(function(base) { - let l = base + "-u-ca-" + ca; - let df = new Intl.DateTimeFormat([l + "-fo-obar"]); - assertEquals(l, df.resolvedOptions().locale); - }); -} -); diff --git a/implementation-contributed/v8/intl/date-format/check-hc-option.js b/implementation-contributed/v8/intl/date-format/check-hc-option.js deleted file mode 100644 index 7a1e9178167..00000000000 --- a/implementation-contributed/v8/intl/date-format/check-hc-option.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -let invalid_hc = [ - "invalid", - "abce", - "h10", - "h13", - "h22", - "h25", -]; - -// https://www.unicode.org/repos/cldr/tags/latest/common/bcp47/calendar.xml -let valid_hc= [ - "h11", - "h12", - "h23", - "h24", -]; - -let locales = [ - "en", - "ar", -]; - -invalid_hc.forEach(function(hc) { - let df = new Intl.DateTimeFormat( - ["en-u-hc-" + hc + "-fo-obar"], {hour: "2-digit"}); - assertEquals("en", df.resolvedOptions().locale); -} -); - -valid_hc.forEach(function(hc) { - locales.forEach(function(base) { - let l = base + "-u-hc-" + hc; - let df = new Intl.DateTimeFormat( - [l + "-fo-obar"], {hour: "2-digit"}); - assertEquals(l, df.resolvedOptions().locale); - }); -} -); diff --git a/implementation-contributed/v8/intl/date-format/check-nu-option.js b/implementation-contributed/v8/intl/date-format/check-nu-option.js deleted file mode 100644 index 7d4b4dc9271..00000000000 --- a/implementation-contributed/v8/intl/date-format/check-nu-option.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -let invalid_nu = [ - "invalid", - "abce", - "finance", - "native", - "traditio", -]; - -// https://tc39.github.io/ecma402/#table-numbering-system-digits -let valid_nu= [ - "arab", - "arabext", - "bali", - "beng", - "deva", - "fullwide", - "gujr", - "guru", - "hanidec", - "khmr", - "knda", - "laoo", - "latn", - "limb", - "mlym", - "mong", - "mymr", - "orya", - "tamldec", - "telu", - "thai", - "tibt", -]; - -let locales = [ - "en", - "ar", -]; - - -invalid_nu.forEach(function(nu) { - let df = new Intl.DateTimeFormat(["en-u-nu-" + nu + "-fo-obar"]); - assertEquals("en", df.resolvedOptions().locale); -} -); - -valid_nu.forEach(function(nu) { - locales.forEach(function(base) { - let l = base + "-u-nu-" + nu; - let df = new Intl.DateTimeFormat([l + "-fo-obar"]); - assertEquals(l, df.resolvedOptions().locale); - }); -} -); diff --git a/implementation-contributed/v8/intl/date-format/constructor-date-style-order.js b/implementation-contributed/v8/intl/date-format/constructor-date-style-order.js deleted file mode 100644 index 8e601b48d34..00000000000 --- a/implementation-contributed/v8/intl/date-format/constructor-date-style-order.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-datetime-style - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; -let weekday = new Array(); -let year = new Array(); -let month = new Array(); -let day = new Array(); -let hour = new Array(); -let minute = new Array(); -let second = new Array(); -let localeMatcher = new Array(); -let hour12 = new Array(); -let hourCycle = new Array(); -let dateStyle = new Array(); -let timeStyle = new Array(); -let timeZone = new Array(); -let era = new Array(); -let timeZoneName = new Array(); -let formatMatcher = new Array(); - -new Intl.DateTimeFormat(['en-US'], { - get weekday() { - weekday.push(++getCount); - }, - get year() { - year.push(++getCount); - }, - get month() { - month.push(++getCount); - }, - get day() { - day.push(++getCount); - }, - get hour() { - hour.push(++getCount); - }, - get minute() { - minute.push(++getCount); - }, - get second() { - second.push(++getCount); - }, - get localeMatcher() { - localeMatcher.push(++getCount); - }, - get hour12() { - hour12.push(++getCount); - }, - get hourCycle() { - hourCycle.push(++getCount); - }, - get timeZone() { - timeZone.push(++getCount); - }, - get dateStyle() { - dateStyle.push(++getCount); - return "full"; - }, - get timeStyle() { - timeStyle.push(++getCount); - }, - get era() { - era.push(++getCount); - }, - get timeZoneName() { - timeZoneName.push(++getCount); - }, - get formatMatcher() { - formatMatcher.push(++getCount); - } -}); - -assertEquals(1, weekday.length); -assertEquals(1, weekday[0]); -assertEquals(1, year.length); -assertEquals(2, year[0]); -assertEquals(1, month.length); -assertEquals(3, month[0]); -assertEquals(1, day.length); -assertEquals(4, day[0]); -assertEquals(1, hour.length); -assertEquals(5, hour[0]); -assertEquals(1, minute.length); -assertEquals(6, minute[0]); -assertEquals(1, second.length); -assertEquals(7, second[0]); -assertEquals(1, localeMatcher.length); -assertEquals(8, localeMatcher[0]); -assertEquals(1, hour12.length); -assertEquals(9, hour12[0]); -assertEquals(1, hourCycle.length); -assertEquals(10, hourCycle[0]); -assertEquals(1, timeZone.length); -assertEquals(11, timeZone[0]); -assertEquals(1, dateStyle.length); -assertEquals(12, dateStyle[0]); -assertEquals(1, timeStyle.length); -assertEquals(13, timeStyle[0]); -assertEquals(0, era.length); -assertEquals(0, timeZoneName.length); -assertEquals(0, formatMatcher.length); diff --git a/implementation-contributed/v8/intl/date-format/constructor-date-time-style-order.js b/implementation-contributed/v8/intl/date-format/constructor-date-time-style-order.js deleted file mode 100644 index d4d114662fe..00000000000 --- a/implementation-contributed/v8/intl/date-format/constructor-date-time-style-order.js +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-datetime-style - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; -let weekday = new Array(); -let year = new Array(); -let month = new Array(); -let day = new Array(); -let hour = new Array(); -let minute = new Array(); -let second = new Array(); -let localeMatcher = new Array(); -let hour12 = new Array(); -let hourCycle = new Array(); -let dateStyle = new Array(); -let timeStyle = new Array(); -let timeZone = new Array(); -let era = new Array(); -let timeZoneName = new Array(); -let formatMatcher = new Array(); - -new Intl.DateTimeFormat(['en-US'], { - get weekday() { - weekday.push(++getCount); - }, - get year() { - year.push(++getCount); - }, - get month() { - month.push(++getCount); - }, - get day() { - day.push(++getCount); - }, - get hour() { - hour.push(++getCount); - }, - get minute() { - minute.push(++getCount); - }, - get second() { - second.push(++getCount); - }, - get localeMatcher() { - localeMatcher.push(++getCount); - }, - get hour12() { - hour12.push(++getCount); - }, - get hourCycle() { - hourCycle.push(++getCount); - }, - get timeZone() { - timeZone.push(++getCount); - }, - get dateStyle() { - dateStyle.push(++getCount); - return "full"; - }, - get timeStyle() { - timeStyle.push(++getCount); - return "full"; - }, - get era() { - era.push(++getCount); - }, - get timeZoneName() { - timeZoneName.push(++getCount); - }, - get formatMatcher() { - formatMatcher.push(++getCount); - } -}); - -assertEquals(1, weekday.length); -assertEquals(1, weekday[0]); -assertEquals(1, year.length); -assertEquals(2, year[0]); -assertEquals(1, month.length); -assertEquals(3, month[0]); -assertEquals(1, day.length); -assertEquals(4, day[0]); -assertEquals(1, hour.length); -assertEquals(5, hour[0]); -assertEquals(1, minute.length); -assertEquals(6, minute[0]); -assertEquals(1, second.length); -assertEquals(7, second[0]); -assertEquals(1, localeMatcher.length); -assertEquals(8, localeMatcher[0]); -assertEquals(1, hour12.length); -assertEquals(9, hour12[0]); -assertEquals(1, hourCycle.length); -assertEquals(10, hourCycle[0]); -assertEquals(1, timeZone.length); -assertEquals(11, timeZone[0]); -assertEquals(1, dateStyle.length); -assertEquals(12, dateStyle[0]); -assertEquals(1, timeStyle.length); -assertEquals(13, timeStyle[0]); -assertEquals(0, era.length); -assertEquals(0, timeZoneName.length); -assertEquals(0, formatMatcher.length); diff --git a/implementation-contributed/v8/intl/date-format/constructor-date-time-style.js b/implementation-contributed/v8/intl/date-format/constructor-date-time-style.js deleted file mode 100644 index f4bc40b3968..00000000000 --- a/implementation-contributed/v8/intl/date-format/constructor-date-time-style.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-datetime-style - -var validStyle = ["full", "long", "medium", "short", undefined]; -var invalidStyle = ["narrow", "numeric"]; - -validStyle.forEach(function(dateStyle) { - validStyle.forEach(function(timeStyle) { - assertDoesNotThrow(() => - new Intl.DateTimeFormat("en", {dateStyle, timeStyle})); - }); - - invalidStyle.forEach(function(timeStyle) { - assertThrows(() => - new Intl.DateTimeFormat("en", {dateStyle, timeStyle}), RangeError); - }); -} -); - -invalidStyle.forEach(function(dateStyle) { - validStyle.forEach(function(timeStyle) { - assertThrows(() => - new Intl.DateTimeFormat("en", {dateStyle, timeStyle}), RangeError); - }); - invalidStyle.forEach(function(timeStyle) { - assertThrows(() => - new Intl.DateTimeFormat("en", {dateStyle, timeStyle}), RangeError); - }); -} -); diff --git a/implementation-contributed/v8/intl/date-format/constructor-no-style-order.js b/implementation-contributed/v8/intl/date-format/constructor-no-style-order.js deleted file mode 100644 index bd4bc4cc379..00000000000 --- a/implementation-contributed/v8/intl/date-format/constructor-no-style-order.js +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-datetime-style - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; -let weekday = new Array(); -let year = new Array(); -let month = new Array(); -let day = new Array(); -let hour = new Array(); -let minute = new Array(); -let second = new Array(); -let localeMatcher = new Array(); -let hour12 = new Array(); -let hourCycle = new Array(); -let dateStyle = new Array(); -let timeStyle = new Array(); -let timeZone = new Array(); -let era = new Array(); -let timeZoneName = new Array(); -let formatMatcher = new Array(); - -new Intl.DateTimeFormat(['en-US'], { - get weekday() { - weekday.push(++getCount); - }, - get year() { - year.push(++getCount); - }, - get month() { - month.push(++getCount); - }, - get day() { - day.push(++getCount); - }, - get hour() { - hour.push(++getCount); - }, - get minute() { - minute.push(++getCount); - }, - get second() { - second.push(++getCount); - }, - get localeMatcher() { - localeMatcher.push(++getCount); - }, - get hour12() { - hour12.push(++getCount); - }, - get hourCycle() { - hourCycle.push(++getCount); - }, - get timeZone() { - timeZone.push(++getCount); - }, - get dateStyle() { - dateStyle.push(++getCount); - }, - get timeStyle() { - timeStyle.push(++getCount); - }, - get era() { - era.push(++getCount); - }, - get timeZoneName() { - timeZoneName.push(++getCount); - }, - get formatMatcher() { - formatMatcher.push(++getCount); - } -}); - -assertEquals(2, weekday.length); -assertEquals(1, weekday[0]); -assertEquals(1, year.length); -assertEquals(2, year[0]); -assertEquals(1, month.length); -assertEquals(3, month[0]); -assertEquals(1, day.length); -assertEquals(4, day[0]); -assertEquals(2, hour.length); -assertEquals(5, hour[0]); -assertEquals(2, minute.length); -assertEquals(6, minute[0]); -assertEquals(2, second.length); -assertEquals(7, second[0]); -assertEquals(1, localeMatcher.length); -assertEquals(8, localeMatcher[0]); -assertEquals(1, hour12.length); -assertEquals(9, hour12[0]); -assertEquals(1, hourCycle.length); -assertEquals(10, hourCycle[0]); -assertEquals(1, timeZone.length); -assertEquals(11, timeZone[0]); -assertEquals(1, dateStyle.length); -assertEquals(12, dateStyle[0]); -assertEquals(1, timeStyle.length); -assertEquals(13, timeStyle[0]); -assertEquals(14, weekday[1]); -assertEquals(1, era.length); -assertEquals(15, era[0]); -assertEquals(16, hour[1]); -assertEquals(17, minute[1]); -assertEquals(18, second[1]); -assertEquals(1, timeZoneName.length); -assertEquals(19, timeZoneName[0]); -assertEquals(1, formatMatcher.length); -assertEquals(20, formatMatcher[0]); diff --git a/implementation-contributed/v8/intl/date-format/constructor-order.js b/implementation-contributed/v8/intl/date-format/constructor-order.js deleted file mode 100644 index 54f37966295..00000000000 --- a/implementation-contributed/v8/intl/date-format/constructor-order.js +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; -let weekday = new Array(); -let year = new Array(); -let month = new Array(); -let day = new Array(); -let hour = new Array(); -let minute = new Array(); -let second = new Array(); -let localeMatcher = new Array(); -let hour12 = new Array(); -let hourCycle = new Array(); -let timeZone = new Array(); -let era = new Array(); -let timeZoneName = new Array(); -let formatMatcher = new Array(); - -new Intl.DateTimeFormat(['en-US'], { - get weekday() { - weekday.push(++getCount); - }, - get year() { - year.push(++getCount); - }, - get month() { - month.push(++getCount); - }, - get day() { - day.push(++getCount); - }, - get hour() { - hour.push(++getCount); - }, - get minute() { - minute.push(++getCount); - }, - get second() { - second.push(++getCount); - }, - get localeMatcher() { - localeMatcher.push(++getCount); - }, - get hour12() { - hour12.push(++getCount); - }, - get hourCycle() { - hourCycle.push(++getCount); - }, - get timeZone() { - timeZone.push(++getCount); - }, - get era() { - era.push(++getCount); - }, - get timeZoneName() { - timeZoneName.push(++getCount); - }, - get formatMatcher() { - formatMatcher.push(++getCount); - } -}); - -assertEquals(2, weekday.length); -assertEquals(1, weekday[0]); -assertEquals(1, year.length); -assertEquals(2, year[0]); -assertEquals(1, month.length); -assertEquals(3, month[0]); -assertEquals(1, day.length); -assertEquals(4, day[0]); -assertEquals(2, hour.length); -assertEquals(5, hour[0]); -assertEquals(2, minute.length); -assertEquals(6, minute[0]); -assertEquals(2, second.length); -assertEquals(7, second[0]); -assertEquals(1, localeMatcher.length); -assertEquals(8, localeMatcher[0]); -assertEquals(1, hour12.length); -assertEquals(9, hour12[0]); -assertEquals(1, hourCycle.length); -assertEquals(10, hourCycle[0]); -assertEquals(1, timeZone.length); -assertEquals(11, timeZone[0]); -assertEquals(12, weekday[1]); -assertEquals(1, era.length); -assertEquals(13, era[0]); -assertEquals(14, hour[1]); -assertEquals(15, minute[1]); -assertEquals(16, second[1]); -assertEquals(1, timeZoneName.length); -assertEquals(17, timeZoneName[0]); -assertEquals(1, formatMatcher.length); -assertEquals(18, formatMatcher[0]); diff --git a/implementation-contributed/v8/intl/date-format/constructor-time-style-order.js b/implementation-contributed/v8/intl/date-format/constructor-time-style-order.js deleted file mode 100644 index d35f21a1960..00000000000 --- a/implementation-contributed/v8/intl/date-format/constructor-time-style-order.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-datetime-style - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; -let weekday = new Array(); -let year = new Array(); -let month = new Array(); -let day = new Array(); -let hour = new Array(); -let minute = new Array(); -let second = new Array(); -let localeMatcher = new Array(); -let hour12 = new Array(); -let hourCycle = new Array(); -let dateStyle = new Array(); -let timeStyle = new Array(); -let timeZone = new Array(); -let era = new Array(); -let timeZoneName = new Array(); -let formatMatcher = new Array(); - -new Intl.DateTimeFormat(['en-US'], { - get weekday() { - weekday.push(++getCount); - }, - get year() { - year.push(++getCount); - }, - get month() { - month.push(++getCount); - }, - get day() { - day.push(++getCount); - }, - get hour() { - hour.push(++getCount); - }, - get minute() { - minute.push(++getCount); - }, - get second() { - second.push(++getCount); - }, - get localeMatcher() { - localeMatcher.push(++getCount); - }, - get hour12() { - hour12.push(++getCount); - }, - get hourCycle() { - hourCycle.push(++getCount); - }, - get timeZone() { - timeZone.push(++getCount); - }, - get dateStyle() { - dateStyle.push(++getCount); - }, - get timeStyle() { - timeStyle.push(++getCount); - return "full"; - }, - get era() { - era.push(++getCount); - }, - get timeZoneName() { - timeZoneName.push(++getCount); - }, - get formatMatcher() { - formatMatcher.push(++getCount); - } -}); - -assertEquals(1, weekday.length); -assertEquals(1, weekday[0]); -assertEquals(1, year.length); -assertEquals(2, year[0]); -assertEquals(1, month.length); -assertEquals(3, month[0]); -assertEquals(1, day.length); -assertEquals(4, day[0]); -assertEquals(1, hour.length); -assertEquals(5, hour[0]); -assertEquals(1, minute.length); -assertEquals(6, minute[0]); -assertEquals(1, second.length); -assertEquals(7, second[0]); -assertEquals(1, localeMatcher.length); -assertEquals(8, localeMatcher[0]); -assertEquals(1, hour12.length); -assertEquals(9, hour12[0]); -assertEquals(1, hourCycle.length); -assertEquals(10, hourCycle[0]); -assertEquals(1, timeZone.length); -assertEquals(11, timeZone[0]); -assertEquals(1, dateStyle.length); -assertEquals(12, dateStyle[0]); -assertEquals(1, timeStyle.length); -assertEquals(13, timeStyle[0]); -assertEquals(0, era.length); -assertEquals(0, timeZoneName.length); -assertEquals(0, formatMatcher.length); diff --git a/implementation-contributed/v8/intl/date-format/date-format-to-parts.js b/implementation-contributed/v8/intl/date-format/date-format-to-parts.js deleted file mode 100644 index fd04dc5bd03..00000000000 --- a/implementation-contributed/v8/intl/date-format/date-format-to-parts.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var d = new Date(2016, 11, 15, 14, 10, 34); -var df = Intl.DateTimeFormat("ja", - {hour: 'numeric', minute: 'numeric', second: 'numeric', year: 'numeric', - month: 'numeric', day: 'numeric', timeZoneName: 'short', era: 'short'}); - -var formattedParts = df.formatToParts(d); - -var formattedReconstructedFromParts = formattedParts.map((part) => part.value) - .reduce((accumulated, part) => accumulated + part); -assertEquals(df.format(d), formattedReconstructedFromParts); -// 西暦2016年11月15日 14:10:34 GMT-7 -assertEquals(["era", "year", "literal", "month", "literal", "day", "literal", - "hour", "literal", "minute", "literal", "second", "literal", - "timeZoneName"], formattedParts.map((part) => part.type)); diff --git a/implementation-contributed/v8/intl/date-format/default-locale.js b/implementation-contributed/v8/intl/date-format/default-locale.js deleted file mode 100644 index ecc85da479d..00000000000 --- a/implementation-contributed/v8/intl/date-format/default-locale.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Constructing DateTimeFormat with no locale arguments or with [] -// creates one with default locale. - -var dtf = new Intl.DateTimeFormat([]); - -var options = dtf.resolvedOptions(); - -// Check it's none of these first. -assertFalse(options.locale === 'und'); -assertFalse(options.locale === ''); -assertFalse(options.locale === undefined); - -var dtfNone = new Intl.DateTimeFormat(); -assertEquals(options.locale, dtfNone.resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/date-format/format-is-bound.js b/implementation-contributed/v8/intl/date-format/format-is-bound.js deleted file mode 100644 index fdec1eab016..00000000000 --- a/implementation-contributed/v8/intl/date-format/format-is-bound.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Create default DateTimeFormat. -var dtf = new Intl.DateTimeFormat(); - -// Array we want to iterate, actual dates are not important. -var dateArray = [Date.now(), Date.now(), Date.now()]; - -// It shouldn't throw. -// The format() method should be properly bound to the dtf object. -dateArray.forEach(dtf.format); - -// Formatting a date should work in a direct call. -dtf.format(); - -// format should be bound properly even if created from a non-instance -var legacy = Intl.DateTimeFormat.call( - Object.create(Intl.DateTimeFormat)); -var boundFormat = legacy.format; -assertEquals(dtf.format(12345), legacy.format(12345)); -assertEquals(dtf.format(54321), boundFormat(54321)); diff --git a/implementation-contributed/v8/intl/date-format/format-test.js b/implementation-contributed/v8/intl/date-format/format-test.js deleted file mode 100644 index d79aabe3c72..00000000000 --- a/implementation-contributed/v8/intl/date-format/format-test.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test formatting method with specified date, invalid input. - -var dtf = new Intl.DateTimeFormat('en-US', {timeZone: 'UTC'}); - -var someDate = dtf.format(144313200000); -assertEquals('7/29/1974', someDate); - -var invalidValues = [NaN, Infinity, -Infinity]; -invalidValues.forEach(function(value) { - var error; - try { - dtf.format(value); - } catch (e) { - error = e; - } - - assertTrue(error !== undefined); - assertEquals('RangeError', error.name); -}); - -// https://code.google.com/p/chromium/issues/detail?id=537382 - -assertEquals('11/11/1500', dtf.format(new Date(Date.UTC(1500,10,11,12,0,0)))); diff --git a/implementation-contributed/v8/intl/date-format/format-with-extensions.js b/implementation-contributed/v8/intl/date-format/format-with-extensions.js deleted file mode 100644 index b9eb0fcb1e0..00000000000 --- a/implementation-contributed/v8/intl/date-format/format-with-extensions.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const d = new Date(2018, 5, 21); // 2018-06-21 - -function checkFormat(locale, options, expected) { - let df = new Intl.DateTimeFormat(locale, options); - let resolvedOptions = df.resolvedOptions(); - assertEquals(expected.cal, resolvedOptions.calendar); - assertEquals(expected.numSys, resolvedOptions.numberingSystem); - - let formattedParts = df.formatToParts(d); - let formattedReconstructedFromParts = formattedParts.map((part) => part.value) - .reduce((accumulated, part) => accumulated + part); - let formatted = df.format(d); - - assertEquals(formatted, formattedReconstructedFromParts); - assertEquals(expected.types, formattedParts.map((part) => part.type)); - assertEquals(expected.formatted, formatted); -} - -// Even though the calendar is Chinese, the best pattern search for formatting -// should be done in the base locale (i.e. en or en-GB instead of -// en-u-ca-chinese or en-GB-u-ca-chinese). Otherwise, {year: 'numeric'} would -// results in '35 (wu-su)' where 'wu-su' is the designation for year 35 in the -// 60-year cycle. See https://github.com/tc39/ecma402/issues/225 . -[ - ["en", "gregory", "latn", "2018"], - ["en-GB", "gregory", "latn", "2018"], - ["en-u-ca-chinese", "chinese", "latn", "35"], - ["en-GB-u-ca-chinese", "chinese", "latn", "35"], - ["en-u-ca-chinese-nu-deva", "chinese", "deva", "३५"], - ["en-GB-u-ca-chinese-nu-deva", "chinese", "deva", "३५"], -].forEach(function(entry) { - checkFormat(entry[0], {year: 'numeric'}, - { cal: entry[1], - numSys: entry[2], - formatted: entry[3], - types: ["year"], - }); -}); - -const enUSTypes = ["month", "literal", "day", "literal", "year"]; -const enGBTypes = ["day", "literal", "month", "literal", "year"]; - -[ - ["en", "gregory", "latn", "6/21/2018", enUSTypes], - ["en-GB", "gregory", "latn", "21/06/2018", enGBTypes], - ["en-u-nu-deva", "gregory", "deva", "६/२१/२०१८", enUSTypes], - ["en-u-ca-chinese", "chinese", "latn", "5/8/35", enUSTypes], - ["en-GB-u-ca-chinese", "chinese", "latn", "08/05/35", enGBTypes], - ["en-u-ca-chinese-nu-deva", "chinese", "deva", "५/८/३५", enUSTypes], -].forEach(function(entry) { - checkFormat(entry[0], {}, - { cal: entry[1], - numSys: entry[2], - formatted: entry[3], - types: entry[4], - }); -}); diff --git a/implementation-contributed/v8/intl/date-format/invalid-time.js b/implementation-contributed/v8/intl/date-format/invalid-time.js deleted file mode 100644 index ef625453a05..00000000000 --- a/implementation-contributed/v8/intl/date-format/invalid-time.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var df = new Intl.DateTimeFormat(); - -assertThrows("df.format(Infinity)", RangeError); -assertThrows("df.formatToParts(Infinity)", RangeError); -assertThrows("df.format(-Infinity)", RangeError); -assertThrows("df.formatToParts(-Infinity)", RangeError); -assertThrows("df.format(NaN)", RangeError); -assertThrows("df.formatToParts(NaN)", RangeError); - -// https://crbug.com/774833 -var df2 = new Intl.DateTimeFormat('en', {'hour': 'numeric'}); -Date.prototype.valueOf = "ponies"; -assertEquals(df.format(Date.now()), df.format()); -assertEquals(df2.format(Date.now()), df2.format()); -assertEquals(df.formatToParts(Date.now()), df.formatToParts()); -assertEquals(df2.formatToParts(Date.now()), df2.formatToParts()); diff --git a/implementation-contributed/v8/intl/date-format/month-far-future.js b/implementation-contributed/v8/intl/date-format/month-far-future.js deleted file mode 100644 index a41128c7f0a..00000000000 --- a/implementation-contributed/v8/intl/date-format/month-far-future.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test for crbug.com/801602 . - -var locales = [ - "en-u-ca-gregori", - "fa-u-ca-persian", - "ar-u-ca-islamic-civil", - "ar-u-ca-islamic-umalqura", - "ar-u-ca-islamic-tbla", - "ar-u-ca-islamic-rgsa", - "he-u-ca-hebrew", - "zh-u-ca-chinese", - "ko-u-ca-dangi", - "ja-u-ca-japanese", - "am-u-ca-ethiopic", - "am-u-ca-ethioaa", - "hi-u-ca-indian", - "th-u-ca-buddhist", -]; - -// Used to test with 1.7976931348623157e+308, but it does not work -// any more with TimeClip. Instead, try the largest time value. -var end_of_time = 8.64e15; - -locales.forEach(function(loc) { - var df = new Intl.DateTimeFormat(loc, {month: "long"}); - assertFalse(df.format(end_of_time) == ''); -} -); diff --git a/implementation-contributed/v8/intl/date-format/property-override-date-style.js b/implementation-contributed/v8/intl/date-format/property-override-date-style.js deleted file mode 100644 index 67d9bc53619..00000000000 --- a/implementation-contributed/v8/intl/date-format/property-override-date-style.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-datetime-style - -// Checks for security holes introduced by Object.property overrides. -// For example: -// Object.defineProperty(Array.prototype, 'locale', { -// set: function(value) { -// throw new Error('blah'); -// }, -// configurable: true, -// enumerable: false -// }); -// -// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us'). -// -// First get supported properties. -// Some of the properties are optional, so we request them. -var properties = []; -var options = Intl.DateTimeFormat( - 'en-US', {dateStyle: 'full'}).resolvedOptions(); -for (var prop in options) { - if (options.hasOwnProperty(prop)) { - properties.push(prop); - } -} - -// In the order of Table 6 of -// ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions -var expectedProperties = [ - 'locale', - 'calendar', - 'numberingSystem', - 'timeZone', - 'hourCycle', - 'hour12', - 'weekday', - 'year', - 'month', - 'day', - 'dateStyle', -]; - -assertEquals(expectedProperties.length, properties.length); - -properties.forEach(function(prop) { - assertFalse(expectedProperties.indexOf(prop) === -1); -}); - -taintProperties(properties); - -var locale = Intl.DateTimeFormat().resolvedOptions().locale; diff --git a/implementation-contributed/v8/intl/date-format/property-override-date-time-style.js b/implementation-contributed/v8/intl/date-format/property-override-date-time-style.js deleted file mode 100644 index f51d6f31a67..00000000000 --- a/implementation-contributed/v8/intl/date-format/property-override-date-time-style.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-datetime-style - -// Checks for security holes introduced by Object.property overrides. -// For example: -// Object.defineProperty(Array.prototype, 'locale', { -// set: function(value) { -// throw new Error('blah'); -// }, -// configurable: true, -// enumerable: false -// }); -// -// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us'). - -// First get supported properties. -// Some of the properties are optional, so we request them. -var properties = []; -var options = Intl.DateTimeFormat( - 'en-US', {dateStyle: 'full', timeStyle: 'full'}).resolvedOptions(); -for (var prop in options) { - if (options.hasOwnProperty(prop)) { - properties.push(prop); - } -} - -// In the order of Table 6 of -// ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions -var expectedProperties = [ - 'locale', - 'calendar', - 'numberingSystem', - 'timeZone', - 'hourCycle', - 'hour12', - 'weekday', - 'year', - 'month', - 'day', - 'hour', - 'minute', - 'second', - 'timeZoneName', - 'dateStyle', - 'timeStyle', -]; - -assertEquals(expectedProperties.length, properties.length); - -properties.forEach(function(prop) { - assertFalse(expectedProperties.indexOf(prop) === -1); -}); - -taintProperties(properties); - -var locale = Intl.DateTimeFormat().resolvedOptions().locale; diff --git a/implementation-contributed/v8/intl/date-format/property-override-time-style.js b/implementation-contributed/v8/intl/date-format/property-override-time-style.js deleted file mode 100644 index 1b93ac633f7..00000000000 --- a/implementation-contributed/v8/intl/date-format/property-override-time-style.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-datetime-style - -// Checks for security holes introduced by Object.property overrides. -// For example: -// Object.defineProperty(Array.prototype, 'locale', { -// set: function(value) { -// throw new Error('blah'); -// }, -// configurable: true, -// enumerable: false -// }); -// -// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us'). - -// First get supported properties. -// Some of the properties are optional, so we request them. -var properties = []; -var options = Intl.DateTimeFormat( - 'en-US', {timeStyle: 'full'}).resolvedOptions(); -for (var prop in options) { - if (options.hasOwnProperty(prop)) { - properties.push(prop); - } -} - -// In the order of Table 6 of -// ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions -var expectedProperties = [ - 'locale', - 'calendar', - 'numberingSystem', - 'timeZone', - 'hourCycle', - 'hour12', - 'hour', - 'minute', - 'second', - 'timeZoneName', - 'timeStyle', -]; - -assertEquals(expectedProperties.length, properties.length); - -properties.forEach(function(prop) { - assertFalse(expectedProperties.indexOf(prop) === -1); -}); - -taintProperties(properties); - -var locale = Intl.DateTimeFormat().resolvedOptions().locale; diff --git a/implementation-contributed/v8/intl/date-format/property-override.js b/implementation-contributed/v8/intl/date-format/property-override.js deleted file mode 100644 index 370f82b0c69..00000000000 --- a/implementation-contributed/v8/intl/date-format/property-override.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Checks for security holes introduced by Object.property overrides. -// For example: -// Object.defineProperty(Array.prototype, 'locale', { -// set: function(value) { -// throw new Error('blah'); -// }, -// configurable: true, -// enumerable: false -// }); -// -// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us'). -// -// Update both date-format.js and date-format.cc so they have the same list of -// properties. - -// First get supported properties. -// Some of the properties are optional, so we request them. -var properties = []; -var options = Intl.DateTimeFormat( - 'en-US', {weekday: 'short', era: 'short', year: 'numeric', month: 'short', - day: 'numeric', hour: 'numeric', minute: 'numeric', - second: 'numeric', timeZoneName: 'short'}).resolvedOptions(); -for (var prop in options) { - if (options.hasOwnProperty(prop)) { - properties.push(prop); - } -} - -// In the order of Table 6 of -// ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions -var expectedProperties = [ - 'locale', - 'calendar', - 'numberingSystem', - 'timeZone', - 'hourCycle', - 'hour12', - 'weekday', - 'era', - 'year', - 'month', - 'day', - 'hour', - 'minute', - 'second', - 'timeZoneName', -]; - -assertEquals(expectedProperties.length, properties.length); - -properties.forEach(function(prop) { - assertFalse(expectedProperties.indexOf(prop) === -1); -}); - -taintProperties(properties); - -var locale = Intl.DateTimeFormat().resolvedOptions().locale; diff --git a/implementation-contributed/v8/intl/date-format/resolved-options-is-method.js b/implementation-contributed/v8/intl/date-format/resolved-options-is-method.js deleted file mode 100644 index 0c44778384b..00000000000 --- a/implementation-contributed/v8/intl/date-format/resolved-options-is-method.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that resolvedOptions is a method, not a property getter and that -// the result is mutable. - -var dtf = new Intl.DateTimeFormat(); - -var result = dtf.resolvedOptions(); - -assertTrue(result instanceof Object); - -// Result should be mutable. -result.locale = 'xx'; - -assertEquals(result.locale, 'xx'); diff --git a/implementation-contributed/v8/intl/date-format/resolved-options-unwrap.js b/implementation-contributed/v8/intl/date-format/resolved-options-unwrap.js deleted file mode 100644 index 2aa40648029..00000000000 --- a/implementation-contributed/v8/intl/date-format/resolved-options-unwrap.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test the Intl.DateTimeFormat.prototype.resolvedOptions will properly handle -// 3. Let dtf be ? UnwrapDateTimeFormat(dtf). -var x = Object.create(Intl.DateTimeFormat.prototype); -x = Intl.DateTimeFormat.call(x, 'en'); - -var resolvedOptions = Intl.DateTimeFormat.prototype.resolvedOptions.call(x); -assertEquals(resolvedOptions.locale, 'en') diff --git a/implementation-contributed/v8/intl/date-format/resolved-options.js b/implementation-contributed/v8/intl/date-format/resolved-options.js deleted file mode 100644 index 374960cdb69..00000000000 --- a/implementation-contributed/v8/intl/date-format/resolved-options.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test if resolvedOptions() returns expected fields/values. - -// Default (year, month, day) formatter. -var dtfDefault = Intl.DateTimeFormat('en-US'); -var resolved = dtfDefault.resolvedOptions(); - -assertTrue(resolved.hasOwnProperty('locale')); -assertEquals('en-US', resolved.locale); -assertTrue(resolved.hasOwnProperty('numberingSystem')); -assertEquals('latn', resolved.numberingSystem); -assertTrue(resolved.hasOwnProperty('calendar')); -assertEquals('gregory', resolved.calendar); -assertTrue(resolved.hasOwnProperty('timeZone')); -// TODO(littledan): getDefaultTimeZone() is not available from JavaScript -// assertEquals(getDefaultTimeZone(), resolved.timeZone); -// These are in by default. -assertTrue(resolved.hasOwnProperty('year')); -assertEquals('numeric', resolved.year); -assertTrue(resolved.hasOwnProperty('month')); -assertEquals('numeric', resolved.month); -assertTrue(resolved.hasOwnProperty('day')); -assertEquals('numeric', resolved.day); -// These shouldn't be in by default. -assertFalse(resolved.hasOwnProperty('era')); -assertFalse(resolved.hasOwnProperty('timeZoneName')); -assertFalse(resolved.hasOwnProperty('weekday')); -assertFalse(resolved.hasOwnProperty('hour12')); -assertFalse(resolved.hasOwnProperty('hour')); -assertFalse(resolved.hasOwnProperty('minute')); -assertFalse(resolved.hasOwnProperty('second')); - -// Time formatter. -var dtfTime = Intl.DateTimeFormat( - 'sr-RS', {hour: 'numeric', minute: 'numeric', second: 'numeric'}); -resolved = dtfTime.resolvedOptions(); - -assertTrue(resolved.hasOwnProperty('locale')); -assertTrue(resolved.hasOwnProperty('numberingSystem')); -assertTrue(resolved.hasOwnProperty('calendar')); -assertTrue(resolved.hasOwnProperty('timeZone')); -assertTrue(resolved.hasOwnProperty('hour12')); -assertEquals(false, resolved.hour12); -assertTrue(resolved.hasOwnProperty('hour')); -assertEquals('2-digit', resolved.hour); -assertTrue(resolved.hasOwnProperty('minute')); -assertEquals('2-digit', resolved.minute); -assertTrue(resolved.hasOwnProperty('second')); -assertEquals('2-digit', resolved.second); -// Didn't ask for them. -assertFalse(resolved.hasOwnProperty('year')); -assertFalse(resolved.hasOwnProperty('month')); -assertFalse(resolved.hasOwnProperty('day')); -assertFalse(resolved.hasOwnProperty('era')); -assertFalse(resolved.hasOwnProperty('timeZoneName')); -assertFalse(resolved.hasOwnProperty('weekday')); - -// Full formatter. -var dtfFull = Intl.DateTimeFormat( - 'en-US', {weekday: 'short', era: 'short', year: 'numeric', month: 'short', - day: 'numeric', hour: 'numeric', minute: 'numeric', - second: 'numeric', timeZoneName: 'short', timeZone: 'UTC'}); -resolved = dtfFull.resolvedOptions(); - -assertTrue(resolved.hasOwnProperty('locale')); -assertTrue(resolved.hasOwnProperty('numberingSystem')); -assertTrue(resolved.hasOwnProperty('calendar')); -assertTrue(resolved.hasOwnProperty('timeZone')); -assertTrue(resolved.hasOwnProperty('hour12')); -assertEquals(true, resolved.hour12); -assertTrue(resolved.hasOwnProperty('hour')); -assertTrue(resolved.hasOwnProperty('minute')); -assertTrue(resolved.hasOwnProperty('second')); -assertTrue(resolved.hasOwnProperty('year')); -assertTrue(resolved.hasOwnProperty('month')); -assertTrue(resolved.hasOwnProperty('day')); -assertTrue(resolved.hasOwnProperty('era')); -assertEquals('short', resolved.era); -assertTrue(resolved.hasOwnProperty('timeZoneName')); -assertEquals('short', resolved.timeZoneName); -assertTrue(resolved.hasOwnProperty('weekday')); -assertEquals('short', resolved.weekday); diff --git a/implementation-contributed/v8/intl/date-format/timezone-conversion.js b/implementation-contributed/v8/intl/date-format/timezone-conversion.js deleted file mode 100644 index 1638346dee5..00000000000 --- a/implementation-contributed/v8/intl/date-format/timezone-conversion.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Tests time zone support with conversion. - -df = Intl.DateTimeFormat(undefined, {timeZone: 'America/Los_Angeles'}); -assertEquals('America/Los_Angeles', df.resolvedOptions().timeZone); - -df = Intl.DateTimeFormat(undefined, {timeZone: {toString() { return 'America/Los_Angeles'}}}); -assertEquals('America/Los_Angeles', df.resolvedOptions().timeZone); - -assertThrows(() => Intl.DateTimeFormat( - undefined, {timeZone: {toString() { throw new Error("should throw"); }}})); - -assertThrows(() => Intl.DateTimeFormat( - undefined, {get timeZone() { throw new Error("should throw"); }})); diff --git a/implementation-contributed/v8/intl/date-format/timezone-name.js b/implementation-contributed/v8/intl/date-format/timezone-name.js deleted file mode 100644 index 2ed5c1acaee..00000000000 --- a/implementation-contributed/v8/intl/date-format/timezone-name.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests time zone names. - -// Winter date (PST). -var winter = new Date(2013, 1, 12, 14, 42, 53, 0); - -// Summer date (PDT). -var summer = new Date(2013, 7, 12, 14, 42, 53, 0); - -// Common flags for both formatters. -var flags = { - year: 'numeric', month: 'long', day: 'numeric', - hour : '2-digit', minute : '2-digit', second : '2-digit', - timeZone: 'America/Los_Angeles' -}; - -flags.timeZoneName = "short"; -var dfs = new Intl.DateTimeFormat('en-US', flags); - -assertTrue(dfs.format(winter).indexOf('PST') !== -1); -assertTrue(dfs.format(summer).indexOf('PDT') !== -1); - -flags.timeZoneName = "long"; -var dfl = new Intl.DateTimeFormat('en-US', flags); - -assertTrue(dfl.format(winter).indexOf('Pacific Standard Time') !== -1); -assertTrue(dfl.format(summer).indexOf('Pacific Daylight Time') !== -1); diff --git a/implementation-contributed/v8/intl/date-format/timezone.js b/implementation-contributed/v8/intl/date-format/timezone.js deleted file mode 100644 index 57044d48d8f..00000000000 --- a/implementation-contributed/v8/intl/date-format/timezone.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests time zone support. - -// TODO(littledan): getDefaultTimeZone() is not available from JavaScript -// var df = Intl.DateTimeFormat(); -// assertEquals(getDefaultTimeZone(), df.resolvedOptions().timeZone); - -[ - 'UtC', 'gmt', 'Etc/UTC', 'Etc/GMT', 'Etc/GMT0', 'Etc/GMT+0', - 'etc/gmt-0', 'etc/zulu', 'Etc/universal', 'etc/greenwich' -].forEach((timezone) => { - const df = Intl.DateTimeFormat(undefined, {timeZone: timezone}); - assertEquals('UTC', df.resolvedOptions().timeZone); -}) - -// See test/mjsunit/regress/regress-crbug-364374.js for additional/ tests. - -df = Intl.DateTimeFormat(undefined, {timeZone: 'America/Los_Angeles'}); -assertEquals('America/Los_Angeles', df.resolvedOptions().timeZone); - -df = Intl.DateTimeFormat(undefined, {timeZone: 'Europe/Belgrade'}); -assertEquals('Europe/Belgrade', df.resolvedOptions().timeZone); - -df = Intl.DateTimeFormat(undefined, {timeZone: 'euRope/beLGRade'}); -assertEquals('Europe/Belgrade', df.resolvedOptions().timeZone); - -// Etc/GMT-14 to Etc/GMT+12 are valid. -df = Intl.DateTimeFormat(undefined, {timeZone: 'etc/gmt+12'}); -assertEquals('Etc/GMT+12', df.resolvedOptions().timeZone); - -df = Intl.DateTimeFormat(undefined, {timeZone: 'etc/gmt+9'}); -assertEquals('Etc/GMT+9', df.resolvedOptions().timeZone); - -df = Intl.DateTimeFormat(undefined, {timeZone: 'etc/gmt-9'}); -assertEquals('Etc/GMT-9', df.resolvedOptions().timeZone); - -df = Intl.DateTimeFormat(undefined, {timeZone: 'etc/gmt-14'}); -assertEquals('Etc/GMT-14', df.resolvedOptions().timeZone); - -assertThrows('Intl.DateTimeFormat(undefined, {timeZone: \'Etc/GMT+13\'})'); - -// : + - are not allowed, only / _ are. -assertThrows('Intl.DateTimeFormat(undefined, {timeZone: \'GMT+07:00\'})'); -assertThrows('Intl.DateTimeFormat(undefined, {timeZone: \'GMT+0700\'})'); -assertThrows('Intl.DateTimeFormat(undefined, {timeZone: \'GMT-05:00\'})'); -assertThrows('Intl.DateTimeFormat(undefined, {timeZone: \'GMT-0500\'})'); -assertThrows('Intl.DateTimeFormat(undefined, ' + - '{timeZone: \'America/Los-Angeles\'})'); - -// Throws for unsupported time zones. -assertThrows('Intl.DateTimeFormat(undefined, {timeZone: \'Aurope/Belgrade\'})'); diff --git a/implementation-contributed/v8/intl/date-format/unmodified-options.js b/implementation-contributed/v8/intl/date-format/unmodified-options.js deleted file mode 100644 index 4a013660a8c..00000000000 --- a/implementation-contributed/v8/intl/date-format/unmodified-options.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let options = {}; -new Intl.DateTimeFormat(undefined, options); -assertEquals([], Object.getOwnPropertyNames(options)); - -let date = new Date(); -date.toLocaleString(undefined, options); -assertEquals([], Object.getOwnPropertyNames(options)); - -date.toLocaleDateString(undefined, options); -assertEquals([], Object.getOwnPropertyNames(options)); - -date.toLocaleTimeString(undefined, options); -assertEquals([], Object.getOwnPropertyNames(options)); diff --git a/implementation-contributed/v8/intl/default_locale.js b/implementation-contributed/v8/intl/default_locale.js deleted file mode 100644 index 453f5e66ed7..00000000000 --- a/implementation-contributed/v8/intl/default_locale.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Environment Variables: LC_ALL=de - -assertEquals("de", (new Intl.Collator([])).resolvedOptions().locale); -assertEquals("de", (new Intl.Collator(['xx'])).resolvedOptions().locale); -assertEquals("de", (new Intl.Collator(undefined)).resolvedOptions().locale); -assertEquals("de", (new Intl.Collator(undefined, {usage: 'sort'})).resolvedOptions().locale); -assertEquals("de", (new Intl.Collator(undefined, {usage: 'search'})).resolvedOptions().locale); -assertEquals("de", (new Intl.DateTimeFormat([])).resolvedOptions().locale); -assertEquals("de", (new Intl.DateTimeFormat(['xx'])).resolvedOptions().locale); -assertEquals("de", (new Intl.NumberFormat([])).resolvedOptions().locale); -assertEquals("de", (new Intl.NumberFormat(['xx'])).resolvedOptions().locale); -assertEquals("de", (new Intl.v8BreakIterator([])).resolvedOptions().locale); -assertEquals("de", (new Intl.v8BreakIterator(['xx'])).resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/general/CanonicalizeLocaleListTakeLocale.js b/implementation-contributed/v8/intl/general/CanonicalizeLocaleListTakeLocale.js deleted file mode 100644 index e4ff793ccae..00000000000 --- a/implementation-contributed/v8/intl/general/CanonicalizeLocaleListTakeLocale.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --harmony-locale -// -// Test NumberFormat will accept Intl.Locale as first parameter, or -// as in the array. - -let tag = "zh-Hant-TW-u-nu-thai" -let l = new Intl.Locale(tag); - -var nf; -// Test with String -assertDoesNotThrow(() => nf = new Intl.NumberFormat(tag)); -assertEquals(tag, nf.resolvedOptions().locale); - -// Test with Array with one String -assertDoesNotThrow(() => nf = new Intl.NumberFormat([tag])); -assertEquals(tag, nf.resolvedOptions().locale); - -// Test with Array with two String -assertDoesNotThrow(() => nf = new Intl.NumberFormat([tag, "en"])); -assertEquals(tag, nf.resolvedOptions().locale); - -// Test with a Locale -assertDoesNotThrow(() => nf = new Intl.NumberFormat(l)); -assertEquals(tag, nf.resolvedOptions().locale); - -// Test with a Array of one Locale -assertDoesNotThrow(() => nf = new Intl.NumberFormat([l])); -assertEquals(tag, nf.resolvedOptions().locale); - -// Test with a Array of one Locale and a Sring -assertDoesNotThrow(() => nf = new Intl.NumberFormat([l, "en"])); -assertEquals(tag, nf.resolvedOptions().locale); - -// Test DateTimeFormat -var df; -assertDoesNotThrow(() => df = new Intl.DateTimeFormat(tag)); -assertEquals(tag, df.resolvedOptions().locale); -assertDoesNotThrow(() => df = new Intl.DateTimeFormat([tag])); -assertEquals(tag, df.resolvedOptions().locale); - -// Test RelativeTimeFormat -var rtf; -assertDoesNotThrow(() => rtf = new Intl.RelativeTimeFormat(tag)); -assertEquals(tag, rtf.resolvedOptions().locale); -assertDoesNotThrow(() => rtf = new Intl.RelativeTimeFormat([tag])); -assertEquals(tag, rtf.resolvedOptions().locale); - -// Test ListFormat -tag = "zh-Hant-TW" -var lf; -assertDoesNotThrow(() => lf = new Intl.ListFormat(tag)); -assertEquals(tag, lf.resolvedOptions().locale); -assertDoesNotThrow(() => lf = new Intl.ListFormat([tag])); -assertEquals(tag, lf.resolvedOptions().locale); - -// Test Collator -var col; -assertDoesNotThrow(() => col = new Intl.Collator(tag)); -assertEquals(tag, lf.resolvedOptions().locale); -assertDoesNotThrow(() => col = new Intl.Collator([tag])); -assertEquals(tag, lf.resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/general/case-mapping.js b/implementation-contributed/v8/intl/general/case-mapping.js deleted file mode 100644 index 79d16248212..00000000000 --- a/implementation-contributed/v8/intl/general/case-mapping.js +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Some edge cases that unibrow got wrong - -assertEquals("𐐘", "𐑀".toUpperCase()); -assertEquals("𐑀", "𐐘".toLowerCase()); -assertEquals("σ", "Σ".toLowerCase()); - -// Some different paths in the ICU case conversion fastpath - -assertEquals("σς", "\u03A3\u03A3".toLowerCase()); -// Expand sharp s in latin1 fastpath -assertEquals("ASSB", "A\u00DFB".toUpperCase()); -assertEquals("AB", "Ab".toUpperCase()); -// Find first uppercase in fastpath -// Input length < a machine word size -assertEquals("ab", "ab".toLowerCase()); -assertEquals("ab", "aB".toLowerCase()); -assertEquals("AÜ", "aü".toUpperCase()); -assertEquals("AÜ", "AÜ".toUpperCase()); -assertEquals("aü", "aü".toLowerCase()); -assertEquals("aü", "aÜ".toLowerCase()); -assertEquals("aü", "AÜ".toLowerCase()); -assertEquals("aü", "AÜ".toLowerCase()); - -// Input length >= a machine word size -assertEquals("abcdefghij", "abcdefghij".toLowerCase()); -assertEquals("abcdefghij", "abcdefghiJ".toLowerCase()); -assertEquals("abçdefghij", "abçdefghiJ".toLowerCase()); -assertEquals("abçdefghij", "abÇdefghiJ".toLowerCase()); -assertEquals("abcdefghiá", "abcdeFghiá".toLowerCase()); -assertEquals("abcdefghiá", "abcdeFghiÁ".toLowerCase()); - -assertEquals("ABCDEFGHIJ", "ABCDEFGHIJ".toUpperCase()); -assertEquals("ABCDEFGHIJ", "ABCDEFGHIj".toUpperCase()); -assertEquals("ABÇDEFGHIJ", "ABÇDEFGHIj".toUpperCase()); -assertEquals("ABÇDEFGHIJ", "ABçDEFGHIj".toUpperCase()); -assertEquals("ABCDEFGHIÁ", "ABCDEfGHIÁ".toUpperCase()); -assertEquals("ABCDEFGHIÁ", "ABCDEfGHIá".toUpperCase()); - - -// Starts with fastpath, but switches to full Unicode path -// U+00FF is uppercased to U+0178. -assertEquals("AŸ", "aÿ".toUpperCase()); -// U+00B5 (µ) is uppercased to U+039C (Μ) -assertEquals("AΜ", "aµ".toUpperCase()); - -// Buffer size increase -assertEquals("CSSBẶ", "cßbặ".toUpperCase()); -assertEquals("FIFLFFIFFL", "\uFB01\uFB02\uFB03\uFB04".toUpperCase()); -assertEquals("ABCÀCSSA", "abcàcßa".toUpperCase()); -assertEquals("ABCDEFGHIÀCSSA", "ABCDEFGHIàcßa".toUpperCase()); -assertEquals("ABCDEFGHIÀCSSA", "abcdeFghiàcßa".toUpperCase()); - -// OneByte input with buffer size increase: non-fast path -assertEquals("ABCSS", "abCß".toLocaleUpperCase("tr")); - -// More comprehensive tests for "tr", "az" and "lt" are in -// test262/intl402/Strings/* - -// Buffer size decrease with a single locale or locale list. -// In Turkic (tr, az), U+0307 preceded by Capital Letter I is dropped. -assertEquals("abci", "aBcI\u0307".toLocaleLowerCase("tr")); -assertEquals("abci", "aBcI\u0307".toLocaleLowerCase("az")); -assertEquals("abci", "aBcI\u0307".toLocaleLowerCase(["tr", "en"])); - -// Cons string -assertEquals("abcijkl", ("aBcI" + "\u0307jkl").toLocaleLowerCase("tr")); -assertEquals("abcijkl", - ("aB" + "cI" + "\u0307j" + "kl").toLocaleLowerCase("tr")); -assertEquals("abci\u0307jkl", ("aBcI" + "\u0307jkl").toLocaleLowerCase("en")); -assertEquals("abci\u0307jkl", - ("aB" + "cI" + "\u0307j" + "kl").toLocaleLowerCase("en")); -assertEquals("abci\u0307jkl", - ("aB" + "cI" + "\u0307j" + "kl").toLocaleLowerCase("fil")); -assertEquals("abci\u0307jkl", ("aBcI" + "\u0307jkl").toLowerCase()); -assertEquals("abci\u0307jkl", - ("aB" + "cI" + "\u0307j" + "kl").toLowerCase()); -assertEquals("[object arraybuffer]", - (new String(new ArrayBuffer())).toLocaleLowerCase("fil")); -assertEquals("[OBJECT ARRAYBUFFER]", - (new String(new ArrayBuffer())).toLocaleUpperCase("fil")); - -assertEquals("abcde", ("a" + "b" + "cde").toLowerCase()); -assertEquals("ABCDE", ("a" + "b" + "cde").toUpperCase()); -assertEquals("abcde", ("a" + "b" + "cde").toLocaleLowerCase()); -assertEquals("ABCDE", ("a" + "b" + "cde").toLocaleUpperCase()); -assertEquals("abcde", ("a" + "b" + "cde").toLocaleLowerCase("en")); -assertEquals("ABCDE", ("a" + "b" + "cde").toLocaleUpperCase("en")); -assertEquals("abcde", ("a" + "b" + "cde").toLocaleLowerCase("fil")); -assertEquals("ABCDE", ("a" + "b" + "cde").toLocaleUpperCase("fil")); -assertEquals("abcde", ("a" + "b" + "cde").toLocaleLowerCase("longlang")); -assertEquals("ABCDE", ("a" + "b" + "cde").toLocaleUpperCase("longlang")); - -// "tr" and "az" should behave identically. -assertEquals("aBcI\u0307".toLocaleLowerCase("tr"), - "aBcI\u0307".toLocaleLowerCase("az")); -// What matters is the first locale in the locale list. -assertEquals("aBcI\u0307".toLocaleLowerCase(["tr", "en", "fr"]), - "aBcI\u0307".toLocaleLowerCase("tr")); -assertEquals("aBcI\u0307".toLocaleLowerCase(["en", "tr", "az"]), - "aBcI\u0307".toLocaleLowerCase("en")); -assertEquals("aBcI\u0307".toLocaleLowerCase(["en", "tr", "az"]), - "aBcI\u0307".toLowerCase()); - -// An empty locale list is the same as the default locale. Try these tests -// under Turkish and Greek locale. -assertEquals("aBcI\u0307".toLocaleLowerCase([]), - "aBcI\u0307".toLocaleLowerCase()); -assertEquals("aBcI\u0307".toLocaleLowerCase([]), - "aBcI\u0307".toLocaleLowerCase(Intl.GetDefaultLocale)); -assertEquals("άόύώ".toLocaleUpperCase([]), "άόύώ".toLocaleUpperCase()); -assertEquals("άόύώ".toLocaleUpperCase([]), - "άόύώ".toLocaleUpperCase(Intl.GetDefaultLocale)); - - -// English/root locale keeps U+0307 (combining dot above). -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("en")); -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("en-GB")); -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase(["en", "tr"])); -assertEquals("abci\u0307", "aBcI\u0307".toLowerCase()); - -// Anything other than 'tr' and 'az' behave like root for U+0307. -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("fil")); -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("zh-Hant-TW")); -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("i-klingon")); -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("i-enochian")); -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("x-foobar")); - -// Up to 8 chars are allowed for the primary language tag in BCP 47. -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("longlang")); -assertEquals("ABCI\u0307", "aBcI\u0307".toLocaleUpperCase("longlang")); -assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase(["longlang", "tr"])); -assertEquals("ABCI\u0307", "aBcI\u0307".toLocaleUpperCase(["longlang", "tr"])); -assertThrows(() => "abc".toLocaleLowerCase("longlang2"), RangeError); -assertThrows(() => "abc".toLocaleUpperCase("longlang2"), RangeError); -assertThrows(() => "abc".toLocaleLowerCase(["longlang2", "en"]), RangeError); -assertThrows(() => "abc".toLocaleUpperCase(["longlang2", "en"]), RangeError); - -// Greek uppercasing: not covered by intl402/String/*, yet. Tonos (U+0301) and -// other diacritic marks are dropped. See -// http://bugs.icu-project.org/trac/ticket/5456#comment:19 for more examples. -// See also http://bugs.icu-project.org/trac/ticket/12845 . -assertEquals("Α", "α\u0301".toLocaleUpperCase("el")); -assertEquals("Α", "α\u0301".toLocaleUpperCase("el-GR")); -assertEquals("Α", "α\u0301".toLocaleUpperCase("el-Grek")); -assertEquals("Α", "α\u0301".toLocaleUpperCase("el-Grek-GR")); -assertEquals("Α", "ά".toLocaleUpperCase("el")); -assertEquals("ΑΟΫΩ", "άόύώ".toLocaleUpperCase("el")); -assertEquals("ΑΟΫΩ", "α\u0301ο\u0301υ\u0301ω\u0301".toLocaleUpperCase("el")); -assertEquals("ΑΟΫΩ", "άόύώ".toLocaleUpperCase("el")); -assertEquals("ΟΕ", "Ό\u1f15".toLocaleUpperCase("el")); -assertEquals("ΟΕ", "Ο\u0301ε\u0314\u0301".toLocaleUpperCase("el")); -assertEquals("ΡΩΜΕΪΚΑ", "ρωμέικα".toLocaleUpperCase("el")); -assertEquals("ΜΑΪΟΥ, ΤΡΟΛΕΪ", "Μαΐου, τρόλεϊ".toLocaleUpperCase("el")); -assertEquals("ΤΟ ΕΝΑ Ή ΤΟ ΑΛΛΟ.", "Το ένα ή το άλλο.".toLocaleUpperCase("el")); - -// Input and output are identical. -assertEquals("αβγδε", "αβγδε".toLocaleLowerCase("el")); -assertEquals("ΑΒΓΔΕ", "ΑΒΓΔΕ".toLocaleUpperCase("el")); -assertEquals("ΑΒΓΔΕАБ𝐀𝐁", "ΑΒΓΔΕАБ𝐀𝐁".toLocaleUpperCase("el")); -assertEquals("ABCDEÂÓḴ123", "ABCDEÂÓḴ123".toLocaleUpperCase("el")); -// ASCII-only or Latin-1 only: 1-byte -assertEquals("ABCDE123", "ABCDE123".toLocaleUpperCase("el")); -assertEquals("ABCDEÂÓ123", "ABCDEÂÓ123".toLocaleUpperCase("el")); - -// To make sure that the input string is not overwritten in place. -var strings = ["abCdef", "αβγδε", "άόύώ", "аб"]; -for (var s of strings) { - var backupAsArray = s.split(""); - var uppered = s.toLocaleUpperCase("el"); - assertEquals(s, backupAsArray.join("")); -} - -// In other locales, U+0301 is preserved. -assertEquals("Α\u0301Ο\u0301Υ\u0301Ω\u0301", - "α\u0301ο\u0301υ\u0301ω\u0301".toLocaleUpperCase("en")); -assertEquals("Α\u0301Ο\u0301Υ\u0301Ω\u0301", - "α\u0301ο\u0301υ\u0301ω\u0301".toUpperCase()); - -// Plane 1; Deseret and Warang Citi Script. -assertEquals("\u{10400}\u{118A0}", "\u{10428}\u{118C0}".toUpperCase()); -assertEquals("\u{10428}\u{118C0}", "\u{10400}\u{118A0}".toLowerCase()); -// Mathematical Bold {Capital, Small} Letter A do not change. -assertEquals("\u{1D400}\u{1D41A}", "\u{1D400}\u{1D41A}".toUpperCase()); -assertEquals("\u{1D400}\u{1D41A}", "\u{1D400}\u{1D41A}".toLowerCase()); -// Plane 1; New characters in Unicode 8.0 -assertEquals("\u{10C80}", "\u{10CC0}".toUpperCase()); -assertEquals("\u{10CC0}", "\u{10C80}".toLowerCase()); -assertEquals("\u{10C80}", "\u{10CC0}".toLocaleUpperCase()); -assertEquals("\u{10CC0}", "\u{10C80}".toLocaleLowerCase()); -assertEquals("\u{10C80}", "\u{10CC0}".toLocaleUpperCase(["tr"])); -assertEquals("\u{10C80}", "\u{10CC0}".toLocaleUpperCase(["tr"])); -assertEquals("\u{10CC0}", "\u{10C80}".toLocaleLowerCase()); - -// check fast path for Latin-1 supplement (U+00A0 ~ U+00FF) -var latin1Suppl = "\u00A0¡¢£¤¥¦§¨©ª«¬\u00AD®°±²³´µ¶·¸¹º»¼½¾¿" + - "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"; -var latin1SupplLowercased = "\u00A0¡¢£¤¥¦§¨©ª«¬\u00AD®°±²³´µ¶·¸¹º»¼½¾¿" + - "àáâãäåæçèéêëìíîïðñòóôõö×øùúûüýþßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"; -var latin1SupplUppercased = "\u00A0¡¢£¤¥¦§¨©ª«¬\u00AD®°±²³´\u039C¶·¸¹º»¼½¾¿" + - "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞSSÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ÷ØÙÚÛÜÝÞ\u0178"; - -assertEquals(latin1SupplLowercased, latin1Suppl.toLowerCase()); -assertEquals(latin1SupplUppercased, latin1Suppl.toUpperCase()); -assertEquals(latin1SupplLowercased, latin1Suppl.toLocaleLowerCase("de")); -assertEquals(latin1SupplUppercased, latin1Suppl.toLocaleUpperCase("de")); -assertEquals(latin1SupplLowercased, latin1Suppl.toLocaleLowerCase("el")); -assertEquals(latin1SupplUppercased, latin1Suppl.toLocaleUpperCase("el")); -assertEquals(latin1SupplUppercased, latin1Suppl.toLocaleUpperCase("tr")); -assertEquals(latin1SupplLowercased, latin1Suppl.toLocaleLowerCase("tr")); -assertEquals(latin1SupplUppercased, latin1Suppl.toLocaleUpperCase("az")); -assertEquals(latin1SupplLowercased, latin1Suppl.toLocaleLowerCase("az")); -assertEquals(latin1SupplUppercased, latin1Suppl.toLocaleUpperCase("lt")); -// Lithuanian need to have a dot-above for U+00CC(Ì) and U+00CD(Í) when -// lowercasing. -assertEquals("\u00A0¡¢£¤¥¦§¨©ª«¬\u00AD®°±²³´µ¶·¸¹º»¼½¾¿" + - "àáâãäåæçèéêëi\u0307\u0300i\u0307\u0301îïðñòóôõö×øùúûüýþß" + - "àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", - latin1Suppl.toLocaleLowerCase("lt")); diff --git a/implementation-contributed/v8/intl/general/constructor.js b/implementation-contributed/v8/intl/general/constructor.js deleted file mode 100644 index 4fb1389f589..00000000000 --- a/implementation-contributed/v8/intl/general/constructor.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let compatConstructors = [ - {c: Intl.DateTimeFormat, m: "format"}, - {c: Intl.NumberFormat, m: "format"}, -]; - -for (let {c, m} of compatConstructors) { - let i = Object.create(c.prototype); - assertTrue(i instanceof c); - assertThrows(() => i[m], TypeError); - assertEquals(i, c.call(i)); - assertEquals(i[m], i[m]); - assertTrue(i instanceof c); - - for ({c: c2, m: m2} of compatConstructors) { - if (c2 === c) { - assertThrows(() => c2.call(i), TypeError); - } else { - let i2 = c2.call(i); - assertTrue(i2 != i); - assertFalse(i2 instanceof c); - assertTrue(i2 instanceof c2); - assertEquals(i2[m2], i2[m2]); - } - } -} - -let noCompatConstructors = [ - {c: Intl.Collator, m: "compare"}, - {c: Intl.v8BreakIterator, m: "next"}, -]; - -for (let {c, m} of noCompatConstructors) { - let i = Object.create(c.prototype); - assertTrue(i instanceof c); - assertThrows(() => i[m], TypeError); - let i2 = c.call(i); - assertTrue(i2 != i); - assertEquals('function', typeof i2[m]); - assertTrue(i2 instanceof c); -} diff --git a/implementation-contributed/v8/intl/general/empty-handle.js b/implementation-contributed/v8/intl/general/empty-handle.js deleted file mode 100644 index d61896381cb..00000000000 --- a/implementation-contributed/v8/intl/general/empty-handle.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Minimal test case for b/161999. -// We have to check if ObjectTemplate::NewInstance returned empty handle, which -// can happen if there was a stack overflow. -// This test can take some time to fail. - -var didThrowRangeError = false; -try { - var X = '})()'; - function C() { X[C("asd".localeCompare("asdf") < 0)] = C("a"); } - var b = C(C(new Date(Number.b, "").getTime()), - function() { - if (!X.C()) { - } - }[0].b++); -} catch (e) { - if (e instanceof RangeError) { - didThrowRangeError = true; - } -} - -assertTrue(didThrowRangeError); diff --git a/implementation-contributed/v8/intl/general/getCanonicalLocales.js b/implementation-contributed/v8/intl/general/getCanonicalLocales.js deleted file mode 100644 index 65c7fc6e3a8..00000000000 --- a/implementation-contributed/v8/intl/general/getCanonicalLocales.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Ignore the first tag when checking for duplicate subtags. -assertDoesNotThrow(() => Intl.getCanonicalLocales("foobar-foobar")); - -// Ignore duplicate subtags in different namespaces; eg, 'a' vs 'u'. -assertDoesNotThrow(() => Intl.getCanonicalLocales("en-a-ca-Chinese-u-ca-Chinese")); -// Ignore duplicate subtags in U-extension as well. Only the first count. -// See RFC 6067 for details. -assertDoesNotThrow(() => Intl.getCanonicalLocales("en-u-ca-gregory-ca-chinese")); -assertEquals("en-u-ca-gregory", Intl.getCanonicalLocales("en-u-ca-gregory-ca-chinese")[0]); - -// Check duplicate subtags (after the first tag) are detected. -assertThrows(() => Intl.getCanonicalLocales("en-foobar-foobar"), RangeError); diff --git a/implementation-contributed/v8/intl/general/grandfathered_tags_without_preferred_value.js b/implementation-contributed/v8/intl/general/grandfathered_tags_without_preferred_value.js deleted file mode 100644 index 808e50d2088..00000000000 --- a/implementation-contributed/v8/intl/general/grandfathered_tags_without_preferred_value.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[ - // Grandfathered tags without a preferred value in the IANA language - // tag registry. Nonetheless, ICU cooks up a value when canonicalizing. - // v8 works around that ICU issue. - // See https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry . - ["cel-gaulish", "cel-gaulish"], - ["i-default", "i-default"], - ["i-mingo", "i-mingo"], - ["i-enochian", "i-enochian"], - ["zh-min", "zh-min"], - - // Matching should be case-insensitive. - ["I-default", "i-default"], - ["i-DEFAULT", "i-default"], - ["I-DEFAULT", "i-default"], - ["i-DEfauLT", "i-default"], - ["zh-Min", "zh-min"], - ["Zh-min", "zh-min"], -].forEach(([inputLocale, expectedLocale]) => { - const canonicalLocales = Intl.getCanonicalLocales(inputLocale); - assertEquals(canonicalLocales.length, 1); - assertEquals(expectedLocale, canonicalLocales[0]); -}) diff --git a/implementation-contributed/v8/intl/general/invalid-locale.js b/implementation-contributed/v8/intl/general/invalid-locale.js deleted file mode 100644 index c3dd59ad684..00000000000 --- a/implementation-contributed/v8/intl/general/invalid-locale.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Make sure that invalid locales throw RangeError - -var invalid_locales = ["arcdefghl-Latn", "fil-Latn-kxx", "fr-Latn-CAK", - "en-Latin-US", "en-a-foo-9charlong", "en-a-b", - ]; - -for (let locale of invalid_locales) { - assertThrows("var nf = new Intl.NumberFormat('" + locale + "')", RangeError); -} - -var not_so_long_locales = [ - "bs-u-nu-bzcu-cab-cabs-avnlubs-avnihu-zcu-cab-cbs-avnllubs-avnihq-zcu-cab-cbs-ubs-avnihu-cabs-flus-xxd-vnluy", - "bs-u-nu-bzcu-cab-cabs-avnlubs-avnihu-zcu-cab-cbs-avnllubs-avnihq-zcu-cab-cbs-ubs-avnihu-cabs-flus-xxd", - "bs-u-nu-bzcu-cab-cabs-avnlubs-avnihu-zcu", -]; - -for (let locale of not_so_long_locales) { - assertEquals((new Intl.NumberFormat(locale)).resolvedOptions().numberingSystem, - "latn"); -} diff --git a/implementation-contributed/v8/intl/general/language_tags_with_preferred_values.js b/implementation-contributed/v8/intl/general/language_tags_with_preferred_values.js deleted file mode 100644 index 4f2fbbfb2ed..00000000000 --- a/implementation-contributed/v8/intl/general/language_tags_with_preferred_values.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[ - // Redundant tag with preferred value. - ["sgn-de", "gsg"], - ["sgn-de-u-co-phonebk", "gsg-u-co-phonebk"], - - // Matching should be case-insensitive. - ["sgn-De", "gsg"], - ["sgn-BE-FR", "sfb"], - ["Sgn-bE-Fr", "sfb"], - - // deprecated region tag - ["und-Latn-dd", "und-Latn-DE"], - ["und-dd-u-co-phonebk", "und-DE-u-co-phonebk"], - ["de-dd-u-co-phonebk", "de-DE-u-co-phonebk"], - ["de-latn-dd-u-co-phonebk", "de-Latn-DE-u-co-phonebk"], - ["fr-ZR", "fr-CD"], - - // Deprecated [23]-letter language tags - ["in", "id"], - ["in-latn", "id-Latn"], - ["in-latn-id", "id-Latn-ID"], - ["in-latn-id-u-ca-gregory", "id-Latn-ID-u-ca-gregory"], - ["jw", "jv"], - ["aam", "aas"], - ["aam-u-ca-gregory", "aas-u-ca-gregory"], -].forEach(([inputLocale, expectedLocale]) => { - const canonicalLocales = Intl.getCanonicalLocales(inputLocale); - assertEquals(1, canonicalLocales.length); - assertEquals(expectedLocale, canonicalLocales[0]); -}) diff --git a/implementation-contributed/v8/intl/general/mapped-locale.js b/implementation-contributed/v8/intl/general/mapped-locale.js deleted file mode 100644 index 17151b557f4..00000000000 --- a/implementation-contributed/v8/intl/general/mapped-locale.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure that zh locales map properly, i.e. don't map zh-TW to zh. - -var nf = Intl.NumberFormat(['zh-TW'], {localeMatcher: 'lookup'}); -assertEquals('zh-TW', nf.resolvedOptions().locale); - -var nf = Intl.NumberFormat(['zh-Hant-TW'], {localeMatcher: 'lookup'}); -assertEquals('zh-Hant-TW', nf.resolvedOptions().locale); - -var nf = Intl.NumberFormat(['zh-Hant'], {localeMatcher: 'lookup'}); -assertEquals('zh-Hant', nf.resolvedOptions().locale); - -nf = Intl.NumberFormat(['zh'], {localeMatcher: 'lookup'}); -assertEquals('zh', nf.resolvedOptions().locale); - -nf = Intl.NumberFormat(['zh-CN'], {localeMatcher: 'lookup'}); -assertEquals('zh-CN', nf.resolvedOptions().locale); - -nf = Intl.NumberFormat(['zh-Hans-CN'], {localeMatcher: 'lookup'}); -assertEquals('zh-Hans-CN', nf.resolvedOptions().locale); - -nf = Intl.NumberFormat(['zh-Hans'], {localeMatcher: 'lookup'}); -assertEquals('zh-Hans', nf.resolvedOptions().locale); - -nf = Intl.NumberFormat(['en-US'], {localeMatcher: 'lookup'}); -assertEquals('en-US', nf.resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/general/smp-identifier.js b/implementation-contributed/v8/intl/general/smp-identifier.js deleted file mode 100644 index 8a8d2e6b6fd..00000000000 --- a/implementation-contributed/v8/intl/general/smp-identifier.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function toSurrogatePair(c) { - return String.fromCharCode(((c - 0x10000) >>> 10) & 0x3FF | 0xD800) + - String.fromCharCode(c & 0x3FF | 0xDC00); -} - -function testIdStart(c, is_id_start) { - var source = "var " + toSurrogatePair(c); - print(source); - if (is_id_start) { - assertDoesNotThrow(source); - } else { - assertThrows(source); - } -} - -function testIdPart(c, is_id_start) { - var source = "var v" + toSurrogatePair(c); - print(source); - if (is_id_start) { - assertDoesNotThrow(source); - } else { - assertThrows(source); - } -} - -[0x10403, 0x1043C, 0x16F9C, 0x10048, 0x1014D].forEach(function(c) { - testIdStart(c, true); - testIdPart(c, true); -}); - -[0x101FD, 0x11002, 0x104A9].forEach(function(c) { - testIdStart(c, false); - testIdPart(c, true); -}); - -[0x10111, 0x1F4A9].forEach(function(c) { - testIdStart(c, false); - testIdPart(c, false); -}); diff --git a/implementation-contributed/v8/intl/general/supported-locales-of.js b/implementation-contributed/v8/intl/general/supported-locales-of.js deleted file mode 100644 index 556e5258286..00000000000 --- a/implementation-contributed/v8/intl/general/supported-locales-of.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests supportedLocalesOf method. - -var services = [ - Intl.DateTimeFormat, - Intl.Collator, - Intl.NumberFormat, - Intl.PluralRules -]; - -for (const service of services) { - let undef = service.supportedLocalesOf(); - assertEquals([], undef); - - let empty = service.supportedLocalesOf([]); - assertEquals([], empty); - - let strLocale = service.supportedLocalesOf("sr"); - assertEquals("sr", strLocale[0]); - - var locales = ["sr-Thai-RS", "de", "zh-CN"]; - let multiLocale = service.supportedLocalesOf(locales); - assertEquals("sr-Thai-RS", multiLocale[0]); - assertEquals("de", multiLocale[1]); - assertEquals("zh-CN", multiLocale[2]); - - let numLocale = service.supportedLocalesOf(1); - assertEquals([], numLocale); - assertThrows(function() { - numLocale = Intl.Collator.supportedLocalesOf([1]); - }, TypeError); - - extensionLocale = service.supportedLocalesOf("id-u-co-pinyin"); - assertEquals("id-u-co-pinyin", extensionLocale[0]); - - bestFitLocale = service.supportedLocalesOf("de", { - localeMatcher: "best fit" - }); - assertEquals("de", bestFitLocale[0]); - - // Need a better test for "lookup" once it differs from "best fit". - lookupLocale = service.supportedLocalesOf("zh-CN", { - localeMatcher: "lookup" - }); - assertEquals("zh-CN", lookupLocale[0]); - - assertThrows(function() { - service.supportedLocalesOf("id-u-co-pinyin", { localeMatcher: "xyz" }); - }, RangeError); - - privateuseLocale = service.supportedLocalesOf("en-US-x-twain"); - assertEquals("en-US-x-twain", privateuseLocale[0]); - - privateuseLocale2 = service.supportedLocalesOf("x-twain"); - assertEquals(undefined, privateuseLocale2[0]); - - grandfatheredLocale = service.supportedLocalesOf("art-lojban"); - assertEquals(undefined, grandfatheredLocale[0]); - - grandfatheredLocale2 = service.supportedLocalesOf("i-pwn"); - assertEquals(undefined, grandfatheredLocale2[0]); - - unicodeInPrivateuseLocale = service.supportedLocalesOf( - "en-US-x-u-co-phonebk" - ); - assertEquals("en-US-x-u-co-phonebk", unicodeInPrivateuseLocale[0]); -} diff --git a/implementation-contributed/v8/intl/intl.status b/implementation-contributed/v8/intl/intl.status deleted file mode 100644 index 4f3387ab226..00000000000 --- a/implementation-contributed/v8/intl/intl.status +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright 2013 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -[ -[ALWAYS, { -# TODO(jochen): The following test is flaky. - 'overrides/caching': [PASS, FAIL], - - # https://code.google.com/p/v8/issues/detail?id=7481 - 'collator/check-kf-option': [FAIL], - 'collator/check-kn-option': [FAIL], -}], # ALWAYS - -['variant == no_wasm_traps', { - '*': [SKIP], -}], # variant == no_wasm_traps - -['system == windows', { - # noi18n cannot turn on ICU backend for Date - 'relative-time-format/default-locale-fr-CA': [SKIP], - 'relative-time-format/default-locale-pt-BR': [SKIP], - - # Unable to change locale on Windows: - 'default_locale': [SKIP], - - # Unable to change locale and TZ on Windows: - 'regress-7770': [SKIP], -}], # system == windows' - -['system == android', { - # Android's ICU data file does not have the Chinese/Japanese dictionary - # required for the test to pass. - 'break-iterator/zh-break': [SKIP], - # Unable to change locale on Android: - 'relative-time-format/default-locale-fr-CA': [SKIP], - 'relative-time-format/default-locale-pt-BR': [SKIP], - 'default_locale': [SKIP], - # Unable to change locale and TZ on Android: - 'regress-7770': [SKIP], -}], # 'system == android' -] diff --git a/implementation-contributed/v8/intl/list-format/constructor-order.js b/implementation-contributed/v8/intl/list-format/constructor-order.js deleted file mode 100644 index 97f58436b23..00000000000 --- a/implementation-contributed/v8/intl/list-format/constructor-order.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; - -new Intl.ListFormat(['en-US'], { - get localeMatcher() { - assertEquals(0, getCount++); - }, - get type() { - assertEquals(1, getCount++); - }, - get style() { - assertEquals(2, getCount++); - }, -}); -assertEquals(3, getCount); diff --git a/implementation-contributed/v8/intl/list-format/constructor.js b/implementation-contributed/v8/intl/list-format/constructor.js deleted file mode 100644 index d730516c9c8..00000000000 --- a/implementation-contributed/v8/intl/list-format/constructor.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-list-format - -// ListFormat constructor can't be called as function. -assertThrows(() => Intl.ListFormat(['sr']), TypeError); - -// Non-string locale. -// assertThrows(() => new Intl.ListFormat(5), TypeError); - -// Invalid locale string. -assertThrows(() => new Intl.ListFormat(['abcdefghi']), RangeError); - -assertDoesNotThrow(() => new Intl.ListFormat(['sr'], {}), TypeError); - -assertDoesNotThrow(() => new Intl.ListFormat([], {})); - -assertDoesNotThrow(() => new Intl.ListFormat(['fr', 'ar'], {})); - -assertDoesNotThrow(() => new Intl.ListFormat({0: 'ja', 1:'fr'}, {})); - -assertDoesNotThrow(() => new Intl.ListFormat({1: 'ja', 2:'fr'}, {})); - -assertDoesNotThrow(() => new Intl.ListFormat(['sr'])); - -assertDoesNotThrow(() => new Intl.ListFormat()); - -assertDoesNotThrow( - () => new Intl.ListFormat( - ['sr'], { - style: 'short', - type: 'unit' - })); - - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'conjunction'})); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'disjunction'})); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'unit'})); - -assertThrows( - () => new Intl.ListFormat(['sr'], {type: 'standard'}), - RangeError); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {style: 'long'})); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {style: 'short'})); - -assertThrows(() => new Intl.ListFormat(['sr'], {style: 'narrow'}), RangeError); - -assertThrows( - () => new Intl.ListFormat(['sr'], {style: 'giant'}), - RangeError); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'conjunction', style: 'long'})); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'conjunction', style: 'short'})); - -assertThrows( - () => new Intl.ListFormat(['sr'], {type: 'conjunction', style: 'narrow'}), - RangeError); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'disjunction', style: 'long'})); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'disjunction', style: 'short'})); - -assertThrows( - () => new Intl.ListFormat(['sr'], {type: 'disjunction', style: 'narrow'}), - RangeError); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'unit', style: 'long'})); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'unit', style: 'short'})); - -assertDoesNotThrow( - () => new Intl.ListFormat(['sr'], {type: 'unit', style: 'narrow'})); diff --git a/implementation-contributed/v8/intl/list-format/format-en.js b/implementation-contributed/v8/intl/list-format/format-en.js deleted file mode 100644 index d6285379903..00000000000 --- a/implementation-contributed/v8/intl/list-format/format-en.js +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-list-format - -// The following test are not part of the comformance. Just some output in -// English to verify the format does return something reasonable for English. -// It may be changed when we update the CLDR data. -// NOTE: These are UNSPECIFIED behavior in -// http://tc39.github.io/proposal-intl-list-time/ - -let enLongConjunction = new Intl.ListFormat( - ["en"], {style: "long", type: 'conjunction'}); - -assertEquals('', enLongConjunction.format()); -assertEquals('', enLongConjunction.format([])); -assertEquals('a', enLongConjunction.format(['a'])); -assertEquals('b', enLongConjunction.format(['b'])); -assertEquals('a and b', enLongConjunction.format(['a', 'b'])); -assertEquals('a, b, and c', enLongConjunction.format(['a', 'b', 'c'])); -assertEquals('a, b, c, and d', enLongConjunction.format(['a', 'b', 'c', 'd'])); -assertEquals('a, b, c, d, and and', - enLongConjunction.format(['a', 'b', 'c', 'd', 'and'])); - -let enLongDisjunction = new Intl.ListFormat( - ["en"], {style: "long", type: 'disjunction'}); - -assertEquals('', enLongDisjunction.format()); -assertEquals('', enLongDisjunction.format([])); -assertEquals('a', enLongDisjunction.format(['a'])); -assertEquals('b', enLongDisjunction.format(['b'])); -assertEquals('a or b', enLongDisjunction.format(['a', 'b'])); -assertEquals('a, b, or c', enLongDisjunction.format(['a', 'b', 'c'])); -assertEquals('a, b, c, or d', enLongDisjunction.format(['a', 'b', 'c', 'd'])); -assertEquals('a, b, c, d, or or', - enLongDisjunction.format(['a', 'b', 'c', 'd', 'or'])); - -let enLongUnit = new Intl.ListFormat( - ["en"], {style: "long", type: 'unit'}); - -assertEquals('', enLongUnit.format()); -assertEquals('', enLongUnit.format([])); -assertEquals('a', enLongUnit.format(['a'])); -assertEquals('b', enLongUnit.format(['b'])); -assertEquals('a, b', enLongUnit.format(['a', 'b'])); -assertEquals('a, b, c', enLongUnit.format(['a', 'b', 'c'])); -assertEquals('a, b, c, d', enLongUnit.format(['a', 'b', 'c', 'd'])); -assertEquals('a, b, c, d, or', enLongUnit.format(['a', 'b', 'c', 'd', 'or'])); - -let enShortConjunction = new Intl.ListFormat( - ["en"], {style: "short", type: 'conjunction'}); - -assertEquals('', enShortConjunction.format()); -assertEquals('', enShortConjunction.format([])); -assertEquals('a', enShortConjunction.format(['a'])); -assertEquals('b', enShortConjunction.format(['b'])); -assertEquals('a and b', enShortConjunction.format(['a', 'b'])); -assertEquals('a, b, and c', enShortConjunction.format(['a', 'b', 'c'])); -assertEquals('a, b, c, and d', enShortConjunction.format(['a', 'b', 'c', 'd'])); -assertEquals('a, b, c, d, and and', - enShortConjunction.format(['a', 'b', 'c', 'd', 'and'])); - -let enShortDisjunction = new Intl.ListFormat( - ["en"], {style: "short", type: 'disjunction'}); - -assertEquals('', enShortDisjunction.format()); -assertEquals('', enShortDisjunction.format([])); -assertEquals('a', enShortDisjunction.format(['a'])); -assertEquals('b', enShortDisjunction.format(['b'])); -assertEquals('a or b', enShortDisjunction.format(['a', 'b'])); -assertEquals('a, b, or c', enShortDisjunction.format(['a', 'b', 'c'])); -assertEquals('a, b, c, or d', enShortDisjunction.format(['a', 'b', 'c', 'd'])); -assertEquals('a, b, c, d, or or', enShortDisjunction.format(['a', 'b', 'c', 'd', 'or'])); - -let enShortUnit = new Intl.ListFormat( - ["en"], {style: "short", type: 'unit'}); - -assertEquals('', enShortUnit.format()); -assertEquals('', enShortUnit.format([])); -assertEquals('a', enShortUnit.format(['a'])); -assertEquals('b', enShortUnit.format(['b'])); -assertEquals('a, b', enShortUnit.format(['a', 'b'])); -assertEquals('a, b, c', enShortUnit.format(['a', 'b', 'c'])); -assertEquals('a, b, c, d', enShortUnit.format(['a', 'b', 'c', 'd'])); -assertEquals('a, b, c, d, or', enShortUnit.format(['a', 'b', 'c', 'd', 'or'])); - -let enNarrowUnit = new Intl.ListFormat( - ["en"], {style: "narrow", type: 'unit'}); - -assertEquals('', enNarrowUnit.format()); -assertEquals('', enNarrowUnit.format([])); -assertEquals('a', enNarrowUnit.format(['a'])); -assertEquals('b', enNarrowUnit.format(['b'])); -assertEquals('a b', enNarrowUnit.format(['a', 'b'])); -assertEquals('a b c', enNarrowUnit.format(['a', 'b', 'c'])); -assertEquals('a b c d', enNarrowUnit.format(['a', 'b', 'c', 'd'])); -assertEquals('a b c d or', enNarrowUnit.format(['a', 'b', 'c', 'd', 'or'])); diff --git a/implementation-contributed/v8/intl/list-format/format-to-parts.js b/implementation-contributed/v8/intl/list-format/format-to-parts.js deleted file mode 100644 index 64eac823bad..00000000000 --- a/implementation-contributed/v8/intl/list-format/format-to-parts.js +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-list-format - -function assertListFormat(listFormat, input) { - var result; - try { - result = listFormat.formatToParts(input); - } catch (e) { - fail('should not throw exception ' + e); - } - assertTrue(Array.isArray(result)); - if (input) { - assertTrue(result.length >= input.length * 2 - 1); - for (var i = 0, j = 0; i < result.length; i++) { - assertEquals('string', typeof result[i].value); - assertEquals('string', typeof result[i].type); - assertTrue(result[i].type == 'literal' || result[i].type == 'element'); - if (result[i].type == 'element') { - assertEquals(String(input[j++]), result[i].value); - if (i - 1 >= 0) { - assertEquals('literal', result[i - 1].type); - } - if (i + 1 < result.length) { - assertEquals('literal', result[i + 1].type); - } - } - if (result[i].type == 'literal') { - assertTrue(result[i].value.length > 0); - if (i - 1 >= 0) { - assertEquals('element', result[i - 1].type); - } - if (i + 1 < result.length) { - assertEquals('element', result[i + 1].type); - } - } - } - } -} - -function testFormatter(listFormat) { - - assertListFormat(listFormat, []); - assertListFormat(listFormat, undefined); - assertListFormat(listFormat, ['1']); - assertListFormat(listFormat, ['a']); - assertListFormat(listFormat, ['1', 'b']); - assertListFormat(listFormat, ['1', 'b', '3']); - assertListFormat(listFormat, ['a', 'b']); - assertListFormat(listFormat, ['a', 'b', 'c']); - assertListFormat(listFormat, ['a', 'b', 'c', 'd']); - assertListFormat(listFormat, ['作者', '譚永鋒', '1', (new Date()).toString()]); - assertListFormat(listFormat, ['作者', '譚永鋒', '1', 'b', '3']); - // Tricky cases - assertListFormat(listFormat, [' ', 'b', 'c', 'and']); - assertListFormat(listFormat, [' ', 'b', 'c', 'or']); - assertListFormat(listFormat, ['and']); - assertListFormat(listFormat, ['or']); - - assertThrows(() => listFormat.formatToParts(null), TypeError); - assertThrows(() => listFormat.formatToParts([new Date()]), TypeError); - assertThrows(() => listFormat.formatToParts([1]), TypeError); - assertThrows(() => listFormat.formatToParts([1, 'b']), TypeError); - assertThrows(() => listFormat.formatToParts([1, 'b', 3]), TypeError); - assertThrows(() => listFormat.formatToParts([[3, 4]]), TypeError); - assertThrows(() => listFormat.formatToParts([undefined, 'world']), TypeError); - assertThrows(() => listFormat.formatToParts(['hello', undefined]), TypeError); - assertThrows(() => listFormat.formatToParts([undefined]), TypeError); - assertThrows(() => listFormat.formatToParts([null, 'world']), TypeError); - assertThrows(() => listFormat.formatToParts(['hello', null]), TypeError); - assertThrows(() => listFormat.formatToParts([null]), TypeError); - -} -testFormatter(new Intl.ListFormat()); -testFormatter(new Intl.ListFormat(["en"])); -testFormatter(new Intl.ListFormat(["en"], {style: 'long'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'short'})); -assertThrows(() => new Intl.ListFormat(["en"], {style: 'narrow'}), RangeError); -testFormatter(new Intl.ListFormat(["en"], {type: 'conjunction'})); -testFormatter(new Intl.ListFormat(["en"], {type: 'disjunction'})); -testFormatter(new Intl.ListFormat(["en"], {type: 'unit'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'long', type: 'conjunction'})); -testFormatter( - new Intl.ListFormat(["en"], {style: 'short', type: 'conjunction'})); -assertThrows( - () => new Intl.ListFormat( - ["en"], {style: 'narrow', type: 'conjunction'}), RangeError); -testFormatter(new Intl.ListFormat(["en"], {style: 'long', type: 'disjunction'})); -testFormatter( - new Intl.ListFormat(["en"], {style: 'short', type: 'disjunction'})); -assertThrows( - () => new Intl.ListFormat( - ["en"], {style: 'narrow', type: 'disjunction'}), RangeError); -testFormatter(new Intl.ListFormat(["en"], {style: 'long', type: 'unit'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'short', type: 'unit'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'narrow', type: 'unit'})); diff --git a/implementation-contributed/v8/intl/list-format/format.js b/implementation-contributed/v8/intl/list-format/format.js deleted file mode 100644 index fef05c38e02..00000000000 --- a/implementation-contributed/v8/intl/list-format/format.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-list-format - -function assertListFormat(listFormat, input) { - try { - let result = listFormat.format(input); - assertEquals('string', typeof result); - if (input) { - for (var i = 0; i < input.length; i++) { - assertTrue(result.indexOf(input[i]) >= 0); - } - } - } catch (e) { - fail('should not throw exception ' + e); - } -} - -function testFormatter(listFormat) { - assertListFormat(listFormat, []); - assertListFormat(listFormat, undefined); - assertListFormat(listFormat, ['1']); - assertListFormat(listFormat, ['a']); - assertListFormat(listFormat, ['1', 'b']); - assertListFormat(listFormat, ['1', 'b', '3']); - assertListFormat(listFormat, ['a', 'b']); - assertListFormat(listFormat, ['a', 'b', 'c']); - assertListFormat(listFormat, ['a', 'b', 'c', 'd']); - assertListFormat(listFormat, ['作者', '譚永鋒', '1', (new Date()).toString()]); - assertListFormat(listFormat, ['作者', '譚永鋒', '1', 'b', '3']); - - assertThrows(() => listFormat.format(null), TypeError); - assertThrows(() => listFormat.format([new Date()]), TypeError); - assertThrows(() => listFormat.format([1]), TypeError); - assertThrows(() => listFormat.format([1, 'b']), TypeError); - assertThrows(() => listFormat.format([1, 'b', 3]), TypeError); - assertThrows(() => listFormat.format([[3, 4]]), TypeError); - assertThrows(() => listFormat.format([undefined, 'world']), TypeError); - assertThrows(() => listFormat.format(['hello', undefined]), TypeError); - assertThrows(() => listFormat.format([undefined]), TypeError); - assertThrows(() => listFormat.format([null, 'world']), TypeError); - assertThrows(() => listFormat.format(['hello', null]), TypeError); - assertThrows(() => listFormat.format([null]), TypeError); -} -testFormatter(new Intl.ListFormat()); -testFormatter(new Intl.ListFormat(["en"])); -testFormatter(new Intl.ListFormat(["en"], {style: 'long'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'short'})); -assertThrows(() => new Intl.ListFormat( - ["en"], {style: 'narrow'}), RangeError); -testFormatter(new Intl.ListFormat(["en"], {type: 'conjunction'})); -testFormatter(new Intl.ListFormat(["en"], {type: 'disjunction'})); -testFormatter(new Intl.ListFormat(["en"], {type: 'unit'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'long', type: 'conjunction'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'short', type: 'conjunction'})); -assertThrows(() => new Intl.ListFormat( - ["en"], {style: 'narrow', type: 'conjunction'}), RangeError); -testFormatter(new Intl.ListFormat(["en"], {style: 'long', type: 'disjunction'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'short', type: 'disjunction'})); -assertThrows(() => new Intl.ListFormat( - ["en"], {style: 'narrow', type: 'disjunction'}), RangeError); -testFormatter(new Intl.ListFormat(["en"], {style: 'long', type: 'unit'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'short', type: 'unit'})); -testFormatter(new Intl.ListFormat(["en"], {style: 'narrow', type: 'unit'})); diff --git a/implementation-contributed/v8/intl/list-format/formatToParts-zh.js b/implementation-contributed/v8/intl/list-format/formatToParts-zh.js deleted file mode 100644 index a7204b0b29d..00000000000 --- a/implementation-contributed/v8/intl/list-format/formatToParts-zh.js +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-list-format - -// The following test are not part of the comformance. Just some output in -// Chinese to verify the format does return something reasonable for Chinese. -// It may be changed when we update the CLDR data. -// NOTE: These are UNSPECIFIED behavior in -// http://tc39.github.io/proposal-intl-list-time/ - -let zhLongConjunction = new Intl.ListFormat( - ["zh"], {style: "long", type: 'conjunction'}); - -var parts; -parts = zhLongConjunction.formatToParts(); -assertEquals(0, parts.length); - -parts = zhLongConjunction.formatToParts([]); -assertEquals(0, parts.length); - -parts = zhLongConjunction.formatToParts(['譚永鋒']); -assertEquals(1, parts.length); -assertEquals('譚永鋒', parts[0].value); -assertEquals('element', parts[0].type); - -parts = zhLongConjunction.formatToParts(['譚永鋒', '劉新宇']); -assertEquals(3, parts.length); -assertEquals('譚永鋒', parts[0].value); -assertEquals('element', parts[0].type); -assertEquals('和', parts[1].value); -assertEquals('literal', parts[1].type); -assertEquals('劉新宇', parts[2].value); -assertEquals('element', parts[2].type); - -parts = zhLongConjunction.formatToParts(['黄子容', '譚永鋒', '劉新宇']); -assertEquals(5, parts.length); -assertEquals('黄子容', parts[0].value); -assertEquals('element', parts[0].type); -assertEquals('、', parts[1].value); -assertEquals('literal', parts[1].type); -assertEquals('譚永鋒', parts[2].value); -assertEquals('element', parts[2].type); -assertEquals('和', parts[3].value); -assertEquals('literal', parts[3].type); -assertEquals('劉新宇', parts[4].value); -assertEquals('element', parts[4].type); - -parts = zhLongConjunction.formatToParts(['黄子容', '譚永鋒', '劉新宇', '朱君毅']); -assertEquals(7, parts.length); -assertEquals('黄子容', parts[0].value); -assertEquals('element', parts[0].type); -assertEquals('、', parts[1].value); -assertEquals('literal', parts[1].type); -assertEquals('譚永鋒', parts[2].value); -assertEquals('element', parts[2].type); -assertEquals('、', parts[3].value); -assertEquals('literal', parts[3].type); -assertEquals('劉新宇', parts[4].value); -assertEquals('element', parts[4].type); -assertEquals('和', parts[5].value); -assertEquals('literal', parts[5].type); -assertEquals('朱君毅', parts[6].value); -assertEquals('element', parts[6].type); - -let zhShortDisjunction = new Intl.ListFormat( - ["zh"], {style: "short", type: 'disjunction'}); -parts = zhShortDisjunction.formatToParts(); -assertEquals(0, parts.length); - -parts = zhShortDisjunction.formatToParts([]); -assertEquals(0, parts.length); - -parts = zhShortDisjunction.formatToParts(['譚永鋒']); -assertEquals(1, parts.length); -assertEquals('譚永鋒', parts[0].value); -assertEquals('element', parts[0].type); - -parts = zhShortDisjunction.formatToParts(['譚永鋒', '劉新宇']); -assertEquals(3, parts.length); -assertEquals('譚永鋒', parts[0].value); -assertEquals('element', parts[0].type); -assertEquals('或', parts[1].value); -assertEquals('literal', parts[1].type); -assertEquals('劉新宇', parts[2].value); -assertEquals('element', parts[2].type); - -parts = zhShortDisjunction.formatToParts(['黄子容', '譚永鋒', '劉新宇']); -assertEquals(5, parts.length); -assertEquals('黄子容', parts[0].value); -assertEquals('element', parts[0].type); -assertEquals('、', parts[1].value); -assertEquals('literal', parts[1].type); -assertEquals('譚永鋒', parts[2].value); -assertEquals('element', parts[2].type); -assertEquals('或', parts[3].value); -assertEquals('literal', parts[3].type); -assertEquals('劉新宇', parts[4].value); -assertEquals('element', parts[4].type); - -parts = zhShortDisjunction.formatToParts(['黄子容', '譚永鋒', '劉新宇', '朱君毅']); -assertEquals(7, parts.length); -assertEquals('黄子容', parts[0].value); -assertEquals('element', parts[0].type); -assertEquals('、', parts[1].value); -assertEquals('literal', parts[1].type); -assertEquals('譚永鋒', parts[2].value); -assertEquals('element', parts[2].type); -assertEquals('、', parts[3].value); -assertEquals('literal', parts[3].type); -assertEquals('劉新宇', parts[4].value); -assertEquals('element', parts[4].type); -assertEquals('或', parts[5].value); -assertEquals('literal', parts[5].type); -assertEquals('朱君毅', parts[6].value); - -let zhNarrowUnit = new Intl.ListFormat( - ["zh"], {style: "narrow", type: 'unit'}); - -parts = zhNarrowUnit.formatToParts(); -assertEquals(0, parts.length); - -parts = zhNarrowUnit.formatToParts([]); -assertEquals(0, parts.length); - -parts = zhNarrowUnit.formatToParts(['3英哩']); -assertEquals(1, parts.length); -assertEquals('3英哩', parts[0].value); -assertEquals('element', parts[0].type); - -parts = zhNarrowUnit.formatToParts(['3英哩', '4碼']); -assertEquals(2, parts.length); -assertEquals('3英哩', parts[0].value); -assertEquals('element', parts[0].type); -assertEquals('4碼', parts[1].value); -assertEquals('element', parts[1].type); - -parts = zhNarrowUnit.formatToParts(['3英哩', '4碼', '5英尺']); -assertEquals(3, parts.length); -assertEquals('3英哩', parts[0].value); -assertEquals('element', parts[0].type); -assertEquals('4碼', parts[1].value); -assertEquals('element', parts[1].type); -assertEquals('5英尺', parts[2].value); -assertEquals('element', parts[2].type); - -parts = zhNarrowUnit.formatToParts(['3英哩', '4碼', '5英尺','7英吋']); -assertEquals(4, parts.length); -assertEquals('3英哩', parts[0].value); -assertEquals('element', parts[0].type); -assertEquals('4碼', parts[1].value); -assertEquals('element', parts[1].type); -assertEquals('5英尺', parts[2].value); -assertEquals('element', parts[2].type); -assertEquals('7英吋', parts[3].value); -assertEquals('element', parts[3].type); diff --git a/implementation-contributed/v8/intl/list-format/resolved-options.js b/implementation-contributed/v8/intl/list-format/resolved-options.js deleted file mode 100644 index b5662718e5e..00000000000 --- a/implementation-contributed/v8/intl/list-format/resolved-options.js +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-list-format - -let listFormat = new Intl.ListFormat(); -// The default style is 'long' -assertEquals('long', listFormat.resolvedOptions().style); - -// The default type is 'conjunction' -assertEquals('conjunction', listFormat.resolvedOptions().type); - -assertEquals( - 'short', - (new Intl.ListFormat(['sr'], {style: 'short'})) - .resolvedOptions().style); - -assertEquals( - 'conjunction', - (new Intl.ListFormat(['sr'], {style: 'short'})) - .resolvedOptions().type); - -assertEquals( - 'long', - (new Intl.ListFormat(['sr'], {style: 'long'})) - .resolvedOptions().style); - -assertEquals( - 'conjunction', - (new Intl.ListFormat(['sr'], {style: 'long'})) - .resolvedOptions().type); - -assertEquals( - 'conjunction', - (new Intl.ListFormat(['sr'], {type: 'conjunction'})) - .resolvedOptions().type); - -assertEquals( - 'long', - (new Intl.ListFormat(['sr'], {type: 'conjunction'})) - .resolvedOptions().style); - -assertEquals( - 'disjunction', - (new Intl.ListFormat(['sr'], {type: 'disjunction'})) - .resolvedOptions().type); - -assertEquals( - 'long', - (new Intl.ListFormat(['sr'], {type: 'disjunction'})) - .resolvedOptions().style); - -assertEquals( - 'unit', - (new Intl.ListFormat(['sr'], {type: 'unit'})) - .resolvedOptions().type); - -assertEquals( - 'long', - (new Intl.ListFormat(['sr'], {type: 'unit'})) - .resolvedOptions().style); - -assertEquals( - 'conjunction', - (new Intl.ListFormat(['sr'], {style: 'long', type: 'conjunction'})) - .resolvedOptions().type); - -assertEquals( - 'long', - (new Intl.ListFormat(['sr'], {style: 'long', type: 'conjunction'})) - .resolvedOptions().style); - -assertEquals( - 'conjunction', - (new Intl.ListFormat(['sr'], {style: 'short', type: 'conjunction'})) - .resolvedOptions().type); - -assertEquals( - 'short', - (new Intl.ListFormat(['sr'], {style: 'short', type: 'conjunction'})) - .resolvedOptions().style); - -assertEquals( - 'disjunction', - (new Intl.ListFormat(['sr'], {style: 'long', type: 'disjunction'})) - .resolvedOptions().type); - -assertEquals( - 'long', - (new Intl.ListFormat(['sr'], {style: 'long', type: 'disjunction'})) - .resolvedOptions().style); - -assertEquals( - 'disjunction', - (new Intl.ListFormat(['sr'], {style: 'short', type: 'disjunction'})) - .resolvedOptions().type); - -assertEquals( - 'short', - (new Intl.ListFormat(['sr'], {style: 'short', type: 'disjunction'})) - .resolvedOptions().style); - -assertEquals( - 'unit', - (new Intl.ListFormat(['sr'], {style: 'long', type: 'unit'})) - .resolvedOptions().type); - -assertEquals( - 'long', - (new Intl.ListFormat(['sr'], {style: 'long', type: 'unit'})) - .resolvedOptions().style); - -assertEquals( - 'unit', - (new Intl.ListFormat(['sr'], {style: 'short', type: 'unit'})) - .resolvedOptions().type); - -assertEquals( - 'short', - (new Intl.ListFormat(['sr'], {style: 'short', type: 'unit'})) - .resolvedOptions().style); - -assertEquals( - 'unit', - (new Intl.ListFormat(['sr'], {style: 'narrow', type: 'unit'})) - .resolvedOptions().type); - -assertEquals( - 'narrow', - (new Intl.ListFormat(['sr'], {style: 'narrow', type: 'unit'})) - .resolvedOptions().style); - -assertEquals( - 'ar', - (new Intl.ListFormat(['ar'])).resolvedOptions().locale); - -assertEquals( - 'ar', - (new Intl.ListFormat(['ar', 'en'])).resolvedOptions().locale); - -assertEquals( - 'fr', - (new Intl.ListFormat(['fr', 'en'])).resolvedOptions().locale); - -assertEquals( - 'ar', - (new Intl.ListFormat(['xyz', 'ar'])).resolvedOptions().locale); - -assertEquals( - 'ar', - (new Intl.ListFormat(['i-default', 'ar'])).resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/list-format/supported-locale.js b/implementation-contributed/v8/intl/list-format/supported-locale.js deleted file mode 100644 index 1eac25d618e..00000000000 --- a/implementation-contributed/v8/intl/list-format/supported-locale.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-list-format -assertEquals(typeof Intl.ListFormat.supportedLocalesOf, "function", - "Intl.ListFormat.supportedLocalesOf should be a function"); - -var undef = Intl.ListFormat.supportedLocalesOf(); -assertEquals([], undef); - -var empty = Intl.ListFormat.supportedLocalesOf([]); -assertEquals([], empty); - -var strLocale = Intl.ListFormat.supportedLocalesOf('sr'); -assertEquals('sr', strLocale[0]); - -var multiLocale = ['sr-Thai-RS', 'de', 'zh-CN']; -assertEquals(multiLocale, Intl.ListFormat.supportedLocalesOf(multiLocale)); diff --git a/implementation-contributed/v8/intl/locale/locale-canonicalization.js b/implementation-contributed/v8/intl/locale/locale-canonicalization.js deleted file mode 100644 index cc0478fdb63..00000000000 --- a/implementation-contributed/v8/intl/locale/locale-canonicalization.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-locale - -// Make sure that locale string got canonicalized by the spec, -// keys are sorted and unique, region upper cased, script title cased and -// language lower cased. - -let locale = new Intl.Locale('sr-cyrl-rs-t-ja-u-ca-islamic-x-whatever', { - calendar: 'buddhist', - caseFirst: 'true', - collation: 'phonebk', - hourCycle: 'h23', - caseFirst: 'upper', - numeric: 'true', - numberingSystem: 'roman' -}); - -let expected = - 'sr-Cyrl-RS-t-ja-u-ca-buddhist-co-phonebk-hc-h23-kf-upper-kn-nu-roman-x-whatever'; - -assertEquals(expected, locale.toString()); diff --git a/implementation-contributed/v8/intl/locale/locale-constructor.js b/implementation-contributed/v8/intl/locale/locale-constructor.js deleted file mode 100644 index bf2510553fb..00000000000 --- a/implementation-contributed/v8/intl/locale/locale-constructor.js +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-locale - -// Locale constructor can't be called as function. -assertThrows(() => Intl.Locale('sr'), TypeError); - -// Non-string locale. -assertThrows(() => new Intl.Locale(5), TypeError); -assertThrows(() => new Intl.Locale(Symbol()), TypeError); -assertThrows(() => new Intl.Locale(null), TypeError); -assertThrows(() => new Intl.Locale(undefined), TypeError); -assertThrows(() => new Intl.Locale(false), TypeError); -assertThrows(() => new Intl.Locale(true), TypeError); - -// Invalid locale string. -assertThrows(() => new Intl.Locale('abcdefghi'), RangeError); - -// Options will be force converted into Object. -assertDoesNotThrow(() => new Intl.Locale('sr', 5)); - -// ICU problem - locale length is limited. -// http://bugs.icu-project.org/trac/ticket/13417. -assertThrows( - () => new Intl.Locale( - 'sr-cyrl-rs-t-ja-u-ca-islamic-cu-rsd-tz-uslax-x-whatever', { - calendar: 'buddhist', - caseFirst: 'true', - collation: 'phonebk', - hourCycle: 'h23', - caseFirst: 'upper', - numeric: 'true', - numberingSystem: 'roman', - }), - RangeError); - -// Throws only once during construction. -// Check for all getters to prevent regression. -assertThrows( - () => new Intl.Locale('en-US', { - get calendar() { - throw new Error('foo'); - } - }), - Error); - -assertThrows( - () => new Intl.Locale('en-US', { - get caseFirst() { - throw new Error('foo'); - } - }), - Error); - -assertThrows( - () => new Intl.Locale('en-US', { - get collation() { - throw new Error('foo'); - } - }), - Error); - -assertThrows( - () => new Intl.Locale('en-US', { - get hourCycle() { - throw new Error('foo'); - } - }), - Error); - -assertThrows( - () => new Intl.Locale('en-US', { - get numeric() { - throw new Error('foo'); - } - }), - Error); - -assertThrows( - () => new Intl.Locale('en-US', { - get numberingSystem() { - throw new Error('foo'); - } - }), - Error); - -assertThrows( - () => new Intl.Locale('en-US', { - get language() { - throw new Error('foo'); - } - }), - Error); - -assertThrows( - () => new Intl.Locale('en-US', { - get script() { - throw new Error('foo'); - } - }), - Error); - -assertThrows( - () => new Intl.Locale('en-US', { - get region() { - throw new Error('foo'); - } - }), - Error); - -// There won't be an override for baseName so we don't expect it to throw. -assertDoesNotThrow( - () => new Intl.Locale('en-US', { - get baseName() { - throw new Error('foo'); - } - }), - Error); - -// Preserve the order of getter initialization. -let getCount = 0; -let calendar = -1; -let collation = -1; -let hourCycle = -1; -let caseFirst = -1; -let numeric = -1; -let numberingSystem = -1; - - -new Intl.Locale('en-US', { - get calendar() { - calendar = ++getCount; - }, - get collation() { - collation = ++getCount; - }, - get hourCycle() { - hourCycle = ++getCount; - }, - get caseFirst() { - caseFirst = ++getCount; - }, - get numeric() { - numeric = ++getCount; - }, - get numberingSystem() { - numberingSystem = ++getCount; - }, -}); - -assertEquals(1, calendar); -assertEquals(2, collation); -assertEquals(3, hourCycle); -assertEquals(4, caseFirst); -assertEquals(5, numeric); -assertEquals(6, numberingSystem); - -// Check getter properties against the spec. -function checkProperties(property) { - let desc = Object.getOwnPropertyDescriptor(Intl.Locale.prototype, property); - assertEquals(`get ${property}`, desc.get.name); - assertEquals('function', typeof desc.get) - assertEquals(undefined, desc.set); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); -} - -checkProperties('language'); -checkProperties('script'); -checkProperties('region'); -checkProperties('baseName'); -checkProperties('calendar'); -checkProperties('collation'); -checkProperties('hourCycle'); -checkProperties('caseFirst'); -checkProperties('numeric'); -checkProperties('numberingSystem'); diff --git a/implementation-contributed/v8/intl/locale/locale-properties.js b/implementation-contributed/v8/intl/locale/locale-properties.js deleted file mode 100644 index 9800e8d6cf6..00000000000 --- a/implementation-contributed/v8/intl/locale/locale-properties.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-locale - -// Make sure that locale exposes all required properties. Those not specified -// should have undefined value. - -let locale = new Intl.Locale('sr-cyrl-rs-t-ja-u-ca-islamic-x-whatever', { - calendar: 'buddhist', - caseFirst: 'true', - collation: 'phonebk', - hourCycle: 'h23', - caseFirst: 'upper', - numeric: 'true', - numberingSystem: 'roman' -}); -assertEquals('sr', locale.language); -assertEquals('Cyrl', locale.script); -assertEquals('RS', locale.region); -assertEquals('sr-Cyrl-RS', locale.baseName); -assertEquals('buddhist', locale.calendar); -assertEquals('phonebk', locale.collation); -assertEquals('h23', locale.hourCycle); -assertEquals('upper', locale.caseFirst); -assertEquals(true, locale.numeric); -assertEquals('roman', locale.numberingSystem); -// Not defined, expected to undefined. -assertEquals(undefined, locale.currency); -assertEquals(undefined, locale.timeZone); - -// Test property defined in spec, but not specified in locale. -let missing_property = new Intl.Locale('sr'); -assertEquals(undefined, missing_property.script); diff --git a/implementation-contributed/v8/intl/locale/maximize_minimize.js b/implementation-contributed/v8/intl/locale/maximize_minimize.js deleted file mode 100644 index 823a6670e34..00000000000 --- a/implementation-contributed/v8/intl/locale/maximize_minimize.js +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-locale - -// Make sure that maximize and minimize of all locales work reasonbly. - -assertEquals(new Intl.Locale("zh-TW").maximize().toString(), "zh-Hant-TW", - "zh-TW should maximize to zh-Hant-TW"); -assertEquals(new Intl.Locale("zh-Hant-TW").minimize().toString(), "zh-TW", - "zh-Hant-TW should minimize to zh-TW"); -assertEquals(new Intl.Locale("zh-Hans-CN").minimize().toString(), "zh", - "zh-Hans-CN should minimize to zh"); -assertEquals(new Intl.Locale("zh-CN").minimize().toString(), "zh", - "zh-CN should minimize to zh"); -assertEquals(new Intl.Locale("zh-Hans").minimize().toString(), "zh", - "zh-Hans should minimize to zh"); - -function assertExpandRoundTrip(loc) { - assertEquals( - loc.toString(), loc.maximize().minimize().toString(), loc.toString()); - assertEquals( - loc.toString(), loc.minimize().toString(), loc.toString()); - assertTrue( - loc.maximize().toString().length > loc.toString().length, loc.toString()); -} - -var simpleLocales = [ - "af", "agq", "ak", "am", "ar", "asa", "ast", "as", "az", "bas", "bem", "be", - "bez", "bg", "bm", "bn", "bo", "br", "brx", "bs", "ca", "ccp", "ce", "cgg", - "chr", "ckb", "cs", "cu", "cy", "dav", "da", "de", "dje", "dsb", "dua", "dyo", - "dz", "ebu", "ee", "el", "en", "eo", "es", "et", "eu", "ewo", "fa", "ff", - "fil", "fi", "fo", "fr", "fur", "fy", "ga", "gd", "gl", "gsw", "gu", "guz", - "gv", "haw", "ha", "he", "hi", "hr", "hsb", "hu", "hy", "id", "ig", "ii", - "is", "it", "ja", "jgo", "jmc", "kab", "kam", "ka", "kde", "kea", "khq", "ki", - "kkj", "kk", "kln", "kl", "km", "kn", "kok", "ko", "ksb", "ksf", "ksh", "ks", - "kw", "ky", "lag", "lb", "lg", "lkt", "ln", "lo", "lrc", "lt", "luo", "lu", - "luy", "lv", "mas", "mer", "mfe", "mgh", "mgo", "mg", "mk", "ml", "mn", "mr", - "ms", "mt", "mua", "my", "mzn", "naq", "nb", "nds", "nd", "ne", "nl", "nmg", - "nnh", "nn", "nus", "nyn", "om", "or", "os", "pa", "pl", "prg", "ps", "pt", - "qu", "rm", "rn", "rof", "ro", "ru", "rwk", "rw", "sah", "saq", "sbp", "sd", - "seh", "ses", "se", "sg", "shi", "si", "sk", "sl", "smn", "sn", "so", "sq", - "sr", "sv", "sw", "ta", "teo", "te", "tg", "th", "ti", "tk", "to", "tr", "tt", - "twq", "tzm", "ug", "uk", "ur", "uz", "vai", "vi", "vo", "vun", "wae", "wo", - "xog", "yav", "yi", "yo", "yue", "zgh", "zh", "zu"]; -for (var i = 0; i < simpleLocales.length; i++) { - assertExpandRoundTrip(new Intl.Locale(simpleLocales[i])); -} - -function assertReduceRoundTrip(loc) { - assertEquals( - loc.minimize().toString(), loc.maximize().minimize().toString(), - loc.toString()); - assertEquals( - loc.maximize().toString(), loc.minimize().maximize().toString(), - loc.toString()); - assertTrue( - loc.maximize().toString().length >= loc.toString().length, loc.toString()); - assertTrue( - loc.minimize().toString().length <= loc.toString().length, loc.toString()); -} - -var complexLocales = [ - "af-NA", "af-ZA", "agq-CM", "ak-GH", "am-ET", "ar-001", "ar-AE", "ar-BH", - "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", "ar-IL", "ar-IQ", "ar-JO", - "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", "ar-MR", "ar-OM", "ar-PS", - "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", "ar-SY", "ar-TD", "ar-TN", - "ar-YE", "asa-TZ", "as-IN", "ast-ES", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", - "az-Latn", "bas-CM", "be-BY", "bem-ZM", "bez-TZ", "bg-BG", "bm-ML", "bn-BD", - "bn-IN", "bo-CN", "bo-IN", "br-FR", "brx-IN", "bs-Cyrl-BA", "bs-Cyrl", - "bs-Latn-BA", "bs-Latn", "ca-AD", "ca-ES", "ca-FR", "ca-IT", - "ccp-BD", "ccp-IN", "ce-RU", "cgg-UG", "chr-US", "ckb-Arab-IQ", "ckb-Arab-IR", - "ckb-Arab", "ckb-IQ", "ckb-IR", "ckb-Latn-IQ", "ckb-Latn", "cs-CZ", "cu-RU", - "cy-GB", "da-DK", "da-GL", "dav-KE", "de-AT", "de-BE", "de-CH", "de-DE", - "de-IT", "de-LI", "de-LU", "dje-NE", "dsb-DE", "dua-CM", "dyo-SN", "dz-BT", - "ebu-KE", "ee-GH", "ee-TG", "el-CY", "el-GR", "en-001", "en-150", "en-AG", - "en-AI", "en-AS", "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", - "en-BS", "en-BW", "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", - "en-CX", "en-CY", "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", - "en-FJ", "en-FK", "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", - "en-GM", "en-GU", "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", - "en-IO", "en-JE", "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", - "en-LR", "en-LS", "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", - "en-MU", "en-MW", "en-MY", "en-NA", "en-NF", "en-NG", "en-NL", "en-NR", - "en-NU", "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", - "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", - "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", - "en-TV", "en-TZ", "en-UG", "en-UM", "en-US", "en-VC", - "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo-001", - "es-419", "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", - "es-CU", "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", - "es-IC", "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", - "es-SV", "es-US", "es-UY", "es-VE", "et-EE", "eu-ES", "ewo-CM", "fa-AF", - "fa-IR", "ff-CM", "ff-GN", "ff-MR", "ff-SN", "fi-FI", "fil-PH", "fo-DK", - "fo-FO", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", - "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", - "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", - "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", - "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", - "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr-VU", "fr-WF", "fr-YT", "fur-IT", - "fy-NL", "ga-IE", "gd-GB", "gl-ES", "gsw-CH", "gsw-FR", "gsw-LI", "gu-IN", - "guz-KE", "gv-IM", "ha-GH", "ha-NE", "ha-NG", "haw-US", "he-IL", "hi-IN", - "hr-BA", "hr-HR", "hsb-DE", "hu-HU", "hy-AM", "id-ID", "ig-NG", "ii-CN", - "is-IS", "it-CH", "it-IT", "it-SM", "it-VA", "ja-JP", "jgo-CM", "jmc-TZ", - "kab-DZ", "ka-GE", "kam-KE", "kde-TZ", "kea-CV", "khq-ML", "ki-KE", - "kkj-CM", "kk-KZ", "kl-GL", "kln-KE", "km-KH", "kn-IN", "kok-IN", "ko-KP", - "ko-KR", "ksb-TZ", "ksf-CM", "ksh-DE", "ks-IN", "kw-GB", "ky-KG", "lag-TZ", - "lb-LU", "lg-UG", "lkt-US", "ln-AO", "ln-CD", "ln-CF", "ln-CG", "lo-LA", - "lrc-IQ", "lrc-IR", "lt-LT", "lu-CD", "luo-KE", "luy-KE", "lv-LV", "mas-KE", - "mas-TZ", "mer-KE", "mfe-MU", "mgh-MZ", "mg-MG", "mgo-CM", "mk-MK", "ml-IN", - "mn-MN", "mr-IN", "ms-BN", "ms-MY", "ms-SG", "mt-MT", "mua-CM", "my-MM", - "mzn-IR", "naq-NA", "nb-NO", "nb-SJ", "nds-DE", "nds-NL", "nd-ZW", "ne-IN", - "ne-NP", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", - "nmg-CM", "nnh-CM", "nn-NO", "nus-SS", "nyn-UG", "om-ET", "om-KE", - "or-IN", "os-GE", "os-RU", "pa-Arab-PK", "pa-Guru-IN", "pa-Guru", - "pl-PL", "prg-001", "ps-AF", "pt-AO", "pt-BR", "pt-CH", "pt-CV", "pt-GQ", - "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", "pt-ST", "pt-TL", "qu-BO", - "qu-EC", "qu-PE", "rm-CH", "rn-BI", "rof-TZ", "ro-MD", "ro-RO", "ru-BY", - "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru-UA", "rwk-TZ", "rw-RW", "sah-RU", - "saq-KE", "sbp-TZ", "sd-PK", "se-FI", "seh-MZ", "se-NO", "se-SE", "ses-ML", - "sg-CF", "shi-Latn-MA", "shi-Latn", "shi-Tfng-MA", "shi-Tfng", "si-LK", - "sk-SK", "sl-SI", "smn-FI", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", - "sq-AL", "sq-MK", "sq-XK", "sr-Cyrl-BA", "sr-Cyrl-ME", "sr-Cyrl-RS", - "sr-Cyrl-XK", "sr-Cyrl", "sr-Latn-BA", "sr-Latn-ME", "sr-Latn-RS", - "sr-Latn-XK", "sr-Latn", "sv-AX", "sv-FI", "sv-SE", "sw-CD", "sw-KE", - "sw-TZ", "sw-UG", "ta-IN", "ta-LK", "ta-MY", "ta-SG", "te-IN", "teo-KE", - "teo-UG", "tg-TJ", "th-TH", "ti-ER", "ti-ET", "tk-TM", "to-TO", "tr-CY", - "tr-TR", "tt-RU", "twq-NE", "tzm-MA", "ug-CN", "uk-UA", "ur-IN", "ur-PK", - "uz-Arab-AF", "uz-Cyrl-UZ", "uz-Cyrl", "uz-Latn-UZ", "uz-Latn", - "vai-Latn-LR", "vai-Latn", "vai-Vaii-LR", "vai-Vaii", "vi-VN", "vo-001", - "vun-TZ", "wae-CH", "wo-SN", "xog-UG", "yav-CM", "yi-001", "yo-BJ", "yo-NG", - "yue-Hans-CN", "yue-Hant-HK", "yue-Hant", "zgh-MA", "zh-Hans-CN", - "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", "zh-Hant-HK", - "zh-Hant-MO", "zh-Hant-TW", "zu-ZA"]; -for (var i = 0; i < complexLocales.length; i++) { - assertReduceRoundTrip(new Intl.Locale(complexLocales[i])); -} diff --git a/implementation-contributed/v8/intl/locale/property.js b/implementation-contributed/v8/intl/locale/property.js deleted file mode 100644 index cbe076842fd..00000000000 --- a/implementation-contributed/v8/intl/locale/property.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-locale - -// Make sure that accessing locale property will return undefined instead of -// crash. - -let locale = new Intl.Locale('sr'); - -assertEquals('sr', locale.toString()); -assertEquals('sr', locale.baseName); -assertEquals('sr', locale.language); -assertEquals(undefined, locale.script); -assertEquals(undefined, locale.region); -assertEquals(false, locale.numeric); -assertEquals(undefined, locale.calendar); -assertEquals(undefined, locale.collation); -assertEquals(undefined, locale.hourCycle); -assertEquals(undefined, locale.caseFirst); -assertEquals(undefined, locale.numberingSystem); diff --git a/implementation-contributed/v8/intl/locale/regress-8032.js b/implementation-contributed/v8/intl/locale/regress-8032.js deleted file mode 100644 index b8219b1b505..00000000000 --- a/implementation-contributed/v8/intl/locale/regress-8032.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-locale - -assertThrows(() => new Intl.Locale(''), RangeError); diff --git a/implementation-contributed/v8/intl/not-constructors.js b/implementation-contributed/v8/intl/not-constructors.js deleted file mode 100644 index d21ae868e08..00000000000 --- a/implementation-contributed/v8/intl/not-constructors.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => new Intl.getCanonicalLocales('en'), TypeError); - -let collator = new Intl.Collator('en'); -assertThrows(() => new collator.resolvedOptions(), TypeError); - -assertThrows(() => new Intl.Collator.supportedLocalesOf('en'), TypeError); - -let numberformat = new Intl.NumberFormat('en'); -assertThrows(() => new numberformat.resolvedOptions(), TypeError); - -assertThrows(() => new Intl.NumberFormat.supportedLocalesOf('en'), TypeError); - -let datetimeformat = new Intl.DateTimeFormat('en'); -assertThrows(() => new datetimeformat.resolvedOptions(), TypeError); -assertThrows(() => new datetimeformat.formatToParts(new Date()), TypeError); - -assertThrows(() => new Intl.DateTimeFormat.supportedLocalesOf('en'), TypeError); - -assertThrows(() => new "".localCompare(""), TypeError); - -assertThrows(() => new "".normalize(), TypeError); -assertThrows(() => new "".toLocaleLowerCase(), TypeError); -assertThrows(() => new "".toLocaleUpperCase(), TypeError); -assertThrows(() => new "".toLowerCase(), TypeError); -assertThrows(() => new "".toUpperCase(), TypeError); - -assertThrows(() => new 3..toLocaleString(), TypeError); -assertThrows(() => new (new Date()).toLocaleString(), TypeError); -assertThrows(() => new (new Date()).toLocaleDateString(), TypeError); -assertThrows(() => new (new Date()).toLocaleTimeString(), TypeError); diff --git a/implementation-contributed/v8/intl/number-format/check-digit-ranges.js b/implementation-contributed/v8/intl/number-format/check-digit-ranges.js deleted file mode 100644 index 50f0437d59d..00000000000 --- a/implementation-contributed/v8/intl/number-format/check-digit-ranges.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Digit ranges are obeyed. - -// Invalid ranges -assertThrows('Intl.NumberFormat(undefined, {minimumIntegerDigits: 0})'); -assertThrows('Intl.NumberFormat(undefined, {minimumIntegerDigits: 22})'); -assertThrows('Intl.NumberFormat(undefined, {minimumIntegerDigits: null})'); -assertThrows('Intl.NumberFormat(undefined, {minimumIntegerDigits: Infinity})'); -assertThrows('Intl.NumberFormat(undefined, {minimumIntegerDigits: -Infinity})'); -assertThrows('Intl.NumberFormat(undefined, {minimumIntegerDigits: x})'); - -assertThrows('Intl.NumberFormat(undefined, {minimumFractionDigits: -1})'); -assertThrows('Intl.NumberFormat(undefined, {maximumFractionDigits: 21})'); - -assertThrows('Intl.NumberFormat(undefined, {minimumSignificantDigits: 0})'); -assertThrows('Intl.NumberFormat(undefined, {minimumSignificantDigits: 22})'); -assertThrows('Intl.NumberFormat(undefined, {maximumSignificantDigits: 0})'); -assertThrows('Intl.NumberFormat(undefined, {maximumSignificantDigits: 22})'); -assertThrows('Intl.NumberFormat(undefined, ' + - '{minimumSignificantDigits: 5, maximumSignificantDigits: 2})'); - -// Valid ranges -assertDoesNotThrow('Intl.NumberFormat(undefined, {minimumIntegerDigits: 1})'); -assertDoesNotThrow('Intl.NumberFormat(undefined, {minimumIntegerDigits: 21})'); - -assertDoesNotThrow('Intl.NumberFormat(undefined, {minimumFractionDigits: 0})'); -assertDoesNotThrow('Intl.NumberFormat(undefined, {minimumFractionDigits: 20})'); - -assertDoesNotThrow('Intl.NumberFormat(undefined, ' + - '{minimumSignificantDigits: 1})'); -assertDoesNotThrow('Intl.NumberFormat(undefined, ' + - '{maximumSignificantDigits: 21})'); diff --git a/implementation-contributed/v8/intl/number-format/check-minimum-fraction-digits.js b/implementation-contributed/v8/intl/number-format/check-minimum-fraction-digits.js deleted file mode 100755 index b7d41dfca1a..00000000000 --- a/implementation-contributed/v8/intl/number-format/check-minimum-fraction-digits.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Make sure minimumFractionDigits and maximumFractionDigits are honored - -var nf = new Intl.NumberFormat("en-us", { useGrouping: false, minimumFractionDigits: 4, maximumFractionDigits: 8}); - -assertEquals("12345.6789", nf.format(12345.6789)); -assertEquals("12345.678912", nf.format(12345.678912)); -assertEquals("12345.6700", nf.format(12345.67)); -assertEquals("12345.67891234", nf.format(12345.6789123421)); - -nf = new Intl.NumberFormat("en-us", { useGrouping: false, minimumFractionDigits: 4, maximumFractionDigits: 8, style: 'percent'}); - -assertEquals("12345.6789%", nf.format(123.456789)); -assertEquals("12345.678912%", nf.format(123.45678912)); -assertEquals("12345.6700%", nf.format(123.4567)); -assertEquals("12345.67891234%", nf.format(123.456789123421)); - -nf = new Intl.NumberFormat('en', {minimumFractionDigits: 4, maximumFractionDigits: 8, style: 'currency', currency: 'USD'}); - -assertEquals("$54,306.404797", nf.format(54306.4047970)); -assertEquals("$54,306.4000", nf.format(54306.4)); -assertEquals("$54,306.40000001", nf.format(54306.400000011)); - -// Ensure that appropriate defaults exist when minimum and maximum are not specified - -nf = new Intl.NumberFormat("en-us", { useGrouping: false }); - -assertEquals("12345.679", nf.format(12345.6789)); -assertEquals("12345.679", nf.format(12345.678912)); -assertEquals("12345.67", nf.format(12345.6700)); -assertEquals("12345", nf.format(12345)); -assertEquals("12345.679", nf.format(12345.6789123421)); - -nf = new Intl.NumberFormat("en-us", { useGrouping: false, style: 'percent'}); - -assertEquals("12346%", nf.format(123.456789)); -assertEquals("12346%", nf.format(123.45678912)); -assertEquals("12346%", nf.format(123.456700)); -assertEquals("12346%", nf.format(123.456789123421)); -assertEquals("12345%", nf.format(123.45)); - -// For currency, the minimum or the maximum can be overwritten individually - -nf = new Intl.NumberFormat('en', {minimumFractionDigits: 0, style: 'currency', currency: 'USD'}); - -assertEquals("$54,306.4", nf.format(54306.4047970)); -assertEquals("$54,306.4", nf.format(54306.4)); -assertEquals("$54,306", nf.format(54306)); - -nf = new Intl.NumberFormat('en', {maximumFractionDigits: 3, style: 'currency', currency: 'USD'}); - -assertEquals("$54,306.405", nf.format(54306.4047970)); -assertEquals("$54,306.40", nf.format(54306.4)); -assertEquals("$54,306.00", nf.format(54306)); diff --git a/implementation-contributed/v8/intl/number-format/check-nu-option.js b/implementation-contributed/v8/intl/number-format/check-nu-option.js deleted file mode 100644 index 39c4cbb8cf9..00000000000 --- a/implementation-contributed/v8/intl/number-format/check-nu-option.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -let invalid_nu = [ - "invalid", - "abce", - "finance", - "native", - "traditio", -]; - -// https://tc39.github.io/ecma402/#table-numbering-system-digits -let valid_nu= [ - "arab", - "arabext", - "bali", - "beng", - "deva", - "fullwide", - "gujr", - "guru", - "hanidec", - "khmr", - "knda", - "laoo", - "latn", - "limb", - "mlym", - "mong", - "mymr", - "orya", - "tamldec", - "telu", - "thai", - "tibt", -]; - -let locales = [ - "en", - "ar", -]; - - -invalid_nu.forEach(function(nu) { - let nf = new Intl.NumberFormat(["en-u-nu-" + nu + "-fo-obar"]); - assertEquals("en", nf.resolvedOptions().locale); -} -); - -valid_nu.forEach(function(nu) { - locales.forEach(function(base) { - let l = base + "-u-nu-" + nu; - let nf = new Intl.NumberFormat([l + "-fo-obar"]); - assertEquals(l, nf.resolvedOptions().locale); - }); -} -); diff --git a/implementation-contributed/v8/intl/number-format/constructor-order.js b/implementation-contributed/v8/intl/number-format/constructor-order.js deleted file mode 100644 index db99793bb97..00000000000 --- a/implementation-contributed/v8/intl/number-format/constructor-order.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; - -new Intl.NumberFormat(['en-US'], { - get localeMatcher() { - assertEquals(0, getCount++); - }, - get style() { - assertEquals(1, getCount++); - }, - get currency() { - assertEquals(2, getCount++); - }, - get currencyDisplay() { - assertEquals(3, getCount++); - }, - get minimumIntegerDigits() { - assertEquals(4, getCount++); - }, - get minimumFractionDigits() { - assertEquals(5, getCount++); - }, - get maximumFractionDigits() { - assertEquals(6, getCount++); - }, - get minimumSignificantDigits() { - assertEquals(7, getCount++); - }, - get maximumSignificantDigits() { - assertEquals(8, getCount++); - }, - get useGrouping() { - assertEquals(9, getCount++); - }, -}); -assertEquals(10, getCount); diff --git a/implementation-contributed/v8/intl/number-format/default-locale.js b/implementation-contributed/v8/intl/number-format/default-locale.js deleted file mode 100644 index 7e67176baf4..00000000000 --- a/implementation-contributed/v8/intl/number-format/default-locale.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Constructing NumberFormat with no locale arguments or with [] -// creates one with default locale. - -var nf = new Intl.NumberFormat([]); - -var options = nf.resolvedOptions(); - -// Check it's none of these first. -assertFalse(options.locale === 'und'); -assertFalse(options.locale === ''); -assertFalse(options.locale === undefined); - -var nfNone = new Intl.NumberFormat(); -assertEquals(options.locale, nfNone.resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/number-format/format-currency.js b/implementation-contributed/v8/intl/number-format/format-currency.js deleted file mode 100755 index 0013ebea779..00000000000 --- a/implementation-contributed/v8/intl/number-format/format-currency.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Make sure currency formatting is correct (for USD only displays two decimal -// places, for JPY 0, and for EUR 2). - -var nf_USD = new Intl.NumberFormat(['en'], {style: 'currency', currency: 'USD'}); - -assertEquals("$54,306.40", nf_USD.format(parseFloat(54306.4047970))); - -var nf_JPY = new Intl.NumberFormat(['ja'], - {style: 'currency', currency: 'JPY', currencyDisplay: "code"}); - -assertEquals("JPY\u00a054,306", nf_JPY.format(parseFloat(54306.4047970))); - -var nf_EUR = new Intl.NumberFormat(['pt'], {style: 'currency', currency: 'EUR'}); - -assertEquals("€\u00a01.000,00", nf_EUR.format(1000.00)); diff --git a/implementation-contributed/v8/intl/number-format/format-is-bound.js b/implementation-contributed/v8/intl/number-format/format-is-bound.js deleted file mode 100644 index defb8982e28..00000000000 --- a/implementation-contributed/v8/intl/number-format/format-is-bound.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Create default NumberFormat. -var nf = new Intl.NumberFormat(); - -var beforeCount = Object.getOwnPropertyNames(nf).length; - -// Array we want to iterate, actual numbers are not important. -var numberArray = [1, 2, 3]; - -// It shouldn't throw. -// The format() method should be properly bound to the nf object. -numberArray.forEach(nf.format); - -// Formatting a number should work in a direct call. -nf.format(12345); - -// Reading the format doesn't add any additional property keys -assertEquals(beforeCount, Object.getOwnPropertyNames(nf).length); - -// format should be bound properly even if created from a non-instance -var legacy = Intl.NumberFormat.call(Object.create(Intl.NumberFormat)); -var boundFormat = legacy.format; -assertEquals(nf.format(12345), legacy.format(12345)); -assertEquals(nf.format(54321), boundFormat(54321)); diff --git a/implementation-contributed/v8/intl/number-format/options.js b/implementation-contributed/v8/intl/number-format/options.js deleted file mode 100644 index 80ddc025d18..00000000000 --- a/implementation-contributed/v8/intl/number-format/options.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => new Intl.NumberFormat('en', null)); -assertDoesNotThrow(() => new Intl.NumberFormat('en', undefined)); - -for (let key of [false, true, "foo", Symbol, 1]) { - assertDoesNotThrow(() => new Intl.NumberFormat('en', key)); -} - -assertDoesNotThrow(() => new Intl.NumberFormat('en', {})); -assertDoesNotThrow(() => new Intl.NumberFormat('en', new Proxy({}, {}))); diff --git a/implementation-contributed/v8/intl/number-format/property-override.js b/implementation-contributed/v8/intl/number-format/property-override.js deleted file mode 100644 index 1fbe78e080d..00000000000 --- a/implementation-contributed/v8/intl/number-format/property-override.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Checks for security holes introduced by Object.property overrides. -// For example: -// Object.defineProperty(Array.prototype, 'locale', { -// set: function(value) { -// throw new Error('blah'); -// }, -// configurable: true, -// enumerable: false -// }); -// -// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us'). -// -// Update both number-format.js and number-format.cc so they have the same -// list of properties. - -// First get supported properties. -var properties = []; -// Some properties are optional and won't show up in resolvedOptions if -// they were not requested - currency, currencyDisplay, -// minimumSignificantDigits and maximumSignificantDigits - so we request them. -var options = Intl.NumberFormat( - undefined, {style: 'currency', currency: 'USD', currencyDisplay: 'name', - minimumSignificantDigits: 1, maximumSignificantDigits: 5}). - resolvedOptions(); -for (var prop in options) { - if (options.hasOwnProperty(prop)) { - properties.push(prop); - } -} - -var expectedProperties = [ - 'style', 'locale', 'numberingSystem', - 'currency', 'currencyDisplay', 'useGrouping', - 'minimumIntegerDigits', 'minimumFractionDigits', - 'maximumFractionDigits', 'minimumSignificantDigits', - 'maximumSignificantDigits' -]; - -assertEquals(expectedProperties.length, properties.length); - -properties.forEach(function(prop) { - assertFalse(expectedProperties.indexOf(prop) === -1); -}); - -taintProperties(properties); - -var locale = Intl.NumberFormat(undefined, - {currency: 'USD', currencyDisplay: 'name', - minimumIntegerDigits: 2, - numberingSystem: 'latn'}). - resolvedOptions().locale; diff --git a/implementation-contributed/v8/intl/number-format/resolved-options-is-method.js b/implementation-contributed/v8/intl/number-format/resolved-options-is-method.js deleted file mode 100644 index 1b56716f793..00000000000 --- a/implementation-contributed/v8/intl/number-format/resolved-options-is-method.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that resolvedOptions is a method, not a property getter and that -// the result is mutable. - -var nf = new Intl.NumberFormat(); - -var result = nf.resolvedOptions(); - -assertTrue(result instanceof Object); - -// Result should be mutable. -result.locale = 'xx'; - -assertEquals(result.locale, 'xx'); diff --git a/implementation-contributed/v8/intl/number-format/resolved-options-unwrap.js b/implementation-contributed/v8/intl/number-format/resolved-options-unwrap.js deleted file mode 100644 index 70b40bbea4d..00000000000 --- a/implementation-contributed/v8/intl/number-format/resolved-options-unwrap.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let nf = Object.create(Intl.NumberFormat.prototype); -nf = Intl.NumberFormat.call(nf); -const actual = Intl.NumberFormat.prototype.resolvedOptions.call(nf); - -const expected = new Intl.NumberFormat().resolvedOptions(); -Object.keys(expected).forEach(key => assertEquals(expected[key], actual[key])); -assertEquals(Object.keys(expected).length, Object.keys(actual).length); diff --git a/implementation-contributed/v8/intl/number-format/wont-crash-by-1-or-false.js b/implementation-contributed/v8/intl/number-format/wont-crash-by-1-or-false.js deleted file mode 100644 index 518fe52bdee..00000000000 --- a/implementation-contributed/v8/intl/number-format/wont-crash-by-1-or-false.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Make sure passing 1 or false to patched construtor won't cause crash - -Object.defineProperty(Intl.NumberFormat, Symbol.hasInstance, { value: _ => true }); -assertThrows(() => - Intl.NumberFormat.call(1), TypeError); - -assertThrows(() => - Intl.NumberFormat.call(false), TypeError); diff --git a/implementation-contributed/v8/intl/overrides/caching.js b/implementation-contributed/v8/intl/overrides/caching.js deleted file mode 100644 index abcd64031fe..00000000000 --- a/implementation-contributed/v8/intl/overrides/caching.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Performance test for overriden methods. Makes sure that default case -// is faster (cached) than the general case. - -// Default, cached. -var startTime = new Date(); -for (var i = 0; i < 1000; i++) { - 'a'.localeCompare('c'); -} -var endTime = new Date(); -var cachedTime = endTime.getTime() - startTime.getTime(); - -// Not cached. -startTime = new Date(); -for (var i = 0; i < 1000; i++) { - 'a'.localeCompare('c', 'sr'); -} -endTime = new Date(); -var nonCachedTime = endTime.getTime() - startTime.getTime(); - -// Using collator. Faster than default, but not by much. -var collator = Intl.Collator(); -startTime = new Date(); -for (var i = 0; i < 1000; i++) { - collator.compare('a', 'c'); -} -endTime = new Date(); -collatorTime = endTime.getTime() - startTime.getTime(); - -// Difference is within 20%. -assertTrue(collatorTime < cachedTime); -// Non-cached time is much slower, measured to 12.5 times. -assertTrue(cachedTime < nonCachedTime); diff --git a/implementation-contributed/v8/intl/overrides/date.js b/implementation-contributed/v8/intl/overrides/date.js deleted file mode 100644 index a35d63d1311..00000000000 --- a/implementation-contributed/v8/intl/overrides/date.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests Date.prototype.toLocaleXXXString method overrides. - -var date = new Date(); - - -// Defaults for toLocaleXXXString -var dtfDate = new Intl.DateTimeFormat(); -var dtfTime = new Intl.DateTimeFormat( - [], {hour: 'numeric', minute: 'numeric', second: 'numeric'}); -var dtfAll = new Intl.DateTimeFormat( - [], {year: 'numeric', month: 'numeric', day: 'numeric', - hour: 'numeric', minute: 'numeric', second: 'numeric'}); -assertEquals(dtfAll.format(date), date.toLocaleString()); -assertEquals(dtfDate.format(date), date.toLocaleDateString()); -assertEquals(dtfTime.format(date), date.toLocaleTimeString()); - - -// Specify locale, default options for toLocaleXXXString -var locale = ['sr']; -dtfDate = new Intl.DateTimeFormat(locale); -dtfTime = new Intl.DateTimeFormat( - locale, {hour: 'numeric', minute: 'numeric', second: 'numeric'}); -dtfAll = new Intl.DateTimeFormat( - locale, {year: 'numeric', month: 'numeric', day: 'numeric', - hour: 'numeric', minute: 'numeric', second: 'numeric'}); -assertEquals(dtfAll.format(date), date.toLocaleString(locale)); -assertEquals(dtfDate.format(date), date.toLocaleDateString(locale)); -assertEquals(dtfTime.format(date), date.toLocaleTimeString(locale)); - - -// Specify locale and options for toLocaleXXXString -locale = ['ko']; -var options = {year: 'numeric', month: 'long', day: 'numeric', - hour: 'numeric', minute: '2-digit', second: 'numeric'}; -var dtf = new Intl.DateTimeFormat(locale, options); -assertEquals(dtf.format(date), date.toLocaleString(locale, options)); -assertEquals(dtf.format(date), date.toLocaleDateString(locale, options)); -assertEquals(dtf.format(date), date.toLocaleTimeString(locale, options)); diff --git a/implementation-contributed/v8/intl/overrides/number.js b/implementation-contributed/v8/intl/overrides/number.js deleted file mode 100644 index 11f41fd7ec7..00000000000 --- a/implementation-contributed/v8/intl/overrides/number.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests Number.prototype.toLocaleString method override. - -var integer = 123456790; -var float = 1234567890.123434; - - -// Defaults -var nf = new Intl.NumberFormat(); -assertEquals(nf.format(integer), integer.toLocaleString()); -assertEquals(nf.format(float), float.toLocaleString()); - - -// Specify locale, default options for toLocaleString method. -var locale = ['sr']; -nf = new Intl.NumberFormat(locale); -assertEquals(nf.format(integer), integer.toLocaleString(locale)); -assertEquals(nf.format(float), float.toLocaleString(locale)); - - -// Specify locale and options for toLocaleString method. -locale = ['ko']; -var options = {minimumIntegerDigits: 8, useGroupingSeparator: true, - minimumFractionalDigits: 1, maximumFractionalDigits: 2}; -nf = new Intl.NumberFormat(locale, options); -assertEquals(nf.format(integer), integer.toLocaleString(locale, options)); -assertEquals(nf.format(float), float.toLocaleString(locale, options)); diff --git a/implementation-contributed/v8/intl/overrides/security.js b/implementation-contributed/v8/intl/overrides/security.js deleted file mode 100644 index e012753fa23..00000000000 --- a/implementation-contributed/v8/intl/overrides/security.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we always use original Intl.Constructors for toLocaleString calls. - -function throwError() { - throw new Error('Malicious method invoked.'); -} - -Intl.Collator = Intl.NumberFormat = Intl.DateTimeFormat = throwError; - -Intl.Collator.prototype.compare = throwError; -Intl.NumberFormat.prototype.format = throwError; -Intl.DateTimeFormat.prototype.format = throwError; - -// Make sure constructors actually throw now. -assertThrows('new Intl.Collator()'); -assertThrows('new Intl.NumberFormat()'); -assertThrows('new Intl.DateTimeFormat()'); - -// None of these should throw. -assertDoesNotThrow('new Date().toLocaleString()'); -assertDoesNotThrow('new Date().toLocaleDateString()'); -assertDoesNotThrow('new Date().toLocaleTimeString()'); -assertDoesNotThrow('new Number(12345.412).toLocaleString()'); -assertDoesNotThrow('new String(\'abc\').localeCompare(\'bcd\')'); diff --git a/implementation-contributed/v8/intl/overrides/string.js b/implementation-contributed/v8/intl/overrides/string.js deleted file mode 100644 index 9e9da4da1d1..00000000000 --- a/implementation-contributed/v8/intl/overrides/string.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests String.prototype.localeCompare method override. - -var testData = { - 'en': ['blood', 'bull', 'ascend', 'zed', 'down'], - 'sr': ['новине', 'ограда', 'жирафа', 'Никола', 'Андрија', 'Стара Планина', - 'џак', 'алав', 'ћук', 'чука'], - 'de': ['März', 'Fuße', 'FUSSE', 'Fluße', 'Flusse', 'flusse', 'fluße', - 'flüße', 'flüsse'] -}; - - -function testArrays(locale) { - var data; - if (locale === undefined) { - data = testData['en']; - locale = []; - } else { - data = testData[locale]; - } - - var collator = new Intl.Collator(locale, options); - var collatorResult = data.sort(collator.compare); - var localeCompareResult = data.sort(function(a, b) { - return a.localeCompare(b, locale, options) - }); - assertEquals(collatorResult, localeCompareResult); -} - - -// Defaults -var options = undefined; -testArrays(); - - -// Specify locale, keep default options. -options = undefined; -Object.keys(testData).forEach(testArrays); - - -// Specify locale and options. -options = {caseFirst: 'upper'}; -Object.keys(testData).forEach(testArrays); diff --git a/implementation-contributed/v8/intl/overrides/webkit-tests.js b/implementation-contributed/v8/intl/overrides/webkit-tests.js deleted file mode 100644 index 1429de62171..00000000000 --- a/implementation-contributed/v8/intl/overrides/webkit-tests.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Makes sure we don't break affected WebKit tests. - -// Handles fast/js/string-prototype-properties.html -assertThrows('String.prototype.localeCompare.call(undefined, \'1224\')'); -assertEquals(0, String.prototype.localeCompare.call(1224, '1224')); diff --git a/implementation-contributed/v8/intl/plural-rules/check-to-number.js b/implementation-contributed/v8/intl/plural-rules/check-to-number.js deleted file mode 100644 index 7d5396e6349..00000000000 --- a/implementation-contributed/v8/intl/plural-rules/check-to-number.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const pr = new Intl.PluralRules(); -const inputs = [undefined, null, true, false, 1, '', 'test', {}, { a: 1 }]; - -inputs.forEach(input => { - const number = Number(input); - const expected = pr.select(number); - const actual = pr.select(input); - assertEquals(actual, expected); -}); - -let count = 0; -const dummyObject = {}; -dummyObject[Symbol.toPrimitive] = () => ++count; -assertEquals(pr.select(dummyObject), pr.select(count)); -assertEquals(count, 1); - -assertEquals(pr.select(0), pr.select(-0)) diff --git a/implementation-contributed/v8/intl/plural-rules/constructor-order.js b/implementation-contributed/v8/intl/plural-rules/constructor-order.js deleted file mode 100644 index 18acdcccbb0..00000000000 --- a/implementation-contributed/v8/intl/plural-rules/constructor-order.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; - -new Intl.PluralRules(['en-US'], { - get localeMatcher() { - assertEquals(0, getCount++); - }, - get type() { - assertEquals(1, getCount++); - }, - get minimumIntegerDigits() { - assertEquals(2, getCount++); - }, - get minimumFractionDigits() { - assertEquals(3, getCount++); - }, - get maximumFractionDigits() { - assertEquals(4, getCount++); - }, - get minimumSignificantDigits() { - assertEquals(5, getCount++); - }, - get maximumSignificantDigits() { - assertEquals(6, getCount++); - }, -}); -assertEquals(7, getCount); diff --git a/implementation-contributed/v8/intl/regress-4870.js b/implementation-contributed/v8/intl/regress-4870.js deleted file mode 100644 index 72c095eccd8..00000000000 --- a/implementation-contributed/v8/intl/regress-4870.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => - Object.getOwnPropertyDescriptor(Intl.Collator.prototype, 'compare') - .get.call(new Intl.DateTimeFormat())('a', 'b'), - TypeError); diff --git a/implementation-contributed/v8/intl/regress-5179.js b/implementation-contributed/v8/intl/regress-5179.js deleted file mode 100644 index c9132c0e993..00000000000 --- a/implementation-contributed/v8/intl/regress-5179.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(String.prototype, Symbol.split, { - get() { - return function(obj, limit) { - return [, null]; - } - } -}); - -dtf = new Intl.DateTimeFormat("de", {timeZone:"America/bueNos_airES"}); - -assertEquals("America/Buenos_Aires", dtf.resolvedOptions().timeZone); diff --git a/implementation-contributed/v8/intl/regress-7481.js b/implementation-contributed/v8/intl/regress-7481.js deleted file mode 100644 index c3441e35cb1..00000000000 --- a/implementation-contributed/v8/intl/regress-7481.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -assertEquals( - "en-u-hc-h11-nu-arab", - new Intl.DateTimeFormat(["en-u-hc-h11-nu-arab"]).resolvedOptions().locale -); -assertEquals( - "en-u-hc-h12-nu-arab", - new Intl.DateTimeFormat(["en-u-hc-h12-nu-arab"]).resolvedOptions().locale -); -assertEquals( - "en-u-hc-h23-nu-arab", - new Intl.DateTimeFormat(["en-u-hc-h23-nu-arab"]).resolvedOptions().locale -); -assertEquals( - "en-u-hc-h24-nu-arab", - new Intl.DateTimeFormat(["en-u-hc-h24-nu-arab"]).resolvedOptions().locale -); - -// https://tc39.github.io/ecma402/#sec-intl.datetimeformat-internal-slots -// invalid hc should be removed -// [[LocaleData]][locale].hc must be « null, "h11", "h12", "h23", "h24" » for all locale values. -assertEquals( - "en-u-nu-arab", - new Intl.DateTimeFormat(["en-u-hc-h10-nu-arab"]).resolvedOptions().locale -); -assertEquals( - "en-u-nu-arab", - new Intl.DateTimeFormat(["en-u-hc-h13-nu-arab"]).resolvedOptions().locale -); -assertEquals( - "en-u-nu-arab", - new Intl.DateTimeFormat(["en-u-hc-h22-nu-arab"]).resolvedOptions().locale -); -assertEquals( - "en-u-nu-arab", - new Intl.DateTimeFormat(["en-u-hc-h25-nu-arab"]).resolvedOptions().locale -); diff --git a/implementation-contributed/v8/intl/regress-7770.js b/implementation-contributed/v8/intl/regress-7770.js deleted file mode 100644 index 2e7c2ce22d6..00000000000 --- a/implementation-contributed/v8/intl/regress-7770.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Environment Variables: TZ=Indian/Kerguelen LANG=uk -assertEquals( - "Fri Feb 01 2019 00:00:00 GMT+0500 (за часом на Французьких Південних і Антарктичних територіях)", - new Date(2019, 1,1).toString()); diff --git a/implementation-contributed/v8/intl/regress-7982.js b/implementation-contributed/v8/intl/regress-7982.js deleted file mode 100644 index bd251c5939a..00000000000 --- a/implementation-contributed/v8/intl/regress-7982.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-locale - -// Make sure that maximize and minimize of locales work reasonbly. - -assertEquals("zh-Hans-CN-u-ca-chinese", new Intl.Locale("zh-u-ca-Chinese").maximize().toString()); -assertEquals("zh-u-ca-chinese", new Intl.Locale("zh-u-ca-Chinese").minimize().toString()); -assertEquals("th-Thai-TH-u-nu-thai", new Intl.Locale("th-Thai-TH-u-nu-Thai").maximize().toString()); -assertEquals("th-u-nu-thai", new Intl.Locale("th-Thai-TH-u-nu-Thai").minimize().toString()); -assertEquals("th-Thai-TH-u-nu-thai", new Intl.Locale("th-u-nu-Thai").maximize().toString()); -assertEquals("th-u-nu-thai", new Intl.Locale("th-u-nu-Thai").minimize().toString()); -assertEquals("zh-Hans-CN-u-ca-chinese", new Intl.Locale("zh-CN-u-ca-chinese").maximize().toString()); -assertEquals("zh-u-ca-chinese", new Intl.Locale("zh-CN-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hant-TW-u-ca-chinese", new Intl.Locale("zh-TW-u-ca-chinese").maximize().toString()); -assertEquals("zh-TW-u-ca-chinese", new Intl.Locale("zh-TW-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hant-HK-u-ca-chinese", new Intl.Locale("zh-HK-u-ca-chinese").maximize().toString()); -assertEquals("zh-HK-u-ca-chinese", new Intl.Locale("zh-HK-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hant-TW-u-ca-chinese", new Intl.Locale("zh-Hant-u-ca-chinese").maximize().toString()); -assertEquals("zh-Hant-u-ca-chinese", new Intl.Locale("zh-Hant-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hans-CN-u-ca-chinese", new Intl.Locale("zh-Hans-u-ca-chinese").maximize().toString()); -assertEquals("zh-u-ca-chinese", new Intl.Locale("zh-Hans-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hant-CN-u-ca-chinese", new Intl.Locale("zh-Hant-CN-u-ca-chinese").maximize().toString()); -assertEquals("zh-Hant-CN-u-ca-chinese", new Intl.Locale("zh-Hant-CN-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hans-CN-u-ca-chinese", new Intl.Locale("zh-Hans-CN-u-ca-chinese").maximize().toString()); -assertEquals("zh-u-ca-chinese", new Intl.Locale("zh-Hans-CN-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hant-TW-u-ca-chinese", new Intl.Locale("zh-Hant-TW-u-ca-chinese").maximize().toString()); -assertEquals("zh-TW-u-ca-chinese", new Intl.Locale("zh-Hant-TW-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hans-TW-u-ca-chinese", new Intl.Locale("zh-Hans-TW-u-ca-chinese").maximize().toString()); -assertEquals("zh-Hans-TW-u-ca-chinese", new Intl.Locale("zh-Hans-TW-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hant-HK-u-ca-chinese", new Intl.Locale("zh-Hant-HK-u-ca-chinese").maximize().toString()); -assertEquals("zh-HK-u-ca-chinese", new Intl.Locale("zh-Hant-HK-u-ca-chinese").minimize().toString()); -assertEquals("zh-Hans-HK-u-ca-chinese", new Intl.Locale("zh-Hans-HK-u-ca-chinese").maximize().toString()); -assertEquals("zh-Hans-HK-u-ca-chinese", new Intl.Locale("zh-Hans-HK-u-ca-chinese").minimize().toString()); diff --git a/implementation-contributed/v8/intl/regress-8030.js b/implementation-contributed/v8/intl/regress-8030.js deleted file mode 100644 index cf0e1aa2a9c..00000000000 --- a/implementation-contributed/v8/intl/regress-8030.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var locales = ["tlh", "id", "en"]; -var referenceRelativeTimeFormat = new Intl.RelativeTimeFormat(locales); -var referenceFormatted = referenceRelativeTimeFormat.format(3, "day"); - -class MyFormat extends Intl.RelativeTimeFormat { - constructor(locales, options) { - super(locales, options); - // could initialize MyRelativeTimeFormat properties - } - // could add methods to MyRelativeTimeFormat.prototype -} - -var format = new MyFormat(locales); -var actual = format.format(3, "day"); -assertEquals(actual, referenceFormatted); diff --git a/implementation-contributed/v8/intl/regress-8031.js b/implementation-contributed/v8/intl/regress-8031.js deleted file mode 100644 index 0898026d99e..00000000000 --- a/implementation-contributed/v8/intl/regress-8031.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-list-format - -var locales = ["tlh", "id", "en"]; -var input = ["a", "b", "c"]; -var referenceListFormat = new Intl.ListFormat(locales); -var referenceFormatted = referenceListFormat.format(input); - -class MyFormat extends Intl.ListFormat { - constructor(locales, options) { - super(locales, options); - // could initialize MyListFormat properties - } - // could add methods to MyListFormat.prototype -} - -var format = new MyFormat(locales); -var actual = format.format(input); -assertEquals(actual, referenceFormatted); diff --git a/implementation-contributed/v8/intl/regress-8432.js b/implementation-contributed/v8/intl/regress-8432.js deleted file mode 100644 index 13083e3c821..00000000000 --- a/implementation-contributed/v8/intl/regress-8432.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Somehow only ar-SA fails on Android in regress-8413*.js. -// Split it into this test just for ar-SA. -// This is likely to be caused by an Android-specific ICU data trimming. -let locales = [ "ar-SA" ]; - -// "Table 5: Components of date and time formats" as in -// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts -let table5 = [ - ["weekday", ["narrow", "short", "long"]], - ["era", ["narrow", "short", "long"]], - ["year", ["2-digit", "numeric"]], - ["month", ["2-digit", "numeric", "narrow", "short", "long"]], - ["day", ["2-digit", "numeric"]], - ["hour", ["2-digit", "numeric"]], - ["minute", ["2-digit", "numeric"]], - ["second", ["2-digit", "numeric"]], - ["timeZoneName", ["short", "long"]] -]; - -// Test each locale -for (let loc of locales) { - // Test each property in Table 5 - for (let row of table5) { - let prop = row[0]; - let values = row[1]; - // Test each value of the property - for (let value of values) { - let opt = {}; - opt[prop] = value; - let dft = new Intl.DateTimeFormat([loc], opt); - let result = dft.resolvedOptions(); - assertTrue(values.indexOf(result[prop]) >= 0, - "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + - value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + - values + "] but got '" + result[prop] + "'"); - } - } -} diff --git a/implementation-contributed/v8/intl/regress-8469.js b/implementation-contributed/v8/intl/regress-8469.js deleted file mode 100644 index 7febb51cf98..00000000000 --- a/implementation-contributed/v8/intl/regress-8469.js +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// The following tz are NOT impacted by v8:8469 -var some_tz_list = [ - "ciabj", - "ghacc", -]; - -// The following tz ARE impacted by v8:8469 -var problem_tz_list = [ - "etadd", - "tzdar", - "eheai", - "sttms", - "arirj", - "arrgl", - "aruaq", - "arluq", - "mxpvr", - "brbvb", - "arbue", - "caycb", - "brcgr", - "cayzs", - "crsjo", - "caydq", - "svsal", - "cafne", - "caglb", - "cagoo", - "tcgdt", - "ustel", - "bolpb", - "uslax", - "sxphi", - "mxmex", - "usnyc", - "usxul", - "usndcnt", - "usndnsl", - "ttpos", - "brpvh", - "prsju", - "clpuq", - "caffs", - "cayek", - "brrbr", - "mxstis", - "dosdq", - "brsao", - "gpsbh", - "casjf", - "knbas", - "lccas", - "vistt", - "vcsvd", - "cayyn", - "cathu", - "hkhkg", - "mykul", - "khpnh", - "cvrai", - "gsgrv", - "shshn", - "aubhq", - "auldh", - "imdgs", - "smsai", - "asppg", - "pgpom", -]; - -let expectedTimeZone = (new Intl.DateTimeFormat("en")) - .resolvedOptions().timeZone; - -function testTz(tz) { - print(tz); - let timeZone = (new Intl.DateTimeFormat("en-u-tz-" + tz)) - .resolvedOptions().timeZone; - assertEquals(expectedTimeZone, timeZone); -} - -// first test soem tz not impacted by v8:8469 to ensure testTz is correct. -for (var tz of some_tz_list) testTz(tz); -for (var tz of problem_tz_list) testTz(tz); diff --git a/implementation-contributed/v8/intl/regress-8525.js b/implementation-contributed/v8/intl/regress-8525.js deleted file mode 100644 index 4d925d73c34..00000000000 --- a/implementation-contributed/v8/intl/regress-8525.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// test the numberingSystem is set correctly via -u-nu- -let dtf = new Intl.DateTimeFormat(["en-u-ba-rfoo-nu-arab-fo-obar"]); -assertEquals("arab", dtf.resolvedOptions().numberingSystem); -assertEquals("en-u-nu-arab", dtf.resolvedOptions().locale); - -let nf = new Intl.NumberFormat(["en-u-ba-rfoo-nu-arab-fo-obar"]); -assertEquals("arab", nf.resolvedOptions().numberingSystem); -assertEquals("١٢٣", nf.format(123)); -assertEquals("en-u-nu-arab", nf.resolvedOptions().locale); - -dtf = new Intl.DateTimeFormat(["en-u-ba-rfoo-nu-thai-fo-obar"]); -assertEquals("thai", dtf.resolvedOptions().numberingSystem); -assertEquals("en-u-nu-thai", dtf.resolvedOptions().locale); - -nf = new Intl.NumberFormat(["en-u-ba-rfoo-nu-thai-fo-obar"]); -assertEquals("thai", nf.resolvedOptions().numberingSystem); -assertEquals("๑๒๓", nf.format(123)); -assertEquals("en-u-nu-thai", nf.resolvedOptions().locale); - -nf = new Intl.NumberFormat(["ar-EG-u-nu-latn"]); -assertEquals("latn", nf.resolvedOptions().numberingSystem); -assertEquals("123", nf.format(123)); -assertEquals("ar-EG-u-nu-latn", nf.resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/regress-8657.js b/implementation-contributed/v8/intl/regress-8657.js deleted file mode 100644 index c1c5cea7084..00000000000 --- a/implementation-contributed/v8/intl/regress-8657.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-locale - -assertDoesNotThrow(() => new Intl.Locale('und')); diff --git a/implementation-contributed/v8/intl/regress-8725514.js b/implementation-contributed/v8/intl/regress-8725514.js deleted file mode 100644 index 82f884a093f..00000000000 --- a/implementation-contributed/v8/intl/regress-8725514.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.prototype.__defineGetter__('x', function () { - return -2147483648; - }); - -var f = ["x-u-foo"]; -Intl.NumberFormat(f); diff --git a/implementation-contributed/v8/intl/regress-875643.js b/implementation-contributed/v8/intl/regress-875643.js deleted file mode 100644 index 2625c8110fa..00000000000 --- a/implementation-contributed/v8/intl/regress-875643.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -new Intl.NumberFormat(undefined, false) diff --git a/implementation-contributed/v8/intl/regress-888299.js b/implementation-contributed/v8/intl/regress-888299.js deleted file mode 100644 index abe9d1da34f..00000000000 --- a/implementation-contributed/v8/intl/regress-888299.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var i = 0; -new Intl.DateTimeFormat( - undefined, { get hour() { if (i == 0) { i = 1; return 'numeric'} } }); diff --git a/implementation-contributed/v8/intl/regress-895942.js b/implementation-contributed/v8/intl/regress-895942.js deleted file mode 100644 index 88574cf9164..00000000000 --- a/implementation-contributed/v8/intl/regress-895942.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -x = new Intl.DateTimeFormat("en-u-foo-x-u"); -assertEquals('en', x.resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/regress-900013.js b/implementation-contributed/v8/intl/regress-900013.js deleted file mode 100644 index c7cdc658954..00000000000 --- a/implementation-contributed/v8/intl/regress-900013.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -// Regression test to ensure no Intl["SegmentIterator"] - -assertThrows(() => new Intl["SegmentIterator"](), TypeError); diff --git a/implementation-contributed/v8/intl/regress-903566.js b/implementation-contributed/v8/intl/regress-903566.js deleted file mode 100644 index 9346fa63a8c..00000000000 --- a/implementation-contributed/v8/intl/regress-903566.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// Flags: --allow-natives-syntax - -assertDoesNotThrow(()=>(new Intl.ListFormat()).format()); -// Intl.getCanonicalLocales() will create a HOLEY_ELEMENTS array -assertDoesNotThrow(()=>(new Intl.ListFormat()).format(Intl.getCanonicalLocales())); -assertDoesNotThrow(()=>(new Intl.ListFormat()).format(Intl.getCanonicalLocales(["en","fr"]))); - -let arr = ["a","b","c"]; - -// Test under no HasHoleyElements(); -assertFalse(%HasHoleyElements(arr)); -assertDoesNotThrow(()=>(new Intl.ListFormat()).format(arr)); -for (var i = 0; i < 10000; i++) { - arr.push("xx"); -} -assertFalse(%HasHoleyElements(arr)); -assertDoesNotThrow(()=>(new Intl.ListFormat()).format(arr)); - -// Test under HasHoleyElements(); -arr[arr.length + 10] = "x"; -assertTrue(%HasHoleyElements(arr)); -assertFalse(%HasDictionaryElements(arr)); -assertThrows(()=>(new Intl.ListFormat()).format(arr), TypeError); - -// Test it work under HasDictionaryElements(); -arr = ["a","b","c"]; -arr[arr.length + 100000] = "x"; -assertTrue(%HasDictionaryElements(arr)); -assertThrows(()=>(new Intl.ListFormat()).format(arr), TypeError); diff --git a/implementation-contributed/v8/intl/regress-917151.js b/implementation-contributed/v8/intl/regress-917151.js deleted file mode 100644 index 9b971fe2b91..00000000000 --- a/implementation-contributed/v8/intl/regress-917151.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Regression test for 917151 - -assertThrows( - () => Number.prototype.toLocaleString.call( - -22, - "x-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6"), - RangeError) diff --git a/implementation-contributed/v8/intl/regress-925216.js b/implementation-contributed/v8/intl/regress-925216.js deleted file mode 100644 index f9683dfc770..00000000000 --- a/implementation-contributed/v8/intl/regress-925216.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertTrue(new Intl.DateTimeFormat( - "en", { timeZone: 'UTC', hour: 'numeric'}).resolvedOptions().hour12); -assertFalse(new Intl.DateTimeFormat( - "fr", { timeZone: 'UTC', hour: 'numeric'}).resolvedOptions().hour12); -assertFalse(new Intl.DateTimeFormat( - "de", { timeZone: 'UTC', hour: 'numeric'}).resolvedOptions().hour12); diff --git a/implementation-contributed/v8/intl/relative-time-format/constructor-order.js b/implementation-contributed/v8/intl/relative-time-format/constructor-order.js deleted file mode 100644 index 540034dd4d4..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/constructor-order.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; - -new Intl.RelativeTimeFormat(['en-US'], { - get localeMatcher() { - assertEquals(0, getCount++); - }, - get style() { - assertEquals(1, getCount++); - }, - get numeric() { - assertEquals(2, getCount++); - }, -}); -assertEquals(3, getCount); diff --git a/implementation-contributed/v8/intl/relative-time-format/constructor.js b/implementation-contributed/v8/intl/relative-time-format/constructor.js deleted file mode 100644 index f1a40574264..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/constructor.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// RelativeTimeFormat constructor can't be called as function. -assertThrows(() => Intl.RelativeTimeFormat('sr'), TypeError); - -// Non-string locale. -//assertThrows(() => new Intl.RelativeTimeFormat(5), TypeError); - -// Invalid locale string. -//assertThrows(() => new Intl.RelativeTimeFormat('abcdefghi'), RangeError); - -assertDoesNotThrow(() => new Intl.RelativeTimeFormat('sr', {})); - -assertDoesNotThrow(() => new Intl.RelativeTimeFormat([], {})); - -assertDoesNotThrow(() => new Intl.RelativeTimeFormat(['fr', 'ar'], {})); - -assertDoesNotThrow(() => new Intl.RelativeTimeFormat({0: 'ja', 1:'fr'}, {})); - -assertDoesNotThrow(() => new Intl.RelativeTimeFormat({1: 'ja', 2:'fr'}, {})); - -assertDoesNotThrow(() => new Intl.RelativeTimeFormat('sr')); - -assertDoesNotThrow(() => new Intl.RelativeTimeFormat()); - -assertDoesNotThrow( - () => new Intl.RelativeTimeFormat( - 'sr', { - localeMatcher: 'lookup', - style: 'short', - numeric: 'always' - })); - - -assertDoesNotThrow( - () => new Intl.RelativeTimeFormat('sr', {localeMatcher: 'lookup'})); - -assertDoesNotThrow( - () => new Intl.RelativeTimeFormat('sr', {localeMatcher: 'best fit'})); - -assertThrows( - () => new Intl.RelativeTimeFormat('sr', {localeMatcher: 'hello'}), - RangeError); - -assertThrows( - () => new Intl.RelativeTimeFormat('sr', {localeMatcher: 'look up'}), - RangeError); - -assertThrows( - () => new Intl.RelativeTimeFormat('sr', {localeMatcher: 'bestfit'}), - RangeError); - - -assertDoesNotThrow( - () => new Intl.RelativeTimeFormat('sr', {style: 'long'})); - -assertDoesNotThrow( - () => new Intl.RelativeTimeFormat('sr', {style: 'short'})); - -assertDoesNotThrow( - () => new Intl.RelativeTimeFormat('sr', {style: 'narrow'})); - -assertThrows( - () => new Intl.RelativeTimeFormat('sr', {style: 'giant'}), - RangeError); - -assertDoesNotThrow( - () => new Intl.RelativeTimeFormat('sr', {numeric: 'always'})); - -assertDoesNotThrow( - () => new Intl.RelativeTimeFormat('sr', {numeric: 'auto'})); - -assertThrows( - () => new Intl.RelativeTimeFormat('sr', {numeric: 'never'}), - RangeError); diff --git a/implementation-contributed/v8/intl/relative-time-format/default-locale-fr-CA.js b/implementation-contributed/v8/intl/relative-time-format/default-locale-fr-CA.js deleted file mode 100644 index 9f24329b50a..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/default-locale-fr-CA.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Environment Variables: LC_ALL=fr_CA -assertEquals( - 'fr-CA', - (new Intl.RelativeTimeFormat()).resolvedOptions().locale); - -assertEquals( - 'fr-CA', - (new Intl.RelativeTimeFormat([], {style: 'short', numeric: 'auto'})) - .resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/relative-time-format/default-locale-pt-BR.js b/implementation-contributed/v8/intl/relative-time-format/default-locale-pt-BR.js deleted file mode 100644 index ea66b6a0e55..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/default-locale-pt-BR.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Environment Variables: LC_ALL=pt_BR -assertEquals( - 'pt-BR', - (new Intl.RelativeTimeFormat()).resolvedOptions().locale); - -assertEquals( - 'pt-BR', - (new Intl.RelativeTimeFormat([], {style: 'short', numeric: 'auto'})) - .resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/relative-time-format/format-en.js b/implementation-contributed/v8/intl/relative-time-format/format-en.js deleted file mode 100644 index a365749f0a7..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/format-en.js +++ /dev/null @@ -1,481 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// The following test are not part of the comformance. Just some output in -// English to verify the format does return something reasonable for English. -// It may be changed when we update the CLDR data. -// NOTE: These are UNSPECIFIED behavior in -// http://tc39.github.io/proposal-intl-relative-time/ - -let longAuto = new Intl.RelativeTimeFormat( - "en", {style: "long", localeMatcher: 'lookup', numeric: 'auto'}); - -assertEquals('3 seconds ago', longAuto.format(-3, 'second')); -assertEquals('2 seconds ago', longAuto.format(-2, 'second')); -assertEquals('1 second ago', longAuto.format(-1, 'second')); -assertEquals('now', longAuto.format(0, 'second')); -assertEquals('now', longAuto.format(-0, 'second')); -assertEquals('in 1 second', longAuto.format(1, 'second')); -assertEquals('in 2 seconds', longAuto.format(2, 'second')); -assertEquals('in 345 seconds', longAuto.format(345, 'second')); - -assertEquals('3 minutes ago', longAuto.format(-3, 'minute')); -assertEquals('2 minutes ago', longAuto.format(-2, 'minute')); -assertEquals('1 minute ago', longAuto.format(-1, 'minute')); -assertEquals('in 0 minutes', longAuto.format(0, 'minute')); -assertEquals('0 minutes ago', longAuto.format(-0, 'minute')); -assertEquals('in 1 minute', longAuto.format(1, 'minute')); -assertEquals('in 2 minutes', longAuto.format(2, 'minute')); -assertEquals('in 345 minutes', longAuto.format(345, 'minute')); - -assertEquals('3 hours ago', longAuto.format(-3, 'hour')); -assertEquals('2 hours ago', longAuto.format(-2, 'hour')); -assertEquals('1 hour ago', longAuto.format(-1, 'hour')); -assertEquals('in 0 hours', longAuto.format(0, 'hour')); -assertEquals('0 hours ago', longAuto.format(-0, 'hour')); -assertEquals('in 1 hour', longAuto.format(1, 'hour')); -assertEquals('in 2 hours', longAuto.format(2, 'hour')); -assertEquals('in 345 hours', longAuto.format(345, 'hour')); - -assertEquals('3 days ago', longAuto.format(-3, 'day')); -assertEquals('2 days ago', longAuto.format(-2, 'day')); -assertEquals('yesterday', longAuto.format(-1, 'day')); -assertEquals('today', longAuto.format(0, 'day')); -assertEquals('today', longAuto.format(-0, 'day')); -assertEquals('tomorrow', longAuto.format(1, 'day')); -assertEquals('in 2 days', longAuto.format(2, 'day')); -assertEquals('in 345 days', longAuto.format(345, 'day')); - -assertEquals('3 weeks ago', longAuto.format(-3, 'week')); -assertEquals('2 weeks ago', longAuto.format(-2, 'week')); -assertEquals('last week', longAuto.format(-1, 'week')); -assertEquals('this week', longAuto.format(0, 'week')); -assertEquals('this week', longAuto.format(-0, 'week')); -assertEquals('next week', longAuto.format(1, 'week')); -assertEquals('in 2 weeks', longAuto.format(2, 'week')); -assertEquals('in 345 weeks', longAuto.format(345, 'week')); - -assertEquals('3 months ago', longAuto.format(-3, 'month')); -assertEquals('2 months ago', longAuto.format(-2, 'month')); -assertEquals('last month', longAuto.format(-1, 'month')); -assertEquals('this month', longAuto.format(0, 'month')); -assertEquals('this month', longAuto.format(-0, 'month')); -assertEquals('next month', longAuto.format(1, 'month')); -assertEquals('in 2 months', longAuto.format(2, 'month')); -assertEquals('in 345 months', longAuto.format(345, 'month')); - -assertEquals('3 quarters ago', longAuto.format(-3, 'quarter')); -assertEquals('2 quarters ago', longAuto.format(-2, 'quarter')); -assertEquals('last quarter', longAuto.format(-1, 'quarter')); -assertEquals('this quarter', longAuto.format(0, 'quarter')); -assertEquals('this quarter', longAuto.format(-0, 'quarter')); -assertEquals('next quarter', longAuto.format(1, 'quarter')); -assertEquals('in 2 quarters', longAuto.format(2, 'quarter')); -assertEquals('in 345 quarters', longAuto.format(345, 'quarter')); - -assertEquals('3 years ago', longAuto.format(-3, 'year')); -assertEquals('2 years ago', longAuto.format(-2, 'year')); -assertEquals('last year', longAuto.format(-1, 'year')); -assertEquals('this year', longAuto.format(0, 'year')); -assertEquals('this year', longAuto.format(-0, 'year')); -assertEquals('next year', longAuto.format(1, 'year')); -assertEquals('in 2 years', longAuto.format(2, 'year')); -assertEquals('in 345 years', longAuto.format(345, 'year')); - -let shortAuto = new Intl.RelativeTimeFormat( - "en", {style: "short", localeMatcher: 'lookup', numeric: 'auto'}); - -assertEquals('3 sec. ago', shortAuto.format(-3, 'second')); -assertEquals('2 sec. ago', shortAuto.format(-2, 'second')); -assertEquals('1 sec. ago', shortAuto.format(-1, 'second')); -assertEquals('now', shortAuto.format(0, 'second')); -assertEquals('now', shortAuto.format(-0, 'second')); -assertEquals('in 1 sec.', shortAuto.format(1, 'second')); -assertEquals('in 2 sec.', shortAuto.format(2, 'second')); -assertEquals('in 345 sec.', shortAuto.format(345, 'second')); - -assertEquals('3 min. ago', shortAuto.format(-3, 'minute')); -assertEquals('2 min. ago', shortAuto.format(-2, 'minute')); -assertEquals('1 min. ago', shortAuto.format(-1, 'minute')); -assertEquals('in 0 min.', shortAuto.format(0, 'minute')); -assertEquals('0 min. ago', shortAuto.format(-0, 'minute')); -assertEquals('in 1 min.', shortAuto.format(1, 'minute')); -assertEquals('in 2 min.', shortAuto.format(2, 'minute')); -assertEquals('in 345 min.', shortAuto.format(345, 'minute')); - -assertEquals('3 hr. ago', shortAuto.format(-3, 'hour')); -assertEquals('2 hr. ago', shortAuto.format(-2, 'hour')); -assertEquals('1 hr. ago', shortAuto.format(-1, 'hour')); -assertEquals('in 0 hr.', shortAuto.format(0, 'hour')); -assertEquals('0 hr. ago', shortAuto.format(-0, 'hour')); -assertEquals('in 1 hr.', shortAuto.format(1, 'hour')); -assertEquals('in 2 hr.', shortAuto.format(2, 'hour')); -assertEquals('in 345 hr.', shortAuto.format(345, 'hour')); - -assertEquals('3 days ago', shortAuto.format(-3, 'day')); -assertEquals('2 days ago', shortAuto.format(-2, 'day')); -assertEquals('yesterday', shortAuto.format(-1, 'day')); -assertEquals('today', shortAuto.format(0, 'day')); -assertEquals('today', shortAuto.format(-0, 'day')); -assertEquals('tomorrow', shortAuto.format(1, 'day')); -assertEquals('in 2 days', shortAuto.format(2, 'day')); -assertEquals('in 345 days', shortAuto.format(345, 'day')); - -assertEquals('3 wk. ago', shortAuto.format(-3, 'week')); -assertEquals('2 wk. ago', shortAuto.format(-2, 'week')); -assertEquals('last wk.', shortAuto.format(-1, 'week')); -assertEquals('this wk.', shortAuto.format(0, 'week')); -assertEquals('this wk.', shortAuto.format(-0, 'week')); -assertEquals('next wk.', shortAuto.format(1, 'week')); -assertEquals('in 2 wk.', shortAuto.format(2, 'week')); -assertEquals('in 345 wk.', shortAuto.format(345, 'week')); - -assertEquals('3 mo. ago', shortAuto.format(-3, 'month')); -assertEquals('2 mo. ago', shortAuto.format(-2, 'month')); -assertEquals('last mo.', shortAuto.format(-1, 'month')); -assertEquals('this mo.', shortAuto.format(0, 'month')); -assertEquals('this mo.', shortAuto.format(-0, 'month')); -assertEquals('next mo.', shortAuto.format(1, 'month')); -assertEquals('in 2 mo.', shortAuto.format(2, 'month')); -assertEquals('in 345 mo.', shortAuto.format(345, 'month')); - -assertEquals('3 qtrs. ago', shortAuto.format(-3, 'quarter')); -assertEquals('2 qtrs. ago', shortAuto.format(-2, 'quarter')); -assertEquals('last qtr.', shortAuto.format(-1, 'quarter')); -assertEquals('this qtr.', shortAuto.format(0, 'quarter')); -assertEquals('this qtr.', shortAuto.format(-0, 'quarter')); -assertEquals('next qtr.', shortAuto.format(1, 'quarter')); -assertEquals('in 2 qtrs.', shortAuto.format(2, 'quarter')); -assertEquals('in 345 qtrs.', shortAuto.format(345, 'quarter')); - -assertEquals('3 yr. ago', shortAuto.format(-3, 'year')); -assertEquals('2 yr. ago', shortAuto.format(-2, 'year')); -assertEquals('last yr.', shortAuto.format(-1, 'year')); -assertEquals('this yr.', shortAuto.format(0, 'year')); -assertEquals('this yr.', shortAuto.format(-0, 'year')); -assertEquals('next yr.', shortAuto.format(1, 'year')); -assertEquals('in 2 yr.', shortAuto.format(2, 'year')); -assertEquals('in 345 yr.', shortAuto.format(345, 'year')); - -// Somehow in the 'en' locale, there are no valeu for -narrow -let narrowAuto = new Intl.RelativeTimeFormat( - "en", {style: "narrow", localeMatcher: 'lookup', numeric: 'auto'}); - -assertEquals('3 sec. ago', narrowAuto.format(-3, 'second')); -assertEquals('2 sec. ago', narrowAuto.format(-2, 'second')); -assertEquals('1 sec. ago', narrowAuto.format(-1, 'second')); -assertEquals('now', narrowAuto.format(0, 'second')); -assertEquals('now', narrowAuto.format(-0, 'second')); -assertEquals('in 1 sec.', narrowAuto.format(1, 'second')); -assertEquals('in 2 sec.', narrowAuto.format(2, 'second')); -assertEquals('in 345 sec.', narrowAuto.format(345, 'second')); - -assertEquals('3 min. ago', narrowAuto.format(-3, 'minute')); -assertEquals('2 min. ago', narrowAuto.format(-2, 'minute')); -assertEquals('1 min. ago', narrowAuto.format(-1, 'minute')); -assertEquals('in 0 min.', narrowAuto.format(0, 'minute')); -assertEquals('0 min. ago', narrowAuto.format(-0, 'minute')); -assertEquals('in 1 min.', narrowAuto.format(1, 'minute')); -assertEquals('in 2 min.', narrowAuto.format(2, 'minute')); -assertEquals('in 345 min.', narrowAuto.format(345, 'minute')); - -assertEquals('3 hr. ago', narrowAuto.format(-3, 'hour')); -assertEquals('2 hr. ago', narrowAuto.format(-2, 'hour')); -assertEquals('1 hr. ago', narrowAuto.format(-1, 'hour')); -assertEquals('in 0 hr.', narrowAuto.format(0, 'hour')); -assertEquals('0 hr. ago', narrowAuto.format(-0, 'hour')); -assertEquals('in 1 hr.', narrowAuto.format(1, 'hour')); -assertEquals('in 2 hr.', narrowAuto.format(2, 'hour')); -assertEquals('in 345 hr.', narrowAuto.format(345, 'hour')); - -assertEquals('3 days ago', narrowAuto.format(-3, 'day')); -assertEquals('2 days ago', narrowAuto.format(-2, 'day')); -assertEquals('yesterday', narrowAuto.format(-1, 'day')); -assertEquals('today', narrowAuto.format(0, 'day')); -assertEquals('today', narrowAuto.format(-0, 'day')); -assertEquals('tomorrow', narrowAuto.format(1, 'day')); -assertEquals('in 2 days', narrowAuto.format(2, 'day')); -assertEquals('in 345 days', narrowAuto.format(345, 'day')); - -assertEquals('3 wk. ago', narrowAuto.format(-3, 'week')); -assertEquals('2 wk. ago', narrowAuto.format(-2, 'week')); -assertEquals('last wk.', narrowAuto.format(-1, 'week')); -assertEquals('this wk.', narrowAuto.format(0, 'week')); -assertEquals('this wk.', narrowAuto.format(-0, 'week')); -assertEquals('next wk.', narrowAuto.format(1, 'week')); -assertEquals('in 2 wk.', narrowAuto.format(2, 'week')); -assertEquals('in 345 wk.', narrowAuto.format(345, 'week')); - -assertEquals('3 mo. ago', narrowAuto.format(-3, 'month')); -assertEquals('2 mo. ago', narrowAuto.format(-2, 'month')); -assertEquals('last mo.', narrowAuto.format(-1, 'month')); -assertEquals('this mo.', narrowAuto.format(0, 'month')); -assertEquals('this mo.', narrowAuto.format(-0, 'month')); -assertEquals('next mo.', narrowAuto.format(1, 'month')); -assertEquals('in 2 mo.', narrowAuto.format(2, 'month')); -assertEquals('in 345 mo.', narrowAuto.format(345, 'month')); - -assertEquals('3 qtrs. ago', narrowAuto.format(-3, 'quarter')); -assertEquals('2 qtrs. ago', narrowAuto.format(-2, 'quarter')); -assertEquals('last qtr.', narrowAuto.format(-1, 'quarter')); -assertEquals('this qtr.', narrowAuto.format(0, 'quarter')); -assertEquals('this qtr.', narrowAuto.format(-0, 'quarter')); -assertEquals('next qtr.', narrowAuto.format(1, 'quarter')); -assertEquals('in 2 qtrs.', narrowAuto.format(2, 'quarter')); -assertEquals('in 345 qtrs.', narrowAuto.format(345, 'quarter')); - -assertEquals('3 yr. ago', narrowAuto.format(-3, 'year')); -assertEquals('2 yr. ago', narrowAuto.format(-2, 'year')); -assertEquals('last yr.', narrowAuto.format(-1, 'year')); -assertEquals('this yr.', narrowAuto.format(0, 'year')); -assertEquals('this yr.', narrowAuto.format(-0, 'year')); -assertEquals('next yr.', narrowAuto.format(1, 'year')); -assertEquals('in 2 yr.', narrowAuto.format(2, 'year')); -assertEquals('in 345 yr.', narrowAuto.format(345, 'year')); - -let longAlways = new Intl.RelativeTimeFormat( - "en", {style: "long", localeMatcher: 'lookup', numeric: 'always'}); - -assertEquals('3 seconds ago', longAlways.format(-3, 'second')); -assertEquals('2 seconds ago', longAlways.format(-2, 'second')); -assertEquals('1 second ago', longAlways.format(-1, 'second')); -assertEquals('in 0 seconds', longAlways.format(0, 'second')); -assertEquals('0 seconds ago', longAlways.format(-0, 'second')); -assertEquals('in 1 second', longAlways.format(1, 'second')); -assertEquals('in 2 seconds', longAlways.format(2, 'second')); -assertEquals('in 345 seconds', longAlways.format(345, 'second')); - -assertEquals('3 minutes ago', longAlways.format(-3, 'minute')); -assertEquals('2 minutes ago', longAlways.format(-2, 'minute')); -assertEquals('1 minute ago', longAlways.format(-1, 'minute')); -assertEquals('in 0 minutes', longAlways.format(0, 'minute')); -assertEquals('0 minutes ago', longAlways.format(-0, 'minute')); -assertEquals('in 1 minute', longAlways.format(1, 'minute')); -assertEquals('in 2 minutes', longAlways.format(2, 'minute')); -assertEquals('in 345 minutes', longAlways.format(345, 'minute')); - -assertEquals('3 hours ago', longAlways.format(-3, 'hour')); -assertEquals('2 hours ago', longAlways.format(-2, 'hour')); -assertEquals('1 hour ago', longAlways.format(-1, 'hour')); -assertEquals('in 0 hours', longAlways.format(0, 'hour')); -assertEquals('0 hours ago', longAlways.format(-0, 'hour')); -assertEquals('in 1 hour', longAlways.format(1, 'hour')); -assertEquals('in 2 hours', longAlways.format(2, 'hour')); -assertEquals('in 345 hours', longAlways.format(345, 'hour')); - -assertEquals('3 days ago', longAlways.format(-3, 'day')); -assertEquals('2 days ago', longAlways.format(-2, 'day')); -assertEquals('1 day ago', longAlways.format(-1, 'day')); -assertEquals('in 0 days', longAlways.format(0, 'day')); -assertEquals('0 days ago', longAlways.format(-0, 'day')); -assertEquals('in 1 day', longAlways.format(1, 'day')); -assertEquals('in 2 days', longAlways.format(2, 'day')); -assertEquals('in 345 days', longAlways.format(345, 'day')); - -assertEquals('3 weeks ago', longAlways.format(-3, 'week')); -assertEquals('2 weeks ago', longAlways.format(-2, 'week')); -assertEquals('1 week ago', longAlways.format(-1, 'week')); -assertEquals('in 0 weeks', longAlways.format(0, 'week')); -assertEquals('0 weeks ago', longAlways.format(-0, 'week')); -assertEquals('in 1 week', longAlways.format(1, 'week')); -assertEquals('in 2 weeks', longAlways.format(2, 'week')); -assertEquals('in 345 weeks', longAlways.format(345, 'week')); - -assertEquals('3 months ago', longAlways.format(-3, 'month')); -assertEquals('2 months ago', longAlways.format(-2, 'month')); -assertEquals('1 month ago', longAlways.format(-1, 'month')); -assertEquals('in 0 months', longAlways.format(0, 'month')); -assertEquals('0 months ago', longAlways.format(-0, 'month')); -assertEquals('in 1 month', longAlways.format(1, 'month')); -assertEquals('in 2 months', longAlways.format(2, 'month')); -assertEquals('in 345 months', longAlways.format(345, 'month')); - -assertEquals('3 quarters ago', longAlways.format(-3, 'quarter')); -assertEquals('2 quarters ago', longAlways.format(-2, 'quarter')); -assertEquals('1 quarter ago', longAlways.format(-1, 'quarter')); -assertEquals('in 0 quarters', longAlways.format(0, 'quarter')); -assertEquals('0 quarters ago', longAlways.format(-0, 'quarter')); -assertEquals('in 1 quarter', longAlways.format(1, 'quarter')); -assertEquals('in 2 quarters', longAlways.format(2, 'quarter')); -assertEquals('in 345 quarters', longAlways.format(345, 'quarter')); - -assertEquals('3 years ago', longAlways.format(-3, 'year')); -assertEquals('2 years ago', longAlways.format(-2, 'year')); -assertEquals('1 year ago', longAlways.format(-1, 'year')); -assertEquals('in 0 years', longAlways.format(0, 'year')); -assertEquals('0 years ago', longAlways.format(-0, 'year')); -assertEquals('in 1 year', longAlways.format(1, 'year')); -assertEquals('in 2 years', longAlways.format(2, 'year')); -assertEquals('in 345 years', longAlways.format(345, 'year')); - -let shortAlways = new Intl.RelativeTimeFormat( - "en", {style: "short", localeMatcher: 'lookup', numeric: 'always'}); - -assertEquals('3 sec. ago', shortAlways.format(-3, 'second')); -assertEquals('2 sec. ago', shortAlways.format(-2, 'second')); -assertEquals('1 sec. ago', shortAlways.format(-1, 'second')); -assertEquals('in 0 sec.', shortAlways.format(0, 'second')); -assertEquals('0 sec. ago', shortAlways.format(-0, 'second')); -assertEquals('in 1 sec.', shortAlways.format(1, 'second')); -assertEquals('in 2 sec.', shortAlways.format(2, 'second')); -assertEquals('in 345 sec.', shortAlways.format(345, 'second')); - -assertEquals('3 min. ago', shortAlways.format(-3, 'minute')); -assertEquals('2 min. ago', shortAlways.format(-2, 'minute')); -assertEquals('1 min. ago', shortAlways.format(-1, 'minute')); -assertEquals('in 0 min.', shortAlways.format(0, 'minute')); -assertEquals('0 min. ago', shortAlways.format(-0, 'minute')); -assertEquals('in 1 min.', shortAlways.format(1, 'minute')); -assertEquals('in 2 min.', shortAlways.format(2, 'minute')); -assertEquals('in 345 min.', shortAlways.format(345, 'minute')); - -assertEquals('3 hr. ago', shortAlways.format(-3, 'hour')); -assertEquals('2 hr. ago', shortAlways.format(-2, 'hour')); -assertEquals('1 hr. ago', shortAlways.format(-1, 'hour')); -assertEquals('in 0 hr.', shortAlways.format(0, 'hour')); -assertEquals('0 hr. ago', shortAlways.format(-0, 'hour')); -assertEquals('in 1 hr.', shortAlways.format(1, 'hour')); -assertEquals('in 2 hr.', shortAlways.format(2, 'hour')); -assertEquals('in 345 hr.', shortAlways.format(345, 'hour')); - -assertEquals('3 days ago', shortAlways.format(-3, 'day')); -assertEquals('2 days ago', shortAlways.format(-2, 'day')); -assertEquals('1 day ago', shortAlways.format(-1, 'day')); -assertEquals('in 0 days', shortAlways.format(0, 'day')); -assertEquals('0 days ago', shortAlways.format(-0, 'day')); -assertEquals('in 1 day', shortAlways.format(1, 'day')); -assertEquals('in 2 days', shortAlways.format(2, 'day')); -assertEquals('in 345 days', shortAlways.format(345, 'day')); - -assertEquals('3 wk. ago', shortAlways.format(-3, 'week')); -assertEquals('2 wk. ago', shortAlways.format(-2, 'week')); -assertEquals('1 wk. ago', shortAlways.format(-1, 'week')); -assertEquals('in 0 wk.', shortAlways.format(0, 'week')); -assertEquals('0 wk. ago', shortAlways.format(-0, 'week')); -assertEquals('in 1 wk.', shortAlways.format(1, 'week')); -assertEquals('in 2 wk.', shortAlways.format(2, 'week')); -assertEquals('in 345 wk.', shortAlways.format(345, 'week')); - -assertEquals('3 mo. ago', shortAlways.format(-3, 'month')); -assertEquals('2 mo. ago', shortAlways.format(-2, 'month')); -assertEquals('1 mo. ago', shortAlways.format(-1, 'month')); -assertEquals('in 0 mo.', shortAlways.format(0, 'month')); -assertEquals('0 mo. ago', shortAlways.format(-0, 'month')); -assertEquals('in 1 mo.', shortAlways.format(1, 'month')); -assertEquals('in 2 mo.', shortAlways.format(2, 'month')); -assertEquals('in 345 mo.', shortAlways.format(345, 'month')); - -assertEquals('3 qtrs. ago', shortAlways.format(-3, 'quarter')); -assertEquals('2 qtrs. ago', shortAlways.format(-2, 'quarter')); -assertEquals('1 qtr. ago', shortAlways.format(-1, 'quarter')); -assertEquals('in 0 qtrs.', shortAlways.format(0, 'quarter')); -assertEquals('0 qtrs. ago', shortAlways.format(-0, 'quarter')); -assertEquals('in 1 qtr.', shortAlways.format(1, 'quarter')); -assertEquals('in 2 qtrs.', shortAlways.format(2, 'quarter')); -assertEquals('in 345 qtrs.', shortAlways.format(345, 'quarter')); - -assertEquals('3 yr. ago', shortAlways.format(-3, 'year')); -assertEquals('2 yr. ago', shortAlways.format(-2, 'year')); -assertEquals('1 yr. ago', shortAlways.format(-1, 'year')); -assertEquals('in 0 yr.', shortAlways.format(0, 'year')); -assertEquals('0 yr. ago', shortAlways.format(-0, 'year')); -assertEquals('in 1 yr.', shortAlways.format(1, 'year')); -assertEquals('in 2 yr.', shortAlways.format(2, 'year')); -assertEquals('in 345 yr.', shortAlways.format(345, 'year')); - -// Somehow in the 'en' locale, there are no valeu for -narrow -let narrowAlways = new Intl.RelativeTimeFormat( - "en", {style: "narrow", localeMatcher: 'lookup', numeric: 'always'}); - -assertEquals('3 sec. ago', narrowAlways.format(-3, 'second')); -assertEquals('2 sec. ago', narrowAlways.format(-2, 'second')); -assertEquals('1 sec. ago', narrowAlways.format(-1, 'second')); -assertEquals('in 0 sec.', narrowAlways.format(0, 'second')); -assertEquals('0 sec. ago', narrowAlways.format(-0, 'second')); -assertEquals('in 1 sec.', narrowAlways.format(1, 'second')); -assertEquals('in 2 sec.', narrowAlways.format(2, 'second')); -assertEquals('in 345 sec.', narrowAlways.format(345, 'second')); - -assertEquals('3 min. ago', narrowAlways.format(-3, 'minute')); -assertEquals('2 min. ago', narrowAlways.format(-2, 'minute')); -assertEquals('1 min. ago', narrowAlways.format(-1, 'minute')); -assertEquals('in 0 min.', narrowAlways.format(0, 'minute')); -assertEquals('0 min. ago', narrowAlways.format(-0, 'minute')); -assertEquals('in 1 min.', narrowAlways.format(1, 'minute')); -assertEquals('in 2 min.', narrowAlways.format(2, 'minute')); -assertEquals('in 345 min.', narrowAlways.format(345, 'minute')); - -assertEquals('3 hr. ago', narrowAlways.format(-3, 'hour')); -assertEquals('2 hr. ago', narrowAlways.format(-2, 'hour')); -assertEquals('1 hr. ago', narrowAlways.format(-1, 'hour')); -assertEquals('in 0 hr.', narrowAlways.format(0, 'hour')); -assertEquals('0 hr. ago', narrowAlways.format(-0, 'hour')); -assertEquals('in 1 hr.', narrowAlways.format(1, 'hour')); -assertEquals('in 2 hr.', narrowAlways.format(2, 'hour')); -assertEquals('in 345 hr.', narrowAlways.format(345, 'hour')); - -assertEquals('3 days ago', narrowAlways.format(-3, 'day')); -assertEquals('2 days ago', narrowAlways.format(-2, 'day')); -assertEquals('1 day ago', narrowAlways.format(-1, 'day')); -assertEquals('in 0 days', narrowAlways.format(0, 'day')); -assertEquals('0 days ago', narrowAlways.format(-0, 'day')); -assertEquals('in 1 day', narrowAlways.format(1, 'day')); -assertEquals('in 2 days', narrowAlways.format(2, 'day')); -assertEquals('in 345 days', narrowAlways.format(345, 'day')); - -assertEquals('3 wk. ago', narrowAlways.format(-3, 'week')); -assertEquals('2 wk. ago', narrowAlways.format(-2, 'week')); -assertEquals('1 wk. ago', narrowAlways.format(-1, 'week')); -assertEquals('in 0 wk.', narrowAlways.format(0, 'week')); -assertEquals('0 wk. ago', narrowAlways.format(-0, 'week')); -assertEquals('in 1 wk.', narrowAlways.format(1, 'week')); -assertEquals('in 2 wk.', narrowAlways.format(2, 'week')); -assertEquals('in 345 wk.', narrowAlways.format(345, 'week')); - -assertEquals('3 mo. ago', narrowAlways.format(-3, 'month')); -assertEquals('2 mo. ago', narrowAlways.format(-2, 'month')); -assertEquals('1 mo. ago', narrowAlways.format(-1, 'month')); -assertEquals('in 0 mo.', narrowAlways.format(0, 'month')); -assertEquals('0 mo. ago', narrowAlways.format(-0, 'month')); -assertEquals('in 1 mo.', narrowAlways.format(1, 'month')); -assertEquals('in 2 mo.', narrowAlways.format(2, 'month')); -assertEquals('in 345 mo.', narrowAlways.format(345, 'month')); - -assertEquals('3 qtrs. ago', narrowAlways.format(-3, 'quarter')); -assertEquals('2 qtrs. ago', narrowAlways.format(-2, 'quarter')); -assertEquals('1 qtr. ago', narrowAlways.format(-1, 'quarter')); -assertEquals('in 0 qtrs.', narrowAlways.format(0, 'quarter')); -assertEquals('0 qtrs. ago', narrowAlways.format(-0, 'quarter')); -assertEquals('in 1 qtr.', narrowAlways.format(1, 'quarter')); -assertEquals('in 2 qtrs.', narrowAlways.format(2, 'quarter')); -assertEquals('in 345 qtrs.', narrowAlways.format(345, 'quarter')); - -assertEquals('3 yr. ago', narrowAlways.format(-3, 'year')); -assertEquals('2 yr. ago', narrowAlways.format(-2, 'year')); -assertEquals('1 yr. ago', narrowAlways.format(-1, 'year')); -assertEquals('in 0 yr.', narrowAlways.format(0, 'year')); -assertEquals('0 yr. ago', narrowAlways.format(-0, 'year')); -assertEquals('in 1 yr.', narrowAlways.format(1, 'year')); -assertEquals('in 2 yr.', narrowAlways.format(2, 'year')); -assertEquals('in 345 yr.', narrowAlways.format(345, 'year')); - -var styleNumericCombinations = [ - longAuto, shortAuto, narrowAuto, longAlways, - shortAlways, narrowAlways ]; -var validUnits = [ - 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year']; - -// Test these all throw RangeError -for (var i = 0; i < styleNumericCombinations.length; i++) { - for (var j = 0; j < validUnits.length; j++) { - assertThrows(() => styleNumericCombinations[i].format(NaN, validUnits[j]), - RangeError); - assertThrows(() => styleNumericCombinations[i].format(NaN, validUnits[j] + 's'), - RangeError); - assertThrows(() => styleNumericCombinations[i].format(NaN, validUnits[j]), - RangeError); - assertThrows(() => styleNumericCombinations[i].format(NaN, validUnits[j] + 's'), - RangeError); - } -} diff --git a/implementation-contributed/v8/intl/relative-time-format/format-to-parts-en.js b/implementation-contributed/v8/intl/relative-time-format/format-to-parts-en.js deleted file mode 100644 index 7c2076b3124..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/format-to-parts-en.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// The following test are not part of the comformance. Just some output in -// English to verify the format does return something reasonable for English. -// It may be changed when we update the CLDR data. -// NOTE: These are UNSPECIFIED behavior in -// http://tc39.github.io/proposal-intl-relative-time/ - -// From Sample code in https://github.com/tc39/proposal-intl-relative-time#intlrelativetimeformatprototypeformattopartsvalue-unit -// // Format relative time using the day unit. -// rtf.formatToParts(-1, "day"); -// // > [{ type: "literal", value: "yesterday"}] -let longAuto = new Intl.RelativeTimeFormat( - "en", {style: "long", localeMatcher: 'lookup', numeric: 'auto'}); -var parts = longAuto.formatToParts(-1, "day"); -assertEquals(1, parts.length); -assertEquals(2, Object.getOwnPropertyNames(parts[0]).length); -assertEquals('literal', parts[0].type); -assertEquals('yesterday', parts[0].value); - -// From Sample code in https://github.com/tc39/proposal-intl-relative-time#intlrelativetimeformatprototypeformattopartsvalue-unit -// rtf.formatToParts(100, "day"); -// // > [{ type: "literal", value: "in " }, { type: "integer", value: "100", unit: "day" }, { type: "literal", value: " days" }] -let longAlways = new Intl.RelativeTimeFormat( - "en", {style: "long", localeMatcher: 'lookup', numeric: 'always'}); - -parts = longAlways.formatToParts(100, "day"); -assertEquals(3, parts.length); - -assertEquals(2, Object.getOwnPropertyNames(parts[0]).length); -assertEquals('literal', parts[0].type); -assertEquals('in ', parts[0].value); - -assertEquals(3, Object.getOwnPropertyNames(parts[1]).length); -assertEquals('integer', parts[1].type); -assertEquals('100', parts[1].value); -assertEquals('day', parts[1].unit); - -assertEquals(2, Object.getOwnPropertyNames(parts[2]).length); -assertEquals('literal', parts[2].type); -assertEquals(' days', parts[2].value); - -assertThrows(() => longAlways.format(NaN, 'second'), RangeError); -assertThrows(() => longAuto.format(NaN, 'second'), RangeError); - -parts = longAlways.formatToParts(-10, "day"); -assertEquals(2, parts.length); -assertEquals(3, Object.getOwnPropertyNames(parts[0]).length); -assertEquals('integer', parts[0].type); -assertEquals('10', parts[0].value); -assertEquals('day', parts[0].unit); -assertEquals(2, Object.getOwnPropertyNames(parts[1]).length); -assertEquals('literal', parts[1].type); -assertEquals(' days ago', parts[1].value); - -parts = longAlways.formatToParts(-0, "day"); -assertEquals(2, parts.length); -assertEquals(3, Object.getOwnPropertyNames(parts[0]).length); -assertEquals('integer', parts[0].type); -assertEquals('0', parts[0].value); -assertEquals('day', parts[0].unit); -assertEquals(2, Object.getOwnPropertyNames(parts[1]).length); -assertEquals('literal', parts[1].type); -assertEquals(' days ago', parts[1].value); - -// Test with non integer -// Part Idx: 0 1 23 45 6 -assertEquals('in 123,456.78 seconds', longAlways.format(123456.78, 'seconds')); -parts = longAlways.formatToParts(123456.78, 'seconds'); -assertEquals(7, parts.length); -// 0: "in " -assertEquals(2, Object.getOwnPropertyNames(parts[0]).length); -assertEquals('literal', parts[0].type); -assertEquals('in ', parts[0].value); -assertEquals(undefined, parts[0].unit); -// 1: "123" -assertEquals(3, Object.getOwnPropertyNames(parts[1]).length); -assertEquals('integer', parts[1].type); -assertEquals('123', parts[1].value); -assertEquals('second', parts[1].unit); -// 2: "," -assertEquals(3, Object.getOwnPropertyNames(parts[2]).length); -assertEquals('group', parts[2].type); -assertEquals(',', parts[2].value); -assertEquals('second', parts[2].unit); -// 3: "456" -assertEquals(3, Object.getOwnPropertyNames(parts[3]).length); -assertEquals('integer', parts[3].type); -assertEquals('456', parts[3].value); -assertEquals('second', parts[3].unit); -// 4: "." -assertEquals(3, Object.getOwnPropertyNames(parts[4]).length); -assertEquals('decimal', parts[4].type); -assertEquals('.', parts[4].value); -assertEquals('second', parts[4].unit); -// 5: "78" -assertEquals(3, Object.getOwnPropertyNames(parts[4]).length); -assertEquals('fraction', parts[5].type); -assertEquals('78', parts[5].value); -assertEquals('second', parts[5].unit); -// 6: " seconds" -assertEquals(2, Object.getOwnPropertyNames(parts[6]).length); -assertEquals('literal', parts[6].type); -assertEquals(' seconds', parts[6].value); -assertEquals(undefined, parts[6].unit); diff --git a/implementation-contributed/v8/intl/relative-time-format/format-to-parts-plural.js b/implementation-contributed/v8/intl/relative-time-format/format-to-parts-plural.js deleted file mode 100644 index bd70f75421d..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/format-to-parts-plural.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check plural w/ formatToParts -// http://tc39.github.io/proposal-intl-relative-time/ - -let rtf = new Intl.RelativeTimeFormat(); - -// Test 1.4.4 Intl.RelativeTimeFormat.prototype.formatToParts( value, unit ) -function verifyElement(part, expectedUnit) { - assertEquals(true, part.type == 'literal' || part.type == 'integer'); - assertEquals('string', typeof part.value); - if (part.type == 'integer') { - assertEquals('string', typeof part.unit); - assertEquals(expectedUnit, part.unit); - } -}; - -['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second'].forEach( - function(unit) { - rtf.formatToParts(100, unit + 's').forEach( - function(part) { - verifyElement(part, unit); - }); - }); diff --git a/implementation-contributed/v8/intl/relative-time-format/format-to-parts.js b/implementation-contributed/v8/intl/relative-time-format/format-to-parts.js deleted file mode 100644 index ccc9170225e..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/format-to-parts.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Make sure that RelativeTimeFormat exposes all required properties. Those not specified -// should have undefined value. -// http://tc39.github.io/proposal-intl-relative-time/ - -let rtf = new Intl.RelativeTimeFormat(); - -// Test 1.4.4 Intl.RelativeTimeFormat.prototype.formatToParts( value, unit ) -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'seconds'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'second'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'minutes'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'minute'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'hours'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'hour'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'days'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'day'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'weeks'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'week'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'months'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'month'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'quarters'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'quarter'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'years'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-1, 'year'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'seconds'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'second'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'minutes'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'minute'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'hours'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'hour'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'days'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'day'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'weeks'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'week'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'months'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'month'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'quarters'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'quarter'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'years'))); -assertEquals(true, Array.isArray(rtf.formatToParts(-0, 'year'))); - -assertThrows(() => rtf.formatToParts(-1, 'decades'), RangeError); -assertThrows(() => rtf.formatToParts(-1, 'decade'), RangeError); -assertThrows(() => rtf.formatToParts(-1, 'centuries'), RangeError); -assertThrows(() => rtf.formatToParts(-1, 'century'), RangeError); -assertThrows(() => rtf.formatToParts(-1, 'milliseconds'), RangeError); -assertThrows(() => rtf.formatToParts(-1, 'millisecond'), RangeError); -assertThrows(() => rtf.formatToParts(-1, 'microseconds'), RangeError); -assertThrows(() => rtf.formatToParts(-1, 'microsecond'), RangeError); -assertThrows(() => rtf.formatToParts(-1, 'nanoseconds'), RangeError); -assertThrows(() => rtf.formatToParts(-1, 'nanosecond'), RangeError); - -assertThrows(() => rtf.formatToParts(NaN, 'seconds'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'second'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'minutes'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'minute'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'hours'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'hour'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'days'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'day'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'weeks'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'week'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'months'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'month'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'years'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'year'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'quarters'), RangeError); -assertThrows(() => rtf.formatToParts(NaN, 'quarter'), RangeError); - -assertEquals(true, Array.isArray(rtf.formatToParts(100, 'day'))); -rtf.formatToParts(100, 'day').forEach(function(part) { - assertEquals(true, part.type == 'literal' || part.type == 'integer'); - assertEquals('string', typeof part.value); - if (part.type == 'integer') { - assertEquals('string', typeof part.unit); - } -}); diff --git a/implementation-contributed/v8/intl/relative-time-format/format.js b/implementation-contributed/v8/intl/relative-time-format/format.js deleted file mode 100644 index e458ad728dd..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/format.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Make sure that RelativeTimeFormat exposes all required properties. Those not specified -// should have undefined value. -// http://tc39.github.io/proposal-intl-relative-time/ - -let rtf = new Intl.RelativeTimeFormat(); - -// Test 1.4.3 Intl.RelativeTimeFormat.prototype.format( value, unit ) -assertEquals('string', typeof rtf.format(-1, 'seconds')); -assertEquals('string', typeof rtf.format(-1, 'second')); -assertEquals('string', typeof rtf.format(-1, 'minutes')); -assertEquals('string', typeof rtf.format(-1, 'minute')); -assertEquals('string', typeof rtf.format(-1, 'hours')); -assertEquals('string', typeof rtf.format(-1, 'hour')); -assertEquals('string', typeof rtf.format(-1, 'days')); -assertEquals('string', typeof rtf.format(-1, 'day')); -assertEquals('string', typeof rtf.format(-1, 'weeks')); -assertEquals('string', typeof rtf.format(-1, 'week')); -assertEquals('string', typeof rtf.format(-1, 'months')); -assertEquals('string', typeof rtf.format(-1, 'month')); -assertEquals('string', typeof rtf.format(-1, 'years')); -assertEquals('string', typeof rtf.format(-1, 'year')); -assertEquals('string', typeof rtf.format(-1, 'quarter')); -assertEquals('string', typeof rtf.format(-1, 'quarters')); - -assertEquals('string', typeof rtf.format(-0, 'seconds')); -assertEquals('string', typeof rtf.format(-0, 'second')); -assertEquals('string', typeof rtf.format(-0, 'minutes')); -assertEquals('string', typeof rtf.format(-0, 'minute')); -assertEquals('string', typeof rtf.format(-0, 'hours')); -assertEquals('string', typeof rtf.format(-0, 'hour')); -assertEquals('string', typeof rtf.format(-0, 'days')); -assertEquals('string', typeof rtf.format(-0, 'day')); -assertEquals('string', typeof rtf.format(-0, 'weeks')); -assertEquals('string', typeof rtf.format(-0, 'week')); -assertEquals('string', typeof rtf.format(-0, 'months')); -assertEquals('string', typeof rtf.format(-0, 'month')); -assertEquals('string', typeof rtf.format(-0, 'years')); -assertEquals('string', typeof rtf.format(-0, 'year')); -assertEquals('string', typeof rtf.format(-0, 'quarter')); -assertEquals('string', typeof rtf.format(-0, 'quarters')); - -assertThrows(() => rtf.format(NaN, 'seconds'), RangeError); -assertThrows(() => rtf.format(NaN, 'second'), RangeError); -assertThrows(() => rtf.format(NaN, 'minutes'), RangeError); -assertThrows(() => rtf.format(NaN, 'minute'), RangeError); -assertThrows(() => rtf.format(NaN, 'hours'), RangeError); -assertThrows(() => rtf.format(NaN, 'hour'), RangeError); -assertThrows(() => rtf.format(NaN, 'days'), RangeError); -assertThrows(() => rtf.format(NaN, 'day'), RangeError); -assertThrows(() => rtf.format(NaN, 'weeks'), RangeError); -assertThrows(() => rtf.format(NaN, 'week'), RangeError); -assertThrows(() => rtf.format(NaN, 'months'), RangeError); -assertThrows(() => rtf.format(NaN, 'month'), RangeError); -assertThrows(() => rtf.format(NaN, 'years'), RangeError); -assertThrows(() => rtf.format(NaN, 'year'), RangeError); -assertThrows(() => rtf.format(NaN, 'quarters'), RangeError); -assertThrows(() => rtf.format(NaN, 'quarter'), RangeError); - -assertThrows(() => rtf.format(-1, 'decades'), RangeError); -assertThrows(() => rtf.format(-1, 'decade'), RangeError); -assertThrows(() => rtf.format(-1, 'centuries'), RangeError); -assertThrows(() => rtf.format(-1, 'century'), RangeError); -assertThrows(() => rtf.format(-1, 'milliseconds'), RangeError); -assertThrows(() => rtf.format(-1, 'millisecond'), RangeError); -assertThrows(() => rtf.format(-1, 'microseconds'), RangeError); -assertThrows(() => rtf.format(-1, 'microsecond'), RangeError); -assertThrows(() => rtf.format(-1, 'nanoseconds'), RangeError); -assertThrows(() => rtf.format(-1, 'nanosecond'), RangeError); - -assertEquals('string', typeof rtf.format(5, 'day')); -assertEquals('string', typeof rtf.format('5', 'day')); -assertEquals('string', typeof rtf.format('-5', 'day')); -assertEquals('string', typeof rtf.format('534', 'day')); -assertEquals('string', typeof rtf.format('-534', 'day')); - -//assertThrows(() => rtf.format('xyz', 'day'), RangeError); diff --git a/implementation-contributed/v8/intl/relative-time-format/resolved-options-nu.js b/implementation-contributed/v8/intl/relative-time-format/resolved-options-nu.js deleted file mode 100644 index fb1fa72a93b..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/resolved-options-nu.js +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-relative-time-format - -// For locale default the numberingSystem to 'latn' -assertEquals( - "latn", - new Intl.RelativeTimeFormat("ar").resolvedOptions().numberingSystem -); -assertEquals( - "latn", - new Intl.RelativeTimeFormat("en").resolvedOptions().numberingSystem -); -assertEquals( - "latn", - new Intl.RelativeTimeFormat("fr").resolvedOptions().numberingSystem -); -assertEquals( - "latn", - new Intl.RelativeTimeFormat("hi").resolvedOptions().numberingSystem -); -assertEquals( - "latn", - new Intl.RelativeTimeFormat("th").resolvedOptions().numberingSystem -); -assertEquals( - "latn", - new Intl.RelativeTimeFormat("zh-Hant").resolvedOptions().numberingSystem -); - -// For locale default the numberingSystem to other than 'latn' -assertEquals( - "arab", - new Intl.RelativeTimeFormat("ar-TD").resolvedOptions().numberingSystem -); -assertEquals( - "arabext", - new Intl.RelativeTimeFormat("fa").resolvedOptions().numberingSystem -); -assertEquals( - "beng", - new Intl.RelativeTimeFormat("bn").resolvedOptions().numberingSystem -); - -// For locale use -u-nu- to change to other numberingSystem -assertEquals( - "thai", - new Intl.RelativeTimeFormat("en-u-nu-thai").resolvedOptions() - .numberingSystem -); -assertEquals( - "arab", - new Intl.RelativeTimeFormat("en-u-nu-arab").resolvedOptions() - .numberingSystem -); - -// For locale which default others but use -u-nu-latn to change to 'latn' numberingSystem -assertEquals( - "latn", - new Intl.RelativeTimeFormat("fa-u-nu-latn").resolvedOptions() - .numberingSystem -); -assertEquals( - "latn", - new Intl.RelativeTimeFormat("ar-TD-u-nu-latn").resolvedOptions() - .numberingSystem -); -assertEquals( - "latn", - new Intl.RelativeTimeFormat("fa-u-nu-latn").resolvedOptions() - .numberingSystem -); -assertEquals( - "latn", - new Intl.RelativeTimeFormat("bn-u-nu-latn").resolvedOptions() - .numberingSystem -); - -// For locale use -u-nu- with invalid value still back to default. -assertEquals( - "latn", - new Intl.RelativeTimeFormat("en-u-nu-abcd").resolvedOptions() - .numberingSystem -); - -assertEquals( - "arabext", - new Intl.RelativeTimeFormat("fa-u-nu-abcd").resolvedOptions() - .numberingSystem -); -assertEquals( - "beng", - new Intl.RelativeTimeFormat("bn-u-nu-abcd").resolvedOptions() - .numberingSystem -); diff --git a/implementation-contributed/v8/intl/relative-time-format/resolved-options.js b/implementation-contributed/v8/intl/relative-time-format/resolved-options.js deleted file mode 100644 index 1caa4f86c99..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/resolved-options.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let rtf = new Intl.RelativeTimeFormat(); -// Test 1.4.5 Intl.RelativeTimeFormat.prototype.resolvedOptions () -// The default style is 'long' -assertEquals('long', rtf.resolvedOptions().style); - -// The default numeric is 'always' -assertEquals('always', rtf.resolvedOptions().numeric); - -// contains style, numeric and locale key -assertEquals(4, Object.getOwnPropertyNames(rtf.resolvedOptions()).length); - -// contains style, numeric and locale key -assertEquals( - 4, - Object.getOwnPropertyNames( - new Intl.RelativeTimeFormat("en").resolvedOptions() - ).length -); - -assertEquals( - 'short', - (new Intl.RelativeTimeFormat(['sr'], {style: 'short'})) - .resolvedOptions().style); - -assertEquals( - 'always', - (new Intl.RelativeTimeFormat(['sr'], {style: 'short'})) - .resolvedOptions().numeric); - -assertEquals( - 'narrow', - (new Intl.RelativeTimeFormat(['sr'], {style: 'narrow'})) - .resolvedOptions().style); - -assertEquals( - 'always', - (new Intl.RelativeTimeFormat(['sr'], {style: 'narrow'})) - .resolvedOptions().numeric); - -assertEquals( - 'long', - (new Intl.RelativeTimeFormat(['sr'], {style: 'long'})) - .resolvedOptions().style); - -assertEquals( - 'always', - (new Intl.RelativeTimeFormat(['sr'], {style: 'long'})) - .resolvedOptions().numeric); - -assertEquals( - 'auto', - (new Intl.RelativeTimeFormat(['sr'], {numeric: 'auto'})) - .resolvedOptions().numeric); - -assertEquals( - 'long', - (new Intl.RelativeTimeFormat(['sr'], {numeric: 'auto'})) - .resolvedOptions().style); - -assertEquals( - 'always', - (new Intl.RelativeTimeFormat(['sr'], {numeric: 'always'})) - .resolvedOptions().numeric); - -assertEquals( - 'long', - (new Intl.RelativeTimeFormat(['sr'], {numeric: 'always'})) - .resolvedOptions().style); - -assertEquals( - 'long', - (new Intl.RelativeTimeFormat(['sr'], {style: 'long', numeric: 'auto'})) - .resolvedOptions().style); - -assertEquals( - 'auto', - (new Intl.RelativeTimeFormat(['sr'], {style: 'long', numeric: 'auto'})) - .resolvedOptions().numeric); - -assertEquals( - 'long', - (new Intl.RelativeTimeFormat(['sr'], {style: 'long', numeric: 'always'})) - .resolvedOptions().style); - -assertEquals( - 'always', - (new Intl.RelativeTimeFormat(['sr'], {style: 'long', numeric: 'always'})) - .resolvedOptions().numeric); - -assertEquals( - 'short', - (new Intl.RelativeTimeFormat(['sr'], {style: 'short', numeric: 'auto'})) - .resolvedOptions().style); - -assertEquals( - 'auto', - (new Intl.RelativeTimeFormat(['sr'], {style: 'short', numeric: 'auto'})) - .resolvedOptions().numeric); - -assertEquals( - 'short', - (new Intl.RelativeTimeFormat(['sr'], {style: 'short', numeric: 'always'})) - .resolvedOptions().style); - -assertEquals( - 'always', - (new Intl.RelativeTimeFormat(['sr'], {style: 'short', numeric: 'always'})) - .resolvedOptions().numeric); - -assertEquals( - 'narrow', - (new Intl.RelativeTimeFormat(['sr'], {style: 'narrow', numeric: 'auto'})) - .resolvedOptions().style); - -assertEquals( - 'auto', - (new Intl.RelativeTimeFormat(['sr'], {style: 'narrow', numeric: 'auto'})) - .resolvedOptions().numeric); - -assertEquals( - 'narrow', - (new Intl.RelativeTimeFormat(['sr'], {style: 'narrow', numeric: 'always'})) - .resolvedOptions().style); - -assertEquals( - 'always', - (new Intl.RelativeTimeFormat(['sr'], {style: 'narrow', numeric: 'always'})) - .resolvedOptions().numeric); - -assertEquals( - 'ar', - (new Intl.RelativeTimeFormat(['ar'])).resolvedOptions().locale); - -assertEquals( - 'ar', - (new Intl.RelativeTimeFormat(['ar', 'en'])).resolvedOptions().locale); - -assertEquals( - 'fr', - (new Intl.RelativeTimeFormat(['fr', 'en'])).resolvedOptions().locale); - -assertEquals( - 'ar', - (new Intl.RelativeTimeFormat(['xyz', 'ar'])).resolvedOptions().locale); - -{ - var receiver = 1; - assertThrows(() => - Intl.RelativeTimeFormat.prototype.resolvedOptions.call(receiver), TypeError); - - receiver = {}; - assertThrows(() => - Intl.RelativeTimeFormat.prototype.resolvedOptions.call(receiver), TypeError); -} - -assertEquals( - 'ar', - (new Intl.RelativeTimeFormat(['i-default', 'ar'])).resolvedOptions().locale); diff --git a/implementation-contributed/v8/intl/relative-time-format/supported-locale.js b/implementation-contributed/v8/intl/relative-time-format/supported-locale.js deleted file mode 100644 index 5c177b47771..00000000000 --- a/implementation-contributed/v8/intl/relative-time-format/supported-locale.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(typeof Intl.RelativeTimeFormat.supportedLocalesOf, "function", - "Intl.RelativeTimeFormat.supportedLocalesOf should be a function"); - -var undef = Intl.RelativeTimeFormat.supportedLocalesOf(); -assertEquals([], undef); - -var empty = Intl.RelativeTimeFormat.supportedLocalesOf([]); -assertEquals([], empty); - -var strLocale = Intl.RelativeTimeFormat.supportedLocalesOf('sr'); -assertEquals('sr', strLocale[0]); - -var multiLocale = ['sr-Thai-RS', 'de', 'zh-CN']; -assertEquals(multiLocale, Intl.RelativeTimeFormat.supportedLocalesOf(multiLocale)); diff --git a/implementation-contributed/v8/intl/segmenter/check-lb-option.js b/implementation-contributed/v8/intl/segmenter/check-lb-option.js deleted file mode 100644 index 0e54d182028..00000000000 --- a/implementation-contributed/v8/intl/segmenter/check-lb-option.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -let invalid_lb = [ - "invalid", - "abce", - "breakall", - "keepall", - "none", - "standard", - "strict", - "normal", - "loose", -]; - -let locales = [ - "en", - "ja", - "zh", -]; - -invalid_lb.forEach(function(lb) { - let df = new Intl.Segmenter(["en-u-lb-" + lb + "-fo-obar"]); - assertEquals("en", df.resolvedOptions().locale); -} -); diff --git a/implementation-contributed/v8/intl/segmenter/constructor-order.js b/implementation-contributed/v8/intl/segmenter/constructor-order.js deleted file mode 100644 index e43fb9f9630..00000000000 --- a/implementation-contributed/v8/intl/segmenter/constructor-order.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -// Throws only once during construction. -// Check for all getters to prevent regression. -// Preserve the order of getter initialization. -let getCount = 0; - -new Intl.Segmenter(['en-US'], { - get localeMatcher() { - assertEquals(0, getCount++); - }, - get granularity() { - assertEquals(1, getCount++); - }, -}); -assertEquals(2, getCount); diff --git a/implementation-contributed/v8/intl/segmenter/constructor.js b/implementation-contributed/v8/intl/segmenter/constructor.js deleted file mode 100644 index 6612e1eab68..00000000000 --- a/implementation-contributed/v8/intl/segmenter/constructor.js +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -// Segmenter constructor can't be called as function. -assertThrows(() => Intl.Segmenter(["sr"]), TypeError); - -// Invalid locale string. -assertThrows(() => new Intl.Segmenter(["abcdefghi"]), RangeError); - -assertDoesNotThrow(() => new Intl.Segmenter(["sr"], {}), TypeError); - -assertDoesNotThrow(() => new Intl.Segmenter([], {})); - -assertDoesNotThrow(() => new Intl.Segmenter(["fr", "ar"], {})); - -assertDoesNotThrow(() => new Intl.Segmenter({ 0: "ja", 1: "fr" }, {})); - -assertDoesNotThrow(() => new Intl.Segmenter({ 1: "ja", 2: "fr" }, {})); - -assertDoesNotThrow(() => new Intl.Segmenter(["sr"])); - -assertDoesNotThrow(() => new Intl.Segmenter()); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - lineBreakStyle: "strict", - granularity: "grapheme" - }) -); - -assertDoesNotThrow( - () => new Intl.Segmenter(["sr"], { granularity: "sentence" }) -); - -assertDoesNotThrow(() => new Intl.Segmenter(["sr"], { granularity: "word" })); - -assertDoesNotThrow( - () => new Intl.Segmenter(["sr"], { granularity: "grapheme" }) -); - -assertThrows(() => new Intl.Segmenter(["sr"], { granularity: "line" }), RangeError); - -assertThrows( - () => new Intl.Segmenter(["sr"], { granularity: "standard" }), - RangeError -); - -assertDoesNotThrow( - () => new Intl.Segmenter(["sr"], { lineBreakStyle: "normal" }) -); - -assertDoesNotThrow( - () => new Intl.Segmenter(["sr"], { lineBreakStyle: "strict" }) -); - -assertDoesNotThrow( - () => new Intl.Segmenter(["sr"], { lineBreakStyle: "loose" }) -); - -assertDoesNotThrow( - () => new Intl.Segmenter(["sr"], { lineBreakStyle: "giant" }) -); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - granularity: "sentence", - lineBreakStyle: "normal" - }) -); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - granularity: "sentence", - lineBreakStyle: "strict" - }) -); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - granularity: "sentence", - lineBreakStyle: "loose" - }) -); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - granularity: "word", - lineBreakStyle: "normal" - }) -); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - granularity: "word", - lineBreakStyle: "strict" - }) -); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - granularity: "word", - lineBreakStyle: "loose" - }) -); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - granularity: "grapheme", - lineBreakStyle: "normal" - }) -); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - granularity: "grapheme", - lineBreakStyle: "strict" - }) -); - -assertDoesNotThrow( - () => - new Intl.Segmenter(["sr"], { - granularity: "grapheme", - lineBreakStyle: "loose" - }) -); - -assertThrows( - () => - new Intl.Segmenter(["sr"], { - granularity: "line", - lineBreakStyle: "loose" - }), RangeError -); - -assertThrows( - () => - new Intl.Segmenter(["sr"], { - granularity: "line", - lineBreakStyle: "normal" - }), RangeError -); - -assertThrows( - () => - new Intl.Segmenter(["sr"], { - granularity: "line", - lineBreakStyle: "strict" - }), RangeError -); - -// propagate exception from getter -assertThrows( - () => - new Intl.Segmenter(undefined, { - get localeMatcher() { - throw new TypeError(""); - } - }), - TypeError -); -assertDoesNotThrow( - () => - new Intl.Segmenter(undefined, { - get lineBreakStyle() { - throw new TypeError(""); - } - }) -); -assertThrows( - () => - new Intl.Segmenter(undefined, { - get granularity() { - throw new TypeError(""); - } - }), - TypeError -); diff --git a/implementation-contributed/v8/intl/segmenter/segment-grapheme-following.js b/implementation-contributed/v8/intl/segmenter/segment-grapheme-following.js deleted file mode 100644 index 4cfd8f4aefd..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-grapheme-following.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "grapheme"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - let prev = 0; - let segments = []; - while (!iter.following()) { - assertEquals(undefined, iter.breakType); - assertTrue(iter.index >= 0); - assertTrue(iter.index <= text.length); - assertTrue(iter.index > prev); - segments.push(text.substring(prev, iter.index)); - prev = iter.index; - } - assertEquals(text, segments.join("")); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-grapheme-iterable.js b/implementation-contributed/v8/intl/segmenter/segment-grapheme-iterable.js deleted file mode 100644 index cd18590ee19..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-grapheme-iterable.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "grapheme"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - let segments = []; - // Create another %SegmentIterator% to compare with result from the one that - // created in the for of loop. - let iter = seg.segment(text); - let prev = 0; - for (const v of seg.segment(text)) { - assertEquals(undefined, v.breakType); - assertEquals("string", typeof v.segment); - assertTrue(v.segment.length > 0); - segments.push(v.segment); - - // manually advance the iter. - assertFalse(iter.following()); - assertEquals(iter.breakType, v.breakType); - assertEquals(text.substring(prev, iter.index), v.segment); - prev = iter.index; - } - assertTrue(iter.following()); - assertEquals(text, segments.join('')); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-grapheme-next.js b/implementation-contributed/v8/intl/segmenter/segment-grapheme-next.js deleted file mode 100644 index df7f82acffe..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-grapheme-next.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "grapheme"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - let segments = []; - let oldPos = -1; - for (let result = iter.next(); !result.done; result = iter.next()) { - const v = result.value; - assertEquals(undefined, v.breakType); - assertEquals("string", typeof v.segment); - assertTrue(v.segment.length > 0); - segments.push(v.segment); - assertEquals("number", typeof v.index); - assertTrue(oldPos < v.index); - oldPos = v.index; - } - assertEquals(text, segments.join('')); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-grapheme-preceding.js b/implementation-contributed/v8/intl/segmenter/segment-grapheme-preceding.js deleted file mode 100644 index 9ee7b7c811c..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-grapheme-preceding.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "grapheme"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - let prev = text.length; - let segments = []; - iter.preceding(prev) - assertEquals(undefined, iter.breakType) - assertTrue(iter.index >= 0); - assertTrue(iter.index < prev); - segments.push(text.substring(iter.index, prev)); - prev = iter.index; - while (!iter.preceding()) { - assertEquals(undefined, iter.breakType); - assertTrue(iter.index >= 0); - assertTrue(iter.index <= text.length); - assertTrue(iter.index < prev); - segments.push(text.substring(iter.index, prev)); - prev = iter.index; - } - assertEquals(text, segments.reverse().join("")); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-grapheme.js b/implementation-contributed/v8/intl/segmenter/segment-grapheme.js deleted file mode 100644 index 1515f0997d7..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-grapheme.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "grapheme"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - assertEquals(undefined, iter.breakType); - assertEquals(0, iter.index); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-iterator-following.js b/implementation-contributed/v8/intl/segmenter/segment-iterator-following.js deleted file mode 100644 index 14f6dd16c43..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-iterator-following.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const segmenter = new Intl.Segmenter(); -const text = "Hello World, Test 123! Foo Bar. How are you?"; -const iter = segmenter.segment(text); - -assertEquals("function", typeof iter.following); - -// ToNumber("ABC") return NaN, ToInteger("ABC") return +0, ToIndex("ABC") return 0 -assertDoesNotThrow(() => iter.following("ABC")); -// ToNumber(null) return +0, ToInteger(null) return +0, ToIndex(null) return 0 -assertDoesNotThrow(() => iter.following(null)); -// ToNumber(1.4) return 1.4, ToInteger(1.4) return 1, ToIndex(1.4) return 1 -assertDoesNotThrow(() => iter.following(1.4)); - -assertThrows(() => iter.following(-3), RangeError); - -// 1.5.3.2 %SegmentIteratorPrototype%.following( [ from ] ) -// 3.b If from >= iterator.[[SegmentIteratorString]], throw a RangeError exception. -assertDoesNotThrow(() => iter.following(text.length - 1)); -assertThrows(() => iter.following(text.length), RangeError); -assertThrows(() => iter.following(text.length + 1), RangeError); diff --git a/implementation-contributed/v8/intl/segmenter/segment-iterator-ownPropertyDescriptor.js b/implementation-contributed/v8/intl/segmenter/segment-iterator-ownPropertyDescriptor.js deleted file mode 100644 index 3021c81c638..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-iterator-ownPropertyDescriptor.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -let seg = new Intl.Segmenter(); -let descriptor = Object.getOwnPropertyDescriptor( - Intl.Segmenter, "supportedLocalesOf"); -assertTrue(descriptor.writable); -assertFalse(descriptor.enumerable); -assertTrue(descriptor.configurable); - -// ecma402 #sec-Intl.Segmenter.prototype -// Intl.Segmenter.prototype -// The value of Intl.Segmenter.prototype is %SegmenterPrototype%. -// This property has the attributes -// { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }. -descriptor = Object.getOwnPropertyDescriptor(Intl.Segmenter, "prototype"); -assertFalse(descriptor.writable); -assertFalse(descriptor.enumerable); -assertFalse(descriptor.configurable); - -for (let func of ["segment", "resolvedOptions"]) { - let descriptor = Object.getOwnPropertyDescriptor( - Intl.Segmenter.prototype, func); - assertTrue(descriptor.writable); - assertFalse(descriptor.enumerable); - assertTrue(descriptor.configurable); -} - -let segmentIterator = seg.segment('text'); -let prototype = Object.getPrototypeOf(segmentIterator); -for (let func of ["next", "following", "preceding"]) { - let descriptor = Object.getOwnPropertyDescriptor(prototype, func); - assertTrue(descriptor.writable); - assertFalse(descriptor.enumerable); - assertTrue(descriptor.configurable); -} - -function checkGetterProperty(prototype, property) { - let desc = Object.getOwnPropertyDescriptor(prototype, property); - assertEquals(`get ${property}`, desc.get.name); - assertEquals('function', typeof desc.get) - assertEquals(undefined, desc.set); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); -} - -// Test the descriptor is correct for properties. -checkGetterProperty(prototype, 'index'); -checkGetterProperty(prototype, 'breakType'); - -// Test the SegmentIteratorPrototype methods are called with same -// receiver and won't throw. -assertDoesNotThrow(() => prototype.next.call(segmentIterator)); -assertDoesNotThrow(() => prototype.following.call(segmentIterator)); -assertDoesNotThrow(() => prototype.preceding.call(segmentIterator)); - -// Test the SegmentIteratorPrototype methods are called with a different -// receiver and correctly throw. -var otherReceivers = [ - 1, 123.45, undefined, null, "string", true, false, - Intl, Intl.Segmenter, Intl.Segmenter.prototype, - prototype, - new Intl.Segmenter(), - new Intl.Collator(), - new Intl.DateTimeFormat(), - new Intl.NumberFormat(), -]; -for (let rec of otherReceivers) { - assertThrows(() => prototype.next.call(rec), TypeError); - assertThrows(() => prototype.following.call(rec), TypeError); - assertThrows(() => prototype.preceding.call(rec), TypeError); -} - -// Check the property of the return object of next() -let nextReturn = segmentIterator.next(); - -function checkProperty(obj, property) { - let desc = Object.getOwnPropertyDescriptor(obj, property); - assertTrue(desc.writable); - assertTrue(desc.enumerable); - assertTrue(desc.configurable); -} - -checkProperty(nextReturn, 'done'); -checkProperty(nextReturn, 'value'); -checkProperty(nextReturn.value, 'segment'); -checkProperty(nextReturn.value, 'breakType'); -checkProperty(nextReturn.value, 'index'); diff --git a/implementation-contributed/v8/intl/segmenter/segment-iterator-position.js b/implementation-contributed/v8/intl/segmenter/segment-iterator-position.js deleted file mode 100644 index 649076b4544..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-iterator-position.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const segmenter = new Intl.Segmenter(); -const text = "Hello World, Test 123! Foo Bar. How are you?"; -const iter = segmenter.segment(text); - -assertEquals(0, iter.index); diff --git a/implementation-contributed/v8/intl/segmenter/segment-iterator-preceding.js b/implementation-contributed/v8/intl/segmenter/segment-iterator-preceding.js deleted file mode 100644 index 09ba2847cc1..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-iterator-preceding.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const segmenter = new Intl.Segmenter(); -const text = "Hello World, Test 123! Foo Bar. How are you?"; -const iter = segmenter.segment(text); - -assertEquals("function", typeof iter.preceding); - -// ToNumber("ABC") return NaN, ToInteger("ABC") return +0, ToIndex("ABC") return 0 -assertThrows(() => iter.preceding("ABC"), RangeError); -// ToNumber(null) return +0, ToInteger(null) return +0, ToIndex(null) return 0 -assertThrows(() => iter.preceding(null), RangeError); -assertThrows(() => iter.preceding(-3), RangeError); - -// ToNumber(1.4) return 1.4, ToInteger(1.4) return 1, ToIndex(1.4) return 1 -assertDoesNotThrow(() => iter.preceding(1.4)); - -// 1.5.3.3 %SegmentIteratorPrototype%.preceding( [ from ] ) -// 3.b If ... from = 0, throw a RangeError exception. -assertThrows(() => iter.preceding(0), RangeError); - -// 1.5.3.3 %SegmentIteratorPrototype%.preceding( [ from ] ) -// 3.b If from > iterator.[[SegmentIteratorString]] ... , throw a RangeError exception. -assertDoesNotThrow(() => iter.preceding(text.length - 1)); -assertDoesNotThrow(() => iter.preceding(text.length)); -assertThrows(() => iter.preceding(text.length + 1), RangeError); diff --git a/implementation-contributed/v8/intl/segmenter/segment-iterator.js b/implementation-contributed/v8/intl/segmenter/segment-iterator.js deleted file mode 100644 index 696ffab554f..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-iterator.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const text = "Hello World, Test 123! Foo Bar. How are you?"; -for (const granularity of ["grapheme", "word", "sentence"]) { - const segmenter = new Intl.Segmenter("en", { granularity }); - const iter = segmenter.segment(text); - - assertEquals("number", typeof iter.index); - assertEquals(0, iter.index); - assertEquals(undefined, iter.breakType); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-sentence-following.js b/implementation-contributed/v8/intl/segmenter/segment-sentence-following.js deleted file mode 100644 index c6b4aa25d65..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-sentence-following.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "sentence"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - let prev = 0; - let segments = []; - while (!iter.following()) { - assertTrue(["sep", "term"].includes(iter.breakType), iter.breakType); - assertTrue(iter.index >= 0); - assertTrue(iter.index <= text.length); - assertTrue(iter.index > prev); - segments.push(text.substring(prev, iter.index)); - prev = iter.index; - } - assertEquals(text, segments.join("")); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-sentence-iterable.js b/implementation-contributed/v8/intl/segmenter/segment-sentence-iterable.js deleted file mode 100644 index a84807bfb08..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-sentence-iterable.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "sentence"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - let segments = []; - // Create another %SegmentIterator% to compare with result from the one that - // created in the for of loop. - let iter = seg.segment(text); - let prev = 0; - for (const v of seg.segment(text)) { - assertTrue(["sep", "term"].includes(v.breakType), v.breakType); - assertEquals("string", typeof v.segment); - assertTrue(v.segment.length > 0); - segments.push(v.segment); - - // manually advance the iter. - assertFalse(iter.following()); - assertEquals(iter.breakType, v.breakType); - assertEquals(text.substring(prev, iter.index), v.segment); - prev = iter.index; - } - assertTrue(iter.following()); - assertEquals(text, segments.join('')); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-sentence-next.js b/implementation-contributed/v8/intl/segmenter/segment-sentence-next.js deleted file mode 100644 index 466eac54d31..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-sentence-next.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "sentence"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - let segments = []; - let oldPos = -1; - for (let result = iter.next(); !result.done; result = iter.next()) { - const v = result.value; - assertTrue(["sep", "term"].includes(iter.breakType), iter.breakType); - assertEquals("string", typeof v.segment); - assertTrue(v.segment.length > 0); - segments.push(v.segment); - assertEquals("number", typeof v.index); - assertTrue(oldPos < v.index); - oldPos = v.index; - } - assertEquals(text, segments.join('')); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-sentence-preceding.js b/implementation-contributed/v8/intl/segmenter/segment-sentence-preceding.js deleted file mode 100644 index bbc17eecce9..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-sentence-preceding.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "sentence"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - let prev = text.length; - let segments = []; - iter.preceding(prev); - assertTrue(["sep", "term"].includes(iter.breakType), iter.breakType); - assertTrue(iter.index >= 0); - assertTrue(iter.index < prev); - segments.push(text.substring(iter.index, prev)); - prev = iter.index; - while (!iter.preceding()) { - assertTrue(["sep", "term"].includes(iter.breakType), iter.breakType); - assertTrue(iter.index >= 0); - assertTrue(iter.index <= text.length); - assertTrue(iter.index < prev); - segments.push(text.substring(iter.index, prev)); - prev = iter.index; - } - assertEquals(text, segments.reverse().join("")); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-sentence.js b/implementation-contributed/v8/intl/segmenter/segment-sentence.js deleted file mode 100644 index a802362e0e8..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-sentence.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "sentence"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - assertEquals(undefined, iter.breakType); - assertEquals(0, iter.index); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-word-following.js b/implementation-contributed/v8/intl/segmenter/segment-word-following.js deleted file mode 100644 index cd0950eff55..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-word-following.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "word"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - let prev = 0; - let segments = []; - while (!iter.following()) { - assertTrue(["word", "none"].includes(iter.breakType), iter.breakType); - assertTrue(iter.index >= 0); - assertTrue(iter.index <= text.length); - assertTrue(iter.index > prev); - segments.push(text.substring(prev, iter.index)); - prev = iter.index; - } - assertEquals(text, segments.join("")); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-word-iterable.js b/implementation-contributed/v8/intl/segmenter/segment-word-iterable.js deleted file mode 100644 index 3dab2103c72..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-word-iterable.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "word"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - let segments = []; - // Create another %SegmentIterator% to compare with result from the one that - // created in the for of loop. - let iter = seg.segment(text); - let prev = 0; - for (const v of seg.segment(text)) { - assertTrue(["word", "none"].includes(v.breakType), v.breakType); - assertEquals("string", typeof v.segment); - assertTrue(v.segment.length > 0); - segments.push(v.segment); - - // manually advance the iter. - assertFalse(iter.following()); - assertEquals(iter.breakType, v.breakType); - assertEquals(text.substring(prev, iter.index), v.segment); - prev = iter.index; - } - assertTrue(iter.following()); - assertEquals(text, segments.join('')); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-word-next.js b/implementation-contributed/v8/intl/segmenter/segment-word-next.js deleted file mode 100644 index 54fb40a2512..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-word-next.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "word"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - let segments = []; - let oldPos = -1; - for (let result = iter.next(); !result.done; result = iter.next()) { - const v = result.value; - assertTrue(["word", "none"].includes(iter.breakType), iter.breakType); - assertEquals("string", typeof v.segment); - assertTrue(v.segment.length > 0); - segments.push(v.segment); - assertEquals("number", typeof v.index); - assertTrue(oldPos < v.index); - oldPos = v.index; - } - assertEquals(text, segments.join('')); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-word-preceding.js b/implementation-contributed/v8/intl/segmenter/segment-word-preceding.js deleted file mode 100644 index 7ca5132dfdb..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-word-preceding.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "word"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - let prev = text.length; - let segments = []; - iter.preceding(prev); - assertTrue(["word", "none"].includes(iter.breakType), iter.breakType); - assertTrue(iter.index >= 0); - assertTrue(iter.index < prev); - segments.push(text.substring(iter.index, prev)); - prev = iter.index; - while (!iter.preceding()) { - assertTrue(["word", "none"].includes(iter.breakType), iter.breakType); - assertTrue(iter.index >= 0); - assertTrue(iter.index <= text.length); - assertTrue(iter.index < prev); - segments.push(text.substring(iter.index, prev)); - prev = iter.index; - } - assertEquals(text, segments.reverse().join("")); -} diff --git a/implementation-contributed/v8/intl/segmenter/segment-word.js b/implementation-contributed/v8/intl/segmenter/segment-word.js deleted file mode 100644 index b191a67cb95..00000000000 --- a/implementation-contributed/v8/intl/segmenter/segment-word.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-intl-segmenter - -const seg = new Intl.Segmenter([], {granularity: "word"}) -for (const text of [ - "Hello world!", // English - " Hello world! ", // English with space before/after - " Hello world? Foo bar!", // English - "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech - "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?", // Vietnamese - "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek - "Решение Индии о покупке российских С-400 расценили как вызов США", // Russian - "הרופא שהציל נשים והנערה ששועבדה ע", // Hebrew, - "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic - "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर", // Hindi - "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil - "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu - "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese - "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว", // Thai - "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp", // Japanese - "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean - ]) { - const iter = seg.segment(text); - assertEquals(undefined, iter.breakType); - assertEquals(0, iter.index); -} diff --git a/implementation-contributed/v8/intl/string/normalization.js b/implementation-contributed/v8/intl/string/normalization.js deleted file mode 100644 index 25d314ea287..00000000000 --- a/implementation-contributed/v8/intl/string/normalization.js +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the new String.prototype.normalize method. - -assertEquals(String.prototype.normalize.length, 0); -assertEquals(String.prototype.propertyIsEnumerable("normalize"), false); - -// Common use case when searching for 'not very exact' match. -// These are examples of data one might encounter in real use. -var testRealUseCases = function() { - // Vietnamese legacy text, old Windows 9x / non-Unicode applications use - // windows-1258 code page, which is neither precomposed, nor decomposed. - assertEquals('ti\u00ea\u0301ng Vi\u00ea\u0323t'.normalize('NFKD'), - 'ti\u1ebfng Vi\u1ec7t'.normalize('NFKD')); // all precomposed - - // Various kinds of spaces - assertEquals('Google\u0020Maps'.normalize('NFKD'), // normal space - 'Google\u00a0Maps'.normalize('NFKD')); // non-breaking space - assertEquals('Google\u0020Maps'.normalize('NFKD'), // normal space - 'Google\u2002Maps'.normalize('NFKD')); // en-space - assertEquals('Google\u0020Maps'.normalize('NFKD'), // normal space - 'Google\u2003Maps'.normalize('NFKD')); // em-space - assertEquals('Google\u0020Maps'.normalize('NFKD'), // normal space - 'Google\u3000Maps'.normalize('NFKC')); // ideographic space - - // Latin small ligature "fi" - assertEquals('fi'.normalize('NFKD'), '\ufb01'.normalize('NFKD')); - - // ŀ, Latin small L with middle dot, used in Catalan and often represented - // as decomposed for non-Unicode environments ( l + ·) - assertEquals('l\u00b7'.normalize('NFKD'), '\u0140'.normalize('NFKD')); - - // Legacy text, Japanese narrow Kana (MS-DOS & Win 3.x time) - assertEquals('\u30d1\u30bd\u30b3\u30f3'.normalize('NFKD'), // パソコン : wide - '\uff8a\uff9f\uff7f\uff7a\uff9d'.normalize('NFKD')); // パソコン : narrow - // Also for Japanese, Latin fullwidth forms vs. ASCII - assertEquals('ABCD'.normalize('NFKD'), - '\uff21\uff22\uff23\uff24'.normalize('NFKD')); // ABCD, fullwidth -}(); - - -var testEdgeCases = function() { - // Make sure we throw RangeError, as the standard requires. - assertThrows('"".normalize(1234)', RangeError); - assertThrows('"".normalize("BAD")', RangeError); - - // The standard does not say what kind of exceptions we should throw, so we - // will not be specific. But we still test that we throw errors. - assertThrows('s.normalize()'); // s is not defined - assertThrows('var s = null; s.normalize()'); - assertThrows('var s = undefined; s.normalize()'); - assertThrows('var s = 1234; s.normalize()'); // no normalize for non-strings -}(); - - -// Several kinds of mappings. No need to be comprehensive, we don't test -// the ICU functionality, we only test C - JavaScript 'glue' -var testData = [ - // org, default, NFC, NFD, NKFC, NKFD - ['\u00c7', // Ç : Combining sequence, Latin 1 - '\u00c7', '\u0043\u0327', - '\u00c7', '\u0043\u0327'], - ['\u0218', // Ș : Combining sequence, non-Latin 1 - '\u0218', '\u0053\u0326', - '\u0218', '\u0053\u0326'], - ['\uac00', // 가 : Hangul - '\uac00', '\u1100\u1161', - '\uac00', '\u1100\u1161'], - ['\uff76', // カ : Narrow Kana - '\uff76', '\uff76', - '\u30ab', '\u30ab'], - ['\u00bc', // ¼ : Fractions - '\u00bc', '\u00bc', - '\u0031\u2044\u0034', '\u0031\u2044\u0034'], - ['\u01c6', // dž : Latin ligature - '\u01c6', '\u01c6', - '\u0064\u017e', '\u0064\u007a\u030c'], - ['s\u0307\u0323', // s + dot above + dot below, ordering of combining marks - '\u1e69', 's\u0323\u0307', - '\u1e69', 's\u0323\u0307'], - ['\u3300', // ㌀ : Squared characters - '\u3300', '\u3300', - '\u30a2\u30d1\u30fc\u30c8', // アパート - '\u30a2\u30cf\u309a\u30fc\u30c8'], // アパート - ['\ufe37', // ︷ : Vertical forms - '\ufe37', '\ufe37', - '{' , '{'], - ['\u2079', // ⁹ : superscript 9 - '\u2079', '\u2079', - '9', '9'], - ['\ufee5\ufee6\ufee7\ufee8', // Arabic forms - '\ufee5\ufee6\ufee7\ufee8', '\ufee5\ufee6\ufee7\ufee8', - '\u0646\u0646\u0646\u0646', '\u0646\u0646\u0646\u0646'], - ['\u2460', // ① : Circled - '\u2460', '\u2460', - '1', '1'], - ['\u210c', // ℌ : Font variants - '\u210c', '\u210c', - 'H', 'H'], - ['\u2126', // Ω : Singleton, OHM sign vs. Greek capital letter OMEGA - '\u03a9', '\u03a9', - '\u03a9', '\u03a9'], - ['\ufdfb', // Long ligature, ARABIC LIGATURE JALLAJALALOUHOU - '\ufdfb', '\ufdfb', - '\u062C\u0644\u0020\u062C\u0644\u0627\u0644\u0647', - '\u062C\u0644\u0020\u062C\u0644\u0627\u0644\u0647'] -]; - -var testArray = function() { - var kNFC = 1, kNFD = 2, kNFKC = 3, kNFKD = 4; - for (var i = 0; i < testData.length; ++i) { - // the original, NFC and NFD should normalize to the same thing - for (var column = 0; column < 3; ++column) { - var str = testData[i][column]; - assertEquals(str.normalize(), testData[i][kNFC]); // defaults to NFC - assertEquals(str.normalize('NFC'), testData[i][kNFC]); - assertEquals(str.normalize('NFD'), testData[i][kNFD]); - assertEquals(str.normalize('NFKC'), testData[i][kNFKC]); - assertEquals(str.normalize('NFKD'), testData[i][kNFKD]); - } - } -}(); diff --git a/implementation-contributed/v8/intl/testcfg.py b/implementation-contributed/v8/intl/testcfg.py deleted file mode 100644 index 8cf26f1a614..00000000000 --- a/implementation-contributed/v8/intl/testcfg.py +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright 2013 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -import os -import re - -from testrunner.local import testsuite -from testrunner.objects import testcase - -ENV_PATTERN = re.compile(r"//\s+Environment Variables:(.*)") - -class TestSuite(testsuite.TestSuite): - def ListTests(self): - tests = [] - for dirname, dirs, files in os.walk(self.root): - for dotted in [x for x in dirs if x.startswith('.')]: - dirs.remove(dotted) - dirs.sort() - files.sort() - for filename in files: - if (filename.endswith(".js") and filename != "assert.js" and - filename != "utils.js"): - fullpath = os.path.join(dirname, filename) - relpath = fullpath[len(self.root) + 1 : -3] - testname = relpath.replace(os.path.sep, "/") - test = self._create_test(testname) - tests.append(test) - return tests - - def _test_class(self): - return TestCase - - -class TestCase(testcase.D8TestCase): - def __init__(self, *args, **kwargs): - super(TestCase, self).__init__(*args, **kwargs) - - self._source_flags = self._parse_source_flags() - source = self.get_source() - self._env = self._parse_source_env(source) - - def _parse_source_env(self, source): - env_match = ENV_PATTERN.search(source) - env = {} - if env_match: - for env_pair in env_match.group(1).strip().split(): - var, value = env_pair.split('=') - env[var] = value - return env - - def _get_cmd_env(self): - return self._env - - def _get_files_params(self): - files = map(lambda f: os.path.join(self.suite.root, f), [ - 'assert.js', - 'utils.js', - self.path + self._get_suffix(), - ]) - - if self._test_config.isolates: - files += ['--isolate'] + files - return files - - def _get_source_flags(self): - return self._source_flags - - def _get_suite_flags(self): - return ['--allow-natives-syntax'] - - def _get_source_path(self): - return os.path.join(self.suite.root, self.path + self._get_suffix()) - - -def GetSuite(*args, **kwargs): - return TestSuite(*args, **kwargs) diff --git a/implementation-contributed/v8/intl/toStringTag.js b/implementation-contributed/v8/intl/toStringTag.js deleted file mode 100644 index e215bcb7362..00000000000 --- a/implementation-contributed/v8/intl/toStringTag.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let descriptor; - -descriptor = Object.getOwnPropertyDescriptor(Intl.DateTimeFormat.prototype, - Symbol.toStringTag); - -assertEquals("Object", descriptor.value); -assertFalse(descriptor.writable); -assertFalse(descriptor.enumerable); -assertTrue(descriptor.configurable); - -descriptor = Object.getOwnPropertyDescriptor(Intl.NumberFormat.prototype, - Symbol.toStringTag); - -assertEquals("Object", descriptor.value); -assertFalse(descriptor.writable); -assertFalse(descriptor.enumerable); -assertTrue(descriptor.configurable); - -descriptor = Object.getOwnPropertyDescriptor(Intl.Collator.prototype, - Symbol.toStringTag); - -assertEquals("Object", descriptor.value); -assertFalse(descriptor.writable); -assertFalse(descriptor.enumerable); -assertTrue(descriptor.configurable); diff --git a/implementation-contributed/v8/intl/utils.js b/implementation-contributed/v8/intl/utils.js deleted file mode 100644 index 917359077d4..00000000000 --- a/implementation-contributed/v8/intl/utils.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * Taints properties on Object.prototype so we can find security issues. - */ -function taintProperties(properties) { - properties.forEach(function(property) { - Object.defineProperty(Object.prototype, property, { - set: function(value) { - throw new Error('Property ' + property + ' is compromised. ' + - 'Setting value: ' + value); - } - }); - }); -} diff --git a/implementation-contributed/v8/mjsunit/BUILD.gn b/implementation-contributed/v8/mjsunit/BUILD.gn deleted file mode 100644 index 847565f91a6..00000000000 --- a/implementation-contributed/v8/mjsunit/BUILD.gn +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2018 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -group("v8_mjsunit") { - testonly = true - - data_deps = [ - "../../:d8", - "../../tools/:v8_testrunner", - ] - - data = [ - "./", - "../../tools/codemap.js", - "../../tools/consarray.js", - "../../tools/csvparser.js", - "../../tools/logreader.js", - "../../tools/arguments.js", - "../../tools/profile.js", - "../../tools/profile_view.js", - "../../tools/profviz/composer.js", - "../../tools/splaytree.js", - "../../tools/tickprocessor.js", - "../../tools/dumpcpp.js", - ] -} diff --git a/implementation-contributed/v8/mjsunit/accessor-map-sharing.js b/implementation-contributed/v8/mjsunit/accessor-map-sharing.js deleted file mode 100644 index 3afce37d92b..00000000000 --- a/implementation-contributed/v8/mjsunit/accessor-map-sharing.js +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Handy abbreviations. -var dp = Object.defineProperty; -var gop = Object.getOwnPropertyDescriptor; - -function getter() { return 111; } -function setter(x) { print(222); } -function anotherGetter() { return 333; } -function anotherSetter(x) { print(444); } -var obj1, obj2, obj3, obj4; - -// Two objects with the same getter. -obj1 = {}; -dp(obj1, "alpha", { get: getter }); -obj2 = {}; -dp(obj2, "alpha", { get: getter }); -assertTrue(%HaveSameMap(obj1, obj2)); - -// Two objects with the same getter, oldskool. -obj1 = {}; -obj1.__defineGetter__("bravo", getter); -assertEquals(getter, obj1.__lookupGetter__("bravo")); -obj2 = {}; -obj2.__defineGetter__("bravo", getter); -assertEquals(getter, obj2.__lookupGetter__("bravo")); -assertTrue(%HaveSameMap(obj1, obj2)); - -// Two objects with the same setter. -obj1 = {}; -dp(obj1, "charlie", { set: setter }); -obj2 = {}; -dp(obj2, "charlie", { set: setter }); -assertTrue(%HaveSameMap(obj1, obj2)); - -// Two objects with the same setter, oldskool. -obj1 = {}; -obj1.__defineSetter__("delta", setter); -assertEquals(setter, obj1.__lookupSetter__("delta")); -obj2 = {}; -obj2.__defineSetter__("delta", setter); -assertEquals(setter, obj2.__lookupSetter__("delta")); -assertTrue(%HaveSameMap(obj1, obj2)); - -// Two objects with the same getter and setter. -obj1 = {}; -dp(obj1, "foxtrot", { get: getter, set: setter }); -obj2 = {}; -dp(obj2, "foxtrot", { get: getter, set: setter }); -assertTrue(%HaveSameMap(obj1, obj2)); - -// Two objects with the same getter and setter, set separately. -obj1 = {}; -dp(obj1, "golf", { get: getter, configurable: true }); -dp(obj1, "golf", { set: setter, configurable: true }); -obj2 = {}; -dp(obj2, "golf", { get: getter, configurable: true }); -dp(obj2, "golf", { set: setter, configurable: true }); -assertTrue(%HaveSameMap(obj1, obj2)); - -// Two objects with the same getter and setter, set separately, oldskool. -obj1 = {}; -obj1.__defineGetter__("hotel", getter); -obj1.__defineSetter__("hotel", setter); -obj2 = {}; -obj2.__defineGetter__("hotel", getter); -obj2.__defineSetter__("hotel", setter); -assertTrue(%HaveSameMap(obj1, obj2)); - -// Attribute-only change, shouldn't affect previous descriptor properties. -obj1 = {}; -dp(obj1, "india", { get: getter, configurable: true, enumerable: true }); -assertEquals(getter, gop(obj1, "india").get); -assertTrue(gop(obj1, "india").configurable); -assertTrue(gop(obj1, "india").enumerable); -dp(obj1, "india", { enumerable: false }); -assertEquals(getter, gop(obj1, "india").get); -assertTrue(gop(obj1, "india").configurable); -assertFalse(gop(obj1, "india").enumerable); - -// Attribute-only change, shouldn't affect objects with previously shared maps. -obj1 = {}; -dp(obj1, "juliet", { set: setter, configurable: true, enumerable: false }); -assertEquals(setter, gop(obj1, "juliet").set); -assertTrue(gop(obj1, "juliet").configurable); -assertFalse(gop(obj1, "juliet").enumerable); -obj2 = {}; -dp(obj2, "juliet", { set: setter, configurable: true, enumerable: false }); -assertEquals(setter, gop(obj2, "juliet").set); -assertTrue(gop(obj2, "juliet").configurable); -assertFalse(gop(obj2, "juliet").enumerable); -dp(obj1, "juliet", { set: setter, configurable: false, enumerable: true }); -assertEquals(setter, gop(obj1, "juliet").set); -assertFalse(gop(obj1, "juliet").configurable); -assertTrue(gop(obj1, "juliet").enumerable); -assertEquals(setter, gop(obj2, "juliet").set); -assertTrue(gop(obj2, "juliet").configurable); -assertFalse(gop(obj2, "juliet").enumerable); - -// Two objects with the different getters. -obj1 = {}; -dp(obj1, "kilo", { get: getter }); -obj2 = {}; -dp(obj2, "kilo", { get: anotherGetter }); -assertEquals(getter, gop(obj1, "kilo").get); -assertEquals(anotherGetter, gop(obj2, "kilo").get); -assertFalse(%HaveSameMap(obj1, obj2)); - -// Two objects with the same getters and different setters. -obj1 = {}; -dp(obj1, "lima", { get: getter, set: setter }); -obj2 = {}; -dp(obj2, "lima", { get: getter, set: anotherSetter }); -assertEquals(setter, gop(obj1, "lima").set); -assertEquals(anotherSetter, gop(obj2, "lima").set); -assertFalse(%HaveSameMap(obj1, obj2)); - -// Even 'undefined' is a kind of getter. -obj1 = {}; -dp(obj1, "mike", { get: undefined }); -assertTrue("mike" in obj1); -assertEquals(undefined, gop(obj1, "mike").get); -assertEquals(undefined, obj1.__lookupGetter__("mike")); -assertEquals(undefined, gop(obj1, "mike").set); -assertEquals(undefined, obj1.__lookupSetter__("mike")); - -// Even 'undefined' is a kind of setter. -obj1 = {}; -dp(obj1, "november", { set: undefined }); -assertTrue("november" in obj1); -assertEquals(undefined, gop(obj1, "november").get); -assertEquals(undefined, obj1.__lookupGetter__("november")); -assertEquals(undefined, gop(obj1, "november").set); -assertEquals(undefined, obj1.__lookupSetter__("november")); - -// Redefining a data property. -obj1 = {}; -obj1.oscar = 12345; -dp(obj1, "oscar", { set: setter }); -assertEquals(setter, gop(obj1, "oscar").set); - -// Re-adding the same getter/attributes pair. -obj1 = {}; -dp(obj1, "papa", { get: getter, configurable: true }); -dp(obj1, "papa", { get: getter, set: setter, configurable: true }); -assertEquals(getter, gop(obj1, "papa").get); -assertEquals(setter, gop(obj1, "papa").set); -assertTrue(gop(obj1, "papa").configurable); -assertFalse(gop(obj1, "papa").enumerable); - -// Two objects with the same getter on the prototype chain. -obj1 = {}; -dp(obj1, "quebec", { get: getter }); -obj2 = Object.create(obj1); -obj3 = Object.create(obj2); -obj4 = Object.create(obj2); -assertTrue(%HaveSameMap(obj3, obj4)); - -// Two objects with the same setter on the prototype chain. -obj1 = {}; -dp(obj1, "romeo", { set: setter }); -obj2 = Object.create(obj1); -obj3 = Object.create(obj2); -obj4 = Object.create(obj2); -assertTrue(%HaveSameMap(obj3, obj4)); diff --git a/implementation-contributed/v8/mjsunit/accessors-no-prototype.js b/implementation-contributed/v8/mjsunit/accessors-no-prototype.js deleted file mode 100644 index 9c429fc48a8..00000000000 --- a/implementation-contributed/v8/mjsunit/accessors-no-prototype.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function TestGetter() { - var o = { - get x() {} - }; - var desc = Object.getOwnPropertyDescriptor(o, 'x'); - assertEquals('function', typeof desc.get); - assertFalse('prototype' in desc.get); - - assertThrows(function() { - new desc.get(); - }, TypeError); -})(); - - -(function TestSetter() { - var o = { - set x(_) {} - }; - var desc = Object.getOwnPropertyDescriptor(o, 'x'); - assertEquals('function', typeof desc.set); - assertFalse('prototype' in desc.set); - - assertThrows(function() { - new desc.set(); - }, TypeError); -})(); - - -(function TestBoth() { - var o = { - get x() {}, - set x(_) {} - }; - var desc = Object.getOwnPropertyDescriptor(o, 'x'); - assertEquals('function', typeof desc.get); - assertEquals('function', typeof desc.set); - assertFalse('prototype' in desc.get); - assertFalse('prototype' in desc.set); - - assertThrows(function() { - new desc.get(); - }, TypeError); - assertThrows(function() { - new desc.set(); - }, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/accessors-on-global-object.js b/implementation-contributed/v8/mjsunit/accessors-on-global-object.js deleted file mode 100644 index 4d47ce69aa2..00000000000 --- a/implementation-contributed/v8/mjsunit/accessors-on-global-object.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that installing a getter on the global object instead of a -// normal property works. - -x = 0; - -function getX() { return x; } - -for (var i = 0; i < 10; i++) { - assertEquals(i < 5 ? 0 : 42, getX()); - if (i == 4) this.__defineGetter__("x", function() { return 42; }); -} - - -// Test that installing a setter on the global object instead of a -// normal property works. - -y = 0; -var setter_y; - -function setY(value) { y = value; } - -for (var i = 0; i < 10; i++) { - setY(i); - assertEquals(i < 5 ? i : 2 * i, y); - if (i == 4) { - this.__defineSetter__("y", function(value) { setter_y = 2 * value; }); - this.__defineGetter__("y", function() { return setter_y; }); - } -} - - -// Test that replacing a getter with a normal property works as -// expected. - -this.__defineGetter__("z", function() { return 42; }); - -function getZ() { return z; } - -for (var i = 0; i < 10; i++) { - assertEquals(i < 5 ? 42 : 0, getZ()); - if (i == 4) { - delete z; - z = 0; - } -} diff --git a/implementation-contributed/v8/mjsunit/allocation-folding.js b/implementation-contributed/v8/mjsunit/allocation-folding.js deleted file mode 100644 index fcf909d6af6..00000000000 --- a/implementation-contributed/v8/mjsunit/allocation-folding.js +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --nouse-osr --expose-gc - -// Test loop barrier when folding allocations. - -function f() { - var elem1 = [1,2,3]; - for (var i=0; i < 100000; i++) { - var bar = [1]; - } - var elem2 = [1,2,3]; - return elem2; -} - -f(); f(); f(); -%OptimizeFunctionOnNextCall(f); -var result = f(); - -gc(); - -assertEquals(result[2], 3); - -// Test allocation folding of doubles. - -function doubles() { - var elem1 = [1.1, 1.2]; - var elem2 = [2.1, 2.2]; - return elem2; -} - -doubles(); doubles(); doubles(); -%OptimizeFunctionOnNextCall(doubles); -result = doubles(); - -gc(); - -assertEquals(result[1], 2.2); - -// Test allocation folding of doubles into non-doubles. - -function doubles_int() { - var elem1 = [2, 3]; - var elem2 = [2.1, 3.1]; - return elem2; -} - -doubles_int(); doubles_int(); doubles_int(); -%OptimizeFunctionOnNextCall(doubles_int); -result = doubles_int(); - -gc(); - -assertEquals(result[1], 3.1); - -// Test allocation folding over a branch. - -function branch_int(left) { - var elem1 = [1, 2]; - var elem2; - if (left) { - elem2 = [3, 4]; - } else { - elem2 = [5, 6]; - } - return elem2; -} - -branch_int(1); branch_int(1); branch_int(1); -%OptimizeFunctionOnNextCall(branch_int); -result = branch_int(1); -var result2 = branch_int(0); - -gc(); - -assertEquals(result[1], 4); -assertEquals(result2[1], 6); - -// Test to almost exceed the Page::MaxRegularHeapObjectSize limit. - -function boom() { - var a1 = new Array(84632); - var a2 = new Array(84632); - var a3 = new Array(84632); - return [ a1, a2, a3 ]; -} - -boom(); boom(); boom(); -%OptimizeFunctionOnNextCall(boom); -boom(); diff --git a/implementation-contributed/v8/mjsunit/allocation-site-info.js b/implementation-contributed/v8/mjsunit/allocation-site-info.js deleted file mode 100644 index 66ebe493690..00000000000 --- a/implementation-contributed/v8/mjsunit/allocation-site-info.js +++ /dev/null @@ -1,573 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --opt --no-always-opt - -var elements_kind = { - fast_smi_only : 'fast smi only elements', - fast : 'fast elements', - fast_double : 'fast double elements', - dictionary : 'dictionary elements', - external_byte : 'external byte elements', - external_unsigned_byte : 'external unsigned byte elements', - external_short : 'external short elements', - external_unsigned_short : 'external unsigned short elements', - external_int : 'external int elements', - external_unsigned_int : 'external unsigned int elements', - external_float : 'external float elements', - external_double : 'external double elements', - external_pixel : 'external pixel elements' -} - -function getKind(obj) { - if (%HasSmiElements(obj)) return elements_kind.fast_smi_only; - if (%HasObjectElements(obj)) return elements_kind.fast; - if (%HasDoubleElements(obj)) return elements_kind.fast_double; - if (%HasDictionaryElements(obj)) return elements_kind.dictionary; -} - -function isHoley(obj) { - if (%HasHoleyElements(obj)) return true; - return false; -} - -function assertKind(expected, obj, name_opt) { - assertEquals(expected, getKind(obj), name_opt); -} - -function assertHoley(obj, name_opt) { - assertEquals(true, isHoley(obj), name_opt); -} - -function assertNotHoley(obj, name_opt) { - assertEquals(false, isHoley(obj), name_opt); -} - -obj = []; -assertNotHoley(obj); -assertKind(elements_kind.fast_smi_only, obj); - -obj = [1, 2, 3]; -assertNotHoley(obj); -assertKind(elements_kind.fast_smi_only, obj); - -obj = new Array(); -assertNotHoley(obj); -assertKind(elements_kind.fast_smi_only, obj); - -obj = new Array(0); -assertHoley(obj); -assertKind(elements_kind.fast_smi_only, obj); - -obj = new Array(2); -assertHoley(obj); -assertKind(elements_kind.fast_smi_only, obj); - -obj = new Array(1,2,3); -assertNotHoley(obj); -assertKind(elements_kind.fast_smi_only, obj); - -obj = new Array(1, "hi", 2, undefined); -assertNotHoley(obj); -assertKind(elements_kind.fast, obj); - -function fastliteralcase(literal, value) { - literal[0] = value; - return literal; -} - -function get_standard_literal() { - var literal = [1, 2, 3]; - return literal; -} - -// Case: [1,2,3] as allocation site -obj = fastliteralcase(get_standard_literal(), 1); -assertKind(elements_kind.fast_smi_only, obj); -obj = fastliteralcase(get_standard_literal(), 1.5); -assertKind(elements_kind.fast_double, obj); -obj = fastliteralcase(get_standard_literal(), 2); -assertKind(elements_kind.fast_double, obj); - -// The test below is in a loop because arrays that live -// at global scope without the chance of being recreated -// don't have allocation site information attached. -for (i = 0; i < 2; i++) { - obj = fastliteralcase([5, 3, 2], 1.5); - assertKind(elements_kind.fast_double, obj); - obj = fastliteralcase([3, 6, 2], 1.5); - assertKind(elements_kind.fast_double, obj); - - // Note: thanks to pessimistic transition store stubs, we'll attempt - // to transition to the most general elements kind seen at a particular - // store site. So, the elements kind will be double. - obj = fastliteralcase([2, 6, 3], 2); - assertKind(elements_kind.fast_double, obj); -} - -// Verify that we will not pretransition the double->fast path. -obj = fastliteralcase(get_standard_literal(), "elliot"); -assertKind(elements_kind.fast, obj); -obj = fastliteralcase(get_standard_literal(), 3); -assertKind(elements_kind.fast, obj); - -// Make sure this works in optimized code too. - %OptimizeFunctionOnNextCall(get_standard_literal); -get_standard_literal(); -obj = get_standard_literal(); -assertKind(elements_kind.fast, obj); - -function fastliteralcase_smifast(value) { - var literal = [1, 2, 3, 4]; - literal[0] = value; - return literal; -} - -obj = fastliteralcase_smifast(1); -assertKind(elements_kind.fast_smi_only, obj); -obj = fastliteralcase_smifast("carter"); -assertKind(elements_kind.fast, obj); -obj = fastliteralcase_smifast(2); -assertKind(elements_kind.fast, obj); - -// Case: make sure transitions from packed to holey are tracked -function fastliteralcase_smiholey(index, value) { - var literal = [1, 2, 3, 4]; - literal[index] = value; - return literal; -} - -obj = fastliteralcase_smiholey(5, 1); -assertKind(elements_kind.fast_smi_only, obj); -assertHoley(obj); -obj = fastliteralcase_smiholey(0, 1); -assertKind(elements_kind.fast_smi_only, obj); -assertHoley(obj); - -function newarraycase_smidouble(value) { - var a = new Array(); - a[0] = value; - return a; -} - -// Case: new Array() as allocation site, smi->double -obj = newarraycase_smidouble(1); -assertKind(elements_kind.fast_smi_only, obj); -obj = newarraycase_smidouble(1.5); -assertKind(elements_kind.fast_double, obj); -obj = newarraycase_smidouble(2); -assertKind(elements_kind.fast_double, obj); - -function newarraycase_smiobj(value) { - var a = new Array(); - a[0] = value; - return a; -} - -// Case: new Array() as allocation site, smi->fast -obj = newarraycase_smiobj(1); -assertKind(elements_kind.fast_smi_only, obj); -obj = newarraycase_smiobj("gloria"); -assertKind(elements_kind.fast, obj); -obj = newarraycase_smiobj(2); -assertKind(elements_kind.fast, obj); - -function newarraycase_length_smidouble(value) { - var a = new Array(3); - a[0] = value; - return a; -} - -// Case: new Array(length) as allocation site -obj = newarraycase_length_smidouble(1); -assertKind(elements_kind.fast_smi_only, obj); -obj = newarraycase_length_smidouble(1.5); -assertKind(elements_kind.fast_double, obj); -obj = newarraycase_length_smidouble(2); -assertKind(elements_kind.fast_double, obj); - -// Try to continue the transition to fast object. -// TODO(mvstanton): re-enable commented out code when -// FLAG_pretenuring_call_new is turned on in the build. -obj = newarraycase_length_smidouble("coates"); -assertKind(elements_kind.fast, obj); -obj = newarraycase_length_smidouble(2); -// assertKind(elements_kind.fast, obj); - -function newarraycase_length_smiobj(value) { - var a = new Array(3); - a[0] = value; - return a; -} - -// Case: new Array() as allocation site, smi->fast -obj = newarraycase_length_smiobj(1); -assertKind(elements_kind.fast_smi_only, obj); -obj = newarraycase_length_smiobj("gloria"); -assertKind(elements_kind.fast, obj); -obj = newarraycase_length_smiobj(2); -assertKind(elements_kind.fast, obj); - -function newarraycase_list_smidouble(value) { - var a = new Array(1, 2, 3); - a[0] = value; - return a; -} - -obj = newarraycase_list_smidouble(1); -assertKind(elements_kind.fast_smi_only, obj); -obj = newarraycase_list_smidouble(1.5); -assertKind(elements_kind.fast_double, obj); -obj = newarraycase_list_smidouble(2); -assertKind(elements_kind.fast_double, obj); - -function newarraycase_list_smiobj(value) { - var a = new Array(4, 5, 6); - a[0] = value; - return a; -} - -obj = newarraycase_list_smiobj(1); -assertKind(elements_kind.fast_smi_only, obj); -obj = newarraycase_list_smiobj("coates"); -assertKind(elements_kind.fast, obj); -obj = newarraycase_list_smiobj(2); -assertKind(elements_kind.fast, obj); - -// Perform a gc because without it the test below can experience an -// allocation failure at an inconvenient point. Allocation mementos get -// cleared on gc, and they can't deliver elements kind feedback when that -// happens. -gc(); - -// Case: array constructor calls with out of date feedback. -// The boilerplate should incorporate all feedback, but the input array -// should be minimally transitioned based on immediate need. -(function() { - function foo(i) { - // We have two cases, one for literals one for constructed arrays. - var a = (i == 0) - ? [1, 2, 3] - : new Array(1, 2, 3); - return a; - } - - for (var i = 0; i < 2; i++) { - a = foo(i); - b = foo(i); - b[5] = 1; // boilerplate goes holey - assertHoley(foo(i)); - a[0] = 3.5; // boilerplate goes holey double - assertKind(elements_kind.fast_double, a); - assertNotHoley(a); - var c = foo(i); - assertKind(elements_kind.fast_double, c); - assertHoley(c); - } -})(); - -function newarraycase_onearg(len, value) { - var a = new Array(len); - a[0] = value; - return a; -} - -obj = newarraycase_onearg(5, 3.5); -assertKind(elements_kind.fast_double, obj); -obj = newarraycase_onearg(10, 5); -assertKind(elements_kind.fast_double, obj); -obj = newarraycase_onearg(0, 5); -assertKind(elements_kind.fast_double, obj); - -// Verify that cross context calls work -var realmA = Realm.current(); -var realmB = Realm.create(); -assertEquals(0, realmA); -assertEquals(1, realmB); - -function instanceof_check(type) { - assertTrue(new type() instanceof type); - assertTrue(new type(5) instanceof type); - assertTrue(new type(1,2,3) instanceof type); -} - -function instanceof_check2(type) { - assertTrue(new type() instanceof type); - assertTrue(new type(5) instanceof type); - assertTrue(new type(1,2,3) instanceof type); -} - -var realmBArray = Realm.eval(realmB, "Array"); -// Two calls with Array because ES6 instanceof desugars into a load of Array, -// and load has a premonomorphic state. -instanceof_check(Array); -instanceof_check(Array); -instanceof_check(realmBArray); - -// instanceof_check2 is here because the call site goes through a state. -// Since instanceof_check(Array) was first called with the current context -// Array function, it went from (uninit->Array) then (Array->megamorphic). -// We'll get a different state traversal if we start with realmBArray. -// It'll go (uninit->realmBArray) then (realmBArray->megamorphic). Recognize -// that state "Array" implies an AllocationSite is present, and code is -// configured to use it. - -// Two calls with realmBArray because ES6 instanceof desugars into a load of -// realmBArray, and load has a premonomorphic state. -instanceof_check2(realmBArray); -instanceof_check2(realmBArray); -instanceof_check2(Array); - - %OptimizeFunctionOnNextCall(instanceof_check); - -// No de-opt will occur because HCallNewArray wasn't selected, on account of -// the call site not being monomorphic to Array. -instanceof_check(Array); -assertOptimized(instanceof_check); -instanceof_check(realmBArray); -assertOptimized(instanceof_check); - -// Try to optimize again, but first clear all type feedback, and allow it -// to be monomorphic on first call. Only after optimizing do we introduce -// realmBArray. This should deopt the method. - %DeoptimizeFunction(instanceof_check); - %ClearFunctionFeedback(instanceof_check); -instanceof_check(Array); -instanceof_check(Array); - %OptimizeFunctionOnNextCall(instanceof_check); -instanceof_check(Array); -assertOptimized(instanceof_check); - -instanceof_check(realmBArray); -assertUnoptimized(instanceof_check); - -// Perform a gc because without it the test below can experience an -// allocation failure at an inconvenient point. Allocation mementos get -// cleared on gc, and they can't deliver elements kind feedback when that -// happens. -gc(); - -// Case: make sure nested arrays benefit from allocation site feedback as -// well. -(function() { - // Make sure we handle nested arrays - function get_nested_literal() { - var literal = [[1,2,3,4], [2], [3]]; - return literal; - } - - obj = get_nested_literal(); - assertKind(elements_kind.fast, obj); - obj[0][0] = 3.5; - obj[2][0] = "hello"; - obj = get_nested_literal(); - assertKind(elements_kind.fast_double, obj[0]); - assertKind(elements_kind.fast_smi_only, obj[1]); - assertKind(elements_kind.fast, obj[2]); - - // A more complex nested literal case. - function get_deep_nested_literal() { - var literal = [[1], [[2], "hello"], 3, [4]]; - return literal; - } - - obj = get_deep_nested_literal(); - assertKind(elements_kind.fast_smi_only, obj[1][0]); - obj[0][0] = 3.5; - obj[1][0][0] = "goodbye"; - assertKind(elements_kind.fast_double, obj[0]); - assertKind(elements_kind.fast, obj[1][0]); - - obj = get_deep_nested_literal(); - assertKind(elements_kind.fast_double, obj[0]); - assertKind(elements_kind.fast, obj[1][0]); -})(); - -// Perform a gc because without it the test below can experience an -// allocation failure at an inconvenient point. Allocation mementos get -// cleared on gc, and they can't deliver elements kind feedback when that -// happens. -gc(); - -// Make sure object literals with array fields benefit from the type feedback -// that allocation mementos provide. -(function() { - // A literal in an object - function get_object_literal() { - var literal = { - array: [1,2,3], - data: 3.5 - }; - return literal; - } - - obj = get_object_literal(); - assertKind(elements_kind.fast_smi_only, obj.array); - // Force double transition. - obj.array[1] = 3.5; - assertKind(elements_kind.fast_double, obj.array); - // Transition information should be fed back to the inner literal. - obj = get_object_literal(); - assertKind(elements_kind.fast_double, obj.array); - - function get_nested_object_literal() { - var literal = { - array: [[1],[2],[3]], - data: 3.5 - }; - return literal; - } - - obj = get_nested_object_literal(); - assertKind(elements_kind.fast, obj.array); - assertKind(elements_kind.fast_smi_only, obj.array[1]); - obj.array[1][0] = 3.5; - assertKind(elements_kind.fast_double, obj.array[1]); - obj = get_nested_object_literal(); - assertKind(elements_kind.fast_double, obj.array[1]); - - %OptimizeFunctionOnNextCall(get_nested_object_literal); - get_nested_object_literal(); - obj = get_nested_object_literal(); - assertKind(elements_kind.fast_double, obj.array[1]); - - // Make sure we handle nested arrays - function get_nested_literal() { - var literal = [[1,2,3,4], [2], [3]]; - return literal; - } - - obj = get_nested_literal(); - assertKind(elements_kind.fast, obj); - obj[0][0] = 3.5; - obj[2][0] = "hello"; - obj = get_nested_literal(); - assertKind(elements_kind.fast_double, obj[0]); - assertKind(elements_kind.fast_smi_only, obj[1]); - assertKind(elements_kind.fast, obj[2]); - - // A more complex nested literal case. - function get_deep_nested_literal() { - var literal = [[1], [[2], "hello"], 3, [4]]; - return literal; - } - - obj = get_deep_nested_literal(); - assertKind(elements_kind.fast_smi_only, obj[1][0]); - obj[0][0] = 3.5; - obj[1][0][0] = "goodbye"; - assertKind(elements_kind.fast_double, obj[0]); - assertKind(elements_kind.fast, obj[1][0]); - - obj = get_deep_nested_literal(); - assertKind(elements_kind.fast_double, obj[0]); - assertKind(elements_kind.fast, obj[1][0]); -})(); - -// Test gathering allocation site feedback for generic ics. -(function() { - function make() { return new Array(); } - function foo(a, i) { a[0] = i; } - - var a = make(); - assertKind(elements_kind.fast_smi_only, a); - - // Make the keyed store ic go generic. - foo("howdy", 1); - foo(a, 3.5); - - var b = make(); - assertKind(elements_kind.fast_double, b); -})(); - -(function TestBoilerplateMapDeprecation() { - function literal() { - return { a: 1, b: 2 }; - } - literal(); - literal(); - let instance = literal(); - assertKind(elements_kind.fast_smi_only, [instance.a, instance.b]); - // Create literal instances with double insteand of smi values. - for (let i = 0; i < 1000; i++) { - instance = literal(); - instance.a = 1.2; - assertKind(elements_kind.fast_double, [instance.a, instance.b]); - } - - // After deprecating the original boilerplate map we should get heap numbers - // back for the original unmodified literal as well. - for (let i =0; i < 100; i++) { - instance = literal(); - assertKind(elements_kind.fast_double, [instance.a, instance.b]); - } -})(); - -(function TestInnerBoilerplateMapDeprecation() { - // Create a literal where the inner literals cause a map deprecation of the - // previous inner literal. - function literal() { - return [ - {xA2A:false, a: 1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1, b: 2, c: 3, d: 4.1}, - - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1}, - {xA2A:false, a: 1.1, b: 2, c: 3, d: 4.1} - ]; - }; - let instance = literal(); - - // Make sure all sub-literals are migrated properly. - for (let i = 0; i < instance.length; i++) { - let sub_literal = instance[i]; - assertKind(elements_kind.fast_double, [sub_literal.a]); - assertKind(elements_kind.fast_smi_only, [sub_literal.b]); - assertKind(elements_kind.fast_smi_only, [sub_literal.c]); - assertKind(elements_kind.fast_double, [sub_literal.d]); - } - - instance = literal(); - instance = literal(); - instance = literal(); - for (let i = 0; i < instance.length; i++) { - let sub_literal = instance[i]; - assertKind(elements_kind.fast_double, [sub_literal.a]); - assertKind(elements_kind.fast_smi_only, [sub_literal.b]); - assertKind(elements_kind.fast_smi_only, [sub_literal.c]); - assertKind(elements_kind.fast_double, [sub_literal.d]); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/api-call-after-bypassed-exception.js b/implementation-contributed/v8/mjsunit/api-call-after-bypassed-exception.js deleted file mode 100644 index 4a1855881e5..00000000000 --- a/implementation-contributed/v8/mjsunit/api-call-after-bypassed-exception.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This is a test of making an API call after an exception thrown in JavaScript -// has been bypassed by a return in the finally block. -function foo() { - try { - throw "bar"; - } finally { - return "baz"; - } -} - -foo(); -print({}); diff --git a/implementation-contributed/v8/mjsunit/apply-arguments-gc-safepoint.js b/implementation-contributed/v8/mjsunit/apply-arguments-gc-safepoint.js deleted file mode 100644 index 57ed8cc9771..00000000000 --- a/implementation-contributed/v8/mjsunit/apply-arguments-gc-safepoint.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Test that safepoint tables are correctly generated for apply with -// arguments in the case where arguments adaption is needed. - -function f(x, y) { - if (x == 149999) gc(); - return x + y; -} - -function g() { - f.apply(this, arguments); -} - -for (var i = 0; i < 150000; i++) { - g(i); -} diff --git a/implementation-contributed/v8/mjsunit/apply.js b/implementation-contributed/v8/mjsunit/apply.js deleted file mode 100644 index 07639c940ea..00000000000 --- a/implementation-contributed/v8/mjsunit/apply.js +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f0() { - return this; -} - -function f1(a) { - return a; -} - -assertSame(this, f0.apply(), "1-0"); - -assertSame(this, f0.apply(this), "2a"); -assertSame(this, f0.apply(this, new Array(1)), "2b"); -assertSame(this, f0.apply(this, new Array(2)), "2c"); -assertSame(this, f0.apply(this, new Array(4242)), "2d"); - -assertSame(this, f0.apply(null), "3a"); -assertSame(this, f0.apply(null, new Array(1)), "3b"); -assertSame(this, f0.apply(null, new Array(2)), "3c"); -assertSame(this, f0.apply(this, new Array(4242)), "3d"); - -assertSame(this, f0.apply(void 0), "4a"); -assertSame(this, f0.apply(void 0, new Array(1)), "4b"); -assertSame(this, f0.apply(void 0, new Array(2)), "4c"); - -assertEquals(void 0, f1.apply(), "1-1"); - -assertEquals(void 0, f1.apply(this), "5a"); -assertEquals(void 0, f1.apply(this, new Array(1)), "5b"); -assertEquals(void 0, f1.apply(this, new Array(2)), "5c"); -assertEquals(void 0, f1.apply(this, new Array(4242)), "5d"); -assertEquals(42, f1.apply(this, new Array(42, 43)), "5e"); -assertEquals("foo", f1.apply(this, new Array("foo", "bar", "baz", "bo")), "5f"); - -assertEquals(void 0, f1.apply(null), "6a"); -assertEquals(void 0, f1.apply(null, new Array(1)), "6b"); -assertEquals(void 0, f1.apply(null, new Array(2)), "6c"); -assertEquals(void 0, f1.apply(null, new Array(4242)), "6d"); -assertEquals(42, f1.apply(null, new Array(42, 43)), "6e"); -assertEquals("foo", f1.apply(null, new Array("foo", "bar", "baz", "bo")), "6f"); - -assertEquals(void 0, f1.apply(void 0), "7a"); -assertEquals(void 0, f1.apply(void 0, new Array(1)), "7b"); -assertEquals(void 0, f1.apply(void 0, new Array(2)), "7c"); -assertEquals(void 0, f1.apply(void 0, new Array(4242)), "7d"); -assertEquals(42, f1.apply(void 0, new Array(42, 43)), "7e"); -assertEquals("foo", f1.apply(void 0, new Array("foo", "bar", "ba", "b")), "7f"); - -var arr = new Array(42, "foo", "fish", "horse"); -function j(a, b, c, d, e, f, g, h, i, j, k, l) { - return "" + a + b + c + d + e + f + g + h + i + j + k + l; -} - - -var expect = "42foofishhorse"; -for (var i = 0; i < 8; i++) - expect += "undefined"; -assertEquals(expect, j.apply(undefined, arr), "apply to undefined"); - -assertThrows("f0.apply(this, 1);"); -assertThrows("f0.apply(this, 1, 2);"); -assertThrows("f0.apply(this, 1, new Array(2));"); - -function f() { - var doo = ""; - for (var i = 0; i < arguments.length; i++) { - doo += arguments[i]; - } - return doo; -} - -assertEquals("42foofishhorse", f.apply(this, arr), "apply to this"); - -function s() { - var doo = this; - for (var i = 0; i < arguments.length; i++) { - doo += arguments[i]; - } - return doo; -} - -assertEquals("bar42foofishhorse", s.apply("bar", arr), "apply to string"); - -function al() { - print(this); - assertEquals(Object(345), this); - return arguments.length + arguments[arguments.length - 1]; -} - -for (var j = 1; j < 0x400000; j <<= 1) { - try { - var a = %NormalizeElements([]); - a.length = j; - a[j - 1] = 42; - assertEquals(42 + j, al.apply(345, a)); - } catch (e) { - assertTrue(e.toString().indexOf("Maximum call stack size exceeded") != -1); - for (; j < 0x400000; j <<= 1) { - var caught = false; - try { - a = %NormalizeElements([]); - a.length = j; - a[j - 1] = 42; - al.apply(345, a); - assertUnreachable("Apply of array with length " + a.length + - " should have thrown"); - } catch (e) { - assertTrue(e.toString().indexOf("Maximum call stack size exceeded") != -1); - caught = true; - } - assertTrue(caught, "exception not caught"); - } - break; - } -} - -// Check packed double arrays -var arr = [0.0]; -for (var i = 1; i < 4; i++) { - arr.push(i * 0.1); -} -assertEquals(0.0, Math.min.apply(Math, arr)); -assertEquals(0.30000000000000004, Math.max.apply(Math, arr)); - -// Check holey double arrays -var arr = Array(4); -for (var i = 0; i < 4; i++) { - arr[i] = i * 0.1; -} -assertEquals(0.0, Math.min.apply(Math, arr)); -assertEquals(0.30000000000000004, Math.max.apply(Math, arr)); - -// Check that holes are set properly -arr[5] = 0.5; -assertEquals(NaN, Math.min.apply(Math, arr)); -assertEquals(NaN, Math.max.apply(Math, arr)); - - -var primes = new Array(0); - -function isPrime(possible_prime) { - for (var d = 0; d < primes.length; d++) { - var p = primes[d]; - if (possible_prime % p == 0) - return false; - if (p * p > possible_prime) - return true; - } - return true; -} - -for (var i = 2; i < 10000; i++) { - if (isPrime(i)) { - primes.push(i); - } -} - -assertEquals(1229, primes.length); - -var same_primes = Array.prototype.constructor.apply(Array, primes); - -for (var i = 0; i < primes.length; i++) - assertEquals(primes[i], same_primes[i], "prime" + primes[i]); -assertEquals(primes.length, same_primes.length, "prime-length"); - - -Array.prototype["1"] = "sep"; - -var holey = new Array(3); -holey[0] = "mor"; -holey[2] = "er"; - -assertEquals("morseper", String.prototype.concat.apply("", holey), - "moreseper0"); -assertEquals("morseper", String.prototype.concat.apply("", holey, 1), - "moreseper1"); -assertEquals("morseper", String.prototype.concat.apply("", holey, 1, 2), - "moreseper2"); -assertEquals("morseper", String.prototype.concat.apply("", holey, 1, 2, 3), - "morseper3"); -assertEquals("morseper", String.prototype.concat.apply("", holey, 1, 2, 3, 4), - "morseper4"); - -primes[0] = ""; -primes[1] = holey; -assertThrows("String.prototype.concat.apply.apply('foo', primes)"); -assertEquals("morseper", - String.prototype.concat.apply.apply(String.prototype.concat, primes), - "moreseper-prime"); - -delete(Array.prototype["1"]); - -// Check correct handling of non-array argument lists. -assertSame(this, f0.apply(this, {}), "non-array-1"); -assertSame(this, f0.apply(this, { length:1 }), "non-array-2"); -assertEquals(void 0, f1.apply(this, { length:1 }), "non-array-3"); -assertEquals(void 0, f1.apply(this, { 0:"foo" }), "non-array-4"); -assertEquals("foo", f1.apply(this, { length:1, 0:"foo" }), "non-array-5"); diff --git a/implementation-contributed/v8/mjsunit/argument-assigned.js b/implementation-contributed/v8/mjsunit/argument-assigned.js deleted file mode 100644 index e30c8817a72..00000000000 --- a/implementation-contributed/v8/mjsunit/argument-assigned.js +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -(function() { - function f(x) { - var arguments = [ 1, 2, 3 ]; - return x; - } - assertEquals(7, f(7)); -})(); - - -(function() { - function f(x) { - arguments[0] = 991; - var arguments = [ 1, 2, 3 ]; - return x; - } - assertEquals(991, f(7)); -})(); - - -(function() { - function f(x) { - arguments[0] = 991; - for (var i = 0; i < 10; i++) { - if (i == 5) { - var arguments = [ 1, 2, 3 ]; - } - } - return x; - } - assertEquals(991, f(7)); -})(); - - -(function() { - function f(x, s) { - eval(s); - return x; - } - assertEquals(7, f(7, "var arguments = [ 1, 2, 3 ];")); -})(); - - -(function() { - function f(x, s) { - var tmp = arguments[0]; - eval(s); - return tmp; - } - assertEquals(7, f(7, "var arguments = [ 1, 2, 3 ];")); -})(); - - -(function() { - function f(x, s) { - var tmp = arguments[0]; - eval(s); - return tmp; - } - assertEquals(7, f(7, "")); -})(); - - -(function() { - function f(x, s) { - var tmp = arguments[0]; - eval(s); - return x; - } - assertEquals(7, f(7, "var arguments = [ 1, 2, 3 ];")); -})(); - - -(function() { - function f(x, s) { - var tmp = arguments[0]; - eval(s); - return x; - } - assertEquals(7, f(7, "")); -})(); - - -(function() { - function f(x) { - function g(y) { - x = y; - } - arguments = {}; - g(991); - return x; - } - assertEquals(991, f(7)); -})(); - - -(function() { - function f(x) { - function g(y, s) { - eval(s); - } - arguments = {}; - g(991, "x = y;"); - return x; - } - assertEquals(991, f(7)); -})(); diff --git a/implementation-contributed/v8/mjsunit/argument-named-arguments.js b/implementation-contributed/v8/mjsunit/argument-named-arguments.js deleted file mode 100644 index 2845102b7c9..00000000000 --- a/implementation-contributed/v8/mjsunit/argument-named-arguments.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests to verify proper arguments handling if the arguments -// variable is declared as a parameter or local variable. - -function e(a) { - assertEquals(9, a.length); - assertEquals("arguments", a); -}; - -e("arguments"); - - -function f(arguments) { - assertEquals(9, arguments.length); - assertEquals("arguments", arguments); -}; - -f("arguments"); - - -function g(x) { - var arguments; - assertEquals("arguments", x); - assertEquals(1, arguments.length); - assertEquals("[object Arguments]", '' + arguments); -}; - -g("arguments"); - - -function h(x) { - assertEquals("arguments", x); - assertEquals(1, arguments.length); - assertEquals("[object Arguments]", '' + arguments); - var arguments = "foobar"; - assertEquals("arguments", x); - assertEquals(6, arguments.length); - assertEquals("foobar", '' + arguments); -}; - -h("arguments"); diff --git a/implementation-contributed/v8/mjsunit/arguments-apply-deopt.js b/implementation-contributed/v8/mjsunit/arguments-apply-deopt.js deleted file mode 100644 index b7251af5aa1..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-apply-deopt.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -(function ApplyArgumentsDeoptInReceiverMapCheck() { - function invoker(h, r) { - return function XXXXX() { - var res = h.apply({ fffffff : r(this) }, arguments); - return res; - }; - } - - var y = invoker(m, selfOf); - - function selfOf(c) { - var sssss = c.self_; - return sssss; - } - - function m() { - return this.fffffff; - } - - y.apply({ self_ : 3 }); - y.apply({ self_ : 3 }); - y.apply({ self_ : 3 }); - - %OptimizeFunctionOnNextCall(y); - - assertEquals(y.apply({ self_ : 3, uuu : 4 }), 3); -})(); - -(function ApplyArgumentsDeoptInReceiverExplicit() { - function f() { return this + 21; } - - function deopt() { - %DeoptimizeFunction(XXXXX); - return 21; - } - - function XXXXX() { - return f.apply(deopt(), arguments); - }; - - XXXXX(); - XXXXX(); - XXXXX(); - - %OptimizeFunctionOnNextCall(XXXXX); - - assertEquals(42, XXXXX()); -})(); diff --git a/implementation-contributed/v8/mjsunit/arguments-apply.js b/implementation-contributed/v8/mjsunit/arguments-apply.js deleted file mode 100644 index 48c42349639..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-apply.js +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function ReturnArguments() { - return arguments; -} - -function ReturnReceiver() { - return this; -} - - -function Global() { - return ReturnArguments.apply(this, arguments); -} - -assertEquals(0, Global().length); -assertEquals(1, Global(1).length); -assertEquals(2, Global(2)[0]); -assertEquals(2, Global(3, 4).length); -assertEquals(3, Global(3, 4)[0]); -assertEquals(4, Global(3, 4)[1]); - - -function Local() { - var object = { f: ReturnArguments }; - return object.f.apply(this, arguments); -} - -assertEquals(0, Local().length); -assertEquals(1, Local(1).length); -assertEquals(2, Local(2)[0]); -assertEquals(2, Local(3, 4).length); -assertEquals(3, Local(3, 4)[0]); -assertEquals(4, Local(3, 4)[1]); - - -function ShadowArguments() { - var arguments = [3, 4]; - return ReturnArguments.apply(this, arguments); -} - -assertEquals(2, ShadowArguments().length); -assertEquals(3, ShadowArguments()[0]); -assertEquals(4, ShadowArguments()[1]); - - -function NonObjectReceiver(receiver) { - return ReturnReceiver.apply(receiver, arguments); -} - -assertEquals(Object(42), NonObjectReceiver(42)); -assertEquals("object", typeof NonObjectReceiver(42)); -assertInstanceof(NonObjectReceiver(42), Number); -assertSame(this, NonObjectReceiver(null)); -assertSame(this, NonObjectReceiver(void 0)); - - -function FunctionReceiver() { - return ReturnReceiver.apply(Object, arguments); -} - -assertTrue(Object === FunctionReceiver()); - - -function ShadowApply() { - function f() { return 42; } - f.apply = function() { return 87; } - return f.apply(this, arguments); -} - -assertEquals(87, ShadowApply()); -assertEquals(87, ShadowApply(1)); -assertEquals(87, ShadowApply(1, 2)); - - -function CallNonFunction() { - var object = { apply: Function.prototype.apply }; - return object.apply(this, arguments); -} - -assertThrows(CallNonFunction, TypeError); - - -// Make sure that the stack after the apply optimization is -// in a valid state. -function SimpleStackCheck() { - var sentinel = 42; - var result = ReturnArguments.apply(this, arguments); - assertTrue(result != null); - assertEquals(42, sentinel); -} - -SimpleStackCheck(); - - -function ShadowArgumentsWithConstant() { - var arguments = null; - return ReturnArguments.apply(this, arguments); -} - -assertEquals(0, ShadowArgumentsWithConstant().length); -assertEquals(0, ShadowArgumentsWithConstant(1).length); -assertEquals(0, ShadowArgumentsWithConstant(1, 2).length); - - -// Make sure we can deal with unfolding lots of arguments on the -// stack even in the presence of the apply optimizations. -var array = new Array(2048); -assertEquals(2048, Global.apply(this, array).length); diff --git a/implementation-contributed/v8/mjsunit/arguments-call-apply.js b/implementation-contributed/v8/mjsunit/arguments-call-apply.js deleted file mode 100644 index a5cadf557b3..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-call-apply.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function sum(a, b, c) { - var result = 0; - for (var i = 0; i < arguments.length; i++) { - result += arguments[i]; - } - return result; -} - -// Try invoking call before sum has been compiled lazily. -assertEquals(6, sum.call(this, 1, 2, 3), "lazy call"); - -assertEquals(6, sum(1, 2, 3), "normal"); -assertEquals(6, sum.call(this, 1, 2, 3), "call"); -assertEquals(6, sum.apply(this, [1, 2, 3]), "apply"); diff --git a/implementation-contributed/v8/mjsunit/arguments-deopt.js b/implementation-contributed/v8/mjsunit/arguments-deopt.js deleted file mode 100644 index 20e5f691529..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-deopt.js +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function MaterializeStrictArguments() { - "use strict" - - function f(x, y) { - return x + y; - } - - function test1() { - %DeoptimizeNow(); - return f.apply(null, arguments); - } - - assertEquals(test1(1, 2), 3); - assertEquals(test1(1, 2, 3), 3); - - %OptimizeFunctionOnNextCall(test1); - assertEquals(test1(1, 2), 3); - %OptimizeFunctionOnNextCall(test1); - assertEquals(test1(1, 2, 3), 3); -})(); - -(function MaterializeSloppyArguments() { - function f(x, y) { - return x + y; - } - - function test2() { - %DeoptimizeNow(); - return f.apply(null, arguments); - } - - assertEquals(test2(1, 2), 3); - assertEquals(test2(1, 2, 3), 3); - - %OptimizeFunctionOnNextCall(test2); - assertEquals(test2(1, 2), 3); - %OptimizeFunctionOnNextCall(test2); - assertEquals(test2(1, 2, 3), 3); -})(); - -(function MaterializeStrictOverwrittenArguments() { - "use strict" - - function f(x, y) { - return x + y; - } - - function test3(a, b) { - a = 4; - %DeoptimizeNow(); - return f.apply(null, arguments); - } - - assertEquals(test3(1, 2), 3); - assertEquals(test3(1, 2, 3), 3); - - %OptimizeFunctionOnNextCall(test3); - assertEquals(test3(11, 12), 23); - %OptimizeFunctionOnNextCall(test3); - assertEquals(test3(11, 12, 13), 23); -})(); - -(function MaterializeSloppyOverwrittenArguments() { - function f(x, y) { - return x + y; - } - - function test4(a, b) { - a = 4; - %DeoptimizeNow(); - return f.apply(null, arguments); - } - - test4(1, 2); - test4(3, 4, 5); - - assertEquals(test4(1, 2), 6); - assertEquals(test4(1, 2, 3), 6); - - %OptimizeFunctionOnNextCall(test4); - assertEquals(test4(1, 2), 6); - %OptimizeFunctionOnNextCall(test4); - assertEquals(test4(1, 2, 3), 6); -})(); - -(function ArgumentsAccessStrict () { - "use strict" - function sum1(a,b,c) { - var sum = 0; - var rest = arguments; - for (var i = 0; i < rest.length; ++i) { - var j = i; - if (rest.length % 15 == 0 && i == 10) j += 10000; - sum += rest[j] || i+1; - } - return sum; - }; - - var args = [] - for (var i = 1; i < 30; ++i) { - args.push(i); - if (i%10 == 0) %OptimizeFunctionOnNextCall(sum1); - assertEquals(i*(i+1)/2, sum1(...args)); - } -})(); - -(function ArgumentsAccessSloppy () { - function sum2(a,b,c) { - var sum = 0; - for (var i = 0; i < arguments.length; ++i) { - var j = i; - if (arguments.length % 15 == 0 && i == 10) j += 10000; - sum += arguments[j] || i+1; - } - return sum; - }; - - var args = [] - for (var i = 1; i < 30; ++i) { - args.push(i); - if (i%10 == 0) %OptimizeFunctionOnNextCall(sum2); - assertEquals(i*(i+1)/2, sum2(...args)); - } -})(); - -(function RestAccess0 () { - function sum3(...rest) { - var sum = 0; - for (var i = 0; i < rest.length; ++i) { - var j = i; - if (rest.length % 15 == 0 && i == 10) j += 10000; - sum += rest[j] || i+1; - } - return sum; - }; - - var args = [] - for (var i = 1; i < 30; ++i) { - args.push(i); - if (i%10 == 0) %OptimizeFunctionOnNextCall(sum3); - assertEquals(i*(i+1)/2, sum3(...args)); - } -})(); - -(function RestAccess1 () { - function sum4(a,...rest) { - var sum = 0; - for (var i = 0; i < rest.length; ++i) { - var j = i; - if (rest.length % 15 == 0 && i == 10) j += 10000; - sum += rest[j] || i+2; - } - return sum; - }; - - var args = [] - for (var i = 1; i < 30; ++i) { - args.push(i); - if (i%10 == 0) %OptimizeFunctionOnNextCall(sum4); - assertEquals(i*(i+1)/2-1, sum4(...args)); - } -})(); - - -(function ReadArguments () { - function read() { - if (arguments.length % 10 == 5) %DeoptimizeNow(); - return arguments[arguments.length-1]; - }; - - var args = [] - for (var i = 1; i < 30; ++i) { - args.push(i); - if (i%10 == 0) %OptimizeFunctionOnNextCall(read); - assertEquals(i, read(...args)); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/arguments-enum.js b/implementation-contributed/v8/mjsunit/arguments-enum.js deleted file mode 100644 index 3aee918af15..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-enum.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function countArguments() { - var count = 0; - for (var prop in arguments) - count++; - return count; -} - -function setArgumentCount() { - arguments[10] = 5; - arguments.x = 4; - var count = 0; - for (var prop in arguments) - count++; - return count; -} - -assertEquals(0, countArguments()); -assertEquals(1, countArguments(1)); -assertEquals(2, countArguments(1, 2)); -assertEquals(5, countArguments(1, 2, 3, 4, 5)); - -assertEquals(2, setArgumentCount()); -assertEquals(3, setArgumentCount(1)); -assertEquals(4, setArgumentCount(1, 2)); -assertEquals(7, setArgumentCount(1, 2, 3, 4, 5)); diff --git a/implementation-contributed/v8/mjsunit/arguments-escape.js b/implementation-contributed/v8/mjsunit/arguments-escape.js deleted file mode 100644 index 042100cf8da..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-escape.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function foo(x) { - var a = arguments; - function bar(i) { - assertEquals(i, ++a[0]); - assertEquals(i, x); - }; - bar(1); - bar(2); - bar(3); - return bar; -} -var baz = foo(0); -baz(4); -baz(5); -baz(6); - -// Test writing a non-smi. -function foo2(x) { - var a = arguments; - function bar2(i) { - assertEquals(i, ++a[0]); - assertEquals(i, x); - }; - bar2(1.5); - bar2(2.5); - bar2(3.5); - return bar2; -} -var baz2 = foo2(0.5); -baz2(4.5); -baz2(5.5); -baz2(6.5); diff --git a/implementation-contributed/v8/mjsunit/arguments-indirect.js b/implementation-contributed/v8/mjsunit/arguments-indirect.js deleted file mode 100644 index 12cd5b4b358..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-indirect.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f1() { - g(f1); -} - -function f2(x) { - var a = arguments; - x++; - g(f2); -} - -function f3(x) { - var a = arguments; - (function() { x++ })(); - g(f3); -} - -function g(f) { - assertEquals("object", typeof f.arguments); - assertFalse(f.arguments === f.arguments); - assertEquals(3, f.arguments.length); - assertEquals(1, f.arguments[0]); - assertEquals(2, f.arguments[1]); - assertEquals(3, f.arguments[2]); -} - -f1(1,2,3); -f2(1,2,3); -f3(1,2,3); diff --git a/implementation-contributed/v8/mjsunit/arguments-lazy.js b/implementation-contributed/v8/mjsunit/arguments-lazy.js deleted file mode 100644 index 794afc36b65..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-lazy.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure we don't allocate the arguments object over and -// over again. -function SharedLazyArguments() { - return arguments === arguments; -} - -assertTrue(SharedLazyArguments()); - - -// Make sure that accessing arguments doesn't clobber any -// local variables called arguments. -function ArgumentsOverride(x) { - var arguments = 42; - x = x ? x : 0; - return x + arguments; -} - -assertEquals(42, ArgumentsOverride()); -assertEquals(43, ArgumentsOverride(1)); -assertEquals(44, ArgumentsOverride(2,3)); diff --git a/implementation-contributed/v8/mjsunit/arguments-load-across-eval.js b/implementation-contributed/v8/mjsunit/arguments-load-across-eval.js deleted file mode 100644 index 295b62cd460..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-load-across-eval.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests loading of aguments across eval calls. - -// Test loading across an eval call that does not shadow variables. -function testNoShadowing(x, h) { - function f() { - eval('1'); - assertEquals(1, x); - assertEquals(2, h()); - function g() { - assertEquals(1, x); - assertEquals(2, h()); - } - g(); - } - f(); -} - -testNoShadowing(1, function() { return 2; }); - -// Test loading across eval calls that do not shadow variables. -function testNoShadowing2(x, h) { - eval('1'); - function f() { - eval('1'); - assertEquals(1, x); - assertEquals(2, h()); - function g() { - assertEquals(1, x); - assertEquals(2, h()); - } - g(); - } - f(); -} - -testNoShadowing2(1, function() { return 2; }); - -// Test loading across an eval call that shadows variables. -function testShadowing(x, h) { - function f() { - assertEquals(1, x); - assertEquals(2, h()); - eval('var x = 3; var h = function() { return 4; };'); - assertEquals(3, x); - assertEquals(4, h()); - function g() { - assertEquals(3, x); - assertEquals(4, h()); - } - g(); - } - f(); - assertEquals(1, x); - assertEquals(2, h()); -} - -testShadowing(1, function() { return 2; }); diff --git a/implementation-contributed/v8/mjsunit/arguments-read-and-assignment.js b/implementation-contributed/v8/mjsunit/arguments-read-and-assignment.js deleted file mode 100644 index fba052bfb72..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments-read-and-assignment.js +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Testing basic functionality of the arguments object. -// Introduced to ensure that the fast compiler does the right thing. -// The arguments object itself. -assertEquals(42, function(){ return arguments;}(42)[0], - "return arguments value"); -assertEquals(42, function(){ return arguments;}(42)[0], - "arguments in plain value context"); -assertEquals(42, function(){ arguments;return 42}(37), - "arguments in effect context"); -assertEquals(42, function(){ if(arguments)return 42;}(), - "arguments in a boolean context"); -assertEquals(42, function(){ return arguments || true;}(42)[0], - "arguments in a short-circuit boolean context - or"); -assertEquals(true, function(){ return arguments && [true];}(42)[0], - "arguments in a short-circuit boolean context - and"); -assertEquals(42, function(){ arguments = 42; return 42;}(), - "arguments assignment"); -// Properties of the arguments object. -assertEquals(42, function(){ return arguments[0]; }(42), - "args[0] value returned"); -assertEquals(42, function(){ arguments[0]; return 42}(), - "args[0] value ignored"); -assertEquals(42, function(){ if (arguments[0]) return 42; }(37), - "args[0] to boolean"); -assertEquals(42, function(){ return arguments[0] || "no"; }(42), - "args[0] short-circuit boolean or true"); -assertEquals(42, function(){ return arguments[0] || 42; }(0), - "args[0] short-circuit boolean or false"); -assertEquals(37, function(){ return arguments[0] && 37; }(42), - "args[0] short-circuit boolean and true"); -assertEquals(0, function(){ return arguments[0] && 42; }(0), - "args[0] short-circuit boolean and false"); -assertEquals(42, function(){ arguments[0] = 42; return arguments[0]; }(37), - "args[0] assignment"); -// Link between arguments and parameters. -assertEquals(42, function(a) { arguments[0] = 42; return a; }(37), - "assign args[0]->a"); -assertEquals(42, function(a) { a = 42; return arguments[0]; }(37), - "assign a->args[0]"); -assertEquals(54, function(a, b) { arguments[1] = 54; return b; }(42, 37), - "assign args[1]->b:b"); -assertEquals(54, function(a, b) { b = 54; return arguments[1]; }(42, 47), - "assign b->args[1]:b"); -assertEquals(42, function(a, b) { arguments[1] = 54; return a; }(42, 37), - "assign args[1]->b:a"); -assertEquals(42, function(a, b) { b = 54; return arguments[0]; }(42, 47), - "assign b->args[1]:a"); - -// Capture parameters in nested contexts. -assertEquals(33, - function(a,b) { - return a + arguments[0] + - function(b){ return a + b + arguments[0]; }(b); }(7,6), - "captured parameters"); -assertEquals(42, function(a) { - arguments[0] = 42; - return function(b){ return a; }(); - }(37), - "capture value returned"); -assertEquals(42, - function(a) { - arguments[0] = 26; - return function(b){ a; return 42; }(); - }(37), - "capture value ignored"); -assertEquals(42, - function(a) { - arguments[0] = 26; - return function(b){ if (a) return 42; }(); - }(37), - "capture to boolean"); -assertEquals(42, - function(a) { - arguments[0] = 42; - return function(b){ return a || "no"; }(); - }(37), - "capture short-circuit boolean or true"); -assertEquals(0, - function(a) { - arguments[0] = 0; - return function(b){ return a && 42; }(); - }(37), - "capture short-circuit boolean and false"); -// Deeply nested. -assertEquals(42, - function(a,b) { - return arguments[2] + - function(){ - return b + - function() { - return a; - }(); - }(); - }(7,14,21), - "deep nested capture"); - -// Assignment to captured parameters. -assertEquals(42, function(a,b) { - arguments[1] = 11; - return a + function(){ a = b; return a; }() + a; - }(20, 37), "captured assignment"); - -// Inside non-function scopes. -assertEquals(42, - function(a) { - arguments[0] = 20; - with ({ b : 22 }) { return a + b; } - }(37), - "a in with"); -assertEquals(42, - function(a) { - with ({ b : 22 }) { return arguments[0] + b; } - }(20), - "args in with"); -assertEquals(42, - function(a) { - arguments[0] = 20; - with ({ b : 22 }) { - return function() { return a; }() + b; } - }(37), - "captured a in with"); -assertEquals(42, - function(a) { - arguments[0] = 12; - with ({ b : 22 }) { - return function f() { - try { throw 8 } catch(e) { return e + a }; - }() + b; - } - }(37), - "in a catch in a named function captured a in with "); -// Escaping arguments. -function weirdargs(a,b,c) { if (!a) return arguments; - return [b[2],c]; } -var args1 = weirdargs(false, null, 40); -var res = weirdargs(true, args1, 15); -assertEquals(40, res[0], "return old args element"); -assertEquals(15, res[1], "return own args element"); diff --git a/implementation-contributed/v8/mjsunit/arguments.js b/implementation-contributed/v8/mjsunit/arguments.js deleted file mode 100644 index ad12540c6de..00000000000 --- a/implementation-contributed/v8/mjsunit/arguments.js +++ /dev/null @@ -1,368 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function argc0() { - return arguments.length; -} - -function argc1(i) { - return arguments.length; -} - -function argc2(i, j) { - return arguments.length; -} - -assertEquals(0, argc0()); -assertEquals(1, argc0(1)); -assertEquals(2, argc0(1, 2)); -assertEquals(3, argc0(1, 2, 3)); -assertEquals(0, argc1()); -assertEquals(1, argc1(1)); -assertEquals(2, argc1(1, 2)); -assertEquals(3, argc1(1, 2, 3)); -assertEquals(0, argc2()); -assertEquals(1, argc2(1)); -assertEquals(2, argc2(1, 2)); -assertEquals(3, argc2(1, 2, 3)); - -var index; - -function argv0() { - return arguments[index]; -} - -function argv1(i) { - return arguments[index]; -} - -function argv2(i, j) { - return arguments[index]; -} - -index = 0; -assertEquals(7, argv0(7)); -assertEquals(7, argv0(7, 8)); -assertEquals(7, argv0(7, 8, 9)); -assertEquals(7, argv1(7)); -assertEquals(7, argv1(7, 8)); -assertEquals(7, argv1(7, 8, 9)); -assertEquals(7, argv2(7)); -assertEquals(7, argv2(7, 8)); -assertEquals(7, argv2(7, 8, 9)); - -index = 1; -assertEquals(8, argv0(7, 8)); -assertEquals(8, argv0(7, 8)); -assertEquals(8, argv1(7, 8, 9)); -assertEquals(8, argv1(7, 8, 9)); -assertEquals(8, argv2(7, 8, 9)); -assertEquals(8, argv2(7, 8, 9)); - -index = 2; -assertEquals(9, argv0(7, 8, 9)); -assertEquals(9, argv1(7, 8, 9)); -assertEquals(9, argv2(7, 8, 9)); - - -// Test that calling a lazily compiled function with -// an unexpected number of arguments works. -function f(a) { return arguments.length; }; -assertEquals(3, f(1, 2, 3)); - -function f1(x, y) { - function g(a) { - a[0] = "three"; - return a.length; - } - var l = g(arguments); - y = 5; - assertEquals(2, l); - assertEquals("three", x); - assertEquals(5, y); -} -f1(3, "five"); - - -function f2() { - if (arguments[0] > 0) { - return arguments.callee(arguments[0] - 1) + arguments[0]; - } - return 0; -} -assertEquals(55, f2(10)); - - -function f3() { - assertEquals(0, arguments.length); -} -f3(); - - -function f4() { - var arguments = 0; - assertEquals(void 0, arguments.length); -} -f4(); - - -function f5(x, y, z) { - function g(a) { - x = "two"; - y = "three"; - a[1] = "drei"; - a[2] = "fuenf"; - }; - - g(arguments); - assertEquals("two", x); - assertEquals("drei", y); - assertEquals("fuenf", z); -} -f5(2, 3, 5); - - -function f6(x, y) { - x = "x"; - arguments[1] = "y"; - return [arguments.length, arguments[0], y, arguments[2]]; -} - -assertArrayEquals([0, void 0, void 0, void 0], f6()); -assertArrayEquals([1, "x", void 0, void 0], f6(1)); -assertArrayEquals([2, "x", "y", void 0], f6(9, 17)); -assertArrayEquals([3, "x", "y", 7], f6(3, 5, 7)); -assertArrayEquals([4, "x", "y", "c"], f6("a", "b", "c", "d")); - - -function list_args(a) { - assertEquals("function", typeof a.callee); - var result = []; - result.push(a.length); - for (i = 0; i < a.length; i++) result.push(a[i]); - return result; -} - - -function f7(x, y) { - function g(p) { - x = p; - } - g(y); - return list_args(arguments); -} - -assertArrayEquals([0], f7()); -assertArrayEquals([1, void 0], f7(3)); -assertArrayEquals([2, 5, 5], f7(3, 5)); -assertArrayEquals([3, 5, 5, 7], f7(3, 5, 7)); - -// Check out of bounds behavior. -function arg_get(x) { return arguments[x]; } -function arg_del(x) { return delete arguments[x]; } -function arg_set(x) { return (arguments[x] = 117); } -assertEquals(undefined, arg_get(0xFFFFFFFF)); -assertEquals(true, arg_del(0xFFFFFFFF)); -assertEquals(117, arg_set(0xFFFFFFFF)); - -(function() { - function f(a) { return arguments; } - var a = f(1,2,3); - // Turn arguments into slow. - assertTrue(%HasSloppyArgumentsElements(a)); - a[10000] = 1; - assertTrue(%HasSloppyArgumentsElements(a)); - // Make it fast again by adding values. - for (var i = 0; i < 1000; i++) { - a[i] = 1.5; - } - assertTrue(%HasSloppyArgumentsElements(a)); -})(); - -(function testDeleteArguments() { - function f() { return arguments }; - var args = f(1, 2); - assertEquals(1, args[0]); - assertEquals(2, args[1]); - assertEquals(2, args.length); - - delete args[0]; - assertEquals(undefined, args[0]); - assertEquals(2, args[1]); - assertEquals(2, args.length); - - delete args[1]; - assertEquals(undefined, args[0]); - assertEquals(undefined, args[1]); - assertEquals(2, args.length); -})(); - -(function testDeleteFastSloppyArguments() { - function f(a) { return arguments }; - var args = f(1, 2); - assertEquals(1, args[0]); - assertEquals(2, args[1]); - assertEquals(2, args.length); - - delete args[0]; - assertEquals(undefined, args[0]); - assertEquals(2, args[1]); - assertEquals(2, args.length); - - delete args[1]; - assertEquals(undefined, args[0]); - assertEquals(undefined, args[1]); - assertEquals(2, args.length); -})(); - -(function testDeleteSlowSloppyArguments() { - var key = 10000; - function f(a) { - arguments[key] = key; - return arguments - }; - var args = f(1, 2); - %HeapObjectVerify(args); - assertEquals(1, args[0]); - assertEquals(2, args[1]); - assertEquals(key, args[key]); - assertEquals(2, args.length); - - delete args[0]; - %HeapObjectVerify(args); - assertEquals(undefined, args[0]); - assertEquals(2, args[1]); - assertEquals(key, args[key]); - assertEquals(2, args.length); - - delete args[1]; - %HeapObjectVerify(args); - assertEquals(undefined, args[0]); - assertEquals(undefined, args[1]); - assertEquals(key, args[key]); - assertEquals(2, args.length); - - delete args[key]; - %HeapObjectVerify(args); - assertEquals(undefined, args[0]); - assertEquals(undefined, args[1]); - assertEquals(undefined, args[key]); - assertEquals(2, args.length); -})(); - -(function testDeleteSlowSloppyArguments2() { - function f(a) { - return arguments - }; - var args = f(1, 2); - %HeapObjectVerify(args); - assertEquals(1, args[0]); - assertEquals(2, args[1]); - assertEquals(2, args.length); - - delete args[1]; - %HeapObjectVerify(args); - assertEquals(1, args[0]); - assertEquals(undefined, args[1]); - assertEquals(undefined, args[2]); - assertEquals(2, args.length); - - delete args[0]; - %HeapObjectVerify(args); - assertEquals(undefined, args[0]); - assertEquals(undefined, args[1]); - assertEquals(undefined, args[2]); - assertEquals(2, args.length); -})(); - -(function testSloppyArgumentProperties() { - function f(a, b) { return arguments } - let args = f(1, 2, 3, 4); - %HeapObjectVerify(args); - assertEquals(4, args.length); - args.foo = "foo"; - %HeapObjectVerify(args); - assertEquals("foo", args.foo); - assertEquals(4, args.length); - - delete args.foo; - %HeapObjectVerify(args); - assertEquals(undefined, args.foo); - assertEquals(4, args.length); -})(); - - -(function testSloppyArgumentsLengthMapChange() { - function f(a) { return arguments }; - let args1 = f(1); - let args2 = f(1,2); - assertTrue(%HaveSameMap(args1, args2)); - args2.length = 12; - assertTrue(%HaveSameMap(args1, args2)); - args2.length = "aa" - assertTrue(%HaveSameMap(args1, args2)); - - let args3 = f(1); - let args4 = f(1,2); - // Creating holes causes map transitions. - assertTrue(%HaveSameMap(args1, args3)); - assertTrue(%HaveSameMap(args1, args4)); - delete args3[0]; - assertFalse(%HaveSameMap(args1, args3)); - delete args4[1]; - assertFalse(%HaveSameMap(args1, args4)); -})(); - -(function testSloppyArgumentsLengthMapChange() { - function f(a) { return arguments }; - let args1 = f(1); - let args2 = f(1,2); - assertTrue(%HaveSameMap(args1, args2)); - // Changing the length type doesn't causes a map transition. - args2.length = 12; - assertTrue(%HaveSameMap(args1, args2)); - args2.length = 12.0; - assertTrue(%HaveSameMap(args1, args2)); - args2.length = "aa" - assertTrue(%HaveSameMap(args1, args2)); -})(); - - -(function testArgumentsVerification() { - (function f2(a,a) { - %HeapObjectVerify(arguments); - })(1,2); - - function f7(a,a,a,a,a,a,a) { - %HeapObjectVerify(arguments); - }; - f7(1,2,3,4,5,6); - f7(1,2,3,4,5,6,7); - f7(1,2,3,4,5,6,7,8); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-bounds-check-removal.js b/implementation-contributed/v8/mjsunit/array-bounds-check-removal.js deleted file mode 100644 index 17be0951433..00000000000 --- a/implementation-contributed/v8/mjsunit/array-bounds-check-removal.js +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --no-always-opt - -var a = new Int32Array(1024); - -// Test that we do not assert if the accessed index has not an int32 rep. -var v = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; -function test_do_not_assert_on_non_int32(vector, base) { - var r = 0; - var a1 = base + 1; - var a2 = base + 2; - var a3 = base + 3; - var a4 = base + 4; - if (a1 == 2) { - r += vector[a1]; - r += vector[a4]; - r += vector[a2]; - r += vector[a3]; - } - return r; -} -test_do_not_assert_on_non_int32(v,1); -test_do_not_assert_on_non_int32(v,1); -test_do_not_assert_on_non_int32(v,"a"); -test_do_not_assert_on_non_int32(v,"a"); -%OptimizeFunctionOnNextCall(test_do_not_assert_on_non_int32); -test_do_not_assert_on_non_int32(v,0); - -function test_base(a, base, condition) { - a[base + 1] = 1; - a[base + 4] = 2; - a[base + 3] = 3; - a[base + 2] = 4; - a[base + 4] = base + 4; - if (condition) { - a[base + 1] = 1; - a[base + 2] = 2; - a[base + 2] = 3; - a[base + 2] = 4; - a[base + 4] = base + 4; - } else { - a[base + 6] = 1; - a[base + 4] = 2; - a[base + 3] = 3; - a[base + 2] = 4; - a[base + 4] = base - 4; - } -} - -function check_test_base(a, base, condition) { - if (condition) { - assertEquals(1, a[base + 1]); - assertEquals(4, a[base + 2]); - assertEquals(base + 4, a[base + 4]); - } else { - assertEquals(1, a[base + 6]); - assertEquals(3, a[base + 3]); - assertEquals(4, a[base + 2]); - assertEquals(base - 4, a[base + 4]); - } -} - - -test_base(a, 1, true); -test_base(a, 2, true); -test_base(a, 1, false); -test_base(a, 2, false); -%OptimizeFunctionOnNextCall(test_base); -test_base(a, 3, true); -check_test_base(a, 3, true); -test_base(a, 3, false); -check_test_base(a, 3, false); - -// Test that we deopt on failed bounds checks. -var dictionary_map_array = new Int32Array(128); -test_base(dictionary_map_array, 5, true); -test_base(dictionary_map_array, 6, true); -test_base(dictionary_map_array, 5, false); -test_base(dictionary_map_array, 6, false); -%OptimizeFunctionOnNextCall(test_base); -test_base(dictionary_map_array, -2, true); -assertUnoptimized(test_base); - -// Forget about the dictionary_map_array's map. -%ClearFunctionFeedback(test_base); - -test_base(a, 5, true); -test_base(a, 6, true); -test_base(a, 5, false); -test_base(a, 6, false); -%OptimizeFunctionOnNextCall(test_base); -test_base(a, 2048, true); -assertUnoptimized(test_base); - -function test_minus(base,cond) { - a[base - 1] = 1; - a[base - 2] = 2; - a[base + 4] = 3; - a[base] = 4; - a[base + 4] = base + 4; - if (cond) { - a[base - 4] = 1; - a[base + 5] = 2; - a[base + 3] = 3; - a[base + 2] = 4; - a[base + 4] = base + 4; - } else { - a[base + 6] = 1; - a[base + 4] = 2; - a[base + 3] = 3; - a[base + 2] = 4; - a[base + 4] = base - 4; - } -} - -function check_test_minus(base,cond) { - if (cond) { - assertEquals(2, a[base + 5]); - assertEquals(3, a[base + 3]); - assertEquals(4, a[base + 2]); - assertEquals(base + 4, a[base + 4]); - } else { - assertEquals(1, a[base + 6]); - assertEquals(3, a[base + 3]); - assertEquals(4, a[base + 2]); - assertEquals(base - 4, a[base + 4]); - } -} - -test_minus(5,true); -test_minus(6,true); -%OptimizeFunctionOnNextCall(test_minus); -test_minus(7,true); -check_test_minus(7,true); -test_minus(7,false); -check_test_minus(7,false); - -// Specific test on negative offsets. -var short_a = new Array(100); -for (var i = 0; i < short_a.length; i++) short_a[i] = 0; -function short_test(a, i) { - a[i + 9] = 0; - a[i - 10] = 0; -} -short_test(short_a, 50); -short_test(short_a, 50); -%OptimizeFunctionOnNextCall(short_test); -short_a.length = 10; -short_test(short_a, 0); -assertUnoptimized(test_base); - - -// A test for when we would modify a phi index. -var data_phi = [0, 1, 2, 3, 4, 5, 6, 7, 8]; -function test_phi(a, base, check) { - var index; - if (check) { - index = base + 1; - } else { - index = base + 2; - } - var result = a[index]; - result += a[index + 1]; - result += a[index - 1]; - return result; -} -var result_phi = 0; -result_phi = test_phi(data_phi, 3, true); -assertEquals(12, result_phi); -result_phi = test_phi(data_phi, 3, true); -assertEquals(12, result_phi); -%OptimizeFunctionOnNextCall(test_phi); -result_phi = test_phi(data_phi, 3, true); -assertEquals(12, result_phi); - - -// A test for recursive decomposition -var data_composition_long = [0, 1, 2, 3, 4, 5, 6, 7, 8]; -var data_composition_short = [0, 1, 2, 3, 4]; -function test_composition(a, base0, check) { - var base1 = ((base0 + 2)); - var base2 = ((base1 + 8) >> 2); - var base3 = ((base2 + 6) >> 1); - var base4 = ((base3 + 8) >> 1); - - var result = 0; - result += a[base0]; - result += a[base1]; - result += a[base2]; - result += a[base3]; - result += a[base4]; - - return result; -} -var result_composition = 0; -result_composition = test_composition(data_composition_long, 2); -assertEquals(19, result_composition); -result_composition = test_composition(data_composition_long, 2); -assertEquals(19, result_composition); -%OptimizeFunctionOnNextCall(test_composition); -result_composition = test_composition(data_composition_short, 2); -assertEquals(NaN, result_composition); - - -gc(); diff --git a/implementation-contributed/v8/mjsunit/array-concat.js b/implementation-contributed/v8/mjsunit/array-concat.js deleted file mode 100644 index 6e25b5c5cd3..00000000000 --- a/implementation-contributed/v8/mjsunit/array-concat.js +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * @fileoverview Test concat on small and large arrays - */ - - -(function testStringWrapperConcat() { - var concat = Array.prototype.concat; - var str = new String('abcd'); - assertEquals([1,2,3,new String('abcd')], [1, 2, 3].concat(str)); - assertEquals([new String("abcd")], concat.call(str)); - - var array = [1, 2, 3]; - array.__proto__ = str; - array.length = 4; - assertEquals([1,2,3,'d'], concat.call(array)); -})() - -var poses; - -poses = [140, 4000000000]; -while (pos = poses.shift()) { - var a = new Array(pos); - var array_proto = []; - a.__proto__ = array_proto; - assertEquals(pos, a.length); - a.push('foo'); - assertEquals(pos + 1, a.length); - var b = ['bar']; - var c = a.concat(b); - assertEquals(pos + 2, c.length); - assertEquals("undefined", typeof(c[pos - 1])); - assertEquals("foo", c[pos]); - assertEquals("bar", c[pos + 1]); - - // Can we fool the system by putting a number in a string? - var onetwofour = "124"; - a[onetwofour] = 'doo'; - assertEquals(a[124], 'doo'); - c = a.concat(b); - assertEquals(c[124], 'doo'); - - // If we put a number in the prototype, then the spec says it should be - // copied on concat. - array_proto["123"] = 'baz'; - assertEquals(a[123], 'baz'); - - c = a.concat(b); - assertEquals(pos + 2, c.length); - assertEquals("baz", c[123]); - assertEquals("undefined", typeof(c[pos - 1])); - assertEquals("foo", c[pos]); - assertEquals("bar", c[pos + 1]); - - // When we take the number off the prototype it disappears from a, but - // the concat put it in c itself. - array_proto["123"] = undefined; - assertEquals("undefined", typeof(a[123])); - assertEquals("baz", c[123]); - - // If the element of prototype is shadowed, the element on the instance - // should be copied, but not the one on the prototype. - array_proto[123] = 'baz'; - a[123] = 'xyz'; - assertEquals('xyz', a[123]); - c = a.concat(b); - assertEquals('xyz', c[123]); - - // Non-numeric properties on the prototype or the array shouldn't get - // copied. - array_proto.moe = 'joe'; - a.ben = 'jerry'; - assertEquals(a["moe"], 'joe'); - assertEquals(a["ben"], 'jerry'); - c = a.concat(b); - // ben was not copied - assertEquals("undefined", typeof(c.ben)); - - // When we take moe off the prototype it disappears from all arrays. - array_proto.moe = undefined; - assertEquals("undefined", typeof(c.moe)); - - // Negative indices don't get concated. - a[-1] = 'minus1'; - assertEquals("minus1", a[-1]); - assertEquals("undefined", typeof(a[0xffffffff])); - c = a.concat(b); - assertEquals("undefined", typeof(c[-1])); - assertEquals("undefined", typeof(c[0xffffffff])); - assertEquals(c.length, a.length + 1); -} - -poses = [140, 4000000000]; -while (pos = poses.shift()) { - var a = new Array(pos); - assertEquals(pos, a.length); - a.push('foo'); - assertEquals(pos + 1, a.length); - var b = ['bar']; - var c = a.concat(b); - assertEquals(pos + 2, c.length); - assertEquals("undefined", typeof(c[pos - 1])); - assertEquals("foo", c[pos]); - assertEquals("bar", c[pos + 1]); - - // Can we fool the system by putting a number in a string? - var onetwofour = "124"; - a[onetwofour] = 'doo'; - assertEquals(a[124], 'doo'); - c = a.concat(b); - assertEquals(c[124], 'doo'); - - // If we put a number in the prototype, then the spec says it should be - // copied on concat. - Array.prototype["123"] = 'baz'; - assertEquals(a[123], 'baz'); - - c = a.concat(b); - assertEquals(pos + 2, c.length); - assertEquals("baz", c[123]); - assertEquals("undefined", typeof(c[pos - 1])); - assertEquals("foo", c[pos]); - assertEquals("bar", c[pos + 1]); - - // When we take the number off the prototype it disappears from a, but - // the concat put it in c itself. - Array.prototype["123"] = undefined; - assertEquals("undefined", typeof(a[123])); - assertEquals("baz", c[123]); - - // If the element of prototype is shadowed, the element on the instance - // should be copied, but not the one on the prototype. - Array.prototype[123] = 'baz'; - a[123] = 'xyz'; - assertEquals('xyz', a[123]); - c = a.concat(b); - assertEquals('xyz', c[123]); - - // Non-numeric properties on the prototype or the array shouldn't get - // copied. - Array.prototype.moe = 'joe'; - a.ben = 'jerry'; - assertEquals(a["moe"], 'joe'); - assertEquals(a["ben"], 'jerry'); - c = a.concat(b); - // ben was not copied - assertEquals("undefined", typeof(c.ben)); - // moe was not copied, but we can see it through the prototype - assertEquals("joe", c.moe); - - // When we take moe off the prototype it disappears from all arrays. - Array.prototype.moe = undefined; - assertEquals("undefined", typeof(c.moe)); - - // Negative indices don't get concated. - a[-1] = 'minus1'; - assertEquals("minus1", a[-1]); - assertEquals("undefined", typeof(a[0xffffffff])); - c = a.concat(b); - assertEquals("undefined", typeof(c[-1])); - assertEquals("undefined", typeof(c[0xffffffff])); - assertEquals(c.length, a.length + 1); - -} - -a = []; -c = a.concat('Hello'); -assertEquals(1, c.length); -assertEquals("Hello", c[0]); -assertEquals("Hello", c.toString()); - -// Check that concat preserves holes. -var holey = [void 0,'a',,'c'].concat(['d',,'f',[0,,2],void 0]) -assertEquals(9, holey.length); // hole in embedded array is ignored -for (var i = 0; i < holey.length; i++) { - if (i == 2 || i == 5) { - assertFalse(i in holey); - } else { - assertTrue(i in holey); - } -} - -// Polluted prototype from prior tests. -delete Array.prototype[123]; - -// Check that concat reads getters in the correct order. -var arr1 = [,2]; -var arr2 = [1,3]; -var r1 = [].concat(arr1, arr2); // [,2,1,3] -assertEquals([,2,1,3], r1); - -// Make first array change length of second array. -Object.defineProperty(arr1, 0, {get: function() { - arr2.push("X"); - return undefined; - }, configurable: true}) -var r2 = [].concat(arr1, arr2); // [undefined,2,1,3,"X"] -assertEquals([undefined,2,1,3,"X"], r2); - -// Make first array change length of second array massively. -arr2.length = 2; -Object.defineProperty(arr1, 0, {get: function() { - arr2[500000] = "X"; - return undefined; - }, configurable: true}) -var r3 = [].concat(arr1, arr2); // [undefined,2,1,3,"X"] -var expected = [undefined,2,1,3]; -expected[500000 + 2] = "X"; - -assertEquals(expected, r3); - -var arr3 = []; -var trace = []; -var expectedTrace = [] -function mkGetter(i) { return function() { trace.push(i); }; } -arr3.length = 10000; -for (var i = 0; i < 100; i++) { - Object.defineProperty(arr3, i * i, {get: mkGetter(i)}); - expectedTrace[i] = i; - expectedTrace[100 + i] = i; -} -var r4 = [0].concat(arr3, arr3); -assertEquals(1 + arr3.length * 2, r4.length); -assertEquals(expectedTrace, trace); diff --git a/implementation-contributed/v8/mjsunit/array-construct-transition.js b/implementation-contributed/v8/mjsunit/array-construct-transition.js deleted file mode 100644 index 234fa4b93b8..00000000000 --- a/implementation-contributed/v8/mjsunit/array-construct-transition.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = new Array(0, 1, 2); -assertTrue(%HasSmiElements(a)); -var b = new Array(0.5, 1.2, 2.3); -assertTrue(%HasDoubleElements(b)); -var c = new Array(0.5, 1.2, new Object()); -assertTrue(%HasObjectElements(c)); diff --git a/implementation-contributed/v8/mjsunit/array-constructor-feedback.js b/implementation-contributed/v8/mjsunit/array-constructor-feedback.js deleted file mode 100644 index 44d132820cb..00000000000 --- a/implementation-contributed/v8/mjsunit/array-constructor-feedback.js +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --no-always-opt --opt - -// Test element kind of objects. - -var elements_kind = { - fast_smi_only : 'fast smi only elements', - fast : 'fast elements', - fast_double : 'fast double elements', - dictionary : 'dictionary elements', - external_byte : 'external byte elements', - external_unsigned_byte : 'external unsigned byte elements', - external_short : 'external short elements', - external_unsigned_short : 'external unsigned short elements', - external_int : 'external int elements', - external_unsigned_int : 'external unsigned int elements', - external_float : 'external float elements', - external_double : 'external double elements', - external_pixel : 'external pixel elements' -} - -function getKind(obj) { - if (%HasSmiElements(obj)) return elements_kind.fast_smi_only; - if (%HasObjectElements(obj)) return elements_kind.fast; - if (%HasDoubleElements(obj)) return elements_kind.fast_double; - if (%HasDictionaryElements(obj)) return elements_kind.dictionary; -} - -function isHoley(obj) { - if (%HasHoleyElements(obj)) return true; - return false; -} - -function assertKind(expected, obj, name_opt) { - assertEquals(expected, getKind(obj), name_opt); -} - -// Test: ensure that crankshafted array constructor sites are deopted -// if another function is used. -(function() { - function bar0(t) { - return new t(); - } - a = bar0(Array); - a[0] = 3.5; - b = bar0(Array); - assertKind(elements_kind.fast_double, b); - %OptimizeFunctionOnNextCall(bar0); - b = bar0(Array); - assertKind(elements_kind.fast_double, b); - assertOptimized(bar0); - // bar0 should deopt - b = bar0(Object); - assertUnoptimized(bar0) - // When it's re-optimized, we should call through the full stub - bar0(Array); - %OptimizeFunctionOnNextCall(bar0); - b = bar0(Array); - // We also lost our ability to record kind feedback, as the site - // is megamorphic now. - assertKind(elements_kind.fast_smi_only, b); - assertOptimized(bar0); - b[0] = 3.5; - c = bar0(Array); - assertKind(elements_kind.fast_smi_only, c); -})(); - - -// Test: Ensure that inlined array calls in crankshaft learn from deopts -// based on the move to a dictionary for the array. -(function() { - function bar(len) { - return new Array(len); - } - a = bar(10); - a[0] = "a string"; - a = bar(10); - assertKind(elements_kind.fast, a); - %OptimizeFunctionOnNextCall(bar); - a = bar(10); - assertKind(elements_kind.fast, a); - assertOptimized(bar); - bar(10000); - assertOptimized(bar); - - function barn(one, two, three) { - return new Array(one, two, three); - } - - a = barn(1, 2, 3); - a[1] = "a string"; - a = barn(1, 2, 3); - assertKind(elements_kind.fast, a); - %OptimizeFunctionOnNextCall(barn); - a = barn(1, 2, 3); - assertKind(elements_kind.fast, a); - assertOptimized(barn); - a = barn(1, "oops", 3); - assertOptimized(barn); -})(); - - -// Test: When a method with array constructor is crankshafted, the type -// feedback for elements kind is baked in. Verify that transitions don't -// change it anymore -(function() { - function bar() { - return new Array(); - } - a = bar(); - bar(); - %OptimizeFunctionOnNextCall(bar); - b = bar(); - assertOptimized(bar); - b[0] = 3.5; - c = bar(); - assertKind(elements_kind.fast_smi_only, c); - assertOptimized(bar); -})(); - - -// Test: create arrays in two contexts, verifying that the correct -// map for Array in that context will be used. -(function() { - function bar() { return new Array(); } - bar(); - bar(); - %OptimizeFunctionOnNextCall(bar); - a = bar(); - assertTrue(a instanceof Array); - - var contextB = Realm.create(); - Realm.eval(contextB, "function bar2() { return new Array(); };"); - Realm.eval(contextB, "bar2(); bar2();"); - Realm.eval(contextB, "%OptimizeFunctionOnNextCall(bar2);"); - Realm.eval(contextB, "bar2();"); - assertFalse(Realm.eval(contextB, "bar2();") instanceof Array); - assertTrue(Realm.eval(contextB, "bar2() instanceof Array")); -})(); - -// Test: create array with packed feedback, then optimize function, which -// should deal with arguments that create holey arrays. -(function() { - function bar(len) { return new Array(len); } - bar(0); - bar(0); - %OptimizeFunctionOnNextCall(bar); - a = bar(0); - assertOptimized(bar); - assertTrue(isHoley(a)); - a = bar(1); // ouch! - assertOptimized(bar); - assertTrue(isHoley(a)); - a = bar(100); - assertTrue(isHoley(a)); - a = bar(0); - assertOptimized(bar); - assertTrue(isHoley(a)); -})(); - -// Test: Make sure that crankshaft continues with feedback for large arrays. -(function() { - function bar(len) { return new Array(len); } - var size = 100001; - // Perform a gc, because we are allocating a very large array and if a gc - // happens during the allocation we could lose our memento. - gc(); - bar(size)[0] = 'string'; - var res = bar(size); - assertKind(elements_kind.fast, bar(size)); - %OptimizeFunctionOnNextCall(bar); - assertKind(elements_kind.fast, bar(size)); - // But there is a limit, based on the size of the old generation, currently - // 22937600, but double it to prevent the test being too brittle. - var large_size = 22937600 * 2; - assertKind(elements_kind.dictionary, bar(large_size)); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-constructor.js b/implementation-contributed/v8/mjsunit/array-constructor.js deleted file mode 100644 index 94f444c051c..00000000000 --- a/implementation-contributed/v8/mjsunit/array-constructor.js +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var loop_count = 5 - - -for (var i = 0; i < loop_count; i++) { - var a = new Array(); - var b = Array(); - assertEquals(0, a.length); - assertEquals(0, b.length); - for (var k = 0; k < 10; k++) { - assertEquals('undefined', typeof a[k]); - assertEquals('undefined', typeof b[k]); - } -} - - -for (var i = 0; i < loop_count; i++) { - for (var j = 0; j < 100; j++) { - var a = new Array(j); - var b = Array(j); - assertEquals(j, a.length); - assertEquals(j, b.length); - for (var k = 0; k < j; k++) { - assertEquals('undefined', typeof a[k]); - assertEquals('undefined', typeof b[k]); - } - } -} - - -for (var i = 0; i < loop_count; i++) { - a = new Array(0, 1); - assertArrayEquals([0, 1], a); - a = new Array(0, 1, 2); - assertArrayEquals([0, 1, 2], a); - a = new Array(0, 1, 2, 3); - assertArrayEquals([0, 1, 2, 3], a); - a = new Array(0, 1, 2, 3, 4); - assertArrayEquals([0, 1, 2, 3, 4], a); - a = new Array(0, 1, 2, 3, 4, 5); - assertArrayEquals([0, 1, 2, 3, 4, 5], a); - a = new Array(0, 1, 2, 3, 4, 5, 6); - assertArrayEquals([0, 1, 2, 3, 4, 5, 6], a); - a = new Array(0, 1, 2, 3, 4, 5, 6, 7); - assertArrayEquals([0, 1, 2, 3, 4, 5, 6, 7], a); - a = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8); - assertArrayEquals([0, 1, 2, 3, 4, 5, 6, 7, 8], a); - a = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); - assertArrayEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], a); -} - - -function innerArrayLiteral(n) { - var a = new Array(n); - for (var i = 0; i < n; i++) { - a[i] = i * 2 + 7; - } - return a.join(); -} - -function testConstruction(len, elements_str) { - var a = eval('[' + elements_str + ']'); - var b = eval('new Array(' + elements_str + ')') - var c = eval('Array(' + elements_str + ')') - assertEquals(len, a.length); - assertArrayEquals(a, b); - assertArrayEquals(a, c); -} - -for (var i = 0; i < loop_count; i++) { - const N = 2000; - const literal = innerArrayLiteral(N); - let str = literal; - // JSObject::kInitialMaxFastElementArray is approximately 10000. - for (var j = N; j <= 12000; j += N) { - testConstruction(j, str); - str += ", " + literal; - } -} - -for (var i = 0; i < loop_count; i++) { - assertArrayEquals(['xxx'], new Array('xxx')); - assertArrayEquals(['xxx'], Array('xxx')); - assertArrayEquals([true], new Array(true)); - assertArrayEquals([false], Array(false)); - assertArrayEquals([{a:1}], new Array({a:1})); - assertArrayEquals([{b:2}], Array({b:2})); -} - - -assertThrows('new Array(3.14)'); -assertThrows('Array(2.72)'); - -// Make sure that throws occur in the context of the Array function. -var b = Realm.create(); -var bArray = Realm.eval(b, "Array"); -var bError = Realm.eval(b, "RangeError"); - -function verifier(array, error) { - try { - new array(3.14); - } catch(e) { - return e.__proto__ === error.__proto__; - } - assertTrue(false); // should never get here. -} - - -assertTrue(verifier(Array, RangeError())); -assertTrue(verifier(bArray, bError())); -assertFalse(verifier(Array, bError())); -assertFalse(verifier(bArray, RangeError())); diff --git a/implementation-contributed/v8/mjsunit/array-elements-from-array-prototype-chain.js b/implementation-contributed/v8/mjsunit/array-elements-from-array-prototype-chain.js deleted file mode 100644 index edbeb2a64ed..00000000000 --- a/implementation-contributed/v8/mjsunit/array-elements-from-array-prototype-chain.js +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -//////////////////////////////////////////////////////////////////////// -// Tests below verify that elements set on Array.prototype's proto propagate -// for various Array.prototype functions (like unshift, shift, etc.) -// If add any new tests here, consider adding them to all other files: -// array-elements-from-array-prototype.js -// array-elements-from-array-prototype-chain.js -// array-elements-from-object-prototype.js -// those ideally should be identical modulo host of elements and -// the way elements introduced. -// -// Note: they are put into a separate file as we need maximally clean -// VM setup---some optimizations might be already turned off in -// 'dirty' VM. -//////////////////////////////////////////////////////////////////////// - -var at3 = '@3' -var at7 = '@7' - -Array.prototype.__proto__ = {3: at3}; -Array.prototype.__proto__.__proto__ = {7: at7}; - -var a = new Array(13) - -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) - -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) - -assertEquals(undefined, a.shift(), 'hole should be returned as undefined') -// Side-effects: Array.prototype[3] percolates into a[2] and Array.prototype[7[ -// into a[6], still visible at the corresponding indices. - -assertEquals(at3, a[2]) -assertTrue(a.hasOwnProperty(2)) -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) - -assertEquals(at7, a[6]) -assertTrue(a.hasOwnProperty(6)) -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) - -a.unshift('foo', 'bar') -// Side-effects: Array.prototype[3] now percolates into a[5] and Array.prototype[7] -// into a[9]. - -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) -assertEquals(at3, a[4]) -assertTrue(a.hasOwnProperty(4)) -assertEquals(at3, a[5]) -assertTrue(a.hasOwnProperty(5)) - -assertEquals(undefined, a[6]) -assertFalse(a.hasOwnProperty(6)) - -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) -assertEquals(at7, a[8]) -assertTrue(a.hasOwnProperty(8)) -assertEquals(at7, a[9]) -assertTrue(a.hasOwnProperty(9)) - -var sliced = a.slice(3, 10) -// Slice must keep intact a and reify holes at indices 0--2 and 4--6. - -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) -assertEquals(at3, a[4]) -assertTrue(a.hasOwnProperty(4)) -assertEquals(at3, a[5]) -assertTrue(a.hasOwnProperty(5)) - -assertEquals(undefined, a[6]) -assertFalse(a.hasOwnProperty(6)) - -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) -assertEquals(at7, a[8]) -assertTrue(a.hasOwnProperty(8)) -assertEquals(at7, a[9]) -assertTrue(a.hasOwnProperty(9)) - -assertEquals(at3, sliced[0]) -assertTrue(sliced.hasOwnProperty(0)) -assertEquals(at3, sliced[1]) -assertTrue(sliced.hasOwnProperty(1)) -assertEquals(at3, sliced[2]) -assertTrue(sliced.hasOwnProperty(2)) - -// Note: sliced[3] comes directly from Array.prototype[3] -assertEquals(at3, sliced[3]); -assertFalse(sliced.hasOwnProperty(3)) - -assertEquals(at7, sliced[4]) -assertTrue(sliced.hasOwnProperty(4)) -assertEquals(at7, sliced[5]) -assertTrue(sliced.hasOwnProperty(5)) -assertEquals(at7, sliced[6]) -assertTrue(sliced.hasOwnProperty(6)) - - -// Splice is too complicated the operation, start afresh. - -// Shrking array. -var a0 = [0, 1, , , 4, 5, , , , 9] -var result = a0.splice(4, 1) -// Side-effects: everything before 4 is kept intact: - -assertEquals(0, a0[0]) -assertTrue(a0.hasOwnProperty(0)) -assertEquals(1, a0[1]) -assertTrue(a0.hasOwnProperty(1)) -assertEquals(undefined, a0[2]) -assertFalse(a0.hasOwnProperty(2)) -assertEquals(at3, a0[3]) -assertFalse(a0.hasOwnProperty(3)) - -// 4 and above shifted left by one reifying at7 into a0[6] and keeping -// a hole at a0[7] - -assertEquals(5, a0[4]) -assertTrue(a0.hasOwnProperty(4)) -assertEquals(undefined, a0[5]) -assertFalse(a0.hasOwnProperty(5)) -assertEquals(at7, a0[6]) -assertTrue(a0.hasOwnProperty(6)) -assertEquals(at7, a0[7]) -assertFalse(a0.hasOwnProperty(7)) -assertEquals(9, a0[8]) -assertTrue(a0.hasOwnProperty(8)) - -// Growing array. -var a1 = [0, 1, , , 4, 5, , , , 9] -var result = a1.splice(4, 0, undefined) -// Side-effects: everything before 4 is kept intact: - -assertEquals(0, a1[0]) -assertTrue(a1.hasOwnProperty(0)) -assertEquals(1, a1[1]) -assertTrue(a1.hasOwnProperty(1)) -assertEquals(undefined, a1[2]) -assertFalse(a1.hasOwnProperty(2)) -assertEquals(at3, a1[3]) -assertFalse(a1.hasOwnProperty(3)) - -// Now owned undefined resides at 4 and rest is shifted right by one -// reifying at7 into a0[8] and keeping a hole at a0[7]. - -assertEquals(undefined, a1[4]) -assertTrue(a1.hasOwnProperty(4)) -assertEquals(4, a1[5]) -assertTrue(a1.hasOwnProperty(5)) -assertEquals(5, a1[6]) -assertTrue(a1.hasOwnProperty(6)) -assertEquals(at7, a1[7]) -assertFalse(a1.hasOwnProperty(7)) -assertEquals(at7, a1[8]) -assertTrue(a1.hasOwnProperty(8)) -assertEquals(undefined, a1[9]) -assertFalse(a1.hasOwnProperty(9)) -assertEquals(9, a1[10]) -assertTrue(a1.hasOwnProperty(10)) diff --git a/implementation-contributed/v8/mjsunit/array-elements-from-array-prototype.js b/implementation-contributed/v8/mjsunit/array-elements-from-array-prototype.js deleted file mode 100644 index b89cdfa1dfa..00000000000 --- a/implementation-contributed/v8/mjsunit/array-elements-from-array-prototype.js +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -//////////////////////////////////////////////////////////////////////// -// Tests below verify that elements set on Array.prototype propagate -// for various Array.prototype functions (like unshift, shift, etc.) -// If add any new tests here, consider adding them to all other files: -// array-elements-from-array-prototype.js -// array-elements-from-array-prototype-chain.js -// array-elements-from-object-prototype.js -// those ideally should be identical modulo host of elements and -// the way elements introduced. -// -// Note: they are put into a separate file as we need maximally clean -// VM setup---some optimizations might be already turned off in -// 'dirty' VM. -//////////////////////////////////////////////////////////////////////// - -var at3 = '@3' -var at7 = '@7' - -Array.prototype[3] = at3 -Array.prototype[7] = at7 - -var a = new Array(13) - -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) - -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) - -assertEquals(undefined, a.shift(), 'hole should be returned as undefined') -// Side-effects: Array.prototype[3] percolates into a[2] and Array.prototype[7[ -// into a[6], still visible at the corresponding indices. - -assertEquals(at3, a[2]) -assertTrue(a.hasOwnProperty(2)) -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) - -assertEquals(at7, a[6]) -assertTrue(a.hasOwnProperty(6)) -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) - -a.unshift('foo', 'bar') -// Side-effects: Array.prototype[3] now percolates into a[5] and Array.prototype[7] -// into a[9]. - -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) -assertEquals(at3, a[4]) -assertTrue(a.hasOwnProperty(4)) -assertEquals(at3, a[5]) -assertTrue(a.hasOwnProperty(5)) - -assertEquals(undefined, a[6]) -assertFalse(a.hasOwnProperty(6)) - -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) -assertEquals(at7, a[8]) -assertTrue(a.hasOwnProperty(8)) -assertEquals(at7, a[9]) -assertTrue(a.hasOwnProperty(9)) - -var sliced = a.slice(3, 10) -// Slice must keep intact a and reify holes at indices 0--2 and 4--6. - -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) -assertEquals(at3, a[4]) -assertTrue(a.hasOwnProperty(4)) -assertEquals(at3, a[5]) -assertTrue(a.hasOwnProperty(5)) - -assertEquals(undefined, a[6]) -assertFalse(a.hasOwnProperty(6)) - -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) -assertEquals(at7, a[8]) -assertTrue(a.hasOwnProperty(8)) -assertEquals(at7, a[9]) -assertTrue(a.hasOwnProperty(9)) - -assertEquals(at3, sliced[0]) -assertTrue(sliced.hasOwnProperty(0)) -assertEquals(at3, sliced[1]) -assertTrue(sliced.hasOwnProperty(1)) -assertEquals(at3, sliced[2]) -assertTrue(sliced.hasOwnProperty(2)) - -// Note: sliced[3] comes directly from Array.prototype[3] -assertEquals(at3, sliced[3]); -assertFalse(sliced.hasOwnProperty(3)) - -assertEquals(at7, sliced[4]) -assertTrue(sliced.hasOwnProperty(4)) -assertEquals(at7, sliced[5]) -assertTrue(sliced.hasOwnProperty(5)) -assertEquals(at7, sliced[6]) -assertTrue(sliced.hasOwnProperty(6)) - - -// Splice is too complicated the operation, start afresh. - -// Shrking array. -var a0 = [0, 1, , , 4, 5, , , , 9] -var result = a0.splice(4, 1) -// Side-effects: everything before 4 is kept intact: - -assertEquals(0, a0[0]) -assertTrue(a0.hasOwnProperty(0)) -assertEquals(1, a0[1]) -assertTrue(a0.hasOwnProperty(1)) -assertEquals(undefined, a0[2]) -assertFalse(a0.hasOwnProperty(2)) -assertEquals(at3, a0[3]) -assertFalse(a0.hasOwnProperty(3)) - -// 4 and above shifted left by one reifying at7 into a0[6] and keeping -// a hole at a0[7] - -assertEquals(5, a0[4]) -assertTrue(a0.hasOwnProperty(4)) -assertEquals(undefined, a0[5]) -assertFalse(a0.hasOwnProperty(5)) -assertEquals(at7, a0[6]) -assertTrue(a0.hasOwnProperty(6)) -assertEquals(at7, a0[7]) -assertFalse(a0.hasOwnProperty(7)) -assertEquals(9, a0[8]) -assertTrue(a0.hasOwnProperty(8)) - -// Growing array. -var a1 = [0, 1, , , 4, 5, , , , 9] -var result = a1.splice(4, 0, undefined) -// Side-effects: everything before 4 is kept intact: - -assertEquals(0, a1[0]) -assertTrue(a1.hasOwnProperty(0)) -assertEquals(1, a1[1]) -assertTrue(a1.hasOwnProperty(1)) -assertEquals(undefined, a1[2]) -assertFalse(a1.hasOwnProperty(2)) -assertEquals(at3, a1[3]) -assertFalse(a1.hasOwnProperty(3)) - -// Now owned undefined resides at 4 and rest is shifted right by one -// reifying at7 into a0[8] and keeping a hole at a0[7]. - -assertEquals(undefined, a1[4]) -assertTrue(a1.hasOwnProperty(4)) -assertEquals(4, a1[5]) -assertTrue(a1.hasOwnProperty(5)) -assertEquals(5, a1[6]) -assertTrue(a1.hasOwnProperty(6)) -assertEquals(at7, a1[7]) -assertFalse(a1.hasOwnProperty(7)) -assertEquals(at7, a1[8]) -assertTrue(a1.hasOwnProperty(8)) -assertEquals(undefined, a1[9]) -assertFalse(a1.hasOwnProperty(9)) -assertEquals(9, a1[10]) -assertTrue(a1.hasOwnProperty(10)) diff --git a/implementation-contributed/v8/mjsunit/array-elements-from-object-prototype.js b/implementation-contributed/v8/mjsunit/array-elements-from-object-prototype.js deleted file mode 100644 index a6ad0ee4ed3..00000000000 --- a/implementation-contributed/v8/mjsunit/array-elements-from-object-prototype.js +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -//////////////////////////////////////////////////////////////////////// -// Tests below verify that elements set on Object.prototype propagate -// for various Array.prototype functions (like unshift, shift, etc.) -// If add any new tests here, consider adding them to all other files: -// array-elements-from-array-prototype.js -// array-elements-from-array-prototype-chain.js -// array-elements-from-object-prototype.js -// those ideally should be identical modulo host of elements and -// the way elements introduced. -// -// Note: they are put into a separate file as we need maximally clean -// VM setup---some optimizations might be already turned off in -// 'dirty' VM. -//////////////////////////////////////////////////////////////////////// - -var at3 = '@3' -var at7 = '@7' - -Object.prototype[3] = at3 -Object.prototype[7] = at7 - -var a = new Array(13) - -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) - -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) - -assertEquals(undefined, a.shift(), 'hole should be returned as undefined') -// Side-effects: Array.prototype[3] percolates into a[2] and Array.prototype[7[ -// into a[6], still visible at the corresponding indices. - -assertEquals(at3, a[2]) -assertTrue(a.hasOwnProperty(2)) -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) - -assertEquals(at7, a[6]) -assertTrue(a.hasOwnProperty(6)) -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) - -a.unshift('foo', 'bar') -// Side-effects: Array.prototype[3] now percolates into a[5] and Array.prototype[7] -// into a[9]. - -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) -assertEquals(at3, a[4]) -assertTrue(a.hasOwnProperty(4)) -assertEquals(at3, a[5]) -assertTrue(a.hasOwnProperty(5)) - -assertEquals(undefined, a[6]) -assertFalse(a.hasOwnProperty(6)) - -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) -assertEquals(at7, a[8]) -assertTrue(a.hasOwnProperty(8)) -assertEquals(at7, a[9]) -assertTrue(a.hasOwnProperty(9)) - -var sliced = a.slice(3, 10) -// Slice must keep intact a and reify holes at indices 0--2 and 4--6. - -assertEquals(at3, a[3]) -assertFalse(a.hasOwnProperty(3)) -assertEquals(at3, a[4]) -assertTrue(a.hasOwnProperty(4)) -assertEquals(at3, a[5]) -assertTrue(a.hasOwnProperty(5)) - -assertEquals(undefined, a[6]) -assertFalse(a.hasOwnProperty(6)) - -assertEquals(at7, a[7]) -assertFalse(a.hasOwnProperty(7)) -assertEquals(at7, a[8]) -assertTrue(a.hasOwnProperty(8)) -assertEquals(at7, a[9]) -assertTrue(a.hasOwnProperty(9)) - -assertEquals(at3, sliced[0]) -assertTrue(sliced.hasOwnProperty(0)) -assertEquals(at3, sliced[1]) -assertTrue(sliced.hasOwnProperty(1)) -assertEquals(at3, sliced[2]) -assertTrue(sliced.hasOwnProperty(2)) - -// Note: sliced[3] comes directly from Array.prototype[3] -assertEquals(at3, sliced[3]); -assertFalse(sliced.hasOwnProperty(3)) - -assertEquals(at7, sliced[4]) -assertTrue(sliced.hasOwnProperty(4)) -assertEquals(at7, sliced[5]) -assertTrue(sliced.hasOwnProperty(5)) -assertEquals(at7, sliced[6]) -assertTrue(sliced.hasOwnProperty(6)) - - -// Splice is too complicated the operation, start afresh. - -// Shrking array. -var a0 = [0, 1, , , 4, 5, , , , 9] -var result = a0.splice(4, 1) -// Side-effects: everything before 4 is kept intact: - -assertEquals(0, a0[0]) -assertTrue(a0.hasOwnProperty(0)) -assertEquals(1, a0[1]) -assertTrue(a0.hasOwnProperty(1)) -assertEquals(undefined, a0[2]) -assertFalse(a0.hasOwnProperty(2)) -assertEquals(at3, a0[3]) -assertFalse(a0.hasOwnProperty(3)) - -// 4 and above shifted left by one reifying at7 into a0[6] and keeping -// a hole at a0[7] - -assertEquals(5, a0[4]) -assertTrue(a0.hasOwnProperty(4)) -assertEquals(undefined, a0[5]) -assertFalse(a0.hasOwnProperty(5)) -assertEquals(at7, a0[6]) -assertTrue(a0.hasOwnProperty(6)) -assertEquals(at7, a0[7]) -assertFalse(a0.hasOwnProperty(7)) -assertEquals(9, a0[8]) -assertTrue(a0.hasOwnProperty(8)) - -// Growing array. -var a1 = [0, 1, , , 4, 5, , , , 9] -var result = a1.splice(4, 0, undefined) -// Side-effects: everything before 4 is kept intact: - -assertEquals(0, a1[0]) -assertTrue(a1.hasOwnProperty(0)) -assertEquals(1, a1[1]) -assertTrue(a1.hasOwnProperty(1)) -assertEquals(undefined, a1[2]) -assertFalse(a1.hasOwnProperty(2)) -assertEquals(at3, a1[3]) -assertFalse(a1.hasOwnProperty(3)) - -// Now owned undefined resides at 4 and rest is shifted right by one -// reifying at7 into a0[8] and keeping a hole at a0[7]. - -assertEquals(undefined, a1[4]) -assertTrue(a1.hasOwnProperty(4)) -assertEquals(4, a1[5]) -assertTrue(a1.hasOwnProperty(5)) -assertEquals(5, a1[6]) -assertTrue(a1.hasOwnProperty(6)) -assertEquals(at7, a1[7]) -assertFalse(a1.hasOwnProperty(7)) -assertEquals(at7, a1[8]) -assertTrue(a1.hasOwnProperty(8)) -assertEquals(undefined, a1[9]) -assertFalse(a1.hasOwnProperty(9)) -assertEquals(9, a1[10]) -assertTrue(a1.hasOwnProperty(10)) diff --git a/implementation-contributed/v8/mjsunit/array-feedback.js b/implementation-contributed/v8/mjsunit/array-feedback.js deleted file mode 100644 index 021505d4490..00000000000 --- a/implementation-contributed/v8/mjsunit/array-feedback.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --opt --no-always-opt - -// Verify that cross context calls work -(function (){ - var realmA = Realm.current(); - var realmB = Realm.create(); - assertEquals(0, realmA); - assertEquals(1, realmB); - - function instanceof_check(type) { - assertTrue(type() instanceof type); - assertTrue(type(5) instanceof type); - assertTrue(type(1,2,3) instanceof type); - } - - var realmBArray = Realm.eval(realmB, "Array"); - instanceof_check(Array); - instanceof_check(Array); - instanceof_check(Array); - instanceof_check(realmBArray); - instanceof_check(realmBArray); - instanceof_check(realmBArray); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-foreach.js b/implementation-contributed/v8/mjsunit/array-foreach.js deleted file mode 100644 index 0e34c03422b..00000000000 --- a/implementation-contributed/v8/mjsunit/array-foreach.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = [20, 21, 22, 23]; -a.__proto__ = [10, 11, 12, 13]; - -var values = []; -var indices = []; -function callback(value, index, object) { - object.length = 2; - values.push(value); - indices.push(index); -} -a.forEach(callback); -assertEquals([20, 21, 12, 13], values); -assertEquals([0, 1, 2, 3], indices); diff --git a/implementation-contributed/v8/mjsunit/array-from-large-set.js b/implementation-contributed/v8/mjsunit/array-from-large-set.js deleted file mode 100644 index cff3b5a774f..00000000000 --- a/implementation-contributed/v8/mjsunit/array-from-large-set.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const n = 130000; - -{ - let x = new Set(); - for (let i = 0; i < n; ++i) x.add(i); - let a = Array.from(x); -} diff --git a/implementation-contributed/v8/mjsunit/array-functions-prototype-misc.js b/implementation-contributed/v8/mjsunit/array-functions-prototype-misc.js deleted file mode 100644 index 0aff0a23045..00000000000 --- a/implementation-contributed/v8/mjsunit/array-functions-prototype-misc.js +++ /dev/null @@ -1,370 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * @fileoverview Test splice, shift, unshift, slice and join on small - * and large arrays. Some of these methods are specified such that they - * should work on other objects too, so we test that too. - */ - -var LARGE = 40000; -var VERYLARGE = 40000; - -var fourhundredth = LARGE/400; - -function PseudoArray() { -}; - -for (var use_real_arrays = 0; use_real_arrays <= 1; use_real_arrays++) { - var poses = [0, 140, 20000]; - var the_prototype; - var new_function; - var push_function; - var concat_function; - var slice_function; - var splice_function; - var splice_function_2; - var unshift_function; - var unshift_function_2; - var shift_function; - if (use_real_arrays) { - new_function = function(length) { - return new Array(length); - }; - the_prototype = Array.prototype; - push_function = function(array, elt) { - return array.push(elt); - }; - concat_function = function(array, other) { - return array.concat(other); - }; - slice_function = function(array, start, len) { - return array.slice(start, len); - }; - splice_function = function(array, start, len) { - return array.splice(start, len); - }; - splice_function_2 = function(array, start, len, elt) { - return array.splice(start, len, elt); - }; - unshift_function = function(array, elt) { - return array.unshift(elt); - }; - unshift_function_2 = function(array, elt1, elt2) { - return array.unshift(elt1, elt2); - }; - shift_function = function(array) { - return array.shift(); - }; - } else { - // Don't run largest size on non-arrays or we'll be here for ever. - poses.pop(); - new_function = function(length) { - var obj = new PseudoArray(); - obj.length = length; - return obj; - }; - the_prototype = PseudoArray.prototype; - push_function = function(array, elt) { - array[array.length] = elt; - array.length++; - }; - concat_function = function(array, other) { - return Array.prototype.concat.call(array, other); - }; - slice_function = function(array, start, len) { - return Array.prototype.slice.call(array, start, len); - }; - splice_function = function(array, start, len) { - return Array.prototype.splice.call(array, start, len); - }; - splice_function_2 = function(array, start, len, elt) { - return Array.prototype.splice.call(array, start, len, elt); - }; - unshift_function = function(array, elt) { - return Array.prototype.unshift.call(array, elt); - }; - unshift_function_2 = function(array, elt1, elt2) { - return Array.prototype.unshift.call(array, elt1, elt2); - }; - shift_function = function(array) { - return Array.prototype.shift.call(array); - }; - } - - for (var pos_pos = 0; pos_pos < poses.length; pos_pos++) { - var pos = poses[pos_pos]; - if (pos > 100) { - var a = new_function(pos); - assertEquals(pos, a.length); - push_function(a, 'foo'); - assertEquals(pos + 1, a.length); - var b = ['bar']; - // Delete a huge number of holes. - var c = splice_function(a, 10, pos - 20); - assertEquals(pos - 20, c.length); - assertEquals(21, a.length); - } - - // Add a numeric property to the prototype of the array class. This - // allows us to test some borderline stuff relative to the standard. - the_prototype["" + (pos + 1)] = 'baz'; - - if (use_real_arrays) { - // It seems quite clear from ECMAScript spec 15.4.4.5. Just call Get on - // every integer in the range. - // IE, Safari get this right. - // FF, Opera get this wrong. - var a = ['zero', ,'two']; - if (pos == 0) { - assertEquals("zero,baz,two", a.join(",")); - } - - // Concat only applies to real arrays, unlike most of the other methods. - var a = new_function(pos); - push_function(a, "con"); - assertEquals("con", a[pos]); - assertEquals(pos + 1, a.length); - var b = new_function(0); - push_function(b, "cat"); - assertEquals("cat", b[0]); - var ab = concat_function(a, b); - assertEquals("con", ab[pos]); - assertEquals(pos + 2, ab.length); - assertEquals("cat", ab[pos + 1]); - var ba = concat_function(b, a); - assertEquals("con", ba[pos + 1]); - assertEquals(pos + 2, ba.length); - assertEquals("cat", ba[0]); - - // Join with '' as separator. - var join = a.join(''); - assertEquals("con", join); - join = b.join(''); - assertEquals("cat", join); - join = ab.join(''); - assertEquals("concat", join); - join = ba.join(''); - assertEquals("catcon", join); - } - - a = new_function(pos); - push_function(a, 'zero'); - push_function(a, void 0); - push_function(a, 'two'); - - // Splice works differently from join. - // IE, Safari get this wrong. - // FF, Opera get this right. - // 15.4.4.12 line 24 says the object itself has to have the property... - var zero = splice_function(a, pos, 1); - assertEquals("undefined", typeof(a[pos])); - assertEquals("two", a[pos+1], "pos1:" + pos); - assertEquals(pos + 2, a.length, "a length"); - assertEquals(1, zero.length, "zero length"); - assertEquals("zero", zero[0]); - - // 15.4.4.12 line 41 says the object itself has to have the property... - a = new_function(pos); - push_function(a, 'zero'); - push_function(a, void 0); - push_function(a, 'two'); - var nothing = splice_function_2(a, pos, 0, 'minus1'); - assertEquals("minus1", a[pos]); - assertEquals("zero", a[pos+1]); - assertEquals("undefined", typeof(a[pos+2]), "toot!"); - assertEquals("two", a[pos+3], "pos3"); - assertEquals(pos + 4, a.length); - assertEquals(1, zero.length); - assertEquals("zero", zero[0]); - - // 15.4.4.12 line 10 says the object itself has to have the property... - a = new_function(pos); - push_function(a, 'zero'); - push_function(a, void 0); - push_function(a, 'two'); - var one = splice_function(a, pos + 1, 1); - assertEquals("", one.join(",")); - assertEquals(pos + 2, a.length); - assertEquals("zero", a[pos]); - assertEquals("two", a[pos+1]); - - // Set things back to the way they were. - the_prototype[pos + 1] = undefined; - - // Unshift. - var a = new_function(pos); - push_function(a, "foo"); - assertEquals("foo", a[pos]); - assertEquals(pos + 1, a.length); - unshift_function(a, "bar"); - assertEquals("foo", a[pos+1]); - assertEquals(pos + 2, a.length); - assertEquals("bar", a[0]); - unshift_function_2(a, "baz", "boo"); - assertEquals("foo", a[pos+3]); - assertEquals(pos + 4, a.length); - assertEquals("baz", a[0]); - assertEquals("boo", a[1]); - assertEquals("bar", a[2]); - - // Shift. - // Skip VERYLARGE arrays, as we removed sparse support for shift. - // Slice is also skipped, since it relies on the "shift" test to be run. - if (pos < VERYLARGE) { - var baz = shift_function(a); - assertEquals("baz", baz); - assertEquals("boo", a[0]); - assertEquals(pos + 3, a.length); - assertEquals("foo", a[pos + 2]); - - // Slice. - var bar = slice_function(a, 1, 0); // don't throw an exception please. - bar = slice_function(a, 1, 2); - assertEquals("bar", bar[0]); - assertEquals(1, bar.length); - assertEquals("bar", a[1]); - } - } -} - -// Lets see if performance is reasonable. - -var a = new Array(LARGE + 10); -for (var i = 0; i < a.length; i += 1000) { - a[i] = i; -} - -// Take something near the end of the array. -for (var i = 0; i < 10; i++) { - var top = a.splice(LARGE, 5); - assertEquals(5, top.length); - assertEquals(LARGE, top[0]); - assertEquals("undefined", typeof(top[1])); - assertEquals(LARGE + 5, a.length); - a.splice(LARGE, 0, LARGE); - a.length = LARGE + 10; -} - -var a = new Array(LARGE + 10); -for (var i = 0; i < a.length; i += fourhundredth) { - a[i] = i; -} - -// Take something near the middle of the array. -for (var i = 0; i < 10; i++) { - var top = a.splice(LARGE >> 1, 5); - assertEquals(5, top.length); - assertEquals(LARGE >> 1, top[0]); - assertEquals("undefined", typeof(top[1])); - assertEquals(LARGE + 5, a.length); - a.splice(LARGE >> 1, 0, LARGE >> 1, void 0, void 0, void 0, void 0); -} - - -// Test http://b/issue?id=1202711 -arr = [0]; -arr.length = 2; -Array.prototype[1] = 1; -assertEquals(1, arr.pop()); -assertEquals(0, arr.pop()); -Array.prototype[1] = undefined; - -// Test http://code.google.com/p/chromium/issues/detail?id=21860 -Array.prototype.push.apply([], [1].splice(0, -(-1 % 5))); - - -// Check that the Array functions work also properly on non-Arrays -var receiver; - -receiver = 'a string'; -assertThrows(function(){ - Array.prototype.push.call(receiver); -}); - -receiver = 0; -assertEquals(undefined, receiver.length); -assertEquals(0, Array.prototype.push.call(receiver)); -assertEquals(1, Array.prototype.push.call(receiver, 'first')); -assertEquals(undefined, receiver.length); - -receiver = {}; -assertEquals(undefined, receiver.length); -assertEquals(0, Array.prototype.push.call(receiver)); -assertEquals(0, Array.prototype.push.call(receiver)); -assertEquals(0, receiver.length); -assertEquals(1, Array.prototype.push.call(receiver, 'first')); -assertEquals(1, receiver.length); -assertEquals('first', receiver[0]); -assertEquals(2, Array.prototype.push.call(receiver, 'second')); -assertEquals(2, receiver.length); -assertEquals('first', receiver[0]); -assertEquals('second', receiver[1]); - -receiver = {'length': 10}; -assertEquals(10, Array.prototype.push.call(receiver)); -assertEquals(10, receiver.length); -assertEquals(11, Array.prototype.push.call(receiver, 'first')); -assertEquals(11, receiver.length); -assertEquals('first', receiver[10]); -assertEquals(13, Array.prototype.push.call(receiver, 'second', 'third')); -assertEquals(13, receiver.length); -assertEquals('first', receiver[10]); -assertEquals('second', receiver[11]); -assertEquals('third', receiver[12]); - -receiver = { - get length() { return 10; }, - set length(l) {} -}; -assertEquals(10, Array.prototype.push.call(receiver)); -assertEquals(10, receiver.length); -assertEquals(11, Array.prototype.push.call(receiver, 'first')); -assertEquals(10, receiver.length); -assertEquals('first', receiver[10]); -assertEquals(12, Array.prototype.push.call(receiver, 'second', 'third')); -assertEquals(10, receiver.length); -assertEquals('second', receiver[10]); -assertEquals('third', receiver[11]); - -// readonly length -receiver = { - get length() { return 10; }, -}; -assertThrows(function(){ - Array.prototype.push.call(receiver); -}); - -receiver = { - set length(l) {} -}; -assertEquals(0, Array.prototype.push.call(receiver)); -assertEquals(undefined, receiver.length); -assertEquals(1, Array.prototype.push.call(receiver, 'first')); -assertEquals(undefined, receiver.length); -assertEquals(2, Array.prototype.push.call(receiver, 'third', 'second')); -assertEquals(undefined, receiver.length); diff --git a/implementation-contributed/v8/mjsunit/array-functions-prototype.js b/implementation-contributed/v8/mjsunit/array-functions-prototype.js deleted file mode 100644 index b68ee734c5b..00000000000 --- a/implementation-contributed/v8/mjsunit/array-functions-prototype.js +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This file contains a number of tests of array functions and their -// interaction with properties in the prototype chain. -// -// The behavior of SpiderMonkey is slightly different for arrays (see -// below). Our behavior is consistent and matches the bahavior of -// KJS. - -var proto = { length:3, 0:'zero', 1:'one', 2:'two' } -function constructor() {}; -constructor.prototype = proto; - -// Set elements on the array prototype. -Array.prototype[0] = 'zero'; -Array.prototype[1] = 'one'; -Array.prototype[2] = 'two'; - -// ---------------------------------------------------------------------- -// Helper functions. -// ---------------------------------------------------------------------- -function assertHasOwnProperties(object, limit) { - for (var i = 0; i < limit; i++) { - assertTrue(object.hasOwnProperty(i)); - } -} - - -// ---------------------------------------------------------------------- -// shift. -// ---------------------------------------------------------------------- - -function runTest1() { - var nonArray = new constructor(); - var array = ['zero', , 'two']; - // Shift away the zero. - assertEquals('zero', array.shift()); - assertEquals('zero', Array.prototype.shift.call(nonArray)); - // Check that the local object has properties 0 and 1 with the right - // values. - assertEquals(2, array.length); - assertEquals(2, nonArray.length); - assertHasOwnProperties(array, 2); - assertHasOwnProperties(nonArray, 2); - // Note: Spidermonkey is inconsistent here. It treats arrays - // differently from non-arrays. It only consults the prototype for - // non-arrays. Therefore, array[0] is undefined in Spidermonkey and - // 'one' in V8 and KJS. - assertEquals('one', array[0]); - assertEquals('one', nonArray[0]); - assertEquals('two', array[1]); - assertEquals('two', nonArray[1]); - // Get index 2 from the prototype. - assertEquals('two', array[2]); - assertEquals('two', nonArray[2]); -} - -runTest1(); - -// ---------------------------------------------------------------------- -// unshift. -// ---------------------------------------------------------------------- - -runTest2 = function() { - var nonArray = new constructor(); - var array = ['zero', , 'two']; - // Unshift a new 'zero'. - assertEquals(4, array.unshift('zero')); - assertEquals(4, Array.prototype.unshift.call(nonArray, 'zero')); - // Check that the local object has properties 0 through 3 with the - // right values. - assertEquals(4, array.length); - assertEquals(4, nonArray.length); - assertHasOwnProperties(array, 4); - assertHasOwnProperties(nonArray, 4); - assertEquals('zero', array[0]); - assertEquals('zero', nonArray[0]); - assertEquals('zero', array[1]); - assertEquals('zero', nonArray[1]); - // Again Spidermonkey is inconsistent. array[2] is undefined - // instead of 'one'. - assertEquals('one', array[2]); - assertEquals('one', nonArray[2]); - assertEquals('two', array[3]); - assertEquals('two', nonArray[3]); -} - -runTest2(); - - -// ---------------------------------------------------------------------- -// splice -// ---------------------------------------------------------------------- - -runTest3 = function() { - var nonArray = new constructor(); - var array = ['zero', , 'two']; - // Delete the first element by splicing in nothing. - assertArrayEquals(['zero'], array.splice(0, 1)); - assertArrayEquals(['zero'], Array.prototype.splice.call(nonArray, 0, 1)); - // Check that the local object has properties 0 and 1 with the right - // values. - assertEquals(2, array.length); - assertEquals(2, nonArray.length); - assertHasOwnProperties(array, 2); - assertHasOwnProperties(nonArray, 2); - // Again Spidermonkey is inconsistent. array[0] is undefined - // instead of 'one'. - assertEquals('one', array[0]); - assertEquals('one', nonArray[0]); - assertEquals('two', array[1]); - assertEquals('two', nonArray[1]); - // Get index 2 from the prototype. - assertEquals('two', array[2]); - assertEquals('two', nonArray[2]); -}; - -runTest3(); - - -// ---------------------------------------------------------------------- -// slice -// ---------------------------------------------------------------------- - -runTest4 = function() { - var nonArray = new constructor(); - var array = ['zero', , 'two']; - // Again Spidermonkey is inconsistent. (array.slice(0, 3))[1] is - // undefined instead of 'one'. - assertArrayEquals(['zero', 'one', 'two'], array.slice(0, 3)); - assertArrayEquals(['zero', 'one', 'two'], Array.prototype.slice.call(nonArray, 0, 3)); -}; - -runTest4(); diff --git a/implementation-contributed/v8/mjsunit/array-indexing-receiver.js b/implementation-contributed/v8/mjsunit/array-indexing-receiver.js deleted file mode 100644 index 4c47a39216e..00000000000 --- a/implementation-contributed/v8/mjsunit/array-indexing-receiver.js +++ /dev/null @@ -1,634 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -// Ensure `Array.prototype.indexOf` functions correctly for numerous elements -// kinds, and various exotic receiver types, - -var kIterCount = 1; -var kTests = { - Array: { - PACKED_ELEMENTS() { - var r = /foo/; - var s = new String("bar"); - var p = new Proxy({}, {}); - var o = {}; - - var array = [r, s, p]; - assertTrue(%HasObjectElements(array)); - assertFalse(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(array.indexOf(p), 2); - assertEquals(array.indexOf(o), -1); - } - }, - - HOLEY_ELEMENTS() { - var r = /foo/; - var p = new Proxy({}, {}); - var o = {}; - - var array = [r, , p]; - assertTrue(%HasObjectElements(array)); - assertTrue(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(array.indexOf(p), 2); - assertEquals(array.indexOf(o), -1); - } - }, - - PACKED_SMI_ELEMENTS() { - var array = [0, 88, 9999, 1, -5, 7]; - assertTrue(%HasSmiElements(array)); - assertFalse(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(array.indexOf(9999), 2); - assertEquals(array.indexOf(-5), 4); - assertEquals(array.indexOf(-5.00001), -1); - assertEquals(array.indexOf(undefined), -1); - assertEquals(array.indexOf(NaN), -1); - } - }, - - HOLEY_SMI_ELEMENTS() { - var array = [49, , , 72, , , 67, -48]; - assertTrue(%HasSmiElements(array)); - assertTrue(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(array.indexOf(72), 3); - assertEquals(array.indexOf(-48), 7); - assertEquals(array.indexOf(72, 4), -1); - assertEquals(array.indexOf(undefined), -1); - assertEquals(array.indexOf(undefined, -2), -1); - assertEquals(array.indexOf(NaN), -1); - } - }, - - PACKED_DOUBLE_ELEMENTS() { - var array = [7.00000001, -13000.89412, 73451.4124, - 5824.48, 6.0000495, 48.3488, 44.0, 76.35, NaN, 78.4]; - assertTrue(%HasDoubleElements(array)); - assertFalse(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(array.indexOf(7.00000001), 0); - assertEquals(array.indexOf(7.00000001, 2), -1); - assertEquals(array.indexOf(NaN), -1); - assertEquals(array.indexOf(NaN, -1), -1); - assertEquals(array.indexOf(-13000.89412), 1); - assertEquals(array.indexOf(-13000.89412, -2), -1); - assertEquals(array.indexOf(undefined), -1); - } - }, - - HOLEY_DOUBLE_ELEMENTS() { - var array = [7.00000001, -13000.89412, , - 5824.48, , 48.3488, , NaN, , 78.4]; - assertTrue(%HasDoubleElements(array)); - assertTrue(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(array.indexOf(7.00000001), 0); - assertEquals(array.indexOf(7.00000001, 2), -1); - assertEquals(array.indexOf(NaN), -1); - assertEquals(array.indexOf(NaN, -2), -1); - assertEquals(array.indexOf(-13000.89412), 1); - assertEquals(array.indexOf(-13000.89412, -2), -1); - assertEquals(array.indexOf(undefined, -2), -1); - assertEquals(array.indexOf(undefined, -1), -1); - } - }, - - DICTIONARY_ELEMENTS() { - var array = []; - Object.defineProperty(array, 4, { get() { gc(); return NaN; } }); - Object.defineProperty(array, 7, { value: Function }); - - assertTrue(%HasDictionaryElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(array.indexOf(NaN), -1); - assertEquals(array.indexOf(NaN, -3), -1); - assertEquals(array.indexOf(Function), 7); - assertEquals(array.indexOf(undefined), -1); - assertEquals(array.indexOf(undefined, 7), -1); - } - }, - }, - - Object: { - PACKED_ELEMENTS() { - var r = /foo/; - var s = new String("bar"); - var p = new Proxy({}, {}); - var o = {}; - - var object = { 0: r, 1: s, 2: p, length: 3 }; - assertTrue(%HasObjectElements(object)); - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertFalse(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call(object, p), 2); - assertEquals(Array.prototype.indexOf.call(object, o), -1); - } - }, - - HOLEY_ELEMENTS() { - var r = /foo/; - var p = new Proxy({}, {}); - var o = {}; - - var object = { 0: r, 2: p, length: 3 }; - assertTrue(%HasObjectElements(object)); - assertTrue(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call(object, p), 2); - assertEquals(Array.prototype.indexOf.call(object, o), -1); - } - }, - - PACKED_SMI_ELEMENTS() { - var object = { 0: 0, 1: 88, 2: 9999, 3: 1, 4: -5, 5: 7, length: 6 }; - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertTrue(%HasSmiElements(object)); - // assertFalse(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call(object, 9999), 2); - assertEquals(Array.prototype.indexOf.call(object, -5), 4); - assertEquals(Array.prototype.indexOf.call(object, -5.00001), -1); - assertEquals(Array.prototype.indexOf.call(object, undefined), -1); - assertEquals(Array.prototype.indexOf.call(object, NaN), -1); - } - }, - - HOLEY_SMI_ELEMENTS() { - var object = { 0: 49, 3: 72, 6: 67, 7: -48, length: 8 }; - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertTrue(%HasSmiElements(object)); - // assertTrue(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call(object, 72), 3); - assertEquals(Array.prototype.indexOf.call(object, -48), 7); - assertEquals(Array.prototype.indexOf.call(object, 72, 4), -1); - assertEquals(Array.prototype.indexOf.call(object, undefined), -1); - assertEquals(Array.prototype.indexOf.call(object, undefined, -2), -1); - assertEquals(Array.prototype.indexOf.call(object, NaN), -1); - } - }, - - PACKED_DOUBLE_ELEMENTS() { - var object = { 0: 7.00000001, 1: -13000.89412, 2: 73451.4124, - 3: 5824.48, 4: 6.0000495, 5: 48.3488, 6: 44.0, 7: 76.35, - 8: NaN, 9: 78.4, length: 10 }; - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertTrue(%HasDoubleElements(object)); - // assertFalse(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call(object, 7.00000001), 0); - assertEquals(Array.prototype.indexOf.call(object, 7.00000001, 2), -1); - assertEquals(Array.prototype.indexOf.call(object, NaN), -1); - assertEquals(Array.prototype.indexOf.call(object, NaN, -1), -1); - assertEquals(Array.prototype.indexOf.call(object, -13000.89412), 1); - assertEquals(Array.prototype.indexOf.call(object, -13000.89412, -2), -1); - assertEquals(Array.prototype.indexOf.call(object, undefined), -1); - } - }, - - HOLEY_DOUBLE_ELEMENTS() { - var object = { 0: 7.00000001, 1: -13000.89412, 3: 5824.48, 5: 48.3488, - 7: NaN, 9: 78.4, length: 10 }; - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertTrue(%HasDoubleElements(object)); - // assertTrue(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call(object, 7.00000001), 0); - assertEquals(Array.prototype.indexOf.call(object, 7.00000001, 2), -1); - assertEquals(Array.prototype.indexOf.call(object, NaN), -1); - assertEquals(Array.prototype.indexOf.call(object, NaN, -2), -1); - assertEquals(Array.prototype.indexOf.call(object, -13000.89412), 1); - assertEquals(Array.prototype.indexOf.call(object, -13000.89412, -2), -1); - assertEquals(Array.prototype.indexOf.call(object, undefined, -2), -1); - assertEquals(Array.prototype.indexOf.call(object, undefined, -1), -1); - } - }, - - DICTIONARY_ELEMENTS() { - var object = { length: 8 }; - Object.defineProperty(object, 4, { get() { gc(); return NaN; } }); - Object.defineProperty(object, 7, { value: Function }); - - assertTrue(%HasDictionaryElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call(object, NaN), -1); - assertEquals(Array.prototype.indexOf.call(object, NaN, -3), -1); - assertEquals(Array.prototype.indexOf.call(object, Function), 7); - assertEquals(Array.prototype.indexOf.call(object, undefined), -1); - assertEquals(Array.prototype.indexOf.call(object, undefined, 7), -1); - } - - (function prototypeModifiedDuringAccessor() { - function O() { - return { - __proto__: {}, - get 0() { - gc(); - this.__proto__.__proto__ = { - get 1() { - gc(); - this[2] = "c"; - return "b"; - } - }; - return "a"; - }, - length: 3 - }; - } - - // Switch to slow path when first accessor modifies the prototype - assertEquals(Array.prototype.indexOf.call(O(), "a"), 0); - assertEquals(Array.prototype.indexOf.call(O(), "b"), 1); - assertEquals(Array.prototype.indexOf.call(O(), "c"), 2); - - // Avoid switching to slow path due to avoiding the accessor - assertEquals(Array.prototype.indexOf.call(O(), "c", 2), -1); - assertEquals(Array.prototype.indexOf.call(O(), "b", 1), -1); - assertEquals(Array.prototype.indexOf.call(O(), undefined, 1), 1); - }); - }, - }, - - String: { - FAST_STRING_ELEMENTS() { - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call("froyo", "y"), 3); - assertEquals(Array.prototype.indexOf.call("froyo", "y", -1), -1); - assertEquals(Array.prototype.indexOf.call("froyo", "y", -2), 3); - assertEquals(Array.prototype.indexOf.call("froyo", NaN), -1); - assertEquals(Array.prototype.indexOf.call("froyo", undefined), -1); - } - }, - - SLOW_STRING_ELEMENTS() { - var string = new String("froyo"); - - // Never accessible from A.p.indexOf as 'length' is not configurable - Object.defineProperty(string, 34, { value: NaN }); - Object.defineProperty(string, 12, { get() { return "nope" } }); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call("froyo", "y"), 3); - assertEquals(Array.prototype.indexOf.call("froyo", "y", -1), -1); - assertEquals(Array.prototype.indexOf.call("froyo", "y", -2), 3); - assertEquals(Array.prototype.indexOf.call(string, NaN), -1); - assertEquals(Array.prototype.indexOf.call(string, undefined), -1); - assertEquals(Array.prototype.indexOf.call(string, "nope"), -1); - } - }, - }, - - Arguments: { - FAST_SLOPPY_ARGUMENTS_ELEMENTS() { - var args = (function(a, b) { return arguments; })("foo", NaN, "bar"); - assertTrue(%HasSloppyArgumentsElements(args)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call(args, undefined), -1); - assertEquals(Array.prototype.indexOf.call(args, NaN), -1); - assertEquals(Array.prototype.indexOf.call(args, NaN, -1), -1); - assertEquals(Array.prototype.indexOf.call(args, "bar", -1), 2); - } - }, - - SLOW_SLOPPY_ARGUMENTS_ELEMENTS() { - var args = (function(a, a) { return arguments; })("foo", NaN, "bar"); - Object.defineProperty(args, 3, { get() { gc(); return "silver"; } }); - Object.defineProperty(args, "length", { value: 4 }); - assertTrue(%HasSloppyArgumentsElements(args)); - - for (var i = 0; i < kIterCount; ++i) { - assertEquals(Array.prototype.indexOf.call(args, undefined), -1); - assertEquals(Array.prototype.indexOf.call(args, NaN), -1); - assertEquals(Array.prototype.indexOf.call(args, NaN, -2), -1); - assertEquals(Array.prototype.indexOf.call(args, "bar", -2), 2); - assertEquals(Array.prototype.indexOf.call(args, "silver", -1), 3); - } - } - }, - - TypedArray: { - Int8Array() { - var array = new Int8Array([-129, 128, - NaN /* 0 */, +0 /* 0 */, -0 /* 0 */, - +Infinity /* 0 */, -Infinity /* 0 */, - 255 /* -1 */, 127 /* 127 */, -255 /* 1 */]); - assertEquals(Array.prototype.indexOf.call(array, -129), -1); - assertEquals(Array.prototype.indexOf.call(array, 128), -1); - - assertEquals(Array.prototype.indexOf.call(array, 0, 2), 2); - assertEquals(Array.prototype.indexOf.call(array, 0, 3), 3); - assertEquals(Array.prototype.indexOf.call(array, 0, 4), 4); - assertEquals(Array.prototype.indexOf.call(array, 0, 5), 5); - assertEquals(Array.prototype.indexOf.call(array, 0, 6), 6); - assertEquals(Array.prototype.indexOf.call(array, 0, 7), -1); - - assertEquals(Array.prototype.indexOf.call(array, -1, 7), 7); - assertEquals(Array.prototype.indexOf.call(array, -1, 8), -1); - - assertEquals(Array.prototype.indexOf.call(array, 127, 8), 8); - assertEquals(Array.prototype.indexOf.call(array, 127, 9), -1); - - assertEquals(Array.prototype.indexOf.call(array, 1, 9), 9); - }, - - Detached_Int8Array() { - var array = new Int8Array(10); - %ArrayBufferDetach(array.buffer); - assertEquals(Array.prototype.indexOf.call(array, 0), -1); - assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); - }, - - Uint8Array() { - var array = new Uint8Array([-1, 256, - NaN /* 0 */, +0 /* 0 */, -0 /* 0 */, - +Infinity /* 0 */, -Infinity /* 0 */, - 255 /* 255 */, 257 /* 1 */, -128 /* 128 */, - -2 /* 254 */]); - assertEquals(Array.prototype.indexOf.call(array, -1), -1); - assertEquals(Array.prototype.indexOf.call(array, 256), -1); - - assertEquals(Array.prototype.indexOf.call(array, 0, 2), 2); - assertEquals(Array.prototype.indexOf.call(array, 0, 3), 3); - assertEquals(Array.prototype.indexOf.call(array, 0, 4), 4); - assertEquals(Array.prototype.indexOf.call(array, 0, 5), 5); - assertEquals(Array.prototype.indexOf.call(array, 0, 6), 6); - assertEquals(Array.prototype.indexOf.call(array, 0, 7), -1); - - assertEquals(Array.prototype.indexOf.call(array, 255, 7), 7); - assertEquals(Array.prototype.indexOf.call(array, 255, 8), -1); - - assertEquals(Array.prototype.indexOf.call(array, 1, 8), 8); - assertEquals(Array.prototype.indexOf.call(array, 1, 9), -1); - - assertEquals(Array.prototype.indexOf.call(array, 128, 9), 9); - assertEquals(Array.prototype.indexOf.call(array, 128, 10), -1); - - assertEquals(Array.prototype.indexOf.call(array, 254, 10), 10); - }, - - Detached_Uint8Array() { - var array = new Uint8Array(10); - %ArrayBufferDetach(array.buffer); - assertEquals(Array.prototype.indexOf.call(array, 0), -1); - assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); - }, - - Uint8ClampedArray() { - var array = new Uint8ClampedArray([-1 /* 0 */, NaN /* 0 */, 256 /* 255 */, - 127.6 /* 128 */, 127.4 /* 127 */, - 121.5 /* 122 */, 124.5 /* 124 */]); - assertEquals(Array.prototype.indexOf.call(array, -1), -1); - assertEquals(Array.prototype.indexOf.call(array, 256), -1); - - assertEquals(Array.prototype.indexOf.call(array, 0), 0); - assertEquals(Array.prototype.indexOf.call(array, 0, 1), 1); - assertEquals(Array.prototype.indexOf.call(array, 255, 2), 2); - - assertEquals(Array.prototype.indexOf.call(array, 128, 3), 3); - assertEquals(Array.prototype.indexOf.call(array, 128, 4), -1); - - assertEquals(Array.prototype.indexOf.call(array, 127, 4), 4); - assertEquals(Array.prototype.indexOf.call(array, 127, 5), -1); - - assertEquals(Array.prototype.indexOf.call(array, 122, 5), 5); - assertEquals(Array.prototype.indexOf.call(array, 122, 6), -1); - - assertEquals(Array.prototype.indexOf.call(array, 124, 6), 6); - }, - - Detached_Uint8ClampedArray() { - var array = new Uint8ClampedArray(10); - %ArrayBufferDetach(array.buffer); - assertEquals(Array.prototype.indexOf.call(array, 0), -1); - assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); - }, - - Int16Array() { - var array = new Int16Array([-32769, 32768, - NaN /* 0 */, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFF /* -1 */, 30000 /* 30000 */, - 300000 /* -27680 */]); - assertEquals(Array.prototype.indexOf.call(array, -32769), -1); - assertEquals(Array.prototype.indexOf.call(array, 32768), -1); - - assertEquals(Array.prototype.indexOf.call(array, 0, 2), 2); - assertEquals(Array.prototype.indexOf.call(array, 0, 3), 3); - assertEquals(Array.prototype.indexOf.call(array, 0, 4), 4); - assertEquals(Array.prototype.indexOf.call(array, 0, 5), 5); - assertEquals(Array.prototype.indexOf.call(array, 0, 6), 6); - assertEquals(Array.prototype.indexOf.call(array, 0, 7), -1); - - assertEquals(Array.prototype.indexOf.call(array, -1, 7), 7); - assertEquals(Array.prototype.indexOf.call(array, -1, 8), -1); - - assertEquals(Array.prototype.indexOf.call(array, 30000, 8), 8); - assertEquals(Array.prototype.indexOf.call(array, 30000, 9), -1); - - assertEquals(Array.prototype.indexOf.call(array, -27680, 9), 9); - }, - - Detached_Int16Array() { - var array = new Int16Array(10); - %ArrayBufferDetach(array.buffer); - assertEquals(Array.prototype.indexOf.call(array, 0), -1); - assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); - }, - - Uint16Array() { - var array = new Uint16Array([-1, 65536, - NaN /* 0 */, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFF /* 65535 */, 300000 /* 37856 */, - 3000000 /* 50880 */]); - assertEquals(Array.prototype.indexOf.call(array, -1), -1); - assertEquals(Array.prototype.indexOf.call(array, 65536), -1); - - assertEquals(Array.prototype.indexOf.call(array, 0, 2), 2); - assertEquals(Array.prototype.indexOf.call(array, 0, 3), 3); - assertEquals(Array.prototype.indexOf.call(array, 0, 4), 4); - assertEquals(Array.prototype.indexOf.call(array, 0, 5), 5); - assertEquals(Array.prototype.indexOf.call(array, 0, 6), 6); - assertEquals(Array.prototype.indexOf.call(array, 0, 7), -1); - - assertEquals(Array.prototype.indexOf.call(array, 65535, 7), 7); - assertEquals(Array.prototype.indexOf.call(array, 65535, 8), -1); - - assertEquals(Array.prototype.indexOf.call(array, 37856, 8), 8); - assertEquals(Array.prototype.indexOf.call(array, 37856, 9), -1); - - assertEquals(Array.prototype.indexOf.call(array, 50880, 9), 9); - }, - - Detached_Uint16Array() { - var array = new Uint16Array(10); - %ArrayBufferDetach(array.buffer); - assertEquals(Array.prototype.indexOf.call(array, 0), -1); - assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); - }, - - Int32Array() { - var array = new Int32Array([-2147483649, 2147483648, - NaN /* 0 */, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFFFFFF /* -1 */, 4294968064 /* 768 */, - 4294959447 /* -7849 */]); - assertEquals(Array.prototype.indexOf.call(array, -2147483649), -1); - assertEquals(Array.prototype.indexOf.call(array, 2147483648), -1); - - assertEquals(Array.prototype.indexOf.call(array, 0.0, 2), 2); - assertEquals(Array.prototype.indexOf.call(array, 0.0, 3), 3); - assertEquals(Array.prototype.indexOf.call(array, 0, 4), 4); - assertEquals(Array.prototype.indexOf.call(array, 0, 5), 5); - assertEquals(Array.prototype.indexOf.call(array, 0.0, 6), 6); - assertEquals(Array.prototype.indexOf.call(array, 0.0, 7), -1); - - assertEquals(Array.prototype.indexOf.call(array, -1, 7), 7); - assertEquals(Array.prototype.indexOf.call(array, -1, 8), -1); - - assertEquals(Array.prototype.indexOf.call(array, 768, 8), 8); - assertEquals(Array.prototype.indexOf.call(array, 768, 9), -1); - - assertEquals(Array.prototype.indexOf.call(array, -7849, 9), 9); - }, - - Detached_Int32Array() { - var array = new Int32Array(10); - %ArrayBufferDetach(array.buffer); - assertEquals(Array.prototype.indexOf.call(array, 0), -1); - assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); - }, - - Uint32Array() { - var array = new Uint32Array([-1, 4294967296, - NaN /* 0 */, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFFFFFF /* 4294967295 */, - 4294968064 /* 768 */, - 4295079447 /* 112151 */]); - assertEquals(Array.prototype.indexOf.call(array, -1), -1); - assertEquals(Array.prototype.indexOf.call(array, 4294967296), -1); - - assertEquals(Array.prototype.indexOf.call(array, 0.0, 2), 2); - assertEquals(Array.prototype.indexOf.call(array, 0.0, 3), 3); - assertEquals(Array.prototype.indexOf.call(array, 0, 4), 4); - assertEquals(Array.prototype.indexOf.call(array, 0, 5), 5); - assertEquals(Array.prototype.indexOf.call(array, 0.0, 6), 6); - assertEquals(Array.prototype.indexOf.call(array, 0.0, 7), -1); - - assertEquals(Array.prototype.indexOf.call(array, 4294967295, 7), 7); - assertEquals(Array.prototype.indexOf.call(array, 4294967295, 8), -1); - - assertEquals(Array.prototype.indexOf.call(array, 768, 8), 8); - assertEquals(Array.prototype.indexOf.call(array, 768, 9), -1); - - assertEquals(Array.prototype.indexOf.call(array, 112151, 9), 9); - }, - - Detached_Uint32Array() { - var array = new Uint32Array(10); - %ArrayBufferDetach(array.buffer); - assertEquals(Array.prototype.indexOf.call(array, 0), -1); - assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); - }, - - Float32Array() { - var array = new Float32Array([-1, 4294967296, - NaN, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFFFFFF /* 34359738368.0 */, - -4294968064 /* -4294968320.0 */, - 4295079447 /* 4295079424.0 */]); - assertEquals(Array.prototype.indexOf.call(array, -1.0), 0); - assertEquals(Array.prototype.indexOf.call(array, 4294967296), 1); - - assertEquals(Array.prototype.indexOf.call(array, NaN, 2), -1); - assertEquals(Array.prototype.indexOf.call(array, Infinity, 3), 3); - assertEquals(Array.prototype.indexOf.call(array, -Infinity, 4), 4); - assertEquals(Array.prototype.indexOf.call(array, 0, 5), 5); - assertEquals(Array.prototype.indexOf.call(array, 0, 6), 6); - assertEquals(Array.prototype.indexOf.call(array, 0.0, 7), -1); - - assertEquals(Array.prototype.indexOf.call(array, 34359738368.0, 7), 7); - assertEquals(Array.prototype.indexOf.call(array, 34359738368.0, 8), -1); - - assertEquals(Array.prototype.indexOf.call(array, -4294968320.0, 8), 8); - assertEquals(Array.prototype.indexOf.call(array, -4294968320.0, 9), -1); - - assertEquals(Array.prototype.indexOf.call(array, 4295079424.0, 9), 9); - }, - - Detached_Float32Array() { - var array = new Float32Array(10); - %ArrayBufferDetach(array.buffer); - assertEquals(Array.prototype.indexOf.call(array, 0), -1); - assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); - }, - - Float64Array() { - var array = new Float64Array([-1, 4294967296, - NaN, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFFFFFF /* 34359738367.0 */, - -4294968064 /* -4294968064.0 */, - 4295079447 /* 4295079447.0 */]); - assertEquals(Array.prototype.indexOf.call(array, -1.0), 0); - assertEquals(Array.prototype.indexOf.call(array, 4294967296), 1); - - assertEquals(Array.prototype.indexOf.call(array, NaN, 2), -1); - assertEquals(Array.prototype.indexOf.call(array, Infinity, 3), 3); - assertEquals(Array.prototype.indexOf.call(array, -Infinity, 4), 4); - assertEquals(Array.prototype.indexOf.call(array, 0, 5), 5); - assertEquals(Array.prototype.indexOf.call(array, 0, 6), 6); - assertEquals(Array.prototype.indexOf.call(array, 0.0, 7), -1); - - assertEquals(Array.prototype.indexOf.call(array, 34359738367.0, 7), 7); - assertEquals(Array.prototype.indexOf.call(array, 34359738367.0, 8), -1); - - assertEquals(Array.prototype.indexOf.call(array, -4294968064.0, 8), 8); - assertEquals(Array.prototype.indexOf.call(array, -4294968064.0, 9), -1); - - assertEquals(Array.prototype.indexOf.call(array, 4295079447.0, 9), 9); - }, - - Detached_Float64Array() { - var array = new Float32Array(10); - %ArrayBufferDetach(array.buffer); - assertEquals(Array.prototype.indexOf.call(array, 0), -1); - assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); - }, - } -}; - -function runSuites(suites) { - Object.keys(suites).forEach(suite => runSuite(suites[suite])); - - function runSuite(suite) { - Object.keys(suite).forEach(test => suite[test]()); - } -} - -runSuites(kTests); diff --git a/implementation-contributed/v8/mjsunit/array-indexing.js b/implementation-contributed/v8/mjsunit/array-indexing.js deleted file mode 100644 index d1000382431..00000000000 --- a/implementation-contributed/v8/mjsunit/array-indexing.js +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var array = [1,2,3,1,2,3,1,2,3,1,2,3]; -var undef_array = [0,,2,undefined,4,,6,undefined,8,,10]; -// Sparse arrays with length 42000. -var sparse_array = []; -sparse_array[100] = 3; -sparse_array[200] = undefined; -sparse_array[300] = 4; -sparse_array[400] = 5; -sparse_array[500] = 6; -sparse_array[600] = 5; -sparse_array[700] = 4; -sparse_array[800] = undefined; -sparse_array[900] = 3 -sparse_array[41999] = "filler"; - -var dense_object = { 0: 42, 1: 37, length: 2 }; -var sparse_object = { 0: 42, 100000: 37, length: 200000 }; -var funky_object = { 10:42, 100000: 42, 100001: 37, length: 50000 }; -var infinite_object = { 10: 42, 100000: 37, length: Infinity }; - -// ---------------------------------------------------------------------- -// Array.prototype.indexOf. -// ---------------------------------------------------------------------- - -// Negative cases. -assertEquals(-1, [].indexOf(1)); -assertEquals(-1, array.indexOf(4)); -assertEquals(-1, array.indexOf(3, array.length)); - -assertEquals(2, array.indexOf(3)); -// Negative index out of range. -assertEquals(0, array.indexOf(1, -17)); -// Negative index in rage. -assertEquals(3, array.indexOf(1, -11)); -// Index in range. -assertEquals(3, array.indexOf(1, 1)); -assertEquals(3, array.indexOf(1, 3)); -assertEquals(6, array.indexOf(1, 4)); - -// Find undefined, not holes. -assertEquals(3, undef_array.indexOf(undefined)); -assertEquals(3, undef_array.indexOf(undefined, 3)); -assertEquals(7, undef_array.indexOf(undefined, 4)); -assertEquals(7, undef_array.indexOf(undefined, 7)); -assertEquals(-1, undef_array.indexOf(undefined, 8)); -assertEquals(3, undef_array.indexOf(undefined, -11)); -assertEquals(3, undef_array.indexOf(undefined, -8)); -assertEquals(7, undef_array.indexOf(undefined, -7)); -assertEquals(7, undef_array.indexOf(undefined, -4)); -assertEquals(-1, undef_array.indexOf(undefined, -3)); - -// Find in sparse array. -assertEquals(100, sparse_array.indexOf(3)); -assertEquals(900, sparse_array.indexOf(3, 101)); -assertEquals(-1, sparse_array.indexOf(3, 901)); -assertEquals(100, sparse_array.indexOf(3, -42000)); -assertEquals(900, sparse_array.indexOf(3, 101 - 42000)); -assertEquals(-1, sparse_array.indexOf(3, 901 - 42000)); - -assertEquals(300, sparse_array.indexOf(4)); -assertEquals(700, sparse_array.indexOf(4, 301)); -assertEquals(-1, sparse_array.indexOf(4, 701)); -assertEquals(300, sparse_array.indexOf(4, -42000)); -assertEquals(700, sparse_array.indexOf(4, 301 - 42000)); -assertEquals(-1, sparse_array.indexOf(4, 701 - 42000)); - -assertEquals(200, sparse_array.indexOf(undefined)); -assertEquals(800, sparse_array.indexOf(undefined, 201)); -assertEquals(-1, sparse_array.indexOf(undefined, 801)); -assertEquals(200, sparse_array.indexOf(undefined, -42000)); -assertEquals(800, sparse_array.indexOf(undefined, 201 - 42000)); -assertEquals(-1, sparse_array.indexOf(undefined, 801 - 42000)); - -// Find in non-arrays. -assertEquals(0, Array.prototype.indexOf.call(dense_object, 42)); -assertEquals(1, Array.prototype.indexOf.call(dense_object, 37)); -assertEquals(-1, Array.prototype.indexOf.call(dense_object, 87)); - -assertEquals(0, Array.prototype.indexOf.call(sparse_object, 42)); -assertEquals(100000, Array.prototype.indexOf.call(sparse_object, 37)); -assertEquals(-1, Array.prototype.indexOf.call(sparse_object, 87)); - -assertEquals(10, Array.prototype.indexOf.call(funky_object, 42)); -assertEquals(-1, Array.prototype.indexOf.call(funky_object, 42, 15)); -assertEquals(-1, Array.prototype.indexOf.call(funky_object, 37)); - -assertEquals(10, Array.prototype.indexOf.call(infinite_object, 42)); - -// ---------------------------------------------------------------------- -// Array.prototype.lastIndexOf. -// ---------------------------------------------------------------------- - -// Negative cases. -assertEquals(-1, [].lastIndexOf(1)); -assertEquals(-1, array.lastIndexOf(1, -17)); - -assertEquals(9, array.lastIndexOf(1)); -// Index out of range. -assertEquals(9, array.lastIndexOf(1, array.length)); -// Index in range. -assertEquals(0, array.lastIndexOf(1, 2)); -assertEquals(3, array.lastIndexOf(1, 4)); -assertEquals(3, array.lastIndexOf(1, 3)); -// Negative index in range. -assertEquals(0, array.lastIndexOf(1, -11)); - -// Find undefined, not holes. -assertEquals(7, undef_array.lastIndexOf(undefined)); -assertEquals(-1, undef_array.lastIndexOf(undefined, 2)); -assertEquals(3, undef_array.lastIndexOf(undefined, 3)); -assertEquals(3, undef_array.lastIndexOf(undefined, 6)); -assertEquals(7, undef_array.lastIndexOf(undefined, 7)); -assertEquals(7, undef_array.lastIndexOf(undefined, -1)); -assertEquals(-1, undef_array.lastIndexOf(undefined, -9)); -assertEquals(3, undef_array.lastIndexOf(undefined, -8)); -assertEquals(3, undef_array.lastIndexOf(undefined, -5)); -assertEquals(7, undef_array.lastIndexOf(undefined, -4)); - -// Find in sparse array. -assertEquals(900, sparse_array.lastIndexOf(3)); -assertEquals(100, sparse_array.lastIndexOf(3, 899)); -assertEquals(-1, sparse_array.lastIndexOf(3, 99)); -assertEquals(900, sparse_array.lastIndexOf(3, -1)); -assertEquals(100, sparse_array.lastIndexOf(3, 899 - 42000)); -assertEquals(-1, sparse_array.lastIndexOf(3, 99 - 42000)); - -assertEquals(700, sparse_array.lastIndexOf(4)); -assertEquals(300, sparse_array.lastIndexOf(4, 699)); -assertEquals(-1, sparse_array.lastIndexOf(4, 299)); -assertEquals(700, sparse_array.lastIndexOf(4, -1)); -assertEquals(300, sparse_array.lastIndexOf(4, 699 - 42000)); -assertEquals(-1, sparse_array.lastIndexOf(4, 299 - 42000)); - -assertEquals(800, sparse_array.lastIndexOf(undefined)); -assertEquals(200, sparse_array.lastIndexOf(undefined, 799)); -assertEquals(-1, sparse_array.lastIndexOf(undefined, 199)); -assertEquals(800, sparse_array.lastIndexOf(undefined, -1)); -assertEquals(200, sparse_array.lastIndexOf(undefined, 799 - 42000)); -assertEquals(-1, sparse_array.lastIndexOf(undefined, 199 - 42000)); - -assertEquals(0, Array.prototype.lastIndexOf.call(dense_object, 42)); -assertEquals(1, Array.prototype.lastIndexOf.call(dense_object, 37)); -assertEquals(0, Array.prototype.lastIndexOf.call(sparse_object, 42)); -assertEquals(100000, Array.prototype.lastIndexOf.call(sparse_object, 37)); - -//Find in non-arrays. -assertEquals(0, Array.prototype.lastIndexOf.call(dense_object, 42)); -assertEquals(1, Array.prototype.lastIndexOf.call(dense_object, 37)); -assertEquals(-1, Array.prototype.lastIndexOf.call(dense_object, 87)); - -assertEquals(0, Array.prototype.lastIndexOf.call(sparse_object, 42)); -assertEquals(100000, Array.prototype.lastIndexOf.call(sparse_object, 37)); -assertEquals(-1, Array.prototype.lastIndexOf.call(sparse_object, 87)); - -assertEquals(10, Array.prototype.lastIndexOf.call(funky_object, 42, 15)); -assertEquals(10, Array.prototype.lastIndexOf.call(funky_object, 42)); -assertEquals(-1, Array.prototype.lastIndexOf.call(funky_object, 37)); - -// This call would take too long because it would search backwards from 2**53-1 -// assertEquals(-1, Array.prototype.lastIndexOf.call(infinite_object, 42)); diff --git a/implementation-contributed/v8/mjsunit/array-isarray.js b/implementation-contributed/v8/mjsunit/array-isarray.js deleted file mode 100644 index 3ab8f8faffb..00000000000 --- a/implementation-contributed/v8/mjsunit/array-isarray.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -assertTrue(Array.isArray([])); -assertFalse(Array.isArray({})); -assertFalse(Array.isArray(null)); -assertFalse(Array.isArray(0)); -assertFalse(Array.isArray(0.1)); -assertFalse(Array.isArray("")); -assertFalse(Array.isArray(undefined)); - -assertTrue(Array.isArray(new Proxy([], {}))); -assertFalse(Array.isArray(new Proxy({}, {}))); - -assertTrue(Array.isArray(new Proxy(new Proxy([], {}), {}))); -assertFalse(Array.isArray(new Proxy(new Proxy({}, {}), {}))); - -(function TestIsArrayStackOverflow() { - var proxy = new Proxy([], {}); - for(var i=0; i<200*1024; i++) { - proxy = new Proxy(proxy, {}); - } - assertThrows(()=>Array.isArray(proxy), RangeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-iteration.js b/implementation-contributed/v8/mjsunit/array-iteration.js deleted file mode 100644 index 4de58208b4f..00000000000 --- a/implementation-contributed/v8/mjsunit/array-iteration.js +++ /dev/null @@ -1,425 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests for non-standard array iteration functions. -// -// See -// -// -// -// for an explanation of each of the functions. - -// -// Array.prototype.filter -// -(function() { - // Simple use. - var a = [0,1]; - assertArrayEquals([0], a.filter(function(n) { return n == 0; })); - assertArrayEquals([0,1], a); - - // Use specified object as this object when calling the function. - var o = { value: 42 } - a = [1,42,3,42,4]; - assertArrayEquals([42,42], - a.filter(function(n) { return this.value == n }, o)) - - // Modify original array. - a = [1,42,3,42,4]; - assertArrayEquals([42,42], - a.filter(function(n, index, array) { - array[index] = 43; return 42 == n; - })); - assertArrayEquals([43,43,43,43,43], a); - - // Only loop through initial part of array eventhough elements are - // added. - a = [1,1]; - assertArrayEquals([], - a.filter(function(n, index, array) { array.push(n+1); return n == 2; })); - assertArrayEquals([1,1,2,2], a); - - // Respect holes. - a = new Array(20); - var count = 0; - a[2] = 2; - a[15] = 2; - a[17] = 4; - var a = a.filter(function(n) { count++; return n == 2; }); - assertEquals(3, count); - for (var i in a) assertEquals(2, a[i]); - - // Skip over missing properties. - a = { - "0": 0, - "2": 2, - length: 3 - }; - var received = []; - assertArrayEquals([2], - Array.prototype.filter.call(a, function(n) { - received.push(n); - return n == 2; - })); - assertArrayEquals([0, 2], received); - - // Modify array prototype - a = [0, , 2]; - received = []; - assertArrayEquals([2], - Array.prototype.filter.call(a, function(n) { - a.__proto__ = null; - received.push(n); - return n == 2; - })); - assertArrayEquals([0, 2], received); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - [1, 2].filter(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - [1, 2].filter(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - [1, 2].filter(function() { 'use strict'; a.push(this); }, ""); - assertEquals("", a[0]); - assertEquals(a[0], a[1]); - -})(); - - -// -// Array.prototype.forEach -// -(function() { - // Simple use. - var a = [0,1]; - var count = 0; - a.forEach(function(n) { count++; }); - assertEquals(2, count); - - // Use specified object as this object when calling the function. - var o = { value: 42 } - var result = []; - a.forEach(function(n) { result.push(this.value); }, o); - assertArrayEquals([42,42], result); - - // Modify original array. - a = [0,1]; - count = 0; - a.forEach(function(n, index, array) { array[index] = n + 1; count++; }); - assertEquals(2, count); - assertArrayEquals([1,2], a); - - // Only loop through initial part of array eventhough elements are - // added. - a = [1,1]; - count = 0; - a.forEach(function(n, index, array) { array.push(n+1); count++; }); - assertEquals(2, count); - assertArrayEquals([1,1,2,2], a); - - // Respect holes. - a = new Array(20); - count = 0; - a[15] = 2; - a.forEach(function(n) { count++; }); - assertEquals(1, count); - - // Skip over missing properties. - a = { - "0": 0, - "2": 2, - length: 3 - }; - var received = []; - Array.prototype.forEach.call(a, function(n) { received.push(n); }); - assertArrayEquals([0, 2], received); - - // Modify array prototype - a = [0, , 2]; - received = []; - Array.prototype.forEach.call(a, function(n) { - a.__proto__ = null; - received.push(n); - return n == 2; - }); - assertArrayEquals([0, 2], received); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - [1, 2].forEach(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - [1, 2].forEach(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - [1, 2].forEach(function() { 'use strict'; a.push(this); }, ""); - assertEquals("", a[0]); - assertEquals(a[0], a[1]); - -})(); - - -// -// Array.prototype.every -// -(function() { - // Simple use. - var a = [0,1]; - assertFalse(a.every(function(n) { return n == 0 })); - a = [0,0]; - assertTrue(a.every(function(n) { return n == 0 })); - assertTrue([].every(function(n) { return n == 0})); - - // Use specified object as this object when calling the function. - var o = { value: 42 } - a = [0]; - assertFalse(a.every(function(n) { return this.value == n; }, o)); - a = [42]; - assertTrue(a.every(function(n) { return this.value == n; }, o)); - - // Modify original array. - a = [0,1]; - assertFalse( - a.every(function(n, index, array) { - array[index] = n + 1; return n == 1; - })); - assertArrayEquals([1,1], a); - - // Only loop through initial part of array eventhough elements are - // added. - a = [1,1]; - assertTrue( - a.every(function(n, index, array) { - array.push(n + 1); return n == 1; - })); - assertArrayEquals([1,1,2,2], a); - - // Respect holes. - a = new Array(20); - var count = 0; - a[2] = 2; - a[15] = 2; - assertTrue(a.every(function(n) { count++; return n == 2; })); - assertEquals(2, count); - - // Skip over missing properties. - a = { - "0": 2, - "2": 2, - length: 3 - }; - var received = []; - assertTrue( - Array.prototype.every.call(a, function(n) { - received.push(n); - return n == 2; - })); - assertArrayEquals([2, 2], received); - - // Modify array prototype - a = [2, , 2]; - received = []; - assertTrue( - Array.prototype.every.call(a, function(n) { - a.__proto__ = null; - received.push(n); - return n == 2; - })); - assertArrayEquals([2, 2], received); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - [1, 2].every(function() { a.push(this); return true; }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - [1, 2].every(function() { a.push(this); return true; }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - [1, 2].every(function() { 'use strict'; a.push(this); return true; }, ""); - assertEquals("", a[0]); - assertEquals(a[0], a[1]); - -})(); - -// -// Array.prototype.map -// -(function() { - var a = [0,1,2,3,4]; - - // Simple use. - var result = [1,2,3,4,5]; - assertArrayEquals(result, a.map(function(n) { return n + 1; })); - assertEquals(a, a); - - // Use specified object as this object when calling the function. - var o = { delta: 42 } - result = [42,43,44,45,46]; - assertArrayEquals(result, a.map(function(n) { return this.delta + n; }, o)); - - // Modify original array. - a = [0,1,2,3,4]; - result = [1,2,3,4,5]; - assertArrayEquals(result, - a.map(function(n, index, array) { - array[index] = n + 1; return n + 1; - })); - assertArrayEquals(result, a); - - // Only loop through initial part of array eventhough elements are - // added. - a = [0,1,2,3,4]; - result = [1,2,3,4,5]; - assertArrayEquals(result, - a.map(function(n, index, array) { array.push(n); return n + 1; })); - assertArrayEquals([0,1,2,3,4,0,1,2,3,4], a); - - // Respect holes. - a = new Array(20); - a[15] = 2; - a = a.map(function(n) { return 2*n; }); - for (var i in a) assertEquals(4, a[i]); - - // Skip over missing properties. - a = { - "0": 1, - "2": 2, - length: 3 - }; - var received = []; - assertArrayEquals([2, , 4], - Array.prototype.map.call(a, function(n) { - received.push(n); - return n * 2; - })); - assertArrayEquals([1, 2], received); - - // Modify array prototype - a = [1, , 2]; - received = []; - assertArrayEquals([2, , 4], - Array.prototype.map.call(a, function(n) { - a.__proto__ = null; - received.push(n); - return n * 2; - })); - assertArrayEquals([1, 2], received); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - [1, 2].map(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - [1, 2].map(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - [1, 2].map(function() { 'use strict'; a.push(this); }, ""); - assertEquals("", a[0]); - assertEquals(a[0], a[1]); - -})(); - -// -// Array.prototype.some -// -(function() { - var a = [0,1,2,3,4]; - - // Simple use. - assertTrue(a.some(function(n) { return n == 3})); - assertFalse(a.some(function(n) { return n == 5})); - - // Use specified object as this object when calling the function. - var o = { element: 42 }; - a = [1,42,3]; - assertTrue(a.some(function(n) { return this.element == n; }, o)); - a = [1]; - assertFalse(a.some(function(n) { return this.element == n; }, o)); - - // Modify original array. - a = [0,1,2,3]; - assertTrue( - a.some(function(n, index, array) { - array[index] = n + 1; return n == 2; })); - assertArrayEquals([1,2,3,3], a); - - // Only loop through initial part when elements are added. - a = [0,1,2]; - assertFalse( - a.some(function(n, index, array) { array.push(42); return n == 42; })); - assertArrayEquals([0,1,2,42,42,42], a); - - // Respect holes. - a = new Array(20); - var count = 0; - a[2] = 42; - a[10] = 2; - a[15] = 42; - assertTrue(a.some(function(n) { count++; return n == 2; })); - assertEquals(2, count); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - [1, 2].some(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - [1, 2].some(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - [1, 2].some(function() { 'use strict'; a.push(this); }, ""); - assertEquals("", a[0]); - assertEquals(a[0], a[1]); - -})(); diff --git a/implementation-contributed/v8/mjsunit/array-iterator-prototype-next.js b/implementation-contributed/v8/mjsunit/array-iterator-prototype-next.js deleted file mode 100644 index d17bf2740cc..00000000000 --- a/implementation-contributed/v8/mjsunit/array-iterator-prototype-next.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -/* Test behaviors when the prototype has elements */ - -(function () { - var array = [,]; - - function next() { - return array[Symbol.iterator]().next(); - } - - assertEquals(next().value, undefined); - - array.__proto__.push(5); - assertEquals(next().value, 5); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-join-element-tostring-prototype-side-effects.js b/implementation-contributed/v8/mjsunit/array-join-element-tostring-prototype-side-effects.js deleted file mode 100644 index a5ddebb9b94..00000000000 --- a/implementation-contributed/v8/mjsunit/array-join-element-tostring-prototype-side-effects.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function ArrayPrototypeChanged() { - const el = { - toString() { - Array.prototype[1] = '2'; - return '1'; - } - }; - const a = [el, ,3]; - assertSame("123", a.join('')); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-join-element-tostring-side-effects.js b/implementation-contributed/v8/mjsunit/array-join-element-tostring-side-effects.js deleted file mode 100644 index 1da72a7970e..00000000000 --- a/implementation-contributed/v8/mjsunit/array-join-element-tostring-side-effects.js +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const MIN_DICTIONARY_INDEX = 8192; - -function ArrayTests() { - (function ToStringThrows() { - function TestError() {} - - let callCount = 0; - const toStringThrows = { - toString() { - callCount++; - throw new TestError; - } - }; - const a = [toStringThrows]; - assertThrows(() => a.join(), TestError); - assertSame(1, callCount); - - // Verifies cycle detection still works properly after thrown error. - a[0] = 1; - a[1] = 2; - assertSame('1,2', a.join()); - })(); - - (function ArrayLengthIncreased() { - let callCount = 0; - const a = [ - { - toString() { - callCount++; - a.push(2); - return '1'; - } - } - ]; - assertSame('1', a.join()); - assertSame(1, callCount); - assertSame('1,2', a.join()); - })(); - - (function ArrayLengthDecreased() { - let callCount = 0; - const a = [ - { - toString() { - callCount++; - a.pop(); - return '1'; - } - }, - '2' - ]; - assertSame('1,', a.join()); - assertSame(1, callCount); - assertSame('1', a.join()); - })(); - - (function ElementsKindChangedToHoley() { - let callCount = 0; - const a = [ - { - toString() { - callCount++; - a.length = 4; - a[1] = 777; - a[2] = 7.7; - return '1'; - } - }, - 2, - 3 - ]; - assertSame('1,777,7.7', a.join()); - assertSame(1, callCount); - assertSame('1,777,7.7,', a.join()); - })(); - - (function ElementsKindChangedToHoleyThroughDeletion() { - let callCount = 0; - const a = [ - { - toString() { - callCount++; - delete a[1]; - a[2] = 7.7; - return '1'; - } - }, - 2, - 3 - ]; - assertSame('1,,7.7', a.join()); - assertSame(1, callCount); - assertSame('1,,7.7', a.join()); - })(); - - (function NumberDictionaryChanged() { - let callCount = 0; - const a = []; - a[MIN_DICTIONARY_INDEX - 1] = { - toString() { - callCount++; - a[MIN_DICTIONARY_INDEX] = '2'; - return '1'; - } - }; - a[MIN_DICTIONARY_INDEX] = 'NOPE'; - assertTrue(%HasDictionaryElements(a)); - assertSame('12', a.join('')); - assertSame(1, callCount); - assertSame('12', a.join('')); - })(); - - (function NumberDictionaryLengthChange() { - let callCount = 0; - const a = []; - a[MIN_DICTIONARY_INDEX - 1] = { - toString() { - callCount++; - a.length = MIN_DICTIONARY_INDEX; - return '1'; - } - }; - a[MIN_DICTIONARY_INDEX] = '2'; - assertTrue(%HasDictionaryElements(a)); - assertSame('1', a.join('')); - assertSame(1, callCount); - assertSame('1', a.join('')); - })(); -} - -(function NonArrayCycleDetection() { - const a = { - length: 3, - toString() { return Array.prototype.join.call(this); } - }; - a[0] = '1'; - a[1] = a; - a[2] = '3'; - assertSame("1,,3", Array.prototype.join.call(a)); -}); - -ArrayTests(); - -%SetForceSlowPath(true); - -ArrayTests(); diff --git a/implementation-contributed/v8/mjsunit/array-join-index-getter-side-effects.js b/implementation-contributed/v8/mjsunit/array-join-index-getter-side-effects.js deleted file mode 100644 index 4b843464df2..00000000000 --- a/implementation-contributed/v8/mjsunit/array-join-index-getter-side-effects.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function Throws() { - function TestError() {} - - let callCount = 0; - const a = [0, 1]; - Object.defineProperty(a, '0', { - configurable: true, - get() { - callCount++; - throw new TestError(); - } - }); - assertTrue(%HasDictionaryElements(a)); - assertThrows(() => a.join(), TestError); - assertSame(1, callCount); - - // Verifies cycle detection still works properly after thrown error. - Object.defineProperty(a, '0', { - configurable: true, - get() { - callCount++; - return 777; - } - }); - assertSame('777,1', a.join()); - assertSame(2, callCount); -})(); - -(function ArrayLengthIncreased() { - let callCount = 0; - const a = [1]; - Object.defineProperty(a, '0', { - configurable: true, - get() { - callCount++; - a.push(2); - return 9; - } - }); - assertSame('9', a.join()); - assertSame(1, callCount); - - // Verifies cycle detection still works properly after continuation. - assertSame('9,2', a.join()); - assertSame(2, callCount); -})(); - -(function ArrayLengthIncreasedWithHole() { - let callCount = 0; - const a = [1, , 2]; - Object.defineProperty(a, '1', { - configurable: true, - get() { - callCount++; - a.push(3); - } - }); - assertSame('1,,2', a.join()); - assertSame(1, callCount); - - // Verifies cycle detection still works properly after continuation. - assertSame('1,,2,3', a.join()); - assertSame(2, callCount); -})(); - -(function ArrayLengthDecreased() { - let callCount = 0; - const a = [0, 1]; - Object.defineProperty(a, '0', { - configurable: true, - get() { - callCount++; - a.length = 1; - return 9; - } - }); - assertSame('9,', a.join()); - assertSame(1, callCount); - - // Verifies cycle detection still works properly after continuation. - assertSame('9', a.join()); - assertSame(2, callCount); -})(); - -(function ElementsKindChangedToHoley() { - let callCount = 0; - const a = [0, 1]; - Object.defineProperty(a, '0', { - configurable: true, - get() { - callCount++; - a.length = 3; - return 9; - } - }); - assertSame('9,1', a.join()); - assertSame(1, callCount); - - // Verifies cycle detection still works properly after continuation. - assertSame('9,1,', a.join()); - assertSame(2, callCount); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-join-invalid-string-length.js b/implementation-contributed/v8/mjsunit/array-join-invalid-string-length.js deleted file mode 100644 index cab8f00bd46..00000000000 --- a/implementation-contributed/v8/mjsunit/array-join-invalid-string-length.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function DictionaryStringRepeatFastPath() { - const a = new Array(%StringMaxLength()); - assertTrue(%HasDictionaryElements(a)); - const sep = '12'; - assertThrows(() => a.join(sep), RangeError); - - // Verifies cycle detection still works properly after thrown error. - assertThrows(() => a.join(sep), RangeError); - - a.length = 3; - a[0] = 'a'; - a[1] = 'b'; - a[2] = 'c'; - assertSame('a,b,c', a.join()); -})(); - -(function SeparatorOverflow() { - const a = ['a',,,,,'b']; - - const sep = ','.repeat(%StringMaxLength()); - assertThrows(() => a.join(sep), RangeError); - - // Verifies cycle detection still works properly after thrown error. - assertThrows(() => a.join(sep), RangeError); - assertSame('a,,,,,b', a.join()); -})(); - -(function ElementOverflow() { - const el = ','.repeat(%StringMaxLength()); - const a = [el, el, el, el, el]; - - assertThrows(() => a.join(), RangeError); - - // Verifies cycle detection still works properly after thrown error. - assertThrows(() => a.join(), RangeError); - a[0] = 'a'; - a[1] = 'b'; - a[2] = 'c'; - a[3] = 'd'; - a[4] = 'e'; - assertSame('a,b,c,d,e', a.join()); -})(); - -(function ElementSeparatorOverflow() { - const el = ','.repeat(%StringMaxLength()); - const a = [el, el, el, el]; - - assertThrows(() => a.join(el), RangeError); - - // Verifies cycle detection still works properly after thrown error. - assertThrows(() => a.join(el), RangeError); - a[0] = 'a'; - a[1] = 'b'; - a[2] = 'c'; - a[3] = 'd'; - assertSame('a,b,c,d', a.join()); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-join-nesting.js b/implementation-contributed/v8/mjsunit/array-join-nesting.js deleted file mode 100644 index d1e75fb5123..00000000000 --- a/implementation-contributed/v8/mjsunit/array-join-nesting.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const DEPTH = 128; - -function makeNestedArray(depth, value) { - return depth > 0 ? [value, makeNestedArray(depth - 1, value)] : [value]; -} - -const array = makeNestedArray(DEPTH, 'a'); -const expected = 'a' + ',a'.repeat(DEPTH); -assertSame(expected, array.join()); - -// Verify cycle detection is still working. -assertSame(expected, array.join()); diff --git a/implementation-contributed/v8/mjsunit/array-join-nonarray-length-getter-side-effects.js b/implementation-contributed/v8/mjsunit/array-join-nonarray-length-getter-side-effects.js deleted file mode 100644 index 3f8d2aa029c..00000000000 --- a/implementation-contributed/v8/mjsunit/array-join-nonarray-length-getter-side-effects.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function Throws() { - function TestError() {} - - let callCount = 0; - const a = { - 0: 1, - 1: 2, - get length() { - callCount++; - throw new TestError(); - } - }; - assertThrows(() => Array.prototype.join.call(a), TestError); - assertSame(1, callCount); - - // Verifies cycle detection still works properly after thrown error. - Object.defineProperty(a, 'length', { - get() { - callCount++; - return 2; - } - }); - assertSame('1,2', Array.prototype.join.call(a)); - assertSame(2, callCount); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-join-separator-tostring-side-effects.js b/implementation-contributed/v8/mjsunit/array-join-separator-tostring-side-effects.js deleted file mode 100644 index d9e85152cab..00000000000 --- a/implementation-contributed/v8/mjsunit/array-join-separator-tostring-side-effects.js +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const MIN_DICTIONARY_INDEX = 8192; - -(function ToStringThrows() { - function TestError() {} - - let callCount = 0; - const a = [1, 2]; - assertThrows(() => a.join({ - toString() { - callCount++; - throw new TestError; - } - }), TestError); - assertSame(1, callCount); - - // Verifies cycle detection still works properly after thrown error. - assertSame('1,2', a.join()); -})(); - -(function RecursiveJoinCall() { - const a = [1,2,3]; - let callCount = 0; - const sep = { - toString() { - callCount++; - return a.join('-'); - } - }; - assertSame('11-2-321-2-33', a.join(sep)); - assertSame(1, callCount); - - // Verify cycle detection works properly after nested call - assertSame('1,2,3', a.join()); -})(); - - -(function ArrayLengthIncreased() { - const a = [1,2,3]; - let callCount = 0; - assertSame('1,2,3', a.join({ - toString() { - callCount++; - a.push(4); - return ','; - } - })); - assertSame(1, callCount); - assertSame('1,2,3,4', a.join()); -})(); - -(function ArrayLengthDecreased() { - const a = [1,2,3]; - let callCount = 0; - assertSame('1,2,', a.join({ - toString() { - callCount++; - a.pop(); - return ','; - } - })); - assertSame(1, callCount); - assertSame('1,2', a.join()); -})(); - -(function ArrayEmptied() { - const a = [1,2,3]; - let callCount = 0; - assertSame(',,', a.join({ - toString() { - callCount++; - a.length = 0; - return ','; - } - })); - assertSame(1, callCount); -})(); - -(function NumberDictionaryEmptied() { - const a = []; - a[0] = 1; - a[MIN_DICTIONARY_INDEX] = 2; - assertTrue(%HasDictionaryElements(a)); - - let callCount = 0; - assertSame('-'.repeat(MIN_DICTIONARY_INDEX), a.join({ - toString() { - callCount++; - a.length = 0; - return '-'; - } - })); - assertSame(1, callCount); -})(); - -(function NumberDictionaryEmptiedEmptySeparator() { - const a = []; - a[0] = 1; - a[MIN_DICTIONARY_INDEX] = 2; - assertTrue(%HasDictionaryElements(a)); - - let callCount = 0; - assertSame(''.repeat(MIN_DICTIONARY_INDEX), a.join({ - toString() { - callCount++; - a.length = 0; - return ''; - } - })); - assertSame(1, callCount); -})(); - -(function ElementsKindSmiToDoubles() { - const a = [1,2,3]; - let callCount = 0; - assertTrue(%HasSmiElements(a)); - assertSame('1.5,2,3', a.join({ - toString() { - callCount++; - a[0] = 1.5; - assertTrue(%HasDoubleElements(a)); - return ','; - } - })); - assertSame(1, callCount); - assertSame('1.5,2,3', a.join()); -})(); - -(function ElementsKindDoublesToObjects() { - const a = [1.5, 2.5, 3.5]; - let callCount = 0; - assertTrue(%HasDoubleElements(a)); - assertSame('one,2.5,3.5', a.join({ - toString() { - callCount++; - a[0] = 'one'; - assertTrue(%HasObjectElements(a)); - return ','; - } - })); - assertSame(1, callCount); - assertSame('one,2.5,3.5', a.join()); -})(); - -(function ArrayIsNoLongerFast() { - const a = [1,2,3]; - let callCount = 0; - assertSame('666,2,3', a.join({ - toString() { - callCount++; - Object.defineProperty(a, '0', { - get(){ return 666; } - }); - return ','; - } - })); - assertSame(1, callCount); - assertSame('666,2,3', a.join()); -})(); - -(function ArrayPrototypeUnset() { - const a = [1,2]; - a.length = 3; - let callCount = 0; - assertSame('1,2,4', a.join({ - toString() { - callCount++; - a.__proto__ = { '2': 4 }; - return ','; - } - })); - assertSame(1, callCount); - a.__proto__ = Array.prototype; - assertSame('1,2,', a.join()); -})(); - -(function ArrayPrototypeIsNoLongerFast() { - const a = [1,2,3]; - let callCount = 0; - assertSame('1,2,777', a.join({ - toString() { - callCount++; - a.pop(); - Object.defineProperty(Array.prototype, '2', { - get(){ return 777; } - }); - return ','; - } - })); - assertSame(1, callCount); - assertSame('1,2', a.join()); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-join.js b/implementation-contributed/v8/mjsunit/array-join.js deleted file mode 100644 index 1d5ab30ebc1..00000000000 --- a/implementation-contributed/v8/mjsunit/array-join.js +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertSame(',', [null, undefined].join()); -assertSame('1.5,2.5', [1.5, 2.5].join()); -assertSame(',1.5,', [,1.5,,].join()); - -var obj = { - toString() { - return 'a'; - } -}; -assertSame('1,1.5,a,', [1, 1.5, obj, ,].join()); - -// Test that array join calls toString on subarrays. -var a = [[1,2],3,4,[5,6]]; -assertEquals('1,2345,6', a.join('')); -assertEquals('1,2*3*4*5,6', a.join('*')); -assertEquals('1,2**3**4**5,6', a.join('**')); -assertEquals('1,2****3****4****5,6', a.join('****')); -assertEquals('1,2********3********4********5,6', a.join('********')); -assertEquals('1,2**********3**********4**********5,6', a.join('**********')); - -// Create a cycle. -a.push(a); -assertEquals('1,2345,6', a.join('')); -assertEquals('1,2*3*4*5,6*', a.join('*')); -assertEquals('1,2**3**4**5,6**', a.join('**')); -assertEquals('1,2****3****4****5,6****', a.join('****')); -assertEquals('1,2********3********4********5,6********', a.join('********')); -assertEquals('1,2**********3**********4**********5,6**********', a.join('**********')); - -// Replace array.prototype.toString. -var oldToString = Array.prototype.toString; -Array.prototype.toString = function() { return "array"; }; -assertEquals('array34arrayarray', a.join('')); -assertEquals('array*3*4*array*array', a.join('*')); -assertEquals('array**3**4**array**array', a.join('**')); -assertEquals('array****3****4****array****array', a.join('****')); -assertEquals('array********3********4********array********array', a.join('********')); -assertEquals('array**********3**********4**********array**********array', a.join('**********')); - -Array.prototype.toString = function() { throw 42; }; -assertThrows("a.join('')"); -assertThrows("a.join('*')"); -assertThrows("a.join('**')"); -assertThrows("a.join('****')"); -assertThrows("a.join('********')"); -assertThrows("a.join('**********')"); - -Array.prototype.toString = function() { return "array"; }; -assertEquals('array34arrayarray', a.join('')); -assertEquals('array*3*4*array*array', a.join('*')); -assertEquals('array**3**4**array**array', a.join('**')); -assertEquals('array****3****4****array****array', a.join('****')); -assertEquals('array********3********4********array********array', a.join('********')); -assertEquals('array**********3**********4**********array**********array', a.join('**********')); - -// Restore original toString. -delete Array.prototype.toString; -if (Array.prototype.toString != oldToString) { - Array.prototype.toString = oldToString; -} - -var a = new Array(123123); -assertEquals(123122, String(a).length); -assertEquals(123122, a.join(",").length); -assertEquals(246244, a.join("oo").length); - -a = new Array(Math.pow(2,32) - 1); // Max length. -assertEquals("", a.join("")); - -a = new Array(100001); -for (var i = 0; i < a.length; i++) a[i] = undefined; -a[5] = "ab"; -a[90000] = "cd"; -assertEquals("abcd", a.join("")); // Must not throw. - - -// Make sure that each element is accessed exactly once, and in the correct -// order. -{ - var log = []; - var p = new Proxy({length: 3, 0: 'a', 1: 'b'}, { - get: function(t, k, r) { log.push(k); return Reflect.get(t, k, r); } - }); - - assertEquals("a,b,", Array.prototype.join.call(p)); - assertEquals(["length", "0", "1", "2"], log); -} diff --git a/implementation-contributed/v8/mjsunit/array-lastindexof.js b/implementation-contributed/v8/mjsunit/array-lastindexof.js deleted file mode 100644 index c31ad18b55d..00000000000 --- a/implementation-contributed/v8/mjsunit/array-lastindexof.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => { - Array.prototype.lastIndexOf.call(null, 42); -}, TypeError); -assertThrows(() => { - Array.prototype.lastIndexOf.call(undefined, 42); -}, TypeError); - -/* Tests inspired by test262's - lastIndexOf/calls-only-has-on-prototype-after-length-zeroed.js */ -// Stateful fromIndex that tries to empty the array -(function testFromIndex() { - var array = [5, undefined, 7]; - var fromIndex = { - valueOf: function() { - array.length = 1; - return 2; - } - }; - assertEquals(-1, array.lastIndexOf(undefined, fromIndex)); - - array = [5, undefined, 7]; - assertEquals(0, array.lastIndexOf(5, fromIndex)); -})(); - -// Stateful fromIndex and proxy as Prototype -// Must test for [[HasProperty]] before [[Get]] -var testHasProperty = function(value) { - var array = [5, undefined, 7]; - var fromIndex = { - valueOf: function() { - array.length = 0; - return 2; - } - }; - - // Install a prototype that only has [[HasProperty]], and throws on [[Get]] - Object.setPrototypeOf(array, - new Proxy(Array.prototype, { - has: function(t, pk) { return pk in t; }, - get: function () { throw new Error('[[Get]] trap called') }, - })); - - assertEquals(-1, Array.prototype.lastIndexOf.call(array, value, fromIndex)); -} - -testHasProperty(5); -testHasProperty(undefined); - -// Test call order: [[HasProperty]] before [[Get]] -var testHasPropertyThenGet = function(value) { - var array = [5, , 7]; - var log = []; - - // Install a prototype with only [[HasProperty]] and [[Get]] - Object.setPrototypeOf(array, - new Proxy(Array.prototype, { - has: function() { log.push("HasProperty"); return true; }, - get: function() { log.push("Get"); }, - })); - // The 2nd element (index 1) will trigger the calls to the prototype - Array.prototype.lastIndexOf.call(array, value); - assertEquals(["HasProperty", "Get"], log); -} - -testHasPropertyThenGet(5); -testHasPropertyThenGet(undefined); - -// Test for sparse Arrays -/* This will not enter the fast path for sparse arrays, due to UseSparseVariant - excluding array elements with accessors */ -(function() { - var array = new Array(10000); - array[0] = 5; array[9999] = 7; - - var count = 0; - Object.defineProperty(array.__proto__, 9998, { get: () => ++count }); - Array.prototype.lastIndexOf.call(array, 0); - assertEquals(1,count); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-length-number-conversion.js b/implementation-contributed/v8/mjsunit/array-length-number-conversion.js deleted file mode 100644 index 11808afaffd..00000000000 --- a/implementation-contributed/v8/mjsunit/array-length-number-conversion.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// A reduced test case from Acid3 test 95. -// When an object is assigned to an array length field, -// it is converted to a number. - -function CheckSetArrayLength(x, expected) { - var a = []; - a.length = x; - - assertEquals("number", typeof a.length); - assertEquals(expected, a.length); -} - -CheckSetArrayLength(2147483648, 2147483648); -CheckSetArrayLength("2147483648", 2147483648); -CheckSetArrayLength(null, 0); -CheckSetArrayLength(false, 0); -CheckSetArrayLength(true, 1); -CheckSetArrayLength({valueOf : function() { return 42; }}, 42); -CheckSetArrayLength({toString : function() { return '42'; }}, 42); - -// Test invalid values -assertThrows("var y = []; y.length = 'abc';"); -assertThrows("var y = []; y.length = undefined;"); -assertThrows("var y = []; y.length = {};"); -assertThrows("var y = []; y.length = -1;"); -assertThrows("var y = []; y.length = {valueOf:function() { throw new Error(); }};"); diff --git a/implementation-contributed/v8/mjsunit/array-length.js b/implementation-contributed/v8/mjsunit/array-length.js deleted file mode 100644 index 0fec92de00f..00000000000 --- a/implementation-contributed/v8/mjsunit/array-length.js +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var a = [0,1,2,3]; -assertEquals(0, a.length = 0); - -assertEquals('undefined', typeof a[0]); -assertEquals('undefined', typeof a[1]); -assertEquals('undefined', typeof a[2]); -assertEquals('undefined', typeof a[3]); - - -var a = [0,1,2,3]; -assertEquals(2, a.length = 2); - -assertEquals(0, a[0]); -assertEquals(1, a[1]); -assertEquals('undefined', typeof a[2]); -assertEquals('undefined', typeof a[3]); - - -for(var i = 0; i < 10; i++) { - var array = new Array(i).fill(42); - array.push(42); - array.length = i; - array.length = i+1; - assertEquals('undefined' , typeof array[i]); -} - - -var a = new Array(); -a[0] = 0; -a[1000] = 1000; -a[1000000] = 1000000; -a[2000000] = 2000000; - -assertEquals(2000001, a.length); -assertEquals(0, a.length = 0); -assertEquals(0, a.length); -assertEquals('undefined', typeof a[0]); -assertEquals('undefined', typeof a[1000]); -assertEquals('undefined', typeof a[1000000]); -assertEquals('undefined', typeof a[2000000]); - - -var a = new Array(); -a[0] = 0; -a[1000] = 1000; -a[1000000] = 1000000; -a[2000000] = 2000000; - -assertEquals(2000001, a.length); -assertEquals(2000, a.length = 2000); -assertEquals(2000, a.length); -assertEquals(0, a[0]); -assertEquals(1000, a[1000]); -assertEquals('undefined', typeof a[1000000]); -assertEquals('undefined', typeof a[2000000]); - - -var a = new Array(); -a[Math.pow(2,31)-1] = 0; -a[Math.pow(2,30)-1] = 0; -assertEquals(Math.pow(2,31), a.length); - - -var a = new Array(); -a[0] = 0; -a[1000] = 1000; -a[Math.pow(2,30)-1] = Math.pow(2,30)-1; -a[Math.pow(2,31)-1] = Math.pow(2,31)-1; -a[Math.pow(2,32)-2] = Math.pow(2,32)-2; - -assertEquals(Math.pow(2,30)-1, a[Math.pow(2,30)-1]); -assertEquals(Math.pow(2,31)-1, a[Math.pow(2,31)-1]); -assertEquals(Math.pow(2,32)-2, a[Math.pow(2,32)-2]); - -assertEquals(Math.pow(2,32)-1, a.length); -assertEquals(Math.pow(2,30) + 1, a.length = Math.pow(2,30)+1); // not a smi! -assertEquals(Math.pow(2,30)+1, a.length); - -assertEquals(0, a[0]); -assertEquals(1000, a[1000]); -assertEquals(Math.pow(2,30)-1, a[Math.pow(2,30)-1]); -assertEquals('undefined', typeof a[Math.pow(2,31)-1]); -assertEquals('undefined', typeof a[Math.pow(2,32)-2], "top"); - - -var a = new Array(); -assertEquals(Object(12), a.length = new Number(12)); -assertEquals(12, a.length); - -Number.prototype.valueOf = function() { return 10; } -var n = new Number(100); -assertEquals(n, a.length = n); -assertEquals(10, a.length); -n.valueOf = function() { return 20; } -assertEquals(n, a.length = n); -assertEquals(20, a.length); - -var o = { length: -23 }; -Array.prototype.pop.apply(o); -assertEquals(0, o.length); - -// Check case of compiled stubs. -var a = []; -for (var i = 0; i < 7; i++) { - assertEquals(3, a.length = 3); - - var t = 239; - t = a.length = 7; - assertEquals(7, t); -} - -(function () { - "use strict"; - var frozen_object = Object.freeze({__proto__:[]}); - assertThrows(function () { frozen_object.length = 10 }); -})(); - -(function sloppyReentrantDescriptorChange() { - var b = []; - b.length = { - valueOf() { - Object.defineProperty(b, "length", {writable: false}); - return 1; - } - }; - assertEquals(0, b.length); -})(); - -(function strictReentrantDescriptorChange() { - var b = []; - assertThrows(() => { - "use strict"; - b.length = { - valueOf() { - Object.defineProperty(b, "length", {writable: false}); - return 1; - } - }; - }, TypeError); - - b.length = { valueOf() { return 0; } }; - assertEquals(0, b.length); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-literal-feedback.js b/implementation-contributed/v8/mjsunit/array-literal-feedback.js deleted file mode 100644 index 6ad9cd08dd1..00000000000 --- a/implementation-contributed/v8/mjsunit/array-literal-feedback.js +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --opt --no-always-opt --deopt-every-n-times=0 - -var elements_kind = { - packed_smi : 'packed smi elements', - packed : 'packed elements', - packed_double : 'packed double elements', - dictionary : 'dictionary elements', - external_byte : 'external byte elements', - external_unsigned_byte : 'external unsigned byte elements', - external_short : 'external short elements', - external_unsigned_short : 'external unsigned short elements', - external_int : 'external int elements', - external_unsigned_int : 'external unsigned int elements', - external_float : 'external float elements', - external_double : 'external double elements', - external_pixel : 'external pixel elements' -} - -function getKind(obj) { - if (%HasSmiElements(obj)) return elements_kind.packed_smi; - if (%HasObjectElements(obj)) return elements_kind.packed; - if (%HasDoubleElements(obj)) return elements_kind.packed_double; - if (%HasDictionaryElements(obj)) return elements_kind.dictionary; -} - -function isHoley(obj) { - if (%HasHoleyElements(obj)) return true; - return false; -} - -function assertKind(expected, obj, name_opt) { - assertEquals(expected, getKind(obj), name_opt); -} - -function get_literal(x) { - var literal = [1, 2, x]; - return literal; -} - -get_literal(3); -// It's important to store a from before we crankshaft get_literal, because -// mementos won't be created from crankshafted code at all. -a = get_literal(3); -%OptimizeFunctionOnNextCall(get_literal); -get_literal(3); -assertOptimized(get_literal); -assertTrue(%HasSmiElements(a)); -// a has a memento so the transition caused by the store will affect the -// boilerplate. -a[0] = 3.5; - -// We should have transitioned the boilerplate array to double, and -// crankshafted code should de-opt on the unexpected elements kind -b = get_literal(3); -assertTrue(%HasDoubleElements(b)); -assertEquals([1, 2, 3], b); -assertUnoptimized(get_literal); - -// Optimize again -get_literal(3); -%OptimizeFunctionOnNextCall(get_literal); -b = get_literal(3); -assertTrue(%HasDoubleElements(b)); -assertOptimized(get_literal); - - -// Test: make sure allocation site information is updated through a -// transition from SMI->DOUBLE->PACKED -(function() { - function bar(a, b, c) { - return [a, b, c]; - } - - a = bar(1, 2, 3); - a[0] = 3.5; - a[1] = 'hi'; - b = bar(1, 2, 3); - assertKind(elements_kind.packed, b); -})(); - - -(function changeOptimizedEmptyArrayKind() { - function f() { - return new Array(); - } - var a = f(); - assertKind('packed smi elements', a); - a = f(); - assertKind('packed smi elements', a); - a = f(); - a.push(0.5); - assertKind('packed double elements', a); - %OptimizeFunctionOnNextCall(f); - a = f(); - assertKind('packed double elements', a); -})(); - -(function changeOptimizedArrayLiteralKind() { - function f() { - return [1, 2]; - } - var a = f(); - assertKind('packed smi elements', a); - - a = f(); - a.push(0.5); - assertKind('packed double elements', a); - - a = f(); - assertKind('packed double elements', a); - assertFalse(isHoley(a)); - - a = f(); - a.push(undefined); - assertKind('packed elements', a); - assertFalse(isHoley(a)); - - a = f(); - assertKind('packed elements', a); - assertFalse(isHoley(a)); - - %OptimizeFunctionOnNextCall(f); - - a = f(); - assertKind('packed elements', a); - assertFalse(isHoley(a)); - - a = f(); - assertKind('packed elements', a); - assertFalse(isHoley(a)); -})(); - -(function changeOptimizedEmptyArrayLiteralKind() { - function f() { - return []; - } - var a = f(); - assertKind('packed smi elements', a); - assertFalse(isHoley(a)); - - a = f(); - a.push(0.5); - assertKind('packed double elements', a); - assertFalse(isHoley(a)); - - a = f(); - assertKind('packed double elements', a); - assertFalse(isHoley(a)); - - %OptimizeFunctionOnNextCall(f); - - a = f(); - assertKind('packed double elements', a); - assertFalse(isHoley(a)); - - a = f(); - assertKind('packed double elements', a); - assertFalse(isHoley(a)); -})(); - -(function changeEmptyArrayLiteralKind2() { - function f() { - var literal = []; - %HeapObjectVerify(literal); - return literal; - } - var a = f(); - assertKind('packed smi elements', a); - assertFalse(isHoley(a)); - - a = f(); - a.push(0.5); - assertKind('packed double elements', a); - assertFalse(isHoley(a)); - - a = f(); - assertKind('packed double elements', a); - assertFalse(isHoley(a)); - - a = f(); - a.push(undefined); - assertKind('packed elements', a); - assertFalse(isHoley(a)); - - a = f(); - assertKind('packed elements', a); - assertFalse(isHoley(a)); - - a = f(); - a[10] = 1; - assertKind('packed elements', a); - assertTrue(isHoley(a)); - - a = f(); - assertKind('packed elements', a); - assertTrue(isHoley(a)); - - a = f(); - a[10000] = 1; - assertKind('dictionary elements', a); - assertFalse(isHoley(a)); - - a = f(); - assertKind('packed elements', a); - assertTrue(isHoley(a)); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-literal-transitions.js b/implementation-contributed/v8/mjsunit/array-literal-transitions.js deleted file mode 100644 index 6366839a62c..00000000000 --- a/implementation-contributed/v8/mjsunit/array-literal-transitions.js +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --ignition-osr --no-always-opt -// Flags: --opt - -// IC and Crankshaft support for smi-only elements in dynamic array literals. -function get(foo) { return foo; } // Used to generate dynamic values. - -function array_literal_test() { - var a0 = [1, 2, 3]; - assertTrue(%HasSmiElements(a0)); - var a1 = [get(1), get(2), get(3)]; - assertTrue(%HasSmiElements(a1)); - - var b0 = [1, 2, get("three")]; - assertTrue(%HasObjectElements(b0)); - var b1 = [get(1), get(2), get("three")]; - assertTrue(%HasObjectElements(b1)); - - var c0 = [1, 2, get(3.5)]; - assertTrue(%HasDoubleElements(c0)); - assertEquals(3.5, c0[2]); - assertEquals(2, c0[1]); - assertEquals(1, c0[0]); - - var c1 = [1, 2, 3.5]; - assertTrue(%HasDoubleElements(c1)); - assertEquals(3.5, c1[2]); - assertEquals(2, c1[1]); - assertEquals(1, c1[0]); - - var c2 = [get(1), get(2), get(3.5)]; - assertTrue(%HasDoubleElements(c2)); - assertEquals(3.5, c2[2]); - assertEquals(2, c2[1]); - assertEquals(1, c2[0]); - - var object = new Object(); - var d0 = [1, 2, object]; - assertTrue(%HasObjectElements(d0)); - assertEquals(object, d0[2]); - assertEquals(2, d0[1]); - assertEquals(1, d0[0]); - - var e0 = [1, 2, 3.5]; - assertTrue(%HasDoubleElements(e0)); - assertEquals(3.5, e0[2]); - assertEquals(2, e0[1]); - assertEquals(1, e0[0]); - - var f0 = [1, 2, [1, 2]]; - assertTrue(%HasObjectElements(f0)); - assertEquals([1,2], f0[2]); - assertEquals(2, f0[1]); - assertEquals(1, f0[0]); -} - -for (var i = 0; i < 3; i++) { - array_literal_test(); -} - %OptimizeFunctionOnNextCall(array_literal_test); -array_literal_test(); - -function test_large_literal() { - - function d() { - gc(); - return 2.5; - } - - function o() { - gc(); - return new Object(); - } - - large = - [ 0, 1, 2, 3, 4, 5, d(), d(), d(), d(), d(), d(), o(), o(), o(), o() ]; - assertFalse(%HasDictionaryElements(large)); - assertFalse(%HasSmiElements(large)); - assertFalse(%HasDoubleElements(large)); - assertTrue(%HasObjectElements(large)); - assertEquals(large, - [0, 1, 2, 3, 4, 5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, - new Object(), new Object(), new Object(), new Object()]); -} - -for (var i = 0; i < 3; i++) { - test_large_literal(); -} - %OptimizeFunctionOnNextCall(test_large_literal); -test_large_literal(); - -function deopt_array(use_literal) { - if (use_literal) { - return [.5, 3, 4]; - } else { - return new Array(); - } -} - -deopt_array(false); -deopt_array(false); -deopt_array(false); - %OptimizeFunctionOnNextCall(deopt_array); -var array = deopt_array(false); -assertOptimized(deopt_array); -deopt_array(true); -assertOptimized(deopt_array); -array = deopt_array(false); -assertOptimized(deopt_array); - -// Check that unexpected changes in the objects stored into the boilerplate -// also force a deopt. -function deopt_array_literal_all_smis(a) { - return [0, 1, a]; -} - -deopt_array_literal_all_smis(2); -deopt_array_literal_all_smis(3); -deopt_array_literal_all_smis(4); -array = deopt_array_literal_all_smis(4); -assertEquals(0, array[0]); -assertEquals(1, array[1]); -assertEquals(4, array[2]); -%OptimizeFunctionOnNextCall(deopt_array_literal_all_smis); -array = deopt_array_literal_all_smis(5); -array = deopt_array_literal_all_smis(6); -assertOptimized(deopt_array_literal_all_smis); -assertEquals(0, array[0]); -assertEquals(1, array[1]); -assertEquals(6, array[2]); - -array = deopt_array_literal_all_smis(.5); -assertUnoptimized(deopt_array_literal_all_smis); -assertEquals(0, array[0]); -assertEquals(1, array[1]); -assertEquals(.5, array[2]); - -function deopt_array_literal_all_doubles(a) { - return [0.5, 1, a]; -} - -deopt_array_literal_all_doubles(.5); -deopt_array_literal_all_doubles(.5); -deopt_array_literal_all_doubles(.5); -array = deopt_array_literal_all_doubles(0.5); -assertEquals(0.5, array[0]); -assertEquals(1, array[1]); -assertEquals(0.5, array[2]); -%OptimizeFunctionOnNextCall(deopt_array_literal_all_doubles); -array = deopt_array_literal_all_doubles(5); -array = deopt_array_literal_all_doubles(6); -assertOptimized(deopt_array_literal_all_doubles); -assertEquals(0.5, array[0]); -assertEquals(1, array[1]); -assertEquals(6, array[2]); - -var foo = new Object(); -array = deopt_array_literal_all_doubles(foo); -assertUnoptimized(deopt_array_literal_all_doubles); -assertEquals(0.5, array[0]); -assertEquals(1, array[1]); -assertEquals(foo, array[2]); - -(function literals_after_osr() { - var color = [0]; - // Trigger OSR. - while ((%GetOptimizationStatus(literals_after_osr) & - V8OptimizationStatus.kTopmostFrameIsTurboFanned) !== 0) {} - return [color[0]]; -})(); diff --git a/implementation-contributed/v8/mjsunit/array-methods-read-only-length.js b/implementation-contributed/v8/mjsunit/array-methods-read-only-length.js deleted file mode 100644 index 7de580d0744..00000000000 --- a/implementation-contributed/v8/mjsunit/array-methods-read-only-length.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function testAdd(mode) { - var a = []; - Object.defineProperty(a, "length", { writable : false}); - - function check(f) { - assertThrows(function() { f(a) }, TypeError); - assertFalse(0 in a); - assertEquals(0, a.length); - } - - function push(a) { - a.push(3); - } - - if (mode == "fast properties") %ToFastProperties(a); - - check(push); - check(push); - check(push); - %OptimizeFunctionOnNextCall(push); - check(push); - - function unshift(a) { - a.unshift(3); - } - - check(unshift); - check(unshift); - check(unshift); - %OptimizeFunctionOnNextCall(unshift); - check(unshift); - - function splice(a) { - a.splice(0, 0, 3); - } - - check(splice); - check(splice); - check(splice); - %OptimizeFunctionOnNextCall(splice); - check(splice); -} - -testAdd("fast properties"); - -testAdd("normalized"); - -function testRemove(a, mode) { - Object.defineProperty(a, "length", { writable : false}); - - function check(f) { - assertThrows(function() { f(a) }, TypeError); - assertEquals(3, a.length); - } - - if (mode == "fast properties") %ToFastProperties(a); - - function pop(a) { - a.pop(); - } - - check(pop); - check(pop); - check(pop); - %OptimizeFunctionOnNextCall(pop); - check(pop); - - function shift(a) { - a.shift(); - } - - check(shift); - check(shift); - check(shift); - %OptimizeFunctionOnNextCall(shift); - check(shift); - - function splice(a) { - a.splice(0, 1); - } - - check(splice); - check(splice); - check(splice); - %OptimizeFunctionOnNextCall(splice); - check(splice); - - %ClearFunctionFeedback(pop); - %ClearFunctionFeedback(shift); - %ClearFunctionFeedback(splice); -} - -for (var i = 0; i < 3; i++) { - var a = [1, 2, 3]; - if (i == 1) { - a = [1, 2, 3.5]; - } else if (i == 2) { - a = [1, 2, "string"]; - } - testRemove(a, "fast properties"); - testRemove(a, "normalized"); -} - -var b = []; -Object.defineProperty(b.__proto__, "0", { - set : function(v) { - b.x = v; - Object.defineProperty(b, "length", { writable : false }); - }, - get: function() { - return b.x; - } -}); - -b = []; -try { - b.push(3, 4, 5); -} catch(e) { } -assertFalse(1 in b); -assertFalse(2 in b); -assertEquals(0, b.length); - -b = []; -try { - b.unshift(3, 4, 5); -} catch(e) { } -assertFalse(1 in b); -assertFalse(2 in b); -assertEquals(0, b.length); - -b = [1, 2]; -try { - b.unshift(3, 4, 5); -} catch(e) { } -assertEquals(3, b[0]); -assertEquals(4, b[1]); -assertEquals(5, b[2]); -assertEquals(1, b[3]); -assertEquals(2, b[4]); -assertEquals(5, b.length); - -b = [1, 2]; - -Object.defineProperty(b.__proto__, "4", { - set : function(v) { - b.z = v; - Object.defineProperty(b, "length", { writable : false }); - }, - get: function() { - return b.z; - } -}); - -try { - b.unshift(3, 4, 5); -} catch(e) { } - -assertFalse(2 in b); -assertFalse(3 in b); -assertEquals(2, b.length); diff --git a/implementation-contributed/v8/mjsunit/array-natives-elements.js b/implementation-contributed/v8/mjsunit/array-natives-elements.js deleted file mode 100644 index aa3bea49d02..00000000000 --- a/implementation-contributed/v8/mjsunit/array-natives-elements.js +++ /dev/null @@ -1,312 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// IC and Crankshaft support for smi-only elements in dynamic array literals. -function get(foo) { return foo; } // Used to generate dynamic values. - -// This code exists to eliminate the learning influence of AllocationSites -// on the following tests. -function make_array_string(literal) { - this.__sequence = this.__sequence + 1; - return "/* " + this.__sequence + " */ " + literal; -} -function make_array(literal) { - return eval(make_array_string(literal)); -} - -var __sequence = 0; -function array_natives_test() { - - // Ensure small array literals start in specific element kind mode. - assertTrue(%HasSmiElements([])); - assertTrue(%HasSmiElements([1])); - assertTrue(%HasSmiElements([1,2])); - assertTrue(%HasDoubleElements([1.1])); - assertTrue(%HasDoubleElements([1.1,2])); - - // Push - var a0 = make_array("[1, 2, 3]"); - assertTrue(%HasSmiElements(a0)); - assertEquals(4, a0.push(4)); - assertTrue(%HasSmiElements(a0)); - assertEquals(5, a0.push(1.3)); - assertTrue(%HasDoubleElements(a0)); - assertEquals(6, a0.push(1.5)); - assertTrue(%HasDoubleElements(a0)); - assertEquals(7, a0.push({})); - assertTrue(%HasObjectElements(a0)); - assertEquals(8, a0.push({})); - assertTrue(%HasObjectElements(a0)); - assertEquals([1,2,3,4,1.3,1.5,{},{}], a0); - - // Concat - var a1; - a1 = [1,2,3].concat([]); - //assertTrue(%HasSmiElements(a1)); - assertEquals([1,2,3], a1); - a1 = [1,2,3].concat([4,5,6]); - assertTrue(%HasSmiElements(a1)); - assertEquals([1,2,3,4,5,6], a1); - a1 = [1,2,3].concat([4,5,6], [7,8,9]); - assertTrue(%HasSmiElements(a1)); - assertEquals([1,2,3,4,5,6,7,8,9], a1); - a1 = [1.1,2,3].concat([]); - assertTrue(%HasDoubleElements(a1)); - assertEquals([1.1,2,3], a1); - a1 = [1,2,3].concat([1.1, 2]); - assertTrue(%HasDoubleElements(a1)); - assertEquals([1,2,3,1.1,2], a1); - a1 = [1.1,2,3].concat([1, 2]); - assertTrue(%HasDoubleElements(a1)); - assertEquals([1.1,2,3,1,2], a1); - a1 = [1.1,2,3].concat([1.2, 2]); - assertTrue(%HasDoubleElements(a1)); - assertEquals([1.1,2,3,1.2,2], a1); - - a1 = [1,2,3].concat([{}]); - assertTrue(%HasObjectElements(a1)); - assertEquals([1,2,3,{}], a1); - a1 = [1.1,2,3].concat([{}]); - assertTrue(%HasObjectElements(a1)); - assertEquals([1.1,2,3,{}], a1); - a1 = [{}].concat([1,2,3]); - assertTrue(%HasObjectElements(a1)); - assertEquals([{},1,2,3], a1); - a1 = [{}].concat([1.1,2,3]); - assertTrue(%HasObjectElements(a1)); - assertEquals([{},1.1,2,3], a1); - - // Slice - var a2 = [1,2,3]; - assertTrue(%HasSmiElements(a2.slice())); - assertTrue(%HasSmiElements(a2.slice(1))); - assertTrue(%HasSmiElements(a2.slice(1, 2))); - assertEquals([1,2,3], a2.slice()); - assertEquals([2,3], a2.slice(1)); - assertEquals([2], a2.slice(1,2)); - a2 = [1.1,2,3]; - assertTrue(%HasDoubleElements(a2.slice())); - assertTrue(%HasDoubleElements(a2.slice(1)) || - %HasSmiElements(a2.slice(1))); - assertTrue(%HasDoubleElements(a2.slice(1, 2)) || - %HasSmiElements(a2.slice(1, 2))); - assertEquals([1.1,2,3], a2.slice()); - assertEquals([2,3], a2.slice(1)); - assertEquals([2], a2.slice(1,2)); - a2 = [{},2,3]; - assertTrue(%HasObjectElements(a2.slice())); - assertTrue(%HasObjectElements(a2.slice(1)) || - %HasSmiElements(a2.slice(1))); - assertTrue(%HasObjectElements(a2.slice(1, 2)) || - %HasSmiElements(a2.slice(1, 2))); - assertEquals([{},2,3], a2.slice()); - assertEquals([2,3], a2.slice(1)); - assertEquals([2], a2.slice(1,2)); - - // Splice - var a3 = [1,2,3]; - var a3r; - a3r = a3.splice(0, 0); - assertTrue(%HasSmiElements(a3r)); - assertTrue(%HasSmiElements(a3)); - assertEquals([], a3r); - assertEquals([1, 2, 3], a3); - a3 = [1,2,3]; - a3r = a3.splice(0, 1); - assertTrue(%HasSmiElements(a3r)); - assertTrue(%HasSmiElements(a3)); - assertEquals([1], a3r); - assertEquals([2, 3], a3); - a3 = [1,2,3]; - a3r = a3.splice(0, 0, 2); - assertTrue(%HasSmiElements(a3r)); - assertTrue(%HasSmiElements(a3)); - assertEquals([], a3r); - assertEquals([2, 1, 2, 3], a3); - a3 = [1,2,3]; - a3r = a3.splice(0, 1, 2); - assertTrue(%HasSmiElements(a3r)); - assertTrue(%HasSmiElements(a3)); - assertEquals([1], a3r); - assertEquals([2, 2, 3], a3); - a3 = [1.1,2,3]; - a3r = a3.splice(0, 0); - assertTrue(%HasDoubleElements(a3r)); - assertTrue(%HasDoubleElements(a3)); - assertEquals([], a3r); - assertEquals([1.1, 2, 3], a3); - a3 = [1.1, 2, 3]; - a3r = a3.splice(0, 1); - assertTrue(%HasDoubleElements(a3r)); - assertTrue(%HasDoubleElements(a3)); - assertEquals([1.1], a3r); - assertEquals([2, 3], a3); - a3 = [1.1, 2, 3]; - a3r = a3.splice(0, 0, 2); - assertTrue(%HasDoubleElements(a3r)); - assertTrue(%HasDoubleElements(a3)); - assertEquals([], a3r); - assertEquals([2, 1.1, 2, 3], a3); - a3 = [1.1, 2, 3]; - assertTrue(%HasDoubleElements(a3)); - a3r = a3.splice(0, 1, 2); - assertTrue(%HasDoubleElements(a3r)); - assertTrue(%HasDoubleElements(a3)); - assertEquals([1.1], a3r); - assertEquals([2, 2, 3], a3); - a3 = [1.1,2,3]; - a3r = a3.splice(0, 0, 2.1); - assertTrue(%HasDoubleElements(a3r)); - assertTrue(%HasDoubleElements(a3)); - assertEquals([], a3r); - assertEquals([2.1, 1.1, 2, 3], a3); - a3 = [1.1,2,3]; - a3r = a3.splice(0, 1, 2.2); - assertTrue(%HasDoubleElements(a3r)); - assertTrue(%HasDoubleElements(a3)); - assertEquals([1.1], a3r); - assertEquals([2.2, 2, 3], a3); - a3 = [1,2,3]; - a3r = a3.splice(0, 0, 2.1); - assertTrue(%HasDoubleElements(a3r)); - assertTrue(%HasDoubleElements(a3)); - assertEquals([], a3r); - assertEquals([2.1, 1, 2, 3], a3); - a3 = [1,2,3]; - a3r = a3.splice(0, 1, 2.2); - assertTrue(%HasDoubleElements(a3r)); - assertTrue(%HasDoubleElements(a3)); - assertEquals([1], a3r); - assertEquals([2.2, 2, 3], a3); - a3 = [{},2,3]; - a3r = a3.splice(0, 0); - assertTrue(%HasObjectElements(a3r)); - assertTrue(%HasObjectElements(a3)); - assertEquals([], a3r); - assertEquals([{}, 2, 3], a3); - a3 = [1,2,{}]; - a3r = a3.splice(0, 1); - assertTrue(%HasObjectElements(a3r)); - assertTrue(%HasObjectElements(a3)); - assertEquals([1], a3r); - assertEquals([2, {}], a3); - a3 = [1,2,3]; - a3r = a3.splice(0, 0, {}); - assertTrue(%HasObjectElements(a3r)); - assertTrue(%HasObjectElements(a3)); - assertEquals([], a3r); - assertEquals([{}, 1, 2, 3], a3); - a3 = [1,2,3]; - a3r = a3.splice(0, 1, {}); - assertTrue(%HasObjectElements(a3r)); - assertTrue(%HasObjectElements(a3)); - assertEquals([1], a3r); - assertEquals([{}, 2, 3], a3); - a3 = [1.1,2,3]; - a3r = a3.splice(0, 0, {}); - assertTrue(%HasObjectElements(a3r)); - assertTrue(%HasObjectElements(a3)); - assertEquals([], a3r); - assertEquals([{}, 1.1, 2, 3], a3); - a3 = [1.1,2,3]; - a3r = a3.splice(0, 1, {}); - assertTrue(%HasObjectElements(a3r)); - assertTrue(%HasObjectElements(a3)); - assertEquals([1.1], a3r); - assertEquals([{}, 2, 3], a3); - a3 = [1.1, 2.2, 3.3]; - a3r = a3.splice(2, 1); - assertTrue(%HasDoubleElements(a3r)); - assertTrue(%HasDoubleElements(a3)); - assertEquals([3.3], a3r); - //assertTrue(%HasDoubleElements(a3r)); - assertEquals([1.1, 2.2], a3); - //assertTrue(%HasDoubleElements(a3r)); - a3r = a3.splice(1, 1, 4.4, 5.5); - //assertTrue(%HasDoubleElements(a3r)); - //assertTrue(%HasDoubleElements(a3)); - assertEquals([2.2], a3r); - assertEquals([1.1, 4.4, 5.5], a3); - - // Pop - var a4 = [1,2,3]; - assertEquals(3, a4.pop()); - assertEquals([1,2], a4); - //assertTrue(%HasSmiElements(a4)); - a4 = [1.1,2,3]; - assertEquals(3, a4.pop()); - assertEquals([1.1,2], a4); - //assertTrue(%HasDoubleElements(a4)); - a4 = [{},2,3]; - assertEquals(3, a4.pop()); - assertEquals([{},2], a4); - //assertTrue(%HasObjectElements(a4)); - - // Shift - var a4 = [1,2,3]; - assertEquals(1, a4.shift()); - assertEquals([2,3], a4); - //assertTrue(%HasSmiElements(a4)); - a4 = [1.1,2,3]; - assertEquals(1.1, a4.shift()); - assertEquals([2,3], a4); - //assertTrue(%HasDoubleElements(a4)); - a4 = [{},2,3]; - assertEquals({}, a4.shift()); - assertEquals([2,3], a4); - //assertTrue(%HasObjectElements(a4)); - - // Unshift - var a4 = [1,2,3]; - assertEquals(4, a4.unshift(1)); - assertTrue(%HasSmiElements(a4)); - assertEquals([1,1,2,3], a4); - a4 = [1,2,3]; - assertEquals(4, a4.unshift(1.1)); - assertTrue(%HasDoubleElements(a4)); - assertEquals([1.1,1,2,3], a4); - a4 = [1.1,2,3]; - assertEquals(4, a4.unshift(1)); - assertTrue(%HasDoubleElements(a4)); - assertEquals([1,1.1,2,3], a4); - a4 = [{},2,3]; - assertEquals(4, a4.unshift(1)); - assertTrue(%HasObjectElements(a4)); - assertEquals([1,{},2,3], a4); - a4 = [{},2,3]; - assertEquals(4, a4.unshift(1.1)); - assertTrue(%HasObjectElements(a4)); - assertEquals([1.1,{},2,3], a4); -} - -for (var i = 0; i < 3; i++) { - array_natives_test(); -} -%OptimizeFunctionOnNextCall(array_natives_test); -array_natives_test(); diff --git a/implementation-contributed/v8/mjsunit/array-non-smi-length.js b/implementation-contributed/v8/mjsunit/array-non-smi-length.js deleted file mode 100644 index 11277aff606..00000000000 --- a/implementation-contributed/v8/mjsunit/array-non-smi-length.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function TestNonSmiArrayLength() { - function f(a) { - return a.length+1; - } - - var a = []; - a.length = 0xFFFF; - assertSame(0x10000, f(a)); - assertSame(0x10000, f(a)); - - %OptimizeFunctionOnNextCall(f); - a.length = 0xFFFFFFFF; - assertSame(0x100000000, f(a)); -} - -TestNonSmiArrayLength(); diff --git a/implementation-contributed/v8/mjsunit/array-pop.js b/implementation-contributed/v8/mjsunit/array-pop.js deleted file mode 100644 index 17771839abc..00000000000 --- a/implementation-contributed/v8/mjsunit/array-pop.js +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// -// Check pops with various number of arguments. -(function() { - var a = []; - for (var i = 0; i < 7; i++) { - a = [7, 6, 5, 4, 3, 2, 1]; - - assertEquals(1, a.pop(), "1st pop"); - assertEquals(6, a.length, "length 1st pop"); - - assertEquals(2, a.pop(1), "2nd pop"); - assertEquals(5, a.length, "length 2nd pop"); - - assertEquals(3, a.pop(1, 2), "3rd pop"); - assertEquals(4, a.length, "length 3rd pop"); - - assertEquals(4, a.pop(1, 2, 3), "4th pop"); - assertEquals(3, a.length, "length 4th pop"); - - assertEquals(5, a.pop(), "5th pop"); - assertEquals(2, a.length, "length 5th pop"); - - assertEquals(6, a.pop(), "6th pop"); - assertEquals(1, a.length, "length 6th pop"); - - assertEquals(7, a.pop(), "7th pop"); - assertEquals(0, a.length, "length 7th pop"); - - assertEquals(undefined, a.pop(), "8th pop"); - assertEquals(0, a.length, "length 8th pop"); - - assertEquals(undefined, a.pop(1, 2, 3), "9th pop"); - assertEquals(0, a.length, "length 9th pop"); - } - - // Check that pop works on inherited properties. - for (var i = 0; i < 10 ;i++) { // Ensure ICs are stabilized. - Array.prototype[1] = 1; - Array.prototype[3] = 3; - Array.prototype[5] = 5; - Array.prototype[7] = 7; - Array.prototype[9] = 9; - a = [0,1,2,,4,,6,7,8,,]; - assertEquals(10, a.length, "inherit-initial-length"); - for (var j = 9; j >= 0; j--) { - assertEquals(j + 1, a.length, "inherit-pre-length-" + j); - assertTrue(j in a, "has property " + j); - var own = a.hasOwnProperty(j); - var inherited = Array.prototype.hasOwnProperty(j); - assertEquals(j, a.pop(), "inherit-pop"); - assertEquals(j, a.length, "inherit-post-length"); - assertFalse(a.hasOwnProperty(j), "inherit-deleted-own-" + j); - assertEquals(inherited, Array.prototype.hasOwnProperty(j), - "inherit-not-deleted-inherited" + j); - } - Array.prototype.length = 0; // Clean-up. - } - - // Check that pop works on inherited properties for - // arrays with array prototype. - for (var i = 0; i < 10 ;i++) { // Ensure ICs are stabilized. - var array_proto = []; - array_proto[1] = 1; - array_proto[3] = 3; - array_proto[5] = 5; - array_proto[7] = 7; - array_proto[9] = 9; - a = [0,1,2,,4,,6,7,8,,]; - a.__proto__ = array_proto; - assertEquals(10, a.length, "array_proto-inherit-initial-length"); - for (var j = 9; j >= 0; j--) { - assertEquals(j + 1, a.length, "array_proto-inherit-pre-length-" + j); - assertTrue(j in a, "array_proto-has property " + j); - var own = a.hasOwnProperty(j); - var inherited = array_proto.hasOwnProperty(j); - assertEquals(j, a.pop(), "array_proto-inherit-pop"); - assertEquals(j, a.length, "array_proto-inherit-post-length"); - assertFalse(a.hasOwnProperty(j), "array_proto-inherit-deleted-own-" + j); - assertEquals(inherited, array_proto.hasOwnProperty(j), - "array_proto-inherit-not-deleted-inherited" + j); - } - } - - // Check that pop works on inherited properties for - // arrays with array prototype. -})(); - -// Test the case of not JSArray receiver. -// Regression test for custom call generators, see issue 684. -(function() { - var a = []; - for (var i = 0; i < 100; i++) a.push(i); - var x = {__proto__: a}; - for (var i = 0; i < 100; i++) { - assertEquals(99 - i, x.pop(), i + 'th iteration'); - } -})(); - -(function () { - function f(a, deopt) { - var v = a.pop() ? 1 : 2; - if (deopt) %DeoptimizeFunction(f); - return v; - } - - var a = [true, true, true, true] - assertEquals(1, f(a, false)); - assertEquals(1, f(a, false)); - %OptimizeFunctionOnNextCall(f); - assertEquals(1, f(a, false)); - assertEquals(1, f(a, true)); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-every.js b/implementation-contributed/v8/mjsunit/array-prototype-every.js deleted file mode 100644 index a9e415e084a..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-every.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// every - -(function () { - var array = [,]; - - function every() { - return array.every(v => v > 0); - } - - assertEquals(every(), true); - - array.__proto__.push(-6); - assertEquals(every(), false); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-filter.js b/implementation-contributed/v8/mjsunit/array-prototype-filter.js deleted file mode 100644 index 958df23a263..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-filter.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// filter - -(function () { - var array = [,]; - - function filter() { - return array.filter(v => v > 0); - } - - assertEquals(filter(), []); - - array.__proto__.push(6); - var narr = filter(); - assertNotEquals(Object.getOwnPropertyDescriptor(narr, 0), undefined); - assertEquals(narr, [6]); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-find.js b/implementation-contributed/v8/mjsunit/array-prototype-find.js deleted file mode 100644 index 8847fddd63d..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-find.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// find - -(function () { - var array = [,]; - - function find() { - return array.find(v => v > 0); - } - - assertEquals(find(), undefined); - - array.__proto__.push(6); - assertEquals(find(), 6); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-findindex.js b/implementation-contributed/v8/mjsunit/array-prototype-findindex.js deleted file mode 100644 index 5d627ca0439..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-findindex.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// findIndex - -(function () { - var array = [,]; - - function findIndex() { - return array.findIndex(v => v > 0); - } - - assertEquals(findIndex(), -1); - - array.__proto__.push(6); - assertEquals(findIndex(), 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-foreach.js b/implementation-contributed/v8/mjsunit/array-prototype-foreach.js deleted file mode 100644 index 7f01d8ef655..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-foreach.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// forEach - -(function () { - var array = [,]; - - function increment(v, k, arr) { arr[k] = v + 1; } - function forEach() { - array.forEach(increment); - } - - forEach(); - assertEquals(array, [,]); - - // behavior from the prototype - array.__proto__.push(5); - assertEquals(Object.getOwnPropertyDescriptor(array, 0), undefined); - forEach(); - assertNotEquals(Object.getOwnPropertyDescriptor(array, 0), undefined); - assertEquals(array[0], 6); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-includes.js b/implementation-contributed/v8/mjsunit/array-prototype-includes.js deleted file mode 100644 index 5c1d926372a..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-includes.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// includes - -(function() { - const iarr = [,3]; - - function includes(arr, val) { - return arr.includes(val); - } - - assertFalse(includes(iarr, 2)); - assertTrue(includes(iarr, 3)); - - iarr.__proto__ = [2]; - assertTrue(includes(iarr, 2)); -})(); - -// This pollutes the Array prototype, so we should not run more tests -// in the same environment after this. -(function () { - var array = [,]; - - function includes(val) { - return array.includes(val); - } - - assertFalse(includes(6)); - - array.__proto__.push(6); - assertTrue(includes(6)); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-indexof.js b/implementation-contributed/v8/mjsunit/array-prototype-indexof.js deleted file mode 100644 index ca639f4da21..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-indexof.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// indexOf - -/* Test behaviors when the prototype has elements */ - -(function() { - const iarr = [,3]; - - function indexOf(arr, val) { - return arr.indexOf(val); - } - - assertEquals(-1, indexOf(iarr, 2)); - assertEquals(1, indexOf(iarr, 3)); - - iarr.__proto__ = [2]; - assertEquals(0, indexOf(iarr, 2)); -})(); - -// This pollutes the Array prototype, so we should not run more tests -// in the same environment after this. -(function () { - var array = [,]; - - function indexOf(val) { - return array.indexOf(val); - } - - assertEquals(indexOf(6), -1); - - array.__proto__.push(6); - assertEquals(indexOf(6), 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-lastindexof.js b/implementation-contributed/v8/mjsunit/array-prototype-lastindexof.js deleted file mode 100644 index b0345301c95..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-lastindexof.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// lastIndexOf - -(function () { - var array = [,]; - - function lastIndexOf(val) { - return array.lastIndexOf(val); - } - - assertEquals(lastIndexOf(6), -1); - - array.__proto__.push(6); - assertEquals(lastIndexOf(6), 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-map.js b/implementation-contributed/v8/mjsunit/array-prototype-map.js deleted file mode 100644 index 1ef6088669d..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-map.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// map -(function () { - var array = [,]; - - function map() { - return array.map(x => x + 1); - } - - assertEquals(map(), [,]); - - array.__proto__.push(5); - var narr = map(); - assertNotEquals(Object.getOwnPropertyDescriptor(narr, 0), undefined); - assertEquals(narr[0], 6); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-pop.js b/implementation-contributed/v8/mjsunit/array-prototype-pop.js deleted file mode 100644 index 730b98255ae..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-pop.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// pop - -(function () { - var array = [,]; - - function pop() { - return array.pop(); - } - - assertEquals(pop(), undefined); -})(); - - -(function () { - var array = [,]; - - function pop() { - return array.pop(); - } - - array.__proto__.push(6); - assertEquals(pop(), 6); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-reduce.js b/implementation-contributed/v8/mjsunit/array-prototype-reduce.js deleted file mode 100644 index 593066f897a..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-reduce.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// reduce - -(function () { - var array = [, 3]; - - function accumulate (prev, cur, curIdx, arr) { arr[curIdx] = cur + prev; } - function reduce() { - array.reduce(accumulate); - } - - reduce(); - assertEquals(array, [,3]); - - array.__proto__.push(3); - reduce(); - assertEquals(array, [, 6]); - assertEquals(Object.getOwnPropertyDescriptor(array, 0), undefined); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-slice.js b/implementation-contributed/v8/mjsunit/array-prototype-slice.js deleted file mode 100644 index d4bcad277d4..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-slice.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// slice -(function () { - var array = [,]; - - function slice() { - return array.slice(); - } - - assertEquals(slice(), [,]); - - array.__proto__.push(5); - var narr = slice(); - assertNotEquals(Object.getOwnPropertyDescriptor(narr, 0), undefined); - assertEquals(narr[0], 5); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-prototype-some.js b/implementation-contributed/v8/mjsunit/array-prototype-some.js deleted file mode 100644 index 21184441684..00000000000 --- a/implementation-contributed/v8/mjsunit/array-prototype-some.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* Test behaviors when the prototype has elements */ - -// some - -(function () { - var array = [,]; - - function some() { - return array.some(v => v > 0); - } - - assertEquals(some(), false); - - array.__proto__.push(6); - assertEquals(some(), true); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-push-hole-double.js b/implementation-contributed/v8/mjsunit/array-push-hole-double.js deleted file mode 100644 index 9a4a0ad4979..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push-hole-double.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -[1].push(1); - -(function PushHoleBitPattern() { - function g(src, dst, i) { - dst[i] = src[i]; - } - - var b = new ArrayBuffer(8); - var i32 = new Int32Array(b); - i32[0] = 0xFFF7FFFF; - i32[1] = 0xFFF7FFFF; - var f64 = new Float64Array(b); - - var a = [,2.5]; - a.push(f64[0]); - assertTrue(Number.isNaN(a[2])); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-push-non-smi-value.js b/implementation-contributed/v8/mjsunit/array-push-non-smi-value.js deleted file mode 100644 index 460dd2a911e..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push-non-smi-value.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check pushes of non-SMI values. -var a = []; -function func() { - return a.push(0x40000000) > 60; -} - -assertFalse(func()); -assertFalse(func()); -assertFalse(func()); diff --git a/implementation-contributed/v8/mjsunit/array-push.js b/implementation-contributed/v8/mjsunit/array-push.js deleted file mode 100644 index ece3319bc15..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push.js +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Check pushes with various number of arguments. -(function() { - var a = []; - for (var i = 0; i < 7; i++) { - a = []; - - assertEquals(0, a.push()); - assertEquals([], a, "after .push()"); - - assertEquals(1, a.push(1), "length after .push(1)"); - assertEquals([1], a, "after .push(1)"); - - assertEquals(3, a.push(2, 3), "length after .push(2, 3)"); - assertEquals([1, 2, 3], a, "after .push(2, 3)"); - - assertEquals(6, a.push(4, 5, 6), - "length after .push(4, 5, 6)"); - assertEquals([1, 2, 3, 4, 5, 6], a, - "after .push(4, 5, 5)"); - - assertEquals(10, a.push(7, 8, 9, 10), - "length after .push(7, 8, 9, 10)"); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], a, - "after .push(7, 8, 9, 10)"); - - assertEquals(15, a.push(11, 12, 13, 14, 15), - "length after .push(11, 12, 13, 14, 15)"); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], a, - "after .push(11, 12, 13, 14, 15)"); - - assertEquals(21, a.push(16, 17, 18, 19, 20, 21), - "length after .push(16, 17, 18, 19, 20, 21)"); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], a, - "after .push(16, 17, 18, 19, 20, 21)"); - - assertEquals(28, a.push(22, 23, 24, 25, 26, 27, 28), - "length hafter .push(22, 23, 24, 25, 26, 27, 28)"); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], a, - "after .push(22, 23, 24, 25, 26, 27, 28)"); - } -})(); - -// Excerises various pushes to the array at the end of new space. -(function() { - var a = undefined; - for (var i = 0; i < 7; i++) { - a = []; - assertEquals(1, a.push(1)); - assertEquals(2, a.push(2)); - assertEquals(3, a.push(3)); - assertEquals(4, a.push(4)); - assertEquals(5, a.push(5)); - assertEquals(6, a.push(6)); - assertEquals(7, a.push(7)); - assertEquals(8, a.push(8)); - assertEquals(9, a.push(9)); - assertEquals(10, a.push(10)); - assertEquals(11, a.push(11)); - assertEquals(12, a.push(12)); - assertEquals(13, a.push(13)); - assertEquals(14, a.push(14)); - assertEquals(15, a.push(15)); - assertEquals(16, a.push(16)); - assertEquals(17, a.push(17)); - assertEquals(18, a.push(18)); - assertEquals(19, a.push(19)); - assertEquals(20, a.push(20)); - assertEquals(21, a.push(21)); - assertEquals(22, a.push(22)); - assertEquals(23, a.push(23)); - assertEquals(24, a.push(24)); - assertEquals(25, a.push(25)); - assertEquals(26, a.push(26)); - assertEquals(27, a.push(27)); - assertEquals(28, a.push(28)); - assertEquals(29, a.push(29)); - } -})(); - -// Test the case of not JSArray receiver. -// Regression test for custom call generators, see issue 684. -(function() { - var x = {__proto__: []}; - for (var i = 0; i < 100; i++) { - x.push("a"); - assertEquals(i + 1, x.length, i + 'th iteration'); - } -})(); - -(function() { - function f(a, i) { - a.push(i); - } - - var a = [1,2,3]; - a.f = function() { return 10; } - f(a, 4); - f(a, 5); - f(a, 6); - f(a, 7); - f(a, {}); - assertEquals(10, a.f()); -})(); - -(function() { - function f(a, i) { - a.push(i); - } - - var a = [1,2,3]; - a.f = function() { return 10; } - f(a, 4); - f(a, 5); - f(a, 6); - %OptimizeFunctionOnNextCall(f); - f(a, 7); - f(a, {}); - assertEquals(10, a.f()); -})(); - - -(function testDoubleArrayPush() { - var a = []; - var max = 1000; - for (var i = 0; i < max; i++) { - a.push(i + 0.1); - } - assertEquals(max, a.length); - for (var i = 0; i < max; i++) { - assertEquals(i+0.1, a[i]); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/array-push10.js b/implementation-contributed/v8/mjsunit/array-push10.js deleted file mode 100644 index 223186e0ec9..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push10.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __f_17(__v_9) { - var __v_10 = 0; - var count = 10000; - while (count-- != 0) { - __v_9.push(0); - if (++__v_10 >= 2) return __v_9; - __v_10 = {}; - } -} - -__v_14 = __f_17([]); diff --git a/implementation-contributed/v8/mjsunit/array-push11.js b/implementation-contributed/v8/mjsunit/array-push11.js deleted file mode 100644 index c50d232568b..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push11.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __f_17(__v_9) { - var __v_10 = 0; - var count = 100000; - while (count-- != 0) { - var l = __v_9.push(0); - if (++__v_10 >= 2) return __v_9; - __v_10 = {}; - } - return __v_9; -} - -let a = __f_17([]); -assertEquals(a[0], 0); -assertEquals(a[10000], 0); diff --git a/implementation-contributed/v8/mjsunit/array-push12.js b/implementation-contributed/v8/mjsunit/array-push12.js deleted file mode 100644 index f4c15b484b4..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push12.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = []; -for (var i = -20; i < 0; ++i) { - a[i] = 0; -} - -function g() { - [].push.apply(a, arguments); -} - -function f() { - g(); -} - -g(); -g(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/array-push13.js b/implementation-contributed/v8/mjsunit/array-push13.js deleted file mode 100644 index 8f297ed69fd..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push13.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __f_17(__v_9) { - for (var count = 0; count < 20000; ++count) { - if (count < 100) { - __v_9.push(3); - } else if (count < 2500) { - __v_9.push(2.5); - } else { - __v_9.push(true); - } - } - return __v_9; -} - -let a = __f_17([]); -assertEquals(a[0], 3); -assertEquals(a[10], 3); -assertEquals(a[2499], 2.5); -assertEquals(a[10000], true); diff --git a/implementation-contributed/v8/mjsunit/array-push14.js b/implementation-contributed/v8/mjsunit/array-push14.js deleted file mode 100644 index 4514d5893e9..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push14.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __f_17(__v_9) { - var __v_10 = 0; - var count = 100000; - while (count-- != 0) { - var l = __v_9.push(0.5); - if (++__v_10 >= 2) return __v_9; - __v_10 = {}; - } - return __v_9; -} - -let a = __f_17([2.2]); -assertEquals(a[0], 2.2); -assertEquals(a[10000], 0.5); diff --git a/implementation-contributed/v8/mjsunit/array-push2.js b/implementation-contributed/v8/mjsunit/array-push2.js deleted file mode 100644 index fe4be4eb3e8..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push2.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var array = []; -var v = 0; - -Object.defineProperty(Array.prototype, "0", { - get: function() { return "get " + v; }, - set: function(value) { v += value; } -}); - -array[0] = 10; -assertEquals(0, array.length); -assertEquals(10, v); -assertEquals("get 10", array[0]); - -array.push(100); -assertEquals(1, array.length); -assertEquals(110, v); -assertEquals("get 110", array[0]); diff --git a/implementation-contributed/v8/mjsunit/array-push3.js b/implementation-contributed/v8/mjsunit/array-push3.js deleted file mode 100644 index 99bd857a738..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push3.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var array = []; - -function push(array, value) { - array.push(value); -} - -push(array, 0); -push(array, 1); -push(array, 2); -%OptimizeFunctionOnNextCall(push); -push(array, 3); - -var v = 0; -Object.defineProperty(Array.prototype, "4", { - get: function() { return 100; }, - set: function(value) { v = value; } -}); - -push(array, 4); - -assertEquals(5, array.length); -assertEquals(100, array[4]); -assertEquals(4, v); diff --git a/implementation-contributed/v8/mjsunit/array-push4.js b/implementation-contributed/v8/mjsunit/array-push4.js deleted file mode 100644 index 678873fb3af..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push4.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v = 0; -var my_array_proto = {}; -my_array_proto.__proto__ = [].__proto__; -Object.defineProperty(my_array_proto, "0", { -get: function() { return "get " + v; }, -set: function(value) { v += value; } -}); - - -// Test that element accessors are called in standard push cases. -array = []; -array.__proto__ = my_array_proto; - -array[0] = 10; -assertEquals(0, array.length); -assertEquals(10, v); -assertEquals("get 10", array[0]); - -Array.prototype.push.call(array, 100); -assertEquals(1, array.length); -assertEquals(110, v); -assertEquals("get 110", array[0]); - -array = []; -array.__proto__ = my_array_proto; - -assertEquals(0, array.length); -array.push(110); -assertEquals(1, array.length); -assertEquals(220, v); -assertEquals("get 220", array[0]); - -// Test that elements setters/getters on prototype chain are property detected -// and don't lead to overzealous optimization. -v = 0; -function push_wrapper_1(array, value) { - array.push(value); -} -array = []; -array.__proto__ = my_array_proto; -push_wrapper_1(array, 100); -assertEquals(1, array.length); -assertEquals(100, v); -push_wrapper_1(array, 100); -assertEquals(2, array.length); -assertEquals(100, v); -assertEquals("get 100", array[0]); -%OptimizeFunctionOnNextCall(push_wrapper_1); -array = []; -array.__proto__ = my_array_proto; -push_wrapper_1(array, 100); -assertEquals(1, array.length); -assertEquals(200, v); -assertEquals("get 200", array[0]); diff --git a/implementation-contributed/v8/mjsunit/array-push5.js b/implementation-contributed/v8/mjsunit/array-push5.js deleted file mode 100644 index 9961ff98c33..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push5.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -var v = 0; - -// Test that elements setters/getters on prototype chain set after the fact are -// property detected and don't lead to overzealous optimization. -var my_array_proto = {}; -my_array_proto.__proto__ = [].__proto__; - -function push_wrapper_2(array, value) { - array.push(value); -} -array = []; -array.__proto__ = my_array_proto; -push_wrapper_2(array, 66); -assertEquals(1, array.length); -assertEquals(0, v); -assertEquals(66, array[0]); -push_wrapper_2(array, 77); -assertEquals(2, array.length); -assertEquals(0, v); -assertEquals(77, array[1]); -%OptimizeFunctionOnNextCall(push_wrapper_2); -push_wrapper_2(array, 88); -assertEquals(3, array.length); -assertEquals(0, v); -assertEquals(88, array[2]); -assertOptimized(push_wrapper_2); -// Defining accessor should deopt optimized push. -Object.defineProperty(my_array_proto, "3", { -get: function() { return "get " + v; }, -set: function(value) { v += value; } -}); -assertUnoptimized(push_wrapper_2); -push_wrapper_2(array, 99); -assertEquals(4, array.length); -assertEquals(99, v); -assertEquals("get 99", array[3]); diff --git a/implementation-contributed/v8/mjsunit/array-push6.js b/implementation-contributed/v8/mjsunit/array-push6.js deleted file mode 100644 index 336b43d8d8e..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push6.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function push_wrapper(array, value) { - array.push(value); -} - -// Test that optimization of Array.push() for non-Arrays works correctly. -var object = { x : 8, length: 3 }; -object[18] = 5; -object.__proto__ = Array.prototype; -push_wrapper(object, 1); -push_wrapper(object, 1); -assertEquals(5, object.length); -%OptimizeFunctionOnNextCall(push_wrapper); -push_wrapper(object, 1); -push_wrapper(object, 1); -assertEquals(8, object.x); -assertEquals(7, object.length); diff --git a/implementation-contributed/v8/mjsunit/array-push8.js b/implementation-contributed/v8/mjsunit/array-push8.js deleted file mode 100644 index b1a87669d9b..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push8.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function push_wrapper(array, value) { - array.push(value); -} -function pop_wrapper(array) { - return array.pop(); -} - -// Test the frzon arrays throw an exception if you try to push to them, both in -// optimized and non-optimized code. -var array = [2, 2]; -Object.freeze(array); - -try { push_wrapper(array, 1); } catch (e) {} -assertEquals(2, array.length); -try { push_wrapper(array, 1); } catch (e) {} -assertEquals(2, array.length); -%OptimizeFunctionOnNextCall(push_wrapper); -try { push_wrapper(array, 1); } catch (e) {} -assertEquals(2, array.length); -try { push_wrapper(array, 1); } catch (e) {} -assertEquals(2, array.length); - -try { pop_wrapper(array); } catch (e) {} -assertEquals(2, array.length); -try { pop_wrapper(array); } catch (e) {} -assertEquals(2, array.length); -%OptimizeFunctionOnNextCall(pop_wrapper); -try { pop_wrapper(array); } catch (e) {} -assertEquals(2, array.length); -try { pop_wrapper(array); } catch (e) {} -assertEquals(2, array.length); diff --git a/implementation-contributed/v8/mjsunit/array-push9.js b/implementation-contributed/v8/mjsunit/array-push9.js deleted file mode 100644 index f1427f2c9ff..00000000000 --- a/implementation-contributed/v8/mjsunit/array-push9.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --deopt-every-n-times=5 - -var array = []; - -function push(array, value) { - array.push(value); -} - -push(array, 0); -push(array, 1); -push(array, 2); -%OptimizeFunctionOnNextCall(push); -push(array, 3); - -var v = 0; -Object.defineProperty(Array.prototype, "4", { - get: function() { return 100; }, - set: function(value) { v = value; } -}); - -push(array, 4); - -assertEquals(5, array.length); -assertEquals(100, array[4]); -assertEquals(4, v); diff --git a/implementation-contributed/v8/mjsunit/array-reduce.js b/implementation-contributed/v8/mjsunit/array-reduce.js deleted file mode 100644 index dd7c378847a..00000000000 --- a/implementation-contributed/v8/mjsunit/array-reduce.js +++ /dev/null @@ -1,1312 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -/** - * @fileoverview Test reduce and reduceRight - */ - -function clone(v) { - // Shallow-copies arrays, returns everything else verbatim. - if (v instanceof Array) { - // Shallow-copy an array. - var newArray = new Array(v.length); - for (var i in v) { - newArray[i] = v[i]; - } - return newArray; - } - return v; -} - - -// Creates a callback function for reduce/reduceRight that tests the number -// of arguments and otherwise behaves as "func", but which also -// records all calls in an array on the function (as arrays of arguments -// followed by result). -function makeRecorder(func, testName) { - var record = []; - var f = function recorder(a, b, i, s) { - assertEquals(4, arguments.length, - testName + "(number of arguments: " + arguments.length + ")"); - assertEquals("number", typeof(i), testName + "(index must be number)"); - assertEquals(s[i], b, testName + "(current argument is at index)"); - if (record.length > 0) { - var prevRecord = record[record.length - 1]; - var prevResult = prevRecord[prevRecord.length - 1]; - assertEquals(prevResult, a, - testName + "(prev result -> current input)"); - } - var args = [clone(a), clone(b), i, clone(s)]; - var result = func.apply(this, arguments); - args.push(clone(result)); - record.push(args); - return result; - }; - f.record = record; - return f; -} - - -function testReduce(type, - testName, - expectedResult, - expectedCalls, - array, - combine, - init) { - var rec = makeRecorder(combine); - var result; - var performsCall; - if (arguments.length > 6) { - result = array[type](rec, init); - } else { - result = array[type](rec); - } - var calls = rec.record; - assertEquals(expectedCalls.length, calls.length, - testName + " (number of calls)"); - for (var i = 0; i < expectedCalls.length; i++) { - assertEquals(expectedCalls[i], calls[i], - testName + " (call " + (i + 1) + ")"); - } - assertEquals(expectedResult, result, testName + " (result)"); -} - - -function sum(a, b) { return a + b; } -function prod(a, b) { return a * b; } -function dec(a, b, i, arr) { return a + b * Math.pow(10, arr.length - i - 1); } -function accumulate(acc, elem, i) { acc[i] = elem; return acc; } - -// ---- Test Reduce[Left] - -var simpleArray = [2,4,6] - -testReduce("reduce", "SimpleReduceSum", 12, - [[0, 2, 0, simpleArray, 2], - [2, 4, 1, simpleArray, 6], - [6, 6, 2, simpleArray, 12]], - simpleArray, sum, 0); - -testReduce("reduce", "SimpleReduceProd", 48, - [[1, 2, 0, simpleArray, 2], - [2, 4, 1, simpleArray, 8], - [8, 6, 2, simpleArray, 48]], - simpleArray, prod, 1); - -testReduce("reduce", "SimpleReduceDec", 246, - [[0, 2, 0, simpleArray, 200], - [200, 4, 1, simpleArray, 240], - [240, 6, 2, simpleArray, 246]], - simpleArray, dec, 0); - -testReduce("reduce", "SimpleReduceAccumulate", simpleArray, - [[[], 2, 0, simpleArray, [2]], - [[2], 4, 1, simpleArray, [2, 4]], - [[2,4], 6, 2, simpleArray, simpleArray]], - simpleArray, accumulate, []); - - -testReduce("reduce", "EmptyReduceSum", 0, [], [], sum, 0); -testReduce("reduce", "EmptyReduceProd", 1, [], [], prod, 1); -testReduce("reduce", "EmptyReduceDec", 0, [], [], dec, 0); -testReduce("reduce", "EmptyReduceAccumulate", [], [], [], accumulate, []); - -testReduce("reduce", "EmptyReduceSumNoInit", 0, [], [0], sum); -testReduce("reduce", "EmptyReduceProdNoInit", 1, [], [1], prod); -testReduce("reduce", "EmptyReduceDecNoInit", 0, [], [0], dec); -testReduce("reduce", "EmptyReduceAccumulateNoInit", [], [], [[]], accumulate); - - -var simpleSparseArray = [,,,2,,4,,6,,]; -testReduce("reduce", "SimpleSparseReduceSum", 12, - [[0, 2, 3, simpleSparseArray, 2], - [2, 4, 5, simpleSparseArray, 6], - [6, 6, 7, simpleSparseArray, 12]], - simpleSparseArray, sum, 0); - -testReduce("reduce", "SimpleSparseReduceProd", 48, - [[1, 2, 3, simpleSparseArray, 2], - [2, 4, 5, simpleSparseArray, 8], - [8, 6, 7, simpleSparseArray, 48]], - simpleSparseArray, prod, 1); - -testReduce("reduce", "SimpleSparseReduceDec", 204060, - [[0, 2, 3, simpleSparseArray, 200000], - [200000, 4, 5, simpleSparseArray, 204000], - [204000, 6, 7, simpleSparseArray, 204060]], - simpleSparseArray, dec, 0); - -testReduce("reduce", "SimpleSparseReduceAccumulate", [,,,2,,4,,6], - [[[], 2, 3, simpleSparseArray, [,,,2]], - [[,,,2], 4, 5, simpleSparseArray, [,,,2,,4]], - [[,,,2,,4], 6, 7, simpleSparseArray, [,,,2,,4,,6]]], - simpleSparseArray, accumulate, []); - - -testReduce("reduce", "EmptySparseReduceSumNoInit", 0, [], [,,0,,], sum); -testReduce("reduce", "EmptySparseReduceProdNoInit", 1, [], [,,1,,], prod); -testReduce("reduce", "EmptySparseReduceDecNoInit", 0, [], [,,0,,], dec); -testReduce("reduce", "EmptySparseReduceAccumulateNoInit", - [], [], [,,[],,], accumulate); - - -var verySparseArray = []; -verySparseArray.length = 10000; -verySparseArray[2000] = 2; -verySparseArray[5000] = 4; -verySparseArray[9000] = 6; -var verySparseSlice2 = verySparseArray.slice(0, 2001); -var verySparseSlice4 = verySparseArray.slice(0, 5001); -var verySparseSlice6 = verySparseArray.slice(0, 9001); - -testReduce("reduce", "VerySparseReduceSum", 12, - [[0, 2, 2000, verySparseArray, 2], - [2, 4, 5000, verySparseArray, 6], - [6, 6, 9000, verySparseArray, 12]], - verySparseArray, sum, 0); - -testReduce("reduce", "VerySparseReduceProd", 48, - [[1, 2, 2000, verySparseArray, 2], - [2, 4, 5000, verySparseArray, 8], - [8, 6, 9000, verySparseArray, 48]], - verySparseArray, prod, 1); - -testReduce("reduce", "VerySparseReduceDec", Infinity, - [[0, 2, 2000, verySparseArray, Infinity], - [Infinity, 4, 5000, verySparseArray, Infinity], - [Infinity, 6, 9000, verySparseArray, Infinity]], - verySparseArray, dec, 0); - -testReduce("reduce", "VerySparseReduceAccumulate", - verySparseSlice6, - [[[], 2, 2000, verySparseArray, verySparseSlice2], - [verySparseSlice2, 4, 5000, verySparseArray, verySparseSlice4], - [verySparseSlice4, 6, 9000, verySparseArray, verySparseSlice6]], - verySparseArray, accumulate, []); - - -testReduce("reduce", "VerySparseReduceSumNoInit", 12, - [[2, 4, 5000, verySparseArray, 6], - [6, 6, 9000, verySparseArray, 12]], - verySparseArray, sum); - -testReduce("reduce", "VerySparseReduceProdNoInit", 48, - [[2, 4, 5000, verySparseArray, 8], - [8, 6, 9000, verySparseArray, 48]], - verySparseArray, prod); - -testReduce("reduce", "VerySparseReduceDecNoInit", Infinity, - [[2, 4, 5000, verySparseArray, Infinity], - [Infinity, 6, 9000, verySparseArray, Infinity]], - verySparseArray, dec); - -testReduce("reduce", "SimpleSparseReduceAccumulateNoInit", - 2, - [[2, 4, 5000, verySparseArray, 2], - [2, 6, 9000, verySparseArray, 2]], - verySparseArray, accumulate); - - -// ---- Test ReduceRight - -testReduce("reduceRight", "SimpleReduceRightSum", 12, - [[0, 6, 2, simpleArray, 6], - [6, 4, 1, simpleArray, 10], - [10, 2, 0, simpleArray, 12]], - simpleArray, sum, 0); - -testReduce("reduceRight", "SimpleReduceRightProd", 48, - [[1, 6, 2, simpleArray, 6], - [6, 4, 1, simpleArray, 24], - [24, 2, 0, simpleArray, 48]], - simpleArray, prod, 1); - -testReduce("reduceRight", "SimpleReduceRightDec", 246, - [[0, 6, 2, simpleArray, 6], - [6, 4, 1, simpleArray, 46], - [46, 2, 0, simpleArray, 246]], - simpleArray, dec, 0); - -testReduce("reduceRight", "SimpleReduceRightAccumulate", simpleArray, - [[[], 6, 2, simpleArray, [,,6]], - [[,,6], 4, 1, simpleArray, [,4,6]], - [[,4,6], 2, 0, simpleArray, simpleArray]], - simpleArray, accumulate, []); - - -testReduce("reduceRight", "EmptyReduceRightSum", 0, [], [], sum, 0); -testReduce("reduceRight", "EmptyReduceRightProd", 1, [], [], prod, 1); -testReduce("reduceRight", "EmptyReduceRightDec", 0, [], [], dec, 0); -testReduce("reduceRight", "EmptyReduceRightAccumulate", [], - [], [], accumulate, []); - -testReduce("reduceRight", "EmptyReduceRightSumNoInit", 0, [], [0], sum); -testReduce("reduceRight", "EmptyReduceRightProdNoInit", 1, [], [1], prod); -testReduce("reduceRight", "EmptyReduceRightDecNoInit", 0, [], [0], dec); -testReduce("reduceRight", "EmptyReduceRightAccumulateNoInit", - [], [], [[]], accumulate); - - -testReduce("reduceRight", "SimpleSparseReduceRightSum", 12, - [[0, 6, 7, simpleSparseArray, 6], - [6, 4, 5, simpleSparseArray, 10], - [10, 2, 3, simpleSparseArray, 12]], - simpleSparseArray, sum, 0); - -testReduce("reduceRight", "SimpleSparseReduceRightProd", 48, - [[1, 6, 7, simpleSparseArray, 6], - [6, 4, 5, simpleSparseArray, 24], - [24, 2, 3, simpleSparseArray, 48]], - simpleSparseArray, prod, 1); - -testReduce("reduceRight", "SimpleSparseReduceRightDec", 204060, - [[0, 6, 7, simpleSparseArray, 60], - [60, 4, 5, simpleSparseArray, 4060], - [4060, 2, 3, simpleSparseArray, 204060]], - simpleSparseArray, dec, 0); - -testReduce("reduceRight", "SimpleSparseReduceRightAccumulate", [,,,2,,4,,6], - [[[], 6, 7, simpleSparseArray, [,,,,,,,6]], - [[,,,,,,,6], 4, 5, simpleSparseArray, [,,,,,4,,6]], - [[,,,,,4,,6], 2, 3, simpleSparseArray, [,,,2,,4,,6]]], - simpleSparseArray, accumulate, []); - - -testReduce("reduceRight", "EmptySparseReduceRightSumNoInit", - 0, [], [,,0,,], sum); -testReduce("reduceRight", "EmptySparseReduceRightProdNoInit", - 1, [], [,,1,,], prod); -testReduce("reduceRight", "EmptySparseReduceRightDecNoInit", - 0, [], [,,0,,], dec); -testReduce("reduceRight", "EmptySparseReduceRightAccumulateNoInit", - [], [], [,,[],,], accumulate); - - -var verySparseSuffix6 = []; -verySparseSuffix6[9000] = 6; -var verySparseSuffix4 = []; -verySparseSuffix4[5000] = 4; -verySparseSuffix4[9000] = 6; -var verySparseSuffix2 = verySparseSlice6; - - -testReduce("reduceRight", "VerySparseReduceRightSum", 12, - [[0, 6, 9000, verySparseArray, 6], - [6, 4, 5000, verySparseArray, 10], - [10, 2, 2000, verySparseArray, 12]], - verySparseArray, sum, 0); - -testReduce("reduceRight", "VerySparseReduceRightProd", 48, - [[1, 6, 9000, verySparseArray, 6], - [6, 4, 5000, verySparseArray, 24], - [24, 2, 2000, verySparseArray, 48]], - verySparseArray, prod, 1); - -testReduce("reduceRight", "VerySparseReduceRightDec", Infinity, - [[0, 6, 9000, verySparseArray, Infinity], - [Infinity, 4, 5000, verySparseArray, Infinity], - [Infinity, 2, 2000, verySparseArray, Infinity]], - verySparseArray, dec, 0); - -testReduce("reduceRight", "VerySparseReduceRightAccumulate", - verySparseSuffix2, - [[[], 6, 9000, verySparseArray, verySparseSuffix6], - [verySparseSuffix6, 4, 5000, verySparseArray, verySparseSuffix4], - [verySparseSuffix4, 2, 2000, verySparseArray, verySparseSuffix2]], - verySparseArray, accumulate, []); - - -testReduce("reduceRight", "VerySparseReduceRightSumNoInit", 12, - [[6, 4, 5000, verySparseArray, 10], - [10, 2, 2000, verySparseArray, 12]], - verySparseArray, sum); - -testReduce("reduceRight", "VerySparseReduceRightProdNoInit", 48, - [[6, 4, 5000, verySparseArray, 24], - [24, 2, 2000, verySparseArray, 48]], - verySparseArray, prod); - -testReduce("reduceRight", "VerySparseReduceRightDecNoInit", Infinity, - [[6, 4, 5000, verySparseArray, Infinity], - [Infinity, 2, 2000, verySparseArray, Infinity]], - verySparseArray, dec); - -testReduce("reduceRight", "SimpleSparseReduceRightAccumulateNoInit", - 6, - [[6, 4, 5000, verySparseArray, 6], - [6, 2, 2000, verySparseArray, 6]], - verySparseArray, accumulate); - - -// undefined is an element -var undefArray = [,,undefined,,undefined,,]; - -testReduce("reduce", "SparseUndefinedReduceAdd", NaN, - [[0, undefined, 2, undefArray, NaN], - [NaN, undefined, 4, undefArray, NaN], - ], - undefArray, sum, 0); - -testReduce("reduceRight", "SparseUndefinedReduceRightAdd", NaN, - [[0, undefined, 4, undefArray, NaN], - [NaN, undefined, 2, undefArray, NaN], - ], undefArray, sum, 0); - -testReduce("reduce", "SparseUndefinedReduceAddNoInit", NaN, - [[undefined, undefined, 4, undefArray, NaN], - ], undefArray, sum); - -testReduce("reduceRight", "SparseUndefinedReduceRightAddNoInit", NaN, - [[undefined, undefined, 2, undefArray, NaN], - ], undefArray, sum); - - -// Ignore non-array properties: - -var arrayPlus = [1,2,,3]; -arrayPlus[-1] = NaN; -arrayPlus[Math.pow(2,32)] = NaN; -arrayPlus[NaN] = NaN; -arrayPlus["00"] = NaN; -arrayPlus["02"] = NaN; -arrayPlus["-0"] = NaN; - -testReduce("reduce", "ArrayWithNonElementPropertiesReduce", 6, - [[0, 1, 0, arrayPlus, 1], - [1, 2, 1, arrayPlus, 3], - [3, 3, 3, arrayPlus, 6], - ], arrayPlus, sum, 0); - -testReduce("reduceRight", "ArrayWithNonElementPropertiesReduceRight", 6, - [[0, 3, 3, arrayPlus, 3], - [3, 2, 1, arrayPlus, 5], - [5, 1, 0, arrayPlus, 6], - ], arrayPlus, sum, 0); - -// Test passing undefined as initial value (to test missing parameter -// detection). -[1].reduce((a, b) => { assertEquals(a, undefined); assertEquals(b, 1) }, - undefined); -[1, 2].reduce((a, b) => { assertEquals(a, 1); assertEquals(b, 2); }); -[1].reduce((a, b) => { assertTrue(false); }); - -// Test error conditions: - -var exception = false; -try { - [1].reduce("not a function"); -} catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduce callback not a function not throwing TypeError"); - assertTrue(e.message.indexOf(" is not a function") >= 0, - "reduce non function TypeError type"); -} -assertTrue(exception); - -exception = false; -try { - [1].reduceRight("not a function"); -} catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduceRight callback not a function not throwing TypeError"); - assertTrue(e.message.indexOf(" is not a function") >= 0, - "reduceRight non function TypeError type"); -} -assertTrue(exception); - -exception = false; -try { - [].reduce(sum); -} catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduce no initial value not throwing TypeError"); - assertEquals("Reduce of empty array with no initial value", e.message, - "reduce no initial TypeError type"); -} -assertTrue(exception); - -exception = false; -try { - [].reduceRight(sum); -} catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduceRight no initial value not throwing TypeError"); - assertEquals("Reduce of empty array with no initial value", e.message, - "reduceRight no initial TypeError type"); -} -assertTrue(exception); - -exception = false; -try { - [,,,].reduce(sum); -} catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduce sparse no initial value not throwing TypeError"); - assertEquals("Reduce of empty array with no initial value", e.message, - "reduce no initial TypeError type"); -} -assertTrue(exception); - -exception = false; -try { - [,,,].reduceRight(sum); -} catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduceRight sparse no initial value not throwing TypeError"); - assertEquals("Reduce of empty array with no initial value", e.message, - "reduceRight no initial TypeError type"); -} -assertTrue(exception); - - -// Array changing length - -function manipulator(a, b, i, s) { - if (s.length % 2) { - s[s.length * 3] = i; - } else { - s.length = s.length >> 1; - } - return a + b; -} - -var arr = [1, 2, 3, 4]; -testReduce("reduce", "ArrayManipulationShort", 3, - [[0, 1, 0, [1, 2, 3, 4], 1], - [1, 2, 1, [1, 2], 3], - ], arr, manipulator, 0); - -var arr = [1, 2, 3, 4, 5]; -testReduce("reduce", "ArrayManipulationLonger", 10, - [[0, 1, 0, [1, 2, 3, 4, 5], 1], - [1, 2, 1, [1, 2, 3, 4, 5,,,,,,,,,,, 0], 3], - [3, 3, 2, [1, 2, 3, 4, 5,,,,], 6], - [6, 4, 3, [1, 2, 3, 4], 10], - ], arr, manipulator, 0); - -function extender(a, b, i, s) { - s[s.length] = s.length; - return a + b; -} - -var arr = [1, 2, 3, 4]; -testReduce("reduce", "ArrayManipulationExtender", 10, - [[0, 1, 0, [1, 2, 3, 4], 1], - [1, 2, 1, [1, 2, 3, 4, 4], 3], - [3, 3, 2, [1, 2, 3, 4, 4, 5], 6], - [6, 4, 3, [1, 2, 3, 4, 4, 5, 6], 10], - ], arr, extender, 0); - -var arr = []; -Object.defineProperty(arr, "0", { get: function() { delete this[0] }, - configurable: true }); -assertEquals(undefined, arr.reduce(function(val) { return val })); - -var arr = []; -Object.defineProperty(arr, "0", { get: function() { delete this[0] }, - configurable: true}); -assertEquals(undefined, arr.reduceRight(function(val) { return val })); - - -(function ReduceRightMaxIndex() { - const kMaxIndex = 0xffffffff-1; - let array = []; - array[kMaxIndex-2] = 'value-2'; - array[kMaxIndex-1] = 'value-1'; - // Use the maximum array index possible. - array[kMaxIndex] = 'value'; - // Add the next index which is a normal property and thus will not show up. - array[kMaxIndex+1] = 'normal property'; - assertThrowsEquals( () => { - array.reduceRight((sum, value) => { - assertEquals('initial', sum); - assertEquals('value', value); - // Throw at this point as we would very slowly loop down from kMaxIndex. - throw 'do not continue'; - }, 'initial') - }, 'do not continue'); -})(); - -(function OptimizedReduce() { - let f = (a,current) => a + current; - let g = function(a) { - return a.reduce(f); - } - let a = [1,2,3,4,5,6,7,8,9,10]; - g(a); g(a); - let total = g(a); - %OptimizeFunctionOnNextCall(g); - assertEquals(total, g(a)); -})(); - -(function OptimizedReduceEmpty() { - let f = (a,current) => a + current; - let g = function(a) { - return a.reduce(f); - } - let a = [1,2,3,4,5,6,7,8,9,10]; - g(a); g(a); g(a); - %OptimizeFunctionOnNextCall(g); - g(a); - assertThrows(() => g([])); -})(); - -(function OptimizedReduceLazyDeopt() { - let deopt = false; - let f = (a,current) => { if (deopt) %DeoptimizeNow(); return a + current; }; - let g = function(a) { - return a.reduce(f); - } - let a = [1,2,3,4,5,6,7,8,9,10]; - g(a); g(a); - let total = g(a); - %OptimizeFunctionOnNextCall(g); - g(a); - deopt = true; - assertEquals(total, g(a)); -})(); - -(function OptimizedReduceLazyDeoptMiddleOfIteration() { - let deopt = false; - let f = (a,current) => { - if (current == 6 && deopt) %DeoptimizeNow(); - return a + current; - }; - let g = function(a) { - return a.reduce(f); - } - let a = [11,22,33,45,56,6,77,84,93,101]; - g(a); g(a); - let total = g(a); - %OptimizeFunctionOnNextCall(g); - g(a); - deopt = true; - assertEquals(total, g(a)); -})(); - -(function OptimizedReduceEagerDeoptMiddleOfIteration() { - let deopt = false; - let array = [11,22,33,45,56,6,77,84,93,101]; - let f = (a,current) => { - if (current == 6 && deopt) {array[0] = 1.5; } - return a + current; - }; - let g = function() { - return array.reduce(f); - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - deopt = true; - g(); - deopt = false; - array = [11,22,33,45,56,6,77,84,93,101]; - %OptimizeFunctionOnNextCall(g); - g(); - deopt = true; - assertEquals(total, g()); -})(); - -(function OptimizedReduceEagerDeoptMiddleOfIterationHoley() { - let deopt = false; - let array = [, ,11,22,,33,45,56,,6,77,84,93,101,]; - let f = (a,current) => { - if (current == 6 && deopt) {array[0] = 1.5; } - return a + current; - }; - let g = function() { - return array.reduce(f); - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - deopt = true; - g(); - deopt = false; - array = [11,22,33,45,56,6,77,84,93,101]; - %OptimizeFunctionOnNextCall(g); - g(); - deopt = true; - assertEquals(total, g()); -})(); - -(function TriggerReduceRightPreLoopDeopt() { - function f(a) { - a.reduceRight((x) => { return x + 1 }); - } - f([1,2,]); - f([1,2,]); - %OptimizeFunctionOnNextCall(f); - assertThrows(() => f([]), TypeError); -})(); - -(function OptimizedReduceRightEagerDeoptMiddleOfIterationHoley() { - let deopt = false; - let array = [, ,11,22,,33,45,56,,6,77,84,93,101,]; - let f = (a,current) => { - if (current == 6 && deopt) {array[array.length-1] = 1.5; } - return a + current; - }; - let g = function() { - return array.reduceRight(f); - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - deopt = true; - g(); - deopt = false; - array = [11,22,33,45,56,6,77,84,93,101]; - %OptimizeFunctionOnNextCall(g); - g(); - deopt = true; - assertEquals(total, g()); -})(); - -(function ReduceCatch() { - let f = (a,current) => { - return a + current; - }; - let g = function() { - try { - return array.reduce(f); - } catch (e) { - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - g(); - assertEquals(total, g()); -})(); - -(function ReduceThrow() { - let done = false; - let f = (a, current) => { - if (done) throw "x"; - return a + current; - }; - let array = [1,2,3]; - let g = function() { - try { - return array.reduce(f); - } catch (e) { - return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceThrow() { - let done = false; - let f = (a, current) => { - if (done) throw "x"; - return a + current; - }; - %NeverOptimizeFunction(f); - let array = [1,2,3]; - let g = function() { - try { - return array.reduce(f); - } catch (e) { - return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceFinally() { - let done = false; - let f = (a, current) => { - if (done) throw "x"; - return a + current; - }; - let array = [1,2,3]; - let g = function() { - try { - return array.reduce(f); - } catch (e) { - } finally { - if (done) return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceFinallyNoInline() { - let done = false; - let f = (a, current) => { - if (done) throw "x"; - return a + current; - }; - %NeverOptimizeFunction(f); - let array = [1,2,3]; - let g = function() { - try { - return array.reduce(f); - } catch (e) { - } finally { - if (done) return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceNonCallableOpt() { - let done = false; - let f = (a, current) => { - return a + current; - }; - let array = [1,2,3]; - let g = function() { - return array.reduce(f); - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); g(); - assertEquals(6, g()); - f = null; - assertThrows(() => g()); -})(); - -(function ReduceCatchInlineDeopt() { - let done = false; - let f = (a, current) => { - if (done) { - %DeoptimizeNow(); - throw "x"; - } - return a + current; - }; - let array = [1,2,3]; - let g = function() { - try { - return array.reduce(f); - } catch (e) { - if (done) return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceFinallyInlineDeopt() { - let done = false; - let f = (a, current) => { - if (done) { - %DeoptimizeNow(); - throw "x"; - } - return a + current; - }; - let array = [1,2,3]; - let g = function() { - try { - return array.reduce(f); - } catch (e) { - } finally { - if (done) return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function OptimizedReduceRight() { - let count = 0; - let f = (a,current,i) => a + current * ++count; - let g = function(a) { - count = 0; - return a.reduceRight(f); - } - let a = [1,2,3,4,5,6,7,8,9,10]; - g(a); g(a); - let total = g(a); - %OptimizeFunctionOnNextCall(g); - assertEquals(total, g(a)); -})(); - -(function OptimizedReduceEmpty() { - let count = 0; - let f = (a,current,i) => a + current * ++count; - let g = function(a) { - count = 0; - return a.reduceRight(f); - } - let a = [1,2,3,4,5,6,7,8,9,10]; - g(a); g(a); g(a); - %OptimizeFunctionOnNextCall(g); - g(a); - assertThrows(() => g([])); -})(); - -(function OptimizedReduceLazyDeopt() { - let deopt = false; - let f = (a,current) => { if (deopt) %DeoptimizeNow(); return a + current; }; - let g = function(a) { - return a.reduceRight(f); - } - let a = [1,2,3,4,5,6,7,8,9,10]; - g(a); g(a); - let total = g(a); - %OptimizeFunctionOnNextCall(g); - g(a); - deopt = true; - assertEquals(total, g(a)); -})(); - -(function OptimizedReduceLazyDeoptMiddleOfIteration() { - let deopt = false; - let f = (a,current) => { - if (current == 6 && deopt) %DeoptimizeNow(); - return a + current; - }; - let g = function(a) { - return a.reduceRight(f); - } - let a = [11,22,33,45,56,6,77,84,93,101]; - g(a); g(a); - let total = g(a); - %OptimizeFunctionOnNextCall(g); - g(a); - deopt = true; - assertEquals(total, g(a)); -})(); - -(function OptimizedReduceEagerDeoptMiddleOfIteration() { - let deopt = false; - let array = [11,22,33,45,56,6,77,84,93,101]; - let f = (a,current) => { - if (current == 6 && deopt) {array[9] = 1.5; } - return a + current; - }; - let g = function() { - return array.reduceRight(f); - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - deopt = true; - g(); - deopt = false; - array = [11,22,33,45,56,6,77,84,93,101]; - %OptimizeFunctionOnNextCall(g); - g(); - deopt = true; - assertEquals(total, g()); -})(); - -(function ReduceCatch() { - let f = (a,current) => { - return a + current; - }; - let g = function() { - try { - return array.reduceRight(f); - } catch (e) { - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - g(); - assertEquals(total, g()); -})(); - -(function ReduceThrow() { - let done = false; - let f = (a, current) => { - if (done) throw "x"; - return a + current; - }; - let array = [1,2,3]; - let g = function() { - try { - return array.reduceRight(f); - } catch (e) { - return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceThrow() { - let done = false; - let f = (a, current) => { - if (done) throw "x"; - return a + current; - }; - %NeverOptimizeFunction(f); - let array = [1,2,3]; - let g = function() { - try { - return array.reduceRight(f); - } catch (e) { - return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceFinally() { - let done = false; - let f = (a, current) => { - if (done) throw "x"; - return a + current; - }; - let array = [1,2,3]; - let g = function() { - try { - return array.reduceRight(f); - } catch (e) { - } finally { - if (done) return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceFinallyNoInline() { - let done = false; - let f = (a, current) => { - if (done) throw "x"; - return a + current; - }; - %NeverOptimizeFunction(f); - let array = [1,2,3]; - let g = function() { - try { - return array.reduceRight(f); - } catch (e) { - } finally { - if (done) return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceNonCallableOpt() { - let done = false; - let f = (a, current) => { - return a + current; - }; - let array = [1,2,3]; - let g = function() { - return array.reduceRight(f); - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); g(); - assertEquals(6, g()); - f = null; - assertThrows(() => g()); -})(); - -(function ReduceCatchInlineDeopt() { - let done = false; - let f = (a, current) => { - if (done) { - %DeoptimizeNow(); - throw "x"; - } - return a + current; - }; - let array = [1,2,3]; - let g = function() { - try { - return array.reduceRight(f); - } catch (e) { - if (done) return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceFinallyInlineDeopt() { - let done = false; - let f = (a, current) => { - if (done) { - %DeoptimizeNow(); - throw "x"; - } - return a + current; - }; - let array = [1,2,3]; - let g = function() { - try { - return array.reduceRight(f); - } catch (e) { - } finally { - if (done) return null; - } - } - g(); g(); - let total = g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); - done = false; - g(); g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertEquals(6, g()); - done = true; - assertEquals(null, g()); -})(); - -(function ReduceHoleyArrayWithDefaultAccumulator() { - var __v_12258 = new Array(10); - function __f_3253(a) { - let __f_3252 = function(accumulator, currentValue) { - return currentValue; - } - return a.reduce(__f_3252, 13); - } - assertEquals(13, __f_3253(__v_12258)); - assertEquals(13, __f_3253(__v_12258)); - assertEquals(13, __f_3253(__v_12258)); - %OptimizeFunctionOnNextCall(__f_3253); - assertEquals(13, __f_3253(__v_12258)); -})(); - -(function ReduceRightHoleyArrayWithDefaultAccumulator() { - var __v_12258 = new Array(10); - function __f_3253(a) { - let __f_3252 = function(accumulator, currentValue) { - return currentValue; - } - return a.reduceRight(__f_3252, 13); - } - assertEquals(13, __f_3253(__v_12258)); - assertEquals(13, __f_3253(__v_12258)); - assertEquals(13, __f_3253(__v_12258)); - %OptimizeFunctionOnNextCall(__f_3253); - assertEquals(13, __f_3253(__v_12258)); -})(); - -(function ReduceHoleyArrayOneElementWithDefaultAccumulator() { - var __v_12258 = new Array(10); - __v_12258[1] = 5; - function __f_3253(a) { - let __f_3252 = function(accumulator, currentValue) { - return currentValue + accumulator; - } - return a.reduce(__f_3252, 13); - } - assertEquals(18, __f_3253(__v_12258)); - assertEquals(18, __f_3253(__v_12258)); - assertEquals(18, __f_3253(__v_12258)); - %OptimizeFunctionOnNextCall(__f_3253); - assertEquals(18, __f_3253(__v_12258)); -})(); - -(function ReduceRightHoleyArrayOneElementWithDefaultAccumulator() { - var __v_12258 = new Array(10); - __v_12258[1] = 5; - function __f_3253(a) { - let __f_3252 = function(accumulator, currentValue) { - return currentValue + accumulator; - } - return a.reduceRight(__f_3252, 13); - } - assertEquals(18, __f_3253(__v_12258)); - assertEquals(18, __f_3253(__v_12258)); - assertEquals(18, __f_3253(__v_12258)); - %OptimizeFunctionOnNextCall(__f_3253); - assertEquals(18, __f_3253(__v_12258)); -})(); - -(function ReduceMixedHoleyArrays() { - function r(a) { - return a.reduce((acc, i) => {acc[0]}); - } - r([[0]]); - r([[0]]); - r([0,,]); - %OptimizeFunctionOnNextCall(r); - r([,0,0]); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-reverse.js b/implementation-contributed/v8/mjsunit/array-reverse.js deleted file mode 100644 index 11aeb60cac0..00000000000 --- a/implementation-contributed/v8/mjsunit/array-reverse.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertArrayEquals([], [].reverse()); -assertArrayEquals([8, 6, 4, 2], [2, 4, 6, 8].reverse()); -assertArrayEquals([0.8, 0.6, 0.4], [0.4, 0.6, 0.8].reverse()); -assertArrayEquals(["str4", "str3", "str2"], ["str2", "str3", "str4"].reverse()); - -assertArrayEquals([4,3,,1], [1,,3,4].reverse()); -assertArrayEquals([4,,2,1], [1,2,,4].reverse()); -assertArrayEquals([5,,3,,1], [1,,3,,5].reverse()); - -function TestReverseWithObject() { - let obj = { length: 5 }; - obj[0] = "foo"; - obj[3] = "bar"; - Array.prototype.reverse.call(obj); - - assertArrayEquals([,"bar",,,"foo"], obj); -} -TestReverseWithObject(); - -function TestReverseWithPrototypeChain() { - let proto = { 0: "foo", 19: "bar" }; - let obj = { length: 20, 5: "foobar", __proto__: proto }; - Array.prototype.reverse.call(obj); - - assertEquals("bar", obj[0]); - assertEquals("foobar", obj[14]); - assertEquals("foo", obj[19]); -} -TestReverseWithPrototypeChain(); - -function TestReverseWithTypedArrays() { - const constructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array - ]; - - for (const constructor of constructors) { - const array_odd = new constructor([1, 2, 3]); - Array.prototype.reverse.call(array_odd); - assertArrayEquals([3, 2, 1], array_odd, constructor); - - const array_even = new constructor([1, 2, 3, 4]); - Array.prototype.reverse.call(array_even); - assertArrayEquals([4, 3, 2, 1], array_even, constructor); - - // Array.prototype.reverse respects shadowing length on TypedArrays. - const array = new constructor([1, 2, 3, 4]); - Object.defineProperty(array, 'length', {value: 2}); - Array.prototype.reverse.call(array); - - assertArrayEquals([2, 1], array, constructor); - - const array_shadowed_length = new constructor([1, 2]); - Object.defineProperty(array_shadowed_length, 'length', {value: 5}); - - assertThrows(() => Array.prototype.reverse.call(array_shadowed_length)); - } -} -TestReverseWithTypedArrays(); diff --git a/implementation-contributed/v8/mjsunit/array-shift.js b/implementation-contributed/v8/mjsunit/array-shift.js deleted file mode 100644 index ad742e12ee1..00000000000 --- a/implementation-contributed/v8/mjsunit/array-shift.js +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that shifting array of holes keeps it as array of holes -(function() { - var array = new Array(10); - array.shift(); - assertFalse(0 in array); -})(); - -// Now check the case with array of holes and some elements on prototype. -(function() { - var len = 9; - var array = new Array(len); - Array.prototype[3] = "@3"; - Array.prototype[7] = "@7"; - - assertEquals(len, array.length); - for (var i = 0; i < array.length; i++) { - assertEquals(array[i], Array.prototype[i]); - } - - array.shift(); - - assertEquals(len - 1, array.length); - // Note that shift copies values from prototype into the array. - assertEquals(array[2], Array.prototype[3]); - assertTrue(array.hasOwnProperty(2)); - - assertEquals(array[6], Array.prototype[7]); - assertTrue(array.hasOwnProperty(6)); - - // ... but keeps the rest as holes: - Array.prototype[5] = "@5"; - assertEquals(array[5], Array.prototype[5]); - assertFalse(array.hasOwnProperty(5)); - - assertEquals(array[3], Array.prototype[3]); - assertFalse(array.hasOwnProperty(3)); - - assertEquals(array[7], Array.prototype[7]); - assertFalse(array.hasOwnProperty(7)); - - assertTrue(delete Array.prototype[3]); - assertTrue(delete Array.prototype[5]); - assertTrue(delete Array.prototype[7]); -})(); - -// Now check the case with array of holes and some elements on prototype -// which is an array itself. -(function() { - var len = 9; - var array = new Array(len); - var array_proto = new Array(); - array_proto[3] = "@3"; - array_proto[7] = "@7"; - array.__proto__ = array_proto; - - assertEquals(len, array.length); - for (var i = 0; i < array.length; i++) { - assertEquals(array[i], array_proto[i]); - } - - array.shift(); - - assertEquals(len - 1, array.length); - // Note that shift copies values from prototype into the array. - assertEquals(array[2], array_proto[3]); - assertTrue(array.hasOwnProperty(2)); - - assertEquals(array[6], array_proto[7]); - assertTrue(array.hasOwnProperty(6)); - - // ... but keeps the rest as holes: - array_proto[5] = "@5"; - assertEquals(array[5], array_proto[5]); - assertFalse(array.hasOwnProperty(5)); - - assertEquals(array[3], array_proto[3]); - assertFalse(array.hasOwnProperty(3)); - - assertEquals(array[7], array_proto[7]); - assertFalse(array.hasOwnProperty(7)); -})(); - -// Check that non-enumerable elements are treated appropriately -(function() { - var array = [1, 2, 3]; - Object.defineProperty(array, '1', {enumerable: false}); - assertEquals(1, array.shift()); - assertEquals([2, 3], array); - - array = [1,,3]; - array.__proto__[1] = 2; - Object.defineProperty(array.__proto__, '1', {enumerable: false}); - assertEquals(1, array.shift()); - assertEquals([2, 3], array); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-shift2.js b/implementation-contributed/v8/mjsunit/array-shift2.js deleted file mode 100644 index 75233ffec29..00000000000 --- a/implementation-contributed/v8/mjsunit/array-shift2.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Object.defineProperty(Array.prototype, "1", { - get: function() { return "element 1"; }, - set: function(value) { } -}); -function test(array) { - array.shift(); - return array; -} - -var result = test(["0",,2]); -assertEquals(["element 1","element 1"], result); -assertTrue(result.hasOwnProperty("0")); -assertFalse(result.hasOwnProperty("1")); -result = test([{},,{}]); -assertEquals(["element 1","element 1"], result); -assertTrue(result.hasOwnProperty("0")); -assertFalse(result.hasOwnProperty("1")); -%OptimizeFunctionOnNextCall(test); -result = test([{},,0]); -assertEquals(["element 1","element 1"], result); -assertTrue(result.hasOwnProperty("0")); -assertFalse(result.hasOwnProperty("1")); diff --git a/implementation-contributed/v8/mjsunit/array-shift3.js b/implementation-contributed/v8/mjsunit/array-shift3.js deleted file mode 100644 index 3a0afc596b1..00000000000 --- a/implementation-contributed/v8/mjsunit/array-shift3.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Array.prototype[1] = "element 1"; -function test(a) { - a.shift(); - return a; -} -assertEquals(["element 1",{}], test([0,,{}])); -assertEquals(["element 1",10], test([9,,10])); -%OptimizeFunctionOnNextCall(test); -assertEquals(["element 1",10], test([9,,10])); diff --git a/implementation-contributed/v8/mjsunit/array-shift4.js b/implementation-contributed/v8/mjsunit/array-shift4.js deleted file mode 100644 index 5d28fd306aa..00000000000 --- a/implementation-contributed/v8/mjsunit/array-shift4.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Inlining shift with holey smi arrays shouldn't deopt just because it -// encounters the hole on the copy step. -function doShift(a) { - var x = a.shift(); - return x; -} - -function makeArray() { - var a = [1, 2,, 3]; - a[0] = 2; - return a; -} - -doShift(makeArray()); -doShift(makeArray()); -%OptimizeFunctionOnNextCall(doShift); -doShift(makeArray()); -assertOptimized(doShift); diff --git a/implementation-contributed/v8/mjsunit/array-shift5.js b/implementation-contributed/v8/mjsunit/array-shift5.js deleted file mode 100644 index a097e2f7978..00000000000 --- a/implementation-contributed/v8/mjsunit/array-shift5.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function doShift(a) { return a.shift(); } - - function test() { - var a = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; - assertEquals(0, doShift(a)); - assertEquals([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], a); - } - - test(); - test(); - %OptimizeFunctionOnNextCall(doShift); - test(); -})(); - -(function() { - function doShift(a) { return a.shift(); } - - function test() { - var a = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16.1]; - assertEquals(0, doShift(a)); - assertEquals([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16.1], a); - } - - test(); - test(); - %OptimizeFunctionOnNextCall(doShift); - test(); -})(); - -(function() { - function doShift(a) { return a.shift(); } - - function test() { - var a = [,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16.1]; - assertEquals(undefined, doShift(a)); - assertEquals([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16.1], a); - } - - test(); - test(); - %OptimizeFunctionOnNextCall(doShift); - test(); -})(); - -(function() { - function doShift(a) { return a.shift(); } - - function test() { - var a = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,"16"]; - assertEquals(0, doShift(a)); - assertEquals([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,"16"], a); - } - - test(); - test(); - %OptimizeFunctionOnNextCall(doShift); - test(); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-slice.js b/implementation-contributed/v8/mjsunit/array-slice.js deleted file mode 100644 index 1fe14184598..00000000000 --- a/implementation-contributed/v8/mjsunit/array-slice.js +++ /dev/null @@ -1,328 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Check that slicing array of holes keeps it as array of holes - -(function() { - var array = new Array(10); - for (var i = 0; i < 7; i++) { - var sliced = array.slice(); - assertEquals(array.length, sliced.length); - assertFalse(0 in sliced); - } -})(); - - -// Check various variants of empty array's slicing. -(function() { - for (var i = 0; i < 7; i++) { - assertEquals([], [].slice(0, 0)); - assertEquals([], [].slice(1, 0)); - assertEquals([], [].slice(0, 1)); - assertEquals([], [].slice(-1, 0)); - } -})(); - - -// Check various forms of arguments omission. -(function() { - var array = new Array(7); - - for (var i = 0; i < 7; i++) { - assertEquals(array, array.slice()); - assertEquals(array, array.slice(0)); - assertEquals(array, array.slice(undefined)); - assertEquals(array, array.slice("foobar")); - assertEquals(array, array.slice(undefined, undefined)); - } -})(); - - -// Check variants of negatives and positive indices. -(function() { - var array = new Array(7); - - for (var i = 0; i < 7; i++) { - assertEquals(7, array.slice(-100).length); - assertEquals(3, array.slice(-3).length); - assertEquals(3, array.slice(4).length); - assertEquals(1, array.slice(6).length); - assertEquals(0, array.slice(7).length); - assertEquals(0, array.slice(8).length); - assertEquals(0, array.slice(100).length); - - assertEquals(0, array.slice(0, -100).length); - assertEquals(4, array.slice(0, -3).length); - assertEquals(4, array.slice(0, 4).length); - assertEquals(6, array.slice(0, 6).length); - assertEquals(7, array.slice(0, 7).length); - assertEquals(7, array.slice(0, 8).length); - assertEquals(7, array.slice(0, 100).length); - - // Some exotic cases. - - obj = { toString: function() { throw 'Exception'; } }; - - // More than 2 arguments: - assertEquals(7, array.slice(0, 7, obj, null, undefined).length); - - // Custom conversion: - assertEquals(1, array.slice({valueOf: function() { return 1; }}, - {toString: function() { return 2; }}).length); - - // Throwing an exception in conversion: - try { - assertEquals(7, array.slice(0, obj).length); - throw 'Should have thrown'; - } catch (e) { - assertEquals('Exception', e); - } - } -})(); - - -// Nasty: modify the array in ToInteger. -(function() { - var array = []; - var expected = [] - bad_guy = { valueOf: function() { array.push(array.length); return -1; } }; - - for (var i = 0; i < 13; i++) { - var sliced = array.slice(bad_guy); - expected.push(i); - assertEquals(expected, array); - // According to the spec (15.4.4.10), length is calculated before - // performing ToInteger on arguments. - if (i == 0) { - assertEquals([], sliced); // Length was 0, nothing to get. - } else { - // Actually out of array [0..i] we get [i - 1] as length is i. - assertEquals([i - 1], sliced); - } - } -})(); - - -// Now check the case with array of holes and some elements on prototype. -// Note: that is important that this test runs before the next one -// as the next one tampers Array.prototype. -(function() { - var len = 9; - var array = new Array(len); - - var at3 = "@3"; - var at7 = "@7"; - - for (var i = 0; i < 7; i++) { - var array_proto = []; - array_proto[3] = at3; - array_proto[7] = at7; - array.__proto__ = array_proto; - - assertEquals(len, array.length); - for (var i = 0; i < array.length; i++) { - assertEquals(array[i], array_proto[i]); - } - - var sliced = array.slice(); - - assertEquals(len, sliced.length); - - assertTrue(delete array_proto[3]); - assertTrue(delete array_proto[7]); - - // Note that slice copies values from prototype into the array. - assertEquals(array[3], undefined); - assertFalse(array.hasOwnProperty(3)); - assertEquals(sliced[3], at3); - assertTrue(sliced.hasOwnProperty(3)); - - assertEquals(array[7], undefined); - assertFalse(array.hasOwnProperty(7)); - assertEquals(sliced[7], at7); - assertTrue(sliced.hasOwnProperty(7)); - - // ... but keeps the rest as holes: - array_proto[5] = "@5"; - assertEquals(array[5], array_proto[5]); - assertFalse(array.hasOwnProperty(5)); - } -})(); - - -// Now check the case with array of holes and some elements on prototype. -(function() { - var len = 9; - var array = new Array(len); - - var at3 = "@3"; - var at7 = "@7"; - - for (var i = 0; i < 7; i++) { - Array.prototype[3] = at3; - Array.prototype[7] = at7; - - assertEquals(len, array.length); - for (var i = 0; i < array.length; i++) { - assertEquals(array[i], Array.prototype[i]); - } - - var sliced = array.slice(); - - assertEquals(len, sliced.length); - - assertTrue(delete Array.prototype[3]); - assertTrue(delete Array.prototype[7]); - - // Note that slice copies values from prototype into the array. - assertEquals(array[3], undefined); - assertFalse(array.hasOwnProperty(3)); - assertEquals(sliced[3], at3); - assertTrue(sliced.hasOwnProperty(3)); - - assertEquals(array[7], undefined); - assertFalse(array.hasOwnProperty(7)); - assertEquals(sliced[7], at7); - assertTrue(sliced.hasOwnProperty(7)); - - // ... but keeps the rest as holes: - Array.prototype[5] = "@5"; - assertEquals(array[5], Array.prototype[5]); - assertFalse(array.hasOwnProperty(5)); - assertEquals(sliced[5], Array.prototype[5]); - assertFalse(sliced.hasOwnProperty(5)); - - assertTrue(delete Array.prototype[5]); - } -})(); - -// Check slicing on arguments object. -(function() { - function func(expected, a0, a1, a2) { - let result = Array.prototype.slice.call(arguments, 1); - %HeapObjectVerify(result); - %HeapObjectVerify(arguments); - assertEquals(expected, result); - } - - func([]); - func(['a'], 'a'); - func(['a', 1], 'a', 1); - func(['a', 1, 2, 3, 4, 5], 'a', 1, 2, 3, 4, 5); - func(['a', 1, undefined], 'a', 1, undefined); - func(['a', 1, undefined, void(0)], 'a', 1, undefined, void(0)); -})(); - -// Check slicing on arguments object when missing arguments get assigined. -(function() { - function func(x, y) { - assertEquals(1, arguments.length); - assertEquals(undefined, y); - y = 239; - assertEquals(1, arguments.length); // arguments length is the same. - let result = Array.prototype.slice.call(arguments, 0); - %HeapObjectVerify(result); - %HeapObjectVerify(arguments); - assertEquals([x], result); - } - - func('a'); -})(); - -// Check slicing on arguments object when length property has been set. -(function() { - function func(x, y) { - assertEquals(1, arguments.length); - arguments.length = 7; - let result = Array.prototype.slice.call(arguments, 0); - assertEquals([x,,,,,,,], result); - %HeapObjectVerify(result); - %HeapObjectVerify(arguments); - } - - func('a'); -})(); - -// Check slicing on arguments object when length property has been set to -// some strange value. -(function() { - function func(x, y) { - assertEquals(1, arguments.length); - arguments.length = 'foobar'; - let result = Array.prototype.slice.call(arguments, 0); - assertEquals([], result); - %HeapObjectVerify(result); - %HeapObjectVerify(arguments); - } - - func('a'); -})(); - -// Check slicing on arguments object when extra argument has been added -// via indexed assignment. -(function() { - function func(x, y) { - assertEquals(1, arguments.length); - arguments[3] = 239; - let result = Array.prototype.slice.call(arguments, 0); - assertEquals([x], result); - %HeapObjectVerify(result); - %HeapObjectVerify(arguments); - } - - func('a'); -})(); - -// Check slicing on arguments object when argument has been deleted by index. -(function() { - function func(x, y, z) { - assertEquals(3, arguments.length); - delete arguments[1]; - let result = Array.prototype.slice.call(arguments, 0); - assertEquals([x,,z], result); - %HeapObjectVerify(result); - %HeapObjectVerify(arguments); - } - - func('a', 'b', 'c'); -})(); - -// Check slicing of holey objects with elements in the prototype -(function() { - function f() { - delete arguments[1]; - arguments.__proto__[1] = 5; - var result = Array.prototype.slice.call(arguments); - delete arguments.__proto__[1]; - assertEquals([1,5,3], result); - %HeapObjectVerify(result); - %HeapObjectVerify(arguments); - } - f(1,2,3); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-sort.js b/implementation-contributed/v8/mjsunit/array-sort.js deleted file mode 100644 index ca0daadf04b..00000000000 --- a/implementation-contributed/v8/mjsunit/array-sort.js +++ /dev/null @@ -1,740 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test array sort. - -// Test counter-intuitive default number sorting. -function TestNumberSort() { - var a = [ 200, 45, 7 ]; - - // Default sort converts each element to string and orders - // lexicographically. - a.sort(); - assertArrayEquals([ 200, 45, 7 ], a); - // Sort numbers by value using a compare functions. - a.sort(function(x, y) { return x - y; }); - assertArrayEquals([ 7, 45, 200 ], a); - - // Default sort on negative numbers. - a = [-12345,-123,-1234,-123456]; - a.sort(); - assertArrayEquals([-123,-1234,-12345,-123456], a); - - // Default sort on negative and non-negative numbers. - a = [123456,0,-12345,-123,123,1234,-1234,0,12345,-123456]; - a.sort(); - assertArrayEquals([-123,-1234,-12345,-123456,0,0,123,1234,12345,123456], a); - - // Tricky case avoiding integer overflow in Runtime_SmiLexicographicCompare. - a = [9, 1000000000].sort(); - assertArrayEquals([1000000000, 9], a); - a = [1000000000, 1].sort(); - assertArrayEquals([1, 1000000000], a); - a = [1000000000, 0].sort(); - assertArrayEquals([0, 1000000000], a); - - // One string is a prefix of the other. - a = [1230, 123].sort(); - assertArrayEquals([123, 1230], a); - a = [1231, 123].sort(); - assertArrayEquals([123, 1231], a); - - // Default sort on Smis and non-Smis. - a = [1000000000, 10000000000, 1000000001, -1000000000, -10000000000, -1000000001]; - a.sort(); - assertArrayEquals([-1000000000, -10000000000, -1000000001, 1000000000, 10000000000, 1000000001], a); - - // Other cases are tested implicitly in TestSmiLexicographicCompare. -} - -TestNumberSort(); - -// Test lexicographical string sorting. -function TestStringSort() { - var a = [ "cc", "c", "aa", "a", "bb", "b", "ab", "ac" ]; - a.sort(); - assertArrayEquals([ "a", "aa", "ab", "ac", "b", "bb", "c", "cc" ], a); -} - -TestStringSort(); - - -// Test object sorting. Calls toString on each element and sorts -// lexicographically. -function TestObjectSort() { - var obj0 = { toString: function() { return "a"; } }; - var obj1 = { toString: function() { return "b"; } }; - var obj2 = { toString: function() { return "c"; } }; - var a = [ obj2, obj0, obj1 ]; - a.sort(); - assertArrayEquals([ obj0, obj1, obj2 ], a); -} - -TestObjectSort(); - -// Test array sorting with holes in the array. -function TestArraySortingWithHoles() { - var a = []; - a[4] = "18"; - a[10] = "12"; - a.sort(); - assertEquals(11, a.length); - assertEquals("12", a[0]); - assertEquals("18", a[1]); -} - -TestArraySortingWithHoles(); - -// Test array sorting with undefined elemeents in the array. -function TestArraySortingWithUndefined() { - var a = [ 3, void 0, 2 ]; - a.sort(); - assertArrayEquals([ 2, 3, void 0 ], a); -} - -TestArraySortingWithUndefined(); - -// Test that sorting using an unsound comparison function still gives a -// sane result, i.e. it terminates without error and retains the elements -// in the array. -function TestArraySortingWithUnsoundComparisonFunction() { - var a = [ 3, void 0, 2 ]; - a.sort(function(x, y) { return 1; }); - a.sort(); - assertArrayEquals([ 2, 3, void 0 ], a); -} - -TestArraySortingWithUnsoundComparisonFunction(); - - -function TestSparseNonArraySorting(length) { - assertTrue(length > 101); - var obj = {length: length}; - obj[0] = 42; - obj[10] = 37; - obj[100] = undefined; - obj[length - 1] = null; - Array.prototype.sort.call(obj); - assertEquals(length, obj.length, "objsort length unaffected"); - assertEquals(37, obj[0], "objsort smallest number"); - assertEquals(42, obj[1], "objsort largest number"); - assertEquals(null, obj[2], "objsort null"); - assertEquals(undefined, obj[3], "objsort undefined"); - assertTrue(3 in obj, "objsort undefined retained"); - assertFalse(4 in obj, "objsort non-existing retained"); -} - -TestSparseNonArraySorting(5000); -TestSparseNonArraySorting(500000); -TestSparseNonArraySorting(Math.pow(2, 31) + 1); - - -function TestArrayLongerLength(length) { - var x = new Array(4); - x[0] = 42; - x[2] = 37; - x.length = length; - Array.prototype.sort.call(x); - assertEquals(length, x.length, "longlength length"); - assertEquals(37, x[0], "longlength first"); - assertEquals(42, x[1], "longlength second"); - assertFalse(2 in x,"longlength third"); -} - -TestArrayLongerLength(4); -TestArrayLongerLength(10); -TestArrayLongerLength(1000); -TestArrayLongerLength(500000); -TestArrayLongerLength(Math.pow(2,32) - 1); - - -function TestNonArrayLongerLength(length) { - var x = {}; - x[0] = 42; - x[2] = 37; - x.length = length; - Array.prototype.sort.call(x); - assertEquals(length, x.length, "longlength length"); - assertEquals(37, x[0], "longlength first"); - assertEquals(42, x[1], "longlength second"); - assertFalse(2 in x,"longlength third"); -} - -TestNonArrayLongerLength(4); -TestNonArrayLongerLength(10); -TestNonArrayLongerLength(1000); -TestNonArrayLongerLength(500000); -TestNonArrayLongerLength(Math.pow(2,32) - 1); - - -function TestNonArrayWithAccessors() { - // Regression test for issue 346, more info at URL - // http://code.google.com/p/v8/issues/detail?id=346 - // Reported by nth10sd, test based on this report. - var x = {}; - x[0] = 42; - x.__defineGetter__("1", function(){return this.foo;}); - x.__defineSetter__("1", function(val){this.foo = val;}); - x[1] = 49 - x[3] = 37; - x.length = 4; - Array.prototype.sort.call(x); - // Behavior of sort with accessors is undefined. This accessor is - // well-behaved (acts like a normal property), so it should work. - assertEquals(4, x.length, "sortaccessors length"); - assertEquals(37, x[0], "sortaccessors first"); - assertEquals(42, x[1], "sortaccessors second"); - assertEquals(49, x[2], "sortaccessors third") - assertFalse(3 in x, "sortaccessors fourth"); -} - -TestNonArrayWithAccessors(); - - -function TestInheritedElementSort(depth) { - var length = depth * 2 + 3; - var obj = {length: length}; - obj[depth * 2 + 1] = 0; - for (var i = 0; i < depth; i++) { - var newObj = {}; - newObj.__proto__ = obj; - obj[i] = undefined; - obj[i + depth + 1] = depth - i; - obj = newObj; - } - // expected (inherited) object: [undef1,...undefdepth,hole,1,...,depth,0,hole] - - Array.prototype.sort.call(obj, function(a,b) { return (b < a) - (a < b); }); - // expected result: [0,1,...,depth,undef1,...,undefdepth,hole] - var name = "SortInherit("+depth+")-"; - - assertEquals(length, obj.length, name+"length"); - for (var i = 0; i <= depth; i++) { - assertTrue(obj.hasOwnProperty(i), name + "hasvalue" + i); - assertEquals(i, obj[i], name + "value" + i); - } - for (var i = depth + 1; i < depth * 2 + 1; i++) { - assertEquals(undefined, obj[i], name + "undefined" + i); - assertTrue(obj.hasOwnProperty(i), name + "hasundefined" + i); - } - assertFalse(obj.hasOwnProperty(depth * 2 + 1), name + "hashole") - assertFalse(obj.hasOwnProperty(depth * 2 + 2), name + "hashole"); -} - -TestInheritedElementSort(5); -TestInheritedElementSort(15); - -function TestSparseInheritedElementSort(scale) { - var length = scale * 10; - var x = {length: length}; - var y = {}; - y.__proto__ = x; - - for (var i = 0; i < 5; i++) { - x[i * 2 * scale] = 2 * (4 - i); - y[(i * 2 + 1) * scale] = 2 * (4 - i) + 1; - } - - var name = "SparseSortInherit(" + scale + ")-"; - - Array.prototype.sort.call(y); - - assertEquals(length, y.length, name +"length"); - - for (var i = 0; i < 10; i++) { - assertTrue(y.hasOwnProperty(i), name + "hasvalue" + i); - assertEquals(i, y[i], name + "value" + i); - } - for (var i = 10; i < length; i++) { - assertFalse(y.hasOwnProperty(i), name + "noundef" + i); - - if (x.hasOwnProperty(i)) { - assertTrue(0 == i % (2 * scale), name + "new_x" + i); - } - } -} - -TestSparseInheritedElementSort(10); -TestSparseInheritedElementSort(100); -TestSparseInheritedElementSort(1000); - -function TestSpecialCasesInheritedElementSort() { - - var x = { - 1:"d1", - 2:"c1", - 3:"b1", - 4: undefined, - __proto__: { - length: 10000, - 1: "e2", - 10: "a2", - 100: "b2", - 1000: "c2", - 2000: undefined, - 8000: "d2", - 12000: "XX", - __proto__: { - 0: "e3", - 1: "d3", - 2: "c3", - 3: "b3", - 4: "f3", - 5: "a3", - 6: undefined, - } - } - }; - Array.prototype.sort.call(x); - - var name = "SpecialInherit-"; - - assertEquals(10000, x.length, name + "length"); - var sorted = ["a2", "a3", "b1", "b2", "c1", "c2", "d1", "d2", "e3", - undefined, undefined, undefined]; - for (var i = 0; i < sorted.length; i++) { - assertTrue(x.hasOwnProperty(i), name + "has" + i) - assertEquals(sorted[i], x[i], name + i); - } - assertFalse(x.hasOwnProperty(sorted.length), name + "haspost"); - assertFalse(sorted.length in x, name + "haspost2"); - assertTrue(x.hasOwnProperty(10), name + "hasundefined10"); - assertEquals(undefined, x[10], name + "undefined10"); - assertFalse(x.hasOwnProperty(100), name + "hasno100"); - assertEquals("b2", x[100], "inherits100"); - assertFalse(x.hasOwnProperty(1000), name + "hasno1000"); - assertEquals("c2", x[1000], "inherits1000"); - assertFalse(x.hasOwnProperty(2000), name + "hasno2000"); - assertEquals(undefined, x[2000], "inherits2000"); - assertFalse(x.hasOwnProperty(8000), name + "hasno8000"); - assertEquals("d2", x[8000], "inherits8000"); - assertFalse(x.hasOwnProperty(12000), name + "has12000"); - assertEquals("XX", x[12000], name + "XX12000"); -} - -TestSpecialCasesInheritedElementSort(); - -// Test that sort calls compare function with global object as receiver, -// and with only elements of the array as arguments. -function o(v) { - return {__proto__: o.prototype, val: v}; -} -var arr = [o(1), o(2), o(4), o(8), o(16), o(32), o(64), o(128), o(256), o(-0)]; -var global = this; -function cmpTest(a, b) { - assertEquals(global, this); - assertTrue(a instanceof o); - assertTrue(b instanceof o); - return a.val - b.val; -} -arr.sort(cmpTest); - -function TestSortDoesNotDependOnObjectPrototypeHasOwnProperty() { - Array.prototype.sort.call({ - __proto__: { hasOwnProperty: null, 0: 1 }, - length: 5 - }); - - var arr = new Array(2); - Object.defineProperty(arr, 0, { get: function() {}, set: function() {} }); - arr.hasOwnProperty = null; - arr.sort(); -} - -TestSortDoesNotDependOnObjectPrototypeHasOwnProperty(); - -function TestSortDoesNotDependOnArrayPrototypePush() { - // InsertionSort is used for arrays which length <= 22 - var arr = []; - for (var i = 0; i < 22; i++) arr[i] = {}; - Array.prototype.push = function() { - fail('Should not call push'); - }; - arr.sort(); - - // Quicksort is used for arrays which length > 22 - // Arrays which length > 1000 guarantee GetThirdIndex is executed - arr = []; - for (var i = 0; i < 2000; ++i) arr[i] = {}; - arr.sort(); -} - -TestSortDoesNotDependOnArrayPrototypePush(); - -function TestSortDoesNotDependOnArrayPrototypeSort() { - var arr = []; - for (var i = 0; i < 2000; i++) arr[i] = {}; - var sortfn = Array.prototype.sort; - Array.prototype.sort = function() { - fail('Should not call sort'); - }; - sortfn.call(arr); - // Restore for the next test - Array.prototype.sort = sortfn; -} - -TestSortDoesNotDependOnArrayPrototypeSort(); - -function TestSortToObject() { - Number.prototype[0] = 5; - Number.prototype[1] = 4; - Number.prototype.length = 2; - x = new Number(0); - assertEquals(0, Number(Array.prototype.sort.call(x))); - assertEquals(4, x[0]); - assertEquals(5, x[1]); - assertArrayEquals(["0", "1"], Object.getOwnPropertyNames(x)); - // The following would throw if ToObject weren't called. - assertEquals(0, Number(Array.prototype.sort.call(0))); -} -TestSortToObject(); - -function TestSortOnProxy() { - { - var p = new Proxy([2,1,3], {}); - assertEquals([1,2,3], p.sort()); - } - - { - function f() { return arguments }; - var a = f(2,1,3); - a.__proto__ = new Proxy({}, {}); - assertEquals([1,2,3], [...(Array.prototype.sort.apply(a))]); - } -} -TestSortOnProxy(); - -function TestSortOnNonExtensible() { - { - var arr = [1,,2]; - Object.preventExtensions(arr); - assertThrows(() => arr.sort(), TypeError); - assertEquals(arr, [1,,2]); - } - { - var arr = [1,,undefined]; - Object.preventExtensions(arr); - assertThrows(() => arr.sort(), TypeError); - assertFalse(arr.hasOwnProperty(1)); - assertEquals(arr, [1,,undefined]); - } - { - var arr = [1,undefined,2]; - Object.preventExtensions(arr); - arr.sort(); - assertEquals(arr, [1,2,undefined]); - } -} -TestSortOnNonExtensible(); - -function TestSortOnTypedArray() { - var array = new Int8Array([10,9,8,7,6,5,4,3,2,1]); - Object.defineProperty(array, "length", {value: 5}); - Array.prototype.sort.call(array); - assertEquals(array, new Int8Array([10,6,7,8,9,5,4,3,2,1])); - - var array = new Int8Array([10,9,8,7,6,5,4,3,2,1]); - Object.defineProperty(array, "length", {value: 15}); - Array.prototype.sort.call(array); - assertEquals(array, new Int8Array([1,10,2,3,4,5,6,7,8,9])); -} -TestSortOnTypedArray(); - - -// Test special prototypes -(function testSortSpecialPrototypes() { - function test(proto, length, expected) { - var result = { - length: length, - __proto__: proto, - }; - Array.prototype.sort.call(result); - assertEquals(expected.length, result.length, "result.length"); - for (var i = 0; i test(new String('cba'), 3, []), TypeError); - })(); - - (function typedArrys() { - test(new Int32Array(0), 0, []); - test(new Int32Array(1), 1, [0]); - var array = new Int32Array(3); - array[0] = 2; - array[1] = 1; - array[2] = 3; - test(array, 1, [2]); - test(array, 2, [1, 2]); - test(array, 3, [1, 2, 3]); - })() - -})(); - -assertThrows(() => { - Array.prototype.sort.call(undefined); -}, TypeError); - -// This test ensures that RemoveArrayHoles does not shadow indices in the -// prototype chain. There are multiple code paths, we force both and check that -// they have the same behavior. -function TestPrototypeHoles() { - function test(forceGenericFallback) { - let proto2 = { - 7: 27, - }; - - let proto1 = { - __proto__: proto2, - 8: 18, - 9: 19, - }; - - let xs = { - __proto__: proto1, - length: 10, - 7: 7, - 8: 8, - 9: 9, - }; - - if (forceGenericFallback) { - Object.defineProperty(xs, "6", { - get: () => this.foo, - set: (val) => this.foo = val - }); - } - xs[6] = 6; - - Array.prototype.sort.call(xs, (a, b) => a - b); - - assertEquals(10, xs.length); - assertEquals(6, xs[0]); - assertEquals(7, xs[1]); - assertEquals(8, xs[2]); - assertEquals(9, xs[3]); - - // Index 7,8,9 will get the prototype values. - assertFalse(xs.hasOwnProperty(7)); - assertEquals(27, xs[7]); - - assertFalse(xs.hasOwnProperty(8)); - assertEquals(18, xs[8]); - - assertFalse(xs.hasOwnProperty(9)); - assertEquals(19, xs[9]); - } - - test(true); - test(false); -} -TestPrototypeHoles(); - -// The following test ensures that elements on the prototype are also copied -// for JSArrays and not only JSObjects. -function TestArrayPrototypeHasElements() { - let array = [1, 2, 3, 4, 5]; - for (let i = 0; i < array.length; i++) { - delete array[i]; - Object.prototype[i] = 42; - } - - let comparator_called = false; - array.sort(function (a, b) { - if (a === 42 || b === 42) { - comparator_called = true; - } - return a - b; - }); - - assertTrue(comparator_called); -} -TestArrayPrototypeHasElements(); - -// The following Tests make sure that there is no crash when the element kind -// or the array length changes. Since comparison functions like this are not -// consistent, we do not have to make sure that the array is actually sorted -// -// The assertions for the element kinds are not there to ensure that a specific -// action causes a specific element kind change, but rather that we have most -// of the transitions covered. - -function cmp_smaller(a, b) { - if (a < b) return -1; - if (b < a) return 1; - return 0; -} - -function create_cmpfn(transformfn) { - let cmp_count = 0; - return (a, b) => { - ++cmp_count; - if (cmp_count == 2) { - transformfn(); - } - - return cmp_smaller(a, b); - } -} - -function HasPackedSmi(xs) { - return %HasFastPackedElements(xs) && %HasSmiElements(xs); -} - -function HasPackedDouble(xs) { - return %HasFastPackedElements(xs) && %HasDoubleElements(xs); -} - -function HasPackedObject(xs) { - return %HasFastPackedElements(xs) && %HasObjectElements(xs); -} - -function HasHoleySmi(xs) { - return %HasHoleyElements(xs) && %HasSmiElements(xs); -} - -function HasHoleyDouble(xs) { - return %HasHoleyElements(xs) && %HasDoubleElements(xs); -} - -function HasHoleyObject(xs) { - return %HasHoleyElements(xs) && %HasObjectElements(xs); -} - -function TestSortCmpPackedSmiToPackedDouble() { - let xs = [2,1,4]; - - assertTrue(HasPackedSmi(xs)); - xs.sort(create_cmpfn(() => xs[0] += 0.1)); - assertTrue(HasPackedDouble(xs)); -} -TestSortCmpPackedSmiToPackedDouble(); - -function TestSortCmpPackedDoubleToPackedElement() { - let xs = [2.1, 1.2, 4.4]; - - assertTrue(HasPackedDouble(xs)); - xs.sort(create_cmpfn(() => xs[0] = 'a')); - assertTrue(HasPackedObject(xs)); -} -TestSortCmpPackedDoubleToPackedElement(); - -function TestSortCmpPackedElementToDictionary() { - let xs = ['a', 'b', 'c']; - - assertTrue(HasPackedObject(xs)); - xs.sort(create_cmpfn(() => xs[%MaxSmi()] = 'd')); - assertTrue(%HasDictionaryElements(xs)); -} -TestSortCmpPackedElementToDictionary(); - -function TestSortCmpHoleySmiToHoleyDouble() { - let xs = [2, 1, 4]; - xs[5] = 42; - - assertTrue(HasHoleySmi(xs)); - xs.sort(create_cmpfn(() => xs[0] += 0.1)); - assertTrue(HasHoleyDouble(xs)); -} -TestSortCmpHoleySmiToHoleyDouble(); - -function TestSortCmpHoleyDoubleToHoleyElement() { - let xs = [2.1, 1.2, 4]; - xs[5] = 42; - - assertTrue(HasHoleyDouble(xs)); - xs.sort(create_cmpfn(() => xs[0] = 'a')); - assertTrue(HasHoleyObject(xs)); -} -TestSortCmpHoleyDoubleToHoleyElement(); - -function TestSortCmpHoleyElementToDictionary() { - let xs = ['b', 'a', 'd']; - xs[5] = '42'; - - assertTrue(HasHoleyObject(xs)); - xs.sort(create_cmpfn(() => xs[%MaxSmi()] = 'e')); - assertTrue(%HasDictionaryElements(xs)); -} -TestSortCmpHoleyElementToDictionary(); - -function TestSortCmpPackedSmiToHoleySmi() { - let xs = [2, 1, 4]; - - assertTrue(HasPackedSmi(xs)); - xs.sort(create_cmpfn(() => xs[10] = 42)); - assertTrue(HasHoleySmi(xs)); -} -TestSortCmpPackedSmiToHoleySmi(); - -function TestSortCmpPackedDoubleToHoleyDouble() { - let xs = [2.1, 1.2, 4]; - - assertTrue(HasPackedDouble(xs)); - xs.sort(create_cmpfn(() => xs[10] = 42)); - assertTrue(HasHoleyDouble(xs)); -} -TestSortCmpPackedDoubleToHoleyDouble(); - -function TestSortCmpPackedObjectToHoleyObject() { - let xs = ['b', 'a', 'd']; - - assertTrue(HasPackedObject(xs)); - xs.sort(create_cmpfn(() => xs[10] = '42')); - assertTrue(HasHoleyObject(xs)); -} -TestSortCmpPackedObjectToHoleyObject(); - -function TestSortCmpPackedChangesLength() { - let xs = [2, 1, 4]; - - assertTrue(HasPackedSmi(xs)); - xs.sort(create_cmpfn(() => xs.length *= 2)); - assertTrue(HasHoleySmi(xs)); -} -TestSortCmpPackedChangesLength(); - -function TestSortCmpPackedSetLengthToZero() { - let xs = [2, 1, 4, 3]; - - assertTrue(HasPackedSmi(xs)); - xs.sort(create_cmpfn(() => xs.length = 0)); - assertTrue(HasPackedSmi(xs)); -} diff --git a/implementation-contributed/v8/mjsunit/array-splice.js b/implementation-contributed/v8/mjsunit/array-splice.js deleted file mode 100644 index 460172edd74..00000000000 --- a/implementation-contributed/v8/mjsunit/array-splice.js +++ /dev/null @@ -1,465 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that splicing array of holes keeps it as array of holes -(function() { - for (var i = 0; i < 7; i++) { - var array = new Array(10); - var spliced = array.splice(1, 1, 'one', 'two'); - assertEquals(1, spliced.length); - assertFalse(0 in spliced, "0 in spliced"); - - assertEquals(11, array.length); - assertFalse(0 in array, "0 in array"); - assertTrue(1 in array); - assertTrue(2 in array); - assertFalse(3 in array, "3 in array"); - } -})(); - - -// Check various variants of empty array's splicing. -(function() { - for (var i = 0; i < 7; i++) { - assertEquals([], [].splice(0, 0)); - assertEquals([], [].splice(1, 0)); - assertEquals([], [].splice(0, 1)); - assertEquals([], [].splice(-1, 0)); - } -})(); - - -// Check that even if result array is empty, receiver gets sliced. -(function() { - for (var i = 0; i < 7; i++) { - var a = [1, 2, 3]; - assertEquals([], a.splice(1, 0, 'a', 'b', 'c')); - assertEquals([1, 'a', 'b', 'c', 2, 3], a); - } -})(); - - -// Check various forms of arguments omission. -(function() { - var array; - for (var i = 0; i < 7; i++) { - array = [1, 2, 3] - assertEquals([], array.splice()); - assertEquals([1, 2, 3], array); - - // SpiderMonkey, TraceMonkey and JSC treat the case where no delete count is - // given differently from when an undefined delete count is given. - // This does not follow ECMA-262, but we do the same for - // compatibility. - array = [1, 2, 3] - assertEquals([1, 2, 3], array.splice(0)); - assertEquals([], array); - - array = [1, 2, 3] - assertEquals([1, 2, 3], array.splice(undefined)); - assertEquals([], array); - - array = [1, 2, 3] - assertEquals([1, 2, 3], array.splice("foobar")); - assertEquals([], array); - - array = [1, 2, 3] - assertEquals([], array.splice(undefined, undefined)); - assertEquals([1, 2, 3], array); - - array = [1, 2, 3] - assertEquals([], array.splice("foobar", undefined)); - assertEquals([1, 2, 3], array); - - array = [1, 2, 3] - assertEquals([], array.splice(undefined, "foobar")); - assertEquals([1, 2, 3], array); - - array = [1, 2, 3] - assertEquals([], array.splice("foobar", "foobar")); - assertEquals([1, 2, 3], array); - } -})(); - - -// Check variants of negatives and positive indices. -(function() { - var array, spliced; - for (var i = 0; i < 7; i++) { - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(-100); - assertEquals([], array); - assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(-1e100); - assertEquals([], array); - assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(-3); - assertEquals([1, 2, 3, 4], array); - assertEquals([5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(-3.999999); - assertEquals([1, 2, 3, 4], array); - assertEquals([5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(-3.000001); - assertEquals([1, 2, 3, 4], array); - assertEquals([5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(4); - assertEquals([1, 2, 3, 4], array); - assertEquals([5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(4.999999); - assertEquals([1, 2, 3, 4], array); - assertEquals([5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(4.000001); - assertEquals([1, 2, 3, 4], array); - assertEquals([5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(6); - assertEquals([1, 2, 3, 4, 5, 6], array); - assertEquals([7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(7); - assertEquals([1, 2, 3, 4, 5, 6, 7], array); - assertEquals([], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(8); - assertEquals([1, 2, 3, 4, 5, 6, 7], array); - assertEquals([], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(100); - assertEquals([1, 2, 3, 4, 5, 6, 7], array); - assertEquals([], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(1e100); - assertEquals([1, 2, 3, 4, 5, 6, 7], array); - assertEquals([], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, -100); - assertEquals([1, 2, 3, 4, 5, 6, 7], array); - assertEquals([], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, -1e100); - assertEquals([1, 2, 3, 4, 5, 6, 7], array); - assertEquals([], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, -3); - assertEquals([1, 2, 3, 4, 5, 6, 7], array); - assertEquals([], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, -3.999999); - assertEquals([1, 2, 3, 4, 5, 6, 7], array); - assertEquals([], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, -3.000001); - assertEquals([1, 2, 3, 4, 5, 6, 7], array); - assertEquals([], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, 4); - assertEquals([5, 6, 7], array); - assertEquals([1, 2, 3, 4], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, 4.999999); - assertEquals([5, 6, 7], array); - assertEquals([1, 2, 3, 4], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, 4.000001); - assertEquals([5, 6, 7], array); - assertEquals([1, 2, 3, 4], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, 6); - assertEquals([7], array); - assertEquals([1, 2, 3, 4, 5, 6], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, 7); - assertEquals([], array); - assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, 8); - assertEquals([], array); - assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, 100); - assertEquals([], array); - assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); - - array = [1, 2, 3, 4, 5, 6, 7]; - spliced = array.splice(0, 1e100); - assertEquals([], array); - assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); - - // Some exotic cases. - obj = { toString: function() { throw 'Exception'; } }; - - // Throwing an exception in conversion: - try { - [1, 2, 3].splice(obj, 3); - throw 'Should have thrown'; - } catch (e) { - assertEquals('Exception', e); - } - - try { - [1, 2, 3].splice(0, obj, 3); - throw 'Should have thrown'; - } catch (e) { - assertEquals('Exception', e); - } - - array = [1, 2, 3]; - array.splice(0, 3, obj); - assertEquals(1, array.length); - - // Custom conversion: - array = [1, 2, 3]; - spliced = array.splice({valueOf: function() { return 1; }}, - {toString: function() { return 2; }}, - 'one', 'two'); - assertEquals([2, 3], spliced); - assertEquals([1, 'one', 'two'], array); - } -})(); - - -// Nasty: modify the array in ToInteger. -(function() { - var array = []; - var spliced; - - for (var i = 0; i < 13; i++) { - bad_start = { valueOf: function() { array.push(2*i); return -1; } }; - bad_count = { valueOf: function() { array.push(2*i + 1); return 1; } }; - spliced = array.splice(bad_start, bad_count); - // According to the spec (15.4.4.12), length is calculated before - // performing ToInteger on arguments. However, v8 ignores elements - // we add while converting, so we need corrective pushes. - array.push(2*i); array.push(2*i + 1); - if (i == 0) { - assertEquals([], spliced); // Length was 0, nothing to get. - assertEquals([0, 1], array); - } else { - // When we start splice, array is [0 .. 2*i - 1], so we get - // as a result [2*i], this element is removed from the array, - // but [2 * i, 2 * i + 1] are added. - assertEquals([2 * i - 1], spliced); - assertEquals(2 * i, array[i]); - assertEquals(2 * i + 1, array[i + 1]); - } - } -})(); - -// Check the behaviour when approaching maximal values for length. -(function() { - for (var i = 0; i < 7; i++) { - try { - new Array(Math.pow(2, 32) - 3).splice(-1, 0, 1, 2, 3, 4, 5); - throw 'Should have thrown RangeError'; - } catch (e) { - assertTrue(e instanceof RangeError); - } - - // Check smi boundary - var bigNum = (1 << 30) - 3; - var array = new Array(bigNum); - array.splice(-1, 0, 1, 2, 3, 4, 5, 6, 7); - assertEquals(bigNum + 7, array.length); - } -})(); - -(function() { - for (var i = 0; i < 7; i++) { - var a = [7, 8, 9]; - a.splice(0, 0, 1, 2, 3, 4, 5, 6); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], a); - assertFalse(a.hasOwnProperty(10), "a.hasOwnProperty(10)"); - assertEquals(undefined, a[10]); - } -})(); - -(function testSpliceDeleteDouble() { - var a = [1.1, 1.2, 1.3, 1.4]; - a.splice(2, 1) - assertEquals([1.1, 1.2, 1.4], a); -})(); - -// Past this point the ArrayProtector is invalidated since we modify the -// Array.prototype. - -// Check the case of JS builtin .splice() -(function() { - for (var i = 0; i < 7; i++) { - var array = [1, 2, 3, 4]; - Array.prototype[3] = 'foo'; // To force JS builtin. - - var spliced = array.splice(); - - assertEquals([], spliced); - assertEquals([1, 2, 3, 4], array); - } -})(); - -// Now check the case with array of holes and some elements on prototype. -(function() { - var len = 9; - - var at3 = "@3"; - var at7 = "@7"; - - for (var i = 0; i < 7; i++) { - var array = new Array(len); - var array_proto = []; - array_proto[3] = at3; - array_proto[7] = at7; - array.__proto__ = array_proto; - - var spliced = array.splice(2, 2, 'one', undefined, 'two'); - - // Second hole (at index 3) of array turns into - // value of Array.prototype[3] while copying. - assertEquals([, at3], spliced); - assertEquals([, , 'one', undefined, 'two', , , at7, at7, ,], array); - - // ... but array[3] and array[7] is actually a hole: - assertTrue(delete array_proto[3]); - assertEquals(undefined, array[3]); - assertTrue(delete array_proto[7]); - assertEquals(undefined, array[7]); - - // and now check hasOwnProperty - assertFalse(array.hasOwnProperty(0), "array.hasOwnProperty(0)"); - assertFalse(array.hasOwnProperty(1), "array.hasOwnProperty(1)"); - assertTrue(array.hasOwnProperty(2)); - assertTrue(array.hasOwnProperty(3)); - assertTrue(array.hasOwnProperty(4)); - assertFalse(array.hasOwnProperty(5), "array.hasOwnProperty(5)"); - assertFalse(array.hasOwnProperty(6), "array.hasOwnProperty(6)"); - assertFalse(array.hasOwnProperty(7), "array.hasOwnProperty(7)"); - assertTrue(array.hasOwnProperty(8)); - assertFalse(array.hasOwnProperty(9), "array.hasOwnProperty(9)"); - - // and now check couple of indices above length. - assertFalse(array.hasOwnProperty(10), "array.hasOwnProperty(10)"); - assertFalse(array.hasOwnProperty(15), "array.hasOwnProperty(15)"); - assertFalse(array.hasOwnProperty(31), "array.hasOwnProperty(31)"); - assertFalse(array.hasOwnProperty(63), "array.hasOwnProperty(63)"); - assertFalse(array.hasOwnProperty(Math.pow(2, 32) - 2), - "array.hasOwnProperty(Math.pow(2, 32) - 2)"); - } -})(); - -// Now check the case with array of holes and some elements on prototype. -(function() { - var len = 9; - - var at3 = "@3"; - var at7 = "@7"; - - for (var i = 0; i < 7; i++) { - var array = new Array(len); - Array.prototype[3] = at3; - Array.prototype[7] = at7; - - var spliced = array.splice(2, 2, 'one', undefined, 'two'); - - // Second hole (at index 3) of array turns into - // value of Array.prototype[3] while copying. - assertEquals([, at3], spliced); - assertEquals([, , 'one', undefined, 'two', , , at7, at7, ,], array); - - // ... but array[3] and array[7] is actually a hole: - assertTrue(delete Array.prototype[3]); - assertEquals(undefined, array[3]); - assertTrue(delete Array.prototype[7]); - assertEquals(undefined, array[7]); - - // and now check hasOwnProperty - assertFalse(array.hasOwnProperty(0), "array.hasOwnProperty(0)"); - assertFalse(array.hasOwnProperty(1), "array.hasOwnProperty(1)"); - assertTrue(array.hasOwnProperty(2)); - assertTrue(array.hasOwnProperty(3)); - assertTrue(array.hasOwnProperty(4)); - assertFalse(array.hasOwnProperty(5), "array.hasOwnProperty(5)"); - assertFalse(array.hasOwnProperty(6), "array.hasOwnProperty(6)"); - assertFalse(array.hasOwnProperty(7), "array.hasOwnProperty(7)"); - assertTrue(array.hasOwnProperty(8)); - assertFalse(array.hasOwnProperty(9), "array.hasOwnProperty(9)"); - - // and now check couple of indices above length. - assertFalse(array.hasOwnProperty(10), "array.hasOwnProperty(10)"); - assertFalse(array.hasOwnProperty(15), "array.hasOwnProperty(15)"); - assertFalse(array.hasOwnProperty(31), "array.hasOwnProperty(31)"); - assertFalse(array.hasOwnProperty(63), "array.hasOwnProperty(63)"); - assertFalse(array.hasOwnProperty(Math.pow(2, 32) - 2), - "array.hasOwnProperty(Math.pow(2, 32) - 2)"); - } -})(); - -// Verify that fast implementations aren't confused by empty DOUBLE element arrays -(function() { - - function foo(dontAddAnything) { - let a = []; - if (dontAddAnything === undefined) { - a[1] = 0.5; - } - return a.splice(0, 0, 3.5); - } - - // Learn via allocation site tracking to create double arrays in foo(). - foo(); - foo(); - // force splice to copy the input array. - foo(true); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-store-and-grow.js b/implementation-contributed/v8/mjsunit/array-store-and-grow.js deleted file mode 100644 index ee831ad0615..00000000000 --- a/implementation-contributed/v8/mjsunit/array-store-and-grow.js +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -// Verifies that the KeyedStoreIC correctly handles out-of-bounds stores -// to an array that grow it by a single element. Test functions are -// called twice to make sure that the IC is used, first call is handled -// by the runtime in the miss stub. - -function array_store_1(a,b,c) { - return (a[b] = c); -} - -// Check handling of the empty array. -var a = []; -array_store_1(a, 0, 1); -a = []; -array_store_1(a, 0, 1); -assertEquals(1, a[0]); -assertEquals(1, array_store_1([], 0, 1)); - -a = []; -for (x=0;x<100000;++x) { - assertEquals(x, array_store_1(a, x, x)); -} - -for (x=0;x<100000;++x) { - assertEquals(x, array_store_1([], 0, x)); -} - -function array_store_2(a,b,c) { - return (a[b] = c); -} - -a = []; -array_store_2(a, 0, 0.5); -a = []; -array_store_2(a, 0, 0.5); -assertEquals(0.5, a[0]); -assertEquals(0.5, array_store_2([], 0, 0.5)); - -function array_store_3(a,b,c) { - return (a[b] = c); -} - -x = new Object(); -a = []; -array_store_3(a, 0, x); -a = []; -array_store_3(a, 0, x); -assertEquals(x, a[0]); -assertEquals(x, array_store_3([], 0, x)); - -// Check the handling of COW arrays -function makeCOW() { - return [1]; -} - -function array_store_4(a,b,c) { - return (a[b] = c); -} - -a = makeCOW(); -array_store_4(a, 1, 1); -a = makeCOW(); -array_store_4(a, 1, 1); -assertEquals(1, a[1]); -assertEquals(1, array_store_4([], 1, 1)); - -function array_store_5(a,b,c) { - return (a[b] = c); -} - -a = makeCOW(); -array_store_5(a, 1, 0.5); -a = makeCOW(); -array_store_5(a, 1, 0.5); -assertEquals(0.5, a[1]); -a = []; -assertEquals(0.5, array_store_5(a, 1, 0.5)); -assertEquals(undefined, a[0]); -assertEquals(0.5, a[1]); - -function array_store_6(a,b,c) { - return (a[b] = c); -} - -a = makeCOW(); -array_store_6(a, 1, x); -a = makeCOW(); -array_store_6(a, 1, x); -assertEquals(x, a[1]); -assertEquals(x, array_store_6([], 1, x)); - -// Check the handling of mutable arrays. -a = new Array(1,2,3); -array_store_4(a, 3, 1); -a = new Array(1,2,3); -array_store_4(a, 3, 1); -assertEquals(1, a[3]); -assertEquals(1, array_store_4([], 3, 1)); - -function array_store_5(a,b,c) { - return (a[b] = c); -} - -a = new Array(1,2,3); -array_store_5(a, 3, 0.5); -a = new Array(1,2,3); -array_store_5(a, 3, 0.5); -assertEquals(0.5, a[3]); -assertEquals(0.5, array_store_5([], 3, 0.5)); - -function array_store_6(a,b,c) { - return (a[b] = c); -} - -a = new Array(1,2,3); -array_store_6(a, 3, x); -a = new Array(1,2,3); -array_store_6(a, 3, x); -assertEquals(x, a[3]); -assertEquals(x, array_store_6([], 3, x)); - -function array_store_7(a,b,c) { - return (a[b] = c); -} - -// Check the handling of mutable arrays of doubles -var a = new Array(0.5, 1.5); -array_store_7(a, 2, .5); -a = new Array(0.5, 1.5); -array_store_7(a, 2, .5); -assertEquals(0.5, a[2]); -a = new Array(0.5, 1.5); -assertEquals(0.5, array_store_7(a, 2, 0.5)); - -for (x=0;x<100000;++x) { - a = new Array(0.5, 1.5); - assertEquals(x, array_store_7(a, 2, x)); -} - -function array_store_8(a,b,c) { - return (a[b] = c); -} - -var a = new Array(0.5, 1.5); -array_store_8(a, 2, .5); -a = new Array(0.5, 1.5); -array_store_8(a, 10, .5); -assertEquals(0.5, a[10]); - -// Grow the empty array with a double store. -function array_store_9(a,b,c) { - return (a[b] = c); -} - -var a = []; -array_store_9(a, 0, 0.5); -a = []; -array_store_1(a, 0, 0.5); -assertEquals(0.5, a[0]); -assertEquals(0.5, array_store_1([], 0, 0.5)); - - -// Verify that a grow store will deoptimize if the max gap (difference between -// the end of an array capacity and a new index) is passed. The wrapper is to -// make sure array_store_10 isn't inlined. - -(function() { - function grow_store(a,b,c) { - a[b] = c; - } - - a = new Array(1); - grow_store(a,1,1); - grow_store(a,2,1); - %OptimizeFunctionOnNextCall(grow_store); - grow_store(a,10,1); - assertOptimized(grow_store); - grow_store(a,2048,1); - assertUnoptimized(grow_store); - %ClearFunctionFeedback(grow_store); -})(); - - -// Verify that a polymorphic store and grow IC when crankshafted is still -// a grow IC (earlier it would revert to a standard store in the polymorphic -// case). -(function() { - function f(o, k, v) { - o[k] = v; - } - - a = [3.5]; - f(a, 1, "hi"); // DOUBLE packed array -> tagged packed grow - a = {}; - a.p = "property"; - a[0] = 1; - f(a, 0, 5.4); - - %OptimizeFunctionOnNextCall(f); - // Should be a polymorphic grow stub. If not a grow stub it will deopt. - f(new Array("hi"), 1, 3); - assertOptimized(f); - %ClearFunctionFeedback(f); -})(); - - -// Now verify that a polymorphic store (non-growing) IC when crankshafted WILL -// deopt if you pass an element out of bounds. -(function() { - function f(o, k, v) { - o[k] = v; - } - - a = [3.5]; - f(a, 0, "hi"); // DOUBLE packed array -> tagged packed grow - a = {}; - a.p = "property"; - a[0] = 1; - f(a, 0, 5.4); - - %OptimizeFunctionOnNextCall(f); - f(new Array("hi"), 0, 3); - assertOptimized(f); - // An attempt to grow should cause deopt - f(new Array("hi"), 1, 3); - assertUnoptimized(f); - %ClearFunctionFeedback(f); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-tolocalestring.js b/implementation-contributed/v8/mjsunit/array-tolocalestring.js deleted file mode 100644 index a5f856907af..00000000000 --- a/implementation-contributed/v8/mjsunit/array-tolocalestring.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function CycleDetection() { - const arr = [ - { - toLocaleString() { - return [1, arr]; - } - } - ]; - assertSame('1,', arr.toLocaleString()); - assertSame('1,', arr.toLocaleString()); -})(); - -(function ThrowsError(){ - function TestError() {} - const arr = []; - const obj = { - toLocaleString(){ - throw new TestError(); - } - }; - arr[0] = obj; - assertThrows(() => arr.toLocaleString(), TestError); - - // Verifies cycle detection still works properly after thrown error. - arr[0] = { - toLocaleString() { - return 1; - } - }; - assertSame('1', arr.toLocaleString()); -})(); - -(function AccessThrowsError(){ - function TestError() {} - const arr = []; - const obj = { - get toLocaleString(){ - throw new TestError(); - } - }; - arr[0] = obj; - assertThrows(() => arr.toLocaleString(), TestError); - - // Verifies cycle detection still works properly after thrown error. - arr[0] = { - toLocaleString() { - return 1; - } - }; - assertSame('1', arr.toLocaleString()); -})(); - -(function NotCallable(){ - const arr = []; - const obj = { - toLocaleString: 7 - } - arr[0] = obj; - assertThrows(() => arr.toLocaleString(), TypeError, '7 is not a function'); - - // Verifies cycle detection still works properly after thrown error. - arr[0] = { - toLocaleString() { - return 1; - } - }; - assertSame('1', arr.toLocaleString()); -})(); diff --git a/implementation-contributed/v8/mjsunit/array-tostring.js b/implementation-contributed/v8/mjsunit/array-tostring.js deleted file mode 100644 index 382bf8d7a02..00000000000 --- a/implementation-contributed/v8/mjsunit/array-tostring.js +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Array's toString should call the object's own join method, if one exists and -// is callable. Otherwise, just use the original Object.toString function. - -var success = "[test success]"; -var expectedThis; -function testJoin() { - assertEquals(0, arguments.length); - assertSame(expectedThis, this); - return success; -} - - -// On an Array object. - -// Default case. -var a1 = [1, 2, 3]; -assertEquals(a1.join(), a1.toString()); - -// Non-standard "join" function is called correctly. -var a2 = [1, 2, 3]; -a2.join = testJoin; -expectedThis = a2; -assertEquals(success, a2.toString()); - -// Non-callable join function is ignored and Object.prototype.toString is -// used instead. -var a3 = [1, 2, 3]; -a3.join = "not callable"; -assertEquals("[object Array]", a3.toString()); - -// Non-existing join function is treated same as non-callable. -var a4 = [1, 2, 3]; -a4.__proto__ = { toString: Array.prototype.toString }; -// No join on Array. -assertEquals("[object Array]", a4.toString()); - - -// On a non-Array object. - -// Default looks-like-an-array case. -var o1 = {length: 3, 0: 1, 1: 2, 2: 3, - toString: Array.prototype.toString, - join: Array.prototype.join}; -assertEquals(o1.join(), o1.toString()); - - -// Non-standard join is called correctly. -// Check that we don't read, e.g., length before calling join. -var o2 = {toString : Array.prototype.toString, - join: testJoin, - get length() { assertUnreachable(); }, - get 0() { assertUnreachable(); }}; -expectedThis = o2; -assertEquals(success, o2.toString()); - -// Non-standard join is called even if it looks like an array. -var o3 = {length: 3, 0: 1, 1: 2, 2: 3, - toString: Array.prototype.toString, - join: testJoin}; -expectedThis = o3; -assertEquals(success, o3.toString()); - -// Non-callable join works same as for Array. -var o4 = {length: 3, 0: 1, 1: 2, 2: 3, - toString: Array.prototype.toString, - join: "not callable"}; -assertEquals("[object Object]", o4.toString()); - - -// Non-existing join works same as for Array. -var o5 = {length: 3, 0: 1, 1: 2, 2: 3, - toString: Array.prototype.toString - /* no join */}; -assertEquals("[object Object]", o5.toString()); - - -// Test that ToObject is called before getting "join", so the instance -// that "join" is read from is the same one passed as receiver later. -var called_before = false; -expectedThis = null; -Object.defineProperty(Number.prototype, "join", {get: function() { - assertFalse(called_before); - called_before = true; - expectedThis = this; - return testJoin; - }}); -Number.prototype.arrayToString = Array.prototype.toString; -assertEquals(success, (42).arrayToString()); - -// ---------------------------------------------------------- -// Testing Array.prototype.toLocaleString - -// Ensure that it never uses Array.prototype.toString for anything. -Array.prototype.toString = function() { assertUnreachable(); }; - -// Default case. -var la1 = [1, [2, 3], 4]; -assertEquals("1,2,3,4", la1.toLocaleString()); - -// Used on a string (which looks like an array of characters). -String.prototype.toLocaleString = function() { - return (this.length == 1) ? this : Array.prototype.toLocaleString.call(this); -} -assertEquals("1,2,3,4", "1234".toLocaleString()); - -// If toLocaleString of element is not callable, throw a TypeError. -var la2 = [1, {toLocaleString: "not callable"}, 3]; -assertThrows(function() { la2.toLocaleString(); }, TypeError); - -// If toLocaleString of element is callable, call it. -var la3 = [1, {toLocaleString: function() { return "XX";}}, 3]; -assertEquals("1,XX,3", la3.toLocaleString()); - -// Omitted elements, as well as undefined and null, become empty string. -var la4 = [1, null, 3, undefined, 5,, 7]; -assertEquals("1,,3,,5,,7", la4.toLocaleString()); - - -// ToObject is called first and the same object is being used for the -// rest of the operations. -Object.defineProperty(Number.prototype, "length", { - get: function() { - exptectedThis = this; - return 3; - }}); -for (var i = 0; i < 3; i++) { - Object.defineProperty(Number.prototype, i, { - get: function() { - assertEquals(expectedThis, this); - return +this; - }}); -} -Number.prototype.arrayToLocaleString = Array.prototype.toLocaleString; -assertEquals("42,42,42", (42).arrayToLocaleString()); - - -(function TestToLocaleStringCalls() { - let log = []; - let pushArgs = (label) => (...args) => log.push(label, args); - - let NumberToLocaleString = Number.prototype.toLocaleString; - let StringToLocaleString = String.prototype.toLocaleString; - let ObjectToLocaleString = Object.prototype.toLocaleString; - Number.prototype.toLocaleString = pushArgs("Number"); - String.prototype.toLocaleString = pushArgs("String"); - Object.prototype.toLocaleString = pushArgs("Object"); - - [42, "foo", {}].toLocaleString(); - assertEquals(["Number", [], "String", [], "Object", []], log); - - Number.prototype.toLocaleString = NumberToLocaleString; - String.prototype.toLocaleString = StringToLocaleString; - Object.prototype.toLocaleString = ObjectToLocaleString; -})(); diff --git a/implementation-contributed/v8/mjsunit/array-unshift.js b/implementation-contributed/v8/mjsunit/array-unshift.js deleted file mode 100644 index cbc8d4091d7..00000000000 --- a/implementation-contributed/v8/mjsunit/array-unshift.js +++ /dev/null @@ -1,223 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that unshifting array of holes keeps the original array -// as array of holes -(function() { - var array = new Array(10); - assertEquals(13, array.unshift('1st', '2ns', '3rd')); - assertTrue(0 in array); - assertTrue(1 in array); - assertTrue(2 in array); - assertFalse(3 in array); -})(); - - -// Check that unshift with no args has no side-effects. -(function() { - var len = 3; - var array = new Array(len); - - var at0 = '@0'; - var at2 = '@2'; - - Array.prototype[0] = at0; - Array.prototype[2] = at2; - - // array owns nothing... - assertFalse(array.hasOwnProperty(0)); - assertFalse(array.hasOwnProperty(1)); - assertFalse(array.hasOwnProperty(2)); - - // ... but sees values from Array.prototype - assertEquals(array[0], at0); - assertEquals(array[1], undefined); - assertEquals(array[2], at2); - - assertEquals(len, array.unshift()); - - assertTrue(delete Array.prototype[0]); - assertTrue(delete Array.prototype[2]); - - // array still owns nothing... - assertFalse(array.hasOwnProperty(0)); - assertFalse(array.hasOwnProperty(1)); - assertFalse(array.hasOwnProperty(2)); - - // ... so they are not affected be delete. - assertEquals(array[0], undefined); - assertEquals(array[1], undefined); - assertEquals(array[2], undefined); -})(); - - -// Now check the case with array of holes and some elements on prototype. -(function() { - var len = 9; - var array = new Array(len); - Array.prototype[3] = "@3"; - Array.prototype[7] = "@7"; - - assertEquals(len, array.length); - for (var i = 0; i < array.length; i++) { - assertEquals(array[i], Array.prototype[i]); - } - - assertEquals(len + 1, array.unshift('head')); - - assertEquals(len + 1, array.length); - // Note that unshift copies values from prototype into the array. - assertEquals(array[4], Array.prototype[3]); - assertTrue(array.hasOwnProperty(4)); - - assertEquals(array[8], Array.prototype[7]); - assertTrue(array.hasOwnProperty(8)); - - // ... but keeps the rest as holes: - Array.prototype[5] = "@5"; - assertEquals(array[5], Array.prototype[5]); - assertFalse(array.hasOwnProperty(5)); - - assertEquals(array[3], Array.prototype[3]); - assertFalse(array.hasOwnProperty(3)); - - assertEquals(array[7], Array.prototype[7]); - assertFalse(array.hasOwnProperty(7)); - - assertTrue(delete Array.prototype[3]); - assertTrue(delete Array.prototype[5]); - assertTrue(delete Array.prototype[7]); -})(); - -// Check that unshift with no args has no side-effects. -(function() { - var len = 3; - var array = new Array(len); - - var at0 = '@0'; - var at2 = '@2'; - - var array_proto = []; - array_proto[0] = at0; - array_proto[2] = at2; - array.__proto__ = array_proto; - - // array owns nothing... - assertFalse(array.hasOwnProperty(0)); - assertFalse(array.hasOwnProperty(1)); - assertFalse(array.hasOwnProperty(2)); - - // ... but sees values from array_proto. - assertEquals(array[0], at0); - assertEquals(array[1], undefined); - assertEquals(array[2], at2); - - assertEquals(len, array.unshift()); - - // array still owns nothing. - assertFalse(array.hasOwnProperty(0)); - assertFalse(array.hasOwnProperty(1)); - assertFalse(array.hasOwnProperty(2)); - - // ... but still sees values from array_proto. - assertEquals(array[0], at0); - assertEquals(array[1], undefined); - assertEquals(array[2], at2); -})(); - - -// Now check the case with array of holes and some elements on prototype. -(function() { - var len = 9; - var array = new Array(len); - var array_proto = [] - array_proto[3] = "@3"; - array_proto[7] = "@7"; - array.__proto__ = array_proto; - - assertEquals(len, array.length); - for (var i = 0; i < array.length; i++) { - assertEquals(array[i], array_proto[i]); - } - - assertEquals(len + 1, array.unshift('head')); - - assertEquals(len + 1, array.length); - // Note that unshift copies values from prototype into the array. - assertEquals(array[4], array_proto[3]); - assertTrue(array.hasOwnProperty(4)); - - assertEquals(array[8], array_proto[7]); - assertTrue(array.hasOwnProperty(8)); - - // ... but keeps the rest as holes: - array_proto[5] = "@5"; - assertEquals(array[5], array_proto[5]); - assertFalse(array.hasOwnProperty(5)); - - assertEquals(array[3], array_proto[3]); - assertFalse(array.hasOwnProperty(3)); - - assertEquals(array[7], array_proto[7]); - assertFalse(array.hasOwnProperty(7)); -})(); - -// Check the behaviour when approaching maximal values for length. -(function() { - for (var i = 0; i < 7; i++) { - try { - let obj = { length: 2 ** 53 - 3}; - Array.prototype.unshift.call(obj, 1, 2, 3, 4, 5); - throw 'Should have thrown TypeError'; - } catch (e) { - assertTrue(e instanceof TypeError); - } - } -})(); - -(function() { - for (var i = 0; i < 7; i++) { - var a = [6, 7, 8, 9]; - a.unshift(1, 2, 3, 4, 5); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], a); - } -})(); - -// Check that non-enumerable elements are treated appropriately -(function() { - var array = [2, 3]; - Object.defineProperty(array, '1', {enumerable: false}); - array.unshift(1) - assertEquals([1, 2, 3], array); - - array = [2]; - array.length = 2; - array.__proto__[1] = 3; - Object.defineProperty(array.__proto__, '1', {enumerable: false}); - array.unshift(1); - assertEquals([1, 2, 3], array); -})(); diff --git a/implementation-contributed/v8/mjsunit/arrow-with.js b/implementation-contributed/v8/mjsunit/arrow-with.js deleted file mode 100644 index a1f97afa38b..00000000000 --- a/implementation-contributed/v8/mjsunit/arrow-with.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { with ({}) { return (()=>this)() } } -var o = {} -assertEquals(o, f.call(o)) diff --git a/implementation-contributed/v8/mjsunit/ascii-regexp-subject.js b/implementation-contributed/v8/mjsunit/ascii-regexp-subject.js deleted file mode 100644 index e0c2f841d35..00000000000 --- a/implementation-contributed/v8/mjsunit/ascii-regexp-subject.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * @fileoverview Check that an initial ^ will result in a faster match fail. - */ - - -var s = "foo"; -var i; - -for (i = 0; i < 18; i++) { - s = s + s; -} - -function repeatRegexp(re) { - for (i = 0; i < 1000; i++) { - re.test(s); - } -} - -repeatRegexp(/^bar/); -repeatRegexp(/^foo|^bar|^baz/); -repeatRegexp(/(^bar)/); -repeatRegexp(/(?=^bar)\w+/); diff --git a/implementation-contributed/v8/mjsunit/asm-directive.js b/implementation-contributed/v8/mjsunit/asm-directive.js deleted file mode 100644 index a308f43f6f6..00000000000 --- a/implementation-contributed/v8/mjsunit/asm-directive.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Realm.eval(Realm.current(), '"use asm"'); -function f() { "use asm" } -() => "use asm" -if (true) "use asm" -with ({}) "use asm" -try { } catch (e) { "use asm" } -Realm.eval(Realm.current(), 'eval(\'"use asm"\')'); diff --git a/implementation-contributed/v8/mjsunit/asm/asm-heap.js b/implementation-contributed/v8/mjsunit/asm/asm-heap.js deleted file mode 100644 index d0d190a73d2..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/asm-heap.js +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax --expose-gc --mock-arraybuffer-allocator - -let gCounter = 1000; -let gMinHeap = new ArrayBuffer(1 << 12); -let gStdlib = {Uint8Array: Uint8Array}; - -// The template of asm.js modules used in this test. -function Template(stdlib, ffi, heap) { - "use asm"; - var MEM8 = new stdlib.Uint8Array(heap); - function foo() { return VAL; } - return { foo: foo }; -} - -// Create a fresh module each time. -function NewModule() { - // Use eval() to get a unique module each time. - let val = gCounter++; - let string = (Template + "; Template").replace("VAL", "" + val); -// print(string); - let module = eval(string); -// print(module); - module(gStdlib, {}, gMinHeap); - assertTrue(%IsAsmWasmCode(module)); - return {module: module, val: val}; -} - -(function TestValid_PowerOfTwo() { - print("TestValid_PowerOfTwo..."); - let r = NewModule(); - for (let i = 12; i <= 24; i++) { - gc(); // Likely OOM otherwise. - let size = 1 << i; - print(" size=" + size); - let heap = new ArrayBuffer(size); - var instance = r.module(gStdlib, {}, heap); - assertTrue(%IsAsmWasmCode(r.module)); - assertEquals(r.val, instance.foo()); - } -})(); - -(function TestValid_Multiple() { - print("TestValid_Multiple..."); - let r = NewModule(); - for (let i = 1; i < 47; i += 7) { - gc(); // Likely OOM otherwise. - let size = i * (1 << 24); - print(" size=" + size); - let heap = new ArrayBuffer(size); - var instance = r.module(gStdlib, {}, heap); - assertTrue(%IsAsmWasmCode(r.module)); - assertEquals(r.val, instance.foo()); - } -})(); - -(function TestInvalid_TooSmall() { - print("TestInvalid_TooSmall..."); - for (let i = 1; i < 12; i++) { - let size = 1 << i; - print(" size=" + size); - let r = NewModule(); - let heap = new ArrayBuffer(size); - var instance = r.module(gStdlib, {}, heap); - assertFalse(%IsAsmWasmCode(r.module)); - assertEquals(r.val, instance.foo()); - } -})(); - -(function TestInValid_NonPowerOfTwo() { - print("TestInvalid_NonPowerOfTwo..."); - for (let i = 12; i <= 24; i++) { - gc(); // Likely OOM otherwise. - let size = 1 + (1 << i); - print(" size=" + size); - let r = NewModule(); - let heap = new ArrayBuffer(size); - var instance = r.module(gStdlib, {}, heap); - assertFalse(%IsAsmWasmCode(r.module)); - assertEquals(r.val, instance.foo()); - } -})(); - -(function TestInValid_NonMultiple() { - print("TestInvalid_NonMultiple..."); - for (let i = (1 << 24); i < (1 << 25); i += (1 << 22)) { - gc(); // Likely OOM otherwise. - let size = i + (1 << 20); - print(" size=" + size); - let r = NewModule(); - let heap = new ArrayBuffer(size); - var instance = r.module(gStdlib, {}, heap); - assertFalse(%IsAsmWasmCode(r.module)); - assertEquals(r.val, instance.foo()); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/asm-memory.js b/implementation-contributed/v8/mjsunit/asm/asm-memory.js deleted file mode 100644 index 6f9b2fe6397..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/asm-memory.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestUnalignedMemory() { - // Test that a buffer whose length is not a multiple of the element size of a - // heap view throws the proper {RangeError} during instantiation. - function Module(stdlib, foreign, heap) { - "use asm"; - var a = new stdlib.Int32Array(heap); - function f() {} - return { f:f }; - } - assertThrows(() => Module(this, {}, new ArrayBuffer(2)), RangeError); - assertThrows(() => Module(this, {}, new ArrayBuffer(10)), RangeError); - assertDoesNotThrow(() => Module(this, {}, new ArrayBuffer(4))); - assertDoesNotThrow(() => Module(this, {}, new ArrayBuffer(16))); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestMissingMemory() { - // Test that a buffer is required for instantiation of modules containing any - // heap views. JavaScript needs to create individual buffers for each view. - function Module(stdlib, foreign, heap) { - "use asm"; - var a = new stdlib.Int16Array(heap); - var b = new stdlib.Int32Array(heap); - function f() { - a[0] = 0x1234; - return b[0] | 0; - } - return { f:f }; - } - var m = Module(this, {}, undefined); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(0, m.f()); -})(); - -(function TestNonBufferMemory() { - // Test that a buffer has to be an instance of {ArrayBuffer} in order to be - // valid. JavaScript will also accept any other array-like object. - function Module(stdlib, foreign, heap) { - "use asm"; - var a = new stdlib.Int32Array(heap); - function f() { - return a[0] | 0; - } - return { f:f }; - } - var m = Module(this, {}, [ 23, 42 ]); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(23, m.f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/asm-stdlib.js b/implementation-contributed/v8/mjsunit/asm/asm-stdlib.js deleted file mode 100644 index 65d0b76ff7a..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/asm-stdlib.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function FailProxyAsStdlib() { - // Test that passing a proxy as "stdlib" will cause module instantiation to - // fail while still only triggering one observable property load. - function Module(stdlib, foreign, heap) { - "use asm"; - var a = stdlib.Math.PI; - function f() { return a } - return { f:f }; - } - var trap_was_called = 0; - var proxy = new Proxy(this, { get:function(target, property, receiver) { - trap_was_called++; - if (property == "Math") return { PI:23 }; - return Reflect.get(target, property, receiver); - }}); - var m = Module(proxy); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(1, trap_was_called); - assertEquals(23, m.f()); -})(); - -(function FailGetterInStdlib() { - // Test that accessors as part of "stdlib" will cause module instantiation to - // fail while still only triggering one observable property load. - function Module(stdlib, foreign, heap) { - "use asm"; - var a = new stdlib.Int8Array(heap); - function f() { return a[0] | 0 } - return { f:f }; - } - var trap_was_called = 0; - var observer = { get Int8Array() { - trap_was_called++; - return function() { return [ 23 ] }; - }}; - var m = Module(observer); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(1, trap_was_called); - assertEquals(23, m.f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/asm-validation.js b/implementation-contributed/v8/mjsunit/asm/asm-validation.js deleted file mode 100644 index ed5b748aad6..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/asm-validation.js +++ /dev/null @@ -1,499 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -// Note that this test file contains tests that explicitly check modules are -// valid asm.js and then break them with invalid instantiation arguments. If -// this script is run more than once (e.g. --stress-opt) then modules remain -// broken in the second run and assertions would fail. We prevent re-runs. -// Flags: --nostress-opt - -function assertValidAsm(func) { - assertTrue(%IsAsmWasmCode(func)); -} - -(function TestConst() { - function Module(s) { - "use asm"; - var fround = s.Math.fround; - // Global constants. These are treated just like numeric literals. - const fConst = fround(-3.0); - const dConst = -3.0; - const iConst = -3; - - // consts can be used to initialize other consts. - const fPrime = fConst; - - // The following methods verify that return statements with global constants - // do not need type annotations. - function f() { - return fPrime; - } - function d() { - return dConst; - } - function i() { - return iConst; - } - - // The following methods verify that locals initialized with global - // constants do not need type annotations. - function fVar() { - var v = fPrime; - return fround(v); - } - function iVar() { - var v = iConst; - return v|0; - } - function dVar() { - var v = dConst; - return +v; - } - - return { - f: f, d: d, i: i, - fVar: fVar, dVar: dVar, iVar: iVar, - }; - } - - function DisallowAssignToConstGlobal() { - const constant = 0; - function invalid(i) { - i = i|0; - constant = i; - return constant; - } - return invalid; - } - - var m = Module(this); - assertValidAsm(Module); - - assertEquals(-3, m.i()); - assertEquals(-3.0, m.d()); - assertEquals(Math.fround(-3.0), m.f()); - - assertEquals(-3, m.iVar()); - assertEquals(-3.0, m.dVar()); - assertEquals(Math.fround(-3.0), m.fVar()); - - var m = DisallowAssignToConstGlobal(); - assertFalse(%IsAsmWasmCode(DisallowAssignToConstGlobal)); -})(); - -(function TestModuleArgs() { - function Module1(stdlib) { - "use asm"; - function foo() { } - return { foo: foo }; - } - function Module2(stdlib, ffi) { - "use asm"; - function foo() { } - return { foo: foo }; - } - function Module3(stdlib, ffi, heap) { - "use asm"; - function foo() { } - return { foo: foo }; - } - var modules = [Module1, Module2, Module3]; - var heap = new ArrayBuffer(1024 * 1024); - for (var i = 0; i < modules.length; ++i) { - print('Module' + (i + 1)); - var module = modules[i]; - var m = module(); - assertValidAsm(module); - var m = module({}); - assertValidAsm(module); - var m = module({}, {}); - assertValidAsm(module); - var m = module({}, {}, heap); - assertValidAsm(module); - var m = module({}, {}, heap, {}); - assertValidAsm(module); - } -})(); - -(function TestBadModule() { - function Module(stdlib, ffi, heap) { - "use asm"; - function foo() { var y = 3; var x = 1 + y; return 123; } - return { foo: foo }; - } - var m = Module({}); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(123, m.foo()); -})(); - -(function TestBadArgTypes() { - function Module(a, b, c) { - "use asm"; - var NaN = a.NaN; - return {}; - } - var m = Module(1, 2, 3); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals({}, m); -})(); - -(function TestBadArgTypesMismatch() { - function Module(a, b, c) { - "use asm"; - var NaN = a.NaN; - return {}; - } - var m = Module(1, 2); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals({}, m); -})(); - -(function TestModuleNoStdlib() { - function Module() { - "use asm"; - function foo() { return 123; } - return { foo: foo }; - } - var m = Module({}); - assertValidAsm(Module); - assertEquals(123, m.foo()); -})(); - -(function TestModuleWith5() { - function Module(a, b, c, d, e) { - "use asm"; - function foo() { return 123; } - return { foo: foo }; - } - var heap = new ArrayBuffer(1024 * 1024); - var m = Module({}, {}, heap); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(123, m.foo()); -})(); - -(function TestModuleNoStdlibCall() { - function Module(stdlib, ffi, heap) { - "use asm"; - function foo() { return 123; } - return { foo: foo }; - } - var m = Module(); - assertValidAsm(Module); - assertEquals(123, m.foo()); -})(); - -(function TestModuleNew() { - function Module(stdlib, ffi, heap) { - "use asm"; - function foo() { return 123; } - return { foo: foo }; - } - var m = new Module({}, {}); - assertValidAsm(Module); - assertEquals(123, m.foo()); -})(); - -(function TestMultipleFailures() { - function Module(stdlib) { - "use asm"; - var NaN = stdlib.NaN; - function foo() { return 123; } - return { foo: foo }; - } - var m1 = Module(1, 2, 3); - assertFalse(%IsAsmWasmCode(Module)); - var m2 = Module(1, 2, 3); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(123, m1.foo()); - assertEquals(123, m2.foo()); -})(); - -(function TestFailureThenSuccess() { - function MkModule() { - function Module(stdlib, ffi, heap) { - "use asm"; - var NaN = stdlib.NaN; - function foo() { return 123; } - return { foo: foo }; - } - return Module; - } - var Module1 = MkModule(); - var Module2 = MkModule(); - var heap = new ArrayBuffer(1024 * 1024); - var m1 = Module1(1, 2, 3); - assertFalse(%IsAsmWasmCode(Module1)); - var m2 = Module2({}, {}, heap); - assertFalse(%IsAsmWasmCode(Module2)); - assertEquals(123, m1.foo()); - assertEquals(123, m2.foo()); -})(); - -(function TestSuccessThenFailure() { - function MkModule() { - function Module(stdlib, ffi, heap) { - "use asm"; - var NaN = stdlib.NaN; - function foo() { return 123; } - return { foo: foo }; - } - return Module; - } - var Module1 = MkModule(); - var Module2 = MkModule(); - var heap = new ArrayBuffer(1024 * 1024); - var m1 = Module1({NaN: NaN}, {}, heap); - assertValidAsm(Module1); - var m2 = Module2(1, 2, 3); - assertFalse(%IsAsmWasmCode(Module2)); - assertEquals(123, m1.foo()); - assertEquals(123, m2.foo()); -})(); - -(function TestSuccessThenFailureThenRetry() { - function MkModule() { - function Module(stdlib, ffi, heap) { - "use asm"; - var NaN = stdlib.NaN; - function foo() { return 123; } - return { foo: foo }; - } - return Module; - } - var Module1 = MkModule(); - var Module2 = MkModule(); - var heap = new ArrayBuffer(1024 * 1024); - var m1a = Module1({NaN: NaN}, {}, heap); - assertValidAsm(Module1); - var m2 = Module2(1, 2, 3); - assertFalse(%IsAsmWasmCode(Module2)); - var m1b = Module1({NaN: NaN}, {}, heap); - assertFalse(%IsAsmWasmCode(Module1)); - assertEquals(123, m1a.foo()); - assertEquals(123, m1b.foo()); - assertEquals(123, m2.foo()); -})(); - -(function TestBoundFunction() { - function Module(stdlib, ffi, heap) { - "use asm"; - function foo() { return 123; } - return { foo: foo }; - } - var heap = new ArrayBuffer(1024 * 1024); - var ModuleBound = Module.bind(this, {}, {}, heap); - var m = ModuleBound(); - assertValidAsm(Module); - assertEquals(123, m.foo()); -})(); - -(function TestBadConstUnsignedReturn() { - function Module() { - "use asm"; - const i = 0xffffffff; - function foo() { return i; } - return { foo: foo }; - } - var m = Module(); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(0xffffffff, m.foo()); -})(); - -(function TestBadBooleanParamAnnotation() { - function Module() { - "use asm"; - function foo(x) { - x = x | true; - return x; - } - return { foo: foo }; - } - var m = Module(); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(3, m.foo(3)); -})(); - -(function TestBadExportTwice() { - function Module() { - "use asm"; - function bar() { return 1; } - function baz() { return 2; } - return {foo: bar, foo: baz}; - } - var m = Module(); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(2, m.foo()); -})(); - -(function TestBadImport() { - function Module(stdlib) { - "use asm"; - var set = 0; - var foo = stdlib[set]; - return {}; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestBadFroundTrue() { - function Module(stdlib) { - "use asm"; - var fround = stdlib.Math.fround; - function foo() { - var x = fround(true); - return +x; - } - return { foo: foo }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(1, m.foo()); -})(); - -(function TestBadCase() { - function Module() { - "use asm"; - function foo(x) { - x = x | 0; - switch (x|0) { - case true: - return 42; - default: - return 43; - } - return 0; - } - return { foo: foo }; - } - var m = Module(); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(43, m.foo(3)); -})(); - -(function TestVarHidesExport() { - function Module() { - "use asm"; - var foo; - function foo() {} - return foo; - } - Module(); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestUndefinedGlobalCall() { - function Module() { - "use asm"; - function foo() { - return bar() | 0; - } - return foo; - } - Module(); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestConditionalReturn() { - function Module() { - 'use asm'; - function foo(a, b) { - a = +a; - b = +b; - // Allowed, despite not matching the spec, as emscripten emits this in - // practice. - return a == b ? +a : +b; - } - return foo; - } - var m = Module(); - assertEquals(4, m(4, 4)); - assertEquals(5, m(4, 5)); - assertEquals(4, m(5, 4)); - assertValidAsm(Module); -})(); - -(function TestMismatchedConditionalReturn() { - function Module() { - 'use asm'; - function foo(a, b) { - a = +a; - return a == 0.0 ? 0 : +a; - } - return foo; - } - Module(); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestBadIntConditionalReturn() { - function Module() { - 'use asm'; - function foo(a, b) { - a = a | 0; - b = b | 0; - // Disallowed because signature must be signed, but these will be int. - return 1 ? a : b; - } - return foo; - } - Module(); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestBadSignedConditionalReturn() { - function Module() { - 'use asm'; - function foo(a, b) { - a = a | 0; - b = b | 0; - // Disallowed because conditional yields int, even when both sides - // are signed. - return 1 ? a | 0 : b | 0; - } - return foo; - } - Module(); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestAsmIsRegular() { - function Module() { - 'use asm'; - var g = 123; - function foo() { - return g | 0; - } - return {x: foo}; - } - var o = Module(); - assertValidAsm(Module); - assertFalse(o instanceof WebAssembly.Instance); - assertTrue(o instanceof Object); - assertTrue(o.__proto__ === Object.prototype); - var p = Object.getOwnPropertyDescriptor(o, "x") - assertTrue(p.writable); - assertTrue(p.enumerable); - assertTrue(p.configurable); - assertTrue(typeof o.x === 'function'); - o.x = 5; - assertTrue(typeof o.x === 'number'); - assertTrue(o.__single_function__ === undefined); - assertTrue(o.__foreign_init__ === undefined); -})(); - -(function TestAsmExportOrderPreserved() { - function Module() { - "use asm"; - function f() {} - function g() {} - return { a:f, b:g, x:f, c:g, d:f }; - } - var m = Module(); - assertValidAsm(Module); - var props = Object.getOwnPropertyNames(m); - assertEquals(["a","b","x","c","d"], props); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/atomics-add.js b/implementation-contributed/v8/mjsunit/asm/atomics-add.js deleted file mode 100644 index abb7c980308..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/atomics-add.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer - -function Module(stdlib, foreign, heap, offset) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap, offset); - var MEM16 = new stdlib.Int16Array(heap, offset); - var MEM32 = new stdlib.Int32Array(heap, offset); - var MEMU8 = new stdlib.Uint8Array(heap, offset); - var MEMU16 = new stdlib.Uint16Array(heap, offset); - var MEMU32 = new stdlib.Uint32Array(heap, offset); - var add = stdlib.Atomics.add; - var fround = stdlib.Math.fround; - - function addi8(i, x) { - i = i | 0; - x = x | 0; - return add(MEM8, i, x)|0; - } - - function addi16(i, x) { - i = i | 0; - x = x | 0; - return add(MEM16, i, x)|0; - } - - function addi32(i, x) { - i = i | 0; - x = x | 0; - return add(MEM32, i, x)|0; - } - - function addu8(i, x) { - i = i | 0; - x = x >>> 0; - return add(MEMU8, i, x)>>>0; - } - - function addu16(i, x) { - i = i | 0; - x = x >>> 0; - return add(MEMU16, i, x)>>>0; - } - - function addu32(i, x) { - i = i | 0; - x = x >>> 0; - return add(MEMU32, i, x)>>>0; - } - - return { - addi8: addi8, - addi16: addi16, - addi32: addi32, - addu8: addu8, - addu16: addu16, - addu32: addu32, - }; -} - -function clearArray() { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -function testElementType(taConstr, f, offset) { - clearArray(); - - var ta = new taConstr(sab, offset); - var name = Object.prototype.toString.call(ta); - assertEquals(0, f(0, 10), name); - assertEquals(10, ta[0]); - assertEquals(10, f(0, 10), name); - assertEquals(20, ta[0]); - // out of bounds - assertThrows(function() { f(-1, 0); }); - assertThrows(function() { f(ta.length, 0); }); -} - -function testElement(m, offset) { - testElementType(Int8Array, m.addi8, offset); - testElementType(Int16Array, m.addi16, offset); - testElementType(Int32Array, m.addi32, offset); - testElementType(Uint8Array, m.addu8, offset); - testElementType(Uint16Array, m.addu16, offset); - testElementType(Uint32Array, m.addu32, offset); -} - -var offset = 0; -var sab = new SharedArrayBuffer(16); -var m1 = Module(this, {}, sab, offset); -testElement(m1, offset); - -offset = 32; -sab = new SharedArrayBuffer(64); -var m2 = Module(this, {}, sab, offset); -testElement(m2, offset); diff --git a/implementation-contributed/v8/mjsunit/asm/atomics-and.js b/implementation-contributed/v8/mjsunit/asm/atomics-and.js deleted file mode 100644 index da770bfa88e..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/atomics-and.js +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer - -function Module(stdlib, foreign, heap, offset) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap, offset); - var MEM16 = new stdlib.Int16Array(heap, offset); - var MEM32 = new stdlib.Int32Array(heap, offset); - var MEMU8 = new stdlib.Uint8Array(heap, offset); - var MEMU16 = new stdlib.Uint16Array(heap, offset); - var MEMU32 = new stdlib.Uint32Array(heap, offset); - var and = stdlib.Atomics.and; - var fround = stdlib.Math.fround; - - function andi8(i, x) { - i = i | 0; - x = x | 0; - return and(MEM8, i, x)|0; - } - - function andi16(i, x) { - i = i | 0; - x = x | 0; - return and(MEM16, i, x)|0; - } - - function andi32(i, x) { - i = i | 0; - x = x | 0; - return and(MEM32, i, x)|0; - } - - function andu8(i, x) { - i = i | 0; - x = x >>> 0; - return and(MEMU8, i, x)>>>0; - } - - function andu16(i, x) { - i = i | 0; - x = x >>> 0; - return and(MEMU16, i, x)>>>0; - } - - function andu32(i, x) { - i = i | 0; - x = x >>> 0; - return and(MEMU32, i, x)>>>0; - } - - return { - andi8: andi8, - andi16: andi16, - andi32: andi32, - andu8: andu8, - andu16: andu16, - andu32: andu32, - }; -} - -function clearArray() { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -function testElementType(taConstr, f, offset) { - clearArray(); - - var ta = new taConstr(sab, offset); - var name = Object.prototype.toString.call(ta); - ta[0] = 0x7f; - assertEquals(0x7f, f(0, 0xf), name); - assertEquals(0xf, ta[0]); - assertEquals(0xf, f(0, 0x19), name); - assertEquals(0x9, ta[0]); - // out of bounds - assertThrows(function() { f(-1, 0); }); - assertThrows(function() { f(ta.length, 0); }); -} - -function testElement(m, offset) { - testElementType(Int8Array, m.andi8, offset); - testElementType(Int16Array, m.andi16, offset); - testElementType(Int32Array, m.andi32, offset); - testElementType(Uint8Array, m.andu8, offset); - testElementType(Uint16Array, m.andu16, offset); - testElementType(Uint32Array, m.andu32, offset); -} - -var offset = 0; -var sab = new SharedArrayBuffer(16); -var m1 = Module(this, {}, sab, offset); -testElement(m1, offset); - -offset = 32; -sab = new SharedArrayBuffer(64); -var m2 = Module(this, {}, sab, offset); -testElement(m2, offset); diff --git a/implementation-contributed/v8/mjsunit/asm/atomics-compareexchange.js b/implementation-contributed/v8/mjsunit/asm/atomics-compareexchange.js deleted file mode 100644 index dd93395569c..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/atomics-compareexchange.js +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer - -function Module(stdlib, foreign, heap, offset) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap, offset); - var MEM16 = new stdlib.Int16Array(heap, offset); - var MEM32 = new stdlib.Int32Array(heap, offset); - var MEMU8 = new stdlib.Uint8Array(heap, offset); - var MEMU16 = new stdlib.Uint16Array(heap, offset); - var MEMU32 = new stdlib.Uint32Array(heap, offset); - var compareExchange = stdlib.Atomics.compareExchange; - var fround = stdlib.Math.fround; - - function compareExchangei8(i, o, n) { - i = i | 0; - o = o | 0; - n = n | 0; - return compareExchange(MEM8, i, o, n)|0; - } - - function compareExchangei16(i, o, n) { - i = i | 0; - o = o | 0; - n = n | 0; - return compareExchange(MEM16, i, o, n)|0; - } - - function compareExchangei32(i, o, n) { - i = i | 0; - o = o | 0; - n = n | 0; - return compareExchange(MEM32, i, o, n)|0; - } - - function compareExchangeu8(i, o, n) { - i = i | 0; - o = o >>> 0; - n = n >>> 0; - return compareExchange(MEMU8, i, o, n)>>>0; - } - - function compareExchangeu16(i, o, n) { - i = i | 0; - o = o >>> 0; - n = n >>> 0; - return compareExchange(MEMU16, i, o, n)>>>0; - } - - function compareExchangeu32(i, o, n) { - i = i | 0; - o = o >>> 0; - n = n >>> 0; - return compareExchange(MEMU32, i, o, n)>>>0; - } - - return { - compareExchangei8: compareExchangei8, - compareExchangei16: compareExchangei16, - compareExchangei32: compareExchangei32, - compareExchangeu8: compareExchangeu8, - compareExchangeu16: compareExchangeu16, - compareExchangeu32: compareExchangeu32, - }; -} - -function clearArray() { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -function testElementType(taConstr, f, oobValue, offset) { - clearArray(); - - var ta = new taConstr(sab, offset); - var name = Object.prototype.toString.call(ta); - assertEquals(0, ta[0]); - assertEquals(0, f(0, 0, 50), name); - assertEquals(50, ta[0]); - // Value is not equal to 0, so compareExchange won't store 100 - assertEquals(50, f(0, 0, 100), name); - assertEquals(50, ta[0]); - // out of bounds - assertThrows(function() { f(-1, 0, 0); }); - assertThrows(function() { f(ta.length, 0, 0); }); -} - -function testElement(m, offset) { - testElementType(Int8Array, m.compareExchangei8, 0, offset); - testElementType(Int16Array, m.compareExchangei16, 0, offset); - testElementType(Int32Array, m.compareExchangei32, 0, offset); - testElementType(Uint8Array, m.compareExchangeu8, 0, offset); - testElementType(Uint16Array, m.compareExchangeu16, 0, offset); - testElementType(Uint32Array, m.compareExchangeu32, 0, offset); -} - -var offset = 0; -var sab = new SharedArrayBuffer(16); -var m1 = Module(this, {}, sab, offset); -testElement(m1, offset); - -offset = 32; -sab = new SharedArrayBuffer(64); -var m2 = Module(this, {}, sab, offset); -testElement(m2, offset); diff --git a/implementation-contributed/v8/mjsunit/asm/atomics-exchange.js b/implementation-contributed/v8/mjsunit/asm/atomics-exchange.js deleted file mode 100644 index ea9c24693c8..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/atomics-exchange.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer - -function Module(stdlib, foreign, heap, offset) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap, offset); - var MEM16 = new stdlib.Int16Array(heap, offset); - var MEM32 = new stdlib.Int32Array(heap, offset); - var MEMU8 = new stdlib.Uint8Array(heap, offset); - var MEMU16 = new stdlib.Uint16Array(heap, offset); - var MEMU32 = new stdlib.Uint32Array(heap, offset); - var exchange = stdlib.Atomics.exchange; - var fround = stdlib.Math.fround; - - function exchangei8(i, x) { - i = i | 0; - x = x | 0; - return exchange(MEM8, i, x)|0; - } - - function exchangei16(i, x) { - i = i | 0; - x = x | 0; - return exchange(MEM16, i, x)|0; - } - - function exchangei32(i, x) { - i = i | 0; - x = x | 0; - return exchange(MEM32, i, x)|0; - } - - function exchangeu8(i, x) { - i = i | 0; - x = x >>> 0; - return exchange(MEMU8, i, x)>>>0; - } - - function exchangeu16(i, x) { - i = i | 0; - x = x >>> 0; - return exchange(MEMU16, i, x)>>>0; - } - - function exchangeu32(i, x) { - i = i | 0; - x = x >>> 0; - return exchange(MEMU32, i, x)>>>0; - } - - return { - exchangei8: exchangei8, - exchangei16: exchangei16, - exchangei32: exchangei32, - exchangeu8: exchangeu8, - exchangeu16: exchangeu16, - exchangeu32: exchangeu32, - }; -} - -var sab = new SharedArrayBuffer(16); -var m = Module(this, {}, sab); - -function clearArray() { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -function testElementType(taConstr, f, offset) { - clearArray(); - - var ta = new taConstr(sab, offset); - var name = Object.prototype.toString.call(ta); - ta[0] = 0x7f; - assertEquals(0x7f, f(0, 0xf), name); - assertEquals(0xf, ta[0]); - // out of bounds - assertThrows(function() { f(-1, 0); }); - assertThrows(function() { f(ta.length, 0); }); -} - -function testElement(m, offset) { - testElementType(Int8Array, m.exchangei8, offset); - testElementType(Int16Array, m.exchangei16, offset); - testElementType(Int32Array, m.exchangei32, offset); - testElementType(Uint8Array, m.exchangeu8, offset); - testElementType(Uint16Array, m.exchangeu16, offset); - testElementType(Uint32Array, m.exchangeu32, offset); -} - -var offset = 0; -var sab = new SharedArrayBuffer(16); -var m1 = Module(this, {}, sab, offset); -testElement(m1, offset); - -offset = 32; -sab = new SharedArrayBuffer(64); -var m2 = Module(this, {}, sab, offset); -testElement(m2, offset); diff --git a/implementation-contributed/v8/mjsunit/asm/atomics-load.js b/implementation-contributed/v8/mjsunit/asm/atomics-load.js deleted file mode 100644 index 9a61a237bea..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/atomics-load.js +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer - -function Module(stdlib, foreign, heap, offset) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap, offset); - var MEM16 = new stdlib.Int16Array(heap, offset); - var MEM32 = new stdlib.Int32Array(heap, offset); - var MEMU8 = new stdlib.Uint8Array(heap, offset); - var MEMU16 = new stdlib.Uint16Array(heap, offset); - var MEMU32 = new stdlib.Uint32Array(heap, offset); - var load = stdlib.Atomics.load; - var fround = stdlib.Math.fround; - - function loadi8(i) { - i = i | 0; - return load(MEM8, i)|0; - } - - function loadi16(i) { - i = i | 0; - return load(MEM16, i)|0; - } - - function loadi32(i) { - i = i | 0; - return load(MEM32, i)|0; - } - - function loadu8(i) { - i = i | 0; - return load(MEMU8, i)>>>0; - } - - function loadu16(i) { - i = i | 0; - return load(MEMU16, i)>>>0; - } - - function loadu32(i) { - i = i | 0; - return load(MEMU32, i)>>>0; - } - - return { - loadi8: loadi8, - loadi16: loadi16, - loadi32: loadi32, - loadu8: loadu8, - loadu16: loadu16, - loadu32: loadu32, - }; -} - -function clearArray() { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -function testElementType(taConstr, f, offset) { - clearArray(); - - var ta = new taConstr(sab, offset); - var name = Object.prototype.toString.call(ta); - ta[0] = 10; - assertEquals(10, f(0), name); - assertEquals(0, f(1), name); - // out of bounds - assertThrows(function() { f(-1); }); - assertThrows(function() { f(ta.length); }); -} - -function testElement(m, offset) { - testElementType(Int8Array, m.loadi8, offset); - testElementType(Int16Array, m.loadi16, offset); - testElementType(Int32Array, m.loadi32, offset); - testElementType(Uint8Array, m.loadu8, offset); - testElementType(Uint16Array, m.loadu16, offset); - testElementType(Uint32Array, m.loadu32, offset); -} - -var offset = 0; -var sab = new SharedArrayBuffer(16); -var m1 = Module(this, {}, sab, offset); -testElement(m1, offset); - -offset = 32; -sab = new SharedArrayBuffer(64); -var m2 = Module(this, {}, sab, offset); -testElement(m2, offset); diff --git a/implementation-contributed/v8/mjsunit/asm/atomics-or.js b/implementation-contributed/v8/mjsunit/asm/atomics-or.js deleted file mode 100644 index 351ce9d1120..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/atomics-or.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer - -function Module(stdlib, foreign, heap, offset) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap, offset); - var MEM16 = new stdlib.Int16Array(heap, offset); - var MEM32 = new stdlib.Int32Array(heap, offset); - var MEMU8 = new stdlib.Uint8Array(heap, offset); - var MEMU16 = new stdlib.Uint16Array(heap, offset); - var MEMU32 = new stdlib.Uint32Array(heap, offset); - var or = stdlib.Atomics.or; - var fround = stdlib.Math.fround; - - function ori8(i, x) { - i = i | 0; - x = x | 0; - return or(MEM8, i, x)|0; - } - - function ori16(i, x) { - i = i | 0; - x = x | 0; - return or(MEM16, i, x)|0; - } - - function ori32(i, x) { - i = i | 0; - x = x | 0; - return or(MEM32, i, x)|0; - } - - function oru8(i, x) { - i = i | 0; - x = x >>> 0; - return or(MEMU8, i, x)>>>0; - } - - function oru16(i, x) { - i = i | 0; - x = x >>> 0; - return or(MEMU16, i, x)>>>0; - } - - function oru32(i, x) { - i = i | 0; - x = x >>> 0; - return or(MEMU32, i, x)>>>0; - } - - return { - ori8: ori8, - ori16: ori16, - ori32: ori32, - oru8: oru8, - oru16: oru16, - oru32: oru32, - }; -} - -var sab = new SharedArrayBuffer(16); -var m = Module(this, {}, sab); - -function clearArray() { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -function testElementType(taConstr, f, offset) { - clearArray(); - - var ta = new taConstr(sab, offset); - var name = Object.prototype.toString.call(ta); - assertEquals(0, f(0, 0xf), name); - assertEquals(0xf, ta[0]); - assertEquals(0xf, f(0, 0x11), name); - assertEquals(0x1f, ta[0]); - // out of bounds - assertThrows(function() { f(-1, 0); }); - assertThrows(function() { f(ta.length, 0); }); -} - -function testElement(m, offset) { - testElementType(Int8Array, m.ori8, offset); - testElementType(Int16Array, m.ori16, offset); - testElementType(Int32Array, m.ori32, offset); - testElementType(Uint8Array, m.oru8, offset); - testElementType(Uint16Array, m.oru16, offset); - testElementType(Uint32Array, m.oru32, offset); -} - -var offset = 0; -var sab = new SharedArrayBuffer(16); -var m1 = Module(this, {}, sab, offset); -testElement(m1, offset); - -offset = 32; -sab = new SharedArrayBuffer(64); -var m2 = Module(this, {}, sab, offset); -testElement(m2, offset); diff --git a/implementation-contributed/v8/mjsunit/asm/atomics-store.js b/implementation-contributed/v8/mjsunit/asm/atomics-store.js deleted file mode 100644 index 8b9e4c637f0..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/atomics-store.js +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer - -function Module(stdlib, foreign, heap, offset) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap, offset); - var MEM16 = new stdlib.Int16Array(heap, offset); - var MEM32 = new stdlib.Int32Array(heap, offset); - var MEMU8 = new stdlib.Uint8Array(heap, offset); - var MEMU16 = new stdlib.Uint16Array(heap, offset); - var MEMU32 = new stdlib.Uint32Array(heap, offset); - var store = stdlib.Atomics.store; - var fround = stdlib.Math.fround; - - function storei8(i, x) { - i = i | 0; - x = x | 0; - return store(MEM8, i, x)|0; - } - - function storei16(i, x) { - i = i | 0; - x = x | 0; - return store(MEM16, i, x)|0; - } - - function storei32(i, x) { - i = i | 0; - x = x | 0; - return store(MEM32, i, x)|0; - } - - function storeu8(i, x) { - i = i | 0; - x = x >>> 0; - return store(MEMU8, i, x)>>>0; - } - - function storeu16(i, x) { - i = i | 0; - x = x >>> 0; - return store(MEMU16, i, x)>>>0; - } - - function storeu32(i, x) { - i = i | 0; - x = x >>> 0; - return store(MEMU32, i, x)>>>0; - } - - return { - storei8: storei8, - storei16: storei16, - storei32: storei32, - storeu8: storeu8, - storeu16: storeu16, - storeu32: storeu32, - }; -} - -function clearArray() { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -function testElementType(taConstr, f, offset) { - clearArray(); - - var ta = new taConstr(sab, offset); - var name = Object.prototype.toString.call(ta); - assertEquals(10, f(0, 10), name); - assertEquals(10, ta[0]); - // out of bounds - assertThrows(function() { f(-1, 0); }); - assertThrows(function() { f(ta.length, 0); }); -} - -function testElement(m, offset) { - testElementType(Int8Array, m.storei8, offset); - testElementType(Int16Array, m.storei16, offset); - testElementType(Int32Array, m.storei32, offset); - testElementType(Uint8Array, m.storeu8, offset); - testElementType(Uint16Array, m.storeu16, offset); - testElementType(Uint32Array, m.storeu32, offset); -} - -var offset = 0; -var sab = new SharedArrayBuffer(16); -var m1 = Module(this, {}, sab, offset); -testElement(m1, offset); - -offset = 32; -sab = new SharedArrayBuffer(64); -var m2 = Module(this, {}, sab, offset); -testElement(m2, offset); diff --git a/implementation-contributed/v8/mjsunit/asm/atomics-sub.js b/implementation-contributed/v8/mjsunit/asm/atomics-sub.js deleted file mode 100644 index 6789aeda600..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/atomics-sub.js +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer - -function Module(stdlib, foreign, heap, offset) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap, offset); - var MEM16 = new stdlib.Int16Array(heap, offset); - var MEM32 = new stdlib.Int32Array(heap, offset); - var MEMU8 = new stdlib.Uint8Array(heap, offset); - var MEMU16 = new stdlib.Uint16Array(heap, offset); - var MEMU32 = new stdlib.Uint32Array(heap, offset); - var sub = stdlib.Atomics.sub; - var fround = stdlib.Math.fround; - - function subi8(i, x) { - i = i | 0; - x = x | 0; - return sub(MEM8, i, x)|0; - } - - function subi16(i, x) { - i = i | 0; - x = x | 0; - return sub(MEM16, i, x)|0; - } - - function subi32(i, x) { - i = i | 0; - x = x | 0; - return sub(MEM32, i, x)|0; - } - - function subu8(i, x) { - i = i | 0; - x = x >>> 0; - return sub(MEMU8, i, x)>>>0; - } - - function subu16(i, x) { - i = i | 0; - x = x >>> 0; - return sub(MEMU16, i, x)>>>0; - } - - function subu32(i, x) { - i = i | 0; - x = x >>> 0; - return sub(MEMU32, i, x)>>>0; - } - - return { - subi8: subi8, - subi16: subi16, - subi32: subi32, - subu8: subu8, - subu16: subu16, - subu32: subu32, - }; -} - -function clearArray() { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -function testElementType(taConstr, f, offset) { - clearArray(); - - var ta = new taConstr(sab, offset); - var name = Object.prototype.toString.call(ta); - ta[0] = 30; - assertEquals(30, f(0, 10), name); - assertEquals(20, ta[0]); - assertEquals(20, f(0, 10), name); - assertEquals(10, ta[0]); - // out of bounds - assertThrows(function() { f(-1, 0); }); - assertThrows(function() { f(ta.length, 0); }); -} - -function testElement(m, offset) { - testElementType(Int8Array, m.subi8, offset); - testElementType(Int16Array, m.subi16, offset); - testElementType(Int32Array, m.subi32, offset); - testElementType(Uint8Array, m.subu8, offset); - testElementType(Uint16Array, m.subu16, offset); - testElementType(Uint32Array, m.subu32, offset); -} - -var offset = 0; -var sab = new SharedArrayBuffer(16); -var m1 = Module(this, {}, sab, offset); -testElement(m1, offset); - -offset = 32; -sab = new SharedArrayBuffer(64); -var m2 = Module(this, {}, sab, offset); -testElement(m2, offset); diff --git a/implementation-contributed/v8/mjsunit/asm/atomics-xor.js b/implementation-contributed/v8/mjsunit/asm/atomics-xor.js deleted file mode 100644 index 13c64407299..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/atomics-xor.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer - -function Module(stdlib, foreign, heap, offset) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap, offset); - var MEM16 = new stdlib.Int16Array(heap, offset); - var MEM32 = new stdlib.Int32Array(heap, offset); - var MEMU8 = new stdlib.Uint8Array(heap, offset); - var MEMU16 = new stdlib.Uint16Array(heap, offset); - var MEMU32 = new stdlib.Uint32Array(heap, offset); - var xor = stdlib.Atomics.xor; - var fround = stdlib.Math.fround; - - function xori8(i, x) { - i = i | 0; - x = x | 0; - return xor(MEM8, i, x)|0; - } - - function xori16(i, x) { - i = i | 0; - x = x | 0; - return xor(MEM16, i, x)|0; - } - - function xori32(i, x) { - i = i | 0; - x = x | 0; - return xor(MEM32, i, x)|0; - } - - function xoru8(i, x) { - i = i | 0; - x = x >>> 0; - return xor(MEMU8, i, x)>>>0; - } - - function xoru16(i, x) { - i = i | 0; - x = x >>> 0; - return xor(MEMU16, i, x)>>>0; - } - - function xoru32(i, x) { - i = i | 0; - x = x >>> 0; - return xor(MEMU32, i, x)>>>0; - } - - return { - xori8: xori8, - xori16: xori16, - xori32: xori32, - xoru8: xoru8, - xoru16: xoru16, - xoru32: xoru32, - }; -} - -function clearArray() { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -function testElementType(taConstr, f, offset) { - clearArray(); - - var ta = new taConstr(sab, offset); - var name = Object.prototype.toString.call(ta); - assertEquals(0, f(0, 0xf), name); - assertEquals(0xf, ta[0]); - assertEquals(0xf, f(0, 0x11), name); - assertEquals(0x1e, ta[0]); - // out of bounds - assertThrows(function() { f(-1, 0); }); - assertThrows(function() { f(ta.length, 0); }); -} - -function testElement(m, offset) { - testElementType(Int8Array, m.xori8, offset); - testElementType(Int16Array, m.xori16, offset); - testElementType(Int32Array, m.xori32, offset); - testElementType(Uint8Array, m.xoru8, offset); - testElementType(Uint16Array, m.xoru16, offset); - testElementType(Uint32Array, m.xoru32, offset); -} - -var offset = 0; -var sab = new SharedArrayBuffer(16); -var m1 = Module(this, {}, sab, offset); -testElement(m1, offset); - -offset = 32; -sab = new SharedArrayBuffer(64); -var m2 = Module(this, {}, sab, offset); -testElement(m2, offset); diff --git a/implementation-contributed/v8/mjsunit/asm/b5528-comma.js b/implementation-contributed/v8/mjsunit/asm/b5528-comma.js deleted file mode 100644 index a6eab6d2eaf..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/b5528-comma.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, env, heap) { - "use asm"; - - var a = new stdlib.Int32Array(heap); - var b = new stdlib.Float32Array(heap); - var fround = stdlib.Math.fround; - var value = env.value|0; - - function foo() { - var x = fround(0.0); - x = (a[0]=value|0,fround(b[0])); - return fround(x); - } - - return { foo: foo }; -} - -var buffer = new ArrayBuffer(32); -assertEquals(0.0, Module(this, {value: 0x00000000}, buffer).foo()); -assertEquals(-0.0, Module(this, {value: 0x80000000}, buffer).foo()); -assertEquals(5.0, Module(this, {value: 0x40a00000}, buffer).foo()); -assertEquals(-5.0, Module(this, {value: 0xc0a00000}, buffer).foo()); -assertEquals(129.375, Module(this, {value: 0x43016000}, buffer).foo()); -assertEquals(-129.375, Module(this, {value: 0xc3016000}, buffer).foo()); -assertEquals(Infinity, Module(this, {value: 0x7f800000}, buffer).foo()); -assertEquals(-Infinity, Module(this, {value: 0xff800000}, buffer).foo()); -assertEquals(NaN, Module(this, {value: 0x7fffffff}, buffer).foo()); diff --git a/implementation-contributed/v8/mjsunit/asm/call-annotation.js b/implementation-contributed/v8/mjsunit/asm/call-annotation.js deleted file mode 100644 index e2260441e0e..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/call-annotation.js +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --validate-asm - -// This file contains test cases that are particularly interesting for a single -// pass asm.js parsing and validation implementation in regards to the return -// type annotation via the "|0" operation. - -var g_was_called = 0; -function g() { - g_was_called++; - return "23.4"; -} - -(function SuccessExternCoercion() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - function f(a) { - a = a | 0; - a = a + (g() | 0) | 0; - return a | 0; - } - return { f:f }; - } - g_was_called = 0; - var m = Module(this, { g:g }); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(24, m.f(1)); - assertEquals(1, g_was_called); -})(); - -(function FailPrecedenceLeftStronger() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - function f(a) { - a = a | 0; - a = a + g() | 0; - return a | 0; - } - return { f:f }; - } - g_was_called = 0; - var m = Module(this, { g:g }); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(123, m.f(1)); - assertEquals(1, g_was_called); -})(); - -(function FailPrecedenceRightStronger() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - function f(a) { - a = a | 0; - a = (g() | 0 + a) | 0; - return a | 0; - } - return { f:f }; - } - g_was_called = 0; - var m = Module(this, { g:g }); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(127, m.f(127)); - assertEquals(1, g_was_called); -})(); - -(function FailParenthesizedAnnotation() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - function f(a) { - a = a | 0; - a = (g()) | 0; - return a | 0; - } - return { f:f }; - } - g_was_called = 0; - var m = Module(this, { g:g }); - // TODO(6127): Only properly rejected by "new" parser. - // assertFalse(%IsAsmWasmCode(Module)); - assertEquals(23, m.f(1)); - assertEquals(1, g_was_called); -})(); - -(function FailNonZeroAnnotation() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - function f(a) { - a = a | 0; - a = g() | 127; - return a | 0; - } - return { f:f }; - } - g_was_called = 0; - var m = Module(this, { g:g }); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(127, m.f(1)); - assertEquals(1, g_was_called); -})(); - -(function FailNestedAnnotation1() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - function f(a) { - a = a | 0; - a = g() | g() | 0; - return a | 0; - } - return { f:f }; - } - g_was_called = 0; - var m = Module(this, { g:g }); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(23, m.f(1)); - assertEquals(2, g_was_called); -})(); - -(function FailNestedAnnotation2() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - function f(a) { - a = a | 0; - a = g() | 0 | g() | 0; - return a | 0; - } - return { f:f }; - } - g_was_called = 0; - var m = Module(this, { g:g }); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(23, m.f(1)); - assertEquals(2, g_was_called); -})(); - -(function SuccessMixedWithDoubleAnnotation() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - function f(a) { - a = +a; - a = a + +(g() | 0); - return +a; - } - return { f:f }; - } - g_was_called = 0; - var m = Module(this, { g:g }); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(23.5, m.f(0.5)); - assertEquals(1, g_was_called); -})(); - -(function SuccessMixedWithFloatAnnotation() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - var fround = stdlib.Math.fround; - function f(a) { - a = fround(a); - a = fround(a + fround(g() | 0)); - return fround(a); - } - return { f:f }; - } - g_was_called = 0; - var m = Module(this, { g:g }); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(23.5, m.f(0.5)); - assertEquals(1, g_was_called); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/call-collisions.js b/implementation-contributed/v8/mjsunit/asm/call-collisions.js deleted file mode 100644 index 187cb143c0a..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/call-collisions.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function CallCollisionFirstTableThenFunction() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - g[a & 0](); - g(); - } - function g() {} - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertThrows(() => m.f(), TypeError); -})(); - -(function CallCollisionFirstFunctionThenTable() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - g(); - g[a & 0](); - } - function g() {} - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertThrows(() => m.f(), TypeError); -})(); - -(function CallCollisionFunctionAsTable() { - function Module(stdlib, imports, heap) { - "use asm"; - function g() {} - function f(a) { - a = a | 0; - g[a & 0](); - } - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertThrows(() => m.f(), TypeError); -})(); - -(function CallCollisionImportAsTable() { - function Module(stdlib, imports, heap) { - "use asm"; - var g = imports.g; - function f(a) { - a = a | 0; - g[a & 0](); - } - return { f:f }; - } - var m = Module(this, { g:Object }); - assertFalse(%IsAsmWasmCode(Module)); - assertThrows(() => m.f(), TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/call-stdlib.js b/implementation-contributed/v8/mjsunit/asm/call-stdlib.js deleted file mode 100644 index 5d883f324a4..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/call-stdlib.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --validate-asm - -// This file contains test cases that are particularly interesting because they -// omit the usual call-site coercion of function calls that target well-known -// stdlib functions. - -(function SuccessStdlibWithoutAnnotation() { - function Module(stdlib, imports, heap) { - "use asm"; - var imul = stdlib.Math.imul; - function f(a, b) { - a = a | 0; - b = b | 0; - var r = 0; - r = imul(a, b); - return r | 0; - } - return { f:f }; - } - var m = Module(this); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(966, m.f(23, 42)); - assertEquals(-0x0fffffff, m.f(0x7ffffff, 0x7ffffff)); -})(); - -(function SuccessStdlibWithoutAnnotationThenRound() { - function Module(stdlib, imports, heap) { - "use asm"; - var fround = stdlib.Math.fround; - var imul = stdlib.Math.imul; - function f(a, b) { - a = a | 0; - b = b | 0; - var r = fround(0); - r = fround(imul(a, b)); - return fround(r); - } - return { f:f }; - } - var m = Module(this); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(966, m.f(23, 42)); - assertEquals(-0x0fffffff - 1, m.f(0x7ffffff, 0x7ffffff)); -})(); - -(function FailureStdlibWithoutAnnotationMismatch() { - function Module(stdlib, imports, heap) { - "use asm"; - var fround = stdlib.Math.fround; - var imul = stdlib.Math.imul; - function f(a, b) { - a = a | 0; - b = b | 0; - var r = fround(0); - r = imul(a, b); - return r | 0; - } - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(966, m.f(23, 42)); - assertEquals(-0x0fffffff, m.f(0x7ffffff, 0x7ffffff)); -})(); - -(function SuccessStdlibWithoutAnnotationUsedInReturn() { - function Module(stdlib, imports, heap) { - "use asm"; - var imul = stdlib.Math.imul; - function f(a, b) { - a = a | 0; - b = b | 0; - return imul(a, b); - } - return { f:f }; - } - var m = Module(this); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(966, m.f(23, 42)); - assertEquals(-0x0fffffff, m.f(0x7ffffff, 0x7ffffff)); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/do-while-false.js b/implementation-contributed/v8/mjsunit/asm/do-while-false.js deleted file mode 100644 index e4cf375b012..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/do-while-false.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module() { - "use asm"; - - function d0() { - do { } while(false); - return 110; - } - - function d1() { - do { return 111; } while(false); - return 112; - } - - function d2() { - do { break; } while(false); - return 113; - } - - function d3(a) { - a = a | 0; - do { if (a) return 114; } while(false); - return 115; - } - - function d4(a) { - a = a | 0; - do { if (a) return 116; else break; } while(false); - return 117; - } - - function d5(a) { - a = a | 0; - do { if (a) return 118; } while(false); - return 119; - } - - function d6(a) { - a = a | 0; - do { - if ((a | 0) == 0) return 120; - if ((a | 0) == 1) break; - if ((a | 0) == 2) return 122; - if ((a | 0) == 3) continue; - if ((a | 0) == 4) return 124; - } while(false); - return 125; - } - - return {d0: d0, d1: d1, d2: d2, d3: d3, d4: d4, d5: d5, d6: d6}; -} - -var m = Module(); - -assertEquals(110, m.d0()); - -assertEquals(111, m.d1()); - -assertEquals(113, m.d2()); - -assertEquals(114, m.d3(1)); -assertEquals(115, m.d3(0)); - -assertEquals(116, m.d4(1)); -assertEquals(117, m.d4(0)); - -assertEquals(118, m.d5(1)); -assertEquals(119, m.d5(0)); - -assertEquals(120, m.d6(0)); -assertEquals(125, m.d6(1)); -assertEquals(122, m.d6(2)); -assertEquals(125, m.d6(3)); -assertEquals(124, m.d6(4)); -assertEquals(125, m.d6(5)); diff --git a/implementation-contributed/v8/mjsunit/asm/do-while.js b/implementation-contributed/v8/mjsunit/asm/do-while.js deleted file mode 100644 index 0c0824da110..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/do-while.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, buffer) { - "use asm"; - function f(i) { - i = i|0; - var j = 0; - do { - if ((i | 0) > 0) { - j = (i | 0) != 0; - i = (i - 1) | 0; - } else { - j = 0; - } - } while (j); - return i | 0; - } - return {f:f}; -} - -var m = Module(this, {}, new ArrayBuffer(64*1024)); - -assertEquals(-1, m.f("-1")); -assertEquals(0, m.f(-Math.infinity)); -assertEquals(0, m.f(undefined)); -assertEquals(0, m.f(0)); -assertEquals(0, m.f(1)); -assertEquals(0, m.f(100)); diff --git a/implementation-contributed/v8/mjsunit/asm/embenchen/box2d.js b/implementation-contributed/v8/mjsunit/asm/embenchen/box2d.js deleted file mode 100644 index 9bb029ee2aa..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/embenchen/box2d.js +++ /dev/null @@ -1,20322 +0,0 @@ -var EXPECTED_OUTPUT = - /frame averages: .+ \+- .+, range: .+ to .+ \n/; -var Module = { - arguments: [1], - print: function(x) {Module.printBuffer += x + '\n';}, - preRun: [function() {Module.printBuffer = ''}], - postRun: [function() { - assertTrue(EXPECTED_OUTPUT.test(Module.printBuffer)); - }], -}; -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - window['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependant on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - var source = Pointer_stringify(code); - if (source[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (source.indexOf('"', 1) === source.length-1) { - source = source.substr(1, source.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - try { - var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node - } catch(e) { - Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'); - throw e; - } - return Runtime.asmConstCache[code] = evalled; - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - /* TODO: use TextEncoder when present, - var encoder = new TextEncoder(); - encoder['encoding'] = "utf-8"; - var utf8Array = encoder['encode'](aMsg.data); - */ - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - getCompilerSetting: function (name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - var subs = []; - var first = true; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - if (rawList) { - if (ret) { - list.push(ret + '?'); - } - return list; - } else { - return ret + flushList(); - } - } - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'JS engine does not provide full typed array support'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === -var __ZTVN10__cxxabiv117__class_type_infoE = 7024; -var __ZTVN10__cxxabiv120__si_class_type_infoE = 7064; - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(7731); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,118,72,0,0,0,0,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,101,114,114,111,114,58,32,37,100,92,110,0,0,0,0,0,102,114,97,109,101,32,97,118,101,114,97,103,101,115,58,32,37,46,51,102,32,43,45,32,37,46,51,102,44,32,114,97,110,103,101,58,32,37,46,51,102,32,116,111,32,37,46,51,102,32,10,0,0,0,0,0,105,102,32,40,77,111,100,117,108,101,46,114,101,112,111,114,116,67,111,109,112,108,101,116,105,111,110,41,32,77,111,100,117,108,101,46,114,101,112,111,114,116,67,111,109,112,108,101,116,105,111,110,40,41,0,0,114,101,115,112,111,110,115,105,118,101,32,109,97,105,110,32,108,111,111,112,0,0,0,0,0,0,0,0,56,1,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,49,49,98,50,69,100,103,101,83,104,97,112,101,0,0,0,55,98,50,83,104,97,112,101,0,0,0,0,0,0,0,0,120,27,0,0,32,1,0,0,160,27,0,0,16,1,0,0,48,1,0,0,0,0,0,0,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,83,104,97,112,101,115,47,98,50,80,111,108,121,103,111,110,83,104,97,112,101,46,99,112,112,0,0,0,0,0,0,0,48,46,48,102,32,60,61,32,108,111,119,101,114,32,38,38,32,108,111,119,101,114,32,60,61,32,105,110,112,117,116,46,109,97,120,70,114,97,99,116,105,111,110,0,0,0,0,0,82,97,121,67,97,115,116,0,109,95,118,101,114,116,101,120,67,111,117,110,116,32,62,61,32,51,0,0,0,0,0,0,67,111,109,112,117,116,101,77,97,115,115,0,0,0,0,0,97,114,101,97,32,62,32,49,46,49,57,50,48,57,50,57,48,101,45,48,55,70,0,0,0,0,0,0,48,2,0,0,3,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,49,52,98,50,80,111,108,121,103,111,110,83,104,97,112,101,0,0,0,0,0,0,0,0,160,27,0,0,24,2,0,0,48,1,0,0,0,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,96,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,1,0,0,64,1,0,0,128,1,0,0,192,1,0,0,0,2,0,0,128,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,32,60,32,98,50,95,98,108,111,99,107,83,105,122,101,115,0,0,0,0,0,0,0,66,111,120,50,68,47,67,111,109,109,111,110,47,98,50,66,108,111,99,107,65,108,108,111,99,97,116,111,114,46,99,112,112,0,0,0,0,0,0,0,98,50,66,108,111,99,107,65,108,108,111,99,97,116,111,114,0,0,0,0,0,0,0,0,48,32,60,32,115,105,122,101,0,0,0,0,0,0,0,0,65,108,108,111,99,97,116,101,0,0,0,0,0,0,0,0,48,32,60,61,32,105,110,100,101,120,32,38,38,32,105,110,100,101,120,32,60,32,98,50,95,98,108,111,99,107,83,105,122,101,115,0,0,0,0,0,98,108,111,99,107,67,111,117,110,116,32,42,32,98,108,111,99,107,83,105,122,101,32,60,61,32,98,50,95,99,104,117,110,107,83,105,122,101,0,0,70,114,101,101,0,0,0,0,98,100,45,62,112,111,115,105,116,105,111,110,46,73,115,86,97,108,105,100,40,41,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,98,50,66,111,100,121,46,99,112,112,0,0,0,0,0,0,0,98,50,66,111,100,121,0,0,98,100,45,62,108,105,110,101,97,114,86,101,108,111,99,105,116,121,46,73,115,86,97,108,105,100,40,41,0,0,0,0,98,50,73,115,86,97,108,105,100,40,98,100,45,62,97,110,103,108,101,41,0,0,0,0,98,50,73,115,86,97,108,105,100,40,98,100,45,62,97,110,103,117,108,97,114,86,101,108,111,99,105,116,121,41,0,0,98,50,73,115,86,97,108,105,100,40,98,100,45,62,97,110,103,117,108,97,114,68,97,109,112,105,110,103,41,32,38,38,32,98,100,45,62,97,110,103,117,108,97,114,68,97,109,112,105,110,103,32,62,61,32,48,46,48,102,0,0,0,0,0,98,50,73,115,86,97,108,105,100,40,98,100,45,62,108,105,110,101,97,114,68,97,109,112,105,110,103,41,32,38,38,32,98,100,45,62,108,105,110,101,97,114,68,97,109,112,105,110,103,32,62,61,32,48,46,48,102,0,0,0,0,0,0,0,109,95,119,111,114,108,100,45,62,73,115,76,111,99,107,101,100,40,41,32,61,61,32,102,97,108,115,101,0,0,0,0,67,114,101,97,116,101,70,105,120,116,117,114,101,0,0,0,109,95,116,121,112,101,32,61,61,32,98,50,95,100,121,110,97,109,105,99,66,111,100,121,0,0,0,0,0,0,0,0,82,101,115,101,116,77,97,115,115,68,97,116,97,0,0,0,109,95,73,32,62,32,48,46,48,102,0,0,0,0,0,0,0,10,0,0,0,0,0,0,240,7,0,0,0,0,0,0,48,32,60,61,32,112,114,111,120,121,73,100,32,38,38,32,112,114,111,120,121,73,100,32,60,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,0,0,0,0,0,0,46,47,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,98,50,68,121,110,97,109,105,99,84,114,101,101,46,104,0,0,0,0,0,0,0,71,101,116,85,115,101,114,68,97,116,97,0,0,0,0,0,71,101,116,70,97,116,65,65,66,66,0,0,0,0,0,0,0,0,0,0,32,8,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,49,55,98,50,67,111,110,116,97,99,116,76,105,115,116,101,110,101,114,0,0,0,0,0,120,27,0,0,8,8,0,0,109,95,112,114,111,120,121,67,111,117,110,116,32,61,61,32,48,0,0,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,98,50,70,105,120,116,117,114,101,46,99,112,112,0,0,0,0,67,114,101,97,116,101,80,114,111,120,105,101,115,0,0,0,73,115,76,111,99,107,101,100,40,41,32,61,61,32,102,97,108,115,101,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,98,50,87,111,114,108,100,46,99,112,112,0,0,0,0,0,0,67,114,101,97,116,101,66,111,100,121,0,0,0,0,0,0,98,45,62,73,115,65,99,116,105,118,101,40,41,32,61,61,32,116,114,117,101,0,0,0,83,111,108,118,101,0,0,0,115,116,97,99,107,67,111,117,110,116,32,60,32,115,116,97,99,107,83,105,122,101,0,0,116,121,112,101,65,32,61,61,32,98,50,95,100,121,110,97,109,105,99,66,111,100,121,32,124,124,32,116,121,112,101,66,32,61,61,32,98,50,95,100,121,110,97,109,105,99,66,111,100,121,0,0,0,0,0,0,83,111,108,118,101,84,79,73,0,0,0,0,0,0,0,0,97,108,112,104,97,48,32,60,32,49,46,48,102,0,0,0,46,47,66,111,120,50,68,47,67,111,109,109,111,110,47,98,50,77,97,116,104,46,104,0,65,100,118,97,110,99,101,0,109,95,106,111,105,110,116,67,111,117,110,116,32,60,32,109,95,106,111,105,110,116,67,97,112,97,99,105,116,121,0,0,46,47,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,98,50,73,115,108,97,110,100,46,104,0,0,0,0,0,65,100,100,0,0,0,0,0,109,95,99,111,110,116,97,99,116,67,111,117,110,116,32,60,32,109,95,99,111,110,116,97,99,116,67,97,112,97,99,105,116,121,0,0,0,0,0,0,109,95,98,111,100,121,67,111,117,110,116,32,60,32,109,95,98,111,100,121,67,97,112,97,99,105,116,121,0,0,0,0,0,0,0,0,40,10,0,0,7,0,0,0,8,0,0,0,3,0,0,0,0,0,0,0,49,53,98,50,67,111,110,116,97,99,116,70,105,108,116,101,114,0,0,0,0,0,0,0,120,27,0,0,16,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,32,60,61,32,105,110,100,101,120,32,38,38,32,105,110,100,101,120,32,60,32,99,104,97,105,110,45,62,109,95,99,111,117,110,116,0,0,0,0,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,98,50,68,105,115,116,97,110,99,101,46,99,112,112,0,0,83,101,116,0,0,0,0,0,102,97,108,115,101,0,0,0,98,50,68,105,115,116,97,110,99,101,0,0,0,0,0,0,71,101,116,77,101,116,114,105,99,0,0,0,0,0,0,0,71,101,116,87,105,116,110,101,115,115,80,111,105,110,116,115,0,0,0,0,0,0,0,0,48,32,60,61,32,105,110,100,101,120,32,38,38,32,105,110,100,101,120,32,60,32,109,95,99,111,117,110,116,0,0,0,46,47,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,98,50,68,105,115,116,97,110,99,101,46,104,0,0,71,101,116,86,101,114,116,101,120,0,0,0,0,0,0,0,71,101,116,67,108,111,115,101,115,116,80,111,105,110,116,0,99,97,99,104,101,45,62,99,111,117,110,116,32,60,61,32,51,0,0,0,0,0,0,0,82,101,97,100,67,97,99,104,101,0,0,0,0,0,0,0,109,95,110,111,100,101,67,111,117,110,116,32,61,61,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,0,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,98,50,68,121,110,97,109,105,99,84,114,101,101,46,99,112,112,0,0,0,0,0,0,0,65,108,108,111,99,97,116,101,78,111,100,101,0,0,0,0,48,32,60,61,32,110,111,100,101,73,100,32,38,38,32,110,111,100,101,73,100,32,60,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,70,114,101,101,78,111,100,101,0,0,0,0,0,0,0,0,48,32,60,32,109,95,110,111,100,101,67,111,117,110,116,0,48,32,60,61,32,112,114,111,120,121,73,100,32,38,38,32,112,114,111,120,121,73,100,32,60,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,0,0,0,0,0,0,109,95,110,111,100,101,115,91,112,114,111,120,121,73,100,93,46,73,115,76,101,97,102,40,41,0,0,0,0,0,0,0,77,111,118,101,80,114,111,120,121,0,0,0,0,0,0,0,99,104,105,108,100,49,32,33,61,32,40,45,49,41,0,0,73,110,115,101,114,116,76,101,97,102,0,0,0,0,0,0,99,104,105,108,100,50,32,33,61,32,40,45,49,41,0,0,105,65,32,33,61,32,40,45,49,41,0,0,0,0,0,0,66,97,108,97,110,99,101,0,48,32,60,61,32,105,66,32,38,38,32,105,66,32,60,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,48,32,60,61,32,105,67,32,38,38,32,105,67,32,60,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,48,32,60,61,32,105,70,32,38,38,32,105,70,32,60,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,48,32,60,61,32,105,71,32,38,38,32,105,71,32,60,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,109,95,110,111,100,101,115,91,67,45,62,112,97,114,101,110,116,93,46,99,104,105,108,100,50,32,61,61,32,105,65,0,48,32,60,61,32,105,68,32,38,38,32,105,68,32,60,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,48,32,60,61,32,105,69,32,38,38,32,105,69,32,60,32,109,95,110,111,100,101,67,97,112,97,99,105,116,121,0,0,109,95,110,111,100,101,115,91,66,45,62,112,97,114,101,110,116,93,46,99,104,105,108,100,50,32,61,61,32,105,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,97,114,103,101,116,32,62,32,116,111,108,101,114,97,110,99,101,0,0,0,0,0,0,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,98,50,84,105,109,101,79,102,73,109,112,97,99,116,46,99,112,112,0,0,0,0,0,0,98,50,84,105,109,101,79,102,73,109,112,97,99,116,0,0,102,97,108,115,101,0,0,0,69,118,97,108,117,97,116,101,0,0,0,0,0,0,0,0,48,32,60,61,32,105,110,100,101,120,32,38,38,32,105,110,100,101,120,32,60,32,109,95,99,111,117,110,116,0,0,0,46,47,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,98,50,68,105,115,116,97,110,99,101,46,104,0,0,71,101,116,86,101,114,116,101,120,0,0,0,0,0,0,0,70,105,110,100,77,105,110,83,101,112,97,114,97,116,105,111,110,0,0,0,0,0,0,0,48,32,60,32,99,111,117,110,116,32,38,38,32,99,111,117,110,116,32,60,32,51,0,0,73,110,105,116,105,97,108,105,122,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,95,105,110,100,101,120,32,61,61,32,48,0,0,0,0,66,111,120,50,68,47,67,111,109,109,111,110,47,98,50,83,116,97,99,107,65,108,108,111,99,97,116,111,114,46,99,112,112,0,0,0,0,0,0,0,126,98,50,83,116,97,99,107,65,108,108,111,99,97,116,111,114,0,0,0,0,0,0,0,109,95,101,110,116,114,121,67,111,117,110,116,32,61,61,32,48,0,0,0,0,0,0,0,109,95,101,110,116,114,121,67,111,117,110,116,32,60,32,98,50,95,109,97,120,83,116,97,99,107,69,110,116,114,105,101,115,0,0,0,0,0,0,0,65,108,108,111,99,97,116,101,0,0,0,0,0,0,0,0,109,95,101,110,116,114,121,67,111,117,110,116,32,62,32,48,0,0,0,0,0,0,0,0,70,114,101,101,0,0,0,0,112,32,61,61,32,101,110,116,114,121,45,62,100,97,116,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,32,60,61,32,116,121,112,101,49,32,38,38,32,116,121,112,101,49,32,60,32,98,50,83,104,97,112,101,58,58,101,95,116,121,112,101,67,111,117,110,116,0,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,67,111,110,116,97,99,116,115,47,98,50,67,111,110,116,97,99,116,46,99,112,112,0,0,0,48,32,60,61,32,116,121,112,101,50,32,38,38,32,116,121,112,101,50,32,60,32,98,50,83,104,97,112,101,58,58,101,95,116,121,112,101,67,111,117,110,116,0,0,0,0,0,0,67,114,101,97,116,101,0,0,115,95,105,110,105,116,105,97,108,105,122,101,100,32,61,61,32,116,114,117,101,0,0,0,68,101,115,116,114,111,121,0,48,32,60,61,32,116,121,112,101,65,32,38,38,32,116,121,112,101,66,32,60,32,98,50,83,104,97,112,101,58,58,101,95,116,121,112,101,67,111,117,110,116,0,0,0,0,0,0,0,0,0,0,120,17,0,0,1,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,57,98,50,67,111,110,116,97,99,116,0,0,0,0,0,0,120,27,0,0,104,17,0,0,0,0,0,0,104,18,0,0,3,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,65,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,101,100,103,101,0,0,0,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,67,111,110,116,97,99,116,115,47,98,50,69,100,103,101,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,46,99,112,112,0,0,0,0,0,0,98,50,69,100,103,101,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,109,95,102,105,120,116,117,114,101,66,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,99,105,114,99,108,101,0,0,0,0,0,0,50,50,98,50,69,100,103,101,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,0,160,27,0,0,72,18,0,0,120,17,0,0,0,0,0,0,0,0,0,0,96,19,0,0,4,0,0,0,13,0,0,0,14,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,65,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,101,100,103,101,0,0,0,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,67,111,110,116,97,99,116,115,47,98,50,69,100,103,101,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,46,99,112,112,0,0,0,0,0,98,50,69,100,103,101,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,109,95,102,105,120,116,117,114,101,66,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,112,111,108,121,103,111,110,0,0,0,0,0,50,51,98,50,69,100,103,101,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,0,160,27,0,0,64,19,0,0,120,17,0,0,0,0,0,0,0,0,0,0,96,20,0,0,5,0,0,0,15,0,0,0,16,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,65,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,112,111,108,121,103,111,110,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,67,111,110,116,97,99,116,115,47,98,50,80,111,108,121,103,111,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,46,99,112,112,0,0,0,98,50,80,111,108,121,103,111,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,66,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,99,105,114,99,108,101,0,0,0,0,0,0,50,53,98,50,80,111,108,121,103,111,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,160,27,0,0,64,20,0,0,120,17,0,0,0,0,0,0,0,0,0,0,72,21,0,0,6,0,0,0,17,0,0,0,18,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,65,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,112,111,108,121,103,111,110,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,67,111,110,116,97,99,116,115,47,98,50,80,111,108,121,103,111,110,67,111,110,116,97,99,116,46,99,112,112,0,0,0,0,98,50,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,66,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,112,111,108,121,103,111,110,0,0,0,0,0,49,54,98,50,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,160,27,0,0,48,21,0,0,120,17,0,0,0,0,0,0,116,111,105,73,110,100,101,120,65,32,60,32,109,95,98,111,100,121,67,111,117,110,116,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,98,50,73,115,108,97,110,100,46,99,112,112,0,0,0,0,0,83,111,108,118,101,84,79,73,0,0,0,0,0,0,0,0,116,111,105,73,110,100,101,120,66,32,60,32,109,95,98,111,100,121,67,111,117,110,116,0,100,101,110,32,62,32,48,46,48,102,0,0,0,0,0,0,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,98,50,67,111,108,108,105,100,101,69,100,103,101,46,99,112,112,0,0,0,0,0,0,0,98,50,67,111,108,108,105,100,101,69,100,103,101,65,110,100,67,105,114,99,108,101,0,0,48,32,60,61,32,101,100,103,101,49,32,38,38,32,101,100,103,101,49,32,60,32,112,111,108,121,49,45,62,109,95,118,101,114,116,101,120,67,111,117,110,116,0,0,0,0,0,0,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,98,50,67,111,108,108,105,100,101,80,111,108,121,103,111,110,46,99,112,112,0,0,0,0,98,50,70,105,110,100,73,110,99,105,100,101,110,116,69,100,103,101,0,0,0,0,0,0,98,50,69,100,103,101,83,101,112,97,114,97,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,120,23,0,0,7,0,0,0,19,0,0,0,20,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,65,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,99,104,97,105,110,0,0,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,67,111,110,116,97,99,116,115,47,98,50,67,104,97,105,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,46,99,112,112,0,0,0,0,0,98,50,67,104,97,105,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,109,95,102,105,120,116,117,114,101,66,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,99,105,114,99,108,101,0,0,0,0,0,0,50,51,98,50,67,104,97,105,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,160,27,0,0,88,23,0,0,120,17,0,0,0,0,0,0,0,0,0,0,120,24,0,0,8,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,65,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,99,104,97,105,110,0,0,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,67,111,110,116,97,99,116,115,47,98,50,67,104,97,105,110,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,46,99,112,112,0,0,0,0,98,50,67,104,97,105,110,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,66,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,112,111,108,121,103,111,110,0,0,0,0,0,50,52,98,50,67,104,97,105,110,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,160,27,0,0,88,24,0,0,120,17,0,0,0,0,0,0,0,0,0,0,88,25,0,0,9,0,0,0,23,0,0,0,24,0,0,0,0,0,0,0,109,95,102,105,120,116,117,114,101,65,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,99,105,114,99,108,101,0,0,0,0,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,67,111,110,116,97,99,116,115,47,98,50,67,105,114,99,108,101,67,111,110,116,97,99,116,46,99,112,112,0,0,0,0,0,98,50,67,105,114,99,108,101,67,111,110,116,97,99,116,0,109,95,102,105,120,116,117,114,101,66,45,62,71,101,116,84,121,112,101,40,41,32,61,61,32,98,50,83,104,97,112,101,58,58,101,95,99,105,114,99,108,101,0,0,0,0,0,0,49,53,98,50,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,160,27,0,0,64,25,0,0,120,17,0,0,0,0,0,0,112,111,105,110,116,67,111,117,110,116,32,62,32,48,0,0,66,111,120,50,68,47,68,121,110,97,109,105,99,115,47,67,111,110,116,97,99,116,115,47,98,50,67,111,110,116,97,99,116,83,111,108,118,101,114,46,99,112,112,0,0,0,0,0,98,50,67,111,110,116,97,99,116,83,111,108,118,101,114,0,109,97,110,105,102,111,108,100,45,62,112,111,105,110,116,67,111,117,110,116,32,62,32,48,0,0,0,0,0,0,0,0,73,110,105,116,105,97,108,105,122,101,86,101,108,111,99,105,116,121,67,111,110,115,116,114,97,105,110,116,115,0,0,0,112,111,105,110,116,67,111,117,110,116,32,61,61,32,49,32,124,124,32,112,111,105,110,116,67,111,117,110,116,32,61,61,32,50,0,0,0,0,0,0,83,111,108,118,101,86,101,108,111,99,105,116,121,67,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,0,0,97,46,120,32,62,61,32,48,46,48,102,32,38,38,32,97,46,121,32,62,61,32,48,46,48,102,0,0,0,0,0,0,112,99,45,62,112,111,105,110,116,67,111,117,110,116,32,62,32,48,0,0,0,0,0,0,73,110,105,116,105,97,108,105,122,101,0,0,0,0,0,0,66,111,120,50,68,47,67,111,108,108,105,115,105,111,110,47,83,104,97,112,101,115,47,98,50,67,104,97,105,110,83,104,97,112,101,46,99,112,112,0,48,32,60,61,32,105,110,100,101,120,32,38,38,32,105,110,100,101,120,32,60,32,109,95,99,111,117,110,116,32,45,32,49,0,0,0,0,0,0,0,71,101,116,67,104,105,108,100,69,100,103,101,0,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,120,27,0,0,232,26,0,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,0,0,0,0,0,0,0,160,27,0,0,0,27,0,0,248,26,0,0,0,0,0,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,0,0,0,0,0,0,160,27,0,0,56,27,0,0,40,27,0,0,0,0,0,0,0,0,0,0,96,27,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,10,0,0,0,0,0,0,0,232,27,0,0,25,0,0,0,29,0,0,0,27,0,0,0,28,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,11,0,0,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,0,0,0,160,27,0,0,192,27,0,0,96,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,30,0,0,30,0,0,0,31,0,0,0,3,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,160,27,0,0,24,30,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg) { - Module['noExitRuntime'] = true; - - Browser.mainLoop.runner = function Browser_mainLoop_runner() { - if (ABORT) return; - if (Browser.mainLoop.queue.length > 0) { - var start = Date.now(); - var blocker = Browser.mainLoop.queue.shift(); - blocker.func(blocker.arg); - if (Browser.mainLoop.remainingBlockers) { - var remaining = Browser.mainLoop.remainingBlockers; - var next = remaining%1 == 0 ? remaining-1 : Math.floor(remaining); - if (blocker.counted) { - Browser.mainLoop.remainingBlockers = next; - } else { - // not counted, but move the progress along a tiny bit - next = next + 0.5; // do not steal all the next one's progress - Browser.mainLoop.remainingBlockers = (8*remaining + next)/9; - } - } - console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + ' ms'); //, left: ' + Browser.mainLoop.remainingBlockers); - Browser.mainLoop.updateStatus(); - setTimeout(Browser.mainLoop.runner, 0); - return; - } - if (Browser.mainLoop.shouldPause) { - // catch pauses from non-main loop sources - Browser.mainLoop.paused = true; - Browser.mainLoop.shouldPause = false; - return; - } - - // Signal GL rendering layer that processing of a new frame is about to start. This helps it optimize - // VBO double-buffering and reduce GPU stalls. - - if (Browser.mainLoop.method === 'timeout' && Module.ctx) { - Module.printErr('Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!'); - Browser.mainLoop.method = ''; // just warn once per call to set main loop - } - - if (Module['preMainLoop']) { - Module['preMainLoop'](); - } - - try { - if (typeof arg !== 'undefined') { - Runtime.dynCall('vi', func, [arg]); - } else { - Runtime.dynCall('v', func); - } - } catch (e) { - if (e instanceof ExitStatus) { - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } - - if (Module['postMainLoop']) { - Module['postMainLoop'](); - } - - if (Browser.mainLoop.shouldPause) { - // catch pauses from the main loop itself - Browser.mainLoop.paused = true; - Browser.mainLoop.shouldPause = false; - return; - } - Browser.mainLoop.scheduler(); - } - if (fps && fps > 0) { - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() { - setTimeout(Browser.mainLoop.runner, 1000/fps); // doing this each time means that on exception, we stop - }; - Browser.mainLoop.method = 'timeout'; - } else { - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() { - Browser.requestAnimationFrame(Browser.mainLoop.runner); - }; - Browser.mainLoop.method = 'rAF'; - } - Browser.mainLoop.scheduler(); - - if (simulateInfiniteLoop) { - throw 'SimulateInfiniteLoop'; - } - } - - var _cosf=Math_cos; - - function ___cxa_pure_virtual() { - ABORT = true; - throw 'Pure virtual function called!'; - } - - function _time(ptr) { - var ret = Math.floor(Date.now()/1000); - if (ptr) { - HEAP32[((ptr)>>2)]=ret; - } - return ret; - } - - 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() { // std::uncaught_exception() - return !!__ZSt18uncaught_exceptionv.uncaught_exception; - } - - - - function ___cxa_is_number_type(type) { - var isNumber = false; - try { if (type == __ZTIi) isNumber = true } catch(e){} - try { if (type == __ZTIj) isNumber = true } catch(e){} - try { if (type == __ZTIl) isNumber = true } catch(e){} - try { if (type == __ZTIm) isNumber = true } catch(e){} - try { if (type == __ZTIx) isNumber = true } catch(e){} - try { if (type == __ZTIy) isNumber = true } catch(e){} - try { if (type == __ZTIf) isNumber = true } catch(e){} - try { if (type == __ZTId) isNumber = true } catch(e){} - try { if (type == __ZTIe) isNumber = true } catch(e){} - try { if (type == __ZTIc) isNumber = true } catch(e){} - try { if (type == __ZTIa) isNumber = true } catch(e){} - try { if (type == __ZTIh) isNumber = true } catch(e){} - try { if (type == __ZTIs) isNumber = true } catch(e){} - try { if (type == __ZTIt) isNumber = true } catch(e){} - return isNumber; - }function ___cxa_does_inherit(definiteType, possibilityType, possibility) { - if (possibility == 0) return false; - if (possibilityType == 0 || possibilityType == definiteType) - return true; - var possibility_type_info; - if (___cxa_is_number_type(possibilityType)) { - possibility_type_info = possibilityType; - } else { - var possibility_type_infoAddr = HEAP32[((possibilityType)>>2)] - 8; - possibility_type_info = HEAP32[((possibility_type_infoAddr)>>2)]; - } - switch (possibility_type_info) { - case 0: // possibility is a pointer - // See if definite type is a pointer - var definite_type_infoAddr = HEAP32[((definiteType)>>2)] - 8; - var definite_type_info = HEAP32[((definite_type_infoAddr)>>2)]; - if (definite_type_info == 0) { - // Also a pointer; compare base types of pointers - var defPointerBaseAddr = definiteType+8; - var defPointerBaseType = HEAP32[((defPointerBaseAddr)>>2)]; - var possPointerBaseAddr = possibilityType+8; - var possPointerBaseType = HEAP32[((possPointerBaseAddr)>>2)]; - return ___cxa_does_inherit(defPointerBaseType, possPointerBaseType, possibility); - } else - return false; // one pointer and one non-pointer - case 1: // class with no base class - return false; - case 2: // class with base class - var parentTypeAddr = possibilityType + 8; - var parentType = HEAP32[((parentTypeAddr)>>2)]; - return ___cxa_does_inherit(definiteType, parentType, possibility); - default: - return false; // some unencountered type - } - } - - - - var ___cxa_last_thrown_exception=0;function ___resumeException(ptr) { - if (!___cxa_last_thrown_exception) { ___cxa_last_thrown_exception = 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."; - } - - var ___cxa_exception_header_size=8;function ___cxa_find_matching_catch(thrown, throwntype) { - if (thrown == -1) thrown = ___cxa_last_thrown_exception; - header = thrown - ___cxa_exception_header_size; - if (throwntype == -1) throwntype = HEAP32[((header)>>2)]; - var typeArray = Array.prototype.slice.call(arguments, 2); - - // If throwntype is a pointer, this means a pointer has been - // thrown. When a pointer is thrown, actually what's thrown - // is a pointer to the pointer. We'll dereference it. - if (throwntype != 0 && !___cxa_is_number_type(throwntype)) { - var throwntypeInfoAddr= HEAP32[((throwntype)>>2)] - 8; - var throwntypeInfo= HEAP32[((throwntypeInfoAddr)>>2)]; - if (throwntypeInfo == 0) - thrown = HEAP32[((thrown)>>2)]; - } - // The different catch blocks are denoted by different types. - // Due to inheritance, those types may not precisely match the - // type of the thrown object. Find one which matches, and - // return the type of the catch block which should be called. - for (var i = 0; i < typeArray.length; i++) { - if (___cxa_does_inherit(typeArray[i], throwntype, thrown)) - return ((asm["setTempRet0"](typeArray[i]),thrown)|0); - } - // Shouldn't happen unless we have bogus data in typeArray - // or encounter a type for which emscripten doesn't have suitable - // typeinfo defined. Best-efforts match just in case. - return ((asm["setTempRet0"](throwntype),thrown)|0); - }function ___cxa_throw(ptr, type, destructor) { - if (!___cxa_throw.initialized) { - try { - HEAP32[((__ZTVN10__cxxabiv119__pointer_type_infoE)>>2)]=0; // Workaround for libcxxabi integration bug - } catch(e){} - try { - HEAP32[((__ZTVN10__cxxabiv117__class_type_infoE)>>2)]=1; // Workaround for libcxxabi integration bug - } catch(e){} - try { - HEAP32[((__ZTVN10__cxxabiv120__si_class_type_infoE)>>2)]=2; // Workaround for libcxxabi integration bug - } catch(e){} - ___cxa_throw.initialized = true; - } - var header = ptr - ___cxa_exception_header_size; - HEAP32[((header)>>2)]=type; - HEAP32[(((header)+(4))>>2)]=destructor; - ___cxa_last_thrown_exception = 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; - - - - function __exit(status) { - // void _exit(int status); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html - Module['exit'](status); - }function _exit(status) { - __exit(status); - }function __ZSt9terminatev() { - _exit(-1234); - } - - function _abort() { - Module['abort'](); - } - - - - - - 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}; - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - // reuse all of the core MEMFS functionality - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },getDB:function (name, callback) { - // check the cache first - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - req.onupgradeneeded = function(e) { - var db = e.target.result; - var transaction = e.target.transaction; - - var fileStore; - - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - - fileStore.createIndex('timestamp', 'timestamp', { unique: false }); - }; - req.onsuccess = function() { - db = req.result; - - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function() { - callback(this.error); - }; - },getLocalSet:function (mount, callback) { - var entries = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat; - - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); - } - - entries[path] = { timestamp: stat.mtime }; - } - - return callback(null, { type: 'local', entries: entries }); - },getRemoteSet:function (mount, callback) { - var entries = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index('timestamp'); - - index.openKeyCursor().onsuccess = function(event) { - var cursor = event.target.result; - - if (!cursor) { - return callback(null, { type: 'remote', db: db, entries: entries }); - } - - entries[cursor.primaryKey] = { timestamp: cursor.key }; - - cursor.continue(); - }; - }); - },loadLocalEntry:function (path, callback) { - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode }); - } else if (FS.isFile(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); - } else { - return callback(new Error('node type not supported')); - } - },storeLocalEntry:function (path, entry, callback) { - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); - } else { - return callback(new Error('node type not supported')); - } - - FS.utime(path, entry.timestamp, entry.timestamp); - } catch (e) { - return callback(e); - } - - callback(null); - },removeLocalEntry:function (path, callback) { - try { - var lookup = FS.lookupPath(path); - var stat = FS.stat(path); - - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - - callback(null); - },loadRemoteEntry:function (store, path, callback) { - var req = store.get(path); - req.onsuccess = function(event) { callback(null, event.target.result); }; - req.onerror = function() { callback(this.error); }; - },storeRemoteEntry:function (store, path, entry, callback) { - var req = store.put(entry, path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },removeRemoteEntry:function (store, path, callback) { - var req = store.delete(path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create.push(key); - total++; - } - }); - - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - var e = dst.entries[key]; - var e2 = src.entries[key]; - if (!e2) { - remove.push(key); - total++; - } - }); - - if (!total) { - return callback(null); - } - - var errored = false; - var completed = 0; - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= total) { - return callback(null); - } - }; - - transaction.onerror = function() { done(this.error); }; - - // sort paths in ascending order so directory entries are created - // before the files inside them - create.sort().forEach(function (path) { - if (dst.type === 'local') { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - - // sort paths in descending order so files are deleted before their - // parent directories - remove.sort().reverse().forEach(function(path) { - if (dst.type === 'local') { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || {}; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return !!node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },getStreamFromPtr:function (ptr) { - return FS.streams[ptr - 1]; - },getPtrForStream:function (stream) { - return stream ? stream.fd + 1 : 0; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },getMounts:function (mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= mounts.length) { - callback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function (type, opts, mountpoint) { - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0, opts.canOwn); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }}; - - - - - function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - url = url + addr + ':' + port; - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - // The node ws library API for specifying optional subprotocol is slightly different than the browser's. - var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols; - - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fileno(stream) { - // int fileno(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - stream = FS.getStreamFromPtr(stream); - if (!stream) return -1; - return stream.fd; - }function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var fd = _fileno(stream); - var bytesWritten = _write(fd, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - - - Module["_strlen"] = _strlen; - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = HEAPF64[(((varargs)+(argIndex))>>3)]; - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision < 0) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - }function _printf(format, varargs) { - // int printf(const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var stdout = HEAP32[((_stdout)>>2)]; - return _fprintf(stdout, format, varargs); - } - - var _sinf=Math_sin; - - - var _sqrtf=Math_sqrt; - - var _floorf=Math_floor; - - - function _fputs(s, stream) { - // int fputs(const char *restrict s, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html - var fd = _fileno(stream); - return _write(fd, s, _strlen(s)); - } - - function _fputc(c, stream) { - // int fputc(int c, FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html - var chr = unSign(c & 0xFF); - HEAP8[((_fputc.ret)|0)]=chr; - var fd = _fileno(stream); - var ret = _write(fd, _fputc.ret, 1); - if (ret == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return -1; - } else { - return chr; - } - }function _puts(s) { - // int puts(const char *s); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/puts.html - // NOTE: puts() always writes an extra newline. - var stdout = HEAP32[((_stdout)>>2)]; - var ret = _fputs(s, stdout); - if (ret < 0) { - return ret; - } else { - var newlineRet = _fputc(10, stdout); - return (newlineRet < 0) ? -1 : ret + 1; - } - } - - function _clock() { - if (_clock.start === undefined) _clock.start = Date.now(); - return Math.floor((Date.now() - _clock.start) * (1000000/1000)); - } - - - var ___cxa_caught_exceptions=[];function ___cxa_begin_catch(ptr) { - __ZSt18uncaught_exceptionv.uncaught_exception--; - ___cxa_caught_exceptions.push(___cxa_last_thrown_exception); - return ptr; - } - - function ___errno_location() { - return ___errno_state; - } - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - Module["_memcpy"] = _memcpy; - - function __ZNSt9exceptionD2Ev() {} - - var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - - // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module - // Module['forcedAspectRatio'] = 4 / 3; - - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock'] || - canvas['msRequestPointerLock'] || - function(){}; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - document['msExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas || - document['msPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - document.addEventListener('mspointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - var canvasContainer = canvas.parentNode; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvasContainer) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen'] || - document['msExitFullscreen'] || - document['exitFullscreen'] || - function() {}; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else { - - // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - - if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - Browser.updateCanvasDimensions(canvas); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - document.addEventListener('MSFullscreenChange', fullScreenChange, false); - } - - // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - - // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) - canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || - canvasContainer['mozRequestFullScreen'] || - canvasContainer['msRequestFullscreen'] || - (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvasContainer.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },getMouseWheelDelta:function (event) { - return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },updateCanvasDimensions:function (canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { - if (w/h < Module['forcedAspectRatio']) { - w = Math.round(h * Module['forcedAspectRatio']); - } else { - h = Math.round(w / Module['forcedAspectRatio']); - } - } - if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != 'undefined') { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != 'undefined') { - if (w != wNative || h != hNative) { - canvas.style.setProperty( "width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } - } - }}; - - function _sbrk(bytes) { - // Implement a Linux-like 'memory area' for our 'process'. - // Changes the size of the memory area by |bytes|; returns the - // address of the previous top ('break') of the memory area - // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP - var self = _sbrk; - if (!self.called) { - DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned - self.called = true; - assert(Runtime.dynamicAlloc); - self.alloc = Runtime.dynamicAlloc; - Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; - } - var ret = DYNAMICTOP; - if (bytes != 0) self.alloc(bytes); - return ret; // Previous break location. - } - - function _sysconf(name) { - // long sysconf(int name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html - switch(name) { - case 30: return PAGE_SIZE; - case 132: - case 133: - case 12: - case 137: - case 138: - case 15: - case 235: - case 16: - case 17: - case 18: - case 19: - case 20: - case 149: - case 13: - case 10: - case 236: - case 153: - case 9: - case 21: - case 22: - case 159: - case 154: - case 14: - case 77: - case 78: - case 139: - case 80: - case 81: - case 79: - case 82: - case 68: - case 67: - case 164: - case 11: - case 29: - case 47: - case 48: - case 95: - case 52: - case 51: - case 46: - return 200809; - case 27: - case 246: - case 127: - case 128: - case 23: - case 24: - case 160: - case 161: - case 181: - case 182: - case 242: - case 183: - case 184: - case 243: - case 244: - case 245: - case 165: - case 178: - case 179: - case 49: - case 50: - case 168: - case 169: - case 175: - case 170: - case 171: - case 172: - case 97: - case 76: - case 32: - case 173: - case 35: - return -1; - case 176: - case 177: - case 7: - case 155: - case 8: - case 157: - case 125: - case 126: - case 92: - case 93: - case 129: - case 130: - case 131: - case 94: - case 91: - return 1; - case 74: - case 60: - case 69: - case 70: - case 4: - return 1024; - case 31: - case 42: - case 72: - return 32; - case 87: - case 26: - case 33: - return 2147483647; - case 34: - case 1: - return 47839; - case 38: - case 36: - return 99; - case 43: - case 37: - return 2048; - case 0: return 2097152; - case 3: return 65536; - case 28: return 32768; - case 44: return 32767; - case 75: return 16384; - case 39: return 1000; - case 89: return 700; - case 71: return 256; - case 40: return 255; - case 2: return 100; - case 180: return 64; - case 25: return 20; - case 5: return 16; - case 6: return 6; - case 73: return 4; - case 84: return 1; - } - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - } - - function _emscripten_run_script(ptr) { - eval(Pointer_stringify(ptr)); - } - - - function _malloc(bytes) { - /* Over-allocate to make sure it is byte-aligned by 8. - * This will leak memory, but this is only the dummy - * implementation (replaced by dlmalloc normally) so - * not an issue. - */ - var ptr = Runtime.dynamicAlloc(bytes + 8); - return (ptr+8) & 0xFFFFFFF8; - } - Module["_malloc"] = _malloc;function ___cxa_allocate_exception(size) { - var ptr = _malloc(size + ___cxa_exception_header_size); - return ptr + ___cxa_exception_header_size; - } - - function _emscripten_cancel_main_loop() { - Browser.mainLoop.scheduler = null; - Browser.mainLoop.shouldPause = true; - } - - var __ZTISt9exception=allocate([allocate([1,0,0,0,0,0,0], "i8", ALLOC_STATIC)+8, 0], "i32", ALLOC_STATIC); -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -_fputc.ret = allocate([0], "i8", ALLOC_STATIC); -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - -var Math_min = Math.min; -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_vii(index,a1,a2) { - try { - Module["dynCall_vii"](index,a1,a2); - } 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_viid(index,a1,a2,a3) { - try { - Module["dynCall_viid"](index,a1,a2,a3); - } 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_iiiiii(index,a1,a2,a3,a4,a5) { - try { - return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5); - } 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); - } -} - -function asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm = (function(global, env, buffer) { - 'use asm'; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - var __ZTISt9exception=env.__ZTISt9exception|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = +env.NaN, inf = +env.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var abort=env.abort; - var assert=env.assert; - var asmPrintInt=env.asmPrintInt; - var asmPrintFloat=env.asmPrintFloat; - var Math_min=env.min; - var invoke_iiii=env.invoke_iiii; - var invoke_viiiii=env.invoke_viiiii; - var invoke_vi=env.invoke_vi; - var invoke_vii=env.invoke_vii; - var invoke_ii=env.invoke_ii; - var invoke_viii=env.invoke_viii; - var invoke_v=env.invoke_v; - var invoke_viid=env.invoke_viid; - var invoke_viiiiii=env.invoke_viiiiii; - var invoke_iii=env.invoke_iii; - var invoke_iiiiii=env.invoke_iiiiii; - var invoke_viiii=env.invoke_viiii; - var ___cxa_throw=env.___cxa_throw; - var _emscripten_run_script=env._emscripten_run_script; - var _cosf=env._cosf; - var _send=env._send; - var __ZSt9terminatev=env.__ZSt9terminatev; - var __reallyNegative=env.__reallyNegative; - var ___cxa_is_number_type=env.___cxa_is_number_type; - var ___assert_fail=env.___assert_fail; - var ___cxa_allocate_exception=env.___cxa_allocate_exception; - var ___cxa_find_matching_catch=env.___cxa_find_matching_catch; - var _fflush=env._fflush; - var _pwrite=env._pwrite; - var ___setErrNo=env.___setErrNo; - var _sbrk=env._sbrk; - var ___cxa_begin_catch=env.___cxa_begin_catch; - var _sinf=env._sinf; - var _fileno=env._fileno; - var ___resumeException=env.___resumeException; - var __ZSt18uncaught_exceptionv=env.__ZSt18uncaught_exceptionv; - var _sysconf=env._sysconf; - var _clock=env._clock; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _puts=env._puts; - var _mkport=env._mkport; - var _floorf=env._floorf; - var _sqrtf=env._sqrtf; - var _write=env._write; - var _emscripten_set_main_loop=env._emscripten_set_main_loop; - var ___errno_location=env.___errno_location; - var __ZNSt9exceptionD2Ev=env.__ZNSt9exceptionD2Ev; - var _printf=env._printf; - var ___cxa_does_inherit=env.___cxa_does_inherit; - var __exit=env.__exit; - var _fputc=env._fputc; - var _abort=env._abort; - var _fwrite=env._fwrite; - var _time=env._time; - var _fprintf=env._fprintf; - var _emscripten_cancel_main_loop=env._emscripten_cancel_main_loop; - var __formatString=env.__formatString; - var _fputs=env._fputs; - var _exit=env._exit; - var ___cxa_pure_virtual=env.___cxa_pure_virtual; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function _malloc(i12) { - i12 = i12 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0; - i1 = STACKTOP; - do { - if (i12 >>> 0 < 245) { - if (i12 >>> 0 < 11) { - i12 = 16; - } else { - i12 = i12 + 11 & -8; - } - i20 = i12 >>> 3; - i18 = HEAP32[1790] | 0; - i21 = i18 >>> i20; - if ((i21 & 3 | 0) != 0) { - i6 = (i21 & 1 ^ 1) + i20 | 0; - i5 = i6 << 1; - i3 = 7200 + (i5 << 2) | 0; - i5 = 7200 + (i5 + 2 << 2) | 0; - i7 = HEAP32[i5 >> 2] | 0; - i2 = i7 + 8 | 0; - i4 = HEAP32[i2 >> 2] | 0; - do { - if ((i3 | 0) != (i4 | 0)) { - if (i4 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i4 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i7 | 0)) { - HEAP32[i8 >> 2] = i3; - HEAP32[i5 >> 2] = i4; - break; - } else { - _abort(); - } - } else { - HEAP32[1790] = i18 & ~(1 << i6); - } - } while (0); - i32 = i6 << 3; - HEAP32[i7 + 4 >> 2] = i32 | 3; - i32 = i7 + (i32 | 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - if (i12 >>> 0 > (HEAP32[7168 >> 2] | 0) >>> 0) { - if ((i21 | 0) != 0) { - i7 = 2 << i20; - i7 = i21 << i20 & (i7 | 0 - i7); - i7 = (i7 & 0 - i7) + -1 | 0; - i2 = i7 >>> 12 & 16; - i7 = i7 >>> i2; - i6 = i7 >>> 5 & 8; - i7 = i7 >>> i6; - i5 = i7 >>> 2 & 4; - i7 = i7 >>> i5; - i4 = i7 >>> 1 & 2; - i7 = i7 >>> i4; - i3 = i7 >>> 1 & 1; - i3 = (i6 | i2 | i5 | i4 | i3) + (i7 >>> i3) | 0; - i7 = i3 << 1; - i4 = 7200 + (i7 << 2) | 0; - i7 = 7200 + (i7 + 2 << 2) | 0; - i5 = HEAP32[i7 >> 2] | 0; - i2 = i5 + 8 | 0; - i6 = HEAP32[i2 >> 2] | 0; - do { - if ((i4 | 0) != (i6 | 0)) { - if (i6 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i6 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i5 | 0)) { - HEAP32[i8 >> 2] = i4; - HEAP32[i7 >> 2] = i6; - break; - } else { - _abort(); - } - } else { - HEAP32[1790] = i18 & ~(1 << i3); - } - } while (0); - i6 = i3 << 3; - i4 = i6 - i12 | 0; - HEAP32[i5 + 4 >> 2] = i12 | 3; - i3 = i5 + i12 | 0; - HEAP32[i5 + (i12 | 4) >> 2] = i4 | 1; - HEAP32[i5 + i6 >> 2] = i4; - i6 = HEAP32[7168 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[7180 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 7200 + (i9 << 2) | 0; - i7 = HEAP32[1790] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 7200 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - i28 = i7; - i27 = i8; - } - } else { - HEAP32[1790] = i7 | i8; - i28 = 7200 + (i9 + 2 << 2) | 0; - i27 = i6; - } - HEAP32[i28 >> 2] = i5; - HEAP32[i27 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i27; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[7168 >> 2] = i4; - HEAP32[7180 >> 2] = i3; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[7164 >> 2] | 0; - if ((i18 | 0) != 0) { - i2 = (i18 & 0 - i18) + -1 | 0; - i31 = i2 >>> 12 & 16; - i2 = i2 >>> i31; - i30 = i2 >>> 5 & 8; - i2 = i2 >>> i30; - i32 = i2 >>> 2 & 4; - i2 = i2 >>> i32; - i6 = i2 >>> 1 & 2; - i2 = i2 >>> i6; - i3 = i2 >>> 1 & 1; - i3 = HEAP32[7464 + ((i30 | i31 | i32 | i6 | i3) + (i2 >>> i3) << 2) >> 2] | 0; - i2 = (HEAP32[i3 + 4 >> 2] & -8) - i12 | 0; - i6 = i3; - while (1) { - i5 = HEAP32[i6 + 16 >> 2] | 0; - if ((i5 | 0) == 0) { - i5 = HEAP32[i6 + 20 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - } - i6 = (HEAP32[i5 + 4 >> 2] & -8) - i12 | 0; - i4 = i6 >>> 0 < i2 >>> 0; - i2 = i4 ? i6 : i2; - i6 = i5; - i3 = i4 ? i5 : i3; - } - i6 = HEAP32[7176 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - i4 = i3 + i12 | 0; - if (!(i3 >>> 0 < i4 >>> 0)) { - _abort(); - } - i5 = HEAP32[i3 + 24 >> 2] | 0; - i7 = HEAP32[i3 + 12 >> 2] | 0; - do { - if ((i7 | 0) == (i3 | 0)) { - i8 = i3 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i8 = i3 + 16 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i26 = 0; - break; - } - } - while (1) { - i10 = i7 + 20 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) != 0) { - i7 = i9; - i8 = i10; - continue; - } - i10 = i7 + 16 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } else { - i7 = i9; - i8 = i10; - } - } - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i8 >> 2] = 0; - i26 = i7; - break; - } - } else { - i8 = HEAP32[i3 + 8 >> 2] | 0; - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } - i6 = i8 + 12 | 0; - if ((HEAP32[i6 >> 2] | 0) != (i3 | 0)) { - _abort(); - } - i9 = i7 + 8 | 0; - if ((HEAP32[i9 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i7; - HEAP32[i9 >> 2] = i8; - i26 = i7; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i5 | 0) != 0) { - i7 = HEAP32[i3 + 28 >> 2] | 0; - i6 = 7464 + (i7 << 2) | 0; - if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) { - HEAP32[i6 >> 2] = i26; - if ((i26 | 0) == 0) { - HEAP32[7164 >> 2] = HEAP32[7164 >> 2] & ~(1 << i7); - break; - } - } else { - if (i5 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i6 = i5 + 16 | 0; - if ((HEAP32[i6 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i26; - } else { - HEAP32[i5 + 20 >> 2] = i26; - } - if ((i26 | 0) == 0) { - break; - } - } - if (i26 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i26 + 24 >> 2] = i5; - i5 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 16 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } while (0); - i5 = HEAP32[i3 + 20 >> 2] | 0; - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 20 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } - } while (0); - if (i2 >>> 0 < 16) { - i32 = i2 + i12 | 0; - HEAP32[i3 + 4 >> 2] = i32 | 3; - i32 = i3 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } else { - HEAP32[i3 + 4 >> 2] = i12 | 3; - HEAP32[i3 + (i12 | 4) >> 2] = i2 | 1; - HEAP32[i3 + (i2 + i12) >> 2] = i2; - i6 = HEAP32[7168 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[7180 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 7200 + (i9 << 2) | 0; - i7 = HEAP32[1790] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 7200 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - i25 = i7; - i24 = i8; - } - } else { - HEAP32[1790] = i7 | i8; - i25 = 7200 + (i9 + 2 << 2) | 0; - i24 = i6; - } - HEAP32[i25 >> 2] = i5; - HEAP32[i24 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i24; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[7168 >> 2] = i2; - HEAP32[7180 >> 2] = i4; - } - i32 = i3 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - if (!(i12 >>> 0 > 4294967231)) { - i24 = i12 + 11 | 0; - i12 = i24 & -8; - i26 = HEAP32[7164 >> 2] | 0; - if ((i26 | 0) != 0) { - i25 = 0 - i12 | 0; - i24 = i24 >>> 8; - if ((i24 | 0) != 0) { - if (i12 >>> 0 > 16777215) { - i27 = 31; - } else { - i31 = (i24 + 1048320 | 0) >>> 16 & 8; - i32 = i24 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i27 = (i32 + 245760 | 0) >>> 16 & 2; - i27 = 14 - (i30 | i31 | i27) + (i32 << i27 >>> 15) | 0; - i27 = i12 >>> (i27 + 7 | 0) & 1 | i27 << 1; - } - } else { - i27 = 0; - } - i30 = HEAP32[7464 + (i27 << 2) >> 2] | 0; - L126 : do { - if ((i30 | 0) == 0) { - i29 = 0; - i24 = 0; - } else { - if ((i27 | 0) == 31) { - i24 = 0; - } else { - i24 = 25 - (i27 >>> 1) | 0; - } - i29 = 0; - i28 = i12 << i24; - i24 = 0; - while (1) { - i32 = HEAP32[i30 + 4 >> 2] & -8; - i31 = i32 - i12 | 0; - if (i31 >>> 0 < i25 >>> 0) { - if ((i32 | 0) == (i12 | 0)) { - i25 = i31; - i29 = i30; - i24 = i30; - break L126; - } else { - i25 = i31; - i24 = i30; - } - } - i31 = HEAP32[i30 + 20 >> 2] | 0; - i30 = HEAP32[i30 + (i28 >>> 31 << 2) + 16 >> 2] | 0; - i29 = (i31 | 0) == 0 | (i31 | 0) == (i30 | 0) ? i29 : i31; - if ((i30 | 0) == 0) { - break; - } else { - i28 = i28 << 1; - } - } - } - } while (0); - if ((i29 | 0) == 0 & (i24 | 0) == 0) { - i32 = 2 << i27; - i26 = i26 & (i32 | 0 - i32); - if ((i26 | 0) == 0) { - break; - } - i32 = (i26 & 0 - i26) + -1 | 0; - i28 = i32 >>> 12 & 16; - i32 = i32 >>> i28; - i27 = i32 >>> 5 & 8; - i32 = i32 >>> i27; - i30 = i32 >>> 2 & 4; - i32 = i32 >>> i30; - i31 = i32 >>> 1 & 2; - i32 = i32 >>> i31; - i29 = i32 >>> 1 & 1; - i29 = HEAP32[7464 + ((i27 | i28 | i30 | i31 | i29) + (i32 >>> i29) << 2) >> 2] | 0; - } - if ((i29 | 0) != 0) { - while (1) { - i27 = (HEAP32[i29 + 4 >> 2] & -8) - i12 | 0; - i26 = i27 >>> 0 < i25 >>> 0; - i25 = i26 ? i27 : i25; - i24 = i26 ? i29 : i24; - i26 = HEAP32[i29 + 16 >> 2] | 0; - if ((i26 | 0) != 0) { - i29 = i26; - continue; - } - i29 = HEAP32[i29 + 20 >> 2] | 0; - if ((i29 | 0) == 0) { - break; - } - } - } - if ((i24 | 0) != 0 ? i25 >>> 0 < ((HEAP32[7168 >> 2] | 0) - i12 | 0) >>> 0 : 0) { - i4 = HEAP32[7176 >> 2] | 0; - if (i24 >>> 0 < i4 >>> 0) { - _abort(); - } - i2 = i24 + i12 | 0; - if (!(i24 >>> 0 < i2 >>> 0)) { - _abort(); - } - i3 = HEAP32[i24 + 24 >> 2] | 0; - i6 = HEAP32[i24 + 12 >> 2] | 0; - do { - if ((i6 | 0) == (i24 | 0)) { - i6 = i24 + 20 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i6 = i24 + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i22 = 0; - break; - } - } - while (1) { - i8 = i5 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) != 0) { - i5 = i7; - i6 = i8; - continue; - } - i7 = i5 + 16 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 | 0) == 0) { - break; - } else { - i5 = i8; - i6 = i7; - } - } - if (i6 >>> 0 < i4 >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = 0; - i22 = i5; - break; - } - } else { - i5 = HEAP32[i24 + 8 >> 2] | 0; - if (i5 >>> 0 < i4 >>> 0) { - _abort(); - } - i7 = i5 + 12 | 0; - if ((HEAP32[i7 >> 2] | 0) != (i24 | 0)) { - _abort(); - } - i4 = i6 + 8 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i7 >> 2] = i6; - HEAP32[i4 >> 2] = i5; - i22 = i6; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i3 | 0) != 0) { - i4 = HEAP32[i24 + 28 >> 2] | 0; - i5 = 7464 + (i4 << 2) | 0; - if ((i24 | 0) == (HEAP32[i5 >> 2] | 0)) { - HEAP32[i5 >> 2] = i22; - if ((i22 | 0) == 0) { - HEAP32[7164 >> 2] = HEAP32[7164 >> 2] & ~(1 << i4); - break; - } - } else { - if (i3 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i4 = i3 + 16 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i4 >> 2] = i22; - } else { - HEAP32[i3 + 20 >> 2] = i22; - } - if ((i22 | 0) == 0) { - break; - } - } - if (i22 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i22 + 24 >> 2] = i3; - i3 = HEAP32[i24 + 16 >> 2] | 0; - do { - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 16 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } while (0); - i3 = HEAP32[i24 + 20 >> 2] | 0; - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 20 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } - } while (0); - L204 : do { - if (!(i25 >>> 0 < 16)) { - HEAP32[i24 + 4 >> 2] = i12 | 3; - HEAP32[i24 + (i12 | 4) >> 2] = i25 | 1; - HEAP32[i24 + (i25 + i12) >> 2] = i25; - i4 = i25 >>> 3; - if (i25 >>> 0 < 256) { - i6 = i4 << 1; - i3 = 7200 + (i6 << 2) | 0; - i5 = HEAP32[1790] | 0; - i4 = 1 << i4; - if ((i5 & i4 | 0) != 0) { - i5 = 7200 + (i6 + 2 << 2) | 0; - i4 = HEAP32[i5 >> 2] | 0; - if (i4 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - i21 = i5; - i20 = i4; - } - } else { - HEAP32[1790] = i5 | i4; - i21 = 7200 + (i6 + 2 << 2) | 0; - i20 = i3; - } - HEAP32[i21 >> 2] = i2; - HEAP32[i20 + 12 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i20; - HEAP32[i24 + (i12 + 12) >> 2] = i3; - break; - } - i3 = i25 >>> 8; - if ((i3 | 0) != 0) { - if (i25 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i25 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i6 = 7464 + (i3 << 2) | 0; - HEAP32[i24 + (i12 + 28) >> 2] = i3; - HEAP32[i24 + (i12 + 20) >> 2] = 0; - HEAP32[i24 + (i12 + 16) >> 2] = 0; - i4 = HEAP32[7164 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[7164 >> 2] = i4 | i5; - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i6; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break; - } - i4 = HEAP32[i6 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L225 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i25 | 0)) { - i3 = i25 << i3; - while (1) { - i6 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i25 | 0)) { - i18 = i5; - break L225; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i6 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i4; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break L204; - } - } else { - i18 = i4; - } - } while (0); - i4 = i18 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[7176 >> 2] | 0; - if (i18 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i2; - HEAP32[i4 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i3; - HEAP32[i24 + (i12 + 12) >> 2] = i18; - HEAP32[i24 + (i12 + 24) >> 2] = 0; - break; - } - } else { - i32 = i25 + i12 | 0; - HEAP32[i24 + 4 >> 2] = i32 | 3; - i32 = i24 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - } while (0); - i32 = i24 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - i12 = -1; - } - } - } while (0); - i18 = HEAP32[7168 >> 2] | 0; - if (!(i12 >>> 0 > i18 >>> 0)) { - i3 = i18 - i12 | 0; - i2 = HEAP32[7180 >> 2] | 0; - if (i3 >>> 0 > 15) { - HEAP32[7180 >> 2] = i2 + i12; - HEAP32[7168 >> 2] = i3; - HEAP32[i2 + (i12 + 4) >> 2] = i3 | 1; - HEAP32[i2 + i18 >> 2] = i3; - HEAP32[i2 + 4 >> 2] = i12 | 3; - } else { - HEAP32[7168 >> 2] = 0; - HEAP32[7180 >> 2] = 0; - HEAP32[i2 + 4 >> 2] = i18 | 3; - i32 = i2 + (i18 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - i32 = i2 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[7172 >> 2] | 0; - if (i12 >>> 0 < i18 >>> 0) { - i31 = i18 - i12 | 0; - HEAP32[7172 >> 2] = i31; - i32 = HEAP32[7184 >> 2] | 0; - HEAP32[7184 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - do { - if ((HEAP32[1908] | 0) == 0) { - i18 = _sysconf(30) | 0; - if ((i18 + -1 & i18 | 0) == 0) { - HEAP32[7640 >> 2] = i18; - HEAP32[7636 >> 2] = i18; - HEAP32[7644 >> 2] = -1; - HEAP32[7648 >> 2] = -1; - HEAP32[7652 >> 2] = 0; - HEAP32[7604 >> 2] = 0; - HEAP32[1908] = (_time(0) | 0) & -16 ^ 1431655768; - break; - } else { - _abort(); - } - } - } while (0); - i20 = i12 + 48 | 0; - i25 = HEAP32[7640 >> 2] | 0; - i21 = i12 + 47 | 0; - i22 = i25 + i21 | 0; - i25 = 0 - i25 | 0; - i18 = i22 & i25; - if (!(i18 >>> 0 > i12 >>> 0)) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - i24 = HEAP32[7600 >> 2] | 0; - if ((i24 | 0) != 0 ? (i31 = HEAP32[7592 >> 2] | 0, i32 = i31 + i18 | 0, i32 >>> 0 <= i31 >>> 0 | i32 >>> 0 > i24 >>> 0) : 0) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - L269 : do { - if ((HEAP32[7604 >> 2] & 4 | 0) == 0) { - i26 = HEAP32[7184 >> 2] | 0; - L271 : do { - if ((i26 | 0) != 0) { - i24 = 7608 | 0; - while (1) { - i27 = HEAP32[i24 >> 2] | 0; - if (!(i27 >>> 0 > i26 >>> 0) ? (i23 = i24 + 4 | 0, (i27 + (HEAP32[i23 >> 2] | 0) | 0) >>> 0 > i26 >>> 0) : 0) { - break; - } - i24 = HEAP32[i24 + 8 >> 2] | 0; - if ((i24 | 0) == 0) { - i13 = 182; - break L271; - } - } - if ((i24 | 0) != 0) { - i25 = i22 - (HEAP32[7172 >> 2] | 0) & i25; - if (i25 >>> 0 < 2147483647) { - i13 = _sbrk(i25 | 0) | 0; - i26 = (i13 | 0) == ((HEAP32[i24 >> 2] | 0) + (HEAP32[i23 >> 2] | 0) | 0); - i22 = i13; - i24 = i25; - i23 = i26 ? i13 : -1; - i25 = i26 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i13 = 182; - } - } else { - i13 = 182; - } - } while (0); - do { - if ((i13 | 0) == 182) { - i23 = _sbrk(0) | 0; - if ((i23 | 0) != (-1 | 0)) { - i24 = i23; - i22 = HEAP32[7636 >> 2] | 0; - i25 = i22 + -1 | 0; - if ((i25 & i24 | 0) == 0) { - i25 = i18; - } else { - i25 = i18 - i24 + (i25 + i24 & 0 - i22) | 0; - } - i24 = HEAP32[7592 >> 2] | 0; - i26 = i24 + i25 | 0; - if (i25 >>> 0 > i12 >>> 0 & i25 >>> 0 < 2147483647) { - i22 = HEAP32[7600 >> 2] | 0; - if ((i22 | 0) != 0 ? i26 >>> 0 <= i24 >>> 0 | i26 >>> 0 > i22 >>> 0 : 0) { - i25 = 0; - break; - } - i22 = _sbrk(i25 | 0) | 0; - i13 = (i22 | 0) == (i23 | 0); - i24 = i25; - i23 = i13 ? i23 : -1; - i25 = i13 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i25 = 0; - } - } - } while (0); - L291 : do { - if ((i13 | 0) == 191) { - i13 = 0 - i24 | 0; - if ((i23 | 0) != (-1 | 0)) { - i17 = i23; - i14 = i25; - i13 = 202; - break L269; - } - do { - if ((i22 | 0) != (-1 | 0) & i24 >>> 0 < 2147483647 & i24 >>> 0 < i20 >>> 0 ? (i19 = HEAP32[7640 >> 2] | 0, i19 = i21 - i24 + i19 & 0 - i19, i19 >>> 0 < 2147483647) : 0) { - if ((_sbrk(i19 | 0) | 0) == (-1 | 0)) { - _sbrk(i13 | 0) | 0; - break L291; - } else { - i24 = i19 + i24 | 0; - break; - } - } - } while (0); - if ((i22 | 0) != (-1 | 0)) { - i17 = i22; - i14 = i24; - i13 = 202; - break L269; - } - } - } while (0); - HEAP32[7604 >> 2] = HEAP32[7604 >> 2] | 4; - i13 = 199; - } else { - i25 = 0; - i13 = 199; - } - } while (0); - if ((((i13 | 0) == 199 ? i18 >>> 0 < 2147483647 : 0) ? (i17 = _sbrk(i18 | 0) | 0, i16 = _sbrk(0) | 0, (i16 | 0) != (-1 | 0) & (i17 | 0) != (-1 | 0) & i17 >>> 0 < i16 >>> 0) : 0) ? (i15 = i16 - i17 | 0, i14 = i15 >>> 0 > (i12 + 40 | 0) >>> 0, i14) : 0) { - i14 = i14 ? i15 : i25; - i13 = 202; - } - if ((i13 | 0) == 202) { - i15 = (HEAP32[7592 >> 2] | 0) + i14 | 0; - HEAP32[7592 >> 2] = i15; - if (i15 >>> 0 > (HEAP32[7596 >> 2] | 0) >>> 0) { - HEAP32[7596 >> 2] = i15; - } - i15 = HEAP32[7184 >> 2] | 0; - L311 : do { - if ((i15 | 0) != 0) { - i21 = 7608 | 0; - while (1) { - i16 = HEAP32[i21 >> 2] | 0; - i19 = i21 + 4 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i17 | 0) == (i16 + i20 | 0)) { - i13 = 214; - break; - } - i18 = HEAP32[i21 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i21 = i18; - } - } - if (((i13 | 0) == 214 ? (HEAP32[i21 + 12 >> 2] & 8 | 0) == 0 : 0) ? i15 >>> 0 >= i16 >>> 0 & i15 >>> 0 < i17 >>> 0 : 0) { - HEAP32[i19 >> 2] = i20 + i14; - i2 = (HEAP32[7172 >> 2] | 0) + i14 | 0; - i3 = i15 + 8 | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i32 = i2 - i3 | 0; - HEAP32[7184 >> 2] = i15 + i3; - HEAP32[7172 >> 2] = i32; - HEAP32[i15 + (i3 + 4) >> 2] = i32 | 1; - HEAP32[i15 + (i2 + 4) >> 2] = 40; - HEAP32[7188 >> 2] = HEAP32[7648 >> 2]; - break; - } - if (i17 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - HEAP32[7176 >> 2] = i17; - } - i19 = i17 + i14 | 0; - i16 = 7608 | 0; - while (1) { - if ((HEAP32[i16 >> 2] | 0) == (i19 | 0)) { - i13 = 224; - break; - } - i18 = HEAP32[i16 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i16 = i18; - } - } - if ((i13 | 0) == 224 ? (HEAP32[i16 + 12 >> 2] & 8 | 0) == 0 : 0) { - HEAP32[i16 >> 2] = i17; - i6 = i16 + 4 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i14; - i6 = i17 + 8 | 0; - if ((i6 & 7 | 0) == 0) { - i6 = 0; - } else { - i6 = 0 - i6 & 7; - } - i7 = i17 + (i14 + 8) | 0; - if ((i7 & 7 | 0) == 0) { - i13 = 0; - } else { - i13 = 0 - i7 & 7; - } - i15 = i17 + (i13 + i14) | 0; - i8 = i6 + i12 | 0; - i7 = i17 + i8 | 0; - i10 = i15 - (i17 + i6) - i12 | 0; - HEAP32[i17 + (i6 + 4) >> 2] = i12 | 3; - L348 : do { - if ((i15 | 0) != (HEAP32[7184 >> 2] | 0)) { - if ((i15 | 0) == (HEAP32[7180 >> 2] | 0)) { - i32 = (HEAP32[7168 >> 2] | 0) + i10 | 0; - HEAP32[7168 >> 2] = i32; - HEAP32[7180 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i32 + i8) >> 2] = i32; - break; - } - i12 = i14 + 4 | 0; - i18 = HEAP32[i17 + (i12 + i13) >> 2] | 0; - if ((i18 & 3 | 0) == 1) { - i11 = i18 & -8; - i16 = i18 >>> 3; - do { - if (!(i18 >>> 0 < 256)) { - i9 = HEAP32[i17 + ((i13 | 24) + i14) >> 2] | 0; - i19 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - do { - if ((i19 | 0) == (i15 | 0)) { - i19 = i13 | 16; - i18 = i17 + (i12 + i19) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i18 = i17 + (i19 + i14) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i5 = 0; - break; - } - } - while (1) { - i20 = i16 + 20 | 0; - i19 = HEAP32[i20 >> 2] | 0; - if ((i19 | 0) != 0) { - i16 = i19; - i18 = i20; - continue; - } - i19 = i16 + 16 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i20 | 0) == 0) { - break; - } else { - i16 = i20; - i18 = i19; - } - } - if (i18 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i18 >> 2] = 0; - i5 = i16; - break; - } - } else { - i18 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - if (i18 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i18 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - i20 = i19 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i19; - HEAP32[i20 >> 2] = i18; - i5 = i19; - break; - } else { - _abort(); - } - } - } while (0); - if ((i9 | 0) != 0) { - i16 = HEAP32[i17 + (i14 + 28 + i13) >> 2] | 0; - i18 = 7464 + (i16 << 2) | 0; - if ((i15 | 0) == (HEAP32[i18 >> 2] | 0)) { - HEAP32[i18 >> 2] = i5; - if ((i5 | 0) == 0) { - HEAP32[7164 >> 2] = HEAP32[7164 >> 2] & ~(1 << i16); - break; - } - } else { - if (i9 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i9 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i5; - } else { - HEAP32[i9 + 20 >> 2] = i5; - } - if ((i5 | 0) == 0) { - break; - } - } - if (i5 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i5 + 24 >> 2] = i9; - i15 = i13 | 16; - i9 = HEAP32[i17 + (i15 + i14) >> 2] | 0; - do { - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 16 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } while (0); - i9 = HEAP32[i17 + (i12 + i15) >> 2] | 0; - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 20 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } - } else { - i5 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - i12 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - i18 = 7200 + (i16 << 1 << 2) | 0; - if ((i5 | 0) != (i18 | 0)) { - if (i5 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i5 + 12 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - } - if ((i12 | 0) == (i5 | 0)) { - HEAP32[1790] = HEAP32[1790] & ~(1 << i16); - break; - } - if ((i12 | 0) != (i18 | 0)) { - if (i12 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i12 + 8 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - i9 = i16; - } else { - _abort(); - } - } else { - i9 = i12 + 8 | 0; - } - HEAP32[i5 + 12 >> 2] = i12; - HEAP32[i9 >> 2] = i5; - } - } while (0); - i15 = i17 + ((i11 | i13) + i14) | 0; - i10 = i11 + i10 | 0; - } - i5 = i15 + 4 | 0; - HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -2; - HEAP32[i17 + (i8 + 4) >> 2] = i10 | 1; - HEAP32[i17 + (i10 + i8) >> 2] = i10; - i5 = i10 >>> 3; - if (i10 >>> 0 < 256) { - i10 = i5 << 1; - i2 = 7200 + (i10 << 2) | 0; - i9 = HEAP32[1790] | 0; - i5 = 1 << i5; - if ((i9 & i5 | 0) != 0) { - i9 = 7200 + (i10 + 2 << 2) | 0; - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - i3 = i9; - i4 = i5; - } - } else { - HEAP32[1790] = i9 | i5; - i3 = 7200 + (i10 + 2 << 2) | 0; - i4 = i2; - } - HEAP32[i3 >> 2] = i7; - HEAP32[i4 + 12 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - break; - } - i3 = i10 >>> 8; - if ((i3 | 0) != 0) { - if (i10 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i10 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i4 = 7464 + (i3 << 2) | 0; - HEAP32[i17 + (i8 + 28) >> 2] = i3; - HEAP32[i17 + (i8 + 20) >> 2] = 0; - HEAP32[i17 + (i8 + 16) >> 2] = 0; - i9 = HEAP32[7164 >> 2] | 0; - i5 = 1 << i3; - if ((i9 & i5 | 0) == 0) { - HEAP32[7164 >> 2] = i9 | i5; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L444 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i10 | 0)) { - i3 = i10 << i3; - while (1) { - i5 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i9 = HEAP32[i5 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } - if ((HEAP32[i9 + 4 >> 2] & -8 | 0) == (i10 | 0)) { - i2 = i9; - break L444; - } else { - i3 = i3 << 1; - i4 = i9; - } - } - if (i5 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break L348; - } - } else { - i2 = i4; - } - } while (0); - i4 = i2 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[7176 >> 2] | 0; - if (i2 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i7; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i3; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - HEAP32[i17 + (i8 + 24) >> 2] = 0; - break; - } - } else { - i32 = (HEAP32[7172 >> 2] | 0) + i10 | 0; - HEAP32[7172 >> 2] = i32; - HEAP32[7184 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - } - } while (0); - i32 = i17 + (i6 | 8) | 0; - STACKTOP = i1; - return i32 | 0; - } - i3 = 7608 | 0; - while (1) { - i2 = HEAP32[i3 >> 2] | 0; - if (!(i2 >>> 0 > i15 >>> 0) ? (i11 = HEAP32[i3 + 4 >> 2] | 0, i10 = i2 + i11 | 0, i10 >>> 0 > i15 >>> 0) : 0) { - break; - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - } - i3 = i2 + (i11 + -39) | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i2 = i2 + (i11 + -47 + i3) | 0; - i2 = i2 >>> 0 < (i15 + 16 | 0) >>> 0 ? i15 : i2; - i3 = i2 + 8 | 0; - i4 = i17 + 8 | 0; - if ((i4 & 7 | 0) == 0) { - i4 = 0; - } else { - i4 = 0 - i4 & 7; - } - i32 = i14 + -40 - i4 | 0; - HEAP32[7184 >> 2] = i17 + i4; - HEAP32[7172 >> 2] = i32; - HEAP32[i17 + (i4 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[7188 >> 2] = HEAP32[7648 >> 2]; - HEAP32[i2 + 4 >> 2] = 27; - HEAP32[i3 + 0 >> 2] = HEAP32[7608 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[7612 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[7616 >> 2]; - HEAP32[i3 + 12 >> 2] = HEAP32[7620 >> 2]; - HEAP32[7608 >> 2] = i17; - HEAP32[7612 >> 2] = i14; - HEAP32[7620 >> 2] = 0; - HEAP32[7616 >> 2] = i3; - i4 = i2 + 28 | 0; - HEAP32[i4 >> 2] = 7; - if ((i2 + 32 | 0) >>> 0 < i10 >>> 0) { - while (1) { - i3 = i4 + 4 | 0; - HEAP32[i3 >> 2] = 7; - if ((i4 + 8 | 0) >>> 0 < i10 >>> 0) { - i4 = i3; - } else { - break; - } - } - } - if ((i2 | 0) != (i15 | 0)) { - i2 = i2 - i15 | 0; - i3 = i15 + (i2 + 4) | 0; - HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & -2; - HEAP32[i15 + 4 >> 2] = i2 | 1; - HEAP32[i15 + i2 >> 2] = i2; - i3 = i2 >>> 3; - if (i2 >>> 0 < 256) { - i4 = i3 << 1; - i2 = 7200 + (i4 << 2) | 0; - i5 = HEAP32[1790] | 0; - i3 = 1 << i3; - if ((i5 & i3 | 0) != 0) { - i4 = 7200 + (i4 + 2 << 2) | 0; - i3 = HEAP32[i4 >> 2] | 0; - if (i3 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - i7 = i4; - i8 = i3; - } - } else { - HEAP32[1790] = i5 | i3; - i7 = 7200 + (i4 + 2 << 2) | 0; - i8 = i2; - } - HEAP32[i7 >> 2] = i15; - HEAP32[i8 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i8; - HEAP32[i15 + 12 >> 2] = i2; - break; - } - i3 = i2 >>> 8; - if ((i3 | 0) != 0) { - if (i2 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i2 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i7 = 7464 + (i3 << 2) | 0; - HEAP32[i15 + 28 >> 2] = i3; - HEAP32[i15 + 20 >> 2] = 0; - HEAP32[i15 + 16 >> 2] = 0; - i4 = HEAP32[7164 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[7164 >> 2] = i4 | i5; - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i7; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break; - } - i4 = HEAP32[i7 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L499 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i2 | 0)) { - i3 = i2 << i3; - while (1) { - i7 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i7 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i2 | 0)) { - i6 = i5; - break L499; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i7 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i4; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break L311; - } - } else { - i6 = i4; - } - } while (0); - i4 = i6 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i2 = HEAP32[7176 >> 2] | 0; - if (i6 >>> 0 < i2 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i2 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i15; - HEAP32[i4 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i3; - HEAP32[i15 + 12 >> 2] = i6; - HEAP32[i15 + 24 >> 2] = 0; - break; - } - } - } else { - i32 = HEAP32[7176 >> 2] | 0; - if ((i32 | 0) == 0 | i17 >>> 0 < i32 >>> 0) { - HEAP32[7176 >> 2] = i17; - } - HEAP32[7608 >> 2] = i17; - HEAP32[7612 >> 2] = i14; - HEAP32[7620 >> 2] = 0; - HEAP32[7196 >> 2] = HEAP32[1908]; - HEAP32[7192 >> 2] = -1; - i2 = 0; - do { - i32 = i2 << 1; - i31 = 7200 + (i32 << 2) | 0; - HEAP32[7200 + (i32 + 3 << 2) >> 2] = i31; - HEAP32[7200 + (i32 + 2 << 2) >> 2] = i31; - i2 = i2 + 1 | 0; - } while ((i2 | 0) != 32); - i2 = i17 + 8 | 0; - if ((i2 & 7 | 0) == 0) { - i2 = 0; - } else { - i2 = 0 - i2 & 7; - } - i32 = i14 + -40 - i2 | 0; - HEAP32[7184 >> 2] = i17 + i2; - HEAP32[7172 >> 2] = i32; - HEAP32[i17 + (i2 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[7188 >> 2] = HEAP32[7648 >> 2]; - } - } while (0); - i2 = HEAP32[7172 >> 2] | 0; - if (i2 >>> 0 > i12 >>> 0) { - i31 = i2 - i12 | 0; - HEAP32[7172 >> 2] = i31; - i32 = HEAP32[7184 >> 2] | 0; - HEAP32[7184 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - HEAP32[(___errno_location() | 0) >> 2] = 12; - i32 = 0; - STACKTOP = i1; - return i32 | 0; -} -function __ZN12b2EPCollider7CollideEP10b2ManifoldPK11b2EdgeShapeRK11b2TransformPK14b2PolygonShapeS7_(i12, i2, i16, i5, i8, i6) { - i12 = i12 | 0; - i2 = i2 | 0; - i16 = i16 | 0; - i5 = i5 | 0; - i8 = i8 | 0; - i6 = i6 | 0; - var i1 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i15 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, d22 = 0.0, d23 = 0.0, d24 = 0.0, d25 = 0.0, d26 = 0.0, d27 = 0.0, d28 = 0.0, i29 = 0, d30 = 0.0, d31 = 0.0, d32 = 0.0, d33 = 0.0, i34 = 0, i35 = 0, d36 = 0.0, d37 = 0.0, i38 = 0, d39 = 0.0, i40 = 0, i41 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 144 | 0; - i18 = i1 + 128 | 0; - i11 = i1 + 24 | 0; - i9 = i1 + 72 | 0; - i10 = i1 + 48 | 0; - i3 = i1; - i4 = i12 + 132 | 0; - d28 = +HEAPF32[i5 + 12 >> 2]; - d37 = +HEAPF32[i6 + 8 >> 2]; - d23 = +HEAPF32[i5 + 8 >> 2]; - d27 = +HEAPF32[i6 + 12 >> 2]; - d22 = d28 * d37 - d23 * d27; - d27 = d37 * d23 + d28 * d27; - d37 = +d22; - d26 = +d27; - d25 = +HEAPF32[i6 >> 2] - +HEAPF32[i5 >> 2]; - d36 = +HEAPF32[i6 + 4 >> 2] - +HEAPF32[i5 + 4 >> 2]; - d24 = d28 * d25 + d23 * d36; - d25 = d28 * d36 - d23 * d25; - d23 = +d24; - d36 = +d25; - i5 = i4; - HEAPF32[i5 >> 2] = d23; - HEAPF32[i5 + 4 >> 2] = d36; - i5 = i12 + 140 | 0; - HEAPF32[i5 >> 2] = d37; - HEAPF32[i5 + 4 >> 2] = d26; - i5 = i12 + 144 | 0; - d26 = +HEAPF32[i8 + 12 >> 2]; - i7 = i12 + 140 | 0; - d37 = +HEAPF32[i8 + 16 >> 2]; - d24 = d24 + (d27 * d26 - d22 * d37); - i6 = i12 + 136 | 0; - d25 = d26 * d22 + d27 * d37 + d25; - d37 = +d24; - d27 = +d25; - i34 = i12 + 148 | 0; - HEAPF32[i34 >> 2] = d37; - HEAPF32[i34 + 4 >> 2] = d27; - i34 = i16 + 28 | 0; - i29 = HEAP32[i34 >> 2] | 0; - i34 = HEAP32[i34 + 4 >> 2] | 0; - i14 = i12 + 156 | 0; - HEAP32[i14 >> 2] = i29; - HEAP32[i14 + 4 >> 2] = i34; - i14 = i12 + 164 | 0; - i17 = i16 + 12 | 0; - i40 = HEAP32[i17 >> 2] | 0; - i17 = HEAP32[i17 + 4 >> 2] | 0; - i13 = i14; - HEAP32[i13 >> 2] = i40; - HEAP32[i13 + 4 >> 2] = i17; - i13 = i12 + 172 | 0; - i20 = i16 + 20 | 0; - i41 = HEAP32[i20 >> 2] | 0; - i20 = HEAP32[i20 + 4 >> 2] | 0; - i38 = i13; - HEAP32[i38 >> 2] = i41; - HEAP32[i38 + 4 >> 2] = i20; - i38 = i16 + 36 | 0; - i35 = HEAP32[i38 >> 2] | 0; - i38 = HEAP32[i38 + 4 >> 2] | 0; - i19 = i12 + 180 | 0; - HEAP32[i19 >> 2] = i35; - HEAP32[i19 + 4 >> 2] = i38; - i19 = (HEAP8[i16 + 44 | 0] | 0) != 0; - i21 = (HEAP8[i16 + 45 | 0] | 0) != 0; - d27 = (HEAP32[tempDoublePtr >> 2] = i41, +HEAPF32[tempDoublePtr >> 2]); - d37 = (HEAP32[tempDoublePtr >> 2] = i40, +HEAPF32[tempDoublePtr >> 2]); - d22 = d27 - d37; - d26 = (HEAP32[tempDoublePtr >> 2] = i20, +HEAPF32[tempDoublePtr >> 2]); - i20 = i12 + 168 | 0; - d36 = (HEAP32[tempDoublePtr >> 2] = i17, +HEAPF32[tempDoublePtr >> 2]); - d23 = d26 - d36; - d28 = +Math_sqrt(+(d22 * d22 + d23 * d23)); - d33 = (HEAP32[tempDoublePtr >> 2] = i29, +HEAPF32[tempDoublePtr >> 2]); - d32 = (HEAP32[tempDoublePtr >> 2] = i34, +HEAPF32[tempDoublePtr >> 2]); - d31 = (HEAP32[tempDoublePtr >> 2] = i35, +HEAPF32[tempDoublePtr >> 2]); - d30 = (HEAP32[tempDoublePtr >> 2] = i38, +HEAPF32[tempDoublePtr >> 2]); - if (!(d28 < 1.1920928955078125e-7)) { - d39 = 1.0 / d28; - d22 = d22 * d39; - d23 = d23 * d39; - } - i16 = i12 + 196 | 0; - d28 = -d22; - HEAPF32[i16 >> 2] = d23; - i17 = i12 + 200 | 0; - HEAPF32[i17 >> 2] = d28; - d28 = (d24 - d37) * d23 + (d25 - d36) * d28; - if (i19) { - d37 = d37 - d33; - d36 = d36 - d32; - d39 = +Math_sqrt(+(d37 * d37 + d36 * d36)); - if (!(d39 < 1.1920928955078125e-7)) { - d39 = 1.0 / d39; - d37 = d37 * d39; - d36 = d36 * d39; - } - d39 = -d37; - HEAPF32[i12 + 188 >> 2] = d36; - HEAPF32[i12 + 192 >> 2] = d39; - i29 = d23 * d37 - d22 * d36 >= 0.0; - d32 = (d24 - d33) * d36 + (d25 - d32) * d39; - } else { - i29 = 0; - d32 = 0.0; - } - L10 : do { - if (!i21) { - if (!i19) { - i41 = d28 >= 0.0; - HEAP8[i12 + 248 | 0] = i41 & 1; - i19 = i12 + 212 | 0; - if (i41) { - i15 = 64; - break; - } else { - i15 = 65; - break; - } - } - i19 = d32 >= 0.0; - if (i29) { - if (!i19) { - i41 = d28 >= 0.0; - HEAP8[i12 + 248 | 0] = i41 & 1; - i19 = i12 + 212 | 0; - if (!i41) { - d37 = +-d23; - d39 = +d22; - i38 = i19; - HEAPF32[i38 >> 2] = d37; - HEAPF32[i38 + 4 >> 2] = d39; - i38 = i16; - i40 = HEAP32[i38 >> 2] | 0; - i38 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i12 + 228 | 0; - HEAP32[i41 >> 2] = i40; - HEAP32[i41 + 4 >> 2] = i38; - i41 = i12 + 236 | 0; - HEAPF32[i41 >> 2] = -(HEAP32[tempDoublePtr >> 2] = i40, +HEAPF32[tempDoublePtr >> 2]); - HEAPF32[i41 + 4 >> 2] = d39; - break; - } - } else { - HEAP8[i12 + 248 | 0] = 1; - i19 = i12 + 212 | 0; - } - i41 = i16; - i40 = HEAP32[i41 + 4 >> 2] | 0; - i38 = i19; - HEAP32[i38 >> 2] = HEAP32[i41 >> 2]; - HEAP32[i38 + 4 >> 2] = i40; - i38 = i12 + 188 | 0; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i12 + 228 | 0; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - d37 = +-+HEAPF32[i16 >> 2]; - d39 = +-+HEAPF32[i17 >> 2]; - i41 = i12 + 236 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - break; - } else { - if (i19) { - i41 = d28 >= 0.0; - HEAP8[i12 + 248 | 0] = i41 & 1; - i19 = i12 + 212 | 0; - if (i41) { - i38 = i16; - i41 = HEAP32[i38 >> 2] | 0; - i38 = HEAP32[i38 + 4 >> 2] | 0; - i40 = i19; - HEAP32[i40 >> 2] = i41; - HEAP32[i40 + 4 >> 2] = i38; - i40 = i12 + 228 | 0; - HEAP32[i40 >> 2] = i41; - HEAP32[i40 + 4 >> 2] = i38; - d37 = +-(HEAP32[tempDoublePtr >> 2] = i41, +HEAPF32[tempDoublePtr >> 2]); - d39 = +d22; - i41 = i12 + 236 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - break; - } - } else { - HEAP8[i12 + 248 | 0] = 0; - i19 = i12 + 212 | 0; - } - d39 = +-d23; - d37 = +d22; - i38 = i19; - HEAPF32[i38 >> 2] = d39; - HEAPF32[i38 + 4 >> 2] = d37; - i38 = i16; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i12 + 228 | 0; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - d37 = +-+HEAPF32[i12 + 188 >> 2]; - d39 = +-+HEAPF32[i12 + 192 >> 2]; - i41 = i12 + 236 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - break; - } - } else { - d33 = d31 - d27; - d31 = d30 - d26; - d30 = +Math_sqrt(+(d33 * d33 + d31 * d31)); - if (d30 < 1.1920928955078125e-7) { - d30 = d33; - } else { - d39 = 1.0 / d30; - d30 = d33 * d39; - d31 = d31 * d39; - } - d39 = -d30; - i34 = i12 + 204 | 0; - HEAPF32[i34 >> 2] = d31; - i35 = i12 + 208 | 0; - HEAPF32[i35 >> 2] = d39; - i38 = d22 * d31 - d23 * d30 > 0.0; - d24 = (d24 - d27) * d31 + (d25 - d26) * d39; - if (!i19) { - i19 = d28 >= 0.0; - if (!i21) { - HEAP8[i12 + 248 | 0] = i19 & 1; - i15 = i12 + 212 | 0; - if (i19) { - i19 = i15; - i15 = 64; - break; - } else { - i19 = i15; - i15 = 65; - break; - } - } - if (i38) { - if (!i19) { - i41 = d24 >= 0.0; - HEAP8[i12 + 248 | 0] = i41 & 1; - i19 = i12 + 212 | 0; - if (!i41) { - d37 = +-d23; - d39 = +d22; - i38 = i19; - HEAPF32[i38 >> 2] = d37; - HEAPF32[i38 + 4 >> 2] = d39; - i38 = i12 + 228 | 0; - HEAPF32[i38 >> 2] = d37; - HEAPF32[i38 + 4 >> 2] = d39; - i38 = i16; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i12 + 236 | 0; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - break; - } - } else { - HEAP8[i12 + 248 | 0] = 1; - i19 = i12 + 212 | 0; - } - i41 = i16; - i40 = HEAP32[i41 + 4 >> 2] | 0; - i38 = i19; - HEAP32[i38 >> 2] = HEAP32[i41 >> 2]; - HEAP32[i38 + 4 >> 2] = i40; - d37 = +-+HEAPF32[i16 >> 2]; - d39 = +-+HEAPF32[i17 >> 2]; - i38 = i12 + 228 | 0; - HEAPF32[i38 >> 2] = d37; - HEAPF32[i38 + 4 >> 2] = d39; - i38 = i12 + 204 | 0; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i12 + 236 | 0; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - break; - } else { - if (i19) { - i41 = d24 >= 0.0; - HEAP8[i12 + 248 | 0] = i41 & 1; - i19 = i12 + 212 | 0; - if (i41) { - i40 = i16; - i38 = HEAP32[i40 >> 2] | 0; - i40 = HEAP32[i40 + 4 >> 2] | 0; - i41 = i19; - HEAP32[i41 >> 2] = i38; - HEAP32[i41 + 4 >> 2] = i40; - d37 = +-(HEAP32[tempDoublePtr >> 2] = i38, +HEAPF32[tempDoublePtr >> 2]); - d39 = +d22; - i41 = i12 + 228 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - i41 = i12 + 236 | 0; - HEAP32[i41 >> 2] = i38; - HEAP32[i41 + 4 >> 2] = i40; - break; - } - } else { - HEAP8[i12 + 248 | 0] = 0; - i19 = i12 + 212 | 0; - } - d39 = +-d23; - d37 = +d22; - i38 = i19; - HEAPF32[i38 >> 2] = d39; - HEAPF32[i38 + 4 >> 2] = d37; - d37 = +-+HEAPF32[i12 + 204 >> 2]; - d39 = +-+HEAPF32[i12 + 208 >> 2]; - i38 = i12 + 228 | 0; - HEAPF32[i38 >> 2] = d37; - HEAPF32[i38 + 4 >> 2] = d39; - i38 = i16; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i12 + 236 | 0; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - break; - } - } - if (i29 & i38) { - if (!(d32 >= 0.0) & !(d28 >= 0.0)) { - i41 = d24 >= 0.0; - HEAP8[i12 + 248 | 0] = i41 & 1; - i19 = i12 + 212 | 0; - if (!i41) { - d37 = +-d23; - d39 = +d22; - i41 = i19; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - i41 = i12 + 228 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - i41 = i12 + 236 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - break; - } - } else { - HEAP8[i12 + 248 | 0] = 1; - i19 = i12 + 212 | 0; - } - i38 = i16; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i19; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - i41 = i12 + 188 | 0; - i40 = HEAP32[i41 + 4 >> 2] | 0; - i38 = i12 + 228 | 0; - HEAP32[i38 >> 2] = HEAP32[i41 >> 2]; - HEAP32[i38 + 4 >> 2] = i40; - i38 = i12 + 204 | 0; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i12 + 236 | 0; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - break; - } - if (i29) { - do { - if (!(d32 >= 0.0)) { - if (d28 >= 0.0) { - i41 = d24 >= 0.0; - HEAP8[i12 + 248 | 0] = i41 & 1; - i19 = i12 + 212 | 0; - if (i41) { - break; - } - } else { - HEAP8[i12 + 248 | 0] = 0; - i19 = i12 + 212 | 0; - } - d37 = +-d23; - d39 = +d22; - i41 = i19; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - d39 = +-+HEAPF32[i34 >> 2]; - d37 = +-+HEAPF32[i35 >> 2]; - i41 = i12 + 228 | 0; - HEAPF32[i41 >> 2] = d39; - HEAPF32[i41 + 4 >> 2] = d37; - d37 = +-+HEAPF32[i16 >> 2]; - d39 = +-+HEAPF32[i17 >> 2]; - i41 = i12 + 236 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - break L10; - } else { - HEAP8[i12 + 248 | 0] = 1; - i19 = i12 + 212 | 0; - } - } while (0); - i38 = i16; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i19; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - i41 = i12 + 188 | 0; - i40 = HEAP32[i41 + 4 >> 2] | 0; - i38 = i12 + 228 | 0; - HEAP32[i38 >> 2] = HEAP32[i41 >> 2]; - HEAP32[i38 + 4 >> 2] = i40; - i38 = i16; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i12 + 236 | 0; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - break; - } - if (!i38) { - if (!(!(d32 >= 0.0) | !(d28 >= 0.0))) { - i41 = d24 >= 0.0; - HEAP8[i12 + 248 | 0] = i41 & 1; - i19 = i12 + 212 | 0; - if (i41) { - i40 = i16; - i38 = HEAP32[i40 >> 2] | 0; - i40 = HEAP32[i40 + 4 >> 2] | 0; - i41 = i19; - HEAP32[i41 >> 2] = i38; - HEAP32[i41 + 4 >> 2] = i40; - i41 = i12 + 228 | 0; - HEAP32[i41 >> 2] = i38; - HEAP32[i41 + 4 >> 2] = i40; - i41 = i12 + 236 | 0; - HEAP32[i41 >> 2] = i38; - HEAP32[i41 + 4 >> 2] = i40; - break; - } - } else { - HEAP8[i12 + 248 | 0] = 0; - i19 = i12 + 212 | 0; - } - d37 = +-d23; - d39 = +d22; - i41 = i19; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - d39 = +-+HEAPF32[i34 >> 2]; - d37 = +-+HEAPF32[i35 >> 2]; - i41 = i12 + 228 | 0; - HEAPF32[i41 >> 2] = d39; - HEAPF32[i41 + 4 >> 2] = d37; - d37 = +-+HEAPF32[i12 + 188 >> 2]; - d39 = +-+HEAPF32[i12 + 192 >> 2]; - i41 = i12 + 236 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - break; - } - do { - if (!(d24 >= 0.0)) { - if (d32 >= 0.0) { - i41 = d28 >= 0.0; - HEAP8[i12 + 248 | 0] = i41 & 1; - i19 = i12 + 212 | 0; - if (i41) { - break; - } - } else { - HEAP8[i12 + 248 | 0] = 0; - i19 = i12 + 212 | 0; - } - d37 = +-d23; - d39 = +d22; - i41 = i19; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - d39 = +-+HEAPF32[i16 >> 2]; - d37 = +-+HEAPF32[i17 >> 2]; - i41 = i12 + 228 | 0; - HEAPF32[i41 >> 2] = d39; - HEAPF32[i41 + 4 >> 2] = d37; - d37 = +-+HEAPF32[i12 + 188 >> 2]; - d39 = +-+HEAPF32[i12 + 192 >> 2]; - i41 = i12 + 236 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - break L10; - } else { - HEAP8[i12 + 248 | 0] = 1; - i19 = i12 + 212 | 0; - } - } while (0); - i38 = i16; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i19; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - i41 = i16; - i40 = HEAP32[i41 + 4 >> 2] | 0; - i38 = i12 + 228 | 0; - HEAP32[i38 >> 2] = HEAP32[i41 >> 2]; - HEAP32[i38 + 4 >> 2] = i40; - i38 = i12 + 204 | 0; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i12 + 236 | 0; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - } - } while (0); - if ((i15 | 0) == 64) { - i38 = i16; - i41 = HEAP32[i38 >> 2] | 0; - i38 = HEAP32[i38 + 4 >> 2] | 0; - i40 = i19; - HEAP32[i40 >> 2] = i41; - HEAP32[i40 + 4 >> 2] = i38; - d37 = +-(HEAP32[tempDoublePtr >> 2] = i41, +HEAPF32[tempDoublePtr >> 2]); - d39 = +d22; - i41 = i12 + 228 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - i41 = i12 + 236 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - } else if ((i15 | 0) == 65) { - d37 = +-d23; - d39 = +d22; - i40 = i19; - HEAPF32[i40 >> 2] = d37; - HEAPF32[i40 + 4 >> 2] = d39; - i40 = i16; - i38 = HEAP32[i40 >> 2] | 0; - i40 = HEAP32[i40 + 4 >> 2] | 0; - i41 = i12 + 228 | 0; - HEAP32[i41 >> 2] = i38; - HEAP32[i41 + 4 >> 2] = i40; - i41 = i12 + 236 | 0; - HEAP32[i41 >> 2] = i38; - HEAP32[i41 + 4 >> 2] = i40; - } - i21 = i8 + 148 | 0; - i34 = i12 + 128 | 0; - HEAP32[i34 >> 2] = HEAP32[i21 >> 2]; - if ((HEAP32[i21 >> 2] | 0) > 0) { - i19 = 0; - do { - d33 = +HEAPF32[i5 >> 2]; - d37 = +HEAPF32[i8 + (i19 << 3) + 20 >> 2]; - d39 = +HEAPF32[i7 >> 2]; - d36 = +HEAPF32[i8 + (i19 << 3) + 24 >> 2]; - d32 = +(+HEAPF32[i4 >> 2] + (d33 * d37 - d39 * d36)); - d36 = +(d37 * d39 + d33 * d36 + +HEAPF32[i6 >> 2]); - i41 = i12 + (i19 << 3) | 0; - HEAPF32[i41 >> 2] = d32; - HEAPF32[i41 + 4 >> 2] = d36; - d36 = +HEAPF32[i5 >> 2]; - d32 = +HEAPF32[i8 + (i19 << 3) + 84 >> 2]; - d33 = +HEAPF32[i7 >> 2]; - d39 = +HEAPF32[i8 + (i19 << 3) + 88 >> 2]; - d37 = +(d36 * d32 - d33 * d39); - d39 = +(d32 * d33 + d36 * d39); - i41 = i12 + (i19 << 3) + 64 | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - i19 = i19 + 1 | 0; - } while ((i19 | 0) < (HEAP32[i21 >> 2] | 0)); - } - i21 = i12 + 244 | 0; - HEAPF32[i21 >> 2] = .019999999552965164; - i19 = i2 + 60 | 0; - HEAP32[i19 >> 2] = 0; - i29 = i12 + 248 | 0; - i35 = HEAP32[i34 >> 2] | 0; - if ((i35 | 0) <= 0) { - STACKTOP = i1; - return; - } - d23 = +HEAPF32[i12 + 164 >> 2]; - d26 = +HEAPF32[i20 >> 2]; - d24 = +HEAPF32[i12 + 212 >> 2]; - d27 = +HEAPF32[i12 + 216 >> 2]; - d22 = 3.4028234663852886e+38; - i20 = 0; - do { - d25 = d24 * (+HEAPF32[i12 + (i20 << 3) >> 2] - d23) + d27 * (+HEAPF32[i12 + (i20 << 3) + 4 >> 2] - d26); - d22 = d25 < d22 ? d25 : d22; - i20 = i20 + 1 | 0; - } while ((i20 | 0) != (i35 | 0)); - if (d22 > .019999999552965164) { - STACKTOP = i1; - return; - } - __ZN12b2EPCollider24ComputePolygonSeparationEv(i18, i12); - i20 = HEAP32[i18 >> 2] | 0; - if ((i20 | 0) != 0) { - d23 = +HEAPF32[i18 + 8 >> 2]; - if (d23 > +HEAPF32[i21 >> 2]) { - STACKTOP = i1; - return; - } - if (d23 > d22 * .9800000190734863 + .0010000000474974513) { - i18 = HEAP32[i18 + 4 >> 2] | 0; - i35 = i2 + 56 | 0; - if ((i20 | 0) == 1) { - i18 = i11; - i15 = 77; - } else { - HEAP32[i35 >> 2] = 2; - i40 = i14; - i41 = HEAP32[i40 + 4 >> 2] | 0; - i38 = i11; - HEAP32[i38 >> 2] = HEAP32[i40 >> 2]; - HEAP32[i38 + 4 >> 2] = i41; - i38 = i11 + 8 | 0; - HEAP8[i38] = 0; - i41 = i18 & 255; - HEAP8[i38 + 1 | 0] = i41; - HEAP8[i38 + 2 | 0] = 0; - HEAP8[i38 + 3 | 0] = 1; - i38 = i13; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i13 = i11 + 12 | 0; - HEAP32[i13 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i13 + 4 >> 2] = i40; - i13 = i11 + 20 | 0; - HEAP8[i13] = 0; - HEAP8[i13 + 1 | 0] = i41; - HEAP8[i13 + 2 | 0] = 0; - HEAP8[i13 + 3 | 0] = 1; - HEAP32[i9 >> 2] = i18; - i13 = i18 + 1 | 0; - i16 = (i13 | 0) < (HEAP32[i34 >> 2] | 0) ? i13 : 0; - HEAP32[i9 + 4 >> 2] = i16; - i17 = i12 + (i18 << 3) | 0; - i13 = HEAP32[i17 >> 2] | 0; - i17 = HEAP32[i17 + 4 >> 2] | 0; - i29 = i9 + 8 | 0; - HEAP32[i29 >> 2] = i13; - HEAP32[i29 + 4 >> 2] = i17; - i16 = i12 + (i16 << 3) | 0; - i29 = HEAP32[i16 >> 2] | 0; - i16 = HEAP32[i16 + 4 >> 2] | 0; - i20 = i9 + 16 | 0; - HEAP32[i20 >> 2] = i29; - HEAP32[i20 + 4 >> 2] = i16; - i20 = i12 + (i18 << 3) + 64 | 0; - i12 = HEAP32[i20 >> 2] | 0; - i20 = HEAP32[i20 + 4 >> 2] | 0; - i14 = i9 + 24 | 0; - HEAP32[i14 >> 2] = i12; - HEAP32[i14 + 4 >> 2] = i20; - i14 = 0; - } - } else { - i15 = 75; - } - } else { - i15 = 75; - } - if ((i15 | 0) == 75) { - i18 = i11; - i35 = i2 + 56 | 0; - i15 = 77; - } - do { - if ((i15 | 0) == 77) { - HEAP32[i35 >> 2] = 1; - i15 = HEAP32[i34 >> 2] | 0; - if ((i15 | 0) > 1) { - d23 = +HEAPF32[i12 + 216 >> 2]; - d22 = +HEAPF32[i12 + 212 >> 2]; - i34 = 0; - d24 = d22 * +HEAPF32[i12 + 64 >> 2] + d23 * +HEAPF32[i12 + 68 >> 2]; - i35 = 1; - while (1) { - d25 = d22 * +HEAPF32[i12 + (i35 << 3) + 64 >> 2] + d23 * +HEAPF32[i12 + (i35 << 3) + 68 >> 2]; - i20 = d25 < d24; - i34 = i20 ? i35 : i34; - i35 = i35 + 1 | 0; - if ((i35 | 0) < (i15 | 0)) { - d24 = i20 ? d25 : d24; - } else { - break; - } - } - } else { - i34 = 0; - } - i20 = i34 + 1 | 0; - i40 = (i20 | 0) < (i15 | 0) ? i20 : 0; - i41 = i12 + (i34 << 3) | 0; - i38 = HEAP32[i41 + 4 >> 2] | 0; - i35 = i11; - HEAP32[i35 >> 2] = HEAP32[i41 >> 2]; - HEAP32[i35 + 4 >> 2] = i38; - i35 = i11 + 8 | 0; - HEAP8[i35] = 0; - HEAP8[i35 + 1 | 0] = i34; - HEAP8[i35 + 2 | 0] = 1; - HEAP8[i35 + 3 | 0] = 0; - i35 = i12 + (i40 << 3) | 0; - i38 = HEAP32[i35 + 4 >> 2] | 0; - i41 = i11 + 12 | 0; - HEAP32[i41 >> 2] = HEAP32[i35 >> 2]; - HEAP32[i41 + 4 >> 2] = i38; - i41 = i11 + 20 | 0; - HEAP8[i41] = 0; - HEAP8[i41 + 1 | 0] = i40; - HEAP8[i41 + 2 | 0] = 1; - HEAP8[i41 + 3 | 0] = 0; - if ((HEAP8[i29] | 0) == 0) { - HEAP32[i9 >> 2] = 1; - HEAP32[i9 + 4 >> 2] = 0; - i11 = i13; - i13 = HEAP32[i11 >> 2] | 0; - i11 = HEAP32[i11 + 4 >> 2] | 0; - i29 = i9 + 8 | 0; - HEAP32[i29 >> 2] = i13; - HEAP32[i29 + 4 >> 2] = i11; - i29 = HEAP32[i14 >> 2] | 0; - i14 = HEAP32[i14 + 4 >> 2] | 0; - i12 = i9 + 16 | 0; - HEAP32[i12 >> 2] = i29; - HEAP32[i12 + 4 >> 2] = i14; - i12 = (HEAPF32[tempDoublePtr >> 2] = -+HEAPF32[i16 >> 2], HEAP32[tempDoublePtr >> 2] | 0); - i20 = (HEAPF32[tempDoublePtr >> 2] = -+HEAPF32[i17 >> 2], HEAP32[tempDoublePtr >> 2] | 0); - i16 = i9 + 24 | 0; - HEAP32[i16 >> 2] = i12; - HEAP32[i16 + 4 >> 2] = i20; - i16 = i14; - i17 = i11; - i11 = i18; - i18 = 1; - i14 = 1; - break; - } else { - HEAP32[i9 >> 2] = 0; - HEAP32[i9 + 4 >> 2] = 1; - i17 = i14; - i11 = HEAP32[i17 >> 2] | 0; - i17 = HEAP32[i17 + 4 >> 2] | 0; - i29 = i9 + 8 | 0; - HEAP32[i29 >> 2] = i11; - HEAP32[i29 + 4 >> 2] = i17; - i29 = HEAP32[i13 >> 2] | 0; - i13 = HEAP32[i13 + 4 >> 2] | 0; - i20 = i9 + 16 | 0; - HEAP32[i20 >> 2] = i29; - HEAP32[i20 + 4 >> 2] = i13; - i20 = i16; - i12 = HEAP32[i20 >> 2] | 0; - i20 = HEAP32[i20 + 4 >> 2] | 0; - i16 = i9 + 24 | 0; - HEAP32[i16 >> 2] = i12; - HEAP32[i16 + 4 >> 2] = i20; - i16 = i13; - i13 = i11; - i11 = i18; - i18 = 0; - i14 = 1; - break; - } - } - } while (0); - d30 = (HEAP32[tempDoublePtr >> 2] = i20, +HEAPF32[tempDoublePtr >> 2]); - d39 = (HEAP32[tempDoublePtr >> 2] = i12, +HEAPF32[tempDoublePtr >> 2]); - d31 = (HEAP32[tempDoublePtr >> 2] = i13, +HEAPF32[tempDoublePtr >> 2]); - d32 = (HEAP32[tempDoublePtr >> 2] = i17, +HEAPF32[tempDoublePtr >> 2]); - d33 = (HEAP32[tempDoublePtr >> 2] = i29, +HEAPF32[tempDoublePtr >> 2]); - d37 = (HEAP32[tempDoublePtr >> 2] = i16, +HEAPF32[tempDoublePtr >> 2]); - i41 = i9 + 32 | 0; - i16 = i9 + 24 | 0; - i13 = i9 + 28 | 0; - d39 = -d39; - HEAPF32[i41 >> 2] = d30; - HEAPF32[i9 + 36 >> 2] = d39; - i20 = i9 + 44 | 0; - d36 = -d30; - i17 = i20; - HEAPF32[i17 >> 2] = d36; - HEAP32[i17 + 4 >> 2] = i12; - i17 = i9 + 8 | 0; - i15 = i9 + 12 | 0; - d39 = d30 * d31 + d32 * d39; - HEAPF32[i9 + 40 >> 2] = d39; - i29 = i9 + 52 | 0; - HEAPF32[i29 >> 2] = d33 * d36 + (HEAP32[tempDoublePtr >> 2] = i12, +HEAPF32[tempDoublePtr >> 2]) * d37; - if ((__Z19b2ClipSegmentToLineP12b2ClipVertexPKS_RK6b2Vec2fi(i10, i11, i41, d39, i18) | 0) < 2) { - STACKTOP = i1; - return; - } - if ((__Z19b2ClipSegmentToLineP12b2ClipVertexPKS_RK6b2Vec2fi(i3, i10, i20, +HEAPF32[i29 >> 2], HEAP32[i9 + 4 >> 2] | 0) | 0) < 2) { - STACKTOP = i1; - return; - } - i10 = i2 + 40 | 0; - if (i14) { - i40 = i16; - i41 = HEAP32[i40 >> 2] | 0; - i40 = HEAP32[i40 + 4 >> 2] | 0; - i35 = i10; - HEAP32[i35 >> 2] = i41; - HEAP32[i35 + 4 >> 2] = i40; - i35 = i17; - i40 = HEAP32[i35 >> 2] | 0; - i35 = HEAP32[i35 + 4 >> 2] | 0; - i38 = i2 + 48 | 0; - HEAP32[i38 >> 2] = i40; - HEAP32[i38 + 4 >> 2] = i35; - d23 = (HEAP32[tempDoublePtr >> 2] = i40, +HEAPF32[tempDoublePtr >> 2]); - d22 = (HEAP32[tempDoublePtr >> 2] = i41, +HEAPF32[tempDoublePtr >> 2]); - d24 = +HEAPF32[i15 >> 2]; - d25 = +HEAPF32[i13 >> 2]; - d28 = +HEAPF32[i3 >> 2]; - d27 = +HEAPF32[i3 + 4 >> 2]; - d26 = +HEAPF32[i21 >> 2]; - if (!((d28 - d23) * d22 + (d27 - d24) * d25 <= d26)) { - d28 = d26; - i8 = 0; - } else { - d37 = d28 - +HEAPF32[i4 >> 2]; - d36 = d27 - +HEAPF32[i6 >> 2]; - d33 = +HEAPF32[i5 >> 2]; - d28 = +HEAPF32[i7 >> 2]; - d39 = +(d37 * d33 + d36 * d28); - d28 = +(d33 * d36 - d37 * d28); - i8 = i2; - HEAPF32[i8 >> 2] = d39; - HEAPF32[i8 + 4 >> 2] = d28; - HEAP32[i2 + 16 >> 2] = HEAP32[i3 + 8 >> 2]; - d28 = +HEAPF32[i21 >> 2]; - i8 = 1; - } - d26 = +HEAPF32[i3 + 12 >> 2]; - d27 = +HEAPF32[i3 + 16 >> 2]; - if ((d26 - d23) * d22 + (d27 - d24) * d25 <= d28) { - d36 = d26 - +HEAPF32[i4 >> 2]; - d33 = d27 - +HEAPF32[i6 >> 2]; - d32 = +HEAPF32[i5 >> 2]; - d39 = +HEAPF32[i7 >> 2]; - d37 = +(d36 * d32 + d33 * d39); - d39 = +(d32 * d33 - d36 * d39); - i41 = i2 + (i8 * 20 | 0) | 0; - HEAPF32[i41 >> 2] = d37; - HEAPF32[i41 + 4 >> 2] = d39; - HEAP32[i2 + (i8 * 20 | 0) + 16 >> 2] = HEAP32[i3 + 20 >> 2]; - i8 = i8 + 1 | 0; - } - } else { - i38 = HEAP32[i9 >> 2] | 0; - i35 = i8 + (i38 << 3) + 84 | 0; - i41 = HEAP32[i35 + 4 >> 2] | 0; - i40 = i10; - HEAP32[i40 >> 2] = HEAP32[i35 >> 2]; - HEAP32[i40 + 4 >> 2] = i41; - i38 = i8 + (i38 << 3) + 20 | 0; - i40 = HEAP32[i38 + 4 >> 2] | 0; - i41 = i2 + 48 | 0; - HEAP32[i41 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i41 + 4 >> 2] = i40; - d22 = +HEAPF32[i17 >> 2]; - d23 = +HEAPF32[i16 >> 2]; - d24 = +HEAPF32[i15 >> 2]; - d25 = +HEAPF32[i13 >> 2]; - d26 = +HEAPF32[i21 >> 2]; - if (!((+HEAPF32[i3 >> 2] - d22) * d23 + (+HEAPF32[i3 + 4 >> 2] - d24) * d25 <= d26)) { - i8 = 0; - } else { - i40 = i3; - i8 = HEAP32[i40 + 4 >> 2] | 0; - i41 = i2; - HEAP32[i41 >> 2] = HEAP32[i40 >> 2]; - HEAP32[i41 + 4 >> 2] = i8; - i41 = i3 + 8 | 0; - i8 = i2 + 16 | 0; - HEAP8[i8 + 2 | 0] = HEAP8[i41 + 3 | 0] | 0; - HEAP8[i8 + 3 | 0] = HEAP8[i41 + 2 | 0] | 0; - HEAP8[i8] = HEAP8[i41 + 1 | 0] | 0; - HEAP8[i8 + 1 | 0] = HEAP8[i41] | 0; - d26 = +HEAPF32[i21 >> 2]; - i8 = 1; - } - i4 = i3 + 12 | 0; - if ((+HEAPF32[i4 >> 2] - d22) * d23 + (+HEAPF32[i3 + 16 >> 2] - d24) * d25 <= d26) { - i38 = i4; - i41 = HEAP32[i38 + 4 >> 2] | 0; - i40 = i2 + (i8 * 20 | 0) | 0; - HEAP32[i40 >> 2] = HEAP32[i38 >> 2]; - HEAP32[i40 + 4 >> 2] = i41; - i40 = i3 + 20 | 0; - i41 = i2 + (i8 * 20 | 0) + 16 | 0; - HEAP8[i41 + 2 | 0] = HEAP8[i40 + 3 | 0] | 0; - HEAP8[i41 + 3 | 0] = HEAP8[i40 + 2 | 0] | 0; - HEAP8[i41] = HEAP8[i40 + 1 | 0] | 0; - HEAP8[i41 + 1 | 0] = HEAP8[i40] | 0; - i8 = i8 + 1 | 0; - } - } - HEAP32[i19 >> 2] = i8; - STACKTOP = i1; - return; -} -function __ZN7b2World8SolveTOIERK10b2TimeStep(i30, i11) { - i30 = i30 | 0; - i11 = i11 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, i40 = 0, i41 = 0, d42 = 0.0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i50 = 0, i51 = 0, i52 = 0, i53 = 0, i54 = 0, i55 = 0, i56 = 0, i57 = 0, i58 = 0, i59 = 0, i60 = 0, i61 = 0, i62 = 0, i63 = 0, i64 = 0, i65 = 0, i66 = 0, d67 = 0.0, d68 = 0.0, d69 = 0.0, d70 = 0.0, d71 = 0.0, d72 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 336 | 0; - i3 = i1 + 284 | 0; - i6 = i1 + 152 | 0; - i5 = i1 + 144 | 0; - i4 = i1 + 108 | 0; - i8 = i1 + 72 | 0; - i7 = i1 + 64 | 0; - i14 = i1 + 24 | 0; - i9 = i1; - i10 = i30 + 102872 | 0; - i13 = i30 + 102944 | 0; - __ZN8b2IslandC2EiiiP16b2StackAllocatorP17b2ContactListener(i3, 64, 32, 0, i30 + 68 | 0, HEAP32[i13 >> 2] | 0); - i2 = i30 + 102995 | 0; - if ((HEAP8[i2] | 0) != 0) { - i15 = HEAP32[i30 + 102952 >> 2] | 0; - if ((i15 | 0) != 0) { - do { - i66 = i15 + 4 | 0; - HEAP16[i66 >> 1] = HEAP16[i66 >> 1] & 65534; - HEAPF32[i15 + 60 >> 2] = 0.0; - i15 = HEAP32[i15 + 96 >> 2] | 0; - } while ((i15 | 0) != 0); - } - i15 = i30 + 102932 | 0; - i16 = HEAP32[i15 >> 2] | 0; - if ((i16 | 0) != 0) { - do { - i66 = i16 + 4 | 0; - HEAP32[i66 >> 2] = HEAP32[i66 >> 2] & -34; - HEAP32[i16 + 128 >> 2] = 0; - HEAPF32[i16 + 132 >> 2] = 1.0; - i16 = HEAP32[i16 + 12 >> 2] | 0; - } while ((i16 | 0) != 0); - } - } else { - i15 = i30 + 102932 | 0; - } - i25 = i3 + 28 | 0; - i26 = i3 + 36 | 0; - i27 = i3 + 32 | 0; - i28 = i3 + 40 | 0; - i29 = i3 + 8 | 0; - i24 = i3 + 44 | 0; - i23 = i3 + 12 | 0; - i22 = i7 + 4 | 0; - i21 = i9 + 4 | 0; - i20 = i9 + 8 | 0; - i19 = i9 + 16 | 0; - i18 = i11 + 12 | 0; - i17 = i9 + 12 | 0; - i16 = i9 + 20 | 0; - i39 = i30 + 102994 | 0; - i37 = i6 + 16 | 0; - i36 = i6 + 20 | 0; - i35 = i6 + 24 | 0; - i34 = i6 + 44 | 0; - i33 = i6 + 48 | 0; - i32 = i6 + 52 | 0; - i41 = i6 + 28 | 0; - i31 = i6 + 56 | 0; - i40 = i6 + 92 | 0; - i30 = i6 + 128 | 0; - i38 = i5 + 4 | 0; - L11 : while (1) { - i47 = HEAP32[i15 >> 2] | 0; - if ((i47 | 0) == 0) { - i4 = 36; - break; - } else { - d42 = 1.0; - i44 = 0; - } - do { - i48 = i47 + 4 | 0; - i43 = HEAP32[i48 >> 2] | 0; - do { - if ((i43 & 4 | 0) != 0 ? (HEAP32[i47 + 128 >> 2] | 0) <= 8 : 0) { - if ((i43 & 32 | 0) == 0) { - i43 = HEAP32[i47 + 48 >> 2] | 0; - i45 = HEAP32[i47 + 52 >> 2] | 0; - if ((HEAP8[i43 + 38 | 0] | 0) != 0) { - break; - } - if ((HEAP8[i45 + 38 | 0] | 0) != 0) { - break; - } - i46 = HEAP32[i43 + 8 >> 2] | 0; - i50 = HEAP32[i45 + 8 >> 2] | 0; - i53 = HEAP32[i46 >> 2] | 0; - i52 = HEAP32[i50 >> 2] | 0; - if (!((i53 | 0) == 2 | (i52 | 0) == 2)) { - i4 = 16; - break L11; - } - i51 = HEAP16[i46 + 4 >> 1] | 0; - i49 = HEAP16[i50 + 4 >> 1] | 0; - if (!((i51 & 2) != 0 & (i53 | 0) != 0 | (i49 & 2) != 0 & (i52 | 0) != 0)) { - break; - } - if (!((i51 & 8) != 0 | (i53 | 0) != 2 | ((i49 & 8) != 0 | (i52 | 0) != 2))) { - break; - } - i51 = i46 + 28 | 0; - i52 = i46 + 60 | 0; - d68 = +HEAPF32[i52 >> 2]; - i49 = i50 + 28 | 0; - i53 = i50 + 60 | 0; - d67 = +HEAPF32[i53 >> 2]; - if (!(d68 < d67)) { - if (d67 < d68) { - if (!(d67 < 1.0)) { - i4 = 25; - break L11; - } - d67 = (d68 - d67) / (1.0 - d67); - i66 = i50 + 36 | 0; - d69 = 1.0 - d67; - d71 = +(+HEAPF32[i66 >> 2] * d69 + d67 * +HEAPF32[i50 + 44 >> 2]); - d70 = +(d69 * +HEAPF32[i50 + 40 >> 2] + d67 * +HEAPF32[i50 + 48 >> 2]); - HEAPF32[i66 >> 2] = d71; - HEAPF32[i66 + 4 >> 2] = d70; - i66 = i50 + 52 | 0; - HEAPF32[i66 >> 2] = d69 * +HEAPF32[i66 >> 2] + d67 * +HEAPF32[i50 + 56 >> 2]; - HEAPF32[i53 >> 2] = d68; - d67 = d68; - } else { - d67 = d68; - } - } else { - if (!(d68 < 1.0)) { - i4 = 21; - break L11; - } - d71 = (d67 - d68) / (1.0 - d68); - i66 = i46 + 36 | 0; - d70 = 1.0 - d71; - d68 = +(+HEAPF32[i66 >> 2] * d70 + d71 * +HEAPF32[i46 + 44 >> 2]); - d69 = +(d70 * +HEAPF32[i46 + 40 >> 2] + d71 * +HEAPF32[i46 + 48 >> 2]); - HEAPF32[i66 >> 2] = d68; - HEAPF32[i66 + 4 >> 2] = d69; - i66 = i46 + 52 | 0; - HEAPF32[i66 >> 2] = d70 * +HEAPF32[i66 >> 2] + d71 * +HEAPF32[i46 + 56 >> 2]; - HEAPF32[i52 >> 2] = d67; - } - if (!(d67 < 1.0)) { - i4 = 28; - break L11; - } - i66 = HEAP32[i47 + 56 >> 2] | 0; - i46 = HEAP32[i47 + 60 >> 2] | 0; - HEAP32[i37 >> 2] = 0; - HEAP32[i36 >> 2] = 0; - HEAPF32[i35 >> 2] = 0.0; - HEAP32[i34 >> 2] = 0; - HEAP32[i33 >> 2] = 0; - HEAPF32[i32 >> 2] = 0.0; - __ZN15b2DistanceProxy3SetEPK7b2Shapei(i6, HEAP32[i43 + 12 >> 2] | 0, i66); - __ZN15b2DistanceProxy3SetEPK7b2Shapei(i41, HEAP32[i45 + 12 >> 2] | 0, i46); - i43 = i31 + 0 | 0; - i45 = i51 + 0 | 0; - i46 = i43 + 36 | 0; - do { - HEAP32[i43 >> 2] = HEAP32[i45 >> 2]; - i43 = i43 + 4 | 0; - i45 = i45 + 4 | 0; - } while ((i43 | 0) < (i46 | 0)); - i43 = i40 + 0 | 0; - i45 = i49 + 0 | 0; - i46 = i43 + 36 | 0; - do { - HEAP32[i43 >> 2] = HEAP32[i45 >> 2]; - i43 = i43 + 4 | 0; - i45 = i45 + 4 | 0; - } while ((i43 | 0) < (i46 | 0)); - HEAPF32[i30 >> 2] = 1.0; - __Z14b2TimeOfImpactP11b2TOIOutputPK10b2TOIInput(i5, i6); - if ((HEAP32[i5 >> 2] | 0) == 3) { - d67 = d67 + (1.0 - d67) * +HEAPF32[i38 >> 2]; - d67 = d67 < 1.0 ? d67 : 1.0; - } else { - d67 = 1.0; - } - HEAPF32[i47 + 132 >> 2] = d67; - HEAP32[i48 >> 2] = HEAP32[i48 >> 2] | 32; - } else { - d67 = +HEAPF32[i47 + 132 >> 2]; - } - if (d67 < d42) { - d42 = d67; - i44 = i47; - } - } - } while (0); - i47 = HEAP32[i47 + 12 >> 2] | 0; - } while ((i47 | 0) != 0); - if ((i44 | 0) == 0 | d42 > .9999988079071045) { - i4 = 36; - break; - } - i47 = HEAP32[(HEAP32[i44 + 48 >> 2] | 0) + 8 >> 2] | 0; - i48 = HEAP32[(HEAP32[i44 + 52 >> 2] | 0) + 8 >> 2] | 0; - i49 = i47 + 28 | 0; - i43 = i4 + 0 | 0; - i45 = i49 + 0 | 0; - i46 = i43 + 36 | 0; - do { - HEAP32[i43 >> 2] = HEAP32[i45 >> 2]; - i43 = i43 + 4 | 0; - i45 = i45 + 4 | 0; - } while ((i43 | 0) < (i46 | 0)); - i50 = i48 + 28 | 0; - i43 = i8 + 0 | 0; - i45 = i50 + 0 | 0; - i46 = i43 + 36 | 0; - do { - HEAP32[i43 >> 2] = HEAP32[i45 >> 2]; - i43 = i43 + 4 | 0; - i45 = i45 + 4 | 0; - } while ((i43 | 0) < (i46 | 0)); - i43 = i47 + 60 | 0; - d67 = +HEAPF32[i43 >> 2]; - if (!(d67 < 1.0)) { - i4 = 38; - break; - } - d70 = (d42 - d67) / (1.0 - d67); - i57 = i47 + 36 | 0; - d67 = 1.0 - d70; - i52 = i47 + 44 | 0; - i53 = i47 + 48 | 0; - d71 = +HEAPF32[i57 >> 2] * d67 + d70 * +HEAPF32[i52 >> 2]; - d72 = d67 * +HEAPF32[i47 + 40 >> 2] + d70 * +HEAPF32[i53 >> 2]; - d69 = +d71; - d68 = +d72; - HEAPF32[i57 >> 2] = d69; - HEAPF32[i57 + 4 >> 2] = d68; - i57 = i47 + 52 | 0; - i51 = i47 + 56 | 0; - d70 = d67 * +HEAPF32[i57 >> 2] + d70 * +HEAPF32[i51 >> 2]; - HEAPF32[i57 >> 2] = d70; - HEAPF32[i43 >> 2] = d42; - i57 = i47 + 44 | 0; - HEAPF32[i57 >> 2] = d69; - HEAPF32[i57 + 4 >> 2] = d68; - HEAPF32[i51 >> 2] = d70; - d68 = +Math_sin(+d70); - i57 = i47 + 20 | 0; - HEAPF32[i57 >> 2] = d68; - d70 = +Math_cos(+d70); - i56 = i47 + 24 | 0; - HEAPF32[i56 >> 2] = d70; - i58 = i47 + 12 | 0; - i55 = i47 + 28 | 0; - d69 = +HEAPF32[i55 >> 2]; - i54 = i47 + 32 | 0; - d67 = +HEAPF32[i54 >> 2]; - d71 = +(d71 - (d70 * d69 - d68 * d67)); - d67 = +(d72 - (d68 * d69 + d70 * d67)); - i43 = i58; - HEAPF32[i43 >> 2] = d71; - HEAPF32[i43 + 4 >> 2] = d67; - i43 = i48 + 60 | 0; - d67 = +HEAPF32[i43 >> 2]; - if (!(d67 < 1.0)) { - i4 = 40; - break; - } - d70 = (d42 - d67) / (1.0 - d67); - i64 = i48 + 36 | 0; - d72 = 1.0 - d70; - i61 = i48 + 44 | 0; - i60 = i48 + 48 | 0; - d71 = +HEAPF32[i64 >> 2] * d72 + d70 * +HEAPF32[i61 >> 2]; - d67 = d72 * +HEAPF32[i48 + 40 >> 2] + d70 * +HEAPF32[i60 >> 2]; - d69 = +d71; - d68 = +d67; - HEAPF32[i64 >> 2] = d69; - HEAPF32[i64 + 4 >> 2] = d68; - i64 = i48 + 52 | 0; - i59 = i48 + 56 | 0; - d70 = d72 * +HEAPF32[i64 >> 2] + d70 * +HEAPF32[i59 >> 2]; - HEAPF32[i64 >> 2] = d70; - HEAPF32[i43 >> 2] = d42; - i64 = i48 + 44 | 0; - HEAPF32[i64 >> 2] = d69; - HEAPF32[i64 + 4 >> 2] = d68; - HEAPF32[i59 >> 2] = d70; - d68 = +Math_sin(+d70); - i64 = i48 + 20 | 0; - HEAPF32[i64 >> 2] = d68; - d70 = +Math_cos(+d70); - i63 = i48 + 24 | 0; - HEAPF32[i63 >> 2] = d70; - i65 = i48 + 12 | 0; - i62 = i48 + 28 | 0; - d69 = +HEAPF32[i62 >> 2]; - i66 = i48 + 32 | 0; - d72 = +HEAPF32[i66 >> 2]; - d71 = +(d71 - (d70 * d69 - d68 * d72)); - d72 = +(d67 - (d68 * d69 + d70 * d72)); - i43 = i65; - HEAPF32[i43 >> 2] = d71; - HEAPF32[i43 + 4 >> 2] = d72; - __ZN9b2Contact6UpdateEP17b2ContactListener(i44, HEAP32[i13 >> 2] | 0); - i43 = i44 + 4 | 0; - i45 = HEAP32[i43 >> 2] | 0; - HEAP32[i43 >> 2] = i45 & -33; - i46 = i44 + 128 | 0; - HEAP32[i46 >> 2] = (HEAP32[i46 >> 2] | 0) + 1; - if ((i45 & 6 | 0) != 6) { - HEAP32[i43 >> 2] = i45 & -37; - i43 = i49 + 0 | 0; - i45 = i4 + 0 | 0; - i46 = i43 + 36 | 0; - do { - HEAP32[i43 >> 2] = HEAP32[i45 >> 2]; - i43 = i43 + 4 | 0; - i45 = i45 + 4 | 0; - } while ((i43 | 0) < (i46 | 0)); - i43 = i50 + 0 | 0; - i45 = i8 + 0 | 0; - i46 = i43 + 36 | 0; - do { - HEAP32[i43 >> 2] = HEAP32[i45 >> 2]; - i43 = i43 + 4 | 0; - i45 = i45 + 4 | 0; - } while ((i43 | 0) < (i46 | 0)); - d69 = +HEAPF32[i51 >> 2]; - d71 = +Math_sin(+d69); - HEAPF32[i57 >> 2] = d71; - d69 = +Math_cos(+d69); - HEAPF32[i56 >> 2] = d69; - d72 = +HEAPF32[i55 >> 2]; - d70 = +HEAPF32[i54 >> 2]; - d68 = +(+HEAPF32[i52 >> 2] - (d69 * d72 - d71 * d70)); - d70 = +(+HEAPF32[i53 >> 2] - (d71 * d72 + d69 * d70)); - HEAPF32[i58 >> 2] = d68; - HEAPF32[i58 + 4 >> 2] = d70; - d70 = +HEAPF32[i59 >> 2]; - d68 = +Math_sin(+d70); - HEAPF32[i64 >> 2] = d68; - d70 = +Math_cos(+d70); - HEAPF32[i63 >> 2] = d70; - d69 = +HEAPF32[i62 >> 2]; - d72 = +HEAPF32[i66 >> 2]; - d71 = +(+HEAPF32[i61 >> 2] - (d70 * d69 - d68 * d72)); - d72 = +(+HEAPF32[i60 >> 2] - (d68 * d69 + d70 * d72)); - i66 = i65; - HEAPF32[i66 >> 2] = d71; - HEAPF32[i66 + 4 >> 2] = d72; - continue; - } - i45 = i47 + 4 | 0; - i46 = HEAPU16[i45 >> 1] | 0; - if ((i46 & 2 | 0) == 0) { - HEAP16[i45 >> 1] = i46 | 2; - HEAPF32[i47 + 144 >> 2] = 0.0; - } - i46 = i48 + 4 | 0; - i49 = HEAPU16[i46 >> 1] | 0; - if ((i49 & 2 | 0) == 0) { - HEAP16[i46 >> 1] = i49 | 2; - HEAPF32[i48 + 144 >> 2] = 0.0; - } - HEAP32[i25 >> 2] = 0; - HEAP32[i26 >> 2] = 0; - HEAP32[i27 >> 2] = 0; - if ((HEAP32[i28 >> 2] | 0) <= 0) { - i4 = 48; - break; - } - i49 = i47 + 8 | 0; - HEAP32[i49 >> 2] = 0; - i51 = HEAP32[i25 >> 2] | 0; - HEAP32[(HEAP32[i29 >> 2] | 0) + (i51 << 2) >> 2] = i47; - i51 = i51 + 1 | 0; - HEAP32[i25 >> 2] = i51; - if ((i51 | 0) >= (HEAP32[i28 >> 2] | 0)) { - i4 = 50; - break; - } - i50 = i48 + 8 | 0; - HEAP32[i50 >> 2] = i51; - i51 = HEAP32[i25 >> 2] | 0; - HEAP32[(HEAP32[i29 >> 2] | 0) + (i51 << 2) >> 2] = i48; - HEAP32[i25 >> 2] = i51 + 1; - i51 = HEAP32[i26 >> 2] | 0; - if ((i51 | 0) >= (HEAP32[i24 >> 2] | 0)) { - i4 = 52; - break; - } - HEAP32[i26 >> 2] = i51 + 1; - HEAP32[(HEAP32[i23 >> 2] | 0) + (i51 << 2) >> 2] = i44; - HEAP16[i45 >> 1] = HEAPU16[i45 >> 1] | 1; - HEAP16[i46 >> 1] = HEAPU16[i46 >> 1] | 1; - HEAP32[i43 >> 2] = HEAP32[i43 >> 2] | 1; - HEAP32[i7 >> 2] = i47; - HEAP32[i22 >> 2] = i48; - i44 = 1; - while (1) { - L58 : do { - if ((HEAP32[i47 >> 2] | 0) == 2 ? (i12 = HEAP32[i47 + 112 >> 2] | 0, (i12 | 0) != 0) : 0) { - i47 = i47 + 4 | 0; - i51 = i12; - do { - if ((HEAP32[i25 >> 2] | 0) == (HEAP32[i28 >> 2] | 0)) { - break L58; - } - if ((HEAP32[i26 >> 2] | 0) == (HEAP32[i24 >> 2] | 0)) { - break L58; - } - i52 = HEAP32[i51 + 4 >> 2] | 0; - i53 = i52 + 4 | 0; - do { - if ((HEAP32[i53 >> 2] & 1 | 0) == 0) { - i48 = HEAP32[i51 >> 2] | 0; - if (((HEAP32[i48 >> 2] | 0) == 2 ? (HEAP16[i47 >> 1] & 8) == 0 : 0) ? (HEAP16[i48 + 4 >> 1] & 8) == 0 : 0) { - break; - } - if ((HEAP8[(HEAP32[i52 + 48 >> 2] | 0) + 38 | 0] | 0) == 0 ? (HEAP8[(HEAP32[i52 + 52 >> 2] | 0) + 38 | 0] | 0) == 0 : 0) { - i54 = i48 + 28 | 0; - i43 = i14 + 0 | 0; - i45 = i54 + 0 | 0; - i46 = i43 + 36 | 0; - do { - HEAP32[i43 >> 2] = HEAP32[i45 >> 2]; - i43 = i43 + 4 | 0; - i45 = i45 + 4 | 0; - } while ((i43 | 0) < (i46 | 0)); - i43 = i48 + 4 | 0; - if ((HEAP16[i43 >> 1] & 1) == 0) { - i45 = i48 + 60 | 0; - d67 = +HEAPF32[i45 >> 2]; - if (!(d67 < 1.0)) { - i4 = 67; - break L11; - } - d70 = (d42 - d67) / (1.0 - d67); - i65 = i48 + 36 | 0; - d72 = 1.0 - d70; - d71 = +HEAPF32[i65 >> 2] * d72 + d70 * +HEAPF32[i48 + 44 >> 2]; - d67 = d72 * +HEAPF32[i48 + 40 >> 2] + d70 * +HEAPF32[i48 + 48 >> 2]; - d69 = +d71; - d68 = +d67; - HEAPF32[i65 >> 2] = d69; - HEAPF32[i65 + 4 >> 2] = d68; - i65 = i48 + 52 | 0; - i66 = i48 + 56 | 0; - d70 = d72 * +HEAPF32[i65 >> 2] + d70 * +HEAPF32[i66 >> 2]; - HEAPF32[i65 >> 2] = d70; - HEAPF32[i45 >> 2] = d42; - i65 = i48 + 44 | 0; - HEAPF32[i65 >> 2] = d69; - HEAPF32[i65 + 4 >> 2] = d68; - HEAPF32[i66 >> 2] = d70; - d68 = +Math_sin(+d70); - HEAPF32[i48 + 20 >> 2] = d68; - d70 = +Math_cos(+d70); - HEAPF32[i48 + 24 >> 2] = d70; - d69 = +HEAPF32[i48 + 28 >> 2]; - d72 = +HEAPF32[i48 + 32 >> 2]; - d71 = +(d71 - (d70 * d69 - d68 * d72)); - d72 = +(d67 - (d68 * d69 + d70 * d72)); - i66 = i48 + 12 | 0; - HEAPF32[i66 >> 2] = d71; - HEAPF32[i66 + 4 >> 2] = d72; - } - __ZN9b2Contact6UpdateEP17b2ContactListener(i52, HEAP32[i13 >> 2] | 0); - i45 = HEAP32[i53 >> 2] | 0; - if ((i45 & 4 | 0) == 0) { - i43 = i54 + 0 | 0; - i45 = i14 + 0 | 0; - i46 = i43 + 36 | 0; - do { - HEAP32[i43 >> 2] = HEAP32[i45 >> 2]; - i43 = i43 + 4 | 0; - i45 = i45 + 4 | 0; - } while ((i43 | 0) < (i46 | 0)); - d70 = +HEAPF32[i48 + 56 >> 2]; - d68 = +Math_sin(+d70); - HEAPF32[i48 + 20 >> 2] = d68; - d70 = +Math_cos(+d70); - HEAPF32[i48 + 24 >> 2] = d70; - d69 = +HEAPF32[i48 + 28 >> 2]; - d72 = +HEAPF32[i48 + 32 >> 2]; - d71 = +(+HEAPF32[i48 + 44 >> 2] - (d70 * d69 - d68 * d72)); - d72 = +(+HEAPF32[i48 + 48 >> 2] - (d68 * d69 + d70 * d72)); - i66 = i48 + 12 | 0; - HEAPF32[i66 >> 2] = d71; - HEAPF32[i66 + 4 >> 2] = d72; - break; - } - if ((i45 & 2 | 0) == 0) { - i43 = i54 + 0 | 0; - i45 = i14 + 0 | 0; - i46 = i43 + 36 | 0; - do { - HEAP32[i43 >> 2] = HEAP32[i45 >> 2]; - i43 = i43 + 4 | 0; - i45 = i45 + 4 | 0; - } while ((i43 | 0) < (i46 | 0)); - d70 = +HEAPF32[i48 + 56 >> 2]; - d68 = +Math_sin(+d70); - HEAPF32[i48 + 20 >> 2] = d68; - d70 = +Math_cos(+d70); - HEAPF32[i48 + 24 >> 2] = d70; - d69 = +HEAPF32[i48 + 28 >> 2]; - d72 = +HEAPF32[i48 + 32 >> 2]; - d71 = +(+HEAPF32[i48 + 44 >> 2] - (d70 * d69 - d68 * d72)); - d72 = +(+HEAPF32[i48 + 48 >> 2] - (d68 * d69 + d70 * d72)); - i66 = i48 + 12 | 0; - HEAPF32[i66 >> 2] = d71; - HEAPF32[i66 + 4 >> 2] = d72; - break; - } - HEAP32[i53 >> 2] = i45 | 1; - i45 = HEAP32[i26 >> 2] | 0; - if ((i45 | 0) >= (HEAP32[i24 >> 2] | 0)) { - i4 = 74; - break L11; - } - HEAP32[i26 >> 2] = i45 + 1; - HEAP32[(HEAP32[i23 >> 2] | 0) + (i45 << 2) >> 2] = i52; - i45 = HEAPU16[i43 >> 1] | 0; - if ((i45 & 1 | 0) == 0) { - HEAP16[i43 >> 1] = i45 | 1; - if ((HEAP32[i48 >> 2] | 0) != 0 ? (i45 & 2 | 0) == 0 : 0) { - HEAP16[i43 >> 1] = i45 | 3; - HEAPF32[i48 + 144 >> 2] = 0.0; - } - i43 = HEAP32[i25 >> 2] | 0; - if ((i43 | 0) >= (HEAP32[i28 >> 2] | 0)) { - i4 = 80; - break L11; - } - HEAP32[i48 + 8 >> 2] = i43; - i66 = HEAP32[i25 >> 2] | 0; - HEAP32[(HEAP32[i29 >> 2] | 0) + (i66 << 2) >> 2] = i48; - HEAP32[i25 >> 2] = i66 + 1; - } - } - } - } while (0); - i51 = HEAP32[i51 + 12 >> 2] | 0; - } while ((i51 | 0) != 0); - } - } while (0); - if ((i44 | 0) >= 2) { - break; - } - i47 = HEAP32[i7 + (i44 << 2) >> 2] | 0; - i44 = i44 + 1 | 0; - } - d72 = (1.0 - d42) * +HEAPF32[i11 >> 2]; - HEAPF32[i9 >> 2] = d72; - HEAPF32[i21 >> 2] = 1.0 / d72; - HEAPF32[i20 >> 2] = 1.0; - HEAP32[i19 >> 2] = 20; - HEAP32[i17 >> 2] = HEAP32[i18 >> 2]; - HEAP8[i16] = 0; - __ZN8b2Island8SolveTOIERK10b2TimeStepii(i3, i9, HEAP32[i49 >> 2] | 0, HEAP32[i50 >> 2] | 0); - i44 = HEAP32[i25 >> 2] | 0; - if ((i44 | 0) > 0) { - i43 = 0; - do { - i45 = HEAP32[(HEAP32[i29 >> 2] | 0) + (i43 << 2) >> 2] | 0; - i66 = i45 + 4 | 0; - HEAP16[i66 >> 1] = HEAP16[i66 >> 1] & 65534; - if ((HEAP32[i45 >> 2] | 0) == 2) { - __ZN6b2Body19SynchronizeFixturesEv(i45); - i44 = HEAP32[i45 + 112 >> 2] | 0; - if ((i44 | 0) != 0) { - do { - i66 = (HEAP32[i44 + 4 >> 2] | 0) + 4 | 0; - HEAP32[i66 >> 2] = HEAP32[i66 >> 2] & -34; - i44 = HEAP32[i44 + 12 >> 2] | 0; - } while ((i44 | 0) != 0); - } - i44 = HEAP32[i25 >> 2] | 0; - } - i43 = i43 + 1 | 0; - } while ((i43 | 0) < (i44 | 0)); - } - __ZN16b2ContactManager15FindNewContactsEv(i10); - if ((HEAP8[i39] | 0) != 0) { - i4 = 92; - break; - } - } - if ((i4 | 0) == 16) { - ___assert_fail(2288, 2184, 641, 2344); - } else if ((i4 | 0) == 21) { - ___assert_fail(2360, 2376, 723, 2400); - } else if ((i4 | 0) == 25) { - ___assert_fail(2360, 2376, 723, 2400); - } else if ((i4 | 0) == 28) { - ___assert_fail(2360, 2184, 676, 2344); - } else if ((i4 | 0) == 36) { - HEAP8[i2] = 1; - __ZN8b2IslandD2Ev(i3); - STACKTOP = i1; - return; - } else if ((i4 | 0) == 38) { - ___assert_fail(2360, 2376, 723, 2400); - } else if ((i4 | 0) == 40) { - ___assert_fail(2360, 2376, 723, 2400); - } else if ((i4 | 0) == 48) { - ___assert_fail(2520, 2440, 54, 2472); - } else if ((i4 | 0) == 50) { - ___assert_fail(2520, 2440, 54, 2472); - } else if ((i4 | 0) == 52) { - ___assert_fail(2480, 2440, 62, 2472); - } else if ((i4 | 0) == 67) { - ___assert_fail(2360, 2376, 723, 2400); - } else if ((i4 | 0) == 74) { - ___assert_fail(2480, 2440, 62, 2472); - } else if ((i4 | 0) == 80) { - ___assert_fail(2520, 2440, 54, 2472); - } else if ((i4 | 0) == 92) { - HEAP8[i2] = 0; - __ZN8b2IslandD2Ev(i3); - STACKTOP = i1; - return; - } -} -function __ZNSt3__16__sortIRPFbRK6b2PairS3_EPS1_EEvT0_S8_T_(i5, i8, i1) { - i5 = i5 | 0; - i8 = i8 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i3; - L1 : while (1) { - i7 = i8; - i4 = i8 + -12 | 0; - L3 : while (1) { - i9 = i5; - i11 = i7 - i9 | 0; - switch ((i11 | 0) / 12 | 0 | 0) { - case 4: - { - i6 = 14; - break L1; - } - case 2: - { - i6 = 4; - break L1; - } - case 3: - { - i6 = 6; - break L1; - } - case 5: - { - i6 = 15; - break L1; - } - case 1: - case 0: - { - i6 = 67; - break L1; - } - default: - {} - } - if ((i11 | 0) < 372) { - i6 = 21; - break L1; - } - i12 = (i11 | 0) / 24 | 0; - i10 = i5 + (i12 * 12 | 0) | 0; - do { - if ((i11 | 0) > 11988) { - i14 = (i11 | 0) / 48 | 0; - i11 = i5 + (i14 * 12 | 0) | 0; - i14 = i5 + ((i14 + i12 | 0) * 12 | 0) | 0; - i12 = __ZNSt3__17__sort4IRPFbRK6b2PairS3_EPS1_EEjT0_S8_S8_S8_T_(i5, i11, i10, i14, i1) | 0; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i4, i14) | 0) { - HEAP32[i2 + 0 >> 2] = HEAP32[i14 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i14 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i14 + 8 >> 2]; - HEAP32[i14 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i14 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i14 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i13 = i12 + 1 | 0; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i14, i10) | 0) { - HEAP32[i2 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i14 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i14 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i14 + 8 >> 2]; - HEAP32[i14 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i14 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i14 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i13 = i12 + 2 | 0; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i10, i11) | 0) { - HEAP32[i2 + 0 >> 2] = HEAP32[i11 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i11 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i11 + 8 >> 2]; - HEAP32[i11 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i11 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i11 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i11, i5) | 0) { - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i11 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i11 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i11 + 8 >> 2]; - HEAP32[i11 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i11 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i11 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i12 = i12 + 4 | 0; - } else { - i12 = i12 + 3 | 0; - } - } else { - i12 = i13; - } - } else { - i12 = i13; - } - } - } else { - i15 = FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i10, i5) | 0; - i11 = FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i4, i10) | 0; - if (!i15) { - if (!i11) { - i12 = 0; - break; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i10, i5) | 0)) { - i12 = 1; - break; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i12 = 2; - break; - } - if (i11) { - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i12 = 1; - break; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i4, i10) | 0) { - HEAP32[i2 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i12 = 2; - } else { - i12 = 1; - } - } - } while (0); - do { - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i5, i10) | 0) { - i13 = i4; - } else { - i13 = i4; - while (1) { - i13 = i13 + -12 | 0; - if ((i5 | 0) == (i13 | 0)) { - break; - } - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i13, i10) | 0) { - i6 = 50; - break; - } - } - if ((i6 | 0) == 50) { - i6 = 0; - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i13 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i13 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i13 + 8 >> 2]; - HEAP32[i13 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i13 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i13 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i12 = i12 + 1 | 0; - break; - } - i10 = i5 + 12 | 0; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i5, i4) | 0)) { - if ((i10 | 0) == (i4 | 0)) { - i6 = 67; - break L1; - } - while (1) { - i9 = i10 + 12 | 0; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i5, i10) | 0) { - break; - } - if ((i9 | 0) == (i4 | 0)) { - i6 = 67; - break L1; - } else { - i10 = i9; - } - } - HEAP32[i2 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i10 = i9; - } - if ((i10 | 0) == (i4 | 0)) { - i6 = 67; - break L1; - } else { - i9 = i4; - } - while (1) { - while (1) { - i11 = i10 + 12 | 0; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i5, i10) | 0) { - break; - } else { - i10 = i11; - } - } - do { - i9 = i9 + -12 | 0; - } while (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i5, i9) | 0); - if (!(i10 >>> 0 < i9 >>> 0)) { - i5 = i10; - continue L3; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i9 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i9 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i9 + 8 >> 2]; - HEAP32[i9 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i9 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i9 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i10 = i11; - } - } - } while (0); - i11 = i5 + 12 | 0; - L47 : do { - if (i11 >>> 0 < i13 >>> 0) { - while (1) { - i15 = i11; - while (1) { - i11 = i15 + 12 | 0; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i15, i10) | 0) { - i15 = i11; - } else { - i14 = i13; - break; - } - } - do { - i14 = i14 + -12 | 0; - } while (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i14, i10) | 0)); - if (i15 >>> 0 > i14 >>> 0) { - i11 = i15; - break L47; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i15 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i15 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i15 + 8 >> 2]; - HEAP32[i15 + 0 >> 2] = HEAP32[i14 + 0 >> 2]; - HEAP32[i15 + 4 >> 2] = HEAP32[i14 + 4 >> 2]; - HEAP32[i15 + 8 >> 2] = HEAP32[i14 + 8 >> 2]; - HEAP32[i14 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i14 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i14 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i13 = i14; - i10 = (i10 | 0) == (i15 | 0) ? i14 : i10; - i12 = i12 + 1 | 0; - } - } - } while (0); - if ((i11 | 0) != (i10 | 0) ? FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i10, i11) | 0 : 0) { - HEAP32[i2 + 0 >> 2] = HEAP32[i11 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i11 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i11 + 8 >> 2]; - HEAP32[i11 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i11 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i11 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i12 = i12 + 1 | 0; - } - if ((i12 | 0) == 0) { - i12 = __ZNSt3__127__insertion_sort_incompleteIRPFbRK6b2PairS3_EPS1_EEbT0_S8_T_(i5, i11, i1) | 0; - i10 = i11 + 12 | 0; - if (__ZNSt3__127__insertion_sort_incompleteIRPFbRK6b2PairS3_EPS1_EEbT0_S8_T_(i10, i8, i1) | 0) { - i6 = 62; - break; - } - if (i12) { - i5 = i10; - continue; - } - } - i15 = i11; - if ((i15 - i9 | 0) >= (i7 - i15 | 0)) { - i6 = 66; - break; - } - __ZNSt3__16__sortIRPFbRK6b2PairS3_EPS1_EEvT0_S8_T_(i5, i11, i1); - i5 = i11 + 12 | 0; - } - if ((i6 | 0) == 62) { - i6 = 0; - if (i12) { - i6 = 67; - break; - } else { - i8 = i11; - continue; - } - } else if ((i6 | 0) == 66) { - i6 = 0; - __ZNSt3__16__sortIRPFbRK6b2PairS3_EPS1_EEvT0_S8_T_(i11 + 12 | 0, i8, i1); - i8 = i11; - continue; - } - } - if ((i6 | 0) == 4) { - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i4, i5) | 0)) { - STACKTOP = i3; - return; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - STACKTOP = i3; - return; - } else if ((i6 | 0) == 6) { - i6 = i5 + 12 | 0; - i15 = FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i6, i5) | 0; - i7 = FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i4, i6) | 0; - if (!i15) { - if (!i7) { - STACKTOP = i3; - return; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i6, i5) | 0)) { - STACKTOP = i3; - return; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - STACKTOP = i3; - return; - } - if (i7) { - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - STACKTOP = i3; - return; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i4, i6) | 0)) { - STACKTOP = i3; - return; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - STACKTOP = i3; - return; - } else if ((i6 | 0) == 14) { - __ZNSt3__17__sort4IRPFbRK6b2PairS3_EPS1_EEjT0_S8_S8_S8_T_(i5, i5 + 12 | 0, i5 + 24 | 0, i4, i1) | 0; - STACKTOP = i3; - return; - } else if ((i6 | 0) == 15) { - i6 = i5 + 12 | 0; - i7 = i5 + 24 | 0; - i8 = i5 + 36 | 0; - __ZNSt3__17__sort4IRPFbRK6b2PairS3_EPS1_EEjT0_S8_S8_S8_T_(i5, i6, i7, i8, i1) | 0; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i4, i8) | 0)) { - STACKTOP = i3; - return; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i8 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i8 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i8 + 8 >> 2]; - HEAP32[i8 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i8 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i8 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i8, i7) | 0)) { - STACKTOP = i3; - return; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i8 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i8 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i8 + 8 >> 2]; - HEAP32[i8 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i8 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i8 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i7, i6) | 0)) { - STACKTOP = i3; - return; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i6, i5) | 0)) { - STACKTOP = i3; - return; - } - HEAP32[i2 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - STACKTOP = i3; - return; - } else if ((i6 | 0) == 21) { - __ZNSt3__118__insertion_sort_3IRPFbRK6b2PairS3_EPS1_EEvT0_S8_T_(i5, i8, i1); - STACKTOP = i3; - return; - } else if ((i6 | 0) == 67) { - STACKTOP = i3; - return; - } -} -function _free(i7) { - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0; - i1 = STACKTOP; - if ((i7 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = i7 + -8 | 0; - i16 = HEAP32[7176 >> 2] | 0; - if (i15 >>> 0 < i16 >>> 0) { - _abort(); - } - i13 = HEAP32[i7 + -4 >> 2] | 0; - i12 = i13 & 3; - if ((i12 | 0) == 1) { - _abort(); - } - i8 = i13 & -8; - i6 = i7 + (i8 + -8) | 0; - do { - if ((i13 & 1 | 0) == 0) { - i19 = HEAP32[i15 >> 2] | 0; - if ((i12 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = -8 - i19 | 0; - i13 = i7 + i15 | 0; - i12 = i19 + i8 | 0; - if (i13 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((i13 | 0) == (HEAP32[7180 >> 2] | 0)) { - i2 = i7 + (i8 + -4) | 0; - if ((HEAP32[i2 >> 2] & 3 | 0) != 3) { - i2 = i13; - i11 = i12; - break; - } - HEAP32[7168 >> 2] = i12; - HEAP32[i2 >> 2] = HEAP32[i2 >> 2] & -2; - HEAP32[i7 + (i15 + 4) >> 2] = i12 | 1; - HEAP32[i6 >> 2] = i12; - STACKTOP = i1; - return; - } - i18 = i19 >>> 3; - if (i19 >>> 0 < 256) { - i2 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - i11 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - i14 = 7200 + (i18 << 1 << 2) | 0; - if ((i2 | 0) != (i14 | 0)) { - if (i2 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((HEAP32[i2 + 12 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - } - if ((i11 | 0) == (i2 | 0)) { - HEAP32[1790] = HEAP32[1790] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - if ((i11 | 0) != (i14 | 0)) { - if (i11 >>> 0 < i16 >>> 0) { - _abort(); - } - i14 = i11 + 8 | 0; - if ((HEAP32[i14 >> 2] | 0) == (i13 | 0)) { - i17 = i14; - } else { - _abort(); - } - } else { - i17 = i11 + 8 | 0; - } - HEAP32[i2 + 12 >> 2] = i11; - HEAP32[i17 >> 2] = i2; - i2 = i13; - i11 = i12; - break; - } - i17 = HEAP32[i7 + (i15 + 24) >> 2] | 0; - i18 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - do { - if ((i18 | 0) == (i13 | 0)) { - i19 = i7 + (i15 + 20) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i19 = i7 + (i15 + 16) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i14 = 0; - break; - } - } - while (1) { - i21 = i18 + 20 | 0; - i20 = HEAP32[i21 >> 2] | 0; - if ((i20 | 0) != 0) { - i18 = i20; - i19 = i21; - continue; - } - i20 = i18 + 16 | 0; - i21 = HEAP32[i20 >> 2] | 0; - if ((i21 | 0) == 0) { - break; - } else { - i18 = i21; - i19 = i20; - } - } - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } else { - HEAP32[i19 >> 2] = 0; - i14 = i18; - break; - } - } else { - i19 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } - i16 = i19 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - i20 = i18 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i18; - HEAP32[i20 >> 2] = i19; - i14 = i18; - break; - } else { - _abort(); - } - } - } while (0); - if ((i17 | 0) != 0) { - i18 = HEAP32[i7 + (i15 + 28) >> 2] | 0; - i16 = 7464 + (i18 << 2) | 0; - if ((i13 | 0) == (HEAP32[i16 >> 2] | 0)) { - HEAP32[i16 >> 2] = i14; - if ((i14 | 0) == 0) { - HEAP32[7164 >> 2] = HEAP32[7164 >> 2] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - } else { - if (i17 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i17 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i14; - } else { - HEAP32[i17 + 20 >> 2] = i14; - } - if ((i14 | 0) == 0) { - i2 = i13; - i11 = i12; - break; - } - } - if (i14 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i14 + 24 >> 2] = i17; - i16 = HEAP32[i7 + (i15 + 16) >> 2] | 0; - do { - if ((i16 | 0) != 0) { - if (i16 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 16 >> 2] = i16; - HEAP32[i16 + 24 >> 2] = i14; - break; - } - } - } while (0); - i15 = HEAP32[i7 + (i15 + 20) >> 2] | 0; - if ((i15 | 0) != 0) { - if (i15 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 20 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i14; - i2 = i13; - i11 = i12; - break; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i15; - i11 = i8; - } - } while (0); - if (!(i2 >>> 0 < i6 >>> 0)) { - _abort(); - } - i12 = i7 + (i8 + -4) | 0; - i13 = HEAP32[i12 >> 2] | 0; - if ((i13 & 1 | 0) == 0) { - _abort(); - } - if ((i13 & 2 | 0) == 0) { - if ((i6 | 0) == (HEAP32[7184 >> 2] | 0)) { - i21 = (HEAP32[7172 >> 2] | 0) + i11 | 0; - HEAP32[7172 >> 2] = i21; - HEAP32[7184 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - if ((i2 | 0) != (HEAP32[7180 >> 2] | 0)) { - STACKTOP = i1; - return; - } - HEAP32[7180 >> 2] = 0; - HEAP32[7168 >> 2] = 0; - STACKTOP = i1; - return; - } - if ((i6 | 0) == (HEAP32[7180 >> 2] | 0)) { - i21 = (HEAP32[7168 >> 2] | 0) + i11 | 0; - HEAP32[7168 >> 2] = i21; - HEAP32[7180 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - HEAP32[i2 + i21 >> 2] = i21; - STACKTOP = i1; - return; - } - i11 = (i13 & -8) + i11 | 0; - i12 = i13 >>> 3; - do { - if (!(i13 >>> 0 < 256)) { - i10 = HEAP32[i7 + (i8 + 16) >> 2] | 0; - i15 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - do { - if ((i15 | 0) == (i6 | 0)) { - i13 = i7 + (i8 + 12) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i13 = i7 + (i8 + 8) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i9 = 0; - break; - } - } - while (1) { - i14 = i12 + 20 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) != 0) { - i12 = i15; - i13 = i14; - continue; - } - i14 = i12 + 16 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) == 0) { - break; - } else { - i12 = i15; - i13 = i14; - } - } - if (i13 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i13 >> 2] = 0; - i9 = i12; - break; - } - } else { - i13 = HEAP32[i7 + i8 >> 2] | 0; - if (i13 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i14 = i13 + 12 | 0; - if ((HEAP32[i14 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - i12 = i15 + 8 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i14 >> 2] = i15; - HEAP32[i12 >> 2] = i13; - i9 = i15; - break; - } else { - _abort(); - } - } - } while (0); - if ((i10 | 0) != 0) { - i12 = HEAP32[i7 + (i8 + 20) >> 2] | 0; - i13 = 7464 + (i12 << 2) | 0; - if ((i6 | 0) == (HEAP32[i13 >> 2] | 0)) { - HEAP32[i13 >> 2] = i9; - if ((i9 | 0) == 0) { - HEAP32[7164 >> 2] = HEAP32[7164 >> 2] & ~(1 << i12); - break; - } - } else { - if (i10 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i12 = i10 + 16 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i12 >> 2] = i9; - } else { - HEAP32[i10 + 20 >> 2] = i9; - } - if ((i9 | 0) == 0) { - break; - } - } - if (i9 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i9 + 24 >> 2] = i10; - i6 = HEAP32[i7 + (i8 + 8) >> 2] | 0; - do { - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 16 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } while (0); - i6 = HEAP32[i7 + (i8 + 12) >> 2] | 0; - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 20 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } - } else { - i9 = HEAP32[i7 + i8 >> 2] | 0; - i7 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - i8 = 7200 + (i12 << 1 << 2) | 0; - if ((i9 | 0) != (i8 | 0)) { - if (i9 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i9 + 12 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - } - if ((i7 | 0) == (i9 | 0)) { - HEAP32[1790] = HEAP32[1790] & ~(1 << i12); - break; - } - if ((i7 | 0) != (i8 | 0)) { - if (i7 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i7 + 8 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) { - i10 = i8; - } else { - _abort(); - } - } else { - i10 = i7 + 8 | 0; - } - HEAP32[i9 + 12 >> 2] = i7; - HEAP32[i10 >> 2] = i9; - } - } while (0); - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - if ((i2 | 0) == (HEAP32[7180 >> 2] | 0)) { - HEAP32[7168 >> 2] = i11; - STACKTOP = i1; - return; - } - } else { - HEAP32[i12 >> 2] = i13 & -2; - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - } - i6 = i11 >>> 3; - if (i11 >>> 0 < 256) { - i7 = i6 << 1; - i3 = 7200 + (i7 << 2) | 0; - i8 = HEAP32[1790] | 0; - i6 = 1 << i6; - if ((i8 & i6 | 0) != 0) { - i6 = 7200 + (i7 + 2 << 2) | 0; - i7 = HEAP32[i6 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - i4 = i6; - i5 = i7; - } - } else { - HEAP32[1790] = i8 | i6; - i4 = 7200 + (i7 + 2 << 2) | 0; - i5 = i3; - } - HEAP32[i4 >> 2] = i2; - HEAP32[i5 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i3; - STACKTOP = i1; - return; - } - i4 = i11 >>> 8; - if ((i4 | 0) != 0) { - if (i11 >>> 0 > 16777215) { - i4 = 31; - } else { - i20 = (i4 + 1048320 | 0) >>> 16 & 8; - i21 = i4 << i20; - i19 = (i21 + 520192 | 0) >>> 16 & 4; - i21 = i21 << i19; - i4 = (i21 + 245760 | 0) >>> 16 & 2; - i4 = 14 - (i19 | i20 | i4) + (i21 << i4 >>> 15) | 0; - i4 = i11 >>> (i4 + 7 | 0) & 1 | i4 << 1; - } - } else { - i4 = 0; - } - i5 = 7464 + (i4 << 2) | 0; - HEAP32[i2 + 28 >> 2] = i4; - HEAP32[i2 + 20 >> 2] = 0; - HEAP32[i2 + 16 >> 2] = 0; - i7 = HEAP32[7164 >> 2] | 0; - i6 = 1 << i4; - L199 : do { - if ((i7 & i6 | 0) != 0) { - i5 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) == 31) { - i4 = 0; - } else { - i4 = 25 - (i4 >>> 1) | 0; - } - L204 : do { - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) != (i11 | 0)) { - i4 = i11 << i4; - i7 = i5; - while (1) { - i6 = i7 + (i4 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i11 | 0)) { - i3 = i5; - break L204; - } else { - i4 = i4 << 1; - i7 = i5; - } - } - if (i6 >>> 0 < (HEAP32[7176 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i7; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - break L199; - } - } else { - i3 = i5; - } - } while (0); - i5 = i3 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i6 = HEAP32[7176 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - if (i4 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i4 + 12 >> 2] = i2; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i4; - HEAP32[i2 + 12 >> 2] = i3; - HEAP32[i2 + 24 >> 2] = 0; - break; - } - } else { - HEAP32[7164 >> 2] = i7 | i6; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - } - } while (0); - i21 = (HEAP32[7192 >> 2] | 0) + -1 | 0; - HEAP32[7192 >> 2] = i21; - if ((i21 | 0) == 0) { - i2 = 7616 | 0; - } else { - STACKTOP = i1; - return; - } - while (1) { - i2 = HEAP32[i2 >> 2] | 0; - if ((i2 | 0) == 0) { - break; - } else { - i2 = i2 + 8 | 0; - } - } - HEAP32[7192 >> 2] = -1; - STACKTOP = i1; - return; -} -function __ZNSt3__127__insertion_sort_incompleteIRPFbRK6b2PairS3_EPS1_EEbT0_S8_T_(i3, i4, i2) { - i3 = i3 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - var i1 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i7 = i1 + 12 | 0; - i6 = i1; - switch ((i4 - i3 | 0) / 12 | 0 | 0) { - case 5: - { - i6 = i3 + 12 | 0; - i8 = i3 + 24 | 0; - i5 = i3 + 36 | 0; - i4 = i4 + -12 | 0; - __ZNSt3__17__sort4IRPFbRK6b2PairS3_EPS1_EEjT0_S8_S8_S8_T_(i3, i6, i8, i5, i2) | 0; - if (!(FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i4, i5) | 0)) { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i5, i8) | 0)) { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i8 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i8 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i8 + 8 >> 2]; - HEAP32[i8 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i8 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i8 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i8, i6) | 0)) { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i8 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i8 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i8 + 8 >> 2]; - HEAP32[i8 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i8 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i8 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i6, i3) | 0)) { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i3 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - case 4: - { - __ZNSt3__17__sort4IRPFbRK6b2PairS3_EPS1_EEjT0_S8_S8_S8_T_(i3, i3 + 12 | 0, i3 + 24 | 0, i4 + -12 | 0, i2) | 0; - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - case 3: - { - i5 = i3 + 12 | 0; - i4 = i4 + -12 | 0; - i10 = FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i5, i3) | 0; - i6 = FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i4, i5) | 0; - if (!i10) { - if (!i6) { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i5, i3) | 0)) { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i3 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - if (i6) { - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i3 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i3 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i4, i5) | 0)) { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - case 2: - { - i4 = i4 + -12 | 0; - if (!(FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i4, i3) | 0)) { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i3 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - case 1: - case 0: - { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - default: - { - i9 = i3 + 24 | 0; - i10 = i3 + 12 | 0; - i11 = FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i10, i3) | 0; - i8 = FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i9, i10) | 0; - do { - if (i11) { - if (i8) { - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i3 + 0 >> 2] = HEAP32[i9 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i9 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i9 + 8 >> 2]; - HEAP32[i9 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i9 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i9 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - break; - } - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i3 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - if (FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i9, i10) | 0) { - HEAP32[i7 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i9 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i9 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i9 + 8 >> 2]; - HEAP32[i9 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i9 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i9 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - } - } else { - if (i8) { - HEAP32[i7 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i9 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i9 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i9 + 8 >> 2]; - HEAP32[i9 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i9 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i9 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - if (FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i10, i3) | 0) { - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i3 + 0 >> 2] = HEAP32[i10 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i10 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i10 + 8 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - } - } - } - } while (0); - i7 = i3 + 36 | 0; - if ((i7 | 0) == (i4 | 0)) { - i11 = 1; - STACKTOP = i1; - return i11 | 0; - } - i8 = 0; - while (1) { - if (FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i7, i9) | 0) { - HEAP32[i6 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i10 = i7; - while (1) { - HEAP32[i10 + 0 >> 2] = HEAP32[i9 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i9 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i9 + 8 >> 2]; - if ((i9 | 0) == (i3 | 0)) { - break; - } - i10 = i9 + -12 | 0; - if (FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i6, i10) | 0) { - i11 = i9; - i9 = i10; - i10 = i11; - } else { - break; - } - } - HEAP32[i9 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i9 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i9 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - i8 = i8 + 1 | 0; - if ((i8 | 0) == 8) { - break; - } - } - i9 = i7 + 12 | 0; - if ((i9 | 0) == (i4 | 0)) { - i2 = 1; - i5 = 35; - break; - } else { - i11 = i7; - i7 = i9; - i9 = i11; - } - } - if ((i5 | 0) == 35) { - STACKTOP = i1; - return i2 | 0; - } - i11 = (i7 + 12 | 0) == (i4 | 0); - STACKTOP = i1; - return i11 | 0; - } - } - return 0; -} -function __ZN13b2DynamicTree7BalanceEi(i11, i6) { - i11 = i11 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, d19 = 0.0, i20 = 0, i21 = 0, d22 = 0.0, d23 = 0.0, d24 = 0.0, d25 = 0.0; - i1 = STACKTOP; - if ((i6 | 0) == -1) { - ___assert_fail(3216, 2944, 382, 3232); - } - i5 = HEAP32[i11 + 4 >> 2] | 0; - i13 = i5 + (i6 * 36 | 0) | 0; - i18 = i5 + (i6 * 36 | 0) + 24 | 0; - i8 = HEAP32[i18 >> 2] | 0; - if ((i8 | 0) == -1) { - i21 = i6; - STACKTOP = i1; - return i21 | 0; - } - i2 = i5 + (i6 * 36 | 0) + 32 | 0; - if ((HEAP32[i2 >> 2] | 0) < 2) { - i21 = i6; - STACKTOP = i1; - return i21 | 0; - } - i20 = i5 + (i6 * 36 | 0) + 28 | 0; - i7 = HEAP32[i20 >> 2] | 0; - if (!((i8 | 0) > -1)) { - ___assert_fail(3240, 2944, 392, 3232); - } - i12 = HEAP32[i11 + 12 >> 2] | 0; - if ((i8 | 0) >= (i12 | 0)) { - ___assert_fail(3240, 2944, 392, 3232); - } - if (!((i7 | 0) > -1 & (i7 | 0) < (i12 | 0))) { - ___assert_fail(3272, 2944, 393, 3232); - } - i9 = i5 + (i8 * 36 | 0) | 0; - i10 = i5 + (i7 * 36 | 0) | 0; - i3 = i5 + (i7 * 36 | 0) + 32 | 0; - i4 = i5 + (i8 * 36 | 0) + 32 | 0; - i14 = (HEAP32[i3 >> 2] | 0) - (HEAP32[i4 >> 2] | 0) | 0; - if ((i14 | 0) > 1) { - i21 = i5 + (i7 * 36 | 0) + 24 | 0; - i14 = HEAP32[i21 >> 2] | 0; - i18 = i5 + (i7 * 36 | 0) + 28 | 0; - i15 = HEAP32[i18 >> 2] | 0; - i16 = i5 + (i14 * 36 | 0) | 0; - i17 = i5 + (i15 * 36 | 0) | 0; - if (!((i14 | 0) > -1 & (i14 | 0) < (i12 | 0))) { - ___assert_fail(3304, 2944, 407, 3232); - } - if (!((i15 | 0) > -1 & (i15 | 0) < (i12 | 0))) { - ___assert_fail(3336, 2944, 408, 3232); - } - HEAP32[i21 >> 2] = i6; - i21 = i5 + (i6 * 36 | 0) + 20 | 0; - i12 = i5 + (i7 * 36 | 0) + 20 | 0; - HEAP32[i12 >> 2] = HEAP32[i21 >> 2]; - HEAP32[i21 >> 2] = i7; - i12 = HEAP32[i12 >> 2] | 0; - do { - if (!((i12 | 0) == -1)) { - i11 = i5 + (i12 * 36 | 0) + 24 | 0; - if ((HEAP32[i11 >> 2] | 0) == (i6 | 0)) { - HEAP32[i11 >> 2] = i7; - break; - } - i11 = i5 + (i12 * 36 | 0) + 28 | 0; - if ((HEAP32[i11 >> 2] | 0) == (i6 | 0)) { - HEAP32[i11 >> 2] = i7; - break; - } else { - ___assert_fail(3368, 2944, 424, 3232); - } - } else { - HEAP32[i11 >> 2] = i7; - } - } while (0); - i11 = i5 + (i14 * 36 | 0) + 32 | 0; - i12 = i5 + (i15 * 36 | 0) + 32 | 0; - if ((HEAP32[i11 >> 2] | 0) > (HEAP32[i12 >> 2] | 0)) { - HEAP32[i18 >> 2] = i14; - HEAP32[i20 >> 2] = i15; - HEAP32[i5 + (i15 * 36 | 0) + 20 >> 2] = i6; - d19 = +HEAPF32[i9 >> 2]; - d22 = +HEAPF32[i17 >> 2]; - d19 = d19 < d22 ? d19 : d22; - d23 = +HEAPF32[i5 + (i8 * 36 | 0) + 4 >> 2]; - d22 = +HEAPF32[i5 + (i15 * 36 | 0) + 4 >> 2]; - d24 = +d19; - d23 = +(d23 < d22 ? d23 : d22); - i21 = i13; - HEAPF32[i21 >> 2] = d24; - HEAPF32[i21 + 4 >> 2] = d23; - d23 = +HEAPF32[i5 + (i8 * 36 | 0) + 8 >> 2]; - d24 = +HEAPF32[i5 + (i15 * 36 | 0) + 8 >> 2]; - d22 = +HEAPF32[i5 + (i8 * 36 | 0) + 12 >> 2]; - d25 = +HEAPF32[i5 + (i15 * 36 | 0) + 12 >> 2]; - d23 = +(d23 > d24 ? d23 : d24); - d24 = +(d22 > d25 ? d22 : d25); - i21 = i5 + (i6 * 36 | 0) + 8 | 0; - HEAPF32[i21 >> 2] = d23; - HEAPF32[i21 + 4 >> 2] = d24; - d24 = +HEAPF32[i16 >> 2]; - d22 = +HEAPF32[i5 + (i6 * 36 | 0) + 4 >> 2]; - d23 = +HEAPF32[i5 + (i14 * 36 | 0) + 4 >> 2]; - d19 = +(d19 < d24 ? d19 : d24); - d22 = +(d22 < d23 ? d22 : d23); - i21 = i10; - HEAPF32[i21 >> 2] = d19; - HEAPF32[i21 + 4 >> 2] = d22; - d22 = +HEAPF32[i5 + (i6 * 36 | 0) + 8 >> 2]; - d19 = +HEAPF32[i5 + (i14 * 36 | 0) + 8 >> 2]; - d23 = +HEAPF32[i5 + (i6 * 36 | 0) + 12 >> 2]; - d24 = +HEAPF32[i5 + (i14 * 36 | 0) + 12 >> 2]; - d19 = +(d22 > d19 ? d22 : d19); - d25 = +(d23 > d24 ? d23 : d24); - i5 = i5 + (i7 * 36 | 0) + 8 | 0; - HEAPF32[i5 >> 2] = d19; - HEAPF32[i5 + 4 >> 2] = d25; - i4 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[i12 >> 2] | 0; - i4 = ((i4 | 0) > (i5 | 0) ? i4 : i5) + 1 | 0; - HEAP32[i2 >> 2] = i4; - i2 = HEAP32[i11 >> 2] | 0; - i2 = (i4 | 0) > (i2 | 0) ? i4 : i2; - } else { - HEAP32[i18 >> 2] = i15; - HEAP32[i20 >> 2] = i14; - HEAP32[i5 + (i14 * 36 | 0) + 20 >> 2] = i6; - d19 = +HEAPF32[i9 >> 2]; - d22 = +HEAPF32[i16 >> 2]; - d19 = d19 < d22 ? d19 : d22; - d23 = +HEAPF32[i5 + (i8 * 36 | 0) + 4 >> 2]; - d24 = +HEAPF32[i5 + (i14 * 36 | 0) + 4 >> 2]; - d22 = +d19; - d23 = +(d23 < d24 ? d23 : d24); - i21 = i13; - HEAPF32[i21 >> 2] = d22; - HEAPF32[i21 + 4 >> 2] = d23; - d23 = +HEAPF32[i5 + (i8 * 36 | 0) + 8 >> 2]; - d24 = +HEAPF32[i5 + (i14 * 36 | 0) + 8 >> 2]; - d22 = +HEAPF32[i5 + (i8 * 36 | 0) + 12 >> 2]; - d25 = +HEAPF32[i5 + (i14 * 36 | 0) + 12 >> 2]; - d23 = +(d23 > d24 ? d23 : d24); - d24 = +(d22 > d25 ? d22 : d25); - i21 = i5 + (i6 * 36 | 0) + 8 | 0; - HEAPF32[i21 >> 2] = d23; - HEAPF32[i21 + 4 >> 2] = d24; - d24 = +HEAPF32[i17 >> 2]; - d22 = +HEAPF32[i5 + (i6 * 36 | 0) + 4 >> 2]; - d23 = +HEAPF32[i5 + (i15 * 36 | 0) + 4 >> 2]; - d19 = +(d19 < d24 ? d19 : d24); - d23 = +(d22 < d23 ? d22 : d23); - i21 = i10; - HEAPF32[i21 >> 2] = d19; - HEAPF32[i21 + 4 >> 2] = d23; - d23 = +HEAPF32[i5 + (i6 * 36 | 0) + 8 >> 2]; - d19 = +HEAPF32[i5 + (i15 * 36 | 0) + 8 >> 2]; - d22 = +HEAPF32[i5 + (i6 * 36 | 0) + 12 >> 2]; - d24 = +HEAPF32[i5 + (i15 * 36 | 0) + 12 >> 2]; - d19 = +(d23 > d19 ? d23 : d19); - d25 = +(d22 > d24 ? d22 : d24); - i5 = i5 + (i7 * 36 | 0) + 8 | 0; - HEAPF32[i5 >> 2] = d19; - HEAPF32[i5 + 4 >> 2] = d25; - i4 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[i11 >> 2] | 0; - i4 = ((i4 | 0) > (i5 | 0) ? i4 : i5) + 1 | 0; - HEAP32[i2 >> 2] = i4; - i2 = HEAP32[i12 >> 2] | 0; - i2 = (i4 | 0) > (i2 | 0) ? i4 : i2; - } - HEAP32[i3 >> 2] = i2 + 1; - i21 = i7; - STACKTOP = i1; - return i21 | 0; - } - if (!((i14 | 0) < -1)) { - i21 = i6; - STACKTOP = i1; - return i21 | 0; - } - i21 = i5 + (i8 * 36 | 0) + 24 | 0; - i14 = HEAP32[i21 >> 2] | 0; - i20 = i5 + (i8 * 36 | 0) + 28 | 0; - i15 = HEAP32[i20 >> 2] | 0; - i17 = i5 + (i14 * 36 | 0) | 0; - i16 = i5 + (i15 * 36 | 0) | 0; - if (!((i14 | 0) > -1 & (i14 | 0) < (i12 | 0))) { - ___assert_fail(3400, 2944, 467, 3232); - } - if (!((i15 | 0) > -1 & (i15 | 0) < (i12 | 0))) { - ___assert_fail(3432, 2944, 468, 3232); - } - HEAP32[i21 >> 2] = i6; - i21 = i5 + (i6 * 36 | 0) + 20 | 0; - i12 = i5 + (i8 * 36 | 0) + 20 | 0; - HEAP32[i12 >> 2] = HEAP32[i21 >> 2]; - HEAP32[i21 >> 2] = i8; - i12 = HEAP32[i12 >> 2] | 0; - do { - if (!((i12 | 0) == -1)) { - i11 = i5 + (i12 * 36 | 0) + 24 | 0; - if ((HEAP32[i11 >> 2] | 0) == (i6 | 0)) { - HEAP32[i11 >> 2] = i8; - break; - } - i11 = i5 + (i12 * 36 | 0) + 28 | 0; - if ((HEAP32[i11 >> 2] | 0) == (i6 | 0)) { - HEAP32[i11 >> 2] = i8; - break; - } else { - ___assert_fail(3464, 2944, 484, 3232); - } - } else { - HEAP32[i11 >> 2] = i8; - } - } while (0); - i12 = i5 + (i14 * 36 | 0) + 32 | 0; - i11 = i5 + (i15 * 36 | 0) + 32 | 0; - if ((HEAP32[i12 >> 2] | 0) > (HEAP32[i11 >> 2] | 0)) { - HEAP32[i20 >> 2] = i14; - HEAP32[i18 >> 2] = i15; - HEAP32[i5 + (i15 * 36 | 0) + 20 >> 2] = i6; - d19 = +HEAPF32[i10 >> 2]; - d22 = +HEAPF32[i16 >> 2]; - d19 = d19 < d22 ? d19 : d22; - d23 = +HEAPF32[i5 + (i7 * 36 | 0) + 4 >> 2]; - d22 = +HEAPF32[i5 + (i15 * 36 | 0) + 4 >> 2]; - d24 = +d19; - d23 = +(d23 < d22 ? d23 : d22); - i21 = i13; - HEAPF32[i21 >> 2] = d24; - HEAPF32[i21 + 4 >> 2] = d23; - d23 = +HEAPF32[i5 + (i7 * 36 | 0) + 8 >> 2]; - d22 = +HEAPF32[i5 + (i15 * 36 | 0) + 8 >> 2]; - d24 = +HEAPF32[i5 + (i7 * 36 | 0) + 12 >> 2]; - d25 = +HEAPF32[i5 + (i15 * 36 | 0) + 12 >> 2]; - d22 = +(d23 > d22 ? d23 : d22); - d24 = +(d24 > d25 ? d24 : d25); - i21 = i5 + (i6 * 36 | 0) + 8 | 0; - HEAPF32[i21 >> 2] = d22; - HEAPF32[i21 + 4 >> 2] = d24; - d24 = +HEAPF32[i17 >> 2]; - d23 = +HEAPF32[i5 + (i6 * 36 | 0) + 4 >> 2]; - d22 = +HEAPF32[i5 + (i14 * 36 | 0) + 4 >> 2]; - d19 = +(d19 < d24 ? d19 : d24); - d22 = +(d23 < d22 ? d23 : d22); - i21 = i9; - HEAPF32[i21 >> 2] = d19; - HEAPF32[i21 + 4 >> 2] = d22; - d22 = +HEAPF32[i5 + (i6 * 36 | 0) + 8 >> 2]; - d23 = +HEAPF32[i5 + (i14 * 36 | 0) + 8 >> 2]; - d19 = +HEAPF32[i5 + (i6 * 36 | 0) + 12 >> 2]; - d24 = +HEAPF32[i5 + (i14 * 36 | 0) + 12 >> 2]; - d22 = +(d22 > d23 ? d22 : d23); - d25 = +(d19 > d24 ? d19 : d24); - i5 = i5 + (i8 * 36 | 0) + 8 | 0; - HEAPF32[i5 >> 2] = d22; - HEAPF32[i5 + 4 >> 2] = d25; - i3 = HEAP32[i3 >> 2] | 0; - i5 = HEAP32[i11 >> 2] | 0; - i3 = ((i3 | 0) > (i5 | 0) ? i3 : i5) + 1 | 0; - HEAP32[i2 >> 2] = i3; - i2 = HEAP32[i12 >> 2] | 0; - i2 = (i3 | 0) > (i2 | 0) ? i3 : i2; - } else { - HEAP32[i20 >> 2] = i15; - HEAP32[i18 >> 2] = i14; - HEAP32[i5 + (i14 * 36 | 0) + 20 >> 2] = i6; - d19 = +HEAPF32[i10 >> 2]; - d22 = +HEAPF32[i17 >> 2]; - d19 = d19 < d22 ? d19 : d22; - d23 = +HEAPF32[i5 + (i7 * 36 | 0) + 4 >> 2]; - d24 = +HEAPF32[i5 + (i14 * 36 | 0) + 4 >> 2]; - d22 = +d19; - d24 = +(d23 < d24 ? d23 : d24); - i21 = i13; - HEAPF32[i21 >> 2] = d22; - HEAPF32[i21 + 4 >> 2] = d24; - d24 = +HEAPF32[i5 + (i7 * 36 | 0) + 8 >> 2]; - d23 = +HEAPF32[i5 + (i14 * 36 | 0) + 8 >> 2]; - d22 = +HEAPF32[i5 + (i7 * 36 | 0) + 12 >> 2]; - d25 = +HEAPF32[i5 + (i14 * 36 | 0) + 12 >> 2]; - d23 = +(d24 > d23 ? d24 : d23); - d24 = +(d22 > d25 ? d22 : d25); - i21 = i5 + (i6 * 36 | 0) + 8 | 0; - HEAPF32[i21 >> 2] = d23; - HEAPF32[i21 + 4 >> 2] = d24; - d24 = +HEAPF32[i16 >> 2]; - d23 = +HEAPF32[i5 + (i6 * 36 | 0) + 4 >> 2]; - d22 = +HEAPF32[i5 + (i15 * 36 | 0) + 4 >> 2]; - d19 = +(d19 < d24 ? d19 : d24); - d22 = +(d23 < d22 ? d23 : d22); - i21 = i9; - HEAPF32[i21 >> 2] = d19; - HEAPF32[i21 + 4 >> 2] = d22; - d22 = +HEAPF32[i5 + (i6 * 36 | 0) + 8 >> 2]; - d23 = +HEAPF32[i5 + (i15 * 36 | 0) + 8 >> 2]; - d19 = +HEAPF32[i5 + (i6 * 36 | 0) + 12 >> 2]; - d24 = +HEAPF32[i5 + (i15 * 36 | 0) + 12 >> 2]; - d22 = +(d22 > d23 ? d22 : d23); - d25 = +(d19 > d24 ? d19 : d24); - i5 = i5 + (i8 * 36 | 0) + 8 | 0; - HEAPF32[i5 >> 2] = d22; - HEAPF32[i5 + 4 >> 2] = d25; - i3 = HEAP32[i3 >> 2] | 0; - i5 = HEAP32[i12 >> 2] | 0; - i3 = ((i3 | 0) > (i5 | 0) ? i3 : i5) + 1 | 0; - HEAP32[i2 >> 2] = i3; - i2 = HEAP32[i11 >> 2] | 0; - i2 = (i3 | 0) > (i2 | 0) ? i3 : i2; - } - HEAP32[i4 >> 2] = i2 + 1; - i21 = i8; - STACKTOP = i1; - return i21 | 0; -} -function __Z10b2DistanceP16b2DistanceOutputP14b2SimplexCachePK15b2DistanceInput(i2, i5, i3) { - i2 = i2 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - var i1 = 0, i4 = 0, i6 = 0, d7 = 0.0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, d16 = 0.0, d17 = 0.0, d18 = 0.0, d19 = 0.0, i20 = 0, d21 = 0.0, d22 = 0.0, i23 = 0, d24 = 0.0, d25 = 0.0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, d36 = 0.0, d37 = 0.0, d38 = 0.0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, d43 = 0.0, d44 = 0.0, d45 = 0.0, i46 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 176 | 0; - i11 = i1 + 152 | 0; - i10 = i1 + 136 | 0; - i4 = i1 + 24 | 0; - i14 = i1 + 12 | 0; - i15 = i1; - HEAP32[652] = (HEAP32[652] | 0) + 1; - i9 = i3 + 28 | 0; - i31 = i3 + 56 | 0; - HEAP32[i11 + 0 >> 2] = HEAP32[i31 + 0 >> 2]; - HEAP32[i11 + 4 >> 2] = HEAP32[i31 + 4 >> 2]; - HEAP32[i11 + 8 >> 2] = HEAP32[i31 + 8 >> 2]; - HEAP32[i11 + 12 >> 2] = HEAP32[i31 + 12 >> 2]; - i31 = i3 + 72 | 0; - HEAP32[i10 + 0 >> 2] = HEAP32[i31 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i31 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i31 + 8 >> 2]; - HEAP32[i10 + 12 >> 2] = HEAP32[i31 + 12 >> 2]; - __ZN9b2Simplex9ReadCacheEPK14b2SimplexCachePK15b2DistanceProxyRK11b2TransformS5_S8_(i4, i5, i3, i11, i9, i10); - i9 = i4 + 108 | 0; - i31 = HEAP32[i9 >> 2] | 0; - if ((i31 | 0) == 3 | (i31 | 0) == 2 | (i31 | 0) == 1) { - i8 = i4 + 16 | 0; - i6 = i4 + 20 | 0; - d17 = +HEAPF32[i11 + 12 >> 2]; - d18 = +HEAPF32[i11 + 8 >> 2]; - i13 = i3 + 16 | 0; - i12 = i3 + 20 | 0; - d16 = +HEAPF32[i11 >> 2]; - d21 = +HEAPF32[i11 + 4 >> 2]; - d19 = +HEAPF32[i10 + 12 >> 2]; - d22 = +HEAPF32[i10 + 8 >> 2]; - i23 = i3 + 44 | 0; - i20 = i3 + 48 | 0; - d24 = +HEAPF32[i10 >> 2]; - d25 = +HEAPF32[i10 + 4 >> 2]; - i11 = i4 + 52 | 0; - i10 = i4 + 56 | 0; - i30 = i4 + 16 | 0; - i27 = i4 + 36 | 0; - i26 = i4 + 52 | 0; - i29 = i4 + 24 | 0; - i28 = i4 + 60 | 0; - i33 = 0; - L3 : while (1) { - i32 = (i31 | 0) > 0; - if (i32) { - i34 = 0; - do { - HEAP32[i14 + (i34 << 2) >> 2] = HEAP32[i4 + (i34 * 36 | 0) + 28 >> 2]; - HEAP32[i15 + (i34 << 2) >> 2] = HEAP32[i4 + (i34 * 36 | 0) + 32 >> 2]; - i34 = i34 + 1 | 0; - } while ((i34 | 0) != (i31 | 0)); - } - do { - if ((i31 | 0) == 2) { - i46 = i30; - d45 = +HEAPF32[i46 >> 2]; - d36 = +HEAPF32[i46 + 4 >> 2]; - i46 = i26; - d38 = +HEAPF32[i46 >> 2]; - d37 = +HEAPF32[i46 + 4 >> 2]; - d43 = d38 - d45; - d44 = d37 - d36; - d36 = d45 * d43 + d36 * d44; - if (d36 >= -0.0) { - HEAPF32[i29 >> 2] = 1.0; - HEAP32[i9 >> 2] = 1; - i35 = 17; - break; - } - d37 = d38 * d43 + d37 * d44; - if (!(d37 <= 0.0)) { - d45 = 1.0 / (d37 - d36); - HEAPF32[i29 >> 2] = d37 * d45; - HEAPF32[i28 >> 2] = -(d36 * d45); - HEAP32[i9 >> 2] = 2; - i35 = 18; - break; - } else { - HEAPF32[i28 >> 2] = 1.0; - HEAP32[i9 >> 2] = 1; - i34 = i4 + 0 | 0; - i39 = i27 + 0 | 0; - i35 = i34 + 36 | 0; - do { - HEAP32[i34 >> 2] = HEAP32[i39 >> 2]; - i34 = i34 + 4 | 0; - i39 = i39 + 4 | 0; - } while ((i34 | 0) < (i35 | 0)); - i35 = 17; - break; - } - } else if ((i31 | 0) == 3) { - __ZN9b2Simplex6Solve3Ev(i4); - i34 = HEAP32[i9 >> 2] | 0; - if ((i34 | 0) == 1) { - i35 = 17; - } else if ((i34 | 0) == 0) { - i35 = 15; - break L3; - } else if ((i34 | 0) == 2) { - i35 = 18; - } else if ((i34 | 0) == 3) { - i35 = 42; - break L3; - } else { - i35 = 16; - break L3; - } - } else if ((i31 | 0) == 1) { - i35 = 17; - } else { - i35 = 13; - break L3; - } - } while (0); - do { - if ((i35 | 0) == 17) { - d36 = -+HEAPF32[i8 >> 2]; - d37 = -+HEAPF32[i6 >> 2]; - i34 = 1; - } else if ((i35 | 0) == 18) { - d44 = +HEAPF32[i8 >> 2]; - d37 = +HEAPF32[i11 >> 2] - d44; - d45 = +HEAPF32[i6 >> 2]; - d36 = +HEAPF32[i10 >> 2] - d45; - if (d44 * d36 - d37 * d45 > 0.0) { - d36 = -d36; - i34 = 2; - break; - } else { - d37 = -d37; - i34 = 2; - break; - } - } - } while (0); - if (d37 * d37 + d36 * d36 < 1.4210854715202004e-14) { - i35 = 42; - break; - } - i39 = i4 + (i34 * 36 | 0) | 0; - d44 = -d36; - d45 = -d37; - d43 = d17 * d44 + d18 * d45; - d44 = d17 * d45 - d18 * d44; - i40 = HEAP32[i13 >> 2] | 0; - i41 = HEAP32[i12 >> 2] | 0; - if ((i41 | 0) > 1) { - i42 = 0; - d45 = d44 * +HEAPF32[i40 + 4 >> 2] + d43 * +HEAPF32[i40 >> 2]; - i46 = 1; - while (1) { - d38 = d43 * +HEAPF32[i40 + (i46 << 3) >> 2] + d44 * +HEAPF32[i40 + (i46 << 3) + 4 >> 2]; - i35 = d38 > d45; - i42 = i35 ? i46 : i42; - i46 = i46 + 1 | 0; - if ((i46 | 0) == (i41 | 0)) { - break; - } else { - d45 = i35 ? d38 : d45; - } - } - i35 = i4 + (i34 * 36 | 0) + 28 | 0; - HEAP32[i35 >> 2] = i42; - if (!((i42 | 0) > -1)) { - i35 = 28; - break; - } - } else { - i35 = i4 + (i34 * 36 | 0) + 28 | 0; - HEAP32[i35 >> 2] = 0; - i42 = 0; - } - if ((i41 | 0) <= (i42 | 0)) { - i35 = 28; - break; - } - d45 = +HEAPF32[i40 + (i42 << 3) >> 2]; - d43 = +HEAPF32[i40 + (i42 << 3) + 4 >> 2]; - d38 = d16 + (d17 * d45 - d18 * d43); - d44 = +d38; - d43 = +(d45 * d18 + d17 * d43 + d21); - i40 = i39; - HEAPF32[i40 >> 2] = d44; - HEAPF32[i40 + 4 >> 2] = d43; - d43 = d36 * d19 + d37 * d22; - d44 = d37 * d19 - d36 * d22; - i40 = HEAP32[i23 >> 2] | 0; - i39 = HEAP32[i20 >> 2] | 0; - if ((i39 | 0) > 1) { - i41 = 0; - d37 = d44 * +HEAPF32[i40 + 4 >> 2] + d43 * +HEAPF32[i40 >> 2]; - i42 = 1; - while (1) { - d36 = d43 * +HEAPF32[i40 + (i42 << 3) >> 2] + d44 * +HEAPF32[i40 + (i42 << 3) + 4 >> 2]; - i46 = d36 > d37; - i41 = i46 ? i42 : i41; - i42 = i42 + 1 | 0; - if ((i42 | 0) == (i39 | 0)) { - break; - } else { - d37 = i46 ? d36 : d37; - } - } - i42 = i4 + (i34 * 36 | 0) + 32 | 0; - HEAP32[i42 >> 2] = i41; - if (!((i41 | 0) > -1)) { - i35 = 35; - break; - } - } else { - i42 = i4 + (i34 * 36 | 0) + 32 | 0; - HEAP32[i42 >> 2] = 0; - i41 = 0; - } - if ((i39 | 0) <= (i41 | 0)) { - i35 = 35; - break; - } - d37 = +HEAPF32[i40 + (i41 << 3) >> 2]; - d45 = +HEAPF32[i40 + (i41 << 3) + 4 >> 2]; - d44 = d24 + (d19 * d37 - d22 * d45); - d43 = +d44; - d45 = +(d37 * d22 + d19 * d45 + d25); - i46 = i4 + (i34 * 36 | 0) + 8 | 0; - HEAPF32[i46 >> 2] = d43; - HEAPF32[i46 + 4 >> 2] = d45; - d44 = +(d44 - d38); - d45 = +(+HEAPF32[i4 + (i34 * 36 | 0) + 12 >> 2] - +HEAPF32[i4 + (i34 * 36 | 0) + 4 >> 2]); - i46 = i4 + (i34 * 36 | 0) + 16 | 0; - HEAPF32[i46 >> 2] = d44; - HEAPF32[i46 + 4 >> 2] = d45; - i33 = i33 + 1 | 0; - HEAP32[654] = (HEAP32[654] | 0) + 1; - if (i32) { - i34 = HEAP32[i35 >> 2] | 0; - i32 = 0; - do { - if ((i34 | 0) == (HEAP32[i14 + (i32 << 2) >> 2] | 0) ? (HEAP32[i42 >> 2] | 0) == (HEAP32[i15 + (i32 << 2) >> 2] | 0) : 0) { - i35 = 42; - break L3; - } - i32 = i32 + 1 | 0; - } while ((i32 | 0) < (i31 | 0)); - } - i31 = (HEAP32[i9 >> 2] | 0) + 1 | 0; - HEAP32[i9 >> 2] = i31; - if ((i33 | 0) >= 20) { - i35 = 42; - break; - } - } - if ((i35 | 0) == 13) { - ___assert_fail(2712, 2672, 498, 2720); - } else if ((i35 | 0) == 15) { - ___assert_fail(2712, 2672, 194, 2856); - } else if ((i35 | 0) == 16) { - ___assert_fail(2712, 2672, 207, 2856); - } else if ((i35 | 0) == 28) { - ___assert_fail(2776, 2808, 103, 2840); - } else if ((i35 | 0) == 35) { - ___assert_fail(2776, 2808, 103, 2840); - } else if ((i35 | 0) == 42) { - i12 = HEAP32[656] | 0; - HEAP32[656] = (i12 | 0) > (i33 | 0) ? i12 : i33; - i14 = i2 + 8 | 0; - __ZNK9b2Simplex16GetWitnessPointsEP6b2Vec2S1_(i4, i2, i14); - d44 = +HEAPF32[i2 >> 2] - +HEAPF32[i14 >> 2]; - i13 = i2 + 4 | 0; - i12 = i2 + 12 | 0; - d45 = +HEAPF32[i13 >> 2] - +HEAPF32[i12 >> 2]; - i15 = i2 + 16 | 0; - HEAPF32[i15 >> 2] = +Math_sqrt(+(d44 * d44 + d45 * d45)); - HEAP32[i2 + 20 >> 2] = i33; - i9 = HEAP32[i9 >> 2] | 0; - if ((i9 | 0) == 2) { - d45 = +HEAPF32[i8 >> 2] - +HEAPF32[i11 >> 2]; - d7 = +HEAPF32[i6 >> 2] - +HEAPF32[i10 >> 2]; - d7 = +Math_sqrt(+(d45 * d45 + d7 * d7)); - } else if ((i9 | 0) == 3) { - d7 = +HEAPF32[i8 >> 2]; - d45 = +HEAPF32[i6 >> 2]; - d7 = (+HEAPF32[i11 >> 2] - d7) * (+HEAPF32[i4 + 92 >> 2] - d45) - (+HEAPF32[i10 >> 2] - d45) * (+HEAPF32[i4 + 88 >> 2] - d7); - } else if ((i9 | 0) == 1) { - d7 = 0.0; - } else if ((i9 | 0) == 0) { - ___assert_fail(2712, 2672, 246, 2736); - } else { - ___assert_fail(2712, 2672, 259, 2736); - } - HEAPF32[i5 >> 2] = d7; - HEAP16[i5 + 4 >> 1] = i9; - i6 = 0; - do { - HEAP8[i5 + i6 + 6 | 0] = HEAP32[i4 + (i6 * 36 | 0) + 28 >> 2]; - HEAP8[i5 + i6 + 9 | 0] = HEAP32[i4 + (i6 * 36 | 0) + 32 >> 2]; - i6 = i6 + 1 | 0; - } while ((i6 | 0) < (i9 | 0)); - if ((HEAP8[i3 + 88 | 0] | 0) == 0) { - STACKTOP = i1; - return; - } - d7 = +HEAPF32[i3 + 24 >> 2]; - d16 = +HEAPF32[i3 + 52 >> 2]; - d18 = +HEAPF32[i15 >> 2]; - d17 = d7 + d16; - if (!(d18 > d17 & d18 > 1.1920928955078125e-7)) { - d44 = +((+HEAPF32[i2 >> 2] + +HEAPF32[i14 >> 2]) * .5); - d45 = +((+HEAPF32[i13 >> 2] + +HEAPF32[i12 >> 2]) * .5); - i46 = i2; - HEAPF32[i46 >> 2] = d44; - HEAPF32[i46 + 4 >> 2] = d45; - i46 = i14; - HEAPF32[i46 >> 2] = d44; - HEAPF32[i46 + 4 >> 2] = d45; - HEAPF32[i15 >> 2] = 0.0; - STACKTOP = i1; - return; - } - HEAPF32[i15 >> 2] = d18 - d17; - d18 = +HEAPF32[i14 >> 2]; - d21 = +HEAPF32[i2 >> 2]; - d24 = d18 - d21; - d17 = +HEAPF32[i12 >> 2]; - d19 = +HEAPF32[i13 >> 2]; - d22 = d17 - d19; - d25 = +Math_sqrt(+(d24 * d24 + d22 * d22)); - if (!(d25 < 1.1920928955078125e-7)) { - d45 = 1.0 / d25; - d24 = d24 * d45; - d22 = d22 * d45; - } - HEAPF32[i2 >> 2] = d7 * d24 + d21; - HEAPF32[i13 >> 2] = d7 * d22 + d19; - HEAPF32[i14 >> 2] = d18 - d16 * d24; - HEAPF32[i12 >> 2] = d17 - d16 * d22; - STACKTOP = i1; - return; - } - } else if ((i31 | 0) == 0) { - ___assert_fail(2712, 2672, 194, 2856); - } else { - ___assert_fail(2712, 2672, 207, 2856); - } -} -function __ZN8b2Island5SolveEP9b2ProfileRK10b2TimeStepRK6b2Vec2b(i4, i8, i11, i17, i7) { - i4 = i4 | 0; - i8 = i8 | 0; - i11 = i11 | 0; - i17 = i17 | 0; - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, d5 = 0.0, i6 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, d21 = 0.0, i22 = 0, d23 = 0.0, d24 = 0.0, d25 = 0.0, d26 = 0.0, d27 = 0.0, d28 = 0.0, d29 = 0.0, i30 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 160 | 0; - i6 = i3 + 128 | 0; - i9 = i3 + 148 | 0; - i10 = i3 + 96 | 0; - i16 = i3 + 52 | 0; - i2 = i3; - __ZN7b2TimerC2Ev(i9); - d5 = +HEAPF32[i11 >> 2]; - i1 = i4 + 28 | 0; - if ((HEAP32[i1 >> 2] | 0) > 0) { - i13 = i4 + 8 | 0; - i12 = i17 + 4 | 0; - i15 = i4 + 20 | 0; - i14 = i4 + 24 | 0; - i19 = 0; - do { - i22 = HEAP32[(HEAP32[i13 >> 2] | 0) + (i19 << 2) >> 2] | 0; - i18 = i22 + 44 | 0; - i20 = HEAP32[i18 >> 2] | 0; - i18 = HEAP32[i18 + 4 >> 2] | 0; - d21 = +HEAPF32[i22 + 56 >> 2]; - i30 = i22 + 64 | 0; - d27 = +HEAPF32[i30 >> 2]; - d24 = +HEAPF32[i30 + 4 >> 2]; - d23 = +HEAPF32[i22 + 72 >> 2]; - i30 = i22 + 36 | 0; - HEAP32[i30 >> 2] = i20; - HEAP32[i30 + 4 >> 2] = i18; - HEAPF32[i22 + 52 >> 2] = d21; - if ((HEAP32[i22 >> 2] | 0) == 2) { - d25 = +HEAPF32[i22 + 140 >> 2]; - d26 = +HEAPF32[i22 + 120 >> 2]; - d28 = 1.0 - d5 * +HEAPF32[i22 + 132 >> 2]; - d28 = d28 < 1.0 ? d28 : 1.0; - d28 = d28 < 0.0 ? 0.0 : d28; - d29 = 1.0 - d5 * +HEAPF32[i22 + 136 >> 2]; - d29 = d29 < 1.0 ? d29 : 1.0; - d27 = (d27 + d5 * (d25 * +HEAPF32[i17 >> 2] + d26 * +HEAPF32[i22 + 76 >> 2])) * d28; - d24 = (d24 + d5 * (d25 * +HEAPF32[i12 >> 2] + d26 * +HEAPF32[i22 + 80 >> 2])) * d28; - d23 = (d23 + d5 * +HEAPF32[i22 + 128 >> 2] * +HEAPF32[i22 + 84 >> 2]) * (d29 < 0.0 ? 0.0 : d29); - } - i30 = (HEAP32[i15 >> 2] | 0) + (i19 * 12 | 0) | 0; - HEAP32[i30 >> 2] = i20; - HEAP32[i30 + 4 >> 2] = i18; - HEAPF32[(HEAP32[i15 >> 2] | 0) + (i19 * 12 | 0) + 8 >> 2] = d21; - d28 = +d27; - d29 = +d24; - i30 = (HEAP32[i14 >> 2] | 0) + (i19 * 12 | 0) | 0; - HEAPF32[i30 >> 2] = d28; - HEAPF32[i30 + 4 >> 2] = d29; - HEAPF32[(HEAP32[i14 >> 2] | 0) + (i19 * 12 | 0) + 8 >> 2] = d23; - i19 = i19 + 1 | 0; - } while ((i19 | 0) < (HEAP32[i1 >> 2] | 0)); - } else { - i14 = i4 + 24 | 0; - i15 = i4 + 20 | 0; - } - HEAP32[i10 + 0 >> 2] = HEAP32[i11 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i11 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i11 + 8 >> 2]; - HEAP32[i10 + 12 >> 2] = HEAP32[i11 + 12 >> 2]; - HEAP32[i10 + 16 >> 2] = HEAP32[i11 + 16 >> 2]; - HEAP32[i10 + 20 >> 2] = HEAP32[i11 + 20 >> 2]; - i22 = HEAP32[i15 >> 2] | 0; - HEAP32[i10 + 24 >> 2] = i22; - i30 = HEAP32[i14 >> 2] | 0; - HEAP32[i10 + 28 >> 2] = i30; - HEAP32[i16 + 0 >> 2] = HEAP32[i11 + 0 >> 2]; - HEAP32[i16 + 4 >> 2] = HEAP32[i11 + 4 >> 2]; - HEAP32[i16 + 8 >> 2] = HEAP32[i11 + 8 >> 2]; - HEAP32[i16 + 12 >> 2] = HEAP32[i11 + 12 >> 2]; - HEAP32[i16 + 16 >> 2] = HEAP32[i11 + 16 >> 2]; - HEAP32[i16 + 20 >> 2] = HEAP32[i11 + 20 >> 2]; - i13 = i4 + 12 | 0; - HEAP32[i16 + 24 >> 2] = HEAP32[i13 >> 2]; - i12 = i4 + 36 | 0; - HEAP32[i16 + 28 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i16 + 32 >> 2] = i22; - HEAP32[i16 + 36 >> 2] = i30; - HEAP32[i16 + 40 >> 2] = HEAP32[i4 >> 2]; - __ZN15b2ContactSolverC2EP18b2ContactSolverDef(i2, i16); - __ZN15b2ContactSolver29InitializeVelocityConstraintsEv(i2); - if ((HEAP8[i11 + 20 | 0] | 0) != 0) { - __ZN15b2ContactSolver9WarmStartEv(i2); - } - i16 = i4 + 32 | 0; - if ((HEAP32[i16 >> 2] | 0) > 0) { - i18 = i4 + 16 | 0; - i17 = 0; - do { - i30 = HEAP32[(HEAP32[i18 >> 2] | 0) + (i17 << 2) >> 2] | 0; - FUNCTION_TABLE_vii[HEAP32[(HEAP32[i30 >> 2] | 0) + 28 >> 2] & 15](i30, i10); - i17 = i17 + 1 | 0; - } while ((i17 | 0) < (HEAP32[i16 >> 2] | 0)); - } - HEAPF32[i8 + 12 >> 2] = +__ZNK7b2Timer15GetMillisecondsEv(i9); - i17 = i11 + 12 | 0; - if ((HEAP32[i17 >> 2] | 0) > 0) { - i20 = i4 + 16 | 0; - i19 = 0; - do { - if ((HEAP32[i16 >> 2] | 0) > 0) { - i18 = 0; - do { - i30 = HEAP32[(HEAP32[i20 >> 2] | 0) + (i18 << 2) >> 2] | 0; - FUNCTION_TABLE_vii[HEAP32[(HEAP32[i30 >> 2] | 0) + 32 >> 2] & 15](i30, i10); - i18 = i18 + 1 | 0; - } while ((i18 | 0) < (HEAP32[i16 >> 2] | 0)); - } - __ZN15b2ContactSolver24SolveVelocityConstraintsEv(i2); - i19 = i19 + 1 | 0; - } while ((i19 | 0) < (HEAP32[i17 >> 2] | 0)); - } - __ZN15b2ContactSolver13StoreImpulsesEv(i2); - HEAPF32[i8 + 16 >> 2] = +__ZNK7b2Timer15GetMillisecondsEv(i9); - if ((HEAP32[i1 >> 2] | 0) > 0) { - i19 = HEAP32[i14 >> 2] | 0; - i18 = 0; - do { - i30 = HEAP32[i15 >> 2] | 0; - i17 = i30 + (i18 * 12 | 0) | 0; - i22 = i17; - d23 = +HEAPF32[i22 >> 2]; - d21 = +HEAPF32[i22 + 4 >> 2]; - d24 = +HEAPF32[i30 + (i18 * 12 | 0) + 8 >> 2]; - i30 = i19 + (i18 * 12 | 0) | 0; - d26 = +HEAPF32[i30 >> 2]; - d27 = +HEAPF32[i30 + 4 >> 2]; - d25 = +HEAPF32[i19 + (i18 * 12 | 0) + 8 >> 2]; - d29 = d5 * d26; - d28 = d5 * d27; - d28 = d29 * d29 + d28 * d28; - if (d28 > 4.0) { - d29 = 2.0 / +Math_sqrt(+d28); - d26 = d26 * d29; - d27 = d27 * d29; - } - d28 = d5 * d25; - if (d28 * d28 > 2.4674012660980225) { - if (!(d28 > 0.0)) { - d28 = -d28; - } - d25 = d25 * (1.5707963705062866 / d28); - } - d29 = +(d23 + d5 * d26); - d28 = +(d21 + d5 * d27); - i19 = i17; - HEAPF32[i19 >> 2] = d29; - HEAPF32[i19 + 4 >> 2] = d28; - HEAPF32[(HEAP32[i15 >> 2] | 0) + (i18 * 12 | 0) + 8 >> 2] = d24 + d5 * d25; - d28 = +d26; - d29 = +d27; - i19 = (HEAP32[i14 >> 2] | 0) + (i18 * 12 | 0) | 0; - HEAPF32[i19 >> 2] = d28; - HEAPF32[i19 + 4 >> 2] = d29; - i19 = HEAP32[i14 >> 2] | 0; - HEAPF32[i19 + (i18 * 12 | 0) + 8 >> 2] = d25; - i18 = i18 + 1 | 0; - } while ((i18 | 0) < (HEAP32[i1 >> 2] | 0)); - } - i11 = i11 + 16 | 0; - L41 : do { - if ((HEAP32[i11 >> 2] | 0) > 0) { - i17 = i4 + 16 | 0; - i19 = 0; - while (1) { - i18 = __ZN15b2ContactSolver24SolvePositionConstraintsEv(i2) | 0; - if ((HEAP32[i16 >> 2] | 0) > 0) { - i20 = 0; - i22 = 1; - do { - i30 = HEAP32[(HEAP32[i17 >> 2] | 0) + (i20 << 2) >> 2] | 0; - i22 = i22 & (FUNCTION_TABLE_iii[HEAP32[(HEAP32[i30 >> 2] | 0) + 36 >> 2] & 3](i30, i10) | 0); - i20 = i20 + 1 | 0; - } while ((i20 | 0) < (HEAP32[i16 >> 2] | 0)); - } else { - i22 = 1; - } - i19 = i19 + 1 | 0; - if (i18 & i22) { - i10 = 0; - break L41; - } - if ((i19 | 0) >= (HEAP32[i11 >> 2] | 0)) { - i10 = 1; - break; - } - } - } else { - i10 = 1; - } - } while (0); - if ((HEAP32[i1 >> 2] | 0) > 0) { - i11 = i4 + 8 | 0; - i16 = 0; - do { - i30 = HEAP32[(HEAP32[i11 >> 2] | 0) + (i16 << 2) >> 2] | 0; - i22 = (HEAP32[i15 >> 2] | 0) + (i16 * 12 | 0) | 0; - i20 = HEAP32[i22 >> 2] | 0; - i22 = HEAP32[i22 + 4 >> 2] | 0; - i17 = i30 + 44 | 0; - HEAP32[i17 >> 2] = i20; - HEAP32[i17 + 4 >> 2] = i22; - d27 = +HEAPF32[(HEAP32[i15 >> 2] | 0) + (i16 * 12 | 0) + 8 >> 2]; - HEAPF32[i30 + 56 >> 2] = d27; - i17 = (HEAP32[i14 >> 2] | 0) + (i16 * 12 | 0) | 0; - i18 = HEAP32[i17 + 4 >> 2] | 0; - i19 = i30 + 64 | 0; - HEAP32[i19 >> 2] = HEAP32[i17 >> 2]; - HEAP32[i19 + 4 >> 2] = i18; - HEAPF32[i30 + 72 >> 2] = +HEAPF32[(HEAP32[i14 >> 2] | 0) + (i16 * 12 | 0) + 8 >> 2]; - d25 = +Math_sin(+d27); - HEAPF32[i30 + 20 >> 2] = d25; - d27 = +Math_cos(+d27); - HEAPF32[i30 + 24 >> 2] = d27; - d26 = +HEAPF32[i30 + 28 >> 2]; - d29 = +HEAPF32[i30 + 32 >> 2]; - d28 = (HEAP32[tempDoublePtr >> 2] = i20, +HEAPF32[tempDoublePtr >> 2]) - (d27 * d26 - d25 * d29); - d29 = (HEAP32[tempDoublePtr >> 2] = i22, +HEAPF32[tempDoublePtr >> 2]) - (d25 * d26 + d27 * d29); - d28 = +d28; - d29 = +d29; - i30 = i30 + 12 | 0; - HEAPF32[i30 >> 2] = d28; - HEAPF32[i30 + 4 >> 2] = d29; - i16 = i16 + 1 | 0; - } while ((i16 | 0) < (HEAP32[i1 >> 2] | 0)); - } - HEAPF32[i8 + 20 >> 2] = +__ZNK7b2Timer15GetMillisecondsEv(i9); - i9 = HEAP32[i2 + 40 >> 2] | 0; - i8 = i4 + 4 | 0; - if ((HEAP32[i8 >> 2] | 0) != 0 ? (HEAP32[i12 >> 2] | 0) > 0 : 0) { - i11 = i6 + 16 | 0; - i14 = 0; - do { - i15 = HEAP32[(HEAP32[i13 >> 2] | 0) + (i14 << 2) >> 2] | 0; - i16 = HEAP32[i9 + (i14 * 152 | 0) + 144 >> 2] | 0; - HEAP32[i11 >> 2] = i16; - if ((i16 | 0) > 0) { - i17 = 0; - do { - HEAPF32[i6 + (i17 << 2) >> 2] = +HEAPF32[i9 + (i14 * 152 | 0) + (i17 * 36 | 0) + 16 >> 2]; - HEAPF32[i6 + (i17 << 2) + 8 >> 2] = +HEAPF32[i9 + (i14 * 152 | 0) + (i17 * 36 | 0) + 20 >> 2]; - i17 = i17 + 1 | 0; - } while ((i17 | 0) != (i16 | 0)); - } - i30 = HEAP32[i8 >> 2] | 0; - FUNCTION_TABLE_viii[HEAP32[(HEAP32[i30 >> 2] | 0) + 20 >> 2] & 3](i30, i15, i6); - i14 = i14 + 1 | 0; - } while ((i14 | 0) < (HEAP32[i12 >> 2] | 0)); - } - if (!i7) { - __ZN15b2ContactSolverD2Ev(i2); - STACKTOP = i3; - return; - } - i7 = HEAP32[i1 >> 2] | 0; - i6 = (i7 | 0) > 0; - if (i6) { - i8 = HEAP32[i4 + 8 >> 2] | 0; - i9 = 0; - d21 = 3.4028234663852886e+38; - do { - i11 = HEAP32[i8 + (i9 << 2) >> 2] | 0; - do { - if ((HEAP32[i11 >> 2] | 0) != 0) { - if ((!((HEAP16[i11 + 4 >> 1] & 4) == 0) ? (d29 = +HEAPF32[i11 + 72 >> 2], !(d29 * d29 > .001218469929881394)) : 0) ? (d28 = +HEAPF32[i11 + 64 >> 2], d29 = +HEAPF32[i11 + 68 >> 2], !(d28 * d28 + d29 * d29 > 9999999747378752.0e-20)) : 0) { - i30 = i11 + 144 | 0; - d23 = d5 + +HEAPF32[i30 >> 2]; - HEAPF32[i30 >> 2] = d23; - d21 = d21 < d23 ? d21 : d23; - break; - } - HEAPF32[i11 + 144 >> 2] = 0.0; - d21 = 0.0; - } - } while (0); - i9 = i9 + 1 | 0; - } while ((i9 | 0) < (i7 | 0)); - } else { - d21 = 3.4028234663852886e+38; - } - if (!(d21 >= .5) | i10 | i6 ^ 1) { - __ZN15b2ContactSolverD2Ev(i2); - STACKTOP = i3; - return; - } - i4 = i4 + 8 | 0; - i6 = 0; - do { - i30 = HEAP32[(HEAP32[i4 >> 2] | 0) + (i6 << 2) >> 2] | 0; - i22 = i30 + 4 | 0; - HEAP16[i22 >> 1] = HEAP16[i22 >> 1] & 65533; - HEAPF32[i30 + 144 >> 2] = 0.0; - i30 = i30 + 64 | 0; - HEAP32[i30 + 0 >> 2] = 0; - HEAP32[i30 + 4 >> 2] = 0; - HEAP32[i30 + 8 >> 2] = 0; - HEAP32[i30 + 12 >> 2] = 0; - HEAP32[i30 + 16 >> 2] = 0; - HEAP32[i30 + 20 >> 2] = 0; - i6 = i6 + 1 | 0; - } while ((i6 | 0) < (HEAP32[i1 >> 2] | 0)); - __ZN15b2ContactSolverD2Ev(i2); - STACKTOP = i3; - return; -} -function __ZN15b2ContactSolver24SolveVelocityConstraintsEv(i4) { - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, d9 = 0.0, d10 = 0.0, d11 = 0.0, d12 = 0.0, d13 = 0.0, d14 = 0.0, d15 = 0.0, d16 = 0.0, d17 = 0.0, d18 = 0.0, i19 = 0, d20 = 0.0, d21 = 0.0, i22 = 0, d23 = 0.0, d24 = 0.0, d25 = 0.0, d26 = 0.0, d27 = 0.0, d28 = 0.0, d29 = 0.0, d30 = 0.0, d31 = 0.0, i32 = 0, i33 = 0, d34 = 0.0, d35 = 0.0, d36 = 0.0, d37 = 0.0, d38 = 0.0, d39 = 0.0, d40 = 0.0, i41 = 0, i42 = 0, d43 = 0.0, d44 = 0.0; - i1 = STACKTOP; - i2 = i4 + 48 | 0; - if ((HEAP32[i2 >> 2] | 0) <= 0) { - STACKTOP = i1; - return; - } - i3 = i4 + 40 | 0; - i4 = i4 + 28 | 0; - i42 = HEAP32[i4 >> 2] | 0; - i5 = 0; - L4 : while (1) { - i19 = HEAP32[i3 >> 2] | 0; - i22 = i19 + (i5 * 152 | 0) | 0; - i8 = HEAP32[i19 + (i5 * 152 | 0) + 112 >> 2] | 0; - i6 = HEAP32[i19 + (i5 * 152 | 0) + 116 >> 2] | 0; - d12 = +HEAPF32[i19 + (i5 * 152 | 0) + 120 >> 2]; - d10 = +HEAPF32[i19 + (i5 * 152 | 0) + 128 >> 2]; - d11 = +HEAPF32[i19 + (i5 * 152 | 0) + 124 >> 2]; - d9 = +HEAPF32[i19 + (i5 * 152 | 0) + 132 >> 2]; - i32 = i19 + (i5 * 152 | 0) + 144 | 0; - i33 = HEAP32[i32 >> 2] | 0; - i7 = i42 + (i8 * 12 | 0) | 0; - i41 = i7; - d21 = +HEAPF32[i41 >> 2]; - d20 = +HEAPF32[i41 + 4 >> 2]; - i41 = i42 + (i6 * 12 | 0) | 0; - d14 = +HEAPF32[i41 >> 2]; - d13 = +HEAPF32[i41 + 4 >> 2]; - i41 = i19 + (i5 * 152 | 0) + 72 | 0; - d17 = +HEAPF32[i41 >> 2]; - d16 = +HEAPF32[i41 + 4 >> 2]; - d23 = -d17; - d24 = +HEAPF32[i19 + (i5 * 152 | 0) + 136 >> 2]; - if ((i33 + -1 | 0) >>> 0 < 2) { - i41 = 0; - d18 = +HEAPF32[i42 + (i8 * 12 | 0) + 8 >> 2]; - d15 = +HEAPF32[i42 + (i6 * 12 | 0) + 8 >> 2]; - } else { - i2 = 4; - break; - } - do { - d30 = +HEAPF32[i19 + (i5 * 152 | 0) + (i41 * 36 | 0) + 12 >> 2]; - d25 = +HEAPF32[i19 + (i5 * 152 | 0) + (i41 * 36 | 0) + 8 >> 2]; - d26 = +HEAPF32[i19 + (i5 * 152 | 0) + (i41 * 36 | 0) + 4 >> 2]; - d27 = +HEAPF32[i19 + (i5 * 152 | 0) + (i41 * 36 | 0) >> 2]; - d34 = d24 * +HEAPF32[i19 + (i5 * 152 | 0) + (i41 * 36 | 0) + 16 >> 2]; - i42 = i19 + (i5 * 152 | 0) + (i41 * 36 | 0) + 20 | 0; - d28 = +HEAPF32[i42 >> 2]; - d31 = d28 - +HEAPF32[i19 + (i5 * 152 | 0) + (i41 * 36 | 0) + 28 >> 2] * (d16 * (d14 - d15 * d30 - d21 + d18 * d26) + (d13 + d15 * d25 - d20 - d18 * d27) * d23); - d29 = -d34; - d31 = d31 < d34 ? d31 : d34; - d40 = d31 < d29 ? d29 : d31; - d39 = d40 - d28; - HEAPF32[i42 >> 2] = d40; - d40 = d16 * d39; - d39 = d39 * d23; - d21 = d21 - d12 * d40; - d20 = d20 - d12 * d39; - d18 = d18 - d10 * (d27 * d39 - d26 * d40); - d14 = d14 + d11 * d40; - d13 = d13 + d11 * d39; - d15 = d15 + d9 * (d25 * d39 - d30 * d40); - i41 = i41 + 1 | 0; - } while ((i41 | 0) != (i33 | 0)); - do { - if ((HEAP32[i32 >> 2] | 0) != 1) { - i32 = i19 + (i5 * 152 | 0) + 16 | 0; - d31 = +HEAPF32[i32 >> 2]; - i33 = i19 + (i5 * 152 | 0) + 52 | 0; - d34 = +HEAPF32[i33 >> 2]; - if (!(d31 >= 0.0) | !(d34 >= 0.0)) { - i2 = 9; - break L4; - } - d23 = +HEAPF32[i19 + (i5 * 152 | 0) + 12 >> 2]; - d24 = +HEAPF32[i19 + (i5 * 152 | 0) + 8 >> 2]; - d26 = +HEAPF32[i19 + (i5 * 152 | 0) + 4 >> 2]; - d30 = +HEAPF32[i22 >> 2]; - d27 = +HEAPF32[i19 + (i5 * 152 | 0) + 48 >> 2]; - d25 = +HEAPF32[i19 + (i5 * 152 | 0) + 44 >> 2]; - d28 = +HEAPF32[i19 + (i5 * 152 | 0) + 40 >> 2]; - d29 = +HEAPF32[i19 + (i5 * 152 | 0) + 36 >> 2]; - d37 = +HEAPF32[i19 + (i5 * 152 | 0) + 104 >> 2]; - d38 = +HEAPF32[i19 + (i5 * 152 | 0) + 100 >> 2]; - d35 = d17 * (d14 - d15 * d23 - d21 + d18 * d26) + d16 * (d13 + d15 * d24 - d20 - d18 * d30) - +HEAPF32[i19 + (i5 * 152 | 0) + 32 >> 2] - (d31 * +HEAPF32[i19 + (i5 * 152 | 0) + 96 >> 2] + d34 * d37); - d36 = d17 * (d14 - d15 * d27 - d21 + d18 * d28) + d16 * (d13 + d15 * d25 - d20 - d18 * d29) - +HEAPF32[i19 + (i5 * 152 | 0) + 68 >> 2] - (d31 * d38 + d34 * +HEAPF32[i19 + (i5 * 152 | 0) + 108 >> 2]); - d44 = +HEAPF32[i19 + (i5 * 152 | 0) + 80 >> 2] * d35 + +HEAPF32[i19 + (i5 * 152 | 0) + 88 >> 2] * d36; - d43 = d35 * +HEAPF32[i19 + (i5 * 152 | 0) + 84 >> 2] + d36 * +HEAPF32[i19 + (i5 * 152 | 0) + 92 >> 2]; - d40 = -d44; - d39 = -d43; - if (!(!(d44 <= -0.0) | !(d43 <= -0.0))) { - d37 = d40 - d31; - d43 = d39 - d34; - d38 = d17 * d37; - d37 = d16 * d37; - d44 = d17 * d43; - d43 = d16 * d43; - d35 = d38 + d44; - d36 = d37 + d43; - HEAPF32[i32 >> 2] = d40; - HEAPF32[i33 >> 2] = d39; - d21 = d21 - d12 * d35; - d20 = d20 - d12 * d36; - d14 = d14 + d11 * d35; - d13 = d13 + d11 * d36; - d18 = d18 - d10 * (d30 * d37 - d26 * d38 + (d29 * d43 - d28 * d44)); - d15 = d15 + d9 * (d24 * d37 - d23 * d38 + (d25 * d43 - d27 * d44)); - break; - } - d44 = d35 * +HEAPF32[i19 + (i5 * 152 | 0) + 24 >> 2]; - d39 = -d44; - if (d44 <= -0.0 ? d36 + d38 * d39 >= 0.0 : 0) { - d38 = d39 - d31; - d43 = 0.0 - d34; - d40 = d17 * d38; - d38 = d16 * d38; - d44 = d17 * d43; - d43 = d16 * d43; - d36 = d44 + d40; - d37 = d43 + d38; - HEAPF32[i32 >> 2] = d39; - HEAPF32[i33 >> 2] = 0.0; - d21 = d21 - d12 * d36; - d20 = d20 - d12 * d37; - d14 = d14 + d11 * d36; - d13 = d13 + d11 * d37; - d18 = d18 - d10 * (d38 * d30 - d40 * d26 + (d43 * d29 - d44 * d28)); - d15 = d15 + d9 * (d38 * d24 - d40 * d23 + (d43 * d25 - d44 * d27)); - break; - } - d44 = d36 * +HEAPF32[i19 + (i5 * 152 | 0) + 60 >> 2]; - d38 = -d44; - if (d44 <= -0.0 ? d35 + d37 * d38 >= 0.0 : 0) { - d39 = 0.0 - d31; - d43 = d38 - d34; - d40 = d17 * d39; - d39 = d16 * d39; - d44 = d17 * d43; - d43 = d16 * d43; - d36 = d40 + d44; - d37 = d39 + d43; - HEAPF32[i32 >> 2] = 0.0; - HEAPF32[i33 >> 2] = d38; - d21 = d21 - d12 * d36; - d20 = d20 - d12 * d37; - d14 = d14 + d11 * d36; - d13 = d13 + d11 * d37; - d18 = d18 - d10 * (d39 * d30 - d40 * d26 + (d43 * d29 - d44 * d28)); - d15 = d15 + d9 * (d39 * d24 - d40 * d23 + (d43 * d25 - d44 * d27)); - break; - } - if (!(!(d35 >= 0.0) | !(d36 >= 0.0))) { - d39 = 0.0 - d31; - d43 = 0.0 - d34; - d40 = d17 * d39; - d39 = d16 * d39; - d44 = d17 * d43; - d43 = d16 * d43; - d37 = d40 + d44; - d38 = d39 + d43; - HEAPF32[i32 >> 2] = 0.0; - HEAPF32[i33 >> 2] = 0.0; - d21 = d21 - d12 * d37; - d20 = d20 - d12 * d38; - d14 = d14 + d11 * d37; - d13 = d13 + d11 * d38; - d18 = d18 - d10 * (d39 * d30 - d40 * d26 + (d43 * d29 - d44 * d28)); - d15 = d15 + d9 * (d39 * d24 - d40 * d23 + (d43 * d25 - d44 * d27)); - } - } else { - d23 = +HEAPF32[i19 + (i5 * 152 | 0) + 12 >> 2]; - d24 = +HEAPF32[i19 + (i5 * 152 | 0) + 8 >> 2]; - d25 = +HEAPF32[i19 + (i5 * 152 | 0) + 4 >> 2]; - d26 = +HEAPF32[i22 >> 2]; - i22 = i19 + (i5 * 152 | 0) + 16 | 0; - d27 = +HEAPF32[i22 >> 2]; - d28 = d27 - +HEAPF32[i19 + (i5 * 152 | 0) + 24 >> 2] * (d17 * (d14 - d15 * d23 - d21 + d18 * d25) + d16 * (d13 + d15 * d24 - d20 - d18 * d26) - +HEAPF32[i19 + (i5 * 152 | 0) + 32 >> 2]); - d44 = d28 > 0.0 ? d28 : 0.0; - d43 = d44 - d27; - HEAPF32[i22 >> 2] = d44; - d44 = d17 * d43; - d43 = d16 * d43; - d21 = d21 - d12 * d44; - d20 = d20 - d12 * d43; - d14 = d14 + d11 * d44; - d13 = d13 + d11 * d43; - d18 = d18 - d10 * (d26 * d43 - d25 * d44); - d15 = d15 + d9 * (d24 * d43 - d23 * d44); - } - } while (0); - d44 = +d21; - d43 = +d20; - i42 = i7; - HEAPF32[i42 >> 2] = d44; - HEAPF32[i42 + 4 >> 2] = d43; - i42 = HEAP32[i4 >> 2] | 0; - HEAPF32[i42 + (i8 * 12 | 0) + 8 >> 2] = d18; - d43 = +d14; - d44 = +d13; - i42 = i42 + (i6 * 12 | 0) | 0; - HEAPF32[i42 >> 2] = d43; - HEAPF32[i42 + 4 >> 2] = d44; - i42 = HEAP32[i4 >> 2] | 0; - HEAPF32[i42 + (i6 * 12 | 0) + 8 >> 2] = d15; - i5 = i5 + 1 | 0; - if ((i5 | 0) >= (HEAP32[i2 >> 2] | 0)) { - i2 = 21; - break; - } - } - if ((i2 | 0) == 4) { - ___assert_fail(6648, 6520, 311, 6688); - } else if ((i2 | 0) == 9) { - ___assert_fail(6720, 6520, 406, 6688); - } else if ((i2 | 0) == 21) { - STACKTOP = i1; - return; - } -} -function __Z14b2TimeOfImpactP11b2TOIOutputPK10b2TOIInput(i3, i11) { - i3 = i3 | 0; - i11 = i11 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, d14 = 0.0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, d28 = 0.0, i29 = 0, d30 = 0.0, d31 = 0.0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, d40 = 0.0, i41 = 0, d42 = 0.0, d43 = 0.0, i44 = 0, i45 = 0, d46 = 0.0, i47 = 0, d48 = 0.0, d49 = 0.0, d50 = 0.0, d51 = 0.0, i52 = 0, d53 = 0.0, d54 = 0.0, d55 = 0.0, d56 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 320 | 0; - i12 = i1 + 276 | 0; - i10 = i1 + 240 | 0; - i13 = i1 + 228 | 0; - i5 = i1 + 136 | 0; - i7 = i1 + 112 | 0; - i8 = i1 + 8 | 0; - i9 = i1 + 4 | 0; - i4 = i1; - HEAP32[874] = (HEAP32[874] | 0) + 1; - HEAP32[i3 >> 2] = 0; - i19 = i11 + 128 | 0; - i2 = i3 + 4 | 0; - HEAPF32[i2 >> 2] = +HEAPF32[i19 >> 2]; - i6 = i11 + 28 | 0; - i16 = i12 + 0 | 0; - i15 = i11 + 56 | 0; - i17 = i16 + 36 | 0; - do { - HEAP32[i16 >> 2] = HEAP32[i15 >> 2]; - i16 = i16 + 4 | 0; - i15 = i15 + 4 | 0; - } while ((i16 | 0) < (i17 | 0)); - i16 = i10 + 0 | 0; - i15 = i11 + 92 | 0; - i17 = i16 + 36 | 0; - do { - HEAP32[i16 >> 2] = HEAP32[i15 >> 2]; - i16 = i16 + 4 | 0; - i15 = i15 + 4 | 0; - } while ((i16 | 0) < (i17 | 0)); - i15 = i12 + 24 | 0; - d42 = +HEAPF32[i15 >> 2]; - d43 = +Math_floor(+(d42 / 6.2831854820251465)) * 6.2831854820251465; - d42 = d42 - d43; - HEAPF32[i15 >> 2] = d42; - i16 = i12 + 28 | 0; - d43 = +HEAPF32[i16 >> 2] - d43; - HEAPF32[i16 >> 2] = d43; - i17 = i10 + 24 | 0; - d46 = +HEAPF32[i17 >> 2]; - d40 = +Math_floor(+(d46 / 6.2831854820251465)) * 6.2831854820251465; - d46 = d46 - d40; - HEAPF32[i17 >> 2] = d46; - i18 = i10 + 28 | 0; - d40 = +HEAPF32[i18 >> 2] - d40; - HEAPF32[i18 >> 2] = d40; - d14 = +HEAPF32[i19 >> 2]; - d28 = +HEAPF32[i11 + 24 >> 2] + +HEAPF32[i11 + 52 >> 2] + -.014999999664723873; - d28 = d28 < .004999999888241291 ? .004999999888241291 : d28; - if (!(d28 > .0012499999720603228)) { - ___assert_fail(3536, 3560, 280, 3600); - } - HEAP16[i13 + 4 >> 1] = 0; - HEAP32[i5 + 0 >> 2] = HEAP32[i11 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i11 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i11 + 8 >> 2]; - HEAP32[i5 + 12 >> 2] = HEAP32[i11 + 12 >> 2]; - HEAP32[i5 + 16 >> 2] = HEAP32[i11 + 16 >> 2]; - HEAP32[i5 + 20 >> 2] = HEAP32[i11 + 20 >> 2]; - HEAP32[i5 + 24 >> 2] = HEAP32[i11 + 24 >> 2]; - i38 = i5 + 28 | 0; - HEAP32[i38 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i38 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i38 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i38 + 12 >> 2] = HEAP32[i6 + 12 >> 2]; - HEAP32[i38 + 16 >> 2] = HEAP32[i6 + 16 >> 2]; - HEAP32[i38 + 20 >> 2] = HEAP32[i6 + 20 >> 2]; - HEAP32[i38 + 24 >> 2] = HEAP32[i6 + 24 >> 2]; - HEAP8[i5 + 88 | 0] = 0; - i38 = i12 + 8 | 0; - i27 = i12 + 12 | 0; - i29 = i12 + 16 | 0; - i22 = i12 + 20 | 0; - i32 = i12 + 4 | 0; - i34 = i10 + 8 | 0; - i36 = i10 + 12 | 0; - i35 = i10 + 16 | 0; - i37 = i10 + 20 | 0; - i33 = i10 + 4 | 0; - i26 = i5 + 56 | 0; - i25 = i5 + 64 | 0; - i24 = i5 + 68 | 0; - i23 = i5 + 72 | 0; - i20 = i5 + 80 | 0; - i19 = i5 + 84 | 0; - i21 = i7 + 16 | 0; - d30 = d28 + .0012499999720603228; - d31 = d28 + -.0012499999720603228; - d48 = d40; - i39 = 0; - d40 = 0.0; - L4 : while (1) { - d56 = 1.0 - d40; - d49 = d56 * d42 + d40 * d43; - d43 = +Math_sin(+d49); - d49 = +Math_cos(+d49); - d55 = +HEAPF32[i12 >> 2]; - d54 = +HEAPF32[i32 >> 2]; - d42 = d56 * d46 + d40 * d48; - d53 = +Math_sin(+d42); - d42 = +Math_cos(+d42); - d46 = +HEAPF32[i10 >> 2]; - d51 = +HEAPF32[i33 >> 2]; - d50 = d56 * +HEAPF32[i34 >> 2] + d40 * +HEAPF32[i35 >> 2] - (d42 * d46 - d53 * d51); - d51 = d56 * +HEAPF32[i36 >> 2] + d40 * +HEAPF32[i37 >> 2] - (d53 * d46 + d42 * d51); - d46 = +(d56 * +HEAPF32[i38 >> 2] + d40 * +HEAPF32[i29 >> 2] - (d49 * d55 - d43 * d54)); - d48 = +(d56 * +HEAPF32[i27 >> 2] + d40 * +HEAPF32[i22 >> 2] - (d43 * d55 + d49 * d54)); - i52 = i26; - HEAPF32[i52 >> 2] = d46; - HEAPF32[i52 + 4 >> 2] = d48; - HEAPF32[i25 >> 2] = d43; - HEAPF32[i24 >> 2] = d49; - d50 = +d50; - d51 = +d51; - i52 = i23; - HEAPF32[i52 >> 2] = d50; - HEAPF32[i52 + 4 >> 2] = d51; - HEAPF32[i20 >> 2] = d53; - HEAPF32[i19 >> 2] = d42; - __Z10b2DistanceP16b2DistanceOutputP14b2SimplexCachePK15b2DistanceInput(i7, i13, i5); - d42 = +HEAPF32[i21 >> 2]; - if (d42 <= 0.0) { - i4 = 5; - break; - } - if (d42 < d30) { - i4 = 7; - break; - } - +__ZN20b2SeparationFunction10InitializeEPK14b2SimplexCachePK15b2DistanceProxyRK7b2SweepS5_S8_f(i8, i13, i11, i12, i6, i10, d40); - i41 = 0; - d42 = d14; - do { - d50 = +__ZNK20b2SeparationFunction17FindMinSeparationEPiS0_f(i8, i9, i4, d42); - if (d50 > d30) { - i4 = 10; - break L4; - } - if (d50 > d31) { - d40 = d42; - break; - } - i45 = HEAP32[i9 >> 2] | 0; - i44 = HEAP32[i4 >> 2] | 0; - d48 = +__ZNK20b2SeparationFunction8EvaluateEiif(i8, i45, i44, d40); - if (d48 < d31) { - i4 = 13; - break L4; - } - if (!(d48 <= d30)) { - d43 = d40; - d46 = d42; - i47 = 0; - } else { - i4 = 15; - break L4; - } - while (1) { - if ((i47 & 1 | 0) == 0) { - d49 = (d43 + d46) * .5; - } else { - d49 = d43 + (d28 - d48) * (d46 - d43) / (d50 - d48); - } - d51 = +__ZNK20b2SeparationFunction8EvaluateEiif(i8, i45, i44, d49); - d53 = d51 - d28; - if (!(d53 > 0.0)) { - d53 = -d53; - } - if (d53 < .0012499999720603228) { - d42 = d49; - break; - } - i52 = d51 > d28; - i47 = i47 + 1 | 0; - HEAP32[880] = (HEAP32[880] | 0) + 1; - if ((i47 | 0) == 50) { - i47 = 50; - break; - } else { - d43 = i52 ? d49 : d43; - d46 = i52 ? d46 : d49; - d48 = i52 ? d51 : d48; - d50 = i52 ? d50 : d51; - } - } - i44 = HEAP32[882] | 0; - HEAP32[882] = (i44 | 0) > (i47 | 0) ? i44 : i47; - i41 = i41 + 1 | 0; - } while ((i41 | 0) != 8); - i39 = i39 + 1 | 0; - HEAP32[876] = (HEAP32[876] | 0) + 1; - if ((i39 | 0) == 20) { - i4 = 27; - break; - } - d42 = +HEAPF32[i15 >> 2]; - d43 = +HEAPF32[i16 >> 2]; - d46 = +HEAPF32[i17 >> 2]; - d48 = +HEAPF32[i18 >> 2]; - } - if ((i4 | 0) == 5) { - HEAP32[i3 >> 2] = 2; - HEAPF32[i2 >> 2] = 0.0; - i2 = HEAP32[878] | 0; - i52 = (i2 | 0) > (i39 | 0); - i52 = i52 ? i2 : i39; - HEAP32[878] = i52; - STACKTOP = i1; - return; - } else if ((i4 | 0) == 7) { - HEAP32[i3 >> 2] = 3; - HEAPF32[i2 >> 2] = d40; - i2 = HEAP32[878] | 0; - i52 = (i2 | 0) > (i39 | 0); - i52 = i52 ? i2 : i39; - HEAP32[878] = i52; - STACKTOP = i1; - return; - } else if ((i4 | 0) == 10) { - HEAP32[i3 >> 2] = 4; - HEAPF32[i2 >> 2] = d14; - } else if ((i4 | 0) == 13) { - HEAP32[i3 >> 2] = 1; - HEAPF32[i2 >> 2] = d40; - } else if ((i4 | 0) == 15) { - HEAP32[i3 >> 2] = 3; - HEAPF32[i2 >> 2] = d40; - } else if ((i4 | 0) == 27) { - HEAP32[i3 >> 2] = 1; - HEAPF32[i2 >> 2] = d40; - i39 = 20; - i2 = HEAP32[878] | 0; - i52 = (i2 | 0) > (i39 | 0); - i52 = i52 ? i2 : i39; - HEAP32[878] = i52; - STACKTOP = i1; - return; - } - HEAP32[876] = (HEAP32[876] | 0) + 1; - i39 = i39 + 1 | 0; - i2 = HEAP32[878] | 0; - i52 = (i2 | 0) > (i39 | 0); - i52 = i52 ? i2 : i39; - HEAP32[878] = i52; - STACKTOP = i1; - return; -} -function __ZN7b2World5SolveERK10b2TimeStep(i5, i15) { - i5 = i5 | 0; - i15 = i15 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, d39 = 0.0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 96 | 0; - i4 = i3 + 32 | 0; - i9 = i3; - i2 = i3 + 84 | 0; - i11 = i5 + 103008 | 0; - HEAPF32[i11 >> 2] = 0.0; - i14 = i5 + 103012 | 0; - HEAPF32[i14 >> 2] = 0.0; - i8 = i5 + 103016 | 0; - HEAPF32[i8 >> 2] = 0.0; - i16 = i5 + 102960 | 0; - i1 = i5 + 102872 | 0; - i6 = i5 + 68 | 0; - __ZN8b2IslandC2EiiiP16b2StackAllocatorP17b2ContactListener(i4, HEAP32[i16 >> 2] | 0, HEAP32[i5 + 102936 >> 2] | 0, HEAP32[i5 + 102964 >> 2] | 0, i6, HEAP32[i5 + 102944 >> 2] | 0); - i7 = i5 + 102952 | 0; - i17 = HEAP32[i7 >> 2] | 0; - if ((i17 | 0) != 0) { - do { - i38 = i17 + 4 | 0; - HEAP16[i38 >> 1] = HEAP16[i38 >> 1] & 65534; - i17 = HEAP32[i17 + 96 >> 2] | 0; - } while ((i17 | 0) != 0); - } - i17 = HEAP32[i5 + 102932 >> 2] | 0; - if ((i17 | 0) != 0) { - do { - i38 = i17 + 4 | 0; - HEAP32[i38 >> 2] = HEAP32[i38 >> 2] & -2; - i17 = HEAP32[i17 + 12 >> 2] | 0; - } while ((i17 | 0) != 0); - } - i17 = HEAP32[i5 + 102956 >> 2] | 0; - if ((i17 | 0) != 0) { - do { - HEAP8[i17 + 60 | 0] = 0; - i17 = HEAP32[i17 + 12 >> 2] | 0; - } while ((i17 | 0) != 0); - } - i24 = HEAP32[i16 >> 2] | 0; - i16 = __ZN16b2StackAllocator8AllocateEi(i6, i24 << 2) | 0; - i32 = HEAP32[i7 >> 2] | 0; - L13 : do { - if ((i32 | 0) != 0) { - i18 = i4 + 28 | 0; - i30 = i4 + 36 | 0; - i27 = i4 + 32 | 0; - i17 = i4 + 40 | 0; - i23 = i4 + 8 | 0; - i29 = i4 + 48 | 0; - i28 = i4 + 16 | 0; - i26 = i4 + 44 | 0; - i31 = i4 + 12 | 0; - i25 = i5 + 102968 | 0; - i22 = i5 + 102976 | 0; - i21 = i9 + 12 | 0; - i20 = i9 + 16 | 0; - i19 = i9 + 20 | 0; - L15 : while (1) { - i33 = i32 + 4 | 0; - i34 = HEAP16[i33 >> 1] | 0; - if ((i34 & 35) == 34 ? (HEAP32[i32 >> 2] | 0) != 0 : 0) { - HEAP32[i18 >> 2] = 0; - HEAP32[i30 >> 2] = 0; - HEAP32[i27 >> 2] = 0; - HEAP32[i16 >> 2] = i32; - HEAP16[i33 >> 1] = i34 & 65535 | 1; - i35 = 1; - do { - i35 = i35 + -1 | 0; - i33 = HEAP32[i16 + (i35 << 2) >> 2] | 0; - i34 = i33 + 4 | 0; - i36 = HEAP16[i34 >> 1] | 0; - if ((i36 & 32) == 0) { - i8 = 13; - break L15; - } - i37 = HEAP32[i18 >> 2] | 0; - if ((i37 | 0) >= (HEAP32[i17 >> 2] | 0)) { - i8 = 15; - break L15; - } - HEAP32[i33 + 8 >> 2] = i37; - i38 = HEAP32[i18 >> 2] | 0; - HEAP32[(HEAP32[i23 >> 2] | 0) + (i38 << 2) >> 2] = i33; - HEAP32[i18 >> 2] = i38 + 1; - i36 = i36 & 65535; - if ((i36 & 2 | 0) == 0) { - HEAP16[i34 >> 1] = i36 | 2; - HEAPF32[i33 + 144 >> 2] = 0.0; - } - if ((HEAP32[i33 >> 2] | 0) != 0) { - i34 = HEAP32[i33 + 112 >> 2] | 0; - if ((i34 | 0) != 0) { - do { - i38 = HEAP32[i34 + 4 >> 2] | 0; - i36 = i38 + 4 | 0; - if (((HEAP32[i36 >> 2] & 7 | 0) == 6 ? (HEAP8[(HEAP32[i38 + 48 >> 2] | 0) + 38 | 0] | 0) == 0 : 0) ? (HEAP8[(HEAP32[i38 + 52 >> 2] | 0) + 38 | 0] | 0) == 0 : 0) { - i37 = HEAP32[i30 >> 2] | 0; - if ((i37 | 0) >= (HEAP32[i26 >> 2] | 0)) { - i8 = 25; - break L15; - } - HEAP32[i30 >> 2] = i37 + 1; - HEAP32[(HEAP32[i31 >> 2] | 0) + (i37 << 2) >> 2] = i38; - HEAP32[i36 >> 2] = HEAP32[i36 >> 2] | 1; - i38 = HEAP32[i34 >> 2] | 0; - i36 = i38 + 4 | 0; - i37 = HEAP16[i36 >> 1] | 0; - if ((i37 & 1) == 0) { - if ((i35 | 0) >= (i24 | 0)) { - i8 = 28; - break L15; - } - HEAP32[i16 + (i35 << 2) >> 2] = i38; - HEAP16[i36 >> 1] = i37 & 65535 | 1; - i35 = i35 + 1 | 0; - } - } - i34 = HEAP32[i34 + 12 >> 2] | 0; - } while ((i34 | 0) != 0); - } - i33 = HEAP32[i33 + 108 >> 2] | 0; - if ((i33 | 0) != 0) { - do { - i37 = i33 + 4 | 0; - i36 = HEAP32[i37 >> 2] | 0; - if ((HEAP8[i36 + 60 | 0] | 0) == 0 ? (i10 = HEAP32[i33 >> 2] | 0, i13 = i10 + 4 | 0, i12 = HEAP16[i13 >> 1] | 0, !((i12 & 32) == 0)) : 0) { - i34 = HEAP32[i27 >> 2] | 0; - if ((i34 | 0) >= (HEAP32[i29 >> 2] | 0)) { - i8 = 35; - break L15; - } - HEAP32[i27 >> 2] = i34 + 1; - HEAP32[(HEAP32[i28 >> 2] | 0) + (i34 << 2) >> 2] = i36; - HEAP8[(HEAP32[i37 >> 2] | 0) + 60 | 0] = 1; - if ((i12 & 1) == 0) { - if ((i35 | 0) >= (i24 | 0)) { - i8 = 38; - break L15; - } - HEAP32[i16 + (i35 << 2) >> 2] = i10; - HEAP16[i13 >> 1] = i12 & 65535 | 1; - i35 = i35 + 1 | 0; - } - } - i33 = HEAP32[i33 + 12 >> 2] | 0; - } while ((i33 | 0) != 0); - } - } - } while ((i35 | 0) > 0); - __ZN8b2Island5SolveEP9b2ProfileRK10b2TimeStepRK6b2Vec2b(i4, i9, i15, i25, (HEAP8[i22] | 0) != 0); - HEAPF32[i11 >> 2] = +HEAPF32[i21 >> 2] + +HEAPF32[i11 >> 2]; - HEAPF32[i14 >> 2] = +HEAPF32[i20 >> 2] + +HEAPF32[i14 >> 2]; - HEAPF32[i8 >> 2] = +HEAPF32[i19 >> 2] + +HEAPF32[i8 >> 2]; - i35 = HEAP32[i18 >> 2] | 0; - if ((i35 | 0) > 0) { - i33 = HEAP32[i23 >> 2] | 0; - i36 = 0; - do { - i34 = HEAP32[i33 + (i36 << 2) >> 2] | 0; - if ((HEAP32[i34 >> 2] | 0) == 0) { - i38 = i34 + 4 | 0; - HEAP16[i38 >> 1] = HEAP16[i38 >> 1] & 65534; - } - i36 = i36 + 1 | 0; - } while ((i36 | 0) < (i35 | 0)); - } - } - i32 = HEAP32[i32 + 96 >> 2] | 0; - if ((i32 | 0) == 0) { - break L13; - } - } - if ((i8 | 0) == 13) { - ___assert_fail(2232, 2184, 445, 2256); - } else if ((i8 | 0) == 15) { - ___assert_fail(2520, 2440, 54, 2472); - } else if ((i8 | 0) == 25) { - ___assert_fail(2480, 2440, 62, 2472); - } else if ((i8 | 0) == 28) { - ___assert_fail(2264, 2184, 495, 2256); - } else if ((i8 | 0) == 35) { - ___assert_fail(2408, 2440, 68, 2472); - } else if ((i8 | 0) == 38) { - ___assert_fail(2264, 2184, 524, 2256); - } - } - } while (0); - __ZN16b2StackAllocator4FreeEPv(i6, i16); - __ZN7b2TimerC2Ev(i2); - i6 = HEAP32[i7 >> 2] | 0; - if ((i6 | 0) == 0) { - __ZN16b2ContactManager15FindNewContactsEv(i1); - d39 = +__ZNK7b2Timer15GetMillisecondsEv(i2); - i38 = i5 + 103020 | 0; - HEAPF32[i38 >> 2] = d39; - __ZN8b2IslandD2Ev(i4); - STACKTOP = i3; - return; - } - do { - if (!((HEAP16[i6 + 4 >> 1] & 1) == 0) ? (HEAP32[i6 >> 2] | 0) != 0 : 0) { - __ZN6b2Body19SynchronizeFixturesEv(i6); - } - i6 = HEAP32[i6 + 96 >> 2] | 0; - } while ((i6 | 0) != 0); - __ZN16b2ContactManager15FindNewContactsEv(i1); - d39 = +__ZNK7b2Timer15GetMillisecondsEv(i2); - i38 = i5 + 103020 | 0; - HEAPF32[i38 >> 2] = d39; - __ZN8b2IslandD2Ev(i4); - STACKTOP = i3; - return; -} -function __ZN15b2ContactSolver29InitializeVelocityConstraintsEv(i10) { - i10 = i10 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, d17 = 0.0, d18 = 0.0, d19 = 0.0, d20 = 0.0, d21 = 0.0, d22 = 0.0, d23 = 0.0, d24 = 0.0, d25 = 0.0, d26 = 0.0, d27 = 0.0, d28 = 0.0, d29 = 0.0, d30 = 0.0, i31 = 0, d32 = 0.0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, d38 = 0.0, d39 = 0.0, d40 = 0.0, d41 = 0.0, i42 = 0, d43 = 0.0, d44 = 0.0, d45 = 0.0, d46 = 0.0, d47 = 0.0, d48 = 0.0, i49 = 0, i50 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i8 = i1 + 40 | 0; - i3 = i1 + 24 | 0; - i5 = i1; - i4 = i10 + 48 | 0; - if ((HEAP32[i4 >> 2] | 0) <= 0) { - STACKTOP = i1; - return; - } - i9 = i10 + 40 | 0; - i2 = i10 + 36 | 0; - i7 = i10 + 44 | 0; - i6 = i10 + 24 | 0; - i13 = i10 + 28 | 0; - i14 = i8 + 8 | 0; - i12 = i8 + 12 | 0; - i11 = i3 + 8 | 0; - i10 = i3 + 12 | 0; - i16 = 0; - while (1) { - i15 = HEAP32[i9 >> 2] | 0; - i33 = HEAP32[i2 >> 2] | 0; - i31 = HEAP32[(HEAP32[i7 >> 2] | 0) + (HEAP32[i15 + (i16 * 152 | 0) + 148 >> 2] << 2) >> 2] | 0; - i35 = HEAP32[i15 + (i16 * 152 | 0) + 112 >> 2] | 0; - i42 = HEAP32[i15 + (i16 * 152 | 0) + 116 >> 2] | 0; - d30 = +HEAPF32[i15 + (i16 * 152 | 0) + 120 >> 2]; - d24 = +HEAPF32[i15 + (i16 * 152 | 0) + 124 >> 2]; - d17 = +HEAPF32[i15 + (i16 * 152 | 0) + 128 >> 2]; - d18 = +HEAPF32[i15 + (i16 * 152 | 0) + 132 >> 2]; - i36 = i33 + (i16 * 88 | 0) + 48 | 0; - d39 = +HEAPF32[i36 >> 2]; - d40 = +HEAPF32[i36 + 4 >> 2]; - i36 = i33 + (i16 * 88 | 0) + 56 | 0; - d41 = +HEAPF32[i36 >> 2]; - d43 = +HEAPF32[i36 + 4 >> 2]; - i36 = HEAP32[i6 >> 2] | 0; - i37 = i36 + (i35 * 12 | 0) | 0; - d26 = +HEAPF32[i37 >> 2]; - d27 = +HEAPF32[i37 + 4 >> 2]; - d32 = +HEAPF32[i36 + (i35 * 12 | 0) + 8 >> 2]; - i37 = HEAP32[i13 >> 2] | 0; - i34 = i37 + (i35 * 12 | 0) | 0; - d22 = +HEAPF32[i34 >> 2]; - d25 = +HEAPF32[i34 + 4 >> 2]; - d23 = +HEAPF32[i37 + (i35 * 12 | 0) + 8 >> 2]; - i35 = i36 + (i42 * 12 | 0) | 0; - d28 = +HEAPF32[i35 >> 2]; - d29 = +HEAPF32[i35 + 4 >> 2]; - d38 = +HEAPF32[i36 + (i42 * 12 | 0) + 8 >> 2]; - i36 = i37 + (i42 * 12 | 0) | 0; - d20 = +HEAPF32[i36 >> 2]; - d19 = +HEAPF32[i36 + 4 >> 2]; - d21 = +HEAPF32[i37 + (i42 * 12 | 0) + 8 >> 2]; - if ((HEAP32[i31 + 124 >> 2] | 0) <= 0) { - i2 = 4; - break; - } - d44 = +HEAPF32[i33 + (i16 * 88 | 0) + 80 >> 2]; - d45 = +HEAPF32[i33 + (i16 * 88 | 0) + 76 >> 2]; - d47 = +Math_sin(+d32); - HEAPF32[i14 >> 2] = d47; - d48 = +Math_cos(+d32); - HEAPF32[i12 >> 2] = d48; - d32 = +Math_sin(+d38); - HEAPF32[i11 >> 2] = d32; - d38 = +Math_cos(+d38); - HEAPF32[i10 >> 2] = d38; - d46 = +(d26 - (d39 * d48 - d40 * d47)); - d40 = +(d27 - (d40 * d48 + d39 * d47)); - i37 = i8; - HEAPF32[i37 >> 2] = d46; - HEAPF32[i37 + 4 >> 2] = d40; - d40 = +(d28 - (d41 * d38 - d43 * d32)); - d43 = +(d29 - (d43 * d38 + d41 * d32)); - i37 = i3; - HEAPF32[i37 >> 2] = d40; - HEAPF32[i37 + 4 >> 2] = d43; - __ZN15b2WorldManifold10InitializeEPK10b2ManifoldRK11b2TransformfS5_f(i5, i31 + 64 | 0, i8, d45, i3, d44); - i37 = i15 + (i16 * 152 | 0) + 72 | 0; - i42 = i5; - i33 = HEAP32[i42 + 4 >> 2] | 0; - i31 = i37; - HEAP32[i31 >> 2] = HEAP32[i42 >> 2]; - HEAP32[i31 + 4 >> 2] = i33; - i31 = i15 + (i16 * 152 | 0) + 144 | 0; - i33 = HEAP32[i31 >> 2] | 0; - do { - if ((i33 | 0) > 0) { - i36 = i15 + (i16 * 152 | 0) + 76 | 0; - d32 = d30 + d24; - i35 = i15 + (i16 * 152 | 0) + 140 | 0; - i34 = 0; - do { - i49 = i5 + (i34 << 3) + 8 | 0; - d41 = +HEAPF32[i49 >> 2] - d26; - i42 = i5 + (i34 << 3) + 12 | 0; - d39 = +d41; - d40 = +(+HEAPF32[i42 >> 2] - d27); - i50 = i15 + (i16 * 152 | 0) + (i34 * 36 | 0) | 0; - HEAPF32[i50 >> 2] = d39; - HEAPF32[i50 + 4 >> 2] = d40; - d40 = +HEAPF32[i49 >> 2] - d28; - d39 = +d40; - d47 = +(+HEAPF32[i42 >> 2] - d29); - i42 = i15 + (i16 * 152 | 0) + (i34 * 36 | 0) + 8 | 0; - HEAPF32[i42 >> 2] = d39; - HEAPF32[i42 + 4 >> 2] = d47; - d47 = +HEAPF32[i36 >> 2]; - d39 = +HEAPF32[i15 + (i16 * 152 | 0) + (i34 * 36 | 0) + 4 >> 2]; - d43 = +HEAPF32[i37 >> 2]; - d48 = d41 * d47 - d39 * d43; - d38 = +HEAPF32[i15 + (i16 * 152 | 0) + (i34 * 36 | 0) + 12 >> 2]; - d43 = d47 * d40 - d43 * d38; - d43 = d32 + d48 * d17 * d48 + d43 * d18 * d43; - if (d43 > 0.0) { - d43 = 1.0 / d43; - } else { - d43 = 0.0; - } - HEAPF32[i15 + (i16 * 152 | 0) + (i34 * 36 | 0) + 24 >> 2] = d43; - d43 = +HEAPF32[i36 >> 2]; - d47 = -+HEAPF32[i37 >> 2]; - d48 = d41 * d47 - d43 * d39; - d43 = d40 * d47 - d43 * d38; - d43 = d32 + d48 * d17 * d48 + d43 * d18 * d43; - if (d43 > 0.0) { - d43 = 1.0 / d43; - } else { - d43 = 0.0; - } - HEAPF32[i15 + (i16 * 152 | 0) + (i34 * 36 | 0) + 28 >> 2] = d43; - i42 = i15 + (i16 * 152 | 0) + (i34 * 36 | 0) + 32 | 0; - HEAPF32[i42 >> 2] = 0.0; - d38 = +HEAPF32[i37 >> 2] * (d20 - d21 * d38 - d22 + d23 * d39) + +HEAPF32[i36 >> 2] * (d19 + d21 * d40 - d25 - d23 * d41); - if (d38 < -1.0) { - HEAPF32[i42 >> 2] = -(d38 * +HEAPF32[i35 >> 2]); - } - i34 = i34 + 1 | 0; - } while ((i34 | 0) != (i33 | 0)); - if ((HEAP32[i31 >> 2] | 0) == 2) { - d45 = +HEAPF32[i15 + (i16 * 152 | 0) + 76 >> 2]; - d20 = +HEAPF32[i37 >> 2]; - d44 = +HEAPF32[i15 + (i16 * 152 | 0) >> 2] * d45 - +HEAPF32[i15 + (i16 * 152 | 0) + 4 >> 2] * d20; - d19 = d45 * +HEAPF32[i15 + (i16 * 152 | 0) + 8 >> 2] - d20 * +HEAPF32[i15 + (i16 * 152 | 0) + 12 >> 2]; - d47 = d45 * +HEAPF32[i15 + (i16 * 152 | 0) + 36 >> 2] - d20 * +HEAPF32[i15 + (i16 * 152 | 0) + 40 >> 2]; - d20 = d45 * +HEAPF32[i15 + (i16 * 152 | 0) + 44 >> 2] - d20 * +HEAPF32[i15 + (i16 * 152 | 0) + 48 >> 2]; - d45 = d30 + d24; - d46 = d17 * d44; - d48 = d18 * d19; - d19 = d45 + d44 * d46 + d19 * d48; - d18 = d45 + d47 * d17 * d47 + d20 * d18 * d20; - d17 = d45 + d46 * d47 + d48 * d20; - d20 = d19 * d18 - d17 * d17; - if (!(d19 * d19 < d20 * 1.0e3)) { - HEAP32[i31 >> 2] = 1; - break; - } - HEAPF32[i15 + (i16 * 152 | 0) + 96 >> 2] = d19; - HEAPF32[i15 + (i16 * 152 | 0) + 100 >> 2] = d17; - HEAPF32[i15 + (i16 * 152 | 0) + 104 >> 2] = d17; - HEAPF32[i15 + (i16 * 152 | 0) + 108 >> 2] = d18; - if (d20 != 0.0) { - d20 = 1.0 / d20; - } - d48 = -(d20 * d17); - HEAPF32[i15 + (i16 * 152 | 0) + 80 >> 2] = d18 * d20; - HEAPF32[i15 + (i16 * 152 | 0) + 84 >> 2] = d48; - HEAPF32[i15 + (i16 * 152 | 0) + 88 >> 2] = d48; - HEAPF32[i15 + (i16 * 152 | 0) + 92 >> 2] = d19 * d20; - } - } - } while (0); - i16 = i16 + 1 | 0; - if ((i16 | 0) >= (HEAP32[i4 >> 2] | 0)) { - i2 = 21; - break; - } - } - if ((i2 | 0) == 4) { - ___assert_fail(6584, 6520, 168, 6616); - } else if ((i2 | 0) == 21) { - STACKTOP = i1; - return; - } -} -function __Z17b2CollidePolygonsP10b2ManifoldPK14b2PolygonShapeRK11b2TransformS3_S6_(i5, i27, i28, i24, i14) { - i5 = i5 | 0; - i27 = i27 | 0; - i28 = i28 | 0; - i24 = i24 | 0; - i14 = i14 | 0; - var i1 = 0, i2 = 0, d3 = 0.0, i4 = 0, d6 = 0.0, d7 = 0.0, d8 = 0.0, d9 = 0.0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, d15 = 0.0, d16 = 0.0, i17 = 0, d18 = 0.0, d19 = 0.0, i20 = 0, d21 = 0.0, d22 = 0.0, d23 = 0.0, d25 = 0.0, d26 = 0.0, d29 = 0.0, d30 = 0.0, i31 = 0, d32 = 0.0, i33 = 0, i34 = 0, d35 = 0.0, d36 = 0.0, d37 = 0.0, d38 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 96 | 0; - i17 = i1 + 92 | 0; - i20 = i1 + 88 | 0; - i13 = i1; - i11 = i1 + 80 | 0; - i12 = i1 + 56 | 0; - i4 = i1 + 32 | 0; - i10 = i1 + 24 | 0; - i2 = i5 + 60 | 0; - HEAP32[i2 >> 2] = 0; - d3 = +HEAPF32[i27 + 8 >> 2] + +HEAPF32[i24 + 8 >> 2]; - HEAP32[i17 >> 2] = 0; - d7 = +__ZL19b2FindMaxSeparationPiPK14b2PolygonShapeRK11b2TransformS2_S5_(i17, i27, i28, i24, i14); - if (d7 > d3) { - STACKTOP = i1; - return; - } - HEAP32[i20 >> 2] = 0; - d6 = +__ZL19b2FindMaxSeparationPiPK14b2PolygonShapeRK11b2TransformS2_S5_(i20, i24, i14, i27, i28); - if (d6 > d3) { - STACKTOP = i1; - return; - } - if (d6 > d7 * .9800000190734863 + .0010000000474974513) { - d18 = +HEAPF32[i14 >> 2]; - d19 = +HEAPF32[i14 + 4 >> 2]; - d15 = +HEAPF32[i14 + 8 >> 2]; - d16 = +HEAPF32[i14 + 12 >> 2]; - d9 = +HEAPF32[i28 >> 2]; - d6 = +HEAPF32[i28 + 4 >> 2]; - d7 = +HEAPF32[i28 + 8 >> 2]; - d8 = +HEAPF32[i28 + 12 >> 2]; - i17 = HEAP32[i20 >> 2] | 0; - HEAP32[i5 + 56 >> 2] = 2; - i14 = 1; - i20 = i24; - } else { - d18 = +HEAPF32[i28 >> 2]; - d19 = +HEAPF32[i28 + 4 >> 2]; - d15 = +HEAPF32[i28 + 8 >> 2]; - d16 = +HEAPF32[i28 + 12 >> 2]; - d9 = +HEAPF32[i14 >> 2]; - d6 = +HEAPF32[i14 + 4 >> 2]; - d7 = +HEAPF32[i14 + 8 >> 2]; - d8 = +HEAPF32[i14 + 12 >> 2]; - i17 = HEAP32[i17 >> 2] | 0; - HEAP32[i5 + 56 >> 2] = 1; - i14 = 0; - i20 = i27; - i27 = i24; - } - i28 = HEAP32[i27 + 148 >> 2] | 0; - if (!((i17 | 0) > -1)) { - ___assert_fail(5640, 5688, 151, 5728); - } - i24 = HEAP32[i20 + 148 >> 2] | 0; - if ((i24 | 0) <= (i17 | 0)) { - ___assert_fail(5640, 5688, 151, 5728); - } - d21 = +HEAPF32[i20 + (i17 << 3) + 84 >> 2]; - d36 = +HEAPF32[i20 + (i17 << 3) + 88 >> 2]; - d22 = d16 * d21 - d15 * d36; - d36 = d15 * d21 + d16 * d36; - d21 = d8 * d22 + d7 * d36; - d22 = d8 * d36 - d7 * d22; - if ((i28 | 0) > 0) { - i33 = 0; - i34 = 0; - d23 = 3.4028234663852886e+38; - while (1) { - d25 = d21 * +HEAPF32[i27 + (i33 << 3) + 84 >> 2] + d22 * +HEAPF32[i27 + (i33 << 3) + 88 >> 2]; - i31 = d25 < d23; - i34 = i31 ? i33 : i34; - i33 = i33 + 1 | 0; - if ((i33 | 0) == (i28 | 0)) { - break; - } else { - d23 = i31 ? d25 : d23; - } - } - } else { - i34 = 0; - } - i31 = i34 + 1 | 0; - i33 = (i31 | 0) < (i28 | 0) ? i31 : 0; - d35 = +HEAPF32[i27 + (i34 << 3) + 20 >> 2]; - d32 = +HEAPF32[i27 + (i34 << 3) + 24 >> 2]; - d36 = +(d9 + (d8 * d35 - d7 * d32)); - d32 = +(d6 + (d7 * d35 + d8 * d32)); - i31 = i13; - HEAPF32[i31 >> 2] = d36; - HEAPF32[i31 + 4 >> 2] = d32; - i31 = i17 & 255; - i28 = i13 + 8 | 0; - HEAP8[i28] = i31; - HEAP8[i28 + 1 | 0] = i34; - HEAP8[i28 + 2 | 0] = 1; - HEAP8[i28 + 3 | 0] = 0; - d32 = +HEAPF32[i27 + (i33 << 3) + 20 >> 2]; - d36 = +HEAPF32[i27 + (i33 << 3) + 24 >> 2]; - d35 = +(d9 + (d8 * d32 - d7 * d36)); - d36 = +(d6 + (d7 * d32 + d8 * d36)); - i27 = i13 + 12 | 0; - HEAPF32[i27 >> 2] = d35; - HEAPF32[i27 + 4 >> 2] = d36; - i27 = i13 + 20 | 0; - HEAP8[i27] = i31; - HEAP8[i27 + 1 | 0] = i33; - HEAP8[i27 + 2 | 0] = 1; - HEAP8[i27 + 3 | 0] = 0; - i27 = i17 + 1 | 0; - i24 = (i27 | 0) < (i24 | 0) ? i27 : 0; - i34 = i20 + (i17 << 3) + 20 | 0; - d26 = +HEAPF32[i34 >> 2]; - d25 = +HEAPF32[i34 + 4 >> 2]; - i34 = i20 + (i24 << 3) + 20 | 0; - d30 = +HEAPF32[i34 >> 2]; - d29 = +HEAPF32[i34 + 4 >> 2]; - d32 = d30 - d26; - d35 = d29 - d25; - d21 = +Math_sqrt(+(d32 * d32 + d35 * d35)); - if (!(d21 < 1.1920928955078125e-7)) { - d36 = 1.0 / d21; - d32 = d32 * d36; - d35 = d35 * d36; - } - d36 = d16 * d32 - d15 * d35; - d21 = d16 * d35 + d15 * d32; - HEAPF32[i11 >> 2] = d36; - HEAPF32[i11 + 4 >> 2] = d21; - d22 = -d36; - d38 = d18 + (d16 * d26 - d15 * d25); - d37 = d19 + (d15 * d26 + d16 * d25); - d23 = d38 * d21 + d37 * d22; - HEAPF32[i10 >> 2] = d22; - HEAPF32[i10 + 4 >> 2] = -d21; - if ((__Z19b2ClipSegmentToLineP12b2ClipVertexPKS_RK6b2Vec2fi(i12, i13, i10, d3 - (d38 * d36 + d37 * d21), i17) | 0) < 2) { - STACKTOP = i1; - return; - } - if ((__Z19b2ClipSegmentToLineP12b2ClipVertexPKS_RK6b2Vec2fi(i4, i12, i11, d3 + ((d18 + (d16 * d30 - d15 * d29)) * d36 + (d19 + (d15 * d30 + d16 * d29)) * d21), i24) | 0) < 2) { - STACKTOP = i1; - return; - } - d16 = +d35; - d15 = +-d32; - i10 = i5 + 40 | 0; - HEAPF32[i10 >> 2] = d16; - HEAPF32[i10 + 4 >> 2] = d15; - d15 = +((d26 + d30) * .5); - d16 = +((d25 + d29) * .5); - i10 = i5 + 48 | 0; - HEAPF32[i10 >> 2] = d15; - HEAPF32[i10 + 4 >> 2] = d16; - d16 = +HEAPF32[i4 >> 2]; - d15 = +HEAPF32[i4 + 4 >> 2]; - i10 = !(d21 * d16 + d15 * d22 - d23 <= d3); - if (i14 << 24 >> 24 == 0) { - if (i10) { - i10 = 0; - } else { - d38 = d16 - d9; - d36 = d15 - d6; - d37 = +(d8 * d38 + d7 * d36); - d38 = +(d8 * d36 - d7 * d38); - i10 = i5; - HEAPF32[i10 >> 2] = d37; - HEAPF32[i10 + 4 >> 2] = d38; - HEAP32[i5 + 16 >> 2] = HEAP32[i4 + 8 >> 2]; - i10 = 1; - } - d16 = +HEAPF32[i4 + 12 >> 2]; - d15 = +HEAPF32[i4 + 16 >> 2]; - if (d21 * d16 + d15 * d22 - d23 <= d3) { - d38 = d16 - d9; - d36 = d15 - d6; - d37 = +(d8 * d38 + d7 * d36); - d38 = +(d8 * d36 - d7 * d38); - i34 = i5 + (i10 * 20 | 0) | 0; - HEAPF32[i34 >> 2] = d37; - HEAPF32[i34 + 4 >> 2] = d38; - HEAP32[i5 + (i10 * 20 | 0) + 16 >> 2] = HEAP32[i4 + 20 >> 2]; - i10 = i10 + 1 | 0; - } - } else { - if (i10) { - i10 = 0; - } else { - d38 = d16 - d9; - d36 = d15 - d6; - d37 = +(d8 * d38 + d7 * d36); - d38 = +(d8 * d36 - d7 * d38); - i10 = i5; - HEAPF32[i10 >> 2] = d37; - HEAPF32[i10 + 4 >> 2] = d38; - i10 = i5 + 16 | 0; - i34 = HEAP32[i4 + 8 >> 2] | 0; - HEAP32[i10 >> 2] = i34; - HEAP8[i10] = i34 >>> 8; - HEAP8[i10 + 1 | 0] = i34; - HEAP8[i10 + 2 | 0] = i34 >>> 24; - HEAP8[i10 + 3 | 0] = i34 >>> 16; - i10 = 1; - } - d16 = +HEAPF32[i4 + 12 >> 2]; - d15 = +HEAPF32[i4 + 16 >> 2]; - if (d21 * d16 + d15 * d22 - d23 <= d3) { - d38 = d16 - d9; - d36 = d15 - d6; - d37 = +(d8 * d38 + d7 * d36); - d38 = +(d8 * d36 - d7 * d38); - i34 = i5 + (i10 * 20 | 0) | 0; - HEAPF32[i34 >> 2] = d37; - HEAPF32[i34 + 4 >> 2] = d38; - i34 = i5 + (i10 * 20 | 0) + 16 | 0; - i33 = HEAP32[i4 + 20 >> 2] | 0; - HEAP32[i34 >> 2] = i33; - HEAP8[i34] = i33 >>> 8; - HEAP8[i34 + 1 | 0] = i33; - HEAP8[i34 + 2 | 0] = i33 >>> 24; - HEAP8[i34 + 3 | 0] = i33 >>> 16; - i10 = i10 + 1 | 0; - } - } - HEAP32[i2 >> 2] = i10; - STACKTOP = i1; - return; -} -function __ZN8b2Island8SolveTOIERK10b2TimeStepii(i4, i11, i15, i18) { - i4 = i4 | 0; - i11 = i11 | 0; - i15 = i15 | 0; - i18 = i18 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, d12 = 0.0, d13 = 0.0, d14 = 0.0, d16 = 0.0, d17 = 0.0, d19 = 0.0, d20 = 0.0, d21 = 0.0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, d26 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 128 | 0; - i2 = i1 + 96 | 0; - i10 = i1 + 52 | 0; - i3 = i1; - i6 = i4 + 28 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) <= (i15 | 0)) { - ___assert_fail(5464, 5488, 386, 5520); - } - if ((i5 | 0) <= (i18 | 0)) { - ___assert_fail(5536, 5488, 387, 5520); - } - if ((i5 | 0) > 0) { - i9 = i4 + 8 | 0; - i8 = i4 + 20 | 0; - i7 = i4 + 24 | 0; - i22 = 0; - while (1) { - i23 = HEAP32[(HEAP32[i9 >> 2] | 0) + (i22 << 2) >> 2] | 0; - i5 = i23 + 44 | 0; - i24 = HEAP32[i5 + 4 >> 2] | 0; - i25 = (HEAP32[i8 >> 2] | 0) + (i22 * 12 | 0) | 0; - HEAP32[i25 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i25 + 4 >> 2] = i24; - HEAPF32[(HEAP32[i8 >> 2] | 0) + (i22 * 12 | 0) + 8 >> 2] = +HEAPF32[i23 + 56 >> 2]; - i25 = i23 + 64 | 0; - i24 = HEAP32[i25 + 4 >> 2] | 0; - i5 = (HEAP32[i7 >> 2] | 0) + (i22 * 12 | 0) | 0; - HEAP32[i5 >> 2] = HEAP32[i25 >> 2]; - HEAP32[i5 + 4 >> 2] = i24; - i5 = HEAP32[i7 >> 2] | 0; - HEAPF32[i5 + (i22 * 12 | 0) + 8 >> 2] = +HEAPF32[i23 + 72 >> 2]; - i22 = i22 + 1 | 0; - if ((i22 | 0) >= (HEAP32[i6 >> 2] | 0)) { - i22 = i5; - break; - } - } - } else { - i8 = i4 + 20 | 0; - i22 = HEAP32[i4 + 24 >> 2] | 0; - } - i5 = i4 + 12 | 0; - HEAP32[i10 + 24 >> 2] = HEAP32[i5 >> 2]; - i7 = i4 + 36 | 0; - HEAP32[i10 + 28 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i10 + 40 >> 2] = HEAP32[i4 >> 2]; - HEAP32[i10 + 0 >> 2] = HEAP32[i11 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i11 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i11 + 8 >> 2]; - HEAP32[i10 + 12 >> 2] = HEAP32[i11 + 12 >> 2]; - HEAP32[i10 + 16 >> 2] = HEAP32[i11 + 16 >> 2]; - HEAP32[i10 + 20 >> 2] = HEAP32[i11 + 20 >> 2]; - HEAP32[i10 + 32 >> 2] = HEAP32[i8 >> 2]; - i9 = i4 + 24 | 0; - HEAP32[i10 + 36 >> 2] = i22; - __ZN15b2ContactSolverC2EP18b2ContactSolverDef(i3, i10); - i10 = i11 + 16 | 0; - L13 : do { - if ((HEAP32[i10 >> 2] | 0) > 0) { - i22 = 0; - do { - i22 = i22 + 1 | 0; - if (__ZN15b2ContactSolver27SolveTOIPositionConstraintsEii(i3, i15, i18) | 0) { - break L13; - } - } while ((i22 | 0) < (HEAP32[i10 >> 2] | 0)); - } - } while (0); - i10 = i4 + 8 | 0; - i24 = (HEAP32[i8 >> 2] | 0) + (i15 * 12 | 0) | 0; - i25 = HEAP32[i24 + 4 >> 2] | 0; - i23 = (HEAP32[(HEAP32[i10 >> 2] | 0) + (i15 << 2) >> 2] | 0) + 36 | 0; - HEAP32[i23 >> 2] = HEAP32[i24 >> 2]; - HEAP32[i23 + 4 >> 2] = i25; - i23 = HEAP32[i8 >> 2] | 0; - i25 = HEAP32[i10 >> 2] | 0; - HEAPF32[(HEAP32[i25 + (i15 << 2) >> 2] | 0) + 52 >> 2] = +HEAPF32[i23 + (i15 * 12 | 0) + 8 >> 2]; - i23 = i23 + (i18 * 12 | 0) | 0; - i24 = HEAP32[i23 + 4 >> 2] | 0; - i25 = (HEAP32[i25 + (i18 << 2) >> 2] | 0) + 36 | 0; - HEAP32[i25 >> 2] = HEAP32[i23 >> 2]; - HEAP32[i25 + 4 >> 2] = i24; - HEAPF32[(HEAP32[(HEAP32[i10 >> 2] | 0) + (i18 << 2) >> 2] | 0) + 52 >> 2] = +HEAPF32[(HEAP32[i8 >> 2] | 0) + (i18 * 12 | 0) + 8 >> 2]; - __ZN15b2ContactSolver29InitializeVelocityConstraintsEv(i3); - i18 = i11 + 12 | 0; - if ((HEAP32[i18 >> 2] | 0) > 0) { - i15 = 0; - do { - __ZN15b2ContactSolver24SolveVelocityConstraintsEv(i3); - i15 = i15 + 1 | 0; - } while ((i15 | 0) < (HEAP32[i18 >> 2] | 0)); - } - d16 = +HEAPF32[i11 >> 2]; - if ((HEAP32[i6 >> 2] | 0) > 0) { - i15 = 0; - do { - i25 = HEAP32[i8 >> 2] | 0; - i11 = i25 + (i15 * 12 | 0) | 0; - i24 = i11; - d12 = +HEAPF32[i24 >> 2]; - d14 = +HEAPF32[i24 + 4 >> 2]; - d13 = +HEAPF32[i25 + (i15 * 12 | 0) + 8 >> 2]; - i25 = HEAP32[i9 >> 2] | 0; - i24 = i25 + (i15 * 12 | 0) | 0; - d19 = +HEAPF32[i24 >> 2]; - d20 = +HEAPF32[i24 + 4 >> 2]; - d17 = +HEAPF32[i25 + (i15 * 12 | 0) + 8 >> 2]; - d26 = d16 * d19; - d21 = d16 * d20; - d21 = d26 * d26 + d21 * d21; - if (d21 > 4.0) { - d26 = 2.0 / +Math_sqrt(+d21); - d19 = d19 * d26; - d20 = d20 * d26; - } - d21 = d16 * d17; - if (d21 * d21 > 2.4674012660980225) { - if (!(d21 > 0.0)) { - d21 = -d21; - } - d17 = d17 * (1.5707963705062866 / d21); - } - d21 = d12 + d16 * d19; - d14 = d14 + d16 * d20; - d26 = d13 + d16 * d17; - d12 = +d21; - d13 = +d14; - i25 = i11; - HEAPF32[i25 >> 2] = d12; - HEAPF32[i25 + 4 >> 2] = d13; - HEAPF32[(HEAP32[i8 >> 2] | 0) + (i15 * 12 | 0) + 8 >> 2] = d26; - d19 = +d19; - d20 = +d20; - i25 = (HEAP32[i9 >> 2] | 0) + (i15 * 12 | 0) | 0; - HEAPF32[i25 >> 2] = d19; - HEAPF32[i25 + 4 >> 2] = d20; - HEAPF32[(HEAP32[i9 >> 2] | 0) + (i15 * 12 | 0) + 8 >> 2] = d17; - i25 = HEAP32[(HEAP32[i10 >> 2] | 0) + (i15 << 2) >> 2] | 0; - i24 = i25 + 44 | 0; - HEAPF32[i24 >> 2] = d12; - HEAPF32[i24 + 4 >> 2] = d13; - HEAPF32[i25 + 56 >> 2] = d26; - i24 = i25 + 64 | 0; - HEAPF32[i24 >> 2] = d19; - HEAPF32[i24 + 4 >> 2] = d20; - HEAPF32[i25 + 72 >> 2] = d17; - d17 = +Math_sin(+d26); - HEAPF32[i25 + 20 >> 2] = d17; - d20 = +Math_cos(+d26); - HEAPF32[i25 + 24 >> 2] = d20; - d19 = +HEAPF32[i25 + 28 >> 2]; - d26 = +HEAPF32[i25 + 32 >> 2]; - d21 = +(d21 - (d20 * d19 - d17 * d26)); - d26 = +(d14 - (d17 * d19 + d20 * d26)); - i25 = i25 + 12 | 0; - HEAPF32[i25 >> 2] = d21; - HEAPF32[i25 + 4 >> 2] = d26; - i15 = i15 + 1 | 0; - } while ((i15 | 0) < (HEAP32[i6 >> 2] | 0)); - } - i6 = HEAP32[i3 + 40 >> 2] | 0; - i4 = i4 + 4 | 0; - if ((HEAP32[i4 >> 2] | 0) == 0) { - __ZN15b2ContactSolverD2Ev(i3); - STACKTOP = i1; - return; - } - if ((HEAP32[i7 >> 2] | 0) <= 0) { - __ZN15b2ContactSolverD2Ev(i3); - STACKTOP = i1; - return; - } - i8 = i2 + 16 | 0; - i9 = 0; - do { - i10 = HEAP32[(HEAP32[i5 >> 2] | 0) + (i9 << 2) >> 2] | 0; - i11 = HEAP32[i6 + (i9 * 152 | 0) + 144 >> 2] | 0; - HEAP32[i8 >> 2] = i11; - if ((i11 | 0) > 0) { - i15 = 0; - do { - HEAPF32[i2 + (i15 << 2) >> 2] = +HEAPF32[i6 + (i9 * 152 | 0) + (i15 * 36 | 0) + 16 >> 2]; - HEAPF32[i2 + (i15 << 2) + 8 >> 2] = +HEAPF32[i6 + (i9 * 152 | 0) + (i15 * 36 | 0) + 20 >> 2]; - i15 = i15 + 1 | 0; - } while ((i15 | 0) != (i11 | 0)); - } - i25 = HEAP32[i4 >> 2] | 0; - FUNCTION_TABLE_viii[HEAP32[(HEAP32[i25 >> 2] | 0) + 20 >> 2] & 3](i25, i10, i2); - i9 = i9 + 1 | 0; - } while ((i9 | 0) < (HEAP32[i7 >> 2] | 0)); - __ZN15b2ContactSolverD2Ev(i3); - STACKTOP = i1; - return; -} -function __ZN20b2SeparationFunction10InitializeEPK14b2SimplexCachePK15b2DistanceProxyRK7b2SweepS5_S8_f(i2, i11, i13, i21, i12, i24, d9) { - i2 = i2 | 0; - i11 = i11 | 0; - i13 = i13 | 0; - i21 = i21 | 0; - i12 = i12 | 0; - i24 = i24 | 0; - d9 = +d9; - var i1 = 0, d3 = 0.0, d4 = 0.0, d5 = 0.0, d6 = 0.0, d7 = 0.0, d8 = 0.0, d10 = 0.0, i14 = 0, d15 = 0.0, d16 = 0.0, d17 = 0.0, d18 = 0.0, d19 = 0.0, d20 = 0.0, d22 = 0.0, i23 = 0, i25 = 0, i26 = 0, i27 = 0, d28 = 0.0, d29 = 0.0; - i1 = STACKTOP; - HEAP32[i2 >> 2] = i13; - HEAP32[i2 + 4 >> 2] = i12; - i14 = HEAP16[i11 + 4 >> 1] | 0; - if (!(i14 << 16 >> 16 != 0 & (i14 & 65535) < 3)) { - ___assert_fail(3744, 3560, 50, 3768); - } - i23 = i2 + 8 | 0; - i25 = i23 + 0 | 0; - i27 = i21 + 0 | 0; - i26 = i25 + 36 | 0; - do { - HEAP32[i25 >> 2] = HEAP32[i27 >> 2]; - i25 = i25 + 4 | 0; - i27 = i27 + 4 | 0; - } while ((i25 | 0) < (i26 | 0)); - i21 = i2 + 44 | 0; - i25 = i21 + 0 | 0; - i27 = i24 + 0 | 0; - i26 = i25 + 36 | 0; - do { - HEAP32[i25 >> 2] = HEAP32[i27 >> 2]; - i25 = i25 + 4 | 0; - i27 = i27 + 4 | 0; - } while ((i25 | 0) < (i26 | 0)); - d19 = 1.0 - d9; - d4 = d19 * +HEAPF32[i2 + 32 >> 2] + +HEAPF32[i2 + 36 >> 2] * d9; - d3 = +Math_sin(+d4); - d4 = +Math_cos(+d4); - d7 = +HEAPF32[i23 >> 2]; - d5 = +HEAPF32[i2 + 12 >> 2]; - d8 = d19 * +HEAPF32[i2 + 16 >> 2] + +HEAPF32[i2 + 24 >> 2] * d9 - (d4 * d7 - d3 * d5); - d5 = d19 * +HEAPF32[i2 + 20 >> 2] + +HEAPF32[i2 + 28 >> 2] * d9 - (d3 * d7 + d4 * d5); - d7 = d19 * +HEAPF32[i2 + 68 >> 2] + +HEAPF32[i2 + 72 >> 2] * d9; - d6 = +Math_sin(+d7); - d7 = +Math_cos(+d7); - d20 = +HEAPF32[i21 >> 2]; - d22 = +HEAPF32[i2 + 48 >> 2]; - d10 = d19 * +HEAPF32[i2 + 52 >> 2] + +HEAPF32[i2 + 60 >> 2] * d9 - (d7 * d20 - d6 * d22); - d9 = d19 * +HEAPF32[i2 + 56 >> 2] + +HEAPF32[i2 + 64 >> 2] * d9 - (d6 * d20 + d7 * d22); - if (i14 << 16 >> 16 == 1) { - HEAP32[i2 + 80 >> 2] = 0; - i14 = HEAPU8[i11 + 6 | 0] | 0; - if ((HEAP32[i13 + 20 >> 2] | 0) <= (i14 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i27 = (HEAP32[i13 + 16 >> 2] | 0) + (i14 << 3) | 0; - d15 = +HEAPF32[i27 >> 2]; - d16 = +HEAPF32[i27 + 4 >> 2]; - i11 = HEAPU8[i11 + 9 | 0] | 0; - if ((HEAP32[i12 + 20 >> 2] | 0) <= (i11 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i11 = (HEAP32[i12 + 16 >> 2] | 0) + (i11 << 3) | 0; - d20 = +HEAPF32[i11 >> 2]; - d22 = +HEAPF32[i11 + 4 >> 2]; - i11 = i2 + 92 | 0; - d8 = d10 + (d7 * d20 - d6 * d22) - (d8 + (d4 * d15 - d3 * d16)); - d4 = d9 + (d6 * d20 + d7 * d22) - (d5 + (d3 * d15 + d4 * d16)); - d22 = +d8; - d3 = +d4; - i27 = i11; - HEAPF32[i27 >> 2] = d22; - HEAPF32[i27 + 4 >> 2] = d3; - d3 = +Math_sqrt(+(d8 * d8 + d4 * d4)); - if (d3 < 1.1920928955078125e-7) { - d22 = 0.0; - STACKTOP = i1; - return +d22; - } - d22 = 1.0 / d3; - HEAPF32[i11 >> 2] = d8 * d22; - HEAPF32[i2 + 96 >> 2] = d4 * d22; - d22 = d3; - STACKTOP = i1; - return +d22; - } - i14 = i11 + 6 | 0; - i21 = i11 + 7 | 0; - i23 = i2 + 80 | 0; - if ((HEAP8[i14] | 0) == (HEAP8[i21] | 0)) { - HEAP32[i23 >> 2] = 2; - i23 = HEAPU8[i11 + 9 | 0] | 0; - i21 = HEAP32[i12 + 20 >> 2] | 0; - if ((i21 | 0) <= (i23 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i12 = HEAP32[i12 + 16 >> 2] | 0; - i27 = i12 + (i23 << 3) | 0; - d16 = +HEAPF32[i27 >> 2]; - d15 = +HEAPF32[i27 + 4 >> 2]; - i11 = HEAPU8[i11 + 10 | 0] | 0; - if ((i21 | 0) <= (i11 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i11 = i12 + (i11 << 3) | 0; - d20 = +HEAPF32[i11 >> 2]; - d18 = +HEAPF32[i11 + 4 >> 2]; - i11 = i2 + 92 | 0; - d22 = d20 - d16; - d19 = d18 - d15; - d17 = -d22; - d29 = +d19; - d28 = +d17; - i27 = i11; - HEAPF32[i27 >> 2] = d29; - HEAPF32[i27 + 4 >> 2] = d28; - d22 = +Math_sqrt(+(d19 * d19 + d22 * d22)); - if (!(d22 < 1.1920928955078125e-7)) { - d29 = 1.0 / d22; - d19 = d19 * d29; - HEAPF32[i11 >> 2] = d19; - d17 = d29 * d17; - HEAPF32[i2 + 96 >> 2] = d17; - } - d16 = (d16 + d20) * .5; - d15 = (d15 + d18) * .5; - d28 = +d16; - d29 = +d15; - i2 = i2 + 84 | 0; - HEAPF32[i2 >> 2] = d28; - HEAPF32[i2 + 4 >> 2] = d29; - i2 = HEAPU8[i14] | 0; - if ((HEAP32[i13 + 20 >> 2] | 0) <= (i2 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i27 = (HEAP32[i13 + 16 >> 2] | 0) + (i2 << 3) | 0; - d28 = +HEAPF32[i27 >> 2]; - d29 = +HEAPF32[i27 + 4 >> 2]; - d3 = (d7 * d19 - d6 * d17) * (d8 + (d4 * d28 - d3 * d29) - (d10 + (d7 * d16 - d6 * d15))) + (d6 * d19 + d7 * d17) * (d5 + (d3 * d28 + d4 * d29) - (d9 + (d6 * d16 + d7 * d15))); - if (!(d3 < 0.0)) { - d29 = d3; - STACKTOP = i1; - return +d29; - } - d28 = +-d19; - d29 = +-d17; - i27 = i11; - HEAPF32[i27 >> 2] = d28; - HEAPF32[i27 + 4 >> 2] = d29; - d29 = -d3; - STACKTOP = i1; - return +d29; - } else { - HEAP32[i23 >> 2] = 1; - i23 = HEAPU8[i14] | 0; - i14 = HEAP32[i13 + 20 >> 2] | 0; - if ((i14 | 0) <= (i23 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i13 = HEAP32[i13 + 16 >> 2] | 0; - i27 = i13 + (i23 << 3) | 0; - d16 = +HEAPF32[i27 >> 2]; - d15 = +HEAPF32[i27 + 4 >> 2]; - i21 = HEAPU8[i21] | 0; - if ((i14 | 0) <= (i21 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i13 = i13 + (i21 << 3) | 0; - d20 = +HEAPF32[i13 >> 2]; - d18 = +HEAPF32[i13 + 4 >> 2]; - i13 = i2 + 92 | 0; - d22 = d20 - d16; - d19 = d18 - d15; - d17 = -d22; - d28 = +d19; - d29 = +d17; - i27 = i13; - HEAPF32[i27 >> 2] = d28; - HEAPF32[i27 + 4 >> 2] = d29; - d22 = +Math_sqrt(+(d19 * d19 + d22 * d22)); - if (!(d22 < 1.1920928955078125e-7)) { - d29 = 1.0 / d22; - d19 = d19 * d29; - HEAPF32[i13 >> 2] = d19; - d17 = d29 * d17; - HEAPF32[i2 + 96 >> 2] = d17; - } - d16 = (d16 + d20) * .5; - d15 = (d15 + d18) * .5; - d28 = +d16; - d29 = +d15; - i2 = i2 + 84 | 0; - HEAPF32[i2 >> 2] = d28; - HEAPF32[i2 + 4 >> 2] = d29; - i2 = HEAPU8[i11 + 9 | 0] | 0; - if ((HEAP32[i12 + 20 >> 2] | 0) <= (i2 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i27 = (HEAP32[i12 + 16 >> 2] | 0) + (i2 << 3) | 0; - d28 = +HEAPF32[i27 >> 2]; - d29 = +HEAPF32[i27 + 4 >> 2]; - d3 = (d4 * d19 - d3 * d17) * (d10 + (d7 * d28 - d6 * d29) - (d8 + (d4 * d16 - d3 * d15))) + (d3 * d19 + d4 * d17) * (d9 + (d6 * d28 + d7 * d29) - (d5 + (d3 * d16 + d4 * d15))); - if (!(d3 < 0.0)) { - d29 = d3; - STACKTOP = i1; - return +d29; - } - d28 = +-d19; - d29 = +-d17; - i27 = i13; - HEAPF32[i27 >> 2] = d28; - HEAPF32[i27 + 4 >> 2] = d29; - d29 = -d3; - STACKTOP = i1; - return +d29; - } - return 0.0; -} -function __ZNK20b2SeparationFunction17FindMinSeparationEPiS0_f(i12, i10, i9, d5) { - i12 = i12 | 0; - i10 = i10 | 0; - i9 = i9 | 0; - d5 = +d5; - var i1 = 0, d2 = 0.0, d3 = 0.0, d4 = 0.0, d6 = 0.0, d7 = 0.0, d8 = 0.0, d11 = 0.0, d13 = 0.0, d14 = 0.0, i15 = 0, i16 = 0, d17 = 0.0, d18 = 0.0, i19 = 0, d20 = 0.0, d21 = 0.0, i22 = 0, d23 = 0.0, d24 = 0.0, i25 = 0, i26 = 0, i27 = 0; - i1 = STACKTOP; - d21 = 1.0 - d5; - d6 = d21 * +HEAPF32[i12 + 32 >> 2] + +HEAPF32[i12 + 36 >> 2] * d5; - d7 = +Math_sin(+d6); - d6 = +Math_cos(+d6); - d3 = +HEAPF32[i12 + 8 >> 2]; - d8 = +HEAPF32[i12 + 12 >> 2]; - d11 = d21 * +HEAPF32[i12 + 16 >> 2] + +HEAPF32[i12 + 24 >> 2] * d5 - (d6 * d3 - d7 * d8); - d8 = d21 * +HEAPF32[i12 + 20 >> 2] + +HEAPF32[i12 + 28 >> 2] * d5 - (d7 * d3 + d6 * d8); - d3 = d21 * +HEAPF32[i12 + 68 >> 2] + +HEAPF32[i12 + 72 >> 2] * d5; - d2 = +Math_sin(+d3); - d3 = +Math_cos(+d3); - d23 = +HEAPF32[i12 + 44 >> 2]; - d24 = +HEAPF32[i12 + 48 >> 2]; - d4 = d21 * +HEAPF32[i12 + 52 >> 2] + +HEAPF32[i12 + 60 >> 2] * d5 - (d3 * d23 - d2 * d24); - d5 = d21 * +HEAPF32[i12 + 56 >> 2] + +HEAPF32[i12 + 64 >> 2] * d5 - (d2 * d23 + d3 * d24); - i19 = HEAP32[i12 + 80 >> 2] | 0; - if ((i19 | 0) == 1) { - d23 = +HEAPF32[i12 + 92 >> 2]; - d14 = +HEAPF32[i12 + 96 >> 2]; - d13 = d6 * d23 - d7 * d14; - d14 = d7 * d23 + d6 * d14; - d23 = +HEAPF32[i12 + 84 >> 2]; - d24 = +HEAPF32[i12 + 88 >> 2]; - d11 = d11 + (d6 * d23 - d7 * d24); - d6 = d8 + (d7 * d23 + d6 * d24); - d7 = -d13; - d24 = -d14; - d8 = d3 * d7 + d2 * d24; - d7 = d3 * d24 - d2 * d7; - HEAP32[i10 >> 2] = -1; - i25 = i12 + 4 | 0; - i22 = HEAP32[i25 >> 2] | 0; - i19 = HEAP32[i22 + 16 >> 2] | 0; - i22 = HEAP32[i22 + 20 >> 2] | 0; - if ((i22 | 0) > 1) { - i10 = 0; - d18 = d7 * +HEAPF32[i19 + 4 >> 2] + d8 * +HEAPF32[i19 >> 2]; - i12 = 1; - while (1) { - d17 = d8 * +HEAPF32[i19 + (i12 << 3) >> 2] + d7 * +HEAPF32[i19 + (i12 << 3) + 4 >> 2]; - i16 = d17 > d18; - i10 = i16 ? i12 : i10; - i12 = i12 + 1 | 0; - if ((i12 | 0) == (i22 | 0)) { - break; - } else { - d18 = i16 ? d17 : d18; - } - } - HEAP32[i9 >> 2] = i10; - if ((i10 | 0) > -1) { - i15 = i10; - } else { - ___assert_fail(3640, 3672, 103, 3704); - } - } else { - HEAP32[i9 >> 2] = 0; - i15 = 0; - } - i9 = HEAP32[i25 >> 2] | 0; - if ((HEAP32[i9 + 20 >> 2] | 0) <= (i15 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i27 = (HEAP32[i9 + 16 >> 2] | 0) + (i15 << 3) | 0; - d23 = +HEAPF32[i27 >> 2]; - d24 = +HEAPF32[i27 + 4 >> 2]; - d24 = d13 * (d4 + (d3 * d23 - d2 * d24) - d11) + d14 * (d5 + (d2 * d23 + d3 * d24) - d6); - STACKTOP = i1; - return +d24; - } else if ((i19 | 0) == 0) { - d13 = +HEAPF32[i12 + 92 >> 2]; - d14 = +HEAPF32[i12 + 96 >> 2]; - d21 = d6 * d13 + d7 * d14; - d24 = d6 * d14 - d7 * d13; - d17 = -d13; - d23 = -d14; - d18 = d3 * d17 + d2 * d23; - d17 = d3 * d23 - d2 * d17; - i15 = HEAP32[i12 >> 2] | 0; - i16 = HEAP32[i15 + 16 >> 2] | 0; - i15 = i15 + 20 | 0; - i19 = HEAP32[i15 >> 2] | 0; - if ((i19 | 0) > 1) { - i25 = 0; - d23 = d24 * +HEAPF32[i16 + 4 >> 2] + d21 * +HEAPF32[i16 >> 2]; - i26 = 1; - while (1) { - d20 = d21 * +HEAPF32[i16 + (i26 << 3) >> 2] + d24 * +HEAPF32[i16 + (i26 << 3) + 4 >> 2]; - i22 = d20 > d23; - i25 = i22 ? i26 : i25; - i26 = i26 + 1 | 0; - if ((i26 | 0) == (i19 | 0)) { - break; - } else { - d23 = i22 ? d20 : d23; - } - } - } else { - i25 = 0; - } - HEAP32[i10 >> 2] = i25; - i19 = HEAP32[i12 + 4 >> 2] | 0; - i12 = HEAP32[i19 + 16 >> 2] | 0; - i19 = i19 + 20 | 0; - i25 = HEAP32[i19 >> 2] | 0; - if ((i25 | 0) > 1) { - i27 = 0; - d20 = d17 * +HEAPF32[i12 + 4 >> 2] + d18 * +HEAPF32[i12 >> 2]; - i26 = 1; - while (1) { - d21 = d18 * +HEAPF32[i12 + (i26 << 3) >> 2] + d17 * +HEAPF32[i12 + (i26 << 3) + 4 >> 2]; - i22 = d21 > d20; - i27 = i22 ? i26 : i27; - i26 = i26 + 1 | 0; - if ((i26 | 0) == (i25 | 0)) { - break; - } else { - d20 = i22 ? d21 : d20; - } - } - } else { - i27 = 0; - } - HEAP32[i9 >> 2] = i27; - i9 = HEAP32[i10 >> 2] | 0; - if (!((i9 | 0) > -1)) { - ___assert_fail(3640, 3672, 103, 3704); - } - if ((HEAP32[i15 >> 2] | 0) <= (i9 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i26 = i16 + (i9 << 3) | 0; - d18 = +HEAPF32[i26 >> 2]; - d17 = +HEAPF32[i26 + 4 >> 2]; - if (!((i27 | 0) > -1)) { - ___assert_fail(3640, 3672, 103, 3704); - } - if ((HEAP32[i19 >> 2] | 0) <= (i27 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i27 = i12 + (i27 << 3) | 0; - d23 = +HEAPF32[i27 >> 2]; - d24 = +HEAPF32[i27 + 4 >> 2]; - d24 = d13 * (d4 + (d3 * d23 - d2 * d24) - (d11 + (d6 * d18 - d7 * d17))) + d14 * (d5 + (d2 * d23 + d3 * d24) - (d8 + (d7 * d18 + d6 * d17))); - STACKTOP = i1; - return +d24; - } else if ((i19 | 0) == 2) { - d23 = +HEAPF32[i12 + 92 >> 2]; - d13 = +HEAPF32[i12 + 96 >> 2]; - d14 = d3 * d23 - d2 * d13; - d13 = d2 * d23 + d3 * d13; - d23 = +HEAPF32[i12 + 84 >> 2]; - d24 = +HEAPF32[i12 + 88 >> 2]; - d4 = d4 + (d3 * d23 - d2 * d24); - d2 = d5 + (d2 * d23 + d3 * d24); - d3 = -d14; - d24 = -d13; - d5 = d6 * d3 + d7 * d24; - d3 = d6 * d24 - d7 * d3; - HEAP32[i9 >> 2] = -1; - i22 = HEAP32[i12 >> 2] | 0; - i15 = HEAP32[i22 + 16 >> 2] | 0; - i22 = HEAP32[i22 + 20 >> 2] | 0; - if ((i22 | 0) > 1) { - i9 = 0; - d17 = d3 * +HEAPF32[i15 + 4 >> 2] + d5 * +HEAPF32[i15 >> 2]; - i19 = 1; - while (1) { - d18 = d5 * +HEAPF32[i15 + (i19 << 3) >> 2] + d3 * +HEAPF32[i15 + (i19 << 3) + 4 >> 2]; - i25 = d18 > d17; - i9 = i25 ? i19 : i9; - i19 = i19 + 1 | 0; - if ((i19 | 0) == (i22 | 0)) { - break; - } else { - d17 = i25 ? d18 : d17; - } - } - HEAP32[i10 >> 2] = i9; - if ((i9 | 0) > -1) { - i16 = i9; - } else { - ___assert_fail(3640, 3672, 103, 3704); - } - } else { - HEAP32[i10 >> 2] = 0; - i16 = 0; - } - i9 = HEAP32[i12 >> 2] | 0; - if ((HEAP32[i9 + 20 >> 2] | 0) <= (i16 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i27 = (HEAP32[i9 + 16 >> 2] | 0) + (i16 << 3) | 0; - d23 = +HEAPF32[i27 >> 2]; - d24 = +HEAPF32[i27 + 4 >> 2]; - d24 = d14 * (d11 + (d6 * d23 - d7 * d24) - d4) + d13 * (d8 + (d7 * d23 + d6 * d24) - d2); - STACKTOP = i1; - return +d24; - } else { - ___assert_fail(3616, 3560, 183, 3720); - } - return 0.0; -} -function __ZN13b2DynamicTree10InsertLeafEi(i3, i4) { - i3 = i3 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, d5 = 0.0, d6 = 0.0, d7 = 0.0, d8 = 0.0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, d13 = 0.0, d14 = 0.0, d15 = 0.0, d16 = 0.0, d17 = 0.0, d18 = 0.0, d19 = 0.0, d20 = 0.0, d21 = 0.0, d22 = 0.0, d23 = 0.0, i24 = 0; - i1 = STACKTOP; - i11 = i3 + 24 | 0; - HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 1; - i11 = HEAP32[i3 >> 2] | 0; - if ((i11 | 0) == -1) { - HEAP32[i3 >> 2] = i4; - HEAP32[(HEAP32[i3 + 4 >> 2] | 0) + (i4 * 36 | 0) + 20 >> 2] = -1; - STACKTOP = i1; - return; - } - i2 = i3 + 4 | 0; - i9 = HEAP32[i2 >> 2] | 0; - d8 = +HEAPF32[i9 + (i4 * 36 | 0) >> 2]; - d7 = +HEAPF32[i9 + (i4 * 36 | 0) + 4 >> 2]; - d6 = +HEAPF32[i9 + (i4 * 36 | 0) + 8 >> 2]; - d5 = +HEAPF32[i9 + (i4 * 36 | 0) + 12 >> 2]; - i10 = HEAP32[i9 + (i11 * 36 | 0) + 24 >> 2] | 0; - L5 : do { - if (!((i10 | 0) == -1)) { - do { - i12 = HEAP32[i9 + (i11 * 36 | 0) + 28 >> 2] | 0; - d14 = +HEAPF32[i9 + (i11 * 36 | 0) + 8 >> 2]; - d15 = +HEAPF32[i9 + (i11 * 36 | 0) >> 2]; - d17 = +HEAPF32[i9 + (i11 * 36 | 0) + 12 >> 2]; - d16 = +HEAPF32[i9 + (i11 * 36 | 0) + 4 >> 2]; - d21 = ((d14 > d6 ? d14 : d6) - (d15 < d8 ? d15 : d8) + ((d17 > d5 ? d17 : d5) - (d16 < d7 ? d16 : d7))) * 2.0; - d13 = d21 * 2.0; - d14 = (d21 - (d14 - d15 + (d17 - d16)) * 2.0) * 2.0; - d21 = +HEAPF32[i9 + (i10 * 36 | 0) >> 2]; - d16 = d8 < d21 ? d8 : d21; - d17 = +HEAPF32[i9 + (i10 * 36 | 0) + 4 >> 2]; - d18 = d7 < d17 ? d7 : d17; - d19 = +HEAPF32[i9 + (i10 * 36 | 0) + 8 >> 2]; - d20 = d6 > d19 ? d6 : d19; - d15 = +HEAPF32[i9 + (i10 * 36 | 0) + 12 >> 2]; - d22 = d5 > d15 ? d5 : d15; - if ((HEAP32[i9 + (i10 * 36 | 0) + 24 >> 2] | 0) == -1) { - d15 = (d20 - d16 + (d22 - d18)) * 2.0; - } else { - d15 = (d20 - d16 + (d22 - d18)) * 2.0 - (d19 - d21 + (d15 - d17)) * 2.0; - } - d15 = d14 + d15; - d17 = +HEAPF32[i9 + (i12 * 36 | 0) >> 2]; - d18 = d8 < d17 ? d8 : d17; - d23 = +HEAPF32[i9 + (i12 * 36 | 0) + 4 >> 2]; - d22 = d7 < d23 ? d7 : d23; - d21 = +HEAPF32[i9 + (i12 * 36 | 0) + 8 >> 2]; - d20 = d6 > d21 ? d6 : d21; - d19 = +HEAPF32[i9 + (i12 * 36 | 0) + 12 >> 2]; - d16 = d5 > d19 ? d5 : d19; - if ((HEAP32[i9 + (i12 * 36 | 0) + 24 >> 2] | 0) == -1) { - d16 = (d20 - d18 + (d16 - d22)) * 2.0; - } else { - d16 = (d20 - d18 + (d16 - d22)) * 2.0 - (d21 - d17 + (d19 - d23)) * 2.0; - } - d14 = d14 + d16; - if (d13 < d15 & d13 < d14) { - break L5; - } - i11 = d15 < d14 ? i10 : i12; - i10 = HEAP32[i9 + (i11 * 36 | 0) + 24 >> 2] | 0; - } while (!((i10 | 0) == -1)); - } - } while (0); - i9 = HEAP32[i9 + (i11 * 36 | 0) + 20 >> 2] | 0; - i10 = __ZN13b2DynamicTree12AllocateNodeEv(i3) | 0; - i12 = HEAP32[i2 >> 2] | 0; - HEAP32[i12 + (i10 * 36 | 0) + 20 >> 2] = i9; - HEAP32[i12 + (i10 * 36 | 0) + 16 >> 2] = 0; - i12 = HEAP32[i2 >> 2] | 0; - d14 = +HEAPF32[i12 + (i11 * 36 | 0) >> 2]; - d13 = +HEAPF32[i12 + (i11 * 36 | 0) + 4 >> 2]; - d8 = +(d8 < d14 ? d8 : d14); - d7 = +(d7 < d13 ? d7 : d13); - i24 = i12 + (i10 * 36 | 0) | 0; - HEAPF32[i24 >> 2] = d8; - HEAPF32[i24 + 4 >> 2] = d7; - d8 = +HEAPF32[i12 + (i11 * 36 | 0) + 8 >> 2]; - d7 = +HEAPF32[i12 + (i11 * 36 | 0) + 12 >> 2]; - d6 = +(d6 > d8 ? d6 : d8); - d23 = +(d5 > d7 ? d5 : d7); - i12 = i12 + (i10 * 36 | 0) + 8 | 0; - HEAPF32[i12 >> 2] = d6; - HEAPF32[i12 + 4 >> 2] = d23; - i12 = HEAP32[i2 >> 2] | 0; - HEAP32[i12 + (i10 * 36 | 0) + 32 >> 2] = (HEAP32[i12 + (i11 * 36 | 0) + 32 >> 2] | 0) + 1; - if ((i9 | 0) == -1) { - HEAP32[i12 + (i10 * 36 | 0) + 24 >> 2] = i11; - HEAP32[i12 + (i10 * 36 | 0) + 28 >> 2] = i4; - HEAP32[i12 + (i11 * 36 | 0) + 20 >> 2] = i10; - i24 = i12 + (i4 * 36 | 0) + 20 | 0; - HEAP32[i24 >> 2] = i10; - HEAP32[i3 >> 2] = i10; - i10 = HEAP32[i24 >> 2] | 0; - } else { - i24 = i12 + (i9 * 36 | 0) + 24 | 0; - if ((HEAP32[i24 >> 2] | 0) == (i11 | 0)) { - HEAP32[i24 >> 2] = i10; - } else { - HEAP32[i12 + (i9 * 36 | 0) + 28 >> 2] = i10; - } - HEAP32[i12 + (i10 * 36 | 0) + 24 >> 2] = i11; - HEAP32[i12 + (i10 * 36 | 0) + 28 >> 2] = i4; - HEAP32[i12 + (i11 * 36 | 0) + 20 >> 2] = i10; - HEAP32[i12 + (i4 * 36 | 0) + 20 >> 2] = i10; - } - if ((i10 | 0) == -1) { - STACKTOP = i1; - return; - } - while (1) { - i9 = __ZN13b2DynamicTree7BalanceEi(i3, i10) | 0; - i4 = HEAP32[i2 >> 2] | 0; - i11 = HEAP32[i4 + (i9 * 36 | 0) + 24 >> 2] | 0; - i10 = HEAP32[i4 + (i9 * 36 | 0) + 28 >> 2] | 0; - if ((i11 | 0) == -1) { - i2 = 20; - break; - } - if ((i10 | 0) == -1) { - i2 = 22; - break; - } - i12 = HEAP32[i4 + (i11 * 36 | 0) + 32 >> 2] | 0; - i24 = HEAP32[i4 + (i10 * 36 | 0) + 32 >> 2] | 0; - HEAP32[i4 + (i9 * 36 | 0) + 32 >> 2] = ((i12 | 0) > (i24 | 0) ? i12 : i24) + 1; - d7 = +HEAPF32[i4 + (i11 * 36 | 0) >> 2]; - d8 = +HEAPF32[i4 + (i10 * 36 | 0) >> 2]; - d5 = +HEAPF32[i4 + (i11 * 36 | 0) + 4 >> 2]; - d6 = +HEAPF32[i4 + (i10 * 36 | 0) + 4 >> 2]; - d7 = +(d7 < d8 ? d7 : d8); - d5 = +(d5 < d6 ? d5 : d6); - i24 = i4 + (i9 * 36 | 0) | 0; - HEAPF32[i24 >> 2] = d7; - HEAPF32[i24 + 4 >> 2] = d5; - d5 = +HEAPF32[i4 + (i11 * 36 | 0) + 8 >> 2]; - d6 = +HEAPF32[i4 + (i10 * 36 | 0) + 8 >> 2]; - d7 = +HEAPF32[i4 + (i11 * 36 | 0) + 12 >> 2]; - d8 = +HEAPF32[i4 + (i10 * 36 | 0) + 12 >> 2]; - d5 = +(d5 > d6 ? d5 : d6); - d23 = +(d7 > d8 ? d7 : d8); - i10 = i4 + (i9 * 36 | 0) + 8 | 0; - HEAPF32[i10 >> 2] = d5; - HEAPF32[i10 + 4 >> 2] = d23; - i10 = HEAP32[(HEAP32[i2 >> 2] | 0) + (i9 * 36 | 0) + 20 >> 2] | 0; - if ((i10 | 0) == -1) { - i2 = 24; - break; - } - } - if ((i2 | 0) == 20) { - ___assert_fail(3168, 2944, 307, 3184); - } else if ((i2 | 0) == 22) { - ___assert_fail(3200, 2944, 308, 3184); - } else if ((i2 | 0) == 24) { - STACKTOP = i1; - return; - } -} -function __ZN15b2ContactSolverC2EP18b2ContactSolverDef(i7, i5) { - i7 = i7 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, d15 = 0.0, d16 = 0.0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0; - i1 = STACKTOP; - HEAP32[i7 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i7 + 12 >> 2] = HEAP32[i5 + 12 >> 2]; - HEAP32[i7 + 16 >> 2] = HEAP32[i5 + 16 >> 2]; - HEAP32[i7 + 20 >> 2] = HEAP32[i5 + 20 >> 2]; - i14 = HEAP32[i5 + 40 >> 2] | 0; - i9 = i7 + 32 | 0; - HEAP32[i9 >> 2] = i14; - i2 = HEAP32[i5 + 28 >> 2] | 0; - i4 = i7 + 48 | 0; - HEAP32[i4 >> 2] = i2; - i3 = i7 + 36 | 0; - HEAP32[i3 >> 2] = __ZN16b2StackAllocator8AllocateEi(i14, i2 * 88 | 0) | 0; - i2 = i7 + 40 | 0; - HEAP32[i2 >> 2] = __ZN16b2StackAllocator8AllocateEi(HEAP32[i9 >> 2] | 0, (HEAP32[i4 >> 2] | 0) * 152 | 0) | 0; - HEAP32[i7 + 24 >> 2] = HEAP32[i5 + 32 >> 2]; - HEAP32[i7 + 28 >> 2] = HEAP32[i5 + 36 >> 2]; - i9 = HEAP32[i5 + 24 >> 2] | 0; - i5 = i7 + 44 | 0; - HEAP32[i5 >> 2] = i9; - if ((HEAP32[i4 >> 2] | 0) <= 0) { - STACKTOP = i1; - return; - } - i6 = i7 + 20 | 0; - i7 = i7 + 8 | 0; - i8 = 0; - while (1) { - i10 = HEAP32[i9 + (i8 << 2) >> 2] | 0; - i11 = HEAP32[i10 + 48 >> 2] | 0; - i12 = HEAP32[i10 + 52 >> 2] | 0; - i14 = HEAP32[i11 + 8 >> 2] | 0; - i13 = HEAP32[i12 + 8 >> 2] | 0; - i9 = HEAP32[i10 + 124 >> 2] | 0; - if ((i9 | 0) <= 0) { - i2 = 4; - break; - } - d15 = +HEAPF32[(HEAP32[i12 + 12 >> 2] | 0) + 8 >> 2]; - d16 = +HEAPF32[(HEAP32[i11 + 12 >> 2] | 0) + 8 >> 2]; - i12 = HEAP32[i2 >> 2] | 0; - HEAPF32[i12 + (i8 * 152 | 0) + 136 >> 2] = +HEAPF32[i10 + 136 >> 2]; - HEAPF32[i12 + (i8 * 152 | 0) + 140 >> 2] = +HEAPF32[i10 + 140 >> 2]; - i22 = i14 + 8 | 0; - HEAP32[i12 + (i8 * 152 | 0) + 112 >> 2] = HEAP32[i22 >> 2]; - i21 = i13 + 8 | 0; - HEAP32[i12 + (i8 * 152 | 0) + 116 >> 2] = HEAP32[i21 >> 2]; - i19 = i14 + 120 | 0; - HEAPF32[i12 + (i8 * 152 | 0) + 120 >> 2] = +HEAPF32[i19 >> 2]; - i20 = i13 + 120 | 0; - HEAPF32[i12 + (i8 * 152 | 0) + 124 >> 2] = +HEAPF32[i20 >> 2]; - i18 = i14 + 128 | 0; - HEAPF32[i12 + (i8 * 152 | 0) + 128 >> 2] = +HEAPF32[i18 >> 2]; - i17 = i13 + 128 | 0; - HEAPF32[i12 + (i8 * 152 | 0) + 132 >> 2] = +HEAPF32[i17 >> 2]; - HEAP32[i12 + (i8 * 152 | 0) + 148 >> 2] = i8; - HEAP32[i12 + (i8 * 152 | 0) + 144 >> 2] = i9; - i11 = i12 + (i8 * 152 | 0) + 80 | 0; - HEAP32[i11 + 0 >> 2] = 0; - HEAP32[i11 + 4 >> 2] = 0; - HEAP32[i11 + 8 >> 2] = 0; - HEAP32[i11 + 12 >> 2] = 0; - HEAP32[i11 + 16 >> 2] = 0; - HEAP32[i11 + 20 >> 2] = 0; - HEAP32[i11 + 24 >> 2] = 0; - HEAP32[i11 + 28 >> 2] = 0; - i11 = HEAP32[i3 >> 2] | 0; - HEAP32[i11 + (i8 * 88 | 0) + 32 >> 2] = HEAP32[i22 >> 2]; - HEAP32[i11 + (i8 * 88 | 0) + 36 >> 2] = HEAP32[i21 >> 2]; - HEAPF32[i11 + (i8 * 88 | 0) + 40 >> 2] = +HEAPF32[i19 >> 2]; - HEAPF32[i11 + (i8 * 88 | 0) + 44 >> 2] = +HEAPF32[i20 >> 2]; - i20 = i14 + 28 | 0; - i14 = HEAP32[i20 + 4 >> 2] | 0; - i19 = i11 + (i8 * 88 | 0) + 48 | 0; - HEAP32[i19 >> 2] = HEAP32[i20 >> 2]; - HEAP32[i19 + 4 >> 2] = i14; - i19 = i13 + 28 | 0; - i14 = HEAP32[i19 + 4 >> 2] | 0; - i13 = i11 + (i8 * 88 | 0) + 56 | 0; - HEAP32[i13 >> 2] = HEAP32[i19 >> 2]; - HEAP32[i13 + 4 >> 2] = i14; - HEAPF32[i11 + (i8 * 88 | 0) + 64 >> 2] = +HEAPF32[i18 >> 2]; - HEAPF32[i11 + (i8 * 88 | 0) + 68 >> 2] = +HEAPF32[i17 >> 2]; - i13 = i10 + 104 | 0; - i14 = HEAP32[i13 + 4 >> 2] | 0; - i17 = i11 + (i8 * 88 | 0) + 16 | 0; - HEAP32[i17 >> 2] = HEAP32[i13 >> 2]; - HEAP32[i17 + 4 >> 2] = i14; - i17 = i10 + 112 | 0; - i14 = HEAP32[i17 + 4 >> 2] | 0; - i13 = i11 + (i8 * 88 | 0) + 24 | 0; - HEAP32[i13 >> 2] = HEAP32[i17 >> 2]; - HEAP32[i13 + 4 >> 2] = i14; - HEAP32[i11 + (i8 * 88 | 0) + 84 >> 2] = i9; - HEAPF32[i11 + (i8 * 88 | 0) + 76 >> 2] = d16; - HEAPF32[i11 + (i8 * 88 | 0) + 80 >> 2] = d15; - HEAP32[i11 + (i8 * 88 | 0) + 72 >> 2] = HEAP32[i10 + 120 >> 2]; - i13 = 0; - do { - i14 = i10 + (i13 * 20 | 0) + 64 | 0; - if ((HEAP8[i6] | 0) == 0) { - HEAPF32[i12 + (i8 * 152 | 0) + (i13 * 36 | 0) + 16 >> 2] = 0.0; - HEAPF32[i12 + (i8 * 152 | 0) + (i13 * 36 | 0) + 20 >> 2] = 0.0; - } else { - HEAPF32[i12 + (i8 * 152 | 0) + (i13 * 36 | 0) + 16 >> 2] = +HEAPF32[i7 >> 2] * +HEAPF32[i10 + (i13 * 20 | 0) + 72 >> 2]; - HEAPF32[i12 + (i8 * 152 | 0) + (i13 * 36 | 0) + 20 >> 2] = +HEAPF32[i7 >> 2] * +HEAPF32[i10 + (i13 * 20 | 0) + 76 >> 2]; - } - i20 = i12 + (i8 * 152 | 0) + (i13 * 36 | 0) | 0; - HEAPF32[i12 + (i8 * 152 | 0) + (i13 * 36 | 0) + 24 >> 2] = 0.0; - HEAPF32[i12 + (i8 * 152 | 0) + (i13 * 36 | 0) + 28 >> 2] = 0.0; - HEAPF32[i12 + (i8 * 152 | 0) + (i13 * 36 | 0) + 32 >> 2] = 0.0; - i22 = i11 + (i8 * 88 | 0) + (i13 << 3) | 0; - HEAP32[i20 + 0 >> 2] = 0; - HEAP32[i20 + 4 >> 2] = 0; - HEAP32[i20 + 8 >> 2] = 0; - HEAP32[i20 + 12 >> 2] = 0; - i20 = i14; - i21 = HEAP32[i20 + 4 >> 2] | 0; - HEAP32[i22 >> 2] = HEAP32[i20 >> 2]; - HEAP32[i22 + 4 >> 2] = i21; - i13 = i13 + 1 | 0; - } while ((i13 | 0) != (i9 | 0)); - i8 = i8 + 1 | 0; - if ((i8 | 0) >= (HEAP32[i4 >> 2] | 0)) { - i2 = 12; - break; - } - i9 = HEAP32[i5 >> 2] | 0; - } - if ((i2 | 0) == 4) { - ___assert_fail(6504, 6520, 71, 6568); - } else if ((i2 | 0) == 12) { - STACKTOP = i1; - return; - } -} -function __Z25b2CollidePolygonAndCircleP10b2ManifoldPK14b2PolygonShapeRK11b2TransformPK13b2CircleShapeS6_(i1, i4, i11, i9, i10) { - i1 = i1 | 0; - i4 = i4 | 0; - i11 = i11 | 0; - i9 = i9 | 0; - i10 = i10 | 0; - var i2 = 0, i3 = 0, i5 = 0, d6 = 0.0, d7 = 0.0, d8 = 0.0, i12 = 0, d13 = 0.0, d14 = 0.0, i15 = 0, d16 = 0.0, d17 = 0.0, d18 = 0.0, d19 = 0.0, d20 = 0.0, d21 = 0.0, i22 = 0; - i3 = STACKTOP; - i5 = i1 + 60 | 0; - HEAP32[i5 >> 2] = 0; - i2 = i9 + 12 | 0; - d20 = +HEAPF32[i10 + 12 >> 2]; - d7 = +HEAPF32[i2 >> 2]; - d6 = +HEAPF32[i10 + 8 >> 2]; - d21 = +HEAPF32[i9 + 16 >> 2]; - d8 = +HEAPF32[i10 >> 2] + (d20 * d7 - d6 * d21) - +HEAPF32[i11 >> 2]; - d21 = d7 * d6 + d20 * d21 + +HEAPF32[i10 + 4 >> 2] - +HEAPF32[i11 + 4 >> 2]; - d20 = +HEAPF32[i11 + 12 >> 2]; - d6 = +HEAPF32[i11 + 8 >> 2]; - d7 = d8 * d20 + d21 * d6; - d6 = d20 * d21 - d8 * d6; - d8 = +HEAPF32[i4 + 8 >> 2] + +HEAPF32[i9 + 8 >> 2]; - i12 = HEAP32[i4 + 148 >> 2] | 0; - do { - if ((i12 | 0) > 0) { - i10 = 0; - i9 = 0; - d13 = -3.4028234663852886e+38; - while (1) { - d14 = (d7 - +HEAPF32[i4 + (i10 << 3) + 20 >> 2]) * +HEAPF32[i4 + (i10 << 3) + 84 >> 2] + (d6 - +HEAPF32[i4 + (i10 << 3) + 24 >> 2]) * +HEAPF32[i4 + (i10 << 3) + 88 >> 2]; - if (d14 > d8) { - i10 = 19; - break; - } - i11 = d14 > d13; - d13 = i11 ? d14 : d13; - i9 = i11 ? i10 : i9; - i10 = i10 + 1 | 0; - if ((i10 | 0) >= (i12 | 0)) { - i10 = 4; - break; - } - } - if ((i10 | 0) == 4) { - i22 = d13 < 1.1920928955078125e-7; - break; - } else if ((i10 | 0) == 19) { - STACKTOP = i3; - return; - } - } else { - i9 = 0; - i22 = 1; - } - } while (0); - i15 = i9 + 1 | 0; - i11 = i4 + (i9 << 3) + 20 | 0; - i10 = HEAP32[i11 >> 2] | 0; - i11 = HEAP32[i11 + 4 >> 2] | 0; - d14 = (HEAP32[tempDoublePtr >> 2] = i10, +HEAPF32[tempDoublePtr >> 2]); - d13 = (HEAP32[tempDoublePtr >> 2] = i11, +HEAPF32[tempDoublePtr >> 2]); - i12 = i4 + (((i15 | 0) < (i12 | 0) ? i15 : 0) << 3) + 20 | 0; - i15 = HEAP32[i12 >> 2] | 0; - i12 = HEAP32[i12 + 4 >> 2] | 0; - d21 = (HEAP32[tempDoublePtr >> 2] = i15, +HEAPF32[tempDoublePtr >> 2]); - d18 = (HEAP32[tempDoublePtr >> 2] = i12, +HEAPF32[tempDoublePtr >> 2]); - if (i22) { - HEAP32[i5 >> 2] = 1; - HEAP32[i1 + 56 >> 2] = 1; - i22 = i4 + (i9 << 3) + 84 | 0; - i15 = HEAP32[i22 + 4 >> 2] | 0; - i12 = i1 + 40 | 0; - HEAP32[i12 >> 2] = HEAP32[i22 >> 2]; - HEAP32[i12 + 4 >> 2] = i15; - d20 = +((d14 + d21) * .5); - d21 = +((d13 + d18) * .5); - i12 = i1 + 48 | 0; - HEAPF32[i12 >> 2] = d20; - HEAPF32[i12 + 4 >> 2] = d21; - i12 = i2; - i15 = HEAP32[i12 + 4 >> 2] | 0; - i22 = i1; - HEAP32[i22 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i22 + 4 >> 2] = i15; - HEAP32[i1 + 16 >> 2] = 0; - STACKTOP = i3; - return; - } - d16 = d7 - d14; - d20 = d6 - d13; - d19 = d7 - d21; - d17 = d6 - d18; - if (d16 * (d21 - d14) + d20 * (d18 - d13) <= 0.0) { - if (d16 * d16 + d20 * d20 > d8 * d8) { - STACKTOP = i3; - return; - } - HEAP32[i5 >> 2] = 1; - HEAP32[i1 + 56 >> 2] = 1; - i4 = i1 + 40 | 0; - d21 = +d16; - d6 = +d20; - i22 = i4; - HEAPF32[i22 >> 2] = d21; - HEAPF32[i22 + 4 >> 2] = d6; - d6 = +Math_sqrt(+(d16 * d16 + d20 * d20)); - if (!(d6 < 1.1920928955078125e-7)) { - d21 = 1.0 / d6; - HEAPF32[i4 >> 2] = d16 * d21; - HEAPF32[i1 + 44 >> 2] = d20 * d21; - } - i12 = i1 + 48 | 0; - HEAP32[i12 >> 2] = i10; - HEAP32[i12 + 4 >> 2] = i11; - i12 = i2; - i15 = HEAP32[i12 + 4 >> 2] | 0; - i22 = i1; - HEAP32[i22 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i22 + 4 >> 2] = i15; - HEAP32[i1 + 16 >> 2] = 0; - STACKTOP = i3; - return; - } - if (!(d19 * (d14 - d21) + d17 * (d13 - d18) <= 0.0)) { - d14 = (d14 + d21) * .5; - d13 = (d13 + d18) * .5; - i10 = i4 + (i9 << 3) + 84 | 0; - if ((d7 - d14) * +HEAPF32[i10 >> 2] + (d6 - d13) * +HEAPF32[i4 + (i9 << 3) + 88 >> 2] > d8) { - STACKTOP = i3; - return; - } - HEAP32[i5 >> 2] = 1; - HEAP32[i1 + 56 >> 2] = 1; - i22 = i10; - i15 = HEAP32[i22 + 4 >> 2] | 0; - i12 = i1 + 40 | 0; - HEAP32[i12 >> 2] = HEAP32[i22 >> 2]; - HEAP32[i12 + 4 >> 2] = i15; - d20 = +d14; - d21 = +d13; - i12 = i1 + 48 | 0; - HEAPF32[i12 >> 2] = d20; - HEAPF32[i12 + 4 >> 2] = d21; - i12 = i2; - i15 = HEAP32[i12 + 4 >> 2] | 0; - i22 = i1; - HEAP32[i22 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i22 + 4 >> 2] = i15; - HEAP32[i1 + 16 >> 2] = 0; - STACKTOP = i3; - return; - } - if (d19 * d19 + d17 * d17 > d8 * d8) { - STACKTOP = i3; - return; - } - HEAP32[i5 >> 2] = 1; - HEAP32[i1 + 56 >> 2] = 1; - i4 = i1 + 40 | 0; - d21 = +d19; - d6 = +d17; - i22 = i4; - HEAPF32[i22 >> 2] = d21; - HEAPF32[i22 + 4 >> 2] = d6; - d6 = +Math_sqrt(+(d19 * d19 + d17 * d17)); - if (!(d6 < 1.1920928955078125e-7)) { - d21 = 1.0 / d6; - HEAPF32[i4 >> 2] = d19 * d21; - HEAPF32[i1 + 44 >> 2] = d17 * d21; - } - i22 = i1 + 48 | 0; - HEAP32[i22 >> 2] = i15; - HEAP32[i22 + 4 >> 2] = i12; - i12 = i2; - i15 = HEAP32[i12 + 4 >> 2] | 0; - i22 = i1; - HEAP32[i22 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i22 + 4 >> 2] = i15; - HEAP32[i1 + 16 >> 2] = 0; - STACKTOP = i3; - return; -} -function __ZN15b2WorldManifold10InitializeEPK10b2ManifoldRK11b2TransformfS5_f(i1, i5, i7, d4, i8, d3) { - i1 = i1 | 0; - i5 = i5 | 0; - i7 = i7 | 0; - d4 = +d4; - i8 = i8 | 0; - d3 = +d3; - var i2 = 0, i6 = 0, d9 = 0.0, d10 = 0.0, i11 = 0, i12 = 0, i13 = 0, d14 = 0.0, d15 = 0.0, i16 = 0, d17 = 0.0, d18 = 0.0, d19 = 0.0, i20 = 0, d21 = 0.0, d22 = 0.0; - i2 = STACKTOP; - i6 = i5 + 60 | 0; - if ((HEAP32[i6 >> 2] | 0) == 0) { - STACKTOP = i2; - return; - } - i11 = HEAP32[i5 + 56 >> 2] | 0; - if ((i11 | 0) == 2) { - i13 = i8 + 12 | 0; - d17 = +HEAPF32[i13 >> 2]; - d18 = +HEAPF32[i5 + 40 >> 2]; - i16 = i8 + 8 | 0; - d19 = +HEAPF32[i16 >> 2]; - d15 = +HEAPF32[i5 + 44 >> 2]; - d14 = d17 * d18 - d19 * d15; - d15 = d18 * d19 + d17 * d15; - d17 = +d14; - d19 = +d15; - i12 = i1; - HEAPF32[i12 >> 2] = d17; - HEAPF32[i12 + 4 >> 2] = d19; - d19 = +HEAPF32[i13 >> 2]; - d17 = +HEAPF32[i5 + 48 >> 2]; - d18 = +HEAPF32[i16 >> 2]; - d10 = +HEAPF32[i5 + 52 >> 2]; - d9 = +HEAPF32[i8 >> 2] + (d19 * d17 - d18 * d10); - d10 = d17 * d18 + d19 * d10 + +HEAPF32[i8 + 4 >> 2]; - if ((HEAP32[i6 >> 2] | 0) > 0) { - i8 = i7 + 12 | 0; - i11 = i7 + 8 | 0; - i12 = i7 + 4 | 0; - i13 = i1 + 4 | 0; - i16 = 0; - do { - d18 = +HEAPF32[i8 >> 2]; - d22 = +HEAPF32[i5 + (i16 * 20 | 0) >> 2]; - d21 = +HEAPF32[i11 >> 2]; - d17 = +HEAPF32[i5 + (i16 * 20 | 0) + 4 >> 2]; - d19 = +HEAPF32[i7 >> 2] + (d18 * d22 - d21 * d17); - d17 = d22 * d21 + d18 * d17 + +HEAPF32[i12 >> 2]; - d18 = d3 - (d14 * (d19 - d9) + (d17 - d10) * d15); - d19 = +((d19 - d14 * d4 + (d19 + d14 * d18)) * .5); - d14 = +((d17 - d15 * d4 + (d17 + d15 * d18)) * .5); - i20 = i1 + (i16 << 3) + 8 | 0; - HEAPF32[i20 >> 2] = d19; - HEAPF32[i20 + 4 >> 2] = d14; - i16 = i16 + 1 | 0; - d14 = +HEAPF32[i1 >> 2]; - d15 = +HEAPF32[i13 >> 2]; - } while ((i16 | 0) < (HEAP32[i6 >> 2] | 0)); - } - d21 = +-d14; - d22 = +-d15; - i20 = i1; - HEAPF32[i20 >> 2] = d21; - HEAPF32[i20 + 4 >> 2] = d22; - STACKTOP = i2; - return; - } else if ((i11 | 0) == 1) { - i16 = i7 + 12 | 0; - d19 = +HEAPF32[i16 >> 2]; - d21 = +HEAPF32[i5 + 40 >> 2]; - i20 = i7 + 8 | 0; - d22 = +HEAPF32[i20 >> 2]; - d15 = +HEAPF32[i5 + 44 >> 2]; - d14 = d19 * d21 - d22 * d15; - d15 = d21 * d22 + d19 * d15; - d19 = +d14; - d22 = +d15; - i13 = i1; - HEAPF32[i13 >> 2] = d19; - HEAPF32[i13 + 4 >> 2] = d22; - d22 = +HEAPF32[i16 >> 2]; - d19 = +HEAPF32[i5 + 48 >> 2]; - d21 = +HEAPF32[i20 >> 2]; - d10 = +HEAPF32[i5 + 52 >> 2]; - d9 = +HEAPF32[i7 >> 2] + (d22 * d19 - d21 * d10); - d10 = d19 * d21 + d22 * d10 + +HEAPF32[i7 + 4 >> 2]; - if ((HEAP32[i6 >> 2] | 0) <= 0) { - STACKTOP = i2; - return; - } - i12 = i8 + 12 | 0; - i11 = i8 + 8 | 0; - i7 = i8 + 4 | 0; - i13 = i1 + 4 | 0; - i16 = 0; - while (1) { - d22 = +HEAPF32[i12 >> 2]; - d17 = +HEAPF32[i5 + (i16 * 20 | 0) >> 2]; - d18 = +HEAPF32[i11 >> 2]; - d19 = +HEAPF32[i5 + (i16 * 20 | 0) + 4 >> 2]; - d21 = +HEAPF32[i8 >> 2] + (d22 * d17 - d18 * d19); - d19 = d17 * d18 + d22 * d19 + +HEAPF32[i7 >> 2]; - d22 = d4 - (d14 * (d21 - d9) + (d19 - d10) * d15); - d21 = +((d21 - d14 * d3 + (d21 + d14 * d22)) * .5); - d22 = +((d19 - d15 * d3 + (d19 + d15 * d22)) * .5); - i20 = i1 + (i16 << 3) + 8 | 0; - HEAPF32[i20 >> 2] = d21; - HEAPF32[i20 + 4 >> 2] = d22; - i16 = i16 + 1 | 0; - if ((i16 | 0) >= (HEAP32[i6 >> 2] | 0)) { - break; - } - d14 = +HEAPF32[i1 >> 2]; - d15 = +HEAPF32[i13 >> 2]; - } - STACKTOP = i2; - return; - } else if ((i11 | 0) == 0) { - HEAPF32[i1 >> 2] = 1.0; - i6 = i1 + 4 | 0; - HEAPF32[i6 >> 2] = 0.0; - d21 = +HEAPF32[i7 + 12 >> 2]; - d22 = +HEAPF32[i5 + 48 >> 2]; - d19 = +HEAPF32[i7 + 8 >> 2]; - d10 = +HEAPF32[i5 + 52 >> 2]; - d9 = +HEAPF32[i7 >> 2] + (d21 * d22 - d19 * d10); - d10 = d22 * d19 + d21 * d10 + +HEAPF32[i7 + 4 >> 2]; - d21 = +HEAPF32[i8 + 12 >> 2]; - d19 = +HEAPF32[i5 >> 2]; - d22 = +HEAPF32[i8 + 8 >> 2]; - d15 = +HEAPF32[i5 + 4 >> 2]; - d14 = +HEAPF32[i8 >> 2] + (d21 * d19 - d22 * d15); - d15 = d19 * d22 + d21 * d15 + +HEAPF32[i8 + 4 >> 2]; - d21 = d9 - d14; - d22 = d10 - d15; - if (d21 * d21 + d22 * d22 > 1.4210854715202004e-14) { - d19 = d14 - d9; - d17 = d15 - d10; - d22 = +d19; - d18 = +d17; - i20 = i1; - HEAPF32[i20 >> 2] = d22; - HEAPF32[i20 + 4 >> 2] = d18; - d18 = +Math_sqrt(+(d19 * d19 + d17 * d17)); - if (!(d18 < 1.1920928955078125e-7)) { - d22 = 1.0 / d18; - d19 = d19 * d22; - HEAPF32[i1 >> 2] = d19; - d17 = d17 * d22; - HEAPF32[i6 >> 2] = d17; - } - } else { - d19 = 1.0; - d17 = 0.0; - } - d21 = +((d9 + d19 * d4 + (d14 - d19 * d3)) * .5); - d22 = +((d10 + d17 * d4 + (d15 - d17 * d3)) * .5); - i20 = i1 + 8 | 0; - HEAPF32[i20 >> 2] = d21; - HEAPF32[i20 + 4 >> 2] = d22; - STACKTOP = i2; - return; - } else { - STACKTOP = i2; - return; - } -} -function _main(i3, i2) { - i3 = i3 | 0; - i2 = i2 | 0; - var i1 = 0, i4 = 0, i5 = 0, d6 = 0.0, d7 = 0.0, i8 = 0, i9 = 0, d10 = 0.0, d11 = 0.0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, d22 = 0.0, d23 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 240 | 0; - i5 = i1; - i12 = i1 + 224 | 0; - i4 = i1 + 168 | 0; - i9 = i1 + 160 | 0; - i8 = i1 + 152 | 0; - L1 : do { - if ((i3 | 0) > 1) { - i14 = HEAP8[HEAP32[i2 + 4 >> 2] | 0] | 0; - switch (i14 | 0) { - case 49: - { - HEAP32[2] = 5; - HEAP32[4] = 35; - i15 = 35; - i14 = 5; - break L1; - } - case 50: - { - HEAP32[2] = 32; - HEAP32[4] = 161; - i15 = 161; - i14 = 32; - break L1; - } - case 51: - { - i13 = 5; - break L1; - } - case 52: - { - HEAP32[2] = 320; - HEAP32[4] = 2331; - i15 = 2331; - i14 = 320; - break L1; - } - case 53: - { - HEAP32[2] = 640; - HEAP32[4] = 5661; - i15 = 5661; - i14 = 640; - break L1; - } - case 48: - { - i20 = 0; - STACKTOP = i1; - return i20 | 0; - } - default: - { - HEAP32[i5 >> 2] = i14 + -48; - _printf(80, i5 | 0) | 0; - i20 = -1; - STACKTOP = i1; - return i20 | 0; - } - } - } else { - i13 = 5; - } - } while (0); - if ((i13 | 0) == 5) { - HEAP32[2] = 64; - HEAP32[4] = 333; - i15 = 333; - i14 = 64; - } - i13 = i15 + i14 | 0; - HEAP32[4] = i13; - HEAP32[2] = 0; - HEAP32[8] = __Znaj(i13 >>> 0 > 1073741823 ? -1 : i13 << 2) | 0; - HEAPF32[i12 >> 2] = 0.0; - HEAPF32[i12 + 4 >> 2] = -10.0; - i15 = __Znwj(103028) | 0; - __ZN7b2WorldC2ERK6b2Vec2(i15, i12); - HEAP32[6] = i15; - __ZN7b2World16SetAllowSleepingEb(i15, 0); - HEAP32[i5 + 44 >> 2] = 0; - i15 = i5 + 4 | 0; - i14 = i5 + 36 | 0; - HEAP32[i15 + 0 >> 2] = 0; - HEAP32[i15 + 4 >> 2] = 0; - HEAP32[i15 + 8 >> 2] = 0; - HEAP32[i15 + 12 >> 2] = 0; - HEAP32[i15 + 16 >> 2] = 0; - HEAP32[i15 + 20 >> 2] = 0; - HEAP32[i15 + 24 >> 2] = 0; - HEAP32[i15 + 28 >> 2] = 0; - HEAP8[i14] = 1; - HEAP8[i5 + 37 | 0] = 1; - HEAP8[i5 + 38 | 0] = 0; - HEAP8[i5 + 39 | 0] = 0; - HEAP32[i5 >> 2] = 0; - HEAP8[i5 + 40 | 0] = 1; - HEAPF32[i5 + 48 >> 2] = 1.0; - i14 = __ZN7b2World10CreateBodyEPK9b2BodyDef(HEAP32[6] | 0, i5) | 0; - HEAP32[i4 >> 2] = 240; - HEAP32[i4 + 4 >> 2] = 1; - HEAPF32[i4 + 8 >> 2] = .009999999776482582; - i15 = i4 + 28 | 0; - HEAP32[i15 + 0 >> 2] = 0; - HEAP32[i15 + 4 >> 2] = 0; - HEAP32[i15 + 8 >> 2] = 0; - HEAP32[i15 + 12 >> 2] = 0; - HEAP16[i15 + 16 >> 1] = 0; - HEAPF32[i9 >> 2] = -40.0; - HEAPF32[i9 + 4 >> 2] = 0.0; - HEAPF32[i8 >> 2] = 40.0; - HEAPF32[i8 + 4 >> 2] = 0.0; - __ZN11b2EdgeShape3SetERK6b2Vec2S2_(i4, i9, i8); - __ZN6b2Body13CreateFixtureEPK7b2Shapef(i14, i4, 0.0) | 0; - HEAP32[i5 >> 2] = 504; - HEAP32[i5 + 4 >> 2] = 2; - HEAPF32[i5 + 8 >> 2] = .009999999776482582; - HEAP32[i5 + 148 >> 2] = 0; - HEAPF32[i5 + 12 >> 2] = 0.0; - HEAPF32[i5 + 16 >> 2] = 0.0; - __ZN14b2PolygonShape8SetAsBoxEff(i5, .5, .5); - i14 = i4 + 44 | 0; - i15 = i4 + 4 | 0; - i8 = i4 + 36 | 0; - i17 = i4 + 37 | 0; - i18 = i4 + 38 | 0; - i19 = i4 + 39 | 0; - i20 = i4 + 40 | 0; - i13 = i4 + 48 | 0; - i12 = i4 + 4 | 0; - d11 = -7.0; - d10 = .75; - i9 = 0; - while (1) { - d7 = d11; - d6 = d10; - i16 = i9; - while (1) { - HEAP32[i14 >> 2] = 0; - HEAP32[i15 + 0 >> 2] = 0; - HEAP32[i15 + 4 >> 2] = 0; - HEAP32[i15 + 8 >> 2] = 0; - HEAP32[i15 + 12 >> 2] = 0; - HEAP32[i15 + 16 >> 2] = 0; - HEAP32[i15 + 20 >> 2] = 0; - HEAP32[i15 + 24 >> 2] = 0; - HEAP32[i15 + 28 >> 2] = 0; - HEAP8[i8] = 1; - HEAP8[i17] = 1; - HEAP8[i18] = 0; - HEAP8[i19] = 0; - HEAP8[i20] = 1; - HEAPF32[i13 >> 2] = 1.0; - HEAP32[i4 >> 2] = 2; - d23 = +d7; - d22 = +d6; - i21 = i12; - HEAPF32[i21 >> 2] = d23; - HEAPF32[i21 + 4 >> 2] = d22; - i21 = __ZN7b2World10CreateBodyEPK9b2BodyDef(HEAP32[6] | 0, i4) | 0; - __ZN6b2Body13CreateFixtureEPK7b2Shapef(i21, i5, 5.0) | 0; - HEAP32[14] = i21; - i16 = i16 + 1 | 0; - if ((i16 | 0) >= 40) { - break; - } else { - d7 = d7 + 1.125; - d6 = d6 + 0.0; - } - } - i9 = i9 + 1 | 0; - if ((i9 | 0) >= 40) { - break; - } else { - d11 = d11 + .5625; - d10 = d10 + 1.0; - } - } - if ((HEAP32[2] | 0) > 0) { - i4 = 0; - do { - __ZN7b2World4StepEfii(HEAP32[6] | 0, .01666666753590107, 3, 3); - i4 = i4 + 1 | 0; - } while ((i4 | 0) < (HEAP32[2] | 0)); - } - if ((i3 | 0) > 2) { - i21 = (HEAP8[HEAP32[i2 + 8 >> 2] | 0] | 0) + -48 | 0; - HEAP32[18] = i21; - if ((i21 | 0) != 0) { - _puts(208) | 0; - _emscripten_set_main_loop(2, 60, 1); - i21 = 0; - STACKTOP = i1; - return i21 | 0; - } - } else { - HEAP32[18] = 0; - } - while (1) { - __Z4iterv(); - if ((HEAP32[16] | 0) > (HEAP32[4] | 0)) { - i2 = 0; - break; - } - } - STACKTOP = i1; - return i2 | 0; -} -function __ZN9b2Simplex9ReadCacheEPK14b2SimplexCachePK15b2DistanceProxyRK11b2TransformS5_S8_(i2, i11, i10, i4, i3, i5) { - i2 = i2 | 0; - i11 = i11 | 0; - i10 = i10 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i6 = 0, i7 = 0, d8 = 0.0, i9 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, d24 = 0.0, d25 = 0.0, i26 = 0, d27 = 0.0, d28 = 0.0, d29 = 0.0, d30 = 0.0, d31 = 0.0, d32 = 0.0; - i1 = STACKTOP; - i13 = HEAP16[i11 + 4 >> 1] | 0; - if (!((i13 & 65535) < 4)) { - ___assert_fail(2872, 2672, 102, 2896); - } - i12 = i13 & 65535; - i6 = i2 + 108 | 0; - HEAP32[i6 >> 2] = i12; - L4 : do { - if (!(i13 << 16 >> 16 == 0)) { - i17 = i10 + 20 | 0; - i21 = i10 + 16 | 0; - i13 = i3 + 20 | 0; - i14 = i3 + 16 | 0; - i15 = i4 + 12 | 0; - i16 = i4 + 8 | 0; - i12 = i4 + 4 | 0; - i18 = i5 + 12 | 0; - i19 = i5 + 8 | 0; - i20 = i5 + 4 | 0; - i22 = 0; - while (1) { - i26 = HEAPU8[i11 + i22 + 6 | 0] | 0; - HEAP32[i2 + (i22 * 36 | 0) + 28 >> 2] = i26; - i23 = HEAPU8[i11 + i22 + 9 | 0] | 0; - HEAP32[i2 + (i22 * 36 | 0) + 32 >> 2] = i23; - if ((HEAP32[i17 >> 2] | 0) <= (i26 | 0)) { - i9 = 6; - break; - } - i26 = (HEAP32[i21 >> 2] | 0) + (i26 << 3) | 0; - d25 = +HEAPF32[i26 >> 2]; - d24 = +HEAPF32[i26 + 4 >> 2]; - if ((HEAP32[i13 >> 2] | 0) <= (i23 | 0)) { - i9 = 8; - break; - } - i23 = (HEAP32[i14 >> 2] | 0) + (i23 << 3) | 0; - d29 = +HEAPF32[i23 >> 2]; - d31 = +HEAPF32[i23 + 4 >> 2]; - d32 = +HEAPF32[i15 >> 2]; - d30 = +HEAPF32[i16 >> 2]; - d27 = +HEAPF32[i4 >> 2] + (d25 * d32 - d24 * d30); - d28 = +d27; - d30 = +(d24 * d32 + d25 * d30 + +HEAPF32[i12 >> 2]); - i23 = i2 + (i22 * 36 | 0) | 0; - HEAPF32[i23 >> 2] = d28; - HEAPF32[i23 + 4 >> 2] = d30; - d30 = +HEAPF32[i18 >> 2]; - d25 = +HEAPF32[i19 >> 2]; - d24 = +HEAPF32[i5 >> 2] + (d29 * d30 - d31 * d25); - d28 = +d24; - d25 = +(d31 * d30 + d29 * d25 + +HEAPF32[i20 >> 2]); - i23 = i2 + (i22 * 36 | 0) + 8 | 0; - HEAPF32[i23 >> 2] = d28; - HEAPF32[i23 + 4 >> 2] = d25; - d24 = +(d24 - d27); - d25 = +(+HEAPF32[i2 + (i22 * 36 | 0) + 12 >> 2] - +HEAPF32[i2 + (i22 * 36 | 0) + 4 >> 2]); - i23 = i2 + (i22 * 36 | 0) + 16 | 0; - HEAPF32[i23 >> 2] = d24; - HEAPF32[i23 + 4 >> 2] = d25; - HEAPF32[i2 + (i22 * 36 | 0) + 24 >> 2] = 0.0; - i22 = i22 + 1 | 0; - i23 = HEAP32[i6 >> 2] | 0; - if ((i22 | 0) >= (i23 | 0)) { - i7 = i23; - break L4; - } - } - if ((i9 | 0) == 6) { - ___assert_fail(2776, 2808, 103, 2840); - } else if ((i9 | 0) == 8) { - ___assert_fail(2776, 2808, 103, 2840); - } - } else { - i7 = i12; - } - } while (0); - do { - if ((i7 | 0) > 1) { - d24 = +HEAPF32[i11 >> 2]; - if ((i7 | 0) == 2) { - d32 = +HEAPF32[i2 + 16 >> 2] - +HEAPF32[i2 + 52 >> 2]; - d8 = +HEAPF32[i2 + 20 >> 2] - +HEAPF32[i2 + 56 >> 2]; - d8 = +Math_sqrt(+(d32 * d32 + d8 * d8)); - } else if ((i7 | 0) == 3) { - d8 = +HEAPF32[i2 + 16 >> 2]; - d32 = +HEAPF32[i2 + 20 >> 2]; - d8 = (+HEAPF32[i2 + 52 >> 2] - d8) * (+HEAPF32[i2 + 92 >> 2] - d32) - (+HEAPF32[i2 + 56 >> 2] - d32) * (+HEAPF32[i2 + 88 >> 2] - d8); - } else { - ___assert_fail(2712, 2672, 259, 2736); - } - if (!(d8 < d24 * .5) ? !(d24 * 2.0 < d8 | d8 < 1.1920928955078125e-7) : 0) { - i9 = 18; - break; - } - HEAP32[i6 >> 2] = 0; - } else { - i9 = 18; - } - } while (0); - if ((i9 | 0) == 18 ? (i7 | 0) != 0 : 0) { - STACKTOP = i1; - return; - } - HEAP32[i2 + 28 >> 2] = 0; - HEAP32[i2 + 32 >> 2] = 0; - if ((HEAP32[i10 + 20 >> 2] | 0) <= 0) { - ___assert_fail(2776, 2808, 103, 2840); - } - i26 = HEAP32[i10 + 16 >> 2] | 0; - d8 = +HEAPF32[i26 >> 2]; - d24 = +HEAPF32[i26 + 4 >> 2]; - if ((HEAP32[i3 + 20 >> 2] | 0) <= 0) { - ___assert_fail(2776, 2808, 103, 2840); - } - i26 = HEAP32[i3 + 16 >> 2] | 0; - d27 = +HEAPF32[i26 >> 2]; - d25 = +HEAPF32[i26 + 4 >> 2]; - d30 = +HEAPF32[i4 + 12 >> 2]; - d32 = +HEAPF32[i4 + 8 >> 2]; - d31 = +HEAPF32[i4 >> 2] + (d8 * d30 - d24 * d32); - d32 = d24 * d30 + d8 * d32 + +HEAPF32[i4 + 4 >> 2]; - d30 = +d31; - d28 = +d32; - i26 = i2; - HEAPF32[i26 >> 2] = d30; - HEAPF32[i26 + 4 >> 2] = d28; - d28 = +HEAPF32[i5 + 12 >> 2]; - d30 = +HEAPF32[i5 + 8 >> 2]; - d29 = +HEAPF32[i5 >> 2] + (d27 * d28 - d25 * d30); - d30 = d25 * d28 + d27 * d30 + +HEAPF32[i5 + 4 >> 2]; - d27 = +d29; - d28 = +d30; - i26 = i2 + 8 | 0; - HEAPF32[i26 >> 2] = d27; - HEAPF32[i26 + 4 >> 2] = d28; - d31 = +(d29 - d31); - d32 = +(d30 - d32); - i26 = i2 + 16 | 0; - HEAPF32[i26 >> 2] = d31; - HEAPF32[i26 + 4 >> 2] = d32; - HEAP32[i6 >> 2] = 1; - STACKTOP = i1; - return; -} -function __ZNSt3__17__sort4IRPFbRK6b2PairS3_EPS1_EEjT0_S8_S8_S8_T_(i6, i7, i5, i4, i1) { - i6 = i6 | 0; - i7 = i7 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i8 = 0, i9 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i9 = FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i7, i6) | 0; - i8 = FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i5, i7) | 0; - do { - if (i9) { - if (i8) { - HEAP32[i3 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - i8 = 1; - break; - } - HEAP32[i3 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i5, i7) | 0) { - HEAP32[i3 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - i8 = 2; - } else { - i8 = 1; - } - } else { - if (i8) { - HEAP32[i3 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - if (FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i7, i6) | 0) { - HEAP32[i3 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - i8 = 2; - } else { - i8 = 1; - } - } else { - i8 = 0; - } - } - } while (0); - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i4, i5) | 0)) { - i9 = i8; - STACKTOP = i2; - return i9 | 0; - } - HEAP32[i3 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i4 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i5, i7) | 0)) { - i9 = i8 + 1 | 0; - STACKTOP = i2; - return i9 | 0; - } - HEAP32[i3 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - if (!(FUNCTION_TABLE_iii[HEAP32[i1 >> 2] & 3](i7, i6) | 0)) { - i9 = i8 + 2 | 0; - STACKTOP = i2; - return i9 | 0; - } - HEAP32[i3 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - HEAP32[i6 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - i9 = i8 + 3 | 0; - STACKTOP = i2; - return i9 | 0; -} -function __ZN15b2ContactSolver27SolveTOIPositionConstraintsEii(i9, i2, i5) { - i9 = i9 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, d21 = 0.0, d22 = 0.0, d23 = 0.0, d24 = 0.0, d25 = 0.0, d26 = 0.0, d27 = 0.0, d28 = 0.0, d29 = 0.0, d30 = 0.0, d31 = 0.0, d32 = 0.0, d33 = 0.0, d34 = 0.0, d35 = 0.0, d36 = 0.0, i37 = 0, d38 = 0.0, d39 = 0.0, d40 = 0.0, d41 = 0.0, d42 = 0.0, d43 = 0.0, d44 = 0.0, d45 = 0.0, i46 = 0, d47 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i8 = i1 + 40 | 0; - i3 = i1 + 24 | 0; - i4 = i1; - i6 = i9 + 48 | 0; - if ((HEAP32[i6 >> 2] | 0) <= 0) { - d45 = 0.0; - i37 = d45 >= -.007499999832361937; - STACKTOP = i1; - return i37 | 0; - } - i7 = i9 + 36 | 0; - i14 = i9 + 24 | 0; - i9 = i8 + 8 | 0; - i15 = i8 + 12 | 0; - i10 = i3 + 8 | 0; - i11 = i3 + 12 | 0; - i12 = i4 + 8 | 0; - i13 = i4 + 16 | 0; - i16 = 0; - d34 = 0.0; - do { - i37 = HEAP32[i7 >> 2] | 0; - i19 = i37 + (i16 * 88 | 0) | 0; - i17 = HEAP32[i37 + (i16 * 88 | 0) + 32 >> 2] | 0; - i18 = HEAP32[i37 + (i16 * 88 | 0) + 36 >> 2] | 0; - i20 = i37 + (i16 * 88 | 0) + 48 | 0; - d21 = +HEAPF32[i20 >> 2]; - d22 = +HEAPF32[i20 + 4 >> 2]; - i20 = i37 + (i16 * 88 | 0) + 56 | 0; - d23 = +HEAPF32[i20 >> 2]; - d24 = +HEAPF32[i20 + 4 >> 2]; - i20 = HEAP32[i37 + (i16 * 88 | 0) + 84 >> 2] | 0; - if ((i17 | 0) == (i2 | 0) | (i17 | 0) == (i5 | 0)) { - d26 = +HEAPF32[i37 + (i16 * 88 | 0) + 64 >> 2]; - d27 = +HEAPF32[i37 + (i16 * 88 | 0) + 40 >> 2]; - } else { - d26 = 0.0; - d27 = 0.0; - } - d25 = +HEAPF32[i37 + (i16 * 88 | 0) + 44 >> 2]; - d28 = +HEAPF32[i37 + (i16 * 88 | 0) + 68 >> 2]; - i37 = HEAP32[i14 >> 2] | 0; - i46 = i37 + (i17 * 12 | 0) | 0; - d33 = +HEAPF32[i46 >> 2]; - d35 = +HEAPF32[i46 + 4 >> 2]; - d29 = +HEAPF32[i37 + (i17 * 12 | 0) + 8 >> 2]; - i46 = i37 + (i18 * 12 | 0) | 0; - d32 = +HEAPF32[i46 >> 2]; - d36 = +HEAPF32[i46 + 4 >> 2]; - d31 = +HEAPF32[i37 + (i18 * 12 | 0) + 8 >> 2]; - if ((i20 | 0) > 0) { - d30 = d27 + d25; - i37 = 0; - do { - d38 = +Math_sin(+d29); - HEAPF32[i9 >> 2] = d38; - d44 = +Math_cos(+d29); - HEAPF32[i15 >> 2] = d44; - d43 = +Math_sin(+d31); - HEAPF32[i10 >> 2] = d43; - d41 = +Math_cos(+d31); - HEAPF32[i11 >> 2] = d41; - d40 = +(d33 - (d21 * d44 - d22 * d38)); - d38 = +(d35 - (d22 * d44 + d21 * d38)); - i46 = i8; - HEAPF32[i46 >> 2] = d40; - HEAPF32[i46 + 4 >> 2] = d38; - d38 = +(d32 - (d23 * d41 - d24 * d43)); - d43 = +(d36 - (d24 * d41 + d23 * d43)); - i46 = i3; - HEAPF32[i46 >> 2] = d38; - HEAPF32[i46 + 4 >> 2] = d43; - __ZN24b2PositionSolverManifold10InitializeEP27b2ContactPositionConstraintRK11b2TransformS4_i(i4, i19, i8, i3, i37); - i46 = i4; - d43 = +HEAPF32[i46 >> 2]; - d38 = +HEAPF32[i46 + 4 >> 2]; - i46 = i12; - d41 = +HEAPF32[i46 >> 2]; - d40 = +HEAPF32[i46 + 4 >> 2]; - d44 = +HEAPF32[i13 >> 2]; - d39 = d41 - d33; - d42 = d40 - d35; - d41 = d41 - d32; - d40 = d40 - d36; - d34 = d34 < d44 ? d34 : d44; - d44 = (d44 + .004999999888241291) * .75; - d44 = d44 < 0.0 ? d44 : 0.0; - d45 = d38 * d39 - d43 * d42; - d47 = d38 * d41 - d43 * d40; - d45 = d47 * d28 * d47 + (d30 + d45 * d26 * d45); - if (d45 > 0.0) { - d44 = -(d44 < -.20000000298023224 ? -.20000000298023224 : d44) / d45; - } else { - d44 = 0.0; - } - d47 = d43 * d44; - d45 = d38 * d44; - d33 = d33 - d27 * d47; - d35 = d35 - d27 * d45; - d29 = d29 - d26 * (d39 * d45 - d42 * d47); - d32 = d32 + d25 * d47; - d36 = d36 + d25 * d45; - d31 = d31 + d28 * (d41 * d45 - d40 * d47); - i37 = i37 + 1 | 0; - } while ((i37 | 0) != (i20 | 0)); - i37 = HEAP32[i14 >> 2] | 0; - } - d47 = +d33; - d45 = +d35; - i46 = i37 + (i17 * 12 | 0) | 0; - HEAPF32[i46 >> 2] = d47; - HEAPF32[i46 + 4 >> 2] = d45; - i46 = HEAP32[i14 >> 2] | 0; - HEAPF32[i46 + (i17 * 12 | 0) + 8 >> 2] = d29; - d45 = +d32; - d47 = +d36; - i46 = i46 + (i18 * 12 | 0) | 0; - HEAPF32[i46 >> 2] = d45; - HEAPF32[i46 + 4 >> 2] = d47; - HEAPF32[(HEAP32[i14 >> 2] | 0) + (i18 * 12 | 0) + 8 >> 2] = d31; - i16 = i16 + 1 | 0; - } while ((i16 | 0) < (HEAP32[i6 >> 2] | 0)); - i46 = d34 >= -.007499999832361937; - STACKTOP = i1; - return i46 | 0; -} -function __ZN15b2ContactSolver24SolvePositionConstraintsEv(i7) { - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, d17 = 0.0, d18 = 0.0, d19 = 0.0, d20 = 0.0, i21 = 0, d22 = 0.0, d23 = 0.0, d24 = 0.0, d25 = 0.0, i26 = 0, d27 = 0.0, d28 = 0.0, d29 = 0.0, d30 = 0.0, d31 = 0.0, d32 = 0.0, d33 = 0.0, d34 = 0.0, i35 = 0, d36 = 0.0, d37 = 0.0, d38 = 0.0, d39 = 0.0, d40 = 0.0, d41 = 0.0, d42 = 0.0, d43 = 0.0, i44 = 0, d45 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i4 = i1 + 40 | 0; - i5 = i1 + 24 | 0; - i3 = i1; - i2 = i7 + 48 | 0; - if ((HEAP32[i2 >> 2] | 0) <= 0) { - d43 = 0.0; - i35 = d43 >= -.014999999664723873; - STACKTOP = i1; - return i35 | 0; - } - i6 = i7 + 36 | 0; - i9 = i7 + 24 | 0; - i13 = i4 + 8 | 0; - i7 = i4 + 12 | 0; - i8 = i5 + 8 | 0; - i12 = i5 + 12 | 0; - i10 = i3 + 8 | 0; - i11 = i3 + 16 | 0; - i35 = HEAP32[i9 >> 2] | 0; - i15 = 0; - d32 = 0.0; - do { - i21 = HEAP32[i6 >> 2] | 0; - i26 = i21 + (i15 * 88 | 0) | 0; - i16 = HEAP32[i21 + (i15 * 88 | 0) + 32 >> 2] | 0; - i14 = HEAP32[i21 + (i15 * 88 | 0) + 36 >> 2] | 0; - i44 = i21 + (i15 * 88 | 0) + 48 | 0; - d22 = +HEAPF32[i44 >> 2]; - d23 = +HEAPF32[i44 + 4 >> 2]; - d25 = +HEAPF32[i21 + (i15 * 88 | 0) + 40 >> 2]; - d18 = +HEAPF32[i21 + (i15 * 88 | 0) + 64 >> 2]; - i44 = i21 + (i15 * 88 | 0) + 56 | 0; - d24 = +HEAPF32[i44 >> 2]; - d19 = +HEAPF32[i44 + 4 >> 2]; - d17 = +HEAPF32[i21 + (i15 * 88 | 0) + 44 >> 2]; - d20 = +HEAPF32[i21 + (i15 * 88 | 0) + 68 >> 2]; - i21 = HEAP32[i21 + (i15 * 88 | 0) + 84 >> 2] | 0; - i44 = i35 + (i16 * 12 | 0) | 0; - d28 = +HEAPF32[i44 >> 2]; - d33 = +HEAPF32[i44 + 4 >> 2]; - d29 = +HEAPF32[i35 + (i16 * 12 | 0) + 8 >> 2]; - i44 = i35 + (i14 * 12 | 0) | 0; - d30 = +HEAPF32[i44 >> 2]; - d34 = +HEAPF32[i44 + 4 >> 2]; - d31 = +HEAPF32[i35 + (i14 * 12 | 0) + 8 >> 2]; - if ((i21 | 0) > 0) { - d27 = d25 + d17; - i35 = 0; - do { - d41 = +Math_sin(+d29); - HEAPF32[i13 >> 2] = d41; - d42 = +Math_cos(+d29); - HEAPF32[i7 >> 2] = d42; - d39 = +Math_sin(+d31); - HEAPF32[i8 >> 2] = d39; - d38 = +Math_cos(+d31); - HEAPF32[i12 >> 2] = d38; - d40 = +(d28 - (d22 * d42 - d23 * d41)); - d41 = +(d33 - (d23 * d42 + d22 * d41)); - i44 = i4; - HEAPF32[i44 >> 2] = d40; - HEAPF32[i44 + 4 >> 2] = d41; - d41 = +(d30 - (d24 * d38 - d19 * d39)); - d39 = +(d34 - (d19 * d38 + d24 * d39)); - i44 = i5; - HEAPF32[i44 >> 2] = d41; - HEAPF32[i44 + 4 >> 2] = d39; - __ZN24b2PositionSolverManifold10InitializeEP27b2ContactPositionConstraintRK11b2TransformS4_i(i3, i26, i4, i5, i35); - i44 = i3; - d39 = +HEAPF32[i44 >> 2]; - d41 = +HEAPF32[i44 + 4 >> 2]; - i44 = i10; - d38 = +HEAPF32[i44 >> 2]; - d40 = +HEAPF32[i44 + 4 >> 2]; - d42 = +HEAPF32[i11 >> 2]; - d36 = d38 - d28; - d37 = d40 - d33; - d38 = d38 - d30; - d40 = d40 - d34; - d32 = d32 < d42 ? d32 : d42; - d42 = (d42 + .004999999888241291) * .20000000298023224; - d43 = d42 < 0.0 ? d42 : 0.0; - d42 = d41 * d36 - d39 * d37; - d45 = d41 * d38 - d39 * d40; - d42 = d45 * d20 * d45 + (d27 + d42 * d18 * d42); - if (d42 > 0.0) { - d42 = -(d43 < -.20000000298023224 ? -.20000000298023224 : d43) / d42; - } else { - d42 = 0.0; - } - d45 = d39 * d42; - d43 = d41 * d42; - d28 = d28 - d25 * d45; - d33 = d33 - d25 * d43; - d29 = d29 - d18 * (d36 * d43 - d37 * d45); - d30 = d30 + d17 * d45; - d34 = d34 + d17 * d43; - d31 = d31 + d20 * (d38 * d43 - d40 * d45); - i35 = i35 + 1 | 0; - } while ((i35 | 0) != (i21 | 0)); - i35 = HEAP32[i9 >> 2] | 0; - } - d45 = +d28; - d43 = +d33; - i35 = i35 + (i16 * 12 | 0) | 0; - HEAPF32[i35 >> 2] = d45; - HEAPF32[i35 + 4 >> 2] = d43; - i35 = HEAP32[i9 >> 2] | 0; - HEAPF32[i35 + (i16 * 12 | 0) + 8 >> 2] = d29; - d43 = +d30; - d45 = +d34; - i35 = i35 + (i14 * 12 | 0) | 0; - HEAPF32[i35 >> 2] = d43; - HEAPF32[i35 + 4 >> 2] = d45; - i35 = HEAP32[i9 >> 2] | 0; - HEAPF32[i35 + (i14 * 12 | 0) + 8 >> 2] = d31; - i15 = i15 + 1 | 0; - } while ((i15 | 0) < (HEAP32[i2 >> 2] | 0)); - i44 = d32 >= -.014999999664723873; - STACKTOP = i1; - return i44 | 0; -} -function __Z22b2CollideEdgeAndCircleP10b2ManifoldPK11b2EdgeShapeRK11b2TransformPK13b2CircleShapeS6_(i1, i7, i6, i22, i5) { - i1 = i1 | 0; - i7 = i7 | 0; - i6 = i6 | 0; - i22 = i22 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, d8 = 0.0, d9 = 0.0, d10 = 0.0, d11 = 0.0, d12 = 0.0, d13 = 0.0, i14 = 0, i15 = 0, d16 = 0.0, d17 = 0.0, d18 = 0.0, d19 = 0.0, d20 = 0.0, d21 = 0.0, d23 = 0.0, d24 = 0.0; - i4 = STACKTOP; - i2 = i1 + 60 | 0; - HEAP32[i2 >> 2] = 0; - i3 = i22 + 12 | 0; - d9 = +HEAPF32[i5 + 12 >> 2]; - d23 = +HEAPF32[i3 >> 2]; - d17 = +HEAPF32[i5 + 8 >> 2]; - d18 = +HEAPF32[i22 + 16 >> 2]; - d21 = +HEAPF32[i5 >> 2] + (d9 * d23 - d17 * d18) - +HEAPF32[i6 >> 2]; - d18 = d23 * d17 + d9 * d18 + +HEAPF32[i5 + 4 >> 2] - +HEAPF32[i6 + 4 >> 2]; - d9 = +HEAPF32[i6 + 12 >> 2]; - d17 = +HEAPF32[i6 + 8 >> 2]; - d23 = d21 * d9 + d18 * d17; - d17 = d9 * d18 - d21 * d17; - i6 = i7 + 12 | 0; - i5 = HEAP32[i6 >> 2] | 0; - i6 = HEAP32[i6 + 4 >> 2] | 0; - d21 = (HEAP32[tempDoublePtr >> 2] = i5, +HEAPF32[tempDoublePtr >> 2]); - d18 = (HEAP32[tempDoublePtr >> 2] = i6, +HEAPF32[tempDoublePtr >> 2]); - i15 = i7 + 20 | 0; - i14 = HEAP32[i15 >> 2] | 0; - i15 = HEAP32[i15 + 4 >> 2] | 0; - d9 = (HEAP32[tempDoublePtr >> 2] = i14, +HEAPF32[tempDoublePtr >> 2]); - d10 = (HEAP32[tempDoublePtr >> 2] = i15, +HEAPF32[tempDoublePtr >> 2]); - d8 = d9 - d21; - d16 = d10 - d18; - d19 = d8 * (d9 - d23) + d16 * (d10 - d17); - d13 = d23 - d21; - d12 = d17 - d18; - d20 = d13 * d8 + d12 * d16; - d11 = +HEAPF32[i7 + 8 >> 2] + +HEAPF32[i22 + 8 >> 2]; - if (d20 <= 0.0) { - if (d13 * d13 + d12 * d12 > d11 * d11) { - STACKTOP = i4; - return; - } - if ((HEAP8[i7 + 44 | 0] | 0) != 0 ? (i22 = i7 + 28 | 0, d24 = +HEAPF32[i22 >> 2], (d21 - d23) * (d21 - d24) + (d18 - d17) * (d18 - +HEAPF32[i22 + 4 >> 2]) > 0.0) : 0) { - STACKTOP = i4; - return; - } - HEAP32[i2 >> 2] = 1; - HEAP32[i1 + 56 >> 2] = 0; - HEAPF32[i1 + 40 >> 2] = 0.0; - HEAPF32[i1 + 44 >> 2] = 0.0; - i14 = i1 + 48 | 0; - HEAP32[i14 >> 2] = i5; - HEAP32[i14 + 4 >> 2] = i6; - i14 = i1 + 16 | 0; - HEAP32[i14 >> 2] = 0; - HEAP8[i14] = 0; - HEAP8[i14 + 1 | 0] = 0; - HEAP8[i14 + 2 | 0] = 0; - HEAP8[i14 + 3 | 0] = 0; - i14 = i3; - i15 = HEAP32[i14 + 4 >> 2] | 0; - i22 = i1; - HEAP32[i22 >> 2] = HEAP32[i14 >> 2]; - HEAP32[i22 + 4 >> 2] = i15; - STACKTOP = i4; - return; - } - if (d19 <= 0.0) { - d8 = d23 - d9; - d12 = d17 - d10; - if (d8 * d8 + d12 * d12 > d11 * d11) { - STACKTOP = i4; - return; - } - if ((HEAP8[i7 + 45 | 0] | 0) != 0 ? (i22 = i7 + 36 | 0, d24 = +HEAPF32[i22 >> 2], d8 * (d24 - d9) + d12 * (+HEAPF32[i22 + 4 >> 2] - d10) > 0.0) : 0) { - STACKTOP = i4; - return; - } - HEAP32[i2 >> 2] = 1; - HEAP32[i1 + 56 >> 2] = 0; - HEAPF32[i1 + 40 >> 2] = 0.0; - HEAPF32[i1 + 44 >> 2] = 0.0; - i22 = i1 + 48 | 0; - HEAP32[i22 >> 2] = i14; - HEAP32[i22 + 4 >> 2] = i15; - i14 = i1 + 16 | 0; - HEAP32[i14 >> 2] = 0; - HEAP8[i14] = 1; - HEAP8[i14 + 1 | 0] = 0; - HEAP8[i14 + 2 | 0] = 0; - HEAP8[i14 + 3 | 0] = 0; - i14 = i3; - i15 = HEAP32[i14 + 4 >> 2] | 0; - i22 = i1; - HEAP32[i22 >> 2] = HEAP32[i14 >> 2]; - HEAP32[i22 + 4 >> 2] = i15; - STACKTOP = i4; - return; - } - d24 = d8 * d8 + d16 * d16; - if (!(d24 > 0.0)) { - ___assert_fail(5560, 5576, 127, 5616); - } - d24 = 1.0 / d24; - d23 = d23 - (d21 * d19 + d9 * d20) * d24; - d24 = d17 - (d18 * d19 + d10 * d20) * d24; - if (d23 * d23 + d24 * d24 > d11 * d11) { - STACKTOP = i4; - return; - } - d9 = -d16; - if (d8 * d12 + d13 * d9 < 0.0) { - d8 = -d8; - } else { - d16 = d9; - } - d9 = +Math_sqrt(+(d8 * d8 + d16 * d16)); - if (!(d9 < 1.1920928955078125e-7)) { - d24 = 1.0 / d9; - d16 = d16 * d24; - d8 = d8 * d24; - } - HEAP32[i2 >> 2] = 1; - HEAP32[i1 + 56 >> 2] = 1; - d23 = +d16; - d24 = +d8; - i14 = i1 + 40 | 0; - HEAPF32[i14 >> 2] = d23; - HEAPF32[i14 + 4 >> 2] = d24; - i14 = i1 + 48 | 0; - HEAP32[i14 >> 2] = i5; - HEAP32[i14 + 4 >> 2] = i6; - i14 = i1 + 16 | 0; - HEAP32[i14 >> 2] = 0; - HEAP8[i14] = 0; - HEAP8[i14 + 1 | 0] = 0; - HEAP8[i14 + 2 | 0] = 1; - HEAP8[i14 + 3 | 0] = 0; - i14 = i3; - i15 = HEAP32[i14 + 4 >> 2] | 0; - i22 = i1; - HEAP32[i22 >> 2] = HEAP32[i14 >> 2]; - HEAP32[i22 + 4 >> 2] = i15; - STACKTOP = i4; - return; -} -function __ZN6b2BodyC2EPK9b2BodyDefP7b2World(i1, i2, i5) { - i1 = i1 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - var i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, d13 = 0.0; - i3 = STACKTOP; - i9 = i2 + 4 | 0; - d13 = +HEAPF32[i9 >> 2]; - if (!(d13 == d13 & 0.0 == 0.0 & d13 > -inf & d13 < inf)) { - ___assert_fail(1496, 1520, 27, 1552); - } - d13 = +HEAPF32[i2 + 8 >> 2]; - if (!(d13 == d13 & 0.0 == 0.0 & d13 > -inf & d13 < inf)) { - ___assert_fail(1496, 1520, 27, 1552); - } - i6 = i2 + 16 | 0; - d13 = +HEAPF32[i6 >> 2]; - if (!(d13 == d13 & 0.0 == 0.0 & d13 > -inf & d13 < inf)) { - ___assert_fail(1560, 1520, 28, 1552); - } - d13 = +HEAPF32[i2 + 20 >> 2]; - if (!(d13 == d13 & 0.0 == 0.0 & d13 > -inf & d13 < inf)) { - ___assert_fail(1560, 1520, 28, 1552); - } - i7 = i2 + 12 | 0; - d13 = +HEAPF32[i7 >> 2]; - if (!(d13 == d13 & 0.0 == 0.0 & d13 > -inf & d13 < inf)) { - ___assert_fail(1592, 1520, 29, 1552); - } - i8 = i2 + 24 | 0; - d13 = +HEAPF32[i8 >> 2]; - if (!(d13 == d13 & 0.0 == 0.0 & d13 > -inf & d13 < inf)) { - ___assert_fail(1616, 1520, 30, 1552); - } - i4 = i2 + 32 | 0; - d13 = +HEAPF32[i4 >> 2]; - if (!(d13 >= 0.0) | d13 == d13 & 0.0 == 0.0 & d13 > -inf & d13 < inf ^ 1) { - ___assert_fail(1648, 1520, 31, 1552); - } - i10 = i2 + 28 | 0; - d13 = +HEAPF32[i10 >> 2]; - if (!(d13 >= 0.0) | d13 == d13 & 0.0 == 0.0 & d13 > -inf & d13 < inf ^ 1) { - ___assert_fail(1712, 1520, 32, 1552); - } - i11 = i1 + 4 | 0; - i12 = (HEAP8[i2 + 39 | 0] | 0) == 0 ? 0 : 8; - HEAP16[i11 >> 1] = i12; - if ((HEAP8[i2 + 38 | 0] | 0) != 0) { - i12 = (i12 & 65535 | 16) & 65535; - HEAP16[i11 >> 1] = i12; - } - if ((HEAP8[i2 + 36 | 0] | 0) != 0) { - i12 = (i12 & 65535 | 4) & 65535; - HEAP16[i11 >> 1] = i12; - } - if ((HEAP8[i2 + 37 | 0] | 0) != 0) { - i12 = (i12 & 65535 | 2) & 65535; - HEAP16[i11 >> 1] = i12; - } - if ((HEAP8[i2 + 40 | 0] | 0) != 0) { - HEAP16[i11 >> 1] = i12 & 65535 | 32; - } - HEAP32[i1 + 88 >> 2] = i5; - i11 = i9; - i12 = HEAP32[i11 >> 2] | 0; - i11 = HEAP32[i11 + 4 >> 2] | 0; - i9 = i1 + 12 | 0; - HEAP32[i9 >> 2] = i12; - HEAP32[i9 + 4 >> 2] = i11; - d13 = +HEAPF32[i7 >> 2]; - HEAPF32[i1 + 20 >> 2] = +Math_sin(+d13); - HEAPF32[i1 + 24 >> 2] = +Math_cos(+d13); - HEAPF32[i1 + 28 >> 2] = 0.0; - HEAPF32[i1 + 32 >> 2] = 0.0; - i9 = i1 + 36 | 0; - HEAP32[i9 >> 2] = i12; - HEAP32[i9 + 4 >> 2] = i11; - i9 = i1 + 44 | 0; - HEAP32[i9 >> 2] = i12; - HEAP32[i9 + 4 >> 2] = i11; - HEAPF32[i1 + 52 >> 2] = +HEAPF32[i7 >> 2]; - HEAPF32[i1 + 56 >> 2] = +HEAPF32[i7 >> 2]; - HEAPF32[i1 + 60 >> 2] = 0.0; - HEAP32[i1 + 108 >> 2] = 0; - HEAP32[i1 + 112 >> 2] = 0; - HEAP32[i1 + 92 >> 2] = 0; - HEAP32[i1 + 96 >> 2] = 0; - i9 = i6; - i11 = HEAP32[i9 + 4 >> 2] | 0; - i12 = i1 + 64 | 0; - HEAP32[i12 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i12 + 4 >> 2] = i11; - HEAPF32[i1 + 72 >> 2] = +HEAPF32[i8 >> 2]; - HEAPF32[i1 + 132 >> 2] = +HEAPF32[i10 >> 2]; - HEAPF32[i1 + 136 >> 2] = +HEAPF32[i4 >> 2]; - HEAPF32[i1 + 140 >> 2] = +HEAPF32[i2 + 48 >> 2]; - HEAPF32[i1 + 76 >> 2] = 0.0; - HEAPF32[i1 + 80 >> 2] = 0.0; - HEAPF32[i1 + 84 >> 2] = 0.0; - HEAPF32[i1 + 144 >> 2] = 0.0; - i12 = HEAP32[i2 >> 2] | 0; - HEAP32[i1 >> 2] = i12; - i4 = i1 + 116 | 0; - if ((i12 | 0) == 2) { - HEAPF32[i4 >> 2] = 1.0; - HEAPF32[i1 + 120 >> 2] = 1.0; - i11 = i1 + 124 | 0; - HEAPF32[i11 >> 2] = 0.0; - i11 = i1 + 128 | 0; - HEAPF32[i11 >> 2] = 0.0; - i11 = i2 + 44 | 0; - i11 = HEAP32[i11 >> 2] | 0; - i12 = i1 + 148 | 0; - HEAP32[i12 >> 2] = i11; - i12 = i1 + 100 | 0; - HEAP32[i12 >> 2] = 0; - i12 = i1 + 104 | 0; - HEAP32[i12 >> 2] = 0; - STACKTOP = i3; - return; - } else { - HEAPF32[i4 >> 2] = 0.0; - HEAPF32[i1 + 120 >> 2] = 0.0; - i11 = i1 + 124 | 0; - HEAPF32[i11 >> 2] = 0.0; - i11 = i1 + 128 | 0; - HEAPF32[i11 >> 2] = 0.0; - i11 = i2 + 44 | 0; - i11 = HEAP32[i11 >> 2] | 0; - i12 = i1 + 148 | 0; - HEAP32[i12 >> 2] = i11; - i12 = i1 + 100 | 0; - HEAP32[i12 >> 2] = 0; - i12 = i1 + 104 | 0; - HEAP32[i12 >> 2] = 0; - STACKTOP = i3; - return; - } -} -function __ZN24b2PositionSolverManifold10InitializeEP27b2ContactPositionConstraintRK11b2TransformS4_i(i2, i1, i13, i12, i15) { - i2 = i2 | 0; - i1 = i1 | 0; - i13 = i13 | 0; - i12 = i12 | 0; - i15 = i15 | 0; - var i3 = 0, d4 = 0.0, d5 = 0.0, d6 = 0.0, d7 = 0.0, d8 = 0.0, d9 = 0.0, d10 = 0.0, d11 = 0.0, i14 = 0, d16 = 0.0, d17 = 0.0, d18 = 0.0, i19 = 0, i20 = 0; - i3 = STACKTOP; - if ((HEAP32[i1 + 84 >> 2] | 0) <= 0) { - ___assert_fail(6752, 6520, 617, 6776); - } - i14 = HEAP32[i1 + 72 >> 2] | 0; - if ((i14 | 0) == 1) { - i19 = i13 + 12 | 0; - d5 = +HEAPF32[i19 >> 2]; - d6 = +HEAPF32[i1 + 16 >> 2]; - i14 = i13 + 8 | 0; - d7 = +HEAPF32[i14 >> 2]; - d9 = +HEAPF32[i1 + 20 >> 2]; - d4 = d5 * d6 - d7 * d9; - d9 = d6 * d7 + d5 * d9; - d5 = +d4; - d7 = +d9; - i20 = i2; - HEAPF32[i20 >> 2] = d5; - HEAPF32[i20 + 4 >> 2] = d7; - d7 = +HEAPF32[i19 >> 2]; - d5 = +HEAPF32[i1 + 24 >> 2]; - d6 = +HEAPF32[i14 >> 2]; - d8 = +HEAPF32[i1 + 28 >> 2]; - d16 = +HEAPF32[i12 + 12 >> 2]; - d18 = +HEAPF32[i1 + (i15 << 3) >> 2]; - d17 = +HEAPF32[i12 + 8 >> 2]; - d11 = +HEAPF32[i1 + (i15 << 3) + 4 >> 2]; - d10 = +HEAPF32[i12 >> 2] + (d16 * d18 - d17 * d11); - d11 = d18 * d17 + d16 * d11 + +HEAPF32[i12 + 4 >> 2]; - HEAPF32[i2 + 16 >> 2] = d4 * (d10 - (+HEAPF32[i13 >> 2] + (d7 * d5 - d6 * d8))) + (d11 - (d5 * d6 + d7 * d8 + +HEAPF32[i13 + 4 >> 2])) * d9 - +HEAPF32[i1 + 76 >> 2] - +HEAPF32[i1 + 80 >> 2]; - d10 = +d10; - d11 = +d11; - i15 = i2 + 8 | 0; - HEAPF32[i15 >> 2] = d10; - HEAPF32[i15 + 4 >> 2] = d11; - STACKTOP = i3; - return; - } else if ((i14 | 0) == 2) { - i19 = i12 + 12 | 0; - d7 = +HEAPF32[i19 >> 2]; - d8 = +HEAPF32[i1 + 16 >> 2]; - i20 = i12 + 8 | 0; - d9 = +HEAPF32[i20 >> 2]; - d18 = +HEAPF32[i1 + 20 >> 2]; - d17 = d7 * d8 - d9 * d18; - d18 = d8 * d9 + d7 * d18; - d7 = +d17; - d9 = +d18; - i14 = i2; - HEAPF32[i14 >> 2] = d7; - HEAPF32[i14 + 4 >> 2] = d9; - d9 = +HEAPF32[i19 >> 2]; - d7 = +HEAPF32[i1 + 24 >> 2]; - d8 = +HEAPF32[i20 >> 2]; - d10 = +HEAPF32[i1 + 28 >> 2]; - d6 = +HEAPF32[i13 + 12 >> 2]; - d4 = +HEAPF32[i1 + (i15 << 3) >> 2]; - d5 = +HEAPF32[i13 + 8 >> 2]; - d16 = +HEAPF32[i1 + (i15 << 3) + 4 >> 2]; - d11 = +HEAPF32[i13 >> 2] + (d6 * d4 - d5 * d16); - d16 = d4 * d5 + d6 * d16 + +HEAPF32[i13 + 4 >> 2]; - HEAPF32[i2 + 16 >> 2] = d17 * (d11 - (+HEAPF32[i12 >> 2] + (d9 * d7 - d8 * d10))) + (d16 - (d7 * d8 + d9 * d10 + +HEAPF32[i12 + 4 >> 2])) * d18 - +HEAPF32[i1 + 76 >> 2] - +HEAPF32[i1 + 80 >> 2]; - d11 = +d11; - d16 = +d16; - i20 = i2 + 8 | 0; - HEAPF32[i20 >> 2] = d11; - HEAPF32[i20 + 4 >> 2] = d16; - d17 = +-d17; - d18 = +-d18; - i20 = i2; - HEAPF32[i20 >> 2] = d17; - HEAPF32[i20 + 4 >> 2] = d18; - STACKTOP = i3; - return; - } else if ((i14 | 0) == 0) { - d7 = +HEAPF32[i13 + 12 >> 2]; - d8 = +HEAPF32[i1 + 24 >> 2]; - d18 = +HEAPF32[i13 + 8 >> 2]; - d6 = +HEAPF32[i1 + 28 >> 2]; - d4 = +HEAPF32[i13 >> 2] + (d7 * d8 - d18 * d6); - d6 = d8 * d18 + d7 * d6 + +HEAPF32[i13 + 4 >> 2]; - d7 = +HEAPF32[i12 + 12 >> 2]; - d18 = +HEAPF32[i1 >> 2]; - d8 = +HEAPF32[i12 + 8 >> 2]; - d9 = +HEAPF32[i1 + 4 >> 2]; - d5 = +HEAPF32[i12 >> 2] + (d7 * d18 - d8 * d9); - d9 = d18 * d8 + d7 * d9 + +HEAPF32[i12 + 4 >> 2]; - d7 = d5 - d4; - d8 = d9 - d6; - d18 = +d7; - d10 = +d8; - i20 = i2; - HEAPF32[i20 >> 2] = d18; - HEAPF32[i20 + 4 >> 2] = d10; - d10 = +Math_sqrt(+(d7 * d7 + d8 * d8)); - if (d10 < 1.1920928955078125e-7) { - d10 = d7; - d11 = d8; - } else { - d11 = 1.0 / d10; - d10 = d7 * d11; - HEAPF32[i2 >> 2] = d10; - d11 = d8 * d11; - HEAPF32[i2 + 4 >> 2] = d11; - } - d17 = +((d4 + d5) * .5); - d18 = +((d6 + d9) * .5); - i20 = i2 + 8 | 0; - HEAPF32[i20 >> 2] = d17; - HEAPF32[i20 + 4 >> 2] = d18; - HEAPF32[i2 + 16 >> 2] = d7 * d10 + d8 * d11 - +HEAPF32[i1 + 76 >> 2] - +HEAPF32[i1 + 80 >> 2]; - STACKTOP = i3; - return; - } else { - STACKTOP = i3; - return; - } -} -function __ZNSt3__118__insertion_sort_3IRPFbRK6b2PairS3_EPS1_EEvT0_S8_T_(i5, i1, i2) { - i5 = i5 | 0; - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i6 = i4 + 12 | 0; - i3 = i4; - i7 = i5 + 24 | 0; - i8 = i5 + 12 | 0; - i10 = FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i8, i5) | 0; - i9 = FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i7, i8) | 0; - do { - if (i10) { - if (i9) { - HEAP32[i6 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - break; - } - HEAP32[i6 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i8 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i8 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i8 + 8 >> 2]; - HEAP32[i8 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i8 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i8 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - if (FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i7, i8) | 0) { - HEAP32[i6 + 0 >> 2] = HEAP32[i8 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i8 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i8 + 8 >> 2]; - HEAP32[i8 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i8 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i8 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - } - } else { - if (i9) { - HEAP32[i6 + 0 >> 2] = HEAP32[i8 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i8 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i8 + 8 >> 2]; - HEAP32[i8 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i8 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i8 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - HEAP32[i7 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - if (FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i8, i5) | 0) { - HEAP32[i6 + 0 >> 2] = HEAP32[i5 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - HEAP32[i5 + 0 >> 2] = HEAP32[i8 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i8 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i8 + 8 >> 2]; - HEAP32[i8 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i8 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i8 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - } - } - } - } while (0); - i6 = i5 + 36 | 0; - if ((i6 | 0) == (i1 | 0)) { - STACKTOP = i4; - return; - } - while (1) { - if (FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i6, i7) | 0) { - HEAP32[i3 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - i8 = i6; - while (1) { - HEAP32[i8 + 0 >> 2] = HEAP32[i7 + 0 >> 2]; - HEAP32[i8 + 4 >> 2] = HEAP32[i7 + 4 >> 2]; - HEAP32[i8 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - if ((i7 | 0) == (i5 | 0)) { - break; - } - i8 = i7 + -12 | 0; - if (FUNCTION_TABLE_iii[HEAP32[i2 >> 2] & 3](i3, i8) | 0) { - i10 = i7; - i7 = i8; - i8 = i10; - } else { - break; - } - } - HEAP32[i7 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i7 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - } - i7 = i6 + 12 | 0; - if ((i7 | 0) == (i1 | 0)) { - break; - } else { - i10 = i6; - i6 = i7; - i7 = i10; - } - } - STACKTOP = i4; - return; -} -function __ZNK20b2SeparationFunction8EvaluateEiif(i10, i12, i11, d9) { - i10 = i10 | 0; - i12 = i12 | 0; - i11 = i11 | 0; - d9 = +d9; - var d1 = 0.0, d2 = 0.0, d3 = 0.0, d4 = 0.0, d5 = 0.0, d6 = 0.0, i7 = 0, d8 = 0.0, d13 = 0.0, d14 = 0.0, d15 = 0.0, d16 = 0.0, i17 = 0, d18 = 0.0, d19 = 0.0; - i7 = STACKTOP; - d14 = 1.0 - d9; - d3 = d14 * +HEAPF32[i10 + 32 >> 2] + +HEAPF32[i10 + 36 >> 2] * d9; - d4 = +Math_sin(+d3); - d3 = +Math_cos(+d3); - d5 = +HEAPF32[i10 + 8 >> 2]; - d6 = +HEAPF32[i10 + 12 >> 2]; - d2 = d14 * +HEAPF32[i10 + 16 >> 2] + +HEAPF32[i10 + 24 >> 2] * d9 - (d3 * d5 - d4 * d6); - d6 = d14 * +HEAPF32[i10 + 20 >> 2] + +HEAPF32[i10 + 28 >> 2] * d9 - (d4 * d5 + d3 * d6); - d5 = d14 * +HEAPF32[i10 + 68 >> 2] + +HEAPF32[i10 + 72 >> 2] * d9; - d1 = +Math_sin(+d5); - d5 = +Math_cos(+d5); - d15 = +HEAPF32[i10 + 44 >> 2]; - d16 = +HEAPF32[i10 + 48 >> 2]; - d8 = d14 * +HEAPF32[i10 + 52 >> 2] + +HEAPF32[i10 + 60 >> 2] * d9 - (d5 * d15 - d1 * d16); - d9 = d14 * +HEAPF32[i10 + 56 >> 2] + +HEAPF32[i10 + 64 >> 2] * d9 - (d1 * d15 + d5 * d16); - i17 = HEAP32[i10 + 80 >> 2] | 0; - if ((i17 | 0) == 0) { - d14 = +HEAPF32[i10 + 92 >> 2]; - d13 = +HEAPF32[i10 + 96 >> 2]; - i17 = HEAP32[i10 >> 2] | 0; - if (!((i12 | 0) > -1)) { - ___assert_fail(3640, 3672, 103, 3704); - } - if ((HEAP32[i17 + 20 >> 2] | 0) <= (i12 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i17 = (HEAP32[i17 + 16 >> 2] | 0) + (i12 << 3) | 0; - d15 = +HEAPF32[i17 >> 2]; - d16 = +HEAPF32[i17 + 4 >> 2]; - i10 = HEAP32[i10 + 4 >> 2] | 0; - if (!((i11 | 0) > -1)) { - ___assert_fail(3640, 3672, 103, 3704); - } - if ((HEAP32[i10 + 20 >> 2] | 0) <= (i11 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i17 = (HEAP32[i10 + 16 >> 2] | 0) + (i11 << 3) | 0; - d19 = +HEAPF32[i17 >> 2]; - d18 = +HEAPF32[i17 + 4 >> 2]; - d16 = d14 * (d8 + (d5 * d19 - d1 * d18) - (d2 + (d3 * d15 - d4 * d16))) + d13 * (d9 + (d1 * d19 + d5 * d18) - (d6 + (d4 * d15 + d3 * d16))); - STACKTOP = i7; - return +d16; - } else if ((i17 | 0) == 1) { - d14 = +HEAPF32[i10 + 92 >> 2]; - d13 = +HEAPF32[i10 + 96 >> 2]; - d16 = +HEAPF32[i10 + 84 >> 2]; - d15 = +HEAPF32[i10 + 88 >> 2]; - i10 = HEAP32[i10 + 4 >> 2] | 0; - if (!((i11 | 0) > -1)) { - ___assert_fail(3640, 3672, 103, 3704); - } - if ((HEAP32[i10 + 20 >> 2] | 0) <= (i11 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i17 = (HEAP32[i10 + 16 >> 2] | 0) + (i11 << 3) | 0; - d18 = +HEAPF32[i17 >> 2]; - d19 = +HEAPF32[i17 + 4 >> 2]; - d19 = (d3 * d14 - d4 * d13) * (d8 + (d5 * d18 - d1 * d19) - (d2 + (d3 * d16 - d4 * d15))) + (d4 * d14 + d3 * d13) * (d9 + (d1 * d18 + d5 * d19) - (d6 + (d4 * d16 + d3 * d15))); - STACKTOP = i7; - return +d19; - } else if ((i17 | 0) == 2) { - d16 = +HEAPF32[i10 + 92 >> 2]; - d15 = +HEAPF32[i10 + 96 >> 2]; - d14 = +HEAPF32[i10 + 84 >> 2]; - d13 = +HEAPF32[i10 + 88 >> 2]; - i10 = HEAP32[i10 >> 2] | 0; - if (!((i12 | 0) > -1)) { - ___assert_fail(3640, 3672, 103, 3704); - } - if ((HEAP32[i10 + 20 >> 2] | 0) <= (i12 | 0)) { - ___assert_fail(3640, 3672, 103, 3704); - } - i17 = (HEAP32[i10 + 16 >> 2] | 0) + (i12 << 3) | 0; - d18 = +HEAPF32[i17 >> 2]; - d19 = +HEAPF32[i17 + 4 >> 2]; - d19 = (d5 * d16 - d1 * d15) * (d2 + (d3 * d18 - d4 * d19) - (d8 + (d5 * d14 - d1 * d13))) + (d1 * d16 + d5 * d15) * (d6 + (d4 * d18 + d3 * d19) - (d9 + (d1 * d14 + d5 * d13))); - STACKTOP = i7; - return +d19; - } else { - ___assert_fail(3616, 3560, 242, 3624); - } - return 0.0; -} -function __ZN6b2Body13ResetMassDataEv(i2) { - i2 = i2 | 0; - var d1 = 0.0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, d14 = 0.0, d15 = 0.0, d16 = 0.0, i17 = 0, d18 = 0.0, d19 = 0.0, i20 = 0, d21 = 0.0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i10 = i3; - i8 = i2 + 116 | 0; - i9 = i2 + 120 | 0; - i4 = i2 + 124 | 0; - i5 = i2 + 128 | 0; - i6 = i2 + 28 | 0; - HEAPF32[i6 >> 2] = 0.0; - HEAPF32[i2 + 32 >> 2] = 0.0; - HEAP32[i8 + 0 >> 2] = 0; - HEAP32[i8 + 4 >> 2] = 0; - HEAP32[i8 + 8 >> 2] = 0; - HEAP32[i8 + 12 >> 2] = 0; - i11 = HEAP32[i2 >> 2] | 0; - if ((i11 | 0) == 2) { - i17 = 3784; - d16 = +HEAPF32[i17 >> 2]; - d18 = +HEAPF32[i17 + 4 >> 2]; - i17 = HEAP32[i2 + 100 >> 2] | 0; - if ((i17 | 0) != 0) { - i11 = i10 + 4 | 0; - i12 = i10 + 8 | 0; - i13 = i10 + 12 | 0; - d14 = 0.0; - d15 = 0.0; - do { - d19 = +HEAPF32[i17 >> 2]; - if (!(d19 == 0.0)) { - i20 = HEAP32[i17 + 12 >> 2] | 0; - FUNCTION_TABLE_viid[HEAP32[(HEAP32[i20 >> 2] | 0) + 28 >> 2] & 3](i20, i10, d19); - d14 = +HEAPF32[i10 >> 2]; - d15 = d14 + +HEAPF32[i8 >> 2]; - HEAPF32[i8 >> 2] = d15; - d16 = d16 + d14 * +HEAPF32[i11 >> 2]; - d18 = d18 + d14 * +HEAPF32[i12 >> 2]; - d14 = +HEAPF32[i13 >> 2] + +HEAPF32[i4 >> 2]; - HEAPF32[i4 >> 2] = d14; - } - i17 = HEAP32[i17 + 4 >> 2] | 0; - } while ((i17 | 0) != 0); - if (d15 > 0.0) { - d19 = 1.0 / d15; - HEAPF32[i9 >> 2] = d19; - d16 = d16 * d19; - d18 = d18 * d19; - } else { - i7 = 11; - } - } else { - d14 = 0.0; - i7 = 11; - } - if ((i7 | 0) == 11) { - HEAPF32[i8 >> 2] = 1.0; - HEAPF32[i9 >> 2] = 1.0; - d15 = 1.0; - } - do { - if (d14 > 0.0 ? (HEAP16[i2 + 4 >> 1] & 16) == 0 : 0) { - d14 = d14 - (d18 * d18 + d16 * d16) * d15; - HEAPF32[i4 >> 2] = d14; - if (d14 > 0.0) { - d1 = 1.0 / d14; - break; - } else { - ___assert_fail(1872, 1520, 319, 1856); - } - } else { - i7 = 17; - } - } while (0); - if ((i7 | 0) == 17) { - HEAPF32[i4 >> 2] = 0.0; - d1 = 0.0; - } - HEAPF32[i5 >> 2] = d1; - i20 = i2 + 44 | 0; - i17 = i20; - d19 = +HEAPF32[i17 >> 2]; - d14 = +HEAPF32[i17 + 4 >> 2]; - d21 = +d16; - d1 = +d18; - i17 = i6; - HEAPF32[i17 >> 2] = d21; - HEAPF32[i17 + 4 >> 2] = d1; - d1 = +HEAPF32[i2 + 24 >> 2]; - d21 = +HEAPF32[i2 + 20 >> 2]; - d15 = +HEAPF32[i2 + 12 >> 2] + (d1 * d16 - d21 * d18); - d16 = d16 * d21 + d1 * d18 + +HEAPF32[i2 + 16 >> 2]; - d1 = +d15; - d18 = +d16; - HEAPF32[i20 >> 2] = d1; - HEAPF32[i20 + 4 >> 2] = d18; - i20 = i2 + 36 | 0; - HEAPF32[i20 >> 2] = d1; - HEAPF32[i20 + 4 >> 2] = d18; - d18 = +HEAPF32[i2 + 72 >> 2]; - i20 = i2 + 64 | 0; - HEAPF32[i20 >> 2] = +HEAPF32[i20 >> 2] - d18 * (d16 - d14); - i20 = i2 + 68 | 0; - HEAPF32[i20 >> 2] = d18 * (d15 - d19) + +HEAPF32[i20 >> 2]; - STACKTOP = i3; - return; - } else if ((i11 | 0) == 1 | (i11 | 0) == 0) { - i17 = i2 + 12 | 0; - i13 = HEAP32[i17 >> 2] | 0; - i17 = HEAP32[i17 + 4 >> 2] | 0; - i20 = i2 + 36 | 0; - HEAP32[i20 >> 2] = i13; - HEAP32[i20 + 4 >> 2] = i17; - i20 = i2 + 44 | 0; - HEAP32[i20 >> 2] = i13; - HEAP32[i20 + 4 >> 2] = i17; - HEAPF32[i2 + 52 >> 2] = +HEAPF32[i2 + 56 >> 2]; - STACKTOP = i3; - return; - } else { - ___assert_fail(1824, 1520, 284, 1856); - } -} -function __ZN9b2Contact6UpdateEP17b2ContactListener(i1, i4) { - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i2 = i3; - i10 = i1 + 64 | 0; - i6 = i2 + 0 | 0; - i7 = i10 + 0 | 0; - i5 = i6 + 64 | 0; - do { - HEAP32[i6 >> 2] = HEAP32[i7 >> 2]; - i6 = i6 + 4 | 0; - i7 = i7 + 4 | 0; - } while ((i6 | 0) < (i5 | 0)); - i6 = i1 + 4 | 0; - i11 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i11 | 4; - i11 = i11 >>> 1; - i14 = HEAP32[i1 + 48 >> 2] | 0; - i15 = HEAP32[i1 + 52 >> 2] | 0; - i5 = (HEAP8[i15 + 38 | 0] | HEAP8[i14 + 38 | 0]) << 24 >> 24 != 0; - i8 = HEAP32[i14 + 8 >> 2] | 0; - i7 = HEAP32[i15 + 8 >> 2] | 0; - i12 = i8 + 12 | 0; - i13 = i7 + 12 | 0; - if (!i5) { - FUNCTION_TABLE_viiii[HEAP32[HEAP32[i1 >> 2] >> 2] & 15](i1, i10, i12, i13); - i12 = i1 + 124 | 0; - i10 = (HEAP32[i12 >> 2] | 0) > 0; - L4 : do { - if (i10) { - i19 = HEAP32[i2 + 60 >> 2] | 0; - if ((i19 | 0) > 0) { - i18 = 0; - } else { - i9 = 0; - while (1) { - HEAPF32[i1 + (i9 * 20 | 0) + 72 >> 2] = 0.0; - HEAPF32[i1 + (i9 * 20 | 0) + 76 >> 2] = 0.0; - i9 = i9 + 1 | 0; - if ((i9 | 0) >= (HEAP32[i12 >> 2] | 0)) { - break L4; - } - } - } - do { - i16 = i1 + (i18 * 20 | 0) + 72 | 0; - HEAPF32[i16 >> 2] = 0.0; - i15 = i1 + (i18 * 20 | 0) + 76 | 0; - HEAPF32[i15 >> 2] = 0.0; - i14 = HEAP32[i1 + (i18 * 20 | 0) + 80 >> 2] | 0; - i17 = 0; - while (1) { - i13 = i17 + 1 | 0; - if ((HEAP32[i2 + (i17 * 20 | 0) + 16 >> 2] | 0) == (i14 | 0)) { - i9 = 7; - break; - } - if ((i13 | 0) < (i19 | 0)) { - i17 = i13; - } else { - break; - } - } - if ((i9 | 0) == 7) { - i9 = 0; - HEAPF32[i16 >> 2] = +HEAPF32[i2 + (i17 * 20 | 0) + 8 >> 2]; - HEAPF32[i15 >> 2] = +HEAPF32[i2 + (i17 * 20 | 0) + 12 >> 2]; - } - i18 = i18 + 1 | 0; - } while ((i18 | 0) < (HEAP32[i12 >> 2] | 0)); - } - } while (0); - i9 = i11 & 1; - if (i10 ^ (i9 | 0) != 0) { - i11 = i8 + 4 | 0; - i12 = HEAPU16[i11 >> 1] | 0; - if ((i12 & 2 | 0) == 0) { - HEAP16[i11 >> 1] = i12 | 2; - HEAPF32[i8 + 144 >> 2] = 0.0; - } - i8 = i7 + 4 | 0; - i11 = HEAPU16[i8 >> 1] | 0; - if ((i11 & 2 | 0) == 0) { - HEAP16[i8 >> 1] = i11 | 2; - HEAPF32[i7 + 144 >> 2] = 0.0; - } - } - } else { - i10 = __Z13b2TestOverlapPK7b2ShapeiS1_iRK11b2TransformS4_(HEAP32[i14 + 12 >> 2] | 0, HEAP32[i1 + 56 >> 2] | 0, HEAP32[i15 + 12 >> 2] | 0, HEAP32[i1 + 60 >> 2] | 0, i12, i13) | 0; - HEAP32[i1 + 124 >> 2] = 0; - i9 = i11 & 1; - } - i7 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i10 ? i7 | 2 : i7 & -3; - i8 = (i9 | 0) == 0; - i6 = i10 ^ 1; - i7 = (i4 | 0) == 0; - if (!(i8 ^ 1 | i6 | i7)) { - FUNCTION_TABLE_vii[HEAP32[(HEAP32[i4 >> 2] | 0) + 8 >> 2] & 15](i4, i1); - } - if (!(i8 | i10 | i7)) { - FUNCTION_TABLE_vii[HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] & 15](i4, i1); - } - if (i5 | i6 | i7) { - STACKTOP = i3; - return; - } - FUNCTION_TABLE_viii[HEAP32[(HEAP32[i4 >> 2] | 0) + 16 >> 2] & 3](i4, i1, i2); - STACKTOP = i3; - return; -} -function __ZN13b2DynamicTree10RemoveLeafEi(i1, i12) { - i1 = i1 | 0; - i12 = i12 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, d8 = 0.0, d9 = 0.0, d10 = 0.0, d11 = 0.0, i13 = 0; - i2 = STACKTOP; - if ((HEAP32[i1 >> 2] | 0) == (i12 | 0)) { - HEAP32[i1 >> 2] = -1; - STACKTOP = i2; - return; - } - i3 = i1 + 4 | 0; - i5 = HEAP32[i3 >> 2] | 0; - i6 = HEAP32[i5 + (i12 * 36 | 0) + 20 >> 2] | 0; - i4 = i5 + (i6 * 36 | 0) + 20 | 0; - i7 = HEAP32[i4 >> 2] | 0; - i13 = HEAP32[i5 + (i6 * 36 | 0) + 24 >> 2] | 0; - if ((i13 | 0) == (i12 | 0)) { - i13 = HEAP32[i5 + (i6 * 36 | 0) + 28 >> 2] | 0; - } - if ((i7 | 0) == -1) { - HEAP32[i1 >> 2] = i13; - HEAP32[i5 + (i13 * 36 | 0) + 20 >> 2] = -1; - if (!((i6 | 0) > -1)) { - ___assert_fail(3e3, 2944, 97, 3040); - } - if ((HEAP32[i1 + 12 >> 2] | 0) <= (i6 | 0)) { - ___assert_fail(3e3, 2944, 97, 3040); - } - i3 = i1 + 8 | 0; - if ((HEAP32[i3 >> 2] | 0) <= 0) { - ___assert_fail(3056, 2944, 98, 3040); - } - i13 = i1 + 16 | 0; - HEAP32[i4 >> 2] = HEAP32[i13 >> 2]; - HEAP32[i5 + (i6 * 36 | 0) + 32 >> 2] = -1; - HEAP32[i13 >> 2] = i6; - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + -1; - STACKTOP = i2; - return; - } - i12 = i5 + (i7 * 36 | 0) + 24 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i12 >> 2] = i13; - } else { - HEAP32[i5 + (i7 * 36 | 0) + 28 >> 2] = i13; - } - HEAP32[i5 + (i13 * 36 | 0) + 20 >> 2] = i7; - if (!((i6 | 0) > -1)) { - ___assert_fail(3e3, 2944, 97, 3040); - } - if ((HEAP32[i1 + 12 >> 2] | 0) <= (i6 | 0)) { - ___assert_fail(3e3, 2944, 97, 3040); - } - i12 = i1 + 8 | 0; - if ((HEAP32[i12 >> 2] | 0) <= 0) { - ___assert_fail(3056, 2944, 98, 3040); - } - i13 = i1 + 16 | 0; - HEAP32[i4 >> 2] = HEAP32[i13 >> 2]; - HEAP32[i5 + (i6 * 36 | 0) + 32 >> 2] = -1; - HEAP32[i13 >> 2] = i6; - HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + -1; - do { - i4 = __ZN13b2DynamicTree7BalanceEi(i1, i7) | 0; - i7 = HEAP32[i3 >> 2] | 0; - i6 = HEAP32[i7 + (i4 * 36 | 0) + 24 >> 2] | 0; - i5 = HEAP32[i7 + (i4 * 36 | 0) + 28 >> 2] | 0; - d10 = +HEAPF32[i7 + (i6 * 36 | 0) >> 2]; - d11 = +HEAPF32[i7 + (i5 * 36 | 0) >> 2]; - d9 = +HEAPF32[i7 + (i6 * 36 | 0) + 4 >> 2]; - d8 = +HEAPF32[i7 + (i5 * 36 | 0) + 4 >> 2]; - d10 = +(d10 < d11 ? d10 : d11); - d11 = +(d9 < d8 ? d9 : d8); - i13 = i7 + (i4 * 36 | 0) | 0; - HEAPF32[i13 >> 2] = d10; - HEAPF32[i13 + 4 >> 2] = d11; - d11 = +HEAPF32[i7 + (i6 * 36 | 0) + 8 >> 2]; - d10 = +HEAPF32[i7 + (i5 * 36 | 0) + 8 >> 2]; - d9 = +HEAPF32[i7 + (i6 * 36 | 0) + 12 >> 2]; - d8 = +HEAPF32[i7 + (i5 * 36 | 0) + 12 >> 2]; - d10 = +(d11 > d10 ? d11 : d10); - d11 = +(d9 > d8 ? d9 : d8); - i7 = i7 + (i4 * 36 | 0) + 8 | 0; - HEAPF32[i7 >> 2] = d10; - HEAPF32[i7 + 4 >> 2] = d11; - i7 = HEAP32[i3 >> 2] | 0; - i6 = HEAP32[i7 + (i6 * 36 | 0) + 32 >> 2] | 0; - i5 = HEAP32[i7 + (i5 * 36 | 0) + 32 >> 2] | 0; - HEAP32[i7 + (i4 * 36 | 0) + 32 >> 2] = ((i6 | 0) > (i5 | 0) ? i6 : i5) + 1; - i7 = HEAP32[i7 + (i4 * 36 | 0) + 20 >> 2] | 0; - } while (!((i7 | 0) == -1)); - STACKTOP = i2; - return; -} -function __ZN9b2Simplex6Solve3Ev(i7) { - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, d4 = 0.0, d5 = 0.0, d6 = 0.0, d8 = 0.0, d9 = 0.0, d10 = 0.0, d11 = 0.0, d12 = 0.0, d13 = 0.0, d14 = 0.0, d15 = 0.0, d16 = 0.0, d17 = 0.0, d18 = 0.0, d19 = 0.0, d20 = 0.0, d21 = 0.0, i22 = 0; - i1 = STACKTOP; - i2 = i7 + 16 | 0; - d17 = +HEAPF32[i2 >> 2]; - d15 = +HEAPF32[i2 + 4 >> 2]; - i2 = i7 + 36 | 0; - i3 = i7 + 52 | 0; - d14 = +HEAPF32[i3 >> 2]; - d16 = +HEAPF32[i3 + 4 >> 2]; - i3 = i7 + 72 | 0; - i22 = i7 + 88 | 0; - d18 = +HEAPF32[i22 >> 2]; - d11 = +HEAPF32[i22 + 4 >> 2]; - d20 = d14 - d17; - d10 = d16 - d15; - d9 = d17 * d20 + d15 * d10; - d8 = d14 * d20 + d16 * d10; - d4 = d18 - d17; - d19 = d11 - d15; - d6 = d17 * d4 + d15 * d19; - d5 = d18 * d4 + d11 * d19; - d21 = d18 - d14; - d12 = d11 - d16; - d13 = d14 * d21 + d16 * d12; - d12 = d18 * d21 + d11 * d12; - d4 = d20 * d19 - d10 * d4; - d10 = (d14 * d11 - d16 * d18) * d4; - d11 = (d15 * d18 - d17 * d11) * d4; - d4 = (d17 * d16 - d15 * d14) * d4; - if (!(!(d9 >= -0.0) | !(d6 >= -0.0))) { - HEAPF32[i7 + 24 >> 2] = 1.0; - HEAP32[i7 + 108 >> 2] = 1; - STACKTOP = i1; - return; - } - if (!(!(d9 < -0.0) | !(d8 > 0.0) | !(d4 <= 0.0))) { - d21 = 1.0 / (d8 - d9); - HEAPF32[i7 + 24 >> 2] = d8 * d21; - HEAPF32[i7 + 60 >> 2] = -(d9 * d21); - HEAP32[i7 + 108 >> 2] = 2; - STACKTOP = i1; - return; - } - if (!(!(d6 < -0.0) | !(d5 > 0.0) | !(d11 <= 0.0))) { - d21 = 1.0 / (d5 - d6); - HEAPF32[i7 + 24 >> 2] = d5 * d21; - HEAPF32[i7 + 96 >> 2] = -(d6 * d21); - HEAP32[i7 + 108 >> 2] = 2; - i7 = i2 + 0 | 0; - i3 = i3 + 0 | 0; - i2 = i7 + 36 | 0; - do { - HEAP32[i7 >> 2] = HEAP32[i3 >> 2]; - i7 = i7 + 4 | 0; - i3 = i3 + 4 | 0; - } while ((i7 | 0) < (i2 | 0)); - STACKTOP = i1; - return; - } - if (!(!(d8 <= 0.0) | !(d13 >= -0.0))) { - HEAPF32[i7 + 60 >> 2] = 1.0; - HEAP32[i7 + 108 >> 2] = 1; - i7 = i7 + 0 | 0; - i3 = i2 + 0 | 0; - i2 = i7 + 36 | 0; - do { - HEAP32[i7 >> 2] = HEAP32[i3 >> 2]; - i7 = i7 + 4 | 0; - i3 = i3 + 4 | 0; - } while ((i7 | 0) < (i2 | 0)); - STACKTOP = i1; - return; - } - if (!(!(d5 <= 0.0) | !(d12 <= 0.0))) { - HEAPF32[i7 + 96 >> 2] = 1.0; - HEAP32[i7 + 108 >> 2] = 1; - i7 = i7 + 0 | 0; - i3 = i3 + 0 | 0; - i2 = i7 + 36 | 0; - do { - HEAP32[i7 >> 2] = HEAP32[i3 >> 2]; - i7 = i7 + 4 | 0; - i3 = i3 + 4 | 0; - } while ((i7 | 0) < (i2 | 0)); - STACKTOP = i1; - return; - } - if (!(d13 < -0.0) | !(d12 > 0.0) | !(d10 <= 0.0)) { - d21 = 1.0 / (d4 + (d10 + d11)); - HEAPF32[i7 + 24 >> 2] = d10 * d21; - HEAPF32[i7 + 60 >> 2] = d11 * d21; - HEAPF32[i7 + 96 >> 2] = d4 * d21; - HEAP32[i7 + 108 >> 2] = 3; - STACKTOP = i1; - return; - } else { - d21 = 1.0 / (d12 - d13); - HEAPF32[i7 + 60 >> 2] = d12 * d21; - HEAPF32[i7 + 96 >> 2] = -(d13 * d21); - HEAP32[i7 + 108 >> 2] = 2; - i7 = i7 + 0 | 0; - i3 = i3 + 0 | 0; - i2 = i7 + 36 | 0; - do { - HEAP32[i7 >> 2] = HEAP32[i3 >> 2]; - i7 = i7 + 4 | 0; - i3 = i3 + 4 | 0; - } while ((i7 | 0) < (i2 | 0)); - STACKTOP = i1; - return; - } -} -function __ZN16b2ContactManager7CollideEv(i3) { - i3 = i3 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0; - i2 = STACKTOP; - i8 = HEAP32[i3 + 60 >> 2] | 0; - if ((i8 | 0) == 0) { - STACKTOP = i2; - return; - } - i7 = i3 + 12 | 0; - i6 = i3 + 4 | 0; - i5 = i3 + 72 | 0; - i4 = i3 + 68 | 0; - L4 : while (1) { - i12 = HEAP32[i8 + 48 >> 2] | 0; - i10 = HEAP32[i8 + 52 >> 2] | 0; - i11 = HEAP32[i8 + 56 >> 2] | 0; - i9 = HEAP32[i8 + 60 >> 2] | 0; - i15 = HEAP32[i12 + 8 >> 2] | 0; - i13 = HEAP32[i10 + 8 >> 2] | 0; - i16 = i8 + 4 | 0; - do { - if ((HEAP32[i16 >> 2] & 8 | 0) == 0) { - i1 = 11; - } else { - if (!(__ZNK6b2Body13ShouldCollideEPKS_(i13, i15) | 0)) { - i16 = HEAP32[i8 + 12 >> 2] | 0; - __ZN16b2ContactManager7DestroyEP9b2Contact(i3, i8); - i8 = i16; - break; - } - i14 = HEAP32[i4 >> 2] | 0; - if ((i14 | 0) != 0 ? !(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i14 >> 2] | 0) + 8 >> 2] & 7](i14, i12, i10) | 0) : 0) { - i16 = HEAP32[i8 + 12 >> 2] | 0; - __ZN16b2ContactManager7DestroyEP9b2Contact(i3, i8); - i8 = i16; - break; - } - HEAP32[i16 >> 2] = HEAP32[i16 >> 2] & -9; - i1 = 11; - } - } while (0); - do { - if ((i1 | 0) == 11) { - i1 = 0; - if ((HEAP16[i15 + 4 >> 1] & 2) == 0) { - i14 = 0; - } else { - i14 = (HEAP32[i15 >> 2] | 0) != 0; - } - if ((HEAP16[i13 + 4 >> 1] & 2) == 0) { - i13 = 0; - } else { - i13 = (HEAP32[i13 >> 2] | 0) != 0; - } - if (!(i14 | i13)) { - i8 = HEAP32[i8 + 12 >> 2] | 0; - break; - } - i11 = HEAP32[(HEAP32[i12 + 24 >> 2] | 0) + (i11 * 28 | 0) + 24 >> 2] | 0; - i9 = HEAP32[(HEAP32[i10 + 24 >> 2] | 0) + (i9 * 28 | 0) + 24 >> 2] | 0; - if (!((i11 | 0) > -1)) { - i1 = 19; - break L4; - } - i10 = HEAP32[i7 >> 2] | 0; - if ((i10 | 0) <= (i11 | 0)) { - i1 = 19; - break L4; - } - i12 = HEAP32[i6 >> 2] | 0; - if (!((i9 | 0) > -1 & (i10 | 0) > (i9 | 0))) { - i1 = 21; - break L4; - } - if (+HEAPF32[i12 + (i9 * 36 | 0) >> 2] - +HEAPF32[i12 + (i11 * 36 | 0) + 8 >> 2] > 0.0 | +HEAPF32[i12 + (i9 * 36 | 0) + 4 >> 2] - +HEAPF32[i12 + (i11 * 36 | 0) + 12 >> 2] > 0.0 | +HEAPF32[i12 + (i11 * 36 | 0) >> 2] - +HEAPF32[i12 + (i9 * 36 | 0) + 8 >> 2] > 0.0 | +HEAPF32[i12 + (i11 * 36 | 0) + 4 >> 2] - +HEAPF32[i12 + (i9 * 36 | 0) + 12 >> 2] > 0.0) { - i16 = HEAP32[i8 + 12 >> 2] | 0; - __ZN16b2ContactManager7DestroyEP9b2Contact(i3, i8); - i8 = i16; - break; - } else { - __ZN9b2Contact6UpdateEP17b2ContactListener(i8, HEAP32[i5 >> 2] | 0); - i8 = HEAP32[i8 + 12 >> 2] | 0; - break; - } - } - } while (0); - if ((i8 | 0) == 0) { - i1 = 25; - break; - } - } - if ((i1 | 0) == 19) { - ___assert_fail(1904, 1952, 159, 2008); - } else if ((i1 | 0) == 21) { - ___assert_fail(1904, 1952, 159, 2008); - } else if ((i1 | 0) == 25) { - STACKTOP = i2; - return; - } -} -function __ZN16b2ContactManager7AddPairEPvS0_(i1, i5, i6) { - i1 = i1 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i2 = STACKTOP; - i4 = HEAP32[i5 + 16 >> 2] | 0; - i3 = HEAP32[i6 + 16 >> 2] | 0; - i5 = HEAP32[i5 + 20 >> 2] | 0; - i6 = HEAP32[i6 + 20 >> 2] | 0; - i8 = HEAP32[i4 + 8 >> 2] | 0; - i7 = HEAP32[i3 + 8 >> 2] | 0; - if ((i8 | 0) == (i7 | 0)) { - STACKTOP = i2; - return; - } - i10 = HEAP32[i7 + 112 >> 2] | 0; - L4 : do { - if ((i10 | 0) != 0) { - while (1) { - if ((HEAP32[i10 >> 2] | 0) == (i8 | 0)) { - i9 = HEAP32[i10 + 4 >> 2] | 0; - i12 = HEAP32[i9 + 48 >> 2] | 0; - i13 = HEAP32[i9 + 52 >> 2] | 0; - i11 = HEAP32[i9 + 56 >> 2] | 0; - i9 = HEAP32[i9 + 60 >> 2] | 0; - if ((i12 | 0) == (i4 | 0) & (i13 | 0) == (i3 | 0) & (i11 | 0) == (i5 | 0) & (i9 | 0) == (i6 | 0)) { - i9 = 22; - break; - } - if ((i12 | 0) == (i3 | 0) & (i13 | 0) == (i4 | 0) & (i11 | 0) == (i6 | 0) & (i9 | 0) == (i5 | 0)) { - i9 = 22; - break; - } - } - i10 = HEAP32[i10 + 12 >> 2] | 0; - if ((i10 | 0) == 0) { - break L4; - } - } - if ((i9 | 0) == 22) { - STACKTOP = i2; - return; - } - } - } while (0); - if (!(__ZNK6b2Body13ShouldCollideEPKS_(i7, i8) | 0)) { - STACKTOP = i2; - return; - } - i7 = HEAP32[i1 + 68 >> 2] | 0; - if ((i7 | 0) != 0 ? !(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i7 >> 2] | 0) + 8 >> 2] & 7](i7, i4, i3) | 0) : 0) { - STACKTOP = i2; - return; - } - i5 = __ZN9b2Contact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator(i4, i5, i3, i6, HEAP32[i1 + 76 >> 2] | 0) | 0; - if ((i5 | 0) == 0) { - STACKTOP = i2; - return; - } - i4 = HEAP32[(HEAP32[i5 + 48 >> 2] | 0) + 8 >> 2] | 0; - i3 = HEAP32[(HEAP32[i5 + 52 >> 2] | 0) + 8 >> 2] | 0; - HEAP32[i5 + 8 >> 2] = 0; - i7 = i1 + 60 | 0; - HEAP32[i5 + 12 >> 2] = HEAP32[i7 >> 2]; - i6 = HEAP32[i7 >> 2] | 0; - if ((i6 | 0) != 0) { - HEAP32[i6 + 8 >> 2] = i5; - } - HEAP32[i7 >> 2] = i5; - i8 = i5 + 16 | 0; - HEAP32[i5 + 20 >> 2] = i5; - HEAP32[i8 >> 2] = i3; - HEAP32[i5 + 24 >> 2] = 0; - i6 = i4 + 112 | 0; - HEAP32[i5 + 28 >> 2] = HEAP32[i6 >> 2]; - i7 = HEAP32[i6 >> 2] | 0; - if ((i7 | 0) != 0) { - HEAP32[i7 + 8 >> 2] = i8; - } - HEAP32[i6 >> 2] = i8; - i6 = i5 + 32 | 0; - HEAP32[i5 + 36 >> 2] = i5; - HEAP32[i6 >> 2] = i4; - HEAP32[i5 + 40 >> 2] = 0; - i7 = i3 + 112 | 0; - HEAP32[i5 + 44 >> 2] = HEAP32[i7 >> 2]; - i5 = HEAP32[i7 >> 2] | 0; - if ((i5 | 0) != 0) { - HEAP32[i5 + 8 >> 2] = i6; - } - HEAP32[i7 >> 2] = i6; - i5 = i4 + 4 | 0; - i6 = HEAPU16[i5 >> 1] | 0; - if ((i6 & 2 | 0) == 0) { - HEAP16[i5 >> 1] = i6 | 2; - HEAPF32[i4 + 144 >> 2] = 0.0; - } - i4 = i3 + 4 | 0; - i5 = HEAPU16[i4 >> 1] | 0; - if ((i5 & 2 | 0) == 0) { - HEAP16[i4 >> 1] = i5 | 2; - HEAPF32[i3 + 144 >> 2] = 0.0; - } - i13 = i1 + 64 | 0; - HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + 1; - STACKTOP = i2; - return; -} -function __ZN12b2BroadPhase11UpdatePairsI16b2ContactManagerEEvPT_(i5, i2) { - i5 = i5 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i6 = i3; - i1 = i5 + 52 | 0; - HEAP32[i1 >> 2] = 0; - i4 = i5 + 40 | 0; - i12 = HEAP32[i4 >> 2] | 0; - do { - if ((i12 | 0) > 0) { - i9 = i5 + 32 | 0; - i11 = i5 + 56 | 0; - i8 = i5 + 12 | 0; - i10 = i5 + 4 | 0; - i13 = 0; - while (1) { - i14 = HEAP32[(HEAP32[i9 >> 2] | 0) + (i13 << 2) >> 2] | 0; - HEAP32[i11 >> 2] = i14; - if (!((i14 | 0) == -1)) { - if (!((i14 | 0) > -1)) { - i8 = 6; - break; - } - if ((HEAP32[i8 >> 2] | 0) <= (i14 | 0)) { - i8 = 6; - break; - } - __ZNK13b2DynamicTree5QueryI12b2BroadPhaseEEvPT_RK6b2AABB(i5, i5, (HEAP32[i10 >> 2] | 0) + (i14 * 36 | 0) | 0); - i12 = HEAP32[i4 >> 2] | 0; - } - i13 = i13 + 1 | 0; - if ((i13 | 0) >= (i12 | 0)) { - i8 = 9; - break; - } - } - if ((i8 | 0) == 6) { - ___assert_fail(1904, 1952, 159, 2008); - } else if ((i8 | 0) == 9) { - i7 = HEAP32[i1 >> 2] | 0; - break; - } - } else { - i7 = 0; - } - } while (0); - HEAP32[i4 >> 2] = 0; - i4 = i5 + 44 | 0; - i14 = HEAP32[i4 >> 2] | 0; - HEAP32[i6 >> 2] = 3; - __ZNSt3__16__sortIRPFbRK6b2PairS3_EPS1_EEvT0_S8_T_(i14, i14 + (i7 * 12 | 0) | 0, i6); - if ((HEAP32[i1 >> 2] | 0) <= 0) { - STACKTOP = i3; - return; - } - i6 = i5 + 12 | 0; - i7 = i5 + 4 | 0; - i9 = 0; - L18 : while (1) { - i8 = HEAP32[i4 >> 2] | 0; - i5 = i8 + (i9 * 12 | 0) | 0; - i10 = HEAP32[i5 >> 2] | 0; - if (!((i10 | 0) > -1)) { - i8 = 14; - break; - } - i12 = HEAP32[i6 >> 2] | 0; - if ((i12 | 0) <= (i10 | 0)) { - i8 = 14; - break; - } - i11 = HEAP32[i7 >> 2] | 0; - i8 = i8 + (i9 * 12 | 0) + 4 | 0; - i13 = HEAP32[i8 >> 2] | 0; - if (!((i13 | 0) > -1 & (i12 | 0) > (i13 | 0))) { - i8 = 16; - break; - } - __ZN16b2ContactManager7AddPairEPvS0_(i2, HEAP32[i11 + (i10 * 36 | 0) + 16 >> 2] | 0, HEAP32[i11 + (i13 * 36 | 0) + 16 >> 2] | 0); - i10 = HEAP32[i1 >> 2] | 0; - while (1) { - i9 = i9 + 1 | 0; - if ((i9 | 0) >= (i10 | 0)) { - i8 = 21; - break L18; - } - i11 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i11 + (i9 * 12 | 0) >> 2] | 0) != (HEAP32[i5 >> 2] | 0)) { - continue L18; - } - if ((HEAP32[i11 + (i9 * 12 | 0) + 4 >> 2] | 0) != (HEAP32[i8 >> 2] | 0)) { - continue L18; - } - } - } - if ((i8 | 0) == 14) { - ___assert_fail(1904, 1952, 153, 1992); - } else if ((i8 | 0) == 16) { - ___assert_fail(1904, 1952, 153, 1992); - } else if ((i8 | 0) == 21) { - STACKTOP = i3; - return; - } -} -function __ZNK13b2DynamicTree5QueryI12b2BroadPhaseEEvPT_RK6b2AABB(i9, i4, i7) { - i9 = i9 | 0; - i4 = i4 | 0; - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 1040 | 0; - i3 = i2; - i1 = i3 + 4 | 0; - HEAP32[i3 >> 2] = i1; - i5 = i3 + 1028 | 0; - HEAP32[i5 >> 2] = 0; - i6 = i3 + 1032 | 0; - HEAP32[i6 >> 2] = 256; - i14 = HEAP32[i3 >> 2] | 0; - HEAP32[i14 + (HEAP32[i5 >> 2] << 2) >> 2] = HEAP32[i9 >> 2]; - i15 = HEAP32[i5 >> 2] | 0; - i16 = i15 + 1 | 0; - HEAP32[i5 >> 2] = i16; - L1 : do { - if ((i15 | 0) > -1) { - i9 = i9 + 4 | 0; - i11 = i7 + 4 | 0; - i12 = i7 + 8 | 0; - i10 = i7 + 12 | 0; - while (1) { - i16 = i16 + -1 | 0; - HEAP32[i5 >> 2] = i16; - i13 = HEAP32[i14 + (i16 << 2) >> 2] | 0; - do { - if (!((i13 | 0) == -1) ? (i8 = HEAP32[i9 >> 2] | 0, !(+HEAPF32[i7 >> 2] - +HEAPF32[i8 + (i13 * 36 | 0) + 8 >> 2] > 0.0 | +HEAPF32[i11 >> 2] - +HEAPF32[i8 + (i13 * 36 | 0) + 12 >> 2] > 0.0 | +HEAPF32[i8 + (i13 * 36 | 0) >> 2] - +HEAPF32[i12 >> 2] > 0.0 | +HEAPF32[i8 + (i13 * 36 | 0) + 4 >> 2] - +HEAPF32[i10 >> 2] > 0.0)) : 0) { - i15 = i8 + (i13 * 36 | 0) + 24 | 0; - if ((HEAP32[i15 >> 2] | 0) == -1) { - if (!(__ZN12b2BroadPhase13QueryCallbackEi(i4, i13) | 0)) { - break L1; - } - i16 = HEAP32[i5 >> 2] | 0; - break; - } - if ((i16 | 0) == (HEAP32[i6 >> 2] | 0) ? (HEAP32[i6 >> 2] = i16 << 1, i16 = __Z7b2Alloci(i16 << 3) | 0, HEAP32[i3 >> 2] = i16, _memcpy(i16 | 0, i14 | 0, HEAP32[i5 >> 2] << 2 | 0) | 0, (i14 | 0) != (i1 | 0)) : 0) { - __Z6b2FreePv(i14); - } - i14 = HEAP32[i3 >> 2] | 0; - HEAP32[i14 + (HEAP32[i5 >> 2] << 2) >> 2] = HEAP32[i15 >> 2]; - i15 = (HEAP32[i5 >> 2] | 0) + 1 | 0; - HEAP32[i5 >> 2] = i15; - i13 = i8 + (i13 * 36 | 0) + 28 | 0; - if ((i15 | 0) == (HEAP32[i6 >> 2] | 0) ? (HEAP32[i6 >> 2] = i15 << 1, i16 = __Z7b2Alloci(i15 << 3) | 0, HEAP32[i3 >> 2] = i16, _memcpy(i16 | 0, i14 | 0, HEAP32[i5 >> 2] << 2 | 0) | 0, (i14 | 0) != (i1 | 0)) : 0) { - __Z6b2FreePv(i14); - } - HEAP32[(HEAP32[i3 >> 2] | 0) + (HEAP32[i5 >> 2] << 2) >> 2] = HEAP32[i13 >> 2]; - i16 = (HEAP32[i5 >> 2] | 0) + 1 | 0; - HEAP32[i5 >> 2] = i16; - } - } while (0); - if ((i16 | 0) <= 0) { - break L1; - } - i14 = HEAP32[i3 >> 2] | 0; - } - } - } while (0); - i4 = HEAP32[i3 >> 2] | 0; - if ((i4 | 0) == (i1 | 0)) { - STACKTOP = i2; - return; - } - __Z6b2FreePv(i4); - HEAP32[i3 >> 2] = 0; - STACKTOP = i2; - return; -} -function __ZN15b2ContactSolver9WarmStartEv(i4) { - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, d10 = 0.0, d11 = 0.0, d12 = 0.0, i13 = 0, d14 = 0.0, d15 = 0.0, d16 = 0.0, d17 = 0.0, d18 = 0.0, d19 = 0.0, d20 = 0.0, d21 = 0.0, i22 = 0, d23 = 0.0, i24 = 0, d25 = 0.0, d26 = 0.0, d27 = 0.0; - i1 = STACKTOP; - i2 = i4 + 48 | 0; - if ((HEAP32[i2 >> 2] | 0) <= 0) { - STACKTOP = i1; - return; - } - i3 = i4 + 40 | 0; - i5 = i4 + 28 | 0; - i22 = HEAP32[i5 >> 2] | 0; - i8 = 0; - do { - i9 = HEAP32[i3 >> 2] | 0; - i7 = HEAP32[i9 + (i8 * 152 | 0) + 112 >> 2] | 0; - i6 = HEAP32[i9 + (i8 * 152 | 0) + 116 >> 2] | 0; - d10 = +HEAPF32[i9 + (i8 * 152 | 0) + 120 >> 2]; - d14 = +HEAPF32[i9 + (i8 * 152 | 0) + 128 >> 2]; - d12 = +HEAPF32[i9 + (i8 * 152 | 0) + 124 >> 2]; - d11 = +HEAPF32[i9 + (i8 * 152 | 0) + 132 >> 2]; - i13 = HEAP32[i9 + (i8 * 152 | 0) + 144 >> 2] | 0; - i4 = i22 + (i7 * 12 | 0) | 0; - i24 = i4; - d17 = +HEAPF32[i24 >> 2]; - d19 = +HEAPF32[i24 + 4 >> 2]; - d20 = +HEAPF32[i22 + (i7 * 12 | 0) + 8 >> 2]; - i24 = i22 + (i6 * 12 | 0) | 0; - d21 = +HEAPF32[i24 >> 2]; - d23 = +HEAPF32[i24 + 4 >> 2]; - d18 = +HEAPF32[i22 + (i6 * 12 | 0) + 8 >> 2]; - i22 = i9 + (i8 * 152 | 0) + 72 | 0; - d15 = +HEAPF32[i22 >> 2]; - d16 = +HEAPF32[i22 + 4 >> 2]; - if ((i13 | 0) > 0) { - i22 = 0; - do { - d27 = +HEAPF32[i9 + (i8 * 152 | 0) + (i22 * 36 | 0) + 16 >> 2]; - d25 = +HEAPF32[i9 + (i8 * 152 | 0) + (i22 * 36 | 0) + 20 >> 2]; - d26 = d15 * d27 + d16 * d25; - d25 = d16 * d27 - d15 * d25; - d20 = d20 - d14 * (+HEAPF32[i9 + (i8 * 152 | 0) + (i22 * 36 | 0) >> 2] * d25 - +HEAPF32[i9 + (i8 * 152 | 0) + (i22 * 36 | 0) + 4 >> 2] * d26); - d17 = d17 - d10 * d26; - d19 = d19 - d10 * d25; - d18 = d18 + d11 * (d25 * +HEAPF32[i9 + (i8 * 152 | 0) + (i22 * 36 | 0) + 8 >> 2] - d26 * +HEAPF32[i9 + (i8 * 152 | 0) + (i22 * 36 | 0) + 12 >> 2]); - d21 = d21 + d12 * d26; - d23 = d23 + d12 * d25; - i22 = i22 + 1 | 0; - } while ((i22 | 0) != (i13 | 0)); - } - d27 = +d17; - d26 = +d19; - i22 = i4; - HEAPF32[i22 >> 2] = d27; - HEAPF32[i22 + 4 >> 2] = d26; - i22 = HEAP32[i5 >> 2] | 0; - HEAPF32[i22 + (i7 * 12 | 0) + 8 >> 2] = d20; - d26 = +d21; - d27 = +d23; - i22 = i22 + (i6 * 12 | 0) | 0; - HEAPF32[i22 >> 2] = d26; - HEAPF32[i22 + 4 >> 2] = d27; - i22 = HEAP32[i5 >> 2] | 0; - HEAPF32[i22 + (i6 * 12 | 0) + 8 >> 2] = d18; - i8 = i8 + 1 | 0; - } while ((i8 | 0) < (HEAP32[i2 >> 2] | 0)); - STACKTOP = i1; - return; -} -function __ZNK14b2PolygonShape7RayCastEP15b2RayCastOutputRK14b2RayCastInputRK11b2Transformi(i1, i5, i8, i7, i4) { - i1 = i1 | 0; - i5 = i5 | 0; - i8 = i8 | 0; - i7 = i7 | 0; - i4 = i4 | 0; - var i2 = 0, d3 = 0.0, i6 = 0, d9 = 0.0, d10 = 0.0, d11 = 0.0, d12 = 0.0, d13 = 0.0, i14 = 0, i15 = 0, i16 = 0, d17 = 0.0, d18 = 0.0, d19 = 0.0, d20 = 0.0; - i4 = STACKTOP; - d10 = +HEAPF32[i7 >> 2]; - d9 = +HEAPF32[i8 >> 2] - d10; - d18 = +HEAPF32[i7 + 4 >> 2]; - d11 = +HEAPF32[i8 + 4 >> 2] - d18; - i6 = i7 + 12 | 0; - d17 = +HEAPF32[i6 >> 2]; - i7 = i7 + 8 | 0; - d19 = +HEAPF32[i7 >> 2]; - d12 = d9 * d17 + d11 * d19; - d9 = d17 * d11 - d9 * d19; - d10 = +HEAPF32[i8 + 8 >> 2] - d10; - d18 = +HEAPF32[i8 + 12 >> 2] - d18; - d11 = d17 * d10 + d19 * d18 - d12; - d10 = d17 * d18 - d19 * d10 - d9; - i8 = i8 + 16 | 0; - i14 = HEAP32[i1 + 148 >> 2] | 0; - do { - if ((i14 | 0) > 0) { - i16 = 0; - i15 = -1; - d13 = 0.0; - d17 = +HEAPF32[i8 >> 2]; - L3 : while (1) { - d20 = +HEAPF32[i1 + (i16 << 3) + 84 >> 2]; - d19 = +HEAPF32[i1 + (i16 << 3) + 88 >> 2]; - d18 = (+HEAPF32[i1 + (i16 << 3) + 20 >> 2] - d12) * d20 + (+HEAPF32[i1 + (i16 << 3) + 24 >> 2] - d9) * d19; - d19 = d11 * d20 + d10 * d19; - do { - if (d19 == 0.0) { - if (d18 < 0.0) { - i1 = 0; - i14 = 18; - break L3; - } - } else { - if (d19 < 0.0 ? d18 < d13 * d19 : 0) { - i15 = i16; - d13 = d18 / d19; - break; - } - if (d19 > 0.0 ? d18 < d17 * d19 : 0) { - d17 = d18 / d19; - } - } - } while (0); - i16 = i16 + 1 | 0; - if (d17 < d13) { - i1 = 0; - i14 = 18; - break; - } - if ((i16 | 0) >= (i14 | 0)) { - i14 = 13; - break; - } - } - if ((i14 | 0) == 13) { - if (d13 >= 0.0) { - i2 = i15; - d3 = d13; - break; - } - ___assert_fail(376, 328, 249, 424); - } else if ((i14 | 0) == 18) { - STACKTOP = i4; - return i1 | 0; - } - } else { - i2 = -1; - d3 = 0.0; - } - } while (0); - if (!(d3 <= +HEAPF32[i8 >> 2])) { - ___assert_fail(376, 328, 249, 424); - } - if (!((i2 | 0) > -1)) { - i16 = 0; - STACKTOP = i4; - return i16 | 0; - } - HEAPF32[i5 + 8 >> 2] = d3; - d18 = +HEAPF32[i6 >> 2]; - d13 = +HEAPF32[i1 + (i2 << 3) + 84 >> 2]; - d17 = +HEAPF32[i7 >> 2]; - d20 = +HEAPF32[i1 + (i2 << 3) + 88 >> 2]; - d19 = +(d18 * d13 - d17 * d20); - d20 = +(d13 * d17 + d18 * d20); - i16 = i5; - HEAPF32[i16 >> 2] = d19; - HEAPF32[i16 + 4 >> 2] = d20; - i16 = 1; - STACKTOP = i4; - return i16 | 0; -} -function __ZN7b2World4StepEfii(i1, d9, i11, i12) { - i1 = i1 | 0; - d9 = +d9; - i11 = i11 | 0; - i12 = i12 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i13 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i3 = i4 + 27 | 0; - i5 = i4; - i8 = i4 + 26 | 0; - i10 = i4 + 25 | 0; - i7 = i4 + 24 | 0; - __ZN7b2TimerC2Ev(i3); - i2 = i1 + 102868 | 0; - i13 = HEAP32[i2 >> 2] | 0; - if ((i13 & 1 | 0) != 0) { - __ZN16b2ContactManager15FindNewContactsEv(i1 + 102872 | 0); - i13 = HEAP32[i2 >> 2] & -2; - HEAP32[i2 >> 2] = i13; - } - HEAP32[i2 >> 2] = i13 | 2; - HEAPF32[i5 >> 2] = d9; - HEAP32[i5 + 12 >> 2] = i11; - HEAP32[i5 + 16 >> 2] = i12; - if (d9 > 0.0) { - HEAPF32[i5 + 4 >> 2] = 1.0 / d9; - } else { - HEAPF32[i5 + 4 >> 2] = 0.0; - } - i11 = i1 + 102988 | 0; - HEAPF32[i5 + 8 >> 2] = +HEAPF32[i11 >> 2] * d9; - HEAP8[i5 + 20 | 0] = HEAP8[i1 + 102992 | 0] | 0; - __ZN7b2TimerC2Ev(i8); - __ZN16b2ContactManager7CollideEv(i1 + 102872 | 0); - HEAPF32[i1 + 103e3 >> 2] = +__ZNK7b2Timer15GetMillisecondsEv(i8); - if ((HEAP8[i1 + 102995 | 0] | 0) != 0 ? +HEAPF32[i5 >> 2] > 0.0 : 0) { - __ZN7b2TimerC2Ev(i10); - __ZN7b2World5SolveERK10b2TimeStep(i1, i5); - HEAPF32[i1 + 103004 >> 2] = +__ZNK7b2Timer15GetMillisecondsEv(i10); - } - if ((HEAP8[i1 + 102993 | 0] | 0) != 0) { - d9 = +HEAPF32[i5 >> 2]; - if (d9 > 0.0) { - __ZN7b2TimerC2Ev(i7); - __ZN7b2World8SolveTOIERK10b2TimeStep(i1, i5); - HEAPF32[i1 + 103024 >> 2] = +__ZNK7b2Timer15GetMillisecondsEv(i7); - i6 = 12; - } - } else { - i6 = 12; - } - if ((i6 | 0) == 12) { - d9 = +HEAPF32[i5 >> 2]; - } - if (d9 > 0.0) { - HEAPF32[i11 >> 2] = +HEAPF32[i5 + 4 >> 2]; - } - i5 = HEAP32[i2 >> 2] | 0; - if ((i5 & 4 | 0) == 0) { - i13 = i5 & -3; - HEAP32[i2 >> 2] = i13; - d9 = +__ZNK7b2Timer15GetMillisecondsEv(i3); - i13 = i1 + 102996 | 0; - HEAPF32[i13 >> 2] = d9; - STACKTOP = i4; - return; - } - i6 = HEAP32[i1 + 102952 >> 2] | 0; - if ((i6 | 0) == 0) { - i13 = i5 & -3; - HEAP32[i2 >> 2] = i13; - d9 = +__ZNK7b2Timer15GetMillisecondsEv(i3); - i13 = i1 + 102996 | 0; - HEAPF32[i13 >> 2] = d9; - STACKTOP = i4; - return; - } - do { - HEAPF32[i6 + 76 >> 2] = 0.0; - HEAPF32[i6 + 80 >> 2] = 0.0; - HEAPF32[i6 + 84 >> 2] = 0.0; - i6 = HEAP32[i6 + 96 >> 2] | 0; - } while ((i6 | 0) != 0); - i13 = i5 & -3; - HEAP32[i2 >> 2] = i13; - d9 = +__ZNK7b2Timer15GetMillisecondsEv(i3); - i13 = i1 + 102996 | 0; - HEAPF32[i13 >> 2] = d9; - STACKTOP = i4; - return; -} -function __ZL19b2FindMaxSeparationPiPK14b2PolygonShapeRK11b2TransformS2_S5_(i1, i5, i6, i3, i4) { - i1 = i1 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0, i7 = 0, d8 = 0.0, d9 = 0.0, d10 = 0.0, d11 = 0.0, i12 = 0, i13 = 0, i14 = 0, d15 = 0.0, d16 = 0.0, d17 = 0.0, d18 = 0.0, d19 = 0.0; - i2 = STACKTOP; - i7 = HEAP32[i5 + 148 >> 2] | 0; - d17 = +HEAPF32[i4 + 12 >> 2]; - d19 = +HEAPF32[i3 + 12 >> 2]; - d18 = +HEAPF32[i4 + 8 >> 2]; - d16 = +HEAPF32[i3 + 16 >> 2]; - d15 = +HEAPF32[i6 + 12 >> 2]; - d10 = +HEAPF32[i5 + 12 >> 2]; - d8 = +HEAPF32[i6 + 8 >> 2]; - d9 = +HEAPF32[i5 + 16 >> 2]; - d11 = +HEAPF32[i4 >> 2] + (d17 * d19 - d18 * d16) - (+HEAPF32[i6 >> 2] + (d15 * d10 - d8 * d9)); - d9 = d19 * d18 + d17 * d16 + +HEAPF32[i4 + 4 >> 2] - (d10 * d8 + d15 * d9 + +HEAPF32[i6 + 4 >> 2]); - d10 = d15 * d11 + d8 * d9; - d8 = d15 * d9 - d11 * d8; - if ((i7 | 0) > 0) { - i14 = 0; - i13 = 0; - d9 = -3.4028234663852886e+38; - while (1) { - d11 = d10 * +HEAPF32[i5 + (i13 << 3) + 84 >> 2] + d8 * +HEAPF32[i5 + (i13 << 3) + 88 >> 2]; - i12 = d11 > d9; - i14 = i12 ? i13 : i14; - i13 = i13 + 1 | 0; - if ((i13 | 0) == (i7 | 0)) { - break; - } else { - d9 = i12 ? d11 : d9; - } - } - } else { - i14 = 0; - } - d9 = +__ZL16b2EdgeSeparationPK14b2PolygonShapeRK11b2TransformiS1_S4_(i5, i6, i14, i3, i4); - i12 = ((i14 | 0) > 0 ? i14 : i7) + -1 | 0; - d8 = +__ZL16b2EdgeSeparationPK14b2PolygonShapeRK11b2TransformiS1_S4_(i5, i6, i12, i3, i4); - i13 = i14 + 1 | 0; - i13 = (i13 | 0) < (i7 | 0) ? i13 : 0; - d10 = +__ZL16b2EdgeSeparationPK14b2PolygonShapeRK11b2TransformiS1_S4_(i5, i6, i13, i3, i4); - if (d8 > d9 & d8 > d10) { - while (1) { - i13 = ((i12 | 0) > 0 ? i12 : i7) + -1 | 0; - d9 = +__ZL16b2EdgeSeparationPK14b2PolygonShapeRK11b2TransformiS1_S4_(i5, i6, i13, i3, i4); - if (d9 > d8) { - i12 = i13; - d8 = d9; - } else { - break; - } - } - HEAP32[i1 >> 2] = i12; - STACKTOP = i2; - return +d8; - } - if (d10 > d9) { - i12 = i13; - d8 = d10; - } else { - d19 = d9; - HEAP32[i1 >> 2] = i14; - STACKTOP = i2; - return +d19; - } - while (1) { - i13 = i12 + 1 | 0; - i13 = (i13 | 0) < (i7 | 0) ? i13 : 0; - d9 = +__ZL16b2EdgeSeparationPK14b2PolygonShapeRK11b2TransformiS1_S4_(i5, i6, i13, i3, i4); - if (d9 > d8) { - i12 = i13; - d8 = d9; - } else { - break; - } - } - HEAP32[i1 >> 2] = i12; - STACKTOP = i2; - return +d8; -} -function __ZN9b2Fixture11SynchronizeEP12b2BroadPhaseRK11b2TransformS4_(i10, i8, i7, i2) { - i10 = i10 | 0; - i8 = i8 | 0; - i7 = i7 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, d23 = 0.0, d24 = 0.0, d25 = 0.0, d26 = 0.0, i27 = 0; - i9 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i5 = i9 + 24 | 0; - i6 = i9 + 8 | 0; - i3 = i9; - i4 = i10 + 28 | 0; - if ((HEAP32[i4 >> 2] | 0) <= 0) { - STACKTOP = i9; - return; - } - i1 = i10 + 24 | 0; - i18 = i10 + 12 | 0; - i19 = i5 + 4 | 0; - i20 = i6 + 4 | 0; - i13 = i5 + 8 | 0; - i14 = i6 + 8 | 0; - i15 = i5 + 12 | 0; - i16 = i6 + 12 | 0; - i11 = i2 + 4 | 0; - i22 = i7 + 4 | 0; - i12 = i3 + 4 | 0; - i21 = 0; - do { - i10 = HEAP32[i1 >> 2] | 0; - i27 = HEAP32[i18 >> 2] | 0; - i17 = i10 + (i21 * 28 | 0) + 20 | 0; - FUNCTION_TABLE_viiii[HEAP32[(HEAP32[i27 >> 2] | 0) + 24 >> 2] & 15](i27, i5, i7, HEAP32[i17 >> 2] | 0); - i27 = HEAP32[i18 >> 2] | 0; - FUNCTION_TABLE_viiii[HEAP32[(HEAP32[i27 >> 2] | 0) + 24 >> 2] & 15](i27, i6, i2, HEAP32[i17 >> 2] | 0); - i17 = i10 + (i21 * 28 | 0) | 0; - d25 = +HEAPF32[i5 >> 2]; - d26 = +HEAPF32[i6 >> 2]; - d24 = +HEAPF32[i19 >> 2]; - d23 = +HEAPF32[i20 >> 2]; - d25 = +(d25 < d26 ? d25 : d26); - d26 = +(d24 < d23 ? d24 : d23); - i27 = i17; - HEAPF32[i27 >> 2] = d25; - HEAPF32[i27 + 4 >> 2] = d26; - d25 = +HEAPF32[i13 >> 2]; - d26 = +HEAPF32[i14 >> 2]; - d23 = +HEAPF32[i15 >> 2]; - d24 = +HEAPF32[i16 >> 2]; - d25 = +(d25 > d26 ? d25 : d26); - d26 = +(d23 > d24 ? d23 : d24); - i27 = i10 + (i21 * 28 | 0) + 8 | 0; - HEAPF32[i27 >> 2] = d25; - HEAPF32[i27 + 4 >> 2] = d26; - d26 = +HEAPF32[i11 >> 2] - +HEAPF32[i22 >> 2]; - HEAPF32[i3 >> 2] = +HEAPF32[i2 >> 2] - +HEAPF32[i7 >> 2]; - HEAPF32[i12 >> 2] = d26; - __ZN12b2BroadPhase9MoveProxyEiRK6b2AABBRK6b2Vec2(i8, HEAP32[i10 + (i21 * 28 | 0) + 24 >> 2] | 0, i17, i3); - i21 = i21 + 1 | 0; - } while ((i21 | 0) < (HEAP32[i4 >> 2] | 0)); - STACKTOP = i9; - return; -} -function __ZN12b2EPCollider24ComputePolygonSeparationEv(i2, i9) { - i2 = i2 | 0; - i9 = i9 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, d6 = 0.0, d7 = 0.0, i8 = 0, d10 = 0.0, d11 = 0.0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, d16 = 0.0, d17 = 0.0, d18 = 0.0, d19 = 0.0, i20 = 0, d21 = 0.0, d22 = 0.0, d23 = 0.0, d24 = 0.0, d25 = 0.0, d26 = 0.0; - i15 = STACKTOP; - HEAP32[i2 >> 2] = 0; - i3 = i2 + 4 | 0; - HEAP32[i3 >> 2] = -1; - i4 = i2 + 8 | 0; - HEAPF32[i4 >> 2] = -3.4028234663852886e+38; - d7 = +HEAPF32[i9 + 216 >> 2]; - d6 = +HEAPF32[i9 + 212 >> 2]; - i5 = HEAP32[i9 + 128 >> 2] | 0; - if ((i5 | 0) <= 0) { - STACKTOP = i15; - return; - } - d17 = +HEAPF32[i9 + 164 >> 2]; - d18 = +HEAPF32[i9 + 168 >> 2]; - d11 = +HEAPF32[i9 + 172 >> 2]; - d10 = +HEAPF32[i9 + 176 >> 2]; - d16 = +HEAPF32[i9 + 244 >> 2]; - i12 = i9 + 228 | 0; - i13 = i9 + 232 | 0; - i14 = i9 + 236 | 0; - i1 = i9 + 240 | 0; - d19 = -3.4028234663852886e+38; - i20 = 0; - while (1) { - d23 = +HEAPF32[i9 + (i20 << 3) + 64 >> 2]; - d21 = -d23; - d22 = -+HEAPF32[i9 + (i20 << 3) + 68 >> 2]; - d26 = +HEAPF32[i9 + (i20 << 3) >> 2]; - d25 = +HEAPF32[i9 + (i20 << 3) + 4 >> 2]; - d24 = (d26 - d17) * d21 + (d25 - d18) * d22; - d25 = (d26 - d11) * d21 + (d25 - d10) * d22; - d24 = d24 < d25 ? d24 : d25; - if (d24 > d16) { - break; - } - if (!(d7 * d23 + d6 * d22 >= 0.0)) { - if (!((d21 - +HEAPF32[i12 >> 2]) * d6 + (d22 - +HEAPF32[i13 >> 2]) * d7 < -.03490658849477768) & d24 > d19) { - i8 = 8; - } - } else { - if (!((d21 - +HEAPF32[i14 >> 2]) * d6 + (d22 - +HEAPF32[i1 >> 2]) * d7 < -.03490658849477768) & d24 > d19) { - i8 = 8; - } - } - if ((i8 | 0) == 8) { - i8 = 0; - HEAP32[i2 >> 2] = 2; - HEAP32[i3 >> 2] = i20; - HEAPF32[i4 >> 2] = d24; - d19 = d24; - } - i20 = i20 + 1 | 0; - if ((i20 | 0) >= (i5 | 0)) { - i8 = 10; - break; - } - } - if ((i8 | 0) == 10) { - STACKTOP = i15; - return; - } - HEAP32[i2 >> 2] = 2; - HEAP32[i3 >> 2] = i20; - HEAPF32[i4 >> 2] = d24; - STACKTOP = i15; - return; -} -function __ZNK11b2EdgeShape7RayCastEP15b2RayCastOutputRK14b2RayCastInputRK11b2Transformi(i17, i1, i2, i18, i3) { - i17 = i17 | 0; - i1 = i1 | 0; - i2 = i2 | 0; - i18 = i18 | 0; - i3 = i3 | 0; - var d4 = 0.0, d5 = 0.0, d6 = 0.0, d7 = 0.0, d8 = 0.0, d9 = 0.0, d10 = 0.0, d11 = 0.0, d12 = 0.0, d13 = 0.0, d14 = 0.0, d15 = 0.0, d16 = 0.0; - i3 = STACKTOP; - d6 = +HEAPF32[i18 >> 2]; - d7 = +HEAPF32[i2 >> 2] - d6; - d9 = +HEAPF32[i18 + 4 >> 2]; - d4 = +HEAPF32[i2 + 4 >> 2] - d9; - d11 = +HEAPF32[i18 + 12 >> 2]; - d5 = +HEAPF32[i18 + 8 >> 2]; - d8 = d7 * d11 + d4 * d5; - d7 = d11 * d4 - d7 * d5; - d6 = +HEAPF32[i2 + 8 >> 2] - d6; - d9 = +HEAPF32[i2 + 12 >> 2] - d9; - d4 = d11 * d6 + d5 * d9 - d8; - d6 = d11 * d9 - d5 * d6 - d7; - i18 = i17 + 12 | 0; - d5 = +HEAPF32[i18 >> 2]; - d9 = +HEAPF32[i18 + 4 >> 2]; - i18 = i17 + 20 | 0; - d11 = +HEAPF32[i18 >> 2]; - d11 = d11 - d5; - d12 = +HEAPF32[i18 + 4 >> 2] - d9; - d15 = -d11; - d10 = d11 * d11 + d12 * d12; - d13 = +Math_sqrt(+d10); - if (d13 < 1.1920928955078125e-7) { - d13 = d12; - } else { - d16 = 1.0 / d13; - d13 = d12 * d16; - d15 = d16 * d15; - } - d14 = (d9 - d7) * d15 + (d5 - d8) * d13; - d16 = d6 * d15 + d4 * d13; - if (d16 == 0.0) { - i18 = 0; - STACKTOP = i3; - return i18 | 0; - } - d16 = d14 / d16; - if (d16 < 0.0) { - i18 = 0; - STACKTOP = i3; - return i18 | 0; - } - if (+HEAPF32[i2 + 16 >> 2] < d16 | d10 == 0.0) { - i18 = 0; - STACKTOP = i3; - return i18 | 0; - } - d12 = (d11 * (d8 + d4 * d16 - d5) + d12 * (d7 + d6 * d16 - d9)) / d10; - if (d12 < 0.0 | d12 > 1.0) { - i18 = 0; - STACKTOP = i3; - return i18 | 0; - } - HEAPF32[i1 + 8 >> 2] = d16; - if (d14 > 0.0) { - d14 = +-d13; - d16 = +-d15; - i18 = i1; - HEAPF32[i18 >> 2] = d14; - HEAPF32[i18 + 4 >> 2] = d16; - i18 = 1; - STACKTOP = i3; - return i18 | 0; - } else { - d14 = +d13; - d16 = +d15; - i18 = i1; - HEAPF32[i18 >> 2] = d14; - HEAPF32[i18 + 4 >> 2] = d16; - i18 = 1; - STACKTOP = i3; - return i18 | 0; - } - return 0; -} -function ___dynamic_cast(i7, i6, i11, i5) { - i7 = i7 | 0; - i6 = i6 | 0; - i11 = i11 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i2 = i1; - i3 = HEAP32[i7 >> 2] | 0; - i4 = i7 + (HEAP32[i3 + -8 >> 2] | 0) | 0; - i3 = HEAP32[i3 + -4 >> 2] | 0; - HEAP32[i2 >> 2] = i11; - HEAP32[i2 + 4 >> 2] = i7; - HEAP32[i2 + 8 >> 2] = i6; - HEAP32[i2 + 12 >> 2] = i5; - i9 = i2 + 16 | 0; - i10 = i2 + 20 | 0; - i6 = i2 + 24 | 0; - i8 = i2 + 28 | 0; - i5 = i2 + 32 | 0; - i7 = i2 + 40 | 0; - i12 = (i3 | 0) == (i11 | 0); - i13 = i9 + 0 | 0; - i11 = i13 + 36 | 0; - do { - HEAP32[i13 >> 2] = 0; - i13 = i13 + 4 | 0; - } while ((i13 | 0) < (i11 | 0)); - HEAP16[i9 + 36 >> 1] = 0; - HEAP8[i9 + 38 | 0] = 0; - if (i12) { - HEAP32[i2 + 48 >> 2] = 1; - FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[i3 >> 2] | 0) + 20 >> 2] & 3](i3, i2, i4, i4, 1, 0); - i13 = (HEAP32[i6 >> 2] | 0) == 1 ? i4 : 0; - STACKTOP = i1; - return i13 | 0; - } - FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[i3 >> 2] | 0) + 24 >> 2] & 3](i3, i2, i4, 1, 0); - i2 = HEAP32[i2 + 36 >> 2] | 0; - if ((i2 | 0) == 0) { - if ((HEAP32[i7 >> 2] | 0) != 1) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - if ((HEAP32[i8 >> 2] | 0) != 1) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - i13 = (HEAP32[i5 >> 2] | 0) == 1 ? HEAP32[i10 >> 2] | 0 : 0; - STACKTOP = i1; - return i13 | 0; - } else if ((i2 | 0) == 1) { - if ((HEAP32[i6 >> 2] | 0) != 1) { - if ((HEAP32[i7 >> 2] | 0) != 0) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - if ((HEAP32[i8 >> 2] | 0) != 1) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - if ((HEAP32[i5 >> 2] | 0) != 1) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - } - i13 = HEAP32[i9 >> 2] | 0; - STACKTOP = i1; - return i13 | 0; - } else { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - return 0; -} -function __ZNK14b2PolygonShape11ComputeMassEP10b2MassDataf(i4, i1, d2) { - i4 = i4 | 0; - i1 = i1 | 0; - d2 = +d2; - var i3 = 0, i5 = 0, d6 = 0.0, d7 = 0.0, d8 = 0.0, d9 = 0.0, d10 = 0.0, d11 = 0.0, i12 = 0, d13 = 0.0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, d18 = 0.0, i19 = 0, d20 = 0.0, d21 = 0.0, d22 = 0.0, d23 = 0.0; - i3 = STACKTOP; - i5 = HEAP32[i4 + 148 >> 2] | 0; - if ((i5 | 0) > 2) { - d7 = 0.0; - d6 = 0.0; - i12 = 0; - } else { - ___assert_fail(432, 328, 306, 456); - } - do { - d6 = d6 + +HEAPF32[i4 + (i12 << 3) + 20 >> 2]; - d7 = d7 + +HEAPF32[i4 + (i12 << 3) + 24 >> 2]; - i12 = i12 + 1 | 0; - } while ((i12 | 0) < (i5 | 0)); - d11 = 1.0 / +(i5 | 0); - d6 = d6 * d11; - d11 = d7 * d11; - i16 = i4 + 20 | 0; - i19 = i4 + 24 | 0; - d9 = 0.0; - d10 = 0.0; - d7 = 0.0; - d8 = 0.0; - i17 = 0; - do { - d18 = +HEAPF32[i4 + (i17 << 3) + 20 >> 2] - d6; - d13 = +HEAPF32[i4 + (i17 << 3) + 24 >> 2] - d11; - i17 = i17 + 1 | 0; - i12 = (i17 | 0) < (i5 | 0); - if (i12) { - i14 = i4 + (i17 << 3) + 20 | 0; - i15 = i4 + (i17 << 3) + 24 | 0; - } else { - i14 = i16; - i15 = i19; - } - d21 = +HEAPF32[i14 >> 2] - d6; - d20 = +HEAPF32[i15 >> 2] - d11; - d22 = d18 * d20 - d13 * d21; - d23 = d22 * .5; - d8 = d8 + d23; - d23 = d23 * .3333333432674408; - d9 = d9 + (d18 + d21) * d23; - d10 = d10 + (d13 + d20) * d23; - d7 = d7 + d22 * .0833333358168602 * (d21 * d21 + (d18 * d18 + d18 * d21) + (d20 * d20 + (d13 * d13 + d13 * d20))); - } while (i12); - d13 = d8 * d2; - HEAPF32[i1 >> 2] = d13; - if (d8 > 1.1920928955078125e-7) { - d23 = 1.0 / d8; - d22 = d9 * d23; - d23 = d10 * d23; - d20 = d6 + d22; - d21 = d11 + d23; - d11 = +d20; - d18 = +d21; - i19 = i1 + 4 | 0; - HEAPF32[i19 >> 2] = d11; - HEAPF32[i19 + 4 >> 2] = d18; - HEAPF32[i1 + 12 >> 2] = d7 * d2 + d13 * (d20 * d20 + d21 * d21 - (d22 * d22 + d23 * d23)); - STACKTOP = i3; - return; - } else { - ___assert_fail(472, 328, 352, 456); - } -} -function __ZN16b2ContactManager7DestroyEP9b2Contact(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i3 = STACKTOP; - i5 = HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 8 >> 2] | 0; - i4 = HEAP32[(HEAP32[i2 + 52 >> 2] | 0) + 8 >> 2] | 0; - i6 = HEAP32[i1 + 72 >> 2] | 0; - if ((i6 | 0) != 0 ? (HEAP32[i2 + 4 >> 2] & 2 | 0) != 0 : 0) { - FUNCTION_TABLE_vii[HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] & 15](i6, i2); - } - i7 = i2 + 8 | 0; - i8 = HEAP32[i7 >> 2] | 0; - i6 = i2 + 12 | 0; - if ((i8 | 0) != 0) { - HEAP32[i8 + 12 >> 2] = HEAP32[i6 >> 2]; - } - i8 = HEAP32[i6 >> 2] | 0; - if ((i8 | 0) != 0) { - HEAP32[i8 + 8 >> 2] = HEAP32[i7 >> 2]; - } - i7 = i1 + 60 | 0; - if ((HEAP32[i7 >> 2] | 0) == (i2 | 0)) { - HEAP32[i7 >> 2] = HEAP32[i6 >> 2]; - } - i7 = i2 + 24 | 0; - i8 = HEAP32[i7 >> 2] | 0; - i6 = i2 + 28 | 0; - if ((i8 | 0) != 0) { - HEAP32[i8 + 12 >> 2] = HEAP32[i6 >> 2]; - } - i8 = HEAP32[i6 >> 2] | 0; - if ((i8 | 0) != 0) { - HEAP32[i8 + 8 >> 2] = HEAP32[i7 >> 2]; - } - i5 = i5 + 112 | 0; - if ((i2 + 16 | 0) == (HEAP32[i5 >> 2] | 0)) { - HEAP32[i5 >> 2] = HEAP32[i6 >> 2]; - } - i6 = i2 + 40 | 0; - i7 = HEAP32[i6 >> 2] | 0; - i5 = i2 + 44 | 0; - if ((i7 | 0) != 0) { - HEAP32[i7 + 12 >> 2] = HEAP32[i5 >> 2]; - } - i7 = HEAP32[i5 >> 2] | 0; - if ((i7 | 0) != 0) { - HEAP32[i7 + 8 >> 2] = HEAP32[i6 >> 2]; - } - i4 = i4 + 112 | 0; - if ((i2 + 32 | 0) != (HEAP32[i4 >> 2] | 0)) { - i8 = i1 + 76 | 0; - i8 = HEAP32[i8 >> 2] | 0; - __ZN9b2Contact7DestroyEPS_P16b2BlockAllocator(i2, i8); - i8 = i1 + 64 | 0; - i7 = HEAP32[i8 >> 2] | 0; - i7 = i7 + -1 | 0; - HEAP32[i8 >> 2] = i7; - STACKTOP = i3; - return; - } - HEAP32[i4 >> 2] = HEAP32[i5 >> 2]; - i8 = i1 + 76 | 0; - i8 = HEAP32[i8 >> 2] | 0; - __ZN9b2Contact7DestroyEPS_P16b2BlockAllocator(i2, i8); - i8 = i1 + 64 | 0; - i7 = HEAP32[i8 >> 2] | 0; - i7 = i7 + -1 | 0; - HEAP32[i8 >> 2] = i7; - STACKTOP = i3; - return; -} -function __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i6, i3, i4, i8, i7) { - i6 = i6 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i8 = i8 | 0; - i7 = i7 | 0; - var i1 = 0, i2 = 0, i5 = 0, i9 = 0, i10 = 0; - i1 = STACKTOP; - if ((i6 | 0) == (HEAP32[i3 + 8 >> 2] | 0)) { - if ((HEAP32[i3 + 4 >> 2] | 0) != (i4 | 0)) { - STACKTOP = i1; - return; - } - i2 = i3 + 28 | 0; - if ((HEAP32[i2 >> 2] | 0) == 1) { - STACKTOP = i1; - return; - } - HEAP32[i2 >> 2] = i8; - STACKTOP = i1; - return; - } - if ((i6 | 0) != (HEAP32[i3 >> 2] | 0)) { - i9 = HEAP32[i6 + 8 >> 2] | 0; - FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[i9 >> 2] | 0) + 24 >> 2] & 3](i9, i3, i4, i8, i7); - STACKTOP = i1; - return; - } - if ((HEAP32[i3 + 16 >> 2] | 0) != (i4 | 0) ? (i5 = i3 + 20 | 0, (HEAP32[i5 >> 2] | 0) != (i4 | 0)) : 0) { - HEAP32[i3 + 32 >> 2] = i8; - i8 = i3 + 44 | 0; - if ((HEAP32[i8 >> 2] | 0) == 4) { - STACKTOP = i1; - return; - } - i9 = i3 + 52 | 0; - HEAP8[i9] = 0; - i10 = i3 + 53 | 0; - HEAP8[i10] = 0; - i6 = HEAP32[i6 + 8 >> 2] | 0; - FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[i6 >> 2] | 0) + 20 >> 2] & 3](i6, i3, i4, i4, 1, i7); - if ((HEAP8[i10] | 0) != 0) { - if ((HEAP8[i9] | 0) == 0) { - i6 = 1; - i2 = 13; - } - } else { - i6 = 0; - i2 = 13; - } - do { - if ((i2 | 0) == 13) { - HEAP32[i5 >> 2] = i4; - i10 = i3 + 40 | 0; - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + 1; - if ((HEAP32[i3 + 36 >> 2] | 0) == 1 ? (HEAP32[i3 + 24 >> 2] | 0) == 2 : 0) { - HEAP8[i3 + 54 | 0] = 1; - if (i6) { - break; - } - } else { - i2 = 16; - } - if ((i2 | 0) == 16 ? i6 : 0) { - break; - } - HEAP32[i8 >> 2] = 4; - STACKTOP = i1; - return; - } - } while (0); - HEAP32[i8 >> 2] = 3; - STACKTOP = i1; - return; - } - if ((i8 | 0) != 1) { - STACKTOP = i1; - return; - } - HEAP32[i3 + 32 >> 2] = 1; - STACKTOP = i1; - return; -} -function __ZN16b2BlockAllocator8AllocateEi(i4, i2) { - i4 = i4 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i1 = STACKTOP; - if ((i2 | 0) == 0) { - i9 = 0; - STACKTOP = i1; - return i9 | 0; - } - if ((i2 | 0) <= 0) { - ___assert_fail(1376, 1312, 104, 1392); - } - if ((i2 | 0) > 640) { - i9 = __Z7b2Alloci(i2) | 0; - STACKTOP = i1; - return i9 | 0; - } - i9 = HEAP8[632 + i2 | 0] | 0; - i5 = i9 & 255; - if (!((i9 & 255) < 14)) { - ___assert_fail(1408, 1312, 112, 1392); - } - i2 = i4 + (i5 << 2) + 12 | 0; - i3 = HEAP32[i2 >> 2] | 0; - if ((i3 | 0) != 0) { - HEAP32[i2 >> 2] = HEAP32[i3 >> 2]; - i9 = i3; - STACKTOP = i1; - return i9 | 0; - } - i3 = i4 + 4 | 0; - i6 = HEAP32[i3 >> 2] | 0; - i7 = i4 + 8 | 0; - if ((i6 | 0) == (HEAP32[i7 >> 2] | 0)) { - i9 = HEAP32[i4 >> 2] | 0; - i6 = i6 + 128 | 0; - HEAP32[i7 >> 2] = i6; - i6 = __Z7b2Alloci(i6 << 3) | 0; - HEAP32[i4 >> 2] = i6; - _memcpy(i6 | 0, i9 | 0, HEAP32[i3 >> 2] << 3 | 0) | 0; - _memset((HEAP32[i4 >> 2] | 0) + (HEAP32[i3 >> 2] << 3) | 0, 0, 1024) | 0; - __Z6b2FreePv(i9); - i6 = HEAP32[i3 >> 2] | 0; - } - i9 = HEAP32[i4 >> 2] | 0; - i7 = __Z7b2Alloci(16384) | 0; - i4 = i9 + (i6 << 3) + 4 | 0; - HEAP32[i4 >> 2] = i7; - i5 = HEAP32[576 + (i5 << 2) >> 2] | 0; - HEAP32[i9 + (i6 << 3) >> 2] = i5; - i6 = 16384 / (i5 | 0) | 0; - if ((Math_imul(i6, i5) | 0) >= 16385) { - ___assert_fail(1448, 1312, 140, 1392); - } - i6 = i6 + -1 | 0; - if ((i6 | 0) > 0) { - i9 = 0; - while (1) { - i8 = i9 + 1 | 0; - HEAP32[i7 + (Math_imul(i9, i5) | 0) >> 2] = i7 + (Math_imul(i8, i5) | 0); - i7 = HEAP32[i4 >> 2] | 0; - if ((i8 | 0) == (i6 | 0)) { - break; - } else { - i9 = i8; - } - } - } - HEAP32[i7 + (Math_imul(i6, i5) | 0) >> 2] = 0; - HEAP32[i2 >> 2] = HEAP32[HEAP32[i4 >> 2] >> 2]; - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 1; - i9 = HEAP32[i4 >> 2] | 0; - STACKTOP = i1; - return i9 | 0; -} -function __ZN9b2Contact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator(i4, i5, i1, i3, i6) { - i4 = i4 | 0; - i5 = i5 | 0; - i1 = i1 | 0; - i3 = i3 | 0; - i6 = i6 | 0; - var i2 = 0, i7 = 0, i8 = 0, i9 = 0; - i2 = STACKTOP; - if ((HEAP8[4200] | 0) == 0) { - HEAP32[1002] = 3; - HEAP32[4012 >> 2] = 3; - HEAP8[4016 | 0] = 1; - HEAP32[4104 >> 2] = 4; - HEAP32[4108 >> 2] = 4; - HEAP8[4112 | 0] = 1; - HEAP32[4032 >> 2] = 4; - HEAP32[4036 >> 2] = 4; - HEAP8[4040 | 0] = 0; - HEAP32[4128 >> 2] = 5; - HEAP32[4132 >> 2] = 5; - HEAP8[4136 | 0] = 1; - HEAP32[4056 >> 2] = 6; - HEAP32[4060 >> 2] = 6; - HEAP8[4064 | 0] = 1; - HEAP32[4020 >> 2] = 6; - HEAP32[4024 >> 2] = 6; - HEAP8[4028 | 0] = 0; - HEAP32[4080 >> 2] = 7; - HEAP32[4084 >> 2] = 7; - HEAP8[4088 | 0] = 1; - HEAP32[4116 >> 2] = 7; - HEAP32[4120 >> 2] = 7; - HEAP8[4124 | 0] = 0; - HEAP32[4152 >> 2] = 8; - HEAP32[4156 >> 2] = 8; - HEAP8[4160 | 0] = 1; - HEAP32[4044 >> 2] = 8; - HEAP32[4048 >> 2] = 8; - HEAP8[4052 | 0] = 0; - HEAP32[4176 >> 2] = 9; - HEAP32[4180 >> 2] = 9; - HEAP8[4184 | 0] = 1; - HEAP32[4140 >> 2] = 9; - HEAP32[4144 >> 2] = 9; - HEAP8[4148 | 0] = 0; - HEAP8[4200] = 1; - } - i7 = HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 4 >> 2] | 0; - i8 = HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 4 >> 2] | 0; - if (!(i7 >>> 0 < 4)) { - ___assert_fail(4208, 4256, 80, 4344); - } - if (!(i8 >>> 0 < 4)) { - ___assert_fail(4296, 4256, 81, 4344); - } - i9 = HEAP32[4008 + (i7 * 48 | 0) + (i8 * 12 | 0) >> 2] | 0; - if ((i9 | 0) == 0) { - i9 = 0; - STACKTOP = i2; - return i9 | 0; - } - if ((HEAP8[4008 + (i7 * 48 | 0) + (i8 * 12 | 0) + 8 | 0] | 0) == 0) { - i9 = FUNCTION_TABLE_iiiiii[i9 & 15](i1, i3, i4, i5, i6) | 0; - STACKTOP = i2; - return i9 | 0; - } else { - i9 = FUNCTION_TABLE_iiiiii[i9 & 15](i4, i5, i1, i3, i6) | 0; - STACKTOP = i2; - return i9 | 0; - } - return 0; -} -function __ZN13b2DynamicTree9MoveProxyEiRK6b2AABBRK6b2Vec2(i1, i2, i13, i9) { - i1 = i1 | 0; - i2 = i2 | 0; - i13 = i13 | 0; - i9 = i9 | 0; - var i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0, d7 = 0.0, d8 = 0.0, d10 = 0.0, d11 = 0.0, i12 = 0; - i4 = STACKTOP; - if (!((i2 | 0) > -1)) { - ___assert_fail(3072, 2944, 135, 3152); - } - if ((HEAP32[i1 + 12 >> 2] | 0) <= (i2 | 0)) { - ___assert_fail(3072, 2944, 135, 3152); - } - i3 = i1 + 4 | 0; - i12 = HEAP32[i3 >> 2] | 0; - if (!((HEAP32[i12 + (i2 * 36 | 0) + 24 >> 2] | 0) == -1)) { - ___assert_fail(3120, 2944, 137, 3152); - } - if (((+HEAPF32[i12 + (i2 * 36 | 0) >> 2] <= +HEAPF32[i13 >> 2] ? +HEAPF32[i12 + (i2 * 36 | 0) + 4 >> 2] <= +HEAPF32[i13 + 4 >> 2] : 0) ? +HEAPF32[i13 + 8 >> 2] <= +HEAPF32[i12 + (i2 * 36 | 0) + 8 >> 2] : 0) ? +HEAPF32[i13 + 12 >> 2] <= +HEAPF32[i12 + (i2 * 36 | 0) + 12 >> 2] : 0) { - i13 = 0; - STACKTOP = i4; - return i13 | 0; - } - __ZN13b2DynamicTree10RemoveLeafEi(i1, i2); - i12 = i13; - d6 = +HEAPF32[i12 >> 2]; - d8 = +HEAPF32[i12 + 4 >> 2]; - i13 = i13 + 8 | 0; - d10 = +HEAPF32[i13 >> 2]; - d6 = d6 + -.10000000149011612; - d8 = d8 + -.10000000149011612; - d10 = d10 + .10000000149011612; - d5 = +HEAPF32[i13 + 4 >> 2] + .10000000149011612; - d11 = +HEAPF32[i9 >> 2] * 2.0; - d7 = +HEAPF32[i9 + 4 >> 2] * 2.0; - if (d11 < 0.0) { - d6 = d6 + d11; - } else { - d10 = d11 + d10; - } - if (d7 < 0.0) { - d8 = d8 + d7; - } else { - d5 = d7 + d5; - } - i13 = HEAP32[i3 >> 2] | 0; - d7 = +d6; - d11 = +d8; - i12 = i13 + (i2 * 36 | 0) | 0; - HEAPF32[i12 >> 2] = d7; - HEAPF32[i12 + 4 >> 2] = d11; - d10 = +d10; - d11 = +d5; - i13 = i13 + (i2 * 36 | 0) + 8 | 0; - HEAPF32[i13 >> 2] = d10; - HEAPF32[i13 + 4 >> 2] = d11; - __ZN13b2DynamicTree10InsertLeafEi(i1, i2); - i13 = 1; - STACKTOP = i4; - return i13 | 0; -} -function __ZNK9b2Simplex16GetWitnessPointsEP6b2Vec2S1_(i1, i4, i5) { - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, d6 = 0.0, d7 = 0.0, d8 = 0.0, i9 = 0, i10 = 0, d11 = 0.0; - i2 = STACKTOP; - i3 = HEAP32[i1 + 108 >> 2] | 0; - if ((i3 | 0) == 2) { - i9 = i1 + 24 | 0; - d7 = +HEAPF32[i9 >> 2]; - i3 = i1 + 60 | 0; - d8 = +HEAPF32[i3 >> 2]; - d6 = +(d7 * +HEAPF32[i1 >> 2] + d8 * +HEAPF32[i1 + 36 >> 2]); - d8 = +(d7 * +HEAPF32[i1 + 4 >> 2] + d8 * +HEAPF32[i1 + 40 >> 2]); - HEAPF32[i4 >> 2] = d6; - HEAPF32[i4 + 4 >> 2] = d8; - d8 = +HEAPF32[i9 >> 2]; - d6 = +HEAPF32[i3 >> 2]; - d7 = +(d8 * +HEAPF32[i1 + 8 >> 2] + d6 * +HEAPF32[i1 + 44 >> 2]); - d6 = +(d8 * +HEAPF32[i1 + 12 >> 2] + d6 * +HEAPF32[i1 + 48 >> 2]); - HEAPF32[i5 >> 2] = d7; - HEAPF32[i5 + 4 >> 2] = d6; - STACKTOP = i2; - return; - } else if ((i3 | 0) == 1) { - i10 = i1; - i9 = HEAP32[i10 + 4 >> 2] | 0; - i3 = i4; - HEAP32[i3 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i3 + 4 >> 2] = i9; - i3 = i1 + 8 | 0; - i4 = HEAP32[i3 + 4 >> 2] | 0; - i9 = i5; - HEAP32[i9 >> 2] = HEAP32[i3 >> 2]; - HEAP32[i9 + 4 >> 2] = i4; - STACKTOP = i2; - return; - } else if ((i3 | 0) == 0) { - ___assert_fail(2712, 2672, 217, 2752); - } else if ((i3 | 0) == 3) { - d11 = +HEAPF32[i1 + 24 >> 2]; - d6 = +HEAPF32[i1 + 60 >> 2]; - d8 = +HEAPF32[i1 + 96 >> 2]; - d7 = +(d11 * +HEAPF32[i1 >> 2] + d6 * +HEAPF32[i1 + 36 >> 2] + d8 * +HEAPF32[i1 + 72 >> 2]); - d8 = +(d11 * +HEAPF32[i1 + 4 >> 2] + d6 * +HEAPF32[i1 + 40 >> 2] + d8 * +HEAPF32[i1 + 76 >> 2]); - i10 = i4; - HEAPF32[i10 >> 2] = d7; - HEAPF32[i10 + 4 >> 2] = d8; - i10 = i5; - HEAPF32[i10 >> 2] = d7; - HEAPF32[i10 + 4 >> 2] = d8; - STACKTOP = i2; - return; - } else { - ___assert_fail(2712, 2672, 236, 2752); - } -} -function __ZNK12b2ChainShape12GetChildEdgeEP11b2EdgeShapei(i4, i3, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i2 = STACKTOP; - if (!((i1 | 0) > -1)) { - ___assert_fail(6832, 6792, 89, 6872); - } - i5 = i4 + 16 | 0; - if (((HEAP32[i5 >> 2] | 0) + -1 | 0) <= (i1 | 0)) { - ___assert_fail(6832, 6792, 89, 6872); - } - HEAP32[i3 + 4 >> 2] = 1; - HEAPF32[i3 + 8 >> 2] = +HEAPF32[i4 + 8 >> 2]; - i6 = i4 + 12 | 0; - i7 = (HEAP32[i6 >> 2] | 0) + (i1 << 3) | 0; - i8 = HEAP32[i7 + 4 >> 2] | 0; - i9 = i3 + 12 | 0; - HEAP32[i9 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i9 + 4 >> 2] = i8; - i9 = (HEAP32[i6 >> 2] | 0) + (i1 + 1 << 3) | 0; - i8 = HEAP32[i9 + 4 >> 2] | 0; - i7 = i3 + 20 | 0; - HEAP32[i7 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i7 + 4 >> 2] = i8; - i7 = i3 + 28 | 0; - if ((i1 | 0) > 0) { - i10 = (HEAP32[i6 >> 2] | 0) + (i1 + -1 << 3) | 0; - i8 = HEAP32[i10 + 4 >> 2] | 0; - i9 = i7; - HEAP32[i9 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i9 + 4 >> 2] = i8; - HEAP8[i3 + 44 | 0] = 1; - } else { - i8 = i4 + 20 | 0; - i9 = HEAP32[i8 + 4 >> 2] | 0; - i10 = i7; - HEAP32[i10 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i10 + 4 >> 2] = i9; - HEAP8[i3 + 44 | 0] = HEAP8[i4 + 36 | 0] | 0; - } - i7 = i3 + 36 | 0; - if (((HEAP32[i5 >> 2] | 0) + -2 | 0) > (i1 | 0)) { - i8 = (HEAP32[i6 >> 2] | 0) + (i1 + 2 << 3) | 0; - i9 = HEAP32[i8 + 4 >> 2] | 0; - i10 = i7; - HEAP32[i10 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i10 + 4 >> 2] = i9; - HEAP8[i3 + 45 | 0] = 1; - STACKTOP = i2; - return; - } else { - i8 = i4 + 28 | 0; - i9 = HEAP32[i8 + 4 >> 2] | 0; - i10 = i7; - HEAP32[i10 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i10 + 4 >> 2] = i9; - HEAP8[i3 + 45 | 0] = HEAP8[i4 + 37 | 0] | 0; - STACKTOP = i2; - return; - } -} -function __ZN15b2DistanceProxy3SetEPK7b2Shapei(i3, i1, i5) { - i3 = i3 | 0; - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i2 = STACKTOP; - i4 = HEAP32[i1 + 4 >> 2] | 0; - if ((i4 | 0) == 1) { - HEAP32[i3 + 16 >> 2] = i1 + 12; - HEAP32[i3 + 20 >> 2] = 2; - HEAPF32[i3 + 24 >> 2] = +HEAPF32[i1 + 8 >> 2]; - STACKTOP = i2; - return; - } else if ((i4 | 0) == 3) { - if (!((i5 | 0) > -1)) { - ___assert_fail(2632, 2672, 53, 2704); - } - i4 = i1 + 16 | 0; - if ((HEAP32[i4 >> 2] | 0) <= (i5 | 0)) { - ___assert_fail(2632, 2672, 53, 2704); - } - i7 = i1 + 12 | 0; - i9 = (HEAP32[i7 >> 2] | 0) + (i5 << 3) | 0; - i8 = HEAP32[i9 + 4 >> 2] | 0; - i6 = i3; - HEAP32[i6 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i6 + 4 >> 2] = i8; - i6 = i5 + 1 | 0; - i5 = i3 + 8 | 0; - i7 = HEAP32[i7 >> 2] | 0; - if ((i6 | 0) < (HEAP32[i4 >> 2] | 0)) { - i7 = i7 + (i6 << 3) | 0; - i8 = HEAP32[i7 + 4 >> 2] | 0; - i9 = i5; - HEAP32[i9 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i9 + 4 >> 2] = i8; - } else { - i8 = HEAP32[i7 + 4 >> 2] | 0; - i9 = i5; - HEAP32[i9 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i9 + 4 >> 2] = i8; - } - HEAP32[i3 + 16 >> 2] = i3; - HEAP32[i3 + 20 >> 2] = 2; - HEAPF32[i3 + 24 >> 2] = +HEAPF32[i1 + 8 >> 2]; - STACKTOP = i2; - return; - } else if ((i4 | 0) == 2) { - HEAP32[i3 + 16 >> 2] = i1 + 20; - HEAP32[i3 + 20 >> 2] = HEAP32[i1 + 148 >> 2]; - HEAPF32[i3 + 24 >> 2] = +HEAPF32[i1 + 8 >> 2]; - STACKTOP = i2; - return; - } else if ((i4 | 0) == 0) { - HEAP32[i3 + 16 >> 2] = i1 + 12; - HEAP32[i3 + 20 >> 2] = 1; - HEAPF32[i3 + 24 >> 2] = +HEAPF32[i1 + 8 >> 2]; - STACKTOP = i2; - return; - } else { - ___assert_fail(2712, 2672, 81, 2704); - } -} -function __ZL16b2EdgeSeparationPK14b2PolygonShapeRK11b2TransformiS1_S4_(i2, i7, i4, i5, i6) { - i2 = i2 | 0; - i7 = i7 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var d1 = 0.0, d3 = 0.0, d8 = 0.0, d9 = 0.0, d10 = 0.0, d11 = 0.0, i12 = 0, i13 = 0, d14 = 0.0, d15 = 0.0, d16 = 0.0, d17 = 0.0, i18 = 0, i19 = 0, i20 = 0; - i12 = STACKTOP; - i13 = HEAP32[i5 + 148 >> 2] | 0; - if (!((i4 | 0) > -1)) { - ___assert_fail(5640, 5688, 32, 5752); - } - if ((HEAP32[i2 + 148 >> 2] | 0) <= (i4 | 0)) { - ___assert_fail(5640, 5688, 32, 5752); - } - d11 = +HEAPF32[i7 + 12 >> 2]; - d9 = +HEAPF32[i2 + (i4 << 3) + 84 >> 2]; - d1 = +HEAPF32[i7 + 8 >> 2]; - d3 = +HEAPF32[i2 + (i4 << 3) + 88 >> 2]; - d8 = d11 * d9 - d1 * d3; - d3 = d9 * d1 + d11 * d3; - d9 = +HEAPF32[i6 + 12 >> 2]; - d10 = +HEAPF32[i6 + 8 >> 2]; - d16 = d9 * d8 + d10 * d3; - d14 = d9 * d3 - d8 * d10; - if ((i13 | 0) > 0) { - i19 = 0; - i20 = 0; - d15 = 3.4028234663852886e+38; - while (1) { - d17 = d16 * +HEAPF32[i5 + (i19 << 3) + 20 >> 2] + d14 * +HEAPF32[i5 + (i19 << 3) + 24 >> 2]; - i18 = d17 < d15; - i20 = i18 ? i19 : i20; - i19 = i19 + 1 | 0; - if ((i19 | 0) == (i13 | 0)) { - break; - } else { - d15 = i18 ? d17 : d15; - } - } - } else { - i20 = 0; - } - d16 = +HEAPF32[i2 + (i4 << 3) + 20 >> 2]; - d17 = +HEAPF32[i2 + (i4 << 3) + 24 >> 2]; - d14 = +HEAPF32[i5 + (i20 << 3) + 20 >> 2]; - d15 = +HEAPF32[i5 + (i20 << 3) + 24 >> 2]; - STACKTOP = i12; - return +(d8 * (+HEAPF32[i6 >> 2] + (d9 * d14 - d10 * d15) - (+HEAPF32[i7 >> 2] + (d11 * d16 - d1 * d17))) + d3 * (d14 * d10 + d9 * d15 + +HEAPF32[i6 + 4 >> 2] - (d16 * d1 + d11 * d17 + +HEAPF32[i7 + 4 >> 2]))); -} -function __Z4iterv() { - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0, d7 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i2 = i1; - i3 = i1 + 32 | 0; - i4 = HEAP32[16] | 0; - if ((i4 | 0) >= (HEAP32[4] | 0)) { - HEAP32[16] = i4 + 1; - __Z7measurePl(i3, HEAP32[8] | 0); - d7 = +HEAPF32[i3 + 4 >> 2]; - d6 = +(HEAP32[10] | 0) / 1.0e6 * 1.0e3; - d5 = +(HEAP32[12] | 0) / 1.0e6 * 1.0e3; - HEAPF64[tempDoublePtr >> 3] = +HEAPF32[i3 >> 2]; - HEAP32[i2 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i4 = i2 + 8 | 0; - HEAPF64[tempDoublePtr >> 3] = d7; - HEAP32[i4 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i4 = i2 + 16 | 0; - HEAPF64[tempDoublePtr >> 3] = d6; - HEAP32[i4 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i4 = i2 + 24 | 0; - HEAPF64[tempDoublePtr >> 3] = d5; - HEAP32[i4 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - _printf(96, i2 | 0) | 0; - _emscripten_run_script(152); - if ((HEAP32[18] | 0) == 0) { - STACKTOP = i1; - return; - } - _emscripten_cancel_main_loop(); - STACKTOP = i1; - return; - } - i3 = _clock() | 0; - __ZN7b2World4StepEfii(HEAP32[6] | 0, .01666666753590107, 3, 3); - i3 = (_clock() | 0) - i3 | 0; - i2 = HEAP32[16] | 0; - HEAP32[(HEAP32[8] | 0) + (i2 << 2) >> 2] = i3; - if ((i3 | 0) < (HEAP32[10] | 0)) { - HEAP32[10] = i3; - } - if ((i3 | 0) > (HEAP32[12] | 0)) { - HEAP32[12] = i3; - } - HEAP32[16] = i2 + 1; - STACKTOP = i1; - return; -} -function __ZN13b2DynamicTree12AllocateNodeEv(i5) { - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - i2 = i5 + 16 | 0; - i3 = HEAP32[i2 >> 2] | 0; - if ((i3 | 0) == -1) { - i4 = i5 + 8 | 0; - i6 = HEAP32[i4 >> 2] | 0; - i3 = i5 + 12 | 0; - if ((i6 | 0) != (HEAP32[i3 >> 2] | 0)) { - ___assert_fail(2912, 2944, 61, 2984); - } - i5 = i5 + 4 | 0; - i7 = HEAP32[i5 >> 2] | 0; - HEAP32[i3 >> 2] = i6 << 1; - i6 = __Z7b2Alloci(i6 * 72 | 0) | 0; - HEAP32[i5 >> 2] = i6; - _memcpy(i6 | 0, i7 | 0, (HEAP32[i4 >> 2] | 0) * 36 | 0) | 0; - __Z6b2FreePv(i7); - i6 = HEAP32[i4 >> 2] | 0; - i7 = (HEAP32[i3 >> 2] | 0) + -1 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) < (i7 | 0)) { - i7 = i6; - while (1) { - i6 = i7 + 1 | 0; - HEAP32[i5 + (i7 * 36 | 0) + 20 >> 2] = i6; - HEAP32[i5 + (i7 * 36 | 0) + 32 >> 2] = -1; - i7 = (HEAP32[i3 >> 2] | 0) + -1 | 0; - if ((i6 | 0) < (i7 | 0)) { - i7 = i6; - } else { - break; - } - } - } - HEAP32[i5 + (i7 * 36 | 0) + 20 >> 2] = -1; - HEAP32[i5 + (((HEAP32[i3 >> 2] | 0) + -1 | 0) * 36 | 0) + 32 >> 2] = -1; - i3 = HEAP32[i4 >> 2] | 0; - HEAP32[i2 >> 2] = i3; - } else { - i4 = i5 + 8 | 0; - i5 = HEAP32[i5 + 4 >> 2] | 0; - } - i7 = i5 + (i3 * 36 | 0) + 20 | 0; - HEAP32[i2 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i7 >> 2] = -1; - HEAP32[i5 + (i3 * 36 | 0) + 24 >> 2] = -1; - HEAP32[i5 + (i3 * 36 | 0) + 28 >> 2] = -1; - HEAP32[i5 + (i3 * 36 | 0) + 32 >> 2] = 0; - HEAP32[i5 + (i3 * 36 | 0) + 16 >> 2] = 0; - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1; - STACKTOP = i1; - return i3 | 0; -} -function __ZN9b2Fixture6CreateEP16b2BlockAllocatorP6b2BodyPK12b2FixtureDef(i1, i5, i4, i3) { - i1 = i1 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i6 = 0, i7 = 0, d8 = 0.0; - i2 = STACKTOP; - HEAP32[i1 + 40 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAPF32[i1 + 16 >> 2] = +HEAPF32[i3 + 8 >> 2]; - HEAPF32[i1 + 20 >> 2] = +HEAPF32[i3 + 12 >> 2]; - HEAP32[i1 + 8 >> 2] = i4; - HEAP32[i1 + 4 >> 2] = 0; - i4 = i1 + 32 | 0; - i6 = i3 + 22 | 0; - HEAP16[i4 + 0 >> 1] = HEAP16[i6 + 0 >> 1] | 0; - HEAP16[i4 + 2 >> 1] = HEAP16[i6 + 2 >> 1] | 0; - HEAP16[i4 + 4 >> 1] = HEAP16[i6 + 4 >> 1] | 0; - HEAP8[i1 + 38 | 0] = HEAP8[i3 + 20 | 0] | 0; - i4 = HEAP32[i3 >> 2] | 0; - i4 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i4 >> 2] | 0) + 8 >> 2] & 3](i4, i5) | 0; - HEAP32[i1 + 12 >> 2] = i4; - i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] & 3](i4) | 0; - i6 = __ZN16b2BlockAllocator8AllocateEi(i5, i4 * 28 | 0) | 0; - i5 = i1 + 24 | 0; - HEAP32[i5 >> 2] = i6; - if ((i4 | 0) > 0) { - i7 = 0; - } else { - i7 = i1 + 28 | 0; - HEAP32[i7 >> 2] = 0; - i7 = i3 + 16 | 0; - d8 = +HEAPF32[i7 >> 2]; - HEAPF32[i1 >> 2] = d8; - STACKTOP = i2; - return; - } - do { - HEAP32[i6 + (i7 * 28 | 0) + 16 >> 2] = 0; - i6 = HEAP32[i5 >> 2] | 0; - HEAP32[i6 + (i7 * 28 | 0) + 24 >> 2] = -1; - i7 = i7 + 1 | 0; - } while ((i7 | 0) != (i4 | 0)); - i7 = i1 + 28 | 0; - HEAP32[i7 >> 2] = 0; - i7 = i3 + 16 | 0; - d8 = +HEAPF32[i7 >> 2]; - HEAPF32[i1 >> 2] = d8; - STACKTOP = i2; - return; -} -function __Z19b2ClipSegmentToLineP12b2ClipVertexPKS_RK6b2Vec2fi(i4, i1, i5, d9, i2) { - i4 = i4 | 0; - i1 = i1 | 0; - i5 = i5 | 0; - d9 = +d9; - i2 = i2 | 0; - var i3 = 0, i6 = 0, d7 = 0.0, i8 = 0, i10 = 0, d11 = 0.0, d12 = 0.0, i13 = 0; - i3 = STACKTOP; - d12 = +HEAPF32[i5 >> 2]; - d11 = +HEAPF32[i5 + 4 >> 2]; - i5 = i1 + 4 | 0; - d7 = d12 * +HEAPF32[i1 >> 2] + d11 * +HEAPF32[i5 >> 2] - d9; - i6 = i1 + 12 | 0; - i8 = i1 + 16 | 0; - d9 = d12 * +HEAPF32[i6 >> 2] + d11 * +HEAPF32[i8 >> 2] - d9; - if (!(d7 <= 0.0)) { - i10 = 0; - } else { - HEAP32[i4 + 0 >> 2] = HEAP32[i1 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i1 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i1 + 8 >> 2]; - i10 = 1; - } - if (d9 <= 0.0) { - i13 = i10 + 1 | 0; - i10 = i4 + (i10 * 12 | 0) | 0; - HEAP32[i10 + 0 >> 2] = HEAP32[i6 + 0 >> 2]; - HEAP32[i10 + 4 >> 2] = HEAP32[i6 + 4 >> 2]; - HEAP32[i10 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - i10 = i13; - } - if (!(d7 * d9 < 0.0)) { - i13 = i10; - STACKTOP = i3; - return i13 | 0; - } - d9 = d7 / (d7 - d9); - d11 = +HEAPF32[i1 >> 2]; - d12 = +HEAPF32[i5 >> 2]; - d11 = +(d11 + d9 * (+HEAPF32[i6 >> 2] - d11)); - d12 = +(d12 + d9 * (+HEAPF32[i8 >> 2] - d12)); - i13 = i4 + (i10 * 12 | 0) | 0; - HEAPF32[i13 >> 2] = d11; - HEAPF32[i13 + 4 >> 2] = d12; - i13 = i4 + (i10 * 12 | 0) + 8 | 0; - HEAP8[i13] = i2; - HEAP8[i13 + 1 | 0] = HEAP8[i1 + 9 | 0] | 0; - HEAP8[i13 + 2 | 0] = 0; - HEAP8[i13 + 3 | 0] = 1; - i13 = i10 + 1 | 0; - STACKTOP = i3; - return i13 | 0; -} -function __Z16b2CollideCirclesP10b2ManifoldPK13b2CircleShapeRK11b2TransformS3_S6_(i1, i7, i8, i6, i9) { - i1 = i1 | 0; - i7 = i7 | 0; - i8 = i8 | 0; - i6 = i6 | 0; - i9 = i9 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, d10 = 0.0, d11 = 0.0, d12 = 0.0, d13 = 0.0, d14 = 0.0, d15 = 0.0, d16 = 0.0, d17 = 0.0, d18 = 0.0; - i2 = STACKTOP; - i4 = i1 + 60 | 0; - HEAP32[i4 >> 2] = 0; - i3 = i7 + 12 | 0; - d10 = +HEAPF32[i8 + 12 >> 2]; - d14 = +HEAPF32[i3 >> 2]; - d13 = +HEAPF32[i8 + 8 >> 2]; - d11 = +HEAPF32[i7 + 16 >> 2]; - i5 = i6 + 12 | 0; - d16 = +HEAPF32[i9 + 12 >> 2]; - d18 = +HEAPF32[i5 >> 2]; - d17 = +HEAPF32[i9 + 8 >> 2]; - d15 = +HEAPF32[i6 + 16 >> 2]; - d12 = +HEAPF32[i9 >> 2] + (d16 * d18 - d17 * d15) - (+HEAPF32[i8 >> 2] + (d10 * d14 - d13 * d11)); - d11 = d18 * d17 + d16 * d15 + +HEAPF32[i9 + 4 >> 2] - (d14 * d13 + d10 * d11 + +HEAPF32[i8 + 4 >> 2]); - d10 = +HEAPF32[i7 + 8 >> 2] + +HEAPF32[i6 + 8 >> 2]; - if (d12 * d12 + d11 * d11 > d10 * d10) { - STACKTOP = i2; - return; - } - HEAP32[i1 + 56 >> 2] = 0; - i9 = i3; - i8 = HEAP32[i9 + 4 >> 2] | 0; - i7 = i1 + 48 | 0; - HEAP32[i7 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i7 + 4 >> 2] = i8; - HEAPF32[i1 + 40 >> 2] = 0.0; - HEAPF32[i1 + 44 >> 2] = 0.0; - HEAP32[i4 >> 2] = 1; - i7 = i5; - i8 = HEAP32[i7 + 4 >> 2] | 0; - i9 = i1; - HEAP32[i9 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i9 + 4 >> 2] = i8; - HEAP32[i1 + 16 >> 2] = 0; - STACKTOP = i2; - return; -} -function __ZNK14b2PolygonShape11ComputeAABBEP6b2AABBRK11b2Transformi(i1, i2, i7, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i7 = i7 | 0; - i3 = i3 | 0; - var d4 = 0.0, d5 = 0.0, d6 = 0.0, d8 = 0.0, d9 = 0.0, d10 = 0.0, d11 = 0.0, d12 = 0.0, i13 = 0, d14 = 0.0, d15 = 0.0, d16 = 0.0; - i3 = STACKTOP; - d4 = +HEAPF32[i7 + 12 >> 2]; - d15 = +HEAPF32[i1 + 20 >> 2]; - d5 = +HEAPF32[i7 + 8 >> 2]; - d12 = +HEAPF32[i1 + 24 >> 2]; - d6 = +HEAPF32[i7 >> 2]; - d9 = d6 + (d4 * d15 - d5 * d12); - d8 = +HEAPF32[i7 + 4 >> 2]; - d12 = d15 * d5 + d4 * d12 + d8; - i7 = HEAP32[i1 + 148 >> 2] | 0; - if ((i7 | 0) > 1) { - d10 = d9; - d11 = d12; - i13 = 1; - do { - d16 = +HEAPF32[i1 + (i13 << 3) + 20 >> 2]; - d14 = +HEAPF32[i1 + (i13 << 3) + 24 >> 2]; - d15 = d6 + (d4 * d16 - d5 * d14); - d14 = d16 * d5 + d4 * d14 + d8; - d10 = d10 < d15 ? d10 : d15; - d11 = d11 < d14 ? d11 : d14; - d9 = d9 > d15 ? d9 : d15; - d12 = d12 > d14 ? d12 : d14; - i13 = i13 + 1 | 0; - } while ((i13 | 0) < (i7 | 0)); - } else { - d11 = d12; - d10 = d9; - } - d16 = +HEAPF32[i1 + 8 >> 2]; - d14 = +(d10 - d16); - d15 = +(d11 - d16); - i13 = i2; - HEAPF32[i13 >> 2] = d14; - HEAPF32[i13 + 4 >> 2] = d15; - d15 = +(d9 + d16); - d16 = +(d12 + d16); - i13 = i2 + 8 | 0; - HEAPF32[i13 >> 2] = d15; - HEAPF32[i13 + 4 >> 2] = d16; - STACKTOP = i3; - return; -} -function __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(i5, i1, i4, i6, i3, i7) { - i5 = i5 | 0; - i1 = i1 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - i7 = i7 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((i5 | 0) != (HEAP32[i1 + 8 >> 2] | 0)) { - i5 = HEAP32[i5 + 8 >> 2] | 0; - FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] & 3](i5, i1, i4, i6, i3, i7); - STACKTOP = i2; - return; - } - HEAP8[i1 + 53 | 0] = 1; - if ((HEAP32[i1 + 4 >> 2] | 0) != (i6 | 0)) { - STACKTOP = i2; - return; - } - HEAP8[i1 + 52 | 0] = 1; - i5 = i1 + 16 | 0; - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) == 0) { - HEAP32[i5 >> 2] = i4; - HEAP32[i1 + 24 >> 2] = i3; - HEAP32[i1 + 36 >> 2] = 1; - if (!((HEAP32[i1 + 48 >> 2] | 0) == 1 & (i3 | 0) == 1)) { - STACKTOP = i2; - return; - } - HEAP8[i1 + 54 | 0] = 1; - STACKTOP = i2; - return; - } - if ((i6 | 0) != (i4 | 0)) { - i7 = i1 + 36 | 0; - HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 1; - HEAP8[i1 + 54 | 0] = 1; - STACKTOP = i2; - return; - } - i4 = i1 + 24 | 0; - i5 = HEAP32[i4 >> 2] | 0; - if ((i5 | 0) == 2) { - HEAP32[i4 >> 2] = i3; - } else { - i3 = i5; - } - if (!((HEAP32[i1 + 48 >> 2] | 0) == 1 & (i3 | 0) == 1)) { - STACKTOP = i2; - return; - } - HEAP8[i1 + 54 | 0] = 1; - STACKTOP = i2; - return; -} -function __ZN6b2Body13CreateFixtureEPK12b2FixtureDef(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0; - i3 = STACKTOP; - i2 = i1 + 88 | 0; - i4 = HEAP32[i2 >> 2] | 0; - if ((HEAP32[i4 + 102868 >> 2] & 2 | 0) != 0) { - ___assert_fail(1776, 1520, 153, 1808); - } - i6 = __ZN16b2BlockAllocator8AllocateEi(i4, 44) | 0; - if ((i6 | 0) == 0) { - i6 = 0; - } else { - __ZN9b2FixtureC2Ev(i6); - } - __ZN9b2Fixture6CreateEP16b2BlockAllocatorP6b2BodyPK12b2FixtureDef(i6, i4, i1, i5); - if (!((HEAP16[i1 + 4 >> 1] & 32) == 0)) { - __ZN9b2Fixture13CreateProxiesEP12b2BroadPhaseRK11b2Transform(i6, (HEAP32[i2 >> 2] | 0) + 102872 | 0, i1 + 12 | 0); - } - i5 = i1 + 100 | 0; - HEAP32[i6 + 4 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i5 >> 2] = i6; - i5 = i1 + 104 | 0; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 1; - HEAP32[i6 + 8 >> 2] = i1; - if (!(+HEAPF32[i6 >> 2] > 0.0)) { - i5 = HEAP32[i2 >> 2] | 0; - i5 = i5 + 102868 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i4 = i4 | 1; - HEAP32[i5 >> 2] = i4; - STACKTOP = i3; - return i6 | 0; - } - __ZN6b2Body13ResetMassDataEv(i1); - i5 = HEAP32[i2 >> 2] | 0; - i5 = i5 + 102868 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i4 = i4 | 1; - HEAP32[i5 >> 2] = i4; - STACKTOP = i3; - return i6 | 0; -} -function __Z13b2TestOverlapPK7b2ShapeiS1_iRK11b2TransformS4_(i6, i5, i4, i3, i2, i1) { - i6 = i6 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i8 = STACKTOP; - STACKTOP = STACKTOP + 128 | 0; - i9 = i8 + 36 | 0; - i10 = i8 + 24 | 0; - i7 = i8; - HEAP32[i9 + 16 >> 2] = 0; - HEAP32[i9 + 20 >> 2] = 0; - HEAPF32[i9 + 24 >> 2] = 0.0; - HEAP32[i9 + 44 >> 2] = 0; - HEAP32[i9 + 48 >> 2] = 0; - HEAPF32[i9 + 52 >> 2] = 0.0; - __ZN15b2DistanceProxy3SetEPK7b2Shapei(i9, i6, i5); - __ZN15b2DistanceProxy3SetEPK7b2Shapei(i9 + 28 | 0, i4, i3); - i6 = i9 + 56 | 0; - HEAP32[i6 + 0 >> 2] = HEAP32[i2 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i2 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - HEAP32[i6 + 12 >> 2] = HEAP32[i2 + 12 >> 2]; - i6 = i9 + 72 | 0; - HEAP32[i6 + 0 >> 2] = HEAP32[i1 + 0 >> 2]; - HEAP32[i6 + 4 >> 2] = HEAP32[i1 + 4 >> 2]; - HEAP32[i6 + 8 >> 2] = HEAP32[i1 + 8 >> 2]; - HEAP32[i6 + 12 >> 2] = HEAP32[i1 + 12 >> 2]; - HEAP8[i9 + 88 | 0] = 1; - HEAP16[i10 + 4 >> 1] = 0; - __Z10b2DistanceP16b2DistanceOutputP14b2SimplexCachePK15b2DistanceInput(i7, i10, i9); - STACKTOP = i8; - return +HEAPF32[i7 + 16 >> 2] < 11920928955078125.0e-22 | 0; -} -function __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(i6, i1, i4, i5, i2, i3) { - i6 = i6 | 0; - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i3 = STACKTOP; - if ((HEAP32[i1 + 8 >> 2] | 0) != (i6 | 0)) { - STACKTOP = i3; - return; - } - HEAP8[i1 + 53 | 0] = 1; - if ((HEAP32[i1 + 4 >> 2] | 0) != (i5 | 0)) { - STACKTOP = i3; - return; - } - HEAP8[i1 + 52 | 0] = 1; - i5 = i1 + 16 | 0; - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) == 0) { - HEAP32[i5 >> 2] = i4; - HEAP32[i1 + 24 >> 2] = i2; - HEAP32[i1 + 36 >> 2] = 1; - if (!((HEAP32[i1 + 48 >> 2] | 0) == 1 & (i2 | 0) == 1)) { - STACKTOP = i3; - return; - } - HEAP8[i1 + 54 | 0] = 1; - STACKTOP = i3; - return; - } - if ((i6 | 0) != (i4 | 0)) { - i6 = i1 + 36 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 1; - HEAP8[i1 + 54 | 0] = 1; - STACKTOP = i3; - return; - } - i4 = i1 + 24 | 0; - i5 = HEAP32[i4 >> 2] | 0; - if ((i5 | 0) == 2) { - HEAP32[i4 >> 2] = i2; - } else { - i2 = i5; - } - if (!((HEAP32[i1 + 48 >> 2] | 0) == 1 & (i2 | 0) == 1)) { - STACKTOP = i3; - return; - } - HEAP8[i1 + 54 | 0] = 1; - STACKTOP = i3; - return; -} -function __ZNK11b2EdgeShape5CloneEP16b2BlockAllocator(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - i3 = __ZN16b2BlockAllocator8AllocateEi(i3, 48) | 0; - if ((i3 | 0) == 0) { - i3 = 0; - } else { - HEAP32[i3 >> 2] = 240; - HEAP32[i3 + 4 >> 2] = 1; - HEAPF32[i3 + 8 >> 2] = .009999999776482582; - i4 = i3 + 28 | 0; - HEAP32[i4 + 0 >> 2] = 0; - HEAP32[i4 + 4 >> 2] = 0; - HEAP32[i4 + 8 >> 2] = 0; - HEAP32[i4 + 12 >> 2] = 0; - HEAP16[i4 + 16 >> 1] = 0; - } - i6 = i1 + 4 | 0; - i5 = HEAP32[i6 + 4 >> 2] | 0; - i4 = i3 + 4 | 0; - HEAP32[i4 >> 2] = HEAP32[i6 >> 2]; - HEAP32[i4 + 4 >> 2] = i5; - i4 = i3 + 12 | 0; - i1 = i1 + 12 | 0; - HEAP32[i4 + 0 >> 2] = HEAP32[i1 + 0 >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[i1 + 4 >> 2]; - HEAP32[i4 + 8 >> 2] = HEAP32[i1 + 8 >> 2]; - HEAP32[i4 + 12 >> 2] = HEAP32[i1 + 12 >> 2]; - HEAP32[i4 + 16 >> 2] = HEAP32[i1 + 16 >> 2]; - HEAP32[i4 + 20 >> 2] = HEAP32[i1 + 20 >> 2]; - HEAP32[i4 + 24 >> 2] = HEAP32[i1 + 24 >> 2]; - HEAP32[i4 + 28 >> 2] = HEAP32[i1 + 28 >> 2]; - HEAP16[i4 + 32 >> 1] = HEAP16[i1 + 32 >> 1] | 0; - STACKTOP = i2; - return i3 | 0; -} -function __ZN7b2WorldC2ERK6b2Vec2(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i3 = STACKTOP; - __ZN16b2BlockAllocatorC2Ev(i1); - __ZN16b2StackAllocatorC2Ev(i1 + 68 | 0); - __ZN16b2ContactManagerC2Ev(i1 + 102872 | 0); - i6 = i1 + 102968 | 0; - HEAP32[i1 + 102980 >> 2] = 0; - HEAP32[i1 + 102984 >> 2] = 0; - i4 = i1 + 102952 | 0; - i5 = i1 + 102992 | 0; - HEAP32[i4 + 0 >> 2] = 0; - HEAP32[i4 + 4 >> 2] = 0; - HEAP32[i4 + 8 >> 2] = 0; - HEAP32[i4 + 12 >> 2] = 0; - HEAP8[i5] = 1; - HEAP8[i1 + 102993 | 0] = 1; - HEAP8[i1 + 102994 | 0] = 0; - HEAP8[i1 + 102995 | 0] = 1; - HEAP8[i1 + 102976 | 0] = 1; - i5 = i2; - i4 = HEAP32[i5 + 4 >> 2] | 0; - i2 = i6; - HEAP32[i2 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i2 + 4 >> 2] = i4; - HEAP32[i1 + 102868 >> 2] = 4; - HEAPF32[i1 + 102988 >> 2] = 0.0; - HEAP32[i1 + 102948 >> 2] = i1; - i2 = i1 + 102996 | 0; - HEAP32[i2 + 0 >> 2] = 0; - HEAP32[i2 + 4 >> 2] = 0; - HEAP32[i2 + 8 >> 2] = 0; - HEAP32[i2 + 12 >> 2] = 0; - HEAP32[i2 + 16 >> 2] = 0; - HEAP32[i2 + 20 >> 2] = 0; - HEAP32[i2 + 24 >> 2] = 0; - HEAP32[i2 + 28 >> 2] = 0; - STACKTOP = i3; - return; -} -function __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i6, i3, i4, i1, i2) { - i6 = i6 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i1 = i1 | 0; - i2 = i2 | 0; - var i5 = 0; - i2 = STACKTOP; - if ((HEAP32[i3 + 8 >> 2] | 0) == (i6 | 0)) { - if ((HEAP32[i3 + 4 >> 2] | 0) != (i4 | 0)) { - STACKTOP = i2; - return; - } - i3 = i3 + 28 | 0; - if ((HEAP32[i3 >> 2] | 0) == 1) { - STACKTOP = i2; - return; - } - HEAP32[i3 >> 2] = i1; - STACKTOP = i2; - return; - } - if ((HEAP32[i3 >> 2] | 0) != (i6 | 0)) { - STACKTOP = i2; - return; - } - if ((HEAP32[i3 + 16 >> 2] | 0) != (i4 | 0) ? (i5 = i3 + 20 | 0, (HEAP32[i5 >> 2] | 0) != (i4 | 0)) : 0) { - HEAP32[i3 + 32 >> 2] = i1; - HEAP32[i5 >> 2] = i4; - i6 = i3 + 40 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 1; - if ((HEAP32[i3 + 36 >> 2] | 0) == 1 ? (HEAP32[i3 + 24 >> 2] | 0) == 2 : 0) { - HEAP8[i3 + 54 | 0] = 1; - } - HEAP32[i3 + 44 >> 2] = 4; - STACKTOP = i2; - return; - } - if ((i1 | 0) != 1) { - STACKTOP = i2; - return; - } - HEAP32[i3 + 32 >> 2] = 1; - STACKTOP = i2; - return; -} -function __ZN9b2Contact7DestroyEPS_P16b2BlockAllocator(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i3 = STACKTOP; - if ((HEAP8[4200] | 0) == 0) { - ___assert_fail(4352, 4256, 103, 4376); - } - i4 = HEAP32[i1 + 48 >> 2] | 0; - if ((HEAP32[i1 + 124 >> 2] | 0) > 0) { - i7 = HEAP32[i4 + 8 >> 2] | 0; - i6 = i7 + 4 | 0; - i5 = HEAPU16[i6 >> 1] | 0; - if ((i5 & 2 | 0) == 0) { - HEAP16[i6 >> 1] = i5 | 2; - HEAPF32[i7 + 144 >> 2] = 0.0; - } - i7 = HEAP32[i1 + 52 >> 2] | 0; - i6 = HEAP32[i7 + 8 >> 2] | 0; - i5 = i6 + 4 | 0; - i8 = HEAPU16[i5 >> 1] | 0; - if ((i8 & 2 | 0) == 0) { - HEAP16[i5 >> 1] = i8 | 2; - HEAPF32[i6 + 144 >> 2] = 0.0; - } - } else { - i7 = HEAP32[i1 + 52 >> 2] | 0; - } - i4 = HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 4 >> 2] | 0; - i5 = HEAP32[(HEAP32[i7 + 12 >> 2] | 0) + 4 >> 2] | 0; - if ((i4 | 0) > -1 & (i5 | 0) < 4) { - FUNCTION_TABLE_vii[HEAP32[4008 + (i4 * 48 | 0) + (i5 * 12 | 0) + 4 >> 2] & 15](i1, i2); - STACKTOP = i3; - return; - } else { - ___assert_fail(4384, 4256, 114, 4376); - } -} -function __ZN9b2Fixture13CreateProxiesEP12b2BroadPhaseRK11b2Transform(i5, i4, i1) { - i5 = i5 | 0; - i4 = i4 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i2 = STACKTOP; - i3 = i5 + 28 | 0; - if ((HEAP32[i3 >> 2] | 0) != 0) { - ___assert_fail(2088, 2112, 124, 2144); - } - i6 = i5 + 12 | 0; - i8 = HEAP32[i6 >> 2] | 0; - i8 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i8 >> 2] | 0) + 12 >> 2] & 3](i8) | 0; - HEAP32[i3 >> 2] = i8; - if ((i8 | 0) <= 0) { - STACKTOP = i2; - return; - } - i7 = i5 + 24 | 0; - i8 = 0; - do { - i9 = HEAP32[i7 >> 2] | 0; - i10 = i9 + (i8 * 28 | 0) | 0; - i11 = HEAP32[i6 >> 2] | 0; - FUNCTION_TABLE_viiii[HEAP32[(HEAP32[i11 >> 2] | 0) + 24 >> 2] & 15](i11, i10, i1, i8); - HEAP32[i9 + (i8 * 28 | 0) + 24 >> 2] = __ZN12b2BroadPhase11CreateProxyERK6b2AABBPv(i4, i10, i10) | 0; - HEAP32[i9 + (i8 * 28 | 0) + 16 >> 2] = i5; - HEAP32[i9 + (i8 * 28 | 0) + 20 >> 2] = i8; - i8 = i8 + 1 | 0; - } while ((i8 | 0) < (HEAP32[i3 >> 2] | 0)); - STACKTOP = i2; - return; -} -function __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv(i1, i5, i4) { - i1 = i1 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i3 = i2; - if ((i1 | 0) == (i5 | 0)) { - i7 = 1; - STACKTOP = i2; - return i7 | 0; - } - if ((i5 | 0) == 0) { - i7 = 0; - STACKTOP = i2; - return i7 | 0; - } - i5 = ___dynamic_cast(i5, 6952, 7008, 0) | 0; - if ((i5 | 0) == 0) { - i7 = 0; - STACKTOP = i2; - return i7 | 0; - } - i7 = i3 + 0 | 0; - i6 = i7 + 56 | 0; - do { - HEAP32[i7 >> 2] = 0; - i7 = i7 + 4 | 0; - } while ((i7 | 0) < (i6 | 0)); - HEAP32[i3 >> 2] = i5; - HEAP32[i3 + 8 >> 2] = i1; - HEAP32[i3 + 12 >> 2] = -1; - HEAP32[i3 + 48 >> 2] = 1; - FUNCTION_TABLE_viiii[HEAP32[(HEAP32[i5 >> 2] | 0) + 28 >> 2] & 15](i5, i3, HEAP32[i4 >> 2] | 0, 1); - if ((HEAP32[i3 + 24 >> 2] | 0) != 1) { - i7 = 0; - STACKTOP = i2; - return i7 | 0; - } - HEAP32[i4 >> 2] = HEAP32[i3 + 16 >> 2]; - i7 = 1; - STACKTOP = i2; - return i7 | 0; -} -function __ZN8b2IslandC2EiiiP16b2StackAllocatorP17b2ContactListener(i1, i4, i3, i2, i5, i6) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i7 = 0, i8 = 0; - i7 = STACKTOP; - i8 = i1 + 40 | 0; - HEAP32[i8 >> 2] = i4; - HEAP32[i1 + 44 >> 2] = i3; - HEAP32[i1 + 48 >> 2] = i2; - HEAP32[i1 + 28 >> 2] = 0; - HEAP32[i1 + 36 >> 2] = 0; - HEAP32[i1 + 32 >> 2] = 0; - HEAP32[i1 >> 2] = i5; - HEAP32[i1 + 4 >> 2] = i6; - HEAP32[i1 + 8 >> 2] = __ZN16b2StackAllocator8AllocateEi(i5, i4 << 2) | 0; - HEAP32[i1 + 12 >> 2] = __ZN16b2StackAllocator8AllocateEi(HEAP32[i1 >> 2] | 0, i3 << 2) | 0; - HEAP32[i1 + 16 >> 2] = __ZN16b2StackAllocator8AllocateEi(HEAP32[i1 >> 2] | 0, i2 << 2) | 0; - HEAP32[i1 + 24 >> 2] = __ZN16b2StackAllocator8AllocateEi(HEAP32[i1 >> 2] | 0, (HEAP32[i8 >> 2] | 0) * 12 | 0) | 0; - HEAP32[i1 + 20 >> 2] = __ZN16b2StackAllocator8AllocateEi(HEAP32[i1 >> 2] | 0, (HEAP32[i8 >> 2] | 0) * 12 | 0) | 0; - STACKTOP = i7; - return; -} -function __ZNK11b2EdgeShape11ComputeAABBEP6b2AABBRK11b2Transformi(i8, i1, i10, i2) { - i8 = i8 | 0; - i1 = i1 | 0; - i10 = i10 | 0; - i2 = i2 | 0; - var d3 = 0.0, d4 = 0.0, d5 = 0.0, d6 = 0.0, d7 = 0.0, d9 = 0.0, d11 = 0.0, d12 = 0.0; - i2 = STACKTOP; - d7 = +HEAPF32[i10 + 12 >> 2]; - d9 = +HEAPF32[i8 + 12 >> 2]; - d11 = +HEAPF32[i10 + 8 >> 2]; - d3 = +HEAPF32[i8 + 16 >> 2]; - d6 = +HEAPF32[i10 >> 2]; - d5 = d6 + (d7 * d9 - d11 * d3); - d12 = +HEAPF32[i10 + 4 >> 2]; - d3 = d9 * d11 + d7 * d3 + d12; - d9 = +HEAPF32[i8 + 20 >> 2]; - d4 = +HEAPF32[i8 + 24 >> 2]; - d6 = d6 + (d7 * d9 - d11 * d4); - d4 = d12 + (d11 * d9 + d7 * d4); - d7 = +HEAPF32[i8 + 8 >> 2]; - d9 = +((d5 < d6 ? d5 : d6) - d7); - d12 = +((d3 < d4 ? d3 : d4) - d7); - i10 = i1; - HEAPF32[i10 >> 2] = d9; - HEAPF32[i10 + 4 >> 2] = d12; - d5 = +(d7 + (d5 > d6 ? d5 : d6)); - d12 = +(d7 + (d3 > d4 ? d3 : d4)); - i10 = i1 + 8 | 0; - HEAPF32[i10 >> 2] = d5; - HEAPF32[i10 + 4 >> 2] = d12; - STACKTOP = i2; - return; -} -function __ZNK14b2PolygonShape9TestPointERK11b2TransformRK6b2Vec2(i2, i3, i6) { - i2 = i2 | 0; - i3 = i3 | 0; - i6 = i6 | 0; - var i1 = 0, d4 = 0.0, d5 = 0.0, i7 = 0, d8 = 0.0, d9 = 0.0, d10 = 0.0; - i1 = STACKTOP; - d8 = +HEAPF32[i6 >> 2] - +HEAPF32[i3 >> 2]; - d9 = +HEAPF32[i6 + 4 >> 2] - +HEAPF32[i3 + 4 >> 2]; - d10 = +HEAPF32[i3 + 12 >> 2]; - d5 = +HEAPF32[i3 + 8 >> 2]; - d4 = d8 * d10 + d9 * d5; - d5 = d10 * d9 - d8 * d5; - i3 = HEAP32[i2 + 148 >> 2] | 0; - if ((i3 | 0) > 0) { - i6 = 0; - } else { - i7 = 1; - STACKTOP = i1; - return i7 | 0; - } - while (1) { - i7 = i6 + 1 | 0; - if ((d4 - +HEAPF32[i2 + (i6 << 3) + 20 >> 2]) * +HEAPF32[i2 + (i6 << 3) + 84 >> 2] + (d5 - +HEAPF32[i2 + (i6 << 3) + 24 >> 2]) * +HEAPF32[i2 + (i6 << 3) + 88 >> 2] > 0.0) { - i3 = 0; - i2 = 4; - break; - } - if ((i7 | 0) < (i3 | 0)) { - i6 = i7; - } else { - i3 = 1; - i2 = 4; - break; - } - } - if ((i2 | 0) == 4) { - STACKTOP = i1; - return i3 | 0; - } - return 0; -} -function __ZN16b2StackAllocator8AllocateEi(i4, i5) { - i4 = i4 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - i3 = i4 + 102796 | 0; - i6 = HEAP32[i3 >> 2] | 0; - if ((i6 | 0) >= 32) { - ___assert_fail(3896, 3808, 38, 3936); - } - i1 = i4 + (i6 * 12 | 0) + 102412 | 0; - HEAP32[i4 + (i6 * 12 | 0) + 102416 >> 2] = i5; - i7 = i4 + 102400 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 + i5 | 0) > 102400) { - HEAP32[i1 >> 2] = __Z7b2Alloci(i5) | 0; - HEAP8[i4 + (i6 * 12 | 0) + 102420 | 0] = 1; - } else { - HEAP32[i1 >> 2] = i4 + i8; - HEAP8[i4 + (i6 * 12 | 0) + 102420 | 0] = 0; - HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + i5; - } - i6 = i4 + 102404 | 0; - i5 = (HEAP32[i6 >> 2] | 0) + i5 | 0; - HEAP32[i6 >> 2] = i5; - i4 = i4 + 102408 | 0; - i6 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = (i6 | 0) > (i5 | 0) ? i6 : i5; - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 1; - STACKTOP = i2; - return HEAP32[i1 >> 2] | 0; -} -function __ZN12b2BroadPhase13QueryCallbackEi(i5, i1) { - i5 = i5 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - i4 = i5 + 56 | 0; - i7 = HEAP32[i4 >> 2] | 0; - if ((i7 | 0) == (i1 | 0)) { - STACKTOP = i2; - return 1; - } - i3 = i5 + 52 | 0; - i6 = HEAP32[i3 >> 2] | 0; - i8 = i5 + 48 | 0; - i5 = i5 + 44 | 0; - if ((i6 | 0) == (HEAP32[i8 >> 2] | 0)) { - i7 = HEAP32[i5 >> 2] | 0; - HEAP32[i8 >> 2] = i6 << 1; - i6 = __Z7b2Alloci(i6 * 24 | 0) | 0; - HEAP32[i5 >> 2] = i6; - _memcpy(i6 | 0, i7 | 0, (HEAP32[i3 >> 2] | 0) * 12 | 0) | 0; - __Z6b2FreePv(i7); - i7 = HEAP32[i4 >> 2] | 0; - i6 = HEAP32[i3 >> 2] | 0; - } - i5 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 + (i6 * 12 | 0) >> 2] = (i7 | 0) > (i1 | 0) ? i1 : i7; - i4 = HEAP32[i4 >> 2] | 0; - HEAP32[i5 + ((HEAP32[i3 >> 2] | 0) * 12 | 0) + 4 >> 2] = (i4 | 0) < (i1 | 0) ? i1 : i4; - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 1; - STACKTOP = i2; - return 1; -} -function __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(i5, i4, i3, i1) { - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i2 = 0, i6 = 0; - i2 = STACKTOP; - if ((i5 | 0) != (HEAP32[i4 + 8 >> 2] | 0)) { - i6 = HEAP32[i5 + 8 >> 2] | 0; - FUNCTION_TABLE_viiii[HEAP32[(HEAP32[i6 >> 2] | 0) + 28 >> 2] & 15](i6, i4, i3, i1); - STACKTOP = i2; - return; - } - i5 = i4 + 16 | 0; - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) == 0) { - HEAP32[i5 >> 2] = i3; - HEAP32[i4 + 24 >> 2] = i1; - HEAP32[i4 + 36 >> 2] = 1; - STACKTOP = i2; - return; - } - if ((i6 | 0) != (i3 | 0)) { - i6 = i4 + 36 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 1; - HEAP32[i4 + 24 >> 2] = 2; - HEAP8[i4 + 54 | 0] = 1; - STACKTOP = i2; - return; - } - i3 = i4 + 24 | 0; - if ((HEAP32[i3 >> 2] | 0) != 2) { - STACKTOP = i2; - return; - } - HEAP32[i3 >> 2] = i1; - STACKTOP = i2; - return; -} -function __ZN6b2Body19SynchronizeFixturesEv(i5) { - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, d6 = 0.0, d7 = 0.0, d8 = 0.0, d9 = 0.0, d10 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i1; - d8 = +HEAPF32[i5 + 52 >> 2]; - d9 = +Math_sin(+d8); - HEAPF32[i3 + 8 >> 2] = d9; - d8 = +Math_cos(+d8); - HEAPF32[i3 + 12 >> 2] = d8; - d10 = +HEAPF32[i5 + 28 >> 2]; - d6 = +HEAPF32[i5 + 32 >> 2]; - d7 = +(+HEAPF32[i5 + 36 >> 2] - (d8 * d10 - d9 * d6)); - d6 = +(+HEAPF32[i5 + 40 >> 2] - (d10 * d9 + d8 * d6)); - i2 = i3; - HEAPF32[i2 >> 2] = d7; - HEAPF32[i2 + 4 >> 2] = d6; - i2 = (HEAP32[i5 + 88 >> 2] | 0) + 102872 | 0; - i4 = HEAP32[i5 + 100 >> 2] | 0; - if ((i4 | 0) == 0) { - STACKTOP = i1; - return; - } - i5 = i5 + 12 | 0; - do { - __ZN9b2Fixture11SynchronizeEP12b2BroadPhaseRK11b2TransformS4_(i4, i2, i3, i5); - i4 = HEAP32[i4 + 4 >> 2] | 0; - } while ((i4 | 0) != 0); - STACKTOP = i1; - return; -} -function __ZN13b2DynamicTreeC2Ev(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i4 = STACKTOP; - HEAP32[i1 >> 2] = -1; - i3 = i1 + 12 | 0; - HEAP32[i3 >> 2] = 16; - HEAP32[i1 + 8 >> 2] = 0; - i6 = __Z7b2Alloci(576) | 0; - i2 = i1 + 4 | 0; - HEAP32[i2 >> 2] = i6; - _memset(i6 | 0, 0, (HEAP32[i3 >> 2] | 0) * 36 | 0) | 0; - i6 = (HEAP32[i3 >> 2] | 0) + -1 | 0; - i2 = HEAP32[i2 >> 2] | 0; - if ((i6 | 0) > 0) { - i6 = 0; - while (1) { - i5 = i6 + 1 | 0; - HEAP32[i2 + (i6 * 36 | 0) + 20 >> 2] = i5; - HEAP32[i2 + (i6 * 36 | 0) + 32 >> 2] = -1; - i6 = (HEAP32[i3 >> 2] | 0) + -1 | 0; - if ((i5 | 0) < (i6 | 0)) { - i6 = i5; - } else { - break; - } - } - } - HEAP32[i2 + (i6 * 36 | 0) + 20 >> 2] = -1; - HEAP32[i2 + (((HEAP32[i3 >> 2] | 0) + -1 | 0) * 36 | 0) + 32 >> 2] = -1; - HEAP32[i1 + 16 >> 2] = 0; - HEAP32[i1 + 20 >> 2] = 0; - HEAP32[i1 + 24 >> 2] = 0; - STACKTOP = i4; - return; -} -function __Z7measurePl(i1, i9) { - i1 = i1 | 0; - i9 = i9 | 0; - var i2 = 0, i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0, i7 = 0, d8 = 0.0, i10 = 0, d11 = 0.0; - i2 = STACKTOP; - i3 = HEAP32[4] | 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + ((4 * i3 | 0) + 15 & -16) | 0; - i7 = (i3 | 0) > 0; - if (i7) { - i10 = 0; - d6 = 0.0; - do { - d8 = +(HEAP32[i9 + (i10 << 2) >> 2] | 0) / 1.0e6 * 1.0e3; - HEAPF32[i4 + (i10 << 2) >> 2] = d8; - d6 = d6 + d8; - i10 = i10 + 1 | 0; - } while ((i10 | 0) < (i3 | 0)); - d5 = +(i3 | 0); - d6 = d6 / d5; - HEAPF32[i1 >> 2] = d6; - if (i7) { - i7 = 0; - d8 = 0.0; - do { - d11 = +HEAPF32[i4 + (i7 << 2) >> 2] - d6; - d8 = d8 + d11 * d11; - i7 = i7 + 1 | 0; - } while ((i7 | 0) < (i3 | 0)); - } else { - d8 = 0.0; - } - } else { - d5 = +(i3 | 0); - HEAPF32[i1 >> 2] = 0.0 / d5; - d8 = 0.0; - } - HEAPF32[i1 + 4 >> 2] = +Math_sqrt(+(d8 / d5)); - STACKTOP = i2; - return; -} -function __ZN13b2DynamicTree11CreateProxyERK6b2AABBPv(i1, i3, i2) { - i1 = i1 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - var i4 = 0, i5 = 0, i6 = 0, d7 = 0.0, d8 = 0.0, i9 = 0; - i5 = STACKTOP; - i4 = __ZN13b2DynamicTree12AllocateNodeEv(i1) | 0; - i6 = i1 + 4 | 0; - d7 = +(+HEAPF32[i3 >> 2] + -.10000000149011612); - d8 = +(+HEAPF32[i3 + 4 >> 2] + -.10000000149011612); - i9 = (HEAP32[i6 >> 2] | 0) + (i4 * 36 | 0) | 0; - HEAPF32[i9 >> 2] = d7; - HEAPF32[i9 + 4 >> 2] = d8; - d8 = +(+HEAPF32[i3 + 8 >> 2] + .10000000149011612); - d7 = +(+HEAPF32[i3 + 12 >> 2] + .10000000149011612); - i3 = (HEAP32[i6 >> 2] | 0) + (i4 * 36 | 0) + 8 | 0; - HEAPF32[i3 >> 2] = d8; - HEAPF32[i3 + 4 >> 2] = d7; - HEAP32[(HEAP32[i6 >> 2] | 0) + (i4 * 36 | 0) + 16 >> 2] = i2; - HEAP32[(HEAP32[i6 >> 2] | 0) + (i4 * 36 | 0) + 32 >> 2] = 0; - __ZN13b2DynamicTree10InsertLeafEi(i1, i4); - STACKTOP = i5; - return i4 | 0; -} -function __ZN16b2BlockAllocatorC2Ev(i3) { - i3 = i3 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i4 = i3 + 8 | 0; - HEAP32[i4 >> 2] = 128; - HEAP32[i3 + 4 >> 2] = 0; - i5 = __Z7b2Alloci(1024) | 0; - HEAP32[i3 >> 2] = i5; - _memset(i5 | 0, 0, HEAP32[i4 >> 2] << 3 | 0) | 0; - i4 = i3 + 12 | 0; - i3 = i4 + 56 | 0; - do { - HEAP32[i4 >> 2] = 0; - i4 = i4 + 4 | 0; - } while ((i4 | 0) < (i3 | 0)); - if ((HEAP8[1280] | 0) == 0) { - i3 = 1; - i4 = 0; - } else { - STACKTOP = i2; - return; - } - do { - if ((i4 | 0) >= 14) { - i1 = 3; - break; - } - if ((i3 | 0) > (HEAP32[576 + (i4 << 2) >> 2] | 0)) { - i4 = i4 + 1 | 0; - HEAP8[632 + i3 | 0] = i4; - } else { - HEAP8[632 + i3 | 0] = i4; - } - i3 = i3 + 1 | 0; - } while ((i3 | 0) < 641); - if ((i1 | 0) == 3) { - ___assert_fail(1288, 1312, 73, 1352); - } - HEAP8[1280] = 1; - STACKTOP = i2; - return; -} -function __ZN24b2ChainAndPolygonContact8EvaluateEP10b2ManifoldRK11b2TransformS4_(i2, i4, i3, i1) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i6 = i5; - i7 = HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 12 >> 2] | 0; - HEAP32[i6 >> 2] = 240; - HEAP32[i6 + 4 >> 2] = 1; - HEAPF32[i6 + 8 >> 2] = .009999999776482582; - i8 = i6 + 28 | 0; - HEAP32[i8 + 0 >> 2] = 0; - HEAP32[i8 + 4 >> 2] = 0; - HEAP32[i8 + 8 >> 2] = 0; - HEAP32[i8 + 12 >> 2] = 0; - HEAP16[i8 + 16 >> 1] = 0; - __ZNK12b2ChainShape12GetChildEdgeEP11b2EdgeShapei(i7, i6, HEAP32[i2 + 56 >> 2] | 0); - __Z23b2CollideEdgeAndPolygonP10b2ManifoldPK11b2EdgeShapeRK11b2TransformPK14b2PolygonShapeS6_(i4, i6, i3, HEAP32[(HEAP32[i2 + 52 >> 2] | 0) + 12 >> 2] | 0, i1); - STACKTOP = i5; - return; -} -function __ZN23b2ChainAndCircleContact8EvaluateEP10b2ManifoldRK11b2TransformS4_(i2, i4, i3, i1) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i6 = i5; - i7 = HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 12 >> 2] | 0; - HEAP32[i6 >> 2] = 240; - HEAP32[i6 + 4 >> 2] = 1; - HEAPF32[i6 + 8 >> 2] = .009999999776482582; - i8 = i6 + 28 | 0; - HEAP32[i8 + 0 >> 2] = 0; - HEAP32[i8 + 4 >> 2] = 0; - HEAP32[i8 + 8 >> 2] = 0; - HEAP32[i8 + 12 >> 2] = 0; - HEAP16[i8 + 16 >> 1] = 0; - __ZNK12b2ChainShape12GetChildEdgeEP11b2EdgeShapei(i7, i6, HEAP32[i2 + 56 >> 2] | 0); - __Z22b2CollideEdgeAndCircleP10b2ManifoldPK11b2EdgeShapeRK11b2TransformPK13b2CircleShapeS6_(i4, i6, i3, HEAP32[(HEAP32[i2 + 52 >> 2] | 0) + 12 >> 2] | 0, i1); - STACKTOP = i5; - return; -} -function __ZN15b2ContactSolver13StoreImpulsesEv(i4) { - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i1 = STACKTOP; - i2 = HEAP32[i4 + 48 >> 2] | 0; - if ((i2 | 0) <= 0) { - STACKTOP = i1; - return; - } - i3 = HEAP32[i4 + 40 >> 2] | 0; - i4 = HEAP32[i4 + 44 >> 2] | 0; - i5 = 0; - do { - i6 = HEAP32[i4 + (HEAP32[i3 + (i5 * 152 | 0) + 148 >> 2] << 2) >> 2] | 0; - i7 = HEAP32[i3 + (i5 * 152 | 0) + 144 >> 2] | 0; - if ((i7 | 0) > 0) { - i8 = 0; - do { - HEAPF32[i6 + (i8 * 20 | 0) + 72 >> 2] = +HEAPF32[i3 + (i5 * 152 | 0) + (i8 * 36 | 0) + 16 >> 2]; - HEAPF32[i6 + (i8 * 20 | 0) + 76 >> 2] = +HEAPF32[i3 + (i5 * 152 | 0) + (i8 * 36 | 0) + 20 >> 2]; - i8 = i8 + 1 | 0; - } while ((i8 | 0) < (i7 | 0)); - } - i5 = i5 + 1 | 0; - } while ((i5 | 0) < (i2 | 0)); - STACKTOP = i1; - return; -} -function __ZN16b2StackAllocator4FreeEPv(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0; - i3 = STACKTOP; - i2 = i1 + 102796 | 0; - i4 = HEAP32[i2 >> 2] | 0; - if ((i4 | 0) <= 0) { - ___assert_fail(3952, 3808, 63, 3976); - } - i6 = i4 + -1 | 0; - if ((HEAP32[i1 + (i6 * 12 | 0) + 102412 >> 2] | 0) != (i5 | 0)) { - ___assert_fail(3984, 3808, 65, 3976); - } - if ((HEAP8[i1 + (i6 * 12 | 0) + 102420 | 0] | 0) == 0) { - i5 = i1 + (i6 * 12 | 0) + 102416 | 0; - i6 = i1 + 102400 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) - (HEAP32[i5 >> 2] | 0); - } else { - __Z6b2FreePv(i5); - i5 = i1 + (i6 * 12 | 0) + 102416 | 0; - i4 = HEAP32[i2 >> 2] | 0; - } - i6 = i1 + 102404 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) - (HEAP32[i5 >> 2] | 0); - HEAP32[i2 >> 2] = i4 + -1; - STACKTOP = i3; - return; -} -function __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(i5, i4, i3, i2) { - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - var i1 = 0, i6 = 0; - i1 = STACKTOP; - if ((HEAP32[i4 + 8 >> 2] | 0) != (i5 | 0)) { - STACKTOP = i1; - return; - } - i5 = i4 + 16 | 0; - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) == 0) { - HEAP32[i5 >> 2] = i3; - HEAP32[i4 + 24 >> 2] = i2; - HEAP32[i4 + 36 >> 2] = 1; - STACKTOP = i1; - return; - } - if ((i6 | 0) != (i3 | 0)) { - i6 = i4 + 36 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 1; - HEAP32[i4 + 24 >> 2] = 2; - HEAP8[i4 + 54 | 0] = 1; - STACKTOP = i1; - return; - } - i3 = i4 + 24 | 0; - if ((HEAP32[i3 >> 2] | 0) != 2) { - STACKTOP = i1; - return; - } - HEAP32[i3 >> 2] = i2; - STACKTOP = i1; - return; -} -function __ZN12b2BroadPhase11CreateProxyERK6b2AABBPv(i2, i4, i3) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i1 = 0, i5 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - i3 = __ZN13b2DynamicTree11CreateProxyERK6b2AABBPv(i2, i4, i3) | 0; - i4 = i2 + 28 | 0; - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1; - i4 = i2 + 40 | 0; - i5 = HEAP32[i4 >> 2] | 0; - i6 = i2 + 36 | 0; - i2 = i2 + 32 | 0; - if ((i5 | 0) == (HEAP32[i6 >> 2] | 0)) { - i7 = HEAP32[i2 >> 2] | 0; - HEAP32[i6 >> 2] = i5 << 1; - i5 = __Z7b2Alloci(i5 << 3) | 0; - HEAP32[i2 >> 2] = i5; - _memcpy(i5 | 0, i7 | 0, HEAP32[i4 >> 2] << 2 | 0) | 0; - __Z6b2FreePv(i7); - i5 = HEAP32[i4 >> 2] | 0; - } - HEAP32[(HEAP32[i2 >> 2] | 0) + (i5 << 2) >> 2] = i3; - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1; - STACKTOP = i1; - return i3 | 0; -} -function __ZN9b2ContactC2EP9b2FixtureiS1_i(i1, i4, i6, i3, i5) { - i1 = i1 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - i5 = i5 | 0; - var i2 = 0, i7 = 0, d8 = 0.0, d9 = 0.0; - i2 = STACKTOP; - HEAP32[i1 >> 2] = 4440; - HEAP32[i1 + 4 >> 2] = 4; - HEAP32[i1 + 48 >> 2] = i4; - HEAP32[i1 + 52 >> 2] = i3; - HEAP32[i1 + 56 >> 2] = i6; - HEAP32[i1 + 60 >> 2] = i5; - HEAP32[i1 + 124 >> 2] = 0; - HEAP32[i1 + 128 >> 2] = 0; - i5 = i4 + 16 | 0; - i6 = i1 + 8 | 0; - i7 = i6 + 40 | 0; - do { - HEAP32[i6 >> 2] = 0; - i6 = i6 + 4 | 0; - } while ((i6 | 0) < (i7 | 0)); - HEAPF32[i1 + 136 >> 2] = +Math_sqrt(+(+HEAPF32[i5 >> 2] * +HEAPF32[i3 + 16 >> 2])); - d8 = +HEAPF32[i4 + 20 >> 2]; - d9 = +HEAPF32[i3 + 20 >> 2]; - HEAPF32[i1 + 140 >> 2] = d8 > d9 ? d8 : d9; - STACKTOP = i2; - return; -} -function __ZN12b2BroadPhase9MoveProxyEiRK6b2AABBRK6b2Vec2(i3, i1, i5, i4) { - i3 = i3 | 0; - i1 = i1 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i2 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - if (!(__ZN13b2DynamicTree9MoveProxyEiRK6b2AABBRK6b2Vec2(i3, i1, i5, i4) | 0)) { - STACKTOP = i2; - return; - } - i4 = i3 + 40 | 0; - i5 = HEAP32[i4 >> 2] | 0; - i6 = i3 + 36 | 0; - i3 = i3 + 32 | 0; - if ((i5 | 0) == (HEAP32[i6 >> 2] | 0)) { - i7 = HEAP32[i3 >> 2] | 0; - HEAP32[i6 >> 2] = i5 << 1; - i5 = __Z7b2Alloci(i5 << 3) | 0; - HEAP32[i3 >> 2] = i5; - _memcpy(i5 | 0, i7 | 0, HEAP32[i4 >> 2] << 2 | 0) | 0; - __Z6b2FreePv(i7); - i5 = HEAP32[i4 >> 2] | 0; - } - HEAP32[(HEAP32[i3 >> 2] | 0) + (i5 << 2) >> 2] = i1; - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1; - STACKTOP = i2; - return; -} -function __ZN24b2ChainAndPolygonContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator(i1, i3, i4, i5, i6) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i2 = 0; - i2 = STACKTOP; - i6 = __ZN16b2BlockAllocator8AllocateEi(i6, 144) | 0; - if ((i6 | 0) == 0) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - __ZN9b2ContactC2EP9b2FixtureiS1_i(i6, i1, i3, i4, i5); - HEAP32[i6 >> 2] = 6032; - if ((HEAP32[(HEAP32[(HEAP32[i6 + 48 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) != 3) { - ___assert_fail(6048, 6096, 43, 6152); - } - if ((HEAP32[(HEAP32[(HEAP32[i6 + 52 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) == 2) { - STACKTOP = i2; - return i6 | 0; - } else { - ___assert_fail(6184, 6096, 44, 6152); - } - return 0; -} -function __ZN23b2ChainAndCircleContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator(i1, i3, i4, i5, i6) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i2 = 0; - i2 = STACKTOP; - i6 = __ZN16b2BlockAllocator8AllocateEi(i6, 144) | 0; - if ((i6 | 0) == 0) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - __ZN9b2ContactC2EP9b2FixtureiS1_i(i6, i1, i3, i4, i5); - HEAP32[i6 >> 2] = 5784; - if ((HEAP32[(HEAP32[(HEAP32[i6 + 48 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) != 3) { - ___assert_fail(5800, 5848, 43, 5904); - } - if ((HEAP32[(HEAP32[(HEAP32[i6 + 52 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) == 0) { - STACKTOP = i2; - return i6 | 0; - } else { - ___assert_fail(5928, 5848, 44, 5904); - } - return 0; -} -function __ZN25b2PolygonAndCircleContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator(i1, i4, i2, i5, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - i4 = STACKTOP; - i3 = __ZN16b2BlockAllocator8AllocateEi(i3, 144) | 0; - if ((i3 | 0) == 0) { - i5 = 0; - STACKTOP = i4; - return i5 | 0; - } - __ZN9b2ContactC2EP9b2FixtureiS1_i(i3, i1, 0, i2, 0); - HEAP32[i3 >> 2] = 4984; - if ((HEAP32[(HEAP32[(HEAP32[i3 + 48 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) != 2) { - ___assert_fail(5e3, 5048, 41, 5104); - } - if ((HEAP32[(HEAP32[(HEAP32[i3 + 52 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) == 0) { - i5 = i3; - STACKTOP = i4; - return i5 | 0; - } else { - ___assert_fail(5136, 5048, 42, 5104); - } - return 0; -} -function __ZN23b2EdgeAndPolygonContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator(i1, i4, i2, i5, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - i4 = STACKTOP; - i3 = __ZN16b2BlockAllocator8AllocateEi(i3, 144) | 0; - if ((i3 | 0) == 0) { - i5 = 0; - STACKTOP = i4; - return i5 | 0; - } - __ZN9b2ContactC2EP9b2FixtureiS1_i(i3, i1, 0, i2, 0); - HEAP32[i3 >> 2] = 4736; - if ((HEAP32[(HEAP32[(HEAP32[i3 + 48 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) != 1) { - ___assert_fail(4752, 4800, 41, 4856); - } - if ((HEAP32[(HEAP32[(HEAP32[i3 + 52 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) == 2) { - i5 = i3; - STACKTOP = i4; - return i5 | 0; - } else { - ___assert_fail(4880, 4800, 42, 4856); - } - return 0; -} -function __ZN22b2EdgeAndCircleContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator(i1, i4, i2, i5, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - i4 = STACKTOP; - i3 = __ZN16b2BlockAllocator8AllocateEi(i3, 144) | 0; - if ((i3 | 0) == 0) { - i5 = 0; - STACKTOP = i4; - return i5 | 0; - } - __ZN9b2ContactC2EP9b2FixtureiS1_i(i3, i1, 0, i2, 0); - HEAP32[i3 >> 2] = 4488; - if ((HEAP32[(HEAP32[(HEAP32[i3 + 48 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) != 1) { - ___assert_fail(4504, 4552, 41, 4608); - } - if ((HEAP32[(HEAP32[(HEAP32[i3 + 52 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) == 0) { - i5 = i3; - STACKTOP = i4; - return i5 | 0; - } else { - ___assert_fail(4632, 4552, 42, 4608); - } - return 0; -} -function __ZN14b2PolygonShape8SetAsBoxEff(i1, d3, d2) { - i1 = i1 | 0; - d3 = +d3; - d2 = +d2; - var d4 = 0.0, d5 = 0.0; - HEAP32[i1 + 148 >> 2] = 4; - d4 = -d3; - d5 = -d2; - HEAPF32[i1 + 20 >> 2] = d4; - HEAPF32[i1 + 24 >> 2] = d5; - HEAPF32[i1 + 28 >> 2] = d3; - HEAPF32[i1 + 32 >> 2] = d5; - HEAPF32[i1 + 36 >> 2] = d3; - HEAPF32[i1 + 40 >> 2] = d2; - HEAPF32[i1 + 44 >> 2] = d4; - HEAPF32[i1 + 48 >> 2] = d2; - HEAPF32[i1 + 84 >> 2] = 0.0; - HEAPF32[i1 + 88 >> 2] = -1.0; - HEAPF32[i1 + 92 >> 2] = 1.0; - HEAPF32[i1 + 96 >> 2] = 0.0; - HEAPF32[i1 + 100 >> 2] = 0.0; - HEAPF32[i1 + 104 >> 2] = 1.0; - HEAPF32[i1 + 108 >> 2] = -1.0; - HEAPF32[i1 + 112 >> 2] = 0.0; - HEAPF32[i1 + 12 >> 2] = 0.0; - HEAPF32[i1 + 16 >> 2] = 0.0; - return; -} -function __ZN16b2PolygonContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator(i1, i4, i2, i5, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - i4 = STACKTOP; - i3 = __ZN16b2BlockAllocator8AllocateEi(i3, 144) | 0; - if ((i3 | 0) == 0) { - i5 = 0; - STACKTOP = i4; - return i5 | 0; - } - __ZN9b2ContactC2EP9b2FixtureiS1_i(i3, i1, 0, i2, 0); - HEAP32[i3 >> 2] = 5240; - if ((HEAP32[(HEAP32[(HEAP32[i3 + 48 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) != 2) { - ___assert_fail(5256, 5304, 44, 5352); - } - if ((HEAP32[(HEAP32[(HEAP32[i3 + 52 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) == 2) { - i5 = i3; - STACKTOP = i4; - return i5 | 0; - } else { - ___assert_fail(5376, 5304, 45, 5352); - } - return 0; -} -function __ZN15b2CircleContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator(i1, i4, i2, i5, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - i4 = STACKTOP; - i3 = __ZN16b2BlockAllocator8AllocateEi(i3, 144) | 0; - if ((i3 | 0) == 0) { - i5 = 0; - STACKTOP = i4; - return i5 | 0; - } - __ZN9b2ContactC2EP9b2FixtureiS1_i(i3, i1, 0, i2, 0); - HEAP32[i3 >> 2] = 6288; - if ((HEAP32[(HEAP32[(HEAP32[i3 + 48 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) != 0) { - ___assert_fail(6304, 6352, 44, 6400); - } - if ((HEAP32[(HEAP32[(HEAP32[i3 + 52 >> 2] | 0) + 12 >> 2] | 0) + 4 >> 2] | 0) == 0) { - i5 = i3; - STACKTOP = i4; - return i5 | 0; - } else { - ___assert_fail(6416, 6352, 45, 6400); - } - return 0; -} -function __ZN7b2World10CreateBodyEPK9b2BodyDef(i1, i4) { - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0, i5 = 0; - i2 = STACKTOP; - if ((HEAP32[i1 + 102868 >> 2] & 2 | 0) != 0) { - ___assert_fail(2160, 2184, 109, 2216); - } - i3 = __ZN16b2BlockAllocator8AllocateEi(i1, 152) | 0; - if ((i3 | 0) == 0) { - i3 = 0; - } else { - __ZN6b2BodyC2EPK9b2BodyDefP7b2World(i3, i4, i1); - } - HEAP32[i3 + 92 >> 2] = 0; - i4 = i1 + 102952 | 0; - HEAP32[i3 + 96 >> 2] = HEAP32[i4 >> 2]; - i5 = HEAP32[i4 >> 2] | 0; - if ((i5 | 0) != 0) { - HEAP32[i5 + 92 >> 2] = i3; - } - HEAP32[i4 >> 2] = i3; - i5 = i1 + 102960 | 0; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 1; - STACKTOP = i2; - return i3 | 0; -} -function __ZNK6b2Body13ShouldCollideEPKS_(i4, i2) { - i4 = i4 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - if ((HEAP32[i4 >> 2] | 0) != 2 ? (HEAP32[i2 >> 2] | 0) != 2 : 0) { - i2 = 0; - } else { - i3 = 3; - } - L3 : do { - if ((i3 | 0) == 3) { - i3 = HEAP32[i4 + 108 >> 2] | 0; - if ((i3 | 0) == 0) { - i2 = 1; - } else { - while (1) { - if ((HEAP32[i3 >> 2] | 0) == (i2 | 0) ? (HEAP8[(HEAP32[i3 + 4 >> 2] | 0) + 61 | 0] | 0) == 0 : 0) { - i2 = 0; - break L3; - } - i3 = HEAP32[i3 + 12 >> 2] | 0; - if ((i3 | 0) == 0) { - i2 = 1; - break; - } - } - } - } - } while (0); - STACKTOP = i1; - return i2 | 0; -} -function __ZNK14b2PolygonShape5CloneEP16b2BlockAllocator(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - i3 = __ZN16b2BlockAllocator8AllocateEi(i3, 152) | 0; - if ((i3 | 0) == 0) { - i3 = 0; - } else { - HEAP32[i3 >> 2] = 504; - HEAP32[i3 + 4 >> 2] = 2; - HEAPF32[i3 + 8 >> 2] = .009999999776482582; - HEAP32[i3 + 148 >> 2] = 0; - HEAPF32[i3 + 12 >> 2] = 0.0; - HEAPF32[i3 + 16 >> 2] = 0.0; - } - i6 = i1 + 4 | 0; - i5 = HEAP32[i6 + 4 >> 2] | 0; - i4 = i3 + 4 | 0; - HEAP32[i4 >> 2] = HEAP32[i6 >> 2]; - HEAP32[i4 + 4 >> 2] = i5; - _memcpy(i3 + 12 | 0, i1 + 12 | 0, 140) | 0; - STACKTOP = i2; - return i3 | 0; -} -function _memcpy(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0; - i4 = i3 | 0; - if ((i3 & 3) == (i2 & 3)) { - while (i3 & 3) { - if ((i1 | 0) == 0) return i4 | 0; - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - while ((i1 | 0) >= 4) { - HEAP32[i3 >> 2] = HEAP32[i2 >> 2]; - i3 = i3 + 4 | 0; - i2 = i2 + 4 | 0; - i1 = i1 - 4 | 0; - } - } - while ((i1 | 0) > 0) { - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - return i4 | 0; -} -function __ZN7b2World16SetAllowSleepingEb(i2, i4) { - i2 = i2 | 0; - i4 = i4 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - i3 = i2 + 102976 | 0; - if ((i4 & 1 | 0) == (HEAPU8[i3] | 0 | 0)) { - STACKTOP = i1; - return; - } - HEAP8[i3] = i4 & 1; - if (i4) { - STACKTOP = i1; - return; - } - i2 = HEAP32[i2 + 102952 >> 2] | 0; - if ((i2 | 0) == 0) { - STACKTOP = i1; - return; - } - do { - i3 = i2 + 4 | 0; - i4 = HEAPU16[i3 >> 1] | 0; - if ((i4 & 2 | 0) == 0) { - HEAP16[i3 >> 1] = i4 | 2; - HEAPF32[i2 + 144 >> 2] = 0.0; - } - i2 = HEAP32[i2 + 96 >> 2] | 0; - } while ((i2 | 0) != 0); - STACKTOP = i1; - return; -} -function __ZN16b2BlockAllocator4FreeEPvi(i3, i1, i4) { - i3 = i3 | 0; - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((i4 | 0) == 0) { - STACKTOP = i2; - return; - } - if ((i4 | 0) <= 0) { - ___assert_fail(1376, 1312, 164, 1488); - } - if ((i4 | 0) > 640) { - __Z6b2FreePv(i1); - STACKTOP = i2; - return; - } - i4 = HEAP8[632 + i4 | 0] | 0; - if (!((i4 & 255) < 14)) { - ___assert_fail(1408, 1312, 173, 1488); - } - i4 = i3 + ((i4 & 255) << 2) + 12 | 0; - HEAP32[i1 >> 2] = HEAP32[i4 >> 2]; - HEAP32[i4 >> 2] = i1; - STACKTOP = i2; - return; -} -function __ZN15b2ContactFilter13ShouldCollideEP9b2FixtureS1_(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - i3 = STACKTOP; - i4 = HEAP16[i2 + 36 >> 1] | 0; - if (!(i4 << 16 >> 16 != (HEAP16[i1 + 36 >> 1] | 0) | i4 << 16 >> 16 == 0)) { - i4 = i4 << 16 >> 16 > 0; - STACKTOP = i3; - return i4 | 0; - } - if ((HEAP16[i1 + 32 >> 1] & HEAP16[i2 + 34 >> 1]) << 16 >> 16 == 0) { - i4 = 0; - STACKTOP = i3; - return i4 | 0; - } - i4 = (HEAP16[i1 + 34 >> 1] & HEAP16[i2 + 32 >> 1]) << 16 >> 16 != 0; - STACKTOP = i3; - return i4 | 0; -} -function _memset(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i4 = i4 & 255; - i7 = i1 & 3; - i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24; - i5 = i2 & ~3; - if (i7) { - i7 = i1 + 4 - i7 | 0; - while ((i1 | 0) < (i7 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i5 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i2 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} -function __ZN6b2Body13CreateFixtureEPK7b2Shapef(i1, i3, d2) { - i1 = i1 | 0; - i3 = i3 | 0; - d2 = +d2; - var i4 = 0, i5 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i5 = i4; - HEAP16[i5 + 22 >> 1] = 1; - HEAP16[i5 + 24 >> 1] = -1; - HEAP16[i5 + 26 >> 1] = 0; - HEAP32[i5 + 4 >> 2] = 0; - HEAPF32[i5 + 8 >> 2] = .20000000298023224; - HEAPF32[i5 + 12 >> 2] = 0.0; - HEAP8[i5 + 20 | 0] = 0; - HEAP32[i5 >> 2] = i3; - HEAPF32[i5 + 16 >> 2] = d2; - i3 = __ZN6b2Body13CreateFixtureEPK12b2FixtureDef(i1, i5) | 0; - STACKTOP = i4; - return i3 | 0; -} -function __Znwj(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - i2 = (i2 | 0) == 0 ? 1 : i2; - while (1) { - i3 = _malloc(i2) | 0; - if ((i3 | 0) != 0) { - i2 = 6; - break; - } - i3 = HEAP32[1914] | 0; - HEAP32[1914] = i3 + 0; - if ((i3 | 0) == 0) { - i2 = 5; - break; - } - FUNCTION_TABLE_v[i3 & 3](); - } - if ((i2 | 0) == 5) { - i3 = ___cxa_allocate_exception(4) | 0; - HEAP32[i3 >> 2] = 7672; - ___cxa_throw(i3 | 0, 7720, 30); - } else if ((i2 | 0) == 6) { - STACKTOP = i1; - return i3 | 0; - } - return 0; -} -function __ZN8b2IslandD2Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZN16b2StackAllocator4FreeEPv(HEAP32[i1 >> 2] | 0, HEAP32[i1 + 20 >> 2] | 0); - __ZN16b2StackAllocator4FreeEPv(HEAP32[i1 >> 2] | 0, HEAP32[i1 + 24 >> 2] | 0); - __ZN16b2StackAllocator4FreeEPv(HEAP32[i1 >> 2] | 0, HEAP32[i1 + 16 >> 2] | 0); - __ZN16b2StackAllocator4FreeEPv(HEAP32[i1 >> 2] | 0, HEAP32[i1 + 12 >> 2] | 0); - __ZN16b2StackAllocator4FreeEPv(HEAP32[i1 >> 2] | 0, HEAP32[i1 + 8 >> 2] | 0); - STACKTOP = i2; - return; -} -function __ZN16b2BlockAllocatorD2Ev(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0; - i1 = STACKTOP; - i3 = i2 + 4 | 0; - i4 = HEAP32[i2 >> 2] | 0; - if ((HEAP32[i3 >> 2] | 0) > 0) { - i5 = 0; - } else { - i5 = i4; - __Z6b2FreePv(i5); - STACKTOP = i1; - return; - } - do { - __Z6b2FreePv(HEAP32[i4 + (i5 << 3) + 4 >> 2] | 0); - i5 = i5 + 1 | 0; - i4 = HEAP32[i2 >> 2] | 0; - } while ((i5 | 0) < (HEAP32[i3 >> 2] | 0)); - __Z6b2FreePv(i4); - STACKTOP = i1; - return; -} -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; - HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0]; - HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0]; - HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0]; - HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0]; -} -function __ZNK11b2EdgeShape11ComputeMassEP10b2MassDataf(i2, i1, d3) { - i2 = i2 | 0; - i1 = i1 | 0; - d3 = +d3; - var i4 = 0, d5 = 0.0; - i4 = STACKTOP; - HEAPF32[i1 >> 2] = 0.0; - d5 = +((+HEAPF32[i2 + 12 >> 2] + +HEAPF32[i2 + 20 >> 2]) * .5); - d3 = +((+HEAPF32[i2 + 16 >> 2] + +HEAPF32[i2 + 24 >> 2]) * .5); - i2 = i1 + 4 | 0; - HEAPF32[i2 >> 2] = d5; - HEAPF32[i2 + 4 >> 2] = d3; - HEAPF32[i1 + 12 >> 2] = 0.0; - STACKTOP = i4; - return; -} -function __ZN11b2EdgeShape3SetERK6b2Vec2S2_(i1, i3, i2) { - i1 = i1 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - var i4 = 0, i5 = 0; - i5 = i3; - i3 = HEAP32[i5 + 4 >> 2] | 0; - i4 = i1 + 12 | 0; - HEAP32[i4 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i4 + 4 >> 2] = i3; - i4 = i2; - i2 = HEAP32[i4 + 4 >> 2] | 0; - i3 = i1 + 20 | 0; - HEAP32[i3 >> 2] = HEAP32[i4 >> 2]; - HEAP32[i3 + 4 >> 2] = i2; - HEAP8[i1 + 44 | 0] = 0; - HEAP8[i1 + 45 | 0] = 0; - return; -} -function __ZN25b2PolygonAndCircleContact8EvaluateEP10b2ManifoldRK11b2TransformS4_(i2, i4, i3, i1) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i5 = 0; - i5 = STACKTOP; - __Z25b2CollidePolygonAndCircleP10b2ManifoldPK14b2PolygonShapeRK11b2TransformPK13b2CircleShapeS6_(i4, HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 12 >> 2] | 0, i3, HEAP32[(HEAP32[i2 + 52 >> 2] | 0) + 12 >> 2] | 0, i1); - STACKTOP = i5; - return; -} -function __ZN23b2EdgeAndPolygonContact8EvaluateEP10b2ManifoldRK11b2TransformS4_(i2, i4, i3, i1) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i5 = 0; - i5 = STACKTOP; - __Z23b2CollideEdgeAndPolygonP10b2ManifoldPK11b2EdgeShapeRK11b2TransformPK14b2PolygonShapeS6_(i4, HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 12 >> 2] | 0, i3, HEAP32[(HEAP32[i2 + 52 >> 2] | 0) + 12 >> 2] | 0, i1); - STACKTOP = i5; - return; -} -function __ZN22b2EdgeAndCircleContact8EvaluateEP10b2ManifoldRK11b2TransformS4_(i2, i4, i3, i1) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i5 = 0; - i5 = STACKTOP; - __Z22b2CollideEdgeAndCircleP10b2ManifoldPK11b2EdgeShapeRK11b2TransformPK13b2CircleShapeS6_(i4, HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 12 >> 2] | 0, i3, HEAP32[(HEAP32[i2 + 52 >> 2] | 0) + 12 >> 2] | 0, i1); - STACKTOP = i5; - return; -} -function __Z23b2CollideEdgeAndPolygonP10b2ManifoldPK11b2EdgeShapeRK11b2TransformPK14b2PolygonShapeS6_(i5, i4, i3, i2, i1) { - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i6 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 256 | 0; - __ZN12b2EPCollider7CollideEP10b2ManifoldPK11b2EdgeShapeRK11b2TransformPK14b2PolygonShapeS7_(i6, i5, i4, i3, i2, i1); - STACKTOP = i6; - return; -} -function __ZN16b2PolygonContact8EvaluateEP10b2ManifoldRK11b2TransformS4_(i2, i4, i3, i1) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i5 = 0; - i5 = STACKTOP; - __Z17b2CollidePolygonsP10b2ManifoldPK14b2PolygonShapeRK11b2TransformS3_S6_(i4, HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 12 >> 2] | 0, i3, HEAP32[(HEAP32[i2 + 52 >> 2] | 0) + 12 >> 2] | 0, i1); - STACKTOP = i5; - return; -} -function __ZN15b2CircleContact8EvaluateEP10b2ManifoldRK11b2TransformS4_(i2, i4, i3, i1) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i5 = 0; - i5 = STACKTOP; - __Z16b2CollideCirclesP10b2ManifoldPK13b2CircleShapeRK11b2TransformS3_S6_(i4, HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 12 >> 2] | 0, i3, HEAP32[(HEAP32[i2 + 52 >> 2] | 0) + 12 >> 2] | 0, i1); - STACKTOP = i5; - return; -} -function __Z14b2PairLessThanRK6b2PairS1_(i2, i5) { - i2 = i2 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0, i4 = 0; - i1 = STACKTOP; - i4 = HEAP32[i2 >> 2] | 0; - i3 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) >= (i3 | 0)) { - if ((i4 | 0) == (i3 | 0)) { - i2 = (HEAP32[i2 + 4 >> 2] | 0) < (HEAP32[i5 + 4 >> 2] | 0); - } else { - i2 = 0; - } - } else { - i2 = 1; - } - STACKTOP = i1; - return i2 | 0; -} -function __ZN9b2FixtureC2Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - HEAP16[i1 + 32 >> 1] = 1; - HEAP16[i1 + 34 >> 1] = -1; - HEAP16[i1 + 36 >> 1] = 0; - HEAP32[i1 + 40 >> 2] = 0; - HEAP32[i1 + 24 >> 2] = 0; - HEAP32[i1 + 28 >> 2] = 0; - HEAP32[i1 + 0 >> 2] = 0; - HEAP32[i1 + 4 >> 2] = 0; - HEAP32[i1 + 8 >> 2] = 0; - HEAP32[i1 + 12 >> 2] = 0; - STACKTOP = i2; - return; -} -function __ZN12b2BroadPhaseC2Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZN13b2DynamicTreeC2Ev(i1); - HEAP32[i1 + 28 >> 2] = 0; - HEAP32[i1 + 48 >> 2] = 16; - HEAP32[i1 + 52 >> 2] = 0; - HEAP32[i1 + 44 >> 2] = __Z7b2Alloci(192) | 0; - HEAP32[i1 + 36 >> 2] = 16; - HEAP32[i1 + 40 >> 2] = 0; - HEAP32[i1 + 32 >> 2] = __Z7b2Alloci(64) | 0; - STACKTOP = i2; - return; -} -function __ZN16b2StackAllocatorD2Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((HEAP32[i1 + 102400 >> 2] | 0) != 0) { - ___assert_fail(3792, 3808, 32, 3848); - } - if ((HEAP32[i1 + 102796 >> 2] | 0) == 0) { - STACKTOP = i2; - return; - } else { - ___assert_fail(3872, 3808, 33, 3848); - } -} -function __ZN15b2ContactSolverD2Ev(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = i1 + 32 | 0; - __ZN16b2StackAllocator4FreeEPv(HEAP32[i3 >> 2] | 0, HEAP32[i1 + 40 >> 2] | 0); - __ZN16b2StackAllocator4FreeEPv(HEAP32[i3 >> 2] | 0, HEAP32[i1 + 36 >> 2] | 0); - STACKTOP = i2; - return; -} -function __ZN25b2PolygonAndCircleContact7DestroyEP9b2ContactP16b2BlockAllocator(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0; - i3 = STACKTOP; - FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 31](i1); - __ZN16b2BlockAllocator4FreeEPvi(i2, i1, 144); - STACKTOP = i3; - return; -} -function __ZN24b2ChainAndPolygonContact7DestroyEP9b2ContactP16b2BlockAllocator(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0; - i3 = STACKTOP; - FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 31](i1); - __ZN16b2BlockAllocator4FreeEPvi(i2, i1, 144); - STACKTOP = i3; - return; -} -function __ZN23b2EdgeAndPolygonContact7DestroyEP9b2ContactP16b2BlockAllocator(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0; - i3 = STACKTOP; - FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 31](i1); - __ZN16b2BlockAllocator4FreeEPvi(i2, i1, 144); - STACKTOP = i3; - return; -} -function __ZN23b2ChainAndCircleContact7DestroyEP9b2ContactP16b2BlockAllocator(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0; - i3 = STACKTOP; - FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 31](i1); - __ZN16b2BlockAllocator4FreeEPvi(i2, i1, 144); - STACKTOP = i3; - return; -} -function __ZN22b2EdgeAndCircleContact7DestroyEP9b2ContactP16b2BlockAllocator(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0; - i3 = STACKTOP; - FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 31](i1); - __ZN16b2BlockAllocator4FreeEPvi(i2, i1, 144); - STACKTOP = i3; - return; -} -function __ZN16b2ContactManagerC2Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZN12b2BroadPhaseC2Ev(i1); - HEAP32[i1 + 60 >> 2] = 0; - HEAP32[i1 + 64 >> 2] = 0; - HEAP32[i1 + 68 >> 2] = 1888; - HEAP32[i1 + 72 >> 2] = 1896; - HEAP32[i1 + 76 >> 2] = 0; - STACKTOP = i2; - return; -} -function __ZN16b2PolygonContact7DestroyEP9b2ContactP16b2BlockAllocator(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0; - i3 = STACKTOP; - FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 31](i1); - __ZN16b2BlockAllocator4FreeEPvi(i2, i1, 144); - STACKTOP = i3; - return; -} -function __ZN15b2CircleContact7DestroyEP9b2ContactP16b2BlockAllocator(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0; - i3 = STACKTOP; - FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 31](i1); - __ZN16b2BlockAllocator4FreeEPvi(i2, i1, 144); - STACKTOP = i3; - return; -} -function dynCall_viiiiii(i7, i6, i5, i4, i3, i2, i1) { - i7 = i7 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_viiiiii[i7 & 3](i6 | 0, i5 | 0, i4 | 0, i3 | 0, i2 | 0, i1 | 0); -} -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; -} -function dynCall_iiiiii(i6, i5, i4, i3, i2, i1) { - i6 = i6 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_iiiiii[i6 & 15](i5 | 0, i4 | 0, i3 | 0, i2 | 0, i1 | 0) | 0; -} -function dynCall_viiiii(i6, i5, i4, i3, i2, i1) { - i6 = i6 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_viiiii[i6 & 3](i5 | 0, i4 | 0, i3 | 0, i2 | 0, i1 | 0); -} -function __ZN16b2ContactManager15FindNewContactsEv(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZN12b2BroadPhase11UpdatePairsI16b2ContactManagerEEvPT_(i1, i1); - STACKTOP = i2; - return; -} -function __ZN16b2StackAllocatorC2Ev(i1) { - i1 = i1 | 0; - HEAP32[i1 + 102400 >> 2] = 0; - HEAP32[i1 + 102404 >> 2] = 0; - HEAP32[i1 + 102408 >> 2] = 0; - HEAP32[i1 + 102796 >> 2] = 0; - return; -} -function dynCall_viiii(i5, i4, i3, i2, i1) { - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_viiii[i5 & 15](i4 | 0, i3 | 0, i2 | 0, i1 | 0); -} -function dynCall_iiii(i4, i3, i2, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_iiii[i4 & 7](i3 | 0, i2 | 0, i1 | 0) | 0; -} -function dynCall_viii(i4, i3, i2, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_viii[i4 & 3](i3 | 0, i2 | 0, i1 | 0); -} -function __ZNSt9bad_allocD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZNSt9exceptionD2Ev(i1 | 0); - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 7 & -8; - return i2 | 0; -} -function __ZN13b2DynamicTreeD2Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __Z6b2FreePv(HEAP32[i1 + 4 >> 2] | 0); - STACKTOP = i2; - return; -} -function dynCall_viid(i4, i3, i2, d1) { - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - d1 = +d1; - FUNCTION_TABLE_viid[i4 & 3](i3 | 0, i2 | 0, +d1); -} -function __ZN17b2ContactListener9PostSolveEP9b2ContactPK16b2ContactImpulse(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - return; -} -function __ZN10__cxxabiv120__si_class_type_infoD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZN10__cxxabiv117__class_type_infoD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZNSt9bad_allocD2Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZNSt9exceptionD2Ev(i1 | 0); - STACKTOP = i2; - return; -} -function dynCall_iii(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_iii[i3 & 3](i2 | 0, i1 | 0) | 0; -} -function b8(i1, i2, i3, i4, i5, i6) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - abort(8); -} -function __ZN25b2PolygonAndCircleContactD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZN17b2ContactListener8PreSolveEP9b2ContactPK10b2Manifold(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - return; -} -function __ZN24b2ChainAndPolygonContactD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZN23b2EdgeAndPolygonContactD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZN23b2ChainAndCircleContactD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZNK11b2EdgeShape9TestPointERK11b2TransformRK6b2Vec2(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - return 0; -} -function __ZN22b2EdgeAndCircleContactD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZdlPv(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((i1 | 0) != 0) { - _free(i1); - } - STACKTOP = i2; - return; -} -function b10(i1, i2, i3, i4, i5) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - abort(10); - return 0; -} -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1; - while (HEAP8[i2] | 0) { - i2 = i2 + 1 | 0; - } - return i2 - i1 | 0; -} -function __Z7b2Alloci(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = _malloc(i1) | 0; - STACKTOP = i2; - return i1 | 0; -} -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if ((__THREW__ | 0) == 0) { - __THREW__ = i1; - threwValue = i2; - } -} -function __ZN17b2ContactListenerD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZN16b2PolygonContactD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function dynCall_vii(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_vii[i3 & 15](i2 | 0, i1 | 0); -} -function __ZN15b2ContactFilterD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZN15b2CircleContactD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZN14b2PolygonShapeD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __Znaj(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = __Znwj(i1) | 0; - STACKTOP = i2; - return i1 | 0; -} -function __ZN11b2EdgeShapeD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function __ZN9b2ContactD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function b1(i1, i2, i3, i4, i5) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - abort(1); -} -function __Z6b2FreePv(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _free(i1); - STACKTOP = i2; - return; -} -function ___clang_call_terminate(i1) { - i1 = i1 | 0; - ___cxa_begin_catch(i1 | 0) | 0; - __ZSt9terminatev(); -} -function __ZN17b2ContactListener12BeginContactEP9b2Contact(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - return; -} -function dynCall_ii(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_ii[i2 & 3](i1 | 0) | 0; -} -function __ZN17b2ContactListener10EndContactEP9b2Contact(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - return; -} -function b11(i1, i2, i3, i4) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - abort(11); -} -function dynCall_vi(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_vi[i2 & 31](i1 | 0); -} -function b0(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - abort(0); - return 0; -} -function __ZNK10__cxxabiv116__shim_type_info5noop2Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZNK10__cxxabiv116__shim_type_info5noop1Ev(i1) { - i1 = i1 | 0; - return; -} -function b5(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - abort(5); -} -function __ZNK14b2PolygonShape13GetChildCountEv(i1) { - i1 = i1 | 0; - return 1; -} -function __ZN10__cxxabiv116__shim_type_infoD2Ev(i1) { - i1 = i1 | 0; - return; -} -function b7(i1, i2, d3) { - i1 = i1 | 0; - i2 = i2 | 0; - d3 = +d3; - abort(7); -} -function __ZNK11b2EdgeShape13GetChildCountEv(i1) { - i1 = i1 | 0; - return 1; -} -function __ZNK7b2Timer15GetMillisecondsEv(i1) { - i1 = i1 | 0; - return 0.0; -} -function __ZN25b2PolygonAndCircleContactD1Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZN24b2ChainAndPolygonContactD1Ev(i1) { - i1 = i1 | 0; - return; -} -function b9(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - abort(9); - return 0; -} -function __ZN23b2EdgeAndPolygonContactD1Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZN23b2ChainAndCircleContactD1Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZN22b2EdgeAndCircleContactD1Ev(i1) { - i1 = i1 | 0; - return; -} -function dynCall_v(i1) { - i1 = i1 | 0; - FUNCTION_TABLE_v[i1 & 3](); -} -function __ZNKSt9bad_alloc4whatEv(i1) { - i1 = i1 | 0; - return 7688; -} -function ___cxa_pure_virtual__wrapper() { - ___cxa_pure_virtual(); -} -function __ZN17b2ContactListenerD1Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZN16b2PolygonContactD1Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZN15b2ContactFilterD1Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZN15b2CircleContactD1Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZN14b2PolygonShapeD1Ev(i1) { - i1 = i1 | 0; - return; -} -function b3(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - abort(3); -} -function runPostSets() { - HEAP32[1932] = __ZTISt9exception; -} -function __ZN11b2EdgeShapeD1Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZNSt9type_infoD2Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZN7b2Timer5ResetEv(i1) { - i1 = i1 | 0; - return; -} -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} -function setTempRet9(i1) { - i1 = i1 | 0; - tempRet9 = i1; -} -function setTempRet8(i1) { - i1 = i1 | 0; - tempRet8 = i1; -} -function setTempRet7(i1) { - i1 = i1 | 0; - tempRet7 = i1; -} -function setTempRet6(i1) { - i1 = i1 | 0; - tempRet6 = i1; -} -function setTempRet5(i1) { - i1 = i1 | 0; - tempRet5 = i1; -} -function setTempRet4(i1) { - i1 = i1 | 0; - tempRet4 = i1; -} -function setTempRet3(i1) { - i1 = i1 | 0; - tempRet3 = i1; -} -function setTempRet2(i1) { - i1 = i1 | 0; - tempRet2 = i1; -} -function setTempRet1(i1) { - i1 = i1 | 0; - tempRet1 = i1; -} -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} -function __ZN9b2ContactD1Ev(i1) { - i1 = i1 | 0; - return; -} -function __ZN7b2TimerC2Ev(i1) { - i1 = i1 | 0; - return; -} -function b4(i1) { - i1 = i1 | 0; - abort(4); - return 0; -} -function stackSave() { - return STACKTOP | 0; -} -function b2(i1) { - i1 = i1 | 0; - abort(2); -} -function b6() { - abort(6); -} - -// EMSCRIPTEN_END_FUNCS - var FUNCTION_TABLE_iiii = [b0,__ZNK11b2EdgeShape9TestPointERK11b2TransformRK6b2Vec2,__ZNK14b2PolygonShape9TestPointERK11b2TransformRK6b2Vec2,__ZN15b2ContactFilter13ShouldCollideEP9b2FixtureS1_,__ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv,b0,b0,b0]; - var FUNCTION_TABLE_viiiii = [b1,__ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,__ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,b1]; - var FUNCTION_TABLE_vi = [b2,__ZN11b2EdgeShapeD1Ev,__ZN11b2EdgeShapeD0Ev,__ZN14b2PolygonShapeD1Ev,__ZN14b2PolygonShapeD0Ev,__ZN17b2ContactListenerD1Ev,__ZN17b2ContactListenerD0Ev,__ZN15b2ContactFilterD1Ev,__ZN15b2ContactFilterD0Ev,__ZN9b2ContactD1Ev,__ZN9b2ContactD0Ev,__ZN22b2EdgeAndCircleContactD1Ev,__ZN22b2EdgeAndCircleContactD0Ev,__ZN23b2EdgeAndPolygonContactD1Ev,__ZN23b2EdgeAndPolygonContactD0Ev,__ZN25b2PolygonAndCircleContactD1Ev,__ZN25b2PolygonAndCircleContactD0Ev,__ZN16b2PolygonContactD1Ev,__ZN16b2PolygonContactD0Ev,__ZN23b2ChainAndCircleContactD1Ev,__ZN23b2ChainAndCircleContactD0Ev,__ZN24b2ChainAndPolygonContactD1Ev,__ZN24b2ChainAndPolygonContactD0Ev,__ZN15b2CircleContactD1Ev,__ZN15b2CircleContactD0Ev,__ZN10__cxxabiv116__shim_type_infoD2Ev,__ZN10__cxxabiv117__class_type_infoD0Ev,__ZNK10__cxxabiv116__shim_type_info5noop1Ev,__ZNK10__cxxabiv116__shim_type_info5noop2Ev - ,__ZN10__cxxabiv120__si_class_type_infoD0Ev,__ZNSt9bad_allocD2Ev,__ZNSt9bad_allocD0Ev]; - var FUNCTION_TABLE_vii = [b3,__ZN17b2ContactListener12BeginContactEP9b2Contact,__ZN17b2ContactListener10EndContactEP9b2Contact,__ZN15b2CircleContact7DestroyEP9b2ContactP16b2BlockAllocator,__ZN25b2PolygonAndCircleContact7DestroyEP9b2ContactP16b2BlockAllocator,__ZN16b2PolygonContact7DestroyEP9b2ContactP16b2BlockAllocator,__ZN22b2EdgeAndCircleContact7DestroyEP9b2ContactP16b2BlockAllocator,__ZN23b2EdgeAndPolygonContact7DestroyEP9b2ContactP16b2BlockAllocator,__ZN23b2ChainAndCircleContact7DestroyEP9b2ContactP16b2BlockAllocator,__ZN24b2ChainAndPolygonContact7DestroyEP9b2ContactP16b2BlockAllocator,b3,b3,b3,b3,b3,b3]; - var FUNCTION_TABLE_ii = [b4,__ZNK11b2EdgeShape13GetChildCountEv,__ZNK14b2PolygonShape13GetChildCountEv,__ZNKSt9bad_alloc4whatEv]; - var FUNCTION_TABLE_viii = [b5,__ZN17b2ContactListener8PreSolveEP9b2ContactPK10b2Manifold,__ZN17b2ContactListener9PostSolveEP9b2ContactPK16b2ContactImpulse,b5]; - var FUNCTION_TABLE_v = [b6,___cxa_pure_virtual__wrapper,__Z4iterv,b6]; - var FUNCTION_TABLE_viid = [b7,__ZNK11b2EdgeShape11ComputeMassEP10b2MassDataf,__ZNK14b2PolygonShape11ComputeMassEP10b2MassDataf,b7]; - var FUNCTION_TABLE_viiiiii = [b8,__ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,__ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,b8]; - var FUNCTION_TABLE_iii = [b9,__ZNK11b2EdgeShape5CloneEP16b2BlockAllocator,__ZNK14b2PolygonShape5CloneEP16b2BlockAllocator,__Z14b2PairLessThanRK6b2PairS1_]; - var FUNCTION_TABLE_iiiiii = [b10,__ZNK11b2EdgeShape7RayCastEP15b2RayCastOutputRK14b2RayCastInputRK11b2Transformi,__ZNK14b2PolygonShape7RayCastEP15b2RayCastOutputRK14b2RayCastInputRK11b2Transformi,__ZN15b2CircleContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator,__ZN25b2PolygonAndCircleContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator,__ZN16b2PolygonContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator,__ZN22b2EdgeAndCircleContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator,__ZN23b2EdgeAndPolygonContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator,__ZN23b2ChainAndCircleContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator,__ZN24b2ChainAndPolygonContact6CreateEP9b2FixtureiS1_iP16b2BlockAllocator,b10,b10,b10,b10,b10,b10]; - var FUNCTION_TABLE_viiii = [b11,__ZNK11b2EdgeShape11ComputeAABBEP6b2AABBRK11b2Transformi,__ZNK14b2PolygonShape11ComputeAABBEP6b2AABBRK11b2Transformi,__ZN22b2EdgeAndCircleContact8EvaluateEP10b2ManifoldRK11b2TransformS4_,__ZN23b2EdgeAndPolygonContact8EvaluateEP10b2ManifoldRK11b2TransformS4_,__ZN25b2PolygonAndCircleContact8EvaluateEP10b2ManifoldRK11b2TransformS4_,__ZN16b2PolygonContact8EvaluateEP10b2ManifoldRK11b2TransformS4_,__ZN23b2ChainAndCircleContact8EvaluateEP10b2ManifoldRK11b2TransformS4_,__ZN24b2ChainAndPolygonContact8EvaluateEP10b2ManifoldRK11b2TransformS4_,__ZN15b2CircleContact8EvaluateEP10b2ManifoldRK11b2TransformS4_,__ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,__ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,b11,b11,b11,b11]; - - return { _strlen: _strlen, _free: _free, _main: _main, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9, dynCall_iiii: dynCall_iiii, dynCall_viiiii: dynCall_viiiii, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viii: dynCall_viii, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiiiii: dynCall_viiiiii, dynCall_iii: dynCall_iii, dynCall_iiiiii: dynCall_iiiiii, dynCall_viiii: dynCall_viiii }; -}) -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "invoke_iiii": invoke_iiii, "invoke_viiiii": invoke_viiiii, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viii": invoke_viii, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiiiii": invoke_viiiiii, "invoke_iii": invoke_iii, "invoke_iiiiii": invoke_iiiiii, "invoke_viiii": invoke_viiii, "___cxa_throw": ___cxa_throw, "_emscripten_run_script": _emscripten_run_script, "_cosf": _cosf, "_send": _send, "__ZSt9terminatev": __ZSt9terminatev, "__reallyNegative": __reallyNegative, "___cxa_is_number_type": ___cxa_is_number_type, "___assert_fail": ___assert_fail, "___cxa_allocate_exception": ___cxa_allocate_exception, "___cxa_find_matching_catch": ___cxa_find_matching_catch, "_fflush": _fflush, "_pwrite": _pwrite, "___setErrNo": ___setErrNo, "_sbrk": _sbrk, "___cxa_begin_catch": ___cxa_begin_catch, "_sinf": _sinf, "_fileno": _fileno, "___resumeException": ___resumeException, "__ZSt18uncaught_exceptionv": __ZSt18uncaught_exceptionv, "_sysconf": _sysconf, "_clock": _clock, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_puts": _puts, "_mkport": _mkport, "_floorf": _floorf, "_sqrtf": _sqrtf, "_write": _write, "_emscripten_set_main_loop": _emscripten_set_main_loop, "___errno_location": ___errno_location, "__ZNSt9exceptionD2Ev": __ZNSt9exceptionD2Ev, "_printf": _printf, "___cxa_does_inherit": ___cxa_does_inherit, "__exit": __exit, "_fputc": _fputc, "_abort": _abort, "_fwrite": _fwrite, "_time": _time, "_fprintf": _fprintf, "_emscripten_cancel_main_loop": _emscripten_cancel_main_loop, "__formatString": __formatString, "_fputs": _fputs, "_exit": _exit, "___cxa_pure_virtual": ___cxa_pure_virtual, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity, "__ZTISt9exception": __ZTISt9exception }, buffer); -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _free = Module["_free"] = asm["_free"]; -var _main = Module["_main"] = asm["_main"]; -var _memset = Module["_memset"] = asm["_memset"]; -var _malloc = Module["_malloc"] = asm["_malloc"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; -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_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_viid = Module["dynCall_viid"] = asm["dynCall_viid"]; -var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"]; -var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"]; -var dynCall_iiiiii = Module["dynCall_iiiiii"] = asm["dynCall_iiiiii"]; -var dynCall_viiii = Module["dynCall_viiii"] = asm["dynCall_viiii"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included -var i64Math = null; - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - var data = Module['readBinary'](memoryInitializer); - HEAPU8.set(data, STATIC_BASE); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - HEAPU8.set(data, STATIC_BASE); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run([].concat(Module["arguments"])); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - 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("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; - - throw 'abort() at ' + stackTrace() + extra; -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - - -run([].concat(Module["arguments"])); diff --git a/implementation-contributed/v8/mjsunit/asm/embenchen/copy.js b/implementation-contributed/v8/mjsunit/asm/embenchen/copy.js deleted file mode 100644 index bf8d1777f3f..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/embenchen/copy.js +++ /dev/null @@ -1,5976 +0,0 @@ -var EXPECTED_OUTPUT = 'sum:8930\n'; -var Module = { - arguments: [1], - print: function(x) {Module.printBuffer += x + '\n';}, - preRun: [function() {Module.printBuffer = ''}], - postRun: [function() { - assertEquals(EXPECTED_OUTPUT, Module.printBuffer); - }], -}; -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - window['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependant on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - var source = Pointer_stringify(code); - if (source[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (source.indexOf('"', 1) === source.length-1) { - source = source.substr(1, source.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - try { - var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node - } catch(e) { - Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'); - throw e; - } - return Runtime.asmConstCache[code] = evalled; - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - /* TODO: use TextEncoder when present, - var encoder = new TextEncoder(); - encoder['encoding'] = "utf-8"; - var utf8Array = encoder['encode'](aMsg.data); - */ - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - getCompilerSetting: function (name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - var subs = []; - var first = true; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - if (rawList) { - if (ret) { - list.push(ret + '?'); - } - return list; - } else { - return ret + flushList(); - } - } - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'JS engine does not provide full typed array support'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === - - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(27); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([101,114,114,111,114,58,32,37,100,92,110,0,0,0,0,0,115,117,109,58,37,100,10,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - function _malloc(bytes) { - /* Over-allocate to make sure it is byte-aligned by 8. - * This will leak memory, but this is only the dummy - * implementation (replaced by dlmalloc normally) so - * not an issue. - */ - var ptr = Runtime.dynamicAlloc(bytes + 8); - return (ptr+8) & 0xFFFFFFF8; - } - Module["_malloc"] = _malloc; - - - - - 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}; - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - // reuse all of the core MEMFS functionality - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },getDB:function (name, callback) { - // check the cache first - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - req.onupgradeneeded = function(e) { - var db = e.target.result; - var transaction = e.target.transaction; - - var fileStore; - - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - - fileStore.createIndex('timestamp', 'timestamp', { unique: false }); - }; - req.onsuccess = function() { - db = req.result; - - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function() { - callback(this.error); - }; - },getLocalSet:function (mount, callback) { - var entries = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat; - - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); - } - - entries[path] = { timestamp: stat.mtime }; - } - - return callback(null, { type: 'local', entries: entries }); - },getRemoteSet:function (mount, callback) { - var entries = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index('timestamp'); - - index.openKeyCursor().onsuccess = function(event) { - var cursor = event.target.result; - - if (!cursor) { - return callback(null, { type: 'remote', db: db, entries: entries }); - } - - entries[cursor.primaryKey] = { timestamp: cursor.key }; - - cursor.continue(); - }; - }); - },loadLocalEntry:function (path, callback) { - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode }); - } else if (FS.isFile(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); - } else { - return callback(new Error('node type not supported')); - } - },storeLocalEntry:function (path, entry, callback) { - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); - } else { - return callback(new Error('node type not supported')); - } - - FS.utime(path, entry.timestamp, entry.timestamp); - } catch (e) { - return callback(e); - } - - callback(null); - },removeLocalEntry:function (path, callback) { - try { - var lookup = FS.lookupPath(path); - var stat = FS.stat(path); - - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - - callback(null); - },loadRemoteEntry:function (store, path, callback) { - var req = store.get(path); - req.onsuccess = function(event) { callback(null, event.target.result); }; - req.onerror = function() { callback(this.error); }; - },storeRemoteEntry:function (store, path, entry, callback) { - var req = store.put(entry, path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },removeRemoteEntry:function (store, path, callback) { - var req = store.delete(path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create.push(key); - total++; - } - }); - - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - var e = dst.entries[key]; - var e2 = src.entries[key]; - if (!e2) { - remove.push(key); - total++; - } - }); - - if (!total) { - return callback(null); - } - - var errored = false; - var completed = 0; - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= total) { - return callback(null); - } - }; - - transaction.onerror = function() { done(this.error); }; - - // sort paths in ascending order so directory entries are created - // before the files inside them - create.sort().forEach(function (path) { - if (dst.type === 'local') { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - - // sort paths in descending order so files are deleted before their - // parent directories - remove.sort().reverse().forEach(function(path) { - if (dst.type === 'local') { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || {}; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return !!node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },getStreamFromPtr:function (ptr) { - return FS.streams[ptr - 1]; - },getPtrForStream:function (stream) { - return stream ? stream.fd + 1 : 0; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },getMounts:function (mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= mounts.length) { - callback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function (type, opts, mountpoint) { - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0, opts.canOwn); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }};var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }};var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - - // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module - // Module['forcedAspectRatio'] = 4 / 3; - - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock'] || - canvas['msRequestPointerLock'] || - function(){}; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - document['msExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas || - document['msPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - document.addEventListener('mspointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - var canvasContainer = canvas.parentNode; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvasContainer) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen'] || - document['msExitFullscreen'] || - document['exitFullscreen'] || - function() {}; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else { - - // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - - if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - Browser.updateCanvasDimensions(canvas); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - document.addEventListener('MSFullscreenChange', fullScreenChange, false); - } - - // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - - // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) - canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || - canvasContainer['mozRequestFullScreen'] || - canvasContainer['msRequestFullscreen'] || - (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvasContainer.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },getMouseWheelDelta:function (event) { - return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },updateCanvasDimensions:function (canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { - if (w/h < Module['forcedAspectRatio']) { - w = Math.round(h * Module['forcedAspectRatio']); - } else { - h = Math.round(w / Module['forcedAspectRatio']); - } - } - if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != 'undefined') { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != 'undefined') { - if (w != wNative || h != hNative) { - canvas.style.setProperty( "width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } - } - }}; - - - - - - - - function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - url = url + addr + ':' + port; - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - // The node ws library API for specifying optional subprotocol is slightly different than the browser's. - var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols; - - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fileno(stream) { - // int fileno(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - stream = FS.getStreamFromPtr(stream); - if (!stream) return -1; - return stream.fd; - }function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var fd = _fileno(stream); - var bytesWritten = _write(fd, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - - - Module["_strlen"] = _strlen; - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = HEAPF64[(((varargs)+(argIndex))>>3)]; - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision < 0) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - }function _printf(format, varargs) { - // int printf(const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var stdout = HEAP32[((_stdout)>>2)]; - return _fprintf(stdout, format, varargs); - } - - - Module["_memset"] = _memset; - - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - Module["_memcpy"] = _memcpy; - - function _free() { - } - Module["_free"] = _free; -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - -var Math_min = Math.min; -function asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm = (function(global, env, buffer) { - 'use asm'; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = +env.NaN, inf = +env.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var abort=env.abort; - var assert=env.assert; - var asmPrintInt=env.asmPrintInt; - var asmPrintFloat=env.asmPrintFloat; - var Math_min=env.min; - var _free=env._free; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _printf=env._printf; - var _send=env._send; - var _pwrite=env._pwrite; - var __reallyNegative=env.__reallyNegative; - var _fwrite=env._fwrite; - var _malloc=env._malloc; - var _mkport=env._mkport; - var _fprintf=env._fprintf; - var ___setErrNo=env.___setErrNo; - var __formatString=env.__formatString; - var _fileno=env._fileno; - var _fflush=env._fflush; - var _write=env._write; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function _main(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - L1 : do { - if ((i3 | 0) > 1) { - i3 = HEAP8[HEAP32[i5 + 4 >> 2] | 0] | 0; - switch (i3 | 0) { - case 50: - { - i3 = 625; - break L1; - } - case 51: - { - i4 = 4; - break L1; - } - case 52: - { - i3 = 6250; - break L1; - } - case 53: - { - i3 = 12500; - break L1; - } - case 49: - { - i3 = 75; - break L1; - } - case 48: - { - i12 = 0; - STACKTOP = i1; - return i12 | 0; - } - default: - { - HEAP32[i2 >> 2] = i3 + -48; - _printf(8, i2 | 0) | 0; - i12 = -1; - STACKTOP = i1; - return i12 | 0; - } - } - } else { - i4 = 4; - } - } while (0); - if ((i4 | 0) == 4) { - i3 = 1250; - } - i4 = 0; - i12 = 0; - do { - i9 = (i4 | 0) % 10 | 0; - i5 = i9 + i4 | 0; - i6 = (i4 | 0) % 255 | 0; - i8 = (i4 | 0) % 15 | 0; - i10 = ((i4 | 0) % 120 | 0 | 0) % 1024 | 0; - i11 = ((i4 | 0) % 1024 | 0) + i4 | 0; - i5 = ((i5 | 0) % 1024 | 0) + i5 | 0; - i8 = ((i8 | 0) % 1024 | 0) + i8 | 0; - i6 = (((i6 | 0) % 1024 | 0) + i6 + i10 | 0) % 1024 | 0; - i7 = 0; - do { - i17 = i7 << 1; - i14 = (i7 | 0) % 120 | 0; - i18 = (i17 | 0) % 1024 | 0; - i19 = (i9 + i7 | 0) % 1024 | 0; - i16 = ((i7 | 0) % 255 | 0 | 0) % 1024 | 0; - i15 = (i7 | 0) % 1024 | 0; - i13 = ((i7 | 0) % 15 | 0 | 0) % 1024 | 0; - i12 = (((i19 + i18 + i16 + i10 + i15 + i13 + ((i11 + i19 | 0) % 1024 | 0) + ((i5 + i18 | 0) % 1024 | 0) + ((i18 + i17 + i16 | 0) % 1024 | 0) + i6 + ((i8 + i15 | 0) % 1024 | 0) + ((((i14 | 0) % 1024 | 0) + i14 + i13 | 0) % 1024 | 0) | 0) % 100 | 0) + i12 | 0) % 10240 | 0; - i7 = i7 + 1 | 0; - } while ((i7 | 0) != 5e4); - i4 = i4 + 1 | 0; - } while ((i4 | 0) < (i3 | 0)); - HEAP32[i2 >> 2] = i12; - _printf(24, i2 | 0) | 0; - i19 = 0; - STACKTOP = i1; - return i19 | 0; -} -function _memcpy(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0; - i4 = i3 | 0; - if ((i3 & 3) == (i2 & 3)) { - while (i3 & 3) { - if ((i1 | 0) == 0) return i4 | 0; - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - while ((i1 | 0) >= 4) { - HEAP32[i3 >> 2] = HEAP32[i2 >> 2]; - i3 = i3 + 4 | 0; - i2 = i2 + 4 | 0; - i1 = i1 - 4 | 0; - } - } - while ((i1 | 0) > 0) { - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - return i4 | 0; -} -function _memset(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i4 = i4 & 255; - i7 = i1 & 3; - i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24; - i5 = i2 & ~3; - if (i7) { - i7 = i1 + 4 - i7 | 0; - while ((i1 | 0) < (i7 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i5 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i2 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; - HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0]; - HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0]; - HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0]; - HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0]; -} -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; -} -function runPostSets() {} -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1; - while (HEAP8[i2] | 0) { - i2 = i2 + 1 | 0; - } - return i2 - i1 | 0; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 7 & -8; - return i2 | 0; -} -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if ((__THREW__ | 0) == 0) { - __THREW__ = i1; - threwValue = i2; - } -} -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} -function setTempRet9(i1) { - i1 = i1 | 0; - tempRet9 = i1; -} -function setTempRet8(i1) { - i1 = i1 | 0; - tempRet8 = i1; -} -function setTempRet7(i1) { - i1 = i1 | 0; - tempRet7 = i1; -} -function setTempRet6(i1) { - i1 = i1 | 0; - tempRet6 = i1; -} -function setTempRet5(i1) { - i1 = i1 | 0; - tempRet5 = i1; -} -function setTempRet4(i1) { - i1 = i1 | 0; - tempRet4 = i1; -} -function setTempRet3(i1) { - i1 = i1 | 0; - tempRet3 = i1; -} -function setTempRet2(i1) { - i1 = i1 | 0; - tempRet2 = i1; -} -function setTempRet1(i1) { - i1 = i1 | 0; - tempRet1 = i1; -} -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} -function stackSave() { - return STACKTOP | 0; -} - -// EMSCRIPTEN_END_FUNCS - - - return { _strlen: _strlen, _memcpy: _memcpy, _main: _main, _memset: _memset, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9 }; -}) -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "_free": _free, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_printf": _printf, "_send": _send, "_pwrite": _pwrite, "__reallyNegative": __reallyNegative, "_fwrite": _fwrite, "_malloc": _malloc, "_mkport": _mkport, "_fprintf": _fprintf, "___setErrNo": ___setErrNo, "__formatString": __formatString, "_fileno": _fileno, "_fflush": _fflush, "_write": _write, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity }, buffer); -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var _main = Module["_main"] = asm["_main"]; -var _memset = Module["_memset"] = asm["_memset"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included -var i64Math = null; - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - var data = Module['readBinary'](memoryInitializer); - HEAPU8.set(data, STATIC_BASE); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - HEAPU8.set(data, STATIC_BASE); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run([].concat(Module["arguments"])); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - 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("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; - - throw 'abort() at ' + stackTrace() + extra; -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - - -run([].concat(Module["arguments"])); diff --git a/implementation-contributed/v8/mjsunit/asm/embenchen/corrections.js b/implementation-contributed/v8/mjsunit/asm/embenchen/corrections.js deleted file mode 100644 index 05cdc4c3064..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/embenchen/corrections.js +++ /dev/null @@ -1,5983 +0,0 @@ -var EXPECTED_OUTPUT = 'final: 40006013:58243.\n'; -var Module = { - arguments: [1], - print: function(x) {Module.printBuffer += x + '\n';}, - preRun: [function() {Module.printBuffer = ''}], - postRun: [function() { - assertEquals(EXPECTED_OUTPUT, Module.printBuffer); - }], -}; -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - window['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependant on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - var source = Pointer_stringify(code); - if (source[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (source.indexOf('"', 1) === source.length-1) { - source = source.substr(1, source.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - try { - var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node - } catch(e) { - Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'); - throw e; - } - return Runtime.asmConstCache[code] = evalled; - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - /* TODO: use TextEncoder when present, - var encoder = new TextEncoder(); - encoder['encoding'] = "utf-8"; - var utf8Array = encoder['encode'](aMsg.data); - */ - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - getCompilerSetting: function (name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - var subs = []; - var first = true; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - if (rawList) { - if (ret) { - list.push(ret + '?'); - } - return list; - } else { - return ret + flushList(); - } - } - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'JS engine does not provide full typed array support'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === - - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(35); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([101,114,114,111,114,58,32,37,100,92,110,0,0,0,0,0,102,105,110,97,108,58,32,37,100,58,37,100,46,10,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - function _malloc(bytes) { - /* Over-allocate to make sure it is byte-aligned by 8. - * This will leak memory, but this is only the dummy - * implementation (replaced by dlmalloc normally) so - * not an issue. - */ - var ptr = Runtime.dynamicAlloc(bytes + 8); - return (ptr+8) & 0xFFFFFFF8; - } - Module["_malloc"] = _malloc; - - - - - 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}; - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - // reuse all of the core MEMFS functionality - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },getDB:function (name, callback) { - // check the cache first - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - req.onupgradeneeded = function(e) { - var db = e.target.result; - var transaction = e.target.transaction; - - var fileStore; - - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - - fileStore.createIndex('timestamp', 'timestamp', { unique: false }); - }; - req.onsuccess = function() { - db = req.result; - - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function() { - callback(this.error); - }; - },getLocalSet:function (mount, callback) { - var entries = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat; - - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); - } - - entries[path] = { timestamp: stat.mtime }; - } - - return callback(null, { type: 'local', entries: entries }); - },getRemoteSet:function (mount, callback) { - var entries = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index('timestamp'); - - index.openKeyCursor().onsuccess = function(event) { - var cursor = event.target.result; - - if (!cursor) { - return callback(null, { type: 'remote', db: db, entries: entries }); - } - - entries[cursor.primaryKey] = { timestamp: cursor.key }; - - cursor.continue(); - }; - }); - },loadLocalEntry:function (path, callback) { - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode }); - } else if (FS.isFile(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); - } else { - return callback(new Error('node type not supported')); - } - },storeLocalEntry:function (path, entry, callback) { - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); - } else { - return callback(new Error('node type not supported')); - } - - FS.utime(path, entry.timestamp, entry.timestamp); - } catch (e) { - return callback(e); - } - - callback(null); - },removeLocalEntry:function (path, callback) { - try { - var lookup = FS.lookupPath(path); - var stat = FS.stat(path); - - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - - callback(null); - },loadRemoteEntry:function (store, path, callback) { - var req = store.get(path); - req.onsuccess = function(event) { callback(null, event.target.result); }; - req.onerror = function() { callback(this.error); }; - },storeRemoteEntry:function (store, path, entry, callback) { - var req = store.put(entry, path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },removeRemoteEntry:function (store, path, callback) { - var req = store.delete(path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create.push(key); - total++; - } - }); - - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - var e = dst.entries[key]; - var e2 = src.entries[key]; - if (!e2) { - remove.push(key); - total++; - } - }); - - if (!total) { - return callback(null); - } - - var errored = false; - var completed = 0; - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= total) { - return callback(null); - } - }; - - transaction.onerror = function() { done(this.error); }; - - // sort paths in ascending order so directory entries are created - // before the files inside them - create.sort().forEach(function (path) { - if (dst.type === 'local') { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - - // sort paths in descending order so files are deleted before their - // parent directories - remove.sort().reverse().forEach(function(path) { - if (dst.type === 'local') { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || {}; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return !!node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },getStreamFromPtr:function (ptr) { - return FS.streams[ptr - 1]; - },getPtrForStream:function (stream) { - return stream ? stream.fd + 1 : 0; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },getMounts:function (mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= mounts.length) { - callback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function (type, opts, mountpoint) { - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0, opts.canOwn); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }};var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }};var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - - // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module - // Module['forcedAspectRatio'] = 4 / 3; - - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock'] || - canvas['msRequestPointerLock'] || - function(){}; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - document['msExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas || - document['msPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - document.addEventListener('mspointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - var canvasContainer = canvas.parentNode; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvasContainer) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen'] || - document['msExitFullscreen'] || - document['exitFullscreen'] || - function() {}; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else { - - // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - - if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - Browser.updateCanvasDimensions(canvas); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - document.addEventListener('MSFullscreenChange', fullScreenChange, false); - } - - // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - - // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) - canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || - canvasContainer['mozRequestFullScreen'] || - canvasContainer['msRequestFullscreen'] || - (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvasContainer.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },getMouseWheelDelta:function (event) { - return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },updateCanvasDimensions:function (canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { - if (w/h < Module['forcedAspectRatio']) { - w = Math.round(h * Module['forcedAspectRatio']); - } else { - h = Math.round(w / Module['forcedAspectRatio']); - } - } - if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != 'undefined') { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != 'undefined') { - if (w != wNative || h != hNative) { - canvas.style.setProperty( "width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } - } - }}; - - - - - - - - function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - url = url + addr + ':' + port; - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - // The node ws library API for specifying optional subprotocol is slightly different than the browser's. - var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols; - - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fileno(stream) { - // int fileno(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - stream = FS.getStreamFromPtr(stream); - if (!stream) return -1; - return stream.fd; - }function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var fd = _fileno(stream); - var bytesWritten = _write(fd, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - - - Module["_strlen"] = _strlen; - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = HEAPF64[(((varargs)+(argIndex))>>3)]; - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision < 0) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - }function _printf(format, varargs) { - // int printf(const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var stdout = HEAP32[((_stdout)>>2)]; - return _fprintf(stdout, format, varargs); - } - - - Module["_memset"] = _memset; - - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - Module["_memcpy"] = _memcpy; - - function _free() { - } - Module["_free"] = _free; -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - -var Math_min = Math.min; -function asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm = (function(global, env, buffer) { - 'use asm'; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = +env.NaN, inf = +env.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var abort=env.abort; - var assert=env.assert; - var asmPrintInt=env.asmPrintInt; - var asmPrintFloat=env.asmPrintFloat; - var Math_min=env.min; - var _free=env._free; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _printf=env._printf; - var _send=env._send; - var _pwrite=env._pwrite; - var __reallyNegative=env.__reallyNegative; - var _fwrite=env._fwrite; - var _malloc=env._malloc; - var _mkport=env._mkport; - var _fprintf=env._fprintf; - var ___setErrNo=env.___setErrNo; - var __formatString=env.__formatString; - var _fileno=env._fileno; - var _fflush=env._fflush; - var _write=env._write; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function _main(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - L1 : do { - if ((i3 | 0) > 1) { - i3 = HEAP8[HEAP32[i5 + 4 >> 2] | 0] | 0; - switch (i3 | 0) { - case 50: - { - i3 = 3500; - break L1; - } - case 51: - { - i4 = 4; - break L1; - } - case 52: - { - i3 = 35e3; - break L1; - } - case 53: - { - i3 = 7e4; - break L1; - } - case 49: - { - i3 = 550; - break L1; - } - case 48: - { - i11 = 0; - STACKTOP = i1; - return i11 | 0; - } - default: - { - HEAP32[i2 >> 2] = i3 + -48; - _printf(8, i2 | 0) | 0; - i11 = -1; - STACKTOP = i1; - return i11 | 0; - } - } - } else { - i4 = 4; - } - } while (0); - if ((i4 | 0) == 4) { - i3 = 7e3; - } - i11 = 0; - i8 = 0; - i5 = 0; - while (1) { - i6 = ((i5 | 0) % 5 | 0) + 1 | 0; - i4 = ((i5 | 0) % 3 | 0) + 1 | 0; - i7 = 0; - while (1) { - i11 = ((i7 | 0) / (i6 | 0) | 0) + i11 | 0; - if (i11 >>> 0 > 1e3) { - i11 = (i11 >>> 0) / (i4 >>> 0) | 0; - } - if ((i7 & 3 | 0) == 0) { - i11 = i11 + (Math_imul((i7 & 7 | 0) == 0 ? 1 : -1, i7) | 0) | 0; - } - i10 = i11 << 16 >> 16; - i10 = (Math_imul(i10, i10) | 0) & 255; - i9 = i10 + (i8 & 65535) | 0; - i7 = i7 + 1 | 0; - if ((i7 | 0) == 2e4) { - break; - } else { - i8 = i9; - } - } - i5 = i5 + 1 | 0; - if ((i5 | 0) < (i3 | 0)) { - i8 = i9; - } else { - break; - } - } - HEAP32[i2 >> 2] = i11; - HEAP32[i2 + 4 >> 2] = i8 + i10 & 65535; - _printf(24, i2 | 0) | 0; - i11 = 0; - STACKTOP = i1; - return i11 | 0; -} -function _memcpy(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0; - i4 = i3 | 0; - if ((i3 & 3) == (i2 & 3)) { - while (i3 & 3) { - if ((i1 | 0) == 0) return i4 | 0; - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - while ((i1 | 0) >= 4) { - HEAP32[i3 >> 2] = HEAP32[i2 >> 2]; - i3 = i3 + 4 | 0; - i2 = i2 + 4 | 0; - i1 = i1 - 4 | 0; - } - } - while ((i1 | 0) > 0) { - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - return i4 | 0; -} -function _memset(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i4 = i4 & 255; - i7 = i1 & 3; - i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24; - i5 = i2 & ~3; - if (i7) { - i7 = i1 + 4 - i7 | 0; - while ((i1 | 0) < (i7 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i5 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i2 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; - HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0]; - HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0]; - HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0]; - HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0]; -} -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; -} -function runPostSets() {} -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1; - while (HEAP8[i2] | 0) { - i2 = i2 + 1 | 0; - } - return i2 - i1 | 0; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 7 & -8; - return i2 | 0; -} -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if ((__THREW__ | 0) == 0) { - __THREW__ = i1; - threwValue = i2; - } -} -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} -function setTempRet9(i1) { - i1 = i1 | 0; - tempRet9 = i1; -} -function setTempRet8(i1) { - i1 = i1 | 0; - tempRet8 = i1; -} -function setTempRet7(i1) { - i1 = i1 | 0; - tempRet7 = i1; -} -function setTempRet6(i1) { - i1 = i1 | 0; - tempRet6 = i1; -} -function setTempRet5(i1) { - i1 = i1 | 0; - tempRet5 = i1; -} -function setTempRet4(i1) { - i1 = i1 | 0; - tempRet4 = i1; -} -function setTempRet3(i1) { - i1 = i1 | 0; - tempRet3 = i1; -} -function setTempRet2(i1) { - i1 = i1 | 0; - tempRet2 = i1; -} -function setTempRet1(i1) { - i1 = i1 | 0; - tempRet1 = i1; -} -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} -function stackSave() { - return STACKTOP | 0; -} - -// EMSCRIPTEN_END_FUNCS - - - return { _strlen: _strlen, _memcpy: _memcpy, _main: _main, _memset: _memset, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9 }; -}) -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "_free": _free, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_printf": _printf, "_send": _send, "_pwrite": _pwrite, "__reallyNegative": __reallyNegative, "_fwrite": _fwrite, "_malloc": _malloc, "_mkport": _mkport, "_fprintf": _fprintf, "___setErrNo": ___setErrNo, "__formatString": __formatString, "_fileno": _fileno, "_fflush": _fflush, "_write": _write, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity }, buffer); -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var _main = Module["_main"] = asm["_main"]; -var _memset = Module["_memset"] = asm["_memset"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included -var i64Math = null; - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - var data = Module['readBinary'](memoryInitializer); - HEAPU8.set(data, STATIC_BASE); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - HEAPU8.set(data, STATIC_BASE); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run([].concat(Module["arguments"])); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - 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("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; - - throw 'abort() at ' + stackTrace() + extra; -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - - -run([].concat(Module["arguments"])); diff --git a/implementation-contributed/v8/mjsunit/asm/embenchen/fannkuch.js b/implementation-contributed/v8/mjsunit/asm/embenchen/fannkuch.js deleted file mode 100644 index 64bd49195da..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/embenchen/fannkuch.js +++ /dev/null @@ -1,8435 +0,0 @@ -var EXPECTED_OUTPUT = - '123456789\n' + - '213456789\n' + - '231456789\n' + - '321456789\n' + - '312456789\n' + - '132456789\n' + - '234156789\n' + - '324156789\n' + - '342156789\n' + - '432156789\n' + - '423156789\n' + - '243156789\n' + - '341256789\n' + - '431256789\n' + - '413256789\n' + - '143256789\n' + - '134256789\n' + - '314256789\n' + - '412356789\n' + - '142356789\n' + - '124356789\n' + - '214356789\n' + - '241356789\n' + - '421356789\n' + - '234516789\n' + - '324516789\n' + - '342516789\n' + - '432516789\n' + - '423516789\n' + - '243516789\n' + - 'Pfannkuchen(9) = 30.\n'; -var Module = { - arguments: [1], - print: function(x) {Module.printBuffer += x + '\n';}, - preRun: [function() {Module.printBuffer = ''}], - postRun: [function() { - assertEquals(EXPECTED_OUTPUT, Module.printBuffer); - }], -}; -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - window['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependant on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - var source = Pointer_stringify(code); - if (source[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (source.indexOf('"', 1) === source.length-1) { - source = source.substr(1, source.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - try { - var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node - } catch(e) { - Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'); - throw e; - } - return Runtime.asmConstCache[code] = evalled; - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - /* TODO: use TextEncoder when present, - var encoder = new TextEncoder(); - encoder['encoding'] = "utf-8"; - var utf8Array = encoder['encode'](aMsg.data); - */ - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - getCompilerSetting: function (name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - var subs = []; - var first = true; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - if (rawList) { - if (ret) { - list.push(ret + '?'); - } - return list; - } else { - return ret + flushList(); - } - } - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'JS engine does not provide full typed array support'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === - - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(547); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([101,114,114,111,114,58,32,37,100,10,0,0,0,0,0,0,80,102,97,110,110,107,117,99,104,101,110,40,37,100,41,32,61,32,37,100,46,10,0,0,37,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - - - - - 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}; - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - // reuse all of the core MEMFS functionality - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },getDB:function (name, callback) { - // check the cache first - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - req.onupgradeneeded = function(e) { - var db = e.target.result; - var transaction = e.target.transaction; - - var fileStore; - - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - - fileStore.createIndex('timestamp', 'timestamp', { unique: false }); - }; - req.onsuccess = function() { - db = req.result; - - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function() { - callback(this.error); - }; - },getLocalSet:function (mount, callback) { - var entries = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat; - - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); - } - - entries[path] = { timestamp: stat.mtime }; - } - - return callback(null, { type: 'local', entries: entries }); - },getRemoteSet:function (mount, callback) { - var entries = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index('timestamp'); - - index.openKeyCursor().onsuccess = function(event) { - var cursor = event.target.result; - - if (!cursor) { - return callback(null, { type: 'remote', db: db, entries: entries }); - } - - entries[cursor.primaryKey] = { timestamp: cursor.key }; - - cursor.continue(); - }; - }); - },loadLocalEntry:function (path, callback) { - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode }); - } else if (FS.isFile(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); - } else { - return callback(new Error('node type not supported')); - } - },storeLocalEntry:function (path, entry, callback) { - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); - } else { - return callback(new Error('node type not supported')); - } - - FS.utime(path, entry.timestamp, entry.timestamp); - } catch (e) { - return callback(e); - } - - callback(null); - },removeLocalEntry:function (path, callback) { - try { - var lookup = FS.lookupPath(path); - var stat = FS.stat(path); - - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - - callback(null); - },loadRemoteEntry:function (store, path, callback) { - var req = store.get(path); - req.onsuccess = function(event) { callback(null, event.target.result); }; - req.onerror = function() { callback(this.error); }; - },storeRemoteEntry:function (store, path, entry, callback) { - var req = store.put(entry, path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },removeRemoteEntry:function (store, path, callback) { - var req = store.delete(path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create.push(key); - total++; - } - }); - - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - var e = dst.entries[key]; - var e2 = src.entries[key]; - if (!e2) { - remove.push(key); - total++; - } - }); - - if (!total) { - return callback(null); - } - - var errored = false; - var completed = 0; - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= total) { - return callback(null); - } - }; - - transaction.onerror = function() { done(this.error); }; - - // sort paths in ascending order so directory entries are created - // before the files inside them - create.sort().forEach(function (path) { - if (dst.type === 'local') { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - - // sort paths in descending order so files are deleted before their - // parent directories - remove.sort().reverse().forEach(function(path) { - if (dst.type === 'local') { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || {}; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return !!node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },getStreamFromPtr:function (ptr) { - return FS.streams[ptr - 1]; - },getPtrForStream:function (stream) { - return stream ? stream.fd + 1 : 0; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },getMounts:function (mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= mounts.length) { - callback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function (type, opts, mountpoint) { - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0, opts.canOwn); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }}; - - - - - function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - url = url + addr + ':' + port; - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - // The node ws library API for specifying optional subprotocol is slightly different than the browser's. - var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols; - - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fileno(stream) { - // int fileno(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - stream = FS.getStreamFromPtr(stream); - if (!stream) return -1; - return stream.fd; - }function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var fd = _fileno(stream); - var bytesWritten = _write(fd, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - - - Module["_strlen"] = _strlen; - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = HEAPF64[(((varargs)+(argIndex))>>3)]; - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision < 0) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - }function _printf(format, varargs) { - // int printf(const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var stdout = HEAP32[((_stdout)>>2)]; - return _fprintf(stdout, format, varargs); - } - - - function _fputc(c, stream) { - // int fputc(int c, FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html - var chr = unSign(c & 0xFF); - HEAP8[((_fputc.ret)|0)]=chr; - var fd = _fileno(stream); - var ret = _write(fd, _fputc.ret, 1); - if (ret == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return -1; - } else { - return chr; - } - }function _putchar(c) { - // int putchar(int c); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/putchar.html - return _fputc(c, HEAP32[((_stdout)>>2)]); - } - - function _sbrk(bytes) { - // Implement a Linux-like 'memory area' for our 'process'. - // Changes the size of the memory area by |bytes|; returns the - // address of the previous top ('break') of the memory area - // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP - var self = _sbrk; - if (!self.called) { - DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned - self.called = true; - assert(Runtime.dynamicAlloc); - self.alloc = Runtime.dynamicAlloc; - Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; - } - var ret = DYNAMICTOP; - if (bytes != 0) self.alloc(bytes); - return ret; // Previous break location. - } - - function _sysconf(name) { - // long sysconf(int name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html - switch(name) { - case 30: return PAGE_SIZE; - case 132: - case 133: - case 12: - case 137: - case 138: - case 15: - case 235: - case 16: - case 17: - case 18: - case 19: - case 20: - case 149: - case 13: - case 10: - case 236: - case 153: - case 9: - case 21: - case 22: - case 159: - case 154: - case 14: - case 77: - case 78: - case 139: - case 80: - case 81: - case 79: - case 82: - case 68: - case 67: - case 164: - case 11: - case 29: - case 47: - case 48: - case 95: - case 52: - case 51: - case 46: - return 200809; - case 27: - case 246: - case 127: - case 128: - case 23: - case 24: - case 160: - case 161: - case 181: - case 182: - case 242: - case 183: - case 184: - case 243: - case 244: - case 245: - case 165: - case 178: - case 179: - case 49: - case 50: - case 168: - case 169: - case 175: - case 170: - case 171: - case 172: - case 97: - case 76: - case 32: - case 173: - case 35: - return -1; - case 176: - case 177: - case 7: - case 155: - case 8: - case 157: - case 125: - case 126: - case 92: - case 93: - case 129: - case 130: - case 131: - case 94: - case 91: - return 1; - case 74: - case 60: - case 69: - case 70: - case 4: - return 1024; - case 31: - case 42: - case 72: - return 32; - case 87: - case 26: - case 33: - return 2147483647; - case 34: - case 1: - return 47839; - case 38: - case 36: - return 99; - case 43: - case 37: - return 2048; - case 0: return 2097152; - case 3: return 65536; - case 28: return 32768; - case 44: return 32767; - case 75: return 16384; - case 39: return 1000; - case 89: return 700; - case 71: return 256; - case 40: return 255; - case 2: return 100; - case 180: return 64; - case 25: return 20; - case 5: return 16; - case 6: return 6; - case 73: return 4; - case 84: return 1; - } - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - } - - - Module["_memset"] = _memset; - - function ___errno_location() { - return ___errno_state; - } - - function _abort() { - Module['abort'](); - } - - var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - - // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module - // Module['forcedAspectRatio'] = 4 / 3; - - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock'] || - canvas['msRequestPointerLock'] || - function(){}; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - document['msExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas || - document['msPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - document.addEventListener('mspointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - var canvasContainer = canvas.parentNode; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvasContainer) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen'] || - document['msExitFullscreen'] || - document['exitFullscreen'] || - function() {}; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else { - - // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - - if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - Browser.updateCanvasDimensions(canvas); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - document.addEventListener('MSFullscreenChange', fullScreenChange, false); - } - - // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - - // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) - canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || - canvasContainer['mozRequestFullScreen'] || - canvasContainer['msRequestFullscreen'] || - (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvasContainer.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },getMouseWheelDelta:function (event) { - return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },updateCanvasDimensions:function (canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { - if (w/h < Module['forcedAspectRatio']) { - w = Math.round(h * Module['forcedAspectRatio']); - } else { - h = Math.round(w / Module['forcedAspectRatio']); - } - } - if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != 'undefined') { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != 'undefined') { - if (w != wNative || h != hNative) { - canvas.style.setProperty( "width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } - } - }}; - - function _time(ptr) { - var ret = Math.floor(Date.now()/1000); - if (ptr) { - HEAP32[((ptr)>>2)]=ret; - } - return ret; - } - - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - Module["_memcpy"] = _memcpy; -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -_fputc.ret = allocate([0], "i8", ALLOC_STATIC); -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - -var Math_min = Math.min; -function asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm = (function(global, env, buffer) { - 'use asm'; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = +env.NaN, inf = +env.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var abort=env.abort; - var assert=env.assert; - var asmPrintInt=env.asmPrintInt; - var asmPrintFloat=env.asmPrintFloat; - var Math_min=env.min; - var _fflush=env._fflush; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _putchar=env._putchar; - var _fputc=env._fputc; - var _send=env._send; - var _pwrite=env._pwrite; - var _abort=env._abort; - var __reallyNegative=env.__reallyNegative; - var _fwrite=env._fwrite; - var _sbrk=env._sbrk; - var _mkport=env._mkport; - var _fprintf=env._fprintf; - var ___setErrNo=env.___setErrNo; - var __formatString=env.__formatString; - var _fileno=env._fileno; - var _printf=env._printf; - var _time=env._time; - var _sysconf=env._sysconf; - var _write=env._write; - var ___errno_location=env.___errno_location; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function _malloc(i12) { - i12 = i12 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0; - i1 = STACKTOP; - do { - if (i12 >>> 0 < 245) { - if (i12 >>> 0 < 11) { - i12 = 16; - } else { - i12 = i12 + 11 & -8; - } - i20 = i12 >>> 3; - i18 = HEAP32[14] | 0; - i21 = i18 >>> i20; - if ((i21 & 3 | 0) != 0) { - i6 = (i21 & 1 ^ 1) + i20 | 0; - i5 = i6 << 1; - i3 = 96 + (i5 << 2) | 0; - i5 = 96 + (i5 + 2 << 2) | 0; - i7 = HEAP32[i5 >> 2] | 0; - i2 = i7 + 8 | 0; - i4 = HEAP32[i2 >> 2] | 0; - do { - if ((i3 | 0) != (i4 | 0)) { - if (i4 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i4 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i7 | 0)) { - HEAP32[i8 >> 2] = i3; - HEAP32[i5 >> 2] = i4; - break; - } else { - _abort(); - } - } else { - HEAP32[14] = i18 & ~(1 << i6); - } - } while (0); - i32 = i6 << 3; - HEAP32[i7 + 4 >> 2] = i32 | 3; - i32 = i7 + (i32 | 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - if (i12 >>> 0 > (HEAP32[64 >> 2] | 0) >>> 0) { - if ((i21 | 0) != 0) { - i7 = 2 << i20; - i7 = i21 << i20 & (i7 | 0 - i7); - i7 = (i7 & 0 - i7) + -1 | 0; - i2 = i7 >>> 12 & 16; - i7 = i7 >>> i2; - i6 = i7 >>> 5 & 8; - i7 = i7 >>> i6; - i5 = i7 >>> 2 & 4; - i7 = i7 >>> i5; - i4 = i7 >>> 1 & 2; - i7 = i7 >>> i4; - i3 = i7 >>> 1 & 1; - i3 = (i6 | i2 | i5 | i4 | i3) + (i7 >>> i3) | 0; - i7 = i3 << 1; - i4 = 96 + (i7 << 2) | 0; - i7 = 96 + (i7 + 2 << 2) | 0; - i5 = HEAP32[i7 >> 2] | 0; - i2 = i5 + 8 | 0; - i6 = HEAP32[i2 >> 2] | 0; - do { - if ((i4 | 0) != (i6 | 0)) { - if (i6 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i6 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i5 | 0)) { - HEAP32[i8 >> 2] = i4; - HEAP32[i7 >> 2] = i6; - break; - } else { - _abort(); - } - } else { - HEAP32[14] = i18 & ~(1 << i3); - } - } while (0); - i6 = i3 << 3; - i4 = i6 - i12 | 0; - HEAP32[i5 + 4 >> 2] = i12 | 3; - i3 = i5 + i12 | 0; - HEAP32[i5 + (i12 | 4) >> 2] = i4 | 1; - HEAP32[i5 + i6 >> 2] = i4; - i6 = HEAP32[64 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[76 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 96 + (i9 << 2) | 0; - i7 = HEAP32[14] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 96 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - i28 = i7; - i27 = i8; - } - } else { - HEAP32[14] = i7 | i8; - i28 = 96 + (i9 + 2 << 2) | 0; - i27 = i6; - } - HEAP32[i28 >> 2] = i5; - HEAP32[i27 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i27; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[64 >> 2] = i4; - HEAP32[76 >> 2] = i3; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[60 >> 2] | 0; - if ((i18 | 0) != 0) { - i2 = (i18 & 0 - i18) + -1 | 0; - i31 = i2 >>> 12 & 16; - i2 = i2 >>> i31; - i30 = i2 >>> 5 & 8; - i2 = i2 >>> i30; - i32 = i2 >>> 2 & 4; - i2 = i2 >>> i32; - i6 = i2 >>> 1 & 2; - i2 = i2 >>> i6; - i3 = i2 >>> 1 & 1; - i3 = HEAP32[360 + ((i30 | i31 | i32 | i6 | i3) + (i2 >>> i3) << 2) >> 2] | 0; - i2 = (HEAP32[i3 + 4 >> 2] & -8) - i12 | 0; - i6 = i3; - while (1) { - i5 = HEAP32[i6 + 16 >> 2] | 0; - if ((i5 | 0) == 0) { - i5 = HEAP32[i6 + 20 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - } - i6 = (HEAP32[i5 + 4 >> 2] & -8) - i12 | 0; - i4 = i6 >>> 0 < i2 >>> 0; - i2 = i4 ? i6 : i2; - i6 = i5; - i3 = i4 ? i5 : i3; - } - i6 = HEAP32[72 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - i4 = i3 + i12 | 0; - if (!(i3 >>> 0 < i4 >>> 0)) { - _abort(); - } - i5 = HEAP32[i3 + 24 >> 2] | 0; - i7 = HEAP32[i3 + 12 >> 2] | 0; - do { - if ((i7 | 0) == (i3 | 0)) { - i8 = i3 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i8 = i3 + 16 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i26 = 0; - break; - } - } - while (1) { - i10 = i7 + 20 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) != 0) { - i7 = i9; - i8 = i10; - continue; - } - i10 = i7 + 16 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } else { - i7 = i9; - i8 = i10; - } - } - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i8 >> 2] = 0; - i26 = i7; - break; - } - } else { - i8 = HEAP32[i3 + 8 >> 2] | 0; - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } - i6 = i8 + 12 | 0; - if ((HEAP32[i6 >> 2] | 0) != (i3 | 0)) { - _abort(); - } - i9 = i7 + 8 | 0; - if ((HEAP32[i9 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i7; - HEAP32[i9 >> 2] = i8; - i26 = i7; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i5 | 0) != 0) { - i7 = HEAP32[i3 + 28 >> 2] | 0; - i6 = 360 + (i7 << 2) | 0; - if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) { - HEAP32[i6 >> 2] = i26; - if ((i26 | 0) == 0) { - HEAP32[60 >> 2] = HEAP32[60 >> 2] & ~(1 << i7); - break; - } - } else { - if (i5 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i6 = i5 + 16 | 0; - if ((HEAP32[i6 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i26; - } else { - HEAP32[i5 + 20 >> 2] = i26; - } - if ((i26 | 0) == 0) { - break; - } - } - if (i26 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i26 + 24 >> 2] = i5; - i5 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 16 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } while (0); - i5 = HEAP32[i3 + 20 >> 2] | 0; - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 20 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } - } while (0); - if (i2 >>> 0 < 16) { - i32 = i2 + i12 | 0; - HEAP32[i3 + 4 >> 2] = i32 | 3; - i32 = i3 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } else { - HEAP32[i3 + 4 >> 2] = i12 | 3; - HEAP32[i3 + (i12 | 4) >> 2] = i2 | 1; - HEAP32[i3 + (i2 + i12) >> 2] = i2; - i6 = HEAP32[64 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[76 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 96 + (i9 << 2) | 0; - i7 = HEAP32[14] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 96 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - i25 = i7; - i24 = i8; - } - } else { - HEAP32[14] = i7 | i8; - i25 = 96 + (i9 + 2 << 2) | 0; - i24 = i6; - } - HEAP32[i25 >> 2] = i5; - HEAP32[i24 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i24; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[64 >> 2] = i2; - HEAP32[76 >> 2] = i4; - } - i32 = i3 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - if (!(i12 >>> 0 > 4294967231)) { - i24 = i12 + 11 | 0; - i12 = i24 & -8; - i26 = HEAP32[60 >> 2] | 0; - if ((i26 | 0) != 0) { - i25 = 0 - i12 | 0; - i24 = i24 >>> 8; - if ((i24 | 0) != 0) { - if (i12 >>> 0 > 16777215) { - i27 = 31; - } else { - i31 = (i24 + 1048320 | 0) >>> 16 & 8; - i32 = i24 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i27 = (i32 + 245760 | 0) >>> 16 & 2; - i27 = 14 - (i30 | i31 | i27) + (i32 << i27 >>> 15) | 0; - i27 = i12 >>> (i27 + 7 | 0) & 1 | i27 << 1; - } - } else { - i27 = 0; - } - i30 = HEAP32[360 + (i27 << 2) >> 2] | 0; - L126 : do { - if ((i30 | 0) == 0) { - i29 = 0; - i24 = 0; - } else { - if ((i27 | 0) == 31) { - i24 = 0; - } else { - i24 = 25 - (i27 >>> 1) | 0; - } - i29 = 0; - i28 = i12 << i24; - i24 = 0; - while (1) { - i32 = HEAP32[i30 + 4 >> 2] & -8; - i31 = i32 - i12 | 0; - if (i31 >>> 0 < i25 >>> 0) { - if ((i32 | 0) == (i12 | 0)) { - i25 = i31; - i29 = i30; - i24 = i30; - break L126; - } else { - i25 = i31; - i24 = i30; - } - } - i31 = HEAP32[i30 + 20 >> 2] | 0; - i30 = HEAP32[i30 + (i28 >>> 31 << 2) + 16 >> 2] | 0; - i29 = (i31 | 0) == 0 | (i31 | 0) == (i30 | 0) ? i29 : i31; - if ((i30 | 0) == 0) { - break; - } else { - i28 = i28 << 1; - } - } - } - } while (0); - if ((i29 | 0) == 0 & (i24 | 0) == 0) { - i32 = 2 << i27; - i26 = i26 & (i32 | 0 - i32); - if ((i26 | 0) == 0) { - break; - } - i32 = (i26 & 0 - i26) + -1 | 0; - i28 = i32 >>> 12 & 16; - i32 = i32 >>> i28; - i27 = i32 >>> 5 & 8; - i32 = i32 >>> i27; - i30 = i32 >>> 2 & 4; - i32 = i32 >>> i30; - i31 = i32 >>> 1 & 2; - i32 = i32 >>> i31; - i29 = i32 >>> 1 & 1; - i29 = HEAP32[360 + ((i27 | i28 | i30 | i31 | i29) + (i32 >>> i29) << 2) >> 2] | 0; - } - if ((i29 | 0) != 0) { - while (1) { - i27 = (HEAP32[i29 + 4 >> 2] & -8) - i12 | 0; - i26 = i27 >>> 0 < i25 >>> 0; - i25 = i26 ? i27 : i25; - i24 = i26 ? i29 : i24; - i26 = HEAP32[i29 + 16 >> 2] | 0; - if ((i26 | 0) != 0) { - i29 = i26; - continue; - } - i29 = HEAP32[i29 + 20 >> 2] | 0; - if ((i29 | 0) == 0) { - break; - } - } - } - if ((i24 | 0) != 0 ? i25 >>> 0 < ((HEAP32[64 >> 2] | 0) - i12 | 0) >>> 0 : 0) { - i4 = HEAP32[72 >> 2] | 0; - if (i24 >>> 0 < i4 >>> 0) { - _abort(); - } - i2 = i24 + i12 | 0; - if (!(i24 >>> 0 < i2 >>> 0)) { - _abort(); - } - i3 = HEAP32[i24 + 24 >> 2] | 0; - i6 = HEAP32[i24 + 12 >> 2] | 0; - do { - if ((i6 | 0) == (i24 | 0)) { - i6 = i24 + 20 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i6 = i24 + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i22 = 0; - break; - } - } - while (1) { - i8 = i5 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) != 0) { - i5 = i7; - i6 = i8; - continue; - } - i7 = i5 + 16 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 | 0) == 0) { - break; - } else { - i5 = i8; - i6 = i7; - } - } - if (i6 >>> 0 < i4 >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = 0; - i22 = i5; - break; - } - } else { - i5 = HEAP32[i24 + 8 >> 2] | 0; - if (i5 >>> 0 < i4 >>> 0) { - _abort(); - } - i7 = i5 + 12 | 0; - if ((HEAP32[i7 >> 2] | 0) != (i24 | 0)) { - _abort(); - } - i4 = i6 + 8 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i7 >> 2] = i6; - HEAP32[i4 >> 2] = i5; - i22 = i6; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i3 | 0) != 0) { - i4 = HEAP32[i24 + 28 >> 2] | 0; - i5 = 360 + (i4 << 2) | 0; - if ((i24 | 0) == (HEAP32[i5 >> 2] | 0)) { - HEAP32[i5 >> 2] = i22; - if ((i22 | 0) == 0) { - HEAP32[60 >> 2] = HEAP32[60 >> 2] & ~(1 << i4); - break; - } - } else { - if (i3 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i4 = i3 + 16 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i4 >> 2] = i22; - } else { - HEAP32[i3 + 20 >> 2] = i22; - } - if ((i22 | 0) == 0) { - break; - } - } - if (i22 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i22 + 24 >> 2] = i3; - i3 = HEAP32[i24 + 16 >> 2] | 0; - do { - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 16 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } while (0); - i3 = HEAP32[i24 + 20 >> 2] | 0; - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 20 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } - } while (0); - L204 : do { - if (!(i25 >>> 0 < 16)) { - HEAP32[i24 + 4 >> 2] = i12 | 3; - HEAP32[i24 + (i12 | 4) >> 2] = i25 | 1; - HEAP32[i24 + (i25 + i12) >> 2] = i25; - i4 = i25 >>> 3; - if (i25 >>> 0 < 256) { - i6 = i4 << 1; - i3 = 96 + (i6 << 2) | 0; - i5 = HEAP32[14] | 0; - i4 = 1 << i4; - if ((i5 & i4 | 0) != 0) { - i5 = 96 + (i6 + 2 << 2) | 0; - i4 = HEAP32[i5 >> 2] | 0; - if (i4 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - i21 = i5; - i20 = i4; - } - } else { - HEAP32[14] = i5 | i4; - i21 = 96 + (i6 + 2 << 2) | 0; - i20 = i3; - } - HEAP32[i21 >> 2] = i2; - HEAP32[i20 + 12 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i20; - HEAP32[i24 + (i12 + 12) >> 2] = i3; - break; - } - i3 = i25 >>> 8; - if ((i3 | 0) != 0) { - if (i25 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i25 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i6 = 360 + (i3 << 2) | 0; - HEAP32[i24 + (i12 + 28) >> 2] = i3; - HEAP32[i24 + (i12 + 20) >> 2] = 0; - HEAP32[i24 + (i12 + 16) >> 2] = 0; - i4 = HEAP32[60 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[60 >> 2] = i4 | i5; - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i6; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break; - } - i4 = HEAP32[i6 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L225 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i25 | 0)) { - i3 = i25 << i3; - while (1) { - i6 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i25 | 0)) { - i18 = i5; - break L225; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i6 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i4; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break L204; - } - } else { - i18 = i4; - } - } while (0); - i4 = i18 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[72 >> 2] | 0; - if (i18 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i2; - HEAP32[i4 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i3; - HEAP32[i24 + (i12 + 12) >> 2] = i18; - HEAP32[i24 + (i12 + 24) >> 2] = 0; - break; - } - } else { - i32 = i25 + i12 | 0; - HEAP32[i24 + 4 >> 2] = i32 | 3; - i32 = i24 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - } while (0); - i32 = i24 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - i12 = -1; - } - } - } while (0); - i18 = HEAP32[64 >> 2] | 0; - if (!(i12 >>> 0 > i18 >>> 0)) { - i3 = i18 - i12 | 0; - i2 = HEAP32[76 >> 2] | 0; - if (i3 >>> 0 > 15) { - HEAP32[76 >> 2] = i2 + i12; - HEAP32[64 >> 2] = i3; - HEAP32[i2 + (i12 + 4) >> 2] = i3 | 1; - HEAP32[i2 + i18 >> 2] = i3; - HEAP32[i2 + 4 >> 2] = i12 | 3; - } else { - HEAP32[64 >> 2] = 0; - HEAP32[76 >> 2] = 0; - HEAP32[i2 + 4 >> 2] = i18 | 3; - i32 = i2 + (i18 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - i32 = i2 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[68 >> 2] | 0; - if (i12 >>> 0 < i18 >>> 0) { - i31 = i18 - i12 | 0; - HEAP32[68 >> 2] = i31; - i32 = HEAP32[80 >> 2] | 0; - HEAP32[80 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - do { - if ((HEAP32[132] | 0) == 0) { - i18 = _sysconf(30) | 0; - if ((i18 + -1 & i18 | 0) == 0) { - HEAP32[536 >> 2] = i18; - HEAP32[532 >> 2] = i18; - HEAP32[540 >> 2] = -1; - HEAP32[544 >> 2] = -1; - HEAP32[548 >> 2] = 0; - HEAP32[500 >> 2] = 0; - HEAP32[132] = (_time(0) | 0) & -16 ^ 1431655768; - break; - } else { - _abort(); - } - } - } while (0); - i20 = i12 + 48 | 0; - i25 = HEAP32[536 >> 2] | 0; - i21 = i12 + 47 | 0; - i22 = i25 + i21 | 0; - i25 = 0 - i25 | 0; - i18 = i22 & i25; - if (!(i18 >>> 0 > i12 >>> 0)) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - i24 = HEAP32[496 >> 2] | 0; - if ((i24 | 0) != 0 ? (i31 = HEAP32[488 >> 2] | 0, i32 = i31 + i18 | 0, i32 >>> 0 <= i31 >>> 0 | i32 >>> 0 > i24 >>> 0) : 0) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - L269 : do { - if ((HEAP32[500 >> 2] & 4 | 0) == 0) { - i26 = HEAP32[80 >> 2] | 0; - L271 : do { - if ((i26 | 0) != 0) { - i24 = 504 | 0; - while (1) { - i27 = HEAP32[i24 >> 2] | 0; - if (!(i27 >>> 0 > i26 >>> 0) ? (i23 = i24 + 4 | 0, (i27 + (HEAP32[i23 >> 2] | 0) | 0) >>> 0 > i26 >>> 0) : 0) { - break; - } - i24 = HEAP32[i24 + 8 >> 2] | 0; - if ((i24 | 0) == 0) { - i13 = 182; - break L271; - } - } - if ((i24 | 0) != 0) { - i25 = i22 - (HEAP32[68 >> 2] | 0) & i25; - if (i25 >>> 0 < 2147483647) { - i13 = _sbrk(i25 | 0) | 0; - i26 = (i13 | 0) == ((HEAP32[i24 >> 2] | 0) + (HEAP32[i23 >> 2] | 0) | 0); - i22 = i13; - i24 = i25; - i23 = i26 ? i13 : -1; - i25 = i26 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i13 = 182; - } - } else { - i13 = 182; - } - } while (0); - do { - if ((i13 | 0) == 182) { - i23 = _sbrk(0) | 0; - if ((i23 | 0) != (-1 | 0)) { - i24 = i23; - i22 = HEAP32[532 >> 2] | 0; - i25 = i22 + -1 | 0; - if ((i25 & i24 | 0) == 0) { - i25 = i18; - } else { - i25 = i18 - i24 + (i25 + i24 & 0 - i22) | 0; - } - i24 = HEAP32[488 >> 2] | 0; - i26 = i24 + i25 | 0; - if (i25 >>> 0 > i12 >>> 0 & i25 >>> 0 < 2147483647) { - i22 = HEAP32[496 >> 2] | 0; - if ((i22 | 0) != 0 ? i26 >>> 0 <= i24 >>> 0 | i26 >>> 0 > i22 >>> 0 : 0) { - i25 = 0; - break; - } - i22 = _sbrk(i25 | 0) | 0; - i13 = (i22 | 0) == (i23 | 0); - i24 = i25; - i23 = i13 ? i23 : -1; - i25 = i13 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i25 = 0; - } - } - } while (0); - L291 : do { - if ((i13 | 0) == 191) { - i13 = 0 - i24 | 0; - if ((i23 | 0) != (-1 | 0)) { - i17 = i23; - i14 = i25; - i13 = 202; - break L269; - } - do { - if ((i22 | 0) != (-1 | 0) & i24 >>> 0 < 2147483647 & i24 >>> 0 < i20 >>> 0 ? (i19 = HEAP32[536 >> 2] | 0, i19 = i21 - i24 + i19 & 0 - i19, i19 >>> 0 < 2147483647) : 0) { - if ((_sbrk(i19 | 0) | 0) == (-1 | 0)) { - _sbrk(i13 | 0) | 0; - break L291; - } else { - i24 = i19 + i24 | 0; - break; - } - } - } while (0); - if ((i22 | 0) != (-1 | 0)) { - i17 = i22; - i14 = i24; - i13 = 202; - break L269; - } - } - } while (0); - HEAP32[500 >> 2] = HEAP32[500 >> 2] | 4; - i13 = 199; - } else { - i25 = 0; - i13 = 199; - } - } while (0); - if ((((i13 | 0) == 199 ? i18 >>> 0 < 2147483647 : 0) ? (i17 = _sbrk(i18 | 0) | 0, i16 = _sbrk(0) | 0, (i16 | 0) != (-1 | 0) & (i17 | 0) != (-1 | 0) & i17 >>> 0 < i16 >>> 0) : 0) ? (i15 = i16 - i17 | 0, i14 = i15 >>> 0 > (i12 + 40 | 0) >>> 0, i14) : 0) { - i14 = i14 ? i15 : i25; - i13 = 202; - } - if ((i13 | 0) == 202) { - i15 = (HEAP32[488 >> 2] | 0) + i14 | 0; - HEAP32[488 >> 2] = i15; - if (i15 >>> 0 > (HEAP32[492 >> 2] | 0) >>> 0) { - HEAP32[492 >> 2] = i15; - } - i15 = HEAP32[80 >> 2] | 0; - L311 : do { - if ((i15 | 0) != 0) { - i21 = 504 | 0; - while (1) { - i16 = HEAP32[i21 >> 2] | 0; - i19 = i21 + 4 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i17 | 0) == (i16 + i20 | 0)) { - i13 = 214; - break; - } - i18 = HEAP32[i21 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i21 = i18; - } - } - if (((i13 | 0) == 214 ? (HEAP32[i21 + 12 >> 2] & 8 | 0) == 0 : 0) ? i15 >>> 0 >= i16 >>> 0 & i15 >>> 0 < i17 >>> 0 : 0) { - HEAP32[i19 >> 2] = i20 + i14; - i2 = (HEAP32[68 >> 2] | 0) + i14 | 0; - i3 = i15 + 8 | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i32 = i2 - i3 | 0; - HEAP32[80 >> 2] = i15 + i3; - HEAP32[68 >> 2] = i32; - HEAP32[i15 + (i3 + 4) >> 2] = i32 | 1; - HEAP32[i15 + (i2 + 4) >> 2] = 40; - HEAP32[84 >> 2] = HEAP32[544 >> 2]; - break; - } - if (i17 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - HEAP32[72 >> 2] = i17; - } - i19 = i17 + i14 | 0; - i16 = 504 | 0; - while (1) { - if ((HEAP32[i16 >> 2] | 0) == (i19 | 0)) { - i13 = 224; - break; - } - i18 = HEAP32[i16 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i16 = i18; - } - } - if ((i13 | 0) == 224 ? (HEAP32[i16 + 12 >> 2] & 8 | 0) == 0 : 0) { - HEAP32[i16 >> 2] = i17; - i6 = i16 + 4 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i14; - i6 = i17 + 8 | 0; - if ((i6 & 7 | 0) == 0) { - i6 = 0; - } else { - i6 = 0 - i6 & 7; - } - i7 = i17 + (i14 + 8) | 0; - if ((i7 & 7 | 0) == 0) { - i13 = 0; - } else { - i13 = 0 - i7 & 7; - } - i15 = i17 + (i13 + i14) | 0; - i8 = i6 + i12 | 0; - i7 = i17 + i8 | 0; - i10 = i15 - (i17 + i6) - i12 | 0; - HEAP32[i17 + (i6 + 4) >> 2] = i12 | 3; - L348 : do { - if ((i15 | 0) != (HEAP32[80 >> 2] | 0)) { - if ((i15 | 0) == (HEAP32[76 >> 2] | 0)) { - i32 = (HEAP32[64 >> 2] | 0) + i10 | 0; - HEAP32[64 >> 2] = i32; - HEAP32[76 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i32 + i8) >> 2] = i32; - break; - } - i12 = i14 + 4 | 0; - i18 = HEAP32[i17 + (i12 + i13) >> 2] | 0; - if ((i18 & 3 | 0) == 1) { - i11 = i18 & -8; - i16 = i18 >>> 3; - do { - if (!(i18 >>> 0 < 256)) { - i9 = HEAP32[i17 + ((i13 | 24) + i14) >> 2] | 0; - i19 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - do { - if ((i19 | 0) == (i15 | 0)) { - i19 = i13 | 16; - i18 = i17 + (i12 + i19) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i18 = i17 + (i19 + i14) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i5 = 0; - break; - } - } - while (1) { - i20 = i16 + 20 | 0; - i19 = HEAP32[i20 >> 2] | 0; - if ((i19 | 0) != 0) { - i16 = i19; - i18 = i20; - continue; - } - i19 = i16 + 16 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i20 | 0) == 0) { - break; - } else { - i16 = i20; - i18 = i19; - } - } - if (i18 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i18 >> 2] = 0; - i5 = i16; - break; - } - } else { - i18 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - if (i18 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i18 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - i20 = i19 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i19; - HEAP32[i20 >> 2] = i18; - i5 = i19; - break; - } else { - _abort(); - } - } - } while (0); - if ((i9 | 0) != 0) { - i16 = HEAP32[i17 + (i14 + 28 + i13) >> 2] | 0; - i18 = 360 + (i16 << 2) | 0; - if ((i15 | 0) == (HEAP32[i18 >> 2] | 0)) { - HEAP32[i18 >> 2] = i5; - if ((i5 | 0) == 0) { - HEAP32[60 >> 2] = HEAP32[60 >> 2] & ~(1 << i16); - break; - } - } else { - if (i9 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i9 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i5; - } else { - HEAP32[i9 + 20 >> 2] = i5; - } - if ((i5 | 0) == 0) { - break; - } - } - if (i5 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i5 + 24 >> 2] = i9; - i15 = i13 | 16; - i9 = HEAP32[i17 + (i15 + i14) >> 2] | 0; - do { - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 16 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } while (0); - i9 = HEAP32[i17 + (i12 + i15) >> 2] | 0; - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 20 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } - } else { - i5 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - i12 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - i18 = 96 + (i16 << 1 << 2) | 0; - if ((i5 | 0) != (i18 | 0)) { - if (i5 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i5 + 12 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - } - if ((i12 | 0) == (i5 | 0)) { - HEAP32[14] = HEAP32[14] & ~(1 << i16); - break; - } - if ((i12 | 0) != (i18 | 0)) { - if (i12 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i12 + 8 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - i9 = i16; - } else { - _abort(); - } - } else { - i9 = i12 + 8 | 0; - } - HEAP32[i5 + 12 >> 2] = i12; - HEAP32[i9 >> 2] = i5; - } - } while (0); - i15 = i17 + ((i11 | i13) + i14) | 0; - i10 = i11 + i10 | 0; - } - i5 = i15 + 4 | 0; - HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -2; - HEAP32[i17 + (i8 + 4) >> 2] = i10 | 1; - HEAP32[i17 + (i10 + i8) >> 2] = i10; - i5 = i10 >>> 3; - if (i10 >>> 0 < 256) { - i10 = i5 << 1; - i2 = 96 + (i10 << 2) | 0; - i9 = HEAP32[14] | 0; - i5 = 1 << i5; - if ((i9 & i5 | 0) != 0) { - i9 = 96 + (i10 + 2 << 2) | 0; - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - i3 = i9; - i4 = i5; - } - } else { - HEAP32[14] = i9 | i5; - i3 = 96 + (i10 + 2 << 2) | 0; - i4 = i2; - } - HEAP32[i3 >> 2] = i7; - HEAP32[i4 + 12 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - break; - } - i3 = i10 >>> 8; - if ((i3 | 0) != 0) { - if (i10 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i10 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i4 = 360 + (i3 << 2) | 0; - HEAP32[i17 + (i8 + 28) >> 2] = i3; - HEAP32[i17 + (i8 + 20) >> 2] = 0; - HEAP32[i17 + (i8 + 16) >> 2] = 0; - i9 = HEAP32[60 >> 2] | 0; - i5 = 1 << i3; - if ((i9 & i5 | 0) == 0) { - HEAP32[60 >> 2] = i9 | i5; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L444 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i10 | 0)) { - i3 = i10 << i3; - while (1) { - i5 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i9 = HEAP32[i5 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } - if ((HEAP32[i9 + 4 >> 2] & -8 | 0) == (i10 | 0)) { - i2 = i9; - break L444; - } else { - i3 = i3 << 1; - i4 = i9; - } - } - if (i5 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break L348; - } - } else { - i2 = i4; - } - } while (0); - i4 = i2 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[72 >> 2] | 0; - if (i2 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i7; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i3; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - HEAP32[i17 + (i8 + 24) >> 2] = 0; - break; - } - } else { - i32 = (HEAP32[68 >> 2] | 0) + i10 | 0; - HEAP32[68 >> 2] = i32; - HEAP32[80 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - } - } while (0); - i32 = i17 + (i6 | 8) | 0; - STACKTOP = i1; - return i32 | 0; - } - i3 = 504 | 0; - while (1) { - i2 = HEAP32[i3 >> 2] | 0; - if (!(i2 >>> 0 > i15 >>> 0) ? (i11 = HEAP32[i3 + 4 >> 2] | 0, i10 = i2 + i11 | 0, i10 >>> 0 > i15 >>> 0) : 0) { - break; - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - } - i3 = i2 + (i11 + -39) | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i2 = i2 + (i11 + -47 + i3) | 0; - i2 = i2 >>> 0 < (i15 + 16 | 0) >>> 0 ? i15 : i2; - i3 = i2 + 8 | 0; - i4 = i17 + 8 | 0; - if ((i4 & 7 | 0) == 0) { - i4 = 0; - } else { - i4 = 0 - i4 & 7; - } - i32 = i14 + -40 - i4 | 0; - HEAP32[80 >> 2] = i17 + i4; - HEAP32[68 >> 2] = i32; - HEAP32[i17 + (i4 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[84 >> 2] = HEAP32[544 >> 2]; - HEAP32[i2 + 4 >> 2] = 27; - HEAP32[i3 + 0 >> 2] = HEAP32[504 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[508 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[512 >> 2]; - HEAP32[i3 + 12 >> 2] = HEAP32[516 >> 2]; - HEAP32[504 >> 2] = i17; - HEAP32[508 >> 2] = i14; - HEAP32[516 >> 2] = 0; - HEAP32[512 >> 2] = i3; - i4 = i2 + 28 | 0; - HEAP32[i4 >> 2] = 7; - if ((i2 + 32 | 0) >>> 0 < i10 >>> 0) { - while (1) { - i3 = i4 + 4 | 0; - HEAP32[i3 >> 2] = 7; - if ((i4 + 8 | 0) >>> 0 < i10 >>> 0) { - i4 = i3; - } else { - break; - } - } - } - if ((i2 | 0) != (i15 | 0)) { - i2 = i2 - i15 | 0; - i3 = i15 + (i2 + 4) | 0; - HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & -2; - HEAP32[i15 + 4 >> 2] = i2 | 1; - HEAP32[i15 + i2 >> 2] = i2; - i3 = i2 >>> 3; - if (i2 >>> 0 < 256) { - i4 = i3 << 1; - i2 = 96 + (i4 << 2) | 0; - i5 = HEAP32[14] | 0; - i3 = 1 << i3; - if ((i5 & i3 | 0) != 0) { - i4 = 96 + (i4 + 2 << 2) | 0; - i3 = HEAP32[i4 >> 2] | 0; - if (i3 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - i7 = i4; - i8 = i3; - } - } else { - HEAP32[14] = i5 | i3; - i7 = 96 + (i4 + 2 << 2) | 0; - i8 = i2; - } - HEAP32[i7 >> 2] = i15; - HEAP32[i8 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i8; - HEAP32[i15 + 12 >> 2] = i2; - break; - } - i3 = i2 >>> 8; - if ((i3 | 0) != 0) { - if (i2 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i2 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i7 = 360 + (i3 << 2) | 0; - HEAP32[i15 + 28 >> 2] = i3; - HEAP32[i15 + 20 >> 2] = 0; - HEAP32[i15 + 16 >> 2] = 0; - i4 = HEAP32[60 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[60 >> 2] = i4 | i5; - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i7; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break; - } - i4 = HEAP32[i7 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L499 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i2 | 0)) { - i3 = i2 << i3; - while (1) { - i7 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i7 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i2 | 0)) { - i6 = i5; - break L499; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i7 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i4; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break L311; - } - } else { - i6 = i4; - } - } while (0); - i4 = i6 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i2 = HEAP32[72 >> 2] | 0; - if (i6 >>> 0 < i2 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i2 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i15; - HEAP32[i4 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i3; - HEAP32[i15 + 12 >> 2] = i6; - HEAP32[i15 + 24 >> 2] = 0; - break; - } - } - } else { - i32 = HEAP32[72 >> 2] | 0; - if ((i32 | 0) == 0 | i17 >>> 0 < i32 >>> 0) { - HEAP32[72 >> 2] = i17; - } - HEAP32[504 >> 2] = i17; - HEAP32[508 >> 2] = i14; - HEAP32[516 >> 2] = 0; - HEAP32[92 >> 2] = HEAP32[132]; - HEAP32[88 >> 2] = -1; - i2 = 0; - do { - i32 = i2 << 1; - i31 = 96 + (i32 << 2) | 0; - HEAP32[96 + (i32 + 3 << 2) >> 2] = i31; - HEAP32[96 + (i32 + 2 << 2) >> 2] = i31; - i2 = i2 + 1 | 0; - } while ((i2 | 0) != 32); - i2 = i17 + 8 | 0; - if ((i2 & 7 | 0) == 0) { - i2 = 0; - } else { - i2 = 0 - i2 & 7; - } - i32 = i14 + -40 - i2 | 0; - HEAP32[80 >> 2] = i17 + i2; - HEAP32[68 >> 2] = i32; - HEAP32[i17 + (i2 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[84 >> 2] = HEAP32[544 >> 2]; - } - } while (0); - i2 = HEAP32[68 >> 2] | 0; - if (i2 >>> 0 > i12 >>> 0) { - i31 = i2 - i12 | 0; - HEAP32[68 >> 2] = i31; - i32 = HEAP32[80 >> 2] | 0; - HEAP32[80 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - HEAP32[(___errno_location() | 0) >> 2] = 12; - i32 = 0; - STACKTOP = i1; - return i32 | 0; -} -function _free(i7) { - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0; - i1 = STACKTOP; - if ((i7 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = i7 + -8 | 0; - i16 = HEAP32[72 >> 2] | 0; - if (i15 >>> 0 < i16 >>> 0) { - _abort(); - } - i13 = HEAP32[i7 + -4 >> 2] | 0; - i12 = i13 & 3; - if ((i12 | 0) == 1) { - _abort(); - } - i8 = i13 & -8; - i6 = i7 + (i8 + -8) | 0; - do { - if ((i13 & 1 | 0) == 0) { - i19 = HEAP32[i15 >> 2] | 0; - if ((i12 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = -8 - i19 | 0; - i13 = i7 + i15 | 0; - i12 = i19 + i8 | 0; - if (i13 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((i13 | 0) == (HEAP32[76 >> 2] | 0)) { - i2 = i7 + (i8 + -4) | 0; - if ((HEAP32[i2 >> 2] & 3 | 0) != 3) { - i2 = i13; - i11 = i12; - break; - } - HEAP32[64 >> 2] = i12; - HEAP32[i2 >> 2] = HEAP32[i2 >> 2] & -2; - HEAP32[i7 + (i15 + 4) >> 2] = i12 | 1; - HEAP32[i6 >> 2] = i12; - STACKTOP = i1; - return; - } - i18 = i19 >>> 3; - if (i19 >>> 0 < 256) { - i2 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - i11 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - i14 = 96 + (i18 << 1 << 2) | 0; - if ((i2 | 0) != (i14 | 0)) { - if (i2 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((HEAP32[i2 + 12 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - } - if ((i11 | 0) == (i2 | 0)) { - HEAP32[14] = HEAP32[14] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - if ((i11 | 0) != (i14 | 0)) { - if (i11 >>> 0 < i16 >>> 0) { - _abort(); - } - i14 = i11 + 8 | 0; - if ((HEAP32[i14 >> 2] | 0) == (i13 | 0)) { - i17 = i14; - } else { - _abort(); - } - } else { - i17 = i11 + 8 | 0; - } - HEAP32[i2 + 12 >> 2] = i11; - HEAP32[i17 >> 2] = i2; - i2 = i13; - i11 = i12; - break; - } - i17 = HEAP32[i7 + (i15 + 24) >> 2] | 0; - i18 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - do { - if ((i18 | 0) == (i13 | 0)) { - i19 = i7 + (i15 + 20) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i19 = i7 + (i15 + 16) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i14 = 0; - break; - } - } - while (1) { - i21 = i18 + 20 | 0; - i20 = HEAP32[i21 >> 2] | 0; - if ((i20 | 0) != 0) { - i18 = i20; - i19 = i21; - continue; - } - i20 = i18 + 16 | 0; - i21 = HEAP32[i20 >> 2] | 0; - if ((i21 | 0) == 0) { - break; - } else { - i18 = i21; - i19 = i20; - } - } - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } else { - HEAP32[i19 >> 2] = 0; - i14 = i18; - break; - } - } else { - i19 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } - i16 = i19 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - i20 = i18 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i18; - HEAP32[i20 >> 2] = i19; - i14 = i18; - break; - } else { - _abort(); - } - } - } while (0); - if ((i17 | 0) != 0) { - i18 = HEAP32[i7 + (i15 + 28) >> 2] | 0; - i16 = 360 + (i18 << 2) | 0; - if ((i13 | 0) == (HEAP32[i16 >> 2] | 0)) { - HEAP32[i16 >> 2] = i14; - if ((i14 | 0) == 0) { - HEAP32[60 >> 2] = HEAP32[60 >> 2] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - } else { - if (i17 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i17 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i14; - } else { - HEAP32[i17 + 20 >> 2] = i14; - } - if ((i14 | 0) == 0) { - i2 = i13; - i11 = i12; - break; - } - } - if (i14 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i14 + 24 >> 2] = i17; - i16 = HEAP32[i7 + (i15 + 16) >> 2] | 0; - do { - if ((i16 | 0) != 0) { - if (i16 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 16 >> 2] = i16; - HEAP32[i16 + 24 >> 2] = i14; - break; - } - } - } while (0); - i15 = HEAP32[i7 + (i15 + 20) >> 2] | 0; - if ((i15 | 0) != 0) { - if (i15 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 20 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i14; - i2 = i13; - i11 = i12; - break; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i15; - i11 = i8; - } - } while (0); - if (!(i2 >>> 0 < i6 >>> 0)) { - _abort(); - } - i12 = i7 + (i8 + -4) | 0; - i13 = HEAP32[i12 >> 2] | 0; - if ((i13 & 1 | 0) == 0) { - _abort(); - } - if ((i13 & 2 | 0) == 0) { - if ((i6 | 0) == (HEAP32[80 >> 2] | 0)) { - i21 = (HEAP32[68 >> 2] | 0) + i11 | 0; - HEAP32[68 >> 2] = i21; - HEAP32[80 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - if ((i2 | 0) != (HEAP32[76 >> 2] | 0)) { - STACKTOP = i1; - return; - } - HEAP32[76 >> 2] = 0; - HEAP32[64 >> 2] = 0; - STACKTOP = i1; - return; - } - if ((i6 | 0) == (HEAP32[76 >> 2] | 0)) { - i21 = (HEAP32[64 >> 2] | 0) + i11 | 0; - HEAP32[64 >> 2] = i21; - HEAP32[76 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - HEAP32[i2 + i21 >> 2] = i21; - STACKTOP = i1; - return; - } - i11 = (i13 & -8) + i11 | 0; - i12 = i13 >>> 3; - do { - if (!(i13 >>> 0 < 256)) { - i10 = HEAP32[i7 + (i8 + 16) >> 2] | 0; - i15 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - do { - if ((i15 | 0) == (i6 | 0)) { - i13 = i7 + (i8 + 12) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i13 = i7 + (i8 + 8) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i9 = 0; - break; - } - } - while (1) { - i14 = i12 + 20 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) != 0) { - i12 = i15; - i13 = i14; - continue; - } - i14 = i12 + 16 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) == 0) { - break; - } else { - i12 = i15; - i13 = i14; - } - } - if (i13 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i13 >> 2] = 0; - i9 = i12; - break; - } - } else { - i13 = HEAP32[i7 + i8 >> 2] | 0; - if (i13 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i14 = i13 + 12 | 0; - if ((HEAP32[i14 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - i12 = i15 + 8 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i14 >> 2] = i15; - HEAP32[i12 >> 2] = i13; - i9 = i15; - break; - } else { - _abort(); - } - } - } while (0); - if ((i10 | 0) != 0) { - i12 = HEAP32[i7 + (i8 + 20) >> 2] | 0; - i13 = 360 + (i12 << 2) | 0; - if ((i6 | 0) == (HEAP32[i13 >> 2] | 0)) { - HEAP32[i13 >> 2] = i9; - if ((i9 | 0) == 0) { - HEAP32[60 >> 2] = HEAP32[60 >> 2] & ~(1 << i12); - break; - } - } else { - if (i10 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i12 = i10 + 16 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i12 >> 2] = i9; - } else { - HEAP32[i10 + 20 >> 2] = i9; - } - if ((i9 | 0) == 0) { - break; - } - } - if (i9 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i9 + 24 >> 2] = i10; - i6 = HEAP32[i7 + (i8 + 8) >> 2] | 0; - do { - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 16 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } while (0); - i6 = HEAP32[i7 + (i8 + 12) >> 2] | 0; - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 20 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } - } else { - i9 = HEAP32[i7 + i8 >> 2] | 0; - i7 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - i8 = 96 + (i12 << 1 << 2) | 0; - if ((i9 | 0) != (i8 | 0)) { - if (i9 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i9 + 12 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - } - if ((i7 | 0) == (i9 | 0)) { - HEAP32[14] = HEAP32[14] & ~(1 << i12); - break; - } - if ((i7 | 0) != (i8 | 0)) { - if (i7 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i7 + 8 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) { - i10 = i8; - } else { - _abort(); - } - } else { - i10 = i7 + 8 | 0; - } - HEAP32[i9 + 12 >> 2] = i7; - HEAP32[i10 >> 2] = i9; - } - } while (0); - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - if ((i2 | 0) == (HEAP32[76 >> 2] | 0)) { - HEAP32[64 >> 2] = i11; - STACKTOP = i1; - return; - } - } else { - HEAP32[i12 >> 2] = i13 & -2; - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - } - i6 = i11 >>> 3; - if (i11 >>> 0 < 256) { - i7 = i6 << 1; - i3 = 96 + (i7 << 2) | 0; - i8 = HEAP32[14] | 0; - i6 = 1 << i6; - if ((i8 & i6 | 0) != 0) { - i6 = 96 + (i7 + 2 << 2) | 0; - i7 = HEAP32[i6 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - i4 = i6; - i5 = i7; - } - } else { - HEAP32[14] = i8 | i6; - i4 = 96 + (i7 + 2 << 2) | 0; - i5 = i3; - } - HEAP32[i4 >> 2] = i2; - HEAP32[i5 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i3; - STACKTOP = i1; - return; - } - i4 = i11 >>> 8; - if ((i4 | 0) != 0) { - if (i11 >>> 0 > 16777215) { - i4 = 31; - } else { - i20 = (i4 + 1048320 | 0) >>> 16 & 8; - i21 = i4 << i20; - i19 = (i21 + 520192 | 0) >>> 16 & 4; - i21 = i21 << i19; - i4 = (i21 + 245760 | 0) >>> 16 & 2; - i4 = 14 - (i19 | i20 | i4) + (i21 << i4 >>> 15) | 0; - i4 = i11 >>> (i4 + 7 | 0) & 1 | i4 << 1; - } - } else { - i4 = 0; - } - i5 = 360 + (i4 << 2) | 0; - HEAP32[i2 + 28 >> 2] = i4; - HEAP32[i2 + 20 >> 2] = 0; - HEAP32[i2 + 16 >> 2] = 0; - i7 = HEAP32[60 >> 2] | 0; - i6 = 1 << i4; - L199 : do { - if ((i7 & i6 | 0) != 0) { - i5 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) == 31) { - i4 = 0; - } else { - i4 = 25 - (i4 >>> 1) | 0; - } - L205 : do { - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) != (i11 | 0)) { - i4 = i11 << i4; - i7 = i5; - while (1) { - i6 = i7 + (i4 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i11 | 0)) { - i3 = i5; - break L205; - } else { - i4 = i4 << 1; - i7 = i5; - } - } - if (i6 >>> 0 < (HEAP32[72 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i7; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - break L199; - } - } else { - i3 = i5; - } - } while (0); - i5 = i3 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i6 = HEAP32[72 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - if (i4 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i4 + 12 >> 2] = i2; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i4; - HEAP32[i2 + 12 >> 2] = i3; - HEAP32[i2 + 24 >> 2] = 0; - break; - } - } else { - HEAP32[60 >> 2] = i7 | i6; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - } - } while (0); - i21 = (HEAP32[88 >> 2] | 0) + -1 | 0; - HEAP32[88 >> 2] = i21; - if ((i21 | 0) == 0) { - i2 = 512 | 0; - } else { - STACKTOP = i1; - return; - } - while (1) { - i2 = HEAP32[i2 >> 2] | 0; - if ((i2 | 0) == 0) { - break; - } else { - i2 = i2 + 8 | 0; - } - } - HEAP32[88 >> 2] = -1; - STACKTOP = i1; - return; -} -function __Z15fannkuch_workerPv(i9) { - i9 = i9 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0; - i3 = STACKTOP; - i7 = HEAP32[i9 + 4 >> 2] | 0; - i6 = i7 << 2; - i5 = _malloc(i6) | 0; - i2 = _malloc(i6) | 0; - i6 = _malloc(i6) | 0; - i10 = (i7 | 0) > 0; - if (i10) { - i8 = 0; - do { - HEAP32[i5 + (i8 << 2) >> 2] = i8; - i8 = i8 + 1 | 0; - } while ((i8 | 0) != (i7 | 0)); - i8 = i7 + -1 | 0; - i17 = HEAP32[i9 >> 2] | 0; - HEAP32[i5 + (i17 << 2) >> 2] = i8; - i9 = i5 + (i8 << 2) | 0; - HEAP32[i9 >> 2] = i17; - if (i10) { - i10 = i7 << 2; - i11 = 0; - i12 = i7; - L7 : while (1) { - if ((i12 | 0) > 1) { - while (1) { - i13 = i12 + -1 | 0; - HEAP32[i6 + (i13 << 2) >> 2] = i12; - if ((i13 | 0) > 1) { - i12 = i13; - } else { - i12 = 1; - break; - } - } - } - i13 = HEAP32[i5 >> 2] | 0; - if ((i13 | 0) != 0 ? (HEAP32[i9 >> 2] | 0) != (i8 | 0) : 0) { - _memcpy(i2 | 0, i5 | 0, i10 | 0) | 0; - i15 = 0; - i14 = HEAP32[i2 >> 2] | 0; - while (1) { - i17 = i14 + -1 | 0; - if ((i17 | 0) > 1) { - i16 = 1; - do { - i20 = i2 + (i16 << 2) | 0; - i19 = HEAP32[i20 >> 2] | 0; - i18 = i2 + (i17 << 2) | 0; - HEAP32[i20 >> 2] = HEAP32[i18 >> 2]; - HEAP32[i18 >> 2] = i19; - i16 = i16 + 1 | 0; - i17 = i17 + -1 | 0; - } while ((i16 | 0) < (i17 | 0)); - } - i15 = i15 + 1 | 0; - i20 = i2 + (i14 << 2) | 0; - i16 = HEAP32[i20 >> 2] | 0; - HEAP32[i20 >> 2] = i14; - if ((i16 | 0) == 0) { - break; - } else { - i14 = i16; - } - } - i11 = (i11 | 0) < (i15 | 0) ? i15 : i11; - } - if ((i12 | 0) >= (i8 | 0)) { - i8 = 34; - break; - } - while (1) { - if ((i12 | 0) > 0) { - i14 = 0; - while (1) { - i15 = i14 + 1 | 0; - HEAP32[i5 + (i14 << 2) >> 2] = HEAP32[i5 + (i15 << 2) >> 2]; - if ((i15 | 0) == (i12 | 0)) { - i14 = i12; - break; - } else { - i14 = i15; - } - } - } else { - i14 = 0; - } - HEAP32[i5 + (i14 << 2) >> 2] = i13; - i14 = i6 + (i12 << 2) | 0; - i20 = (HEAP32[i14 >> 2] | 0) + -1 | 0; - HEAP32[i14 >> 2] = i20; - i14 = i12 + 1 | 0; - if ((i20 | 0) > 0) { - continue L7; - } - if ((i14 | 0) >= (i8 | 0)) { - i8 = 34; - break L7; - } - i13 = HEAP32[i5 >> 2] | 0; - i12 = i14; - } - } - if ((i8 | 0) == 34) { - _free(i5); - _free(i2); - _free(i6); - STACKTOP = i3; - return i11 | 0; - } - } else { - i1 = i9; - i4 = i8; - } - } else { - i4 = i7 + -1 | 0; - i20 = HEAP32[i9 >> 2] | 0; - HEAP32[i5 + (i20 << 2) >> 2] = i4; - i1 = i5 + (i4 << 2) | 0; - HEAP32[i1 >> 2] = i20; - } - i11 = 0; - L36 : while (1) { - if ((i7 | 0) > 1) { - while (1) { - i8 = i7 + -1 | 0; - HEAP32[i6 + (i8 << 2) >> 2] = i7; - if ((i8 | 0) > 1) { - i7 = i8; - } else { - i7 = 1; - break; - } - } - } - i8 = HEAP32[i5 >> 2] | 0; - if ((i8 | 0) != 0 ? (HEAP32[i1 >> 2] | 0) != (i4 | 0) : 0) { - i10 = 0; - i9 = HEAP32[i2 >> 2] | 0; - while (1) { - i13 = i9 + -1 | 0; - if ((i13 | 0) > 1) { - i12 = 1; - do { - i18 = i2 + (i12 << 2) | 0; - i19 = HEAP32[i18 >> 2] | 0; - i20 = i2 + (i13 << 2) | 0; - HEAP32[i18 >> 2] = HEAP32[i20 >> 2]; - HEAP32[i20 >> 2] = i19; - i12 = i12 + 1 | 0; - i13 = i13 + -1 | 0; - } while ((i12 | 0) < (i13 | 0)); - } - i10 = i10 + 1 | 0; - i20 = i2 + (i9 << 2) | 0; - i12 = HEAP32[i20 >> 2] | 0; - HEAP32[i20 >> 2] = i9; - if ((i12 | 0) == 0) { - break; - } else { - i9 = i12; - } - } - i11 = (i11 | 0) < (i10 | 0) ? i10 : i11; - } - if ((i7 | 0) >= (i4 | 0)) { - i8 = 34; - break; - } - while (1) { - if ((i7 | 0) > 0) { - i9 = 0; - while (1) { - i10 = i9 + 1 | 0; - HEAP32[i5 + (i9 << 2) >> 2] = HEAP32[i5 + (i10 << 2) >> 2]; - if ((i10 | 0) == (i7 | 0)) { - i9 = i7; - break; - } else { - i9 = i10; - } - } - } else { - i9 = 0; - } - HEAP32[i5 + (i9 << 2) >> 2] = i8; - i9 = i6 + (i7 << 2) | 0; - i20 = (HEAP32[i9 >> 2] | 0) + -1 | 0; - HEAP32[i9 >> 2] = i20; - i9 = i7 + 1 | 0; - if ((i20 | 0) > 0) { - continue L36; - } - if ((i9 | 0) >= (i4 | 0)) { - i8 = 34; - break L36; - } - i8 = HEAP32[i5 >> 2] | 0; - i7 = i9; - } - } - if ((i8 | 0) == 34) { - _free(i5); - _free(i2); - _free(i6); - STACKTOP = i3; - return i11 | 0; - } - return 0; -} -function _main(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i1 = i2; - L1 : do { - if ((i3 | 0) > 1) { - i3 = HEAP8[HEAP32[i5 + 4 >> 2] | 0] | 0; - switch (i3 | 0) { - case 50: - { - i3 = 10; - break L1; - } - case 51: - { - i4 = 4; - break L1; - } - case 52: - { - i3 = 11; - break L1; - } - case 53: - { - i3 = 12; - break L1; - } - case 49: - { - i3 = 9; - break L1; - } - case 48: - { - i11 = 0; - STACKTOP = i2; - return i11 | 0; - } - default: - { - HEAP32[i1 >> 2] = i3 + -48; - _printf(8, i1 | 0) | 0; - i11 = -1; - STACKTOP = i2; - return i11 | 0; - } - } - } else { - i4 = 4; - } - } while (0); - if ((i4 | 0) == 4) { - i3 = 11; - } - i5 = i3 + -1 | 0; - i6 = 0; - i7 = 0; - while (1) { - i4 = _malloc(12) | 0; - HEAP32[i4 >> 2] = i7; - HEAP32[i4 + 4 >> 2] = i3; - HEAP32[i4 + 8 >> 2] = i6; - i7 = i7 + 1 | 0; - if ((i7 | 0) == (i5 | 0)) { - break; - } else { - i6 = i4; - } - } - i5 = i3 << 2; - i6 = _malloc(i5) | 0; - i5 = _malloc(i5) | 0; - i7 = 0; - do { - HEAP32[i6 + (i7 << 2) >> 2] = i7; - i7 = i7 + 1 | 0; - } while ((i7 | 0) != (i3 | 0)); - i8 = i3; - i7 = 30; - L19 : do { - i9 = 0; - do { - HEAP32[i1 >> 2] = (HEAP32[i6 + (i9 << 2) >> 2] | 0) + 1; - _printf(48, i1 | 0) | 0; - i9 = i9 + 1 | 0; - } while ((i9 | 0) != (i3 | 0)); - _putchar(10) | 0; - i7 = i7 + -1 | 0; - if ((i8 | 0) <= 1) { - if ((i8 | 0) == (i3 | 0)) { - break; - } - } else { - while (1) { - i9 = i8 + -1 | 0; - HEAP32[i5 + (i9 << 2) >> 2] = i8; - if ((i9 | 0) > 1) { - i8 = i9; - } else { - i8 = 1; - break; - } - } - } - while (1) { - i9 = HEAP32[i6 >> 2] | 0; - if ((i8 | 0) > 0) { - i11 = 0; - while (1) { - i10 = i11 + 1 | 0; - HEAP32[i6 + (i11 << 2) >> 2] = HEAP32[i6 + (i10 << 2) >> 2]; - if ((i10 | 0) == (i8 | 0)) { - i10 = i8; - break; - } else { - i11 = i10; - } - } - } else { - i10 = 0; - } - HEAP32[i6 + (i10 << 2) >> 2] = i9; - i9 = i5 + (i8 << 2) | 0; - i11 = (HEAP32[i9 >> 2] | 0) + -1 | 0; - HEAP32[i9 >> 2] = i11; - i9 = i8 + 1 | 0; - if ((i11 | 0) > 0) { - break; - } - if ((i9 | 0) == (i3 | 0)) { - break L19; - } else { - i8 = i9; - } - } - } while ((i7 | 0) != 0); - _free(i6); - _free(i5); - if ((i4 | 0) == 0) { - i5 = 0; - } else { - i5 = 0; - while (1) { - i6 = __Z15fannkuch_workerPv(i4) | 0; - i5 = (i5 | 0) < (i6 | 0) ? i6 : i5; - i6 = HEAP32[i4 + 8 >> 2] | 0; - _free(i4); - if ((i6 | 0) == 0) { - break; - } else { - i4 = i6; - } - } - } - HEAP32[i1 >> 2] = i3; - HEAP32[i1 + 4 >> 2] = i5; - _printf(24, i1 | 0) | 0; - i11 = 0; - STACKTOP = i2; - return i11 | 0; -} -function _memcpy(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0; - i4 = i3 | 0; - if ((i3 & 3) == (i2 & 3)) { - while (i3 & 3) { - if ((i1 | 0) == 0) return i4 | 0; - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - while ((i1 | 0) >= 4) { - HEAP32[i3 >> 2] = HEAP32[i2 >> 2]; - i3 = i3 + 4 | 0; - i2 = i2 + 4 | 0; - i1 = i1 - 4 | 0; - } - } - while ((i1 | 0) > 0) { - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - return i4 | 0; -} -function _memset(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i4 = i4 & 255; - i7 = i1 & 3; - i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24; - i5 = i2 & ~3; - if (i7) { - i7 = i1 + 4 - i7 | 0; - while ((i1 | 0) < (i7 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i5 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i2 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; - HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0]; - HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0]; - HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0]; - HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0]; -} -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; -} -function runPostSets() {} -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1; - while (HEAP8[i2] | 0) { - i2 = i2 + 1 | 0; - } - return i2 - i1 | 0; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 7 & -8; - return i2 | 0; -} -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if ((__THREW__ | 0) == 0) { - __THREW__ = i1; - threwValue = i2; - } -} -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} -function setTempRet9(i1) { - i1 = i1 | 0; - tempRet9 = i1; -} -function setTempRet8(i1) { - i1 = i1 | 0; - tempRet8 = i1; -} -function setTempRet7(i1) { - i1 = i1 | 0; - tempRet7 = i1; -} -function setTempRet6(i1) { - i1 = i1 | 0; - tempRet6 = i1; -} -function setTempRet5(i1) { - i1 = i1 | 0; - tempRet5 = i1; -} -function setTempRet4(i1) { - i1 = i1 | 0; - tempRet4 = i1; -} -function setTempRet3(i1) { - i1 = i1 | 0; - tempRet3 = i1; -} -function setTempRet2(i1) { - i1 = i1 | 0; - tempRet2 = i1; -} -function setTempRet1(i1) { - i1 = i1 | 0; - tempRet1 = i1; -} -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} -function stackSave() { - return STACKTOP | 0; -} - -// EMSCRIPTEN_END_FUNCS - - - return { _strlen: _strlen, _free: _free, _main: _main, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9 }; -}) -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "_fflush": _fflush, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_putchar": _putchar, "_fputc": _fputc, "_send": _send, "_pwrite": _pwrite, "_abort": _abort, "__reallyNegative": __reallyNegative, "_fwrite": _fwrite, "_sbrk": _sbrk, "_mkport": _mkport, "_fprintf": _fprintf, "___setErrNo": ___setErrNo, "__formatString": __formatString, "_fileno": _fileno, "_printf": _printf, "_time": _time, "_sysconf": _sysconf, "_write": _write, "___errno_location": ___errno_location, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity }, buffer); -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _free = Module["_free"] = asm["_free"]; -var _main = Module["_main"] = asm["_main"]; -var _memset = Module["_memset"] = asm["_memset"]; -var _malloc = Module["_malloc"] = asm["_malloc"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included -var i64Math = null; - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - var data = Module['readBinary'](memoryInitializer); - HEAPU8.set(data, STATIC_BASE); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - HEAPU8.set(data, STATIC_BASE); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run([].concat(Module["arguments"])); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - 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("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; - - throw 'abort() at ' + stackTrace() + extra; -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - - -run([].concat(Module["arguments"])); diff --git a/implementation-contributed/v8/mjsunit/asm/embenchen/fasta.js b/implementation-contributed/v8/mjsunit/asm/embenchen/fasta.js deleted file mode 100644 index 8c663544dbd..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/embenchen/fasta.js +++ /dev/null @@ -1,8605 +0,0 @@ -var EXPECTED_OUTPUT = - 'GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n' + - 'TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n' + - 'AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n' + - 'GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n' + - 'CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n' + - 'GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n' + - 'GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n' + - 'TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n' + - 'AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n' + - 'GCCTGGGCGA\n'; -var Module = { - arguments: [1], - print: function(x) {Module.printBuffer += x + '\n';}, - preRun: [function() {Module.printBuffer = ''}], - postRun: [function() { - assertEquals(EXPECTED_OUTPUT, Module.printBuffer); - }], -}; -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - window['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependant on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - var source = Pointer_stringify(code); - if (source[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (source.indexOf('"', 1) === source.length-1) { - source = source.substr(1, source.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - try { - var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node - } catch(e) { - Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'); - throw e; - } - return Runtime.asmConstCache[code] = evalled; - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - /* TODO: use TextEncoder when present, - var encoder = new TextEncoder(); - encoder['encoding'] = "utf-8"; - var utf8Array = encoder['encode'](aMsg.data); - */ - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - getCompilerSetting: function (name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - var subs = []; - var first = true; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - if (rawList) { - if (ret) { - list.push(ret + '?'); - } - return list; - } else { - return ret + flushList(); - } - } - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'JS engine does not provide full typed array support'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === - - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(1155); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([38,2,0,0,0,0,0,0,42,0,0,0,0,0,0,0,97,0,0,0,113,61,138,62,0,0,0,0,99,0,0,0,143,194,245,61,0,0,0,0,103,0,0,0,143,194,245,61,0,0,0,0,116,0,0,0,113,61,138,62,0,0,0,0,66,0,0,0,10,215,163,60,0,0,0,0,68,0,0,0,10,215,163,60,0,0,0,0,72,0,0,0,10,215,163,60,0,0,0,0,75,0,0,0,10,215,163,60,0,0,0,0,77,0,0,0,10,215,163,60,0,0,0,0,78,0,0,0,10,215,163,60,0,0,0,0,82,0,0,0,10,215,163,60,0,0,0,0,83,0,0,0,10,215,163,60,0,0,0,0,86,0,0,0,10,215,163,60,0,0,0,0,87,0,0,0,10,215,163,60,0,0,0,0,89,0,0,0,10,215,163,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,233,28,155,62,0,0,0,0,99,0,0,0,114,189,74,62,0,0,0,0,103,0,0,0,215,73,74,62,0,0,0,0,116,0,0,0,114,95,154,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,114,114,111,114,58,32,37,100,10,0,0,0,0,0,0,71,71,67,67,71,71,71,67,71,67,71,71,84,71,71,67,84,67,65,67,71,67,67,84,71,84,65,65,84,67,67,67,65,71,67,65,67,84,84,84,71,71,71,65,71,71,67,67,71,65,71,71,67,71,71,71,67,71,71,65,84,67,65,67,67,84,71,65,71,71,84,67,65,71,71,65,71,84,84,67,71,65,71,65,67,67,65,71,67,67,84,71,71,67,67,65,65,67,65,84,71,71,84,71,65,65,65,67,67,67,67,71,84,67,84,67,84,65,67,84,65,65,65,65,65,84,65,67,65,65,65,65,65,84,84,65,71,67,67,71,71,71,67,71,84,71,71,84,71,71,67,71,67,71,67,71,67,67,84,71,84,65,65,84,67,67,67,65,71,67,84,65,67,84,67,71,71,71,65,71,71,67,84,71,65,71,71,67,65,71,71,65,71,65,65,84,67,71,67,84,84,71,65,65,67,67,67,71,71,71,65,71,71,67,71,71,65,71,71,84,84,71,67,65,71,84,71,65,71,67,67,71,65,71,65,84,67,71,67,71,67,67,65,67,84,71,67,65,67,84,67,67,65,71,67,67,84,71,71,71,67,71,65,67,65,71,65,71,67,71,65,71,65,67,84,67,67,71,84,67,84,67,65,65,65,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,4,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,8,0,0,0,104,4,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - 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 _sysconf(name) { - // long sysconf(int name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html - switch(name) { - case 30: return PAGE_SIZE; - case 132: - case 133: - case 12: - case 137: - case 138: - case 15: - case 235: - case 16: - case 17: - case 18: - case 19: - case 20: - case 149: - case 13: - case 10: - case 236: - case 153: - case 9: - case 21: - case 22: - case 159: - case 154: - case 14: - case 77: - case 78: - case 139: - case 80: - case 81: - case 79: - case 82: - case 68: - case 67: - case 164: - case 11: - case 29: - case 47: - case 48: - case 95: - case 52: - case 51: - case 46: - return 200809; - case 27: - case 246: - case 127: - case 128: - case 23: - case 24: - case 160: - case 161: - case 181: - case 182: - case 242: - case 183: - case 184: - case 243: - case 244: - case 245: - case 165: - case 178: - case 179: - case 49: - case 50: - case 168: - case 169: - case 175: - case 170: - case 171: - case 172: - case 97: - case 76: - case 32: - case 173: - case 35: - return -1; - case 176: - case 177: - case 7: - case 155: - case 8: - case 157: - case 125: - case 126: - case 92: - case 93: - case 129: - case 130: - case 131: - case 94: - case 91: - return 1; - case 74: - case 60: - case 69: - case 70: - case 4: - return 1024; - case 31: - case 42: - case 72: - return 32; - case 87: - case 26: - case 33: - return 2147483647; - case 34: - case 1: - return 47839; - case 38: - case 36: - return 99; - case 43: - case 37: - return 2048; - case 0: return 2097152; - case 3: return 65536; - case 28: return 32768; - case 44: return 32767; - case 75: return 16384; - case 39: return 1000; - case 89: return 700; - case 71: return 256; - case 40: return 255; - case 2: return 100; - case 180: return 64; - case 25: return 20; - case 5: return 16; - case 6: return 6; - case 73: return 4; - case 84: return 1; - } - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - } - - - function __ZSt18uncaught_exceptionv() { // std::uncaught_exception() - return !!__ZSt18uncaught_exceptionv.uncaught_exception; - } - - - - function ___cxa_is_number_type(type) { - var isNumber = false; - try { if (type == __ZTIi) isNumber = true } catch(e){} - try { if (type == __ZTIj) isNumber = true } catch(e){} - try { if (type == __ZTIl) isNumber = true } catch(e){} - try { if (type == __ZTIm) isNumber = true } catch(e){} - try { if (type == __ZTIx) isNumber = true } catch(e){} - try { if (type == __ZTIy) isNumber = true } catch(e){} - try { if (type == __ZTIf) isNumber = true } catch(e){} - try { if (type == __ZTId) isNumber = true } catch(e){} - try { if (type == __ZTIe) isNumber = true } catch(e){} - try { if (type == __ZTIc) isNumber = true } catch(e){} - try { if (type == __ZTIa) isNumber = true } catch(e){} - try { if (type == __ZTIh) isNumber = true } catch(e){} - try { if (type == __ZTIs) isNumber = true } catch(e){} - try { if (type == __ZTIt) isNumber = true } catch(e){} - return isNumber; - }function ___cxa_does_inherit(definiteType, possibilityType, possibility) { - if (possibility == 0) return false; - if (possibilityType == 0 || possibilityType == definiteType) - return true; - var possibility_type_info; - if (___cxa_is_number_type(possibilityType)) { - possibility_type_info = possibilityType; - } else { - var possibility_type_infoAddr = HEAP32[((possibilityType)>>2)] - 8; - possibility_type_info = HEAP32[((possibility_type_infoAddr)>>2)]; - } - switch (possibility_type_info) { - case 0: // possibility is a pointer - // See if definite type is a pointer - var definite_type_infoAddr = HEAP32[((definiteType)>>2)] - 8; - var definite_type_info = HEAP32[((definite_type_infoAddr)>>2)]; - if (definite_type_info == 0) { - // Also a pointer; compare base types of pointers - var defPointerBaseAddr = definiteType+8; - var defPointerBaseType = HEAP32[((defPointerBaseAddr)>>2)]; - var possPointerBaseAddr = possibilityType+8; - var possPointerBaseType = HEAP32[((possPointerBaseAddr)>>2)]; - return ___cxa_does_inherit(defPointerBaseType, possPointerBaseType, possibility); - } else - return false; // one pointer and one non-pointer - case 1: // class with no base class - return false; - case 2: // class with base class - var parentTypeAddr = possibilityType + 8; - var parentType = HEAP32[((parentTypeAddr)>>2)]; - return ___cxa_does_inherit(definiteType, parentType, possibility); - default: - return false; // some unencountered type - } - } - - - - var ___cxa_last_thrown_exception=0;function ___resumeException(ptr) { - if (!___cxa_last_thrown_exception) { ___cxa_last_thrown_exception = 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."; - } - - var ___cxa_exception_header_size=8;function ___cxa_find_matching_catch(thrown, throwntype) { - if (thrown == -1) thrown = ___cxa_last_thrown_exception; - header = thrown - ___cxa_exception_header_size; - if (throwntype == -1) throwntype = HEAP32[((header)>>2)]; - var typeArray = Array.prototype.slice.call(arguments, 2); - - // If throwntype is a pointer, this means a pointer has been - // thrown. When a pointer is thrown, actually what's thrown - // is a pointer to the pointer. We'll dereference it. - if (throwntype != 0 && !___cxa_is_number_type(throwntype)) { - var throwntypeInfoAddr= HEAP32[((throwntype)>>2)] - 8; - var throwntypeInfo= HEAP32[((throwntypeInfoAddr)>>2)]; - if (throwntypeInfo == 0) - thrown = HEAP32[((thrown)>>2)]; - } - // The different catch blocks are denoted by different types. - // Due to inheritance, those types may not precisely match the - // type of the thrown object. Find one which matches, and - // return the type of the catch block which should be called. - for (var i = 0; i < typeArray.length; i++) { - if (___cxa_does_inherit(typeArray[i], throwntype, thrown)) - return ((asm["setTempRet0"](typeArray[i]),thrown)|0); - } - // Shouldn't happen unless we have bogus data in typeArray - // or encounter a type for which emscripten doesn't have suitable - // typeinfo defined. Best-efforts match just in case. - return ((asm["setTempRet0"](throwntype),thrown)|0); - }function ___cxa_throw(ptr, type, destructor) { - if (!___cxa_throw.initialized) { - try { - HEAP32[((__ZTVN10__cxxabiv119__pointer_type_infoE)>>2)]=0; // Workaround for libcxxabi integration bug - } catch(e){} - try { - HEAP32[((__ZTVN10__cxxabiv117__class_type_infoE)>>2)]=1; // Workaround for libcxxabi integration bug - } catch(e){} - try { - HEAP32[((__ZTVN10__cxxabiv120__si_class_type_infoE)>>2)]=2; // Workaround for libcxxabi integration bug - } catch(e){} - ___cxa_throw.initialized = true; - } - var header = ptr - ___cxa_exception_header_size; - HEAP32[((header)>>2)]=type; - HEAP32[(((header)+(4))>>2)]=destructor; - ___cxa_last_thrown_exception = 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; - - function _abort() { - Module['abort'](); - } - - - - - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - // reuse all of the core MEMFS functionality - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },getDB:function (name, callback) { - // check the cache first - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - req.onupgradeneeded = function(e) { - var db = e.target.result; - var transaction = e.target.transaction; - - var fileStore; - - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - - fileStore.createIndex('timestamp', 'timestamp', { unique: false }); - }; - req.onsuccess = function() { - db = req.result; - - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function() { - callback(this.error); - }; - },getLocalSet:function (mount, callback) { - var entries = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat; - - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); - } - - entries[path] = { timestamp: stat.mtime }; - } - - return callback(null, { type: 'local', entries: entries }); - },getRemoteSet:function (mount, callback) { - var entries = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index('timestamp'); - - index.openKeyCursor().onsuccess = function(event) { - var cursor = event.target.result; - - if (!cursor) { - return callback(null, { type: 'remote', db: db, entries: entries }); - } - - entries[cursor.primaryKey] = { timestamp: cursor.key }; - - cursor.continue(); - }; - }); - },loadLocalEntry:function (path, callback) { - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode }); - } else if (FS.isFile(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); - } else { - return callback(new Error('node type not supported')); - } - },storeLocalEntry:function (path, entry, callback) { - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); - } else { - return callback(new Error('node type not supported')); - } - - FS.utime(path, entry.timestamp, entry.timestamp); - } catch (e) { - return callback(e); - } - - callback(null); - },removeLocalEntry:function (path, callback) { - try { - var lookup = FS.lookupPath(path); - var stat = FS.stat(path); - - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - - callback(null); - },loadRemoteEntry:function (store, path, callback) { - var req = store.get(path); - req.onsuccess = function(event) { callback(null, event.target.result); }; - req.onerror = function() { callback(this.error); }; - },storeRemoteEntry:function (store, path, entry, callback) { - var req = store.put(entry, path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },removeRemoteEntry:function (store, path, callback) { - var req = store.delete(path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create.push(key); - total++; - } - }); - - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - var e = dst.entries[key]; - var e2 = src.entries[key]; - if (!e2) { - remove.push(key); - total++; - } - }); - - if (!total) { - return callback(null); - } - - var errored = false; - var completed = 0; - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= total) { - return callback(null); - } - }; - - transaction.onerror = function() { done(this.error); }; - - // sort paths in ascending order so directory entries are created - // before the files inside them - create.sort().forEach(function (path) { - if (dst.type === 'local') { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - - // sort paths in descending order so files are deleted before their - // parent directories - remove.sort().reverse().forEach(function(path) { - if (dst.type === 'local') { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || {}; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return !!node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },getStreamFromPtr:function (ptr) { - return FS.streams[ptr - 1]; - },getPtrForStream:function (stream) { - return stream ? stream.fd + 1 : 0; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },getMounts:function (mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= mounts.length) { - callback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function (type, opts, mountpoint) { - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0, opts.canOwn); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }}; - - - - - function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - url = url + addr + ':' + port; - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - // The node ws library API for specifying optional subprotocol is slightly different than the browser's. - var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols; - - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fileno(stream) { - // int fileno(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - stream = FS.getStreamFromPtr(stream); - if (!stream) return -1; - return stream.fd; - }function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var fd = _fileno(stream); - var bytesWritten = _write(fd, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - - - Module["_strlen"] = _strlen; - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = HEAPF64[(((varargs)+(argIndex))>>3)]; - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision < 0) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - }function _printf(format, varargs) { - // int printf(const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var stdout = HEAP32[((_stdout)>>2)]; - return _fprintf(stdout, format, varargs); - } - - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - Module["_memcpy"] = _memcpy; - - - function _fputs(s, stream) { - // int fputs(const char *restrict s, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html - var fd = _fileno(stream); - return _write(fd, s, _strlen(s)); - } - - function _fputc(c, stream) { - // int fputc(int c, FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html - var chr = unSign(c & 0xFF); - HEAP8[((_fputc.ret)|0)]=chr; - var fd = _fileno(stream); - var ret = _write(fd, _fputc.ret, 1); - if (ret == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return -1; - } else { - return chr; - } - }function _puts(s) { - // int puts(const char *s); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/puts.html - // NOTE: puts() always writes an extra newline. - var stdout = HEAP32[((_stdout)>>2)]; - var ret = _fputs(s, stdout); - if (ret < 0) { - return ret; - } else { - var newlineRet = _fputc(10, stdout); - return (newlineRet < 0) ? -1 : ret + 1; - } - } - - function _sbrk(bytes) { - // Implement a Linux-like 'memory area' for our 'process'. - // Changes the size of the memory area by |bytes|; returns the - // address of the previous top ('break') of the memory area - // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP - var self = _sbrk; - if (!self.called) { - DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned - self.called = true; - assert(Runtime.dynamicAlloc); - self.alloc = Runtime.dynamicAlloc; - Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; - } - var ret = DYNAMICTOP; - if (bytes != 0) self.alloc(bytes); - return ret; // Previous break location. - } - - function ___errno_location() { - return ___errno_state; - } - - function __ZNSt9exceptionD2Ev() {} - - var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - - // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module - // Module['forcedAspectRatio'] = 4 / 3; - - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock'] || - canvas['msRequestPointerLock'] || - function(){}; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - document['msExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas || - document['msPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - document.addEventListener('mspointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - var canvasContainer = canvas.parentNode; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvasContainer) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen'] || - document['msExitFullscreen'] || - document['exitFullscreen'] || - function() {}; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else { - - // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - - if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - Browser.updateCanvasDimensions(canvas); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - document.addEventListener('MSFullscreenChange', fullScreenChange, false); - } - - // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - - // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) - canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || - canvasContainer['mozRequestFullScreen'] || - canvasContainer['msRequestFullscreen'] || - (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvasContainer.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },getMouseWheelDelta:function (event) { - return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },updateCanvasDimensions:function (canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { - if (w/h < Module['forcedAspectRatio']) { - w = Math.round(h * Module['forcedAspectRatio']); - } else { - h = Math.round(w / Module['forcedAspectRatio']); - } - } - if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != 'undefined') { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != 'undefined') { - if (w != wNative || h != hNative) { - canvas.style.setProperty( "width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } - } - }}; - - function _time(ptr) { - var ret = Math.floor(Date.now()/1000); - if (ptr) { - HEAP32[((ptr)>>2)]=ret; - } - return ret; - } - - - function _malloc(bytes) { - /* Over-allocate to make sure it is byte-aligned by 8. - * This will leak memory, but this is only the dummy - * implementation (replaced by dlmalloc normally) so - * not an issue. - */ - var ptr = Runtime.dynamicAlloc(bytes + 8); - return (ptr+8) & 0xFFFFFFF8; - } - Module["_malloc"] = _malloc;function ___cxa_allocate_exception(size) { - var ptr = _malloc(size + ___cxa_exception_header_size); - return ptr + ___cxa_exception_header_size; - } - - var __ZTISt9exception=allocate([allocate([1,0,0,0,0,0,0], "i8", ALLOC_STATIC)+8, 0], "i32", ALLOC_STATIC); - - function __ZTVN10__cxxabiv120__si_class_type_infoE() { - Module['printErr']('missing function: _ZTVN10__cxxabiv120__si_class_type_infoE'); abort(-1); - } -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -_fputc.ret = allocate([0], "i8", ALLOC_STATIC); -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - -var Math_min = Math.min; -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_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_v(index) { - try { - Module["dynCall_v"](index); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm = (function(global, env, buffer) { - 'use asm'; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - var __ZTISt9exception=env.__ZTISt9exception|0; - var __ZTVN10__cxxabiv120__si_class_type_infoE=env.__ZTVN10__cxxabiv120__si_class_type_infoE|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = +env.NaN, inf = +env.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var abort=env.abort; - var assert=env.assert; - var asmPrintInt=env.asmPrintInt; - var asmPrintFloat=env.asmPrintFloat; - var Math_min=env.min; - var invoke_ii=env.invoke_ii; - var invoke_vi=env.invoke_vi; - var invoke_v=env.invoke_v; - var _send=env._send; - var ___setErrNo=env.___setErrNo; - var ___cxa_is_number_type=env.___cxa_is_number_type; - var ___cxa_allocate_exception=env.___cxa_allocate_exception; - var ___cxa_find_matching_catch=env.___cxa_find_matching_catch; - var _fflush=env._fflush; - var _time=env._time; - var _pwrite=env._pwrite; - var __reallyNegative=env.__reallyNegative; - var _sbrk=env._sbrk; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _fileno=env._fileno; - var ___resumeException=env.___resumeException; - var __ZSt18uncaught_exceptionv=env.__ZSt18uncaught_exceptionv; - var _sysconf=env._sysconf; - var _puts=env._puts; - var _mkport=env._mkport; - var _write=env._write; - var ___errno_location=env.___errno_location; - var __ZNSt9exceptionD2Ev=env.__ZNSt9exceptionD2Ev; - var _fputc=env._fputc; - var ___cxa_throw=env.___cxa_throw; - var _abort=env._abort; - var _fwrite=env._fwrite; - var ___cxa_does_inherit=env.___cxa_does_inherit; - var _fprintf=env._fprintf; - var __formatString=env.__formatString; - var _fputs=env._fputs; - var _printf=env._printf; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function _malloc(i12) { - i12 = i12 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0; - i1 = STACKTOP; - do { - if (i12 >>> 0 < 245) { - if (i12 >>> 0 < 11) { - i12 = 16; - } else { - i12 = i12 + 11 & -8; - } - i20 = i12 >>> 3; - i18 = HEAP32[146] | 0; - i21 = i18 >>> i20; - if ((i21 & 3 | 0) != 0) { - i6 = (i21 & 1 ^ 1) + i20 | 0; - i5 = i6 << 1; - i3 = 624 + (i5 << 2) | 0; - i5 = 624 + (i5 + 2 << 2) | 0; - i7 = HEAP32[i5 >> 2] | 0; - i2 = i7 + 8 | 0; - i4 = HEAP32[i2 >> 2] | 0; - do { - if ((i3 | 0) != (i4 | 0)) { - if (i4 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i4 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i7 | 0)) { - HEAP32[i8 >> 2] = i3; - HEAP32[i5 >> 2] = i4; - break; - } else { - _abort(); - } - } else { - HEAP32[146] = i18 & ~(1 << i6); - } - } while (0); - i32 = i6 << 3; - HEAP32[i7 + 4 >> 2] = i32 | 3; - i32 = i7 + (i32 | 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - if (i12 >>> 0 > (HEAP32[592 >> 2] | 0) >>> 0) { - if ((i21 | 0) != 0) { - i7 = 2 << i20; - i7 = i21 << i20 & (i7 | 0 - i7); - i7 = (i7 & 0 - i7) + -1 | 0; - i2 = i7 >>> 12 & 16; - i7 = i7 >>> i2; - i6 = i7 >>> 5 & 8; - i7 = i7 >>> i6; - i5 = i7 >>> 2 & 4; - i7 = i7 >>> i5; - i4 = i7 >>> 1 & 2; - i7 = i7 >>> i4; - i3 = i7 >>> 1 & 1; - i3 = (i6 | i2 | i5 | i4 | i3) + (i7 >>> i3) | 0; - i7 = i3 << 1; - i4 = 624 + (i7 << 2) | 0; - i7 = 624 + (i7 + 2 << 2) | 0; - i5 = HEAP32[i7 >> 2] | 0; - i2 = i5 + 8 | 0; - i6 = HEAP32[i2 >> 2] | 0; - do { - if ((i4 | 0) != (i6 | 0)) { - if (i6 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i6 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i5 | 0)) { - HEAP32[i8 >> 2] = i4; - HEAP32[i7 >> 2] = i6; - break; - } else { - _abort(); - } - } else { - HEAP32[146] = i18 & ~(1 << i3); - } - } while (0); - i6 = i3 << 3; - i4 = i6 - i12 | 0; - HEAP32[i5 + 4 >> 2] = i12 | 3; - i3 = i5 + i12 | 0; - HEAP32[i5 + (i12 | 4) >> 2] = i4 | 1; - HEAP32[i5 + i6 >> 2] = i4; - i6 = HEAP32[592 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[604 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 624 + (i9 << 2) | 0; - i7 = HEAP32[146] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 624 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - i28 = i7; - i27 = i8; - } - } else { - HEAP32[146] = i7 | i8; - i28 = 624 + (i9 + 2 << 2) | 0; - i27 = i6; - } - HEAP32[i28 >> 2] = i5; - HEAP32[i27 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i27; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[592 >> 2] = i4; - HEAP32[604 >> 2] = i3; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[588 >> 2] | 0; - if ((i18 | 0) != 0) { - i2 = (i18 & 0 - i18) + -1 | 0; - i31 = i2 >>> 12 & 16; - i2 = i2 >>> i31; - i30 = i2 >>> 5 & 8; - i2 = i2 >>> i30; - i32 = i2 >>> 2 & 4; - i2 = i2 >>> i32; - i6 = i2 >>> 1 & 2; - i2 = i2 >>> i6; - i3 = i2 >>> 1 & 1; - i3 = HEAP32[888 + ((i30 | i31 | i32 | i6 | i3) + (i2 >>> i3) << 2) >> 2] | 0; - i2 = (HEAP32[i3 + 4 >> 2] & -8) - i12 | 0; - i6 = i3; - while (1) { - i5 = HEAP32[i6 + 16 >> 2] | 0; - if ((i5 | 0) == 0) { - i5 = HEAP32[i6 + 20 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - } - i6 = (HEAP32[i5 + 4 >> 2] & -8) - i12 | 0; - i4 = i6 >>> 0 < i2 >>> 0; - i2 = i4 ? i6 : i2; - i6 = i5; - i3 = i4 ? i5 : i3; - } - i6 = HEAP32[600 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - i4 = i3 + i12 | 0; - if (!(i3 >>> 0 < i4 >>> 0)) { - _abort(); - } - i5 = HEAP32[i3 + 24 >> 2] | 0; - i7 = HEAP32[i3 + 12 >> 2] | 0; - do { - if ((i7 | 0) == (i3 | 0)) { - i8 = i3 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i8 = i3 + 16 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i26 = 0; - break; - } - } - while (1) { - i10 = i7 + 20 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) != 0) { - i7 = i9; - i8 = i10; - continue; - } - i10 = i7 + 16 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } else { - i7 = i9; - i8 = i10; - } - } - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i8 >> 2] = 0; - i26 = i7; - break; - } - } else { - i8 = HEAP32[i3 + 8 >> 2] | 0; - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } - i6 = i8 + 12 | 0; - if ((HEAP32[i6 >> 2] | 0) != (i3 | 0)) { - _abort(); - } - i9 = i7 + 8 | 0; - if ((HEAP32[i9 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i7; - HEAP32[i9 >> 2] = i8; - i26 = i7; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i5 | 0) != 0) { - i7 = HEAP32[i3 + 28 >> 2] | 0; - i6 = 888 + (i7 << 2) | 0; - if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) { - HEAP32[i6 >> 2] = i26; - if ((i26 | 0) == 0) { - HEAP32[588 >> 2] = HEAP32[588 >> 2] & ~(1 << i7); - break; - } - } else { - if (i5 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i6 = i5 + 16 | 0; - if ((HEAP32[i6 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i26; - } else { - HEAP32[i5 + 20 >> 2] = i26; - } - if ((i26 | 0) == 0) { - break; - } - } - if (i26 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i26 + 24 >> 2] = i5; - i5 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 16 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } while (0); - i5 = HEAP32[i3 + 20 >> 2] | 0; - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 20 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } - } while (0); - if (i2 >>> 0 < 16) { - i32 = i2 + i12 | 0; - HEAP32[i3 + 4 >> 2] = i32 | 3; - i32 = i3 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } else { - HEAP32[i3 + 4 >> 2] = i12 | 3; - HEAP32[i3 + (i12 | 4) >> 2] = i2 | 1; - HEAP32[i3 + (i2 + i12) >> 2] = i2; - i6 = HEAP32[592 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[604 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 624 + (i9 << 2) | 0; - i7 = HEAP32[146] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 624 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - i25 = i7; - i24 = i8; - } - } else { - HEAP32[146] = i7 | i8; - i25 = 624 + (i9 + 2 << 2) | 0; - i24 = i6; - } - HEAP32[i25 >> 2] = i5; - HEAP32[i24 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i24; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[592 >> 2] = i2; - HEAP32[604 >> 2] = i4; - } - i32 = i3 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - if (!(i12 >>> 0 > 4294967231)) { - i24 = i12 + 11 | 0; - i12 = i24 & -8; - i26 = HEAP32[588 >> 2] | 0; - if ((i26 | 0) != 0) { - i25 = 0 - i12 | 0; - i24 = i24 >>> 8; - if ((i24 | 0) != 0) { - if (i12 >>> 0 > 16777215) { - i27 = 31; - } else { - i31 = (i24 + 1048320 | 0) >>> 16 & 8; - i32 = i24 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i27 = (i32 + 245760 | 0) >>> 16 & 2; - i27 = 14 - (i30 | i31 | i27) + (i32 << i27 >>> 15) | 0; - i27 = i12 >>> (i27 + 7 | 0) & 1 | i27 << 1; - } - } else { - i27 = 0; - } - i30 = HEAP32[888 + (i27 << 2) >> 2] | 0; - L126 : do { - if ((i30 | 0) == 0) { - i29 = 0; - i24 = 0; - } else { - if ((i27 | 0) == 31) { - i24 = 0; - } else { - i24 = 25 - (i27 >>> 1) | 0; - } - i29 = 0; - i28 = i12 << i24; - i24 = 0; - while (1) { - i32 = HEAP32[i30 + 4 >> 2] & -8; - i31 = i32 - i12 | 0; - if (i31 >>> 0 < i25 >>> 0) { - if ((i32 | 0) == (i12 | 0)) { - i25 = i31; - i29 = i30; - i24 = i30; - break L126; - } else { - i25 = i31; - i24 = i30; - } - } - i31 = HEAP32[i30 + 20 >> 2] | 0; - i30 = HEAP32[i30 + (i28 >>> 31 << 2) + 16 >> 2] | 0; - i29 = (i31 | 0) == 0 | (i31 | 0) == (i30 | 0) ? i29 : i31; - if ((i30 | 0) == 0) { - break; - } else { - i28 = i28 << 1; - } - } - } - } while (0); - if ((i29 | 0) == 0 & (i24 | 0) == 0) { - i32 = 2 << i27; - i26 = i26 & (i32 | 0 - i32); - if ((i26 | 0) == 0) { - break; - } - i32 = (i26 & 0 - i26) + -1 | 0; - i28 = i32 >>> 12 & 16; - i32 = i32 >>> i28; - i27 = i32 >>> 5 & 8; - i32 = i32 >>> i27; - i30 = i32 >>> 2 & 4; - i32 = i32 >>> i30; - i31 = i32 >>> 1 & 2; - i32 = i32 >>> i31; - i29 = i32 >>> 1 & 1; - i29 = HEAP32[888 + ((i27 | i28 | i30 | i31 | i29) + (i32 >>> i29) << 2) >> 2] | 0; - } - if ((i29 | 0) != 0) { - while (1) { - i27 = (HEAP32[i29 + 4 >> 2] & -8) - i12 | 0; - i26 = i27 >>> 0 < i25 >>> 0; - i25 = i26 ? i27 : i25; - i24 = i26 ? i29 : i24; - i26 = HEAP32[i29 + 16 >> 2] | 0; - if ((i26 | 0) != 0) { - i29 = i26; - continue; - } - i29 = HEAP32[i29 + 20 >> 2] | 0; - if ((i29 | 0) == 0) { - break; - } - } - } - if ((i24 | 0) != 0 ? i25 >>> 0 < ((HEAP32[592 >> 2] | 0) - i12 | 0) >>> 0 : 0) { - i4 = HEAP32[600 >> 2] | 0; - if (i24 >>> 0 < i4 >>> 0) { - _abort(); - } - i2 = i24 + i12 | 0; - if (!(i24 >>> 0 < i2 >>> 0)) { - _abort(); - } - i3 = HEAP32[i24 + 24 >> 2] | 0; - i6 = HEAP32[i24 + 12 >> 2] | 0; - do { - if ((i6 | 0) == (i24 | 0)) { - i6 = i24 + 20 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i6 = i24 + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i22 = 0; - break; - } - } - while (1) { - i8 = i5 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) != 0) { - i5 = i7; - i6 = i8; - continue; - } - i7 = i5 + 16 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 | 0) == 0) { - break; - } else { - i5 = i8; - i6 = i7; - } - } - if (i6 >>> 0 < i4 >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = 0; - i22 = i5; - break; - } - } else { - i5 = HEAP32[i24 + 8 >> 2] | 0; - if (i5 >>> 0 < i4 >>> 0) { - _abort(); - } - i7 = i5 + 12 | 0; - if ((HEAP32[i7 >> 2] | 0) != (i24 | 0)) { - _abort(); - } - i4 = i6 + 8 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i7 >> 2] = i6; - HEAP32[i4 >> 2] = i5; - i22 = i6; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i3 | 0) != 0) { - i4 = HEAP32[i24 + 28 >> 2] | 0; - i5 = 888 + (i4 << 2) | 0; - if ((i24 | 0) == (HEAP32[i5 >> 2] | 0)) { - HEAP32[i5 >> 2] = i22; - if ((i22 | 0) == 0) { - HEAP32[588 >> 2] = HEAP32[588 >> 2] & ~(1 << i4); - break; - } - } else { - if (i3 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i4 = i3 + 16 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i4 >> 2] = i22; - } else { - HEAP32[i3 + 20 >> 2] = i22; - } - if ((i22 | 0) == 0) { - break; - } - } - if (i22 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i22 + 24 >> 2] = i3; - i3 = HEAP32[i24 + 16 >> 2] | 0; - do { - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 16 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } while (0); - i3 = HEAP32[i24 + 20 >> 2] | 0; - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 20 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } - } while (0); - L204 : do { - if (!(i25 >>> 0 < 16)) { - HEAP32[i24 + 4 >> 2] = i12 | 3; - HEAP32[i24 + (i12 | 4) >> 2] = i25 | 1; - HEAP32[i24 + (i25 + i12) >> 2] = i25; - i4 = i25 >>> 3; - if (i25 >>> 0 < 256) { - i6 = i4 << 1; - i3 = 624 + (i6 << 2) | 0; - i5 = HEAP32[146] | 0; - i4 = 1 << i4; - if ((i5 & i4 | 0) != 0) { - i5 = 624 + (i6 + 2 << 2) | 0; - i4 = HEAP32[i5 >> 2] | 0; - if (i4 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - i21 = i5; - i20 = i4; - } - } else { - HEAP32[146] = i5 | i4; - i21 = 624 + (i6 + 2 << 2) | 0; - i20 = i3; - } - HEAP32[i21 >> 2] = i2; - HEAP32[i20 + 12 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i20; - HEAP32[i24 + (i12 + 12) >> 2] = i3; - break; - } - i3 = i25 >>> 8; - if ((i3 | 0) != 0) { - if (i25 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i25 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i6 = 888 + (i3 << 2) | 0; - HEAP32[i24 + (i12 + 28) >> 2] = i3; - HEAP32[i24 + (i12 + 20) >> 2] = 0; - HEAP32[i24 + (i12 + 16) >> 2] = 0; - i4 = HEAP32[588 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[588 >> 2] = i4 | i5; - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i6; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break; - } - i4 = HEAP32[i6 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L225 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i25 | 0)) { - i3 = i25 << i3; - while (1) { - i6 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i25 | 0)) { - i18 = i5; - break L225; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i6 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i4; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break L204; - } - } else { - i18 = i4; - } - } while (0); - i4 = i18 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[600 >> 2] | 0; - if (i18 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i2; - HEAP32[i4 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i3; - HEAP32[i24 + (i12 + 12) >> 2] = i18; - HEAP32[i24 + (i12 + 24) >> 2] = 0; - break; - } - } else { - i32 = i25 + i12 | 0; - HEAP32[i24 + 4 >> 2] = i32 | 3; - i32 = i24 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - } while (0); - i32 = i24 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - i12 = -1; - } - } - } while (0); - i18 = HEAP32[592 >> 2] | 0; - if (!(i12 >>> 0 > i18 >>> 0)) { - i3 = i18 - i12 | 0; - i2 = HEAP32[604 >> 2] | 0; - if (i3 >>> 0 > 15) { - HEAP32[604 >> 2] = i2 + i12; - HEAP32[592 >> 2] = i3; - HEAP32[i2 + (i12 + 4) >> 2] = i3 | 1; - HEAP32[i2 + i18 >> 2] = i3; - HEAP32[i2 + 4 >> 2] = i12 | 3; - } else { - HEAP32[592 >> 2] = 0; - HEAP32[604 >> 2] = 0; - HEAP32[i2 + 4 >> 2] = i18 | 3; - i32 = i2 + (i18 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - i32 = i2 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[596 >> 2] | 0; - if (i12 >>> 0 < i18 >>> 0) { - i31 = i18 - i12 | 0; - HEAP32[596 >> 2] = i31; - i32 = HEAP32[608 >> 2] | 0; - HEAP32[608 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - do { - if ((HEAP32[264] | 0) == 0) { - i18 = _sysconf(30) | 0; - if ((i18 + -1 & i18 | 0) == 0) { - HEAP32[1064 >> 2] = i18; - HEAP32[1060 >> 2] = i18; - HEAP32[1068 >> 2] = -1; - HEAP32[1072 >> 2] = -1; - HEAP32[1076 >> 2] = 0; - HEAP32[1028 >> 2] = 0; - HEAP32[264] = (_time(0) | 0) & -16 ^ 1431655768; - break; - } else { - _abort(); - } - } - } while (0); - i20 = i12 + 48 | 0; - i25 = HEAP32[1064 >> 2] | 0; - i21 = i12 + 47 | 0; - i22 = i25 + i21 | 0; - i25 = 0 - i25 | 0; - i18 = i22 & i25; - if (!(i18 >>> 0 > i12 >>> 0)) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - i24 = HEAP32[1024 >> 2] | 0; - if ((i24 | 0) != 0 ? (i31 = HEAP32[1016 >> 2] | 0, i32 = i31 + i18 | 0, i32 >>> 0 <= i31 >>> 0 | i32 >>> 0 > i24 >>> 0) : 0) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - L269 : do { - if ((HEAP32[1028 >> 2] & 4 | 0) == 0) { - i26 = HEAP32[608 >> 2] | 0; - L271 : do { - if ((i26 | 0) != 0) { - i24 = 1032 | 0; - while (1) { - i27 = HEAP32[i24 >> 2] | 0; - if (!(i27 >>> 0 > i26 >>> 0) ? (i23 = i24 + 4 | 0, (i27 + (HEAP32[i23 >> 2] | 0) | 0) >>> 0 > i26 >>> 0) : 0) { - break; - } - i24 = HEAP32[i24 + 8 >> 2] | 0; - if ((i24 | 0) == 0) { - i13 = 182; - break L271; - } - } - if ((i24 | 0) != 0) { - i25 = i22 - (HEAP32[596 >> 2] | 0) & i25; - if (i25 >>> 0 < 2147483647) { - i13 = _sbrk(i25 | 0) | 0; - i26 = (i13 | 0) == ((HEAP32[i24 >> 2] | 0) + (HEAP32[i23 >> 2] | 0) | 0); - i22 = i13; - i24 = i25; - i23 = i26 ? i13 : -1; - i25 = i26 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i13 = 182; - } - } else { - i13 = 182; - } - } while (0); - do { - if ((i13 | 0) == 182) { - i23 = _sbrk(0) | 0; - if ((i23 | 0) != (-1 | 0)) { - i24 = i23; - i22 = HEAP32[1060 >> 2] | 0; - i25 = i22 + -1 | 0; - if ((i25 & i24 | 0) == 0) { - i25 = i18; - } else { - i25 = i18 - i24 + (i25 + i24 & 0 - i22) | 0; - } - i24 = HEAP32[1016 >> 2] | 0; - i26 = i24 + i25 | 0; - if (i25 >>> 0 > i12 >>> 0 & i25 >>> 0 < 2147483647) { - i22 = HEAP32[1024 >> 2] | 0; - if ((i22 | 0) != 0 ? i26 >>> 0 <= i24 >>> 0 | i26 >>> 0 > i22 >>> 0 : 0) { - i25 = 0; - break; - } - i22 = _sbrk(i25 | 0) | 0; - i13 = (i22 | 0) == (i23 | 0); - i24 = i25; - i23 = i13 ? i23 : -1; - i25 = i13 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i25 = 0; - } - } - } while (0); - L291 : do { - if ((i13 | 0) == 191) { - i13 = 0 - i24 | 0; - if ((i23 | 0) != (-1 | 0)) { - i17 = i23; - i14 = i25; - i13 = 202; - break L269; - } - do { - if ((i22 | 0) != (-1 | 0) & i24 >>> 0 < 2147483647 & i24 >>> 0 < i20 >>> 0 ? (i19 = HEAP32[1064 >> 2] | 0, i19 = i21 - i24 + i19 & 0 - i19, i19 >>> 0 < 2147483647) : 0) { - if ((_sbrk(i19 | 0) | 0) == (-1 | 0)) { - _sbrk(i13 | 0) | 0; - break L291; - } else { - i24 = i19 + i24 | 0; - break; - } - } - } while (0); - if ((i22 | 0) != (-1 | 0)) { - i17 = i22; - i14 = i24; - i13 = 202; - break L269; - } - } - } while (0); - HEAP32[1028 >> 2] = HEAP32[1028 >> 2] | 4; - i13 = 199; - } else { - i25 = 0; - i13 = 199; - } - } while (0); - if ((((i13 | 0) == 199 ? i18 >>> 0 < 2147483647 : 0) ? (i17 = _sbrk(i18 | 0) | 0, i16 = _sbrk(0) | 0, (i16 | 0) != (-1 | 0) & (i17 | 0) != (-1 | 0) & i17 >>> 0 < i16 >>> 0) : 0) ? (i15 = i16 - i17 | 0, i14 = i15 >>> 0 > (i12 + 40 | 0) >>> 0, i14) : 0) { - i14 = i14 ? i15 : i25; - i13 = 202; - } - if ((i13 | 0) == 202) { - i15 = (HEAP32[1016 >> 2] | 0) + i14 | 0; - HEAP32[1016 >> 2] = i15; - if (i15 >>> 0 > (HEAP32[1020 >> 2] | 0) >>> 0) { - HEAP32[1020 >> 2] = i15; - } - i15 = HEAP32[608 >> 2] | 0; - L311 : do { - if ((i15 | 0) != 0) { - i21 = 1032 | 0; - while (1) { - i16 = HEAP32[i21 >> 2] | 0; - i19 = i21 + 4 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i17 | 0) == (i16 + i20 | 0)) { - i13 = 214; - break; - } - i18 = HEAP32[i21 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i21 = i18; - } - } - if (((i13 | 0) == 214 ? (HEAP32[i21 + 12 >> 2] & 8 | 0) == 0 : 0) ? i15 >>> 0 >= i16 >>> 0 & i15 >>> 0 < i17 >>> 0 : 0) { - HEAP32[i19 >> 2] = i20 + i14; - i2 = (HEAP32[596 >> 2] | 0) + i14 | 0; - i3 = i15 + 8 | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i32 = i2 - i3 | 0; - HEAP32[608 >> 2] = i15 + i3; - HEAP32[596 >> 2] = i32; - HEAP32[i15 + (i3 + 4) >> 2] = i32 | 1; - HEAP32[i15 + (i2 + 4) >> 2] = 40; - HEAP32[612 >> 2] = HEAP32[1072 >> 2]; - break; - } - if (i17 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - HEAP32[600 >> 2] = i17; - } - i19 = i17 + i14 | 0; - i16 = 1032 | 0; - while (1) { - if ((HEAP32[i16 >> 2] | 0) == (i19 | 0)) { - i13 = 224; - break; - } - i18 = HEAP32[i16 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i16 = i18; - } - } - if ((i13 | 0) == 224 ? (HEAP32[i16 + 12 >> 2] & 8 | 0) == 0 : 0) { - HEAP32[i16 >> 2] = i17; - i6 = i16 + 4 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i14; - i6 = i17 + 8 | 0; - if ((i6 & 7 | 0) == 0) { - i6 = 0; - } else { - i6 = 0 - i6 & 7; - } - i7 = i17 + (i14 + 8) | 0; - if ((i7 & 7 | 0) == 0) { - i13 = 0; - } else { - i13 = 0 - i7 & 7; - } - i15 = i17 + (i13 + i14) | 0; - i8 = i6 + i12 | 0; - i7 = i17 + i8 | 0; - i10 = i15 - (i17 + i6) - i12 | 0; - HEAP32[i17 + (i6 + 4) >> 2] = i12 | 3; - L348 : do { - if ((i15 | 0) != (HEAP32[608 >> 2] | 0)) { - if ((i15 | 0) == (HEAP32[604 >> 2] | 0)) { - i32 = (HEAP32[592 >> 2] | 0) + i10 | 0; - HEAP32[592 >> 2] = i32; - HEAP32[604 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i32 + i8) >> 2] = i32; - break; - } - i12 = i14 + 4 | 0; - i18 = HEAP32[i17 + (i12 + i13) >> 2] | 0; - if ((i18 & 3 | 0) == 1) { - i11 = i18 & -8; - i16 = i18 >>> 3; - do { - if (!(i18 >>> 0 < 256)) { - i9 = HEAP32[i17 + ((i13 | 24) + i14) >> 2] | 0; - i19 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - do { - if ((i19 | 0) == (i15 | 0)) { - i19 = i13 | 16; - i18 = i17 + (i12 + i19) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i18 = i17 + (i19 + i14) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i5 = 0; - break; - } - } - while (1) { - i20 = i16 + 20 | 0; - i19 = HEAP32[i20 >> 2] | 0; - if ((i19 | 0) != 0) { - i16 = i19; - i18 = i20; - continue; - } - i19 = i16 + 16 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i20 | 0) == 0) { - break; - } else { - i16 = i20; - i18 = i19; - } - } - if (i18 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i18 >> 2] = 0; - i5 = i16; - break; - } - } else { - i18 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - if (i18 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i18 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - i20 = i19 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i19; - HEAP32[i20 >> 2] = i18; - i5 = i19; - break; - } else { - _abort(); - } - } - } while (0); - if ((i9 | 0) != 0) { - i16 = HEAP32[i17 + (i14 + 28 + i13) >> 2] | 0; - i18 = 888 + (i16 << 2) | 0; - if ((i15 | 0) == (HEAP32[i18 >> 2] | 0)) { - HEAP32[i18 >> 2] = i5; - if ((i5 | 0) == 0) { - HEAP32[588 >> 2] = HEAP32[588 >> 2] & ~(1 << i16); - break; - } - } else { - if (i9 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i9 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i5; - } else { - HEAP32[i9 + 20 >> 2] = i5; - } - if ((i5 | 0) == 0) { - break; - } - } - if (i5 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i5 + 24 >> 2] = i9; - i15 = i13 | 16; - i9 = HEAP32[i17 + (i15 + i14) >> 2] | 0; - do { - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 16 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } while (0); - i9 = HEAP32[i17 + (i12 + i15) >> 2] | 0; - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 20 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } - } else { - i5 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - i12 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - i18 = 624 + (i16 << 1 << 2) | 0; - if ((i5 | 0) != (i18 | 0)) { - if (i5 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i5 + 12 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - } - if ((i12 | 0) == (i5 | 0)) { - HEAP32[146] = HEAP32[146] & ~(1 << i16); - break; - } - if ((i12 | 0) != (i18 | 0)) { - if (i12 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i12 + 8 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - i9 = i16; - } else { - _abort(); - } - } else { - i9 = i12 + 8 | 0; - } - HEAP32[i5 + 12 >> 2] = i12; - HEAP32[i9 >> 2] = i5; - } - } while (0); - i15 = i17 + ((i11 | i13) + i14) | 0; - i10 = i11 + i10 | 0; - } - i5 = i15 + 4 | 0; - HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -2; - HEAP32[i17 + (i8 + 4) >> 2] = i10 | 1; - HEAP32[i17 + (i10 + i8) >> 2] = i10; - i5 = i10 >>> 3; - if (i10 >>> 0 < 256) { - i10 = i5 << 1; - i2 = 624 + (i10 << 2) | 0; - i9 = HEAP32[146] | 0; - i5 = 1 << i5; - if ((i9 & i5 | 0) != 0) { - i9 = 624 + (i10 + 2 << 2) | 0; - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - i3 = i9; - i4 = i5; - } - } else { - HEAP32[146] = i9 | i5; - i3 = 624 + (i10 + 2 << 2) | 0; - i4 = i2; - } - HEAP32[i3 >> 2] = i7; - HEAP32[i4 + 12 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - break; - } - i3 = i10 >>> 8; - if ((i3 | 0) != 0) { - if (i10 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i10 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i4 = 888 + (i3 << 2) | 0; - HEAP32[i17 + (i8 + 28) >> 2] = i3; - HEAP32[i17 + (i8 + 20) >> 2] = 0; - HEAP32[i17 + (i8 + 16) >> 2] = 0; - i9 = HEAP32[588 >> 2] | 0; - i5 = 1 << i3; - if ((i9 & i5 | 0) == 0) { - HEAP32[588 >> 2] = i9 | i5; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L444 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i10 | 0)) { - i3 = i10 << i3; - while (1) { - i5 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i9 = HEAP32[i5 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } - if ((HEAP32[i9 + 4 >> 2] & -8 | 0) == (i10 | 0)) { - i2 = i9; - break L444; - } else { - i3 = i3 << 1; - i4 = i9; - } - } - if (i5 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break L348; - } - } else { - i2 = i4; - } - } while (0); - i4 = i2 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[600 >> 2] | 0; - if (i2 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i7; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i3; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - HEAP32[i17 + (i8 + 24) >> 2] = 0; - break; - } - } else { - i32 = (HEAP32[596 >> 2] | 0) + i10 | 0; - HEAP32[596 >> 2] = i32; - HEAP32[608 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - } - } while (0); - i32 = i17 + (i6 | 8) | 0; - STACKTOP = i1; - return i32 | 0; - } - i3 = 1032 | 0; - while (1) { - i2 = HEAP32[i3 >> 2] | 0; - if (!(i2 >>> 0 > i15 >>> 0) ? (i11 = HEAP32[i3 + 4 >> 2] | 0, i10 = i2 + i11 | 0, i10 >>> 0 > i15 >>> 0) : 0) { - break; - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - } - i3 = i2 + (i11 + -39) | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i2 = i2 + (i11 + -47 + i3) | 0; - i2 = i2 >>> 0 < (i15 + 16 | 0) >>> 0 ? i15 : i2; - i3 = i2 + 8 | 0; - i4 = i17 + 8 | 0; - if ((i4 & 7 | 0) == 0) { - i4 = 0; - } else { - i4 = 0 - i4 & 7; - } - i32 = i14 + -40 - i4 | 0; - HEAP32[608 >> 2] = i17 + i4; - HEAP32[596 >> 2] = i32; - HEAP32[i17 + (i4 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[612 >> 2] = HEAP32[1072 >> 2]; - HEAP32[i2 + 4 >> 2] = 27; - HEAP32[i3 + 0 >> 2] = HEAP32[1032 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[1036 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[1040 >> 2]; - HEAP32[i3 + 12 >> 2] = HEAP32[1044 >> 2]; - HEAP32[1032 >> 2] = i17; - HEAP32[1036 >> 2] = i14; - HEAP32[1044 >> 2] = 0; - HEAP32[1040 >> 2] = i3; - i4 = i2 + 28 | 0; - HEAP32[i4 >> 2] = 7; - if ((i2 + 32 | 0) >>> 0 < i10 >>> 0) { - while (1) { - i3 = i4 + 4 | 0; - HEAP32[i3 >> 2] = 7; - if ((i4 + 8 | 0) >>> 0 < i10 >>> 0) { - i4 = i3; - } else { - break; - } - } - } - if ((i2 | 0) != (i15 | 0)) { - i2 = i2 - i15 | 0; - i3 = i15 + (i2 + 4) | 0; - HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & -2; - HEAP32[i15 + 4 >> 2] = i2 | 1; - HEAP32[i15 + i2 >> 2] = i2; - i3 = i2 >>> 3; - if (i2 >>> 0 < 256) { - i4 = i3 << 1; - i2 = 624 + (i4 << 2) | 0; - i5 = HEAP32[146] | 0; - i3 = 1 << i3; - if ((i5 & i3 | 0) != 0) { - i4 = 624 + (i4 + 2 << 2) | 0; - i3 = HEAP32[i4 >> 2] | 0; - if (i3 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - i7 = i4; - i8 = i3; - } - } else { - HEAP32[146] = i5 | i3; - i7 = 624 + (i4 + 2 << 2) | 0; - i8 = i2; - } - HEAP32[i7 >> 2] = i15; - HEAP32[i8 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i8; - HEAP32[i15 + 12 >> 2] = i2; - break; - } - i3 = i2 >>> 8; - if ((i3 | 0) != 0) { - if (i2 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i2 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i7 = 888 + (i3 << 2) | 0; - HEAP32[i15 + 28 >> 2] = i3; - HEAP32[i15 + 20 >> 2] = 0; - HEAP32[i15 + 16 >> 2] = 0; - i4 = HEAP32[588 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[588 >> 2] = i4 | i5; - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i7; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break; - } - i4 = HEAP32[i7 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L499 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i2 | 0)) { - i3 = i2 << i3; - while (1) { - i7 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i7 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i2 | 0)) { - i6 = i5; - break L499; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i7 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i4; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break L311; - } - } else { - i6 = i4; - } - } while (0); - i4 = i6 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i2 = HEAP32[600 >> 2] | 0; - if (i6 >>> 0 < i2 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i2 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i15; - HEAP32[i4 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i3; - HEAP32[i15 + 12 >> 2] = i6; - HEAP32[i15 + 24 >> 2] = 0; - break; - } - } - } else { - i32 = HEAP32[600 >> 2] | 0; - if ((i32 | 0) == 0 | i17 >>> 0 < i32 >>> 0) { - HEAP32[600 >> 2] = i17; - } - HEAP32[1032 >> 2] = i17; - HEAP32[1036 >> 2] = i14; - HEAP32[1044 >> 2] = 0; - HEAP32[620 >> 2] = HEAP32[264]; - HEAP32[616 >> 2] = -1; - i2 = 0; - do { - i32 = i2 << 1; - i31 = 624 + (i32 << 2) | 0; - HEAP32[624 + (i32 + 3 << 2) >> 2] = i31; - HEAP32[624 + (i32 + 2 << 2) >> 2] = i31; - i2 = i2 + 1 | 0; - } while ((i2 | 0) != 32); - i2 = i17 + 8 | 0; - if ((i2 & 7 | 0) == 0) { - i2 = 0; - } else { - i2 = 0 - i2 & 7; - } - i32 = i14 + -40 - i2 | 0; - HEAP32[608 >> 2] = i17 + i2; - HEAP32[596 >> 2] = i32; - HEAP32[i17 + (i2 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[612 >> 2] = HEAP32[1072 >> 2]; - } - } while (0); - i2 = HEAP32[596 >> 2] | 0; - if (i2 >>> 0 > i12 >>> 0) { - i31 = i2 - i12 | 0; - HEAP32[596 >> 2] = i31; - i32 = HEAP32[608 >> 2] | 0; - HEAP32[608 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - HEAP32[(___errno_location() | 0) >> 2] = 12; - i32 = 0; - STACKTOP = i1; - return i32 | 0; -} -function _free(i7) { - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0; - i1 = STACKTOP; - if ((i7 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = i7 + -8 | 0; - i16 = HEAP32[600 >> 2] | 0; - if (i15 >>> 0 < i16 >>> 0) { - _abort(); - } - i13 = HEAP32[i7 + -4 >> 2] | 0; - i12 = i13 & 3; - if ((i12 | 0) == 1) { - _abort(); - } - i8 = i13 & -8; - i6 = i7 + (i8 + -8) | 0; - do { - if ((i13 & 1 | 0) == 0) { - i19 = HEAP32[i15 >> 2] | 0; - if ((i12 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = -8 - i19 | 0; - i13 = i7 + i15 | 0; - i12 = i19 + i8 | 0; - if (i13 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((i13 | 0) == (HEAP32[604 >> 2] | 0)) { - i2 = i7 + (i8 + -4) | 0; - if ((HEAP32[i2 >> 2] & 3 | 0) != 3) { - i2 = i13; - i11 = i12; - break; - } - HEAP32[592 >> 2] = i12; - HEAP32[i2 >> 2] = HEAP32[i2 >> 2] & -2; - HEAP32[i7 + (i15 + 4) >> 2] = i12 | 1; - HEAP32[i6 >> 2] = i12; - STACKTOP = i1; - return; - } - i18 = i19 >>> 3; - if (i19 >>> 0 < 256) { - i2 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - i11 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - i14 = 624 + (i18 << 1 << 2) | 0; - if ((i2 | 0) != (i14 | 0)) { - if (i2 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((HEAP32[i2 + 12 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - } - if ((i11 | 0) == (i2 | 0)) { - HEAP32[146] = HEAP32[146] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - if ((i11 | 0) != (i14 | 0)) { - if (i11 >>> 0 < i16 >>> 0) { - _abort(); - } - i14 = i11 + 8 | 0; - if ((HEAP32[i14 >> 2] | 0) == (i13 | 0)) { - i17 = i14; - } else { - _abort(); - } - } else { - i17 = i11 + 8 | 0; - } - HEAP32[i2 + 12 >> 2] = i11; - HEAP32[i17 >> 2] = i2; - i2 = i13; - i11 = i12; - break; - } - i17 = HEAP32[i7 + (i15 + 24) >> 2] | 0; - i18 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - do { - if ((i18 | 0) == (i13 | 0)) { - i19 = i7 + (i15 + 20) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i19 = i7 + (i15 + 16) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i14 = 0; - break; - } - } - while (1) { - i21 = i18 + 20 | 0; - i20 = HEAP32[i21 >> 2] | 0; - if ((i20 | 0) != 0) { - i18 = i20; - i19 = i21; - continue; - } - i20 = i18 + 16 | 0; - i21 = HEAP32[i20 >> 2] | 0; - if ((i21 | 0) == 0) { - break; - } else { - i18 = i21; - i19 = i20; - } - } - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } else { - HEAP32[i19 >> 2] = 0; - i14 = i18; - break; - } - } else { - i19 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } - i16 = i19 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - i20 = i18 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i18; - HEAP32[i20 >> 2] = i19; - i14 = i18; - break; - } else { - _abort(); - } - } - } while (0); - if ((i17 | 0) != 0) { - i18 = HEAP32[i7 + (i15 + 28) >> 2] | 0; - i16 = 888 + (i18 << 2) | 0; - if ((i13 | 0) == (HEAP32[i16 >> 2] | 0)) { - HEAP32[i16 >> 2] = i14; - if ((i14 | 0) == 0) { - HEAP32[588 >> 2] = HEAP32[588 >> 2] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - } else { - if (i17 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i17 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i14; - } else { - HEAP32[i17 + 20 >> 2] = i14; - } - if ((i14 | 0) == 0) { - i2 = i13; - i11 = i12; - break; - } - } - if (i14 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i14 + 24 >> 2] = i17; - i16 = HEAP32[i7 + (i15 + 16) >> 2] | 0; - do { - if ((i16 | 0) != 0) { - if (i16 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 16 >> 2] = i16; - HEAP32[i16 + 24 >> 2] = i14; - break; - } - } - } while (0); - i15 = HEAP32[i7 + (i15 + 20) >> 2] | 0; - if ((i15 | 0) != 0) { - if (i15 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 20 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i14; - i2 = i13; - i11 = i12; - break; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i15; - i11 = i8; - } - } while (0); - if (!(i2 >>> 0 < i6 >>> 0)) { - _abort(); - } - i12 = i7 + (i8 + -4) | 0; - i13 = HEAP32[i12 >> 2] | 0; - if ((i13 & 1 | 0) == 0) { - _abort(); - } - if ((i13 & 2 | 0) == 0) { - if ((i6 | 0) == (HEAP32[608 >> 2] | 0)) { - i21 = (HEAP32[596 >> 2] | 0) + i11 | 0; - HEAP32[596 >> 2] = i21; - HEAP32[608 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - if ((i2 | 0) != (HEAP32[604 >> 2] | 0)) { - STACKTOP = i1; - return; - } - HEAP32[604 >> 2] = 0; - HEAP32[592 >> 2] = 0; - STACKTOP = i1; - return; - } - if ((i6 | 0) == (HEAP32[604 >> 2] | 0)) { - i21 = (HEAP32[592 >> 2] | 0) + i11 | 0; - HEAP32[592 >> 2] = i21; - HEAP32[604 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - HEAP32[i2 + i21 >> 2] = i21; - STACKTOP = i1; - return; - } - i11 = (i13 & -8) + i11 | 0; - i12 = i13 >>> 3; - do { - if (!(i13 >>> 0 < 256)) { - i10 = HEAP32[i7 + (i8 + 16) >> 2] | 0; - i15 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - do { - if ((i15 | 0) == (i6 | 0)) { - i13 = i7 + (i8 + 12) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i13 = i7 + (i8 + 8) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i9 = 0; - break; - } - } - while (1) { - i14 = i12 + 20 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) != 0) { - i12 = i15; - i13 = i14; - continue; - } - i14 = i12 + 16 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) == 0) { - break; - } else { - i12 = i15; - i13 = i14; - } - } - if (i13 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i13 >> 2] = 0; - i9 = i12; - break; - } - } else { - i13 = HEAP32[i7 + i8 >> 2] | 0; - if (i13 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i14 = i13 + 12 | 0; - if ((HEAP32[i14 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - i12 = i15 + 8 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i14 >> 2] = i15; - HEAP32[i12 >> 2] = i13; - i9 = i15; - break; - } else { - _abort(); - } - } - } while (0); - if ((i10 | 0) != 0) { - i12 = HEAP32[i7 + (i8 + 20) >> 2] | 0; - i13 = 888 + (i12 << 2) | 0; - if ((i6 | 0) == (HEAP32[i13 >> 2] | 0)) { - HEAP32[i13 >> 2] = i9; - if ((i9 | 0) == 0) { - HEAP32[588 >> 2] = HEAP32[588 >> 2] & ~(1 << i12); - break; - } - } else { - if (i10 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i12 = i10 + 16 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i12 >> 2] = i9; - } else { - HEAP32[i10 + 20 >> 2] = i9; - } - if ((i9 | 0) == 0) { - break; - } - } - if (i9 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i9 + 24 >> 2] = i10; - i6 = HEAP32[i7 + (i8 + 8) >> 2] | 0; - do { - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 16 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } while (0); - i6 = HEAP32[i7 + (i8 + 12) >> 2] | 0; - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 20 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } - } else { - i9 = HEAP32[i7 + i8 >> 2] | 0; - i7 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - i8 = 624 + (i12 << 1 << 2) | 0; - if ((i9 | 0) != (i8 | 0)) { - if (i9 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i9 + 12 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - } - if ((i7 | 0) == (i9 | 0)) { - HEAP32[146] = HEAP32[146] & ~(1 << i12); - break; - } - if ((i7 | 0) != (i8 | 0)) { - if (i7 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i7 + 8 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) { - i10 = i8; - } else { - _abort(); - } - } else { - i10 = i7 + 8 | 0; - } - HEAP32[i9 + 12 >> 2] = i7; - HEAP32[i10 >> 2] = i9; - } - } while (0); - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - if ((i2 | 0) == (HEAP32[604 >> 2] | 0)) { - HEAP32[592 >> 2] = i11; - STACKTOP = i1; - return; - } - } else { - HEAP32[i12 >> 2] = i13 & -2; - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - } - i6 = i11 >>> 3; - if (i11 >>> 0 < 256) { - i7 = i6 << 1; - i3 = 624 + (i7 << 2) | 0; - i8 = HEAP32[146] | 0; - i6 = 1 << i6; - if ((i8 & i6 | 0) != 0) { - i6 = 624 + (i7 + 2 << 2) | 0; - i7 = HEAP32[i6 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - i4 = i6; - i5 = i7; - } - } else { - HEAP32[146] = i8 | i6; - i4 = 624 + (i7 + 2 << 2) | 0; - i5 = i3; - } - HEAP32[i4 >> 2] = i2; - HEAP32[i5 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i3; - STACKTOP = i1; - return; - } - i4 = i11 >>> 8; - if ((i4 | 0) != 0) { - if (i11 >>> 0 > 16777215) { - i4 = 31; - } else { - i20 = (i4 + 1048320 | 0) >>> 16 & 8; - i21 = i4 << i20; - i19 = (i21 + 520192 | 0) >>> 16 & 4; - i21 = i21 << i19; - i4 = (i21 + 245760 | 0) >>> 16 & 2; - i4 = 14 - (i19 | i20 | i4) + (i21 << i4 >>> 15) | 0; - i4 = i11 >>> (i4 + 7 | 0) & 1 | i4 << 1; - } - } else { - i4 = 0; - } - i5 = 888 + (i4 << 2) | 0; - HEAP32[i2 + 28 >> 2] = i4; - HEAP32[i2 + 20 >> 2] = 0; - HEAP32[i2 + 16 >> 2] = 0; - i7 = HEAP32[588 >> 2] | 0; - i6 = 1 << i4; - L199 : do { - if ((i7 & i6 | 0) != 0) { - i5 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) == 31) { - i4 = 0; - } else { - i4 = 25 - (i4 >>> 1) | 0; - } - L204 : do { - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) != (i11 | 0)) { - i4 = i11 << i4; - i7 = i5; - while (1) { - i6 = i7 + (i4 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i11 | 0)) { - i3 = i5; - break L204; - } else { - i4 = i4 << 1; - i7 = i5; - } - } - if (i6 >>> 0 < (HEAP32[600 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i7; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - break L199; - } - } else { - i3 = i5; - } - } while (0); - i5 = i3 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i6 = HEAP32[600 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - if (i4 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i4 + 12 >> 2] = i2; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i4; - HEAP32[i2 + 12 >> 2] = i3; - HEAP32[i2 + 24 >> 2] = 0; - break; - } - } else { - HEAP32[588 >> 2] = i7 | i6; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - } - } while (0); - i21 = (HEAP32[616 >> 2] | 0) + -1 | 0; - HEAP32[616 >> 2] = i21; - if ((i21 | 0) == 0) { - i2 = 1040 | 0; - } else { - STACKTOP = i1; - return; - } - while (1) { - i2 = HEAP32[i2 >> 2] | 0; - if ((i2 | 0) == 0) { - break; - } else { - i2 = i2 + 8 | 0; - } - } - HEAP32[616 >> 2] = -1; - STACKTOP = i1; - return; -} -function _main(i7, i8) { - i7 = i7 | 0; - i8 = i8 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, d9 = 0.0, d10 = 0.0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 4272 | 0; - i3 = i2; - i5 = i2 + 4248 | 0; - i4 = i2 + 2128 | 0; - i1 = i2 + 8 | 0; - L1 : do { - if ((i7 | 0) > 1) { - i7 = HEAP8[HEAP32[i8 + 4 >> 2] | 0] | 0; - switch (i7 | 0) { - case 50: - { - i3 = 95e5; - break L1; - } - case 51: - { - i6 = 4; - break L1; - } - case 52: - { - i3 = 95e6; - break L1; - } - case 53: - { - i3 = 19e7; - break L1; - } - case 49: - { - i3 = 95e4; - break L1; - } - case 48: - { - i8 = 0; - STACKTOP = i2; - return i8 | 0; - } - default: - { - HEAP32[i3 >> 2] = i7 + -48; - _printf(280, i3 | 0) | 0; - i8 = -1; - STACKTOP = i2; - return i8 | 0; - } - } - } else { - i6 = 4; - } - } while (0); - if ((i6 | 0) == 4) { - i3 = 19e6; - } - HEAP32[i5 + 8 >> 2] = 0; - HEAP32[i5 + 4 >> 2] = 287; - i8 = __Znaj(347) | 0; - HEAP32[i5 >> 2] = i8; - _memcpy(i8 | 0, 296, 287) | 0; - i8 = i8 + 287 | 0; - i7 = 296 | 0; - i6 = i8 + 60 | 0; - do { - HEAP8[i8] = HEAP8[i7] | 0; - i8 = i8 + 1 | 0; - i7 = i7 + 1 | 0; - } while ((i8 | 0) < (i6 | 0)); - i7 = i3 << 1; - while (1) { - i6 = i7 >>> 0 < 60 ? i7 : 60; - __ZN14RotatingString5writeEj(i5, i6); - if ((i7 | 0) == (i6 | 0)) { - break; - } else { - i7 = i7 - i6 | 0; - } - } - i5 = HEAP32[i5 >> 2] | 0; - if ((i5 | 0) != 0) { - __ZdaPv(i5); - } - if ((HEAP32[6] | 0) == 0) { - i6 = 24; - i5 = 0; - } else { - i5 = 24; - d9 = 0.0; - while (1) { - i6 = i5 + 4 | 0; - d9 = d9 + +HEAPF32[i6 >> 2]; - d10 = d9 < 1.0 ? d9 : 1.0; - HEAPF32[i6 >> 2] = d10; - HEAP32[i5 + 8 >> 2] = ~~(d10 * 512.0) >>> 0; - i5 = i5 + 12 | 0; - if ((HEAP32[i5 >> 2] | 0) == 0) { - i6 = 24; - i5 = 0; - break; - } - } - } - do { - while (1) { - i8 = HEAP32[i6 + 8 >> 2] | 0; - if (i5 >>> 0 > i8 >>> 0 & (i8 | 0) != 0) { - i6 = i6 + 12 | 0; - } else { - break; - } - } - HEAP32[i4 + (i5 << 2) >> 2] = i6; - i5 = i5 + 1 | 0; - } while ((i5 | 0) != 513); - HEAP32[i4 + 2116 >> 2] = 0; - __Z9makeFastaI10RandomizedEvPKcS2_jRT_(0, 0, i3 * 3 | 0, i4); - if ((HEAP32[54] | 0) == 0) { - i5 = 216; - i4 = 0; - } else { - i5 = 216; - d9 = 0.0; - while (1) { - i4 = i5 + 4 | 0; - d9 = d9 + +HEAPF32[i4 >> 2]; - d10 = d9 < 1.0 ? d9 : 1.0; - HEAPF32[i4 >> 2] = d10; - HEAP32[i5 + 8 >> 2] = ~~(d10 * 512.0) >>> 0; - i5 = i5 + 12 | 0; - if ((HEAP32[i5 >> 2] | 0) == 0) { - i5 = 216; - i4 = 0; - break; - } - } - } - do { - while (1) { - i8 = HEAP32[i5 + 8 >> 2] | 0; - if (i4 >>> 0 > i8 >>> 0 & (i8 | 0) != 0) { - i5 = i5 + 12 | 0; - } else { - break; - } - } - HEAP32[i1 + (i4 << 2) >> 2] = i5; - i4 = i4 + 1 | 0; - } while ((i4 | 0) != 513); - HEAP32[i1 + 2116 >> 2] = 0; - __Z9makeFastaI10RandomizedEvPKcS2_jRT_(0, 0, i3 * 5 | 0, i1); - i8 = 0; - STACKTOP = i2; - return i8 | 0; -} -function __Z9makeFastaI10RandomizedEvPKcS2_jRT_(i3, i2, i6, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i6 = i6 | 0; - i1 = i1 | 0; - var i4 = 0, i5 = 0, i7 = 0, d8 = 0.0, i9 = 0; - i2 = STACKTOP; - if ((i6 | 0) == 0) { - STACKTOP = i2; - return; - } - i4 = i1 + 2116 | 0; - i3 = i1 + 2052 | 0; - while (1) { - i5 = i6 >>> 0 < 60 ? i6 : 60; - if ((i5 | 0) != 0) { - i7 = 0; - do { - i9 = ((((HEAP32[4] | 0) * 3877 | 0) + 29573 | 0) >>> 0) % 139968 | 0; - HEAP32[4] = i9; - d8 = +(i9 >>> 0) / 139968.0; - i9 = HEAP32[i1 + (~~(d8 * 512.0) >>> 0 << 2) >> 2] | 0; - while (1) { - if (+HEAPF32[i9 + 4 >> 2] < d8) { - i9 = i9 + 12 | 0; - } else { - break; - } - } - HEAP8[i1 + i7 + 2052 | 0] = HEAP32[i9 >> 2]; - i7 = i7 + 1 | 0; - } while ((i7 | 0) != (i5 | 0)); - } - HEAP8[i1 + i5 + 2052 | 0] = 10; - i9 = i5 + 1 | 0; - HEAP8[i1 + i9 + 2052 | 0] = 0; - HEAP32[i4 >> 2] = i9; - i9 = _strlen(i3 | 0) | 0; - i7 = HEAP32[2] | 0; - if ((i9 | 0) > (i7 | 0)) { - if ((i7 | 0) > 0) { - HEAP8[i1 + i7 + 2052 | 0] = 0; - _puts(i3 | 0) | 0; - HEAP8[i1 + (HEAP32[2] | 0) + 2052 | 0] = 122; - HEAP32[2] = 0; - } - } else { - _puts(i3 | 0) | 0; - HEAP32[2] = (HEAP32[2] | 0) - i9; - } - if ((i6 | 0) == (i5 | 0)) { - break; - } else { - i6 = i6 - i5 | 0; - } - } - STACKTOP = i2; - return; -} -function __ZN14RotatingString5writeEj(i3, i4) { - i3 = i3 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - i5 = __Znaj(i4 + 2 | 0) | 0; - i2 = i3 + 8 | 0; - _memcpy(i5 | 0, (HEAP32[i3 >> 2] | 0) + (HEAP32[i2 >> 2] | 0) | 0, i4 | 0) | 0; - HEAP8[i5 + i4 | 0] = 0; - i7 = _strlen(i5 | 0) | 0; - i6 = HEAP32[2] | 0; - if ((i7 | 0) > (i6 | 0)) { - if ((i6 | 0) > 0) { - HEAP8[i5 + i6 | 0] = 0; - _puts(i5 | 0) | 0; - HEAP32[2] = 0; - i6 = 6; - } else { - i6 = 5; - } - } else { - _puts(i5 | 0) | 0; - HEAP32[2] = (HEAP32[2] | 0) - i7; - i6 = 5; - } - if ((i6 | 0) == 5 ? (i5 | 0) != 0 : 0) { - i6 = 6; - } - if ((i6 | 0) == 6) { - __ZdlPv(i5); - } - i4 = (HEAP32[i2 >> 2] | 0) + i4 | 0; - HEAP32[i2 >> 2] = i4; - i3 = HEAP32[i3 + 4 >> 2] | 0; - if (!(i4 >>> 0 > i3 >>> 0)) { - STACKTOP = i1; - return; - } - HEAP32[i2 >> 2] = i4 - i3; - STACKTOP = i1; - return; -} -function _memcpy(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0; - i4 = i3 | 0; - if ((i3 & 3) == (i2 & 3)) { - while (i3 & 3) { - if ((i1 | 0) == 0) return i4 | 0; - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - while ((i1 | 0) >= 4) { - HEAP32[i3 >> 2] = HEAP32[i2 >> 2]; - i3 = i3 + 4 | 0; - i2 = i2 + 4 | 0; - i1 = i1 - 4 | 0; - } - } - while ((i1 | 0) > 0) { - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - return i4 | 0; -} -function _memset(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i4 = i4 & 255; - i7 = i1 & 3; - i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24; - i5 = i2 & ~3; - if (i7) { - i7 = i1 + 4 - i7 | 0; - while ((i1 | 0) < (i7 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i5 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i2 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} -function __Znwj(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - i2 = (i2 | 0) == 0 ? 1 : i2; - while (1) { - i3 = _malloc(i2) | 0; - if ((i3 | 0) != 0) { - i2 = 6; - break; - } - i3 = HEAP32[270] | 0; - HEAP32[270] = i3 + 0; - if ((i3 | 0) == 0) { - i2 = 5; - break; - } - FUNCTION_TABLE_v[i3 & 0](); - } - if ((i2 | 0) == 5) { - i3 = ___cxa_allocate_exception(4) | 0; - HEAP32[i3 >> 2] = 1096; - ___cxa_throw(i3 | 0, 1144, 1); - } else if ((i2 | 0) == 6) { - STACKTOP = i1; - return i3 | 0; - } - return 0; -} -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; - HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0]; - HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0]; - HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0]; - HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0]; -} -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; -} -function __ZNSt9bad_allocD0Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZNSt9exceptionD2Ev(i1 | 0); - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 7 & -8; - return i2 | 0; -} -function __ZNSt9bad_allocD2Ev(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZNSt9exceptionD2Ev(i1 | 0); - STACKTOP = i2; - return; -} -function __ZdlPv(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((i1 | 0) != 0) { - _free(i1); - } - STACKTOP = i2; - return; -} -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1; - while (HEAP8[i2] | 0) { - i2 = i2 + 1 | 0; - } - return i2 - i1 | 0; -} -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if ((__THREW__ | 0) == 0) { - __THREW__ = i1; - threwValue = i2; - } -} -function __Znaj(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = __Znwj(i1) | 0; - STACKTOP = i2; - return i1 | 0; -} -function runPostSets() { - HEAP32[286] = __ZTVN10__cxxabiv120__si_class_type_infoE; - HEAP32[288] = __ZTISt9exception; -} -function dynCall_ii(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_ii[i2 & 1](i1 | 0) | 0; -} -function __ZdaPv(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - __ZdlPv(i1); - STACKTOP = i2; - return; -} -function dynCall_vi(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_vi[i2 & 3](i1 | 0); -} -function dynCall_v(i1) { - i1 = i1 | 0; - FUNCTION_TABLE_v[i1 & 0](); -} -function __ZNKSt9bad_alloc4whatEv(i1) { - i1 = i1 | 0; - return 1112; -} -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} -function setTempRet9(i1) { - i1 = i1 | 0; - tempRet9 = i1; -} -function setTempRet8(i1) { - i1 = i1 | 0; - tempRet8 = i1; -} -function setTempRet7(i1) { - i1 = i1 | 0; - tempRet7 = i1; -} -function setTempRet6(i1) { - i1 = i1 | 0; - tempRet6 = i1; -} -function setTempRet5(i1) { - i1 = i1 | 0; - tempRet5 = i1; -} -function setTempRet4(i1) { - i1 = i1 | 0; - tempRet4 = i1; -} -function setTempRet3(i1) { - i1 = i1 | 0; - tempRet3 = i1; -} -function setTempRet2(i1) { - i1 = i1 | 0; - tempRet2 = i1; -} -function setTempRet1(i1) { - i1 = i1 | 0; - tempRet1 = i1; -} -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} -function b0(i1) { - i1 = i1 | 0; - abort(0); - return 0; -} -function stackSave() { - return STACKTOP | 0; -} -function b1(i1) { - i1 = i1 | 0; - abort(1); -} -function b2() { - abort(2); -} - -// EMSCRIPTEN_END_FUNCS - var FUNCTION_TABLE_ii = [b0,__ZNKSt9bad_alloc4whatEv]; - var FUNCTION_TABLE_vi = [b1,__ZNSt9bad_allocD2Ev,__ZNSt9bad_allocD0Ev,b1]; - var FUNCTION_TABLE_v = [b2]; - - return { _strlen: _strlen, _free: _free, _main: _main, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9, dynCall_ii: dynCall_ii, dynCall_vi: dynCall_vi, dynCall_v: dynCall_v }; -}) -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "invoke_ii": invoke_ii, "invoke_vi": invoke_vi, "invoke_v": invoke_v, "_send": _send, "___setErrNo": ___setErrNo, "___cxa_is_number_type": ___cxa_is_number_type, "___cxa_allocate_exception": ___cxa_allocate_exception, "___cxa_find_matching_catch": ___cxa_find_matching_catch, "_fflush": _fflush, "_time": _time, "_pwrite": _pwrite, "__reallyNegative": __reallyNegative, "_sbrk": _sbrk, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_fileno": _fileno, "___resumeException": ___resumeException, "__ZSt18uncaught_exceptionv": __ZSt18uncaught_exceptionv, "_sysconf": _sysconf, "_puts": _puts, "_mkport": _mkport, "_write": _write, "___errno_location": ___errno_location, "__ZNSt9exceptionD2Ev": __ZNSt9exceptionD2Ev, "_fputc": _fputc, "___cxa_throw": ___cxa_throw, "_abort": _abort, "_fwrite": _fwrite, "___cxa_does_inherit": ___cxa_does_inherit, "_fprintf": _fprintf, "__formatString": __formatString, "_fputs": _fputs, "_printf": _printf, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity, "__ZTISt9exception": __ZTISt9exception, "__ZTVN10__cxxabiv120__si_class_type_infoE": __ZTVN10__cxxabiv120__si_class_type_infoE }, buffer); -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _free = Module["_free"] = asm["_free"]; -var _main = Module["_main"] = asm["_main"]; -var _memset = Module["_memset"] = asm["_memset"]; -var _malloc = Module["_malloc"] = asm["_malloc"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; -var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"]; -var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"]; -var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included -var i64Math = null; - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - var data = Module['readBinary'](memoryInitializer); - HEAPU8.set(data, STATIC_BASE); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - HEAPU8.set(data, STATIC_BASE); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run([].concat(Module["arguments"])); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - 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("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; - - throw 'abort() at ' + stackTrace() + extra; -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - - -run([].concat(Module["arguments"])); diff --git a/implementation-contributed/v8/mjsunit/asm/embenchen/lua_binarytrees.js b/implementation-contributed/v8/mjsunit/asm/embenchen/lua_binarytrees.js deleted file mode 100644 index e3a5d8c64a0..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/embenchen/lua_binarytrees.js +++ /dev/null @@ -1,42710 +0,0 @@ -var EXPECTED_OUTPUT = - 'stretch tree of depth 10\t check: -1\n' + - '1448\t trees of depth 4\t check: -1448\n' + - '362\t trees of depth 6\t check: -362\n' + - '90\t trees of depth 8\t check: -90\n' + - 'long lived tree of depth 9\t check: -1\n'; -var Module = { - arguments: [1], - print: function(x) {Module.printBuffer += x + '\n';}, - preRun: [function() {Module.printBuffer = ''}], - postRun: [function() { - assertEquals(EXPECTED_OUTPUT, Module.printBuffer); - }], -}; - -var Module; -if (typeof Module === 'undefined') Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()'); -if (!Module.expectedDataFileDownloads) { - Module.expectedDataFileDownloads = 0; - Module.finishedDataFileDownloads = 0; -} -Module.expectedDataFileDownloads++; -(function() { - - function runWithFS() { - -function assert(check, msg) { - if (!check) throw msg + new Error().stack; -} -Module['FS_createDataFile']('/', 'binarytrees.lua', [45, 45, 32, 84, 104, 101, 32, 67, 111, 109, 112, 117, 116, 101, 114, 32, 76, 97, 110, 103, 117, 97, 103, 101, 32, 66, 101, 110, 99, 104, 109, 97, 114, 107, 115, 32, 71, 97, 109, 101, 10, 45, 45, 32, 104, 116, 116, 112, 58, 47, 47, 98, 101, 110, 99, 104, 109, 97, 114, 107, 115, 103, 97, 109, 101, 46, 97, 108, 105, 111, 116, 104, 46, 100, 101, 98, 105, 97, 110, 46, 111, 114, 103, 47, 10, 45, 45, 32, 99, 111, 110, 116, 114, 105, 98, 117, 116, 101, 100, 32, 98, 121, 32, 77, 105, 107, 101, 32, 80, 97, 108, 108, 10, 10, 108, 111, 99, 97, 108, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 105, 116, 101, 109, 44, 32, 100, 101, 112, 116, 104, 41, 10, 32, 32, 105, 102, 32, 100, 101, 112, 116, 104, 32, 62, 32, 48, 32, 116, 104, 101, 110, 10, 32, 32, 32, 32, 108, 111, 99, 97, 108, 32, 105, 32, 61, 32, 105, 116, 101, 109, 32, 43, 32, 105, 116, 101, 109, 10, 32, 32, 32, 32, 100, 101, 112, 116, 104, 32, 61, 32, 100, 101, 112, 116, 104, 32, 45, 32, 49, 10, 32, 32, 32, 32, 108, 111, 99, 97, 108, 32, 108, 101, 102, 116, 44, 32, 114, 105, 103, 104, 116, 32, 61, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 105, 45, 49, 44, 32, 100, 101, 112, 116, 104, 41, 44, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 105, 44, 32, 100, 101, 112, 116, 104, 41, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 123, 32, 105, 116, 101, 109, 44, 32, 108, 101, 102, 116, 44, 32, 114, 105, 103, 104, 116, 32, 125, 10, 32, 32, 101, 108, 115, 101, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 123, 32, 105, 116, 101, 109, 32, 125, 10, 32, 32, 101, 110, 100, 10, 101, 110, 100, 10, 10, 108, 111, 99, 97, 108, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 116, 114, 101, 101, 41, 10, 32, 32, 105, 102, 32, 116, 114, 101, 101, 91, 50, 93, 32, 116, 104, 101, 110, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 116, 114, 101, 101, 91, 49, 93, 32, 43, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 116, 114, 101, 101, 91, 50, 93, 41, 32, 45, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 116, 114, 101, 101, 91, 51, 93, 41, 10, 32, 32, 101, 108, 115, 101, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 116, 114, 101, 101, 91, 49, 93, 10, 32, 32, 101, 110, 100, 10, 101, 110, 100, 10, 10, 108, 111, 99, 97, 108, 32, 78, 32, 61, 32, 116, 111, 110, 117, 109, 98, 101, 114, 40, 97, 114, 103, 32, 97, 110, 100, 32, 97, 114, 103, 91, 49, 93, 41, 32, 111, 114, 32, 52, 10, 10, 105, 102, 32, 78, 32, 61, 61, 32, 48, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 48, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 49, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 57, 46, 53, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 50, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 49, 49, 46, 57, 57, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 51, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 49, 50, 46, 56, 53, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 52, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 49, 52, 46, 55, 50, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 53, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 49, 53, 46, 56, 50, 10, 101, 110, 100, 10, 10, 108, 111, 99, 97, 108, 32, 109, 105, 110, 100, 101, 112, 116, 104, 32, 61, 32, 52, 10, 108, 111, 99, 97, 108, 32, 109, 97, 120, 100, 101, 112, 116, 104, 32, 61, 32, 109, 105, 110, 100, 101, 112, 116, 104, 32, 43, 32, 50, 10, 105, 102, 32, 109, 97, 120, 100, 101, 112, 116, 104, 32, 60, 32, 78, 32, 116, 104, 101, 110, 32, 109, 97, 120, 100, 101, 112, 116, 104, 32, 61, 32, 78, 32, 101, 110, 100, 10, 10, 100, 111, 10, 32, 32, 108, 111, 99, 97, 108, 32, 115, 116, 114, 101, 116, 99, 104, 100, 101, 112, 116, 104, 32, 61, 32, 109, 97, 120, 100, 101, 112, 116, 104, 32, 43, 32, 49, 10, 32, 32, 108, 111, 99, 97, 108, 32, 115, 116, 114, 101, 116, 99, 104, 116, 114, 101, 101, 32, 61, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 48, 44, 32, 115, 116, 114, 101, 116, 99, 104, 100, 101, 112, 116, 104, 41, 10, 32, 32, 105, 111, 46, 119, 114, 105, 116, 101, 40, 115, 116, 114, 105, 110, 103, 46, 102, 111, 114, 109, 97, 116, 40, 34, 115, 116, 114, 101, 116, 99, 104, 32, 116, 114, 101, 101, 32, 111, 102, 32, 100, 101, 112, 116, 104, 32, 37, 100, 92, 116, 32, 99, 104, 101, 99, 107, 58, 32, 37, 100, 92, 110, 34, 44, 10, 32, 32, 32, 32, 115, 116, 114, 101, 116, 99, 104, 100, 101, 112, 116, 104, 44, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 115, 116, 114, 101, 116, 99, 104, 116, 114, 101, 101, 41, 41, 41, 10, 101, 110, 100, 10, 10, 108, 111, 99, 97, 108, 32, 108, 111, 110, 103, 108, 105, 118, 101, 100, 116, 114, 101, 101, 32, 61, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 48, 44, 32, 109, 97, 120, 100, 101, 112, 116, 104, 41, 10, 10, 102, 111, 114, 32, 100, 101, 112, 116, 104, 61, 109, 105, 110, 100, 101, 112, 116, 104, 44, 109, 97, 120, 100, 101, 112, 116, 104, 44, 50, 32, 100, 111, 10, 32, 32, 108, 111, 99, 97, 108, 32, 105, 116, 101, 114, 97, 116, 105, 111, 110, 115, 32, 61, 32, 50, 32, 94, 32, 40, 109, 97, 120, 100, 101, 112, 116, 104, 32, 45, 32, 100, 101, 112, 116, 104, 32, 43, 32, 109, 105, 110, 100, 101, 112, 116, 104, 41, 10, 32, 32, 108, 111, 99, 97, 108, 32, 99, 104, 101, 99, 107, 32, 61, 32, 48, 10, 32, 32, 102, 111, 114, 32, 105, 61, 49, 44, 105, 116, 101, 114, 97, 116, 105, 111, 110, 115, 32, 100, 111, 10, 32, 32, 32, 32, 99, 104, 101, 99, 107, 32, 61, 32, 99, 104, 101, 99, 107, 32, 43, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 49, 44, 32, 100, 101, 112, 116, 104, 41, 41, 32, 43, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 45, 49, 44, 32, 100, 101, 112, 116, 104, 41, 41, 10, 32, 32, 101, 110, 100, 10, 32, 32, 105, 111, 46, 119, 114, 105, 116, 101, 40, 115, 116, 114, 105, 110, 103, 46, 102, 111, 114, 109, 97, 116, 40, 34, 37, 100, 92, 116, 32, 116, 114, 101, 101, 115, 32, 111, 102, 32, 100, 101, 112, 116, 104, 32, 37, 100, 92, 116, 32, 99, 104, 101, 99, 107, 58, 32, 37, 100, 92, 110, 34, 44, 10, 32, 32, 32, 32, 105, 116, 101, 114, 97, 116, 105, 111, 110, 115, 42, 50, 44, 32, 100, 101, 112, 116, 104, 44, 32, 99, 104, 101, 99, 107, 41, 41, 10, 101, 110, 100, 10, 10, 105, 111, 46, 119, 114, 105, 116, 101, 40, 115, 116, 114, 105, 110, 103, 46, 102, 111, 114, 109, 97, 116, 40, 34, 108, 111, 110, 103, 32, 108, 105, 118, 101, 100, 32, 116, 114, 101, 101, 32, 111, 102, 32, 100, 101, 112, 116, 104, 32, 37, 100, 92, 116, 32, 99, 104, 101, 99, 107, 58, 32, 37, 100, 92, 110, 34, 44, 10, 32, 32, 109, 97, 120, 100, 101, 112, 116, 104, 44, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 108, 111, 110, 103, 108, 105, 118, 101, 100, 116, 114, 101, 101, 41, 41, 41, 10], true, true); - - } - if (Module['calledRun']) { - runWithFS(); - } else { - if (!Module['preRun']) Module['preRun'] = []; - Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it - } - -})(); - -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - window['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependant on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - var source = Pointer_stringify(code); - if (source[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (source.indexOf('"', 1) === source.length-1) { - source = source.substr(1, source.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - try { - var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node - } catch(e) { - Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'); - throw e; - } - return Runtime.asmConstCache[code] = evalled; - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - /* TODO: use TextEncoder when present, - var encoder = new TextEncoder(); - encoder['encoding'] = "utf-8"; - var utf8Array = encoder['encode'](aMsg.data); - */ - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - getCompilerSetting: function (name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - var subs = []; - var first = true; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - if (rawList) { - if (ret) { - list.push(ret + '?'); - } - return list; - } else { - return ret + flushList(); - } - } - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'JS engine does not provide full typed array support'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === - - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(13467); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([99,97,110,110,111,116,32,99,114,101,97,116,101,32,115,116,97,116,101,58,32,110,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,0,0,40,101,114,114,111,114,32,111,98,106,101,99,116,32,105,115,32,110,111,116,32,97,32,115,116,114,105,110,103,41,0,0,88,0,0,0,0,0,0,0,108,117,97,0,0,0,0,0,76,85,65,95,78,79,69,78,86,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,115,117,108,116,115,32,116,111,32,112,114,105,110,116,0,0,0,0,0,0,0,112,114,105,110,116,0,0,0,101,114,114,111,114,32,99,97,108,108,105,110,103,32,39,112,114,105,110,116,39,32,40,37,115,41,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,110,116,101,114,114,117,112,116,101,100,33,0,0,0,0,95,95,116,111,115,116,114,105,110,103,0,0,0,0,0,0,40,110,111,32,101,114,114,111,114,32,109,101,115,115,97,103,101,41,0,0,0,0,0,0,61,115,116,100,105,110,0,0,60,101,111,102,62,0,0,0,114,101,116,117,114,110,32,37,115,0,0,0,0,0,0,0,95,80,82,79,77,80,84,0,95,80,82,79,77,80,84,50,0,0,0,0,0,0,0,0,62,32,0,0,0,0,0,0,62,62,32,0,0,0,0,0,97,114,103,0,0,0,0,0,45,0,0,0,0,0,0,0,45,45,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,116,111,32,115,99,114,105,112,116,0,0,0,0,61,40,99,111,109,109,97,110,100,32,108,105,110,101,41,0,114,101,113,117,105,114,101,0,61,76,85,65,95,73,78,73,84,95,53,95,50,0,0,0,61,76,85,65,95,73,78,73,84,0,0,0,0,0,0,0,76,117,97,32,53,46,50,46,50,32,32,67,111,112,121,114,105,103,104,116,32,40,67,41,32,49,57,57,52,45,50,48,49,51,32,76,117,97,46,111,114,103,44,32,80,85,67,45,82,105,111,0,0,0,0,0,37,115,58,32,0,0,0,0,39,37,115,39,32,110,101,101,100,115,32,97,114,103,117,109,101,110,116,10,0,0,0,0,117,110,114,101,99,111,103,110,105,122,101,100,32,111,112,116,105,111,110,32,39,37,115,39,10,0,0,0,0,0,0,0,117,115,97,103,101,58,32,37,115,32,91,111,112,116,105,111,110,115,93,32,91,115,99,114,105,112,116,32,91,97,114,103,115,93,93,10,65,118,97,105,108,97,98,108,101,32,111,112,116,105,111,110,115,32,97,114,101,58,10,32,32,45,101,32,115,116,97,116,32,32,101,120,101,99,117,116,101,32,115,116,114,105,110,103,32,39,115,116,97,116,39,10,32,32,45,105,32,32,32,32,32,32,32,101,110,116,101,114,32,105,110,116,101,114,97,99,116,105,118,101,32,109,111,100,101,32,97,102,116,101,114,32,101,120,101,99,117,116,105,110,103,32,39,115,99,114,105,112,116,39,10,32,32,45,108,32,110,97,109,101,32,32,114,101,113,117,105,114,101,32,108,105,98,114,97,114,121,32,39,110,97,109,101,39,10,32,32,45,118,32,32,32,32,32,32,32,115,104,111,119,32,118,101,114,115,105,111,110,32,105,110,102,111,114,109,97,116,105,111,110,10,32,32,45,69,32,32,32,32,32,32,32,105,103,110,111,114,101,32,101,110,118,105,114,111,110,109,101,110,116,32,118,97,114,105,97,98,108,101,115,10,32,32,45,45,32,32,32,32,32,32,32,115,116,111,112,32,104,97,110,100,108,105,110,103,32,111,112,116,105,111,110,115,10,32,32,45,32,32,32,32,32,32,32,32,115,116,111,112,32,104,97,110,100,108,105,110,103,32,111,112,116,105,111,110,115,32,97,110,100,32,101,120,101,99,117,116,101,32,115,116,100,105,110,10,0,0,0,0,0,0,0,37,115,10,0,0,0,0,0,0,0,0,0,0,96,127,64,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,10,0,0,0,0,0,115,116,97,99,107,32,116,114,97,99,101,98,97,99,107,58,0,0,0,0,0,0,0,0,10,9,46,46,46,0,0,0,83,108,110,116,0,0,0,0,10,9,37,115,58,0,0,0,37,100,58,0,0,0,0,0,32,105,110,32,0,0,0,0,10,9,40,46,46,46,116,97,105,108,32,99,97,108,108,115,46,46,46,41,0,0,0,0,98,97,100,32,97,114,103,117,109,101,110,116,32,35,37,100,32,40,37,115,41,0,0,0,110,0,0,0,0,0,0,0,109,101,116,104,111,100,0,0,99,97,108,108,105,110,103,32,39,37,115,39,32,111,110,32,98,97,100,32,115,101,108,102,32,40,37,115,41,0,0,0,63,0,0,0,0,0,0,0,98,97,100,32,97,114,103,117,109,101,110,116,32,35,37,100,32,116,111,32,39,37,115,39,32,40,37,115,41,0,0,0,83,108,0,0,0,0,0,0,37,115,58,37,100,58,32,0,0,0,0,0,0,0,0,0,37,115,58,32,37,115,0,0,101,120,105,116,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,32,39,37,115,39,0,0,0,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,32,40,37,115,41,0,0,0,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,118,97,108,117,101,32,101,120,112,101,99,116,101,100,0,0,98,117,102,102,101,114,32,116,111,111,32,108,97,114,103,101,0,0,0,0,0,0,0,0,61,115,116,100,105,110,0,0,64,37,115,0,0,0,0,0,114,0,0,0,0,0,0,0,111,112,101,110,0,0,0,0,114,98,0,0,0,0,0,0,114,101,111,112,101,110,0,0,114,101,97,100,0,0,0,0,111,98,106,101,99,116,32,108,101,110,103,116,104,32,105,115,32,110,111,116,32,97,32,110,117,109,98,101,114,0,0,0,95,95,116,111,115,116,114,105,110,103,0,0,0,0,0,0,116,114,117,101,0,0,0,0,102,97,108,115,101,0,0,0,110,105,108,0,0,0,0,0,37,115,58,32,37,112,0,0,95,76,79,65,68,69,68,0,110,97,109,101,32,99,111,110,102,108,105,99,116,32,102,111,114,32,109,111,100,117,108,101,32,39,37,115,39,0,0,0,116,111,111,32,109,97,110,121,32,117,112,118,97,108,117,101,115,0,0,0,0,0,0,0,109,117,108,116,105,112,108,101,32,76,117,97,32,86,77,115,32,100,101,116,101,99,116,101,100,0,0,0,0,0,0,0,118,101,114,115,105,111,110,32,109,105,115,109,97,116,99,104,58,32,97,112,112,46,32,110,101,101,100,115,32,37,102,44,32,76,117,97,32,99,111,114,101,32,112,114,111,118,105,100,101,115,32,37,102,0,0,0,98,97,100,32,99,111,110,118,101,114,115,105,111,110,32,110,117,109,98,101,114,45,62,105,110,116,59,32,109,117,115,116,32,114,101,99,111,109,112,105,108,101,32,76,117,97,32,119,105,116,104,32,112,114,111,112,101,114,32,115,101,116,116,105,110,103,115,0,0,0,0,0,80,65,78,73,67,58,32,117,110,112,114,111,116,101,99,116,101,100,32,101,114,114,111,114,32,105,110,32,99,97,108,108,32,116,111,32,76,117,97,32,65,80,73,32,40,37,115,41,10,0,0,0,0,0,0,0,239,187,191,0,0,0,0,0,99,97,110,110,111,116,32,37,115,32,37,115,58,32,37,115,0,0,0,0,0,0,0,0,37,115,32,101,120,112,101,99,116,101,100,44,32,103,111,116,32,37,115,0,0,0,0,0,102,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,102,117,110,99,116,105,111,110,32,39,37,115,39,0,0,0,109,97,105,110,32,99,104,117,110,107,0,0,0,0,0,0,102,117,110,99,116,105,111,110,32,60,37,115,58,37,100,62,0,0,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,37,115,32,37,115,32,39,37,115,39,32,40,97,32,37,115,32,118,97,108,117,101,41,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,37,115,32,97,32,37,115,32,118,97,108,117,101,0,0,0,0,0,0,0,0,99,111,110,99,97,116,101,110,97,116,101,0,0,0,0,0,112,101,114,102,111,114,109,32,97,114,105,116,104,109,101,116,105,99,32,111,110,0,0,0,97,116,116,101,109,112,116,32,116,111,32,99,111,109,112,97,114,101,32,116,119,111,32,37,115,32,118,97,108,117,101,115,0,0,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,99,111,109,112,97,114,101,32,37,115,32,119,105,116,104,32,37,115,0,0,0,37,115,58,37,100,58,32,37,115,0,0,0,0,0,0,0,108,111,99,97,108,0,0,0,95,69,78,86,0,0,0,0,103,108,111,98,97,108,0,0,102,105,101,108,100,0,0,0,117,112,118,97,108,117,101,0,99,111,110,115,116,97,110,116,0,0,0,0,0,0,0,0,109,101,116,104,111,100,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,111,114,32,105,116,101,114,97,116,111,114,0,0,0,0,109,101,116,97,109,101,116,104,111,100,0,0,0,0,0,0,61,91,67,93,0,0,0,0,67,0,0,0,0,0,0,0,61,63,0,0,0,0,0,0,109,97,105,110,0,0,0,0,76,117,97,0,0,0,0,0,40,42,116,101,109,112,111,114,97,114,121,41,0,0,0,0,40,42,118,97,114,97,114,103,41,0,0,0,0,0,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,67,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,121,105,101,108,100,32,97,99,114,111,115,115,32,97,32,67,45,99,97,108,108,32,98,111,117,110,100,97,114,121,0,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,121,105,101,108,100,32,102,114,111,109,32,111,117,116,115,105,100,101,32,97,32,99,111,114,111,117,116,105,110,101,0,0,0,0,0,0,0,98,105,110,97,114,121,0,0,116,101,120,116,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,108,111,97,100,32,97,32,37,115,32,99,104,117,110,107,32,40,109,111,100,101,32,105,115,32,39,37,115,39,41,0,0,0,0,0,0,0,101,114,114,111,114,32,105,110,32,101,114,114,111,114,32,104,97,110,100,108,105,110,103,0,99,97,110,110,111,116,32,114,101,115,117,109,101,32,110,111,110,45,115,117,115,112,101,110,100,101,100,32,99,111,114,111,117,116,105,110,101,0,0,0,99,97,110,110,111,116,32,114,101,115,117,109,101,32,100,101,97,100,32,99,111,114,111,117,116,105,110,101,0,0,0,0,99,97,108,108,0,0,0,0,110,111,32,109,101,115,115,97,103,101,0,0,0,0,0,0,101,114,114,111,114,32,105,110,32,95,95,103,99,32,109,101,116,97,109,101,116,104,111,100,32,40,37,115,41,0,0,0,95,80,82,69,76,79,65,68,0,0,0,0,0,0,0,0,95,71,0,0,0,0,0,0,112,97,99,107,97,103,101,0,99,111,114,111,117,116,105,110,101,0,0,0,0,0,0,0,116,97,98,108,101,0,0,0,105,111,0,0,0,0,0,0,111,115,0,0,0,0,0,0,115,116,114,105,110,103,0,0,98,105,116,51,50,0,0,0,109,97,116,104,0,0,0,0,100,101,98,117,103,0,0,0,144,11,0,0,1,0,0,0,152,11,0,0,2,0,0,0,48,13,0,0,3,0,0,0,160,11,0,0,4,0,0,0,56,13,0,0,5,0,0,0,64,13,0,0,6,0,0,0,72,13,0,0,7,0,0,0,168,11,0,0,8,0,0,0,80,13,0,0,9,0,0,0,88,13,0,0,10,0,0,0,192,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,95,73,79,95,105,110,112,117,116,0,0,0,0,0,0,0,115,116,100,105,110,0,0,0,95,73,79,95,111,117,116,112,117,116,0,0,0,0,0,0,115,116,100,111,117,116,0,0,115,116,100,101,114,114,0,0,70,73,76,69,42,0,0,0,99,97,110,110,111,116,32,99,108,111,115,101,32,115,116,97,110,100,97,114,100,32,102,105,108,101,0,0,0,0,0,0,95,95,105,110,100,101,120,0,144,11,0,0,1,0,0,0,152,11,0,0,12,0,0,0,160,11,0,0,13,0,0,0,168,11,0,0,14,0,0,0,176,11,0,0,15,0,0,0,184,11,0,0,16,0,0,0,192,11,0,0,17,0,0,0,200,11,0,0,18,0,0,0,208,11,0,0,19,0,0,0,0,0,0,0,0,0,0,0,99,108,111,115,101,0,0,0,102,108,117,115,104,0,0,0,108,105,110,101,115,0,0,0,114,101,97,100,0,0,0,0,115,101,101,107,0,0,0,0,115,101,116,118,98,117,102,0,119,114,105,116,101,0,0,0,95,95,103,99,0,0,0,0,95,95,116,111,115,116,114,105,110,103,0,0,0,0,0,0,102,105,108,101,32,40,99,108,111,115,101,100,41,0,0,0,102,105,108,101,32,40,37,112,41,0,0,0,0,0,0,0,37,46,49,52,103,0,0,0,97,116,116,101,109,112,116,32,116,111,32,117,115,101,32,97,32,99,108,111,115,101,100,32,102,105,108,101,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,72,12,0,0,80,12,0,0,88,12,0,0,0,0,0,0,110,111,0,0,0,0,0,0,102,117,108,108,0,0,0,0,108,105,110,101,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,128,12,0,0,136,12,0,0,144,12,0,0,0,0,0,0,115,101,116,0,0,0,0,0,99,117,114,0,0,0,0,0,101,110,100,0,0,0,0,0,110,111,116,32,97,110,32,105,110,116,101,103,101,114,32,105,110,32,112,114,111,112,101,114,32,114,97,110,103,101,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,0,0,105,110,118,97,108,105,100,32,102,111,114,109,97,116,0,0,37,108,102,0,0,0,0,0,116,111,111,32,109,97,110,121,32,111,112,116,105,111,110,115,0,0,0,0,0,0,0,0,102,105,108,101,32,105,115,32,97,108,114,101,97,100,121,32,99,108,111,115,101,100,0,0,37,115,0,0,0,0,0,0,105,110,112,117,116,0,0,0,111,112,101,110,0,0,0,0,111,117,116,112,117,116,0,0,112,111,112,101,110,0,0,0,116,109,112,102,105,108,101,0,116,121,112,101,0,0,0,0,115,116,97,110,100,97,114,100,32,37,115,32,102,105,108,101,32,105,115,32,99,108,111,115,101,100,0,0,0,0,0,0,99,108,111,115,101,100,32,102,105,108,101,0,0,0,0,0,102,105,108,101,0,0,0,0,114,0,0,0,0,0,0,0,39,112,111,112,101,110,39,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,119,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,32,39,37,115,39,32,40,37,115,41,0,0,0,0,0,0,114,119,97,0,0,0,0,0,105,110,118,97,108,105,100,32,109,111,100,101,0,0,0,0,240,14,0,0,20,0,0,0,248,14,0,0,21,0,0,0,0,15,0,0,22,0,0,0,8,15,0,0,23,0,0,0,16,15,0,0,24,0,0,0,24,15,0,0,25,0,0,0,32,15,0,0,26,0,0,0,40,15,0,0,27,0,0,0,48,15,0,0,28,0,0,0,56,15,0,0,29,0,0,0,64,15,0,0,30,0,0,0,72,15,0,0,31,0,0,0,80,15,0,0,32,0,0,0,88,15,0,0,33,0,0,0,96,15,0,0,34,0,0,0,104,15,0,0,35,0,0,0,112,15,0,0,36,0,0,0,120,15,0,0,37,0,0,0,128,15,0,0,38,0,0,0,136,15,0,0,39,0,0,0,144,15,0,0,40,0,0,0,152,15,0,0,41,0,0,0,160,15,0,0,42,0,0,0,176,15,0,0,43,0,0,0,184,15,0,0,44,0,0,0,192,15,0,0,45,0,0,0,200,15,0,0,46,0,0,0,208,15,0,0,47,0,0,0,0,0,0,0,0,0,0,0,112,105,0,0,0,0,0,0,104,117,103,101,0,0,0,0,97,98,115,0,0,0,0,0,97,99,111,115,0,0,0,0,97,115,105,110,0,0,0,0,97,116,97,110,50,0,0,0,97,116,97,110,0,0,0,0,99,101,105,108,0,0,0,0,99,111,115,104,0,0,0,0,99,111,115,0,0,0,0,0,100,101,103,0,0,0,0,0,101,120,112,0,0,0,0,0,102,108,111,111,114,0,0,0,102,109,111,100,0,0,0,0,102,114,101,120,112,0,0,0,108,100,101,120,112,0,0,0,108,111,103,49,48,0,0,0,108,111,103,0,0,0,0,0,109,97,120,0,0,0,0,0,109,105,110,0,0,0,0,0,109,111,100,102,0,0,0,0,112,111,119,0,0,0,0,0,114,97,100,0,0,0,0,0,114,97,110,100,111,109,0,0,114,97,110,100,111,109,115,101,101,100,0,0,0,0,0,0,115,105,110,104,0,0,0,0,115,105,110,0,0,0,0,0,115,113,114,116,0,0,0,0,116,97,110,104,0,0,0,0,116,97,110,0,0,0,0,0,105,110,116,101,114,118,97,108,32,105,115,32,101,109,112,116,121,0,0,0,0,0,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,37,115,32,40,108,105,109,105,116,32,105,115,32,37,100,41,0,0,0,0,0,0,0,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,101,114,114,111,114,58,32,98,108,111,99,107,32,116,111,111,32,98,105,103,0,0,95,67,76,73,66,83,0,0,95,95,103,99,0,0,0,0,16,20,0,0,48,0,0,0,24,20,0,0,49,0,0,0,40,20,0,0,50,0,0,0,0,0,0,0,0,0,0,0,108,111,97,100,101,114,115,0,115,101,97,114,99,104,101,114,115,0,0,0,0,0,0,0,112,97,116,104,0,0,0,0,76,85,65,95,80,65,84,72,95,53,95,50,0,0,0,0,76,85,65,95,80,65,84,72,0,0,0,0,0,0,0,0,47,117,115,114,47,108,111,99,97,108,47,115,104,97,114,101,47,108,117,97,47,53,46,50,47,63,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,115,104,97,114,101,47,108,117,97,47,53,46,50,47,63,47,105,110,105,116,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,50,47,63,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,50,47,63,47,105,110,105,116,46,108,117,97,59,46,47,63,46,108,117,97,0,0,0,0,0,0,0,99,112,97,116,104,0,0,0,76,85,65,95,67,80,65,84,72,95,53,95,50,0,0,0,76,85,65,95,67,80,65,84,72,0,0,0,0,0,0,0,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,50,47,63,46,115,111,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,50,47,108,111,97,100,97,108,108,46,115,111,59,46,47,63,46,115,111,0,0,0,0,47,10,59,10,63,10,33,10,45,10,0,0,0,0,0,0,99,111,110,102,105,103,0,0,95,76,79,65,68,69,68,0,108,111,97,100,101,100,0,0,95,80,82,69,76,79,65,68,0,0,0,0,0,0,0,0,112,114,101,108,111,97,100,0,32,18,0,0,51,0,0,0,40,18,0,0,52,0,0,0,0,0,0,0,0,0,0,0,109,111,100,117,108,101,0,0,114,101,113,117,105,114,101,0,39,112,97,99,107,97,103,101,46,115,101,97,114,99,104,101,114,115,39,32,109,117,115,116,32,98,101,32,97,32,116,97,98,108,101,0,0,0,0,0,109,111,100,117,108,101,32,39,37,115,39,32,110,111,116,32,102,111,117,110,100,58,37,115,0,0,0,0,0,0,0,0,95,78,65,77,69,0,0,0,102,0,0,0,0,0,0,0,39,109,111,100,117,108,101,39,32,110,111,116,32,99,97,108,108,101,100,32,102,114,111,109,32,97,32,76,117,97,32,102,117,110,99,116,105,111,110,0,95,77,0,0,0,0,0,0,95,80,65,67,75,65,71,69,0,0,0,0,0,0,0,0,59,59,0,0,0,0,0,0,59,1,59,0,0,0,0,0,1,0,0,0,0,0,0,0,76,85,65,95,78,79,69,78,86,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,10,9,110,111,32,109,111,100,117,108,101,32,39,37,115,39,32,105,110,32,102,105,108,101,32,39,37,115,39,0,0,0,101,114,114,111,114,32,108,111,97,100,105,110,103,32,109,111,100,117,108,101,32,39,37,115,39,32,102,114,111,109,32,102,105,108,101,32,39,37,115,39,58,10,9,37,115,0,0,0,46,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,108,117,97,111,112,101,110,95,37,115,0,0,0,0,0,0,100,121,110,97,109,105,99,32,108,105,98,114,97,114,105,101,115,32,110,111,116,32,101,110,97,98,108,101,100,59,32,99,104,101,99,107,32,121,111,117,114,32,76,117,97,32,105,110,115,116,97,108,108,97,116,105,111,110,0,0,0,0,0,0,39,112,97,99,107,97,103,101,46,37,115,39,32,109,117,115,116,32,98,101,32,97,32,115,116,114,105,110,103,0,0,0,63,0,0,0,0,0,0,0,10,9,110,111,32,102,105,108,101,32,39,37,115,39,0,0,114,0,0,0,0,0,0,0,10,9,110,111,32,102,105,101,108,100,32,112,97,99,107,97,103,101,46,112,114,101,108,111,97,100,91,39,37,115,39,93,0,0,0,0,0,0,0,0,108,111,97,100,108,105,98,0,115,101,97,114,99,104,112,97,116,104,0,0,0,0,0,0,115,101,101,97,108,108,0,0,95,95,105,110,100,101,120,0,97,98,115,101,110,116,0,0,105,110,105,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,110,78,0,0,0,0,0,0,120,88,0,0,0,0,0,0,40,110,117,108,108,41,0,0,37,112,0,0,0,0,0,0,37,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,32,39,37,37,37,99,39,32,116,111,32,39,108,117,97,95,112,117,115,104,102,115,116,114,105,110,103,39,0,0,0,0,0,0,46,46,46,0,0,0,0,0,91,115,116,114,105,110,103,32,34,0,0,0,0,0,0,0,34,93,0,0,0,0,0,0,96,113,65,84,80,80,92,108,60,16,60,84,108,124,124,124,124,124,124,96,96,96,104,34,188,188,188,132,228,84,84,16,98,98,4,98,20,81,80,23,88,22,0,0,53,0,0,0,96,22,0,0,54,0,0,0,104,22,0,0,55,0,0,0,120,22,0,0,56,0,0,0,128,22,0,0,57,0,0,0,136,22,0,0,58,0,0,0,144,22,0,0,59,0,0,0,152,22,0,0,60,0,0,0,160,22,0,0,61,0,0,0,176,22,0,0,62,0,0,0,184,22,0,0,63,0,0,0,0,0,0,0,0,0,0,0,99,108,111,99,107,0,0,0,100,97,116,101,0,0,0,0,100,105,102,102,116,105,109,101,0,0,0,0,0,0,0,0,101,120,101,99,117,116,101,0,101,120,105,116,0,0,0,0,103,101,116,101,110,118,0,0,114,101,109,111,118,101,0,0,114,101,110,97,109,101,0,0,115,101,116,108,111,99,97,108,101,0,0,0,0,0,0,0,116,105,109,101,0,0,0,0,116,109,112,110,97,109,101,0,117,110,97,98,108,101,32,116,111,32,103,101,110,101,114,97,116,101,32,97,32,117,110,105,113,117,101,32,102,105,108,101,110,97,109,101,0,0,0,0,115,101,99,0,0,0,0,0,109,105,110,0,0,0,0,0,104,111,117,114,0,0,0,0,100,97,121,0,0,0,0,0,109,111,110,116,104,0,0,0,121,101,97,114,0,0,0,0,105,115,100,115,116,0,0,0,102,105,101,108,100,32,39,37,115,39,32,109,105,115,115,105,110,103,32,105,110,32,100,97,116,101,32,116,97,98,108,101,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,128,23,0,0,136,23,0,0,144,23,0,0,152,23,0,0,168,23,0,0,176,22,0,0,0,0,0,0,0,0,0,0,97,108,108,0,0,0,0,0,99,111,108,108,97,116,101,0,99,116,121,112,101,0,0,0,109,111,110,101,116,97,114,121,0,0,0,0,0,0,0,0,110,117,109,101,114,105,99,0,37,99,0,0,0,0,0,0,42,116,0,0,0,0,0,0,119,100,97,121,0,0,0,0,121,100,97,121,0,0,0,0,97,65,98,66,99,100,72,73,106,109,77,112,83,85,119,87,120,88,121,89,122,37,0,0,105,110,118,97,108,105,100,32,99,111,110,118,101,114,115,105,111,110,32,115,112,101,99,105,102,105,101,114,32,39,37,37,37,115,39,0,0,0,0,0,60,37,115,62,32,97,116,32,108,105,110,101,32,37,100,32,110,111,116,32,105,110,115,105,100,101,32,97,32,108,111,111,112,0,0,0,0,0,0,0,110,111,32,118,105,115,105,98,108,101,32,108,97,98,101,108,32,39,37,115,39,32,102,111,114,32,60,103,111,116,111,62,32,97,116,32,108,105,110,101,32,37,100,0,0,0,0,0,60,103,111,116,111,32,37,115,62,32,97,116,32,108,105,110,101,32,37,100,32,106,117,109,112,115,32,105,110,116,111,32,116,104,101,32,115,99,111,112,101,32,111,102,32,108,111,99,97,108,32,39,37,115,39,0,98,114,101,97,107,0,0,0,108,97,98,101,108,115,47,103,111,116,111,115,0,0,0,0,37,115,32,101,120,112,101,99,116,101,100,0,0,0,0,0,115,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,67,32,108,101,118,101,108,115,0,0,0,0,0,0,0,0,6,6,6,6,7,7,7,7,7,7,10,9,5,4,3,3,3,3,3,3,3,3,3,3,3,3,2,2,1,1,0,0,99,97,110,110,111,116,32,117,115,101,32,39,46,46,46,39,32,111,117,116,115,105,100,101,32,97,32,118,97,114,97,114,103,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,115,101,108,102,0,0,0,0,60,110,97,109,101,62,32,111,114,32,39,46,46,46,39,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,0,0,108,111,99,97,108,32,118,97,114,105,97,98,108,101,115,0,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,105,116,101,109,115,32,105,110,32,97,32,99,111,110,115,116,114,117,99,116,111,114,0,0,109,97,105,110,32,102,117,110,99,116,105,111,110,0,0,0,102,117,110,99,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,0,0,0,0,0,116,111,111,32,109,97,110,121,32,37,115,32,40,108,105,109,105,116,32,105,115,32,37,100,41,32,105,110,32,37,115,0,102,117,110,99,116,105,111,110,32,97,114,103,117,109,101,110,116,115,32,101,120,112,101,99,116,101,100,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,115,121,109,98,111,108,0,0,0,0,0,0,0,108,97,98,101,108,32,39,37,115,39,32,97,108,114,101,97,100,121,32,100,101,102,105,110,101,100,32,111,110,32,108,105,110,101,32,37,100,0,0,0,39,61,39,32,111,114,32,39,105,110,39,32,101,120,112,101,99,116,101,100,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,40,102,111,114,32,115,116,97,116,101,41,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,0,0,0,0,0,37,115,32,101,120,112,101,99,116,101,100,32,40,116,111,32,99,108,111,115,101,32,37,115,32,97,116,32,108,105,110,101,32,37,100,41,0,0,0,0,117,112,118,97,108,117,101,115,0,0,0,0,0,0,0,0,110,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,0,0,0,0,0,0,0,144,27,0,0,64,0,0,0,152,27,0,0,65,0,0,0,160,27,0,0,66,0,0,0,168,27,0,0,67,0,0,0,176,27,0,0,68,0,0,0,184,27,0,0,69,0,0,0,192,27,0,0,70,0,0,0,200,27,0,0,71,0,0,0,208,27,0,0,72,0,0,0,216,27,0,0,73,0,0,0,224,27,0,0,74,0,0,0,232,27,0,0,75,0,0,0,240,27,0,0,76,0,0,0,248,27,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,98,121,116,101,0,0,0,0,99,104,97,114,0,0,0,0,100,117,109,112,0,0,0,0,102,105,110,100,0,0,0,0,102,111,114,109,97,116,0,0,103,109,97,116,99,104,0,0,103,115,117,98,0,0,0,0,108,101,110,0,0,0,0,0,108,111,119,101,114,0,0,0,109,97,116,99,104,0,0,0,114,101,112,0,0,0,0,0,114,101,118,101,114,115,101,0,115,117,98,0,0,0,0,0,117,112,112,101,114,0,0,0,114,101,115,117,108,116,105,110,103,32,115,116,114,105,110,103,32,116,111,111,32,108,97,114,103,101,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,99,97,112,116,117,114,101,115,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,97,112,116,117,114,101,32,105,110,100,101,120,0,0,0,117,110,102,105,110,105,115,104,101,100,32,99,97,112,116,117,114,101,0,0,0,0,0,0,112,97,116,116,101,114,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,109,105,115,115,105,110,103,32,39,91,39,32,97,102,116,101,114,32,39,37,37,102,39,32,105,110,32,112,97,116,116,101,114,110,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,97,112,116,117,114,101,32,105,110,100,101,120,32,37,37,37,100,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,112,97,116,116,101,114,110,32,40,101,110,100,115,32,119,105,116,104,32,39,37,37,39,41,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,112,97,116,116,101,114,110,32,40,109,105,115,115,105,110,103,32,39,93,39,41,0,109,97,108,102,111,114,109,101,100,32,112,97,116,116,101,114,110,32,40,109,105,115,115,105,110,103,32,97,114,103,117,109,101,110,116,115,32,116,111,32,39,37,37,98,39,41,0,0,105,110,118,97,108,105,100,32,112,97,116,116,101,114,110,32,99,97,112,116,117,114,101,0,94,36,42,43,63,46,40,91,37,45,0,0,0,0,0,0,115,116,114,105,110,103,47,102,117,110,99,116,105,111,110,47,116,97,98,108,101,32,101,120,112,101,99,116,101,100,0,0,105,110,118,97,108,105,100,32,114,101,112,108,97,99,101,109,101,110,116,32,118,97,108,117,101,32,40,97,32,37,115,41,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,117,115,101,32,111,102,32,39,37,99,39,32,105,110,32,114,101,112,108,97,99,101,109,101,110,116,32,115,116,114,105,110,103,0,0,0,0,0,0,0,110,111,32,118,97,108,117,101,0,0,0,0,0,0,0,0,110,111,116,32,97,32,110,117,109,98,101,114,32,105,110,32,112,114,111,112,101,114,32,114,97,110,103,101,0,0,0,0,110,111,116,32,97,32,110,111,110,45,110,101,103,97,116,105,118,101,32,110,117,109,98,101,114,32,105,110,32,112,114,111,112,101,114,32,114,97,110,103,101,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,32,39,37,37,37,99,39,32,116,111,32,39,102,111,114,109,97,116,39,0,0,0,0,0,0,0,92,37,100,0,0,0,0,0,92,37,48,51,100,0,0,0,45,43,32,35,48,0,0,0,105,110,118,97,108,105,100,32,102,111,114,109,97,116,32,40,114,101,112,101,97,116,101,100,32,102,108,97,103,115,41,0,105,110,118,97,108,105,100,32,102,111,114,109,97,116,32,40,119,105,100,116,104,32,111,114,32,112,114,101,99,105,115,105,111,110,32,116,111,111,32,108,111,110,103,41,0,0,0,0,117,110,97,98,108,101,32,116,111,32,100,117,109,112,32,103,105,118,101,110,32,102,117,110,99,116,105,111,110,0,0,0,118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,115,116,114,105,110,103,32,115,108,105,99,101,32,116,111,111,32,108,111,110,103,0,0,0,116,97,98,108,101,32,105,110,100,101,120,32,105,115,32,110,105,108,0,0,0,0,0,0,116,97,98,108,101,32,105,110,100,101,120,32,105,115,32,78,97,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,97,98,108,101,32,111,118,101,114,102,108,111,119,0,0,105,110,118,97,108,105,100,32,107,101,121,32,116,111,32,39,110,101,120,116,39,0,0,0,224,31,0,0,78,0,0,0,232,31,0,0,79,0,0,0,240,31,0,0,80,0,0,0,248,31,0,0,81,0,0,0,216,31,0,0,82,0,0,0,0,32,0,0,83,0,0,0,8,32,0,0,84,0,0,0,0,0,0,0,0,0,0,0,117,110,112,97,99,107,0,0,99,111,110,99,97,116,0,0,109,97,120,110,0,0,0,0,105,110,115,101,114,116,0,0,112,97,99,107,0,0,0,0,114,101,109,111,118,101,0,0,115,111,114,116,0,0,0,0,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,114,100,101,114,32,102,117,110,99,116,105,111,110,32,102,111,114,32,115,111,114,116,105,110,103,0,0,0,0,0,0,112,111,115,105,116,105,111,110,32,111,117,116,32,111,102,32,98,111,117,110,100,115,0,0,116,111,111,32,109,97,110,121,32,114,101,115,117,108,116,115,32,116,111,32,117,110,112,97,99,107,0,0,0,0,0,0,110,0,0,0,0,0,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,39,105,110,115,101,114,116,39,0,0,0,105,110,118,97,108,105,100,32,118,97,108,117,101,32,40,37,115,41,32,97,116,32,105,110,100,101,120,32,37,100,32,105,110,32,116,97,98,108,101,32,102,111,114,32,39,99,111,110,99,97,116,39,0,0,0,0,110,111,32,118,97,108,117,101,0,0,0,0,0,0,0,0,110,105,108,0,0,0,0,0,98,111,111,108,101,97,110,0,117,115,101,114,100,97,116,97,0,0,0,0,0,0,0,0,110,117,109,98,101,114,0,0,115,116,114,105,110,103,0,0,116,97,98,108,101,0,0,0,102,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,116,104,114,101,97,100,0,0,112,114,111,116,111,0,0,0,117,112,118,97,108,0,0,0,224,32,0,0,240,32,0,0,248,32,0,0,0,33,0,0,16,33,0,0,24,33,0,0,32,33,0,0,40,33,0,0,0,33,0,0,56,33,0,0,64,33,0,0,72,33,0,0,200,33,0,0,208,33,0,0,224,33,0,0,232,33,0,0,240,33,0,0,248,33,0,0,0,34,0,0,8,34,0,0,16,34,0,0,24,34,0,0,32,34,0,0,40,34,0,0,48,34,0,0,56,34,0,0,64,34,0,0,72,34,0,0,88,34,0,0,0,0,0,0,95,95,105,110,100,101,120,0,95,95,110,101,119,105,110,100,101,120,0,0,0,0,0,0,95,95,103,99,0,0,0,0,95,95,109,111,100,101,0,0,95,95,108,101,110,0,0,0,95,95,101,113,0,0,0,0,95,95,97,100,100,0,0,0,95,95,115,117,98,0,0,0,95,95,109,117,108,0,0,0,95,95,100,105,118,0,0,0,95,95,109,111,100,0,0,0,95,95,112,111,119,0,0,0,95,95,117,110,109,0,0,0,95,95,108,116,0,0,0,0,95,95,108,101,0,0,0,0,95,95,99,111,110,99,97,116,0,0,0,0,0,0,0,0,95,95,99,97,108,108,0,0,98,105,110,97,114,121,32,115,116,114,105,110,103,0,0,0,25,147,13,10,26,10,0,0,116,114,117,110,99,97,116,101,100,0,0,0,0,0,0,0,37,115,58,32,37,115,32,112,114,101,99,111,109,112,105,108,101,100,32,99,104,117,110,107,0,0,0,0,0,0,0,0,99,111,114,114,117,112,116,101,100,0,0,0,0,0,0,0,110,111,116,32,97,0,0,0,118,101,114,115,105,111,110,32,109,105,115,109,97,116,99,104,32,105,110,0,0,0,0,0,105,110,99,111,109,112,97,116,105,98,108,101,0,0,0,0,37,46,49,52,103,0,0,0,105,110,100,101,120,0,0,0,108,111,111,112,32,105,110,32,103,101,116,116,97,98,108,101,0,0,0,0,0,0,0,0,108,111,111,112,32,105,110,32,115,101,116,116,97,98,108,101,0,0,0,0,0,0,0,0,115,116,114,105,110,103,32,108,101,110,103,116,104,32,111,118,101,114,102,108,111,119,0,0,103,101,116,32,108,101,110,103,116,104,32,111,102,0,0,0,39,102,111,114,39,32,105,110,105,116,105,97,108,32,118,97,108,117,101,32,109,117,115,116,32,98,101,32,97,32,110,117,109,98,101,114,0,0,0,0,39,102,111,114,39,32,108,105,109,105,116,32,109,117,115,116,32,98,101,32,97,32,110,117,109,98,101,114,0,0,0,0,39,102,111,114,39,32,115,116,101,112,32,109,117,115,116,32,98,101,32,97,32,110,117,109,98,101,114,0,0,0,0,0,95,71,0,0,0,0,0,0,152,36,0,0,85,0,0,0,160,36,0,0,86,0,0,0,176,36,0,0,87,0,0,0,184,36,0,0,88,0,0,0,192,36,0,0,89,0,0,0,208,36,0,0,90,0,0,0,216,36,0,0,91,0,0,0,232,36,0,0,92,0,0,0,240,36,0,0,92,0,0,0,0,37,0,0,93,0,0,0,8,37,0,0,94,0,0,0,16,37,0,0,95,0,0,0,24,37,0,0,96,0,0,0,32,37,0,0,97,0,0,0,48,37,0,0,98,0,0,0,56,37,0,0,99,0,0,0,64,37,0,0,100,0,0,0,72,37,0,0,101,0,0,0,80,37,0,0,102,0,0,0,96,37,0,0,103,0,0,0,112,37,0,0,104,0,0,0,128,37,0,0,105,0,0,0,136,37,0,0,106,0,0,0,0,0,0,0,0,0,0,0,76,117,97,32,53,46,50,0,95,86,69,82,83,73,79,78,0,0,0,0,0,0,0,0,97,115,115,101,114,116,0,0,99,111,108,108,101,99,116,103,97,114,98,97,103,101,0,0,100,111,102,105,108,101,0,0,101,114,114,111,114,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,105,112,97,105,114,115,0,0,108,111,97,100,102,105,108,101,0,0,0,0,0,0,0,0,108,111,97,100,0,0,0,0,108,111,97,100,115,116,114,105,110,103,0,0,0,0,0,0,110,101,120,116,0,0,0,0,112,97,105,114,115,0,0,0,112,99,97,108,108,0,0,0,112,114,105,110,116,0,0,0,114,97,119,101,113,117,97,108,0,0,0,0,0,0,0,0,114,97,119,108,101,110,0,0,114,97,119,103,101,116,0,0,114,97,119,115,101,116,0,0,115,101,108,101,99,116,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,116,111,110,117,109,98,101,114,0,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,0,0,0,116,121,112,101,0,0,0,0,120,112,99,97,108,108,0,0,118,97,108,117,101,32,101,120,112,101,99,116,101,100,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,98,97,115,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,32,12,10,13,9,11,0,0,110,105,108,32,111,114,32,116,97,98,108,101,32,101,120,112,101,99,116,101,100,0,0,0,95,95,109,101,116,97,116,97,98,108,101,0,0,0,0,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,97,32,112,114,111,116,101,99,116,101,100,32,109,101,116,97,116,97,98,108,101,0,0,0,0,0,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,116,97,98,108,101,32,111,114,32,115,116,114,105,110,103,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,0,0,39,116,111,115,116,114,105,110,103,39,32,109,117,115,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,32,116,111,32,39,112,114,105,110,116,39,0,0,0,0,0,0,95,95,112,97,105,114,115,0,98,116,0,0,0,0,0,0,61,40,108,111,97,100,41,0,116,111,111,32,109,97,110,121,32,110,101,115,116,101,100,32,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,114,101,97,100,101,114,32,102,117,110,99,116,105,111,110,32,109,117,115,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,0,0,0,0,95,95,105,112,97,105,114,115,0,0,0,0,0,0,0,0,40,39,0,0,48,39,0,0,56,39,0,0,64,39,0,0,72,39,0,0,80,39,0,0,96,39,0,0,112,39,0,0,128,39,0,0,144,39,0,0,160,39,0,0,0,0,0,0,115,116,111,112,0,0,0,0,114,101,115,116,97,114,116,0,99,111,108,108,101,99,116,0,99,111,117,110,116,0,0,0,115,116,101,112,0,0,0,0,115,101,116,112,97,117,115,101,0,0,0,0,0,0,0,0,115,101,116,115,116,101,112,109,117,108,0,0,0,0,0,0,115,101,116,109,97,106,111,114,105,110,99,0,0,0,0,0,105,115,114,117,110,110,105,110,103,0,0,0,0,0,0,0,103,101,110,101,114,97,116,105,111,110,97,108,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,37,115,0,0,0,0,0,0,97,115,115,101,114,116,105,111,110,32,102,97,105,108,101,100,33,0,0,0,0,0,0,0,104,40,0,0,107], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); -/* memory initializer */ allocate([112,40,0,0,108,0,0,0,120,40,0,0,109,0,0,0,128,40,0,0,110,0,0,0,136,40,0,0,111,0,0,0,144,40,0,0,112,0,0,0,152,40,0,0,113,0,0,0,160,40,0,0,114,0,0,0,168,40,0,0,115,0,0,0,176,40,0,0,116,0,0,0,184,40,0,0,117,0,0,0,192,40,0,0,118,0,0,0,0,0,0,0,0,0,0,0,97,114,115,104,105,102,116,0,98,97,110,100,0,0,0,0,98,110,111,116,0,0,0,0,98,111,114,0,0,0,0,0,98,120,111,114,0,0,0,0,98,116,101,115,116,0,0,0,101,120,116,114,97,99,116,0,108,114,111,116,97,116,101,0,108,115,104,105,102,116,0,0,114,101,112,108,97,99,101,0,114,114,111,116,97,116,101,0,114,115,104,105,102,116,0,0,102,105,101,108,100,32,99,97,110,110,111,116,32,98,101,32,110,101,103,97,116,105,118,101,0,0,0,0,0,0,0,0,119,105,100,116,104,32,109,117,115,116,32,98,101,32,112,111,115,105,116,105,118,101,0,0,116,114,121,105,110,103,32,116,111,32,97,99,99,101,115,115,32,110,111,110,45,101,120,105,115,116,101,110,116,32,98,105,116,115,0,0,0,0,0,0,102,117,110,99,116,105,111,110,32,111,114,32,101,120,112,114,101,115,115,105,111,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,0,99,111,110,115,116,114,117,99,116,111,114,32,116,111,111,32,108,111,110,103,0,0,0,0,99,111,110,115,116,97,110,116,115,0,0,0,0,0,0,0,111,112,99,111,100,101,115,0,99,111,110,116,114,111,108,32,115,116,114,117,99,116,117,114,101,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,216,41,0,0,119,0,0,0,224,41,0,0,120,0,0,0,232,41,0,0,121,0,0,0,240,41,0,0,122,0,0,0,248,41,0,0,123,0,0,0,0,42,0,0,124,0,0,0,0,0,0,0,0,0,0,0,99,114,101,97,116,101,0,0,114,101,115,117,109,101,0,0,114,117,110,110,105,110,103,0,115,116,97,116,117,115,0,0,119,114,97,112,0,0,0,0,121,105,101,108,100,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,116,111,32,114,101,115,117,109,101,0,0,0,0,99,97,110,110,111,116,32,114,101,115,117,109,101,32,100,101,97,100,32,99,111,114,111,117,116,105,110,101,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,115,117,108,116,115,32,116,111,32,114,101,115,117,109,101,0,0,0,0,0,0,99,111,114,111,117,116,105,110,101,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,115,117,115,112,101,110,100,101,100,0,0,0,0,0,0,0,110,111,114,109,97,108,0,0,100,101,97,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,22,22,22,22,22,22,22,22,22,22,4,4,4,4,4,4,4,21,21,21,21,21,21,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,5,4,21,21,21,21,21,21,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,44,0,0,125,0,0,0,56,44,0,0,126,0,0,0,72,44,0,0,127,0,0,0,80,44,0,0,128,0,0,0,88,44,0,0,129,0,0,0,104,44,0,0,130,0,0,0,120,44,0,0,131,0,0,0,136,44,0,0,132,0,0,0,152,44,0,0,133,0,0,0,168,44,0,0,134,0,0,0,184,44,0,0,135,0,0,0,200,44,0,0,136,0,0,0,208,44,0,0,137,0,0,0,224,44,0,0,138,0,0,0,240,44,0,0,139,0,0,0,0,45,0,0,140,0,0,0,0,0,0,0,0,0,0,0,100,101,98,117,103,0,0,0,103,101,116,117,115,101,114,118,97,108,117,101,0,0,0,0,103,101,116,104,111,111,107,0,103,101,116,105,110,102,111,0,103,101,116,108,111,99,97,108,0,0,0,0,0,0,0,0,103,101,116,114,101,103,105,115,116,114,121,0,0,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,103,101,116,117,112,118,97,108,117,101,0,0,0,0,0,0,117,112,118,97,108,117,101,106,111,105,110,0,0,0,0,0,117,112,118,97,108,117,101,105,100,0,0,0,0,0,0,0,115,101,116,117,115,101,114,118,97,108,117,101,0,0,0,0,115,101,116,104,111,111,107,0,115,101,116,108,111,99,97,108,0,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,115,101,116,117,112,118,97,108,117,101,0,0,0,0,0,0,116,114,97,99,101,98,97,99,107,0,0,0,0,0,0,0,110,105,108,32,111,114,32,116,97,98,108,101,32,101,120,112,101,99,116,101,100,0,0,0,108,101,118,101,108,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,95,72,75,69,89,0,0,0,107,0,0,0,0,0,0,0,95,95,109,111,100,101,0,0,112,45,0,0,120,45,0,0,128,45,0,0,136,45,0,0,144,45,0,0,0,0,0,0,99,97,108,108,0,0,0,0,114,101,116,117,114,110,0,0,108,105,110,101,0,0,0,0,99,111,117,110,116,0,0,0,116,97,105,108,32,99,97,108,108,0,0,0,0,0,0,0,102,117,108,108,32,117,115,101,114,100,97,116,97,32,101,120,112,101,99,116,101,100,44,32,103,111,116,32,108,105,103,104,116,32,117,115,101,114,100,97,116,97,0,0,0,0,0,0,62,117,0,0,0,0,0,0,105,110,118,97,108,105,100,32,117,112,118,97,108,117,101,32,105,110,100,101,120,0,0,0,76,117,97,32,102,117,110,99,116,105,111,110,32,101,120,112,101,99,116,101,100,0,0,0,102,108,110,83,116,117,0,0,62,37,115,0,0,0,0,0,102,117,110,99,116,105,111,110,32,111,114,32,108,101,118,101,108,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,0,0,115,111,117,114,99,101,0,0,115,104,111,114,116,95,115,114,99,0,0,0,0,0,0,0,108,105,110,101,100,101,102,105,110,101,100,0,0,0,0,0,108,97,115,116,108,105,110,101,100,101,102,105,110,101,100,0,119,104,97,116,0,0,0,0,99,117,114,114,101,110,116,108,105,110,101,0,0,0,0,0,110,117,112,115,0,0,0,0,110,112,97,114,97,109,115,0,105,115,118,97,114,97,114,103,0,0,0,0,0,0,0,0,110,97,109,101,0,0,0,0,110,97,109,101,119,104,97,116,0,0,0,0,0,0,0,0,105,115,116,97,105,108,99,97,108,108,0,0,0,0,0,0,97,99,116,105,118,101,108,105,110,101,115,0,0,0,0,0,102,117,110,99,0,0,0,0,101,120,116,101,114,110,97,108,32,104,111,111,107,0,0,0,108,117,97,95,100,101,98,117,103,62,32,0,0,0,0,0,99,111,110,116,10,0,0,0,61,40,100,101,98,117,103,32,99,111,109,109,97,110,100,41,0,0,0,0,0,0,0,0,37,115,10,0,0,0,0,0,80,49,0,0,88,49,0,0,96,49,0,0,104,49,0,0,112,49,0,0,120,49,0,0,128,49,0,0,136,49,0,0,144,49,0,0,160,49,0,0,168,49,0,0,176,49,0,0,184,49,0,0,192,49,0,0,200,49,0,0,208,49,0,0,216,49,0,0,224,49,0,0,232,49,0,0,240,49,0,0,248,49,0,0,0,50,0,0,8,50,0,0,16,50,0,0,24,50,0,0,32,50,0,0,40,50,0,0,48,50,0,0,56,50,0,0,64,50,0,0,72,50,0,0,88,50,0,0,96,50,0,0,0,0,0,0,39,37,99,39,0,0,0,0,99,104,97,114,40,37,100,41,0,0,0,0,0,0,0,0,39,37,115,39,0,0,0,0,95,69,78,86,0,0,0,0,105,110,118,97,108,105,100,32,108,111,110,103,32,115,116,114,105,110,103,32,100,101,108,105,109,105,116,101,114,0,0,0,46,0,0,0,0,0,0,0,69,101,0,0,0,0,0,0,88,120,0,0,0,0,0,0,80,112,0,0,0,0,0,0,43,45,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,110,117,109,98,101,114,0,0,0,0,0,0,0,0,108,101,120,105,99,97,108,32,101,108,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,0,0,117,110,102,105,110,105,115,104,101,100,32,115,116,114,105,110,103,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,101,115,99,97,112,101,32,115,101,113,117,101,110,99,101,0,100,101,99,105,109,97,108,32,101,115,99,97,112,101,32,116,111,111,32,108,97,114,103,101,0,0,0,0,0,0,0,0,104,101,120,97,100,101,99,105,109,97,108,32,100,105,103,105,116,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,117,110,102,105,110,105,115,104,101,100,32,108,111,110,103,32,115,116,114,105,110,103,0,0,117,110,102,105,110,105,115,104,101,100,32,108,111,110,103,32,99,111,109,109,101,110,116,0,99,104,117,110,107,32,104,97,115,32,116,111,111,32,109,97,110,121,32,108,105,110,101,115,0,0,0,0,0,0,0,0,37,115,58,37,100,58,32,37,115,0,0,0,0,0,0,0,37,115,32,110,101,97,114,32,37,115,0,0,0,0,0,0,97,110,100,0,0,0,0,0,98,114,101,97,107,0,0,0,100,111,0,0,0,0,0,0,101,108,115,101,0,0,0,0,101,108,115,101,105,102,0,0,101,110,100,0,0,0,0,0,102,97,108,115,101,0,0,0,102,111,114,0,0,0,0,0,102,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,103,111,116,111,0,0,0,0,105,102,0,0,0,0,0,0,105,110,0,0,0,0,0,0,108,111,99,97,108,0,0,0,110,105,108,0,0,0,0,0,110,111,116,0,0,0,0,0,111,114,0,0,0,0,0,0,114,101,112,101,97,116,0,0,114,101,116,117,114,110,0,0,116,104,101,110,0,0,0,0,116,114,117,101,0,0,0,0,117,110,116,105,108,0,0,0,119,104,105,108,101,0,0,0,46,46,0,0,0,0,0,0,46,46,46,0,0,0,0,0,61,61,0,0,0,0,0,0,62,61,0,0,0,0,0,0,60,61,0,0,0,0,0,0,126,61,0,0,0,0,0,0,58,58,0,0,0,0,0,0,60,101,111,102,62,0,0,0,60,110,117,109,98,101,114,62,0,0,0,0,0,0,0,0,60,110,97,109,101,62,0,0,60,115,116,114,105,110,103,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,110,97,110,0,0,0,0,0,95,112,137,0,255,9,47,15,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - - - Module["_rand_r"] = _rand_r; - - var ___rand_seed=allocate([0x0273459b, 0, 0, 0], "i32", ALLOC_STATIC); - Module["_rand"] = _rand; - - - - 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}; - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - // reuse all of the core MEMFS functionality - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },getDB:function (name, callback) { - // check the cache first - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - req.onupgradeneeded = function(e) { - var db = e.target.result; - var transaction = e.target.transaction; - - var fileStore; - - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - - fileStore.createIndex('timestamp', 'timestamp', { unique: false }); - }; - req.onsuccess = function() { - db = req.result; - - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function() { - callback(this.error); - }; - },getLocalSet:function (mount, callback) { - var entries = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat; - - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); - } - - entries[path] = { timestamp: stat.mtime }; - } - - return callback(null, { type: 'local', entries: entries }); - },getRemoteSet:function (mount, callback) { - var entries = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index('timestamp'); - - index.openKeyCursor().onsuccess = function(event) { - var cursor = event.target.result; - - if (!cursor) { - return callback(null, { type: 'remote', db: db, entries: entries }); - } - - entries[cursor.primaryKey] = { timestamp: cursor.key }; - - cursor.continue(); - }; - }); - },loadLocalEntry:function (path, callback) { - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode }); - } else if (FS.isFile(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); - } else { - return callback(new Error('node type not supported')); - } - },storeLocalEntry:function (path, entry, callback) { - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); - } else { - return callback(new Error('node type not supported')); - } - - FS.utime(path, entry.timestamp, entry.timestamp); - } catch (e) { - return callback(e); - } - - callback(null); - },removeLocalEntry:function (path, callback) { - try { - var lookup = FS.lookupPath(path); - var stat = FS.stat(path); - - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - - callback(null); - },loadRemoteEntry:function (store, path, callback) { - var req = store.get(path); - req.onsuccess = function(event) { callback(null, event.target.result); }; - req.onerror = function() { callback(this.error); }; - },storeRemoteEntry:function (store, path, entry, callback) { - var req = store.put(entry, path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },removeRemoteEntry:function (store, path, callback) { - var req = store.delete(path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create.push(key); - total++; - } - }); - - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - var e = dst.entries[key]; - var e2 = src.entries[key]; - if (!e2) { - remove.push(key); - total++; - } - }); - - if (!total) { - return callback(null); - } - - var errored = false; - var completed = 0; - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= total) { - return callback(null); - } - }; - - transaction.onerror = function() { done(this.error); }; - - // sort paths in ascending order so directory entries are created - // before the files inside them - create.sort().forEach(function (path) { - if (dst.type === 'local') { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - - // sort paths in descending order so files are deleted before their - // parent directories - remove.sort().reverse().forEach(function(path) { - if (dst.type === 'local') { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || {}; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return !!node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },getStreamFromPtr:function (ptr) { - return FS.streams[ptr - 1]; - },getPtrForStream:function (stream) { - return stream ? stream.fd + 1 : 0; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },getMounts:function (mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= mounts.length) { - callback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function (type, opts, mountpoint) { - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0, opts.canOwn); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }}; - - function _lseek(fildes, offset, whence) { - // off_t lseek(int fildes, off_t offset, int whence); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/lseek.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - return FS.llseek(stream, offset, whence); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fileno(stream) { - // int fileno(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - stream = FS.getStreamFromPtr(stream); - if (!stream) return -1; - return stream.fd; - }function _fseek(stream, offset, whence) { - // int fseek(FILE *stream, long offset, int whence); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fseek.html - var fd = _fileno(stream); - var ret = _lseek(fd, offset, whence); - if (ret == -1) { - return -1; - } - stream = FS.getStreamFromPtr(stream); - stream.eof = false; - return 0; - } - - - Module["_i64Subtract"] = _i64Subtract; - - - Module["_i64Add"] = _i64Add; - - function _setlocale(category, locale) { - if (!_setlocale.ret) _setlocale.ret = allocate([0], 'i8', ALLOC_NORMAL); - return _setlocale.ret; - } - - - function _close(fildes) { - // int close(int fildes); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - FS.close(stream); - return 0; - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fsync(fildes) { - // int fsync(int fildes); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fsync.html - var stream = FS.getStream(fildes); - if (stream) { - // We write directly to the file system, so there's nothing to do here. - return 0; - } else { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - }function _fclose(stream) { - // int fclose(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fclose.html - var fd = _fileno(stream); - _fsync(fd); - return _close(fd); - } - - - - - - function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - url = url + addr + ':' + port; - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - // The node ws library API for specifying optional subprotocol is slightly different than the browser's. - var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols; - - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _recv(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _read(fd, buf, len); - } - - function _pread(fildes, buf, nbyte, offset) { - // ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.read(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _read(fildes, buf, nbyte) { - // ssize_t read(int fildes, void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.read(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _fread(ptr, size, nitems, stream) { - // size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fread.html - var bytesToRead = nitems * size; - if (bytesToRead == 0) { - return 0; - } - var bytesRead = 0; - var streamObj = FS.getStreamFromPtr(stream); - if (!streamObj) { - ___setErrNo(ERRNO_CODES.EBADF); - return 0; - } - while (streamObj.ungotten.length && bytesToRead > 0) { - HEAP8[((ptr++)|0)]=streamObj.ungotten.pop(); - bytesToRead--; - bytesRead++; - } - var err = _read(streamObj.fd, ptr, bytesToRead); - if (err == -1) { - if (streamObj) streamObj.error = true; - return 0; - } - bytesRead += err; - if (bytesRead < bytesToRead) streamObj.eof = true; - return Math.floor(bytesRead / size); - } - - function _toupper(chr) { - if (chr >= 97 && chr <= 122) { - return chr - 97 + 65; - } else { - return chr; - } - } - - - - function _open(path, oflag, varargs) { - // int open(const char *path, int oflag, ...); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html - var mode = HEAP32[((varargs)>>2)]; - path = Pointer_stringify(path); - try { - var stream = FS.open(path, oflag, mode); - return stream.fd; - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _fopen(filename, mode) { - // FILE *fopen(const char *restrict filename, const char *restrict mode); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fopen.html - var flags; - mode = Pointer_stringify(mode); - if (mode[0] == 'r') { - if (mode.indexOf('+') != -1) { - flags = 2; - } else { - flags = 0; - } - } else if (mode[0] == 'w') { - if (mode.indexOf('+') != -1) { - flags = 2; - } else { - flags = 1; - } - flags |= 64; - flags |= 512; - } else if (mode[0] == 'a') { - if (mode.indexOf('+') != -1) { - flags = 2; - } else { - flags = 1; - } - flags |= 64; - flags |= 1024; - } else { - ___setErrNo(ERRNO_CODES.EINVAL); - return 0; - } - var fd = _open(filename, flags, allocate([0x1FF, 0, 0, 0], 'i32', ALLOC_STACK)); // All creation permissions. - return fd === -1 ? 0 : FS.getPtrForStream(FS.getStream(fd)); - } - - var _emscripten_check_longjmp=true; - - - - function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _fputc(c, stream) { - // int fputc(int c, FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html - var chr = unSign(c & 0xFF); - HEAP8[((_fputc.ret)|0)]=chr; - var fd = _fileno(stream); - var ret = _write(fd, _fputc.ret, 1); - if (ret == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return -1; - } else { - return chr; - } - } - - var _log=Math_log; - - var _emscripten_postinvoke=true; - - - function _putchar(c) { - // int putchar(int c); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/putchar.html - return _fputc(c, HEAP32[((_stdout)>>2)]); - } - Module["_saveSetjmp"] = _saveSetjmp; - - function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var fd = _fileno(stream); - var bytesWritten = _write(fd, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - function _system(command) { - // int system(const char *command); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/system.html - // Can't call external programs. - ___setErrNo(ERRNO_CODES.EAGAIN); - return -1; - } - - function _frexp(x, exp_addr) { - var sig = 0, exp_ = 0; - if (x !== 0) { - var sign = 1; - if (x < 0) { - x = -x; - sign = -1; - } - var raw_exp = Math.log(x)/Math.log(2); - exp_ = Math.ceil(raw_exp); - if (exp_ === raw_exp) exp_ += 1; - sig = sign*x/Math.pow(2, exp_); - } - HEAP32[((exp_addr)>>2)]=exp_; - return sig; - } - - - - var _tzname=allocate(8, "i32*", ALLOC_STATIC); - - var _daylight=allocate(1, "i32*", ALLOC_STATIC); - - var _timezone=allocate(1, "i32*", ALLOC_STATIC);function _tzset() { - // TODO: Use (malleable) environment variables instead of system settings. - if (_tzset.called) return; - _tzset.called = true; - - HEAP32[((_timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60; - - var winter = new Date(2000, 0, 1); - var summer = new Date(2000, 6, 1); - HEAP32[((_daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset()); - - var winterName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | winter.toString().match(/\(([A-Z]+)\)/)[1]; - var summerName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | summer.toString().match(/\(([A-Z]+)\)/)[1]; - var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL); - var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL); - HEAP32[((_tzname)>>2)]=winterNamePtr; - HEAP32[(((_tzname)+(4))>>2)]=summerNamePtr; - }function _mktime(tmPtr) { - _tzset(); - var year = HEAP32[(((tmPtr)+(20))>>2)]; - var timestamp = new Date(year >= 1900 ? year : year + 1900, - HEAP32[(((tmPtr)+(16))>>2)], - HEAP32[(((tmPtr)+(12))>>2)], - HEAP32[(((tmPtr)+(8))>>2)], - HEAP32[(((tmPtr)+(4))>>2)], - HEAP32[((tmPtr)>>2)], - 0).getTime() / 1000; - HEAP32[(((tmPtr)+(24))>>2)]=new Date(timestamp).getDay(); - var yday = Math.round((timestamp - (new Date(year, 0, 1)).getTime()) / (1000 * 60 * 60 * 24)); - HEAP32[(((tmPtr)+(28))>>2)]=yday; - return timestamp; - } - - function _isalpha(chr) { - return (chr >= 97 && chr <= 122) || - (chr >= 65 && chr <= 90); - } - - - function _malloc(bytes) { - /* Over-allocate to make sure it is byte-aligned by 8. - * This will leak memory, but this is only the dummy - * implementation (replaced by dlmalloc normally) so - * not an issue. - */ - var ptr = Runtime.dynamicAlloc(bytes + 8); - return (ptr+8) & 0xFFFFFFF8; - } - Module["_malloc"] = _malloc;function _tmpnam(s, dir, prefix) { - // char *tmpnam(char *s); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/tmpnam.html - // NOTE: The dir and prefix arguments are for internal use only. - var folder = FS.findObject(dir || '/tmp'); - if (!folder || !folder.isFolder) { - dir = '/tmp'; - folder = FS.findObject(dir); - if (!folder || !folder.isFolder) return 0; - } - var name = prefix || 'file'; - do { - name += String.fromCharCode(65 + Math.floor(Math.random() * 25)); - } while (name in folder.contents); - var result = dir + '/' + name; - if (!_tmpnam.buffer) _tmpnam.buffer = _malloc(256); - if (!s) s = _tmpnam.buffer; - writeAsciiToMemory(result, s); - return s; - } - - var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - - // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module - // Module['forcedAspectRatio'] = 4 / 3; - - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock'] || - canvas['msRequestPointerLock'] || - function(){}; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - document['msExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas || - document['msPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - document.addEventListener('mspointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - var canvasContainer = canvas.parentNode; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvasContainer) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen'] || - document['msExitFullscreen'] || - document['exitFullscreen'] || - function() {}; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else { - - // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - - if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - Browser.updateCanvasDimensions(canvas); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - document.addEventListener('MSFullscreenChange', fullScreenChange, false); - } - - // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - - // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) - canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || - canvasContainer['mozRequestFullScreen'] || - canvasContainer['msRequestFullscreen'] || - (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvasContainer.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },getMouseWheelDelta:function (event) { - return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },updateCanvasDimensions:function (canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { - if (w/h < Module['forcedAspectRatio']) { - w = Math.round(h * Module['forcedAspectRatio']); - } else { - h = Math.round(w / Module['forcedAspectRatio']); - } - } - if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != 'undefined') { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != 'undefined') { - if (w != wNative || h != hNative) { - canvas.style.setProperty( "width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } - } - }}; - - function _log10(x) { - return Math.log(x) / Math.LN10; - } - - function _isspace(chr) { - return (chr == 32) || (chr >= 9 && chr <= 13); - } - - - var ___tm_current=allocate(44, "i8", ALLOC_STATIC); - - - var ___tm_timezone=allocate(intArrayFromString("GMT"), "i8", ALLOC_STATIC);function _localtime_r(time, tmPtr) { - _tzset(); - var date = new Date(HEAP32[((time)>>2)]*1000); - HEAP32[((tmPtr)>>2)]=date.getSeconds(); - HEAP32[(((tmPtr)+(4))>>2)]=date.getMinutes(); - HEAP32[(((tmPtr)+(8))>>2)]=date.getHours(); - HEAP32[(((tmPtr)+(12))>>2)]=date.getDate(); - HEAP32[(((tmPtr)+(16))>>2)]=date.getMonth(); - HEAP32[(((tmPtr)+(20))>>2)]=date.getFullYear()-1900; - HEAP32[(((tmPtr)+(24))>>2)]=date.getDay(); - - var start = new Date(date.getFullYear(), 0, 1); - var yday = Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)); - HEAP32[(((tmPtr)+(28))>>2)]=yday; - HEAP32[(((tmPtr)+(36))>>2)]=start.getTimezoneOffset() * 60; - - var dst = Number(start.getTimezoneOffset() != date.getTimezoneOffset()); - HEAP32[(((tmPtr)+(32))>>2)]=dst; - - HEAP32[(((tmPtr)+(40))>>2)]=___tm_timezone; - - return tmPtr; - }function _localtime(time) { - return _localtime_r(time, ___tm_current); - } - - function _srand(seed) { - HEAP32[((___rand_seed)>>2)]=seed - } - - var _emscripten_prep_setjmp=true; - - - - - Module["_testSetjmp"] = _testSetjmp;function _longjmp(env, value) { - asm['setThrew'](env, value || 1); - throw 'longjmp'; - }function _emscripten_longjmp(env, value) { - _longjmp(env, value); - } - - var _ceil=Math_ceil; - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - Module["_memcpy"] = _memcpy; - - var _llvm_pow_f64=Math_pow; - - - - Module["_strlen"] = _strlen;function _fputs(s, stream) { - // int fputs(const char *restrict s, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html - var fd = _fileno(stream); - return _write(fd, s, _strlen(s)); - } - - function _sbrk(bytes) { - // Implement a Linux-like 'memory area' for our 'process'. - // Changes the size of the memory area by |bytes|; returns the - // address of the previous top ('break') of the memory area - // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP - var self = _sbrk; - if (!self.called) { - DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned - self.called = true; - assert(Runtime.dynamicAlloc); - self.alloc = Runtime.dynamicAlloc; - Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; - } - var ret = DYNAMICTOP; - if (bytes != 0) self.alloc(bytes); - return ret; // Previous break location. - } - - - function _sinh(x) { - var p = Math.pow(Math.E, x); - return (p - (1 / p)) / 2; - } - - function _cosh(x) { - var p = Math.pow(Math.E, x); - return (p + (1 / p)) / 2; - }function _tanh(x) { - return _sinh(x) / _cosh(x); - } - - function _signal(sig, func) { - // TODO - return 0; - } - - - - function __getFloat(text) { - return /^[+-]?[0-9]*\.?[0-9]+([eE][+-]?[0-9]+)?/.exec(text); - }function __scanString(format, get, unget, varargs) { - if (!__scanString.whiteSpace) { - __scanString.whiteSpace = {}; - __scanString.whiteSpace[32] = 1; - __scanString.whiteSpace[9] = 1; - __scanString.whiteSpace[10] = 1; - __scanString.whiteSpace[11] = 1; - __scanString.whiteSpace[12] = 1; - __scanString.whiteSpace[13] = 1; - } - // Supports %x, %4x, %d.%d, %lld, %s, %f, %lf. - // TODO: Support all format specifiers. - format = Pointer_stringify(format); - var soFar = 0; - if (format.indexOf('%n') >= 0) { - // need to track soFar - var _get = get; - get = function get() { - soFar++; - return _get(); - } - var _unget = unget; - unget = function unget() { - soFar--; - return _unget(); - } - } - var formatIndex = 0; - var argsi = 0; - var fields = 0; - var argIndex = 0; - var next; - - mainLoop: - for (var formatIndex = 0; formatIndex < format.length;) { - if (format[formatIndex] === '%' && format[formatIndex+1] == 'n') { - var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; - argIndex += Runtime.getAlignSize('void*', null, true); - HEAP32[((argPtr)>>2)]=soFar; - formatIndex += 2; - continue; - } - - if (format[formatIndex] === '%') { - var nextC = format.indexOf('c', formatIndex+1); - if (nextC > 0) { - var maxx = 1; - if (nextC > formatIndex+1) { - var sub = format.substring(formatIndex+1, nextC); - maxx = parseInt(sub); - if (maxx != sub) maxx = 0; - } - if (maxx) { - var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; - argIndex += Runtime.getAlignSize('void*', null, true); - fields++; - for (var i = 0; i < maxx; i++) { - next = get(); - HEAP8[((argPtr++)|0)]=next; - if (next === 0) return i > 0 ? fields : fields-1; // we failed to read the full length of this field - } - formatIndex += nextC - formatIndex + 1; - continue; - } - } - } - - // handle %[...] - if (format[formatIndex] === '%' && format.indexOf('[', formatIndex+1) > 0) { - var match = /\%([0-9]*)\[(\^)?(\]?[^\]]*)\]/.exec(format.substring(formatIndex)); - if (match) { - var maxNumCharacters = parseInt(match[1]) || Infinity; - var negateScanList = (match[2] === '^'); - var scanList = match[3]; - - // expand "middle" dashs into character sets - var middleDashMatch; - while ((middleDashMatch = /([^\-])\-([^\-])/.exec(scanList))) { - var rangeStartCharCode = middleDashMatch[1].charCodeAt(0); - var rangeEndCharCode = middleDashMatch[2].charCodeAt(0); - for (var expanded = ''; rangeStartCharCode <= rangeEndCharCode; expanded += String.fromCharCode(rangeStartCharCode++)); - scanList = scanList.replace(middleDashMatch[1] + '-' + middleDashMatch[2], expanded); - } - - var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; - argIndex += Runtime.getAlignSize('void*', null, true); - fields++; - - for (var i = 0; i < maxNumCharacters; i++) { - next = get(); - if (negateScanList) { - if (scanList.indexOf(String.fromCharCode(next)) < 0) { - HEAP8[((argPtr++)|0)]=next; - } else { - unget(); - break; - } - } else { - if (scanList.indexOf(String.fromCharCode(next)) >= 0) { - HEAP8[((argPtr++)|0)]=next; - } else { - unget(); - break; - } - } - } - - // write out null-terminating character - HEAP8[((argPtr++)|0)]=0; - formatIndex += match[0].length; - - continue; - } - } - // remove whitespace - while (1) { - next = get(); - if (next == 0) return fields; - if (!(next in __scanString.whiteSpace)) break; - } - unget(); - - if (format[formatIndex] === '%') { - formatIndex++; - var suppressAssignment = false; - if (format[formatIndex] == '*') { - suppressAssignment = true; - formatIndex++; - } - var maxSpecifierStart = formatIndex; - while (format[formatIndex].charCodeAt(0) >= 48 && - format[formatIndex].charCodeAt(0) <= 57) { - formatIndex++; - } - var max_; - if (formatIndex != maxSpecifierStart) { - max_ = parseInt(format.slice(maxSpecifierStart, formatIndex), 10); - } - var long_ = false; - var half = false; - var longLong = false; - if (format[formatIndex] == 'l') { - long_ = true; - formatIndex++; - if (format[formatIndex] == 'l') { - longLong = true; - formatIndex++; - } - } else if (format[formatIndex] == 'h') { - half = true; - formatIndex++; - } - var type = format[formatIndex]; - formatIndex++; - var curr = 0; - var buffer = []; - // Read characters according to the format. floats are trickier, they may be in an unfloat state in the middle, then be a valid float later - if (type == 'f' || type == 'e' || type == 'g' || - type == 'F' || type == 'E' || type == 'G') { - next = get(); - while (next > 0 && (!(next in __scanString.whiteSpace))) { - buffer.push(String.fromCharCode(next)); - next = get(); - } - var m = __getFloat(buffer.join('')); - var last = m ? m[0].length : 0; - for (var i = 0; i < buffer.length - last + 1; i++) { - unget(); - } - buffer.length = last; - } else { - next = get(); - var first = true; - - // Strip the optional 0x prefix for %x. - if ((type == 'x' || type == 'X') && (next == 48)) { - var peek = get(); - if (peek == 120 || peek == 88) { - next = get(); - } else { - unget(); - } - } - - while ((curr < max_ || isNaN(max_)) && next > 0) { - if (!(next in __scanString.whiteSpace) && // stop on whitespace - (type == 's' || - ((type === 'd' || type == 'u' || type == 'i') && ((next >= 48 && next <= 57) || - (first && next == 45))) || - ((type === 'x' || type === 'X') && (next >= 48 && next <= 57 || - next >= 97 && next <= 102 || - next >= 65 && next <= 70))) && - (formatIndex >= format.length || next !== format[formatIndex].charCodeAt(0))) { // Stop when we read something that is coming up - buffer.push(String.fromCharCode(next)); - next = get(); - curr++; - first = false; - } else { - break; - } - } - unget(); - } - if (buffer.length === 0) return 0; // Failure. - if (suppressAssignment) continue; - - var text = buffer.join(''); - var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; - argIndex += Runtime.getAlignSize('void*', null, true); - switch (type) { - case 'd': case 'u': case 'i': - if (half) { - HEAP16[((argPtr)>>1)]=parseInt(text, 10); - } else if (longLong) { - (tempI64 = [parseInt(text, 10)>>>0,(tempDouble=parseInt(text, 10),(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)],HEAP32[((argPtr)>>2)]=tempI64[0],HEAP32[(((argPtr)+(4))>>2)]=tempI64[1]); - } else { - HEAP32[((argPtr)>>2)]=parseInt(text, 10); - } - break; - case 'X': - case 'x': - HEAP32[((argPtr)>>2)]=parseInt(text, 16); - break; - case 'F': - case 'f': - case 'E': - case 'e': - case 'G': - case 'g': - case 'E': - // fallthrough intended - if (long_) { - HEAPF64[((argPtr)>>3)]=parseFloat(text); - } else { - HEAPF32[((argPtr)>>2)]=parseFloat(text); - } - break; - case 's': - var array = intArrayFromString(text); - for (var j = 0; j < array.length; j++) { - HEAP8[(((argPtr)+(j))|0)]=array[j]; - } - break; - } - fields++; - } else if (format[formatIndex].charCodeAt(0) in __scanString.whiteSpace) { - next = get(); - while (next in __scanString.whiteSpace) { - if (next <= 0) break mainLoop; // End of input. - next = get(); - } - unget(next); - formatIndex++; - } else { - // Not a specifier. - next = get(); - if (format[formatIndex].charCodeAt(0) !== next) { - unget(next); - break mainLoop; - } - formatIndex++; - } - } - return fields; - } - - function _fgetc(stream) { - // int fgetc(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fgetc.html - var streamObj = FS.getStreamFromPtr(stream); - if (!streamObj) return -1; - if (streamObj.eof || streamObj.error) return -1; - var ret = _fread(_fgetc.ret, 1, 1, stream); - if (ret == 0) { - return -1; - } else if (ret == -1) { - streamObj.error = true; - return -1; - } else { - return HEAPU8[((_fgetc.ret)|0)]; - } - } - - function _ungetc(c, stream) { - // int ungetc(int c, FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/ungetc.html - stream = FS.getStreamFromPtr(stream); - if (!stream) { - return -1; - } - if (c === -1) { - // do nothing for EOF character - return c; - } - c = unSign(c & 0xFF); - stream.ungotten.push(c); - stream.eof = false; - return c; - }function _fscanf(stream, format, varargs) { - // int fscanf(FILE *restrict stream, const char *restrict format, ... ); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/scanf.html - var streamObj = FS.getStreamFromPtr(stream); - if (!streamObj) { - return -1; - } - var buffer = []; - function get() { - var c = _fgetc(stream); - buffer.push(c); - return c; - }; - function unget() { - _ungetc(buffer.pop(), stream); - }; - return __scanString(format, get, unget, varargs); - } - - var _emscripten_preinvoke=true; - - function _localeconv() { - // %struct.timeval = type { char* decimal point, other stuff... } - // var indexes = Runtime.calculateStructAlignment({ fields: ['i32', 'i32'] }); - var me = _localeconv; - if (!me.ret) { - // These are defaults from the "C" locale - me.ret = allocate([ - allocate(intArrayFromString('.'), 'i8', ALLOC_NORMAL),0,0,0, // decimal_point - allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // thousands_sep - allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // grouping - allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // int_curr_symbol - allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // currency_symbol - allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // mon_decimal_point - allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // mon_thousands_sep - allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // mon_grouping - allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // positive_sign - allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0 // negative_sign - ], 'i8*', ALLOC_NORMAL); // Allocate strings in lconv, still don't allocate chars - } - return me.ret; - } - - - function _unlink(path) { - // int unlink(const char *path); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/unlink.html - path = Pointer_stringify(path); - try { - FS.unlink(path); - return 0; - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _rmdir(path) { - // int rmdir(const char *path); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/rmdir.html - path = Pointer_stringify(path); - try { - FS.rmdir(path); - return 0; - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _remove(path) { - // int remove(const char *path); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/remove.html - var ret = _unlink(path); - if (ret == -1) ret = _rmdir(path); - return ret; - } - - function _freopen(filename, mode, stream) { - // FILE *freopen(const char *restrict filename, const char *restrict mode, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/freopen.html - if (!filename) { - var streamObj = FS.getStreamFromPtr(stream); - if (!streamObj) { - ___setErrNo(ERRNO_CODES.EBADF); - return 0; - } - if (_freopen.buffer) _free(_freopen.buffer); - filename = intArrayFromString(streamObj.path); - filename = allocate(filename, 'i8', ALLOC_NORMAL); - } - _fclose(stream); - return _fopen(filename, mode); - } - - - function _rename(old_path, new_path) { - // int rename(const char *old, const char *new); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/rename.html - old_path = Pointer_stringify(old_path); - new_path = Pointer_stringify(new_path); - try { - FS.rename(old_path, new_path); - return 0; - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _tmpfile() { - // FILE *tmpfile(void); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/tmpfile.html - // TODO: Delete the created file on closing. - if (_tmpfile.mode) { - _tmpfile.mode = allocate(intArrayFromString('w+'), 'i8', ALLOC_NORMAL); - } - return _fopen(_tmpnam(0), _tmpfile.mode); - } - - function _sysconf(name) { - // long sysconf(int name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html - switch(name) { - case 30: return PAGE_SIZE; - case 132: - case 133: - case 12: - case 137: - case 138: - case 15: - case 235: - case 16: - case 17: - case 18: - case 19: - case 20: - case 149: - case 13: - case 10: - case 236: - case 153: - case 9: - case 21: - case 22: - case 159: - case 154: - case 14: - case 77: - case 78: - case 139: - case 80: - case 81: - case 79: - case 82: - case 68: - case 67: - case 164: - case 11: - case 29: - case 47: - case 48: - case 95: - case 52: - case 51: - case 46: - return 200809; - case 27: - case 246: - case 127: - case 128: - case 23: - case 24: - case 160: - case 161: - case 181: - case 182: - case 242: - case 183: - case 184: - case 243: - case 244: - case 245: - case 165: - case 178: - case 179: - case 49: - case 50: - case 168: - case 169: - case 175: - case 170: - case 171: - case 172: - case 97: - case 76: - case 32: - case 173: - case 35: - return -1; - case 176: - case 177: - case 7: - case 155: - case 8: - case 157: - case 125: - case 126: - case 92: - case 93: - case 129: - case 130: - case 131: - case 94: - case 91: - return 1; - case 74: - case 60: - case 69: - case 70: - case 4: - return 1024; - case 31: - case 42: - case 72: - return 32; - case 87: - case 26: - case 33: - return 2147483647; - case 34: - case 1: - return 47839; - case 38: - case 36: - return 99; - case 43: - case 37: - return 2048; - case 0: return 2097152; - case 3: return 65536; - case 28: return 32768; - case 44: return 32767; - case 75: return 16384; - case 39: return 1000; - case 89: return 700; - case 71: return 256; - case 40: return 255; - case 2: return 100; - case 180: return 64; - case 25: return 20; - case 5: return 16; - case 6: return 6; - case 73: return 4; - case 84: return 1; - } - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - } - - - function ___errno_location() { - return ___errno_state; - } - - - Module["_memset"] = _memset; - - - - Module["_bitshift64Shl"] = _bitshift64Shl; - - function _abort() { - Module['abort'](); - } - - - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = HEAPF64[(((varargs)+(argIndex))>>3)]; - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision < 0) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var origArg = currArg; - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], null); else - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], true); else - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (argSize == 8 && i64Math) { - if (origArg[1]) { - argText = (origArg[1]>>>0).toString(16); - var lower = (origArg[0]>>>0).toString(16); - while (lower.length < 8) lower = '0' + lower; - argText += lower; - } else { - argText = (origArg[0]>>>0).toString(16); - } - } else - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - } - - function _fgets(s, n, stream) { - // char *fgets(char *restrict s, int n, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fgets.html - var streamObj = FS.getStreamFromPtr(stream); - if (!streamObj) return 0; - if (streamObj.error || streamObj.eof) return 0; - var byte_; - for (var i = 0; i < n - 1 && byte_ != 10; i++) { - byte_ = _fgetc(stream); - if (byte_ == -1) { - if (streamObj.error || (streamObj.eof && i == 0)) return 0; - else if (streamObj.eof) break; - } - HEAP8[(((s)+(i))|0)]=byte_; - } - HEAP8[(((s)+(i))|0)]=0; - return s; - } - - var _tan=Math_tan; - - function _ispunct(chr) { - return (chr >= 33 && chr <= 47) || - (chr >= 58 && chr <= 64) || - (chr >= 91 && chr <= 96) || - (chr >= 123 && chr <= 126); - } - - function _feof(stream) { - // int feof(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/feof.html - stream = FS.getStreamFromPtr(stream); - return Number(stream && stream.eof); - } - - - Module["_tolower"] = _tolower; - - var _asin=Math_asin; - - function _clearerr(stream) { - // void clearerr(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/clearerr.html - stream = FS.getStreamFromPtr(stream); - if (!stream) { - return; - } - stream.eof = false; - stream.error = false; - } - - var _fabs=Math_abs; - - function _clock() { - if (_clock.start === undefined) _clock.start = Date.now(); - return Math.floor((Date.now() - _clock.start) * (1000000/1000)); - } - - - var _getc=_fgetc; - - function _modf(x, intpart) { - HEAPF64[((intpart)>>3)]=Math.floor(x); - return x - HEAPF64[((intpart)>>3)]; - } - - var _sqrt=Math_sqrt; - - function _isxdigit(chr) { - return (chr >= 48 && chr <= 57) || - (chr >= 97 && chr <= 102) || - (chr >= 65 && chr <= 70); - } - - function _ftell(stream) { - // long ftell(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/ftell.html - stream = FS.getStreamFromPtr(stream); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - if (FS.isChrdev(stream.node.mode)) { - ___setErrNo(ERRNO_CODES.ESPIPE); - return -1; - } else { - return stream.position; - } - } - - - function __exit(status) { - // void _exit(int status); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html - Module['exit'](status); - }function _exit(status) { - __exit(status); - } - - - function _snprintf(s, n, format, varargs) { - // int snprintf(char *restrict s, size_t n, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var limit = (n === undefined) ? result.length - : Math.min(result.length, Math.max(n - 1, 0)); - if (s < 0) { - s = -s; - var buf = _malloc(limit+1); - HEAP32[((s)>>2)]=buf; - s = buf; - } - for (var i = 0; i < limit; i++) { - HEAP8[(((s)+(i))|0)]=result[i]; - } - if (limit < n || (n === undefined)) HEAP8[(((s)+(i))|0)]=0; - return result.length; - }function _sprintf(s, format, varargs) { - // int sprintf(char *restrict s, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - return _snprintf(s, undefined, format, varargs); - } - - var _emscripten_get_longjmp_result=true; - - var _sin=Math_sin; - - - function _fmod(x, y) { - return x % y; - }var _fmodl=_fmod; - - - - var _atan=Math_atan; - - function _ferror(stream) { - // int ferror(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/ferror.html - stream = FS.getStreamFromPtr(stream); - return Number(stream && stream.error); - } - - function _time(ptr) { - var ret = Math.floor(Date.now()/1000); - if (ptr) { - HEAP32[((ptr)>>2)]=ret; - } - return ret; - } - - function _copysign(a, b) { - return __reallyNegative(a) === __reallyNegative(b) ? a : -a; - } - - - function _gmtime_r(time, tmPtr) { - var date = new Date(HEAP32[((time)>>2)]*1000); - HEAP32[((tmPtr)>>2)]=date.getUTCSeconds(); - HEAP32[(((tmPtr)+(4))>>2)]=date.getUTCMinutes(); - HEAP32[(((tmPtr)+(8))>>2)]=date.getUTCHours(); - HEAP32[(((tmPtr)+(12))>>2)]=date.getUTCDate(); - HEAP32[(((tmPtr)+(16))>>2)]=date.getUTCMonth(); - HEAP32[(((tmPtr)+(20))>>2)]=date.getUTCFullYear()-1900; - HEAP32[(((tmPtr)+(24))>>2)]=date.getUTCDay(); - HEAP32[(((tmPtr)+(36))>>2)]=0; - HEAP32[(((tmPtr)+(32))>>2)]=0; - var start = new Date(date); // define date using UTC, start from Jan 01 00:00:00 UTC - start.setUTCDate(1); - start.setUTCMonth(0); - start.setUTCHours(0); - start.setUTCMinutes(0); - start.setUTCSeconds(0); - start.setUTCMilliseconds(0); - var yday = Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)); - HEAP32[(((tmPtr)+(28))>>2)]=yday; - HEAP32[(((tmPtr)+(40))>>2)]=___tm_timezone; - - return tmPtr; - }function _gmtime(time) { - return _gmtime_r(time, ___tm_current); - } - - function _isgraph(chr) { - return 0x20 < chr && chr < 0x7F; - } - - - - function _strerror_r(errnum, strerrbuf, buflen) { - if (errnum in ERRNO_MESSAGES) { - if (ERRNO_MESSAGES[errnum].length > buflen - 1) { - return ___setErrNo(ERRNO_CODES.ERANGE); - } else { - var msg = ERRNO_MESSAGES[errnum]; - writeAsciiToMemory(msg, strerrbuf); - return 0; - } - } else { - return ___setErrNo(ERRNO_CODES.EINVAL); - } - }function _strerror(errnum) { - if (!_strerror.buffer) _strerror.buffer = _malloc(256); - _strerror_r(errnum, _strerror.buffer, 256); - return _strerror.buffer; - } - - - - - - var _environ=allocate(1, "i32*", ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env) { - // WARNING: Arbitrary limit! - var MAX_ENV_VALUES = 64; - var TOTAL_ENV_SIZE = 1024; - - // Statically allocate memory for the environment. - var poolPtr; - var envPtr; - if (!___buildEnvironment.called) { - ___buildEnvironment.called = true; - // Set default values. Use string keys for Closure Compiler compatibility. - ENV['USER'] = 'root'; - ENV['PATH'] = '/'; - ENV['PWD'] = '/'; - ENV['HOME'] = '/home/emscripten'; - ENV['LANG'] = 'en_US.UTF-8'; - ENV['_'] = './this.program'; - // Allocate memory. - poolPtr = allocate(TOTAL_ENV_SIZE, 'i8', ALLOC_STATIC); - envPtr = allocate(MAX_ENV_VALUES * 4, - 'i8*', ALLOC_STATIC); - HEAP32[((envPtr)>>2)]=poolPtr; - HEAP32[((_environ)>>2)]=envPtr; - } else { - envPtr = HEAP32[((_environ)>>2)]; - poolPtr = HEAP32[((envPtr)>>2)]; - } - - // Collect key=value lines. - var strings = []; - var totalSize = 0; - for (var key in env) { - if (typeof env[key] === 'string') { - var line = key + '=' + env[key]; - strings.push(line); - totalSize += line.length; - } - } - if (totalSize > TOTAL_ENV_SIZE) { - throw new Error('Environment size exceeded TOTAL_ENV_SIZE!'); - } - - // Make new. - var ptrSize = 4; - for (var i = 0; i < strings.length; i++) { - var line = strings[i]; - writeAsciiToMemory(line, poolPtr); - HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr; - poolPtr += line.length + 1; - } - HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0; - }var ENV={};function _getenv(name) { - // char *getenv(const char *name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html - if (name === 0) return 0; - name = Pointer_stringify(name); - if (!ENV.hasOwnProperty(name)) return 0; - - if (_getenv.ret) _free(_getenv.ret); - _getenv.ret = allocate(intArrayFromString(ENV[name]), 'i8', ALLOC_NORMAL); - return _getenv.ret; - } - - var _emscripten_setjmp=true; - - var _cos=Math_cos; - - function _isalnum(chr) { - return (chr >= 48 && chr <= 57) || - (chr >= 97 && chr <= 122) || - (chr >= 65 && chr <= 90); - } - - var _BItoD=true; - - function _difftime(time1, time0) { - return time1 - time0; - } - - var _floor=Math_floor; - - function _iscntrl(chr) { - return (0 <= chr && chr <= 0x1F) || chr === 0x7F; - } - - var _atan2=Math_atan2; - - function _setvbuf(stream, buf, type, size) { - // int setvbuf(FILE *restrict stream, char *restrict buf, int type, size_t size); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/setvbuf.html - // TODO: Implement custom buffering. - return 0; - } - - var _exp=Math_exp; - - var _copysignl=_copysign; - - function _islower(chr) { - return chr >= 97 && chr <= 122; - } - - var _acos=Math_acos; - - function _isupper(chr) { - return chr >= 65 && chr <= 90; - } - - - function __isLeapYear(year) { - return year%4 === 0 && (year%100 !== 0 || year%400 === 0); - } - - function __arraySum(array, index) { - var sum = 0; - for (var i = 0; i <= index; sum += array[i++]); - return sum; - } - - - var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31]; - - var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date, days) { - var newDate = new Date(date.getTime()); - while(days > 0) { - var leap = __isLeapYear(newDate.getFullYear()); - var currentMonth = newDate.getMonth(); - var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; - - if (days > daysInCurrentMonth-newDate.getDate()) { - // we spill over to next month - days -= (daysInCurrentMonth-newDate.getDate()+1); - newDate.setDate(1); - if (currentMonth < 11) { - newDate.setMonth(currentMonth+1) - } else { - newDate.setMonth(0); - newDate.setFullYear(newDate.getFullYear()+1); - } - } else { - // we stay in current month - newDate.setDate(newDate.getDate()+days); - return newDate; - } - } - - return newDate; - }function _strftime(s, maxsize, format, tm) { - // size_t strftime(char *restrict s, size_t maxsize, const char *restrict format, const struct tm *restrict timeptr); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html - - var date = { - tm_sec: HEAP32[((tm)>>2)], - tm_min: HEAP32[(((tm)+(4))>>2)], - tm_hour: HEAP32[(((tm)+(8))>>2)], - tm_mday: HEAP32[(((tm)+(12))>>2)], - tm_mon: HEAP32[(((tm)+(16))>>2)], - tm_year: HEAP32[(((tm)+(20))>>2)], - tm_wday: HEAP32[(((tm)+(24))>>2)], - tm_yday: HEAP32[(((tm)+(28))>>2)], - tm_isdst: HEAP32[(((tm)+(32))>>2)] - }; - - var pattern = Pointer_stringify(format); - - // expand format - var EXPANSION_RULES_1 = { - '%c': '%a %b %d %H:%M:%S %Y', // Replaced by the locale's appropriate date and time representation - e.g., Mon Aug 3 14:02:01 2013 - '%D': '%m/%d/%y', // Equivalent to %m / %d / %y - '%F': '%Y-%m-%d', // Equivalent to %Y - %m - %d - '%h': '%b', // Equivalent to %b - '%r': '%I:%M:%S %p', // Replaced by the time in a.m. and p.m. notation - '%R': '%H:%M', // Replaced by the time in 24-hour notation - '%T': '%H:%M:%S', // Replaced by the time - '%x': '%m/%d/%y', // Replaced by the locale's appropriate date representation - '%X': '%H:%M:%S', // Replaced by the locale's appropriate date representation - }; - for (var rule in EXPANSION_RULES_1) { - pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_1[rule]); - } - - var WEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; - var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - - function leadingSomething(value, digits, character) { - var str = typeof value === 'number' ? value.toString() : (value || ''); - while (str.length < digits) { - str = character[0]+str; - } - return str; - }; - - function leadingNulls(value, digits) { - return leadingSomething(value, digits, '0'); - }; - - function compareByDay(date1, date2) { - function sgn(value) { - return value < 0 ? -1 : (value > 0 ? 1 : 0); - }; - - var compare; - if ((compare = sgn(date1.getFullYear()-date2.getFullYear())) === 0) { - if ((compare = sgn(date1.getMonth()-date2.getMonth())) === 0) { - compare = sgn(date1.getDate()-date2.getDate()); - } - } - return compare; - }; - - function getFirstWeekStartDate(janFourth) { - switch (janFourth.getDay()) { - case 0: // Sunday - return new Date(janFourth.getFullYear()-1, 11, 29); - case 1: // Monday - return janFourth; - case 2: // Tuesday - return new Date(janFourth.getFullYear(), 0, 3); - case 3: // Wednesday - return new Date(janFourth.getFullYear(), 0, 2); - case 4: // Thursday - return new Date(janFourth.getFullYear(), 0, 1); - case 5: // Friday - return new Date(janFourth.getFullYear()-1, 11, 31); - case 6: // Saturday - return new Date(janFourth.getFullYear()-1, 11, 30); - } - }; - - function getWeekBasedYear(date) { - var thisDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday); - - var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); - var janFourthNextYear = new Date(thisDate.getFullYear()+1, 0, 4); - - var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); - var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); - - if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { - // this date is after the start of the first week of this year - if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { - return thisDate.getFullYear()+1; - } else { - return thisDate.getFullYear(); - } - } else { - return thisDate.getFullYear()-1; - } - }; - - var EXPANSION_RULES_2 = { - '%a': function(date) { - return WEEKDAYS[date.tm_wday].substring(0,3); - }, - '%A': function(date) { - return WEEKDAYS[date.tm_wday]; - }, - '%b': function(date) { - return MONTHS[date.tm_mon].substring(0,3); - }, - '%B': function(date) { - return MONTHS[date.tm_mon]; - }, - '%C': function(date) { - var year = date.tm_year+1900; - return leadingNulls(Math.floor(year/100),2); - }, - '%d': function(date) { - return leadingNulls(date.tm_mday, 2); - }, - '%e': function(date) { - return leadingSomething(date.tm_mday, 2, ' '); - }, - '%g': function(date) { - // %g, %G, and %V give values according to the ISO 8601:2000 standard week-based year. - // In this system, weeks begin on a Monday and week 1 of the year is the week that includes - // January 4th, which is also the week that includes the first Thursday of the year, and - // is also the first week that contains at least four days in the year. - // If the first Monday of January is the 2nd, 3rd, or 4th, the preceding days are part of - // the last week of the preceding year; thus, for Saturday 2nd January 1999, - // %G is replaced by 1998 and %V is replaced by 53. If December 29th, 30th, - // or 31st is a Monday, it and any following days are part of week 1 of the following year. - // Thus, for Tuesday 30th December 1997, %G is replaced by 1998 and %V is replaced by 01. - - return getWeekBasedYear(date).toString().substring(2); - }, - '%G': function(date) { - return getWeekBasedYear(date); - }, - '%H': function(date) { - return leadingNulls(date.tm_hour, 2); - }, - '%I': function(date) { - return leadingNulls(date.tm_hour < 13 ? date.tm_hour : date.tm_hour-12, 2); - }, - '%j': function(date) { - // Day of the year (001-366) - return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon-1), 3); - }, - '%m': function(date) { - return leadingNulls(date.tm_mon+1, 2); - }, - '%M': function(date) { - return leadingNulls(date.tm_min, 2); - }, - '%n': function() { - return '\n'; - }, - '%p': function(date) { - if (date.tm_hour > 0 && date.tm_hour < 13) { - return 'AM'; - } else { - return 'PM'; - } - }, - '%S': function(date) { - return leadingNulls(date.tm_sec, 2); - }, - '%t': function() { - return '\t'; - }, - '%u': function(date) { - var day = new Date(date.tm_year+1900, date.tm_mon+1, date.tm_mday, 0, 0, 0, 0); - return day.getDay() || 7; - }, - '%U': function(date) { - // Replaced by the week number of the year as a decimal number [00,53]. - // The first Sunday of January is the first day of week 1; - // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday] - var janFirst = new Date(date.tm_year+1900, 0, 1); - var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7-janFirst.getDay()); - var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday); - - // is target date after the first Sunday? - if (compareByDay(firstSunday, endDate) < 0) { - // calculate difference in days between first Sunday and endDate - var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31; - var firstSundayUntilEndJanuary = 31-firstSunday.getDate(); - var days = firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate(); - return leadingNulls(Math.ceil(days/7), 2); - } - - return compareByDay(firstSunday, janFirst) === 0 ? '01': '00'; - }, - '%V': function(date) { - // Replaced by the week number of the year (Monday as the first day of the week) - // as a decimal number [01,53]. If the week containing 1 January has four - // or more days in the new year, then it is considered week 1. - // Otherwise, it is the last week of the previous year, and the next week is week 1. - // Both January 4th and the first Thursday of January are always in week 1. [ tm_year, tm_wday, tm_yday] - var janFourthThisYear = new Date(date.tm_year+1900, 0, 4); - var janFourthNextYear = new Date(date.tm_year+1901, 0, 4); - - var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); - var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); - - var endDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday); - - if (compareByDay(endDate, firstWeekStartThisYear) < 0) { - // if given date is before this years first week, then it belongs to the 53rd week of last year - return '53'; - } - - if (compareByDay(firstWeekStartNextYear, endDate) <= 0) { - // if given date is after next years first week, then it belongs to the 01th week of next year - return '01'; - } - - // given date is in between CW 01..53 of this calendar year - var daysDifference; - if (firstWeekStartThisYear.getFullYear() < date.tm_year+1900) { - // first CW of this year starts last year - daysDifference = date.tm_yday+32-firstWeekStartThisYear.getDate() - } else { - // first CW of this year starts this year - daysDifference = date.tm_yday+1-firstWeekStartThisYear.getDate(); - } - return leadingNulls(Math.ceil(daysDifference/7), 2); - }, - '%w': function(date) { - var day = new Date(date.tm_year+1900, date.tm_mon+1, date.tm_mday, 0, 0, 0, 0); - return day.getDay(); - }, - '%W': function(date) { - // Replaced by the week number of the year as a decimal number [00,53]. - // The first Monday of January is the first day of week 1; - // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday] - var janFirst = new Date(date.tm_year, 0, 1); - var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7-janFirst.getDay()+1); - var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday); - - // is target date after the first Monday? - if (compareByDay(firstMonday, endDate) < 0) { - var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31; - var firstMondayUntilEndJanuary = 31-firstMonday.getDate(); - var days = firstMondayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate(); - return leadingNulls(Math.ceil(days/7), 2); - } - return compareByDay(firstMonday, janFirst) === 0 ? '01': '00'; - }, - '%y': function(date) { - // Replaced by the last two digits of the year as a decimal number [00,99]. [ tm_year] - return (date.tm_year+1900).toString().substring(2); - }, - '%Y': function(date) { - // Replaced by the year as a decimal number (for example, 1997). [ tm_year] - return date.tm_year+1900; - }, - '%z': function(date) { - // Replaced by the offset from UTC in the ISO 8601:2000 standard format ( +hhmm or -hhmm ), - // or by no characters if no timezone is determinable. - // For example, "-0430" means 4 hours 30 minutes behind UTC (west of Greenwich). - // If tm_isdst is zero, the standard time offset is used. - // If tm_isdst is greater than zero, the daylight savings time offset is used. - // If tm_isdst is negative, no characters are returned. - // FIXME: we cannot determine time zone (or can we?) - return ''; - }, - '%Z': function(date) { - // Replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists. [ tm_isdst] - // FIXME: we cannot determine time zone (or can we?) - return ''; - }, - '%%': function() { - return '%'; - } - }; - for (var rule in EXPANSION_RULES_2) { - if (pattern.indexOf(rule) >= 0) { - pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_2[rule](date)); - } - } - - var bytes = intArrayFromString(pattern, false); - if (bytes.length > maxsize) { - return 0; - } - - writeArrayToMemory(bytes, s); - return bytes.length-1; - } - - - -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -_fputc.ret = allocate([0], "i8", ALLOC_STATIC); -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -_fgetc.ret = allocate([0], "i8", ALLOC_STATIC); -___buildEnvironment(ENV); -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - var ctlz_i8 = allocate([8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_DYNAMIC); - 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_DYNAMIC); - -var Math_min = Math.min; -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_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_vii(index,a1,a2) { - try { - Module["dynCall_vii"](index,a1,a2); - } 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_iiiii(index,a1,a2,a3,a4) { - try { - return Module["dynCall_iiiii"](index,a1,a2,a3,a4); - } 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 asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm = (function(global, env, buffer) { - 'use asm'; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - var cttz_i8=env.cttz_i8|0; - var ctlz_i8=env.ctlz_i8|0; - var ___rand_seed=env.___rand_seed|0; - var _stderr=env._stderr|0; - var _stdin=env._stdin|0; - var _stdout=env._stdout|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = +env.NaN, inf = +env.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var abort=env.abort; - var assert=env.assert; - var asmPrintInt=env.asmPrintInt; - var asmPrintFloat=env.asmPrintFloat; - var Math_min=env.min; - var invoke_iiii=env.invoke_iiii; - var invoke_vi=env.invoke_vi; - var invoke_vii=env.invoke_vii; - var invoke_ii=env.invoke_ii; - var invoke_iiiii=env.invoke_iiiii; - var invoke_iii=env.invoke_iii; - var _isalnum=env._isalnum; - var _fabs=env._fabs; - var _frexp=env._frexp; - var _exp=env._exp; - var _fread=env._fread; - var __reallyNegative=env.__reallyNegative; - var _longjmp=env._longjmp; - var __addDays=env.__addDays; - var _fsync=env._fsync; - var _signal=env._signal; - var _rename=env._rename; - var _sbrk=env._sbrk; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _sinh=env._sinh; - var _sysconf=env._sysconf; - var _close=env._close; - var _ferror=env._ferror; - var _clock=env._clock; - var _cos=env._cos; - var _tanh=env._tanh; - var _unlink=env._unlink; - var _write=env._write; - var __isLeapYear=env.__isLeapYear; - var _ftell=env._ftell; - var _isupper=env._isupper; - var _gmtime_r=env._gmtime_r; - var _islower=env._islower; - var _tmpnam=env._tmpnam; - var _tmpfile=env._tmpfile; - var _send=env._send; - var _abort=env._abort; - var _setvbuf=env._setvbuf; - var _atan2=env._atan2; - var _setlocale=env._setlocale; - var _isgraph=env._isgraph; - var _modf=env._modf; - var _strerror_r=env._strerror_r; - var _fscanf=env._fscanf; - var ___setErrNo=env.___setErrNo; - var _isalpha=env._isalpha; - var _srand=env._srand; - var _mktime=env._mktime; - var _putchar=env._putchar; - var _gmtime=env._gmtime; - var _localeconv=env._localeconv; - var _sprintf=env._sprintf; - var _localtime=env._localtime; - var _read=env._read; - var _fwrite=env._fwrite; - var _time=env._time; - var _fprintf=env._fprintf; - var _exit=env._exit; - var _freopen=env._freopen; - var _llvm_pow_f64=env._llvm_pow_f64; - var _fgetc=env._fgetc; - var _fmod=env._fmod; - var _lseek=env._lseek; - var _rmdir=env._rmdir; - var _asin=env._asin; - var _floor=env._floor; - var _pwrite=env._pwrite; - var _localtime_r=env._localtime_r; - var _tzset=env._tzset; - var _open=env._open; - var _remove=env._remove; - var _snprintf=env._snprintf; - var __scanString=env.__scanString; - var _strftime=env._strftime; - var _fseek=env._fseek; - var _iscntrl=env._iscntrl; - var _isxdigit=env._isxdigit; - var _fclose=env._fclose; - var _log=env._log; - var _recv=env._recv; - var _tan=env._tan; - var _copysign=env._copysign; - var __getFloat=env.__getFloat; - var _fputc=env._fputc; - var _ispunct=env._ispunct; - var _ceil=env._ceil; - var _isspace=env._isspace; - var _fopen=env._fopen; - var _sin=env._sin; - var _acos=env._acos; - var _cosh=env._cosh; - var ___buildEnvironment=env.___buildEnvironment; - var _difftime=env._difftime; - var _ungetc=env._ungetc; - var _system=env._system; - var _fflush=env._fflush; - var _log10=env._log10; - var _fileno=env._fileno; - var __exit=env.__exit; - var __arraySum=env.__arraySum; - var _fgets=env._fgets; - var _atan=env._atan; - var _pread=env._pread; - var _mkport=env._mkport; - var _toupper=env._toupper; - var _feof=env._feof; - var ___errno_location=env.___errno_location; - var _clearerr=env._clearerr; - var _getenv=env._getenv; - var _strerror=env._strerror; - var _emscripten_longjmp=env._emscripten_longjmp; - var __formatString=env.__formatString; - var _fputs=env._fputs; - var _sqrt=env._sqrt; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function _malloc(i12) { - i12 = i12 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0; - i1 = STACKTOP; - do { - if (i12 >>> 0 < 245) { - if (i12 >>> 0 < 11) { - i12 = 16; - } else { - i12 = i12 + 11 & -8; - } - i20 = i12 >>> 3; - i18 = HEAP32[3228] | 0; - i21 = i18 >>> i20; - if ((i21 & 3 | 0) != 0) { - i6 = (i21 & 1 ^ 1) + i20 | 0; - i5 = i6 << 1; - i3 = 12952 + (i5 << 2) | 0; - i5 = 12952 + (i5 + 2 << 2) | 0; - i7 = HEAP32[i5 >> 2] | 0; - i2 = i7 + 8 | 0; - i4 = HEAP32[i2 >> 2] | 0; - do { - if ((i3 | 0) != (i4 | 0)) { - if (i4 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i4 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i7 | 0)) { - HEAP32[i8 >> 2] = i3; - HEAP32[i5 >> 2] = i4; - break; - } else { - _abort(); - } - } else { - HEAP32[3228] = i18 & ~(1 << i6); - } - } while (0); - i32 = i6 << 3; - HEAP32[i7 + 4 >> 2] = i32 | 3; - i32 = i7 + (i32 | 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - if (i12 >>> 0 > (HEAP32[12920 >> 2] | 0) >>> 0) { - if ((i21 | 0) != 0) { - i7 = 2 << i20; - i7 = i21 << i20 & (i7 | 0 - i7); - i7 = (i7 & 0 - i7) + -1 | 0; - i2 = i7 >>> 12 & 16; - i7 = i7 >>> i2; - i6 = i7 >>> 5 & 8; - i7 = i7 >>> i6; - i5 = i7 >>> 2 & 4; - i7 = i7 >>> i5; - i4 = i7 >>> 1 & 2; - i7 = i7 >>> i4; - i3 = i7 >>> 1 & 1; - i3 = (i6 | i2 | i5 | i4 | i3) + (i7 >>> i3) | 0; - i7 = i3 << 1; - i4 = 12952 + (i7 << 2) | 0; - i7 = 12952 + (i7 + 2 << 2) | 0; - i5 = HEAP32[i7 >> 2] | 0; - i2 = i5 + 8 | 0; - i6 = HEAP32[i2 >> 2] | 0; - do { - if ((i4 | 0) != (i6 | 0)) { - if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i6 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i5 | 0)) { - HEAP32[i8 >> 2] = i4; - HEAP32[i7 >> 2] = i6; - break; - } else { - _abort(); - } - } else { - HEAP32[3228] = i18 & ~(1 << i3); - } - } while (0); - i6 = i3 << 3; - i4 = i6 - i12 | 0; - HEAP32[i5 + 4 >> 2] = i12 | 3; - i3 = i5 + i12 | 0; - HEAP32[i5 + (i12 | 4) >> 2] = i4 | 1; - HEAP32[i5 + i6 >> 2] = i4; - i6 = HEAP32[12920 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[12932 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 12952 + (i9 << 2) | 0; - i7 = HEAP32[3228] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 12952 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - i28 = i7; - i27 = i8; - } - } else { - HEAP32[3228] = i7 | i8; - i28 = 12952 + (i9 + 2 << 2) | 0; - i27 = i6; - } - HEAP32[i28 >> 2] = i5; - HEAP32[i27 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i27; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[12920 >> 2] = i4; - HEAP32[12932 >> 2] = i3; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[12916 >> 2] | 0; - if ((i18 | 0) != 0) { - i2 = (i18 & 0 - i18) + -1 | 0; - i31 = i2 >>> 12 & 16; - i2 = i2 >>> i31; - i30 = i2 >>> 5 & 8; - i2 = i2 >>> i30; - i32 = i2 >>> 2 & 4; - i2 = i2 >>> i32; - i6 = i2 >>> 1 & 2; - i2 = i2 >>> i6; - i3 = i2 >>> 1 & 1; - i3 = HEAP32[13216 + ((i30 | i31 | i32 | i6 | i3) + (i2 >>> i3) << 2) >> 2] | 0; - i2 = (HEAP32[i3 + 4 >> 2] & -8) - i12 | 0; - i6 = i3; - while (1) { - i5 = HEAP32[i6 + 16 >> 2] | 0; - if ((i5 | 0) == 0) { - i5 = HEAP32[i6 + 20 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - } - i6 = (HEAP32[i5 + 4 >> 2] & -8) - i12 | 0; - i4 = i6 >>> 0 < i2 >>> 0; - i2 = i4 ? i6 : i2; - i6 = i5; - i3 = i4 ? i5 : i3; - } - i6 = HEAP32[12928 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - i4 = i3 + i12 | 0; - if (!(i3 >>> 0 < i4 >>> 0)) { - _abort(); - } - i5 = HEAP32[i3 + 24 >> 2] | 0; - i7 = HEAP32[i3 + 12 >> 2] | 0; - do { - if ((i7 | 0) == (i3 | 0)) { - i8 = i3 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i8 = i3 + 16 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i26 = 0; - break; - } - } - while (1) { - i10 = i7 + 20 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) != 0) { - i7 = i9; - i8 = i10; - continue; - } - i10 = i7 + 16 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } else { - i7 = i9; - i8 = i10; - } - } - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i8 >> 2] = 0; - i26 = i7; - break; - } - } else { - i8 = HEAP32[i3 + 8 >> 2] | 0; - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } - i6 = i8 + 12 | 0; - if ((HEAP32[i6 >> 2] | 0) != (i3 | 0)) { - _abort(); - } - i9 = i7 + 8 | 0; - if ((HEAP32[i9 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i7; - HEAP32[i9 >> 2] = i8; - i26 = i7; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i5 | 0) != 0) { - i7 = HEAP32[i3 + 28 >> 2] | 0; - i6 = 13216 + (i7 << 2) | 0; - if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) { - HEAP32[i6 >> 2] = i26; - if ((i26 | 0) == 0) { - HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i7); - break; - } - } else { - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i6 = i5 + 16 | 0; - if ((HEAP32[i6 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i26; - } else { - HEAP32[i5 + 20 >> 2] = i26; - } - if ((i26 | 0) == 0) { - break; - } - } - if (i26 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i26 + 24 >> 2] = i5; - i5 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 16 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } while (0); - i5 = HEAP32[i3 + 20 >> 2] | 0; - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 20 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } - } while (0); - if (i2 >>> 0 < 16) { - i32 = i2 + i12 | 0; - HEAP32[i3 + 4 >> 2] = i32 | 3; - i32 = i3 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } else { - HEAP32[i3 + 4 >> 2] = i12 | 3; - HEAP32[i3 + (i12 | 4) >> 2] = i2 | 1; - HEAP32[i3 + (i2 + i12) >> 2] = i2; - i6 = HEAP32[12920 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[12932 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 12952 + (i9 << 2) | 0; - i7 = HEAP32[3228] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 12952 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - i25 = i7; - i24 = i8; - } - } else { - HEAP32[3228] = i7 | i8; - i25 = 12952 + (i9 + 2 << 2) | 0; - i24 = i6; - } - HEAP32[i25 >> 2] = i5; - HEAP32[i24 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i24; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[12920 >> 2] = i2; - HEAP32[12932 >> 2] = i4; - } - i32 = i3 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - if (!(i12 >>> 0 > 4294967231)) { - i24 = i12 + 11 | 0; - i12 = i24 & -8; - i26 = HEAP32[12916 >> 2] | 0; - if ((i26 | 0) != 0) { - i25 = 0 - i12 | 0; - i24 = i24 >>> 8; - if ((i24 | 0) != 0) { - if (i12 >>> 0 > 16777215) { - i27 = 31; - } else { - i31 = (i24 + 1048320 | 0) >>> 16 & 8; - i32 = i24 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i27 = (i32 + 245760 | 0) >>> 16 & 2; - i27 = 14 - (i30 | i31 | i27) + (i32 << i27 >>> 15) | 0; - i27 = i12 >>> (i27 + 7 | 0) & 1 | i27 << 1; - } - } else { - i27 = 0; - } - i30 = HEAP32[13216 + (i27 << 2) >> 2] | 0; - L126 : do { - if ((i30 | 0) == 0) { - i29 = 0; - i24 = 0; - } else { - if ((i27 | 0) == 31) { - i24 = 0; - } else { - i24 = 25 - (i27 >>> 1) | 0; - } - i29 = 0; - i28 = i12 << i24; - i24 = 0; - while (1) { - i32 = HEAP32[i30 + 4 >> 2] & -8; - i31 = i32 - i12 | 0; - if (i31 >>> 0 < i25 >>> 0) { - if ((i32 | 0) == (i12 | 0)) { - i25 = i31; - i29 = i30; - i24 = i30; - break L126; - } else { - i25 = i31; - i24 = i30; - } - } - i31 = HEAP32[i30 + 20 >> 2] | 0; - i30 = HEAP32[i30 + (i28 >>> 31 << 2) + 16 >> 2] | 0; - i29 = (i31 | 0) == 0 | (i31 | 0) == (i30 | 0) ? i29 : i31; - if ((i30 | 0) == 0) { - break; - } else { - i28 = i28 << 1; - } - } - } - } while (0); - if ((i29 | 0) == 0 & (i24 | 0) == 0) { - i32 = 2 << i27; - i26 = i26 & (i32 | 0 - i32); - if ((i26 | 0) == 0) { - break; - } - i32 = (i26 & 0 - i26) + -1 | 0; - i28 = i32 >>> 12 & 16; - i32 = i32 >>> i28; - i27 = i32 >>> 5 & 8; - i32 = i32 >>> i27; - i30 = i32 >>> 2 & 4; - i32 = i32 >>> i30; - i31 = i32 >>> 1 & 2; - i32 = i32 >>> i31; - i29 = i32 >>> 1 & 1; - i29 = HEAP32[13216 + ((i27 | i28 | i30 | i31 | i29) + (i32 >>> i29) << 2) >> 2] | 0; - } - if ((i29 | 0) != 0) { - while (1) { - i27 = (HEAP32[i29 + 4 >> 2] & -8) - i12 | 0; - i26 = i27 >>> 0 < i25 >>> 0; - i25 = i26 ? i27 : i25; - i24 = i26 ? i29 : i24; - i26 = HEAP32[i29 + 16 >> 2] | 0; - if ((i26 | 0) != 0) { - i29 = i26; - continue; - } - i29 = HEAP32[i29 + 20 >> 2] | 0; - if ((i29 | 0) == 0) { - break; - } - } - } - if ((i24 | 0) != 0 ? i25 >>> 0 < ((HEAP32[12920 >> 2] | 0) - i12 | 0) >>> 0 : 0) { - i4 = HEAP32[12928 >> 2] | 0; - if (i24 >>> 0 < i4 >>> 0) { - _abort(); - } - i2 = i24 + i12 | 0; - if (!(i24 >>> 0 < i2 >>> 0)) { - _abort(); - } - i3 = HEAP32[i24 + 24 >> 2] | 0; - i6 = HEAP32[i24 + 12 >> 2] | 0; - do { - if ((i6 | 0) == (i24 | 0)) { - i6 = i24 + 20 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i6 = i24 + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i22 = 0; - break; - } - } - while (1) { - i8 = i5 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) != 0) { - i5 = i7; - i6 = i8; - continue; - } - i7 = i5 + 16 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 | 0) == 0) { - break; - } else { - i5 = i8; - i6 = i7; - } - } - if (i6 >>> 0 < i4 >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = 0; - i22 = i5; - break; - } - } else { - i5 = HEAP32[i24 + 8 >> 2] | 0; - if (i5 >>> 0 < i4 >>> 0) { - _abort(); - } - i7 = i5 + 12 | 0; - if ((HEAP32[i7 >> 2] | 0) != (i24 | 0)) { - _abort(); - } - i4 = i6 + 8 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i7 >> 2] = i6; - HEAP32[i4 >> 2] = i5; - i22 = i6; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i3 | 0) != 0) { - i4 = HEAP32[i24 + 28 >> 2] | 0; - i5 = 13216 + (i4 << 2) | 0; - if ((i24 | 0) == (HEAP32[i5 >> 2] | 0)) { - HEAP32[i5 >> 2] = i22; - if ((i22 | 0) == 0) { - HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i4); - break; - } - } else { - if (i3 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i4 = i3 + 16 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i4 >> 2] = i22; - } else { - HEAP32[i3 + 20 >> 2] = i22; - } - if ((i22 | 0) == 0) { - break; - } - } - if (i22 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i22 + 24 >> 2] = i3; - i3 = HEAP32[i24 + 16 >> 2] | 0; - do { - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 16 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } while (0); - i3 = HEAP32[i24 + 20 >> 2] | 0; - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 20 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } - } while (0); - L204 : do { - if (!(i25 >>> 0 < 16)) { - HEAP32[i24 + 4 >> 2] = i12 | 3; - HEAP32[i24 + (i12 | 4) >> 2] = i25 | 1; - HEAP32[i24 + (i25 + i12) >> 2] = i25; - i4 = i25 >>> 3; - if (i25 >>> 0 < 256) { - i6 = i4 << 1; - i3 = 12952 + (i6 << 2) | 0; - i5 = HEAP32[3228] | 0; - i4 = 1 << i4; - if ((i5 & i4 | 0) != 0) { - i5 = 12952 + (i6 + 2 << 2) | 0; - i4 = HEAP32[i5 >> 2] | 0; - if (i4 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - i21 = i5; - i20 = i4; - } - } else { - HEAP32[3228] = i5 | i4; - i21 = 12952 + (i6 + 2 << 2) | 0; - i20 = i3; - } - HEAP32[i21 >> 2] = i2; - HEAP32[i20 + 12 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i20; - HEAP32[i24 + (i12 + 12) >> 2] = i3; - break; - } - i3 = i25 >>> 8; - if ((i3 | 0) != 0) { - if (i25 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i25 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i6 = 13216 + (i3 << 2) | 0; - HEAP32[i24 + (i12 + 28) >> 2] = i3; - HEAP32[i24 + (i12 + 20) >> 2] = 0; - HEAP32[i24 + (i12 + 16) >> 2] = 0; - i4 = HEAP32[12916 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[12916 >> 2] = i4 | i5; - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i6; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break; - } - i4 = HEAP32[i6 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L225 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i25 | 0)) { - i3 = i25 << i3; - while (1) { - i6 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i25 | 0)) { - i18 = i5; - break L225; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i4; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break L204; - } - } else { - i18 = i4; - } - } while (0); - i4 = i18 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[12928 >> 2] | 0; - if (i18 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i2; - HEAP32[i4 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i3; - HEAP32[i24 + (i12 + 12) >> 2] = i18; - HEAP32[i24 + (i12 + 24) >> 2] = 0; - break; - } - } else { - i32 = i25 + i12 | 0; - HEAP32[i24 + 4 >> 2] = i32 | 3; - i32 = i24 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - } while (0); - i32 = i24 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - i12 = -1; - } - } - } while (0); - i18 = HEAP32[12920 >> 2] | 0; - if (!(i12 >>> 0 > i18 >>> 0)) { - i3 = i18 - i12 | 0; - i2 = HEAP32[12932 >> 2] | 0; - if (i3 >>> 0 > 15) { - HEAP32[12932 >> 2] = i2 + i12; - HEAP32[12920 >> 2] = i3; - HEAP32[i2 + (i12 + 4) >> 2] = i3 | 1; - HEAP32[i2 + i18 >> 2] = i3; - HEAP32[i2 + 4 >> 2] = i12 | 3; - } else { - HEAP32[12920 >> 2] = 0; - HEAP32[12932 >> 2] = 0; - HEAP32[i2 + 4 >> 2] = i18 | 3; - i32 = i2 + (i18 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - i32 = i2 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[12924 >> 2] | 0; - if (i12 >>> 0 < i18 >>> 0) { - i31 = i18 - i12 | 0; - HEAP32[12924 >> 2] = i31; - i32 = HEAP32[12936 >> 2] | 0; - HEAP32[12936 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - do { - if ((HEAP32[3346] | 0) == 0) { - i18 = _sysconf(30) | 0; - if ((i18 + -1 & i18 | 0) == 0) { - HEAP32[13392 >> 2] = i18; - HEAP32[13388 >> 2] = i18; - HEAP32[13396 >> 2] = -1; - HEAP32[13400 >> 2] = -1; - HEAP32[13404 >> 2] = 0; - HEAP32[13356 >> 2] = 0; - HEAP32[3346] = (_time(0) | 0) & -16 ^ 1431655768; - break; - } else { - _abort(); - } - } - } while (0); - i20 = i12 + 48 | 0; - i25 = HEAP32[13392 >> 2] | 0; - i21 = i12 + 47 | 0; - i22 = i25 + i21 | 0; - i25 = 0 - i25 | 0; - i18 = i22 & i25; - if (!(i18 >>> 0 > i12 >>> 0)) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - i24 = HEAP32[13352 >> 2] | 0; - if ((i24 | 0) != 0 ? (i31 = HEAP32[13344 >> 2] | 0, i32 = i31 + i18 | 0, i32 >>> 0 <= i31 >>> 0 | i32 >>> 0 > i24 >>> 0) : 0) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - L269 : do { - if ((HEAP32[13356 >> 2] & 4 | 0) == 0) { - i26 = HEAP32[12936 >> 2] | 0; - L271 : do { - if ((i26 | 0) != 0) { - i24 = 13360 | 0; - while (1) { - i27 = HEAP32[i24 >> 2] | 0; - if (!(i27 >>> 0 > i26 >>> 0) ? (i23 = i24 + 4 | 0, (i27 + (HEAP32[i23 >> 2] | 0) | 0) >>> 0 > i26 >>> 0) : 0) { - break; - } - i24 = HEAP32[i24 + 8 >> 2] | 0; - if ((i24 | 0) == 0) { - i13 = 182; - break L271; - } - } - if ((i24 | 0) != 0) { - i25 = i22 - (HEAP32[12924 >> 2] | 0) & i25; - if (i25 >>> 0 < 2147483647) { - i13 = _sbrk(i25 | 0) | 0; - i26 = (i13 | 0) == ((HEAP32[i24 >> 2] | 0) + (HEAP32[i23 >> 2] | 0) | 0); - i22 = i13; - i24 = i25; - i23 = i26 ? i13 : -1; - i25 = i26 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i13 = 182; - } - } else { - i13 = 182; - } - } while (0); - do { - if ((i13 | 0) == 182) { - i23 = _sbrk(0) | 0; - if ((i23 | 0) != (-1 | 0)) { - i24 = i23; - i22 = HEAP32[13388 >> 2] | 0; - i25 = i22 + -1 | 0; - if ((i25 & i24 | 0) == 0) { - i25 = i18; - } else { - i25 = i18 - i24 + (i25 + i24 & 0 - i22) | 0; - } - i24 = HEAP32[13344 >> 2] | 0; - i26 = i24 + i25 | 0; - if (i25 >>> 0 > i12 >>> 0 & i25 >>> 0 < 2147483647) { - i22 = HEAP32[13352 >> 2] | 0; - if ((i22 | 0) != 0 ? i26 >>> 0 <= i24 >>> 0 | i26 >>> 0 > i22 >>> 0 : 0) { - i25 = 0; - break; - } - i22 = _sbrk(i25 | 0) | 0; - i13 = (i22 | 0) == (i23 | 0); - i24 = i25; - i23 = i13 ? i23 : -1; - i25 = i13 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i25 = 0; - } - } - } while (0); - L291 : do { - if ((i13 | 0) == 191) { - i13 = 0 - i24 | 0; - if ((i23 | 0) != (-1 | 0)) { - i17 = i23; - i14 = i25; - i13 = 202; - break L269; - } - do { - if ((i22 | 0) != (-1 | 0) & i24 >>> 0 < 2147483647 & i24 >>> 0 < i20 >>> 0 ? (i19 = HEAP32[13392 >> 2] | 0, i19 = i21 - i24 + i19 & 0 - i19, i19 >>> 0 < 2147483647) : 0) { - if ((_sbrk(i19 | 0) | 0) == (-1 | 0)) { - _sbrk(i13 | 0) | 0; - break L291; - } else { - i24 = i19 + i24 | 0; - break; - } - } - } while (0); - if ((i22 | 0) != (-1 | 0)) { - i17 = i22; - i14 = i24; - i13 = 202; - break L269; - } - } - } while (0); - HEAP32[13356 >> 2] = HEAP32[13356 >> 2] | 4; - i13 = 199; - } else { - i25 = 0; - i13 = 199; - } - } while (0); - if ((((i13 | 0) == 199 ? i18 >>> 0 < 2147483647 : 0) ? (i17 = _sbrk(i18 | 0) | 0, i16 = _sbrk(0) | 0, (i16 | 0) != (-1 | 0) & (i17 | 0) != (-1 | 0) & i17 >>> 0 < i16 >>> 0) : 0) ? (i15 = i16 - i17 | 0, i14 = i15 >>> 0 > (i12 + 40 | 0) >>> 0, i14) : 0) { - i14 = i14 ? i15 : i25; - i13 = 202; - } - if ((i13 | 0) == 202) { - i15 = (HEAP32[13344 >> 2] | 0) + i14 | 0; - HEAP32[13344 >> 2] = i15; - if (i15 >>> 0 > (HEAP32[13348 >> 2] | 0) >>> 0) { - HEAP32[13348 >> 2] = i15; - } - i15 = HEAP32[12936 >> 2] | 0; - L311 : do { - if ((i15 | 0) != 0) { - i21 = 13360 | 0; - while (1) { - i16 = HEAP32[i21 >> 2] | 0; - i19 = i21 + 4 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i17 | 0) == (i16 + i20 | 0)) { - i13 = 214; - break; - } - i18 = HEAP32[i21 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i21 = i18; - } - } - if (((i13 | 0) == 214 ? (HEAP32[i21 + 12 >> 2] & 8 | 0) == 0 : 0) ? i15 >>> 0 >= i16 >>> 0 & i15 >>> 0 < i17 >>> 0 : 0) { - HEAP32[i19 >> 2] = i20 + i14; - i2 = (HEAP32[12924 >> 2] | 0) + i14 | 0; - i3 = i15 + 8 | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i32 = i2 - i3 | 0; - HEAP32[12936 >> 2] = i15 + i3; - HEAP32[12924 >> 2] = i32; - HEAP32[i15 + (i3 + 4) >> 2] = i32 | 1; - HEAP32[i15 + (i2 + 4) >> 2] = 40; - HEAP32[12940 >> 2] = HEAP32[13400 >> 2]; - break; - } - if (i17 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - HEAP32[12928 >> 2] = i17; - } - i19 = i17 + i14 | 0; - i16 = 13360 | 0; - while (1) { - if ((HEAP32[i16 >> 2] | 0) == (i19 | 0)) { - i13 = 224; - break; - } - i18 = HEAP32[i16 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i16 = i18; - } - } - if ((i13 | 0) == 224 ? (HEAP32[i16 + 12 >> 2] & 8 | 0) == 0 : 0) { - HEAP32[i16 >> 2] = i17; - i6 = i16 + 4 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i14; - i6 = i17 + 8 | 0; - if ((i6 & 7 | 0) == 0) { - i6 = 0; - } else { - i6 = 0 - i6 & 7; - } - i7 = i17 + (i14 + 8) | 0; - if ((i7 & 7 | 0) == 0) { - i13 = 0; - } else { - i13 = 0 - i7 & 7; - } - i15 = i17 + (i13 + i14) | 0; - i8 = i6 + i12 | 0; - i7 = i17 + i8 | 0; - i10 = i15 - (i17 + i6) - i12 | 0; - HEAP32[i17 + (i6 + 4) >> 2] = i12 | 3; - L348 : do { - if ((i15 | 0) != (HEAP32[12936 >> 2] | 0)) { - if ((i15 | 0) == (HEAP32[12932 >> 2] | 0)) { - i32 = (HEAP32[12920 >> 2] | 0) + i10 | 0; - HEAP32[12920 >> 2] = i32; - HEAP32[12932 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i32 + i8) >> 2] = i32; - break; - } - i12 = i14 + 4 | 0; - i18 = HEAP32[i17 + (i12 + i13) >> 2] | 0; - if ((i18 & 3 | 0) == 1) { - i11 = i18 & -8; - i16 = i18 >>> 3; - do { - if (!(i18 >>> 0 < 256)) { - i9 = HEAP32[i17 + ((i13 | 24) + i14) >> 2] | 0; - i19 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - do { - if ((i19 | 0) == (i15 | 0)) { - i19 = i13 | 16; - i18 = i17 + (i12 + i19) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i18 = i17 + (i19 + i14) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i5 = 0; - break; - } - } - while (1) { - i20 = i16 + 20 | 0; - i19 = HEAP32[i20 >> 2] | 0; - if ((i19 | 0) != 0) { - i16 = i19; - i18 = i20; - continue; - } - i19 = i16 + 16 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i20 | 0) == 0) { - break; - } else { - i16 = i20; - i18 = i19; - } - } - if (i18 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i18 >> 2] = 0; - i5 = i16; - break; - } - } else { - i18 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - if (i18 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i18 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - i20 = i19 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i19; - HEAP32[i20 >> 2] = i18; - i5 = i19; - break; - } else { - _abort(); - } - } - } while (0); - if ((i9 | 0) != 0) { - i16 = HEAP32[i17 + (i14 + 28 + i13) >> 2] | 0; - i18 = 13216 + (i16 << 2) | 0; - if ((i15 | 0) == (HEAP32[i18 >> 2] | 0)) { - HEAP32[i18 >> 2] = i5; - if ((i5 | 0) == 0) { - HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i16); - break; - } - } else { - if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i9 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i5; - } else { - HEAP32[i9 + 20 >> 2] = i5; - } - if ((i5 | 0) == 0) { - break; - } - } - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i5 + 24 >> 2] = i9; - i15 = i13 | 16; - i9 = HEAP32[i17 + (i15 + i14) >> 2] | 0; - do { - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 16 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } while (0); - i9 = HEAP32[i17 + (i12 + i15) >> 2] | 0; - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 20 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } - } else { - i5 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - i12 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - i18 = 12952 + (i16 << 1 << 2) | 0; - if ((i5 | 0) != (i18 | 0)) { - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i5 + 12 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - } - if ((i12 | 0) == (i5 | 0)) { - HEAP32[3228] = HEAP32[3228] & ~(1 << i16); - break; - } - if ((i12 | 0) != (i18 | 0)) { - if (i12 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i12 + 8 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - i9 = i16; - } else { - _abort(); - } - } else { - i9 = i12 + 8 | 0; - } - HEAP32[i5 + 12 >> 2] = i12; - HEAP32[i9 >> 2] = i5; - } - } while (0); - i15 = i17 + ((i11 | i13) + i14) | 0; - i10 = i11 + i10 | 0; - } - i5 = i15 + 4 | 0; - HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -2; - HEAP32[i17 + (i8 + 4) >> 2] = i10 | 1; - HEAP32[i17 + (i10 + i8) >> 2] = i10; - i5 = i10 >>> 3; - if (i10 >>> 0 < 256) { - i10 = i5 << 1; - i2 = 12952 + (i10 << 2) | 0; - i9 = HEAP32[3228] | 0; - i5 = 1 << i5; - if ((i9 & i5 | 0) != 0) { - i9 = 12952 + (i10 + 2 << 2) | 0; - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - i3 = i9; - i4 = i5; - } - } else { - HEAP32[3228] = i9 | i5; - i3 = 12952 + (i10 + 2 << 2) | 0; - i4 = i2; - } - HEAP32[i3 >> 2] = i7; - HEAP32[i4 + 12 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - break; - } - i3 = i10 >>> 8; - if ((i3 | 0) != 0) { - if (i10 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i10 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i4 = 13216 + (i3 << 2) | 0; - HEAP32[i17 + (i8 + 28) >> 2] = i3; - HEAP32[i17 + (i8 + 20) >> 2] = 0; - HEAP32[i17 + (i8 + 16) >> 2] = 0; - i9 = HEAP32[12916 >> 2] | 0; - i5 = 1 << i3; - if ((i9 & i5 | 0) == 0) { - HEAP32[12916 >> 2] = i9 | i5; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L445 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i10 | 0)) { - i3 = i10 << i3; - while (1) { - i5 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i9 = HEAP32[i5 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } - if ((HEAP32[i9 + 4 >> 2] & -8 | 0) == (i10 | 0)) { - i2 = i9; - break L445; - } else { - i3 = i3 << 1; - i4 = i9; - } - } - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break L348; - } - } else { - i2 = i4; - } - } while (0); - i4 = i2 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[12928 >> 2] | 0; - if (i2 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i7; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i3; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - HEAP32[i17 + (i8 + 24) >> 2] = 0; - break; - } - } else { - i32 = (HEAP32[12924 >> 2] | 0) + i10 | 0; - HEAP32[12924 >> 2] = i32; - HEAP32[12936 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - } - } while (0); - i32 = i17 + (i6 | 8) | 0; - STACKTOP = i1; - return i32 | 0; - } - i3 = 13360 | 0; - while (1) { - i2 = HEAP32[i3 >> 2] | 0; - if (!(i2 >>> 0 > i15 >>> 0) ? (i11 = HEAP32[i3 + 4 >> 2] | 0, i10 = i2 + i11 | 0, i10 >>> 0 > i15 >>> 0) : 0) { - break; - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - } - i3 = i2 + (i11 + -39) | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i2 = i2 + (i11 + -47 + i3) | 0; - i2 = i2 >>> 0 < (i15 + 16 | 0) >>> 0 ? i15 : i2; - i3 = i2 + 8 | 0; - i4 = i17 + 8 | 0; - if ((i4 & 7 | 0) == 0) { - i4 = 0; - } else { - i4 = 0 - i4 & 7; - } - i32 = i14 + -40 - i4 | 0; - HEAP32[12936 >> 2] = i17 + i4; - HEAP32[12924 >> 2] = i32; - HEAP32[i17 + (i4 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[12940 >> 2] = HEAP32[13400 >> 2]; - HEAP32[i2 + 4 >> 2] = 27; - HEAP32[i3 + 0 >> 2] = HEAP32[13360 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[13364 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[13368 >> 2]; - HEAP32[i3 + 12 >> 2] = HEAP32[13372 >> 2]; - HEAP32[13360 >> 2] = i17; - HEAP32[13364 >> 2] = i14; - HEAP32[13372 >> 2] = 0; - HEAP32[13368 >> 2] = i3; - i4 = i2 + 28 | 0; - HEAP32[i4 >> 2] = 7; - if ((i2 + 32 | 0) >>> 0 < i10 >>> 0) { - while (1) { - i3 = i4 + 4 | 0; - HEAP32[i3 >> 2] = 7; - if ((i4 + 8 | 0) >>> 0 < i10 >>> 0) { - i4 = i3; - } else { - break; - } - } - } - if ((i2 | 0) != (i15 | 0)) { - i2 = i2 - i15 | 0; - i3 = i15 + (i2 + 4) | 0; - HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & -2; - HEAP32[i15 + 4 >> 2] = i2 | 1; - HEAP32[i15 + i2 >> 2] = i2; - i3 = i2 >>> 3; - if (i2 >>> 0 < 256) { - i4 = i3 << 1; - i2 = 12952 + (i4 << 2) | 0; - i5 = HEAP32[3228] | 0; - i3 = 1 << i3; - if ((i5 & i3 | 0) != 0) { - i4 = 12952 + (i4 + 2 << 2) | 0; - i3 = HEAP32[i4 >> 2] | 0; - if (i3 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - i7 = i4; - i8 = i3; - } - } else { - HEAP32[3228] = i5 | i3; - i7 = 12952 + (i4 + 2 << 2) | 0; - i8 = i2; - } - HEAP32[i7 >> 2] = i15; - HEAP32[i8 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i8; - HEAP32[i15 + 12 >> 2] = i2; - break; - } - i3 = i2 >>> 8; - if ((i3 | 0) != 0) { - if (i2 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i2 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i7 = 13216 + (i3 << 2) | 0; - HEAP32[i15 + 28 >> 2] = i3; - HEAP32[i15 + 20 >> 2] = 0; - HEAP32[i15 + 16 >> 2] = 0; - i4 = HEAP32[12916 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[12916 >> 2] = i4 | i5; - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i7; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break; - } - i4 = HEAP32[i7 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L499 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i2 | 0)) { - i3 = i2 << i3; - while (1) { - i7 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i7 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i2 | 0)) { - i6 = i5; - break L499; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i7 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i4; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break L311; - } - } else { - i6 = i4; - } - } while (0); - i4 = i6 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i2 = HEAP32[12928 >> 2] | 0; - if (i6 >>> 0 < i2 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i2 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i15; - HEAP32[i4 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i3; - HEAP32[i15 + 12 >> 2] = i6; - HEAP32[i15 + 24 >> 2] = 0; - break; - } - } - } else { - i32 = HEAP32[12928 >> 2] | 0; - if ((i32 | 0) == 0 | i17 >>> 0 < i32 >>> 0) { - HEAP32[12928 >> 2] = i17; - } - HEAP32[13360 >> 2] = i17; - HEAP32[13364 >> 2] = i14; - HEAP32[13372 >> 2] = 0; - HEAP32[12948 >> 2] = HEAP32[3346]; - HEAP32[12944 >> 2] = -1; - i2 = 0; - do { - i32 = i2 << 1; - i31 = 12952 + (i32 << 2) | 0; - HEAP32[12952 + (i32 + 3 << 2) >> 2] = i31; - HEAP32[12952 + (i32 + 2 << 2) >> 2] = i31; - i2 = i2 + 1 | 0; - } while ((i2 | 0) != 32); - i2 = i17 + 8 | 0; - if ((i2 & 7 | 0) == 0) { - i2 = 0; - } else { - i2 = 0 - i2 & 7; - } - i32 = i14 + -40 - i2 | 0; - HEAP32[12936 >> 2] = i17 + i2; - HEAP32[12924 >> 2] = i32; - HEAP32[i17 + (i2 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[12940 >> 2] = HEAP32[13400 >> 2]; - } - } while (0); - i2 = HEAP32[12924 >> 2] | 0; - if (i2 >>> 0 > i12 >>> 0) { - i31 = i2 - i12 | 0; - HEAP32[12924 >> 2] = i31; - i32 = HEAP32[12936 >> 2] | 0; - HEAP32[12936 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - HEAP32[(___errno_location() | 0) >> 2] = 12; - i32 = 0; - STACKTOP = i1; - return i32 | 0; -} -function _llex(i2, i3) { - i2 = i2 | 0; - i3 = i3 | 0; - var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i12 = i1; - i4 = i2 + 60 | 0; - HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] = 0; - i5 = i2 + 56 | 0; - L1 : while (1) { - i13 = HEAP32[i2 >> 2] | 0; - L3 : while (1) { - switch (i13 | 0) { - case 11: - case 9: - case 12: - case 32: - { - break; - } - case 91: - { - i9 = 25; - break L1; - } - case 62: - { - i9 = 45; - break L1; - } - case 46: - { - i9 = 161; - break L1; - } - case 13: - case 10: - { - i9 = 4; - break L3; - } - case 45: - { - break L3; - } - case 61: - { - i9 = 29; - break L1; - } - case 39: - case 34: - { - i9 = 69; - break L1; - } - case 126: - { - i9 = 53; - break L1; - } - case 60: - { - i9 = 37; - break L1; - } - case 58: - { - i9 = 61; - break L1; - } - case 57: - case 56: - case 55: - case 54: - case 53: - case 52: - case 51: - case 50: - case 49: - case 48: - { - i20 = i13; - break L1; - } - case -1: - { - i2 = 286; - i9 = 306; - break L1; - } - default: - { - i9 = 283; - break L1; - } - } - i13 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i13 = _luaZ_fill(i13) | 0; - } else { - i27 = i13 + 4 | 0; - i13 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i13 + 1; - i13 = HEAPU8[i13] | 0; - } - HEAP32[i2 >> 2] = i13; - } - if ((i9 | 0) == 4) { - i9 = 0; - _inclinenumber(i2); - continue; - } - i13 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i13 = _luaZ_fill(i13) | 0; - } else { - i27 = i13 + 4 | 0; - i13 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i13 + 1; - i13 = HEAPU8[i13] | 0; - } - HEAP32[i2 >> 2] = i13; - if ((i13 | 0) != 45) { - i2 = 45; - i9 = 306; - break; - } - i13 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i13 = _luaZ_fill(i13) | 0; - } else { - i27 = i13 + 4 | 0; - i13 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i13 + 1; - i13 = HEAPU8[i13] | 0; - } - HEAP32[i2 >> 2] = i13; - do { - if ((i13 | 0) == 91) { - i13 = _skip_sep(i2) | 0; - HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] = 0; - if ((i13 | 0) > -1) { - _read_long_string(i2, 0, i13); - HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] = 0; - continue L1; - } else { - i13 = HEAP32[i2 >> 2] | 0; - break; - } - } - } while (0); - while (1) { - if ((i13 | 0) == -1 | (i13 | 0) == 13 | (i13 | 0) == 10) { - continue L1; - } - i13 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i13 = _luaZ_fill(i13) | 0; - } else { - i27 = i13 + 4 | 0; - i13 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i13 + 1; - i13 = HEAPU8[i13] | 0; - } - HEAP32[i2 >> 2] = i13; - } - } - if ((i9 | 0) == 25) { - i9 = _skip_sep(i2) | 0; - if ((i9 | 0) > -1) { - _read_long_string(i2, i3, i9); - i27 = 289; - STACKTOP = i1; - return i27 | 0; - } - if ((i9 | 0) == -1) { - i27 = 91; - STACKTOP = i1; - return i27 | 0; - } else { - _lexerror(i2, 12272, 289); - } - } else if ((i9 | 0) == 29) { - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - if ((i3 | 0) != 61) { - i27 = 61; - STACKTOP = i1; - return i27 | 0; - } - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - i27 = 281; - STACKTOP = i1; - return i27 | 0; - } else if ((i9 | 0) == 37) { - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - if ((i3 | 0) != 61) { - i27 = 60; - STACKTOP = i1; - return i27 | 0; - } - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - i27 = 283; - STACKTOP = i1; - return i27 | 0; - } else if ((i9 | 0) == 45) { - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - if ((i3 | 0) != 61) { - i27 = 62; - STACKTOP = i1; - return i27 | 0; - } - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - i27 = 282; - STACKTOP = i1; - return i27 | 0; - } else if ((i9 | 0) == 53) { - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - if ((i3 | 0) != 61) { - i27 = 126; - STACKTOP = i1; - return i27 | 0; - } - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - i27 = 284; - STACKTOP = i1; - return i27 | 0; - } else if ((i9 | 0) == 61) { - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - if ((i3 | 0) != 58) { - i27 = 58; - STACKTOP = i1; - return i27 | 0; - } - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - i27 = 285; - STACKTOP = i1; - return i27 | 0; - } else if ((i9 | 0) == 69) { - i14 = HEAP32[i4 >> 2] | 0; - i7 = i14 + 4 | 0; - i15 = HEAP32[i7 >> 2] | 0; - i8 = i14 + 8 | 0; - i6 = HEAP32[i8 >> 2] | 0; - do { - if ((i15 + 1 | 0) >>> 0 > i6 >>> 0) { - if (i6 >>> 0 > 2147483645) { - _lexerror(i2, 12368, 0); - } - i16 = i6 << 1; - i15 = HEAP32[i2 + 52 >> 2] | 0; - if ((i16 | 0) == -2) { - _luaM_toobig(i15); - } else { - i24 = _luaM_realloc_(i15, HEAP32[i14 >> 2] | 0, i6, i16) | 0; - HEAP32[i14 >> 2] = i24; - HEAP32[i8 >> 2] = i16; - i23 = HEAP32[i7 >> 2] | 0; - break; - } - } else { - i23 = i15; - i24 = HEAP32[i14 >> 2] | 0; - } - } while (0); - i6 = i13 & 255; - HEAP32[i7 >> 2] = i23 + 1; - HEAP8[i24 + i23 | 0] = i6; - i7 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i14 = _luaZ_fill(i7) | 0; - } else { - i27 = i7 + 4 | 0; - i14 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i14 + 1; - i14 = HEAPU8[i14] | 0; - } - HEAP32[i2 >> 2] = i14; - L139 : do { - if ((i14 | 0) != (i13 | 0)) { - i7 = i2 + 52 | 0; - L141 : while (1) { - L143 : do { - if ((i14 | 0) == 92) { - i8 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i8 = _luaZ_fill(i8) | 0; - } else { - i27 = i8 + 4 | 0; - i8 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i8 + 1; - i8 = HEAPU8[i8] | 0; - } - HEAP32[i2 >> 2] = i8; - switch (i8 | 0) { - case 13: - case 10: - { - _inclinenumber(i2); - i8 = 10; - break; - } - case 39: - case 34: - case 92: - { - i9 = 124; - break; - } - case 122: - { - i8 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i14 = _luaZ_fill(i8) | 0; - } else { - i27 = i8 + 4 | 0; - i14 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i14 + 1; - i14 = HEAPU8[i14] | 0; - } - HEAP32[i2 >> 2] = i14; - if ((HEAP8[i14 + 10913 | 0] & 8) == 0) { - break L143; - } - while (1) { - if ((i14 | 0) == 13 | (i14 | 0) == 10) { - _inclinenumber(i2); - i14 = HEAP32[i2 >> 2] | 0; - } else { - i8 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i14 = _luaZ_fill(i8) | 0; - } else { - i27 = i8 + 4 | 0; - i14 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i14 + 1; - i14 = HEAPU8[i14] | 0; - } - HEAP32[i2 >> 2] = i14; - } - if ((HEAP8[i14 + 10913 | 0] & 8) == 0) { - break L143; - } - } - } - case 118: - { - i8 = 11; - i9 = 124; - break; - } - case 120: - { - HEAP32[i12 >> 2] = 120; - i14 = 1; - i8 = 0; - while (1) { - i9 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i9 = _luaZ_fill(i9) | 0; - } else { - i27 = i9 + 4 | 0; - i9 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i9 + 1; - i9 = HEAPU8[i9] | 0; - } - HEAP32[i2 >> 2] = i9; - HEAP32[i12 + (i14 << 2) >> 2] = i9; - if ((HEAP8[i9 + 10913 | 0] & 16) == 0) { - i9 = 100; - break L141; - } - i8 = (_luaO_hexavalue(i9) | 0) + (i8 << 4) | 0; - i14 = i14 + 1 | 0; - if ((i14 | 0) >= 3) { - i9 = 124; - break; - } - } - break; - } - case -1: - { - i14 = -1; - break L143; - } - case 98: - { - i8 = 8; - i9 = 124; - break; - } - case 102: - { - i8 = 12; - i9 = 124; - break; - } - case 110: - { - i8 = 10; - i9 = 124; - break; - } - case 114: - { - i8 = 13; - i9 = 124; - break; - } - case 116: - { - i8 = 9; - i9 = 124; - break; - } - case 97: - { - i8 = 7; - i9 = 124; - break; - } - default: - { - if ((HEAP8[i8 + 10913 | 0] & 2) == 0) { - i9 = 116; - break L141; - } else { - i15 = i8; - i14 = 0; - i8 = 0; - } - do { - if ((HEAP8[i15 + 10913 | 0] & 2) == 0) { - break; - } - HEAP32[i12 + (i14 << 2) >> 2] = i15; - i8 = i15 + -48 + (i8 * 10 | 0) | 0; - i15 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i15 >> 2] | 0; - HEAP32[i15 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i15 = _luaZ_fill(i15) | 0; - } else { - i27 = i15 + 4 | 0; - i15 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i15 + 1; - i15 = HEAPU8[i15] | 0; - } - HEAP32[i2 >> 2] = i15; - i14 = i14 + 1 | 0; - } while ((i14 | 0) < 3); - if ((i8 | 0) > 255) { - i9 = 123; - break L141; - } - } - } - if ((i9 | 0) == 124) { - i9 = 0; - i14 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i14 = _luaZ_fill(i14) | 0; - } else { - i27 = i14 + 4 | 0; - i14 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i14 + 1; - i14 = HEAPU8[i14] | 0; - } - HEAP32[i2 >> 2] = i14; - } - i15 = HEAP32[i4 >> 2] | 0; - i14 = i15 + 4 | 0; - i18 = HEAP32[i14 >> 2] | 0; - i16 = i15 + 8 | 0; - i17 = HEAP32[i16 >> 2] | 0; - if ((i18 + 1 | 0) >>> 0 > i17 >>> 0) { - if (i17 >>> 0 > 2147483645) { - i9 = 131; - break L141; - } - i18 = i17 << 1; - i19 = HEAP32[i7 >> 2] | 0; - if ((i18 | 0) == -2) { - i9 = 133; - break L141; - } - i27 = _luaM_realloc_(i19, HEAP32[i15 >> 2] | 0, i17, i18) | 0; - HEAP32[i15 >> 2] = i27; - HEAP32[i16 >> 2] = i18; - i18 = HEAP32[i14 >> 2] | 0; - i15 = i27; - } else { - i15 = HEAP32[i15 >> 2] | 0; - } - HEAP32[i14 >> 2] = i18 + 1; - HEAP8[i15 + i18 | 0] = i8; - i14 = HEAP32[i2 >> 2] | 0; - } else if ((i14 | 0) == -1) { - i9 = 82; - break L141; - } else if ((i14 | 0) == 13 | (i14 | 0) == 10) { - i9 = 83; - break L141; - } else { - i15 = HEAP32[i4 >> 2] | 0; - i8 = i15 + 4 | 0; - i18 = HEAP32[i8 >> 2] | 0; - i17 = i15 + 8 | 0; - i16 = HEAP32[i17 >> 2] | 0; - if ((i18 + 1 | 0) >>> 0 > i16 >>> 0) { - if (i16 >>> 0 > 2147483645) { - i9 = 139; - break L141; - } - i19 = i16 << 1; - i18 = HEAP32[i7 >> 2] | 0; - if ((i19 | 0) == -2) { - i9 = 141; - break L141; - } - i27 = _luaM_realloc_(i18, HEAP32[i15 >> 2] | 0, i16, i19) | 0; - HEAP32[i15 >> 2] = i27; - HEAP32[i17 >> 2] = i19; - i18 = HEAP32[i8 >> 2] | 0; - i15 = i27; - } else { - i15 = HEAP32[i15 >> 2] | 0; - } - HEAP32[i8 >> 2] = i18 + 1; - HEAP8[i15 + i18 | 0] = i14; - i8 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i14 = _luaZ_fill(i8) | 0; - } else { - i27 = i8 + 4 | 0; - i14 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i14 + 1; - i14 = HEAPU8[i14] | 0; - } - HEAP32[i2 >> 2] = i14; - } - } while (0); - if ((i14 | 0) == (i13 | 0)) { - break L139; - } - } - if ((i9 | 0) == 82) { - _lexerror(i2, 12400, 286); - } else if ((i9 | 0) == 83) { - _lexerror(i2, 12400, 289); - } else if ((i9 | 0) == 100) { - _escerror(i2, i12, i14 + 1 | 0, 12480); - } else if ((i9 | 0) == 116) { - _escerror(i2, i2, 1, 12424); - } else if ((i9 | 0) == 123) { - _escerror(i2, i12, i14, 12448); - } else if ((i9 | 0) == 131) { - _lexerror(i2, 12368, 0); - } else if ((i9 | 0) == 133) { - _luaM_toobig(i19); - } else if ((i9 | 0) == 139) { - _lexerror(i2, 12368, 0); - } else if ((i9 | 0) == 141) { - _luaM_toobig(i18); - } - } - } while (0); - i7 = HEAP32[i4 >> 2] | 0; - i8 = i7 + 4 | 0; - i13 = HEAP32[i8 >> 2] | 0; - i12 = i7 + 8 | 0; - i9 = HEAP32[i12 >> 2] | 0; - do { - if ((i13 + 1 | 0) >>> 0 > i9 >>> 0) { - if (i9 >>> 0 > 2147483645) { - _lexerror(i2, 12368, 0); - } - i14 = i9 << 1; - i13 = HEAP32[i2 + 52 >> 2] | 0; - if ((i14 | 0) == -2) { - _luaM_toobig(i13); - } else { - i11 = _luaM_realloc_(i13, HEAP32[i7 >> 2] | 0, i9, i14) | 0; - HEAP32[i7 >> 2] = i11; - HEAP32[i12 >> 2] = i14; - i10 = HEAP32[i8 >> 2] | 0; - break; - } - } else { - i10 = i13; - i11 = HEAP32[i7 >> 2] | 0; - } - } while (0); - HEAP32[i8 >> 2] = i10 + 1; - HEAP8[i11 + i10 | 0] = i6; - i5 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i5 = _luaZ_fill(i5) | 0; - } else { - i27 = i5 + 4 | 0; - i5 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i5 + 1; - i5 = HEAPU8[i5] | 0; - } - HEAP32[i2 >> 2] = i5; - i5 = HEAP32[i4 >> 2] | 0; - i4 = HEAP32[i2 + 52 >> 2] | 0; - i5 = _luaS_newlstr(i4, (HEAP32[i5 >> 2] | 0) + 1 | 0, (HEAP32[i5 + 4 >> 2] | 0) + -2 | 0) | 0; - i6 = i4 + 8 | 0; - i7 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i7 + 16; - HEAP32[i7 >> 2] = i5; - HEAP32[i7 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 64; - i7 = _luaH_set(i4, HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 4 >> 2] | 0, (HEAP32[i6 >> 2] | 0) + -16 | 0) | 0; - i2 = i7 + 8 | 0; - if ((HEAP32[i2 >> 2] | 0) == 0 ? (HEAP32[i7 >> 2] = 1, HEAP32[i2 >> 2] = 1, (HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) : 0) { - _luaC_step(i4); - } - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + -16; - HEAP32[i3 >> 2] = i5; - i27 = 289; - STACKTOP = i1; - return i27 | 0; - } else if ((i9 | 0) == 161) { - i10 = HEAP32[i4 >> 2] | 0; - i9 = i10 + 4 | 0; - i13 = HEAP32[i9 >> 2] | 0; - i12 = i10 + 8 | 0; - i11 = HEAP32[i12 >> 2] | 0; - do { - if ((i13 + 1 | 0) >>> 0 > i11 >>> 0) { - if (i11 >>> 0 > 2147483645) { - _lexerror(i2, 12368, 0); - } - i13 = i11 << 1; - i20 = HEAP32[i2 + 52 >> 2] | 0; - if ((i13 | 0) == -2) { - _luaM_toobig(i20); - } else { - i25 = _luaM_realloc_(i20, HEAP32[i10 >> 2] | 0, i11, i13) | 0; - HEAP32[i10 >> 2] = i25; - HEAP32[i12 >> 2] = i13; - i26 = HEAP32[i9 >> 2] | 0; - break; - } - } else { - i26 = i13; - i25 = HEAP32[i10 >> 2] | 0; - } - } while (0); - HEAP32[i9 >> 2] = i26 + 1; - HEAP8[i25 + i26 | 0] = 46; - i9 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i20 = _luaZ_fill(i9) | 0; - } else { - i27 = i9 + 4 | 0; - i20 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i20 + 1; - i20 = HEAPU8[i20] | 0; - } - HEAP32[i2 >> 2] = i20; - if ((i20 | 0) != 0 ? (_memchr(12304, i20, 2) | 0) != 0 : 0) { - i6 = HEAP32[i4 >> 2] | 0; - i3 = i6 + 4 | 0; - i9 = HEAP32[i3 >> 2] | 0; - i8 = i6 + 8 | 0; - i7 = HEAP32[i8 >> 2] | 0; - do { - if ((i9 + 1 | 0) >>> 0 > i7 >>> 0) { - if (i7 >>> 0 > 2147483645) { - _lexerror(i2, 12368, 0); - } - i9 = i7 << 1; - i10 = HEAP32[i2 + 52 >> 2] | 0; - if ((i9 | 0) == -2) { - _luaM_toobig(i10); - } else { - i21 = _luaM_realloc_(i10, HEAP32[i6 >> 2] | 0, i7, i9) | 0; - HEAP32[i6 >> 2] = i21; - HEAP32[i8 >> 2] = i9; - i22 = HEAP32[i3 >> 2] | 0; - break; - } - } else { - i22 = i9; - i21 = HEAP32[i6 >> 2] | 0; - } - } while (0); - HEAP32[i3 >> 2] = i22 + 1; - HEAP8[i21 + i22 | 0] = i20; - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - if ((i3 | 0) == 0) { - i27 = 279; - STACKTOP = i1; - return i27 | 0; - } - if ((_memchr(12304, i3, 2) | 0) == 0) { - i27 = 279; - STACKTOP = i1; - return i27 | 0; - } - i6 = HEAP32[i4 >> 2] | 0; - i7 = i6 + 4 | 0; - i9 = HEAP32[i7 >> 2] | 0; - i8 = i6 + 8 | 0; - i4 = HEAP32[i8 >> 2] | 0; - do { - if ((i9 + 1 | 0) >>> 0 > i4 >>> 0) { - if (i4 >>> 0 > 2147483645) { - _lexerror(i2, 12368, 0); - } - i10 = i4 << 1; - i9 = HEAP32[i2 + 52 >> 2] | 0; - if ((i10 | 0) == -2) { - _luaM_toobig(i9); - } else { - i18 = _luaM_realloc_(i9, HEAP32[i6 >> 2] | 0, i4, i10) | 0; - HEAP32[i6 >> 2] = i18; - HEAP32[i8 >> 2] = i10; - i19 = HEAP32[i7 >> 2] | 0; - break; - } - } else { - i19 = i9; - i18 = HEAP32[i6 >> 2] | 0; - } - } while (0); - HEAP32[i7 >> 2] = i19 + 1; - HEAP8[i18 + i19 | 0] = i3; - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - i27 = 280; - STACKTOP = i1; - return i27 | 0; - } - if ((HEAP8[i20 + 10913 | 0] & 2) == 0) { - i27 = 46; - STACKTOP = i1; - return i27 | 0; - } - } else if ((i9 | 0) == 283) { - if ((HEAP8[i13 + 10913 | 0] & 1) == 0) { - i3 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i27 = i3 + 4 | 0; - i3 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i2 >> 2] = i3; - i27 = i13; - STACKTOP = i1; - return i27 | 0; - } - i10 = i2 + 52 | 0; - while (1) { - i11 = HEAP32[i4 >> 2] | 0; - i9 = i11 + 4 | 0; - i12 = HEAP32[i9 >> 2] | 0; - i19 = i11 + 8 | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i12 + 1 | 0) >>> 0 > i18 >>> 0) { - if (i18 >>> 0 > 2147483645) { - i9 = 288; - break; - } - i21 = i18 << 1; - i12 = HEAP32[i10 >> 2] | 0; - if ((i21 | 0) == -2) { - i9 = 290; - break; - } - i27 = _luaM_realloc_(i12, HEAP32[i11 >> 2] | 0, i18, i21) | 0; - HEAP32[i11 >> 2] = i27; - HEAP32[i19 >> 2] = i21; - i12 = HEAP32[i9 >> 2] | 0; - i11 = i27; - } else { - i11 = HEAP32[i11 >> 2] | 0; - } - HEAP32[i9 >> 2] = i12 + 1; - HEAP8[i11 + i12 | 0] = i13; - i9 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i13 = _luaZ_fill(i9) | 0; - } else { - i27 = i9 + 4 | 0; - i13 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i13 + 1; - i13 = HEAPU8[i13] | 0; - } - HEAP32[i2 >> 2] = i13; - if ((HEAP8[i13 + 10913 | 0] & 3) == 0) { - i9 = 296; - break; - } - } - if ((i9 | 0) == 288) { - _lexerror(i2, 12368, 0); - } else if ((i9 | 0) == 290) { - _luaM_toobig(i12); - } else if ((i9 | 0) == 296) { - i6 = HEAP32[i4 >> 2] | 0; - i4 = HEAP32[i10 >> 2] | 0; - i6 = _luaS_newlstr(i4, HEAP32[i6 >> 2] | 0, HEAP32[i6 + 4 >> 2] | 0) | 0; - i7 = i4 + 8 | 0; - i8 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i8 + 16; - HEAP32[i8 >> 2] = i6; - i5 = i6 + 4 | 0; - HEAP32[i8 + 8 >> 2] = HEAPU8[i5] | 64; - i8 = _luaH_set(i4, HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 4 >> 2] | 0, (HEAP32[i7 >> 2] | 0) + -16 | 0) | 0; - i2 = i8 + 8 | 0; - if ((HEAP32[i2 >> 2] | 0) == 0 ? (HEAP32[i8 >> 2] = 1, HEAP32[i2 >> 2] = 1, (HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) : 0) { - _luaC_step(i4); - } - HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + -16; - HEAP32[i3 >> 2] = i6; - if ((HEAP8[i5] | 0) != 4) { - i27 = 288; - STACKTOP = i1; - return i27 | 0; - } - i2 = HEAP8[i6 + 6 | 0] | 0; - if (i2 << 24 >> 24 == 0) { - i27 = 288; - STACKTOP = i1; - return i27 | 0; - } - i27 = i2 & 255 | 256; - STACKTOP = i1; - return i27 | 0; - } - } else if ((i9 | 0) == 306) { - STACKTOP = i1; - return i2 | 0; - } - i9 = HEAP32[i4 >> 2] | 0; - i12 = i9 + 4 | 0; - i13 = HEAP32[i12 >> 2] | 0; - i11 = i9 + 8 | 0; - i10 = HEAP32[i11 >> 2] | 0; - do { - if ((i13 + 1 | 0) >>> 0 > i10 >>> 0) { - if (i10 >>> 0 > 2147483645) { - _lexerror(i2, 12368, 0); - } - i18 = i10 << 1; - i13 = HEAP32[i2 + 52 >> 2] | 0; - if ((i18 | 0) == -2) { - _luaM_toobig(i13); - } else { - i16 = _luaM_realloc_(i13, HEAP32[i9 >> 2] | 0, i10, i18) | 0; - HEAP32[i9 >> 2] = i16; - HEAP32[i11 >> 2] = i18; - i17 = HEAP32[i12 >> 2] | 0; - break; - } - } else { - i17 = i13; - i16 = HEAP32[i9 >> 2] | 0; - } - } while (0); - HEAP32[i12 >> 2] = i17 + 1; - HEAP8[i16 + i17 | 0] = i20; - i9 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i9 = _luaZ_fill(i9) | 0; - } else { - i27 = i9 + 4 | 0; - i9 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i9 + 1; - i9 = HEAPU8[i9] | 0; - } - HEAP32[i2 >> 2] = i9; - if ((i20 | 0) == 48) { - if ((i9 | 0) != 0) { - if ((_memchr(12320, i9, 3) | 0) == 0) { - i15 = i9; - i9 = 12312; - } else { - i10 = HEAP32[i4 >> 2] | 0; - i13 = i10 + 4 | 0; - i16 = HEAP32[i13 >> 2] | 0; - i11 = i10 + 8 | 0; - i12 = HEAP32[i11 >> 2] | 0; - do { - if ((i16 + 1 | 0) >>> 0 > i12 >>> 0) { - if (i12 >>> 0 > 2147483645) { - _lexerror(i2, 12368, 0); - } - i17 = i12 << 1; - i16 = HEAP32[i2 + 52 >> 2] | 0; - if ((i17 | 0) == -2) { - _luaM_toobig(i16); - } else { - i15 = _luaM_realloc_(i16, HEAP32[i10 >> 2] | 0, i12, i17) | 0; - HEAP32[i10 >> 2] = i15; - HEAP32[i11 >> 2] = i17; - i14 = HEAP32[i13 >> 2] | 0; - break; - } - } else { - i14 = i16; - i15 = HEAP32[i10 >> 2] | 0; - } - } while (0); - HEAP32[i13 >> 2] = i14 + 1; - HEAP8[i15 + i14 | 0] = i9; - i9 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i15 = _luaZ_fill(i9) | 0; - } else { - i27 = i9 + 4 | 0; - i15 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i15 + 1; - i15 = HEAPU8[i15] | 0; - } - HEAP32[i2 >> 2] = i15; - i9 = 12328; - } - } else { - i15 = 0; - i9 = 12312; - } - } else { - i15 = i9; - i9 = 12312; - } - i10 = i2 + 52 | 0; - while (1) { - if ((i15 | 0) != 0) { - if ((_memchr(i9, i15, 3) | 0) != 0) { - i12 = HEAP32[i4 >> 2] | 0; - i11 = i12 + 4 | 0; - i16 = HEAP32[i11 >> 2] | 0; - i14 = i12 + 8 | 0; - i13 = HEAP32[i14 >> 2] | 0; - if ((i16 + 1 | 0) >>> 0 > i13 >>> 0) { - if (i13 >>> 0 > 2147483645) { - i9 = 227; - break; - } - i17 = i13 << 1; - i16 = HEAP32[i10 >> 2] | 0; - if ((i17 | 0) == -2) { - i9 = 229; - break; - } - i27 = _luaM_realloc_(i16, HEAP32[i12 >> 2] | 0, i13, i17) | 0; - HEAP32[i12 >> 2] = i27; - HEAP32[i14 >> 2] = i17; - i16 = HEAP32[i11 >> 2] | 0; - i12 = i27; - } else { - i12 = HEAP32[i12 >> 2] | 0; - } - HEAP32[i11 >> 2] = i16 + 1; - HEAP8[i12 + i16 | 0] = i15; - i11 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i11 >> 2] | 0; - HEAP32[i11 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i15 = _luaZ_fill(i11) | 0; - } else { - i27 = i11 + 4 | 0; - i15 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i15 + 1; - i15 = HEAPU8[i15] | 0; - } - HEAP32[i2 >> 2] = i15; - if ((i15 | 0) != 0) { - if ((_memchr(12336, i15, 3) | 0) != 0) { - i12 = HEAP32[i4 >> 2] | 0; - i11 = i12 + 4 | 0; - i16 = HEAP32[i11 >> 2] | 0; - i14 = i12 + 8 | 0; - i13 = HEAP32[i14 >> 2] | 0; - if ((i16 + 1 | 0) >>> 0 > i13 >>> 0) { - if (i13 >>> 0 > 2147483645) { - i9 = 239; - break; - } - i17 = i13 << 1; - i16 = HEAP32[i10 >> 2] | 0; - if ((i17 | 0) == -2) { - i9 = 241; - break; - } - i27 = _luaM_realloc_(i16, HEAP32[i12 >> 2] | 0, i13, i17) | 0; - HEAP32[i12 >> 2] = i27; - HEAP32[i14 >> 2] = i17; - i16 = HEAP32[i11 >> 2] | 0; - i12 = i27; - } else { - i12 = HEAP32[i12 >> 2] | 0; - } - HEAP32[i11 >> 2] = i16 + 1; - HEAP8[i12 + i16 | 0] = i15; - i11 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i11 >> 2] | 0; - HEAP32[i11 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i15 = _luaZ_fill(i11) | 0; - } else { - i27 = i11 + 4 | 0; - i15 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i15 + 1; - i15 = HEAPU8[i15] | 0; - } - HEAP32[i2 >> 2] = i15; - } - } else { - i15 = 0; - } - } - } else { - i15 = 0; - } - i12 = HEAP32[i4 >> 2] | 0; - i11 = i12 + 4 | 0; - i17 = HEAP32[i11 >> 2] | 0; - i14 = i12 + 8 | 0; - i13 = HEAP32[i14 >> 2] | 0; - i16 = (i17 + 1 | 0) >>> 0 > i13 >>> 0; - if (!((HEAP8[i15 + 10913 | 0] & 16) != 0 | (i15 | 0) == 46)) { - i9 = 259; - break; - } - if (i16) { - if (i13 >>> 0 > 2147483645) { - i9 = 251; - break; - } - i17 = i13 << 1; - i16 = HEAP32[i10 >> 2] | 0; - if ((i17 | 0) == -2) { - i9 = 253; - break; - } - i27 = _luaM_realloc_(i16, HEAP32[i12 >> 2] | 0, i13, i17) | 0; - HEAP32[i12 >> 2] = i27; - HEAP32[i14 >> 2] = i17; - i17 = HEAP32[i11 >> 2] | 0; - i12 = i27; - } else { - i12 = HEAP32[i12 >> 2] | 0; - } - HEAP32[i11 >> 2] = i17 + 1; - HEAP8[i12 + i17 | 0] = i15; - i11 = HEAP32[i5 >> 2] | 0; - i27 = HEAP32[i11 >> 2] | 0; - HEAP32[i11 >> 2] = i27 + -1; - if ((i27 | 0) == 0) { - i15 = _luaZ_fill(i11) | 0; - } else { - i27 = i11 + 4 | 0; - i15 = HEAP32[i27 >> 2] | 0; - HEAP32[i27 >> 2] = i15 + 1; - i15 = HEAPU8[i15] | 0; - } - HEAP32[i2 >> 2] = i15; - } - if ((i9 | 0) == 227) { - _lexerror(i2, 12368, 0); - } else if ((i9 | 0) == 229) { - _luaM_toobig(i16); - } else if ((i9 | 0) == 239) { - _lexerror(i2, 12368, 0); - } else if ((i9 | 0) == 241) { - _luaM_toobig(i16); - } else if ((i9 | 0) == 251) { - _lexerror(i2, 12368, 0); - } else if ((i9 | 0) == 253) { - _luaM_toobig(i16); - } else if ((i9 | 0) == 259) { - do { - if (i16) { - if (i13 >>> 0 > 2147483645) { - _lexerror(i2, 12368, 0); - } - i5 = i13 << 1; - i9 = HEAP32[i10 >> 2] | 0; - if ((i5 | 0) == -2) { - _luaM_toobig(i9); - } else { - i7 = _luaM_realloc_(i9, HEAP32[i12 >> 2] | 0, i13, i5) | 0; - HEAP32[i12 >> 2] = i7; - HEAP32[i14 >> 2] = i5; - i8 = HEAP32[i11 >> 2] | 0; - break; - } - } else { - i8 = i17; - i7 = HEAP32[i12 >> 2] | 0; - } - } while (0); - HEAP32[i11 >> 2] = i8 + 1; - HEAP8[i7 + i8 | 0] = 0; - i5 = i2 + 76 | 0; - i7 = HEAP8[i5] | 0; - i10 = HEAP32[i4 >> 2] | 0; - i8 = HEAP32[i10 >> 2] | 0; - i10 = HEAP32[i10 + 4 >> 2] | 0; - if ((i10 | 0) == 0) { - i7 = -1; - } else { - do { - i10 = i10 + -1 | 0; - i9 = i8 + i10 | 0; - if ((HEAP8[i9] | 0) == 46) { - HEAP8[i9] = i7; - } - } while ((i10 | 0) != 0); - i7 = HEAP32[i4 >> 2] | 0; - i8 = HEAP32[i7 >> 2] | 0; - i7 = (HEAP32[i7 + 4 >> 2] | 0) + -1 | 0; - } - if ((_luaO_str2d(i8, i7, i3) | 0) != 0) { - i27 = 287; - STACKTOP = i1; - return i27 | 0; - } - i9 = HEAP8[i5] | 0; - i8 = HEAP8[HEAP32[(_localeconv() | 0) >> 2] | 0] | 0; - HEAP8[i5] = i8; - i10 = HEAP32[i4 >> 2] | 0; - i7 = HEAP32[i10 >> 2] | 0; - i10 = HEAP32[i10 + 4 >> 2] | 0; - if ((i10 | 0) == 0) { - i8 = -1; - } else { - do { - i10 = i10 + -1 | 0; - i11 = i7 + i10 | 0; - if ((HEAP8[i11] | 0) == i9 << 24 >> 24) { - HEAP8[i11] = i8; - } - } while ((i10 | 0) != 0); - i8 = HEAP32[i4 >> 2] | 0; - i7 = HEAP32[i8 >> 2] | 0; - i8 = (HEAP32[i8 + 4 >> 2] | 0) + -1 | 0; - } - if ((_luaO_str2d(i7, i8, i3) | 0) != 0) { - i27 = 287; - STACKTOP = i1; - return i27 | 0; - } - i1 = HEAP8[i5] | 0; - i4 = HEAP32[i4 >> 2] | 0; - i3 = HEAP32[i4 >> 2] | 0; - i4 = HEAP32[i4 + 4 >> 2] | 0; - if ((i4 | 0) == 0) { - _lexerror(i2, 12344, 287); - } else { - i6 = i4; - } - do { - i6 = i6 + -1 | 0; - i4 = i3 + i6 | 0; - if ((HEAP8[i4] | 0) == i1 << 24 >> 24) { - HEAP8[i4] = 46; - } - } while ((i6 | 0) != 0); - _lexerror(i2, 12344, 287); - } - return 0; -} -function _luaV_execute(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, d37 = 0.0, d38 = 0.0, d39 = 0.0; - i12 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i13 = i12 + 24 | 0; - i10 = i12 + 16 | 0; - i9 = i12 + 8 | 0; - i8 = i12; - i3 = i1 + 16 | 0; - i4 = i1 + 40 | 0; - i6 = i1 + 12 | 0; - i5 = i1 + 8 | 0; - i11 = i1 + 24 | 0; - i17 = i1 + 48 | 0; - i2 = i1 + 20 | 0; - i16 = i1 + 6 | 0; - i7 = i1 + 44 | 0; - i19 = HEAP32[i3 >> 2] | 0; - L1 : while (1) { - i22 = HEAP32[HEAP32[i19 >> 2] >> 2] | 0; - i18 = i22 + 12 | 0; - i23 = HEAP32[(HEAP32[i18 >> 2] | 0) + 8 >> 2] | 0; - i20 = i19 + 24 | 0; - i21 = i19 + 28 | 0; - i22 = i22 + 16 | 0; - i24 = i19 + 4 | 0; - i25 = HEAP32[i20 >> 2] | 0; - L3 : while (1) { - i28 = HEAP32[i21 >> 2] | 0; - HEAP32[i21 >> 2] = i28 + 4; - i28 = HEAP32[i28 >> 2] | 0; - i27 = HEAP8[i4] | 0; - do { - if (!((i27 & 12) == 0)) { - i26 = (HEAP32[i17 >> 2] | 0) + -1 | 0; - HEAP32[i17 >> 2] = i26; - i26 = (i26 | 0) == 0; - if (!i26 ? (i27 & 4) == 0 : 0) { - break; - } - i25 = HEAP32[i3 >> 2] | 0; - i29 = i27 & 255; - if ((i29 & 8 | 0) == 0 | i26 ^ 1) { - i27 = 0; - } else { - HEAP32[i17 >> 2] = HEAP32[i7 >> 2]; - i27 = 1; - } - i26 = i25 + 18 | 0; - i30 = HEAPU8[i26] | 0; - if ((i30 & 128 | 0) == 0) { - if (i27) { - _luaD_hook(i1, 3, -1); - } - do { - if ((i29 & 4 | 0) == 0) { - i29 = i25 + 28 | 0; - } else { - i34 = HEAP32[(HEAP32[HEAP32[i25 >> 2] >> 2] | 0) + 12 >> 2] | 0; - i29 = i25 + 28 | 0; - i32 = HEAP32[i29 >> 2] | 0; - i35 = HEAP32[i34 + 12 >> 2] | 0; - i33 = (i32 - i35 >> 2) + -1 | 0; - i34 = HEAP32[i34 + 20 >> 2] | 0; - i31 = (i34 | 0) == 0; - if (i31) { - i30 = 0; - } else { - i30 = HEAP32[i34 + (i33 << 2) >> 2] | 0; - } - if ((i33 | 0) != 0 ? (i14 = HEAP32[i2 >> 2] | 0, i32 >>> 0 > i14 >>> 0) : 0) { - if (i31) { - i31 = 0; - } else { - i31 = HEAP32[i34 + ((i14 - i35 >> 2) + -1 << 2) >> 2] | 0; - } - if ((i30 | 0) == (i31 | 0)) { - break; - } - } - _luaD_hook(i1, 2, i30); - } - } while (0); - HEAP32[i2 >> 2] = HEAP32[i29 >> 2]; - if ((HEAP8[i16] | 0) == 1) { - i15 = 23; - break L1; - } - } else { - HEAP8[i26] = i30 & 127; - } - i25 = HEAP32[i20 >> 2] | 0; - } - } while (0); - i26 = i28 >>> 6 & 255; - i27 = i25 + (i26 << 4) | 0; - switch (i28 & 63 | 0) { - case 9: - { - i28 = HEAP32[i22 + (i28 >>> 23 << 2) >> 2] | 0; - i35 = HEAP32[i28 + 8 >> 2] | 0; - i33 = i27; - i34 = HEAP32[i33 + 4 >> 2] | 0; - i36 = i35; - HEAP32[i36 >> 2] = HEAP32[i33 >> 2]; - HEAP32[i36 + 4 >> 2] = i34; - i36 = i25 + (i26 << 4) + 8 | 0; - HEAP32[i35 + 8 >> 2] = HEAP32[i36 >> 2]; - if ((HEAP32[i36 >> 2] & 64 | 0) == 0) { - continue L3; - } - i26 = HEAP32[i27 >> 2] | 0; - if ((HEAP8[i26 + 5 | 0] & 3) == 0) { - continue L3; - } - if ((HEAP8[i28 + 5 | 0] & 4) == 0) { - continue L3; - } - _luaC_barrier_(i1, i28, i26); - continue L3; - } - case 10: - { - i26 = i28 >>> 23; - if ((i26 & 256 | 0) == 0) { - i26 = i25 + (i26 << 4) | 0; - } else { - i26 = i23 + ((i26 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i25 = i25 + ((i28 & 511) << 4) | 0; - } else { - i25 = i23 + ((i28 & 255) << 4) | 0; - } - _luaV_settable(i1, i27, i26, i25); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 17: - { - i29 = i28 >>> 23; - if ((i29 & 256 | 0) == 0) { - i29 = i25 + (i29 << 4) | 0; - } else { - i29 = i23 + ((i29 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i28 = i25 + ((i28 & 511) << 4) | 0; - } else { - i28 = i23 + ((i28 & 255) << 4) | 0; - } - if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) { - d37 = +HEAPF64[i29 >> 3]; - d38 = +HEAPF64[i28 >> 3]; - HEAPF64[i27 >> 3] = d37 - d38 * +Math_floor(+(d37 / d38)); - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3; - continue L3; - } - _luaV_arith(i1, i27, i29, i28, 10); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 23: - { - if ((i26 | 0) != 0) { - _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i26 + -1 << 4) | 0); - } - HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + ((i28 >>> 14) + -131071 << 2); - continue L3; - } - case 24: - { - i27 = i28 >>> 23; - if ((i27 & 256 | 0) == 0) { - i27 = i25 + (i27 << 4) | 0; - } else { - i27 = i23 + ((i27 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i25 = i25 + ((i28 & 511) << 4) | 0; - } else { - i25 = i23 + ((i28 & 255) << 4) | 0; - } - if ((HEAP32[i27 + 8 >> 2] | 0) == (HEAP32[i25 + 8 >> 2] | 0)) { - i27 = (_luaV_equalobj_(i1, i27, i25) | 0) != 0; - } else { - i27 = 0; - } - i25 = HEAP32[i21 >> 2] | 0; - if ((i27 & 1 | 0) == (i26 | 0)) { - i26 = HEAP32[i25 >> 2] | 0; - i27 = i26 >>> 6 & 255; - if ((i27 | 0) != 0) { - _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i27 + -1 << 4) | 0); - i25 = HEAP32[i21 >> 2] | 0; - } - i25 = i25 + ((i26 >>> 14) + -131070 << 2) | 0; - } else { - i25 = i25 + 4 | 0; - } - HEAP32[i21 >> 2] = i25; - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 18: - { - i29 = i28 >>> 23; - if ((i29 & 256 | 0) == 0) { - i29 = i25 + (i29 << 4) | 0; - } else { - i29 = i23 + ((i29 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i28 = i25 + ((i28 & 511) << 4) | 0; - } else { - i28 = i23 + ((i28 & 255) << 4) | 0; - } - if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) { - HEAPF64[i27 >> 3] = +Math_pow(+(+HEAPF64[i29 >> 3]), +(+HEAPF64[i28 >> 3])); - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3; - continue L3; - } - _luaV_arith(i1, i27, i29, i28, 11); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 1: - { - i36 = i28 >>> 14; - i33 = i23 + (i36 << 4) | 0; - i34 = HEAP32[i33 + 4 >> 2] | 0; - i35 = i27; - HEAP32[i35 >> 2] = HEAP32[i33 >> 2]; - HEAP32[i35 + 4 >> 2] = i34; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i23 + (i36 << 4) + 8 >> 2]; - continue L3; - } - case 0: - { - i36 = i28 >>> 23; - i33 = i25 + (i36 << 4) | 0; - i34 = HEAP32[i33 + 4 >> 2] | 0; - i35 = i27; - HEAP32[i35 >> 2] = HEAP32[i33 >> 2]; - HEAP32[i35 + 4 >> 2] = i34; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i25 + (i36 << 4) + 8 >> 2]; - continue L3; - } - case 2: - { - i36 = HEAP32[i21 >> 2] | 0; - HEAP32[i21 >> 2] = i36 + 4; - i36 = (HEAP32[i36 >> 2] | 0) >>> 6; - i33 = i23 + (i36 << 4) | 0; - i34 = HEAP32[i33 + 4 >> 2] | 0; - i35 = i27; - HEAP32[i35 >> 2] = HEAP32[i33 >> 2]; - HEAP32[i35 + 4 >> 2] = i34; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i23 + (i36 << 4) + 8 >> 2]; - continue L3; - } - case 5: - { - i36 = HEAP32[(HEAP32[i22 + (i28 >>> 23 << 2) >> 2] | 0) + 8 >> 2] | 0; - i33 = i36; - i34 = HEAP32[i33 + 4 >> 2] | 0; - i35 = i27; - HEAP32[i35 >> 2] = HEAP32[i33 >> 2]; - HEAP32[i35 + 4 >> 2] = i34; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i36 + 8 >> 2]; - continue L3; - } - case 3: - { - HEAP32[i27 >> 2] = i28 >>> 23; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 1; - if ((i28 & 8372224 | 0) == 0) { - continue L3; - } - HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + 4; - continue L3; - } - case 7: - { - i26 = i28 >>> 14; - if ((i26 & 256 | 0) == 0) { - i26 = i25 + ((i26 & 511) << 4) | 0; - } else { - i26 = i23 + ((i26 & 255) << 4) | 0; - } - _luaV_gettable(i1, i25 + (i28 >>> 23 << 4) | 0, i26, i27); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 12: - { - i36 = i28 >>> 23; - i29 = i25 + (i36 << 4) | 0; - i26 = i26 + 1 | 0; - i33 = i29; - i34 = HEAP32[i33 + 4 >> 2] | 0; - i35 = i25 + (i26 << 4) | 0; - HEAP32[i35 >> 2] = HEAP32[i33 >> 2]; - HEAP32[i35 + 4 >> 2] = i34; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i25 + (i36 << 4) + 8 >> 2]; - i26 = i28 >>> 14; - if ((i26 & 256 | 0) == 0) { - i25 = i25 + ((i26 & 511) << 4) | 0; - } else { - i25 = i23 + ((i26 & 255) << 4) | 0; - } - _luaV_gettable(i1, i29, i25, i27); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 13: - { - i29 = i28 >>> 23; - if ((i29 & 256 | 0) == 0) { - i29 = i25 + (i29 << 4) | 0; - } else { - i29 = i23 + ((i29 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i28 = i25 + ((i28 & 511) << 4) | 0; - } else { - i28 = i23 + ((i28 & 255) << 4) | 0; - } - if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) { - HEAPF64[i27 >> 3] = +HEAPF64[i29 >> 3] + +HEAPF64[i28 >> 3]; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3; - continue L3; - } - _luaV_arith(i1, i27, i29, i28, 6); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 14: - { - i29 = i28 >>> 23; - if ((i29 & 256 | 0) == 0) { - i29 = i25 + (i29 << 4) | 0; - } else { - i29 = i23 + ((i29 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i28 = i25 + ((i28 & 511) << 4) | 0; - } else { - i28 = i23 + ((i28 & 255) << 4) | 0; - } - if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) { - HEAPF64[i27 >> 3] = +HEAPF64[i29 >> 3] - +HEAPF64[i28 >> 3]; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3; - continue L3; - } - _luaV_arith(i1, i27, i29, i28, 7); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 6: - { - i26 = i28 >>> 14; - if ((i26 & 256 | 0) == 0) { - i25 = i25 + ((i26 & 511) << 4) | 0; - } else { - i25 = i23 + ((i26 & 255) << 4) | 0; - } - _luaV_gettable(i1, HEAP32[(HEAP32[i22 + (i28 >>> 23 << 2) >> 2] | 0) + 8 >> 2] | 0, i25, i27); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 4: - { - i26 = i28 >>> 23; - while (1) { - HEAP32[i27 + 8 >> 2] = 0; - if ((i26 | 0) == 0) { - continue L3; - } else { - i26 = i26 + -1 | 0; - i27 = i27 + 16 | 0; - } - } - } - case 8: - { - i27 = i28 >>> 23; - if ((i27 & 256 | 0) == 0) { - i27 = i25 + (i27 << 4) | 0; - } else { - i27 = i23 + ((i27 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i25 = i25 + ((i28 & 511) << 4) | 0; - } else { - i25 = i23 + ((i28 & 255) << 4) | 0; - } - _luaV_settable(i1, HEAP32[(HEAP32[i22 + (i26 << 2) >> 2] | 0) + 8 >> 2] | 0, i27, i25); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 11: - { - i29 = i28 >>> 23; - i28 = i28 >>> 14 & 511; - i30 = _luaH_new(i1) | 0; - HEAP32[i27 >> 2] = i30; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 69; - if ((i28 | i29 | 0) != 0) { - i36 = _luaO_fb2int(i29) | 0; - _luaH_resize(i1, i30, i36, _luaO_fb2int(i28) | 0); - } - if ((HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) > 0) { - HEAP32[i5 >> 2] = i25 + (i26 + 1 << 4); - _luaC_step(i1); - HEAP32[i5 >> 2] = HEAP32[i24 >> 2]; - } - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 19: - { - i36 = i28 >>> 23; - i28 = i25 + (i36 << 4) | 0; - if ((HEAP32[i25 + (i36 << 4) + 8 >> 2] | 0) == 3) { - HEAPF64[i27 >> 3] = -+HEAPF64[i28 >> 3]; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3; - continue L3; - } else { - _luaV_arith(i1, i27, i28, i28, 12); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - } - case 15: - { - i29 = i28 >>> 23; - if ((i29 & 256 | 0) == 0) { - i29 = i25 + (i29 << 4) | 0; - } else { - i29 = i23 + ((i29 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i28 = i25 + ((i28 & 511) << 4) | 0; - } else { - i28 = i23 + ((i28 & 255) << 4) | 0; - } - if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) { - HEAPF64[i27 >> 3] = +HEAPF64[i29 >> 3] * +HEAPF64[i28 >> 3]; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3; - continue L3; - } - _luaV_arith(i1, i27, i29, i28, 8); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 16: - { - i29 = i28 >>> 23; - if ((i29 & 256 | 0) == 0) { - i29 = i25 + (i29 << 4) | 0; - } else { - i29 = i23 + ((i29 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i28 = i25 + ((i28 & 511) << 4) | 0; - } else { - i28 = i23 + ((i28 & 255) << 4) | 0; - } - if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) { - HEAPF64[i27 >> 3] = +HEAPF64[i29 >> 3] / +HEAPF64[i28 >> 3]; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3; - continue L3; - } - _luaV_arith(i1, i27, i29, i28, 9); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 20: - { - i29 = i28 >>> 23; - i28 = HEAP32[i25 + (i29 << 4) + 8 >> 2] | 0; - if ((i28 | 0) != 0) { - if ((i28 | 0) == 1) { - i28 = (HEAP32[i25 + (i29 << 4) >> 2] | 0) == 0; - } else { - i28 = 0; - } - } else { - i28 = 1; - } - HEAP32[i27 >> 2] = i28 & 1; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 1; - continue L3; - } - case 21: - { - _luaV_objlen(i1, i27, i25 + (i28 >>> 23 << 4) | 0); - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 22: - { - i27 = i28 >>> 23; - i28 = i28 >>> 14 & 511; - HEAP32[i5 >> 2] = i25 + (i28 + 1 << 4); - _luaV_concat(i1, 1 - i27 + i28 | 0); - i25 = HEAP32[i20 >> 2] | 0; - i28 = i25 + (i27 << 4) | 0; - i34 = i28; - i35 = HEAP32[i34 + 4 >> 2] | 0; - i36 = i25 + (i26 << 4) | 0; - HEAP32[i36 >> 2] = HEAP32[i34 >> 2]; - HEAP32[i36 + 4 >> 2] = i35; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i25 + (i27 << 4) + 8 >> 2]; - if ((HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) > 0) { - if (!(i26 >>> 0 < i27 >>> 0)) { - i28 = i25 + (i26 + 1 << 4) | 0; - } - HEAP32[i5 >> 2] = i28; - _luaC_step(i1); - HEAP32[i5 >> 2] = HEAP32[i24 >> 2]; - } - i25 = HEAP32[i20 >> 2] | 0; - HEAP32[i5 >> 2] = HEAP32[i24 >> 2]; - continue L3; - } - case 25: - { - i27 = i28 >>> 23; - if ((i27 & 256 | 0) == 0) { - i27 = i25 + (i27 << 4) | 0; - } else { - i27 = i23 + ((i27 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i25 = i25 + ((i28 & 511) << 4) | 0; - } else { - i25 = i23 + ((i28 & 255) << 4) | 0; - } - i36 = (_luaV_lessthan(i1, i27, i25) | 0) == (i26 | 0); - i26 = HEAP32[i21 >> 2] | 0; - if (i36) { - i25 = HEAP32[i26 >> 2] | 0; - i27 = i25 >>> 6 & 255; - if ((i27 | 0) != 0) { - _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i27 + -1 << 4) | 0); - i26 = HEAP32[i21 >> 2] | 0; - } - i25 = i26 + ((i25 >>> 14) + -131070 << 2) | 0; - } else { - i25 = i26 + 4 | 0; - } - HEAP32[i21 >> 2] = i25; - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 27: - { - i29 = HEAP32[i25 + (i26 << 4) + 8 >> 2] | 0; - i26 = (i29 | 0) == 0; - if ((i28 & 8372224 | 0) == 0) { - if (!i26) { - if (!((i29 | 0) == 1 ? (HEAP32[i27 >> 2] | 0) == 0 : 0)) { - i15 = 192; - } - } - } else { - if (!i26) { - if ((i29 | 0) == 1 ? (HEAP32[i27 >> 2] | 0) == 0 : 0) { - i15 = 192; - } - } else { - i15 = 192; - } - } - if ((i15 | 0) == 192) { - i15 = 0; - HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + 4; - continue L3; - } - i27 = HEAP32[i21 >> 2] | 0; - i26 = HEAP32[i27 >> 2] | 0; - i28 = i26 >>> 6 & 255; - if ((i28 | 0) != 0) { - _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i28 + -1 << 4) | 0); - i27 = HEAP32[i21 >> 2] | 0; - } - HEAP32[i21 >> 2] = i27 + ((i26 >>> 14) + -131070 << 2); - continue L3; - } - case 26: - { - i27 = i28 >>> 23; - if ((i27 & 256 | 0) == 0) { - i27 = i25 + (i27 << 4) | 0; - } else { - i27 = i23 + ((i27 & 255) << 4) | 0; - } - i28 = i28 >>> 14; - if ((i28 & 256 | 0) == 0) { - i25 = i25 + ((i28 & 511) << 4) | 0; - } else { - i25 = i23 + ((i28 & 255) << 4) | 0; - } - i36 = (_luaV_lessequal(i1, i27, i25) | 0) == (i26 | 0); - i26 = HEAP32[i21 >> 2] | 0; - if (i36) { - i25 = HEAP32[i26 >> 2] | 0; - i27 = i25 >>> 6 & 255; - if ((i27 | 0) != 0) { - _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i27 + -1 << 4) | 0); - i26 = HEAP32[i21 >> 2] | 0; - } - i25 = i26 + ((i25 >>> 14) + -131070 << 2) | 0; - } else { - i25 = i26 + 4 | 0; - } - HEAP32[i21 >> 2] = i25; - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 28: - { - i30 = i28 >>> 23; - i29 = i25 + (i30 << 4) | 0; - i30 = HEAP32[i25 + (i30 << 4) + 8 >> 2] | 0; - i31 = (i30 | 0) == 0; - if ((i28 & 8372224 | 0) == 0) { - if (!i31) { - if (!((i30 | 0) == 1 ? (HEAP32[i29 >> 2] | 0) == 0 : 0)) { - i15 = 203; - } - } - } else { - if (!i31) { - if ((i30 | 0) == 1 ? (HEAP32[i29 >> 2] | 0) == 0 : 0) { - i15 = 203; - } - } else { - i15 = 203; - } - } - if ((i15 | 0) == 203) { - i15 = 0; - HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + 4; - continue L3; - } - i36 = i29; - i28 = HEAP32[i36 + 4 >> 2] | 0; - HEAP32[i27 >> 2] = HEAP32[i36 >> 2]; - HEAP32[i27 + 4 >> 2] = i28; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = i30; - i27 = HEAP32[i21 >> 2] | 0; - i26 = HEAP32[i27 >> 2] | 0; - i28 = i26 >>> 6 & 255; - if ((i28 | 0) != 0) { - _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i28 + -1 << 4) | 0); - i27 = HEAP32[i21 >> 2] | 0; - } - HEAP32[i21 >> 2] = i27 + ((i26 >>> 14) + -131070 << 2); - continue L3; - } - case 30: - { - i28 = i28 >>> 23; - if ((i28 | 0) != 0) { - HEAP32[i5 >> 2] = i25 + (i26 + i28 << 4); - } - if ((_luaD_precall(i1, i27, -1) | 0) == 0) { - i15 = 218; - break L3; - } - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 29: - { - i29 = i28 >>> 23; - i28 = i28 >>> 14 & 511; - if ((i29 | 0) != 0) { - HEAP32[i5 >> 2] = i25 + (i26 + i29 << 4); - } - if ((_luaD_precall(i1, i27, i28 + -1 | 0) | 0) == 0) { - i15 = 213; - break L3; - } - if ((i28 | 0) != 0) { - HEAP32[i5 >> 2] = HEAP32[i24 >> 2]; - } - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 32: - { - d39 = +HEAPF64[i25 + (i26 + 2 << 4) >> 3]; - d38 = d39 + +HEAPF64[i27 >> 3]; - d37 = +HEAPF64[i25 + (i26 + 1 << 4) >> 3]; - if (d39 > 0.0) { - if (!(d38 <= d37)) { - continue L3; - } - } else { - if (!(d37 <= d38)) { - continue L3; - } - } - HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + ((i28 >>> 14) + -131071 << 2); - HEAPF64[i27 >> 3] = d38; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3; - i36 = i26 + 3 | 0; - HEAPF64[i25 + (i36 << 4) >> 3] = d38; - HEAP32[i25 + (i36 << 4) + 8 >> 2] = 3; - continue L3; - } - case 33: - { - i32 = i26 + 1 | 0; - i30 = i25 + (i32 << 4) | 0; - i31 = i26 + 2 | 0; - i29 = i25 + (i31 << 4) | 0; - i26 = i25 + (i26 << 4) + 8 | 0; - i33 = HEAP32[i26 >> 2] | 0; - if ((i33 | 0) != 3) { - if ((i33 & 15 | 0) != 4) { - i15 = 239; - break L1; - } - i36 = HEAP32[i27 >> 2] | 0; - if ((_luaO_str2d(i36 + 16 | 0, HEAP32[i36 + 12 >> 2] | 0, i8) | 0) == 0) { - i15 = 239; - break L1; - } - HEAPF64[i27 >> 3] = +HEAPF64[i8 >> 3]; - HEAP32[i26 >> 2] = 3; - if ((i27 | 0) == 0) { - i15 = 239; - break L1; - } - } - i33 = i25 + (i32 << 4) + 8 | 0; - i32 = HEAP32[i33 >> 2] | 0; - if ((i32 | 0) != 3) { - if ((i32 & 15 | 0) != 4) { - i15 = 244; - break L1; - } - i36 = HEAP32[i30 >> 2] | 0; - if ((_luaO_str2d(i36 + 16 | 0, HEAP32[i36 + 12 >> 2] | 0, i9) | 0) == 0) { - i15 = 244; - break L1; - } - HEAPF64[i30 >> 3] = +HEAPF64[i9 >> 3]; - HEAP32[i33 >> 2] = 3; - } - i31 = i25 + (i31 << 4) + 8 | 0; - i30 = HEAP32[i31 >> 2] | 0; - if ((i30 | 0) != 3) { - if ((i30 & 15 | 0) != 4) { - i15 = 249; - break L1; - } - i36 = HEAP32[i29 >> 2] | 0; - if ((_luaO_str2d(i36 + 16 | 0, HEAP32[i36 + 12 >> 2] | 0, i10) | 0) == 0) { - i15 = 249; - break L1; - } - HEAPF64[i29 >> 3] = +HEAPF64[i10 >> 3]; - HEAP32[i31 >> 2] = 3; - } - HEAPF64[i27 >> 3] = +HEAPF64[i27 >> 3] - +HEAPF64[i29 >> 3]; - HEAP32[i26 >> 2] = 3; - HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + ((i28 >>> 14) + -131071 << 2); - continue L3; - } - case 31: - { - i15 = 223; - break L3; - } - case 34: - { - i35 = i26 + 3 | 0; - i36 = i25 + (i35 << 4) | 0; - i33 = i26 + 2 | 0; - i34 = i26 + 5 | 0; - i32 = i25 + (i33 << 4) | 0; - i31 = HEAP32[i32 + 4 >> 2] | 0; - i30 = i25 + (i34 << 4) | 0; - HEAP32[i30 >> 2] = HEAP32[i32 >> 2]; - HEAP32[i30 + 4 >> 2] = i31; - HEAP32[i25 + (i34 << 4) + 8 >> 2] = HEAP32[i25 + (i33 << 4) + 8 >> 2]; - i34 = i26 + 1 | 0; - i33 = i26 + 4 | 0; - i30 = i25 + (i34 << 4) | 0; - i31 = HEAP32[i30 + 4 >> 2] | 0; - i32 = i25 + (i33 << 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i30 >> 2]; - HEAP32[i32 + 4 >> 2] = i31; - HEAP32[i25 + (i33 << 4) + 8 >> 2] = HEAP32[i25 + (i34 << 4) + 8 >> 2]; - i33 = i27; - i34 = HEAP32[i33 + 4 >> 2] | 0; - i27 = i36; - HEAP32[i27 >> 2] = HEAP32[i33 >> 2]; - HEAP32[i27 + 4 >> 2] = i34; - HEAP32[i25 + (i35 << 4) + 8 >> 2] = HEAP32[i25 + (i26 << 4) + 8 >> 2]; - HEAP32[i5 >> 2] = i25 + (i26 + 6 << 4); - _luaD_call(i1, i36, i28 >>> 14 & 511, 1); - i36 = HEAP32[i20 >> 2] | 0; - HEAP32[i5 >> 2] = HEAP32[i24 >> 2]; - i27 = HEAP32[i21 >> 2] | 0; - HEAP32[i21 >> 2] = i27 + 4; - i27 = HEAP32[i27 >> 2] | 0; - i25 = i36; - i28 = i27; - i27 = i36 + ((i27 >>> 6 & 255) << 4) | 0; - break; - } - case 35: - { - break; - } - case 36: - { - i29 = i28 >>> 23; - i28 = i28 >>> 14 & 511; - if ((i29 | 0) == 0) { - i29 = ((HEAP32[i5 >> 2] | 0) - i27 >> 4) + -1 | 0; - } - if ((i28 | 0) == 0) { - i28 = HEAP32[i21 >> 2] | 0; - HEAP32[i21 >> 2] = i28 + 4; - i28 = (HEAP32[i28 >> 2] | 0) >>> 6; - } - i27 = HEAP32[i27 >> 2] | 0; - i30 = i29 + -50 + (i28 * 50 | 0) | 0; - if ((i30 | 0) > (HEAP32[i27 + 28 >> 2] | 0)) { - _luaH_resizearray(i1, i27, i30); - } - if ((i29 | 0) > 0) { - i28 = i27 + 5 | 0; - while (1) { - i36 = i29 + i26 | 0; - i32 = i25 + (i36 << 4) | 0; - i31 = i30 + -1 | 0; - _luaH_setint(i1, i27, i30, i32); - if (((HEAP32[i25 + (i36 << 4) + 8 >> 2] & 64 | 0) != 0 ? !((HEAP8[(HEAP32[i32 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) ? !((HEAP8[i28] & 4) == 0) : 0) { - _luaC_barrierback_(i1, i27); - } - i29 = i29 + -1 | 0; - if ((i29 | 0) > 0) { - i30 = i31; - } else { - break; - } - } - } - HEAP32[i5 >> 2] = HEAP32[i24 >> 2]; - continue L3; - } - case 37: - { - i29 = HEAP32[(HEAP32[(HEAP32[i18 >> 2] | 0) + 16 >> 2] | 0) + (i28 >>> 14 << 2) >> 2] | 0; - i28 = i29 + 32 | 0; - i33 = HEAP32[i28 >> 2] | 0; - i30 = HEAP32[i29 + 40 >> 2] | 0; - i31 = HEAP32[i29 + 28 >> 2] | 0; - L323 : do { - if ((i33 | 0) == 0) { - i15 = 276; - } else { - if ((i30 | 0) > 0) { - i34 = i33 + 16 | 0; - i32 = 0; - while (1) { - i35 = HEAPU8[i31 + (i32 << 3) + 5 | 0] | 0; - if ((HEAP8[i31 + (i32 << 3) + 4 | 0] | 0) == 0) { - i36 = HEAP32[(HEAP32[i22 + (i35 << 2) >> 2] | 0) + 8 >> 2] | 0; - } else { - i36 = i25 + (i35 << 4) | 0; - } - i35 = i32 + 1 | 0; - if ((HEAP32[(HEAP32[i34 + (i32 << 2) >> 2] | 0) + 8 >> 2] | 0) != (i36 | 0)) { - i15 = 276; - break L323; - } - if ((i35 | 0) < (i30 | 0)) { - i32 = i35; - } else { - break; - } - } - } - HEAP32[i27 >> 2] = i33; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 70; - } - } while (0); - if ((i15 | 0) == 276) { - i15 = 0; - i32 = _luaF_newLclosure(i1, i30) | 0; - HEAP32[i32 + 12 >> 2] = i29; - HEAP32[i27 >> 2] = i32; - HEAP32[i25 + (i26 << 4) + 8 >> 2] = 70; - if ((i30 | 0) > 0) { - i27 = i32 + 16 | 0; - i34 = 0; - do { - i33 = HEAPU8[i31 + (i34 << 3) + 5 | 0] | 0; - if ((HEAP8[i31 + (i34 << 3) + 4 | 0] | 0) == 0) { - HEAP32[i27 + (i34 << 2) >> 2] = HEAP32[i22 + (i33 << 2) >> 2]; - } else { - HEAP32[i27 + (i34 << 2) >> 2] = _luaF_findupval(i1, i25 + (i33 << 4) | 0) | 0; - } - i34 = i34 + 1 | 0; - } while ((i34 | 0) != (i30 | 0)); - } - if (!((HEAP8[i29 + 5 | 0] & 4) == 0)) { - _luaC_barrierproto_(i1, i29, i32); - } - HEAP32[i28 >> 2] = i32; - } - if ((HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) > 0) { - HEAP32[i5 >> 2] = i25 + (i26 + 1 << 4); - _luaC_step(i1); - HEAP32[i5 >> 2] = HEAP32[i24 >> 2]; - } - i25 = HEAP32[i20 >> 2] | 0; - continue L3; - } - case 38: - { - i36 = i28 >>> 23; - i29 = i36 + -1 | 0; - i30 = (i25 - (HEAP32[i19 >> 2] | 0) >> 4) - (HEAPU8[(HEAP32[i18 >> 2] | 0) + 76 | 0] | 0) | 0; - i28 = i30 + -1 | 0; - if ((i36 | 0) == 0) { - if (((HEAP32[i11 >> 2] | 0) - (HEAP32[i5 >> 2] | 0) >> 4 | 0) <= (i28 | 0)) { - _luaD_growstack(i1, i28); - } - i27 = HEAP32[i20 >> 2] | 0; - HEAP32[i5 >> 2] = i27 + (i28 + i26 << 4); - i29 = i28; - i25 = i27; - i27 = i27 + (i26 << 4) | 0; - } - if ((i29 | 0) <= 0) { - continue L3; - } - i26 = 1 - i30 | 0; - i30 = 0; - while (1) { - if ((i30 | 0) < (i28 | 0)) { - i36 = i30 + i26 | 0; - i33 = i25 + (i36 << 4) | 0; - i34 = HEAP32[i33 + 4 >> 2] | 0; - i35 = i27 + (i30 << 4) | 0; - HEAP32[i35 >> 2] = HEAP32[i33 >> 2]; - HEAP32[i35 + 4 >> 2] = i34; - HEAP32[i27 + (i30 << 4) + 8 >> 2] = HEAP32[i25 + (i36 << 4) + 8 >> 2]; - } else { - HEAP32[i27 + (i30 << 4) + 8 >> 2] = 0; - } - i30 = i30 + 1 | 0; - if ((i30 | 0) == (i29 | 0)) { - continue L3; - } - } - } - default: - { - continue L3; - } - } - i26 = HEAP32[i27 + 24 >> 2] | 0; - if ((i26 | 0) == 0) { - continue; - } - i34 = i27 + 16 | 0; - i35 = HEAP32[i34 + 4 >> 2] | 0; - i36 = i27; - HEAP32[i36 >> 2] = HEAP32[i34 >> 2]; - HEAP32[i36 + 4 >> 2] = i35; - HEAP32[i27 + 8 >> 2] = i26; - HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + ((i28 >>> 14) + -131071 << 2); - } - if ((i15 | 0) == 213) { - i15 = 0; - i19 = HEAP32[i3 >> 2] | 0; - i36 = i19 + 18 | 0; - HEAP8[i36] = HEAPU8[i36] | 4; - continue; - } else if ((i15 | 0) == 218) { - i15 = 0; - i22 = HEAP32[i3 >> 2] | 0; - i19 = HEAP32[i22 + 8 >> 2] | 0; - i23 = HEAP32[i22 >> 2] | 0; - i24 = HEAP32[i19 >> 2] | 0; - i20 = i22 + 24 | 0; - i21 = (HEAP32[i20 >> 2] | 0) + (HEAPU8[(HEAP32[(HEAP32[i23 >> 2] | 0) + 12 >> 2] | 0) + 76 | 0] << 4) | 0; - if ((HEAP32[(HEAP32[i18 >> 2] | 0) + 56 >> 2] | 0) > 0) { - _luaF_close(i1, HEAP32[i19 + 24 >> 2] | 0); - } - if (i23 >>> 0 < i21 >>> 0) { - i25 = i23; - i18 = 0; - do { - i34 = i25; - i35 = HEAP32[i34 + 4 >> 2] | 0; - i36 = i24 + (i18 << 4) | 0; - HEAP32[i36 >> 2] = HEAP32[i34 >> 2]; - HEAP32[i36 + 4 >> 2] = i35; - HEAP32[i24 + (i18 << 4) + 8 >> 2] = HEAP32[i23 + (i18 << 4) + 8 >> 2]; - i18 = i18 + 1 | 0; - i25 = i23 + (i18 << 4) | 0; - } while (i25 >>> 0 < i21 >>> 0); - } - i36 = i23; - HEAP32[i19 + 24 >> 2] = i24 + ((HEAP32[i20 >> 2] | 0) - i36 >> 4 << 4); - i36 = i24 + ((HEAP32[i5 >> 2] | 0) - i36 >> 4 << 4) | 0; - HEAP32[i5 >> 2] = i36; - HEAP32[i19 + 4 >> 2] = i36; - HEAP32[i19 + 28 >> 2] = HEAP32[i22 + 28 >> 2]; - i36 = i19 + 18 | 0; - HEAP8[i36] = HEAPU8[i36] | 64; - HEAP32[i3 >> 2] = i19; - continue; - } else if ((i15 | 0) == 223) { - i15 = 0; - i20 = i28 >>> 23; - if ((i20 | 0) != 0) { - HEAP32[i5 >> 2] = i25 + (i20 + -1 + i26 << 4); - } - if ((HEAP32[(HEAP32[i18 >> 2] | 0) + 56 >> 2] | 0) > 0) { - _luaF_close(i1, i25); - } - i18 = _luaD_poscall(i1, i27) | 0; - if ((HEAP8[i19 + 18 | 0] & 4) == 0) { - i15 = 228; - break; - } - i19 = HEAP32[i3 >> 2] | 0; - if ((i18 | 0) == 0) { - continue; - } - HEAP32[i5 >> 2] = HEAP32[i19 + 4 >> 2]; - continue; - } - } - if ((i15 | 0) == 23) { - if (!i27) { - i36 = HEAP32[i29 >> 2] | 0; - i36 = i36 + -4 | 0; - HEAP32[i29 >> 2] = i36; - i36 = HEAP8[i26] | 0; - i36 = i36 & 255; - i36 = i36 | 128; - i36 = i36 & 255; - HEAP8[i26] = i36; - i36 = HEAP32[i5 >> 2] | 0; - i36 = i36 + -16 | 0; - HEAP32[i25 >> 2] = i36; - _luaD_throw(i1, 1); - } - HEAP32[i17 >> 2] = 1; - i36 = HEAP32[i29 >> 2] | 0; - i36 = i36 + -4 | 0; - HEAP32[i29 >> 2] = i36; - i36 = HEAP8[i26] | 0; - i36 = i36 & 255; - i36 = i36 | 128; - i36 = i36 & 255; - HEAP8[i26] = i36; - i36 = HEAP32[i5 >> 2] | 0; - i36 = i36 + -16 | 0; - HEAP32[i25 >> 2] = i36; - _luaD_throw(i1, 1); - } else if ((i15 | 0) == 228) { - STACKTOP = i12; - return; - } else if ((i15 | 0) == 239) { - _luaG_runerror(i1, 9040, i13); - } else if ((i15 | 0) == 244) { - _luaG_runerror(i1, 9080, i13); - } else if ((i15 | 0) == 249) { - _luaG_runerror(i1, 9112, i13); - } -} -function ___floatscan(i8, i2, i11) { - i8 = i8 | 0; - i2 = i2 | 0; - i11 = i11 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, d14 = 0.0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, d28 = 0.0, i29 = 0, d30 = 0.0, d31 = 0.0, d32 = 0.0, d33 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 512 | 0; - i5 = i1; - if ((i2 | 0) == 1) { - i2 = 53; - i3 = -1074; - } else if ((i2 | 0) == 2) { - i2 = 53; - i3 = -1074; - } else if ((i2 | 0) == 0) { - i2 = 24; - i3 = -149; - } else { - d31 = 0.0; - STACKTOP = i1; - return +d31; - } - i9 = i8 + 4 | 0; - i10 = i8 + 100 | 0; - do { - i4 = HEAP32[i9 >> 2] | 0; - if (i4 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i4 + 1; - i21 = HEAPU8[i4] | 0; - } else { - i21 = ___shgetc(i8) | 0; - } - } while ((_isspace(i21 | 0) | 0) != 0); - do { - if ((i21 | 0) == 43 | (i21 | 0) == 45) { - i4 = 1 - (((i21 | 0) == 45) << 1) | 0; - i7 = HEAP32[i9 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i7 + 1; - i21 = HEAPU8[i7] | 0; - break; - } else { - i21 = ___shgetc(i8) | 0; - break; - } - } else { - i4 = 1; - } - } while (0); - i7 = 0; - do { - if ((i21 | 32 | 0) != (HEAP8[13408 + i7 | 0] | 0)) { - break; - } - do { - if (i7 >>> 0 < 7) { - i12 = HEAP32[i9 >> 2] | 0; - if (i12 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i12 + 1; - i21 = HEAPU8[i12] | 0; - break; - } else { - i21 = ___shgetc(i8) | 0; - break; - } - } - } while (0); - i7 = i7 + 1 | 0; - } while (i7 >>> 0 < 8); - do { - if ((i7 | 0) == 3) { - i13 = 23; - } else if ((i7 | 0) != 8) { - i12 = (i11 | 0) == 0; - if (!(i7 >>> 0 < 4 | i12)) { - if ((i7 | 0) == 8) { - break; - } else { - i13 = 23; - break; - } - } - L34 : do { - if ((i7 | 0) == 0) { - i7 = 0; - do { - if ((i21 | 32 | 0) != (HEAP8[13424 + i7 | 0] | 0)) { - break L34; - } - do { - if (i7 >>> 0 < 2) { - i15 = HEAP32[i9 >> 2] | 0; - if (i15 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i15 + 1; - i21 = HEAPU8[i15] | 0; - break; - } else { - i21 = ___shgetc(i8) | 0; - break; - } - } - } while (0); - i7 = i7 + 1 | 0; - } while (i7 >>> 0 < 3); - } - } while (0); - if ((i7 | 0) == 0) { - do { - if ((i21 | 0) == 48) { - i7 = HEAP32[i9 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i7 + 1; - i7 = HEAPU8[i7] | 0; - } else { - i7 = ___shgetc(i8) | 0; - } - if ((i7 | 32 | 0) != 120) { - if ((HEAP32[i10 >> 2] | 0) == 0) { - i21 = 48; - break; - } - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - i21 = 48; - break; - } - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i5 + 1; - i21 = HEAPU8[i5] | 0; - i19 = 0; - } else { - i21 = ___shgetc(i8) | 0; - i19 = 0; - } - while (1) { - if ((i21 | 0) == 46) { - i13 = 70; - break; - } else if ((i21 | 0) != 48) { - i5 = 0; - i7 = 0; - i15 = 0; - i16 = 0; - i18 = 0; - i20 = 0; - d28 = 1.0; - i17 = 0; - d14 = 0.0; - break; - } - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i5 + 1; - i21 = HEAPU8[i5] | 0; - i19 = 1; - continue; - } else { - i21 = ___shgetc(i8) | 0; - i19 = 1; - continue; - } - } - L66 : do { - if ((i13 | 0) == 70) { - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i5 + 1; - i21 = HEAPU8[i5] | 0; - } else { - i21 = ___shgetc(i8) | 0; - } - if ((i21 | 0) == 48) { - i15 = -1; - i16 = -1; - while (1) { - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i5 + 1; - i21 = HEAPU8[i5] | 0; - } else { - i21 = ___shgetc(i8) | 0; - } - if ((i21 | 0) != 48) { - i5 = 0; - i7 = 0; - i19 = 1; - i18 = 1; - i20 = 0; - d28 = 1.0; - i17 = 0; - d14 = 0.0; - break L66; - } - i29 = _i64Add(i15 | 0, i16 | 0, -1, -1) | 0; - i15 = i29; - i16 = tempRet0; - } - } else { - i5 = 0; - i7 = 0; - i15 = 0; - i16 = 0; - i18 = 1; - i20 = 0; - d28 = 1.0; - i17 = 0; - d14 = 0.0; - } - } - } while (0); - L79 : while (1) { - i24 = i21 + -48 | 0; - do { - if (!(i24 >>> 0 < 10)) { - i23 = i21 | 32; - i22 = (i21 | 0) == 46; - if (!((i23 + -97 | 0) >>> 0 < 6 | i22)) { - break L79; - } - if (i22) { - if ((i18 | 0) == 0) { - i15 = i7; - i16 = i5; - i18 = 1; - break; - } else { - i21 = 46; - break L79; - } - } else { - i24 = (i21 | 0) > 57 ? i23 + -87 | 0 : i24; - i13 = 84; - break; - } - } else { - i13 = 84; - } - } while (0); - if ((i13 | 0) == 84) { - i13 = 0; - do { - if (!((i5 | 0) < 0 | (i5 | 0) == 0 & i7 >>> 0 < 8)) { - if ((i5 | 0) < 0 | (i5 | 0) == 0 & i7 >>> 0 < 14) { - d31 = d28 * .0625; - d30 = d31; - d14 = d14 + d31 * +(i24 | 0); - break; - } - if ((i24 | 0) != 0 & (i20 | 0) == 0) { - i20 = 1; - d30 = d28; - d14 = d14 + d28 * .5; - } else { - d30 = d28; - } - } else { - d30 = d28; - i17 = i24 + (i17 << 4) | 0; - } - } while (0); - i7 = _i64Add(i7 | 0, i5 | 0, 1, 0) | 0; - i5 = tempRet0; - i19 = 1; - d28 = d30; - } - i21 = HEAP32[i9 >> 2] | 0; - if (i21 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i21 + 1; - i21 = HEAPU8[i21] | 0; - continue; - } else { - i21 = ___shgetc(i8) | 0; - continue; - } - } - if ((i19 | 0) == 0) { - i2 = (HEAP32[i10 >> 2] | 0) == 0; - if (!i2) { - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - } - if (!i12) { - if (!i2 ? (i6 = HEAP32[i9 >> 2] | 0, HEAP32[i9 >> 2] = i6 + -1, (i18 | 0) != 0) : 0) { - HEAP32[i9 >> 2] = i6 + -2; - } - } else { - ___shlim(i8, 0); - } - d31 = +(i4 | 0) * 0.0; - STACKTOP = i1; - return +d31; - } - i13 = (i18 | 0) == 0; - i6 = i13 ? i7 : i15; - i13 = i13 ? i5 : i16; - if ((i5 | 0) < 0 | (i5 | 0) == 0 & i7 >>> 0 < 8) { - do { - i17 = i17 << 4; - i7 = _i64Add(i7 | 0, i5 | 0, 1, 0) | 0; - i5 = tempRet0; - } while ((i5 | 0) < 0 | (i5 | 0) == 0 & i7 >>> 0 < 8); - } - do { - if ((i21 | 32 | 0) == 112) { - i7 = _scanexp(i8, i11) | 0; - i5 = tempRet0; - if ((i7 | 0) == 0 & (i5 | 0) == -2147483648) { - if (i12) { - ___shlim(i8, 0); - d31 = 0.0; - STACKTOP = i1; - return +d31; - } else { - if ((HEAP32[i10 >> 2] | 0) == 0) { - i7 = 0; - i5 = 0; - break; - } - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - i7 = 0; - i5 = 0; - break; - } - } - } else { - if ((HEAP32[i10 >> 2] | 0) == 0) { - i7 = 0; - i5 = 0; - } else { - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - i7 = 0; - i5 = 0; - } - } - } while (0); - i6 = _bitshift64Shl(i6 | 0, i13 | 0, 2) | 0; - i6 = _i64Add(i6 | 0, tempRet0 | 0, -32, -1) | 0; - i5 = _i64Add(i6 | 0, tempRet0 | 0, i7 | 0, i5 | 0) | 0; - i6 = tempRet0; - if ((i17 | 0) == 0) { - d31 = +(i4 | 0) * 0.0; - STACKTOP = i1; - return +d31; - } - if ((i6 | 0) > 0 | (i6 | 0) == 0 & i5 >>> 0 > (0 - i3 | 0) >>> 0) { - HEAP32[(___errno_location() | 0) >> 2] = 34; - d31 = +(i4 | 0) * 1.7976931348623157e+308 * 1.7976931348623157e+308; - STACKTOP = i1; - return +d31; - } - i29 = i3 + -106 | 0; - i27 = ((i29 | 0) < 0) << 31 >> 31; - if ((i6 | 0) < (i27 | 0) | (i6 | 0) == (i27 | 0) & i5 >>> 0 < i29 >>> 0) { - HEAP32[(___errno_location() | 0) >> 2] = 34; - d31 = +(i4 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308; - STACKTOP = i1; - return +d31; - } - if ((i17 | 0) > -1) { - do { - i17 = i17 << 1; - if (!(d14 >= .5)) { - d28 = d14; - } else { - d28 = d14 + -1.0; - i17 = i17 | 1; - } - d14 = d14 + d28; - i5 = _i64Add(i5 | 0, i6 | 0, -1, -1) | 0; - i6 = tempRet0; - } while ((i17 | 0) > -1); - } - i3 = _i64Subtract(32, 0, i3 | 0, ((i3 | 0) < 0) << 31 >> 31 | 0) | 0; - i3 = _i64Add(i5 | 0, i6 | 0, i3 | 0, tempRet0 | 0) | 0; - i29 = tempRet0; - if (0 > (i29 | 0) | 0 == (i29 | 0) & i2 >>> 0 > i3 >>> 0) { - i2 = (i3 | 0) < 0 ? 0 : i3; - } - if ((i2 | 0) < 53) { - d28 = +(i4 | 0); - d30 = +_copysign(+(+_scalbn(1.0, 84 - i2 | 0)), +d28); - if ((i2 | 0) < 32 & d14 != 0.0) { - i29 = i17 & 1; - i17 = (i29 ^ 1) + i17 | 0; - d14 = (i29 | 0) == 0 ? 0.0 : d14; - } - } else { - d28 = +(i4 | 0); - d30 = 0.0; - } - d14 = d28 * d14 + (d30 + d28 * +(i17 >>> 0)) - d30; - if (!(d14 != 0.0)) { - HEAP32[(___errno_location() | 0) >> 2] = 34; - } - d31 = +_scalbnl(d14, i5); - STACKTOP = i1; - return +d31; - } - } while (0); - i7 = i3 + i2 | 0; - i6 = 0 - i7 | 0; - i20 = 0; - while (1) { - if ((i21 | 0) == 46) { - i13 = 139; - break; - } else if ((i21 | 0) != 48) { - i25 = 0; - i22 = 0; - i19 = 0; - break; - } - i15 = HEAP32[i9 >> 2] | 0; - if (i15 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i15 + 1; - i21 = HEAPU8[i15] | 0; - i20 = 1; - continue; - } else { - i21 = ___shgetc(i8) | 0; - i20 = 1; - continue; - } - } - L168 : do { - if ((i13 | 0) == 139) { - i15 = HEAP32[i9 >> 2] | 0; - if (i15 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i15 + 1; - i21 = HEAPU8[i15] | 0; - } else { - i21 = ___shgetc(i8) | 0; - } - if ((i21 | 0) == 48) { - i25 = -1; - i22 = -1; - while (1) { - i15 = HEAP32[i9 >> 2] | 0; - if (i15 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i15 + 1; - i21 = HEAPU8[i15] | 0; - } else { - i21 = ___shgetc(i8) | 0; - } - if ((i21 | 0) != 48) { - i20 = 1; - i19 = 1; - break L168; - } - i29 = _i64Add(i25 | 0, i22 | 0, -1, -1) | 0; - i25 = i29; - i22 = tempRet0; - } - } else { - i25 = 0; - i22 = 0; - i19 = 1; - } - } - } while (0); - HEAP32[i5 >> 2] = 0; - i26 = i21 + -48 | 0; - i27 = (i21 | 0) == 46; - L182 : do { - if (i26 >>> 0 < 10 | i27) { - i15 = i5 + 496 | 0; - i24 = 0; - i23 = 0; - i18 = 0; - i17 = 0; - i16 = 0; - while (1) { - do { - if (i27) { - if ((i19 | 0) == 0) { - i25 = i24; - i22 = i23; - i19 = 1; - } else { - break L182; - } - } else { - i27 = _i64Add(i24 | 0, i23 | 0, 1, 0) | 0; - i23 = tempRet0; - i29 = (i21 | 0) != 48; - if ((i17 | 0) >= 125) { - if (!i29) { - i24 = i27; - break; - } - HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 1; - i24 = i27; - break; - } - i20 = i5 + (i17 << 2) | 0; - if ((i18 | 0) != 0) { - i26 = i21 + -48 + ((HEAP32[i20 >> 2] | 0) * 10 | 0) | 0; - } - HEAP32[i20 >> 2] = i26; - i18 = i18 + 1 | 0; - i21 = (i18 | 0) == 9; - i24 = i27; - i20 = 1; - i18 = i21 ? 0 : i18; - i17 = (i21 & 1) + i17 | 0; - i16 = i29 ? i27 : i16; - } - } while (0); - i21 = HEAP32[i9 >> 2] | 0; - if (i21 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i21 + 1; - i21 = HEAPU8[i21] | 0; - } else { - i21 = ___shgetc(i8) | 0; - } - i26 = i21 + -48 | 0; - i27 = (i21 | 0) == 46; - if (!(i26 >>> 0 < 10 | i27)) { - i13 = 162; - break; - } - } - } else { - i24 = 0; - i23 = 0; - i18 = 0; - i17 = 0; - i16 = 0; - i13 = 162; - } - } while (0); - if ((i13 | 0) == 162) { - i13 = (i19 | 0) == 0; - i25 = i13 ? i24 : i25; - i22 = i13 ? i23 : i22; - } - i13 = (i20 | 0) != 0; - if (i13 ? (i21 | 32 | 0) == 101 : 0) { - i15 = _scanexp(i8, i11) | 0; - i11 = tempRet0; - do { - if ((i15 | 0) == 0 & (i11 | 0) == -2147483648) { - if (i12) { - ___shlim(i8, 0); - d31 = 0.0; - STACKTOP = i1; - return +d31; - } else { - if ((HEAP32[i10 >> 2] | 0) == 0) { - i15 = 0; - i11 = 0; - break; - } - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - i15 = 0; - i11 = 0; - break; - } - } - } while (0); - i9 = _i64Add(i15 | 0, i11 | 0, i25 | 0, i22 | 0) | 0; - i22 = tempRet0; - } else { - if ((i21 | 0) > -1 ? (HEAP32[i10 >> 2] | 0) != 0 : 0) { - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - i9 = i25; - } else { - i9 = i25; - } - } - if (!i13) { - HEAP32[(___errno_location() | 0) >> 2] = 22; - ___shlim(i8, 0); - d31 = 0.0; - STACKTOP = i1; - return +d31; - } - i8 = HEAP32[i5 >> 2] | 0; - if ((i8 | 0) == 0) { - d31 = +(i4 | 0) * 0.0; - STACKTOP = i1; - return +d31; - } - do { - if ((i9 | 0) == (i24 | 0) & (i22 | 0) == (i23 | 0) & ((i23 | 0) < 0 | (i23 | 0) == 0 & i24 >>> 0 < 10)) { - if (!(i2 >>> 0 > 30) ? (i8 >>> i2 | 0) != 0 : 0) { - break; - } - d31 = +(i4 | 0) * +(i8 >>> 0); - STACKTOP = i1; - return +d31; - } - } while (0); - i29 = (i3 | 0) / -2 | 0; - i27 = ((i29 | 0) < 0) << 31 >> 31; - if ((i22 | 0) > (i27 | 0) | (i22 | 0) == (i27 | 0) & i9 >>> 0 > i29 >>> 0) { - HEAP32[(___errno_location() | 0) >> 2] = 34; - d31 = +(i4 | 0) * 1.7976931348623157e+308 * 1.7976931348623157e+308; - STACKTOP = i1; - return +d31; - } - i29 = i3 + -106 | 0; - i27 = ((i29 | 0) < 0) << 31 >> 31; - if ((i22 | 0) < (i27 | 0) | (i22 | 0) == (i27 | 0) & i9 >>> 0 < i29 >>> 0) { - HEAP32[(___errno_location() | 0) >> 2] = 34; - d31 = +(i4 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308; - STACKTOP = i1; - return +d31; - } - if ((i18 | 0) != 0) { - if ((i18 | 0) < 9) { - i8 = i5 + (i17 << 2) | 0; - i10 = HEAP32[i8 >> 2] | 0; - do { - i10 = i10 * 10 | 0; - i18 = i18 + 1 | 0; - } while ((i18 | 0) != 9); - HEAP32[i8 >> 2] = i10; - } - i17 = i17 + 1 | 0; - } - do { - if ((i16 | 0) < 9 ? (i16 | 0) <= (i9 | 0) & (i9 | 0) < 18 : 0) { - if ((i9 | 0) == 9) { - d31 = +(i4 | 0) * +((HEAP32[i5 >> 2] | 0) >>> 0); - STACKTOP = i1; - return +d31; - } - if ((i9 | 0) < 9) { - d31 = +(i4 | 0) * +((HEAP32[i5 >> 2] | 0) >>> 0) / +(HEAP32[13440 + (8 - i9 << 2) >> 2] | 0); - STACKTOP = i1; - return +d31; - } - i10 = i2 + 27 + (Math_imul(i9, -3) | 0) | 0; - i8 = HEAP32[i5 >> 2] | 0; - if ((i10 | 0) <= 30 ? (i8 >>> i10 | 0) != 0 : 0) { - break; - } - d31 = +(i4 | 0) * +(i8 >>> 0) * +(HEAP32[13440 + (i9 + -10 << 2) >> 2] | 0); - STACKTOP = i1; - return +d31; - } - } while (0); - i8 = (i9 | 0) % 9 | 0; - if ((i8 | 0) == 0) { - i8 = 0; - i10 = 0; - } else { - i11 = (i9 | 0) > -1 ? i8 : i8 + 9 | 0; - i12 = HEAP32[13440 + (8 - i11 << 2) >> 2] | 0; - if ((i17 | 0) != 0) { - i10 = 1e9 / (i12 | 0) | 0; - i8 = 0; - i16 = 0; - i15 = 0; - while (1) { - i27 = i5 + (i15 << 2) | 0; - i13 = HEAP32[i27 >> 2] | 0; - i29 = ((i13 >>> 0) / (i12 >>> 0) | 0) + i16 | 0; - HEAP32[i27 >> 2] = i29; - i16 = Math_imul((i13 >>> 0) % (i12 >>> 0) | 0, i10) | 0; - i13 = i15 + 1 | 0; - if ((i15 | 0) == (i8 | 0) & (i29 | 0) == 0) { - i8 = i13 & 127; - i9 = i9 + -9 | 0; - } - if ((i13 | 0) == (i17 | 0)) { - break; - } else { - i15 = i13; - } - } - if ((i16 | 0) != 0) { - HEAP32[i5 + (i17 << 2) >> 2] = i16; - i17 = i17 + 1 | 0; - } - } else { - i8 = 0; - i17 = 0; - } - i10 = 0; - i9 = 9 - i11 + i9 | 0; - } - L280 : while (1) { - i11 = i5 + (i8 << 2) | 0; - if ((i9 | 0) < 18) { - do { - i13 = 0; - i11 = i17 + 127 | 0; - while (1) { - i11 = i11 & 127; - i12 = i5 + (i11 << 2) | 0; - i15 = _bitshift64Shl(HEAP32[i12 >> 2] | 0, 0, 29) | 0; - i15 = _i64Add(i15 | 0, tempRet0 | 0, i13 | 0, 0) | 0; - i13 = tempRet0; - if (i13 >>> 0 > 0 | (i13 | 0) == 0 & i15 >>> 0 > 1e9) { - i29 = ___udivdi3(i15 | 0, i13 | 0, 1e9, 0) | 0; - i15 = ___uremdi3(i15 | 0, i13 | 0, 1e9, 0) | 0; - i13 = i29; - } else { - i13 = 0; - } - HEAP32[i12 >> 2] = i15; - i12 = (i11 | 0) == (i8 | 0); - if (!((i11 | 0) != (i17 + 127 & 127 | 0) | i12)) { - i17 = (i15 | 0) == 0 ? i11 : i17; - } - if (i12) { - break; - } else { - i11 = i11 + -1 | 0; - } - } - i10 = i10 + -29 | 0; - } while ((i13 | 0) == 0); - } else { - if ((i9 | 0) != 18) { - break; - } - do { - if (!((HEAP32[i11 >> 2] | 0) >>> 0 < 9007199)) { - i9 = 18; - break L280; - } - i13 = 0; - i12 = i17 + 127 | 0; - while (1) { - i12 = i12 & 127; - i15 = i5 + (i12 << 2) | 0; - i16 = _bitshift64Shl(HEAP32[i15 >> 2] | 0, 0, 29) | 0; - i16 = _i64Add(i16 | 0, tempRet0 | 0, i13 | 0, 0) | 0; - i13 = tempRet0; - if (i13 >>> 0 > 0 | (i13 | 0) == 0 & i16 >>> 0 > 1e9) { - i29 = ___udivdi3(i16 | 0, i13 | 0, 1e9, 0) | 0; - i16 = ___uremdi3(i16 | 0, i13 | 0, 1e9, 0) | 0; - i13 = i29; - } else { - i13 = 0; - } - HEAP32[i15 >> 2] = i16; - i15 = (i12 | 0) == (i8 | 0); - if (!((i12 | 0) != (i17 + 127 & 127 | 0) | i15)) { - i17 = (i16 | 0) == 0 ? i12 : i17; - } - if (i15) { - break; - } else { - i12 = i12 + -1 | 0; - } - } - i10 = i10 + -29 | 0; - } while ((i13 | 0) == 0); - } - i8 = i8 + 127 & 127; - if ((i8 | 0) == (i17 | 0)) { - i29 = i17 + 127 & 127; - i17 = i5 + ((i17 + 126 & 127) << 2) | 0; - HEAP32[i17 >> 2] = HEAP32[i17 >> 2] | HEAP32[i5 + (i29 << 2) >> 2]; - i17 = i29; - } - HEAP32[i5 + (i8 << 2) >> 2] = i13; - i9 = i9 + 9 | 0; - } - L311 : while (1) { - i11 = i17 + 1 & 127; - i12 = i5 + ((i17 + 127 & 127) << 2) | 0; - while (1) { - i15 = (i9 | 0) == 18; - i13 = (i9 | 0) > 27 ? 9 : 1; - while (1) { - i16 = 0; - while (1) { - i18 = i16 + i8 & 127; - if ((i18 | 0) == (i17 | 0)) { - i16 = 2; - break; - } - i18 = HEAP32[i5 + (i18 << 2) >> 2] | 0; - i19 = HEAP32[13432 + (i16 << 2) >> 2] | 0; - if (i18 >>> 0 < i19 >>> 0) { - i16 = 2; - break; - } - i20 = i16 + 1 | 0; - if (i18 >>> 0 > i19 >>> 0) { - break; - } - if ((i20 | 0) < 2) { - i16 = i20; - } else { - i16 = i20; - break; - } - } - if ((i16 | 0) == 2 & i15) { - break L311; - } - i10 = i13 + i10 | 0; - if ((i8 | 0) == (i17 | 0)) { - i8 = i17; - } else { - break; - } - } - i15 = (1 << i13) + -1 | 0; - i19 = 1e9 >>> i13; - i18 = i8; - i16 = 0; - do { - i27 = i5 + (i8 << 2) | 0; - i29 = HEAP32[i27 >> 2] | 0; - i20 = (i29 >>> i13) + i16 | 0; - HEAP32[i27 >> 2] = i20; - i16 = Math_imul(i29 & i15, i19) | 0; - i20 = (i8 | 0) == (i18 | 0) & (i20 | 0) == 0; - i8 = i8 + 1 & 127; - i9 = i20 ? i9 + -9 | 0 : i9; - i18 = i20 ? i8 : i18; - } while ((i8 | 0) != (i17 | 0)); - if ((i16 | 0) == 0) { - i8 = i18; - continue; - } - if ((i11 | 0) != (i18 | 0)) { - break; - } - HEAP32[i12 >> 2] = HEAP32[i12 >> 2] | 1; - i8 = i18; - } - HEAP32[i5 + (i17 << 2) >> 2] = i16; - i8 = i18; - i17 = i11; - } - i9 = i8 & 127; - if ((i9 | 0) == (i17 | 0)) { - HEAP32[i5 + (i11 + -1 << 2) >> 2] = 0; - i17 = i11; - } - d28 = +((HEAP32[i5 + (i9 << 2) >> 2] | 0) >>> 0); - i9 = i8 + 1 & 127; - if ((i9 | 0) == (i17 | 0)) { - i17 = i17 + 1 & 127; - HEAP32[i5 + (i17 + -1 << 2) >> 2] = 0; - } - d14 = +(i4 | 0); - d30 = d14 * (d28 * 1.0e9 + +((HEAP32[i5 + (i9 << 2) >> 2] | 0) >>> 0)); - i4 = i10 + 53 | 0; - i3 = i4 - i3 | 0; - if ((i3 | 0) < (i2 | 0)) { - i2 = (i3 | 0) < 0 ? 0 : i3; - i9 = 1; - } else { - i9 = 0; - } - if ((i2 | 0) < 53) { - d33 = +_copysign(+(+_scalbn(1.0, 105 - i2 | 0)), +d30); - d32 = +_fmod(+d30, +(+_scalbn(1.0, 53 - i2 | 0))); - d28 = d33; - d31 = d32; - d30 = d33 + (d30 - d32); - } else { - d28 = 0.0; - d31 = 0.0; - } - i11 = i8 + 2 & 127; - if ((i11 | 0) != (i17 | 0)) { - i5 = HEAP32[i5 + (i11 << 2) >> 2] | 0; - do { - if (!(i5 >>> 0 < 5e8)) { - if (i5 >>> 0 > 5e8) { - d31 = d14 * .75 + d31; - break; - } - if ((i8 + 3 & 127 | 0) == (i17 | 0)) { - d31 = d14 * .5 + d31; - break; - } else { - d31 = d14 * .75 + d31; - break; - } - } else { - if ((i5 | 0) == 0 ? (i8 + 3 & 127 | 0) == (i17 | 0) : 0) { - break; - } - d31 = d14 * .25 + d31; - } - } while (0); - if ((53 - i2 | 0) > 1 ? !(+_fmod(+d31, 1.0) != 0.0) : 0) { - d31 = d31 + 1.0; - } - } - d14 = d30 + d31 - d28; - do { - if ((i4 & 2147483647 | 0) > (-2 - i7 | 0)) { - if (+Math_abs(+d14) >= 9007199254740992.0) { - i9 = (i9 | 0) != 0 & (i2 | 0) == (i3 | 0) ? 0 : i9; - i10 = i10 + 1 | 0; - d14 = d14 * .5; - } - if ((i10 + 50 | 0) <= (i6 | 0) ? !((i9 | 0) != 0 & d31 != 0.0) : 0) { - break; - } - HEAP32[(___errno_location() | 0) >> 2] = 34; - } - } while (0); - d33 = +_scalbnl(d14, i10); - STACKTOP = i1; - return +d33; - } else if ((i7 | 0) == 3) { - i2 = HEAP32[i9 >> 2] | 0; - if (i2 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i2 + 1; - i2 = HEAPU8[i2] | 0; - } else { - i2 = ___shgetc(i8) | 0; - } - if ((i2 | 0) == 40) { - i2 = 1; - } else { - if ((HEAP32[i10 >> 2] | 0) == 0) { - d33 = nan; - STACKTOP = i1; - return +d33; - } - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - d33 = nan; - STACKTOP = i1; - return +d33; - } - while (1) { - i3 = HEAP32[i9 >> 2] | 0; - if (i3 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) { - HEAP32[i9 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } else { - i3 = ___shgetc(i8) | 0; - } - if (!((i3 + -48 | 0) >>> 0 < 10 | (i3 + -65 | 0) >>> 0 < 26) ? !((i3 + -97 | 0) >>> 0 < 26 | (i3 | 0) == 95) : 0) { - break; - } - i2 = i2 + 1 | 0; - } - if ((i3 | 0) == 41) { - d33 = nan; - STACKTOP = i1; - return +d33; - } - i3 = (HEAP32[i10 >> 2] | 0) == 0; - if (!i3) { - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - } - if (i12) { - HEAP32[(___errno_location() | 0) >> 2] = 22; - ___shlim(i8, 0); - d33 = 0.0; - STACKTOP = i1; - return +d33; - } - if ((i2 | 0) == 0 | i3) { - d33 = nan; - STACKTOP = i1; - return +d33; - } - while (1) { - i2 = i2 + -1 | 0; - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - if ((i2 | 0) == 0) { - d14 = nan; - break; - } - } - STACKTOP = i1; - return +d14; - } else { - if ((HEAP32[i10 >> 2] | 0) != 0) { - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - } - HEAP32[(___errno_location() | 0) >> 2] = 22; - ___shlim(i8, 0); - d33 = 0.0; - STACKTOP = i1; - return +d33; - } - } - } while (0); - if ((i13 | 0) == 23) { - i2 = (HEAP32[i10 >> 2] | 0) == 0; - if (!i2) { - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - } - if (!(i7 >>> 0 < 4 | (i11 | 0) == 0 | i2)) { - do { - HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1; - i7 = i7 + -1 | 0; - } while (i7 >>> 0 > 3); - } - } - d33 = +(i4 | 0) * inf; - STACKTOP = i1; - return +d33; -} -function _statement(i4) { - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 160 | 0; - i8 = i2 + 120 | 0; - i24 = i2 + 96 | 0; - i15 = i2 + 72 | 0; - i25 = i2 + 48 | 0; - i20 = i2 + 24 | 0; - i21 = i2; - i19 = i4 + 4 | 0; - i6 = HEAP32[i19 >> 2] | 0; - i3 = i4 + 48 | 0; - i9 = HEAP32[i3 >> 2] | 0; - i1 = i4 + 52 | 0; - i26 = (HEAP32[i1 >> 2] | 0) + 38 | 0; - i27 = (HEAP16[i26 >> 1] | 0) + 1 << 16 >> 16; - HEAP16[i26 >> 1] = i27; - if ((i27 & 65535) > 200) { - i27 = i9 + 12 | 0; - i26 = HEAP32[(HEAP32[i27 >> 2] | 0) + 52 >> 2] | 0; - i5 = HEAP32[(HEAP32[i9 >> 2] | 0) + 64 >> 2] | 0; - if ((i5 | 0) == 0) { - i29 = 6552; - HEAP32[i8 >> 2] = 6360; - i28 = i8 + 4 | 0; - HEAP32[i28 >> 2] = 200; - i28 = i8 + 8 | 0; - HEAP32[i28 >> 2] = i29; - i28 = _luaO_pushfstring(i26, 6592, i8) | 0; - i29 = HEAP32[i27 >> 2] | 0; - _luaX_syntaxerror(i29, i28); - } - HEAP32[i8 >> 2] = i5; - i28 = _luaO_pushfstring(i26, 6568, i8) | 0; - HEAP32[i8 >> 2] = 6360; - i29 = i8 + 4 | 0; - HEAP32[i29 >> 2] = 200; - i29 = i8 + 8 | 0; - HEAP32[i29 >> 2] = i28; - i29 = _luaO_pushfstring(i26, 6592, i8) | 0; - i28 = HEAP32[i27 >> 2] | 0; - _luaX_syntaxerror(i28, i29); - } - i5 = i4 + 16 | 0; - L8 : do { - switch (HEAP32[i5 >> 2] | 0) { - case 59: - { - _luaX_next(i4); - break; - } - case 267: - { - HEAP32[i21 >> 2] = -1; - _test_then_block(i4, i21); - while (1) { - i8 = HEAP32[i5 >> 2] | 0; - if ((i8 | 0) == 260) { - i7 = 10; - break; - } else if ((i8 | 0) != 261) { - break; - } - _test_then_block(i4, i21); - } - if ((i7 | 0) == 10) { - _luaX_next(i4); - i7 = HEAP32[i3 >> 2] | 0; - HEAP8[i20 + 10 | 0] = 0; - HEAP8[i20 + 8 | 0] = HEAP8[i7 + 46 | 0] | 0; - i29 = HEAP32[(HEAP32[i7 + 12 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i20 + 4 >> 1] = HEAP32[i29 + 28 >> 2]; - HEAP16[i20 + 6 >> 1] = HEAP32[i29 + 16 >> 2]; - HEAP8[i20 + 9 | 0] = 0; - i29 = i7 + 16 | 0; - HEAP32[i20 >> 2] = HEAP32[i29 >> 2]; - HEAP32[i29 >> 2] = i20; - L16 : do { - i8 = HEAP32[i5 >> 2] | 0; - switch (i8 | 0) { - case 277: - case 286: - case 262: - case 261: - case 260: - { - break L16; - } - default: - {} - } - _statement(i4); - } while ((i8 | 0) != 274); - _leaveblock(i7); - } - _check_match(i4, 262, 267, i6); - _luaK_patchtohere(i9, HEAP32[i21 >> 2] | 0); - break; - } - case 259: - { - _luaX_next(i4); - i7 = HEAP32[i3 >> 2] | 0; - HEAP8[i20 + 10 | 0] = 0; - HEAP8[i20 + 8 | 0] = HEAP8[i7 + 46 | 0] | 0; - i29 = HEAP32[(HEAP32[i7 + 12 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i20 + 4 >> 1] = HEAP32[i29 + 28 >> 2]; - HEAP16[i20 + 6 >> 1] = HEAP32[i29 + 16 >> 2]; - HEAP8[i20 + 9 | 0] = 0; - i29 = i7 + 16 | 0; - HEAP32[i20 >> 2] = HEAP32[i29 >> 2]; - HEAP32[i29 >> 2] = i20; - L22 : do { - i8 = HEAP32[i5 >> 2] | 0; - switch (i8 | 0) { - case 277: - case 286: - case 262: - case 261: - case 260: - { - break L22; - } - default: - {} - } - _statement(i4); - } while ((i8 | 0) != 274); - _leaveblock(i7); - _check_match(i4, 262, 259, i6); - break; - } - case 269: - { - _luaX_next(i4); - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) == 265) { - _luaX_next(i4); - i7 = HEAP32[i3 >> 2] | 0; - if ((HEAP32[i5 >> 2] | 0) == 288) { - i29 = HEAP32[i4 + 24 >> 2] | 0; - _luaX_next(i4); - _new_localvar(i4, i29); - i29 = HEAP32[i3 >> 2] | 0; - i27 = i29 + 46 | 0; - i28 = (HEAPU8[i27] | 0) + 1 | 0; - HEAP8[i27] = i28; - HEAP32[(HEAP32[(HEAP32[i29 >> 2] | 0) + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i29 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((i28 & 255) + -1 + (HEAP32[i29 + 40 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i29 + 20 >> 2]; - _body(i4, i25, 0, HEAP32[i19 >> 2] | 0); - HEAP32[(HEAP32[(HEAP32[i7 >> 2] | 0) + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i7 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((HEAP32[i7 + 40 >> 2] | 0) + (HEAP32[i25 + 8 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i7 + 20 >> 2]; - break L8; - } else { - _error_expected(i4, 288); - } - } - if ((i6 | 0) != 288) { - _error_expected(i4, 288); - } - i7 = i4 + 24 | 0; - i6 = 1; - while (1) { - i8 = HEAP32[i7 >> 2] | 0; - _luaX_next(i4); - _new_localvar(i4, i8); - i8 = HEAP32[i5 >> 2] | 0; - if ((i8 | 0) == 61) { - i7 = 81; - break; - } else if ((i8 | 0) != 44) { - i7 = 83; - break; - } - _luaX_next(i4); - if ((HEAP32[i5 >> 2] | 0) == 288) { - i6 = i6 + 1 | 0; - } else { - i7 = 78; - break; - } - } - do { - if ((i7 | 0) == 78) { - _error_expected(i4, 288); - } else if ((i7 | 0) == 81) { - _luaX_next(i4); - _subexpr(i4, i15, 0) | 0; - if ((HEAP32[i5 >> 2] | 0) == 44) { - i8 = 1; - do { - _luaX_next(i4); - _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i15); - _subexpr(i4, i15, 0) | 0; - i8 = i8 + 1 | 0; - } while ((HEAP32[i5 >> 2] | 0) == 44); - } else { - i8 = 1; - } - i5 = HEAP32[i15 >> 2] | 0; - i4 = HEAP32[i3 >> 2] | 0; - i8 = i6 - i8 | 0; - if ((i5 | 0) == 0) { - i17 = i8; - i18 = i4; - i7 = 88; - break; - } else if (!((i5 | 0) == 13 | (i5 | 0) == 12)) { - _luaK_exp2nextreg(i4, i15); - i17 = i8; - i18 = i4; - i7 = 88; - break; - } - i5 = i8 + 1 | 0; - i5 = (i5 | 0) < 0 ? 0 : i5; - _luaK_setreturns(i4, i15, i5); - if ((i5 | 0) > 1) { - _luaK_reserveregs(i4, i5 + -1 | 0); - } - } else if ((i7 | 0) == 83) { - HEAP32[i15 >> 2] = 0; - i17 = i6; - i18 = HEAP32[i3 >> 2] | 0; - i7 = 88; - } - } while (0); - if ((i7 | 0) == 88 ? (i17 | 0) > 0 : 0) { - i29 = HEAPU8[i18 + 48 | 0] | 0; - _luaK_reserveregs(i18, i17); - _luaK_nil(i18, i29, i17); - } - i5 = HEAP32[i3 >> 2] | 0; - i4 = i5 + 46 | 0; - i7 = (HEAPU8[i4] | 0) + i6 | 0; - HEAP8[i4] = i7; - if ((i6 | 0) != 0 ? (i11 = i5 + 20 | 0, i14 = i5 + 40 | 0, i12 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0, i13 = HEAP32[HEAP32[(HEAP32[i5 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0, HEAP32[i12 + ((HEAP16[i13 + ((i7 & 255) - i6 + (HEAP32[i14 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i11 >> 2], i16 = i6 + -1 | 0, (i16 | 0) != 0) : 0) { - do { - HEAP32[i12 + ((HEAP16[i13 + ((HEAPU8[i4] | 0) - i16 + (HEAP32[i14 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i11 >> 2]; - i16 = i16 + -1 | 0; - } while ((i16 | 0) != 0); - } - break; - } - case 264: - { - HEAP8[i24 + 10 | 0] = 1; - HEAP8[i24 + 8 | 0] = HEAP8[i9 + 46 | 0] | 0; - i29 = HEAP32[(HEAP32[i9 + 12 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i24 + 4 >> 1] = HEAP32[i29 + 28 >> 2]; - HEAP16[i24 + 6 >> 1] = HEAP32[i29 + 16 >> 2]; - HEAP8[i24 + 9 | 0] = 0; - i29 = i9 + 16 | 0; - HEAP32[i24 >> 2] = HEAP32[i29 >> 2]; - HEAP32[i29 >> 2] = i24; - _luaX_next(i4); - if ((HEAP32[i5 >> 2] | 0) != 288) { - _error_expected(i4, 288); - } - i14 = i4 + 24 | 0; - i13 = HEAP32[i14 >> 2] | 0; - _luaX_next(i4); - i11 = HEAP32[i5 >> 2] | 0; - if ((i11 | 0) == 268 | (i11 | 0) == 44) { - i12 = HEAP32[i3 >> 2] | 0; - i11 = HEAPU8[i12 + 48 | 0] | 0; - _new_localvar(i4, _luaX_newstring(i4, 6744, 15) | 0); - _new_localvar(i4, _luaX_newstring(i4, 6760, 11) | 0); - _new_localvar(i4, _luaX_newstring(i4, 6776, 13) | 0); - _new_localvar(i4, i13); - i13 = HEAP32[i5 >> 2] | 0; - do { - if ((i13 | 0) == 44) { - i15 = 4; - while (1) { - _luaX_next(i4); - if ((HEAP32[i5 >> 2] | 0) != 288) { - i7 = 40; - break; - } - i13 = HEAP32[i14 >> 2] | 0; - _luaX_next(i4); - _new_localvar(i4, i13); - i13 = HEAP32[i5 >> 2] | 0; - if ((i13 | 0) == 44) { - i15 = i15 + 1 | 0; - } else { - i7 = 42; - break; - } - } - if ((i7 | 0) == 40) { - _error_expected(i4, 288); - } else if ((i7 | 0) == 42) { - i22 = i13; - i10 = i15 + -2 | 0; - break; - } - } else { - i22 = i13; - i10 = 1; - } - } while (0); - if ((i22 | 0) != 268) { - _error_expected(i4, 268); - } - _luaX_next(i4); - i13 = HEAP32[i19 >> 2] | 0; - _subexpr(i4, i8, 0) | 0; - if ((HEAP32[i5 >> 2] | 0) == 44) { - i14 = 1; - do { - _luaX_next(i4); - _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i8); - _subexpr(i4, i8, 0) | 0; - i14 = i14 + 1 | 0; - } while ((HEAP32[i5 >> 2] | 0) == 44); - } else { - i14 = 1; - } - i5 = HEAP32[i3 >> 2] | 0; - i14 = 3 - i14 | 0; - i15 = HEAP32[i8 >> 2] | 0; - if ((i15 | 0) == 0) { - i7 = 51; - } else if ((i15 | 0) == 13 | (i15 | 0) == 12) { - i15 = i14 + 1 | 0; - i15 = (i15 | 0) < 0 ? 0 : i15; - _luaK_setreturns(i5, i8, i15); - if ((i15 | 0) > 1) { - _luaK_reserveregs(i5, i15 + -1 | 0); - } - } else { - _luaK_exp2nextreg(i5, i8); - i7 = 51; - } - if ((i7 | 0) == 51 ? (i14 | 0) > 0 : 0) { - i29 = HEAPU8[i5 + 48 | 0] | 0; - _luaK_reserveregs(i5, i14); - _luaK_nil(i5, i29, i14); - } - _luaK_checkstack(i12, 3); - _forbody(i4, i11, i13, i10, 0); - } else if ((i11 | 0) == 61) { - i11 = HEAP32[i3 >> 2] | 0; - i7 = i11 + 48 | 0; - i10 = HEAPU8[i7] | 0; - _new_localvar(i4, _luaX_newstring(i4, 6792, 11) | 0); - _new_localvar(i4, _luaX_newstring(i4, 6808, 11) | 0); - _new_localvar(i4, _luaX_newstring(i4, 6824, 10) | 0); - _new_localvar(i4, i13); - if ((HEAP32[i5 >> 2] | 0) != 61) { - _error_expected(i4, 61); - } - _luaX_next(i4); - _subexpr(i4, i8, 0) | 0; - _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i8); - if ((HEAP32[i5 >> 2] | 0) != 44) { - _error_expected(i4, 44); - } - _luaX_next(i4); - _subexpr(i4, i8, 0) | 0; - _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i8); - if ((HEAP32[i5 >> 2] | 0) == 44) { - _luaX_next(i4); - _subexpr(i4, i8, 0) | 0; - _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i8); - } else { - i29 = HEAPU8[i7] | 0; - _luaK_codek(i11, i29, _luaK_numberK(i11, 1.0) | 0) | 0; - _luaK_reserveregs(i11, 1); - } - _forbody(i4, i10, i6, 1, 1); - } else { - _luaX_syntaxerror(i4, 6720); - } - _check_match(i4, 262, 264, i6); - _leaveblock(i9); - break; - } - case 265: - { - _luaX_next(i4); - if ((HEAP32[i5 >> 2] | 0) != 288) { - _error_expected(i4, 288); - } - i8 = HEAP32[i4 + 24 >> 2] | 0; - _luaX_next(i4); - i9 = HEAP32[i3 >> 2] | 0; - if ((_singlevaraux(i9, i8, i20, 1) | 0) == 0) { - _singlevaraux(i9, HEAP32[i4 + 72 >> 2] | 0, i20, 1) | 0; - i29 = _luaK_stringK(HEAP32[i3 >> 2] | 0, i8) | 0; - HEAP32[i25 + 16 >> 2] = -1; - HEAP32[i25 + 20 >> 2] = -1; - HEAP32[i25 >> 2] = 4; - HEAP32[i25 + 8 >> 2] = i29; - _luaK_indexed(i9, i20, i25); - } - while (1) { - i8 = HEAP32[i5 >> 2] | 0; - if ((i8 | 0) == 58) { - i7 = 70; - break; - } else if ((i8 | 0) != 46) { - i5 = 0; - break; - } - _fieldsel(i4, i20); - } - if ((i7 | 0) == 70) { - _fieldsel(i4, i20); - i5 = 1; - } - _body(i4, i21, i5, i6); - _luaK_storevar(HEAP32[i3 >> 2] | 0, i20, i21); - _luaK_fixline(HEAP32[i3 >> 2] | 0, i6); - break; - } - case 278: - { - _luaX_next(i4); - i7 = _luaK_getlabel(i9) | 0; - _subexpr(i4, i20, 0) | 0; - if ((HEAP32[i20 >> 2] | 0) == 1) { - HEAP32[i20 >> 2] = 3; - } - _luaK_goiftrue(HEAP32[i3 >> 2] | 0, i20); - i8 = HEAP32[i20 + 20 >> 2] | 0; - HEAP8[i21 + 10 | 0] = 1; - HEAP8[i21 + 8 | 0] = HEAP8[i9 + 46 | 0] | 0; - i29 = HEAP32[(HEAP32[i9 + 12 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i21 + 4 >> 1] = HEAP32[i29 + 28 >> 2]; - HEAP16[i21 + 6 >> 1] = HEAP32[i29 + 16 >> 2]; - HEAP8[i21 + 9 | 0] = 0; - i29 = i9 + 16 | 0; - HEAP32[i21 >> 2] = HEAP32[i29 >> 2]; - HEAP32[i29 >> 2] = i21; - if ((HEAP32[i5 >> 2] | 0) != 259) { - _error_expected(i4, 259); - } - _luaX_next(i4); - i10 = HEAP32[i3 >> 2] | 0; - HEAP8[i20 + 10 | 0] = 0; - HEAP8[i20 + 8 | 0] = HEAP8[i10 + 46 | 0] | 0; - i29 = HEAP32[(HEAP32[i10 + 12 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i20 + 4 >> 1] = HEAP32[i29 + 28 >> 2]; - HEAP16[i20 + 6 >> 1] = HEAP32[i29 + 16 >> 2]; - HEAP8[i20 + 9 | 0] = 0; - i29 = i10 + 16 | 0; - HEAP32[i20 >> 2] = HEAP32[i29 >> 2]; - HEAP32[i29 >> 2] = i20; - L119 : do { - i11 = HEAP32[i5 >> 2] | 0; - switch (i11 | 0) { - case 277: - case 286: - case 262: - case 261: - case 260: - { - break L119; - } - default: - {} - } - _statement(i4); - } while ((i11 | 0) != 274); - _leaveblock(i10); - _luaK_patchlist(i9, _luaK_jump(i9) | 0, i7); - _check_match(i4, 262, 278, i6); - _leaveblock(i9); - _luaK_patchtohere(i9, i8); - break; - } - case 273: - { - i7 = _luaK_getlabel(i9) | 0; - HEAP8[i24 + 10 | 0] = 1; - i28 = i9 + 46 | 0; - HEAP8[i24 + 8 | 0] = HEAP8[i28] | 0; - i11 = i9 + 12 | 0; - i29 = HEAP32[(HEAP32[i11 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i24 + 4 >> 1] = HEAP32[i29 + 28 >> 2]; - HEAP16[i24 + 6 >> 1] = HEAP32[i29 + 16 >> 2]; - HEAP8[i24 + 9 | 0] = 0; - i29 = i9 + 16 | 0; - HEAP32[i24 >> 2] = HEAP32[i29 >> 2]; - HEAP32[i29 >> 2] = i24; - HEAP8[i15 + 10 | 0] = 0; - i10 = i15 + 8 | 0; - HEAP8[i10] = HEAP8[i28] | 0; - i11 = HEAP32[(HEAP32[i11 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i15 + 4 >> 1] = HEAP32[i11 + 28 >> 2]; - HEAP16[i15 + 6 >> 1] = HEAP32[i11 + 16 >> 2]; - i11 = i15 + 9 | 0; - HEAP8[i11] = 0; - HEAP32[i15 >> 2] = HEAP32[i29 >> 2]; - HEAP32[i29 >> 2] = i15; - _luaX_next(i4); - L124 : do { - i12 = HEAP32[i5 >> 2] | 0; - switch (i12 | 0) { - case 277: - case 286: - case 262: - case 261: - case 260: - { - break L124; - } - default: - {} - } - _statement(i4); - } while ((i12 | 0) != 274); - _check_match(i4, 277, 273, i6); - _subexpr(i4, i8, 0) | 0; - if ((HEAP32[i8 >> 2] | 0) == 1) { - HEAP32[i8 >> 2] = 3; - } - _luaK_goiftrue(HEAP32[i3 >> 2] | 0, i8); - i4 = HEAP32[i8 + 20 >> 2] | 0; - if ((HEAP8[i11] | 0) != 0) { - _luaK_patchclose(i9, i4, HEAPU8[i10] | 0); - } - _leaveblock(i9); - _luaK_patchlist(i9, i4, i7); - _leaveblock(i9); - break; - } - case 285: - { - _luaX_next(i4); - if ((HEAP32[i5 >> 2] | 0) != 288) { - _error_expected(i4, 288); - } - i10 = HEAP32[i4 + 24 >> 2] | 0; - _luaX_next(i4); - i15 = HEAP32[i3 >> 2] | 0; - i9 = i4 + 64 | 0; - i14 = HEAP32[i9 >> 2] | 0; - i12 = i14 + 24 | 0; - i11 = i15 + 16 | 0; - i16 = HEAP16[(HEAP32[i11 >> 2] | 0) + 4 >> 1] | 0; - i13 = i14 + 28 | 0; - L138 : do { - if ((i16 | 0) < (HEAP32[i13 >> 2] | 0)) { - while (1) { - i17 = i16 + 1 | 0; - if ((_luaS_eqstr(i10, HEAP32[(HEAP32[i12 >> 2] | 0) + (i16 << 4) >> 2] | 0) | 0) != 0) { - break; - } - if ((i17 | 0) < (HEAP32[i13 >> 2] | 0)) { - i16 = i17; - } else { - break L138; - } - } - i28 = i15 + 12 | 0; - i29 = HEAP32[(HEAP32[i28 >> 2] | 0) + 52 >> 2] | 0; - i27 = HEAP32[(HEAP32[i12 >> 2] | 0) + (i16 << 4) + 8 >> 2] | 0; - HEAP32[i8 >> 2] = i10 + 16; - HEAP32[i8 + 4 >> 2] = i27; - i29 = _luaO_pushfstring(i29, 6680, i8) | 0; - _semerror(HEAP32[i28 >> 2] | 0, i29); - } - } while (0); - if ((HEAP32[i5 >> 2] | 0) != 285) { - _error_expected(i4, 285); - } - _luaX_next(i4); - i8 = HEAP32[i15 + 20 >> 2] | 0; - i15 = HEAP32[i13 >> 2] | 0; - i14 = i14 + 32 | 0; - if ((i15 | 0) < (HEAP32[i14 >> 2] | 0)) { - i14 = HEAP32[i12 >> 2] | 0; - } else { - i14 = _luaM_growaux_(HEAP32[i1 >> 2] | 0, HEAP32[i12 >> 2] | 0, i14, 16, 32767, 6312) | 0; - HEAP32[i12 >> 2] = i14; - } - HEAP32[i14 + (i15 << 4) >> 2] = i10; - i29 = HEAP32[i12 >> 2] | 0; - HEAP32[i29 + (i15 << 4) + 8 >> 2] = i6; - HEAP8[i29 + (i15 << 4) + 12 | 0] = HEAP8[(HEAP32[i3 >> 2] | 0) + 46 | 0] | 0; - HEAP32[(HEAP32[i12 >> 2] | 0) + (i15 << 4) + 4 >> 2] = i8; - HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + 1; - L152 : while (1) { - switch (HEAP32[i5 >> 2] | 0) { - case 285: - case 59: - { - break; - } - case 286: - case 262: - case 261: - case 260: - { - i7 = 108; - break L152; - } - default: - { - break L152; - } - } - _statement(i4); - } - if ((i7 | 0) == 108) { - HEAP8[(HEAP32[i12 >> 2] | 0) + (i15 << 4) + 12 | 0] = HEAP8[(HEAP32[i11 >> 2] | 0) + 8 | 0] | 0; - } - i5 = (HEAP32[i12 >> 2] | 0) + (i15 << 4) | 0; - i8 = HEAP32[i9 >> 2] | 0; - i7 = HEAP16[(HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] | 0) + 6 >> 1] | 0; - i6 = i8 + 16 | 0; - if ((i7 | 0) < (HEAP32[i6 >> 2] | 0)) { - i8 = i8 + 12 | 0; - do { - while (1) { - if ((_luaS_eqstr(HEAP32[(HEAP32[i8 >> 2] | 0) + (i7 << 4) >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0) == 0) { - break; - } - _closegoto(i4, i7, i5); - if ((i7 | 0) >= (HEAP32[i6 >> 2] | 0)) { - break L8; - } - } - i7 = i7 + 1 | 0; - } while ((i7 | 0) < (HEAP32[i6 >> 2] | 0)); - } - break; - } - case 274: - { - _luaX_next(i4); - i6 = HEAP32[i3 >> 2] | 0; - L166 : do { - switch (HEAP32[i5 >> 2] | 0) { - case 59: - case 277: - case 286: - case 262: - case 261: - case 260: - { - i8 = 0; - i7 = 0; - break; - } - default: - { - _subexpr(i4, i24, 0) | 0; - if ((HEAP32[i5 >> 2] | 0) == 44) { - i7 = 1; - do { - _luaX_next(i4); - _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i24); - _subexpr(i4, i24, 0) | 0; - i7 = i7 + 1 | 0; - } while ((HEAP32[i5 >> 2] | 0) == 44); - } else { - i7 = 1; - } - if (!(((HEAP32[i24 >> 2] | 0) + -12 | 0) >>> 0 < 2)) { - if ((i7 | 0) == 1) { - i8 = _luaK_exp2anyreg(i6, i24) | 0; - i7 = 1; - break L166; - } else { - _luaK_exp2nextreg(i6, i24); - i8 = HEAPU8[i6 + 46 | 0] | 0; - break L166; - } - } else { - _luaK_setreturns(i6, i24, -1); - if ((HEAP32[i24 >> 2] | 0) == 12 & (i7 | 0) == 1) { - i29 = (HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i24 + 8 >> 2] << 2) | 0; - HEAP32[i29 >> 2] = HEAP32[i29 >> 2] & -64 | 30; - } - i8 = HEAPU8[i6 + 46 | 0] | 0; - i7 = -1; - break L166; - } - } - } - } while (0); - _luaK_ret(i6, i8, i7); - if ((HEAP32[i5 >> 2] | 0) == 59) { - _luaX_next(i4); - } - break; - } - case 266: - case 258: - { - i6 = _luaK_jump(i9) | 0; - i7 = HEAP32[i19 >> 2] | 0; - i29 = (HEAP32[i5 >> 2] | 0) == 266; - _luaX_next(i4); - do { - if (i29) { - if ((HEAP32[i5 >> 2] | 0) == 288) { - i23 = HEAP32[i4 + 24 >> 2] | 0; - _luaX_next(i4); - break; - } else { - _error_expected(i4, 288); - } - } else { - i23 = _luaS_new(HEAP32[i1 >> 2] | 0, 6304) | 0; - } - } while (0); - i10 = HEAP32[i4 + 64 >> 2] | 0; - i9 = i10 + 12 | 0; - i5 = i10 + 16 | 0; - i8 = HEAP32[i5 >> 2] | 0; - i10 = i10 + 20 | 0; - if ((i8 | 0) < (HEAP32[i10 >> 2] | 0)) { - i10 = HEAP32[i9 >> 2] | 0; - } else { - i10 = _luaM_growaux_(HEAP32[i1 >> 2] | 0, HEAP32[i9 >> 2] | 0, i10, 16, 32767, 6312) | 0; - HEAP32[i9 >> 2] = i10; - } - HEAP32[i10 + (i8 << 4) >> 2] = i23; - i29 = HEAP32[i9 >> 2] | 0; - HEAP32[i29 + (i8 << 4) + 8 >> 2] = i7; - HEAP8[i29 + (i8 << 4) + 12 | 0] = HEAP8[(HEAP32[i3 >> 2] | 0) + 46 | 0] | 0; - HEAP32[(HEAP32[i9 >> 2] | 0) + (i8 << 4) + 4 >> 2] = i6; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 1; - _findlabel(i4, i8) | 0; - break; - } - default: - { - i6 = i8 + 8 | 0; - _suffixedexp(i4, i6); - i29 = HEAP32[i5 >> 2] | 0; - if ((i29 | 0) == 44 | (i29 | 0) == 61) { - HEAP32[i8 >> 2] = 0; - _assignment(i4, i8, 1); - break L8; - } - if ((HEAP32[i6 >> 2] | 0) == 12) { - i29 = (HEAP32[(HEAP32[i9 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i8 + 16 >> 2] << 2) | 0; - HEAP32[i29 >> 2] = HEAP32[i29 >> 2] & -8372225 | 16384; - break L8; - } else { - _luaX_syntaxerror(i4, 6344); - } - } - } - } while (0); - i29 = HEAP32[i3 >> 2] | 0; - HEAP8[i29 + 48 | 0] = HEAP8[i29 + 46 | 0] | 0; - i29 = (HEAP32[i1 >> 2] | 0) + 38 | 0; - HEAP16[i29 >> 1] = (HEAP16[i29 >> 1] | 0) + -1 << 16 >> 16; - STACKTOP = i2; - return; -} -function _match(i1, i12, i11) { - i1 = i1 | 0; - i12 = i12 | 0; - i11 = i11 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i8 = i2; - i32 = HEAP32[i1 >> 2] | 0; - HEAP32[i1 >> 2] = i32 + -1; - if ((i32 | 0) == 0) { - _luaL_error(HEAP32[i1 + 16 >> 2] | 0, 7272, i8) | 0; - } - i14 = i1 + 12 | 0; - i22 = HEAP32[i14 >> 2] | 0; - L4 : do { - if ((i22 | 0) != (i11 | 0)) { - i3 = i1 + 8 | 0; - i9 = i1 + 16 | 0; - i16 = i1 + 4 | 0; - i10 = i1 + 20 | 0; - L6 : while (1) { - i19 = i12 + 1 | 0; - i20 = i12 + -1 | 0; - L8 : while (1) { - i23 = HEAP8[i11] | 0; - i21 = i23 << 24 >> 24; - L10 : do { - if ((i21 | 0) == 36) { - i7 = i11 + 1 | 0; - if ((i7 | 0) == (i22 | 0)) { - i7 = 23; - break L6; - } else { - i22 = i7; - i21 = i7; - i7 = 89; - } - } else if ((i21 | 0) == 37) { - i21 = i11 + 1 | 0; - i23 = HEAP8[i21] | 0; - switch (i23 << 24 >> 24 | 0) { - case 57: - case 56: - case 55: - case 54: - case 53: - case 52: - case 51: - case 50: - case 49: - case 48: - { - i7 = 69; - break L8; - } - case 98: - { - i7 = 25; - break L8; - } - case 102: - { - break; - } - default: - { - if ((i21 | 0) == (i22 | 0)) { - _luaL_error(HEAP32[i9 >> 2] | 0, 7368, i8) | 0; - } - i22 = i11 + 2 | 0; - i7 = 89; - break L10; - } - } - i22 = i11 + 2 | 0; - if ((HEAP8[i22] | 0) == 91) { - i21 = 91; - } else { - _luaL_error(HEAP32[i9 >> 2] | 0, 7296, i8) | 0; - i21 = HEAP8[i22] | 0; - } - i23 = i11 + 3 | 0; - i21 = i21 << 24 >> 24; - if ((i21 | 0) == 91) { - i21 = (HEAP8[i23] | 0) == 94 ? i11 + 4 | 0 : i23; - while (1) { - if ((i21 | 0) == (HEAP32[i14 >> 2] | 0)) { - _luaL_error(HEAP32[i9 >> 2] | 0, 7408, i8) | 0; - } - i11 = i21 + 1 | 0; - if ((HEAP8[i21] | 0) == 37) { - i11 = i11 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0 ? i21 + 2 | 0 : i11; - } - if ((HEAP8[i11] | 0) == 93) { - break; - } else { - i21 = i11; - } - } - i11 = i11 + 1 | 0; - } else if ((i21 | 0) == 37) { - if ((i23 | 0) == (HEAP32[i14 >> 2] | 0)) { - _luaL_error(HEAP32[i9 >> 2] | 0, 7368, i8) | 0; - } - i11 = i11 + 4 | 0; - } else { - i11 = i23; - } - if ((i12 | 0) == (HEAP32[i16 >> 2] | 0)) { - i25 = 0; - } else { - i25 = HEAP8[i20] | 0; - } - i24 = i25 & 255; - i21 = i11 + -1 | 0; - i26 = (HEAP8[i23] | 0) == 94; - i28 = i26 ? i23 : i22; - i27 = i26 & 1; - i26 = i27 ^ 1; - i30 = i28 + 1 | 0; - L41 : do { - if (i30 >>> 0 < i21 >>> 0) { - while (1) { - i32 = HEAP8[i30] | 0; - i29 = i28 + 2 | 0; - i31 = HEAP8[i29] | 0; - do { - if (i32 << 24 >> 24 == 37) { - if ((_match_class(i24, i31 & 255) | 0) == 0) { - i28 = i29; - } else { - break L41; - } - } else { - if (i31 << 24 >> 24 == 45 ? (i18 = i28 + 3 | 0, i18 >>> 0 < i21 >>> 0) : 0) { - if ((i32 & 255) > (i25 & 255)) { - i28 = i18; - break; - } - if ((HEAPU8[i18] | 0) < (i25 & 255)) { - i28 = i18; - break; - } else { - break L41; - } - } - if (i32 << 24 >> 24 == i25 << 24 >> 24) { - break L41; - } else { - i28 = i30; - } - } - } while (0); - i30 = i28 + 1 | 0; - if (!(i30 >>> 0 < i21 >>> 0)) { - i26 = i27; - break; - } - } - } else { - i26 = i27; - } - } while (0); - if ((i26 | 0) != 0) { - i12 = 0; - break L4; - } - i24 = HEAP8[i12] | 0; - i25 = i24 & 255; - i27 = (HEAP8[i23] | 0) == 94; - i26 = i27 ? i23 : i22; - i22 = i27 & 1; - i23 = i22 ^ 1; - i30 = i26 + 1 | 0; - L55 : do { - if (i30 >>> 0 < i21 >>> 0) { - do { - i29 = HEAP8[i30] | 0; - i28 = i26 + 2 | 0; - i27 = HEAP8[i28] | 0; - do { - if (i29 << 24 >> 24 == 37) { - if ((_match_class(i25, i27 & 255) | 0) == 0) { - i26 = i28; - } else { - i22 = i23; - break L55; - } - } else { - if (i27 << 24 >> 24 == 45 ? (i17 = i26 + 3 | 0, i17 >>> 0 < i21 >>> 0) : 0) { - if ((i29 & 255) > (i24 & 255)) { - i26 = i17; - break; - } - if ((HEAPU8[i17] | 0) < (i24 & 255)) { - i26 = i17; - break; - } else { - i22 = i23; - break L55; - } - } - if (i29 << 24 >> 24 == i24 << 24 >> 24) { - i22 = i23; - break L55; - } else { - i26 = i30; - } - } - } while (0); - i30 = i26 + 1 | 0; - } while (i30 >>> 0 < i21 >>> 0); - } - } while (0); - if ((i22 | 0) == 0) { - i12 = 0; - break L4; - } - } else if ((i21 | 0) == 40) { - i7 = 7; - break L6; - } else if ((i21 | 0) != 41) { - i21 = i11 + 1 | 0; - if (i23 << 24 >> 24 == 91) { - i7 = (HEAP8[i21] | 0) == 94 ? i11 + 2 | 0 : i21; - while (1) { - if ((i7 | 0) == (i22 | 0)) { - _luaL_error(HEAP32[i9 >> 2] | 0, 7408, i8) | 0; - } - i22 = i7 + 1 | 0; - if ((HEAP8[i7] | 0) == 37) { - i7 = i22 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0 ? i7 + 2 | 0 : i22; - } else { - i7 = i22; - } - if ((HEAP8[i7] | 0) == 93) { - break; - } - i22 = HEAP32[i14 >> 2] | 0; - } - i22 = i7 + 1 | 0; - i7 = 89; - } else { - i22 = i21; - i7 = 89; - } - } else { - i7 = 16; - break L6; - } - } while (0); - L80 : do { - if ((i7 | 0) == 89) { - i7 = 0; - do { - if ((HEAP32[i3 >> 2] | 0) >>> 0 > i12 >>> 0) { - i23 = HEAP8[i12] | 0; - i24 = i23 & 255; - i26 = HEAP8[i11] | 0; - i25 = i26 << 24 >> 24; - L85 : do { - if ((i25 | 0) == 46) { - i23 = HEAP8[i22] | 0; - } else if ((i25 | 0) == 37) { - i25 = _match_class(i24, HEAPU8[i21] | 0) | 0; - i7 = 104; - } else if ((i25 | 0) == 91) { - i7 = i22 + -1 | 0; - i25 = (HEAP8[i21] | 0) == 94; - i27 = i25 ? i21 : i11; - i26 = i25 & 1; - i25 = i26 ^ 1; - i30 = i27 + 1 | 0; - if (i30 >>> 0 < i7 >>> 0) { - while (1) { - i31 = HEAP8[i30] | 0; - i29 = i27 + 2 | 0; - i28 = HEAP8[i29] | 0; - do { - if (i31 << 24 >> 24 == 37) { - if ((_match_class(i24, i28 & 255) | 0) == 0) { - i27 = i29; - } else { - i7 = 104; - break L85; - } - } else { - if (i28 << 24 >> 24 == 45 ? (i13 = i27 + 3 | 0, i13 >>> 0 < i7 >>> 0) : 0) { - if ((i31 & 255) > (i23 & 255)) { - i27 = i13; - break; - } - if ((HEAPU8[i13] | 0) < (i23 & 255)) { - i27 = i13; - break; - } else { - i7 = 104; - break L85; - } - } - if (i31 << 24 >> 24 == i23 << 24 >> 24) { - i7 = 104; - break L85; - } else { - i27 = i30; - } - } - } while (0); - i30 = i27 + 1 | 0; - if (!(i30 >>> 0 < i7 >>> 0)) { - i25 = i26; - i7 = 104; - break; - } - } - } else { - i25 = i26; - i7 = 104; - } - } else { - i25 = i26 << 24 >> 24 == i23 << 24 >> 24 | 0; - i7 = 104; - } - } while (0); - if ((i7 | 0) == 104) { - i7 = 0; - i23 = HEAP8[i22] | 0; - if ((i25 | 0) == 0) { - break; - } - } - i23 = i23 << 24 >> 24; - if ((i23 | 0) == 45) { - i7 = 109; - break L6; - } else if ((i23 | 0) == 42) { - i7 = 112; - break L6; - } else if ((i23 | 0) == 43) { - break L6; - } else if ((i23 | 0) != 63) { - i12 = i19; - i11 = i22; - break L8; - } - i11 = i22 + 1 | 0; - i21 = _match(i1, i19, i11) | 0; - if ((i21 | 0) == 0) { - break L80; - } else { - i12 = i21; - break L4; - } - } else { - i23 = HEAP8[i22] | 0; - } - } while (0); - if (!(i23 << 24 >> 24 == 45 | i23 << 24 >> 24 == 63 | i23 << 24 >> 24 == 42)) { - i12 = 0; - break L4; - } - i11 = i22 + 1 | 0; - } - } while (0); - i22 = HEAP32[i14 >> 2] | 0; - if ((i11 | 0) == (i22 | 0)) { - break L4; - } - } - if ((i7 | 0) == 25) { - i7 = 0; - i21 = i11 + 2 | 0; - if (!((i22 + -1 | 0) >>> 0 > i21 >>> 0)) { - _luaL_error(HEAP32[i9 >> 2] | 0, 7440, i8) | 0; - } - i20 = HEAP8[i12] | 0; - if (!(i20 << 24 >> 24 == (HEAP8[i21] | 0))) { - i12 = 0; - break L4; - } - i21 = HEAP8[i11 + 3 | 0] | 0; - i22 = HEAP32[i3 >> 2] | 0; - if (i19 >>> 0 < i22 >>> 0) { - i24 = 1; - } else { - i12 = 0; - break L4; - } - while (1) { - i23 = HEAP8[i19] | 0; - if (i23 << 24 >> 24 == i21 << 24 >> 24) { - i24 = i24 + -1 | 0; - if ((i24 | 0) == 0) { - break; - } - } else { - i24 = (i23 << 24 >> 24 == i20 << 24 >> 24) + i24 | 0; - } - i12 = i19 + 1 | 0; - if (i12 >>> 0 < i22 >>> 0) { - i32 = i19; - i19 = i12; - i12 = i32; - } else { - i12 = 0; - break L4; - } - } - i12 = i12 + 2 | 0; - i11 = i11 + 4 | 0; - } else if ((i7 | 0) == 69) { - i7 = 0; - i20 = i23 & 255; - i19 = i20 + -49 | 0; - if (((i19 | 0) >= 0 ? (i19 | 0) < (HEAP32[i10 >> 2] | 0) : 0) ? (i15 = HEAP32[i1 + (i19 << 3) + 28 >> 2] | 0, !((i15 | 0) == -1)) : 0) { - i20 = i15; - } else { - i19 = HEAP32[i9 >> 2] | 0; - HEAP32[i8 >> 2] = i20 + -48; - i20 = _luaL_error(i19, 7336, i8) | 0; - i19 = i20; - i20 = HEAP32[i1 + (i20 << 3) + 28 >> 2] | 0; - } - if (((HEAP32[i3 >> 2] | 0) - i12 | 0) >>> 0 < i20 >>> 0) { - i12 = 0; - break L4; - } - if ((_memcmp(HEAP32[i1 + (i19 << 3) + 24 >> 2] | 0, i12, i20) | 0) != 0) { - i12 = 0; - break L4; - } - i12 = i12 + i20 | 0; - if ((i12 | 0) == 0) { - i12 = 0; - break L4; - } - i11 = i11 + 2 | 0; - } - i22 = HEAP32[i14 >> 2] | 0; - if ((i11 | 0) == (i22 | 0)) { - break L4; - } - } - if ((i7 | 0) == 7) { - i3 = i11 + 1 | 0; - if ((HEAP8[i3] | 0) == 41) { - i3 = HEAP32[i10 >> 2] | 0; - if ((i3 | 0) > 31) { - _luaL_error(HEAP32[i9 >> 2] | 0, 7200, i8) | 0; - } - HEAP32[i1 + (i3 << 3) + 24 >> 2] = i12; - HEAP32[i1 + (i3 << 3) + 28 >> 2] = -2; - HEAP32[i10 >> 2] = i3 + 1; - i12 = _match(i1, i12, i11 + 2 | 0) | 0; - if ((i12 | 0) != 0) { - break; - } - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -1; - i12 = 0; - break; - } else { - i4 = HEAP32[i10 >> 2] | 0; - if ((i4 | 0) > 31) { - _luaL_error(HEAP32[i9 >> 2] | 0, 7200, i8) | 0; - } - HEAP32[i1 + (i4 << 3) + 24 >> 2] = i12; - HEAP32[i1 + (i4 << 3) + 28 >> 2] = -1; - HEAP32[i10 >> 2] = i4 + 1; - i12 = _match(i1, i12, i3) | 0; - if ((i12 | 0) != 0) { - break; - } - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -1; - i12 = 0; - break; - } - } else if ((i7 | 0) == 16) { - i3 = i11 + 1 | 0; - i5 = HEAP32[i10 >> 2] | 0; - while (1) { - i4 = i5 + -1 | 0; - if ((i5 | 0) <= 0) { - i7 = 19; - break; - } - if ((HEAP32[i1 + (i4 << 3) + 28 >> 2] | 0) == -1) { - break; - } else { - i5 = i4; - } - } - if ((i7 | 0) == 19) { - i4 = _luaL_error(HEAP32[i9 >> 2] | 0, 7488, i8) | 0; - } - i5 = i1 + (i4 << 3) + 28 | 0; - HEAP32[i5 >> 2] = i12 - (HEAP32[i1 + (i4 << 3) + 24 >> 2] | 0); - i12 = _match(i1, i12, i3) | 0; - if ((i12 | 0) != 0) { - break; - } - HEAP32[i5 >> 2] = -1; - i12 = 0; - break; - } else if ((i7 | 0) == 23) { - i12 = (i12 | 0) == (HEAP32[i3 >> 2] | 0) ? i12 : 0; - break; - } else if ((i7 | 0) == 109) { - i4 = i22 + 1 | 0; - i8 = _match(i1, i12, i4) | 0; - if ((i8 | 0) != 0) { - i12 = i8; - break; - } - i8 = i22 + -1 | 0; - while (1) { - if (!((HEAP32[i3 >> 2] | 0) >>> 0 > i12 >>> 0)) { - i12 = 0; - break L4; - } - i9 = HEAP8[i12] | 0; - i10 = i9 & 255; - i14 = HEAP8[i11] | 0; - i13 = i14 << 24 >> 24; - L139 : do { - if ((i13 | 0) == 91) { - i6 = (HEAP8[i21] | 0) == 94; - i13 = i6 ? i21 : i11; - i6 = i6 & 1; - i7 = i6 ^ 1; - i14 = i13 + 1 | 0; - if (i14 >>> 0 < i8 >>> 0) { - while (1) { - i17 = HEAP8[i14] | 0; - i15 = i13 + 2 | 0; - i16 = HEAP8[i15] | 0; - do { - if (i17 << 24 >> 24 == 37) { - if ((_match_class(i10, i16 & 255) | 0) == 0) { - i13 = i15; - } else { - i6 = i7; - i7 = 147; - break L139; - } - } else { - if (i16 << 24 >> 24 == 45 ? (i5 = i13 + 3 | 0, i5 >>> 0 < i8 >>> 0) : 0) { - if ((i17 & 255) > (i9 & 255)) { - i13 = i5; - break; - } - if ((HEAPU8[i5] | 0) < (i9 & 255)) { - i13 = i5; - break; - } else { - i6 = i7; - i7 = 147; - break L139; - } - } - if (i17 << 24 >> 24 == i9 << 24 >> 24) { - i6 = i7; - i7 = 147; - break L139; - } else { - i13 = i14; - } - } - } while (0); - i14 = i13 + 1 | 0; - if (!(i14 >>> 0 < i8 >>> 0)) { - i7 = 147; - break; - } - } - } else { - i7 = 147; - } - } else if ((i13 | 0) == 37) { - i6 = _match_class(i10, HEAPU8[i21] | 0) | 0; - i7 = 147; - } else if ((i13 | 0) != 46) { - i6 = i14 << 24 >> 24 == i9 << 24 >> 24 | 0; - i7 = 147; - } - } while (0); - if ((i7 | 0) == 147 ? (i7 = 0, (i6 | 0) == 0) : 0) { - i12 = 0; - break L4; - } - i9 = i12 + 1 | 0; - i12 = _match(i1, i9, i4) | 0; - if ((i12 | 0) == 0) { - i12 = i9; - } else { - break L4; - } - } - } else if ((i7 | 0) == 112) { - i19 = i12; - } - i10 = HEAP32[i3 >> 2] | 0; - if (i10 >>> 0 > i19 >>> 0) { - i5 = i22 + -1 | 0; - i8 = i19; - i6 = 0; - do { - i8 = HEAP8[i8] | 0; - i9 = i8 & 255; - i13 = HEAP8[i11] | 0; - i12 = i13 << 24 >> 24; - L183 : do { - if ((i12 | 0) == 37) { - i10 = _match_class(i9, HEAPU8[i21] | 0) | 0; - i7 = 129; - } else if ((i12 | 0) == 91) { - i7 = (HEAP8[i21] | 0) == 94; - i12 = i7 ? i21 : i11; - i10 = i7 & 1; - i7 = i10 ^ 1; - i13 = i12 + 1 | 0; - if (i13 >>> 0 < i5 >>> 0) { - while (1) { - i14 = HEAP8[i13] | 0; - i16 = i12 + 2 | 0; - i15 = HEAP8[i16] | 0; - do { - if (i14 << 24 >> 24 == 37) { - if ((_match_class(i9, i15 & 255) | 0) == 0) { - i12 = i16; - } else { - i10 = i7; - i7 = 129; - break L183; - } - } else { - if (i15 << 24 >> 24 == 45 ? (i4 = i12 + 3 | 0, i4 >>> 0 < i5 >>> 0) : 0) { - if ((i14 & 255) > (i8 & 255)) { - i12 = i4; - break; - } - if ((HEAPU8[i4] | 0) < (i8 & 255)) { - i12 = i4; - break; - } else { - i10 = i7; - i7 = 129; - break L183; - } - } - if (i14 << 24 >> 24 == i8 << 24 >> 24) { - i10 = i7; - i7 = 129; - break L183; - } else { - i12 = i13; - } - } - } while (0); - i13 = i12 + 1 | 0; - if (!(i13 >>> 0 < i5 >>> 0)) { - i7 = 129; - break; - } - } - } else { - i7 = 129; - } - } else if ((i12 | 0) != 46) { - i10 = i13 << 24 >> 24 == i8 << 24 >> 24 | 0; - i7 = 129; - } - } while (0); - if ((i7 | 0) == 129) { - i7 = 0; - if ((i10 | 0) == 0) { - break; - } - i10 = HEAP32[i3 >> 2] | 0; - } - i6 = i6 + 1 | 0; - i8 = i19 + i6 | 0; - } while (i10 >>> 0 > i8 >>> 0); - if (!((i6 | 0) > -1)) { - i12 = 0; - break; - } - } else { - i6 = 0; - } - i3 = i22 + 1 | 0; - while (1) { - i12 = _match(i1, i19 + i6 | 0, i3) | 0; - if ((i12 | 0) != 0) { - break L4; - } - if ((i6 | 0) > 0) { - i6 = i6 + -1 | 0; - } else { - i12 = 0; - break; - } - } - } - } while (0); - HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 1; - STACKTOP = i2; - return i12 | 0; -} -function _free(i7) { - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0; - i1 = STACKTOP; - if ((i7 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = i7 + -8 | 0; - i16 = HEAP32[12928 >> 2] | 0; - if (i15 >>> 0 < i16 >>> 0) { - _abort(); - } - i13 = HEAP32[i7 + -4 >> 2] | 0; - i12 = i13 & 3; - if ((i12 | 0) == 1) { - _abort(); - } - i8 = i13 & -8; - i6 = i7 + (i8 + -8) | 0; - do { - if ((i13 & 1 | 0) == 0) { - i19 = HEAP32[i15 >> 2] | 0; - if ((i12 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = -8 - i19 | 0; - i13 = i7 + i15 | 0; - i12 = i19 + i8 | 0; - if (i13 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((i13 | 0) == (HEAP32[12932 >> 2] | 0)) { - i2 = i7 + (i8 + -4) | 0; - if ((HEAP32[i2 >> 2] & 3 | 0) != 3) { - i2 = i13; - i11 = i12; - break; - } - HEAP32[12920 >> 2] = i12; - HEAP32[i2 >> 2] = HEAP32[i2 >> 2] & -2; - HEAP32[i7 + (i15 + 4) >> 2] = i12 | 1; - HEAP32[i6 >> 2] = i12; - STACKTOP = i1; - return; - } - i18 = i19 >>> 3; - if (i19 >>> 0 < 256) { - i2 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - i11 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - i14 = 12952 + (i18 << 1 << 2) | 0; - if ((i2 | 0) != (i14 | 0)) { - if (i2 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((HEAP32[i2 + 12 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - } - if ((i11 | 0) == (i2 | 0)) { - HEAP32[3228] = HEAP32[3228] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - if ((i11 | 0) != (i14 | 0)) { - if (i11 >>> 0 < i16 >>> 0) { - _abort(); - } - i14 = i11 + 8 | 0; - if ((HEAP32[i14 >> 2] | 0) == (i13 | 0)) { - i17 = i14; - } else { - _abort(); - } - } else { - i17 = i11 + 8 | 0; - } - HEAP32[i2 + 12 >> 2] = i11; - HEAP32[i17 >> 2] = i2; - i2 = i13; - i11 = i12; - break; - } - i17 = HEAP32[i7 + (i15 + 24) >> 2] | 0; - i18 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - do { - if ((i18 | 0) == (i13 | 0)) { - i19 = i7 + (i15 + 20) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i19 = i7 + (i15 + 16) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i14 = 0; - break; - } - } - while (1) { - i21 = i18 + 20 | 0; - i20 = HEAP32[i21 >> 2] | 0; - if ((i20 | 0) != 0) { - i18 = i20; - i19 = i21; - continue; - } - i20 = i18 + 16 | 0; - i21 = HEAP32[i20 >> 2] | 0; - if ((i21 | 0) == 0) { - break; - } else { - i18 = i21; - i19 = i20; - } - } - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } else { - HEAP32[i19 >> 2] = 0; - i14 = i18; - break; - } - } else { - i19 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } - i16 = i19 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - i20 = i18 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i18; - HEAP32[i20 >> 2] = i19; - i14 = i18; - break; - } else { - _abort(); - } - } - } while (0); - if ((i17 | 0) != 0) { - i18 = HEAP32[i7 + (i15 + 28) >> 2] | 0; - i16 = 13216 + (i18 << 2) | 0; - if ((i13 | 0) == (HEAP32[i16 >> 2] | 0)) { - HEAP32[i16 >> 2] = i14; - if ((i14 | 0) == 0) { - HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - } else { - if (i17 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i17 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i14; - } else { - HEAP32[i17 + 20 >> 2] = i14; - } - if ((i14 | 0) == 0) { - i2 = i13; - i11 = i12; - break; - } - } - if (i14 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i14 + 24 >> 2] = i17; - i16 = HEAP32[i7 + (i15 + 16) >> 2] | 0; - do { - if ((i16 | 0) != 0) { - if (i16 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 16 >> 2] = i16; - HEAP32[i16 + 24 >> 2] = i14; - break; - } - } - } while (0); - i15 = HEAP32[i7 + (i15 + 20) >> 2] | 0; - if ((i15 | 0) != 0) { - if (i15 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 20 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i14; - i2 = i13; - i11 = i12; - break; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i15; - i11 = i8; - } - } while (0); - if (!(i2 >>> 0 < i6 >>> 0)) { - _abort(); - } - i12 = i7 + (i8 + -4) | 0; - i13 = HEAP32[i12 >> 2] | 0; - if ((i13 & 1 | 0) == 0) { - _abort(); - } - if ((i13 & 2 | 0) == 0) { - if ((i6 | 0) == (HEAP32[12936 >> 2] | 0)) { - i21 = (HEAP32[12924 >> 2] | 0) + i11 | 0; - HEAP32[12924 >> 2] = i21; - HEAP32[12936 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - if ((i2 | 0) != (HEAP32[12932 >> 2] | 0)) { - STACKTOP = i1; - return; - } - HEAP32[12932 >> 2] = 0; - HEAP32[12920 >> 2] = 0; - STACKTOP = i1; - return; - } - if ((i6 | 0) == (HEAP32[12932 >> 2] | 0)) { - i21 = (HEAP32[12920 >> 2] | 0) + i11 | 0; - HEAP32[12920 >> 2] = i21; - HEAP32[12932 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - HEAP32[i2 + i21 >> 2] = i21; - STACKTOP = i1; - return; - } - i11 = (i13 & -8) + i11 | 0; - i12 = i13 >>> 3; - do { - if (!(i13 >>> 0 < 256)) { - i10 = HEAP32[i7 + (i8 + 16) >> 2] | 0; - i15 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - do { - if ((i15 | 0) == (i6 | 0)) { - i13 = i7 + (i8 + 12) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i13 = i7 + (i8 + 8) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i9 = 0; - break; - } - } - while (1) { - i14 = i12 + 20 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) != 0) { - i12 = i15; - i13 = i14; - continue; - } - i14 = i12 + 16 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) == 0) { - break; - } else { - i12 = i15; - i13 = i14; - } - } - if (i13 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i13 >> 2] = 0; - i9 = i12; - break; - } - } else { - i13 = HEAP32[i7 + i8 >> 2] | 0; - if (i13 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i14 = i13 + 12 | 0; - if ((HEAP32[i14 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - i12 = i15 + 8 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i14 >> 2] = i15; - HEAP32[i12 >> 2] = i13; - i9 = i15; - break; - } else { - _abort(); - } - } - } while (0); - if ((i10 | 0) != 0) { - i12 = HEAP32[i7 + (i8 + 20) >> 2] | 0; - i13 = 13216 + (i12 << 2) | 0; - if ((i6 | 0) == (HEAP32[i13 >> 2] | 0)) { - HEAP32[i13 >> 2] = i9; - if ((i9 | 0) == 0) { - HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i12); - break; - } - } else { - if (i10 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i12 = i10 + 16 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i12 >> 2] = i9; - } else { - HEAP32[i10 + 20 >> 2] = i9; - } - if ((i9 | 0) == 0) { - break; - } - } - if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i9 + 24 >> 2] = i10; - i6 = HEAP32[i7 + (i8 + 8) >> 2] | 0; - do { - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 16 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } while (0); - i6 = HEAP32[i7 + (i8 + 12) >> 2] | 0; - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 20 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } - } else { - i9 = HEAP32[i7 + i8 >> 2] | 0; - i7 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - i8 = 12952 + (i12 << 1 << 2) | 0; - if ((i9 | 0) != (i8 | 0)) { - if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i9 + 12 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - } - if ((i7 | 0) == (i9 | 0)) { - HEAP32[3228] = HEAP32[3228] & ~(1 << i12); - break; - } - if ((i7 | 0) != (i8 | 0)) { - if (i7 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i7 + 8 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) { - i10 = i8; - } else { - _abort(); - } - } else { - i10 = i7 + 8 | 0; - } - HEAP32[i9 + 12 >> 2] = i7; - HEAP32[i10 >> 2] = i9; - } - } while (0); - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - if ((i2 | 0) == (HEAP32[12932 >> 2] | 0)) { - HEAP32[12920 >> 2] = i11; - STACKTOP = i1; - return; - } - } else { - HEAP32[i12 >> 2] = i13 & -2; - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - } - i6 = i11 >>> 3; - if (i11 >>> 0 < 256) { - i7 = i6 << 1; - i3 = 12952 + (i7 << 2) | 0; - i8 = HEAP32[3228] | 0; - i6 = 1 << i6; - if ((i8 & i6 | 0) != 0) { - i6 = 12952 + (i7 + 2 << 2) | 0; - i7 = HEAP32[i6 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - i4 = i6; - i5 = i7; - } - } else { - HEAP32[3228] = i8 | i6; - i4 = 12952 + (i7 + 2 << 2) | 0; - i5 = i3; - } - HEAP32[i4 >> 2] = i2; - HEAP32[i5 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i3; - STACKTOP = i1; - return; - } - i4 = i11 >>> 8; - if ((i4 | 0) != 0) { - if (i11 >>> 0 > 16777215) { - i4 = 31; - } else { - i20 = (i4 + 1048320 | 0) >>> 16 & 8; - i21 = i4 << i20; - i19 = (i21 + 520192 | 0) >>> 16 & 4; - i21 = i21 << i19; - i4 = (i21 + 245760 | 0) >>> 16 & 2; - i4 = 14 - (i19 | i20 | i4) + (i21 << i4 >>> 15) | 0; - i4 = i11 >>> (i4 + 7 | 0) & 1 | i4 << 1; - } - } else { - i4 = 0; - } - i5 = 13216 + (i4 << 2) | 0; - HEAP32[i2 + 28 >> 2] = i4; - HEAP32[i2 + 20 >> 2] = 0; - HEAP32[i2 + 16 >> 2] = 0; - i7 = HEAP32[12916 >> 2] | 0; - i6 = 1 << i4; - L199 : do { - if ((i7 & i6 | 0) != 0) { - i5 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) == 31) { - i4 = 0; - } else { - i4 = 25 - (i4 >>> 1) | 0; - } - L204 : do { - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) != (i11 | 0)) { - i4 = i11 << i4; - i7 = i5; - while (1) { - i6 = i7 + (i4 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i11 | 0)) { - i3 = i5; - break L204; - } else { - i4 = i4 << 1; - i7 = i5; - } - } - if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i7; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - break L199; - } - } else { - i3 = i5; - } - } while (0); - i5 = i3 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i6 = HEAP32[12928 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - if (i4 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i4 + 12 >> 2] = i2; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i4; - HEAP32[i2 + 12 >> 2] = i3; - HEAP32[i2 + 24 >> 2] = 0; - break; - } - } else { - HEAP32[12916 >> 2] = i7 | i6; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - } - } while (0); - i21 = (HEAP32[12944 >> 2] | 0) + -1 | 0; - HEAP32[12944 >> 2] = i21; - if ((i21 | 0) == 0) { - i2 = 13368 | 0; - } else { - STACKTOP = i1; - return; - } - while (1) { - i2 = HEAP32[i2 >> 2] | 0; - if ((i2 | 0) == 0) { - break; - } else { - i2 = i2 + 8 | 0; - } - } - HEAP32[12944 >> 2] = -1; - STACKTOP = i1; - return; -} -function _dispose_chunk(i6, i7) { - i6 = i6 | 0; - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0; - i1 = STACKTOP; - i5 = i6 + i7 | 0; - i10 = HEAP32[i6 + 4 >> 2] | 0; - do { - if ((i10 & 1 | 0) == 0) { - i14 = HEAP32[i6 >> 2] | 0; - if ((i10 & 3 | 0) == 0) { - STACKTOP = i1; - return; - } - i10 = i6 + (0 - i14) | 0; - i11 = i14 + i7 | 0; - i15 = HEAP32[12928 >> 2] | 0; - if (i10 >>> 0 < i15 >>> 0) { - _abort(); - } - if ((i10 | 0) == (HEAP32[12932 >> 2] | 0)) { - i2 = i6 + (i7 + 4) | 0; - if ((HEAP32[i2 >> 2] & 3 | 0) != 3) { - i2 = i10; - i12 = i11; - break; - } - HEAP32[12920 >> 2] = i11; - HEAP32[i2 >> 2] = HEAP32[i2 >> 2] & -2; - HEAP32[i6 + (4 - i14) >> 2] = i11 | 1; - HEAP32[i5 >> 2] = i11; - STACKTOP = i1; - return; - } - i17 = i14 >>> 3; - if (i14 >>> 0 < 256) { - i2 = HEAP32[i6 + (8 - i14) >> 2] | 0; - i12 = HEAP32[i6 + (12 - i14) >> 2] | 0; - i13 = 12952 + (i17 << 1 << 2) | 0; - if ((i2 | 0) != (i13 | 0)) { - if (i2 >>> 0 < i15 >>> 0) { - _abort(); - } - if ((HEAP32[i2 + 12 >> 2] | 0) != (i10 | 0)) { - _abort(); - } - } - if ((i12 | 0) == (i2 | 0)) { - HEAP32[3228] = HEAP32[3228] & ~(1 << i17); - i2 = i10; - i12 = i11; - break; - } - if ((i12 | 0) != (i13 | 0)) { - if (i12 >>> 0 < i15 >>> 0) { - _abort(); - } - i13 = i12 + 8 | 0; - if ((HEAP32[i13 >> 2] | 0) == (i10 | 0)) { - i16 = i13; - } else { - _abort(); - } - } else { - i16 = i12 + 8 | 0; - } - HEAP32[i2 + 12 >> 2] = i12; - HEAP32[i16 >> 2] = i2; - i2 = i10; - i12 = i11; - break; - } - i16 = HEAP32[i6 + (24 - i14) >> 2] | 0; - i18 = HEAP32[i6 + (12 - i14) >> 2] | 0; - do { - if ((i18 | 0) == (i10 | 0)) { - i19 = 16 - i14 | 0; - i18 = i6 + (i19 + 4) | 0; - i17 = HEAP32[i18 >> 2] | 0; - if ((i17 | 0) == 0) { - i18 = i6 + i19 | 0; - i17 = HEAP32[i18 >> 2] | 0; - if ((i17 | 0) == 0) { - i13 = 0; - break; - } - } - while (1) { - i19 = i17 + 20 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i20 | 0) != 0) { - i17 = i20; - i18 = i19; - continue; - } - i20 = i17 + 16 | 0; - i19 = HEAP32[i20 >> 2] | 0; - if ((i19 | 0) == 0) { - break; - } else { - i17 = i19; - i18 = i20; - } - } - if (i18 >>> 0 < i15 >>> 0) { - _abort(); - } else { - HEAP32[i18 >> 2] = 0; - i13 = i17; - break; - } - } else { - i17 = HEAP32[i6 + (8 - i14) >> 2] | 0; - if (i17 >>> 0 < i15 >>> 0) { - _abort(); - } - i19 = i17 + 12 | 0; - if ((HEAP32[i19 >> 2] | 0) != (i10 | 0)) { - _abort(); - } - i15 = i18 + 8 | 0; - if ((HEAP32[i15 >> 2] | 0) == (i10 | 0)) { - HEAP32[i19 >> 2] = i18; - HEAP32[i15 >> 2] = i17; - i13 = i18; - break; - } else { - _abort(); - } - } - } while (0); - if ((i16 | 0) != 0) { - i15 = HEAP32[i6 + (28 - i14) >> 2] | 0; - i17 = 13216 + (i15 << 2) | 0; - if ((i10 | 0) == (HEAP32[i17 >> 2] | 0)) { - HEAP32[i17 >> 2] = i13; - if ((i13 | 0) == 0) { - HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i15); - i2 = i10; - i12 = i11; - break; - } - } else { - if (i16 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i15 = i16 + 16 | 0; - if ((HEAP32[i15 >> 2] | 0) == (i10 | 0)) { - HEAP32[i15 >> 2] = i13; - } else { - HEAP32[i16 + 20 >> 2] = i13; - } - if ((i13 | 0) == 0) { - i2 = i10; - i12 = i11; - break; - } - } - if (i13 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i13 + 24 >> 2] = i16; - i14 = 16 - i14 | 0; - i15 = HEAP32[i6 + i14 >> 2] | 0; - do { - if ((i15 | 0) != 0) { - if (i15 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i13 + 16 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i13; - break; - } - } - } while (0); - i14 = HEAP32[i6 + (i14 + 4) >> 2] | 0; - if ((i14 | 0) != 0) { - if (i14 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i13 + 20 >> 2] = i14; - HEAP32[i14 + 24 >> 2] = i13; - i2 = i10; - i12 = i11; - break; - } - } else { - i2 = i10; - i12 = i11; - } - } else { - i2 = i10; - i12 = i11; - } - } else { - i2 = i6; - i12 = i7; - } - } while (0); - i10 = HEAP32[12928 >> 2] | 0; - if (i5 >>> 0 < i10 >>> 0) { - _abort(); - } - i11 = i6 + (i7 + 4) | 0; - i13 = HEAP32[i11 >> 2] | 0; - if ((i13 & 2 | 0) == 0) { - if ((i5 | 0) == (HEAP32[12936 >> 2] | 0)) { - i20 = (HEAP32[12924 >> 2] | 0) + i12 | 0; - HEAP32[12924 >> 2] = i20; - HEAP32[12936 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i20 | 1; - if ((i2 | 0) != (HEAP32[12932 >> 2] | 0)) { - STACKTOP = i1; - return; - } - HEAP32[12932 >> 2] = 0; - HEAP32[12920 >> 2] = 0; - STACKTOP = i1; - return; - } - if ((i5 | 0) == (HEAP32[12932 >> 2] | 0)) { - i20 = (HEAP32[12920 >> 2] | 0) + i12 | 0; - HEAP32[12920 >> 2] = i20; - HEAP32[12932 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i20 | 1; - HEAP32[i2 + i20 >> 2] = i20; - STACKTOP = i1; - return; - } - i12 = (i13 & -8) + i12 | 0; - i11 = i13 >>> 3; - do { - if (!(i13 >>> 0 < 256)) { - i9 = HEAP32[i6 + (i7 + 24) >> 2] | 0; - i11 = HEAP32[i6 + (i7 + 12) >> 2] | 0; - do { - if ((i11 | 0) == (i5 | 0)) { - i13 = i6 + (i7 + 20) | 0; - i11 = HEAP32[i13 >> 2] | 0; - if ((i11 | 0) == 0) { - i13 = i6 + (i7 + 16) | 0; - i11 = HEAP32[i13 >> 2] | 0; - if ((i11 | 0) == 0) { - i8 = 0; - break; - } - } - while (1) { - i15 = i11 + 20 | 0; - i14 = HEAP32[i15 >> 2] | 0; - if ((i14 | 0) != 0) { - i11 = i14; - i13 = i15; - continue; - } - i14 = i11 + 16 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) == 0) { - break; - } else { - i11 = i15; - i13 = i14; - } - } - if (i13 >>> 0 < i10 >>> 0) { - _abort(); - } else { - HEAP32[i13 >> 2] = 0; - i8 = i11; - break; - } - } else { - i13 = HEAP32[i6 + (i7 + 8) >> 2] | 0; - if (i13 >>> 0 < i10 >>> 0) { - _abort(); - } - i10 = i13 + 12 | 0; - if ((HEAP32[i10 >> 2] | 0) != (i5 | 0)) { - _abort(); - } - i14 = i11 + 8 | 0; - if ((HEAP32[i14 >> 2] | 0) == (i5 | 0)) { - HEAP32[i10 >> 2] = i11; - HEAP32[i14 >> 2] = i13; - i8 = i11; - break; - } else { - _abort(); - } - } - } while (0); - if ((i9 | 0) != 0) { - i10 = HEAP32[i6 + (i7 + 28) >> 2] | 0; - i11 = 13216 + (i10 << 2) | 0; - if ((i5 | 0) == (HEAP32[i11 >> 2] | 0)) { - HEAP32[i11 >> 2] = i8; - if ((i8 | 0) == 0) { - HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i10); - break; - } - } else { - if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i10 = i9 + 16 | 0; - if ((HEAP32[i10 >> 2] | 0) == (i5 | 0)) { - HEAP32[i10 >> 2] = i8; - } else { - HEAP32[i9 + 20 >> 2] = i8; - } - if ((i8 | 0) == 0) { - break; - } - } - if (i8 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i8 + 24 >> 2] = i9; - i5 = HEAP32[i6 + (i7 + 16) >> 2] | 0; - do { - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i8 + 16 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i8; - break; - } - } - } while (0); - i5 = HEAP32[i6 + (i7 + 20) >> 2] | 0; - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i8 + 20 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i8; - break; - } - } - } - } else { - i8 = HEAP32[i6 + (i7 + 8) >> 2] | 0; - i6 = HEAP32[i6 + (i7 + 12) >> 2] | 0; - i7 = 12952 + (i11 << 1 << 2) | 0; - if ((i8 | 0) != (i7 | 0)) { - if (i8 >>> 0 < i10 >>> 0) { - _abort(); - } - if ((HEAP32[i8 + 12 >> 2] | 0) != (i5 | 0)) { - _abort(); - } - } - if ((i6 | 0) == (i8 | 0)) { - HEAP32[3228] = HEAP32[3228] & ~(1 << i11); - break; - } - if ((i6 | 0) != (i7 | 0)) { - if (i6 >>> 0 < i10 >>> 0) { - _abort(); - } - i7 = i6 + 8 | 0; - if ((HEAP32[i7 >> 2] | 0) == (i5 | 0)) { - i9 = i7; - } else { - _abort(); - } - } else { - i9 = i6 + 8 | 0; - } - HEAP32[i8 + 12 >> 2] = i6; - HEAP32[i9 >> 2] = i8; - } - } while (0); - HEAP32[i2 + 4 >> 2] = i12 | 1; - HEAP32[i2 + i12 >> 2] = i12; - if ((i2 | 0) == (HEAP32[12932 >> 2] | 0)) { - HEAP32[12920 >> 2] = i12; - STACKTOP = i1; - return; - } - } else { - HEAP32[i11 >> 2] = i13 & -2; - HEAP32[i2 + 4 >> 2] = i12 | 1; - HEAP32[i2 + i12 >> 2] = i12; - } - i6 = i12 >>> 3; - if (i12 >>> 0 < 256) { - i7 = i6 << 1; - i5 = 12952 + (i7 << 2) | 0; - i8 = HEAP32[3228] | 0; - i6 = 1 << i6; - if ((i8 & i6 | 0) != 0) { - i7 = 12952 + (i7 + 2 << 2) | 0; - i6 = HEAP32[i7 >> 2] | 0; - if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - i4 = i7; - i3 = i6; - } - } else { - HEAP32[3228] = i8 | i6; - i4 = 12952 + (i7 + 2 << 2) | 0; - i3 = i5; - } - HEAP32[i4 >> 2] = i2; - HEAP32[i3 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i3; - HEAP32[i2 + 12 >> 2] = i5; - STACKTOP = i1; - return; - } - i3 = i12 >>> 8; - if ((i3 | 0) != 0) { - if (i12 >>> 0 > 16777215) { - i3 = 31; - } else { - i19 = (i3 + 1048320 | 0) >>> 16 & 8; - i20 = i3 << i19; - i18 = (i20 + 520192 | 0) >>> 16 & 4; - i20 = i20 << i18; - i3 = (i20 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i18 | i19 | i3) + (i20 << i3 >>> 15) | 0; - i3 = i12 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i6 = 13216 + (i3 << 2) | 0; - HEAP32[i2 + 28 >> 2] = i3; - HEAP32[i2 + 20 >> 2] = 0; - HEAP32[i2 + 16 >> 2] = 0; - i5 = HEAP32[12916 >> 2] | 0; - i4 = 1 << i3; - if ((i5 & i4 | 0) == 0) { - HEAP32[12916 >> 2] = i5 | i4; - HEAP32[i6 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i6; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - STACKTOP = i1; - return; - } - i4 = HEAP32[i6 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L194 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i12 | 0)) { - i3 = i12 << i3; - i6 = i4; - while (1) { - i5 = i6 + (i3 >>> 31 << 2) + 16 | 0; - i4 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) == 0) { - break; - } - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) == (i12 | 0)) { - break L194; - } else { - i3 = i3 << 1; - i6 = i4; - } - } - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i6; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - STACKTOP = i1; - return; - } - } while (0); - i3 = i4 + 8 | 0; - i6 = HEAP32[i3 >> 2] | 0; - i5 = HEAP32[12928 >> 2] | 0; - if (i4 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i6 >>> 0 < i5 >>> 0) { - _abort(); - } - HEAP32[i6 + 12 >> 2] = i2; - HEAP32[i3 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i6; - HEAP32[i2 + 12 >> 2] = i4; - HEAP32[i2 + 24 >> 2] = 0; - STACKTOP = i1; - return; -} -function _singlestep(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i14 = i1; - i3 = i2 + 12 | 0; - i8 = HEAP32[i3 >> 2] | 0; - i6 = i8 + 61 | 0; - switch (HEAPU8[i6] | 0) { - case 0: - { - if ((HEAP32[i8 + 84 >> 2] | 0) != 0) { - i21 = i8 + 16 | 0; - i22 = HEAP32[i21 >> 2] | 0; - _propagatemark(i8); - i22 = (HEAP32[i21 >> 2] | 0) - i22 | 0; - STACKTOP = i1; - return i22 | 0; - } - HEAP8[i6] = 1; - i6 = i8 + 20 | 0; - HEAP32[i6 >> 2] = HEAP32[i8 + 16 >> 2]; - i8 = HEAP32[i3 >> 2] | 0; - i7 = i8 + 16 | 0; - i14 = HEAP32[i7 >> 2] | 0; - if ((i2 | 0) != 0 ? !((HEAP8[i2 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i8, i2); - } - if ((HEAP32[i8 + 48 >> 2] & 64 | 0) != 0 ? (i13 = HEAP32[i8 + 40 >> 2] | 0, !((HEAP8[i13 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i8, i13); - } - _markmt(i8); - i13 = i8 + 112 | 0; - i15 = HEAP32[i8 + 132 >> 2] | 0; - if ((i15 | 0) != (i13 | 0)) { - do { - if (((HEAP8[i15 + 5 | 0] & 7) == 0 ? (i12 = HEAP32[i15 + 8 >> 2] | 0, (HEAP32[i12 + 8 >> 2] & 64 | 0) != 0) : 0) ? (i11 = HEAP32[i12 >> 2] | 0, !((HEAP8[i11 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i8, i11); - } - i15 = HEAP32[i15 + 20 >> 2] | 0; - } while ((i15 | 0) != (i13 | 0)); - } - i16 = i8 + 84 | 0; - if ((HEAP32[i16 >> 2] | 0) != 0) { - do { - _propagatemark(i8); - } while ((HEAP32[i16 >> 2] | 0) != 0); - } - i17 = (HEAP32[i7 >> 2] | 0) - i14 | 0; - i11 = i8 + 92 | 0; - i12 = HEAP32[i11 >> 2] | 0; - i21 = i8 + 88 | 0; - i22 = HEAP32[i21 >> 2] | 0; - i15 = i8 + 96 | 0; - i13 = HEAP32[i15 >> 2] | 0; - HEAP32[i15 >> 2] = 0; - HEAP32[i21 >> 2] = 0; - HEAP32[i11 >> 2] = 0; - HEAP32[i16 >> 2] = i22; - if ((i22 | 0) != 0) { - do { - _propagatemark(i8); - } while ((HEAP32[i16 >> 2] | 0) != 0); - } - HEAP32[i16 >> 2] = i12; - if ((i12 | 0) != 0) { - do { - _propagatemark(i8); - } while ((HEAP32[i16 >> 2] | 0) != 0); - } - HEAP32[i16 >> 2] = i13; - if ((i13 | 0) != 0) { - do { - _propagatemark(i8); - } while ((HEAP32[i16 >> 2] | 0) != 0); - } - i18 = HEAP32[i7 >> 2] | 0; - while (1) { - i13 = HEAP32[i15 >> 2] | 0; - HEAP32[i15 >> 2] = 0; - i12 = 0; - L42 : while (1) { - i14 = i13; - while (1) { - if ((i14 | 0) == 0) { - break L42; - } - i13 = HEAP32[i14 + 24 >> 2] | 0; - if ((_traverseephemeron(i8, i14) | 0) == 0) { - i14 = i13; - } else { - break; - } - } - if ((HEAP32[i16 >> 2] | 0) == 0) { - i12 = 1; - continue; - } - while (1) { - _propagatemark(i8); - if ((HEAP32[i16 >> 2] | 0) == 0) { - i12 = 1; - continue L42; - } - } - } - if ((i12 | 0) == 0) { - break; - } - } - _clearvalues(i8, HEAP32[i11 >> 2] | 0, 0); - i14 = i8 + 100 | 0; - _clearvalues(i8, HEAP32[i14 >> 2] | 0, 0); - i13 = HEAP32[i11 >> 2] | 0; - i12 = HEAP32[i14 >> 2] | 0; - i21 = HEAP32[i7 >> 2] | 0; - i20 = HEAP32[i3 >> 2] | 0; - i19 = i20 + 104 | 0; - while (1) { - i22 = HEAP32[i19 >> 2] | 0; - if ((i22 | 0) == 0) { - break; - } else { - i19 = i22; - } - } - i17 = i17 - i18 + i21 | 0; - i20 = i20 + 72 | 0; - i21 = HEAP32[i20 >> 2] | 0; - L55 : do { - if ((i21 | 0) != 0) { - while (1) { - i18 = i21; - while (1) { - i22 = i18 + 5 | 0; - i21 = HEAP8[i22] | 0; - if ((i21 & 3) == 0) { - break; - } - HEAP8[i22] = i21 & 255 | 8; - HEAP32[i20 >> 2] = HEAP32[i18 >> 2]; - HEAP32[i18 >> 2] = HEAP32[i19 >> 2]; - HEAP32[i19 >> 2] = i18; - i19 = HEAP32[i20 >> 2] | 0; - if ((i19 | 0) == 0) { - break L55; - } else { - i22 = i18; - i18 = i19; - i19 = i22; - } - } - i21 = HEAP32[i18 >> 2] | 0; - if ((i21 | 0) == 0) { - break; - } else { - i20 = i18; - } - } - } - } while (0); - i19 = HEAP32[i8 + 104 >> 2] | 0; - if ((i19 | 0) != 0) { - i18 = i8 + 60 | 0; - do { - i22 = i19 + 5 | 0; - HEAP8[i22] = HEAP8[i18] & 3 | HEAP8[i22] & 184; - _reallymarkobject(i8, i19); - i19 = HEAP32[i19 >> 2] | 0; - } while ((i19 | 0) != 0); - } - if ((HEAP32[i16 >> 2] | 0) != 0) { - do { - _propagatemark(i8); - } while ((HEAP32[i16 >> 2] | 0) != 0); - } - i18 = HEAP32[i7 >> 2] | 0; - while (1) { - i20 = HEAP32[i15 >> 2] | 0; - HEAP32[i15 >> 2] = 0; - i19 = 0; - L74 : while (1) { - i21 = i20; - while (1) { - if ((i21 | 0) == 0) { - break L74; - } - i20 = HEAP32[i21 + 24 >> 2] | 0; - if ((_traverseephemeron(i8, i21) | 0) == 0) { - i21 = i20; - } else { - break; - } - } - if ((HEAP32[i16 >> 2] | 0) == 0) { - i19 = 1; - continue; - } - while (1) { - _propagatemark(i8); - if ((HEAP32[i16 >> 2] | 0) == 0) { - i19 = 1; - continue L74; - } - } - } - if ((i19 | 0) == 0) { - break; - } - } - i16 = i17 - i18 | 0; - i15 = HEAP32[i15 >> 2] | 0; - if ((i15 | 0) != 0) { - do { - i22 = 1 << HEAPU8[i15 + 7 | 0]; - i19 = HEAP32[i15 + 16 >> 2] | 0; - i17 = i19 + (i22 << 5) | 0; - if ((i22 | 0) > 0) { - do { - i18 = i19 + 8 | 0; - do { - if ((HEAP32[i18 >> 2] | 0) != 0 ? (i9 = i19 + 24 | 0, i10 = HEAP32[i9 >> 2] | 0, (i10 & 64 | 0) != 0) : 0) { - i20 = HEAP32[i19 + 16 >> 2] | 0; - if ((i10 & 15 | 0) == 4) { - if ((i20 | 0) == 0) { - break; - } - if ((HEAP8[i20 + 5 | 0] & 3) == 0) { - break; - } - _reallymarkobject(i8, i20); - break; - } else { - i20 = i20 + 5 | 0; - if ((HEAP8[i20] & 3) == 0) { - break; - } - HEAP32[i18 >> 2] = 0; - if ((HEAP8[i20] & 3) == 0) { - break; - } - HEAP32[i9 >> 2] = 11; - break; - } - } - } while (0); - i19 = i19 + 32 | 0; - } while (i19 >>> 0 < i17 >>> 0); - } - i15 = HEAP32[i15 + 24 >> 2] | 0; - } while ((i15 | 0) != 0); - } - i10 = HEAP32[i14 >> 2] | 0; - if ((i10 | 0) != 0) { - do { - i22 = 1 << HEAPU8[i10 + 7 | 0]; - i17 = HEAP32[i10 + 16 >> 2] | 0; - i9 = i17 + (i22 << 5) | 0; - if ((i22 | 0) > 0) { - do { - i15 = i17 + 8 | 0; - do { - if ((HEAP32[i15 >> 2] | 0) != 0 ? (i5 = i17 + 24 | 0, i4 = HEAP32[i5 >> 2] | 0, (i4 & 64 | 0) != 0) : 0) { - i18 = HEAP32[i17 + 16 >> 2] | 0; - if ((i4 & 15 | 0) == 4) { - if ((i18 | 0) == 0) { - break; - } - if ((HEAP8[i18 + 5 | 0] & 3) == 0) { - break; - } - _reallymarkobject(i8, i18); - break; - } else { - i18 = i18 + 5 | 0; - if ((HEAP8[i18] & 3) == 0) { - break; - } - HEAP32[i15 >> 2] = 0; - if ((HEAP8[i18] & 3) == 0) { - break; - } - HEAP32[i5 >> 2] = 11; - break; - } - } - } while (0); - i17 = i17 + 32 | 0; - } while (i17 >>> 0 < i9 >>> 0); - } - i10 = HEAP32[i10 + 24 >> 2] | 0; - } while ((i10 | 0) != 0); - } - _clearvalues(i8, HEAP32[i11 >> 2] | 0, i13); - _clearvalues(i8, HEAP32[i14 >> 2] | 0, i12); - i4 = i8 + 60 | 0; - HEAP8[i4] = HEAPU8[i4] ^ 3; - i4 = i16 + (HEAP32[i7 >> 2] | 0) | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i4; - i3 = HEAP32[i3 >> 2] | 0; - HEAP8[i3 + 61 | 0] = 2; - HEAP32[i3 + 64 >> 2] = 0; - i7 = i3 + 72 | 0; - i5 = 0; - do { - i5 = i5 + 1 | 0; - i6 = _sweeplist(i2, i7, 1) | 0; - } while ((i6 | 0) == (i7 | 0)); - HEAP32[i3 + 80 >> 2] = i6; - i6 = i3 + 68 | 0; - i7 = 0; - do { - i7 = i7 + 1 | 0; - i8 = _sweeplist(i2, i6, 1) | 0; - } while ((i8 | 0) == (i6 | 0)); - HEAP32[i3 + 76 >> 2] = i8; - i22 = ((i7 + i5 | 0) * 5 | 0) + i4 | 0; - STACKTOP = i1; - return i22 | 0; - } - case 2: - { - i3 = i8 + 64 | 0; - i4 = i8 + 32 | 0; - i8 = i8 + 24 | 0; - i5 = 0; - while (1) { - i10 = HEAP32[i3 >> 2] | 0; - i11 = i10 + i5 | 0; - i9 = HEAP32[i4 >> 2] | 0; - if ((i11 | 0) >= (i9 | 0)) { - i2 = i10; - break; - } - _sweeplist(i2, (HEAP32[i8 >> 2] | 0) + (i11 << 2) | 0, -3) | 0; - i5 = i5 + 1 | 0; - if ((i5 | 0) >= 80) { - i7 = 96; - break; - } - } - if ((i7 | 0) == 96) { - i2 = HEAP32[i3 >> 2] | 0; - i9 = HEAP32[i4 >> 2] | 0; - } - i22 = i2 + i5 | 0; - HEAP32[i3 >> 2] = i22; - if ((i22 | 0) >= (i9 | 0)) { - HEAP8[i6] = 3; - } - i22 = i5 * 5 | 0; - STACKTOP = i1; - return i22 | 0; - } - case 5: - { - i2 = i8 + 16 | 0; - HEAP32[i2 >> 2] = HEAP32[i8 + 32 >> 2] << 2; - i22 = i8 + 84 | 0; - i3 = i8 + 172 | 0; - HEAP32[i22 + 0 >> 2] = 0; - HEAP32[i22 + 4 >> 2] = 0; - HEAP32[i22 + 8 >> 2] = 0; - HEAP32[i22 + 12 >> 2] = 0; - HEAP32[i22 + 16 >> 2] = 0; - i3 = HEAP32[i3 >> 2] | 0; - if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i8, i3); - } - if ((HEAP32[i8 + 48 >> 2] & 64 | 0) != 0 ? (i15 = HEAP32[i8 + 40 >> 2] | 0, !((HEAP8[i15 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i8, i15); - } - _markmt(i8); - i4 = HEAP32[i8 + 104 >> 2] | 0; - if ((i4 | 0) != 0) { - i3 = i8 + 60 | 0; - do { - i22 = i4 + 5 | 0; - HEAP8[i22] = HEAP8[i3] & 3 | HEAP8[i22] & 184; - _reallymarkobject(i8, i4); - i4 = HEAP32[i4 >> 2] | 0; - } while ((i4 | 0) != 0); - } - HEAP8[i6] = 0; - i22 = HEAP32[i2 >> 2] | 0; - STACKTOP = i1; - return i22 | 0; - } - case 3: - { - i3 = i8 + 80 | 0; - i4 = HEAP32[i3 >> 2] | 0; - if ((i4 | 0) == 0) { - HEAP8[i6] = 4; - i22 = 0; - STACKTOP = i1; - return i22 | 0; - } else { - HEAP32[i3 >> 2] = _sweeplist(i2, i4, 80) | 0; - i22 = 400; - STACKTOP = i1; - return i22 | 0; - } - } - case 4: - { - i4 = i8 + 76 | 0; - i5 = HEAP32[i4 >> 2] | 0; - if ((i5 | 0) != 0) { - HEAP32[i4 >> 2] = _sweeplist(i2, i5, 80) | 0; - i22 = 400; - STACKTOP = i1; - return i22 | 0; - } - HEAP32[i14 >> 2] = HEAP32[i8 + 172 >> 2]; - _sweeplist(i2, i14, 1) | 0; - i3 = HEAP32[i3 >> 2] | 0; - if ((HEAP8[i3 + 62 | 0] | 0) != 1) { - i4 = (HEAP32[i3 + 32 >> 2] | 0) / 2 | 0; - if ((HEAP32[i3 + 28 >> 2] | 0) >>> 0 < i4 >>> 0) { - _luaS_resize(i2, i4); - } - i21 = i3 + 144 | 0; - i22 = i3 + 152 | 0; - HEAP32[i21 >> 2] = _luaM_realloc_(i2, HEAP32[i21 >> 2] | 0, HEAP32[i22 >> 2] | 0, 0) | 0; - HEAP32[i22 >> 2] = 0; - } - HEAP8[i6] = 5; - i22 = 5; - STACKTOP = i1; - return i22 | 0; - } - default: - { - i22 = 0; - STACKTOP = i1; - return i22 | 0; - } - } - return 0; -} -function _pmain(i3) { - i3 = i3 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - i7 = _lua_tointegerx(i3, 1, 0) | 0; - i4 = _lua_touserdata(i3, 2) | 0; - i5 = HEAP32[i4 >> 2] | 0; - if ((i5 | 0) != 0 ? (HEAP8[i5] | 0) != 0 : 0) { - HEAP32[20] = i5; - } - i12 = HEAP32[i4 + 4 >> 2] | 0; - do { - if ((i12 | 0) == 0) { - i5 = 0; - i6 = 0; - i8 = 0; - i9 = 1; - i10 = 1; - } else { - i9 = 0; - i8 = 0; - i11 = 0; - i6 = 0; - i5 = 1; - L6 : while (1) { - if ((HEAP8[i12] | 0) != 45) { - i10 = 18; - break; - } - switch (HEAP8[i12 + 1 | 0] | 0) { - case 108: - { - i10 = 12; - break; - } - case 69: - { - i9 = 1; - break; - } - case 45: - { - i10 = 7; - break L6; - } - case 105: - { - if ((HEAP8[i12 + 2 | 0] | 0) == 0) { - i11 = 1; - i6 = 1; - } else { - i5 = -1; - break L6; - } - break; - } - case 101: - { - i8 = 1; - i10 = 12; - break; - } - case 118: - { - if ((HEAP8[i12 + 2 | 0] | 0) == 0) { - i11 = 1; - } else { - i5 = -1; - break L6; - } - break; - } - case 0: - { - i10 = 18; - break L6; - } - default: - { - i10 = 16; - break L6; - } - } - if ((i10 | 0) == 12) { - i10 = 0; - if ((HEAP8[i12 + 2 | 0] | 0) == 0) { - i12 = i5 + 1 | 0; - i13 = HEAP32[i4 + (i12 << 2) >> 2] | 0; - if ((i13 | 0) == 0) { - i10 = 15; - break; - } - if ((HEAP8[i13] | 0) == 45) { - i10 = 15; - break; - } else { - i5 = i12; - } - } - } - i5 = i5 + 1 | 0; - i12 = HEAP32[i4 + (i5 << 2) >> 2] | 0; - if ((i12 | 0) == 0) { - i5 = 0; - i12 = i9; - i10 = 23; - break; - } - } - if ((i10 | 0) == 7) { - if ((HEAP8[i12 + 2 | 0] | 0) == 0) { - i5 = i5 + 1 | 0; - i5 = (HEAP32[i4 + (i5 << 2) >> 2] | 0) == 0 ? 0 : i5; - i10 = 18; - } else { - i5 = -1; - } - } else if ((i10 | 0) == 15) { - i5 = 0 - i5 | 0; - i10 = 18; - } else if ((i10 | 0) == 16) { - i5 = 0 - i5 | 0; - i10 = 18; - } - if ((i10 | 0) == 18) { - if ((i5 | 0) >= 0) { - i12 = i9; - i10 = 23; - } - } - if ((i10 | 0) == 23) { - if ((i11 | 0) == 0) { - i9 = 1; - } else { - i9 = HEAP32[_stdout >> 2] | 0; - _fwrite(440, 1, 51, i9 | 0) | 0; - _fputc(10, i9 | 0) | 0; - _fflush(i9 | 0) | 0; - i9 = 0; - } - if ((i12 | 0) == 0) { - i10 = 1; - break; - } - _lua_pushboolean(i3, 1); - _lua_setfield(i3, -1001e3, 96); - i10 = 0; - break; - } - i3 = HEAP32[i4 + (0 - i5 << 2) >> 2] | 0; - i4 = HEAP32[_stderr >> 2] | 0; - HEAP32[i2 >> 2] = HEAP32[20]; - _fprintf(i4 | 0, 496, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - i13 = HEAP8[i3 + 1 | 0] | 0; - if (i13 << 24 >> 24 == 108 | i13 << 24 >> 24 == 101) { - HEAP32[i2 >> 2] = i3; - _fprintf(i4 | 0, 504, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - } else { - HEAP32[i2 >> 2] = i3; - _fprintf(i4 | 0, 528, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - } - HEAP32[i2 >> 2] = HEAP32[20]; - _fprintf(i4 | 0, 560, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - } while (0); - _luaL_checkversion_(i3, 502.0); - _lua_gc(i3, 0, 0) | 0; - _luaL_openlibs(i3); - _lua_gc(i3, 1, 0) | 0; - do { - if (i10) { - i10 = _getenv(409 | 0) | 0; - if ((i10 | 0) == 0) { - i10 = _getenv(425 | 0) | 0; - if ((i10 | 0) == 0) { - break; - } else { - i11 = 424; - } - } else { - i11 = 408; - } - if ((HEAP8[i10] | 0) == 64) { - i13 = _luaL_loadfilex(i3, i10 + 1 | 0, 0) | 0; - if ((i13 | 0) == 0) { - i12 = _lua_gettop(i3) | 0; - _lua_pushcclosure(i3, 142, 0); - _lua_insert(i3, i12); - HEAP32[48] = i3; - _signal(2, 1) | 0; - i13 = _lua_pcallk(i3, 0, 0, i12, 0, 0) | 0; - _signal(2, 0) | 0; - _lua_remove(i3, i12); - if ((i13 | 0) == 0) { - break; - } - } - if ((_lua_type(i3, -1) | 0) == 0) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - i11 = _lua_tolstring(i3, -1, 0) | 0; - i12 = HEAP32[20] | 0; - i10 = HEAP32[_stderr >> 2] | 0; - if ((i12 | 0) != 0) { - HEAP32[i2 >> 2] = i12; - _fprintf(i10 | 0, 496, i2 | 0) | 0; - _fflush(i10 | 0) | 0; - } - HEAP32[i2 >> 2] = (i11 | 0) == 0 ? 48 : i11; - _fprintf(i10 | 0, 912, i2 | 0) | 0; - _fflush(i10 | 0) | 0; - _lua_settop(i3, -2); - _lua_gc(i3, 2, 0) | 0; - } else { - i13 = _luaL_loadbufferx(i3, i10, _strlen(i10 | 0) | 0, i11, 0) | 0; - if ((i13 | 0) == 0) { - i12 = _lua_gettop(i3) | 0; - _lua_pushcclosure(i3, 142, 0); - _lua_insert(i3, i12); - HEAP32[48] = i3; - _signal(2, 1) | 0; - i13 = _lua_pcallk(i3, 0, 0, i12, 0, 0) | 0; - _signal(2, 0) | 0; - _lua_remove(i3, i12); - if ((i13 | 0) == 0) { - break; - } - } - if ((_lua_type(i3, -1) | 0) == 0) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - i11 = _lua_tolstring(i3, -1, 0) | 0; - i10 = HEAP32[20] | 0; - i12 = HEAP32[_stderr >> 2] | 0; - if ((i10 | 0) != 0) { - HEAP32[i2 >> 2] = i10; - _fprintf(i12 | 0, 496, i2 | 0) | 0; - _fflush(i12 | 0) | 0; - } - HEAP32[i2 >> 2] = (i11 | 0) == 0 ? 48 : i11; - _fprintf(i12 | 0, 912, i2 | 0) | 0; - _fflush(i12 | 0) | 0; - _lua_settop(i3, -2); - _lua_gc(i3, 2, 0) | 0; - } - if ((i13 | 0) != 0) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - } - } while (0); - i7 = (i5 | 0) > 0 ? i5 : i7; - L67 : do { - if ((i7 | 0) > 1) { - i10 = 1; - while (1) { - i11 = HEAP32[i4 + (i10 << 2) >> 2] | 0; - i12 = HEAP8[i11 + 1 | 0] | 0; - if ((i12 | 0) == 108) { - i11 = i11 + 2 | 0; - if ((HEAP8[i11] | 0) == 0) { - i10 = i10 + 1 | 0; - i11 = HEAP32[i4 + (i10 << 2) >> 2] | 0; - } - _lua_getglobal(i3, 400); - _lua_pushstring(i3, i11) | 0; - i12 = (_lua_gettop(i3) | 0) + -1 | 0; - _lua_pushcclosure(i3, 142, 0); - _lua_insert(i3, i12); - HEAP32[48] = i3; - _signal(2, 1) | 0; - i13 = _lua_pcallk(i3, 1, 1, i12, 0, 0) | 0; - _signal(2, 0) | 0; - _lua_remove(i3, i12); - if ((i13 | 0) != 0) { - i10 = 58; - break; - } - _lua_setglobal(i3, i11); - } else if ((i12 | 0) == 101) { - i11 = i11 + 2 | 0; - if ((HEAP8[i11] | 0) == 0) { - i10 = i10 + 1 | 0; - i11 = HEAP32[i4 + (i10 << 2) >> 2] | 0; - } - if ((_luaL_loadbufferx(i3, i11, _strlen(i11 | 0) | 0, 384, 0) | 0) != 0) { - i10 = 50; - break; - } - i12 = _lua_gettop(i3) | 0; - _lua_pushcclosure(i3, 142, 0); - _lua_insert(i3, i12); - HEAP32[48] = i3; - _signal(2, 1) | 0; - i13 = _lua_pcallk(i3, 0, 0, i12, 0, 0) | 0; - _signal(2, 0) | 0; - _lua_remove(i3, i12); - if ((i13 | 0) != 0) { - i10 = 50; - break; - } - } - i10 = i10 + 1 | 0; - if ((i10 | 0) >= (i7 | 0)) { - break L67; - } - } - if ((i10 | 0) == 50) { - if ((_lua_type(i3, -1) | 0) == 0) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - i5 = _lua_tolstring(i3, -1, 0) | 0; - i6 = HEAP32[20] | 0; - i4 = HEAP32[_stderr >> 2] | 0; - if ((i6 | 0) != 0) { - HEAP32[i2 >> 2] = i6; - _fprintf(i4 | 0, 496, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - } - HEAP32[i2 >> 2] = (i5 | 0) == 0 ? 48 : i5; - _fprintf(i4 | 0, 912, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - _lua_settop(i3, -2); - _lua_gc(i3, 2, 0) | 0; - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } else if ((i10 | 0) == 58) { - if ((_lua_type(i3, -1) | 0) == 0) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - i5 = _lua_tolstring(i3, -1, 0) | 0; - i6 = HEAP32[20] | 0; - i4 = HEAP32[_stderr >> 2] | 0; - if ((i6 | 0) != 0) { - HEAP32[i2 >> 2] = i6; - _fprintf(i4 | 0, 496, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - } - HEAP32[i2 >> 2] = (i5 | 0) == 0 ? 48 : i5; - _fprintf(i4 | 0, 912, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - _lua_settop(i3, -2); - _lua_gc(i3, 2, 0) | 0; - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - } - } while (0); - do { - if ((i5 | 0) != 0) { - i10 = 0; - while (1) { - if ((HEAP32[i4 + (i10 << 2) >> 2] | 0) == 0) { - break; - } else { - i10 = i10 + 1 | 0; - } - } - i11 = i5 + 1 | 0; - i7 = i10 - i11 | 0; - _luaL_checkstack(i3, i7 + 3 | 0, 352); - if ((i11 | 0) < (i10 | 0)) { - i12 = i11; - do { - _lua_pushstring(i3, HEAP32[i4 + (i12 << 2) >> 2] | 0) | 0; - i12 = i12 + 1 | 0; - } while ((i12 | 0) != (i10 | 0)); - } - _lua_createtable(i3, i7, i11); - if ((i10 | 0) > 0) { - i11 = 0; - do { - _lua_pushstring(i3, HEAP32[i4 + (i11 << 2) >> 2] | 0) | 0; - _lua_rawseti(i3, -2, i11 - i5 | 0); - i11 = i11 + 1 | 0; - } while ((i11 | 0) != (i10 | 0)); - } - _lua_setglobal(i3, 328); - i10 = HEAP32[i4 + (i5 << 2) >> 2] | 0; - if ((_strcmp(i10, 336) | 0) == 0) { - i13 = (_strcmp(HEAP32[i4 + (i5 + -1 << 2) >> 2] | 0, 344) | 0) == 0; - i10 = i13 ? i10 : 0; - } - i10 = _luaL_loadfilex(i3, i10, 0) | 0; - i4 = ~i7; - _lua_insert(i3, i4); - if ((i10 | 0) == 0) { - i13 = (_lua_gettop(i3) | 0) - i7 | 0; - _lua_pushcclosure(i3, 142, 0); - _lua_insert(i3, i13); - HEAP32[48] = i3; - _signal(2, 1) | 0; - i10 = _lua_pcallk(i3, i7, -1, i13, 0, 0) | 0; - _signal(2, 0) | 0; - _lua_remove(i3, i13); - if ((i10 | 0) == 0) { - break; - } - } else { - _lua_settop(i3, i4); - } - if ((_lua_type(i3, -1) | 0) != 0) { - i7 = _lua_tolstring(i3, -1, 0) | 0; - i11 = HEAP32[20] | 0; - i4 = HEAP32[_stderr >> 2] | 0; - if ((i11 | 0) != 0) { - HEAP32[i2 >> 2] = i11; - _fprintf(i4 | 0, 496, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - } - HEAP32[i2 >> 2] = (i7 | 0) == 0 ? 48 : i7; - _fprintf(i4 | 0, 912, i2 | 0) | 0; - _fflush(i4 | 0) | 0; - _lua_settop(i3, -2); - _lua_gc(i3, 2, 0) | 0; - } - if ((i10 | 0) != 0) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - } - } while (0); - if ((i6 | 0) == 0) { - if (!((i8 | i5 | 0) != 0 | i9 ^ 1)) { - i13 = HEAP32[_stdout >> 2] | 0; - _fwrite(440, 1, 51, i13 | 0) | 0; - _fputc(10, i13 | 0) | 0; - _fflush(i13 | 0) | 0; - _dotty(i3); - } - } else { - _dotty(i3); - } - _lua_pushboolean(i3, 1); - i13 = 1; - STACKTOP = i1; - return i13 | 0; -} -function _DumpFunction(i6, i2) { - i6 = i6 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i17 = i5 + 56 | 0; - i19 = i5 + 52 | 0; - i20 = i5 + 48 | 0; - i18 = i5; - i21 = i5 + 60 | 0; - i22 = i5 + 44 | 0; - i1 = i5 + 40 | 0; - i16 = i5 + 36 | 0; - i23 = i5 + 32 | 0; - i3 = i5 + 28 | 0; - i7 = i5 + 24 | 0; - i8 = i5 + 20 | 0; - i9 = i5 + 16 | 0; - i10 = i5 + 12 | 0; - i12 = i5 + 8 | 0; - HEAP32[i17 >> 2] = HEAP32[i6 + 64 >> 2]; - i4 = i2 + 16 | 0; - i28 = HEAP32[i4 >> 2] | 0; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 4, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - HEAP32[i17 >> 2] = HEAP32[i6 + 68 >> 2]; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 4, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - HEAP8[i17] = HEAP8[i6 + 76 | 0] | 0; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 1, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - HEAP8[i17] = HEAP8[i6 + 77 | 0] | 0; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 1, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - HEAP8[i17] = HEAP8[i6 + 78 | 0] | 0; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 1, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - i25 = HEAP32[i6 + 12 >> 2] | 0; - i24 = HEAP32[i6 + 48 >> 2] | 0; - HEAP32[i23 >> 2] = i24; - if ((i28 | 0) == 0) { - i26 = i2 + 4 | 0; - i27 = i2 + 8 | 0; - i28 = FUNCTION_TABLE_iiiii[HEAP32[i26 >> 2] & 3](HEAP32[i2 >> 2] | 0, i23, 4, HEAP32[i27 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i26 >> 2] & 3](HEAP32[i2 >> 2] | 0, i25, i24 << 2, HEAP32[i27 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - i25 = HEAP32[i6 + 44 >> 2] | 0; - HEAP32[i22 >> 2] = i25; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i22, 4, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - } else { - i11 = 13; - } - } else { - i11 = 13; - } - if ((i11 | 0) == 13) { - i25 = HEAP32[i6 + 44 >> 2] | 0; - HEAP32[i22 >> 2] = i25; - } - if ((i25 | 0) > 0) { - i24 = i6 + 8 | 0; - i23 = i2 + 4 | 0; - i22 = i2 + 8 | 0; - i26 = 0; - do { - i30 = HEAP32[i24 >> 2] | 0; - i27 = i30 + (i26 << 4) | 0; - i30 = i30 + (i26 << 4) + 8 | 0; - i29 = HEAP32[i30 >> 2] | 0; - HEAP8[i17] = i29 & 15; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 1, HEAP32[i22 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - i29 = HEAP32[i30 >> 2] | 0; - } - i29 = i29 & 15; - do { - if ((i29 | 0) == 3) { - HEAPF64[i18 >> 3] = +HEAPF64[i27 >> 3]; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i18, 8, HEAP32[i22 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - } else if ((i29 | 0) == 1) { - HEAP8[i21] = HEAP32[i27 >> 2]; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i21, 1, HEAP32[i22 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - } else if ((i29 | 0) == 4) { - i27 = HEAP32[i27 >> 2] | 0; - if ((i27 | 0) == 0) { - HEAP32[i19 >> 2] = 0; - if ((i28 | 0) != 0) { - break; - } - i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i19, 4, HEAP32[i22 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - break; - } - HEAP32[i20 >> 2] = (HEAP32[i27 + 12 >> 2] | 0) + 1; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i20, 4, HEAP32[i22 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i27 + 16 | 0, HEAP32[i20 >> 2] | 0, HEAP32[i22 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - } - } - } while (0); - i26 = i26 + 1 | 0; - } while ((i26 | 0) != (i25 | 0)); - } - i18 = HEAP32[i6 + 56 >> 2] | 0; - HEAP32[i17 >> 2] = i18; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 4, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - if ((i18 | 0) > 0) { - i17 = i6 + 16 | 0; - i19 = 0; - do { - _DumpFunction(HEAP32[(HEAP32[i17 >> 2] | 0) + (i19 << 2) >> 2] | 0, i2); - i19 = i19 + 1 | 0; - } while ((i19 | 0) != (i18 | 0)); - i28 = HEAP32[i4 >> 2] | 0; - } - i17 = i6 + 40 | 0; - i18 = HEAP32[i17 >> 2] | 0; - HEAP32[i16 >> 2] = i18; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i16, 4, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - if ((i18 | 0) > 0) { - i19 = i6 + 28 | 0; - i16 = i2 + 4 | 0; - i20 = i2 + 8 | 0; - i21 = 0; - do { - i22 = HEAP32[i19 >> 2] | 0; - HEAP8[i1] = HEAP8[i22 + (i21 << 3) + 4 | 0] | 0; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i16 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 1, HEAP32[i20 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - i22 = HEAP32[i19 >> 2] | 0; - } - HEAP8[i1] = HEAP8[i22 + (i21 << 3) + 5 | 0] | 0; - if ((i28 | 0) == 0) { - i28 = FUNCTION_TABLE_iiiii[HEAP32[i16 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 1, HEAP32[i20 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i28; - } - i21 = i21 + 1 | 0; - } while ((i21 | 0) != (i18 | 0)); - } - i16 = i2 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) == 0 ? (i13 = HEAP32[i6 + 36 >> 2] | 0, (i13 | 0) != 0) : 0) { - HEAP32[i12 >> 2] = (HEAP32[i13 + 12 >> 2] | 0) + 1; - if ((i28 | 0) == 0 ? (i14 = i2 + 4 | 0, i15 = i2 + 8 | 0, i30 = FUNCTION_TABLE_iiiii[HEAP32[i14 >> 2] & 3](HEAP32[i2 >> 2] | 0, i12, 4, HEAP32[i15 >> 2] | 0) | 0, HEAP32[i4 >> 2] = i30, (i30 | 0) == 0) : 0) { - HEAP32[i4 >> 2] = FUNCTION_TABLE_iiiii[HEAP32[i14 >> 2] & 3](HEAP32[i2 >> 2] | 0, i13 + 16 | 0, HEAP32[i12 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0; - } - } else { - i12 = i10; - i11 = 50; - } - if ((i11 | 0) == 50) { - HEAP32[i10 >> 2] = 0; - if ((i28 | 0) == 0) { - HEAP32[i4 >> 2] = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i12, 4, HEAP32[i2 + 8 >> 2] | 0) | 0; - } - } - if ((HEAP32[i16 >> 2] | 0) == 0) { - i11 = HEAP32[i6 + 52 >> 2] | 0; - } else { - i11 = 0; - } - i10 = HEAP32[i6 + 20 >> 2] | 0; - HEAP32[i9 >> 2] = i11; - i14 = HEAP32[i4 >> 2] | 0; - if ((i14 | 0) == 0) { - i12 = i2 + 4 | 0; - i13 = i2 + 8 | 0; - i14 = FUNCTION_TABLE_iiiii[HEAP32[i12 >> 2] & 3](HEAP32[i2 >> 2] | 0, i9, 4, HEAP32[i13 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i12 >> 2] & 3](HEAP32[i2 >> 2] | 0, i10, i11 << 2, HEAP32[i13 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - } - } - if ((HEAP32[i16 >> 2] | 0) == 0) { - i9 = HEAP32[i6 + 60 >> 2] | 0; - } else { - i9 = 0; - } - HEAP32[i8 >> 2] = i9; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i8, 4, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - } - if ((i9 | 0) > 0) { - i10 = i6 + 24 | 0; - i11 = i2 + 4 | 0; - i8 = i2 + 8 | 0; - i12 = 0; - do { - i13 = HEAP32[(HEAP32[i10 >> 2] | 0) + (i12 * 12 | 0) >> 2] | 0; - if ((i13 | 0) == 0) { - HEAP32[i1 >> 2] = 0; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 4, HEAP32[i8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - } - } else { - HEAP32[i3 >> 2] = (HEAP32[i13 + 12 >> 2] | 0) + 1; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i3, 4, HEAP32[i8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i13 + 16 | 0, HEAP32[i3 >> 2] | 0, HEAP32[i8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - } - } - } - i13 = HEAP32[i10 >> 2] | 0; - HEAP32[i1 >> 2] = HEAP32[i13 + (i12 * 12 | 0) + 4 >> 2]; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 4, HEAP32[i8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - i13 = HEAP32[i10 >> 2] | 0; - } - HEAP32[i1 >> 2] = HEAP32[i13 + (i12 * 12 | 0) + 8 >> 2]; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 4, HEAP32[i8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - } - i12 = i12 + 1 | 0; - } while ((i12 | 0) != (i9 | 0)); - } - if ((HEAP32[i16 >> 2] | 0) == 0) { - i8 = HEAP32[i17 >> 2] | 0; - } else { - i8 = 0; - } - HEAP32[i7 >> 2] = i8; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i7, 4, HEAP32[i2 + 8 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - } - if ((i8 | 0) <= 0) { - STACKTOP = i5; - return; - } - i7 = i6 + 28 | 0; - i6 = i2 + 4 | 0; - i9 = i2 + 8 | 0; - i10 = 0; - do { - i11 = HEAP32[(HEAP32[i7 >> 2] | 0) + (i10 << 3) >> 2] | 0; - if ((i11 | 0) == 0) { - HEAP32[i1 >> 2] = 0; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 4, HEAP32[i9 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - } - } else { - HEAP32[i3 >> 2] = (HEAP32[i11 + 12 >> 2] | 0) + 1; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i2 >> 2] | 0, i3, 4, HEAP32[i9 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - if ((i14 | 0) == 0) { - i14 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i2 >> 2] | 0, i11 + 16 | 0, HEAP32[i3 >> 2] | 0, HEAP32[i9 >> 2] | 0) | 0; - HEAP32[i4 >> 2] = i14; - } - } - } - i10 = i10 + 1 | 0; - } while ((i10 | 0) != (i8 | 0)); - STACKTOP = i5; - return; -} -function _LoadFunction(i2, i6) { - i2 = i2 | 0; - i6 = i6 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i1; - i5 = i1 + 8 | 0; - i4 = i2 + 4 | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - _error(i2, 8824); - } - i8 = HEAP32[i3 >> 2] | 0; - if ((i8 | 0) < 0) { - _error(i2, 8872); - } - HEAP32[i6 + 64 >> 2] = i8; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - _error(i2, 8824); - } - i8 = HEAP32[i3 >> 2] | 0; - if ((i8 | 0) < 0) { - _error(i2, 8872); - } - HEAP32[i6 + 68 >> 2] = i8; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) { - _error(i2, 8824); - } - HEAP8[i6 + 76 | 0] = HEAP8[i3] | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) { - _error(i2, 8824); - } - HEAP8[i6 + 77 | 0] = HEAP8[i3] | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) { - _error(i2, 8824); - } - HEAP8[i6 + 78 | 0] = HEAP8[i3] | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - _error(i2, 8824); - } - i9 = HEAP32[i3 >> 2] | 0; - if ((i9 | 0) < 0) { - _error(i2, 8872); - } - i8 = HEAP32[i2 >> 2] | 0; - if ((i9 + 1 | 0) >>> 0 > 1073741823) { - _luaM_toobig(i8); - } - i14 = i9 << 2; - i13 = _luaM_realloc_(i8, 0, 0, i14) | 0; - HEAP32[i6 + 12 >> 2] = i13; - HEAP32[i6 + 48 >> 2] = i9; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i13, i14) | 0) != 0) { - _error(i2, 8824); - } - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - _error(i2, 8824); - } - i8 = HEAP32[i3 >> 2] | 0; - if ((i8 | 0) < 0) { - _error(i2, 8872); - } - i9 = HEAP32[i2 >> 2] | 0; - if ((i8 + 1 | 0) >>> 0 > 268435455) { - _luaM_toobig(i9); - } - i11 = _luaM_realloc_(i9, 0, 0, i8 << 4) | 0; - i9 = i6 + 8 | 0; - HEAP32[i9 >> 2] = i11; - HEAP32[i6 + 44 >> 2] = i8; - i12 = (i8 | 0) > 0; - L43 : do { - if (i12) { - i10 = 0; - do { - HEAP32[i11 + (i10 << 4) + 8 >> 2] = 0; - i10 = i10 + 1 | 0; - } while ((i10 | 0) != (i8 | 0)); - if (i12) { - i10 = i2 + 8 | 0; - i13 = 0; - while (1) { - i12 = i11 + (i13 << 4) | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) { - i9 = 34; - break; - } - i14 = HEAP8[i3] | 0; - if ((i14 | 0) == 4) { - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - i9 = 44; - break; - } - i14 = HEAP32[i3 >> 2] | 0; - if ((i14 | 0) == 0) { - i14 = 0; - } else { - i14 = _luaZ_openspace(HEAP32[i2 >> 2] | 0, HEAP32[i10 >> 2] | 0, i14) | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i14, HEAP32[i3 >> 2] | 0) | 0) != 0) { - i9 = 47; - break; - } - i14 = _luaS_newlstr(HEAP32[i2 >> 2] | 0, i14, (HEAP32[i3 >> 2] | 0) + -1 | 0) | 0; - } - HEAP32[i12 >> 2] = i14; - HEAP32[i11 + (i13 << 4) + 8 >> 2] = HEAPU8[i14 + 4 | 0] | 64; - } else if ((i14 | 0) == 1) { - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) { - i9 = 38; - break; - } - HEAP32[i12 >> 2] = HEAP8[i3] | 0; - HEAP32[i11 + (i13 << 4) + 8 >> 2] = 1; - } else if ((i14 | 0) == 3) { - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 8) | 0) != 0) { - i9 = 41; - break; - } - HEAPF64[i12 >> 3] = +HEAPF64[i3 >> 3]; - HEAP32[i11 + (i13 << 4) + 8 >> 2] = 3; - } else if ((i14 | 0) == 0) { - HEAP32[i11 + (i13 << 4) + 8 >> 2] = 0; - } - i13 = i13 + 1 | 0; - if ((i13 | 0) >= (i8 | 0)) { - break L43; - } - i11 = HEAP32[i9 >> 2] | 0; - } - if ((i9 | 0) == 34) { - _error(i2, 8824); - } else if ((i9 | 0) == 38) { - _error(i2, 8824); - } else if ((i9 | 0) == 41) { - _error(i2, 8824); - } else if ((i9 | 0) == 44) { - _error(i2, 8824); - } else if ((i9 | 0) == 47) { - _error(i2, 8824); - } - } - } - } while (0); - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - _error(i2, 8824); - } - i8 = HEAP32[i3 >> 2] | 0; - if ((i8 | 0) < 0) { - _error(i2, 8872); - } - i9 = HEAP32[i2 >> 2] | 0; - if ((i8 + 1 | 0) >>> 0 > 1073741823) { - _luaM_toobig(i9); - } - i11 = _luaM_realloc_(i9, 0, 0, i8 << 2) | 0; - i9 = i6 + 16 | 0; - HEAP32[i9 >> 2] = i11; - HEAP32[i6 + 56 >> 2] = i8; - i10 = (i8 | 0) > 0; - if (i10) { - i12 = 0; - while (1) { - HEAP32[i11 + (i12 << 2) >> 2] = 0; - i12 = i12 + 1 | 0; - if ((i12 | 0) == (i8 | 0)) { - break; - } - i11 = HEAP32[i9 >> 2] | 0; - } - if (i10) { - i10 = 0; - do { - i14 = _luaF_newproto(HEAP32[i2 >> 2] | 0) | 0; - HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 << 2) >> 2] = i14; - _LoadFunction(i2, HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 << 2) >> 2] | 0); - i10 = i10 + 1 | 0; - } while ((i10 | 0) != (i8 | 0)); - } - } - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - _error(i2, 8824); - } - i9 = HEAP32[i3 >> 2] | 0; - if ((i9 | 0) < 0) { - _error(i2, 8872); - } - i8 = HEAP32[i2 >> 2] | 0; - if ((i9 + 1 | 0) >>> 0 > 536870911) { - _luaM_toobig(i8); - } - i10 = _luaM_realloc_(i8, 0, 0, i9 << 3) | 0; - i8 = i6 + 28 | 0; - HEAP32[i8 >> 2] = i10; - HEAP32[i6 + 40 >> 2] = i9; - L98 : do { - if ((i9 | 0) > 0) { - HEAP32[i10 >> 2] = 0; - if ((i9 | 0) == 1) { - i10 = 0; - } else { - i10 = 1; - while (1) { - HEAP32[(HEAP32[i8 >> 2] | 0) + (i10 << 3) >> 2] = 0; - i10 = i10 + 1 | 0; - if ((i10 | 0) == (i9 | 0)) { - i10 = 0; - break; - } - } - } - while (1) { - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) { - i9 = 73; - break; - } - HEAP8[(HEAP32[i8 >> 2] | 0) + (i10 << 3) + 4 | 0] = HEAP8[i3] | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) { - i9 = 75; - break; - } - HEAP8[(HEAP32[i8 >> 2] | 0) + (i10 << 3) + 5 | 0] = HEAP8[i3] | 0; - i10 = i10 + 1 | 0; - if ((i10 | 0) >= (i9 | 0)) { - break L98; - } - } - if ((i9 | 0) == 73) { - _error(i2, 8824); - } else if ((i9 | 0) == 75) { - _error(i2, 8824); - } - } - } while (0); - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - _error(i2, 8824); - } - i9 = HEAP32[i3 >> 2] | 0; - do { - if ((i9 | 0) != 0) { - i9 = _luaZ_openspace(HEAP32[i2 >> 2] | 0, HEAP32[i2 + 8 >> 2] | 0, i9) | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i9, HEAP32[i3 >> 2] | 0) | 0) == 0) { - i7 = _luaS_newlstr(HEAP32[i2 >> 2] | 0, i9, (HEAP32[i3 >> 2] | 0) + -1 | 0) | 0; - break; - } else { - _error(i2, 8824); - } - } else { - i7 = 0; - } - } while (0); - HEAP32[i6 + 36 >> 2] = i7; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - _error(i2, 8824); - } - i7 = HEAP32[i3 >> 2] | 0; - if ((i7 | 0) < 0) { - _error(i2, 8872); - } - i9 = HEAP32[i2 >> 2] | 0; - if ((i7 + 1 | 0) >>> 0 > 1073741823) { - _luaM_toobig(i9); - } - i14 = i7 << 2; - i13 = _luaM_realloc_(i9, 0, 0, i14) | 0; - HEAP32[i6 + 20 >> 2] = i13; - HEAP32[i6 + 52 >> 2] = i7; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i13, i14) | 0) != 0) { - _error(i2, 8824); - } - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - _error(i2, 8824); - } - i7 = HEAP32[i3 >> 2] | 0; - if ((i7 | 0) < 0) { - _error(i2, 8872); - } - i9 = HEAP32[i2 >> 2] | 0; - if ((i7 + 1 | 0) >>> 0 > 357913941) { - _luaM_toobig(i9); - } - i10 = _luaM_realloc_(i9, 0, 0, i7 * 12 | 0) | 0; - i9 = i6 + 24 | 0; - HEAP32[i9 >> 2] = i10; - HEAP32[i6 + 60 >> 2] = i7; - L141 : do { - if ((i7 | 0) > 0) { - HEAP32[i10 >> 2] = 0; - if ((i7 | 0) != 1) { - i6 = 1; - do { - HEAP32[(HEAP32[i9 >> 2] | 0) + (i6 * 12 | 0) >> 2] = 0; - i6 = i6 + 1 | 0; - } while ((i6 | 0) != (i7 | 0)); - } - i6 = i2 + 8 | 0; - i10 = 0; - while (1) { - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - i9 = 102; - break; - } - i11 = HEAP32[i3 >> 2] | 0; - if ((i11 | 0) == 0) { - i11 = 0; - } else { - i11 = _luaZ_openspace(HEAP32[i2 >> 2] | 0, HEAP32[i6 >> 2] | 0, i11) | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i11, HEAP32[i3 >> 2] | 0) | 0) != 0) { - i9 = 105; - break; - } - i11 = _luaS_newlstr(HEAP32[i2 >> 2] | 0, i11, (HEAP32[i3 >> 2] | 0) + -1 | 0) | 0; - } - HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 * 12 | 0) >> 2] = i11; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - i9 = 108; - break; - } - i11 = HEAP32[i3 >> 2] | 0; - if ((i11 | 0) < 0) { - i9 = 110; - break; - } - HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 * 12 | 0) + 4 >> 2] = i11; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - i9 = 112; - break; - } - i11 = HEAP32[i3 >> 2] | 0; - if ((i11 | 0) < 0) { - i9 = 114; - break; - } - HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 * 12 | 0) + 8 >> 2] = i11; - i10 = i10 + 1 | 0; - if ((i10 | 0) >= (i7 | 0)) { - break L141; - } - } - if ((i9 | 0) == 102) { - _error(i2, 8824); - } else if ((i9 | 0) == 105) { - _error(i2, 8824); - } else if ((i9 | 0) == 108) { - _error(i2, 8824); - } else if ((i9 | 0) == 110) { - _error(i2, 8872); - } else if ((i9 | 0) == 112) { - _error(i2, 8824); - } else if ((i9 | 0) == 114) { - _error(i2, 8872); - } - } - } while (0); - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i5, 4) | 0) != 0) { - _error(i2, 8824); - } - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) < 0) { - _error(i2, 8872); - } - if ((i6 | 0) <= 0) { - STACKTOP = i1; - return; - } - i5 = i2 + 8 | 0; - i7 = 0; - while (1) { - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) { - i9 = 123; - break; - } - i9 = HEAP32[i3 >> 2] | 0; - if ((i9 | 0) == 0) { - i9 = 0; - } else { - i9 = _luaZ_openspace(HEAP32[i2 >> 2] | 0, HEAP32[i5 >> 2] | 0, i9) | 0; - if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i9, HEAP32[i3 >> 2] | 0) | 0) != 0) { - i9 = 126; - break; - } - i9 = _luaS_newlstr(HEAP32[i2 >> 2] | 0, i9, (HEAP32[i3 >> 2] | 0) + -1 | 0) | 0; - } - HEAP32[(HEAP32[i8 >> 2] | 0) + (i7 << 3) >> 2] = i9; - i7 = i7 + 1 | 0; - if ((i7 | 0) >= (i6 | 0)) { - i9 = 129; - break; - } - } - if ((i9 | 0) == 123) { - _error(i2, 8824); - } else if ((i9 | 0) == 126) { - _error(i2, 8824); - } else if ((i9 | 0) == 129) { - STACKTOP = i1; - return; - } -} -function _exp2reg(i4, i1, i7) { - i4 = i4 | 0; - i1 = i1 | 0; - i7 = i7 | 0; - var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0; - i5 = STACKTOP; - _discharge2reg(i4, i1, i7); - i6 = i1 + 16 | 0; - do { - if ((HEAP32[i1 >> 2] | 0) == 10 ? (i10 = HEAP32[i1 + 8 >> 2] | 0, !((i10 | 0) == -1)) : 0) { - i22 = HEAP32[i6 >> 2] | 0; - if ((i22 | 0) == -1) { - HEAP32[i6 >> 2] = i10; - break; - } - i20 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i19 = i20 + (i22 << 2) | 0; - i21 = HEAP32[i19 >> 2] | 0; - i23 = (i21 >>> 14) + -131071 | 0; - if ((i23 | 0) == -1) { - break; - } - i23 = i22 + 1 + i23 | 0; - if ((i23 | 0) == -1) { - break; - } else { - i22 = i23; - } - } - i10 = i10 + ~i22 | 0; - if ((((i10 | 0) > -1 ? i10 : 0 - i10 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624); - } else { - HEAP32[i19 >> 2] = (i10 << 14) + 2147467264 | i21 & 16383; - break; - } - } - } while (0); - i21 = HEAP32[i6 >> 2] | 0; - i10 = i1 + 20 | 0; - i19 = HEAP32[i10 >> 2] | 0; - if ((i21 | 0) == (i19 | 0)) { - HEAP32[i6 >> 2] = -1; - HEAP32[i10 >> 2] = -1; - i25 = i1 + 8 | 0; - HEAP32[i25 >> 2] = i7; - HEAP32[i1 >> 2] = 6; - STACKTOP = i5; - return; - } - L18 : do { - if ((i21 | 0) == -1) { - i18 = 20; - } else { - i20 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i23 = i20 + (i21 << 2) | 0; - if ((i21 | 0) > 0 ? (i18 = HEAP32[i20 + (i21 + -1 << 2) >> 2] | 0, (HEAP8[5584 + (i18 & 63) | 0] | 0) < 0) : 0) { - i22 = i18; - } else { - i22 = HEAP32[i23 >> 2] | 0; - } - if ((i22 & 63 | 0) != 28) { - i18 = 28; - break L18; - } - i22 = ((HEAP32[i23 >> 2] | 0) >>> 14) + -131071 | 0; - if ((i22 | 0) == -1) { - i18 = 20; - break L18; - } - i21 = i21 + 1 + i22 | 0; - if ((i21 | 0) == -1) { - i18 = 20; - break; - } - } - } - } while (0); - L29 : do { - if ((i18 | 0) == 20) { - if ((i19 | 0) == -1) { - i15 = -1; - i8 = -1; - } else { - i20 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i21 = i20 + (i19 << 2) | 0; - if ((i19 | 0) > 0 ? (i17 = HEAP32[i20 + (i19 + -1 << 2) >> 2] | 0, (HEAP8[5584 + (i17 & 63) | 0] | 0) < 0) : 0) { - i22 = i17; - } else { - i22 = HEAP32[i21 >> 2] | 0; - } - if ((i22 & 63 | 0) != 28) { - i18 = 28; - break L29; - } - i21 = ((HEAP32[i21 >> 2] | 0) >>> 14) + -131071 | 0; - if ((i21 | 0) == -1) { - i15 = -1; - i8 = -1; - break L29; - } - i19 = i19 + 1 + i21 | 0; - if ((i19 | 0) == -1) { - i15 = -1; - i8 = -1; - break; - } - } - } - } - } while (0); - do { - if ((i18 | 0) == 28) { - i17 = i4 + 28 | 0; - do { - if ((HEAP32[i1 >> 2] | 0) != 10) { - i21 = HEAP32[i17 >> 2] | 0; - HEAP32[i17 >> 2] = -1; - i18 = _luaK_code(i4, 2147450903) | 0; - if (!((i21 | 0) == -1)) { - if (!((i18 | 0) == -1)) { - i23 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - i22 = i18; - while (1) { - i20 = i23 + (i22 << 2) | 0; - i19 = HEAP32[i20 >> 2] | 0; - i24 = (i19 >>> 14) + -131071 | 0; - if ((i24 | 0) == -1) { - break; - } - i24 = i22 + 1 + i24 | 0; - if ((i24 | 0) == -1) { - break; - } else { - i22 = i24; - } - } - i21 = i21 + ~i22 | 0; - if ((((i21 | 0) > -1 ? i21 : 0 - i21 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624); - } else { - HEAP32[i20 >> 2] = (i21 << 14) + 2147467264 | i19 & 16383; - i16 = i18; - break; - } - } else { - i16 = i21; - } - } else { - i16 = i18; - } - } else { - i16 = -1; - } - } while (0); - i24 = i4 + 20 | 0; - i25 = i4 + 24 | 0; - HEAP32[i25 >> 2] = HEAP32[i24 >> 2]; - i19 = i7 << 6; - i18 = _luaK_code(i4, i19 | 16387) | 0; - HEAP32[i25 >> 2] = HEAP32[i24 >> 2]; - i19 = _luaK_code(i4, i19 | 8388611) | 0; - HEAP32[i25 >> 2] = HEAP32[i24 >> 2]; - if (!((i16 | 0) == -1)) { - i22 = HEAP32[i17 >> 2] | 0; - if ((i22 | 0) == -1) { - HEAP32[i17 >> 2] = i16; - i15 = i18; - i8 = i19; - break; - } - i17 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i21 = i17 + (i22 << 2) | 0; - i20 = HEAP32[i21 >> 2] | 0; - i23 = (i20 >>> 14) + -131071 | 0; - if ((i23 | 0) == -1) { - break; - } - i23 = i22 + 1 + i23 | 0; - if ((i23 | 0) == -1) { - break; - } else { - i22 = i23; - } - } - i16 = i16 + ~i22 | 0; - if ((((i16 | 0) > -1 ? i16 : 0 - i16 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624); - } else { - HEAP32[i21 >> 2] = (i16 << 14) + 2147467264 | i20 & 16383; - i15 = i18; - i8 = i19; - break; - } - } else { - i15 = i18; - i8 = i19; - } - } - } while (0); - i16 = HEAP32[i4 + 20 >> 2] | 0; - HEAP32[i4 + 24 >> 2] = i16; - i22 = HEAP32[i10 >> 2] | 0; - L67 : do { - if (!((i22 | 0) == -1)) { - i19 = (i7 | 0) == 255; - i17 = i7 << 6 & 16320; - i18 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i20 = i18 + (i22 << 2) | 0; - i23 = HEAP32[i20 >> 2] | 0; - i21 = (i23 >>> 14) + -131071 | 0; - if ((i21 | 0) == -1) { - i21 = -1; - } else { - i21 = i22 + 1 + i21 | 0; - } - if ((i22 | 0) > 0 ? (i14 = i18 + (i22 + -1 << 2) | 0, i13 = HEAP32[i14 >> 2] | 0, (HEAP8[5584 + (i13 & 63) | 0] | 0) < 0) : 0) { - i24 = i14; - i25 = i13; - } else { - i24 = i20; - i25 = i23; - } - if ((i25 & 63 | 0) == 28) { - i23 = i25 >>> 23; - if (i19 | (i23 | 0) == (i7 | 0)) { - i23 = i25 & 8372224 | i23 << 6 | 27; - } else { - i23 = i25 & -16321 | i17; - } - HEAP32[i24 >> 2] = i23; - i22 = i16 + ~i22 | 0; - if ((((i22 | 0) > -1 ? i22 : 0 - i22 | 0) | 0) > 131071) { - i18 = 58; - break; - } - i22 = HEAP32[i20 >> 2] & 16383 | (i22 << 14) + 2147467264; - } else { - i22 = i15 + ~i22 | 0; - if ((((i22 | 0) > -1 ? i22 : 0 - i22 | 0) | 0) > 131071) { - i18 = 61; - break; - } - i22 = i23 & 16383 | (i22 << 14) + 2147467264; - } - HEAP32[i20 >> 2] = i22; - if ((i21 | 0) == -1) { - break L67; - } else { - i22 = i21; - } - } - if ((i18 | 0) == 58) { - _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624); - } else if ((i18 | 0) == 61) { - _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624); - } - } - } while (0); - i20 = HEAP32[i6 >> 2] | 0; - if ((i20 | 0) == -1) { - HEAP32[i6 >> 2] = -1; - HEAP32[i10 >> 2] = -1; - i25 = i1 + 8 | 0; - HEAP32[i25 >> 2] = i7; - HEAP32[i1 >> 2] = 6; - STACKTOP = i5; - return; - } - i13 = i7 << 6; - i15 = i13 & 16320; - i14 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - if ((i7 | 0) == 255) { - while (1) { - i17 = i14 + (i20 << 2) | 0; - i19 = HEAP32[i17 >> 2] | 0; - i18 = (i19 >>> 14) + -131071 | 0; - if ((i18 | 0) == -1) { - i18 = -1; - } else { - i18 = i20 + 1 + i18 | 0; - } - if ((i20 | 0) > 0 ? (i12 = i14 + (i20 + -1 << 2) | 0, i11 = HEAP32[i12 >> 2] | 0, (HEAP8[5584 + (i11 & 63) | 0] | 0) < 0) : 0) { - i22 = i12; - i21 = i11; - } else { - i22 = i17; - i21 = i19; - } - if ((i21 & 63 | 0) == 28) { - HEAP32[i22 >> 2] = i21 & 8372224 | i21 >>> 23 << 6 | 27; - i19 = i16 + ~i20 | 0; - if ((((i19 | 0) > -1 ? i19 : 0 - i19 | 0) | 0) > 131071) { - i18 = 87; - break; - } - i19 = HEAP32[i17 >> 2] & 16383 | (i19 << 14) + 2147467264; - } else { - i20 = i8 + ~i20 | 0; - if ((((i20 | 0) > -1 ? i20 : 0 - i20 | 0) | 0) > 131071) { - i18 = 90; - break; - } - i19 = i19 & 16383 | (i20 << 14) + 2147467264; - } - HEAP32[i17 >> 2] = i19; - if ((i18 | 0) == -1) { - i18 = 93; - break; - } else { - i20 = i18; - } - } - if ((i18 | 0) == 87) { - i25 = i4 + 12 | 0; - i25 = HEAP32[i25 >> 2] | 0; - _luaX_syntaxerror(i25, 10624); - } else if ((i18 | 0) == 90) { - i25 = i4 + 12 | 0; - i25 = HEAP32[i25 >> 2] | 0; - _luaX_syntaxerror(i25, 10624); - } else if ((i18 | 0) == 93) { - HEAP32[i6 >> 2] = -1; - HEAP32[i10 >> 2] = -1; - i25 = i1 + 8 | 0; - HEAP32[i25 >> 2] = i7; - HEAP32[i1 >> 2] = 6; - STACKTOP = i5; - return; - } - } else { - i9 = i20; - } - while (1) { - i11 = i14 + (i9 << 2) | 0; - i17 = HEAP32[i11 >> 2] | 0; - i12 = (i17 >>> 14) + -131071 | 0; - if ((i12 | 0) == -1) { - i12 = -1; - } else { - i12 = i9 + 1 + i12 | 0; - } - if ((i9 | 0) > 0 ? (i3 = i14 + (i9 + -1 << 2) | 0, i2 = HEAP32[i3 >> 2] | 0, (HEAP8[5584 + (i2 & 63) | 0] | 0) < 0) : 0) { - i18 = i3; - i19 = i2; - } else { - i18 = i11; - i19 = i17; - } - if ((i19 & 63 | 0) == 28) { - if ((i19 >>> 23 | 0) == (i7 | 0)) { - i17 = i19 & 8372224 | i13 | 27; - } else { - i17 = i19 & -16321 | i15; - } - HEAP32[i18 >> 2] = i17; - i9 = i16 + ~i9 | 0; - if ((((i9 | 0) > -1 ? i9 : 0 - i9 | 0) | 0) > 131071) { - i18 = 87; - break; - } - i9 = HEAP32[i11 >> 2] & 16383 | (i9 << 14) + 2147467264; - } else { - i9 = i8 + ~i9 | 0; - if ((((i9 | 0) > -1 ? i9 : 0 - i9 | 0) | 0) > 131071) { - i18 = 90; - break; - } - i9 = i17 & 16383 | (i9 << 14) + 2147467264; - } - HEAP32[i11 >> 2] = i9; - if ((i12 | 0) == -1) { - i18 = 93; - break; - } else { - i9 = i12; - } - } - if ((i18 | 0) == 87) { - i25 = i4 + 12 | 0; - i25 = HEAP32[i25 >> 2] | 0; - _luaX_syntaxerror(i25, 10624); - } else if ((i18 | 0) == 90) { - i25 = i4 + 12 | 0; - i25 = HEAP32[i25 >> 2] | 0; - _luaX_syntaxerror(i25, 10624); - } else if ((i18 | 0) == 93) { - HEAP32[i6 >> 2] = -1; - HEAP32[i10 >> 2] = -1; - i25 = i1 + 8 | 0; - HEAP32[i25 >> 2] = i7; - HEAP32[i1 >> 2] = 6; - STACKTOP = i5; - return; - } -} -function _propagatemark(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0; - i1 = STACKTOP; - i15 = i2 + 84 | 0; - i3 = HEAP32[i15 >> 2] | 0; - i10 = i3 + 5 | 0; - HEAP8[i10] = HEAPU8[i10] | 4; - switch (HEAPU8[i3 + 4 | 0] | 0) { - case 5: - { - i9 = i3 + 24 | 0; - HEAP32[i15 >> 2] = HEAP32[i9 >> 2]; - i15 = i3 + 8 | 0; - i14 = HEAP32[i15 >> 2] | 0; - do { - if ((i14 | 0) != 0) { - if ((HEAP8[i14 + 6 | 0] & 8) == 0) { - i11 = _luaT_gettm(i14, 3, HEAP32[i2 + 196 >> 2] | 0) | 0; - i14 = HEAP32[i15 >> 2] | 0; - if ((i14 | 0) != 0) { - i6 = 5; - } - } else { - i11 = 0; - i6 = 5; - } - if ((i6 | 0) == 5) { - if (!((HEAP8[i14 + 5 | 0] & 3) == 0)) { - _reallymarkobject(i2, i14); - } - } - if (((i11 | 0) != 0 ? (HEAP32[i11 + 8 >> 2] & 15 | 0) == 4 : 0) ? (i13 = (HEAP32[i11 >> 2] | 0) + 16 | 0, i12 = _strchr(i13, 107) | 0, i12 = (i12 | 0) != 0, i13 = (_strchr(i13, 118) | 0) == 0, !(i13 & (i12 ^ 1))) : 0) { - HEAP8[i10] = HEAP8[i10] & 251; - if (i12) { - if (i13) { - _traverseephemeron(i2, i3) | 0; - break; - } else { - i15 = i2 + 100 | 0; - HEAP32[i9 >> 2] = HEAP32[i15 >> 2]; - HEAP32[i15 >> 2] = i3; - break; - } - } - i15 = 1 << HEAPU8[i3 + 7 | 0]; - i5 = HEAP32[i3 + 16 >> 2] | 0; - i4 = i5 + (i15 << 5) | 0; - i8 = (HEAP32[i3 + 28 >> 2] | 0) > 0 | 0; - if ((i15 | 0) > 0) { - do { - i12 = i5 + 8 | 0; - i10 = i5 + 24 | 0; - i11 = (HEAP32[i10 >> 2] & 64 | 0) == 0; - do { - if ((HEAP32[i12 >> 2] | 0) == 0) { - if (!i11 ? !((HEAP8[(HEAP32[i5 + 16 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) { - HEAP32[i10 >> 2] = 11; - } - } else { - if (!i11 ? (i7 = HEAP32[i5 + 16 >> 2] | 0, !((HEAP8[i7 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i2, i7); - } - if ((i8 | 0) == 0) { - i10 = HEAP32[i12 >> 2] | 0; - if ((i10 & 64 | 0) != 0) { - i8 = HEAP32[i5 >> 2] | 0; - if ((i10 & 15 | 0) != 4) { - i8 = (HEAP8[i8 + 5 | 0] & 3) != 0 | 0; - break; - } - if ((i8 | 0) != 0 ? !((HEAP8[i8 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i2, i8); - i8 = 0; - } else { - i8 = 0; - } - } else { - i8 = 0; - } - } - } - } while (0); - i5 = i5 + 32 | 0; - } while (i5 >>> 0 < i4 >>> 0); - } - if ((i8 | 0) == 0) { - i15 = i2 + 88 | 0; - HEAP32[i9 >> 2] = HEAP32[i15 >> 2]; - HEAP32[i15 >> 2] = i3; - break; - } else { - i15 = i2 + 92 | 0; - HEAP32[i9 >> 2] = HEAP32[i15 >> 2]; - HEAP32[i15 >> 2] = i3; - break; - } - } else { - i6 = 33; - } - } else { - i6 = 33; - } - } while (0); - if ((i6 | 0) == 33) { - i7 = i3 + 16 | 0; - i10 = HEAP32[i7 >> 2] | 0; - i6 = i10 + (1 << HEAPU8[i3 + 7 | 0] << 5) | 0; - i9 = i3 + 28 | 0; - i13 = HEAP32[i9 >> 2] | 0; - if ((i13 | 0) > 0) { - i10 = i3 + 12 | 0; - i11 = 0; - do { - i12 = HEAP32[i10 >> 2] | 0; - if ((HEAP32[i12 + (i11 << 4) + 8 >> 2] & 64 | 0) != 0 ? (i8 = HEAP32[i12 + (i11 << 4) >> 2] | 0, !((HEAP8[i8 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i2, i8); - i13 = HEAP32[i9 >> 2] | 0; - } - i11 = i11 + 1 | 0; - } while ((i11 | 0) < (i13 | 0)); - i7 = HEAP32[i7 >> 2] | 0; - } else { - i7 = i10; - } - if (i7 >>> 0 < i6 >>> 0) { - do { - i10 = i7 + 8 | 0; - i11 = HEAP32[i10 >> 2] | 0; - i9 = i7 + 24 | 0; - i8 = (HEAP32[i9 >> 2] & 64 | 0) == 0; - if ((i11 | 0) == 0) { - if (!i8 ? !((HEAP8[(HEAP32[i7 + 16 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) { - HEAP32[i9 >> 2] = 11; - } - } else { - if (!i8 ? (i5 = HEAP32[i7 + 16 >> 2] | 0, !((HEAP8[i5 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i2, i5); - i11 = HEAP32[i10 >> 2] | 0; - } - if ((i11 & 64 | 0) != 0 ? (i4 = HEAP32[i7 >> 2] | 0, !((HEAP8[i4 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i2, i4); - } - } - i7 = i7 + 32 | 0; - } while (i7 >>> 0 < i6 >>> 0); - } - } - i3 = (HEAP32[i3 + 28 >> 2] << 4) + 32 + (32 << HEAPU8[i3 + 7 | 0]) | 0; - break; - } - case 8: - { - i7 = i3 + 60 | 0; - HEAP32[i15 >> 2] = HEAP32[i7 >> 2]; - i4 = i2 + 88 | 0; - HEAP32[i7 >> 2] = HEAP32[i4 >> 2]; - HEAP32[i4 >> 2] = i3; - HEAP8[i10] = HEAP8[i10] & 251; - i4 = i3 + 28 | 0; - i7 = HEAP32[i4 >> 2] | 0; - if ((i7 | 0) == 0) { - i3 = 1; - } else { - i5 = i3 + 8 | 0; - i6 = HEAP32[i5 >> 2] | 0; - if (i7 >>> 0 < i6 >>> 0) { - do { - if ((HEAP32[i7 + 8 >> 2] & 64 | 0) != 0 ? (i11 = HEAP32[i7 >> 2] | 0, !((HEAP8[i11 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i2, i11); - i6 = HEAP32[i5 >> 2] | 0; - } - i7 = i7 + 16 | 0; - } while (i7 >>> 0 < i6 >>> 0); - } - if ((HEAP8[i2 + 61 | 0] | 0) == 1) { - i3 = i3 + 32 | 0; - i4 = (HEAP32[i4 >> 2] | 0) + (HEAP32[i3 >> 2] << 4) | 0; - if (i7 >>> 0 < i4 >>> 0) { - do { - HEAP32[i7 + 8 >> 2] = 0; - i7 = i7 + 16 | 0; - } while (i7 >>> 0 < i4 >>> 0); - } - } else { - i3 = i3 + 32 | 0; - } - i3 = (HEAP32[i3 >> 2] << 4) + 112 | 0; - } - break; - } - case 9: - { - HEAP32[i15 >> 2] = HEAP32[i3 + 72 >> 2]; - i5 = i3 + 32 | 0; - i4 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) != 0 ? !((HEAP8[i4 + 5 | 0] & 3) == 0) : 0) { - HEAP32[i5 >> 2] = 0; - } - i4 = HEAP32[i3 + 36 >> 2] | 0; - if ((i4 | 0) != 0 ? !((HEAP8[i4 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i2, i4); - } - i4 = i3 + 44 | 0; - i8 = HEAP32[i4 >> 2] | 0; - if ((i8 | 0) > 0) { - i5 = i3 + 8 | 0; - i6 = 0; - do { - i7 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i7 + (i6 << 4) + 8 >> 2] & 64 | 0) != 0 ? (i9 = HEAP32[i7 + (i6 << 4) >> 2] | 0, !((HEAP8[i9 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i2, i9); - i8 = HEAP32[i4 >> 2] | 0; - } - i6 = i6 + 1 | 0; - } while ((i6 | 0) < (i8 | 0)); - } - i5 = i3 + 40 | 0; - i8 = HEAP32[i5 >> 2] | 0; - if ((i8 | 0) > 0) { - i6 = i3 + 28 | 0; - i7 = 0; - do { - i9 = HEAP32[(HEAP32[i6 >> 2] | 0) + (i7 << 3) >> 2] | 0; - if ((i9 | 0) != 0 ? !((HEAP8[i9 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i2, i9); - i8 = HEAP32[i5 >> 2] | 0; - } - i7 = i7 + 1 | 0; - } while ((i7 | 0) < (i8 | 0)); - } - i6 = i3 + 56 | 0; - i8 = HEAP32[i6 >> 2] | 0; - if ((i8 | 0) > 0) { - i7 = i3 + 16 | 0; - i9 = 0; - do { - i10 = HEAP32[(HEAP32[i7 >> 2] | 0) + (i9 << 2) >> 2] | 0; - if ((i10 | 0) != 0 ? !((HEAP8[i10 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i2, i10); - i8 = HEAP32[i6 >> 2] | 0; - } - i9 = i9 + 1 | 0; - } while ((i9 | 0) < (i8 | 0)); - } - i7 = i3 + 60 | 0; - i11 = HEAP32[i7 >> 2] | 0; - if ((i11 | 0) > 0) { - i8 = i3 + 24 | 0; - i9 = 0; - do { - i10 = HEAP32[(HEAP32[i8 >> 2] | 0) + (i9 * 12 | 0) >> 2] | 0; - if ((i10 | 0) != 0 ? !((HEAP8[i10 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i2, i10); - i11 = HEAP32[i7 >> 2] | 0; - } - i9 = i9 + 1 | 0; - } while ((i9 | 0) < (i11 | 0)); - i8 = HEAP32[i6 >> 2] | 0; - } - i3 = (i11 * 12 | 0) + 80 + (HEAP32[i4 >> 2] << 4) + (HEAP32[i5 >> 2] << 3) + ((HEAP32[i3 + 48 >> 2] | 0) + i8 + (HEAP32[i3 + 52 >> 2] | 0) << 2) | 0; - break; - } - case 38: - { - HEAP32[i15 >> 2] = HEAP32[i3 + 8 >> 2]; - i4 = i3 + 6 | 0; - i5 = HEAP8[i4] | 0; - if (i5 << 24 >> 24 == 0) { - i7 = i5 & 255; - } else { - i6 = 0; - do { - if ((HEAP32[i3 + (i6 << 4) + 24 >> 2] & 64 | 0) != 0 ? (i14 = HEAP32[i3 + (i6 << 4) + 16 >> 2] | 0, !((HEAP8[i14 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i2, i14); - i5 = HEAP8[i4] | 0; - } - i6 = i6 + 1 | 0; - i7 = i5 & 255; - } while ((i6 | 0) < (i7 | 0)); - } - i3 = (i7 << 4) + 16 | 0; - break; - } - case 6: - { - HEAP32[i15 >> 2] = HEAP32[i3 + 8 >> 2]; - i4 = HEAP32[i3 + 12 >> 2] | 0; - if ((i4 | 0) != 0 ? !((HEAP8[i4 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i2, i4); - } - i4 = i3 + 6 | 0; - i6 = HEAP8[i4] | 0; - if (i6 << 24 >> 24 == 0) { - i7 = i6 & 255; - } else { - i5 = 0; - do { - i7 = HEAP32[i3 + (i5 << 2) + 16 >> 2] | 0; - if ((i7 | 0) != 0 ? !((HEAP8[i7 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i2, i7); - i6 = HEAP8[i4] | 0; - } - i5 = i5 + 1 | 0; - i7 = i6 & 255; - } while ((i5 | 0) < (i7 | 0)); - } - i3 = (i7 << 2) + 16 | 0; - break; - } - default: - { - STACKTOP = i1; - return; - } - } - i15 = i2 + 16 | 0; - HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + i3; - STACKTOP = i1; - return; -} -function _strstr(i8, i4) { - i8 = i8 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i6 = i1 + 1024 | 0; - i2 = i1; - i10 = HEAP8[i4] | 0; - if (i10 << 24 >> 24 == 0) { - i20 = i8; - STACKTOP = i1; - return i20 | 0; - } - i8 = _strchr(i8, i10 << 24 >> 24) | 0; - if ((i8 | 0) == 0) { - i20 = 0; - STACKTOP = i1; - return i20 | 0; - } - i13 = HEAP8[i4 + 1 | 0] | 0; - if (i13 << 24 >> 24 == 0) { - i20 = i8; - STACKTOP = i1; - return i20 | 0; - } - i11 = i8 + 1 | 0; - i9 = HEAP8[i11] | 0; - if (i9 << 24 >> 24 == 0) { - i20 = 0; - STACKTOP = i1; - return i20 | 0; - } - i15 = HEAP8[i4 + 2 | 0] | 0; - if (i15 << 24 >> 24 == 0) { - i2 = i13 & 255 | (i10 & 255) << 8; - i3 = i9; - i4 = HEAPU8[i8] << 8 | i9 & 255; - while (1) { - i5 = i4 & 65535; - if ((i5 | 0) == (i2 | 0)) { - break; - } - i11 = i11 + 1 | 0; - i4 = HEAP8[i11] | 0; - if (i4 << 24 >> 24 == 0) { - i3 = 0; - break; - } else { - i3 = i4; - i4 = i4 & 255 | i5 << 8; - } - } - i20 = i3 << 24 >> 24 == 0 ? 0 : i11 + -1 | 0; - STACKTOP = i1; - return i20 | 0; - } - i16 = i8 + 2 | 0; - i11 = HEAP8[i16] | 0; - if (i11 << 24 >> 24 == 0) { - i20 = 0; - STACKTOP = i1; - return i20 | 0; - } - i18 = HEAP8[i4 + 3 | 0] | 0; - if (i18 << 24 >> 24 == 0) { - i2 = (i13 & 255) << 16 | (i10 & 255) << 24 | (i15 & 255) << 8; - i4 = (i11 & 255) << 8 | (i9 & 255) << 16 | HEAPU8[i8] << 24; - if ((i4 | 0) == (i2 | 0)) { - i3 = 0; - } else { - do { - i16 = i16 + 1 | 0; - i3 = HEAP8[i16] | 0; - i4 = (i3 & 255 | i4) << 8; - i3 = i3 << 24 >> 24 == 0; - } while (!(i3 | (i4 | 0) == (i2 | 0))); - } - i20 = i3 ? 0 : i16 + -2 | 0; - STACKTOP = i1; - return i20 | 0; - } - i16 = i8 + 3 | 0; - i17 = HEAP8[i16] | 0; - if (i17 << 24 >> 24 == 0) { - i20 = 0; - STACKTOP = i1; - return i20 | 0; - } - if ((HEAP8[i4 + 4 | 0] | 0) == 0) { - i2 = (i13 & 255) << 16 | (i10 & 255) << 24 | (i15 & 255) << 8 | i18 & 255; - i3 = (i11 & 255) << 8 | (i9 & 255) << 16 | i17 & 255 | HEAPU8[i8] << 24; - if ((i3 | 0) == (i2 | 0)) { - i4 = 0; - } else { - do { - i16 = i16 + 1 | 0; - i4 = HEAP8[i16] | 0; - i3 = i4 & 255 | i3 << 8; - i4 = i4 << 24 >> 24 == 0; - } while (!(i4 | (i3 | 0) == (i2 | 0))); - } - i20 = i4 ? 0 : i16 + -3 | 0; - STACKTOP = i1; - return i20 | 0; - } - HEAP32[i6 + 0 >> 2] = 0; - HEAP32[i6 + 4 >> 2] = 0; - HEAP32[i6 + 8 >> 2] = 0; - HEAP32[i6 + 12 >> 2] = 0; - HEAP32[i6 + 16 >> 2] = 0; - HEAP32[i6 + 20 >> 2] = 0; - HEAP32[i6 + 24 >> 2] = 0; - HEAP32[i6 + 28 >> 2] = 0; - i9 = 0; - while (1) { - if ((HEAP8[i8 + i9 | 0] | 0) == 0) { - i14 = 0; - i12 = 80; - break; - } - i20 = i10 & 255; - i3 = i6 + (i20 >>> 5 << 2) | 0; - HEAP32[i3 >> 2] = HEAP32[i3 >> 2] | 1 << (i20 & 31); - i3 = i9 + 1 | 0; - HEAP32[i2 + (i20 << 2) >> 2] = i3; - i10 = HEAP8[i4 + i3 | 0] | 0; - if (i10 << 24 >> 24 == 0) { - break; - } else { - i9 = i3; - } - } - if ((i12 | 0) == 80) { - STACKTOP = i1; - return i14 | 0; - } - L49 : do { - if (i3 >>> 0 > 1) { - i14 = 1; - i11 = -1; - i12 = 0; - L50 : while (1) { - i10 = 1; - while (1) { - i13 = i14; - L54 : while (1) { - i14 = 1; - while (1) { - i15 = HEAP8[i4 + (i14 + i11) | 0] | 0; - i16 = HEAP8[i4 + i13 | 0] | 0; - if (!(i15 << 24 >> 24 == i16 << 24 >> 24)) { - break L54; - } - i15 = i14 + 1 | 0; - if ((i14 | 0) == (i10 | 0)) { - break; - } - i13 = i15 + i12 | 0; - if (i13 >>> 0 < i3 >>> 0) { - i14 = i15; - } else { - break L50; - } - } - i12 = i12 + i10 | 0; - i13 = i12 + 1 | 0; - if (!(i13 >>> 0 < i3 >>> 0)) { - break L50; - } - } - i10 = i13 - i11 | 0; - if (!((i15 & 255) > (i16 & 255))) { - break; - } - i14 = i13 + 1 | 0; - if (i14 >>> 0 < i3 >>> 0) { - i12 = i13; - } else { - break L50; - } - } - i14 = i12 + 2 | 0; - if (i14 >>> 0 < i3 >>> 0) { - i11 = i12; - i12 = i12 + 1 | 0; - } else { - i11 = i12; - i10 = 1; - break; - } - } - i16 = 1; - i12 = -1; - i14 = 0; - while (1) { - i13 = 1; - while (1) { - i15 = i16; - L69 : while (1) { - i18 = 1; - while (1) { - i17 = HEAP8[i4 + (i18 + i12) | 0] | 0; - i16 = HEAP8[i4 + i15 | 0] | 0; - if (!(i17 << 24 >> 24 == i16 << 24 >> 24)) { - break L69; - } - i16 = i18 + 1 | 0; - if ((i18 | 0) == (i13 | 0)) { - break; - } - i15 = i16 + i14 | 0; - if (i15 >>> 0 < i3 >>> 0) { - i18 = i16; - } else { - i14 = i12; - break L49; - } - } - i14 = i14 + i13 | 0; - i15 = i14 + 1 | 0; - if (!(i15 >>> 0 < i3 >>> 0)) { - i14 = i12; - break L49; - } - } - i13 = i15 - i12 | 0; - if (!((i17 & 255) < (i16 & 255))) { - break; - } - i16 = i15 + 1 | 0; - if (i16 >>> 0 < i3 >>> 0) { - i14 = i15; - } else { - i14 = i12; - break L49; - } - } - i16 = i14 + 2 | 0; - if (i16 >>> 0 < i3 >>> 0) { - i12 = i14; - i14 = i14 + 1 | 0; - } else { - i13 = 1; - break; - } - } - } else { - i11 = -1; - i14 = -1; - i10 = 1; - i13 = 1; - } - } while (0); - i15 = (i14 + 1 | 0) >>> 0 > (i11 + 1 | 0) >>> 0; - i12 = i15 ? i13 : i10; - i11 = i15 ? i14 : i11; - i10 = i11 + 1 | 0; - if ((_memcmp(i4, i4 + i12 | 0, i10) | 0) == 0) { - i15 = i3 - i12 | 0; - i16 = i3 | 63; - if ((i3 | 0) != (i12 | 0)) { - i14 = i8; - i13 = 0; - i17 = i8; - L82 : while (1) { - i18 = i14; - do { - if ((i17 - i18 | 0) >>> 0 < i3 >>> 0) { - i19 = _memchr(i17, 0, i16) | 0; - if ((i19 | 0) != 0) { - if ((i19 - i18 | 0) >>> 0 < i3 >>> 0) { - i14 = 0; - i12 = 80; - break L82; - } else { - i17 = i19; - break; - } - } else { - i17 = i17 + i16 | 0; - break; - } - } - } while (0); - i18 = HEAPU8[i14 + i9 | 0] | 0; - if ((1 << (i18 & 31) & HEAP32[i6 + (i18 >>> 5 << 2) >> 2] | 0) == 0) { - i14 = i14 + i3 | 0; - i13 = 0; - continue; - } - i20 = HEAP32[i2 + (i18 << 2) >> 2] | 0; - i18 = i3 - i20 | 0; - if ((i3 | 0) != (i20 | 0)) { - i14 = i14 + ((i13 | 0) != 0 & i18 >>> 0 < i12 >>> 0 ? i15 : i18) | 0; - i13 = 0; - continue; - } - i20 = i10 >>> 0 > i13 >>> 0 ? i10 : i13; - i18 = HEAP8[i4 + i20 | 0] | 0; - L96 : do { - if (i18 << 24 >> 24 == 0) { - i19 = i10; - } else { - while (1) { - i19 = i20 + 1 | 0; - if (!(i18 << 24 >> 24 == (HEAP8[i14 + i20 | 0] | 0))) { - break; - } - i18 = HEAP8[i4 + i19 | 0] | 0; - if (i18 << 24 >> 24 == 0) { - i19 = i10; - break L96; - } else { - i20 = i19; - } - } - i14 = i14 + (i20 - i11) | 0; - i13 = 0; - continue L82; - } - } while (0); - while (1) { - if (!(i19 >>> 0 > i13 >>> 0)) { - break; - } - i18 = i19 + -1 | 0; - if ((HEAP8[i4 + i18 | 0] | 0) == (HEAP8[i14 + i18 | 0] | 0)) { - i19 = i18; - } else { - break; - } - } - if ((i19 | 0) == (i13 | 0)) { - i12 = 80; - break; - } - i14 = i14 + i12 | 0; - i13 = i15; - } - if ((i12 | 0) == 80) { - STACKTOP = i1; - return i14 | 0; - } - } else { - i5 = i16; - i7 = i3; - } - } else { - i7 = i3 - i11 + -1 | 0; - i5 = i3 | 63; - i7 = (i11 >>> 0 > i7 >>> 0 ? i11 : i7) + 1 | 0; - } - i12 = i4 + i10 | 0; - i14 = i8; - L111 : while (1) { - i13 = i14; - do { - if ((i8 - i13 | 0) >>> 0 < i3 >>> 0) { - i15 = _memchr(i8, 0, i5) | 0; - if ((i15 | 0) != 0) { - if ((i15 - i13 | 0) >>> 0 < i3 >>> 0) { - i14 = 0; - i12 = 80; - break L111; - } else { - i8 = i15; - break; - } - } else { - i8 = i8 + i5 | 0; - break; - } - } - } while (0); - i13 = HEAPU8[i14 + i9 | 0] | 0; - if ((1 << (i13 & 31) & HEAP32[i6 + (i13 >>> 5 << 2) >> 2] | 0) == 0) { - i14 = i14 + i3 | 0; - continue; - } - i13 = HEAP32[i2 + (i13 << 2) >> 2] | 0; - if ((i3 | 0) != (i13 | 0)) { - i14 = i14 + (i3 - i13) | 0; - continue; - } - i15 = HEAP8[i12] | 0; - L125 : do { - if (i15 << 24 >> 24 == 0) { - i13 = i10; - } else { - i16 = i10; - while (1) { - i13 = i16 + 1 | 0; - if (!(i15 << 24 >> 24 == (HEAP8[i14 + i16 | 0] | 0))) { - break; - } - i15 = HEAP8[i4 + i13 | 0] | 0; - if (i15 << 24 >> 24 == 0) { - i13 = i10; - break L125; - } else { - i16 = i13; - } - } - i14 = i14 + (i16 - i11) | 0; - continue L111; - } - } while (0); - do { - if ((i13 | 0) == 0) { - i12 = 80; - break L111; - } - i13 = i13 + -1 | 0; - } while ((HEAP8[i4 + i13 | 0] | 0) == (HEAP8[i14 + i13 | 0] | 0)); - i14 = i14 + i7 | 0; - } - if ((i12 | 0) == 80) { - STACKTOP = i1; - return i14 | 0; - } - return 0; -} -function _str_format(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, d21 = 0.0, i22 = 0; - i12 = STACKTOP; - STACKTOP = STACKTOP + 1104 | 0; - i4 = i12; - i7 = i12 + 1060 | 0; - i9 = i12 + 1082 | 0; - i20 = i12 + 1056 | 0; - i10 = i12 + 16 | 0; - i5 = i12 + 1064 | 0; - i6 = i12 + 8 | 0; - i8 = _lua_gettop(i2) | 0; - i16 = _luaL_checklstring(i2, 1, i20) | 0; - i20 = HEAP32[i20 >> 2] | 0; - i3 = i16 + i20 | 0; - _luaL_buffinit(i2, i10); - L1 : do { - if ((i20 | 0) > 0) { - i1 = i10 + 8 | 0; - i13 = i10 + 4 | 0; - i14 = i5 + 1 | 0; - i19 = 1; - L3 : while (1) { - while (1) { - i15 = HEAP8[i16] | 0; - if (i15 << 24 >> 24 == 37) { - i18 = i16 + 1 | 0; - if ((HEAP8[i18] | 0) != 37) { - break; - } - i15 = HEAP32[i1 >> 2] | 0; - if (i15 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0) { - i17 = 37; - } else { - _luaL_prepbuffsize(i10, 1) | 0; - i15 = HEAP32[i1 >> 2] | 0; - i17 = HEAP8[i18] | 0; - } - HEAP32[i1 >> 2] = i15 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i15 | 0] = i17; - i16 = i16 + 2 | 0; - } else { - i17 = HEAP32[i1 >> 2] | 0; - if (!(i17 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i10, 1) | 0; - i17 = HEAP32[i1 >> 2] | 0; - i15 = HEAP8[i16] | 0; - } - HEAP32[i1 >> 2] = i17 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i17 | 0] = i15; - i16 = i16 + 1 | 0; - } - if (!(i16 >>> 0 < i3 >>> 0)) { - break L1; - } - } - i17 = _luaL_prepbuffsize(i10, 512) | 0; - i15 = i19 + 1 | 0; - if ((i19 | 0) >= (i8 | 0)) { - _luaL_argerror(i2, i15, 7648) | 0; - } - i19 = HEAP8[i18] | 0; - L22 : do { - if (i19 << 24 >> 24 == 0) { - i19 = 0; - i20 = i18; - } else { - i20 = i18; - while (1) { - i16 = i20 + 1 | 0; - if ((_memchr(7800, i19 << 24 >> 24, 6) | 0) == 0) { - break L22; - } - i19 = HEAP8[i16] | 0; - if (i19 << 24 >> 24 == 0) { - i19 = 0; - i20 = i16; - break; - } else { - i20 = i16; - } - } - } - } while (0); - i16 = i18; - if ((i20 - i16 | 0) >>> 0 > 5) { - _luaL_error(i2, 7808, i4) | 0; - i19 = HEAP8[i20] | 0; - } - i19 = ((i19 & 255) + -48 | 0) >>> 0 < 10 ? i20 + 1 | 0 : i20; - i19 = ((HEAPU8[i19] | 0) + -48 | 0) >>> 0 < 10 ? i19 + 1 | 0 : i19; - i20 = HEAP8[i19] | 0; - if (i20 << 24 >> 24 == 46) { - i20 = i19 + 1 | 0; - i19 = ((HEAPU8[i20] | 0) + -48 | 0) >>> 0 < 10 ? i19 + 2 | 0 : i20; - i19 = ((HEAPU8[i19] | 0) + -48 | 0) >>> 0 < 10 ? i19 + 1 | 0 : i19; - i20 = HEAP8[i19] | 0; - } - if (((i20 & 255) + -48 | 0) >>> 0 < 10) { - _luaL_error(i2, 7840, i4) | 0; - } - HEAP8[i5] = 37; - i16 = i19 - i16 | 0; - _memcpy(i14 | 0, i18 | 0, i16 + 1 | 0) | 0; - HEAP8[i5 + (i16 + 2) | 0] = 0; - i16 = i19 + 1 | 0; - i18 = HEAP8[i19] | 0; - L36 : do { - switch (i18 | 0) { - case 115: - { - i18 = _luaL_tolstring(i2, i15, i6) | 0; - if ((_strchr(i5, 46) | 0) == 0 ? (HEAP32[i6 >> 2] | 0) >>> 0 > 99 : 0) { - _luaL_addvalue(i10); - i17 = 0; - break L36; - } - HEAP32[i4 >> 2] = i18; - i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0; - _lua_settop(i2, -2); - break; - } - case 88: - case 120: - case 117: - case 111: - { - d21 = +_luaL_checknumber(i2, i15); - i18 = ~~d21 >>> 0; - d21 = d21 - +(i18 >>> 0); - if (!(d21 > -1.0 & d21 < 1.0)) { - _luaL_argerror(i2, i15, 7696) | 0; - } - i20 = _strlen(i5 | 0) | 0; - i22 = i5 + (i20 + -1) | 0; - i19 = HEAP8[i22] | 0; - HEAP8[i22] = 108; - HEAP8[i22 + 1 | 0] = 0; - HEAP8[i5 + i20 | 0] = i19; - HEAP8[i5 + (i20 + 1) | 0] = 0; - HEAP32[i4 >> 2] = i18; - i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0; - break; - } - case 99: - { - HEAP32[i4 >> 2] = _luaL_checkinteger(i2, i15) | 0; - i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0; - break; - } - case 113: - { - i17 = _luaL_checklstring(i2, i15, i7) | 0; - i18 = HEAP32[i1 >> 2] | 0; - if (!(i18 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i10, 1) | 0; - i18 = HEAP32[i1 >> 2] | 0; - } - HEAP32[i1 >> 2] = i18 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i18 | 0] = 34; - i22 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i22 + -1; - if ((i22 | 0) != 0) { - while (1) { - i18 = HEAP8[i17] | 0; - do { - if (i18 << 24 >> 24 == 10 | i18 << 24 >> 24 == 92 | i18 << 24 >> 24 == 34) { - i18 = HEAP32[i1 >> 2] | 0; - if (!(i18 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i10, 1) | 0; - i18 = HEAP32[i1 >> 2] | 0; - } - HEAP32[i1 >> 2] = i18 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i18 | 0] = 92; - i18 = HEAP32[i1 >> 2] | 0; - if (!(i18 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i10, 1) | 0; - i18 = HEAP32[i1 >> 2] | 0; - } - i22 = HEAP8[i17] | 0; - HEAP32[i1 >> 2] = i18 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i18 | 0] = i22; - } else if (i18 << 24 >> 24 == 0) { - i18 = 0; - i11 = 44; - } else { - if ((_iscntrl(i18 & 255 | 0) | 0) != 0) { - i18 = HEAP8[i17] | 0; - i11 = 44; - break; - } - i18 = HEAP32[i1 >> 2] | 0; - if (!(i18 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i10, 1) | 0; - i18 = HEAP32[i1 >> 2] | 0; - } - i22 = HEAP8[i17] | 0; - HEAP32[i1 >> 2] = i18 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i18 | 0] = i22; - } - } while (0); - if ((i11 | 0) == 44) { - i11 = 0; - i18 = i18 & 255; - if (((HEAPU8[i17 + 1 | 0] | 0) + -48 | 0) >>> 0 < 10) { - HEAP32[i4 >> 2] = i18; - _sprintf(i9 | 0, 7792, i4 | 0) | 0; - } else { - HEAP32[i4 >> 2] = i18; - _sprintf(i9 | 0, 7784, i4 | 0) | 0; - } - _luaL_addstring(i10, i9); - } - i22 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i22 + -1; - if ((i22 | 0) == 0) { - break; - } else { - i17 = i17 + 1 | 0; - } - } - } - i17 = HEAP32[i1 >> 2] | 0; - if (!(i17 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i10, 1) | 0; - i17 = HEAP32[i1 >> 2] | 0; - } - HEAP32[i1 >> 2] = i17 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i17 | 0] = 34; - i17 = 0; - break; - } - case 71: - case 103: - case 102: - case 69: - case 101: - { - HEAP8[i5 + (_strlen(i5 | 0) | 0) | 0] = 0; - d21 = +_luaL_checknumber(i2, i15); - HEAPF64[tempDoublePtr >> 3] = d21; - HEAP32[i4 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i4 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0; - break; - } - case 105: - case 100: - { - d21 = +_luaL_checknumber(i2, i15); - i18 = ~~d21; - d21 = d21 - +(i18 | 0); - if (!(d21 > -1.0 & d21 < 1.0)) { - _luaL_argerror(i2, i15, 7664) | 0; - } - i22 = _strlen(i5 | 0) | 0; - i19 = i5 + (i22 + -1) | 0; - i20 = HEAP8[i19] | 0; - HEAP8[i19] = 108; - HEAP8[i19 + 1 | 0] = 0; - HEAP8[i5 + i22 | 0] = i20; - HEAP8[i5 + (i22 + 1) | 0] = 0; - HEAP32[i4 >> 2] = i18; - i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0; - break; - } - default: - { - break L3; - } - } - } while (0); - HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + i17; - if (i16 >>> 0 < i3 >>> 0) { - i19 = i15; - } else { - break L1; - } - } - HEAP32[i4 >> 2] = i18; - i22 = _luaL_error(i2, 7744, i4) | 0; - STACKTOP = i12; - return i22 | 0; - } - } while (0); - _luaL_pushresult(i10); - i22 = 1; - STACKTOP = i12; - return i22 | 0; -} -function _luaD_precall(i3, i17, i4) { - i3 = i3 | 0; - i17 = i17 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i8 = i1; - i6 = i3 + 28 | 0; - i2 = i3 + 8 | 0; - i13 = i3 + 24 | 0; - i14 = i3 + 32 | 0; - while (1) { - i15 = HEAP32[i6 >> 2] | 0; - i16 = i17; - i12 = i15; - i5 = i16 - i12 | 0; - i11 = HEAP32[i17 + 8 >> 2] & 63; - if ((i11 | 0) == 38) { - i11 = 4; - break; - } else if ((i11 | 0) == 22) { - i11 = 3; - break; - } else if ((i11 | 0) == 6) { - i11 = 31; - break; - } - i11 = _luaT_gettmbyobj(i3, i17, 16) | 0; - i15 = i16 - (HEAP32[i6 >> 2] | 0) | 0; - i16 = i11 + 8 | 0; - if ((HEAP32[i16 >> 2] & 15 | 0) != 6) { - i11 = 54; - break; - } - i19 = HEAP32[i2 >> 2] | 0; - if (i19 >>> 0 > i17 >>> 0) { - while (1) { - i18 = i19 + -16 | 0; - i22 = i18; - i21 = HEAP32[i22 + 4 >> 2] | 0; - i20 = i19; - HEAP32[i20 >> 2] = HEAP32[i22 >> 2]; - HEAP32[i20 + 4 >> 2] = i21; - HEAP32[i19 + 8 >> 2] = HEAP32[i19 + -8 >> 2]; - if (i18 >>> 0 > i17 >>> 0) { - i19 = i18; - } else { - break; - } - } - i19 = HEAP32[i2 >> 2] | 0; - } - i17 = i19 + 16 | 0; - HEAP32[i2 >> 2] = i17; - if (((HEAP32[i13 >> 2] | 0) - i17 | 0) < 16) { - i18 = HEAP32[i14 >> 2] | 0; - if ((i18 | 0) > 1e6) { - i11 = 60; - break; - } - i17 = (i17 - (HEAP32[i6 >> 2] | 0) >> 4) + 5 | 0; - i18 = i18 << 1; - i18 = (i18 | 0) > 1e6 ? 1e6 : i18; - i17 = (i18 | 0) < (i17 | 0) ? i17 : i18; - if ((i17 | 0) > 1e6) { - i11 = 62; - break; - } - _luaD_reallocstack(i3, i17); - } - i22 = HEAP32[i6 >> 2] | 0; - i17 = i22 + i15 | 0; - i19 = i11; - i20 = HEAP32[i19 + 4 >> 2] | 0; - i21 = i17; - HEAP32[i21 >> 2] = HEAP32[i19 >> 2]; - HEAP32[i21 + 4 >> 2] = i20; - HEAP32[i22 + (i15 + 8) >> 2] = HEAP32[i16 >> 2]; - } - if ((i11 | 0) == 3) { - i10 = i17; - } else if ((i11 | 0) == 4) { - i10 = (HEAP32[i17 >> 2] | 0) + 12 | 0; - } else if ((i11 | 0) == 31) { - i10 = HEAP32[(HEAP32[i17 >> 2] | 0) + 12 >> 2] | 0; - i18 = HEAP32[i2 >> 2] | 0; - i16 = i18; - i11 = i10 + 78 | 0; - i17 = HEAPU8[i11] | 0; - do { - if (((HEAP32[i13 >> 2] | 0) - i16 >> 4 | 0) <= (i17 | 0)) { - i13 = HEAP32[i14 >> 2] | 0; - if ((i13 | 0) > 1e6) { - _luaD_throw(i3, 6); - } - i12 = i17 + 5 + (i16 - i12 >> 4) | 0; - i13 = i13 << 1; - i13 = (i13 | 0) > 1e6 ? 1e6 : i13; - i12 = (i13 | 0) < (i12 | 0) ? i12 : i13; - if ((i12 | 0) > 1e6) { - _luaD_reallocstack(i3, 1000200); - _luaG_runerror(i3, 2224, i8); - } else { - _luaD_reallocstack(i3, i12); - i7 = HEAP32[i6 >> 2] | 0; - i9 = HEAP32[i2 >> 2] | 0; - break; - } - } else { - i7 = i15; - i9 = i18; - } - } while (0); - i6 = i7 + i5 | 0; - i22 = i9 - i6 >> 4; - i12 = i22 + -1 | 0; - i8 = i10 + 76 | 0; - i13 = HEAP8[i8] | 0; - if ((i22 | 0) > (i13 & 255 | 0)) { - i8 = i13; - } else { - i13 = i9; - while (1) { - i9 = i13 + 16 | 0; - HEAP32[i2 >> 2] = i9; - HEAP32[i13 + 8 >> 2] = 0; - i12 = i12 + 1 | 0; - i13 = HEAP8[i8] | 0; - if ((i12 | 0) < (i13 & 255 | 0)) { - i13 = i9; - } else { - i8 = i13; - break; - } - } - } - if ((HEAP8[i10 + 77 | 0] | 0) != 0) { - i5 = i8 & 255; - if (!(i8 << 24 >> 24 == 0) ? (i22 = 0 - i12 | 0, HEAP32[i2 >> 2] = i9 + 16, i19 = i9 + (i22 << 4) | 0, i20 = HEAP32[i19 + 4 >> 2] | 0, i21 = i9, HEAP32[i21 >> 2] = HEAP32[i19 >> 2], HEAP32[i21 + 4 >> 2] = i20, i22 = i9 + (i22 << 4) + 8 | 0, HEAP32[i9 + 8 >> 2] = HEAP32[i22 >> 2], HEAP32[i22 >> 2] = 0, (i8 & 255) > 1) : 0) { - i7 = 1; - do { - i21 = HEAP32[i2 >> 2] | 0; - i22 = i7 - i12 | 0; - HEAP32[i2 >> 2] = i21 + 16; - i18 = i9 + (i22 << 4) | 0; - i19 = HEAP32[i18 + 4 >> 2] | 0; - i20 = i21; - HEAP32[i20 >> 2] = HEAP32[i18 >> 2]; - HEAP32[i20 + 4 >> 2] = i19; - i22 = i9 + (i22 << 4) + 8 | 0; - HEAP32[i21 + 8 >> 2] = HEAP32[i22 >> 2]; - HEAP32[i22 >> 2] = 0; - i7 = i7 + 1 | 0; - } while ((i7 | 0) < (i5 | 0)); - } - } else { - i9 = i7 + (i5 + 16) | 0; - } - i7 = i3 + 16 | 0; - i5 = HEAP32[(HEAP32[i7 >> 2] | 0) + 12 >> 2] | 0; - if ((i5 | 0) == 0) { - i5 = _luaE_extendCI(i3) | 0; - } - HEAP32[i7 >> 2] = i5; - HEAP16[i5 + 16 >> 1] = i4; - HEAP32[i5 >> 2] = i6; - HEAP32[i5 + 24 >> 2] = i9; - i22 = i9 + (HEAPU8[i11] << 4) | 0; - HEAP32[i5 + 4 >> 2] = i22; - i4 = i5 + 28 | 0; - HEAP32[i4 >> 2] = HEAP32[i10 + 12 >> 2]; - i6 = i5 + 18 | 0; - HEAP8[i6] = 1; - HEAP32[i2 >> 2] = i22; - if ((HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i3); - } - if ((HEAP8[i3 + 40 | 0] & 1) == 0) { - i22 = 0; - STACKTOP = i1; - return i22 | 0; - } - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 4; - i2 = HEAP32[i5 + 8 >> 2] | 0; - if (!((HEAP8[i2 + 18 | 0] & 1) == 0) ? (HEAP32[(HEAP32[i2 + 28 >> 2] | 0) + -4 >> 2] & 63 | 0) == 30 : 0) { - HEAP8[i6] = HEAPU8[i6] | 64; - i2 = 4; - } else { - i2 = 0; - } - _luaD_hook(i3, i2, -1); - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4; - i22 = 0; - STACKTOP = i1; - return i22 | 0; - } else if ((i11 | 0) == 54) { - _luaG_typeerror(i3, i17, 2520); - } else if ((i11 | 0) == 60) { - _luaD_throw(i3, 6); - } else if ((i11 | 0) == 62) { - _luaD_reallocstack(i3, 1000200); - _luaG_runerror(i3, 2224, i8); - } - i7 = HEAP32[i10 >> 2] | 0; - i9 = HEAP32[i2 >> 2] | 0; - do { - if (((HEAP32[i13 >> 2] | 0) - i9 | 0) < 336) { - i10 = HEAP32[i14 >> 2] | 0; - if ((i10 | 0) > 1e6) { - _luaD_throw(i3, 6); - } - i9 = (i9 - i12 >> 4) + 25 | 0; - i10 = i10 << 1; - i10 = (i10 | 0) > 1e6 ? 1e6 : i10; - i9 = (i10 | 0) < (i9 | 0) ? i9 : i10; - if ((i9 | 0) > 1e6) { - _luaD_reallocstack(i3, 1000200); - _luaG_runerror(i3, 2224, i8); - } else { - _luaD_reallocstack(i3, i9); - break; - } - } - } while (0); - i8 = i3 + 16 | 0; - i9 = HEAP32[(HEAP32[i8 >> 2] | 0) + 12 >> 2] | 0; - if ((i9 | 0) == 0) { - i9 = _luaE_extendCI(i3) | 0; - } - HEAP32[i8 >> 2] = i9; - HEAP16[i9 + 16 >> 1] = i4; - HEAP32[i9 >> 2] = (HEAP32[i6 >> 2] | 0) + i5; - HEAP32[i9 + 4 >> 2] = (HEAP32[i2 >> 2] | 0) + 320; - HEAP8[i9 + 18 | 0] = 0; - if ((HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i3); - } - i5 = i3 + 40 | 0; - if (!((HEAP8[i5] & 1) == 0)) { - _luaD_hook(i3, 0, -1); - } - i7 = FUNCTION_TABLE_ii[i7 & 255](i3) | 0; - i7 = (HEAP32[i2 >> 2] | 0) + (0 - i7 << 4) | 0; - i4 = HEAP32[i8 >> 2] | 0; - i5 = HEAPU8[i5] | 0; - if ((i5 & 6 | 0) == 0) { - i5 = i7; - i6 = i4 + 8 | 0; - } else { - if ((i5 & 2 | 0) == 0) { - i5 = i7; - } else { - i5 = i7 - (HEAP32[i6 >> 2] | 0) | 0; - _luaD_hook(i3, 1, -1); - i5 = (HEAP32[i6 >> 2] | 0) + i5 | 0; - } - i6 = i4 + 8 | 0; - HEAP32[i3 + 20 >> 2] = HEAP32[(HEAP32[i6 >> 2] | 0) + 28 >> 2]; - } - i3 = HEAP32[i4 >> 2] | 0; - i4 = HEAP16[i4 + 16 >> 1] | 0; - HEAP32[i8 >> 2] = HEAP32[i6 >> 2]; - L82 : do { - if (!(i4 << 16 >> 16 == 0)) { - i4 = i4 << 16 >> 16; - while (1) { - if (!(i5 >>> 0 < (HEAP32[i2 >> 2] | 0) >>> 0)) { - break; - } - i6 = i3 + 16 | 0; - i20 = i5; - i21 = HEAP32[i20 + 4 >> 2] | 0; - i22 = i3; - HEAP32[i22 >> 2] = HEAP32[i20 >> 2]; - HEAP32[i22 + 4 >> 2] = i21; - HEAP32[i3 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - i4 = i4 + -1 | 0; - if ((i4 | 0) == 0) { - i3 = i6; - break L82; - } - i5 = i5 + 16 | 0; - i3 = i6; - } - if ((i4 | 0) > 0) { - i5 = i4; - i6 = i3; - while (1) { - i5 = i5 + -1 | 0; - HEAP32[i6 + 8 >> 2] = 0; - if ((i5 | 0) <= 0) { - break; - } else { - i6 = i6 + 16 | 0; - } - } - i3 = i3 + (i4 << 4) | 0; - } - } - } while (0); - HEAP32[i2 >> 2] = i3; - i22 = 1; - STACKTOP = i1; - return i22 | 0; -} -function _lua_getinfo(i1, i6, i29) { - i1 = i1 | 0; - i6 = i6 | 0; - i29 = i29 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i3; - if ((HEAP8[i6] | 0) == 62) { - i10 = i1 + 8 | 0; - i7 = (HEAP32[i10 >> 2] | 0) + -16 | 0; - HEAP32[i10 >> 2] = i7; - i6 = i6 + 1 | 0; - i10 = 0; - } else { - i7 = HEAP32[i29 + 96 >> 2] | 0; - i10 = i7; - i7 = HEAP32[i7 >> 2] | 0; - } - i8 = i7 + 8 | 0; - if ((HEAP32[i8 >> 2] & 31 | 0) == 6) { - i9 = HEAP32[i7 >> 2] | 0; - } else { - i9 = 0; - } - i34 = HEAP8[i6] | 0; - L8 : do { - if (i34 << 24 >> 24 == 0) { - i33 = 1; - } else { - i12 = (i9 | 0) == 0; - i27 = i29 + 16 | 0; - i28 = i29 + 24 | 0; - i21 = i29 + 28 | 0; - i25 = i29 + 12 | 0; - i26 = i29 + 36 | 0; - i19 = i9 + 4 | 0; - i24 = i9 + 12 | 0; - i18 = (i10 | 0) == 0; - i23 = i29 + 20 | 0; - i17 = i10 + 18 | 0; - i22 = i10 + 28 | 0; - i15 = i29 + 32 | 0; - i14 = i29 + 34 | 0; - i13 = i29 + 33 | 0; - i11 = i9 + 6 | 0; - i16 = i29 + 35 | 0; - i20 = i29 + 8 | 0; - i30 = i29 + 4 | 0; - i29 = i10 + 8 | 0; - i31 = i1 + 12 | 0; - i32 = i6; - i33 = 1; - while (1) { - L12 : do { - switch (i34 << 24 >> 24 | 0) { - case 116: - { - if (i18) { - i34 = 0; - } else { - i34 = HEAPU8[i17] & 64; - } - HEAP8[i16] = i34; - break; - } - case 110: - { - L18 : do { - if ((!i18 ? (HEAP8[i17] & 64) == 0 : 0) ? (i5 = HEAP32[i29 >> 2] | 0, !((HEAP8[i5 + 18 | 0] & 1) == 0)) : 0) { - i36 = HEAP32[(HEAP32[HEAP32[i5 >> 2] >> 2] | 0) + 12 >> 2] | 0; - i35 = HEAP32[i36 + 12 >> 2] | 0; - i34 = ((HEAP32[i5 + 28 >> 2] | 0) - i35 >> 2) + -1 | 0; - i35 = HEAP32[i35 + (i34 << 2) >> 2] | 0; - switch (i35 & 63 | 0) { - case 10: - case 8: - { - i34 = 1; - i4 = 46; - break; - } - case 24: - { - i34 = 5; - i4 = 46; - break; - } - case 13: - { - i34 = 6; - i4 = 46; - break; - } - case 14: - { - i34 = 7; - i4 = 46; - break; - } - case 15: - { - i34 = 8; - i4 = 46; - break; - } - case 16: - { - i34 = 9; - i4 = 46; - break; - } - case 17: - { - i34 = 10; - i4 = 46; - break; - } - case 18: - { - i34 = 11; - i4 = 46; - break; - } - case 19: - { - i34 = 12; - i4 = 46; - break; - } - case 21: - { - i34 = 4; - i4 = 46; - break; - } - case 25: - { - i34 = 13; - i4 = 46; - break; - } - case 26: - { - i34 = 14; - i4 = 46; - break; - } - case 22: - { - i34 = 15; - i4 = 46; - break; - } - case 7: - case 6: - case 12: - { - i34 = 0; - i4 = 46; - break; - } - case 34: - { - i34 = 2120; - i35 = 2120; - break; - } - case 30: - case 29: - { - i36 = _getobjname(i36, i34, i35 >>> 6 & 255, i30) | 0; - HEAP32[i20 >> 2] = i36; - if ((i36 | 0) == 0) { - break L18; - } else { - break L12; - } - } - default: - { - i4 = 47; - break L18; - } - } - if ((i4 | 0) == 46) { - i4 = 0; - i34 = (HEAP32[(HEAP32[i31 >> 2] | 0) + (i34 << 2) + 184 >> 2] | 0) + 16 | 0; - i35 = 2136; - } - HEAP32[i30 >> 2] = i34; - HEAP32[i20 >> 2] = i35; - break L12; - } else { - i4 = 47; - } - } while (0); - if ((i4 | 0) == 47) { - i4 = 0; - HEAP32[i20 >> 2] = 0; - } - HEAP32[i20 >> 2] = 2112; - HEAP32[i30 >> 2] = 0; - break; - } - case 108: - { - if (!i18 ? !((HEAP8[i17] & 1) == 0) : 0) { - i35 = HEAP32[(HEAP32[HEAP32[i10 >> 2] >> 2] | 0) + 12 >> 2] | 0; - i34 = HEAP32[i35 + 20 >> 2] | 0; - if ((i34 | 0) == 0) { - i34 = 0; - } else { - i34 = HEAP32[i34 + (((HEAP32[i22 >> 2] | 0) - (HEAP32[i35 + 12 >> 2] | 0) >> 2) + -1 << 2) >> 2] | 0; - } - } else { - i34 = -1; - } - HEAP32[i23 >> 2] = i34; - break; - } - case 83: - { - if (!i12 ? (HEAP8[i19] | 0) != 38 : 0) { - i34 = HEAP32[i24 >> 2] | 0; - i35 = HEAP32[i34 + 36 >> 2] | 0; - if ((i35 | 0) == 0) { - i35 = 2168; - } else { - i35 = i35 + 16 | 0; - } - HEAP32[i27 >> 2] = i35; - i36 = HEAP32[i34 + 64 >> 2] | 0; - HEAP32[i28 >> 2] = i36; - HEAP32[i21 >> 2] = HEAP32[i34 + 68 >> 2]; - i34 = (i36 | 0) == 0 ? 2176 : 2184; - } else { - HEAP32[i27 >> 2] = 2152; - HEAP32[i28 >> 2] = -1; - HEAP32[i21 >> 2] = -1; - i35 = 2152; - i34 = 2160; - } - HEAP32[i25 >> 2] = i34; - _luaO_chunkid(i26, i35, 60); - break; - } - case 117: - { - if (!i12) { - HEAP8[i15] = HEAP8[i11] | 0; - if ((HEAP8[i19] | 0) != 38) { - HEAP8[i14] = HEAP8[(HEAP32[i24 >> 2] | 0) + 77 | 0] | 0; - HEAP8[i13] = HEAP8[(HEAP32[i24 >> 2] | 0) + 76 | 0] | 0; - break L12; - } - } else { - HEAP8[i15] = 0; - } - HEAP8[i14] = 1; - HEAP8[i13] = 0; - break; - } - case 102: - case 76: - { - break; - } - default: - { - i33 = 0; - } - } - } while (0); - i32 = i32 + 1 | 0; - i34 = HEAP8[i32] | 0; - if (i34 << 24 >> 24 == 0) { - break L8; - } - } - } - } while (0); - if ((_strchr(i6, 102) | 0) != 0) { - i36 = i1 + 8 | 0; - i35 = HEAP32[i36 >> 2] | 0; - i31 = i7; - i32 = HEAP32[i31 + 4 >> 2] | 0; - i34 = i35; - HEAP32[i34 >> 2] = HEAP32[i31 >> 2]; - HEAP32[i34 + 4 >> 2] = i32; - HEAP32[i35 + 8 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i36 >> 2] = (HEAP32[i36 >> 2] | 0) + 16; - } - if ((_strchr(i6, 76) | 0) == 0) { - STACKTOP = i3; - return i33 | 0; - } - if ((i9 | 0) != 0 ? (HEAP8[i9 + 4 | 0] | 0) != 38 : 0) { - i6 = i9 + 12 | 0; - i5 = HEAP32[(HEAP32[i6 >> 2] | 0) + 20 >> 2] | 0; - i4 = _luaH_new(i1) | 0; - i36 = i1 + 8 | 0; - i35 = HEAP32[i36 >> 2] | 0; - HEAP32[i35 >> 2] = i4; - HEAP32[i35 + 8 >> 2] = 69; - HEAP32[i36 >> 2] = (HEAP32[i36 >> 2] | 0) + 16; - HEAP32[i2 >> 2] = 1; - HEAP32[i2 + 8 >> 2] = 1; - if ((HEAP32[(HEAP32[i6 >> 2] | 0) + 52 >> 2] | 0) > 0) { - i7 = 0; - } else { - STACKTOP = i3; - return i33 | 0; - } - do { - _luaH_setint(i1, i4, HEAP32[i5 + (i7 << 2) >> 2] | 0, i2); - i7 = i7 + 1 | 0; - } while ((i7 | 0) < (HEAP32[(HEAP32[i6 >> 2] | 0) + 52 >> 2] | 0)); - STACKTOP = i3; - return i33 | 0; - } - i36 = i1 + 8 | 0; - i35 = HEAP32[i36 >> 2] | 0; - HEAP32[i35 + 8 >> 2] = 0; - HEAP32[i36 >> 2] = i35 + 16; - STACKTOP = i3; - return i33 | 0; -} -function _read_long_string(i3, i1, i5) { - i3 = i3 | 0; - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0; - i2 = STACKTOP; - i14 = HEAP32[i3 >> 2] | 0; - i4 = i3 + 60 | 0; - i13 = HEAP32[i4 >> 2] | 0; - i15 = i13 + 4 | 0; - i16 = HEAP32[i15 >> 2] | 0; - i10 = i13 + 8 | 0; - i12 = HEAP32[i10 >> 2] | 0; - do { - if ((i16 + 1 | 0) >>> 0 > i12 >>> 0) { - if (i12 >>> 0 > 2147483645) { - _lexerror(i3, 12368, 0); - } - i16 = i12 << 1; - i17 = HEAP32[i3 + 52 >> 2] | 0; - if ((i16 | 0) == -2) { - _luaM_toobig(i17); - } else { - i8 = _luaM_realloc_(i17, HEAP32[i13 >> 2] | 0, i12, i16) | 0; - HEAP32[i13 >> 2] = i8; - HEAP32[i10 >> 2] = i16; - i9 = HEAP32[i15 >> 2] | 0; - break; - } - } else { - i9 = i16; - i8 = HEAP32[i13 >> 2] | 0; - } - } while (0); - HEAP32[i15 >> 2] = i9 + 1; - HEAP8[i8 + i9 | 0] = i14; - i9 = i3 + 56 | 0; - i8 = HEAP32[i9 >> 2] | 0; - i18 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i18 + -1; - if ((i18 | 0) == 0) { - i12 = _luaZ_fill(i8) | 0; - } else { - i18 = i8 + 4 | 0; - i12 = HEAP32[i18 >> 2] | 0; - HEAP32[i18 >> 2] = i12 + 1; - i12 = HEAPU8[i12] | 0; - } - HEAP32[i3 >> 2] = i12; - if ((i12 | 0) == 13 | (i12 | 0) == 10) { - _inclinenumber(i3); - i11 = 13; - } - L17 : while (1) { - if ((i11 | 0) == 13) { - i11 = 0; - i12 = HEAP32[i3 >> 2] | 0; - } - i8 = (i1 | 0) == 0; - i10 = i3 + 52 | 0; - L21 : do { - if (i8) { - while (1) { - if ((i12 | 0) == 13 | (i12 | 0) == 10) { - break L21; - } else if ((i12 | 0) == 93) { - i11 = 22; - break L21; - } else if ((i12 | 0) == -1) { - i11 = 21; - break L17; - } - i12 = HEAP32[i9 >> 2] | 0; - i18 = HEAP32[i12 >> 2] | 0; - HEAP32[i12 >> 2] = i18 + -1; - if ((i18 | 0) == 0) { - i12 = _luaZ_fill(i12) | 0; - } else { - i18 = i12 + 4 | 0; - i12 = HEAP32[i18 >> 2] | 0; - HEAP32[i18 >> 2] = i12 + 1; - i12 = HEAPU8[i12] | 0; - } - HEAP32[i3 >> 2] = i12; - } - } else { - while (1) { - if ((i12 | 0) == 13 | (i12 | 0) == 10) { - break L21; - } else if ((i12 | 0) == 93) { - i11 = 22; - break L21; - } else if ((i12 | 0) == -1) { - i11 = 21; - break L17; - } - i14 = HEAP32[i4 >> 2] | 0; - i13 = i14 + 4 | 0; - i17 = HEAP32[i13 >> 2] | 0; - i16 = i14 + 8 | 0; - i15 = HEAP32[i16 >> 2] | 0; - if ((i17 + 1 | 0) >>> 0 > i15 >>> 0) { - if (i15 >>> 0 > 2147483645) { - i11 = 46; - break L17; - } - i17 = i15 << 1; - i18 = HEAP32[i10 >> 2] | 0; - if ((i17 | 0) == -2) { - i11 = 48; - break L17; - } - i18 = _luaM_realloc_(i18, HEAP32[i14 >> 2] | 0, i15, i17) | 0; - HEAP32[i14 >> 2] = i18; - HEAP32[i16 >> 2] = i17; - i17 = HEAP32[i13 >> 2] | 0; - i14 = i18; - } else { - i14 = HEAP32[i14 >> 2] | 0; - } - HEAP32[i13 >> 2] = i17 + 1; - HEAP8[i14 + i17 | 0] = i12; - i12 = HEAP32[i9 >> 2] | 0; - i18 = HEAP32[i12 >> 2] | 0; - HEAP32[i12 >> 2] = i18 + -1; - if ((i18 | 0) == 0) { - i12 = _luaZ_fill(i12) | 0; - } else { - i18 = i12 + 4 | 0; - i12 = HEAP32[i18 >> 2] | 0; - HEAP32[i18 >> 2] = i12 + 1; - i12 = HEAPU8[i12] | 0; - } - HEAP32[i3 >> 2] = i12; - } - } - } while (0); - if ((i11 | 0) == 22) { - if ((_skip_sep(i3) | 0) == (i5 | 0)) { - i11 = 23; - break; - } else { - i11 = 13; - continue; - } - } - i12 = HEAP32[i4 >> 2] | 0; - i11 = i12 + 4 | 0; - i15 = HEAP32[i11 >> 2] | 0; - i14 = i12 + 8 | 0; - i13 = HEAP32[i14 >> 2] | 0; - if ((i15 + 1 | 0) >>> 0 > i13 >>> 0) { - if (i13 >>> 0 > 2147483645) { - i11 = 37; - break; - } - i15 = i13 << 1; - i10 = HEAP32[i10 >> 2] | 0; - if ((i15 | 0) == -2) { - i11 = 39; - break; - } - i10 = _luaM_realloc_(i10, HEAP32[i12 >> 2] | 0, i13, i15) | 0; - HEAP32[i12 >> 2] = i10; - HEAP32[i14 >> 2] = i15; - i15 = HEAP32[i11 >> 2] | 0; - } else { - i10 = HEAP32[i12 >> 2] | 0; - } - HEAP32[i11 >> 2] = i15 + 1; - HEAP8[i10 + i15 | 0] = 10; - _inclinenumber(i3); - if (!i8) { - i11 = 13; - continue; - } - HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] = 0; - i11 = 13; - } - if ((i11 | 0) == 21) { - _lexerror(i3, (i1 | 0) != 0 ? 12512 : 12536, 286); - } else if ((i11 | 0) == 23) { - i15 = HEAP32[i3 >> 2] | 0; - i13 = HEAP32[i4 >> 2] | 0; - i14 = i13 + 4 | 0; - i16 = HEAP32[i14 >> 2] | 0; - i11 = i13 + 8 | 0; - i12 = HEAP32[i11 >> 2] | 0; - do { - if ((i16 + 1 | 0) >>> 0 > i12 >>> 0) { - if (i12 >>> 0 > 2147483645) { - _lexerror(i3, 12368, 0); - } - i17 = i12 << 1; - i16 = HEAP32[i10 >> 2] | 0; - if ((i17 | 0) == -2) { - _luaM_toobig(i16); - } else { - i6 = _luaM_realloc_(i16, HEAP32[i13 >> 2] | 0, i12, i17) | 0; - HEAP32[i13 >> 2] = i6; - HEAP32[i11 >> 2] = i17; - i7 = HEAP32[i14 >> 2] | 0; - break; - } - } else { - i7 = i16; - i6 = HEAP32[i13 >> 2] | 0; - } - } while (0); - HEAP32[i14 >> 2] = i7 + 1; - HEAP8[i6 + i7 | 0] = i15; - i6 = HEAP32[i9 >> 2] | 0; - i18 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i18 + -1; - if ((i18 | 0) == 0) { - i6 = _luaZ_fill(i6) | 0; - } else { - i18 = i6 + 4 | 0; - i6 = HEAP32[i18 >> 2] | 0; - HEAP32[i18 >> 2] = i6 + 1; - i6 = HEAPU8[i6] | 0; - } - HEAP32[i3 >> 2] = i6; - if (i8) { - STACKTOP = i2; - return; - } - i4 = HEAP32[i4 >> 2] | 0; - i5 = i5 + 2 | 0; - i6 = HEAP32[i10 >> 2] | 0; - i5 = _luaS_newlstr(i6, (HEAP32[i4 >> 2] | 0) + i5 | 0, (HEAP32[i4 + 4 >> 2] | 0) - (i5 << 1) | 0) | 0; - i4 = i6 + 8 | 0; - i7 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i7 + 16; - HEAP32[i7 >> 2] = i5; - HEAP32[i7 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 0 | 64; - i7 = _luaH_set(i6, HEAP32[(HEAP32[i3 + 48 >> 2] | 0) + 4 >> 2] | 0, (HEAP32[i4 >> 2] | 0) + -16 | 0) | 0; - i3 = i7 + 8 | 0; - if ((HEAP32[i3 >> 2] | 0) == 0 ? (HEAP32[i7 >> 2] = 1, HEAP32[i3 >> 2] = 1, (HEAP32[(HEAP32[i6 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) : 0) { - _luaC_step(i6); - } - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -16; - HEAP32[i1 >> 2] = i5; - STACKTOP = i2; - return; - } else if ((i11 | 0) == 37) { - _lexerror(i3, 12368, 0); - } else if ((i11 | 0) == 39) { - _luaM_toobig(i10); - } else if ((i11 | 0) == 46) { - _lexerror(i3, 12368, 0); - } else if ((i11 | 0) == 48) { - _luaM_toobig(i18); - } -} -function _try_realloc_chunk(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0; - i2 = STACKTOP; - i4 = i1 + 4 | 0; - i6 = HEAP32[i4 >> 2] | 0; - i8 = i6 & -8; - i5 = i1 + i8 | 0; - i10 = HEAP32[12928 >> 2] | 0; - if (i1 >>> 0 < i10 >>> 0) { - _abort(); - } - i12 = i6 & 3; - if (!((i12 | 0) != 1 & i1 >>> 0 < i5 >>> 0)) { - _abort(); - } - i7 = i1 + (i8 | 4) | 0; - i13 = HEAP32[i7 >> 2] | 0; - if ((i13 & 1 | 0) == 0) { - _abort(); - } - if ((i12 | 0) == 0) { - if (i3 >>> 0 < 256) { - i15 = 0; - STACKTOP = i2; - return i15 | 0; - } - if (!(i8 >>> 0 < (i3 + 4 | 0) >>> 0) ? !((i8 - i3 | 0) >>> 0 > HEAP32[13392 >> 2] << 1 >>> 0) : 0) { - i15 = i1; - STACKTOP = i2; - return i15 | 0; - } - i15 = 0; - STACKTOP = i2; - return i15 | 0; - } - if (!(i8 >>> 0 < i3 >>> 0)) { - i5 = i8 - i3 | 0; - if (!(i5 >>> 0 > 15)) { - i15 = i1; - STACKTOP = i2; - return i15 | 0; - } - HEAP32[i4 >> 2] = i6 & 1 | i3 | 2; - HEAP32[i1 + (i3 + 4) >> 2] = i5 | 3; - HEAP32[i7 >> 2] = HEAP32[i7 >> 2] | 1; - _dispose_chunk(i1 + i3 | 0, i5); - i15 = i1; - STACKTOP = i2; - return i15 | 0; - } - if ((i5 | 0) == (HEAP32[12936 >> 2] | 0)) { - i5 = (HEAP32[12924 >> 2] | 0) + i8 | 0; - if (!(i5 >>> 0 > i3 >>> 0)) { - i15 = 0; - STACKTOP = i2; - return i15 | 0; - } - i15 = i5 - i3 | 0; - HEAP32[i4 >> 2] = i6 & 1 | i3 | 2; - HEAP32[i1 + (i3 + 4) >> 2] = i15 | 1; - HEAP32[12936 >> 2] = i1 + i3; - HEAP32[12924 >> 2] = i15; - i15 = i1; - STACKTOP = i2; - return i15 | 0; - } - if ((i5 | 0) == (HEAP32[12932 >> 2] | 0)) { - i7 = (HEAP32[12920 >> 2] | 0) + i8 | 0; - if (i7 >>> 0 < i3 >>> 0) { - i15 = 0; - STACKTOP = i2; - return i15 | 0; - } - i5 = i7 - i3 | 0; - if (i5 >>> 0 > 15) { - HEAP32[i4 >> 2] = i6 & 1 | i3 | 2; - HEAP32[i1 + (i3 + 4) >> 2] = i5 | 1; - HEAP32[i1 + i7 >> 2] = i5; - i15 = i1 + (i7 + 4) | 0; - HEAP32[i15 >> 2] = HEAP32[i15 >> 2] & -2; - i3 = i1 + i3 | 0; - } else { - HEAP32[i4 >> 2] = i6 & 1 | i7 | 2; - i3 = i1 + (i7 + 4) | 0; - HEAP32[i3 >> 2] = HEAP32[i3 >> 2] | 1; - i3 = 0; - i5 = 0; - } - HEAP32[12920 >> 2] = i5; - HEAP32[12932 >> 2] = i3; - i15 = i1; - STACKTOP = i2; - return i15 | 0; - } - if ((i13 & 2 | 0) != 0) { - i15 = 0; - STACKTOP = i2; - return i15 | 0; - } - i7 = (i13 & -8) + i8 | 0; - if (i7 >>> 0 < i3 >>> 0) { - i15 = 0; - STACKTOP = i2; - return i15 | 0; - } - i6 = i7 - i3 | 0; - i12 = i13 >>> 3; - do { - if (!(i13 >>> 0 < 256)) { - i11 = HEAP32[i1 + (i8 + 24) >> 2] | 0; - i13 = HEAP32[i1 + (i8 + 12) >> 2] | 0; - do { - if ((i13 | 0) == (i5 | 0)) { - i13 = i1 + (i8 + 20) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i13 = i1 + (i8 + 16) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i9 = 0; - break; - } - } - while (1) { - i15 = i12 + 20 | 0; - i14 = HEAP32[i15 >> 2] | 0; - if ((i14 | 0) != 0) { - i12 = i14; - i13 = i15; - continue; - } - i15 = i12 + 16 | 0; - i14 = HEAP32[i15 >> 2] | 0; - if ((i14 | 0) == 0) { - break; - } else { - i12 = i14; - i13 = i15; - } - } - if (i13 >>> 0 < i10 >>> 0) { - _abort(); - } else { - HEAP32[i13 >> 2] = 0; - i9 = i12; - break; - } - } else { - i12 = HEAP32[i1 + (i8 + 8) >> 2] | 0; - if (i12 >>> 0 < i10 >>> 0) { - _abort(); - } - i14 = i12 + 12 | 0; - if ((HEAP32[i14 >> 2] | 0) != (i5 | 0)) { - _abort(); - } - i10 = i13 + 8 | 0; - if ((HEAP32[i10 >> 2] | 0) == (i5 | 0)) { - HEAP32[i14 >> 2] = i13; - HEAP32[i10 >> 2] = i12; - i9 = i13; - break; - } else { - _abort(); - } - } - } while (0); - if ((i11 | 0) != 0) { - i10 = HEAP32[i1 + (i8 + 28) >> 2] | 0; - i12 = 13216 + (i10 << 2) | 0; - if ((i5 | 0) == (HEAP32[i12 >> 2] | 0)) { - HEAP32[i12 >> 2] = i9; - if ((i9 | 0) == 0) { - HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i10); - break; - } - } else { - if (i11 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - i10 = i11 + 16 | 0; - if ((HEAP32[i10 >> 2] | 0) == (i5 | 0)) { - HEAP32[i10 >> 2] = i9; - } else { - HEAP32[i11 + 20 >> 2] = i9; - } - if ((i9 | 0) == 0) { - break; - } - } - if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i9 + 24 >> 2] = i11; - i5 = HEAP32[i1 + (i8 + 16) >> 2] | 0; - do { - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 16 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i9; - break; - } - } - } while (0); - i5 = HEAP32[i1 + (i8 + 20) >> 2] | 0; - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 20 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i9; - break; - } - } - } - } else { - i9 = HEAP32[i1 + (i8 + 8) >> 2] | 0; - i8 = HEAP32[i1 + (i8 + 12) >> 2] | 0; - i13 = 12952 + (i12 << 1 << 2) | 0; - if ((i9 | 0) != (i13 | 0)) { - if (i9 >>> 0 < i10 >>> 0) { - _abort(); - } - if ((HEAP32[i9 + 12 >> 2] | 0) != (i5 | 0)) { - _abort(); - } - } - if ((i8 | 0) == (i9 | 0)) { - HEAP32[3228] = HEAP32[3228] & ~(1 << i12); - break; - } - if ((i8 | 0) != (i13 | 0)) { - if (i8 >>> 0 < i10 >>> 0) { - _abort(); - } - i10 = i8 + 8 | 0; - if ((HEAP32[i10 >> 2] | 0) == (i5 | 0)) { - i11 = i10; - } else { - _abort(); - } - } else { - i11 = i8 + 8 | 0; - } - HEAP32[i9 + 12 >> 2] = i8; - HEAP32[i11 >> 2] = i9; - } - } while (0); - if (i6 >>> 0 < 16) { - HEAP32[i4 >> 2] = i7 | HEAP32[i4 >> 2] & 1 | 2; - i15 = i1 + (i7 | 4) | 0; - HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 1; - i15 = i1; - STACKTOP = i2; - return i15 | 0; - } else { - HEAP32[i4 >> 2] = HEAP32[i4 >> 2] & 1 | i3 | 2; - HEAP32[i1 + (i3 + 4) >> 2] = i6 | 3; - i15 = i1 + (i7 | 4) | 0; - HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 1; - _dispose_chunk(i1 + i3 | 0, i6); - i15 = i1; - STACKTOP = i2; - return i15 | 0; - } - return 0; -} -function _luaK_posfix(i3, i16, i1, i4, i14) { - i3 = i3 | 0; - i16 = i16 | 0; - i1 = i1 | 0; - i4 = i4 | 0; - i14 = i14 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i15 = 0; - i2 = STACKTOP; - switch (i16 | 0) { - case 14: - { - _luaK_dischargevars(i3, i4); - i6 = i4 + 16 | 0; - i5 = HEAP32[i1 + 16 >> 2] | 0; - do { - if (!((i5 | 0) == -1)) { - i9 = HEAP32[i6 >> 2] | 0; - if ((i9 | 0) == -1) { - HEAP32[i6 >> 2] = i5; - break; - } - i7 = HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i6 = i7 + (i9 << 2) | 0; - i8 = HEAP32[i6 >> 2] | 0; - i10 = (i8 >>> 14) + -131071 | 0; - if ((i10 | 0) == -1) { - break; - } - i10 = i9 + 1 + i10 | 0; - if ((i10 | 0) == -1) { - break; - } else { - i9 = i10; - } - } - i5 = i5 + ~i9 | 0; - if ((((i5 | 0) > -1 ? i5 : 0 - i5 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i3 + 12 >> 2] | 0, 10624); - } else { - HEAP32[i6 >> 2] = (i5 << 14) + 2147467264 | i8 & 16383; - break; - } - } - } while (0); - HEAP32[i1 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i1 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i1 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i1 + 12 >> 2] = HEAP32[i4 + 12 >> 2]; - HEAP32[i1 + 16 >> 2] = HEAP32[i4 + 16 >> 2]; - HEAP32[i1 + 20 >> 2] = HEAP32[i4 + 20 >> 2]; - STACKTOP = i2; - return; - } - case 13: - { - _luaK_dischargevars(i3, i4); - i6 = i4 + 20 | 0; - i5 = HEAP32[i1 + 20 >> 2] | 0; - do { - if (!((i5 | 0) == -1)) { - i9 = HEAP32[i6 >> 2] | 0; - if ((i9 | 0) == -1) { - HEAP32[i6 >> 2] = i5; - break; - } - i7 = HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i8 = i7 + (i9 << 2) | 0; - i6 = HEAP32[i8 >> 2] | 0; - i10 = (i6 >>> 14) + -131071 | 0; - if ((i10 | 0) == -1) { - break; - } - i10 = i9 + 1 + i10 | 0; - if ((i10 | 0) == -1) { - break; - } else { - i9 = i10; - } - } - i5 = i5 + ~i9 | 0; - if ((((i5 | 0) > -1 ? i5 : 0 - i5 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i3 + 12 >> 2] | 0, 10624); - } else { - HEAP32[i8 >> 2] = (i5 << 14) + 2147467264 | i6 & 16383; - break; - } - } - } while (0); - HEAP32[i1 + 0 >> 2] = HEAP32[i4 + 0 >> 2]; - HEAP32[i1 + 4 >> 2] = HEAP32[i4 + 4 >> 2]; - HEAP32[i1 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i1 + 12 >> 2] = HEAP32[i4 + 12 >> 2]; - HEAP32[i1 + 16 >> 2] = HEAP32[i4 + 16 >> 2]; - HEAP32[i1 + 20 >> 2] = HEAP32[i4 + 20 >> 2]; - STACKTOP = i2; - return; - } - case 6: - { - i12 = i4 + 16 | 0; - i13 = i4 + 20 | 0; - i16 = (HEAP32[i12 >> 2] | 0) == (HEAP32[i13 >> 2] | 0); - _luaK_dischargevars(i3, i4); - do { - if (!i16) { - if ((HEAP32[i4 >> 2] | 0) == 6) { - i10 = HEAP32[i4 + 8 >> 2] | 0; - if ((HEAP32[i12 >> 2] | 0) == (HEAP32[i13 >> 2] | 0)) { - break; - } - if ((i10 | 0) >= (HEAPU8[i3 + 46 | 0] | 0 | 0)) { - _exp2reg(i3, i4, i10); - break; - } - } - _luaK_exp2nextreg(i3, i4); - } - } while (0); - if ((HEAP32[i4 >> 2] | 0) == 11 ? (i5 = i4 + 8 | 0, i7 = HEAP32[i5 >> 2] | 0, i8 = (HEAP32[i3 >> 2] | 0) + 12 | 0, i9 = HEAP32[i8 >> 2] | 0, i6 = HEAP32[i9 + (i7 << 2) >> 2] | 0, (i6 & 63 | 0) == 22) : 0) { - i4 = i1 + 8 | 0; - if (((HEAP32[i1 >> 2] | 0) == 6 ? (i11 = HEAP32[i4 >> 2] | 0, (i11 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i11 | 0) : 0) { - i6 = i3 + 48 | 0; - HEAP8[i6] = (HEAP8[i6] | 0) + -1 << 24 >> 24; - i6 = HEAP32[i5 >> 2] | 0; - i16 = HEAP32[i8 >> 2] | 0; - i9 = i16; - i7 = i6; - i6 = HEAP32[i16 + (i6 << 2) >> 2] | 0; - } - HEAP32[i9 + (i7 << 2) >> 2] = HEAP32[i4 >> 2] << 23 | i6 & 8388607; - HEAP32[i1 >> 2] = 11; - HEAP32[i4 >> 2] = HEAP32[i5 >> 2]; - STACKTOP = i2; - return; - } - _luaK_exp2nextreg(i3, i4); - _codearith(i3, 22, i1, i4, i14); - STACKTOP = i2; - return; - } - case 9: - case 8: - case 7: - { - i7 = i16 + 17 | 0; - i6 = _luaK_exp2RK(i3, i1) | 0; - i5 = _luaK_exp2RK(i3, i4) | 0; - if (((HEAP32[i4 >> 2] | 0) == 6 ? (i15 = HEAP32[i4 + 8 >> 2] | 0, (i15 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i15 | 0) : 0) { - i16 = i3 + 48 | 0; - HEAP8[i16] = (HEAP8[i16] | 0) + -1 << 24 >> 24; - } - i4 = i1 + 8 | 0; - if (((HEAP32[i1 >> 2] | 0) == 6 ? (i10 = HEAP32[i4 >> 2] | 0, (i10 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i10 | 0) : 0) { - i16 = i3 + 48 | 0; - HEAP8[i16] = (HEAP8[i16] | 0) + -1 << 24 >> 24; - } - HEAP32[i4 >> 2] = _condjump(i3, i7, 1, i6, i5) | 0; - HEAP32[i1 >> 2] = 10; - STACKTOP = i2; - return; - } - case 12: - case 11: - case 10: - { - i7 = i16 + 14 | 0; - i6 = _luaK_exp2RK(i3, i1) | 0; - i5 = _luaK_exp2RK(i3, i4) | 0; - if (((HEAP32[i4 >> 2] | 0) == 6 ? (i13 = HEAP32[i4 + 8 >> 2] | 0, (i13 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i13 | 0) : 0) { - i16 = i3 + 48 | 0; - HEAP8[i16] = (HEAP8[i16] | 0) + -1 << 24 >> 24; - } - i4 = i1 + 8 | 0; - if (((HEAP32[i1 >> 2] | 0) == 6 ? (i12 = HEAP32[i4 >> 2] | 0, (i12 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i12 | 0) : 0) { - i16 = i3 + 48 | 0; - HEAP8[i16] = (HEAP8[i16] | 0) + -1 << 24 >> 24; - } - i8 = (i7 | 0) == 24; - HEAP32[i4 >> 2] = _condjump(i3, i7, i8 & 1 ^ 1, i8 ? i6 : i5, i8 ? i5 : i6) | 0; - HEAP32[i1 >> 2] = 10; - STACKTOP = i2; - return; - } - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - { - _codearith(i3, i16 + 13 | 0, i1, i4, i14); - STACKTOP = i2; - return; - } - default: - { - STACKTOP = i2; - return; - } - } -} -function _body(i1, i4, i13, i5) { - i1 = i1 | 0; - i4 = i4 | 0; - i13 = i13 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i3 = i6 + 12 | 0; - i14 = i6; - i2 = i1 + 48 | 0; - i19 = HEAP32[i2 >> 2] | 0; - i18 = i1 + 52 | 0; - i17 = HEAP32[i18 >> 2] | 0; - i16 = HEAP32[i19 >> 2] | 0; - i19 = i19 + 36 | 0; - i23 = i16 + 56 | 0; - i24 = HEAP32[i23 >> 2] | 0; - i15 = i16 + 16 | 0; - if (((HEAP32[i19 >> 2] | 0) >= (i24 | 0) ? (i21 = _luaM_growaux_(i17, HEAP32[i15 >> 2] | 0, i23, 4, 262143, 6512) | 0, HEAP32[i15 >> 2] = i21, i20 = HEAP32[i23 >> 2] | 0, (i24 | 0) < (i20 | 0)) : 0) ? (i22 = i24 + 1 | 0, HEAP32[i21 + (i24 << 2) >> 2] = 0, (i22 | 0) < (i20 | 0)) : 0) { - while (1) { - i21 = i22 + 1 | 0; - HEAP32[(HEAP32[i15 >> 2] | 0) + (i22 << 2) >> 2] = 0; - if ((i21 | 0) == (i20 | 0)) { - break; - } else { - i22 = i21; - } - } - } - i20 = _luaF_newproto(i17) | 0; - i24 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i24 + 1; - HEAP32[(HEAP32[i15 >> 2] | 0) + (i24 << 2) >> 2] = i20; - if (!((HEAP8[i20 + 5 | 0] & 3) == 0) ? !((HEAP8[i16 + 5 | 0] & 4) == 0) : 0) { - _luaC_barrier_(i17, i16, i20); - } - HEAP32[i3 >> 2] = i20; - HEAP32[i20 + 64 >> 2] = i5; - i16 = HEAP32[i18 >> 2] | 0; - HEAP32[i3 + 8 >> 2] = HEAP32[i2 >> 2]; - i17 = i3 + 12 | 0; - HEAP32[i17 >> 2] = i1; - HEAP32[i2 >> 2] = i3; - HEAP32[i3 + 20 >> 2] = 0; - HEAP32[i3 + 24 >> 2] = 0; - HEAP32[i3 + 28 >> 2] = -1; - HEAP32[i3 + 32 >> 2] = 0; - HEAP32[i3 + 36 >> 2] = 0; - i22 = i3 + 44 | 0; - i15 = i1 + 64 | 0; - HEAP32[i22 + 0 >> 2] = 0; - HEAP8[i22 + 4 | 0] = 0; - HEAP32[i3 + 40 >> 2] = HEAP32[(HEAP32[i15 >> 2] | 0) + 4 >> 2]; - i15 = i3 + 16 | 0; - HEAP32[i15 >> 2] = 0; - HEAP32[i20 + 36 >> 2] = HEAP32[i1 + 68 >> 2]; - HEAP8[i20 + 78 | 0] = 2; - i22 = _luaH_new(i16) | 0; - HEAP32[i3 + 4 >> 2] = i22; - i23 = i16 + 8 | 0; - i24 = HEAP32[i23 >> 2] | 0; - HEAP32[i24 >> 2] = i22; - HEAP32[i24 + 8 >> 2] = 69; - i24 = (HEAP32[i23 >> 2] | 0) + 16 | 0; - HEAP32[i23 >> 2] = i24; - if (((HEAP32[i16 + 24 >> 2] | 0) - i24 | 0) < 16) { - _luaD_growstack(i16, 0); - } - HEAP8[i14 + 10 | 0] = 0; - HEAP8[i14 + 8 | 0] = HEAP8[i3 + 46 | 0] | 0; - i24 = HEAP32[(HEAP32[i17 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i14 + 4 >> 1] = HEAP32[i24 + 28 >> 2]; - HEAP16[i14 + 6 >> 1] = HEAP32[i24 + 16 >> 2]; - HEAP8[i14 + 9 | 0] = 0; - HEAP32[i14 >> 2] = HEAP32[i15 >> 2]; - HEAP32[i15 >> 2] = i14; - i14 = i1 + 16 | 0; - if ((HEAP32[i14 >> 2] | 0) != 40) { - _error_expected(i1, 40); - } - _luaX_next(i1); - if ((i13 | 0) != 0) { - _new_localvar(i1, _luaX_newstring(i1, 6456, 4) | 0); - i24 = HEAP32[i2 >> 2] | 0; - i22 = i24 + 46 | 0; - i23 = (HEAPU8[i22] | 0) + 1 | 0; - HEAP8[i22] = i23; - HEAP32[(HEAP32[(HEAP32[i24 >> 2] | 0) + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i24 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((i23 & 255) + -1 + (HEAP32[i24 + 40 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i24 + 20 >> 2]; - } - i13 = HEAP32[i2 >> 2] | 0; - i15 = HEAP32[i13 >> 2] | 0; - i16 = i15 + 77 | 0; - HEAP8[i16] = 0; - i19 = HEAP32[i14 >> 2] | 0; - L20 : do { - if ((i19 | 0) != 41) { - i17 = i1 + 24 | 0; - i18 = 0; - while (1) { - if ((i19 | 0) == 280) { - i17 = 18; - break; - } else if ((i19 | 0) != 288) { - i17 = 19; - break; - } - i24 = HEAP32[i17 >> 2] | 0; - _luaX_next(i1); - _new_localvar(i1, i24); - i18 = i18 + 1 | 0; - if ((HEAP8[i16] | 0) != 0) { - i11 = i18; - break L20; - } - if ((HEAP32[i14 >> 2] | 0) != 44) { - i11 = i18; - break L20; - } - _luaX_next(i1); - i19 = HEAP32[i14 >> 2] | 0; - } - if ((i17 | 0) == 18) { - _luaX_next(i1); - HEAP8[i16] = 1; - i11 = i18; - break; - } else if ((i17 | 0) == 19) { - _luaX_syntaxerror(i1, 6464); - } - } else { - i11 = 0; - } - } while (0); - i18 = HEAP32[i2 >> 2] | 0; - i16 = i18 + 46 | 0; - i17 = (HEAPU8[i16] | 0) + i11 | 0; - HEAP8[i16] = i17; - if ((i11 | 0) != 0 ? (i8 = i18 + 20 | 0, i9 = i18 + 40 | 0, i7 = HEAP32[(HEAP32[i18 >> 2] | 0) + 24 >> 2] | 0, i10 = HEAP32[HEAP32[(HEAP32[i18 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0, HEAP32[i7 + ((HEAP16[i10 + ((i17 & 255) - i11 + (HEAP32[i9 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i8 >> 2], i12 = i11 + -1 | 0, (i12 | 0) != 0) : 0) { - do { - HEAP32[i7 + ((HEAP16[i10 + ((HEAPU8[i16] | 0) - i12 + (HEAP32[i9 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i8 >> 2]; - i12 = i12 + -1 | 0; - } while ((i12 | 0) != 0); - } - i24 = i13 + 46 | 0; - HEAP8[i15 + 76 | 0] = HEAP8[i24] | 0; - _luaK_reserveregs(i13, HEAPU8[i24] | 0); - if ((HEAP32[i14 >> 2] | 0) != 41) { - _error_expected(i1, 41); - } - _luaX_next(i1); - L39 : while (1) { - i7 = HEAP32[i14 >> 2] | 0; - switch (i7 | 0) { - case 277: - case 286: - case 262: - case 261: - case 260: - { - i17 = 30; - break L39; - } - default: - {} - } - _statement(i1); - if ((i7 | 0) == 274) { - i17 = 30; - break; - } - } - if ((i17 | 0) == 30) { - HEAP32[(HEAP32[i3 >> 2] | 0) + 68 >> 2] = HEAP32[i1 + 4 >> 2]; - _check_match(i1, 262, 265, i5); - i24 = HEAP32[(HEAP32[i2 >> 2] | 0) + 8 >> 2] | 0; - i23 = _luaK_codeABx(i24, 37, 0, (HEAP32[i24 + 36 >> 2] | 0) + -1 | 0) | 0; - HEAP32[i4 + 16 >> 2] = -1; - HEAP32[i4 + 20 >> 2] = -1; - HEAP32[i4 >> 2] = 11; - HEAP32[i4 + 8 >> 2] = i23; - _luaK_exp2nextreg(i24, i4); - _close_func(i1); - STACKTOP = i6; - return; - } -} -function _luaH_newkey(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, d21 = 0.0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 144 | 0; - i8 = i4 + 8 | 0; - i10 = i4; - i5 = i4 + 16 | 0; - i6 = i1 + 8 | 0; - i11 = HEAP32[i6 >> 2] | 0; - if ((i11 | 0) == 0) { - _luaG_runerror(i3, 7968, i8); - } else if ((i11 | 0) == 3) { - i15 = 3; - } - if ((i15 | 0) == 3 ? (d21 = +HEAPF64[i1 >> 3], !(d21 == d21 & 0.0 == 0.0)) : 0) { - _luaG_runerror(i3, 7992, i8); - } - i13 = _mainposition(i2, i1) | 0; - i14 = i13 + 8 | 0; - do { - if ((HEAP32[i14 >> 2] | 0) != 0 | (i13 | 0) == 8016) { - i18 = i2 + 20 | 0; - i11 = i2 + 16 | 0; - i17 = HEAP32[i11 >> 2] | 0; - i16 = HEAP32[i18 >> 2] | 0; - while (1) { - if (!(i16 >>> 0 > i17 >>> 0)) { - break; - } - i12 = i16 + -32 | 0; - HEAP32[i18 >> 2] = i12; - if ((HEAP32[i16 + -8 >> 2] | 0) == 0) { - i15 = 37; - break; - } else { - i16 = i12; - } - } - if ((i15 | 0) == 37) { - i5 = _mainposition(i2, i13 + 16 | 0) | 0; - if ((i5 | 0) == (i13 | 0)) { - i20 = i13 + 28 | 0; - HEAP32[i16 + -4 >> 2] = HEAP32[i20 >> 2]; - HEAP32[i20 >> 2] = i12; - break; - } else { - i7 = i5; - } - do { - i5 = i7 + 28 | 0; - i7 = HEAP32[i5 >> 2] | 0; - } while ((i7 | 0) != (i13 | 0)); - HEAP32[i5 >> 2] = i12; - HEAP32[i12 + 0 >> 2] = HEAP32[i13 + 0 >> 2]; - HEAP32[i12 + 4 >> 2] = HEAP32[i13 + 4 >> 2]; - HEAP32[i12 + 8 >> 2] = HEAP32[i13 + 8 >> 2]; - HEAP32[i12 + 12 >> 2] = HEAP32[i13 + 12 >> 2]; - HEAP32[i12 + 16 >> 2] = HEAP32[i13 + 16 >> 2]; - HEAP32[i12 + 20 >> 2] = HEAP32[i13 + 20 >> 2]; - HEAP32[i12 + 24 >> 2] = HEAP32[i13 + 24 >> 2]; - HEAP32[i12 + 28 >> 2] = HEAP32[i13 + 28 >> 2]; - HEAP32[i13 + 28 >> 2] = 0; - HEAP32[i14 >> 2] = 0; - i12 = i13; - break; - } - i13 = i5 + 0 | 0; - i12 = i13 + 124 | 0; - do { - HEAP32[i13 >> 2] = 0; - i13 = i13 + 4 | 0; - } while ((i13 | 0) < (i12 | 0)); - i15 = i2 + 12 | 0; - i13 = HEAP32[i2 + 28 >> 2] | 0; - i12 = 0; - i20 = 1; - i16 = 0; - i14 = 1; - while (1) { - if ((i14 | 0) > (i13 | 0)) { - if ((i20 | 0) > (i13 | 0)) { - break; - } else { - i19 = i13; - } - } else { - i19 = i14; - } - if ((i20 | 0) > (i19 | 0)) { - i18 = i20; - i17 = 0; - } else { - i18 = HEAP32[i15 >> 2] | 0; - i17 = 0; - while (1) { - i17 = ((HEAP32[i18 + (i20 + -1 << 4) + 8 >> 2] | 0) != 0) + i17 | 0; - if ((i20 | 0) >= (i19 | 0)) { - break; - } else { - i20 = i20 + 1 | 0; - } - } - i18 = i19 + 1 | 0; - } - i20 = i5 + (i16 << 2) | 0; - HEAP32[i20 >> 2] = (HEAP32[i20 >> 2] | 0) + i17; - i12 = i17 + i12 | 0; - i16 = i16 + 1 | 0; - if ((i16 | 0) < 31) { - i20 = i18; - i14 = i14 << 1; - } else { - break; - } - } - i14 = 0; - i15 = 1 << (HEAPU8[i2 + 7 | 0] | 0); - i13 = 0; - L32 : while (1) { - i16 = i15; - while (1) { - i15 = i16 + -1 | 0; - if ((i16 | 0) == 0) { - break L32; - } - i16 = HEAP32[i11 >> 2] | 0; - if ((HEAP32[i16 + (i15 << 5) + 8 >> 2] | 0) == 0) { - i16 = i15; - } else { - break; - } - } - if (((HEAP32[i16 + (i15 << 5) + 24 >> 2] | 0) == 3 ? (d21 = +HEAPF64[i16 + (i15 << 5) + 16 >> 3], HEAPF64[i10 >> 3] = d21 + 6755399441055744.0, i9 = HEAP32[i10 >> 2] | 0, +(i9 | 0) == d21) : 0) ? (i9 + -1 | 0) >>> 0 < 1073741824 : 0) { - i16 = i5 + ((_luaO_ceillog2(i9) | 0) << 2) | 0; - HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) + 1; - i16 = 1; - } else { - i16 = 0; - } - i14 = i16 + i14 | 0; - i13 = i13 + 1 | 0; - } - i9 = i14 + i12 | 0; - if (((HEAP32[i6 >> 2] | 0) == 3 ? (d21 = +HEAPF64[i1 >> 3], HEAPF64[i8 >> 3] = d21 + 6755399441055744.0, i7 = HEAP32[i8 >> 2] | 0, +(i7 | 0) == d21) : 0) ? (i7 + -1 | 0) >>> 0 < 1073741824 : 0) { - i6 = i5 + ((_luaO_ceillog2(i7) | 0) << 2) | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 1; - i6 = 1; - } else { - i6 = 0; - } - i7 = i9 + i6 | 0; - L49 : do { - if ((i7 | 0) > 0) { - i14 = 0; - i10 = 0; - i6 = 0; - i8 = 0; - i11 = 0; - i9 = 1; - while (1) { - i15 = HEAP32[i5 + (i6 << 2) >> 2] | 0; - if ((i15 | 0) > 0) { - i15 = i15 + i10 | 0; - i14 = (i15 | 0) > (i14 | 0); - i10 = i15; - i8 = i14 ? i9 : i8; - i11 = i14 ? i15 : i11; - } - if ((i10 | 0) == (i7 | 0)) { - break L49; - } - i9 = i9 << 1; - i14 = (i9 | 0) / 2 | 0; - if ((i14 | 0) < (i7 | 0)) { - i6 = i6 + 1 | 0; - } else { - break; - } - } - } else { - i8 = 0; - i11 = 0; - } - } while (0); - _luaH_resize(i3, i2, i8, i12 + 1 + i13 - i11 | 0); - i5 = _luaH_get(i2, i1) | 0; - if ((i5 | 0) != 5192) { - i20 = i5; - STACKTOP = i4; - return i20 | 0; - } - i20 = _luaH_newkey(i3, i2, i1) | 0; - STACKTOP = i4; - return i20 | 0; - } else { - i12 = i13; - } - } while (0); - i18 = i1; - i19 = HEAP32[i18 + 4 >> 2] | 0; - i20 = i12 + 16 | 0; - HEAP32[i20 >> 2] = HEAP32[i18 >> 2]; - HEAP32[i20 + 4 >> 2] = i19; - HEAP32[i12 + 24 >> 2] = HEAP32[i6 >> 2]; - if (((HEAP32[i6 >> 2] & 64 | 0) != 0 ? !((HEAP8[(HEAP32[i1 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) ? !((HEAP8[i2 + 5 | 0] & 4) == 0) : 0) { - _luaC_barrierback_(i3, i2); - } - i20 = i12; - STACKTOP = i4; - return i20 | 0; -} -function _luaV_concat(i7, i10) { - i7 = i7 | 0; - i10 = i10 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i9 = i5; - i8 = i5 + 8 | 0; - i6 = i7 + 8 | 0; - i2 = i7 + 12 | 0; - i3 = i7 + 28 | 0; - i4 = i7 + 16 | 0; - i11 = HEAP32[i6 >> 2] | 0; - L1 : while (1) { - i14 = i11 + -32 | 0; - i12 = i11 + -24 | 0; - i17 = HEAP32[i12 >> 2] | 0; - i13 = i11 + -16 | 0; - do { - if ((i17 & 15 | 0) == 4 | (i17 | 0) == 3) { - i15 = i11 + -8 | 0; - i16 = HEAP32[i15 >> 2] | 0; - if ((i16 & 15 | 0) == 4) { - i16 = i13; - } else { - if ((i16 | 0) != 3) { - i1 = 7; - break; - } - HEAPF64[tempDoublePtr >> 3] = +HEAPF64[i13 >> 3]; - HEAP32[i9 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i9 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i16 = _luaS_newlstr(i7, i8, _sprintf(i8 | 0, 8936, i9 | 0) | 0) | 0; - HEAP32[i13 >> 2] = i16; - HEAP32[i15 >> 2] = HEAPU8[i16 + 4 | 0] | 0 | 64; - i16 = i13; - i17 = HEAP32[i12 >> 2] | 0; - } - i16 = HEAP32[(HEAP32[i16 >> 2] | 0) + 12 >> 2] | 0; - i18 = (i17 & 15 | 0) == 4; - if ((i16 | 0) == 0) { - if (i18) { - i12 = 2; - break; - } - if ((i17 | 0) != 3) { - i12 = 2; - break; - } - HEAPF64[tempDoublePtr >> 3] = +HEAPF64[i14 >> 3]; - HEAP32[i9 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i9 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i18 = _luaS_newlstr(i7, i8, _sprintf(i8 | 0, 8936, i9 | 0) | 0) | 0; - HEAP32[i14 >> 2] = i18; - HEAP32[i12 >> 2] = HEAPU8[i18 + 4 | 0] | 0 | 64; - i12 = 2; - break; - } - if (i18 ? (HEAP32[(HEAP32[i14 >> 2] | 0) + 12 >> 2] | 0) == 0 : 0) { - i16 = i13; - i17 = HEAP32[i16 + 4 >> 2] | 0; - i18 = i14; - HEAP32[i18 >> 2] = HEAP32[i16 >> 2]; - HEAP32[i18 + 4 >> 2] = i17; - HEAP32[i12 >> 2] = HEAP32[i15 >> 2]; - i12 = 2; - break; - } - L19 : do { - if ((i10 | 0) > 1) { - i12 = 1; - do { - i15 = ~i12; - i14 = i11 + (i15 << 4) | 0; - i15 = i11 + (i15 << 4) + 8 | 0; - i13 = HEAP32[i15 >> 2] | 0; - if ((i13 & 15 | 0) != 4) { - if ((i13 | 0) != 3) { - break L19; - } - HEAPF64[tempDoublePtr >> 3] = +HEAPF64[i14 >> 3]; - HEAP32[i9 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i9 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i18 = _luaS_newlstr(i7, i8, _sprintf(i8 | 0, 8936, i9 | 0) | 0) | 0; - HEAP32[i14 >> 2] = i18; - HEAP32[i15 >> 2] = HEAPU8[i18 + 4 | 0] | 0 | 64; - } - i13 = HEAP32[(HEAP32[i14 >> 2] | 0) + 12 >> 2] | 0; - if (!(i13 >>> 0 < (-3 - i16 | 0) >>> 0)) { - i1 = 24; - break L1; - } - i16 = i13 + i16 | 0; - i12 = i12 + 1 | 0; - } while ((i12 | 0) < (i10 | 0)); - } else { - i12 = 1; - } - } while (0); - i14 = _luaZ_openspace(i7, (HEAP32[i2 >> 2] | 0) + 144 | 0, i16) | 0; - i15 = i12; - i13 = 0; - do { - i17 = HEAP32[i11 + (0 - i15 << 4) >> 2] | 0; - i18 = HEAP32[i17 + 12 >> 2] | 0; - _memcpy(i14 + i13 | 0, i17 + 16 | 0, i18 | 0) | 0; - i13 = i18 + i13 | 0; - i15 = i15 + -1 | 0; - } while ((i15 | 0) > 0); - i18 = 0 - i12 | 0; - i17 = _luaS_newlstr(i7, i14, i13) | 0; - HEAP32[i11 + (i18 << 4) >> 2] = i17; - HEAP32[i11 + (i18 << 4) + 8 >> 2] = HEAPU8[i17 + 4 | 0] | 0 | 64; - } else { - i1 = 7; - } - } while (0); - if ((i1 | 0) == 7) { - i1 = 0; - i15 = _luaT_gettmbyobj(i7, i14, 15) | 0; - if ((HEAP32[i15 + 8 >> 2] | 0) == 0) { - i15 = _luaT_gettmbyobj(i7, i13, 15) | 0; - if ((HEAP32[i15 + 8 >> 2] | 0) == 0) { - i1 = 10; - break; - } - } - i18 = i14 - (HEAP32[i3 >> 2] | 0) | 0; - i16 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i16 + 16; - i20 = i15; - i19 = HEAP32[i20 + 4 >> 2] | 0; - i17 = i16; - HEAP32[i17 >> 2] = HEAP32[i20 >> 2]; - HEAP32[i17 + 4 >> 2] = i19; - HEAP32[i16 + 8 >> 2] = HEAP32[i15 + 8 >> 2]; - i15 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i15 + 16; - i16 = i14; - i17 = HEAP32[i16 + 4 >> 2] | 0; - i14 = i15; - HEAP32[i14 >> 2] = HEAP32[i16 >> 2]; - HEAP32[i14 + 4 >> 2] = i17; - HEAP32[i15 + 8 >> 2] = HEAP32[i12 >> 2]; - i12 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i12 + 16; - i15 = i13; - i14 = HEAP32[i15 + 4 >> 2] | 0; - i17 = i12; - HEAP32[i17 >> 2] = HEAP32[i15 >> 2]; - HEAP32[i17 + 4 >> 2] = i14; - HEAP32[i12 + 8 >> 2] = HEAP32[i11 + -8 >> 2]; - _luaD_call(i7, (HEAP32[i6 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i4 >> 2] | 0) + 18 | 0] & 1); - i12 = HEAP32[i3 >> 2] | 0; - i17 = HEAP32[i6 >> 2] | 0; - i14 = i17 + -16 | 0; - HEAP32[i6 >> 2] = i14; - i15 = HEAP32[i14 + 4 >> 2] | 0; - i16 = i12 + i18 | 0; - HEAP32[i16 >> 2] = HEAP32[i14 >> 2]; - HEAP32[i16 + 4 >> 2] = i15; - HEAP32[i12 + (i18 + 8) >> 2] = HEAP32[i17 + -8 >> 2]; - i12 = 2; - } - i10 = i10 + 1 - i12 | 0; - i11 = (HEAP32[i6 >> 2] | 0) + (1 - i12 << 4) | 0; - HEAP32[i6 >> 2] = i11; - if ((i10 | 0) <= 1) { - i1 = 30; - break; - } - } - if ((i1 | 0) == 10) { - _luaG_concaterror(i7, i14, i13); - } else if ((i1 | 0) == 24) { - _luaG_runerror(i7, 9e3, i9); - } else if ((i1 | 0) == 30) { - STACKTOP = i5; - return; - } -} -function _str_gsub(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 1344 | 0; - i4 = i3; - i5 = i3 + 1336 | 0; - i14 = i3 + 1332 | 0; - i10 = i3 + 1328 | 0; - i6 = i3 + 1048 | 0; - i2 = i3 + 8 | 0; - i20 = _luaL_checklstring(i1, 1, i14) | 0; - i13 = _luaL_checklstring(i1, 2, i10) | 0; - i8 = _lua_type(i1, 3) | 0; - i9 = _luaL_optinteger(i1, 4, (HEAP32[i14 >> 2] | 0) + 1 | 0) | 0; - i7 = (HEAP8[i13] | 0) == 94; - if (!((i8 + -3 | 0) >>> 0 < 2 | (i8 | 0) == 6 | (i8 | 0) == 5)) { - _luaL_argerror(i1, 3, 7528) | 0; - } - _luaL_buffinit(i1, i2); - if (i7) { - i15 = (HEAP32[i10 >> 2] | 0) + -1 | 0; - HEAP32[i10 >> 2] = i15; - i13 = i13 + 1 | 0; - } else { - i15 = HEAP32[i10 >> 2] | 0; - } - i11 = i6 + 16 | 0; - HEAP32[i11 >> 2] = i1; - HEAP32[i6 >> 2] = 200; - i12 = i6 + 4 | 0; - HEAP32[i12 >> 2] = i20; - i10 = i6 + 8 | 0; - HEAP32[i10 >> 2] = i20 + (HEAP32[i14 >> 2] | 0); - HEAP32[i6 + 12 >> 2] = i13 + i15; - i14 = i6 + 20 | 0; - i15 = i2 + 8 | 0; - i18 = i2 + 4 | 0; - i16 = i6 + 28 | 0; - i17 = i6 + 24 | 0; - i22 = 0; - while (1) { - if (!(i22 >>> 0 < i9 >>> 0)) { - i19 = 48; - break; - } - HEAP32[i14 >> 2] = 0; - i21 = _match(i6, i20, i13) | 0; - if ((i21 | 0) != 0) { - i22 = i22 + 1 | 0; - i23 = HEAP32[i11 >> 2] | 0; - if ((i8 | 0) == 5) { - do { - if ((HEAP32[i14 >> 2] | 0) > 0) { - i24 = HEAP32[i16 >> 2] | 0; - if (!((i24 | 0) == -1)) { - i25 = HEAP32[i17 >> 2] | 0; - if ((i24 | 0) == -2) { - _lua_pushinteger(i23, i25 + 1 - (HEAP32[i12 >> 2] | 0) | 0); - break; - } else { - i19 = i23; - } - } else { - _luaL_error(i23, 7248, i4) | 0; - i19 = HEAP32[i11 >> 2] | 0; - i25 = HEAP32[i17 >> 2] | 0; - } - _lua_pushlstring(i19, i25, i24) | 0; - } else { - _lua_pushlstring(i23, i20, i21 - i20 | 0) | 0; - } - } while (0); - _lua_gettable(i23, 3); - i19 = 37; - } else if ((i8 | 0) != 6) { - i24 = _lua_tolstring(i23, 3, i5) | 0; - if ((HEAP32[i5 >> 2] | 0) != 0) { - i23 = i21 - i20 | 0; - i25 = 0; - do { - i26 = i24 + i25 | 0; - i27 = HEAP8[i26] | 0; - do { - if (i27 << 24 >> 24 == 37) { - i25 = i25 + 1 | 0; - i26 = i24 + i25 | 0; - i28 = HEAP8[i26] | 0; - i27 = i28 << 24 >> 24; - if (((i28 & 255) + -48 | 0) >>> 0 < 10) { - if (i28 << 24 >> 24 == 48) { - _luaL_addlstring(i2, i20, i23); - break; - } else { - _push_onecapture(i6, i27 + -49 | 0, i20, i21); - _luaL_addvalue(i2); - break; - } - } - if (!(i28 << 24 >> 24 == 37)) { - i28 = HEAP32[i11 >> 2] | 0; - HEAP32[i4 >> 2] = 37; - _luaL_error(i28, 7600, i4) | 0; - } - i27 = HEAP32[i15 >> 2] | 0; - if (!(i27 >>> 0 < (HEAP32[i18 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i2, 1) | 0; - i27 = HEAP32[i15 >> 2] | 0; - } - i28 = HEAP8[i26] | 0; - HEAP32[i15 >> 2] = i27 + 1; - HEAP8[(HEAP32[i2 >> 2] | 0) + i27 | 0] = i28; - } else { - i28 = HEAP32[i15 >> 2] | 0; - if (!(i28 >>> 0 < (HEAP32[i18 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i2, 1) | 0; - i28 = HEAP32[i15 >> 2] | 0; - i27 = HEAP8[i26] | 0; - } - HEAP32[i15 >> 2] = i28 + 1; - HEAP8[(HEAP32[i2 >> 2] | 0) + i28 | 0] = i27; - } - } while (0); - i25 = i25 + 1 | 0; - } while (i25 >>> 0 < (HEAP32[i5 >> 2] | 0) >>> 0); - } - } else { - _lua_pushvalue(i23, 3); - i19 = HEAP32[i14 >> 2] | 0; - i19 = (i19 | 0) != 0 | (i20 | 0) == 0 ? i19 : 1; - _luaL_checkstack(HEAP32[i11 >> 2] | 0, i19, 7200); - if ((i19 | 0) > 0) { - i24 = 0; - do { - _push_onecapture(i6, i24, i20, i21); - i24 = i24 + 1 | 0; - } while ((i24 | 0) != (i19 | 0)); - } - _lua_callk(i23, i19, 1, 0, 0); - i19 = 37; - } - if ((i19 | 0) == 37) { - i19 = 0; - if ((_lua_toboolean(i23, -1) | 0) != 0) { - if ((_lua_isstring(i23, -1) | 0) == 0) { - HEAP32[i4 >> 2] = _lua_typename(i23, _lua_type(i23, -1) | 0) | 0; - _luaL_error(i23, 7560, i4) | 0; - } - } else { - _lua_settop(i23, -2); - _lua_pushlstring(i23, i20, i21 - i20 | 0) | 0; - } - _luaL_addvalue(i2); - } - if (i21 >>> 0 > i20 >>> 0) { - i20 = i21; - } else { - i19 = 43; - } - } else { - i19 = 43; - } - if ((i19 | 0) == 43) { - i19 = 0; - if (!(i20 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0)) { - i19 = 48; - break; - } - i21 = HEAP32[i15 >> 2] | 0; - if (!(i21 >>> 0 < (HEAP32[i18 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i2, 1) | 0; - i21 = HEAP32[i15 >> 2] | 0; - } - i28 = HEAP8[i20] | 0; - HEAP32[i15 >> 2] = i21 + 1; - HEAP8[(HEAP32[i2 >> 2] | 0) + i21 | 0] = i28; - i20 = i20 + 1 | 0; - } - if (i7) { - i19 = 48; - break; - } - } - if ((i19 | 0) == 48) { - _luaL_addlstring(i2, i20, (HEAP32[i10 >> 2] | 0) - i20 | 0); - _luaL_pushresult(i2); - _lua_pushinteger(i1, i22); - STACKTOP = i3; - return 2; - } - return 0; -} -function _constructor(i11, i13) { - i11 = i11 | 0; - i13 = i13 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i10 = i5 + 40 | 0; - i8 = i5; - i12 = i11 + 48 | 0; - i6 = HEAP32[i12 >> 2] | 0; - i9 = HEAP32[i11 + 4 >> 2] | 0; - i2 = _luaK_codeABC(i6, 11, 0, 0, 0) | 0; - i7 = i8 + 36 | 0; - HEAP32[i7 >> 2] = 0; - i4 = i8 + 28 | 0; - HEAP32[i4 >> 2] = 0; - i3 = i8 + 32 | 0; - HEAP32[i3 >> 2] = 0; - i1 = i8 + 24 | 0; - HEAP32[i1 >> 2] = i13; - HEAP32[i13 + 16 >> 2] = -1; - HEAP32[i13 + 20 >> 2] = -1; - HEAP32[i13 >> 2] = 11; - HEAP32[i13 + 8 >> 2] = i2; - HEAP32[i8 + 16 >> 2] = -1; - HEAP32[i8 + 20 >> 2] = -1; - HEAP32[i8 >> 2] = 0; - HEAP32[i8 + 8 >> 2] = 0; - _luaK_exp2nextreg(HEAP32[i12 >> 2] | 0, i13); - i13 = i11 + 16 | 0; - if ((HEAP32[i13 >> 2] | 0) != 123) { - _error_expected(i11, 123); - } - _luaX_next(i11); - L4 : do { - if ((HEAP32[i13 >> 2] | 0) != 125) { - L5 : while (1) { - if ((HEAP32[i8 >> 2] | 0) != 0 ? (_luaK_exp2nextreg(i6, i8), HEAP32[i8 >> 2] = 0, (HEAP32[i7 >> 2] | 0) == 50) : 0) { - _luaK_setlist(i6, HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] | 0, HEAP32[i3 >> 2] | 0, 50); - HEAP32[i7 >> 2] = 0; - } - i14 = HEAP32[i13 >> 2] | 0; - do { - if ((i14 | 0) == 288) { - if ((_luaX_lookahead(i11) | 0) == 61) { - _recfield(i11, i8); - break; - } - _subexpr(i11, i8, 0) | 0; - i14 = HEAP32[i12 >> 2] | 0; - i15 = HEAP32[i3 >> 2] | 0; - if ((i15 | 0) > 2147483645) { - i12 = 10; - break L5; - } - HEAP32[i3 >> 2] = i15 + 1; - HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 1; - } else if ((i14 | 0) == 91) { - _recfield(i11, i8); - } else { - _subexpr(i11, i8, 0) | 0; - i14 = HEAP32[i12 >> 2] | 0; - i15 = HEAP32[i3 >> 2] | 0; - if ((i15 | 0) > 2147483645) { - i12 = 17; - break L5; - } - HEAP32[i3 >> 2] = i15 + 1; - HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 1; - } - } while (0); - i14 = HEAP32[i13 >> 2] | 0; - if ((i14 | 0) == 44) { - _luaX_next(i11); - } else if ((i14 | 0) == 59) { - _luaX_next(i11); - } else { - break L4; - } - if ((HEAP32[i13 >> 2] | 0) == 125) { - break L4; - } - } - if ((i12 | 0) == 10) { - i12 = i14 + 12 | 0; - i13 = HEAP32[(HEAP32[i12 >> 2] | 0) + 52 >> 2] | 0; - i14 = HEAP32[(HEAP32[i14 >> 2] | 0) + 64 >> 2] | 0; - if ((i14 | 0) == 0) { - i16 = 6552; - HEAP32[i10 >> 2] = 6528; - i15 = i10 + 4 | 0; - HEAP32[i15 >> 2] = 2147483645; - i15 = i10 + 8 | 0; - HEAP32[i15 >> 2] = i16; - i15 = _luaO_pushfstring(i13, 6592, i10) | 0; - i16 = HEAP32[i12 >> 2] | 0; - _luaX_syntaxerror(i16, i15); - } - HEAP32[i10 >> 2] = i14; - i15 = _luaO_pushfstring(i13, 6568, i10) | 0; - HEAP32[i10 >> 2] = 6528; - i16 = i10 + 4 | 0; - HEAP32[i16 >> 2] = 2147483645; - i16 = i10 + 8 | 0; - HEAP32[i16 >> 2] = i15; - i16 = _luaO_pushfstring(i13, 6592, i10) | 0; - i15 = HEAP32[i12 >> 2] | 0; - _luaX_syntaxerror(i15, i16); - } else if ((i12 | 0) == 17) { - i13 = i14 + 12 | 0; - i12 = HEAP32[(HEAP32[i13 >> 2] | 0) + 52 >> 2] | 0; - i14 = HEAP32[(HEAP32[i14 >> 2] | 0) + 64 >> 2] | 0; - if ((i14 | 0) == 0) { - i15 = 6552; - HEAP32[i10 >> 2] = 6528; - i16 = i10 + 4 | 0; - HEAP32[i16 >> 2] = 2147483645; - i16 = i10 + 8 | 0; - HEAP32[i16 >> 2] = i15; - i16 = _luaO_pushfstring(i12, 6592, i10) | 0; - i15 = HEAP32[i13 >> 2] | 0; - _luaX_syntaxerror(i15, i16); - } - HEAP32[i10 >> 2] = i14; - i15 = _luaO_pushfstring(i12, 6568, i10) | 0; - HEAP32[i10 >> 2] = 6528; - i16 = i10 + 4 | 0; - HEAP32[i16 >> 2] = 2147483645; - i16 = i10 + 8 | 0; - HEAP32[i16 >> 2] = i15; - i16 = _luaO_pushfstring(i12, 6592, i10) | 0; - i15 = HEAP32[i13 >> 2] | 0; - _luaX_syntaxerror(i15, i16); - } - } - } while (0); - _check_match(i11, 125, 123, i9); - i9 = HEAP32[i7 >> 2] | 0; - do { - if ((i9 | 0) != 0) { - i10 = HEAP32[i8 >> 2] | 0; - if ((i10 | 0) != 0) if ((i10 | 0) == 13 | (i10 | 0) == 12) { - _luaK_setreturns(i6, i8, -1); - _luaK_setlist(i6, HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] | 0, HEAP32[i3 >> 2] | 0, -1); - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + -1; - break; - } else { - _luaK_exp2nextreg(i6, i8); - i9 = HEAP32[i7 >> 2] | 0; - } - _luaK_setlist(i6, HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] | 0, HEAP32[i3 >> 2] | 0, i9); - } - } while (0); - i16 = HEAP32[(HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) + (i2 << 2) >> 2] & 8388607; - i16 = (_luaO_int2fb(HEAP32[i3 >> 2] | 0) | 0) << 23 | i16; - HEAP32[(HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) + (i2 << 2) >> 2] = i16; - i16 = (_luaO_int2fb(HEAP32[i4 >> 2] | 0) | 0) << 14 & 8372224 | i16 & -8372225; - HEAP32[(HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) + (i2 << 2) >> 2] = i16; - STACKTOP = i5; - return; -} -function _luaK_prefix(i4, i14, i7, i13) { - i4 = i4 | 0; - i14 = i14 | 0; - i7 = i7 | 0; - i13 = i13 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i12 = i1; - HEAP32[i12 + 20 >> 2] = -1; - HEAP32[i12 + 16 >> 2] = -1; - HEAP32[i12 >> 2] = 5; - HEAPF64[i12 + 8 >> 3] = 0.0; - if ((i14 | 0) == 1) { - _luaK_dischargevars(i4, i7); - switch (HEAP32[i7 >> 2] | 0) { - case 2: - case 5: - case 4: - { - HEAP32[i7 >> 2] = 3; - break; - } - case 10: - { - i13 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - i12 = HEAP32[i7 + 8 >> 2] | 0; - i10 = i13 + (i12 << 2) | 0; - if (!((i12 | 0) > 0 ? (i11 = i13 + (i12 + -1 << 2) | 0, i9 = HEAP32[i11 >> 2] | 0, (HEAP8[5584 + (i9 & 63) | 0] | 0) < 0) : 0)) { - i11 = i10; - i9 = HEAP32[i10 >> 2] | 0; - } - HEAP32[i11 >> 2] = ((i9 & 16320 | 0) == 0) << 6 | i9 & -16321; - break; - } - case 6: - { - i8 = 25; - break; - } - case 3: - case 1: - { - HEAP32[i7 >> 2] = 2; - break; - } - case 11: - { - i12 = i4 + 48 | 0; - i8 = HEAP8[i12] | 0; - i11 = (i8 & 255) + 1 | 0; - i9 = (HEAP32[i4 >> 2] | 0) + 78 | 0; - do { - if (i11 >>> 0 > (HEAPU8[i9] | 0) >>> 0) { - if (i11 >>> 0 > 249) { - _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10536); - } else { - HEAP8[i9] = i11; - i10 = HEAP8[i12] | 0; - break; - } - } else { - i10 = i8; - } - } while (0); - i14 = (i10 & 255) + 1 | 0; - HEAP8[i12] = i14; - _discharge2reg(i4, i7, (i14 & 255) + -1 | 0); - if ((HEAP32[i7 >> 2] | 0) == 6) { - i8 = 25; - } else { - i9 = i7 + 8 | 0; - i8 = 28; - } - break; - } - default: - {} - } - if ((i8 | 0) == 25) { - i8 = i7 + 8 | 0; - i9 = HEAP32[i8 >> 2] | 0; - if ((i9 & 256 | 0) == 0 ? (HEAPU8[i4 + 46 | 0] | 0) <= (i9 | 0) : 0) { - i9 = i4 + 48 | 0; - HEAP8[i9] = (HEAP8[i9] | 0) + -1 << 24 >> 24; - i9 = i8; - i8 = 28; - } else { - i9 = i8; - i8 = 28; - } - } - if ((i8 | 0) == 28) { - HEAP32[i9 >> 2] = _luaK_code(i4, HEAP32[i9 >> 2] << 23 | 20) | 0; - HEAP32[i7 >> 2] = 11; - } - i14 = i7 + 20 | 0; - i8 = HEAP32[i14 >> 2] | 0; - i7 = i7 + 16 | 0; - i9 = HEAP32[i7 >> 2] | 0; - HEAP32[i14 >> 2] = i9; - HEAP32[i7 >> 2] = i8; - if (!((i9 | 0) == -1)) { - i8 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - do { - i12 = i8 + (i9 << 2) | 0; - if ((i9 | 0) > 0 ? (i5 = i8 + (i9 + -1 << 2) | 0, i6 = HEAP32[i5 >> 2] | 0, (HEAP8[5584 + (i6 & 63) | 0] | 0) < 0) : 0) { - i10 = i5; - i11 = i6; - } else { - i10 = i12; - i11 = HEAP32[i12 >> 2] | 0; - } - if ((i11 & 63 | 0) == 28) { - HEAP32[i10 >> 2] = i11 & 8372224 | i11 >>> 23 << 6 | 27; - } - i10 = ((HEAP32[i12 >> 2] | 0) >>> 14) + -131071 | 0; - if ((i10 | 0) == -1) { - break; - } - i9 = i9 + 1 + i10 | 0; - } while (!((i9 | 0) == -1)); - i8 = HEAP32[i7 >> 2] | 0; - } - if ((i8 | 0) == -1) { - STACKTOP = i1; - return; - } - i4 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i6 = i4 + (i8 << 2) | 0; - if ((i8 | 0) > 0 ? (i2 = i4 + (i8 + -1 << 2) | 0, i3 = HEAP32[i2 >> 2] | 0, (HEAP8[5584 + (i3 & 63) | 0] | 0) < 0) : 0) { - i7 = i2; - i5 = i3; - } else { - i7 = i6; - i5 = HEAP32[i6 >> 2] | 0; - } - if ((i5 & 63 | 0) == 28) { - HEAP32[i7 >> 2] = i5 & 8372224 | i5 >>> 23 << 6 | 27; - } - i5 = ((HEAP32[i6 >> 2] | 0) >>> 14) + -131071 | 0; - if ((i5 | 0) == -1) { - i8 = 54; - break; - } - i8 = i8 + 1 + i5 | 0; - if ((i8 | 0) == -1) { - i8 = 54; - break; - } - } - if ((i8 | 0) == 54) { - STACKTOP = i1; - return; - } - } else if ((i14 | 0) == 0) { - if (((HEAP32[i7 >> 2] | 0) == 5 ? (HEAP32[i7 + 16 >> 2] | 0) == -1 : 0) ? (HEAP32[i7 + 20 >> 2] | 0) == -1 : 0) { - i14 = i7 + 8 | 0; - HEAPF64[i14 >> 3] = -+HEAPF64[i14 >> 3]; - STACKTOP = i1; - return; - } - _luaK_dischargevars(i4, i7); - if ((HEAP32[i7 >> 2] | 0) == 6) { - i2 = HEAP32[i7 + 8 >> 2] | 0; - if ((HEAP32[i7 + 16 >> 2] | 0) != (HEAP32[i7 + 20 >> 2] | 0)) { - if ((i2 | 0) < (HEAPU8[i4 + 46 | 0] | 0)) { - i8 = 10; - } else { - _exp2reg(i4, i7, i2); - } - } - } else { - i8 = 10; - } - if ((i8 | 0) == 10) { - _luaK_exp2nextreg(i4, i7); - } - _codearith(i4, 19, i7, i12, i13); - STACKTOP = i1; - return; - } else if ((i14 | 0) == 2) { - _luaK_dischargevars(i4, i7); - if ((HEAP32[i7 >> 2] | 0) == 6) { - i2 = HEAP32[i7 + 8 >> 2] | 0; - if ((HEAP32[i7 + 16 >> 2] | 0) != (HEAP32[i7 + 20 >> 2] | 0)) { - if ((i2 | 0) < (HEAPU8[i4 + 46 | 0] | 0)) { - i8 = 52; - } else { - _exp2reg(i4, i7, i2); - } - } - } else { - i8 = 52; - } - if ((i8 | 0) == 52) { - _luaK_exp2nextreg(i4, i7); - } - _codearith(i4, 21, i7, i12, i13); - STACKTOP = i1; - return; - } else { - STACKTOP = i1; - return; - } -} -function _subexpr(i6, i3, i7) { - i6 = i6 | 0; - i3 = i3 | 0; - i7 = i7 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i11 = i2 + 24 | 0; - i5 = i2; - i4 = i6 + 48 | 0; - i9 = HEAP32[i4 >> 2] | 0; - i1 = i6 + 52 | 0; - i12 = (HEAP32[i1 >> 2] | 0) + 38 | 0; - i13 = (HEAP16[i12 >> 1] | 0) + 1 << 16 >> 16; - HEAP16[i12 >> 1] = i13; - if ((i13 & 65535) > 200) { - i10 = i9 + 12 | 0; - i12 = HEAP32[(HEAP32[i10 >> 2] | 0) + 52 >> 2] | 0; - i13 = HEAP32[(HEAP32[i9 >> 2] | 0) + 64 >> 2] | 0; - if ((i13 | 0) == 0) { - i15 = 6552; - HEAP32[i11 >> 2] = 6360; - i14 = i11 + 4 | 0; - HEAP32[i14 >> 2] = 200; - i14 = i11 + 8 | 0; - HEAP32[i14 >> 2] = i15; - i14 = _luaO_pushfstring(i12, 6592, i11) | 0; - i15 = HEAP32[i10 >> 2] | 0; - _luaX_syntaxerror(i15, i14); - } - HEAP32[i11 >> 2] = i13; - i14 = _luaO_pushfstring(i12, 6568, i11) | 0; - HEAP32[i11 >> 2] = 6360; - i15 = i11 + 4 | 0; - HEAP32[i15 >> 2] = 200; - i15 = i11 + 8 | 0; - HEAP32[i15 >> 2] = i14; - i15 = _luaO_pushfstring(i12, 6592, i11) | 0; - i14 = HEAP32[i10 >> 2] | 0; - _luaX_syntaxerror(i14, i15); - } - i10 = i6 + 16 | 0; - L8 : do { - switch (HEAP32[i10 >> 2] | 0) { - case 287: - { - HEAP32[i3 + 16 >> 2] = -1; - HEAP32[i3 + 20 >> 2] = -1; - HEAP32[i3 >> 2] = 5; - HEAP32[i3 + 8 >> 2] = 0; - HEAPF64[i3 + 8 >> 3] = +HEAPF64[i6 + 24 >> 3]; - i8 = 20; - break; - } - case 271: - { - i9 = 1; - i8 = 8; - break; - } - case 289: - { - i8 = _luaK_stringK(i9, HEAP32[i6 + 24 >> 2] | 0) | 0; - HEAP32[i3 + 16 >> 2] = -1; - HEAP32[i3 + 20 >> 2] = -1; - HEAP32[i3 >> 2] = 4; - HEAP32[i3 + 8 >> 2] = i8; - i8 = 20; - break; - } - case 265: - { - _luaX_next(i6); - _body(i6, i3, 0, HEAP32[i6 + 4 >> 2] | 0); - break; - } - case 276: - { - HEAP32[i3 + 16 >> 2] = -1; - HEAP32[i3 + 20 >> 2] = -1; - HEAP32[i3 >> 2] = 2; - HEAP32[i3 + 8 >> 2] = 0; - i8 = 20; - break; - } - case 45: - { - i9 = 0; - i8 = 8; - break; - } - case 35: - { - i9 = 2; - i8 = 8; - break; - } - case 123: - { - _constructor(i6, i3); - break; - } - case 263: - { - HEAP32[i3 + 16 >> 2] = -1; - HEAP32[i3 + 20 >> 2] = -1; - HEAP32[i3 >> 2] = 3; - HEAP32[i3 + 8 >> 2] = 0; - i8 = 20; - break; - } - case 280: - { - if ((HEAP8[(HEAP32[i9 >> 2] | 0) + 77 | 0] | 0) == 0) { - _luaX_syntaxerror(i6, 6408); - } else { - i8 = _luaK_codeABC(i9, 38, 0, 1, 0) | 0; - HEAP32[i3 + 16 >> 2] = -1; - HEAP32[i3 + 20 >> 2] = -1; - HEAP32[i3 >> 2] = 13; - HEAP32[i3 + 8 >> 2] = i8; - i8 = 20; - break L8; - } - break; - } - case 270: - { - HEAP32[i3 + 16 >> 2] = -1; - HEAP32[i3 + 20 >> 2] = -1; - HEAP32[i3 >> 2] = 1; - HEAP32[i3 + 8 >> 2] = 0; - i8 = 20; - break; - } - default: - { - _suffixedexp(i6, i3); - } - } - } while (0); - if ((i8 | 0) == 8) { - i15 = HEAP32[i6 + 4 >> 2] | 0; - _luaX_next(i6); - _subexpr(i6, i3, 8) | 0; - _luaK_prefix(HEAP32[i4 >> 2] | 0, i9, i3, i15); - } else if ((i8 | 0) == 20) { - _luaX_next(i6); - } - switch (HEAP32[i10 >> 2] | 0) { - case 257: - { - i9 = 13; - break; - } - case 272: - { - i9 = 14; - break; - } - case 47: - { - i9 = 3; - break; - } - case 37: - { - i9 = 4; - break; - } - case 43: - { - i9 = 0; - break; - } - case 284: - { - i9 = 10; - break; - } - case 281: - { - i9 = 7; - break; - } - case 62: - { - i9 = 11; - break; - } - case 282: - { - i9 = 12; - break; - } - case 45: - { - i9 = 1; - break; - } - case 42: - { - i9 = 2; - break; - } - case 60: - { - i9 = 8; - break; - } - case 283: - { - i9 = 9; - break; - } - case 94: - { - i9 = 5; - break; - } - case 279: - { - i9 = 6; - break; - } - default: - { - i15 = 15; - i14 = HEAP32[i1 >> 2] | 0; - i14 = i14 + 38 | 0; - i13 = HEAP16[i14 >> 1] | 0; - i13 = i13 + -1 << 16 >> 16; - HEAP16[i14 >> 1] = i13; - STACKTOP = i2; - return i15 | 0; - } - } - i8 = i6 + 4 | 0; - while (1) { - if ((HEAPU8[6376 + (i9 << 1) | 0] | 0) <= (i7 | 0)) { - i8 = 39; - break; - } - i15 = HEAP32[i8 >> 2] | 0; - _luaX_next(i6); - _luaK_infix(HEAP32[i4 >> 2] | 0, i9, i3); - i10 = _subexpr(i6, i5, HEAPU8[6377 + (i9 << 1) | 0] | 0) | 0; - _luaK_posfix(HEAP32[i4 >> 2] | 0, i9, i3, i5, i15); - if ((i10 | 0) == 15) { - i9 = 15; - i8 = 39; - break; - } else { - i9 = i10; - } - } - if ((i8 | 0) == 39) { - i15 = HEAP32[i1 >> 2] | 0; - i15 = i15 + 38 | 0; - i14 = HEAP16[i15 >> 1] | 0; - i14 = i14 + -1 << 16 >> 16; - HEAP16[i15 >> 1] = i14; - STACKTOP = i2; - return i9 | 0; - } - return 0; -} -function _luaV_lessequal(i5, i3, i2) { - i5 = i5 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - var i1 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i1 = STACKTOP; - i4 = i3 + 8 | 0; - i7 = HEAP32[i4 >> 2] | 0; - if ((i7 | 0) == 3) { - if ((HEAP32[i2 + 8 >> 2] | 0) == 3) { - i9 = +HEAPF64[i3 >> 3] <= +HEAPF64[i2 >> 3] | 0; - STACKTOP = i1; - return i9 | 0; - } - } else { - if ((i7 & 15 | 0) == 4 ? (HEAP32[i2 + 8 >> 2] & 15 | 0) == 4 : 0) { - i3 = HEAP32[i3 >> 2] | 0; - i6 = HEAP32[i2 >> 2] | 0; - i4 = i3 + 16 | 0; - i5 = i6 + 16 | 0; - i7 = _strcmp(i4, i5) | 0; - L8 : do { - if ((i7 | 0) == 0) { - i2 = HEAP32[i3 + 12 >> 2] | 0; - i3 = HEAP32[i6 + 12 >> 2] | 0; - i6 = i5; - while (1) { - i5 = _strlen(i4 | 0) | 0; - i7 = (i5 | 0) == (i2 | 0); - if ((i5 | 0) == (i3 | 0)) { - break; - } - if (i7) { - i7 = -1; - break L8; - } - i5 = i5 + 1 | 0; - i4 = i4 + i5 | 0; - i6 = i6 + i5 | 0; - i7 = _strcmp(i4, i6) | 0; - if ((i7 | 0) == 0) { - i2 = i2 - i5 | 0; - i3 = i3 - i5 | 0; - } else { - break L8; - } - } - i7 = i7 & 1 ^ 1; - } - } while (0); - i9 = (i7 | 0) < 1 | 0; - STACKTOP = i1; - return i9 | 0; - } - } - i7 = i5 + 8 | 0; - i8 = HEAP32[i7 >> 2] | 0; - i9 = _luaT_gettmbyobj(i5, i3, 14) | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) == 0) { - i9 = _luaT_gettmbyobj(i5, i2, 14) | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) == 0) { - i8 = HEAP32[i7 >> 2] | 0; - i9 = _luaT_gettmbyobj(i5, i2, 13) | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) == 0) { - i9 = _luaT_gettmbyobj(i5, i3, 13) | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) == 0) { - _luaG_ordererror(i5, i3, i2); - } else { - i6 = i9; - } - } else { - i6 = i9; - } - i10 = i5 + 28 | 0; - i9 = i8 - (HEAP32[i10 >> 2] | 0) | 0; - i8 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i8 + 16; - i13 = i6; - i11 = HEAP32[i13 + 4 >> 2] | 0; - i12 = i8; - HEAP32[i12 >> 2] = HEAP32[i13 >> 2]; - HEAP32[i12 + 4 >> 2] = i11; - HEAP32[i8 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - i8 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i8 + 16; - i12 = i2; - i11 = HEAP32[i12 + 4 >> 2] | 0; - i6 = i8; - HEAP32[i6 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i6 + 4 >> 2] = i11; - HEAP32[i8 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - i2 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i2 + 16; - i8 = i3; - i6 = HEAP32[i8 + 4 >> 2] | 0; - i3 = i2; - HEAP32[i3 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i3 + 4 >> 2] = i6; - HEAP32[i2 + 8 >> 2] = HEAP32[i4 >> 2]; - _luaD_call(i5, (HEAP32[i7 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i5 + 16 >> 2] | 0) + 18 | 0] & 1); - i3 = HEAP32[i10 >> 2] | 0; - i2 = HEAP32[i7 >> 2] | 0; - i5 = i2 + -16 | 0; - HEAP32[i7 >> 2] = i5; - i6 = HEAP32[i5 + 4 >> 2] | 0; - i8 = i3 + i9 | 0; - HEAP32[i8 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i8 + 4 >> 2] = i6; - HEAP32[i3 + (i9 + 8) >> 2] = HEAP32[i2 + -8 >> 2]; - i3 = HEAP32[i7 >> 2] | 0; - i2 = HEAP32[i3 + 8 >> 2] | 0; - if ((i2 | 0) != 0) { - if ((i2 | 0) == 1) { - i2 = (HEAP32[i3 >> 2] | 0) != 0; - } else { - i2 = 1; - } - } else { - i2 = 0; - } - i13 = i2 & 1 ^ 1; - STACKTOP = i1; - return i13 | 0; - } - } - i10 = i5 + 28 | 0; - i13 = i8 - (HEAP32[i10 >> 2] | 0) | 0; - i11 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i11 + 16; - i6 = i9; - i8 = HEAP32[i6 + 4 >> 2] | 0; - i12 = i11; - HEAP32[i12 >> 2] = HEAP32[i6 >> 2]; - HEAP32[i12 + 4 >> 2] = i8; - HEAP32[i11 + 8 >> 2] = HEAP32[i9 + 8 >> 2]; - i9 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i9 + 16; - i11 = i3; - i12 = HEAP32[i11 + 4 >> 2] | 0; - i3 = i9; - HEAP32[i3 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i3 + 4 >> 2] = i12; - HEAP32[i9 + 8 >> 2] = HEAP32[i4 >> 2]; - i3 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i3 + 16; - i9 = i2; - i12 = HEAP32[i9 + 4 >> 2] | 0; - i11 = i3; - HEAP32[i11 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i11 + 4 >> 2] = i12; - HEAP32[i3 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - _luaD_call(i5, (HEAP32[i7 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i5 + 16 >> 2] | 0) + 18 | 0] & 1); - i2 = HEAP32[i10 >> 2] | 0; - i3 = HEAP32[i7 >> 2] | 0; - i10 = i3 + -16 | 0; - HEAP32[i7 >> 2] = i10; - i11 = HEAP32[i10 + 4 >> 2] | 0; - i12 = i2 + i13 | 0; - HEAP32[i12 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i12 + 4 >> 2] = i11; - HEAP32[i2 + (i13 + 8) >> 2] = HEAP32[i3 + -8 >> 2]; - i2 = HEAP32[i7 >> 2] | 0; - i3 = HEAP32[i2 + 8 >> 2] | 0; - if ((i3 | 0) != 0) { - if ((i3 | 0) == 1) { - i2 = (HEAP32[i2 >> 2] | 0) != 0; - } else { - i2 = 1; - } - } else { - i2 = 0; - } - i13 = i2 & 1; - STACKTOP = i1; - return i13 | 0; -} -function ___udivmoddi4(i6, i8, i2, i4, i1) { - i6 = i6 | 0; - i8 = i8 | 0; - i2 = i2 | 0; - i4 = i4 | 0; - i1 = i1 | 0; - var i3 = 0, i5 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0; - i5 = i6; - i9 = i8; - i7 = i9; - i10 = i2; - i3 = i4; - i11 = i3; - if ((i7 | 0) == 0) { - i2 = (i1 | 0) != 0; - if ((i11 | 0) == 0) { - if (i2) { - HEAP32[i1 >> 2] = (i5 >>> 0) % (i10 >>> 0); - HEAP32[i1 + 4 >> 2] = 0; - } - i11 = 0; - i12 = (i5 >>> 0) / (i10 >>> 0) >>> 0; - return (tempRet0 = i11, i12) | 0; - } else { - if (!i2) { - i11 = 0; - i12 = 0; - return (tempRet0 = i11, i12) | 0; - } - HEAP32[i1 >> 2] = i6 | 0; - HEAP32[i1 + 4 >> 2] = i8 & 0; - i11 = 0; - i12 = 0; - return (tempRet0 = i11, i12) | 0; - } - } - i12 = (i11 | 0) == 0; - do { - if ((i10 | 0) != 0) { - if (!i12) { - i10 = (_llvm_ctlz_i32(i11 | 0) | 0) - (_llvm_ctlz_i32(i7 | 0) | 0) | 0; - if (i10 >>> 0 <= 31) { - i11 = i10 + 1 | 0; - i12 = 31 - i10 | 0; - i8 = i10 - 31 >> 31; - i9 = i11; - i6 = i5 >>> (i11 >>> 0) & i8 | i7 << i12; - i8 = i7 >>> (i11 >>> 0) & i8; - i11 = 0; - i7 = i5 << i12; - break; - } - if ((i1 | 0) == 0) { - i11 = 0; - i12 = 0; - return (tempRet0 = i11, i12) | 0; - } - HEAP32[i1 >> 2] = i6 | 0; - HEAP32[i1 + 4 >> 2] = i9 | i8 & 0; - i11 = 0; - i12 = 0; - return (tempRet0 = i11, i12) | 0; - } - i11 = i10 - 1 | 0; - if ((i11 & i10 | 0) != 0) { - i12 = (_llvm_ctlz_i32(i10 | 0) | 0) + 33 - (_llvm_ctlz_i32(i7 | 0) | 0) | 0; - i15 = 64 - i12 | 0; - i10 = 32 - i12 | 0; - i13 = i10 >> 31; - i14 = i12 - 32 | 0; - i8 = i14 >> 31; - i9 = i12; - i6 = i10 - 1 >> 31 & i7 >>> (i14 >>> 0) | (i7 << i10 | i5 >>> (i12 >>> 0)) & i8; - i8 = i8 & i7 >>> (i12 >>> 0); - i11 = i5 << i15 & i13; - i7 = (i7 << i15 | i5 >>> (i14 >>> 0)) & i13 | i5 << i10 & i12 - 33 >> 31; - break; - } - if ((i1 | 0) != 0) { - HEAP32[i1 >> 2] = i11 & i5; - HEAP32[i1 + 4 >> 2] = 0; - } - if ((i10 | 0) == 1) { - i14 = i9 | i8 & 0; - i15 = i6 | 0 | 0; - return (tempRet0 = i14, i15) | 0; - } else { - i15 = _llvm_cttz_i32(i10 | 0) | 0; - i14 = i7 >>> (i15 >>> 0) | 0; - i15 = i7 << 32 - i15 | i5 >>> (i15 >>> 0) | 0; - return (tempRet0 = i14, i15) | 0; - } - } else { - if (i12) { - if ((i1 | 0) != 0) { - HEAP32[i1 >> 2] = (i7 >>> 0) % (i10 >>> 0); - HEAP32[i1 + 4 >> 2] = 0; - } - i14 = 0; - i15 = (i7 >>> 0) / (i10 >>> 0) >>> 0; - return (tempRet0 = i14, i15) | 0; - } - if ((i5 | 0) == 0) { - if ((i1 | 0) != 0) { - HEAP32[i1 >> 2] = 0; - HEAP32[i1 + 4 >> 2] = (i7 >>> 0) % (i11 >>> 0); - } - i14 = 0; - i15 = (i7 >>> 0) / (i11 >>> 0) >>> 0; - return (tempRet0 = i14, i15) | 0; - } - i10 = i11 - 1 | 0; - if ((i10 & i11 | 0) == 0) { - if ((i1 | 0) != 0) { - HEAP32[i1 >> 2] = i6 | 0; - HEAP32[i1 + 4 >> 2] = i10 & i7 | i8 & 0; - } - i14 = 0; - i15 = i7 >>> ((_llvm_cttz_i32(i11 | 0) | 0) >>> 0); - return (tempRet0 = i14, i15) | 0; - } - i10 = (_llvm_ctlz_i32(i11 | 0) | 0) - (_llvm_ctlz_i32(i7 | 0) | 0) | 0; - if (i10 >>> 0 <= 30) { - i8 = i10 + 1 | 0; - i15 = 31 - i10 | 0; - i9 = i8; - i6 = i7 << i15 | i5 >>> (i8 >>> 0); - i8 = i7 >>> (i8 >>> 0); - i11 = 0; - i7 = i5 << i15; - break; - } - if ((i1 | 0) == 0) { - i14 = 0; - i15 = 0; - return (tempRet0 = i14, i15) | 0; - } - HEAP32[i1 >> 2] = i6 | 0; - HEAP32[i1 + 4 >> 2] = i9 | i8 & 0; - i14 = 0; - i15 = 0; - return (tempRet0 = i14, i15) | 0; - } - } while (0); - if ((i9 | 0) == 0) { - i12 = i6; - i2 = 0; - i6 = 0; - } else { - i2 = i2 | 0 | 0; - i3 = i3 | i4 & 0; - i4 = _i64Add(i2, i3, -1, -1) | 0; - i5 = tempRet0; - i10 = i8; - i12 = i6; - i6 = 0; - while (1) { - i8 = i11 >>> 31 | i7 << 1; - i11 = i6 | i11 << 1; - i7 = i12 << 1 | i7 >>> 31 | 0; - i10 = i12 >>> 31 | i10 << 1 | 0; - _i64Subtract(i4, i5, i7, i10) | 0; - i12 = tempRet0; - i15 = i12 >> 31 | ((i12 | 0) < 0 ? -1 : 0) << 1; - i6 = i15 & 1; - i12 = _i64Subtract(i7, i10, i15 & i2, (((i12 | 0) < 0 ? -1 : 0) >> 31 | ((i12 | 0) < 0 ? -1 : 0) << 1) & i3) | 0; - i10 = tempRet0; - i9 = i9 - 1 | 0; - if ((i9 | 0) == 0) { - break; - } else { - i7 = i8; - } - } - i7 = i8; - i8 = i10; - i2 = 0; - } - i3 = 0; - if ((i1 | 0) != 0) { - HEAP32[i1 >> 2] = i12; - HEAP32[i1 + 4 >> 2] = i8; - } - i14 = (i11 | 0) >>> 31 | (i7 | i3) << 1 | (i3 << 1 | i11 >>> 31) & 0 | i2; - i15 = (i11 << 1 | 0 >>> 31) & -2 | i6; - return (tempRet0 = i14, i15) | 0; -} -function _leaveblock(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i5 = i3; - i7 = i1 + 16 | 0; - i4 = HEAP32[i7 >> 2] | 0; - i2 = i1 + 12 | 0; - i6 = HEAP32[i2 >> 2] | 0; - if ((HEAP32[i4 >> 2] | 0) != 0 ? (HEAP8[i4 + 9 | 0] | 0) != 0 : 0) { - i16 = _luaK_jump(i1) | 0; - _luaK_patchclose(i1, i16, HEAPU8[i4 + 8 | 0] | 0); - _luaK_patchtohere(i1, i16); - } - L5 : do { - if ((HEAP8[i4 + 10 | 0] | 0) != 0) { - i15 = i6 + 52 | 0; - i14 = _luaS_new(HEAP32[i15 >> 2] | 0, 6304) | 0; - i13 = i6 + 64 | 0; - i16 = HEAP32[i13 >> 2] | 0; - i10 = i16 + 24 | 0; - i8 = i6 + 48 | 0; - i11 = HEAP32[(HEAP32[i8 >> 2] | 0) + 20 >> 2] | 0; - i12 = i16 + 28 | 0; - i9 = HEAP32[i12 >> 2] | 0; - i16 = i16 + 32 | 0; - if ((i9 | 0) < (HEAP32[i16 >> 2] | 0)) { - i15 = HEAP32[i10 >> 2] | 0; - } else { - i15 = _luaM_growaux_(HEAP32[i15 >> 2] | 0, HEAP32[i10 >> 2] | 0, i16, 16, 32767, 6312) | 0; - HEAP32[i10 >> 2] = i15; - } - HEAP32[i15 + (i9 << 4) >> 2] = i14; - i16 = HEAP32[i10 >> 2] | 0; - HEAP32[i16 + (i9 << 4) + 8 >> 2] = 0; - HEAP8[i16 + (i9 << 4) + 12 | 0] = HEAP8[(HEAP32[i8 >> 2] | 0) + 46 | 0] | 0; - HEAP32[(HEAP32[i10 >> 2] | 0) + (i9 << 4) + 4 >> 2] = i11; - HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + 1; - i10 = HEAP32[i13 >> 2] | 0; - i9 = (HEAP32[i10 + 24 >> 2] | 0) + (i9 << 4) | 0; - i11 = HEAP16[(HEAP32[(HEAP32[i8 >> 2] | 0) + 16 >> 2] | 0) + 6 >> 1] | 0; - i8 = i10 + 16 | 0; - if ((i11 | 0) < (HEAP32[i8 >> 2] | 0)) { - i10 = i10 + 12 | 0; - do { - while (1) { - if ((_luaS_eqstr(HEAP32[(HEAP32[i10 >> 2] | 0) + (i11 << 4) >> 2] | 0, HEAP32[i9 >> 2] | 0) | 0) == 0) { - break; - } - _closegoto(i6, i11, i9); - if ((i11 | 0) >= (HEAP32[i8 >> 2] | 0)) { - break L5; - } - } - i11 = i11 + 1 | 0; - } while ((i11 | 0) < (HEAP32[i8 >> 2] | 0)); - } - } - } while (0); - HEAP32[i7 >> 2] = HEAP32[i4 >> 2]; - i7 = i4 + 8 | 0; - i9 = HEAP8[i7] | 0; - i10 = i1 + 46 | 0; - i8 = (HEAP32[i2 >> 2] | 0) + 64 | 0; - i14 = (HEAP32[i8 >> 2] | 0) + 4 | 0; - HEAP32[i14 >> 2] = (i9 & 255) - (HEAPU8[i10] | 0) + (HEAP32[i14 >> 2] | 0); - i14 = HEAP8[i10] | 0; - if ((i14 & 255) > (i9 & 255)) { - i13 = i1 + 20 | 0; - i11 = i1 + 40 | 0; - i12 = (HEAP32[i1 >> 2] | 0) + 24 | 0; - do { - i16 = HEAP32[i13 >> 2] | 0; - i14 = i14 + -1 << 24 >> 24; - HEAP8[i10] = i14; - HEAP32[(HEAP32[i12 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[i8 >> 2] >> 2] | 0) + ((HEAP32[i11 >> 2] | 0) + (i14 & 255) << 1) >> 1] | 0) * 12 | 0) + 8 >> 2] = i16; - i14 = HEAP8[i10] | 0; - } while ((i14 & 255) > (i9 & 255)); - } - HEAP8[i1 + 48 | 0] = i14; - i10 = HEAP32[i6 + 64 >> 2] | 0; - HEAP32[i10 + 28 >> 2] = HEAP16[i4 + 4 >> 1] | 0; - i9 = HEAP16[i4 + 6 >> 1] | 0; - if ((HEAP32[i4 >> 2] | 0) == 0) { - if ((i9 | 0) >= (HEAP32[i10 + 16 >> 2] | 0)) { - STACKTOP = i3; - return; - } - i10 = HEAP32[i10 + 12 >> 2] | 0; - i11 = HEAP32[i10 + (i9 << 4) >> 2] | 0; - if ((HEAP8[i11 + 4 | 0] | 0) != 4) { - i16 = 6200; - i15 = i6 + 52 | 0; - i15 = HEAP32[i15 >> 2] | 0; - i14 = i11 + 16 | 0; - i13 = i10 + (i9 << 4) + 8 | 0; - i13 = HEAP32[i13 >> 2] | 0; - HEAP32[i5 >> 2] = i14; - i14 = i5 + 4 | 0; - HEAP32[i14 >> 2] = i13; - i16 = _luaO_pushfstring(i15, i16, i5) | 0; - _semerror(i6, i16); - } - i16 = (HEAP8[i11 + 6 | 0] | 0) != 0 ? 6160 : 6200; - i15 = i6 + 52 | 0; - i15 = HEAP32[i15 >> 2] | 0; - i14 = i11 + 16 | 0; - i13 = i10 + (i9 << 4) + 8 | 0; - i13 = HEAP32[i13 >> 2] | 0; - HEAP32[i5 >> 2] = i14; - i14 = i5 + 4 | 0; - HEAP32[i14 >> 2] = i13; - i16 = _luaO_pushfstring(i15, i16, i5) | 0; - _semerror(i6, i16); - } - i6 = HEAP32[i8 >> 2] | 0; - i5 = i6 + 16 | 0; - if ((i9 | 0) >= (HEAP32[i5 >> 2] | 0)) { - STACKTOP = i3; - return; - } - i6 = i6 + 12 | 0; - i4 = i4 + 9 | 0; - do { - i10 = HEAP32[i6 >> 2] | 0; - i8 = i10 + (i9 << 4) + 12 | 0; - i11 = HEAP8[i7] | 0; - i12 = i11 & 255; - if ((HEAPU8[i8] | 0) > (i11 & 255)) { - if ((HEAP8[i4] | 0) != 0) { - _luaK_patchclose(i1, HEAP32[i10 + (i9 << 4) + 4 >> 2] | 0, i12); - i11 = HEAP8[i7] | 0; - } - HEAP8[i8] = i11; - } - i9 = ((_findlabel(HEAP32[i2 >> 2] | 0, i9) | 0) == 0) + i9 | 0; - } while ((i9 | 0) < (HEAP32[i5 >> 2] | 0)); - STACKTOP = i3; - return; -} -function _getobjname(i3, i7, i9, i2) { - i3 = i3 | 0; - i7 = i7 | 0; - i9 = i9 | 0; - i2 = i2 | 0; - var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i1 = STACKTOP; - i4 = i3 + 12 | 0; - L1 : while (1) { - i13 = _luaF_getlocalname(i3, i9 + 1 | 0, i7) | 0; - HEAP32[i2 >> 2] = i13; - if ((i13 | 0) != 0) { - i2 = 2040; - i4 = 42; - break; - } - if ((i7 | 0) <= 0) { - i2 = 0; - i4 = 42; - break; - } - i6 = HEAP32[i4 >> 2] | 0; - i8 = 0; - i5 = -1; - do { - i12 = HEAP32[i6 + (i8 << 2) >> 2] | 0; - i13 = i12 & 63; - i11 = i12 >>> 6 & 255; - switch (i13 | 0) { - case 27: - { - i10 = i8; - i5 = (i11 | 0) == (i9 | 0) ? i8 : i5; - break; - } - case 30: - case 29: - { - i10 = i8; - i5 = (i11 | 0) > (i9 | 0) ? i5 : i8; - break; - } - case 23: - { - i10 = (i12 >>> 14) + -131071 | 0; - i13 = i8 + 1 + i10 | 0; - i10 = ((i8 | 0) >= (i13 | 0) | (i13 | 0) > (i7 | 0) ? 0 : i10) + i8 | 0; - break; - } - case 4: - { - if ((i11 | 0) > (i9 | 0)) { - i10 = i8; - } else { - i10 = i8; - i5 = (i11 + (i12 >>> 23) | 0) < (i9 | 0) ? i5 : i8; - } - break; - } - case 34: - { - i10 = i8; - i5 = (i11 + 2 | 0) > (i9 | 0) ? i5 : i8; - break; - } - default: - { - i10 = i8; - i5 = (HEAP8[5584 + i13 | 0] & 64) != 0 & (i11 | 0) == (i9 | 0) ? i8 : i5; - } - } - i8 = i10 + 1 | 0; - } while ((i8 | 0) < (i7 | 0)); - if ((i5 | 0) == -1) { - i2 = 0; - i4 = 42; - break; - } - i7 = HEAP32[i6 + (i5 << 2) >> 2] | 0; - i9 = i7 & 63; - switch (i9 | 0) { - case 0: - { - break; - } - case 7: - case 6: - { - i4 = 17; - break L1; - } - case 5: - { - i4 = 29; - break L1; - } - case 1: - { - i4 = 32; - break L1; - } - case 2: - { - i4 = 33; - break L1; - } - case 12: - { - i4 = 36; - break L1; - } - default: - { - i2 = 0; - i4 = 42; - break L1; - } - } - i9 = i7 >>> 23; - if (i9 >>> 0 < (i7 >>> 6 & 255) >>> 0) { - i7 = i5; - } else { - i2 = 0; - i4 = 42; - break; - } - } - if ((i4 | 0) == 17) { - i6 = i7 >>> 14; - i8 = i6 & 511; - i7 = i7 >>> 23; - if ((i9 | 0) != 7) { - i7 = HEAP32[(HEAP32[i3 + 28 >> 2] | 0) + (i7 << 3) >> 2] | 0; - if ((i7 | 0) == 0) { - i7 = 2104; - } else { - i7 = i7 + 16 | 0; - } - } else { - i7 = _luaF_getlocalname(i3, i7 + 1 | 0, i5) | 0; - } - if ((i6 & 256 | 0) == 0) { - i3 = _getobjname(i3, i5, i8, i2) | 0; - if (!((i3 | 0) != 0 ? (HEAP8[i3] | 0) == 99 : 0)) { - i4 = 26; - } - } else { - i5 = i6 & 255; - i3 = HEAP32[i3 + 8 >> 2] | 0; - if ((HEAP32[i3 + (i5 << 4) + 8 >> 2] & 15 | 0) == 4) { - HEAP32[i2 >> 2] = (HEAP32[i3 + (i5 << 4) >> 2] | 0) + 16; - } else { - i4 = 26; - } - } - if ((i4 | 0) == 26) { - HEAP32[i2 >> 2] = 2104; - } - if ((i7 | 0) == 0) { - i13 = 2064; - STACKTOP = i1; - return i13 | 0; - } - i13 = (_strcmp(i7, 2048) | 0) == 0; - i13 = i13 ? 2056 : 2064; - STACKTOP = i1; - return i13 | 0; - } else if ((i4 | 0) == 29) { - i3 = HEAP32[(HEAP32[i3 + 28 >> 2] | 0) + (i7 >>> 23 << 3) >> 2] | 0; - if ((i3 | 0) == 0) { - i3 = 2104; - } else { - i3 = i3 + 16 | 0; - } - HEAP32[i2 >> 2] = i3; - i13 = 2072; - STACKTOP = i1; - return i13 | 0; - } else if ((i4 | 0) == 32) { - i5 = i7 >>> 14; - } else if ((i4 | 0) == 33) { - i5 = (HEAP32[i6 + (i5 + 1 << 2) >> 2] | 0) >>> 6; - } else if ((i4 | 0) == 36) { - i4 = i7 >>> 14; - if ((i4 & 256 | 0) == 0) { - i3 = _getobjname(i3, i5, i4 & 511, i2) | 0; - if ((i3 | 0) != 0 ? (HEAP8[i3] | 0) == 99 : 0) { - i13 = 2096; - STACKTOP = i1; - return i13 | 0; - } - } else { - i4 = i4 & 255; - i3 = HEAP32[i3 + 8 >> 2] | 0; - if ((HEAP32[i3 + (i4 << 4) + 8 >> 2] & 15 | 0) == 4) { - HEAP32[i2 >> 2] = (HEAP32[i3 + (i4 << 4) >> 2] | 0) + 16; - i13 = 2096; - STACKTOP = i1; - return i13 | 0; - } - } - HEAP32[i2 >> 2] = 2104; - i13 = 2096; - STACKTOP = i1; - return i13 | 0; - } else if ((i4 | 0) == 42) { - STACKTOP = i1; - return i2 | 0; - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - if ((HEAP32[i3 + (i5 << 4) + 8 >> 2] & 15 | 0) != 4) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - HEAP32[i2 >> 2] = (HEAP32[i3 + (i5 << 4) >> 2] | 0) + 16; - i13 = 2080; - STACKTOP = i1; - return i13 | 0; -} -function _assignment(i2, i16, i5) { - i2 = i2 | 0; - i16 = i16 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 80 | 0; - i6 = i3 + 56 | 0; - i1 = i3 + 32 | 0; - i8 = i3; - i4 = i16 + 8 | 0; - if (!(((HEAP32[i4 >> 2] | 0) + -7 | 0) >>> 0 < 3)) { - _luaX_syntaxerror(i2, 6344); - } - i13 = i2 + 16 | 0; - i14 = HEAP32[i13 >> 2] | 0; - do { - if ((i14 | 0) == 44) { - _luaX_next(i2); - HEAP32[i8 >> 2] = i16; - i14 = i8 + 8 | 0; - _suffixedexp(i2, i14); - i15 = i2 + 48 | 0; - if ((HEAP32[i14 >> 2] | 0) != 9 ? (i10 = HEAP32[i15 >> 2] | 0, i11 = HEAP8[i10 + 48 | 0] | 0, i9 = i11 & 255, (i16 | 0) != 0) : 0) { - i13 = i8 + 16 | 0; - i12 = i11 & 255; - i18 = 0; - do { - if ((HEAP32[i16 + 8 >> 2] | 0) == 9) { - i17 = i16 + 16 | 0; - i19 = i17 + 3 | 0; - i20 = HEAPU8[i19] | 0; - i21 = HEAP32[i14 >> 2] | 0; - if ((i20 | 0) == (i21 | 0)) { - i21 = i17 + 2 | 0; - if ((HEAPU8[i21] | 0) == (HEAP32[i13 >> 2] | 0)) { - HEAP8[i19] = 7; - HEAP8[i21] = i11; - i20 = HEAP32[i14 >> 2] | 0; - i18 = 1; - } - } else { - i20 = i21; - } - if ((i20 | 0) == 7 ? (HEAP16[i17 >> 1] | 0) == (HEAP32[i13 >> 2] | 0) : 0) { - HEAP16[i17 >> 1] = i12; - i18 = 1; - } - } - i16 = HEAP32[i16 >> 2] | 0; - } while ((i16 | 0) != 0); - if ((i18 | 0) != 0) { - _luaK_codeABC(i10, (HEAP32[i14 >> 2] | 0) == 7 ? 0 : 5, i9, HEAP32[i13 >> 2] | 0, 0) | 0; - _luaK_reserveregs(i10, 1); - } - } - i9 = HEAP32[i15 >> 2] | 0; - if (((HEAPU16[(HEAP32[i2 + 52 >> 2] | 0) + 38 >> 1] | 0) + i5 | 0) <= 200) { - _assignment(i2, i8, i5 + 1 | 0); - i7 = i1; - break; - } - i8 = i9 + 12 | 0; - i5 = HEAP32[(HEAP32[i8 >> 2] | 0) + 52 >> 2] | 0; - i9 = HEAP32[(HEAP32[i9 >> 2] | 0) + 64 >> 2] | 0; - if ((i9 | 0) == 0) { - i20 = 6552; - HEAP32[i6 >> 2] = 6360; - i21 = i6 + 4 | 0; - HEAP32[i21 >> 2] = 200; - i21 = i6 + 8 | 0; - HEAP32[i21 >> 2] = i20; - i21 = _luaO_pushfstring(i5, 6592, i6) | 0; - i20 = HEAP32[i8 >> 2] | 0; - _luaX_syntaxerror(i20, i21); - } - HEAP32[i6 >> 2] = i9; - i20 = _luaO_pushfstring(i5, 6568, i6) | 0; - HEAP32[i6 >> 2] = 6360; - i21 = i6 + 4 | 0; - HEAP32[i21 >> 2] = 200; - i21 = i6 + 8 | 0; - HEAP32[i21 >> 2] = i20; - i21 = _luaO_pushfstring(i5, 6592, i6) | 0; - i20 = HEAP32[i8 >> 2] | 0; - _luaX_syntaxerror(i20, i21); - } else if ((i14 | 0) == 61) { - _luaX_next(i2); - _subexpr(i2, i1, 0) | 0; - i6 = i2 + 48 | 0; - if ((HEAP32[i13 >> 2] | 0) == 44) { - i9 = 1; - do { - _luaX_next(i2); - _luaK_exp2nextreg(HEAP32[i6 >> 2] | 0, i1); - _subexpr(i2, i1, 0) | 0; - i9 = i9 + 1 | 0; - } while ((HEAP32[i13 >> 2] | 0) == 44); - } else { - i9 = 1; - } - i8 = HEAP32[i6 >> 2] | 0; - if ((i9 | 0) == (i5 | 0)) { - _luaK_setoneret(i8, i1); - _luaK_storevar(HEAP32[i6 >> 2] | 0, i4, i1); - STACKTOP = i3; - return; - } - i7 = i5 - i9 | 0; - i10 = HEAP32[i1 >> 2] | 0; - if ((i10 | 0) == 13 | (i10 | 0) == 12) { - i10 = i7 + 1 | 0; - i10 = (i10 | 0) < 0 ? 0 : i10; - _luaK_setreturns(i8, i1, i10); - if ((i10 | 0) > 1) { - _luaK_reserveregs(i8, i10 + -1 | 0); - } - } else if ((i10 | 0) == 0) { - i12 = 30; - } else { - _luaK_exp2nextreg(i8, i1); - i12 = 30; - } - if ((i12 | 0) == 30 ? (i7 | 0) > 0 : 0) { - i21 = HEAPU8[i8 + 48 | 0] | 0; - _luaK_reserveregs(i8, i7); - _luaK_nil(i8, i21, i7); - } - if ((i9 | 0) > (i5 | 0)) { - i21 = (HEAP32[i6 >> 2] | 0) + 48 | 0; - HEAP8[i21] = i7 + (HEAPU8[i21] | 0); - i7 = i1; - } else { - i7 = i1; - } - } else { - _error_expected(i2, 61); - } - } while (0); - i21 = HEAP32[i2 + 48 >> 2] | 0; - i20 = (HEAPU8[i21 + 48 | 0] | 0) + -1 | 0; - HEAP32[i1 + 16 >> 2] = -1; - HEAP32[i1 + 20 >> 2] = -1; - HEAP32[i7 >> 2] = 6; - HEAP32[i1 + 8 >> 2] = i20; - _luaK_storevar(i21, i4, i1); - STACKTOP = i3; - return; -} -function _str_find_aux(i3, i7) { - i3 = i3 | 0; - i7 = i7 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 288 | 0; - i9 = i1 + 284 | 0; - i5 = i1 + 280 | 0; - i4 = i1; - i2 = _luaL_checklstring(i3, 1, i9) | 0; - i8 = _luaL_checklstring(i3, 2, i5) | 0; - i12 = _luaL_optinteger(i3, 3, 1) | 0; - i10 = HEAP32[i9 >> 2] | 0; - if (!((i12 | 0) > -1)) { - if (i10 >>> 0 < (0 - i12 | 0) >>> 0) { - i12 = 1; - } else { - i12 = i12 + 1 + i10 | 0; - i6 = 4; - } - } else { - i6 = 4; - } - if ((i6 | 0) == 4) { - if ((i12 | 0) != 0) { - if (i12 >>> 0 > (i10 + 1 | 0) >>> 0) { - _lua_pushnil(i3); - i13 = 1; - STACKTOP = i1; - return i13 | 0; - } - } else { - i12 = 1; - } - } - i7 = (i7 | 0) != 0; - L10 : do { - if (i7) { - i13 = (_lua_toboolean(i3, 4) | 0) == 0; - i10 = HEAP32[i5 >> 2] | 0; - if (i13) { - i11 = 0; - do { - i13 = i8 + i11 | 0; - if ((_strpbrk(i13, 7512) | 0) != 0) { - i6 = 20; - break L10; - } - i11 = i11 + 1 + (_strlen(i13 | 0) | 0) | 0; - } while (!(i11 >>> 0 > i10 >>> 0)); - } - i11 = i2 + (i12 + -1) | 0; - i9 = (HEAP32[i9 >> 2] | 0) - i12 + 1 | 0; - L17 : do { - if ((i10 | 0) == 0) { - if ((i11 | 0) == 0) { - break L10; - } - } else { - if (i10 >>> 0 > i9 >>> 0) { - break L10; - } - i4 = i10 + -1 | 0; - if ((i4 | 0) == (i9 | 0)) { - break L10; - } - i7 = HEAP8[i8] | 0; - i8 = i8 + 1 | 0; - i9 = i9 - i4 | 0; - i12 = i11; - while (1) { - i11 = _memchr(i12, i7, i9) | 0; - if ((i11 | 0) == 0) { - break L10; - } - i10 = i11 + 1 | 0; - if ((_memcmp(i10, i8, i4) | 0) == 0) { - break L17; - } - i11 = i10; - i9 = i12 + i9 | 0; - if ((i9 | 0) == (i11 | 0)) { - break L10; - } else { - i9 = i9 - i11 | 0; - i12 = i10; - } - } - } - } while (0); - i13 = i11 - i2 | 0; - _lua_pushinteger(i3, i13 + 1 | 0); - _lua_pushinteger(i3, i13 + (HEAP32[i5 >> 2] | 0) | 0); - i13 = 2; - STACKTOP = i1; - return i13 | 0; - } else { - i6 = 20; - } - } while (0); - L28 : do { - if ((i6 | 0) == 20) { - i6 = i2 + (i12 + -1) | 0; - i10 = (HEAP8[i8] | 0) == 94; - if (i10) { - i12 = (HEAP32[i5 >> 2] | 0) + -1 | 0; - HEAP32[i5 >> 2] = i12; - i8 = i8 + 1 | 0; - } else { - i12 = HEAP32[i5 >> 2] | 0; - } - i5 = i4 + 16 | 0; - HEAP32[i5 >> 2] = i3; - HEAP32[i4 >> 2] = 200; - HEAP32[i4 + 4 >> 2] = i2; - i11 = i4 + 8 | 0; - HEAP32[i11 >> 2] = i2 + (HEAP32[i9 >> 2] | 0); - HEAP32[i4 + 12 >> 2] = i8 + i12; - i9 = i4 + 20 | 0; - L34 : do { - if (i10) { - HEAP32[i9 >> 2] = 0; - i8 = _match(i4, i6, i8) | 0; - if ((i8 | 0) == 0) { - break L28; - } - } else { - while (1) { - HEAP32[i9 >> 2] = 0; - i10 = _match(i4, i6, i8) | 0; - if ((i10 | 0) != 0) { - i8 = i10; - break L34; - } - if (!(i6 >>> 0 < (HEAP32[i11 >> 2] | 0) >>> 0)) { - break L28; - } - i6 = i6 + 1 | 0; - } - } - } while (0); - if (i7) { - _lua_pushinteger(i3, 1 - i2 + i6 | 0); - _lua_pushinteger(i3, i8 - i2 | 0); - i2 = HEAP32[i9 >> 2] | 0; - _luaL_checkstack(HEAP32[i5 >> 2] | 0, i2, 7200); - if ((i2 | 0) > 0) { - i3 = 0; - do { - _push_onecapture(i4, i3, 0, 0); - i3 = i3 + 1 | 0; - } while ((i3 | 0) != (i2 | 0)); - } - i13 = i2 + 2 | 0; - STACKTOP = i1; - return i13 | 0; - } else { - i3 = HEAP32[i9 >> 2] | 0; - i2 = (i3 | 0) != 0 | (i6 | 0) == 0 ? i3 : 1; - _luaL_checkstack(HEAP32[i5 >> 2] | 0, i2, 7200); - if ((i2 | 0) > 0) { - i3 = 0; - } else { - i13 = i3; - STACKTOP = i1; - return i13 | 0; - } - do { - _push_onecapture(i4, i3, i6, i8); - i3 = i3 + 1 | 0; - } while ((i3 | 0) != (i2 | 0)); - STACKTOP = i1; - return i2 | 0; - } - } - } while (0); - _lua_pushnil(i3); - i13 = 1; - STACKTOP = i1; - return i13 | 0; -} -function _luaO_pushvfstring(i2, i13, i10) { - i2 = i2 | 0; - i13 = i13 | 0; - i10 = i10 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, d18 = 0.0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i7 = i3; - i9 = i3 + 32 | 0; - i8 = i3 + 8 | 0; - i14 = _strchr(i13, 37) | 0; - i6 = i2 + 24 | 0; - i4 = i2 + 8 | 0; - i15 = HEAP32[i4 >> 2] | 0; - i17 = (HEAP32[i6 >> 2] | 0) - i15 | 0; - L1 : do { - if ((i14 | 0) == 0) { - i5 = i13; - i11 = i17; - i12 = i15; - i1 = 0; - } else { - i16 = 0; - L3 : while (1) { - if ((i17 | 0) < 48) { - _luaD_growstack(i2, 2); - i15 = HEAP32[i4 >> 2] | 0; - } - HEAP32[i4 >> 2] = i15 + 16; - i13 = _luaS_newlstr(i2, i13, i14 - i13 | 0) | 0; - HEAP32[i15 >> 2] = i13; - HEAP32[i15 + 8 >> 2] = HEAPU8[i13 + 4 | 0] | 64; - i13 = HEAP8[i14 + 1 | 0] | 0; - switch (i13 | 0) { - case 115: - { - i17 = HEAP32[i10 >> 2] | 0; - i13 = HEAP32[i17 >> 2] | 0; - HEAP32[i10 >> 2] = i17 + 4; - i13 = (i13 | 0) == 0 ? 5480 : i13; - i15 = _strlen(i13 | 0) | 0; - i17 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i17 + 16; - i15 = _luaS_newlstr(i2, i13, i15) | 0; - HEAP32[i17 >> 2] = i15; - HEAP32[i17 + 8 >> 2] = HEAPU8[i15 + 4 | 0] | 64; - break; - } - case 100: - { - i17 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i17 + 16; - i13 = HEAP32[i10 >> 2] | 0; - i15 = HEAP32[i13 >> 2] | 0; - HEAP32[i10 >> 2] = i13 + 4; - HEAPF64[i17 >> 3] = +(i15 | 0); - HEAP32[i17 + 8 >> 2] = 3; - break; - } - case 37: - { - i17 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i17 + 16; - i15 = _luaS_newlstr(i2, 5496, 1) | 0; - HEAP32[i17 >> 2] = i15; - HEAP32[i17 + 8 >> 2] = HEAPU8[i15 + 4 | 0] | 64; - break; - } - case 99: - { - i15 = HEAP32[i10 >> 2] | 0; - i17 = HEAP32[i15 >> 2] | 0; - HEAP32[i10 >> 2] = i15 + 4; - HEAP8[i9] = i17; - i17 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i17 + 16; - i15 = _luaS_newlstr(i2, i9, 1) | 0; - HEAP32[i17 >> 2] = i15; - HEAP32[i17 + 8 >> 2] = HEAPU8[i15 + 4 | 0] | 64; - break; - } - case 102: - { - i17 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i17 + 16; - i15 = HEAP32[i10 >> 2] | 0; - d18 = +HEAPF64[i15 >> 3]; - HEAP32[i10 >> 2] = i15 + 8; - HEAPF64[i17 >> 3] = d18; - HEAP32[i17 + 8 >> 2] = 3; - break; - } - case 112: - { - i17 = HEAP32[i10 >> 2] | 0; - i15 = HEAP32[i17 >> 2] | 0; - HEAP32[i10 >> 2] = i17 + 4; - HEAP32[i7 >> 2] = i15; - i15 = _sprintf(i8 | 0, 5488, i7 | 0) | 0; - i17 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i17 + 16; - i15 = _luaS_newlstr(i2, i8, i15) | 0; - HEAP32[i17 >> 2] = i15; - HEAP32[i17 + 8 >> 2] = HEAPU8[i15 + 4 | 0] | 64; - break; - } - default: - { - break L3; - } - } - i16 = i16 + 2 | 0; - i13 = i14 + 2 | 0; - i14 = _strchr(i13, 37) | 0; - i15 = HEAP32[i4 >> 2] | 0; - i17 = (HEAP32[i6 >> 2] | 0) - i15 | 0; - if ((i14 | 0) == 0) { - i5 = i13; - i11 = i17; - i12 = i15; - i1 = i16; - break L1; - } - } - HEAP32[i7 >> 2] = i13; - _luaG_runerror(i2, 5504, i7); - } - } while (0); - if ((i11 | 0) < 32) { - _luaD_growstack(i2, 1); - i12 = HEAP32[i4 >> 2] | 0; - } - i17 = _strlen(i5 | 0) | 0; - HEAP32[i4 >> 2] = i12 + 16; - i17 = _luaS_newlstr(i2, i5, i17) | 0; - HEAP32[i12 >> 2] = i17; - HEAP32[i12 + 8 >> 2] = HEAPU8[i17 + 4 | 0] | 64; - if ((i1 | 0) <= 0) { - i17 = HEAP32[i4 >> 2] | 0; - i17 = i17 + -16 | 0; - i17 = HEAP32[i17 >> 2] | 0; - i17 = i17 + 16 | 0; - STACKTOP = i3; - return i17 | 0; - } - _luaV_concat(i2, i1 | 1); - i17 = HEAP32[i4 >> 2] | 0; - i17 = i17 + -16 | 0; - i17 = HEAP32[i17 >> 2] | 0; - i17 = i17 + 16 | 0; - STACKTOP = i3; - return i17 | 0; -} -function _luaH_getn(i6) { - i6 = i6 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, d11 = 0.0, i12 = 0, i13 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - i3 = i6 + 28 | 0; - i12 = HEAP32[i3 >> 2] | 0; - if ((i12 | 0) != 0 ? (i4 = HEAP32[i6 + 12 >> 2] | 0, (HEAP32[i4 + (i12 + -1 << 4) + 8 >> 2] | 0) == 0) : 0) { - if (i12 >>> 0 > 1) { - i10 = 0; - } else { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - do { - i2 = (i10 + i12 | 0) >>> 1; - i3 = (HEAP32[i4 + (i2 + -1 << 4) + 8 >> 2] | 0) == 0; - i12 = i3 ? i2 : i12; - i10 = i3 ? i10 : i2; - } while ((i12 - i10 | 0) >>> 0 > 1); - STACKTOP = i1; - return i10 | 0; - } - i4 = i6 + 16 | 0; - if ((HEAP32[i4 >> 2] | 0) == 8016) { - i13 = i12; - STACKTOP = i1; - return i13 | 0; - } - i5 = i6 + 12 | 0; - i6 = i6 + 7 | 0; - i9 = i2 + 4 | 0; - i8 = i12 + 1 | 0; - i13 = i12; - i10 = i12; - while (1) { - i12 = i8 + -1 | 0; - L15 : do { - if (i12 >>> 0 < i13 >>> 0) { - i12 = (HEAP32[i5 >> 2] | 0) + (i12 << 4) | 0; - } else { - d11 = +(i8 | 0); - HEAPF64[i2 >> 3] = d11 + 1.0; - i13 = (HEAP32[i9 >> 2] | 0) + (HEAP32[i2 >> 2] | 0) | 0; - if ((i13 | 0) < 0) { - i12 = 0 - i13 | 0; - i13 = (i13 | 0) == (i12 | 0) ? 0 : i12; - } - i12 = (HEAP32[i4 >> 2] | 0) + (((i13 | 0) % ((1 << (HEAPU8[i6] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; - while (1) { - if ((HEAP32[i12 + 24 >> 2] | 0) == 3 ? +HEAPF64[i12 + 16 >> 3] == d11 : 0) { - break; - } - i12 = HEAP32[i12 + 28 >> 2] | 0; - if ((i12 | 0) == 0) { - i12 = 5192; - break L15; - } - } - } - } while (0); - if ((HEAP32[i12 + 8 >> 2] | 0) == 0) { - break; - } - i10 = i8 << 1; - if (i10 >>> 0 > 2147483645) { - i7 = 21; - break; - } - i12 = i8; - i8 = i10; - i13 = HEAP32[i3 >> 2] | 0; - i10 = i12; - } - if ((i7 | 0) == 21) { - i8 = i2 + 4 | 0; - i7 = 1; - while (1) { - i10 = i7 + -1 | 0; - L34 : do { - if (i10 >>> 0 < (HEAP32[i3 >> 2] | 0) >>> 0) { - i9 = (HEAP32[i5 >> 2] | 0) + (i10 << 4) | 0; - } else { - d11 = +(i7 | 0); - HEAPF64[i2 >> 3] = d11 + 1.0; - i9 = (HEAP32[i8 >> 2] | 0) + (HEAP32[i2 >> 2] | 0) | 0; - if ((i9 | 0) < 0) { - i12 = 0 - i9 | 0; - i9 = (i9 | 0) == (i12 | 0) ? 0 : i12; - } - i9 = (HEAP32[i4 >> 2] | 0) + (((i9 | 0) % ((1 << (HEAPU8[i6] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; - while (1) { - if ((HEAP32[i9 + 24 >> 2] | 0) == 3 ? +HEAPF64[i9 + 16 >> 3] == d11 : 0) { - break; - } - i9 = HEAP32[i9 + 28 >> 2] | 0; - if ((i9 | 0) == 0) { - i9 = 5192; - break L34; - } - } - } - } while (0); - if ((HEAP32[i9 + 8 >> 2] | 0) == 0) { - break; - } - i7 = i7 + 1 | 0; - } - STACKTOP = i1; - return i10 | 0; - } - if (!((i8 - i10 | 0) >>> 0 > 1)) { - i13 = i10; - STACKTOP = i1; - return i13 | 0; - } - i7 = i2 + 4 | 0; - do { - i9 = (i8 + i10 | 0) >>> 1; - i12 = i9 + -1 | 0; - L55 : do { - if (i12 >>> 0 < (HEAP32[i3 >> 2] | 0) >>> 0) { - i12 = (HEAP32[i5 >> 2] | 0) + (i12 << 4) | 0; - } else { - d11 = +(i9 | 0); - HEAPF64[i2 >> 3] = d11 + 1.0; - i13 = (HEAP32[i7 >> 2] | 0) + (HEAP32[i2 >> 2] | 0) | 0; - if ((i13 | 0) < 0) { - i12 = 0 - i13 | 0; - i13 = (i13 | 0) == (i12 | 0) ? 0 : i12; - } - i12 = (HEAP32[i4 >> 2] | 0) + (((i13 | 0) % ((1 << (HEAPU8[i6] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; - while (1) { - if ((HEAP32[i12 + 24 >> 2] | 0) == 3 ? +HEAPF64[i12 + 16 >> 3] == d11 : 0) { - break; - } - i12 = HEAP32[i12 + 28 >> 2] | 0; - if ((i12 | 0) == 0) { - i12 = 5192; - break L55; - } - } - } - } while (0); - i12 = (HEAP32[i12 + 8 >> 2] | 0) == 0; - i8 = i12 ? i9 : i8; - i10 = i12 ? i10 : i9; - } while ((i8 - i10 | 0) >>> 0 > 1); - STACKTOP = i1; - return i10 | 0; -} -function _lua_resume(i4, i3, i7) { - i4 = i4 | 0; - i3 = i3 | 0; - i7 = i7 | 0; - var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0; - i1 = STACKTOP; - if ((i3 | 0) == 0) { - i5 = 1; - } else { - i5 = (HEAPU16[i3 + 38 >> 1] | 0) + 1 & 65535; - } - i3 = i4 + 38 | 0; - HEAP16[i3 >> 1] = i5; - i5 = i4 + 36 | 0; - HEAP16[i5 >> 1] = 0; - i6 = i4 + 8 | 0; - i13 = _luaD_rawrunprotected(i4, 4, (HEAP32[i6 >> 2] | 0) + (0 - i7 << 4) | 0) | 0; - if ((i13 | 0) == -1) { - i18 = 2; - HEAP16[i5 >> 1] = 1; - i17 = HEAP16[i3 >> 1] | 0; - i17 = i17 + -1 << 16 >> 16; - HEAP16[i3 >> 1] = i17; - STACKTOP = i1; - return i18 | 0; - } - if (!(i13 >>> 0 > 1)) { - i18 = i13; - HEAP16[i5 >> 1] = 1; - i17 = HEAP16[i3 >> 1] | 0; - i17 = i17 + -1 << 16 >> 16; - HEAP16[i3 >> 1] = i17; - STACKTOP = i1; - return i18 | 0; - } - i7 = i4 + 16 | 0; - i12 = i4 + 28 | 0; - i11 = i4 + 41 | 0; - i10 = i4 + 68 | 0; - i9 = i4 + 32 | 0; - i8 = i4 + 12 | 0; - L10 : while (1) { - i15 = HEAP32[i7 >> 2] | 0; - if ((i15 | 0) == 0) { - break; - } - while (1) { - i14 = i15 + 18 | 0; - if (!((HEAP8[i14] & 16) == 0)) { - break; - } - i15 = HEAP32[i15 + 8 >> 2] | 0; - if ((i15 | 0) == 0) { - break L10; - } - } - i16 = HEAP32[i12 >> 2] | 0; - i17 = HEAP32[i15 + 20 >> 2] | 0; - i18 = i16 + i17 | 0; - _luaF_close(i4, i18); - if ((i13 | 0) == 4) { - i19 = HEAP32[(HEAP32[i8 >> 2] | 0) + 180 >> 2] | 0; - HEAP32[i18 >> 2] = i19; - HEAP32[i16 + (i17 + 8) >> 2] = HEAPU8[i19 + 4 | 0] | 0 | 64; - } else if ((i13 | 0) == 6) { - i19 = _luaS_newlstr(i4, 2424, 23) | 0; - HEAP32[i18 >> 2] = i19; - HEAP32[i16 + (i17 + 8) >> 2] = HEAPU8[i19 + 4 | 0] | 0 | 64; - } else { - i19 = HEAP32[i6 >> 2] | 0; - i21 = i19 + -16 | 0; - i20 = HEAP32[i21 + 4 >> 2] | 0; - HEAP32[i18 >> 2] = HEAP32[i21 >> 2]; - HEAP32[i18 + 4 >> 2] = i20; - HEAP32[i16 + (i17 + 8) >> 2] = HEAP32[i19 + -8 >> 2]; - } - i17 = i16 + (i17 + 16) | 0; - HEAP32[i6 >> 2] = i17; - HEAP32[i7 >> 2] = i15; - HEAP8[i11] = HEAP8[i15 + 36 | 0] | 0; - HEAP16[i5 >> 1] = 0; - if ((i15 | 0) != 0) { - i16 = i15; - do { - i18 = HEAP32[i16 + 4 >> 2] | 0; - i17 = i17 >>> 0 < i18 >>> 0 ? i18 : i17; - i16 = HEAP32[i16 + 8 >> 2] | 0; - } while ((i16 | 0) != 0); - } - i16 = i17 - (HEAP32[i12 >> 2] | 0) | 0; - i17 = (i16 >> 4) + 1 | 0; - i17 = ((i17 | 0) / 8 | 0) + 10 + i17 | 0; - i17 = (i17 | 0) > 1e6 ? 1e6 : i17; - if ((i16 | 0) <= 15999984 ? (i17 | 0) < (HEAP32[i9 >> 2] | 0) : 0) { - _luaD_reallocstack(i4, i17); - } - HEAP32[i10 >> 2] = HEAP32[i15 + 32 >> 2]; - HEAP8[i14] = HEAPU8[i14] | 0 | 32; - HEAP8[i15 + 37 | 0] = i13; - i13 = _luaD_rawrunprotected(i4, 5, 0) | 0; - if (!(i13 >>> 0 > 1)) { - i2 = 24; - break; - } - } - if ((i2 | 0) == 24) { - HEAP16[i5 >> 1] = 1; - i21 = HEAP16[i3 >> 1] | 0; - i21 = i21 + -1 << 16 >> 16; - HEAP16[i3 >> 1] = i21; - STACKTOP = i1; - return i13 | 0; - } - HEAP8[i4 + 6 | 0] = i13; - i2 = HEAP32[i6 >> 2] | 0; - if ((i13 | 0) == 4) { - i21 = HEAP32[(HEAP32[i8 >> 2] | 0) + 180 >> 2] | 0; - HEAP32[i2 >> 2] = i21; - HEAP32[i2 + 8 >> 2] = HEAPU8[i21 + 4 | 0] | 0 | 64; - } else if ((i13 | 0) == 6) { - i21 = _luaS_newlstr(i4, 2424, 23) | 0; - HEAP32[i2 >> 2] = i21; - HEAP32[i2 + 8 >> 2] = HEAPU8[i21 + 4 | 0] | 0 | 64; - } else { - i19 = i2 + -16 | 0; - i20 = HEAP32[i19 + 4 >> 2] | 0; - i21 = i2; - HEAP32[i21 >> 2] = HEAP32[i19 >> 2]; - HEAP32[i21 + 4 >> 2] = i20; - HEAP32[i2 + 8 >> 2] = HEAP32[i2 + -8 >> 2]; - } - i21 = i2 + 16 | 0; - HEAP32[i6 >> 2] = i21; - HEAP32[(HEAP32[i7 >> 2] | 0) + 4 >> 2] = i21; - i21 = i13; - HEAP16[i5 >> 1] = 1; - i20 = HEAP16[i3 >> 1] | 0; - i20 = i20 + -1 << 16 >> 16; - HEAP16[i3 >> 1] = i20; - STACKTOP = i1; - return i21 | 0; -} -function _luaK_goiftrue(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0; - i2 = STACKTOP; - _luaK_dischargevars(i1, i3); - i12 = HEAP32[i3 >> 2] | 0; - do { - if ((i12 | 0) == 10) { - i9 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0; - i5 = i3 + 8 | 0; - i8 = HEAP32[i5 >> 2] | 0; - i7 = i9 + (i8 << 2) | 0; - if (!((i8 | 0) > 0 ? (i10 = i9 + (i8 + -1 << 2) | 0, i6 = HEAP32[i10 >> 2] | 0, (HEAP8[5584 + (i6 & 63) | 0] | 0) < 0) : 0)) { - i10 = i7; - i6 = HEAP32[i7 >> 2] | 0; - } - HEAP32[i10 >> 2] = ((i6 & 16320 | 0) == 0) << 6 | i6 & -16321; - i5 = HEAP32[i5 >> 2] | 0; - i8 = 18; - } else if (!((i12 | 0) == 2 | (i12 | 0) == 5 | (i12 | 0) == 4)) { - i5 = i3 + 8 | 0; - if ((i12 | 0) == 6) { - i8 = 14; - } else if ((i12 | 0) == 11 ? (i11 = HEAP32[(HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i5 >> 2] << 2) >> 2] | 0, (i11 & 63 | 0) == 20) : 0) { - i5 = i1 + 20 | 0; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + -1; - i5 = _condjump(i1, 27, i11 >>> 23, 0, 1) | 0; - i8 = 18; - break; - } else { - i8 = 9; - } - if ((i8 | 0) == 9) { - i12 = i1 + 48 | 0; - i10 = HEAP8[i12] | 0; - i11 = (i10 & 255) + 1 | 0; - i6 = (HEAP32[i1 >> 2] | 0) + 78 | 0; - do { - if (i11 >>> 0 > (HEAPU8[i6] | 0) >>> 0) { - if (i11 >>> 0 > 249) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10536); - } else { - HEAP8[i6] = i11; - i9 = HEAP8[i12] | 0; - break; - } - } else { - i9 = i10; - } - } while (0); - i11 = (i9 & 255) + 1 | 0; - HEAP8[i12] = i11; - _discharge2reg(i1, i3, (i11 & 255) + -1 | 0); - if ((HEAP32[i3 >> 2] | 0) == 6) { - i8 = 14; - } - } - if (((i8 | 0) == 14 ? (i7 = HEAP32[i5 >> 2] | 0, (i7 & 256 | 0) == 0) : 0) ? (HEAPU8[i1 + 46 | 0] | 0) <= (i7 | 0) : 0) { - i12 = i1 + 48 | 0; - HEAP8[i12] = (HEAP8[i12] | 0) + -1 << 24 >> 24; - } - i5 = _condjump(i1, 28, 255, HEAP32[i5 >> 2] | 0, 0) | 0; - i8 = 18; - } - } while (0); - do { - if ((i8 | 0) == 18 ? (i4 = i3 + 20 | 0, !((i5 | 0) == -1)) : 0) { - i8 = HEAP32[i4 >> 2] | 0; - if ((i8 | 0) == -1) { - HEAP32[i4 >> 2] = i5; - break; - } - i4 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i7 = i4 + (i8 << 2) | 0; - i6 = HEAP32[i7 >> 2] | 0; - i9 = (i6 >>> 14) + -131071 | 0; - if ((i9 | 0) == -1) { - break; - } - i9 = i8 + 1 + i9 | 0; - if ((i9 | 0) == -1) { - break; - } else { - i8 = i9; - } - } - i4 = i5 + ~i8 | 0; - if ((((i4 | 0) > -1 ? i4 : 0 - i4 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624); - } else { - HEAP32[i7 >> 2] = (i4 << 14) + 2147467264 | i6 & 16383; - break; - } - } - } while (0); - i3 = i3 + 16 | 0; - i4 = HEAP32[i3 >> 2] | 0; - HEAP32[i1 + 24 >> 2] = HEAP32[i1 + 20 >> 2]; - i5 = i1 + 28 | 0; - if ((i4 | 0) == -1) { - HEAP32[i3 >> 2] = -1; - STACKTOP = i2; - return; - } - i8 = HEAP32[i5 >> 2] | 0; - if ((i8 | 0) == -1) { - HEAP32[i5 >> 2] = i4; - HEAP32[i3 >> 2] = -1; - STACKTOP = i2; - return; - } - i7 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i5 = i7 + (i8 << 2) | 0; - i6 = HEAP32[i5 >> 2] | 0; - i9 = (i6 >>> 14) + -131071 | 0; - if ((i9 | 0) == -1) { - break; - } - i9 = i8 + 1 + i9 | 0; - if ((i9 | 0) == -1) { - break; - } else { - i8 = i9; - } - } - i4 = i4 + ~i8 | 0; - if ((((i4 | 0) > -1 ? i4 : 0 - i4 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624); - } - HEAP32[i5 >> 2] = (i4 << 14) + 2147467264 | i6 & 16383; - HEAP32[i3 >> 2] = -1; - STACKTOP = i2; - return; -} -function _luaO_str2d(i1, i3, i5) { - i1 = i1 | 0; - i3 = i3 | 0; - i5 = i5 | 0; - var i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, d9 = 0.0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - if ((_strpbrk(i1, 5464) | 0) != 0) { - i13 = 0; - STACKTOP = i2; - return i13 | 0; - } - do { - if ((_strpbrk(i1, 5472) | 0) == 0) { - d9 = +_strtod(i1, i4); - i10 = HEAP32[i4 >> 2] | 0; - } else { - HEAP32[i4 >> 2] = i1; - i8 = i1; - while (1) { - i6 = HEAP8[i8] | 0; - i10 = i8 + 1 | 0; - if ((HEAP8[(i6 & 255) + 10913 | 0] & 8) == 0) { - break; - } else { - i8 = i10; - } - } - if (i6 << 24 >> 24 == 43) { - i6 = 0; - i8 = i10; - } else if (i6 << 24 >> 24 == 45) { - i6 = 1; - i8 = i10; - } else { - i6 = 0; - } - if ((HEAP8[i8] | 0) == 48 ? (i13 = HEAP8[i8 + 1 | 0] | 0, i13 << 24 >> 24 == 88 | i13 << 24 >> 24 == 120) : 0) { - i10 = i8 + 2 | 0; - i8 = HEAP8[i10] | 0; - i12 = i8 & 255; - i11 = HEAP8[i12 + 10913 | 0] | 0; - if ((i11 & 16) == 0) { - d9 = 0.0; - i11 = i8; - i8 = 0; - } else { - d9 = 0.0; - i8 = 0; - while (1) { - if ((i11 & 2) == 0) { - i11 = (i12 | 32) + -87 | 0; - } else { - i11 = i12 + -48 | 0; - } - d9 = d9 * 16.0 + +(i11 | 0); - i8 = i8 + 1 | 0; - i10 = i10 + 1 | 0; - i13 = HEAP8[i10] | 0; - i12 = i13 & 255; - i11 = HEAP8[i12 + 10913 | 0] | 0; - if ((i11 & 16) == 0) { - i11 = i13; - break; - } - } - } - if (i11 << 24 >> 24 == 46) { - i10 = i10 + 1 | 0; - i13 = HEAPU8[i10] | 0; - i11 = HEAP8[i13 + 10913 | 0] | 0; - if ((i11 & 16) == 0) { - i12 = 0; - } else { - i12 = 0; - do { - if ((i11 & 2) == 0) { - i11 = (i13 | 32) + -87 | 0; - } else { - i11 = i13 + -48 | 0; - } - d9 = d9 * 16.0 + +(i11 | 0); - i12 = i12 + 1 | 0; - i10 = i10 + 1 | 0; - i13 = HEAPU8[i10] | 0; - i11 = HEAP8[i13 + 10913 | 0] | 0; - } while (!((i11 & 16) == 0)); - } - } else { - i12 = 0; - } - if ((i12 | i8 | 0) != 0) { - i8 = Math_imul(i12, -4) | 0; - HEAP32[i4 >> 2] = i10; - i13 = HEAP8[i10] | 0; - if (i13 << 24 >> 24 == 80 | i13 << 24 >> 24 == 112) { - i13 = i10 + 1 | 0; - i11 = HEAP8[i13] | 0; - if (i11 << 24 >> 24 == 45) { - i11 = 1; - i13 = i10 + 2 | 0; - } else if (i11 << 24 >> 24 == 43) { - i11 = 0; - i13 = i10 + 2 | 0; - } else { - i11 = 0; - } - i12 = HEAP8[i13] | 0; - if (!((HEAP8[(i12 & 255) + 10913 | 0] & 2) == 0)) { - i10 = i13; - i7 = 0; - do { - i10 = i10 + 1 | 0; - i7 = (i12 << 24 >> 24) + -48 + (i7 * 10 | 0) | 0; - i12 = HEAP8[i10] | 0; - } while (!((HEAP8[(i12 & 255) + 10913 | 0] & 2) == 0)); - i8 = ((i11 | 0) == 0 ? i7 : 0 - i7 | 0) + i8 | 0; - i7 = 29; - } - } else { - i7 = 29; - } - if ((i7 | 0) == 29) { - HEAP32[i4 >> 2] = i10; - } - if ((i6 | 0) != 0) { - d9 = -d9; - } - d9 = +_ldexp(d9, i8); - break; - } - } - HEAPF64[i5 >> 3] = 0.0; - i13 = 0; - STACKTOP = i2; - return i13 | 0; - } - } while (0); - HEAPF64[i5 >> 3] = d9; - if ((i10 | 0) == (i1 | 0)) { - i13 = 0; - STACKTOP = i2; - return i13 | 0; - } - if (!((HEAP8[(HEAPU8[i10] | 0) + 10913 | 0] & 8) == 0)) { - do { - i10 = i10 + 1 | 0; - } while (!((HEAP8[(HEAPU8[i10] | 0) + 10913 | 0] & 8) == 0)); - HEAP32[i4 >> 2] = i10; - } - i13 = (i10 | 0) == (i1 + i3 | 0) | 0; - STACKTOP = i2; - return i13 | 0; -} -function _luaV_equalobj_(i2, i4, i5) { - i2 = i2 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i1 = STACKTOP; - i3 = i4 + 8 | 0; - L1 : do { - switch (HEAP32[i3 >> 2] & 63 | 0) { - case 7: - { - i6 = HEAP32[i4 >> 2] | 0; - i7 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) == (i7 | 0)) { - i7 = 1; - STACKTOP = i1; - return i7 | 0; - } - if ((i2 | 0) == 0) { - i7 = 0; - STACKTOP = i1; - return i7 | 0; - } else { - i6 = _get_equalTM(i2, HEAP32[i6 + 8 >> 2] | 0, HEAP32[i7 + 8 >> 2] | 0) | 0; - break L1; - } - } - case 5: - { - i7 = HEAP32[i4 >> 2] | 0; - i6 = HEAP32[i5 >> 2] | 0; - if ((i7 | 0) == (i6 | 0)) { - i7 = 1; - STACKTOP = i1; - return i7 | 0; - } - if ((i2 | 0) == 0) { - i7 = 0; - STACKTOP = i1; - return i7 | 0; - } else { - i6 = _get_equalTM(i2, HEAP32[i7 + 8 >> 2] | 0, HEAP32[i6 + 8 >> 2] | 0) | 0; - break L1; - } - } - case 4: - { - i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0; - STACKTOP = i1; - return i7 | 0; - } - case 20: - { - i7 = _luaS_eqlngstr(HEAP32[i4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0; - STACKTOP = i1; - return i7 | 0; - } - case 3: - { - i7 = +HEAPF64[i4 >> 3] == +HEAPF64[i5 >> 3] | 0; - STACKTOP = i1; - return i7 | 0; - } - case 1: - { - i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0; - STACKTOP = i1; - return i7 | 0; - } - case 22: - { - i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0; - STACKTOP = i1; - return i7 | 0; - } - case 2: - { - i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0; - STACKTOP = i1; - return i7 | 0; - } - case 0: - { - i7 = 1; - STACKTOP = i1; - return i7 | 0; - } - default: - { - i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0; - STACKTOP = i1; - return i7 | 0; - } - } - } while (0); - if ((i6 | 0) == 0) { - i7 = 0; - STACKTOP = i1; - return i7 | 0; - } - i7 = i2 + 8 | 0; - i10 = HEAP32[i7 >> 2] | 0; - i9 = i2 + 28 | 0; - i8 = i10 - (HEAP32[i9 >> 2] | 0) | 0; - HEAP32[i7 >> 2] = i10 + 16; - i13 = i6; - i12 = HEAP32[i13 + 4 >> 2] | 0; - i11 = i10; - HEAP32[i11 >> 2] = HEAP32[i13 >> 2]; - HEAP32[i11 + 4 >> 2] = i12; - HEAP32[i10 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - i10 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i10 + 16; - i11 = i4; - i4 = HEAP32[i11 + 4 >> 2] | 0; - i6 = i10; - HEAP32[i6 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i6 + 4 >> 2] = i4; - HEAP32[i10 + 8 >> 2] = HEAP32[i3 >> 2]; - i3 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i3 + 16; - i10 = i5; - i6 = HEAP32[i10 + 4 >> 2] | 0; - i4 = i3; - HEAP32[i4 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i4 + 4 >> 2] = i6; - HEAP32[i3 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - _luaD_call(i2, (HEAP32[i7 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i2 + 16 >> 2] | 0) + 18 | 0] & 1); - i2 = HEAP32[i9 >> 2] | 0; - i3 = HEAP32[i7 >> 2] | 0; - i4 = i3 + -16 | 0; - HEAP32[i7 >> 2] = i4; - i5 = HEAP32[i4 + 4 >> 2] | 0; - i6 = i2 + i8 | 0; - HEAP32[i6 >> 2] = HEAP32[i4 >> 2]; - HEAP32[i6 + 4 >> 2] = i5; - HEAP32[i2 + (i8 + 8) >> 2] = HEAP32[i3 + -8 >> 2]; - i2 = HEAP32[i7 >> 2] | 0; - i3 = HEAP32[i2 + 8 >> 2] | 0; - if ((i3 | 0) != 0) { - if ((i3 | 0) == 1) { - i2 = (HEAP32[i2 >> 2] | 0) != 0; - } else { - i2 = 1; - } - } else { - i2 = 0; - } - i13 = i2 & 1; - STACKTOP = i1; - return i13 | 0; -} -function _forbody(i1, i5, i6, i4, i9) { - i1 = i1 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - i4 = i4 | 0; - i9 = i9 | 0; - var i2 = 0, i3 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i8 = i3 + 12 | 0; - i19 = i3; - i11 = i1 + 48 | 0; - i7 = HEAP32[i11 >> 2] | 0; - i18 = i7 + 46 | 0; - i22 = (HEAPU8[i18] | 0) + 3 | 0; - HEAP8[i18] = i22; - i21 = i7 + 20 | 0; - i17 = i7 + 12 | 0; - i2 = i7 + 40 | 0; - i20 = HEAP32[(HEAP32[i7 >> 2] | 0) + 24 >> 2] | 0; - i10 = HEAP32[HEAP32[(HEAP32[i17 >> 2] | 0) + 64 >> 2] >> 2] | 0; - HEAP32[i20 + ((HEAP16[i10 + ((i22 & 255) + -3 + (HEAP32[i2 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i21 >> 2]; - HEAP32[i20 + ((HEAP16[i10 + ((HEAPU8[i18] | 0) + -2 + (HEAP32[i2 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i21 >> 2]; - HEAP32[i20 + ((HEAP16[i10 + ((HEAPU8[i18] | 0) + -1 + (HEAP32[i2 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i21 >> 2]; - i2 = i1 + 16 | 0; - if ((HEAP32[i2 >> 2] | 0) != 259) { - _error_expected(i1, 259); - } - _luaX_next(i1); - i10 = (i9 | 0) != 0; - if (i10) { - i9 = _luaK_codeABx(i7, 33, i5, 131070) | 0; - } else { - i9 = _luaK_jump(i7) | 0; - } - HEAP8[i19 + 10 | 0] = 0; - HEAP8[i19 + 8 | 0] = HEAP8[i18] | 0; - i17 = HEAP32[(HEAP32[i17 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i19 + 4 >> 1] = HEAP32[i17 + 28 >> 2]; - HEAP16[i19 + 6 >> 1] = HEAP32[i17 + 16 >> 2]; - HEAP8[i19 + 9 | 0] = 0; - i17 = i7 + 16 | 0; - HEAP32[i19 >> 2] = HEAP32[i17 >> 2]; - HEAP32[i17 >> 2] = i19; - i19 = HEAP32[i11 >> 2] | 0; - i17 = i19 + 46 | 0; - i18 = (HEAPU8[i17] | 0) + i4 | 0; - HEAP8[i17] = i18; - if ((i4 | 0) != 0 ? (i13 = i19 + 20 | 0, i12 = i19 + 40 | 0, i14 = HEAP32[(HEAP32[i19 >> 2] | 0) + 24 >> 2] | 0, i15 = HEAP32[HEAP32[(HEAP32[i19 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0, HEAP32[i14 + ((HEAP16[i15 + ((i18 & 255) - i4 + (HEAP32[i12 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i13 >> 2], i16 = i4 + -1 | 0, (i16 | 0) != 0) : 0) { - do { - HEAP32[i14 + ((HEAP16[i15 + ((HEAPU8[i17] | 0) - i16 + (HEAP32[i12 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i13 >> 2]; - i16 = i16 + -1 | 0; - } while ((i16 | 0) != 0); - } - _luaK_reserveregs(i7, i4); - i11 = HEAP32[i11 >> 2] | 0; - HEAP8[i8 + 10 | 0] = 0; - HEAP8[i8 + 8 | 0] = HEAP8[i11 + 46 | 0] | 0; - i22 = HEAP32[(HEAP32[i11 + 12 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i8 + 4 >> 1] = HEAP32[i22 + 28 >> 2]; - HEAP16[i8 + 6 >> 1] = HEAP32[i22 + 16 >> 2]; - HEAP8[i8 + 9 | 0] = 0; - i22 = i11 + 16 | 0; - HEAP32[i8 >> 2] = HEAP32[i22 >> 2]; - HEAP32[i22 >> 2] = i8; - L13 : do { - i8 = HEAP32[i2 >> 2] | 0; - switch (i8 | 0) { - case 277: - case 286: - case 262: - case 261: - case 260: - { - break L13; - } - default: - {} - } - _statement(i1); - } while ((i8 | 0) != 274); - _leaveblock(i11); - _leaveblock(i7); - _luaK_patchtohere(i7, i9); - if (i10) { - i21 = _luaK_codeABx(i7, 32, i5, 131070) | 0; - i22 = i9 + 1 | 0; - _luaK_patchlist(i7, i21, i22); - _luaK_fixline(i7, i6); - STACKTOP = i3; - return; - } else { - _luaK_codeABC(i7, 34, i5, 0, i4) | 0; - _luaK_fixline(i7, i6); - i21 = _luaK_codeABx(i7, 35, i5 + 2 | 0, 131070) | 0; - i22 = i9 + 1 | 0; - _luaK_patchlist(i7, i21, i22); - _luaK_fixline(i7, i6); - STACKTOP = i3; - return; - } -} -function _dotty(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i6; - i4 = i6 + 4 | 0; - i2 = HEAP32[20] | 0; - HEAP32[20] = 0; - _lua_settop(i1, 0); - if ((_pushline(i1, 1) | 0) == 0) { - _lua_settop(i1, 0); - i10 = HEAP32[_stdout >> 2] | 0; - _fputc(10, i10 | 0) | 0; - _fflush(i10 | 0) | 0; - HEAP32[20] = i2; - STACKTOP = i6; - return; - } - i5 = HEAP32[_stderr >> 2] | 0; - L4 : while (1) { - i8 = _lua_tolstring(i1, 1, i4) | 0; - i8 = _luaL_loadbufferx(i1, i8, HEAP32[i4 >> 2] | 0, 256, 0) | 0; - L6 : do { - if ((i8 | 0) == 3) { - while (1) { - i8 = _lua_tolstring(i1, -1, i3) | 0; - i7 = HEAP32[i3 >> 2] | 0; - if (!(i7 >>> 0 > 4)) { - break; - } - if ((_strcmp(i8 + (i7 + -5) | 0, 264) | 0) != 0) { - break; - } - _lua_settop(i1, -2); - if ((_pushline(i1, 0) | 0) == 0) { - i7 = 23; - break L4; - } - _lua_pushlstring(i1, 184, 1) | 0; - _lua_insert(i1, -2); - _lua_concat(i1, 3); - i8 = _lua_tolstring(i1, 1, i4) | 0; - i8 = _luaL_loadbufferx(i1, i8, HEAP32[i4 >> 2] | 0, 256, 0) | 0; - if ((i8 | 0) != 3) { - i7 = 9; - break L6; - } - } - _lua_remove(i1, 1); - i8 = 3; - i7 = 10; - } else { - i7 = 9; - } - } while (0); - do { - if ((i7 | 0) == 9) { - _lua_remove(i1, 1); - if ((i8 | 0) == -1) { - i7 = 23; - break L4; - } else if ((i8 | 0) != 0) { - i7 = 10; - break; - } - i9 = _lua_gettop(i1) | 0; - _lua_pushcclosure(i1, 142, 0); - _lua_insert(i1, i9); - HEAP32[48] = i1; - _signal(2, 1) | 0; - i10 = _lua_pcallk(i1, 0, -1, i9, 0, 0) | 0; - _signal(2, 0) | 0; - _lua_remove(i1, i9); - if ((i10 | 0) == 0) { - i7 = 17; - } else { - i9 = 0; - i7 = 12; - } - } - } while (0); - if ((i7 | 0) == 10) { - i9 = (i8 | 0) == 0; - i7 = 12; - } - do { - if ((i7 | 0) == 12) { - i7 = 0; - if ((_lua_type(i1, -1) | 0) == 0) { - if (i9) { - i7 = 17; - break; - } else { - break; - } - } - i10 = _lua_tolstring(i1, -1, 0) | 0; - i8 = HEAP32[20] | 0; - if ((i8 | 0) != 0) { - HEAP32[i3 >> 2] = i8; - _fprintf(i5 | 0, 496, i3 | 0) | 0; - _fflush(i5 | 0) | 0; - } - HEAP32[i3 >> 2] = (i10 | 0) == 0 ? 48 : i10; - _fprintf(i5 | 0, 912, i3 | 0) | 0; - _fflush(i5 | 0) | 0; - _lua_settop(i1, -2); - _lua_gc(i1, 2, 0) | 0; - if (i9) { - i7 = 17; - } - } - } while (0); - if (((i7 | 0) == 17 ? (0, (_lua_gettop(i1) | 0) > 0) : 0) ? (_luaL_checkstack(i1, 20, 112), _lua_getglobal(i1, 144), _lua_insert(i1, 1), (_lua_pcallk(i1, (_lua_gettop(i1) | 0) + -1 | 0, 0, 0, 0, 0) | 0) != 0) : 0) { - i7 = HEAP32[20] | 0; - HEAP32[i3 >> 2] = _lua_tolstring(i1, -1, 0) | 0; - i8 = _lua_pushfstring(i1, 152, i3) | 0; - if ((i7 | 0) != 0) { - HEAP32[i3 >> 2] = i7; - _fprintf(i5 | 0, 496, i3 | 0) | 0; - _fflush(i5 | 0) | 0; - } - HEAP32[i3 >> 2] = i8; - _fprintf(i5 | 0, 912, i3 | 0) | 0; - _fflush(i5 | 0) | 0; - } - _lua_settop(i1, 0); - if ((_pushline(i1, 1) | 0) == 0) { - i7 = 23; - break; - } - } - if ((i7 | 0) == 23) { - _lua_settop(i1, 0); - i10 = HEAP32[_stdout >> 2] | 0; - _fputc(10, i10 | 0) | 0; - _fflush(i10 | 0) | 0; - HEAP32[20] = i2; - STACKTOP = i6; - return; - } -} -function _test_then_block(i5, i1) { - i5 = i5 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i10 = i2 + 24 | 0; - i9 = i2; - i8 = i5 + 48 | 0; - i4 = HEAP32[i8 >> 2] | 0; - _luaX_next(i5); - _subexpr(i5, i9, 0) | 0; - i3 = i5 + 16 | 0; - if ((HEAP32[i3 >> 2] | 0) != 275) { - _error_expected(i5, 275); - } - _luaX_next(i5); - i14 = HEAP32[i3 >> 2] | 0; - do { - if ((i14 | 0) == 258 | (i14 | 0) == 266) { - _luaK_goiffalse(HEAP32[i8 >> 2] | 0, i9); - HEAP8[i10 + 10 | 0] = 0; - HEAP8[i10 + 8 | 0] = HEAP8[i4 + 46 | 0] | 0; - i11 = HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i10 + 4 >> 1] = HEAP32[i11 + 28 >> 2]; - HEAP16[i10 + 6 >> 1] = HEAP32[i11 + 16 >> 2]; - HEAP8[i10 + 9 | 0] = 0; - i11 = i4 + 16 | 0; - HEAP32[i10 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i11 >> 2] = i10; - i11 = HEAP32[i9 + 16 >> 2] | 0; - i10 = HEAP32[i5 + 4 >> 2] | 0; - i14 = (HEAP32[i3 >> 2] | 0) == 266; - _luaX_next(i5); - do { - if (i14) { - if ((HEAP32[i3 >> 2] | 0) == 288) { - i7 = HEAP32[i5 + 24 >> 2] | 0; - _luaX_next(i5); - break; - } else { - _error_expected(i5, 288); - } - } else { - i7 = _luaS_new(HEAP32[i5 + 52 >> 2] | 0, 6304) | 0; - } - } while (0); - i14 = HEAP32[i5 + 64 >> 2] | 0; - i12 = i14 + 12 | 0; - i13 = i14 + 16 | 0; - i9 = HEAP32[i13 >> 2] | 0; - i14 = i14 + 20 | 0; - if ((i9 | 0) < (HEAP32[i14 >> 2] | 0)) { - i14 = HEAP32[i12 >> 2] | 0; - } else { - i14 = _luaM_growaux_(HEAP32[i5 + 52 >> 2] | 0, HEAP32[i12 >> 2] | 0, i14, 16, 32767, 6312) | 0; - HEAP32[i12 >> 2] = i14; - } - HEAP32[i14 + (i9 << 4) >> 2] = i7; - i14 = HEAP32[i12 >> 2] | 0; - HEAP32[i14 + (i9 << 4) + 8 >> 2] = i10; - HEAP8[i14 + (i9 << 4) + 12 | 0] = HEAP8[(HEAP32[i8 >> 2] | 0) + 46 | 0] | 0; - HEAP32[(HEAP32[i12 >> 2] | 0) + (i9 << 4) + 4 >> 2] = i11; - HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + 1; - _findlabel(i5, i9) | 0; - L18 : while (1) { - switch (HEAP32[i3 >> 2] | 0) { - case 286: - case 262: - case 261: - case 260: - { - break L18; - } - case 285: - case 59: - { - break; - } - default: - { - i6 = 16; - break L18; - } - } - _statement(i5); - } - if ((i6 | 0) == 16) { - i6 = _luaK_jump(i4) | 0; - break; - } - _leaveblock(i4); - STACKTOP = i2; - return; - } else { - _luaK_goiftrue(HEAP32[i8 >> 2] | 0, i9); - HEAP8[i10 + 10 | 0] = 0; - HEAP8[i10 + 8 | 0] = HEAP8[i4 + 46 | 0] | 0; - i6 = HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i10 + 4 >> 1] = HEAP32[i6 + 28 >> 2]; - HEAP16[i10 + 6 >> 1] = HEAP32[i6 + 16 >> 2]; - HEAP8[i10 + 9 | 0] = 0; - i6 = i4 + 16 | 0; - HEAP32[i10 >> 2] = HEAP32[i6 >> 2]; - HEAP32[i6 >> 2] = i10; - i6 = HEAP32[i9 + 20 >> 2] | 0; - } - } while (0); - L26 : do { - i7 = HEAP32[i3 >> 2] | 0; - switch (i7 | 0) { - case 277: - case 286: - case 262: - case 261: - case 260: - { - break L26; - } - default: - {} - } - _statement(i5); - } while ((i7 | 0) != 274); - _leaveblock(i4); - if (((HEAP32[i3 >> 2] | 0) + -260 | 0) >>> 0 < 2) { - _luaK_concat(i4, i1, _luaK_jump(i4) | 0); - } - _luaK_patchtohere(i4, i6); - STACKTOP = i2; - return; -} -function _luaL_gsub(i2, i13, i11, i10) { - i2 = i2 | 0; - i13 = i13 | 0; - i11 = i11 | 0; - i10 = i10 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i8 = i1; - i4 = i1 + 8 | 0; - i9 = _strlen(i11 | 0) | 0; - i6 = i4 + 12 | 0; - HEAP32[i6 >> 2] = i2; - i3 = i4 + 16 | 0; - HEAP32[i4 >> 2] = i3; - i5 = i4 + 8 | 0; - HEAP32[i5 >> 2] = 0; - i7 = i4 + 4 | 0; - HEAP32[i7 >> 2] = 1024; - i12 = _strstr(i13, i11) | 0; - if ((i12 | 0) == 0) { - i14 = 0; - i17 = 1024; - i16 = i2; - } else { - i14 = 0; - i17 = 1024; - i16 = i2; - do { - i15 = i12 - i13 | 0; - if ((i17 - i14 | 0) >>> 0 < i15 >>> 0) { - i17 = i17 << 1; - i17 = (i17 - i14 | 0) >>> 0 < i15 >>> 0 ? i14 + i15 | 0 : i17; - if (i17 >>> 0 < i14 >>> 0 | (i17 - i14 | 0) >>> 0 < i15 >>> 0) { - _luaL_error(i16, 1272, i8) | 0; - } - i14 = _lua_newuserdata(i16, i17) | 0; - _memcpy(i14 | 0, HEAP32[i4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0; - if ((HEAP32[i4 >> 2] | 0) != (i3 | 0)) { - _lua_remove(i16, -2); - } - HEAP32[i4 >> 2] = i14; - HEAP32[i7 >> 2] = i17; - i16 = i14; - i14 = HEAP32[i5 >> 2] | 0; - } else { - i16 = HEAP32[i4 >> 2] | 0; - } - _memcpy(i16 + i14 | 0, i13 | 0, i15 | 0) | 0; - i15 = (HEAP32[i5 >> 2] | 0) + i15 | 0; - HEAP32[i5 >> 2] = i15; - i13 = _strlen(i10 | 0) | 0; - i14 = HEAP32[i6 >> 2] | 0; - i16 = HEAP32[i7 >> 2] | 0; - if ((i16 - i15 | 0) >>> 0 < i13 >>> 0) { - i16 = i16 << 1; - i16 = (i16 - i15 | 0) >>> 0 < i13 >>> 0 ? i15 + i13 | 0 : i16; - if (i16 >>> 0 < i15 >>> 0 | (i16 - i15 | 0) >>> 0 < i13 >>> 0) { - _luaL_error(i14, 1272, i8) | 0; - } - i15 = _lua_newuserdata(i14, i16) | 0; - _memcpy(i15 | 0, HEAP32[i4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0; - if ((HEAP32[i4 >> 2] | 0) != (i3 | 0)) { - _lua_remove(i14, -2); - } - HEAP32[i4 >> 2] = i15; - HEAP32[i7 >> 2] = i16; - i14 = i15; - i15 = HEAP32[i5 >> 2] | 0; - } else { - i14 = HEAP32[i4 >> 2] | 0; - } - _memcpy(i14 + i15 | 0, i10 | 0, i13 | 0) | 0; - i14 = (HEAP32[i5 >> 2] | 0) + i13 | 0; - HEAP32[i5 >> 2] = i14; - i13 = i12 + i9 | 0; - i12 = _strstr(i13, i11) | 0; - i16 = HEAP32[i6 >> 2] | 0; - i17 = HEAP32[i7 >> 2] | 0; - } while ((i12 | 0) != 0); - } - i9 = _strlen(i13 | 0) | 0; - if ((i17 - i14 | 0) >>> 0 < i9 >>> 0) { - i10 = i17 << 1; - i10 = (i10 - i14 | 0) >>> 0 < i9 >>> 0 ? i14 + i9 | 0 : i10; - if (i10 >>> 0 < i14 >>> 0 | (i10 - i14 | 0) >>> 0 < i9 >>> 0) { - _luaL_error(i16, 1272, i8) | 0; - } - i8 = _lua_newuserdata(i16, i10) | 0; - _memcpy(i8 | 0, HEAP32[i4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0; - if ((HEAP32[i4 >> 2] | 0) != (i3 | 0)) { - _lua_remove(i16, -2); - } - HEAP32[i4 >> 2] = i8; - HEAP32[i7 >> 2] = i10; - i14 = HEAP32[i5 >> 2] | 0; - } else { - i8 = HEAP32[i4 >> 2] | 0; - } - _memcpy(i8 + i14 | 0, i13 | 0, i9 | 0) | 0; - i17 = (HEAP32[i5 >> 2] | 0) + i9 | 0; - HEAP32[i5 >> 2] = i17; - i5 = HEAP32[i6 >> 2] | 0; - _lua_pushlstring(i5, HEAP32[i4 >> 2] | 0, i17) | 0; - if ((HEAP32[i4 >> 2] | 0) == (i3 | 0)) { - i17 = _lua_tolstring(i2, -1, 0) | 0; - STACKTOP = i1; - return i17 | 0; - } - _lua_remove(i5, -2); - i17 = _lua_tolstring(i2, -1, 0) | 0; - STACKTOP = i1; - return i17 | 0; -} -function _luaK_goiffalse(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0; - i2 = STACKTOP; - _luaK_dischargevars(i1, i3); - i9 = HEAP32[i3 >> 2] | 0; - do { - if ((i9 | 0) == 10) { - i4 = HEAP32[i3 + 8 >> 2] | 0; - i8 = 15; - } else if (!((i9 | 0) == 3 | (i9 | 0) == 1)) { - i4 = i3 + 8 | 0; - if ((i9 | 0) == 6) { - i8 = 11; - } else if ((i9 | 0) == 11 ? (i10 = HEAP32[(HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i4 >> 2] << 2) >> 2] | 0, (i10 & 63 | 0) == 20) : 0) { - i4 = i1 + 20 | 0; - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -1; - i4 = _condjump(i1, 27, i10 >>> 23, 0, 0) | 0; - i8 = 15; - break; - } else { - i8 = 6; - } - if ((i8 | 0) == 6) { - i9 = i1 + 48 | 0; - i11 = HEAP8[i9] | 0; - i10 = (i11 & 255) + 1 | 0; - i12 = (HEAP32[i1 >> 2] | 0) + 78 | 0; - do { - if (i10 >>> 0 > (HEAPU8[i12] | 0) >>> 0) { - if (i10 >>> 0 > 249) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10536); - } else { - HEAP8[i12] = i10; - i7 = HEAP8[i9] | 0; - break; - } - } else { - i7 = i11; - } - } while (0); - i12 = (i7 & 255) + 1 | 0; - HEAP8[i9] = i12; - _discharge2reg(i1, i3, (i12 & 255) + -1 | 0); - if ((HEAP32[i3 >> 2] | 0) == 6) { - i8 = 11; - } - } - if (((i8 | 0) == 11 ? (i6 = HEAP32[i4 >> 2] | 0, (i6 & 256 | 0) == 0) : 0) ? (HEAPU8[i1 + 46 | 0] | 0 | 0) <= (i6 | 0) : 0) { - i12 = i1 + 48 | 0; - HEAP8[i12] = (HEAP8[i12] | 0) + -1 << 24 >> 24; - } - i4 = _condjump(i1, 28, 255, HEAP32[i4 >> 2] | 0, 1) | 0; - i8 = 15; - } - } while (0); - do { - if ((i8 | 0) == 15 ? (i5 = i3 + 16 | 0, !((i4 | 0) == -1)) : 0) { - i8 = HEAP32[i5 >> 2] | 0; - if ((i8 | 0) == -1) { - HEAP32[i5 >> 2] = i4; - break; - } - i5 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i7 = i5 + (i8 << 2) | 0; - i6 = HEAP32[i7 >> 2] | 0; - i9 = (i6 >>> 14) + -131071 | 0; - if ((i9 | 0) == -1) { - break; - } - i9 = i8 + 1 + i9 | 0; - if ((i9 | 0) == -1) { - break; - } else { - i8 = i9; - } - } - i4 = i4 + ~i8 | 0; - if ((((i4 | 0) > -1 ? i4 : 0 - i4 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624); - } else { - HEAP32[i7 >> 2] = (i4 << 14) + 2147467264 | i6 & 16383; - break; - } - } - } while (0); - i3 = i3 + 20 | 0; - i4 = HEAP32[i3 >> 2] | 0; - HEAP32[i1 + 24 >> 2] = HEAP32[i1 + 20 >> 2]; - i5 = i1 + 28 | 0; - if ((i4 | 0) == -1) { - HEAP32[i3 >> 2] = -1; - STACKTOP = i2; - return; - } - i8 = HEAP32[i5 >> 2] | 0; - if ((i8 | 0) == -1) { - HEAP32[i5 >> 2] = i4; - HEAP32[i3 >> 2] = -1; - STACKTOP = i2; - return; - } - i7 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i5 = i7 + (i8 << 2) | 0; - i6 = HEAP32[i5 >> 2] | 0; - i9 = (i6 >>> 14) + -131071 | 0; - if ((i9 | 0) == -1) { - break; - } - i9 = i8 + 1 + i9 | 0; - if ((i9 | 0) == -1) { - break; - } else { - i8 = i9; - } - } - i4 = i4 + ~i8 | 0; - if ((((i4 | 0) > -1 ? i4 : 0 - i4 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624); - } - HEAP32[i5 >> 2] = (i4 << 14) + 2147467264 | i6 & 16383; - HEAP32[i3 >> 2] = -1; - STACKTOP = i2; - return; -} -function _luaV_settable(i2, i11, i7, i9) { - i2 = i2 | 0; - i11 = i11 | 0; - i7 = i7 | 0; - i9 = i9 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i12 = 0, i13 = 0, i14 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i5 = i6; - i4 = i2 + 12 | 0; - i3 = i11; - i13 = HEAP32[i11 + 8 >> 2] | 0; - i12 = 0; - while (1) { - i11 = i3 + 8 | 0; - if ((i13 | 0) != 69) { - i14 = _luaT_gettmbyobj(i2, i3, 1) | 0; - i13 = HEAP32[i14 + 8 >> 2] | 0; - if ((i13 | 0) == 0) { - i1 = 16; - break; - } - } else { - i8 = HEAP32[i3 >> 2] | 0; - i13 = _luaH_get(i8, i7) | 0; - if ((HEAP32[i13 + 8 >> 2] | 0) != 0) { - i10 = i13; - break; - } - i14 = HEAP32[i8 + 8 >> 2] | 0; - if ((i14 | 0) == 0) { - i1 = 9; - break; - } - if (!((HEAP8[i14 + 6 | 0] & 2) == 0)) { - i1 = 9; - break; - } - i14 = _luaT_gettm(i14, 1, HEAP32[(HEAP32[i4 >> 2] | 0) + 188 >> 2] | 0) | 0; - if ((i14 | 0) == 0) { - i1 = 9; - break; - } - i13 = HEAP32[i14 + 8 >> 2] | 0; - } - i12 = i12 + 1 | 0; - if ((i13 & 15 | 0) == 6) { - i1 = 18; - break; - } - if ((i12 | 0) < 100) { - i3 = i14; - } else { - i1 = 19; - break; - } - } - if ((i1 | 0) == 9) { - if ((i13 | 0) == 5192) { - i10 = _luaH_newkey(i2, i8, i7) | 0; - } else { - i10 = i13; - } - } else if ((i1 | 0) == 16) { - _luaG_typeerror(i2, i3, 8944); - } else if ((i1 | 0) == 18) { - i13 = i2 + 8 | 0; - i8 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i8 + 16; - i5 = i14; - i12 = HEAP32[i5 + 4 >> 2] | 0; - i10 = i8; - HEAP32[i10 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i10 + 4 >> 2] = i12; - HEAP32[i8 + 8 >> 2] = HEAP32[i14 + 8 >> 2]; - i14 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i14 + 16; - i8 = i3; - i10 = HEAP32[i8 + 4 >> 2] | 0; - i12 = i14; - HEAP32[i12 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i12 + 4 >> 2] = i10; - HEAP32[i14 + 8 >> 2] = HEAP32[i11 >> 2]; - i14 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i14 + 16; - i12 = i7; - i11 = HEAP32[i12 + 4 >> 2] | 0; - i10 = i14; - HEAP32[i10 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i10 + 4 >> 2] = i11; - HEAP32[i14 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i14 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i14 + 16; - i10 = i9; - i11 = HEAP32[i10 + 4 >> 2] | 0; - i12 = i14; - HEAP32[i12 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i12 + 4 >> 2] = i11; - HEAP32[i14 + 8 >> 2] = HEAP32[i9 + 8 >> 2]; - _luaD_call(i2, (HEAP32[i13 >> 2] | 0) + -64 | 0, 0, HEAP8[(HEAP32[i2 + 16 >> 2] | 0) + 18 | 0] & 1); - STACKTOP = i6; - return; - } else if ((i1 | 0) == 19) { - _luaG_runerror(i2, 8976, i5); - } - i12 = i9; - i13 = HEAP32[i12 + 4 >> 2] | 0; - i14 = i10; - HEAP32[i14 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i14 + 4 >> 2] = i13; - i14 = i9 + 8 | 0; - HEAP32[i10 + 8 >> 2] = HEAP32[i14 >> 2]; - HEAP8[i8 + 6 | 0] = 0; - if ((HEAP32[i14 >> 2] & 64 | 0) == 0) { - STACKTOP = i6; - return; - } - if ((HEAP8[(HEAP32[i9 >> 2] | 0) + 5 | 0] & 3) == 0) { - STACKTOP = i6; - return; - } - if ((HEAP8[i8 + 5 | 0] & 4) == 0) { - STACKTOP = i6; - return; - } - _luaC_barrierback_(i2, i8); - STACKTOP = i6; - return; -} -function _luaK_code(i4, i5) { - i4 = i4 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0; - i2 = STACKTOP; - i1 = HEAP32[i4 >> 2] | 0; - i7 = i4 + 28 | 0; - i15 = HEAP32[i7 >> 2] | 0; - i3 = i4 + 20 | 0; - i8 = HEAP32[i3 >> 2] | 0; - do { - if (!((i15 | 0) == -1)) { - i11 = HEAP32[i1 + 12 >> 2] | 0; - while (1) { - i12 = i11 + (i15 << 2) | 0; - i14 = HEAP32[i12 >> 2] | 0; - i13 = (i14 >>> 14) + -131071 | 0; - if ((i13 | 0) == -1) { - i13 = -1; - } else { - i13 = i15 + 1 + i13 | 0; - } - if ((i15 | 0) > 0 ? (i9 = i11 + (i15 + -1 << 2) | 0, i10 = HEAP32[i9 >> 2] | 0, (HEAP8[5584 + (i10 & 63) | 0] | 0) < 0) : 0) { - i17 = i9; - i16 = i10; - } else { - i17 = i12; - i16 = i14; - } - if ((i16 & 63 | 0) == 28) { - HEAP32[i17 >> 2] = i16 & 8372224 | i16 >>> 23 << 6 | 27; - i14 = i8 + ~i15 | 0; - if ((((i14 | 0) > -1 ? i14 : 0 - i14 | 0) | 0) > 131071) { - i8 = 10; - break; - } - i14 = HEAP32[i12 >> 2] & 16383 | (i14 << 14) + 2147467264; - } else { - i15 = i8 + ~i15 | 0; - if ((((i15 | 0) > -1 ? i15 : 0 - i15 | 0) | 0) > 131071) { - i8 = 13; - break; - } - i14 = (i15 << 14) + 2147467264 | i14 & 16383; - } - HEAP32[i12 >> 2] = i14; - if ((i13 | 0) == -1) { - i8 = 16; - break; - } else { - i15 = i13; - } - } - if ((i8 | 0) == 10) { - _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624); - } else if ((i8 | 0) == 13) { - _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624); - } else if ((i8 | 0) == 16) { - i6 = HEAP32[i3 >> 2] | 0; - break; - } - } else { - i6 = i8; - } - } while (0); - HEAP32[i7 >> 2] = -1; - i7 = i1 + 48 | 0; - if ((i6 | 0) < (HEAP32[i7 >> 2] | 0)) { - i7 = i1 + 12 | 0; - } else { - i6 = i1 + 12 | 0; - HEAP32[i6 >> 2] = _luaM_growaux_(HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 52 >> 2] | 0, HEAP32[i6 >> 2] | 0, i7, 4, 2147483645, 10616) | 0; - i7 = i6; - i6 = HEAP32[i3 >> 2] | 0; - } - HEAP32[(HEAP32[i7 >> 2] | 0) + (i6 << 2) >> 2] = i5; - i5 = HEAP32[i3 >> 2] | 0; - i6 = i1 + 52 | 0; - i4 = i4 + 12 | 0; - if ((i5 | 0) < (HEAP32[i6 >> 2] | 0)) { - i15 = i1 + 20 | 0; - i17 = i5; - i16 = HEAP32[i4 >> 2] | 0; - i16 = i16 + 8 | 0; - i16 = HEAP32[i16 >> 2] | 0; - i15 = HEAP32[i15 >> 2] | 0; - i17 = i15 + (i17 << 2) | 0; - HEAP32[i17 >> 2] = i16; - i17 = HEAP32[i3 >> 2] | 0; - i16 = i17 + 1 | 0; - HEAP32[i3 >> 2] = i16; - STACKTOP = i2; - return i17 | 0; - } else { - i15 = i1 + 20 | 0; - HEAP32[i15 >> 2] = _luaM_growaux_(HEAP32[(HEAP32[i4 >> 2] | 0) + 52 >> 2] | 0, HEAP32[i15 >> 2] | 0, i6, 4, 2147483645, 10616) | 0; - i17 = HEAP32[i3 >> 2] | 0; - i16 = HEAP32[i4 >> 2] | 0; - i16 = i16 + 8 | 0; - i16 = HEAP32[i16 >> 2] | 0; - i15 = HEAP32[i15 >> 2] | 0; - i17 = i15 + (i17 << 2) | 0; - HEAP32[i17 >> 2] = i16; - i17 = HEAP32[i3 >> 2] | 0; - i16 = i17 + 1 | 0; - HEAP32[i3 >> 2] = i16; - STACKTOP = i2; - return i17 | 0; - } - return 0; -} -function _luaH_next(i9, i5, i2) { - i9 = i9 | 0; - i5 = i5 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, d14 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i8 = i1 + 8 | 0; - i11 = i1; - i3 = i2 + 8 | 0; - i10 = HEAP32[i3 >> 2] | 0; - do { - if ((i10 | 0) != 0) { - if ((((i10 | 0) == 3 ? (d14 = +HEAPF64[i2 >> 3], HEAPF64[i11 >> 3] = d14 + 6755399441055744.0, i12 = HEAP32[i11 >> 2] | 0, +(i12 | 0) == d14) : 0) ? (i12 | 0) > 0 : 0) ? (i13 = HEAP32[i5 + 28 >> 2] | 0, (i12 | 0) <= (i13 | 0)) : 0) { - i6 = i13; - i7 = i12 + -1 | 0; - break; - } - i10 = _mainposition(i5, i2) | 0; - while (1) { - i4 = i10 + 16 | 0; - i11 = i10 + 24 | 0; - i12 = HEAP32[i11 >> 2] | 0; - if ((i12 | 0) == (HEAP32[i3 >> 2] | 0)) { - if ((_luaV_equalobj_(0, i4, i2) | 0) != 0) { - i4 = 15; - break; - } - i12 = HEAP32[i11 >> 2] | 0; - } - if (((i12 | 0) == 11 ? (HEAP32[i3 >> 2] & 64 | 0) != 0 : 0) ? (HEAP32[i4 >> 2] | 0) == (HEAP32[i2 >> 2] | 0) : 0) { - i4 = 15; - break; - } - i10 = HEAP32[i10 + 28 >> 2] | 0; - if ((i10 | 0) == 0) { - i4 = 18; - break; - } - } - if ((i4 | 0) == 15) { - i7 = HEAP32[i5 + 28 >> 2] | 0; - i6 = i7; - i7 = (i10 - (HEAP32[i5 + 16 >> 2] | 0) >> 5) + i7 | 0; - break; - } else if ((i4 | 0) == 18) { - _luaG_runerror(i9, 8064, i8); - } - } else { - i6 = HEAP32[i5 + 28 >> 2] | 0; - i7 = -1; - } - } while (0); - i8 = i5 + 12 | 0; - while (1) { - i9 = i7 + 1 | 0; - if ((i9 | 0) >= (i6 | 0)) { - break; - } - i11 = HEAP32[i8 >> 2] | 0; - i10 = i11 + (i9 << 4) + 8 | 0; - if ((HEAP32[i10 >> 2] | 0) == 0) { - i7 = i9; - } else { - i4 = 21; - break; - } - } - if ((i4 | 0) == 21) { - HEAPF64[i2 >> 3] = +(i7 + 2 | 0); - HEAP32[i3 >> 2] = 3; - i11 = i11 + (i9 << 4) | 0; - i12 = HEAP32[i11 + 4 >> 2] | 0; - i13 = i2 + 16 | 0; - HEAP32[i13 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i13 + 4 >> 2] = i12; - HEAP32[i2 + 24 >> 2] = HEAP32[i10 >> 2]; - i13 = 1; - STACKTOP = i1; - return i13 | 0; - } - i8 = i9 - i6 | 0; - i6 = 1 << (HEAPU8[i5 + 7 | 0] | 0); - if ((i8 | 0) >= (i6 | 0)) { - i13 = 0; - STACKTOP = i1; - return i13 | 0; - } - i7 = i5 + 16 | 0; - i5 = HEAP32[i7 >> 2] | 0; - while (1) { - i9 = i8 + 1 | 0; - if ((HEAP32[i5 + (i8 << 5) + 8 >> 2] | 0) != 0) { - break; - } - if ((i9 | 0) < (i6 | 0)) { - i8 = i9; - } else { - i2 = 0; - i4 = 27; - break; - } - } - if ((i4 | 0) == 27) { - STACKTOP = i1; - return i2 | 0; - } - i11 = i5 + (i8 << 5) + 16 | 0; - i10 = HEAP32[i11 + 4 >> 2] | 0; - i13 = i2; - HEAP32[i13 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i13 + 4 >> 2] = i10; - HEAP32[i3 >> 2] = HEAP32[i5 + (i8 << 5) + 24 >> 2]; - i13 = HEAP32[i7 >> 2] | 0; - i10 = i13 + (i8 << 5) | 0; - i11 = HEAP32[i10 + 4 >> 2] | 0; - i12 = i2 + 16 | 0; - HEAP32[i12 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i12 + 4 >> 2] = i11; - HEAP32[i2 + 24 >> 2] = HEAP32[i13 + (i8 << 5) + 8 >> 2]; - i13 = 1; - STACKTOP = i1; - return i13 | 0; -} -function _g_read(i1, i3, i2) { - i1 = i1 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i7 = i4 + 8 | 0; - i9 = i4; - i10 = _lua_gettop(i1) | 0; - _clearerr(i3 | 0); - L1 : do { - if ((i10 | 0) == 1) { - i11 = i2 + 1 | 0; - i12 = _read_line(i1, i3, 1) | 0; - } else { - _luaL_checkstack(i1, i10 + 19 | 0, 3256); - i6 = i7 + 8 | 0; - i5 = i7 + 8 | 0; - i10 = i10 + -2 | 0; - i11 = i2; - L4 : while (1) { - do { - if ((_lua_type(i1, i11) | 0) == 3) { - i12 = _lua_tointegerx(i1, i11, 0) | 0; - if ((i12 | 0) == 0) { - i12 = _fgetc(i3 | 0) | 0; - _ungetc(i12 | 0, i3 | 0) | 0; - _lua_pushlstring(i1, 0, 0) | 0; - i12 = (i12 | 0) != -1 | 0; - break; - } else { - _luaL_buffinit(i1, i7); - i12 = _fread(_luaL_prepbuffsize(i7, i12) | 0, 1, i12 | 0, i3 | 0) | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i12; - _luaL_pushresult(i7); - i12 = (i12 | 0) != 0 | 0; - break; - } - } else { - i12 = _lua_tolstring(i1, i11, 0) | 0; - if (!((i12 | 0) != 0 ? (HEAP8[i12] | 0) == 42 : 0)) { - _luaL_argerror(i1, i11, 3280) | 0; - } - i12 = HEAP8[i12 + 1 | 0] | 0; - if ((i12 | 0) == 110) { - HEAP32[i7 >> 2] = i9; - if ((_fscanf(i3 | 0, 3312, i7 | 0) | 0) != 1) { - i8 = 14; - break L4; - } - _lua_pushnumber(i1, +HEAPF64[i9 >> 3]); - i12 = 1; - break; - } else if ((i12 | 0) == 108) { - i12 = _read_line(i1, i3, 1) | 0; - break; - } else if ((i12 | 0) == 76) { - i12 = _read_line(i1, i3, 0) | 0; - break; - } else if ((i12 | 0) == 97) { - _luaL_buffinit(i1, i7); - i12 = _fread(_luaL_prepbuffsize(i7, 1024) | 0, 1, 1024, i3 | 0) | 0; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + i12; - if (!(i12 >>> 0 < 1024)) { - i12 = 1024; - do { - i12 = i12 << (i12 >>> 0 < 1073741824); - i13 = _fread(_luaL_prepbuffsize(i7, i12) | 0, 1, i12 | 0, i3 | 0) | 0; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + i13; - } while (!(i13 >>> 0 < i12 >>> 0)); - } - _luaL_pushresult(i7); - i12 = 1; - break; - } else { - break L4; - } - } - } while (0); - i11 = i11 + 1 | 0; - if ((i10 | 0) == 0 | (i12 | 0) == 0) { - break L1; - } else { - i10 = i10 + -1 | 0; - } - } - if ((i8 | 0) == 14) { - _lua_pushnil(i1); - i11 = i11 + 1 | 0; - i12 = 0; - break; - } - i13 = _luaL_argerror(i1, i11, 3296) | 0; - STACKTOP = i4; - return i13 | 0; - } - } while (0); - if ((_ferror(i3 | 0) | 0) != 0) { - i13 = _luaL_fileresult(i1, 0, 0) | 0; - STACKTOP = i4; - return i13 | 0; - } - if ((i12 | 0) == 0) { - _lua_settop(i1, -2); - _lua_pushnil(i1); - } - i13 = i11 - i2 | 0; - STACKTOP = i4; - return i13 | 0; -} -function _luaY_parser(i8, i12, i10, i11, i9, i13) { - i8 = i8 | 0; - i12 = i12 | 0; - i10 = i10 | 0; - i11 = i11 | 0; - i9 = i9 | 0; - i13 = i13 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i14 = 0, i15 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 176 | 0; - i5 = i2 + 156 | 0; - i7 = i2 + 80 | 0; - i4 = i2; - i6 = i2 + 104 | 0; - i3 = _luaF_newLclosure(i8, 1) | 0; - i15 = i8 + 8 | 0; - i14 = HEAP32[i15 >> 2] | 0; - HEAP32[i14 >> 2] = i3; - HEAP32[i14 + 8 >> 2] = 70; - i14 = (HEAP32[i15 >> 2] | 0) + 16 | 0; - HEAP32[i15 >> 2] = i14; - if (((HEAP32[i8 + 24 >> 2] | 0) - i14 | 0) < 16) { - _luaD_growstack(i8, 0); - } - i14 = _luaF_newproto(i8) | 0; - HEAP32[i3 + 12 >> 2] = i14; - HEAP32[i6 >> 2] = i14; - i9 = _luaS_new(i8, i9) | 0; - HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] = i9; - HEAP32[i4 + 60 >> 2] = i10; - i9 = i4 + 64 | 0; - HEAP32[i9 >> 2] = i11; - HEAP32[i11 + 28 >> 2] = 0; - HEAP32[i11 + 16 >> 2] = 0; - HEAP32[i11 + 4 >> 2] = 0; - _luaX_setinput(i8, i4, i12, HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] | 0, i13); - i10 = HEAP32[i4 + 52 >> 2] | 0; - i13 = i4 + 48 | 0; - HEAP32[i6 + 8 >> 2] = HEAP32[i13 >> 2]; - i8 = i6 + 12 | 0; - HEAP32[i8 >> 2] = i4; - HEAP32[i13 >> 2] = i6; - HEAP32[i6 + 20 >> 2] = 0; - HEAP32[i6 + 24 >> 2] = 0; - HEAP32[i6 + 28 >> 2] = -1; - HEAP32[i6 + 32 >> 2] = 0; - HEAP32[i6 + 36 >> 2] = 0; - i13 = i6 + 44 | 0; - HEAP32[i13 + 0 >> 2] = 0; - HEAP8[i13 + 4 | 0] = 0; - HEAP32[i6 + 40 >> 2] = HEAP32[(HEAP32[i9 >> 2] | 0) + 4 >> 2]; - i9 = i6 + 16 | 0; - HEAP32[i9 >> 2] = 0; - i13 = HEAP32[i6 >> 2] | 0; - HEAP32[i13 + 36 >> 2] = HEAP32[i4 + 68 >> 2]; - HEAP8[i13 + 78 | 0] = 2; - i13 = _luaH_new(i10) | 0; - HEAP32[i6 + 4 >> 2] = i13; - i14 = i10 + 8 | 0; - i15 = HEAP32[i14 >> 2] | 0; - HEAP32[i15 >> 2] = i13; - HEAP32[i15 + 8 >> 2] = 69; - i15 = (HEAP32[i14 >> 2] | 0) + 16 | 0; - HEAP32[i14 >> 2] = i15; - if (((HEAP32[i10 + 24 >> 2] | 0) - i15 | 0) < 16) { - _luaD_growstack(i10, 0); - } - HEAP8[i5 + 10 | 0] = 0; - HEAP8[i5 + 8 | 0] = HEAP8[i6 + 46 | 0] | 0; - i15 = HEAP32[(HEAP32[i8 >> 2] | 0) + 64 >> 2] | 0; - HEAP16[i5 + 4 >> 1] = HEAP32[i15 + 28 >> 2]; - HEAP16[i5 + 6 >> 1] = HEAP32[i15 + 16 >> 2]; - HEAP8[i5 + 9 | 0] = 0; - HEAP32[i5 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i9 >> 2] = i5; - HEAP8[(HEAP32[i6 >> 2] | 0) + 77 | 0] = 1; - HEAP32[i7 + 16 >> 2] = -1; - HEAP32[i7 + 20 >> 2] = -1; - HEAP32[i7 >> 2] = 7; - HEAP32[i7 + 8 >> 2] = 0; - _newupvalue(i6, HEAP32[i4 + 72 >> 2] | 0, i7) | 0; - _luaX_next(i4); - i5 = i4 + 16 | 0; - L7 : while (1) { - i6 = HEAP32[i5 >> 2] | 0; - switch (i6 | 0) { - case 277: - case 286: - case 262: - case 261: - case 260: - { - break L7; - } - default: - {} - } - _statement(i4); - if ((i6 | 0) == 274) { - i1 = 8; - break; - } - } - if ((i1 | 0) == 8) { - i6 = HEAP32[i5 >> 2] | 0; - } - if ((i6 | 0) == 286) { - _close_func(i4); - STACKTOP = i2; - return i3 | 0; - } else { - _error_expected(i4, 286); - } - return 0; -} -function _luaV_lessthan(i5, i4, i2) { - i5 = i5 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i1 = STACKTOP; - i6 = i4 + 8 | 0; - i7 = HEAP32[i6 >> 2] | 0; - if ((i7 | 0) == 3) { - if ((HEAP32[i2 + 8 >> 2] | 0) == 3) { - i9 = +HEAPF64[i4 >> 3] < +HEAPF64[i2 >> 3] | 0; - STACKTOP = i1; - return i9 | 0; - } - } else { - if ((i7 & 15 | 0) == 4 ? (HEAP32[i2 + 8 >> 2] & 15 | 0) == 4 : 0) { - i6 = HEAP32[i4 >> 2] | 0; - i4 = HEAP32[i2 >> 2] | 0; - i3 = i6 + 16 | 0; - i5 = i4 + 16 | 0; - i7 = _strcmp(i3, i5) | 0; - L8 : do { - if ((i7 | 0) == 0) { - i2 = HEAP32[i6 + 12 >> 2] | 0; - i4 = HEAP32[i4 + 12 >> 2] | 0; - while (1) { - i7 = _strlen(i3 | 0) | 0; - i6 = (i7 | 0) == (i2 | 0); - if ((i7 | 0) == (i4 | 0)) { - break; - } - if (i6) { - i7 = -1; - break L8; - } - i6 = i7 + 1 | 0; - i3 = i3 + i6 | 0; - i5 = i5 + i6 | 0; - i7 = _strcmp(i3, i5) | 0; - if ((i7 | 0) == 0) { - i2 = i2 - i6 | 0; - i4 = i4 - i6 | 0; - } else { - break L8; - } - } - i7 = i6 & 1 ^ 1; - } - } while (0); - i9 = i7 >>> 31; - STACKTOP = i1; - return i9 | 0; - } - } - i8 = i5 + 8 | 0; - i7 = HEAP32[i8 >> 2] | 0; - i9 = _luaT_gettmbyobj(i5, i4, 13) | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) == 0) { - i9 = _luaT_gettmbyobj(i5, i2, 13) | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) == 0) { - _luaG_ordererror(i5, i4, i2); - } else { - i3 = i9; - } - } else { - i3 = i9; - } - i10 = i5 + 28 | 0; - i9 = i7 - (HEAP32[i10 >> 2] | 0) | 0; - i11 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i11 + 16; - i13 = i3; - i12 = HEAP32[i13 + 4 >> 2] | 0; - i7 = i11; - HEAP32[i7 >> 2] = HEAP32[i13 >> 2]; - HEAP32[i7 + 4 >> 2] = i12; - HEAP32[i11 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - i3 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i3 + 16; - i11 = i4; - i7 = HEAP32[i11 + 4 >> 2] | 0; - i4 = i3; - HEAP32[i4 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i4 + 4 >> 2] = i7; - HEAP32[i3 + 8 >> 2] = HEAP32[i6 >> 2]; - i3 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i3 + 16; - i4 = i2; - i7 = HEAP32[i4 + 4 >> 2] | 0; - i6 = i3; - HEAP32[i6 >> 2] = HEAP32[i4 >> 2]; - HEAP32[i6 + 4 >> 2] = i7; - HEAP32[i3 + 8 >> 2] = HEAP32[i2 + 8 >> 2]; - _luaD_call(i5, (HEAP32[i8 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i5 + 16 >> 2] | 0) + 18 | 0] & 1); - i2 = HEAP32[i10 >> 2] | 0; - i3 = HEAP32[i8 >> 2] | 0; - i5 = i3 + -16 | 0; - HEAP32[i8 >> 2] = i5; - i6 = HEAP32[i5 + 4 >> 2] | 0; - i7 = i2 + i9 | 0; - HEAP32[i7 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i7 + 4 >> 2] = i6; - HEAP32[i2 + (i9 + 8) >> 2] = HEAP32[i3 + -8 >> 2]; - i2 = HEAP32[i8 >> 2] | 0; - i3 = HEAP32[i2 + 8 >> 2] | 0; - if ((i3 | 0) != 0) { - if ((i3 | 0) == 1) { - i2 = (HEAP32[i2 >> 2] | 0) != 0; - } else { - i2 = 1; - } - } else { - i2 = 0; - } - i13 = i2 & 1; - STACKTOP = i1; - return i13 | 0; -} -function _discharge2reg(i4, i3, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, d11 = 0.0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i9 = i2 + 16 | 0; - i8 = i2; - _luaK_dischargevars(i4, i3); - i10 = HEAP32[i3 >> 2] | 0; - L1 : do { - switch (i10 | 0) { - case 5: - { - d11 = +HEAPF64[i3 + 8 >> 3]; - HEAPF64[i9 >> 3] = d11; - i5 = HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 52 >> 2] | 0; - HEAPF64[i8 >> 3] = d11; - HEAP32[i8 + 8 >> 2] = 3; - if (d11 != d11 | 0.0 != 0.0 | d11 == 0.0) { - i10 = i5 + 8 | 0; - i7 = HEAP32[i10 >> 2] | 0; - HEAP32[i10 >> 2] = i7 + 16; - i5 = _luaS_newlstr(i5, i9, 8) | 0; - HEAP32[i7 >> 2] = i5; - HEAP32[i7 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 0 | 64; - i5 = _addk(i4, (HEAP32[i10 >> 2] | 0) + -16 | 0, i8) | 0; - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -16; - } else { - i5 = _addk(i4, i8, i8) | 0; - } - i6 = i1 << 6; - if ((i5 | 0) < 262144) { - _luaK_code(i4, i6 | i5 << 14 | 1) | 0; - break L1; - } else { - _luaK_code(i4, i6 | 2) | 0; - _luaK_code(i4, i5 << 6 | 39) | 0; - break L1; - } - } - case 2: - case 3: - { - _luaK_code(i4, i1 << 6 | ((i10 | 0) == 2) << 23 | 3) | 0; - break; - } - case 4: - { - i6 = HEAP32[i3 + 8 >> 2] | 0; - i5 = i1 << 6; - if ((i6 | 0) < 262144) { - _luaK_code(i4, i5 | i6 << 14 | 1) | 0; - break L1; - } else { - _luaK_code(i4, i5 | 2) | 0; - _luaK_code(i4, i6 << 6 | 39) | 0; - break L1; - } - } - case 1: - { - i9 = i1 + 1 | 0; - i8 = HEAP32[i4 + 20 >> 2] | 0; - do { - if ((i8 | 0) > (HEAP32[i4 + 24 >> 2] | 0) ? (i5 = (HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0) + (i8 + -1 << 2) | 0, i6 = HEAP32[i5 >> 2] | 0, (i6 & 63 | 0) == 4) : 0) { - i10 = i6 >>> 6 & 255; - i8 = i10 + (i6 >>> 23) | 0; - if (!((i10 | 0) <= (i1 | 0) ? (i8 + 1 | 0) >= (i1 | 0) : 0)) { - i7 = 6; - } - if ((i7 | 0) == 6 ? (i10 | 0) < (i1 | 0) | (i10 | 0) > (i9 | 0) : 0) { - break; - } - i4 = (i10 | 0) < (i1 | 0) ? i10 : i1; - HEAP32[i5 >> 2] = i4 << 6 & 16320 | i6 & 8372287 | ((i8 | 0) > (i1 | 0) ? i8 : i1) - i4 << 23; - break L1; - } - } while (0); - _luaK_code(i4, i1 << 6 | 4) | 0; - break; - } - case 6: - { - i5 = HEAP32[i3 + 8 >> 2] | 0; - if ((i5 | 0) != (i1 | 0)) { - _luaK_code(i4, i5 << 23 | i1 << 6) | 0; - } - break; - } - case 11: - { - i10 = (HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i3 + 8 >> 2] << 2) | 0; - HEAP32[i10 >> 2] = HEAP32[i10 >> 2] & -16321 | i1 << 6 & 16320; - break; - } - default: - { - STACKTOP = i2; - return; - } - } - } while (0); - HEAP32[i3 + 8 >> 2] = i1; - HEAP32[i3 >> 2] = 6; - STACKTOP = i2; - return; -} -function _unroll(i3, i4) { - i3 = i3 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0; - i9 = STACKTOP; - i11 = i3 + 16 | 0; - i13 = HEAP32[i11 >> 2] | 0; - i5 = i3 + 72 | 0; - if ((i13 | 0) == (i5 | 0)) { - STACKTOP = i9; - return; - } - i6 = i3 + 8 | 0; - i10 = i3 + 40 | 0; - i7 = i3 + 20 | 0; - i8 = i3 + 28 | 0; - i4 = i3 + 68 | 0; - do { - i12 = i13 + 18 | 0; - i14 = HEAP8[i12] | 0; - if ((i14 & 1) == 0) { - i14 = i14 & 255; - if ((i14 & 16 | 0) != 0) { - HEAP8[i12] = i14 & 239; - HEAP32[i4 >> 2] = HEAP32[i13 + 32 >> 2]; - } - if ((HEAP16[i13 + 16 >> 1] | 0) == -1 ? (i2 = (HEAP32[i11 >> 2] | 0) + 4 | 0, i1 = HEAP32[i6 >> 2] | 0, (HEAP32[i2 >> 2] | 0) >>> 0 < i1 >>> 0) : 0) { - HEAP32[i2 >> 2] = i1; - } - i14 = HEAP8[i12] | 0; - if ((i14 & 32) == 0) { - HEAP8[i13 + 37 | 0] = 1; - } - HEAP8[i12] = i14 & 199 | 8; - i14 = FUNCTION_TABLE_ii[HEAP32[i13 + 28 >> 2] & 255](i3) | 0; - i14 = (HEAP32[i6 >> 2] | 0) + (0 - i14 << 4) | 0; - i13 = HEAP32[i11 >> 2] | 0; - i12 = HEAPU8[i10] | 0; - if ((i12 & 6 | 0) == 0) { - i15 = i13 + 8 | 0; - } else { - if ((i12 & 2 | 0) != 0) { - i14 = i14 - (HEAP32[i8 >> 2] | 0) | 0; - _luaD_hook(i3, 1, -1); - i14 = (HEAP32[i8 >> 2] | 0) + i14 | 0; - } - i15 = i13 + 8 | 0; - HEAP32[i7 >> 2] = HEAP32[(HEAP32[i15 >> 2] | 0) + 28 >> 2]; - } - i12 = HEAP32[i13 >> 2] | 0; - i13 = HEAP16[i13 + 16 >> 1] | 0; - HEAP32[i11 >> 2] = HEAP32[i15 >> 2]; - L25 : do { - if (!(i13 << 16 >> 16 == 0)) { - i15 = i13 << 16 >> 16; - if (i14 >>> 0 < (HEAP32[i6 >> 2] | 0) >>> 0) { - i13 = i14; - i14 = i15; - i15 = i12; - while (1) { - i12 = i15 + 16 | 0; - i18 = i13; - i17 = HEAP32[i18 + 4 >> 2] | 0; - i16 = i15; - HEAP32[i16 >> 2] = HEAP32[i18 >> 2]; - HEAP32[i16 + 4 >> 2] = i17; - HEAP32[i15 + 8 >> 2] = HEAP32[i13 + 8 >> 2]; - i14 = i14 + -1 | 0; - i13 = i13 + 16 | 0; - if ((i14 | 0) == 0) { - break L25; - } - if (i13 >>> 0 < (HEAP32[i6 >> 2] | 0) >>> 0) { - i15 = i12; - } else { - i13 = i14; - break; - } - } - } else { - i13 = i15; - } - if ((i13 | 0) > 0) { - i14 = i13; - i15 = i12; - while (1) { - i14 = i14 + -1 | 0; - HEAP32[i15 + 8 >> 2] = 0; - if ((i14 | 0) <= 0) { - break; - } else { - i15 = i15 + 16 | 0; - } - } - i12 = i12 + (i13 << 4) | 0; - } - } - } while (0); - HEAP32[i6 >> 2] = i12; - } else { - _luaV_finishOp(i3); - _luaV_execute(i3); - } - i13 = HEAP32[i11 >> 2] | 0; - } while ((i13 | 0) != (i5 | 0)); - STACKTOP = i9; - return; -} -function _traverseephemeron(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0; - i3 = STACKTOP; - i11 = i2 + 16 | 0; - i9 = HEAP32[i11 >> 2] | 0; - i5 = i9 + (1 << (HEAPU8[i2 + 7 | 0] | 0) << 5) | 0; - i10 = i2 + 28 | 0; - i13 = HEAP32[i10 >> 2] | 0; - if ((i13 | 0) > 0) { - i9 = i2 + 12 | 0; - i12 = 0; - i8 = 0; - do { - i14 = HEAP32[i9 >> 2] | 0; - if ((HEAP32[i14 + (i12 << 4) + 8 >> 2] & 64 | 0) != 0 ? (i7 = HEAP32[i14 + (i12 << 4) >> 2] | 0, !((HEAP8[i7 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i1, i7); - i13 = HEAP32[i10 >> 2] | 0; - i8 = 1; - } - i12 = i12 + 1 | 0; - } while ((i12 | 0) < (i13 | 0)); - i9 = HEAP32[i11 >> 2] | 0; - } else { - i8 = 0; - } - if (i9 >>> 0 < i5 >>> 0) { - i7 = 0; - i10 = 0; - do { - i11 = i9 + 8 | 0; - i12 = HEAP32[i11 >> 2] | 0; - i14 = i9 + 24 | 0; - i13 = HEAP32[i14 >> 2] | 0; - i15 = (i13 & 64 | 0) == 0; - L14 : do { - if ((i12 | 0) == 0) { - if (!i15 ? !((HEAP8[(HEAP32[i9 + 16 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) { - HEAP32[i14 >> 2] = 11; - } - } else { - do { - if (i15) { - i6 = i12; - i4 = 18; - } else { - i14 = HEAP32[i9 + 16 >> 2] | 0; - if ((i13 & 15 | 0) == 4) { - if ((i14 | 0) == 0) { - i6 = i12; - i4 = 18; - break; - } - if ((HEAP8[i14 + 5 | 0] & 3) == 0) { - i6 = i12; - i4 = 18; - break; - } - _reallymarkobject(i1, i14); - i6 = HEAP32[i11 >> 2] | 0; - i4 = 18; - break; - } - i11 = (i12 & 64 | 0) == 0; - if ((HEAP8[i14 + 5 | 0] & 3) == 0) { - if (i11) { - break L14; - } else { - break; - } - } - if (i11) { - i7 = 1; - break L14; - } - i7 = 1; - i10 = (HEAP8[(HEAP32[i9 >> 2] | 0) + 5 | 0] & 3) == 0 ? i10 : 1; - break L14; - } - } while (0); - if ((i4 | 0) == 18 ? (i4 = 0, (i6 & 64 | 0) == 0) : 0) { - break; - } - i11 = HEAP32[i9 >> 2] | 0; - if (!((HEAP8[i11 + 5 | 0] & 3) == 0)) { - _reallymarkobject(i1, i11); - i8 = 1; - } - } - } while (0); - i9 = i9 + 32 | 0; - } while (i9 >>> 0 < i5 >>> 0); - if ((i10 | 0) != 0) { - i15 = i1 + 96 | 0; - HEAP32[i2 + 24 >> 2] = HEAP32[i15 >> 2]; - HEAP32[i15 >> 2] = i2; - i15 = i8; - STACKTOP = i3; - return i15 | 0; - } - if ((i7 | 0) != 0) { - i15 = i1 + 100 | 0; - HEAP32[i2 + 24 >> 2] = HEAP32[i15 >> 2]; - HEAP32[i15 >> 2] = i2; - i15 = i8; - STACKTOP = i3; - return i15 | 0; - } - } - i15 = i1 + 88 | 0; - HEAP32[i2 + 24 >> 2] = HEAP32[i15 >> 2]; - HEAP32[i15 >> 2] = i2; - i15 = i8; - STACKTOP = i3; - return i15 | 0; -} -function _luaV_gettable(i2, i7, i5, i1) { - i2 = i2 | 0; - i7 = i7 | 0; - i5 = i5 | 0; - i1 = i1 | 0; - var i3 = 0, i4 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i6; - i8 = i2 + 12 | 0; - i3 = i7; - i10 = HEAP32[i7 + 8 >> 2] | 0; - i9 = 0; - while (1) { - i7 = i3 + 8 | 0; - if ((i10 | 0) != 69) { - i12 = _luaT_gettmbyobj(i2, i3, 0) | 0; - i10 = HEAP32[i12 + 8 >> 2] | 0; - if ((i10 | 0) == 0) { - i8 = 11; - break; - } - } else { - i12 = HEAP32[i3 >> 2] | 0; - i11 = _luaH_get(i12, i5) | 0; - i10 = i11 + 8 | 0; - if ((HEAP32[i10 >> 2] | 0) != 0) { - i8 = 9; - break; - } - i12 = HEAP32[i12 + 8 >> 2] | 0; - if ((i12 | 0) == 0) { - i8 = 9; - break; - } - if (!((HEAP8[i12 + 6 | 0] & 1) == 0)) { - i8 = 9; - break; - } - i12 = _luaT_gettm(i12, 0, HEAP32[(HEAP32[i8 >> 2] | 0) + 184 >> 2] | 0) | 0; - if ((i12 | 0) == 0) { - i8 = 9; - break; - } - i10 = HEAP32[i12 + 8 >> 2] | 0; - } - i9 = i9 + 1 | 0; - if ((i10 & 15 | 0) == 6) { - i8 = 13; - break; - } - if ((i9 | 0) < 100) { - i3 = i12; - } else { - i8 = 14; - break; - } - } - if ((i8 | 0) == 9) { - i9 = i11; - i11 = HEAP32[i9 + 4 >> 2] | 0; - i12 = i1; - HEAP32[i12 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i12 + 4 >> 2] = i11; - HEAP32[i1 + 8 >> 2] = HEAP32[i10 >> 2]; - STACKTOP = i6; - return; - } else if ((i8 | 0) == 11) { - _luaG_typeerror(i2, i3, 8944); - } else if ((i8 | 0) == 13) { - i10 = i2 + 28 | 0; - i11 = i1 - (HEAP32[i10 >> 2] | 0) | 0; - i8 = i2 + 8 | 0; - i9 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i9 + 16; - i13 = i12; - i1 = HEAP32[i13 + 4 >> 2] | 0; - i4 = i9; - HEAP32[i4 >> 2] = HEAP32[i13 >> 2]; - HEAP32[i4 + 4 >> 2] = i1; - HEAP32[i9 + 8 >> 2] = HEAP32[i12 + 8 >> 2]; - i12 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i12 + 16; - i9 = HEAP32[i3 + 4 >> 2] | 0; - i4 = i12; - HEAP32[i4 >> 2] = HEAP32[i3 >> 2]; - HEAP32[i4 + 4 >> 2] = i9; - HEAP32[i12 + 8 >> 2] = HEAP32[i7 >> 2]; - i12 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i12 + 16; - i4 = i5; - i9 = HEAP32[i4 + 4 >> 2] | 0; - i7 = i12; - HEAP32[i7 >> 2] = HEAP32[i4 >> 2]; - HEAP32[i7 + 4 >> 2] = i9; - HEAP32[i12 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - _luaD_call(i2, (HEAP32[i8 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i2 + 16 >> 2] | 0) + 18 | 0] & 1); - i12 = HEAP32[i10 >> 2] | 0; - i10 = HEAP32[i8 >> 2] | 0; - i7 = i10 + -16 | 0; - HEAP32[i8 >> 2] = i7; - i8 = HEAP32[i7 + 4 >> 2] | 0; - i9 = i12 + i11 | 0; - HEAP32[i9 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i9 + 4 >> 2] = i8; - HEAP32[i12 + (i11 + 8) >> 2] = HEAP32[i10 + -8 >> 2]; - STACKTOP = i6; - return; - } else if ((i8 | 0) == 14) { - _luaG_runerror(i2, 8952, i4); - } -} -function _db_getinfo(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i3 = i2; - if ((_lua_type(i1, 1) | 0) == 8) { - i4 = _lua_tothread(i1, 1) | 0; - i7 = 1; - } else { - i4 = i1; - i7 = 0; - } - i5 = i7 | 2; - i6 = _luaL_optlstring(i1, i5, 11784, 0) | 0; - i7 = i7 + 1 | 0; - do { - if ((_lua_isnumber(i1, i7) | 0) != 0) { - if ((_lua_getstack(i4, _lua_tointegerx(i1, i7, 0) | 0, i3) | 0) == 0) { - _lua_pushnil(i1); - i7 = 1; - STACKTOP = i2; - return i7 | 0; - } - } else { - if ((_lua_type(i1, i7) | 0) == 6) { - HEAP32[i3 >> 2] = i6; - _lua_pushfstring(i1, 11792, i3) | 0; - i6 = _lua_tolstring(i1, -1, 0) | 0; - _lua_pushvalue(i1, i7); - _lua_xmove(i1, i4, 1); - break; - } - i7 = _luaL_argerror(i1, i7, 11800) | 0; - STACKTOP = i2; - return i7 | 0; - } - } while (0); - if ((_lua_getinfo(i4, i6, i3) | 0) == 0) { - i7 = _luaL_argerror(i1, i5, 11832) | 0; - STACKTOP = i2; - return i7 | 0; - } - _lua_createtable(i1, 0, 2); - if ((_strchr(i6, 83) | 0) != 0) { - _lua_pushstring(i1, HEAP32[i3 + 16 >> 2] | 0) | 0; - _lua_setfield(i1, -2, 11848); - _lua_pushstring(i1, i3 + 36 | 0) | 0; - _lua_setfield(i1, -2, 11856); - _lua_pushinteger(i1, HEAP32[i3 + 24 >> 2] | 0); - _lua_setfield(i1, -2, 11872); - _lua_pushinteger(i1, HEAP32[i3 + 28 >> 2] | 0); - _lua_setfield(i1, -2, 11888); - _lua_pushstring(i1, HEAP32[i3 + 12 >> 2] | 0) | 0; - _lua_setfield(i1, -2, 11904); - } - if ((_strchr(i6, 108) | 0) != 0) { - _lua_pushinteger(i1, HEAP32[i3 + 20 >> 2] | 0); - _lua_setfield(i1, -2, 11912); - } - if ((_strchr(i6, 117) | 0) != 0) { - _lua_pushinteger(i1, HEAPU8[i3 + 32 | 0] | 0); - _lua_setfield(i1, -2, 11928); - _lua_pushinteger(i1, HEAPU8[i3 + 33 | 0] | 0); - _lua_setfield(i1, -2, 11936); - _lua_pushboolean(i1, HEAP8[i3 + 34 | 0] | 0); - _lua_setfield(i1, -2, 11944); - } - if ((_strchr(i6, 110) | 0) != 0) { - _lua_pushstring(i1, HEAP32[i3 + 4 >> 2] | 0) | 0; - _lua_setfield(i1, -2, 11960); - _lua_pushstring(i1, HEAP32[i3 + 8 >> 2] | 0) | 0; - _lua_setfield(i1, -2, 11968); - } - if ((_strchr(i6, 116) | 0) != 0) { - _lua_pushboolean(i1, HEAP8[i3 + 35 | 0] | 0); - _lua_setfield(i1, -2, 11984); - } - if ((_strchr(i6, 76) | 0) != 0) { - if ((i4 | 0) == (i1 | 0)) { - _lua_pushvalue(i1, -2); - _lua_remove(i1, -3); - } else { - _lua_xmove(i4, i1, 1); - } - _lua_setfield(i1, -2, 12e3); - } - if ((_strchr(i6, 102) | 0) == 0) { - i7 = 1; - STACKTOP = i2; - return i7 | 0; - } - if ((i4 | 0) == (i1 | 0)) { - _lua_pushvalue(i1, -2); - _lua_remove(i1, -3); - } else { - _lua_xmove(i4, i1, 1); - } - _lua_setfield(i1, -2, 12016); - i7 = 1; - STACKTOP = i2; - return i7 | 0; -} -function _luaL_traceback(i4, i1, i9, i7) { - i4 = i4 | 0; - i1 = i1 | 0; - i9 = i9 | 0; - i7 = i7 | 0; - var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 208 | 0; - i6 = i3; - i5 = i3 + 100 | 0; - i2 = _lua_gettop(i4) | 0; - i8 = 1; - i10 = 1; - while (1) { - if ((_lua_getstack(i1, i8, i6) | 0) == 0) { - break; - } else { - i10 = i8; - i8 = i8 << 1; - } - } - if ((i10 | 0) < (i8 | 0)) { - while (1) { - i11 = (i8 + i10 | 0) / 2 | 0; - i12 = (_lua_getstack(i1, i11, i6) | 0) == 0; - i8 = i12 ? i11 : i8; - i10 = i12 ? i10 : i11 + 1 | 0; - if ((i10 | 0) >= (i8 | 0)) { - i10 = i8; - break; - } - } - } else { - i10 = i8; - } - i8 = (i10 + -1 | 0) > 22 ? 12 : 0; - if ((i9 | 0) != 0) { - HEAP32[i6 >> 2] = i9; - _lua_pushfstring(i4, 944, i6) | 0; - } - _lua_pushlstring(i4, 952, 16) | 0; - if ((_lua_getstack(i1, i7, i5) | 0) == 0) { - i17 = _lua_gettop(i4) | 0; - i17 = i17 - i2 | 0; - _lua_concat(i4, i17); - STACKTOP = i3; - return; - } - i10 = i10 + -11 | 0; - i13 = i5 + 36 | 0; - i9 = i5 + 20 | 0; - i16 = i5 + 8 | 0; - i12 = i5 + 12 | 0; - i15 = i5 + 24 | 0; - i14 = i5 + 35 | 0; - i11 = i5 + 4 | 0; - do { - i7 = i7 + 1 | 0; - if ((i7 | 0) == (i8 | 0)) { - _lua_pushlstring(i4, 976, 5) | 0; - i7 = i10; - } else { - _lua_getinfo(i1, 984, i5) | 0; - HEAP32[i6 >> 2] = i13; - _lua_pushfstring(i4, 992, i6) | 0; - i17 = HEAP32[i9 >> 2] | 0; - if ((i17 | 0) > 0) { - HEAP32[i6 >> 2] = i17; - _lua_pushfstring(i4, 1e3, i6) | 0; - } - _lua_pushlstring(i4, 1008, 4) | 0; - do { - if ((HEAP8[HEAP32[i16 >> 2] | 0] | 0) == 0) { - i17 = HEAP8[HEAP32[i12 >> 2] | 0] | 0; - if (i17 << 24 >> 24 == 109) { - _lua_pushlstring(i4, 1800, 10) | 0; - break; - } else if (i17 << 24 >> 24 == 67) { - if ((_pushglobalfuncname(i4, i5) | 0) == 0) { - _lua_pushlstring(i4, 1112, 1) | 0; - break; - } else { - HEAP32[i6 >> 2] = _lua_tolstring(i4, -1, 0) | 0; - _lua_pushfstring(i4, 1784, i6) | 0; - _lua_remove(i4, -2); - break; - } - } else { - i17 = HEAP32[i15 >> 2] | 0; - HEAP32[i6 >> 2] = i13; - HEAP32[i6 + 4 >> 2] = i17; - _lua_pushfstring(i4, 1816, i6) | 0; - break; - } - } else { - HEAP32[i6 >> 2] = HEAP32[i11 >> 2]; - _lua_pushfstring(i4, 1784, i6) | 0; - } - } while (0); - if ((HEAP8[i14] | 0) != 0) { - _lua_pushlstring(i4, 1016, 20) | 0; - } - _lua_concat(i4, (_lua_gettop(i4) | 0) - i2 | 0); - } - } while ((_lua_getstack(i1, i7, i5) | 0) != 0); - i17 = _lua_gettop(i4) | 0; - i17 = i17 - i2 | 0; - _lua_concat(i4, i17); - STACKTOP = i3; - return; -} -function _luaK_exp2RK(i3, i1) { - i3 = i3 | 0; - i1 = i1 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, d11 = 0.0, i12 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i7 = i2 + 16 | 0; - i6 = i2; - i4 = i1 + 16 | 0; - i5 = i1 + 20 | 0; - i10 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0); - _luaK_dischargevars(i3, i1); - do { - if (!i10) { - if ((HEAP32[i1 >> 2] | 0) == 6) { - i10 = HEAP32[i1 + 8 >> 2] | 0; - if ((HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0)) { - break; - } - if ((i10 | 0) >= (HEAPU8[i3 + 46 | 0] | 0 | 0)) { - _exp2reg(i3, i1, i10); - break; - } - } - _luaK_exp2nextreg(i3, i1); - } - } while (0); - i10 = HEAP32[i1 >> 2] | 0; - switch (i10 | 0) { - case 4: - { - i8 = HEAP32[i1 + 8 >> 2] | 0; - i9 = 18; - break; - } - case 1: - case 3: - case 2: - { - if ((HEAP32[i3 + 32 >> 2] | 0) < 256) { - if ((i10 | 0) == 1) { - HEAP32[i6 + 8 >> 2] = 0; - HEAP32[i7 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i7 + 8 >> 2] = 69; - i3 = _addk(i3, i7, i6) | 0; - } else { - HEAP32[i7 >> 2] = (i10 | 0) == 2; - HEAP32[i7 + 8 >> 2] = 1; - i3 = _addk(i3, i7, i7) | 0; - } - HEAP32[i1 + 8 >> 2] = i3; - HEAP32[i1 >> 2] = 4; - i10 = i3 | 256; - STACKTOP = i2; - return i10 | 0; - } - break; - } - case 5: - { - i9 = i1 + 8 | 0; - d11 = +HEAPF64[i9 >> 3]; - HEAPF64[i7 >> 3] = d11; - i8 = HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 52 >> 2] | 0; - HEAPF64[i6 >> 3] = d11; - HEAP32[i6 + 8 >> 2] = 3; - if (d11 != d11 | 0.0 != 0.0 | d11 == 0.0) { - i10 = i8 + 8 | 0; - i12 = HEAP32[i10 >> 2] | 0; - HEAP32[i10 >> 2] = i12 + 16; - i8 = _luaS_newlstr(i8, i7, 8) | 0; - HEAP32[i12 >> 2] = i8; - HEAP32[i12 + 8 >> 2] = HEAPU8[i8 + 4 | 0] | 0 | 64; - i8 = _addk(i3, (HEAP32[i10 >> 2] | 0) + -16 | 0, i6) | 0; - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -16; - } else { - i8 = _addk(i3, i6, i6) | 0; - } - HEAP32[i9 >> 2] = i8; - HEAP32[i1 >> 2] = 4; - i9 = 18; - break; - } - default: - {} - } - if ((i9 | 0) == 18 ? (i8 | 0) < 256 : 0) { - i12 = i8 | 256; - STACKTOP = i2; - return i12 | 0; - } - _luaK_dischargevars(i3, i1); - if ((HEAP32[i1 >> 2] | 0) == 6) { - i7 = i1 + 8 | 0; - i6 = HEAP32[i7 >> 2] | 0; - if ((HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0)) { - i12 = i6; - STACKTOP = i2; - return i12 | 0; - } - if ((i6 | 0) >= (HEAPU8[i3 + 46 | 0] | 0 | 0)) { - _exp2reg(i3, i1, i6); - i12 = HEAP32[i7 >> 2] | 0; - STACKTOP = i2; - return i12 | 0; - } - } else { - i7 = i1 + 8 | 0; - } - _luaK_exp2nextreg(i3, i1); - i12 = HEAP32[i7 >> 2] | 0; - STACKTOP = i2; - return i12 | 0; -} -function _os_date(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 1264 | 0; - i4 = i2; - i7 = i2 + 1048 | 0; - i6 = i2 + 1256 | 0; - i3 = i2 + 8 | 0; - i5 = i2 + 1056 | 0; - i12 = _luaL_optlstring(i1, 1, 6064, 0) | 0; - if ((_lua_type(i1, 2) | 0) < 1) { - i8 = _time(0) | 0; - } else { - i8 = ~~+_luaL_checknumber(i1, 2); - } - HEAP32[i7 >> 2] = i8; - if ((HEAP8[i12] | 0) == 33) { - i12 = i12 + 1 | 0; - i10 = _gmtime(i7 | 0) | 0; - } else { - i10 = _localtime(i7 | 0) | 0; - } - if ((i10 | 0) == 0) { - _lua_pushnil(i1); - STACKTOP = i2; - return 1; - } - if ((_strcmp(i12, 6072) | 0) == 0) { - _lua_createtable(i1, 0, 9); - _lua_pushinteger(i1, HEAP32[i10 >> 2] | 0); - _lua_setfield(i1, -2, 5864); - _lua_pushinteger(i1, HEAP32[i10 + 4 >> 2] | 0); - _lua_setfield(i1, -2, 5872); - _lua_pushinteger(i1, HEAP32[i10 + 8 >> 2] | 0); - _lua_setfield(i1, -2, 5880); - _lua_pushinteger(i1, HEAP32[i10 + 12 >> 2] | 0); - _lua_setfield(i1, -2, 5888); - _lua_pushinteger(i1, (HEAP32[i10 + 16 >> 2] | 0) + 1 | 0); - _lua_setfield(i1, -2, 5896); - _lua_pushinteger(i1, (HEAP32[i10 + 20 >> 2] | 0) + 1900 | 0); - _lua_setfield(i1, -2, 5904); - _lua_pushinteger(i1, (HEAP32[i10 + 24 >> 2] | 0) + 1 | 0); - _lua_setfield(i1, -2, 6080); - _lua_pushinteger(i1, (HEAP32[i10 + 28 >> 2] | 0) + 1 | 0); - _lua_setfield(i1, -2, 6088); - i3 = HEAP32[i10 + 32 >> 2] | 0; - if ((i3 | 0) < 0) { - STACKTOP = i2; - return 1; - } - _lua_pushboolean(i1, i3); - _lua_setfield(i1, -2, 5912); - STACKTOP = i2; - return 1; - } - HEAP8[i6] = 37; - _luaL_buffinit(i1, i3); - i11 = i3 + 8 | 0; - i9 = i3 + 4 | 0; - i8 = i6 + 1 | 0; - i7 = i6 + 2 | 0; - while (1) { - i14 = HEAP8[i12] | 0; - if (i14 << 24 >> 24 == 0) { - break; - } else if (!(i14 << 24 >> 24 == 37)) { - i13 = HEAP32[i11 >> 2] | 0; - if (!(i13 >>> 0 < (HEAP32[i9 >> 2] | 0) >>> 0)) { - _luaL_prepbuffsize(i3, 1) | 0; - i13 = HEAP32[i11 >> 2] | 0; - i14 = HEAP8[i12] | 0; - } - HEAP32[i11 >> 2] = i13 + 1; - HEAP8[(HEAP32[i3 >> 2] | 0) + i13 | 0] = i14; - i12 = i12 + 1 | 0; - continue; - } - i13 = i12 + 1 | 0; - i12 = i12 + 2 | 0; - i14 = HEAP8[i13] | 0; - if (!(i14 << 24 >> 24 == 0) ? (_memchr(6096, i14 << 24 >> 24, 23) | 0) != 0 : 0) { - HEAP8[i8] = i14; - HEAP8[i7] = 0; - } else { - HEAP32[i4 >> 2] = i13; - _luaL_argerror(i1, 1, _lua_pushfstring(i1, 6120, i4) | 0) | 0; - i12 = i13; - } - _luaL_addlstring(i3, i5, _strftime(i5 | 0, 200, i6 | 0, i10 | 0) | 0); - } - _luaL_pushresult(i3); - STACKTOP = i2; - return 1; -} -function _luaV_finishOp(i3) { - i3 = i3 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0; - i1 = STACKTOP; - i8 = HEAP32[i3 + 16 >> 2] | 0; - i7 = i8 + 24 | 0; - i4 = HEAP32[i7 >> 2] | 0; - i5 = i8 + 28 | 0; - i2 = HEAP32[(HEAP32[i5 >> 2] | 0) + -4 >> 2] | 0; - i6 = i2 & 63; - switch (i6 | 0) { - case 34: - { - HEAP32[i3 + 8 >> 2] = HEAP32[i8 + 4 >> 2]; - STACKTOP = i1; - return; - } - case 24: - case 25: - case 26: - { - i7 = i3 + 8 | 0; - i8 = HEAP32[i7 >> 2] | 0; - i9 = HEAP32[i8 + -8 >> 2] | 0; - if ((i9 | 0) != 0) { - if ((i9 | 0) == 1) { - i9 = (HEAP32[i8 + -16 >> 2] | 0) == 0; - } else { - i9 = 0; - } - } else { - i9 = 1; - } - i9 = i9 & 1; - i10 = i9 ^ 1; - HEAP32[i7 >> 2] = i8 + -16; - if ((i6 | 0) == 26) { - i8 = (HEAP32[(_luaT_gettmbyobj(i3, i4 + (i2 >>> 23 << 4) | 0, 14) | 0) + 8 >> 2] | 0) == 0; - i10 = i8 ? i9 : i10; - } - if ((i10 | 0) == (i2 >>> 6 & 255 | 0)) { - STACKTOP = i1; - return; - } - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 4; - STACKTOP = i1; - return; - } - case 22: - { - i5 = i3 + 8 | 0; - i10 = HEAP32[i5 >> 2] | 0; - i6 = i10 + -32 | 0; - i4 = i6 - (i4 + (i2 >>> 23 << 4)) | 0; - i12 = i10 + -16 | 0; - i11 = HEAP32[i12 + 4 >> 2] | 0; - i9 = i10 + -48 | 0; - HEAP32[i9 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i9 + 4 >> 2] = i11; - HEAP32[i10 + -40 >> 2] = HEAP32[i10 + -8 >> 2]; - if ((i4 | 0) > 16) { - HEAP32[i5 >> 2] = i6; - _luaV_concat(i3, i4 >> 4); - } - i10 = HEAP32[i5 >> 2] | 0; - i11 = HEAP32[i7 >> 2] | 0; - i12 = i2 >>> 6 & 255; - i6 = i10 + -16 | 0; - i7 = HEAP32[i6 + 4 >> 2] | 0; - i9 = i11 + (i12 << 4) | 0; - HEAP32[i9 >> 2] = HEAP32[i6 >> 2]; - HEAP32[i9 + 4 >> 2] = i7; - HEAP32[i11 + (i12 << 4) + 8 >> 2] = HEAP32[i10 + -8 >> 2]; - HEAP32[i5 >> 2] = HEAP32[i8 + 4 >> 2]; - STACKTOP = i1; - return; - } - case 12: - case 7: - case 6: - case 21: - case 19: - case 18: - case 17: - case 16: - case 15: - case 14: - case 13: - { - i12 = i3 + 8 | 0; - i11 = HEAP32[i12 >> 2] | 0; - i8 = i11 + -16 | 0; - HEAP32[i12 >> 2] = i8; - i12 = i2 >>> 6 & 255; - i9 = HEAP32[i8 + 4 >> 2] | 0; - i10 = i4 + (i12 << 4) | 0; - HEAP32[i10 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i10 + 4 >> 2] = i9; - HEAP32[i4 + (i12 << 4) + 8 >> 2] = HEAP32[i11 + -8 >> 2]; - STACKTOP = i1; - return; - } - case 29: - { - if ((i2 & 8372224 | 0) == 0) { - STACKTOP = i1; - return; - } - HEAP32[i3 + 8 >> 2] = HEAP32[i8 + 4 >> 2]; - STACKTOP = i1; - return; - } - default: - { - STACKTOP = i1; - return; - } - } -} -function _auxsort(i2, i4, i5) { - i2 = i2 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i1; - if ((i4 | 0) >= (i5 | 0)) { - STACKTOP = i1; - return; - } - while (1) { - _lua_rawgeti(i2, 1, i4); - _lua_rawgeti(i2, 1, i5); - if ((_sort_comp(i2, -1, -2) | 0) == 0) { - _lua_settop(i2, -3); - } else { - _lua_rawseti(i2, 1, i4); - _lua_rawseti(i2, 1, i5); - } - i6 = i5 - i4 | 0; - if ((i6 | 0) == 1) { - i2 = 24; - break; - } - i7 = (i5 + i4 | 0) / 2 | 0; - _lua_rawgeti(i2, 1, i7); - _lua_rawgeti(i2, 1, i4); - do { - if ((_sort_comp(i2, -2, -1) | 0) == 0) { - _lua_settop(i2, -2); - _lua_rawgeti(i2, 1, i5); - if ((_sort_comp(i2, -1, -2) | 0) == 0) { - _lua_settop(i2, -3); - break; - } else { - _lua_rawseti(i2, 1, i7); - _lua_rawseti(i2, 1, i5); - break; - } - } else { - _lua_rawseti(i2, 1, i7); - _lua_rawseti(i2, 1, i4); - } - } while (0); - if ((i6 | 0) == 2) { - i2 = 24; - break; - } - _lua_rawgeti(i2, 1, i7); - _lua_pushvalue(i2, -1); - i6 = i5 + -1 | 0; - _lua_rawgeti(i2, 1, i6); - _lua_rawseti(i2, 1, i7); - _lua_rawseti(i2, 1, i6); - i7 = i4; - i9 = i6; - while (1) { - i8 = i7 + 1 | 0; - _lua_rawgeti(i2, 1, i8); - if ((_sort_comp(i2, -1, -2) | 0) != 0) { - i7 = i8; - while (1) { - if ((i7 | 0) >= (i5 | 0)) { - _luaL_error(i2, 8216, i3) | 0; - } - _lua_settop(i2, -2); - i8 = i7 + 1 | 0; - _lua_rawgeti(i2, 1, i8); - if ((_sort_comp(i2, -1, -2) | 0) == 0) { - break; - } else { - i7 = i8; - } - } - } - i10 = i9 + -1 | 0; - _lua_rawgeti(i2, 1, i10); - if ((_sort_comp(i2, -3, -1) | 0) != 0) { - i9 = i10; - while (1) { - if ((i9 | 0) <= (i4 | 0)) { - _luaL_error(i2, 8216, i3) | 0; - } - _lua_settop(i2, -2); - i10 = i9 + -1 | 0; - _lua_rawgeti(i2, 1, i10); - if ((_sort_comp(i2, -3, -1) | 0) == 0) { - break; - } else { - i9 = i10; - } - } - } - if ((i9 | 0) <= (i8 | 0)) { - break; - } - _lua_rawseti(i2, 1, i8); - _lua_rawseti(i2, 1, i10); - i7 = i8; - i9 = i10; - } - _lua_settop(i2, -4); - _lua_rawgeti(i2, 1, i6); - _lua_rawgeti(i2, 1, i8); - _lua_rawseti(i2, 1, i6); - _lua_rawseti(i2, 1, i8); - i8 = (i8 - i4 | 0) < (i5 - i8 | 0); - i9 = i7 + 2 | 0; - i10 = i8 ? i9 : i4; - i6 = i8 ? i5 : i7; - _auxsort(i2, i8 ? i4 : i9, i8 ? i7 : i5); - if ((i10 | 0) < (i6 | 0)) { - i4 = i10; - i5 = i6; - } else { - i2 = 24; - break; - } - } - if ((i2 | 0) == 24) { - STACKTOP = i1; - return; - } -} -function _skip_sep(i3) { - i3 = i3 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i1 = STACKTOP; - i2 = HEAP32[i3 >> 2] | 0; - i4 = i3 + 60 | 0; - i10 = HEAP32[i4 >> 2] | 0; - i8 = i10 + 4 | 0; - i11 = HEAP32[i8 >> 2] | 0; - i7 = i10 + 8 | 0; - i5 = HEAP32[i7 >> 2] | 0; - do { - if ((i11 + 1 | 0) >>> 0 > i5 >>> 0) { - if (i5 >>> 0 > 2147483645) { - _lexerror(i3, 12368, 0); - } - i12 = i5 << 1; - i11 = HEAP32[i3 + 52 >> 2] | 0; - if ((i12 | 0) == -2) { - _luaM_toobig(i11); - } else { - i9 = _luaM_realloc_(i11, HEAP32[i10 >> 2] | 0, i5, i12) | 0; - HEAP32[i10 >> 2] = i9; - HEAP32[i7 >> 2] = i12; - i6 = HEAP32[i8 >> 2] | 0; - break; - } - } else { - i6 = i11; - i9 = HEAP32[i10 >> 2] | 0; - } - } while (0); - HEAP32[i8 >> 2] = i6 + 1; - HEAP8[i9 + i6 | 0] = i2; - i5 = i3 + 56 | 0; - i6 = HEAP32[i5 >> 2] | 0; - i13 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i13 + -1; - if ((i13 | 0) == 0) { - i6 = _luaZ_fill(i6) | 0; - } else { - i13 = i6 + 4 | 0; - i6 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i6 + 1; - i6 = HEAPU8[i6] | 0; - } - HEAP32[i3 >> 2] = i6; - if ((i6 | 0) != 61) { - i12 = i6; - i13 = 0; - i12 = (i12 | 0) != (i2 | 0); - i12 = i12 << 31 >> 31; - i13 = i12 ^ i13; - STACKTOP = i1; - return i13 | 0; - } - i6 = i3 + 52 | 0; - i7 = 0; - while (1) { - i9 = HEAP32[i4 >> 2] | 0; - i8 = i9 + 4 | 0; - i10 = HEAP32[i8 >> 2] | 0; - i11 = i9 + 8 | 0; - i12 = HEAP32[i11 >> 2] | 0; - if ((i10 + 1 | 0) >>> 0 > i12 >>> 0) { - if (i12 >>> 0 > 2147483645) { - i4 = 16; - break; - } - i13 = i12 << 1; - i10 = HEAP32[i6 >> 2] | 0; - if ((i13 | 0) == -2) { - i4 = 18; - break; - } - i12 = _luaM_realloc_(i10, HEAP32[i9 >> 2] | 0, i12, i13) | 0; - HEAP32[i9 >> 2] = i12; - HEAP32[i11 >> 2] = i13; - i10 = HEAP32[i8 >> 2] | 0; - i9 = i12; - } else { - i9 = HEAP32[i9 >> 2] | 0; - } - HEAP32[i8 >> 2] = i10 + 1; - HEAP8[i9 + i10 | 0] = 61; - i8 = HEAP32[i5 >> 2] | 0; - i13 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i13 + -1; - if ((i13 | 0) == 0) { - i8 = _luaZ_fill(i8) | 0; - } else { - i13 = i8 + 4 | 0; - i8 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i8 + 1; - i8 = HEAPU8[i8] | 0; - } - HEAP32[i3 >> 2] = i8; - i7 = i7 + 1 | 0; - if ((i8 | 0) != 61) { - i4 = 24; - break; - } - } - if ((i4 | 0) == 16) { - _lexerror(i3, 12368, 0); - } else if ((i4 | 0) == 18) { - _luaM_toobig(i10); - } else if ((i4 | 0) == 24) { - i13 = (i8 | 0) != (i2 | 0); - i13 = i13 << 31 >> 31; - i13 = i13 ^ i7; - STACKTOP = i1; - return i13 | 0; - } - return 0; -} -function _luaV_arith(i8, i2, i3, i5, i4) { - i8 = i8 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i1 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, d14 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i9 = i1 + 24 | 0; - i13 = i1 + 16 | 0; - i12 = i1; - i6 = i3 + 8 | 0; - i11 = HEAP32[i6 >> 2] | 0; - if ((i11 | 0) != 3) { - if ((i11 & 15 | 0) == 4 ? (i11 = HEAP32[i3 >> 2] | 0, (_luaO_str2d(i11 + 16 | 0, HEAP32[i11 + 12 >> 2] | 0, i13) | 0) != 0) : 0) { - HEAPF64[i12 >> 3] = +HEAPF64[i13 >> 3]; - HEAP32[i12 + 8 >> 2] = 3; - i10 = 5; - } - } else { - i12 = i3; - i10 = 5; - } - do { - if ((i10 | 0) == 5) { - i10 = HEAP32[i5 + 8 >> 2] | 0; - if ((i10 | 0) == 3) { - if ((i5 | 0) == 0) { - break; - } - d14 = +HEAPF64[i5 >> 3]; - } else { - if ((i10 & 15 | 0) != 4) { - break; - } - i13 = HEAP32[i5 >> 2] | 0; - if ((_luaO_str2d(i13 + 16 | 0, HEAP32[i13 + 12 >> 2] | 0, i9) | 0) == 0) { - break; - } - d14 = +HEAPF64[i9 >> 3]; - } - HEAPF64[i2 >> 3] = +_luaO_arith(i4 + -6 | 0, +HEAPF64[i12 >> 3], d14); - HEAP32[i2 + 8 >> 2] = 3; - STACKTOP = i1; - return; - } - } while (0); - i9 = _luaT_gettmbyobj(i8, i3, i4) | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) == 0) { - i4 = _luaT_gettmbyobj(i8, i5, i4) | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) == 0) { - _luaG_aritherror(i8, i3, i5); - } else { - i7 = i4; - } - } else { - i7 = i9; - } - i12 = i8 + 28 | 0; - i13 = i2 - (HEAP32[i12 >> 2] | 0) | 0; - i9 = i8 + 8 | 0; - i11 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i11 + 16; - i2 = i7; - i10 = HEAP32[i2 + 4 >> 2] | 0; - i4 = i11; - HEAP32[i4 >> 2] = HEAP32[i2 >> 2]; - HEAP32[i4 + 4 >> 2] = i10; - HEAP32[i11 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i11 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i11 + 16; - i4 = i3; - i10 = HEAP32[i4 + 4 >> 2] | 0; - i7 = i11; - HEAP32[i7 >> 2] = HEAP32[i4 >> 2]; - HEAP32[i7 + 4 >> 2] = i10; - HEAP32[i11 + 8 >> 2] = HEAP32[i6 >> 2]; - i11 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i11 + 16; - i6 = i5; - i7 = HEAP32[i6 + 4 >> 2] | 0; - i10 = i11; - HEAP32[i10 >> 2] = HEAP32[i6 >> 2]; - HEAP32[i10 + 4 >> 2] = i7; - HEAP32[i11 + 8 >> 2] = HEAP32[i5 + 8 >> 2]; - _luaD_call(i8, (HEAP32[i9 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i8 + 16 >> 2] | 0) + 18 | 0] & 1); - i12 = HEAP32[i12 >> 2] | 0; - i11 = HEAP32[i9 >> 2] | 0; - i8 = i11 + -16 | 0; - HEAP32[i9 >> 2] = i8; - i9 = HEAP32[i8 + 4 >> 2] | 0; - i10 = i12 + i13 | 0; - HEAP32[i10 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i10 + 4 >> 2] = i9; - HEAP32[i12 + (i13 + 8) >> 2] = HEAP32[i11 + -8 >> 2]; - STACKTOP = i1; - return; -} -function _new_localvar(i1, i8) { - i1 = i1 | 0; - i8 = i8 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i3; - i5 = HEAP32[i1 + 48 >> 2] | 0; - i2 = HEAP32[i1 + 64 >> 2] | 0; - i7 = HEAP32[i5 >> 2] | 0; - i10 = i7 + 60 | 0; - i11 = HEAP32[i10 >> 2] | 0; - i6 = i5 + 44 | 0; - if ((HEAP16[i6 >> 1] | 0) < (i11 | 0)) { - i9 = i7 + 24 | 0; - i10 = i11; - } else { - i9 = i7 + 24 | 0; - HEAP32[i9 >> 2] = _luaM_growaux_(HEAP32[i1 + 52 >> 2] | 0, HEAP32[i9 >> 2] | 0, i10, 12, 32767, 6496) | 0; - i10 = HEAP32[i10 >> 2] | 0; - } - if ((i11 | 0) < (i10 | 0)) { - i12 = i11; - while (1) { - i11 = i12 + 1 | 0; - HEAP32[(HEAP32[i9 >> 2] | 0) + (i12 * 12 | 0) >> 2] = 0; - if ((i11 | 0) == (i10 | 0)) { - break; - } else { - i12 = i11; - } - } - } - i10 = HEAP16[i6 >> 1] | 0; - HEAP32[(HEAP32[i9 >> 2] | 0) + ((i10 << 16 >> 16) * 12 | 0) >> 2] = i8; - if (!((HEAP8[i8 + 5 | 0] & 3) == 0) ? !((HEAP8[i7 + 5 | 0] & 4) == 0) : 0) { - _luaC_barrier_(HEAP32[i1 + 52 >> 2] | 0, i7, i8); - i7 = HEAP16[i6 >> 1] | 0; - } else { - i7 = i10; - } - HEAP16[i6 >> 1] = i7 + 1 << 16 >> 16; - i6 = i2 + 4 | 0; - i8 = HEAP32[i6 >> 2] | 0; - if ((i8 + 1 - (HEAP32[i5 + 40 >> 2] | 0) | 0) > 200) { - i10 = i5 + 12 | 0; - i9 = HEAP32[(HEAP32[i10 >> 2] | 0) + 52 >> 2] | 0; - i5 = HEAP32[(HEAP32[i5 >> 2] | 0) + 64 >> 2] | 0; - if ((i5 | 0) == 0) { - i11 = 6552; - HEAP32[i4 >> 2] = 6496; - i12 = i4 + 4 | 0; - HEAP32[i12 >> 2] = 200; - i12 = i4 + 8 | 0; - HEAP32[i12 >> 2] = i11; - i12 = _luaO_pushfstring(i9, 6592, i4) | 0; - i11 = HEAP32[i10 >> 2] | 0; - _luaX_syntaxerror(i11, i12); - } - HEAP32[i4 >> 2] = i5; - i11 = _luaO_pushfstring(i9, 6568, i4) | 0; - HEAP32[i4 >> 2] = 6496; - i12 = i4 + 4 | 0; - HEAP32[i12 >> 2] = 200; - i12 = i4 + 8 | 0; - HEAP32[i12 >> 2] = i11; - i12 = _luaO_pushfstring(i9, 6592, i4) | 0; - i11 = HEAP32[i10 >> 2] | 0; - _luaX_syntaxerror(i11, i12); - } - i4 = i2 + 8 | 0; - if ((i8 + 2 | 0) > (HEAP32[i4 >> 2] | 0)) { - i11 = _luaM_growaux_(HEAP32[i1 + 52 >> 2] | 0, HEAP32[i2 >> 2] | 0, i4, 2, 2147483645, 6496) | 0; - HEAP32[i2 >> 2] = i11; - i12 = HEAP32[i6 >> 2] | 0; - i10 = i12 + 1 | 0; - HEAP32[i6 >> 2] = i10; - i12 = i11 + (i12 << 1) | 0; - HEAP16[i12 >> 1] = i7; - STACKTOP = i3; - return; - } else { - i12 = i8; - i11 = HEAP32[i2 >> 2] | 0; - i10 = i12 + 1 | 0; - HEAP32[i6 >> 2] = i10; - i12 = i11 + (i12 << 1) | 0; - HEAP16[i12 >> 1] = i7; - STACKTOP = i3; - return; - } -} -function _luaC_fullgc(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i2 = STACKTOP; - i4 = i1 + 12 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i6 = i3 + 62 | 0; - i8 = HEAP8[i6] | 0; - i5 = (i5 | 0) != 0; - if (!i5) { - HEAP8[i6] = 0; - i9 = (HEAP32[i4 >> 2] | 0) + 104 | 0; - i10 = HEAP32[i9 >> 2] | 0; - if ((i10 | 0) != 0) { - do { - i11 = i10 + 5 | 0; - HEAP8[i11] = HEAP8[i11] & 191; - _GCTM(i1, 1); - i10 = HEAP32[i9 >> 2] | 0; - } while ((i10 | 0) != 0); - if ((HEAP8[i6] | 0) == 2) { - i9 = 7; - } else { - i9 = 6; - } - } else { - i9 = 6; - } - } else { - HEAP8[i6] = 1; - i9 = 6; - } - if ((i9 | 0) == 6 ? (HEAPU8[i3 + 61 | 0] | 0) < 2 : 0) { - i9 = 7; - } - if ((i9 | 0) == 7) { - i9 = HEAP32[i4 >> 2] | 0; - HEAP8[i9 + 61 | 0] = 2; - HEAP32[i9 + 64 >> 2] = 0; - i10 = i9 + 72 | 0; - do { - i11 = _sweeplist(i1, i10, 1) | 0; - } while ((i11 | 0) == (i10 | 0)); - HEAP32[i9 + 80 >> 2] = i11; - i11 = i9 + 68 | 0; - do { - i10 = _sweeplist(i1, i11, 1) | 0; - } while ((i10 | 0) == (i11 | 0)); - HEAP32[i9 + 76 >> 2] = i10; - } - i11 = HEAP32[i4 >> 2] | 0; - i9 = i11 + 61 | 0; - if ((HEAP8[i9] | 0) == 5) { - i9 = 5; - } else { - do { - _singlestep(i1) | 0; - } while ((HEAP8[i9] | 0) != 5); - i9 = HEAP32[i4 >> 2] | 0; - i11 = i9; - i9 = HEAP8[i9 + 61 | 0] | 0; - } - i10 = i11 + 61 | 0; - if ((1 << (i9 & 255) & -33 | 0) == 0) { - do { - _singlestep(i1) | 0; - } while ((1 << HEAPU8[i10] & -33 | 0) == 0); - i9 = HEAP32[i4 >> 2] | 0; - i11 = i9; - i9 = HEAP8[i9 + 61 | 0] | 0; - } - i10 = i11 + 61 | 0; - if (!(i9 << 24 >> 24 == 5)) { - do { - _singlestep(i1) | 0; - } while ((HEAP8[i10] | 0) != 5); - } - if (i8 << 24 >> 24 == 2 ? (i7 = (HEAP32[i4 >> 2] | 0) + 61 | 0, (HEAP8[i7] | 0) != 0) : 0) { - do { - _singlestep(i1) | 0; - } while ((HEAP8[i7] | 0) != 0); - } - HEAP8[i6] = i8; - i6 = HEAP32[i3 + 8 >> 2] | 0; - i7 = HEAP32[i3 + 12 >> 2] | 0; - i8 = (i7 + i6 | 0) / 100 | 0; - i9 = HEAP32[i3 + 156 >> 2] | 0; - if ((i9 | 0) < (2147483644 / (i8 | 0) | 0 | 0)) { - i8 = Math_imul(i9, i8) | 0; - } else { - i8 = 2147483644; - } - _luaE_setdebt(i3, i6 - i8 + i7 | 0); - if (i5) { - STACKTOP = i2; - return; - } - i3 = (HEAP32[i4 >> 2] | 0) + 104 | 0; - i4 = HEAP32[i3 >> 2] | 0; - if ((i4 | 0) == 0) { - STACKTOP = i2; - return; - } - do { - i11 = i4 + 5 | 0; - HEAP8[i11] = HEAP8[i11] & 191; - _GCTM(i1, 1); - i4 = HEAP32[i3 >> 2] | 0; - } while ((i4 | 0) != 0); - STACKTOP = i2; - return; -} -function _scanexp(i3, i6) { - i3 = i3 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0; - i1 = STACKTOP; - i2 = i3 + 4 | 0; - i5 = HEAP32[i2 >> 2] | 0; - i4 = i3 + 100 | 0; - if (i5 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) { - HEAP32[i2 >> 2] = i5 + 1; - i8 = HEAPU8[i5] | 0; - } else { - i8 = ___shgetc(i3) | 0; - } - if ((i8 | 0) == 43 | (i8 | 0) == 45) { - i5 = (i8 | 0) == 45 | 0; - i7 = HEAP32[i2 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) { - HEAP32[i2 >> 2] = i7 + 1; - i8 = HEAPU8[i7] | 0; - } else { - i8 = ___shgetc(i3) | 0; - } - if (!((i8 + -48 | 0) >>> 0 < 10 | (i6 | 0) == 0) ? (HEAP32[i4 >> 2] | 0) != 0 : 0) { - HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + -1; - } - } else { - i5 = 0; - } - if ((i8 + -48 | 0) >>> 0 > 9) { - if ((HEAP32[i4 >> 2] | 0) == 0) { - i7 = -2147483648; - i8 = 0; - tempRet0 = i7; - STACKTOP = i1; - return i8 | 0; - } - HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + -1; - i7 = -2147483648; - i8 = 0; - tempRet0 = i7; - STACKTOP = i1; - return i8 | 0; - } else { - i6 = 0; - } - while (1) { - i6 = i8 + -48 + i6 | 0; - i7 = HEAP32[i2 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) { - HEAP32[i2 >> 2] = i7 + 1; - i8 = HEAPU8[i7] | 0; - } else { - i8 = ___shgetc(i3) | 0; - } - if (!((i8 + -48 | 0) >>> 0 < 10 & (i6 | 0) < 214748364)) { - break; - } - i6 = i6 * 10 | 0; - } - i7 = ((i6 | 0) < 0) << 31 >> 31; - if ((i8 + -48 | 0) >>> 0 < 10) { - do { - i7 = ___muldi3(i6 | 0, i7 | 0, 10, 0) | 0; - i6 = tempRet0; - i8 = _i64Add(i8 | 0, ((i8 | 0) < 0) << 31 >> 31 | 0, -48, -1) | 0; - i6 = _i64Add(i8 | 0, tempRet0 | 0, i7 | 0, i6 | 0) | 0; - i7 = tempRet0; - i8 = HEAP32[i2 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) { - HEAP32[i2 >> 2] = i8 + 1; - i8 = HEAPU8[i8] | 0; - } else { - i8 = ___shgetc(i3) | 0; - } - } while ((i8 + -48 | 0) >>> 0 < 10 & ((i7 | 0) < 21474836 | (i7 | 0) == 21474836 & i6 >>> 0 < 2061584302)); - } - if ((i8 + -48 | 0) >>> 0 < 10) { - do { - i8 = HEAP32[i2 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) { - HEAP32[i2 >> 2] = i8 + 1; - i8 = HEAPU8[i8] | 0; - } else { - i8 = ___shgetc(i3) | 0; - } - } while ((i8 + -48 | 0) >>> 0 < 10); - } - if ((HEAP32[i4 >> 2] | 0) != 0) { - HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + -1; - } - i3 = (i5 | 0) != 0; - i2 = _i64Subtract(0, 0, i6 | 0, i7 | 0) | 0; - i4 = i3 ? tempRet0 : i7; - i8 = i3 ? i2 : i6; - tempRet0 = i4; - STACKTOP = i1; - return i8 | 0; -} -function _sweeplist(i3, i8, i9) { - i3 = i3 | 0; - i8 = i8 | 0; - i9 = i9 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i10 = 0, i11 = 0, i12 = 0; - i1 = STACKTOP; - i5 = i3 + 12 | 0; - i7 = HEAP32[i5 >> 2] | 0; - i6 = HEAPU8[i7 + 60 | 0] | 0; - i2 = i6 ^ 3; - i7 = (HEAP8[i7 + 62 | 0] | 0) == 2; - i4 = i7 ? 255 : 184; - i6 = i7 ? 64 : i6 & 3; - i7 = i7 ? 64 : 0; - i10 = HEAP32[i8 >> 2] | 0; - L1 : do { - if ((i10 | 0) == 0) { - i10 = 0; - } else { - i11 = i9; - L2 : while (1) { - i9 = i11 + -1 | 0; - if ((i11 | 0) == 0) { - break L1; - } - i11 = i10 + 5 | 0; - i12 = HEAPU8[i11] | 0; - L5 : do { - if (((i12 ^ 3) & i2 | 0) == 0) { - HEAP32[i8 >> 2] = HEAP32[i10 >> 2]; - switch (HEAPU8[i10 + 4 | 0] | 0) { - case 4: - { - i12 = (HEAP32[i5 >> 2] | 0) + 28 | 0; - HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + -1; - break; - } - case 38: - { - _luaM_realloc_(i3, i10, (HEAPU8[i10 + 6 | 0] << 4) + 16 | 0, 0) | 0; - break L5; - } - case 6: - { - _luaM_realloc_(i3, i10, (HEAPU8[i10 + 6 | 0] << 2) + 16 | 0, 0) | 0; - break L5; - } - case 20: - { - break; - } - case 5: - { - _luaH_free(i3, i10); - break L5; - } - case 10: - { - _luaF_freeupval(i3, i10); - break L5; - } - case 8: - { - _luaE_freethread(i3, i10); - break L5; - } - case 9: - { - _luaF_freeproto(i3, i10); - break L5; - } - case 7: - { - _luaM_realloc_(i3, i10, (HEAP32[i10 + 16 >> 2] | 0) + 24 | 0, 0) | 0; - break L5; - } - default: - { - break L5; - } - } - _luaM_realloc_(i3, i10, (HEAP32[i10 + 12 >> 2] | 0) + 17 | 0, 0) | 0; - } else { - if ((i12 & i7 | 0) != 0) { - i2 = 0; - break L2; - } - if (((HEAP8[i10 + 4 | 0] | 0) == 8 ? (HEAP32[i10 + 28 >> 2] | 0) != 0 : 0) ? (_sweeplist(i3, i10 + 56 | 0, -3) | 0, _luaE_freeCI(i10), (HEAP8[(HEAP32[i5 >> 2] | 0) + 62 | 0] | 0) != 1) : 0) { - _luaD_shrinkstack(i10); - } - HEAP8[i11] = i12 & i4 | i6; - i8 = i10; - } - } while (0); - i10 = HEAP32[i8 >> 2] | 0; - if ((i10 | 0) == 0) { - i10 = 0; - break L1; - } else { - i11 = i9; - } - } - STACKTOP = i1; - return i2 | 0; - } - } while (0); - i12 = (i10 | 0) == 0 ? 0 : i8; - STACKTOP = i1; - return i12 | 0; -} -function _resume(i1, i6) { - i1 = i1 | 0; - i6 = i6 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i2 = STACKTOP; - i3 = i1 + 16 | 0; - i5 = HEAP32[i3 >> 2] | 0; - if ((HEAPU16[i1 + 38 >> 1] | 0) > 199) { - _resume_error(i1, 2240, i6); - } - i4 = i1 + 6 | 0; - i7 = HEAP8[i4] | 0; - if (i7 << 24 >> 24 == 0) { - if ((i5 | 0) != (i1 + 72 | 0)) { - _resume_error(i1, 2448, i6); - } - if ((_luaD_precall(i1, i6 + -16 | 0, -1) | 0) != 0) { - STACKTOP = i2; - return; - } - _luaV_execute(i1); - STACKTOP = i2; - return; - } else if (i7 << 24 >> 24 == 1) { - HEAP8[i4] = 0; - i4 = i1 + 28 | 0; - HEAP32[i5 >> 2] = (HEAP32[i4 >> 2] | 0) + (HEAP32[i5 + 20 >> 2] | 0); - i8 = i5 + 18 | 0; - i7 = HEAP8[i8] | 0; - if ((i7 & 1) == 0) { - i9 = HEAP32[i5 + 28 >> 2] | 0; - if ((i9 | 0) != 0) { - HEAP8[i5 + 37 | 0] = 1; - HEAP8[i8] = i7 & 255 | 8; - i6 = FUNCTION_TABLE_ii[i9 & 255](i1) | 0; - i6 = (HEAP32[i1 + 8 >> 2] | 0) + (0 - i6 << 4) | 0; - } - i5 = HEAP32[i3 >> 2] | 0; - i7 = HEAPU8[i1 + 40 | 0] | 0; - if ((i7 & 6 | 0) == 0) { - i7 = i5 + 8 | 0; - } else { - if ((i7 & 2 | 0) != 0) { - i6 = i6 - (HEAP32[i4 >> 2] | 0) | 0; - _luaD_hook(i1, 1, -1); - i6 = (HEAP32[i4 >> 2] | 0) + i6 | 0; - } - i7 = i5 + 8 | 0; - HEAP32[i1 + 20 >> 2] = HEAP32[(HEAP32[i7 >> 2] | 0) + 28 >> 2]; - } - i4 = HEAP32[i5 >> 2] | 0; - i5 = HEAP16[i5 + 16 >> 1] | 0; - HEAP32[i3 >> 2] = HEAP32[i7 >> 2]; - i3 = i1 + 8 | 0; - L27 : do { - if (!(i5 << 16 >> 16 == 0)) { - i5 = i5 << 16 >> 16; - while (1) { - if (!(i6 >>> 0 < (HEAP32[i3 >> 2] | 0) >>> 0)) { - break; - } - i7 = i4 + 16 | 0; - i10 = i6; - i8 = HEAP32[i10 + 4 >> 2] | 0; - i9 = i4; - HEAP32[i9 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i9 + 4 >> 2] = i8; - HEAP32[i4 + 8 >> 2] = HEAP32[i6 + 8 >> 2]; - i5 = i5 + -1 | 0; - if ((i5 | 0) == 0) { - i4 = i7; - break L27; - } - i6 = i6 + 16 | 0; - i4 = i7; - } - if ((i5 | 0) > 0) { - i7 = i5; - i6 = i4; - while (1) { - i7 = i7 + -1 | 0; - HEAP32[i6 + 8 >> 2] = 0; - if ((i7 | 0) <= 0) { - break; - } else { - i6 = i6 + 16 | 0; - } - } - i4 = i4 + (i5 << 4) | 0; - } - } - } while (0); - HEAP32[i3 >> 2] = i4; - } else { - _luaV_execute(i1); - } - _unroll(i1, 0); - STACKTOP = i2; - return; - } else { - _resume_error(i1, 2488, i6); - } -} -function _lua_setupvalue(i1, i5, i3) { - i1 = i1 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i2 = STACKTOP; - i6 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i6 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i6 >> 2] | 0, (i5 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i5 = i4 + (i5 + -1 << 4) + 16 | 0; - } else { - i5 = 5192; - } - } else { - i4 = (HEAP32[i6 >> 2] | 0) + (i5 << 4) | 0; - i5 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - i4 = HEAP32[i5 + 8 >> 2] & 63; - do { - if ((i4 | 0) == 6) { - i5 = HEAP32[i5 >> 2] | 0; - i4 = HEAP32[i5 + 12 >> 2] | 0; - if ((i3 | 0) <= 0) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - if ((HEAP32[i4 + 40 >> 2] | 0) < (i3 | 0)) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - i6 = i3 + -1 | 0; - i3 = HEAP32[i5 + 16 + (i6 << 2) >> 2] | 0; - i5 = HEAP32[i3 + 8 >> 2] | 0; - i4 = HEAP32[(HEAP32[i4 + 28 >> 2] | 0) + (i6 << 3) >> 2] | 0; - if ((i4 | 0) == 0) { - i4 = 936; - } else { - i4 = i4 + 16 | 0; - } - } else if ((i4 | 0) == 38) { - i6 = HEAP32[i5 >> 2] | 0; - if ((i3 | 0) <= 0) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - if ((HEAPU8[i6 + 6 | 0] | 0 | 0) >= (i3 | 0)) { - i4 = 936; - i5 = i6 + (i3 + -1 << 4) + 16 | 0; - i3 = i6; - break; - } else { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - } else { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - } while (0); - i6 = i1 + 8 | 0; - i7 = HEAP32[i6 >> 2] | 0; - i10 = i7 + -16 | 0; - HEAP32[i6 >> 2] = i10; - i9 = HEAP32[i10 + 4 >> 2] | 0; - i8 = i5; - HEAP32[i8 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i8 + 4 >> 2] = i9; - HEAP32[i5 + 8 >> 2] = HEAP32[i7 + -8 >> 2]; - i5 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] & 64 | 0) == 0) { - i10 = i4; - STACKTOP = i2; - return i10 | 0; - } - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP8[i5 + 5 | 0] & 3) == 0) { - i10 = i4; - STACKTOP = i2; - return i10 | 0; - } - if ((HEAP8[i3 + 5 | 0] & 4) == 0) { - i10 = i4; - STACKTOP = i2; - return i10 | 0; - } - _luaC_barrier_(i1, i3, i5); - i10 = i4; - STACKTOP = i2; - return i10 | 0; -} -function _luaC_forcestep(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i1 = STACKTOP; - i3 = HEAP32[i2 + 12 >> 2] | 0; - do { - if ((HEAP8[i3 + 62 | 0] | 0) == 2) { - i4 = i3 + 20 | 0; - i6 = HEAP32[i4 >> 2] | 0; - do { - if ((i6 | 0) != 0) { - i5 = i3 + 61 | 0; - if ((HEAP8[i5] | 0) != 5) { - do { - _singlestep(i2) | 0; - } while ((HEAP8[i5] | 0) != 5); - } - HEAP8[i5] = 0; - i5 = HEAP32[i3 + 8 >> 2] | 0; - i7 = HEAP32[i3 + 12 >> 2] | 0; - if ((i7 + i5 | 0) >>> 0 > (Math_imul(HEAP32[i3 + 160 >> 2] | 0, (i6 >>> 0) / 100 | 0) | 0) >>> 0) { - HEAP32[i4 >> 2] = 0; - break; - } else { - HEAP32[i4 >> 2] = i6; - break; - } - } else { - _luaC_fullgc(i2, 0); - i5 = HEAP32[i3 + 8 >> 2] | 0; - i7 = HEAP32[i3 + 12 >> 2] | 0; - HEAP32[i4 >> 2] = i7 + i5; - } - } while (0); - i4 = i5 + i7 | 0; - i5 = (i4 | 0) / 100 | 0; - i6 = HEAP32[i3 + 156 >> 2] | 0; - if ((i6 | 0) < (2147483644 / (i5 | 0) | 0 | 0)) { - i5 = Math_imul(i6, i5) | 0; - } else { - i5 = 2147483644; - } - _luaE_setdebt(i3, i4 - i5 | 0); - i5 = i3 + 61 | 0; - } else { - i4 = i3 + 12 | 0; - i5 = HEAP32[i3 + 164 >> 2] | 0; - i7 = (i5 | 0) < 40 ? 40 : i5; - i5 = ((HEAP32[i4 >> 2] | 0) / 200 | 0) + 1 | 0; - if ((i5 | 0) < (2147483644 / (i7 | 0) | 0 | 0)) { - i8 = Math_imul(i5, i7) | 0; - } else { - i8 = 2147483644; - } - i5 = i3 + 61 | 0; - do { - i8 = i8 - (_singlestep(i2) | 0) | 0; - i9 = (HEAP8[i5] | 0) == 5; - if (!((i8 | 0) > -1600)) { - i6 = 17; - break; - } - } while (!i9); - if ((i6 | 0) == 17 ? !i9 : 0) { - _luaE_setdebt(i3, ((i8 | 0) / (i7 | 0) | 0) * 200 | 0); - break; - } - i6 = (HEAP32[i3 + 20 >> 2] | 0) / 100 | 0; - i7 = HEAP32[i3 + 156 >> 2] | 0; - if ((i7 | 0) < (2147483644 / (i6 | 0) | 0 | 0)) { - i6 = Math_imul(i7, i6) | 0; - } else { - i6 = 2147483644; - } - _luaE_setdebt(i3, (HEAP32[i3 + 8 >> 2] | 0) - i6 + (HEAP32[i4 >> 2] | 0) | 0); - } - } while (0); - i3 = i3 + 104 | 0; - if ((HEAP32[i3 >> 2] | 0) == 0) { - STACKTOP = i1; - return; - } else { - i4 = 0; - } - while (1) { - if ((i4 | 0) >= 4 ? (HEAP8[i5] | 0) != 5 : 0) { - i6 = 26; - break; - } - _GCTM(i2, 1); - if ((HEAP32[i3 >> 2] | 0) == 0) { - i6 = 26; - break; - } else { - i4 = i4 + 1 | 0; - } - } - if ((i6 | 0) == 26) { - STACKTOP = i1; - return; - } -} -function _luaL_loadfilex(i1, i9, i7) { - i1 = i1 | 0; - i9 = i9 | 0; - i7 = i7 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i11 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i3 = i5; - i6 = i5 + 16 | 0; - i8 = i5 + 12 | 0; - i2 = (_lua_gettop(i1) | 0) + 1 | 0; - i4 = (i9 | 0) == 0; - if (!i4) { - HEAP32[i3 >> 2] = i9; - _lua_pushfstring(i1, 1304, i3) | 0; - i10 = _fopen(i9 | 0, 1312) | 0; - HEAP32[i6 + 4 >> 2] = i10; - if ((i10 | 0) == 0) { - i10 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0; - i9 = (_lua_tolstring(i1, i2, 0) | 0) + 1 | 0; - HEAP32[i3 >> 2] = 1320; - HEAP32[i3 + 4 >> 2] = i9; - HEAP32[i3 + 8 >> 2] = i10; - _lua_pushfstring(i1, 1720, i3) | 0; - _lua_remove(i1, i2); - i10 = 7; - STACKTOP = i5; - return i10 | 0; - } - } else { - _lua_pushlstring(i1, 1296, 6) | 0; - HEAP32[i6 + 4 >> 2] = HEAP32[_stdin >> 2]; - } - if ((_skipcomment(i6, i8) | 0) != 0) { - i10 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i10 + 1; - HEAP8[i6 + i10 + 8 | 0] = 10; - } - i10 = HEAP32[i8 >> 2] | 0; - do { - if (!((i10 | 0) != 27 | i4)) { - i11 = i6 + 4 | 0; - i10 = _freopen(i9 | 0, 1328, HEAP32[i11 >> 2] | 0) | 0; - HEAP32[i11 >> 2] = i10; - if ((i10 | 0) != 0) { - _skipcomment(i6, i8) | 0; - i10 = HEAP32[i8 >> 2] | 0; - break; - } - i11 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0; - i10 = (_lua_tolstring(i1, i2, 0) | 0) + 1 | 0; - HEAP32[i3 >> 2] = 1336; - HEAP32[i3 + 4 >> 2] = i10; - HEAP32[i3 + 8 >> 2] = i11; - _lua_pushfstring(i1, 1720, i3) | 0; - _lua_remove(i1, i2); - i11 = 7; - STACKTOP = i5; - return i11 | 0; - } - } while (0); - if (!((i10 | 0) == -1)) { - i11 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i11 + 1; - HEAP8[i6 + i11 + 8 | 0] = i10; - } - i7 = _lua_load(i1, 1, i6, _lua_tolstring(i1, -1, 0) | 0, i7) | 0; - i8 = HEAP32[i6 + 4 >> 2] | 0; - i6 = _ferror(i8 | 0) | 0; - if (!i4) { - _fclose(i8 | 0) | 0; - } - if ((i6 | 0) == 0) { - _lua_remove(i1, i2); - i11 = i7; - STACKTOP = i5; - return i11 | 0; - } else { - _lua_settop(i1, i2); - i11 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0; - i10 = (_lua_tolstring(i1, i2, 0) | 0) + 1 | 0; - HEAP32[i3 >> 2] = 1344; - HEAP32[i3 + 4 >> 2] = i10; - HEAP32[i3 + 8 >> 2] = i11; - _lua_pushfstring(i1, 1720, i3) | 0; - _lua_remove(i1, i2); - i11 = 7; - STACKTOP = i5; - return i11 | 0; - } - return 0; -} -function _newupvalue(i3, i1, i2) { - i3 = i3 | 0; - i1 = i1 | 0; - i2 = i2 | 0; - var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i12 = i4; - i5 = HEAP32[i3 >> 2] | 0; - i9 = i5 + 40 | 0; - i7 = HEAP32[i9 >> 2] | 0; - i6 = i3 + 47 | 0; - i10 = HEAPU8[i6] | 0; - if ((i10 + 1 | 0) >>> 0 > 255) { - i11 = i3 + 12 | 0; - i8 = HEAP32[(HEAP32[i11 >> 2] | 0) + 52 >> 2] | 0; - i13 = HEAP32[i5 + 64 >> 2] | 0; - if ((i13 | 0) == 0) { - i15 = 6552; - HEAP32[i12 >> 2] = 6880; - i14 = i12 + 4 | 0; - HEAP32[i14 >> 2] = 255; - i14 = i12 + 8 | 0; - HEAP32[i14 >> 2] = i15; - i14 = _luaO_pushfstring(i8, 6592, i12) | 0; - i15 = HEAP32[i11 >> 2] | 0; - _luaX_syntaxerror(i15, i14); - } - HEAP32[i12 >> 2] = i13; - i14 = _luaO_pushfstring(i8, 6568, i12) | 0; - HEAP32[i12 >> 2] = 6880; - i15 = i12 + 4 | 0; - HEAP32[i15 >> 2] = 255; - i15 = i12 + 8 | 0; - HEAP32[i15 >> 2] = i14; - i15 = _luaO_pushfstring(i8, 6592, i12) | 0; - i14 = HEAP32[i11 >> 2] | 0; - _luaX_syntaxerror(i14, i15); - } - if ((i10 | 0) < (i7 | 0)) { - i8 = i7; - } else { - i8 = i5 + 28 | 0; - HEAP32[i8 >> 2] = _luaM_growaux_(HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 52 >> 2] | 0, HEAP32[i8 >> 2] | 0, i9, 8, 255, 6880) | 0; - i8 = HEAP32[i9 >> 2] | 0; - } - i9 = i5 + 28 | 0; - if ((i7 | 0) < (i8 | 0)) { - while (1) { - i10 = i7 + 1 | 0; - HEAP32[(HEAP32[i9 >> 2] | 0) + (i7 << 3) >> 2] = 0; - if ((i10 | 0) < (i8 | 0)) { - i7 = i10; - } else { - break; - } - } - } - HEAP8[(HEAP32[i9 >> 2] | 0) + ((HEAPU8[i6] | 0) << 3) + 4 | 0] = (HEAP32[i2 >> 2] | 0) == 7 | 0; - HEAP8[(HEAP32[i9 >> 2] | 0) + ((HEAPU8[i6] | 0) << 3) + 5 | 0] = HEAP32[i2 + 8 >> 2]; - HEAP32[(HEAP32[i9 >> 2] | 0) + ((HEAPU8[i6] | 0) << 3) >> 2] = i1; - if ((HEAP8[i1 + 5 | 0] & 3) == 0) { - i15 = HEAP8[i6] | 0; - i14 = i15 + 1 << 24 >> 24; - HEAP8[i6] = i14; - i15 = i15 & 255; - STACKTOP = i4; - return i15 | 0; - } - if ((HEAP8[i5 + 5 | 0] & 4) == 0) { - i15 = HEAP8[i6] | 0; - i14 = i15 + 1 << 24 >> 24; - HEAP8[i6] = i14; - i15 = i15 & 255; - STACKTOP = i4; - return i15 | 0; - } - _luaC_barrier_(HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 52 >> 2] | 0, i5, i1); - i15 = HEAP8[i6] | 0; - i14 = i15 + 1 << 24 >> 24; - HEAP8[i6] = i14; - i15 = i15 & 255; - STACKTOP = i4; - return i15 | 0; -} -function _close_func(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i6 = STACKTOP; - i2 = HEAP32[i1 + 52 >> 2] | 0; - i5 = i1 + 48 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i3 = HEAP32[i4 >> 2] | 0; - _luaK_ret(i4, 0, 0); - _leaveblock(i4); - i7 = i4 + 20 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 + 1 | 0) >>> 0 > 1073741823) { - _luaM_toobig(i2); - } - i10 = i3 + 12 | 0; - i9 = i3 + 48 | 0; - HEAP32[i10 >> 2] = _luaM_realloc_(i2, HEAP32[i10 >> 2] | 0, HEAP32[i9 >> 2] << 2, i8 << 2) | 0; - HEAP32[i9 >> 2] = HEAP32[i7 >> 2]; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 + 1 | 0) >>> 0 > 1073741823) { - _luaM_toobig(i2); - } - i9 = i3 + 20 | 0; - i10 = i3 + 52 | 0; - HEAP32[i9 >> 2] = _luaM_realloc_(i2, HEAP32[i9 >> 2] | 0, HEAP32[i10 >> 2] << 2, i8 << 2) | 0; - HEAP32[i10 >> 2] = HEAP32[i7 >> 2]; - i8 = i4 + 32 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 + 1 | 0) >>> 0 > 268435455) { - _luaM_toobig(i2); - } - i9 = i3 + 8 | 0; - i10 = i3 + 44 | 0; - HEAP32[i9 >> 2] = _luaM_realloc_(i2, HEAP32[i9 >> 2] | 0, HEAP32[i10 >> 2] << 4, i7 << 4) | 0; - HEAP32[i10 >> 2] = HEAP32[i8 >> 2]; - i8 = i4 + 36 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 + 1 | 0) >>> 0 > 1073741823) { - _luaM_toobig(i2); - } - i9 = i3 + 16 | 0; - i10 = i3 + 56 | 0; - HEAP32[i9 >> 2] = _luaM_realloc_(i2, HEAP32[i9 >> 2] | 0, HEAP32[i10 >> 2] << 2, i7 << 2) | 0; - HEAP32[i10 >> 2] = HEAP32[i8 >> 2]; - i7 = i4 + 44 | 0; - i8 = HEAP16[i7 >> 1] | 0; - if ((i8 + 1 | 0) >>> 0 > 357913941) { - _luaM_toobig(i2); - } - i10 = i3 + 24 | 0; - i9 = i3 + 60 | 0; - HEAP32[i10 >> 2] = _luaM_realloc_(i2, HEAP32[i10 >> 2] | 0, (HEAP32[i9 >> 2] | 0) * 12 | 0, i8 * 12 | 0) | 0; - HEAP32[i9 >> 2] = HEAP16[i7 >> 1] | 0; - i9 = i4 + 47 | 0; - i8 = i3 + 28 | 0; - i10 = i3 + 40 | 0; - HEAP32[i8 >> 2] = _luaM_realloc_(i2, HEAP32[i8 >> 2] | 0, HEAP32[i10 >> 2] << 3, HEAPU8[i9] << 3) | 0; - HEAP32[i10 >> 2] = HEAPU8[i9] | 0; - HEAP32[i5 >> 2] = HEAP32[i4 + 8 >> 2]; - if (((HEAP32[i1 + 16 >> 2] | 0) + -288 | 0) >>> 0 < 2) { - i10 = HEAP32[i1 + 24 >> 2] | 0; - _luaX_newstring(i1, i10 + 16 | 0, HEAP32[i10 + 12 >> 2] | 0) | 0; - } - i10 = i2 + 8 | 0; - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -16; - if ((HEAP32[(HEAP32[i2 + 12 >> 2] | 0) + 12 >> 2] | 0) <= 0) { - STACKTOP = i6; - return; - } - _luaC_step(i2); - STACKTOP = i6; - return; -} -function _lua_topointer(i3, i6) { - i3 = i3 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0; - i1 = STACKTOP; - i4 = HEAP32[i3 + 16 >> 2] | 0; - i5 = (i6 | 0) > 0; - do { - if (!i5) { - if (!((i6 | 0) < -1000999)) { - i7 = (HEAP32[i3 + 8 >> 2] | 0) + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i7 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0; - break; - } - i8 = -1001e3 - i6 | 0; - i9 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) != 22 ? (i7 = HEAP32[i9 >> 2] | 0, (i8 | 0) <= (HEAPU8[i7 + 6 | 0] | 0 | 0)) : 0) { - i7 = i7 + (i8 + -1 << 4) + 16 | 0; - } else { - i7 = 5192; - } - } else { - i7 = (HEAP32[i4 >> 2] | 0) + (i6 << 4) | 0; - i7 = i7 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i7 : 5192; - } - } while (0); - switch (HEAP32[i7 + 8 >> 2] & 63 | 0) { - case 22: - { - i9 = HEAP32[i7 >> 2] | 0; - STACKTOP = i1; - return i9 | 0; - } - case 2: - case 7: - { - do { - if (!i5) { - if (!((i6 | 0) < -1000999)) { - i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0; - break; - } - i3 = -1001e3 - i6 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) { - i2 = i2 + (i3 + -1 << 4) + 16 | 0; - } else { - i2 = 5192; - } - } else { - i2 = (HEAP32[i4 >> 2] | 0) + (i6 << 4) | 0; - i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192; - } - } while (0); - i3 = HEAP32[i2 + 8 >> 2] & 15; - if ((i3 | 0) == 7) { - i9 = (HEAP32[i2 >> 2] | 0) + 24 | 0; - STACKTOP = i1; - return i9 | 0; - } else if ((i3 | 0) == 2) { - i9 = HEAP32[i2 >> 2] | 0; - STACKTOP = i1; - return i9 | 0; - } else { - i9 = 0; - STACKTOP = i1; - return i9 | 0; - } - } - case 8: - { - i9 = HEAP32[i7 >> 2] | 0; - STACKTOP = i1; - return i9 | 0; - } - case 5: - { - i9 = HEAP32[i7 >> 2] | 0; - STACKTOP = i1; - return i9 | 0; - } - case 38: - { - i9 = HEAP32[i7 >> 2] | 0; - STACKTOP = i1; - return i9 | 0; - } - case 6: - { - i9 = HEAP32[i7 >> 2] | 0; - STACKTOP = i1; - return i9 | 0; - } - default: - { - i9 = 0; - STACKTOP = i1; - return i9 | 0; - } - } - return 0; -} -function _luaH_get(i4, i6) { - i4 = i4 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i3 = 0, d5 = 0.0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, d11 = 0.0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i8 = i3 + 8 | 0; - i9 = i3; - i7 = i6 + 8 | 0; - i10 = HEAP32[i7 >> 2] & 63; - if ((i10 | 0) == 4) { - i6 = HEAP32[i6 >> 2] | 0; - i7 = (HEAP32[i4 + 16 >> 2] | 0) + (((1 << (HEAPU8[i4 + 7 | 0] | 0)) + -1 & HEAP32[i6 + 8 >> 2]) << 5) | 0; - while (1) { - if ((HEAP32[i7 + 24 >> 2] | 0) == 68 ? (HEAP32[i7 + 16 >> 2] | 0) == (i6 | 0) : 0) { - break; - } - i4 = HEAP32[i7 + 28 >> 2] | 0; - if ((i4 | 0) == 0) { - i2 = 5192; - i1 = 22; - break; - } else { - i7 = i4; - } - } - if ((i1 | 0) == 22) { - STACKTOP = i3; - return i2 | 0; - } - i10 = i7; - STACKTOP = i3; - return i10 | 0; - } else if ((i10 | 0) == 3) { - d11 = +HEAPF64[i6 >> 3]; - HEAPF64[i9 >> 3] = d11 + 6755399441055744.0; - i9 = HEAP32[i9 >> 2] | 0; - d5 = +(i9 | 0); - if (d5 == d11) { - i6 = i9 + -1 | 0; - if (i6 >>> 0 < (HEAP32[i4 + 28 >> 2] | 0) >>> 0) { - i10 = (HEAP32[i4 + 12 >> 2] | 0) + (i6 << 4) | 0; - STACKTOP = i3; - return i10 | 0; - } - HEAPF64[i8 >> 3] = d5 + 1.0; - i6 = (HEAP32[i8 + 4 >> 2] | 0) + (HEAP32[i8 >> 2] | 0) | 0; - if ((i6 | 0) < 0) { - i7 = 0 - i6 | 0; - i6 = (i6 | 0) == (i7 | 0) ? 0 : i7; - } - i4 = (HEAP32[i4 + 16 >> 2] | 0) + (((i6 | 0) % ((1 << (HEAPU8[i4 + 7 | 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; - while (1) { - if ((HEAP32[i4 + 24 >> 2] | 0) == 3 ? +HEAPF64[i4 + 16 >> 3] == d5 : 0) { - break; - } - i6 = HEAP32[i4 + 28 >> 2] | 0; - if ((i6 | 0) == 0) { - i2 = 5192; - i1 = 22; - break; - } else { - i4 = i6; - } - } - if ((i1 | 0) == 22) { - STACKTOP = i3; - return i2 | 0; - } - i10 = i4; - STACKTOP = i3; - return i10 | 0; - } - } else if ((i10 | 0) == 0) { - i10 = 5192; - STACKTOP = i3; - return i10 | 0; - } - i8 = _mainposition(i4, i6) | 0; - while (1) { - if ((HEAP32[i8 + 24 >> 2] | 0) == (HEAP32[i7 >> 2] | 0) ? (_luaV_equalobj_(0, i8 + 16 | 0, i6) | 0) != 0 : 0) { - break; - } - i4 = HEAP32[i8 + 28 >> 2] | 0; - if ((i4 | 0) == 0) { - i2 = 5192; - i1 = 22; - break; - } else { - i8 = i4; - } - } - if ((i1 | 0) == 22) { - STACKTOP = i3; - return i2 | 0; - } - i10 = i8; - STACKTOP = i3; - return i10 | 0; -} -function _suffixedexp(i1, i8) { - i1 = i1 | 0; - i8 = i8 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 80 | 0; - i10 = i2 + 48 | 0; - i3 = i2 + 24 | 0; - i6 = i2; - i4 = i1 + 48 | 0; - i9 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[i1 + 4 >> 2] | 0; - i7 = i1 + 16 | 0; - i12 = HEAP32[i7 >> 2] | 0; - if ((i12 | 0) == 40) { - _luaX_next(i1); - _subexpr(i1, i8, 0) | 0; - _check_match(i1, 41, 40, i5); - _luaK_dischargevars(HEAP32[i4 >> 2] | 0, i8); - i11 = i1 + 24 | 0; - } else if ((i12 | 0) == 288) { - i11 = i1 + 24 | 0; - i13 = HEAP32[i11 >> 2] | 0; - _luaX_next(i1); - i12 = HEAP32[i4 >> 2] | 0; - if ((_singlevaraux(i12, i13, i8, 1) | 0) == 0) { - _singlevaraux(i12, HEAP32[i1 + 72 >> 2] | 0, i8, 1) | 0; - i13 = _luaK_stringK(HEAP32[i4 >> 2] | 0, i13) | 0; - HEAP32[i10 + 16 >> 2] = -1; - HEAP32[i10 + 20 >> 2] = -1; - HEAP32[i10 >> 2] = 4; - HEAP32[i10 + 8 >> 2] = i13; - _luaK_indexed(i12, i8, i10); - } - } else { - _luaX_syntaxerror(i1, 6656); - } - i10 = i6 + 16 | 0; - i12 = i6 + 20 | 0; - i13 = i6 + 8 | 0; - L7 : while (1) { - switch (HEAP32[i7 >> 2] | 0) { - case 46: - { - _fieldsel(i1, i8); - continue L7; - } - case 91: - { - _luaK_exp2anyregup(i9, i8); - _luaX_next(i1); - _subexpr(i1, i3, 0) | 0; - _luaK_exp2val(HEAP32[i4 >> 2] | 0, i3); - if ((HEAP32[i7 >> 2] | 0) != 93) { - i3 = 10; - break L7; - } - _luaX_next(i1); - _luaK_indexed(i9, i8, i3); - continue L7; - } - case 58: - { - _luaX_next(i1); - if ((HEAP32[i7 >> 2] | 0) != 288) { - i3 = 13; - break L7; - } - i14 = HEAP32[i11 >> 2] | 0; - _luaX_next(i1); - i14 = _luaK_stringK(HEAP32[i4 >> 2] | 0, i14) | 0; - HEAP32[i10 >> 2] = -1; - HEAP32[i12 >> 2] = -1; - HEAP32[i6 >> 2] = 4; - HEAP32[i13 >> 2] = i14; - _luaK_self(i9, i8, i6); - _funcargs(i1, i8, i5); - continue L7; - } - case 123: - case 289: - case 40: - { - _luaK_exp2nextreg(i9, i8); - _funcargs(i1, i8, i5); - continue L7; - } - default: - { - i3 = 16; - break L7; - } - } - } - if ((i3 | 0) == 10) { - _error_expected(i1, 93); - } else if ((i3 | 0) == 13) { - _error_expected(i1, 288); - } else if ((i3 | 0) == 16) { - STACKTOP = i2; - return; - } -} -function _luaK_patchlist(i2, i7, i3) { - i2 = i2 | 0; - i7 = i7 | 0; - i3 = i3 | 0; - var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0; - i1 = STACKTOP; - if ((HEAP32[i2 + 20 >> 2] | 0) == (i3 | 0)) { - HEAP32[i2 + 24 >> 2] = i3; - i3 = i2 + 28 | 0; - if ((i7 | 0) == -1) { - STACKTOP = i1; - return; - } - i6 = HEAP32[i3 >> 2] | 0; - if ((i6 | 0) == -1) { - HEAP32[i3 >> 2] = i7; - STACKTOP = i1; - return; - } - i5 = HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i3 = i5 + (i6 << 2) | 0; - i4 = HEAP32[i3 >> 2] | 0; - i8 = (i4 >>> 14) + -131071 | 0; - if ((i8 | 0) == -1) { - break; - } - i8 = i6 + 1 + i8 | 0; - if ((i8 | 0) == -1) { - break; - } else { - i6 = i8; - } - } - i5 = ~i6 + i7 | 0; - if ((((i5 | 0) > -1 ? i5 : 0 - i5 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i2 + 12 >> 2] | 0, 10624); - } - HEAP32[i3 >> 2] = (i5 << 14) + 2147467264 | i4 & 16383; - STACKTOP = i1; - return; - } - if ((i7 | 0) == -1) { - STACKTOP = i1; - return; - } - i6 = HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] | 0; - i10 = i7; - while (1) { - i7 = i6 + (i10 << 2) | 0; - i9 = HEAP32[i7 >> 2] | 0; - i8 = (i9 >>> 14) + -131071 | 0; - if ((i8 | 0) == -1) { - i8 = -1; - } else { - i8 = i10 + 1 + i8 | 0; - } - if ((i10 | 0) > 0 ? (i4 = i6 + (i10 + -1 << 2) | 0, i5 = HEAP32[i4 >> 2] | 0, (HEAP8[5584 + (i5 & 63) | 0] | 0) < 0) : 0) { - i12 = i4; - i11 = i5; - } else { - i12 = i7; - i11 = i9; - } - if ((i11 & 63 | 0) == 28) { - HEAP32[i12 >> 2] = i11 & 8372224 | i11 >>> 23 << 6 | 27; - i9 = ~i10 + i3 | 0; - if ((((i9 | 0) > -1 ? i9 : 0 - i9 | 0) | 0) > 131071) { - i3 = 20; - break; - } - i9 = HEAP32[i7 >> 2] & 16383 | (i9 << 14) + 2147467264; - } else { - i10 = ~i10 + i3 | 0; - if ((((i10 | 0) > -1 ? i10 : 0 - i10 | 0) | 0) > 131071) { - i3 = 23; - break; - } - i9 = i9 & 16383 | (i10 << 14) + 2147467264; - } - HEAP32[i7 >> 2] = i9; - if ((i8 | 0) == -1) { - i3 = 26; - break; - } else { - i10 = i8; - } - } - if ((i3 | 0) == 20) { - _luaX_syntaxerror(HEAP32[i2 + 12 >> 2] | 0, 10624); - } else if ((i3 | 0) == 23) { - _luaX_syntaxerror(HEAP32[i2 + 12 >> 2] | 0, 10624); - } else if ((i3 | 0) == 26) { - STACKTOP = i1; - return; - } -} -function _luaG_typeerror(i5, i6, i1) { - i5 = i5 | 0; - i6 = i6 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i3 = i2; - i2 = i2 + 16 | 0; - i8 = HEAP32[i5 + 16 >> 2] | 0; - HEAP32[i2 >> 2] = 0; - i4 = HEAP32[8528 + ((HEAP32[i6 + 8 >> 2] & 15) + 1 << 2) >> 2] | 0; - L1 : do { - if (!((HEAP8[i8 + 18 | 0] & 1) == 0)) { - i7 = HEAP32[HEAP32[i8 >> 2] >> 2] | 0; - i10 = HEAP8[i7 + 6 | 0] | 0; - L3 : do { - if (!(i10 << 24 >> 24 == 0)) { - i9 = i7 + 16 | 0; - i11 = i10 & 255; - i10 = 0; - while (1) { - i12 = i10 + 1 | 0; - if ((HEAP32[(HEAP32[i9 + (i10 << 2) >> 2] | 0) + 8 >> 2] | 0) == (i6 | 0)) { - break; - } - if ((i12 | 0) < (i11 | 0)) { - i10 = i12; - } else { - break L3; - } - } - i9 = HEAP32[(HEAP32[(HEAP32[i7 + 12 >> 2] | 0) + 28 >> 2] | 0) + (i10 << 3) >> 2] | 0; - if ((i9 | 0) == 0) { - i9 = 2104; - } else { - i9 = i9 + 16 | 0; - } - HEAP32[i2 >> 2] = i9; - i11 = i9; - i10 = 2072; - HEAP32[i3 >> 2] = i1; - i12 = i3 + 4 | 0; - HEAP32[i12 >> 2] = i10; - i12 = i3 + 8 | 0; - HEAP32[i12 >> 2] = i11; - i12 = i3 + 12 | 0; - HEAP32[i12 >> 2] = i4; - _luaG_runerror(i5, 1840, i3); - } - } while (0); - i9 = HEAP32[i8 + 24 >> 2] | 0; - i10 = HEAP32[i8 + 4 >> 2] | 0; - if (i9 >>> 0 < i10 >>> 0) { - i12 = i9; - while (1) { - i11 = i12 + 16 | 0; - if ((i12 | 0) == (i6 | 0)) { - break; - } - if (i11 >>> 0 < i10 >>> 0) { - i12 = i11; - } else { - break L1; - } - } - i12 = HEAP32[i7 + 12 >> 2] | 0; - i6 = _getobjname(i12, ((HEAP32[i8 + 28 >> 2] | 0) - (HEAP32[i12 + 12 >> 2] | 0) >> 2) + -1 | 0, i6 - i9 >> 4, i2) | 0; - if ((i6 | 0) != 0) { - i11 = HEAP32[i2 >> 2] | 0; - i10 = i6; - HEAP32[i3 >> 2] = i1; - i12 = i3 + 4 | 0; - HEAP32[i12 >> 2] = i10; - i12 = i3 + 8 | 0; - HEAP32[i12 >> 2] = i11; - i12 = i3 + 12 | 0; - HEAP32[i12 >> 2] = i4; - _luaG_runerror(i5, 1840, i3); - } - } - } - } while (0); - HEAP32[i3 >> 2] = i1; - HEAP32[i3 + 4 >> 2] = i4; - _luaG_runerror(i5, 1880, i3); -} -function _lua_setmetatable(i1, i7) { - i1 = i1 | 0; - i7 = i7 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0; - i4 = STACKTOP; - i6 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i7 | 0) <= 0) { - if (!((i7 | 0) < -1000999)) { - i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i7 << 4) | 0; - break; - } - if ((i7 | 0) == -1001e3) { - i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i7 = -1001e3 - i7 | 0; - i6 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i5 = HEAP32[i6 >> 2] | 0, (i7 | 0) <= (HEAPU8[i5 + 6 | 0] | 0 | 0)) : 0) { - i5 = i5 + (i7 + -1 << 4) + 16 | 0; - } else { - i5 = 5192; - } - } else { - i5 = (HEAP32[i6 >> 2] | 0) + (i7 << 4) | 0; - i5 = i5 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i5 : 5192; - } - } while (0); - i6 = i1 + 8 | 0; - i7 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i7 + -8 >> 2] | 0) == 0) { - i7 = 0; - } else { - i7 = HEAP32[i7 + -16 >> 2] | 0; - } - i8 = HEAP32[i5 + 8 >> 2] & 15; - if ((i8 | 0) == 5) { - HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] = i7; - if ((i7 | 0) == 0) { - i8 = HEAP32[i6 >> 2] | 0; - i8 = i8 + -16 | 0; - HEAP32[i6 >> 2] = i8; - STACKTOP = i4; - return 1; - } - if (!((HEAP8[i7 + 5 | 0] & 3) == 0) ? (i2 = HEAP32[i5 >> 2] | 0, !((HEAP8[i2 + 5 | 0] & 4) == 0)) : 0) { - _luaC_barrierback_(i1, i2); - } - _luaC_checkfinalizer(i1, HEAP32[i5 >> 2] | 0, i7); - i8 = HEAP32[i6 >> 2] | 0; - i8 = i8 + -16 | 0; - HEAP32[i6 >> 2] = i8; - STACKTOP = i4; - return 1; - } else if ((i8 | 0) == 7) { - HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] = i7; - if ((i7 | 0) == 0) { - i8 = HEAP32[i6 >> 2] | 0; - i8 = i8 + -16 | 0; - HEAP32[i6 >> 2] = i8; - STACKTOP = i4; - return 1; - } - if (!((HEAP8[i7 + 5 | 0] & 3) == 0) ? (i3 = HEAP32[i5 >> 2] | 0, !((HEAP8[i3 + 5 | 0] & 4) == 0)) : 0) { - _luaC_barrier_(i1, i3, i7); - } - _luaC_checkfinalizer(i1, HEAP32[i5 >> 2] | 0, i7); - i8 = HEAP32[i6 >> 2] | 0; - i8 = i8 + -16 | 0; - HEAP32[i6 >> 2] = i8; - STACKTOP = i4; - return 1; - } else { - HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + (i8 << 2) + 252 >> 2] = i7; - i8 = HEAP32[i6 >> 2] | 0; - i8 = i8 + -16 | 0; - HEAP32[i6 >> 2] = i8; - STACKTOP = i4; - return 1; - } - return 0; -} -function _recfield(i2, i10) { - i2 = i2 | 0; - i10 = i10 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i9 = i1 + 48 | 0; - i6 = i1 + 24 | 0; - i3 = i1; - i13 = i2 + 48 | 0; - i8 = HEAP32[i13 >> 2] | 0; - i5 = i8 + 48 | 0; - i4 = HEAP8[i5] | 0; - i7 = i2 + 16 | 0; - do { - if ((HEAP32[i7 >> 2] | 0) != 288) { - _luaX_next(i2); - _subexpr(i2, i6, 0) | 0; - _luaK_exp2val(HEAP32[i13 >> 2] | 0, i6); - if ((HEAP32[i7 >> 2] | 0) == 93) { - _luaX_next(i2); - i11 = i10 + 28 | 0; - break; - } else { - _error_expected(i2, 93); - } - } else { - i12 = i10 + 28 | 0; - if ((HEAP32[i12 >> 2] | 0) <= 2147483645) { - i11 = HEAP32[i2 + 24 >> 2] | 0; - _luaX_next(i2); - i11 = _luaK_stringK(HEAP32[i13 >> 2] | 0, i11) | 0; - HEAP32[i6 + 16 >> 2] = -1; - HEAP32[i6 + 20 >> 2] = -1; - HEAP32[i6 >> 2] = 4; - HEAP32[i6 + 8 >> 2] = i11; - i11 = i12; - break; - } - i14 = i8 + 12 | 0; - i13 = HEAP32[(HEAP32[i14 >> 2] | 0) + 52 >> 2] | 0; - i12 = HEAP32[(HEAP32[i8 >> 2] | 0) + 64 >> 2] | 0; - if ((i12 | 0) == 0) { - i16 = 6552; - HEAP32[i9 >> 2] = 6528; - i15 = i9 + 4 | 0; - HEAP32[i15 >> 2] = 2147483645; - i15 = i9 + 8 | 0; - HEAP32[i15 >> 2] = i16; - i15 = _luaO_pushfstring(i13, 6592, i9) | 0; - i16 = HEAP32[i14 >> 2] | 0; - _luaX_syntaxerror(i16, i15); - } - HEAP32[i9 >> 2] = i12; - i15 = _luaO_pushfstring(i13, 6568, i9) | 0; - HEAP32[i9 >> 2] = 6528; - i16 = i9 + 4 | 0; - HEAP32[i16 >> 2] = 2147483645; - i16 = i9 + 8 | 0; - HEAP32[i16 >> 2] = i15; - i16 = _luaO_pushfstring(i13, 6592, i9) | 0; - i15 = HEAP32[i14 >> 2] | 0; - _luaX_syntaxerror(i15, i16); - } - } while (0); - HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 1; - if ((HEAP32[i7 >> 2] | 0) == 61) { - _luaX_next(i2); - i16 = _luaK_exp2RK(i8, i6) | 0; - _subexpr(i2, i3, 0) | 0; - i15 = HEAP32[(HEAP32[i10 + 24 >> 2] | 0) + 8 >> 2] | 0; - _luaK_codeABC(i8, 10, i15, i16, _luaK_exp2RK(i8, i3) | 0) | 0; - HEAP8[i5] = i4; - STACKTOP = i1; - return; - } else { - _error_expected(i2, 61); - } -} -function _lua_newstate(i3, i6) { - i3 = i3 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i5 = i1 + 8 | 0; - i4 = i1; - i2 = FUNCTION_TABLE_iiiii[i3 & 3](i6, 0, 8, 400) | 0; - if ((i2 | 0) == 0) { - i6 = 0; - STACKTOP = i1; - return i6 | 0; - } - i7 = i2 + 112 | 0; - HEAP32[i2 >> 2] = 0; - HEAP8[i2 + 4 | 0] = 8; - HEAP8[i2 + 172 | 0] = 33; - HEAP8[i2 + 5 | 0] = 1; - HEAP8[i2 + 174 | 0] = 0; - HEAP32[i2 + 12 >> 2] = i7; - HEAP32[i2 + 28 >> 2] = 0; - HEAP32[i2 + 16 >> 2] = 0; - HEAP32[i2 + 32 >> 2] = 0; - HEAP32[i2 + 64 >> 2] = 0; - HEAP16[i2 + 38 >> 1] = 0; - HEAP32[i2 + 52 >> 2] = 0; - HEAP8[i2 + 40 | 0] = 0; - HEAP32[i2 + 44 >> 2] = 0; - HEAP8[i2 + 41 | 0] = 1; - HEAP32[i2 + 48 >> 2] = 0; - HEAP32[i2 + 56 >> 2] = 0; - HEAP16[i2 + 36 >> 1] = 1; - HEAP8[i2 + 6 | 0] = 0; - HEAP32[i2 + 68 >> 2] = 0; - HEAP32[i7 >> 2] = i3; - HEAP32[i2 + 116 >> 2] = i6; - HEAP32[i2 + 284 >> 2] = i2; - i3 = _time(0) | 0; - HEAP32[i4 >> 2] = i3; - HEAP32[i5 >> 2] = i2; - HEAP32[i5 + 4 >> 2] = i4; - HEAP32[i5 + 8 >> 2] = 5192; - HEAP32[i5 + 12 >> 2] = 1; - HEAP32[i2 + 168 >> 2] = _luaS_hash(i5, 16, i3) | 0; - i4 = i2 + 224 | 0; - HEAP32[i2 + 240 >> 2] = i4; - HEAP32[i2 + 244 >> 2] = i4; - HEAP8[i2 + 175 | 0] = 0; - i4 = i2 + 132 | 0; - HEAP32[i2 + 160 >> 2] = 0; - HEAP32[i2 + 256 >> 2] = 0; - HEAP32[i2 + 264 >> 2] = 0; - HEAP32[i2 + 280 >> 2] = 0; - HEAP32[i4 + 0 >> 2] = 0; - HEAP32[i4 + 4 >> 2] = 0; - HEAP32[i4 + 8 >> 2] = 0; - HEAP32[i4 + 12 >> 2] = 0; - HEAP32[i2 + 288 >> 2] = _lua_version(0) | 0; - HEAP8[i2 + 173 | 0] = 5; - i4 = i2 + 120 | 0; - i5 = i2 + 180 | 0; - i3 = i5 + 40 | 0; - do { - HEAP32[i5 >> 2] = 0; - i5 = i5 + 4 | 0; - } while ((i5 | 0) < (i3 | 0)); - HEAP32[i4 >> 2] = 400; - HEAP32[i2 + 124 >> 2] = 0; - HEAP32[i2 + 268 >> 2] = 200; - HEAP32[i2 + 272 >> 2] = 200; - HEAP32[i2 + 276 >> 2] = 200; - i5 = i2 + 364 | 0; - i3 = i5 + 36 | 0; - do { - HEAP32[i5 >> 2] = 0; - i5 = i5 + 4 | 0; - } while ((i5 | 0) < (i3 | 0)); - if ((_luaD_rawrunprotected(i2, 8, 0) | 0) == 0) { - i7 = i2; - STACKTOP = i1; - return i7 | 0; - } - _close_state(i2); - i7 = 0; - STACKTOP = i1; - return i7 | 0; -} -function _luaU_undump(i1, i7, i8, i9) { - i1 = i1 | 0; - i7 = i7 | 0; - i8 = i8 | 0; - i9 = i9 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i4 = i2 + 16 | 0; - i5 = i2 + 34 | 0; - i3 = i2; - i6 = HEAP8[i9] | 0; - if (i6 << 24 >> 24 == 27) { - HEAP32[i3 + 12 >> 2] = 8800; - } else if (i6 << 24 >> 24 == 61 | i6 << 24 >> 24 == 64) { - HEAP32[i3 + 12 >> 2] = i9 + 1; - } else { - HEAP32[i3 + 12 >> 2] = i9; - } - HEAP32[i3 >> 2] = i1; - HEAP32[i3 + 4 >> 2] = i7; - HEAP32[i3 + 8 >> 2] = i8; - HEAP32[i4 >> 2] = 1635077147; - HEAP8[i4 + 4 | 0] = 82; - HEAP8[i4 + 5 | 0] = 0; - HEAP8[i4 + 6 | 0] = 1; - HEAP8[i4 + 7 | 0] = 4; - HEAP8[i4 + 8 | 0] = 4; - HEAP8[i4 + 9 | 0] = 4; - HEAP8[i4 + 10 | 0] = 8; - i9 = i4 + 12 | 0; - HEAP8[i4 + 11 | 0] = 0; - HEAP8[i9 + 0 | 0] = HEAP8[8816 | 0] | 0; - HEAP8[i9 + 1 | 0] = HEAP8[8817 | 0] | 0; - HEAP8[i9 + 2 | 0] = HEAP8[8818 | 0] | 0; - HEAP8[i9 + 3 | 0] = HEAP8[8819 | 0] | 0; - HEAP8[i9 + 4 | 0] = HEAP8[8820 | 0] | 0; - HEAP8[i9 + 5 | 0] = HEAP8[8821 | 0] | 0; - HEAP8[i5] = 27; - if ((_luaZ_read(i7, i5 + 1 | 0, 17) | 0) != 0) { - _error(i3, 8824); - } - if ((_memcmp(i4, i5, 18) | 0) == 0) { - i4 = _luaF_newLclosure(i1, 1) | 0; - i5 = i1 + 8 | 0; - i9 = HEAP32[i5 >> 2] | 0; - HEAP32[i9 >> 2] = i4; - HEAP32[i9 + 8 >> 2] = 70; - i9 = (HEAP32[i5 >> 2] | 0) + 16 | 0; - HEAP32[i5 >> 2] = i9; - if (((HEAP32[i1 + 24 >> 2] | 0) - i9 | 0) < 16) { - _luaD_growstack(i1, 0); - } - i9 = _luaF_newproto(i1) | 0; - i6 = i4 + 12 | 0; - HEAP32[i6 >> 2] = i9; - _LoadFunction(i3, i9); - i6 = HEAP32[i6 >> 2] | 0; - i3 = HEAP32[i6 + 40 >> 2] | 0; - if ((i3 | 0) == 1) { - i9 = i4; - STACKTOP = i2; - return i9 | 0; - } - i9 = _luaF_newLclosure(i1, i3) | 0; - HEAP32[i9 + 12 >> 2] = i6; - i8 = HEAP32[i5 >> 2] | 0; - HEAP32[i8 + -16 >> 2] = i9; - HEAP32[i8 + -8 >> 2] = 70; - STACKTOP = i2; - return i9 | 0; - } - if ((_memcmp(i4, i5, 4) | 0) != 0) { - _error(i3, 8888); - } - if ((_memcmp(i4, i5, 6) | 0) != 0) { - _error(i3, 8896); - } - if ((_memcmp(i4, i5, 12) | 0) == 0) { - _error(i3, 8872); - } else { - _error(i3, 8920); - } - return 0; -} -function _lua_compare(i2, i7, i5, i3) { - i2 = i2 | 0; - i7 = i7 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - var i1 = 0, i4 = 0, i6 = 0, i8 = 0; - i1 = STACKTOP; - i4 = HEAP32[i2 + 16 >> 2] | 0; - do { - if ((i7 | 0) <= 0) { - if (!((i7 | 0) < -1000999)) { - i6 = (HEAP32[i2 + 8 >> 2] | 0) + (i7 << 4) | 0; - break; - } - if ((i7 | 0) == -1001e3) { - i6 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i7 = -1001e3 - i7 | 0; - i8 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i8 + 8 >> 2] | 0) != 22 ? (i6 = HEAP32[i8 >> 2] | 0, (i7 | 0) <= (HEAPU8[i6 + 6 | 0] | 0 | 0)) : 0) { - i6 = i6 + (i7 + -1 << 4) + 16 | 0; - } else { - i6 = 5192; - } - } else { - i6 = (HEAP32[i4 >> 2] | 0) + (i7 << 4) | 0; - i6 = i6 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i6 : 5192; - } - } while (0); - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i4 = (HEAP32[i2 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i4 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) == 22) { - i8 = 0; - STACKTOP = i1; - return i8 | 0; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((i5 | 0) > (HEAPU8[i4 + 6 | 0] | 0 | 0)) { - i8 = 0; - STACKTOP = i1; - return i8 | 0; - } else { - i4 = i4 + (i5 + -1 << 4) + 16 | 0; - break; - } - } else { - i4 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i4 = i4 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - if ((i6 | 0) == 5192 | (i4 | 0) == 5192) { - i8 = 0; - STACKTOP = i1; - return i8 | 0; - } - if ((i3 | 0) == 1) { - i8 = _luaV_lessthan(i2, i6, i4) | 0; - STACKTOP = i1; - return i8 | 0; - } else if ((i3 | 0) == 2) { - i8 = _luaV_lessequal(i2, i6, i4) | 0; - STACKTOP = i1; - return i8 | 0; - } else if ((i3 | 0) == 0) { - if ((HEAP32[i6 + 8 >> 2] | 0) == (HEAP32[i4 + 8 >> 2] | 0)) { - i2 = (_luaV_equalobj_(i2, i6, i4) | 0) != 0; - } else { - i2 = 0; - } - i8 = i2 & 1; - STACKTOP = i1; - return i8 | 0; - } else { - i8 = 0; - STACKTOP = i1; - return i8 | 0; - } - return 0; -} -function _lexerror(i7, i3, i8) { - i7 = i7 | 0; - i3 = i3 | 0; - i8 = i8 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i12 = STACKTOP; - STACKTOP = STACKTOP + 80 | 0; - i2 = i12; - i12 = i12 + 12 | 0; - _luaO_chunkid(i12, (HEAP32[i7 + 68 >> 2] | 0) + 16 | 0, 60); - i1 = i7 + 52 | 0; - i4 = HEAP32[i1 >> 2] | 0; - i13 = HEAP32[i7 + 4 >> 2] | 0; - HEAP32[i2 >> 2] = i12; - HEAP32[i2 + 4 >> 2] = i13; - HEAP32[i2 + 8 >> 2] = i3; - i4 = _luaO_pushfstring(i4, 12592, i2) | 0; - if ((i8 | 0) == 0) { - i13 = HEAP32[i1 >> 2] | 0; - _luaD_throw(i13, 3); - } - i3 = HEAP32[i1 >> 2] | 0; - do { - if (!((i8 + -287 | 0) >>> 0 < 3)) { - if ((i8 | 0) >= 257) { - i5 = HEAP32[12096 + (i8 + -257 << 2) >> 2] | 0; - if ((i8 | 0) >= 286) { - break; - } - HEAP32[i2 >> 2] = i5; - i5 = _luaO_pushfstring(i3, 12256, i2) | 0; - break; - } - if ((HEAP8[i8 + 10913 | 0] & 4) == 0) { - HEAP32[i2 >> 2] = i8; - i5 = _luaO_pushfstring(i3, 12240, i2) | 0; - break; - } else { - HEAP32[i2 >> 2] = i8; - i5 = _luaO_pushfstring(i3, 12232, i2) | 0; - break; - } - } else { - i11 = i7 + 60 | 0; - i12 = HEAP32[i11 >> 2] | 0; - i10 = i12 + 4 | 0; - i13 = HEAP32[i10 >> 2] | 0; - i8 = i12 + 8 | 0; - i9 = HEAP32[i8 >> 2] | 0; - do { - if ((i13 + 1 | 0) >>> 0 > i9 >>> 0) { - if (i9 >>> 0 > 2147483645) { - _lexerror(i7, 12368, 0); - } - i7 = i9 << 1; - if ((i7 | 0) == -2) { - _luaM_toobig(i3); - } else { - i6 = _luaM_realloc_(i3, HEAP32[i12 >> 2] | 0, i9, i7) | 0; - HEAP32[i12 >> 2] = i6; - HEAP32[i8 >> 2] = i7; - i5 = HEAP32[i10 >> 2] | 0; - break; - } - } else { - i5 = i13; - i6 = HEAP32[i12 >> 2] | 0; - } - } while (0); - HEAP32[i10 >> 2] = i5 + 1; - HEAP8[i6 + i5 | 0] = 0; - i5 = HEAP32[i1 >> 2] | 0; - HEAP32[i2 >> 2] = HEAP32[HEAP32[i11 >> 2] >> 2]; - i5 = _luaO_pushfstring(i5, 12256, i2) | 0; - } - } while (0); - HEAP32[i2 >> 2] = i4; - HEAP32[i2 + 4 >> 2] = i5; - _luaO_pushfstring(i3, 12608, i2) | 0; - i13 = HEAP32[i1 >> 2] | 0; - _luaD_throw(i13, 3); -} -function _luaV_objlen(i2, i5, i1) { - i2 = i2 | 0; - i5 = i5 | 0; - i1 = i1 | 0; - var i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0; - i3 = STACKTOP; - i4 = i1 + 8 | 0; - i8 = HEAP32[i4 >> 2] & 15; - do { - if ((i8 | 0) == 5) { - i7 = HEAP32[i1 >> 2] | 0; - i8 = HEAP32[i7 + 8 >> 2] | 0; - if (((i8 | 0) != 0 ? (HEAP8[i8 + 6 | 0] & 16) == 0 : 0) ? (i6 = _luaT_gettm(i8, 4, HEAP32[(HEAP32[i2 + 12 >> 2] | 0) + 200 >> 2] | 0) | 0, (i6 | 0) != 0) : 0) { - i7 = i6; - break; - } - HEAPF64[i5 >> 3] = +(_luaH_getn(i7) | 0); - HEAP32[i5 + 8 >> 2] = 3; - STACKTOP = i3; - return; - } else if ((i8 | 0) != 4) { - i6 = _luaT_gettmbyobj(i2, i1, 4) | 0; - if ((HEAP32[i6 + 8 >> 2] | 0) == 0) { - _luaG_typeerror(i2, i1, 9024); - } else { - i7 = i6; - } - } else { - HEAPF64[i5 >> 3] = +((HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) >>> 0); - HEAP32[i5 + 8 >> 2] = 3; - STACKTOP = i3; - return; - } - } while (0); - i6 = i2 + 28 | 0; - i8 = i5 - (HEAP32[i6 >> 2] | 0) | 0; - i5 = i2 + 8 | 0; - i11 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i11 + 16; - i12 = i7; - i10 = HEAP32[i12 + 4 >> 2] | 0; - i9 = i11; - HEAP32[i9 >> 2] = HEAP32[i12 >> 2]; - HEAP32[i9 + 4 >> 2] = i10; - HEAP32[i11 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i7 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i7 + 16; - i11 = i1; - i9 = HEAP32[i11 + 4 >> 2] | 0; - i10 = i7; - HEAP32[i10 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i10 + 4 >> 2] = i9; - HEAP32[i7 + 8 >> 2] = HEAP32[i4 >> 2]; - i7 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i7 + 16; - i10 = i1; - i9 = HEAP32[i10 + 4 >> 2] | 0; - i1 = i7; - HEAP32[i1 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i1 + 4 >> 2] = i9; - HEAP32[i7 + 8 >> 2] = HEAP32[i4 >> 2]; - _luaD_call(i2, (HEAP32[i5 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i2 + 16 >> 2] | 0) + 18 | 0] & 1); - i7 = HEAP32[i6 >> 2] | 0; - i6 = HEAP32[i5 >> 2] | 0; - i2 = i6 + -16 | 0; - HEAP32[i5 >> 2] = i2; - i4 = HEAP32[i2 + 4 >> 2] | 0; - i5 = i7 + i8 | 0; - HEAP32[i5 >> 2] = HEAP32[i2 >> 2]; - HEAP32[i5 + 4 >> 2] = i4; - HEAP32[i7 + (i8 + 8) >> 2] = HEAP32[i6 + -8 >> 2]; - STACKTOP = i3; - return; -} -function _get_equalTM(i6, i5, i4) { - i6 = i6 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i7 = 0; - i1 = STACKTOP; - L1 : do { - if (((i5 | 0) != 0 ? (HEAP8[i5 + 6 | 0] & 32) == 0 : 0) ? (i7 = i6 + 12 | 0, i2 = _luaT_gettm(i5, 5, HEAP32[(HEAP32[i7 >> 2] | 0) + 204 >> 2] | 0) | 0, (i2 | 0) != 0) : 0) { - if ((i5 | 0) != (i4 | 0)) { - if (((i4 | 0) != 0 ? (HEAP8[i4 + 6 | 0] & 32) == 0 : 0) ? (i3 = _luaT_gettm(i4, 5, HEAP32[(HEAP32[i7 >> 2] | 0) + 204 >> 2] | 0) | 0, (i3 | 0) != 0) : 0) { - i4 = HEAP32[i2 + 8 >> 2] | 0; - L9 : do { - if ((i4 | 0) == (HEAP32[i3 + 8 >> 2] | 0)) { - switch (i4 & 63 | 0) { - case 3: - { - i3 = +HEAPF64[i2 >> 3] == +HEAPF64[i3 >> 3] | 0; - break; - } - case 22: - { - i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0; - break; - } - case 5: - { - if ((HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0)) { - break L1; - } else { - break L9; - } - } - case 1: - { - i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0; - break; - } - case 4: - { - i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0; - break; - } - case 0: - { - break L1; - } - case 7: - { - if ((HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0)) { - break L1; - } else { - break L9; - } - } - case 2: - { - i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0; - break; - } - case 20: - { - i3 = _luaS_eqlngstr(HEAP32[i2 >> 2] | 0, HEAP32[i3 >> 2] | 0) | 0; - break; - } - default: - { - i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0; - } - } - if ((i3 | 0) != 0) { - break L1; - } - } - } while (0); - i2 = 0; - } else { - i2 = 0; - } - } - } else { - i2 = 0; - } - } while (0); - STACKTOP = i1; - return i2 | 0; -} -function _luaS_newlstr(i2, i4, i3) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i1 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i1 = STACKTOP; - if (!(i3 >>> 0 < 41)) { - if ((i3 + 1 | 0) >>> 0 > 4294967277) { - _luaM_toobig(i2); - } - i10 = HEAP32[(HEAP32[i2 + 12 >> 2] | 0) + 56 >> 2] | 0; - i11 = _luaC_newobj(i2, 20, i3 + 17 | 0, 0, 0) | 0; - HEAP32[i11 + 12 >> 2] = i3; - HEAP32[i11 + 8 >> 2] = i10; - HEAP8[i11 + 6 | 0] = 0; - i10 = i11 + 16 | 0; - _memcpy(i10 | 0, i4 | 0, i3 | 0) | 0; - HEAP8[i10 + i3 | 0] = 0; - STACKTOP = i1; - return i11 | 0; - } - i5 = HEAP32[i2 + 12 >> 2] | 0; - i6 = HEAP32[i5 + 56 >> 2] ^ i3; - i7 = (i3 >>> 5) + 1 | 0; - if (!(i7 >>> 0 > i3 >>> 0)) { - i8 = i3; - do { - i6 = (i6 << 5) + (i6 >>> 2) + (HEAPU8[i4 + (i8 + -1) | 0] | 0) ^ i6; - i8 = i8 - i7 | 0; - } while (!(i8 >>> 0 < i7 >>> 0)); - } - i10 = i5 + 32 | 0; - i9 = HEAP32[i10 >> 2] | 0; - i7 = i5 + 24 | 0; - i8 = HEAP32[i7 >> 2] | 0; - i11 = HEAP32[i8 + ((i9 + -1 & i6) << 2) >> 2] | 0; - L12 : do { - if ((i11 | 0) != 0) { - while (1) { - if (((i6 | 0) == (HEAP32[i11 + 8 >> 2] | 0) ? (HEAP32[i11 + 12 >> 2] | 0) == (i3 | 0) : 0) ? (_memcmp(i4, i11 + 16 | 0, i3) | 0) == 0 : 0) { - break; - } - i11 = HEAP32[i11 >> 2] | 0; - if ((i11 | 0) == 0) { - break L12; - } - } - i2 = i11 + 5 | 0; - i3 = (HEAPU8[i2] | 0) ^ 3; - if ((((HEAPU8[i5 + 60 | 0] | 0) ^ 3) & i3 | 0) != 0) { - STACKTOP = i1; - return i11 | 0; - } - HEAP8[i2] = i3; - STACKTOP = i1; - return i11 | 0; - } - } while (0); - i5 = i5 + 28 | 0; - if ((HEAP32[i5 >> 2] | 0) >>> 0 >= i9 >>> 0 & (i9 | 0) < 1073741823) { - _luaS_resize(i2, i9 << 1); - i9 = HEAP32[i10 >> 2] | 0; - i8 = HEAP32[i7 >> 2] | 0; - } - i11 = _luaC_newobj(i2, 4, i3 + 17 | 0, i8 + ((i9 + -1 & i6) << 2) | 0, 0) | 0; - HEAP32[i11 + 12 >> 2] = i3; - HEAP32[i11 + 8 >> 2] = i6; - HEAP8[i11 + 6 | 0] = 0; - i10 = i11 + 16 | 0; - _memcpy(i10 | 0, i4 | 0, i3 | 0) | 0; - HEAP8[i10 + i3 | 0] = 0; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 1; - STACKTOP = i1; - return i11 | 0; -} -function _lua_pcallk(i3, i7, i2, i9, i6, i5) { - i3 = i3 | 0; - i7 = i7 | 0; - i2 = i2 | 0; - i9 = i9 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - var i1 = 0, i4 = 0, i8 = 0, i10 = 0, i11 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i1; - if ((i9 | 0) == 0) { - i9 = 0; - } else { - i10 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i9 | 0) <= 0) { - if (!((i9 | 0) < -1000999)) { - i8 = (HEAP32[i3 + 8 >> 2] | 0) + (i9 << 4) | 0; - break; - } - if ((i9 | 0) == -1001e3) { - i8 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0; - break; - } - i9 = -1001e3 - i9 | 0; - i10 = HEAP32[i10 >> 2] | 0; - if ((HEAP32[i10 + 8 >> 2] | 0) != 22 ? (i8 = HEAP32[i10 >> 2] | 0, (i9 | 0) <= (HEAPU8[i8 + 6 | 0] | 0)) : 0) { - i8 = i8 + (i9 + -1 << 4) + 16 | 0; - } else { - i8 = 5192; - } - } else { - i8 = (HEAP32[i10 >> 2] | 0) + (i9 << 4) | 0; - i8 = i8 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i8 : 5192; - } - } while (0); - i9 = i8 - (HEAP32[i3 + 28 >> 2] | 0) | 0; - } - i8 = i3 + 8 | 0; - i7 = (HEAP32[i8 >> 2] | 0) + (~i7 << 4) | 0; - HEAP32[i4 >> 2] = i7; - if ((i5 | 0) != 0 ? (HEAP16[i3 + 36 >> 1] | 0) == 0 : 0) { - i11 = HEAP32[i3 + 16 >> 2] | 0; - HEAP32[i11 + 28 >> 2] = i5; - HEAP32[i11 + 24 >> 2] = i6; - HEAP32[i11 + 20 >> 2] = (HEAP32[i4 >> 2] | 0) - (HEAP32[i3 + 28 >> 2] | 0); - HEAP8[i11 + 36 | 0] = HEAP8[i3 + 41 | 0] | 0; - i10 = i3 + 68 | 0; - i7 = i11 + 32 | 0; - HEAP32[i7 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i10 >> 2] = i9; - i9 = i11 + 18 | 0; - HEAP8[i9] = HEAPU8[i9] | 16; - _luaD_call(i3, HEAP32[i4 >> 2] | 0, i2, 1); - HEAP8[i9] = HEAP8[i9] & 239; - HEAP32[i10 >> 2] = HEAP32[i7 >> 2]; - i4 = 0; - } else { - HEAP32[i4 + 4 >> 2] = i2; - i4 = _luaD_pcall(i3, 3, i4, i7 - (HEAP32[i3 + 28 >> 2] | 0) | 0, i9) | 0; - } - if (!((i2 | 0) == -1)) { - STACKTOP = i1; - return i4 | 0; - } - i2 = (HEAP32[i3 + 16 >> 2] | 0) + 4 | 0; - i3 = HEAP32[i8 >> 2] | 0; - if (!((HEAP32[i2 >> 2] | 0) >>> 0 < i3 >>> 0)) { - STACKTOP = i1; - return i4 | 0; - } - HEAP32[i2 >> 2] = i3; - STACKTOP = i1; - return i4 | 0; -} -function _lua_getupvalue(i1, i6, i3) { - i1 = i1 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - i5 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i6 | 0) <= 0) { - if (!((i6 | 0) < -1000999)) { - i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i6 = -1001e3 - i6 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i4 = i4 + (i6 + -1 << 4) + 16 | 0; - } else { - i4 = 5192; - } - } else { - i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0; - i4 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - i5 = HEAP32[i4 + 8 >> 2] & 63; - do { - if ((i5 | 0) == 38) { - i5 = HEAP32[i4 >> 2] | 0; - if ((i3 | 0) <= 0) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - if ((HEAPU8[i5 + 6 | 0] | 0 | 0) < (i3 | 0)) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } else { - i4 = 936; - i3 = i5 + (i3 + -1 << 4) + 16 | 0; - break; - } - } else if ((i5 | 0) == 6) { - i5 = HEAP32[i4 >> 2] | 0; - i4 = HEAP32[i5 + 12 >> 2] | 0; - if ((i3 | 0) <= 0) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - if ((HEAP32[i4 + 40 >> 2] | 0) < (i3 | 0)) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - i6 = i3 + -1 | 0; - i3 = HEAP32[(HEAP32[i5 + 16 + (i6 << 2) >> 2] | 0) + 8 >> 2] | 0; - i4 = HEAP32[(HEAP32[i4 + 28 >> 2] | 0) + (i6 << 3) >> 2] | 0; - if ((i4 | 0) == 0) { - i4 = 936; - } else { - i4 = i4 + 16 | 0; - } - } else { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - } while (0); - i6 = i1 + 8 | 0; - i5 = HEAP32[i6 >> 2] | 0; - i8 = i3; - i7 = HEAP32[i8 + 4 >> 2] | 0; - i1 = i5; - HEAP32[i1 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i1 + 4 >> 2] = i7; - HEAP32[i5 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 16; - i6 = i4; - STACKTOP = i2; - return i6 | 0; -} -function _lua_copy(i1, i8, i4) { - i1 = i1 | 0; - i8 = i8 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0; - i2 = STACKTOP; - i3 = i1 + 16 | 0; - i6 = HEAP32[i3 >> 2] | 0; - do { - if ((i8 | 0) <= 0) { - if (!((i8 | 0) < -1000999)) { - i7 = (HEAP32[i1 + 8 >> 2] | 0) + (i8 << 4) | 0; - break; - } - if ((i8 | 0) == -1001e3) { - i7 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i8 = -1001e3 - i8 | 0; - i9 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) != 22 ? (i7 = HEAP32[i9 >> 2] | 0, (i8 | 0) <= (HEAPU8[i7 + 6 | 0] | 0 | 0)) : 0) { - i7 = i7 + (i8 + -1 << 4) + 16 | 0; - } else { - i7 = 5192; - } - } else { - i7 = (HEAP32[i6 >> 2] | 0) + (i8 << 4) | 0; - i7 = i7 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i7 : 5192; - } - } while (0); - do { - if ((i4 | 0) <= 0) { - if (!((i4 | 0) < -1000999)) { - i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i4 << 4) | 0; - break; - } - if ((i4 | 0) == -1001e3) { - i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i8 = -1001e3 - i4 | 0; - i6 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i5 = HEAP32[i6 >> 2] | 0, (i8 | 0) <= (HEAPU8[i5 + 6 | 0] | 0 | 0)) : 0) { - i5 = i5 + (i8 + -1 << 4) + 16 | 0; - } else { - i5 = 5192; - } - } else { - i5 = (HEAP32[i6 >> 2] | 0) + (i4 << 4) | 0; - i5 = i5 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i5 : 5192; - } - } while (0); - i8 = i7; - i9 = HEAP32[i8 + 4 >> 2] | 0; - i6 = i5; - HEAP32[i6 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i6 + 4 >> 2] = i9; - i6 = i7 + 8 | 0; - HEAP32[i5 + 8 >> 2] = HEAP32[i6 >> 2]; - if (!((i4 | 0) < -1001e3)) { - STACKTOP = i2; - return; - } - if ((HEAP32[i6 >> 2] & 64 | 0) == 0) { - STACKTOP = i2; - return; - } - i4 = HEAP32[i7 >> 2] | 0; - if ((HEAP8[i4 + 5 | 0] & 3) == 0) { - STACKTOP = i2; - return; - } - i3 = HEAP32[HEAP32[HEAP32[i3 >> 2] >> 2] >> 2] | 0; - if ((HEAP8[i3 + 5 | 0] & 4) == 0) { - STACKTOP = i2; - return; - } - _luaC_barrier_(i1, i3, i4); - STACKTOP = i2; - return; -} -function _lua_tolstring(i4, i5, i1) { - i4 = i4 | 0; - i5 = i5 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i2 = STACKTOP; - i7 = i4 + 16 | 0; - i10 = HEAP32[i7 >> 2] | 0; - i6 = (i5 | 0) > 0; - do { - if (!i6) { - if (!((i5 | 0) < -1000999)) { - i8 = (HEAP32[i4 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i8 = (HEAP32[i4 + 12 >> 2] | 0) + 40 | 0; - break; - } - i9 = -1001e3 - i5 | 0; - i10 = HEAP32[i10 >> 2] | 0; - if ((HEAP32[i10 + 8 >> 2] | 0) != 22 ? (i8 = HEAP32[i10 >> 2] | 0, (i9 | 0) <= (HEAPU8[i8 + 6 | 0] | 0 | 0)) : 0) { - i8 = i8 + (i9 + -1 << 4) + 16 | 0; - } else { - i8 = 5192; - } - } else { - i8 = (HEAP32[i10 >> 2] | 0) + (i5 << 4) | 0; - i8 = i8 >>> 0 < (HEAP32[i4 + 8 >> 2] | 0) >>> 0 ? i8 : 5192; - } - } while (0); - do { - if ((HEAP32[i8 + 8 >> 2] & 15 | 0) != 4) { - if ((_luaV_tostring(i4, i8) | 0) == 0) { - if ((i1 | 0) == 0) { - i10 = 0; - STACKTOP = i2; - return i10 | 0; - } - HEAP32[i1 >> 2] = 0; - i10 = 0; - STACKTOP = i2; - return i10 | 0; - } - i8 = i4 + 12 | 0; - if ((HEAP32[(HEAP32[i8 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i4); - } - i7 = HEAP32[i7 >> 2] | 0; - if (i6) { - i3 = (HEAP32[i7 >> 2] | 0) + (i5 << 4) | 0; - i8 = i3 >>> 0 < (HEAP32[i4 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - break; - } - if (!((i5 | 0) < -1000999)) { - i8 = (HEAP32[i4 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i8 = (HEAP32[i8 >> 2] | 0) + 40 | 0; - break; - } - i4 = -1001e3 - i5 | 0; - i5 = HEAP32[i7 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i8 = i3 + (i4 + -1 << 4) + 16 | 0; - } else { - i8 = 5192; - } - } - } while (0); - i3 = HEAP32[i8 >> 2] | 0; - if ((i1 | 0) != 0) { - HEAP32[i1 >> 2] = HEAP32[i3 + 12 >> 2]; - } - i10 = i3 + 16 | 0; - STACKTOP = i2; - return i10 | 0; -} -function _luaD_pcall(i3, i6, i5, i13, i14) { - i3 = i3 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - i13 = i13 | 0; - i14 = i14 | 0; - var i1 = 0, i2 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0; - i1 = STACKTOP; - i10 = i3 + 16 | 0; - i11 = HEAP32[i10 >> 2] | 0; - i12 = i3 + 41 | 0; - i7 = HEAP8[i12] | 0; - i9 = i3 + 36 | 0; - i8 = HEAP16[i9 >> 1] | 0; - i4 = i3 + 68 | 0; - i2 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i14; - i5 = _luaD_rawrunprotected(i3, i6, i5) | 0; - if ((i5 | 0) == 0) { - HEAP32[i4 >> 2] = i2; - STACKTOP = i1; - return i5 | 0; - } - i6 = i3 + 28 | 0; - i14 = HEAP32[i6 >> 2] | 0; - i15 = i14 + i13 | 0; - _luaF_close(i3, i15); - if ((i5 | 0) == 6) { - i16 = _luaS_newlstr(i3, 2424, 23) | 0; - HEAP32[i15 >> 2] = i16; - HEAP32[i14 + (i13 + 8) >> 2] = HEAPU8[i16 + 4 | 0] | 0 | 64; - } else if ((i5 | 0) == 4) { - i16 = HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 180 >> 2] | 0; - HEAP32[i15 >> 2] = i16; - HEAP32[i14 + (i13 + 8) >> 2] = HEAPU8[i16 + 4 | 0] | 0 | 64; - } else { - i16 = HEAP32[i3 + 8 >> 2] | 0; - i18 = i16 + -16 | 0; - i17 = HEAP32[i18 + 4 >> 2] | 0; - HEAP32[i15 >> 2] = HEAP32[i18 >> 2]; - HEAP32[i15 + 4 >> 2] = i17; - HEAP32[i14 + (i13 + 8) >> 2] = HEAP32[i16 + -8 >> 2]; - } - i13 = i14 + (i13 + 16) | 0; - HEAP32[i3 + 8 >> 2] = i13; - HEAP32[i10 >> 2] = i11; - HEAP8[i12] = i7; - HEAP16[i9 >> 1] = i8; - if ((i11 | 0) != 0) { - do { - i7 = HEAP32[i11 + 4 >> 2] | 0; - i13 = i13 >>> 0 < i7 >>> 0 ? i7 : i13; - i11 = HEAP32[i11 + 8 >> 2] | 0; - } while ((i11 | 0) != 0); - } - i6 = i13 - (HEAP32[i6 >> 2] | 0) | 0; - i7 = (i6 >> 4) + 1 | 0; - i7 = ((i7 | 0) / 8 | 0) + 10 + i7 | 0; - i7 = (i7 | 0) > 1e6 ? 1e6 : i7; - if ((i6 | 0) > 15999984) { - HEAP32[i4 >> 2] = i2; - STACKTOP = i1; - return i5 | 0; - } - if ((i7 | 0) >= (HEAP32[i3 + 32 >> 2] | 0)) { - HEAP32[i4 >> 2] = i2; - STACKTOP = i1; - return i5 | 0; - } - _luaD_reallocstack(i3, i7); - HEAP32[i4 >> 2] = i2; - STACKTOP = i1; - return i5 | 0; -} -function _luaH_resize(i1, i4, i6, i9) { - i1 = i1 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - i9 = i9 | 0; - var i2 = 0, i3 = 0, i5 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0; - i3 = STACKTOP; - i8 = i4 + 28 | 0; - i5 = HEAP32[i8 >> 2] | 0; - i7 = HEAPU8[i4 + 7 | 0] | 0; - i2 = HEAP32[i4 + 16 >> 2] | 0; - if ((i5 | 0) < (i6 | 0)) { - if ((i6 + 1 | 0) >>> 0 > 268435455) { - _luaM_toobig(i1); - } - i11 = i4 + 12 | 0; - i10 = _luaM_realloc_(i1, HEAP32[i11 >> 2] | 0, i5 << 4, i6 << 4) | 0; - HEAP32[i11 >> 2] = i10; - i11 = HEAP32[i8 >> 2] | 0; - if ((i11 | 0) < (i6 | 0)) { - do { - HEAP32[i10 + (i11 << 4) + 8 >> 2] = 0; - i11 = i11 + 1 | 0; - } while ((i11 | 0) != (i6 | 0)); - } - HEAP32[i8 >> 2] = i6; - } - _setnodevector(i1, i4, i9); - do { - if ((i5 | 0) > (i6 | 0)) { - HEAP32[i8 >> 2] = i6; - i8 = i4 + 12 | 0; - i9 = i6; - do { - i10 = HEAP32[i8 >> 2] | 0; - if ((HEAP32[i10 + (i9 << 4) + 8 >> 2] | 0) == 0) { - i9 = i9 + 1 | 0; - } else { - i11 = i9 + 1 | 0; - _luaH_setint(i1, i4, i11, i10 + (i9 << 4) | 0); - i9 = i11; - } - } while ((i9 | 0) != (i5 | 0)); - if ((i6 + 1 | 0) >>> 0 > 268435455) { - _luaM_toobig(i1); - } else { - i11 = i4 + 12 | 0; - HEAP32[i11 >> 2] = _luaM_realloc_(i1, HEAP32[i11 >> 2] | 0, i5 << 4, i6 << 4) | 0; - break; - } - } - } while (0); - i5 = 1 << i7; - if ((i5 | 0) > 0) { - i6 = i5; - do { - i6 = i6 + -1 | 0; - i7 = i2 + (i6 << 5) + 8 | 0; - if ((HEAP32[i7 >> 2] | 0) != 0) { - i8 = i2 + (i6 << 5) + 16 | 0; - i9 = _luaH_get(i4, i8) | 0; - if ((i9 | 0) == 5192) { - i9 = _luaH_newkey(i1, i4, i8) | 0; - } - i8 = i2 + (i6 << 5) | 0; - i10 = HEAP32[i8 + 4 >> 2] | 0; - i11 = i9; - HEAP32[i11 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i11 + 4 >> 2] = i10; - HEAP32[i9 + 8 >> 2] = HEAP32[i7 >> 2]; - } - } while ((i6 | 0) > 0); - } - if ((i2 | 0) == 8016) { - STACKTOP = i3; - return; - } - _luaM_realloc_(i1, i2, i5 << 5, 0) | 0; - STACKTOP = i3; - return; -} -function _codearith(i4, i3, i2, i6, i5) { - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - var i1 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, d13 = 0.0; - i7 = STACKTOP; - if (((((((HEAP32[i2 >> 2] | 0) == 5 ? (HEAP32[i2 + 16 >> 2] | 0) == -1 : 0) ? (HEAP32[i2 + 20 >> 2] | 0) == -1 : 0) ? (HEAP32[i6 >> 2] | 0) == 5 : 0) ? (HEAP32[i6 + 16 >> 2] | 0) == -1 : 0) ? (HEAP32[i6 + 20 >> 2] | 0) == -1 : 0) ? (d13 = +HEAPF64[i6 + 8 >> 3], !((i3 & -2 | 0) == 16 & d13 == 0.0)) : 0) { - i12 = i2 + 8 | 0; - HEAPF64[i12 >> 3] = +_luaO_arith(i3 + -13 | 0, +HEAPF64[i12 >> 3], d13); - STACKTOP = i7; - return; - } - if ((i3 | 0) == 19 | (i3 | 0) == 21) { - i11 = 0; - } else { - i11 = _luaK_exp2RK(i4, i6) | 0; - } - i12 = _luaK_exp2RK(i4, i2) | 0; - if ((i12 | 0) > (i11 | 0)) { - if (((HEAP32[i2 >> 2] | 0) == 6 ? (i8 = HEAP32[i2 + 8 >> 2] | 0, (i8 & 256 | 0) == 0) : 0) ? (HEAPU8[i4 + 46 | 0] | 0 | 0) <= (i8 | 0) : 0) { - i10 = i4 + 48 | 0; - HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24; - } - if (((HEAP32[i6 >> 2] | 0) == 6 ? (i1 = HEAP32[i6 + 8 >> 2] | 0, (i1 & 256 | 0) == 0) : 0) ? (HEAPU8[i4 + 46 | 0] | 0 | 0) <= (i1 | 0) : 0) { - i10 = i4 + 48 | 0; - HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24; - } - } else { - if (((HEAP32[i6 >> 2] | 0) == 6 ? (i10 = HEAP32[i6 + 8 >> 2] | 0, (i10 & 256 | 0) == 0) : 0) ? (HEAPU8[i4 + 46 | 0] | 0 | 0) <= (i10 | 0) : 0) { - i10 = i4 + 48 | 0; - HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24; - } - if (((HEAP32[i2 >> 2] | 0) == 6 ? (i9 = HEAP32[i2 + 8 >> 2] | 0, (i9 & 256 | 0) == 0) : 0) ? (HEAPU8[i4 + 46 | 0] | 0 | 0) <= (i9 | 0) : 0) { - i10 = i4 + 48 | 0; - HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24; - } - } - HEAP32[i2 + 8 >> 2] = _luaK_code(i4, i11 << 14 | i3 | i12 << 23) | 0; - HEAP32[i2 >> 2] = 11; - HEAP32[(HEAP32[(HEAP32[i4 >> 2] | 0) + 20 >> 2] | 0) + ((HEAP32[i4 + 20 >> 2] | 0) + -1 << 2) >> 2] = i5; - STACKTOP = i7; - return; -} -function _GCTM(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i2 = i4 + 16 | 0; - i5 = i4; - i6 = HEAP32[i1 + 12 >> 2] | 0; - i9 = i6 + 104 | 0; - i8 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = HEAP32[i8 >> 2]; - i9 = i6 + 68 | 0; - HEAP32[i8 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i9 >> 2] = i8; - i9 = i8 + 5 | 0; - i7 = HEAPU8[i9] | 0; - HEAP8[i9] = i7 & 239; - if ((HEAPU8[i6 + 61 | 0] | 0) >= 2) { - HEAP8[i9] = HEAP8[i6 + 60 | 0] & 3 | i7 & 168; - } - HEAP32[i5 >> 2] = i8; - i7 = i5 + 8 | 0; - HEAP32[i7 >> 2] = HEAPU8[i8 + 4 | 0] | 0 | 64; - i8 = _luaT_gettmbyobj(i1, i5, 2) | 0; - if ((i8 | 0) == 0) { - STACKTOP = i4; - return; - } - i9 = i8 + 8 | 0; - if ((HEAP32[i9 >> 2] & 15 | 0) != 6) { - STACKTOP = i4; - return; - } - i12 = i1 + 41 | 0; - i13 = HEAP8[i12] | 0; - i10 = i6 + 63 | 0; - i11 = HEAP8[i10] | 0; - HEAP8[i12] = 0; - HEAP8[i10] = 0; - i6 = i1 + 8 | 0; - i14 = HEAP32[i6 >> 2] | 0; - i16 = i8; - i15 = HEAP32[i16 + 4 >> 2] | 0; - i8 = i14; - HEAP32[i8 >> 2] = HEAP32[i16 >> 2]; - HEAP32[i8 + 4 >> 2] = i15; - HEAP32[i14 + 8 >> 2] = HEAP32[i9 >> 2]; - i9 = HEAP32[i6 >> 2] | 0; - i14 = i5; - i8 = HEAP32[i14 + 4 >> 2] | 0; - i5 = i9 + 16 | 0; - HEAP32[i5 >> 2] = HEAP32[i14 >> 2]; - HEAP32[i5 + 4 >> 2] = i8; - HEAP32[i9 + 24 >> 2] = HEAP32[i7 >> 2]; - i5 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i5 + 32; - i5 = _luaD_pcall(i1, 7, 0, i5 - (HEAP32[i1 + 28 >> 2] | 0) | 0, 0) | 0; - HEAP8[i12] = i13; - HEAP8[i10] = i11; - if ((i5 | 0) == 0 | (i3 | 0) == 0) { - STACKTOP = i4; - return; - } - if ((i5 | 0) != 2) { - i16 = i5; - _luaD_throw(i1, i16); - } - i3 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i3 + -8 >> 2] & 15 | 0) == 4) { - i3 = (HEAP32[i3 + -16 >> 2] | 0) + 16 | 0; - } else { - i3 = 2528; - } - HEAP32[i2 >> 2] = i3; - _luaO_pushfstring(i1, 2544, i2) | 0; - i16 = 5; - _luaD_throw(i1, i16); -} -function _lua_gc(i3, i5, i4) { - i3 = i3 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0; - i1 = STACKTOP; - i2 = HEAP32[i3 + 12 >> 2] | 0; - L1 : do { - switch (i5 | 0) { - case 8: - { - i5 = i2 + 160 | 0; - i2 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i4; - break; - } - case 11: - { - _luaC_changemode(i3, 0); - i2 = 0; - break; - } - case 2: - { - _luaC_fullgc(i3, 0); - i2 = 0; - break; - } - case 5: - { - if ((HEAP8[i2 + 62 | 0] | 0) == 2) { - i2 = (HEAP32[i2 + 20 >> 2] | 0) == 0 | 0; - _luaC_forcestep(i3); - break L1; - } - i4 = (i4 << 10) + -1600 | 0; - if ((HEAP8[i2 + 63 | 0] | 0) == 0) { - i5 = i4; - _luaE_setdebt(i2, i5); - _luaC_forcestep(i3); - i5 = i2 + 61 | 0; - i5 = HEAP8[i5] | 0; - i5 = i5 << 24 >> 24 == 5; - i5 = i5 & 1; - STACKTOP = i1; - return i5 | 0; - } - i5 = (HEAP32[i2 + 12 >> 2] | 0) + i4 | 0; - _luaE_setdebt(i2, i5); - _luaC_forcestep(i3); - i5 = i2 + 61 | 0; - i5 = HEAP8[i5] | 0; - i5 = i5 << 24 >> 24 == 5; - i5 = i5 & 1; - STACKTOP = i1; - return i5 | 0; - } - case 4: - { - i2 = (HEAP32[i2 + 12 >> 2] | 0) + (HEAP32[i2 + 8 >> 2] | 0) & 1023; - break; - } - case 1: - { - _luaE_setdebt(i2, 0); - HEAP8[i2 + 63 | 0] = 1; - i2 = 0; - break; - } - case 3: - { - i2 = ((HEAP32[i2 + 12 >> 2] | 0) + (HEAP32[i2 + 8 >> 2] | 0) | 0) >>> 10; - break; - } - case 7: - { - i5 = i2 + 164 | 0; - i2 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i4; - break; - } - case 0: - { - HEAP8[i2 + 63 | 0] = 0; - i2 = 0; - break; - } - case 6: - { - i5 = i2 + 156 | 0; - i2 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i4; - break; - } - case 9: - { - i2 = HEAPU8[i2 + 63 | 0] | 0; - break; - } - case 10: - { - _luaC_changemode(i3, 2); - i2 = 0; - break; - } - default: - { - i2 = -1; - } - } - } while (0); - STACKTOP = i1; - return i2 | 0; -} -function _os_time(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i4 = i2; - i5 = i2 + 48 | 0; - i3 = i2 + 4 | 0; - if ((_lua_type(i1, 1) | 0) < 1) { - i3 = _time(0) | 0; - } else { - _luaL_checktype(i1, 1, 5); - _lua_settop(i1, 1); - _lua_getfield(i1, -1, 5864); - i6 = _lua_tointegerx(i1, -1, i4) | 0; - i6 = (HEAP32[i4 >> 2] | 0) == 0 ? 0 : i6; - _lua_settop(i1, -2); - HEAP32[i3 >> 2] = i6; - _lua_getfield(i1, -1, 5872); - i6 = _lua_tointegerx(i1, -1, i4) | 0; - i6 = (HEAP32[i4 >> 2] | 0) == 0 ? 0 : i6; - _lua_settop(i1, -2); - HEAP32[i3 + 4 >> 2] = i6; - _lua_getfield(i1, -1, 5880); - i6 = _lua_tointegerx(i1, -1, i4) | 0; - i6 = (HEAP32[i4 >> 2] | 0) == 0 ? 12 : i6; - _lua_settop(i1, -2); - HEAP32[i3 + 8 >> 2] = i6; - _lua_getfield(i1, -1, 5888); - i6 = _lua_tointegerx(i1, -1, i5) | 0; - if ((HEAP32[i5 >> 2] | 0) == 0) { - HEAP32[i4 >> 2] = 5888; - i6 = _luaL_error(i1, 5920, i4) | 0; - } else { - _lua_settop(i1, -2); - } - HEAP32[i3 + 12 >> 2] = i6; - _lua_getfield(i1, -1, 5896); - i6 = _lua_tointegerx(i1, -1, i5) | 0; - if ((HEAP32[i5 >> 2] | 0) == 0) { - HEAP32[i4 >> 2] = 5896; - i6 = _luaL_error(i1, 5920, i4) | 0; - } else { - _lua_settop(i1, -2); - } - HEAP32[i3 + 16 >> 2] = i6 + -1; - _lua_getfield(i1, -1, 5904); - i6 = _lua_tointegerx(i1, -1, i5) | 0; - if ((HEAP32[i5 >> 2] | 0) == 0) { - HEAP32[i4 >> 2] = 5904; - i6 = _luaL_error(i1, 5920, i4) | 0; - } else { - _lua_settop(i1, -2); - } - HEAP32[i3 + 20 >> 2] = i6 + -1900; - _lua_getfield(i1, -1, 5912); - if ((_lua_type(i1, -1) | 0) == 0) { - i4 = -1; - } else { - i4 = _lua_toboolean(i1, -1) | 0; - } - _lua_settop(i1, -2); - HEAP32[i3 + 32 >> 2] = i4; - i3 = _mktime(i3 | 0) | 0; - } - if ((i3 | 0) == -1) { - _lua_pushnil(i1); - STACKTOP = i2; - return 1; - } else { - _lua_pushnumber(i1, +(i3 | 0)); - STACKTOP = i2; - return 1; - } - return 0; -} -function _addk(i6, i4, i3) { - i6 = i6 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i1 = 0, i2 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i10 = i1; - i2 = HEAP32[(HEAP32[i6 + 12 >> 2] | 0) + 52 >> 2] | 0; - i8 = _luaH_set(i2, HEAP32[i6 + 4 >> 2] | 0, i4) | 0; - i4 = HEAP32[i6 >> 2] | 0; - i9 = i8 + 8 | 0; - if (((HEAP32[i9 >> 2] | 0) == 3 ? (HEAPF64[i10 >> 3] = +HEAPF64[i8 >> 3] + 6755399441055744.0, i7 = HEAP32[i10 >> 2] | 0, i5 = HEAP32[i4 + 8 >> 2] | 0, (HEAP32[i5 + (i7 << 4) + 8 >> 2] | 0) == (HEAP32[i3 + 8 >> 2] | 0)) : 0) ? (_luaV_equalobj_(0, i5 + (i7 << 4) | 0, i3) | 0) != 0 : 0) { - i10 = i7; - STACKTOP = i1; - return i10 | 0; - } - i5 = i4 + 44 | 0; - i10 = HEAP32[i5 >> 2] | 0; - i7 = i6 + 32 | 0; - i6 = HEAP32[i7 >> 2] | 0; - HEAPF64[i8 >> 3] = +(i6 | 0); - HEAP32[i9 >> 2] = 3; - i9 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) >= (i9 | 0)) { - i9 = i4 + 8 | 0; - HEAP32[i9 >> 2] = _luaM_growaux_(i2, HEAP32[i9 >> 2] | 0, i5, 16, 67108863, 10600) | 0; - i9 = HEAP32[i5 >> 2] | 0; - } - i8 = HEAP32[i4 + 8 >> 2] | 0; - if ((i10 | 0) < (i9 | 0)) { - while (1) { - i9 = i10 + 1 | 0; - HEAP32[i8 + (i10 << 4) + 8 >> 2] = 0; - if ((i9 | 0) < (HEAP32[i5 >> 2] | 0)) { - i10 = i9; - } else { - break; - } - } - } - i5 = i3; - i9 = HEAP32[i5 + 4 >> 2] | 0; - i10 = i8 + (i6 << 4) | 0; - HEAP32[i10 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i10 + 4 >> 2] = i9; - i10 = i3 + 8 | 0; - HEAP32[i8 + (i6 << 4) + 8 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 1; - if ((HEAP32[i10 >> 2] & 64 | 0) == 0) { - i10 = i6; - STACKTOP = i1; - return i10 | 0; - } - i3 = HEAP32[i3 >> 2] | 0; - if ((HEAP8[i3 + 5 | 0] & 3) == 0) { - i10 = i6; - STACKTOP = i1; - return i10 | 0; - } - if ((HEAP8[i4 + 5 | 0] & 4) == 0) { - i10 = i6; - STACKTOP = i1; - return i10 | 0; - } - _luaC_barrier_(i2, i4, i3); - i10 = i6; - STACKTOP = i1; - return i10 | 0; -} -function _singlevaraux(i5, i4, i2, i11) { - i5 = i5 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i11 = i11 | 0; - var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i1 = STACKTOP; - if ((i5 | 0) == 0) { - i11 = 0; - STACKTOP = i1; - return i11 | 0; - } - i7 = i5 + 12 | 0; - i8 = i5 + 40 | 0; - i9 = HEAPU8[i5 + 46 | 0] | 0; - while (1) { - i6 = i9 + -1 | 0; - i10 = HEAP32[i5 >> 2] | 0; - if ((i9 | 0) <= 0) { - break; - } - if ((_luaS_eqstr(i4, HEAP32[(HEAP32[i10 + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i7 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((HEAP32[i8 >> 2] | 0) + i6 << 1) >> 1] | 0) * 12 | 0) >> 2] | 0) | 0) == 0) { - i9 = i6; - } else { - i3 = 5; - break; - } - } - if ((i3 | 0) == 5) { - HEAP32[i2 + 16 >> 2] = -1; - HEAP32[i2 + 20 >> 2] = -1; - HEAP32[i2 >> 2] = 7; - HEAP32[i2 + 8 >> 2] = i6; - if ((i11 | 0) != 0) { - i11 = 7; - STACKTOP = i1; - return i11 | 0; - } - i2 = i5 + 16 | 0; - do { - i2 = HEAP32[i2 >> 2] | 0; - } while ((HEAPU8[i2 + 8 | 0] | 0) > (i6 | 0)); - HEAP8[i2 + 9 | 0] = 1; - i11 = 7; - STACKTOP = i1; - return i11 | 0; - } - i7 = HEAP32[i10 + 28 >> 2] | 0; - i6 = i5 + 47 | 0; - L17 : do { - if ((HEAP8[i6] | 0) != 0) { - i8 = 0; - while (1) { - i9 = i8 + 1 | 0; - if ((_luaS_eqstr(HEAP32[i7 + (i8 << 3) >> 2] | 0, i4) | 0) != 0) { - break; - } - if ((i9 | 0) < (HEAPU8[i6] | 0)) { - i8 = i9; - } else { - i3 = 13; - break L17; - } - } - if ((i8 | 0) < 0) { - i3 = 13; - } - } else { - i3 = 13; - } - } while (0); - do { - if ((i3 | 0) == 13) { - if ((_singlevaraux(HEAP32[i5 + 8 >> 2] | 0, i4, i2, 0) | 0) == 0) { - i11 = 0; - STACKTOP = i1; - return i11 | 0; - } else { - i8 = _newupvalue(i5, i4, i2) | 0; - break; - } - } - } while (0); - HEAP32[i2 + 16 >> 2] = -1; - HEAP32[i2 + 20 >> 2] = -1; - HEAP32[i2 >> 2] = 8; - HEAP32[i2 + 8 >> 2] = i8; - i11 = 8; - STACKTOP = i1; - return i11 | 0; -} -function _mainposition(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - switch (HEAP32[i3 + 8 >> 2] & 63 | 0) { - case 3: - { - HEAPF64[i4 >> 3] = +HEAPF64[i3 >> 3] + 1.0; - i3 = (HEAP32[i4 + 4 >> 2] | 0) + (HEAP32[i4 >> 2] | 0) | 0; - if ((i3 | 0) < 0) { - i4 = 0 - i3 | 0; - i3 = (i3 | 0) == (i4 | 0) ? 0 : i4; - } - i5 = (HEAP32[i1 + 16 >> 2] | 0) + (((i3 | 0) % ((1 << HEAPU8[i1 + 7 | 0]) + -1 | 1 | 0) | 0) << 5) | 0; - STACKTOP = i2; - return i5 | 0; - } - case 2: - { - i5 = (HEAP32[i1 + 16 >> 2] | 0) + ((((HEAP32[i3 >> 2] | 0) >>> 0) % (((1 << HEAPU8[i1 + 7 | 0]) + -1 | 1) >>> 0) | 0) << 5) | 0; - STACKTOP = i2; - return i5 | 0; - } - case 20: - { - i5 = HEAP32[i3 >> 2] | 0; - i4 = i5 + 6 | 0; - if ((HEAP8[i4] | 0) == 0) { - i6 = i5 + 8 | 0; - HEAP32[i6 >> 2] = _luaS_hash(i5 + 16 | 0, HEAP32[i5 + 12 >> 2] | 0, HEAP32[i6 >> 2] | 0) | 0; - HEAP8[i4] = 1; - i5 = HEAP32[i3 >> 2] | 0; - } - i6 = (HEAP32[i1 + 16 >> 2] | 0) + (((1 << HEAPU8[i1 + 7 | 0]) + -1 & HEAP32[i5 + 8 >> 2]) << 5) | 0; - STACKTOP = i2; - return i6 | 0; - } - case 22: - { - i6 = (HEAP32[i1 + 16 >> 2] | 0) + ((((HEAP32[i3 >> 2] | 0) >>> 0) % (((1 << HEAPU8[i1 + 7 | 0]) + -1 | 1) >>> 0) | 0) << 5) | 0; - STACKTOP = i2; - return i6 | 0; - } - case 4: - { - i6 = (HEAP32[i1 + 16 >> 2] | 0) + (((1 << HEAPU8[i1 + 7 | 0]) + -1 & HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2]) << 5) | 0; - STACKTOP = i2; - return i6 | 0; - } - case 1: - { - i6 = (HEAP32[i1 + 16 >> 2] | 0) + (((1 << HEAPU8[i1 + 7 | 0]) + -1 & HEAP32[i3 >> 2]) << 5) | 0; - STACKTOP = i2; - return i6 | 0; - } - default: - { - i6 = (HEAP32[i1 + 16 >> 2] | 0) + ((((HEAP32[i3 >> 2] | 0) >>> 0) % (((1 << HEAPU8[i1 + 7 | 0]) + -1 | 1) >>> 0) | 0) << 5) | 0; - STACKTOP = i2; - return i6 | 0; - } - } - return 0; -} -function _clearvalues(i2, i5, i1) { - i2 = i2 | 0; - i5 = i5 | 0; - i1 = i1 | 0; - var i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i4 = STACKTOP; - if ((i5 | 0) == (i1 | 0)) { - STACKTOP = i4; - return; - } - do { - i7 = i5 + 16 | 0; - i9 = HEAP32[i7 >> 2] | 0; - i6 = i9 + (1 << (HEAPU8[i5 + 7 | 0] | 0) << 5) | 0; - i8 = i5 + 28 | 0; - if ((HEAP32[i8 >> 2] | 0) > 0) { - i11 = i5 + 12 | 0; - i12 = 0; - do { - i13 = HEAP32[i11 >> 2] | 0; - i10 = i13 + (i12 << 4) + 8 | 0; - i9 = HEAP32[i10 >> 2] | 0; - do { - if ((i9 & 64 | 0) != 0) { - i13 = HEAP32[i13 + (i12 << 4) >> 2] | 0; - if ((i9 & 15 | 0) != 4) { - if ((HEAP8[i13 + 5 | 0] & 3) == 0) { - break; - } - HEAP32[i10 >> 2] = 0; - break; - } - if ((i13 | 0) != 0 ? !((HEAP8[i13 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i2, i13); - } - } - } while (0); - i12 = i12 + 1 | 0; - } while ((i12 | 0) < (HEAP32[i8 >> 2] | 0)); - i7 = HEAP32[i7 >> 2] | 0; - } else { - i7 = i9; - } - if (i7 >>> 0 < i6 >>> 0) { - do { - i8 = i7 + 8 | 0; - i9 = HEAP32[i8 >> 2] | 0; - do { - if (!((i9 | 0) == 0 | (i9 & 64 | 0) == 0)) { - i10 = HEAP32[i7 >> 2] | 0; - if ((i9 & 15 | 0) == 4) { - if ((i10 | 0) == 0) { - break; - } - if ((HEAP8[i10 + 5 | 0] & 3) == 0) { - break; - } - _reallymarkobject(i2, i10); - break; - } - if ((!((HEAP8[i10 + 5 | 0] & 3) == 0) ? (HEAP32[i8 >> 2] = 0, i3 = i7 + 24 | 0, (HEAP32[i3 >> 2] & 64 | 0) != 0) : 0) ? !((HEAP8[(HEAP32[i7 + 16 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) { - HEAP32[i3 >> 2] = 11; - } - } - } while (0); - i7 = i7 + 32 | 0; - } while (i7 >>> 0 < i6 >>> 0); - } - i5 = HEAP32[i5 + 24 >> 2] | 0; - } while ((i5 | 0) != (i1 | 0)); - STACKTOP = i4; - return; -} -function _reallymarkobject(i1, i4) { - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0; - i3 = STACKTOP; - i2 = i4 + 5 | 0; - HEAP8[i2] = HEAP8[i2] & 252; - switch (HEAPU8[i4 + 4 | 0] | 0 | 0) { - case 6: - { - i7 = i1 + 84 | 0; - HEAP32[i4 + 8 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i7 >> 2] = i4; - STACKTOP = i3; - return; - } - case 20: - case 4: - { - i4 = (HEAP32[i4 + 12 >> 2] | 0) + 17 | 0; - break; - } - case 7: - { - i5 = HEAP32[i4 + 8 >> 2] | 0; - if ((i5 | 0) != 0 ? !((HEAP8[i5 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i5); - } - i5 = HEAP32[i4 + 12 >> 2] | 0; - if ((i5 | 0) != 0 ? !((HEAP8[i5 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i5); - } - i4 = (HEAP32[i4 + 16 >> 2] | 0) + 24 | 0; - break; - } - case 8: - { - i7 = i1 + 84 | 0; - HEAP32[i4 + 60 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i7 >> 2] = i4; - STACKTOP = i3; - return; - } - case 10: - { - i6 = i4 + 8 | 0; - i7 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i7 + 8 >> 2] & 64 | 0) != 0 ? (i5 = HEAP32[i7 >> 2] | 0, !((HEAP8[i5 + 5 | 0] & 3) == 0)) : 0) { - _reallymarkobject(i1, i5); - i7 = HEAP32[i6 >> 2] | 0; - } - if ((i7 | 0) == (i4 + 16 | 0)) { - i4 = 32; - } else { - STACKTOP = i3; - return; - } - break; - } - case 5: - { - i7 = i1 + 84 | 0; - HEAP32[i4 + 24 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i7 >> 2] = i4; - STACKTOP = i3; - return; - } - case 38: - { - i7 = i1 + 84 | 0; - HEAP32[i4 + 8 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i7 >> 2] = i4; - STACKTOP = i3; - return; - } - case 9: - { - i7 = i1 + 84 | 0; - HEAP32[i4 + 72 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i7 >> 2] = i4; - STACKTOP = i3; - return; - } - default: - { - STACKTOP = i3; - return; - } - } - HEAP8[i2] = HEAPU8[i2] | 0 | 4; - i7 = i1 + 16 | 0; - HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + i4; - STACKTOP = i3; - return; -} -function _lua_upvaluejoin(i1, i9, i7, i6, i3) { - i1 = i1 | 0; - i9 = i9 | 0; - i7 = i7 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i8 = 0, i10 = 0; - i2 = STACKTOP; - i5 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i9 | 0) <= 0) { - if (!((i9 | 0) < -1000999)) { - i8 = (HEAP32[i1 + 8 >> 2] | 0) + (i9 << 4) | 0; - break; - } - if ((i9 | 0) == -1001e3) { - i8 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i10 = -1001e3 - i9 | 0; - i9 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) != 22 ? (i8 = HEAP32[i9 >> 2] | 0, (i10 | 0) <= (HEAPU8[i8 + 6 | 0] | 0 | 0)) : 0) { - i8 = i8 + (i10 + -1 << 4) + 16 | 0; - } else { - i8 = 5192; - } - } else { - i8 = (HEAP32[i5 >> 2] | 0) + (i9 << 4) | 0; - i8 = i8 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i8 : 5192; - } - } while (0); - i8 = HEAP32[i8 >> 2] | 0; - i7 = i8 + 16 + (i7 + -1 << 2) | 0; - do { - if ((i6 | 0) <= 0) { - if (!((i6 | 0) < -1000999)) { - i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i6 = -1001e3 - i6 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i4 = i4 + (i6 + -1 << 4) + 16 | 0; - } else { - i4 = 5192; - } - } else { - i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0; - i4 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - i3 = (HEAP32[i4 >> 2] | 0) + 16 + (i3 + -1 << 2) | 0; - HEAP32[i7 >> 2] = HEAP32[i3 >> 2]; - i3 = HEAP32[i3 >> 2] | 0; - if ((HEAP8[i3 + 5 | 0] & 3) == 0) { - STACKTOP = i2; - return; - } - if ((HEAP8[i8 + 5 | 0] & 4) == 0) { - STACKTOP = i2; - return; - } - _luaC_barrier_(i1, i8, i3); - STACKTOP = i2; - return; -} -function _lua_upvalueid(i5, i7, i1) { - i5 = i5 | 0; - i7 = i7 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0; - i2 = STACKTOP; - i4 = HEAP32[i5 + 16 >> 2] | 0; - i6 = (i7 | 0) > 0; - do { - if (!i6) { - if (!((i7 | 0) < -1000999)) { - i8 = (HEAP32[i5 + 8 >> 2] | 0) + (i7 << 4) | 0; - break; - } - if ((i7 | 0) == -1001e3) { - i8 = (HEAP32[i5 + 12 >> 2] | 0) + 40 | 0; - break; - } - i10 = -1001e3 - i7 | 0; - i9 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i9 + 8 >> 2] | 0) != 22 ? (i8 = HEAP32[i9 >> 2] | 0, (i10 | 0) <= (HEAPU8[i8 + 6 | 0] | 0 | 0)) : 0) { - i8 = i8 + (i10 + -1 << 4) + 16 | 0; - } else { - i8 = 5192; - } - } else { - i8 = (HEAP32[i4 >> 2] | 0) + (i7 << 4) | 0; - i8 = i8 >>> 0 < (HEAP32[i5 + 8 >> 2] | 0) >>> 0 ? i8 : 5192; - } - } while (0); - i9 = HEAP32[i8 + 8 >> 2] & 63; - if ((i9 | 0) == 38) { - i10 = (HEAP32[i8 >> 2] | 0) + (i1 + -1 << 4) + 16 | 0; - STACKTOP = i2; - return i10 | 0; - } else if ((i9 | 0) == 6) { - do { - if (!i6) { - if (!((i7 | 0) < -1000999)) { - i3 = (HEAP32[i5 + 8 >> 2] | 0) + (i7 << 4) | 0; - break; - } - if ((i7 | 0) == -1001e3) { - i3 = (HEAP32[i5 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i7 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i5 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i4 >> 2] | 0) + (i7 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i5 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i10 = HEAP32[(HEAP32[i3 >> 2] | 0) + 16 + (i1 + -1 << 2) >> 2] | 0; - STACKTOP = i2; - return i10 | 0; - } else { - i10 = 0; - STACKTOP = i2; - return i10 | 0; - } - return 0; -} -function _lua_rawequal(i2, i6, i4) { - i2 = i2 | 0; - i6 = i6 | 0; - i4 = i4 | 0; - var i1 = 0, i3 = 0, i5 = 0, i7 = 0; - i1 = STACKTOP; - i3 = HEAP32[i2 + 16 >> 2] | 0; - do { - if ((i6 | 0) <= 0) { - if (!((i6 | 0) < -1000999)) { - i5 = (HEAP32[i2 + 8 >> 2] | 0) + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i5 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i7 = -1001e3 - i6 | 0; - i6 = HEAP32[i3 >> 2] | 0; - if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i5 = HEAP32[i6 >> 2] | 0, (i7 | 0) <= (HEAPU8[i5 + 6 | 0] | 0 | 0)) : 0) { - i5 = i5 + (i7 + -1 << 4) + 16 | 0; - } else { - i5 = 5192; - } - } else { - i5 = (HEAP32[i3 >> 2] | 0) + (i6 << 4) | 0; - i5 = i5 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i5 : 5192; - } - } while (0); - do { - if ((i4 | 0) <= 0) { - if (!((i4 | 0) < -1000999)) { - i2 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0; - break; - } - if ((i4 | 0) == -1001e3) { - i2 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i2 = -1001e3 - i4 | 0; - i3 = HEAP32[i3 >> 2] | 0; - if ((HEAP32[i3 + 8 >> 2] | 0) == 22) { - i7 = 0; - STACKTOP = i1; - return i7 | 0; - } - i3 = HEAP32[i3 >> 2] | 0; - if ((i2 | 0) > (HEAPU8[i3 + 6 | 0] | 0 | 0)) { - i7 = 0; - STACKTOP = i1; - return i7 | 0; - } else { - i2 = i3 + (i2 + -1 << 4) + 16 | 0; - break; - } - } else { - i3 = (HEAP32[i3 >> 2] | 0) + (i4 << 4) | 0; - i2 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - if ((i5 | 0) == 5192 | (i2 | 0) == 5192) { - i7 = 0; - STACKTOP = i1; - return i7 | 0; - } - if ((HEAP32[i5 + 8 >> 2] | 0) == (HEAP32[i2 + 8 >> 2] | 0)) { - i2 = (_luaV_equalobj_(0, i5, i2) | 0) != 0; - } else { - i2 = 0; - } - i7 = i2 & 1; - STACKTOP = i1; - return i7 | 0; -} -function _luaO_chunkid(i1, i4, i6) { - i1 = i1 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - var i2 = 0, i3 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0; - i2 = STACKTOP; - i3 = _strlen(i4 | 0) | 0; - i5 = HEAP8[i4] | 0; - if (i5 << 24 >> 24 == 64) { - if (i3 >>> 0 > i6 >>> 0) { - HEAP8[i1 + 0 | 0] = HEAP8[5552 | 0] | 0; - HEAP8[i1 + 1 | 0] = HEAP8[5553 | 0] | 0; - HEAP8[i1 + 2 | 0] = HEAP8[5554 | 0] | 0; - _memcpy(i1 + 3 | 0, i4 + (4 - i6 + i3) | 0, i6 + -3 | 0) | 0; - STACKTOP = i2; - return; - } else { - _memcpy(i1 | 0, i4 + 1 | 0, i3 | 0) | 0; - STACKTOP = i2; - return; - } - } else if (i5 << 24 >> 24 == 61) { - i4 = i4 + 1 | 0; - if (i3 >>> 0 > i6 >>> 0) { - i9 = i6 + -1 | 0; - _memcpy(i1 | 0, i4 | 0, i9 | 0) | 0; - HEAP8[i1 + i9 | 0] = 0; - STACKTOP = i2; - return; - } else { - _memcpy(i1 | 0, i4 | 0, i3 | 0) | 0; - STACKTOP = i2; - return; - } - } else { - i5 = _strchr(i4, 10) | 0; - i9 = i1 + 0 | 0; - i8 = 5560 | 0; - i7 = i9 + 9 | 0; - do { - HEAP8[i9] = HEAP8[i8] | 0; - i9 = i9 + 1 | 0; - i8 = i8 + 1 | 0; - } while ((i9 | 0) < (i7 | 0)); - i7 = i1 + 9 | 0; - i6 = i6 + -15 | 0; - i8 = (i5 | 0) == 0; - if (i3 >>> 0 < i6 >>> 0 & i8) { - _memcpy(i7 | 0, i4 | 0, i3 | 0) | 0; - i3 = i3 + 9 | 0; - } else { - if (!i8) { - i3 = i5 - i4 | 0; - } - i3 = i3 >>> 0 > i6 >>> 0 ? i6 : i3; - _memcpy(i7 | 0, i4 | 0, i3 | 0) | 0; - i9 = i1 + (i3 + 9) | 0; - HEAP8[i9 + 0 | 0] = HEAP8[5552 | 0] | 0; - HEAP8[i9 + 1 | 0] = HEAP8[5553 | 0] | 0; - HEAP8[i9 + 2 | 0] = HEAP8[5554 | 0] | 0; - i3 = i3 + 12 | 0; - } - i9 = i1 + i3 | 0; - HEAP8[i9 + 0 | 0] = HEAP8[5576 | 0] | 0; - HEAP8[i9 + 1 | 0] = HEAP8[5577 | 0] | 0; - HEAP8[i9 + 2 | 0] = HEAP8[5578 | 0] | 0; - STACKTOP = i2; - return; - } -} -function _luaS_resize(i4, i1) { - i4 = i4 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i3 = STACKTOP; - i5 = HEAP32[i4 + 12 >> 2] | 0; - i2 = i5 + 24 | 0; - _luaC_runtilstate(i4, -5); - i5 = i5 + 32 | 0; - i8 = HEAP32[i5 >> 2] | 0; - L1 : do { - if ((i8 | 0) < (i1 | 0)) { - if ((i1 + 1 | 0) >>> 0 > 1073741823) { - _luaM_toobig(i4); - } - i7 = _luaM_realloc_(i4, HEAP32[i2 >> 2] | 0, i8 << 2, i1 << 2) | 0; - HEAP32[i2 >> 2] = i7; - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) < (i1 | 0)) { - i8 = i6; - while (1) { - HEAP32[i7 + (i8 << 2) >> 2] = 0; - i8 = i8 + 1 | 0; - if ((i8 | 0) == (i1 | 0)) { - i8 = i6; - break L1; - } - i7 = HEAP32[i2 >> 2] | 0; - } - } else { - i8 = i6; - } - } - } while (0); - if ((i8 | 0) > 0) { - i6 = i1 + -1 | 0; - i7 = 0; - do { - i10 = (HEAP32[i2 >> 2] | 0) + (i7 << 2) | 0; - i9 = HEAP32[i10 >> 2] | 0; - HEAP32[i10 >> 2] = 0; - if ((i9 | 0) != 0) { - while (1) { - i8 = HEAP32[i9 >> 2] | 0; - i10 = HEAP32[i9 + 8 >> 2] & i6; - HEAP32[i9 >> 2] = HEAP32[(HEAP32[i2 >> 2] | 0) + (i10 << 2) >> 2]; - HEAP32[(HEAP32[i2 >> 2] | 0) + (i10 << 2) >> 2] = i9; - i10 = i9 + 5 | 0; - HEAP8[i10] = HEAP8[i10] & 191; - if ((i8 | 0) == 0) { - break; - } else { - i9 = i8; - } - } - i8 = HEAP32[i5 >> 2] | 0; - } - i7 = i7 + 1 | 0; - } while ((i7 | 0) < (i8 | 0)); - } - if ((i8 | 0) <= (i1 | 0)) { - HEAP32[i5 >> 2] = i1; - STACKTOP = i3; - return; - } - if ((i1 + 1 | 0) >>> 0 > 1073741823) { - _luaM_toobig(i4); - } - HEAP32[i2 >> 2] = _luaM_realloc_(i4, HEAP32[i2 >> 2] | 0, i8 << 2, i1 << 2) | 0; - HEAP32[i5 >> 2] = i1; - STACKTOP = i3; - return; -} -function _luaD_poscall(i6, i7) { - i6 = i6 | 0; - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i1 = STACKTOP; - i4 = i6 + 16 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAPU8[i6 + 40 | 0] | 0; - if ((i5 & 6 | 0) == 0) { - i8 = i3 + 8 | 0; - } else { - if ((i5 & 2 | 0) != 0) { - i8 = i6 + 28 | 0; - i7 = i7 - (HEAP32[i8 >> 2] | 0) | 0; - _luaD_hook(i6, 1, -1); - i7 = (HEAP32[i8 >> 2] | 0) + i7 | 0; - } - i8 = i3 + 8 | 0; - HEAP32[i6 + 20 >> 2] = HEAP32[(HEAP32[i8 >> 2] | 0) + 28 >> 2]; - } - i5 = HEAP32[i3 >> 2] | 0; - i9 = HEAP16[i3 + 16 >> 1] | 0; - i3 = i9 << 16 >> 16; - HEAP32[i4 >> 2] = HEAP32[i8 >> 2]; - i4 = i6 + 8 | 0; - if (i9 << 16 >> 16 == 0) { - i9 = i5; - HEAP32[i4 >> 2] = i9; - i9 = i3 + 1 | 0; - STACKTOP = i1; - return i9 | 0; - } else { - i6 = i3; - } - while (1) { - if (!(i7 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0)) { - break; - } - i8 = i5 + 16 | 0; - i11 = i7; - i10 = HEAP32[i11 + 4 >> 2] | 0; - i9 = i5; - HEAP32[i9 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i9 + 4 >> 2] = i10; - HEAP32[i5 + 8 >> 2] = HEAP32[i7 + 8 >> 2]; - i6 = i6 + -1 | 0; - if ((i6 | 0) == 0) { - i2 = 12; - break; - } else { - i7 = i7 + 16 | 0; - i5 = i8; - } - } - if ((i2 | 0) == 12) { - HEAP32[i4 >> 2] = i8; - i11 = i3 + 1 | 0; - STACKTOP = i1; - return i11 | 0; - } - if ((i6 | 0) > 0) { - i2 = i6; - i7 = i5; - } else { - i11 = i5; - HEAP32[i4 >> 2] = i11; - i11 = i3 + 1 | 0; - STACKTOP = i1; - return i11 | 0; - } - while (1) { - i2 = i2 + -1 | 0; - HEAP32[i7 + 8 >> 2] = 0; - if ((i2 | 0) <= 0) { - break; - } else { - i7 = i7 + 16 | 0; - } - } - i11 = i5 + (i6 << 4) | 0; - HEAP32[i4 >> 2] = i11; - i11 = i3 + 1 | 0; - STACKTOP = i1; - return i11 | 0; -} -function _lua_rawset(i1, i4) { - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i2 = STACKTOP; - i5 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i4 | 0) <= 0) { - if (!((i4 | 0) < -1000999)) { - i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i4 << 4) | 0; - break; - } - if ((i4 | 0) == -1001e3) { - i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i4 = -1001e3 - i4 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i5 = i3 + (i4 + -1 << 4) + 16 | 0; - } else { - i5 = 5192; - } - } else { - i3 = (HEAP32[i5 >> 2] | 0) + (i4 << 4) | 0; - i5 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i4 = i1 + 8 | 0; - i6 = HEAP32[i4 >> 2] | 0; - i3 = _luaH_set(i1, HEAP32[i5 >> 2] | 0, i6 + -32 | 0) | 0; - i9 = i6 + -16 | 0; - i8 = HEAP32[i9 + 4 >> 2] | 0; - i7 = i3; - HEAP32[i7 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i7 + 4 >> 2] = i8; - HEAP32[i3 + 8 >> 2] = HEAP32[i6 + -8 >> 2]; - HEAP8[(HEAP32[i5 >> 2] | 0) + 6 | 0] = 0; - i3 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i3 + -8 >> 2] & 64 | 0) == 0) { - i9 = i3; - i9 = i9 + -32 | 0; - HEAP32[i4 >> 2] = i9; - STACKTOP = i2; - return; - } - if ((HEAP8[(HEAP32[i3 + -16 >> 2] | 0) + 5 | 0] & 3) == 0) { - i9 = i3; - i9 = i9 + -32 | 0; - HEAP32[i4 >> 2] = i9; - STACKTOP = i2; - return; - } - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP8[i5 + 5 | 0] & 4) == 0) { - i9 = i3; - i9 = i9 + -32 | 0; - HEAP32[i4 >> 2] = i9; - STACKTOP = i2; - return; - } - _luaC_barrierback_(i1, i5); - i9 = HEAP32[i4 >> 2] | 0; - i9 = i9 + -32 | 0; - HEAP32[i4 >> 2] = i9; - STACKTOP = i2; - return; -} -function _saveSetjmp(i4, i3, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i2 = 0; - setjmpId = setjmpId + 1 | 0; - HEAP32[i4 >> 2] = setjmpId; - while ((i2 | 0) < 40) { - if ((HEAP32[i1 + (i2 << 2) >> 2] | 0) == 0) { - HEAP32[i1 + (i2 << 2) >> 2] = setjmpId; - HEAP32[i1 + ((i2 << 2) + 4) >> 2] = i3; - HEAP32[i1 + ((i2 << 2) + 8) >> 2] = 0; - return 0; - } - i2 = i2 + 2 | 0; - } - _putchar(116); - _putchar(111); - _putchar(111); - _putchar(32); - _putchar(109); - _putchar(97); - _putchar(110); - _putchar(121); - _putchar(32); - _putchar(115); - _putchar(101); - _putchar(116); - _putchar(106); - _putchar(109); - _putchar(112); - _putchar(115); - _putchar(32); - _putchar(105); - _putchar(110); - _putchar(32); - _putchar(97); - _putchar(32); - _putchar(102); - _putchar(117); - _putchar(110); - _putchar(99); - _putchar(116); - _putchar(105); - _putchar(111); - _putchar(110); - _putchar(32); - _putchar(99); - _putchar(97); - _putchar(108); - _putchar(108); - _putchar(44); - _putchar(32); - _putchar(98); - _putchar(117); - _putchar(105); - _putchar(108); - _putchar(100); - _putchar(32); - _putchar(119); - _putchar(105); - _putchar(116); - _putchar(104); - _putchar(32); - _putchar(97); - _putchar(32); - _putchar(104); - _putchar(105); - _putchar(103); - _putchar(104); - _putchar(101); - _putchar(114); - _putchar(32); - _putchar(118); - _putchar(97); - _putchar(108); - _putchar(117); - _putchar(101); - _putchar(32); - _putchar(102); - _putchar(111); - _putchar(114); - _putchar(32); - _putchar(77); - _putchar(65); - _putchar(88); - _putchar(95); - _putchar(83); - _putchar(69); - _putchar(84); - _putchar(74); - _putchar(77); - _putchar(80); - _putchar(83); - _putchar(10); - abort(0); - return 0; -} -function _lua_newthread(i5) { - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i1 = STACKTOP; - i3 = i5 + 12 | 0; - if ((HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i5); - } - i2 = _luaC_newobj(i5, 8, 112, 0, 0) | 0; - i6 = i5 + 8 | 0; - i4 = HEAP32[i6 >> 2] | 0; - HEAP32[i4 >> 2] = i2; - HEAP32[i4 + 8 >> 2] = 72; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 16; - HEAP32[i2 + 12 >> 2] = HEAP32[i3 >> 2]; - i6 = i2 + 28 | 0; - HEAP32[i6 >> 2] = 0; - i4 = i2 + 16 | 0; - HEAP32[i4 >> 2] = 0; - i3 = i2 + 32 | 0; - HEAP32[i3 >> 2] = 0; - HEAP32[i2 + 64 >> 2] = 0; - HEAP16[i2 + 38 >> 1] = 0; - i9 = i2 + 52 | 0; - HEAP32[i9 >> 2] = 0; - i8 = i2 + 40 | 0; - HEAP8[i8] = 0; - i10 = i2 + 44 | 0; - HEAP32[i10 >> 2] = 0; - HEAP8[i2 + 41 | 0] = 1; - i7 = i2 + 48 | 0; - HEAP32[i7 >> 2] = 0; - HEAP32[i2 + 56 >> 2] = 0; - HEAP16[i2 + 36 >> 1] = 1; - HEAP8[i2 + 6 | 0] = 0; - HEAP32[i2 + 68 >> 2] = 0; - HEAP8[i8] = HEAP8[i5 + 40 | 0] | 0; - i8 = HEAP32[i5 + 44 >> 2] | 0; - HEAP32[i10 >> 2] = i8; - HEAP32[i9 >> 2] = HEAP32[i5 + 52 >> 2]; - HEAP32[i7 >> 2] = i8; - i5 = _luaM_realloc_(i5, 0, 0, 640) | 0; - HEAP32[i6 >> 2] = i5; - HEAP32[i3 >> 2] = 40; - i6 = 0; - do { - HEAP32[i5 + (i6 << 4) + 8 >> 2] = 0; - i6 = i6 + 1 | 0; - } while ((i6 | 0) != 40); - HEAP32[i2 + 24 >> 2] = i5 + ((HEAP32[i3 >> 2] | 0) + -5 << 4); - i10 = i2 + 72 | 0; - HEAP32[i2 + 80 >> 2] = 0; - HEAP32[i2 + 84 >> 2] = 0; - HEAP8[i2 + 90 | 0] = 0; - HEAP32[i10 >> 2] = i5; - HEAP32[i2 + 8 >> 2] = i5 + 16; - HEAP32[i5 + 8 >> 2] = 0; - HEAP32[i2 + 76 >> 2] = i5 + 336; - HEAP32[i4 >> 2] = i10; - STACKTOP = i1; - return i2 | 0; -} -function _luaK_self(i2, i5, i3) { - i2 = i2 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - var i1 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i1 = STACKTOP; - _luaK_dischargevars(i2, i5); - if ((HEAP32[i5 >> 2] | 0) == 6) { - i6 = i5 + 8 | 0; - i8 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i5 + 16 >> 2] | 0) != (HEAP32[i5 + 20 >> 2] | 0)) { - if ((i8 | 0) < (HEAPU8[i2 + 46 | 0] | 0 | 0)) { - i7 = 6; - } else { - _exp2reg(i2, i5, i8); - } - } - } else { - i6 = i5 + 8 | 0; - i7 = 6; - } - if ((i7 | 0) == 6) { - _luaK_exp2nextreg(i2, i5); - } - i8 = HEAP32[i6 >> 2] | 0; - if (((HEAP32[i5 >> 2] | 0) == 6 ? (i8 & 256 | 0) == 0 : 0) ? (HEAPU8[i2 + 46 | 0] | 0 | 0) <= (i8 | 0) : 0) { - i10 = i2 + 48 | 0; - HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24; - } - i7 = i2 + 48 | 0; - HEAP32[i6 >> 2] = HEAPU8[i7] | 0; - HEAP32[i5 >> 2] = 6; - i10 = HEAP8[i7] | 0; - i5 = (i10 & 255) + 2 | 0; - i9 = (HEAP32[i2 >> 2] | 0) + 78 | 0; - do { - if (i5 >>> 0 > (HEAPU8[i9] | 0) >>> 0) { - if (i5 >>> 0 > 249) { - _luaX_syntaxerror(HEAP32[i2 + 12 >> 2] | 0, 10536); - } else { - HEAP8[i9] = i5; - i4 = HEAP8[i7] | 0; - break; - } - } else { - i4 = i10; - } - } while (0); - HEAP8[i7] = (i4 & 255) + 2; - i10 = HEAP32[i6 >> 2] | 0; - _luaK_code(i2, i8 << 23 | i10 << 6 | (_luaK_exp2RK(i2, i3) | 0) << 14 | 12) | 0; - if ((HEAP32[i3 >> 2] | 0) != 6) { - STACKTOP = i1; - return; - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - if ((i3 & 256 | 0) != 0) { - STACKTOP = i1; - return; - } - if ((HEAPU8[i2 + 46 | 0] | 0 | 0) > (i3 | 0)) { - STACKTOP = i1; - return; - } - HEAP8[i7] = (HEAP8[i7] | 0) + -1 << 24 >> 24; - STACKTOP = i1; - return; -} -function _luaD_rawrunprotected(i10, i9, i11) { - i10 = i10 | 0; - i9 = i9 | 0; - i11 = i11 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i12 = 0, i13 = 0; - i7 = STACKTOP; - STACKTOP = STACKTOP + 176 | 0; - i8 = STACKTOP; - STACKTOP = STACKTOP + 168 | 0; - HEAP32[i8 >> 2] = 0; - i6 = i7; - i5 = i10 + 38 | 0; - i4 = HEAP16[i5 >> 1] | 0; - i1 = i6 + 160 | 0; - HEAP32[i1 >> 2] = 0; - i3 = i10 + 64 | 0; - HEAP32[i6 >> 2] = HEAP32[i3 >> 2]; - HEAP32[i3 >> 2] = i6; - _saveSetjmp(i6 + 4 | 0, 1, i8 | 0) | 0; - __THREW__ = 0; - i13 = __THREW__; - __THREW__ = 0; - if ((i13 | 0) != 0 & (threwValue | 0) != 0) { - i12 = _testSetjmp(HEAP32[i13 >> 2] | 0, i8) | 0; - if ((i12 | 0) == 0) { - _longjmp(i13 | 0, threwValue | 0); - } - tempRet0 = threwValue; - } else { - i12 = -1; - } - if ((i12 | 0) == 1) { - i12 = tempRet0; - } else { - i12 = 0; - } - while (1) { - if ((i12 | 0) != 0) { - i2 = 6; - break; - } - __THREW__ = 0; - invoke_vii(i9 | 0, i10 | 0, i11 | 0); - i13 = __THREW__; - __THREW__ = 0; - if ((i13 | 0) != 0 & (threwValue | 0) != 0) { - i12 = _testSetjmp(HEAP32[i13 >> 2] | 0, i8) | 0; - if ((i12 | 0) == 0) { - _longjmp(i13 | 0, threwValue | 0); - } - tempRet0 = threwValue; - } else { - i12 = -1; - } - if ((i12 | 0) == 1) { - i12 = tempRet0; - } else { - break; - } - } - if ((i2 | 0) == 6) { - i13 = HEAP32[i6 >> 2] | 0; - HEAP32[i3 >> 2] = i13; - HEAP16[i5 >> 1] = i4; - i13 = HEAP32[i1 >> 2] | 0; - STACKTOP = i7; - return i13 | 0; - } - i13 = HEAP32[i6 >> 2] | 0; - HEAP32[i3 >> 2] = i13; - HEAP16[i5 >> 1] = i4; - i13 = HEAP32[i1 >> 2] | 0; - STACKTOP = i7; - return i13 | 0; -} -function _luaB_tonumber(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, d6 = 0.0, i7 = 0, d8 = 0.0, i9 = 0, i10 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2 + 4 | 0; - i4 = i2; - do { - if ((_lua_type(i1, 2) | 0) >= 1) { - i9 = _luaL_checklstring(i1, 1, i4) | 0; - i3 = i9 + (HEAP32[i4 >> 2] | 0) | 0; - i5 = _luaL_checkinteger(i1, 2) | 0; - if (!((i5 + -2 | 0) >>> 0 < 35)) { - _luaL_argerror(i1, 2, 9648) | 0; - } - i10 = _strspn(i9, 9672) | 0; - i7 = i9 + i10 | 0; - i4 = HEAP8[i7] | 0; - if (i4 << 24 >> 24 == 43) { - i4 = 0; - i7 = i9 + (i10 + 1) | 0; - } else if (i4 << 24 >> 24 == 45) { - i4 = 1; - i7 = i9 + (i10 + 1) | 0; - } else { - i4 = 0; - } - if ((_isalnum(HEAPU8[i7] | 0 | 0) | 0) != 0) { - d6 = +(i5 | 0); - d8 = 0.0; - do { - i9 = HEAP8[i7] | 0; - i10 = i9 & 255; - if ((i10 + -48 | 0) >>> 0 < 10) { - i9 = (i9 << 24 >> 24) + -48 | 0; - } else { - i9 = (_toupper(i10 | 0) | 0) + -55 | 0; - } - if ((i9 | 0) >= (i5 | 0)) { - break; - } - d8 = d6 * d8 + +(i9 | 0); - i7 = i7 + 1 | 0; - } while ((_isalnum(HEAPU8[i7] | 0 | 0) | 0) != 0); - if ((i7 + (_strspn(i7, 9672) | 0) | 0) == (i3 | 0)) { - if ((i4 | 0) != 0) { - d8 = -d8; - } - _lua_pushnumber(i1, d8); - STACKTOP = i2; - return 1; - } - } - } else { - d6 = +_lua_tonumberx(i1, 1, i3); - if ((HEAP32[i3 >> 2] | 0) == 0) { - _luaL_checkany(i1, 1); - break; - } - _lua_pushnumber(i1, d6); - STACKTOP = i2; - return 1; - } - } while (0); - _lua_pushnil(i1); - STACKTOP = i2; - return 1; -} -function _luaK_storevar(i1, i5, i3) { - i1 = i1 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - i7 = HEAP32[i5 >> 2] | 0; - if ((i7 | 0) == 7) { - if (((HEAP32[i3 >> 2] | 0) == 6 ? (i6 = HEAP32[i3 + 8 >> 2] | 0, (i6 & 256 | 0) == 0) : 0) ? (HEAPU8[i1 + 46 | 0] | 0) <= (i6 | 0) : 0) { - i7 = i1 + 48 | 0; - HEAP8[i7] = (HEAP8[i7] | 0) + -1 << 24 >> 24; - } - _exp2reg(i1, i3, HEAP32[i5 + 8 >> 2] | 0); - STACKTOP = i2; - return; - } else if ((i7 | 0) == 9) { - i4 = i5 + 8 | 0; - i7 = (HEAP8[i4 + 3 | 0] | 0) == 7 ? 10 : 8; - i6 = _luaK_exp2RK(i1, i3) | 0; - _luaK_code(i1, i6 << 14 | i7 | HEAPU8[i4 + 2 | 0] << 6 | HEAPU16[i4 >> 1] << 23) | 0; - } else if ((i7 | 0) == 8) { - _luaK_dischargevars(i1, i3); - if ((HEAP32[i3 >> 2] | 0) == 6) { - i6 = i3 + 8 | 0; - i7 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i3 + 16 >> 2] | 0) != (HEAP32[i3 + 20 >> 2] | 0)) { - if ((i7 | 0) < (HEAPU8[i1 + 46 | 0] | 0)) { - i4 = 12; - } else { - _exp2reg(i1, i3, i7); - i7 = HEAP32[i6 >> 2] | 0; - } - } - } else { - i6 = i3 + 8 | 0; - i4 = 12; - } - if ((i4 | 0) == 12) { - _luaK_exp2nextreg(i1, i3); - i7 = HEAP32[i6 >> 2] | 0; - } - _luaK_code(i1, i7 << 6 | HEAP32[i5 + 8 >> 2] << 23 | 9) | 0; - } - if ((HEAP32[i3 >> 2] | 0) != 6) { - STACKTOP = i2; - return; - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - if ((i3 & 256 | 0) != 0) { - STACKTOP = i2; - return; - } - if ((HEAPU8[i1 + 46 | 0] | 0) > (i3 | 0)) { - STACKTOP = i2; - return; - } - i7 = i1 + 48 | 0; - HEAP8[i7] = (HEAP8[i7] | 0) + -1 << 24 >> 24; - STACKTOP = i2; - return; -} -function _closegoto(i10, i3, i9) { - i10 = i10 | 0; - i3 = i3 | 0; - i9 = i9 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i11 = 0, i12 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i7 = i1; - i4 = HEAP32[i10 + 48 >> 2] | 0; - i6 = HEAP32[i10 + 64 >> 2] | 0; - i2 = i6 + 12 | 0; - i5 = HEAP32[i2 >> 2] | 0; - i8 = HEAP8[i5 + (i3 << 4) + 12 | 0] | 0; - if ((i8 & 255) < (HEAPU8[i9 + 12 | 0] | 0)) { - i11 = HEAP32[i10 + 52 >> 2] | 0; - i12 = HEAP32[i5 + (i3 << 4) + 8 >> 2] | 0; - i8 = (HEAP32[(HEAP32[(HEAP32[i4 >> 2] | 0) + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((HEAP32[i4 + 40 >> 2] | 0) + (i8 & 255) << 1) >> 1] | 0) * 12 | 0) >> 2] | 0) + 16 | 0; - HEAP32[i7 >> 2] = (HEAP32[i5 + (i3 << 4) >> 2] | 0) + 16; - HEAP32[i7 + 4 >> 2] = i12; - HEAP32[i7 + 8 >> 2] = i8; - _semerror(i10, _luaO_pushfstring(i11, 6248, i7) | 0); - } - _luaK_patchlist(i4, HEAP32[i5 + (i3 << 4) + 4 >> 2] | 0, HEAP32[i9 + 4 >> 2] | 0); - i4 = i6 + 16 | 0; - i5 = (HEAP32[i4 >> 2] | 0) + -1 | 0; - if ((i5 | 0) <= (i3 | 0)) { - i12 = i5; - HEAP32[i4 >> 2] = i12; - STACKTOP = i1; - return; - } - do { - i12 = HEAP32[i2 >> 2] | 0; - i5 = i12 + (i3 << 4) | 0; - i3 = i3 + 1 | 0; - i12 = i12 + (i3 << 4) | 0; - HEAP32[i5 + 0 >> 2] = HEAP32[i12 + 0 >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[i12 + 4 >> 2]; - HEAP32[i5 + 8 >> 2] = HEAP32[i12 + 8 >> 2]; - HEAP32[i5 + 12 >> 2] = HEAP32[i12 + 12 >> 2]; - i5 = (HEAP32[i4 >> 2] | 0) + -1 | 0; - } while ((i3 | 0) < (i5 | 0)); - HEAP32[i4 >> 2] = i5; - STACKTOP = i1; - return; -} -function _luaM_growaux_(i4, i5, i1, i7, i8, i9) { - i4 = i4 | 0; - i5 = i5 | 0; - i1 = i1 | 0; - i7 = i7 | 0; - i8 = i8 | 0; - i9 = i9 | 0; - var i2 = 0, i3 = 0, i6 = 0, i10 = 0, i11 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i10 = i2; - i6 = HEAP32[i1 >> 2] | 0; - if ((i6 | 0) >= ((i8 | 0) / 2 | 0 | 0)) { - if ((i6 | 0) < (i8 | 0)) { - i3 = i8; - } else { - HEAP32[i10 >> 2] = i9; - HEAP32[i10 + 4 >> 2] = i8; - _luaG_runerror(i4, 4112, i10); - } - } else { - i3 = i6 << 1; - i3 = (i3 | 0) < 4 ? 4 : i3; - } - if ((i3 + 1 | 0) >>> 0 > (4294967293 / (i7 >>> 0) | 0) >>> 0) { - _luaM_toobig(i4); - } - i6 = Math_imul(i6, i7) | 0; - i8 = Math_imul(i3, i7) | 0; - i9 = HEAP32[i4 + 12 >> 2] | 0; - i7 = (i5 | 0) != 0; - i11 = i9 + 4 | 0; - i10 = FUNCTION_TABLE_iiiii[HEAP32[i9 >> 2] & 3](HEAP32[i11 >> 2] | 0, i5, i6, i8) | 0; - if ((i10 | 0) != 0 | (i8 | 0) == 0) { - i5 = i9 + 12 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i6 = 0 - i6 | 0; - i11 = i7 ? i6 : 0; - i11 = i11 + i8 | 0; - i11 = i11 + i4 | 0; - HEAP32[i5 >> 2] = i11; - HEAP32[i1 >> 2] = i3; - STACKTOP = i2; - return i10 | 0; - } - if ((HEAP8[i9 + 63 | 0] | 0) == 0) { - _luaD_throw(i4, 4); - } - _luaC_fullgc(i4, 1); - i10 = FUNCTION_TABLE_iiiii[HEAP32[i9 >> 2] & 3](HEAP32[i11 >> 2] | 0, i5, i6, i8) | 0; - if ((i10 | 0) == 0) { - _luaD_throw(i4, 4); - } else { - i5 = i9 + 12 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i6 = 0 - i6 | 0; - i11 = i7 ? i6 : 0; - i11 = i11 + i8 | 0; - i11 = i11 + i4 | 0; - HEAP32[i5 >> 2] = i11; - HEAP32[i1 >> 2] = i3; - STACKTOP = i2; - return i10 | 0; - } - return 0; -} -function _luaD_hook(i5, i14, i13) { - i5 = i5 | 0; - i14 = i14 | 0; - i13 = i13 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i15 = 0, i16 = 0; - i11 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i4 = i11; - i3 = HEAP32[i5 + 52 >> 2] | 0; - if ((i3 | 0) == 0) { - STACKTOP = i11; - return; - } - i8 = i5 + 41 | 0; - if ((HEAP8[i8] | 0) == 0) { - STACKTOP = i11; - return; - } - i10 = HEAP32[i5 + 16 >> 2] | 0; - i6 = i5 + 8 | 0; - i15 = HEAP32[i6 >> 2] | 0; - i1 = i5 + 28 | 0; - i16 = i15; - i12 = HEAP32[i1 >> 2] | 0; - i7 = i16 - i12 | 0; - i9 = i10 + 4 | 0; - i12 = (HEAP32[i9 >> 2] | 0) - i12 | 0; - HEAP32[i4 >> 2] = i14; - HEAP32[i4 + 20 >> 2] = i13; - HEAP32[i4 + 96 >> 2] = i10; - do { - if (((HEAP32[i5 + 24 >> 2] | 0) - i16 | 0) < 336) { - i14 = HEAP32[i5 + 32 >> 2] | 0; - if ((i14 | 0) > 1e6) { - _luaD_throw(i5, 6); - } - i13 = (i7 >> 4) + 25 | 0; - i14 = i14 << 1; - i14 = (i14 | 0) > 1e6 ? 1e6 : i14; - i13 = (i14 | 0) < (i13 | 0) ? i13 : i14; - if ((i13 | 0) > 1e6) { - _luaD_reallocstack(i5, 1000200); - _luaG_runerror(i5, 2224, i4); - } else { - _luaD_reallocstack(i5, i13); - i2 = HEAP32[i6 >> 2] | 0; - break; - } - } else { - i2 = i15; - } - } while (0); - HEAP32[i9 >> 2] = i2 + 320; - HEAP8[i8] = 0; - i16 = i10 + 18 | 0; - HEAP8[i16] = HEAPU8[i16] | 2; - FUNCTION_TABLE_vii[i3 & 15](i5, i4); - HEAP8[i8] = 1; - HEAP32[i9 >> 2] = (HEAP32[i1 >> 2] | 0) + i12; - HEAP32[i6 >> 2] = (HEAP32[i1 >> 2] | 0) + i7; - HEAP8[i16] = HEAP8[i16] & 253; - STACKTOP = i11; - return; -} -function _funcargs(i10, i2, i1) { - i10 = i10 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i6 = i3; - i9 = i10 + 48 | 0; - i5 = HEAP32[i9 >> 2] | 0; - i7 = i10 + 16 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 | 0) == 289) { - i9 = _luaK_stringK(i5, HEAP32[i10 + 24 >> 2] | 0) | 0; - HEAP32[i6 + 16 >> 2] = -1; - HEAP32[i6 + 20 >> 2] = -1; - HEAP32[i6 >> 2] = 4; - HEAP32[i6 + 8 >> 2] = i9; - _luaX_next(i10); - } else if ((i8 | 0) == 40) { - _luaX_next(i10); - if ((HEAP32[i7 >> 2] | 0) == 41) { - HEAP32[i6 >> 2] = 0; - } else { - _subexpr(i10, i6, 0) | 0; - if ((HEAP32[i7 >> 2] | 0) == 44) { - do { - _luaX_next(i10); - _luaK_exp2nextreg(HEAP32[i9 >> 2] | 0, i6); - _subexpr(i10, i6, 0) | 0; - } while ((HEAP32[i7 >> 2] | 0) == 44); - } - _luaK_setreturns(i5, i6, -1); - } - _check_match(i10, 41, 40, i1); - } else if ((i8 | 0) == 123) { - _constructor(i10, i6); - } else { - _luaX_syntaxerror(i10, 6624); - } - i8 = i2 + 8 | 0; - i7 = HEAP32[i8 >> 2] | 0; - i9 = HEAP32[i6 >> 2] | 0; - if ((i9 | 0) == 0) { - i4 = 13; - } else if ((i9 | 0) == 13 | (i9 | 0) == 12) { - i6 = 0; - } else { - _luaK_exp2nextreg(i5, i6); - i4 = 13; - } - if ((i4 | 0) == 13) { - i6 = (HEAPU8[i5 + 48 | 0] | 0) - i7 | 0; - } - i10 = _luaK_codeABC(i5, 29, i7, i6, 2) | 0; - HEAP32[i2 + 16 >> 2] = -1; - HEAP32[i2 + 20 >> 2] = -1; - HEAP32[i2 >> 2] = 12; - HEAP32[i8 >> 2] = i10; - _luaK_fixline(i5, i1); - HEAP8[i5 + 48 | 0] = i7 + 1; - STACKTOP = i3; - return; -} -function _luaD_reallocstack(i3, i6) { - i3 = i3 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0; - i1 = STACKTOP; - i2 = i3 + 28 | 0; - i8 = HEAP32[i2 >> 2] | 0; - i7 = i3 + 32 | 0; - i9 = HEAP32[i7 >> 2] | 0; - if ((i6 + 1 | 0) >>> 0 > 268435455) { - _luaM_toobig(i3); - } - i5 = _luaM_realloc_(i3, i8, i9 << 4, i6 << 4) | 0; - HEAP32[i2 >> 2] = i5; - if ((i9 | 0) < (i6 | 0)) { - do { - HEAP32[i5 + (i9 << 4) + 8 >> 2] = 0; - i9 = i9 + 1 | 0; - } while ((i9 | 0) != (i6 | 0)); - } - HEAP32[i7 >> 2] = i6; - HEAP32[i3 + 24 >> 2] = i5 + (i6 + -5 << 4); - i6 = i3 + 8 | 0; - HEAP32[i6 >> 2] = i5 + ((HEAP32[i6 >> 2] | 0) - i8 >> 4 << 4); - i6 = HEAP32[i3 + 56 >> 2] | 0; - if ((i6 | 0) != 0 ? (i4 = i6 + 8 | 0, HEAP32[i4 >> 2] = i5 + ((HEAP32[i4 >> 2] | 0) - i8 >> 4 << 4), i4 = HEAP32[i6 >> 2] | 0, (i4 | 0) != 0) : 0) { - do { - i9 = i4 + 8 | 0; - HEAP32[i9 >> 2] = (HEAP32[i2 >> 2] | 0) + ((HEAP32[i9 >> 2] | 0) - i8 >> 4 << 4); - i4 = HEAP32[i4 >> 2] | 0; - } while ((i4 | 0) != 0); - } - i3 = HEAP32[i3 + 16 >> 2] | 0; - if ((i3 | 0) == 0) { - STACKTOP = i1; - return; - } - do { - i9 = i3 + 4 | 0; - HEAP32[i9 >> 2] = (HEAP32[i2 >> 2] | 0) + ((HEAP32[i9 >> 2] | 0) - i8 >> 4 << 4); - HEAP32[i3 >> 2] = (HEAP32[i2 >> 2] | 0) + ((HEAP32[i3 >> 2] | 0) - i8 >> 4 << 4); - if (!((HEAP8[i3 + 18 | 0] & 1) == 0)) { - i9 = i3 + 24 | 0; - HEAP32[i9 >> 2] = (HEAP32[i2 >> 2] | 0) + ((HEAP32[i9 >> 2] | 0) - i8 >> 4 << 4); - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - } while ((i3 | 0) != 0); - STACKTOP = i1; - return; -} -function _luaF_close(i7, i6) { - i7 = i7 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0; - i1 = STACKTOP; - i4 = HEAP32[i7 + 12 >> 2] | 0; - i3 = i7 + 56 | 0; - i8 = HEAP32[i3 >> 2] | 0; - if ((i8 | 0) == 0) { - STACKTOP = i1; - return; - } - i5 = i4 + 60 | 0; - i2 = i4 + 68 | 0; - while (1) { - i9 = i8 + 8 | 0; - if ((HEAP32[i9 >> 2] | 0) >>> 0 < i6 >>> 0) { - i2 = 10; - break; - } - HEAP32[i3 >> 2] = HEAP32[i8 >> 2]; - if ((((HEAPU8[i5] | 0) ^ 3) & ((HEAPU8[i8 + 5 | 0] | 0) ^ 3) | 0) == 0) { - if ((HEAP32[i9 >> 2] | 0) != (i8 + 16 | 0)) { - i9 = i8 + 16 | 0; - i10 = i9 + 4 | 0; - HEAP32[(HEAP32[i10 >> 2] | 0) + 16 >> 2] = HEAP32[i9 >> 2]; - HEAP32[(HEAP32[i9 >> 2] | 0) + 20 >> 2] = HEAP32[i10 >> 2]; - } - _luaM_realloc_(i7, i8, 32, 0) | 0; - } else { - i11 = i8 + 16 | 0; - i10 = i11 + 4 | 0; - HEAP32[(HEAP32[i10 >> 2] | 0) + 16 >> 2] = HEAP32[i11 >> 2]; - HEAP32[(HEAP32[i11 >> 2] | 0) + 20 >> 2] = HEAP32[i10 >> 2]; - i11 = HEAP32[i9 >> 2] | 0; - i10 = i8 + 16 | 0; - i14 = i11; - i13 = HEAP32[i14 + 4 >> 2] | 0; - i12 = i10; - HEAP32[i12 >> 2] = HEAP32[i14 >> 2]; - HEAP32[i12 + 4 >> 2] = i13; - HEAP32[i8 + 24 >> 2] = HEAP32[i11 + 8 >> 2]; - HEAP32[i9 >> 2] = i10; - HEAP32[i8 >> 2] = HEAP32[i2 >> 2]; - HEAP32[i2 >> 2] = i8; - _luaC_checkupvalcolor(i4, i8); - } - i8 = HEAP32[i3 >> 2] | 0; - if ((i8 | 0) == 0) { - i2 = 10; - break; - } - } - if ((i2 | 0) == 10) { - STACKTOP = i1; - return; - } -} -function _luaK_dischargevars(i3, i1) { - i3 = i3 | 0; - i1 = i1 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - switch (HEAP32[i1 >> 2] | 0) { - case 12: - { - HEAP32[i1 >> 2] = 6; - i6 = i1 + 8 | 0; - HEAP32[i6 >> 2] = (HEAP32[(HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i6 >> 2] << 2) >> 2] | 0) >>> 6 & 255; - STACKTOP = i2; - return; - } - case 13: - { - i6 = (HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i1 + 8 >> 2] << 2) | 0; - HEAP32[i6 >> 2] = HEAP32[i6 >> 2] & 8388607 | 16777216; - HEAP32[i1 >> 2] = 11; - STACKTOP = i2; - return; - } - case 9: - { - i4 = i1 + 8 | 0; - i5 = HEAP16[i4 >> 1] | 0; - if ((i5 & 256 | 0) == 0 ? (HEAPU8[i3 + 46 | 0] | 0) <= (i5 | 0) : 0) { - i6 = i3 + 48 | 0; - HEAP8[i6] = (HEAP8[i6] | 0) + -1 << 24 >> 24; - } - i5 = i4 + 2 | 0; - if ((HEAP8[i4 + 3 | 0] | 0) == 7) { - if ((HEAPU8[i3 + 46 | 0] | 0) > (HEAPU8[i5] | 0)) { - i6 = 7; - } else { - i6 = i3 + 48 | 0; - HEAP8[i6] = (HEAP8[i6] | 0) + -1 << 24 >> 24; - i6 = 7; - } - } else { - i6 = 6; - } - HEAP32[i4 >> 2] = _luaK_code(i3, HEAPU8[i5] << 23 | i6 | HEAP16[i4 >> 1] << 14) | 0; - HEAP32[i1 >> 2] = 11; - STACKTOP = i2; - return; - } - case 7: - { - HEAP32[i1 >> 2] = 6; - STACKTOP = i2; - return; - } - case 8: - { - i6 = i1 + 8 | 0; - HEAP32[i6 >> 2] = _luaK_code(i3, HEAP32[i6 >> 2] << 23 | 5) | 0; - HEAP32[i1 >> 2] = 11; - STACKTOP = i2; - return; - } - default: - { - STACKTOP = i2; - return; - } - } -} -function _gmatch_aux(i10) { - i10 = i10 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 288 | 0; - i2 = i1 + 8 | 0; - i12 = i1 + 4 | 0; - i3 = i1; - i8 = _lua_tolstring(i10, -1001001, i12) | 0; - i7 = _lua_tolstring(i10, -1001002, i3) | 0; - i5 = i2 + 16 | 0; - HEAP32[i5 >> 2] = i10; - HEAP32[i2 >> 2] = 200; - HEAP32[i2 + 4 >> 2] = i8; - i9 = i2 + 8 | 0; - HEAP32[i9 >> 2] = i8 + (HEAP32[i12 >> 2] | 0); - HEAP32[i2 + 12 >> 2] = i7 + (HEAP32[i3 >> 2] | 0); - i3 = i8 + (_lua_tointegerx(i10, -1001003, 0) | 0) | 0; - if (i3 >>> 0 > (HEAP32[i9 >> 2] | 0) >>> 0) { - i12 = 0; - STACKTOP = i1; - return i12 | 0; - } - i11 = i2 + 20 | 0; - while (1) { - HEAP32[i11 >> 2] = 0; - i4 = _match(i2, i3, i7) | 0; - i12 = i3 + 1 | 0; - if ((i4 | 0) != 0) { - break; - } - if (i12 >>> 0 > (HEAP32[i9 >> 2] | 0) >>> 0) { - i2 = 0; - i6 = 7; - break; - } else { - i3 = i12; - } - } - if ((i6 | 0) == 7) { - STACKTOP = i1; - return i2 | 0; - } - _lua_pushinteger(i10, i4 - i8 + ((i4 | 0) == (i3 | 0)) | 0); - _lua_replace(i10, -1001003); - i7 = HEAP32[i11 >> 2] | 0; - i6 = (i7 | 0) != 0 | (i3 | 0) == 0 ? i7 : 1; - _luaL_checkstack(HEAP32[i5 >> 2] | 0, i6, 7200); - if ((i6 | 0) > 0) { - i5 = 0; - } else { - i12 = i7; - STACKTOP = i1; - return i12 | 0; - } - while (1) { - _push_onecapture(i2, i5, i3, i4); - i5 = i5 + 1 | 0; - if ((i5 | 0) == (i6 | 0)) { - i2 = i6; - break; - } - } - STACKTOP = i1; - return i2 | 0; -} -function _lua_rawseti(i1, i5, i3) { - i1 = i1 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i6 = 0; - i2 = STACKTOP; - i6 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i6 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i6 >> 2] | 0, (i5 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i5 = i4 + (i5 + -1 << 4) + 16 | 0; - } else { - i5 = 5192; - } - } else { - i4 = (HEAP32[i6 >> 2] | 0) + (i5 << 4) | 0; - i5 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - i4 = i1 + 8 | 0; - _luaH_setint(i1, HEAP32[i5 >> 2] | 0, i3, (HEAP32[i4 >> 2] | 0) + -16 | 0); - i3 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i3 + -8 >> 2] & 64 | 0) == 0) { - i6 = i3; - i6 = i6 + -16 | 0; - HEAP32[i4 >> 2] = i6; - STACKTOP = i2; - return; - } - if ((HEAP8[(HEAP32[i3 + -16 >> 2] | 0) + 5 | 0] & 3) == 0) { - i6 = i3; - i6 = i6 + -16 | 0; - HEAP32[i4 >> 2] = i6; - STACKTOP = i2; - return; - } - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP8[i5 + 5 | 0] & 4) == 0) { - i6 = i3; - i6 = i6 + -16 | 0; - HEAP32[i4 >> 2] = i6; - STACKTOP = i2; - return; - } - _luaC_barrierback_(i1, i5); - i6 = HEAP32[i4 >> 2] | 0; - i6 = i6 + -16 | 0; - HEAP32[i4 >> 2] = i6; - STACKTOP = i2; - return; -} -function _ll_require(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i5 = i2; - i4 = i2 + 8 | 0; - i3 = _luaL_checklstring(i1, 1, 0) | 0; - _lua_settop(i1, 1); - _lua_getfield(i1, -1001e3, 4576); - _lua_getfield(i1, 2, i3); - if ((_lua_toboolean(i1, -1) | 0) != 0) { - STACKTOP = i2; - return 1; - } - _lua_settop(i1, -2); - _luaL_buffinit(i1, i4); - _lua_getfield(i1, -1001001, 4240); - if ((_lua_type(i1, 3) | 0) == 5) { - i6 = 1; - } else { - _luaL_error(i1, 4656, i5) | 0; - i6 = 1; - } - while (1) { - _lua_rawgeti(i1, 3, i6); - if ((_lua_type(i1, -1) | 0) == 0) { - _lua_settop(i1, -2); - _luaL_pushresult(i4); - i7 = _lua_tolstring(i1, -1, 0) | 0; - HEAP32[i5 >> 2] = i3; - HEAP32[i5 + 4 >> 2] = i7; - _luaL_error(i1, 4696, i5) | 0; - } - _lua_pushstring(i1, i3) | 0; - _lua_callk(i1, 1, 2, 0, 0); - if ((_lua_type(i1, -2) | 0) == 6) { - break; - } - if ((_lua_isstring(i1, -2) | 0) == 0) { - _lua_settop(i1, -3); - } else { - _lua_settop(i1, -2); - _luaL_addvalue(i4); - } - i6 = i6 + 1 | 0; - } - _lua_pushstring(i1, i3) | 0; - _lua_insert(i1, -2); - _lua_callk(i1, 2, 1, 0, 0); - if ((_lua_type(i1, -1) | 0) != 0) { - _lua_setfield(i1, 2, i3); - } - _lua_getfield(i1, 2, i3); - if ((_lua_type(i1, -1) | 0) != 0) { - STACKTOP = i2; - return 1; - } - _lua_pushboolean(i1, 1); - _lua_pushvalue(i1, -1); - _lua_setfield(i1, 2, i3); - STACKTOP = i2; - return 1; -} -function _f_parser(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - i5 = HEAP32[i3 >> 2] | 0; - i8 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i8 + -1; - if ((i8 | 0) == 0) { - i6 = _luaZ_fill(i5) | 0; - } else { - i8 = i5 + 4 | 0; - i6 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i6 + 1; - i6 = HEAPU8[i6] | 0; - } - i5 = HEAP32[i3 + 52 >> 2] | 0; - i7 = (i5 | 0) == 0; - if ((i6 | 0) == 27) { - if (!i7 ? (_strchr(i5, 98) | 0) == 0 : 0) { - HEAP32[i4 >> 2] = 2360; - HEAP32[i4 + 4 >> 2] = i5; - _luaO_pushfstring(i1, 2376, i4) | 0; - _luaD_throw(i1, 3); - } - i8 = _luaU_undump(i1, HEAP32[i3 >> 2] | 0, i3 + 4 | 0, HEAP32[i3 + 56 >> 2] | 0) | 0; - } else { - if (!i7 ? (_strchr(i5, 116) | 0) == 0 : 0) { - HEAP32[i4 >> 2] = 2368; - HEAP32[i4 + 4 >> 2] = i5; - _luaO_pushfstring(i1, 2376, i4) | 0; - _luaD_throw(i1, 3); - } - i8 = _luaY_parser(i1, HEAP32[i3 >> 2] | 0, i3 + 4 | 0, i3 + 16 | 0, HEAP32[i3 + 56 >> 2] | 0, i6) | 0; - } - i7 = i8 + 6 | 0; - if ((HEAP8[i7] | 0) == 0) { - STACKTOP = i2; - return; - } - i5 = i8 + 16 | 0; - i6 = i8 + 5 | 0; - i4 = 0; - do { - i3 = _luaF_newupval(i1) | 0; - HEAP32[i5 + (i4 << 2) >> 2] = i3; - if (!((HEAP8[i3 + 5 | 0] & 3) == 0) ? !((HEAP8[i6] & 4) == 0) : 0) { - _luaC_barrier_(i1, i8, i3); - } - i4 = i4 + 1 | 0; - } while ((i4 | 0) < (HEAPU8[i7] | 0)); - STACKTOP = i2; - return; -} -function _str_rep(i9) { - i9 = i9 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i4 = i6; - i2 = i6 + 1044 | 0; - i3 = i6 + 1040 | 0; - i1 = _luaL_checklstring(i9, 1, i2) | 0; - i8 = _luaL_checkinteger(i9, 2) | 0; - i5 = _luaL_optlstring(i9, 3, 7040, i3) | 0; - if ((i8 | 0) < 1) { - _lua_pushlstring(i9, 7040, 0) | 0; - i12 = 1; - STACKTOP = i6; - return i12 | 0; - } - i7 = HEAP32[i2 >> 2] | 0; - i10 = HEAP32[i3 >> 2] | 0; - i11 = i10 + i7 | 0; - if (!(i11 >>> 0 < i7 >>> 0) ? i11 >>> 0 < (2147483647 / (i8 >>> 0) | 0) >>> 0 : 0) { - i7 = (Math_imul(i10, i8 + -1 | 0) | 0) + (Math_imul(i7, i8) | 0) | 0; - i11 = _luaL_buffinitsize(i9, i4, i7) | 0; - _memcpy(i11 | 0, i1 | 0, HEAP32[i2 >> 2] | 0) | 0; - if ((i8 | 0) > 1) { - while (1) { - i8 = i8 + -1 | 0; - i9 = HEAP32[i2 >> 2] | 0; - i10 = i11 + i9 | 0; - i12 = HEAP32[i3 >> 2] | 0; - if ((i12 | 0) == 0) { - i12 = i9; - } else { - _memcpy(i10 | 0, i5 | 0, i12 | 0) | 0; - i12 = HEAP32[i2 >> 2] | 0; - i10 = i11 + ((HEAP32[i3 >> 2] | 0) + i9) | 0; - } - _memcpy(i10 | 0, i1 | 0, i12 | 0) | 0; - if ((i8 | 0) <= 1) { - break; - } else { - i11 = i10; - } - } - } - _luaL_pushresultsize(i4, i7); - i12 = 1; - STACKTOP = i6; - return i12 | 0; - } - i12 = _luaL_error(i9, 7168, i4) | 0; - STACKTOP = i6; - return i12 | 0; -} -function ___strchrnul(i6, i2) { - i6 = i6 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0; - i1 = STACKTOP; - i3 = i2 & 255; - if ((i3 | 0) == 0) { - i7 = i6 + (_strlen(i6 | 0) | 0) | 0; - STACKTOP = i1; - return i7 | 0; - } - L5 : do { - if ((i6 & 3 | 0) != 0) { - i4 = i2 & 255; - while (1) { - i5 = HEAP8[i6] | 0; - if (i5 << 24 >> 24 == 0) { - i4 = i6; - i5 = 13; - break; - } - i7 = i6 + 1 | 0; - if (i5 << 24 >> 24 == i4 << 24 >> 24) { - i4 = i6; - i5 = 13; - break; - } - if ((i7 & 3 | 0) == 0) { - i4 = i7; - break L5; - } else { - i6 = i7; - } - } - if ((i5 | 0) == 13) { - STACKTOP = i1; - return i4 | 0; - } - } else { - i4 = i6; - } - } while (0); - i3 = Math_imul(i3, 16843009) | 0; - i6 = HEAP32[i4 >> 2] | 0; - L15 : do { - if (((i6 & -2139062144 ^ -2139062144) & i6 + -16843009 | 0) == 0) { - while (1) { - i7 = i6 ^ i3; - i5 = i4 + 4 | 0; - if (((i7 & -2139062144 ^ -2139062144) & i7 + -16843009 | 0) != 0) { - break L15; - } - i6 = HEAP32[i5 >> 2] | 0; - if (((i6 & -2139062144 ^ -2139062144) & i6 + -16843009 | 0) == 0) { - i4 = i5; - } else { - i4 = i5; - break; - } - } - } - } while (0); - i2 = i2 & 255; - while (1) { - i7 = HEAP8[i4] | 0; - if (i7 << 24 >> 24 == 0 | i7 << 24 >> 24 == i2 << 24 >> 24) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - STACKTOP = i1; - return i4 | 0; -} -function _lua_replace(i2, i6) { - i2 = i2 | 0; - i6 = i6 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i3 = STACKTOP; - i7 = i2 + 8 | 0; - i9 = HEAP32[i7 >> 2] | 0; - i5 = i9 + -16 | 0; - i4 = i2 + 16 | 0; - i12 = HEAP32[i4 >> 2] | 0; - do { - if ((i6 | 0) <= 0) { - if (!((i6 | 0) < -1000999)) { - i10 = i9 + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i10 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i11 = -1001e3 - i6 | 0; - i12 = HEAP32[i12 >> 2] | 0; - if ((HEAP32[i12 + 8 >> 2] | 0) != 22 ? (i10 = HEAP32[i12 >> 2] | 0, (i11 | 0) <= (HEAPU8[i10 + 6 | 0] | 0 | 0)) : 0) { - i10 = i10 + (i11 + -1 << 4) + 16 | 0; - } else { - i10 = 5192; - } - } else { - i10 = (HEAP32[i12 >> 2] | 0) + (i6 << 4) | 0; - i10 = i10 >>> 0 < i9 >>> 0 ? i10 : 5192; - } - } while (0); - i13 = i5; - i11 = HEAP32[i13 + 4 >> 2] | 0; - i12 = i10; - HEAP32[i12 >> 2] = HEAP32[i13 >> 2]; - HEAP32[i12 + 4 >> 2] = i11; - i9 = i9 + -8 | 0; - HEAP32[i10 + 8 >> 2] = HEAP32[i9 >> 2]; - if ((((i6 | 0) < -1001e3 ? (HEAP32[i9 >> 2] & 64 | 0) != 0 : 0) ? (i1 = HEAP32[i5 >> 2] | 0, !((HEAP8[i1 + 5 | 0] & 3) == 0)) : 0) ? (i8 = HEAP32[HEAP32[HEAP32[i4 >> 2] >> 2] >> 2] | 0, !((HEAP8[i8 + 5 | 0] & 4) == 0)) : 0) { - _luaC_barrier_(i2, i8, i1); - } - HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + -16; - STACKTOP = i3; - return; -} -function _memchr(i4, i3, i6) { - i4 = i4 | 0; - i3 = i3 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i5 = 0, i7 = 0; - i1 = STACKTOP; - i2 = i3 & 255; - i7 = (i6 | 0) == 0; - L1 : do { - if ((i4 & 3 | 0) == 0 | i7) { - i5 = i6; - i6 = 5; - } else { - i5 = i3 & 255; - while (1) { - if ((HEAP8[i4] | 0) == i5 << 24 >> 24) { - i5 = i6; - i6 = 6; - break L1; - } - i4 = i4 + 1 | 0; - i6 = i6 + -1 | 0; - i7 = (i6 | 0) == 0; - if ((i4 & 3 | 0) == 0 | i7) { - i5 = i6; - i6 = 5; - break; - } - } - } - } while (0); - if ((i6 | 0) == 5) { - if (i7) { - i5 = 0; - } else { - i6 = 6; - } - } - L8 : do { - if ((i6 | 0) == 6) { - i3 = i3 & 255; - if (!((HEAP8[i4] | 0) == i3 << 24 >> 24)) { - i2 = Math_imul(i2, 16843009) | 0; - L11 : do { - if (i5 >>> 0 > 3) { - do { - i7 = HEAP32[i4 >> 2] ^ i2; - if (((i7 & -2139062144 ^ -2139062144) & i7 + -16843009 | 0) != 0) { - break L11; - } - i4 = i4 + 4 | 0; - i5 = i5 + -4 | 0; - } while (i5 >>> 0 > 3); - } - } while (0); - if ((i5 | 0) == 0) { - i5 = 0; - } else { - while (1) { - if ((HEAP8[i4] | 0) == i3 << 24 >> 24) { - break L8; - } - i4 = i4 + 1 | 0; - i5 = i5 + -1 | 0; - if ((i5 | 0) == 0) { - i5 = 0; - break; - } - } - } - } - } - } while (0); - STACKTOP = i1; - return ((i5 | 0) != 0 ? i4 : 0) | 0; -} -function _lua_insert(i2, i5) { - i2 = i2 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0; - i1 = STACKTOP; - i4 = HEAP32[i2 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i3 = (HEAP32[i2 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i3 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i5 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i2 = i2 + 8 | 0; - i4 = HEAP32[i2 >> 2] | 0; - if (i4 >>> 0 > i3 >>> 0) { - while (1) { - i5 = i4 + -16 | 0; - i8 = i5; - i7 = HEAP32[i8 + 4 >> 2] | 0; - i6 = i4; - HEAP32[i6 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i6 + 4 >> 2] = i7; - HEAP32[i4 + 8 >> 2] = HEAP32[i4 + -8 >> 2]; - if (i5 >>> 0 > i3 >>> 0) { - i4 = i5; - } else { - break; - } - } - i4 = HEAP32[i2 >> 2] | 0; - } - i6 = i4; - i7 = HEAP32[i6 + 4 >> 2] | 0; - i8 = i3; - HEAP32[i8 >> 2] = HEAP32[i6 >> 2]; - HEAP32[i8 + 4 >> 2] = i7; - HEAP32[i3 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - STACKTOP = i1; - return; -} -function _findlocal(i6, i4, i1, i2) { - i6 = i6 | 0; - i4 = i4 | 0; - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i5 = 0, i7 = 0, i8 = 0; - i3 = STACKTOP; - do { - if ((HEAP8[i4 + 18 | 0] & 1) == 0) { - i7 = (HEAP32[i4 >> 2] | 0) + 16 | 0; - i5 = 7; - } else { - if ((i1 | 0) >= 0) { - i8 = HEAP32[i4 + 24 >> 2] | 0; - i7 = HEAP32[(HEAP32[HEAP32[i4 >> 2] >> 2] | 0) + 12 >> 2] | 0; - i7 = _luaF_getlocalname(i7, i1, ((HEAP32[i4 + 28 >> 2] | 0) - (HEAP32[i7 + 12 >> 2] | 0) >> 2) + -1 | 0) | 0; - if ((i7 | 0) == 0) { - i7 = i8; - i5 = 7; - break; - } else { - break; - } - } - i5 = HEAP32[i4 >> 2] | 0; - i6 = HEAPU8[(HEAP32[(HEAP32[i5 >> 2] | 0) + 12 >> 2] | 0) + 76 | 0] | 0; - if ((((HEAP32[i4 + 24 >> 2] | 0) - i5 >> 4) - i6 | 0) <= (0 - i1 | 0)) { - i8 = 0; - STACKTOP = i3; - return i8 | 0; - } - HEAP32[i2 >> 2] = i5 + (i6 - i1 << 4); - i8 = 2208; - STACKTOP = i3; - return i8 | 0; - } - } while (0); - if ((i5 | 0) == 7) { - if ((HEAP32[i6 + 16 >> 2] | 0) == (i4 | 0)) { - i4 = i6 + 8 | 0; - } else { - i4 = HEAP32[i4 + 12 >> 2] | 0; - } - if (((HEAP32[i4 >> 2] | 0) - i7 >> 4 | 0) >= (i1 | 0) & (i1 | 0) > 0) { - i8 = i7; - i7 = 2192; - } else { - i8 = 0; - STACKTOP = i3; - return i8 | 0; - } - } - HEAP32[i2 >> 2] = i8 + (i1 + -1 << 4); - i8 = i7; - STACKTOP = i3; - return i8 | 0; -} -function _luaH_setint(i4, i5, i6, i1) { - i4 = i4 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, d7 = 0.0, i8 = 0, i9 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i8 = i2 + 16 | 0; - i3 = i2; - i9 = i6 + -1 | 0; - L1 : do { - if (i9 >>> 0 < (HEAP32[i5 + 28 >> 2] | 0) >>> 0) { - i9 = (HEAP32[i5 + 12 >> 2] | 0) + (i9 << 4) | 0; - i8 = 10; - } else { - d7 = +(i6 | 0); - HEAPF64[i8 >> 3] = d7 + 1.0; - i8 = (HEAP32[i8 + 4 >> 2] | 0) + (HEAP32[i8 >> 2] | 0) | 0; - if ((i8 | 0) < 0) { - i9 = 0 - i8 | 0; - i8 = (i8 | 0) == (i9 | 0) ? 0 : i9; - } - i9 = (HEAP32[i5 + 16 >> 2] | 0) + (((i8 | 0) % ((1 << (HEAPU8[i5 + 7 | 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; - while (1) { - if ((HEAP32[i9 + 24 >> 2] | 0) == 3 ? +HEAPF64[i9 + 16 >> 3] == d7 : 0) { - break; - } - i9 = HEAP32[i9 + 28 >> 2] | 0; - if ((i9 | 0) == 0) { - i8 = 12; - break L1; - } - } - i8 = 10; - } - } while (0); - if ((i8 | 0) == 10) { - if ((i9 | 0) == 5192) { - d7 = +(i6 | 0); - i8 = 12; - } - } - if ((i8 | 0) == 12) { - HEAPF64[i3 >> 3] = d7; - HEAP32[i3 + 8 >> 2] = 3; - i9 = _luaH_newkey(i4, i5, i3) | 0; - } - i5 = i1; - i6 = HEAP32[i5 + 4 >> 2] | 0; - i8 = i9; - HEAP32[i8 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i8 + 4 >> 2] = i6; - HEAP32[i9 + 8 >> 2] = HEAP32[i1 + 8 >> 2]; - STACKTOP = i2; - return; -} -function _lua_tounsignedx(i6, i8, i1) { - i6 = i6 | 0; - i8 = i8 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i4 = i2 + 8 | 0; - i3 = i2; - i7 = HEAP32[i6 + 16 >> 2] | 0; - do { - if ((i8 | 0) <= 0) { - if (!((i8 | 0) < -1000999)) { - i5 = (HEAP32[i6 + 8 >> 2] | 0) + (i8 << 4) | 0; - break; - } - if ((i8 | 0) == -1001e3) { - i5 = (HEAP32[i6 + 12 >> 2] | 0) + 40 | 0; - break; - } - i6 = -1001e3 - i8 | 0; - i7 = HEAP32[i7 >> 2] | 0; - if ((HEAP32[i7 + 8 >> 2] | 0) != 22 ? (i5 = HEAP32[i7 >> 2] | 0, (i6 | 0) <= (HEAPU8[i5 + 6 | 0] | 0 | 0)) : 0) { - i5 = i5 + (i6 + -1 << 4) + 16 | 0; - } else { - i5 = 5192; - } - } else { - i5 = (HEAP32[i7 >> 2] | 0) + (i8 << 4) | 0; - i5 = i5 >>> 0 < (HEAP32[i6 + 8 >> 2] | 0) >>> 0 ? i5 : 5192; - } - } while (0); - if ((HEAP32[i5 + 8 >> 2] | 0) != 3) { - i5 = _luaV_tonumber(i5, i4) | 0; - if ((i5 | 0) == 0) { - if ((i1 | 0) == 0) { - i8 = 0; - STACKTOP = i2; - return i8 | 0; - } - HEAP32[i1 >> 2] = 0; - i8 = 0; - STACKTOP = i2; - return i8 | 0; - } - } - HEAPF64[i3 >> 3] = +HEAPF64[i5 >> 3] + 6755399441055744.0; - i3 = HEAP32[i3 >> 2] | 0; - if ((i1 | 0) == 0) { - i8 = i3; - STACKTOP = i2; - return i8 | 0; - } - HEAP32[i1 >> 2] = 1; - i8 = i3; - STACKTOP = i2; - return i8 | 0; -} -function _luaC_freeallobjects(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - i5 = i1 + 12 | 0; - i3 = HEAP32[i5 >> 2] | 0; - i7 = i3 + 104 | 0; - while (1) { - i4 = HEAP32[i7 >> 2] | 0; - if ((i4 | 0) == 0) { - break; - } else { - i7 = i4; - } - } - i4 = i3 + 72 | 0; - i6 = HEAP32[i4 >> 2] | 0; - if ((i6 | 0) == 0) { - i5 = i3; - } else { - while (1) { - i8 = i6 + 5 | 0; - HEAP8[i8] = HEAPU8[i8] | 0 | 8; - HEAP32[i4 >> 2] = HEAP32[i6 >> 2]; - HEAP32[i6 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i7 >> 2] = i6; - i7 = HEAP32[i4 >> 2] | 0; - if ((i7 | 0) == 0) { - break; - } else { - i8 = i6; - i6 = i7; - i7 = i8; - } - } - i5 = HEAP32[i5 >> 2] | 0; - } - i5 = i5 + 104 | 0; - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) != 0) { - do { - i8 = i6 + 5 | 0; - HEAP8[i8] = HEAP8[i8] & 191; - _GCTM(i1, 0); - i6 = HEAP32[i5 >> 2] | 0; - } while ((i6 | 0) != 0); - } - HEAP8[i3 + 60 | 0] = 3; - HEAP8[i3 + 62 | 0] = 0; - _sweeplist(i1, i4, -3) | 0; - _sweeplist(i1, i3 + 68 | 0, -3) | 0; - i4 = i3 + 32 | 0; - if ((HEAP32[i4 >> 2] | 0) <= 0) { - STACKTOP = i2; - return; - } - i3 = i3 + 24 | 0; - i5 = 0; - do { - _sweeplist(i1, (HEAP32[i3 >> 2] | 0) + (i5 << 2) | 0, -3) | 0; - i5 = i5 + 1 | 0; - } while ((i5 | 0) < (HEAP32[i4 >> 2] | 0)); - STACKTOP = i2; - return; -} -function _strspn(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i3 = i2; - HEAP32[i3 + 0 >> 2] = 0; - HEAP32[i3 + 4 >> 2] = 0; - HEAP32[i3 + 8 >> 2] = 0; - HEAP32[i3 + 12 >> 2] = 0; - HEAP32[i3 + 16 >> 2] = 0; - HEAP32[i3 + 20 >> 2] = 0; - HEAP32[i3 + 24 >> 2] = 0; - HEAP32[i3 + 28 >> 2] = 0; - i4 = HEAP8[i5] | 0; - if (i4 << 24 >> 24 == 0) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - if ((HEAP8[i5 + 1 | 0] | 0) == 0) { - i3 = i1; - while (1) { - if ((HEAP8[i3] | 0) == i4 << 24 >> 24) { - i3 = i3 + 1 | 0; - } else { - break; - } - } - i6 = i3 - i1 | 0; - STACKTOP = i2; - return i6 | 0; - } - do { - i7 = i4 & 255; - i6 = i3 + (i7 >>> 5 << 2) | 0; - HEAP32[i6 >> 2] = HEAP32[i6 >> 2] | 1 << (i7 & 31); - i5 = i5 + 1 | 0; - i4 = HEAP8[i5] | 0; - } while (!(i4 << 24 >> 24 == 0)); - i5 = HEAP8[i1] | 0; - L12 : do { - if (i5 << 24 >> 24 == 0) { - i4 = i1; - } else { - i4 = i1; - while (1) { - i7 = i5 & 255; - i6 = i4 + 1 | 0; - if ((HEAP32[i3 + (i7 >>> 5 << 2) >> 2] & 1 << (i7 & 31) | 0) == 0) { - break L12; - } - i5 = HEAP8[i6] | 0; - if (i5 << 24 >> 24 == 0) { - i4 = i6; - break; - } else { - i4 = i6; - } - } - } - } while (0); - i7 = i4 - i1 | 0; - STACKTOP = i2; - return i7 | 0; -} -function _lua_remove(i2, i4) { - i2 = i2 | 0; - i4 = i4 | 0; - var i1 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - i5 = HEAP32[i2 + 16 >> 2] | 0; - do { - if ((i4 | 0) <= 0) { - if (!((i4 | 0) < -1000999)) { - i3 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0; - break; - } - if ((i4 | 0) == -1001e3) { - i3 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i4 = -1001e3 - i4 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i4 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i5 >> 2] | 0) + (i4 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i4 = i3 + 16 | 0; - i2 = i2 + 8 | 0; - i5 = HEAP32[i2 >> 2] | 0; - if (!(i4 >>> 0 < i5 >>> 0)) { - i5 = i5 + -16 | 0; - HEAP32[i2 >> 2] = i5; - STACKTOP = i1; - return; - } - while (1) { - i7 = i4; - i6 = HEAP32[i7 + 4 >> 2] | 0; - i5 = i3; - HEAP32[i5 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i5 + 4 >> 2] = i6; - HEAP32[i3 + 8 >> 2] = HEAP32[i3 + 24 >> 2]; - i5 = i4 + 16 | 0; - i3 = HEAP32[i2 >> 2] | 0; - if (i5 >>> 0 < i3 >>> 0) { - i3 = i4; - i4 = i5; - } else { - break; - } - } - i7 = i3 + -16 | 0; - HEAP32[i2 >> 2] = i7; - STACKTOP = i1; - return; -} -function _luaD_protectedparser(i1, i4, i3, i2) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - var i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i13 = i5; - i6 = i1 + 36 | 0; - HEAP16[i6 >> 1] = (HEAP16[i6 >> 1] | 0) + 1 << 16 >> 16; - HEAP32[i13 >> 2] = i4; - HEAP32[i13 + 56 >> 2] = i3; - HEAP32[i13 + 52 >> 2] = i2; - i10 = i13 + 16 | 0; - HEAP32[i10 >> 2] = 0; - i9 = i13 + 24 | 0; - HEAP32[i9 >> 2] = 0; - i8 = i13 + 28 | 0; - HEAP32[i8 >> 2] = 0; - i7 = i13 + 36 | 0; - HEAP32[i7 >> 2] = 0; - i2 = i13 + 40 | 0; - HEAP32[i2 >> 2] = 0; - i3 = i13 + 48 | 0; - HEAP32[i3 >> 2] = 0; - i12 = i13 + 4 | 0; - HEAP32[i12 >> 2] = 0; - i11 = i13 + 12 | 0; - HEAP32[i11 >> 2] = 0; - i4 = _luaD_pcall(i1, 6, i13, (HEAP32[i1 + 8 >> 2] | 0) - (HEAP32[i1 + 28 >> 2] | 0) | 0, HEAP32[i1 + 68 >> 2] | 0) | 0; - HEAP32[i12 >> 2] = _luaM_realloc_(i1, HEAP32[i12 >> 2] | 0, HEAP32[i11 >> 2] | 0, 0) | 0; - HEAP32[i11 >> 2] = 0; - _luaM_realloc_(i1, HEAP32[i10 >> 2] | 0, HEAP32[i9 >> 2] << 1, 0) | 0; - _luaM_realloc_(i1, HEAP32[i8 >> 2] | 0, HEAP32[i7 >> 2] << 4, 0) | 0; - _luaM_realloc_(i1, HEAP32[i2 >> 2] | 0, HEAP32[i3 >> 2] << 4, 0) | 0; - HEAP16[i6 >> 1] = (HEAP16[i6 >> 1] | 0) + -1 << 16 >> 16; - STACKTOP = i5; - return i4 | 0; -} -function _markmt(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = HEAP32[i1 + 252 >> 2] | 0; - if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i3); - } - i3 = HEAP32[i1 + 256 >> 2] | 0; - if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i3); - } - i3 = HEAP32[i1 + 260 >> 2] | 0; - if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i3); - } - i3 = HEAP32[i1 + 264 >> 2] | 0; - if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i3); - } - i3 = HEAP32[i1 + 268 >> 2] | 0; - if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i3); - } - i3 = HEAP32[i1 + 272 >> 2] | 0; - if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i3); - } - i3 = HEAP32[i1 + 276 >> 2] | 0; - if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i3); - } - i3 = HEAP32[i1 + 280 >> 2] | 0; - if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) { - _reallymarkobject(i1, i3); - } - i3 = HEAP32[i1 + 284 >> 2] | 0; - if ((i3 | 0) == 0) { - STACKTOP = i2; - return; - } - if ((HEAP8[i3 + 5 | 0] & 3) == 0) { - STACKTOP = i2; - return; - } - _reallymarkobject(i1, i3); - STACKTOP = i2; - return; -} -function _findlabel(i9, i2) { - i9 = i9 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0; - i1 = STACKTOP; - i3 = i9 + 48 | 0; - i7 = HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] | 0; - i10 = HEAP32[i9 + 64 >> 2] | 0; - i4 = HEAP32[i10 + 12 >> 2] | 0; - i6 = i7 + 4 | 0; - i13 = HEAP16[i6 >> 1] | 0; - i5 = i10 + 28 | 0; - if ((i13 | 0) >= (HEAP32[i5 >> 2] | 0)) { - i15 = 0; - STACKTOP = i1; - return i15 | 0; - } - i10 = i10 + 24 | 0; - i11 = i4 + (i2 << 4) | 0; - while (1) { - i14 = HEAP32[i10 >> 2] | 0; - i12 = i14 + (i13 << 4) | 0; - i15 = i13 + 1 | 0; - if ((_luaS_eqstr(HEAP32[i12 >> 2] | 0, HEAP32[i11 >> 2] | 0) | 0) != 0) { - break; - } - if ((i15 | 0) < (HEAP32[i5 >> 2] | 0)) { - i13 = i15; - } else { - i2 = 0; - i8 = 10; - break; - } - } - if ((i8 | 0) == 10) { - STACKTOP = i1; - return i2 | 0; - } - i8 = HEAP8[i14 + (i13 << 4) + 12 | 0] | 0; - do { - if ((HEAPU8[i4 + (i2 << 4) + 12 | 0] | 0) > (i8 & 255)) { - if ((HEAP8[i7 + 9 | 0] | 0) == 0 ? (HEAP32[i5 >> 2] | 0) <= (HEAP16[i6 >> 1] | 0) : 0) { - break; - } - _luaK_patchclose(HEAP32[i3 >> 2] | 0, HEAP32[i4 + (i2 << 4) + 4 >> 2] | 0, i8 & 255); - } - } while (0); - _closegoto(i9, i2, i12); - i15 = 1; - STACKTOP = i1; - return i15 | 0; -} -function _lua_getmetatable(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i4 = i3 + (i5 + -1 << 4) + 16 | 0; - } else { - i4 = 5192; - } - } else { - i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i4 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i3 = HEAP32[i4 + 8 >> 2] & 15; - if ((i3 | 0) == 7) { - i3 = HEAP32[(HEAP32[i4 >> 2] | 0) + 8 >> 2] | 0; - } else if ((i3 | 0) == 5) { - i3 = HEAP32[(HEAP32[i4 >> 2] | 0) + 8 >> 2] | 0; - } else { - i3 = HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + (i3 << 2) + 252 >> 2] | 0; - } - if ((i3 | 0) == 0) { - i5 = 0; - STACKTOP = i2; - return i5 | 0; - } - i5 = i1 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - HEAP32[i4 >> 2] = i3; - HEAP32[i4 + 8 >> 2] = 69; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 16; - i5 = 1; - STACKTOP = i2; - return i5 | 0; -} -function _str_byte(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i6 = i1; - i4 = i1 + 4 | 0; - i3 = _luaL_checklstring(i2, 1, i4) | 0; - i5 = _luaL_optinteger(i2, 2, 1) | 0; - i7 = HEAP32[i4 >> 2] | 0; - if (!((i5 | 0) > -1)) { - if (i7 >>> 0 < (0 - i5 | 0) >>> 0) { - i5 = 0; - } else { - i5 = i5 + 1 + i7 | 0; - } - } - i8 = _luaL_optinteger(i2, 3, i5) | 0; - i7 = HEAP32[i4 >> 2] | 0; - if (!((i8 | 0) > -1)) { - if (i7 >>> 0 < (0 - i8 | 0) >>> 0) { - i8 = 0; - } else { - i8 = i8 + 1 + i7 | 0; - } - } - i9 = (i5 | 0) == 0 ? 1 : i5; - i10 = i8 >>> 0 > i7 >>> 0 ? i7 : i8; - if (i9 >>> 0 > i10 >>> 0) { - i10 = 0; - STACKTOP = i1; - return i10 | 0; - } - i4 = i10 - i9 + 1 | 0; - if ((i10 | 0) == -1) { - i10 = _luaL_error(i2, 7944, i6) | 0; - STACKTOP = i1; - return i10 | 0; - } - _luaL_checkstack(i2, i4, 7944); - if ((i4 | 0) <= 0) { - i10 = i4; - STACKTOP = i1; - return i10 | 0; - } - i6 = i9 + -1 | 0; - i8 = ~i8; - i7 = ~i7; - i5 = 0 - (i8 >>> 0 > i7 >>> 0 ? i8 : i7) - (i5 >>> 0 > 1 ? i5 : 1) | 0; - i7 = 0; - do { - _lua_pushinteger(i2, HEAPU8[i3 + (i6 + i7) | 0] | 0); - i7 = i7 + 1 | 0; - } while ((i7 | 0) != (i5 | 0)); - STACKTOP = i1; - return i4 | 0; -} -function _lua_setuservalue(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0; - i3 = STACKTOP; - i6 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i6 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i6 >> 2] | 0, (i5 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i5 = i4 + (i5 + -1 << 4) + 16 | 0; - } else { - i5 = 5192; - } - } else { - i4 = (HEAP32[i6 >> 2] | 0) + (i5 << 4) | 0; - i5 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - i4 = i1 + 8 | 0; - i6 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i6 + -8 >> 2] | 0) != 0) { - HEAP32[(HEAP32[i5 >> 2] | 0) + 12 >> 2] = HEAP32[i6 + -16 >> 2]; - i6 = HEAP32[(HEAP32[i4 >> 2] | 0) + -16 >> 2] | 0; - if (!((HEAP8[i6 + 5 | 0] & 3) == 0) ? (i2 = HEAP32[i5 >> 2] | 0, !((HEAP8[i2 + 5 | 0] & 4) == 0)) : 0) { - _luaC_barrier_(i1, i2, i6); - } - } else { - HEAP32[(HEAP32[i5 >> 2] | 0) + 12 >> 2] = 0; - } - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -16; - STACKTOP = i3; - return; -} -function _f_luaopen(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i5 = i6; - i4 = HEAP32[i1 + 12 >> 2] | 0; - i2 = _luaM_realloc_(i1, 0, 0, 640) | 0; - HEAP32[i1 + 28 >> 2] = i2; - i3 = i1 + 32 | 0; - HEAP32[i3 >> 2] = 40; - i7 = 0; - do { - HEAP32[i2 + (i7 << 4) + 8 >> 2] = 0; - i7 = i7 + 1 | 0; - } while ((i7 | 0) != 40); - HEAP32[i1 + 24 >> 2] = i2 + ((HEAP32[i3 >> 2] | 0) + -5 << 4); - i7 = i1 + 72 | 0; - HEAP32[i1 + 80 >> 2] = 0; - HEAP32[i1 + 84 >> 2] = 0; - HEAP8[i1 + 90 | 0] = 0; - HEAP32[i7 >> 2] = i2; - HEAP32[i1 + 8 >> 2] = i2 + 16; - HEAP32[i2 + 8 >> 2] = 0; - HEAP32[i1 + 76 >> 2] = i2 + 336; - HEAP32[i1 + 16 >> 2] = i7; - i7 = _luaH_new(i1) | 0; - HEAP32[i4 + 40 >> 2] = i7; - HEAP32[i4 + 48 >> 2] = 69; - _luaH_resize(i1, i7, 2, 0); - HEAP32[i5 >> 2] = i1; - i3 = i5 + 8 | 0; - HEAP32[i3 >> 2] = 72; - _luaH_setint(i1, i7, 1, i5); - HEAP32[i5 >> 2] = _luaH_new(i1) | 0; - HEAP32[i3 >> 2] = 69; - _luaH_setint(i1, i7, 2, i5); - _luaS_resize(i1, 32); - _luaT_init(i1); - _luaX_init(i1); - i7 = _luaS_newlstr(i1, 6896, 17) | 0; - HEAP32[i4 + 180 >> 2] = i7; - i7 = i7 + 5 | 0; - HEAP8[i7] = HEAPU8[i7] | 0 | 32; - HEAP8[i4 + 63 | 0] = 1; - STACKTOP = i6; - return; -} -function _lua_tointegerx(i6, i7, i1) { - i6 = i6 | 0; - i7 = i7 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i5 = HEAP32[i6 + 16 >> 2] | 0; - do { - if ((i7 | 0) <= 0) { - if (!((i7 | 0) < -1000999)) { - i4 = (HEAP32[i6 + 8 >> 2] | 0) + (i7 << 4) | 0; - break; - } - if ((i7 | 0) == -1001e3) { - i4 = (HEAP32[i6 + 12 >> 2] | 0) + 40 | 0; - break; - } - i6 = -1001e3 - i7 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i4 = i4 + (i6 + -1 << 4) + 16 | 0; - } else { - i4 = 5192; - } - } else { - i4 = (HEAP32[i5 >> 2] | 0) + (i7 << 4) | 0; - i4 = i4 >>> 0 < (HEAP32[i6 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - if ((HEAP32[i4 + 8 >> 2] | 0) != 3) { - i4 = _luaV_tonumber(i4, i3) | 0; - if ((i4 | 0) == 0) { - if ((i1 | 0) == 0) { - i7 = 0; - STACKTOP = i2; - return i7 | 0; - } - HEAP32[i1 >> 2] = 0; - i7 = 0; - STACKTOP = i2; - return i7 | 0; - } - } - i3 = ~~+HEAPF64[i4 >> 3]; - if ((i1 | 0) == 0) { - i7 = i3; - STACKTOP = i2; - return i7 | 0; - } - HEAP32[i1 >> 2] = 1; - i7 = i3; - STACKTOP = i2; - return i7 | 0; -} -function _close_state(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - i6 = i1 + 12 | 0; - i3 = HEAP32[i6 >> 2] | 0; - i4 = i1 + 28 | 0; - _luaF_close(i1, HEAP32[i4 >> 2] | 0); - _luaC_freeallobjects(i1); - i6 = HEAP32[i6 >> 2] | 0; - _luaM_realloc_(i1, HEAP32[i6 + 24 >> 2] | 0, HEAP32[i6 + 32 >> 2] << 2, 0) | 0; - i6 = i3 + 144 | 0; - i5 = i3 + 152 | 0; - HEAP32[i6 >> 2] = _luaM_realloc_(i1, HEAP32[i6 >> 2] | 0, HEAP32[i5 >> 2] | 0, 0) | 0; - HEAP32[i5 >> 2] = 0; - i5 = HEAP32[i4 >> 2] | 0; - if ((i5 | 0) == 0) { - i5 = HEAP32[i3 >> 2] | 0; - i6 = i3 + 4 | 0; - i6 = HEAP32[i6 >> 2] | 0; - FUNCTION_TABLE_iiiii[i5 & 3](i6, i1, 400, 0) | 0; - STACKTOP = i2; - return; - } - HEAP32[i1 + 16 >> 2] = i1 + 72; - i7 = i1 + 84 | 0; - i6 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = 0; - if ((i6 | 0) != 0) { - while (1) { - i5 = HEAP32[i6 + 12 >> 2] | 0; - _luaM_realloc_(i1, i6, 40, 0) | 0; - if ((i5 | 0) == 0) { - break; - } else { - i6 = i5; - } - } - i5 = HEAP32[i4 >> 2] | 0; - } - _luaM_realloc_(i1, i5, HEAP32[i1 + 32 >> 2] << 4, 0) | 0; - i6 = HEAP32[i3 >> 2] | 0; - i7 = i3 + 4 | 0; - i7 = HEAP32[i7 >> 2] | 0; - FUNCTION_TABLE_iiiii[i6 & 3](i7, i1, 400, 0) | 0; - STACKTOP = i2; - return; -} -function _ll_module(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i4 = i2; - i5 = i2 + 4 | 0; - i6 = _luaL_checklstring(i1, 1, 0) | 0; - i3 = _lua_gettop(i1) | 0; - _luaL_pushmodule(i1, i6, 1); - _lua_getfield(i1, -1, 4728); - i7 = (_lua_type(i1, -1) | 0) == 0; - _lua_settop(i1, -2); - if (i7) { - _lua_pushvalue(i1, -1); - _lua_setfield(i1, -2, 4784); - _lua_pushstring(i1, i6) | 0; - _lua_setfield(i1, -2, 4728); - i7 = _strrchr(i6, 46) | 0; - _lua_pushlstring(i1, i6, ((i7 | 0) == 0 ? i6 : i7 + 1 | 0) - i6 | 0) | 0; - _lua_setfield(i1, -2, 4792); - } - _lua_pushvalue(i1, -1); - if (!(((_lua_getstack(i1, 1, i5) | 0) != 0 ? (_lua_getinfo(i1, 4736, i5) | 0) != 0 : 0) ? (_lua_iscfunction(i1, -1) | 0) == 0 : 0)) { - _luaL_error(i1, 4744, i4) | 0; - } - _lua_pushvalue(i1, -2); - _lua_setupvalue(i1, -2, 1) | 0; - _lua_settop(i1, -2); - if ((i3 | 0) < 2) { - STACKTOP = i2; - return 1; - } else { - i4 = 2; - } - while (1) { - if ((_lua_type(i1, i4) | 0) == 6) { - _lua_pushvalue(i1, i4); - _lua_pushvalue(i1, -2); - _lua_callk(i1, 1, 0, 0, 0); - } - if ((i4 | 0) == (i3 | 0)) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - STACKTOP = i2; - return 1; -} -function _strcspn(i2, i5) { - i2 = i2 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i3 = i1; - i4 = HEAP8[i5] | 0; - if (!(i4 << 24 >> 24 == 0) ? (HEAP8[i5 + 1 | 0] | 0) != 0 : 0) { - HEAP32[i3 + 0 >> 2] = 0; - HEAP32[i3 + 4 >> 2] = 0; - HEAP32[i3 + 8 >> 2] = 0; - HEAP32[i3 + 12 >> 2] = 0; - HEAP32[i3 + 16 >> 2] = 0; - HEAP32[i3 + 20 >> 2] = 0; - HEAP32[i3 + 24 >> 2] = 0; - HEAP32[i3 + 28 >> 2] = 0; - do { - i7 = i4 & 255; - i6 = i3 + (i7 >>> 5 << 2) | 0; - HEAP32[i6 >> 2] = HEAP32[i6 >> 2] | 1 << (i7 & 31); - i5 = i5 + 1 | 0; - i4 = HEAP8[i5] | 0; - } while (!(i4 << 24 >> 24 == 0)); - i5 = HEAP8[i2] | 0; - L7 : do { - if (i5 << 24 >> 24 == 0) { - i4 = i2; - } else { - i4 = i2; - while (1) { - i7 = i5 & 255; - i6 = i4 + 1 | 0; - if ((HEAP32[i3 + (i7 >>> 5 << 2) >> 2] & 1 << (i7 & 31) | 0) != 0) { - break L7; - } - i5 = HEAP8[i6] | 0; - if (i5 << 24 >> 24 == 0) { - i4 = i6; - break; - } else { - i4 = i6; - } - } - } - } while (0); - i7 = i4 - i2 | 0; - STACKTOP = i1; - return i7 | 0; - } - i7 = (___strchrnul(i2, i4 << 24 >> 24) | 0) - i2 | 0; - STACKTOP = i1; - return i7 | 0; -} -function _main(i4, i5) { - i4 = i4 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - i3 = _luaL_newstate() | 0; - if ((i3 | 0) == 0) { - i4 = HEAP32[i5 >> 2] | 0; - i3 = HEAP32[_stderr >> 2] | 0; - if ((i4 | 0) != 0) { - HEAP32[i2 >> 2] = i4; - _fprintf(i3 | 0, 496, i2 | 0) | 0; - _fflush(i3 | 0) | 0; - } - HEAP32[i2 >> 2] = 8; - _fprintf(i3 | 0, 912, i2 | 0) | 0; - _fflush(i3 | 0) | 0; - i8 = 1; - STACKTOP = i1; - return i8 | 0; - } - _lua_pushcclosure(i3, 141, 0); - _lua_pushinteger(i3, i4); - _lua_pushlightuserdata(i3, i5); - i6 = _lua_pcallk(i3, 2, 1, 0, 0, 0) | 0; - i7 = _lua_toboolean(i3, -1) | 0; - i6 = (i6 | 0) == 0; - if (!i6) { - if ((_lua_type(i3, -1) | 0) == 4) { - i8 = _lua_tolstring(i3, -1, 0) | 0; - } else { - i8 = 0; - } - i4 = HEAP32[20] | 0; - i5 = HEAP32[_stderr >> 2] | 0; - if ((i4 | 0) != 0) { - HEAP32[i2 >> 2] = i4; - _fprintf(i5 | 0, 496, i2 | 0) | 0; - _fflush(i5 | 0) | 0; - } - HEAP32[i2 >> 2] = (i8 | 0) == 0 ? 48 : i8; - _fprintf(i5 | 0, 912, i2 | 0) | 0; - _fflush(i5 | 0) | 0; - _lua_settop(i3, -2); - } - _lua_close(i3); - i8 = i6 & (i7 | 0) != 0 & 1 ^ 1; - STACKTOP = i1; - return i8 | 0; -} -function _db_sethook(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i4 = STACKTOP; - if ((_lua_type(i1, 1) | 0) == 8) { - i2 = _lua_tothread(i1, 1) | 0; - i5 = 1; - } else { - i2 = i1; - i5 = 0; - } - i3 = i5 + 1 | 0; - if ((_lua_type(i1, i3) | 0) < 1) { - _lua_settop(i1, i3); - i6 = 0; - i7 = 0; - i5 = 0; - } else { - i6 = _luaL_checklstring(i1, i5 | 2, 0) | 0; - _luaL_checktype(i1, i3, 6); - i5 = _luaL_optinteger(i1, i5 + 3 | 0, 0) | 0; - i7 = (_strchr(i6, 99) | 0) != 0 | 0; - i8 = (_strchr(i6, 114) | 0) == 0; - i7 = i8 ? i7 : i7 | 2; - i8 = (_strchr(i6, 108) | 0) == 0; - i8 = i8 ? i7 : i7 | 4; - i6 = i5; - i7 = 9; - i5 = (i5 | 0) > 0 ? i8 | 8 : i8; - } - if ((_luaL_getsubtable(i1, -1001e3, 11584) | 0) != 0) { - _lua_pushthread(i2) | 0; - _lua_xmove(i2, i1, 1); - _lua_pushvalue(i1, i3); - _lua_rawset(i1, -3); - _lua_sethook(i2, i7, i5, i6) | 0; - STACKTOP = i4; - return 0; - } - _lua_pushstring(i1, 11592) | 0; - _lua_setfield(i1, -2, 11600); - _lua_pushvalue(i1, -1); - _lua_setmetatable(i1, -2) | 0; - _lua_pushthread(i2) | 0; - _lua_xmove(i2, i1, 1); - _lua_pushvalue(i1, i3); - _lua_rawset(i1, -3); - _lua_sethook(i2, i7, i5, i6) | 0; - STACKTOP = i4; - return 0; -} -function _tconcat(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i6 = i3; - i2 = i3 + 16 | 0; - i5 = i3 + 8 | 0; - i4 = _luaL_optlstring(i1, 2, 8208, i5) | 0; - _luaL_checktype(i1, 1, 5); - i8 = _luaL_optinteger(i1, 3, 1) | 0; - if ((_lua_type(i1, 4) | 0) < 1) { - i7 = _luaL_len(i1, 1) | 0; - } else { - i7 = _luaL_checkinteger(i1, 4) | 0; - } - _luaL_buffinit(i1, i2); - if ((i8 | 0) >= (i7 | 0)) { - if ((i8 | 0) != (i7 | 0)) { - _luaL_pushresult(i2); - STACKTOP = i3; - return 1; - } - } else { - do { - _lua_rawgeti(i1, 1, i8); - if ((_lua_isstring(i1, -1) | 0) == 0) { - HEAP32[i6 >> 2] = _lua_typename(i1, _lua_type(i1, -1) | 0) | 0; - HEAP32[i6 + 4 >> 2] = i8; - _luaL_error(i1, 8360, i6) | 0; - } - _luaL_addvalue(i2); - _luaL_addlstring(i2, i4, HEAP32[i5 >> 2] | 0); - i8 = i8 + 1 | 0; - } while ((i8 | 0) != (i7 | 0)); - } - _lua_rawgeti(i1, 1, i7); - if ((_lua_isstring(i1, -1) | 0) == 0) { - HEAP32[i6 >> 2] = _lua_typename(i1, _lua_type(i1, -1) | 0) | 0; - HEAP32[i6 + 4 >> 2] = i7; - _luaL_error(i1, 8360, i6) | 0; - } - _luaL_addvalue(i2); - _luaL_pushresult(i2); - STACKTOP = i3; - return 1; -} -function _searcher_Croot(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i4 = _luaL_checklstring(i1, 1, 0) | 0; - i5 = _strchr(i4, 46) | 0; - if ((i5 | 0) == 0) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - _lua_pushlstring(i1, i4, i5 - i4 | 0) | 0; - i5 = _lua_tolstring(i1, -1, 0) | 0; - _lua_getfield(i1, -1001001, 4440); - i6 = _lua_tolstring(i1, -1, 0) | 0; - if ((i6 | 0) == 0) { - HEAP32[i3 >> 2] = 4440; - _luaL_error(i1, 5032, i3) | 0; - } - i5 = _searchpath(i1, i5, i6, 4936, 4848) | 0; - if ((i5 | 0) == 0) { - i6 = 1; - STACKTOP = i2; - return i6 | 0; - } - i6 = _loadfunc(i1, i5, i4) | 0; - if ((i6 | 0) == 2) { - HEAP32[i3 >> 2] = i4; - HEAP32[i3 + 4 >> 2] = i5; - _lua_pushfstring(i1, 4856, i3) | 0; - i6 = 1; - STACKTOP = i2; - return i6 | 0; - } else if ((i6 | 0) == 0) { - _lua_pushstring(i1, i5) | 0; - i6 = 2; - STACKTOP = i2; - return i6 | 0; - } else { - i4 = _lua_tolstring(i1, 1, 0) | 0; - i6 = _lua_tolstring(i1, -1, 0) | 0; - HEAP32[i3 >> 2] = i4; - HEAP32[i3 + 4 >> 2] = i5; - HEAP32[i3 + 8 >> 2] = i6; - i6 = _luaL_error(i1, 4888, i3) | 0; - STACKTOP = i2; - return i6 | 0; - } - return 0; -} -function _lua_tonumberx(i5, i7, i1) { - i5 = i5 | 0; - i7 = i7 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, d8 = 0.0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i6 = HEAP32[i5 + 16 >> 2] | 0; - do { - if ((i7 | 0) <= 0) { - if (!((i7 | 0) < -1000999)) { - i4 = (HEAP32[i5 + 8 >> 2] | 0) + (i7 << 4) | 0; - break; - } - if ((i7 | 0) == -1001e3) { - i4 = (HEAP32[i5 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i7 | 0; - i6 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i6 >> 2] | 0, (i5 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i4 = i4 + (i5 + -1 << 4) + 16 | 0; - } else { - i4 = 5192; - } - } else { - i4 = (HEAP32[i6 >> 2] | 0) + (i7 << 4) | 0; - i4 = i4 >>> 0 < (HEAP32[i5 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - if ((HEAP32[i4 + 8 >> 2] | 0) != 3) { - i4 = _luaV_tonumber(i4, i3) | 0; - if ((i4 | 0) == 0) { - if ((i1 | 0) == 0) { - d8 = 0.0; - STACKTOP = i2; - return +d8; - } - HEAP32[i1 >> 2] = 0; - d8 = 0.0; - STACKTOP = i2; - return +d8; - } - } - if ((i1 | 0) != 0) { - HEAP32[i1 >> 2] = 1; - } - d8 = +HEAPF64[i4 >> 3]; - STACKTOP = i2; - return +d8; -} -function _luaopen_package(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_getsubtable(i1, -1001e3, 4184) | 0; - _lua_createtable(i1, 0, 1); - _lua_pushcclosure(i1, 158, 0); - _lua_setfield(i1, -2, 4192); - _lua_setmetatable(i1, -2) | 0; - _lua_createtable(i1, 0, 3); - _luaL_setfuncs(i1, 4200, 0); - _lua_createtable(i1, 4, 0); - _lua_pushvalue(i1, -2); - _lua_pushcclosure(i1, 159, 1); - _lua_rawseti(i1, -2, 1); - _lua_pushvalue(i1, -2); - _lua_pushcclosure(i1, 160, 1); - _lua_rawseti(i1, -2, 2); - _lua_pushvalue(i1, -2); - _lua_pushcclosure(i1, 161, 1); - _lua_rawseti(i1, -2, 3); - _lua_pushvalue(i1, -2); - _lua_pushcclosure(i1, 162, 1); - _lua_rawseti(i1, -2, 4); - _lua_pushvalue(i1, -1); - _lua_setfield(i1, -3, 4232); - _lua_setfield(i1, -2, 4240); - _setpath(i1, 4256, 4264, 4280, 4296); - _setpath(i1, 4440, 4448, 4464, 4480); - _lua_pushlstring(i1, 4552, 10) | 0; - _lua_setfield(i1, -2, 4568); - _luaL_getsubtable(i1, -1001e3, 4576) | 0; - _lua_setfield(i1, -2, 4584); - _luaL_getsubtable(i1, -1001e3, 4592) | 0; - _lua_setfield(i1, -2, 4608); - _lua_rawgeti(i1, -1001e3, 2); - _lua_pushvalue(i1, -2); - _luaL_setfuncs(i1, 4616, 1); - _lua_settop(i1, -2); - STACKTOP = i2; - return 1; -} -function _lua_rawlen(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0; - i1 = STACKTOP; - i4 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0; - break; - } - i3 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) { - i2 = i2 + (i3 + -1 << 4) + 16 | 0; - } else { - i2 = 5192; - } - } else { - i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192; - } - } while (0); - i3 = HEAP32[i2 + 8 >> 2] & 15; - if ((i3 | 0) == 5) { - i5 = _luaH_getn(HEAP32[i2 >> 2] | 0) | 0; - STACKTOP = i1; - return i5 | 0; - } else if ((i3 | 0) == 4) { - i5 = HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] | 0; - STACKTOP = i1; - return i5 | 0; - } else if ((i3 | 0) == 7) { - i5 = HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] | 0; - STACKTOP = i1; - return i5 | 0; - } else { - i5 = 0; - STACKTOP = i1; - return i5 | 0; - } - return 0; -} -function _searchpath(i3, i5, i6, i7, i8) { - i3 = i3 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - i7 = i7 | 0; - i8 = i8 | 0; - var i1 = 0, i2 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i4 = i2; - i1 = i2 + 8 | 0; - _luaL_buffinit(i3, i1); - if ((HEAP8[i7] | 0) != 0) { - i5 = _luaL_gsub(i3, i5, i7, i8) | 0; - } - while (1) { - i7 = HEAP8[i6] | 0; - if (i7 << 24 >> 24 == 59) { - i6 = i6 + 1 | 0; - continue; - } else if (i7 << 24 >> 24 == 0) { - i3 = 12; - break; - } - i8 = _strchr(i6, 59) | 0; - if ((i8 | 0) == 0) { - i8 = i6 + (_strlen(i6 | 0) | 0) | 0; - } - _lua_pushlstring(i3, i6, i8 - i6 | 0) | 0; - if ((i8 | 0) == 0) { - i3 = 12; - break; - } - i6 = _luaL_gsub(i3, _lua_tolstring(i3, -1, 0) | 0, 5064, i5) | 0; - _lua_remove(i3, -2); - i7 = _fopen(i6 | 0, 5088) | 0; - if ((i7 | 0) != 0) { - i3 = 10; - break; - } - HEAP32[i4 >> 2] = i6; - _lua_pushfstring(i3, 5072, i4) | 0; - _lua_remove(i3, -2); - _luaL_addvalue(i1); - i6 = i8; - } - if ((i3 | 0) == 10) { - _fclose(i7 | 0) | 0; - i8 = i6; - STACKTOP = i2; - return i8 | 0; - } else if ((i3 | 0) == 12) { - _luaL_pushresult(i1); - i8 = 0; - STACKTOP = i2; - return i8 | 0; - } - return 0; -} -function _io_readline(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i4 = _lua_touserdata(i1, -1001001) | 0; - i5 = _lua_tointegerx(i1, -1001002, 0) | 0; - if ((HEAP32[i4 + 4 >> 2] | 0) == 0) { - i6 = _luaL_error(i1, 3344, i3) | 0; - STACKTOP = i2; - return i6 | 0; - } - _lua_settop(i1, 1); - if ((i5 | 0) >= 1) { - i6 = 1; - while (1) { - _lua_pushvalue(i1, -1001003 - i6 | 0); - if ((i6 | 0) == (i5 | 0)) { - break; - } else { - i6 = i6 + 1 | 0; - } - } - } - i4 = _g_read(i1, HEAP32[i4 >> 2] | 0, 2) | 0; - if ((_lua_type(i1, 0 - i4 | 0) | 0) != 0) { - i6 = i4; - STACKTOP = i2; - return i6 | 0; - } - if ((i4 | 0) > 1) { - HEAP32[i3 >> 2] = _lua_tolstring(i1, 1 - i4 | 0, 0) | 0; - i6 = _luaL_error(i1, 3368, i3) | 0; - STACKTOP = i2; - return i6 | 0; - } - if ((_lua_toboolean(i1, -1001003) | 0) == 0) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - _lua_settop(i1, 0); - _lua_pushvalue(i1, -1001001); - i5 = (_luaL_checkudata(i1, 1, 2832) | 0) + 4 | 0; - i6 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = 0; - FUNCTION_TABLE_ii[i6 & 255](i1) | 0; - i6 = 0; - STACKTOP = i2; - return i6 | 0; -} -function _luaK_setreturns(i3, i5, i6) { - i3 = i3 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i4 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - i4 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) == 13) { - i7 = i5 + 8 | 0; - i8 = HEAP32[i3 >> 2] | 0; - i4 = HEAP32[i8 + 12 >> 2] | 0; - i5 = i4 + (HEAP32[i7 >> 2] << 2) | 0; - HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & 8388607 | (i6 << 23) + 8388608; - i7 = i4 + (HEAP32[i7 >> 2] << 2) | 0; - i4 = i3 + 48 | 0; - HEAP32[i7 >> 2] = (HEAPU8[i4] | 0) << 6 | HEAP32[i7 >> 2] & -16321; - i7 = HEAP8[i4] | 0; - i5 = (i7 & 255) + 1 | 0; - i6 = i8 + 78 | 0; - do { - if (i5 >>> 0 > (HEAPU8[i6] | 0) >>> 0) { - if (i5 >>> 0 > 249) { - _luaX_syntaxerror(HEAP32[i3 + 12 >> 2] | 0, 10536); - } else { - HEAP8[i6] = i5; - i1 = HEAP8[i4] | 0; - break; - } - } else { - i1 = i7; - } - } while (0); - HEAP8[i4] = (i1 & 255) + 1; - STACKTOP = i2; - return; - } else if ((i4 | 0) == 12) { - i8 = (HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i5 + 8 >> 2] << 2) | 0; - HEAP32[i8 >> 2] = HEAP32[i8 >> 2] & -8372225 | (i6 << 14) + 16384 & 8372224; - STACKTOP = i2; - return; - } else { - STACKTOP = i2; - return; - } -} -function _luaZ_read(i2, i9, i8) { - i2 = i2 | 0; - i9 = i9 | 0; - i8 = i8 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i10 = 0, i11 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i1; - if ((i8 | 0) == 0) { - i11 = 0; - STACKTOP = i1; - return i11 | 0; - } - i7 = i2 + 16 | 0; - i6 = i2 + 8 | 0; - i4 = i2 + 12 | 0; - i5 = i2 + 4 | 0; - i11 = HEAP32[i2 >> 2] | 0; - while (1) { - if ((i11 | 0) == 0) { - i10 = FUNCTION_TABLE_iiii[HEAP32[i6 >> 2] & 3](HEAP32[i7 >> 2] | 0, HEAP32[i4 >> 2] | 0, i3) | 0; - if ((i10 | 0) == 0) { - i2 = 9; - break; - } - i11 = HEAP32[i3 >> 2] | 0; - if ((i11 | 0) == 0) { - i2 = 9; - break; - } - HEAP32[i2 >> 2] = i11; - HEAP32[i5 >> 2] = i10; - } else { - i10 = HEAP32[i5 >> 2] | 0; - } - i11 = i8 >>> 0 > i11 >>> 0 ? i11 : i8; - _memcpy(i9 | 0, i10 | 0, i11 | 0) | 0; - i10 = (HEAP32[i2 >> 2] | 0) - i11 | 0; - HEAP32[i2 >> 2] = i10; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + i11; - if ((i8 | 0) == (i11 | 0)) { - i8 = 0; - i2 = 9; - break; - } else { - i8 = i8 - i11 | 0; - i9 = i9 + i11 | 0; - i11 = i10; - } - } - if ((i2 | 0) == 9) { - STACKTOP = i1; - return i8 | 0; - } - return 0; -} -function _lua_load(i1, i5, i4, i3, i6) { - i1 = i1 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i6 = i6 | 0; - var i2 = 0, i7 = 0, i8 = 0, i9 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i7 = i2; - _luaZ_init(i1, i7, i5, i4); - i3 = _luaD_protectedparser(i1, i7, (i3 | 0) == 0 ? 928 : i3, i6) | 0; - if ((i3 | 0) != 0) { - STACKTOP = i2; - return i3 | 0; - } - i4 = HEAP32[(HEAP32[i1 + 8 >> 2] | 0) + -16 >> 2] | 0; - if ((HEAP8[i4 + 6 | 0] | 0) != 1) { - STACKTOP = i2; - return i3 | 0; - } - i5 = _luaH_getint(HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 40 >> 2] | 0, 2) | 0; - i4 = i4 + 16 | 0; - i6 = HEAP32[(HEAP32[i4 >> 2] | 0) + 8 >> 2] | 0; - i9 = i5; - i8 = HEAP32[i9 + 4 >> 2] | 0; - i7 = i6; - HEAP32[i7 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i7 + 4 >> 2] = i8; - i7 = i5 + 8 | 0; - HEAP32[i6 + 8 >> 2] = HEAP32[i7 >> 2]; - if ((HEAP32[i7 >> 2] & 64 | 0) == 0) { - STACKTOP = i2; - return i3 | 0; - } - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP8[i5 + 5 | 0] & 3) == 0) { - STACKTOP = i2; - return i3 | 0; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP8[i4 + 5 | 0] & 4) == 0) { - STACKTOP = i2; - return i3 | 0; - } - _luaC_barrier_(i1, i4, i5); - STACKTOP = i2; - return i3 | 0; -} -function _g_write(i1, i4, i8) { - i1 = i1 | 0; - i4 = i4 | 0; - i8 = i8 | 0; - var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, d10 = 0.0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i5; - i3 = i5 + 8 | 0; - i7 = _lua_gettop(i1) | 0; - if ((i7 | 0) == (i8 | 0)) { - i9 = 1; - STACKTOP = i5; - return i9 | 0; - } - i6 = i8; - i7 = i7 - i8 | 0; - i9 = 1; - while (1) { - i7 = i7 + -1 | 0; - if ((_lua_type(i1, i6) | 0) == 3) { - if ((i9 | 0) == 0) { - i8 = 0; - } else { - d10 = +_lua_tonumberx(i1, i6, 0); - HEAPF64[tempDoublePtr >> 3] = d10; - HEAP32[i2 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i2 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i8 = (_fprintf(i4 | 0, 3072, i2 | 0) | 0) > 0; - } - } else { - i8 = _luaL_checklstring(i1, i6, i3) | 0; - if ((i9 | 0) == 0) { - i8 = 0; - } else { - i8 = _fwrite(i8 | 0, 1, HEAP32[i3 >> 2] | 0, i4 | 0) | 0; - i8 = (i8 | 0) == (HEAP32[i3 >> 2] | 0); - } - } - if ((i7 | 0) == 0) { - break; - } else { - i6 = i6 + 1 | 0; - i9 = i8 & 1; - } - } - if (i8) { - i9 = 1; - STACKTOP = i5; - return i9 | 0; - } - i9 = _luaL_fileresult(i1, 0, 0) | 0; - STACKTOP = i5; - return i9 | 0; -} -function _lua_getuservalue(i2, i5) { - i2 = i2 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0, i4 = 0; - i1 = STACKTOP; - i4 = HEAP32[i2 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i3 = (HEAP32[i2 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i3 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i5 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i3 = HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0; - i2 = i2 + 8 | 0; - i4 = HEAP32[i2 >> 2] | 0; - if ((i3 | 0) == 0) { - HEAP32[i4 + 8 >> 2] = 0; - i5 = i4; - i5 = i5 + 16 | 0; - HEAP32[i2 >> 2] = i5; - STACKTOP = i1; - return; - } else { - HEAP32[i4 >> 2] = i3; - HEAP32[i4 + 8 >> 2] = 69; - i5 = HEAP32[i2 >> 2] | 0; - i5 = i5 + 16 | 0; - HEAP32[i2 >> 2] = i5; - STACKTOP = i1; - return; - } -} -function _luaL_addlstring(i7, i6, i1) { - i7 = i7 | 0; - i6 = i6 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = HEAP32[i7 + 12 >> 2] | 0; - i3 = i7 + 4 | 0; - i9 = HEAP32[i3 >> 2] | 0; - i2 = i7 + 8 | 0; - i8 = HEAP32[i2 >> 2] | 0; - if (!((i9 - i8 | 0) >>> 0 < i1 >>> 0)) { - i7 = HEAP32[i7 >> 2] | 0; - i9 = i8; - i9 = i7 + i9 | 0; - _memcpy(i9 | 0, i6 | 0, i1 | 0) | 0; - i9 = HEAP32[i2 >> 2] | 0; - i9 = i9 + i1 | 0; - HEAP32[i2 >> 2] = i9; - STACKTOP = i5; - return; - } - i9 = i9 << 1; - i9 = (i9 - i8 | 0) >>> 0 < i1 >>> 0 ? i8 + i1 | 0 : i9; - if (i9 >>> 0 < i8 >>> 0 | (i9 - i8 | 0) >>> 0 < i1 >>> 0) { - _luaL_error(i4, 1272, i5) | 0; - } - i8 = _lua_newuserdata(i4, i9) | 0; - _memcpy(i8 | 0, HEAP32[i7 >> 2] | 0, HEAP32[i2 >> 2] | 0) | 0; - if ((HEAP32[i7 >> 2] | 0) != (i7 + 16 | 0)) { - _lua_remove(i4, -2); - } - HEAP32[i7 >> 2] = i8; - HEAP32[i3 >> 2] = i9; - i9 = HEAP32[i2 >> 2] | 0; - i9 = i8 + i9 | 0; - _memcpy(i9 | 0, i6 | 0, i1 | 0) | 0; - i9 = HEAP32[i2 >> 2] | 0; - i9 = i9 + i1 | 0; - HEAP32[i2 >> 2] = i9; - STACKTOP = i5; - return; -} -function _lua_rawgeti(i3, i6, i1) { - i3 = i3 | 0; - i6 = i6 | 0; - i1 = i1 | 0; - var i2 = 0, i4 = 0, i5 = 0, i7 = 0; - i2 = STACKTOP; - i5 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i6 | 0) <= 0) { - if (!((i6 | 0) < -1000999)) { - i4 = (HEAP32[i3 + 8 >> 2] | 0) + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i4 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0; - break; - } - i6 = -1001e3 - i6 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i4 = i4 + (i6 + -1 << 4) + 16 | 0; - } else { - i4 = 5192; - } - } else { - i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0; - i4 = i4 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - i4 = _luaH_getint(HEAP32[i4 >> 2] | 0, i1) | 0; - i6 = i3 + 8 | 0; - i5 = HEAP32[i6 >> 2] | 0; - i7 = i4; - i1 = HEAP32[i7 + 4 >> 2] | 0; - i3 = i5; - HEAP32[i3 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i3 + 4 >> 2] = i1; - HEAP32[i5 + 8 >> 2] = HEAP32[i4 + 8 >> 2]; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 16; - STACKTOP = i2; - return; -} -function _lua_setfield(i1, i6, i3) { - i1 = i1 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i5 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i6 | 0) <= 0) { - if (!((i6 | 0) < -1000999)) { - i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i6 = -1001e3 - i6 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i4 = i4 + (i6 + -1 << 4) + 16 | 0; - } else { - i4 = 5192; - } - } else { - i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0; - i4 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - i6 = i1 + 8 | 0; - i5 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i5 + 16; - i3 = _luaS_new(i1, i3) | 0; - HEAP32[i5 >> 2] = i3; - HEAP32[i5 + 8 >> 2] = HEAPU8[i3 + 4 | 0] | 0 | 64; - i5 = HEAP32[i6 >> 2] | 0; - _luaV_settable(i1, i4, i5 + -16 | 0, i5 + -32 | 0); - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + -32; - STACKTOP = i2; - return; -} -function _luaopen_io(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - _lua_createtable(i1, 0, 11); - _luaL_setfuncs(i1, 2680, 0); - _luaL_newmetatable(i1, 2832) | 0; - _lua_pushvalue(i1, -1); - _lua_setfield(i1, -2, 2872); - _luaL_setfuncs(i1, 2880, 0); - _lua_settop(i1, -2); - i5 = HEAP32[_stdin >> 2] | 0; - i4 = _lua_newuserdata(i1, 8) | 0; - i3 = i4 + 4 | 0; - HEAP32[i3 >> 2] = 0; - _luaL_setmetatable(i1, 2832); - HEAP32[i4 >> 2] = i5; - HEAP32[i3 >> 2] = 154; - _lua_pushvalue(i1, -1); - _lua_setfield(i1, -1001e3, 2776); - _lua_setfield(i1, -2, 2792); - i3 = HEAP32[_stdout >> 2] | 0; - i4 = _lua_newuserdata(i1, 8) | 0; - i5 = i4 + 4 | 0; - HEAP32[i5 >> 2] = 0; - _luaL_setmetatable(i1, 2832); - HEAP32[i4 >> 2] = i3; - HEAP32[i5 >> 2] = 154; - _lua_pushvalue(i1, -1); - _lua_setfield(i1, -1001e3, 2800); - _lua_setfield(i1, -2, 2816); - i5 = HEAP32[_stderr >> 2] | 0; - i4 = _lua_newuserdata(i1, 8) | 0; - i3 = i4 + 4 | 0; - HEAP32[i3 >> 2] = 0; - _luaL_setmetatable(i1, 2832); - HEAP32[i4 >> 2] = i5; - HEAP32[i3 >> 2] = 154; - _lua_setfield(i1, -2, 2824); - STACKTOP = i2; - return 1; -} -function _lua_pushcclosure(i1, i4, i5) { - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i2 = STACKTOP; - if ((i5 | 0) == 0) { - i6 = HEAP32[i1 + 8 >> 2] | 0; - HEAP32[i6 >> 2] = i4; - HEAP32[i6 + 8 >> 2] = 22; - i6 = i1 + 8 | 0; - i5 = HEAP32[i6 >> 2] | 0; - i5 = i5 + 16 | 0; - HEAP32[i6 >> 2] = i5; - STACKTOP = i2; - return; - } - if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i1); - } - i3 = _luaF_newCclosure(i1, i5) | 0; - HEAP32[i3 + 12 >> 2] = i4; - i4 = i1 + 8 | 0; - i6 = (HEAP32[i4 >> 2] | 0) + (0 - i5 << 4) | 0; - HEAP32[i4 >> 2] = i6; - do { - i5 = i5 + -1 | 0; - i9 = i6 + (i5 << 4) | 0; - i8 = HEAP32[i9 + 4 >> 2] | 0; - i7 = i3 + (i5 << 4) + 16 | 0; - HEAP32[i7 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i7 + 4 >> 2] = i8; - HEAP32[i3 + (i5 << 4) + 24 >> 2] = HEAP32[i6 + (i5 << 4) + 8 >> 2]; - i6 = HEAP32[i4 >> 2] | 0; - } while ((i5 | 0) != 0); - HEAP32[i6 >> 2] = i3; - HEAP32[i6 + 8 >> 2] = 102; - i9 = i1 + 8 | 0; - i8 = HEAP32[i9 >> 2] | 0; - i8 = i8 + 16 | 0; - HEAP32[i9 >> 2] = i8; - STACKTOP = i2; - return; -} -function _luaF_findupval(i3, i4) { - i3 = i3 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - i2 = HEAP32[i3 + 12 >> 2] | 0; - i6 = i3 + 56 | 0; - i5 = HEAP32[i6 >> 2] | 0; - L1 : do { - if ((i5 | 0) == 0) { - i5 = i6; - } else { - while (1) { - i7 = HEAP32[i5 + 8 >> 2] | 0; - if (i7 >>> 0 < i4 >>> 0) { - i5 = i6; - break L1; - } - if ((i7 | 0) == (i4 | 0)) { - break; - } - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) == 0) { - break L1; - } else { - i7 = i5; - i5 = i6; - i6 = i7; - } - } - i4 = i5 + 5 | 0; - i3 = (HEAPU8[i4] | 0) ^ 3; - if ((((HEAPU8[i2 + 60 | 0] | 0) ^ 3) & i3 | 0) != 0) { - i7 = i5; - STACKTOP = i1; - return i7 | 0; - } - HEAP8[i4] = i3; - i7 = i5; - STACKTOP = i1; - return i7 | 0; - } - } while (0); - i7 = _luaC_newobj(i3, 10, 32, i5, 0) | 0; - HEAP32[i7 + 8 >> 2] = i4; - i4 = i7 + 16 | 0; - HEAP32[i4 >> 2] = i2 + 112; - i6 = i2 + 132 | 0; - i5 = HEAP32[i6 >> 2] | 0; - HEAP32[i4 + 4 >> 2] = i5; - HEAP32[i5 + 16 >> 2] = i7; - HEAP32[i6 >> 2] = i7; - STACKTOP = i1; - return i7 | 0; -} -function _luaC_checkfinalizer(i5, i4, i6) { - i5 = i5 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i3 = 0, i7 = 0, i8 = 0; - i3 = STACKTOP; - i1 = HEAP32[i5 + 12 >> 2] | 0; - i2 = i4 + 5 | 0; - if ((HEAP8[i2] & 24) != 0 | (i6 | 0) == 0) { - STACKTOP = i3; - return; - } - if (!((HEAP8[i6 + 6 | 0] & 4) == 0)) { - STACKTOP = i3; - return; - } - if ((_luaT_gettm(i6, 2, HEAP32[i1 + 192 >> 2] | 0) | 0) == 0) { - STACKTOP = i3; - return; - } - i7 = i1 + 76 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 | 0) == (i4 | 0)) { - do { - i6 = _sweeplist(i5, i8, 1) | 0; - } while ((i6 | 0) == (i8 | 0)); - HEAP32[i7 >> 2] = i6; - } - i5 = i1 + 68 | 0; - while (1) { - i6 = HEAP32[i5 >> 2] | 0; - if ((i6 | 0) == (i4 | 0)) { - break; - } else { - i5 = i6; - } - } - HEAP32[i5 >> 2] = HEAP32[i4 >> 2]; - i8 = i1 + 72 | 0; - HEAP32[i4 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i8 >> 2] = i4; - i4 = HEAPU8[i2] | 0 | 16; - HEAP8[i2] = i4; - if ((HEAPU8[i1 + 61 | 0] | 0) < 2) { - HEAP8[i2] = i4 & 191; - STACKTOP = i3; - return; - } else { - HEAP8[i2] = HEAP8[i1 + 60 | 0] & 3 | i4 & 184; - STACKTOP = i3; - return; - } -} -function _io_lines(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - if ((_lua_type(i1, 1) | 0) == -1) { - _lua_pushnil(i1); - } - if ((_lua_type(i1, 1) | 0) == 0) { - _lua_getfield(i1, -1001e3, 2776); - _lua_replace(i1, 1); - if ((HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) + 4 >> 2] | 0) != 0) { - i4 = 0; - _aux_lines(i1, i4); - STACKTOP = i2; - return 1; - } - _luaL_error(i1, 3080, i3) | 0; - i4 = 0; - _aux_lines(i1, i4); - STACKTOP = i2; - return 1; - } else { - i4 = _luaL_checklstring(i1, 1, 0) | 0; - i6 = _lua_newuserdata(i1, 8) | 0; - i5 = i6 + 4 | 0; - HEAP32[i5 >> 2] = 0; - _luaL_setmetatable(i1, 2832); - HEAP32[i6 >> 2] = 0; - HEAP32[i5 >> 2] = 156; - i5 = _fopen(i4 | 0, 3480) | 0; - HEAP32[i6 >> 2] = i5; - if ((i5 | 0) == 0) { - i6 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0; - HEAP32[i3 >> 2] = i4; - HEAP32[i3 + 4 >> 2] = i6; - _luaL_error(i1, 3520, i3) | 0; - } - _lua_replace(i1, 1); - i6 = 1; - _aux_lines(i1, i6); - STACKTOP = i2; - return 1; - } - return 0; -} -function _luaC_changemode(i2, i6) { - i2 = i2 | 0; - i6 = i6 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0; - i1 = STACKTOP; - i3 = i2 + 12 | 0; - i5 = HEAP32[i3 >> 2] | 0; - i4 = i5 + 62 | 0; - if ((HEAPU8[i4] | 0) == (i6 | 0)) { - STACKTOP = i1; - return; - } - if ((i6 | 0) == 2) { - i3 = i5 + 61 | 0; - if ((HEAP8[i3] | 0) != 0) { - do { - _singlestep(i2) | 0; - } while ((HEAP8[i3] | 0) != 0); - } - HEAP32[i5 + 20 >> 2] = (HEAP32[i5 + 12 >> 2] | 0) + (HEAP32[i5 + 8 >> 2] | 0); - HEAP8[i4] = 2; - STACKTOP = i1; - return; - } - HEAP8[i4] = 0; - i4 = HEAP32[i3 >> 2] | 0; - HEAP8[i4 + 61 | 0] = 2; - HEAP32[i4 + 64 >> 2] = 0; - i5 = i4 + 72 | 0; - do { - i6 = _sweeplist(i2, i5, 1) | 0; - } while ((i6 | 0) == (i5 | 0)); - HEAP32[i4 + 80 >> 2] = i6; - i5 = i4 + 68 | 0; - do { - i6 = _sweeplist(i2, i5, 1) | 0; - } while ((i6 | 0) == (i5 | 0)); - HEAP32[i4 + 76 >> 2] = i6; - i3 = (HEAP32[i3 >> 2] | 0) + 61 | 0; - if ((1 << HEAPU8[i3] & -29 | 0) != 0) { - STACKTOP = i1; - return; - } - do { - _singlestep(i2) | 0; - } while ((1 << HEAPU8[i3] & -29 | 0) == 0); - STACKTOP = i1; - return; -} -function _lua_rawget(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0; - i2 = STACKTOP; - i4 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i5 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i5 = i1 + 8 | 0; - i4 = _luaH_get(HEAP32[i3 >> 2] | 0, (HEAP32[i5 >> 2] | 0) + -16 | 0) | 0; - i5 = HEAP32[i5 >> 2] | 0; - i6 = i4; - i1 = HEAP32[i6 + 4 >> 2] | 0; - i3 = i5 + -16 | 0; - HEAP32[i3 >> 2] = HEAP32[i6 >> 2]; - HEAP32[i3 + 4 >> 2] = i1; - HEAP32[i5 + -8 >> 2] = HEAP32[i4 + 8 >> 2]; - STACKTOP = i2; - return; -} -function _lua_isstring(i2, i4) { - i2 = i2 | 0; - i4 = i4 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - i3 = HEAP32[i2 + 16 >> 2] | 0; - do { - if ((i4 | 0) <= 0) { - if (!((i4 | 0) < -1000999)) { - i2 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0; - break; - } - if ((i4 | 0) == -1001e3) { - i2 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i2 = -1001e3 - i4 | 0; - i3 = HEAP32[i3 >> 2] | 0; - if ((HEAP32[i3 + 8 >> 2] | 0) == 22) { - i4 = 0; - i4 = i4 & 1; - STACKTOP = i1; - return i4 | 0; - } - i3 = HEAP32[i3 >> 2] | 0; - if ((i2 | 0) > (HEAPU8[i3 + 6 | 0] | 0 | 0)) { - i4 = 0; - i4 = i4 & 1; - STACKTOP = i1; - return i4 | 0; - } else { - i2 = i3 + (i2 + -1 << 4) + 16 | 0; - break; - } - } else { - i3 = (HEAP32[i3 >> 2] | 0) + (i4 << 4) | 0; - i2 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - if ((i2 | 0) == 5192) { - i4 = 0; - i4 = i4 & 1; - STACKTOP = i1; - return i4 | 0; - } - i4 = ((HEAP32[i2 + 8 >> 2] & 15) + -3 | 0) >>> 0 < 2; - i4 = i4 & 1; - STACKTOP = i1; - return i4 | 0; -} -function _setnodevector(i5, i1, i3) { - i5 = i5 | 0; - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - if ((i3 | 0) == 0) { - HEAP32[i1 + 16 >> 2] = 8016; - i6 = 0; - i7 = 8016; - i4 = 0; - i5 = i1 + 7 | 0; - HEAP8[i5] = i4; - i6 = i7 + (i6 << 5) | 0; - i7 = i1 + 20 | 0; - HEAP32[i7 >> 2] = i6; - STACKTOP = i2; - return; - } - i4 = _luaO_ceillog2(i3) | 0; - if ((i4 | 0) > 30) { - _luaG_runerror(i5, 8048, i2); - } - i3 = 1 << i4; - if ((i3 + 1 | 0) >>> 0 > 134217727) { - _luaM_toobig(i5); - } - i6 = _luaM_realloc_(i5, 0, 0, i3 << 5) | 0; - i5 = i1 + 16 | 0; - HEAP32[i5 >> 2] = i6; - if ((i3 | 0) > 0) { - i7 = 0; - do { - HEAP32[i6 + (i7 << 5) + 28 >> 2] = 0; - HEAP32[i6 + (i7 << 5) + 24 >> 2] = 0; - HEAP32[i6 + (i7 << 5) + 8 >> 2] = 0; - i7 = i7 + 1 | 0; - i6 = HEAP32[i5 >> 2] | 0; - } while ((i7 | 0) != (i3 | 0)); - } - i7 = i3; - i4 = i4 & 255; - i5 = i1 + 7 | 0; - HEAP8[i5] = i4; - i6 = i6 + (i7 << 5) | 0; - i7 = i1 + 20 | 0; - HEAP32[i7 >> 2] = i6; - STACKTOP = i2; - return; -} -function _lua_pushvalue(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - i4 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i5 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i5 = i1 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i7 = i3; - i6 = HEAP32[i7 + 4 >> 2] | 0; - i1 = i4; - HEAP32[i1 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i1 + 4 >> 2] = i6; - HEAP32[i4 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 16; - STACKTOP = i2; - return; -} -function _luaL_setfuncs(i3, i6, i1) { - i3 = i3 | 0; - i6 = i6 | 0; - i1 = i1 | 0; - var i2 = 0, i4 = 0, i5 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - _luaL_checkversion_(i3, 502.0); - if ((_lua_checkstack(i3, i1 + 20 | 0) | 0) == 0) { - HEAP32[i4 >> 2] = 1472; - _luaL_error(i3, 1216, i4) | 0; - } - if ((HEAP32[i6 >> 2] | 0) == 0) { - i7 = ~i1; - _lua_settop(i3, i7); - STACKTOP = i2; - return; - } - i4 = -2 - i1 | 0; - i5 = 0 - i1 | 0; - if ((i1 | 0) <= 0) { - do { - _lua_pushcclosure(i3, HEAP32[i6 + 4 >> 2] | 0, i1); - _lua_setfield(i3, i4, HEAP32[i6 >> 2] | 0); - i6 = i6 + 8 | 0; - } while ((HEAP32[i6 >> 2] | 0) != 0); - i7 = ~i1; - _lua_settop(i3, i7); - STACKTOP = i2; - return; - } - do { - i7 = 0; - do { - _lua_pushvalue(i3, i5); - i7 = i7 + 1 | 0; - } while ((i7 | 0) != (i1 | 0)); - _lua_pushcclosure(i3, HEAP32[i6 + 4 >> 2] | 0, i1); - _lua_setfield(i3, i4, HEAP32[i6 >> 2] | 0); - i6 = i6 + 8 | 0; - } while ((HEAP32[i6 >> 2] | 0) != 0); - i7 = ~i1; - _lua_settop(i3, i7); - STACKTOP = i2; - return; -} -function _lua_touserdata(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0; - i1 = STACKTOP; - i4 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0; - break; - } - i3 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) { - i2 = i2 + (i3 + -1 << 4) + 16 | 0; - } else { - i2 = 5192; - } - } else { - i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192; - } - } while (0); - i3 = HEAP32[i2 + 8 >> 2] & 15; - if ((i3 | 0) == 2) { - i5 = HEAP32[i2 >> 2] | 0; - STACKTOP = i1; - return i5 | 0; - } else if ((i3 | 0) == 7) { - i5 = (HEAP32[i2 >> 2] | 0) + 24 | 0; - STACKTOP = i1; - return i5 | 0; - } else { - i5 = 0; - STACKTOP = i1; - return i5 | 0; - } - return 0; -} -function _luaL_checkoption(i2, i3, i6, i4) { - i2 = i2 | 0; - i3 = i3 | 0; - i6 = i6 | 0; - i4 = i4 | 0; - var i1 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i5 = i1; - if ((i6 | 0) == 0) { - i6 = _lua_tolstring(i2, i3, 0) | 0; - if ((i6 | 0) == 0) { - i9 = _lua_typename(i2, 4) | 0; - i6 = _lua_typename(i2, _lua_type(i2, i3) | 0) | 0; - HEAP32[i5 >> 2] = i9; - HEAP32[i5 + 4 >> 2] = i6; - _luaL_argerror(i2, i3, _lua_pushfstring(i2, 1744, i5) | 0) | 0; - i6 = 0; - } - } else { - i6 = _luaL_optlstring(i2, i3, i6, 0) | 0; - } - i9 = HEAP32[i4 >> 2] | 0; - L6 : do { - if ((i9 | 0) != 0) { - i8 = 0; - while (1) { - i7 = i8 + 1 | 0; - if ((_strcmp(i9, i6) | 0) == 0) { - break; - } - i9 = HEAP32[i4 + (i7 << 2) >> 2] | 0; - if ((i9 | 0) == 0) { - break L6; - } else { - i8 = i7; - } - } - STACKTOP = i1; - return i8 | 0; - } - } while (0); - HEAP32[i5 >> 2] = i6; - i9 = _luaL_argerror(i2, i3, _lua_pushfstring(i2, 1192, i5) | 0) | 0; - STACKTOP = i1; - return i9 | 0; -} -function _lua_toboolean(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0; - i1 = STACKTOP; - i4 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i3 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i3 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0; - break; - } - i3 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) { - i3 = i2 + (i3 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i3 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192; - } - } while (0); - i2 = HEAP32[i3 + 8 >> 2] | 0; - if ((i2 | 0) == 0) { - i5 = 0; - i5 = i5 & 1; - STACKTOP = i1; - return i5 | 0; - } - if ((i2 | 0) != 1) { - i5 = 1; - i5 = i5 & 1; - STACKTOP = i1; - return i5 | 0; - } - i5 = (HEAP32[i3 >> 2] | 0) != 0; - i5 = i5 & 1; - STACKTOP = i1; - return i5 | 0; -} -function _lua_getfield(i1, i6, i3) { - i1 = i1 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i5 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i6 | 0) <= 0) { - if (!((i6 | 0) < -1000999)) { - i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i6 = -1001e3 - i6 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) { - i4 = i4 + (i6 + -1 << 4) + 16 | 0; - } else { - i4 = 5192; - } - } else { - i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0; - i4 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192; - } - } while (0); - i5 = i1 + 8 | 0; - i6 = HEAP32[i5 >> 2] | 0; - i3 = _luaS_new(i1, i3) | 0; - HEAP32[i6 >> 2] = i3; - HEAP32[i6 + 8 >> 2] = HEAPU8[i3 + 4 | 0] | 0 | 64; - i6 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i6 + 16; - _luaV_gettable(i1, i4, i6, i6); - STACKTOP = i2; - return; -} -function _luaL_argerror(i1, i6, i3) { - i1 = i1 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i2 = i4; - i5 = i4 + 12 | 0; - if ((_lua_getstack(i1, 0, i5) | 0) == 0) { - HEAP32[i2 >> 2] = i6; - HEAP32[i2 + 4 >> 2] = i3; - i8 = _luaL_error(i1, 1040, i2) | 0; - STACKTOP = i4; - return i8 | 0; - } - _lua_getinfo(i1, 1064, i5) | 0; - if ((_strcmp(HEAP32[i5 + 8 >> 2] | 0, 1072) | 0) == 0) { - i6 = i6 + -1 | 0; - if ((i6 | 0) == 0) { - HEAP32[i2 >> 2] = HEAP32[i5 + 4 >> 2]; - HEAP32[i2 + 4 >> 2] = i3; - i8 = _luaL_error(i1, 1080, i2) | 0; - STACKTOP = i4; - return i8 | 0; - } - } - i7 = i5 + 4 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 | 0) == 0) { - if ((_pushglobalfuncname(i1, i5) | 0) == 0) { - i8 = 1112; - } else { - i8 = _lua_tolstring(i1, -1, 0) | 0; - } - HEAP32[i7 >> 2] = i8; - } - HEAP32[i2 >> 2] = i6; - HEAP32[i2 + 4 >> 2] = i8; - HEAP32[i2 + 8 >> 2] = i3; - i8 = _luaL_error(i1, 1120, i2) | 0; - STACKTOP = i4; - return i8 | 0; -} -function _match_class(i3, i2) { - i3 = i3 | 0; - i2 = i2 | 0; - var i1 = 0; - i1 = STACKTOP; - switch (_tolower(i2 | 0) | 0) { - case 117: - { - i3 = _isupper(i3 | 0) | 0; - break; - } - case 97: - { - i3 = _isalpha(i3 | 0) | 0; - break; - } - case 99: - { - i3 = _iscntrl(i3 | 0) | 0; - break; - } - case 120: - { - i3 = _isxdigit(i3 | 0) | 0; - break; - } - case 119: - { - i3 = _isalnum(i3 | 0) | 0; - break; - } - case 112: - { - i3 = _ispunct(i3 | 0) | 0; - break; - } - case 100: - { - i3 = (i3 + -48 | 0) >>> 0 < 10 | 0; - break; - } - case 108: - { - i3 = _islower(i3 | 0) | 0; - break; - } - case 122: - { - i3 = (i3 | 0) == 0 | 0; - break; - } - case 103: - { - i3 = _isgraph(i3 | 0) | 0; - break; - } - case 115: - { - i3 = _isspace(i3 | 0) | 0; - break; - } - default: - { - i3 = (i2 | 0) == (i3 | 0) | 0; - STACKTOP = i1; - return i3 | 0; - } - } - if ((_islower(i2 | 0) | 0) != 0) { - STACKTOP = i1; - return i3 | 0; - } - i3 = (i3 | 0) == 0 | 0; - STACKTOP = i1; - return i3 | 0; -} -function _condjump(i1, i3, i6, i4, i5) { - i1 = i1 | 0; - i3 = i3 | 0; - i6 = i6 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i2 = 0, i7 = 0, i8 = 0, i9 = 0; - i2 = STACKTOP; - _luaK_code(i1, i6 << 6 | i3 | i4 << 23 | i5 << 14) | 0; - i3 = i1 + 28 | 0; - i6 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = -1; - i3 = _luaK_code(i1, 2147450903) | 0; - if ((i6 | 0) == -1) { - i9 = i3; - STACKTOP = i2; - return i9 | 0; - } - if ((i3 | 0) == -1) { - i9 = i6; - STACKTOP = i2; - return i9 | 0; - } - i8 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0; - i7 = i3; - while (1) { - i4 = i8 + (i7 << 2) | 0; - i5 = HEAP32[i4 >> 2] | 0; - i9 = (i5 >>> 14) + -131071 | 0; - if ((i9 | 0) == -1) { - break; - } - i9 = i7 + 1 + i9 | 0; - if ((i9 | 0) == -1) { - break; - } else { - i7 = i9; - } - } - i6 = i6 + ~i7 | 0; - if ((((i6 | 0) > -1 ? i6 : 0 - i6 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624); - } - HEAP32[i4 >> 2] = (i6 << 14) + 2147467264 | i5 & 16383; - i9 = i3; - STACKTOP = i2; - return i9 | 0; -} -function _skipcomment(i6, i1) { - i6 = i6 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - HEAP32[i6 >> 2] = 0; - i3 = i6 + 4 | 0; - i5 = 1712; - while (1) { - i7 = _fgetc(HEAP32[i3 >> 2] | 0) | 0; - if ((i7 | 0) == -1) { - i4 = 3; - break; - } - i8 = i5 + 1 | 0; - if ((i7 | 0) != (HEAPU8[i5] | 0)) { - break; - } - i5 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i5 + 1; - HEAP8[i6 + i5 + 8 | 0] = i7; - if ((HEAP8[i8] | 0) == 0) { - i4 = 6; - break; - } else { - i5 = i8; - } - } - if ((i4 | 0) == 3) { - HEAP32[i1 >> 2] = -1; - i8 = 0; - STACKTOP = i2; - return i8 | 0; - } else if ((i4 | 0) == 6) { - HEAP32[i6 >> 2] = 0; - i7 = _fgetc(HEAP32[i3 >> 2] | 0) | 0; - } - HEAP32[i1 >> 2] = i7; - if ((i7 | 0) != 35) { - i8 = 0; - STACKTOP = i2; - return i8 | 0; - } - do { - i8 = _fgetc(HEAP32[i3 >> 2] | 0) | 0; - } while (!((i8 | 0) == 10 | (i8 | 0) == -1)); - HEAP32[i1 >> 2] = _fgetc(HEAP32[i3 >> 2] | 0) | 0; - i8 = 1; - STACKTOP = i2; - return i8 | 0; -} -function _lua_isnumber(i4, i6) { - i4 = i4 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - i5 = HEAP32[i4 + 16 >> 2] | 0; - do { - if ((i6 | 0) <= 0) { - if (!((i6 | 0) < -1000999)) { - i3 = (HEAP32[i4 + 8 >> 2] | 0) + (i6 << 4) | 0; - break; - } - if ((i6 | 0) == -1001e3) { - i3 = (HEAP32[i4 + 12 >> 2] | 0) + 40 | 0; - break; - } - i4 = -1001e3 - i6 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i4 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i4 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - if ((HEAP32[i3 + 8 >> 2] | 0) == 3) { - i6 = 1; - i6 = i6 & 1; - STACKTOP = i1; - return i6 | 0; - } - i6 = (_luaV_tonumber(i3, i2) | 0) != 0; - i6 = i6 & 1; - STACKTOP = i1; - return i6 | 0; -} -function ___shgetc(i3) { - i3 = i3 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - i7 = i3 + 104 | 0; - i6 = HEAP32[i7 >> 2] | 0; - if (!((i6 | 0) != 0 ? (HEAP32[i3 + 108 >> 2] | 0) >= (i6 | 0) : 0)) { - i8 = 3; - } - if ((i8 | 0) == 3 ? (i1 = ___uflow(i3) | 0, (i1 | 0) >= 0) : 0) { - i7 = HEAP32[i7 >> 2] | 0; - i6 = HEAP32[i3 + 8 >> 2] | 0; - if ((i7 | 0) != 0 ? (i4 = HEAP32[i3 + 4 >> 2] | 0, i5 = i7 - (HEAP32[i3 + 108 >> 2] | 0) + -1 | 0, (i6 - i4 | 0) > (i5 | 0)) : 0) { - HEAP32[i3 + 100 >> 2] = i4 + i5; - } else { - HEAP32[i3 + 100 >> 2] = i6; - } - i4 = HEAP32[i3 + 4 >> 2] | 0; - if ((i6 | 0) != 0) { - i8 = i3 + 108 | 0; - HEAP32[i8 >> 2] = i6 + 1 - i4 + (HEAP32[i8 >> 2] | 0); - } - i3 = i4 + -1 | 0; - if ((HEAPU8[i3] | 0 | 0) == (i1 | 0)) { - i8 = i1; - STACKTOP = i2; - return i8 | 0; - } - HEAP8[i3] = i1; - i8 = i1; - STACKTOP = i2; - return i8 | 0; - } - HEAP32[i3 + 100 >> 2] = 0; - i8 = -1; - STACKTOP = i2; - return i8 | 0; -} -function _lua_type(i2, i4) { - i2 = i2 | 0; - i4 = i4 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - i3 = HEAP32[i2 + 16 >> 2] | 0; - do { - if ((i4 | 0) <= 0) { - if (!((i4 | 0) < -1000999)) { - i2 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0; - break; - } - if ((i4 | 0) == -1001e3) { - i2 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i2 = -1001e3 - i4 | 0; - i3 = HEAP32[i3 >> 2] | 0; - if ((HEAP32[i3 + 8 >> 2] | 0) == 22) { - i4 = -1; - STACKTOP = i1; - return i4 | 0; - } - i3 = HEAP32[i3 >> 2] | 0; - if ((i2 | 0) > (HEAPU8[i3 + 6 | 0] | 0 | 0)) { - i4 = -1; - STACKTOP = i1; - return i4 | 0; - } else { - i2 = i3 + (i2 + -1 << 4) + 16 | 0; - break; - } - } else { - i3 = (HEAP32[i3 >> 2] | 0) + (i4 << 4) | 0; - i2 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - if ((i2 | 0) == 5192) { - i4 = -1; - STACKTOP = i1; - return i4 | 0; - } - i4 = HEAP32[i2 + 8 >> 2] & 15; - STACKTOP = i1; - return i4 | 0; -} -function _g_iofile(i4, i1, i5) { - i4 = i4 | 0; - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - if ((_lua_type(i4, 1) | 0) < 1) { - _lua_getfield(i4, -1001e3, i1); - STACKTOP = i2; - return; - } - i6 = _lua_tolstring(i4, 1, 0) | 0; - if ((i6 | 0) != 0) { - i7 = _lua_newuserdata(i4, 8) | 0; - i8 = i7 + 4 | 0; - HEAP32[i8 >> 2] = 0; - _luaL_setmetatable(i4, 2832); - HEAP32[i7 >> 2] = 0; - HEAP32[i8 >> 2] = 156; - i5 = _fopen(i6 | 0, i5 | 0) | 0; - HEAP32[i7 >> 2] = i5; - if ((i5 | 0) == 0) { - i8 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0; - HEAP32[i3 >> 2] = i6; - HEAP32[i3 + 4 >> 2] = i8; - _luaL_error(i4, 3520, i3) | 0; - } - } else { - if ((HEAP32[(_luaL_checkudata(i4, 1, 2832) | 0) + 4 >> 2] | 0) == 0) { - _luaL_error(i4, 3080, i3) | 0; - } - _lua_pushvalue(i4, 1); - } - _lua_setfield(i4, -1001e3, i1); - _lua_getfield(i4, -1001e3, i1); - STACKTOP = i2; - return; -} -function _lua_getlocal(i4, i5, i2) { - i4 = i4 | 0; - i5 = i5 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i1; - if ((i5 | 0) == 0) { - i3 = HEAP32[i4 + 8 >> 2] | 0; - if ((HEAP32[i3 + -8 >> 2] | 0) != 70) { - i5 = 0; - STACKTOP = i1; - return i5 | 0; - } - i5 = _luaF_getlocalname(HEAP32[(HEAP32[i3 + -16 >> 2] | 0) + 12 >> 2] | 0, i2, 0) | 0; - STACKTOP = i1; - return i5 | 0; - } else { - HEAP32[i3 >> 2] = 0; - i2 = _findlocal(i4, HEAP32[i5 + 96 >> 2] | 0, i2, i3) | 0; - if ((i2 | 0) == 0) { - i5 = 0; - STACKTOP = i1; - return i5 | 0; - } - i3 = HEAP32[i3 >> 2] | 0; - i5 = i4 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i8 = i3; - i7 = HEAP32[i8 + 4 >> 2] | 0; - i6 = i4; - HEAP32[i6 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i6 + 4 >> 2] = i7; - HEAP32[i4 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 16; - i5 = i2; - STACKTOP = i1; - return i5 | 0; - } - return 0; -} -function _lua_checkstack(i7, i4) { - i7 = i7 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i1; - HEAP32[i3 >> 2] = i4; - i2 = HEAP32[i7 + 16 >> 2] | 0; - i5 = i7 + 8 | 0; - i6 = HEAP32[i5 >> 2] | 0; - i8 = i6; - do { - if (((HEAP32[i7 + 24 >> 2] | 0) - i8 >> 4 | 0) <= (i4 | 0)) { - if (((i8 - (HEAP32[i7 + 28 >> 2] | 0) >> 4) + 5 | 0) > (1e6 - i4 | 0)) { - i8 = 0; - STACKTOP = i1; - return i8 | 0; - } - i6 = (_luaD_rawrunprotected(i7, 2, i3) | 0) == 0; - if (i6) { - i5 = HEAP32[i5 >> 2] | 0; - i4 = HEAP32[i3 >> 2] | 0; - i3 = i6 & 1; - break; - } else { - i8 = 0; - STACKTOP = i1; - return i8 | 0; - } - } else { - i5 = i6; - i3 = 1; - } - } while (0); - i2 = i2 + 4 | 0; - i4 = i5 + (i4 << 4) | 0; - if (!((HEAP32[i2 >> 2] | 0) >>> 0 < i4 >>> 0)) { - i8 = i3; - STACKTOP = i1; - return i8 | 0; - } - HEAP32[i2 >> 2] = i4; - i8 = i3; - STACKTOP = i1; - return i8 | 0; -} -function _luaK_exp2nextreg(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - _luaK_dischargevars(i1, i3); - if (((HEAP32[i3 >> 2] | 0) == 6 ? (i4 = HEAP32[i3 + 8 >> 2] | 0, (i4 & 256 | 0) == 0) : 0) ? (HEAPU8[i1 + 46 | 0] | 0 | 0) <= (i4 | 0) : 0) { - i7 = i1 + 48 | 0; - HEAP8[i7] = (HEAP8[i7] | 0) + -1 << 24 >> 24; - } - i4 = i1 + 48 | 0; - i5 = HEAP8[i4] | 0; - i6 = (i5 & 255) + 1 | 0; - i7 = (HEAP32[i1 >> 2] | 0) + 78 | 0; - if (!(i6 >>> 0 > (HEAPU8[i7] | 0) >>> 0)) { - i7 = i5; - i7 = i7 & 255; - i7 = i7 + 1 | 0; - i6 = i7 & 255; - HEAP8[i4] = i6; - i7 = i7 & 255; - i7 = i7 + -1 | 0; - _exp2reg(i1, i3, i7); - STACKTOP = i2; - return; - } - if (i6 >>> 0 > 249) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10536); - } - HEAP8[i7] = i6; - i7 = HEAP8[i4] | 0; - i7 = i7 & 255; - i7 = i7 + 1 | 0; - i6 = i7 & 255; - HEAP8[i4] = i6; - i7 = i7 & 255; - i7 = i7 + -1 | 0; - _exp2reg(i1, i3, i7); - STACKTOP = i2; - return; -} -function _lua_next(i2, i4) { - i2 = i2 | 0; - i4 = i4 | 0; - var i1 = 0, i3 = 0, i5 = 0; - i1 = STACKTOP; - i5 = HEAP32[i2 + 16 >> 2] | 0; - do { - if ((i4 | 0) <= 0) { - if (!((i4 | 0) < -1000999)) { - i4 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0; - break; - } - if ((i4 | 0) == -1001e3) { - i4 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0; - break; - } - i4 = -1001e3 - i4 | 0; - i5 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i4 = i3 + (i4 + -1 << 4) + 16 | 0; - } else { - i4 = 5192; - } - } else { - i3 = (HEAP32[i5 >> 2] | 0) + (i4 << 4) | 0; - i4 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i3 = i2 + 8 | 0; - i2 = _luaH_next(i2, HEAP32[i4 >> 2] | 0, (HEAP32[i3 >> 2] | 0) + -16 | 0) | 0; - i4 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = (i2 | 0) == 0 ? i4 + -16 | 0 : i4 + 16 | 0; - STACKTOP = i1; - return i2 | 0; -} -function _inclinenumber(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - i4 = HEAP32[i1 >> 2] | 0; - i3 = i1 + 56 | 0; - i5 = HEAP32[i3 >> 2] | 0; - i6 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i6 + -1; - if ((i6 | 0) == 0) { - i5 = _luaZ_fill(i5) | 0; - } else { - i6 = i5 + 4 | 0; - i5 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i5 + 1; - i5 = HEAPU8[i5] | 0; - } - HEAP32[i1 >> 2] = i5; - if ((i5 | 0) == 13 | (i5 | 0) == 10 ? (i5 | 0) != (i4 | 0) : 0) { - i3 = HEAP32[i3 >> 2] | 0; - i6 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i6 + -1; - if ((i6 | 0) == 0) { - i3 = _luaZ_fill(i3) | 0; - } else { - i6 = i3 + 4 | 0; - i3 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i3 + 1; - i3 = HEAPU8[i3] | 0; - } - HEAP32[i1 >> 2] = i3; - } - i5 = i1 + 4 | 0; - i6 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i6 + 1; - if ((i6 | 0) > 2147483643) { - _luaX_syntaxerror(i1, 12560); - } else { - STACKTOP = i2; - return; - } -} -function _lua_yieldk(i5, i6, i1, i7) { - i5 = i5 | 0; - i6 = i6 | 0; - i1 = i1 | 0; - i7 = i7 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - i3 = HEAP32[i5 + 16 >> 2] | 0; - if ((HEAP16[i5 + 36 >> 1] | 0) != 0) { - if ((HEAP32[(HEAP32[i5 + 12 >> 2] | 0) + 172 >> 2] | 0) == (i5 | 0)) { - _luaG_runerror(i5, 2312, i4); - } else { - _luaG_runerror(i5, 2264, i4); - } - } - HEAP8[i5 + 6 | 0] = 1; - HEAP32[i3 + 20 >> 2] = (HEAP32[i3 >> 2] | 0) - (HEAP32[i5 + 28 >> 2] | 0); - if (!((HEAP8[i3 + 18 | 0] & 1) == 0)) { - STACKTOP = i2; - return 0; - } - HEAP32[i3 + 28 >> 2] = i7; - if ((i7 | 0) == 0) { - i4 = i5 + 8 | 0; - i4 = HEAP32[i4 >> 2] | 0; - i7 = ~i6; - i7 = i4 + (i7 << 4) | 0; - HEAP32[i3 >> 2] = i7; - _luaD_throw(i5, 1); - } - HEAP32[i3 + 24 >> 2] = i1; - i4 = i5 + 8 | 0; - i4 = HEAP32[i4 >> 2] | 0; - i7 = ~i6; - i7 = i4 + (i7 << 4) | 0; - HEAP32[i3 >> 2] = i7; - _luaD_throw(i5, 1); - return 0; -} -function _luaH_getint(i4, i6) { - i4 = i4 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, d3 = 0.0, i5 = 0, i7 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i5 = i1; - i7 = i6 + -1 | 0; - if (i7 >>> 0 < (HEAP32[i4 + 28 >> 2] | 0) >>> 0) { - i7 = (HEAP32[i4 + 12 >> 2] | 0) + (i7 << 4) | 0; - STACKTOP = i1; - return i7 | 0; - } - d3 = +(i6 | 0); - HEAPF64[i5 >> 3] = d3 + 1.0; - i5 = (HEAP32[i5 + 4 >> 2] | 0) + (HEAP32[i5 >> 2] | 0) | 0; - if ((i5 | 0) < 0) { - i6 = 0 - i5 | 0; - i5 = (i5 | 0) == (i6 | 0) ? 0 : i6; - } - i4 = (HEAP32[i4 + 16 >> 2] | 0) + (((i5 | 0) % ((1 << (HEAPU8[i4 + 7 | 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; - while (1) { - if ((HEAP32[i4 + 24 >> 2] | 0) == 3 ? +HEAPF64[i4 + 16 >> 3] == d3 : 0) { - break; - } - i4 = HEAP32[i4 + 28 >> 2] | 0; - if ((i4 | 0) == 0) { - i4 = 5192; - i2 = 10; - break; - } - } - if ((i2 | 0) == 10) { - STACKTOP = i1; - return i4 | 0; - } - i7 = i4; - STACKTOP = i1; - return i7 | 0; -} -function _luaL_checkversion_(i1, d4) { - i1 = i1 | 0; - d4 = +d4; - var i2 = 0, i3 = 0, i5 = 0, d6 = 0.0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i5 = _lua_version(i1) | 0; - if ((i5 | 0) == (_lua_version(0) | 0)) { - d6 = +HEAPF64[i5 >> 3]; - if (d6 != d4) { - HEAPF64[tempDoublePtr >> 3] = d4; - HEAP32[i3 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i5 = i3 + 8 | 0; - HEAPF64[tempDoublePtr >> 3] = d6; - HEAP32[i5 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i5 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - _luaL_error(i1, 1528, i3) | 0; - } - } else { - _luaL_error(i1, 1496, i3) | 0; - } - _lua_pushnumber(i1, -4660.0); - if ((_lua_tointegerx(i1, -1, 0) | 0) == -4660 ? (_lua_tounsignedx(i1, -1, 0) | 0) == -4660 : 0) { - _lua_settop(i1, -2); - STACKTOP = i2; - return; - } - _luaL_error(i1, 1584, i3) | 0; - _lua_settop(i1, -2); - STACKTOP = i2; - return; -} -function _math_random(i1) { - i1 = i1 | 0; - var i2 = 0, d3 = 0.0, i4 = 0, i5 = 0, d6 = 0.0, d7 = 0.0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - d3 = +((_rand() | 0) % 2147483647 | 0 | 0) / 2147483647.0; - i5 = _lua_gettop(i1) | 0; - if ((i5 | 0) == 0) { - _lua_pushnumber(i1, d3); - i5 = 1; - STACKTOP = i2; - return i5 | 0; - } else if ((i5 | 0) == 1) { - d6 = +_luaL_checknumber(i1, 1); - if (!(d6 >= 1.0)) { - _luaL_argerror(i1, 1, 4056) | 0; - } - _lua_pushnumber(i1, +Math_floor(+(d3 * d6)) + 1.0); - i5 = 1; - STACKTOP = i2; - return i5 | 0; - } else if ((i5 | 0) == 2) { - d6 = +_luaL_checknumber(i1, 1); - d7 = +_luaL_checknumber(i1, 2); - if (!(d6 <= d7)) { - _luaL_argerror(i1, 2, 4056) | 0; - } - _lua_pushnumber(i1, d6 + +Math_floor(+(d3 * (d7 - d6 + 1.0)))); - i5 = 1; - STACKTOP = i2; - return i5 | 0; - } else { - i5 = _luaL_error(i1, 4080, i4) | 0; - STACKTOP = i2; - return i5 | 0; - } - return 0; -} -function _push_onecapture(i2, i3, i4, i6) { - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - var i1 = 0, i5 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i5 = i1; - if ((HEAP32[i2 + 20 >> 2] | 0) <= (i3 | 0)) { - i2 = HEAP32[i2 + 16 >> 2] | 0; - if ((i3 | 0) == 0) { - _lua_pushlstring(i2, i4, i6 - i4 | 0) | 0; - STACKTOP = i1; - return; - } else { - _luaL_error(i2, 7224, i5) | 0; - STACKTOP = i1; - return; - } - } - i4 = HEAP32[i2 + (i3 << 3) + 28 >> 2] | 0; - if (!((i4 | 0) == -1)) { - i5 = HEAP32[i2 + 16 >> 2] | 0; - i3 = HEAP32[i2 + (i3 << 3) + 24 >> 2] | 0; - if ((i4 | 0) == -2) { - _lua_pushinteger(i5, i3 + 1 - (HEAP32[i2 + 4 >> 2] | 0) | 0); - STACKTOP = i1; - return; - } - } else { - i6 = i2 + 16 | 0; - _luaL_error(HEAP32[i6 >> 2] | 0, 7248, i5) | 0; - i5 = HEAP32[i6 >> 2] | 0; - i3 = HEAP32[i2 + (i3 << 3) + 24 >> 2] | 0; - } - _lua_pushlstring(i5, i3, i4) | 0; - STACKTOP = i1; - return; -} -function _luaK_nil(i7, i6, i5) { - i7 = i7 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i2 = STACKTOP; - i9 = i5 + i6 | 0; - i1 = i9 + -1 | 0; - i10 = HEAP32[i7 + 20 >> 2] | 0; - do { - if ((i10 | 0) > (HEAP32[i7 + 24 >> 2] | 0) ? (i4 = (HEAP32[(HEAP32[i7 >> 2] | 0) + 12 >> 2] | 0) + (i10 + -1 << 2) | 0, i3 = HEAP32[i4 >> 2] | 0, (i3 & 63 | 0) == 4) : 0) { - i11 = i3 >>> 6 & 255; - i10 = i11 + (i3 >>> 23) | 0; - if (!((i11 | 0) <= (i6 | 0) ? (i10 + 1 | 0) >= (i6 | 0) : 0)) { - i8 = 5; - } - if ((i8 | 0) == 5 ? (i11 | 0) < (i6 | 0) | (i11 | 0) > (i9 | 0) : 0) { - break; - } - i5 = (i11 | 0) < (i6 | 0) ? i11 : i6; - HEAP32[i4 >> 2] = ((i10 | 0) > (i1 | 0) ? i10 : i1) - i5 << 23 | i5 << 6 & 16320 | i3 & 8372287; - STACKTOP = i2; - return; - } - } while (0); - _luaK_code(i7, i6 << 6 | (i5 << 23) + -8388608 | 4) | 0; - STACKTOP = i2; - return; -} -function _lua_settable(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i5 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i5 = i1 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - _luaV_settable(i1, i3, i4 + -32 | 0, i4 + -16 | 0); - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + -32; - STACKTOP = i2; - return; -} -function _luaL_findtable(i3, i6, i5, i4) { - i3 = i3 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i7 = 0; - i2 = STACKTOP; - if ((i6 | 0) != 0) { - _lua_pushvalue(i3, i6); - } - while (1) { - i6 = _strchr(i5, 46) | 0; - if ((i6 | 0) == 0) { - i6 = i5 + (_strlen(i5 | 0) | 0) | 0; - } - i7 = i6 - i5 | 0; - _lua_pushlstring(i3, i5, i7) | 0; - _lua_rawget(i3, -2); - if ((_lua_type(i3, -1) | 0) != 0) { - if ((_lua_type(i3, -1) | 0) != 5) { - break; - } - } else { - _lua_settop(i3, -2); - _lua_createtable(i3, 0, (HEAP8[i6] | 0) == 46 ? 1 : i4); - _lua_pushlstring(i3, i5, i7) | 0; - _lua_pushvalue(i3, -2); - _lua_settable(i3, -4); - } - _lua_remove(i3, -2); - if ((HEAP8[i6] | 0) == 46) { - i5 = i6 + 1 | 0; - } else { - i3 = 0; - i1 = 10; - break; - } - } - if ((i1 | 0) == 10) { - STACKTOP = i2; - return i3 | 0; - } - _lua_settop(i3, -3); - i7 = i5; - STACKTOP = i2; - return i7 | 0; -} -function _luaD_call(i1, i4, i5, i8) { - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - i8 = i8 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i7 = i3; - i2 = i1 + 38 | 0; - i6 = (HEAP16[i2 >> 1] | 0) + 1 << 16 >> 16; - HEAP16[i2 >> 1] = i6; - if ((i6 & 65535) > 199) { - if (i6 << 16 >> 16 == 200) { - _luaG_runerror(i1, 2240, i7); - } - if ((i6 & 65535) > 224) { - _luaD_throw(i1, 6); - } - } - i6 = (i8 | 0) != 0; - if (!i6) { - i8 = i1 + 36 | 0; - HEAP16[i8 >> 1] = (HEAP16[i8 >> 1] | 0) + 1 << 16 >> 16; - } - if ((_luaD_precall(i1, i4, i5) | 0) == 0) { - _luaV_execute(i1); - } - if (i6) { - i8 = HEAP16[i2 >> 1] | 0; - i8 = i8 + -1 << 16 >> 16; - HEAP16[i2 >> 1] = i8; - STACKTOP = i3; - return; - } - i8 = i1 + 36 | 0; - HEAP16[i8 >> 1] = (HEAP16[i8 >> 1] | 0) + -1 << 16 >> 16; - i8 = HEAP16[i2 >> 1] | 0; - i8 = i8 + -1 << 16 >> 16; - HEAP16[i2 >> 1] = i8; - STACKTOP = i3; - return; -} -function _pushline(i6, i1) { - i6 = i6 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 528 | 0; - i4 = i2; - i3 = i2 + 8 | 0; - i7 = (i1 | 0) != 0; - _lua_getglobal(i6, i7 ? 288 : 296); - i8 = _lua_tolstring(i6, -1, 0) | 0; - if ((i8 | 0) == 0) { - i8 = i7 ? 312 : 320; - } - i7 = HEAP32[_stdout >> 2] | 0; - _fputs(i8 | 0, i7 | 0) | 0; - _fflush(i7 | 0) | 0; - i8 = (_fgets(i3 | 0, 512, HEAP32[_stdin >> 2] | 0) | 0) == 0; - _lua_settop(i6, -2); - if (i8) { - i8 = 0; - STACKTOP = i2; - return i8 | 0; - } - i7 = _strlen(i3 | 0) | 0; - if ((i7 | 0) != 0 ? (i5 = i3 + (i7 + -1) | 0, (HEAP8[i5] | 0) == 10) : 0) { - HEAP8[i5] = 0; - } - if ((i1 | 0) != 0 ? (HEAP8[i3] | 0) == 61 : 0) { - HEAP32[i4 >> 2] = i3 + 1; - _lua_pushfstring(i6, 272, i4) | 0; - i8 = 1; - STACKTOP = i2; - return i8 | 0; - } - _lua_pushstring(i6, i3) | 0; - i8 = 1; - STACKTOP = i2; - return i8 | 0; -} -function _db_getlocal(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i4 = i2; - if ((_lua_type(i1, 1) | 0) == 8) { - i3 = _lua_tothread(i1, 1) | 0; - i6 = 1; - } else { - i3 = i1; - i6 = 0; - } - i5 = _luaL_checkinteger(i1, i6 | 2) | 0; - i6 = i6 + 1 | 0; - if ((_lua_type(i1, i6) | 0) == 6) { - _lua_pushvalue(i1, i6); - _lua_pushstring(i1, _lua_getlocal(i1, 0, i5) | 0) | 0; - i6 = 1; - STACKTOP = i2; - return i6 | 0; - } - if ((_lua_getstack(i3, _luaL_checkinteger(i1, i6) | 0, i4) | 0) == 0) { - i6 = _luaL_argerror(i1, i6, 11560) | 0; - STACKTOP = i2; - return i6 | 0; - } - i4 = _lua_getlocal(i3, i4, i5) | 0; - if ((i4 | 0) == 0) { - _lua_pushnil(i1); - i6 = 1; - STACKTOP = i2; - return i6 | 0; - } else { - _lua_xmove(i3, i1, 1); - _lua_pushstring(i1, i4) | 0; - _lua_pushvalue(i1, -2); - i6 = 2; - STACKTOP = i2; - return i6 | 0; - } - return 0; -} -function _luaB_print(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i3; - i4 = i3 + 4 | 0; - i6 = _lua_gettop(i1) | 0; - _lua_getglobal(i1, 9584); - i5 = HEAP32[_stdout >> 2] | 0; - L1 : do { - if ((i6 | 0) >= 1) { - i7 = 1; - while (1) { - _lua_pushvalue(i1, -1); - _lua_pushvalue(i1, i7); - _lua_callk(i1, 1, 1, 0, 0); - i8 = _lua_tolstring(i1, -1, i4) | 0; - if ((i8 | 0) == 0) { - break; - } - if ((i7 | 0) > 1) { - _fputc(9, i5 | 0) | 0; - } - _fwrite(i8 | 0, 1, HEAP32[i4 >> 2] | 0, i5 | 0) | 0; - _lua_settop(i1, -2); - if ((i7 | 0) < (i6 | 0)) { - i7 = i7 + 1 | 0; - } else { - break L1; - } - } - i8 = _luaL_error(i1, 9816, i2) | 0; - STACKTOP = i3; - return i8 | 0; - } - } while (0); - _fputc(10, i5 | 0) | 0; - _fflush(i5 | 0) | 0; - i8 = 0; - STACKTOP = i3; - return i8 | 0; -} -function _luaB_load(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i5 = i2; - i6 = _lua_tolstring(i1, 1, i5) | 0; - i4 = _luaL_optlstring(i1, 3, 9872, 0) | 0; - i3 = (_lua_type(i1, 4) | 0) != -1; - if ((i6 | 0) == 0) { - i6 = _luaL_optlstring(i1, 2, 9880, 0) | 0; - _luaL_checktype(i1, 1, 6); - _lua_settop(i1, 5); - i4 = _lua_load(i1, 3, 0, i6, i4) | 0; - } else { - i7 = _luaL_optlstring(i1, 2, i6, 0) | 0; - i4 = _luaL_loadbufferx(i1, i6, HEAP32[i5 >> 2] | 0, i7, i4) | 0; - } - if ((i4 | 0) != 0) { - _lua_pushnil(i1); - _lua_insert(i1, -2); - i7 = 2; - STACKTOP = i2; - return i7 | 0; - } - if (!i3) { - i7 = 1; - STACKTOP = i2; - return i7 | 0; - } - _lua_pushvalue(i1, i3 ? 4 : 0); - if ((_lua_setupvalue(i1, -2, 1) | 0) != 0) { - i7 = 1; - STACKTOP = i2; - return i7 | 0; - } - _lua_settop(i1, -2); - i7 = 1; - STACKTOP = i2; - return i7 | 0; -} -function _db_debug(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 256 | 0; - i6 = i1; - i4 = i1 + 4 | 0; - i3 = HEAP32[_stderr >> 2] | 0; - _fwrite(12040, 11, 1, i3 | 0) | 0; - _fflush(i3 | 0) | 0; - i5 = HEAP32[_stdin >> 2] | 0; - if ((_fgets(i4 | 0, 250, i5 | 0) | 0) == 0) { - STACKTOP = i1; - return 0; - } - while (1) { - if ((_strcmp(i4, 12056) | 0) == 0) { - i2 = 7; - break; - } - if (!((_luaL_loadbufferx(i2, i4, _strlen(i4 | 0) | 0, 12064, 0) | 0) == 0 ? (_lua_pcallk(i2, 0, 0, 0, 0, 0) | 0) == 0 : 0)) { - HEAP32[i6 >> 2] = _lua_tolstring(i2, -1, 0) | 0; - _fprintf(i3 | 0, 12088, i6 | 0) | 0; - _fflush(i3 | 0) | 0; - } - _lua_settop(i2, 0); - _fwrite(12040, 11, 1, i3 | 0) | 0; - _fflush(i3 | 0) | 0; - if ((_fgets(i4 | 0, 250, i5 | 0) | 0) == 0) { - i2 = 7; - break; - } - } - if ((i2 | 0) == 7) { - STACKTOP = i1; - return 0; - } - return 0; -} -function _luaL_prepbuffsize(i2, i7) { - i2 = i2 | 0; - i7 = i7 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i1 = HEAP32[i2 + 12 >> 2] | 0; - i4 = i2 + 4 | 0; - i8 = HEAP32[i4 >> 2] | 0; - i5 = i2 + 8 | 0; - i6 = HEAP32[i5 >> 2] | 0; - if (!((i8 - i6 | 0) >>> 0 < i7 >>> 0)) { - i7 = HEAP32[i2 >> 2] | 0; - i8 = i6; - i8 = i7 + i8 | 0; - STACKTOP = i3; - return i8 | 0; - } - i8 = i8 << 1; - i8 = (i8 - i6 | 0) >>> 0 < i7 >>> 0 ? i6 + i7 | 0 : i8; - if (i8 >>> 0 < i6 >>> 0 | (i8 - i6 | 0) >>> 0 < i7 >>> 0) { - _luaL_error(i1, 1272, i3) | 0; - } - i6 = _lua_newuserdata(i1, i8) | 0; - _memcpy(i6 | 0, HEAP32[i2 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0; - if ((HEAP32[i2 >> 2] | 0) != (i2 + 16 | 0)) { - _lua_remove(i1, -2); - } - HEAP32[i2 >> 2] = i6; - HEAP32[i4 >> 2] = i8; - i7 = i6; - i8 = HEAP32[i5 >> 2] | 0; - i8 = i7 + i8 | 0; - STACKTOP = i3; - return i8 | 0; -} -function _luaG_runerror(i1, i5, i4) { - i1 = i1 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 96 | 0; - i2 = i6; - i3 = i6 + 32 | 0; - i6 = i6 + 16 | 0; - HEAP32[i6 >> 2] = i4; - i4 = _luaO_pushvfstring(i1, i5, i6) | 0; - i6 = HEAP32[i1 + 16 >> 2] | 0; - if ((HEAP8[i6 + 18 | 0] & 1) == 0) { - _luaG_errormsg(i1); - } - i5 = HEAP32[(HEAP32[HEAP32[i6 >> 2] >> 2] | 0) + 12 >> 2] | 0; - i7 = HEAP32[i5 + 20 >> 2] | 0; - if ((i7 | 0) == 0) { - i6 = 0; - } else { - i6 = HEAP32[i7 + (((HEAP32[i6 + 28 >> 2] | 0) - (HEAP32[i5 + 12 >> 2] | 0) >> 2) + -1 << 2) >> 2] | 0; - } - i5 = HEAP32[i5 + 36 >> 2] | 0; - if ((i5 | 0) == 0) { - HEAP8[i3] = 63; - HEAP8[i3 + 1 | 0] = 0; - } else { - _luaO_chunkid(i3, i5 + 16 | 0, 60); - } - HEAP32[i2 >> 2] = i3; - HEAP32[i2 + 4 >> 2] = i6; - HEAP32[i2 + 8 >> 2] = i4; - _luaO_pushfstring(i1, 2024, i2) | 0; - _luaG_errormsg(i1); -} -function _db_upvaluejoin(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i4 = i3; - i2 = _luaL_checkinteger(i1, 2) | 0; - _luaL_checktype(i1, 1, 6); - _lua_pushvalue(i1, 1); - _lua_getinfo(i1, 11728, i4) | 0; - if (!((i2 | 0) > 0 ? (i2 | 0) <= (HEAPU8[i4 + 32 | 0] | 0 | 0) : 0)) { - _luaL_argerror(i1, 2, 11736) | 0; - } - i5 = _luaL_checkinteger(i1, 4) | 0; - _luaL_checktype(i1, 3, 6); - _lua_pushvalue(i1, 3); - _lua_getinfo(i1, 11728, i4) | 0; - if (!((i5 | 0) > 0 ? (i5 | 0) <= (HEAPU8[i4 + 32 | 0] | 0 | 0) : 0)) { - _luaL_argerror(i1, 4, 11736) | 0; - } - if ((_lua_iscfunction(i1, 1) | 0) != 0) { - _luaL_argerror(i1, 1, 11760) | 0; - } - if ((_lua_iscfunction(i1, 3) | 0) == 0) { - _lua_upvaluejoin(i1, 1, i2, 3, i5); - STACKTOP = i3; - return 0; - } - _luaL_argerror(i1, 3, 11760) | 0; - _lua_upvaluejoin(i1, 1, i2, 3, i5); - STACKTOP = i3; - return 0; -} -function _luaK_jump(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i3 = STACKTOP; - i2 = i1 + 28 | 0; - i7 = HEAP32[i2 >> 2] | 0; - HEAP32[i2 >> 2] = -1; - i2 = _luaK_code(i1, 2147450903) | 0; - if ((i7 | 0) == -1) { - i9 = i2; - STACKTOP = i3; - return i9 | 0; - } - if ((i2 | 0) == -1) { - i9 = i7; - STACKTOP = i3; - return i9 | 0; - } - i6 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0; - i8 = i2; - while (1) { - i5 = i6 + (i8 << 2) | 0; - i4 = HEAP32[i5 >> 2] | 0; - i9 = (i4 >>> 14) + -131071 | 0; - if ((i9 | 0) == -1) { - break; - } - i9 = i8 + 1 + i9 | 0; - if ((i9 | 0) == -1) { - break; - } else { - i8 = i9; - } - } - i6 = i7 + ~i8 | 0; - if ((((i6 | 0) > -1 ? i6 : 0 - i6 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624); - } - HEAP32[i5 >> 2] = (i6 << 14) + 2147467264 | i4 & 16383; - i9 = i2; - STACKTOP = i3; - return i9 | 0; -} -function _findfield(i2, i3, i4) { - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i1 = 0; - i1 = STACKTOP; - L1 : do { - if (((i4 | 0) != 0 ? (_lua_type(i2, -1) | 0) == 5 : 0) ? (_lua_pushnil(i2), (_lua_next(i2, -2) | 0) != 0) : 0) { - i4 = i4 + -1 | 0; - while (1) { - if ((_lua_type(i2, -2) | 0) == 4) { - if ((_lua_rawequal(i2, i3, -1) | 0) != 0) { - i3 = 7; - break; - } - if ((_findfield(i2, i3, i4) | 0) != 0) { - i3 = 9; - break; - } - } - _lua_settop(i2, -2); - if ((_lua_next(i2, -2) | 0) == 0) { - i2 = 0; - break L1; - } - } - if ((i3 | 0) == 7) { - _lua_settop(i2, -2); - i2 = 1; - break; - } else if ((i3 | 0) == 9) { - _lua_remove(i2, -2); - _lua_pushlstring(i2, 1776, 1) | 0; - _lua_insert(i2, -2); - _lua_concat(i2, 3); - i2 = 1; - break; - } - } else { - i2 = 0; - } - } while (0); - STACKTOP = i1; - return i2 | 0; -} -function _db_gethook(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i3; - if ((_lua_type(i1, 1) | 0) == 8) { - i4 = _lua_tothread(i1, 1) | 0; - } else { - i4 = i1; - } - i5 = _lua_gethookmask(i4) | 0; - i6 = _lua_gethook(i4) | 0; - if ((i6 | 0) != 0 & (i6 | 0) != 9) { - _lua_pushlstring(i1, 12024, 13) | 0; - } else { - _luaL_getsubtable(i1, -1001e3, 11584) | 0; - _lua_pushthread(i4) | 0; - _lua_xmove(i4, i1, 1); - _lua_rawget(i1, -2); - _lua_remove(i1, -2); - } - if ((i5 & 1 | 0) == 0) { - i6 = 0; - } else { - HEAP8[i2] = 99; - i6 = 1; - } - if ((i5 & 2 | 0) != 0) { - HEAP8[i2 + i6 | 0] = 114; - i6 = i6 + 1 | 0; - } - if ((i5 & 4 | 0) != 0) { - HEAP8[i2 + i6 | 0] = 108; - i6 = i6 + 1 | 0; - } - HEAP8[i2 + i6 | 0] = 0; - _lua_pushstring(i1, i2) | 0; - _lua_pushinteger(i1, _lua_gethookcount(i4) | 0); - STACKTOP = i3; - return 3; -} -function _lua_tothread(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0; - i1 = STACKTOP; - i4 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0; - break; - } - i3 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) { - i2 = i2 + (i3 + -1 << 4) + 16 | 0; - } else { - i2 = 5192; - } - } else { - i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192; - } - } while (0); - if ((HEAP32[i2 + 8 >> 2] | 0) != 72) { - i5 = 0; - STACKTOP = i1; - return i5 | 0; - } - i5 = HEAP32[i2 >> 2] | 0; - STACKTOP = i1; - return i5 | 0; -} -function _luaD_throw(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i3 = i1 + 64 | 0; - i4 = HEAP32[i3 >> 2] | 0; - if ((i4 | 0) != 0) { - HEAP32[i4 + 160 >> 2] = i2; - _longjmp((HEAP32[i3 >> 2] | 0) + 4 | 0, 1); - } - HEAP8[i1 + 6 | 0] = i2; - i4 = i1 + 12 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[i3 + 172 >> 2] | 0; - if ((HEAP32[i5 + 64 >> 2] | 0) != 0) { - i6 = HEAP32[i1 + 8 >> 2] | 0; - i9 = i5 + 8 | 0; - i5 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i5 + 16; - i9 = i6 + -16 | 0; - i8 = HEAP32[i9 + 4 >> 2] | 0; - i7 = i5; - HEAP32[i7 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i7 + 4 >> 2] = i8; - HEAP32[i5 + 8 >> 2] = HEAP32[i6 + -8 >> 2]; - _luaD_throw(HEAP32[(HEAP32[i4 >> 2] | 0) + 172 >> 2] | 0, i2); - } - i2 = HEAP32[i3 + 168 >> 2] | 0; - if ((i2 | 0) == 0) { - _abort(); - } - FUNCTION_TABLE_ii[i2 & 255](i1) | 0; - _abort(); -} -function _lua_len(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i5 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i5 = i1 + 8 | 0; - _luaV_objlen(i1, HEAP32[i5 >> 2] | 0, i3); - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 16; - STACKTOP = i2; - return; -} -function _read_line(i4, i5, i1) { - i4 = i4 | 0; - i5 = i5 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 1040 | 0; - i2 = i3; - _luaL_buffinit(i4, i2); - i7 = _luaL_prepbuffsize(i2, 1024) | 0; - L1 : do { - if ((_fgets(i7 | 0, 1024, i5 | 0) | 0) != 0) { - i6 = i2 + 8 | 0; - while (1) { - i8 = _strlen(i7 | 0) | 0; - if ((i8 | 0) != 0 ? (HEAP8[i7 + (i8 + -1) | 0] | 0) == 10 : 0) { - break; - } - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i8; - i7 = _luaL_prepbuffsize(i2, 1024) | 0; - if ((_fgets(i7 | 0, 1024, i5 | 0) | 0) == 0) { - break L1; - } - } - HEAP32[i6 >> 2] = i8 - i1 + (HEAP32[i6 >> 2] | 0); - _luaL_pushresult(i2); - i8 = 1; - STACKTOP = i3; - return i8 | 0; - } - } while (0); - _luaL_pushresult(i2); - i8 = (_lua_rawlen(i4, -1) | 0) != 0 | 0; - STACKTOP = i3; - return i8 | 0; -} -function _luaL_tolstring(i1, i5, i4) { - i1 = i1 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - do { - if ((_luaL_callmeta(i1, i5, 1384) | 0) == 0) { - i6 = _lua_type(i1, i5) | 0; - if ((i6 | 0) == 0) { - _lua_pushlstring(i1, 1416, 3) | 0; - break; - } else if ((i6 | 0) == 1) { - i6 = (_lua_toboolean(i1, i5) | 0) != 0; - _lua_pushstring(i1, i6 ? 1400 : 1408) | 0; - break; - } else if ((i6 | 0) == 4 | (i6 | 0) == 3) { - _lua_pushvalue(i1, i5); - break; - } else { - i7 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0; - i6 = _lua_topointer(i1, i5) | 0; - HEAP32[i3 >> 2] = i7; - HEAP32[i3 + 4 >> 2] = i6; - _lua_pushfstring(i1, 1424, i3) | 0; - break; - } - } - } while (0); - i7 = _lua_tolstring(i1, -1, i4) | 0; - STACKTOP = i2; - return i7 | 0; -} -function _save(i7, i1) { - i7 = i7 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0; - i2 = STACKTOP; - i4 = HEAP32[i7 + 60 >> 2] | 0; - i3 = i4 + 4 | 0; - i8 = HEAP32[i3 >> 2] | 0; - i6 = i4 + 8 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if (!((i8 + 1 | 0) >>> 0 > i5 >>> 0)) { - i6 = HEAP32[i4 >> 2] | 0; - i7 = i1 & 255; - i5 = i8 + 1 | 0; - HEAP32[i3 >> 2] = i5; - i8 = i6 + i8 | 0; - HEAP8[i8] = i7; - STACKTOP = i2; - return; - } - if (i5 >>> 0 > 2147483645) { - _lexerror(i7, 12368, 0); - } - i8 = i5 << 1; - i7 = HEAP32[i7 + 52 >> 2] | 0; - if ((i8 | 0) == -2) { - _luaM_toobig(i7); - } - i7 = _luaM_realloc_(i7, HEAP32[i4 >> 2] | 0, i5, i8) | 0; - HEAP32[i4 >> 2] = i7; - HEAP32[i6 >> 2] = i8; - i8 = HEAP32[i3 >> 2] | 0; - i6 = i7; - i7 = i1 & 255; - i5 = i8 + 1 | 0; - HEAP32[i3 >> 2] = i5; - i8 = i6 + i8 | 0; - HEAP8[i8] = i7; - STACKTOP = i2; - return; -} -function _luaK_patchtohere(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - HEAP32[i1 + 24 >> 2] = HEAP32[i1 + 20 >> 2]; - i4 = i1 + 28 | 0; - if ((i3 | 0) == -1) { - STACKTOP = i2; - return; - } - i7 = HEAP32[i4 >> 2] | 0; - if ((i7 | 0) == -1) { - HEAP32[i4 >> 2] = i3; - STACKTOP = i2; - return; - } - i4 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i6 = i4 + (i7 << 2) | 0; - i5 = HEAP32[i6 >> 2] | 0; - i8 = (i5 >>> 14) + -131071 | 0; - if ((i8 | 0) == -1) { - break; - } - i8 = i7 + 1 + i8 | 0; - if ((i8 | 0) == -1) { - break; - } else { - i7 = i8; - } - } - i3 = ~i7 + i3 | 0; - if ((((i3 | 0) > -1 ? i3 : 0 - i3 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624); - } - HEAP32[i6 >> 2] = (i3 << 14) + 2147467264 | i5 & 16383; - STACKTOP = i2; - return; -} -function _tinsert(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i7 = i2; - _luaL_checktype(i1, 1, 5); - i4 = _luaL_len(i1, 1) | 0; - i3 = i4 + 1 | 0; - i6 = _lua_gettop(i1) | 0; - if ((i6 | 0) == 3) { - i5 = 2; - } else if ((i6 | 0) != 2) { - i7 = _luaL_error(i1, 8320, i7) | 0; - STACKTOP = i2; - return i7 | 0; - } - if ((i5 | 0) == 2) { - i5 = _luaL_checkinteger(i1, 2) | 0; - if ((i5 | 0) < 1 | (i5 | 0) > (i3 | 0)) { - _luaL_argerror(i1, 2, 8256) | 0; - } - if ((i4 | 0) < (i5 | 0)) { - i3 = i5; - } else { - while (1) { - i4 = i3 + -1 | 0; - _lua_rawgeti(i1, 1, i4); - _lua_rawseti(i1, 1, i3); - if ((i4 | 0) > (i5 | 0)) { - i3 = i4; - } else { - i3 = i5; - break; - } - } - } - } - _lua_rawseti(i1, 1, i3); - i7 = 0; - STACKTOP = i2; - return i7 | 0; -} -function _lua_iscfunction(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0; - i1 = STACKTOP; - i4 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0; - break; - } - i3 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) { - i2 = i2 + (i3 + -1 << 4) + 16 | 0; - } else { - i2 = 5192; - } - } else { - i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192; - } - } while (0); - i5 = HEAP32[i2 + 8 >> 2] | 0; - STACKTOP = i1; - return ((i5 | 0) == 22 | (i5 | 0) == 102) & 1 | 0; -} -function _lua_gettable(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = HEAP32[i1 + 16 >> 2] | 0; - do { - if ((i5 | 0) <= 0) { - if (!((i5 | 0) < -1000999)) { - i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0; - break; - } - if ((i5 | 0) == -1001e3) { - i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0; - break; - } - i5 = -1001e3 - i5 | 0; - i4 = HEAP32[i4 >> 2] | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) { - i3 = i3 + (i5 + -1 << 4) + 16 | 0; - } else { - i3 = 5192; - } - } else { - i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0; - i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192; - } - } while (0); - i5 = (HEAP32[i1 + 8 >> 2] | 0) + -16 | 0; - _luaV_gettable(i1, i3, i5, i5); - STACKTOP = i2; - return; -} -function _luaG_errormsg(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i2 = HEAP32[i1 + 68 >> 2] | 0; - if ((i2 | 0) == 0) { - _luaD_throw(i1, 2); - } - i4 = HEAP32[i1 + 28 >> 2] | 0; - i3 = i4 + (i2 + 8) | 0; - if ((HEAP32[i3 >> 2] & 15 | 0) != 6) { - _luaD_throw(i1, 6); - } - i5 = i1 + 8 | 0; - i6 = HEAP32[i5 >> 2] | 0; - i9 = i6 + -16 | 0; - i8 = HEAP32[i9 + 4 >> 2] | 0; - i7 = i6; - HEAP32[i7 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i7 + 4 >> 2] = i8; - HEAP32[i6 + 8 >> 2] = HEAP32[i6 + -8 >> 2]; - i6 = HEAP32[i5 >> 2] | 0; - i7 = i4 + i2 | 0; - i2 = HEAP32[i7 + 4 >> 2] | 0; - i4 = i6 + -16 | 0; - HEAP32[i4 >> 2] = HEAP32[i7 >> 2]; - HEAP32[i4 + 4 >> 2] = i2; - HEAP32[i6 + -8 >> 2] = HEAP32[i3 >> 2]; - i4 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i4 + 16; - _luaD_call(i1, i4 + -16 | 0, 1, 0); - _luaD_throw(i1, 2); -} -function _luaB_costatus(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i3 = i4; - i2 = _lua_tothread(i1, 1) | 0; - if ((i2 | 0) == 0) { - _luaL_argerror(i1, 1, 10856) | 0; - } - do { - if ((i2 | 0) != (i1 | 0)) { - i5 = _lua_status(i2) | 0; - if ((i5 | 0) == 0) { - if ((_lua_getstack(i2, 0, i3) | 0) > 0) { - _lua_pushlstring(i1, 10896, 6) | 0; - break; - } - if ((_lua_gettop(i2) | 0) == 0) { - _lua_pushlstring(i1, 10904, 4) | 0; - break; - } else { - _lua_pushlstring(i1, 10880, 9) | 0; - break; - } - } else if ((i5 | 0) == 1) { - _lua_pushlstring(i1, 10880, 9) | 0; - break; - } else { - _lua_pushlstring(i1, 10904, 4) | 0; - break; - } - } else { - _lua_pushlstring(i1, 10728, 7) | 0; - } - } while (0); - STACKTOP = i4; - return 1; -} -function _searcher_Lua(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i4 = _luaL_checklstring(i1, 1, 0) | 0; - _lua_getfield(i1, -1001001, 4256); - i5 = _lua_tolstring(i1, -1, 0) | 0; - if ((i5 | 0) == 0) { - HEAP32[i3 >> 2] = 4256; - _luaL_error(i1, 5032, i3) | 0; - } - i4 = _searchpath(i1, i4, i5, 4936, 4848) | 0; - if ((i4 | 0) == 0) { - i5 = 1; - STACKTOP = i2; - return i5 | 0; - } - if ((_luaL_loadfilex(i1, i4, 0) | 0) == 0) { - _lua_pushstring(i1, i4) | 0; - i5 = 2; - STACKTOP = i2; - return i5 | 0; - } else { - i6 = _lua_tolstring(i1, 1, 0) | 0; - i5 = _lua_tolstring(i1, -1, 0) | 0; - HEAP32[i3 >> 2] = i6; - HEAP32[i3 + 4 >> 2] = i4; - HEAP32[i3 + 8 >> 2] = i5; - i5 = _luaL_error(i1, 4888, i3) | 0; - STACKTOP = i2; - return i5 | 0; - } - return 0; -} -function _str_sub(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i3; - i2 = _luaL_checklstring(i1, 1, i4) | 0; - i5 = _luaL_checkinteger(i1, 2) | 0; - i6 = HEAP32[i4 >> 2] | 0; - if (!((i5 | 0) > -1)) { - if (i6 >>> 0 < (0 - i5 | 0) >>> 0) { - i5 = 0; - } else { - i5 = i5 + 1 + i6 | 0; - } - } - i6 = _luaL_optinteger(i1, 3, -1) | 0; - i4 = HEAP32[i4 >> 2] | 0; - if (!((i6 | 0) > -1)) { - if (i4 >>> 0 < (0 - i6 | 0) >>> 0) { - i6 = 0; - } else { - i6 = i6 + 1 + i4 | 0; - } - } - i5 = (i5 | 0) == 0 ? 1 : i5; - i4 = i6 >>> 0 > i4 >>> 0 ? i4 : i6; - if (i5 >>> 0 > i4 >>> 0) { - _lua_pushlstring(i1, 7040, 0) | 0; - STACKTOP = i3; - return 1; - } else { - _lua_pushlstring(i1, i2 + (i5 + -1) | 0, 1 - i5 + i4 | 0) | 0; - STACKTOP = i3; - return 1; - } - return 0; -} -function _searcher_C(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i4 = _luaL_checklstring(i1, 1, 0) | 0; - _lua_getfield(i1, -1001001, 4440); - i5 = _lua_tolstring(i1, -1, 0) | 0; - if ((i5 | 0) == 0) { - HEAP32[i3 >> 2] = 4440; - _luaL_error(i1, 5032, i3) | 0; - } - i5 = _searchpath(i1, i4, i5, 4936, 4848) | 0; - if ((i5 | 0) == 0) { - i5 = 1; - STACKTOP = i2; - return i5 | 0; - } - if ((_loadfunc(i1, i5, i4) | 0) == 0) { - _lua_pushstring(i1, i5) | 0; - i5 = 2; - STACKTOP = i2; - return i5 | 0; - } else { - i6 = _lua_tolstring(i1, 1, 0) | 0; - i4 = _lua_tolstring(i1, -1, 0) | 0; - HEAP32[i3 >> 2] = i6; - HEAP32[i3 + 4 >> 2] = i5; - HEAP32[i3 + 8 >> 2] = i4; - i5 = _luaL_error(i1, 4888, i3) | 0; - STACKTOP = i2; - return i5 | 0; - } - return 0; -} -function _io_open(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i5 = STACKTOP; - i2 = _luaL_checklstring(i1, 1, 0) | 0; - i3 = _luaL_optlstring(i1, 2, 3480, 0) | 0; - i4 = _lua_newuserdata(i1, 8) | 0; - i6 = i4 + 4 | 0; - HEAP32[i6 >> 2] = 0; - _luaL_setmetatable(i1, 2832); - HEAP32[i4 >> 2] = 0; - HEAP32[i6 >> 2] = 156; - i6 = HEAP8[i3] | 0; - if (!((!(i6 << 24 >> 24 == 0) ? (i7 = i3 + 1 | 0, (_memchr(3552, i6 << 24 >> 24, 4) | 0) != 0) : 0) ? (i6 = (HEAP8[i7] | 0) == 43 ? i3 + 2 | 0 : i7, (HEAP8[(HEAP8[i6] | 0) == 98 ? i6 + 1 | 0 : i6] | 0) == 0) : 0)) { - _luaL_argerror(i1, 2, 3560) | 0; - } - i7 = _fopen(i2 | 0, i3 | 0) | 0; - HEAP32[i4 >> 2] = i7; - if ((i7 | 0) != 0) { - i7 = 1; - STACKTOP = i5; - return i7 | 0; - } - i7 = _luaL_fileresult(i1, 0, i2) | 0; - STACKTOP = i5; - return i7 | 0; -} -function _unpack(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i6 = i1; - _luaL_checktype(i2, 1, 5); - i5 = _luaL_optinteger(i2, 2, 1) | 0; - if ((_lua_type(i2, 3) | 0) < 1) { - i3 = _luaL_len(i2, 1) | 0; - } else { - i3 = _luaL_checkinteger(i2, 3) | 0; - } - if ((i5 | 0) > (i3 | 0)) { - i6 = 0; - STACKTOP = i1; - return i6 | 0; - } - i7 = i3 - i5 | 0; - i4 = i7 + 1 | 0; - if ((i7 | 0) >= 0 ? (_lua_checkstack(i2, i4) | 0) != 0 : 0) { - _lua_rawgeti(i2, 1, i5); - if ((i5 | 0) >= (i3 | 0)) { - i7 = i4; - STACKTOP = i1; - return i7 | 0; - } - do { - i5 = i5 + 1 | 0; - _lua_rawgeti(i2, 1, i5); - } while ((i5 | 0) != (i3 | 0)); - STACKTOP = i1; - return i4 | 0; - } - i7 = _luaL_error(i2, 8280, i6) | 0; - STACKTOP = i1; - return i7 | 0; -} -function _luaF_getlocalname(i4, i6, i2) { - i4 = i4 | 0; - i6 = i6 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i5 = 0; - i1 = STACKTOP; - i3 = HEAP32[i4 + 60 >> 2] | 0; - if ((i3 | 0) <= 0) { - i6 = 0; - STACKTOP = i1; - return i6 | 0; - } - i4 = HEAP32[i4 + 24 >> 2] | 0; - i5 = 0; - while (1) { - if ((HEAP32[i4 + (i5 * 12 | 0) + 4 >> 2] | 0) > (i2 | 0)) { - i3 = 0; - i2 = 8; - break; - } - if ((HEAP32[i4 + (i5 * 12 | 0) + 8 >> 2] | 0) > (i2 | 0)) { - i6 = i6 + -1 | 0; - if ((i6 | 0) == 0) { - i2 = 6; - break; - } - } - i5 = i5 + 1 | 0; - if ((i5 | 0) >= (i3 | 0)) { - i3 = 0; - i2 = 8; - break; - } - } - if ((i2 | 0) == 6) { - i6 = (HEAP32[i4 + (i5 * 12 | 0) >> 2] | 0) + 16 | 0; - STACKTOP = i1; - return i6 | 0; - } else if ((i2 | 0) == 8) { - STACKTOP = i1; - return i3 | 0; - } - return 0; -} -function _luaK_concat(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - if ((i3 | 0) == -1) { - STACKTOP = i2; - return; - } - i7 = HEAP32[i4 >> 2] | 0; - if ((i7 | 0) == -1) { - HEAP32[i4 >> 2] = i3; - STACKTOP = i2; - return; - } - i4 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0; - while (1) { - i6 = i4 + (i7 << 2) | 0; - i5 = HEAP32[i6 >> 2] | 0; - i8 = (i5 >>> 14) + -131071 | 0; - if ((i8 | 0) == -1) { - break; - } - i8 = i7 + 1 + i8 | 0; - if ((i8 | 0) == -1) { - break; - } else { - i7 = i8; - } - } - i3 = ~i7 + i3 | 0; - if ((((i3 | 0) > -1 ? i3 : 0 - i3 | 0) | 0) > 131071) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624); - } - HEAP32[i6 >> 2] = i5 & 16383 | (i3 << 14) + 2147467264; - STACKTOP = i2; - return; -} -function _scalbn(d3, i2) { - d3 = +d3; - i2 = i2 | 0; - var i1 = 0, i4 = 0; - i1 = STACKTOP; - if ((i2 | 0) > 1023) { - d3 = d3 * 8.98846567431158e+307; - i4 = i2 + -1023 | 0; - if ((i4 | 0) > 1023) { - i2 = i2 + -2046 | 0; - i2 = (i2 | 0) > 1023 ? 1023 : i2; - d3 = d3 * 8.98846567431158e+307; - } else { - i2 = i4; - } - } else { - if ((i2 | 0) < -1022) { - d3 = d3 * 2.2250738585072014e-308; - i4 = i2 + 1022 | 0; - if ((i4 | 0) < -1022) { - i2 = i2 + 2044 | 0; - i2 = (i2 | 0) < -1022 ? -1022 : i2; - d3 = d3 * 2.2250738585072014e-308; - } else { - i2 = i4; - } - } - } - i2 = _bitshift64Shl(i2 + 1023 | 0, 0, 52) | 0; - i4 = tempRet0; - HEAP32[tempDoublePtr >> 2] = i2; - HEAP32[tempDoublePtr + 4 >> 2] = i4; - d3 = d3 * +HEAPF64[tempDoublePtr >> 3]; - STACKTOP = i1; - return +d3; -} -function _luaK_numberK(i1, d6) { - i1 = i1 | 0; - d6 = +d6; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i4 = i2 + 16 | 0; - i3 = i2; - HEAPF64[i4 >> 3] = d6; - i5 = HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 52 >> 2] | 0; - HEAPF64[i3 >> 3] = d6; - HEAP32[i3 + 8 >> 2] = 3; - if (d6 != d6 | 0.0 != 0.0 | d6 == 0.0) { - i7 = i5 + 8 | 0; - i8 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i8 + 16; - i5 = _luaS_newlstr(i5, i4, 8) | 0; - HEAP32[i8 >> 2] = i5; - HEAP32[i8 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 0 | 64; - i5 = _addk(i1, (HEAP32[i7 >> 2] | 0) + -16 | 0, i3) | 0; - HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + -16; - STACKTOP = i2; - return i5 | 0; - } else { - i8 = _addk(i1, i3, i3) | 0; - STACKTOP = i2; - return i8 | 0; - } - return 0; -} -function _auxresume(i2, i3, i4) { - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i1 = 0; - i1 = STACKTOP; - do { - if ((_lua_checkstack(i3, i4) | 0) != 0) { - if ((_lua_status(i3) | 0) == 0 ? (_lua_gettop(i3) | 0) == 0 : 0) { - _lua_pushlstring(i2, 10792, 28) | 0; - i4 = -1; - break; - } - _lua_xmove(i2, i3, i4); - if (!((_lua_resume(i3, i2, i4) | 0) >>> 0 < 2)) { - _lua_xmove(i3, i2, 1); - i4 = -1; - break; - } - i4 = _lua_gettop(i3) | 0; - if ((_lua_checkstack(i2, i4 + 1 | 0) | 0) == 0) { - _lua_settop(i3, ~i4); - _lua_pushlstring(i2, 10824, 26) | 0; - i4 = -1; - break; - } else { - _lua_xmove(i3, i2, i4); - break; - } - } else { - _lua_pushlstring(i2, 10760, 28) | 0; - i4 = -1; - } - } while (0); - STACKTOP = i1; - return i4 | 0; -} -function _luaX_setinput(i2, i1, i4, i3, i5) { - i2 = i2 | 0; - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i5 = i5 | 0; - var i6 = 0, i7 = 0; - i6 = STACKTOP; - HEAP8[i1 + 76 | 0] = 46; - i7 = i1 + 52 | 0; - HEAP32[i7 >> 2] = i2; - HEAP32[i1 >> 2] = i5; - HEAP32[i1 + 32 >> 2] = 286; - HEAP32[i1 + 56 >> 2] = i4; - HEAP32[i1 + 48 >> 2] = 0; - HEAP32[i1 + 4 >> 2] = 1; - HEAP32[i1 + 8 >> 2] = 1; - HEAP32[i1 + 68 >> 2] = i3; - i5 = _luaS_new(i2, 12264) | 0; - HEAP32[i1 + 72 >> 2] = i5; - i5 = i5 + 5 | 0; - HEAP8[i5] = HEAPU8[i5] | 0 | 32; - i5 = i1 + 60 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i4 = _luaM_realloc_(HEAP32[i7 >> 2] | 0, HEAP32[i4 >> 2] | 0, HEAP32[i4 + 8 >> 2] | 0, 32) | 0; - HEAP32[HEAP32[i5 >> 2] >> 2] = i4; - HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] = 32; - STACKTOP = i6; - return; -} -function _luaL_optlstring(i2, i4, i6, i5) { - i2 = i2 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i1; - if ((_lua_type(i2, i4) | 0) >= 1) { - i5 = _lua_tolstring(i2, i4, i5) | 0; - if ((i5 | 0) != 0) { - i6 = i5; - STACKTOP = i1; - return i6 | 0; - } - i5 = _lua_typename(i2, 4) | 0; - i6 = _lua_typename(i2, _lua_type(i2, i4) | 0) | 0; - HEAP32[i3 >> 2] = i5; - HEAP32[i3 + 4 >> 2] = i6; - _luaL_argerror(i2, i4, _lua_pushfstring(i2, 1744, i3) | 0) | 0; - i6 = 0; - STACKTOP = i1; - return i6 | 0; - } - if ((i5 | 0) == 0) { - STACKTOP = i1; - return i6 | 0; - } - if ((i6 | 0) == 0) { - i2 = 0; - } else { - i2 = _strlen(i6 | 0) | 0; - } - HEAP32[i5 >> 2] = i2; - STACKTOP = i1; - return i6 | 0; -} -function _lua_xmove(i3, i4, i1) { - i3 = i3 | 0; - i4 = i4 | 0; - i1 = i1 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i2 = STACKTOP; - if ((i3 | 0) == (i4 | 0)) { - STACKTOP = i2; - return; - } - i3 = i3 + 8 | 0; - i5 = (HEAP32[i3 >> 2] | 0) + (0 - i1 << 4) | 0; - HEAP32[i3 >> 2] = i5; - if ((i1 | 0) <= 0) { - STACKTOP = i2; - return; - } - i4 = i4 + 8 | 0; - i6 = 0; - while (1) { - i7 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i7 + 16; - i10 = i5 + (i6 << 4) | 0; - i9 = HEAP32[i10 + 4 >> 2] | 0; - i8 = i7; - HEAP32[i8 >> 2] = HEAP32[i10 >> 2]; - HEAP32[i8 + 4 >> 2] = i9; - HEAP32[i7 + 8 >> 2] = HEAP32[i5 + (i6 << 4) + 8 >> 2]; - i6 = i6 + 1 | 0; - if ((i6 | 0) == (i1 | 0)) { - break; - } - i5 = HEAP32[i3 >> 2] | 0; - } - STACKTOP = i2; - return; -} -function _luaM_realloc_(i7, i10, i3, i2) { - i7 = i7 | 0; - i10 = i10 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0; - i5 = STACKTOP; - i6 = HEAP32[i7 + 12 >> 2] | 0; - i4 = (i10 | 0) != 0; - i9 = i6 + 4 | 0; - i8 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i9 >> 2] | 0, i10, i3, i2) | 0; - if (!((i8 | 0) != 0 | (i2 | 0) == 0)) { - if ((HEAP8[i6 + 63 | 0] | 0) == 0) { - _luaD_throw(i7, 4); - } - _luaC_fullgc(i7, 1); - i8 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i9 >> 2] | 0, i10, i3, i2) | 0; - if ((i8 | 0) == 0) { - _luaD_throw(i7, 4); - } else { - i1 = i8; - } - } else { - i1 = i8; - } - i6 = i6 + 12 | 0; - HEAP32[i6 >> 2] = (i4 ? 0 - i3 | 0 : 0) + i2 + (HEAP32[i6 >> 2] | 0); - STACKTOP = i5; - return i1 | 0; -} -function _realloc(i2, i3) { - i2 = i2 | 0; - i3 = i3 | 0; - var i1 = 0, i4 = 0, i5 = 0; - i1 = STACKTOP; - do { - if ((i2 | 0) != 0) { - if (i3 >>> 0 > 4294967231) { - HEAP32[(___errno_location() | 0) >> 2] = 12; - i4 = 0; - break; - } - if (i3 >>> 0 < 11) { - i4 = 16; - } else { - i4 = i3 + 11 & -8; - } - i4 = _try_realloc_chunk(i2 + -8 | 0, i4) | 0; - if ((i4 | 0) != 0) { - i4 = i4 + 8 | 0; - break; - } - i4 = _malloc(i3) | 0; - if ((i4 | 0) == 0) { - i4 = 0; - } else { - i5 = HEAP32[i2 + -4 >> 2] | 0; - i5 = (i5 & -8) - ((i5 & 3 | 0) == 0 ? 8 : 4) | 0; - _memcpy(i4 | 0, i2 | 0, (i5 >>> 0 < i3 >>> 0 ? i5 : i3) | 0) | 0; - _free(i2); - } - } else { - i4 = _malloc(i3) | 0; - } - } while (0); - STACKTOP = i1; - return i4 | 0; -} -function _lua_setlocal(i3, i5, i4) { - i3 = i3 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i6 = 0, i7 = 0, i8 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - HEAP32[i2 >> 2] = 0; - i4 = _findlocal(i3, HEAP32[i5 + 96 >> 2] | 0, i4, i2) | 0; - i3 = i3 + 8 | 0; - if ((i4 | 0) == 0) { - i5 = HEAP32[i3 >> 2] | 0; - i5 = i5 + -16 | 0; - HEAP32[i3 >> 2] = i5; - STACKTOP = i1; - return i4 | 0; - } - i6 = HEAP32[i3 >> 2] | 0; - i5 = HEAP32[i2 >> 2] | 0; - i8 = i6 + -16 | 0; - i7 = HEAP32[i8 + 4 >> 2] | 0; - i2 = i5; - HEAP32[i2 >> 2] = HEAP32[i8 >> 2]; - HEAP32[i2 + 4 >> 2] = i7; - HEAP32[i5 + 8 >> 2] = HEAP32[i6 + -8 >> 2]; - i5 = HEAP32[i3 >> 2] | 0; - i5 = i5 + -16 | 0; - HEAP32[i3 >> 2] = i5; - STACKTOP = i1; - return i4 | 0; -} -function ___remdi3(i1, i4, i5, i6) { - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i2 = 0, i3 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 8 | 0; - i2 = i3 | 0; - i7 = i4 >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1; - i8 = ((i4 | 0) < 0 ? -1 : 0) >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1; - i9 = i6 >> 31 | ((i6 | 0) < 0 ? -1 : 0) << 1; - i10 = ((i6 | 0) < 0 ? -1 : 0) >> 31 | ((i6 | 0) < 0 ? -1 : 0) << 1; - i1 = _i64Subtract(i7 ^ i1, i8 ^ i4, i7, i8) | 0; - i4 = tempRet0; - ___udivmoddi4(i1, i4, _i64Subtract(i9 ^ i5, i10 ^ i6, i9, i10) | 0, tempRet0, i2) | 0; - i9 = _i64Subtract(HEAP32[i2 >> 2] ^ i7, HEAP32[i2 + 4 >> 2] ^ i8, i7, i8) | 0; - i8 = tempRet0; - STACKTOP = i3; - return (tempRet0 = i8, i9) | 0; -} -function _luaC_barrierproto_(i3, i4, i2) { - i3 = i3 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - var i1 = 0, i5 = 0; - i1 = STACKTOP; - if ((HEAP32[i4 + 32 >> 2] | 0) != 0) { - i5 = HEAP32[i3 + 12 >> 2] | 0; - i3 = i4 + 5 | 0; - HEAP8[i3] = HEAP8[i3] & 251; - i5 = i5 + 88 | 0; - HEAP32[i4 + 72 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i5 >> 2] = i4; - STACKTOP = i1; - return; - } - if ((HEAP8[i2 + 5 | 0] & 3) == 0) { - STACKTOP = i1; - return; - } - i5 = i4 + 5 | 0; - i4 = HEAP8[i5] | 0; - if ((i4 & 4) == 0) { - STACKTOP = i1; - return; - } - i3 = HEAP32[i3 + 12 >> 2] | 0; - if ((HEAPU8[i3 + 61 | 0] | 0) < 2) { - _reallymarkobject(i3, i2); - STACKTOP = i1; - return; - } else { - HEAP8[i5] = HEAP8[i3 + 60 | 0] & 3 | i4 & 184; - STACKTOP = i1; - return; - } -} -function _luaL_openlibs(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_requiref(i1, 2592, 144, 1); - _lua_settop(i1, -2); - _luaL_requiref(i1, 2600, 145, 1); - _lua_settop(i1, -2); - _luaL_requiref(i1, 2608, 146, 1); - _lua_settop(i1, -2); - _luaL_requiref(i1, 2624, 147, 1); - _lua_settop(i1, -2); - _luaL_requiref(i1, 2632, 148, 1); - _lua_settop(i1, -2); - _luaL_requiref(i1, 2640, 149, 1); - _lua_settop(i1, -2); - _luaL_requiref(i1, 2648, 150, 1); - _lua_settop(i1, -2); - _luaL_requiref(i1, 2656, 151, 1); - _lua_settop(i1, -2); - _luaL_requiref(i1, 2664, 152, 1); - _lua_settop(i1, -2); - _luaL_requiref(i1, 2672, 153, 1); - _lua_settop(i1, -2); - _luaL_getsubtable(i1, -1001e3, 2576) | 0; - _lua_settop(i1, -2); - STACKTOP = i2; - return; -} -function _luaX_token2str(i4, i3) { - i4 = i4 | 0; - i3 = i3 | 0; - var i1 = 0, i2 = 0, i5 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - if ((i3 | 0) >= 257) { - i5 = HEAP32[12096 + (i3 + -257 << 2) >> 2] | 0; - if ((i3 | 0) >= 286) { - STACKTOP = i1; - return i5 | 0; - } - i4 = HEAP32[i4 + 52 >> 2] | 0; - HEAP32[i2 >> 2] = i5; - i5 = _luaO_pushfstring(i4, 12256, i2) | 0; - STACKTOP = i1; - return i5 | 0; - } - i4 = HEAP32[i4 + 52 >> 2] | 0; - if ((HEAP8[i3 + 10913 | 0] & 4) == 0) { - HEAP32[i2 >> 2] = i3; - i5 = _luaO_pushfstring(i4, 12240, i2) | 0; - STACKTOP = i1; - return i5 | 0; - } else { - HEAP32[i2 >> 2] = i3; - i5 = _luaO_pushfstring(i4, 12232, i2) | 0; - STACKTOP = i1; - return i5 | 0; - } - return 0; -} -function _luaL_buffinitsize(i6, i1, i7) { - i6 = i6 | 0; - i1 = i1 | 0; - i7 = i7 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0; - i2 = STACKTOP; - HEAP32[i1 + 12 >> 2] = i6; - i3 = i1 + 16 | 0; - HEAP32[i1 >> 2] = i3; - i5 = i1 + 8 | 0; - HEAP32[i5 >> 2] = 0; - i4 = i1 + 4 | 0; - HEAP32[i4 >> 2] = 1024; - if (!(i7 >>> 0 > 1024)) { - i7 = i3; - i8 = 0; - i8 = i7 + i8 | 0; - STACKTOP = i2; - return i8 | 0; - } - i8 = i7 >>> 0 > 2048 ? i7 : 2048; - i7 = _lua_newuserdata(i6, i8) | 0; - _memcpy(i7 | 0, HEAP32[i1 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0; - if ((HEAP32[i1 >> 2] | 0) != (i3 | 0)) { - _lua_remove(i6, -2); - } - HEAP32[i1 >> 2] = i7; - HEAP32[i4 >> 2] = i8; - i8 = HEAP32[i5 >> 2] | 0; - i8 = i7 + i8 | 0; - STACKTOP = i2; - return i8 | 0; -} -function _luaE_freethread(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - i4 = i3 + 28 | 0; - _luaF_close(i3, HEAP32[i4 >> 2] | 0); - i5 = HEAP32[i4 >> 2] | 0; - if ((i5 | 0) == 0) { - _luaM_realloc_(i1, i3, 112, 0) | 0; - STACKTOP = i2; - return; - } - HEAP32[i3 + 16 >> 2] = i3 + 72; - i7 = i3 + 84 | 0; - i6 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = 0; - if ((i6 | 0) != 0) { - while (1) { - i5 = HEAP32[i6 + 12 >> 2] | 0; - _luaM_realloc_(i3, i6, 40, 0) | 0; - if ((i5 | 0) == 0) { - break; - } else { - i6 = i5; - } - } - i5 = HEAP32[i4 >> 2] | 0; - } - _luaM_realloc_(i3, i5, HEAP32[i3 + 32 >> 2] << 4, 0) | 0; - _luaM_realloc_(i1, i3, 112, 0) | 0; - STACKTOP = i2; - return; -} -function ___toread(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i3 = STACKTOP; - i4 = i1 + 74 | 0; - i2 = HEAP8[i4] | 0; - HEAP8[i4] = i2 + 255 | i2; - i4 = i1 + 20 | 0; - i2 = i1 + 44 | 0; - if ((HEAP32[i4 >> 2] | 0) >>> 0 > (HEAP32[i2 >> 2] | 0) >>> 0) { - FUNCTION_TABLE_iiii[HEAP32[i1 + 36 >> 2] & 3](i1, 0, 0) | 0; - } - HEAP32[i1 + 16 >> 2] = 0; - HEAP32[i1 + 28 >> 2] = 0; - HEAP32[i4 >> 2] = 0; - i4 = HEAP32[i1 >> 2] | 0; - if ((i4 & 20 | 0) == 0) { - i4 = HEAP32[i2 >> 2] | 0; - HEAP32[i1 + 8 >> 2] = i4; - HEAP32[i1 + 4 >> 2] = i4; - i4 = 0; - STACKTOP = i3; - return i4 | 0; - } - if ((i4 & 4 | 0) == 0) { - i4 = -1; - STACKTOP = i3; - return i4 | 0; - } - HEAP32[i1 >> 2] = i4 | 32; - i4 = -1; - STACKTOP = i3; - return i4 | 0; -} -function _lua_callk(i3, i7, i4, i6, i5) { - i3 = i3 | 0; - i7 = i7 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i8 = 0; - i1 = STACKTOP; - i2 = i3 + 8 | 0; - i7 = (HEAP32[i2 >> 2] | 0) + (~i7 << 4) | 0; - if ((i5 | 0) != 0 ? (HEAP16[i3 + 36 >> 1] | 0) == 0 : 0) { - i8 = i3 + 16 | 0; - HEAP32[(HEAP32[i8 >> 2] | 0) + 28 >> 2] = i5; - HEAP32[(HEAP32[i8 >> 2] | 0) + 24 >> 2] = i6; - _luaD_call(i3, i7, i4, 1); - } else { - _luaD_call(i3, i7, i4, 0); - } - if (!((i4 | 0) == -1)) { - STACKTOP = i1; - return; - } - i3 = (HEAP32[i3 + 16 >> 2] | 0) + 4 | 0; - i2 = HEAP32[i2 >> 2] | 0; - if (!((HEAP32[i3 >> 2] | 0) >>> 0 < i2 >>> 0)) { - STACKTOP = i1; - return; - } - HEAP32[i3 >> 2] = i2; - STACKTOP = i1; - return; -} -function _luaX_newstring(i3, i5, i4) { - i3 = i3 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i6 = 0; - i1 = STACKTOP; - i2 = HEAP32[i3 + 52 >> 2] | 0; - i5 = _luaS_newlstr(i2, i5, i4) | 0; - i4 = i2 + 8 | 0; - i6 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i6 + 16; - HEAP32[i6 >> 2] = i5; - HEAP32[i6 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 0 | 64; - i6 = _luaH_set(i2, HEAP32[(HEAP32[i3 + 48 >> 2] | 0) + 4 >> 2] | 0, (HEAP32[i4 >> 2] | 0) + -16 | 0) | 0; - i3 = i6 + 8 | 0; - if ((HEAP32[i3 >> 2] | 0) == 0 ? (HEAP32[i6 >> 2] = 1, HEAP32[i3 >> 2] = 1, (HEAP32[(HEAP32[i2 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) : 0) { - _luaC_step(i2); - } - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -16; - STACKTOP = i1; - return i5 | 0; -} -function _strtod(i3, i2) { - i3 = i3 | 0; - i2 = i2 | 0; - var i1 = 0, i4 = 0, d5 = 0.0, i6 = 0, i7 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i4 = i1; - i7 = i4 + 0 | 0; - i6 = i7 + 112 | 0; - do { - HEAP32[i7 >> 2] = 0; - i7 = i7 + 4 | 0; - } while ((i7 | 0) < (i6 | 0)); - i6 = i4 + 4 | 0; - HEAP32[i6 >> 2] = i3; - i7 = i4 + 8 | 0; - HEAP32[i7 >> 2] = -1; - HEAP32[i4 + 44 >> 2] = i3; - HEAP32[i4 + 76 >> 2] = -1; - ___shlim(i4, 0); - d5 = +___floatscan(i4, 1, 1); - i4 = (HEAP32[i6 >> 2] | 0) - (HEAP32[i7 >> 2] | 0) + (HEAP32[i4 + 108 >> 2] | 0) | 0; - if ((i2 | 0) == 0) { - STACKTOP = i1; - return +d5; - } - if ((i4 | 0) != 0) { - i3 = i3 + i4 | 0; - } - HEAP32[i2 >> 2] = i3; - STACKTOP = i1; - return +d5; -} -function _f_seek(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, d6 = 0.0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = _luaL_checkudata(i1, 1, 2832) | 0; - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - _luaL_error(i1, 3080, i2) | 0; - } - i3 = HEAP32[i3 >> 2] | 0; - i5 = _luaL_checkoption(i1, 2, 3208, 3184) | 0; - d6 = +_luaL_optnumber(i1, 3, 0.0); - i4 = ~~d6; - if (!(+(i4 | 0) == d6)) { - _luaL_argerror(i1, 3, 3224) | 0; - } - if ((_fseek(i3 | 0, i4 | 0, HEAP32[3168 + (i5 << 2) >> 2] | 0) | 0) == 0) { - _lua_pushnumber(i1, +(_ftell(i3 | 0) | 0)); - i5 = 1; - STACKTOP = i2; - return i5 | 0; - } else { - i5 = _luaL_fileresult(i1, 0, 0) | 0; - STACKTOP = i2; - return i5 | 0; - } - return 0; -} -function _setpath(i1, i4, i8, i7, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i8 = i8 | 0; - i7 = i7 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - i8 = _getenv(i8 | 0) | 0; - if ((i8 | 0) == 0) { - i7 = _getenv(i7 | 0) | 0; - if ((i7 | 0) != 0) { - i5 = i7; - i6 = 3; - } - } else { - i5 = i8; - i6 = 3; - } - if ((i6 | 0) == 3 ? (_lua_getfield(i1, -1001e3, 4832), i8 = _lua_toboolean(i1, -1) | 0, _lua_settop(i1, -2), (i8 | 0) == 0) : 0) { - _luaL_gsub(i1, _luaL_gsub(i1, i5, 4808, 4816) | 0, 4824, i3) | 0; - _lua_remove(i1, -2); - _lua_setfield(i1, -2, i4); - STACKTOP = i2; - return; - } - _lua_pushstring(i1, i3) | 0; - _lua_setfield(i1, -2, i4); - STACKTOP = i2; - return; -} -function _luaU_header(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - HEAP8[i1] = 1635077147; - HEAP8[i1 + 1 | 0] = 6387020; - HEAP8[i1 + 2 | 0] = 24949; - HEAP8[i1 + 3 | 0] = 97; - HEAP8[i1 + 4 | 0] = 82; - HEAP8[i1 + 5 | 0] = 0; - HEAP8[i1 + 6 | 0] = 1; - HEAP8[i1 + 7 | 0] = 4; - HEAP8[i1 + 8 | 0] = 4; - HEAP8[i1 + 9 | 0] = 4; - HEAP8[i1 + 10 | 0] = 8; - i3 = i1 + 12 | 0; - HEAP8[i1 + 11 | 0] = 0; - HEAP8[i3 + 0 | 0] = HEAP8[8816 | 0] | 0; - HEAP8[i3 + 1 | 0] = HEAP8[8817 | 0] | 0; - HEAP8[i3 + 2 | 0] = HEAP8[8818 | 0] | 0; - HEAP8[i3 + 3 | 0] = HEAP8[8819 | 0] | 0; - HEAP8[i3 + 4 | 0] = HEAP8[8820 | 0] | 0; - HEAP8[i3 + 5 | 0] = HEAP8[8821 | 0] | 0; - STACKTOP = i2; - return; -} -function _db_setlocal(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i3 = i2; - if ((_lua_type(i1, 1) | 0) == 8) { - i5 = _lua_tothread(i1, 1) | 0; - i4 = 1; - } else { - i5 = i1; - i4 = 0; - } - i6 = i4 + 1 | 0; - if ((_lua_getstack(i5, _luaL_checkinteger(i1, i6) | 0, i3) | 0) == 0) { - i6 = _luaL_argerror(i1, i6, 11560) | 0; - STACKTOP = i2; - return i6 | 0; - } else { - i6 = i4 + 3 | 0; - _luaL_checkany(i1, i6); - _lua_settop(i1, i6); - _lua_xmove(i1, i5, 1); - _lua_pushstring(i1, _lua_setlocal(i5, i3, _luaL_checkinteger(i1, i4 | 2) | 0) | 0) | 0; - i6 = 1; - STACKTOP = i2; - return i6 | 0; - } - return 0; -} -function _tremove(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - _luaL_checktype(i1, 1, 5); - i3 = _luaL_len(i1, 1) | 0; - i4 = _luaL_optinteger(i1, 2, i3) | 0; - if ((i4 | 0) != (i3 | 0) ? (i4 | 0) < 1 | (i4 | 0) > (i3 + 1 | 0) : 0) { - _luaL_argerror(i1, 1, 8256) | 0; - } - _lua_rawgeti(i1, 1, i4); - if ((i4 | 0) >= (i3 | 0)) { - i5 = i4; - _lua_pushnil(i1); - _lua_rawseti(i1, 1, i5); - STACKTOP = i2; - return 1; - } - while (1) { - i5 = i4 + 1 | 0; - _lua_rawgeti(i1, 1, i5); - _lua_rawseti(i1, 1, i4); - if ((i5 | 0) == (i3 | 0)) { - break; - } else { - i4 = i5; - } - } - _lua_pushnil(i1); - _lua_rawseti(i1, 1, i3); - STACKTOP = i2; - return 1; -} -function _luaL_checkudata(i1, i7, i5) { - i1 = i1 | 0; - i7 = i7 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - i3 = _lua_touserdata(i1, i7) | 0; - if (((i3 | 0) != 0 ? (_lua_getmetatable(i1, i7) | 0) != 0 : 0) ? (_lua_getfield(i1, -1001e3, i5), i6 = (_lua_rawequal(i1, -1, -2) | 0) == 0, i6 = i6 ? 0 : i3, _lua_settop(i1, -3), (i6 | 0) != 0) : 0) { - i7 = i6; - STACKTOP = i2; - return i7 | 0; - } - i6 = _lua_typename(i1, _lua_type(i1, i7) | 0) | 0; - HEAP32[i4 >> 2] = i5; - HEAP32[i4 + 4 >> 2] = i6; - _luaL_argerror(i1, i7, _lua_pushfstring(i1, 1744, i4) | 0) | 0; - i7 = 0; - STACKTOP = i2; - return i7 | 0; -} -function _luaL_error(i1, i5, i7) { - i1 = i1 | 0; - i5 = i5 | 0; - i7 = i7 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 128 | 0; - i3 = i4; - i2 = i4 + 24 | 0; - i4 = i4 + 8 | 0; - HEAP32[i4 >> 2] = i7; - if ((_lua_getstack(i1, 1, i2) | 0) != 0 ? (_lua_getinfo(i1, 1152, i2) | 0, i6 = HEAP32[i2 + 20 >> 2] | 0, (i6 | 0) > 0) : 0) { - HEAP32[i3 >> 2] = i2 + 36; - HEAP32[i3 + 4 >> 2] = i6; - _lua_pushfstring(i1, 1160, i3) | 0; - _lua_pushvfstring(i1, i5, i4) | 0; - _lua_concat(i1, 2); - _lua_error(i1) | 0; - } - _lua_pushlstring(i1, 1168, 0) | 0; - _lua_pushvfstring(i1, i5, i4) | 0; - _lua_concat(i1, 2); - _lua_error(i1) | 0; - return 0; -} -function _luaK_infix(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0; - i2 = STACKTOP; - L1 : do { - switch (i4 | 0) { - case 6: - { - _luaK_exp2nextreg(i1, i3); - break; - } - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - { - if (((HEAP32[i3 >> 2] | 0) == 5 ? (HEAP32[i3 + 16 >> 2] | 0) == -1 : 0) ? (HEAP32[i3 + 20 >> 2] | 0) == -1 : 0) { - break L1; - } - _luaK_exp2RK(i1, i3) | 0; - break; - } - case 13: - { - _luaK_goiftrue(i1, i3); - break; - } - case 14: - { - _luaK_goiffalse(i1, i3); - break; - } - default: - { - _luaK_exp2RK(i1, i3) | 0; - } - } - } while (0); - STACKTOP = i2; - return; -} -function _luaD_shrinkstack(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i4 = HEAP32[i1 + 8 >> 2] | 0; - i3 = HEAP32[i1 + 16 >> 2] | 0; - if ((i3 | 0) != 0) { - do { - i5 = HEAP32[i3 + 4 >> 2] | 0; - i4 = i4 >>> 0 < i5 >>> 0 ? i5 : i4; - i3 = HEAP32[i3 + 8 >> 2] | 0; - } while ((i3 | 0) != 0); - } - i3 = i4 - (HEAP32[i1 + 28 >> 2] | 0) | 0; - i4 = (i3 >> 4) + 1 | 0; - i4 = ((i4 | 0) / 8 | 0) + 10 + i4 | 0; - i4 = (i4 | 0) > 1e6 ? 1e6 : i4; - if ((i3 | 0) > 15999984) { - STACKTOP = i2; - return; - } - if ((i4 | 0) >= (HEAP32[i1 + 32 >> 2] | 0)) { - STACKTOP = i2; - return; - } - _luaD_reallocstack(i1, i4); - STACKTOP = i2; - return; -} -function _luaF_newproto(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = _luaC_newobj(i1, 9, 80, 0, 0) | 0; - HEAP32[i1 + 8 >> 2] = 0; - HEAP32[i1 + 44 >> 2] = 0; - HEAP32[i1 + 16 >> 2] = 0; - HEAP32[i1 + 56 >> 2] = 0; - HEAP32[i1 + 12 >> 2] = 0; - HEAP32[i1 + 32 >> 2] = 0; - HEAP32[i1 + 48 >> 2] = 0; - HEAP32[i1 + 20 >> 2] = 0; - HEAP32[i1 + 52 >> 2] = 0; - HEAP32[i1 + 28 >> 2] = 0; - HEAP32[i1 + 40 >> 2] = 0; - HEAP8[i1 + 76 | 0] = 0; - HEAP8[i1 + 77 | 0] = 0; - HEAP8[i1 + 78 | 0] = 0; - HEAP32[i1 + 24 >> 2] = 0; - HEAP32[i1 + 60 >> 2] = 0; - HEAP32[i1 + 64 >> 2] = 0; - HEAP32[i1 + 68 >> 2] = 0; - HEAP32[i1 + 36 >> 2] = 0; - STACKTOP = i2; - return i1 | 0; -} -function _luaF_freeproto(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - _luaM_realloc_(i2, HEAP32[i1 + 12 >> 2] | 0, HEAP32[i1 + 48 >> 2] << 2, 0) | 0; - _luaM_realloc_(i2, HEAP32[i1 + 16 >> 2] | 0, HEAP32[i1 + 56 >> 2] << 2, 0) | 0; - _luaM_realloc_(i2, HEAP32[i1 + 8 >> 2] | 0, HEAP32[i1 + 44 >> 2] << 4, 0) | 0; - _luaM_realloc_(i2, HEAP32[i1 + 20 >> 2] | 0, HEAP32[i1 + 52 >> 2] << 2, 0) | 0; - _luaM_realloc_(i2, HEAP32[i1 + 24 >> 2] | 0, (HEAP32[i1 + 60 >> 2] | 0) * 12 | 0, 0) | 0; - _luaM_realloc_(i2, HEAP32[i1 + 28 >> 2] | 0, HEAP32[i1 + 40 >> 2] << 3, 0) | 0; - _luaM_realloc_(i2, i1, 80, 0) | 0; - STACKTOP = i3; - return; -} -function _luaK_patchclose(i3, i7, i4) { - i3 = i3 | 0; - i7 = i7 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i8 = 0; - i2 = STACKTOP; - if ((i7 | 0) == -1) { - STACKTOP = i2; - return; - } - i3 = HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0; - i4 = (i4 << 6) + 64 & 16320; - while (1) { - i6 = i3 + (i7 << 2) | 0; - i5 = HEAP32[i6 >> 2] | 0; - i8 = (i5 >>> 14) + -131071 | 0; - if ((i8 | 0) == -1) { - break; - } - i7 = i7 + 1 + i8 | 0; - HEAP32[i6 >> 2] = i5 & -16321 | i4; - if ((i7 | 0) == -1) { - i1 = 6; - break; - } - } - if ((i1 | 0) == 6) { - STACKTOP = i2; - return; - } - HEAP32[i6 >> 2] = i5 & -16321 | i4; - STACKTOP = i2; - return; -} -function _loadfunc(i1, i4, i5) { - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i6 = _luaL_gsub(i1, i5, 4936, 4944) | 0; - i5 = _strchr(i6, 45) | 0; - do { - if ((i5 | 0) != 0) { - HEAP32[i3 >> 2] = _lua_pushlstring(i1, i6, i5 - i6 | 0) | 0; - i6 = _ll_loadfunc(i1, i4, _lua_pushfstring(i1, 4952, i3) | 0) | 0; - if ((i6 | 0) == 2) { - i6 = i5 + 1 | 0; - break; - } else { - STACKTOP = i2; - return i6 | 0; - } - } - } while (0); - HEAP32[i3 >> 2] = i6; - i6 = _ll_loadfunc(i1, i4, _lua_pushfstring(i1, 4952, i3) | 0) | 0; - STACKTOP = i2; - return i6 | 0; -} -function _luaK_setlist(i1, i3, i4, i5) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i2 = 0; - i2 = STACKTOP; - i4 = ((i4 + -1 | 0) / 50 | 0) + 1 | 0; - i5 = (i5 | 0) == -1 ? 0 : i5; - if ((i4 | 0) < 512) { - _luaK_code(i1, i3 << 6 | i5 << 23 | i4 << 14 | 36) | 0; - i4 = i3 + 1 | 0; - i4 = i4 & 255; - i5 = i1 + 48 | 0; - HEAP8[i5] = i4; - STACKTOP = i2; - return; - } - if ((i4 | 0) >= 67108864) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10576); - } - _luaK_code(i1, i3 << 6 | i5 << 23 | 36) | 0; - _luaK_code(i1, i4 << 6 | 39) | 0; - i4 = i3 + 1 | 0; - i4 = i4 & 255; - i5 = i1 + 48 | 0; - HEAP8[i5] = i4; - STACKTOP = i2; - return; -} -function _lua_getstack(i2, i6, i3) { - i2 = i2 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - var i1 = 0, i4 = 0, i5 = 0; - i1 = STACKTOP; - L1 : do { - if ((i6 | 0) >= 0) { - i5 = HEAP32[i2 + 16 >> 2] | 0; - if ((i6 | 0) > 0) { - i4 = i2 + 72 | 0; - do { - if ((i5 | 0) == (i4 | 0)) { - i2 = 0; - break L1; - } - i6 = i6 + -1 | 0; - i5 = HEAP32[i5 + 8 >> 2] | 0; - } while ((i6 | 0) > 0); - if ((i6 | 0) != 0) { - i2 = 0; - break; - } - } - if ((i5 | 0) != (i2 + 72 | 0)) { - HEAP32[i3 + 96 >> 2] = i5; - i2 = 1; - } else { - i2 = 0; - } - } else { - i2 = 0; - } - } while (0); - STACKTOP = i1; - return i2 | 0; -} -function _luaC_checkupvalcolor(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = i5 + 5 | 0; - i3 = HEAPU8[i4] | 0; - if ((i3 & 7 | 0) != 0) { - STACKTOP = i2; - return; - } - if ((HEAP8[i1 + 62 | 0] | 0) != 2 ? (HEAPU8[i1 + 61 | 0] | 0) >= 2 : 0) { - HEAP8[i4] = HEAP8[i1 + 60 | 0] & 3 | i3 & 184; - STACKTOP = i2; - return; - } - HEAP8[i4] = i3 & 187 | 4; - i3 = HEAP32[i5 + 8 >> 2] | 0; - if ((HEAP32[i3 + 8 >> 2] & 64 | 0) == 0) { - STACKTOP = i2; - return; - } - i3 = HEAP32[i3 >> 2] | 0; - if ((HEAP8[i3 + 5 | 0] & 3) == 0) { - STACKTOP = i2; - return; - } - _reallymarkobject(i1, i3); - STACKTOP = i2; - return; -} -function _luaB_collectgarbage(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = HEAP32[10160 + ((_luaL_checkoption(i1, 1, 10040, 9976) | 0) << 2) >> 2] | 0; - i3 = _lua_gc(i1, i4, _luaL_optinteger(i1, 2, 0) | 0) | 0; - if ((i4 | 0) == 3) { - i4 = _lua_gc(i1, 4, 0) | 0; - _lua_pushnumber(i1, +(i3 | 0) + +(i4 | 0) * .0009765625); - _lua_pushinteger(i1, i4); - i4 = 2; - STACKTOP = i2; - return i4 | 0; - } else if ((i4 | 0) == 9 | (i4 | 0) == 5) { - _lua_pushboolean(i1, i3); - i4 = 1; - STACKTOP = i2; - return i4 | 0; - } else { - _lua_pushinteger(i1, i3); - i4 = 1; - STACKTOP = i2; - return i4 | 0; - } - return 0; -} -function _maxn(i1) { - i1 = i1 | 0; - var i2 = 0, d3 = 0.0, d4 = 0.0; - i2 = STACKTOP; - _luaL_checktype(i1, 1, 5); - _lua_pushnil(i1); - L1 : do { - if ((_lua_next(i1, 1) | 0) == 0) { - d3 = 0.0; - } else { - d4 = 0.0; - while (1) { - while (1) { - _lua_settop(i1, -2); - if ((_lua_type(i1, -1) | 0) == 3 ? (d3 = +_lua_tonumberx(i1, -1, 0), d3 > d4) : 0) { - break; - } - if ((_lua_next(i1, 1) | 0) == 0) { - d3 = d4; - break L1; - } - } - if ((_lua_next(i1, 1) | 0) == 0) { - break; - } else { - d4 = d3; - } - } - } - } while (0); - _lua_pushnumber(i1, d3); - STACKTOP = i2; - return 1; -} -function _str_char(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 1040 | 0; - i4 = i2; - i3 = _lua_gettop(i1) | 0; - i5 = _luaL_buffinitsize(i1, i4, i3) | 0; - if ((i3 | 0) < 1) { - _luaL_pushresultsize(i4, i3); - STACKTOP = i2; - return 1; - } else { - i6 = 1; - } - while (1) { - i7 = _luaL_checkinteger(i1, i6) | 0; - if ((i7 & 255 | 0) != (i7 | 0)) { - _luaL_argerror(i1, i6, 7920) | 0; - } - HEAP8[i5 + (i6 + -1) | 0] = i7; - if ((i6 | 0) == (i3 | 0)) { - break; - } else { - i6 = i6 + 1 | 0; - } - } - _luaL_pushresultsize(i4, i3); - STACKTOP = i2; - return 1; -} -function _memcpy(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0; - i4 = i3 | 0; - if ((i3 & 3) == (i2 & 3)) { - while (i3 & 3) { - if ((i1 | 0) == 0) return i4 | 0; - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - while ((i1 | 0) >= 4) { - HEAP32[i3 >> 2] = HEAP32[i2 >> 2]; - i3 = i3 + 4 | 0; - i2 = i2 + 4 | 0; - i1 = i1 - 4 | 0; - } - } - while ((i1 | 0) > 0) { - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - return i4 | 0; -} -function _luaK_exp2val(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0; - i2 = STACKTOP; - i3 = i5 + 16 | 0; - i4 = i5 + 20 | 0; - if ((HEAP32[i3 >> 2] | 0) == (HEAP32[i4 >> 2] | 0)) { - _luaK_dischargevars(i1, i5); - STACKTOP = i2; - return; - } - _luaK_dischargevars(i1, i5); - if ((HEAP32[i5 >> 2] | 0) == 6) { - i6 = HEAP32[i5 + 8 >> 2] | 0; - if ((HEAP32[i3 >> 2] | 0) == (HEAP32[i4 >> 2] | 0)) { - STACKTOP = i2; - return; - } - if ((i6 | 0) >= (HEAPU8[i1 + 46 | 0] | 0 | 0)) { - _exp2reg(i1, i5, i6); - STACKTOP = i2; - return; - } - } - _luaK_exp2nextreg(i1, i5); - STACKTOP = i2; - return; -} -function _str_reverse(i5) { - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i4 = i2 + 1040 | 0; - i1 = i2; - i3 = _luaL_checklstring(i5, 1, i4) | 0; - i5 = _luaL_buffinitsize(i5, i1, HEAP32[i4 >> 2] | 0) | 0; - i6 = HEAP32[i4 >> 2] | 0; - if ((i6 | 0) == 0) { - i7 = 0; - _luaL_pushresultsize(i1, i7); - STACKTOP = i2; - return 1; - } else { - i7 = 0; - } - do { - HEAP8[i5 + i7 | 0] = HEAP8[i3 + (i6 + ~i7) | 0] | 0; - i7 = i7 + 1 | 0; - i6 = HEAP32[i4 >> 2] | 0; - } while (i7 >>> 0 < i6 >>> 0); - _luaL_pushresultsize(i1, i6); - STACKTOP = i2; - return 1; -} -function _str_upper(i5) { - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i4 = i1 + 1040 | 0; - i2 = i1; - i3 = _luaL_checklstring(i5, 1, i4) | 0; - i5 = _luaL_buffinitsize(i5, i2, HEAP32[i4 >> 2] | 0) | 0; - if ((HEAP32[i4 >> 2] | 0) == 0) { - i7 = 0; - _luaL_pushresultsize(i2, i7); - STACKTOP = i1; - return 1; - } else { - i6 = 0; - } - do { - HEAP8[i5 + i6 | 0] = _toupper(HEAPU8[i3 + i6 | 0] | 0 | 0) | 0; - i6 = i6 + 1 | 0; - i7 = HEAP32[i4 >> 2] | 0; - } while (i6 >>> 0 < i7 >>> 0); - _luaL_pushresultsize(i2, i7); - STACKTOP = i1; - return 1; -} -function _str_lower(i5) { - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i4 = i1 + 1040 | 0; - i2 = i1; - i3 = _luaL_checklstring(i5, 1, i4) | 0; - i5 = _luaL_buffinitsize(i5, i2, HEAP32[i4 >> 2] | 0) | 0; - if ((HEAP32[i4 >> 2] | 0) == 0) { - i7 = 0; - _luaL_pushresultsize(i2, i7); - STACKTOP = i1; - return 1; - } else { - i6 = 0; - } - do { - HEAP8[i5 + i6 | 0] = _tolower(HEAPU8[i3 + i6 | 0] | 0 | 0) | 0; - i6 = i6 + 1 | 0; - i7 = HEAP32[i4 >> 2] | 0; - } while (i6 >>> 0 < i7 >>> 0); - _luaL_pushresultsize(i2, i7); - STACKTOP = i1; - return 1; -} -function ___divdi3(i1, i2, i3, i4) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i5 = i2 >> 31 | ((i2 | 0) < 0 ? -1 : 0) << 1; - i6 = ((i2 | 0) < 0 ? -1 : 0) >> 31 | ((i2 | 0) < 0 ? -1 : 0) << 1; - i7 = i4 >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1; - i8 = ((i4 | 0) < 0 ? -1 : 0) >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1; - i1 = _i64Subtract(i5 ^ i1, i6 ^ i2, i5, i6) | 0; - i2 = tempRet0; - i5 = i7 ^ i5; - i6 = i8 ^ i6; - i7 = _i64Subtract((___udivmoddi4(i1, i2, _i64Subtract(i7 ^ i3, i8 ^ i4, i7, i8) | 0, tempRet0, 0) | 0) ^ i5, tempRet0 ^ i6, i5, i6) | 0; - return i7 | 0; -} -function _luaK_setoneret(i1, i4) { - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = HEAP32[i4 >> 2] | 0; - if ((i3 | 0) == 13) { - i3 = (HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i4 + 8 >> 2] << 2) | 0; - HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & 8388607 | 16777216; - HEAP32[i4 >> 2] = 11; - STACKTOP = i2; - return; - } else if ((i3 | 0) == 12) { - HEAP32[i4 >> 2] = 6; - i4 = i4 + 8 | 0; - HEAP32[i4 >> 2] = (HEAP32[(HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i4 >> 2] << 2) >> 2] | 0) >>> 6 & 255; - STACKTOP = i2; - return; - } else { - STACKTOP = i2; - return; - } -} -function _luaV_tostring(i6, i1) { - i6 = i6 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i3 = i2; - i4 = i2 + 8 | 0; - i5 = i1 + 8 | 0; - if ((HEAP32[i5 >> 2] | 0) != 3) { - i6 = 0; - STACKTOP = i2; - return i6 | 0; - } - HEAPF64[tempDoublePtr >> 3] = +HEAPF64[i1 >> 3]; - HEAP32[i3 >> 2] = HEAP32[tempDoublePtr >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2]; - i6 = _luaS_newlstr(i6, i4, _sprintf(i4 | 0, 8936, i3 | 0) | 0) | 0; - HEAP32[i1 >> 2] = i6; - HEAP32[i5 >> 2] = HEAPU8[i6 + 4 | 0] | 0 | 64; - i6 = 1; - STACKTOP = i2; - return i6 | 0; -} -function _strcmp(i4, i2) { - i4 = i4 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i5 = 0; - i1 = STACKTOP; - i5 = HEAP8[i4] | 0; - i3 = HEAP8[i2] | 0; - if (i5 << 24 >> 24 != i3 << 24 >> 24 | i5 << 24 >> 24 == 0 | i3 << 24 >> 24 == 0) { - i4 = i5; - i5 = i3; - i4 = i4 & 255; - i5 = i5 & 255; - i5 = i4 - i5 | 0; - STACKTOP = i1; - return i5 | 0; - } - do { - i4 = i4 + 1 | 0; - i2 = i2 + 1 | 0; - i5 = HEAP8[i4] | 0; - i3 = HEAP8[i2] | 0; - } while (!(i5 << 24 >> 24 != i3 << 24 >> 24 | i5 << 24 >> 24 == 0 | i3 << 24 >> 24 == 0)); - i4 = i5 & 255; - i5 = i3 & 255; - i5 = i4 - i5 | 0; - STACKTOP = i1; - return i5 | 0; -} -function _lua_pushstring(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0; - i2 = STACKTOP; - if ((i3 | 0) == 0) { - i3 = i1 + 8 | 0; - i1 = HEAP32[i3 >> 2] | 0; - HEAP32[i1 + 8 >> 2] = 0; - HEAP32[i3 >> 2] = i1 + 16; - i3 = 0; - STACKTOP = i2; - return i3 | 0; - } - if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i1); - } - i3 = _luaS_new(i1, i3) | 0; - i1 = i1 + 8 | 0; - i4 = HEAP32[i1 >> 2] | 0; - HEAP32[i4 >> 2] = i3; - HEAP32[i4 + 8 >> 2] = HEAPU8[i3 + 4 | 0] | 0 | 64; - HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 16; - i3 = i3 + 16 | 0; - STACKTOP = i2; - return i3 | 0; -} -function _luaK_exp2anyreg(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - _luaK_dischargevars(i1, i3); - if ((HEAP32[i3 >> 2] | 0) == 6) { - i5 = i3 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - if ((HEAP32[i3 + 16 >> 2] | 0) == (HEAP32[i3 + 20 >> 2] | 0)) { - i5 = i4; - STACKTOP = i2; - return i5 | 0; - } - if ((i4 | 0) >= (HEAPU8[i1 + 46 | 0] | 0 | 0)) { - _exp2reg(i1, i3, i4); - i5 = HEAP32[i5 >> 2] | 0; - STACKTOP = i2; - return i5 | 0; - } - } else { - i5 = i3 + 8 | 0; - } - _luaK_exp2nextreg(i1, i3); - i5 = HEAP32[i5 >> 2] | 0; - STACKTOP = i2; - return i5 | 0; -} -function _check_match(i1, i4, i5, i6) { - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - if ((HEAP32[i1 + 16 >> 2] | 0) == (i4 | 0)) { - _luaX_next(i1); - STACKTOP = i2; - return; - } - if ((HEAP32[i1 + 4 >> 2] | 0) == (i6 | 0)) { - _error_expected(i1, i4); - } else { - i2 = HEAP32[i1 + 52 >> 2] | 0; - i4 = _luaX_token2str(i1, i4) | 0; - i5 = _luaX_token2str(i1, i5) | 0; - HEAP32[i3 >> 2] = i4; - HEAP32[i3 + 4 >> 2] = i5; - HEAP32[i3 + 8 >> 2] = i6; - _luaX_syntaxerror(i1, _luaO_pushfstring(i2, 6840, i3) | 0); - } -} -function _fieldsel(i1, i6) { - i1 = i1 | 0; - i6 = i6 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i3 = i2; - i5 = i1 + 48 | 0; - i4 = HEAP32[i5 >> 2] | 0; - _luaK_exp2anyregup(i4, i6); - _luaX_next(i1); - if ((HEAP32[i1 + 16 >> 2] | 0) == 288) { - i7 = HEAP32[i1 + 24 >> 2] | 0; - _luaX_next(i1); - i5 = _luaK_stringK(HEAP32[i5 >> 2] | 0, i7) | 0; - HEAP32[i3 + 16 >> 2] = -1; - HEAP32[i3 + 20 >> 2] = -1; - HEAP32[i3 >> 2] = 4; - HEAP32[i3 + 8 >> 2] = i5; - _luaK_indexed(i4, i6, i3); - STACKTOP = i2; - return; - } else { - _error_expected(i1, 288); - } -} -function _luaK_exp2anyregup(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0; - i2 = STACKTOP; - if ((HEAP32[i3 >> 2] | 0) == 8 ? (HEAP32[i3 + 16 >> 2] | 0) == (HEAP32[i3 + 20 >> 2] | 0) : 0) { - STACKTOP = i2; - return; - } - _luaK_dischargevars(i1, i3); - if ((HEAP32[i3 >> 2] | 0) == 6) { - i4 = HEAP32[i3 + 8 >> 2] | 0; - if ((HEAP32[i3 + 16 >> 2] | 0) == (HEAP32[i3 + 20 >> 2] | 0)) { - STACKTOP = i2; - return; - } - if ((i4 | 0) >= (HEAPU8[i1 + 46 | 0] | 0 | 0)) { - _exp2reg(i1, i3, i4); - STACKTOP = i2; - return; - } - } - _luaK_exp2nextreg(i1, i3); - STACKTOP = i2; - return; -} -function _lua_settop(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0; - i1 = STACKTOP; - if (!((i5 | 0) > -1)) { - i4 = i3 + 8 | 0; - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + (i5 + 1 << 4); - STACKTOP = i1; - return; - } - i2 = i3 + 8 | 0; - i4 = HEAP32[i2 >> 2] | 0; - i3 = (HEAP32[HEAP32[i3 + 16 >> 2] >> 2] | 0) + (i5 + 1 << 4) | 0; - if (i4 >>> 0 < i3 >>> 0) { - while (1) { - i5 = i4 + 16 | 0; - HEAP32[i4 + 8 >> 2] = 0; - if (i5 >>> 0 < i3 >>> 0) { - i4 = i5; - } else { - break; - } - } - HEAP32[i2 >> 2] = i5; - } - HEAP32[i2 >> 2] = i3; - STACKTOP = i1; - return; -} -function _luaL_fileresult(i1, i6, i5) { - i1 = i1 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - i3 = HEAP32[(___errno_location() | 0) >> 2] | 0; - if ((i6 | 0) != 0) { - _lua_pushboolean(i1, 1); - i6 = 1; - STACKTOP = i2; - return i6 | 0; - } - _lua_pushnil(i1); - i6 = _strerror(i3 | 0) | 0; - if ((i5 | 0) == 0) { - _lua_pushstring(i1, i6) | 0; - } else { - HEAP32[i4 >> 2] = i5; - HEAP32[i4 + 4 >> 2] = i6; - _lua_pushfstring(i1, 1176, i4) | 0; - } - _lua_pushinteger(i1, i3); - i6 = 3; - STACKTOP = i2; - return i6 | 0; -} -function _luaL_pushmodule(i1, i4, i5) { - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - _luaL_findtable(i1, -1001e3, 1432, 1) | 0; - _lua_getfield(i1, -1, i4); - if ((_lua_type(i1, -1) | 0) == 5) { - _lua_remove(i1, -2); - STACKTOP = i2; - return; - } - _lua_settop(i1, -2); - _lua_rawgeti(i1, -1001e3, 2); - if ((_luaL_findtable(i1, 0, i4, i5) | 0) != 0) { - HEAP32[i3 >> 2] = i4; - _luaL_error(i1, 1440, i3) | 0; - } - _lua_pushvalue(i1, -1); - _lua_setfield(i1, -3, i4); - _lua_remove(i1, -2); - STACKTOP = i2; - return; -} -function _b_replace(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = _luaL_checkunsigned(i1, 1) | 0; - i5 = _luaL_checkunsigned(i1, 2) | 0; - i4 = _luaL_checkinteger(i1, 3) | 0; - i2 = _luaL_optinteger(i1, 4, 1) | 0; - if (!((i4 | 0) > -1)) { - _luaL_argerror(i1, 3, 10440) | 0; - } - if ((i2 | 0) <= 0) { - _luaL_argerror(i1, 4, 10472) | 0; - } - if ((i2 + i4 | 0) > 32) { - _luaL_error(i1, 10496, i6) | 0; - } - i2 = ~(-2 << i2 + -1); - _lua_pushunsigned(i1, i3 & ~(i2 << i4) | (i5 & i2) << i4); - STACKTOP = i6; - return 1; -} -function _luaT_gettmbyobj(i1, i5, i3) { - i1 = i1 | 0; - i5 = i5 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0; - i2 = STACKTOP; - i4 = HEAP32[i5 + 8 >> 2] & 15; - if ((i4 | 0) == 5) { - i4 = HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] | 0; - } else if ((i4 | 0) == 7) { - i4 = HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] | 0; - } else { - i4 = HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + (i4 << 2) + 252 >> 2] | 0; - } - if ((i4 | 0) == 0) { - i5 = 5192; - STACKTOP = i2; - return i5 | 0; - } - i5 = _luaH_getstr(i4, HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + (i3 << 2) + 184 >> 2] | 0) | 0; - STACKTOP = i2; - return i5 | 0; -} -function _luaS_eqstr(i2, i3) { - i2 = i2 | 0; - i3 = i3 | 0; - var i1 = 0, i4 = 0; - i1 = STACKTOP; - i4 = HEAP8[i2 + 4 | 0] | 0; - do { - if (i4 << 24 >> 24 == (HEAP8[i3 + 4 | 0] | 0)) { - if (i4 << 24 >> 24 == 4) { - i2 = (i2 | 0) == (i3 | 0); - break; - } - i4 = HEAP32[i2 + 12 >> 2] | 0; - if ((i2 | 0) != (i3 | 0)) { - if ((i4 | 0) == (HEAP32[i3 + 12 >> 2] | 0)) { - i2 = (_memcmp(i2 + 16 | 0, i3 + 16 | 0, i4) | 0) == 0; - } else { - i2 = 0; - } - } else { - i2 = 1; - } - } else { - i2 = 0; - } - } while (0); - STACKTOP = i1; - return i2 & 1 | 0; -} -function _lua_concat(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0; - i2 = STACKTOP; - if ((i3 | 0) > 1) { - if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i1); - } - _luaV_concat(i1, i3); - STACKTOP = i2; - return; - } else { - if ((i3 | 0) != 0) { - STACKTOP = i2; - return; - } - i3 = i1 + 8 | 0; - i4 = HEAP32[i3 >> 2] | 0; - i1 = _luaS_newlstr(i1, 936, 0) | 0; - HEAP32[i4 >> 2] = i1; - HEAP32[i4 + 8 >> 2] = HEAPU8[i1 + 4 | 0] | 0 | 64; - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 16; - STACKTOP = i2; - return; - } -} -function _ll_loadfunc(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_getfield(i1, -1001e3, 4184); - _lua_getfield(i1, -1, i4); - i4 = _lua_touserdata(i1, -1) | 0; - _lua_settop(i1, -3); - if ((i4 | 0) == 0) { - _lua_pushlstring(i1, 4968, 58) | 0; - i4 = 1; - STACKTOP = i2; - return i4 | 0; - } - if ((HEAP8[i3] | 0) == 42) { - _lua_pushboolean(i1, 1); - i4 = 0; - STACKTOP = i2; - return i4 | 0; - } else { - _lua_pushlstring(i1, 4968, 58) | 0; - i4 = 2; - STACKTOP = i2; - return i4 | 0; - } - return 0; -} -function _memset(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i4 = i4 & 255; - i7 = i1 & 3; - i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24; - i5 = i2 & ~3; - if (i7) { - i7 = i1 + 4 - i7 | 0; - while ((i1 | 0) < (i7 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i5 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i2 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} -function _luaD_growstack(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = HEAP32[i1 + 32 >> 2] | 0; - if ((i4 | 0) > 1e6) { - _luaD_throw(i1, 6); - } - i3 = i3 + 5 + ((HEAP32[i1 + 8 >> 2] | 0) - (HEAP32[i1 + 28 >> 2] | 0) >> 4) | 0; - i4 = i4 << 1; - i4 = (i4 | 0) > 1e6 ? 1e6 : i4; - i3 = (i4 | 0) < (i3 | 0) ? i3 : i4; - if ((i3 | 0) > 1e6) { - _luaD_reallocstack(i1, 1000200); - _luaG_runerror(i1, 2224, i2); - } else { - _luaD_reallocstack(i1, i3); - STACKTOP = i2; - return; - } -} -function _luaL_callmeta(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0; - i2 = STACKTOP; - i4 = _lua_absindex(i1, i4) | 0; - if ((_lua_getmetatable(i1, i4) | 0) == 0) { - i4 = 0; - STACKTOP = i2; - return i4 | 0; - } - _lua_pushstring(i1, i3) | 0; - _lua_rawget(i1, -2); - if ((_lua_type(i1, -1) | 0) == 0) { - _lua_settop(i1, -3); - i4 = 0; - STACKTOP = i2; - return i4 | 0; - } else { - _lua_remove(i1, -2); - _lua_pushvalue(i1, i4); - _lua_callk(i1, 1, 1, 0, 0); - i4 = 1; - STACKTOP = i2; - return i4 | 0; - } - return 0; -} -function _luaK_reserveregs(i8, i7) { - i8 = i8 | 0; - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i3 = STACKTOP; - i2 = i8 + 48 | 0; - i6 = HEAP8[i2] | 0; - i4 = (i6 & 255) + i7 | 0; - i5 = (HEAP32[i8 >> 2] | 0) + 78 | 0; - do { - if ((i4 | 0) > (HEAPU8[i5] | 0 | 0)) { - if ((i4 | 0) > 249) { - _luaX_syntaxerror(HEAP32[i8 + 12 >> 2] | 0, 10536); - } else { - HEAP8[i5] = i4; - i1 = HEAP8[i2] | 0; - break; - } - } else { - i1 = i6; - } - } while (0); - HEAP8[i2] = (i1 & 255) + i7; - STACKTOP = i3; - return; -} -function _aux_lines(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0; - i4 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - i2 = i3 + -1 | 0; - if ((i3 | 0) >= 19) { - _luaL_argerror(i1, 17, 3320) | 0; - } - _lua_pushvalue(i1, 1); - _lua_pushinteger(i1, i2); - _lua_pushboolean(i1, i5); - if ((i3 | 0) >= 2) { - i5 = 1; - while (1) { - i6 = i5 + 1 | 0; - _lua_pushvalue(i1, i6); - if ((i5 | 0) < (i2 | 0)) { - i5 = i6; - } else { - break; - } - } - } - _lua_pushcclosure(i1, 155, i3 + 2 | 0); - STACKTOP = i4; - return; -} -function _memcmp(i2, i4, i3) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i1 = 0, i5 = 0, i6 = 0; - i1 = STACKTOP; - L1 : do { - if ((i3 | 0) == 0) { - i2 = 0; - } else { - while (1) { - i6 = HEAP8[i2] | 0; - i5 = HEAP8[i4] | 0; - if (!(i6 << 24 >> 24 == i5 << 24 >> 24)) { - break; - } - i3 = i3 + -1 | 0; - if ((i3 | 0) == 0) { - i2 = 0; - break L1; - } else { - i2 = i2 + 1 | 0; - i4 = i4 + 1 | 0; - } - } - i2 = (i6 & 255) - (i5 & 255) | 0; - } - } while (0); - STACKTOP = i1; - return i2 | 0; -} -function _b_arshift(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i3 = _luaL_checkunsigned(i1, 1) | 0; - i4 = _luaL_checkinteger(i1, 2) | 0; - if ((i4 | 0) > -1 & (i3 | 0) < 0) { - if ((i4 | 0) > 31) { - i3 = -1; - } else { - i3 = i3 >>> i4 | ~(-1 >>> i4); - } - _lua_pushunsigned(i1, i3); - STACKTOP = i2; - return 1; - } - i5 = 0 - i4 | 0; - if ((i4 | 0) > 0) { - i3 = (i4 | 0) > 31 ? 0 : i3 >>> i4; - } else { - i3 = (i5 | 0) > 31 ? 0 : i3 << i5; - } - _lua_pushunsigned(i1, i3); - STACKTOP = i2; - return 1; -} -function _luaL_checkunsigned(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i3; - i6 = i3 + 8 | 0; - i2 = _lua_tounsignedx(i1, i5, i6) | 0; - if ((HEAP32[i6 >> 2] | 0) != 0) { - STACKTOP = i3; - return i2 | 0; - } - i7 = _lua_typename(i1, 3) | 0; - i6 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0; - HEAP32[i4 >> 2] = i7; - HEAP32[i4 + 4 >> 2] = i6; - _luaL_argerror(i1, i5, _lua_pushfstring(i1, 1744, i4) | 0) | 0; - STACKTOP = i3; - return i2 | 0; -} -function _luaB_loadfile(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i1 = STACKTOP; - i4 = _luaL_optlstring(i2, 1, 0, 0) | 0; - i5 = _luaL_optlstring(i2, 2, 0, 0) | 0; - i3 = (_lua_type(i2, 3) | 0) != -1; - i6 = i3 ? 3 : 0; - if ((_luaL_loadfilex(i2, i4, i5) | 0) == 0) { - if (i3 ? (_lua_pushvalue(i2, i6), (_lua_setupvalue(i2, -2, 1) | 0) == 0) : 0) { - _lua_settop(i2, -2); - i2 = 1; - } else { - i2 = 1; - } - } else { - _lua_pushnil(i2); - _lua_insert(i2, -2); - i2 = 2; - } - STACKTOP = i1; - return i2 | 0; -} -function _luaL_checkinteger(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i3; - i6 = i3 + 8 | 0; - i2 = _lua_tointegerx(i1, i5, i6) | 0; - if ((HEAP32[i6 >> 2] | 0) != 0) { - STACKTOP = i3; - return i2 | 0; - } - i7 = _lua_typename(i1, 3) | 0; - i6 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0; - HEAP32[i4 >> 2] = i7; - HEAP32[i4 + 4 >> 2] = i6; - _luaL_argerror(i1, i5, _lua_pushfstring(i1, 1744, i4) | 0) | 0; - STACKTOP = i3; - return i2 | 0; -} -function _luaB_select(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i3 = STACKTOP; - i2 = _lua_gettop(i1) | 0; - if ((_lua_type(i1, 1) | 0) == 4 ? (HEAP8[_lua_tolstring(i1, 1, 0) | 0] | 0) == 35 : 0) { - _lua_pushinteger(i1, i2 + -1 | 0); - i4 = 1; - STACKTOP = i3; - return i4 | 0; - } - i4 = _luaL_checkinteger(i1, 1) | 0; - if ((i4 | 0) < 0) { - i4 = i4 + i2 | 0; - } else { - i4 = (i4 | 0) > (i2 | 0) ? i2 : i4; - } - if ((i4 | 0) <= 0) { - _luaL_argerror(i1, 1, 9760) | 0; - } - i4 = i2 - i4 | 0; - STACKTOP = i3; - return i4 | 0; -} -function _luaX_next(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - HEAP32[i1 + 8 >> 2] = HEAP32[i1 + 4 >> 2]; - i3 = i1 + 32 | 0; - if ((HEAP32[i3 >> 2] | 0) == 286) { - HEAP32[i1 + 16 >> 2] = _llex(i1, i1 + 24 | 0) | 0; - STACKTOP = i2; - return; - } else { - i1 = i1 + 16 | 0; - HEAP32[i1 + 0 >> 2] = HEAP32[i3 + 0 >> 2]; - HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2]; - HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2]; - HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2]; - HEAP32[i3 >> 2] = 286; - STACKTOP = i2; - return; - } -} -function _lua_setglobal(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i3 = STACKTOP; - i5 = _luaH_getint(HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 40 >> 2] | 0, 2) | 0; - i4 = i1 + 8 | 0; - i6 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = i6 + 16; - i2 = _luaS_new(i1, i2) | 0; - HEAP32[i6 >> 2] = i2; - HEAP32[i6 + 8 >> 2] = HEAPU8[i2 + 4 | 0] | 0 | 64; - i2 = HEAP32[i4 >> 2] | 0; - _luaV_settable(i1, i5, i2 + -16 | 0, i2 + -32 | 0); - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -32; - STACKTOP = i3; - return; -} -function _luaL_checknumber(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var d2 = 0.0, i3 = 0, i4 = 0, i6 = 0, i7 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i3; - i6 = i3 + 8 | 0; - d2 = +_lua_tonumberx(i1, i5, i6); - if ((HEAP32[i6 >> 2] | 0) != 0) { - STACKTOP = i3; - return +d2; - } - i7 = _lua_typename(i1, 3) | 0; - i6 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0; - HEAP32[i4 >> 2] = i7; - HEAP32[i4 + 4 >> 2] = i6; - _luaL_argerror(i1, i5, _lua_pushfstring(i1, 1744, i4) | 0) | 0; - STACKTOP = i3; - return +d2; -} -function _luaZ_fill(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - i3 = FUNCTION_TABLE_iiii[HEAP32[i1 + 8 >> 2] & 3](HEAP32[i1 + 16 >> 2] | 0, HEAP32[i1 + 12 >> 2] | 0, i4) | 0; - if ((i3 | 0) == 0) { - i4 = -1; - STACKTOP = i2; - return i4 | 0; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((i4 | 0) == 0) { - i4 = -1; - STACKTOP = i2; - return i4 | 0; - } - HEAP32[i1 >> 2] = i4 + -1; - HEAP32[i1 + 4 >> 2] = i3 + 1; - i4 = HEAPU8[i3] | 0; - STACKTOP = i2; - return i4 | 0; -} -function _lua_createtable(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i1); - } - i5 = _luaH_new(i1) | 0; - i6 = i1 + 8 | 0; - i7 = HEAP32[i6 >> 2] | 0; - HEAP32[i7 >> 2] = i5; - HEAP32[i7 + 8 >> 2] = 69; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 16; - if (!((i3 | 0) > 0 | (i4 | 0) > 0)) { - STACKTOP = i2; - return; - } - _luaH_resize(i1, i5, i3, i4); - STACKTOP = i2; - return; -} -function _generic_reader(i1, i3, i2) { - i1 = i1 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - _luaL_checkstack(i1, 2, 9888); - _lua_pushvalue(i1, 1); - _lua_callk(i1, 0, 1, 0, 0); - if ((_lua_type(i1, -1) | 0) == 0) { - _lua_settop(i1, -2); - HEAP32[i2 >> 2] = 0; - i2 = 0; - STACKTOP = i3; - return i2 | 0; - } - if ((_lua_isstring(i1, -1) | 0) == 0) { - _luaL_error(i1, 9920, i3) | 0; - } - _lua_replace(i1, 5); - i2 = _lua_tolstring(i1, 5, i2) | 0; - STACKTOP = i3; - return i2 | 0; -} -function _luaZ_openspace(i5, i1, i6) { - i5 = i5 | 0; - i1 = i1 | 0; - i6 = i6 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = i1 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - if (!(i3 >>> 0 < i6 >>> 0)) { - i6 = HEAP32[i1 >> 2] | 0; - STACKTOP = i2; - return i6 | 0; - } - i6 = i6 >>> 0 < 32 ? 32 : i6; - if ((i6 + 1 | 0) >>> 0 > 4294967293) { - _luaM_toobig(i5); - } - i5 = _luaM_realloc_(i5, HEAP32[i1 >> 2] | 0, i3, i6) | 0; - HEAP32[i1 >> 2] = i5; - HEAP32[i4 >> 2] = i6; - i6 = i5; - STACKTOP = i2; - return i6 | 0; -} -function _luaH_getstr(i4, i3) { - i4 = i4 | 0; - i3 = i3 | 0; - var i1 = 0, i2 = 0; - i2 = STACKTOP; - i4 = (HEAP32[i4 + 16 >> 2] | 0) + (((1 << (HEAPU8[i4 + 7 | 0] | 0)) + -1 & HEAP32[i3 + 8 >> 2]) << 5) | 0; - while (1) { - if ((HEAP32[i4 + 24 >> 2] | 0) == 68 ? (HEAP32[i4 + 16 >> 2] | 0) == (i3 | 0) : 0) { - break; - } - i4 = HEAP32[i4 + 28 >> 2] | 0; - if ((i4 | 0) == 0) { - i3 = 5192; - i1 = 6; - break; - } - } - if ((i1 | 0) == 6) { - STACKTOP = i2; - return i3 | 0; - } - STACKTOP = i2; - return i4 | 0; -} -function _b_extract(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = _luaL_checkunsigned(i1, 1) | 0; - i3 = _luaL_checkinteger(i1, 2) | 0; - i4 = _luaL_optinteger(i1, 3, 1) | 0; - if (!((i3 | 0) > -1)) { - _luaL_argerror(i1, 2, 10440) | 0; - } - if ((i4 | 0) <= 0) { - _luaL_argerror(i1, 3, 10472) | 0; - } - if ((i4 + i3 | 0) > 32) { - _luaL_error(i1, 10496, i5) | 0; - } - _lua_pushunsigned(i1, i2 >>> i3 & ~(-2 << i4 + -1)); - STACKTOP = i5; - return 1; -} -function _luaL_checklstring(i1, i4, i5) { - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i6 = 0, i7 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i5 = _lua_tolstring(i1, i4, i5) | 0; - if ((i5 | 0) != 0) { - STACKTOP = i2; - return i5 | 0; - } - i7 = _lua_typename(i1, 4) | 0; - i6 = _lua_typename(i1, _lua_type(i1, i4) | 0) | 0; - HEAP32[i3 >> 2] = i7; - HEAP32[i3 + 4 >> 2] = i6; - _luaL_argerror(i1, i4, _lua_pushfstring(i1, 1744, i3) | 0) | 0; - STACKTOP = i2; - return i5 | 0; -} -function _db_traceback(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - if ((_lua_type(i1, 1) | 0) == 8) { - i3 = _lua_tothread(i1, 1) | 0; - i4 = 1; - } else { - i3 = i1; - i4 = 0; - } - i5 = i4 + 1 | 0; - i6 = _lua_tolstring(i1, i5, 0) | 0; - if ((i6 | 0) == 0 ? (_lua_type(i1, i5) | 0) >= 1 : 0) { - _lua_pushvalue(i1, i5); - STACKTOP = i2; - return 1; - } - _luaL_traceback(i1, i3, i6, _luaL_optinteger(i1, i4 | 2, (i3 | 0) == (i1 | 0) | 0) | 0); - STACKTOP = i2; - return 1; -} -function _f_setvbuf(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = _luaL_checkudata(i1, 1, 2832) | 0; - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - _luaL_error(i1, 3080, i2) | 0; - } - i5 = HEAP32[i3 >> 2] | 0; - i4 = _luaL_checkoption(i1, 2, 0, 3128) | 0; - i3 = _luaL_optinteger(i1, 3, 1024) | 0; - i3 = _luaL_fileresult(i1, (_setvbuf(i5 | 0, 0, HEAP32[3112 + (i4 << 2) >> 2] | 0, i3 | 0) | 0) == 0 | 0, 0) | 0; - STACKTOP = i2; - return i3 | 0; -} -function _luaU_dump(i3, i1, i4, i2, i5) { - i3 = i3 | 0; - i1 = i1 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - var i6 = 0, i7 = 0, i8 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i8 = i6 + 20 | 0; - i7 = i6; - HEAP32[i7 >> 2] = i3; - HEAP32[i7 + 4 >> 2] = i4; - HEAP32[i7 + 8 >> 2] = i2; - HEAP32[i7 + 12 >> 2] = i5; - i5 = i7 + 16 | 0; - _luaU_header(i8); - HEAP32[i5 >> 2] = FUNCTION_TABLE_iiiii[i4 & 3](i3, i8, 18, i2) | 0; - _DumpFunction(i1, i7); - STACKTOP = i6; - return HEAP32[i5 >> 2] | 0; -} -function _luaB_setmetatable(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = _lua_type(i1, 2) | 0; - _luaL_checktype(i1, 1, 5); - if (!((i3 | 0) == 0 | (i3 | 0) == 5)) { - _luaL_argerror(i1, 2, 9680) | 0; - } - if ((_luaL_getmetafield(i1, 1, 9704) | 0) == 0) { - _lua_settop(i1, 2); - _lua_setmetatable(i1, 1) | 0; - i3 = 1; - STACKTOP = i2; - return i3 | 0; - } else { - i3 = _luaL_error(i1, 9720, i2) | 0; - STACKTOP = i2; - return i3 | 0; - } - return 0; -} -function _getF(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - i3 = STACKTOP; - i4 = HEAP32[i2 >> 2] | 0; - if ((i4 | 0) > 0) { - HEAP32[i1 >> 2] = i4; - HEAP32[i2 >> 2] = 0; - i4 = i2 + 8 | 0; - STACKTOP = i3; - return i4 | 0; - } - i4 = i2 + 4 | 0; - if ((_feof(HEAP32[i4 >> 2] | 0) | 0) != 0) { - i4 = 0; - STACKTOP = i3; - return i4 | 0; - } - i2 = i2 + 8 | 0; - HEAP32[i1 >> 2] = _fread(i2 | 0, 1, 1024, HEAP32[i4 >> 2] | 0) | 0; - i4 = i2; - STACKTOP = i3; - return i4 | 0; -} -function _luaL_where(i1, i6) { - i1 = i1 | 0; - i6 = i6 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i3 = i4; - i2 = i4 + 8 | 0; - if ((_lua_getstack(i1, i6, i2) | 0) != 0 ? (_lua_getinfo(i1, 1152, i2) | 0, i5 = HEAP32[i2 + 20 >> 2] | 0, (i5 | 0) > 0) : 0) { - HEAP32[i3 >> 2] = i2 + 36; - HEAP32[i3 + 4 >> 2] = i5; - _lua_pushfstring(i1, 1160, i3) | 0; - STACKTOP = i4; - return; - } - _lua_pushlstring(i1, 1168, 0) | 0; - STACKTOP = i4; - return; -} -function _hookf(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_getsubtable(i1, -1001e3, 11584) | 0; - _lua_pushthread(i1) | 0; - _lua_rawget(i1, -2); - if ((_lua_type(i1, -1) | 0) != 6) { - STACKTOP = i2; - return; - } - _lua_pushstring(i1, HEAP32[11608 + (HEAP32[i3 >> 2] << 2) >> 2] | 0) | 0; - i3 = HEAP32[i3 + 20 >> 2] | 0; - if ((i3 | 0) > -1) { - _lua_pushinteger(i1, i3); - } else { - _lua_pushnil(i1); - } - _lua_callk(i1, 2, 0, 0, 0); - STACKTOP = i2; - return; -} -function _luaV_tonumber(i5, i2) { - i5 = i5 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i1; - i4 = HEAP32[i5 + 8 >> 2] | 0; - if ((i4 | 0) != 3) { - if ((i4 & 15 | 0) == 4 ? (i5 = HEAP32[i5 >> 2] | 0, (_luaO_str2d(i5 + 16 | 0, HEAP32[i5 + 12 >> 2] | 0, i3) | 0) != 0) : 0) { - HEAPF64[i2 >> 3] = +HEAPF64[i3 >> 3]; - HEAP32[i2 + 8 >> 2] = 3; - } else { - i2 = 0; - } - } else { - i2 = i5; - } - STACKTOP = i1; - return i2 | 0; -} -function _luaO_arith(i3, d1, d2) { - i3 = i3 | 0; - d1 = +d1; - d2 = +d2; - switch (i3 | 0) { - case 4: - { - d1 = d1 - +Math_floor(+(d1 / d2)) * d2; - break; - } - case 6: - { - d1 = -d1; - break; - } - case 0: - { - d1 = d1 + d2; - break; - } - case 1: - { - d1 = d1 - d2; - break; - } - case 5: - { - d1 = +Math_pow(+d1, +d2); - break; - } - case 3: - { - d1 = d1 / d2; - break; - } - case 2: - { - d1 = d1 * d2; - break; - } - default: - { - d1 = 0.0; - } - } - return +d1; -} -function _luaB_coresume(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _lua_tothread(i1, 1) | 0; - if ((i3 | 0) == 0) { - _luaL_argerror(i1, 1, 10856) | 0; - } - i3 = _auxresume(i1, i3, (_lua_gettop(i1) | 0) + -1 | 0) | 0; - if ((i3 | 0) < 0) { - _lua_pushboolean(i1, 0); - _lua_insert(i1, -2); - i3 = 2; - STACKTOP = i2; - return i3 | 0; - } else { - _lua_pushboolean(i1, 1); - _lua_insert(i1, ~i3); - i3 = i3 + 1 | 0; - STACKTOP = i2; - return i3 | 0; - } - return 0; -} -function _pairsmeta(i1, i5, i4, i3) { - i1 = i1 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((_luaL_getmetafield(i1, 1, i5) | 0) != 0) { - _lua_pushvalue(i1, 1); - _lua_callk(i1, 1, 3, 0, 0); - STACKTOP = i2; - return; - } - _luaL_checktype(i1, 1, 5); - _lua_pushcclosure(i1, i3, 0); - _lua_pushvalue(i1, 1); - if ((i4 | 0) == 0) { - _lua_pushnil(i1); - STACKTOP = i2; - return; - } else { - _lua_pushinteger(i1, 0); - STACKTOP = i2; - return; - } -} -function _io_close(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - if ((_lua_type(i1, 1) | 0) == -1) { - _lua_getfield(i1, -1001e3, 2800); - } - if ((HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) + 4 >> 2] | 0) == 0) { - _luaL_error(i1, 3080, i2) | 0; - } - i4 = (_luaL_checkudata(i1, 1, 2832) | 0) + 4 | 0; - i3 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = 0; - i1 = FUNCTION_TABLE_ii[i3 & 255](i1) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _pack(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - _lua_createtable(i1, i3, 1); - _lua_pushinteger(i1, i3); - _lua_setfield(i1, -2, 8312); - if ((i3 | 0) <= 0) { - STACKTOP = i2; - return 1; - } - _lua_pushvalue(i1, 1); - _lua_rawseti(i1, -2, 1); - _lua_replace(i1, 1); - if ((i3 | 0) <= 1) { - STACKTOP = i2; - return 1; - } - do { - _lua_rawseti(i1, 1, i3); - i3 = i3 + -1 | 0; - } while ((i3 | 0) > 1); - STACKTOP = i2; - return 1; -} -function _luaL_execresult(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((i3 | 0) == -1) { - i3 = HEAP32[(___errno_location() | 0) >> 2] | 0; - _lua_pushnil(i1); - _lua_pushstring(i1, _strerror(i3 | 0) | 0) | 0; - _lua_pushinteger(i1, i3); - STACKTOP = i2; - return 3; - } else if ((i3 | 0) == 0) { - _lua_pushboolean(i1, 1); - } else { - _lua_pushnil(i1); - } - _lua_pushstring(i1, 1184) | 0; - _lua_pushinteger(i1, i3); - STACKTOP = i2; - return 3; -} -function _lua_getglobal(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i3 = STACKTOP; - i4 = _luaH_getint(HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 40 >> 2] | 0, 2) | 0; - i5 = i1 + 8 | 0; - i6 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i6 + 16; - i2 = _luaS_new(i1, i2) | 0; - HEAP32[i6 >> 2] = i2; - HEAP32[i6 + 8 >> 2] = HEAPU8[i2 + 4 | 0] | 0 | 64; - i2 = (HEAP32[i5 >> 2] | 0) + -16 | 0; - _luaV_gettable(i1, i4, i2, i2); - STACKTOP = i3; - return; -} -function _luaL_checktype(i1, i5, i4) { - i1 = i1 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - if ((_lua_type(i1, i5) | 0) == (i4 | 0)) { - STACKTOP = i2; - return; - } - i6 = _lua_typename(i1, i4) | 0; - i4 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0; - HEAP32[i3 >> 2] = i6; - HEAP32[i3 + 4 >> 2] = i4; - _luaL_argerror(i1, i5, _lua_pushfstring(i1, 1744, i3) | 0) | 0; - STACKTOP = i2; - return; -} -function _luaC_newobj(i7, i4, i6, i5, i1) { - i7 = i7 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = HEAP32[i7 + 12 >> 2] | 0; - i7 = _luaM_realloc_(i7, 0, i4 & 15, i6) | 0; - i6 = i7 + i1 | 0; - i5 = (i5 | 0) == 0 ? i3 + 68 | 0 : i5; - HEAP8[i7 + (i1 + 5) | 0] = HEAP8[i3 + 60 | 0] & 3; - HEAP8[i7 + (i1 + 4) | 0] = i4; - HEAP32[i6 >> 2] = HEAP32[i5 >> 2]; - HEAP32[i5 >> 2] = i6; - STACKTOP = i2; - return i6 | 0; -} -function _luaL_requiref(i1, i3, i5, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushcclosure(i1, i5, 0); - _lua_pushstring(i1, i3) | 0; - _lua_callk(i1, 1, 1, 0, 0); - _luaL_getsubtable(i1, -1001e3, 1432) | 0; - _lua_pushvalue(i1, -2); - _lua_setfield(i1, -2, i3); - _lua_settop(i1, -2); - if ((i4 | 0) == 0) { - STACKTOP = i2; - return; - } - _lua_pushvalue(i1, -1); - _lua_setglobal(i1, i3); - STACKTOP = i2; - return; -} -function _luaG_ordererror(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = HEAP32[8528 + ((HEAP32[i3 + 8 >> 2] & 15) + 1 << 2) >> 2] | 0; - i4 = HEAP32[8528 + ((HEAP32[i4 + 8 >> 2] & 15) + 1 << 2) >> 2] | 0; - if ((i3 | 0) == (i4 | 0)) { - HEAP32[i2 >> 2] = i3; - _luaG_runerror(i1, 1952, i2); - } else { - HEAP32[i2 >> 2] = i3; - HEAP32[i2 + 4 >> 2] = i4; - _luaG_runerror(i1, 1992, i2); - } -} -function _io_popen(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = _luaL_checklstring(i1, 1, 0) | 0; - _luaL_optlstring(i1, 2, 3480, 0) | 0; - i5 = _lua_newuserdata(i1, 8) | 0; - i4 = i5 + 4 | 0; - HEAP32[i4 >> 2] = 0; - _luaL_setmetatable(i1, 2832); - _luaL_error(i1, 3488, i2) | 0; - HEAP32[i5 >> 2] = 0; - HEAP32[i4 >> 2] = 157; - i1 = _luaL_fileresult(i1, 0, i3) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _sort_comp(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((_lua_type(i1, 2) | 0) == 0) { - i4 = _lua_compare(i1, i3, i4, 1) | 0; - STACKTOP = i2; - return i4 | 0; - } else { - _lua_pushvalue(i1, 2); - _lua_pushvalue(i1, i3 + -1 | 0); - _lua_pushvalue(i1, i4 + -2 | 0); - _lua_callk(i1, 2, 1, 0, 0); - i4 = _lua_toboolean(i1, -1) | 0; - _lua_settop(i1, -2); - STACKTOP = i2; - return i4 | 0; - } - return 0; -} -function _db_upvalueid(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 112 | 0; - i4 = i3; - i2 = _luaL_checkinteger(i1, 2) | 0; - _luaL_checktype(i1, 1, 6); - _lua_pushvalue(i1, 1); - _lua_getinfo(i1, 11728, i4) | 0; - if (!((i2 | 0) > 0 ? (i2 | 0) <= (HEAPU8[i4 + 32 | 0] | 0 | 0) : 0)) { - _luaL_argerror(i1, 2, 11736) | 0; - } - _lua_pushlightuserdata(i1, _lua_upvalueid(i1, 1, i2) | 0); - STACKTOP = i3; - return 1; -} -function _luaL_getmetafield(i2, i4, i3) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i1 = 0; - i1 = STACKTOP; - do { - if ((_lua_getmetatable(i2, i4) | 0) != 0) { - _lua_pushstring(i2, i3) | 0; - _lua_rawget(i2, -2); - if ((_lua_type(i2, -1) | 0) == 0) { - _lua_settop(i2, -3); - i2 = 0; - break; - } else { - _lua_remove(i2, -2); - i2 = 1; - break; - } - } else { - i2 = 0; - } - } while (0); - STACKTOP = i1; - return i2 | 0; -} -function _luaF_freeupval(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - if ((HEAP32[i3 + 8 >> 2] | 0) == (i3 + 16 | 0)) { - _luaM_realloc_(i1, i3, 32, 0) | 0; - STACKTOP = i2; - return; - } - i4 = i3 + 16 | 0; - i5 = i4 + 4 | 0; - HEAP32[(HEAP32[i5 >> 2] | 0) + 16 >> 2] = HEAP32[i4 >> 2]; - HEAP32[(HEAP32[i4 >> 2] | 0) + 20 >> 2] = HEAP32[i5 >> 2]; - _luaM_realloc_(i1, i3, 32, 0) | 0; - STACKTOP = i2; - return; -} -function _luaL_addvalue(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - i5 = HEAP32[i1 + 12 >> 2] | 0; - i3 = _lua_tolstring(i5, -1, i4) | 0; - i6 = i1 + 16 | 0; - if ((HEAP32[i1 >> 2] | 0) != (i6 | 0)) { - _lua_insert(i5, -2); - } - _luaL_addlstring(i1, i3, HEAP32[i4 >> 2] | 0); - _lua_remove(i5, (HEAP32[i1 >> 2] | 0) != (i6 | 0) ? -2 : -1); - STACKTOP = i2; - return; -} -function _escerror(i1, i4, i3, i2) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - var i5 = 0, i6 = 0; - HEAP32[(HEAP32[i1 + 60 >> 2] | 0) + 4 >> 2] = 0; - _save(i1, 92); - L1 : do { - if ((i3 | 0) > 0) { - i5 = 0; - do { - i6 = HEAP32[i4 + (i5 << 2) >> 2] | 0; - if ((i6 | 0) == -1) { - break L1; - } - _save(i1, i6); - i5 = i5 + 1 | 0; - } while ((i5 | 0) < (i3 | 0)); - } - } while (0); - _lexerror(i1, i2, 289); -} -function _pushglobalfuncname(i1, i4) { - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - _lua_getinfo(i1, 1768, i4) | 0; - _lua_rawgeti(i1, -1001e3, 2); - i4 = i3 + 1 | 0; - if ((_findfield(i1, i4, 2) | 0) == 0) { - _lua_settop(i1, i3); - i4 = 0; - STACKTOP = i2; - return i4 | 0; - } else { - _lua_copy(i1, -1, i4); - _lua_settop(i1, -3); - i4 = 1; - STACKTOP = i2; - return i4 | 0; - } - return 0; -} -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; - HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0]; - HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0]; - HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0]; - HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0]; -} -function _lua_pushlstring(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i1); - } - i4 = _luaS_newlstr(i1, i3, i4) | 0; - i3 = i1 + 8 | 0; - i1 = HEAP32[i3 >> 2] | 0; - HEAP32[i1 >> 2] = i4; - HEAP32[i1 + 8 >> 2] = HEAPU8[i4 + 4 | 0] | 0 | 64; - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 16; - STACKTOP = i2; - return i4 + 16 | 0; -} -function _ll_searchpath(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i5 = _luaL_checklstring(i1, 1, 0) | 0; - i4 = _luaL_checklstring(i1, 2, 0) | 0; - i3 = _luaL_optlstring(i1, 3, 4936, 0) | 0; - if ((_searchpath(i1, i5, i4, i3, _luaL_optlstring(i1, 4, 4848, 0) | 0) | 0) != 0) { - i5 = 1; - STACKTOP = i2; - return i5 | 0; - } - _lua_pushnil(i1); - _lua_insert(i1, -2); - i5 = 2; - STACKTOP = i2; - return i5 | 0; -} -function _math_log(i1) { - i1 = i1 | 0; - var i2 = 0, d3 = 0.0, d4 = 0.0; - i2 = STACKTOP; - d3 = +_luaL_checknumber(i1, 1); - do { - if ((_lua_type(i1, 2) | 0) >= 1) { - d4 = +_luaL_checknumber(i1, 2); - if (d4 == 10.0) { - d3 = +_log10(+d3); - break; - } else { - d3 = +Math_log(+d3) / +Math_log(+d4); - break; - } - } else { - d3 = +Math_log(+d3); - } - } while (0); - _lua_pushnumber(i1, d3); - STACKTOP = i2; - return 1; -} -function _luaT_init(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i3 = i1 + 12 | 0; - i4 = 0; - do { - i5 = _luaS_new(i1, HEAP32[8576 + (i4 << 2) >> 2] | 0) | 0; - HEAP32[(HEAP32[i3 >> 2] | 0) + (i4 << 2) + 184 >> 2] = i5; - i5 = (HEAP32[(HEAP32[i3 >> 2] | 0) + (i4 << 2) + 184 >> 2] | 0) + 5 | 0; - HEAP8[i5] = HEAPU8[i5] | 0 | 32; - i4 = i4 + 1 | 0; - } while ((i4 | 0) != 17); - STACKTOP = i2; - return; -} -function _f_gc(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i3 = _luaL_checkudata(i1, 1, 2832) | 0; - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - STACKTOP = i2; - return 0; - } - if ((HEAP32[i3 >> 2] | 0) == 0) { - STACKTOP = i2; - return 0; - } - i4 = (_luaL_checkudata(i1, 1, 2832) | 0) + 4 | 0; - i3 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = 0; - FUNCTION_TABLE_ii[i3 & 255](i1) | 0; - STACKTOP = i2; - return 0; -} -function ___shlim(i1, i5) { - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0, i4 = 0, i6 = 0; - i2 = STACKTOP; - HEAP32[i1 + 104 >> 2] = i5; - i4 = HEAP32[i1 + 8 >> 2] | 0; - i3 = HEAP32[i1 + 4 >> 2] | 0; - i6 = i4 - i3 | 0; - HEAP32[i1 + 108 >> 2] = i6; - if ((i5 | 0) != 0 & (i6 | 0) > (i5 | 0)) { - HEAP32[i1 + 100 >> 2] = i3 + i5; - STACKTOP = i2; - return; - } else { - HEAP32[i1 + 100 >> 2] = i4; - STACKTOP = i2; - return; - } -} -function _lua_sethook(i4, i6, i1, i5) { - i4 = i4 | 0; - i6 = i6 | 0; - i1 = i1 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0; - i2 = (i6 | 0) == 0 | (i1 | 0) == 0; - i3 = HEAP32[i4 + 16 >> 2] | 0; - if (!((HEAP8[i3 + 18 | 0] & 1) == 0)) { - HEAP32[i4 + 20 >> 2] = HEAP32[i3 + 28 >> 2]; - } - HEAP32[i4 + 52 >> 2] = i2 ? 0 : i6; - HEAP32[i4 + 44 >> 2] = i5; - HEAP32[i4 + 48 >> 2] = i5; - HEAP8[i4 + 40 | 0] = i2 ? 0 : i1 & 255; - return 1; -} -function _io_tmpfile(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = _lua_newuserdata(i1, 8) | 0; - i3 = i4 + 4 | 0; - HEAP32[i3 >> 2] = 0; - _luaL_setmetatable(i1, 2832); - HEAP32[i4 >> 2] = 0; - HEAP32[i3 >> 2] = 156; - i3 = _tmpfile() | 0; - HEAP32[i4 >> 2] = i3; - if ((i3 | 0) != 0) { - i4 = 1; - STACKTOP = i2; - return i4 | 0; - } - i4 = _luaL_fileresult(i1, 0, 0) | 0; - STACKTOP = i2; - return i4 | 0; -} -function _luaL_checkstack(i1, i5, i4) { - i1 = i1 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - if ((_lua_checkstack(i1, i5 + 20 | 0) | 0) != 0) { - STACKTOP = i2; - return; - } - if ((i4 | 0) == 0) { - _luaL_error(i1, 1240, i3) | 0; - STACKTOP = i2; - return; - } else { - HEAP32[i3 >> 2] = i4; - _luaL_error(i1, 1216, i3) | 0; - STACKTOP = i2; - return; - } -} -function _b_rshift(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i4 = _luaL_checkunsigned(i1, 1) | 0; - i3 = _luaL_checkinteger(i1, 2) | 0; - i5 = 0 - i3 | 0; - if ((i3 | 0) > 0) { - i5 = (i3 | 0) > 31 ? 0 : i4 >>> i3; - _lua_pushunsigned(i1, i5); - STACKTOP = i2; - return 1; - } else { - i5 = (i5 | 0) > 31 ? 0 : i4 << i5; - _lua_pushunsigned(i1, i5); - STACKTOP = i2; - return 1; - } - return 0; -} -function _b_lshift(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i3 = _luaL_checkunsigned(i1, 1) | 0; - i4 = _luaL_checkinteger(i1, 2) | 0; - if ((i4 | 0) < 0) { - i4 = 0 - i4 | 0; - i4 = (i4 | 0) > 31 ? 0 : i3 >>> i4; - _lua_pushunsigned(i1, i4); - STACKTOP = i2; - return 1; - } else { - i4 = (i4 | 0) > 31 ? 0 : i3 << i4; - _lua_pushunsigned(i1, i4); - STACKTOP = i2; - return 1; - } - return 0; -} -function _math_min(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0; - i2 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - d5 = +_luaL_checknumber(i1, 1); - if ((i3 | 0) >= 2) { - i4 = 2; - while (1) { - d6 = +_luaL_checknumber(i1, i4); - d5 = d6 < d5 ? d6 : d5; - if ((i4 | 0) == (i3 | 0)) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - } - _lua_pushnumber(i1, d5); - STACKTOP = i2; - return 1; -} -function _math_max(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0; - i2 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - d5 = +_luaL_checknumber(i1, 1); - if ((i3 | 0) >= 2) { - i4 = 2; - while (1) { - d6 = +_luaL_checknumber(i1, i4); - d5 = d6 > d5 ? d6 : d5; - if ((i4 | 0) == (i3 | 0)) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - } - _lua_pushnumber(i1, d5); - STACKTOP = i2; - return 1; -} -function _io_type(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - _luaL_checkany(i1, 1); - i3 = _luaL_testudata(i1, 1, 2832) | 0; - if ((i3 | 0) == 0) { - _lua_pushnil(i1); - STACKTOP = i2; - return 1; - } - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - _lua_pushlstring(i1, 3456, 11) | 0; - STACKTOP = i2; - return 1; - } else { - _lua_pushlstring(i1, 3472, 4) | 0; - STACKTOP = i2; - return 1; - } - return 0; -} -function _luaF_newLclosure(i3, i2) { - i3 = i3 | 0; - i2 = i2 | 0; - var i1 = 0, i4 = 0; - i1 = STACKTOP; - i3 = _luaC_newobj(i3, 6, (i2 << 2) + 16 | 0, 0, 0) | 0; - HEAP32[i3 + 12 >> 2] = 0; - HEAP8[i3 + 6 | 0] = i2; - if ((i2 | 0) == 0) { - STACKTOP = i1; - return i3 | 0; - } - i4 = i3 + 16 | 0; - do { - i2 = i2 + -1 | 0; - HEAP32[i4 + (i2 << 2) >> 2] = 0; - } while ((i2 | 0) != 0); - STACKTOP = i1; - return i3 | 0; -} -function _io_flush(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - _lua_getfield(i1, -1001e3, 2800); - i3 = _lua_touserdata(i1, -1) | 0; - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - HEAP32[i4 >> 2] = 2804; - _luaL_error(i1, 3424, i4) | 0; - } - i4 = _luaL_fileresult(i1, (_fflush(HEAP32[i3 >> 2] | 0) | 0) == 0 | 0, 0) | 0; - STACKTOP = i2; - return i4 | 0; -} -function _b_test(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - if ((i3 | 0) < 1) { - i3 = 1; - } else { - i4 = 1; - i5 = -1; - while (1) { - i5 = (_luaL_checkunsigned(i1, i4) | 0) & i5; - if ((i4 | 0) == (i3 | 0)) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - i3 = (i5 | 0) != 0; - } - _lua_pushboolean(i1, i3 & 1); - STACKTOP = i2; - return 1; -} -function ___muldsi3(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i6 = i2 & 65535; - i4 = i1 & 65535; - i3 = Math_imul(i4, i6) | 0; - i5 = i2 >>> 16; - i4 = (i3 >>> 16) + (Math_imul(i4, i5) | 0) | 0; - i1 = i1 >>> 16; - i2 = Math_imul(i1, i6) | 0; - return (tempRet0 = (i4 >>> 16) + (Math_imul(i1, i5) | 0) + (((i4 & 65535) + i2 | 0) >>> 16) | 0, i4 + i2 << 16 | i3 & 65535 | 0) | 0; -} -function _str_dump(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 1056 | 0; - i3 = i2 + 8 | 0; - _luaL_checktype(i1, 1, 6); - _lua_settop(i1, 1); - _luaL_buffinit(i1, i3); - if ((_lua_dump(i1, 2, i3) | 0) == 0) { - _luaL_pushresult(i3); - i3 = 1; - STACKTOP = i2; - return i3 | 0; - } else { - i3 = _luaL_error(i1, 7888, i2) | 0; - STACKTOP = i2; - return i3 | 0; - } - return 0; -} -function ___memrchr(i2, i3, i5) { - i2 = i2 | 0; - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i4 = 0; - i1 = STACKTOP; - i3 = i3 & 255; - while (1) { - i4 = i5 + -1 | 0; - if ((i5 | 0) == 0) { - i5 = 0; - i2 = 4; - break; - } - i5 = i2 + i4 | 0; - if ((HEAP8[i5] | 0) == i3 << 24 >> 24) { - i2 = 4; - break; - } else { - i5 = i4; - } - } - if ((i2 | 0) == 4) { - STACKTOP = i1; - return i5 | 0; - } - return 0; -} -function _luaL_getsubtable(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_getfield(i1, i3, i4); - if ((_lua_type(i1, -1) | 0) == 5) { - i4 = 1; - STACKTOP = i2; - return i4 | 0; - } - _lua_settop(i1, -2); - i3 = _lua_absindex(i1, i3) | 0; - _lua_createtable(i1, 0, 0); - _lua_pushvalue(i1, -1); - _lua_setfield(i1, i3, i4); - i4 = 0; - STACKTOP = i2; - return i4 | 0; -} -function _luaE_freeCI(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = (HEAP32[i1 + 16 >> 2] | 0) + 12 | 0; - i3 = HEAP32[i4 >> 2] | 0; - HEAP32[i4 >> 2] = 0; - if ((i3 | 0) == 0) { - STACKTOP = i2; - return; - } - while (1) { - i4 = HEAP32[i3 + 12 >> 2] | 0; - _luaM_realloc_(i1, i3, 40, 0) | 0; - if ((i4 | 0) == 0) { - break; - } else { - i3 = i4; - } - } - STACKTOP = i2; - return; -} -function _f_tostring(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - i4 = _luaL_checkudata(i1, 1, 2832) | 0; - if ((HEAP32[i4 + 4 >> 2] | 0) == 0) { - _lua_pushlstring(i1, 3040, 13) | 0; - STACKTOP = i2; - return 1; - } else { - HEAP32[i3 >> 2] = HEAP32[i4 >> 2]; - _lua_pushfstring(i1, 3056, i3) | 0; - STACKTOP = i2; - return 1; - } - return 0; -} -function _lua_newuserdata(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0; - i2 = STACKTOP; - if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i1); - } - i3 = _luaS_newudata(i1, i3, 0) | 0; - i1 = i1 + 8 | 0; - i4 = HEAP32[i1 >> 2] | 0; - HEAP32[i4 >> 2] = i3; - HEAP32[i4 + 8 >> 2] = 71; - HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 16; - STACKTOP = i2; - return i3 + 24 | 0; -} -function _luaL_pushresultsize(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i5 = i1 + 8 | 0; - i4 = (HEAP32[i5 >> 2] | 0) + i3 | 0; - HEAP32[i5 >> 2] = i4; - i3 = HEAP32[i1 + 12 >> 2] | 0; - _lua_pushlstring(i3, HEAP32[i1 >> 2] | 0, i4) | 0; - if ((HEAP32[i1 >> 2] | 0) == (i1 + 16 | 0)) { - STACKTOP = i2; - return; - } - _lua_remove(i3, -2); - STACKTOP = i2; - return; -} -function _luaL_testudata(i2, i5, i4) { - i2 = i2 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - i3 = _lua_touserdata(i2, i5) | 0; - if ((i3 | 0) != 0 ? (_lua_getmetatable(i2, i5) | 0) != 0 : 0) { - _lua_getfield(i2, -1001e3, i4); - i5 = (_lua_rawequal(i2, -1, -2) | 0) == 0; - _lua_settop(i2, -3); - i2 = i5 ? 0 : i3; - } else { - i2 = 0; - } - STACKTOP = i1; - return i2 | 0; -} -function _finishpcall(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((_lua_checkstack(i1, 1) | 0) == 0) { - _lua_settop(i1, 0); - _lua_pushboolean(i1, 0); - _lua_pushstring(i1, 9632) | 0; - i3 = 2; - STACKTOP = i2; - return i3 | 0; - } else { - _lua_pushboolean(i1, i3); - _lua_replace(i1, 1); - i3 = _lua_gettop(i1) | 0; - STACKTOP = i2; - return i3 | 0; - } - return 0; -} -function _searcher_preload(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - i3 = _luaL_checklstring(i1, 1, 0) | 0; - _lua_getfield(i1, -1001e3, 4592); - _lua_getfield(i1, -1, i3); - if ((_lua_type(i1, -1) | 0) != 0) { - STACKTOP = i2; - return 1; - } - HEAP32[i4 >> 2] = i3; - _lua_pushfstring(i1, 5096, i4) | 0; - STACKTOP = i2; - return 1; -} -function _luaB_auxwrap(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i3 = STACKTOP; - i2 = _lua_tothread(i1, -1001001) | 0; - i2 = _auxresume(i1, i2, _lua_gettop(i1) | 0) | 0; - if ((i2 | 0) >= 0) { - STACKTOP = i3; - return i2 | 0; - } - if ((_lua_isstring(i1, -1) | 0) == 0) { - _lua_error(i1) | 0; - } - _luaL_where(i1, 1); - _lua_insert(i1, -2); - _lua_concat(i1, 2); - _lua_error(i1) | 0; - return 0; -} -function _ll_loadlib(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _luaL_checklstring(i1, 1, 0) | 0; - i3 = _ll_loadfunc(i1, i3, _luaL_checklstring(i1, 2, 0) | 0) | 0; - if ((i3 | 0) == 0) { - i3 = 1; - STACKTOP = i2; - return i3 | 0; - } - _lua_pushnil(i1); - _lua_insert(i1, -2); - _lua_pushstring(i1, (i3 | 0) == 1 ? 5176 : 5184) | 0; - i3 = 3; - STACKTOP = i2; - return i3 | 0; -} -function _luaS_hash(i2, i4, i3) { - i2 = i2 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i1 = 0, i5 = 0; - i1 = STACKTOP; - i5 = i3 ^ i4; - i3 = (i4 >>> 5) + 1 | 0; - if (i3 >>> 0 > i4 >>> 0) { - STACKTOP = i1; - return i5 | 0; - } - do { - i5 = (i5 << 5) + (i5 >>> 2) + (HEAPU8[i2 + (i4 + -1) | 0] | 0) ^ i5; - i4 = i4 - i3 | 0; - } while (!(i4 >>> 0 < i3 >>> 0)); - STACKTOP = i1; - return i5 | 0; -} -function _b_and(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - if ((i3 | 0) < 1) { - i5 = -1; - } else { - i4 = 1; - i5 = -1; - while (1) { - i5 = (_luaL_checkunsigned(i1, i4) | 0) & i5; - if ((i4 | 0) == (i3 | 0)) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - } - _lua_pushunsigned(i1, i5); - STACKTOP = i2; - return 1; -} -function _luaopen_string(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_createtable(i1, 0, 14); - _luaL_setfuncs(i1, 6920, 0); - _lua_createtable(i1, 0, 1); - _lua_pushlstring(i1, 7040, 0) | 0; - _lua_pushvalue(i1, -2); - _lua_setmetatable(i1, -2) | 0; - _lua_settop(i1, -2); - _lua_pushvalue(i1, -2); - _lua_setfield(i1, -2, 7048); - _lua_settop(i1, -2); - STACKTOP = i2; - return 1; -} -function _b_xor(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - if ((i3 | 0) < 1) { - i5 = 0; - } else { - i4 = 1; - i5 = 0; - while (1) { - i5 = (_luaL_checkunsigned(i1, i4) | 0) ^ i5; - if ((i4 | 0) == (i3 | 0)) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - } - _lua_pushunsigned(i1, i5); - STACKTOP = i2; - return 1; -} -function _luaB_assert(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - if ((_lua_toboolean(i1, 1) | 0) == 0) { - HEAP32[i3 >> 2] = _luaL_optlstring(i1, 2, 10216, 0) | 0; - i3 = _luaL_error(i1, 10208, i3) | 0; - STACKTOP = i2; - return i3 | 0; - } else { - i3 = _lua_gettop(i1) | 0; - STACKTOP = i2; - return i3 | 0; - } - return 0; -} -function _b_or(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - if ((i3 | 0) < 1) { - i5 = 0; - } else { - i4 = 1; - i5 = 0; - while (1) { - i5 = _luaL_checkunsigned(i1, i4) | 0 | i5; - if ((i4 | 0) == (i3 | 0)) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - } - _lua_pushunsigned(i1, i5); - STACKTOP = i2; - return 1; -} -function _io_write(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - _lua_getfield(i1, -1001e3, 2800); - i3 = _lua_touserdata(i1, -1) | 0; - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - HEAP32[i4 >> 2] = 2804; - _luaL_error(i1, 3424, i4) | 0; - } - i4 = _g_write(i1, HEAP32[i3 >> 2] | 0, 1) | 0; - STACKTOP = i2; - return i4 | 0; -} -function _luaK_checkstack(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0; - i2 = STACKTOP; - i3 = (HEAPU8[i1 + 48 | 0] | 0) + i3 | 0; - i4 = (HEAP32[i1 >> 2] | 0) + 78 | 0; - if ((i3 | 0) <= (HEAPU8[i4] | 0 | 0)) { - STACKTOP = i2; - return; - } - if ((i3 | 0) > 249) { - _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10536); - } - HEAP8[i4] = i3; - STACKTOP = i2; - return; -} -function _io_read(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - _lua_getfield(i1, -1001e3, 2776); - i3 = _lua_touserdata(i1, -1) | 0; - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - HEAP32[i4 >> 2] = 2780; - _luaL_error(i1, 3424, i4) | 0; - } - i4 = _g_read(i1, HEAP32[i3 >> 2] | 0, 1) | 0; - STACKTOP = i2; - return i4 | 0; -} -function _db_setupvalue(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - _luaL_checkany(i1, 3); - i3 = _luaL_checkinteger(i1, 2) | 0; - _luaL_checktype(i1, 1, 6); - i3 = _lua_setupvalue(i1, 1, i3) | 0; - if ((i3 | 0) == 0) { - i3 = 0; - STACKTOP = i2; - return i3 | 0; - } - _lua_pushstring(i1, i3) | 0; - _lua_insert(i1, -1); - i3 = 1; - STACKTOP = i2; - return i3 | 0; -} -function ___uflow(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i1; - if ((HEAP32[i2 + 8 >> 2] | 0) == 0 ? (___toread(i2) | 0) != 0 : 0) { - i2 = -1; - } else { - if ((FUNCTION_TABLE_iiii[HEAP32[i2 + 32 >> 2] & 3](i2, i3, 1) | 0) == 1) { - i2 = HEAPU8[i3] | 0; - } else { - i2 = -1; - } - } - STACKTOP = i1; - return i2 | 0; -} -function _llvm_cttz_i32(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = HEAP8[cttz_i8 + (i1 & 255) | 0] | 0; - if ((i2 | 0) < 8) return i2 | 0; - i2 = HEAP8[cttz_i8 + (i1 >> 8 & 255) | 0] | 0; - if ((i2 | 0) < 8) return i2 + 8 | 0; - i2 = HEAP8[cttz_i8 + (i1 >> 16 & 255) | 0] | 0; - if ((i2 | 0) < 8) return i2 + 16 | 0; - return (HEAP8[cttz_i8 + (i1 >>> 24) | 0] | 0) + 24 | 0; -} -function _llvm_ctlz_i32(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = HEAP8[ctlz_i8 + (i1 >>> 24) | 0] | 0; - if ((i2 | 0) < 8) return i2 | 0; - i2 = HEAP8[ctlz_i8 + (i1 >> 16 & 255) | 0] | 0; - if ((i2 | 0) < 8) return i2 + 8 | 0; - i2 = HEAP8[ctlz_i8 + (i1 >> 8 & 255) | 0] | 0; - if ((i2 | 0) < 8) return i2 + 16 | 0; - return (HEAP8[ctlz_i8 + (i1 & 255) | 0] | 0) + 24 | 0; -} -function _luaO_ceillog2(i2) { - i2 = i2 | 0; - var i1 = 0, i3 = 0, i4 = 0; - i1 = STACKTOP; - i2 = i2 + -1 | 0; - if (i2 >>> 0 > 255) { - i3 = 0; - while (1) { - i3 = i3 + 8 | 0; - i4 = i2 >>> 8; - if (i2 >>> 0 > 65535) { - i2 = i4; - } else { - i2 = i4; - break; - } - } - } else { - i3 = 0; - } - STACKTOP = i1; - return (HEAPU8[5208 + i2 | 0] | 0) + i3 | 0; -} -function _os_exit(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - if ((_lua_type(i1, 1) | 0) == 1) { - i3 = (_lua_toboolean(i1, 1) | 0) == 0 | 0; - } else { - i3 = _luaL_optinteger(i1, 1, 0) | 0; - } - if ((_lua_toboolean(i1, 2) | 0) != 0) { - _lua_close(i1); - } - if ((i1 | 0) == 0) { - STACKTOP = i2; - return 0; - } else { - _exit(i3 | 0); - } - return 0; -} -function _luaL_newmetatable(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_getfield(i1, -1001e3, i3); - if ((_lua_type(i1, -1) | 0) != 0) { - i3 = 0; - STACKTOP = i2; - return i3 | 0; - } - _lua_settop(i1, -2); - _lua_createtable(i1, 0, 0); - _lua_pushvalue(i1, -1); - _lua_setfield(i1, -1001e3, i3); - i3 = 1; - STACKTOP = i2; - return i3 | 0; -} -function _luaH_free(i1, i4) { - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = HEAP32[i4 + 16 >> 2] | 0; - if ((i3 | 0) != 8016) { - _luaM_realloc_(i1, i3, 32 << (HEAPU8[i4 + 7 | 0] | 0), 0) | 0; - } - _luaM_realloc_(i1, HEAP32[i4 + 12 >> 2] | 0, HEAP32[i4 + 28 >> 2] << 4, 0) | 0; - _luaM_realloc_(i1, i4, 32, 0) | 0; - STACKTOP = i2; - return; -} -function _luaO_int2fb(i3) { - i3 = i3 | 0; - var i1 = 0, i2 = 0, i4 = 0; - i1 = STACKTOP; - if (i3 >>> 0 < 8) { - STACKTOP = i1; - return i3 | 0; - } - if (i3 >>> 0 > 15) { - i2 = 1; - do { - i4 = i3 + 1 | 0; - i3 = i4 >>> 1; - i2 = i2 + 1 | 0; - } while (i4 >>> 0 > 31); - i2 = i2 << 3; - } else { - i2 = 8; - } - i4 = i2 | i3 + -8; - STACKTOP = i1; - return i4 | 0; -} -function _luaK_codek(i3, i4, i1) { - i3 = i3 | 0; - i4 = i4 | 0; - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i4 = i4 << 6; - if ((i1 | 0) < 262144) { - i4 = _luaK_code(i3, i4 | i1 << 14 | 1) | 0; - STACKTOP = i2; - return i4 | 0; - } else { - i4 = _luaK_code(i3, i4 | 2) | 0; - _luaK_code(i3, i1 << 6 | 39) | 0; - STACKTOP = i2; - return i4 | 0; - } - return 0; -} -function _luaB_xpcall(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _lua_gettop(i1) | 0; - if ((i3 | 0) <= 1) { - _luaL_argerror(i1, 2, 9616) | 0; - } - _lua_pushvalue(i1, 1); - _lua_copy(i1, 2, 1); - _lua_replace(i1, 2); - i3 = _finishpcall(i1, (_lua_pcallk(i1, i3 + -2 | 0, -1, 1, 0, 166) | 0) == 0 | 0) | 0; - STACKTOP = i2; - return i3 | 0; -} -function _luaS_newudata(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0; - i2 = STACKTOP; - if (i3 >>> 0 > 4294967269) { - _luaM_toobig(i1); - } else { - i1 = _luaC_newobj(i1, 7, i3 + 24 | 0, 0, 0) | 0; - HEAP32[i1 + 16 >> 2] = i3; - HEAP32[i1 + 8 >> 2] = 0; - HEAP32[i1 + 12 >> 2] = i4; - STACKTOP = i2; - return i1 | 0; - } - return 0; -} -function _lua_dump(i1, i4, i5) { - i1 = i1 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = HEAP32[i1 + 8 >> 2] | 0; - if ((HEAP32[i3 + -8 >> 2] | 0) != 70) { - i5 = 1; - STACKTOP = i2; - return i5 | 0; - } - i5 = _luaU_dump(i1, HEAP32[(HEAP32[i3 + -16 >> 2] | 0) + 12 >> 2] | 0, i4, i5, 0) | 0; - STACKTOP = i2; - return i5 | 0; -} -function _luaS_eqlngstr(i2, i4) { - i2 = i2 | 0; - i4 = i4 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - i3 = HEAP32[i2 + 12 >> 2] | 0; - if ((i2 | 0) != (i4 | 0)) { - if ((i3 | 0) == (HEAP32[i4 + 12 >> 2] | 0)) { - i2 = (_memcmp(i2 + 16 | 0, i4 + 16 | 0, i3) | 0) == 0; - } else { - i2 = 0; - } - } else { - i2 = 1; - } - STACKTOP = i1; - return i2 & 1 | 0; -} -function _luaC_barrier_(i4, i3, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i4 = HEAP32[i4 + 12 >> 2] | 0; - if ((HEAPU8[i4 + 61 | 0] | 0) < 2) { - _reallymarkobject(i4, i1); - STACKTOP = i2; - return; - } else { - i3 = i3 + 5 | 0; - HEAP8[i3] = HEAP8[i4 + 60 | 0] & 3 | HEAP8[i3] & 184; - STACKTOP = i2; - return; - } -} -function _db_getupvalue(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _luaL_checkinteger(i1, 2) | 0; - _luaL_checktype(i1, 1, 6); - i3 = _lua_getupvalue(i1, 1, i3) | 0; - if ((i3 | 0) == 0) { - i3 = 0; - STACKTOP = i2; - return i3 | 0; - } - _lua_pushstring(i1, i3) | 0; - _lua_insert(i1, -2); - i3 = 2; - STACKTOP = i2; - return i3 | 0; -} -function _os_execute(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i4 = _luaL_optlstring(i1, 1, 0, 0) | 0; - i3 = _system(i4 | 0) | 0; - if ((i4 | 0) == 0) { - _lua_pushboolean(i1, i3); - i4 = 1; - STACKTOP = i2; - return i4 | 0; - } else { - i4 = _luaL_execresult(i1, i3) | 0; - STACKTOP = i2; - return i4 | 0; - } - return 0; -} -function _lua_pushfstring(i4, i5, i1) { - i4 = i4 | 0; - i5 = i5 | 0; - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - if ((HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i4); - } - HEAP32[i3 >> 2] = i1; - i5 = _luaO_pushvfstring(i4, i5, i3) | 0; - STACKTOP = i2; - return i5 | 0; -} -function _luaB_dofile(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _luaL_optlstring(i1, 1, 0, 0) | 0; - _lua_settop(i1, 1); - if ((_luaL_loadfilex(i1, i3, 0) | 0) == 0) { - _lua_callk(i1, 0, -1, 0, 164); - i3 = (_lua_gettop(i1) | 0) + -1 | 0; - STACKTOP = i2; - return i3 | 0; - } else { - _lua_error(i1) | 0; - } - return 0; -} -function _f_write(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = _luaL_checkudata(i1, 1, 2832) | 0; - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - _luaL_error(i1, 3080, i2) | 0; - } - i3 = HEAP32[i3 >> 2] | 0; - _lua_pushvalue(i1, 1); - i3 = _g_write(i1, i3, 2) | 0; - STACKTOP = i2; - return i3 | 0; -} -function _lua_getctx(i3, i1) { - i3 = i3 | 0; - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i3 = HEAP32[i3 + 16 >> 2] | 0; - if ((HEAP8[i3 + 18 | 0] & 8) == 0) { - i3 = 0; - STACKTOP = i2; - return i3 | 0; - } - if ((i1 | 0) != 0) { - HEAP32[i1 >> 2] = HEAP32[i3 + 24 >> 2]; - } - i3 = HEAPU8[i3 + 37 | 0] | 0; - STACKTOP = i2; - return i3 | 0; -} -function _f_flush(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = _luaL_checkudata(i1, 1, 2832) | 0; - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - _luaL_error(i1, 3080, i2) | 0; - } - i3 = _luaL_fileresult(i1, (_fflush(HEAP32[i3 >> 2] | 0) | 0) == 0 | 0, 0) | 0; - STACKTOP = i2; - return i3 | 0; -} -function _os_tmpname(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i3 = i2 + 4 | 0; - if ((_tmpnam(i3 | 0) | 0) == 0) { - i3 = _luaL_error(i1, 5824, i2) | 0; - STACKTOP = i2; - return i3 | 0; - } else { - _lua_pushstring(i1, i3) | 0; - i3 = 1; - STACKTOP = i2; - return i3 | 0; - } - return 0; -} -function _traceback(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _lua_tolstring(i1, 1, 0) | 0; - if ((i3 | 0) == 0) { - if ((_lua_type(i1, 1) | 0) >= 1 ? (_luaL_callmeta(i1, 1, 216) | 0) == 0 : 0) { - _lua_pushlstring(i1, 232, 18) | 0; - } - } else { - _luaL_traceback(i1, i1, i3, 1); - } - STACKTOP = i2; - return 1; -} -function _luaH_new(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = _luaC_newobj(i1, 5, 32, 0, 0) | 0; - HEAP32[i1 + 8 >> 2] = 0; - HEAP8[i1 + 6 | 0] = -1; - HEAP32[i1 + 12 >> 2] = 0; - HEAP32[i1 + 28 >> 2] = 0; - HEAP32[i1 + 16 >> 2] = 8016; - HEAP8[i1 + 7 | 0] = 0; - HEAP32[i1 + 20 >> 2] = 8016; - STACKTOP = i2; - return i1 | 0; -} -function _luaL_len(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2 + 4 | 0; - _lua_len(i1, i3); - i3 = _lua_tointegerx(i1, -1, i4) | 0; - if ((HEAP32[i4 >> 2] | 0) == 0) { - _luaL_error(i1, 1352, i2) | 0; - } - _lua_settop(i1, -2); - STACKTOP = i2; - return i3 | 0; -} -function _getS(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0, i5 = 0; - i3 = STACKTOP; - i5 = i2 + 4 | 0; - i4 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) == 0) { - i5 = 0; - STACKTOP = i3; - return i5 | 0; - } - HEAP32[i1 >> 2] = i4; - HEAP32[i5 >> 2] = 0; - i5 = HEAP32[i2 >> 2] | 0; - STACKTOP = i3; - return i5 | 0; -} -function _luaC_runtilstate(i1, i4) { - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = (HEAP32[i1 + 12 >> 2] | 0) + 61 | 0; - if ((1 << (HEAPU8[i3] | 0) & i4 | 0) != 0) { - STACKTOP = i2; - return; - } - do { - _singlestep(i1) | 0; - } while ((1 << (HEAPU8[i3] | 0) & i4 | 0) == 0); - STACKTOP = i2; - return; -} -function _luaX_init(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - i3 = 0; - do { - i4 = _luaS_new(i1, HEAP32[12096 + (i3 << 2) >> 2] | 0) | 0; - i5 = i4 + 5 | 0; - HEAP8[i5] = HEAPU8[i5] | 0 | 32; - i3 = i3 + 1 | 0; - HEAP8[i4 + 6 | 0] = i3; - } while ((i3 | 0) != 22); - STACKTOP = i2; - return; -} -function _luaK_indexed(i5, i1, i4) { - i5 = i5 | 0; - i1 = i1 | 0; - i4 = i4 | 0; - var i2 = 0, i3 = 0; - i3 = STACKTOP; - i2 = i1 + 8 | 0; - HEAP8[i2 + 2 | 0] = HEAP32[i2 >> 2]; - HEAP16[i2 >> 1] = _luaK_exp2RK(i5, i4) | 0; - HEAP8[i2 + 3 | 0] = (HEAP32[i1 >> 2] | 0) == 8 ? 8 : 7; - HEAP32[i1 >> 2] = 9; - STACKTOP = i3; - return; -} -function _db_setuservalue(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((_lua_type(i1, 1) | 0) == 2) { - _luaL_argerror(i1, 1, 11680) | 0; - } - _luaL_checktype(i1, 1, 7); - if ((_lua_type(i1, 2) | 0) >= 1) { - _luaL_checktype(i1, 2, 5); - } - _lua_settop(i1, 2); - _lua_setuservalue(i1, 1); - STACKTOP = i2; - return 1; -} -function _ll_seeall(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checktype(i1, 1, 5); - if ((_lua_getmetatable(i1, 1) | 0) == 0) { - _lua_createtable(i1, 0, 1); - _lua_pushvalue(i1, -1); - _lua_setmetatable(i1, 1) | 0; - } - _lua_rawgeti(i1, -1001e3, 2); - _lua_setfield(i1, -2, 5168); - STACKTOP = i2; - return 0; -} -function _luaL_loadbufferx(i3, i5, i4, i2, i1) { - i3 = i3 | 0; - i5 = i5 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i6 = 0, i7 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i7 = i6; - HEAP32[i7 >> 2] = i5; - HEAP32[i7 + 4 >> 2] = i4; - i5 = _lua_load(i3, 2, i7, i2, i1) | 0; - STACKTOP = i6; - return i5 | 0; -} -function _luaT_gettm(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0; - i2 = STACKTOP; - i4 = _luaH_getstr(i1, i4) | 0; - if ((HEAP32[i4 + 8 >> 2] | 0) != 0) { - STACKTOP = i2; - return i4 | 0; - } - i4 = i1 + 6 | 0; - HEAP8[i4] = HEAPU8[i4] | 0 | 1 << i3; - i4 = 0; - STACKTOP = i2; - return i4 | 0; -} -function _luaL_pushresult(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = HEAP32[i1 + 12 >> 2] | 0; - _lua_pushlstring(i3, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 8 >> 2] | 0) | 0; - if ((HEAP32[i1 >> 2] | 0) == (i1 + 16 | 0)) { - STACKTOP = i2; - return; - } - _lua_remove(i3, -2); - STACKTOP = i2; - return; -} -function _resume_error(i1, i3, i2) { - i1 = i1 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - var i4 = 0; - i4 = i1 + 8 | 0; - HEAP32[i4 >> 2] = i2; - i3 = _luaS_new(i1, i3) | 0; - HEAP32[i2 >> 2] = i3; - HEAP32[i2 + 8 >> 2] = HEAPU8[i3 + 4 | 0] | 0 | 64; - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 16; - _luaD_throw(i1, -1); -} -function _lua_absindex(i3, i1) { - i3 = i3 | 0; - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((i1 + 1000999 | 0) >>> 0 > 1000999) { - i3 = i1; - STACKTOP = i2; - return i3 | 0; - } - i3 = ((HEAP32[i3 + 8 >> 2] | 0) - (HEAP32[HEAP32[i3 + 16 >> 2] >> 2] | 0) >> 4) + i1 | 0; - STACKTOP = i2; - return i3 | 0; -} -function ___uremdi3(i4, i3, i2, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i5 = 0, i6 = 0; - i6 = STACKTOP; - STACKTOP = STACKTOP + 8 | 0; - i5 = i6 | 0; - ___udivmoddi4(i4, i3, i2, i1, i5) | 0; - STACKTOP = i6; - return (tempRet0 = HEAP32[i5 + 4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0; -} -function _f_read(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = _luaL_checkudata(i1, 1, 2832) | 0; - if ((HEAP32[i3 + 4 >> 2] | 0) == 0) { - _luaL_error(i1, 3080, i2) | 0; - } - i3 = _g_read(i1, HEAP32[i3 >> 2] | 0, 2) | 0; - STACKTOP = i2; - return i3 | 0; -} -function _sort(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - _luaL_checktype(i1, 1, 5); - i3 = _luaL_len(i1, 1) | 0; - _luaL_checkstack(i1, 40, 8208); - if ((_lua_type(i1, 2) | 0) >= 1) { - _luaL_checktype(i1, 2, 6); - } - _lua_settop(i1, 2); - _auxsort(i1, 1, i3); - STACKTOP = i2; - return 0; -} -function _luaB_error(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = _luaL_optinteger(i1, 2, 1) | 0; - _lua_settop(i1, 1); - if (!((_lua_isstring(i1, 1) | 0) != 0 & (i2 | 0) > 0)) { - _lua_error(i1) | 0; - } - _luaL_where(i1, i2); - _lua_pushvalue(i1, 1); - _lua_concat(i1, 2); - _lua_error(i1) | 0; - return 0; -} -function _error(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = HEAP32[i1 >> 2] | 0; - HEAP32[i3 >> 2] = HEAP32[i1 + 12 >> 2]; - HEAP32[i3 + 4 >> 2] = i2; - _luaO_pushfstring(i4, 8840, i3) | 0; - _luaD_throw(HEAP32[i1 >> 2] | 0, 3); -} -function _ipairsaux(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _luaL_checkinteger(i1, 2) | 0; - _luaL_checktype(i1, 1, 5); - i3 = i3 + 1 | 0; - _lua_pushinteger(i1, i3); - _lua_rawgeti(i1, 1, i3); - i1 = (_lua_type(i1, -1) | 0) == 0; - STACKTOP = i2; - return (i1 ? 1 : 2) | 0; -} -function _panic(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - i3 = HEAP32[_stderr >> 2] | 0; - HEAP32[i4 >> 2] = _lua_tolstring(i1, -1, 0) | 0; - _fprintf(i3 | 0, 1656, i4 | 0) | 0; - _fflush(i3 | 0) | 0; - STACKTOP = i2; - return 0; -} -function _testSetjmp(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0; - while ((i3 | 0) < 20) { - i4 = HEAP32[i2 + (i3 << 2) >> 2] | 0; - if ((i4 | 0) == 0) break; - if ((i4 | 0) == (i1 | 0)) { - return HEAP32[i2 + ((i3 << 2) + 4) >> 2] | 0; - } - i3 = i3 + 2 | 0; - } - return 0; -} -function _luaopen_math(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_createtable(i1, 0, 28); - _luaL_setfuncs(i1, 3576, 0); - _lua_pushnumber(i1, 3.141592653589793); - _lua_setfield(i1, -2, 3808); - _lua_pushnumber(i1, inf); - _lua_setfield(i1, -2, 3816); - STACKTOP = i2; - return 1; -} -function _luaopen_base(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_rawgeti(i1, -1001e3, 2); - _lua_rawgeti(i1, -1001e3, 2); - _lua_setfield(i1, -2, 9144); - _luaL_setfuncs(i1, 9152, 0); - _lua_pushlstring(i1, 9344, 7) | 0; - _lua_setfield(i1, -2, 9352); - STACKTOP = i2; - return 1; -} -function _luaE_extendCI(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i3 = STACKTOP; - i2 = _luaM_realloc_(i1, 0, 0, 40) | 0; - i1 = i1 + 16 | 0; - HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = HEAP32[i1 >> 2]; - HEAP32[i2 + 12 >> 2] = 0; - STACKTOP = i3; - return i2 | 0; -} -function _luaB_getmetatable(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checkany(i1, 1); - if ((_lua_getmetatable(i1, 1) | 0) == 0) { - _lua_pushnil(i1); - STACKTOP = i2; - return 1; - } else { - _luaL_getmetafield(i1, 1, 9704) | 0; - STACKTOP = i2; - return 1; - } - return 0; -} -function _lua_pushunsigned(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var d3 = 0.0; - if ((i2 | 0) > -1) { - d3 = +(i2 | 0); - } else { - d3 = +(i2 >>> 0); - } - i2 = i1 + 8 | 0; - i1 = HEAP32[i2 >> 2] | 0; - HEAPF64[i1 >> 3] = d3; - HEAP32[i1 + 8 >> 2] = 3; - HEAP32[i2 >> 2] = i1 + 16; - return; -} -function _lua_pushthread(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = i1 + 8 | 0; - i3 = HEAP32[i2 >> 2] | 0; - HEAP32[i3 >> 2] = i1; - HEAP32[i3 + 8 >> 2] = 72; - HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16; - return (HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 172 >> 2] | 0) == (i1 | 0) | 0; -} -function _gctm(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _luaL_len(i1, 1) | 0; - if ((i3 | 0) <= 0) { - STACKTOP = i2; - return 0; - } - do { - _lua_rawgeti(i1, 1, i3); - _lua_settop(i1, -2); - i3 = i3 + -1 | 0; - } while ((i3 | 0) > 0); - STACKTOP = i2; - return 0; -} -function ___muldi3(i4, i2, i3, i1) { - i4 = i4 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i5 = 0, i6 = 0; - i5 = i4; - i6 = i3; - i4 = ___muldsi3(i5, i6) | 0; - i3 = tempRet0; - return (tempRet0 = (Math_imul(i2, i6) | 0) + (Math_imul(i1, i5) | 0) + i3 | i3 & 0, i4 | 0 | 0) | 0; -} -function _luaH_resizearray(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0, i5 = 0; - i2 = STACKTOP; - if ((HEAP32[i3 + 16 >> 2] | 0) == 8016) { - i5 = 0; - } else { - i5 = 1 << (HEAPU8[i3 + 7 | 0] | 0); - } - _luaH_resize(i1, i3, i4, i5); - STACKTOP = i2; - return; -} -function _luaK_stringK(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i3; - HEAP32[i4 >> 2] = i2; - HEAP32[i4 + 8 >> 2] = HEAPU8[i2 + 4 | 0] | 0 | 64; - i2 = _addk(i1, i4, i4) | 0; - STACKTOP = i3; - return i2 | 0; -} -function _math_modf(i1) { - i1 = i1 | 0; - var i2 = 0, d3 = 0.0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i2; - d3 = +_modf(+(+_luaL_checknumber(i1, 1)), i4 | 0); - _lua_pushnumber(i1, +HEAPF64[i4 >> 3]); - _lua_pushnumber(i1, d3); - STACKTOP = i2; - return 2; -} -function _os_setlocale(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _luaL_optlstring(i1, 1, 0, 0) | 0; - _lua_pushstring(i1, _setlocale(HEAP32[5960 + ((_luaL_checkoption(i1, 2, 6016, 5984) | 0) << 2) >> 2] | 0, i3 | 0) | 0) | 0; - STACKTOP = i2; - return 1; -} -function _luaB_pcall(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checkany(i1, 1); - _lua_pushnil(i1); - _lua_insert(i1, 1); - i1 = _finishpcall(i1, (_lua_pcallk(i1, (_lua_gettop(i1) | 0) + -2 | 0, -1, 0, 0, 166) | 0) == 0 | 0) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _error_expected(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = HEAP32[i1 + 52 >> 2] | 0; - HEAP32[i3 >> 2] = _luaX_token2str(i1, i2) | 0; - _luaX_syntaxerror(i1, _luaO_pushfstring(i4, 6328, i3) | 0); -} -function _lua_pushvfstring(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) { - _luaC_step(i1); - } - i4 = _luaO_pushvfstring(i1, i3, i4) | 0; - STACKTOP = i2; - return i4 | 0; -} -function _db_setmetatable(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _lua_type(i1, 2) | 0; - if (!((i3 | 0) == 0 | (i3 | 0) == 5)) { - _luaL_argerror(i1, 2, 11536) | 0; - } - _lua_settop(i1, 2); - _lua_setmetatable(i1, 1) | 0; - STACKTOP = i2; - return 1; -} -function _b_rrot(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i3 = 0 - (_luaL_checkinteger(i1, 2) | 0) | 0; - i4 = _luaL_checkunsigned(i1, 1) | 0; - i3 = i3 & 31; - _lua_pushunsigned(i1, i4 >>> (32 - i3 | 0) | i4 << i3); - STACKTOP = i2; - return 1; -} -function _luaC_step(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = HEAP32[i1 + 12 >> 2] | 0; - if ((HEAP8[i3 + 63 | 0] | 0) == 0) { - _luaE_setdebt(i3, -1600); - STACKTOP = i2; - return; - } else { - _luaC_forcestep(i1); - STACKTOP = i2; - return; - } -} -function _math_frexp(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - _lua_pushnumber(i1, +_frexp(+(+_luaL_checknumber(i1, 1)), i3 | 0)); - _lua_pushinteger(i1, HEAP32[i3 >> 2] | 0); - STACKTOP = i2; - return 2; -} -function _luaO_pushfstring(i2, i1, i3) { - i2 = i2 | 0; - i1 = i1 | 0; - i3 = i3 | 0; - var i4 = 0, i5 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i5 = i4; - HEAP32[i5 >> 2] = i3; - i3 = _luaO_pushvfstring(i2, i1, i5) | 0; - STACKTOP = i4; - return i3 | 0; -} -function _luaO_hexavalue(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((HEAP8[i1 + 10913 | 0] & 2) == 0) { - i1 = (i1 | 32) + -87 | 0; - STACKTOP = i2; - return i1 | 0; - } else { - i1 = i1 + -48 | 0; - STACKTOP = i2; - return i1 | 0; - } - return 0; -} -function _b_lrot(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - i3 = _luaL_checkinteger(i1, 2) | 0; - i4 = _luaL_checkunsigned(i1, 1) | 0; - i3 = i3 & 31; - _lua_pushunsigned(i1, i4 >>> (32 - i3 | 0) | i4 << i3); - STACKTOP = i2; - return 1; -} -function _f_lines(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - if ((HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) + 4 >> 2] | 0) == 0) { - _luaL_error(i1, 3080, i2) | 0; - } - _aux_lines(i1, 0); - STACKTOP = i2; - return 1; -} -function _luaC_barrierback_(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i2 = HEAP32[i2 + 12 >> 2] | 0; - i3 = i1 + 5 | 0; - HEAP8[i3] = HEAP8[i3] & 251; - i2 = i2 + 88 | 0; - HEAP32[i1 + 24 >> 2] = HEAP32[i2 >> 2]; - HEAP32[i2 >> 2] = i1; - return; -} -function _os_rename(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _luaL_checklstring(i1, 1, 0) | 0; - i1 = _luaL_fileresult(i1, (_rename(i3 | 0, _luaL_checklstring(i1, 2, 0) | 0) | 0) == 0 | 0, 0) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _bitshift64Ashr(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - if ((i1 | 0) < 32) { - tempRet0 = i2 >> i1; - return i3 >>> i1 | (i2 & (1 << i1) - 1) << 32 - i1; - } - tempRet0 = (i2 | 0) < 0 ? -1 : 0; - return i2 >> i1 - 32 | 0; -} -function _luaB_cowrap(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - _luaL_checktype(i1, 1, 6); - i3 = _lua_newthread(i1) | 0; - _lua_pushvalue(i1, 1); - _lua_xmove(i1, i3, 1); - _lua_pushcclosure(i1, 167, 1); - STACKTOP = i2; - return 1; -} -function _gmatch(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checklstring(i1, 1, 0) | 0; - _luaL_checklstring(i1, 2, 0) | 0; - _lua_settop(i1, 2); - _lua_pushinteger(i1, 0); - _lua_pushcclosure(i1, 163, 3); - STACKTOP = i2; - return 1; -} -function _luaB_next(i2) { - i2 = i2 | 0; - var i1 = 0; - i1 = STACKTOP; - _luaL_checktype(i2, 1, 5); - _lua_settop(i2, 2); - if ((_lua_next(i2, 1) | 0) == 0) { - _lua_pushnil(i2); - i2 = 1; - } else { - i2 = 2; - } - STACKTOP = i1; - return i2 | 0; -} -function _luaK_codeABC(i5, i3, i4, i2, i1) { - i5 = i5 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i6 = 0; - i6 = STACKTOP; - i5 = _luaK_code(i5, i4 << 6 | i3 | i2 << 23 | i1 << 14) | 0; - STACKTOP = i6; - return i5 | 0; -} -function _luaH_set(i2, i4, i5) { - i2 = i2 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0; - i1 = STACKTOP; - i3 = _luaH_get(i4, i5) | 0; - if ((i3 | 0) == 5192) { - i3 = _luaH_newkey(i2, i4, i5) | 0; - } - STACKTOP = i1; - return i3 | 0; -} -function _luaZ_init(i4, i1, i3, i2) { - i4 = i4 | 0; - i1 = i1 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - HEAP32[i1 + 16 >> 2] = i4; - HEAP32[i1 + 8 >> 2] = i3; - HEAP32[i1 + 12 >> 2] = i2; - HEAP32[i1 >> 2] = 0; - HEAP32[i1 + 4 >> 2] = 0; - return; -} -function _lua_pushlightuserdata(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i2 = i2 + 8 | 0; - i3 = HEAP32[i2 >> 2] | 0; - HEAP32[i3 >> 2] = i1; - HEAP32[i3 + 8 >> 2] = 2; - HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16; - return; -} -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; -} -function _bitshift64Shl(i2, i3, i1) { - i2 = i2 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - if ((i1 | 0) < 32) { - tempRet0 = i3 << i1 | (i2 & (1 << i1) - 1 << 32 - i1) >>> 32 - i1; - return i2 << i1; - } - tempRet0 = i2 << i1 - 32; - return 0; -} -function _luaB_rawlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - if (((_lua_type(i1, 1) | 0) & -2 | 0) != 4) { - _luaL_argerror(i1, 1, 9784) | 0; - } - _lua_pushinteger(i1, _lua_rawlen(i1, 1) | 0); - STACKTOP = i2; - return 1; -} -function _l_alloc(i3, i1, i4, i2) { - i3 = i3 | 0; - i1 = i1 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i3 = STACKTOP; - if ((i2 | 0) == 0) { - _free(i1); - i1 = 0; - } else { - i1 = _realloc(i1, i2) | 0; - } - STACKTOP = i3; - return i1 | 0; -} -function _bitshift64Lshr(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - if ((i1 | 0) < 32) { - tempRet0 = i2 >>> i1; - return i3 >>> i1 | (i2 & (1 << i1) - 1) << 32 - i1; - } - tempRet0 = 0; - return i2 >>> i1 - 32 | 0; -} -function _luaG_aritherror(i3, i1, i2) { - i3 = i3 | 0; - i1 = i1 | 0; - i2 = i2 | 0; - var i4 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = (_luaV_tonumber(i1, i4) | 0) == 0; - _luaG_typeerror(i3, i4 ? i1 : i2, 1928); -} -function _str_len(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - _luaL_checklstring(i1, 1, i3) | 0; - _lua_pushinteger(i1, HEAP32[i3 >> 2] | 0); - STACKTOP = i2; - return 1; -} -function _luaL_optinteger(i3, i4, i2) { - i3 = i3 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - var i1 = 0; - i1 = STACKTOP; - if ((_lua_type(i3, i4) | 0) >= 1) { - i2 = _luaL_checkinteger(i3, i4) | 0; - } - STACKTOP = i1; - return i2 | 0; -} -function _os_difftime(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = ~~+_luaL_checknumber(i1, 1); - _lua_pushnumber(i1, +_difftime(i3 | 0, ~~+_luaL_optnumber(i1, 2, 0.0) | 0)); - STACKTOP = i2; - return 1; -} -function _lua_pushboolean(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i2 = i2 + 8 | 0; - i3 = HEAP32[i2 >> 2] | 0; - HEAP32[i3 >> 2] = (i1 | 0) != 0; - HEAP32[i3 + 8 >> 2] = 1; - HEAP32[i2 >> 2] = i3 + 16; - return; -} -function _os_remove(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = _luaL_checklstring(i1, 1, 0) | 0; - i1 = _luaL_fileresult(i1, (_remove(i3 | 0) | 0) == 0 | 0, i3) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _luaopen_table(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_createtable(i1, 0, 7); - _luaL_setfuncs(i1, 8088, 0); - _lua_getfield(i1, -1, 8152); - _lua_setglobal(i1, 8152); - STACKTOP = i2; - return 1; -} -function _lua_pushinteger(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i2 = i2 + 8 | 0; - i3 = HEAP32[i2 >> 2] | 0; - HEAPF64[i3 >> 3] = +(i1 | 0); - HEAP32[i3 + 8 >> 2] = 3; - HEAP32[i2 >> 2] = i3 + 16; - return; -} -function _luaB_rawset(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checktype(i1, 1, 5); - _luaL_checkany(i1, 2); - _luaL_checkany(i1, 3); - _lua_settop(i1, 3); - _lua_rawset(i1, 1); - STACKTOP = i2; - return 1; -} -function _luaE_setdebt(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = i2 + 12 | 0; - i2 = i2 + 8 | 0; - HEAP32[i2 >> 2] = (HEAP32[i3 >> 2] | 0) - i1 + (HEAP32[i2 >> 2] | 0); - HEAP32[i3 >> 2] = i1; - return; -} -function _luaB_cocreate(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - _luaL_checktype(i1, 1, 6); - i3 = _lua_newthread(i1) | 0; - _lua_pushvalue(i1, 1); - _lua_xmove(i1, i3, 1); - STACKTOP = i2; - return 1; -} -function _io_noclose(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) + 4 >> 2] = 154; - _lua_pushnil(i1); - _lua_pushlstring(i1, 2840, 26) | 0; - STACKTOP = i2; - return 2; -} -function _io_fclose(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = _luaL_fileresult(i1, (_fclose(HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) >> 2] | 0) | 0) == 0 | 0, 0) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _luaL_optnumber(i3, i4, d2) { - i3 = i3 | 0; - i4 = i4 | 0; - d2 = +d2; - var i1 = 0; - i1 = STACKTOP; - if ((_lua_type(i3, i4) | 0) >= 1) { - d2 = +_luaL_checknumber(i3, i4); - } - STACKTOP = i1; - return +d2; -} -function _math_atan2(i1) { - i1 = i1 | 0; - var i2 = 0, d3 = 0.0; - i2 = STACKTOP; - d3 = +_luaL_checknumber(i1, 1); - _lua_pushnumber(i1, +Math_atan2(+d3, +(+_luaL_checknumber(i1, 2)))); - STACKTOP = i2; - return 1; -} -function _luaK_codeABx(i4, i2, i3, i1) { - i4 = i4 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i1 = i1 | 0; - var i5 = 0; - i5 = STACKTOP; - i4 = _luaK_code(i4, i3 << 6 | i2 | i1 << 14) | 0; - STACKTOP = i5; - return i4 | 0; -} -function _luaF_newCclosure(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - i2 = _luaC_newobj(i2, 38, (i1 << 4) + 16 | 0, 0, 0) | 0; - HEAP8[i2 + 6 | 0] = i1; - STACKTOP = i3; - return i2 | 0; -} -function _math_pow(i1) { - i1 = i1 | 0; - var i2 = 0, d3 = 0.0; - i2 = STACKTOP; - d3 = +_luaL_checknumber(i1, 1); - _lua_pushnumber(i1, +Math_pow(+d3, +(+_luaL_checknumber(i1, 2)))); - STACKTOP = i2; - return 1; -} -function _math_ldexp(i1) { - i1 = i1 | 0; - var i2 = 0, d3 = 0.0; - i2 = STACKTOP; - d3 = +_luaL_checknumber(i1, 1); - _lua_pushnumber(i1, +_ldexp(d3, _luaL_checkinteger(i1, 2) | 0)); - STACKTOP = i2; - return 1; -} -function _luaF_newupval(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = _luaC_newobj(i1, 10, 32, 0, 0) | 0; - HEAP32[i1 + 8 >> 2] = i1 + 16; - HEAP32[i1 + 24 >> 2] = 0; - STACKTOP = i2; - return i1 | 0; -} -function _lua_pushnumber(i2, d1) { - i2 = i2 | 0; - d1 = +d1; - var i3 = 0; - i2 = i2 + 8 | 0; - i3 = HEAP32[i2 >> 2] | 0; - HEAPF64[i3 >> 3] = d1; - HEAP32[i3 + 8 >> 2] = 3; - HEAP32[i2 >> 2] = i3 + 16; - return; -} -function _math_fmod(i1) { - i1 = i1 | 0; - var i2 = 0, d3 = 0.0; - i2 = STACKTOP; - d3 = +_luaL_checknumber(i1, 1); - _lua_pushnumber(i1, +_fmod(+d3, +(+_luaL_checknumber(i1, 2)))); - STACKTOP = i2; - return 1; -} -function _luaG_concaterror(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - i4 = HEAP32[i2 + 8 >> 2] | 0; - _luaG_typeerror(i3, (i4 & 15 | 0) == 4 | (i4 | 0) == 3 ? i1 : i2, 1912); -} -function _luaB_rawequal(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checkany(i1, 1); - _luaL_checkany(i1, 2); - _lua_pushboolean(i1, _lua_rawequal(i1, 1, 2) | 0); - STACKTOP = i2; - return 1; -} -function _db_getuservalue(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((_lua_type(i1, 1) | 0) == 7) { - _lua_getuservalue(i1, 1); - } else { - _lua_pushnil(i1); - } - STACKTOP = i2; - return 1; -} -function _strchr(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - i2 = ___strchrnul(i2, i1) | 0; - STACKTOP = i3; - return ((HEAP8[i2] | 0) == (i1 & 255) << 24 >> 24 ? i2 : 0) | 0; -} -function runPostSets() {} -function _rand_r(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = (Math_imul(HEAP32[i1 >> 2] | 0, 31010991) | 0) + 1735287159 & 2147483647; - HEAP32[i1 >> 2] = i2; - return i2 | 0; -} -function _luaL_checkany(i1, i3) { - i1 = i1 | 0; - i3 = i3 | 0; - var i2 = 0; - i2 = STACKTOP; - if ((_lua_type(i1, i3) | 0) == -1) { - _luaL_argerror(i1, i3, 1256) | 0; - } - STACKTOP = i2; - return; -} -function _i64Subtract(i2, i4, i1, i3) { - i2 = i2 | 0; - i4 = i4 | 0; - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 - i3 - (i1 >>> 0 > i2 >>> 0 | 0) >>> 0; - return (tempRet0 = i4, i2 - i1 >>> 0 | 0) | 0; -} -function _db_getmetatable(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checkany(i1, 1); - if ((_lua_getmetatable(i1, 1) | 0) == 0) { - _lua_pushnil(i1); - } - STACKTOP = i2; - return 1; -} -function _luaB_rawget(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checktype(i1, 1, 5); - _luaL_checkany(i1, 2); - _lua_settop(i1, 2); - _lua_rawget(i1, 1); - STACKTOP = i2; - return 1; -} -function _luaB_type(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checkany(i1, 1); - _lua_pushstring(i1, _lua_typename(i1, _lua_type(i1, 1) | 0) | 0) | 0; - STACKTOP = i2; - return 1; -} -function dynCall_iiiii(i5, i4, i3, i2, i1) { - i5 = i5 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_iiiii[i5 & 3](i4 | 0, i3 | 0, i2 | 0, i1 | 0) | 0; -} -function _lstop(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - _lua_sethook(i1, 0, 0, 0) | 0; - _luaL_error(i1, 200, i2) | 0; - STACKTOP = i2; - return; -} -function _i64Add(i1, i3, i4, i2) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i2 = i2 | 0; - i4 = i1 + i4 >>> 0; - return (tempRet0 = i3 + i2 + (i4 >>> 0 < i1 >>> 0 | 0) >>> 0, i4 | 0) | 0; -} -function _luaK_ret(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - i4 = STACKTOP; - _luaK_code(i3, i2 << 6 | (i1 << 23) + 8388608 | 31) | 0; - STACKTOP = i4; - return; -} -function _strpbrk(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - i1 = i2 + (_strcspn(i2, i1) | 0) | 0; - STACKTOP = i3; - return ((HEAP8[i1] | 0) != 0 ? i1 : 0) | 0; -} -function _luaL_setmetatable(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0; - i3 = STACKTOP; - _lua_getfield(i1, -1001e3, i2); - _lua_setmetatable(i1, -2) | 0; - STACKTOP = i3; - return; -} -function _lua_atpanic(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = (HEAP32[i2 + 12 >> 2] | 0) + 168 | 0; - i2 = HEAP32[i3 >> 2] | 0; - HEAP32[i3 >> 2] = i1; - return i2 | 0; -} -function _luaL_newstate() { - var i1 = 0, i2 = 0; - i2 = STACKTOP; - i1 = _lua_newstate(1, 0) | 0; - if ((i1 | 0) != 0) { - _lua_atpanic(i1, 143) | 0; - } - STACKTOP = i2; - return i1 | 0; -} -function _luaL_buffinit(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - HEAP32[i1 + 12 >> 2] = i2; - HEAP32[i1 >> 2] = i1 + 16; - HEAP32[i1 + 8 >> 2] = 0; - HEAP32[i1 + 4 >> 2] = 1024; - return; -} -function _strrchr(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0; - i3 = STACKTOP; - i2 = ___memrchr(i1, i2, (_strlen(i1 | 0) | 0) + 1 | 0) | 0; - STACKTOP = i3; - return i2 | 0; -} -function _luaK_fixline(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - HEAP32[(HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] | 0) + ((HEAP32[i1 + 20 >> 2] | 0) + -1 << 2) >> 2] = i2; - return; -} -function _luaX_lookahead(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i3 = STACKTOP; - i2 = _llex(i1, i1 + 40 | 0) | 0; - HEAP32[i1 + 32 >> 2] = i2; - STACKTOP = i3; - return i2 | 0; -} -function _f_call(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - _luaD_call(i2, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0, 0); - STACKTOP = i3; - return; -} -function _io_pclose(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checkudata(i1, 1, 2832) | 0; - i1 = _luaL_execresult(i1, -1) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _luaS_new(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - i2 = _luaS_newlstr(i2, i1, _strlen(i1 | 0) | 0) | 0; - STACKTOP = i3; - return i2 | 0; -} -function _os_getenv(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushstring(i1, _getenv(_luaL_checklstring(i1, 1, 0) | 0) | 0) | 0; - STACKTOP = i2; - return 1; -} -function _math_rad(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +_luaL_checknumber(i1, 1) * .017453292519943295); - STACKTOP = i2; - return 1; -} -function _math_deg(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +_luaL_checknumber(i1, 1) / .017453292519943295); - STACKTOP = i2; - return 1; -} -function _writer(i4, i2, i1, i3) { - i4 = i4 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - i3 = i3 | 0; - i4 = STACKTOP; - _luaL_addlstring(i3, i2, i1); - STACKTOP = i4; - return 0; -} -function _luaL_addstring(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - _luaL_addlstring(i2, i1, _strlen(i1 | 0) | 0); - STACKTOP = i3; - return; -} -function _pcallcont(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = _finishpcall(i1, (_lua_getctx(i1, 0) | 0) == 1 | 0) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _luaopen_coroutine(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_createtable(i1, 0, 6); - _luaL_setfuncs(i1, 10656, 0); - STACKTOP = i2; - return 1; -} -function _lua_version(i1) { - i1 = i1 | 0; - if ((i1 | 0) == 0) { - i1 = 920; - } else { - i1 = HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 176 >> 2] | 0; - } - return i1 | 0; -} -function _lua_pushnil(i1) { - i1 = i1 | 0; - var i2 = 0; - i1 = i1 + 8 | 0; - i2 = HEAP32[i1 >> 2] | 0; - HEAP32[i2 + 8 >> 2] = 0; - HEAP32[i1 >> 2] = i2 + 16; - return; -} -function _math_floor(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_floor(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _laction(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _signal(i1 | 0, 0) | 0; - _lua_sethook(HEAP32[48] | 0, 1, 11, 1) | 0; - STACKTOP = i2; - return; -} -function dynCall_iiii(i4, i3, i2, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_iiii[i4 & 3](i3 | 0, i2 | 0, i1 | 0) | 0; -} -function _luaopen_debug(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_createtable(i1, 0, 16); - _luaL_setfuncs(i1, 11176, 0); - STACKTOP = i2; - return 1; -} -function _luaopen_bit32(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_createtable(i1, 0, 12); - _luaL_setfuncs(i1, 10240, 0); - STACKTOP = i2; - return 1; -} -function _math_sqrt(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_sqrt(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_ceil(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_ceil(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_atan(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_atan(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_asin(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_asin(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_acos(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_acos(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _lua_close(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _close_state(HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 172 >> 2] | 0); - STACKTOP = i2; - return; -} -function _dothecall(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - i2 = STACKTOP; - _luaD_call(i1, (HEAP32[i1 + 8 >> 2] | 0) + -32 | 0, 0, 0); - STACKTOP = i2; - return; -} -function _math_tan(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_tan(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_sin(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_sin(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_log10(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +_log10(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_exp(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_exp(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_cos(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_cos(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_abs(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +Math_abs(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_randomseed(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _srand(_luaL_checkunsigned(i1, 1) | 0); - _rand() | 0; - STACKTOP = i2; - return 0; -} -function _luaopen_os(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_createtable(i1, 0, 11); - _luaL_setfuncs(i1, 5624, 0); - STACKTOP = i2; - return 1; -} -function _math_tanh(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +_tanh(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_sinh(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +_sinh(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _math_cosh(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +_cosh(+(+_luaL_checknumber(i1, 1)))); - STACKTOP = i2; - return 1; -} -function _luaB_yield(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = _lua_yieldk(i1, _lua_gettop(i1) | 0, 0, 0) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _luaB_tostring(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _luaL_checkany(i1, 1); - _luaL_tolstring(i1, 1, 0) | 0; - STACKTOP = i2; - return 1; -} -function _growstack(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - _luaD_growstack(i2, HEAP32[i1 >> 2] | 0); - STACKTOP = i3; - return; -} -function ___udivdi3(i4, i3, i2, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - i4 = ___udivmoddi4(i4, i3, i2, i1, 0) | 0; - return i4 | 0; -} -function _b_not(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushunsigned(i1, ~(_luaL_checkunsigned(i1, 1) | 0)); - STACKTOP = i2; - return 1; -} -function _luaO_fb2int(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1 >>> 3 & 31; - if ((i2 | 0) != 0) { - i1 = (i1 & 7 | 8) << i2 + -1; - } - return i1 | 0; -} -function _luaB_corunning(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushboolean(i1, _lua_pushthread(i1) | 0); - STACKTOP = i2; - return 2; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 7 & -8; - return i2 | 0; -} -function _strcoll(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - i2 = _strcmp(i2, i1) | 0; - STACKTOP = i3; - return i2 | 0; -} -function _os_clock(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushnumber(i1, +(_clock() | 0) / 1.0e6); - STACKTOP = i2; - return 1; -} -function _dofilecont(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = (_lua_gettop(i1) | 0) + -1 | 0; - STACKTOP = i2; - return i1 | 0; -} -function _scalbnl(d2, i1) { - d2 = +d2; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - d2 = +_scalbn(d2, i1); - STACKTOP = i3; - return +d2; -} -function _tolower(i1) { - i1 = i1 | 0; - if ((i1 | 0) < 65) return i1 | 0; - if ((i1 | 0) > 90) return i1 | 0; - return i1 - 65 + 97 | 0; -} -function _lua_gettop(i1) { - i1 = i1 | 0; - return (HEAP32[i1 + 8 >> 2] | 0) - ((HEAP32[HEAP32[i1 + 16 >> 2] >> 2] | 0) + 16) >> 4 | 0; -} -function dynCall_iii(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_iii[i3 & 1](i2 | 0, i1 | 0) | 0; -} -function _str_match(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = _str_find_aux(i1, 0) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _luaM_toobig(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - _luaG_runerror(i1, 4144, i2); -} -function _luaK_getlabel(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = HEAP32[i1 + 20 >> 2] | 0; - HEAP32[i1 + 24 >> 2] = i2; - return i2 | 0; -} -function _ldexp(d2, i1) { - d2 = +d2; - i1 = i1 | 0; - var i3 = 0; - i3 = STACKTOP; - d2 = +_scalbn(d2, i1); - STACKTOP = i3; - return +d2; -} -function _str_find(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - i1 = _str_find_aux(i1, 1) | 0; - STACKTOP = i2; - return i1 | 0; -} -function _db_getregistry(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _lua_pushvalue(i1, -1001e3); - STACKTOP = i2; - return 1; -} -function _luaB_ipairs(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _pairsmeta(i1, 9960, 1, 165); - STACKTOP = i2; - return 3; -} -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1; - while (HEAP8[i2] | 0) { - i2 = i2 + 1 | 0; - } - return i2 - i1 | 0; -} -function _luaB_pairs(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _pairsmeta(i1, 9864, 0, 93); - STACKTOP = i2; - return 3; -} -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if ((__THREW__ | 0) == 0) { - __THREW__ = i1; - threwValue = i2; - } -} -function _io_output(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _g_iofile(i1, 2800, 3512); - STACKTOP = i2; - return 1; -} -function dynCall_vii(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_vii[i3 & 15](i2 | 0, i1 | 0); -} -function _io_input(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - _g_iofile(i1, 2776, 3480); - STACKTOP = i2; - return 1; -} -function _semerror(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - HEAP32[i2 + 16 >> 2] = 0; - _luaX_syntaxerror(i2, i1); -} -function _luaX_syntaxerror(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - _lexerror(i1, i2, HEAP32[i1 + 16 >> 2] | 0); -} -function b4(i1, i2, i3, i4) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - abort(4); - return 0; -} -function _lua_typename(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - return HEAP32[8528 + (i1 + 1 << 2) >> 2] | 0; -} -function dynCall_ii(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_ii[i2 & 255](i1 | 0) | 0; -} -function dynCall_vi(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_vi[i2 & 1](i1 | 0); -} -function b0(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - abort(0); - return 0; -} -function _lua_gethookmask(i1) { - i1 = i1 | 0; - return HEAPU8[i1 + 40 | 0] | 0 | 0; -} -function _lua_gethookcount(i1) { - i1 = i1 | 0; - return HEAP32[i1 + 44 >> 2] | 0; -} -function _lua_status(i1) { - i1 = i1 | 0; - return HEAPU8[i1 + 6 | 0] | 0 | 0; -} -function _lua_gethook(i1) { - i1 = i1 | 0; - return HEAP32[i1 + 52 >> 2] | 0; -} -function b5(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - abort(5); - return 0; -} -function _lua_error(i1) { - i1 = i1 | 0; - _luaG_errormsg(i1); - return 0; -} -function b2(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - abort(2); -} -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} -function setTempRet9(i1) { - i1 = i1 | 0; - tempRet9 = i1; -} -function setTempRet8(i1) { - i1 = i1 | 0; - tempRet8 = i1; -} -function setTempRet7(i1) { - i1 = i1 | 0; - tempRet7 = i1; -} -function setTempRet6(i1) { - i1 = i1 | 0; - tempRet6 = i1; -} -function setTempRet5(i1) { - i1 = i1 | 0; - tempRet5 = i1; -} -function setTempRet4(i1) { - i1 = i1 | 0; - tempRet4 = i1; -} -function setTempRet3(i1) { - i1 = i1 | 0; - tempRet3 = i1; -} -function setTempRet2(i1) { - i1 = i1 | 0; - tempRet2 = i1; -} -function setTempRet1(i1) { - i1 = i1 | 0; - tempRet1 = i1; -} -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} -function b3(i1) { - i1 = i1 | 0; - abort(3); - return 0; -} -function _rand() { - return _rand_r(___rand_seed) | 0; -} -function stackSave() { - return STACKTOP | 0; -} -function b1(i1) { - i1 = i1 | 0; - abort(1); -} - -// EMSCRIPTEN_END_FUNCS - var FUNCTION_TABLE_iiii = [b0,_getF,_getS,_generic_reader]; - var FUNCTION_TABLE_vi = [b1,_laction]; - var FUNCTION_TABLE_vii = [b2,_lstop,_growstack,_f_call,_resume,_unroll,_f_parser,_dothecall,_f_luaopen,_hookf,b2,b2,b2,b2,b2,b2]; - var FUNCTION_TABLE_ii = [b3,_io_close,_io_flush,_io_input,_io_lines,_io_open,_io_output,_io_popen,_io_read,_io_tmpfile,_io_type,_io_write,_f_flush,_f_lines,_f_read,_f_seek,_f_setvbuf,_f_write,_f_gc,_f_tostring,_math_abs,_math_acos,_math_asin,_math_atan2,_math_atan,_math_ceil,_math_cosh,_math_cos,_math_deg - ,_math_exp,_math_floor,_math_fmod,_math_frexp,_math_ldexp,_math_log10,_math_log,_math_max,_math_min,_math_modf,_math_pow,_math_rad,_math_random,_math_randomseed,_math_sinh,_math_sin,_math_sqrt,_math_tanh,_math_tan,_ll_loadlib,_ll_searchpath,_ll_seeall,_ll_module,_ll_require,_os_clock,_os_date,_os_difftime,_os_execute,_os_exit,_os_getenv - ,_os_remove,_os_rename,_os_setlocale,_os_time,_os_tmpname,_str_byte,_str_char,_str_dump,_str_find,_str_format,_gmatch,_str_gsub,_str_len,_str_lower,_str_match,_str_rep,_str_reverse,_str_sub,_str_upper,_tconcat,_maxn,_tinsert,_pack,_unpack,_tremove,_sort,_luaB_assert,_luaB_collectgarbage,_luaB_dofile,_luaB_error - ,_luaB_getmetatable,_luaB_ipairs,_luaB_loadfile,_luaB_load,_luaB_next,_luaB_pairs,_luaB_pcall,_luaB_print,_luaB_rawequal,_luaB_rawlen,_luaB_rawget,_luaB_rawset,_luaB_select,_luaB_setmetatable,_luaB_tonumber,_luaB_tostring,_luaB_type,_luaB_xpcall,_b_arshift,_b_and,_b_not,_b_or,_b_xor,_b_test,_b_extract,_b_lrot,_b_lshift,_b_replace,_b_rrot,_b_rshift - ,_luaB_cocreate,_luaB_coresume,_luaB_corunning,_luaB_costatus,_luaB_cowrap,_luaB_yield,_db_debug,_db_getuservalue,_db_gethook,_db_getinfo,_db_getlocal,_db_getregistry,_db_getmetatable,_db_getupvalue,_db_upvaluejoin,_db_upvalueid,_db_setuservalue,_db_sethook,_db_setlocal,_db_setmetatable,_db_setupvalue,_db_traceback,_pmain,_traceback,_panic,_luaopen_base,_luaopen_package,_luaopen_coroutine,_luaopen_table,_luaopen_io - ,_luaopen_os,_luaopen_string,_luaopen_bit32,_luaopen_math,_luaopen_debug,_io_noclose,_io_readline,_io_fclose,_io_pclose,_gctm,_searcher_preload,_searcher_Lua,_searcher_C,_searcher_Croot,_gmatch_aux,_dofilecont,_ipairsaux,_pcallcont,_luaB_auxwrap,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3 - ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3 - ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3 - ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3]; - var FUNCTION_TABLE_iiiii = [b4,_l_alloc,_writer,b4]; - var FUNCTION_TABLE_iii = [b5,_lua_newstate]; - - return { _testSetjmp: _testSetjmp, _i64Subtract: _i64Subtract, _free: _free, _main: _main, _rand_r: _rand_r, _realloc: _realloc, _i64Add: _i64Add, _tolower: _tolower, _saveSetjmp: _saveSetjmp, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, _strlen: _strlen, _rand: _rand, _bitshift64Shl: _bitshift64Shl, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9, dynCall_iiii: dynCall_iiii, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_iiiii: dynCall_iiiii, dynCall_iii: dynCall_iii }; -}) -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "invoke_iiii": invoke_iiii, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_iiiii": invoke_iiiii, "invoke_iii": invoke_iii, "_isalnum": _isalnum, "_fabs": _fabs, "_frexp": _frexp, "_exp": _exp, "_fread": _fread, "__reallyNegative": __reallyNegative, "_longjmp": _longjmp, "__addDays": __addDays, "_fsync": _fsync, "_signal": _signal, "_rename": _rename, "_sbrk": _sbrk, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_sinh": _sinh, "_sysconf": _sysconf, "_close": _close, "_ferror": _ferror, "_clock": _clock, "_cos": _cos, "_tanh": _tanh, "_unlink": _unlink, "_write": _write, "__isLeapYear": __isLeapYear, "_ftell": _ftell, "_isupper": _isupper, "_gmtime_r": _gmtime_r, "_islower": _islower, "_tmpnam": _tmpnam, "_tmpfile": _tmpfile, "_send": _send, "_abort": _abort, "_setvbuf": _setvbuf, "_atan2": _atan2, "_setlocale": _setlocale, "_isgraph": _isgraph, "_modf": _modf, "_strerror_r": _strerror_r, "_fscanf": _fscanf, "___setErrNo": ___setErrNo, "_isalpha": _isalpha, "_srand": _srand, "_mktime": _mktime, "_putchar": _putchar, "_gmtime": _gmtime, "_localeconv": _localeconv, "_sprintf": _sprintf, "_localtime": _localtime, "_read": _read, "_fwrite": _fwrite, "_time": _time, "_fprintf": _fprintf, "_exit": _exit, "_freopen": _freopen, "_llvm_pow_f64": _llvm_pow_f64, "_fgetc": _fgetc, "_fmod": _fmod, "_lseek": _lseek, "_rmdir": _rmdir, "_asin": _asin, "_floor": _floor, "_pwrite": _pwrite, "_localtime_r": _localtime_r, "_tzset": _tzset, "_open": _open, "_remove": _remove, "_snprintf": _snprintf, "__scanString": __scanString, "_strftime": _strftime, "_fseek": _fseek, "_iscntrl": _iscntrl, "_isxdigit": _isxdigit, "_fclose": _fclose, "_log": _log, "_recv": _recv, "_tan": _tan, "_copysign": _copysign, "__getFloat": __getFloat, "_fputc": _fputc, "_ispunct": _ispunct, "_ceil": _ceil, "_isspace": _isspace, "_fopen": _fopen, "_sin": _sin, "_acos": _acos, "_cosh": _cosh, "___buildEnvironment": ___buildEnvironment, "_difftime": _difftime, "_ungetc": _ungetc, "_system": _system, "_fflush": _fflush, "_log10": _log10, "_fileno": _fileno, "__exit": __exit, "__arraySum": __arraySum, "_fgets": _fgets, "_atan": _atan, "_pread": _pread, "_mkport": _mkport, "_toupper": _toupper, "_feof": _feof, "___errno_location": ___errno_location, "_clearerr": _clearerr, "_getenv": _getenv, "_strerror": _strerror, "_emscripten_longjmp": _emscripten_longjmp, "__formatString": __formatString, "_fputs": _fputs, "_sqrt": _sqrt, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "cttz_i8": cttz_i8, "ctlz_i8": ctlz_i8, "___rand_seed": ___rand_seed, "NaN": NaN, "Infinity": Infinity, "_stderr": _stderr, "_stdin": _stdin, "_stdout": _stdout }, buffer); -var _testSetjmp = Module["_testSetjmp"] = asm["_testSetjmp"]; -var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"]; -var _free = Module["_free"] = asm["_free"]; -var _main = Module["_main"] = asm["_main"]; -var _rand_r = Module["_rand_r"] = asm["_rand_r"]; -var _realloc = Module["_realloc"] = asm["_realloc"]; -var _i64Add = Module["_i64Add"] = asm["_i64Add"]; -var _tolower = Module["_tolower"] = asm["_tolower"]; -var _saveSetjmp = Module["_saveSetjmp"] = asm["_saveSetjmp"]; -var _memset = Module["_memset"] = asm["_memset"]; -var _malloc = Module["_malloc"] = asm["_malloc"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _rand = Module["_rand"] = asm["_rand"]; -var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; -var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"]; -var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"]; -var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"]; -var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"]; -var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"]; -var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// TODO: strip out parts of this we do not need - -//======= begin closure i64 code ======= - -// Copyright 2009 The Closure Library Authors. All Rights Reserved. -// -// 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 Defines a Long class for representing a 64-bit two's-complement - * integer value, which faithfully simulates the behavior of a Java "long". This - * implementation is derived from LongLib in GWT. - * - */ - -var i64Math = (function() { // Emscripten wrapper - var goog = { math: {} }; - - - /** - * Constructs a 64-bit two's-complement integer, given its low and high 32-bit - * values as *signed* integers. See the from* functions below for more - * convenient ways of constructing Longs. - * - * The internal representation of a long is the two given signed, 32-bit values. - * We use 32-bit pieces because these are the size of integers on which - * Javascript performs bit-operations. For operations like addition and - * multiplication, we split each number into 16-bit pieces, which can easily be - * multiplied within Javascript's floating-point representation without overflow - * or change in sign. - * - * In the algorithms below, we frequently reduce the negative case to the - * positive case by negating the input(s) and then post-processing the result. - * Note that we must ALWAYS check specially whether those values are MIN_VALUE - * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - * a positive number, it overflows back into a negative). Not handling this - * case would often result in infinite recursion. - * - * @param {number} low The low (signed) 32 bits of the long. - * @param {number} high The high (signed) 32 bits of the long. - * @constructor - */ - goog.math.Long = function(low, high) { - /** - * @type {number} - * @private - */ - this.low_ = low | 0; // force into 32 signed bits. - - /** - * @type {number} - * @private - */ - this.high_ = high | 0; // force into 32 signed bits. - }; - - - // NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the - // from* methods on which they depend. - - - /** - * A cache of the Long representations of small integer values. - * @type {!Object} - * @private - */ - goog.math.Long.IntCache_ = {}; - - - /** - * Returns a Long representing the given (32-bit) integer value. - * @param {number} value The 32-bit integer in question. - * @return {!goog.math.Long} The corresponding Long value. - */ - goog.math.Long.fromInt = function(value) { - if (-128 <= value && value < 128) { - var cachedObj = goog.math.Long.IntCache_[value]; - if (cachedObj) { - return cachedObj; - } - } - - var obj = new goog.math.Long(value | 0, value < 0 ? -1 : 0); - if (-128 <= value && value < 128) { - goog.math.Long.IntCache_[value] = obj; - } - return obj; - }; - - - /** - * Returns a Long representing the given value, provided that it is a finite - * number. Otherwise, zero is returned. - * @param {number} value The number in question. - * @return {!goog.math.Long} The corresponding Long value. - */ - goog.math.Long.fromNumber = function(value) { - if (isNaN(value) || !isFinite(value)) { - return goog.math.Long.ZERO; - } else if (value <= -goog.math.Long.TWO_PWR_63_DBL_) { - return goog.math.Long.MIN_VALUE; - } else if (value + 1 >= goog.math.Long.TWO_PWR_63_DBL_) { - return goog.math.Long.MAX_VALUE; - } else if (value < 0) { - return goog.math.Long.fromNumber(-value).negate(); - } else { - return new goog.math.Long( - (value % goog.math.Long.TWO_PWR_32_DBL_) | 0, - (value / goog.math.Long.TWO_PWR_32_DBL_) | 0); - } - }; - - - /** - * Returns a Long representing the 64-bit integer that comes by concatenating - * the given high and low bits. Each is assumed to use 32 bits. - * @param {number} lowBits The low 32-bits. - * @param {number} highBits The high 32-bits. - * @return {!goog.math.Long} The corresponding Long value. - */ - goog.math.Long.fromBits = function(lowBits, highBits) { - return new goog.math.Long(lowBits, highBits); - }; - - - /** - * Returns a Long representation of the given string, written using the given - * radix. - * @param {string} str The textual representation of the Long. - * @param {number=} opt_radix The radix in which the text is written. - * @return {!goog.math.Long} The corresponding Long value. - */ - goog.math.Long.fromString = function(str, opt_radix) { - if (str.length == 0) { - throw Error('number format error: empty string'); - } - - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (str.charAt(0) == '-') { - return goog.math.Long.fromString(str.substring(1), radix).negate(); - } else if (str.indexOf('-') >= 0) { - throw Error('number format error: interior "-" character: ' + str); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 8)); - - var result = goog.math.Long.ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = goog.math.Long.fromNumber(Math.pow(radix, size)); - result = result.multiply(power).add(goog.math.Long.fromNumber(value)); - } else { - result = result.multiply(radixToPower); - result = result.add(goog.math.Long.fromNumber(value)); - } - } - return result; - }; - - - // NOTE: the compiler should inline these constant values below and then remove - // these variables, so there should be no runtime penalty for these. - - - /** - * Number used repeated below in calculations. This must appear before the - * first call to any from* function below. - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_16_DBL_ = 1 << 16; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_24_DBL_ = 1 << 24; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_32_DBL_ = - goog.math.Long.TWO_PWR_16_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_31_DBL_ = - goog.math.Long.TWO_PWR_32_DBL_ / 2; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_48_DBL_ = - goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_64_DBL_ = - goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_32_DBL_; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_63_DBL_ = - goog.math.Long.TWO_PWR_64_DBL_ / 2; - - - /** @type {!goog.math.Long} */ - goog.math.Long.ZERO = goog.math.Long.fromInt(0); - - - /** @type {!goog.math.Long} */ - goog.math.Long.ONE = goog.math.Long.fromInt(1); - - - /** @type {!goog.math.Long} */ - goog.math.Long.NEG_ONE = goog.math.Long.fromInt(-1); - - - /** @type {!goog.math.Long} */ - goog.math.Long.MAX_VALUE = - goog.math.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); - - - /** @type {!goog.math.Long} */ - goog.math.Long.MIN_VALUE = goog.math.Long.fromBits(0, 0x80000000 | 0); - - - /** - * @type {!goog.math.Long} - * @private - */ - goog.math.Long.TWO_PWR_24_ = goog.math.Long.fromInt(1 << 24); - - - /** @return {number} The value, assuming it is a 32-bit integer. */ - goog.math.Long.prototype.toInt = function() { - return this.low_; - }; - - - /** @return {number} The closest floating-point representation to this value. */ - goog.math.Long.prototype.toNumber = function() { - return this.high_ * goog.math.Long.TWO_PWR_32_DBL_ + - this.getLowBitsUnsigned(); - }; - - - /** - * @param {number=} opt_radix The radix in which the text should be written. - * @return {string} The textual representation of this value. - */ - goog.math.Long.prototype.toString = function(opt_radix) { - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (this.isZero()) { - return '0'; - } - - if (this.isNegative()) { - if (this.equals(goog.math.Long.MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = goog.math.Long.fromNumber(radix); - var div = this.div(radixLong); - var rem = div.multiply(radixLong).subtract(this); - return div.toString(radix) + rem.toInt().toString(radix); - } else { - return '-' + this.negate().toString(radix); - } - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 6)); - - var rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); - var digits = intval.toString(radix); - - rem = remDiv; - if (rem.isZero()) { - return digits + result; - } else { - while (digits.length < 6) { - digits = '0' + digits; - } - result = '' + digits + result; - } - } - }; - - - /** @return {number} The high 32-bits as a signed value. */ - goog.math.Long.prototype.getHighBits = function() { - return this.high_; - }; - - - /** @return {number} The low 32-bits as a signed value. */ - goog.math.Long.prototype.getLowBits = function() { - return this.low_; - }; - - - /** @return {number} The low 32-bits as an unsigned value. */ - goog.math.Long.prototype.getLowBitsUnsigned = function() { - return (this.low_ >= 0) ? - this.low_ : goog.math.Long.TWO_PWR_32_DBL_ + this.low_; - }; - - - /** - * @return {number} Returns the number of bits needed to represent the absolute - * value of this Long. - */ - goog.math.Long.prototype.getNumBitsAbs = function() { - if (this.isNegative()) { - if (this.equals(goog.math.Long.MIN_VALUE)) { - return 64; - } else { - return this.negate().getNumBitsAbs(); - } - } else { - var val = this.high_ != 0 ? this.high_ : this.low_; - for (var bit = 31; bit > 0; bit--) { - if ((val & (1 << bit)) != 0) { - break; - } - } - return this.high_ != 0 ? bit + 33 : bit + 1; - } - }; - - - /** @return {boolean} Whether this value is zero. */ - goog.math.Long.prototype.isZero = function() { - return this.high_ == 0 && this.low_ == 0; - }; - - - /** @return {boolean} Whether this value is negative. */ - goog.math.Long.prototype.isNegative = function() { - return this.high_ < 0; - }; - - - /** @return {boolean} Whether this value is odd. */ - goog.math.Long.prototype.isOdd = function() { - return (this.low_ & 1) == 1; - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long equals the other. - */ - goog.math.Long.prototype.equals = function(other) { - return (this.high_ == other.high_) && (this.low_ == other.low_); - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long does not equal the other. - */ - goog.math.Long.prototype.notEquals = function(other) { - return (this.high_ != other.high_) || (this.low_ != other.low_); - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long is less than the other. - */ - goog.math.Long.prototype.lessThan = function(other) { - return this.compare(other) < 0; - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long is less than or equal to the other. - */ - goog.math.Long.prototype.lessThanOrEqual = function(other) { - return this.compare(other) <= 0; - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long is greater than the other. - */ - goog.math.Long.prototype.greaterThan = function(other) { - return this.compare(other) > 0; - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long is greater than or equal to the other. - */ - goog.math.Long.prototype.greaterThanOrEqual = function(other) { - return this.compare(other) >= 0; - }; - - - /** - * Compares this Long with the given one. - * @param {goog.math.Long} other Long to compare against. - * @return {number} 0 if they are the same, 1 if the this is greater, and -1 - * if the given one is greater. - */ - goog.math.Long.prototype.compare = function(other) { - if (this.equals(other)) { - return 0; - } - - var thisNeg = this.isNegative(); - var otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) { - return -1; - } - if (!thisNeg && otherNeg) { - return 1; - } - - // at this point, the signs are the same, so subtraction will not overflow - if (this.subtract(other).isNegative()) { - return -1; - } else { - return 1; - } - }; - - - /** @return {!goog.math.Long} The negation of this value. */ - goog.math.Long.prototype.negate = function() { - if (this.equals(goog.math.Long.MIN_VALUE)) { - return goog.math.Long.MIN_VALUE; - } else { - return this.not().add(goog.math.Long.ONE); - } - }; - - - /** - * Returns the sum of this and the given Long. - * @param {goog.math.Long} other Long to add to this one. - * @return {!goog.math.Long} The sum of this and the given Long. - */ - goog.math.Long.prototype.add = function(other) { - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); - }; - - - /** - * Returns the difference of this and the given Long. - * @param {goog.math.Long} other Long to subtract from this. - * @return {!goog.math.Long} The difference of this and the given Long. - */ - goog.math.Long.prototype.subtract = function(other) { - return this.add(other.negate()); - }; - - - /** - * Returns the product of this and the given long. - * @param {goog.math.Long} other Long to multiply with this. - * @return {!goog.math.Long} The product of this and the other. - */ - goog.math.Long.prototype.multiply = function(other) { - if (this.isZero()) { - return goog.math.Long.ZERO; - } else if (other.isZero()) { - return goog.math.Long.ZERO; - } - - if (this.equals(goog.math.Long.MIN_VALUE)) { - return other.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; - } else if (other.equals(goog.math.Long.MIN_VALUE)) { - return this.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().multiply(other.negate()); - } else { - return this.negate().multiply(other).negate(); - } - } else if (other.isNegative()) { - return this.multiply(other.negate()).negate(); - } - - // If both longs are small, use float multiplication - if (this.lessThan(goog.math.Long.TWO_PWR_24_) && - other.lessThan(goog.math.Long.TWO_PWR_24_)) { - return goog.math.Long.fromNumber(this.toNumber() * other.toNumber()); - } - - // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); - }; - - - /** - * Returns this Long divided by the given one. - * @param {goog.math.Long} other Long by which to divide. - * @return {!goog.math.Long} This Long divided by the given one. - */ - goog.math.Long.prototype.div = function(other) { - if (other.isZero()) { - throw Error('division by zero'); - } else if (this.isZero()) { - return goog.math.Long.ZERO; - } - - if (this.equals(goog.math.Long.MIN_VALUE)) { - if (other.equals(goog.math.Long.ONE) || - other.equals(goog.math.Long.NEG_ONE)) { - return goog.math.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - } else if (other.equals(goog.math.Long.MIN_VALUE)) { - return goog.math.Long.ONE; - } else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shiftRight(1); - var approx = halfThis.div(other).shiftLeft(1); - if (approx.equals(goog.math.Long.ZERO)) { - return other.isNegative() ? goog.math.Long.ONE : goog.math.Long.NEG_ONE; - } else { - var rem = this.subtract(other.multiply(approx)); - var result = approx.add(rem.div(other)); - return result; - } - } - } else if (other.equals(goog.math.Long.MIN_VALUE)) { - return goog.math.Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().div(other.negate()); - } else { - return this.negate().div(other).negate(); - } - } else if (other.isNegative()) { - return this.div(other.negate()).negate(); - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - var res = goog.math.Long.ZERO; - var rem = this; - while (rem.greaterThanOrEqual(other)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - var approxRes = goog.math.Long.fromNumber(approx); - var approxRem = approxRes.multiply(other); - while (approxRem.isNegative() || approxRem.greaterThan(rem)) { - approx -= delta; - approxRes = goog.math.Long.fromNumber(approx); - approxRem = approxRes.multiply(other); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) { - approxRes = goog.math.Long.ONE; - } - - res = res.add(approxRes); - rem = rem.subtract(approxRem); - } - return res; - }; - - - /** - * Returns this Long modulo the given one. - * @param {goog.math.Long} other Long by which to mod. - * @return {!goog.math.Long} This Long modulo the given one. - */ - goog.math.Long.prototype.modulo = function(other) { - return this.subtract(this.div(other).multiply(other)); - }; - - - /** @return {!goog.math.Long} The bitwise-NOT of this value. */ - goog.math.Long.prototype.not = function() { - return goog.math.Long.fromBits(~this.low_, ~this.high_); - }; - - - /** - * Returns the bitwise-AND of this Long and the given one. - * @param {goog.math.Long} other The Long with which to AND. - * @return {!goog.math.Long} The bitwise-AND of this and the other. - */ - goog.math.Long.prototype.and = function(other) { - return goog.math.Long.fromBits(this.low_ & other.low_, - this.high_ & other.high_); - }; - - - /** - * Returns the bitwise-OR of this Long and the given one. - * @param {goog.math.Long} other The Long with which to OR. - * @return {!goog.math.Long} The bitwise-OR of this and the other. - */ - goog.math.Long.prototype.or = function(other) { - return goog.math.Long.fromBits(this.low_ | other.low_, - this.high_ | other.high_); - }; - - - /** - * Returns the bitwise-XOR of this Long and the given one. - * @param {goog.math.Long} other The Long with which to XOR. - * @return {!goog.math.Long} The bitwise-XOR of this and the other. - */ - goog.math.Long.prototype.xor = function(other) { - return goog.math.Long.fromBits(this.low_ ^ other.low_, - this.high_ ^ other.high_); - }; - - - /** - * Returns this Long with bits shifted to the left by the given amount. - * @param {number} numBits The number of bits by which to shift. - * @return {!goog.math.Long} This shifted to the left by the given amount. - */ - goog.math.Long.prototype.shiftLeft = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var low = this.low_; - if (numBits < 32) { - var high = this.high_; - return goog.math.Long.fromBits( - low << numBits, - (high << numBits) | (low >>> (32 - numBits))); - } else { - return goog.math.Long.fromBits(0, low << (numBits - 32)); - } - } - }; - - - /** - * Returns this Long with bits shifted to the right by the given amount. - * @param {number} numBits The number of bits by which to shift. - * @return {!goog.math.Long} This shifted to the right by the given amount. - */ - goog.math.Long.prototype.shiftRight = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return goog.math.Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >> numBits); - } else { - return goog.math.Long.fromBits( - high >> (numBits - 32), - high >= 0 ? 0 : -1); - } - } - }; - - - /** - * Returns this Long with bits shifted to the right by the given amount, with - * the new top bits matching the current sign bit. - * @param {number} numBits The number of bits by which to shift. - * @return {!goog.math.Long} This shifted to the right by the given amount, with - * zeros placed into the new leading bits. - */ - goog.math.Long.prototype.shiftRightUnsigned = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return goog.math.Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >>> numBits); - } else if (numBits == 32) { - return goog.math.Long.fromBits(high, 0); - } else { - return goog.math.Long.fromBits(high >>> (numBits - 32), 0); - } - } - }; - - //======= begin jsbn ======= - - var navigator = { appName: 'Modern Browser' }; // polyfill a little - - // Copyright (c) 2005 Tom Wu - // All Rights Reserved. - // http://www-cs-students.stanford.edu/~tjw/jsbn/ - - /* - * Copyright (c) 2003-2005 Tom Wu - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF - * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * In addition, the following condition applies: - * - * All redistributions must retain an intact copy of this copyright notice - * and disclaimer. - */ - - // Basic JavaScript BN library - subset useful for RSA encryption. - - // Bits per digit - var dbits; - - // JavaScript engine analysis - var canary = 0xdeadbeefcafe; - var j_lm = ((canary&0xffffff)==0xefcafe); - - // (public) Constructor - function BigInteger(a,b,c) { - if(a != null) - if("number" == typeof a) this.fromNumber(a,b,c); - else if(b == null && "string" != typeof a) this.fromString(a,256); - else this.fromString(a,b); - } - - // return new, unset BigInteger - function nbi() { return new BigInteger(null); } - - // am: Compute w_j += (x*this_i), propagate carries, - // c is initial carry, returns final carry. - // c < 3*dvalue, x < 2*dvalue, this_i < dvalue - // We need to select the fastest one that works in this environment. - - // am1: use a single mult and divide to get the high bits, - // max digit bits should be 26 because - // max internal value = 2*dvalue^2-2*dvalue (< 2^53) - function am1(i,x,w,j,c,n) { - while(--n >= 0) { - var v = x*this[i++]+w[j]+c; - c = Math.floor(v/0x4000000); - w[j++] = v&0x3ffffff; - } - return c; - } - // am2 avoids a big mult-and-extract completely. - // Max digit bits should be <= 30 because we do bitwise ops - // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) - function am2(i,x,w,j,c,n) { - var xl = x&0x7fff, xh = x>>15; - while(--n >= 0) { - var l = this[i]&0x7fff; - var h = this[i++]>>15; - var m = xh*l+h*xl; - l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); - c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); - w[j++] = l&0x3fffffff; - } - return c; - } - // Alternately, set max digit bits to 28 since some - // browsers slow down when dealing with 32-bit numbers. - function am3(i,x,w,j,c,n) { - var xl = x&0x3fff, xh = x>>14; - while(--n >= 0) { - var l = this[i]&0x3fff; - var h = this[i++]>>14; - var m = xh*l+h*xl; - l = xl*l+((m&0x3fff)<<14)+w[j]+c; - c = (l>>28)+(m>>14)+xh*h; - w[j++] = l&0xfffffff; - } - return c; - } - if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) { - BigInteger.prototype.am = am2; - dbits = 30; - } - else if(j_lm && (navigator.appName != "Netscape")) { - BigInteger.prototype.am = am1; - dbits = 26; - } - else { // Mozilla/Netscape seems to prefer am3 - BigInteger.prototype.am = am3; - dbits = 28; - } - - BigInteger.prototype.DB = dbits; - BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; - r.t = this.t; - r.s = this.s; - } - - // (protected) set from integer value x, -DV <= x < DV - function bnpFromInt(x) { - this.t = 1; - this.s = (x<0)?-1:0; - if(x > 0) this[0] = x; - else if(x < -1) this[0] = x+DV; - else this.t = 0; - } - - // return bigint initialized to value - function nbv(i) { var r = nbi(); r.fromInt(i); return r; } - - // (protected) set from string and radix - function bnpFromString(s,b) { - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 256) k = 8; // byte array - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else { this.fromRadix(s,b); return; } - this.t = 0; - this.s = 0; - var i = s.length, mi = false, sh = 0; - while(--i >= 0) { - var x = (k==8)?s[i]&0xff:intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-") mi = true; - continue; - } - mi = false; - if(sh == 0) - this[this.t++] = x; - else if(sh+k > this.DB) { - this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); - } - else - this[this.t-1] |= x<= this.DB) sh -= this.DB; - } - if(k == 8 && (s[0]&0x80) != 0) { - this.s = -1; - if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; - } - - // (public) return string representation in given radix - function bnToString(b) { - if(this.s < 0) return "-"+this.negate().toString(b); - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else return this.toRadix(b); - var km = (1< 0) { - if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } - while(i >= 0) { - if(p < k) { - d = (this[i]&((1<>(p+=this.DB-k); - } - else { - d = (this[i]>>(p-=k))&km; - if(p <= 0) { p += this.DB; --i; } - } - if(d > 0) m = true; - if(m) r += int2char(d); - } - } - return m?r:"0"; - } - - // (public) -this - function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } - - // (public) |this| - function bnAbs() { return (this.s<0)?this.negate():this; } - - // (public) return + if this > a, - if this < a, 0 if equal - function bnCompareTo(a) { - var r = this.s-a.s; - if(r != 0) return r; - var i = this.t; - r = i-a.t; - if(r != 0) return (this.s<0)?-r:r; - while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; - return 0; - } - - // returns bit length of the integer x - function nbits(x) { - var r = 1, t; - if((t=x>>>16) != 0) { x = t; r += 16; } - if((t=x>>8) != 0) { x = t; r += 8; } - if((t=x>>4) != 0) { x = t; r += 4; } - if((t=x>>2) != 0) { x = t; r += 2; } - if((t=x>>1) != 0) { x = t; r += 1; } - return r; - } - - // (public) return the number of bits in "this" - function bnBitLength() { - if(this.t <= 0) return 0; - return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); - } - - // (protected) r = this << n*DB - function bnpDLShiftTo(n,r) { - var i; - for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; - for(i = n-1; i >= 0; --i) r[i] = 0; - r.t = this.t+n; - r.s = this.s; - } - - // (protected) r = this >> n*DB - function bnpDRShiftTo(n,r) { - for(var i = n; i < this.t; ++i) r[i-n] = this[i]; - r.t = Math.max(this.t-n,0); - r.s = this.s; - } - - // (protected) r = this << n - function bnpLShiftTo(n,r) { - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<= 0; --i) { - r[i+ds+1] = (this[i]>>cbs)|c; - c = (this[i]&bm)<= 0; --i) r[i] = 0; - r[ds] = c; - r.t = this.t+ds+1; - r.s = this.s; - r.clamp(); - } - - // (protected) r = this >> n - function bnpRShiftTo(n,r) { - r.s = this.s; - var ds = Math.floor(n/this.DB); - if(ds >= this.t) { r.t = 0; return; } - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<>bs; - for(var i = ds+1; i < this.t; ++i) { - r[i-ds-1] |= (this[i]&bm)<>bs; - } - if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; - } - if(a.t < this.t) { - c -= a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c -= a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c -= a.s; - } - r.s = (c<0)?-1:0; - if(c < -1) r[i++] = this.DV+c; - else if(c > 0) r[i++] = c; - r.t = i; - r.clamp(); - } - - // (protected) r = this * a, r != this,a (HAC 14.12) - // "this" should be the larger one if appropriate. - function bnpMultiplyTo(a,r) { - var x = this.abs(), y = a.abs(); - var i = x.t; - r.t = i+y.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); - r.s = 0; - r.clamp(); - if(this.s != a.s) BigInteger.ZERO.subTo(r,r); - } - - // (protected) r = this^2, r != this (HAC 14.16) - function bnpSquareTo(r) { - var x = this.abs(); - var i = r.t = 2*x.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < x.t-1; ++i) { - var c = x.am(i,x[i],r,2*i,0,1); - if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { - r[i+x.t] -= x.DV; - r[i+x.t+1] = 1; - } - } - if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); - r.s = 0; - r.clamp(); - } - - // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) - // r != q, this != m. q or r may be null. - function bnpDivRemTo(m,q,r) { - var pm = m.abs(); - if(pm.t <= 0) return; - var pt = this.abs(); - if(pt.t < pm.t) { - if(q != null) q.fromInt(0); - if(r != null) this.copyTo(r); - return; - } - if(r == null) r = nbi(); - var y = nbi(), ts = this.s, ms = m.s; - var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus - if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } - else { pm.copyTo(y); pt.copyTo(r); } - var ys = y.t; - var y0 = y[ys-1]; - if(y0 == 0) return; - var yt = y0*(1<1)?y[ys-2]>>this.F2:0); - var d1 = this.FV/yt, d2 = (1<= 0) { - r[r.t++] = 1; - r.subTo(t,r); - } - BigInteger.ONE.dlShiftTo(ys,t); - t.subTo(y,y); // "negative" y so we can replace sub with am later - while(y.t < ys) y[y.t++] = 0; - while(--j >= 0) { - // Estimate quotient digit - var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); - if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out - y.dlShiftTo(j,t); - r.subTo(t,r); - while(r[i] < --qd) r.subTo(t,r); - } - } - if(q != null) { - r.drShiftTo(ys,q); - if(ts != ms) BigInteger.ZERO.subTo(q,q); - } - r.t = ys; - r.clamp(); - if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder - if(ts < 0) BigInteger.ZERO.subTo(r,r); - } - - // (public) this mod a - function bnMod(a) { - var r = nbi(); - this.abs().divRemTo(a,null,r); - if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); - return r; - } - - // Modular reduction using "classic" algorithm - function Classic(m) { this.m = m; } - function cConvert(x) { - if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); - else return x; - } - function cRevert(x) { return x; } - function cReduce(x) { x.divRemTo(this.m,null,x); } - function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - Classic.prototype.convert = cConvert; - Classic.prototype.revert = cRevert; - Classic.prototype.reduce = cReduce; - Classic.prototype.mulTo = cMulTo; - Classic.prototype.sqrTo = cSqrTo; - - // (protected) return "-1/this % 2^DB"; useful for Mont. reduction - // justification: - // xy == 1 (mod m) - // xy = 1+km - // xy(2-xy) = (1+km)(1-km) - // x[y(2-xy)] = 1-k^2m^2 - // x[y(2-xy)] == 1 (mod m^2) - // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 - // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. - // JS multiply "overflows" differently from C/C++, so care is needed here. - function bnpInvDigit() { - if(this.t < 1) return 0; - var x = this[0]; - if((x&1) == 0) return 0; - var y = x&3; // y == 1/x mod 2^2 - y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 - y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 - y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 - // last step - calculate inverse mod DV directly; - // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints - y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits - // we really want the negative inverse, and -DV < y < DV - return (y>0)?this.DV-y:-y; - } - - // Montgomery reduction - function Montgomery(m) { - this.m = m; - this.mp = m.invDigit(); - this.mpl = this.mp&0x7fff; - this.mph = this.mp>>15; - this.um = (1<<(m.DB-15))-1; - this.mt2 = 2*m.t; - } - - // xR mod m - function montConvert(x) { - var r = nbi(); - x.abs().dlShiftTo(this.m.t,r); - r.divRemTo(this.m,null,r); - if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); - return r; - } - - // x/R mod m - function montRevert(x) { - var r = nbi(); - x.copyTo(r); - this.reduce(r); - return r; - } - - // x = x/R mod m (HAC 14.32) - function montReduce(x) { - while(x.t <= this.mt2) // pad x so am has enough room later - x[x.t++] = 0; - for(var i = 0; i < this.m.t; ++i) { - // faster way of calculating u0 = x[i]*mp mod DV - var j = x[i]&0x7fff; - var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; - // use am to combine the multiply-shift-add into one call - j = i+this.m.t; - x[j] += this.m.am(0,u0,x,i,0,this.m.t); - // propagate carry - while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } - } - x.clamp(); - x.drShiftTo(this.m.t,x); - if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = "x^2/R mod m"; x != r - function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = "xy/R mod m"; x,y != r - function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Montgomery.prototype.convert = montConvert; - Montgomery.prototype.revert = montRevert; - Montgomery.prototype.reduce = montReduce; - Montgomery.prototype.mulTo = montMulTo; - Montgomery.prototype.sqrTo = montSqrTo; - - // (protected) true iff this is even - function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } - - // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) - function bnpExp(e,z) { - if(e > 0xffffffff || e < 1) return BigInteger.ONE; - var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; - g.copyTo(r); - while(--i >= 0) { - z.sqrTo(r,r2); - if((e&(1< 0) z.mulTo(r2,g,r); - else { var t = r; r = r2; r2 = t; } - } - return z.revert(r); - } - - // (public) this^e % m, 0 <= e < 2^32 - function bnModPowInt(e,m) { - var z; - if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); - return this.exp(e,z); - } - - // protected - BigInteger.prototype.copyTo = bnpCopyTo; - BigInteger.prototype.fromInt = bnpFromInt; - BigInteger.prototype.fromString = bnpFromString; - BigInteger.prototype.clamp = bnpClamp; - BigInteger.prototype.dlShiftTo = bnpDLShiftTo; - BigInteger.prototype.drShiftTo = bnpDRShiftTo; - BigInteger.prototype.lShiftTo = bnpLShiftTo; - BigInteger.prototype.rShiftTo = bnpRShiftTo; - BigInteger.prototype.subTo = bnpSubTo; - BigInteger.prototype.multiplyTo = bnpMultiplyTo; - BigInteger.prototype.squareTo = bnpSquareTo; - BigInteger.prototype.divRemTo = bnpDivRemTo; - BigInteger.prototype.invDigit = bnpInvDigit; - BigInteger.prototype.isEven = bnpIsEven; - BigInteger.prototype.exp = bnpExp; - - // public - BigInteger.prototype.toString = bnToString; - BigInteger.prototype.negate = bnNegate; - BigInteger.prototype.abs = bnAbs; - BigInteger.prototype.compareTo = bnCompareTo; - BigInteger.prototype.bitLength = bnBitLength; - BigInteger.prototype.mod = bnMod; - BigInteger.prototype.modPowInt = bnModPowInt; - - // "constants" - BigInteger.ZERO = nbv(0); - BigInteger.ONE = nbv(1); - - // jsbn2 stuff - - // (protected) convert from radix string - function bnpFromRadix(s,b) { - this.fromInt(0); - if(b == null) b = 10; - var cs = this.chunkSize(b); - var d = Math.pow(b,cs), mi = false, j = 0, w = 0; - for(var i = 0; i < s.length; ++i) { - var x = intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-" && this.signum() == 0) mi = true; - continue; - } - w = b*w+x; - if(++j >= cs) { - this.dMultiply(d); - this.dAddOffset(w,0); - j = 0; - w = 0; - } - } - if(j > 0) { - this.dMultiply(Math.pow(b,j)); - this.dAddOffset(w,0); - } - if(mi) BigInteger.ZERO.subTo(this,this); - } - - // (protected) return x s.t. r^x < DV - function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } - - // (public) 0 if this == 0, 1 if this > 0 - function bnSigNum() { - if(this.s < 0) return -1; - else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; - else return 1; - } - - // (protected) this *= n, this >= 0, 1 < n < DV - function bnpDMultiply(n) { - this[this.t] = this.am(0,n-1,this,0,0,this.t); - ++this.t; - this.clamp(); - } - - // (protected) this += n << w words, this >= 0 - function bnpDAddOffset(n,w) { - if(n == 0) return; - while(this.t <= w) this[this.t++] = 0; - this[w] += n; - while(this[w] >= this.DV) { - this[w] -= this.DV; - if(++w >= this.t) this[this.t++] = 0; - ++this[w]; - } - } - - // (protected) convert to radix string - function bnpToRadix(b) { - if(b == null) b = 10; - if(this.signum() == 0 || b < 2 || b > 36) return "0"; - var cs = this.chunkSize(b); - var a = Math.pow(b,cs); - var d = nbv(a), y = nbi(), z = nbi(), r = ""; - this.divRemTo(d,y,z); - while(y.signum() > 0) { - r = (a+z.intValue()).toString(b).substr(1) + r; - y.divRemTo(d,y,z); - } - return z.intValue().toString(b) + r; - } - - // (public) return value as integer - function bnIntValue() { - if(this.s < 0) { - if(this.t == 1) return this[0]-this.DV; - else if(this.t == 0) return -1; - } - else if(this.t == 1) return this[0]; - else if(this.t == 0) return 0; - // assumes 16 < DB < 32 - return ((this[1]&((1<<(32-this.DB))-1))<>= this.DB; - } - if(a.t < this.t) { - c += a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c += a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += a.s; - } - r.s = (c<0)?-1:0; - if(c > 0) r[i++] = c; - else if(c < -1) r[i++] = this.DV+c; - r.t = i; - r.clamp(); - } - - BigInteger.prototype.fromRadix = bnpFromRadix; - BigInteger.prototype.chunkSize = bnpChunkSize; - BigInteger.prototype.signum = bnSigNum; - BigInteger.prototype.dMultiply = bnpDMultiply; - BigInteger.prototype.dAddOffset = bnpDAddOffset; - BigInteger.prototype.toRadix = bnpToRadix; - BigInteger.prototype.intValue = bnIntValue; - BigInteger.prototype.addTo = bnpAddTo; - - //======= end jsbn ======= - - // Emscripten wrapper - var Wrapper = { - abs: function(l, h) { - var x = new goog.math.Long(l, h); - var ret; - if (x.isNegative()) { - ret = x.negate(); - } else { - ret = x; - } - HEAP32[tempDoublePtr>>2] = ret.low_; - HEAP32[tempDoublePtr+4>>2] = ret.high_; - }, - ensureTemps: function() { - if (Wrapper.ensuredTemps) return; - Wrapper.ensuredTemps = true; - Wrapper.two32 = new BigInteger(); - Wrapper.two32.fromString('4294967296', 10); - Wrapper.two64 = new BigInteger(); - Wrapper.two64.fromString('18446744073709551616', 10); - Wrapper.temp1 = new BigInteger(); - Wrapper.temp2 = new BigInteger(); - }, - lh2bignum: function(l, h) { - var a = new BigInteger(); - a.fromString(h.toString(), 10); - var b = new BigInteger(); - a.multiplyTo(Wrapper.two32, b); - var c = new BigInteger(); - c.fromString(l.toString(), 10); - var d = new BigInteger(); - c.addTo(b, d); - return d; - }, - stringify: function(l, h, unsigned) { - var ret = new goog.math.Long(l, h).toString(); - if (unsigned && ret[0] == '-') { - // unsign slowly using jsbn bignums - Wrapper.ensureTemps(); - var bignum = new BigInteger(); - bignum.fromString(ret, 10); - ret = new BigInteger(); - Wrapper.two64.addTo(bignum, ret); - ret = ret.toString(10); - } - return ret; - }, - fromString: function(str, base, min, max, unsigned) { - Wrapper.ensureTemps(); - var bignum = new BigInteger(); - bignum.fromString(str, base); - var bigmin = new BigInteger(); - bigmin.fromString(min, 10); - var bigmax = new BigInteger(); - bigmax.fromString(max, 10); - if (unsigned && bignum.compareTo(BigInteger.ZERO) < 0) { - var temp = new BigInteger(); - bignum.addTo(Wrapper.two64, temp); - bignum = temp; - } - var error = false; - if (bignum.compareTo(bigmin) < 0) { - bignum = bigmin; - error = true; - } else if (bignum.compareTo(bigmax) > 0) { - bignum = bigmax; - error = true; - } - var ret = goog.math.Long.fromString(bignum.toString()); // min-max checks should have clamped this to a range goog.math.Long can handle well - HEAP32[tempDoublePtr>>2] = ret.low_; - HEAP32[tempDoublePtr+4>>2] = ret.high_; - if (error) throw 'range error'; - } - }; - return Wrapper; -})(); - -//======= end closure i64 code ======= - - - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - var data = Module['readBinary'](memoryInitializer); - HEAPU8.set(data, STATIC_BASE); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - HEAPU8.set(data, STATIC_BASE); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run(['binarytrees.lua'].concat(Module["arguments"])); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - 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("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; - - throw 'abort() at ' + stackTrace() + extra; -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - - -run(['binarytrees.lua'].concat(Module["arguments"])); diff --git a/implementation-contributed/v8/mjsunit/asm/embenchen/memops.js b/implementation-contributed/v8/mjsunit/asm/embenchen/memops.js deleted file mode 100644 index e8e607cd72f..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/embenchen/memops.js +++ /dev/null @@ -1,8087 +0,0 @@ -var EXPECTED_OUTPUT = 'final: 840.\n'; -var Module = { - arguments: [1], - print: function(x) {Module.printBuffer += x + '\n';}, - preRun: [function() {Module.printBuffer = ''}], - postRun: [function() { - assertEquals(EXPECTED_OUTPUT, Module.printBuffer); - }], -}; -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - window['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependant on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - var source = Pointer_stringify(code); - if (source[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (source.indexOf('"', 1) === source.length-1) { - source = source.substr(1, source.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - try { - var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node - } catch(e) { - Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'); - throw e; - } - return Runtime.asmConstCache[code] = evalled; - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - /* TODO: use TextEncoder when present, - var encoder = new TextEncoder(); - encoder['encoding'] = "utf-8"; - var utf8Array = encoder['encode'](aMsg.data); - */ - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - getCompilerSetting: function (name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - var subs = []; - var first = true; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - if (rawList) { - if (ret) { - list.push(ret + '?'); - } - return list; - } else { - return ret + flushList(); - } - } - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'JS engine does not provide full typed array support'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === - - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(531); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([101,114,114,111,114,58,32,37,100,10,0,0,0,0,0,0,102,105,110,97,108,58,32,37,100,46,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - - - - - 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}; - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - // reuse all of the core MEMFS functionality - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },getDB:function (name, callback) { - // check the cache first - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - req.onupgradeneeded = function(e) { - var db = e.target.result; - var transaction = e.target.transaction; - - var fileStore; - - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - - fileStore.createIndex('timestamp', 'timestamp', { unique: false }); - }; - req.onsuccess = function() { - db = req.result; - - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function() { - callback(this.error); - }; - },getLocalSet:function (mount, callback) { - var entries = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat; - - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); - } - - entries[path] = { timestamp: stat.mtime }; - } - - return callback(null, { type: 'local', entries: entries }); - },getRemoteSet:function (mount, callback) { - var entries = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index('timestamp'); - - index.openKeyCursor().onsuccess = function(event) { - var cursor = event.target.result; - - if (!cursor) { - return callback(null, { type: 'remote', db: db, entries: entries }); - } - - entries[cursor.primaryKey] = { timestamp: cursor.key }; - - cursor.continue(); - }; - }); - },loadLocalEntry:function (path, callback) { - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode }); - } else if (FS.isFile(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); - } else { - return callback(new Error('node type not supported')); - } - },storeLocalEntry:function (path, entry, callback) { - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); - } else { - return callback(new Error('node type not supported')); - } - - FS.utime(path, entry.timestamp, entry.timestamp); - } catch (e) { - return callback(e); - } - - callback(null); - },removeLocalEntry:function (path, callback) { - try { - var lookup = FS.lookupPath(path); - var stat = FS.stat(path); - - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - - callback(null); - },loadRemoteEntry:function (store, path, callback) { - var req = store.get(path); - req.onsuccess = function(event) { callback(null, event.target.result); }; - req.onerror = function() { callback(this.error); }; - },storeRemoteEntry:function (store, path, entry, callback) { - var req = store.put(entry, path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },removeRemoteEntry:function (store, path, callback) { - var req = store.delete(path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create.push(key); - total++; - } - }); - - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - var e = dst.entries[key]; - var e2 = src.entries[key]; - if (!e2) { - remove.push(key); - total++; - } - }); - - if (!total) { - return callback(null); - } - - var errored = false; - var completed = 0; - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= total) { - return callback(null); - } - }; - - transaction.onerror = function() { done(this.error); }; - - // sort paths in ascending order so directory entries are created - // before the files inside them - create.sort().forEach(function (path) { - if (dst.type === 'local') { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - - // sort paths in descending order so files are deleted before their - // parent directories - remove.sort().reverse().forEach(function(path) { - if (dst.type === 'local') { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || {}; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return !!node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },getStreamFromPtr:function (ptr) { - return FS.streams[ptr - 1]; - },getPtrForStream:function (stream) { - return stream ? stream.fd + 1 : 0; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },getMounts:function (mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= mounts.length) { - callback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function (type, opts, mountpoint) { - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0, opts.canOwn); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }}; - - - - - function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - url = url + addr + ':' + port; - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - // The node ws library API for specifying optional subprotocol is slightly different than the browser's. - var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols; - - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fileno(stream) { - // int fileno(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - stream = FS.getStreamFromPtr(stream); - if (!stream) return -1; - return stream.fd; - }function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var fd = _fileno(stream); - var bytesWritten = _write(fd, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - - - Module["_strlen"] = _strlen; - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = HEAPF64[(((varargs)+(argIndex))>>3)]; - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision < 0) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - }function _printf(format, varargs) { - // int printf(const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var stdout = HEAP32[((_stdout)>>2)]; - return _fprintf(stdout, format, varargs); - } - - function _sbrk(bytes) { - // Implement a Linux-like 'memory area' for our 'process'. - // Changes the size of the memory area by |bytes|; returns the - // address of the previous top ('break') of the memory area - // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP - var self = _sbrk; - if (!self.called) { - DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned - self.called = true; - assert(Runtime.dynamicAlloc); - self.alloc = Runtime.dynamicAlloc; - Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; - } - var ret = DYNAMICTOP; - if (bytes != 0) self.alloc(bytes); - return ret; // Previous break location. - } - - function _sysconf(name) { - // long sysconf(int name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html - switch(name) { - case 30: return PAGE_SIZE; - case 132: - case 133: - case 12: - case 137: - case 138: - case 15: - case 235: - case 16: - case 17: - case 18: - case 19: - case 20: - case 149: - case 13: - case 10: - case 236: - case 153: - case 9: - case 21: - case 22: - case 159: - case 154: - case 14: - case 77: - case 78: - case 139: - case 80: - case 81: - case 79: - case 82: - case 68: - case 67: - case 164: - case 11: - case 29: - case 47: - case 48: - case 95: - case 52: - case 51: - case 46: - return 200809; - case 27: - case 246: - case 127: - case 128: - case 23: - case 24: - case 160: - case 161: - case 181: - case 182: - case 242: - case 183: - case 184: - case 243: - case 244: - case 245: - case 165: - case 178: - case 179: - case 49: - case 50: - case 168: - case 169: - case 175: - case 170: - case 171: - case 172: - case 97: - case 76: - case 32: - case 173: - case 35: - return -1; - case 176: - case 177: - case 7: - case 155: - case 8: - case 157: - case 125: - case 126: - case 92: - case 93: - case 129: - case 130: - case 131: - case 94: - case 91: - return 1; - case 74: - case 60: - case 69: - case 70: - case 4: - return 1024; - case 31: - case 42: - case 72: - return 32; - case 87: - case 26: - case 33: - return 2147483647; - case 34: - case 1: - return 47839; - case 38: - case 36: - return 99; - case 43: - case 37: - return 2048; - case 0: return 2097152; - case 3: return 65536; - case 28: return 32768; - case 44: return 32767; - case 75: return 16384; - case 39: return 1000; - case 89: return 700; - case 71: return 256; - case 40: return 255; - case 2: return 100; - case 180: return 64; - case 25: return 20; - case 5: return 16; - case 6: return 6; - case 73: return 4; - case 84: return 1; - } - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - } - - - Module["_memset"] = _memset; - - function ___errno_location() { - return ___errno_state; - } - - function _abort() { - Module['abort'](); - } - - var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - - // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module - // Module['forcedAspectRatio'] = 4 / 3; - - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock'] || - canvas['msRequestPointerLock'] || - function(){}; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - document['msExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas || - document['msPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - document.addEventListener('mspointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - var canvasContainer = canvas.parentNode; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvasContainer) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen'] || - document['msExitFullscreen'] || - document['exitFullscreen'] || - function() {}; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else { - - // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - - if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - Browser.updateCanvasDimensions(canvas); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - document.addEventListener('MSFullscreenChange', fullScreenChange, false); - } - - // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - - // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) - canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || - canvasContainer['mozRequestFullScreen'] || - canvasContainer['msRequestFullscreen'] || - (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvasContainer.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },getMouseWheelDelta:function (event) { - return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },updateCanvasDimensions:function (canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { - if (w/h < Module['forcedAspectRatio']) { - w = Math.round(h * Module['forcedAspectRatio']); - } else { - h = Math.round(w / Module['forcedAspectRatio']); - } - } - if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != 'undefined') { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != 'undefined') { - if (w != wNative || h != hNative) { - canvas.style.setProperty( "width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } - } - }}; - - function _time(ptr) { - var ret = Math.floor(Date.now()/1000); - if (ptr) { - HEAP32[((ptr)>>2)]=ret; - } - return ret; - } - - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - Module["_memcpy"] = _memcpy; -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - -var Math_min = Math.min; -function asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm = (function(global, env, buffer) { - 'use asm'; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = +env.NaN, inf = +env.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var abort=env.abort; - var assert=env.assert; - var asmPrintInt=env.asmPrintInt; - var asmPrintFloat=env.asmPrintFloat; - var Math_min=env.min; - var _fflush=env._fflush; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _printf=env._printf; - var _send=env._send; - var _pwrite=env._pwrite; - var _abort=env._abort; - var ___setErrNo=env.___setErrNo; - var _fwrite=env._fwrite; - var _sbrk=env._sbrk; - var _time=env._time; - var _mkport=env._mkport; - var __reallyNegative=env.__reallyNegative; - var __formatString=env.__formatString; - var _fileno=env._fileno; - var _write=env._write; - var _fprintf=env._fprintf; - var _sysconf=env._sysconf; - var ___errno_location=env.___errno_location; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function _malloc(i12) { - i12 = i12 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0; - i1 = STACKTOP; - do { - if (i12 >>> 0 < 245) { - if (i12 >>> 0 < 11) { - i12 = 16; - } else { - i12 = i12 + 11 & -8; - } - i20 = i12 >>> 3; - i18 = HEAP32[10] | 0; - i21 = i18 >>> i20; - if ((i21 & 3 | 0) != 0) { - i6 = (i21 & 1 ^ 1) + i20 | 0; - i5 = i6 << 1; - i3 = 80 + (i5 << 2) | 0; - i5 = 80 + (i5 + 2 << 2) | 0; - i7 = HEAP32[i5 >> 2] | 0; - i2 = i7 + 8 | 0; - i4 = HEAP32[i2 >> 2] | 0; - do { - if ((i3 | 0) != (i4 | 0)) { - if (i4 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i4 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i7 | 0)) { - HEAP32[i8 >> 2] = i3; - HEAP32[i5 >> 2] = i4; - break; - } else { - _abort(); - } - } else { - HEAP32[10] = i18 & ~(1 << i6); - } - } while (0); - i32 = i6 << 3; - HEAP32[i7 + 4 >> 2] = i32 | 3; - i32 = i7 + (i32 | 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - if (i12 >>> 0 > (HEAP32[48 >> 2] | 0) >>> 0) { - if ((i21 | 0) != 0) { - i7 = 2 << i20; - i7 = i21 << i20 & (i7 | 0 - i7); - i7 = (i7 & 0 - i7) + -1 | 0; - i2 = i7 >>> 12 & 16; - i7 = i7 >>> i2; - i6 = i7 >>> 5 & 8; - i7 = i7 >>> i6; - i5 = i7 >>> 2 & 4; - i7 = i7 >>> i5; - i4 = i7 >>> 1 & 2; - i7 = i7 >>> i4; - i3 = i7 >>> 1 & 1; - i3 = (i6 | i2 | i5 | i4 | i3) + (i7 >>> i3) | 0; - i7 = i3 << 1; - i4 = 80 + (i7 << 2) | 0; - i7 = 80 + (i7 + 2 << 2) | 0; - i5 = HEAP32[i7 >> 2] | 0; - i2 = i5 + 8 | 0; - i6 = HEAP32[i2 >> 2] | 0; - do { - if ((i4 | 0) != (i6 | 0)) { - if (i6 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i6 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i5 | 0)) { - HEAP32[i8 >> 2] = i4; - HEAP32[i7 >> 2] = i6; - break; - } else { - _abort(); - } - } else { - HEAP32[10] = i18 & ~(1 << i3); - } - } while (0); - i6 = i3 << 3; - i4 = i6 - i12 | 0; - HEAP32[i5 + 4 >> 2] = i12 | 3; - i3 = i5 + i12 | 0; - HEAP32[i5 + (i12 | 4) >> 2] = i4 | 1; - HEAP32[i5 + i6 >> 2] = i4; - i6 = HEAP32[48 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[60 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 80 + (i9 << 2) | 0; - i7 = HEAP32[10] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 80 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - i28 = i7; - i27 = i8; - } - } else { - HEAP32[10] = i7 | i8; - i28 = 80 + (i9 + 2 << 2) | 0; - i27 = i6; - } - HEAP32[i28 >> 2] = i5; - HEAP32[i27 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i27; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[48 >> 2] = i4; - HEAP32[60 >> 2] = i3; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[44 >> 2] | 0; - if ((i18 | 0) != 0) { - i2 = (i18 & 0 - i18) + -1 | 0; - i31 = i2 >>> 12 & 16; - i2 = i2 >>> i31; - i30 = i2 >>> 5 & 8; - i2 = i2 >>> i30; - i32 = i2 >>> 2 & 4; - i2 = i2 >>> i32; - i6 = i2 >>> 1 & 2; - i2 = i2 >>> i6; - i3 = i2 >>> 1 & 1; - i3 = HEAP32[344 + ((i30 | i31 | i32 | i6 | i3) + (i2 >>> i3) << 2) >> 2] | 0; - i2 = (HEAP32[i3 + 4 >> 2] & -8) - i12 | 0; - i6 = i3; - while (1) { - i5 = HEAP32[i6 + 16 >> 2] | 0; - if ((i5 | 0) == 0) { - i5 = HEAP32[i6 + 20 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - } - i6 = (HEAP32[i5 + 4 >> 2] & -8) - i12 | 0; - i4 = i6 >>> 0 < i2 >>> 0; - i2 = i4 ? i6 : i2; - i6 = i5; - i3 = i4 ? i5 : i3; - } - i6 = HEAP32[56 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - i4 = i3 + i12 | 0; - if (!(i3 >>> 0 < i4 >>> 0)) { - _abort(); - } - i5 = HEAP32[i3 + 24 >> 2] | 0; - i7 = HEAP32[i3 + 12 >> 2] | 0; - do { - if ((i7 | 0) == (i3 | 0)) { - i8 = i3 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i8 = i3 + 16 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i26 = 0; - break; - } - } - while (1) { - i10 = i7 + 20 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) != 0) { - i7 = i9; - i8 = i10; - continue; - } - i10 = i7 + 16 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } else { - i7 = i9; - i8 = i10; - } - } - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i8 >> 2] = 0; - i26 = i7; - break; - } - } else { - i8 = HEAP32[i3 + 8 >> 2] | 0; - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } - i6 = i8 + 12 | 0; - if ((HEAP32[i6 >> 2] | 0) != (i3 | 0)) { - _abort(); - } - i9 = i7 + 8 | 0; - if ((HEAP32[i9 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i7; - HEAP32[i9 >> 2] = i8; - i26 = i7; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i5 | 0) != 0) { - i7 = HEAP32[i3 + 28 >> 2] | 0; - i6 = 344 + (i7 << 2) | 0; - if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) { - HEAP32[i6 >> 2] = i26; - if ((i26 | 0) == 0) { - HEAP32[44 >> 2] = HEAP32[44 >> 2] & ~(1 << i7); - break; - } - } else { - if (i5 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i6 = i5 + 16 | 0; - if ((HEAP32[i6 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i26; - } else { - HEAP32[i5 + 20 >> 2] = i26; - } - if ((i26 | 0) == 0) { - break; - } - } - if (i26 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i26 + 24 >> 2] = i5; - i5 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 16 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } while (0); - i5 = HEAP32[i3 + 20 >> 2] | 0; - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 20 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } - } while (0); - if (i2 >>> 0 < 16) { - i32 = i2 + i12 | 0; - HEAP32[i3 + 4 >> 2] = i32 | 3; - i32 = i3 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } else { - HEAP32[i3 + 4 >> 2] = i12 | 3; - HEAP32[i3 + (i12 | 4) >> 2] = i2 | 1; - HEAP32[i3 + (i2 + i12) >> 2] = i2; - i6 = HEAP32[48 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[60 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 80 + (i9 << 2) | 0; - i7 = HEAP32[10] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 80 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - i25 = i7; - i24 = i8; - } - } else { - HEAP32[10] = i7 | i8; - i25 = 80 + (i9 + 2 << 2) | 0; - i24 = i6; - } - HEAP32[i25 >> 2] = i5; - HEAP32[i24 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i24; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[48 >> 2] = i2; - HEAP32[60 >> 2] = i4; - } - i32 = i3 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - if (!(i12 >>> 0 > 4294967231)) { - i24 = i12 + 11 | 0; - i12 = i24 & -8; - i26 = HEAP32[44 >> 2] | 0; - if ((i26 | 0) != 0) { - i25 = 0 - i12 | 0; - i24 = i24 >>> 8; - if ((i24 | 0) != 0) { - if (i12 >>> 0 > 16777215) { - i27 = 31; - } else { - i31 = (i24 + 1048320 | 0) >>> 16 & 8; - i32 = i24 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i27 = (i32 + 245760 | 0) >>> 16 & 2; - i27 = 14 - (i30 | i31 | i27) + (i32 << i27 >>> 15) | 0; - i27 = i12 >>> (i27 + 7 | 0) & 1 | i27 << 1; - } - } else { - i27 = 0; - } - i30 = HEAP32[344 + (i27 << 2) >> 2] | 0; - L126 : do { - if ((i30 | 0) == 0) { - i29 = 0; - i24 = 0; - } else { - if ((i27 | 0) == 31) { - i24 = 0; - } else { - i24 = 25 - (i27 >>> 1) | 0; - } - i29 = 0; - i28 = i12 << i24; - i24 = 0; - while (1) { - i32 = HEAP32[i30 + 4 >> 2] & -8; - i31 = i32 - i12 | 0; - if (i31 >>> 0 < i25 >>> 0) { - if ((i32 | 0) == (i12 | 0)) { - i25 = i31; - i29 = i30; - i24 = i30; - break L126; - } else { - i25 = i31; - i24 = i30; - } - } - i31 = HEAP32[i30 + 20 >> 2] | 0; - i30 = HEAP32[i30 + (i28 >>> 31 << 2) + 16 >> 2] | 0; - i29 = (i31 | 0) == 0 | (i31 | 0) == (i30 | 0) ? i29 : i31; - if ((i30 | 0) == 0) { - break; - } else { - i28 = i28 << 1; - } - } - } - } while (0); - if ((i29 | 0) == 0 & (i24 | 0) == 0) { - i32 = 2 << i27; - i26 = i26 & (i32 | 0 - i32); - if ((i26 | 0) == 0) { - break; - } - i32 = (i26 & 0 - i26) + -1 | 0; - i28 = i32 >>> 12 & 16; - i32 = i32 >>> i28; - i27 = i32 >>> 5 & 8; - i32 = i32 >>> i27; - i30 = i32 >>> 2 & 4; - i32 = i32 >>> i30; - i31 = i32 >>> 1 & 2; - i32 = i32 >>> i31; - i29 = i32 >>> 1 & 1; - i29 = HEAP32[344 + ((i27 | i28 | i30 | i31 | i29) + (i32 >>> i29) << 2) >> 2] | 0; - } - if ((i29 | 0) != 0) { - while (1) { - i27 = (HEAP32[i29 + 4 >> 2] & -8) - i12 | 0; - i26 = i27 >>> 0 < i25 >>> 0; - i25 = i26 ? i27 : i25; - i24 = i26 ? i29 : i24; - i26 = HEAP32[i29 + 16 >> 2] | 0; - if ((i26 | 0) != 0) { - i29 = i26; - continue; - } - i29 = HEAP32[i29 + 20 >> 2] | 0; - if ((i29 | 0) == 0) { - break; - } - } - } - if ((i24 | 0) != 0 ? i25 >>> 0 < ((HEAP32[48 >> 2] | 0) - i12 | 0) >>> 0 : 0) { - i4 = HEAP32[56 >> 2] | 0; - if (i24 >>> 0 < i4 >>> 0) { - _abort(); - } - i2 = i24 + i12 | 0; - if (!(i24 >>> 0 < i2 >>> 0)) { - _abort(); - } - i3 = HEAP32[i24 + 24 >> 2] | 0; - i6 = HEAP32[i24 + 12 >> 2] | 0; - do { - if ((i6 | 0) == (i24 | 0)) { - i6 = i24 + 20 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i6 = i24 + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i22 = 0; - break; - } - } - while (1) { - i8 = i5 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) != 0) { - i5 = i7; - i6 = i8; - continue; - } - i7 = i5 + 16 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 | 0) == 0) { - break; - } else { - i5 = i8; - i6 = i7; - } - } - if (i6 >>> 0 < i4 >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = 0; - i22 = i5; - break; - } - } else { - i5 = HEAP32[i24 + 8 >> 2] | 0; - if (i5 >>> 0 < i4 >>> 0) { - _abort(); - } - i7 = i5 + 12 | 0; - if ((HEAP32[i7 >> 2] | 0) != (i24 | 0)) { - _abort(); - } - i4 = i6 + 8 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i7 >> 2] = i6; - HEAP32[i4 >> 2] = i5; - i22 = i6; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i3 | 0) != 0) { - i4 = HEAP32[i24 + 28 >> 2] | 0; - i5 = 344 + (i4 << 2) | 0; - if ((i24 | 0) == (HEAP32[i5 >> 2] | 0)) { - HEAP32[i5 >> 2] = i22; - if ((i22 | 0) == 0) { - HEAP32[44 >> 2] = HEAP32[44 >> 2] & ~(1 << i4); - break; - } - } else { - if (i3 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i4 = i3 + 16 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i4 >> 2] = i22; - } else { - HEAP32[i3 + 20 >> 2] = i22; - } - if ((i22 | 0) == 0) { - break; - } - } - if (i22 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i22 + 24 >> 2] = i3; - i3 = HEAP32[i24 + 16 >> 2] | 0; - do { - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 16 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } while (0); - i3 = HEAP32[i24 + 20 >> 2] | 0; - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 20 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } - } while (0); - L204 : do { - if (!(i25 >>> 0 < 16)) { - HEAP32[i24 + 4 >> 2] = i12 | 3; - HEAP32[i24 + (i12 | 4) >> 2] = i25 | 1; - HEAP32[i24 + (i25 + i12) >> 2] = i25; - i4 = i25 >>> 3; - if (i25 >>> 0 < 256) { - i6 = i4 << 1; - i3 = 80 + (i6 << 2) | 0; - i5 = HEAP32[10] | 0; - i4 = 1 << i4; - if ((i5 & i4 | 0) != 0) { - i5 = 80 + (i6 + 2 << 2) | 0; - i4 = HEAP32[i5 >> 2] | 0; - if (i4 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - i21 = i5; - i20 = i4; - } - } else { - HEAP32[10] = i5 | i4; - i21 = 80 + (i6 + 2 << 2) | 0; - i20 = i3; - } - HEAP32[i21 >> 2] = i2; - HEAP32[i20 + 12 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i20; - HEAP32[i24 + (i12 + 12) >> 2] = i3; - break; - } - i3 = i25 >>> 8; - if ((i3 | 0) != 0) { - if (i25 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i25 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i6 = 344 + (i3 << 2) | 0; - HEAP32[i24 + (i12 + 28) >> 2] = i3; - HEAP32[i24 + (i12 + 20) >> 2] = 0; - HEAP32[i24 + (i12 + 16) >> 2] = 0; - i4 = HEAP32[44 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[44 >> 2] = i4 | i5; - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i6; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break; - } - i4 = HEAP32[i6 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L225 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i25 | 0)) { - i3 = i25 << i3; - while (1) { - i6 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i25 | 0)) { - i18 = i5; - break L225; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i6 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i4; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break L204; - } - } else { - i18 = i4; - } - } while (0); - i4 = i18 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[56 >> 2] | 0; - if (i18 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i2; - HEAP32[i4 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i3; - HEAP32[i24 + (i12 + 12) >> 2] = i18; - HEAP32[i24 + (i12 + 24) >> 2] = 0; - break; - } - } else { - i32 = i25 + i12 | 0; - HEAP32[i24 + 4 >> 2] = i32 | 3; - i32 = i24 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - } while (0); - i32 = i24 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - i12 = -1; - } - } - } while (0); - i18 = HEAP32[48 >> 2] | 0; - if (!(i12 >>> 0 > i18 >>> 0)) { - i3 = i18 - i12 | 0; - i2 = HEAP32[60 >> 2] | 0; - if (i3 >>> 0 > 15) { - HEAP32[60 >> 2] = i2 + i12; - HEAP32[48 >> 2] = i3; - HEAP32[i2 + (i12 + 4) >> 2] = i3 | 1; - HEAP32[i2 + i18 >> 2] = i3; - HEAP32[i2 + 4 >> 2] = i12 | 3; - } else { - HEAP32[48 >> 2] = 0; - HEAP32[60 >> 2] = 0; - HEAP32[i2 + 4 >> 2] = i18 | 3; - i32 = i2 + (i18 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - i32 = i2 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[52 >> 2] | 0; - if (i12 >>> 0 < i18 >>> 0) { - i31 = i18 - i12 | 0; - HEAP32[52 >> 2] = i31; - i32 = HEAP32[64 >> 2] | 0; - HEAP32[64 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - do { - if ((HEAP32[128] | 0) == 0) { - i18 = _sysconf(30) | 0; - if ((i18 + -1 & i18 | 0) == 0) { - HEAP32[520 >> 2] = i18; - HEAP32[516 >> 2] = i18; - HEAP32[524 >> 2] = -1; - HEAP32[528 >> 2] = -1; - HEAP32[532 >> 2] = 0; - HEAP32[484 >> 2] = 0; - HEAP32[128] = (_time(0) | 0) & -16 ^ 1431655768; - break; - } else { - _abort(); - } - } - } while (0); - i20 = i12 + 48 | 0; - i25 = HEAP32[520 >> 2] | 0; - i21 = i12 + 47 | 0; - i22 = i25 + i21 | 0; - i25 = 0 - i25 | 0; - i18 = i22 & i25; - if (!(i18 >>> 0 > i12 >>> 0)) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - i24 = HEAP32[480 >> 2] | 0; - if ((i24 | 0) != 0 ? (i31 = HEAP32[472 >> 2] | 0, i32 = i31 + i18 | 0, i32 >>> 0 <= i31 >>> 0 | i32 >>> 0 > i24 >>> 0) : 0) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - L269 : do { - if ((HEAP32[484 >> 2] & 4 | 0) == 0) { - i26 = HEAP32[64 >> 2] | 0; - L271 : do { - if ((i26 | 0) != 0) { - i24 = 488 | 0; - while (1) { - i27 = HEAP32[i24 >> 2] | 0; - if (!(i27 >>> 0 > i26 >>> 0) ? (i23 = i24 + 4 | 0, (i27 + (HEAP32[i23 >> 2] | 0) | 0) >>> 0 > i26 >>> 0) : 0) { - break; - } - i24 = HEAP32[i24 + 8 >> 2] | 0; - if ((i24 | 0) == 0) { - i13 = 182; - break L271; - } - } - if ((i24 | 0) != 0) { - i25 = i22 - (HEAP32[52 >> 2] | 0) & i25; - if (i25 >>> 0 < 2147483647) { - i13 = _sbrk(i25 | 0) | 0; - i26 = (i13 | 0) == ((HEAP32[i24 >> 2] | 0) + (HEAP32[i23 >> 2] | 0) | 0); - i22 = i13; - i24 = i25; - i23 = i26 ? i13 : -1; - i25 = i26 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i13 = 182; - } - } else { - i13 = 182; - } - } while (0); - do { - if ((i13 | 0) == 182) { - i23 = _sbrk(0) | 0; - if ((i23 | 0) != (-1 | 0)) { - i24 = i23; - i22 = HEAP32[516 >> 2] | 0; - i25 = i22 + -1 | 0; - if ((i25 & i24 | 0) == 0) { - i25 = i18; - } else { - i25 = i18 - i24 + (i25 + i24 & 0 - i22) | 0; - } - i24 = HEAP32[472 >> 2] | 0; - i26 = i24 + i25 | 0; - if (i25 >>> 0 > i12 >>> 0 & i25 >>> 0 < 2147483647) { - i22 = HEAP32[480 >> 2] | 0; - if ((i22 | 0) != 0 ? i26 >>> 0 <= i24 >>> 0 | i26 >>> 0 > i22 >>> 0 : 0) { - i25 = 0; - break; - } - i22 = _sbrk(i25 | 0) | 0; - i13 = (i22 | 0) == (i23 | 0); - i24 = i25; - i23 = i13 ? i23 : -1; - i25 = i13 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i25 = 0; - } - } - } while (0); - L291 : do { - if ((i13 | 0) == 191) { - i13 = 0 - i24 | 0; - if ((i23 | 0) != (-1 | 0)) { - i17 = i23; - i14 = i25; - i13 = 202; - break L269; - } - do { - if ((i22 | 0) != (-1 | 0) & i24 >>> 0 < 2147483647 & i24 >>> 0 < i20 >>> 0 ? (i19 = HEAP32[520 >> 2] | 0, i19 = i21 - i24 + i19 & 0 - i19, i19 >>> 0 < 2147483647) : 0) { - if ((_sbrk(i19 | 0) | 0) == (-1 | 0)) { - _sbrk(i13 | 0) | 0; - break L291; - } else { - i24 = i19 + i24 | 0; - break; - } - } - } while (0); - if ((i22 | 0) != (-1 | 0)) { - i17 = i22; - i14 = i24; - i13 = 202; - break L269; - } - } - } while (0); - HEAP32[484 >> 2] = HEAP32[484 >> 2] | 4; - i13 = 199; - } else { - i25 = 0; - i13 = 199; - } - } while (0); - if ((((i13 | 0) == 199 ? i18 >>> 0 < 2147483647 : 0) ? (i17 = _sbrk(i18 | 0) | 0, i16 = _sbrk(0) | 0, (i16 | 0) != (-1 | 0) & (i17 | 0) != (-1 | 0) & i17 >>> 0 < i16 >>> 0) : 0) ? (i15 = i16 - i17 | 0, i14 = i15 >>> 0 > (i12 + 40 | 0) >>> 0, i14) : 0) { - i14 = i14 ? i15 : i25; - i13 = 202; - } - if ((i13 | 0) == 202) { - i15 = (HEAP32[472 >> 2] | 0) + i14 | 0; - HEAP32[472 >> 2] = i15; - if (i15 >>> 0 > (HEAP32[476 >> 2] | 0) >>> 0) { - HEAP32[476 >> 2] = i15; - } - i15 = HEAP32[64 >> 2] | 0; - L311 : do { - if ((i15 | 0) != 0) { - i21 = 488 | 0; - while (1) { - i16 = HEAP32[i21 >> 2] | 0; - i19 = i21 + 4 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i17 | 0) == (i16 + i20 | 0)) { - i13 = 214; - break; - } - i18 = HEAP32[i21 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i21 = i18; - } - } - if (((i13 | 0) == 214 ? (HEAP32[i21 + 12 >> 2] & 8 | 0) == 0 : 0) ? i15 >>> 0 >= i16 >>> 0 & i15 >>> 0 < i17 >>> 0 : 0) { - HEAP32[i19 >> 2] = i20 + i14; - i2 = (HEAP32[52 >> 2] | 0) + i14 | 0; - i3 = i15 + 8 | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i32 = i2 - i3 | 0; - HEAP32[64 >> 2] = i15 + i3; - HEAP32[52 >> 2] = i32; - HEAP32[i15 + (i3 + 4) >> 2] = i32 | 1; - HEAP32[i15 + (i2 + 4) >> 2] = 40; - HEAP32[68 >> 2] = HEAP32[528 >> 2]; - break; - } - if (i17 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - HEAP32[56 >> 2] = i17; - } - i19 = i17 + i14 | 0; - i16 = 488 | 0; - while (1) { - if ((HEAP32[i16 >> 2] | 0) == (i19 | 0)) { - i13 = 224; - break; - } - i18 = HEAP32[i16 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i16 = i18; - } - } - if ((i13 | 0) == 224 ? (HEAP32[i16 + 12 >> 2] & 8 | 0) == 0 : 0) { - HEAP32[i16 >> 2] = i17; - i6 = i16 + 4 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i14; - i6 = i17 + 8 | 0; - if ((i6 & 7 | 0) == 0) { - i6 = 0; - } else { - i6 = 0 - i6 & 7; - } - i7 = i17 + (i14 + 8) | 0; - if ((i7 & 7 | 0) == 0) { - i13 = 0; - } else { - i13 = 0 - i7 & 7; - } - i15 = i17 + (i13 + i14) | 0; - i8 = i6 + i12 | 0; - i7 = i17 + i8 | 0; - i10 = i15 - (i17 + i6) - i12 | 0; - HEAP32[i17 + (i6 + 4) >> 2] = i12 | 3; - L348 : do { - if ((i15 | 0) != (HEAP32[64 >> 2] | 0)) { - if ((i15 | 0) == (HEAP32[60 >> 2] | 0)) { - i32 = (HEAP32[48 >> 2] | 0) + i10 | 0; - HEAP32[48 >> 2] = i32; - HEAP32[60 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i32 + i8) >> 2] = i32; - break; - } - i12 = i14 + 4 | 0; - i18 = HEAP32[i17 + (i12 + i13) >> 2] | 0; - if ((i18 & 3 | 0) == 1) { - i11 = i18 & -8; - i16 = i18 >>> 3; - do { - if (!(i18 >>> 0 < 256)) { - i9 = HEAP32[i17 + ((i13 | 24) + i14) >> 2] | 0; - i19 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - do { - if ((i19 | 0) == (i15 | 0)) { - i19 = i13 | 16; - i18 = i17 + (i12 + i19) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i18 = i17 + (i19 + i14) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i5 = 0; - break; - } - } - while (1) { - i20 = i16 + 20 | 0; - i19 = HEAP32[i20 >> 2] | 0; - if ((i19 | 0) != 0) { - i16 = i19; - i18 = i20; - continue; - } - i19 = i16 + 16 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i20 | 0) == 0) { - break; - } else { - i16 = i20; - i18 = i19; - } - } - if (i18 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i18 >> 2] = 0; - i5 = i16; - break; - } - } else { - i18 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - if (i18 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i18 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - i20 = i19 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i19; - HEAP32[i20 >> 2] = i18; - i5 = i19; - break; - } else { - _abort(); - } - } - } while (0); - if ((i9 | 0) != 0) { - i16 = HEAP32[i17 + (i14 + 28 + i13) >> 2] | 0; - i18 = 344 + (i16 << 2) | 0; - if ((i15 | 0) == (HEAP32[i18 >> 2] | 0)) { - HEAP32[i18 >> 2] = i5; - if ((i5 | 0) == 0) { - HEAP32[44 >> 2] = HEAP32[44 >> 2] & ~(1 << i16); - break; - } - } else { - if (i9 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i9 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i5; - } else { - HEAP32[i9 + 20 >> 2] = i5; - } - if ((i5 | 0) == 0) { - break; - } - } - if (i5 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i5 + 24 >> 2] = i9; - i15 = i13 | 16; - i9 = HEAP32[i17 + (i15 + i14) >> 2] | 0; - do { - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 16 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } while (0); - i9 = HEAP32[i17 + (i12 + i15) >> 2] | 0; - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 20 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } - } else { - i5 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - i12 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - i18 = 80 + (i16 << 1 << 2) | 0; - if ((i5 | 0) != (i18 | 0)) { - if (i5 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i5 + 12 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - } - if ((i12 | 0) == (i5 | 0)) { - HEAP32[10] = HEAP32[10] & ~(1 << i16); - break; - } - if ((i12 | 0) != (i18 | 0)) { - if (i12 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i12 + 8 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - i9 = i16; - } else { - _abort(); - } - } else { - i9 = i12 + 8 | 0; - } - HEAP32[i5 + 12 >> 2] = i12; - HEAP32[i9 >> 2] = i5; - } - } while (0); - i15 = i17 + ((i11 | i13) + i14) | 0; - i10 = i11 + i10 | 0; - } - i5 = i15 + 4 | 0; - HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -2; - HEAP32[i17 + (i8 + 4) >> 2] = i10 | 1; - HEAP32[i17 + (i10 + i8) >> 2] = i10; - i5 = i10 >>> 3; - if (i10 >>> 0 < 256) { - i10 = i5 << 1; - i2 = 80 + (i10 << 2) | 0; - i9 = HEAP32[10] | 0; - i5 = 1 << i5; - if ((i9 & i5 | 0) != 0) { - i9 = 80 + (i10 + 2 << 2) | 0; - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - i3 = i9; - i4 = i5; - } - } else { - HEAP32[10] = i9 | i5; - i3 = 80 + (i10 + 2 << 2) | 0; - i4 = i2; - } - HEAP32[i3 >> 2] = i7; - HEAP32[i4 + 12 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - break; - } - i3 = i10 >>> 8; - if ((i3 | 0) != 0) { - if (i10 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i10 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i4 = 344 + (i3 << 2) | 0; - HEAP32[i17 + (i8 + 28) >> 2] = i3; - HEAP32[i17 + (i8 + 20) >> 2] = 0; - HEAP32[i17 + (i8 + 16) >> 2] = 0; - i9 = HEAP32[44 >> 2] | 0; - i5 = 1 << i3; - if ((i9 & i5 | 0) == 0) { - HEAP32[44 >> 2] = i9 | i5; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L444 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i10 | 0)) { - i3 = i10 << i3; - while (1) { - i5 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i9 = HEAP32[i5 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } - if ((HEAP32[i9 + 4 >> 2] & -8 | 0) == (i10 | 0)) { - i2 = i9; - break L444; - } else { - i3 = i3 << 1; - i4 = i9; - } - } - if (i5 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break L348; - } - } else { - i2 = i4; - } - } while (0); - i4 = i2 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[56 >> 2] | 0; - if (i2 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i7; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i3; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - HEAP32[i17 + (i8 + 24) >> 2] = 0; - break; - } - } else { - i32 = (HEAP32[52 >> 2] | 0) + i10 | 0; - HEAP32[52 >> 2] = i32; - HEAP32[64 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - } - } while (0); - i32 = i17 + (i6 | 8) | 0; - STACKTOP = i1; - return i32 | 0; - } - i3 = 488 | 0; - while (1) { - i2 = HEAP32[i3 >> 2] | 0; - if (!(i2 >>> 0 > i15 >>> 0) ? (i11 = HEAP32[i3 + 4 >> 2] | 0, i10 = i2 + i11 | 0, i10 >>> 0 > i15 >>> 0) : 0) { - break; - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - } - i3 = i2 + (i11 + -39) | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i2 = i2 + (i11 + -47 + i3) | 0; - i2 = i2 >>> 0 < (i15 + 16 | 0) >>> 0 ? i15 : i2; - i3 = i2 + 8 | 0; - i4 = i17 + 8 | 0; - if ((i4 & 7 | 0) == 0) { - i4 = 0; - } else { - i4 = 0 - i4 & 7; - } - i32 = i14 + -40 - i4 | 0; - HEAP32[64 >> 2] = i17 + i4; - HEAP32[52 >> 2] = i32; - HEAP32[i17 + (i4 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[68 >> 2] = HEAP32[528 >> 2]; - HEAP32[i2 + 4 >> 2] = 27; - HEAP32[i3 + 0 >> 2] = HEAP32[488 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[492 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[496 >> 2]; - HEAP32[i3 + 12 >> 2] = HEAP32[500 >> 2]; - HEAP32[488 >> 2] = i17; - HEAP32[492 >> 2] = i14; - HEAP32[500 >> 2] = 0; - HEAP32[496 >> 2] = i3; - i4 = i2 + 28 | 0; - HEAP32[i4 >> 2] = 7; - if ((i2 + 32 | 0) >>> 0 < i10 >>> 0) { - while (1) { - i3 = i4 + 4 | 0; - HEAP32[i3 >> 2] = 7; - if ((i4 + 8 | 0) >>> 0 < i10 >>> 0) { - i4 = i3; - } else { - break; - } - } - } - if ((i2 | 0) != (i15 | 0)) { - i2 = i2 - i15 | 0; - i3 = i15 + (i2 + 4) | 0; - HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & -2; - HEAP32[i15 + 4 >> 2] = i2 | 1; - HEAP32[i15 + i2 >> 2] = i2; - i3 = i2 >>> 3; - if (i2 >>> 0 < 256) { - i4 = i3 << 1; - i2 = 80 + (i4 << 2) | 0; - i5 = HEAP32[10] | 0; - i3 = 1 << i3; - if ((i5 & i3 | 0) != 0) { - i4 = 80 + (i4 + 2 << 2) | 0; - i3 = HEAP32[i4 >> 2] | 0; - if (i3 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - i7 = i4; - i8 = i3; - } - } else { - HEAP32[10] = i5 | i3; - i7 = 80 + (i4 + 2 << 2) | 0; - i8 = i2; - } - HEAP32[i7 >> 2] = i15; - HEAP32[i8 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i8; - HEAP32[i15 + 12 >> 2] = i2; - break; - } - i3 = i2 >>> 8; - if ((i3 | 0) != 0) { - if (i2 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i2 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i7 = 344 + (i3 << 2) | 0; - HEAP32[i15 + 28 >> 2] = i3; - HEAP32[i15 + 20 >> 2] = 0; - HEAP32[i15 + 16 >> 2] = 0; - i4 = HEAP32[44 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[44 >> 2] = i4 | i5; - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i7; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break; - } - i4 = HEAP32[i7 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L499 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i2 | 0)) { - i3 = i2 << i3; - while (1) { - i7 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i7 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i2 | 0)) { - i6 = i5; - break L499; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i7 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i4; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break L311; - } - } else { - i6 = i4; - } - } while (0); - i4 = i6 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i2 = HEAP32[56 >> 2] | 0; - if (i6 >>> 0 < i2 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i2 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i15; - HEAP32[i4 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i3; - HEAP32[i15 + 12 >> 2] = i6; - HEAP32[i15 + 24 >> 2] = 0; - break; - } - } - } else { - i32 = HEAP32[56 >> 2] | 0; - if ((i32 | 0) == 0 | i17 >>> 0 < i32 >>> 0) { - HEAP32[56 >> 2] = i17; - } - HEAP32[488 >> 2] = i17; - HEAP32[492 >> 2] = i14; - HEAP32[500 >> 2] = 0; - HEAP32[76 >> 2] = HEAP32[128]; - HEAP32[72 >> 2] = -1; - i2 = 0; - do { - i32 = i2 << 1; - i31 = 80 + (i32 << 2) | 0; - HEAP32[80 + (i32 + 3 << 2) >> 2] = i31; - HEAP32[80 + (i32 + 2 << 2) >> 2] = i31; - i2 = i2 + 1 | 0; - } while ((i2 | 0) != 32); - i2 = i17 + 8 | 0; - if ((i2 & 7 | 0) == 0) { - i2 = 0; - } else { - i2 = 0 - i2 & 7; - } - i32 = i14 + -40 - i2 | 0; - HEAP32[64 >> 2] = i17 + i2; - HEAP32[52 >> 2] = i32; - HEAP32[i17 + (i2 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[68 >> 2] = HEAP32[528 >> 2]; - } - } while (0); - i2 = HEAP32[52 >> 2] | 0; - if (i2 >>> 0 > i12 >>> 0) { - i31 = i2 - i12 | 0; - HEAP32[52 >> 2] = i31; - i32 = HEAP32[64 >> 2] | 0; - HEAP32[64 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - HEAP32[(___errno_location() | 0) >> 2] = 12; - i32 = 0; - STACKTOP = i1; - return i32 | 0; -} -function _free(i7) { - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0; - i1 = STACKTOP; - if ((i7 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = i7 + -8 | 0; - i16 = HEAP32[56 >> 2] | 0; - if (i15 >>> 0 < i16 >>> 0) { - _abort(); - } - i13 = HEAP32[i7 + -4 >> 2] | 0; - i12 = i13 & 3; - if ((i12 | 0) == 1) { - _abort(); - } - i8 = i13 & -8; - i6 = i7 + (i8 + -8) | 0; - do { - if ((i13 & 1 | 0) == 0) { - i19 = HEAP32[i15 >> 2] | 0; - if ((i12 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = -8 - i19 | 0; - i13 = i7 + i15 | 0; - i12 = i19 + i8 | 0; - if (i13 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((i13 | 0) == (HEAP32[60 >> 2] | 0)) { - i2 = i7 + (i8 + -4) | 0; - if ((HEAP32[i2 >> 2] & 3 | 0) != 3) { - i2 = i13; - i11 = i12; - break; - } - HEAP32[48 >> 2] = i12; - HEAP32[i2 >> 2] = HEAP32[i2 >> 2] & -2; - HEAP32[i7 + (i15 + 4) >> 2] = i12 | 1; - HEAP32[i6 >> 2] = i12; - STACKTOP = i1; - return; - } - i18 = i19 >>> 3; - if (i19 >>> 0 < 256) { - i2 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - i11 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - i14 = 80 + (i18 << 1 << 2) | 0; - if ((i2 | 0) != (i14 | 0)) { - if (i2 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((HEAP32[i2 + 12 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - } - if ((i11 | 0) == (i2 | 0)) { - HEAP32[10] = HEAP32[10] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - if ((i11 | 0) != (i14 | 0)) { - if (i11 >>> 0 < i16 >>> 0) { - _abort(); - } - i14 = i11 + 8 | 0; - if ((HEAP32[i14 >> 2] | 0) == (i13 | 0)) { - i17 = i14; - } else { - _abort(); - } - } else { - i17 = i11 + 8 | 0; - } - HEAP32[i2 + 12 >> 2] = i11; - HEAP32[i17 >> 2] = i2; - i2 = i13; - i11 = i12; - break; - } - i17 = HEAP32[i7 + (i15 + 24) >> 2] | 0; - i18 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - do { - if ((i18 | 0) == (i13 | 0)) { - i19 = i7 + (i15 + 20) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i19 = i7 + (i15 + 16) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i14 = 0; - break; - } - } - while (1) { - i21 = i18 + 20 | 0; - i20 = HEAP32[i21 >> 2] | 0; - if ((i20 | 0) != 0) { - i18 = i20; - i19 = i21; - continue; - } - i20 = i18 + 16 | 0; - i21 = HEAP32[i20 >> 2] | 0; - if ((i21 | 0) == 0) { - break; - } else { - i18 = i21; - i19 = i20; - } - } - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } else { - HEAP32[i19 >> 2] = 0; - i14 = i18; - break; - } - } else { - i19 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } - i16 = i19 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - i20 = i18 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i18; - HEAP32[i20 >> 2] = i19; - i14 = i18; - break; - } else { - _abort(); - } - } - } while (0); - if ((i17 | 0) != 0) { - i18 = HEAP32[i7 + (i15 + 28) >> 2] | 0; - i16 = 344 + (i18 << 2) | 0; - if ((i13 | 0) == (HEAP32[i16 >> 2] | 0)) { - HEAP32[i16 >> 2] = i14; - if ((i14 | 0) == 0) { - HEAP32[44 >> 2] = HEAP32[44 >> 2] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - } else { - if (i17 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i17 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i14; - } else { - HEAP32[i17 + 20 >> 2] = i14; - } - if ((i14 | 0) == 0) { - i2 = i13; - i11 = i12; - break; - } - } - if (i14 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i14 + 24 >> 2] = i17; - i16 = HEAP32[i7 + (i15 + 16) >> 2] | 0; - do { - if ((i16 | 0) != 0) { - if (i16 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 16 >> 2] = i16; - HEAP32[i16 + 24 >> 2] = i14; - break; - } - } - } while (0); - i15 = HEAP32[i7 + (i15 + 20) >> 2] | 0; - if ((i15 | 0) != 0) { - if (i15 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 20 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i14; - i2 = i13; - i11 = i12; - break; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i15; - i11 = i8; - } - } while (0); - if (!(i2 >>> 0 < i6 >>> 0)) { - _abort(); - } - i12 = i7 + (i8 + -4) | 0; - i13 = HEAP32[i12 >> 2] | 0; - if ((i13 & 1 | 0) == 0) { - _abort(); - } - if ((i13 & 2 | 0) == 0) { - if ((i6 | 0) == (HEAP32[64 >> 2] | 0)) { - i21 = (HEAP32[52 >> 2] | 0) + i11 | 0; - HEAP32[52 >> 2] = i21; - HEAP32[64 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - if ((i2 | 0) != (HEAP32[60 >> 2] | 0)) { - STACKTOP = i1; - return; - } - HEAP32[60 >> 2] = 0; - HEAP32[48 >> 2] = 0; - STACKTOP = i1; - return; - } - if ((i6 | 0) == (HEAP32[60 >> 2] | 0)) { - i21 = (HEAP32[48 >> 2] | 0) + i11 | 0; - HEAP32[48 >> 2] = i21; - HEAP32[60 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - HEAP32[i2 + i21 >> 2] = i21; - STACKTOP = i1; - return; - } - i11 = (i13 & -8) + i11 | 0; - i12 = i13 >>> 3; - do { - if (!(i13 >>> 0 < 256)) { - i10 = HEAP32[i7 + (i8 + 16) >> 2] | 0; - i15 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - do { - if ((i15 | 0) == (i6 | 0)) { - i13 = i7 + (i8 + 12) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i13 = i7 + (i8 + 8) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i9 = 0; - break; - } - } - while (1) { - i14 = i12 + 20 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) != 0) { - i12 = i15; - i13 = i14; - continue; - } - i14 = i12 + 16 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) == 0) { - break; - } else { - i12 = i15; - i13 = i14; - } - } - if (i13 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i13 >> 2] = 0; - i9 = i12; - break; - } - } else { - i13 = HEAP32[i7 + i8 >> 2] | 0; - if (i13 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i14 = i13 + 12 | 0; - if ((HEAP32[i14 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - i12 = i15 + 8 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i14 >> 2] = i15; - HEAP32[i12 >> 2] = i13; - i9 = i15; - break; - } else { - _abort(); - } - } - } while (0); - if ((i10 | 0) != 0) { - i12 = HEAP32[i7 + (i8 + 20) >> 2] | 0; - i13 = 344 + (i12 << 2) | 0; - if ((i6 | 0) == (HEAP32[i13 >> 2] | 0)) { - HEAP32[i13 >> 2] = i9; - if ((i9 | 0) == 0) { - HEAP32[44 >> 2] = HEAP32[44 >> 2] & ~(1 << i12); - break; - } - } else { - if (i10 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i12 = i10 + 16 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i12 >> 2] = i9; - } else { - HEAP32[i10 + 20 >> 2] = i9; - } - if ((i9 | 0) == 0) { - break; - } - } - if (i9 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i9 + 24 >> 2] = i10; - i6 = HEAP32[i7 + (i8 + 8) >> 2] | 0; - do { - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 16 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } while (0); - i6 = HEAP32[i7 + (i8 + 12) >> 2] | 0; - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 20 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } - } else { - i9 = HEAP32[i7 + i8 >> 2] | 0; - i7 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - i8 = 80 + (i12 << 1 << 2) | 0; - if ((i9 | 0) != (i8 | 0)) { - if (i9 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i9 + 12 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - } - if ((i7 | 0) == (i9 | 0)) { - HEAP32[10] = HEAP32[10] & ~(1 << i12); - break; - } - if ((i7 | 0) != (i8 | 0)) { - if (i7 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i7 + 8 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) { - i10 = i8; - } else { - _abort(); - } - } else { - i10 = i7 + 8 | 0; - } - HEAP32[i9 + 12 >> 2] = i7; - HEAP32[i10 >> 2] = i9; - } - } while (0); - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - if ((i2 | 0) == (HEAP32[60 >> 2] | 0)) { - HEAP32[48 >> 2] = i11; - STACKTOP = i1; - return; - } - } else { - HEAP32[i12 >> 2] = i13 & -2; - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - } - i6 = i11 >>> 3; - if (i11 >>> 0 < 256) { - i7 = i6 << 1; - i3 = 80 + (i7 << 2) | 0; - i8 = HEAP32[10] | 0; - i6 = 1 << i6; - if ((i8 & i6 | 0) != 0) { - i6 = 80 + (i7 + 2 << 2) | 0; - i7 = HEAP32[i6 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - i4 = i6; - i5 = i7; - } - } else { - HEAP32[10] = i8 | i6; - i4 = 80 + (i7 + 2 << 2) | 0; - i5 = i3; - } - HEAP32[i4 >> 2] = i2; - HEAP32[i5 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i3; - STACKTOP = i1; - return; - } - i4 = i11 >>> 8; - if ((i4 | 0) != 0) { - if (i11 >>> 0 > 16777215) { - i4 = 31; - } else { - i20 = (i4 + 1048320 | 0) >>> 16 & 8; - i21 = i4 << i20; - i19 = (i21 + 520192 | 0) >>> 16 & 4; - i21 = i21 << i19; - i4 = (i21 + 245760 | 0) >>> 16 & 2; - i4 = 14 - (i19 | i20 | i4) + (i21 << i4 >>> 15) | 0; - i4 = i11 >>> (i4 + 7 | 0) & 1 | i4 << 1; - } - } else { - i4 = 0; - } - i5 = 344 + (i4 << 2) | 0; - HEAP32[i2 + 28 >> 2] = i4; - HEAP32[i2 + 20 >> 2] = 0; - HEAP32[i2 + 16 >> 2] = 0; - i7 = HEAP32[44 >> 2] | 0; - i6 = 1 << i4; - L199 : do { - if ((i7 & i6 | 0) != 0) { - i5 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) == 31) { - i4 = 0; - } else { - i4 = 25 - (i4 >>> 1) | 0; - } - L205 : do { - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) != (i11 | 0)) { - i4 = i11 << i4; - i7 = i5; - while (1) { - i6 = i7 + (i4 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i11 | 0)) { - i3 = i5; - break L205; - } else { - i4 = i4 << 1; - i7 = i5; - } - } - if (i6 >>> 0 < (HEAP32[56 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i7; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - break L199; - } - } else { - i3 = i5; - } - } while (0); - i5 = i3 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i6 = HEAP32[56 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - if (i4 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i4 + 12 >> 2] = i2; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i4; - HEAP32[i2 + 12 >> 2] = i3; - HEAP32[i2 + 24 >> 2] = 0; - break; - } - } else { - HEAP32[44 >> 2] = i7 | i6; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - } - } while (0); - i21 = (HEAP32[72 >> 2] | 0) + -1 | 0; - HEAP32[72 >> 2] = i21; - if ((i21 | 0) == 0) { - i2 = 496 | 0; - } else { - STACKTOP = i1; - return; - } - while (1) { - i2 = HEAP32[i2 >> 2] | 0; - if ((i2 | 0) == 0) { - break; - } else { - i2 = i2 + 8 | 0; - } - } - HEAP32[72 >> 2] = -1; - STACKTOP = i1; - return; -} -function _main(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - L1 : do { - if ((i3 | 0) > 1) { - i3 = HEAP8[HEAP32[i5 + 4 >> 2] | 0] | 0; - switch (i3 | 0) { - case 50: - { - i3 = 400; - break L1; - } - case 51: - { - i4 = 4; - break L1; - } - case 52: - { - i3 = 4e3; - break L1; - } - case 53: - { - i3 = 8e3; - break L1; - } - case 49: - { - i3 = 55; - break L1; - } - case 48: - { - i7 = 0; - STACKTOP = i1; - return i7 | 0; - } - default: - { - HEAP32[i2 >> 2] = i3 + -48; - _printf(8, i2 | 0) | 0; - i7 = -1; - STACKTOP = i1; - return i7 | 0; - } - } - } else { - i4 = 4; - } - } while (0); - if ((i4 | 0) == 4) { - i3 = 800; - } - i5 = _malloc(1048576) | 0; - i6 = 0; - i4 = 0; - do { - i7 = 0; - while (1) { - HEAP8[i5 + i7 | 0] = i7 + i6; - i7 = i7 + 1 | 0; - if ((i7 | 0) == 1048576) { - i7 = 0; - break; - } - } - do { - i6 = (HEAP8[i5 + i7 | 0] & 1) + i6 | 0; - i7 = i7 + 1 | 0; - } while ((i7 | 0) != 1048576); - i6 = (i6 | 0) % 1e3 | 0; - i4 = i4 + 1 | 0; - } while ((i4 | 0) < (i3 | 0)); - HEAP32[i2 >> 2] = i6; - _printf(24, i2 | 0) | 0; - i7 = 0; - STACKTOP = i1; - return i7 | 0; -} -function _memcpy(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0; - i4 = i3 | 0; - if ((i3 & 3) == (i2 & 3)) { - while (i3 & 3) { - if ((i1 | 0) == 0) return i4 | 0; - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - while ((i1 | 0) >= 4) { - HEAP32[i3 >> 2] = HEAP32[i2 >> 2]; - i3 = i3 + 4 | 0; - i2 = i2 + 4 | 0; - i1 = i1 - 4 | 0; - } - } - while ((i1 | 0) > 0) { - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - return i4 | 0; -} -function _memset(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i4 = i4 & 255; - i7 = i1 & 3; - i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24; - i5 = i2 & ~3; - if (i7) { - i7 = i1 + 4 - i7 | 0; - while ((i1 | 0) < (i7 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i5 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i2 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; - HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0]; - HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0]; - HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0]; - HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0]; -} -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; -} -function runPostSets() {} -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1; - while (HEAP8[i2] | 0) { - i2 = i2 + 1 | 0; - } - return i2 - i1 | 0; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 7 & -8; - return i2 | 0; -} -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if ((__THREW__ | 0) == 0) { - __THREW__ = i1; - threwValue = i2; - } -} -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} -function setTempRet9(i1) { - i1 = i1 | 0; - tempRet9 = i1; -} -function setTempRet8(i1) { - i1 = i1 | 0; - tempRet8 = i1; -} -function setTempRet7(i1) { - i1 = i1 | 0; - tempRet7 = i1; -} -function setTempRet6(i1) { - i1 = i1 | 0; - tempRet6 = i1; -} -function setTempRet5(i1) { - i1 = i1 | 0; - tempRet5 = i1; -} -function setTempRet4(i1) { - i1 = i1 | 0; - tempRet4 = i1; -} -function setTempRet3(i1) { - i1 = i1 | 0; - tempRet3 = i1; -} -function setTempRet2(i1) { - i1 = i1 | 0; - tempRet2 = i1; -} -function setTempRet1(i1) { - i1 = i1 | 0; - tempRet1 = i1; -} -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} -function stackSave() { - return STACKTOP | 0; -} - -// EMSCRIPTEN_END_FUNCS - - - return { _strlen: _strlen, _free: _free, _main: _main, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9 }; -}) -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "_fflush": _fflush, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_printf": _printf, "_send": _send, "_pwrite": _pwrite, "_abort": _abort, "___setErrNo": ___setErrNo, "_fwrite": _fwrite, "_sbrk": _sbrk, "_time": _time, "_mkport": _mkport, "__reallyNegative": __reallyNegative, "__formatString": __formatString, "_fileno": _fileno, "_write": _write, "_fprintf": _fprintf, "_sysconf": _sysconf, "___errno_location": ___errno_location, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity }, buffer); -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _free = Module["_free"] = asm["_free"]; -var _main = Module["_main"] = asm["_main"]; -var _memset = Module["_memset"] = asm["_memset"]; -var _malloc = Module["_malloc"] = asm["_malloc"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included -var i64Math = null; - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - var data = Module['readBinary'](memoryInitializer); - HEAPU8.set(data, STATIC_BASE); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - HEAPU8.set(data, STATIC_BASE); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run([].concat(Module["arguments"])); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - 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("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; - - throw 'abort() at ' + stackTrace() + extra; -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - - -run([].concat(Module["arguments"])); diff --git a/implementation-contributed/v8/mjsunit/asm/embenchen/primes.js b/implementation-contributed/v8/mjsunit/asm/embenchen/primes.js deleted file mode 100644 index 32f80b836cc..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/embenchen/primes.js +++ /dev/null @@ -1,5984 +0,0 @@ -var EXPECTED_OUTPUT = 'lastprime: 387677.\n'; -var Module = { - arguments: [1], - print: function(x) {Module.printBuffer += x + '\n';}, - preRun: [function() {Module.printBuffer = ''}], - postRun: [function() { - assertEquals(EXPECTED_OUTPUT, Module.printBuffer); - }], -}; -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - window['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependant on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - var source = Pointer_stringify(code); - if (source[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (source.indexOf('"', 1) === source.length-1) { - source = source.substr(1, source.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - try { - var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node - } catch(e) { - Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'); - throw e; - } - return Runtime.asmConstCache[code] = evalled; - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - /* TODO: use TextEncoder when present, - var encoder = new TextEncoder(); - encoder['encoding'] = "utf-8"; - var utf8Array = encoder['encode'](aMsg.data); - */ - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - getCompilerSetting: function (name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - var subs = []; - var first = true; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - if (rawList) { - if (ret) { - list.push(ret + '?'); - } - return list; - } else { - return ret + flushList(); - } - } - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'JS engine does not provide full typed array support'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === - - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(35); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([101,114,114,111,114,58,32,37,100,92,110,0,0,0,0,0,108,97,115,116,112,114,105,109,101,58,32,37,100,46,10,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - function _malloc(bytes) { - /* Over-allocate to make sure it is byte-aligned by 8. - * This will leak memory, but this is only the dummy - * implementation (replaced by dlmalloc normally) so - * not an issue. - */ - var ptr = Runtime.dynamicAlloc(bytes + 8); - return (ptr+8) & 0xFFFFFFF8; - } - Module["_malloc"] = _malloc; - - - Module["_memset"] = _memset; - - function _free() { - } - Module["_free"] = _free; - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - Module["_memcpy"] = _memcpy; - - - - - 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}; - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - // reuse all of the core MEMFS functionality - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },getDB:function (name, callback) { - // check the cache first - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - req.onupgradeneeded = function(e) { - var db = e.target.result; - var transaction = e.target.transaction; - - var fileStore; - - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - - fileStore.createIndex('timestamp', 'timestamp', { unique: false }); - }; - req.onsuccess = function() { - db = req.result; - - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function() { - callback(this.error); - }; - },getLocalSet:function (mount, callback) { - var entries = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat; - - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); - } - - entries[path] = { timestamp: stat.mtime }; - } - - return callback(null, { type: 'local', entries: entries }); - },getRemoteSet:function (mount, callback) { - var entries = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index('timestamp'); - - index.openKeyCursor().onsuccess = function(event) { - var cursor = event.target.result; - - if (!cursor) { - return callback(null, { type: 'remote', db: db, entries: entries }); - } - - entries[cursor.primaryKey] = { timestamp: cursor.key }; - - cursor.continue(); - }; - }); - },loadLocalEntry:function (path, callback) { - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode }); - } else if (FS.isFile(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); - } else { - return callback(new Error('node type not supported')); - } - },storeLocalEntry:function (path, entry, callback) { - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); - } else { - return callback(new Error('node type not supported')); - } - - FS.utime(path, entry.timestamp, entry.timestamp); - } catch (e) { - return callback(e); - } - - callback(null); - },removeLocalEntry:function (path, callback) { - try { - var lookup = FS.lookupPath(path); - var stat = FS.stat(path); - - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - - callback(null); - },loadRemoteEntry:function (store, path, callback) { - var req = store.get(path); - req.onsuccess = function(event) { callback(null, event.target.result); }; - req.onerror = function() { callback(this.error); }; - },storeRemoteEntry:function (store, path, entry, callback) { - var req = store.put(entry, path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },removeRemoteEntry:function (store, path, callback) { - var req = store.delete(path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create.push(key); - total++; - } - }); - - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - var e = dst.entries[key]; - var e2 = src.entries[key]; - if (!e2) { - remove.push(key); - total++; - } - }); - - if (!total) { - return callback(null); - } - - var errored = false; - var completed = 0; - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= total) { - return callback(null); - } - }; - - transaction.onerror = function() { done(this.error); }; - - // sort paths in ascending order so directory entries are created - // before the files inside them - create.sort().forEach(function (path) { - if (dst.type === 'local') { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - - // sort paths in descending order so files are deleted before their - // parent directories - remove.sort().reverse().forEach(function(path) { - if (dst.type === 'local') { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || {}; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return !!node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },getStreamFromPtr:function (ptr) { - return FS.streams[ptr - 1]; - },getPtrForStream:function (stream) { - return stream ? stream.fd + 1 : 0; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },getMounts:function (mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= mounts.length) { - callback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function (type, opts, mountpoint) { - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0, opts.canOwn); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }};var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }};var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - - // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module - // Module['forcedAspectRatio'] = 4 / 3; - - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock'] || - canvas['msRequestPointerLock'] || - function(){}; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - document['msExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas || - document['msPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - document.addEventListener('mspointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - var canvasContainer = canvas.parentNode; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvasContainer) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen'] || - document['msExitFullscreen'] || - document['exitFullscreen'] || - function() {}; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else { - - // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - - if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - Browser.updateCanvasDimensions(canvas); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - document.addEventListener('MSFullscreenChange', fullScreenChange, false); - } - - // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - - // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) - canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || - canvasContainer['mozRequestFullScreen'] || - canvasContainer['msRequestFullscreen'] || - (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvasContainer.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },getMouseWheelDelta:function (event) { - return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },updateCanvasDimensions:function (canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { - if (w/h < Module['forcedAspectRatio']) { - w = Math.round(h * Module['forcedAspectRatio']); - } else { - h = Math.round(w / Module['forcedAspectRatio']); - } - } - if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != 'undefined') { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != 'undefined') { - if (w != wNative || h != hNative) { - canvas.style.setProperty( "width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } - } - }}; - - - - - - - - function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - url = url + addr + ':' + port; - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - // The node ws library API for specifying optional subprotocol is slightly different than the browser's. - var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols; - - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fileno(stream) { - // int fileno(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - stream = FS.getStreamFromPtr(stream); - if (!stream) return -1; - return stream.fd; - }function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var fd = _fileno(stream); - var bytesWritten = _write(fd, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - - - Module["_strlen"] = _strlen; - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = HEAPF64[(((varargs)+(argIndex))>>3)]; - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision < 0) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - }function _printf(format, varargs) { - // int printf(const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var stdout = HEAP32[((_stdout)>>2)]; - return _fprintf(stdout, format, varargs); - } - - - var _sqrtf=Math_sqrt; -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - -var Math_min = Math.min; -function asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm = (function(global, env, buffer) { - 'use asm'; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = +env.NaN, inf = +env.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var abort=env.abort; - var assert=env.assert; - var asmPrintInt=env.asmPrintInt; - var asmPrintFloat=env.asmPrintFloat; - var Math_min=env.min; - var _free=env._free; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _printf=env._printf; - var _send=env._send; - var _pwrite=env._pwrite; - var _sqrtf=env._sqrtf; - var __reallyNegative=env.__reallyNegative; - var _fwrite=env._fwrite; - var _malloc=env._malloc; - var _mkport=env._mkport; - var _fprintf=env._fprintf; - var ___setErrNo=env.___setErrNo; - var __formatString=env.__formatString; - var _fileno=env._fileno; - var _fflush=env._fflush; - var _write=env._write; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function _main(i3, i5) { - i3 = i3 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i4 = 0, i6 = 0, i7 = 0, d8 = 0.0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - L1 : do { - if ((i3 | 0) > 1) { - i3 = HEAP8[HEAP32[i5 + 4 >> 2] | 0] | 0; - switch (i3 | 0) { - case 50: - { - i3 = 13e4; - break L1; - } - case 51: - { - i4 = 4; - break L1; - } - case 52: - { - i3 = 61e4; - break L1; - } - case 53: - { - i3 = 101e4; - break L1; - } - case 49: - { - i3 = 33e3; - break L1; - } - case 48: - { - i7 = 0; - STACKTOP = i1; - return i7 | 0; - } - default: - { - HEAP32[i2 >> 2] = i3 + -48; - _printf(8, i2 | 0) | 0; - i7 = -1; - STACKTOP = i1; - return i7 | 0; - } - } - } else { - i4 = 4; - } - } while (0); - if ((i4 | 0) == 4) { - i3 = 22e4; - } - i4 = 2; - i5 = 0; - while (1) { - d8 = +Math_sqrt(+(+(i4 | 0))); - L15 : do { - if (d8 > 2.0) { - i7 = 2; - while (1) { - i6 = i7 + 1 | 0; - if (((i4 | 0) % (i7 | 0) | 0 | 0) == 0) { - i6 = 0; - break L15; - } - if (+(i6 | 0) < d8) { - i7 = i6; - } else { - i6 = 1; - break; - } - } - } else { - i6 = 1; - } - } while (0); - i5 = i6 + i5 | 0; - if ((i5 | 0) >= (i3 | 0)) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - HEAP32[i2 >> 2] = i4; - _printf(24, i2 | 0) | 0; - i7 = 0; - STACKTOP = i1; - return i7 | 0; -} -function _memcpy(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0; - i4 = i3 | 0; - if ((i3 & 3) == (i2 & 3)) { - while (i3 & 3) { - if ((i1 | 0) == 0) return i4 | 0; - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - while ((i1 | 0) >= 4) { - HEAP32[i3 >> 2] = HEAP32[i2 >> 2]; - i3 = i3 + 4 | 0; - i2 = i2 + 4 | 0; - i1 = i1 - 4 | 0; - } - } - while ((i1 | 0) > 0) { - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - return i4 | 0; -} -function runPostSets() {} -function _memset(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i4 = i4 & 255; - i7 = i1 & 3; - i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24; - i5 = i2 & ~3; - if (i7) { - i7 = i1 + 4 - i7 | 0; - while ((i1 | 0) < (i7 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i5 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i2 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; - HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0]; - HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0]; - HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0]; - HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0]; -} -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 7 & -8; - return i2 | 0; -} -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1; - while (HEAP8[i2] | 0) { - i2 = i2 + 1 | 0; - } - return i2 - i1 | 0; -} -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if ((__THREW__ | 0) == 0) { - __THREW__ = i1; - threwValue = i2; - } -} -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} -function setTempRet9(i1) { - i1 = i1 | 0; - tempRet9 = i1; -} -function setTempRet8(i1) { - i1 = i1 | 0; - tempRet8 = i1; -} -function setTempRet7(i1) { - i1 = i1 | 0; - tempRet7 = i1; -} -function setTempRet6(i1) { - i1 = i1 | 0; - tempRet6 = i1; -} -function setTempRet5(i1) { - i1 = i1 | 0; - tempRet5 = i1; -} -function setTempRet4(i1) { - i1 = i1 | 0; - tempRet4 = i1; -} -function setTempRet3(i1) { - i1 = i1 | 0; - tempRet3 = i1; -} -function setTempRet2(i1) { - i1 = i1 | 0; - tempRet2 = i1; -} -function setTempRet1(i1) { - i1 = i1 | 0; - tempRet1 = i1; -} -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} -function stackSave() { - return STACKTOP | 0; -} - -// EMSCRIPTEN_END_FUNCS - - - return { _strlen: _strlen, _memcpy: _memcpy, _main: _main, _memset: _memset, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9 }; -}) -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "_free": _free, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_printf": _printf, "_send": _send, "_pwrite": _pwrite, "_sqrtf": _sqrtf, "__reallyNegative": __reallyNegative, "_fwrite": _fwrite, "_malloc": _malloc, "_mkport": _mkport, "_fprintf": _fprintf, "___setErrNo": ___setErrNo, "__formatString": __formatString, "_fileno": _fileno, "_fflush": _fflush, "_write": _write, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity }, buffer); -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var _main = Module["_main"] = asm["_main"]; -var _memset = Module["_memset"] = asm["_memset"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included -var i64Math = null; - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - var data = Module['readBinary'](memoryInitializer); - HEAPU8.set(data, STATIC_BASE); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - HEAPU8.set(data, STATIC_BASE); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run([].concat(Module["arguments"])); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - 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("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; - - throw 'abort() at ' + stackTrace() + extra; -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - - -run([].concat(Module["arguments"])); diff --git a/implementation-contributed/v8/mjsunit/asm/embenchen/zlib.js b/implementation-contributed/v8/mjsunit/asm/embenchen/zlib.js deleted file mode 100644 index d90ee3851bf..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/embenchen/zlib.js +++ /dev/null @@ -1,14752 +0,0 @@ -var EXPECTED_OUTPUT = 'sizes: 100000,25906\nok.\n'; -var Module = { - arguments: [1], - print: function(x) {Module.printBuffer += x + '\n';}, - preRun: [function() {Module.printBuffer = ''}], - postRun: [function() { - assertEquals(EXPECTED_OUTPUT, Module.printBuffer); - }], -}; -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - window['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependant on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - var source = Pointer_stringify(code); - if (source[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (source.indexOf('"', 1) === source.length-1) { - source = source.substr(1, source.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - try { - var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node - } catch(e) { - Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'); - throw e; - } - return Runtime.asmConstCache[code] = evalled; - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - /* TODO: use TextEncoder when present, - var encoder = new TextEncoder(); - encoder['encoding'] = "utf-8"; - var utf8Array = encoder['encode'](aMsg.data); - */ - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - getCompilerSetting: function (name) { - throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work'; - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - var subs = []; - var first = true; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - if (rawList) { - if (ret) { - list.push(ret + '?'); - } - return list; - } else { - return ret + flushList(); - } - } - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'JS engine does not provide full typed array support'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === - - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(14963); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,105,122,101,115,58,32,37,100,44,37,100,10,0,0,0,100,101,99,111,109,112,114,101,115,115,101,100,83,105,122,101,32,61,61,32,115,105,122,101,0,0,0,0,0,0,0,0,47,116,109,112,47,101,109,115,99,114,105,112,116,101,110,95,116,101,109,112,47,122,108,105,98,46,99,0,0,0,0,0,100,111,105,116,0,0,0,0,115,116,114,99,109,112,40,98,117,102,102,101,114,44,32,98,117,102,102,101,114,51,41,32,61,61,32,48,0,0,0,0,101,114,114,111,114,58,32,37,100,92,110,0,0,0,0,0,111,107,46,0,0,0,0,0,49,46,50,46,53,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,4,0,8,0,4,0,2,0,0,0,4,0,5,0,16,0,8,0,2,0,0,0,4,0,6,0,32,0,32,0,2,0,0,0,4,0,4,0,16,0,16,0,3,0,0,0,8,0,16,0,32,0,32,0,3,0,0,0,8,0,16,0,128,0,128,0,3,0,0,0,8,0,32,0,128,0,0,1,3,0,0,0,32,0,128,0,2,1,0,4,3,0,0,0,32,0,2,1,2,1,0,16,3,0,0,0,0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,112,4,0,0,104,9,0,0,1,1,0,0,30,1,0,0,15,0,0,0,0,0,0,0,240,8,0,0,88,10,0,0,0,0,0,0,30,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,96,11,0,0,0,0,0,0,19,0,0,0,7,0,0,0,0,0,0,0,12,0,8,0,140,0,8,0,76,0,8,0,204,0,8,0,44,0,8,0,172,0,8,0,108,0,8,0,236,0,8,0,28,0,8,0,156,0,8,0,92,0,8,0,220,0,8,0,60,0,8,0,188,0,8,0,124,0,8,0,252,0,8,0,2,0,8,0,130,0,8,0,66,0,8,0,194,0,8,0,34,0,8,0,162,0,8,0,98,0,8,0,226,0,8,0,18,0,8,0,146,0,8,0,82,0,8,0,210,0,8,0,50,0,8,0,178,0,8,0,114,0,8,0,242,0,8,0,10,0,8,0,138,0,8,0,74,0,8,0,202,0,8,0,42,0,8,0,170,0,8,0,106,0,8,0,234,0,8,0,26,0,8,0,154,0,8,0,90,0,8,0,218,0,8,0,58,0,8,0,186,0,8,0,122,0,8,0,250,0,8,0,6,0,8,0,134,0,8,0,70,0,8,0,198,0,8,0,38,0,8,0,166,0,8,0,102,0,8,0,230,0,8,0,22,0,8,0,150,0,8,0,86,0,8,0,214,0,8,0,54,0,8,0,182,0,8,0,118,0,8,0,246,0,8,0,14,0,8,0,142,0,8,0,78,0,8,0,206,0,8,0,46,0,8,0,174,0,8,0,110,0,8,0,238,0,8,0,30,0,8,0,158,0,8,0,94,0,8,0,222,0,8,0,62,0,8,0,190,0,8,0,126,0,8,0,254,0,8,0,1,0,8,0,129,0,8,0,65,0,8,0,193,0,8,0,33,0,8,0,161,0,8,0,97,0,8,0,225,0,8,0,17,0,8,0,145,0,8,0,81,0,8,0,209,0,8,0,49,0,8,0,177,0,8,0,113,0,8,0,241,0,8,0,9,0,8,0,137,0,8,0,73,0,8,0,201,0,8,0,41,0,8,0,169,0,8,0,105,0,8,0,233,0,8,0,25,0,8,0,153,0,8,0,89,0,8,0,217,0,8,0,57,0,8,0,185,0,8,0,121,0,8,0,249,0,8,0,5,0,8,0,133,0,8,0,69,0,8,0,197,0,8,0,37,0,8,0,165,0,8,0,101,0,8,0,229,0,8,0,21,0,8,0,149,0,8,0,85,0,8,0,213,0,8,0,53,0,8,0,181,0,8,0,117,0,8,0,245,0,8,0,13,0,8,0,141,0,8,0,77,0,8,0,205,0,8,0,45,0,8,0,173,0,8,0,109,0,8,0,237,0,8,0,29,0,8,0,157,0,8,0,93,0,8,0,221,0,8,0,61,0,8,0,189,0,8,0,125,0,8,0,253,0,8,0,19,0,9,0,19,1,9,0,147,0,9,0,147,1,9,0,83,0,9,0,83,1,9,0,211,0,9,0,211,1,9,0,51,0,9,0,51,1,9,0,179,0,9,0,179,1,9,0,115,0,9,0,115,1,9,0,243,0,9,0,243,1,9,0,11,0,9,0,11,1,9,0,139,0,9,0,139,1,9,0,75,0,9,0,75,1,9,0,203,0,9,0,203,1,9,0,43,0,9,0,43,1,9,0,171,0,9,0,171,1,9,0,107,0,9,0,107,1,9,0,235,0,9,0,235,1,9,0,27,0,9,0,27,1,9,0,155,0,9,0,155,1,9,0,91,0,9,0,91,1,9,0,219,0,9,0,219,1,9,0,59,0,9,0,59,1,9,0,187,0,9,0,187,1,9,0,123,0,9,0,123,1,9,0,251,0,9,0,251,1,9,0,7,0,9,0,7,1,9,0,135,0,9,0,135,1,9,0,71,0,9,0,71,1,9,0,199,0,9,0,199,1,9,0,39,0,9,0,39,1,9,0,167,0,9,0,167,1,9,0,103,0,9,0,103,1,9,0,231,0,9,0,231,1,9,0,23,0,9,0,23,1,9,0,151,0,9,0,151,1,9,0,87,0,9,0,87,1,9,0,215,0,9,0,215,1,9,0,55,0,9,0,55,1,9,0,183,0,9,0,183,1,9,0,119,0,9,0,119,1,9,0,247,0,9,0,247,1,9,0,15,0,9,0,15,1,9,0,143,0,9,0,143,1,9,0,79,0,9,0,79,1,9,0,207,0,9,0,207,1,9,0,47,0,9,0,47,1,9,0,175,0,9,0,175,1,9,0,111,0,9,0,111,1,9,0,239,0,9,0,239,1,9,0,31,0,9,0,31,1,9,0,159,0,9,0,159,1,9,0,95,0,9,0,95,1,9,0,223,0,9,0,223,1,9,0,63,0,9,0,63,1,9,0,191,0,9,0,191,1,9,0,127,0,9,0,127,1,9,0,255,0,9,0,255,1,9,0,0,0,7,0,64,0,7,0,32,0,7,0,96,0,7,0,16,0,7,0,80,0,7,0,48,0,7,0,112,0,7,0,8,0,7,0,72,0,7,0,40,0,7,0,104,0,7,0,24,0,7,0,88,0,7,0,56,0,7,0,120,0,7,0,4,0,7,0,68,0,7,0,36,0,7,0,100,0,7,0,20,0,7,0,84,0,7,0,52,0,7,0,116,0,7,0,3,0,8,0,131,0,8,0,67,0,8,0,195,0,8,0,35,0,8,0,163,0,8,0,99,0,8,0,227,0,8,0,0,0,5,0,16,0,5,0,8,0,5,0,24,0,5,0,4,0,5,0,20,0,5,0,12,0,5,0,28,0,5,0,2,0,5,0,18,0,5,0,10,0,5,0,26,0,5,0,6,0,5,0,22,0,5,0,14,0,5,0,30,0,5,0,1,0,5,0,17,0,5,0,9,0,5,0,25,0,5,0,5,0,5,0,21,0,5,0,13,0,5,0,29,0,5,0,3,0,5,0,19,0,5,0,11,0,5,0,27,0,5,0,7,0,5,0,23,0,5,0,0,0,0,0,0,0,0,0,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,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,28,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,0,0,0,112,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,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,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,48,0,0,0,64,0,0,0,96,0,0,0,128,0,0,0,192,0,0,0,0,1,0,0,128,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,48,0,0,0,64,0,0,0,96,0,0,16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,0,0,0,0,0,0,0,49,46,50,46,53,0,0,0,110,101,101,100,32,100,105,99,116,105,111,110,97,114,121,0,115,116,114,101,97,109,32,101,110,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,105,108,101,32,101,114,114,111,114,0,0,0,0,0,0,115,116,114,101,97,109,32,101,114,114,111,114,0,0,0,0,100,97,116,97,32,101,114,114,111,114,0,0,0,0,0,0,105,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,0,0,0,0,0,98,117,102,102,101,114,32,101,114,114,111,114,0,0,0,0,105,110,99,111,109,112,97,116,105,98,108,101,32,118,101,114,115,105,111,110,0,0,0,0,184,11,0,0,200,11,0,0,216,11,0,0,224,11,0,0,240,11,0,0,0,12,0,0,16,12,0,0,40,12,0,0,56,12,0,0,216,11,0,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,0,0,0,0,65,49,27,25,130,98,54,50,195,83,45,43,4,197,108,100,69,244,119,125,134,167,90,86,199,150,65,79,8,138,217,200,73,187,194,209,138,232,239,250,203,217,244,227,12,79,181,172,77,126,174,181,142,45,131,158,207,28,152,135,81,18,194,74,16,35,217,83,211,112,244,120,146,65,239,97,85,215,174,46,20,230,181,55,215,181,152,28,150,132,131,5,89,152,27,130,24,169,0,155,219,250,45,176,154,203,54,169,93,93,119,230,28,108,108,255,223,63,65,212,158,14,90,205,162,36,132,149,227,21,159,140,32,70,178,167,97,119,169,190,166,225,232,241,231,208,243,232,36,131,222,195,101,178,197,218,170,174,93,93,235,159,70,68,40,204,107,111,105,253,112,118,174,107,49,57,239,90,42,32,44,9,7,11,109,56,28,18,243,54,70,223,178,7,93,198,113,84,112,237,48,101,107,244,247,243,42,187,182,194,49,162,117,145,28,137,52,160,7,144,251,188,159,23,186,141,132,14,121,222,169,37,56,239,178,60,255,121,243,115,190,72,232,106,125,27,197,65,60,42,222,88,5,79,121,240,68,126,98,233,135,45,79,194,198,28,84,219,1,138,21,148,64,187,14,141,131,232,35,166,194,217,56,191,13,197,160,56,76,244,187,33,143,167,150,10,206,150,141,19,9,0,204,92,72,49,215,69,139,98,250,110,202,83,225,119,84,93,187,186,21,108,160,163,214,63,141,136,151,14,150,145,80,152,215,222,17,169,204,199,210,250,225,236,147,203,250,245,92,215,98,114,29,230,121,107,222,181,84,64,159,132,79,89,88,18,14,22,25,35,21,15,218,112,56,36,155,65,35,61,167,107,253,101,230,90,230,124,37,9,203,87,100,56,208,78,163,174,145,1,226,159,138,24,33,204,167,51,96,253,188,42,175,225,36,173,238,208,63,180,45,131,18,159,108,178,9,134,171,36,72,201,234,21,83,208,41,70,126,251,104,119,101,226,246,121,63,47,183,72,36,54,116,27,9,29,53,42,18,4,242,188,83,75,179,141,72,82,112,222,101,121,49,239,126,96,254,243,230,231,191,194,253,254,124,145,208,213,61,160,203,204,250,54,138,131,187,7,145,154,120,84,188,177,57,101,167,168,75,152,131,59,10,169,152,34,201,250,181,9,136,203,174,16,79,93,239,95,14,108,244,70,205,63,217,109,140,14,194,116,67,18,90,243,2,35,65,234,193,112,108,193,128,65,119,216,71,215,54,151,6,230,45,142,197,181,0,165,132,132,27,188,26,138,65,113,91,187,90,104,152,232,119,67,217,217,108,90,30,79,45,21,95,126,54,12,156,45,27,39,221,28,0,62,18,0,152,185,83,49,131,160,144,98,174,139,209,83,181,146,22,197,244,221,87,244,239,196,148,167,194,239,213,150,217,246,233,188,7,174,168,141,28,183,107,222,49,156,42,239,42,133,237,121,107,202,172,72,112,211,111,27,93,248,46,42,70,225,225,54,222,102,160,7,197,127,99,84,232,84,34,101,243,77,229,243,178,2,164,194,169,27,103,145,132,48,38,160,159,41,184,174,197,228,249,159,222,253,58,204,243,214,123,253,232,207,188,107,169,128,253,90,178,153,62,9,159,178,127,56,132,171,176,36,28,44,241,21,7,53,50,70,42,30,115,119,49,7,180,225,112,72,245,208,107,81,54,131,70,122,119,178,93,99,78,215,250,203,15,230,225,210,204,181,204,249,141,132,215,224,74,18,150,175,11,35,141,182,200,112,160,157,137,65,187,132,70,93,35,3,7,108,56,26,196,63,21,49,133,14,14,40,66,152,79,103,3,169,84,126,192,250,121,85,129,203,98,76,31,197,56,129,94,244,35,152,157,167,14,179,220,150,21,170,27,0,84,229,90,49,79,252,153,98,98,215,216,83,121,206,23,79,225,73,86,126,250,80,149,45,215,123,212,28,204,98,19,138,141,45,82,187,150,52,145,232,187,31,208,217,160,6,236,243,126,94,173,194,101,71,110,145,72,108,47,160,83,117,232,54,18,58,169,7,9,35,106,84,36,8,43,101,63,17,228,121,167,150,165,72,188,143,102,27,145,164,39,42,138,189,224,188,203,242,161,141,208,235,98,222,253,192,35,239,230,217,189,225,188,20,252,208,167,13,63,131,138,38,126,178,145,63,185,36,208,112,248,21,203,105,59,70,230,66,122,119,253,91,181,107,101,220,244,90,126,197,55,9,83,238,118,56,72,247,177,174,9,184,240,159,18,161,51,204,63,138,114,253,36,147,0,0,0,0,55,106,194,1,110,212,132,3,89,190,70,2,220,168,9,7,235,194,203,6,178,124,141,4,133,22,79,5,184,81,19,14,143,59,209,15,214,133,151,13,225,239,85,12,100,249,26,9,83,147,216,8,10,45,158,10,61,71,92,11,112,163,38,28,71,201,228,29,30,119,162,31,41,29,96,30,172,11,47,27,155,97,237,26,194,223,171,24,245,181,105,25,200,242,53,18,255,152,247,19,166,38,177,17,145,76,115,16,20,90,60,21,35,48,254,20,122,142,184,22,77,228,122,23,224,70,77,56,215,44,143,57,142,146,201,59,185,248,11,58,60,238,68,63,11,132,134,62,82,58,192,60,101,80,2,61,88,23,94,54,111,125,156,55,54,195,218,53,1,169,24,52,132,191,87,49,179,213,149,48,234,107,211,50,221,1,17,51,144,229,107,36,167,143,169,37,254,49,239,39,201,91,45,38,76,77,98,35,123,39,160,34,34,153,230,32,21,243,36,33,40,180,120,42,31,222,186,43,70,96,252,41,113,10,62,40,244,28,113,45,195,118,179,44,154,200,245,46,173,162,55,47,192,141,154,112,247,231,88,113,174,89,30,115,153,51,220,114,28,37,147,119,43,79,81,118,114,241,23,116,69,155,213,117,120,220,137,126,79,182,75,127,22,8,13,125,33,98,207,124,164,116,128,121,147,30,66,120,202,160,4,122,253,202,198,123,176,46,188,108,135,68,126,109,222,250,56,111,233,144,250,110,108,134,181,107,91,236,119,106,2,82,49,104,53,56,243,105,8,127,175,98,63,21,109,99,102,171,43,97,81,193,233,96,212,215,166,101,227,189,100,100,186,3,34,102,141,105,224,103,32,203,215,72,23,161,21,73,78,31,83,75,121,117,145,74,252,99,222,79,203,9,28,78,146,183,90,76,165,221,152,77,152,154,196,70,175,240,6,71,246,78,64,69,193,36,130,68,68,50,205,65,115,88,15,64,42,230,73,66,29,140,139,67,80,104,241,84,103,2,51,85,62,188,117,87,9,214,183,86,140,192,248,83,187,170,58,82,226,20,124,80,213,126,190,81,232,57,226,90,223,83,32,91,134,237,102,89,177,135,164,88,52,145,235,93,3,251,41,92,90,69,111,94,109,47,173,95,128,27,53,225,183,113,247,224,238,207,177,226,217,165,115,227,92,179,60,230,107,217,254,231,50,103,184,229,5,13,122,228,56,74,38,239,15,32,228,238,86,158,162,236,97,244,96,237,228,226,47,232,211,136,237,233,138,54,171,235,189,92,105,234,240,184,19,253,199,210,209,252,158,108,151,254,169,6,85,255,44,16,26,250,27,122,216,251,66,196,158,249,117,174,92,248,72,233,0,243,127,131,194,242,38,61,132,240,17,87,70,241,148,65,9,244,163,43,203,245,250,149,141,247,205,255,79,246,96,93,120,217,87,55,186,216,14,137,252,218,57,227,62,219,188,245,113,222,139,159,179,223,210,33,245,221,229,75,55,220,216,12,107,215,239,102,169,214,182,216,239,212,129,178,45,213,4,164,98,208,51,206,160,209,106,112,230,211,93,26,36,210,16,254,94,197,39,148,156,196,126,42,218,198,73,64,24,199,204,86,87,194,251,60,149,195,162,130,211,193,149,232,17,192,168,175,77,203,159,197,143,202,198,123,201,200,241,17,11,201,116,7,68,204,67,109,134,205,26,211,192,207,45,185,2,206,64,150,175,145,119,252,109,144,46,66,43,146,25,40,233,147,156,62,166,150,171,84,100,151,242,234,34,149,197,128,224,148,248,199,188,159,207,173,126,158,150,19,56,156,161,121,250,157,36,111,181,152,19,5,119,153,74,187,49,155,125,209,243,154,48,53,137,141,7,95,75,140,94,225,13,142,105,139,207,143,236,157,128,138,219,247,66,139,130,73,4,137,181,35,198,136,136,100,154,131,191,14,88,130,230,176,30,128,209,218,220,129,84,204,147,132,99,166,81,133,58,24,23,135,13,114,213,134,160,208,226,169,151,186,32,168,206,4,102,170,249,110,164,171,124,120,235,174,75,18,41,175,18,172,111,173,37,198,173,172,24,129,241,167,47,235,51,166,118,85,117,164,65,63,183,165,196,41,248,160,243,67,58,161,170,253,124,163,157,151,190,162,208,115,196,181,231,25,6,180,190,167,64,182,137,205,130,183,12,219,205,178,59,177,15,179,98,15,73,177,85,101,139,176,104,34,215,187,95,72,21,186,6,246,83,184,49,156,145,185,180,138,222,188,131,224,28,189,218,94,90,191,237,52,152,190,0,0,0,0,101,103,188,184,139,200,9,170,238,175,181,18,87,151,98,143,50,240,222,55,220,95,107,37,185,56,215,157,239,40,180,197,138,79,8,125,100,224,189,111,1,135,1,215,184,191,214,74,221,216,106,242,51,119,223,224,86,16,99,88,159,87,25,80,250,48,165,232,20,159,16,250,113,248,172,66,200,192,123,223,173,167,199,103,67,8,114,117,38,111,206,205,112,127,173,149,21,24,17,45,251,183,164,63,158,208,24,135,39,232,207,26,66,143,115,162,172,32,198,176,201,71,122,8,62,175,50,160,91,200,142,24,181,103,59,10,208,0,135,178,105,56,80,47,12,95,236,151,226,240,89,133,135,151,229,61,209,135,134,101,180,224,58,221,90,79,143,207,63,40,51,119,134,16,228,234,227,119,88,82,13,216,237,64,104,191,81,248,161,248,43,240,196,159,151,72,42,48,34,90,79,87,158,226,246,111,73,127,147,8,245,199,125,167,64,213,24,192,252,109,78,208,159,53,43,183,35,141,197,24,150,159,160,127,42,39,25,71,253,186,124,32,65,2,146,143,244,16,247,232,72,168,61,88,20,155,88,63,168,35,182,144,29,49,211,247,161,137,106,207,118,20,15,168,202,172,225,7,127,190,132,96,195,6,210,112,160,94,183,23,28,230,89,184,169,244,60,223,21,76,133,231,194,209,224,128,126,105,14,47,203,123,107,72,119,195,162,15,13,203,199,104,177,115,41,199,4,97,76,160,184,217,245,152,111,68,144,255,211,252,126,80,102,238,27,55,218,86,77,39,185,14,40,64,5,182,198,239,176,164,163,136,12,28,26,176,219,129,127,215,103,57,145,120,210,43,244,31,110,147,3,247,38,59,102,144,154,131,136,63,47,145,237,88,147,41,84,96,68,180,49,7,248,12,223,168,77,30,186,207,241,166,236,223,146,254,137,184,46,70,103,23,155,84,2,112,39,236,187,72,240,113,222,47,76,201,48,128,249,219,85,231,69,99,156,160,63,107,249,199,131,211,23,104,54,193,114,15,138,121,203,55,93,228,174,80,225,92,64,255,84,78,37,152,232,246,115,136,139,174,22,239,55,22,248,64,130,4,157,39,62,188,36,31,233,33,65,120,85,153,175,215,224,139,202,176,92,51,59,182,89,237,94,209,229,85,176,126,80,71,213,25,236,255,108,33,59,98,9,70,135,218,231,233,50,200,130,142,142,112,212,158,237,40,177,249,81,144,95,86,228,130,58,49,88,58,131,9,143,167,230,110,51,31,8,193,134,13,109,166,58,181,164,225,64,189,193,134,252,5,47,41,73,23,74,78,245,175,243,118,34,50,150,17,158,138,120,190,43,152,29,217,151,32,75,201,244,120,46,174,72,192,192,1,253,210,165,102,65,106,28,94,150,247,121,57,42,79,151,150,159,93,242,241,35,229,5,25,107,77,96,126,215,245,142,209,98,231,235,182,222,95,82,142,9,194,55,233,181,122,217,70,0,104,188,33,188,208,234,49,223,136,143,86,99,48,97,249,214,34,4,158,106,154,189,166,189,7,216,193,1,191,54,110,180,173,83,9,8,21,154,78,114,29,255,41,206,165,17,134,123,183,116,225,199,15,205,217,16,146,168,190,172,42,70,17,25,56,35,118,165,128,117,102,198,216,16,1,122,96,254,174,207,114,155,201,115,202,34,241,164,87,71,150,24,239,169,57,173,253,204,94,17,69,6,238,77,118,99,137,241,206,141,38,68,220,232,65,248,100,81,121,47,249,52,30,147,65,218,177,38,83,191,214,154,235,233,198,249,179,140,161,69,11,98,14,240,25,7,105,76,161,190,81,155,60,219,54,39,132,53,153,146,150,80,254,46,46,153,185,84,38,252,222,232,158,18,113,93,140,119,22,225,52,206,46,54,169,171,73,138,17,69,230,63,3,32,129,131,187,118,145,224,227,19,246,92,91,253,89,233,73,152,62,85,241,33,6,130,108,68,97,62,212,170,206,139,198,207,169,55,126,56,65,127,214,93,38,195,110,179,137,118,124,214,238,202,196,111,214,29,89,10,177,161,225,228,30,20,243,129,121,168,75,215,105,203,19,178,14,119,171,92,161,194,185,57,198,126,1,128,254,169,156,229,153,21,36,11,54,160,54,110,81,28,142,167,22,102,134,194,113,218,62,44,222,111,44,73,185,211,148,240,129,4,9,149,230,184,177,123,73,13,163,30,46,177,27,72,62,210,67,45,89,110,251,195,246,219,233,166,145,103,81,31,169,176,204,122,206,12,116,148,97,185,102,241,6,5,222,0,0,0,0,119,7,48,150,238,14,97,44,153,9,81,186,7,109,196,25,112,106,244,143,233,99,165,53,158,100,149,163,14,219,136,50,121,220,184,164,224,213,233,30,151,210,217,136,9,182,76,43,126,177,124,189,231,184,45,7,144,191,29,145,29,183,16,100,106,176,32,242,243,185,113,72,132,190,65,222,26,218,212,125,109,221,228,235,244,212,181,81,131,211,133,199,19,108,152,86,100,107,168,192,253,98,249,122,138,101,201,236,20,1,92,79,99,6,108,217,250,15,61,99,141,8,13,245,59,110,32,200,76,105,16,94,213,96,65,228,162,103,113,114,60,3,228,209,75,4,212,71,210,13,133,253,165,10,181,107,53,181,168,250,66,178,152,108,219,187,201,214,172,188,249,64,50,216,108,227,69,223,92,117,220,214,13,207,171,209,61,89,38,217,48,172,81,222,0,58,200,215,81,128,191,208,97,22,33,180,244,181,86,179,196,35,207,186,149,153,184,189,165,15,40,2,184,158,95,5,136,8,198,12,217,178,177,11,233,36,47,111,124,135,88,104,76,17,193,97,29,171,182,102,45,61,118,220,65,144,1,219,113,6,152,210,32,188,239,213,16,42,113,177,133,137,6,182,181,31,159,191,228,165,232,184,212,51,120,7,201,162,15,0,249,52,150,9,168,142,225,14,152,24,127,106,13,187,8,109,61,45,145,100,108,151,230,99,92,1,107,107,81,244,28,108,97,98,133,101,48,216,242,98,0,78,108,6,149,237,27,1,165,123,130,8,244,193,245,15,196,87,101,176,217,198,18,183,233,80,139,190,184,234,252,185,136,124,98,221,29,223,21,218,45,73,140,211,124,243,251,212,76,101,77,178,97,88,58,181,81,206,163,188,0,116,212,187,48,226,74,223,165,65,61,216,149,215,164,209,196,109,211,214,244,251,67,105,233,106,52,110,217,252,173,103,136,70,218,96,184,208,68,4,45,115,51,3,29,229,170,10,76,95,221,13,124,201,80,5,113,60,39,2,65,170,190,11,16,16,201,12,32,134,87,104,181,37,32,111,133,179,185,102,212,9,206,97,228,159,94,222,249,14,41,217,201,152,176,208,152,34,199,215,168,180,89,179,61,23,46,180,13,129,183,189,92,59,192,186,108,173,237,184,131,32,154,191,179,182,3,182,226,12,116,177,210,154,234,213,71,57,157,210,119,175,4,219,38,21,115,220,22,131,227,99,11,18,148,100,59,132,13,109,106,62,122,106,90,168,228,14,207,11,147,9,255,157,10,0,174,39,125,7,158,177,240,15,147,68,135,8,163,210,30,1,242,104,105,6,194,254,247,98,87,93,128,101,103,203,25,108,54,113,110,107,6,231,254,212,27,118,137,211,43,224,16,218,122,90,103,221,74,204,249,185,223,111,142,190,239,249,23,183,190,67,96,176,142,213,214,214,163,232,161,209,147,126,56,216,194,196,79,223,242,82,209,187,103,241,166,188,87,103,63,181,6,221,72,178,54,75,216,13,43,218,175,10,27,76,54,3,74,246,65,4,122,96,223,96,239,195,168,103,223,85,49,110,142,239,70,105,190,121,203,97,179,140,188,102,131,26,37,111,210,160,82,104,226,54,204,12,119,149,187,11,71,3,34,2,22,185,85,5,38,47,197,186,59,190,178,189,11,40,43,180,90,146,92,179,106,4,194,215,255,167,181,208,207,49,44,217,158,139,91,222,174,29,155,100,194,176,236,99,242,38,117,106,163,156,2,109,147,10,156,9,6,169,235,14,54,63,114,7,103,133,5,0,87,19,149,191,74,130,226,184,122,20,123,177,43,174,12,182,27,56,146,210,142,155,229,213,190,13,124,220,239,183,11,219,223,33,134,211,210,212,241,212,226,66,104,221,179,248,31,218,131,110,129,190,22,205,246,185,38,91,111,176,119,225,24,183,71,119,136,8,90,230,255,15,106,112,102,6,59,202,17,1,11,92,143,101,158,255,248,98,174,105,97,107,255,211,22,108,207,69,160,10,226,120,215,13,210,238,78,4,131,84,57,3,179,194,167,103,38,97,208,96,22,247,73,105,71,77,62,110,119,219,174,209,106,74,217,214,90,220,64,223,11,102,55,216,59,240,169,188,174,83,222,187,158,197,71,178,207,127,48,181,255,233,189,189,242,28,202,186,194,138,83,179,147,48,36,180,163,166,186,208,54,5,205,215,6,147,84,222,87,41,35,217,103,191,179,102,122,46,196,97,74,184,93,104,27,2,42,111,43,148,180,11,190,55,195,12,142,161,90,5,223,27,45,2,239,141,0,0,0,0,25,27,49,65,50,54,98,130,43,45,83,195,100,108,197,4,125,119,244,69,86,90,167,134,79,65,150,199,200,217,138,8,209,194,187,73,250,239,232,138,227,244,217,203,172,181,79,12,181,174,126,77,158,131,45,142,135,152,28,207,74,194,18,81,83,217,35,16,120,244,112,211,97,239,65,146,46,174,215,85,55,181,230,20,28,152,181,215,5,131,132,150,130,27,152,89,155,0,169,24,176,45,250,219,169,54,203,154,230,119,93,93,255,108,108,28,212,65,63,223,205,90,14,158,149,132,36,162,140,159,21,227,167,178,70,32,190,169,119,97,241,232,225,166,232,243,208,231,195,222,131,36,218,197,178,101,93,93,174,170,68,70,159,235,111,107,204,40,118,112,253,105,57,49,107,174,32,42,90,239,11,7,9,44,18,28,56,109,223,70,54,243,198,93,7,178,237,112,84,113,244,107,101,48,187,42,243,247,162,49,194,182,137,28,145,117,144,7,160,52,23,159,188,251,14,132,141,186,37,169,222,121,60,178,239,56,115,243,121,255,106,232,72,190,65,197,27,125,88,222,42,60,240,121,79,5,233,98,126,68,194,79,45,135,219,84,28,198,148,21,138,1,141,14,187,64,166,35,232,131,191,56,217,194,56,160,197,13,33,187,244,76,10,150,167,143,19,141,150,206,92,204,0,9,69,215,49,72,110,250,98,139,119,225,83,202,186,187,93,84,163,160,108,21,136,141,63,214,145,150,14,151,222,215,152,80,199,204,169,17,236,225,250,210,245,250,203,147,114,98,215,92,107,121,230,29,64,84,181,222,89,79,132,159,22,14,18,88,15,21,35,25,36,56,112,218,61,35,65,155,101,253,107,167,124,230,90,230,87,203,9,37,78,208,56,100,1,145,174,163,24,138,159,226,51,167,204,33,42,188,253,96,173,36,225,175,180,63,208,238,159,18,131,45,134,9,178,108,201,72,36,171,208,83,21,234,251,126,70,41,226,101,119,104,47,63,121,246,54,36,72,183,29,9,27,116,4,18,42,53,75,83,188,242,82,72,141,179,121,101,222,112,96,126,239,49,231,230,243,254,254,253,194,191,213,208,145,124,204,203,160,61,131,138,54,250,154,145,7,187,177,188,84,120,168,167,101,57,59,131,152,75,34,152,169,10,9,181,250,201,16,174,203,136,95,239,93,79,70,244,108,14,109,217,63,205,116,194,14,140,243,90,18,67,234,65,35,2,193,108,112,193,216,119,65,128,151,54,215,71,142,45,230,6,165,0,181,197,188,27,132,132,113,65,138,26,104,90,187,91,67,119,232,152,90,108,217,217,21,45,79,30,12,54,126,95,39,27,45,156,62,0,28,221,185,152,0,18,160,131,49,83,139,174,98,144,146,181,83,209,221,244,197,22,196,239,244,87,239,194,167,148,246,217,150,213,174,7,188,233,183,28,141,168,156,49,222,107,133,42,239,42,202,107,121,237,211,112,72,172,248,93,27,111,225,70,42,46,102,222,54,225,127,197,7,160,84,232,84,99,77,243,101,34,2,178,243,229,27,169,194,164,48,132,145,103,41,159,160,38,228,197,174,184,253,222,159,249,214,243,204,58,207,232,253,123,128,169,107,188,153,178,90,253,178,159,9,62,171,132,56,127,44,28,36,176,53,7,21,241,30,42,70,50,7,49,119,115,72,112,225,180,81,107,208,245,122,70,131,54,99,93,178,119,203,250,215,78,210,225,230,15,249,204,181,204,224,215,132,141,175,150,18,74,182,141,35,11,157,160,112,200,132,187,65,137,3,35,93,70,26,56,108,7,49,21,63,196,40,14,14,133,103,79,152,66,126,84,169,3,85,121,250,192,76,98,203,129,129,56,197,31,152,35,244,94,179,14,167,157,170,21,150,220,229,84,0,27,252,79,49,90,215,98,98,153,206,121,83,216,73,225,79,23,80,250,126,86,123,215,45,149,98,204,28,212,45,141,138,19,52,150,187,82,31,187,232,145,6,160,217,208,94,126,243,236,71,101,194,173,108,72,145,110,117,83,160,47,58,18,54,232,35,9,7,169,8,36,84,106,17,63,101,43,150,167,121,228,143,188,72,165,164,145,27,102,189,138,42,39,242,203,188,224,235,208,141,161,192,253,222,98,217,230,239,35,20,188,225,189,13,167,208,252,38,138,131,63,63,145,178,126,112,208,36,185,105,203,21,248,66,230,70,59,91,253,119,122,220,101,107,181,197,126,90,244,238,83,9,55,247,72,56,118,184,9,174,177,161,18,159,240,138,63,204,51,147,36,253,114,0,0,0,0,1,194,106,55,3,132,212,110,2,70,190,89,7,9,168,220,6,203,194,235,4,141,124,178,5,79,22,133,14,19,81,184,15,209,59,143,13,151,133,214,12,85,239,225,9,26,249,100,8,216,147,83,10,158,45,10,11,92,71,61,28,38,163,112,29,228,201,71,31,162,119,30,30,96,29,41,27,47,11,172,26,237,97,155,24,171,223,194,25,105,181,245,18,53,242,200,19,247,152,255,17,177,38,166,16,115,76,145,21,60,90,20,20,254,48,35,22,184,142,122,23,122,228,77,56,77,70,224,57,143,44,215,59,201,146,142,58,11,248,185,63,68,238,60,62,134,132,11,60,192,58,82,61,2,80,101,54,94,23,88,55,156,125,111,53,218,195,54,52,24,169,1,49,87,191,132,48,149,213,179,50,211,107,234,51,17,1,221,36,107,229,144,37,169,143,167,39,239,49,254,38,45,91,201,35,98,77,76,34,160,39,123,32,230,153,34,33,36,243,21,42,120,180,40,43,186,222,31,41,252,96,70,40,62,10,113,45,113,28,244,44,179,118,195,46,245,200,154,47,55,162,173,112,154,141,192,113,88,231,247,115,30,89,174,114,220,51,153,119,147,37,28,118,81,79,43,116,23,241,114,117,213,155,69,126,137,220,120,127,75,182,79,125,13,8,22,124,207,98,33,121,128,116,164,120,66,30,147,122,4,160,202,123,198,202,253,108,188,46,176,109,126,68,135,111,56,250,222,110,250,144,233,107,181,134,108,106,119,236,91,104,49,82,2,105,243,56,53,98,175,127,8,99,109,21,63,97,43,171,102,96,233,193,81,101,166,215,212,100,100,189,227,102,34,3,186,103,224,105,141,72,215,203,32,73,21,161,23,75,83,31,78,74,145,117,121,79,222,99,252,78,28,9,203,76,90,183,146,77,152,221,165,70,196,154,152,71,6,240,175,69,64,78,246,68,130,36,193,65,205,50,68,64,15,88,115,66,73,230,42,67,139,140,29,84,241,104,80,85,51,2,103,87,117,188,62,86,183,214,9,83,248,192,140,82,58,170,187,80,124,20,226,81,190,126,213,90,226,57,232,91,32,83,223,89,102,237,134,88,164,135,177,93,235,145,52,92,41,251,3,94,111,69,90,95,173,47,109,225,53,27,128,224,247,113,183,226,177,207,238,227,115,165,217,230,60,179,92,231,254,217,107,229,184,103,50,228,122,13,5,239,38,74,56,238,228,32,15,236,162,158,86,237,96,244,97,232,47,226,228,233,237,136,211,235,171,54,138,234,105,92,189,253,19,184,240,252,209,210,199,254,151,108,158,255,85,6,169,250,26,16,44,251,216,122,27,249,158,196,66,248,92,174,117,243,0,233,72,242,194,131,127,240,132,61,38,241,70,87,17,244,9,65,148,245,203,43,163,247,141,149,250,246,79,255,205,217,120,93,96,216,186,55,87,218,252,137,14,219,62,227,57,222,113,245,188,223,179,159,139,221,245,33,210,220,55,75,229,215,107,12,216,214,169,102,239,212,239,216,182,213,45,178,129,208,98,164,4,209,160,206,51,211,230,112,106,210,36,26,93,197,94,254,16,196,156,148,39,198,218,42,126,199,24,64,73,194,87,86,204,195,149,60,251,193,211,130,162,192,17,232,149,203,77,175,168,202,143,197,159,200,201,123,198,201,11,17,241,204,68,7,116,205,134,109,67,207,192,211,26,206,2,185,45,145,175,150,64,144,109,252,119,146,43,66,46,147,233,40,25,150,166,62,156,151,100,84,171,149,34,234,242,148,224,128,197,159,188,199,248,158,126,173,207,156,56,19,150,157,250,121,161,152,181,111,36,153,119,5,19,155,49,187,74,154,243,209,125,141,137,53,48,140,75,95,7,142,13,225,94,143,207,139,105,138,128,157,236,139,66,247,219,137,4,73,130,136,198,35,181,131,154,100,136,130,88,14,191,128,30,176,230,129,220,218,209,132,147,204,84,133,81,166,99,135,23,24,58,134,213,114,13,169,226,208,160,168,32,186,151,170,102,4,206,171,164,110,249], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); -/* memory initializer */ allocate([174,235,120,124,175,41,18,75,173,111,172,18,172,173,198,37,167,241,129,24,166,51,235,47,164,117,85,118,165,183,63,65,160,248,41,196,161,58,67,243,163,124,253,170,162,190,151,157,181,196,115,208,180,6,25,231,182,64,167,190,183,130,205,137,178,205,219,12,179,15,177,59,177,73,15,98,176,139,101,85,187,215,34,104,186,21,72,95,184,83,246,6,185,145,156,49,188,222,138,180,189,28,224,131,191,90,94,218,190,152,52,237,0,0,0,0,184,188,103,101,170,9,200,139,18,181,175,238,143,98,151,87,55,222,240,50,37,107,95,220,157,215,56,185,197,180,40,239,125,8,79,138,111,189,224,100,215,1,135,1,74,214,191,184,242,106,216,221,224,223,119,51,88,99,16,86,80,25,87,159,232,165,48,250,250,16,159,20,66,172,248,113,223,123,192,200,103,199,167,173,117,114,8,67,205,206,111,38,149,173,127,112,45,17,24,21,63,164,183,251,135,24,208,158,26,207,232,39,162,115,143,66,176,198,32,172,8,122,71,201,160,50,175,62,24,142,200,91,10,59,103,181,178,135,0,208,47,80,56,105,151,236,95,12,133,89,240,226,61,229,151,135,101,134,135,209,221,58,224,180,207,143,79,90,119,51,40,63,234,228,16,134,82,88,119,227,64,237,216,13,248,81,191,104,240,43,248,161,72,151,159,196,90,34,48,42,226,158,87,79,127,73,111,246,199,245,8,147,213,64,167,125,109,252,192,24,53,159,208,78,141,35,183,43,159,150,24,197,39,42,127,160,186,253,71,25,2,65,32,124,16,244,143,146,168,72,232,247,155,20,88,61,35,168,63,88,49,29,144,182,137,161,247,211,20,118,207,106,172,202,168,15,190,127,7,225,6,195,96,132,94,160,112,210,230,28,23,183,244,169,184,89,76,21,223,60,209,194,231,133,105,126,128,224,123,203,47,14,195,119,72,107,203,13,15,162,115,177,104,199,97,4,199,41,217,184,160,76,68,111,152,245,252,211,255,144,238,102,80,126,86,218,55,27,14,185,39,77,182,5,64,40,164,176,239,198,28,12,136,163,129,219,176,26,57,103,215,127,43,210,120,145,147,110,31,244,59,38,247,3,131,154,144,102,145,47,63,136,41,147,88,237,180,68,96,84,12,248,7,49,30,77,168,223,166,241,207,186,254,146,223,236,70,46,184,137,84,155,23,103,236,39,112,2,113,240,72,187,201,76,47,222,219,249,128,48,99,69,231,85,107,63,160,156,211,131,199,249,193,54,104,23,121,138,15,114,228,93,55,203,92,225,80,174,78,84,255,64,246,232,152,37,174,139,136,115,22,55,239,22,4,130,64,248,188,62,39,157,33,233,31,36,153,85,120,65,139,224,215,175,51,92,176,202,237,89,182,59,85,229,209,94,71,80,126,176,255,236,25,213,98,59,33,108,218,135,70,9,200,50,233,231,112,142,142,130,40,237,158,212,144,81,249,177,130,228,86,95,58,88,49,58,167,143,9,131,31,51,110,230,13,134,193,8,181,58,166,109,189,64,225,164,5,252,134,193,23,73,41,47,175,245,78,74,50,34,118,243,138,158,17,150,152,43,190,120,32,151,217,29,120,244,201,75,192,72,174,46,210,253,1,192,106,65,102,165,247,150,94,28,79,42,57,121,93,159,150,151,229,35,241,242,77,107,25,5,245,215,126,96,231,98,209,142,95,222,182,235,194,9,142,82,122,181,233,55,104,0,70,217,208,188,33,188,136,223,49,234,48,99,86,143,34,214,249,97,154,106,158,4,7,189,166,189,191,1,193,216,173,180,110,54,21,8,9,83,29,114,78,154,165,206,41,255,183,123,134,17,15,199,225,116,146,16,217,205,42,172,190,168,56,25,17,70,128,165,118,35,216,198,102,117,96,122,1,16,114,207,174,254,202,115,201,155,87,164,241,34,239,24,150,71,253,173,57,169,69,17,94,204,118,77,238,6,206,241,137,99,220,68,38,141,100,248,65,232,249,47,121,81,65,147,30,52,83,38,177,218,235,154,214,191,179,249,198,233,11,69,161,140,25,240,14,98,161,76,105,7,60,155,81,190,132,39,54,219,150,146,153,53,46,46,254,80,38,84,185,153,158,232,222,252,140,93,113,18,52,225,22,119,169,54,46,206,17,138,73,171,3,63,230,69,187,131,129,32,227,224,145,118,91,92,246,19,73,233,89,253,241,85,62,152,108,130,6,33,212,62,97,68,198,139,206,170,126,55,169,207,214,127,65,56,110,195,38,93,124,118,137,179,196,202,238,214,89,29,214,111,225,161,177,10,243,20,30,228,75,168,121,129,19,203,105,215,171,119,14,178,185,194,161,92,1,126,198,57,156,169,254,128,36,21,153,229,54,160,54,11,142,28,81,110,134,102,22,167,62,218,113,194,44,111,222,44,148,211,185,73,9,4,129,240,177,184,230,149,163,13,73,123,27,177,46,30,67,210,62,72,251,110,89,45,233,219,246,195,81,103,145,166,204,176,169,31,116,12,206,122,102,185,97,148,222,5,6,241,16,0,17,0,18,0,0,0,8,0,7,0,9,0,6,0,10,0,5,0,11,0,4,0,12,0,3,0,13,0,2,0,14,0,1,0,15,0,0,0,105,110,99,111,114,114,101,99,116,32,104,101,97,100,101,114,32,99,104,101,99,107,0,0,117,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,0,0,0,0,0,105,110,118,97,108,105,100,32,119,105,110,100,111,119,32,115,105,122,101,0,0,0,0,0,117,110,107,110,111,119,110,32,104,101,97,100,101,114,32,102,108,97,103,115,32,115,101,116,0,0,0,0,0,0,0,0,104,101,97,100,101,114,32,99,114,99,32,109,105,115,109,97,116,99,104,0,0,0,0,0,105,110,118,97,108,105,100,32,98,108,111,99,107,32,116,121,112,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,111,114,101,100,32,98,108,111,99,107,32,108,101,110,103,116,104,115,0,0,0,0,116,111,111,32,109,97,110,121,32,108,101,110,103,116,104,32,111,114,32,100,105,115,116,97,110,99,101,32,115,121,109,98,111,108,115,0,0,0,0,0,105,110,118,97,108,105,100,32,99,111,100,101,32,108,101,110,103,116,104,115,32,115,101,116,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,98,105,116,32,108,101,110,103,116,104,32,114,101,112,101,97,116,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,111,100,101,32,45,45,32,109,105,115,115,105,110,103,32,101,110,100,45,111,102,45,98,108,111,99,107,0,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,115,32,115,101,116,0,0,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,115,32,115,101,116,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,99,111,100,101,0,0,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,99,111,100,101,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,116,111,111,32,102,97,114,32,98,97,99,107,0,0,0,105,110,99,111,114,114,101,99,116,32,100,97,116,97,32,99,104,101,99,107,0,0,0,0,105,110,99,111,114,114,101,99,116,32,108,101,110,103,116,104,32,99,104,101,99,107,0,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,192,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,160,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,224,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,144,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,208,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,176,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,240,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,200,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,168,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,232,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,152,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,216,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,184,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,248,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,196,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,164,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,228,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,148,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,212,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,180,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,244,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,204,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,172,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,236,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,156,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,220,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,188,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,252,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,194,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,162,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,226,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,146,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,210,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,178,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,242,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,202,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,170,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,234,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,154,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,218,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,186,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,250,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,198,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,166,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,230,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,150,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,214,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,182,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,246,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,206,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,174,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,238,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,158,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,222,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,190,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,254,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,193,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,161,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,225,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,145,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,209,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,177,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,241,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,201,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,169,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,233,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,153,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,217,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,185,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,249,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,197,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,165,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,229,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,149,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,213,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,181,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,245,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,205,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,173,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,237,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,157,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,221,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,189,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,253,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,195,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,163,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,227,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,147,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,211,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,179,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,243,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,203,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,171,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,235,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,155,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,219,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,187,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,251,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,199,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,167,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,231,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,151,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,215,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,183,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,247,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,207,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,175,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,239,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,159,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,223,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,191,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,255,0,16,5,1,0,23,5,1,1,19,5,17,0,27,5,1,16,17,5,5,0,25,5,1,4,21,5,65,0,29,5,1,64,16,5,3,0,24,5,1,2,20,5,33,0,28,5,1,32,18,5,9,0,26,5,1,8,22,5,129,0,64,5,0,0,16,5,2,0,23,5,129,1,19,5,25,0,27,5,1,24,17,5,7,0,25,5,1,6,21,5,97,0,29,5,1,96,16,5,4,0,24,5,1,3,20,5,49,0,28,5,1,48,18,5,13,0,26,5,1,12,22,5,193,0,64,5,0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,13,0,15,0,17,0,19,0,23,0,27,0,31,0,35,0,43,0,51,0,59,0,67,0,83,0,99,0,115,0,131,0,163,0,195,0,227,0,2,1,0,0,0,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,17,0,17,0,17,0,17,0,18,0,18,0,18,0,18,0,19,0,19,0,19,0,19,0,20,0,20,0,20,0,20,0,21,0,21,0,21,0,21,0,16,0,73,0,195,0,0,0,1,0,2,0,3,0,4,0,5,0,7,0,9,0,13,0,17,0,25,0,33,0,49,0,65,0,97,0,129,0,193,0,1,1,129,1,1,2,1,3,1,4,1,6,1,8,1,12,1,16,1,24,1,32,1,48,1,64,1,96,0,0,0,0,16,0,16,0,16,0,16,0,17,0,17,0,18,0,18,0,19,0,19,0,20,0,20,0,21,0,21,0,22,0,22,0,23,0,23,0,24,0,24,0,25,0,25,0,26,0,26,0,27,0,27,0,28,0,28,0,29,0,29,0,64,0,64,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,116,111,111,32,102,97,114,32,98,97,99,107,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,99,111,100,101,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,99,111,100,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - - - - - 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}; - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - // reuse all of the core MEMFS functionality - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },getDB:function (name, callback) { - // check the cache first - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - req.onupgradeneeded = function(e) { - var db = e.target.result; - var transaction = e.target.transaction; - - var fileStore; - - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - - fileStore.createIndex('timestamp', 'timestamp', { unique: false }); - }; - req.onsuccess = function() { - db = req.result; - - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function() { - callback(this.error); - }; - },getLocalSet:function (mount, callback) { - var entries = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat; - - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); - } - - entries[path] = { timestamp: stat.mtime }; - } - - return callback(null, { type: 'local', entries: entries }); - },getRemoteSet:function (mount, callback) { - var entries = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index('timestamp'); - - index.openKeyCursor().onsuccess = function(event) { - var cursor = event.target.result; - - if (!cursor) { - return callback(null, { type: 'remote', db: db, entries: entries }); - } - - entries[cursor.primaryKey] = { timestamp: cursor.key }; - - cursor.continue(); - }; - }); - },loadLocalEntry:function (path, callback) { - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode }); - } else if (FS.isFile(stat.mode)) { - return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); - } else { - return callback(new Error('node type not supported')); - } - },storeLocalEntry:function (path, entry, callback) { - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); - } else { - return callback(new Error('node type not supported')); - } - - FS.utime(path, entry.timestamp, entry.timestamp); - } catch (e) { - return callback(e); - } - - callback(null); - },removeLocalEntry:function (path, callback) { - try { - var lookup = FS.lookupPath(path); - var stat = FS.stat(path); - - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - - callback(null); - },loadRemoteEntry:function (store, path, callback) { - var req = store.get(path); - req.onsuccess = function(event) { callback(null, event.target.result); }; - req.onerror = function() { callback(this.error); }; - },storeRemoteEntry:function (store, path, entry, callback) { - var req = store.put(entry, path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },removeRemoteEntry:function (store, path, callback) { - var req = store.delete(path); - req.onsuccess = function() { callback(null); }; - req.onerror = function() { callback(this.error); }; - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create.push(key); - total++; - } - }); - - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - var e = dst.entries[key]; - var e2 = src.entries[key]; - if (!e2) { - remove.push(key); - total++; - } - }); - - if (!total) { - return callback(null); - } - - var errored = false; - var completed = 0; - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= total) { - return callback(null); - } - }; - - transaction.onerror = function() { done(this.error); }; - - // sort paths in ascending order so directory entries are created - // before the files inside them - create.sort().forEach(function (path) { - if (dst.type === 'local') { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - - // sort paths in descending order so files are deleted before their - // parent directories - remove.sort().reverse().forEach(function(path) { - if (dst.type === 'local') { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || {}; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - - FS.FSNode.prototype = {}; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return !!node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },getStreamFromPtr:function (ptr) { - return FS.streams[ptr - 1]; - },getPtrForStream:function (stream) { - return stream ? stream.fd + 1 : 0; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },getMounts:function (mount) { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function done(err) { - if (err) { - if (!done.errored) { - done.errored = true; - return callback(err); - } - return; - } - if (++completed >= mounts.length) { - callback(null); - } - }; - - // sync all mounts - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:function (type, opts, mountpoint) { - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:function (mountpoint) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0, opts.canOwn); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }}; - - - - - function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - url = url + addr + ':' + port; - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - // The node ws library API for specifying optional subprotocol is slightly different than the browser's. - var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols; - - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fileno(stream) { - // int fileno(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html - stream = FS.getStreamFromPtr(stream); - if (!stream) return -1; - return stream.fd; - }function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var fd = _fileno(stream); - var bytesWritten = _write(fd, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - - - Module["_strlen"] = _strlen; - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = HEAPF64[(((varargs)+(argIndex))>>3)]; - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision < 0) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - }function _printf(format, varargs) { - // int printf(const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var stdout = HEAP32[((_stdout)>>2)]; - return _fprintf(stdout, format, varargs); - } - - - function _fputs(s, stream) { - // int fputs(const char *restrict s, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html - var fd = _fileno(stream); - return _write(fd, s, _strlen(s)); - } - - function _fputc(c, stream) { - // int fputc(int c, FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html - var chr = unSign(c & 0xFF); - HEAP8[((_fputc.ret)|0)]=chr; - var fd = _fileno(stream); - var ret = _write(fd, _fputc.ret, 1); - if (ret == -1) { - var streamObj = FS.getStreamFromPtr(stream); - if (streamObj) streamObj.error = true; - return -1; - } else { - return chr; - } - }function _puts(s) { - // int puts(const char *s); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/puts.html - // NOTE: puts() always writes an extra newline. - var stdout = HEAP32[((_stdout)>>2)]; - var ret = _fputs(s, stdout); - if (ret < 0) { - return ret; - } else { - var newlineRet = _fputc(10, stdout); - return (newlineRet < 0) ? -1 : ret + 1; - } - } - - function _sysconf(name) { - // long sysconf(int name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html - switch(name) { - case 30: return PAGE_SIZE; - case 132: - case 133: - case 12: - case 137: - case 138: - case 15: - case 235: - case 16: - case 17: - case 18: - case 19: - case 20: - case 149: - case 13: - case 10: - case 236: - case 153: - case 9: - case 21: - case 22: - case 159: - case 154: - case 14: - case 77: - case 78: - case 139: - case 80: - case 81: - case 79: - case 82: - case 68: - case 67: - case 164: - case 11: - case 29: - case 47: - case 48: - case 95: - case 52: - case 51: - case 46: - return 200809; - case 27: - case 246: - case 127: - case 128: - case 23: - case 24: - case 160: - case 161: - case 181: - case 182: - case 242: - case 183: - case 184: - case 243: - case 244: - case 245: - case 165: - case 178: - case 179: - case 49: - case 50: - case 168: - case 169: - case 175: - case 170: - case 171: - case 172: - case 97: - case 76: - case 32: - case 173: - case 35: - return -1; - case 176: - case 177: - case 7: - case 155: - case 8: - case 157: - case 125: - case 126: - case 92: - case 93: - case 129: - case 130: - case 131: - case 94: - case 91: - return 1; - case 74: - case 60: - case 69: - case 70: - case 4: - return 1024; - case 31: - case 42: - case 72: - return 32; - case 87: - case 26: - case 33: - return 2147483647; - case 34: - case 1: - return 47839; - case 38: - case 36: - return 99; - case 43: - case 37: - return 2048; - case 0: return 2097152; - case 3: return 65536; - case 28: return 32768; - case 44: return 32767; - case 75: return 16384; - case 39: return 1000; - case 89: return 700; - case 71: return 256; - case 40: return 255; - case 2: return 100; - case 180: return 64; - case 25: return 20; - case 5: return 16; - case 6: return 6; - case 73: return 4; - case 84: return 1; - } - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - } - - - Module["_memset"] = _memset; - - function ___errno_location() { - return ___errno_state; - } - - function _abort() { - Module['abort'](); - } - - var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - - // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module - // Module['forcedAspectRatio'] = 4 / 3; - - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock'] || - canvas['msRequestPointerLock'] || - function(){}; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - document['msExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas || - document['msPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - document.addEventListener('mspointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - var canvasContainer = canvas.parentNode; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvasContainer) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen'] || - document['msExitFullscreen'] || - document['exitFullscreen'] || - function() {}; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else { - - // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - - if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - Browser.updateCanvasDimensions(canvas); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - document.addEventListener('MSFullscreenChange', fullScreenChange, false); - } - - // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - - // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) - canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || - canvasContainer['mozRequestFullScreen'] || - canvasContainer['msRequestFullscreen'] || - (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvasContainer.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },getMouseWheelDelta:function (event) { - return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },updateCanvasDimensions:function (canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { - if (w/h < Module['forcedAspectRatio']) { - w = Math.round(h * Module['forcedAspectRatio']); - } else { - h = Math.round(w / Module['forcedAspectRatio']); - } - } - if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement'] || - document['msFullScreenElement'] || document['msFullscreenElement'] || - document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != 'undefined') { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != 'undefined') { - if (w != wNative || h != hNative) { - canvas.style.setProperty( "width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty( "width"); - canvas.style.removeProperty("height"); - } - } - } - }}; - - function _sbrk(bytes) { - // Implement a Linux-like 'memory area' for our 'process'. - // Changes the size of the memory area by |bytes|; returns the - // address of the previous top ('break') of the memory area - // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP - var self = _sbrk; - if (!self.called) { - DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned - self.called = true; - assert(Runtime.dynamicAlloc); - self.alloc = Runtime.dynamicAlloc; - Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; - } - var ret = DYNAMICTOP; - if (bytes != 0) self.alloc(bytes); - return ret; // Previous break location. - } - - 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 _time(ptr) { - var ret = Math.floor(Date.now()/1000); - if (ptr) { - HEAP32[((ptr)>>2)]=ret; - } - return ret; - } - - function _llvm_bswap_i32(x) { - return ((x&0xff)<<24) | (((x>>8)&0xff)<<16) | (((x>>16)&0xff)<<8) | (x>>>24); - } - - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - Module["_memcpy"] = _memcpy; -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -_fputc.ret = allocate([0], "i8", ALLOC_STATIC); -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - -var Math_min = Math.min; -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_vii(index,a1,a2) { - try { - Module["dynCall_vii"](index,a1,a2); - } 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 asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm = (function(global, env, buffer) { - 'use asm'; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = +env.NaN, inf = +env.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var abort=env.abort; - var assert=env.assert; - var asmPrintInt=env.asmPrintInt; - var asmPrintFloat=env.asmPrintFloat; - var Math_min=env.min; - var invoke_iiii=env.invoke_iiii; - var invoke_vii=env.invoke_vii; - var invoke_iii=env.invoke_iii; - var _send=env._send; - var ___setErrNo=env.___setErrNo; - var ___assert_fail=env.___assert_fail; - var _fflush=env._fflush; - var _pwrite=env._pwrite; - var __reallyNegative=env.__reallyNegative; - var _sbrk=env._sbrk; - var ___errno_location=env.___errno_location; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _fileno=env._fileno; - var _sysconf=env._sysconf; - var _puts=env._puts; - var _mkport=env._mkport; - var _write=env._write; - var _llvm_bswap_i32=env._llvm_bswap_i32; - var _fputc=env._fputc; - var _abort=env._abort; - var _fwrite=env._fwrite; - var _time=env._time; - var _fprintf=env._fprintf; - var __formatString=env.__formatString; - var _fputs=env._fputs; - var _printf=env._printf; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function _inflate(i2, i3) { - i2 = i2 | 0; - i3 = i3 | 0; - var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i50 = 0, i51 = 0, i52 = 0, i53 = 0, i54 = 0, i55 = 0, i56 = 0, i57 = 0, i58 = 0, i59 = 0, i60 = 0, i61 = 0, i62 = 0, i63 = 0, i64 = 0, i65 = 0, i66 = 0, i67 = 0, i68 = 0, i69 = 0, i70 = 0, i71 = 0, i72 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i25 = i1; - if ((i2 | 0) == 0) { - i72 = -2; - STACKTOP = i1; - return i72 | 0; - } - i4 = HEAP32[i2 + 28 >> 2] | 0; - if ((i4 | 0) == 0) { - i72 = -2; - STACKTOP = i1; - return i72 | 0; - } - i8 = i2 + 12 | 0; - i19 = HEAP32[i8 >> 2] | 0; - if ((i19 | 0) == 0) { - i72 = -2; - STACKTOP = i1; - return i72 | 0; - } - i62 = HEAP32[i2 >> 2] | 0; - if ((i62 | 0) == 0 ? (HEAP32[i2 + 4 >> 2] | 0) != 0 : 0) { - i72 = -2; - STACKTOP = i1; - return i72 | 0; - } - i68 = HEAP32[i4 >> 2] | 0; - if ((i68 | 0) == 11) { - HEAP32[i4 >> 2] = 12; - i68 = 12; - i62 = HEAP32[i2 >> 2] | 0; - i19 = HEAP32[i8 >> 2] | 0; - } - i15 = i2 + 16 | 0; - i59 = HEAP32[i15 >> 2] | 0; - i16 = i2 + 4 | 0; - i5 = HEAP32[i16 >> 2] | 0; - i17 = i4 + 56 | 0; - i6 = i4 + 60 | 0; - i12 = i4 + 8 | 0; - i10 = i4 + 24 | 0; - i39 = i25 + 1 | 0; - i11 = i4 + 16 | 0; - i38 = i4 + 32 | 0; - i35 = i2 + 24 | 0; - i40 = i4 + 36 | 0; - i41 = i4 + 20 | 0; - i9 = i2 + 48 | 0; - i42 = i4 + 64 | 0; - i46 = i4 + 12 | 0; - i47 = (i3 + -5 | 0) >>> 0 < 2; - i7 = i4 + 4 | 0; - i48 = i4 + 76 | 0; - i49 = i4 + 84 | 0; - i50 = i4 + 80 | 0; - i51 = i4 + 88 | 0; - i43 = (i3 | 0) == 6; - i57 = i4 + 7108 | 0; - i37 = i4 + 72 | 0; - i58 = i4 + 7112 | 0; - i54 = i4 + 68 | 0; - i28 = i4 + 44 | 0; - i29 = i4 + 7104 | 0; - i30 = i4 + 48 | 0; - i31 = i4 + 52 | 0; - i18 = i4 + 40 | 0; - i13 = i2 + 20 | 0; - i14 = i4 + 28 | 0; - i32 = i4 + 96 | 0; - i33 = i4 + 100 | 0; - i34 = i4 + 92 | 0; - i36 = i4 + 104 | 0; - i52 = i4 + 1328 | 0; - i53 = i4 + 108 | 0; - i27 = i4 + 112 | 0; - i55 = i4 + 752 | 0; - i56 = i4 + 624 | 0; - i44 = i25 + 2 | 0; - i45 = i25 + 3 | 0; - i67 = HEAP32[i6 >> 2] | 0; - i65 = i5; - i64 = HEAP32[i17 >> 2] | 0; - i26 = i59; - i61 = 0; - L17 : while (1) { - L19 : do { - switch (i68 | 0) { - case 16: - { - if (i67 >>> 0 < 14) { - i63 = i67; - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i66 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 14) { - i62 = i66; - } else { - i62 = i66; - break; - } - } - } else { - i63 = i67; - } - i71 = (i64 & 31) + 257 | 0; - HEAP32[i32 >> 2] = i71; - i72 = (i64 >>> 5 & 31) + 1 | 0; - HEAP32[i33 >> 2] = i72; - HEAP32[i34 >> 2] = (i64 >>> 10 & 15) + 4; - i64 = i64 >>> 14; - i63 = i63 + -14 | 0; - if (i71 >>> 0 > 286 | i72 >>> 0 > 30) { - HEAP32[i35 >> 2] = 11616; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break L19; - } else { - HEAP32[i36 >> 2] = 0; - HEAP32[i4 >> 2] = 17; - i66 = 0; - i60 = 154; - break L19; - } - } - case 2: - { - if (i67 >>> 0 < 32) { - i63 = i67; - i60 = 47; - } else { - i60 = 49; - } - break; - } - case 23: - { - i66 = HEAP32[i37 >> 2] | 0; - i63 = i67; - i60 = 240; - break; - } - case 18: - { - i63 = HEAP32[i36 >> 2] | 0; - i69 = i65; - i60 = 164; - break; - } - case 1: - { - if (i67 >>> 0 < 16) { - i63 = i67; - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i66 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 16) { - i62 = i66; - } else { - i62 = i66; - break; - } - } - } else { - i63 = i67; - } - HEAP32[i11 >> 2] = i64; - if ((i64 & 255 | 0) != 8) { - HEAP32[i35 >> 2] = 11448; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break L19; - } - if ((i64 & 57344 | 0) != 0) { - HEAP32[i35 >> 2] = 11504; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break L19; - } - i60 = HEAP32[i38 >> 2] | 0; - if ((i60 | 0) == 0) { - i60 = i64; - } else { - HEAP32[i60 >> 2] = i64 >>> 8 & 1; - i60 = HEAP32[i11 >> 2] | 0; - } - if ((i60 & 512 | 0) != 0) { - HEAP8[i25] = i64; - HEAP8[i39] = i64 >>> 8; - HEAP32[i10 >> 2] = _crc32(HEAP32[i10 >> 2] | 0, i25, 2) | 0; - } - HEAP32[i4 >> 2] = 2; - i63 = 0; - i64 = 0; - i60 = 47; - break; - } - case 8: - { - i63 = i67; - i60 = 109; - break; - } - case 22: - { - i63 = i67; - i60 = 228; - break; - } - case 24: - { - i63 = i67; - i60 = 246; - break; - } - case 19: - { - i63 = i67; - i60 = 201; - break; - } - case 20: - { - i63 = i67; - i60 = 202; - break; - } - case 21: - { - i66 = HEAP32[i37 >> 2] | 0; - i63 = i67; - i60 = 221; - break; - } - case 10: - { - i63 = i67; - i60 = 121; - break; - } - case 11: - { - i63 = i67; - i60 = 124; - break; - } - case 12: - { - i63 = i67; - i60 = 125; - break; - } - case 5: - { - i63 = i67; - i60 = 73; - break; - } - case 4: - { - i63 = i67; - i60 = 62; - break; - } - case 0: - { - i66 = HEAP32[i12 >> 2] | 0; - if ((i66 | 0) == 0) { - HEAP32[i4 >> 2] = 12; - i63 = i67; - i66 = i26; - break L19; - } - if (i67 >>> 0 < 16) { - i63 = i67; - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i67 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 16) { - i62 = i67; - } else { - i62 = i67; - break; - } - } - } else { - i63 = i67; - } - if ((i66 & 2 | 0) != 0 & (i64 | 0) == 35615) { - HEAP32[i10 >> 2] = _crc32(0, 0, 0) | 0; - HEAP8[i25] = 31; - HEAP8[i39] = -117; - HEAP32[i10 >> 2] = _crc32(HEAP32[i10 >> 2] | 0, i25, 2) | 0; - HEAP32[i4 >> 2] = 1; - i63 = 0; - i64 = 0; - i66 = i26; - break L19; - } - HEAP32[i11 >> 2] = 0; - i67 = HEAP32[i38 >> 2] | 0; - if ((i67 | 0) != 0) { - HEAP32[i67 + 48 >> 2] = -1; - i66 = HEAP32[i12 >> 2] | 0; - } - if ((i66 & 1 | 0) != 0 ? ((((i64 << 8 & 65280) + (i64 >>> 8) | 0) >>> 0) % 31 | 0 | 0) == 0 : 0) { - if ((i64 & 15 | 0) != 8) { - HEAP32[i35 >> 2] = 11448; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break L19; - } - i66 = i64 >>> 4; - i63 = i63 + -4 | 0; - i68 = (i66 & 15) + 8 | 0; - i67 = HEAP32[i40 >> 2] | 0; - if ((i67 | 0) != 0) { - if (i68 >>> 0 > i67 >>> 0) { - HEAP32[i35 >> 2] = 11480; - HEAP32[i4 >> 2] = 29; - i64 = i66; - i66 = i26; - break L19; - } - } else { - HEAP32[i40 >> 2] = i68; - } - HEAP32[i41 >> 2] = 1 << i68; - i63 = _adler32(0, 0, 0) | 0; - HEAP32[i10 >> 2] = i63; - HEAP32[i9 >> 2] = i63; - HEAP32[i4 >> 2] = i64 >>> 12 & 2 ^ 11; - i63 = 0; - i64 = 0; - i66 = i26; - break L19; - } - HEAP32[i35 >> 2] = 11424; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break; - } - case 26: - { - if ((HEAP32[i12 >> 2] | 0) != 0) { - if (i67 >>> 0 < 32) { - i63 = i67; - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i66 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 32) { - i62 = i66; - } else { - i62 = i66; - break; - } - } - } else { - i63 = i67; - } - i66 = i59 - i26 | 0; - HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + i66; - HEAP32[i14 >> 2] = (HEAP32[i14 >> 2] | 0) + i66; - if ((i59 | 0) != (i26 | 0)) { - i59 = HEAP32[i10 >> 2] | 0; - i67 = i19 + (0 - i66) | 0; - if ((HEAP32[i11 >> 2] | 0) == 0) { - i59 = _adler32(i59, i67, i66) | 0; - } else { - i59 = _crc32(i59, i67, i66) | 0; - } - HEAP32[i10 >> 2] = i59; - HEAP32[i9 >> 2] = i59; - } - if ((HEAP32[i11 >> 2] | 0) == 0) { - i59 = _llvm_bswap_i32(i64 | 0) | 0; - } else { - i59 = i64; - } - if ((i59 | 0) == (HEAP32[i10 >> 2] | 0)) { - i63 = 0; - i64 = 0; - i59 = i26; - } else { - HEAP32[i35 >> 2] = 11904; - HEAP32[i4 >> 2] = 29; - i66 = i26; - i59 = i26; - break L19; - } - } else { - i63 = i67; - } - HEAP32[i4 >> 2] = 27; - i60 = 277; - break; - } - case 27: - { - i63 = i67; - i60 = 277; - break; - } - case 28: - { - i63 = i67; - i61 = 1; - i60 = 285; - break L17; - } - case 29: - { - i63 = i67; - i61 = -3; - break L17; - } - case 25: - { - if ((i26 | 0) == 0) { - i63 = i67; - i26 = 0; - i60 = 285; - break L17; - } - HEAP8[i19] = HEAP32[i42 >> 2]; - HEAP32[i4 >> 2] = 20; - i63 = i67; - i66 = i26 + -1 | 0; - i19 = i19 + 1 | 0; - break; - } - case 17: - { - i66 = HEAP32[i36 >> 2] | 0; - if (i66 >>> 0 < (HEAP32[i34 >> 2] | 0) >>> 0) { - i63 = i67; - i60 = 154; - } else { - i60 = 158; - } - break; - } - case 13: - { - i63 = i67 & 7; - i64 = i64 >>> i63; - i63 = i67 - i63 | 0; - if (i63 >>> 0 < 32) { - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i66 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 32) { - i62 = i66; - } else { - i62 = i66; - break; - } - } - } - i66 = i64 & 65535; - if ((i66 | 0) == (i64 >>> 16 ^ 65535 | 0)) { - HEAP32[i42 >> 2] = i66; - HEAP32[i4 >> 2] = 14; - if (i43) { - i63 = 0; - i64 = 0; - i60 = 285; - break L17; - } else { - i63 = 0; - i64 = 0; - i60 = 143; - break L19; - } - } else { - HEAP32[i35 >> 2] = 11584; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break L19; - } - } - case 7: - { - i63 = i67; - i60 = 96; - break; - } - case 14: - { - i63 = i67; - i60 = 143; - break; - } - case 15: - { - i63 = i67; - i60 = 144; - break; - } - case 9: - { - if (i67 >>> 0 < 32) { - i63 = i67; - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i66 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 32) { - i62 = i66; - } else { - i62 = i66; - break; - } - } - } - i63 = _llvm_bswap_i32(i64 | 0) | 0; - HEAP32[i10 >> 2] = i63; - HEAP32[i9 >> 2] = i63; - HEAP32[i4 >> 2] = 10; - i63 = 0; - i64 = 0; - i60 = 121; - break; - } - case 30: - { - i60 = 299; - break L17; - } - case 6: - { - i63 = i67; - i60 = 83; - break; - } - case 3: - { - if (i67 >>> 0 < 16) { - i63 = i67; - i66 = i62; - i60 = 55; - } else { - i60 = 57; - } - break; - } - default: - { - i2 = -2; - i60 = 300; - break L17; - } - } - } while (0); - if ((i60 | 0) == 47) { - while (1) { - i60 = 0; - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i60 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 32) { - i62 = i60; - i60 = 47; - } else { - i62 = i60; - i60 = 49; - break; - } - } - } else if ((i60 | 0) == 121) { - if ((HEAP32[i46 >> 2] | 0) == 0) { - i60 = 122; - break; - } - i60 = _adler32(0, 0, 0) | 0; - HEAP32[i10 >> 2] = i60; - HEAP32[i9 >> 2] = i60; - HEAP32[i4 >> 2] = 11; - i60 = 124; - } else if ((i60 | 0) == 143) { - HEAP32[i4 >> 2] = 15; - i60 = 144; - } else if ((i60 | 0) == 154) { - while (1) { - i60 = 0; - if (i63 >>> 0 < 3) { - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i67 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 3) { - i62 = i67; - } else { - i62 = i67; - break; - } - } - } - HEAP32[i36 >> 2] = i66 + 1; - HEAP16[i4 + (HEAPU16[11384 + (i66 << 1) >> 1] << 1) + 112 >> 1] = i64 & 7; - i64 = i64 >>> 3; - i63 = i63 + -3 | 0; - i66 = HEAP32[i36 >> 2] | 0; - if (i66 >>> 0 < (HEAP32[i34 >> 2] | 0) >>> 0) { - i60 = 154; - } else { - i67 = i63; - i60 = 158; - break; - } - } - } else if ((i60 | 0) == 277) { - i60 = 0; - if ((HEAP32[i12 >> 2] | 0) == 0) { - i60 = 284; - break; - } - if ((HEAP32[i11 >> 2] | 0) == 0) { - i60 = 284; - break; - } - if (i63 >>> 0 < 32) { - i66 = i62; - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - i62 = i66; - break L17; - } - i65 = i65 + -1 | 0; - i62 = i66 + 1 | 0; - i64 = (HEAPU8[i66] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 32) { - i66 = i62; - } else { - break; - } - } - } - if ((i64 | 0) == (HEAP32[i14 >> 2] | 0)) { - i63 = 0; - i64 = 0; - i60 = 284; - break; - } - HEAP32[i35 >> 2] = 11928; - HEAP32[i4 >> 2] = 29; - i66 = i26; - } - do { - if ((i60 | 0) == 49) { - i60 = HEAP32[i38 >> 2] | 0; - if ((i60 | 0) != 0) { - HEAP32[i60 + 4 >> 2] = i64; - } - if ((HEAP32[i11 >> 2] & 512 | 0) != 0) { - HEAP8[i25] = i64; - HEAP8[i39] = i64 >>> 8; - HEAP8[i44] = i64 >>> 16; - HEAP8[i45] = i64 >>> 24; - HEAP32[i10 >> 2] = _crc32(HEAP32[i10 >> 2] | 0, i25, 4) | 0; - } - HEAP32[i4 >> 2] = 3; - i63 = 0; - i64 = 0; - i66 = i62; - i60 = 55; - } else if ((i60 | 0) == 124) { - if (i47) { - i60 = 285; - break L17; - } else { - i60 = 125; - } - } else if ((i60 | 0) == 144) { - i60 = 0; - i66 = HEAP32[i42 >> 2] | 0; - if ((i66 | 0) == 0) { - HEAP32[i4 >> 2] = 11; - i66 = i26; - break; - } - i66 = i66 >>> 0 > i65 >>> 0 ? i65 : i66; - i67 = i66 >>> 0 > i26 >>> 0 ? i26 : i66; - if ((i67 | 0) == 0) { - i60 = 285; - break L17; - } - _memcpy(i19 | 0, i62 | 0, i67 | 0) | 0; - HEAP32[i42 >> 2] = (HEAP32[i42 >> 2] | 0) - i67; - i65 = i65 - i67 | 0; - i66 = i26 - i67 | 0; - i62 = i62 + i67 | 0; - i19 = i19 + i67 | 0; - } else if ((i60 | 0) == 158) { - i60 = 0; - if (i66 >>> 0 < 19) { - while (1) { - i61 = i66 + 1 | 0; - HEAP16[i4 + (HEAPU16[11384 + (i66 << 1) >> 1] << 1) + 112 >> 1] = 0; - if ((i61 | 0) == 19) { - break; - } else { - i66 = i61; - } - } - HEAP32[i36 >> 2] = 19; - } - HEAP32[i53 >> 2] = i52; - HEAP32[i48 >> 2] = i52; - HEAP32[i49 >> 2] = 7; - i61 = _inflate_table(0, i27, 19, i53, i49, i55) | 0; - if ((i61 | 0) == 0) { - HEAP32[i36 >> 2] = 0; - HEAP32[i4 >> 2] = 18; - i63 = 0; - i69 = i65; - i61 = 0; - i60 = 164; - break; - } else { - HEAP32[i35 >> 2] = 11656; - HEAP32[i4 >> 2] = 29; - i63 = i67; - i66 = i26; - break; - } - } - } while (0); - L163 : do { - if ((i60 | 0) == 55) { - while (1) { - i60 = 0; - if ((i65 | 0) == 0) { - i65 = 0; - i62 = i66; - break L17; - } - i65 = i65 + -1 | 0; - i62 = i66 + 1 | 0; - i64 = (HEAPU8[i66] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 16) { - i66 = i62; - i60 = 55; - } else { - i60 = 57; - break; - } - } - } else if ((i60 | 0) == 125) { - i60 = 0; - if ((HEAP32[i7 >> 2] | 0) != 0) { - i66 = i63 & 7; - HEAP32[i4 >> 2] = 26; - i63 = i63 - i66 | 0; - i64 = i64 >>> i66; - i66 = i26; - break; - } - if (i63 >>> 0 < 3) { - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i66 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 3) { - i62 = i66; - } else { - i62 = i66; - break; - } - } - } - HEAP32[i7 >> 2] = i64 & 1; - i66 = i64 >>> 1 & 3; - if ((i66 | 0) == 0) { - HEAP32[i4 >> 2] = 13; - } else if ((i66 | 0) == 1) { - HEAP32[i48 >> 2] = 11952; - HEAP32[i49 >> 2] = 9; - HEAP32[i50 >> 2] = 14e3; - HEAP32[i51 >> 2] = 5; - HEAP32[i4 >> 2] = 19; - if (i43) { - i60 = 133; - break L17; - } - } else if ((i66 | 0) == 2) { - HEAP32[i4 >> 2] = 16; - } else if ((i66 | 0) == 3) { - HEAP32[i35 >> 2] = 11560; - HEAP32[i4 >> 2] = 29; - } - i63 = i63 + -3 | 0; - i64 = i64 >>> 3; - i66 = i26; - } else if ((i60 | 0) == 164) { - i60 = 0; - i65 = HEAP32[i32 >> 2] | 0; - i66 = HEAP32[i33 >> 2] | 0; - do { - if (i63 >>> 0 < (i66 + i65 | 0) >>> 0) { - i71 = i67; - L181 : while (1) { - i70 = (1 << HEAP32[i49 >> 2]) + -1 | 0; - i72 = i70 & i64; - i68 = HEAP32[i48 >> 2] | 0; - i67 = HEAPU8[i68 + (i72 << 2) + 1 | 0] | 0; - if (i67 >>> 0 > i71 >>> 0) { - i67 = i71; - while (1) { - if ((i69 | 0) == 0) { - i63 = i67; - i65 = 0; - break L17; - } - i69 = i69 + -1 | 0; - i71 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i67) + i64 | 0; - i62 = i67 + 8 | 0; - i72 = i70 & i64; - i67 = HEAPU8[i68 + (i72 << 2) + 1 | 0] | 0; - if (i67 >>> 0 > i62 >>> 0) { - i67 = i62; - i62 = i71; - } else { - i70 = i62; - i62 = i71; - break; - } - } - } else { - i70 = i71; - } - i68 = HEAP16[i68 + (i72 << 2) + 2 >> 1] | 0; - L188 : do { - if ((i68 & 65535) < 16) { - if (i70 >>> 0 < i67 >>> 0) { - while (1) { - if ((i69 | 0) == 0) { - i63 = i70; - i65 = 0; - break L17; - } - i69 = i69 + -1 | 0; - i65 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i70) + i64 | 0; - i70 = i70 + 8 | 0; - if (i70 >>> 0 < i67 >>> 0) { - i62 = i65; - } else { - i62 = i65; - break; - } - } - } - HEAP32[i36 >> 2] = i63 + 1; - HEAP16[i4 + (i63 << 1) + 112 >> 1] = i68; - i71 = i70 - i67 | 0; - i64 = i64 >>> i67; - } else { - if (i68 << 16 >> 16 == 16) { - i68 = i67 + 2 | 0; - if (i70 >>> 0 < i68 >>> 0) { - i71 = i62; - while (1) { - if ((i69 | 0) == 0) { - i63 = i70; - i65 = 0; - i62 = i71; - break L17; - } - i69 = i69 + -1 | 0; - i62 = i71 + 1 | 0; - i64 = (HEAPU8[i71] << i70) + i64 | 0; - i70 = i70 + 8 | 0; - if (i70 >>> 0 < i68 >>> 0) { - i71 = i62; - } else { - break; - } - } - } - i64 = i64 >>> i67; - i67 = i70 - i67 | 0; - if ((i63 | 0) == 0) { - i60 = 181; - break L181; - } - i67 = i67 + -2 | 0; - i68 = (i64 & 3) + 3 | 0; - i64 = i64 >>> 2; - i70 = HEAP16[i4 + (i63 + -1 << 1) + 112 >> 1] | 0; - } else if (i68 << 16 >> 16 == 17) { - i68 = i67 + 3 | 0; - if (i70 >>> 0 < i68 >>> 0) { - i71 = i62; - while (1) { - if ((i69 | 0) == 0) { - i63 = i70; - i65 = 0; - i62 = i71; - break L17; - } - i69 = i69 + -1 | 0; - i62 = i71 + 1 | 0; - i64 = (HEAPU8[i71] << i70) + i64 | 0; - i70 = i70 + 8 | 0; - if (i70 >>> 0 < i68 >>> 0) { - i71 = i62; - } else { - break; - } - } - } - i64 = i64 >>> i67; - i67 = -3 - i67 + i70 | 0; - i68 = (i64 & 7) + 3 | 0; - i64 = i64 >>> 3; - i70 = 0; - } else { - i68 = i67 + 7 | 0; - if (i70 >>> 0 < i68 >>> 0) { - i71 = i62; - while (1) { - if ((i69 | 0) == 0) { - i63 = i70; - i65 = 0; - i62 = i71; - break L17; - } - i69 = i69 + -1 | 0; - i62 = i71 + 1 | 0; - i64 = (HEAPU8[i71] << i70) + i64 | 0; - i70 = i70 + 8 | 0; - if (i70 >>> 0 < i68 >>> 0) { - i71 = i62; - } else { - break; - } - } - } - i64 = i64 >>> i67; - i67 = -7 - i67 + i70 | 0; - i68 = (i64 & 127) + 11 | 0; - i64 = i64 >>> 7; - i70 = 0; - } - if ((i63 + i68 | 0) >>> 0 > (i66 + i65 | 0) >>> 0) { - i60 = 190; - break L181; - } - while (1) { - i68 = i68 + -1 | 0; - HEAP32[i36 >> 2] = i63 + 1; - HEAP16[i4 + (i63 << 1) + 112 >> 1] = i70; - if ((i68 | 0) == 0) { - i71 = i67; - break L188; - } - i63 = HEAP32[i36 >> 2] | 0; - } - } - } while (0); - i63 = HEAP32[i36 >> 2] | 0; - i65 = HEAP32[i32 >> 2] | 0; - i66 = HEAP32[i33 >> 2] | 0; - if (!(i63 >>> 0 < (i66 + i65 | 0) >>> 0)) { - i60 = 193; - break; - } - } - if ((i60 | 0) == 181) { - i60 = 0; - HEAP32[i35 >> 2] = 11688; - HEAP32[i4 >> 2] = 29; - i63 = i67; - i65 = i69; - i66 = i26; - break L163; - } else if ((i60 | 0) == 190) { - i60 = 0; - HEAP32[i35 >> 2] = 11688; - HEAP32[i4 >> 2] = 29; - i63 = i67; - i65 = i69; - i66 = i26; - break L163; - } else if ((i60 | 0) == 193) { - i60 = 0; - if ((HEAP32[i4 >> 2] | 0) == 29) { - i63 = i71; - i65 = i69; - i66 = i26; - break L163; - } else { - i63 = i71; - break; - } - } - } else { - i63 = i67; - } - } while (0); - if ((HEAP16[i56 >> 1] | 0) == 0) { - HEAP32[i35 >> 2] = 11720; - HEAP32[i4 >> 2] = 29; - i65 = i69; - i66 = i26; - break; - } - HEAP32[i53 >> 2] = i52; - HEAP32[i48 >> 2] = i52; - HEAP32[i49 >> 2] = 9; - i61 = _inflate_table(1, i27, i65, i53, i49, i55) | 0; - if ((i61 | 0) != 0) { - HEAP32[i35 >> 2] = 11760; - HEAP32[i4 >> 2] = 29; - i65 = i69; - i66 = i26; - break; - } - HEAP32[i50 >> 2] = HEAP32[i53 >> 2]; - HEAP32[i51 >> 2] = 6; - i61 = _inflate_table(2, i4 + (HEAP32[i32 >> 2] << 1) + 112 | 0, HEAP32[i33 >> 2] | 0, i53, i51, i55) | 0; - if ((i61 | 0) == 0) { - HEAP32[i4 >> 2] = 19; - if (i43) { - i65 = i69; - i61 = 0; - i60 = 285; - break L17; - } else { - i65 = i69; - i61 = 0; - i60 = 201; - break; - } - } else { - HEAP32[i35 >> 2] = 11792; - HEAP32[i4 >> 2] = 29; - i65 = i69; - i66 = i26; - break; - } - } - } while (0); - if ((i60 | 0) == 57) { - i60 = HEAP32[i38 >> 2] | 0; - if ((i60 | 0) != 0) { - HEAP32[i60 + 8 >> 2] = i64 & 255; - HEAP32[i60 + 12 >> 2] = i64 >>> 8; - } - if ((HEAP32[i11 >> 2] & 512 | 0) != 0) { - HEAP8[i25] = i64; - HEAP8[i39] = i64 >>> 8; - HEAP32[i10 >> 2] = _crc32(HEAP32[i10 >> 2] | 0, i25, 2) | 0; - } - HEAP32[i4 >> 2] = 4; - i63 = 0; - i64 = 0; - i60 = 62; - } else if ((i60 | 0) == 201) { - HEAP32[i4 >> 2] = 20; - i60 = 202; - } - do { - if ((i60 | 0) == 62) { - i60 = 0; - i66 = HEAP32[i11 >> 2] | 0; - if ((i66 & 1024 | 0) == 0) { - i60 = HEAP32[i38 >> 2] | 0; - if ((i60 | 0) != 0) { - HEAP32[i60 + 16 >> 2] = 0; - } - } else { - if (i63 >>> 0 < 16) { - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i67 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 16) { - i62 = i67; - } else { - i62 = i67; - break; - } - } - } - HEAP32[i42 >> 2] = i64; - i60 = HEAP32[i38 >> 2] | 0; - if ((i60 | 0) != 0) { - HEAP32[i60 + 20 >> 2] = i64; - i66 = HEAP32[i11 >> 2] | 0; - } - if ((i66 & 512 | 0) == 0) { - i63 = 0; - i64 = 0; - } else { - HEAP8[i25] = i64; - HEAP8[i39] = i64 >>> 8; - HEAP32[i10 >> 2] = _crc32(HEAP32[i10 >> 2] | 0, i25, 2) | 0; - i63 = 0; - i64 = 0; - } - } - HEAP32[i4 >> 2] = 5; - i60 = 73; - } else if ((i60 | 0) == 202) { - i60 = 0; - if (i65 >>> 0 > 5 & i26 >>> 0 > 257) { - HEAP32[i8 >> 2] = i19; - HEAP32[i15 >> 2] = i26; - HEAP32[i2 >> 2] = i62; - HEAP32[i16 >> 2] = i65; - HEAP32[i17 >> 2] = i64; - HEAP32[i6 >> 2] = i63; - _inflate_fast(i2, i59); - i19 = HEAP32[i8 >> 2] | 0; - i66 = HEAP32[i15 >> 2] | 0; - i62 = HEAP32[i2 >> 2] | 0; - i65 = HEAP32[i16 >> 2] | 0; - i64 = HEAP32[i17 >> 2] | 0; - i63 = HEAP32[i6 >> 2] | 0; - if ((HEAP32[i4 >> 2] | 0) != 11) { - break; - } - HEAP32[i57 >> 2] = -1; - break; - } - HEAP32[i57 >> 2] = 0; - i69 = (1 << HEAP32[i49 >> 2]) + -1 | 0; - i71 = i69 & i64; - i66 = HEAP32[i48 >> 2] | 0; - i68 = HEAP8[i66 + (i71 << 2) + 1 | 0] | 0; - i67 = i68 & 255; - if (i67 >>> 0 > i63 >>> 0) { - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i70 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - i71 = i69 & i64; - i68 = HEAP8[i66 + (i71 << 2) + 1 | 0] | 0; - i67 = i68 & 255; - if (i67 >>> 0 > i63 >>> 0) { - i62 = i70; - } else { - i62 = i70; - break; - } - } - } - i69 = HEAP8[i66 + (i71 << 2) | 0] | 0; - i70 = HEAP16[i66 + (i71 << 2) + 2 >> 1] | 0; - i71 = i69 & 255; - if (!(i69 << 24 >> 24 == 0)) { - if ((i71 & 240 | 0) == 0) { - i69 = i70 & 65535; - i70 = (1 << i67 + i71) + -1 | 0; - i71 = ((i64 & i70) >>> i67) + i69 | 0; - i68 = HEAP8[i66 + (i71 << 2) + 1 | 0] | 0; - if (((i68 & 255) + i67 | 0) >>> 0 > i63 >>> 0) { - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i71 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - i62 = ((i64 & i70) >>> i67) + i69 | 0; - i68 = HEAP8[i66 + (i62 << 2) + 1 | 0] | 0; - if (((i68 & 255) + i67 | 0) >>> 0 > i63 >>> 0) { - i62 = i71; - } else { - i69 = i62; - i62 = i71; - break; - } - } - } else { - i69 = i71; - } - i70 = HEAP16[i66 + (i69 << 2) + 2 >> 1] | 0; - i69 = HEAP8[i66 + (i69 << 2) | 0] | 0; - HEAP32[i57 >> 2] = i67; - i66 = i67; - i63 = i63 - i67 | 0; - i64 = i64 >>> i67; - } else { - i66 = 0; - } - } else { - i66 = 0; - i69 = 0; - } - i72 = i68 & 255; - i64 = i64 >>> i72; - i63 = i63 - i72 | 0; - HEAP32[i57 >> 2] = i66 + i72; - HEAP32[i42 >> 2] = i70 & 65535; - i66 = i69 & 255; - if (i69 << 24 >> 24 == 0) { - HEAP32[i4 >> 2] = 25; - i66 = i26; - break; - } - if ((i66 & 32 | 0) != 0) { - HEAP32[i57 >> 2] = -1; - HEAP32[i4 >> 2] = 11; - i66 = i26; - break; - } - if ((i66 & 64 | 0) == 0) { - i66 = i66 & 15; - HEAP32[i37 >> 2] = i66; - HEAP32[i4 >> 2] = 21; - i60 = 221; - break; - } else { - HEAP32[i35 >> 2] = 11816; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break; - } - } - } while (0); - if ((i60 | 0) == 73) { - i68 = HEAP32[i11 >> 2] | 0; - if ((i68 & 1024 | 0) != 0) { - i67 = HEAP32[i42 >> 2] | 0; - i60 = i67 >>> 0 > i65 >>> 0 ? i65 : i67; - if ((i60 | 0) != 0) { - i66 = HEAP32[i38 >> 2] | 0; - if ((i66 | 0) != 0 ? (i20 = HEAP32[i66 + 16 >> 2] | 0, (i20 | 0) != 0) : 0) { - i67 = (HEAP32[i66 + 20 >> 2] | 0) - i67 | 0; - i66 = HEAP32[i66 + 24 >> 2] | 0; - _memcpy(i20 + i67 | 0, i62 | 0, ((i67 + i60 | 0) >>> 0 > i66 >>> 0 ? i66 - i67 | 0 : i60) | 0) | 0; - i68 = HEAP32[i11 >> 2] | 0; - } - if ((i68 & 512 | 0) != 0) { - HEAP32[i10 >> 2] = _crc32(HEAP32[i10 >> 2] | 0, i62, i60) | 0; - } - i67 = (HEAP32[i42 >> 2] | 0) - i60 | 0; - HEAP32[i42 >> 2] = i67; - i65 = i65 - i60 | 0; - i62 = i62 + i60 | 0; - } - if ((i67 | 0) != 0) { - i60 = 285; - break; - } - } - HEAP32[i42 >> 2] = 0; - HEAP32[i4 >> 2] = 6; - i60 = 83; - } else if ((i60 | 0) == 221) { - i60 = 0; - if ((i66 | 0) == 0) { - i60 = HEAP32[i42 >> 2] | 0; - } else { - if (i63 >>> 0 < i66 >>> 0) { - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i67 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < i66 >>> 0) { - i62 = i67; - } else { - i62 = i67; - break; - } - } - } - i60 = (HEAP32[i42 >> 2] | 0) + ((1 << i66) + -1 & i64) | 0; - HEAP32[i42 >> 2] = i60; - HEAP32[i57 >> 2] = (HEAP32[i57 >> 2] | 0) + i66; - i63 = i63 - i66 | 0; - i64 = i64 >>> i66; - } - HEAP32[i58 >> 2] = i60; - HEAP32[i4 >> 2] = 22; - i60 = 228; - } - do { - if ((i60 | 0) == 83) { - if ((HEAP32[i11 >> 2] & 2048 | 0) == 0) { - i60 = HEAP32[i38 >> 2] | 0; - if ((i60 | 0) != 0) { - HEAP32[i60 + 28 >> 2] = 0; - } - } else { - if ((i65 | 0) == 0) { - i65 = 0; - i60 = 285; - break L17; - } else { - i66 = 0; - } - while (1) { - i60 = i66 + 1 | 0; - i67 = HEAP8[i62 + i66 | 0] | 0; - i66 = HEAP32[i38 >> 2] | 0; - if (((i66 | 0) != 0 ? (i23 = HEAP32[i66 + 28 >> 2] | 0, (i23 | 0) != 0) : 0) ? (i21 = HEAP32[i42 >> 2] | 0, i21 >>> 0 < (HEAP32[i66 + 32 >> 2] | 0) >>> 0) : 0) { - HEAP32[i42 >> 2] = i21 + 1; - HEAP8[i23 + i21 | 0] = i67; - } - i66 = i67 << 24 >> 24 != 0; - if (i66 & i60 >>> 0 < i65 >>> 0) { - i66 = i60; - } else { - break; - } - } - if ((HEAP32[i11 >> 2] & 512 | 0) != 0) { - HEAP32[i10 >> 2] = _crc32(HEAP32[i10 >> 2] | 0, i62, i60) | 0; - } - i65 = i65 - i60 | 0; - i62 = i62 + i60 | 0; - if (i66) { - i60 = 285; - break L17; - } - } - HEAP32[i42 >> 2] = 0; - HEAP32[i4 >> 2] = 7; - i60 = 96; - } else if ((i60 | 0) == 228) { - i60 = 0; - i69 = (1 << HEAP32[i51 >> 2]) + -1 | 0; - i71 = i69 & i64; - i66 = HEAP32[i50 >> 2] | 0; - i68 = HEAP8[i66 + (i71 << 2) + 1 | 0] | 0; - i67 = i68 & 255; - if (i67 >>> 0 > i63 >>> 0) { - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i70 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - i71 = i69 & i64; - i68 = HEAP8[i66 + (i71 << 2) + 1 | 0] | 0; - i67 = i68 & 255; - if (i67 >>> 0 > i63 >>> 0) { - i62 = i70; - } else { - i62 = i70; - break; - } - } - } - i69 = HEAP8[i66 + (i71 << 2) | 0] | 0; - i70 = HEAP16[i66 + (i71 << 2) + 2 >> 1] | 0; - i71 = i69 & 255; - if ((i71 & 240 | 0) == 0) { - i69 = i70 & 65535; - i70 = (1 << i67 + i71) + -1 | 0; - i71 = ((i64 & i70) >>> i67) + i69 | 0; - i68 = HEAP8[i66 + (i71 << 2) + 1 | 0] | 0; - if (((i68 & 255) + i67 | 0) >>> 0 > i63 >>> 0) { - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - break L17; - } - i65 = i65 + -1 | 0; - i71 = i62 + 1 | 0; - i64 = (HEAPU8[i62] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - i62 = ((i64 & i70) >>> i67) + i69 | 0; - i68 = HEAP8[i66 + (i62 << 2) + 1 | 0] | 0; - if (((i68 & 255) + i67 | 0) >>> 0 > i63 >>> 0) { - i62 = i71; - } else { - i69 = i62; - i62 = i71; - break; - } - } - } else { - i69 = i71; - } - i70 = HEAP16[i66 + (i69 << 2) + 2 >> 1] | 0; - i69 = HEAP8[i66 + (i69 << 2) | 0] | 0; - i66 = (HEAP32[i57 >> 2] | 0) + i67 | 0; - HEAP32[i57 >> 2] = i66; - i63 = i63 - i67 | 0; - i64 = i64 >>> i67; - } else { - i66 = HEAP32[i57 >> 2] | 0; - } - i72 = i68 & 255; - i64 = i64 >>> i72; - i63 = i63 - i72 | 0; - HEAP32[i57 >> 2] = i66 + i72; - i66 = i69 & 255; - if ((i66 & 64 | 0) == 0) { - HEAP32[i54 >> 2] = i70 & 65535; - i66 = i66 & 15; - HEAP32[i37 >> 2] = i66; - HEAP32[i4 >> 2] = 23; - i60 = 240; - break; - } else { - HEAP32[i35 >> 2] = 11848; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break; - } - } - } while (0); - if ((i60 | 0) == 96) { - if ((HEAP32[i11 >> 2] & 4096 | 0) == 0) { - i60 = HEAP32[i38 >> 2] | 0; - if ((i60 | 0) != 0) { - HEAP32[i60 + 36 >> 2] = 0; - } - } else { - if ((i65 | 0) == 0) { - i65 = 0; - i60 = 285; - break; - } else { - i66 = 0; - } - while (1) { - i60 = i66 + 1 | 0; - i66 = HEAP8[i62 + i66 | 0] | 0; - i67 = HEAP32[i38 >> 2] | 0; - if (((i67 | 0) != 0 ? (i24 = HEAP32[i67 + 36 >> 2] | 0, (i24 | 0) != 0) : 0) ? (i22 = HEAP32[i42 >> 2] | 0, i22 >>> 0 < (HEAP32[i67 + 40 >> 2] | 0) >>> 0) : 0) { - HEAP32[i42 >> 2] = i22 + 1; - HEAP8[i24 + i22 | 0] = i66; - } - i66 = i66 << 24 >> 24 != 0; - if (i66 & i60 >>> 0 < i65 >>> 0) { - i66 = i60; - } else { - break; - } - } - if ((HEAP32[i11 >> 2] & 512 | 0) != 0) { - HEAP32[i10 >> 2] = _crc32(HEAP32[i10 >> 2] | 0, i62, i60) | 0; - } - i65 = i65 - i60 | 0; - i62 = i62 + i60 | 0; - if (i66) { - i60 = 285; - break; - } - } - HEAP32[i4 >> 2] = 8; - i60 = 109; - } else if ((i60 | 0) == 240) { - i60 = 0; - if ((i66 | 0) != 0) { - if (i63 >>> 0 < i66 >>> 0) { - i67 = i62; - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - i62 = i67; - break L17; - } - i65 = i65 + -1 | 0; - i62 = i67 + 1 | 0; - i64 = (HEAPU8[i67] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < i66 >>> 0) { - i67 = i62; - } else { - break; - } - } - } - HEAP32[i54 >> 2] = (HEAP32[i54 >> 2] | 0) + ((1 << i66) + -1 & i64); - HEAP32[i57 >> 2] = (HEAP32[i57 >> 2] | 0) + i66; - i63 = i63 - i66 | 0; - i64 = i64 >>> i66; - } - HEAP32[i4 >> 2] = 24; - i60 = 246; - } - do { - if ((i60 | 0) == 109) { - i60 = 0; - i66 = HEAP32[i11 >> 2] | 0; - if ((i66 & 512 | 0) != 0) { - if (i63 >>> 0 < 16) { - i67 = i62; - while (1) { - if ((i65 | 0) == 0) { - i65 = 0; - i62 = i67; - break L17; - } - i65 = i65 + -1 | 0; - i62 = i67 + 1 | 0; - i64 = (HEAPU8[i67] << i63) + i64 | 0; - i63 = i63 + 8 | 0; - if (i63 >>> 0 < 16) { - i67 = i62; - } else { - break; - } - } - } - if ((i64 | 0) == (HEAP32[i10 >> 2] & 65535 | 0)) { - i63 = 0; - i64 = 0; - } else { - HEAP32[i35 >> 2] = 11536; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break; - } - } - i67 = HEAP32[i38 >> 2] | 0; - if ((i67 | 0) != 0) { - HEAP32[i67 + 44 >> 2] = i66 >>> 9 & 1; - HEAP32[i67 + 48 >> 2] = 1; - } - i66 = _crc32(0, 0, 0) | 0; - HEAP32[i10 >> 2] = i66; - HEAP32[i9 >> 2] = i66; - HEAP32[i4 >> 2] = 11; - i66 = i26; - } else if ((i60 | 0) == 246) { - i60 = 0; - if ((i26 | 0) == 0) { - i26 = 0; - i60 = 285; - break L17; - } - i67 = i59 - i26 | 0; - i66 = HEAP32[i54 >> 2] | 0; - if (i66 >>> 0 > i67 >>> 0) { - i67 = i66 - i67 | 0; - if (i67 >>> 0 > (HEAP32[i28 >> 2] | 0) >>> 0 ? (HEAP32[i29 >> 2] | 0) != 0 : 0) { - HEAP32[i35 >> 2] = 11872; - HEAP32[i4 >> 2] = 29; - i66 = i26; - break; - } - i68 = HEAP32[i30 >> 2] | 0; - if (i67 >>> 0 > i68 >>> 0) { - i68 = i67 - i68 | 0; - i66 = i68; - i68 = (HEAP32[i31 >> 2] | 0) + ((HEAP32[i18 >> 2] | 0) - i68) | 0; - } else { - i66 = i67; - i68 = (HEAP32[i31 >> 2] | 0) + (i68 - i67) | 0; - } - i69 = HEAP32[i42 >> 2] | 0; - i67 = i69; - i69 = i66 >>> 0 > i69 >>> 0 ? i69 : i66; - } else { - i69 = HEAP32[i42 >> 2] | 0; - i67 = i69; - i68 = i19 + (0 - i66) | 0; - } - i66 = i69 >>> 0 > i26 >>> 0 ? i26 : i69; - HEAP32[i42 >> 2] = i67 - i66; - i67 = ~i26; - i69 = ~i69; - i67 = i67 >>> 0 > i69 >>> 0 ? i67 : i69; - i69 = i66; - i70 = i19; - while (1) { - HEAP8[i70] = HEAP8[i68] | 0; - i69 = i69 + -1 | 0; - if ((i69 | 0) == 0) { - break; - } else { - i68 = i68 + 1 | 0; - i70 = i70 + 1 | 0; - } - } - i66 = i26 - i66 | 0; - i19 = i19 + ~i67 | 0; - if ((HEAP32[i42 >> 2] | 0) == 0) { - HEAP32[i4 >> 2] = 20; - } - } - } while (0); - i68 = HEAP32[i4 >> 2] | 0; - i67 = i63; - i26 = i66; - } - if ((i60 | 0) == 122) { - HEAP32[i8 >> 2] = i19; - HEAP32[i15 >> 2] = i26; - HEAP32[i2 >> 2] = i62; - HEAP32[i16 >> 2] = i65; - HEAP32[i17 >> 2] = i64; - HEAP32[i6 >> 2] = i63; - i72 = 2; - STACKTOP = i1; - return i72 | 0; - } else if ((i60 | 0) == 133) { - i63 = i63 + -3 | 0; - i64 = i64 >>> 3; - } else if ((i60 | 0) == 284) { - HEAP32[i4 >> 2] = 28; - i61 = 1; - } else if ((i60 | 0) != 285) if ((i60 | 0) == 299) { - i72 = -4; - STACKTOP = i1; - return i72 | 0; - } else if ((i60 | 0) == 300) { - STACKTOP = i1; - return i2 | 0; - } - HEAP32[i8 >> 2] = i19; - HEAP32[i15 >> 2] = i26; - HEAP32[i2 >> 2] = i62; - HEAP32[i16 >> 2] = i65; - HEAP32[i17 >> 2] = i64; - HEAP32[i6 >> 2] = i63; - if ((HEAP32[i18 >> 2] | 0) == 0) { - if ((HEAP32[i4 >> 2] | 0) >>> 0 < 26 ? (i59 | 0) != (HEAP32[i15 >> 2] | 0) : 0) { - i60 = 289; - } - } else { - i60 = 289; - } - if ((i60 | 0) == 289 ? (_updatewindow(i2, i59) | 0) != 0 : 0) { - HEAP32[i4 >> 2] = 30; - i72 = -4; - STACKTOP = i1; - return i72 | 0; - } - i16 = HEAP32[i16 >> 2] | 0; - i72 = HEAP32[i15 >> 2] | 0; - i15 = i59 - i72 | 0; - i71 = i2 + 8 | 0; - HEAP32[i71 >> 2] = i5 - i16 + (HEAP32[i71 >> 2] | 0); - HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + i15; - HEAP32[i14 >> 2] = (HEAP32[i14 >> 2] | 0) + i15; - i13 = (i59 | 0) == (i72 | 0); - if (!((HEAP32[i12 >> 2] | 0) == 0 | i13)) { - i12 = HEAP32[i10 >> 2] | 0; - i8 = (HEAP32[i8 >> 2] | 0) + (0 - i15) | 0; - if ((HEAP32[i11 >> 2] | 0) == 0) { - i8 = _adler32(i12, i8, i15) | 0; - } else { - i8 = _crc32(i12, i8, i15) | 0; - } - HEAP32[i10 >> 2] = i8; - HEAP32[i9 >> 2] = i8; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((i4 | 0) == 19) { - i8 = 256; - } else { - i8 = (i4 | 0) == 14 ? 256 : 0; - } - HEAP32[i2 + 44 >> 2] = ((HEAP32[i7 >> 2] | 0) != 0 ? 64 : 0) + (HEAP32[i6 >> 2] | 0) + ((i4 | 0) == 11 ? 128 : 0) + i8; - i72 = ((i5 | 0) == (i16 | 0) & i13 | (i3 | 0) == 4) & (i61 | 0) == 0 ? -5 : i61; - STACKTOP = i1; - return i72 | 0; -} -function _malloc(i12) { - i12 = i12 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0; - i1 = STACKTOP; - do { - if (i12 >>> 0 < 245) { - if (i12 >>> 0 < 11) { - i12 = 16; - } else { - i12 = i12 + 11 & -8; - } - i20 = i12 >>> 3; - i18 = HEAP32[3618] | 0; - i21 = i18 >>> i20; - if ((i21 & 3 | 0) != 0) { - i6 = (i21 & 1 ^ 1) + i20 | 0; - i5 = i6 << 1; - i3 = 14512 + (i5 << 2) | 0; - i5 = 14512 + (i5 + 2 << 2) | 0; - i7 = HEAP32[i5 >> 2] | 0; - i2 = i7 + 8 | 0; - i4 = HEAP32[i2 >> 2] | 0; - do { - if ((i3 | 0) != (i4 | 0)) { - if (i4 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i4 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i7 | 0)) { - HEAP32[i8 >> 2] = i3; - HEAP32[i5 >> 2] = i4; - break; - } else { - _abort(); - } - } else { - HEAP32[3618] = i18 & ~(1 << i6); - } - } while (0); - i32 = i6 << 3; - HEAP32[i7 + 4 >> 2] = i32 | 3; - i32 = i7 + (i32 | 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - if (i12 >>> 0 > (HEAP32[14480 >> 2] | 0) >>> 0) { - if ((i21 | 0) != 0) { - i7 = 2 << i20; - i7 = i21 << i20 & (i7 | 0 - i7); - i7 = (i7 & 0 - i7) + -1 | 0; - i2 = i7 >>> 12 & 16; - i7 = i7 >>> i2; - i6 = i7 >>> 5 & 8; - i7 = i7 >>> i6; - i5 = i7 >>> 2 & 4; - i7 = i7 >>> i5; - i4 = i7 >>> 1 & 2; - i7 = i7 >>> i4; - i3 = i7 >>> 1 & 1; - i3 = (i6 | i2 | i5 | i4 | i3) + (i7 >>> i3) | 0; - i7 = i3 << 1; - i4 = 14512 + (i7 << 2) | 0; - i7 = 14512 + (i7 + 2 << 2) | 0; - i5 = HEAP32[i7 >> 2] | 0; - i2 = i5 + 8 | 0; - i6 = HEAP32[i2 >> 2] | 0; - do { - if ((i4 | 0) != (i6 | 0)) { - if (i6 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i6 + 12 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i5 | 0)) { - HEAP32[i8 >> 2] = i4; - HEAP32[i7 >> 2] = i6; - break; - } else { - _abort(); - } - } else { - HEAP32[3618] = i18 & ~(1 << i3); - } - } while (0); - i6 = i3 << 3; - i4 = i6 - i12 | 0; - HEAP32[i5 + 4 >> 2] = i12 | 3; - i3 = i5 + i12 | 0; - HEAP32[i5 + (i12 | 4) >> 2] = i4 | 1; - HEAP32[i5 + i6 >> 2] = i4; - i6 = HEAP32[14480 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[14492 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 14512 + (i9 << 2) | 0; - i7 = HEAP32[3618] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 14512 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - i28 = i7; - i27 = i8; - } - } else { - HEAP32[3618] = i7 | i8; - i28 = 14512 + (i9 + 2 << 2) | 0; - i27 = i6; - } - HEAP32[i28 >> 2] = i5; - HEAP32[i27 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i27; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[14480 >> 2] = i4; - HEAP32[14492 >> 2] = i3; - i32 = i2; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[14476 >> 2] | 0; - if ((i18 | 0) != 0) { - i2 = (i18 & 0 - i18) + -1 | 0; - i31 = i2 >>> 12 & 16; - i2 = i2 >>> i31; - i30 = i2 >>> 5 & 8; - i2 = i2 >>> i30; - i32 = i2 >>> 2 & 4; - i2 = i2 >>> i32; - i6 = i2 >>> 1 & 2; - i2 = i2 >>> i6; - i3 = i2 >>> 1 & 1; - i3 = HEAP32[14776 + ((i30 | i31 | i32 | i6 | i3) + (i2 >>> i3) << 2) >> 2] | 0; - i2 = (HEAP32[i3 + 4 >> 2] & -8) - i12 | 0; - i6 = i3; - while (1) { - i5 = HEAP32[i6 + 16 >> 2] | 0; - if ((i5 | 0) == 0) { - i5 = HEAP32[i6 + 20 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - } - i6 = (HEAP32[i5 + 4 >> 2] & -8) - i12 | 0; - i4 = i6 >>> 0 < i2 >>> 0; - i2 = i4 ? i6 : i2; - i6 = i5; - i3 = i4 ? i5 : i3; - } - i6 = HEAP32[14488 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - i4 = i3 + i12 | 0; - if (!(i3 >>> 0 < i4 >>> 0)) { - _abort(); - } - i5 = HEAP32[i3 + 24 >> 2] | 0; - i7 = HEAP32[i3 + 12 >> 2] | 0; - do { - if ((i7 | 0) == (i3 | 0)) { - i8 = i3 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i8 = i3 + 16 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) == 0) { - i26 = 0; - break; - } - } - while (1) { - i10 = i7 + 20 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) != 0) { - i7 = i9; - i8 = i10; - continue; - } - i10 = i7 + 16 | 0; - i9 = HEAP32[i10 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } else { - i7 = i9; - i8 = i10; - } - } - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i8 >> 2] = 0; - i26 = i7; - break; - } - } else { - i8 = HEAP32[i3 + 8 >> 2] | 0; - if (i8 >>> 0 < i6 >>> 0) { - _abort(); - } - i6 = i8 + 12 | 0; - if ((HEAP32[i6 >> 2] | 0) != (i3 | 0)) { - _abort(); - } - i9 = i7 + 8 | 0; - if ((HEAP32[i9 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i7; - HEAP32[i9 >> 2] = i8; - i26 = i7; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i5 | 0) != 0) { - i7 = HEAP32[i3 + 28 >> 2] | 0; - i6 = 14776 + (i7 << 2) | 0; - if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) { - HEAP32[i6 >> 2] = i26; - if ((i26 | 0) == 0) { - HEAP32[14476 >> 2] = HEAP32[14476 >> 2] & ~(1 << i7); - break; - } - } else { - if (i5 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i6 = i5 + 16 | 0; - if ((HEAP32[i6 >> 2] | 0) == (i3 | 0)) { - HEAP32[i6 >> 2] = i26; - } else { - HEAP32[i5 + 20 >> 2] = i26; - } - if ((i26 | 0) == 0) { - break; - } - } - if (i26 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i26 + 24 >> 2] = i5; - i5 = HEAP32[i3 + 16 >> 2] | 0; - do { - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 16 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } while (0); - i5 = HEAP32[i3 + 20 >> 2] | 0; - if ((i5 | 0) != 0) { - if (i5 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i26 + 20 >> 2] = i5; - HEAP32[i5 + 24 >> 2] = i26; - break; - } - } - } - } while (0); - if (i2 >>> 0 < 16) { - i32 = i2 + i12 | 0; - HEAP32[i3 + 4 >> 2] = i32 | 3; - i32 = i3 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } else { - HEAP32[i3 + 4 >> 2] = i12 | 3; - HEAP32[i3 + (i12 | 4) >> 2] = i2 | 1; - HEAP32[i3 + (i2 + i12) >> 2] = i2; - i6 = HEAP32[14480 >> 2] | 0; - if ((i6 | 0) != 0) { - i5 = HEAP32[14492 >> 2] | 0; - i8 = i6 >>> 3; - i9 = i8 << 1; - i6 = 14512 + (i9 << 2) | 0; - i7 = HEAP32[3618] | 0; - i8 = 1 << i8; - if ((i7 & i8 | 0) != 0) { - i7 = 14512 + (i9 + 2 << 2) | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i8 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - i25 = i7; - i24 = i8; - } - } else { - HEAP32[3618] = i7 | i8; - i25 = 14512 + (i9 + 2 << 2) | 0; - i24 = i6; - } - HEAP32[i25 >> 2] = i5; - HEAP32[i24 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i24; - HEAP32[i5 + 12 >> 2] = i6; - } - HEAP32[14480 >> 2] = i2; - HEAP32[14492 >> 2] = i4; - } - i32 = i3 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - if (!(i12 >>> 0 > 4294967231)) { - i24 = i12 + 11 | 0; - i12 = i24 & -8; - i26 = HEAP32[14476 >> 2] | 0; - if ((i26 | 0) != 0) { - i25 = 0 - i12 | 0; - i24 = i24 >>> 8; - if ((i24 | 0) != 0) { - if (i12 >>> 0 > 16777215) { - i27 = 31; - } else { - i31 = (i24 + 1048320 | 0) >>> 16 & 8; - i32 = i24 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i27 = (i32 + 245760 | 0) >>> 16 & 2; - i27 = 14 - (i30 | i31 | i27) + (i32 << i27 >>> 15) | 0; - i27 = i12 >>> (i27 + 7 | 0) & 1 | i27 << 1; - } - } else { - i27 = 0; - } - i30 = HEAP32[14776 + (i27 << 2) >> 2] | 0; - L126 : do { - if ((i30 | 0) == 0) { - i29 = 0; - i24 = 0; - } else { - if ((i27 | 0) == 31) { - i24 = 0; - } else { - i24 = 25 - (i27 >>> 1) | 0; - } - i29 = 0; - i28 = i12 << i24; - i24 = 0; - while (1) { - i32 = HEAP32[i30 + 4 >> 2] & -8; - i31 = i32 - i12 | 0; - if (i31 >>> 0 < i25 >>> 0) { - if ((i32 | 0) == (i12 | 0)) { - i25 = i31; - i29 = i30; - i24 = i30; - break L126; - } else { - i25 = i31; - i24 = i30; - } - } - i31 = HEAP32[i30 + 20 >> 2] | 0; - i30 = HEAP32[i30 + (i28 >>> 31 << 2) + 16 >> 2] | 0; - i29 = (i31 | 0) == 0 | (i31 | 0) == (i30 | 0) ? i29 : i31; - if ((i30 | 0) == 0) { - break; - } else { - i28 = i28 << 1; - } - } - } - } while (0); - if ((i29 | 0) == 0 & (i24 | 0) == 0) { - i32 = 2 << i27; - i26 = i26 & (i32 | 0 - i32); - if ((i26 | 0) == 0) { - break; - } - i32 = (i26 & 0 - i26) + -1 | 0; - i28 = i32 >>> 12 & 16; - i32 = i32 >>> i28; - i27 = i32 >>> 5 & 8; - i32 = i32 >>> i27; - i30 = i32 >>> 2 & 4; - i32 = i32 >>> i30; - i31 = i32 >>> 1 & 2; - i32 = i32 >>> i31; - i29 = i32 >>> 1 & 1; - i29 = HEAP32[14776 + ((i27 | i28 | i30 | i31 | i29) + (i32 >>> i29) << 2) >> 2] | 0; - } - if ((i29 | 0) != 0) { - while (1) { - i27 = (HEAP32[i29 + 4 >> 2] & -8) - i12 | 0; - i26 = i27 >>> 0 < i25 >>> 0; - i25 = i26 ? i27 : i25; - i24 = i26 ? i29 : i24; - i26 = HEAP32[i29 + 16 >> 2] | 0; - if ((i26 | 0) != 0) { - i29 = i26; - continue; - } - i29 = HEAP32[i29 + 20 >> 2] | 0; - if ((i29 | 0) == 0) { - break; - } - } - } - if ((i24 | 0) != 0 ? i25 >>> 0 < ((HEAP32[14480 >> 2] | 0) - i12 | 0) >>> 0 : 0) { - i4 = HEAP32[14488 >> 2] | 0; - if (i24 >>> 0 < i4 >>> 0) { - _abort(); - } - i2 = i24 + i12 | 0; - if (!(i24 >>> 0 < i2 >>> 0)) { - _abort(); - } - i3 = HEAP32[i24 + 24 >> 2] | 0; - i6 = HEAP32[i24 + 12 >> 2] | 0; - do { - if ((i6 | 0) == (i24 | 0)) { - i6 = i24 + 20 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i6 = i24 + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i22 = 0; - break; - } - } - while (1) { - i8 = i5 + 20 | 0; - i7 = HEAP32[i8 >> 2] | 0; - if ((i7 | 0) != 0) { - i5 = i7; - i6 = i8; - continue; - } - i7 = i5 + 16 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if ((i8 | 0) == 0) { - break; - } else { - i5 = i8; - i6 = i7; - } - } - if (i6 >>> 0 < i4 >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = 0; - i22 = i5; - break; - } - } else { - i5 = HEAP32[i24 + 8 >> 2] | 0; - if (i5 >>> 0 < i4 >>> 0) { - _abort(); - } - i7 = i5 + 12 | 0; - if ((HEAP32[i7 >> 2] | 0) != (i24 | 0)) { - _abort(); - } - i4 = i6 + 8 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i7 >> 2] = i6; - HEAP32[i4 >> 2] = i5; - i22 = i6; - break; - } else { - _abort(); - } - } - } while (0); - do { - if ((i3 | 0) != 0) { - i4 = HEAP32[i24 + 28 >> 2] | 0; - i5 = 14776 + (i4 << 2) | 0; - if ((i24 | 0) == (HEAP32[i5 >> 2] | 0)) { - HEAP32[i5 >> 2] = i22; - if ((i22 | 0) == 0) { - HEAP32[14476 >> 2] = HEAP32[14476 >> 2] & ~(1 << i4); - break; - } - } else { - if (i3 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i4 = i3 + 16 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) { - HEAP32[i4 >> 2] = i22; - } else { - HEAP32[i3 + 20 >> 2] = i22; - } - if ((i22 | 0) == 0) { - break; - } - } - if (i22 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i22 + 24 >> 2] = i3; - i3 = HEAP32[i24 + 16 >> 2] | 0; - do { - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 16 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } while (0); - i3 = HEAP32[i24 + 20 >> 2] | 0; - if ((i3 | 0) != 0) { - if (i3 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i22 + 20 >> 2] = i3; - HEAP32[i3 + 24 >> 2] = i22; - break; - } - } - } - } while (0); - L204 : do { - if (!(i25 >>> 0 < 16)) { - HEAP32[i24 + 4 >> 2] = i12 | 3; - HEAP32[i24 + (i12 | 4) >> 2] = i25 | 1; - HEAP32[i24 + (i25 + i12) >> 2] = i25; - i4 = i25 >>> 3; - if (i25 >>> 0 < 256) { - i6 = i4 << 1; - i3 = 14512 + (i6 << 2) | 0; - i5 = HEAP32[3618] | 0; - i4 = 1 << i4; - if ((i5 & i4 | 0) != 0) { - i5 = 14512 + (i6 + 2 << 2) | 0; - i4 = HEAP32[i5 >> 2] | 0; - if (i4 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - i21 = i5; - i20 = i4; - } - } else { - HEAP32[3618] = i5 | i4; - i21 = 14512 + (i6 + 2 << 2) | 0; - i20 = i3; - } - HEAP32[i21 >> 2] = i2; - HEAP32[i20 + 12 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i20; - HEAP32[i24 + (i12 + 12) >> 2] = i3; - break; - } - i3 = i25 >>> 8; - if ((i3 | 0) != 0) { - if (i25 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i25 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i6 = 14776 + (i3 << 2) | 0; - HEAP32[i24 + (i12 + 28) >> 2] = i3; - HEAP32[i24 + (i12 + 20) >> 2] = 0; - HEAP32[i24 + (i12 + 16) >> 2] = 0; - i4 = HEAP32[14476 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[14476 >> 2] = i4 | i5; - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i6; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break; - } - i4 = HEAP32[i6 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L225 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i25 | 0)) { - i3 = i25 << i3; - while (1) { - i6 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i25 | 0)) { - i18 = i5; - break L225; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i6 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i24 + (i12 + 24) >> 2] = i4; - HEAP32[i24 + (i12 + 12) >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i2; - break L204; - } - } else { - i18 = i4; - } - } while (0); - i4 = i18 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[14488 >> 2] | 0; - if (i18 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i2; - HEAP32[i4 >> 2] = i2; - HEAP32[i24 + (i12 + 8) >> 2] = i3; - HEAP32[i24 + (i12 + 12) >> 2] = i18; - HEAP32[i24 + (i12 + 24) >> 2] = 0; - break; - } - } else { - i32 = i25 + i12 | 0; - HEAP32[i24 + 4 >> 2] = i32 | 3; - i32 = i24 + (i32 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - } while (0); - i32 = i24 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - } else { - i12 = -1; - } - } - } while (0); - i18 = HEAP32[14480 >> 2] | 0; - if (!(i12 >>> 0 > i18 >>> 0)) { - i3 = i18 - i12 | 0; - i2 = HEAP32[14492 >> 2] | 0; - if (i3 >>> 0 > 15) { - HEAP32[14492 >> 2] = i2 + i12; - HEAP32[14480 >> 2] = i3; - HEAP32[i2 + (i12 + 4) >> 2] = i3 | 1; - HEAP32[i2 + i18 >> 2] = i3; - HEAP32[i2 + 4 >> 2] = i12 | 3; - } else { - HEAP32[14480 >> 2] = 0; - HEAP32[14492 >> 2] = 0; - HEAP32[i2 + 4 >> 2] = i18 | 3; - i32 = i2 + (i18 + 4) | 0; - HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1; - } - i32 = i2 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - i18 = HEAP32[14484 >> 2] | 0; - if (i12 >>> 0 < i18 >>> 0) { - i31 = i18 - i12 | 0; - HEAP32[14484 >> 2] = i31; - i32 = HEAP32[14496 >> 2] | 0; - HEAP32[14496 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - do { - if ((HEAP32[3736] | 0) == 0) { - i18 = _sysconf(30) | 0; - if ((i18 + -1 & i18 | 0) == 0) { - HEAP32[14952 >> 2] = i18; - HEAP32[14948 >> 2] = i18; - HEAP32[14956 >> 2] = -1; - HEAP32[14960 >> 2] = -1; - HEAP32[14964 >> 2] = 0; - HEAP32[14916 >> 2] = 0; - HEAP32[3736] = (_time(0) | 0) & -16 ^ 1431655768; - break; - } else { - _abort(); - } - } - } while (0); - i20 = i12 + 48 | 0; - i25 = HEAP32[14952 >> 2] | 0; - i21 = i12 + 47 | 0; - i22 = i25 + i21 | 0; - i25 = 0 - i25 | 0; - i18 = i22 & i25; - if (!(i18 >>> 0 > i12 >>> 0)) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - i24 = HEAP32[14912 >> 2] | 0; - if ((i24 | 0) != 0 ? (i31 = HEAP32[14904 >> 2] | 0, i32 = i31 + i18 | 0, i32 >>> 0 <= i31 >>> 0 | i32 >>> 0 > i24 >>> 0) : 0) { - i32 = 0; - STACKTOP = i1; - return i32 | 0; - } - L269 : do { - if ((HEAP32[14916 >> 2] & 4 | 0) == 0) { - i26 = HEAP32[14496 >> 2] | 0; - L271 : do { - if ((i26 | 0) != 0) { - i24 = 14920 | 0; - while (1) { - i27 = HEAP32[i24 >> 2] | 0; - if (!(i27 >>> 0 > i26 >>> 0) ? (i23 = i24 + 4 | 0, (i27 + (HEAP32[i23 >> 2] | 0) | 0) >>> 0 > i26 >>> 0) : 0) { - break; - } - i24 = HEAP32[i24 + 8 >> 2] | 0; - if ((i24 | 0) == 0) { - i13 = 182; - break L271; - } - } - if ((i24 | 0) != 0) { - i25 = i22 - (HEAP32[14484 >> 2] | 0) & i25; - if (i25 >>> 0 < 2147483647) { - i13 = _sbrk(i25 | 0) | 0; - i26 = (i13 | 0) == ((HEAP32[i24 >> 2] | 0) + (HEAP32[i23 >> 2] | 0) | 0); - i22 = i13; - i24 = i25; - i23 = i26 ? i13 : -1; - i25 = i26 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i13 = 182; - } - } else { - i13 = 182; - } - } while (0); - do { - if ((i13 | 0) == 182) { - i23 = _sbrk(0) | 0; - if ((i23 | 0) != (-1 | 0)) { - i24 = i23; - i22 = HEAP32[14948 >> 2] | 0; - i25 = i22 + -1 | 0; - if ((i25 & i24 | 0) == 0) { - i25 = i18; - } else { - i25 = i18 - i24 + (i25 + i24 & 0 - i22) | 0; - } - i24 = HEAP32[14904 >> 2] | 0; - i26 = i24 + i25 | 0; - if (i25 >>> 0 > i12 >>> 0 & i25 >>> 0 < 2147483647) { - i22 = HEAP32[14912 >> 2] | 0; - if ((i22 | 0) != 0 ? i26 >>> 0 <= i24 >>> 0 | i26 >>> 0 > i22 >>> 0 : 0) { - i25 = 0; - break; - } - i22 = _sbrk(i25 | 0) | 0; - i13 = (i22 | 0) == (i23 | 0); - i24 = i25; - i23 = i13 ? i23 : -1; - i25 = i13 ? i25 : 0; - i13 = 191; - } else { - i25 = 0; - } - } else { - i25 = 0; - } - } - } while (0); - L291 : do { - if ((i13 | 0) == 191) { - i13 = 0 - i24 | 0; - if ((i23 | 0) != (-1 | 0)) { - i17 = i23; - i14 = i25; - i13 = 202; - break L269; - } - do { - if ((i22 | 0) != (-1 | 0) & i24 >>> 0 < 2147483647 & i24 >>> 0 < i20 >>> 0 ? (i19 = HEAP32[14952 >> 2] | 0, i19 = i21 - i24 + i19 & 0 - i19, i19 >>> 0 < 2147483647) : 0) { - if ((_sbrk(i19 | 0) | 0) == (-1 | 0)) { - _sbrk(i13 | 0) | 0; - break L291; - } else { - i24 = i19 + i24 | 0; - break; - } - } - } while (0); - if ((i22 | 0) != (-1 | 0)) { - i17 = i22; - i14 = i24; - i13 = 202; - break L269; - } - } - } while (0); - HEAP32[14916 >> 2] = HEAP32[14916 >> 2] | 4; - i13 = 199; - } else { - i25 = 0; - i13 = 199; - } - } while (0); - if ((((i13 | 0) == 199 ? i18 >>> 0 < 2147483647 : 0) ? (i17 = _sbrk(i18 | 0) | 0, i16 = _sbrk(0) | 0, (i16 | 0) != (-1 | 0) & (i17 | 0) != (-1 | 0) & i17 >>> 0 < i16 >>> 0) : 0) ? (i15 = i16 - i17 | 0, i14 = i15 >>> 0 > (i12 + 40 | 0) >>> 0, i14) : 0) { - i14 = i14 ? i15 : i25; - i13 = 202; - } - if ((i13 | 0) == 202) { - i15 = (HEAP32[14904 >> 2] | 0) + i14 | 0; - HEAP32[14904 >> 2] = i15; - if (i15 >>> 0 > (HEAP32[14908 >> 2] | 0) >>> 0) { - HEAP32[14908 >> 2] = i15; - } - i15 = HEAP32[14496 >> 2] | 0; - L311 : do { - if ((i15 | 0) != 0) { - i21 = 14920 | 0; - while (1) { - i16 = HEAP32[i21 >> 2] | 0; - i19 = i21 + 4 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i17 | 0) == (i16 + i20 | 0)) { - i13 = 214; - break; - } - i18 = HEAP32[i21 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i21 = i18; - } - } - if (((i13 | 0) == 214 ? (HEAP32[i21 + 12 >> 2] & 8 | 0) == 0 : 0) ? i15 >>> 0 >= i16 >>> 0 & i15 >>> 0 < i17 >>> 0 : 0) { - HEAP32[i19 >> 2] = i20 + i14; - i2 = (HEAP32[14484 >> 2] | 0) + i14 | 0; - i3 = i15 + 8 | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i32 = i2 - i3 | 0; - HEAP32[14496 >> 2] = i15 + i3; - HEAP32[14484 >> 2] = i32; - HEAP32[i15 + (i3 + 4) >> 2] = i32 | 1; - HEAP32[i15 + (i2 + 4) >> 2] = 40; - HEAP32[14500 >> 2] = HEAP32[14960 >> 2]; - break; - } - if (i17 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - HEAP32[14488 >> 2] = i17; - } - i19 = i17 + i14 | 0; - i16 = 14920 | 0; - while (1) { - if ((HEAP32[i16 >> 2] | 0) == (i19 | 0)) { - i13 = 224; - break; - } - i18 = HEAP32[i16 + 8 >> 2] | 0; - if ((i18 | 0) == 0) { - break; - } else { - i16 = i18; - } - } - if ((i13 | 0) == 224 ? (HEAP32[i16 + 12 >> 2] & 8 | 0) == 0 : 0) { - HEAP32[i16 >> 2] = i17; - i6 = i16 + 4 | 0; - HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i14; - i6 = i17 + 8 | 0; - if ((i6 & 7 | 0) == 0) { - i6 = 0; - } else { - i6 = 0 - i6 & 7; - } - i7 = i17 + (i14 + 8) | 0; - if ((i7 & 7 | 0) == 0) { - i13 = 0; - } else { - i13 = 0 - i7 & 7; - } - i15 = i17 + (i13 + i14) | 0; - i8 = i6 + i12 | 0; - i7 = i17 + i8 | 0; - i10 = i15 - (i17 + i6) - i12 | 0; - HEAP32[i17 + (i6 + 4) >> 2] = i12 | 3; - L348 : do { - if ((i15 | 0) != (HEAP32[14496 >> 2] | 0)) { - if ((i15 | 0) == (HEAP32[14492 >> 2] | 0)) { - i32 = (HEAP32[14480 >> 2] | 0) + i10 | 0; - HEAP32[14480 >> 2] = i32; - HEAP32[14492 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i32 + i8) >> 2] = i32; - break; - } - i12 = i14 + 4 | 0; - i18 = HEAP32[i17 + (i12 + i13) >> 2] | 0; - if ((i18 & 3 | 0) == 1) { - i11 = i18 & -8; - i16 = i18 >>> 3; - do { - if (!(i18 >>> 0 < 256)) { - i9 = HEAP32[i17 + ((i13 | 24) + i14) >> 2] | 0; - i19 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - do { - if ((i19 | 0) == (i15 | 0)) { - i19 = i13 | 16; - i18 = i17 + (i12 + i19) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i18 = i17 + (i19 + i14) | 0; - i16 = HEAP32[i18 >> 2] | 0; - if ((i16 | 0) == 0) { - i5 = 0; - break; - } - } - while (1) { - i20 = i16 + 20 | 0; - i19 = HEAP32[i20 >> 2] | 0; - if ((i19 | 0) != 0) { - i16 = i19; - i18 = i20; - continue; - } - i19 = i16 + 16 | 0; - i20 = HEAP32[i19 >> 2] | 0; - if ((i20 | 0) == 0) { - break; - } else { - i16 = i20; - i18 = i19; - } - } - if (i18 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i18 >> 2] = 0; - i5 = i16; - break; - } - } else { - i18 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - if (i18 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i18 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - i20 = i19 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i19; - HEAP32[i20 >> 2] = i18; - i5 = i19; - break; - } else { - _abort(); - } - } - } while (0); - if ((i9 | 0) != 0) { - i16 = HEAP32[i17 + (i14 + 28 + i13) >> 2] | 0; - i18 = 14776 + (i16 << 2) | 0; - if ((i15 | 0) == (HEAP32[i18 >> 2] | 0)) { - HEAP32[i18 >> 2] = i5; - if ((i5 | 0) == 0) { - HEAP32[14476 >> 2] = HEAP32[14476 >> 2] & ~(1 << i16); - break; - } - } else { - if (i9 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i9 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - HEAP32[i16 >> 2] = i5; - } else { - HEAP32[i9 + 20 >> 2] = i5; - } - if ((i5 | 0) == 0) { - break; - } - } - if (i5 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i5 + 24 >> 2] = i9; - i15 = i13 | 16; - i9 = HEAP32[i17 + (i15 + i14) >> 2] | 0; - do { - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 16 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } while (0); - i9 = HEAP32[i17 + (i12 + i15) >> 2] | 0; - if ((i9 | 0) != 0) { - if (i9 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 + 20 >> 2] = i9; - HEAP32[i9 + 24 >> 2] = i5; - break; - } - } - } - } else { - i5 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0; - i12 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0; - i18 = 14512 + (i16 << 1 << 2) | 0; - if ((i5 | 0) != (i18 | 0)) { - if (i5 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i5 + 12 >> 2] | 0) != (i15 | 0)) { - _abort(); - } - } - if ((i12 | 0) == (i5 | 0)) { - HEAP32[3618] = HEAP32[3618] & ~(1 << i16); - break; - } - if ((i12 | 0) != (i18 | 0)) { - if (i12 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i12 + 8 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) { - i9 = i16; - } else { - _abort(); - } - } else { - i9 = i12 + 8 | 0; - } - HEAP32[i5 + 12 >> 2] = i12; - HEAP32[i9 >> 2] = i5; - } - } while (0); - i15 = i17 + ((i11 | i13) + i14) | 0; - i10 = i11 + i10 | 0; - } - i5 = i15 + 4 | 0; - HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -2; - HEAP32[i17 + (i8 + 4) >> 2] = i10 | 1; - HEAP32[i17 + (i10 + i8) >> 2] = i10; - i5 = i10 >>> 3; - if (i10 >>> 0 < 256) { - i10 = i5 << 1; - i2 = 14512 + (i10 << 2) | 0; - i9 = HEAP32[3618] | 0; - i5 = 1 << i5; - if ((i9 & i5 | 0) != 0) { - i9 = 14512 + (i10 + 2 << 2) | 0; - i5 = HEAP32[i9 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - i3 = i9; - i4 = i5; - } - } else { - HEAP32[3618] = i9 | i5; - i3 = 14512 + (i10 + 2 << 2) | 0; - i4 = i2; - } - HEAP32[i3 >> 2] = i7; - HEAP32[i4 + 12 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - break; - } - i3 = i10 >>> 8; - if ((i3 | 0) != 0) { - if (i10 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i10 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i4 = 14776 + (i3 << 2) | 0; - HEAP32[i17 + (i8 + 28) >> 2] = i3; - HEAP32[i17 + (i8 + 20) >> 2] = 0; - HEAP32[i17 + (i8 + 16) >> 2] = 0; - i9 = HEAP32[14476 >> 2] | 0; - i5 = 1 << i3; - if ((i9 & i5 | 0) == 0) { - HEAP32[14476 >> 2] = i9 | i5; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break; - } - i4 = HEAP32[i4 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L444 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i10 | 0)) { - i3 = i10 << i3; - while (1) { - i5 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i9 = HEAP32[i5 >> 2] | 0; - if ((i9 | 0) == 0) { - break; - } - if ((HEAP32[i9 + 4 >> 2] & -8 | 0) == (i10 | 0)) { - i2 = i9; - break L444; - } else { - i3 = i3 << 1; - i4 = i9; - } - } - if (i5 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i5 >> 2] = i7; - HEAP32[i17 + (i8 + 24) >> 2] = i4; - HEAP32[i17 + (i8 + 12) >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i7; - break L348; - } - } else { - i2 = i4; - } - } while (0); - i4 = i2 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i5 = HEAP32[14488 >> 2] | 0; - if (i2 >>> 0 < i5 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i5 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i7; - HEAP32[i4 >> 2] = i7; - HEAP32[i17 + (i8 + 8) >> 2] = i3; - HEAP32[i17 + (i8 + 12) >> 2] = i2; - HEAP32[i17 + (i8 + 24) >> 2] = 0; - break; - } - } else { - i32 = (HEAP32[14484 >> 2] | 0) + i10 | 0; - HEAP32[14484 >> 2] = i32; - HEAP32[14496 >> 2] = i7; - HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1; - } - } while (0); - i32 = i17 + (i6 | 8) | 0; - STACKTOP = i1; - return i32 | 0; - } - i3 = 14920 | 0; - while (1) { - i2 = HEAP32[i3 >> 2] | 0; - if (!(i2 >>> 0 > i15 >>> 0) ? (i11 = HEAP32[i3 + 4 >> 2] | 0, i10 = i2 + i11 | 0, i10 >>> 0 > i15 >>> 0) : 0) { - break; - } - i3 = HEAP32[i3 + 8 >> 2] | 0; - } - i3 = i2 + (i11 + -39) | 0; - if ((i3 & 7 | 0) == 0) { - i3 = 0; - } else { - i3 = 0 - i3 & 7; - } - i2 = i2 + (i11 + -47 + i3) | 0; - i2 = i2 >>> 0 < (i15 + 16 | 0) >>> 0 ? i15 : i2; - i3 = i2 + 8 | 0; - i4 = i17 + 8 | 0; - if ((i4 & 7 | 0) == 0) { - i4 = 0; - } else { - i4 = 0 - i4 & 7; - } - i32 = i14 + -40 - i4 | 0; - HEAP32[14496 >> 2] = i17 + i4; - HEAP32[14484 >> 2] = i32; - HEAP32[i17 + (i4 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[14500 >> 2] = HEAP32[14960 >> 2]; - HEAP32[i2 + 4 >> 2] = 27; - HEAP32[i3 + 0 >> 2] = HEAP32[14920 >> 2]; - HEAP32[i3 + 4 >> 2] = HEAP32[14924 >> 2]; - HEAP32[i3 + 8 >> 2] = HEAP32[14928 >> 2]; - HEAP32[i3 + 12 >> 2] = HEAP32[14932 >> 2]; - HEAP32[14920 >> 2] = i17; - HEAP32[14924 >> 2] = i14; - HEAP32[14932 >> 2] = 0; - HEAP32[14928 >> 2] = i3; - i4 = i2 + 28 | 0; - HEAP32[i4 >> 2] = 7; - if ((i2 + 32 | 0) >>> 0 < i10 >>> 0) { - while (1) { - i3 = i4 + 4 | 0; - HEAP32[i3 >> 2] = 7; - if ((i4 + 8 | 0) >>> 0 < i10 >>> 0) { - i4 = i3; - } else { - break; - } - } - } - if ((i2 | 0) != (i15 | 0)) { - i2 = i2 - i15 | 0; - i3 = i15 + (i2 + 4) | 0; - HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & -2; - HEAP32[i15 + 4 >> 2] = i2 | 1; - HEAP32[i15 + i2 >> 2] = i2; - i3 = i2 >>> 3; - if (i2 >>> 0 < 256) { - i4 = i3 << 1; - i2 = 14512 + (i4 << 2) | 0; - i5 = HEAP32[3618] | 0; - i3 = 1 << i3; - if ((i5 & i3 | 0) != 0) { - i4 = 14512 + (i4 + 2 << 2) | 0; - i3 = HEAP32[i4 >> 2] | 0; - if (i3 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - i7 = i4; - i8 = i3; - } - } else { - HEAP32[3618] = i5 | i3; - i7 = 14512 + (i4 + 2 << 2) | 0; - i8 = i2; - } - HEAP32[i7 >> 2] = i15; - HEAP32[i8 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i8; - HEAP32[i15 + 12 >> 2] = i2; - break; - } - i3 = i2 >>> 8; - if ((i3 | 0) != 0) { - if (i2 >>> 0 > 16777215) { - i3 = 31; - } else { - i31 = (i3 + 1048320 | 0) >>> 16 & 8; - i32 = i3 << i31; - i30 = (i32 + 520192 | 0) >>> 16 & 4; - i32 = i32 << i30; - i3 = (i32 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0; - i3 = i2 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } - } else { - i3 = 0; - } - i7 = 14776 + (i3 << 2) | 0; - HEAP32[i15 + 28 >> 2] = i3; - HEAP32[i15 + 20 >> 2] = 0; - HEAP32[i15 + 16 >> 2] = 0; - i4 = HEAP32[14476 >> 2] | 0; - i5 = 1 << i3; - if ((i4 & i5 | 0) == 0) { - HEAP32[14476 >> 2] = i4 | i5; - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i7; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break; - } - i4 = HEAP32[i7 >> 2] | 0; - if ((i3 | 0) == 31) { - i3 = 0; - } else { - i3 = 25 - (i3 >>> 1) | 0; - } - L499 : do { - if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i2 | 0)) { - i3 = i2 << i3; - while (1) { - i7 = i4 + (i3 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i7 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i2 | 0)) { - i6 = i5; - break L499; - } else { - i3 = i3 << 1; - i4 = i5; - } - } - if (i7 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i7 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i4; - HEAP32[i15 + 12 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i15; - break L311; - } - } else { - i6 = i4; - } - } while (0); - i4 = i6 + 8 | 0; - i3 = HEAP32[i4 >> 2] | 0; - i2 = HEAP32[14488 >> 2] | 0; - if (i6 >>> 0 < i2 >>> 0) { - _abort(); - } - if (i3 >>> 0 < i2 >>> 0) { - _abort(); - } else { - HEAP32[i3 + 12 >> 2] = i15; - HEAP32[i4 >> 2] = i15; - HEAP32[i15 + 8 >> 2] = i3; - HEAP32[i15 + 12 >> 2] = i6; - HEAP32[i15 + 24 >> 2] = 0; - break; - } - } - } else { - i32 = HEAP32[14488 >> 2] | 0; - if ((i32 | 0) == 0 | i17 >>> 0 < i32 >>> 0) { - HEAP32[14488 >> 2] = i17; - } - HEAP32[14920 >> 2] = i17; - HEAP32[14924 >> 2] = i14; - HEAP32[14932 >> 2] = 0; - HEAP32[14508 >> 2] = HEAP32[3736]; - HEAP32[14504 >> 2] = -1; - i2 = 0; - do { - i32 = i2 << 1; - i31 = 14512 + (i32 << 2) | 0; - HEAP32[14512 + (i32 + 3 << 2) >> 2] = i31; - HEAP32[14512 + (i32 + 2 << 2) >> 2] = i31; - i2 = i2 + 1 | 0; - } while ((i2 | 0) != 32); - i2 = i17 + 8 | 0; - if ((i2 & 7 | 0) == 0) { - i2 = 0; - } else { - i2 = 0 - i2 & 7; - } - i32 = i14 + -40 - i2 | 0; - HEAP32[14496 >> 2] = i17 + i2; - HEAP32[14484 >> 2] = i32; - HEAP32[i17 + (i2 + 4) >> 2] = i32 | 1; - HEAP32[i17 + (i14 + -36) >> 2] = 40; - HEAP32[14500 >> 2] = HEAP32[14960 >> 2]; - } - } while (0); - i2 = HEAP32[14484 >> 2] | 0; - if (i2 >>> 0 > i12 >>> 0) { - i31 = i2 - i12 | 0; - HEAP32[14484 >> 2] = i31; - i32 = HEAP32[14496 >> 2] | 0; - HEAP32[14496 >> 2] = i32 + i12; - HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1; - HEAP32[i32 + 4 >> 2] = i12 | 3; - i32 = i32 + 8 | 0; - STACKTOP = i1; - return i32 | 0; - } - } - HEAP32[(___errno_location() | 0) >> 2] = 12; - i32 = 0; - STACKTOP = i1; - return i32 | 0; -} -function _deflate(i2, i10) { - i2 = i2 | 0; - i10 = i10 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0; - i1 = STACKTOP; - if ((i2 | 0) == 0) { - i37 = -2; - STACKTOP = i1; - return i37 | 0; - } - i5 = i2 + 28 | 0; - i7 = HEAP32[i5 >> 2] | 0; - if ((i7 | 0) == 0 | i10 >>> 0 > 5) { - i37 = -2; - STACKTOP = i1; - return i37 | 0; - } - i4 = i2 + 12 | 0; - do { - if ((HEAP32[i4 >> 2] | 0) != 0) { - if ((HEAP32[i2 >> 2] | 0) == 0 ? (HEAP32[i2 + 4 >> 2] | 0) != 0 : 0) { - break; - } - i11 = i7 + 4 | 0; - i29 = HEAP32[i11 >> 2] | 0; - i9 = (i10 | 0) == 4; - if ((i29 | 0) != 666 | i9) { - i3 = i2 + 16 | 0; - if ((HEAP32[i3 >> 2] | 0) == 0) { - HEAP32[i2 + 24 >> 2] = HEAP32[3180 >> 2]; - i37 = -5; - STACKTOP = i1; - return i37 | 0; - } - HEAP32[i7 >> 2] = i2; - i8 = i7 + 40 | 0; - i18 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i10; - do { - if ((i29 | 0) == 42) { - if ((HEAP32[i7 + 24 >> 2] | 0) != 2) { - i17 = (HEAP32[i7 + 48 >> 2] << 12) + -30720 | 0; - if ((HEAP32[i7 + 136 >> 2] | 0) <= 1 ? (i28 = HEAP32[i7 + 132 >> 2] | 0, (i28 | 0) >= 2) : 0) { - if ((i28 | 0) < 6) { - i28 = 64; - } else { - i28 = (i28 | 0) == 6 ? 128 : 192; - } - } else { - i28 = 0; - } - i28 = i28 | i17; - i17 = i7 + 108 | 0; - i37 = (HEAP32[i17 >> 2] | 0) == 0 ? i28 : i28 | 32; - HEAP32[i11 >> 2] = 113; - i29 = i7 + 20 | 0; - i30 = HEAP32[i29 >> 2] | 0; - HEAP32[i29 >> 2] = i30 + 1; - i28 = i7 + 8 | 0; - HEAP8[(HEAP32[i28 >> 2] | 0) + i30 | 0] = i37 >>> 8; - i30 = HEAP32[i29 >> 2] | 0; - HEAP32[i29 >> 2] = i30 + 1; - HEAP8[(HEAP32[i28 >> 2] | 0) + i30 | 0] = (i37 | ((i37 >>> 0) % 31 | 0)) ^ 31; - i30 = i2 + 48 | 0; - if ((HEAP32[i17 >> 2] | 0) != 0) { - i37 = HEAP32[i30 >> 2] | 0; - i36 = HEAP32[i29 >> 2] | 0; - HEAP32[i29 >> 2] = i36 + 1; - HEAP8[(HEAP32[i28 >> 2] | 0) + i36 | 0] = i37 >>> 24; - i36 = HEAP32[i29 >> 2] | 0; - HEAP32[i29 >> 2] = i36 + 1; - HEAP8[(HEAP32[i28 >> 2] | 0) + i36 | 0] = i37 >>> 16; - i36 = HEAP32[i30 >> 2] | 0; - i37 = HEAP32[i29 >> 2] | 0; - HEAP32[i29 >> 2] = i37 + 1; - HEAP8[(HEAP32[i28 >> 2] | 0) + i37 | 0] = i36 >>> 8; - i37 = HEAP32[i29 >> 2] | 0; - HEAP32[i29 >> 2] = i37 + 1; - HEAP8[(HEAP32[i28 >> 2] | 0) + i37 | 0] = i36; - } - HEAP32[i30 >> 2] = _adler32(0, 0, 0) | 0; - i31 = HEAP32[i11 >> 2] | 0; - i17 = 32; - break; - } - i32 = i2 + 48 | 0; - HEAP32[i32 >> 2] = _crc32(0, 0, 0) | 0; - i30 = i7 + 20 | 0; - i28 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i28 + 1; - i29 = i7 + 8 | 0; - HEAP8[(HEAP32[i29 >> 2] | 0) + i28 | 0] = 31; - i28 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i28 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i28 | 0] = -117; - i28 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i28 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i28 | 0] = 8; - i28 = i7 + 28 | 0; - i33 = HEAP32[i28 >> 2] | 0; - if ((i33 | 0) == 0) { - i22 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i22 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i22 | 0] = 0; - i22 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i22 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i22 | 0] = 0; - i22 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i22 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i22 | 0] = 0; - i22 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i22 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i22 | 0] = 0; - i22 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i22 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i22 | 0] = 0; - i22 = HEAP32[i7 + 132 >> 2] | 0; - if ((i22 | 0) != 9) { - if ((HEAP32[i7 + 136 >> 2] | 0) > 1) { - i22 = 4; - } else { - i22 = (i22 | 0) < 2 ? 4 : 0; - } - } else { - i22 = 2; - } - i37 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i37 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i37 | 0] = i22; - i37 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i37 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i37 | 0] = 3; - HEAP32[i11 >> 2] = 113; - break; - } - i37 = (((HEAP32[i33 + 44 >> 2] | 0) != 0 ? 2 : 0) | (HEAP32[i33 >> 2] | 0) != 0 | ((HEAP32[i33 + 16 >> 2] | 0) == 0 ? 0 : 4) | ((HEAP32[i33 + 28 >> 2] | 0) == 0 ? 0 : 8) | ((HEAP32[i33 + 36 >> 2] | 0) == 0 ? 0 : 16)) & 255; - i17 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i17 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i17 | 0] = i37; - i17 = HEAP32[(HEAP32[i28 >> 2] | 0) + 4 >> 2] & 255; - i37 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i37 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i37 | 0] = i17; - i37 = (HEAP32[(HEAP32[i28 >> 2] | 0) + 4 >> 2] | 0) >>> 8 & 255; - i17 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i17 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i17 | 0] = i37; - i17 = (HEAP32[(HEAP32[i28 >> 2] | 0) + 4 >> 2] | 0) >>> 16 & 255; - i37 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i37 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i37 | 0] = i17; - i37 = (HEAP32[(HEAP32[i28 >> 2] | 0) + 4 >> 2] | 0) >>> 24 & 255; - i17 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i17 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i17 | 0] = i37; - i17 = HEAP32[i7 + 132 >> 2] | 0; - if ((i17 | 0) != 9) { - if ((HEAP32[i7 + 136 >> 2] | 0) > 1) { - i17 = 4; - } else { - i17 = (i17 | 0) < 2 ? 4 : 0; - } - } else { - i17 = 2; - } - i37 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i37 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i37 | 0] = i17; - i37 = HEAP32[(HEAP32[i28 >> 2] | 0) + 12 >> 2] & 255; - i17 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i17 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i17 | 0] = i37; - i17 = HEAP32[i28 >> 2] | 0; - if ((HEAP32[i17 + 16 >> 2] | 0) != 0) { - i17 = HEAP32[i17 + 20 >> 2] & 255; - i37 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i37 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i37 | 0] = i17; - i37 = (HEAP32[(HEAP32[i28 >> 2] | 0) + 20 >> 2] | 0) >>> 8 & 255; - i17 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i17 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i17 | 0] = i37; - i17 = HEAP32[i28 >> 2] | 0; - } - if ((HEAP32[i17 + 44 >> 2] | 0) != 0) { - HEAP32[i32 >> 2] = _crc32(HEAP32[i32 >> 2] | 0, HEAP32[i29 >> 2] | 0, HEAP32[i30 >> 2] | 0) | 0; - } - HEAP32[i7 + 32 >> 2] = 0; - HEAP32[i11 >> 2] = 69; - i17 = 34; - } else { - i31 = i29; - i17 = 32; - } - } while (0); - if ((i17 | 0) == 32) { - if ((i31 | 0) == 69) { - i28 = i7 + 28 | 0; - i17 = 34; - } else { - i17 = 55; - } - } - do { - if ((i17 | 0) == 34) { - i37 = HEAP32[i28 >> 2] | 0; - if ((HEAP32[i37 + 16 >> 2] | 0) == 0) { - HEAP32[i11 >> 2] = 73; - i17 = 57; - break; - } - i29 = i7 + 20 | 0; - i34 = HEAP32[i29 >> 2] | 0; - i17 = i7 + 32 | 0; - i36 = HEAP32[i17 >> 2] | 0; - L55 : do { - if (i36 >>> 0 < (HEAP32[i37 + 20 >> 2] & 65535) >>> 0) { - i30 = i7 + 12 | 0; - i32 = i2 + 48 | 0; - i31 = i7 + 8 | 0; - i33 = i2 + 20 | 0; - i35 = i34; - while (1) { - if ((i35 | 0) == (HEAP32[i30 >> 2] | 0)) { - if ((HEAP32[i37 + 44 >> 2] | 0) != 0 & i35 >>> 0 > i34 >>> 0) { - HEAP32[i32 >> 2] = _crc32(HEAP32[i32 >> 2] | 0, (HEAP32[i31 >> 2] | 0) + i34 | 0, i35 - i34 | 0) | 0; - } - i34 = HEAP32[i5 >> 2] | 0; - i35 = HEAP32[i34 + 20 >> 2] | 0; - i36 = HEAP32[i3 >> 2] | 0; - i35 = i35 >>> 0 > i36 >>> 0 ? i36 : i35; - if ((i35 | 0) != 0 ? (_memcpy(HEAP32[i4 >> 2] | 0, HEAP32[i34 + 16 >> 2] | 0, i35 | 0) | 0, HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + i35, i27 = (HEAP32[i5 >> 2] | 0) + 16 | 0, HEAP32[i27 >> 2] = (HEAP32[i27 >> 2] | 0) + i35, HEAP32[i33 >> 2] = (HEAP32[i33 >> 2] | 0) + i35, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) - i35, i27 = HEAP32[i5 >> 2] | 0, i36 = i27 + 20 | 0, i37 = HEAP32[i36 >> 2] | 0, HEAP32[i36 >> 2] = i37 - i35, (i37 | 0) == (i35 | 0)) : 0) { - HEAP32[i27 + 16 >> 2] = HEAP32[i27 + 8 >> 2]; - } - i34 = HEAP32[i29 >> 2] | 0; - if ((i34 | 0) == (HEAP32[i30 >> 2] | 0)) { - break; - } - i37 = HEAP32[i28 >> 2] | 0; - i36 = HEAP32[i17 >> 2] | 0; - i35 = i34; - } - i36 = HEAP8[(HEAP32[i37 + 16 >> 2] | 0) + i36 | 0] | 0; - HEAP32[i29 >> 2] = i35 + 1; - HEAP8[(HEAP32[i31 >> 2] | 0) + i35 | 0] = i36; - i36 = (HEAP32[i17 >> 2] | 0) + 1 | 0; - HEAP32[i17 >> 2] = i36; - i37 = HEAP32[i28 >> 2] | 0; - if (!(i36 >>> 0 < (HEAP32[i37 + 20 >> 2] & 65535) >>> 0)) { - break L55; - } - i35 = HEAP32[i29 >> 2] | 0; - } - i37 = HEAP32[i28 >> 2] | 0; - } - } while (0); - if ((HEAP32[i37 + 44 >> 2] | 0) != 0 ? (i26 = HEAP32[i29 >> 2] | 0, i26 >>> 0 > i34 >>> 0) : 0) { - i37 = i2 + 48 | 0; - HEAP32[i37 >> 2] = _crc32(HEAP32[i37 >> 2] | 0, (HEAP32[i7 + 8 >> 2] | 0) + i34 | 0, i26 - i34 | 0) | 0; - i37 = HEAP32[i28 >> 2] | 0; - } - if ((HEAP32[i17 >> 2] | 0) == (HEAP32[i37 + 20 >> 2] | 0)) { - HEAP32[i17 >> 2] = 0; - HEAP32[i11 >> 2] = 73; - i17 = 57; - break; - } else { - i31 = HEAP32[i11 >> 2] | 0; - i17 = 55; - break; - } - } - } while (0); - if ((i17 | 0) == 55) { - if ((i31 | 0) == 73) { - i37 = HEAP32[i7 + 28 >> 2] | 0; - i17 = 57; - } else { - i17 = 76; - } - } - do { - if ((i17 | 0) == 57) { - i26 = i7 + 28 | 0; - if ((HEAP32[i37 + 28 >> 2] | 0) == 0) { - HEAP32[i11 >> 2] = 91; - i17 = 78; - break; - } - i27 = i7 + 20 | 0; - i35 = HEAP32[i27 >> 2] | 0; - i32 = i7 + 12 | 0; - i29 = i2 + 48 | 0; - i28 = i7 + 8 | 0; - i31 = i2 + 20 | 0; - i30 = i7 + 32 | 0; - i33 = i35; - while (1) { - if ((i33 | 0) == (HEAP32[i32 >> 2] | 0)) { - if ((HEAP32[(HEAP32[i26 >> 2] | 0) + 44 >> 2] | 0) != 0 & i33 >>> 0 > i35 >>> 0) { - HEAP32[i29 >> 2] = _crc32(HEAP32[i29 >> 2] | 0, (HEAP32[i28 >> 2] | 0) + i35 | 0, i33 - i35 | 0) | 0; - } - i33 = HEAP32[i5 >> 2] | 0; - i34 = HEAP32[i33 + 20 >> 2] | 0; - i35 = HEAP32[i3 >> 2] | 0; - i34 = i34 >>> 0 > i35 >>> 0 ? i35 : i34; - if ((i34 | 0) != 0 ? (_memcpy(HEAP32[i4 >> 2] | 0, HEAP32[i33 + 16 >> 2] | 0, i34 | 0) | 0, HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + i34, i25 = (HEAP32[i5 >> 2] | 0) + 16 | 0, HEAP32[i25 >> 2] = (HEAP32[i25 >> 2] | 0) + i34, HEAP32[i31 >> 2] = (HEAP32[i31 >> 2] | 0) + i34, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) - i34, i25 = HEAP32[i5 >> 2] | 0, i36 = i25 + 20 | 0, i37 = HEAP32[i36 >> 2] | 0, HEAP32[i36 >> 2] = i37 - i34, (i37 | 0) == (i34 | 0)) : 0) { - HEAP32[i25 + 16 >> 2] = HEAP32[i25 + 8 >> 2]; - } - i35 = HEAP32[i27 >> 2] | 0; - if ((i35 | 0) == (HEAP32[i32 >> 2] | 0)) { - i25 = 1; - break; - } else { - i33 = i35; - } - } - i34 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i34 + 1; - i34 = HEAP8[(HEAP32[(HEAP32[i26 >> 2] | 0) + 28 >> 2] | 0) + i34 | 0] | 0; - HEAP32[i27 >> 2] = i33 + 1; - HEAP8[(HEAP32[i28 >> 2] | 0) + i33 | 0] = i34; - if (i34 << 24 >> 24 == 0) { - i17 = 68; - break; - } - i33 = HEAP32[i27 >> 2] | 0; - } - if ((i17 | 0) == 68) { - i25 = i34 & 255; - } - if ((HEAP32[(HEAP32[i26 >> 2] | 0) + 44 >> 2] | 0) != 0 ? (i24 = HEAP32[i27 >> 2] | 0, i24 >>> 0 > i35 >>> 0) : 0) { - HEAP32[i29 >> 2] = _crc32(HEAP32[i29 >> 2] | 0, (HEAP32[i28 >> 2] | 0) + i35 | 0, i24 - i35 | 0) | 0; - } - if ((i25 | 0) == 0) { - HEAP32[i30 >> 2] = 0; - HEAP32[i11 >> 2] = 91; - i17 = 78; - break; - } else { - i31 = HEAP32[i11 >> 2] | 0; - i17 = 76; - break; - } - } - } while (0); - if ((i17 | 0) == 76) { - if ((i31 | 0) == 91) { - i26 = i7 + 28 | 0; - i17 = 78; - } else { - i17 = 97; - } - } - do { - if ((i17 | 0) == 78) { - if ((HEAP32[(HEAP32[i26 >> 2] | 0) + 36 >> 2] | 0) == 0) { - HEAP32[i11 >> 2] = 103; - i17 = 99; - break; - } - i24 = i7 + 20 | 0; - i32 = HEAP32[i24 >> 2] | 0; - i29 = i7 + 12 | 0; - i27 = i2 + 48 | 0; - i25 = i7 + 8 | 0; - i28 = i2 + 20 | 0; - i30 = i7 + 32 | 0; - i31 = i32; - while (1) { - if ((i31 | 0) == (HEAP32[i29 >> 2] | 0)) { - if ((HEAP32[(HEAP32[i26 >> 2] | 0) + 44 >> 2] | 0) != 0 & i31 >>> 0 > i32 >>> 0) { - HEAP32[i27 >> 2] = _crc32(HEAP32[i27 >> 2] | 0, (HEAP32[i25 >> 2] | 0) + i32 | 0, i31 - i32 | 0) | 0; - } - i31 = HEAP32[i5 >> 2] | 0; - i33 = HEAP32[i31 + 20 >> 2] | 0; - i32 = HEAP32[i3 >> 2] | 0; - i32 = i33 >>> 0 > i32 >>> 0 ? i32 : i33; - if ((i32 | 0) != 0 ? (_memcpy(HEAP32[i4 >> 2] | 0, HEAP32[i31 + 16 >> 2] | 0, i32 | 0) | 0, HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + i32, i23 = (HEAP32[i5 >> 2] | 0) + 16 | 0, HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + i32, HEAP32[i28 >> 2] = (HEAP32[i28 >> 2] | 0) + i32, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) - i32, i23 = HEAP32[i5 >> 2] | 0, i36 = i23 + 20 | 0, i37 = HEAP32[i36 >> 2] | 0, HEAP32[i36 >> 2] = i37 - i32, (i37 | 0) == (i32 | 0)) : 0) { - HEAP32[i23 + 16 >> 2] = HEAP32[i23 + 8 >> 2]; - } - i32 = HEAP32[i24 >> 2] | 0; - if ((i32 | 0) == (HEAP32[i29 >> 2] | 0)) { - i23 = 1; - break; - } else { - i31 = i32; - } - } - i33 = HEAP32[i30 >> 2] | 0; - HEAP32[i30 >> 2] = i33 + 1; - i33 = HEAP8[(HEAP32[(HEAP32[i26 >> 2] | 0) + 36 >> 2] | 0) + i33 | 0] | 0; - HEAP32[i24 >> 2] = i31 + 1; - HEAP8[(HEAP32[i25 >> 2] | 0) + i31 | 0] = i33; - if (i33 << 24 >> 24 == 0) { - i17 = 89; - break; - } - i31 = HEAP32[i24 >> 2] | 0; - } - if ((i17 | 0) == 89) { - i23 = i33 & 255; - } - if ((HEAP32[(HEAP32[i26 >> 2] | 0) + 44 >> 2] | 0) != 0 ? (i22 = HEAP32[i24 >> 2] | 0, i22 >>> 0 > i32 >>> 0) : 0) { - HEAP32[i27 >> 2] = _crc32(HEAP32[i27 >> 2] | 0, (HEAP32[i25 >> 2] | 0) + i32 | 0, i22 - i32 | 0) | 0; - } - if ((i23 | 0) == 0) { - HEAP32[i11 >> 2] = 103; - i17 = 99; - break; - } else { - i31 = HEAP32[i11 >> 2] | 0; - i17 = 97; - break; - } - } - } while (0); - if ((i17 | 0) == 97 ? (i31 | 0) == 103 : 0) { - i26 = i7 + 28 | 0; - i17 = 99; - } - do { - if ((i17 | 0) == 99) { - if ((HEAP32[(HEAP32[i26 >> 2] | 0) + 44 >> 2] | 0) == 0) { - HEAP32[i11 >> 2] = 113; - break; - } - i17 = i7 + 20 | 0; - i22 = i7 + 12 | 0; - if ((((HEAP32[i17 >> 2] | 0) + 2 | 0) >>> 0 > (HEAP32[i22 >> 2] | 0) >>> 0 ? (i20 = HEAP32[i5 >> 2] | 0, i21 = HEAP32[i20 + 20 >> 2] | 0, i23 = HEAP32[i3 >> 2] | 0, i21 = i21 >>> 0 > i23 >>> 0 ? i23 : i21, (i21 | 0) != 0) : 0) ? (_memcpy(HEAP32[i4 >> 2] | 0, HEAP32[i20 + 16 >> 2] | 0, i21 | 0) | 0, HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + i21, i19 = (HEAP32[i5 >> 2] | 0) + 16 | 0, HEAP32[i19 >> 2] = (HEAP32[i19 >> 2] | 0) + i21, i19 = i2 + 20 | 0, HEAP32[i19 >> 2] = (HEAP32[i19 >> 2] | 0) + i21, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) - i21, i19 = HEAP32[i5 >> 2] | 0, i36 = i19 + 20 | 0, i37 = HEAP32[i36 >> 2] | 0, HEAP32[i36 >> 2] = i37 - i21, (i37 | 0) == (i21 | 0)) : 0) { - HEAP32[i19 + 16 >> 2] = HEAP32[i19 + 8 >> 2]; - } - i19 = HEAP32[i17 >> 2] | 0; - if (!((i19 + 2 | 0) >>> 0 > (HEAP32[i22 >> 2] | 0) >>> 0)) { - i37 = i2 + 48 | 0; - i34 = HEAP32[i37 >> 2] & 255; - HEAP32[i17 >> 2] = i19 + 1; - i35 = i7 + 8 | 0; - HEAP8[(HEAP32[i35 >> 2] | 0) + i19 | 0] = i34; - i34 = (HEAP32[i37 >> 2] | 0) >>> 8 & 255; - i36 = HEAP32[i17 >> 2] | 0; - HEAP32[i17 >> 2] = i36 + 1; - HEAP8[(HEAP32[i35 >> 2] | 0) + i36 | 0] = i34; - HEAP32[i37 >> 2] = _crc32(0, 0, 0) | 0; - HEAP32[i11 >> 2] = 113; - } - } - } while (0); - i19 = i7 + 20 | 0; - if ((HEAP32[i19 >> 2] | 0) == 0) { - if ((HEAP32[i2 + 4 >> 2] | 0) == 0 ? (i18 | 0) >= (i10 | 0) & (i10 | 0) != 4 : 0) { - HEAP32[i2 + 24 >> 2] = HEAP32[3180 >> 2]; - i37 = -5; - STACKTOP = i1; - return i37 | 0; - } - } else { - i17 = HEAP32[i5 >> 2] | 0; - i20 = HEAP32[i17 + 20 >> 2] | 0; - i18 = HEAP32[i3 >> 2] | 0; - i20 = i20 >>> 0 > i18 >>> 0 ? i18 : i20; - if ((i20 | 0) != 0) { - _memcpy(HEAP32[i4 >> 2] | 0, HEAP32[i17 + 16 >> 2] | 0, i20 | 0) | 0; - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + i20; - i17 = (HEAP32[i5 >> 2] | 0) + 16 | 0; - HEAP32[i17 >> 2] = (HEAP32[i17 >> 2] | 0) + i20; - i17 = i2 + 20 | 0; - HEAP32[i17 >> 2] = (HEAP32[i17 >> 2] | 0) + i20; - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) - i20; - i17 = HEAP32[i5 >> 2] | 0; - i36 = i17 + 20 | 0; - i37 = HEAP32[i36 >> 2] | 0; - HEAP32[i36 >> 2] = i37 - i20; - if ((i37 | 0) == (i20 | 0)) { - HEAP32[i17 + 16 >> 2] = HEAP32[i17 + 8 >> 2]; - } - i18 = HEAP32[i3 >> 2] | 0; - } - if ((i18 | 0) == 0) { - HEAP32[i8 >> 2] = -1; - i37 = 0; - STACKTOP = i1; - return i37 | 0; - } - } - i18 = (HEAP32[i11 >> 2] | 0) == 666; - i17 = (HEAP32[i2 + 4 >> 2] | 0) == 0; - if (i18) { - if (i17) { - i17 = 121; - } else { - HEAP32[i2 + 24 >> 2] = HEAP32[3180 >> 2]; - i37 = -5; - STACKTOP = i1; - return i37 | 0; - } - } else { - if (i17) { - i17 = 121; - } else { - i17 = 124; - } - } - do { - if ((i17 | 0) == 121) { - if ((HEAP32[i7 + 116 >> 2] | 0) == 0) { - if ((i10 | 0) != 0) { - if (i18) { - break; - } else { - i17 = 124; - break; - } - } else { - i37 = 0; - STACKTOP = i1; - return i37 | 0; - } - } else { - i17 = 124; - } - } - } while (0); - do { - if ((i17 | 0) == 124) { - i18 = HEAP32[i7 + 136 >> 2] | 0; - L185 : do { - if ((i18 | 0) == 2) { - i22 = i7 + 116 | 0; - i18 = i7 + 96 | 0; - i13 = i7 + 108 | 0; - i14 = i7 + 56 | 0; - i21 = i7 + 5792 | 0; - i20 = i7 + 5796 | 0; - i24 = i7 + 5784 | 0; - i23 = i7 + 5788 | 0; - i12 = i7 + 92 | 0; - while (1) { - if ((HEAP32[i22 >> 2] | 0) == 0 ? (_fill_window(i7), (HEAP32[i22 >> 2] | 0) == 0) : 0) { - break; - } - HEAP32[i18 >> 2] = 0; - i37 = HEAP8[(HEAP32[i14 >> 2] | 0) + (HEAP32[i13 >> 2] | 0) | 0] | 0; - i26 = HEAP32[i21 >> 2] | 0; - HEAP16[(HEAP32[i20 >> 2] | 0) + (i26 << 1) >> 1] = 0; - HEAP32[i21 >> 2] = i26 + 1; - HEAP8[(HEAP32[i24 >> 2] | 0) + i26 | 0] = i37; - i37 = i7 + ((i37 & 255) << 2) + 148 | 0; - HEAP16[i37 >> 1] = (HEAP16[i37 >> 1] | 0) + 1 << 16 >> 16; - i37 = (HEAP32[i21 >> 2] | 0) == ((HEAP32[i23 >> 2] | 0) + -1 | 0); - HEAP32[i22 >> 2] = (HEAP32[i22 >> 2] | 0) + -1; - i26 = (HEAP32[i13 >> 2] | 0) + 1 | 0; - HEAP32[i13 >> 2] = i26; - if (!i37) { - continue; - } - i25 = HEAP32[i12 >> 2] | 0; - if ((i25 | 0) > -1) { - i27 = (HEAP32[i14 >> 2] | 0) + i25 | 0; - } else { - i27 = 0; - } - __tr_flush_block(i7, i27, i26 - i25 | 0, 0); - HEAP32[i12 >> 2] = HEAP32[i13 >> 2]; - i26 = HEAP32[i7 >> 2] | 0; - i25 = i26 + 28 | 0; - i27 = HEAP32[i25 >> 2] | 0; - i30 = HEAP32[i27 + 20 >> 2] | 0; - i28 = i26 + 16 | 0; - i29 = HEAP32[i28 >> 2] | 0; - i29 = i30 >>> 0 > i29 >>> 0 ? i29 : i30; - if ((i29 | 0) != 0 ? (i16 = i26 + 12 | 0, _memcpy(HEAP32[i16 >> 2] | 0, HEAP32[i27 + 16 >> 2] | 0, i29 | 0) | 0, HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) + i29, i16 = (HEAP32[i25 >> 2] | 0) + 16 | 0, HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) + i29, i16 = i26 + 20 | 0, HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) + i29, HEAP32[i28 >> 2] = (HEAP32[i28 >> 2] | 0) - i29, i16 = HEAP32[i25 >> 2] | 0, i36 = i16 + 20 | 0, i37 = HEAP32[i36 >> 2] | 0, HEAP32[i36 >> 2] = i37 - i29, (i37 | 0) == (i29 | 0)) : 0) { - HEAP32[i16 + 16 >> 2] = HEAP32[i16 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i7 >> 2] | 0) + 16 >> 2] | 0) == 0) { - break L185; - } - } - if ((i10 | 0) != 0) { - i16 = HEAP32[i12 >> 2] | 0; - if ((i16 | 0) > -1) { - i14 = (HEAP32[i14 >> 2] | 0) + i16 | 0; - } else { - i14 = 0; - } - __tr_flush_block(i7, i14, (HEAP32[i13 >> 2] | 0) - i16 | 0, i9 & 1); - HEAP32[i12 >> 2] = HEAP32[i13 >> 2]; - i14 = HEAP32[i7 >> 2] | 0; - i13 = i14 + 28 | 0; - i12 = HEAP32[i13 >> 2] | 0; - i17 = HEAP32[i12 + 20 >> 2] | 0; - i16 = i14 + 16 | 0; - i18 = HEAP32[i16 >> 2] | 0; - i17 = i17 >>> 0 > i18 >>> 0 ? i18 : i17; - if ((i17 | 0) != 0 ? (i15 = i14 + 12 | 0, _memcpy(HEAP32[i15 >> 2] | 0, HEAP32[i12 + 16 >> 2] | 0, i17 | 0) | 0, HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + i17, i15 = (HEAP32[i13 >> 2] | 0) + 16 | 0, HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + i17, i15 = i14 + 20 | 0, HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + i17, HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) - i17, i15 = HEAP32[i13 >> 2] | 0, i36 = i15 + 20 | 0, i37 = HEAP32[i36 >> 2] | 0, HEAP32[i36 >> 2] = i37 - i17, (i37 | 0) == (i17 | 0)) : 0) { - HEAP32[i15 + 16 >> 2] = HEAP32[i15 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i7 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i12 = i9 ? 2 : 0; - i17 = 183; - break; - } else { - i12 = i9 ? 3 : 1; - i17 = 183; - break; - } - } - } else if ((i18 | 0) == 3) { - i27 = i7 + 116 | 0; - i26 = (i10 | 0) == 0; - i22 = i7 + 96 | 0; - i15 = i7 + 108 | 0; - i20 = i7 + 5792 | 0; - i24 = i7 + 5796 | 0; - i23 = i7 + 5784 | 0; - i21 = i7 + (HEAPU8[296] << 2) + 2440 | 0; - i25 = i7 + 5788 | 0; - i18 = i7 + 56 | 0; - i16 = i7 + 92 | 0; - while (1) { - i29 = HEAP32[i27 >> 2] | 0; - if (i29 >>> 0 < 258) { - _fill_window(i7); - i29 = HEAP32[i27 >> 2] | 0; - if (i29 >>> 0 < 258 & i26) { - break L185; - } - if ((i29 | 0) == 0) { - break; - } - HEAP32[i22 >> 2] = 0; - if (i29 >>> 0 > 2) { - i17 = 151; - } else { - i28 = HEAP32[i15 >> 2] | 0; - i17 = 166; - } - } else { - HEAP32[i22 >> 2] = 0; - i17 = 151; - } - if ((i17 | 0) == 151) { - i17 = 0; - i28 = HEAP32[i15 >> 2] | 0; - if ((i28 | 0) != 0) { - i31 = HEAP32[i18 >> 2] | 0; - i30 = HEAP8[i31 + (i28 + -1) | 0] | 0; - if ((i30 << 24 >> 24 == (HEAP8[i31 + i28 | 0] | 0) ? i30 << 24 >> 24 == (HEAP8[i31 + (i28 + 1) | 0] | 0) : 0) ? (i14 = i31 + (i28 + 2) | 0, i30 << 24 >> 24 == (HEAP8[i14] | 0)) : 0) { - i31 = i31 + (i28 + 258) | 0; - i32 = i14; - do { - i33 = i32 + 1 | 0; - if (!(i30 << 24 >> 24 == (HEAP8[i33] | 0))) { - i32 = i33; - break; - } - i33 = i32 + 2 | 0; - if (!(i30 << 24 >> 24 == (HEAP8[i33] | 0))) { - i32 = i33; - break; - } - i33 = i32 + 3 | 0; - if (!(i30 << 24 >> 24 == (HEAP8[i33] | 0))) { - i32 = i33; - break; - } - i33 = i32 + 4 | 0; - if (!(i30 << 24 >> 24 == (HEAP8[i33] | 0))) { - i32 = i33; - break; - } - i33 = i32 + 5 | 0; - if (!(i30 << 24 >> 24 == (HEAP8[i33] | 0))) { - i32 = i33; - break; - } - i33 = i32 + 6 | 0; - if (!(i30 << 24 >> 24 == (HEAP8[i33] | 0))) { - i32 = i33; - break; - } - i33 = i32 + 7 | 0; - if (!(i30 << 24 >> 24 == (HEAP8[i33] | 0))) { - i32 = i33; - break; - } - i32 = i32 + 8 | 0; - } while (i30 << 24 >> 24 == (HEAP8[i32] | 0) & i32 >>> 0 < i31 >>> 0); - i30 = i32 - i31 + 258 | 0; - i29 = i30 >>> 0 > i29 >>> 0 ? i29 : i30; - HEAP32[i22 >> 2] = i29; - if (i29 >>> 0 > 2) { - i29 = i29 + 253 | 0; - i28 = HEAP32[i20 >> 2] | 0; - HEAP16[(HEAP32[i24 >> 2] | 0) + (i28 << 1) >> 1] = 1; - HEAP32[i20 >> 2] = i28 + 1; - HEAP8[(HEAP32[i23 >> 2] | 0) + i28 | 0] = i29; - i29 = i7 + ((HEAPU8[808 + (i29 & 255) | 0] | 256) + 1 << 2) + 148 | 0; - HEAP16[i29 >> 1] = (HEAP16[i29 >> 1] | 0) + 1 << 16 >> 16; - HEAP16[i21 >> 1] = (HEAP16[i21 >> 1] | 0) + 1 << 16 >> 16; - i29 = (HEAP32[i20 >> 2] | 0) == ((HEAP32[i25 >> 2] | 0) + -1 | 0) | 0; - i28 = HEAP32[i22 >> 2] | 0; - HEAP32[i27 >> 2] = (HEAP32[i27 >> 2] | 0) - i28; - i28 = (HEAP32[i15 >> 2] | 0) + i28 | 0; - HEAP32[i15 >> 2] = i28; - HEAP32[i22 >> 2] = 0; - } else { - i17 = 166; - } - } else { - i17 = 166; - } - } else { - i28 = 0; - i17 = 166; - } - } - if ((i17 | 0) == 166) { - i17 = 0; - i29 = HEAP8[(HEAP32[i18 >> 2] | 0) + i28 | 0] | 0; - i28 = HEAP32[i20 >> 2] | 0; - HEAP16[(HEAP32[i24 >> 2] | 0) + (i28 << 1) >> 1] = 0; - HEAP32[i20 >> 2] = i28 + 1; - HEAP8[(HEAP32[i23 >> 2] | 0) + i28 | 0] = i29; - i29 = i7 + ((i29 & 255) << 2) + 148 | 0; - HEAP16[i29 >> 1] = (HEAP16[i29 >> 1] | 0) + 1 << 16 >> 16; - i29 = (HEAP32[i20 >> 2] | 0) == ((HEAP32[i25 >> 2] | 0) + -1 | 0) | 0; - HEAP32[i27 >> 2] = (HEAP32[i27 >> 2] | 0) + -1; - i28 = (HEAP32[i15 >> 2] | 0) + 1 | 0; - HEAP32[i15 >> 2] = i28; - } - if ((i29 | 0) == 0) { - continue; - } - i29 = HEAP32[i16 >> 2] | 0; - if ((i29 | 0) > -1) { - i30 = (HEAP32[i18 >> 2] | 0) + i29 | 0; - } else { - i30 = 0; - } - __tr_flush_block(i7, i30, i28 - i29 | 0, 0); - HEAP32[i16 >> 2] = HEAP32[i15 >> 2]; - i30 = HEAP32[i7 >> 2] | 0; - i28 = i30 + 28 | 0; - i29 = HEAP32[i28 >> 2] | 0; - i33 = HEAP32[i29 + 20 >> 2] | 0; - i31 = i30 + 16 | 0; - i32 = HEAP32[i31 >> 2] | 0; - i32 = i33 >>> 0 > i32 >>> 0 ? i32 : i33; - if ((i32 | 0) != 0 ? (i13 = i30 + 12 | 0, _memcpy(HEAP32[i13 >> 2] | 0, HEAP32[i29 + 16 >> 2] | 0, i32 | 0) | 0, HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + i32, i13 = (HEAP32[i28 >> 2] | 0) + 16 | 0, HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + i32, i13 = i30 + 20 | 0, HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + i32, HEAP32[i31 >> 2] = (HEAP32[i31 >> 2] | 0) - i32, i13 = HEAP32[i28 >> 2] | 0, i36 = i13 + 20 | 0, i37 = HEAP32[i36 >> 2] | 0, HEAP32[i36 >> 2] = i37 - i32, (i37 | 0) == (i32 | 0)) : 0) { - HEAP32[i13 + 16 >> 2] = HEAP32[i13 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i7 >> 2] | 0) + 16 >> 2] | 0) == 0) { - break L185; - } - } - i13 = HEAP32[i16 >> 2] | 0; - if ((i13 | 0) > -1) { - i14 = (HEAP32[i18 >> 2] | 0) + i13 | 0; - } else { - i14 = 0; - } - __tr_flush_block(i7, i14, (HEAP32[i15 >> 2] | 0) - i13 | 0, i9 & 1); - HEAP32[i16 >> 2] = HEAP32[i15 >> 2]; - i14 = HEAP32[i7 >> 2] | 0; - i16 = i14 + 28 | 0; - i15 = HEAP32[i16 >> 2] | 0; - i18 = HEAP32[i15 + 20 >> 2] | 0; - i13 = i14 + 16 | 0; - i17 = HEAP32[i13 >> 2] | 0; - i17 = i18 >>> 0 > i17 >>> 0 ? i17 : i18; - if ((i17 | 0) != 0 ? (i12 = i14 + 12 | 0, _memcpy(HEAP32[i12 >> 2] | 0, HEAP32[i15 + 16 >> 2] | 0, i17 | 0) | 0, HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + i17, i12 = (HEAP32[i16 >> 2] | 0) + 16 | 0, HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + i17, i12 = i14 + 20 | 0, HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + i17, HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) - i17, i12 = HEAP32[i16 >> 2] | 0, i36 = i12 + 20 | 0, i37 = HEAP32[i36 >> 2] | 0, HEAP32[i36 >> 2] = i37 - i17, (i37 | 0) == (i17 | 0)) : 0) { - HEAP32[i12 + 16 >> 2] = HEAP32[i12 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i7 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i12 = i9 ? 2 : 0; - i17 = 183; - break; - } else { - i12 = i9 ? 3 : 1; - i17 = 183; - break; - } - } else { - i12 = FUNCTION_TABLE_iii[HEAP32[184 + ((HEAP32[i7 + 132 >> 2] | 0) * 12 | 0) >> 2] & 3](i7, i10) | 0; - i17 = 183; - } - } while (0); - if ((i17 | 0) == 183) { - if ((i12 & -2 | 0) == 2) { - HEAP32[i11 >> 2] = 666; - } - if ((i12 & -3 | 0) != 0) { - if ((i12 | 0) != 1) { - break; - } - if ((i10 | 0) == 1) { - __tr_align(i7); - } else if (((i10 | 0) != 5 ? (__tr_stored_block(i7, 0, 0, 0), (i10 | 0) == 3) : 0) ? (i37 = HEAP32[i7 + 76 >> 2] | 0, i36 = HEAP32[i7 + 68 >> 2] | 0, HEAP16[i36 + (i37 + -1 << 1) >> 1] = 0, _memset(i36 | 0, 0, (i37 << 1) + -2 | 0) | 0, (HEAP32[i7 + 116 >> 2] | 0) == 0) : 0) { - HEAP32[i7 + 108 >> 2] = 0; - HEAP32[i7 + 92 >> 2] = 0; - } - i11 = HEAP32[i5 >> 2] | 0; - i12 = HEAP32[i11 + 20 >> 2] | 0; - i10 = HEAP32[i3 >> 2] | 0; - i12 = i12 >>> 0 > i10 >>> 0 ? i10 : i12; - if ((i12 | 0) != 0) { - _memcpy(HEAP32[i4 >> 2] | 0, HEAP32[i11 + 16 >> 2] | 0, i12 | 0) | 0; - HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + i12; - i10 = (HEAP32[i5 >> 2] | 0) + 16 | 0; - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + i12; - i10 = i2 + 20 | 0; - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + i12; - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) - i12; - i10 = HEAP32[i5 >> 2] | 0; - i36 = i10 + 20 | 0; - i37 = HEAP32[i36 >> 2] | 0; - HEAP32[i36 >> 2] = i37 - i12; - if ((i37 | 0) == (i12 | 0)) { - HEAP32[i10 + 16 >> 2] = HEAP32[i10 + 8 >> 2]; - } - i10 = HEAP32[i3 >> 2] | 0; - } - if ((i10 | 0) != 0) { - break; - } - HEAP32[i8 >> 2] = -1; - i37 = 0; - STACKTOP = i1; - return i37 | 0; - } - } - if ((HEAP32[i3 >> 2] | 0) != 0) { - i37 = 0; - STACKTOP = i1; - return i37 | 0; - } - HEAP32[i8 >> 2] = -1; - i37 = 0; - STACKTOP = i1; - return i37 | 0; - } - } while (0); - if (!i9) { - i37 = 0; - STACKTOP = i1; - return i37 | 0; - } - i8 = i7 + 24 | 0; - i10 = HEAP32[i8 >> 2] | 0; - if ((i10 | 0) < 1) { - i37 = 1; - STACKTOP = i1; - return i37 | 0; - } - i11 = i2 + 48 | 0; - i9 = HEAP32[i11 >> 2] | 0; - if ((i10 | 0) == 2) { - i34 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i34 + 1; - i36 = i7 + 8 | 0; - HEAP8[(HEAP32[i36 >> 2] | 0) + i34 | 0] = i9; - i34 = (HEAP32[i11 >> 2] | 0) >>> 8 & 255; - i35 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i35 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i35 | 0] = i34; - i35 = (HEAP32[i11 >> 2] | 0) >>> 16 & 255; - i34 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i34 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i34 | 0] = i35; - i34 = (HEAP32[i11 >> 2] | 0) >>> 24 & 255; - i35 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i35 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i35 | 0] = i34; - i35 = i2 + 8 | 0; - i34 = HEAP32[i35 >> 2] & 255; - i37 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i37 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i37 | 0] = i34; - i37 = (HEAP32[i35 >> 2] | 0) >>> 8 & 255; - i34 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i34 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i34 | 0] = i37; - i34 = (HEAP32[i35 >> 2] | 0) >>> 16 & 255; - i37 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i37 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i37 | 0] = i34; - i35 = (HEAP32[i35 >> 2] | 0) >>> 24 & 255; - i37 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i37 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i37 | 0] = i35; - } else { - i35 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i35 + 1; - i36 = i7 + 8 | 0; - HEAP8[(HEAP32[i36 >> 2] | 0) + i35 | 0] = i9 >>> 24; - i35 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i35 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i35 | 0] = i9 >>> 16; - i35 = HEAP32[i11 >> 2] | 0; - i37 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i37 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i37 | 0] = i35 >>> 8; - i37 = HEAP32[i19 >> 2] | 0; - HEAP32[i19 >> 2] = i37 + 1; - HEAP8[(HEAP32[i36 >> 2] | 0) + i37 | 0] = i35; - } - i7 = HEAP32[i5 >> 2] | 0; - i10 = HEAP32[i7 + 20 >> 2] | 0; - i9 = HEAP32[i3 >> 2] | 0; - i9 = i10 >>> 0 > i9 >>> 0 ? i9 : i10; - if ((i9 | 0) != 0 ? (_memcpy(HEAP32[i4 >> 2] | 0, HEAP32[i7 + 16 >> 2] | 0, i9 | 0) | 0, HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + i9, i6 = (HEAP32[i5 >> 2] | 0) + 16 | 0, HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i9, i6 = i2 + 20 | 0, HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i9, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) - i9, i6 = HEAP32[i5 >> 2] | 0, i36 = i6 + 20 | 0, i37 = HEAP32[i36 >> 2] | 0, HEAP32[i36 >> 2] = i37 - i9, (i37 | 0) == (i9 | 0)) : 0) { - HEAP32[i6 + 16 >> 2] = HEAP32[i6 + 8 >> 2]; - } - i2 = HEAP32[i8 >> 2] | 0; - if ((i2 | 0) > 0) { - HEAP32[i8 >> 2] = 0 - i2; - } - i37 = (HEAP32[i19 >> 2] | 0) == 0 | 0; - STACKTOP = i1; - return i37 | 0; - } - } - } while (0); - HEAP32[i2 + 24 >> 2] = HEAP32[3168 >> 2]; - i37 = -2; - STACKTOP = i1; - return i37 | 0; -} -function _free(i7) { - i7 = i7 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0; - i1 = STACKTOP; - if ((i7 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = i7 + -8 | 0; - i16 = HEAP32[14488 >> 2] | 0; - if (i15 >>> 0 < i16 >>> 0) { - _abort(); - } - i13 = HEAP32[i7 + -4 >> 2] | 0; - i12 = i13 & 3; - if ((i12 | 0) == 1) { - _abort(); - } - i8 = i13 & -8; - i6 = i7 + (i8 + -8) | 0; - do { - if ((i13 & 1 | 0) == 0) { - i19 = HEAP32[i15 >> 2] | 0; - if ((i12 | 0) == 0) { - STACKTOP = i1; - return; - } - i15 = -8 - i19 | 0; - i13 = i7 + i15 | 0; - i12 = i19 + i8 | 0; - if (i13 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((i13 | 0) == (HEAP32[14492 >> 2] | 0)) { - i2 = i7 + (i8 + -4) | 0; - if ((HEAP32[i2 >> 2] & 3 | 0) != 3) { - i2 = i13; - i11 = i12; - break; - } - HEAP32[14480 >> 2] = i12; - HEAP32[i2 >> 2] = HEAP32[i2 >> 2] & -2; - HEAP32[i7 + (i15 + 4) >> 2] = i12 | 1; - HEAP32[i6 >> 2] = i12; - STACKTOP = i1; - return; - } - i18 = i19 >>> 3; - if (i19 >>> 0 < 256) { - i2 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - i11 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - i14 = 14512 + (i18 << 1 << 2) | 0; - if ((i2 | 0) != (i14 | 0)) { - if (i2 >>> 0 < i16 >>> 0) { - _abort(); - } - if ((HEAP32[i2 + 12 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - } - if ((i11 | 0) == (i2 | 0)) { - HEAP32[3618] = HEAP32[3618] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - if ((i11 | 0) != (i14 | 0)) { - if (i11 >>> 0 < i16 >>> 0) { - _abort(); - } - i14 = i11 + 8 | 0; - if ((HEAP32[i14 >> 2] | 0) == (i13 | 0)) { - i17 = i14; - } else { - _abort(); - } - } else { - i17 = i11 + 8 | 0; - } - HEAP32[i2 + 12 >> 2] = i11; - HEAP32[i17 >> 2] = i2; - i2 = i13; - i11 = i12; - break; - } - i17 = HEAP32[i7 + (i15 + 24) >> 2] | 0; - i18 = HEAP32[i7 + (i15 + 12) >> 2] | 0; - do { - if ((i18 | 0) == (i13 | 0)) { - i19 = i7 + (i15 + 20) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i19 = i7 + (i15 + 16) | 0; - i18 = HEAP32[i19 >> 2] | 0; - if ((i18 | 0) == 0) { - i14 = 0; - break; - } - } - while (1) { - i21 = i18 + 20 | 0; - i20 = HEAP32[i21 >> 2] | 0; - if ((i20 | 0) != 0) { - i18 = i20; - i19 = i21; - continue; - } - i20 = i18 + 16 | 0; - i21 = HEAP32[i20 >> 2] | 0; - if ((i21 | 0) == 0) { - break; - } else { - i18 = i21; - i19 = i20; - } - } - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } else { - HEAP32[i19 >> 2] = 0; - i14 = i18; - break; - } - } else { - i19 = HEAP32[i7 + (i15 + 8) >> 2] | 0; - if (i19 >>> 0 < i16 >>> 0) { - _abort(); - } - i16 = i19 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i13 | 0)) { - _abort(); - } - i20 = i18 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i18; - HEAP32[i20 >> 2] = i19; - i14 = i18; - break; - } else { - _abort(); - } - } - } while (0); - if ((i17 | 0) != 0) { - i18 = HEAP32[i7 + (i15 + 28) >> 2] | 0; - i16 = 14776 + (i18 << 2) | 0; - if ((i13 | 0) == (HEAP32[i16 >> 2] | 0)) { - HEAP32[i16 >> 2] = i14; - if ((i14 | 0) == 0) { - HEAP32[14476 >> 2] = HEAP32[14476 >> 2] & ~(1 << i18); - i2 = i13; - i11 = i12; - break; - } - } else { - if (i17 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i16 = i17 + 16 | 0; - if ((HEAP32[i16 >> 2] | 0) == (i13 | 0)) { - HEAP32[i16 >> 2] = i14; - } else { - HEAP32[i17 + 20 >> 2] = i14; - } - if ((i14 | 0) == 0) { - i2 = i13; - i11 = i12; - break; - } - } - if (i14 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i14 + 24 >> 2] = i17; - i16 = HEAP32[i7 + (i15 + 16) >> 2] | 0; - do { - if ((i16 | 0) != 0) { - if (i16 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 16 >> 2] = i16; - HEAP32[i16 + 24 >> 2] = i14; - break; - } - } - } while (0); - i15 = HEAP32[i7 + (i15 + 20) >> 2] | 0; - if ((i15 | 0) != 0) { - if (i15 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i14 + 20 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i14; - i2 = i13; - i11 = i12; - break; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i13; - i11 = i12; - } - } else { - i2 = i15; - i11 = i8; - } - } while (0); - if (!(i2 >>> 0 < i6 >>> 0)) { - _abort(); - } - i12 = i7 + (i8 + -4) | 0; - i13 = HEAP32[i12 >> 2] | 0; - if ((i13 & 1 | 0) == 0) { - _abort(); - } - if ((i13 & 2 | 0) == 0) { - if ((i6 | 0) == (HEAP32[14496 >> 2] | 0)) { - i21 = (HEAP32[14484 >> 2] | 0) + i11 | 0; - HEAP32[14484 >> 2] = i21; - HEAP32[14496 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - if ((i2 | 0) != (HEAP32[14492 >> 2] | 0)) { - STACKTOP = i1; - return; - } - HEAP32[14492 >> 2] = 0; - HEAP32[14480 >> 2] = 0; - STACKTOP = i1; - return; - } - if ((i6 | 0) == (HEAP32[14492 >> 2] | 0)) { - i21 = (HEAP32[14480 >> 2] | 0) + i11 | 0; - HEAP32[14480 >> 2] = i21; - HEAP32[14492 >> 2] = i2; - HEAP32[i2 + 4 >> 2] = i21 | 1; - HEAP32[i2 + i21 >> 2] = i21; - STACKTOP = i1; - return; - } - i11 = (i13 & -8) + i11 | 0; - i12 = i13 >>> 3; - do { - if (!(i13 >>> 0 < 256)) { - i10 = HEAP32[i7 + (i8 + 16) >> 2] | 0; - i15 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - do { - if ((i15 | 0) == (i6 | 0)) { - i13 = i7 + (i8 + 12) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i13 = i7 + (i8 + 8) | 0; - i12 = HEAP32[i13 >> 2] | 0; - if ((i12 | 0) == 0) { - i9 = 0; - break; - } - } - while (1) { - i14 = i12 + 20 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) != 0) { - i12 = i15; - i13 = i14; - continue; - } - i14 = i12 + 16 | 0; - i15 = HEAP32[i14 >> 2] | 0; - if ((i15 | 0) == 0) { - break; - } else { - i12 = i15; - i13 = i14; - } - } - if (i13 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i13 >> 2] = 0; - i9 = i12; - break; - } - } else { - i13 = HEAP32[i7 + i8 >> 2] | 0; - if (i13 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i14 = i13 + 12 | 0; - if ((HEAP32[i14 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - i12 = i15 + 8 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i14 >> 2] = i15; - HEAP32[i12 >> 2] = i13; - i9 = i15; - break; - } else { - _abort(); - } - } - } while (0); - if ((i10 | 0) != 0) { - i12 = HEAP32[i7 + (i8 + 20) >> 2] | 0; - i13 = 14776 + (i12 << 2) | 0; - if ((i6 | 0) == (HEAP32[i13 >> 2] | 0)) { - HEAP32[i13 >> 2] = i9; - if ((i9 | 0) == 0) { - HEAP32[14476 >> 2] = HEAP32[14476 >> 2] & ~(1 << i12); - break; - } - } else { - if (i10 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i12 = i10 + 16 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) { - HEAP32[i12 >> 2] = i9; - } else { - HEAP32[i10 + 20 >> 2] = i9; - } - if ((i9 | 0) == 0) { - break; - } - } - if (i9 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - HEAP32[i9 + 24 >> 2] = i10; - i6 = HEAP32[i7 + (i8 + 8) >> 2] | 0; - do { - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 16 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } while (0); - i6 = HEAP32[i7 + (i8 + 12) >> 2] | 0; - if ((i6 | 0) != 0) { - if (i6 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i9 + 20 >> 2] = i6; - HEAP32[i6 + 24 >> 2] = i9; - break; - } - } - } - } else { - i9 = HEAP32[i7 + i8 >> 2] | 0; - i7 = HEAP32[i7 + (i8 | 4) >> 2] | 0; - i8 = 14512 + (i12 << 1 << 2) | 0; - if ((i9 | 0) != (i8 | 0)) { - if (i9 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - if ((HEAP32[i9 + 12 >> 2] | 0) != (i6 | 0)) { - _abort(); - } - } - if ((i7 | 0) == (i9 | 0)) { - HEAP32[3618] = HEAP32[3618] & ~(1 << i12); - break; - } - if ((i7 | 0) != (i8 | 0)) { - if (i7 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } - i8 = i7 + 8 | 0; - if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) { - i10 = i8; - } else { - _abort(); - } - } else { - i10 = i7 + 8 | 0; - } - HEAP32[i9 + 12 >> 2] = i7; - HEAP32[i10 >> 2] = i9; - } - } while (0); - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - if ((i2 | 0) == (HEAP32[14492 >> 2] | 0)) { - HEAP32[14480 >> 2] = i11; - STACKTOP = i1; - return; - } - } else { - HEAP32[i12 >> 2] = i13 & -2; - HEAP32[i2 + 4 >> 2] = i11 | 1; - HEAP32[i2 + i11 >> 2] = i11; - } - i6 = i11 >>> 3; - if (i11 >>> 0 < 256) { - i7 = i6 << 1; - i3 = 14512 + (i7 << 2) | 0; - i8 = HEAP32[3618] | 0; - i6 = 1 << i6; - if ((i8 & i6 | 0) != 0) { - i6 = 14512 + (i7 + 2 << 2) | 0; - i7 = HEAP32[i6 >> 2] | 0; - if (i7 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - i4 = i6; - i5 = i7; - } - } else { - HEAP32[3618] = i8 | i6; - i4 = 14512 + (i7 + 2 << 2) | 0; - i5 = i3; - } - HEAP32[i4 >> 2] = i2; - HEAP32[i5 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i3; - STACKTOP = i1; - return; - } - i4 = i11 >>> 8; - if ((i4 | 0) != 0) { - if (i11 >>> 0 > 16777215) { - i4 = 31; - } else { - i20 = (i4 + 1048320 | 0) >>> 16 & 8; - i21 = i4 << i20; - i19 = (i21 + 520192 | 0) >>> 16 & 4; - i21 = i21 << i19; - i4 = (i21 + 245760 | 0) >>> 16 & 2; - i4 = 14 - (i19 | i20 | i4) + (i21 << i4 >>> 15) | 0; - i4 = i11 >>> (i4 + 7 | 0) & 1 | i4 << 1; - } - } else { - i4 = 0; - } - i5 = 14776 + (i4 << 2) | 0; - HEAP32[i2 + 28 >> 2] = i4; - HEAP32[i2 + 20 >> 2] = 0; - HEAP32[i2 + 16 >> 2] = 0; - i7 = HEAP32[14476 >> 2] | 0; - i6 = 1 << i4; - L199 : do { - if ((i7 & i6 | 0) != 0) { - i5 = HEAP32[i5 >> 2] | 0; - if ((i4 | 0) == 31) { - i4 = 0; - } else { - i4 = 25 - (i4 >>> 1) | 0; - } - L204 : do { - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) != (i11 | 0)) { - i4 = i11 << i4; - i7 = i5; - while (1) { - i6 = i7 + (i4 >>> 31 << 2) + 16 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - break; - } - if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i11 | 0)) { - i3 = i5; - break L204; - } else { - i4 = i4 << 1; - i7 = i5; - } - } - if (i6 >>> 0 < (HEAP32[14488 >> 2] | 0) >>> 0) { - _abort(); - } else { - HEAP32[i6 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i7; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - break L199; - } - } else { - i3 = i5; - } - } while (0); - i5 = i3 + 8 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i6 = HEAP32[14488 >> 2] | 0; - if (i3 >>> 0 < i6 >>> 0) { - _abort(); - } - if (i4 >>> 0 < i6 >>> 0) { - _abort(); - } else { - HEAP32[i4 + 12 >> 2] = i2; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i4; - HEAP32[i2 + 12 >> 2] = i3; - HEAP32[i2 + 24 >> 2] = 0; - break; - } - } else { - HEAP32[14476 >> 2] = i7 | i6; - HEAP32[i5 >> 2] = i2; - HEAP32[i2 + 24 >> 2] = i5; - HEAP32[i2 + 12 >> 2] = i2; - HEAP32[i2 + 8 >> 2] = i2; - } - } while (0); - i21 = (HEAP32[14504 >> 2] | 0) + -1 | 0; - HEAP32[14504 >> 2] = i21; - if ((i21 | 0) == 0) { - i2 = 14928 | 0; - } else { - STACKTOP = i1; - return; - } - while (1) { - i2 = HEAP32[i2 >> 2] | 0; - if ((i2 | 0) == 0) { - break; - } else { - i2 = i2 + 8 | 0; - } - } - HEAP32[14504 >> 2] = -1; - STACKTOP = i1; - return; -} -function _build_tree(i4, i9) { - i4 = i4 | 0; - i9 = i9 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i1 = i2; - i3 = HEAP32[i9 >> 2] | 0; - i7 = i9 + 8 | 0; - i11 = HEAP32[i7 >> 2] | 0; - i12 = HEAP32[i11 >> 2] | 0; - i11 = HEAP32[i11 + 12 >> 2] | 0; - i8 = i4 + 5200 | 0; - HEAP32[i8 >> 2] = 0; - i6 = i4 + 5204 | 0; - HEAP32[i6 >> 2] = 573; - if ((i11 | 0) > 0) { - i5 = -1; - i13 = 0; - do { - if ((HEAP16[i3 + (i13 << 2) >> 1] | 0) == 0) { - HEAP16[i3 + (i13 << 2) + 2 >> 1] = 0; - } else { - i5 = (HEAP32[i8 >> 2] | 0) + 1 | 0; - HEAP32[i8 >> 2] = i5; - HEAP32[i4 + (i5 << 2) + 2908 >> 2] = i13; - HEAP8[i4 + i13 + 5208 | 0] = 0; - i5 = i13; - } - i13 = i13 + 1 | 0; - } while ((i13 | 0) != (i11 | 0)); - i14 = HEAP32[i8 >> 2] | 0; - if ((i14 | 0) < 2) { - i10 = 3; - } - } else { - i14 = 0; - i5 = -1; - i10 = 3; - } - if ((i10 | 0) == 3) { - i10 = i4 + 5800 | 0; - i13 = i4 + 5804 | 0; - if ((i12 | 0) == 0) { - do { - i12 = (i5 | 0) < 2; - i13 = i5 + 1 | 0; - i5 = i12 ? i13 : i5; - i23 = i12 ? i13 : 0; - i14 = i14 + 1 | 0; - HEAP32[i8 >> 2] = i14; - HEAP32[i4 + (i14 << 2) + 2908 >> 2] = i23; - HEAP16[i3 + (i23 << 2) >> 1] = 1; - HEAP8[i4 + i23 + 5208 | 0] = 0; - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -1; - i14 = HEAP32[i8 >> 2] | 0; - } while ((i14 | 0) < 2); - } else { - do { - i15 = (i5 | 0) < 2; - i16 = i5 + 1 | 0; - i5 = i15 ? i16 : i5; - i23 = i15 ? i16 : 0; - i14 = i14 + 1 | 0; - HEAP32[i8 >> 2] = i14; - HEAP32[i4 + (i14 << 2) + 2908 >> 2] = i23; - HEAP16[i3 + (i23 << 2) >> 1] = 1; - HEAP8[i4 + i23 + 5208 | 0] = 0; - HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -1; - HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) - (HEAPU16[i12 + (i23 << 2) + 2 >> 1] | 0); - i14 = HEAP32[i8 >> 2] | 0; - } while ((i14 | 0) < 2); - } - } - i10 = i9 + 4 | 0; - HEAP32[i10 >> 2] = i5; - i12 = HEAP32[i8 >> 2] | 0; - if ((i12 | 0) > 1) { - i18 = i12; - i13 = (i12 | 0) / 2 | 0; - do { - i12 = HEAP32[i4 + (i13 << 2) + 2908 >> 2] | 0; - i14 = i4 + i12 + 5208 | 0; - i17 = i13 << 1; - L21 : do { - if ((i17 | 0) > (i18 | 0)) { - i15 = i13; - } else { - i16 = i3 + (i12 << 2) | 0; - i15 = i13; - while (1) { - do { - if ((i17 | 0) < (i18 | 0)) { - i18 = i17 | 1; - i19 = HEAP32[i4 + (i18 << 2) + 2908 >> 2] | 0; - i22 = HEAP16[i3 + (i19 << 2) >> 1] | 0; - i20 = HEAP32[i4 + (i17 << 2) + 2908 >> 2] | 0; - i21 = HEAP16[i3 + (i20 << 2) >> 1] | 0; - if (!((i22 & 65535) < (i21 & 65535))) { - if (!(i22 << 16 >> 16 == i21 << 16 >> 16)) { - break; - } - if ((HEAPU8[i4 + i19 + 5208 | 0] | 0) > (HEAPU8[i4 + i20 + 5208 | 0] | 0)) { - break; - } - } - i17 = i18; - } - } while (0); - i19 = HEAP16[i16 >> 1] | 0; - i18 = HEAP32[i4 + (i17 << 2) + 2908 >> 2] | 0; - i20 = HEAP16[i3 + (i18 << 2) >> 1] | 0; - if ((i19 & 65535) < (i20 & 65535)) { - break L21; - } - if (i19 << 16 >> 16 == i20 << 16 >> 16 ? (HEAPU8[i14] | 0) <= (HEAPU8[i4 + i18 + 5208 | 0] | 0) : 0) { - break L21; - } - HEAP32[i4 + (i15 << 2) + 2908 >> 2] = i18; - i19 = i17 << 1; - i18 = HEAP32[i8 >> 2] | 0; - if ((i19 | 0) > (i18 | 0)) { - i15 = i17; - break; - } else { - i15 = i17; - i17 = i19; - } - } - } - } while (0); - HEAP32[i4 + (i15 << 2) + 2908 >> 2] = i12; - i13 = i13 + -1 | 0; - i18 = HEAP32[i8 >> 2] | 0; - } while ((i13 | 0) > 0); - } else { - i18 = i12; - } - i12 = i4 + 2912 | 0; - while (1) { - i13 = HEAP32[i12 >> 2] | 0; - i20 = i18 + -1 | 0; - HEAP32[i8 >> 2] = i20; - i14 = HEAP32[i4 + (i18 << 2) + 2908 >> 2] | 0; - HEAP32[i12 >> 2] = i14; - i15 = i4 + i14 + 5208 | 0; - L40 : do { - if ((i18 | 0) < 3) { - i17 = 1; - } else { - i16 = i3 + (i14 << 2) | 0; - i17 = 1; - i18 = 2; - while (1) { - do { - if ((i18 | 0) < (i20 | 0)) { - i22 = i18 | 1; - i21 = HEAP32[i4 + (i22 << 2) + 2908 >> 2] | 0; - i23 = HEAP16[i3 + (i21 << 2) >> 1] | 0; - i20 = HEAP32[i4 + (i18 << 2) + 2908 >> 2] | 0; - i19 = HEAP16[i3 + (i20 << 2) >> 1] | 0; - if (!((i23 & 65535) < (i19 & 65535))) { - if (!(i23 << 16 >> 16 == i19 << 16 >> 16)) { - break; - } - if ((HEAPU8[i4 + i21 + 5208 | 0] | 0) > (HEAPU8[i4 + i20 + 5208 | 0] | 0)) { - break; - } - } - i18 = i22; - } - } while (0); - i21 = HEAP16[i16 >> 1] | 0; - i20 = HEAP32[i4 + (i18 << 2) + 2908 >> 2] | 0; - i19 = HEAP16[i3 + (i20 << 2) >> 1] | 0; - if ((i21 & 65535) < (i19 & 65535)) { - break L40; - } - if (i21 << 16 >> 16 == i19 << 16 >> 16 ? (HEAPU8[i15] | 0) <= (HEAPU8[i4 + i20 + 5208 | 0] | 0) : 0) { - break L40; - } - HEAP32[i4 + (i17 << 2) + 2908 >> 2] = i20; - i19 = i18 << 1; - i20 = HEAP32[i8 >> 2] | 0; - if ((i19 | 0) > (i20 | 0)) { - i17 = i18; - break; - } else { - i17 = i18; - i18 = i19; - } - } - } - } while (0); - HEAP32[i4 + (i17 << 2) + 2908 >> 2] = i14; - i17 = HEAP32[i12 >> 2] | 0; - i14 = (HEAP32[i6 >> 2] | 0) + -1 | 0; - HEAP32[i6 >> 2] = i14; - HEAP32[i4 + (i14 << 2) + 2908 >> 2] = i13; - i14 = (HEAP32[i6 >> 2] | 0) + -1 | 0; - HEAP32[i6 >> 2] = i14; - HEAP32[i4 + (i14 << 2) + 2908 >> 2] = i17; - i14 = i3 + (i11 << 2) | 0; - HEAP16[i14 >> 1] = (HEAPU16[i3 + (i17 << 2) >> 1] | 0) + (HEAPU16[i3 + (i13 << 2) >> 1] | 0); - i18 = HEAP8[i4 + i13 + 5208 | 0] | 0; - i16 = HEAP8[i4 + i17 + 5208 | 0] | 0; - i15 = i4 + i11 + 5208 | 0; - HEAP8[i15] = (((i18 & 255) < (i16 & 255) ? i16 : i18) & 255) + 1; - i19 = i11 & 65535; - HEAP16[i3 + (i17 << 2) + 2 >> 1] = i19; - HEAP16[i3 + (i13 << 2) + 2 >> 1] = i19; - i13 = i11 + 1 | 0; - HEAP32[i12 >> 2] = i11; - i19 = HEAP32[i8 >> 2] | 0; - L56 : do { - if ((i19 | 0) < 2) { - i16 = 1; - } else { - i16 = 1; - i17 = 2; - while (1) { - do { - if ((i17 | 0) < (i19 | 0)) { - i21 = i17 | 1; - i22 = HEAP32[i4 + (i21 << 2) + 2908 >> 2] | 0; - i19 = HEAP16[i3 + (i22 << 2) >> 1] | 0; - i18 = HEAP32[i4 + (i17 << 2) + 2908 >> 2] | 0; - i20 = HEAP16[i3 + (i18 << 2) >> 1] | 0; - if (!((i19 & 65535) < (i20 & 65535))) { - if (!(i19 << 16 >> 16 == i20 << 16 >> 16)) { - break; - } - if ((HEAPU8[i4 + i22 + 5208 | 0] | 0) > (HEAPU8[i4 + i18 + 5208 | 0] | 0)) { - break; - } - } - i17 = i21; - } - } while (0); - i19 = HEAP16[i14 >> 1] | 0; - i20 = HEAP32[i4 + (i17 << 2) + 2908 >> 2] | 0; - i18 = HEAP16[i3 + (i20 << 2) >> 1] | 0; - if ((i19 & 65535) < (i18 & 65535)) { - break L56; - } - if (i19 << 16 >> 16 == i18 << 16 >> 16 ? (HEAPU8[i15] | 0) <= (HEAPU8[i4 + i20 + 5208 | 0] | 0) : 0) { - break L56; - } - HEAP32[i4 + (i16 << 2) + 2908 >> 2] = i20; - i18 = i17 << 1; - i19 = HEAP32[i8 >> 2] | 0; - if ((i18 | 0) > (i19 | 0)) { - i16 = i17; - break; - } else { - i16 = i17; - i17 = i18; - } - } - } - } while (0); - HEAP32[i4 + (i16 << 2) + 2908 >> 2] = i11; - i18 = HEAP32[i8 >> 2] | 0; - if ((i18 | 0) > 1) { - i11 = i13; - } else { - break; - } - } - i12 = HEAP32[i12 >> 2] | 0; - i8 = (HEAP32[i6 >> 2] | 0) + -1 | 0; - HEAP32[i6 >> 2] = i8; - HEAP32[i4 + (i8 << 2) + 2908 >> 2] = i12; - i8 = HEAP32[i9 >> 2] | 0; - i9 = HEAP32[i10 >> 2] | 0; - i7 = HEAP32[i7 >> 2] | 0; - i12 = HEAP32[i7 >> 2] | 0; - i11 = HEAP32[i7 + 4 >> 2] | 0; - i10 = HEAP32[i7 + 8 >> 2] | 0; - i7 = HEAP32[i7 + 16 >> 2] | 0; - i13 = i4 + 2876 | 0; - i14 = i13 + 32 | 0; - do { - HEAP16[i13 >> 1] = 0; - i13 = i13 + 2 | 0; - } while ((i13 | 0) < (i14 | 0)); - i14 = HEAP32[i6 >> 2] | 0; - HEAP16[i8 + (HEAP32[i4 + (i14 << 2) + 2908 >> 2] << 2) + 2 >> 1] = 0; - i14 = i14 + 1 | 0; - L72 : do { - if ((i14 | 0) < 573) { - i6 = i4 + 5800 | 0; - i13 = i4 + 5804 | 0; - if ((i12 | 0) == 0) { - i18 = 0; - do { - i12 = HEAP32[i4 + (i14 << 2) + 2908 >> 2] | 0; - i13 = i8 + (i12 << 2) + 2 | 0; - i15 = HEAPU16[i8 + (HEAPU16[i13 >> 1] << 2) + 2 >> 1] | 0; - i16 = (i15 | 0) < (i7 | 0); - i15 = i16 ? i15 + 1 | 0 : i7; - i18 = (i16 & 1 ^ 1) + i18 | 0; - HEAP16[i13 >> 1] = i15; - if ((i12 | 0) <= (i9 | 0)) { - i23 = i4 + (i15 << 1) + 2876 | 0; - HEAP16[i23 >> 1] = (HEAP16[i23 >> 1] | 0) + 1 << 16 >> 16; - if ((i12 | 0) < (i10 | 0)) { - i13 = 0; - } else { - i13 = HEAP32[i11 + (i12 - i10 << 2) >> 2] | 0; - } - i23 = Math_imul(HEAPU16[i8 + (i12 << 2) >> 1] | 0, i13 + i15 | 0) | 0; - HEAP32[i6 >> 2] = i23 + (HEAP32[i6 >> 2] | 0); - } - i14 = i14 + 1 | 0; - } while ((i14 | 0) != 573); - } else { - i18 = 0; - do { - i15 = HEAP32[i4 + (i14 << 2) + 2908 >> 2] | 0; - i16 = i8 + (i15 << 2) + 2 | 0; - i17 = HEAPU16[i8 + (HEAPU16[i16 >> 1] << 2) + 2 >> 1] | 0; - i19 = (i17 | 0) < (i7 | 0); - i17 = i19 ? i17 + 1 | 0 : i7; - i18 = (i19 & 1 ^ 1) + i18 | 0; - HEAP16[i16 >> 1] = i17; - if ((i15 | 0) <= (i9 | 0)) { - i23 = i4 + (i17 << 1) + 2876 | 0; - HEAP16[i23 >> 1] = (HEAP16[i23 >> 1] | 0) + 1 << 16 >> 16; - if ((i15 | 0) < (i10 | 0)) { - i16 = 0; - } else { - i16 = HEAP32[i11 + (i15 - i10 << 2) >> 2] | 0; - } - i23 = HEAPU16[i8 + (i15 << 2) >> 1] | 0; - i22 = Math_imul(i23, i16 + i17 | 0) | 0; - HEAP32[i6 >> 2] = i22 + (HEAP32[i6 >> 2] | 0); - i23 = Math_imul((HEAPU16[i12 + (i15 << 2) + 2 >> 1] | 0) + i16 | 0, i23) | 0; - HEAP32[i13 >> 2] = i23 + (HEAP32[i13 >> 2] | 0); - } - i14 = i14 + 1 | 0; - } while ((i14 | 0) != 573); - } - if ((i18 | 0) != 0) { - i10 = i4 + (i7 << 1) + 2876 | 0; - do { - i12 = i7; - while (1) { - i11 = i12 + -1 | 0; - i13 = i4 + (i11 << 1) + 2876 | 0; - i14 = HEAP16[i13 >> 1] | 0; - if (i14 << 16 >> 16 == 0) { - i12 = i11; - } else { - break; - } - } - HEAP16[i13 >> 1] = i14 + -1 << 16 >> 16; - i11 = i4 + (i12 << 1) + 2876 | 0; - HEAP16[i11 >> 1] = (HEAPU16[i11 >> 1] | 0) + 2; - i11 = (HEAP16[i10 >> 1] | 0) + -1 << 16 >> 16; - HEAP16[i10 >> 1] = i11; - i18 = i18 + -2 | 0; - } while ((i18 | 0) > 0); - if ((i7 | 0) != 0) { - i12 = 573; - while (1) { - i10 = i7 & 65535; - if (!(i11 << 16 >> 16 == 0)) { - i11 = i11 & 65535; - do { - do { - i12 = i12 + -1 | 0; - i15 = HEAP32[i4 + (i12 << 2) + 2908 >> 2] | 0; - } while ((i15 | 0) > (i9 | 0)); - i13 = i8 + (i15 << 2) + 2 | 0; - i14 = HEAPU16[i13 >> 1] | 0; - if ((i14 | 0) != (i7 | 0)) { - i23 = Math_imul(HEAPU16[i8 + (i15 << 2) >> 1] | 0, i7 - i14 | 0) | 0; - HEAP32[i6 >> 2] = i23 + (HEAP32[i6 >> 2] | 0); - HEAP16[i13 >> 1] = i10; - } - i11 = i11 + -1 | 0; - } while ((i11 | 0) != 0); - } - i7 = i7 + -1 | 0; - if ((i7 | 0) == 0) { - break L72; - } - i11 = HEAP16[i4 + (i7 << 1) + 2876 >> 1] | 0; - } - } - } - } - } while (0); - i7 = 1; - i6 = 0; - do { - i6 = (HEAPU16[i4 + (i7 + -1 << 1) + 2876 >> 1] | 0) + (i6 & 65534) << 1; - HEAP16[i1 + (i7 << 1) >> 1] = i6; - i7 = i7 + 1 | 0; - } while ((i7 | 0) != 16); - if ((i5 | 0) < 0) { - STACKTOP = i2; - return; - } else { - i4 = 0; - } - while (1) { - i23 = HEAP16[i3 + (i4 << 2) + 2 >> 1] | 0; - i7 = i23 & 65535; - if (!(i23 << 16 >> 16 == 0)) { - i8 = i1 + (i7 << 1) | 0; - i6 = HEAP16[i8 >> 1] | 0; - HEAP16[i8 >> 1] = i6 + 1 << 16 >> 16; - i6 = i6 & 65535; - i8 = 0; - while (1) { - i8 = i8 | i6 & 1; - i7 = i7 + -1 | 0; - if ((i7 | 0) <= 0) { - break; - } else { - i6 = i6 >>> 1; - i8 = i8 << 1; - } - } - HEAP16[i3 + (i4 << 2) >> 1] = i8; - } - if ((i4 | 0) == (i5 | 0)) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - STACKTOP = i2; - return; -} -function _deflate_slow(i2, i6) { - i2 = i2 | 0; - i6 = i6 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0; - i1 = STACKTOP; - i15 = i2 + 116 | 0; - i16 = (i6 | 0) == 0; - i17 = i2 + 72 | 0; - i18 = i2 + 88 | 0; - i5 = i2 + 108 | 0; - i7 = i2 + 56 | 0; - i19 = i2 + 84 | 0; - i20 = i2 + 68 | 0; - i22 = i2 + 52 | 0; - i21 = i2 + 64 | 0; - i9 = i2 + 96 | 0; - i10 = i2 + 120 | 0; - i11 = i2 + 112 | 0; - i12 = i2 + 100 | 0; - i26 = i2 + 5792 | 0; - i27 = i2 + 5796 | 0; - i29 = i2 + 5784 | 0; - i23 = i2 + 5788 | 0; - i8 = i2 + 104 | 0; - i4 = i2 + 92 | 0; - i24 = i2 + 128 | 0; - i14 = i2 + 44 | 0; - i13 = i2 + 136 | 0; - L1 : while (1) { - i30 = HEAP32[i15 >> 2] | 0; - while (1) { - if (i30 >>> 0 < 262) { - _fill_window(i2); - i30 = HEAP32[i15 >> 2] | 0; - if (i30 >>> 0 < 262 & i16) { - i2 = 0; - i30 = 50; - break L1; - } - if ((i30 | 0) == 0) { - i30 = 40; - break L1; - } - if (!(i30 >>> 0 > 2)) { - HEAP32[i10 >> 2] = HEAP32[i9 >> 2]; - HEAP32[i12 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i9 >> 2] = 2; - i32 = 2; - i30 = 16; - } else { - i30 = 8; - } - } else { - i30 = 8; - } - do { - if ((i30 | 0) == 8) { - i30 = 0; - i34 = HEAP32[i5 >> 2] | 0; - i31 = ((HEAPU8[(HEAP32[i7 >> 2] | 0) + (i34 + 2) | 0] | 0) ^ HEAP32[i17 >> 2] << HEAP32[i18 >> 2]) & HEAP32[i19 >> 2]; - HEAP32[i17 >> 2] = i31; - i31 = (HEAP32[i20 >> 2] | 0) + (i31 << 1) | 0; - i35 = HEAP16[i31 >> 1] | 0; - HEAP16[(HEAP32[i21 >> 2] | 0) + ((HEAP32[i22 >> 2] & i34) << 1) >> 1] = i35; - i32 = i35 & 65535; - HEAP16[i31 >> 1] = i34; - i31 = HEAP32[i9 >> 2] | 0; - HEAP32[i10 >> 2] = i31; - HEAP32[i12 >> 2] = HEAP32[i11 >> 2]; - HEAP32[i9 >> 2] = 2; - if (!(i35 << 16 >> 16 == 0)) { - if (i31 >>> 0 < (HEAP32[i24 >> 2] | 0) >>> 0) { - if (!(((HEAP32[i5 >> 2] | 0) - i32 | 0) >>> 0 > ((HEAP32[i14 >> 2] | 0) + -262 | 0) >>> 0)) { - i32 = _longest_match(i2, i32) | 0; - HEAP32[i9 >> 2] = i32; - if (i32 >>> 0 < 6) { - if ((HEAP32[i13 >> 2] | 0) != 1) { - if ((i32 | 0) != 3) { - i30 = 16; - break; - } - if (!(((HEAP32[i5 >> 2] | 0) - (HEAP32[i11 >> 2] | 0) | 0) >>> 0 > 4096)) { - i32 = 3; - i30 = 16; - break; - } - } - HEAP32[i9 >> 2] = 2; - i32 = 2; - i30 = 16; - } else { - i30 = 16; - } - } else { - i32 = 2; - i30 = 16; - } - } else { - i32 = 2; - } - } else { - i32 = 2; - i30 = 16; - } - } - } while (0); - if ((i30 | 0) == 16) { - i31 = HEAP32[i10 >> 2] | 0; - } - if (!(i31 >>> 0 < 3 | i32 >>> 0 > i31 >>> 0)) { - break; - } - if ((HEAP32[i8 >> 2] | 0) == 0) { - HEAP32[i8 >> 2] = 1; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 1; - i30 = (HEAP32[i15 >> 2] | 0) + -1 | 0; - HEAP32[i15 >> 2] = i30; - continue; - } - i35 = HEAP8[(HEAP32[i7 >> 2] | 0) + ((HEAP32[i5 >> 2] | 0) + -1) | 0] | 0; - i34 = HEAP32[i26 >> 2] | 0; - HEAP16[(HEAP32[i27 >> 2] | 0) + (i34 << 1) >> 1] = 0; - HEAP32[i26 >> 2] = i34 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i34 | 0] = i35; - i35 = i2 + ((i35 & 255) << 2) + 148 | 0; - HEAP16[i35 >> 1] = (HEAP16[i35 >> 1] | 0) + 1 << 16 >> 16; - if ((HEAP32[i26 >> 2] | 0) == ((HEAP32[i23 >> 2] | 0) + -1 | 0)) { - i30 = HEAP32[i4 >> 2] | 0; - if ((i30 | 0) > -1) { - i31 = (HEAP32[i7 >> 2] | 0) + i30 | 0; - } else { - i31 = 0; - } - __tr_flush_block(i2, i31, (HEAP32[i5 >> 2] | 0) - i30 | 0, 0); - HEAP32[i4 >> 2] = HEAP32[i5 >> 2]; - i33 = HEAP32[i2 >> 2] | 0; - i32 = i33 + 28 | 0; - i30 = HEAP32[i32 >> 2] | 0; - i35 = HEAP32[i30 + 20 >> 2] | 0; - i31 = i33 + 16 | 0; - i34 = HEAP32[i31 >> 2] | 0; - i34 = i35 >>> 0 > i34 >>> 0 ? i34 : i35; - if ((i34 | 0) != 0 ? (i28 = i33 + 12 | 0, _memcpy(HEAP32[i28 >> 2] | 0, HEAP32[i30 + 16 >> 2] | 0, i34 | 0) | 0, HEAP32[i28 >> 2] = (HEAP32[i28 >> 2] | 0) + i34, i28 = (HEAP32[i32 >> 2] | 0) + 16 | 0, HEAP32[i28 >> 2] = (HEAP32[i28 >> 2] | 0) + i34, i28 = i33 + 20 | 0, HEAP32[i28 >> 2] = (HEAP32[i28 >> 2] | 0) + i34, HEAP32[i31 >> 2] = (HEAP32[i31 >> 2] | 0) - i34, i28 = HEAP32[i32 >> 2] | 0, i33 = i28 + 20 | 0, i35 = HEAP32[i33 >> 2] | 0, HEAP32[i33 >> 2] = i35 - i34, (i35 | 0) == (i34 | 0)) : 0) { - HEAP32[i28 + 16 >> 2] = HEAP32[i28 + 8 >> 2]; - } - } - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 1; - i30 = (HEAP32[i15 >> 2] | 0) + -1 | 0; - HEAP32[i15 >> 2] = i30; - if ((HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i2 = 0; - i30 = 50; - break L1; - } - } - i34 = HEAP32[i5 >> 2] | 0; - i30 = i34 + -3 + (HEAP32[i15 >> 2] | 0) | 0; - i35 = i31 + 253 | 0; - i31 = i34 + 65535 - (HEAP32[i12 >> 2] | 0) | 0; - i34 = HEAP32[i26 >> 2] | 0; - HEAP16[(HEAP32[i27 >> 2] | 0) + (i34 << 1) >> 1] = i31; - HEAP32[i26 >> 2] = i34 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i34 | 0] = i35; - i35 = i2 + ((HEAPU8[808 + (i35 & 255) | 0] | 0 | 256) + 1 << 2) + 148 | 0; - HEAP16[i35 >> 1] = (HEAP16[i35 >> 1] | 0) + 1 << 16 >> 16; - i31 = i31 + 65535 & 65535; - if (!(i31 >>> 0 < 256)) { - i31 = (i31 >>> 7) + 256 | 0; - } - i32 = i2 + ((HEAPU8[296 + i31 | 0] | 0) << 2) + 2440 | 0; - HEAP16[i32 >> 1] = (HEAP16[i32 >> 1] | 0) + 1 << 16 >> 16; - i32 = HEAP32[i26 >> 2] | 0; - i31 = (HEAP32[i23 >> 2] | 0) + -1 | 0; - i34 = HEAP32[i10 >> 2] | 0; - HEAP32[i15 >> 2] = 1 - i34 + (HEAP32[i15 >> 2] | 0); - i34 = i34 + -2 | 0; - HEAP32[i10 >> 2] = i34; - i33 = HEAP32[i5 >> 2] | 0; - while (1) { - i35 = i33 + 1 | 0; - HEAP32[i5 >> 2] = i35; - if (!(i35 >>> 0 > i30 >>> 0)) { - i36 = ((HEAPU8[(HEAP32[i7 >> 2] | 0) + (i33 + 3) | 0] | 0) ^ HEAP32[i17 >> 2] << HEAP32[i18 >> 2]) & HEAP32[i19 >> 2]; - HEAP32[i17 >> 2] = i36; - i36 = (HEAP32[i20 >> 2] | 0) + (i36 << 1) | 0; - HEAP16[(HEAP32[i21 >> 2] | 0) + ((HEAP32[i22 >> 2] & i35) << 1) >> 1] = HEAP16[i36 >> 1] | 0; - HEAP16[i36 >> 1] = i35; - } - i34 = i34 + -1 | 0; - HEAP32[i10 >> 2] = i34; - if ((i34 | 0) == 0) { - break; - } else { - i33 = i35; - } - } - HEAP32[i8 >> 2] = 0; - HEAP32[i9 >> 2] = 2; - i30 = i33 + 2 | 0; - HEAP32[i5 >> 2] = i30; - if ((i32 | 0) != (i31 | 0)) { - continue; - } - i32 = HEAP32[i4 >> 2] | 0; - if ((i32 | 0) > -1) { - i31 = (HEAP32[i7 >> 2] | 0) + i32 | 0; - } else { - i31 = 0; - } - __tr_flush_block(i2, i31, i30 - i32 | 0, 0); - HEAP32[i4 >> 2] = HEAP32[i5 >> 2]; - i33 = HEAP32[i2 >> 2] | 0; - i31 = i33 + 28 | 0; - i32 = HEAP32[i31 >> 2] | 0; - i35 = HEAP32[i32 + 20 >> 2] | 0; - i30 = i33 + 16 | 0; - i34 = HEAP32[i30 >> 2] | 0; - i34 = i35 >>> 0 > i34 >>> 0 ? i34 : i35; - if ((i34 | 0) != 0 ? (i25 = i33 + 12 | 0, _memcpy(HEAP32[i25 >> 2] | 0, HEAP32[i32 + 16 >> 2] | 0, i34 | 0) | 0, HEAP32[i25 >> 2] = (HEAP32[i25 >> 2] | 0) + i34, i25 = (HEAP32[i31 >> 2] | 0) + 16 | 0, HEAP32[i25 >> 2] = (HEAP32[i25 >> 2] | 0) + i34, i25 = i33 + 20 | 0, HEAP32[i25 >> 2] = (HEAP32[i25 >> 2] | 0) + i34, HEAP32[i30 >> 2] = (HEAP32[i30 >> 2] | 0) - i34, i25 = HEAP32[i31 >> 2] | 0, i35 = i25 + 20 | 0, i36 = HEAP32[i35 >> 2] | 0, HEAP32[i35 >> 2] = i36 - i34, (i36 | 0) == (i34 | 0)) : 0) { - HEAP32[i25 + 16 >> 2] = HEAP32[i25 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i2 = 0; - i30 = 50; - break; - } - } - if ((i30 | 0) == 40) { - if ((HEAP32[i8 >> 2] | 0) != 0) { - i36 = HEAP8[(HEAP32[i7 >> 2] | 0) + ((HEAP32[i5 >> 2] | 0) + -1) | 0] | 0; - i35 = HEAP32[i26 >> 2] | 0; - HEAP16[(HEAP32[i27 >> 2] | 0) + (i35 << 1) >> 1] = 0; - HEAP32[i26 >> 2] = i35 + 1; - HEAP8[(HEAP32[i29 >> 2] | 0) + i35 | 0] = i36; - i36 = i2 + ((i36 & 255) << 2) + 148 | 0; - HEAP16[i36 >> 1] = (HEAP16[i36 >> 1] | 0) + 1 << 16 >> 16; - HEAP32[i8 >> 2] = 0; - } - i8 = HEAP32[i4 >> 2] | 0; - if ((i8 | 0) > -1) { - i7 = (HEAP32[i7 >> 2] | 0) + i8 | 0; - } else { - i7 = 0; - } - i6 = (i6 | 0) == 4; - __tr_flush_block(i2, i7, (HEAP32[i5 >> 2] | 0) - i8 | 0, i6 & 1); - HEAP32[i4 >> 2] = HEAP32[i5 >> 2]; - i4 = HEAP32[i2 >> 2] | 0; - i7 = i4 + 28 | 0; - i5 = HEAP32[i7 >> 2] | 0; - i10 = HEAP32[i5 + 20 >> 2] | 0; - i8 = i4 + 16 | 0; - i9 = HEAP32[i8 >> 2] | 0; - i9 = i10 >>> 0 > i9 >>> 0 ? i9 : i10; - if ((i9 | 0) != 0 ? (i3 = i4 + 12 | 0, _memcpy(HEAP32[i3 >> 2] | 0, HEAP32[i5 + 16 >> 2] | 0, i9 | 0) | 0, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + i9, i3 = (HEAP32[i7 >> 2] | 0) + 16 | 0, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + i9, i3 = i4 + 20 | 0, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + i9, HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) - i9, i3 = HEAP32[i7 >> 2] | 0, i35 = i3 + 20 | 0, i36 = HEAP32[i35 >> 2] | 0, HEAP32[i35 >> 2] = i36 - i9, (i36 | 0) == (i9 | 0)) : 0) { - HEAP32[i3 + 16 >> 2] = HEAP32[i3 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i36 = i6 ? 2 : 0; - STACKTOP = i1; - return i36 | 0; - } else { - i36 = i6 ? 3 : 1; - STACKTOP = i1; - return i36 | 0; - } - } else if ((i30 | 0) == 50) { - STACKTOP = i1; - return i2 | 0; - } - return 0; -} -function _inflate_fast(i7, i19) { - i7 = i7 | 0; - i19 = i19 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0; - i1 = STACKTOP; - i11 = HEAP32[i7 + 28 >> 2] | 0; - i29 = HEAP32[i7 >> 2] | 0; - i5 = i7 + 4 | 0; - i8 = i29 + ((HEAP32[i5 >> 2] | 0) + -6) | 0; - i9 = i7 + 12 | 0; - i28 = HEAP32[i9 >> 2] | 0; - i4 = i7 + 16 | 0; - i25 = HEAP32[i4 >> 2] | 0; - i6 = i28 + (i25 + -258) | 0; - i17 = HEAP32[i11 + 44 >> 2] | 0; - i12 = HEAP32[i11 + 48 >> 2] | 0; - i18 = HEAP32[i11 + 52 >> 2] | 0; - i3 = i11 + 56 | 0; - i2 = i11 + 60 | 0; - i16 = HEAP32[i11 + 76 >> 2] | 0; - i13 = HEAP32[i11 + 80 >> 2] | 0; - i14 = (1 << HEAP32[i11 + 84 >> 2]) + -1 | 0; - i15 = (1 << HEAP32[i11 + 88 >> 2]) + -1 | 0; - i19 = i28 + (i25 + ~i19) | 0; - i25 = i11 + 7104 | 0; - i20 = i18 + -1 | 0; - i27 = (i12 | 0) == 0; - i24 = (HEAP32[i11 + 40 >> 2] | 0) + -1 | 0; - i21 = i24 + i12 | 0; - i22 = i12 + -1 | 0; - i23 = i19 + -1 | 0; - i26 = i19 - i12 | 0; - i31 = HEAP32[i2 >> 2] | 0; - i30 = HEAP32[i3 >> 2] | 0; - i29 = i29 + -1 | 0; - i28 = i28 + -1 | 0; - L1 : do { - if (i31 >>> 0 < 15) { - i37 = i29 + 2 | 0; - i33 = i31 + 16 | 0; - i30 = ((HEAPU8[i29 + 1 | 0] | 0) << i31) + i30 + ((HEAPU8[i37] | 0) << i31 + 8) | 0; - i29 = i37; - } else { - i33 = i31; - } - i31 = i30 & i14; - i34 = HEAP8[i16 + (i31 << 2) | 0] | 0; - i32 = HEAP16[i16 + (i31 << 2) + 2 >> 1] | 0; - i31 = HEAPU8[i16 + (i31 << 2) + 1 | 0] | 0; - i30 = i30 >>> i31; - i31 = i33 - i31 | 0; - do { - if (!(i34 << 24 >> 24 == 0)) { - i33 = i34 & 255; - while (1) { - if ((i33 & 16 | 0) != 0) { - break; - } - if ((i33 & 64 | 0) != 0) { - i10 = 55; - break L1; - } - i37 = (i30 & (1 << i33) + -1) + (i32 & 65535) | 0; - i33 = HEAP8[i16 + (i37 << 2) | 0] | 0; - i32 = HEAP16[i16 + (i37 << 2) + 2 >> 1] | 0; - i37 = HEAPU8[i16 + (i37 << 2) + 1 | 0] | 0; - i30 = i30 >>> i37; - i31 = i31 - i37 | 0; - if (i33 << 24 >> 24 == 0) { - i10 = 6; - break; - } else { - i33 = i33 & 255; - } - } - if ((i10 | 0) == 6) { - i32 = i32 & 255; - i10 = 7; - break; - } - i32 = i32 & 65535; - i33 = i33 & 15; - if ((i33 | 0) != 0) { - if (i31 >>> 0 < i33 >>> 0) { - i29 = i29 + 1 | 0; - i35 = i31 + 8 | 0; - i34 = ((HEAPU8[i29] | 0) << i31) + i30 | 0; - } else { - i35 = i31; - i34 = i30; - } - i31 = i35 - i33 | 0; - i30 = i34 >>> i33; - i32 = (i34 & (1 << i33) + -1) + i32 | 0; - } - if (i31 >>> 0 < 15) { - i37 = i29 + 2 | 0; - i34 = i31 + 16 | 0; - i30 = ((HEAPU8[i29 + 1 | 0] | 0) << i31) + i30 + ((HEAPU8[i37] | 0) << i31 + 8) | 0; - i29 = i37; - } else { - i34 = i31; - } - i37 = i30 & i15; - i33 = HEAP16[i13 + (i37 << 2) + 2 >> 1] | 0; - i31 = HEAPU8[i13 + (i37 << 2) + 1 | 0] | 0; - i30 = i30 >>> i31; - i31 = i34 - i31 | 0; - i34 = HEAPU8[i13 + (i37 << 2) | 0] | 0; - if ((i34 & 16 | 0) == 0) { - do { - if ((i34 & 64 | 0) != 0) { - i10 = 52; - break L1; - } - i34 = (i30 & (1 << i34) + -1) + (i33 & 65535) | 0; - i33 = HEAP16[i13 + (i34 << 2) + 2 >> 1] | 0; - i37 = HEAPU8[i13 + (i34 << 2) + 1 | 0] | 0; - i30 = i30 >>> i37; - i31 = i31 - i37 | 0; - i34 = HEAPU8[i13 + (i34 << 2) | 0] | 0; - } while ((i34 & 16 | 0) == 0); - } - i33 = i33 & 65535; - i34 = i34 & 15; - if (i31 >>> 0 < i34 >>> 0) { - i35 = i29 + 1 | 0; - i30 = ((HEAPU8[i35] | 0) << i31) + i30 | 0; - i36 = i31 + 8 | 0; - if (i36 >>> 0 < i34 >>> 0) { - i29 = i29 + 2 | 0; - i31 = i31 + 16 | 0; - i30 = ((HEAPU8[i29] | 0) << i36) + i30 | 0; - } else { - i31 = i36; - i29 = i35; - } - } - i33 = (i30 & (1 << i34) + -1) + i33 | 0; - i30 = i30 >>> i34; - i31 = i31 - i34 | 0; - i35 = i28; - i34 = i35 - i19 | 0; - if (!(i33 >>> 0 > i34 >>> 0)) { - i34 = i28 + (0 - i33) | 0; - while (1) { - HEAP8[i28 + 1 | 0] = HEAP8[i34 + 1 | 0] | 0; - HEAP8[i28 + 2 | 0] = HEAP8[i34 + 2 | 0] | 0; - i35 = i34 + 3 | 0; - i33 = i28 + 3 | 0; - HEAP8[i33] = HEAP8[i35] | 0; - i32 = i32 + -3 | 0; - if (!(i32 >>> 0 > 2)) { - break; - } else { - i34 = i35; - i28 = i33; - } - } - if ((i32 | 0) == 0) { - i28 = i33; - break; - } - i33 = i28 + 4 | 0; - HEAP8[i33] = HEAP8[i34 + 4 | 0] | 0; - if (!(i32 >>> 0 > 1)) { - i28 = i33; - break; - } - i28 = i28 + 5 | 0; - HEAP8[i28] = HEAP8[i34 + 5 | 0] | 0; - break; - } - i34 = i33 - i34 | 0; - if (i34 >>> 0 > i17 >>> 0 ? (HEAP32[i25 >> 2] | 0) != 0 : 0) { - i10 = 22; - break L1; - } - do { - if (i27) { - i36 = i18 + (i24 - i34) | 0; - if (i34 >>> 0 < i32 >>> 0) { - i32 = i32 - i34 | 0; - i35 = i33 - i35 | 0; - i37 = i28; - do { - i36 = i36 + 1 | 0; - i37 = i37 + 1 | 0; - HEAP8[i37] = HEAP8[i36] | 0; - i34 = i34 + -1 | 0; - } while ((i34 | 0) != 0); - i33 = i28 + (i23 + i35 + (1 - i33)) | 0; - i28 = i28 + (i19 + i35) | 0; - } else { - i33 = i36; - } - } else { - if (!(i12 >>> 0 < i34 >>> 0)) { - i36 = i18 + (i22 - i34) | 0; - if (!(i34 >>> 0 < i32 >>> 0)) { - i33 = i36; - break; - } - i32 = i32 - i34 | 0; - i35 = i33 - i35 | 0; - i37 = i28; - do { - i36 = i36 + 1 | 0; - i37 = i37 + 1 | 0; - HEAP8[i37] = HEAP8[i36] | 0; - i34 = i34 + -1 | 0; - } while ((i34 | 0) != 0); - i33 = i28 + (i23 + i35 + (1 - i33)) | 0; - i28 = i28 + (i19 + i35) | 0; - break; - } - i37 = i18 + (i21 - i34) | 0; - i36 = i34 - i12 | 0; - if (i36 >>> 0 < i32 >>> 0) { - i32 = i32 - i36 | 0; - i34 = i33 - i35 | 0; - i35 = i28; - do { - i37 = i37 + 1 | 0; - i35 = i35 + 1 | 0; - HEAP8[i35] = HEAP8[i37] | 0; - i36 = i36 + -1 | 0; - } while ((i36 | 0) != 0); - i35 = i28 + (i26 + i34) | 0; - if (i12 >>> 0 < i32 >>> 0) { - i32 = i32 - i12 | 0; - i37 = i20; - i36 = i12; - do { - i37 = i37 + 1 | 0; - i35 = i35 + 1 | 0; - HEAP8[i35] = HEAP8[i37] | 0; - i36 = i36 + -1 | 0; - } while ((i36 | 0) != 0); - i33 = i28 + (i23 + i34 + (1 - i33)) | 0; - i28 = i28 + (i19 + i34) | 0; - } else { - i33 = i20; - i28 = i35; - } - } else { - i33 = i37; - } - } - } while (0); - if (i32 >>> 0 > 2) { - do { - HEAP8[i28 + 1 | 0] = HEAP8[i33 + 1 | 0] | 0; - HEAP8[i28 + 2 | 0] = HEAP8[i33 + 2 | 0] | 0; - i33 = i33 + 3 | 0; - i28 = i28 + 3 | 0; - HEAP8[i28] = HEAP8[i33] | 0; - i32 = i32 + -3 | 0; - } while (i32 >>> 0 > 2); - } - if ((i32 | 0) != 0) { - i34 = i28 + 1 | 0; - HEAP8[i34] = HEAP8[i33 + 1 | 0] | 0; - if (i32 >>> 0 > 1) { - i28 = i28 + 2 | 0; - HEAP8[i28] = HEAP8[i33 + 2 | 0] | 0; - } else { - i28 = i34; - } - } - } else { - i32 = i32 & 255; - i10 = 7; - } - } while (0); - if ((i10 | 0) == 7) { - i10 = 0; - i28 = i28 + 1 | 0; - HEAP8[i28] = i32; - } - } while (i29 >>> 0 < i8 >>> 0 & i28 >>> 0 < i6 >>> 0); - do { - if ((i10 | 0) == 22) { - HEAP32[i7 + 24 >> 2] = 14384; - HEAP32[i11 >> 2] = 29; - } else if ((i10 | 0) == 52) { - HEAP32[i7 + 24 >> 2] = 14416; - HEAP32[i11 >> 2] = 29; - } else if ((i10 | 0) == 55) { - if ((i33 & 32 | 0) == 0) { - HEAP32[i7 + 24 >> 2] = 14440; - HEAP32[i11 >> 2] = 29; - break; - } else { - HEAP32[i11 >> 2] = 11; - break; - } - } - } while (0); - i37 = i31 >>> 3; - i11 = i29 + (0 - i37) | 0; - i10 = i31 - (i37 << 3) | 0; - i12 = (1 << i10) + -1 & i30; - HEAP32[i7 >> 2] = i29 + (1 - i37); - HEAP32[i9 >> 2] = i28 + 1; - if (i11 >>> 0 < i8 >>> 0) { - i7 = i8 - i11 | 0; - } else { - i7 = i8 - i11 | 0; - } - HEAP32[i5 >> 2] = i7 + 5; - if (i28 >>> 0 < i6 >>> 0) { - i37 = i6 - i28 | 0; - i37 = i37 + 257 | 0; - HEAP32[i4 >> 2] = i37; - HEAP32[i3 >> 2] = i12; - HEAP32[i2 >> 2] = i10; - STACKTOP = i1; - return; - } else { - i37 = i6 - i28 | 0; - i37 = i37 + 257 | 0; - HEAP32[i4 >> 2] = i37; - HEAP32[i3 >> 2] = i12; - HEAP32[i2 >> 2] = i10; - STACKTOP = i1; - return; - } -} -function _send_tree(i2, i13, i12) { - i2 = i2 | 0; - i13 = i13 | 0; - i12 = i12 | 0; - var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0; - i11 = STACKTOP; - i15 = HEAP16[i13 + 2 >> 1] | 0; - i16 = i15 << 16 >> 16 == 0; - i7 = i2 + 2754 | 0; - i4 = i2 + 5820 | 0; - i8 = i2 + 2752 | 0; - i3 = i2 + 5816 | 0; - i14 = i2 + 20 | 0; - i10 = i2 + 8 | 0; - i9 = i2 + 2758 | 0; - i1 = i2 + 2756 | 0; - i5 = i2 + 2750 | 0; - i6 = i2 + 2748 | 0; - i21 = i16 ? 138 : 7; - i23 = i16 ? 3 : 4; - i18 = 0; - i15 = i15 & 65535; - i24 = -1; - L1 : while (1) { - i20 = 0; - while (1) { - if ((i18 | 0) > (i12 | 0)) { - break L1; - } - i18 = i18 + 1 | 0; - i19 = HEAP16[i13 + (i18 << 2) + 2 >> 1] | 0; - i16 = i19 & 65535; - i22 = i20 + 1 | 0; - i17 = (i15 | 0) == (i16 | 0); - if (!((i22 | 0) < (i21 | 0) & i17)) { - break; - } else { - i20 = i22; - } - } - do { - if ((i22 | 0) >= (i23 | 0)) { - if ((i15 | 0) != 0) { - if ((i15 | 0) == (i24 | 0)) { - i23 = HEAP16[i3 >> 1] | 0; - i21 = HEAP32[i4 >> 2] | 0; - i20 = i22; - } else { - i22 = HEAPU16[i2 + (i15 << 2) + 2686 >> 1] | 0; - i21 = HEAP32[i4 >> 2] | 0; - i24 = HEAPU16[i2 + (i15 << 2) + 2684 >> 1] | 0; - i25 = HEAPU16[i3 >> 1] | 0 | i24 << i21; - i23 = i25 & 65535; - HEAP16[i3 >> 1] = i23; - if ((i21 | 0) > (16 - i22 | 0)) { - i23 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i23 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i23 | 0] = i25; - i23 = (HEAPU16[i3 >> 1] | 0) >>> 8 & 255; - i21 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i21 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i21 | 0] = i23; - i21 = HEAP32[i4 >> 2] | 0; - i23 = i24 >>> (16 - i21 | 0) & 65535; - HEAP16[i3 >> 1] = i23; - i21 = i22 + -16 + i21 | 0; - } else { - i21 = i21 + i22 | 0; - } - HEAP32[i4 >> 2] = i21; - } - i22 = HEAPU16[i5 >> 1] | 0; - i24 = HEAPU16[i6 >> 1] | 0; - i23 = i23 & 65535 | i24 << i21; - HEAP16[i3 >> 1] = i23; - if ((i21 | 0) > (16 - i22 | 0)) { - i21 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i21 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i21 | 0] = i23; - i23 = (HEAPU16[i3 >> 1] | 0) >>> 8 & 255; - i21 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i21 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i21 | 0] = i23; - i21 = HEAP32[i4 >> 2] | 0; - i23 = i24 >>> (16 - i21 | 0); - HEAP16[i3 >> 1] = i23; - i21 = i22 + -16 + i21 | 0; - } else { - i21 = i21 + i22 | 0; - } - HEAP32[i4 >> 2] = i21; - i20 = i20 + 65533 & 65535; - i22 = i23 & 65535 | i20 << i21; - HEAP16[i3 >> 1] = i22; - if ((i21 | 0) > 14) { - i26 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i26 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i26 | 0] = i22; - i26 = (HEAPU16[i3 >> 1] | 0) >>> 8 & 255; - i27 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i27 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i27 | 0] = i26; - i27 = HEAP32[i4 >> 2] | 0; - HEAP16[i3 >> 1] = i20 >>> (16 - i27 | 0); - HEAP32[i4 >> 2] = i27 + -14; - break; - } else { - HEAP32[i4 >> 2] = i21 + 2; - break; - } - } - if ((i22 | 0) < 11) { - i24 = HEAPU16[i7 >> 1] | 0; - i23 = HEAP32[i4 >> 2] | 0; - i21 = HEAPU16[i8 >> 1] | 0; - i22 = HEAPU16[i3 >> 1] | 0 | i21 << i23; - HEAP16[i3 >> 1] = i22; - if ((i23 | 0) > (16 - i24 | 0)) { - i27 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i27 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i27 | 0] = i22; - i22 = (HEAPU16[i3 >> 1] | 0) >>> 8 & 255; - i27 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i27 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i27 | 0] = i22; - i27 = HEAP32[i4 >> 2] | 0; - i22 = i21 >>> (16 - i27 | 0); - HEAP16[i3 >> 1] = i22; - i21 = i24 + -16 + i27 | 0; - } else { - i21 = i23 + i24 | 0; - } - HEAP32[i4 >> 2] = i21; - i20 = i20 + 65534 & 65535; - i22 = i22 & 65535 | i20 << i21; - HEAP16[i3 >> 1] = i22; - if ((i21 | 0) > 13) { - i26 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i26 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i26 | 0] = i22; - i26 = (HEAPU16[i3 >> 1] | 0) >>> 8 & 255; - i27 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i27 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i27 | 0] = i26; - i27 = HEAP32[i4 >> 2] | 0; - HEAP16[i3 >> 1] = i20 >>> (16 - i27 | 0); - HEAP32[i4 >> 2] = i27 + -13; - break; - } else { - HEAP32[i4 >> 2] = i21 + 3; - break; - } - } else { - i21 = HEAPU16[i9 >> 1] | 0; - i24 = HEAP32[i4 >> 2] | 0; - i23 = HEAPU16[i1 >> 1] | 0; - i22 = HEAPU16[i3 >> 1] | 0 | i23 << i24; - HEAP16[i3 >> 1] = i22; - if ((i24 | 0) > (16 - i21 | 0)) { - i27 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i27 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i27 | 0] = i22; - i22 = (HEAPU16[i3 >> 1] | 0) >>> 8 & 255; - i27 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i27 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i27 | 0] = i22; - i27 = HEAP32[i4 >> 2] | 0; - i22 = i23 >>> (16 - i27 | 0); - HEAP16[i3 >> 1] = i22; - i21 = i21 + -16 + i27 | 0; - } else { - i21 = i24 + i21 | 0; - } - HEAP32[i4 >> 2] = i21; - i20 = i20 + 65526 & 65535; - i22 = i22 & 65535 | i20 << i21; - HEAP16[i3 >> 1] = i22; - if ((i21 | 0) > 9) { - i26 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i26 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i26 | 0] = i22; - i26 = (HEAPU16[i3 >> 1] | 0) >>> 8 & 255; - i27 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i27 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i27 | 0] = i26; - i27 = HEAP32[i4 >> 2] | 0; - HEAP16[i3 >> 1] = i20 >>> (16 - i27 | 0); - HEAP32[i4 >> 2] = i27 + -9; - break; - } else { - HEAP32[i4 >> 2] = i21 + 7; - break; - } - } - } else { - i20 = i2 + (i15 << 2) + 2686 | 0; - i21 = i2 + (i15 << 2) + 2684 | 0; - i23 = HEAP32[i4 >> 2] | 0; - i26 = HEAP16[i3 >> 1] | 0; - do { - i24 = HEAPU16[i20 >> 1] | 0; - i25 = HEAPU16[i21 >> 1] | 0; - i27 = i26 & 65535 | i25 << i23; - i26 = i27 & 65535; - HEAP16[i3 >> 1] = i26; - if ((i23 | 0) > (16 - i24 | 0)) { - i26 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i26 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i26 | 0] = i27; - i26 = (HEAPU16[i3 >> 1] | 0) >>> 8 & 255; - i23 = HEAP32[i14 >> 2] | 0; - HEAP32[i14 >> 2] = i23 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i23 | 0] = i26; - i23 = HEAP32[i4 >> 2] | 0; - i26 = i25 >>> (16 - i23 | 0) & 65535; - HEAP16[i3 >> 1] = i26; - i23 = i24 + -16 + i23 | 0; - } else { - i23 = i23 + i24 | 0; - } - HEAP32[i4 >> 2] = i23; - i22 = i22 + -1 | 0; - } while ((i22 | 0) != 0); - } - } while (0); - if (i19 << 16 >> 16 == 0) { - i24 = i15; - i21 = 138; - i23 = 3; - i15 = i16; - continue; - } - i24 = i15; - i21 = i17 ? 6 : 7; - i23 = i17 ? 3 : 4; - i15 = i16; - } - STACKTOP = i11; - return; -} -function __tr_flush_block(i2, i4, i6, i3) { - i2 = i2 | 0; - i4 = i4 | 0; - i6 = i6 | 0; - i3 = i3 | 0; - var i1 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0; - i1 = STACKTOP; - if ((HEAP32[i2 + 132 >> 2] | 0) > 0) { - i5 = (HEAP32[i2 >> 2] | 0) + 44 | 0; - if ((HEAP32[i5 >> 2] | 0) == 2) { - i8 = -201342849; - i9 = 0; - while (1) { - if ((i8 & 1 | 0) != 0 ? (HEAP16[i2 + (i9 << 2) + 148 >> 1] | 0) != 0 : 0) { - i8 = 0; - break; - } - i9 = i9 + 1 | 0; - if ((i9 | 0) < 32) { - i8 = i8 >>> 1; - } else { - i7 = 6; - break; - } - } - L9 : do { - if ((i7 | 0) == 6) { - if (((HEAP16[i2 + 184 >> 1] | 0) == 0 ? (HEAP16[i2 + 188 >> 1] | 0) == 0 : 0) ? (HEAP16[i2 + 200 >> 1] | 0) == 0 : 0) { - i8 = 32; - while (1) { - i7 = i8 + 1 | 0; - if ((HEAP16[i2 + (i8 << 2) + 148 >> 1] | 0) != 0) { - i8 = 1; - break L9; - } - if ((i7 | 0) < 256) { - i8 = i7; - } else { - i8 = 0; - break; - } - } - } else { - i8 = 1; - } - } - } while (0); - HEAP32[i5 >> 2] = i8; - } - _build_tree(i2, i2 + 2840 | 0); - _build_tree(i2, i2 + 2852 | 0); - _scan_tree(i2, i2 + 148 | 0, HEAP32[i2 + 2844 >> 2] | 0); - _scan_tree(i2, i2 + 2440 | 0, HEAP32[i2 + 2856 >> 2] | 0); - _build_tree(i2, i2 + 2864 | 0); - i5 = 18; - while (1) { - i7 = i5 + -1 | 0; - if ((HEAP16[i2 + (HEAPU8[2888 + i5 | 0] << 2) + 2686 >> 1] | 0) != 0) { - break; - } - if ((i7 | 0) > 2) { - i5 = i7; - } else { - i5 = i7; - break; - } - } - i10 = i2 + 5800 | 0; - i7 = (i5 * 3 | 0) + 17 + (HEAP32[i10 >> 2] | 0) | 0; - HEAP32[i10 >> 2] = i7; - i7 = (i7 + 10 | 0) >>> 3; - i10 = ((HEAP32[i2 + 5804 >> 2] | 0) + 10 | 0) >>> 3; - i9 = i10 >>> 0 > i7 >>> 0 ? i7 : i10; - } else { - i10 = i6 + 5 | 0; - i5 = 0; - i9 = i10; - } - do { - if ((i6 + 4 | 0) >>> 0 > i9 >>> 0 | (i4 | 0) == 0) { - i4 = i2 + 5820 | 0; - i7 = HEAP32[i4 >> 2] | 0; - i8 = (i7 | 0) > 13; - if ((HEAP32[i2 + 136 >> 2] | 0) == 4 | (i10 | 0) == (i9 | 0)) { - i9 = i3 + 2 & 65535; - i6 = i2 + 5816 | 0; - i5 = HEAPU16[i6 >> 1] | i9 << i7; - HEAP16[i6 >> 1] = i5; - if (i8) { - i12 = i2 + 20 | 0; - i13 = HEAP32[i12 >> 2] | 0; - HEAP32[i12 >> 2] = i13 + 1; - i14 = i2 + 8 | 0; - HEAP8[(HEAP32[i14 >> 2] | 0) + i13 | 0] = i5; - i13 = (HEAPU16[i6 >> 1] | 0) >>> 8 & 255; - i5 = HEAP32[i12 >> 2] | 0; - HEAP32[i12 >> 2] = i5 + 1; - HEAP8[(HEAP32[i14 >> 2] | 0) + i5 | 0] = i13; - i5 = HEAP32[i4 >> 2] | 0; - HEAP16[i6 >> 1] = i9 >>> (16 - i5 | 0); - i5 = i5 + -13 | 0; - } else { - i5 = i7 + 3 | 0; - } - HEAP32[i4 >> 2] = i5; - _compress_block(i2, 1136, 2288); - break; - } - i10 = i3 + 4 & 65535; - i6 = i2 + 5816 | 0; - i9 = HEAPU16[i6 >> 1] | i10 << i7; - HEAP16[i6 >> 1] = i9; - if (i8) { - i13 = i2 + 20 | 0; - i12 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i12 + 1; - i14 = i2 + 8 | 0; - HEAP8[(HEAP32[i14 >> 2] | 0) + i12 | 0] = i9; - i9 = (HEAPU16[i6 >> 1] | 0) >>> 8 & 255; - i12 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i12 + 1; - HEAP8[(HEAP32[i14 >> 2] | 0) + i12 | 0] = i9; - i12 = HEAP32[i4 >> 2] | 0; - i9 = i10 >>> (16 - i12 | 0); - HEAP16[i6 >> 1] = i9; - i12 = i12 + -13 | 0; - } else { - i12 = i7 + 3 | 0; - } - HEAP32[i4 >> 2] = i12; - i7 = HEAP32[i2 + 2844 >> 2] | 0; - i8 = HEAP32[i2 + 2856 >> 2] | 0; - i10 = i7 + 65280 & 65535; - i11 = i9 & 65535 | i10 << i12; - HEAP16[i6 >> 1] = i11; - if ((i12 | 0) > 11) { - i13 = i2 + 20 | 0; - i9 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i9 + 1; - i14 = i2 + 8 | 0; - HEAP8[(HEAP32[i14 >> 2] | 0) + i9 | 0] = i11; - i11 = (HEAPU16[i6 >> 1] | 0) >>> 8 & 255; - i9 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i9 + 1; - HEAP8[(HEAP32[i14 >> 2] | 0) + i9 | 0] = i11; - i9 = HEAP32[i4 >> 2] | 0; - i11 = i10 >>> (16 - i9 | 0); - HEAP16[i6 >> 1] = i11; - i9 = i9 + -11 | 0; - } else { - i9 = i12 + 5 | 0; - } - HEAP32[i4 >> 2] = i9; - i10 = i8 & 65535; - i11 = i10 << i9 | i11 & 65535; - HEAP16[i6 >> 1] = i11; - if ((i9 | 0) > 11) { - i13 = i2 + 20 | 0; - i9 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i9 + 1; - i14 = i2 + 8 | 0; - HEAP8[(HEAP32[i14 >> 2] | 0) + i9 | 0] = i11; - i11 = (HEAPU16[i6 >> 1] | 0) >>> 8 & 255; - i9 = HEAP32[i13 >> 2] | 0; - HEAP32[i13 >> 2] = i9 + 1; - HEAP8[(HEAP32[i14 >> 2] | 0) + i9 | 0] = i11; - i9 = HEAP32[i4 >> 2] | 0; - i11 = i10 >>> (16 - i9 | 0); - HEAP16[i6 >> 1] = i11; - i9 = i9 + -11 | 0; - } else { - i9 = i9 + 5 | 0; - } - HEAP32[i4 >> 2] = i9; - i10 = i5 + 65533 & 65535; - i14 = i10 << i9 | i11 & 65535; - HEAP16[i6 >> 1] = i14; - if ((i9 | 0) > 12) { - i12 = i2 + 20 | 0; - i11 = HEAP32[i12 >> 2] | 0; - HEAP32[i12 >> 2] = i11 + 1; - i13 = i2 + 8 | 0; - HEAP8[(HEAP32[i13 >> 2] | 0) + i11 | 0] = i14; - i14 = (HEAPU16[i6 >> 1] | 0) >>> 8 & 255; - i11 = HEAP32[i12 >> 2] | 0; - HEAP32[i12 >> 2] = i11 + 1; - HEAP8[(HEAP32[i13 >> 2] | 0) + i11 | 0] = i14; - i11 = HEAP32[i4 >> 2] | 0; - i14 = i10 >>> (16 - i11 | 0); - HEAP16[i6 >> 1] = i14; - i11 = i11 + -12 | 0; - } else { - i11 = i9 + 4 | 0; - } - HEAP32[i4 >> 2] = i11; - if ((i5 | 0) > -1) { - i10 = i2 + 20 | 0; - i9 = i2 + 8 | 0; - i12 = 0; - while (1) { - i13 = HEAPU16[i2 + (HEAPU8[2888 + i12 | 0] << 2) + 2686 >> 1] | 0; - i14 = i13 << i11 | i14 & 65535; - HEAP16[i6 >> 1] = i14; - if ((i11 | 0) > 13) { - i11 = HEAP32[i10 >> 2] | 0; - HEAP32[i10 >> 2] = i11 + 1; - HEAP8[(HEAP32[i9 >> 2] | 0) + i11 | 0] = i14; - i14 = (HEAPU16[i6 >> 1] | 0) >>> 8 & 255; - i11 = HEAP32[i10 >> 2] | 0; - HEAP32[i10 >> 2] = i11 + 1; - HEAP8[(HEAP32[i9 >> 2] | 0) + i11 | 0] = i14; - i11 = HEAP32[i4 >> 2] | 0; - i14 = i13 >>> (16 - i11 | 0); - HEAP16[i6 >> 1] = i14; - i11 = i11 + -13 | 0; - } else { - i11 = i11 + 3 | 0; - } - HEAP32[i4 >> 2] = i11; - if ((i12 | 0) == (i5 | 0)) { - break; - } else { - i12 = i12 + 1 | 0; - } - } - } - i13 = i2 + 148 | 0; - _send_tree(i2, i13, i7); - i14 = i2 + 2440 | 0; - _send_tree(i2, i14, i8); - _compress_block(i2, i13, i14); - } else { - __tr_stored_block(i2, i4, i6, i3); - } - } while (0); - _init_block(i2); - if ((i3 | 0) == 0) { - STACKTOP = i1; - return; - } - i3 = i2 + 5820 | 0; - i4 = HEAP32[i3 >> 2] | 0; - if ((i4 | 0) <= 8) { - i5 = i2 + 5816 | 0; - if ((i4 | 0) > 0) { - i13 = HEAP16[i5 >> 1] & 255; - i12 = i2 + 20 | 0; - i14 = HEAP32[i12 >> 2] | 0; - HEAP32[i12 >> 2] = i14 + 1; - HEAP8[(HEAP32[i2 + 8 >> 2] | 0) + i14 | 0] = i13; - } - } else { - i5 = i2 + 5816 | 0; - i14 = HEAP16[i5 >> 1] & 255; - i11 = i2 + 20 | 0; - i12 = HEAP32[i11 >> 2] | 0; - HEAP32[i11 >> 2] = i12 + 1; - i13 = i2 + 8 | 0; - HEAP8[(HEAP32[i13 >> 2] | 0) + i12 | 0] = i14; - i12 = (HEAPU16[i5 >> 1] | 0) >>> 8 & 255; - i14 = HEAP32[i11 >> 2] | 0; - HEAP32[i11 >> 2] = i14 + 1; - HEAP8[(HEAP32[i13 >> 2] | 0) + i14 | 0] = i12; - } - HEAP16[i5 >> 1] = 0; - HEAP32[i3 >> 2] = 0; - STACKTOP = i1; - return; -} -function _deflate_fast(i3, i6) { - i3 = i3 | 0; - i6 = i6 | 0; - var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0; - i1 = STACKTOP; - i20 = i3 + 116 | 0; - i22 = (i6 | 0) == 0; - i23 = i3 + 72 | 0; - i24 = i3 + 88 | 0; - i5 = i3 + 108 | 0; - i7 = i3 + 56 | 0; - i9 = i3 + 84 | 0; - i10 = i3 + 68 | 0; - i11 = i3 + 52 | 0; - i12 = i3 + 64 | 0; - i19 = i3 + 44 | 0; - i21 = i3 + 96 | 0; - i16 = i3 + 112 | 0; - i13 = i3 + 5792 | 0; - i17 = i3 + 5796 | 0; - i18 = i3 + 5784 | 0; - i14 = i3 + 5788 | 0; - i15 = i3 + 128 | 0; - i4 = i3 + 92 | 0; - while (1) { - if ((HEAP32[i20 >> 2] | 0) >>> 0 < 262) { - _fill_window(i3); - i25 = HEAP32[i20 >> 2] | 0; - if (i25 >>> 0 < 262 & i22) { - i2 = 0; - i25 = 34; - break; - } - if ((i25 | 0) == 0) { - i25 = 26; - break; - } - if (!(i25 >>> 0 > 2)) { - i25 = 9; - } else { - i25 = 6; - } - } else { - i25 = 6; - } - if ((i25 | 0) == 6) { - i25 = 0; - i26 = HEAP32[i5 >> 2] | 0; - i34 = ((HEAPU8[(HEAP32[i7 >> 2] | 0) + (i26 + 2) | 0] | 0) ^ HEAP32[i23 >> 2] << HEAP32[i24 >> 2]) & HEAP32[i9 >> 2]; - HEAP32[i23 >> 2] = i34; - i34 = (HEAP32[i10 >> 2] | 0) + (i34 << 1) | 0; - i35 = HEAP16[i34 >> 1] | 0; - HEAP16[(HEAP32[i12 >> 2] | 0) + ((HEAP32[i11 >> 2] & i26) << 1) >> 1] = i35; - i27 = i35 & 65535; - HEAP16[i34 >> 1] = i26; - if (!(i35 << 16 >> 16 == 0) ? !((i26 - i27 | 0) >>> 0 > ((HEAP32[i19 >> 2] | 0) + -262 | 0) >>> 0) : 0) { - i26 = _longest_match(i3, i27) | 0; - HEAP32[i21 >> 2] = i26; - } else { - i25 = 9; - } - } - if ((i25 | 0) == 9) { - i26 = HEAP32[i21 >> 2] | 0; - } - do { - if (i26 >>> 0 > 2) { - i35 = i26 + 253 | 0; - i25 = (HEAP32[i5 >> 2] | 0) - (HEAP32[i16 >> 2] | 0) | 0; - i34 = HEAP32[i13 >> 2] | 0; - HEAP16[(HEAP32[i17 >> 2] | 0) + (i34 << 1) >> 1] = i25; - HEAP32[i13 >> 2] = i34 + 1; - HEAP8[(HEAP32[i18 >> 2] | 0) + i34 | 0] = i35; - i35 = i3 + ((HEAPU8[808 + (i35 & 255) | 0] | 0 | 256) + 1 << 2) + 148 | 0; - HEAP16[i35 >> 1] = (HEAP16[i35 >> 1] | 0) + 1 << 16 >> 16; - i25 = i25 + 65535 & 65535; - if (!(i25 >>> 0 < 256)) { - i25 = (i25 >>> 7) + 256 | 0; - } - i25 = i3 + ((HEAPU8[296 + i25 | 0] | 0) << 2) + 2440 | 0; - HEAP16[i25 >> 1] = (HEAP16[i25 >> 1] | 0) + 1 << 16 >> 16; - i25 = (HEAP32[i13 >> 2] | 0) == ((HEAP32[i14 >> 2] | 0) + -1 | 0) | 0; - i26 = HEAP32[i21 >> 2] | 0; - i35 = (HEAP32[i20 >> 2] | 0) - i26 | 0; - HEAP32[i20 >> 2] = i35; - if (!(i26 >>> 0 <= (HEAP32[i15 >> 2] | 0) >>> 0 & i35 >>> 0 > 2)) { - i26 = (HEAP32[i5 >> 2] | 0) + i26 | 0; - HEAP32[i5 >> 2] = i26; - HEAP32[i21 >> 2] = 0; - i34 = HEAP32[i7 >> 2] | 0; - i35 = HEAPU8[i34 + i26 | 0] | 0; - HEAP32[i23 >> 2] = i35; - HEAP32[i23 >> 2] = ((HEAPU8[i34 + (i26 + 1) | 0] | 0) ^ i35 << HEAP32[i24 >> 2]) & HEAP32[i9 >> 2]; - break; - } - i30 = i26 + -1 | 0; - HEAP32[i21 >> 2] = i30; - i34 = HEAP32[i24 >> 2] | 0; - i33 = HEAP32[i7 >> 2] | 0; - i35 = HEAP32[i9 >> 2] | 0; - i32 = HEAP32[i10 >> 2] | 0; - i27 = HEAP32[i11 >> 2] | 0; - i29 = HEAP32[i12 >> 2] | 0; - i26 = HEAP32[i5 >> 2] | 0; - i31 = HEAP32[i23 >> 2] | 0; - while (1) { - i28 = i26 + 1 | 0; - HEAP32[i5 >> 2] = i28; - i31 = ((HEAPU8[i33 + (i26 + 3) | 0] | 0) ^ i31 << i34) & i35; - HEAP32[i23 >> 2] = i31; - i36 = i32 + (i31 << 1) | 0; - HEAP16[i29 + ((i27 & i28) << 1) >> 1] = HEAP16[i36 >> 1] | 0; - HEAP16[i36 >> 1] = i28; - i30 = i30 + -1 | 0; - HEAP32[i21 >> 2] = i30; - if ((i30 | 0) == 0) { - break; - } else { - i26 = i28; - } - } - i26 = i26 + 2 | 0; - HEAP32[i5 >> 2] = i26; - } else { - i25 = HEAP8[(HEAP32[i7 >> 2] | 0) + (HEAP32[i5 >> 2] | 0) | 0] | 0; - i26 = HEAP32[i13 >> 2] | 0; - HEAP16[(HEAP32[i17 >> 2] | 0) + (i26 << 1) >> 1] = 0; - HEAP32[i13 >> 2] = i26 + 1; - HEAP8[(HEAP32[i18 >> 2] | 0) + i26 | 0] = i25; - i25 = i3 + ((i25 & 255) << 2) + 148 | 0; - HEAP16[i25 >> 1] = (HEAP16[i25 >> 1] | 0) + 1 << 16 >> 16; - i25 = (HEAP32[i13 >> 2] | 0) == ((HEAP32[i14 >> 2] | 0) + -1 | 0) | 0; - HEAP32[i20 >> 2] = (HEAP32[i20 >> 2] | 0) + -1; - i26 = (HEAP32[i5 >> 2] | 0) + 1 | 0; - HEAP32[i5 >> 2] = i26; - } - } while (0); - if ((i25 | 0) == 0) { - continue; - } - i25 = HEAP32[i4 >> 2] | 0; - if ((i25 | 0) > -1) { - i27 = (HEAP32[i7 >> 2] | 0) + i25 | 0; - } else { - i27 = 0; - } - __tr_flush_block(i3, i27, i26 - i25 | 0, 0); - HEAP32[i4 >> 2] = HEAP32[i5 >> 2]; - i27 = HEAP32[i3 >> 2] | 0; - i28 = i27 + 28 | 0; - i25 = HEAP32[i28 >> 2] | 0; - i30 = HEAP32[i25 + 20 >> 2] | 0; - i26 = i27 + 16 | 0; - i29 = HEAP32[i26 >> 2] | 0; - i29 = i30 >>> 0 > i29 >>> 0 ? i29 : i30; - if ((i29 | 0) != 0 ? (i8 = i27 + 12 | 0, _memcpy(HEAP32[i8 >> 2] | 0, HEAP32[i25 + 16 >> 2] | 0, i29 | 0) | 0, HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + i29, i8 = (HEAP32[i28 >> 2] | 0) + 16 | 0, HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + i29, i8 = i27 + 20 | 0, HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + i29, HEAP32[i26 >> 2] = (HEAP32[i26 >> 2] | 0) - i29, i8 = HEAP32[i28 >> 2] | 0, i35 = i8 + 20 | 0, i36 = HEAP32[i35 >> 2] | 0, HEAP32[i35 >> 2] = i36 - i29, (i36 | 0) == (i29 | 0)) : 0) { - HEAP32[i8 + 16 >> 2] = HEAP32[i8 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i2 = 0; - i25 = 34; - break; - } - } - if ((i25 | 0) == 26) { - i8 = HEAP32[i4 >> 2] | 0; - if ((i8 | 0) > -1) { - i7 = (HEAP32[i7 >> 2] | 0) + i8 | 0; - } else { - i7 = 0; - } - i6 = (i6 | 0) == 4; - __tr_flush_block(i3, i7, (HEAP32[i5 >> 2] | 0) - i8 | 0, i6 & 1); - HEAP32[i4 >> 2] = HEAP32[i5 >> 2]; - i5 = HEAP32[i3 >> 2] | 0; - i7 = i5 + 28 | 0; - i4 = HEAP32[i7 >> 2] | 0; - i10 = HEAP32[i4 + 20 >> 2] | 0; - i8 = i5 + 16 | 0; - i9 = HEAP32[i8 >> 2] | 0; - i9 = i10 >>> 0 > i9 >>> 0 ? i9 : i10; - if ((i9 | 0) != 0 ? (i2 = i5 + 12 | 0, _memcpy(HEAP32[i2 >> 2] | 0, HEAP32[i4 + 16 >> 2] | 0, i9 | 0) | 0, HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + i9, i2 = (HEAP32[i7 >> 2] | 0) + 16 | 0, HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + i9, i2 = i5 + 20 | 0, HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + i9, HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) - i9, i2 = HEAP32[i7 >> 2] | 0, i35 = i2 + 20 | 0, i36 = HEAP32[i35 >> 2] | 0, HEAP32[i35 >> 2] = i36 - i9, (i36 | 0) == (i9 | 0)) : 0) { - HEAP32[i2 + 16 >> 2] = HEAP32[i2 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i36 = i6 ? 2 : 0; - STACKTOP = i1; - return i36 | 0; - } else { - i36 = i6 ? 3 : 1; - STACKTOP = i1; - return i36 | 0; - } - } else if ((i25 | 0) == 34) { - STACKTOP = i1; - return i2 | 0; - } - return 0; -} -function _inflate_table(i11, i5, i13, i2, i1, i10) { - i11 = i11 | 0; - i5 = i5 | 0; - i13 = i13 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - i10 = i10 | 0; - var i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i7 = i3 + 32 | 0; - i12 = i3; - i4 = i7 + 0 | 0; - i9 = i4 + 32 | 0; - do { - HEAP16[i4 >> 1] = 0; - i4 = i4 + 2 | 0; - } while ((i4 | 0) < (i9 | 0)); - i14 = (i13 | 0) == 0; - if (!i14) { - i4 = 0; - do { - i32 = i7 + (HEAPU16[i5 + (i4 << 1) >> 1] << 1) | 0; - HEAP16[i32 >> 1] = (HEAP16[i32 >> 1] | 0) + 1 << 16 >> 16; - i4 = i4 + 1 | 0; - } while ((i4 | 0) != (i13 | 0)); - } - i4 = HEAP32[i1 >> 2] | 0; - i9 = 15; - while (1) { - i15 = i9 + -1 | 0; - if ((HEAP16[i7 + (i9 << 1) >> 1] | 0) != 0) { - break; - } - if ((i15 | 0) == 0) { - i6 = 7; - break; - } else { - i9 = i15; - } - } - if ((i6 | 0) == 7) { - i32 = HEAP32[i2 >> 2] | 0; - HEAP32[i2 >> 2] = i32 + 4; - HEAP8[i32] = 64; - HEAP8[i32 + 1 | 0] = 1; - HEAP16[i32 + 2 >> 1] = 0; - i32 = HEAP32[i2 >> 2] | 0; - HEAP32[i2 >> 2] = i32 + 4; - HEAP8[i32] = 64; - HEAP8[i32 + 1 | 0] = 1; - HEAP16[i32 + 2 >> 1] = 0; - HEAP32[i1 >> 2] = 1; - i32 = 0; - STACKTOP = i3; - return i32 | 0; - } - i4 = i4 >>> 0 > i9 >>> 0 ? i9 : i4; - L12 : do { - if (i9 >>> 0 > 1) { - i27 = 1; - while (1) { - i15 = i27 + 1 | 0; - if ((HEAP16[i7 + (i27 << 1) >> 1] | 0) != 0) { - break L12; - } - if (i15 >>> 0 < i9 >>> 0) { - i27 = i15; - } else { - i27 = i15; - break; - } - } - } else { - i27 = 1; - } - } while (0); - i4 = i4 >>> 0 < i27 >>> 0 ? i27 : i4; - i16 = 1; - i15 = 1; - do { - i16 = (i16 << 1) - (HEAPU16[i7 + (i15 << 1) >> 1] | 0) | 0; - i15 = i15 + 1 | 0; - if ((i16 | 0) < 0) { - i8 = -1; - i6 = 56; - break; - } - } while (i15 >>> 0 < 16); - if ((i6 | 0) == 56) { - STACKTOP = i3; - return i8 | 0; - } - if ((i16 | 0) > 0 ? !((i11 | 0) != 0 & (i9 | 0) == 1) : 0) { - i32 = -1; - STACKTOP = i3; - return i32 | 0; - } - HEAP16[i12 + 2 >> 1] = 0; - i16 = 0; - i15 = 1; - do { - i16 = (HEAPU16[i7 + (i15 << 1) >> 1] | 0) + (i16 & 65535) | 0; - i15 = i15 + 1 | 0; - HEAP16[i12 + (i15 << 1) >> 1] = i16; - } while ((i15 | 0) != 15); - if (!i14) { - i15 = 0; - do { - i14 = HEAP16[i5 + (i15 << 1) >> 1] | 0; - if (!(i14 << 16 >> 16 == 0)) { - i31 = i12 + ((i14 & 65535) << 1) | 0; - i32 = HEAP16[i31 >> 1] | 0; - HEAP16[i31 >> 1] = i32 + 1 << 16 >> 16; - HEAP16[i10 + ((i32 & 65535) << 1) >> 1] = i15; - } - i15 = i15 + 1 | 0; - } while ((i15 | 0) != (i13 | 0)); - } - if ((i11 | 0) == 1) { - i14 = 1 << i4; - if (i14 >>> 0 > 851) { - i32 = 1; - STACKTOP = i3; - return i32 | 0; - } else { - i16 = 0; - i20 = 1; - i17 = 14128 + -514 | 0; - i19 = 256; - i18 = 14192 + -514 | 0; - } - } else if ((i11 | 0) != 0) { - i14 = 1 << i4; - i16 = (i11 | 0) == 2; - if (i16 & i14 >>> 0 > 591) { - i32 = 1; - STACKTOP = i3; - return i32 | 0; - } else { - i20 = 0; - i17 = 14256; - i19 = -1; - i18 = 14320; - } - } else { - i16 = 0; - i14 = 1 << i4; - i20 = 0; - i17 = i10; - i19 = 19; - i18 = i10; - } - i11 = i14 + -1 | 0; - i12 = i4 & 255; - i22 = i4; - i21 = 0; - i25 = 0; - i13 = -1; - i15 = HEAP32[i2 >> 2] | 0; - i24 = 0; - L44 : while (1) { - i23 = 1 << i22; - while (1) { - i29 = i27 - i21 | 0; - i22 = i29 & 255; - i28 = HEAP16[i10 + (i24 << 1) >> 1] | 0; - i30 = i28 & 65535; - if ((i30 | 0) >= (i19 | 0)) { - if ((i30 | 0) > (i19 | 0)) { - i26 = HEAP16[i18 + (i30 << 1) >> 1] & 255; - i28 = HEAP16[i17 + (i30 << 1) >> 1] | 0; - } else { - i26 = 96; - i28 = 0; - } - } else { - i26 = 0; - } - i31 = 1 << i29; - i30 = i25 >>> i21; - i32 = i23; - while (1) { - i29 = i32 - i31 | 0; - i33 = i29 + i30 | 0; - HEAP8[i15 + (i33 << 2) | 0] = i26; - HEAP8[i15 + (i33 << 2) + 1 | 0] = i22; - HEAP16[i15 + (i33 << 2) + 2 >> 1] = i28; - if ((i32 | 0) == (i31 | 0)) { - break; - } else { - i32 = i29; - } - } - i26 = 1 << i27 + -1; - while (1) { - if ((i26 & i25 | 0) == 0) { - break; - } else { - i26 = i26 >>> 1; - } - } - if ((i26 | 0) == 0) { - i25 = 0; - } else { - i25 = (i26 + -1 & i25) + i26 | 0; - } - i24 = i24 + 1 | 0; - i32 = i7 + (i27 << 1) | 0; - i33 = (HEAP16[i32 >> 1] | 0) + -1 << 16 >> 16; - HEAP16[i32 >> 1] = i33; - if (i33 << 16 >> 16 == 0) { - if ((i27 | 0) == (i9 | 0)) { - break L44; - } - i27 = HEAPU16[i5 + (HEAPU16[i10 + (i24 << 1) >> 1] << 1) >> 1] | 0; - } - if (!(i27 >>> 0 > i4 >>> 0)) { - continue; - } - i26 = i25 & i11; - if ((i26 | 0) != (i13 | 0)) { - break; - } - } - i28 = (i21 | 0) == 0 ? i4 : i21; - i23 = i15 + (i23 << 2) | 0; - i31 = i27 - i28 | 0; - L67 : do { - if (i27 >>> 0 < i9 >>> 0) { - i29 = i27; - i30 = i31; - i31 = 1 << i31; - while (1) { - i31 = i31 - (HEAPU16[i7 + (i29 << 1) >> 1] | 0) | 0; - if ((i31 | 0) < 1) { - break L67; - } - i30 = i30 + 1 | 0; - i29 = i30 + i28 | 0; - if (i29 >>> 0 < i9 >>> 0) { - i31 = i31 << 1; - } else { - break; - } - } - } else { - i30 = i31; - } - } while (0); - i29 = (1 << i30) + i14 | 0; - if (i20 & i29 >>> 0 > 851 | i16 & i29 >>> 0 > 591) { - i8 = 1; - i6 = 56; - break; - } - HEAP8[(HEAP32[i2 >> 2] | 0) + (i26 << 2) | 0] = i30; - HEAP8[(HEAP32[i2 >> 2] | 0) + (i26 << 2) + 1 | 0] = i12; - i22 = HEAP32[i2 >> 2] | 0; - HEAP16[i22 + (i26 << 2) + 2 >> 1] = (i23 - i22 | 0) >>> 2; - i22 = i30; - i21 = i28; - i13 = i26; - i15 = i23; - i14 = i29; - } - if ((i6 | 0) == 56) { - STACKTOP = i3; - return i8 | 0; - } - L77 : do { - if ((i25 | 0) != 0) { - do { - if ((i21 | 0) != 0) { - if ((i25 & i11 | 0) != (i13 | 0)) { - i21 = 0; - i22 = i12; - i9 = i4; - i15 = HEAP32[i2 >> 2] | 0; - } - } else { - i21 = 0; - } - i5 = i25 >>> i21; - HEAP8[i15 + (i5 << 2) | 0] = 64; - HEAP8[i15 + (i5 << 2) + 1 | 0] = i22; - HEAP16[i15 + (i5 << 2) + 2 >> 1] = 0; - i5 = 1 << i9 + -1; - while (1) { - if ((i5 & i25 | 0) == 0) { - break; - } else { - i5 = i5 >>> 1; - } - } - if ((i5 | 0) == 0) { - break L77; - } - i25 = (i5 + -1 & i25) + i5 | 0; - } while ((i25 | 0) != 0); - } - } while (0); - HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + (i14 << 2); - HEAP32[i1 >> 2] = i4; - i33 = 0; - STACKTOP = i3; - return i33 | 0; -} -function _compress_block(i1, i3, i7) { - i1 = i1 | 0; - i3 = i3 | 0; - i7 = i7 | 0; - var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0; - i2 = STACKTOP; - i11 = i1 + 5792 | 0; - if ((HEAP32[i11 >> 2] | 0) == 0) { - i14 = HEAP32[i1 + 5820 >> 2] | 0; - i17 = HEAP16[i1 + 5816 >> 1] | 0; - } else { - i9 = i1 + 5796 | 0; - i10 = i1 + 5784 | 0; - i8 = i1 + 5820 | 0; - i12 = i1 + 5816 | 0; - i5 = i1 + 20 | 0; - i6 = i1 + 8 | 0; - i14 = 0; - while (1) { - i20 = HEAP16[(HEAP32[i9 >> 2] | 0) + (i14 << 1) >> 1] | 0; - i13 = i20 & 65535; - i4 = i14 + 1 | 0; - i14 = HEAPU8[(HEAP32[i10 >> 2] | 0) + i14 | 0] | 0; - do { - if (i20 << 16 >> 16 == 0) { - i15 = HEAPU16[i3 + (i14 << 2) + 2 >> 1] | 0; - i13 = HEAP32[i8 >> 2] | 0; - i14 = HEAPU16[i3 + (i14 << 2) >> 1] | 0; - i16 = HEAPU16[i12 >> 1] | 0 | i14 << i13; - i17 = i16 & 65535; - HEAP16[i12 >> 1] = i17; - if ((i13 | 0) > (16 - i15 | 0)) { - i17 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i17 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i17 | 0] = i16; - i17 = (HEAPU16[i12 >> 1] | 0) >>> 8 & 255; - i20 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i20 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i20 | 0] = i17; - i20 = HEAP32[i8 >> 2] | 0; - i17 = i14 >>> (16 - i20 | 0) & 65535; - HEAP16[i12 >> 1] = i17; - i14 = i15 + -16 + i20 | 0; - HEAP32[i8 >> 2] = i14; - break; - } else { - i14 = i13 + i15 | 0; - HEAP32[i8 >> 2] = i14; - break; - } - } else { - i15 = HEAPU8[808 + i14 | 0] | 0; - i19 = (i15 | 256) + 1 | 0; - i18 = HEAPU16[i3 + (i19 << 2) + 2 >> 1] | 0; - i17 = HEAP32[i8 >> 2] | 0; - i19 = HEAPU16[i3 + (i19 << 2) >> 1] | 0; - i20 = HEAPU16[i12 >> 1] | 0 | i19 << i17; - i16 = i20 & 65535; - HEAP16[i12 >> 1] = i16; - if ((i17 | 0) > (16 - i18 | 0)) { - i16 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i16 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i16 | 0] = i20; - i16 = (HEAPU16[i12 >> 1] | 0) >>> 8 & 255; - i20 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i20 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i20 | 0] = i16; - i20 = HEAP32[i8 >> 2] | 0; - i16 = i19 >>> (16 - i20 | 0) & 65535; - HEAP16[i12 >> 1] = i16; - i18 = i18 + -16 + i20 | 0; - } else { - i18 = i17 + i18 | 0; - } - HEAP32[i8 >> 2] = i18; - i17 = HEAP32[2408 + (i15 << 2) >> 2] | 0; - do { - if ((i15 + -8 | 0) >>> 0 < 20) { - i14 = i14 - (HEAP32[2528 + (i15 << 2) >> 2] | 0) & 65535; - i15 = i14 << i18 | i16 & 65535; - i16 = i15 & 65535; - HEAP16[i12 >> 1] = i16; - if ((i18 | 0) > (16 - i17 | 0)) { - i16 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i16 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i16 | 0] = i15; - i16 = (HEAPU16[i12 >> 1] | 0) >>> 8 & 255; - i20 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i20 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i20 | 0] = i16; - i20 = HEAP32[i8 >> 2] | 0; - i16 = i14 >>> (16 - i20 | 0) & 65535; - HEAP16[i12 >> 1] = i16; - i14 = i17 + -16 + i20 | 0; - HEAP32[i8 >> 2] = i14; - break; - } else { - i14 = i18 + i17 | 0; - HEAP32[i8 >> 2] = i14; - break; - } - } else { - i14 = i18; - } - } while (0); - i13 = i13 + -1 | 0; - if (i13 >>> 0 < 256) { - i15 = i13; - } else { - i15 = (i13 >>> 7) + 256 | 0; - } - i15 = HEAPU8[296 + i15 | 0] | 0; - i17 = HEAPU16[i7 + (i15 << 2) + 2 >> 1] | 0; - i18 = HEAPU16[i7 + (i15 << 2) >> 1] | 0; - i19 = i16 & 65535 | i18 << i14; - i16 = i19 & 65535; - HEAP16[i12 >> 1] = i16; - if ((i14 | 0) > (16 - i17 | 0)) { - i20 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i20 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i20 | 0] = i19; - i20 = (HEAPU16[i12 >> 1] | 0) >>> 8 & 255; - i14 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i14 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i14 | 0] = i20; - i14 = HEAP32[i8 >> 2] | 0; - i20 = i18 >>> (16 - i14 | 0) & 65535; - HEAP16[i12 >> 1] = i20; - i14 = i17 + -16 + i14 | 0; - i17 = i20; - } else { - i14 = i14 + i17 | 0; - i17 = i16; - } - HEAP32[i8 >> 2] = i14; - i16 = HEAP32[2648 + (i15 << 2) >> 2] | 0; - if ((i15 + -4 | 0) >>> 0 < 26) { - i13 = i13 - (HEAP32[2768 + (i15 << 2) >> 2] | 0) & 65535; - i15 = i13 << i14 | i17 & 65535; - i17 = i15 & 65535; - HEAP16[i12 >> 1] = i17; - if ((i14 | 0) > (16 - i16 | 0)) { - i17 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i17 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i17 | 0] = i15; - i17 = (HEAPU16[i12 >> 1] | 0) >>> 8 & 255; - i14 = HEAP32[i5 >> 2] | 0; - HEAP32[i5 >> 2] = i14 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i14 | 0] = i17; - i14 = HEAP32[i8 >> 2] | 0; - i17 = i13 >>> (16 - i14 | 0) & 65535; - HEAP16[i12 >> 1] = i17; - i14 = i16 + -16 + i14 | 0; - HEAP32[i8 >> 2] = i14; - break; - } else { - i14 = i14 + i16 | 0; - HEAP32[i8 >> 2] = i14; - break; - } - } - } - } while (0); - if (i4 >>> 0 < (HEAP32[i11 >> 2] | 0) >>> 0) { - i14 = i4; - } else { - break; - } - } - } - i5 = i3 + 1026 | 0; - i6 = HEAPU16[i5 >> 1] | 0; - i4 = i1 + 5820 | 0; - i3 = HEAPU16[i3 + 1024 >> 1] | 0; - i7 = i1 + 5816 | 0; - i8 = i17 & 65535 | i3 << i14; - HEAP16[i7 >> 1] = i8; - if ((i14 | 0) > (16 - i6 | 0)) { - i17 = i1 + 20 | 0; - i18 = HEAP32[i17 >> 2] | 0; - HEAP32[i17 >> 2] = i18 + 1; - i20 = i1 + 8 | 0; - HEAP8[(HEAP32[i20 >> 2] | 0) + i18 | 0] = i8; - i18 = (HEAPU16[i7 >> 1] | 0) >>> 8 & 255; - i19 = HEAP32[i17 >> 2] | 0; - HEAP32[i17 >> 2] = i19 + 1; - HEAP8[(HEAP32[i20 >> 2] | 0) + i19 | 0] = i18; - i19 = HEAP32[i4 >> 2] | 0; - HEAP16[i7 >> 1] = i3 >>> (16 - i19 | 0); - i19 = i6 + -16 + i19 | 0; - HEAP32[i4 >> 2] = i19; - i19 = HEAP16[i5 >> 1] | 0; - i19 = i19 & 65535; - i20 = i1 + 5812 | 0; - HEAP32[i20 >> 2] = i19; - STACKTOP = i2; - return; - } else { - i19 = i14 + i6 | 0; - HEAP32[i4 >> 2] = i19; - i19 = HEAP16[i5 >> 1] | 0; - i19 = i19 & 65535; - i20 = i1 + 5812 | 0; - HEAP32[i20 >> 2] = i19; - STACKTOP = i2; - return; - } -} -function _deflate_stored(i2, i5) { - i2 = i2 | 0; - i5 = i5 | 0; - var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0; - i1 = STACKTOP; - i4 = (HEAP32[i2 + 12 >> 2] | 0) + -5 | 0; - i11 = i4 >>> 0 < 65535 ? i4 : 65535; - i12 = i2 + 116 | 0; - i4 = i2 + 108 | 0; - i6 = i2 + 92 | 0; - i10 = i2 + 44 | 0; - i7 = i2 + 56 | 0; - while (1) { - i13 = HEAP32[i12 >> 2] | 0; - if (i13 >>> 0 < 2) { - _fill_window(i2); - i13 = HEAP32[i12 >> 2] | 0; - if ((i13 | i5 | 0) == 0) { - i2 = 0; - i8 = 28; - break; - } - if ((i13 | 0) == 0) { - i8 = 20; - break; - } - } - i13 = (HEAP32[i4 >> 2] | 0) + i13 | 0; - HEAP32[i4 >> 2] = i13; - HEAP32[i12 >> 2] = 0; - i14 = HEAP32[i6 >> 2] | 0; - i15 = i14 + i11 | 0; - if (!((i13 | 0) != 0 & i13 >>> 0 < i15 >>> 0)) { - HEAP32[i12 >> 2] = i13 - i15; - HEAP32[i4 >> 2] = i15; - if ((i14 | 0) > -1) { - i13 = (HEAP32[i7 >> 2] | 0) + i14 | 0; - } else { - i13 = 0; - } - __tr_flush_block(i2, i13, i11, 0); - HEAP32[i6 >> 2] = HEAP32[i4 >> 2]; - i16 = HEAP32[i2 >> 2] | 0; - i14 = i16 + 28 | 0; - i15 = HEAP32[i14 >> 2] | 0; - i17 = HEAP32[i15 + 20 >> 2] | 0; - i13 = i16 + 16 | 0; - i18 = HEAP32[i13 >> 2] | 0; - i17 = i17 >>> 0 > i18 >>> 0 ? i18 : i17; - if ((i17 | 0) != 0 ? (i8 = i16 + 12 | 0, _memcpy(HEAP32[i8 >> 2] | 0, HEAP32[i15 + 16 >> 2] | 0, i17 | 0) | 0, HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + i17, i8 = (HEAP32[i14 >> 2] | 0) + 16 | 0, HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + i17, i8 = i16 + 20 | 0, HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + i17, HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) - i17, i8 = HEAP32[i14 >> 2] | 0, i16 = i8 + 20 | 0, i18 = HEAP32[i16 >> 2] | 0, HEAP32[i16 >> 2] = i18 - i17, (i18 | 0) == (i17 | 0)) : 0) { - HEAP32[i8 + 16 >> 2] = HEAP32[i8 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i2 = 0; - i8 = 28; - break; - } - i14 = HEAP32[i6 >> 2] | 0; - i13 = HEAP32[i4 >> 2] | 0; - } - i13 = i13 - i14 | 0; - if (i13 >>> 0 < ((HEAP32[i10 >> 2] | 0) + -262 | 0) >>> 0) { - continue; - } - if ((i14 | 0) > -1) { - i14 = (HEAP32[i7 >> 2] | 0) + i14 | 0; - } else { - i14 = 0; - } - __tr_flush_block(i2, i14, i13, 0); - HEAP32[i6 >> 2] = HEAP32[i4 >> 2]; - i16 = HEAP32[i2 >> 2] | 0; - i14 = i16 + 28 | 0; - i15 = HEAP32[i14 >> 2] | 0; - i17 = HEAP32[i15 + 20 >> 2] | 0; - i13 = i16 + 16 | 0; - i18 = HEAP32[i13 >> 2] | 0; - i17 = i17 >>> 0 > i18 >>> 0 ? i18 : i17; - if ((i17 | 0) != 0 ? (i9 = i16 + 12 | 0, _memcpy(HEAP32[i9 >> 2] | 0, HEAP32[i15 + 16 >> 2] | 0, i17 | 0) | 0, HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + i17, i9 = (HEAP32[i14 >> 2] | 0) + 16 | 0, HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + i17, i9 = i16 + 20 | 0, HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + i17, HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) - i17, i9 = HEAP32[i14 >> 2] | 0, i16 = i9 + 20 | 0, i18 = HEAP32[i16 >> 2] | 0, HEAP32[i16 >> 2] = i18 - i17, (i18 | 0) == (i17 | 0)) : 0) { - HEAP32[i9 + 16 >> 2] = HEAP32[i9 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i2 = 0; - i8 = 28; - break; - } - } - if ((i8 | 0) == 20) { - i8 = HEAP32[i6 >> 2] | 0; - if ((i8 | 0) > -1) { - i7 = (HEAP32[i7 >> 2] | 0) + i8 | 0; - } else { - i7 = 0; - } - i5 = (i5 | 0) == 4; - __tr_flush_block(i2, i7, (HEAP32[i4 >> 2] | 0) - i8 | 0, i5 & 1); - HEAP32[i6 >> 2] = HEAP32[i4 >> 2]; - i4 = HEAP32[i2 >> 2] | 0; - i7 = i4 + 28 | 0; - i6 = HEAP32[i7 >> 2] | 0; - i9 = HEAP32[i6 + 20 >> 2] | 0; - i8 = i4 + 16 | 0; - i10 = HEAP32[i8 >> 2] | 0; - i9 = i9 >>> 0 > i10 >>> 0 ? i10 : i9; - if ((i9 | 0) != 0 ? (i3 = i4 + 12 | 0, _memcpy(HEAP32[i3 >> 2] | 0, HEAP32[i6 + 16 >> 2] | 0, i9 | 0) | 0, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + i9, i3 = (HEAP32[i7 >> 2] | 0) + 16 | 0, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + i9, i3 = i4 + 20 | 0, HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + i9, HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) - i9, i3 = HEAP32[i7 >> 2] | 0, i17 = i3 + 20 | 0, i18 = HEAP32[i17 >> 2] | 0, HEAP32[i17 >> 2] = i18 - i9, (i18 | 0) == (i9 | 0)) : 0) { - HEAP32[i3 + 16 >> 2] = HEAP32[i3 + 8 >> 2]; - } - if ((HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] | 0) == 0) { - i18 = i5 ? 2 : 0; - STACKTOP = i1; - return i18 | 0; - } else { - i18 = i5 ? 3 : 1; - STACKTOP = i1; - return i18 | 0; - } - } else if ((i8 | 0) == 28) { - STACKTOP = i1; - return i2 | 0; - } - return 0; -} -function _fill_window(i15) { - i15 = i15 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0; - i2 = STACKTOP; - i16 = i15 + 44 | 0; - i9 = HEAP32[i16 >> 2] | 0; - i4 = i15 + 60 | 0; - i8 = i15 + 116 | 0; - i3 = i15 + 108 | 0; - i5 = i9 + -262 | 0; - i1 = i15 + 56 | 0; - i17 = i15 + 72 | 0; - i6 = i15 + 88 | 0; - i7 = i15 + 84 | 0; - i11 = i15 + 112 | 0; - i12 = i15 + 92 | 0; - i13 = i15 + 76 | 0; - i14 = i15 + 68 | 0; - i10 = i15 + 64 | 0; - i19 = HEAP32[i8 >> 2] | 0; - i21 = i9; - while (1) { - i20 = HEAP32[i3 >> 2] | 0; - i19 = (HEAP32[i4 >> 2] | 0) - i19 - i20 | 0; - if (!(i20 >>> 0 < (i5 + i21 | 0) >>> 0)) { - i20 = HEAP32[i1 >> 2] | 0; - _memcpy(i20 | 0, i20 + i9 | 0, i9 | 0) | 0; - HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) - i9; - i20 = (HEAP32[i3 >> 2] | 0) - i9 | 0; - HEAP32[i3 >> 2] = i20; - HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) - i9; - i22 = HEAP32[i13 >> 2] | 0; - i21 = i22; - i22 = (HEAP32[i14 >> 2] | 0) + (i22 << 1) | 0; - do { - i22 = i22 + -2 | 0; - i23 = HEAPU16[i22 >> 1] | 0; - if (i23 >>> 0 < i9 >>> 0) { - i23 = 0; - } else { - i23 = i23 - i9 & 65535; - } - HEAP16[i22 >> 1] = i23; - i21 = i21 + -1 | 0; - } while ((i21 | 0) != 0); - i22 = i9; - i21 = (HEAP32[i10 >> 2] | 0) + (i9 << 1) | 0; - do { - i21 = i21 + -2 | 0; - i23 = HEAPU16[i21 >> 1] | 0; - if (i23 >>> 0 < i9 >>> 0) { - i23 = 0; - } else { - i23 = i23 - i9 & 65535; - } - HEAP16[i21 >> 1] = i23; - i22 = i22 + -1 | 0; - } while ((i22 | 0) != 0); - i19 = i19 + i9 | 0; - } - i21 = HEAP32[i15 >> 2] | 0; - i24 = i21 + 4 | 0; - i23 = HEAP32[i24 >> 2] | 0; - if ((i23 | 0) == 0) { - i18 = 28; - break; - } - i22 = HEAP32[i8 >> 2] | 0; - i20 = (HEAP32[i1 >> 2] | 0) + (i22 + i20) | 0; - i19 = i23 >>> 0 > i19 >>> 0 ? i19 : i23; - if ((i19 | 0) == 0) { - i19 = 0; - } else { - HEAP32[i24 >> 2] = i23 - i19; - i22 = HEAP32[(HEAP32[i21 + 28 >> 2] | 0) + 24 >> 2] | 0; - if ((i22 | 0) == 1) { - i22 = i21 + 48 | 0; - HEAP32[i22 >> 2] = _adler32(HEAP32[i22 >> 2] | 0, HEAP32[i21 >> 2] | 0, i19) | 0; - i22 = i21; - } else if ((i22 | 0) == 2) { - i22 = i21 + 48 | 0; - HEAP32[i22 >> 2] = _crc32(HEAP32[i22 >> 2] | 0, HEAP32[i21 >> 2] | 0, i19) | 0; - i22 = i21; - } else { - i22 = i21; - } - _memcpy(i20 | 0, HEAP32[i22 >> 2] | 0, i19 | 0) | 0; - HEAP32[i22 >> 2] = (HEAP32[i22 >> 2] | 0) + i19; - i22 = i21 + 8 | 0; - HEAP32[i22 >> 2] = (HEAP32[i22 >> 2] | 0) + i19; - i22 = HEAP32[i8 >> 2] | 0; - } - i19 = i22 + i19 | 0; - HEAP32[i8 >> 2] = i19; - if (i19 >>> 0 > 2 ? (i23 = HEAP32[i3 >> 2] | 0, i22 = HEAP32[i1 >> 2] | 0, i24 = HEAPU8[i22 + i23 | 0] | 0, HEAP32[i17 >> 2] = i24, HEAP32[i17 >> 2] = ((HEAPU8[i22 + (i23 + 1) | 0] | 0) ^ i24 << HEAP32[i6 >> 2]) & HEAP32[i7 >> 2], !(i19 >>> 0 < 262)) : 0) { - break; - } - if ((HEAP32[(HEAP32[i15 >> 2] | 0) + 4 >> 2] | 0) == 0) { - break; - } - i21 = HEAP32[i16 >> 2] | 0; - } - if ((i18 | 0) == 28) { - STACKTOP = i2; - return; - } - i5 = i15 + 5824 | 0; - i6 = HEAP32[i5 >> 2] | 0; - i4 = HEAP32[i4 >> 2] | 0; - if (!(i6 >>> 0 < i4 >>> 0)) { - STACKTOP = i2; - return; - } - i3 = i19 + (HEAP32[i3 >> 2] | 0) | 0; - if (i6 >>> 0 < i3 >>> 0) { - i4 = i4 - i3 | 0; - i24 = i4 >>> 0 > 258 ? 258 : i4; - _memset((HEAP32[i1 >> 2] | 0) + i3 | 0, 0, i24 | 0) | 0; - HEAP32[i5 >> 2] = i24 + i3; - STACKTOP = i2; - return; - } - i3 = i3 + 258 | 0; - if (!(i6 >>> 0 < i3 >>> 0)) { - STACKTOP = i2; - return; - } - i3 = i3 - i6 | 0; - i4 = i4 - i6 | 0; - i24 = i3 >>> 0 > i4 >>> 0 ? i4 : i3; - _memset((HEAP32[i1 >> 2] | 0) + i6 | 0, 0, i24 | 0) | 0; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + i24; - STACKTOP = i2; - return; -} -function __tr_align(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i2 = STACKTOP; - i3 = i1 + 5820 | 0; - i6 = HEAP32[i3 >> 2] | 0; - i4 = i1 + 5816 | 0; - i7 = HEAPU16[i4 >> 1] | 0 | 2 << i6; - i5 = i7 & 65535; - HEAP16[i4 >> 1] = i5; - if ((i6 | 0) > 13) { - i8 = i1 + 20 | 0; - i6 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i6 + 1; - i5 = i1 + 8 | 0; - HEAP8[(HEAP32[i5 >> 2] | 0) + i6 | 0] = i7; - i7 = (HEAPU16[i4 >> 1] | 0) >>> 8 & 255; - i6 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i6 + 1; - HEAP8[(HEAP32[i5 >> 2] | 0) + i6 | 0] = i7; - i6 = HEAP32[i3 >> 2] | 0; - i5 = 2 >>> (16 - i6 | 0) & 65535; - HEAP16[i4 >> 1] = i5; - i6 = i6 + -13 | 0; - } else { - i6 = i6 + 3 | 0; - } - HEAP32[i3 >> 2] = i6; - if ((i6 | 0) > 9) { - i7 = i1 + 20 | 0; - i6 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i6 + 1; - i8 = i1 + 8 | 0; - HEAP8[(HEAP32[i8 >> 2] | 0) + i6 | 0] = i5; - i5 = (HEAPU16[i4 >> 1] | 0) >>> 8 & 255; - i6 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i6 + 1; - HEAP8[(HEAP32[i8 >> 2] | 0) + i6 | 0] = i5; - HEAP16[i4 >> 1] = 0; - i6 = (HEAP32[i3 >> 2] | 0) + -9 | 0; - i5 = 0; - } else { - i6 = i6 + 7 | 0; - } - HEAP32[i3 >> 2] = i6; - if ((i6 | 0) != 16) { - if ((i6 | 0) > 7) { - i6 = i1 + 20 | 0; - i7 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i7 + 1; - HEAP8[(HEAP32[i1 + 8 >> 2] | 0) + i7 | 0] = i5; - i7 = (HEAPU16[i4 >> 1] | 0) >>> 8; - HEAP16[i4 >> 1] = i7; - i6 = (HEAP32[i3 >> 2] | 0) + -8 | 0; - HEAP32[i3 >> 2] = i6; - } else { - i7 = i5; - } - } else { - i9 = i1 + 20 | 0; - i8 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i8 + 1; - i7 = i1 + 8 | 0; - HEAP8[(HEAP32[i7 >> 2] | 0) + i8 | 0] = i5; - i8 = (HEAPU16[i4 >> 1] | 0) >>> 8 & 255; - i6 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i6 + 1; - HEAP8[(HEAP32[i7 >> 2] | 0) + i6 | 0] = i8; - HEAP16[i4 >> 1] = 0; - HEAP32[i3 >> 2] = 0; - i6 = 0; - i7 = 0; - } - i5 = i1 + 5812 | 0; - if ((11 - i6 + (HEAP32[i5 >> 2] | 0) | 0) >= 9) { - HEAP32[i5 >> 2] = 7; - STACKTOP = i2; - return; - } - i7 = i7 & 65535 | 2 << i6; - HEAP16[i4 >> 1] = i7; - if ((i6 | 0) > 13) { - i8 = i1 + 20 | 0; - i6 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i6 + 1; - i9 = i1 + 8 | 0; - HEAP8[(HEAP32[i9 >> 2] | 0) + i6 | 0] = i7; - i7 = (HEAPU16[i4 >> 1] | 0) >>> 8 & 255; - i6 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i6 + 1; - HEAP8[(HEAP32[i9 >> 2] | 0) + i6 | 0] = i7; - i6 = HEAP32[i3 >> 2] | 0; - i7 = 2 >>> (16 - i6 | 0); - HEAP16[i4 >> 1] = i7; - i6 = i6 + -13 | 0; - } else { - i6 = i6 + 3 | 0; - } - i7 = i7 & 255; - HEAP32[i3 >> 2] = i6; - if ((i6 | 0) > 9) { - i8 = i1 + 20 | 0; - i9 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i9 + 1; - i6 = i1 + 8 | 0; - HEAP8[(HEAP32[i6 >> 2] | 0) + i9 | 0] = i7; - i9 = (HEAPU16[i4 >> 1] | 0) >>> 8 & 255; - i7 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i7 + 1; - HEAP8[(HEAP32[i6 >> 2] | 0) + i7 | 0] = i9; - HEAP16[i4 >> 1] = 0; - i7 = 0; - i6 = (HEAP32[i3 >> 2] | 0) + -9 | 0; - } else { - i6 = i6 + 7 | 0; - } - HEAP32[i3 >> 2] = i6; - if ((i6 | 0) == 16) { - i6 = i1 + 20 | 0; - i9 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i9 + 1; - i8 = i1 + 8 | 0; - HEAP8[(HEAP32[i8 >> 2] | 0) + i9 | 0] = i7; - i7 = (HEAPU16[i4 >> 1] | 0) >>> 8 & 255; - i9 = HEAP32[i6 >> 2] | 0; - HEAP32[i6 >> 2] = i9 + 1; - HEAP8[(HEAP32[i8 >> 2] | 0) + i9 | 0] = i7; - HEAP16[i4 >> 1] = 0; - HEAP32[i3 >> 2] = 0; - HEAP32[i5 >> 2] = 7; - STACKTOP = i2; - return; - } - if ((i6 | 0) <= 7) { - HEAP32[i5 >> 2] = 7; - STACKTOP = i2; - return; - } - i8 = i1 + 20 | 0; - i9 = HEAP32[i8 >> 2] | 0; - HEAP32[i8 >> 2] = i9 + 1; - HEAP8[(HEAP32[i1 + 8 >> 2] | 0) + i9 | 0] = i7; - HEAP16[i4 >> 1] = (HEAPU16[i4 >> 1] | 0) >>> 8; - HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + -8; - HEAP32[i5 >> 2] = 7; - STACKTOP = i2; - return; -} -function _adler32(i6, i4, i5) { - i6 = i6 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0; - i1 = STACKTOP; - i3 = i6 >>> 16; - i6 = i6 & 65535; - if ((i5 | 0) == 1) { - i2 = (HEAPU8[i4] | 0) + i6 | 0; - i2 = i2 >>> 0 > 65520 ? i2 + -65521 | 0 : i2; - i3 = i2 + i3 | 0; - i8 = (i3 >>> 0 > 65520 ? i3 + 15 | 0 : i3) << 16 | i2; - STACKTOP = i1; - return i8 | 0; - } - if ((i4 | 0) == 0) { - i8 = 1; - STACKTOP = i1; - return i8 | 0; - } - if (i5 >>> 0 < 16) { - if ((i5 | 0) != 0) { - while (1) { - i5 = i5 + -1 | 0; - i6 = (HEAPU8[i4] | 0) + i6 | 0; - i3 = i6 + i3 | 0; - if ((i5 | 0) == 0) { - break; - } else { - i4 = i4 + 1 | 0; - } - } - } - i8 = ((i3 >>> 0) % 65521 | 0) << 16 | (i6 >>> 0 > 65520 ? i6 + -65521 | 0 : i6); - STACKTOP = i1; - return i8 | 0; - } - if (i5 >>> 0 > 5551) { - do { - i5 = i5 + -5552 | 0; - i7 = i4; - i8 = 347; - while (1) { - i23 = (HEAPU8[i7] | 0) + i6 | 0; - i22 = i23 + (HEAPU8[i7 + 1 | 0] | 0) | 0; - i21 = i22 + (HEAPU8[i7 + 2 | 0] | 0) | 0; - i20 = i21 + (HEAPU8[i7 + 3 | 0] | 0) | 0; - i19 = i20 + (HEAPU8[i7 + 4 | 0] | 0) | 0; - i18 = i19 + (HEAPU8[i7 + 5 | 0] | 0) | 0; - i17 = i18 + (HEAPU8[i7 + 6 | 0] | 0) | 0; - i16 = i17 + (HEAPU8[i7 + 7 | 0] | 0) | 0; - i15 = i16 + (HEAPU8[i7 + 8 | 0] | 0) | 0; - i14 = i15 + (HEAPU8[i7 + 9 | 0] | 0) | 0; - i13 = i14 + (HEAPU8[i7 + 10 | 0] | 0) | 0; - i12 = i13 + (HEAPU8[i7 + 11 | 0] | 0) | 0; - i11 = i12 + (HEAPU8[i7 + 12 | 0] | 0) | 0; - i10 = i11 + (HEAPU8[i7 + 13 | 0] | 0) | 0; - i9 = i10 + (HEAPU8[i7 + 14 | 0] | 0) | 0; - i6 = i9 + (HEAPU8[i7 + 15 | 0] | 0) | 0; - i3 = i23 + i3 + i22 + i21 + i20 + i19 + i18 + i17 + i16 + i15 + i14 + i13 + i12 + i11 + i10 + i9 + i6 | 0; - i8 = i8 + -1 | 0; - if ((i8 | 0) == 0) { - break; - } else { - i7 = i7 + 16 | 0; - } - } - i4 = i4 + 5552 | 0; - i6 = (i6 >>> 0) % 65521 | 0; - i3 = (i3 >>> 0) % 65521 | 0; - } while (i5 >>> 0 > 5551); - if ((i5 | 0) != 0) { - if (i5 >>> 0 > 15) { - i2 = 15; - } else { - i2 = 16; - } - } - } else { - i2 = 15; - } - if ((i2 | 0) == 15) { - while (1) { - i5 = i5 + -16 | 0; - i9 = (HEAPU8[i4] | 0) + i6 | 0; - i10 = i9 + (HEAPU8[i4 + 1 | 0] | 0) | 0; - i11 = i10 + (HEAPU8[i4 + 2 | 0] | 0) | 0; - i12 = i11 + (HEAPU8[i4 + 3 | 0] | 0) | 0; - i13 = i12 + (HEAPU8[i4 + 4 | 0] | 0) | 0; - i14 = i13 + (HEAPU8[i4 + 5 | 0] | 0) | 0; - i15 = i14 + (HEAPU8[i4 + 6 | 0] | 0) | 0; - i16 = i15 + (HEAPU8[i4 + 7 | 0] | 0) | 0; - i17 = i16 + (HEAPU8[i4 + 8 | 0] | 0) | 0; - i18 = i17 + (HEAPU8[i4 + 9 | 0] | 0) | 0; - i19 = i18 + (HEAPU8[i4 + 10 | 0] | 0) | 0; - i20 = i19 + (HEAPU8[i4 + 11 | 0] | 0) | 0; - i21 = i20 + (HEAPU8[i4 + 12 | 0] | 0) | 0; - i22 = i21 + (HEAPU8[i4 + 13 | 0] | 0) | 0; - i23 = i22 + (HEAPU8[i4 + 14 | 0] | 0) | 0; - i6 = i23 + (HEAPU8[i4 + 15 | 0] | 0) | 0; - i3 = i9 + i3 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17 + i18 + i19 + i20 + i21 + i22 + i23 + i6 | 0; - i4 = i4 + 16 | 0; - if (!(i5 >>> 0 > 15)) { - break; - } else { - i2 = 15; - } - } - if ((i5 | 0) == 0) { - i2 = 17; - } else { - i2 = 16; - } - } - if ((i2 | 0) == 16) { - while (1) { - i5 = i5 + -1 | 0; - i6 = (HEAPU8[i4] | 0) + i6 | 0; - i3 = i6 + i3 | 0; - if ((i5 | 0) == 0) { - i2 = 17; - break; - } else { - i4 = i4 + 1 | 0; - i2 = 16; - } - } - } - if ((i2 | 0) == 17) { - i6 = (i6 >>> 0) % 65521 | 0; - i3 = (i3 >>> 0) % 65521 | 0; - } - i23 = i3 << 16 | i6; - STACKTOP = i1; - return i23 | 0; -} -function _crc32(i4, i2, i3) { - i4 = i4 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - var i1 = 0, i5 = 0; - i1 = STACKTOP; - if ((i2 | 0) == 0) { - i5 = 0; - STACKTOP = i1; - return i5 | 0; - } - i4 = ~i4; - L4 : do { - if ((i3 | 0) != 0) { - while (1) { - if ((i2 & 3 | 0) == 0) { - break; - } - i4 = HEAP32[3192 + (((HEAPU8[i2] | 0) ^ i4 & 255) << 2) >> 2] ^ i4 >>> 8; - i3 = i3 + -1 | 0; - if ((i3 | 0) == 0) { - break L4; - } else { - i2 = i2 + 1 | 0; - } - } - if (i3 >>> 0 > 31) { - while (1) { - i4 = HEAP32[i2 >> 2] ^ i4; - i4 = HEAP32[5240 + ((i4 >>> 8 & 255) << 2) >> 2] ^ HEAP32[6264 + ((i4 & 255) << 2) >> 2] ^ HEAP32[4216 + ((i4 >>> 16 & 255) << 2) >> 2] ^ HEAP32[3192 + (i4 >>> 24 << 2) >> 2] ^ HEAP32[i2 + 4 >> 2]; - i4 = HEAP32[5240 + ((i4 >>> 8 & 255) << 2) >> 2] ^ HEAP32[6264 + ((i4 & 255) << 2) >> 2] ^ HEAP32[4216 + ((i4 >>> 16 & 255) << 2) >> 2] ^ HEAP32[3192 + (i4 >>> 24 << 2) >> 2] ^ HEAP32[i2 + 8 >> 2]; - i4 = HEAP32[5240 + ((i4 >>> 8 & 255) << 2) >> 2] ^ HEAP32[6264 + ((i4 & 255) << 2) >> 2] ^ HEAP32[4216 + ((i4 >>> 16 & 255) << 2) >> 2] ^ HEAP32[3192 + (i4 >>> 24 << 2) >> 2] ^ HEAP32[i2 + 12 >> 2]; - i4 = HEAP32[5240 + ((i4 >>> 8 & 255) << 2) >> 2] ^ HEAP32[6264 + ((i4 & 255) << 2) >> 2] ^ HEAP32[4216 + ((i4 >>> 16 & 255) << 2) >> 2] ^ HEAP32[3192 + (i4 >>> 24 << 2) >> 2] ^ HEAP32[i2 + 16 >> 2]; - i4 = HEAP32[5240 + ((i4 >>> 8 & 255) << 2) >> 2] ^ HEAP32[6264 + ((i4 & 255) << 2) >> 2] ^ HEAP32[4216 + ((i4 >>> 16 & 255) << 2) >> 2] ^ HEAP32[3192 + (i4 >>> 24 << 2) >> 2] ^ HEAP32[i2 + 20 >> 2]; - i4 = HEAP32[5240 + ((i4 >>> 8 & 255) << 2) >> 2] ^ HEAP32[6264 + ((i4 & 255) << 2) >> 2] ^ HEAP32[4216 + ((i4 >>> 16 & 255) << 2) >> 2] ^ HEAP32[3192 + (i4 >>> 24 << 2) >> 2] ^ HEAP32[i2 + 24 >> 2]; - i5 = i2 + 32 | 0; - i4 = HEAP32[5240 + ((i4 >>> 8 & 255) << 2) >> 2] ^ HEAP32[6264 + ((i4 & 255) << 2) >> 2] ^ HEAP32[4216 + ((i4 >>> 16 & 255) << 2) >> 2] ^ HEAP32[3192 + (i4 >>> 24 << 2) >> 2] ^ HEAP32[i2 + 28 >> 2]; - i4 = HEAP32[5240 + ((i4 >>> 8 & 255) << 2) >> 2] ^ HEAP32[6264 + ((i4 & 255) << 2) >> 2] ^ HEAP32[4216 + ((i4 >>> 16 & 255) << 2) >> 2] ^ HEAP32[3192 + (i4 >>> 24 << 2) >> 2]; - i3 = i3 + -32 | 0; - if (i3 >>> 0 > 31) { - i2 = i5; - } else { - i2 = i5; - break; - } - } - } - if (i3 >>> 0 > 3) { - while (1) { - i5 = i2 + 4 | 0; - i4 = HEAP32[i2 >> 2] ^ i4; - i4 = HEAP32[5240 + ((i4 >>> 8 & 255) << 2) >> 2] ^ HEAP32[6264 + ((i4 & 255) << 2) >> 2] ^ HEAP32[4216 + ((i4 >>> 16 & 255) << 2) >> 2] ^ HEAP32[3192 + (i4 >>> 24 << 2) >> 2]; - i3 = i3 + -4 | 0; - if (i3 >>> 0 > 3) { - i2 = i5; - } else { - i2 = i5; - break; - } - } - } - if ((i3 | 0) != 0) { - while (1) { - i4 = HEAP32[3192 + (((HEAPU8[i2] | 0) ^ i4 & 255) << 2) >> 2] ^ i4 >>> 8; - i3 = i3 + -1 | 0; - if ((i3 | 0) == 0) { - break; - } else { - i2 = i2 + 1 | 0; - } - } - } - } - } while (0); - i5 = ~i4; - STACKTOP = i1; - return i5 | 0; -} -function _deflateInit2_(i3, i7, i8, i10, i4, i1, i5, i6) { - i3 = i3 | 0; - i7 = i7 | 0; - i8 = i8 | 0; - i10 = i10 | 0; - i4 = i4 | 0; - i1 = i1 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i2 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0; - i2 = STACKTOP; - if ((i5 | 0) == 0) { - i12 = -6; - STACKTOP = i2; - return i12 | 0; - } - if (!((HEAP8[i5] | 0) == 49 & (i6 | 0) == 56)) { - i12 = -6; - STACKTOP = i2; - return i12 | 0; - } - if ((i3 | 0) == 0) { - i12 = -2; - STACKTOP = i2; - return i12 | 0; - } - i5 = i3 + 24 | 0; - HEAP32[i5 >> 2] = 0; - i6 = i3 + 32 | 0; - i9 = HEAP32[i6 >> 2] | 0; - if ((i9 | 0) == 0) { - HEAP32[i6 >> 2] = 1; - HEAP32[i3 + 40 >> 2] = 0; - i9 = 1; - } - i11 = i3 + 36 | 0; - if ((HEAP32[i11 >> 2] | 0) == 0) { - HEAP32[i11 >> 2] = 1; - } - i7 = (i7 | 0) == -1 ? 6 : i7; - if ((i10 | 0) < 0) { - i10 = 0 - i10 | 0; - i11 = 0; - } else { - i11 = (i10 | 0) > 15; - i10 = i11 ? i10 + -16 | 0 : i10; - i11 = i11 ? 2 : 1; - } - if (!((i4 + -1 | 0) >>> 0 < 9 & (i8 | 0) == 8)) { - i12 = -2; - STACKTOP = i2; - return i12 | 0; - } - if ((i10 + -8 | 0) >>> 0 > 7 | i7 >>> 0 > 9 | i1 >>> 0 > 4) { - i12 = -2; - STACKTOP = i2; - return i12 | 0; - } - i12 = (i10 | 0) == 8 ? 9 : i10; - i10 = i3 + 40 | 0; - i8 = FUNCTION_TABLE_iiii[i9 & 1](HEAP32[i10 >> 2] | 0, 1, 5828) | 0; - if ((i8 | 0) == 0) { - i12 = -4; - STACKTOP = i2; - return i12 | 0; - } - HEAP32[i3 + 28 >> 2] = i8; - HEAP32[i8 >> 2] = i3; - HEAP32[i8 + 24 >> 2] = i11; - HEAP32[i8 + 28 >> 2] = 0; - HEAP32[i8 + 48 >> 2] = i12; - i14 = 1 << i12; - i11 = i8 + 44 | 0; - HEAP32[i11 >> 2] = i14; - HEAP32[i8 + 52 >> 2] = i14 + -1; - i12 = i4 + 7 | 0; - HEAP32[i8 + 80 >> 2] = i12; - i12 = 1 << i12; - i13 = i8 + 76 | 0; - HEAP32[i13 >> 2] = i12; - HEAP32[i8 + 84 >> 2] = i12 + -1; - HEAP32[i8 + 88 >> 2] = ((i4 + 9 | 0) >>> 0) / 3 | 0; - i12 = i8 + 56 | 0; - HEAP32[i12 >> 2] = FUNCTION_TABLE_iiii[HEAP32[i6 >> 2] & 1](HEAP32[i10 >> 2] | 0, i14, 2) | 0; - i14 = FUNCTION_TABLE_iiii[HEAP32[i6 >> 2] & 1](HEAP32[i10 >> 2] | 0, HEAP32[i11 >> 2] | 0, 2) | 0; - i9 = i8 + 64 | 0; - HEAP32[i9 >> 2] = i14; - _memset(i14 | 0, 0, HEAP32[i11 >> 2] << 1 | 0) | 0; - i11 = i8 + 68 | 0; - HEAP32[i11 >> 2] = FUNCTION_TABLE_iiii[HEAP32[i6 >> 2] & 1](HEAP32[i10 >> 2] | 0, HEAP32[i13 >> 2] | 0, 2) | 0; - HEAP32[i8 + 5824 >> 2] = 0; - i4 = 1 << i4 + 6; - i13 = i8 + 5788 | 0; - HEAP32[i13 >> 2] = i4; - i4 = FUNCTION_TABLE_iiii[HEAP32[i6 >> 2] & 1](HEAP32[i10 >> 2] | 0, i4, 4) | 0; - HEAP32[i8 + 8 >> 2] = i4; - i6 = HEAP32[i13 >> 2] | 0; - HEAP32[i8 + 12 >> 2] = i6 << 2; - if (((HEAP32[i12 >> 2] | 0) != 0 ? (HEAP32[i9 >> 2] | 0) != 0 : 0) ? !((HEAP32[i11 >> 2] | 0) == 0 | (i4 | 0) == 0) : 0) { - HEAP32[i8 + 5796 >> 2] = i4 + (i6 >>> 1 << 1); - HEAP32[i8 + 5784 >> 2] = i4 + (i6 * 3 | 0); - HEAP32[i8 + 132 >> 2] = i7; - HEAP32[i8 + 136 >> 2] = i1; - HEAP8[i8 + 36 | 0] = 8; - i14 = _deflateReset(i3) | 0; - STACKTOP = i2; - return i14 | 0; - } - HEAP32[i8 + 4 >> 2] = 666; - HEAP32[i5 >> 2] = HEAP32[3176 >> 2]; - _deflateEnd(i3) | 0; - i14 = -4; - STACKTOP = i2; - return i14 | 0; -} -function _longest_match(i19, i16) { - i19 = i19 | 0; - i16 = i16 | 0; - var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i17 = 0, i18 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0; - i1 = STACKTOP; - i18 = HEAP32[i19 + 124 >> 2] | 0; - i3 = HEAP32[i19 + 56 >> 2] | 0; - i5 = HEAP32[i19 + 108 >> 2] | 0; - i4 = i3 + i5 | 0; - i20 = HEAP32[i19 + 120 >> 2] | 0; - i10 = HEAP32[i19 + 144 >> 2] | 0; - i2 = (HEAP32[i19 + 44 >> 2] | 0) + -262 | 0; - i8 = i5 >>> 0 > i2 >>> 0 ? i5 - i2 | 0 : 0; - i6 = HEAP32[i19 + 64 >> 2] | 0; - i7 = HEAP32[i19 + 52 >> 2] | 0; - i9 = i3 + (i5 + 258) | 0; - i2 = HEAP32[i19 + 116 >> 2] | 0; - i12 = i10 >>> 0 > i2 >>> 0 ? i2 : i10; - i11 = i19 + 112 | 0; - i15 = i3 + (i5 + 1) | 0; - i14 = i3 + (i5 + 2) | 0; - i13 = i9; - i10 = i5 + 257 | 0; - i17 = i20; - i18 = i20 >>> 0 < (HEAP32[i19 + 140 >> 2] | 0) >>> 0 ? i18 : i18 >>> 2; - i19 = HEAP8[i3 + (i20 + i5) | 0] | 0; - i20 = HEAP8[i3 + (i5 + -1 + i20) | 0] | 0; - while (1) { - i21 = i3 + i16 | 0; - if ((((HEAP8[i3 + (i16 + i17) | 0] | 0) == i19 << 24 >> 24 ? (HEAP8[i3 + (i17 + -1 + i16) | 0] | 0) == i20 << 24 >> 24 : 0) ? (HEAP8[i21] | 0) == (HEAP8[i4] | 0) : 0) ? (HEAP8[i3 + (i16 + 1) | 0] | 0) == (HEAP8[i15] | 0) : 0) { - i21 = i3 + (i16 + 2) | 0; - i22 = i14; - do { - i23 = i22 + 1 | 0; - if ((HEAP8[i23] | 0) != (HEAP8[i21 + 1 | 0] | 0)) { - i22 = i23; - break; - } - i23 = i22 + 2 | 0; - if ((HEAP8[i23] | 0) != (HEAP8[i21 + 2 | 0] | 0)) { - i22 = i23; - break; - } - i23 = i22 + 3 | 0; - if ((HEAP8[i23] | 0) != (HEAP8[i21 + 3 | 0] | 0)) { - i22 = i23; - break; - } - i23 = i22 + 4 | 0; - if ((HEAP8[i23] | 0) != (HEAP8[i21 + 4 | 0] | 0)) { - i22 = i23; - break; - } - i23 = i22 + 5 | 0; - if ((HEAP8[i23] | 0) != (HEAP8[i21 + 5 | 0] | 0)) { - i22 = i23; - break; - } - i23 = i22 + 6 | 0; - if ((HEAP8[i23] | 0) != (HEAP8[i21 + 6 | 0] | 0)) { - i22 = i23; - break; - } - i23 = i22 + 7 | 0; - if ((HEAP8[i23] | 0) != (HEAP8[i21 + 7 | 0] | 0)) { - i22 = i23; - break; - } - i22 = i22 + 8 | 0; - i21 = i21 + 8 | 0; - } while ((HEAP8[i22] | 0) == (HEAP8[i21] | 0) & i22 >>> 0 < i9 >>> 0); - i21 = i22 - i13 | 0; - i22 = i21 + 258 | 0; - if ((i22 | 0) > (i17 | 0)) { - HEAP32[i11 >> 2] = i16; - if ((i22 | 0) >= (i12 | 0)) { - i17 = i22; - i3 = 20; - break; - } - i17 = i22; - i19 = HEAP8[i3 + (i22 + i5) | 0] | 0; - i20 = HEAP8[i3 + (i10 + i21) | 0] | 0; - } - } - i16 = HEAPU16[i6 + ((i16 & i7) << 1) >> 1] | 0; - if (!(i16 >>> 0 > i8 >>> 0)) { - i3 = 20; - break; - } - i18 = i18 + -1 | 0; - if ((i18 | 0) == 0) { - i3 = 20; - break; - } - } - if ((i3 | 0) == 20) { - STACKTOP = i1; - return (i17 >>> 0 > i2 >>> 0 ? i2 : i17) | 0; - } - return 0; -} -function __tr_stored_block(i3, i2, i5, i6) { - i3 = i3 | 0; - i2 = i2 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i1 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i1 = STACKTOP; - i4 = i3 + 5820 | 0; - i7 = HEAP32[i4 >> 2] | 0; - i9 = i6 & 65535; - i6 = i3 + 5816 | 0; - i8 = HEAPU16[i6 >> 1] | 0 | i9 << i7; - HEAP16[i6 >> 1] = i8; - if ((i7 | 0) > 13) { - i11 = i3 + 20 | 0; - i7 = HEAP32[i11 >> 2] | 0; - HEAP32[i11 >> 2] = i7 + 1; - i10 = i3 + 8 | 0; - HEAP8[(HEAP32[i10 >> 2] | 0) + i7 | 0] = i8; - i8 = (HEAPU16[i6 >> 1] | 0) >>> 8 & 255; - i7 = HEAP32[i11 >> 2] | 0; - HEAP32[i11 >> 2] = i7 + 1; - HEAP8[(HEAP32[i10 >> 2] | 0) + i7 | 0] = i8; - i7 = HEAP32[i4 >> 2] | 0; - i8 = i9 >>> (16 - i7 | 0); - HEAP16[i6 >> 1] = i8; - i7 = i7 + -13 | 0; - } else { - i7 = i7 + 3 | 0; - } - i8 = i8 & 255; - HEAP32[i4 >> 2] = i7; - do { - if ((i7 | 0) <= 8) { - i9 = i3 + 20 | 0; - if ((i7 | 0) > 0) { - i7 = HEAP32[i9 >> 2] | 0; - HEAP32[i9 >> 2] = i7 + 1; - i11 = i3 + 8 | 0; - HEAP8[(HEAP32[i11 >> 2] | 0) + i7 | 0] = i8; - i7 = i9; - i8 = i11; - break; - } else { - i7 = i9; - i8 = i3 + 8 | 0; - break; - } - } else { - i7 = i3 + 20 | 0; - i10 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i10 + 1; - i11 = i3 + 8 | 0; - HEAP8[(HEAP32[i11 >> 2] | 0) + i10 | 0] = i8; - i10 = (HEAPU16[i6 >> 1] | 0) >>> 8 & 255; - i8 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i8 + 1; - HEAP8[(HEAP32[i11 >> 2] | 0) + i8 | 0] = i10; - i8 = i11; - } - } while (0); - HEAP16[i6 >> 1] = 0; - HEAP32[i4 >> 2] = 0; - HEAP32[i3 + 5812 >> 2] = 8; - i10 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i10 + 1; - HEAP8[(HEAP32[i8 >> 2] | 0) + i10 | 0] = i5; - i10 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i10 + 1; - HEAP8[(HEAP32[i8 >> 2] | 0) + i10 | 0] = i5 >>> 8; - i10 = i5 & 65535 ^ 65535; - i11 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i11 + 1; - HEAP8[(HEAP32[i8 >> 2] | 0) + i11 | 0] = i10; - i11 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i11 + 1; - HEAP8[(HEAP32[i8 >> 2] | 0) + i11 | 0] = i10 >>> 8; - if ((i5 | 0) == 0) { - STACKTOP = i1; - return; - } - while (1) { - i5 = i5 + -1 | 0; - i10 = HEAP8[i2] | 0; - i11 = HEAP32[i7 >> 2] | 0; - HEAP32[i7 >> 2] = i11 + 1; - HEAP8[(HEAP32[i8 >> 2] | 0) + i11 | 0] = i10; - if ((i5 | 0) == 0) { - break; - } else { - i2 = i2 + 1 | 0; - } - } - STACKTOP = i1; - return; -} -function _inflateInit_(i1, i3, i4) { - i1 = i1 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i2 = STACKTOP; - if ((i3 | 0) == 0) { - i11 = -6; - STACKTOP = i2; - return i11 | 0; - } - if (!((HEAP8[i3] | 0) == 49 & (i4 | 0) == 56)) { - i11 = -6; - STACKTOP = i2; - return i11 | 0; - } - if ((i1 | 0) == 0) { - i11 = -2; - STACKTOP = i2; - return i11 | 0; - } - i3 = i1 + 24 | 0; - HEAP32[i3 >> 2] = 0; - i4 = i1 + 32 | 0; - i6 = HEAP32[i4 >> 2] | 0; - if ((i6 | 0) == 0) { - HEAP32[i4 >> 2] = 1; - HEAP32[i1 + 40 >> 2] = 0; - i6 = 1; - } - i4 = i1 + 36 | 0; - if ((HEAP32[i4 >> 2] | 0) == 0) { - HEAP32[i4 >> 2] = 1; - } - i5 = i1 + 40 | 0; - i8 = FUNCTION_TABLE_iiii[i6 & 1](HEAP32[i5 >> 2] | 0, 1, 7116) | 0; - if ((i8 | 0) == 0) { - i11 = -4; - STACKTOP = i2; - return i11 | 0; - } - i6 = i1 + 28 | 0; - HEAP32[i6 >> 2] = i8; - HEAP32[i8 + 52 >> 2] = 0; - i9 = HEAP32[i6 >> 2] | 0; - do { - if ((i9 | 0) != 0) { - i10 = i9 + 52 | 0; - i11 = HEAP32[i10 >> 2] | 0; - i7 = i9 + 36 | 0; - if ((i11 | 0) != 0) { - if ((HEAP32[i7 >> 2] | 0) == 15) { - i10 = i9; - } else { - FUNCTION_TABLE_vii[HEAP32[i4 >> 2] & 1](HEAP32[i5 >> 2] | 0, i11); - HEAP32[i10 >> 2] = 0; - i10 = HEAP32[i6 >> 2] | 0; - } - HEAP32[i9 + 8 >> 2] = 1; - HEAP32[i7 >> 2] = 15; - if ((i10 | 0) == 0) { - break; - } else { - i9 = i10; - } - } else { - HEAP32[i9 + 8 >> 2] = 1; - HEAP32[i7 >> 2] = 15; - } - HEAP32[i9 + 28 >> 2] = 0; - HEAP32[i1 + 20 >> 2] = 0; - HEAP32[i1 + 8 >> 2] = 0; - HEAP32[i3 >> 2] = 0; - HEAP32[i1 + 48 >> 2] = 1; - HEAP32[i9 >> 2] = 0; - HEAP32[i9 + 4 >> 2] = 0; - HEAP32[i9 + 12 >> 2] = 0; - HEAP32[i9 + 20 >> 2] = 32768; - HEAP32[i9 + 32 >> 2] = 0; - HEAP32[i9 + 40 >> 2] = 0; - HEAP32[i9 + 44 >> 2] = 0; - HEAP32[i9 + 48 >> 2] = 0; - HEAP32[i9 + 56 >> 2] = 0; - HEAP32[i9 + 60 >> 2] = 0; - i11 = i9 + 1328 | 0; - HEAP32[i9 + 108 >> 2] = i11; - HEAP32[i9 + 80 >> 2] = i11; - HEAP32[i9 + 76 >> 2] = i11; - HEAP32[i9 + 7104 >> 2] = 1; - HEAP32[i9 + 7108 >> 2] = -1; - i11 = 0; - STACKTOP = i2; - return i11 | 0; - } - } while (0); - FUNCTION_TABLE_vii[HEAP32[i4 >> 2] & 1](HEAP32[i5 >> 2] | 0, i8); - HEAP32[i6 >> 2] = 0; - i11 = -2; - STACKTOP = i2; - return i11 | 0; -} -function _init_block(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - i3 = 0; - do { - HEAP16[i1 + (i3 << 2) + 148 >> 1] = 0; - i3 = i3 + 1 | 0; - } while ((i3 | 0) != 286); - HEAP16[i1 + 2440 >> 1] = 0; - HEAP16[i1 + 2444 >> 1] = 0; - HEAP16[i1 + 2448 >> 1] = 0; - HEAP16[i1 + 2452 >> 1] = 0; - HEAP16[i1 + 2456 >> 1] = 0; - HEAP16[i1 + 2460 >> 1] = 0; - HEAP16[i1 + 2464 >> 1] = 0; - HEAP16[i1 + 2468 >> 1] = 0; - HEAP16[i1 + 2472 >> 1] = 0; - HEAP16[i1 + 2476 >> 1] = 0; - HEAP16[i1 + 2480 >> 1] = 0; - HEAP16[i1 + 2484 >> 1] = 0; - HEAP16[i1 + 2488 >> 1] = 0; - HEAP16[i1 + 2492 >> 1] = 0; - HEAP16[i1 + 2496 >> 1] = 0; - HEAP16[i1 + 2500 >> 1] = 0; - HEAP16[i1 + 2504 >> 1] = 0; - HEAP16[i1 + 2508 >> 1] = 0; - HEAP16[i1 + 2512 >> 1] = 0; - HEAP16[i1 + 2516 >> 1] = 0; - HEAP16[i1 + 2520 >> 1] = 0; - HEAP16[i1 + 2524 >> 1] = 0; - HEAP16[i1 + 2528 >> 1] = 0; - HEAP16[i1 + 2532 >> 1] = 0; - HEAP16[i1 + 2536 >> 1] = 0; - HEAP16[i1 + 2540 >> 1] = 0; - HEAP16[i1 + 2544 >> 1] = 0; - HEAP16[i1 + 2548 >> 1] = 0; - HEAP16[i1 + 2552 >> 1] = 0; - HEAP16[i1 + 2556 >> 1] = 0; - HEAP16[i1 + 2684 >> 1] = 0; - HEAP16[i1 + 2688 >> 1] = 0; - HEAP16[i1 + 2692 >> 1] = 0; - HEAP16[i1 + 2696 >> 1] = 0; - HEAP16[i1 + 2700 >> 1] = 0; - HEAP16[i1 + 2704 >> 1] = 0; - HEAP16[i1 + 2708 >> 1] = 0; - HEAP16[i1 + 2712 >> 1] = 0; - HEAP16[i1 + 2716 >> 1] = 0; - HEAP16[i1 + 2720 >> 1] = 0; - HEAP16[i1 + 2724 >> 1] = 0; - HEAP16[i1 + 2728 >> 1] = 0; - HEAP16[i1 + 2732 >> 1] = 0; - HEAP16[i1 + 2736 >> 1] = 0; - HEAP16[i1 + 2740 >> 1] = 0; - HEAP16[i1 + 2744 >> 1] = 0; - HEAP16[i1 + 2748 >> 1] = 0; - HEAP16[i1 + 2752 >> 1] = 0; - HEAP16[i1 + 2756 >> 1] = 0; - HEAP16[i1 + 1172 >> 1] = 1; - HEAP32[i1 + 5804 >> 2] = 0; - HEAP32[i1 + 5800 >> 2] = 0; - HEAP32[i1 + 5808 >> 2] = 0; - HEAP32[i1 + 5792 >> 2] = 0; - STACKTOP = i2; - return; -} -function _deflateReset(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0; - i2 = STACKTOP; - if ((i1 | 0) == 0) { - i5 = -2; - STACKTOP = i2; - return i5 | 0; - } - i3 = HEAP32[i1 + 28 >> 2] | 0; - if ((i3 | 0) == 0) { - i5 = -2; - STACKTOP = i2; - return i5 | 0; - } - if ((HEAP32[i1 + 32 >> 2] | 0) == 0) { - i5 = -2; - STACKTOP = i2; - return i5 | 0; - } - if ((HEAP32[i1 + 36 >> 2] | 0) == 0) { - i5 = -2; - STACKTOP = i2; - return i5 | 0; - } - HEAP32[i1 + 20 >> 2] = 0; - HEAP32[i1 + 8 >> 2] = 0; - HEAP32[i1 + 24 >> 2] = 0; - HEAP32[i1 + 44 >> 2] = 2; - HEAP32[i3 + 20 >> 2] = 0; - HEAP32[i3 + 16 >> 2] = HEAP32[i3 + 8 >> 2]; - i4 = i3 + 24 | 0; - i5 = HEAP32[i4 >> 2] | 0; - if ((i5 | 0) < 0) { - i5 = 0 - i5 | 0; - HEAP32[i4 >> 2] = i5; - } - HEAP32[i3 + 4 >> 2] = (i5 | 0) != 0 ? 42 : 113; - if ((i5 | 0) == 2) { - i4 = _crc32(0, 0, 0) | 0; - } else { - i4 = _adler32(0, 0, 0) | 0; - } - HEAP32[i1 + 48 >> 2] = i4; - HEAP32[i3 + 40 >> 2] = 0; - __tr_init(i3); - HEAP32[i3 + 60 >> 2] = HEAP32[i3 + 44 >> 2] << 1; - i5 = HEAP32[i3 + 76 >> 2] | 0; - i4 = HEAP32[i3 + 68 >> 2] | 0; - HEAP16[i4 + (i5 + -1 << 1) >> 1] = 0; - _memset(i4 | 0, 0, (i5 << 1) + -2 | 0) | 0; - i5 = HEAP32[i3 + 132 >> 2] | 0; - HEAP32[i3 + 128 >> 2] = HEAPU16[178 + (i5 * 12 | 0) >> 1] | 0; - HEAP32[i3 + 140 >> 2] = HEAPU16[176 + (i5 * 12 | 0) >> 1] | 0; - HEAP32[i3 + 144 >> 2] = HEAPU16[180 + (i5 * 12 | 0) >> 1] | 0; - HEAP32[i3 + 124 >> 2] = HEAPU16[182 + (i5 * 12 | 0) >> 1] | 0; - HEAP32[i3 + 108 >> 2] = 0; - HEAP32[i3 + 92 >> 2] = 0; - HEAP32[i3 + 116 >> 2] = 0; - HEAP32[i3 + 120 >> 2] = 2; - HEAP32[i3 + 96 >> 2] = 2; - HEAP32[i3 + 112 >> 2] = 0; - HEAP32[i3 + 104 >> 2] = 0; - HEAP32[i3 + 72 >> 2] = 0; - i5 = 0; - STACKTOP = i2; - return i5 | 0; -} -function _updatewindow(i6, i4) { - i6 = i6 | 0; - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0; - i1 = STACKTOP; - i2 = HEAP32[i6 + 28 >> 2] | 0; - i3 = i2 + 52 | 0; - i8 = HEAP32[i3 >> 2] | 0; - if ((i8 | 0) == 0) { - i8 = FUNCTION_TABLE_iiii[HEAP32[i6 + 32 >> 2] & 1](HEAP32[i6 + 40 >> 2] | 0, 1 << HEAP32[i2 + 36 >> 2], 1) | 0; - HEAP32[i3 >> 2] = i8; - if ((i8 | 0) == 0) { - i10 = 1; - STACKTOP = i1; - return i10 | 0; - } - } - i5 = i2 + 40 | 0; - i10 = HEAP32[i5 >> 2] | 0; - if ((i10 | 0) == 0) { - i10 = 1 << HEAP32[i2 + 36 >> 2]; - HEAP32[i5 >> 2] = i10; - HEAP32[i2 + 48 >> 2] = 0; - HEAP32[i2 + 44 >> 2] = 0; - } - i4 = i4 - (HEAP32[i6 + 16 >> 2] | 0) | 0; - if (!(i4 >>> 0 < i10 >>> 0)) { - _memcpy(i8 | 0, (HEAP32[i6 + 12 >> 2] | 0) + (0 - i10) | 0, i10 | 0) | 0; - HEAP32[i2 + 48 >> 2] = 0; - HEAP32[i2 + 44 >> 2] = HEAP32[i5 >> 2]; - i10 = 0; - STACKTOP = i1; - return i10 | 0; - } - i7 = i2 + 48 | 0; - i9 = HEAP32[i7 >> 2] | 0; - i10 = i10 - i9 | 0; - i10 = i10 >>> 0 > i4 >>> 0 ? i4 : i10; - i6 = i6 + 12 | 0; - _memcpy(i8 + i9 | 0, (HEAP32[i6 >> 2] | 0) + (0 - i4) | 0, i10 | 0) | 0; - i8 = i4 - i10 | 0; - if ((i4 | 0) != (i10 | 0)) { - _memcpy(HEAP32[i3 >> 2] | 0, (HEAP32[i6 >> 2] | 0) + (0 - i8) | 0, i8 | 0) | 0; - HEAP32[i7 >> 2] = i8; - HEAP32[i2 + 44 >> 2] = HEAP32[i5 >> 2]; - i10 = 0; - STACKTOP = i1; - return i10 | 0; - } - i6 = (HEAP32[i7 >> 2] | 0) + i4 | 0; - i3 = HEAP32[i5 >> 2] | 0; - HEAP32[i7 >> 2] = (i6 | 0) == (i3 | 0) ? 0 : i6; - i5 = i2 + 44 | 0; - i2 = HEAP32[i5 >> 2] | 0; - if (!(i2 >>> 0 < i3 >>> 0)) { - i10 = 0; - STACKTOP = i1; - return i10 | 0; - } - HEAP32[i5 >> 2] = i2 + i4; - i10 = 0; - STACKTOP = i1; - return i10 | 0; -} -function _scan_tree(i1, i5, i6) { - i1 = i1 | 0; - i5 = i5 | 0; - i6 = i6 | 0; - var i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0; - i8 = STACKTOP; - i10 = HEAP16[i5 + 2 >> 1] | 0; - i9 = i10 << 16 >> 16 == 0; - HEAP16[i5 + (i6 + 1 << 2) + 2 >> 1] = -1; - i2 = i1 + 2752 | 0; - i3 = i1 + 2756 | 0; - i4 = i1 + 2748 | 0; - i7 = i9 ? 138 : 7; - i9 = i9 ? 3 : 4; - i13 = 0; - i11 = i10 & 65535; - i12 = -1; - L1 : while (1) { - i14 = 0; - do { - if ((i13 | 0) > (i6 | 0)) { - break L1; - } - i13 = i13 + 1 | 0; - i16 = HEAP16[i5 + (i13 << 2) + 2 >> 1] | 0; - i10 = i16 & 65535; - i14 = i14 + 1 | 0; - i15 = (i11 | 0) == (i10 | 0); - } while ((i14 | 0) < (i7 | 0) & i15); - do { - if ((i14 | 0) >= (i9 | 0)) { - if ((i11 | 0) == 0) { - if ((i14 | 0) < 11) { - HEAP16[i2 >> 1] = (HEAP16[i2 >> 1] | 0) + 1 << 16 >> 16; - break; - } else { - HEAP16[i3 >> 1] = (HEAP16[i3 >> 1] | 0) + 1 << 16 >> 16; - break; - } - } else { - if ((i11 | 0) != (i12 | 0)) { - i14 = i1 + (i11 << 2) + 2684 | 0; - HEAP16[i14 >> 1] = (HEAP16[i14 >> 1] | 0) + 1 << 16 >> 16; - } - HEAP16[i4 >> 1] = (HEAP16[i4 >> 1] | 0) + 1 << 16 >> 16; - break; - } - } else { - i12 = i1 + (i11 << 2) + 2684 | 0; - HEAP16[i12 >> 1] = (HEAPU16[i12 >> 1] | 0) + i14; - } - } while (0); - if (i16 << 16 >> 16 == 0) { - i12 = i11; - i7 = 138; - i9 = 3; - i11 = i10; - continue; - } - i12 = i11; - i7 = i15 ? 6 : 7; - i9 = i15 ? 3 : 4; - i11 = i10; - } - STACKTOP = i8; - return; -} -function _deflateEnd(i4) { - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0; - i3 = STACKTOP; - if ((i4 | 0) == 0) { - i7 = -2; - STACKTOP = i3; - return i7 | 0; - } - i1 = i4 + 28 | 0; - i6 = HEAP32[i1 >> 2] | 0; - if ((i6 | 0) == 0) { - i7 = -2; - STACKTOP = i3; - return i7 | 0; - } - i2 = HEAP32[i6 + 4 >> 2] | 0; - switch (i2 | 0) { - case 42: - case 69: - case 73: - case 91: - case 103: - case 113: - case 666: - { - break; - } - default: - { - i7 = -2; - STACKTOP = i3; - return i7 | 0; - } - } - i5 = HEAP32[i6 + 8 >> 2] | 0; - if ((i5 | 0) != 0) { - FUNCTION_TABLE_vii[HEAP32[i4 + 36 >> 2] & 1](HEAP32[i4 + 40 >> 2] | 0, i5); - i6 = HEAP32[i1 >> 2] | 0; - } - i5 = HEAP32[i6 + 68 >> 2] | 0; - if ((i5 | 0) != 0) { - FUNCTION_TABLE_vii[HEAP32[i4 + 36 >> 2] & 1](HEAP32[i4 + 40 >> 2] | 0, i5); - i6 = HEAP32[i1 >> 2] | 0; - } - i5 = HEAP32[i6 + 64 >> 2] | 0; - if ((i5 | 0) != 0) { - FUNCTION_TABLE_vii[HEAP32[i4 + 36 >> 2] & 1](HEAP32[i4 + 40 >> 2] | 0, i5); - i6 = HEAP32[i1 >> 2] | 0; - } - i7 = HEAP32[i6 + 56 >> 2] | 0; - i5 = i4 + 36 | 0; - if ((i7 | 0) == 0) { - i4 = i4 + 40 | 0; - } else { - i4 = i4 + 40 | 0; - FUNCTION_TABLE_vii[HEAP32[i5 >> 2] & 1](HEAP32[i4 >> 2] | 0, i7); - i6 = HEAP32[i1 >> 2] | 0; - } - FUNCTION_TABLE_vii[HEAP32[i5 >> 2] & 1](HEAP32[i4 >> 2] | 0, i6); - HEAP32[i1 >> 2] = 0; - i7 = (i2 | 0) == 113 ? -3 : 0; - STACKTOP = i3; - return i7 | 0; -} -function _main(i4, i5) { - i4 = i4 | 0; - i5 = i5 | 0; - var i1 = 0, i2 = 0, i3 = 0, i6 = 0; - i1 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i2 = i1; - L1 : do { - if ((i4 | 0) > 1) { - i4 = HEAP8[HEAP32[i5 + 4 >> 2] | 0] | 0; - switch (i4 | 0) { - case 50: - { - i2 = 250; - break L1; - } - case 51: - { - i3 = 4; - break L1; - } - case 52: - { - i2 = 2500; - break L1; - } - case 53: - { - i2 = 5e3; - break L1; - } - case 48: - { - i6 = 0; - STACKTOP = i1; - return i6 | 0; - } - case 49: - { - i2 = 60; - break L1; - } - default: - { - HEAP32[i2 >> 2] = i4 + -48; - _printf(144, i2 | 0) | 0; - i6 = -1; - STACKTOP = i1; - return i6 | 0; - } - } - } else { - i3 = 4; - } - } while (0); - if ((i3 | 0) == 4) { - i2 = 500; - } - i3 = _malloc(1e5) | 0; - i4 = 0; - i6 = 0; - i5 = 17; - while (1) { - do { - if ((i6 | 0) <= 0) { - if ((i4 & 7 | 0) == 0) { - i6 = i4 & 31; - i5 = 0; - break; - } else { - i5 = (((Math_imul(i4, i4) | 0) >>> 0) % 6714 | 0) & 255; - break; - } - } else { - i6 = i6 + -1 | 0; - } - } while (0); - HEAP8[i3 + i4 | 0] = i5; - i4 = i4 + 1 | 0; - if ((i4 | 0) == 1e5) { - i4 = 0; - break; - } - } - do { - _doit(i3, 1e5, i4); - i4 = i4 + 1 | 0; - } while ((i4 | 0) < (i2 | 0)); - _puts(160) | 0; - i6 = 0; - STACKTOP = i1; - return i6 | 0; -} -function _doit(i6, i1, i7) { - i6 = i6 | 0; - i1 = i1 | 0; - i7 = i7 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0; - i5 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i5; - i3 = i5 + 12 | 0; - i2 = i5 + 8 | 0; - i8 = _compressBound(i1) | 0; - i9 = HEAP32[2] | 0; - if ((i9 | 0) == 0) { - i9 = _malloc(i8) | 0; - HEAP32[2] = i9; - } - if ((HEAP32[4] | 0) == 0) { - HEAP32[4] = _malloc(i1) | 0; - } - HEAP32[i3 >> 2] = i8; - _compress(i9, i3, i6, i1) | 0; - i7 = (i7 | 0) == 0; - if (i7) { - i9 = HEAP32[i3 >> 2] | 0; - HEAP32[i4 >> 2] = i1; - HEAP32[i4 + 4 >> 2] = i9; - _printf(24, i4 | 0) | 0; - } - HEAP32[i2 >> 2] = i1; - _uncompress(HEAP32[4] | 0, i2, HEAP32[2] | 0, HEAP32[i3 >> 2] | 0) | 0; - if ((HEAP32[i2 >> 2] | 0) != (i1 | 0)) { - ___assert_fail(40, 72, 24, 104); - } - if (!i7) { - STACKTOP = i5; - return; - } - if ((_strcmp(i6, HEAP32[4] | 0) | 0) == 0) { - STACKTOP = i5; - return; - } else { - ___assert_fail(112, 72, 25, 104); - } -} -function _uncompress(i6, i1, i5, i7) { - i6 = i6 | 0; - i1 = i1 | 0; - i5 = i5 | 0; - i7 = i7 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i3 = i2; - HEAP32[i3 >> 2] = i5; - i5 = i3 + 4 | 0; - HEAP32[i5 >> 2] = i7; - HEAP32[i3 + 12 >> 2] = i6; - HEAP32[i3 + 16 >> 2] = HEAP32[i1 >> 2]; - HEAP32[i3 + 32 >> 2] = 0; - HEAP32[i3 + 36 >> 2] = 0; - i6 = _inflateInit_(i3, 2992, 56) | 0; - if ((i6 | 0) != 0) { - i7 = i6; - STACKTOP = i2; - return i7 | 0; - } - i6 = _inflate(i3, 4) | 0; - if ((i6 | 0) == 1) { - HEAP32[i1 >> 2] = HEAP32[i3 + 20 >> 2]; - i7 = _inflateEnd(i3) | 0; - STACKTOP = i2; - return i7 | 0; - } - _inflateEnd(i3) | 0; - if ((i6 | 0) == 2) { - i7 = -3; - STACKTOP = i2; - return i7 | 0; - } else if ((i6 | 0) == -5) { - i4 = 4; - } - if ((i4 | 0) == 4 ? (HEAP32[i5 >> 2] | 0) == 0 : 0) { - i7 = -3; - STACKTOP = i2; - return i7 | 0; - } - i7 = i6; - STACKTOP = i2; - return i7 | 0; -} -function _compress(i4, i1, i6, i5) { - i4 = i4 | 0; - i1 = i1 | 0; - i6 = i6 | 0; - i5 = i5 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 64 | 0; - i3 = i2; - HEAP32[i3 >> 2] = i6; - HEAP32[i3 + 4 >> 2] = i5; - HEAP32[i3 + 12 >> 2] = i4; - HEAP32[i3 + 16 >> 2] = HEAP32[i1 >> 2]; - HEAP32[i3 + 32 >> 2] = 0; - HEAP32[i3 + 36 >> 2] = 0; - HEAP32[i3 + 40 >> 2] = 0; - i4 = _deflateInit_(i3, -1, 168, 56) | 0; - if ((i4 | 0) != 0) { - i6 = i4; - STACKTOP = i2; - return i6 | 0; - } - i4 = _deflate(i3, 4) | 0; - if ((i4 | 0) == 1) { - HEAP32[i1 >> 2] = HEAP32[i3 + 20 >> 2]; - i6 = _deflateEnd(i3) | 0; - STACKTOP = i2; - return i6 | 0; - } else { - _deflateEnd(i3) | 0; - i6 = (i4 | 0) == 0 ? -5 : i4; - STACKTOP = i2; - return i6 | 0; - } - return 0; -} -function _inflateEnd(i4) { - i4 = i4 | 0; - var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0; - i1 = STACKTOP; - if ((i4 | 0) == 0) { - i7 = -2; - STACKTOP = i1; - return i7 | 0; - } - i2 = i4 + 28 | 0; - i3 = HEAP32[i2 >> 2] | 0; - if ((i3 | 0) == 0) { - i7 = -2; - STACKTOP = i1; - return i7 | 0; - } - i6 = i4 + 36 | 0; - i5 = HEAP32[i6 >> 2] | 0; - if ((i5 | 0) == 0) { - i7 = -2; - STACKTOP = i1; - return i7 | 0; - } - i7 = HEAP32[i3 + 52 >> 2] | 0; - i4 = i4 + 40 | 0; - if ((i7 | 0) != 0) { - FUNCTION_TABLE_vii[i5 & 1](HEAP32[i4 >> 2] | 0, i7); - i5 = HEAP32[i6 >> 2] | 0; - i3 = HEAP32[i2 >> 2] | 0; - } - FUNCTION_TABLE_vii[i5 & 1](HEAP32[i4 >> 2] | 0, i3); - HEAP32[i2 >> 2] = 0; - i7 = 0; - STACKTOP = i1; - return i7 | 0; -} -function _memcpy(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i4 = 0; - if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0; - i4 = i3 | 0; - if ((i3 & 3) == (i2 & 3)) { - while (i3 & 3) { - if ((i1 | 0) == 0) return i4 | 0; - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - while ((i1 | 0) >= 4) { - HEAP32[i3 >> 2] = HEAP32[i2 >> 2]; - i3 = i3 + 4 | 0; - i2 = i2 + 4 | 0; - i1 = i1 - 4 | 0; - } - } - while ((i1 | 0) > 0) { - HEAP8[i3] = HEAP8[i2] | 0; - i3 = i3 + 1 | 0; - i2 = i2 + 1 | 0; - i1 = i1 - 1 | 0; - } - return i4 | 0; -} -function _strcmp(i4, i2) { - i4 = i4 | 0; - i2 = i2 | 0; - var i1 = 0, i3 = 0, i5 = 0; - i1 = STACKTOP; - i5 = HEAP8[i4] | 0; - i3 = HEAP8[i2] | 0; - if (i5 << 24 >> 24 != i3 << 24 >> 24 | i5 << 24 >> 24 == 0 | i3 << 24 >> 24 == 0) { - i4 = i5; - i5 = i3; - i4 = i4 & 255; - i5 = i5 & 255; - i5 = i4 - i5 | 0; - STACKTOP = i1; - return i5 | 0; - } - do { - i4 = i4 + 1 | 0; - i2 = i2 + 1 | 0; - i5 = HEAP8[i4] | 0; - i3 = HEAP8[i2] | 0; - } while (!(i5 << 24 >> 24 != i3 << 24 >> 24 | i5 << 24 >> 24 == 0 | i3 << 24 >> 24 == 0)); - i4 = i5 & 255; - i5 = i3 & 255; - i5 = i4 - i5 | 0; - STACKTOP = i1; - return i5 | 0; -} -function _memset(i1, i4, i3) { - i1 = i1 | 0; - i4 = i4 | 0; - i3 = i3 | 0; - var i2 = 0, i5 = 0, i6 = 0, i7 = 0; - i2 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i4 = i4 & 255; - i7 = i1 & 3; - i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24; - i5 = i2 & ~3; - if (i7) { - i7 = i1 + 4 - i7 | 0; - while ((i1 | 0) < (i7 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i5 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i2 | 0)) { - HEAP8[i1] = i4; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; - HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0]; - HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0]; - HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0]; - HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0]; -} -function __tr_init(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - HEAP32[i1 + 2840 >> 2] = i1 + 148; - HEAP32[i1 + 2848 >> 2] = 1064; - HEAP32[i1 + 2852 >> 2] = i1 + 2440; - HEAP32[i1 + 2860 >> 2] = 1088; - HEAP32[i1 + 2864 >> 2] = i1 + 2684; - HEAP32[i1 + 2872 >> 2] = 1112; - HEAP16[i1 + 5816 >> 1] = 0; - HEAP32[i1 + 5820 >> 2] = 0; - HEAP32[i1 + 5812 >> 2] = 8; - _init_block(i1); - STACKTOP = i2; - return; -} -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr] = HEAP8[i1]; - HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0]; - HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0]; - HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0]; -} -function _deflateInit_(i4, i3, i2, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - var i5 = 0; - i5 = STACKTOP; - i4 = _deflateInit2_(i4, i3, 8, 15, 8, 0, i2, i1) | 0; - STACKTOP = i5; - return i4 | 0; -} -function _zcalloc(i3, i1, i2) { - i3 = i3 | 0; - i1 = i1 | 0; - i2 = i2 | 0; - var i4 = 0; - i4 = STACKTOP; - i3 = _malloc(Math_imul(i2, i1) | 0) | 0; - STACKTOP = i4; - return i3 | 0; -} -function dynCall_iiii(i4, i3, i2, i1) { - i4 = i4 | 0; - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_iiii[i4 & 1](i3 | 0, i2 | 0, i1 | 0) | 0; -} -function runPostSets() {} -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = i1; - while (HEAP8[i2] | 0) { - i2 = i2 + 1 | 0; - } - return i2 - i1 | 0; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 7 & -8; - return i2 | 0; -} -function dynCall_iii(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - return FUNCTION_TABLE_iii[i3 & 3](i2 | 0, i1 | 0) | 0; -} -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if ((__THREW__ | 0) == 0) { - __THREW__ = i1; - threwValue = i2; - } -} -function dynCall_vii(i3, i2, i1) { - i3 = i3 | 0; - i2 = i2 | 0; - i1 = i1 | 0; - FUNCTION_TABLE_vii[i3 & 1](i2 | 0, i1 | 0); -} -function _zcfree(i2, i1) { - i2 = i2 | 0; - i1 = i1 | 0; - i2 = STACKTOP; - _free(i1); - STACKTOP = i2; - return; -} -function _compressBound(i1) { - i1 = i1 | 0; - return i1 + 13 + (i1 >>> 12) + (i1 >>> 14) + (i1 >>> 25) | 0; -} -function b0(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - abort(0); - return 0; -} -function b2(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - abort(2); - return 0; -} -function b1(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - abort(1); -} -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} -function setTempRet9(i1) { - i1 = i1 | 0; - tempRet9 = i1; -} -function setTempRet8(i1) { - i1 = i1 | 0; - tempRet8 = i1; -} -function setTempRet7(i1) { - i1 = i1 | 0; - tempRet7 = i1; -} -function setTempRet6(i1) { - i1 = i1 | 0; - tempRet6 = i1; -} -function setTempRet5(i1) { - i1 = i1 | 0; - tempRet5 = i1; -} -function setTempRet4(i1) { - i1 = i1 | 0; - tempRet4 = i1; -} -function setTempRet3(i1) { - i1 = i1 | 0; - tempRet3 = i1; -} -function setTempRet2(i1) { - i1 = i1 | 0; - tempRet2 = i1; -} -function setTempRet1(i1) { - i1 = i1 | 0; - tempRet1 = i1; -} -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} -function stackSave() { - return STACKTOP | 0; -} - -// EMSCRIPTEN_END_FUNCS - var FUNCTION_TABLE_iiii = [b0,_zcalloc]; - var FUNCTION_TABLE_vii = [b1,_zcfree]; - var FUNCTION_TABLE_iii = [b2,_deflate_stored,_deflate_fast,_deflate_slow]; - - return { _strlen: _strlen, _free: _free, _main: _main, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9, dynCall_iiii: dynCall_iiii, dynCall_vii: dynCall_vii, dynCall_iii: dynCall_iii }; -}) -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "invoke_iiii": invoke_iiii, "invoke_vii": invoke_vii, "invoke_iii": invoke_iii, "_send": _send, "___setErrNo": ___setErrNo, "___assert_fail": ___assert_fail, "_fflush": _fflush, "_pwrite": _pwrite, "__reallyNegative": __reallyNegative, "_sbrk": _sbrk, "___errno_location": ___errno_location, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_fileno": _fileno, "_sysconf": _sysconf, "_puts": _puts, "_mkport": _mkport, "_write": _write, "_llvm_bswap_i32": _llvm_bswap_i32, "_fputc": _fputc, "_abort": _abort, "_fwrite": _fwrite, "_time": _time, "_fprintf": _fprintf, "__formatString": __formatString, "_fputs": _fputs, "_printf": _printf, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity }, buffer); -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _free = Module["_free"] = asm["_free"]; -var _main = Module["_main"] = asm["_main"]; -var _memset = Module["_memset"] = asm["_memset"]; -var _malloc = Module["_malloc"] = asm["_malloc"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; -var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"]; -var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"]; -var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included -var i64Math = null; - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - var data = Module['readBinary'](memoryInitializer); - HEAPU8.set(data, STATIC_BASE); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - HEAPU8.set(data, STATIC_BASE); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run([].concat(Module["arguments"])); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - 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("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; - - throw 'abort() at ' + stackTrace() + extra; -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - - -run([].concat(Module["arguments"])); diff --git a/implementation-contributed/v8/mjsunit/asm/float32array-negative-offset.js b/implementation-contributed/v8/mjsunit/asm/float32array-negative-offset.js deleted file mode 100644 index 2f753bea8fb..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/float32array-negative-offset.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - - -var m = (function Module(stdlib, foreign, heap) { - "use asm"; - var MEM32 = new stdlib.Float32Array(heap); - function load(i) { - i = i|0; - return +MEM32[i >> 2]; - } - function store(i, v) { - i = i|0; - v = +v; - MEM32[i >> 2] = v; - } - function load8(i) { - i = i|0; - return +MEM32[i + 8 >> 2]; - } - function store8(i, v) { - i = i|0; - v = +v; - MEM32[i + 8 >> 2] = v; - } - return { load: load, store: store, load8: load8, store8: store8 }; -})(stdlib, foreign, buffer); - -assertEquals(NaN, m.load(-8)); -assertEquals(NaN, m.load8(-16)); -m.store(0, 42.0); -assertEquals(42.0, m.load8(-8)); -m.store8(-8, 99.0); -assertEquals(99.0, m.load(0)); -assertEquals(99.0, m.load8(-8)); diff --git a/implementation-contributed/v8/mjsunit/asm/float32array-outofbounds.js b/implementation-contributed/v8/mjsunit/asm/float32array-outofbounds.js deleted file mode 100644 index e4062160e62..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/float32array-outofbounds.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM32 = new stdlib.Float32Array(heap); - function load(i) { - i = i|0; - return +MEM32[i >> 2]; - } - function store(i, v) { - i = i|0; - v = +v; - MEM32[i >> 2] = v; - } - return { load: load, store: store }; -} - -var m = Module(this, {}, new ArrayBuffer(4)); - -m.store(0, 42.0); -for (var i = 1; i < 64; ++i) { - m.store(i * 4 * 32 * 1024, i); -} -assertEquals(42.0, m.load(0)); -for (var i = 1; i < 64; ++i) { - assertEquals(NaN, m.load(i * 4 * 32 * 1024)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/float32array-store-div.js b/implementation-contributed/v8/mjsunit/asm/float32array-store-div.js deleted file mode 100644 index 45f3fd5f213..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/float32array-store-div.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM32 = new stdlib.Float32Array(heap); - function foo(i) { - i = i | 0; - MEM32[0] = +(i >>> 0) / 2.; - return +MEM32[0]; - } - return { foo: foo }; -} - -var foo = Module(this, {}, new ArrayBuffer(64 * 1024)).foo; -assertEquals(0.5, foo(1)); diff --git a/implementation-contributed/v8/mjsunit/asm/float64array-negative-offset.js b/implementation-contributed/v8/mjsunit/asm/float64array-negative-offset.js deleted file mode 100644 index 76be0ced014..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/float64array-negative-offset.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - - -var m = (function Module(stdlib, foreign, heap) { - "use asm"; - var MEM64 = new stdlib.Float64Array(heap); - function load(i) { - i = i|0; - return +MEM64[i >> 3]; - } - function store(i, v) { - i = i|0; - v = +v; - MEM64[i >> 3] = v; - } - function load8(i) { - i = i|0; - return +MEM64[i + 8 >> 3]; - } - function store8(i, v) { - i = i|0; - v = +v; - MEM64[i + 8 >> 3] = v; - } - return { load: load, store: store, load8: load8, store8: store8 }; -})(stdlib, foreign, buffer); - -assertEquals(NaN, m.load(-8)); -assertEquals(NaN, m.load8(-16)); -m.store(0, 42.0); -assertEquals(42.0, m.load8(-8)); -m.store8(-8, 99.0); -assertEquals(99.0, m.load(0)); -assertEquals(99.0, m.load8(-8)); diff --git a/implementation-contributed/v8/mjsunit/asm/float64array-outofbounds.js b/implementation-contributed/v8/mjsunit/asm/float64array-outofbounds.js deleted file mode 100644 index 049421c596e..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/float64array-outofbounds.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM64 = new stdlib.Float64Array(heap); - function load(i) { - i = i|0; - return +MEM64[i >> 3]; - } - function store(i, v) { - i = i|0; - v = +v; - MEM64[i >> 3] = v; - } - return { load: load, store: store }; -} - -var m = Module(this, {}, new ArrayBuffer(8)); - -m.store(0, 3.12); -for (var i = 1; i < 64; ++i) { - m.store(i * 8 * 32 * 1024, i); -} -assertEquals(3.12, m.load(0)); -for (var i = 1; i < 64; ++i) { - assertEquals(NaN, m.load(i * 8 * 32 * 1024)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/float64array-store-div.js b/implementation-contributed/v8/mjsunit/asm/float64array-store-div.js deleted file mode 100644 index 0af2ffc28ad..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/float64array-store-div.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM64 = new stdlib.Float64Array(heap); - function foo(i) { - i = i | 0; - MEM64[0] = +(i >>> 0) / 2.; - return +MEM64[0]; - } - return { foo: foo }; -} - -var foo = Module(this, {}, new ArrayBuffer(64 * 1024)).foo; -assertEquals(0.5, foo(1)); diff --git a/implementation-contributed/v8/mjsunit/asm/float64mul.js b/implementation-contributed/v8/mjsunit/asm/float64mul.js deleted file mode 100644 index 366f784c2e6..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/float64mul.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - function f1(i) { - i = +i; - return +(i * -1); - } - function f2(i) { - i = +i; - return +(-1. * i); - } - function f3(i) { - i = +i; - return +(-i); - } - return { f1: f1, f2: f2, f3: f3 }; -} - -var m = Module(this, {}, new ArrayBuffer(64 * 1024)); - -assertEquals(NaN, m.f1(NaN)); -assertEquals(NaN, m.f2(NaN)); -assertEquals(NaN, m.f3(NaN)); -assertEquals(Infinity, 1 / m.f1(-0)); -assertEquals(Infinity, 1 / m.f2(-0)); -assertEquals(Infinity, 1 / m.f3(-0)); -assertEquals(Infinity, m.f1(-Infinity)); -assertEquals(Infinity, m.f2(-Infinity)); -assertEquals(Infinity, m.f3(-Infinity)); -assertEquals(-Infinity, 1 / m.f1(0)); -assertEquals(-Infinity, 1 / m.f2(0)); -assertEquals(-Infinity, 1 / m.f3(0)); -assertEquals(-Infinity, m.f1(Infinity)); -assertEquals(-Infinity, m.f2(Infinity)); -assertEquals(-Infinity, m.f3(Infinity)); -for (var i = -2147483648; i < 2147483648; i += 3999777) { - assertEquals(-i, m.f1(i)); - assertEquals(-i, m.f2(i)); - assertEquals(-i, m.f3(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/global-imports.js b/implementation-contributed/v8/mjsunit/asm/global-imports.js deleted file mode 100644 index 5214d3a2a17..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/global-imports.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --validate-asm - -function MODULE_TEMPLATE(stdlib, foreign, buffer) { - "use asm"; - var fround = stdlib.Math.fround; - IMPORT; - function f(int, flt, dbl) { - int = int | 0; - flt = fround(flt); - dbl = +dbl; - return EXPRESSION; - } - return { f:f }; -} - -var throws = {}; -var test_count = 0; -const stdlib = this; -const buffer = new ArrayBuffer(1024); -function p(x) { return x * x; } - -function assertThrowsOrEquals(result, fun) { - if (result === throws) { - assertThrows(fun, TypeError); - } else { - assertEquals(result, fun(1, 2.3, 4.2)); - } -} - -function RunAsmJsTest(asm_source, imports, result, valid) { - var nonasm_source = asm_source.replace(new RegExp("use asm"), ""); - - var js_module = eval("(" + nonasm_source + ")") - var js_instance = js_module(stdlib, imports, buffer); - assertThrowsOrEquals(result, js_instance.f); - - var asm_module = eval("(" + asm_source + ")"); - var asm_instance = asm_module(stdlib, imports, buffer); - assertEquals(valid, %IsAsmWasmCode(asm_module)); - assertThrowsOrEquals(result, asm_instance.f); -} - -function Run(imp, exp, imports, result, valid) { - var name = "test" + (++test_count); - var src = MODULE_TEMPLATE.toString(); - src = src.replace("IMPORT", imp); - src = src.replace("EXPRESSION", exp); - src = src.replace("MODULE_TEMPLATE", name); - RunAsmJsTest(src, imports, result, valid); -} - -// Imports of values from foreign. -Run("var x = foreign.x | 0", "(x + int) | 0", {x:12}, 13, true); -Run("var x = foreign.x | 0", "(x = int) | 0", {x:12}, 1, true); -Run("var x = foreign.x | 0", "+(x + dbl)", {x:12}, 16.2, false); -Run("var x = +foreign.x", "+(x + dbl)", {x:1.2}, 5.4, true); -Run("var x = +foreign.x", "+(x = dbl)", {x:1.2}, 4.2, true); -Run("var x = +foreign.x", "(x + int) | 0", {x:1.2}, 2, false); -Run("const x = foreign.x | 0", "(x + int) | 0", {x:12}, 13, true); -Run("const x = foreign.x | 0", "(x = int) | 0", {x:12}, throws, false); -Run("const x = foreign.x | 0", "+(x + dbl)", {x:12}, 16.2, false); -Run("const x = +foreign.x", "+(x + dbl)", {x:1.2}, 5.4, true); -Run("const x = +foreign.x", "+(x = dbl)", {x:1.2}, throws, false); -Run("const x = +foreign.x", "(x + int) | 0", {x:1.2}, 2, false); - -// Imports of functions and values from stdlib and foreign. -Run("var x = foreign.x", "x(dbl) | 0", { x:p }, 17, true); -Run("var x = foreign.x", "(x = fround, x(dbl)) | 0", { x:p }, 4, false); -Run("var x = stdlib.Math.E", "(x = 3.1415, 1) | 0", {}, 1, false); -Run("var x = stdlib.Math.imul", "(x = fround, 1) | 0", {}, 1, false); - -// Imports missing or causing side-effects during lookup. -Run("var x = +foreign.x", "+x", { no_x_present:0 }, NaN, true); -Run("var x = +foreign.x", "+x", { get x() { return 23 } }, 23, false); -Run("var x = +foreign.x", "+x", new Proxy({ x:42 }, {}), 42, false); -Run("var x = +foreign.x", "+x", { x : { valueOf : () => 65 } }, 65, false); diff --git a/implementation-contributed/v8/mjsunit/asm/if-cloning.js b/implementation-contributed/v8/mjsunit/asm/if-cloning.js deleted file mode 100644 index cd9ab9634da..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/if-cloning.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var if0 = (function Module() { - "use asm"; - function if0(i, j) { - i = i|0; - j = j|0; - if ((i | 0) == 0 ? (j | 0) == 0 : 0) return 1; - return 0; - } - return {if0: if0}; -})().if0; -assertEquals(1, if0(0, 0)); -assertEquals(0, if0(11, 0)); -assertEquals(0, if0(0, -1)); -assertEquals(0, if0(-1024, 1)); - - -var if1 = (function Module() { - "use asm"; - function if1(i, j) { - i = i|0; - j = j|0; - if ((i | 0) == 0 ? (j | 0) == 0 : 1) return 0; - return 1; - } - return {if1: if1}; -})().if1; -assertEquals(0, if1(0, 0)); -assertEquals(0, if1(11, 0)); -assertEquals(1, if1(0, -1)); -assertEquals(0, if1(-1024, 9)); diff --git a/implementation-contributed/v8/mjsunit/asm/if-folding.js b/implementation-contributed/v8/mjsunit/asm/if-folding.js deleted file mode 100644 index e0017e2d128..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/if-folding.js +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module() { - "use asm"; - - function if0() { - if (0) return 11; - return 12; - } - - function if1() { - if (1) return 13; - return 14; - } - - function if2() { - if (0) return 15; - else return 16; - return 0; // needed for validation - } - - function if3() { - if (1) return 17; - else return 18; - return 0; // needed for validation - } - - function if4() { - return (1 ? 19 : 20) | 0; - } - - function if5() { - return (0 ? 21 : 22) | 0; - } - - function if6() { - var x = 0; - x = 0 ? 23 : 24; - return x | 0; - } - - function if7() { - var x = 0; - if (0) { - x = 0 ? 25 : 26; - } else { - x = 0 ? 27 : 28; - } - return x | 0; - } - - function if8() { - var x = 0; - if (0) { - if (0) { - x = 0 ? 29 : 30; - } else { - x = 0 ? 31 : 32; - } - } else { - if (0) { - x = 0 ? 33 : 34; - } else { - x = 0 ? 35 : 36; - } - } - return x | 0; - } - - return {if0: if0, if1: if1, if2: if2, if3: if3, if4: if4, if5: if5, if6: if6, if7: if7, if8: if8 }; -} - -var m = Module(); -assertEquals(12, m.if0()); -assertEquals(13, m.if1()); -assertEquals(16, m.if2()); -assertEquals(17, m.if3()); -assertEquals(19, m.if4()); -assertEquals(22, m.if5()); -assertEquals(24, m.if6()); -assertEquals(28, m.if7()); -assertEquals(36, m.if8()); - - -function Spec0(stdlib, foreign, heap) { - "use asm"; - - var xx = foreign.a | 0; - var yy = foreign.b | 0; - var zz = foreign.c | 0; - - function f() { - var x = 0; - if (xx) { - if (yy) { - x = zz ? 29 : 30; - } else { - x = zz ? 31 : 32; - } - } else { - if (yy) { - x = zz ? 33 : 34; - } else { - x = zz ? 35 : 36; - } - } - return x | 0; - } - return {f: f}; -} -var Spec = (a, b, c) => Spec0(this, {a: a, b: b, c: c}); - -assertEquals(36, Spec(0,0,0).f()); -assertEquals(35, Spec(0,0,1).f()); -assertEquals(34, Spec(0,1,0).f()); -assertEquals(33, Spec(0,1,1).f()); -assertEquals(32, Spec(1,0,0).f()); -assertEquals(31, Spec(1,0,1).f()); -assertEquals(30, Spec(1,1,0).f()); -assertEquals(29, Spec(1,1,1).f()); diff --git a/implementation-contributed/v8/mjsunit/asm/if-reduction.js b/implementation-contributed/v8/mjsunit/asm/if-reduction.js deleted file mode 100644 index 420d9d38ec1..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/if-reduction.js +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module() { - "use asm"; - - function if0() { - var x = 0; - x = 0 ? 11 : 12; - return ((x | 0) == 11) | 0; - } - - function if1() { - var x = 0; - x = 1 ? 13 : 14; - return ((x | 0) == 13) | 0; - } - - function if2() { - var x = 0; - x = 0 ? 15 : 16; - return ((x | 0) != 15) | 0; - } - - function if3() { - var x = 0; - x = 1 ? 17 : 18; - return ((x | 0) != 17) | 0; - } - - function if4() { - var x = 0; - var y = 0; - x = 0 ? 19 : 20; - y = ((x | 0) == 19) ? 21 : 22; - return y | 0; - } - - function if5() { - var x = 0; - var y = 0; - x = 1 ? 23 : 24; - y = ((x | 0) == 23) ? 25 : 26; - return y | 0; - } - - function if6() { - var x = 0; - var y = 0; - var z = 0; - x = 0 ? 27 : 28; - y = ((x | 0) == 27) ? 29 : 30; - z = ((y | 0) == 29) ? 31 : 32; - return z | 0; - } - - function if7() { - var x = 0; - var y = 0; - var z = 0; - var w = 0; - x = 1 ? 33 : 34; - y = ((x | 0) == 33) ? 35 : 36; - z = ((y | 0) == 35) ? 37 : 38; - w = ((z | 0) == 37) ? 39 : 40; - return w | 0; - } - - function if8() { - var w = 0; - var x = 0; - var y = 0; - var z = 0; - if (0) { - x = 0 ? 43 : 44; - y = ((x | 0) == 43) ? 45 : 46; - z = ((y | 0) == 45) ? 47 : 48; - w = ((z | 0) == 47) ? 49 : 50; - } else { - x = 1 ? 53 : 54; - y = ((x | 0) == 53) ? 55 : 56; - z = ((y | 0) == 55) ? 57 : 58; - w = ((z | 0) == 57) ? 59 : 60; - } - return w | 0; - } - - return {if0: if0, if1: if1, if2: if2, if3: if3, if4: if4, if5: if5, if6: if6, if7: if7, if8: if8 }; -} - -var m = Module(); -assertEquals(0, m.if0()); -assertEquals(1, m.if1()); -assertEquals(1, m.if2()); -assertEquals(0, m.if3()); -assertEquals(22, m.if4()); -assertEquals(25, m.if5()); -assertEquals(32, m.if6()); -assertEquals(39, m.if7()); -assertEquals(59, m.if8()); - - -function Spec0(stdlib, foreign, heap) { - "use asm"; - - var xx = foreign.a | 0; - var yy = foreign.b | 0; - - function f() { - var x = 0; - var y = 0; - var z = 0; - var w = 0; - if (xx) { - x = yy ? 43 : 44; - y = ((x | 0) == 43) ? 45 : 46; - z = ((y | 0) == 45) ? 47 : 48; - w = ((z | 0) == 47) ? 49 : 50; - } else { - x = yy ? 53 : 54; - y = ((x | 0) == 53) ? 55 : 56; - z = ((y | 0) == 55) ? 57 : 58; - w = ((z | 0) == 57) ? 59 : 60; - } - return w | 0; - } - return {f: f}; -} -var Spec = (a, b, c) => Spec0(this, {a: a, b: b, c: c}); - -assertEquals(60, Spec(0,0).f()); -assertEquals(59, Spec(0,1).f()); -assertEquals(50, Spec(1,0).f()); -assertEquals(49, Spec(1,1).f()); diff --git a/implementation-contributed/v8/mjsunit/asm/if-tonumber.js b/implementation-contributed/v8/mjsunit/asm/if-tonumber.js deleted file mode 100644 index f604fbcef8b..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/if-tonumber.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - -function Module(stdlib, foreign, heap) { - "use asm"; - function foo(i) { - i = i|0; - if ((i | 0) > 0) { - i = (i | 0) == 1; - } else { - i = 1; - } - return i & 1|0; - } - return { foo: foo }; -} - -var m = Module(stdlib, foreign, buffer); - -assertEquals(1, m.foo(-1)); -assertEquals(1, m.foo(-0)); -assertEquals(1, m.foo(0)); -assertEquals(1, m.foo(1)); -assertEquals(0, m.foo(2)); -assertEquals(1, m.foo(true)); -assertEquals(1, m.foo(false)); diff --git a/implementation-contributed/v8/mjsunit/asm/immutable.js b/implementation-contributed/v8/mjsunit/asm/immutable.js deleted file mode 100644 index 29c15cc7d9d..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/immutable.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function FailImmutableFunction() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - if (a) { - a = f((a - 1) | 0) | 0; - f = 0; - return (a + 1) | 0; - } - return 23; - } - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(23, m.f(0)); - assertEquals(24, m.f(1)); - assertThrows(() => m.f(2)); -})(); - -(function FailImmutableFunctionTable() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - if (a) { - a = funTable[a & 0]((a - 1) | 0) | 0; - funTable = 0; - return (a + 1) | 0; - } - return 23; - } - var funTable = [ f ]; - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(23, m.f(0)); - assertEquals(24, m.f(1)); - assertThrows(() => m.f(2)); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/infinite-loops-taken.js b/implementation-contributed/v8/mjsunit/asm/infinite-loops-taken.js deleted file mode 100644 index 5ac3769e9eb..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/infinite-loops-taken.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var error = "error"; -function counter(x) { - return (function() { if (x-- == 0) throw error;}); -} - -// TODO(asm): This module is not valid asm.js. -function Module() { - "use asm"; - - function w0(f) { - while (1) f(); - return 108; - } - - function w1(f) { - if (1) while (1) f(); - return 109; - } - - function w2(f) { - if (1) while (1) f(); - else while (1) f(); - return 110; - } - - function w3(f) { - if (0) while (1) f(); - return 111; - } - - return { w0: w0, w1: w1, w2: w2, w3: w3 }; -} - -var m = Module(); -assertThrowsEquals(function() { m.w0(counter(5)) }, error); -assertThrowsEquals(function() { m.w1(counter(5)) }, error); -assertThrowsEquals(function() { m.w2(counter(5)) }, error); -assertEquals(111, m.w3(counter(5))); diff --git a/implementation-contributed/v8/mjsunit/asm/infinite-loops.js b/implementation-contributed/v8/mjsunit/asm/infinite-loops.js deleted file mode 100644 index 03f4f6b8b23..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/infinite-loops.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module() { - "use asm"; - - function w0(a) { - a = a | 0; - if (a) while (1); - return 42; - } - - function w1(a) { - a = a | 0; - while (1) return 42; - return 106; - } - - function d0(a) { - a = a | 0; - if (a) do ; while(1); - return 42; - } - - function d1(a) { - a = a | 0; - do return 42; while(1); - return 107; - } - - function f0(a) { - a = a | 0; - if (a) for (;;) ; - return 42; - } - - function f1(a) { - a = a | 0; - for(;;) return 42; - return 108; - } - - return { w0: w0, w1: w1, d0: d0, d1: d1, f0: f0, f1: f1 }; -} - -var m = Module(); -assertEquals(42, m.w0(0)); -assertEquals(42, m.w1(0)); -assertEquals(42, m.d0(0)); -assertEquals(42, m.d1(0)); -assertEquals(42, m.f0(0)); -assertEquals(42, m.f1(0)); diff --git a/implementation-contributed/v8/mjsunit/asm/int16array-negative-offset.js b/implementation-contributed/v8/mjsunit/asm/int16array-negative-offset.js deleted file mode 100644 index ff452fac6f4..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int16array-negative-offset.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - - -var m = (function Module(stdlib, foreign, heap) { - "use asm"; - var MEM16 = new stdlib.Int16Array(heap); - function load(i) { - i = i|0; - i = MEM16[i >> 1]|0; - return i | 0; - } - function store(i, v) { - i = i|0; - v = v|0; - MEM16[i >> 1] = v; - } - function load8(i) { - i = i|0; - i = MEM16[i + 8 >> 1]|0; - return i | 0; - } - function store8(i, v) { - i = i|0; - v = v|0; - MEM16[i + 8 >> 1] = v; - } - return { load: load, store: store, load8: load8, store8: store8 }; -})(stdlib, foreign, buffer); - -assertEquals(0, m.load(-8)); -assertEquals(0, m.load8(-16)); -m.store(0, 42); -assertEquals(42, m.load8(-8)); -m.store8(-8, 99); -assertEquals(99, m.load(0)); -assertEquals(99, m.load8(-8)); diff --git a/implementation-contributed/v8/mjsunit/asm/int16array-outofbounds.js b/implementation-contributed/v8/mjsunit/asm/int16array-outofbounds.js deleted file mode 100644 index 8cad86efb5a..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int16array-outofbounds.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM16 = new stdlib.Int16Array(heap); - function load(i) { - i = i|0; - i = MEM16[i >> 1] | 0; - return i | 0; - } - function loadm1() { - var i = -1 << 1; - return MEM16[i >> 1] | 0; - return 0; - } - function store(i, v) { - i = i | 0; - v = v | 0; - MEM16[i >> 1] = v; - } - function storem1(v) { - v = v | 0; - var i = -1 << 1; - MEM16[i >> 1] = v; - } - return {load: load, loadm1: loadm1, store: store, storem1: storem1}; -} - -var m = Module(this, {}, new ArrayBuffer(2)); - -m.store(-1000, 4); -assertEquals(0, m.load(-1000)); -assertEquals(0, m.loadm1()); -m.storem1(1); -assertEquals(0, m.loadm1()); -m.store(0, 32767); -for (var i = 1; i < 64; ++i) { - m.store(i * 2 * 32 * 1024, i); -} -assertEquals(32767, m.load(0)); -for (var i = 1; i < 64; ++i) { - assertEquals(0, m.load(i * 2 * 32 * 1024)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32-div.js b/implementation-contributed/v8/mjsunit/asm/int32-div.js deleted file mode 100644 index bfc49244740..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32-div.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - function f1(i) { - i = i|0; - return (i | 0) / 3 | 0; - } - function f2(i) { - i = i|0; - return (i | 0) / 13 | 0; - } - function f3(i) { - i = i|0; - return (i | 0) / 1024 | 0; - } - function f4(i) { - i = i|0; - return (i | 0) / 3733331 | 0; - } - return { f1: f1, f2: f2, f3: f3, f4: f4 }; -} - -var m = Module(this, {}, new ArrayBuffer(1024)); - -for (var i = -2147483648; i < 2147483648; i += 3999777) { - assertEquals(i / 3 | 0, m.f1(i)); - assertEquals(i / 13 | 0, m.f2(i)); - assertEquals(i / 1024 | 0, m.f3(i)); - assertEquals(i / 3733331 | 0, m.f4(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32-mod.js b/implementation-contributed/v8/mjsunit/asm/int32-mod.js deleted file mode 100644 index 141bd0282f9..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32-mod.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - function f1(i) { - i = i|0; - return ((i | 0) % 3) | 0; - } - function f2(i) { - i = i|0; - return ((i | 0) % 9) | 0; - } - function f3(i) { - i = i|0; - return ((i | 0) % 1024) | 0; - } - function f4(i) { - i = i|0; - return ((i | 0) % 3133335) | 0; - } - return { f1: f1, f2: f2, f3: f3, f4: f4 }; -} - -var m = Module(this, {}, new ArrayBuffer(1024)); - -for (var i = -2147483648; i < 2147483648; i += 3999773) { - assertEquals((i % 3) | 0, m.f1(i)); - assertEquals((i % 9) | 0, m.f2(i)); - assertEquals((i % 1024) | 0, m.f3(i)); - assertEquals((i % 3133335) | 0, m.f4(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32-mul.js b/implementation-contributed/v8/mjsunit/asm/int32-mul.js deleted file mode 100644 index 1f2066b78b5..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32-mul.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - function f1(i) { - i = i|0; - return (i | 0) * -3 | 0; - } - function f2(i) { - i = i|0; - return (i | 0) * 7 | 0; - } - function f3(i) { - i = i|0; - return (i | 0) * 1024 | 0; - } - function f4(i) { - i = i|0; - return (i | 0) * 333339 | 0; - } - return { f1: f1, f2: f2, f3: f3, f4: f4 }; -} - -var m = Module(this, {}, new ArrayBuffer(1024)); - -for (var i = -2147483648; i < 2147483648; i += 3999771) { - assertEquals(i * -3 | 0, m.f1(i)); - assertEquals(i * 7 | 0, m.f2(i)); - assertEquals(i * 1024 | 0, m.f3(i)); - assertEquals(i * 333339 | 0, m.f4(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32-tmod.js b/implementation-contributed/v8/mjsunit/asm/int32-tmod.js deleted file mode 100644 index 1e7495e3023..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32-tmod.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - function f0(i) { - i = i|0; - return (i | 0) % 2 | 0; - } - function f1(i) { - i = i|0; - return (i | 0) % 3 | 0; - } - function f2(i) { - i = i|0; - return (i | 0) % 9 | 0; - } - function f3(i) { - i = i|0; - return (i | 0) % 1024 | 0; - } - function f4(i) { - i = i|0; - return (i | 0) % 3333339 | 0; - } - return { f0: f0, f1: f1, f2: f2, f3: f3, f4: f4 }; -} - -var m = Module(this, {}, new ArrayBuffer(1024)); - -for (var i = -2147483648; i < 2147483648; i += 3999773) { - assertEquals(i % 2 | 0, m.f0(i)); - assertEquals(i % 3 | 0, m.f1(i)); - assertEquals(i % 9 | 0, m.f2(i)); - assertEquals(i % 1024 | 0, m.f3(i)); - assertEquals(i % 3333339 | 0, m.f4(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32-udiv.js b/implementation-contributed/v8/mjsunit/asm/int32-udiv.js deleted file mode 100644 index 6eccca251d1..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32-udiv.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - function f1(i) { - i = i | 0; - return (i >>> 0) / 3 | 0; - } - function f2(i) { - i = i | 0; - return (i >>> 0) / 17 | 0; - } - function f3(i) { - i = i | 0; - return (i >>> 0) / 1024 | 0; - } - function f4(i) { - i = i | 0; - return (i >>> 0) / 3343330 | 0; - } - return { f1: f1, f2: f2, f3: f3, f4: f4 }; -} - -var m = Module(this, {}, new ArrayBuffer(1024)); - -for (var i = 0; i < 4294967296; i += 3999777) { - assertEquals(i / 3 | 0, m.f1(i)); - assertEquals(i / 17 | 0, m.f2(i)); - assertEquals(i / 1024 | 0, m.f3(i)); - assertEquals(i / 3343330 | 0, m.f4(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32-umod.js b/implementation-contributed/v8/mjsunit/asm/int32-umod.js deleted file mode 100644 index 8a96aefdabb..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32-umod.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - function f1(i) { - i = i | 0; - return (i >>> 0) % 3 | 0; - } - function f2(i) { - i = i | 0; - return (i >>> 0) % 11 | 0; - } - function f3(i) { - i = i | 0; - return (i >>> 0) % 1024 | 0; - } - function f4(i) { - i = i | 0; - return (i >>> 0) % 3333337 | 0; - } - return { f1: f1, f2: f2, f3: f3, f4: f4 }; -} - -var m = Module(this, {}, new ArrayBuffer(1024)); - -for (var i = 0; i < 4294967296; i += 3999777) { - assertEquals(i % 3, m.f1(i)); - assertEquals(i % 11, m.f2(i)); - assertEquals(i % 1024, m.f3(i)); - assertEquals(i % 3333337, m.f4(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32array-constant-key.js b/implementation-contributed/v8/mjsunit/asm/int32array-constant-key.js deleted file mode 100644 index 49eabccb9a7..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32array-constant-key.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM32 = new stdlib.Int32Array(heap); - function loadm4194304() { - var i = -4194304 << 2; - return MEM32[i >> 2] | 0; - } - function loadm0() { - return MEM32[-0] | 0; - } - function load0() { - return MEM32[0] | 0; - } - function load4() { - return MEM32[4] | 0; - } - function storem4194304(v) { - v = v | 0; - var i = -4194304 << 2; - MEM32[i >> 2] = v; - } - function storem0(v) { - v = v | 0; - MEM32[-0] = v; - } - function store0(v) { - v = v | 0; - MEM32[0 >> 2] = v; - } - function store4(v) { - v = v | 0; - MEM32[(4 << 2) >> 2] = v; - } - return { loadm4194304: loadm4194304, storem4194304: storem4194304, - loadm0: loadm0, storem0: storem0, load0: load0, store0: store0, - load4: load4, store4: store4 }; -} - -var m = Module(this, {}, new ArrayBuffer(4)); - -assertEquals(0, m.loadm4194304()); -assertEquals(0, m.loadm0()); -assertEquals(0, m.load0()); -assertEquals(0, m.load4()); -m.storem4194304(123456789); -assertEquals(0, m.loadm4194304()); -assertEquals(0, m.loadm0()); -assertEquals(0, m.load0()); -assertEquals(0, m.load4()); -m.storem0(987654321); -assertEquals(0, m.loadm4194304()); -assertEquals(987654321, m.loadm0()); -assertEquals(987654321, m.load0()); -assertEquals(0, m.load4()); -m.store0(0x12345678); -assertEquals(0, m.loadm4194304()); -assertEquals(0x12345678, m.loadm0()); -assertEquals(0x12345678, m.load0()); -assertEquals(0, m.load4()); -m.store4(43); -assertEquals(0, m.loadm4194304()); -assertEquals(0x12345678, m.loadm0()); -assertEquals(0x12345678, m.load0()); -assertEquals(0, m.load4()); diff --git a/implementation-contributed/v8/mjsunit/asm/int32array-negative-offset.js b/implementation-contributed/v8/mjsunit/asm/int32array-negative-offset.js deleted file mode 100644 index 690af8e6689..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32array-negative-offset.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - - -var m = (function Module(stdlib, foreign, heap) { - "use asm"; - var MEM32 = new stdlib.Int32Array(heap); - function load(i) { - i = i|0; - i = MEM32[i >> 2]|0; - return i | 0; - } - function store(i, v) { - i = i|0; - v = v|0; - MEM32[i >> 2] = v; - } - function load8(i) { - i = i|0; - i = MEM32[i + 8 >> 2]|0; - return i | 0; - } - function store8(i, v) { - i = i|0; - v = v|0; - MEM32[i + 8 >> 2] = v; - } - return { load: load, store: store, load8: load8, store8: store8 }; -})(stdlib, foreign, buffer); - -assertEquals(0, m.load(-8)); -assertEquals(0, m.load8(-16)); -m.store(0, 42); -assertEquals(42, m.load8(-8)); -m.store8(-8, 99); -assertEquals(99, m.load(0)); -assertEquals(99, m.load8(-8)); diff --git a/implementation-contributed/v8/mjsunit/asm/int32array-outofbounds.js b/implementation-contributed/v8/mjsunit/asm/int32array-outofbounds.js deleted file mode 100644 index 8fafb0d3716..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32array-outofbounds.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM32 = new stdlib.Int32Array(heap); - function load(i) { - i = i|0; - i = MEM32[i >> 2] | 0; - return i | 0; - } - function store(i, v) { - i = i|0; - v = v|0; - MEM32[i >> 2] = v; - } - return { load: load, store: store }; -} - -var m = Module(this, {}, new ArrayBuffer(4)); - -m.store(0, 0x12345678); -for (var i = 1; i < 64; ++i) { - m.store(i * 4 * 32 * 1024, i); -} -assertEquals(0x12345678, m.load(0)); -for (var i = 1; i < 64; ++i) { - assertEquals(0, m.load(i * 4 * 32 * 1024)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32array-unaligned.js b/implementation-contributed/v8/mjsunit/asm/int32array-unaligned.js deleted file mode 100644 index 6fdf5585e0e..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32array-unaligned.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM32 = new stdlib.Int32Array(heap); - function load(i) { - i = i|0; - i = MEM32[i >> 2] | 0; - return i | 0; - } - function store(i, v) { - i = i|0; - v = v|0; - MEM32[i >> 2] = v; - } - return { load: load, store: store }; -} - -var m = Module(this, {}, new ArrayBuffer(1024)); - -m.store(0, 0x12345678); -m.store(4, -1); -m.store(8, -1); -for (var i = 0; i < 4; ++i) { - assertEquals(0x12345678, m.load(i)); -} -for (var i = 4; i < 12; ++i) { - assertEquals(-1, m.load(i)); -} -for (var j = 4; j < 8; ++j) { - m.store(j, 0x11223344); - for (var i = 0; i < 4; ++i) { - assertEquals(0x12345678, m.load(i)); - } - for (var i = 4; i < 8; ++i) { - assertEquals(0x11223344, m.load(i)); - } - for (var i = 8; i < 12; ++i) { - assertEquals(-1, m.load(i)); - } -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32div.js b/implementation-contributed/v8/mjsunit/asm/int32div.js deleted file mode 100644 index 8bb9adaa871..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32div.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -function Int32Div(divisor) { - var name = "div_"; - if (divisor < 0) { - name += "minus_"; - } - name += Math.abs(divisor); - var m = eval( - 'function Module(stdlib, foreign, heap) {\n' + - ' "use asm";\n' + - ' function ' + name + '(dividend) {\n' + - ' dividend = dividend | 0;\n' + - ' return ((dividend | 0) / ' + divisor + ') | 0;\n' + - ' }\n' + - ' return { f: ' + name + '}\n' + - '}; Module'); - return m(stdlib, foreign, heap).f; -} - -var divisors = [-2147483648, -32 * 1024, -1000, -16, -7, -2, -1, 0, - 1, 3, 4, 10, 64, 100, 1024, 2147483647]; -for (var i in divisors) { - var divisor = divisors[i]; - var div = Int32Div(divisor); - for (var dividend = -2147483648; dividend < 2147483648; dividend += 3999773) { - assertEquals((dividend / divisor) | 0, div(dividend)); - } -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32mod-constant.js b/implementation-contributed/v8/mjsunit/asm/int32mod-constant.js deleted file mode 100644 index 27a13a778e3..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32mod-constant.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -function Int32Mod(divisor) { - var name = "mod_"; - if (divisor < 0) { - name += "minus_"; - } - name += Math.abs(divisor); - var m = eval( - 'function Module(stdlib, foreign, heap) {\n' + - ' "use asm";\n' + - ' function ' + name + '(dividend) {\n' + - ' dividend = dividend | 0;\n' + - ' return ((dividend | 0) % ' + divisor + ') | 0;\n' + - ' }\n' + - ' return { f: ' + name + '}\n' + - '}; Module'); - return m(stdlib, foreign, heap).f; -} - -var divisors = [-2147483648, -32 * 1024, -1000, -16, -7, -2, -1, 0, - 1, 3, 4, 10, 64, 100, 1024, 2147483647]; -for (var i in divisors) { - var divisor = divisors[i]; - var mod = Int32Mod(divisor); - for (var dividend = -2147483648; dividend < 2147483648; dividend += 3999773) { - assertEquals((dividend % divisor) | 0, mod(dividend)); - } -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32mod.js b/implementation-contributed/v8/mjsunit/asm/int32mod.js deleted file mode 100644 index 44513e32923..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32mod.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -var mod = (function Module(stdlib, foreign, heap) { - "use asm"; - function mod(dividend, divisor) { - dividend = dividend|0; - divisor = divisor|0; - return ((dividend | 0) % (divisor | 0)) | 0; - } - return { mod: mod }; -})(stdlib, foreign, heap).mod; - -var divisors = [-2147483648, -32 * 1024, -1000, -16, -7, -2, -1, 0, - 1, 3, 4, 10, 64, 100, 1024, 2147483647]; -for (var i in divisors) { - var divisor = divisors[i]; - for (var dividend = -2147483648; dividend < 2147483648; dividend += 3999773) { - assertEquals((dividend % divisor) | 0, mod(dividend, divisor)); - } -} diff --git a/implementation-contributed/v8/mjsunit/asm/int32modb.js b/implementation-contributed/v8/mjsunit/asm/int32modb.js deleted file mode 100644 index f8c034279be..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int32modb.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -var mod = (function Module(stdlib, foreign, heap) { - "use asm"; - function mod(dividend, divisor) { - dividend = dividend|0; - divisor = divisor|0; - return ((dividend | 0) % (divisor | 0)) | 0; - } - return { mod: mod }; -})(stdlib, foreign, heap).mod; - -var divisors = [-2147483648, -32 * 1024, -1000, -16, -7, -2, -1, 0, - 1, 3, 4, 10, 64, 99, 1023, 1024, 2147483647]; -for (var i = 0; i < divisors.length; i++) { - var divisor = divisors[i]; - for (var dividend = -2147483648; dividend < 2147483648; dividend += 3999773) { - assertEquals((dividend % divisor) | 0, mod(dividend, divisor)); - } -} diff --git a/implementation-contributed/v8/mjsunit/asm/int8array-negative-offset.js b/implementation-contributed/v8/mjsunit/asm/int8array-negative-offset.js deleted file mode 100644 index a2088e1b129..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/int8array-negative-offset.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - - -var m = (function Module(stdlib, foreign, heap) { - "use asm"; - var MEM8 = new stdlib.Int8Array(heap); - function load(i) { - i = i|0; - i = MEM8[i >> 0]|0; - return i | 0; - } - function store(i, v) { - i = i|0; - v = v|0; - MEM8[i >> 0] = v; - } - function load8(i) { - i = i|0; - i = MEM8[i + 8 >> 0]|0; - return i | 0; - } - function store8(i, v) { - i = i|0; - v = v|0; - MEM8[i + 8 >> 0] = v; - } - return { load: load, store: store, load8: load8, store8: store8 }; -})(stdlib, foreign, buffer); - -assertEquals(0, m.load(-8)); -assertEquals(0, m.load8(-16)); -m.store(0, 42); -assertEquals(42, m.load8(-8)); -m.store8(-8, 99); -assertEquals(99, m.load(0)); -assertEquals(99, m.load8(-8)); diff --git a/implementation-contributed/v8/mjsunit/asm/load-elimination.js b/implementation-contributed/v8/mjsunit/asm/load-elimination.js deleted file mode 100644 index fff722d0178..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/load-elimination.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var stdlib = this; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024 * 1024); - -var foo = (function(stdlib, foreign, heap) { - "use asm"; - var M16 = new stdlib.Int16Array(heap); - var M32 = new stdlib.Int32Array(heap); - function foo() { - var i = 0; - M32[0] = 0x12341234; - i = M32[0] | 0; - return M16[0] | 0; - } - return foo; -})(stdlib, foreign, heap); - -assertEquals(0x1234, foo()); -assertEquals(0x1234, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(0x1234, foo()); diff --git a/implementation-contributed/v8/mjsunit/asm/math-abs.js b/implementation-contributed/v8/mjsunit/asm/math-abs.js deleted file mode 100644 index bf7c7d07eab..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/math-abs.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib) { - "use asm"; - - var abs = stdlib.Math.abs; - - // f: double -> double - function f(a) { - a = +a; - return +abs(a); - } - - // g: unsigned -> double - function g(a) { - a = a | 0; - return +abs(+(a >>> 0)); - } - - // h: signed -> double - function h(a) { - a = a|0; - return +abs(+(a | 0)); - } - - return { f: f, g: g, h: h }; -} - -var m = Module({ Math: Math }); -var f = m.f; -var g = m.g; -var h = m.h; - -assertTrue(isNaN(f(NaN))); -assertTrue(isNaN(f(undefined))); -assertTrue(isNaN(f(function() {}))); - -assertEquals("Infinity", String(1/f(0))); -assertEquals("Infinity", String(1/f(-0))); -assertEquals("Infinity", String(f(Infinity))); -assertEquals("Infinity", String(f(-Infinity))); - -assertEquals(0, f(0)); -assertEquals(0.1, f(0.1)); -assertEquals(0.5, f(0.5)); -assertEquals(0.1, f(-0.1)); -assertEquals(0.5, f(-0.5)); -assertEquals(1, f(1)); -assertEquals(1.1, f(1.1)); -assertEquals(1.5, f(1.5)); -assertEquals(1, f(-1)); -assertEquals(1.1, f(-1.1)); -assertEquals(1.5, f(-1.5)); - -assertEquals(0, g(0)); -assertEquals(0, g(0.1)); -assertEquals(0, g(0.5)); -assertEquals(0, g(-0.1)); -assertEquals(0, g(-0.5)); -assertEquals(1, g(1)); -assertEquals(1, g(1.1)); -assertEquals(1, g(1.5)); -assertEquals(4294967295, g(-1)); -assertEquals(4294967295, g(-1.1)); -assertEquals(4294967295, g(-1.5)); - -assertEquals(0, h(0)); -assertEquals(0, h(0.1)); -assertEquals(0, h(0.5)); -assertEquals(0, h(-0.1)); -assertEquals(0, h(-0.5)); -assertEquals(1, h(1)); -assertEquals(1, h(1.1)); -assertEquals(1, h(1.5)); -assertEquals(1, h(-1)); -assertEquals(1, h(-1.1)); -assertEquals(1, h(-1.5)); - -assertEquals(Number.MIN_VALUE, f(Number.MIN_VALUE)); -assertEquals(Number.MIN_VALUE, f(-Number.MIN_VALUE)); -assertEquals(Number.MAX_VALUE, f(Number.MAX_VALUE)); -assertEquals(Number.MAX_VALUE, f(-Number.MAX_VALUE)); diff --git a/implementation-contributed/v8/mjsunit/asm/math-ceil.js b/implementation-contributed/v8/mjsunit/asm/math-ceil.js deleted file mode 100644 index d458eba057c..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/math-ceil.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib) { - "use asm"; - - var ceil = stdlib.Math.ceil; - - // f: double -> float - function f(a) { - a = +a; - return +ceil(a); - } - - return { f: f }; -} - -var f = Module({ Math: Math }).f; - -assertTrue(isNaN(f(NaN))); -assertTrue(isNaN(f(undefined))); -assertTrue(isNaN(f(function() {}))); - -assertEquals(0, f(0)); -assertEquals(+0, f(+0)); -assertEquals(-0, f(-0)); -assertEquals(1, f(0.49999)); -assertEquals(1, f(0.6)); -assertEquals(1, f(0.5)); -assertEquals(-0, f(-0.1)); -assertEquals(-0, f(-0.5)); -assertEquals(-0, f(-0.6)); -assertEquals(-1, f(-1.6)); -assertEquals(-0, f(-0.50001)); - -assertEquals("Infinity", String(f(Infinity))); -assertEquals("-Infinity", String(f(-Infinity))); diff --git a/implementation-contributed/v8/mjsunit/asm/math-clz32.js b/implementation-contributed/v8/mjsunit/asm/math-clz32.js deleted file mode 100644 index 54a42389e45..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/math-clz32.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = { Math: Math }; - -var f = (function Module(stdlib) { - "use asm"; - - var clz32 = stdlib.Math.clz32; - - function f(a) { - a = a | 0; - return clz32(a >>> 0) | 0; - } - - return f; -})(stdlib); - -assertEquals(32, f(0)); -assertEquals(32, f(NaN)); -assertEquals(32, f(undefined)); -for (var i = 0; i < 32; ++i) { - assertEquals(i, f((-1) >>> i)); -} -for (var i = -2147483648; i < 2147483648; i += 3999773) { - assertEquals(Math.clz32(i), f(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/math-floor.js b/implementation-contributed/v8/mjsunit/asm/math-floor.js deleted file mode 100644 index 18a5a0b2c3d..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/math-floor.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib) { - "use asm"; - - var floor = stdlib.Math.floor; - - // f: double -> float - function f(a) { - a = +a - return +floor(a); - } - - return { f: f }; -} - -var f = Module({ Math: Math }).f; - -assertTrue(isNaN(f(NaN))); -assertTrue(isNaN(f(undefined))); -assertTrue(isNaN(f(function() {}))); - -assertEquals(0, f(0)); -assertEquals(+0, f(+0)); -assertEquals(-0, f(-0)); -assertEquals(0, f(0.49999)); -assertEquals(+0, f(0.6)); -assertEquals(+0, f(0.5)); -assertEquals(-1, f(-0.1)); -assertEquals(-1, f(-0.5)); -assertEquals(-1, f(-0.6)); -assertEquals(-2, f(-1.6)); -assertEquals(-1, f(-0.50001)); - -assertEquals("Infinity", String(f(Infinity))); -assertEquals("-Infinity", String(f(-Infinity))); diff --git a/implementation-contributed/v8/mjsunit/asm/math-fround.js b/implementation-contributed/v8/mjsunit/asm/math-fround.js deleted file mode 100644 index b1d37e904e0..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/math-fround.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib) { - "use asm"; - - var fround = stdlib.Math.fround; - - // f: double -> float - function f(a) { - a = +a; - return fround(a); - } - - return { f: f }; -} - -var f = Module({ Math: Math }).f; - -assertTrue(isNaN(f(NaN))); -assertTrue(isNaN(f(undefined))); -assertTrue(isNaN(f(function() {}))); - -assertEquals("Infinity", String(1/f(0))); -assertEquals("-Infinity", String(1/f(-0))); -assertEquals("Infinity", String(f(Infinity))); -assertEquals("-Infinity", String(f(-Infinity))); -assertEquals("Infinity", String(f(1E200))); -assertEquals("-Infinity", String(f(-1E200))); -assertEquals("Infinity", String(1/f(1E-300))); -assertEquals("-Infinity", String(1/f(-1E-300))); - -assertEquals(0, f(0)); -assertEquals(1, f(1)); -assertEquals(1.5, f(1.5)); -assertEquals(1.3370000123977661, f(1.337)); -assertEquals(-4.300000190734863, f(-4.3)); diff --git a/implementation-contributed/v8/mjsunit/asm/math-max.js b/implementation-contributed/v8/mjsunit/asm/math-max.js deleted file mode 100644 index d5dc0d16176..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/math-max.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib) { - "use asm"; - - var max = stdlib.Math.max; - var fround = stdlib.Math.fround; - - // f: double, double -> double - function f(a, b) { - a = +a; b = +b; - return +max(a, b); - } - - // g: signed, signed -> signed - function g(a, b) { - a = a | 0; b = b | 0; - return max(a >> 0, b >> 0) | 0; - } - - // h: float, float -> float - function h(a, b) { - a = fround(a); b = fround(b); - return fround(max(a, b)); - } - - return { f: f, g: g, h: h }; -} - -var m = Module({ Math: Math }); -var f = m.f; -var g = m.g; -var h = m.h; - -assertTrue(isNaN(f(0, NaN))); -assertFalse(isFinite(f(0, Infinity))); -assertTrue(isFinite(f(0, -Infinity))); - -assertTrue(Object.is(+0, f(-0, +0))); -assertTrue(Object.is(+0, f(+0, -0))); - -assertEquals(0.1, f( 0, 0.1)); -assertEquals(0.5, f( 0.1, 0.5)); -assertEquals(0.5, f( 0.5, -0.1)); -assertEquals(-0.1, f(-0.1, -0.5)); -assertEquals(1, f(-0.5, 1)); -assertEquals(1.1, f( 1, 1.1)); -assertEquals(1.1, f( 1.1, -1)); -assertEquals(-1, f(-1, -1.1)); -assertEquals(0, f(-1.1, 0)); - -assertEquals( 1, g( 0, 1)); -assertEquals( 5, g( 1, 5)); -assertEquals( 5, g( 5, -1)); -assertEquals(-1, g(-1, -5)); -assertEquals( 1, g(-5, 1)); -assertEquals( 1, g( 1, -1)); -assertEquals( 0, g(-1, 0)); - -assertEquals(Math.fround(0.1), h( 0, 0.1)); -assertEquals(Math.fround(0.5), h( 0.1, 0.5)); -assertEquals(Math.fround(0.5), h( 0.5, -0.1)); -assertEquals(Math.fround(-0.1), h(-0.1, -0.5)); -assertEquals(Math.fround(1), h(-0.5, 1)); -assertEquals(Math.fround(1.1), h( 1, 1.1)); -assertEquals(Math.fround(1.1), h( 1.1, -1)); -assertEquals(Math.fround(-1), h(-1, -1.1)); -assertEquals(Math.fround(0), h(-1.1, 0)); - -assertEquals(1, g(0, Number.MIN_SAFE_INTEGER)); -assertEquals(0, g(0, Number.MAX_SAFE_INTEGER)); - -assertEquals(Number.MAX_VALUE, f(Number.MIN_VALUE, Number.MAX_VALUE)); -assertEquals(Number.MAX_VALUE, f(Number.MAX_VALUE, Number.MIN_VALUE)); -assertEquals(Number.POSITIVE_INFINITY, f(Number.POSITIVE_INFINITY, 0)); -assertEquals(0, f(Number.NEGATIVE_INFINITY, 0)); diff --git a/implementation-contributed/v8/mjsunit/asm/math-min.js b/implementation-contributed/v8/mjsunit/asm/math-min.js deleted file mode 100644 index 5923d267d0b..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/math-min.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib) { - "use asm"; - - var min = stdlib.Math.min; - var fround = stdlib.Math.fround; - - // f: double, double -> double - function f(a, b) { - a = +a; b = +b; - return +min(a, b); - } - - // g: signed, signed -> signed - function g(a, b) { - a = a | 0; b = b | 0; - return min(a >> 0, b >> 0) | 0; - } - - // h: float, float -> float - function h(a, b) { - a = fround(a); b = fround(b); - return fround(min(a, b)); - } - - return { f: f, g: g, h: h }; -} - -var m = Module({ Math: Math }); -var f = m.f; -var g = m.g; -var h = m.h; - -assertTrue(isNaN(f(0, NaN))); -assertTrue(isFinite(f(0, Infinity))); -assertFalse(isFinite(f(0, -Infinity))); - -assertTrue(Object.is(-0, f(-0, +0))); -assertTrue(Object.is(-0, f(+0, -0))); - -assertEquals(0, f( 0, 0.1)); -assertEquals(0.1, f( 0.1, 0.5)); -assertEquals(-0.1, f( 0.5, -0.1)); -assertEquals(-0.5, f(-0.1, -0.5)); -assertEquals(-0.5, f(-0.5, 1)); -assertEquals(1, f( 1, 1.1)); -assertEquals(-1, f( 1.1, -1)); -assertEquals(-1.1, f(-1, -1.1)); -assertEquals(-1.1, f(-1.1, 0)); - -assertEquals( 0, g( 0, 1)); -assertEquals( 1, g( 1, 5)); -assertEquals(-1, g( 5, -1)); -assertEquals(-5, g(-1, -5)); -assertEquals(-5, g(-5, 1)); -assertEquals(-1, g( 1, -1)); -assertEquals(-1, g(-1, 0)); - -assertEquals(Math.fround(0), h( 0, 0.1)); -assertEquals(Math.fround(0.1), h( 0.1, 0.5)); -assertEquals(Math.fround(-0.1), h( 0.5, -0.1)); -assertEquals(Math.fround(-0.5), h(-0.1, -0.5)); -assertEquals(Math.fround(-0.5), h(-0.5, 1)); -assertEquals(Math.fround(1), h( 1, 1.1)); -assertEquals(Math.fround(-1), h( 1.1, -1)); -assertEquals(Math.fround(-1.1), h(-1, -1.1)); -assertEquals(Math.fround(-1.1), h(-1.1, 0)); - -assertEquals(0, g(0, Number.MIN_SAFE_INTEGER)); -assertEquals(-1, g(0, Number.MAX_SAFE_INTEGER)); - -assertEquals(Number.MIN_VALUE, f(Number.MIN_VALUE, Number.MAX_VALUE)); -assertEquals(Number.MIN_VALUE, f(Number.MAX_VALUE, Number.MIN_VALUE)); -assertEquals(0, f(Number.POSITIVE_INFINITY, 0)); -assertEquals(Number.NEGATIVE_INFINITY, f(Number.NEGATIVE_INFINITY, 0)); diff --git a/implementation-contributed/v8/mjsunit/asm/noexpose-wasm.js b/implementation-contributed/v8/mjsunit/asm/noexpose-wasm.js deleted file mode 100644 index 7336ab27279..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/noexpose-wasm.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --noexpose-wasm --validate-asm - -assertThrows(() => { let x = WebAssembly.Module; }); - -function Module(stdlib, foreign, heap) { - "use asm"; - function f1(i) { - i = i|0; - return (i | 0) / 3 | 0; - } - function f2(i) { - i = i|0; - return (i | 0) / 13 | 0; - } - function f3(i) { - i = i|0; - return (i | 0) / 1024 | 0; - } - function f4(i) { - i = i|0; - return (i | 0) / 3733331 | 0; - } - return { f1: f1, f2: f2, f3: f3, f4: f4 }; -} - -var m = Module(this, {}, new ArrayBuffer(1024)); - -for (var i = -2147483648; i < 2147483648; i += 3999777) { - assertEquals(i / 3 | 0, m.f1(i)); - assertEquals(i / 13 | 0, m.f2(i)); - assertEquals(i / 1024 | 0, m.f3(i)); - assertEquals(i / 3733331 | 0, m.f4(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/pointer-masking.js b/implementation-contributed/v8/mjsunit/asm/pointer-masking.js deleted file mode 100644 index 444e00eedfb..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/pointer-masking.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - - -var pm1 = (function(stdlib, foreign, heap) { - "use asm"; - var HEAP8 = new stdlib.Int8Array(heap); - const MASK1 = 1023; - function load1(i) { - i = i|0; - var j = 0; - j = HEAP8[(i & MASK1)]|0; - return j|0; - } - function store1(i, j) { - i = i|0; - j = j|0; - HEAP8[(i & MASK1)] = j; - } - return {load1: load1, store1: store1}; -})(stdlib, foreign, heap); - -assertEquals(0, pm1.load1(0)); -assertEquals(0, pm1.load1(1025)); -pm1.store1(0, 1); -pm1.store1(1025, 127); -assertEquals(1, pm1.load1(0)); -assertEquals(1, pm1.load1(1024)); -assertEquals(127, pm1.load1(1)); -assertEquals(127, pm1.load1(1025)); diff --git a/implementation-contributed/v8/mjsunit/asm/poppler/poppler.js b/implementation-contributed/v8/mjsunit/asm/poppler/poppler.js deleted file mode 100644 index 35156fbcfed..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/poppler/poppler.js +++ /dev/null @@ -1,9211 +0,0 @@ -var input_data="JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAFFjrEKwkAQRHu/4pVJYbJ3mqzXKjYWQmDBQizkMF2E5P4f3CBitW9md4adGZjRiErfxBQT+/5A2DUqGgLLixtv2lMJ5IJQsp9LkzSJps4NYfuXa0+UTZ44GiF+1z47vMsmWrOA08id6lqv0Uj1/MEy1jywC2fzt4YPXCAhiwplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKMTI3CmVuZG9iagoyIDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgMyAwIFIgL1Jlc291cmNlcyA2IDAgUiAvQ29udGVudHMgNCAwIFIgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KPj4KZW5kb2JqCjYgMCBvYmoKPDwgL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0gL0NvbG9yU3BhY2UgPDwgL0NzMSA3IDAgUiA+PiAvRm9udCA8PCAvVFQxIDggMCBSCj4+ID4+CmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9OIDEgL0FsdGVybmF0ZSAvRGV2aWNlR3JheSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGFVV1oHFUUPrszO3mJQxFtSyt18K8hpGFSrSYWtdtNurtN2K6bjTZVqtPZ2e50JzPjndm0CX0Kgm9aEMRXRXwSLYjQasTkxb60VKiJFIsgKLRYQRD6IAp+Z3ayOxuRzHBnvjn3O+ee8917GKK+ZcP3nbRGNOeGIl/Jzh6fPaH1fUdpUqmfcBlm4GfL5SnGruda/O697q1Tii039nGs3rktvzI1KzDBWsHwaoE5R5TSiZRh0xchUd/rsI+eDX3G7wM/0KxWcsCfAKuxLyA9mLdcS9imlhfGglYWXt12krluNc8xtrzmnBbnytcejP6gOT2J9yByPlczxhk/BfyhaUxMAw8Br/vh4Uqbk063mjPZtj09VBdHZmL78UarwHiYKL202Ki+DLwN+KJ7qnQs5q+YQe4E8GOw321YRd4PjUjaZofFKjB8JV14FeaDI52sWeMTwM8CLzW9Sc5hJ/ByMD/NduZ/v9jIlYCxlpw+YxwtA28Hvt9y8sxHHHnAD8sccxR4ynVKvC7qld+0gqjGAeBPw0a1EPPXQ1Fl30dg/6tuHykCQ4fMQw1RYDvyyRR8JzpPTwMviVaFa38C+JIhJvLAiJn5yXJnWENgRaGXUgZZ5NEpPE1y6R/UHpBN8xHySWCujm+H8mC4GALDAes00K8UYp6t7B9QEzb2ZUaAZxlDxP4a1fDV9rMxy4gj3o58zE3cHOK4tEgGeO2V78Q8T94h6/KTGAflKfk5eVQeI01+QT4kPy+PwzomH4x8BHwXELVbAa94B1Hbkd6gVk8+q8g5hI9DP4PjRRkGyOBvRGhGzIQaF3a1Bnz/vbeXxGu2ef2dPxLqcG3NuM6uPglfOpZUO9K/tlntzC+Z25k1PG9mbiWq0TI/Zm7hvtlTlxevZqM+G5lvKMva29hVr4e9sQObWVlU7kR7ModqWX3eUVaflWwBh3jWYXVpXzLilfPLOzu8BdLW5Euv3ui/cv5/NWF9WGeLEqrU3Qu7fP/kx6ym9VbpXomWhvSL+l39I/0H/Xd9Tf8A6DfpXekL6WvpsvSldJU0aUValb6RvpU+k77C1+ewrkqXkVvy1LVPWef0INP2OTTjE8b18CkOiBVgNtfP1g2lzmCumymf7c0rsM7dE91ZSz2s7lYfVcfVh9XH1Sl1UD2gHlJ3qPsxRtSCuhczuzsqcU+x1jbeZbw3+s6m2Uir9o5wVg2oJ5ClgbubF/eo3YmGOKn7oDNH63J4jXZ324iixd3roWMNmkHFNp2NtAvw7eAbu/kfb+5JZJd6BSfLlvfII3Ix7sGsfABdONnTj6PcpcqEMq5kSVMGlTFlRDnKOKqVO1RT9mJ2DM+JZPaInuD0KIK/T2idw3+LKOf5C8I+3Qi1/br+jJbFb9LSiq45PKQZjqNFU4EmrMAS81ZtmPgfzH5Ef74Y/VtT26+aLTHftlEqdY3oX/q6h3sKZW5kc3RyZWFtCmVuZG9iagoxMCAwIG9iagoxMDg4CmVuZG9iago3IDAgb2JqClsgL0lDQ0Jhc2VkIDkgMCBSIF0KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMiAwIFIgXSA+PgplbmRvYmoKMTEgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDMgMCBSID4+CmVuZG9iago4IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQgL05QUEdTRCtIZWx2ZXRpY2EgL0ZvbnREZXNjcmlwdG9yCjEyIDAgUiAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcgL0ZpcnN0Q2hhciA3OCAvTGFzdENoYXIgMTE0IC9XaWR0aHMgWyA3MjIKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTU2IDAgMCAwIDAgMjc4IDAgMCAwIDAgMCAwIDAgMCAwIDAgMAozMzMgXSA+PgplbmRvYmoKMTIgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9Gb250TmFtZSAvTlBQR1NEK0hlbHZldGljYSAvRmxhZ3MgMzIgL0ZvbnRCQm94IFstOTUxIC00ODEgMTQ0NSAxMTIyXQovSXRhbGljQW5nbGUgMCAvQXNjZW50IDc3MCAvRGVzY2VudCAtMjMwIC9DYXBIZWlnaHQgNzE3IC9TdGVtViA5OCAvWEhlaWdodAo1MjMgL1N0ZW1IIDg1IC9BdmdXaWR0aCAtNDQxIC9NYXhXaWR0aCAxNTAwIC9Gb250RmlsZTIgMTMgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvTGVuZ3RoIDE0IDAgUiAvTGVuZ3RoMSA2MDgwIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ab1Ye3QT15n/vjszkvzASLKN5IeQxCC/3wY/sIOFkYwN2DEYWIngINkIbAc3PsR4A11YJw1NEIRtQiFp4KShTVkeSxhsJ5FhoU4O2SZnNwlJ2/SVnjQbkvbs1if7CN00YM9+d2SrmNPk8Acnc3Xne957v/u739zR3P5t20MwCwZBgNb1wb7NoF0WH5Guzt5gX1Q2v060o3Og3xGVpRwAYevmvi29UdnwXYB425atO6baJ1eR/UpXKLgpaocbRCu6SBGVcQHR+V29/Q9GZfMI0ZSt93dO2ZMLSE7sDT44NT68T7LjG8HeUNTforXvu/+B/inZQLSgb1toyh8pfuFtQNJK8CTEwX2gBwZGKu0A+j/E20AkK7fTVfLWb368cXbtNTDxbgA2Nv+DRt8cPf/y56Eb2QlPGP5Mirhpf051uZO5FCKSfTzhiZhFa0c3KQJt+RFoolpHdSHV/PwlVhjE4/Adqs9RFaAb98EOqnupfo+qGONOkjSK+4ZEg/s87oB0XO5OEO1rUtLs1vgE+7sR1I08a/+V9aMLmEar9yGmDc2CuCXx+Bx+HzaBHX8ELtwJjZCDzwznbrUHyHQS+qgOUhW0O+LJobll9ktYAC4RqU0WzBXxJfvvSwvtH5dGGA7ZX82OiERemUuSe7Z9zPas/ce2LfZLVE9HTadyyeMl+0nbVvvBuRF8Zsj+pC2C1OaJKNluo6Yv2XtzD9s3lWr2lYcj7PSQvZrs69wJ9ooqp32h7aq9ODtiQJILbSvteaVv2udTQ3JzUKcut8meaTtoX0SmuTZv9iKqF/AUHoE8PDLkWm4/TyxNd7gpt+pwBL853JhT6orgTndFY87h3MZsV+5Kuyu3ITub+HWv6x/R36Nfoi/T5+tz9Fl6pz5Dn2IwG4yGJEOiId5gMOgj+E9DdXbdBTwNdQTL6WGDziBF8AVSihfwjKY887JBNDADGFIi6u8oeRFSInh6xMg5Yl7SaZwugmeGo6ozbrvIOVEzGBnn6UZ3YGhgsBwUfDyigz1zBuqsdebFpuoGz5fdAppl+p7/5ZcVbcrhFW0+5ZTNr5RxRrX5p92t08yX0v7tZArV5+evWL1jeKCvZ7M3JHsDsjdENaDsG+iyKoMdDse5nj5ucChCVqCjs4vTYEjpk0MepUf2OM4NaO1uMW/m5gHZcw42e9f4zm12hzxDA+4Brxz0+Ic76re1zxhrb2ysbfV/Zax63tk2PlaH1u6Wsdq5uYOP1c7Haudjdbg7tLH45L3dbfUP9FN2OrzdKxxKTpvStGq9T3EE/Z4IHielZztIY2CULkKONAjpYjHYAdRfUf01p5Nr1U+kn4Bxslf9b6GGFnWUVzZZVwtj8DgcgbOggxPE58C98DS8gT30bG+AEXgP50IR7b0iRGAl/Buq6juwGZ4n/354FQ7BOUikNr2QStYD6FJ3kuwmvgMeUX8A86EKvg0XoZp6PQDj6kl1mKyrYS2cgtPU/l9RZufEZPUF9SoYYBX1+QhZ3lFXqmfBDAVQD62kfQQuoUv4tdoFVqih6I7C9+EYvAJ/xIdxRO1SB9Qr6oeUqlbIhDYqu3AEPxTOit9Wj6r/oU4SEjmQR6MG4CD8kPo/S2WMtlYv3of9eBAPMTd7mI2IeyTL5AThkAvLqDTC/fAYITAKl+F/4M/4KbMKRqFfeE1dqP4vJMAKmiWfSQgGqDxK5QDN6QLqsASXYivuwu/iIfwpy2NrmY/9LXuQfSK0CBuEHcJPxQfEIWm/9LQuYfKaekH9ifpzsIAN7oFtsJtm9ypcgc/gCxSor0x0YQ3W471UBvEIG8VjOMpacQyvsFP4AX6En+J1JrFElsryWT87yE6zV9lbQrdwSPie8IFwTVwsMemY9LHOpf/NZMfk3sm31Br1Q/Vz2mIN4KSVqYcW2AhBmm0fLIC/p1mcoXKWVu0yvAZvaOUjzIRx+JxQADRjOpZhM5UWvBs3Yzc+i+epXNJi+ROjhWBxzMQsLJO1sQ7WywbZz9mgkCHkCcuF9cJZKq8L7wnXheuiJCaLqeIysQn2i73iM1SOiyfEIfFtqVpaLLVI66RBaa+0X+iU3pHe0+3WHdAN6T7V/Rdtiyv19+v30+q8QTn7CuXyXy4R51P0ZfAN6EQPdsBhWo1jGIQwZdcmfIzw6oMctV3YLSxjJZQNl+CblK3PwC7YK2yAY+ovhVPwC8qUrdTlIPyjWA826SlanYehhLJoqrhz83JzsrNc8+V5Tgdt+ZkZ6WlWy5zUlGSzyTgrMSE+zqDXSaLAEAq8ckPAoWQFFDFLbmws5LIcJEXwJkWAHmWH0jDTR3HwdkEyzfB0k+fmWzzdUU93zBONjlqoLSxweGWH8qZHdkRw/Sof8Y97ZL9DGdf4Zo3/jsbPIt7ppAYOr7XL41Aw4PAqDQNdYW/AU1iAo26CI76wgG8cbkjgHSuwNLiLNlhYyj28Srrs8SppMvFkE1ze4CaldZXP68lwOv2kI9VqH41RWNCtUJywL3GTvGlfxA0dAc4FN/gUIehXWID3ZcpXLLJHsez82PoXcZrz7r/JqDBXQzAUblDcgX0ELhcDXAruJ2lFm4O6ZXv8PgX3TAXBY+yhSHm40XeCK9DjUOLkerkr3BMgcGG1byjdna5tvgq0+obS3GmaUFgwat1d46TZjxYuKVzCaY3TujtKf/+tqP7dMU6tuy//juiK1TEAkCMgN1GciqNTG0SmYKv4LVQF4c4qwokuP9I0uymepQqjnBFciuRqCiqDbdNhdHmiwQV6PENxaenaS6jeT/6BsHERrRT5G2VH+Bq9rQPy+B9naoJTGp3LeA24kS90LFcUDE7zA/xl6aJZd1nlLr6+A9qakixbvTcpSObQ8JiVFHqBt/qcisNPCvo3WbAiAnGtvnOIB/wRVPdEwGMbpf+owsZ7yVzAU63bQ+OTUFhAijwncUUFjgYauYHniiPsCDdtCjsaHF2UTKJLo2QIhf3FhGCbj3CCNTSi258RY0N+/yLqp5j3Q03IPeynHnqmeiCqqYonyKmkgF6mQlarb5VPGfRkKG6Pn1aB0nes1aeMUeb6/eRVGouUIt7VbZ2KuYxiLs0je3m0F/rvMkhd+MNh3mebT3YqY+FwRpg/b1E5gnCrwj2liAB34ZBHcLCV2hKRnRnaGjhlJ4Xl55guoJSezij6z/7VCFfE4qaWlRRthYZw1R1CuPp2EF50WwjXxCKdgXAtxVzDEb7r60N48QyE674aYXcsbgpyCUXr1hCuv0MIL70dhD23hbA3FukMhBsoZi9HeNnXh3DjDISbvhrh5bG4KcgVFO1yDeGVdwjh5ttBuOW2EL47FukMhFsp5rs5wqu+PoRXz0C47asRXhOLm4JcS9Gu0RBed4cQ/pvbQdh3Wwj7Y5HOQHg9xeznCN8TQ9idocDN+/DgLdsu3PGNecNNkNM/JckM9fS9dVR8AFazashkp2AvqafPcxLpK2MNyS3g4p/Xt3GxmI8Q42Yy9O2uXRWwH9fhD/AP9Ee8HkC8Qt+EAp0tLY2e9xiKIyBSNRgjAFeocpl44X3iieqJCkTj3ofz1ApgXf556kkiWlJabnKasqnWiwciN/5duvjF0ojYfJ3OD8jjKM06j8aKg3gYcKdUYpWO6dGC2bgMfUzSI2MRPOK2mHU6PdMbBGR0aBEvxMejzsAEbntREtMT9QbuFR8HaQmJzzkH+ugMoOWz2uaJ2hbjnzgxmaurq4uhrq62rpZY8dGi/Ed3vVZaAu3YnlyOpnKTjPQ7+p/sk4sfTMy+xBZJF6+vF49/sVT80fV7KD46doPV6vvaV8ds+p6shd+6q/JKMN6YkJGYmV3eaOyO6zHqqw3mxDgho0w/P85mTLTV5LOi3JqXa1hNWZ7LbNRLhszseZbMCIbdssVm12fbihKYbWFCrb62NjNFn5t3Yn764ozczOWzs6vS7lr8z/gUfWyN4mHQ5tM8/tk4zaf56sRlszaZ8Toq4+Zqk9lS3U5TLBovGkeiJkt1acnSHe6cisrUeYBpLqyY7QTr3AwnzHGkONE5DyqZE9JtFiemOulGZ3j5aKzlZwYPPfQQB2X+nPKyyoq7MAlno06vS8WKyoqFC7LkeXqdXl6M5WX02WJKIScaIgnledlZ2ZxkLVxQUZmMSdtaNvoPO7vKejtK23BkcWrit3Y+XuOMPyH93w8vDmy3uBLnmvIKstrz5sRVvvV3hy6efyr89vqCpuNPpGbqkmZlFm/BrYYCa+GGtpV5bf9ypLHx6YmnMucJwp5EXb3sbux58bFDzyfjVf5kZFISWaR36Uu42Z2vt+nibQLOTqmeM0tnjk+zWNKTZplyLWa9eXaSPYkl3UhJs6bdcG7ZHcVzor36cnHtRK2xxRvyfMKzg1Klbvxn46Ul5sqK8rI5ltQimpQutTxVNlFZWL7wRbluxDTfkpmWsNoxNDJ06JBUv2ADY88zXPvCgRubhKMHTlCuIH9u2ZPiMjDB3e6sbCFrVqWwTBSTDEaWFGeKS8w2SHrQmeIN6clYZMw1QZo5OYLeYWdHNDQK5GqLkYfUXHd54jJPX76wPGGTy1M5/rHYTPLe06nP3ydZbcYM42NPjojFoxVHmHBJYGe3TTzNnzHtUkN05vDXLomUpeCBJjqV4JGbp/YWHZ0pQ0tr67I2T35jaOtAqL+7M6h5TPdC2NMZCdBpDdC5B4BPnbqIhxiPtF/NlHkvN9u1s/Wb/Ldx+/8DxOJICgplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjM1NDIKZW5kb2JqCjE1IDAgb2JqCihVbnRpdGxlZCkKZW5kb2JqCjE2IDAgb2JqCihNYWMgT1MgWCAxMC45LjUgUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagoxNyAwIG9iagooQmVuZWRpa3QgTWV1cmVyKQplbmRvYmoKMTggMCBvYmoKKCkKZW5kb2JqCjE5IDAgb2JqCihUZXh0RWRpdCkKZW5kb2JqCjIwIDAgb2JqCihEOjIwMTUwNDIyMDkxNDE1WjAwJzAwJykKZW5kb2JqCjIxIDAgb2JqCigpCmVuZG9iagoyMiAwIG9iagpbICgpIF0KZW5kb2JqCjEgMCBvYmoKPDwgL1RpdGxlIDE1IDAgUiAvQXV0aG9yIDE3IDAgUiAvU3ViamVjdCAxOCAwIFIgL1Byb2R1Y2VyIDE2IDAgUiAvQ3JlYXRvcgoxOSAwIFIgL0NyZWF0aW9uRGF0ZSAyMCAwIFIgL01vZERhdGUgMjAgMCBSIC9LZXl3b3JkcyAyMSAwIFIgL0FBUEw6S2V5d29yZHMKMjIgMCBSID4+CmVuZG9iagp4cmVmCjAgMjMKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDA2MjIzIDAwMDAwIG4gCjAwMDAwMDAyNDIgMDAwMDAgbiAKMDAwMDAwMTY5MCAwMDAwMCBuIAowMDAwMDAwMDIyIDAwMDAwIG4gCjAwMDAwMDAyMjMgMDAwMDAgbiAKMDAwMDAwMDM0NiAwMDAwMCBuIAowMDAwMDAxNjU1IDAwMDAwIG4gCjAwMDAwMDE4MjMgMDAwMDAgbiAKMDAwMDAwMDQ0MyAwMDAwMCBuIAowMDAwMDAxNjM0IDAwMDAwIG4gCjAwMDAwMDE3NzMgMDAwMDAgbiAKMDAwMDAwMjA3NiAwMDAwMCBuIAowMDAwMDAyMzI3IDAwMDAwIG4gCjAwMDAwMDU5NTkgMDAwMDAgbiAKMDAwMDAwNTk4MCAwMDAwMCBuIAowMDAwMDA2MDA3IDAwMDAwIG4gCjAwMDAwMDYwNTkgMDAwMDAgbiAKMDAwMDAwNjA5MyAwMDAwMCBuIAowMDAwMDA2MTEyIDAwMDAwIG4gCjAwMDAwMDYxMzkgMDAwMDAgbiAKMDAwMDAwNjE4MSAwMDAwMCBuIAowMDAwMDA2MjAwIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgMjMgL1Jvb3QgMTEgMCBSIC9JbmZvIDEgMCBSIC9JRCBbIDwwMDQwMjhmMDIyMTU2MmVjZmFjOTdlODY5MDc2NmM4OT4KPDAwNDAyOGYwMjIxNTYyZWNmYWM5N2U4NjkwNzY2Yzg5PiBdID4+CnN0YXJ0eHJlZgo2Mzk4CiUlRU9GCg=="; - -function base64DecToArr(sBase64, nBlocksSize) { - function b64ToUint6 (nChr) { - return nChr > 64 && nChr < 91 ? - nChr - 65 - : nChr > 96 && nChr < 123 ? - nChr - 71 - : nChr > 47 && nChr < 58 ? - nChr + 4 - : nChr === 43 ? - 62 - : nChr === 47 ? - 63 - : - 0; - } - var - sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length, - nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2, taBytes = new Uint8Array(nOutLen); - for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) { - nMod4 = nInIdx & 3; - nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 6 * (3 - nMod4); - if (nMod4 === 3 || nInLen - nInIdx === 1) { - for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) { - taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255; - } - nUint24 = 0; - - } - } - return taBytes; -} - -var Module = { - arguments: ['-scale-to', '512', 'input.pdf'], - print: function() {}, - preRun: function() { - var input = new Int8Array(base64DecToArr(input_data).buffer); - FS.createDataFile('/', 'input.pdf', input, true, false); - } -}; -// The Module object: Our interface to the outside world. We import -// and export values on it, and do the work to get that through -// closure compiler if necessary. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to do an eval in order to handle the closure compiler -// case, where this code here is minified but Module was defined -// elsewhere (e.g. case 4 above). We also need to check if Module -// already exists (e.g. case 3 above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module; -if (!Module) Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()'); - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = {}; -for (var key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -// The environment setup code below is customized to use Module. -// *** Environment setup code *** -var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; -var ENVIRONMENT_IS_WEB = typeof window === 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (ENVIRONMENT_IS_NODE) { - // Expose functionality in the same simple way that the shells work - // Note that we pollute the global namespace here, otherwise we break in node - if (!Module['print']) Module['print'] = function print(x) { - process['stdout'].write(x + '\n'); - }; - if (!Module['printErr']) Module['printErr'] = function printErr(x) { - process['stderr'].write(x + '\n'); - }; - - var nodeFS = require('fs'); - var nodePath = require('path'); - - Module['read'] = function read(filename, binary) { - filename = nodePath['normalize'](filename); - var ret = nodeFS['readFileSync'](filename); - // The path is absolute if the normalized version is the same as the resolved. - if (!ret && filename != nodePath['resolve'](filename)) { - filename = path.join(__dirname, '..', 'src', filename); - ret = nodeFS['readFileSync'](filename); - } - if (ret && !binary) ret = ret.toString(); - return ret; - }; - - Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; - - Module['load'] = function load(f) { - globalEval(read(f)); - }; - - Module['arguments'] = process['argv'].slice(2); - - module['exports'] = Module; -} -else if (ENVIRONMENT_IS_SHELL) { - if (!Module['print']) Module['print'] = print; - if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm - - if (typeof read != 'undefined') { - Module['read'] = read; - } else { - Module['read'] = function read() { throw 'no read() available (jsc?)' }; - } - - Module['readBinary'] = function readBinary(f) { - return read(f, 'binary'); - }; - - if (typeof scriptArgs != 'undefined') { - Module['arguments'] = scriptArgs; - } else if (typeof arguments != 'undefined') { - Module['arguments'] = arguments; - } - - this['Module'] = Module; - - eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) -} -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; - }; - - 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.log(x); - }; - } else { - // Probably a worker, and without console.log. We can do very little here... - var TRY_USE_DUMP = false; - if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { - dump(x); - }) : (function(x) { - // self.postMessage(x); // enable this if you want stdout to be sent as messages - })); - } - - if (ENVIRONMENT_IS_WEB) { - this['Module'] = Module; - } else { - Module['load'] = importScripts; - } -} -else { - // Unreachable because SHELL is dependent on the others - throw 'Unknown runtime environment. Where are we?'; -} - -function globalEval(x) { - eval.call(null, x); -} -if (!Module['load'] == 'undefined' && 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'] = []; -} -// *** Environment setup code *** - -// Closure helpers -Module.print = Module['print']; -Module.printErr = Module['printErr']; - -// Callbacks -Module['preRun'] = []; -Module['postRun'] = []; - -// Merge back in the overrides -for (var key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - - - -// === Auto-generated preamble library stuff === - -//======================================== -// Runtime code shared with compiler -//======================================== - -var Runtime = { - stackSave: function () { - return STACKTOP; - }, - stackRestore: function (stackTop) { - STACKTOP = stackTop; - }, - forceAlign: function (target, quantum) { - quantum = quantum || 4; - if (quantum == 1) return target; - if (isNumber(target) && isNumber(quantum)) { - return Math.ceil(target/quantum)*quantum; - } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { - return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; - } - return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; - }, - isNumberType: function (type) { - return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; - }, - isPointerType: function isPointerType(type) { - return type[type.length-1] == '*'; -}, - isStructType: function isStructType(type) { - if (isPointerType(type)) return false; - if (isArrayType(type)) return true; - if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types - // See comment in isStructPointerType() - return type[0] == '%'; -}, - INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, - FLOAT_TYPES: {"float":0,"double":0}, - or64: function (x, y) { - var l = (x | 0) | (y | 0); - var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - and64: function (x, y) { - var l = (x | 0) & (y | 0); - var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - xor64: function (x, y) { - var l = (x | 0) ^ (y | 0); - var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; - return l + h; - }, - 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; // A pointer - } 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); - }, - dedup: function dedup(items, ident) { - var seen = {}; - if (ident) { - return items.filter(function(item) { - if (seen[item[ident]]) return false; - seen[item[ident]] = true; - return true; - }); - } else { - return items.filter(function(item) { - if (seen[item]) return false; - seen[item] = true; - return true; - }); - } -}, - set: function set() { - var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; - var ret = {}; - for (var i = 0; i < args.length; i++) { - ret[args[i]] = 0; - } - return ret; -}, - STACK_ALIGN: 8, - getAlignSize: function (type, size, vararg) { - // we align i64s and doubles on 64-bit boundaries, unlike x86 - if (!vararg && (type == 'i64' || type == 'double')) return 8; - if (!type) return Math.min(size, 8); // align structures internally to 64 bits - return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); - }, - calculateStructAlignment: function calculateStructAlignment(type) { - type.flatSize = 0; - type.alignSize = 0; - var diffs = []; - var prev = -1; - var index = 0; - type.flatIndexes = type.fields.map(function(field) { - index++; - var size, alignSize; - if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { - size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. - alignSize = Runtime.getAlignSize(field, size); - } else if (Runtime.isStructType(field)) { - if (field[1] === '0') { - // this is [0 x something]. When inside another structure like here, it must be at the end, - // and it adds no size - // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); - size = 0; - if (Types.types[field]) { - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } else { - alignSize = type.alignSize || QUANTUM_SIZE; - } - } else { - size = Types.types[field].flatSize; - alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); - } - } else if (field[0] == 'b') { - // bN, large number field, like a [N x i8] - size = field.substr(1)|0; - alignSize = 1; - } else if (field[0] === '<') { - // vector type - size = alignSize = Types.types[field].flatSize; // fully aligned - } else if (field[0] === 'i') { - // illegal integer field, that could not be legalized because it is an internal structure field - // it is ok to have such fields, if we just use them as markers of field size and nothing more complex - size = alignSize = parseInt(field.substr(1))/8; - assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); - } else { - assert(false, 'invalid type for calculateStructAlignment'); - } - if (type.packed) alignSize = 1; - type.alignSize = Math.max(type.alignSize, alignSize); - var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory - type.flatSize = curr + size; - if (prev >= 0) { - diffs.push(curr-prev); - } - prev = curr; - return curr; - }); - if (type.name_ && type.name_[0] === '[') { - // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid - // allocating a potentially huge array for [999999 x i8] etc. - type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; - } - type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); - if (diffs.length == 0) { - type.flatFactor = type.flatSize; - } else if (Runtime.dedup(diffs).length == 1) { - type.flatFactor = diffs[0]; - } - type.needsFlattening = (type.flatFactor != 1); - return type.flatIndexes; - }, - generateStructInfo: function (struct, typeName, offset) { - var type, alignment; - if (typeName) { - offset = offset || 0; - type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; - if (!type) return null; - if (type.fields.length != struct.length) { - printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); - return null; - } - alignment = type.flatIndexes; - } else { - var type = { fields: struct.map(function(item) { return item[0] }) }; - alignment = Runtime.calculateStructAlignment(type); - } - var ret = { - __size__: type.flatSize - }; - if (typeName) { - struct.forEach(function(item, i) { - if (typeof item === 'string') { - ret[item] = alignment[i] + offset; - } else { - // embedded struct - var key; - for (var k in item) key = k; - ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); - } - }); - } else { - struct.forEach(function(item, i) { - ret[item[1]] = alignment[i]; - }); - } - return ret; - }, - dynCall: function (sig, ptr, args) { - if (args && args.length) { - if (!args.splice) args = Array.prototype.slice.call(args); - args.splice(0, 0, ptr); - return Module['dynCall_' + sig].apply(null, args); - } else { - return Module['dynCall_' + sig].call(null, ptr); - } - }, - functionPointers: [], - addFunction: function (func) { - for (var i = 0; i < Runtime.functionPointers.length; i++) { - if (!Runtime.functionPointers[i]) { - Runtime.functionPointers[i] = func; - return 2*(1 + i); - } - } - throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; - }, - removeFunction: function (index) { - Runtime.functionPointers[(index-2)/2] = null; - }, - getAsmConst: function (code, numArgs) { - // code is a constant string on the heap, so we can cache these - if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; - var func = Runtime.asmConstCache[code]; - if (func) return func; - var args = []; - for (var i = 0; i < numArgs; i++) { - args.push(String.fromCharCode(36) + i); // $0, $1 etc - } - code = Pointer_stringify(code); - if (code[0] === '"') { - // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct - if (code.indexOf('"', 1) === code.length-1) { - code = code.substr(1, code.length-2); - } else { - // something invalid happened, e.g. EM_ASM("..code($0)..", input) - abort('invalid EM_ASM input |' + code + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); - } - } - return Runtime.asmConstCache[code] = eval('(function(' + args.join(',') + '){ ' + code + ' })'); // new Function does not allow upvars in node - }, - warnOnce: function (text) { - if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; - if (!Runtime.warnOnce.shown[text]) { - Runtime.warnOnce.shown[text] = 1; - Module.printErr(text); - } - }, - funcWrappers: {}, - getFuncWrapper: function (func, sig) { - assert(sig); - if (!Runtime.funcWrappers[func]) { - Runtime.funcWrappers[func] = function dynCall_wrapper() { - return Runtime.dynCall(sig, func, arguments); - }; - } - return Runtime.funcWrappers[func]; - }, - UTF8Processor: function () { - var buffer = []; - var needed = 0; - this.processCChar = function (code) { - code = code & 0xFF; - - if (buffer.length == 0) { - if ((code & 0x80) == 0x00) { // 0xxxxxxx - return String.fromCharCode(code); - } - buffer.push(code); - if ((code & 0xE0) == 0xC0) { // 110xxxxx - needed = 1; - } else if ((code & 0xF0) == 0xE0) { // 1110xxxx - needed = 2; - } else { // 11110xxx - needed = 3; - } - return ''; - } - - if (needed) { - buffer.push(code); - needed--; - if (needed > 0) return ''; - } - - var c1 = buffer[0]; - var c2 = buffer[1]; - var c3 = buffer[2]; - var c4 = buffer[3]; - var ret; - if (buffer.length == 2) { - ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); - } else if (buffer.length == 3) { - ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); - } else { - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | - ((c3 & 0x3F) << 6) | (c4 & 0x3F); - ret = String.fromCharCode( - Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, - (codePoint - 0x10000) % 0x400 + 0xDC00); - } - buffer.length = 0; - return ret; - } - this.processJSString = function processJSString(string) { - string = unescape(encodeURIComponent(string)); - var ret = []; - for (var i = 0; i < string.length; i++) { - ret.push(string.charCodeAt(i)); - } - return ret; - } - }, - stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, - staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, - dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, - alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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 -} - - -Module['Runtime'] = Runtime; - - - - - - - - - -//======================================== -// Runtime essentials -//======================================== - -var __THREW__ = 0; // Used in checking for thrown exceptions. - -var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() -var EXITSTATUS = 0; - -var undef = 0; -// tempInt is used for 32-bit signed values or smaller. tempBigInt is used -// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt -var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; -var tempI64, tempI64b; -var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; - -function assert(condition, text) { - if (!condition) { - abort('Assertion failed: ' + text); - } -} - -var globalScope = this; - -// C calling interface. A convenient way to call C functions (in C files, or -// defined with extern "C"). -// -// Note: LLVM optimizations can inline and remove functions, after which you will not be -// able to call them. Closure can also do so. To avoid that, add your function to -// the exports using something like -// -// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' -// -// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") -// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and -// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). -// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be omitted). Types are as in returnType, -// except that 'array' is not possible (there is no way for us to know the length of the array) -// @param args An array of the arguments to the function, as native JS values (as in returnType) -// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). -// @return The return value, as a native JS value (as in returnType) -function ccall(ident, returnType, argTypes, args) { - return ccallFunc(getCFunc(ident), returnType, argTypes, args); -} -Module["ccall"] = ccall; - -// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) -function getCFunc(ident) { - try { - var func = Module['_' + ident]; // closure exported function - if (!func) func = eval('_' + ident); // explicit lookup - } catch(e) { - } - assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); - return func; -} - -// Internal function that does a C call using a function, not an identifier -function ccallFunc(func, returnType, argTypes, args) { - var stack = 0; - function toC(value, type) { - if (type == 'string') { - if (value === null || value === undefined || value === 0) return 0; // null string - value = intArrayFromString(value); - type = 'array'; - } - if (type == 'array') { - if (!stack) stack = Runtime.stackSave(); - var ret = Runtime.stackAlloc(value.length); - writeArrayToMemory(value, ret); - return ret; - } - return value; - } - function fromC(value, type) { - if (type == 'string') { - return Pointer_stringify(value); - } - assert(type != 'array'); - return value; - } - var i = 0; - var cArgs = args ? args.map(function(arg) { - return toC(arg, argTypes[i++]); - }) : []; - var ret = fromC(func.apply(null, cArgs), returnType); - if (stack) Runtime.stackRestore(stack); - return ret; -} - -// Returns a native JS wrapper for a C function. This is similar to ccall, but -// returns a function you can call repeatedly in a normal way. For example: -// -// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); -// alert(my_function(5, 22)); -// alert(my_function(99, 12)); -// -function cwrap(ident, returnType, argTypes) { - var func = getCFunc(ident); - return function() { - return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); - } -} -Module["cwrap"] = cwrap; - -// Sets a value in memory in a dynamic way at run-time. Uses the -// type data. This is the same as makeSetValue, except that -// makeSetValue is done at compile-time and generates the needed -// code then, whereas this function picks the right code at -// run-time. -// Note that setValue and getValue only do *aligned* writes and reads! -// Note that ccall uses JS types as for defining types, while setValue and -// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation -function setValue(ptr, value, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[(ptr)]=value; break; - case 'i8': HEAP8[(ptr)]=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); - } -} -Module['setValue'] = setValue; - -// Parallel to setValue. -function getValue(ptr, type, noSafe) { - type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[(ptr)]; - case 'i8': return HEAP8[(ptr)]; - 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; -} -Module['getValue'] = getValue; - -var ALLOC_NORMAL = 0; // Tries to use _malloc() -var ALLOC_STACK = 1; // Lives for the duration of the current function call -var ALLOC_STATIC = 2; // Cannot be freed -var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk -var ALLOC_NONE = 4; // Do not allocate -Module['ALLOC_NORMAL'] = ALLOC_NORMAL; -Module['ALLOC_STACK'] = ALLOC_STACK; -Module['ALLOC_STATIC'] = ALLOC_STATIC; -Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; -Module['ALLOC_NONE'] = ALLOC_NONE; - -// allocate(): This is for internal use. You can use it yourself as well, but the interface -// is a little tricky (see docs right below). The reason is that it is optimized -// for multiple syntaxes to save space in generated code. So you should -// normally not use allocate(), and instead allocate memory using _malloc(), -// initialize it with setValue(), and so forth. -// @slab: An array of data, or a number. If a number, then the size of the block to allocate, -// in *bytes* (note that this is sometimes confusing: the next parameter does not -// affect this!) -// @types: Either an array of types, one for each byte (or 0 if no type at that position), -// or a single type which is used for the entire block. This only matters if there -// is initial data - if @slab is a number, then this does not matter at all and is -// ignored. -// @allocator: How to allocate memory, see ALLOC_* -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 = [_malloc, 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 < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; - } - stop = ret + size; - while (ptr < stop) { - HEAP8[((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 < size) { - var curr = slab[i]; - - if (typeof curr === 'function') { - curr = Runtime.getFunctionIndex(curr); - } - - type = singleType || types[i]; - if (type === 0) { - i++; - continue; - } - - if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - - setValue(ret+i, curr, type); - - // no need to look up size unless type changes, so cache it - if (previousType !== type) { - typeSize = Runtime.getNativeTypeSize(type); - previousType = type; - } - i += typeSize; - } - - return ret; -} -Module['allocate'] = allocate; - -function Pointer_stringify(ptr, /* optional */ length) { - // TODO: use TextDecoder - // Find the length, and check for UTF while doing so - var hasUtf = false; - var t; - var i = 0; - while (1) { - t = HEAPU8[(((ptr)+(i))|0)]; - if (t >= 128) hasUtf = true; - else if (t == 0 && !length) break; - i++; - if (length && i == length) break; - } - if (!length) length = i; - - var ret = ''; - - if (!hasUtf) { - var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack - 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; - } - - var utf8 = new Runtime.UTF8Processor(); - for (i = 0; i < length; i++) { - t = HEAPU8[(((ptr)+(i))|0)]; - ret += utf8.processCChar(t); - } - return ret; -} -Module['Pointer_stringify'] = Pointer_stringify; - -// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF16ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) - return str; - ++i; - // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } -} -Module['UTF16ToString'] = UTF16ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. -function stringToUTF16(str, outPtr) { - for(var i = 0; i < str.length; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; - } - // Null-terminate the pointer to the HEAP. - HEAP16[(((outPtr)+(str.length*2))>>1)]=0; -} -Module['stringToUTF16'] = stringToUTF16; - -// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns -// a copy of that string as a Javascript String object. -function UTF32ToString(ptr) { - var i = 0; - - var str = ''; - while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } -} -Module['UTF32ToString'] = UTF32ToString; - -// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', -// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, -// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. -function stringToUTF32(str, outPtr) { - var iChar = 0; - for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++iCodeUnit); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; - ++iChar; - } - // Null-terminate the pointer to the HEAP. - HEAP32[(((outPtr)+(iChar*4))>>2)]=0; -} -Module['stringToUTF32'] = stringToUTF32; - -function demangle(func) { - try { - // Special-case the entry point, since its name differs from other name mangling. - if (func == 'Object._main' || func == '_main') { - return 'main()'; - } - if (typeof func === 'number') func = Pointer_stringify(func); - if (func[0] !== '_') return func; - if (func[1] !== '_') return func; // C function - if (func[2] !== 'Z') return func; - switch (func[3]) { - case 'n': return 'operator new()'; - case 'd': return 'operator delete()'; - } - var i = 3; - // params, etc. - var basicTypes = { - 'v': 'void', - 'b': 'bool', - 'c': 'char', - 's': 'short', - 'i': 'int', - 'l': 'long', - 'f': 'float', - 'd': 'double', - 'w': 'wchar_t', - 'a': 'signed char', - 'h': 'unsigned char', - 't': 'unsigned short', - 'j': 'unsigned int', - 'm': 'unsigned long', - 'x': 'long long', - 'y': 'unsigned long long', - 'z': '...' - }; - function dump(x) { - //return; - if (x) Module.print(x); - Module.print(func); - var pre = ''; - for (var a = 0; a < i; a++) pre += ' '; - Module.print (pre + '^'); - } - var subs = []; - function parseNested() { - i++; - if (func[i] === 'K') i++; // ignore const - var parts = []; - while (func[i] !== 'E') { - if (func[i] === 'S') { // substitution - i++; - var next = func.indexOf('_', i); - var num = func.substring(i, next) || 0; - parts.push(subs[num] || '?'); - i = next+1; - continue; - } - if (func[i] === 'C') { // constructor - parts.push(parts[parts.length-1]); - i += 2; - continue; - } - var size = parseInt(func.substr(i)); - var pre = size.toString().length; - if (!size || !pre) { i--; break; } // counter i++ below us - var curr = func.substr(i + pre, size); - parts.push(curr); - subs.push(curr); - i += pre + size; - } - i++; // skip E - return parts; - } - var first = true; - function parse(rawList, limit, allowVoid) { // main parser - limit = limit || Infinity; - var ret = '', list = []; - function flushList() { - return '(' + list.join(', ') + ')'; - } - var name; - if (func[i] === 'N') { - // namespaced N-E - name = parseNested().join('::'); - limit--; - if (limit === 0) return rawList ? [name] : name; - } else { - // not namespaced - if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' - var size = parseInt(func.substr(i)); - if (size) { - var pre = size.toString().length; - name = func.substr(i + pre, size); - i += pre + size; - } - } - first = false; - if (func[i] === 'I') { - i++; - var iList = parse(true); - var iRet = parse(true, 1, true); - ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; - } else { - ret = name; - } - paramLoop: while (i < func.length && limit-- > 0) { - //dump('paramLoop'); - var c = func[i++]; - if (c in basicTypes) { - list.push(basicTypes[c]); - } else { - switch (c) { - case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer - case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference - case 'L': { // literal - i++; // skip basic type - var end = func.indexOf('E', i); - var size = end - i; - list.push(func.substr(i, size)); - i += size + 2; // size + 'EE' - break; - } - case 'A': { // array - var size = parseInt(func.substr(i)); - i += size.toString().length; - if (func[i] !== '_') throw '?'; - i++; // skip _ - list.push(parse(true, 1, true)[0] + ' [' + size + ']'); - break; - } - case 'E': break paramLoop; - default: ret += '?' + c; break paramLoop; - } - } - } - if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) - return rawList ? list : ret + flushList(); - } - return parse(); - } catch(e) { - 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 stackTrace() { - var stack = new Error().stack; - return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. -} - -// Memory management - -var PAGE_SIZE = 4096; -function alignMemoryPage(x) { - return (x+4095)&-4096; -} - -var HEAP; -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area -var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area -var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk - -function enlargeMemory() { - abort('Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + TOTAL_MEMORY + ', or (2) set Module.TOTAL_MEMORY before the program runs.'); -} - -var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; -var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216; -var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; - -var totalMemory = 4096; -while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { - if (totalMemory < 16*1024*1024) { - totalMemory *= 2; - } else { - totalMemory += 16*1024*1024 - } -} -if (totalMemory !== TOTAL_MEMORY) { - Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); - TOTAL_MEMORY = totalMemory; -} - -// Initialize the runtime's memory -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'Cannot fallback to non-typed array case: Code is too specialized'); - -var buffer = new ArrayBuffer(TOTAL_MEMORY); -HEAP8 = new Int8Array(buffer); -HEAP16 = new Int16Array(buffer); -HEAP32 = new Int32Array(buffer); -HEAPU8 = new Uint8Array(buffer); -HEAPU16 = new Uint16Array(buffer); -HEAPU32 = new Uint32Array(buffer); -HEAPF32 = new Float32Array(buffer); -HEAPF64 = new Float64Array(buffer); - -// Endianness check (note: assumes compiler arch was little-endian) -HEAP32[0] = 255; -assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); - -Module['HEAP'] = HEAP; -Module['HEAP8'] = HEAP8; -Module['HEAP16'] = HEAP16; -Module['HEAP32'] = HEAP32; -Module['HEAPU8'] = HEAPU8; -Module['HEAPU16'] = HEAPU16; -Module['HEAPU32'] = HEAPU32; -Module['HEAPF32'] = HEAPF32; -Module['HEAPF64'] = HEAPF64; - -function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { - 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__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the runtime has exited - -var runtimeInitialized = false; - -function preRun() { - // compatibility - merge in anything from Module['preRun'] at this time - 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__); -} - -function postRun() { - // compatibility - merge in anything from Module['postRun'] at this time - 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); -} -Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -Module['addOnInit'] = Module.addOnInit = addOnInit; - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} -Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; - -function addOnExit(cb) { - __ATEXIT__.unshift(cb); -} -Module['addOnExit'] = Module.addOnExit = addOnExit; - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; - -// Tools - -// This processes a JS string into a C-line array of numbers, 0-terminated. -// For LLVM-originating strings, see parser.js:parseLLVMString function -function intArrayFromString(stringy, dontAddNull, length /* optional */) { - var ret = (new Runtime.UTF8Processor()).processJSString(stringy); - if (length) { - ret.length = length; - } - if (!dontAddNull) { - ret.push(0); - } - return ret; -} -Module['intArrayFromString'] = intArrayFromString; - -function intArrayToString(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - var chr = array[i]; - if (chr > 0xFF) { - chr &= 0xFF; - } - ret.push(String.fromCharCode(chr)); - } - return ret.join(''); -} -Module['intArrayToString'] = intArrayToString; - -// Write a Javascript array to somewhere in the heap -function writeStringToMemory(string, buffer, dontAddNull) { - var array = intArrayFromString(string, dontAddNull); - var i = 0; - while (i < array.length) { - var chr = array[i]; - HEAP8[(((buffer)+(i))|0)]=chr; - i = i + 1; - } -} -Module['writeStringToMemory'] = writeStringToMemory; - -function writeArrayToMemory(array, buffer) { - for (var i = 0; i < array.length; i++) { - HEAP8[(((buffer)+(i))|0)]=array[i]; - } -} -Module['writeArrayToMemory'] = writeArrayToMemory; - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; i++) { - HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; -} -Module['writeAsciiToMemory'] = writeAsciiToMemory; - -function unSign(value, bits, ignore, sig) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; -} -function reSign(value, bits, ignore, sig) { - if (value <= 0) { - return value; - } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts - } - return value; -} - -// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) -if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { - var ah = a >>> 16; - var al = a & 0xffff; - var bh = b >>> 16; - var bl = b & 0xffff; - return (al*bl + ((ah*bl + al*bh) << 16))|0; -}; -Math.imul = Math['imul']; - - -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_min = Math.min; - -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// PRE_RUN_ADDITIONS (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled - -function addRunDependency(id) { - runDependencies++; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } -} -Module['addRunDependency'] = addRunDependency; -function removeRunDependency(id) { - runDependencies--; - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} -Module['removeRunDependency'] = removeRunDependency; - -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - -var memoryInitializer = null; - -// === Body === -var __ZTVN10__cxxabiv117__class_type_infoE = 291152; -var __ZTVN10__cxxabiv120__si_class_type_infoE = 291192; - - - - -STATIC_BASE = 8; - -STATICTOP = STATIC_BASE + Runtime.alignMemory(291923); -/* global initializers */ __ATINIT__.push(); - - -/* memory initializer */ allocate([8,5,0,0,1,0,0,0,120,4,0,0,0,0,0,0,16,5,0,0,40,5,0,0,1,0,0,0,128,4,0,0,0,0,0,0,48,5,0,0,72,5,0,0,0,0,0,0,168,4,0,0,0,0,0,0,80,5,0,0,104,5,0,0,0,0,0,0,160,4,0,0,0,0,0,0,112,5,0,0,136,5,0,0,2,0,0,0,112,2,0,0,0,0,0,0,144,5,0,0,184,5,0,0,2,0,0,0,120,2,0,0,0,0,0,0,192,5,0,0,232,5,0,0,2,0,0,0,128,2,0,0,0,0,0,0,240,5,0,0,24,6,0,0,1,0,0,0,184,4,0,0,0,0,0,0,40,6,0,0,104,6,0,0,1,0,0,0,192,4,0,0,0,0,0,0,120,6,0,0,184,6,0,0,1,0,0,0,200,4,0,0,0,0,0,0,200,6,0,0,0,7,0,0,1,0,0,0,248,4,0,0,0,0,0,0,8,7,0,0,56,7,0,0,1,0,0,0,0,5,0,0,0,0,0,0,64,7,0,0,112,7,0,0,1,0,0,0,152,4,0,0,0,0,0,0,120,7,0,0,168,7,0,0,1,0,0,0,144,4,0,0,0,0,0,0,176,7,0,0,224,7,0,0,1,0,0,0,136,4,0,0,0,0,0,0,232,7,0,0,24,8,0,0,0,0,0,0,176,4,0,0,0,0,0,0,40,8,0,0,80,8,0,0,0,0,0,0,96,2,0,0,0,0,0,0,88,8,0,0,120,8,0,0,0,0,0,0,104,2,0,0,0,0,0,0,128,8,0,0,160,8,0,0,3,0,0,0,104,3,0,0,16,0,0,0,176,8,0,0,224,8,0,0,3,0,0,0,160,3,0,0,16,0,0,0,232,8,0,0,16,9,0,0,3,0,0,0,216,3,0,0,16,0,0,0,32,9,0,0,72,9,0,0,3,0,0,0,24,4,0,0,33,0,0,0,80,9,0,0,120,9,0,0,3,0,0,0,64,4,0,0,33,0,0,0,128,9,0,0,168,9,0,0,0,0,0,0,16,4,0,0,0,0,0,0,176,9,0,0,216,9,0,0,0,0,0,0,136,2,0,0,0,0,0,0,224,9,0,0,8,10,0,0,0,0,0,0,144,2,0,0,0,0,0,0,16,10,0,0,40,10,0,0,0,0,0,0,144,2,0,0,0,0,0,0,16,10,0,0,48,10,0,0,0,0,0,0,144,2,0,0,0,0,0,0,16,10,0,0,56,10,0,0,0,0,0,0,144,2,0,0,0,0,0,0,16,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,98,64,0,0,0,0,0,192,98,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,100,102,116,111,112,112,109,32,118,101,114,115,105,111,110,32,37,115,10,0,0,0,0,48,46,49,54,46,51,0,0,37,115,10,0,0,0,0,0,67,111,112,121,114,105,103,104,116,32,50,48,48,53,45,50,48,49,48,32,84,104,101,32,80,111,112,112,108,101,114,32,68,101,118,101,108,111,112,101,114,115,32,45,32,104,116,116,112,58,47,47,112,111,112,112,108,101,114,46,102,114,101,101,100,101,115,107,116,111,112,46,111,114,103,0,0,0,0,0,67,111,112,121,114,105,103,104,116,32,49,57,57,54,45,50,48,48,52,32,71,108,121,112,104,32,38,32,67,111,103,44,32,76,76,67,0,0,0,0,112,100,102,116,111,112,112,109,0,0,0,0,0,0,0,0,91,80,68,70,45,102,105,108,101,32,91,80,80,77,45,102,105,108,101,45,112,114,101,102,105,120,93,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,97,100,32,39,45,102,114,101,101,116,121,112,101,39,32,118,97,108,117,101,32,111,110,32,99,111,109,109,97,110,100,32,108,105,110,101,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,97,100,32,39,45,97,97,39,32,118,97,108,117,101,32,111,110,32,99,111,109,109,97,110,100,32,108,105,110,101,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,97,100,32,39,45,97,97,86,101,99,116,111,114,39,32,118,97,108,117,101,32,111,110,32,99,111,109,109,97,110,100,32,108,105,110,101,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,100,58,47,47,48,0,0,45,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,46,42,115,45,37,48,42,100,46,37,115,0,0,0,0,112,98,109,0,0,0,0,0,112,103,109,0,0,0,0,0,112,112,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,102,0,0,0,0,0,0,102,105,114,115,116,32,112,97,103,101,32,116,111,32,112,114,105,110,116,0,0,0,0,0,45,108,0,0,0,0,0,0,108,97,115,116,32,112,97,103,101,32,116,111,32,112,114,105,110,116,0,0,0,0,0,0,45,111,0,0,0,0,0,0,112,114,105,110,116,32,111,110,108,121,32,111,100,100,32,112,97,103,101,115,0,0,0,0,45,101,0,0,0,0,0,0,112,114,105,110,116,32,111,110,108,121,32,101,118,101,110,32,112,97,103,101,115,0,0,0,45,114,0,0,0,0,0,0,114,101,115,111,108,117,116,105,111,110,44,32,105,110,32,68,80,73,32,40,100,101,102,97,117,108,116,32,105,115,32,49,53,48,41,0,0,0,0,0,45,114,120,0,0,0,0,0,88,32,114,101,115,111,108,117,116,105,111,110,44,32,105,110,32,68,80,73,32,40,100,101,102,97,117,108,116,32,105,115,32,49,53,48,41,0,0,0,45,114,121,0,0,0,0,0,89,32,114,101,115,111,108,117,116,105,111,110,44,32,105,110,32,68,80,73,32,40,100,101,102,97,117,108,116,32,105,115,32,49,53,48,41,0,0,0,45,115,99,97,108,101,45,116,111,0,0,0,0,0,0,0,115,99,97,108,101,115,32,101,97,99,104,32,112,97,103,101,32,116,111,32,102,105,116,32,119,105,116,104,105,110,32,115,99,97,108,101,45,116,111,42,115,99,97,108,101,45,116,111,32,112,105,120,101,108,32,98,111,120,0,0,0,0,0,0,45,115,99,97,108,101,45,116,111,45,120,0,0,0,0,0,115,99,97,108,101,115,32,101,97,99,104,32,112,97,103,101,32,104,111,114,105,122,111,110,116,97,108,108,121,32,116,111,32,102,105,116,32,105,110,32,115,99,97,108,101,45,116,111,45,120,32,112,105,120,101,108,115,0,0,0,0,0,0,0,45,115,99,97,108,101,45,116,111,45,121,0,0,0,0,0,115,99,97,108,101,115,32,101,97,99,104,32,112,97,103,101,32,118,101,114,116,105,99,97,108,108,121,32,116,111,32,102,105,116,32,105,110,32,115,99,97,108,101,45,116,111,45,121,32,112,105,120,101,108,115,0,45,120,0,0,0,0,0,0,120,45,99,111,111,114,100,105,110,97,116,101,32,111,102,32,116,104,101,32,99,114,111,112,32,97,114,101,97,32,116,111,112,32,108,101,102,116,32,99,111,114,110,101,114,0,0,0,45,121,0,0,0,0,0,0,121,45,99,111,111,114,100,105,110,97,116,101,32,111,102,32,116,104,101,32,99,114,111,112,32,97,114,101,97,32,116,111,112,32,108,101,102,116,32,99,111,114,110,101,114,0,0,0,45,87,0,0,0,0,0,0,119,105,100,116,104,32,111,102,32,99,114,111,112,32,97,114,101,97,32,105,110,32,112,105,120,101,108,115,32,40,100,101,102,97,117,108,116,32,105,115,32,48,41,0,0,0,0,0,45,72,0,0,0,0,0,0,104,101,105,103,104,116,32,111,102,32,99,114,111,112,32,97,114,101,97,32,105,110,32,112,105,120,101,108,115,32,40,100,101,102,97,117,108,116,32,105,115,32,48,41,0,0,0,0,45,115,122,0,0,0,0,0,115,105,122,101,32,111,102,32,99,114,111,112,32,115,113,117,97,114,101,32,105,110,32,112,105,120,101,108,115,32,40,115,101,116,115,32,87,32,97,110,100,32,72,41,0,0,0,0,45,99,114,111,112,98,111,120,0,0,0,0,0,0,0,0,117,115,101,32,116,104,101,32,99,114,111,112,32,98,111,120,32,114,97,116,104,101,114,32,116,104,97,110,32,109,101,100,105,97,32,98,111,120,0,0,45,109,111,110,111,0,0,0,103,101,110,101,114,97,116,101,32,97,32,109,111,110,111,99,104,114,111,109,101,32,80,66,77,32,102,105,108,101,0,0,45,103,114,97,121,0,0,0,103,101,110,101,114,97,116,101,32,97,32,103,114,97,121,115,99,97,108,101,32,80,71,77,32,102,105,108,101,0,0,0,45,102,114,101,101,116,121,112,101,0,0,0,0,0,0,0,101,110,97,98,108,101,32,70,114,101,101,84,121,112,101,32,102,111,110,116,32,114,97,115,116,101,114,105,122,101,114,58,32,121,101,115,44,32,110,111,0,0,0,0,0,0,0,0,45,97,97,0,0,0,0,0,101,110,97,98,108,101,32,102,111,110,116,32,97,110,116,105,45,97,108,105,97,115,105,110,103,58,32,121,101,115,44,32,110,111,0,0,0,0,0,0,45,97,97,86,101,99,116,111,114,0,0,0,0,0,0,0,101,110,97,98,108,101,32,118,101,99,116,111,114,32,97,110,116,105,45,97,108,105,97,115,105,110,103,58,32,121,101,115,44,32,110,111,0,0,0,0,45,111,112,119,0,0,0,0,111,119,110,101,114,32,112,97,115,115,119,111,114,100,32,40,102,111,114,32,101,110,99,114,121,112,116,101,100,32,102,105,108,101,115,41,0,0,0,0,45,117,112,119,0,0,0,0,117,115,101,114,32,112,97,115,115,119,111,114,100,32,40,102,111,114,32,101,110,99,114,121,112,116,101,100,32,102,105,108,101,115,41,0,0,0,0,0,45,113,0,0,0,0,0,0,100,111,110,39,116,32,112,114,105,110,116,32,97,110,121,32,109,101,115,115,97,103,101,115,32,111,114,32,101,114,114,111,114,115,0,0,0,0,0,0,45,118,0,0,0,0,0,0,112,114,105,110,116,32,99,111,112,121,114,105,103,104,116,32,97,110,100,32,118,101,114,115,105,111,110,32,105,110,102,111,0,0,0,0,0,0,0,0,45,104,0,0,0,0,0,0,112,114,105,110,116,32,117,115,97,103,101,32,105,110,102,111,114,109,97,116,105,111,110,0,45,104,101,108,112,0,0,0,45,45,104,101,108,112,0,0,45,63,0,0,0,0,0,0,97,118,111,105,100,105,110,103,32,119,114,105,116,105,110,103,32,116,111,32,115,116,100,111,117,116,0,0,0,0,0,0,45,45,0,0,0,0,0,0,85,115,97,103,101,58,32,37,115,32,91,111,112,116,105,111,110,115,93,0,0,0,0,0,32,37,115,0,0,0,0,0,32,32,37,115,0,0,0,0,32,60,105,110,116,62,0,0,32,60,102,112,62,0,0,0,32,60,115,116,114,105,110,103,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,45,42,115,0,0,0,0,58,32,37,115,0,0,0,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,32,105,110,32,97,114,103,32,116,97,98,108,101,10,0,0,0,0,115,49,76,101,110,32,62,61,32,48,0,0,0,0,0,0,71,111,111,83,116,114,105,110,103,46,99,99,0,0,0,0,83,101,116,0,0,0,0,0,115,50,76,101,110,32,62,61,32,48,0,0,0,0,0,0,105,100,120,32,43,32,108,101,110,103,116,104,65,32,60,61,32,115,116,114,45,62,108,101,110,103,116,104,0,0,0,0,71,111,111,83,116,114,105,110,103,0,0,0,0,0,0,0,200,11,0,0,208,11,0,0,216,11,0,0,224,11,0,0,232,11,0,0,240,11,0,0,248,11,0,0,0,12,0,0,8,12,0,0,16,12,0,0,24,12,0,0,32,12,0,0,40,12,0,0,48,12,0,0,56,12,0,0,64,12,0,0,72,12,0,0,80,12,0,0,88,12,0,0,96,12,0,0,104,12,0,0,112,12,0,0,120,12,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,117,100,0,0,0,0,0,0,117,120,0,0,0,0,0,0,117,111,0,0,0,0,0,0,117,98,0,0,0,0,0,0,108,100,0,0,0,0,0,0,108,120,0,0,0,0,0,0,108,111,0,0,0,0,0,0,108,98,0,0,0,0,0,0,117,108,100,0,0,0,0,0,117,108,120,0,0,0,0,0,117,108,111,0,0,0,0,0,117,108,98,0,0,0,0,0,102,0,0,0,0,0,0,0,103,115,0,0,0,0,0,0,103,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,66,111,103,117,115,32,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,115,105,122,101,10,0,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,10,0,0,119,98,0,0,0,0,0,0,80,52,10,37,100,32,37,100,10,0,0,0,0,0,0,0,80,53,10,37,100,32,37,100,10,50,53,53,10,0,0,0,80,54,10,37,100,32,37,100,10,50,53,53,10,0,0,0,1,0,0,0,0,0,0,0,69,114,114,111,114,32,40,37,100,41,58,32,0,0,0,0,69,114,114,111,114,58,32,0,0,0,0,0,0,0,0,0,0,0,0,0,144,69,0,0,1,0,0,0,2,0,0,0,46,120,112,100,102,0,0,0,85,84,70,45,56,0,0,0,33,0,0,0,224,70,0,0,35,0,0,0,232,70,0,0,36,0,0,0,240,70,0,0,37,0,0,0,248,70,0,0,38,0,0,0,0,71,0,0,39,0,0,0,8,71,0,0,40,0,0,0,16,71,0,0,41,0,0,0,24,71,0,0,42,0,0,0,32,71,0,0,43,0,0,0,40,71,0,0,44,0,0,0,48,71,0,0,45,0,0,0,56,71,0,0,46,0,0,0,64,71,0,0,47,0,0,0,72,71,0,0,48,0,0,0,80,71,0,0,49,0,0,0,88,71,0,0,50,0,0,0,96,71,0,0,51,0,0,0,104,71,0,0,52,0,0,0,112,71,0,0,53,0,0,0,120,71,0,0,54,0,0,0,128,71,0,0,55,0,0,0,136,71,0,0,56,0,0,0,144,71,0,0,57,0,0,0,152,71,0,0,58,0,0,0,160,71,0,0,59,0,0,0,168,71,0,0,60,0,0,0,176,71,0,0,61,0,0,0,184,71,0,0,62,0,0,0,192,71,0,0,63,0,0,0,200,71,0,0,64,0,0,0,208,71,0,0,65,0,0,0,216,71,0,0,198,0,0,0,224,71,0,0,252,1,0,0,232,71,0,0,230,247,0,0,240,71,0,0,193,0,0,0,248,71,0,0,225,247,0,0,0,72,0,0,2,1,0,0,16,72,0,0,194,0,0,0,24,72,0,0,226,247,0,0,40,72,0,0,201,246,0,0,64,72,0,0,180,247,0,0,72,72,0,0,196,0,0,0,88,72,0,0,228,247,0,0,104,72,0,0,192,0,0,0,120,72,0,0,224,247,0,0,128,72,0,0,145,3,0,0,144,72,0,0,134,3,0,0,152,72,0,0,0,1,0,0,168,72,0,0,4,1,0,0,176,72,0,0,197,0,0,0,184,72,0,0,250,1,0,0,192,72,0,0,229,247,0,0,208,72,0,0,97,247,0,0,224,72,0,0,195,0,0,0,232,72,0,0,227,247,0,0,240,72,0,0,66,0,0,0,0,73,0,0,146,3,0,0,8,73,0,0,244,246,0,0,16,73,0,0,98,247,0,0,32,73,0,0,67,0,0,0,40,73,0,0,6,1,0,0,48,73,0,0,202,246,0,0,56,73,0,0,245,246,0,0,64,73,0,0,12,1,0,0,80,73,0,0,199,0,0,0,88,73,0,0,231,247,0,0,104,73,0,0,8,1,0,0,120,73,0,0,10,1,0,0,136,73,0,0,184,247,0,0,152,73,0,0,167,3,0,0,168,73,0,0,246,246,0,0,176,73,0,0,99,247,0,0,192,73,0,0,68,0,0,0,200,73,0,0,14,1,0,0,208,73,0,0,16,1,0,0,216,73,0,0,6,34,0,0,224,73,0,0,203,246,0,0,232,73,0,0,204,246,0,0,248,73,0,0,205,246,0,0,8,74,0,0,168,247,0,0,24,74,0,0,247,246,0,0,40,74,0,0,100,247,0,0,56,74,0,0,69,0,0,0,64,74,0,0,201,0,0,0,72,74,0,0,233,247,0,0,80,74,0,0,20,1,0,0,96,74,0,0,26,1,0,0,104,74,0,0,202,0,0,0,112,74,0,0,234,247,0,0,128,74,0,0,203,0,0,0,152,74,0,0,235,247,0,0,168,74,0,0,22,1,0,0,184,74,0,0,200,0,0,0,200,74,0,0,232,247,0,0,208,74,0,0,18,1,0,0,224,74,0,0,74,1,0,0,232,74,0,0,24,1,0,0,240,74,0,0,149,3,0,0,248,74,0,0,136,3,0,0,0,75,0,0,101,247,0,0,16,75,0,0,151,3,0,0,24,75,0,0,137,3,0,0,32,75,0,0,208,0,0,0,48,75,0,0,240,247,0,0,56,75,0,0,172,32,0,0,72,75,0,0,70,0,0,0,80,75,0,0,102,247,0,0,88,75,0,0,71,0,0,0,96,75,0,0,147,3,0,0,104,75,0,0,30,1,0,0,112,75,0,0,230,1,0,0,120,75,0,0,28,1,0,0,128,75,0,0,34,1,0,0,144,75,0,0,32,1,0,0,160,75,0,0,206,246,0,0,176,75,0,0,96,247,0,0,184,75,0,0,103,247,0,0,200,75,0,0,72,0,0,0,208,75,0,0,207,37,0,0,216,75,0,0,170,37,0,0,224,75,0,0,171,37,0,0,232,75,0,0,161,37,0,0,240,75,0,0,38,1,0,0,248,75,0,0,36,1,0,0,0,76,0,0,104,247,0,0,16,76,0,0,207,246,0,0,24,76,0,0,248,246,0,0,40,76,0,0,73,0,0,0,64,76,0,0,50,1,0,0,72,76,0,0,205,0,0,0,80,76,0,0,237,247,0,0,88,76,0,0,44,1,0,0,104,76,0,0,206,0,0,0,112,76,0,0,238,247,0,0,128,76,0,0,207,0,0,0,152,76,0,0,239,247,0,0,168,76,0,0,48,1,0,0,184,76,0,0,17,33,0,0,200,76,0,0,204,0,0,0,216,76,0,0,236,247,0,0,224,76,0,0,42,1,0,0,240,76,0,0,46,1,0,0,248,76,0,0,153,3,0,0,0,77,0,0,170,3,0,0,8,77,0,0,138,3,0,0,24,77,0,0,105,247,0,0,40,77,0,0,40,1,0,0,48,77,0,0,74,0,0,0,56,77,0,0,52,1,0,0,64,77,0,0,106,247,0,0,80,77,0,0,75,0,0,0,88,77,0,0,154,3,0,0,96,77,0,0,54,1,0,0,104,77,0,0,107,247,0,0,120,77,0,0,76,0,0,0,128,77,0,0,191,246,0,0,136,77,0,0,57,1,0,0,144,77,0,0,155,3,0,0,152,77,0,0,61,1,0,0,160,77,0,0,59,1,0,0,168,77,0,0,63,1,0,0,184,77,0,0,65,1,0,0,192,77,0,0,249,246,0,0,200,77,0,0,108,247,0,0,216,77,0,0,77,0,0,0,224,77,0,0,208,246,0,0,232,77,0,0,175,247,0,0,240,77,0,0,109,247,0,0,0,78,0,0,156,3,0,0,8,78,0,0,78,0,0,0,16,78,0,0,67,1,0,0,24,78,0,0,71,1,0,0,32,78,0,0,69,1,0,0,40,78,0,0,110,247,0,0,56,78,0,0,209,0,0,0,64,78,0,0,241,247,0,0,72,78,0,0,157,3,0,0,88,78,0,0,79,0,0,0,96,78,0,0,82,1,0,0,104,78,0,0,250,246,0,0,112,78,0,0,211,0,0,0,120,78,0,0,243,247,0,0,128,78,0,0,78,1,0,0,144,78,0,0,212,0,0,0,152,78,0,0,244,247,0,0,168,78,0,0,214,0,0,0,192,78,0,0,246,247,0,0,208,78,0,0,251,246,0,0,224,78,0,0,210,0,0,0,240,78,0,0,242,247,0,0,248,78,0,0,160,1,0,0,8,79,0,0,80,1,0,0,16,79,0,0,76,1,0,0,32,79,0,0,38,33,0,0,40,79,0,0,143,3,0,0,48,79,0,0,159,3,0,0,64,79,0,0,140,3,0,0,72,79,0,0,216,0,0,0,88,79,0,0,254,1,0,0,96,79,0,0,248,247,0,0,112,79,0,0,111,247,0,0,128,79,0,0,213,0,0,0,136,79,0,0,245,247,0,0,144,79,0,0,80,0,0,0,160,79,0,0,166,3,0,0,168,79,0,0,160,3,0,0,176,79,0,0,168,3,0,0,184,79,0,0,112,247,0,0,192,79,0,0,81,0,0,0,200,79,0,0,113,247,0,0,208,79,0,0,82,0,0,0,216,79,0,0,84,1,0,0,224,79,0,0,88,1,0,0,232,79,0,0,86,1,0,0,240,79,0,0,28,33,0,0,0,80,0,0,161,3,0,0,16,80,0,0,252,246,0,0,24,80,0,0,114,247,0,0,40,80,0,0,83,0,0,0,48,80,0,0,12,37,0,0,56,80,0,0,20,37,0,0,72,80,0,0,16,37,0,0,88,80,0,0,24,37,0,0,104,80,0,0,60,37,0,0,120,80,0,0,44,37,0,0,136,80,0,0,52,37,0,0,152,80,0,0,28,37,0,0,168,80,0,0,36,37,0,0,184,80,0,0,0,37,0,0,200,80,0,0,2,37,0,0,216,80,0,0,97,37,0,0,232,80,0,0,98,37,0,0,248,80,0,0,86,37,0,0,8,81,0,0,85,37,0,0,24,81,0,0,99,37,0,0,40,81,0,0,81,37,0,0,56,81,0,0,87,37,0,0,72,81,0,0,93,37,0,0,88,81,0,0,92,37,0,0,104,81,0,0,91,37,0,0,120,81,0,0,94,37,0,0,136,81,0,0,95,37,0,0,152,81,0,0,90,37,0,0,168,81,0,0,84,37,0,0,184,81,0,0,105,37,0,0,200,81,0,0,102,37,0,0,216,81,0,0,96,37,0,0,232,81,0,0,80,37,0,0,248,81,0,0,108,37,0,0,8,82,0,0,103,37,0,0,24,82,0,0,104,37,0,0,40,82,0,0,100,37,0,0,56,82,0,0,101,37,0,0,72,82,0,0,89,37,0,0,88,82,0,0,88,37,0,0,104,82,0,0,82,37,0,0,120,82,0,0,83,37,0,0,136,82,0,0,107,37,0,0,152,82,0,0,106,37,0,0,168,82,0,0,90,1,0,0,184,82,0,0,96,1,0,0,192,82,0,0,253,246,0,0,200,82,0,0,94,1,0,0,216,82,0,0,92,1,0,0,232,82,0,0,24,2,0,0,248,82,0,0,163,3,0,0,8,83,0,0,115,247,0,0,16,83,0,0,84,0,0,0,24,83,0,0,164,3,0,0,32,83,0,0,102,1,0,0,40,83,0,0,100,1,0,0,48,83,0,0,98,1,0,0,56,83,0,0,152,3,0,0,72,83,0,0,222,0,0,0,80,83,0,0,254,247,0,0,88,83,0,0,254,246,0,0,104,83,0,0,116,247,0,0,120,83,0,0,85,0,0,0,128,83,0,0,218,0,0,0,136,83,0,0,250,247,0,0,144,83,0,0,108,1,0,0,160,83,0,0,219,0,0,0,168,83,0,0,251,247,0,0,184,83,0,0,220,0,0,0,208,83,0,0,252,247,0,0,224,83,0,0,217,0,0,0,240,83,0,0,249,247,0,0,248,83,0,0,175,1,0,0,8,84,0,0,112,1,0,0,16,84,0,0,106,1,0,0,32,84,0,0,114,1,0,0,40,84,0,0,165,3,0,0,48,84,0,0,210,3,0,0,56,84,0,0,171,3,0,0,72,84,0,0,142,3,0,0,88,84,0,0,110,1,0,0,104,84,0,0,117,247,0,0,112,84,0,0,104,1,0,0,120,84,0,0,86,0,0,0,128,84,0,0,118,247,0,0,136,84,0,0,87,0,0,0,144,84,0,0,130,30,0,0,152,84,0,0,116,1,0,0,160,84,0,0,132,30,0,0,176,84,0,0,128,30,0,0,192,84,0,0,119,247,0,0,200,84,0,0,88,0,0,0,208,84,0,0,158,3,0,0,216,84,0,0,120,247,0,0,224,84,0,0,89,0,0,0,232,84,0,0,221,0,0,0,240,84,0,0,253,247,0,0,248,84,0,0,118,1,0,0,8,85,0,0,120,1,0,0,24,85,0,0,255,247,0,0,40,85,0,0,242,30,0,0,56,85,0,0,121,247,0,0,64,85,0,0,90,0,0,0,72,85,0,0,121,1,0,0,80,85,0,0,125,1,0,0,88,85,0,0,255,246,0,0,96,85,0,0,123,1,0,0,112,85,0,0,150,3,0,0,128,85,0,0,122,247,0,0,136,85,0,0,34,0,0,0,144,85,0,0,92,0,0,0,152,85,0,0,93,0,0,0,160,85,0,0,94,0,0,0,168,85,0,0,95,0,0,0,176,85,0,0,96,0,0,0,184,85,0,0,97,0,0,0,192,85,0,0,225,0,0,0,200,85,0,0,3,1,0,0,208,85,0,0,226,0,0,0,216,85,0,0,180,0,0,0,232,85,0,0,1,3,0,0,240,85,0,0,228,0,0,0,0,86,0,0,230,0,0,0,16,86,0,0,253,1,0,0,24,86,0,0,21,32,0,0,32,86,0,0,16,4,0,0,48,86,0,0,17,4,0,0,64,86,0,0,18,4,0,0,80,86,0,0,19,4,0,0,96,86,0,0,20,4,0,0,112,86,0,0,21,4,0,0,128,86,0,0,1,4,0,0,144,86,0,0,22,4,0,0,160,86,0,0,23,4,0,0,176,86,0,0,24,4,0,0,192,86,0,0,25,4,0,0,208,86,0,0,26,4,0,0,224,86,0,0,27,4,0,0,240,86,0,0,28,4,0,0,0,87,0,0,29,4,0,0,16,87,0,0,30,4,0,0,32,87,0,0,31,4,0,0,48,87,0,0,32,4,0,0,64,87,0,0,33,4,0,0,80,87,0,0,34,4,0,0,96,87,0,0,35,4,0,0,112,87,0,0,36,4,0,0,128,87,0,0,37,4,0,0,144,87,0,0,38,4,0,0,160,87,0,0,39,4,0,0,176,87,0,0,40,4,0,0,192,87,0,0,41,4,0,0,208,87,0,0,42,4,0,0,224,87,0,0,43,4,0,0,240,87,0,0,44,4,0,0,0,88,0,0,45,4,0,0,16,88,0,0,46,4,0,0,32,88,0,0,47,4,0,0,48,88,0,0,144,4,0,0,64,88,0,0,2,4,0,0,80,88,0,0,3,4,0,0,96,88,0,0,4,4,0,0,112,88,0,0,5,4,0,0,128,88,0,0,6,4,0,0,144,88,0,0,7,4,0,0,160,88,0,0,8,4,0,0,176,88,0,0,9,4,0,0,192,88,0,0,10,4,0,0,208,88,0,0,11,4,0,0,224,88,0,0,12,4,0,0,240,88,0,0,14,4,0,0,0,89,0,0,196,246,0,0,16,89,0,0,197,246,0,0,32,89,0,0,48,4,0,0,48,89,0,0,49,4,0,0,64,89,0,0,50,4,0,0,80,89,0,0,51,4,0,0,96,89,0,0,52,4,0,0,112,89,0,0,53,4,0,0,128,89,0,0,81,4,0,0,144,89,0,0,54,4,0,0,160,89,0,0,55,4,0,0,176,89,0,0,56,4,0,0,192,89,0,0,57,4,0,0,208,89,0,0,58,4,0,0,224,89,0,0,59,4,0,0,240,89,0,0,60,4,0,0,0,90,0,0,61,4,0,0,16,90,0,0,62,4,0,0,32,90,0,0,63,4,0,0,48,90,0,0,64,4,0,0,64,90,0,0,65,4,0,0,80,90,0,0,66,4,0,0,96,90,0,0,67,4,0,0,112,90,0,0,68,4,0,0,128,90,0,0,69,4,0,0,144,90,0,0,70,4,0,0,160,90,0,0,71,4,0,0,176,90,0,0,72,4,0,0,192,90,0,0,73,4,0,0,208,90,0,0,74,4,0,0,224,90,0,0,75,4,0,0,240,90,0,0,76,4,0,0,0,91,0,0,77,4,0,0,16,91,0,0,78,4,0,0,32,91,0,0,79,4,0,0,48,91,0,0,145,4,0,0,64,91,0,0,82,4,0,0,80,91,0,0,83,4,0,0,96,91,0,0,84,4,0,0,112,91,0,0,85,4,0,0,128,91,0,0,86,4,0,0,144,91,0,0,87,4,0,0,160,91,0,0,88,4,0,0,176,91,0,0,89,4,0,0,192,91,0,0,90,4,0,0,208,91,0,0,91,4,0,0,224,91,0,0,92,4,0,0,240,91,0,0,94,4,0,0,0,92,0,0,15,4,0,0,16,92,0,0,98,4,0,0,32,92,0,0,114,4,0,0,48,92,0,0,116,4,0,0,64,92,0,0,198,246,0,0,80,92,0,0,95,4,0,0,96,92,0,0,99,4,0,0,112,92,0,0,115,4,0,0,128,92,0,0,117,4,0,0,144,92,0,0,199,246,0,0,160,92,0,0,200,246,0,0,176,92,0,0,217,4,0,0,192,92,0,0,14,32,0,0,208,92,0,0,15,32,0,0,216,92,0,0,13,32,0,0,224,92,0,0,106,6,0,0,232,92,0,0,12,6,0,0,248,92,0,0,96,6,0,0,8,93,0,0,97,6,0,0,24,93,0,0,98,6,0,0,40,93,0,0,99,6,0,0,56,93,0,0,100,6,0,0,72,93,0,0,101,6,0,0,88,93,0,0,102,6,0,0,104,93,0,0,103,6,0,0,120,93,0,0,104,6,0,0,136,93,0,0,105,6,0,0,152,93,0,0,27,6,0,0,168,93,0,0,31,6,0,0,184,93,0,0,33,6,0,0,200,93,0,0,34,6,0,0,216,93,0,0,35,6,0,0,232,93,0,0,36,6,0,0,248,93,0,0,37,6,0,0,8,94,0,0,38,6,0,0,24,94,0,0,39,6,0,0,40,94,0,0,40,6,0,0,56,94,0,0,41,6,0,0,72,94,0,0,42,6,0,0,88,94,0,0,43,6,0,0,104,94,0,0,44,6,0,0,120,94,0,0,45,6,0,0,136,94,0,0,46,6,0,0,152,94,0,0,47,6,0,0,168,94,0,0,48,6,0,0,184,94,0,0,49,6,0,0,200,94,0,0,50,6,0,0,216,94,0,0,51,6,0,0,232,94,0,0,52,6,0,0,248,94,0,0,53,6,0,0,8,95,0,0,54,6,0,0,24,95,0,0,55,6,0,0,40,95,0,0,56,6,0,0,56,95,0,0,57,6,0,0,72,95,0,0,58,6,0,0,88,95,0,0,64,6,0,0,104,95,0,0,65,6,0,0,120,95,0,0,66,6,0,0,136,95,0,0,67,6,0,0,152,95,0,0,68,6,0,0,168,95,0,0,69,6,0,0,184,95,0,0,70,6,0,0,200,95,0,0,72,6,0,0,216,95,0,0,73,6,0,0,232,95,0,0,74,6,0,0,248,95,0,0,75,6,0,0,8,96,0,0,76,6,0,0,24,96,0,0,77,6,0,0,40,96,0,0,78,6,0,0,56,96,0,0,79,6,0,0,72,96,0,0,80,6,0,0,88,96,0,0,81,6,0,0,104,96,0,0,82,6,0,0,120,96,0,0,71,6,0,0,136,96,0,0,164,6,0,0,152,96,0,0,126,6,0,0,168,96,0,0,134,6,0,0,184,96,0,0,152,6,0,0,200,96,0,0,175,6,0,0,216,96,0,0,121,6,0,0,232,96,0,0,136,6,0,0,248,96,0,0,145,6,0,0,8,97,0,0,186,6,0,0,24,97,0,0,210,6,0,0,40,97,0,0,213,6,0,0,56,97,0,0,170,32,0,0,72,97,0,0,190,5,0,0,88,97,0,0,195,5,0,0,104,97,0,0,208,5,0,0,120,97,0,0,209,5,0,0,136,97,0,0,210,5,0,0,152,97,0,0,211,5,0,0,168,97,0,0,212,5,0,0,184,97,0,0,213,5,0,0,200,97,0,0,214,5,0,0,216,97,0,0,215,5,0,0,232,97,0,0,216,5,0,0,248,97,0,0,217,5,0,0,8,98,0,0,218,5,0,0,24,98,0,0,219,5,0,0,40,98,0,0,220,5,0,0,56,98,0,0,221,5,0,0,72,98,0,0,222,5,0,0,88,98,0,0,223,5,0,0,104,98,0,0,224,5,0,0,120,98,0,0,225,5,0,0,136,98,0,0,226,5,0,0,152,98,0,0,227,5,0,0,168,98,0,0,228,5,0,0,184,98,0,0,229,5,0,0,200,98,0,0,230,5,0,0,216,98,0,0,231,5,0,0,232,98,0,0,232,5,0,0,248,98,0,0,233,5,0,0,8,99,0,0,234,5,0,0,24,99,0,0,42,251,0,0,40,99,0,0,43,251,0,0,56,99,0,0,75,251,0,0,72,99,0,0,31,251,0,0,88,99,0,0,240,5,0,0,104,99,0,0,241,5,0,0,120,99,0,0,242,5,0,0,136,99,0,0,53,251,0,0,152,99,0,0,180,5,0,0,168,99,0,0,181,5,0,0,184,99,0,0,182,5,0,0,200,99,0,0,187,5,0,0,216,99,0,0,184,5,0,0,232,99,0,0,183,5,0,0,248,99,0,0,176,5,0,0,8,100,0,0,178,5,0,0,24,100,0,0,177,5,0,0,40,100,0,0,179,5,0,0,56,100,0,0,194,5,0,0,72,100,0,0,193,5,0,0,88,100,0,0,185,5,0,0,104,100,0,0,188,5,0,0,120,100,0,0,189,5,0,0,136,100,0,0,191,5,0,0,152,100,0,0,192,5,0,0,168,100,0,0,188,2,0,0,184,100,0,0,5,33,0,0,200,100,0,0,19,33,0,0,216,100,0,0,22,33,0,0,232,100,0,0,44,32,0,0,248,100,0,0,45,32,0,0,8,101,0,0,46,32,0,0,24,101,0,0,12,32,0,0,40,101,0,0,109,6,0,0,56,101,0,0,189,2,0,0,72,101,0,0,224,0,0,0,88,101,0,0,53,33,0,0,96,101,0,0,177,3,0,0,104,101,0,0,172,3,0,0,112,101,0,0,1,1,0,0,128,101,0,0,38,0,0,0,136,101,0,0,38,247,0,0,152,101,0,0,32,34,0,0,168,101,0,0,41,35,0,0,176,101,0,0,42,35,0,0,192,101,0,0,135,3,0,0,208,101,0,0,5,1,0,0,224,101,0,0,72,34,0,0,232,101,0,0,229,0,0,0,248,101,0,0,251,1,0,0,0,102,0,0,148,33,0,0,16,102,0,0,212,33,0,0,32,102,0,0,211,33,0,0,48,102,0,0,208,33,0,0,64,102,0,0,210,33,0,0,80,102,0,0,209,33,0,0,96,102,0,0,147,33,0,0,112,102,0,0,231,248,0,0,128,102,0,0,144,33,0,0,144,102,0,0,146,33,0,0,160,102,0,0,145,33,0,0,176,102,0,0,149,33,0,0,184,102,0,0,168,33,0,0,200,102,0,0,230,248,0,0,216,102,0,0,94,0,0,0,232,102,0,0,126,0,0,0,248,102,0,0,42,0,0,0,8,103,0,0,23,34,0,0,24,103,0,0,233,246,0,0,40,103,0,0,64,0,0,0,56,103,0,0,227,0,0,0,64,103,0,0,98,0,0,0,72,103,0,0,92,0,0,0,80,103,0,0,124,0,0,0,96,103,0,0,178,3,0,0,104,103,0,0,136,37,0,0,112,103,0,0,244,248,0,0,120,103,0,0,123,0,0,0,128,103,0,0,243,248,0,0,144,103,0,0,242,248,0,0,160,103,0,0,241,248,0,0,176,103,0,0,125,0,0,0,192,103,0,0,254,248,0,0,208,103,0,0,253,248,0,0,224,103,0,0,252,248,0,0,240,103,0,0,91,0,0,0,0,104,0,0,240,248,0,0,16,104,0,0,239,248,0,0,32,104,0,0,238,248,0,0,48,104,0,0,93,0,0,0,64,104,0,0,251,248,0,0,80,104,0,0,250,248,0,0,96,104,0,0,249,248,0,0,112,104,0,0,216,2,0,0,128,104,0,0,166,0,0,0,136,104,0,0,234,246,0,0,152,104,0,0,34,32,0,0,168,104,0,0,99,0,0,0,176,104,0,0,7,1,0,0,184,104,0,0,199,2,0,0,192,104,0,0,181,33,0,0,200,104,0,0,13,1,0,0,216,104,0,0,231,0,0,0,224,104,0,0,9,1,0,0,240,104,0,0,11,1,0,0,0,105,0,0,184,0,0,0,16,105,0,0,162,0,0,0,24,105,0,0,223,246,0,0,32,105,0,0,162,247,0,0,48,105,0,0,224,246,0,0,64,105,0,0,199,3,0,0,80,105,0,0,203,37,0,0,88,105,0,0,151,34,0,0,96,105,0,0,149,34,0,0,112,105,0,0,198,2,0,0,128,105,0,0,99,38,0,0,144,105,0,0,58,0,0,0,152,105,0,0,161,32,0,0,160,105,0,0,44,0,0,0,176,105,0,0,195,246,0,0,184,105,0,0,225,246,0,0,200,105,0,0,226,246,0,0,216,105,0,0,69,34,0,0,232,105,0,0,169,0,0,0,248,105,0,0,169,0,0,0,8,106,0,0,169,0,0,0,24,106,0,0,164,0,0,0,40,106,0,0,209,246,0,0,56,106,0,0,210,246,0,0,72,106,0,0,212,246,0,0,80,106,0,0,213,246,0,0,96,106,0,0,100,0,0,0,104,106,0,0,32,32,0,0,112,106,0,0,33,32,0,0,120,106,0,0,211,246,0,0,136,106,0,0,214,246,0,0,152,106,0,0,15,1,0,0,168,106,0,0,17,1,0,0,176,106,0,0,176,0,0,0,184,106,0,0,180,3,0,0,192,106,0,0,102,38,0,0,200,106,0,0,168,0,0,0,208,106,0,0,215,246,0,0,224,106,0,0,216,246,0,0,240,106,0,0,133,3,0,0,0,107,0,0,247,0,0,0,16,107,0,0,147,37,0,0,24,107,0,0,132,37,0,0,32,107,0,0,36,0,0,0,40,107,0,0,227,246,0,0,48,107,0,0,36,247,0,0,64,107,0,0,228,246,0,0,80,107,0,0,171,32,0,0,96,107,0,0,217,2,0,0,104,107,0,0,35,3,0,0,120,107,0,0,49,1,0,0,136,107,0,0,190,246,0,0,152,107,0,0,197,34,0,0,168,107,0,0,235,246,0,0,176,107,0,0,101,0,0,0,192,107,0,0,233,0,0,0,200,107,0,0,21,1,0,0,208,107,0,0,27,1,0,0,216,107,0,0,234,0,0,0,224,107,0,0,235,0,0,0,240,107,0,0,23,1,0,0,0,108,0,0,232,0,0,0,16,108,0,0,56,0,0,0,24,108,0,0,136,32,0,0,32,108,0,0,56,247,0,0,48,108,0,0,120,32,0,0,64,108,0,0,8,34,0,0,80,108,0,0,38,32,0,0,88,108,0,0,19,1,0,0,104,108,0,0,20,32,0,0,112,108,0,0,5,34,0,0,120,108,0,0,19,32,0,0,136,108,0,0,75,1,0,0,144,108,0,0,25,1,0,0,152,108,0,0,181,3,0,0,160,108,0,0,173,3,0,0,168,108,0,0,61,0,0,0,184,108,0,0,97,34,0,0,192,108,0,0,46,33,0,0,208,108,0,0,236,246,0,0,224,108,0,0,183,3,0,0,240,108,0,0,174,3,0,0,248,108,0,0,240,0,0,0,8,109,0,0,33,0,0,0,16,109,0,0,60,32,0,0,24,109,0,0,161,0,0,0,40,109,0,0,161,247,0,0,56,109,0,0,33,0,0,0,72,109,0,0,33,247,0,0,88,109,0,0,3,34,0,0,104,109,0,0,102,0,0,0,120,109,0,0,64,38,0,0,128,109,0,0,0,251,0,0,136,109,0,0,3,251,0,0,144,109,0,0,4,251,0,0,152,109,0,0,1,251,0,0,160,109,0,0,18,32,0,0,168,109,0,0,160,37,0,0,184,109,0,0,172,37,0,0,200,109,0,0,53,0,0,0,216,109,0,0,93,33,0,0,224,109,0,0,133,32,0,0,240,109,0,0,53,247,0,0,0,110,0,0,117,32,0,0,16,110,0,0,2,251,0,0,32,110,0,0,146,1,0,0,40,110,0,0,52,0,0,0,48,110,0,0,132,32,0,0,56,110,0,0,52,247,0,0,72,110,0,0,116,32,0,0,88,110,0,0,68,32,0,0,104,110,0,0,163,32,0,0,120,110,0,0,103,0,0,0,128,110,0,0,179,3,0,0,136,110,0,0,31,1,0,0,144,110,0,0,231,1,0,0,152,110,0,0,29,1,0,0,160,110,0,0,35,1,0,0,176,110,0,0,33,1,0,0,192,110,0,0,223,0,0,0,208,110,0,0,7,34,0,0,224,110,0,0,96,0,0,0,240,110,0,0,0,3,0,0,248,110,0,0,62,0,0,0,8,111,0,0,101,34,0,0,16,111,0,0,171,0,0,0,32,111,0,0,187,0,0,0,48,111,0,0,57,32,0,0,64,111,0,0,58,32,0,0,80,111,0,0,104,0,0,0,96,111,0,0,39,1,0,0,104,111,0,0,37,1,0,0,112,111,0,0,101,38,0,0,128,111,0,0,9,3,0,0,136,111,0,0,2,35,0,0,152,111,0,0,221,2,0,0,160,111,0,0,45,0,0,0,176,111,0,0,229,246,0,0,184,111,0,0,230,246,0,0,200,111,0,0,105,0,0,0,216,111,0,0,237,0,0,0,224,111,0,0,45,1,0,0,232,111,0,0,238,0,0,0,240,111,0,0,239,0,0,0,0,112,0,0,236,0,0,0,16,112,0,0,51,1,0,0,24,112,0,0,43,1,0,0,32,112,0,0,30,34,0,0,40,112,0,0,43,34,0,0,56,112,0,0,33,35,0,0,72,112,0,0,245,248,0,0,88,112,0,0,32,35,0,0,104,112,0,0,41,34,0,0,120,112,0,0,216,37,0,0,136,112,0,0,217,37,0,0,152,112,0,0,59,38,0,0,168,112,0,0,47,1,0,0,184,112,0,0,185,3,0,0,192,112,0,0,202,3,0,0,200,112,0,0,144,3,0,0,216,112,0,0,175,3,0,0,240,112,0,0,237,246,0,0,0,113,0,0,41,1,0,0,16,113,0,0,106,0,0,0,24,113,0,0,53,1,0,0,32,113,0,0,107,0,0,0,48,113,0,0,186,3,0,0,56,113,0,0,55,1,0,0,64,113,0,0,56,1,0,0,80,113,0,0,108,0,0,0,96,113,0,0,58,1,0,0,104,113,0,0,187,3,0,0,112,113,0,0,62,1,0,0,120,113,0,0,60,1,0,0,128,113,0,0,64,1,0,0,144,113,0,0,60,0,0,0,152,113,0,0,100,34,0,0,160,113,0,0,140,37,0,0,176,113,0,0,164,32,0,0,184,113,0,0,192,246,0,0,192,113,0,0,39,34,0,0,200,113,0,0,172,0,0,0,216,113,0,0,40,34,0,0,232,113,0,0,127,1,0,0,248,113,0,0,202,37,0,0,0,114,0,0,66,1,0,0,8,114,0,0,238,246,0,0,16,114,0,0,145,37,0,0,32,114,0,0,109,0,0,0,40,114,0,0,175,0,0,0,48,114,0,0,66,38,0,0,56,114,0,0,18,34,0,0,64,114,0,0,50,32,0,0,72,114,0,0,239,246,0,0,80,114,0,0,181,0,0,0,96,114,0,0,215,0,0,0,104,114,0,0,106,38,0,0,120,114,0,0,107,38,0,0,136,114,0,0,110,0,0,0,152,114,0,0,68,1,0,0,160,114,0,0,73,1,0,0,168,114,0,0,160,0,0,0,184,114,0,0,72,1,0,0,192,114,0,0,70,1,0,0,200,114], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); -/* memory initializer */ allocate([57,0,0,0,216,114,0,0,137,32,0,0,224,114,0,0,57,247,0,0,240,114,0,0,121,32,0,0,0,115,0,0,160,0,0,0,16,115,0,0,9,34,0,0,40,115,0,0,96,34,0,0,56,115,0,0,132,34,0,0,72,115,0,0,127,32,0,0,88,115,0,0,241,0,0,0,104,115,0,0,189,3,0,0,112,115,0,0,35,0,0,0,120,115,0,0,111,0,0,0,136,115,0,0,243,0,0,0,144,115,0,0,79,1,0,0,152,115,0,0,244,0,0,0,160,115,0,0,246,0,0,0,176,115,0,0,83,1,0,0,192,115,0,0,219,2,0,0,200,115,0,0,242,0,0,0,208,115,0,0,161,1,0,0,216,115,0,0,81,1,0,0,224,115,0,0,77,1,0,0,240,115,0,0,201,3,0,0,248,115,0,0,214,3,0,0,0,116,0,0,206,3,0,0,8,116,0,0,191,3,0,0,24,116,0,0,204,3,0,0,32,116,0,0,49,0,0,0,48,116,0,0,36,32,0,0,56,116,0,0,91,33,0,0,72,116,0,0,220,246,0,0,88,116,0,0,189,0,0,0,104,116,0,0,129,32,0,0,112,116,0,0,49,247,0,0,128,116,0,0,188,0,0,0,144,116,0,0,185,0,0,0,160,116,0,0,83,33,0,0,176,116,0,0,230,37,0,0,192,116,0,0,170,0,0,0,208,116,0,0,186,0,0,0,224,116,0,0,31,34,0,0,240,116,0,0,248,0,0,0,0,117,0,0,255,1,0,0,8,117,0,0,240,246,0,0,24,117,0,0,245,0,0,0,40,117,0,0,112,0,0,0,48,117,0,0,182,0,0,0,56,117,0,0,40,0,0,0,72,117,0,0,237,248,0,0,88,117,0,0,236,248,0,0,104,117,0,0,141,32,0,0,120,117,0,0,125,32,0,0,144,117,0,0,235,248,0,0,168,117,0,0,41,0,0,0,184,117,0,0,248,248,0,0,200,117,0,0,247,248,0,0,216,117,0,0,142,32,0,0,232,117,0,0,126,32,0,0,0,118,0,0,246,248,0,0,24,118,0,0,2,34,0,0,40,118,0,0,37,0,0,0,56,118,0,0,46,0,0,0,64,118,0,0,183,0,0,0,72,118,0,0,231,246,0,0,88,118,0,0,232,246,0,0,104,118,0,0,165,34,0,0,120,118,0,0,48,32,0,0,136,118,0,0,167,32,0,0,152,118,0,0,198,3,0,0,160,118,0,0,213,3,0,0,168,118,0,0,192,3,0,0,176,118,0,0,43,0,0,0,184,118,0,0,177,0,0,0,192,118,0,0,30,33,0,0,208,118,0,0,15,34,0,0,224,118,0,0,130,34,0,0,232,118,0,0,131,34,0,0,248,118,0,0,29,34,0,0,8,119,0,0,200,3,0,0,24,119,0,0,113,0,0,0,32,119,0,0,63,0,0,0,40,119,0,0,191,0,0,0,56,119,0,0,191,247,0,0,72,119,0,0,63,247,0,0,96,119,0,0,34,0,0,0,112,119,0,0,30,32,0,0,128,119,0,0,28,32,0,0,144,119,0,0,29,32,0,0,160,119,0,0,24,32,0,0,176,119,0,0,27,32,0,0,192,119,0,0,25,32,0,0,208,119,0,0,26,32,0,0,224,119,0,0,39,0,0,0,240,119,0,0,114,0,0,0,192,68,0,0,85,1,0,0,0,120,0,0,26,34,0,0,8,120,0,0,229,248,0,0,16,120,0,0,89,1,0,0,32,120,0,0,87,1,0,0,40,120,0,0,134,34,0,0,56,120,0,0,135,34,0,0,72,120,0,0,174,0,0,0,88,120,0,0,174,0,0,0,104,120,0,0,174,0,0,0,120,120,0,0,16,35,0,0,136,120,0,0,193,3,0,0,152,120,0,0,218,2,0,0,160,120,0,0,241,246,0,0,168,120,0,0,144,37,0,0,184,120,0,0,221,246,0,0,192,120,0,0,115,0,0,0,200,120,0,0,91,1,0,0,208,120,0,0,97,1,0,0,216,120,0,0,95,1,0,0,224,120,0,0,93,1,0,0,240,120,0,0,25,2,0,0,0,121,0,0,51,32,0,0,16,121,0,0,167,0,0,0,24,121,0,0,59,0,0,0,32,121,0,0,55,0,0,0,48,121,0,0,94,33,0,0,56,121,0,0,135,32,0,0,72,121,0,0,55,247,0,0,88,121,0,0,119,32,0,0,104,121,0,0,146,37,0,0,120,121,0,0,195,3,0,0,128,121,0,0,194,3,0,0,136,121,0,0,60,34,0,0,144,121,0,0,54,0,0,0,152,121,0,0,134,32,0,0,160,121,0,0,54,247,0,0,176,121,0,0,118,32,0,0,192,121,0,0,47,0,0,0,208,121,0,0,58,38,0,0,216,121,0,0,32,0,0,0,232,121,0,0,96,38,0,0,240,121,0,0,242,246,0,0,248,121,0,0,163,0,0,0,8,122,0,0,11,34,0,0,24,122,0,0,17,34,0,0,40,122,0,0,60,38,0,0,56,122,0,0,116,0,0,0,64,122,0,0,196,3,0,0,72,122,0,0,103,1,0,0,80,122,0,0,101,1,0,0,88,122,0,0,99,1,0,0,96,122,0,0,52,34,0,0,112,122,0,0,184,3,0,0,128,122,0,0,209,3,0,0,136,122,0,0,254,0,0,0,144,122,0,0,51,0,0,0,152,122,0,0,92,33,0,0,160,122,0,0,131,32,0,0,176,122,0,0,51,247,0,0,192,122,0,0,190,0,0,0,208,122,0,0,222,246,0,0,224,122,0,0,179,0,0,0,248,122,0,0,220,2,0,0,8,123,0,0,3,3,0,0,16,123,0,0,132,3,0,0,32,123,0,0,34,33,0,0,40,123,0,0,34,33,0,0,56,123,0,0,34,33,0,0,72,123,0,0,188,37,0,0,88,123,0,0,196,37,0,0,96,123,0,0,186,37,0,0,104,123,0,0,178,37,0,0,112,123,0,0,243,246,0,0,120,123,0,0,50,0,0,0,136,123,0,0,37,32,0,0,144,123,0,0,130,32,0,0,160,123,0,0,50,247,0,0,176,123,0,0,178,0,0,0,192,123,0,0,84,33,0,0,208,123,0,0,117,0,0,0,224,123,0,0,250,0,0,0,232,123,0,0,109,1,0,0,240,123,0,0,251,0,0,0,248,123,0,0,252,0,0,0,8,124,0,0,249,0,0,0,24,124,0,0,176,1,0,0,32,124,0,0,113,1,0,0,40,124,0,0,107,1,0,0,56,124,0,0,95,0,0,0,64,124,0,0,23,32,0,0,80,124,0,0,42,34,0,0,96,124,0,0,0,34,0,0,104,124,0,0,115,1,0,0,120,124,0,0,128,37,0,0,128,124,0,0,197,3,0,0,136,124,0,0,203,3,0,0,144,124,0,0,176,3,0,0,160,124,0,0,205,3,0,0,184,124,0,0,111,1,0,0,200,124,0,0,105,1,0,0,208,124,0,0,118,0,0,0,216,124,0,0,119,0,0,0,224,124,0,0,131,30,0,0,232,124,0,0,117,1,0,0,240,124,0,0,133,30,0,0,0,125,0,0,24,33,0,0,16,125,0,0,129,30,0,0,32,125,0,0,120,0,0,0,40,125,0,0,190,3,0,0,48,125,0,0,121,0,0,0,56,125,0,0,253,0,0,0,64,125,0,0,119,1,0,0,72,125,0,0,255,0,0,0,88,125,0,0,165,0,0,0,104,125,0,0,243,30,0,0,112,125,0,0,122,0,0,0,120,125,0,0,122,1,0,0,128,125,0,0,126,1,0,0,136,125,0,0,124,1,0,0,144,125,0,0,48,0,0,0,160,125,0,0,128,32,0,0,168,125,0,0,48,247,0,0,184,125,0,0,112,32,0,0,200,125,0,0,182,3,0,0,216,125,0,0,123,0,0,0,224,125,0,0,124,0,0,0,232,125,0,0,125,0,0,0,240,125,0,0,126,0,0,0,248,125,0,0,0,0,0,0,0,0,0,0,76,97,116,105,110,49,0,0,10,0,0,0,10,0,0,0,10,0,0,0,1,0,0,0,12,0,0,0,13,0,0,0,12,0,0,0,1,0,0,0,32,0,0,0,126,0,0,0,32,0,0,0,1,0,0,0,160,0,0,0,160,0,0,0,32,0,0,0,1,0,0,0,161,0,0,0,172,0,0,0,161,0,0,0,1,0,0,0,174,0,0,0,255,0,0,0,174,0,0,0,1,0,0,0,12,1,0,0,12,1,0,0,67,0,0,0,1,0,0,0,13,1,0,0,13,1,0,0,99,0,0,0,1,0,0,0,49,1,0,0,49,1,0,0,105,0,0,0,1,0,0,0,65,1,0,0,65,1,0,0,76,0,0,0,1,0,0,0,66,1,0,0,66,1,0,0,108,0,0,0,1,0,0,0,82,1,0,0,82,1,0,0,69,79,0,0,2,0,0,0,83,1,0,0,83,1,0,0,101,111,0,0,2,0,0,0,96,1,0,0,96,1,0,0,83,0,0,0,1,0,0,0,97,1,0,0,97,1,0,0,115,0,0,0,1,0,0,0,120,1,0,0,120,1,0,0,89,0,0,0,1,0,0,0,125,1,0,0,125,1,0,0,90,0,0,0,1,0,0,0,126,1,0,0,126,1,0,0,122,0,0,0,1,0,0,0,198,2,0,0,198,2,0,0,94,0,0,0,1,0,0,0,218,2,0,0,218,2,0,0,176,0,0,0,1,0,0,0,220,2,0,0,220,2,0,0,126,0,0,0,1,0,0,0,19,32,0,0,19,32,0,0,173,0,0,0,1,0,0,0,20,32,0,0,20,32,0,0,45,45,0,0,2,0,0,0,24,32,0,0,24,32,0,0,96,0,0,0,1,0,0,0,25,32,0,0,25,32,0,0,39,0,0,0,1,0,0,0,26,32,0,0,26,32,0,0,44,0,0,0,1,0,0,0,28,32,0,0,28,32,0,0,34,0,0,0,1,0,0,0,29,32,0,0,29,32,0,0,34,0,0,0,1,0,0,0,30,32,0,0,30,32,0,0,44,44,0,0,2,0,0,0,34,32,0,0,34,32,0,0,183,0,0,0,1,0,0,0,38,32,0,0,38,32,0,0,46,46,46,0,3,0,0,0,57,32,0,0,57,32,0,0,60,0,0,0,1,0,0,0,58,32,0,0,58,32,0,0,62,0,0,0,1,0,0,0,68,32,0,0,68,32,0,0,47,0,0,0,1,0,0,0,34,33,0,0,34,33,0,0,77,84,0,0,2,0,0,0,18,34,0,0,18,34,0,0,45,0,0,0,1,0,0,0,249,246,0,0,249,246,0,0,76,0,0,0,1,0,0,0,250,246,0,0,250,246,0,0,69,79,0,0,2,0,0,0,252,246,0,0,252,246,0,0,176,0,0,0,1,0,0,0,253,246,0,0,253,246,0,0,83,0,0,0,1,0,0,0,254,246,0,0,254,246,0,0,126,0,0,0,1,0,0,0,255,246,0,0,255,246,0,0,90,0,0,0,1,0,0,0,33,247,0,0,33,247,0,0,33,0,0,0,1,0,0,0,36,247,0,0,36,247,0,0,36,0,0,0,1,0,0,0,38,247,0,0,38,247,0,0,38,0,0,0,1,0,0,0,48,247,0,0,57,247,0,0,48,0,0,0,1,0,0,0,63,247,0,0,63,247,0,0,63,0,0,0,1,0,0,0,97,247,0,0,122,247,0,0,65,0,0,0,1,0,0,0,161,247,0,0,162,247,0,0,161,0,0,0,1,0,0,0,191,247,0,0,191,247,0,0,191,0,0,0,1,0,0,0,224,247,0,0,246,247,0,0,192,0,0,0,1,0,0,0,248,247,0,0,254,247,0,0,216,0,0,0,1,0,0,0,255,247,0,0,255,247,0,0,89,0,0,0,1,0,0,0,0,251,0,0,0,251,0,0,102,102,0,0,2,0,0,0,1,251,0,0,1,251,0,0,105,102,0,0,2,0,0,0,2,251,0,0,2,251,0,0,108,102,0,0,2,0,0,0,3,251,0,0,3,251,0,0,105,102,102,0,3,0,0,0,4,251,0,0,4,251,0,0,108,102,102,0,3,0,0,0,65,83,67,73,73,55,0,0,10,0,0,0,10,0,0,0,10,0,0,0,1,0,0,0,12,0,0,0,13,0,0,0,12,0,0,0,1,0,0,0,32,0,0,0,95,0,0,0,32,0,0,0,1,0,0,0,97,0,0,0,126,0,0,0,97,0,0,0,1,0,0,0,166,0,0,0,166,0,0,0,124,0,0,0,1,0,0,0,169,0,0,0,169,0,0,0,41,99,40,0,3,0,0,0,174,0,0,0,174,0,0,0,41,82,40,0,3,0,0,0,183,0,0,0,183,0,0,0,42,0,0,0,1,0,0,0,188,0,0,0,188,0,0,0,52,47,49,0,3,0,0,0,189,0,0,0,189,0,0,0,50,47,49,0,3,0,0,0,190,0,0,0,190,0,0,0,52,47,51,0,3,0,0,0,192,0,0,0,192,0,0,0,65,0,0,0,1,0,0,0,193,0,0,0,193,0,0,0,65,0,0,0,1,0,0,0,194,0,0,0,194,0,0,0,65,0,0,0,1,0,0,0,195,0,0,0,195,0,0,0,65,0,0,0,1,0,0,0,196,0,0,0,196,0,0,0,65,0,0,0,1,0,0,0,197,0,0,0,197,0,0,0,65,0,0,0,1,0,0,0,198,0,0,0,198,0,0,0,69,65,0,0,2,0,0,0,199,0,0,0,199,0,0,0,67,0,0,0,1,0,0,0,200,0,0,0,200,0,0,0,69,0,0,0,1,0,0,0,201,0,0,0,201,0,0,0,69,0,0,0,1,0,0,0,202,0,0,0,202,0,0,0,69,0,0,0,1,0,0,0,203,0,0,0,203,0,0,0,69,0,0,0,1,0,0,0,204,0,0,0,204,0,0,0,73,0,0,0,1,0,0,0,205,0,0,0,205,0,0,0,73,0,0,0,1,0,0,0,206,0,0,0,206,0,0,0,73,0,0,0,1,0,0,0,207,0,0,0,207,0,0,0,73,0,0,0,1,0,0,0,209,0,0,0,210,0,0,0,78,0,0,0,1,0,0,0,211,0,0,0,211,0,0,0,79,0,0,0,1,0,0,0,212,0,0,0,212,0,0,0,79,0,0,0,1,0,0,0,213,0,0,0,213,0,0,0,79,0,0,0,1,0,0,0,214,0,0,0,214,0,0,0,79,0,0,0,1,0,0,0,215,0,0,0,215,0,0,0,120,0,0,0,1,0,0,0,216,0,0,0,216,0,0,0,79,0,0,0,1,0,0,0,217,0,0,0,217,0,0,0,85,0,0,0,1,0,0,0,218,0,0,0,218,0,0,0,85,0,0,0,1,0,0,0,219,0,0,0,219,0,0,0,85,0,0,0,1,0,0,0,220,0,0,0,220,0,0,0,85,0,0,0,1,0,0,0,221,0,0,0,221,0,0,0,89,0,0,0,1,0,0,0,224,0,0,0,224,0,0,0,97,0,0,0,1,0,0,0,225,0,0,0,225,0,0,0,97,0,0,0,1,0,0,0,226,0,0,0,226,0,0,0,97,0,0,0,1,0,0,0,227,0,0,0,227,0,0,0,97,0,0,0,1,0,0,0,228,0,0,0,228,0,0,0,97,0,0,0,1,0,0,0,229,0,0,0,229,0,0,0,97,0,0,0,1,0,0,0,230,0,0,0,230,0,0,0,101,97,0,0,2,0,0,0,231,0,0,0,231,0,0,0,99,0,0,0,1,0,0,0,232,0,0,0,232,0,0,0,101,0,0,0,1,0,0,0,233,0,0,0,233,0,0,0,101,0,0,0,1,0,0,0,234,0,0,0,234,0,0,0,101,0,0,0,1,0,0,0,235,0,0,0,235,0,0,0,101,0,0,0,1,0,0,0,236,0,0,0,236,0,0,0,105,0,0,0,1,0,0,0,237,0,0,0,237,0,0,0,105,0,0,0,1,0,0,0,238,0,0,0,238,0,0,0,105,0,0,0,1,0,0,0,239,0,0,0,239,0,0,0,105,0,0,0,1,0,0,0,241,0,0,0,242,0,0,0,110,0,0,0,1,0,0,0,243,0,0,0,243,0,0,0,111,0,0,0,1,0,0,0,244,0,0,0,244,0,0,0,111,0,0,0,1,0,0,0,245,0,0,0,245,0,0,0,111,0,0,0,1,0,0,0,246,0,0,0,246,0,0,0,111,0,0,0,1,0,0,0,247,0,0,0,247,0,0,0,47,0,0,0,1,0,0,0,248,0,0,0,248,0,0,0,111,0,0,0,1,0,0,0,249,0,0,0,249,0,0,0,117,0,0,0,1,0,0,0,250,0,0,0,250,0,0,0,117,0,0,0,1,0,0,0,251,0,0,0,251,0,0,0,117,0,0,0,1,0,0,0,252,0,0,0,252,0,0,0,117,0,0,0,1,0,0,0,253,0,0,0,253,0,0,0,121,0,0,0,1,0,0,0,255,0,0,0,255,0,0,0,121,0,0,0,1,0,0,0,49,1,0,0,49,1,0,0,105,0,0,0,1,0,0,0,65,1,0,0,65,1,0,0,76,0,0,0,1,0,0,0,82,1,0,0,82,1,0,0,69,79,0,0,2,0,0,0,83,1,0,0,83,1,0,0,101,111,0,0,2,0,0,0,96,1,0,0,96,1,0,0,83,0,0,0,1,0,0,0,120,1,0,0,120,1,0,0,89,0,0,0,1,0,0,0,125,1,0,0,125,1,0,0,90,0,0,0,1,0,0,0,19,32,0,0,19,32,0,0,45,0,0,0,1,0,0,0,20,32,0,0,20,32,0,0,45,45,0,0,2,0,0,0,24,32,0,0,24,32,0,0,96,0,0,0,1,0,0,0,25,32,0,0,25,32,0,0,39,0,0,0,1,0,0,0,28,32,0,0,28,32,0,0,34,0,0,0,1,0,0,0,29,32,0,0,29,32,0,0,34,0,0,0,1,0,0,0,34,32,0,0,34,32,0,0,42,0,0,0,1,0,0,0,38,32,0,0,38,32,0,0,46,46,46,0,3,0,0,0,34,33,0,0,34,33,0,0,77,84,0,0,2,0,0,0,18,34,0,0,18,34,0,0,45,0,0,0,1,0,0,0,249,246,0,0,249,246,0,0,76,0,0,0,1,0,0,0,250,246,0,0,250,246,0,0,69,79,0,0,2,0,0,0,253,246,0,0,253,246,0,0,83,0,0,0,1,0,0,0,254,246,0,0,254,246,0,0,126,0,0,0,1,0,0,0,255,246,0,0,255,246,0,0,90,0,0,0,1,0,0,0,33,247,0,0,33,247,0,0,33,0,0,0,1,0,0,0,36,247,0,0,36,247,0,0,36,0,0,0,1,0,0,0,38,247,0,0,38,247,0,0,38,0,0,0,1,0,0,0,48,247,0,0,57,247,0,0,48,0,0,0,1,0,0,0,63,247,0,0,63,247,0,0,63,0,0,0,1,0,0,0,97,247,0,0,122,247,0,0,65,0,0,0,1,0,0,0,224,247,0,0,224,247,0,0,65,0,0,0,1,0,0,0,225,247,0,0,225,247,0,0,65,0,0,0,1,0,0,0,226,247,0,0,226,247,0,0,65,0,0,0,1,0,0,0,227,247,0,0,227,247,0,0,65,0,0,0,1,0,0,0,228,247,0,0,228,247,0,0,65,0,0,0,1,0,0,0,229,247,0,0,229,247,0,0,65,0,0,0,1,0,0,0,230,247,0,0,230,247,0,0,69,65,0,0,2,0,0,0,231,247,0,0,231,247,0,0,67,0,0,0,1,0,0,0,232,247,0,0,232,247,0,0,69,0,0,0,1,0,0,0,233,247,0,0,233,247,0,0,69,0,0,0,1,0,0,0,234,247,0,0,234,247,0,0,69,0,0,0,1,0,0,0,235,247,0,0,235,247,0,0,69,0,0,0,1,0,0,0,236,247,0,0,236,247,0,0,73,0,0,0,1,0,0,0,237,247,0,0,237,247,0,0,73,0,0,0,1,0,0,0,238,247,0,0,238,247,0,0,73,0,0,0,1,0,0,0,239,247,0,0,239,247,0,0,73,0,0,0,1,0,0,0,241,247,0,0,242,247,0,0,78,0,0,0,1,0,0,0,243,247,0,0,243,247,0,0,79,0,0,0,1,0,0,0,244,247,0,0,244,247,0,0,79,0,0,0,1,0,0,0,245,247,0,0,245,247,0,0,79,0,0,0,1,0,0,0,246,247,0,0,246,247,0,0,79,0,0,0,1,0,0,0,248,247,0,0,248,247,0,0,79,0,0,0,1,0,0,0,249,247,0,0,249,247,0,0,85,0,0,0,1,0,0,0,250,247,0,0,250,247,0,0,85,0,0,0,1,0,0,0,251,247,0,0,251,247,0,0,85,0,0,0,1,0,0,0,252,247,0,0,252,247,0,0,85,0,0,0,1,0,0,0,253,247,0,0,253,247,0,0,89,0,0,0,1,0,0,0,255,247,0,0,255,247,0,0,89,0,0,0,1,0,0,0,0,251,0,0,0,251,0,0,102,102,0,0,2,0,0,0,1,251,0,0,1,251,0,0,105,102,0,0,2,0,0,0,2,251,0,0,2,251,0,0,108,102,0,0,2,0,0,0,3,251,0,0,3,251,0,0,105,102,102,0,3,0,0,0,4,251,0,0,4,251,0,0,108,102,102,0,3,0,0,0,83,121,109,98,111,108,0,0,32,0,0,0,33,0,0,0,32,0,0,0,1,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,1,0,0,0,37,0,0,0,38,0,0,0,37,0,0,0,1,0,0,0,40,0,0,0,41,0,0,0,40,0,0,0,1,0,0,0,43,0,0,0,44,0,0,0,43,0,0,0,1,0,0,0,46,0,0,0,63,0,0,0,46,0,0,0,1,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,1,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,1,0,0,0,95,0,0,0,95,0,0,0,95,0,0,0,1,0,0,0,123,0,0,0,125,0,0,0,123,0,0,0,1,0,0,0,172,0,0,0,172,0,0,0,216,0,0,0,1,0,0,0,176,0,0,0,177,0,0,0,176,0,0,0,1,0,0,0,181,0,0,0,181,0,0,0,109,0,0,0,1,0,0,0,215,0,0,0,215,0,0,0,180,0,0,0,1,0,0,0,247,0,0,0,247,0,0,0,184,0,0,0,1,0,0,0,146,1,0,0,146,1,0,0,166,0,0,0,1,0,0,0,145,3,0,0,146,3,0,0,65,0,0,0,1,0,0,0,147,3,0,0,147,3,0,0,71,0,0,0,1,0,0,0,149,3,0,0,149,3,0,0,69,0,0,0,1,0,0,0,150,3,0,0,150,3,0,0,90,0,0,0,1,0,0,0,151,3,0,0,151,3,0,0,72,0,0,0,1,0,0,0,152,3,0,0,152,3,0,0,81,0,0,0,1,0,0,0,153,3,0,0,153,3,0,0,73,0,0,0,1,0,0,0,154,3,0,0,157,3,0,0,75,0,0,0,1,0,0,0,158,3,0,0,158,3,0,0,88,0,0,0,1,0,0,0,159,3,0,0,160,3,0,0,79,0,0,0,1,0,0,0,161,3,0,0,161,3,0,0,82,0,0,0,1,0,0,0,163,3,0,0,165,3,0,0,83,0,0,0,1,0,0,0,166,3,0,0,166,3,0,0,70,0,0,0,1,0,0,0,167,3,0,0,167,3,0,0,67,0,0,0,1,0,0,0,168,3,0,0,168,3,0,0,89,0,0,0,1,0,0,0,177,3,0,0,178,3,0,0,97,0,0,0,1,0,0,0,179,3,0,0,179,3,0,0,103,0,0,0,1,0,0,0,180,3,0,0,181,3,0,0,100,0,0,0,1,0,0,0,182,3,0,0,182,3,0,0,122,0,0,0,1,0,0,0,183,3,0,0,183,3,0,0,104,0,0,0,1,0,0,0,184,3,0,0,184,3,0,0,113,0,0,0,1,0,0,0,185,3,0,0,185,3,0,0,105,0,0,0,1,0,0,0,186,3,0,0,187,3,0,0,107,0,0,0,1,0,0,0,189,3,0,0,189,3,0,0,110,0,0,0,1,0,0,0,190,3,0,0,190,3,0,0,120,0,0,0,1,0,0,0,191,3,0,0,192,3,0,0,111,0,0,0,1,0,0,0,193,3,0,0,193,3,0,0,114,0,0,0,1,0,0,0,194,3,0,0,194,3,0,0,86,0,0,0,1,0,0,0,195,3,0,0,197,3,0,0,115,0,0,0,1,0,0,0,198,3,0,0,198,3,0,0,102,0,0,0,1,0,0,0,199,3,0,0,199,3,0,0,99,0,0,0,1,0,0,0,200,3,0,0,200,3,0,0,121,0,0,0,1,0,0,0,201,3,0,0,201,3,0,0,119,0,0,0,1,0,0,0,209,3,0,0,209,3,0,0,74,0,0,0,1,0,0,0,210,3,0,0,210,3,0,0,161,0,0,0,1,0,0,0,213,3,0,0,213,3,0,0,106,0,0,0,1,0,0,0,214,3,0,0,214,3,0,0,118,0,0,0,1,0,0,0,34,32,0,0,34,32,0,0,183,0,0,0,1,0,0,0,38,32,0,0,38,32,0,0,188,0,0,0,1,0,0,0,50,32,0,0,50,32,0,0,162,0,0,0,1,0,0,0,51,32,0,0,51,32,0,0,178,0,0,0,1,0,0,0,68,32,0,0,68,32,0,0,164,0,0,0,1,0,0,0,17,33,0,0,17,33,0,0,193,0,0,0,1,0,0,0,24,33,0,0,24,33,0,0,195,0,0,0,1,0,0,0,28,33,0,0,28,33,0,0,194,0,0,0,1,0,0,0,38,33,0,0,38,33,0,0,87,0,0,0,1,0,0,0,53,33,0,0,53,33,0,0,192,0,0,0,1,0,0,0,144,33,0,0,147,33,0,0,172,0,0,0,1,0,0,0,148,33,0,0,148,33,0,0,171,0,0,0,1,0,0,0,181,33,0,0,181,33,0,0,191,0,0,0,1,0,0,0,208,33,0,0,211,33,0,0,220,0,0,0,1,0,0,0,212,33,0,0,212,33,0,0,219,0,0,0,1,0,0,0,0,34,0,0,0,34,0,0,34,0,0,0,1,0,0,0,2,34,0,0,2,34,0,0,182,0,0,0,1,0,0,0,3,34,0,0,3,34,0,0,36,0,0,0,1,0,0,0,5,34,0,0,5,34,0,0,198,0,0,0,1,0,0,0,6,34,0,0,6,34,0,0,68,0,0,0,1,0,0,0,7,34,0,0,7,34,0,0,209,0,0,0,1,0,0,0,8,34,0,0,9,34,0,0,206,0,0,0,1,0,0,0,11,34,0,0,11,34,0,0,39,0,0,0,1,0,0,0,15,34,0,0,15,34,0,0,213,0,0,0,1,0,0,0,17,34,0,0,17,34,0,0,229,0,0,0,1,0,0,0,18,34,0,0,18,34,0,0,45,0,0,0,1,0,0,0,23,34,0,0,23,34,0,0,42,0,0,0,1,0,0,0,26,34,0,0,26,34,0,0,214,0,0,0,1,0,0,0,29,34,0,0,29,34,0,0,181,0,0,0,1,0,0,0,30,34,0,0,30,34,0,0,165,0,0,0,1,0,0,0,32,34,0,0,32,34,0,0,208,0,0,0,1,0,0,0,39,34,0,0,40,34,0,0,217,0,0,0,1,0,0,0,41,34,0,0,42,34,0,0,199,0,0,0,1,0,0,0,43,34,0,0,43,34,0,0,242,0,0,0,1,0,0,0,52,34,0,0,52,34,0,0,92,0,0,0,1,0,0,0,60,34,0,0,60,34,0,0,126,0,0,0,1,0,0,0,69,34,0,0,69,34,0,0,64,0,0,0,1,0,0,0,72,34,0,0,72,34,0,0,187,0,0,0,1,0,0,0,96,34,0,0,97,34,0,0,185,0,0,0,1,0,0,0,100,34,0,0,100,34,0,0,163,0,0,0,1,0,0,0,101,34,0,0,101,34,0,0,179,0,0,0,1,0,0,0,130,34,0,0,130,34,0,0,204,0,0,0,1,0,0,0,131,34,0,0,131,34,0,0,201,0,0,0,1,0,0,0,132,34,0,0,132,34,0,0,203,0,0,0,1,0,0,0,134,34,0,0,134,34,0,0,205,0,0,0,1,0,0,0,135,34,0,0,135,34,0,0,202,0,0,0,1,0,0,0,149,34,0,0,149,34,0,0,197,0,0,0,1,0,0,0,151,34,0,0,151,34,0,0,196,0,0,0,1,0,0,0,165,34,0,0,165,34,0,0,94,0,0,0,1,0,0,0,197,34,0,0,197,34,0,0,215,0,0,0,1,0,0,0,32,35,0,0,32,35,0,0,243,0,0,0,1,0,0,0,33,35,0,0,33,35,0,0,245,0,0,0,1,0,0,0,41,35,0,0,41,35,0,0,225,0,0,0,1,0,0,0,42,35,0,0,42,35,0,0,241,0,0,0,1,0,0,0,202,37,0,0,202,37,0,0,224,0,0,0,1,0,0,0,96,38,0,0,96,38,0,0,170,0,0,0,1,0,0,0,99,38,0,0,99,38,0,0,167,0,0,0,1,0,0,0,101,38,0,0,101,38,0,0,169,0,0,0,1,0,0,0,102,38,0,0,102,38,0,0,168,0,0,0,1,0,0,0,217,246,0,0,217,246,0,0,211,0,0,0,1,0,0,0,218,246,0,0,218,246,0,0,210,0,0,0,1,0,0,0,219,246,0,0,219,246,0,0,212,0,0,0,1,0,0,0,229,248,0,0,229,248,0,0,96,0,0,0,1,0,0,0,230,248,0,0,231,248,0,0,189,0,0,0,1,0,0,0,232,248,0,0,234,248,0,0,226,0,0,0,1,0,0,0,235,248,0,0,244,248,0,0,230,0,0,0,1,0,0,0,245,248,0,0,245,248,0,0,244,0,0,0,1,0,0,0,246,248,0,0,254,248,0,0,246,0,0,0,1,0,0,0,90,97,112,102,68,105,110,103,98,97,116,115,0,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,1,0,0,0,146,33,0,0,146,33,0,0,213,0,0,0,1,0,0,0,148,33,0,0,149,33,0,0,214,0,0,0,1,0,0,0,96,36,0,0,105,36,0,0,172,0,0,0,1,0,0,0,160,37,0,0,160,37,0,0,110,0,0,0,1,0,0,0,178,37,0,0,178,37,0,0,115,0,0,0,1,0,0,0,188,37,0,0,188,37,0,0,116,0,0,0,1,0,0,0,198,37,0,0,198,37,0,0,117,0,0,0,1,0,0,0,207,37,0,0,207,37,0,0,108,0,0,0,1,0,0,0,215,37,0,0,215,37,0,0,119,0,0,0,1,0,0,0,5,38,0,0,5,38,0,0,72,0,0,0,1,0,0,0,14,38,0,0,14,38,0,0,37,0,0,0,1,0,0,0,27,38,0,0,27,38,0,0,42,0,0,0,1,0,0,0,30,38,0,0,30,38,0,0,43,0,0,0,1,0,0,0,96,38,0,0,96,38,0,0,171,0,0,0,1,0,0,0,99,38,0,0,99,38,0,0,168,0,0,0,1,0,0,0,101,38,0,0,101,38,0,0,170,0,0,0,1,0,0,0,102,38,0,0,102,38,0,0,169,0,0,0,1,0,0,0,1,39,0,0,4,39,0,0,33,0,0,0,1,0,0,0,6,39,0,0,9,39,0,0,38,0,0,0,1,0,0,0,12,39,0,0,39,39,0,0,44,0,0,0,1,0,0,0,41,39,0,0,75,39,0,0,73,0,0,0,1,0,0,0,77,39,0,0,77,39,0,0,109,0,0,0,1,0,0,0,79,39,0,0,82,39,0,0,111,0,0,0,1,0,0,0,86,39,0,0,86,39,0,0,118,0,0,0,1,0,0,0,88,39,0,0,94,39,0,0,120,0,0,0,1,0,0,0,97,39,0,0,103,39,0,0,161,0,0,0,1,0,0,0,118,39,0,0,148,39,0,0,182,0,0,0,1,0,0,0,152,39,0,0,175,39,0,0,216,0,0,0,1,0,0,0,177,39,0,0,190,39,0,0,241,0,0,0,1,0,0,0,85,67,83,45,50,0,0,0,47,117,115,114,47,108,111,99,97,108,47,115,104,97,114,101,47,112,111,112,112,108,101,114,0,0,0,0,0,0,0,0,37,115,47,110,97,109,101,84,111,85,110,105,99,111,100,101,0,0,0,0,0,0,0,0,37,115,47,99,105,100,84,111,85,110,105,99,111,100,101,0,37,115,47,117,110,105,99,111,100,101,77,97,112,0,0,0,37,115,47,99,77,97,112,0,114,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,111,112,101,110,32,39,110,97,109,101,84,111,85,110,105,99,111,100,101,39,32,102,105,108,101,32,39,37,115,39,0,32,9,13,10,0,0,0,0,37,120,0,0,0,0,0,0,66,97,100,32,108,105,110,101,32,105,110,32,39,110,97,109,101,84,111,85,110,105,99,111,100,101,39,32,102,105,108,101,32,40,37,115,58,37,100,41,0,0,0,0,0,0,0,0,121,101,115,0,0,0,0,0,110,111,0,0,0,0,0,0,102,105,108,101,0,0,0,0,46,116,116,102,0,0,0,0,46,116,116,99,0,0,0,0,105,110,100,101,120,0,0,0,46,112,102,97,0,0,0,0,46,112,102,98,0,0,0,0,114,98,0,0,0,0,0,0,49,54,68,105,115,112,108,97,121,70,111,110,116,80,97,114,97,109,0,0,0,0,0,0,88,113,4,0,120,69,0,0,82,101,103,117,108,97,114,0,82,111,109,97,110,0,0,0,79,98,108,105,113,117,101,0,73,116,97,108,105,99,0,0,66,111,108,100,0,0,0,0,76,105,103,104,116,0,0,0,67,111,110,100,101,110,115,101,100,0,0,0,0,0,0,0,65,100,111,98,101,45,71,66,49,0,0,0,0,0,0,0,122,104,45,99,110,0,0,0,65,100,111,98,101,45,67,78,83,49,0,0,0,0,0,0,122,104,45,116,119,0,0,0,65,100,111,98,101,45,74,97,112,97,110,49,0,0,0,0,106,97,0,0,0,0,0,0,65,100,111,98,101,45,74,97,112,97,110,50,0,0,0,0,65,100,111,98,101,45,75,111,114,101,97,49,0,0,0,0,107,111,0,0,0,0,0,0,65,100,111,98,101,45,85,67,83,0,0,0,0,0,0,0,120,120,0,0,0,0,0,0,65,100,111,98,101,45,73,100,101,110,116,105,116,121,0,0,85,110,107,110,111,119,110,32,67,73,68,32,102,111,110,116,32,99,111,108,108,101,99,116,105,111,110,44,32,112,108,101,97,115,101,32,114,101,112,111,114,116,32,116,111,32,112,111,112,112,108,101,114,32,98,117,103,122,105,108,108,97,46,0,102,97,109,105,108,121,0,0,108,97,110,103,0,0,0,0,115,108,97,110,116,0,0,0,119,101,105,103,104,116,0,0,119,105,100,116,104,0,0,0,115,112,97,99,105,110,103,0,33,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,39,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,65,69,0,0,0,0,0,0,65,69,97,99,117,116,101,0,65,69,115,109,97,108,108,0,65,97,99,117,116,101,0,0,65,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,65,98,114,101,118,101,0,0,65,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,65,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,65,99,117,116,101,0,0,0,65,99,117,116,101,115,109,97,108,108,0,0,0,0,0,0,65,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,65,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,65,103,114,97,118,101,0,0,65,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,65,108,112,104,97,0,0,0,65,108,112,104,97,116,111,110,111,115,0,0,0,0,0,0,65,109,97,99,114,111,110,0,65,111,103,111,110,101,107,0,65,114,105,110,103,0,0,0,65,114,105,110,103,97,99,117,116,101,0,0,0,0,0,0,65,114,105,110,103,115,109,97,108,108,0,0,0,0,0,0,65,115,109,97,108,108,0,0,65,116,105,108,100,101,0,0,65,116,105,108,100,101,115,109,97,108,108,0,0,0,0,0,66,0,0,0,0,0,0,0,66,101,116,97,0,0,0,0,66,114,101,118,101,115,109,97,108,108,0,0,0,0,0,0,66,115,109,97,108,108,0,0,67,0,0,0,0,0,0,0,67,97,99,117,116,101,0,0,67,97,114,111,110,0,0,0,67,97,114,111,110,115,109,97,108,108,0,0,0,0,0,0,67,99,97,114,111,110,0,0,67,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,67,99,101,100,105,108,108,97,115,109,97,108,108,0,0,0,67,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,67,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,67,101,100,105,108,108,97,115,109,97,108,108,0,0,0,0,67,104,105,0,0,0,0,0,67,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,67,115,109,97,108,108,0,0,68,0,0,0,0,0,0,0,68,99,97,114,111,110,0,0,68,99,114,111,97,116,0,0,68,101,108,116,97,0,0,0,68,105,101,114,101,115,105,115,0,0,0,0,0,0,0,0,68,105,101,114,101,115,105,115,65,99,117,116,101,0,0,0,68,105,101,114,101,115,105,115,71,114,97,118,101,0,0,0,68,105,101,114,101,115,105,115,115,109,97,108,108,0,0,0,68,111,116,97,99,99,101,110,116,115,109,97,108,108,0,0,68,115,109,97,108,108,0,0,69,0,0,0,0,0,0,0,69,97,99,117,116,101,0,0,69,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,69,98,114,101,118,101,0,0,69,99,97,114,111,110,0,0,69,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,69,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,69,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,69,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,69,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,69,103,114,97,118,101,0,0,69,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,69,109,97,99,114,111,110,0,69,110,103,0,0,0,0,0,69,111,103,111,110,101,107,0,69,112,115,105,108,111,110,0,69,112,115,105,108,111,110,116,111,110,111,115,0,0,0,0,69,115,109,97,108,108,0,0,69,116,97,0,0,0,0,0,69,116,97,116,111,110,111,115,0,0,0,0,0,0,0,0,69,116,104,0,0,0,0,0,69,116,104,115,109,97,108,108,0,0,0,0,0,0,0,0,69,117,114,111,0,0,0,0,70,0,0,0,0,0,0,0,70,115,109,97,108,108,0,0,71,0,0,0,0,0,0,0,71,97,109,109,97,0,0,0,71,98,114,101,118,101,0,0,71,99,97,114,111,110,0,0,71,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,71,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,71,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,71,114,97,118,101,0,0,0,71,114,97,118,101,115,109,97,108,108,0,0,0,0,0,0,71,115,109,97,108,108,0,0,72,0,0,0,0,0,0,0,72,49,56,53,51,51,0,0,72,49,56,53,52,51,0,0,72,49,56,53,53,49,0,0,72,50,50,48,55,51,0,0,72,98,97,114,0,0,0,0,72,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,72,115,109,97,108,108,0,0,72,117,110,103,97,114,117,109,108,97,117,116,0,0,0,0,72,117,110,103,97,114,117,109,108,97,117,116,115,109,97,108,108,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,73,74,0,0,0,0,0,0,73,97,99,117,116,101,0,0,73,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,73,98,114,101,118,101,0,0,73,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,73,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,73,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,73,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,73,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,73,102,114,97,107,116,117,114,0,0,0,0,0,0,0,0,73,103,114,97,118,101,0,0,73,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,73,109,97,99,114,111,110,0,73,111,103,111,110,101,107,0,73,111,116,97,0,0,0,0,73,111,116,97,100,105,101,114,101,115,105,115,0,0,0,0,73,111,116,97,116,111,110,111,115,0,0,0,0,0,0,0,73,115,109,97,108,108,0,0,73,116,105,108,100,101,0,0,74,0,0,0,0,0,0,0,74,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,74,115,109,97,108,108,0,0,75,0,0,0,0,0,0,0,75,97,112,112,97,0,0,0,75,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,75,115,109,97,108,108,0,0,76,0,0,0,0,0,0,0,76,76,0,0,0,0,0,0,76,97,99,117,116,101,0,0,76,97,109,98,100,97,0,0,76,99,97,114,111,110,0,0,76,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,76,100,111,116,0,0,0,0,76,115,108,97,115,104,0,0,76,115,108,97,115,104,115,109,97,108,108,0,0,0,0,0,76,115,109,97,108,108,0,0,77,0,0,0,0,0,0,0,77,97,99,114,111,110,0,0,77,97,99,114,111,110,115,109,97,108,108,0,0,0,0,0,77,115,109,97,108,108,0,0,77,117,0,0,0,0,0,0,78,0,0,0,0,0,0,0,78,97,99,117,116,101,0,0,78,99,97,114,111,110,0,0,78,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,78,115,109,97,108,108,0,0,78,116,105,108,100,101,0,0,78,116,105,108,100,101,115,109,97,108,108,0,0,0,0,0,78,117,0,0,0,0,0,0,79,0,0,0,0,0,0,0,79,69,0,0,0,0,0,0,79,69,115,109,97,108,108,0,79,97,99,117,116,101,0,0,79,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,79,98,114,101,118,101,0,0,79,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,79,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,79,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,79,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,79,103,111,110,101,107,115,109,97,108,108,0,0,0,0,0,79,103,114,97,118,101,0,0,79,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,79,104,111,114,110,0,0,0,79,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,79,109,97,99,114,111,110,0,79,109,101,103,97,0,0,0,79,109,101,103,97,116,111,110,111,115,0,0,0,0,0,0,79,109,105,99,114,111,110,0,79,109,105,99,114,111,110,116,111,110,111,115,0,0,0,0,79,115,108,97,115,104,0,0,79,115,108,97,115,104,97,99,117,116,101,0,0,0,0,0,79,115,108,97,115,104,115,109,97,108,108,0,0,0,0,0,79,115,109,97,108,108,0,0,79,116,105,108,100,101,0,0,79,116,105,108,100,101,115,109,97,108,108,0,0,0,0,0,80,0,0,0,0,0,0,0,80,104,105,0,0,0,0,0,80,105,0,0,0,0,0,0,80,115,105,0,0,0,0,0,80,115,109,97,108,108,0,0,81,0,0,0,0,0,0,0,81,115,109,97,108,108,0,0,82,0,0,0,0,0,0,0,82,97,99,117,116,101,0,0,82,99,97,114,111,110,0,0,82,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,82,102,114,97,107,116,117,114], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240); -/* memory initializer */ allocate([0,0,0,0,0,0,0,0,82,104,111,0,0,0,0,0,82,105,110,103,115,109,97,108,108,0,0,0,0,0,0,0,82,115,109,97,108,108,0,0,83,0,0,0,0,0,0,0,83,70,48,49,48,48,48,48,0,0,0,0,0,0,0,0,83,70,48,50,48,48,48,48,0,0,0,0,0,0,0,0,83,70,48,51,48,48,48,48,0,0,0,0,0,0,0,0,83,70,48,52,48,48,48,48,0,0,0,0,0,0,0,0,83,70,48,53,48,48,48,48,0,0,0,0,0,0,0,0,83,70,48,54,48,48,48,48,0,0,0,0,0,0,0,0,83,70,48,55,48,48,48,48,0,0,0,0,0,0,0,0,83,70,48,56,48,48,48,48,0,0,0,0,0,0,0,0,83,70,48,57,48,48,48,48,0,0,0,0,0,0,0,0,83,70,49,48,48,48,48,48,0,0,0,0,0,0,0,0,83,70,49,49,48,48,48,48,0,0,0,0,0,0,0,0,83,70,49,57,48,48,48,48,0,0,0,0,0,0,0,0,83,70,50,48,48,48,48,48,0,0,0,0,0,0,0,0,83,70,50,49,48,48,48,48,0,0,0,0,0,0,0,0,83,70,50,50,48,48,48,48,0,0,0,0,0,0,0,0,83,70,50,51,48,48,48,48,0,0,0,0,0,0,0,0,83,70,50,52,48,48,48,48,0,0,0,0,0,0,0,0,83,70,50,53,48,48,48,48,0,0,0,0,0,0,0,0,83,70,50,54,48,48,48,48,0,0,0,0,0,0,0,0,83,70,50,55,48,48,48,48,0,0,0,0,0,0,0,0,83,70,50,56,48,48,48,48,0,0,0,0,0,0,0,0,83,70,51,54,48,48,48,48,0,0,0,0,0,0,0,0,83,70,51,55,48,48,48,48,0,0,0,0,0,0,0,0,83,70,51,56,48,48,48,48,0,0,0,0,0,0,0,0,83,70,51,57,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,48,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,49,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,50,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,51,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,52,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,53,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,54,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,55,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,56,48,48,48,48,0,0,0,0,0,0,0,0,83,70,52,57,48,48,48,48,0,0,0,0,0,0,0,0,83,70,53,48,48,48,48,48,0,0,0,0,0,0,0,0,83,70,53,49,48,48,48,48,0,0,0,0,0,0,0,0,83,70,53,50,48,48,48,48,0,0,0,0,0,0,0,0,83,70,53,51,48,48,48,48,0,0,0,0,0,0,0,0,83,70,53,52,48,48,48,48,0,0,0,0,0,0,0,0,83,97,99,117,116,101,0,0,83,99,97,114,111,110,0,0,83,99,97,114,111,110,115,109,97,108,108,0,0,0,0,0,83,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,83,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,83,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,83,105,103,109,97,0,0,0,83,115,109,97,108,108,0,0,84,0,0,0,0,0,0,0,84,97,117,0,0,0,0,0,84,98,97,114,0,0,0,0,84,99,97,114,111,110,0,0,84,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,84,104,101,116,97,0,0,0,84,104,111,114,110,0,0,0,84,104,111,114,110,115,109,97,108,108,0,0,0,0,0,0,84,105,108,100,101,115,109,97,108,108,0,0,0,0,0,0,84,115,109,97,108,108,0,0,85,0,0,0,0,0,0,0,85,97,99,117,116,101,0,0,85,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,85,98,114,101,118,101,0,0,85,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,85,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,85,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,85,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,85,103,114,97,118,101,0,0,85,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,85,104,111,114,110,0,0,0,85,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,85,109,97,99,114,111,110,0,85,111,103,111,110,101,107,0,85,112,115,105,108,111,110,0,85,112,115,105,108,111,110,49,0,0,0,0,0,0,0,0,85,112,115,105,108,111,110,100,105,101,114,101,115,105,115,0,85,112,115,105,108,111,110,116,111,110,111,115,0,0,0,0,85,114,105,110,103,0,0,0,85,115,109,97,108,108,0,0,85,116,105,108,100,101,0,0,86,0,0,0,0,0,0,0,86,115,109,97,108,108,0,0,87,0,0,0,0,0,0,0,87,97,99,117,116,101,0,0,87,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,87,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,87,103,114,97,118,101,0,0,87,115,109,97,108,108,0,0,88,0,0,0,0,0,0,0,88,105,0,0,0,0,0,0,88,115,109,97,108,108,0,0,89,0,0,0,0,0,0,0,89,97,99,117,116,101,0,0,89,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,89,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,89,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,89,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,89,103,114,97,118,101,0,0,89,115,109,97,108,108,0,0,90,0,0,0,0,0,0,0,90,97,99,117,116,101,0,0,90,99,97,114,111,110,0,0,90,99,97,114,111,110,115,109,97,108,108,0,0,0,0,0,90,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,90,101,116,97,0,0,0,0,90,115,109,97,108,108,0,0,34,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,94,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,97,99,117,116,101,0,0,97,98,114,101,118,101,0,0,97,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,97,99,117,116,101,0,0,0,97,99,117,116,101,99,111,109,98,0,0,0,0,0,0,0,97,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,97,101,0,0,0,0,0,0,97,101,97,99,117,116,101,0,97,102,105,105,48,48,50,48,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,49,55,0,0,0,0,0,0,0,97,102,105,105,49,48,48,49,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,49,57,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,48,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,49,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,50,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,51,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,52,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,53,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,54,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,55,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,50,57,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,48,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,49,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,50,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,51,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,52,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,53,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,54,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,55,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,51,57,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,48,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,49,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,50,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,51,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,52,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,53,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,54,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,55,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,52,57,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,48,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,49,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,50,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,51,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,52,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,53,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,54,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,55,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,53,57,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,48,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,49,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,50,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,51,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,52,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,53,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,54,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,55,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,54,57,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,48,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,49,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,50,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,51,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,52,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,53,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,54,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,55,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,55,57,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,48,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,49,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,50,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,51,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,52,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,53,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,54,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,55,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,56,57,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,48,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,49,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,50,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,51,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,52,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,53,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,54,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,55,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,56,0,0,0,0,0,0,0,97,102,105,105,49,48,48,57,57,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,48,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,49,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,50,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,51,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,52,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,53,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,54,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,55,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,56,0,0,0,0,0,0,0,97,102,105,105,49,48,49,48,57,0,0,0,0,0,0,0,97,102,105,105,49,48,49,49,48,0,0,0,0,0,0,0,97,102,105,105,49,48,49,52,53,0,0,0,0,0,0,0,97,102,105,105,49,48,49,52,54,0,0,0,0,0,0,0,97,102,105,105,49,48,49,52,55,0,0,0,0,0,0,0,97,102,105,105,49,48,49,52,56,0,0,0,0,0,0,0,97,102,105,105,49,48,49,57,50,0,0,0,0,0,0,0,97,102,105,105,49,48,49,57,51,0,0,0,0,0,0,0,97,102,105,105,49,48,49,57,52,0,0,0,0,0,0,0,97,102,105,105,49,48,49,57,53,0,0,0,0,0,0,0,97,102,105,105,49,48,49,57,54,0,0,0,0,0,0,0,97,102,105,105,49,48,56,51,49,0,0,0,0,0,0,0,97,102,105,105,49,48,56,51,50,0,0,0,0,0,0,0,97,102,105,105,49,48,56,52,54,0,0,0,0,0,0,0,97,102,105,105,50,57,57,0,97,102,105,105,51,48,48,0,97,102,105,105,51,48,49,0,97,102,105,105,53,55,51,56,49,0,0,0,0,0,0,0,97,102,105,105,53,55,51,56,56,0,0,0,0,0,0,0,97,102,105,105,53,55,51,57,50,0,0,0,0,0,0,0,97,102,105,105,53,55,51,57,51,0,0,0,0,0,0,0,97,102,105,105,53,55,51,57,52,0,0,0,0,0,0,0,97,102,105,105,53,55,51,57,53,0,0,0,0,0,0,0,97,102,105,105,53,55,51,57,54,0,0,0,0,0,0,0,97,102,105,105,53,55,51,57,55,0,0,0,0,0,0,0,97,102,105,105,53,55,51,57,56,0,0,0,0,0,0,0,97,102,105,105,53,55,51,57,57,0,0,0,0,0,0,0,97,102,105,105,53,55,52,48,48,0,0,0,0,0,0,0,97,102,105,105,53,55,52,48,49,0,0,0,0,0,0,0,97,102,105,105,53,55,52,48,51,0,0,0,0,0,0,0,97,102,105,105,53,55,52,48,55,0,0,0,0,0,0,0,97,102,105,105,53,55,52,48,57,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,48,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,49,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,50,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,51,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,52,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,53,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,54,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,55,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,56,0,0,0,0,0,0,0,97,102,105,105,53,55,52,49,57,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,48,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,49,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,50,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,51,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,52,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,53,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,54,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,55,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,56,0,0,0,0,0,0,0,97,102,105,105,53,55,52,50,57,0,0,0,0,0,0,0,97,102,105,105,53,55,52,51,48,0,0,0,0,0,0,0,97,102,105,105,53,55,52,51,49,0,0,0,0,0,0,0,97,102,105,105,53,55,52,51,50,0,0,0,0,0,0,0,97,102,105,105,53,55,52,51,51,0,0,0,0,0,0,0,97,102,105,105,53,55,52,51,52,0,0,0,0,0,0,0,97,102,105,105,53,55,52,52,48,0,0,0,0,0,0,0,97,102,105,105,53,55,52,52,49,0,0,0,0,0,0,0,97,102,105,105,53,55,52,52,50,0,0,0,0,0,0,0,97,102,105,105,53,55,52,52,51,0,0,0,0,0,0,0,97,102,105,105,53,55,52,52,52,0,0,0,0,0,0,0,97,102,105,105,53,55,52,52,53,0,0,0,0,0,0,0,97,102,105,105,53,55,52,52,54,0,0,0,0,0,0,0,97,102,105,105,53,55,52,52,56,0,0,0,0,0,0,0,97,102,105,105,53,55,52,52,57,0,0,0,0,0,0,0,97,102,105,105,53,55,52,53,48,0,0,0,0,0,0,0,97,102,105,105,53,55,52,53,49,0,0,0,0,0,0,0,97,102,105,105,53,55,52,53,50,0,0,0,0,0,0,0,97,102,105,105,53,55,52,53,51,0,0,0,0,0,0,0,97,102,105,105,53,55,52,53,52,0,0,0,0,0,0,0,97,102,105,105,53,55,52,53,53,0,0,0,0,0,0,0,97,102,105,105,53,55,52,53,54,0,0,0,0,0,0,0,97,102,105,105,53,55,52,53,55,0,0,0,0,0,0,0,97,102,105,105,53,55,52,53,56,0,0,0,0,0,0,0,97,102,105,105,53,55,52,55,48,0,0,0,0,0,0,0,97,102,105,105,53,55,53,48,53,0,0,0,0,0,0,0,97,102,105,105,53,55,53,48,54,0,0,0,0,0,0,0,97,102,105,105,53,55,53,48,55,0,0,0,0,0,0,0,97,102,105,105,53,55,53,48,56,0,0,0,0,0,0,0,97,102,105,105,53,55,53,48,57,0,0,0,0,0,0,0,97,102,105,105,53,55,53,49,49,0,0,0,0,0,0,0,97,102,105,105,53,55,53,49,50,0,0,0,0,0,0,0,97,102,105,105,53,55,53,49,51,0,0,0,0,0,0,0,97,102,105,105,53,55,53,49,52,0,0,0,0,0,0,0,97,102,105,105,53,55,53,49,57,0,0,0,0,0,0,0,97,102,105,105,53,55,53,51,52,0,0,0,0,0,0,0,97,102,105,105,53,55,54,51,54,0,0,0,0,0,0,0,97,102,105,105,53,55,54,52,53,0,0,0,0,0,0,0,97,102,105,105,53,55,54,53,56,0,0,0,0,0,0,0,97,102,105,105,53,55,54,54,52,0,0,0,0,0,0,0,97,102,105,105,53,55,54,54,53,0,0,0,0,0,0,0,97,102,105,105,53,55,54,54,54,0,0,0,0,0,0,0,97,102,105,105,53,55,54,54,55,0,0,0,0,0,0,0,97,102,105,105,53,55,54,54,56,0,0,0,0,0,0,0,97,102,105,105,53,55,54,54,57,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,48,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,49,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,50,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,51,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,52,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,53,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,54,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,55,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,56,0,0,0,0,0,0,0,97,102,105,105,53,55,54,55,57,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,48,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,49,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,50,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,51,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,52,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,53,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,54,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,55,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,56,0,0,0,0,0,0,0,97,102,105,105,53,55,54,56,57,0,0,0,0,0,0,0,97,102,105,105,53,55,54,57,48,0,0,0,0,0,0,0,97,102,105,105,53,55,54,57,52,0,0,0,0,0,0,0,97,102,105,105,53,55,54,57,53,0,0,0,0,0,0,0,97,102,105,105,53,55,55,48,48,0,0,0,0,0,0,0,97,102,105,105,53,55,55,48,53,0,0,0,0,0,0,0,97,102,105,105,53,55,55,49,54,0,0,0,0,0,0,0,97,102,105,105,53,55,55,49,55,0,0,0,0,0,0,0,97,102,105,105,53,55,55,49,56,0,0,0,0,0,0,0,97,102,105,105,53,55,55,50,51,0,0,0,0,0,0,0,97,102,105,105,53,55,55,57,51,0,0,0,0,0,0,0,97,102,105,105,53,55,55,57,52,0,0,0,0,0,0,0,97,102,105,105,53,55,55,57,53,0,0,0,0,0,0,0,97,102,105,105,53,55,55,57,54,0,0,0,0,0,0,0,97,102,105,105,53,55,55,57,55,0,0,0,0,0,0,0,97,102,105,105,53,55,55,57,56,0,0,0,0,0,0,0,97,102,105,105,53,55,55,57,57,0,0,0,0,0,0,0,97,102,105,105,53,55,56,48,48,0,0,0,0,0,0,0,97,102,105,105,53,55,56,48,49,0,0,0,0,0,0,0,97,102,105,105,53,55,56,48,50,0,0,0,0,0,0,0,97,102,105,105,53,55,56,48,51,0,0,0,0,0,0,0,97,102,105,105,53,55,56,48,52,0,0,0,0,0,0,0,97,102,105,105,53,55,56,48,54,0,0,0,0,0,0,0,97,102,105,105,53,55,56,48,55,0,0,0,0,0,0,0,97,102,105,105,53,55,56,51,57,0,0,0,0,0,0,0,97,102,105,105,53,55,56,52,49,0,0,0,0,0,0,0,97,102,105,105,53,55,56,52,50,0,0,0,0,0,0,0,97,102,105,105,53,55,57,50,57,0,0,0,0,0,0,0,97,102,105,105,54,49,50,52,56,0,0,0,0,0,0,0,97,102,105,105,54,49,50,56,57,0,0,0,0,0,0,0,97,102,105,105,54,49,51,53,50,0,0,0,0,0,0,0,97,102,105,105,54,49,53,55,51,0,0,0,0,0,0,0,97,102,105,105,54,49,53,55,52,0,0,0,0,0,0,0,97,102,105,105,54,49,53,55,53,0,0,0,0,0,0,0,97,102,105,105,54,49,54,54,52,0,0,0,0,0,0,0,97,102,105,105,54,51,49,54,55,0,0,0,0,0,0,0,97,102,105,105,54,52,57,51,55,0,0,0,0,0,0,0,97,103,114,97,118,101,0,0,97,108,101,112,104,0,0,0,97,108,112,104,97,0,0,0,97,108,112,104,97,116,111,110,111,115,0,0,0,0,0,0,97,109,97,99,114,111,110,0,97,109,112,101,114,115,97,110,100,0,0,0,0,0,0,0,97,109,112,101,114,115,97,110,100,115,109,97,108,108,0,0,97,110,103,108,101,0,0,0,97,110,103,108,101,108,101,102,116,0,0,0,0,0,0,0,97,110,103,108,101,114,105,103,104,116,0,0,0,0,0,0,97,110,111,116,101,108,101,105,97,0,0,0,0,0,0,0,97,111,103,111,110,101,107,0,97,112,112,114,111,120,101,113,117,97,108,0,0,0,0,0,97,114,105,110,103,0,0,0,97,114,105,110,103,97,99,117,116,101,0,0,0,0,0,0,97,114,114,111,119,98,111,116,104,0,0,0,0,0,0,0,97,114,114,111,119,100,98,108,98,111,116,104,0,0,0,0,97,114,114,111,119,100,98,108,100,111,119,110,0,0,0,0,97,114,114,111,119,100,98,108,108,101,102,116,0,0,0,0,97,114,114,111,119,100,98,108,114,105,103,104,116,0,0,0,97,114,114,111,119,100,98,108,117,112,0,0,0,0,0,0,97,114,114,111,119,100,111,119,110,0,0,0,0,0,0,0,97,114,114,111,119,104,111,114,105,122,101,120,0,0,0,0,97,114,114,111,119,108,101,102,116,0,0,0,0,0,0,0,97,114,114,111,119,114,105,103,104,116,0,0,0,0,0,0,97,114,114,111,119,117,112,0,97,114,114,111,119,117,112,100,110,0,0,0,0,0,0,0,97,114,114,111,119,117,112,100,110,98,115,101,0,0,0,0,97,114,114,111,119,118,101,114,116,101,120,0,0,0,0,0,97,115,99,105,105,99,105,114,99,117,109,0,0,0,0,0,97,115,99,105,105,116,105,108,100,101,0,0,0,0,0,0,97,115,116,101,114,105,115,107,0,0,0,0,0,0,0,0,97,115,116,101,114,105,115,107,109,97,116,104,0,0,0,0,97,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,97,116,0,0,0,0,0,0,97,116,105,108,100,101,0,0,98,0,0,0,0,0,0,0,98,97,99,107,115,108,97,115,104,0,0,0,0,0,0,0,98,97,114,0,0,0,0,0,98,101,116,97,0,0,0,0,98,108,111,99,107,0,0,0,98,114,97,99,101,101,120,0,98,114,97,99,101,108,101,102,116,0,0,0,0,0,0,0,98,114,97,99,101,108,101,102,116,98,116,0,0,0,0,0,98,114,97,99,101,108,101,102,116,109,105,100,0,0,0,0,98,114,97,99,101,108,101,102,116,116,112,0,0,0,0,0,98,114,97,99,101,114,105,103,104,116,0,0,0,0,0,0,98,114,97,99,101,114,105,103,104,116,98,116,0,0,0,0,98,114,97,99,101,114,105,103,104,116,109,105,100,0,0,0,98,114,97,99,101,114,105,103,104,116,116,112,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,0,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,98,116,0,0,0,98,114,97,99,107,101,116,108,101,102,116,101,120,0,0,0,98,114,97,99,107,101,116,108,101,102,116,116,112,0,0,0,98,114,97,99,107,101,116,114,105,103,104,116,0,0,0,0,98,114,97,99,107,101,116,114,105,103,104,116,98,116,0,0,98,114,97,99,107,101,116,114,105,103,104,116,101,120,0,0,98,114,97,99,107,101,116,114,105,103,104,116,116,112,0,0,98,114,101,118,101,0,0,0,98,114,111,107,101,110,98,97,114,0,0,0,0,0,0,0,98,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,98,117,108,108,101,116,0,0,99,0,0,0,0,0,0,0,99,97,99,117,116,101,0,0,99,97,114,111,110,0,0,0,99,97,114,114,105,97,103,101,114,101,116,117,114,110,0,0,99,99,97,114,111,110,0,0,99,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,99,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,99,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,99,101,100,105,108,108,97,0,99,101,110,116,0,0,0,0,99,101,110,116,105,110,102,101,114,105,111,114,0,0,0,0,99,101,110,116,111,108,100,115,116,121,108,101,0,0,0,0,99,101,110,116,115,117,112,101,114,105,111,114,0,0,0,0,99,104,105,0,0,0,0,0,99,105,114,99,108,101,0,0,99,105,114,99,108,101,109,117,108,116,105,112,108,121,0,0,99,105,114,99,108,101,112,108,117,115,0,0,0,0,0,0,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,0,99,108,117,98,0,0,0,0,99,111,108,111,110,0,0,0,99,111,108,111,110,109,111,110,101,116,97,114,121,0,0,0,99,111,109,109,97,0,0,0,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,0,99,111,109,109,97,105,110,102,101,114,105,111,114,0,0,0,99,111,109,109,97,115,117,112,101,114,105,111,114,0,0,0,99,111,110,103,114,117,101,110,116,0,0,0,0,0,0,0,99,111,112,121,114,105,103,104,116,0,0,0,0,0,0,0,99,111,112,121,114,105,103,104,116,115,97,110,115,0,0,0,99,111,112,121,114,105,103,104,116,115,101,114,105,102,0,0,99,117,114,114,101,110,99,121,0,0,0,0,0,0,0,0,99,121,114,66,114,101,118,101,0,0,0,0,0,0,0,0,99,121,114,70,108,101,120,0,99,121,114,98,114,101,118,101,0,0,0,0,0,0,0,0,99,121,114,102,108,101,120,0,100,0,0,0,0,0,0,0,100,97,103,103,101,114,0,0,100,97,103,103,101,114,100,98,108,0,0,0,0,0,0,0,100,98,108,71,114,97,118,101,0,0,0,0,0,0,0,0,100,98,108,103,114,97,118,101,0,0,0,0,0,0,0,0,100,99,97,114,111,110,0,0,100,99,114,111,97,116,0,0,100,101,103,114,101,101,0,0,100,101,108,116,97,0,0,0,100,105,97,109,111,110,100,0,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,0,100,105,101,114,101,115,105,115,97,99,117,116,101,0,0,0,100,105,101,114,101,115,105,115,103,114,97,118,101,0,0,0,100,105,101,114,101,115,105,115,116,111,110,111,115,0,0,0,100,105,118,105,100,101,0,0,100,107,115,104,97,100,101,0,100,110,98,108,111,99,107,0,100,111,108,108,97,114,0,0,100,111,108,108,97,114,105,110,102,101,114,105,111,114,0,0,100,111,108,108,97,114,111,108,100,115,116,121,108,101,0,0,100,111,108,108,97,114,115,117,112,101,114,105,111,114,0,0,100,111,110,103,0,0,0,0,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,0,100,111,116,98,101,108,111,119,99,111,109,98,0,0,0,0,100,111,116,108,101,115,115,105,0,0,0,0,0,0,0,0,100,111,116,108,101,115,115,106,0,0,0,0,0,0,0,0,100,111,116,109,97,116,104,0,100,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,101,97,99,117,116,101,0,0,101,98,114,101,118,101,0,0,101,99,97,114,111,110,0,0,101,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,101,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,101,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,101,103,114,97,118,101,0,0,101,105,103,104,116,0,0,0,101,105,103,104,116,105,110,102,101,114,105,111,114,0,0,0,101,105,103,104,116,111,108,100,115,116,121,108,101,0,0,0,101,105,103,104,116,115,117,112,101,114,105,111,114,0,0,0,101,108,101,109,101,110,116,0,101,108,108,105,112,115,105,115,0,0,0,0,0,0,0,0,101,109,97,99,114,111,110,0,101,109,100,97,115,104,0,0,101,109,112,116,121,115,101,116,0,0,0,0,0,0,0,0,101,110,100,97,115,104,0,0,101,110,103,0,0,0,0,0,101,111,103,111,110,101,107,0,101,112,115,105,108,111,110,0,101,112,115,105,108,111,110,116,111,110,111,115,0,0,0,0,101,113,117,97,108,0,0,0,101,113,117,105,118,97,108,101,110,99,101,0,0,0,0,0,101,115,116,105,109,97,116,101,100,0,0,0,0,0,0,0,101,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,101,116,97,0,0,0,0,0,101,116,97,116,111,110,111,115,0,0,0,0,0,0,0,0,101,116,104,0,0,0,0,0,101,120,99,108,97,109,0,0,101,120,99,108,97,109,100,98,108,0,0,0,0,0,0,0,101,120,99,108,97,109,100,111,119,110,0,0,0,0,0,0,101,120,99,108,97,109,100,111,119,110,115,109,97,108,108,0,101,120,99,108,97,109,108,101,102,116,0,0,0,0,0,0,101,120,99,108,97,109,115,109,97,108,108,0,0,0,0,0,101,120,105,115,116,101,110,116,105,97,108,0,0,0,0,0,102,0,0,0,0,0,0,0,102,101,109,97,108,101,0,0,102,102,0,0,0,0,0,0,102,102,105,0,0,0,0,0,102,102,108,0,0,0,0,0,102,105,0,0,0,0,0,0,102,105,103,117,114,101,100,97,115,104,0,0,0,0,0,0,102,105,108,108,101,100,98,111,120,0,0,0,0,0,0,0,102,105,108,108,101,100,114,101,99,116,0,0,0,0,0,0,102,105,118,101,0,0,0,0,102,105,118,101,101,105,103,104,116,104,115,0,0,0,0,0,102,105,118,101,105,110,102,101,114,105,111,114,0,0,0,0,102,105,118,101,111,108,100,115,116,121,108,101,0,0,0,0,102,105,118,101,115,117,112,101,114,105,111,114,0,0,0,0,102,108,0,0,0,0,0,0,102,108,111,114,105,110,0,0,102,111,117,114,0,0,0,0,102,111,117,114,105,110,102,101,114,105,111,114,0,0,0,0,102,111,117,114,111,108,100,115,116,121,108,101,0,0,0,0,102,111,117,114,115,117,112,101,114,105,111,114,0,0,0,0,102,114,97,99,116,105,111,110,0,0,0,0,0,0,0,0,102,114,97,110,99,0,0,0,103,0,0,0,0,0,0,0,103,97,109,109,97,0,0,0,103,98,114,101,118,101,0,0,103,99,97,114,111,110,0,0,103,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,103,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,103,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,103,101,114,109,97,110,100,98,108,115,0,0,0,0,0,0,103,114,97,100,105,101,110,116,0,0,0,0,0,0,0,0,103,114,97,118,101,0,0,0,103,114,97,118,101,99,111,109,98,0,0,0,0,0,0,0,103,114,101,97,116,101,114,0,103,114,101,97,116,101,114,101,113,117,97,108,0,0,0,0,103,117,105,108,108,101,109,111,116,108,101,102,116,0,0,0,103,117,105,108,108,101,109,111,116,114,105,103,104,116,0,0,103,117,105,108,115,105,110,103,108,108,101,102,116,0,0,0,103,117,105,108,115,105,110,103,108,114,105,103,104,116,0,0,104,0,0,0,0,0,0,0,104,98,97,114,0,0,0,0,104,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,104,101,97,114,116,0,0,0,104,111,111,107,97,98,111,118,101,99,111,109,98,0,0,0,104,111,117,115,101,0,0,0,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,0,104,121,112,104,101,110,0,0,104,121,112,104,101,110,105,110,102,101,114,105,111,114,0,0,104,121,112,104,101,110,115,117,112,101,114,105,111,114,0,0,105,0,0,0,0,0,0,0,105,97,99,117,116,101,0,0,105,98,114,101,118,101,0,0,105,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,105,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,105,103,114,97,118,101,0,0,105,106,0,0,0,0,0,0,105,109,97,99,114,111,110,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,105,110,116,101,103,114,97,108,0,0,0,0,0,0,0,0,105,110,116,101,103,114,97,108,98,116,0,0,0,0,0,0,105,110,116,101,103,114,97,108,101,120,0,0,0,0,0,0,105,110,116,101,103,114,97,108,116,112,0,0,0,0,0,0,105,110,116,101,114,115,101,99,116,105,111,110,0,0,0,0,105,110,118,98,117,108,108,101,116,0,0,0,0,0,0,0,105,110,118,99,105,114,99,108,101,0,0,0,0,0,0,0,105,110,118,115,109,105,108,101,102,97,99,101,0,0,0,0,105,111,103,111,110,101,107,0,105,111,116,97,0,0,0,0,105,111,116,97,100,105,101,114,101,115,105,115,0,0,0,0,105,111,116,97,100,105,101,114,101,115,105,115,116,111,110,111,115,0,0,0,0,0,0,0,105,111,116,97,116,111,110,111,115,0,0,0,0,0,0,0,105,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,105,116,105,108,100,101,0,0,106,0,0,0,0,0,0,0,106,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,107,0,0,0,0,0,0,0,107,97,112,112,97,0,0,0,107,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,107,103,114,101,101,110,108,97,110,100,105,99,0,0,0,0,108,0,0,0,0,0,0,0,108,97,99,117,116,101,0,0,108,97,109,98,100,97,0,0,108,99,97,114,111,110,0,0,108,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,108,100,111,116,0,0,0,0,108,101,115,115,0,0,0,0,108,101,115,115,101,113,117,97,108,0,0,0,0,0,0,0,108,102,98,108,111,99,107,0,108,105,114,97,0,0,0,0,108,108,0,0,0,0,0,0,108,111,103,105,99,97,108,97,110,100,0,0,0,0,0,0,108,111,103,105,99,97,108,110,111,116,0,0,0,0,0,0,108,111,103,105,99,97,108,111,114,0,0,0,0,0,0,0,108,111,110,103,115,0,0,0,108,111,122,101,110,103,101,0,108,115,108,97,115,104,0,0,108,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,108,116,115,104,97,100,101,0,109,0,0,0,0,0,0,0,109,97,99,114,111,110,0,0,109,97,108,101,0,0,0,0,109,105,110,117,115,0,0,0,109,105,110,117,116,101,0,0,109,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,109,117,0,0,0,0,0,0,109,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,109,117,115,105,99,97,108,110,111,116,101,0,0,0,0,0,109,117,115,105,99,97,108,110,111,116,101,100,98,108,0,0,110,0,0,0,0,0,0,0,110,97,99,117,116,101,0,0,110,97,112,111,115,116,114,111,112,104,101,0,0,0,0,0,110,98,115,112,97,99,101,0,110,99,97,114,111,110,0,0,110,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,110,105,110,101,0,0,0,0,110,105,110,101,105,110,102,101,114,105,111,114,0,0,0,0,110,105,110,101,111,108,100,115,116,121,108,101,0,0,0,0,110,105,110,101,115,117,112,101,114,105,111,114,0,0,0,0,110,111,110,98,114,101,97,107,105,110,103,115,112,97,99,101,0,0,0,0,0,0,0,0,110,111,116,101,108,101,109,101,110,116,0,0,0,0,0,0,110,111,116,101,113,117,97,108,0,0,0,0,0,0,0,0,110,111,116,115,117,98,115,101,116,0,0,0,0,0,0,0,110,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,110,116,105,108,100,101,0,0,110,117,0,0,0,0,0,0,110,117,109,98,101,114,115,105,103,110,0,0,0,0,0,0,111,0,0,0,0,0,0,0,111,97,99,117,116,101,0,0,111,98,114,101,118,101,0,0,111,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,111,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,111,101,0,0,0,0,0,0,111,103,111,110,101,107,0,0,111,103,114,97,118,101,0,0,111,104,111,114,110,0,0,0,111,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,111,109,97,99,114,111,110,0,111,109,101,103,97,0,0,0,111,109,101,103,97,49,0,0,111,109,101,103,97,116,111,110,111,115,0,0,0,0,0,0,111,109,105,99,114,111,110,0,111,109,105,99,114,111,110,116,111,110,111,115,0,0,0,0,111,110,101,0,0,0,0,0,111,110,101,100,111,116,101,110,108,101,97,100,101,114,0,0,111,110,101,101,105,103,104,116,104,0,0,0,0,0,0,0,111,110,101,102,105,116,116,101,100,0,0,0,0,0,0,0,111,110,101,104,97,108,102,0,111,110,101,105,110,102,101,114,105,111,114,0,0,0,0,0,111,110,101,111,108,100,115,116,121,108,101,0,0,0,0,0,111,110,101,113,117,97,114,116,101,114,0,0,0,0,0,0,111,110,101,115,117,112,101,114,105,111,114,0,0,0,0,0,111,110,101,116,104,105,114,100,0,0,0,0,0,0,0,0,111,112,101,110,98,117,108,108,101,116,0,0,0,0,0,0,111,114,100,102,101,109,105,110,105,110,101,0,0,0,0,0,111,114,100,109,97,115,99,117,108,105,110,101,0,0,0,0,111,114,116,104,111,103,111,110,97,108,0,0,0,0,0,0,111,115,108,97,115,104,0,0,111,115,108,97,115,104,97,99,117,116,101,0,0,0,0,0,111,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,111,116,105,108,100,101,0,0,112,0,0,0,0,0,0,0,112,97,114,97,103,114,97,112,104,0,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,0,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,98,116,0,0,0,0,0,112,97,114,101,110,108,101,102,116,101,120,0,0,0,0,0,112,97,114,101,110,108,101,102,116,105,110,102,101,114,105,111,114,0,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,116,112,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,98,116,0,0,0,0,112,97,114,101,110,114,105,103,104,116,101,120,0,0,0,0,112,97,114,101,110,114,105,103,104,116,105,110,102,101,114,105,111,114,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,115,117,112,101,114,105,111,114,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,116,112,0,0,0,0,112,97,114,116,105,97,108,100,105,102,102,0,0,0,0,0,112,101,114,99,101,110,116,0,112,101,114,105,111,100,0,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,0,112,101,114,105,111,100,105,110,102,101,114,105,111,114,0,0,112,101,114,105,111,100,115,117,112,101,114,105,111,114,0,0,112,101,114,112,101,110,100,105,99,117,108,97,114,0,0,0,112,101,114,116,104,111,117,115,97,110,100,0,0,0,0,0,112,101,115,101,116,97,0,0,112,104,105,0,0,0,0,0,112,104,105,49,0,0,0,0,112,105,0,0,0,0,0,0,112,108,117,115,0,0,0,0,112,108,117,115,109,105,110,117,115,0,0,0,0,0,0,0,112,114,101,115,99,114,105,112,116,105,111,110,0,0,0,0,112,114,111,100,117,99,116,0,112,114,111,112,101,114,115,117,98,115,101,116,0,0,0,0,112,114,111,112,101,114,115,117,112,101,114,115,101,116,0,0,112,114,111,112,111,114,116,105,111,110,97,108,0,0,0,0,112,115,105,0,0,0,0,0,113,0,0,0,0,0,0,0,113,117,101,115,116,105,111,110,0,0,0,0,0,0,0,0,113,117,101,115,116,105,111,110,100,111,119,110,0,0,0,0,113,117,101,115,116,105,111,110,100,111,119,110,115,109,97,108,108,0,0,0,0,0,0,0,113,117,101,115,116,105,111,110,115,109,97,108,108,0,0,0,113,117,111,116,101,100,98,108,0,0,0,0,0,0,0,0,113,117,111,116,101,100,98,108,98,97,115,101,0,0,0,0,113,117,111,116,101,100,98,108,108,101,102,116,0,0,0,0,113,117,111,116,101,100,98,108,114,105,103,104,116,0,0,0,113,117,111,116,101,108,101,102,116,0,0,0,0,0,0,0,113,117,111,116,101,114,101,118,101,114,115,101,100,0,0,0,113,117,111,116,101,114,105,103,104,116,0,0,0,0,0,0,113,117,111,116,101,115,105,110,103,108,98,97,115,101,0,0,113,117,111,116,101,115,105,110,103,108,101,0,0,0,0,0,114,97,99,117,116,101], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+20480); -/* memory initializer */ allocate([114,97,100,105,99,97,108,0,114,97,100,105,99,97,108,101,120,0,0,0,0,0,0,0,114,99,97,114,111,110,0,0,114,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,114,101,102,108,101,120,115,117,98,115,101,116,0,0,0,0,114,101,102,108,101,120,115,117,112,101,114,115,101,116,0,0,114,101,103,105,115,116,101,114,101,100,0,0,0,0,0,0,114,101,103,105,115,116,101,114,115,97,110,115,0,0,0,0,114,101,103,105,115,116,101,114,115,101,114,105,102,0,0,0,114,101,118,108,111,103,105,99,97,108,110,111,116,0,0,0,114,104,111,0,0,0,0,0,114,105,110,103,0,0,0,0,114,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,114,116,98,108,111,99,107,0,114,117,112,105,97,104,0,0,115,0,0,0,0,0,0,0,115,97,99,117,116,101,0,0,115,99,97,114,111,110,0,0,115,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,115,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,115,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,115,101,99,111,110,100,0,0,115,101,99,116,105,111,110,0,115,101,109,105,99,111,108,111,110,0,0,0,0,0,0,0,115,101,118,101,110,0,0,0,115,101,118,101,110,101,105,103,104,116,104,115,0,0,0,0,115,101,118,101,110,105,110,102,101,114,105,111,114,0,0,0,115,101,118,101,110,111,108,100,115,116,121,108,101,0,0,0,115,101,118,101,110,115,117,112,101,114,105,111,114,0,0,0,115,104,97,100,101,0,0,0,115,105,103,109,97,0,0,0,115,105,103,109,97,49,0,0,115,105,109,105,108,97,114,0,115,105,120,0,0,0,0,0,115,105,120,105,110,102,101,114,105,111,114,0,0,0,0,0,115,105,120,111,108,100,115,116,121,108,101,0,0,0,0,0,115,105,120,115,117,112,101,114,105,111,114,0,0,0,0,0,115,108,97,115,104,0,0,0,115,109,105,108,101,102,97,99,101,0,0,0,0,0,0,0,115,112,97,99,101,0,0,0,115,112,97,100,101,0,0,0,115,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,115,116,101,114,108,105,110,103,0,0,0,0,0,0,0,0,115,117,99,104,116,104,97,116,0,0,0,0,0,0,0,0,115,117,109,109,97,116,105,111,110,0,0,0,0,0,0,0,115,117,110,0,0,0,0,0,116,0,0,0,0,0,0,0,116,97,117,0,0,0,0,0,116,98,97,114,0,0,0,0,116,99,97,114,111,110,0,0,116,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,116,104,101,114,101,102,111,114,101,0,0,0,0,0,0,0,116,104,101,116,97,0,0,0,116,104,101,116,97,49,0,0,116,104,111,114,110,0,0,0,116,104,114,101,101,0,0,0,116,104,114,101,101,101,105,103,104,116,104,115,0,0,0,0,116,104,114,101,101,105,110,102,101,114,105,111,114,0,0,0,116,104,114,101,101,111,108,100,115,116,121,108,101,0,0,0,116,104,114,101,101,113,117,97,114,116,101,114,115,0,0,0,116,104,114,101,101,113,117,97,114,116,101,114,115,101,109,100,97,115,104,0,0,0,0,0,116,104,114,101,101,115,117,112,101,114,105,111,114,0,0,0,116,105,108,100,101,0,0,0,116,105,108,100,101,99,111,109,98,0,0,0,0,0,0,0,116,111,110,111,115,0,0,0,116,114,97,100,101,109,97,114,107,0,0,0,0,0,0,0,116,114,97,100,101,109,97,114,107,115,97,110,115,0,0,0,116,114,97,100,101,109,97,114,107,115,101,114,105,102,0,0,116,114,105,97,103,100,110,0,116,114,105,97,103,108,102,0,116,114,105,97,103,114,116,0,116,114,105,97,103,117,112,0,116,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,116,119,111,0,0,0,0,0,116,119,111,100,111,116,101,110,108,101,97,100,101,114,0,0,116,119,111,105,110,102,101,114,105,111,114,0,0,0,0,0,116,119,111,111,108,100,115,116,121,108,101,0,0,0,0,0,116,119,111,115,117,112,101,114,105,111,114,0,0,0,0,0,116,119,111,116,104,105,114,100,115,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,117,97,99,117,116,101,0,0,117,98,114,101,118,101,0,0,117,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,117,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,117,103,114,97,118,101,0,0,117,104,111,114,110,0,0,0,117,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,117,109,97,99,114,111,110,0,117,110,100,101,114,115,99,111,114,101,0,0,0,0,0,0,117,110,100,101,114,115,99,111,114,101,100,98,108,0,0,0,117,110,105,111,110,0,0,0,117,110,105,118,101,114,115,97,108,0,0,0,0,0,0,0,117,111,103,111,110,101,107,0,117,112,98,108,111,99,107,0,117,112,115,105,108,111,110,0,117,112,115,105,108,111,110,100,105,101,114,101,115,105,115,0,117,112,115,105,108,111,110,100,105,101,114,101,115,105,115,116,111,110,111,115,0,0,0,0,117,112,115,105,108,111,110,116,111,110,111,115,0,0,0,0,117,114,105,110,103,0,0,0,117,116,105,108,100,101,0,0,118,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,119,97,99,117,116,101,0,0,119,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,119,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,119,101,105,101,114,115,116,114,97,115,115,0,0,0,0,0,119,103,114,97,118,101,0,0,120,0,0,0,0,0,0,0,120,105,0,0,0,0,0,0,121,0,0,0,0,0,0,0,121,97,99,117,116,101,0,0,121,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,121,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,121,101,110,0,0,0,0,0,121,103,114,97,118,101,0,0,122,0,0,0,0,0,0,0,122,97,99,117,116,101,0,0,122,99,97,114,111,110,0,0,122,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,122,101,114,111,0,0,0,0,122,101,114,111,105,110,102,101,114,105,111,114,0,0,0,0,122,101,114,111,111,108,100,115,116,121,108,101,0,0,0,0,122,101,114,111,115,117,112,101,114,105,111,114,0,0,0,0,122,101,116,97,0,0,0,0,123,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,8,127,0,0,16,127,0,0,24,127,0,0,32,127,0,0,40,127,0,0,104,126,0,0,48,127,0,0,56,127,0,0,72,127,0,0,80,127,0,0,88,127,0,0,96,127,0,0,104,127,0,0,112,127,0,0,0,0,0,0,0,0,0,0,116,114,117,101,0,0,0,0,102,97,108,115,101,0,0,0,37,100,0,0,0,0,0,0,37,103,0,0,0,0,0,0,47,37,115,0,0,0,0,0,110,117,108,108,0,0,0,0,60,60,0,0,0,0,0,0,32,47,37,115,32,0,0,0,32,62,62,0,0,0,0,0,60,115,116,114,101,97,109,62,0,0,0,0,0,0,0,0,37,100,32,37,100,32,82,0,60,101,114,114,111,114,62,0,60,69,79,70,62,0,0,0,60,110,111,110,101,62,0,0,37,117,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,98,111,111,108,101,97,110,0,105,110,116,101,103,101,114,0,114,101,97,108,0,0,0,0,115,116,114,105,110,103,0,0,110,97,109,101,0,0,0,0,97,114,114,97,121,0,0,0,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,115,116,114,101,97,109,0,0,114,101,102,0,0,0,0,0,99,109,100,0,0,0,0,0,101,114,114,111,114,0,0,0,101,111,102,0,0,0,0,0,110,111,110,101,0,0,0,0,114,98,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,111,112,101,110,32,102,105,108,101,32,39,37,115,39,58,32,37,115,46,0,0,0,0,68,111,99,117,109,101,110,116,32,98,97,115,101,32,115,116,114,101,97,109,32,105,115,32,110,111,116,32,115,101,101,107,97,98,108,101,0,0,0,0,67,111,117,108,100,110,39,116,32,114,101,97,100,32,120,114,101,102,32,116,97,98,108,101,0,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,114,101,97,100,32,112,97,103,101,32,99,97,116,97,108,111,103,0,0,0,0,0,0,37,80,68,70,45,0,0,0,77,97,121,32,110,111,116,32,98,101,32,97,32,80,68,70,32,102,105,108,101,32,40,99,111,110,116,105,110,117,105,110,103,32,97,110,121,119,97,121,41,0,0,0,0,0,0,0,32,9,10,13,0,0,0,0,37,100,46,37,100,0,0,0,69,110,99,114,121,112,116,0,101,110,100,111,98,106,0,0,115,116,97,114,116,120,114,101,102,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,103,101,116,32,111,98,106,101,99,116,32,110,117,109,32,102,114,111,109,32,104,105,110,116,32,116,97,98,108,101,115,32,102,111,114,32,112,97,103,101,32,37,100,0,0,0,73,110,118,97,108,105,100,32,111,98,106,101,99,116,32,110,117,109,32,40,37,100,41,32,102,111,114,32,112,97,103,101,32,37,100,0,0,0,0,0,79,98,106,101,99,116,32,40,37,100,32,37,100,41,32,105,115,32,110,111,116,32,97,32,112,97,103,101,68,105,99,116,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,112,97,114,115,105,110,103,32,112,97,103,101,32,37,100,32,117,115,105,110,103,32,104,105,110,116,32,116,97,98,108,101,115,0,0,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,85,82,73,32,39,37,115,39,46,0,80,97,103,101,0,0,0,0,77,101,100,105,97,66,111,120,0,0,0,0,0,0,0,0,67,114,111,112,66,111,120,0,66,108,101,101,100,66,111,120,0,0,0,0,0,0,0,0,84,114,105,109,66,111,120,0,65,114,116,66,111,120,0,0,82,111,116,97,116,101,0,0,76,97,115,116,77,111,100,105,102,105,101,100,0,0,0,0,66,111,120,67,111,108,111,114,73,110,102,111,0,0,0,0,71,114,111,117,112,0,0,0,77,101,116,97,100,97,116,97,0,0,0,0,0,0,0,0,80,105,101,99,101,73,110,102,111,0,0,0,0,0,0,0,83,101,112,97,114,97,116,105,111,110,73,110,102,111,0,0,82,101,115,111,117,114,99,101,115,0,0,0,0,0,0,0,84,114,97,110,115,0,0,0,80,97,103,101,32,116,114,97,110,115,105,116,105,111,110,32,111,98,106,101,99,116,32,40,112,97,103,101,32,37,100,41,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,0,0,0,68,117,114,0,0,0,0,0,80,97,103,101,32,100,117,114,97,116,105,111,110,32,111,98,106,101,99,116,32,40,112,97,103,101,32,37,100,41,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,0,0,0,0,0,65,110,110,111,116,115,0,0,80,97,103,101,32,97,110,110,111,116,97,116,105,111,110,115,32,111,98,106,101,99,116,32,40,112,97,103,101,32,37,100,41,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,0,0,67,111,110,116,101,110,116,115,0,0,0,0,0,0,0,0,80,97,103,101,32,99,111,110,116,101,110,116,115,32,111,98,106,101,99,116,32,40,112,97,103,101,32,37,100,41,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,0,0,0,0,0,84,104,117,109,98,0,0,0,80,97,103,101,32,116,104,117,109,98,32,111,98,106,101,99,116,32,40,112,97,103,101,32,37,100,41,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,65,65,0,0,0,0,0,0,80,97,103,101,32,97,100,100,105,116,105,111,110,97,108,32,97,99,116,105,111,110,32,111,98,106,101,99,116,32,40,112,97,103,101,32,37,100,41,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,0,0,0,0,42,42,42,42,42,32,77,101,100,105,97,66,111,120,32,61,32,108,108,58,37,103,44,37,103,32,117,114,58,37,103,44,37,103,10,0,0,0,0,0,42,42,42,42,42,32,67,114,111,112,66,111,120,32,61,32,108,108,58,37,103,44,37,103,32,117,114,58,37,103,44,37,103,10,0,0,0,0,0,0,42,42,42,42,42,32,82,111,116,97,116,101,32,61,32,37,100,10,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,42,42,42,42,42,32,65,110,110,111,116,97,116,105,111,110,115,0,0,0,0,0,0,0,70,105,108,116,101,114,0,0,83,116,97,110,100,97,114,100,0,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,102,105,110,100,32,116,104,101,32,39,37,115,39,32,115,101,99,117,114,105,116,121,32,104,97,110,100,108,101,114,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,39,70,105,108,116,101,114,39,32,101,110,116,114,121,32,105,110,32,101,110,99,114,121,112,116,105,111,110,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,73,110,99,111,114,114,101,99,116,32,112,97,115,115,119,111,114,100,0,0,0,0,0,0,0,0,0,0,120,134,0,0,3,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,82,0,0,0,0,0,0,0,76,101,110,103,116,104,0,0,79,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,73,68,0,0,0,0,0,0,67,70,0,0,0,0,0,0,83,116,109,70,0,0,0,0,83,116,114,70,0,0,0,0,67,70,77,0,0,0,0,0,86,50,0,0,0,0,0,0,65,69,83,86,50,0,0,0,69,110,99,114,121,112,116,77,101,116,97,100,97,116,97,0,85,110,115,117,112,112,111,114,116,101,100,32,118,101,114,115,105,111,110,47,114,101,118,105,115,105,111,110,32,40,37,100,47,37,100,41,32,111,102,32,83,116,97,110,100,97,114,100,32,115,101,99,117,114,105,116,121,32,104,97,110,100,108,101,114,0,0,0,0,0,0,0,87,101,105,114,100,32,101,110,99,114,121,112,116,105,111,110,32,105,110,102,111,0,0,0,50,51,83,116,97,110,100,97,114,100,83,101,99,117,114,105,116,121,72,97,110,100,108,101,114,0,0,0,0,0,0,0,49,53,83,101,99,117,114,105,116,121,72,97,110,100,108,101,114,0,0,0,0,0,0,0,88,113,4,0,88,134,0,0,128,113,4,0,56,134,0,0,112,134,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,0,0,0,0,216,139,0,0,9,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,136,139,0,0,13,0,0,0,7,0,0,0,8,0,0,0,2,0,0,0,14,0,0,0,0,0,0,0,78,111,116,32,99,114,101,97,116,105,110,103,32,99,97,99,104,101,68,97,116,97,32,102,111,114,32,84,51,70,111,110,116,67,97,99,104,101,44,32,105,116,32,97,115,107,101,100,32,102,111,114,32,116,111,111,32,109,117,99,104,32,109,101,109,111,114,121,46,10,32,32,32,32,32,32,32,84,104,105,115,32,99,111,117,108,100,32,116,101,111,114,101,116,105,99,97,108,108,121,32,114,101,115,117,108,116,32,105,110,32,119,114,111,110,103,32,114,101,110,100,101,114,105,110,103,44,10,32,32,32,32,32,32,32,98,117,116,32,109,111,115,116,32,112,114,111,98,97,98,108,121,32,116,104,101,32,100,111,99,117,109,101,110,116,32,105,115,32,98,111,103,117,115,46,10,32,32,32,32,32,32,32,80,108,101,97,115,101,32,114,101,112,111,114,116,32,97,32,98,117,103,32,105,102,32,121,111,117,32,116,104,105,110,107,32,116,104,101,32,114,101,110,100,101,114,105,110,103,32,109,97,121,32,98,101,32,119,114,111,110,103,32,98,101,99,97,117,115,101,32,111,102,32,116,104,105,115,46,0,0,0,0,0,0,0,0,0,0,140,0,0,9,0,0,0,10,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,3,0,0,0,4,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,1,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,2,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,3,0,0,0,42,0,0,0,1,0,0,0,4,0,0,0,1,0,0,0,43,0,0,0,44,0,0,0,5,0,0,0,45,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,46,0,0,0,5,0,0,0,47,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,48,0,0,0,9,0,0,0,13,0,0,0,22,0,0,0,23,0,0,0,1,0,0,0,49,0,0,0,10,0,0,0,1,0,0,0,50,0,0,0,11,0,0,0,24,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,67,111,117,108,100,110,39,116,32,102,105,110,100,32,97,32,102,111,110,116,32,102,111,114,32,39,37,115,39,0,0,0,40,117,110,110,97,109,101,100,41,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,99,114,101,97,116,101,32,97,32,102,111,110,116,32,102,111,114,32,39,37,115,39,0,116,51,71,108,121,112,104,83,116,97,99,107,32,119,97,115,32,110,117,108,108,32,105,110,32,83,112,108,97,115,104,79,117,116,112,117,116,68,101,118,58,58,116,121,112,101,51,68,49,0,0,0,0,0,0,0,116,51,71,108,121,112,104,83,116,97,99,107,32,111,114,105,103,66,105,116,109,97,112,32,119,97,115,32,110,111,116,32,110,117,108,108,32,105,110,32,83,112,108,97,115,104,79,117,116,112,117,116,68,101,118,58,58,116,121,112,101,51,68,49,0,0,0,0,0,0,0,0,116,51,71,108,121,112,104,83,116,97,99,107,32,111,114,105,103,83,112,108,97,115,104,32,119,97,115,32,110,111,116,32,110,117,108,108,32,105,110,32,83,112,108,97,115,104,79,117,116,112,117,116,68,101,118,58,58,116,121,112,101,51,68,49,0,0,0,0,0,0,0,0,66,97,100,32,98,111,117,110,100,105,110,103,32,98,111,120,32,105,110,32,84,121,112,101,32,51,32,103,108,121,112,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,49,56,83,112,108,97,115,104,65,120,105,97,108,80,97,116,116,101,114,110,0,0,0,0,128,113,4,0,112,139,0,0,176,214,0,0,0,0,0,0,50,48,83,112,108,97,115,104,71,111,117,114,97,117,100,80,97,116,116,101,114,110,0,0,49,56,83,112,108,97,115,104,71,111,117,114,97,117,100,67,111,108,111,114,0,0,0,0,128,113,4,0,176,139,0,0,176,214,0,0,0,0,0,0,128,113,4,0,152,139,0,0,200,139,0,0,0,0,0,0,49,53,83,112,108,97,115,104,79,117,116,112,117,116,68,101,118,0,0,0,0,0,0,0,128,113,4,0,232,139,0,0,248,228,2,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,0,0,0,0,136,140,0,0,14,0,0,0,15,0,0,0,6,0,0,0,0,0,0,0,49,57,83,112,108,97,115,104,79,117,116,70,111,110,116,70,105,108,101,73,68,0,0,0,128,113,4,0,112,140,0,0,64,214,0,0,0,0,0,0,102,100,58,47,47,48,0,0,0,0,0,0,232,140,0,0,16,0,0,0,17,0,0,0,1,0,0,0,7,0,0,0,49,56,83,116,100,105,110,80,68,70,68,111,99,66,117,105,108,100,101,114,0,0,0,0,49,51,80,68,70,68,111,99,66,117,105,108,100,101,114,0,88,113,4,0,208,140,0,0,128,113,4,0,184,140,0,0,224,140,0,0,0,0,0,0,73,110,116,101,114,110,97,108,58,32,99,97,108,108,101,100,32,103,101,116,82,97,119,67,104,97,114,40,41,32,111,110,32,110,111,110,45,112,114,101,100,105,99,116,111,114,32,115,116,114,101,97,109,0,0,0,73,110,116,101,114,110,97,108,58,32,99,97,108,108,101,100,32,103,101,116,67,104,97,114,115,40,41,32,111,110,32,110,111,110,45,112,114,101,100,105,99,116,111,114,32,115,116,114,101,97,109,0,0,0,0,0,73,110,116,101,114,110,97,108,58,32,99,97,108,108,101,100,32,103,101,116,82,97,119,67,104,97,114,115,40,41,32,111,110,32,110,111,110,45,112,114,101,100,105,99,116,111,114,32,115,116,114,101,97,109,0,0,70,105,108,116,101,114,0,0,70,0,0,0,0,0,0,0,68,101,99,111,100,101,80,97,114,109,115,0,0,0,0,0,68,80,0,0,0,0,0,0,66,97,100,32,102,105,108,116,101,114,32,110,97,109,101,0,66,97,100,32,39,70,105,108,116,101,114,39,32,97,116,116,114,105,98,117,116,101,32,105,110,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,65,83,67,73,73,72,101,120,68,101,99,111,100,101,0,0,65,72,120,0,0,0,0,0,65,83,67,73,73,56,53,68,101,99,111,100,101,0,0,0,65,56,53,0,0,0,0,0,76,90,87,68,101,99,111,100,101,0,0,0,0,0,0,0,76,90,87,0,0,0,0,0,80,114,101,100,105,99,116,111,114,0,0,0,0,0,0,0,67,111,108,117,109,110,115,0,67,111,108,111,114,115,0,0,66,105,116,115,80,101,114,67,111,109,112,111,110,101,110,116,0,0,0,0,0,0,0,0,69,97,114,108,121,67,104,97,110,103,101,0,0,0,0,0,82,117,110,76,101,110,103,116,104,68,101,99,111,100,101,0,82,76,0,0,0,0,0,0,67,67,73,84,84,70,97,120,68,101,99,111,100,101,0,0,67,67,70,0,0,0,0,0,75,0,0,0,0,0,0,0,69,110,100,79,102,76,105,110,101,0,0,0,0,0,0,0,69,110,99,111,100,101,100,66,121,116,101,65,108,105,103,110,0,0,0,0,0,0,0,0,82,111,119,115,0,0,0,0,69,110,100,79,102,66,108,111,99,107,0,0,0,0,0,0,66,108,97,99,107,73,115,49,0,0,0,0,0,0,0,0,68,67,84,68,101,99,111,100,101,0,0,0,0,0,0,0,68,67,84,0,0,0,0,0,67,111,108,111,114,84,114,97,110,115,102,111,114,109,0,0,70,108,97,116,101,68,101,99,111,100,101,0,0,0,0,0,70,108,0,0,0,0,0,0,74,66,73,71,50,68,101,99,111,100,101,0,0,0,0,0,74,66,73,71,50,71,108,111,98,97,108,115,0,0,0,0,74,80,88,68,101,99,111,100,101,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,102,105,108,116,101,114,32,39,37,115,39,0,0,0,0,0,0,0,0,0,56,188,0,0,18,0,0,0,19,0,0,0,1,0,0,0,1,0,0,0,20,0,0,0,1,0,0,0,1,0,0,0,25,0,0,0,12,0,0,0,1,0,0,0,1,0,0,0,7,0,0,0,1,0,0,0,1,0,0,0,8,0,0,0,8,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,13,0,0,0,30,0,0,0,31,0,0,0,9,0,0,0,1,0,0,0,32,0,0,0,33,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,200,188,0,0,21,0,0,0,22,0,0,0,1,0,0,0,1,0,0,0,23,0,0,0,1,0,0,0,1,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,24,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,8,0,0,0,1,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,73,110,116,101,114,110,97,108,58,32,99,97,108,108,101,100,32,115,101,116,80,111,115,40,41,32,111,110,32,70,105,108,116,101,114,83,116,114,101,97,109,0,0,0,0,0,0,0,0,0,0,0,72,188,0,0,25,0,0,0,26,0,0,0,40,0,0,0,27,0,0,0,28,0,0,0,41,0,0,0,42,0,0,0,25,0,0,0,12,0,0,0,43,0,0,0,29,0,0,0,7,0,0,0,44,0,0,0,15,0,0,0,8,0,0,0,8,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,13,0,0,0,30,0,0,0,45,0,0,0,10,0,0,0,2,0,0,0,32,0,0,0,33,0,0,0,46,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,112,188,0,0,30,0,0,0,31,0,0,0,47,0,0,0,32,0,0,0,33,0,0,0,48,0,0,0,49,0,0,0,25,0,0,0,12,0,0,0,50,0,0,0,34,0,0,0,7,0,0,0,51,0,0,0,16,0,0,0,8,0,0,0,8,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,13,0,0,0,30,0,0,0,31,0,0,0,9,0,0,0,3,0,0,0,32,0,0,0,33,0,0,0,52,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,144,188,0,0,35,0,0,0,36,0,0,0,53,0,0,0,37,0,0,0,38,0,0,0,54,0,0,0,55,0,0,0,25,0,0,0,12,0,0,0,56,0,0,0,39,0,0,0,7,0,0,0,57,0,0,0,17,0,0,0,8,0,0,0,8,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,13,0,0,0,30,0,0,0,31,0,0,0,9,0,0,0,4,0,0,0,32,0,0,0,33,0,0,0,58,0,0,0,54,0,0,0,55,0,0,0,0,0,0,0,232,189,0,0,18,0,0,0,40,0,0,0,59,0,0,0,41,0,0,0,20,0,0,0,60,0,0,0,61,0,0,0,25,0,0,0,12,0,0,0,62,0,0,0,42,0,0,0,7,0,0,0,63,0,0,0,18,0,0,0,8,0,0,0,8,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,13,0,0,0,30,0,0,0,31,0,0,0,9,0,0,0,5,0,0,0,32,0,0,0,33,0,0,0,64,0,0,0,56,0,0,0,0,0,0,0,73,110,116,101,114,110,97,108,58,32,99,97,108,108,101,100,32,109,97,107,101,83,117,98,83,116,114,101,97,109,40,41,32,111,110,32,69,109,98,101,100,83,116,114,101,97,109,0,73,110,116,101,114,110,97,108,58,32,99,97,108,108,101,100,32,115,101,116,80,111,115,40,41,32,111,110,32,69,109,98,101,100,83,116,114,101,97,109,0,0,0,0,0,0,0,0,73,110,116,101,114,110,97,108,58,32,99,97,108,108,101,100,32,103,101,116,83,116,97,114,116,40,41,32,111,110,32,69,109,98,101,100,83,116,114,101,97,109,0,0,0,0,0,0,73,110,116,101,114,110,97,108,58,32,99,97,108,108,101,100,32,109,111,118,101,83,116,97,114,116,40,41,32,111,110,32,69,109,98,101,100,83,116,114,101,97,109,0,0,0,0,0,0,0,0,0,216,188,0,0,43,0,0,0,44,0,0,0,65,0,0,0,45,0,0,0,23,0,0,0,66,0,0,0,67,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,24,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,11,0,0,0,9,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,73,108,108,101,103,97,108,32,99,104,97,114,97,99,116,101,114,32,60,37,48,50,120,62,32,105,110,32,65,83,67,73,73,72,101,120,32,115,116,114,101,97,109,0,0,0,0,0,47,65,83,67,73,73,72,101,120,68,101,99,111,100,101,32,102,105,108,116,101,114,10,0,0,0,0,0,248,188,0,0,46,0,0,0,47,0,0,0,68,0,0,0,48,0,0,0,23,0,0,0,69,0,0,0,70,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,24,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,12,0,0,0,10,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,47,65,83,67,73,73,56,53,68,101,99,111,100,101,32,102,105,108,116,101,114,10,0,0,0,0,0,0,96,189,0,0,49,0,0,0,50,0,0,0,71,0,0,0,51,0,0,0,23,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,19,0,0,0,34,0,0,0,24,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,13,0,0,0,11,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,66,97,100,32,76,90,87,32,115,116,114,101,97,109,32,45,32,101,120,112,101,99,116,101,100,32,99,108,101,97,114,45,116,97,98,108,101,32,99,111,100,101,0,0,0,0,0,0,66,97,100,32,76,90,87,32,115,116,114,101,97,109,32,45,32,117,110,101,120,112,101,99,116,101,100,32,99,111,100,101,0,0,0,0,0,0,0,0,60,60,32,0,0,0,0,0,47,69,97,114,108,121,67,104,97,110,103,101,32,48,32,0,62,62,32,47,76,90,87,68,101,99,111,100,101,32,102,105,108,116,101,114,10,0,0,0,0,0,0,0,136,189,0,0,52,0,0,0,53,0,0,0,75,0,0,0,54,0,0,0,23,0,0,0,76,0,0,0,77,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,24,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,14,0,0,0,12,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,47,82,117,110,76,101,110,103,116,104,68,101,99,111,100,101,32,102,105,108,116,101,114,10,0,0,0,0,0,0,0,0,0,0,0,0,32,189,0,0,55,0,0,0,56,0,0,0,78,0,0,0,57,0,0,0,23,0,0,0,79,0,0,0,80,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,58,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,66,97,100,32,50,68,32,99,111,100,101,32,37,48,52,120,32,105,110,32,67,67,73,84,84,70,97,120,32,115,116,114,101,97,109,0,0,0,0,0,66,97,100,32,82,84,67,32,99,111,100,101,32,105,110,32,67,67,73,84,84,70,97,120,32,115,116,114,101,97,109,0,255,255,255,255,255,255,255,255,7,0,8,0,7,0,7,0,6,0,6,0,6,0,6,0,6,0,5,0,6,0,5,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,66,97,100,32,116,119,111,32,100,105,109,32,99,111,100,101,32,40,37,48,52,120,41,32,105,110,32,67,67,73,84,84,70,97,120,32,115,116,114,101,97,109,0,0,0,0,0,0,255,255,255,255,12,0,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,11,0,0,7,11,0,0,7,12,0,192,7,12,0,0,8,12,0,64,8,12,0,128,8,12,0,192,8,12,0,0,9,11,0,64,7,11,0,64,7,11,0,128,7,11,0,128,7,12,0,64,9,12,0,128,9,12,0,192,9,12,0,0,10,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,8,0,29,0,8,0,29,0,8,0,30,0,8,0,30,0,8,0,45,0,8,0,45,0,8,0,46,0,8,0,46,0,7,0,22,0,7,0,22,0,7,0,22,0,7,0,22,0,7,0,23,0,7,0,23,0,7,0,23,0,7,0,23,0,8,0,47,0,8,0,47,0,8,0,48,0,8,0,48,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,7,0,20,0,7,0,20,0,7,0,20,0,7,0,20,0,8,0,33,0,8,0,33,0,8,0,34,0,8,0,34,0,8,0,35,0,8,0,35,0,8,0,36,0,8,0,36,0,8,0,37,0,8,0,37,0,8,0,38,0,8,0,38,0,7,0,19,0,7,0,19,0,7,0,19,0,7,0,19,0,8,0,31,0,8,0,31,0,8,0,32,0,8,0,32,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,8,0,53,0,8,0,53,0,8,0,54,0,8,0,54,0,7,0,26,0,7,0,26,0,7,0,26,0,7,0,26,0,8,0,39,0,8,0,39,0,8,0,40,0,8,0,40,0,8,0,41,0,8,0,41,0,8,0,42,0,8,0,42,0,8,0,43,0,8,0,43,0,8,0,44,0,8,0,44,0,7,0,21,0,7,0,21,0,7,0,21,0,7,0,21,0,7,0,28,0,7,0,28,0,7,0,28,0,7,0,28,0,8,0,61,0,8,0,61,0,8,0,62,0,8,0,62,0,8,0,63,0,8,0,63,0,8,0,0,0,8,0,0,0,8,0,64,1,8,0,64,1,8,0,128,1,8,0,128,1,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,7,0,27,0,7,0,27,0,7,0,27,0,7,0,27,0,8,0,59,0,8,0,59,0,8,0,60,0,8,0,60,0,9,0,192,5,9,0,0,6,9,0,64,6,9,0,192,6,7,0,18,0,7,0,18,0,7,0,18,0,7,0,18,0,7,0,24,0,7,0,24,0,7,0,24,0,7,0,24,0,8,0,49,0,8,0,49,0,8,0,50,0,8,0,50,0,8,0,51,0,8,0,51,0,8,0,52,0,8,0,52,0,7,0,25,0,7,0,25,0,7,0,25,0,7,0,25,0,8,0,55,0,8,0,55,0,8,0,56,0,8,0,56,0,8,0,57,0,8,0,57,0,8,0,58,0,8,0,58,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,8,0,192,1,8,0,192,1,8,0,0,2,8,0,0,2,9,0,192,2,9,0,0,3,8,0,128,2,8,0,128,2,8,0,64,2,8,0,64,2,9,0,64,3,9,0,128,3,9,0,192,3,9,0,0,4,9,0,64,4,9,0,128,4,9,0,192,4,9,0,0,5,9,0,64,5,9,0,128,5,7,0,0,1,7,0,0,1,7,0,0,1,7,0,0,1,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,6,0,14,0,6,0,14], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+30720); -/* memory initializer */ allocate([6,0,14,0,6,0,14,0,6,0,14,0,6,0,14,0,6,0,14,0,6,0,14,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,66,97,100,32,119,104,105,116,101,32,99,111,100,101,32,40,37,48,52,120,41,32,105,110,32,67,67,73,84,84,70,97,120,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,12,0,254,255,12,0,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,11,0,0,7,11,0,0,7,11,0,0,7,11,0,0,7,12,0,192,7,12,0,192,7,12,0,0,8,12,0,0,8,12,0,64,8,12,0,64,8,12,0,128,8,12,0,128,8,12,0,192,8,12,0,192,8,12,0,0,9,12,0,0,9,11,0,64,7,11,0,64,7,11,0,64,7,11,0,64,7,11,0,128,7,11,0,128,7,11,0,128,7,11,0,128,7,12,0,64,9,12,0,64,9,12,0,128,9,12,0,128,9,12,0,192,9,12,0,192,9,12,0,0,10,12,0,0,10,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,12,0,52,0,12,0,52,0,13,0,128,2,13,0,192,2,13,0,0,3,13,0,64,3,12,0,55,0,12,0,55,0,12,0,56,0,12,0,56,0,13,0,0,5,13,0,64,5,13,0,128,5,13,0,192,5,12,0,59,0,12,0,59,0,12,0,60,0,12,0,60,0,13,0,0,6,13,0,64,6,11,0,24,0,11,0,24,0,11,0,24,0,11,0,24,0,11,0,25,0,11,0,25,0,11,0,25,0,11,0,25,0,13,0,128,6,13,0,192,6,12,0,64,1,12,0,64,1,12,0,128,1,12,0,128,1,12,0,192,1,12,0,192,1,13,0,0,2,13,0,64,2,12,0,53,0,12,0,53,0,12,0,54,0,12,0,54,0,13,0,128,3,13,0,192,3,13,0,0,4,13,0,64,4,13,0,128,4,13,0,192,4,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,11,0,23,0,11,0,23,0,12,0,50,0,12,0,51,0,12,0,44,0,12,0,45,0,12,0,46,0,12,0,47,0,12,0,57,0,12,0,58,0,12,0,61,0,12,0,0,1,10,0,16,0,10,0,16,0,10,0,16,0,10,0,16,0,10,0,17,0,10,0,17,0,10,0,17,0,10,0,17,0,12,0,48,0,12,0,49,0,12,0,62,0,12,0,63,0,12,0,30,0,12,0,31,0,12,0,32,0,12,0,33,0,12,0,40,0,12,0,41,0,11,0,22,0,11,0,22,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,12,0,128,0,12,0,192,0,12,0,26,0,12,0,27,0,12,0,28,0,12,0,29,0,11,0,19,0,11,0,19,0,11,0,20,0,11,0,20,0,12,0,34,0,12,0,35,0,12,0,36,0,12,0,37,0,12,0,38,0,12,0,39,0,11,0,21,0,11,0,21,0,12,0,42,0,12,0,43,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,6,0,9,0,6,0,8,0,5,0,7,0,5,0,7,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,66,97,100,32,98,108,97,99,107,32,99,111,100,101,32,40,37,48,52,120,41,32,105,110,32,67,67,73,84,84,70,97,120,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,47,75,32,37,100,32,0,0,47,69,110,100,79,102,76,105,110,101,32,116,114,117,101,32,0,0,0,0,0,0,0,0,47,69,110,99,111,100,101,100,66,121,116,101,65,108,105,103,110,32,116,114,117,101,32,0,47,67,111,108,117,109,110,115,32,37,100,32,0,0,0,0,47,82,111,119,115,32,37,100,32,0,0,0,0,0,0,0,47,69,110,100,79,102,66,108,111,99,107,32,102,97,108,115,101,32,0,0,0,0,0,0,47,66,108,97,99,107,73,115,49,32,116,114,117,101,32,0,62,62,32,47,67,67,73,84,84,70,97,120,68,101,99,111,100,101,32,102,105,108,116,101,114,10,0,0,0,0,0,0,0,0,0,0,168,189,0,0,59,0,0,0,60,0,0,0,81,0,0,0,61,0,0,0,62,0,0,0,82,0,0,0,83,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,63,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,16,0,0,0,14,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,105,110,32,68,67,84,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,66,97,100,32,68,67,84,32,100,97,116,97,58,32,105,110,99,111,114,114,101,99,116,32,114,101,115,116,97,114,116,32,109,97,114,107,101,114,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,48,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,6,0,0,0,7,0,0,0,14,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,49,0,0,0,56,0,0,0,57,0,0,0,50,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,22,0,0,0,15,0,0,0,23,0,0,0,30,0,0,0,37,0,0,0,44,0,0,0,51,0,0,0,58,0,0,0,59,0,0,0,52,0,0,0,45,0,0,0,38,0,0,0,31,0,0,0,39,0,0,0,46,0,0,0,53,0,0,0,60,0,0,0,61,0,0,0,54,0,0,0,47,0,0,0,55,0,0,0,62,0,0,0,63,0,0,0,66,97,100,32,72,117,102,102,109,97,110,32,99,111,100,101,32,105,110,32,68,67,84,32,115,116,114,101,97,109,0,0,66,97,100,32,68,67,84,32,100,97,116,97,58,32,109,105,115,115,105,110,103,32,48,48,32,97,102,116,101,114,32,102,102,0,0,0,0,0,0,0,66,97,100,32,68,67,84,32,104,101,97,100,101,114,0,0,85,110,107,110,111,119,110,32,68,67,84,32,109,97,114,107,101,114,32,60,37,48,50,120,62,0,0,0,0,0,0,0,66,97,100,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,105,110,32,68,67,84,32,115,116,114,101,97,109,0,0,66,97,100,32,68,67,84,32,112,114,101,99,105,115,105,111,110,32,37,100,0,0,0,0,66,97,100,32,68,67,84,32,115,99,97,110,32,105,110,102,111,32,98,108,111,99,107,0,66,97,100,32,68,67,84,32,99,111,109,112,111,110,101,110,116,32,73,68,32,105,110,32,115,99,97,110,32,105,110,102,111,32,98,108,111,99,107,0,66,97,100,32,68,67,84,32,99,111,101,102,102,105,99,105,101,110,116,32,110,117,109,98,101,114,115,32,105,110,32,115,99,97,110,32,105,110,102,111,32,98,108,111,99,107,0,0,66,97,100,32,68,67,84,32,113,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,0,0,0,0,0,0,66,97,100,32,68,67,84,32,72,117,102,102,109,97,110,32,116,97,98,108,101,0,0,0,66,97,100,32,68,67,84,32,114,101,115,116,97,114,116,32,105,110,116,101,114,118,97,108,0,0,0,0,0,0,0,0,66,97,100,32,68,67,84,32,65,80,80,48,32,109,97,114,107,101,114,0,0,0,0,0,74,70,73,70,0,0,0,0,65,100,111,98,101,0,0,0,66,97,100,32,68,67,84,32,65,100,111,98,101,32,65,80,80,49,52,32,109,97,114,107,101,114,0,0,0,0,0,0,66,97,100,32,68,67,84,32,116,114,97,105,108,101,114,0,60,60,32,62,62,32,47,68,67,84,68,101,99,111,100,101,32,102,105,108,116,101,114,10,0,0,0,0,0,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,1,0,0,0,13,0,0,0,1,0,0,0,15,0,0,0,1,0,0,0,17,0,0,0,2,0,0,0,19,0,0,0,2,0,0,0,23,0,0,0,2,0,0,0,27,0,0,0,2,0,0,0,31,0,0,0,3,0,0,0,35,0,0,0,3,0,0,0,43,0,0,0,3,0,0,0,51,0,0,0,3,0,0,0,59,0,0,0,4,0,0,0,67,0,0,0,4,0,0,0,83,0,0,0,4,0,0,0,99,0,0,0,4,0,0,0,115,0,0,0,5,0,0,0,131,0,0,0,5,0,0,0,163,0,0,0,5,0,0,0,195,0,0,0,5,0,0,0,227,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,1,0,0,0,7,0,0,0,2,0,0,0,9,0,0,0,2,0,0,0,13,0,0,0,3,0,0,0,17,0,0,0,3,0,0,0,25,0,0,0,4,0,0,0,33,0,0,0,4,0,0,0,49,0,0,0,5,0,0,0,65,0,0,0,5,0,0,0,97,0,0,0,6,0,0,0,129,0,0,0,6,0,0,0,193,0,0,0,7,0,0,0,1,1,0,0,7,0,0,0,129,1,0,0,8,0,0,0,1,2,0,0,8,0,0,0,1,3,0,0,9,0,0,0,1,4,0,0,9,0,0,0,1,6,0,0,10,0,0,0,1,8,0,0,10,0,0,0,1,12,0,0,11,0,0,0,1,16,0,0,11,0,0,0,1,24,0,0,12,0,0,0,1,32,0,0,12,0,0,0,1,48,0,0,13,0,0,0,1,64,0,0,13,0,0,0,1,96,0,0,7,0,0,1,8,0,80,0,8,0,16,0,8,0,24,1,7,0,16,1,8,0,112,0,8,0,48,0,9,0,192,0,7,0,8,1,8,0,96,0,8,0,32,0,9,0,160,0,8,0,0,0,8,0,128,0,8,0,64,0,9,0,224,0,7,0,4,1,8,0,88,0,8,0,24,0,9,0,144,0,7,0,20,1,8,0,120,0,8,0,56,0,9,0,208,0,7,0,12,1,8,0,104,0,8,0,40,0,9,0,176,0,8,0,8,0,8,0,136,0,8,0,72,0,9,0,240,0,7,0,2,1,8,0,84,0,8,0,20,0,8,0,28,1,7,0,18,1,8,0,116,0,8,0,52,0,9,0,200,0,7,0,10,1,8,0,100,0,8,0,36,0,9,0,168,0,8,0,4,0,8,0,132,0,8,0,68,0,9,0,232,0,7,0,6,1,8,0,92,0,8,0,28,0,9,0,152,0,7,0,22,1,8,0,124,0,8,0,60,0,9,0,216,0,7,0,14,1,8,0,108,0,8,0,44,0,9,0,184,0,8,0,12,0,8,0,140,0,8,0,76,0,9,0,248,0,7,0,1,1,8,0,82,0,8,0,18,0,8,0,26,1,7,0,17,1,8,0,114,0,8,0,50,0,9,0,196,0,7,0,9,1,8,0,98,0,8,0,34,0,9,0,164,0,8,0,2,0,8,0,130,0,8,0,66,0,9,0,228,0,7,0,5,1,8,0,90,0,8,0,26,0,9,0,148,0,7,0,21,1,8,0,122,0,8,0,58,0,9,0,212,0,7,0,13,1,8,0,106,0,8,0,42,0,9,0,180,0,8,0,10,0,8,0,138,0,8,0,74,0,9,0,244,0,7,0,3,1,8,0,86,0,8,0,22,0,8,0,30,1,7,0,19,1,8,0,118,0,8,0,54,0,9,0,204,0,7,0,11,1,8,0,102,0,8,0,38,0,9,0,172,0,8,0,6,0,8,0,134,0,8,0,70,0,9,0,236,0,7,0,7,1,8,0,94,0,8,0,30,0,9,0,156,0,7,0,23,1,8,0,126,0,8,0,62,0,9,0,220,0,7,0,15,1,8,0,110,0,8,0,46,0,9,0,188,0,8,0,14,0,8,0,142,0,8,0,78,0,9,0,252,0,7,0,0,1,8,0,81,0,8,0,17,0,8,0,25,1,7,0,16,1,8,0,113,0,8,0,49,0,9,0,194,0,7,0,8,1,8,0,97,0,8,0,33,0,9,0,162,0,8,0,1,0,8,0,129,0,8,0,65,0,9,0,226,0,7,0,4,1,8,0,89,0,8,0,25,0,9,0,146,0,7,0,20,1,8,0,121,0,8,0,57,0,9,0,210,0,7,0,12,1,8,0,105,0,8,0,41,0,9,0,178,0,8,0,9,0,8,0,137,0,8,0,73,0,9,0,242,0,7,0,2,1,8,0,85,0,8,0,21,0,8,0,29,1,7,0,18,1,8,0,117,0,8,0,53,0,9,0,202,0,7,0,10,1,8,0,101,0,8,0,37,0,9,0,170,0,8,0,5,0,8,0,133,0,8,0,69,0,9,0,234,0,7,0,6,1,8,0,93,0,8,0,29,0,9,0,154,0,7,0,22,1,8,0,125,0,8,0,61,0,9,0,218,0,7,0,14,1,8,0,109,0,8,0,45,0,9,0,186,0,8,0,13,0,8,0,141,0,8,0,77,0,9,0,250,0,7,0,1,1,8,0,83,0,8,0,19,0,8,0,27,1,7,0,17,1,8,0,115,0,8,0,51,0,9,0,198,0,7,0,9,1,8,0,99,0,8,0,35,0,9,0,166,0,8,0,3,0,8,0,131,0,8,0,67,0,9,0,230,0,7,0,5,1,8,0,91,0,8,0,27,0,9,0,150,0,7,0,21,1,8,0,123,0,8,0,59,0,9,0,214,0,7,0,13,1,8,0,107,0,8,0,43,0,9,0,182,0,8,0,11,0,8,0,139,0,8,0,75,0,9,0,246,0,7,0,3,1,8,0,87,0,8,0,23,0,8,0,31,1,7,0,19,1,8,0,119,0,8,0,55,0,9,0,206,0,7,0,11,1,8,0,103,0,8,0,39,0,9,0,174,0,8,0,7,0,8,0,135,0,8,0,71,0,9,0,238,0,7,0,7,1,8,0,95,0,8,0,31,0,9,0,158,0,7,0,23,1,8,0,127,0,8,0,63,0,9,0,222,0,7,0,15,1,8,0,111,0,8,0,47,0,9,0,190,0,8,0,15,0,8,0,143,0,8,0,79,0,9,0,254,0,7,0,0,1,8,0,80,0,8,0,16,0,8,0,24,1,7,0,16,1,8,0,112,0,8,0,48,0,9,0,193,0,7,0,8,1,8,0,96,0,8,0,32,0,9,0,161,0,8,0,0,0,8,0,128,0,8,0,64,0,9,0,225,0,7,0,4,1,8,0,88,0,8,0,24,0,9,0,145,0,7,0,20,1,8,0,120,0,8,0,56,0,9,0,209,0,7,0,12,1,8,0,104,0,8,0,40,0,9,0,177,0,8,0,8,0,8,0,136,0,8,0,72,0,9,0,241,0,7,0,2,1,8,0,84,0,8,0,20,0,8,0,28,1,7,0,18,1,8,0,116,0,8,0,52,0,9,0,201,0,7,0,10,1,8,0,100,0,8,0,36,0,9,0,169,0,8,0,4,0,8,0,132,0,8,0,68,0,9,0,233,0,7,0,6,1,8,0,92,0,8,0,28,0,9,0,153,0,7,0,22,1,8,0,124,0,8,0,60,0,9,0,217,0,7,0,14,1,8,0,108,0,8,0,44,0,9,0,185,0,8,0,12,0,8,0,140,0,8,0,76,0,9,0,249,0,7,0,1,1,8,0,82,0,8,0,18,0,8,0,26,1,7,0,17,1,8,0,114,0,8,0,50,0,9,0,197,0,7,0,9,1,8,0,98,0,8,0,34,0,9,0,165,0,8,0,2,0,8,0,130,0,8,0,66,0,9,0,229,0,7,0,5,1,8,0,90,0,8,0,26,0,9,0,149,0,7,0,21,1,8,0,122,0,8,0,58,0,9,0,213,0,7,0,13,1,8,0,106,0,8,0,42,0,9,0,181,0,8,0,10,0,8,0,138,0,8,0,74,0,9,0,245,0,7,0,3,1,8,0,86,0,8,0,22,0,8,0,30,1,7,0,19,1,8,0,118,0,8,0,54,0,9,0,205,0,7,0,11,1,8,0,102,0,8,0,38,0,9,0,173,0,8,0,6,0,8,0,134,0,8,0,70,0,9,0,237,0,7,0,7,1,8,0,94,0,8,0,30,0,9,0,157,0,7,0,23,1,8,0,126,0,8,0,62,0,9,0,221,0,7,0,15,1,8,0,110,0,8,0,46,0,9,0,189,0,8,0,14,0,8,0,142,0,8,0,78,0,9,0,253,0,7,0,0,1,8,0,81,0,8,0,17,0,8,0,25,1,7,0,16,1,8,0,113,0,8,0,49,0,9,0,195,0,7,0,8,1,8,0,97,0,8,0,33,0,9,0,163,0,8,0,1,0,8,0,129,0,8,0,65,0,9,0,227,0,7,0,4,1,8,0,89,0,8,0,25,0,9,0,147,0,7,0,20,1,8,0,121,0,8,0,57,0,9,0,211,0,7,0,12,1,8,0,105,0,8,0,41,0,9,0,179,0,8,0,9,0,8,0,137,0,8,0,73,0,9,0,243,0,7,0,2,1,8,0,85,0,8,0,21,0,8,0,29,1,7,0,18,1,8,0,117,0,8,0,53,0,9,0,203,0,7,0,10,1,8,0,101,0,8,0,37,0,9,0,171,0,8,0,5,0,8,0,133,0,8,0,69,0,9,0,235,0,7,0,6,1,8,0,93,0,8,0,29,0,9,0,155,0,7,0,22,1,8,0,125,0,8,0,61,0,9,0,219,0,7,0,14,1,8,0,109,0,8,0,45,0,9,0,187,0,8,0,13,0,8,0,141,0,8,0,77,0,9,0,251,0,7,0,1,1,8,0,83,0,8,0,19,0,8,0,27,1,7,0,17,1,8,0,115,0,8,0,51,0,9,0,199,0,7,0,9,1,8,0,99,0,8,0,35,0,9,0,167,0,8,0,3,0,8,0,131,0,8,0,67,0,9,0,231,0,7,0,5,1,8,0,91,0,8,0,27,0,9,0,151,0,7,0,21,1,8,0,123,0,8,0,59,0,9,0,215,0,7,0,13,1,8,0,107,0,8,0,43,0,9,0,183,0,8,0,11,0,8,0,139,0,8,0,75,0,9,0,247,0,7,0,3,1,8,0,87,0,8,0,23,0,8,0,31,1,7,0,19,1,8,0,119,0,8,0,55,0,9,0,207,0,7,0,11,1,8,0,103,0,8,0,39,0,9,0,175,0,8,0,7,0,8,0,135,0,8,0,71,0,9,0,239,0,7,0,7,1,8,0,95,0,8,0,31,0,9,0,159,0,7,0,23,1,8,0,127,0,8,0,63,0,9,0,223,0,7,0,15,1,8,0,111,0,8,0,47,0,9,0,191,0,8,0,15,0,8,0,143,0,8,0,79,0,9,0,255,0,112,177,0,0,9,0,0,0,5,0,0,0,5,0,16,0,5,0,8,0,5,0,24,0,5,0,4,0,5,0,20,0,5,0,12,0,5,0,28,0,5,0,2,0,5,0,18,0,5,0,10,0,5,0,26,0,5,0,6,0,5,0,22,0,5,0,14,0,0,0,0,0,5,0,1,0,5,0,17,0,5,0,9,0,5,0,25,0,5,0,5,0,5,0,21,0,5,0,13,0,5,0,29,0,5,0,3,0,5,0,19,0,5,0,11,0,5,0,27,0,5,0,7,0,5,0,23,0,5,0,15,0,0,0,0,0,120,185,0,0,5,0,0,0,0,0,0,0,200,189,0,0,64,0,0,0,65,0,0,0,84,0,0,0,66,0,0,0,23,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,20,0,0,0,34,0,0,0,67,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,17,0,0,0,15,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,88,0,0,0,18,0,0,0,85,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,32,105,110,32,102,108,97,116,101,32,115,116,114,101,97,109,0,0,0,0,0,0,66,97,100,32,70,67,72,69,67,75,32,105,110,32,102,108,97,116,101,32,115,116,114,101,97,109,0,0,0,0,0,0,70,68,73,67,84,32,98,105,116,32,115,101,116,32,105,110,32,102,108,97,116,101,32,115,116,114,101,97,109,0,0,0,60,60,32,62,62,32,47,70,108,97,116,101,68,101,99,111,100,101,32,102,105,108,116,101,114,10,0,0,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,101,110,100,32,111,102,32,102,105,108,101,32,105,110,32,102,108,97,116,101,32,115,116,114,101,97,109,0,0,66,97,100,32,117,110,99,111,109,112,114,101,115,115,101,100,32,98,108,111,99,107,32,108,101,110,103,116,104,32,105,110,32,102,108,97,116,101,32,115,116,114,101,97,109,0,0,0,66,97,100,32,98,108,111,99,107,32,104,101,97,100,101,114,32,105,110,32,102,108,97,116,101,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,66,97,100,32,100,121,110,97,109,105,99,32,99,111,100,101,32,116,97,98,108,101,32,105,110,32,102,108,97,116,101,32,115,116,114,101,97,109,0,0,0,0,0,0,64,189,0,0,68,0,0,0,69,0,0,0,89,0,0,0,70,0,0,0,23,0,0,0,90,0,0,0,91,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,24,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,19,0,0,0,16,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,54,83,116,114,101,97,109,0,88,113,4,0,8,188,0,0,49,48,70,105,108,101,83,116,114,101,97,109,0,0,0,0,49,48,66,97,115,101,83,116,114,101,97,109,0,0,0,0,128,113,4,0,40,188,0,0,16,188,0,0,0,0,0,0,128,113,4,0,24,188,0,0,56,188,0,0,0,0,0,0,49,54,67,97,99,104,101,100,70,105,108,101,83,116,114,101,97,109,0,0,0,0,0,0,128,113,4,0,88,188,0,0,56,188,0,0,0,0,0,0,57,77,101,109,83,116,114,101,97,109,0,0,0,0,0,0,128,113,4,0,128,188,0,0,56,188,0,0,0,0,0,0,49,52,65,83,67,73,73,72,101,120,83,116,114,101,97,109,0,0,0,0,0,0,0,0,49,50,70,105,108,116,101,114,83,116,114,101,97,109,0,0,128,113,4,0,184,188,0,0,16,188,0,0,0,0,0,0,128,113,4,0,160,188,0,0,200,188,0,0,0,0,0,0,49,51,65,83,67,73,73,56,53,83,116,114,101,97,109,0,128,113,4,0,232,188,0,0,200,188,0,0,0,0,0,0,49,52,67,67,73,84,84,70,97,120,83,116,114,101,97,109,0,0,0,0,0,0,0,0,128,113,4,0,8,189,0,0,200,188,0,0,0,0,0,0,57,69,79,70,83,116,114,101,97,109,0,0,0,0,0,0,128,113,4,0,48,189,0,0,200,188,0,0,0,0,0,0,57,76,90,87,83,116,114,101,97,109,0,0,0,0,0,0,128,113,4,0,80,189,0,0,200,188,0,0,0,0,0,0,49,53,82,117,110,76,101,110,103,116,104,83,116,114,101,97,109,0,0,0,0,0,0,0,128,113,4,0,112,189,0,0,200,188,0,0,0,0,0,0,57,68,67,84,83,116,114,101,97,109,0,0,0,0,0,0,128,113,4,0,152,189,0,0,200,188,0,0,0,0,0,0,49,49,70,108,97,116,101,83,116,114,101,97,109,0,0,0,128,113,4,0,184,189,0,0,200,188,0,0,0,0,0,0,49,49,69,109,98,101,100,83,116,114,101,97,109,0,0,0,128,113,4,0,216,189,0,0,56,188,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,67,67,73,84,84,70,97,120,32,114,111,119,32,105,115,32,119,114,111,110,103,32,108,101,110,103,116,104,32,40,37,100,41,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,67,67,73,84,84,70,97,120,32,99,111,100,101,0,0,0,78,0,0,0,0,0,0,0,70,105,114,115,116,0,0,0,84,111,111,32,109,97,110,121,32,111,98,106,101,99,116,115,32,105,110,32,97,110,32,111,98,106,101,99,116,32,115,116,114,101,97,109,0,0,0,0,83,105,122,101,0,0,0,0,78,111,32,118,97,108,105,100,32,88,82,101,102,32,115,105,122,101,32,105,110,32,116,114,97,105,108,101,114,0,0,0,82,111,111,116,0,0,0,0,120,114,101,102,0,0,0,0,111,98,106,0,0,0,0,0,116,114,97,105,108,101,114,0,73,110,118,97,108,105,100,32,39,111,98,106,39,32,112,97,114,97,109,101,116,101,114,115,39,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,80,114,101,118,0,0,0,0,88,82,101,102,83,116,109,0,73,110,118,97,108,105,100,32,39,115,105,122,101,39,32,112,97,114,97,109,101,116,101,114,0,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,73,110,100,101,120,0,0,0,73,110,118,97,108,105,100,32,39,115,105,122,101,39,32,105,110,115,105,100,101,32,120,114,101,102,32,116,97,98,108,101,0,0,0,0,0,0,0,0,80,68,70,32,102,105,108,101,32,105,115,32,100,97,109,97,103,101,100,32,45,32,97,116,116,101,109,112,116,105,110,103,32,116,111,32,114,101,99,111,110,115,116,114,117,99,116,32,120,114,101,102,32,116,97,98,108,101,46,46,46,0,0,0,101,110,100,111,98,106,0,0,66,97,100,32,111,98,106,101,99,116,32,110,117,109,98,101,114,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,39,111,98,106,39,32,112,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,0,0,101,110,100,115,116,114,101,97,109,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,39,101,110,100,115,116,114,101,97,109,39,32,112,97,114,97,109,101,116,101,114,46,0,0,67,111,117,108,100,110,39,116,32,102,105,110,100,32,116,114,97,105,108,101,114,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,0,67,109,100,32,119,97,115,32,110,111,116,32,111,98,106,32,98,117,116,32,37,115,44,32,97,115,115,117,109,105,110,103,32,116,104,101,32,99,114,101,97,116,111,114,32,109,101,97,110,116,32,111,98,106,32,37,100,0,0,0,0,0,0,0,88,82,101,102,58,58,115,101,116,77,111,100,105,102,105,101,100,79,98,106,101,99,116,32,111,110,32,117,110,107,110,111,119,110,32,114,101,102,58,32,37,105,44,32,37,105,10,0,70,97,105,108,101,100,32,116,111,32,112,97,114,115,101,32,88,82,101,102,32,101,110,116,114,121,32,91,37,100,93,46,0,0,0,0,0,0,0,0,67,105,114,99,117,108,97,114,32,88,82,101,102,0,0,0,73,110,118,97,108,105,100,32,88,82,101,102,32,101,110,116,114,121,0,0,0,0,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,0,47,109,101,100,105,97,47,100,54,57,100,100,57,98,50,45,52,55,57,49,45,52,98,56,101,45,97,101,98,51,45,102,54,51,53,51,98,52,53,100,55,49,48,47,104,111,109,101,47,97,108,111,110,47,68,101,118,47,101,109,115,99,114,105,112,116,101,110,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,0,0,0,0,0,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,0,0,0,0,56,194,0,0,71,0,0,0,72,0,0,0,49,54,79,98,106,101,99,116,83,116,114,101,97,109,73,116,101,109,0,0,0,0,0,0,128,113,4,0,32,194,0,0,120,235,2,0,0,0,0,0,0,0,0,0,120,194,0,0,73,0,0,0,74,0,0,0,17,0,0,0,0,0,0,0,49,53,79,98,106,101,99,116,83,116,114,101,97,109,75,101,121,0,0,0,0,0,0,0,128,113,4,0,96,194,0,0,88,235,2,0,0,0,0,0,0,0,0,0,8,199,0,0,75,0,0,0,76,0,0,0,46,110,111,116,100,101,102,0,70,111,117,110,100,32,97,32,98,97,100,32,116,97,98,108,101,32,100,101,102,105,110,105,116,105,111,110,32,111,110,32,116,114,117,101,32,116,121,112,101,32,100,101,102,105,110,105,116,105,111,110,44,32,116,114,121,105,110,103,32,116,111,32,99,111,110,116,105,110,117,101,46,46,46,0,0,0,0,0,152,194,0,0,24,199,0,0,32,199,0,0,40,199,0,0,48,199,0,0,56,199,0,0,72,199,0,0,88,199,0,0,96,199,0,0,104,199,0,0,120,199,0,0,136,199,0,0,152,199,0,0,168,199,0,0,184,199,0,0,192,199,0,0,200,199,0,0,208,199,0,0,216,199,0,0,224,199,0,0,232,199,0,0,240,199,0,0,248,199,0,0,0,200,0,0,8,200,0,0,16,200,0,0,24,200,0,0,32,200,0,0,40,200,0,0,48,200,0,0,56,200,0,0,72,200,0,0,80,200,0,0,88,200,0,0,96,200,0,0,112,200,0,0,120,200,0,0,128,200,0,0,136,200,0,0,144,200,0,0,152,200,0,0,160,200,0,0,168,200,0,0,176,200,0,0,184,200,0,0,192,200,0,0,200,200,0,0,208,200,0,0,216,200,0,0,224,200,0,0,232,200,0,0,240,200,0,0,248,200,0,0,0,201,0,0,8,201,0,0,16,201,0,0,24,201,0,0,32,201,0,0,40,201,0,0,48,201,0,0,56,201,0,0,64,201,0,0,72,201,0,0,88,201,0,0,104,201,0,0,120,201,0,0,136,201,0,0,152,201,0,0,160,201,0,0,168,201,0,0,176,201,0,0,184,201,0,0,192,201,0,0,200,201,0,0,208,201,0,0,216,201,0,0,224,201,0,0,232,201,0,0,240,201,0,0,248,201,0,0,0,202,0,0,8,202,0,0,16,202,0,0,24,202,0,0,32,202,0,0,40,202,0,0,48,202,0,0,56,202,0,0,64,202,0,0,72,202,0,0,80,202,0,0,88,202,0,0,96,202,0,0,104,202,0,0,112,202,0,0,128,202,0,0,136,202,0,0,152,202,0,0,168,202,0,0,184,202,0,0,192,202,0,0,208,202,0,0,216,202,0,0,224,202,0,0,240,202,0,0,0,203,0,0,8,203,0,0,16,203,0,0,32,203,0,0,48,203,0,0,56,203,0,0,64,203,0,0,80,203,0,0,88,203,0,0,96,203,0,0,112,203,0,0,128,203,0,0,136,203,0,0,144,203,0,0,160,203,0,0,176,203,0,0,184,203,0,0,192,203,0,0,200,203,0,0,216,203,0,0,232,203,0,0,240,203,0,0,248,203,0,0,0,204,0,0,16,204,0,0,32,204,0,0,40,204,0,0,48,204,0,0,56,204,0,0,72,204,0,0,80,204,0,0,88,204,0,0,104,204,0,0,120,204,0,0,136,204,0,0,152,204,0,0,168,204,0,0,176,204,0,0,192,204,0,0,208,204,0,0,216,204,0,0,224,204,0,0,240,204,0,0,0,205,0,0,16,205,0,0,32,205,0,0,40,205,0,0,48,205,0,0,64,205,0,0,80,205,0,0,88,205,0,0,96,205,0,0,112,205,0,0,128,205,0,0,144,205,0,0,152,205,0,0,160,205,0,0,168,205,0,0,184,205,0,0,200,205,0,0,216,205,0,0,224,205,0,0,232,205,0,0,248,205,0,0,8,206,0,0,24,206,0,0,40,206,0,0,56,206,0,0,64,206,0,0,72,206,0,0,80,206,0,0,88,206,0,0,96,206,0,0,104,206,0,0,112,206,0,0,120,206,0,0,136,206,0,0,152,206,0,0,168,206,0,0,184,206,0,0,192,206,0,0,200,206,0,0,216,206,0,0,232,206,0,0,248,206,0,0,8,207,0,0,24,207,0,0,40,207,0,0,48,207,0,0,56,207,0,0,72,207,0,0,88,207,0,0,104,207,0,0,120,207,0,0,136,207,0,0,152,207,0,0,168,207,0,0,176,207,0,0,192,207,0,0,200,207,0,0,208,207,0,0,224,207,0,0,240,207,0,0,248,207,0,0,0,208,0,0,16,208,0,0,32,208,0,0,40,208,0,0,48,208,0,0,64,208,0,0,72,208,0,0,88,208,0,0,104,208,0,0,112,208,0,0,128,208,0,0,136,208,0,0,152,208,0,0,160,208,0,0,168,208,0,0,184,208,0,0,192,208,0,0,200,208,0,0,208,208,0,0,216,208,0,0,224,208,0,0,232,208,0,0,240,208,0,0,248,208,0,0,8,209,0,0,16,209,0,0,24,209,0,0,32,209,0,0,40,209,0,0,48,209,0,0,56,209,0,0,64,209,0,0,80,209,0,0,96,209,0,0,112,209,0,0,128,209,0,0,136,209,0,0,152,209,0,0,168,209,0,0,176,209,0,0,184,209,0,0,192,209,0,0,200,209,0,0,216,209,0,0,232,209,0,0,240,209,0,0,248,209,0,0,0,210,0,0,8,210,0,0,49,50,70,111,70,105,84,114,117,101,84,121,112,101,0,0,128,113,4,0,248,198,0,0,224,238,2,0,0,0,0,0,110,117,108,108,0,0,0,0,67,82,0,0,0,0,0,0,115,112,97,99,101,0,0,0,101,120,99,108,97,109,0,0,113,117,111,116,101,100,98,108,0,0,0,0,0,0,0,0,110,117,109,98,101,114,115,105,103,110,0,0,0,0,0,0,100,111,108,108,97,114,0,0,112,101,114,99,101,110,116,0,97,109,112,101,114,115,97,110,100,0,0,0,0,0,0,0,113,117,111,116,101,115,105,110,103,108,101,0,0,0,0,0,112,97,114,101,110,108,101,102,116,0,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,0,0,0,0,0,0,97,115,116,101,114,105,115,107,0,0,0,0,0,0,0,0,112,108,117,115,0,0,0,0,99,111,109,109,97,0,0,0,104,121,112,104,101,110,0,0,112,101,114,105,111,100,0,0,115,108,97,115,104,0,0,0,122,101,114,111,0,0,0,0,111,110,101,0,0,0,0,0,116,119,111,0,0,0,0,0,116,104,114,101,101,0,0,0,102,111,117,114], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+40960); -/* memory initializer */ allocate([102,105,118,101,0,0,0,0,115,105,120,0,0,0,0,0,115,101,118,101,110,0,0,0,101,105,103,104,116,0,0,0,110,105,110,101,0,0,0,0,99,111,108,111,110,0,0,0,115,101,109,105,99,111,108,111,110,0,0,0,0,0,0,0,108,101,115,115,0,0,0,0,101,113,117,97,108,0,0,0,103,114,101,97,116,101,114,0,113,117,101,115,116,105,111,110,0,0,0,0,0,0,0,0,97,116,0,0,0,0,0,0,65,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,69,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,75,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,82,0,0,0,0,0,0,0,83,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,89,0,0,0,0,0,0,0,90,0,0,0,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,0,0,0,0,0,98,97,99,107,115,108,97,115,104,0,0,0,0,0,0,0,98,114,97,99,107,101,116,114,105,103,104,116,0,0,0,0,97,115,99,105,105,99,105,114,99,117,109,0,0,0,0,0,117,110,100,101,114,115,99,111,114,101,0,0,0,0,0,0,103,114,97,118,101,0,0,0,97,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,103,0,0,0,0,0,0,0,104,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,121,0,0,0,0,0,0,0,122,0,0,0,0,0,0,0,98,114,97,99,101,108,101,102,116,0,0,0,0,0,0,0,98,97,114,0,0,0,0,0,98,114,97,99,101,114,105,103,104,116,0,0,0,0,0,0,97,115,99,105,105,116,105,108,100,101,0,0,0,0,0,0,65,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,65,114,105,110,103,0,0,0,67,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,69,97,99,117,116,101,0,0,78,116,105,108,100,101,0,0,79,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,85,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,97,97,99,117,116,101,0,0,97,103,114,97,118,101,0,0,97,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,97,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,97,116,105,108,100,101,0,0,97,114,105,110,103,0,0,0,99,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,101,97,99,117,116,101,0,0,101,103,114,97,118,101,0,0,101,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,101,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,105,97,99,117,116,101,0,0,105,103,114,97,118,101,0,0,105,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,105,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,110,116,105,108,100,101,0,0,111,97,99,117,116,101,0,0,111,103,114,97,118,101,0,0,111,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,111,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,111,116,105,108,100,101,0,0,117,97,99,117,116,101,0,0,117,103,114,97,118,101,0,0,117,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,117,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,100,97,103,103,101,114,0,0,100,101,103,114,101,101,0,0,99,101,110,116,0,0,0,0,115,116,101,114,108,105,110,103,0,0,0,0,0,0,0,0,115,101,99,116,105,111,110,0,98,117,108,108,101,116,0,0,112,97,114,97,103,114,97,112,104,0,0,0,0,0,0,0,103,101,114,109,97,110,100,98,108,115,0,0,0,0,0,0,114,101,103,105,115,116,101,114,101,100,0,0,0,0,0,0,99,111,112,121,114,105,103,104,116,0,0,0,0,0,0,0,116,114,97,100,101,109,97,114,107,0,0,0,0,0,0,0,97,99,117,116,101,0,0,0,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,0,110,111,116,101,113,117,97,108,0,0,0,0,0,0,0,0,65,69,0,0,0,0,0,0,79,115,108,97,115,104,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,112,108,117,115,109,105,110,117,115,0,0,0,0,0,0,0,108,101,115,115,101,113,117,97,108,0,0,0,0,0,0,0,103,114,101,97,116,101,114,101,113,117,97,108,0,0,0,0,121,101,110,0,0,0,0,0,109,117,49,0,0,0,0,0,112,97,114,116,105,97,108,100,105,102,102,0,0,0,0,0,115,117,109,109,97,116,105,111,110,0,0,0,0,0,0,0,112,114,111,100,117,99,116,0,112,105,0,0,0,0,0,0,105,110,116,101,103,114,97,108,0,0,0,0,0,0,0,0,111,114,100,102,101,109,105,110,105,110,101,0,0,0,0,0,111,114,100,109,97,115,99,117,108,105,110,101,0,0,0,0,79,104,109,0,0,0,0,0,97,101,0,0,0,0,0,0,111,115,108,97,115,104,0,0,113,117,101,115,116,105,111,110,100,111,119,110,0,0,0,0,101,120,99,108,97,109,100,111,119,110,0,0,0,0,0,0,108,111,103,105,99,97,108,110,111,116,0,0,0,0,0,0,114,97,100,105,99,97,108,0,102,108,111,114,105,110,0,0,97,112,112,114,111,120,101,113,117,97,108,0,0,0,0,0,105,110,99,114,101,109,101,110,116,0,0,0,0,0,0,0,103,117,105,108,108,101,109,111,116,108,101,102,116,0,0,0,103,117,105,108,108,101,109,111,116,114,105,103,104,116,0,0,101,108,108,105,112,115,105,115,0,0,0,0,0,0,0,0,110,98,115,112,97,99,101,0,65,103,114,97,118,101,0,0,65,116,105,108,100,101,0,0,79,116,105,108,100,101,0,0,79,69,0,0,0,0,0,0,111,101,0,0,0,0,0,0,101,110,100,97,115,104,0,0,101,109,100,97,115,104,0,0,113,117,111,116,101,100,98,108,108,101,102,116,0,0,0,0,113,117,111,116,101,100,98,108,114,105,103,104,116,0,0,0,113,117,111,116,101,108,101,102,116,0,0,0,0,0,0,0,113,117,111,116,101,114,105,103,104,116,0,0,0,0,0,0,100,105,118,105,100,101,0,0,108,111,122,101,110,103,101,0,121,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,89,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,102,114,97,99,116,105,111,110,0,0,0,0,0,0,0,0,99,117,114,114,101,110,99,121,0,0,0,0,0,0,0,0,103,117,105,108,115,105,110,103,108,108,101,102,116,0,0,0,103,117,105,108,115,105,110,103,108,114,105,103,104,116,0,0,102,105,0,0,0,0,0,0,102,108,0,0,0,0,0,0,100,97,103,103,101,114,100,98,108,0,0,0,0,0,0,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,0,113,117,111,116,101,115,105,110,103,108,98,97,115,101,0,0,113,117,111,116,101,100,98,108,98,97,115,101,0,0,0,0,112,101,114,116,104,111,117,115,97,110,100,0,0,0,0,0,65,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,69,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,65,97,99,117,116,101,0,0,69,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,69,103,114,97,118,101,0,0,73,97,99,117,116,101,0,0,73,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,73,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,73,103,114,97,118,101,0,0,79,97,99,117,116,101,0,0,79,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,97,112,112,108,101,108,111,103,111,0,0,0,0,0,0,0,79,103,114,97,118,101,0,0,85,97,99,117,116,101,0,0,85,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,85,103,114,97,118,101,0,0,100,111,116,108,101,115,115,105,0,0,0,0,0,0,0,0,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,0,116,105,108,100,101,0,0,0,111,118,101,114,115,99,111,114,101,0,0,0,0,0,0,0,98,114,101,118,101,0,0,0,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,0,114,105,110,103,0,0,0,0,99,101,100,105,108,108,97,0,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,0,111,103,111,110,101,107,0,0,99,97,114,111,110,0,0,0,76,115,108,97,115,104,0,0,108,115,108,97,115,104,0,0,83,99,97,114,111,110,0,0,115,99,97,114,111,110,0,0,90,99,97,114,111,110,0,0,122,99,97,114,111,110,0,0,98,114,111,107,101,110,98,97,114,0,0,0,0,0,0,0,69,116,104,0,0,0,0,0,101,116,104,0,0,0,0,0,89,97,99,117,116,101,0,0,121,97,99,117,116,101,0,0,84,104,111,114,110,0,0,0,116,104,111,114,110,0,0,0,109,105,110,117,115,0,0,0,109,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,111,110,101,115,117,112,101,114,105,111,114,0,0,0,0,0,116,119,111,115,117,112,101,114,105,111,114,0,0,0,0,0,116,104,114,101,101,115,117,112,101,114,105,111,114,0,0,0,111,110,101,104,97,108,102,0,111,110,101,113,117,97,114,116,101,114,0,0,0,0,0,0,116,104,114,101,101,113,117,97,114,116,101,114,115,0,0,0,102,114,97,110,99,0,0,0,71,98,114,101,118,101,0,0,103,98,114,101,118,101,0,0,73,100,111,116,0,0,0,0,83,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,115,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,67,97,99,117,116,101,0,0,99,97,99,117,116,101,0,0,67,99,97,114,111,110,0,0,99,99,97,114,111,110,0,0,100,109,97,99,114,111,110,0,0,0,0,0,64,210,0,0,77,0,0,0,78,0,0,0,48,49,50,51,52,53,54,55,56,57,46,101,101,32,45,0,49,48,70,111,70,105,84,121,112,101,49,67,0,0,0,0,128,113,4,0,48,210,0,0,224,238,2,0,0,0,0,0,72,79,77,69,0,0,0,0,85,83,69,82,0,0,0,0,46,0,0,0,0,0,0,0,46,46,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,115,116,114,111,107,101,32,91,100,97,115,104,58,37,100,93,32,91,119,105,100,116,104,58,37,46,50,102,93,58,10,0,102,105,108,108,32,91,101,111,58,37,100,93,58,10,0,0,102,105,108,108,67,104,97,114,58,32,120,61,37,46,50,102,32,121,61,37,46,50,102,32,99,61,37,51,100,61,48,120,37,48,50,120,61,39,37,99,39,10,0,0,0,0,0,0,102,105,108,108,73,109,97,103,101,77,97,115,107,58,32,119,61,37,100,32,104,61,37,100,32,109,97,116,61,91,37,46,50,102,32,37,46,50,102,32,37,46,50,102,32,37,46,50,102,32,37,46,50,102,32,37,46,50,102,93,10,0,0,0,100,114,97,119,73,109,97,103,101,58,32,115,114,99,77,111,100,101,61,37,100,32,115,114,99,65,108,112,104,97,61,37,100,32,119,61,37,100,32,104,61,37,100,32,109,97,116,61,91,37,46,50,102,32,37,46,50,102,32,37,46,50,102,32,37,46,50,102,32,37,46,50,102,32,37,46,50,102,93,10,0,0,0,0,0,0,0,0,98,105,116,109,97,112,45,62,97,108,112,104,97,32,105,115,32,78,85,76,76,32,105,110,32,83,112,108,97,115,104,58,58,99,111,109,112,111,115,105,116,101,66,97,99,107,103,114,111,117,110,100,0,0,0,0,121,91,48,93,32,60,61,32,121,91,49,93,0,0,0,0,83,112,108,97,115,104,46,99,99,0,0,0,0,0,0,0,103,111,117,114,97,117,100,84,114,105,97,110,103,108,101,83,104,97,100,101,100,70,105,108,108,0,0,0,0,0,0,0,121,91,49,93,32,60,61,32,121,91,50,93,0,0,0,0,121,91,115,99,97,110,69,100,103,101,76,91,48,93,93,32,60,32,121,91,115,99,97,110,69,100,103,101,76,91,49,93,93,0,0,0,0,0,0,0,121,91,115,99,97,110,69,100,103,101,82,91,48,93,93,32,60,32,121,91,115,99,97,110,69,100,103,101,82,91,49,93,93,0,0,0,0,0,0,0,115,99,97,110,76,105,109,105,116,76,32,60,61,32,115,99,97,110,76,105,109,105,116,82,32,124,124,32,97,98,115,40,115,99,97,110,76,105,109,105,116,76,32,45,32,115,99,97,110,76,105,109,105,116,82,41,32,60,61,32,50,0,0,0,102,97,98,115,40,99,111,108,111,114,105,110,116,101,114,112,32,45,32,40,115,99,97,110,67,111,108,111,114,77,97,112,91,48,93,32,42,32,88,32,43,32,115,99,97,110,67,111,108,111,114,77,97,112,91,49,93,41,41,32,60,32,49,101,45,49,48,0,0,0,0,0,32,32,37,51,100,58,32,120,61,37,56,46,50,102,32,121,61,37,56,46,50,102,37,115,37,115,37,115,37,115,10,0,32,102,105,114,115,116,0,0,0,0,0,0,0,0,0,0,32,108,97,115,116,0,0,0,32,99,108,111,115,101,100,0,32,99,117,114,118,101,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,8,214,0,0,79,0,0,0,80,0,0,0,1,0,0,0,0,0,0,0,49,52,83,112,108,97,115,104,70,111,110,116,70,105,108,101,0,0,0,0,0,0,0,0,88,113,4,0,240,213,0,0,0,0,0,0,64,214,0,0,81,0,0,0,82,0,0,0,1,0,0,0,0,0,0,0,49,54,83,112,108,97,115,104,70,111,110,116,70,105,108,101,73,68,0,0,0,0,0,0,88,113,4,0,40,214,0,0,0,0,0,0,176,214,0,0,1,0,0,0,83,0,0,0,84,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,184,214,0,0,92,0,0,0,83,0,0,0,85,0,0,0,3,0,0,0,93,0,0,0,0,0,0,0,49,54,83,112,108,97,115,104,83,111,108,105,100,67,111,108,111,114,0,0,0,0,0,0,49,51,83,112,108,97,115,104,80,97,116,116,101,114,110,0,88,113,4,0,160,214,0,0,128,113,4,0,136,214,0,0,176,214,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,1,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,83,113,117,97,114,101,0,0,67,105,114,99,108,101,0,0,68,105,97,109,111,110,100,0,79,112,101,110,65,114,114,111,119,0,0,0,0,0,0,0,67,108,111,115,101,100,65,114,114,111,119,0,0,0,0,0,66,117,116,116,0,0,0,0,82,79,112,101,110,65,114,114,111,119,0,0,0,0,0,0,82,67,108,111,115,101,100,65,114,114,111,119,0,0,0,0,83,108,97,115,104,0,0,0,83,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,66,97,100,32,65,110,110,111,116,32,80,97,116,104,0,0,0,0,0,0,208,26,1,0,86,0,0,0,87,0,0,0,0,0,0,0,240,26,1,0,88,0,0,0,89,0,0,0,73,110,118,97,108,105,100,32,81,117,97,100,80,111,105,110,116,32,105,110,32,97,110,110,111,116,0,0,0,0,0,0,0,0,0,0,80,24,1,0,90,0,0,0,91,0,0,0,94,0,0,0,1,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,24,27,1,0,92,0,0,0,93,0,0,0,94,0,0,0,1,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,56,27,1,0,94,0,0,0,95,0,0,0,94,0,0,0,1,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,83,87,0,0,0,0,0,0,78,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,70,66,0,0,0,0,0,0,82,0,0,0,0,0,0,0,66,67,0,0,0,0,0,0,66,71,0,0,0,0,0,0,67,65,0,0,0,0,0,0,82,67,0,0,0,0,0,0,65,67,0,0,0,0,0,0,73,70,0,0,0,0,0,0,84,80,0,0,0,0,0,0,0,0,0,0,96,24,1,0,96,0,0,0,97,0,0,0,21,0,0,0,0,0,0,0,82,101,99,116,0,0,0,0,66,97,100,32,98,111,117,110,100,105,110,103,32,98,111,120,32,102,111,114,32,97,110,110,111,116,97,116,105,111,110,0,67,111,110,116,101,110,116,115,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,78,77,0,0,0,0,0,0,77,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,65,80,0,0,0,0,0,0,65,83,0,0,0,0,0,0,79,102,102,0,0,0,0,0,66,83,0,0,0,0,0,0,66,111,114,100,101,114,0,0,83,116,114,117,99,116,80,97,114,101,110,116,0,0,0,0,79,67,0,0,0,0,0,0,65,110,110,111,116,97,116,105,111,110,32,79,67,32,118,97,108,117,101,32,110,111,116,32,110,117,108,108,32,111,114,32,100,105,99,116,58,32,37,105,0,0,0,0,0,0,0,0,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,123,50,58,46,50,102,125,32,123,51,58,46,50,102,125,32,123,52,58,99,125,10,0,0,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,123,50,58,46,50,102,125,32,123,51,58,115,125,10,0,0,114,103,0,0,0,0,0,0,82,71,0,0,0,0,0,0,123,48,58,46,50,102,125,32,123,49,58,99,125,10,0,0,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,109,10,0,0,0,0,0,0,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,123,50,58,46,50,102,125,32,123,51,58,46,50,102,125,32,123,52,58,46,50,102,125,32,123,53,58,46,50,102,125,32,99,10,0,0,0,0,0,0,102,10,0,0,0,0,0,0,115,10,0,0,0,0,0,0,83,10,0,0,0,0,0,0,76,101,110,103,116,104,0,0,83,117,98,116,121,112,101,0,70,111,114,109,0,0,0,0,66,66,111,120,0,0,0,0,84,114,97,110,115,112,97,114,101,110,99,121,0,0,0,0,71,114,111,117,112,0,0,0,82,101,115,111,117,114,99,101,115,0,0,0,0,0,0,0,99,97,0,0,0,0,0,0,66,77,0,0,0,0,0,0,69,120,116,71,83,116,97,116,101,0,0,0,0,0,0,0,88,79,98,106,101,99,116,0,0,0,0,0,120,24,1,0,98,0,0,0,99,0,0,0,21,0,0,0,0,0,0,0,80,111,112,117,112,0,0,0,80,97,114,101,110,116,0,0,79,112,101,110,0,0,0,0,0,0,0,0,152,24,1,0,100,0,0,0,101,0,0,0,21,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,67,114,101,97,116,105,111,110,68,97,116,101,0,0,0,0,73,82,84,0,0,0,0,0,83,117,98,106,0,0,0,0,82,84,0,0,0,0,0,0,69,120,68,97,116,97,0,0,0,0,0,0,184,24,1,0,102,0,0,0,103,0,0,0,22,0,0,0,0,0,0,0,84,101,120,116,0,0,0,0,78,97,109,101,0,0,0,0,78,111,116,101,0,0,0,0,83,116,97,116,101,77,111,100,101,108,0,0,0,0,0,0,83,116,97,116,101,0,0,0,77,97,114,107,101,100,0,0,85,110,109,97,114,107,101,100,0,0,0,0,0,0,0,0,65,99,99,101,112,116,101,100,0,0,0,0,0,0,0,0,82,101,106,101,99,116,101,100,0,0,0,0,0,0,0,0,67,97,110,99,101,108,108,101,100,0,0,0,0,0,0,0,67,111,109,112,108,101,116,101,100,0,0,0,0,0,0,0,78,111,110,101,0,0,0,0,82,101,118,105,101,119,0,0,113,10,0,0,0,0,0,0,49,32,49,32,49,32,114,103,10,0,0,0,0,0,0,0,51,46,54,48,50,32,50,52,32,109,32,50,48,46,51,57,56,32,50,52,32,108,32,50,50,46,51,56,55,32,50,52,32,50,52,32,50,50,46,51,56,55,32,50,52,32,50,48,46,51,57,56,32,99,32,50,52,32,51,46,54,48,50,32,108,32,50,52,10,49,46,54,49,51,32,50,50,46,51,56,55,32,48,32,50,48,46,51,57,56,32,48,32,99,32,51,46,54,48,50,32,48,32,108,32,49,46,54,49,51,32,48,32,48,32,49,46,54,49,51,32,48,32,51,46,54,48,50,32,99,32,48,32,50,48,46,51,57,56,10,108,32,48,32,50,50,46,51,56,55,32,49,46,54,49,51,32,50,52,32,51,46,54,48,50,32,50,52,32,99,32,104,10,51,46,54,48,50,32,50,52,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,49,32,74,10,49,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,57,32,49,56,32,109,32,52,32,49,56,32,108,32,52,32,55,32,52,32,52,32,54,32,51,32,99,32,50,48,32,51,32,108,32,49,56,32,52,32,49,56,32,55,32,49,56,32,49,56,32,99,32,49,55,32,49,56,32,108,32,83,10,49,46,53,32,119,10,48,32,106,10,49,48,32,49,54,32,109,32,49,52,32,50,49,32,108,32,83,10,49,46,56,53,54,50,53,32,119,10,49,32,106,10,49,53,46,48,55,32,50,48,46,53,50,51,32,109,32,49,53,46,48,55,32,49,57,46,54,55,50,32,49,52,46,51,55,57,32,49,56,46,57,55,55,32,49,51,46,53,50,51,32,49,56,46,57,55,55,32,99,32,49,50,46,54,55,50,32,49,56,46,57,55,55,10,49,49,46,57,55,55,32,49,57,46,54,55,50,32,49,49,46,57,55,55,32,50,48,46,53,50,51,32,99,32,49,49,46,57,55,55,32,50,49,46,51,55,57,32,49,50,46,54,55,50,32,50,50,46,48,55,32,49,51,46,53,50,51,32,50,50,46,48,55,32,99,10,49,52,46,51,55,57,32,50,50,46,48,55,32,49,53,46,48,55,32,50,49,46,51,55,57,32,49,53,46,48,55,32,50,48,46,53,50,51,32,99,32,104,10,49,53,46,48,55,32,50,48,46,53,50,51,32,109,32,83,10,49,32,119,10,48,32,106,10,54,46,53,32,49,51,46,53,32,109,32,49,53,46,53,32,49,51,46,53,32,108,32,83,10,54,46,53,32,49,48,46,53,32,109,32,49,51,46,53,32,49,48,46,53,32,108,32,83,10,54,46,56,48,49,32,55,46,53,32,109,32,49,53,46,53,32,55,46,53,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,50,32,119,10,49,32,106,10,57,32,49,57,32,109,32,52,32,49,57,32,108,32,52,32,56,32,52,32,53,32,54,32,52,32,99,32,50,48,32,52,32,108,32,49,56,32,53,32,49,56,32,56,32,49,56,32,49,57,32,99,32,49,55,32,49,57,32,108,32,83,10,49,46,53,32,119,10,48,32,106,10,49,48,32,49,55,32,109,32,49,52,32,50,50,32,108,32,83,10,49,46,56,53,54,50,53,32,119,10,49,32,106,10,49,53,46,48,55,32,50,49,46,53,50,51,32,109,32,49,53,46,48,55,32,50,48,46,54,55,50,32,49,52,46,51,55,57,32,49,57,46,57,55,55,32,49,51,46,53,50,51,32,49,57,46,57,55,55,32,99,32,49,50,46,54,55,50,32,49,57,46,57,55,55,10,49,49,46,57,55,55,32,50,48,46,54,55,50,32,49,49,46,57,55,55,32,50,49,46,53,50,51,32,99,32,49,49,46,57,55,55,32,50,50,46,51,55,57,32,49,50,46,54,55,50,32,50,51,46,48,55,32,49,51,46,53,50,51,32,50,51,46,48,55,32,99,10,49,52,46,51,55,57,32,50,51,46,48,55,32,49,53,46,48,55,32,50,50,46,51,55,57,32,49,53,46,48,55,32,50,49,46,53,50,51,32,99,32,104,10,49,53,46,48,55,32,50,49,46,53,50,51,32,109,32,83,10,49,32,119,10,48,32,106,10,54,46,53,32,49,52,46,53,32,109,32,49,53,46,53,32,49,52,46,53,32,108,32,83,10,54,46,53,32,49,49,46,53,32,109,32,49,51,46,53,32,49,49,46,53,32,108,32,83,10,54,46,56,48,49,32,56,46,53,32,109,32,49,53,46,53,32,56,46,53,32,108,32,83,10,0,67,111,109,109,101,110,116,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,48,32,74,10,49,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,56,32,50,48,32,109,32,49,54,32,50,48,32,108,32,49,56,46,51,54,51,32,50,48,32,50,48,32,49,56,46,50,49,53,32,50,48,32,49,54,32,99,32,50,48,32,49,51,32,108,32,50,48,32,49,48,46,55,56,53,32,49,56,46,51,54,51,32,57,10,49,54,32,57,32,99,32,49,51,32,57,32,108,32,56,32,51,32,108,32,56,32,57,32,108,32,56,32,57,32,108,32,53,46,54,51,55,32,57,32,52,32,49,48,46,55,56,53,32,52,32,49,51,32,99,32,52,32,49,54,32,108,32,52,32,49,56,46,50,49,53,10,53,46,54,51,55,32,50,48,32,56,32,50,48,32,99,32,104,10,56,32,50,48,32,109,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,56,32,50,49,32,109,32,49,54,32,50,49,32,108,32,49,56,46,51,54,51,32,50,49,32,50,48,32,49,57,46,50,49,53,32,50,48,32,49,55,10,99,32,50,48,32,49,52,32,108,32,50,48,32,49,49,46,55,56,53,32,49,56,46,51,54,51,32,49,48,10,49,54,32,49,48,32,99,32,49,51,32,49,48,32,108,32,56,32,52,32,108,32,56,32,49,48,32,108,32,56,32,49,48,32,108,32,53,46,54,51,55,32,49,48,32,52,32,49,49,46,55,56,53,32,52,32,49,52,32,99,32,52,32,49,55,32,108,32,52,10,49,57,46,50,49,53,32,53,46,54,51,55,32,50,49,32,56,32,50,49,32,99,32,104,10,56,32,50,49,32,109,32,83,10,0,75,101,121,0,0,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,49,32,74,10,48,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,49,49,46,56,57,53,32,49,56,46,55,53,52,32,109,32,49,51,46,57,50,54,32,50,48,46,54,50,53,32,49,55,46,48,57,32,50,48,46,52,57,54,32,49,56,46,57,54,49,32,49,56,46,52,54,53,32,99,32,50,48,46,56,51,50,10,49,54,46,52,51,52,32,50,48,46,54,57,57,32,49,51,46,50,55,32,49,56,46,54,54,56,32,49,49,46,51,57,56,32,99,32,49,55,46,49,54,52,32,49,48,46,48,49,54,32,49,53,46,48,52,51,32,57,46,55,52,54,32,49,51,46,50,56,49,10,49,48,46,53,49,54,32,99,32,49,50,46,52,55,51,32,57,46,51,50,52,32,108,32,49,49,46,50,56,49,32,49,48,46,48,55,56,32,108,32,57,46,53,52,55,32,56,46,54,54,52,32,108,32,57,46,48,48,56,32,54,46,52,57,54,32,108,10,55,46,48,53,57,32,54,46,48,53,57,32,108,32,54,46,51,52,32,52,46,49,50,49,32,108,32,53,46,53,52,51,32,51,46,54,54,56,32,108,32,51,46,51,55,53,32,52,46,50,48,55,32,108,32,50,46,57,51,56,32,54,46,49,53,54,32,108,10,49,48,46,53,55,32,49,51,46,52,53,55,32,108,32,57,46,57,52,57,32,49,53,46,50,55,55,32,49,48,46,51,57,49,32,49,55,46,51,54,55,32,49,49,46,56,57,53,32,49,56,46,55,53,52,32,99,32,104,10,49,49,46,56,57,53,32,49,56,46,55,53,52,32,109,32,83,10,49,46,53,32,119,10,49,54,46,48,53,57,32,49,53,46,53,56,54,32,109,32,49,54,46,53,50,51,32,49,53,46,48,55,56,32,49,55,46,51,49,54,32,49,53,46,48,52,51,32,49,55,46,56,50,52,32,49,53,46,53,49,50,32,99,32,49,56,46,51,51,50,10,49,53,46,57,56,32,49,56,46,51,54,51,32,49,54,46,55,55,32,49,55,46,56,57,53,32,49,55,46,50,55,55,32,99,32,49,55,46,52,51,32,49,55,46,55,56,53,32,49,54,46,54,51,55,32,49,55,46,56,49,54,32,49,54,46,49,50,57,10,49,55,46,51,53,50,32,99,32,49,53,46,54,50,49,32,49,54,46,56,56,51,32,49,53,46,53,57,32,49,54,46,48,57,52,32,49,54,46,48,53,57,32,49,53,46,53,56,54,32,99,32,104,10,49,54,46,48,53,57,32,49,53,46,53,56,54,32,109,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,50,32,119,10,49,49,46,56,57,53,32,49,57,46,55,53,52,32,109,32,49,51,46,57,50,54,32,50,49,46,54,50,53,32,49,55,46,48,57,32,50,49,46,52,57,54,32,49,56,46,57,54,49,32,49,57,46,52,54,53,32,99,32,50,48,46,56,51,50,10,49,55,46,52,51,52,32,50,48,46,54,57,57,32,49,52,46,50,55,32,49,56,46,54,54,56,32,49,50,46,51,57,56,32,99,32,49,55,46,49,54,52,32,49,49,46,48,49,54,32,49,53,46,48,52,51,32,49,48,46,55,52,54,32,49,51,46,50,56,49,10,49,49,46,53,49,54,32,99,32,49,50,46,52,55,51,32,49,48,46,51,50,52,32,108,32,49,49,46,50,56,49,32,49,49,46,48,55,56,32,108,32,57,46,53,52,55,32,57,46,54,54,52,32,108,32,57,46,48,48,56,32,55,46,52,57,54,32,108,10,55,46,48,53,57,32,55,46,48,53,57,32,108,32,54,46,51,52,32,53,46,49,50,49,32,108,32,53,46,53,52,51,32,52,46,54,54,56,32,108,32,51,46,51,55,53,32,53,46,50,48,55,32,108,32,50,46,57,51,56,32,55,46,49,53,54,32,108,10,49,48,46,53,55,32,49,52,46,52,53,55,32,108,32,57,46,57,52,57,32,49,54,46,50,55,55,32,49,48,46,51,57,49,32,49,56,46,51,54,55,32,49,49,46,56,57,53,32,49,57,46,55,53,52,32,99,32,104,10,49,49,46,56,57,53,32,49,57,46,55,53,52,32,109,32,83,10,49,46,53,32,119,10,49,54,46,48,53,57,32,49,54,46,53,56,54,32,109,32,49,54,46,53,50,51,32,49,54,46,48,55,56,32,49,55,46,51,49,54,32,49,54,46,48,52,51,32,49,55,46,56,50,52,32,49,54,46,53,49,50,32,99,32,49,56,46,51,51,50,10,49,54,46,57,56,32,49,56,46,51,54,51,32,49,55,46,55,55,32,49,55,46,56,57,53,32,49,56,46,50,55,55,32,99,32,49,55,46,52,51,32,49,56,46,55,56,53,32,49,54,46,54,51,55,32,49,56,46,56,49,54,32,49,54,46,49,50,57,10,49,56,46,51,53,50,32,99,32,49,53,46,54,50,49,32,49,55,46,56,56,51,32,49,53,46,53,57,32,49,55,46,48,57,52,32,49,54,46,48,53,57,32,49,54,46,53,56,54,32,99,32,104,10,49,54,46,48,53,57,32,49,54,46,53,56,54,32,109,32,83,10,0,72,101,108,112,0,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,46,53,32,119,10,49,32,74,10,49,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,56,46,50,56,57,32,49,54,46,52,56,56,32,109,32,56,46,56,50,52,32,49,55,46,56,50,56,32,49,48,46,48,52,51,32,49,56,46,55,55,51,32,49,49,46,52,55,51,32,49,56,46,57,54,53,32,99,32,49,50,46,57,48,50,32,49,57,46,49,53,54,10,49,52,46,51,50,56,32,49,56,46,53,53,57,32,49,53,46,49,57,53,32,49,55,46,52,48,54,32,99,32,49,54,46,48,54,50,32,49,54,46,50,53,52,32,49,54,46,50,52,50,32,49,52,46,55,50,51,32,49,53,46,54,54,52,32,49,51,46,51,57,56,10,99,32,83,10,48,32,106,10,49,50,32,56,32,109,32,49,50,32,49,50,32,49,54,32,49,49,32,49,54,32,49,53,32,99,32,83,10,49,46,53,51,57,50,56,54,32,119,10,49,32,106,10,113,32,49,32,48,32,48,32,45,48,46,57,57,57,57,57,49,32,48,32,50,52,32,99,109,10,49,50,46,54,56,52,32,50,48,46,56,57,49,32,109,32,49,50,46,52,55,51,32,50,49,46,50,53,56,32,49,50,46,48,48,52,32,50,49,46,51,57,53,32,49,49,46,54,50,57,32,50,49,46,49,57,54,32,99,32,49,49,46,50,53,52,10,50,48,46,57,57,50,32,49,49,46,49,48,53,32,50,48,46,53,51,49,32,49,49,46,50,57,55,32,50,48,46,49,52,57,32,99,32,49,49,46,52,56,56,32,49,57,46,55,55,32,49,49,46,57,52,53,32,49,57,46,54,49,32,49,50,46,51,51,50,10,49,57,46,55,56,57,32,99,32,49,50,46,55,49,57,32,49,57,46,57,54,57,32,49,50,46,56,57,49,32,50,48,46,52,50,54,32,49,50,46,55,49,57,32,50,48,46,56,49,55,32,99,32,83,32,81,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,50,46,53,32,119,10,56,46,50,56,57,32,49,55,46,52,56,56,32,109,32,57,46,49,48,57,32,49,57,46,53,51,57,32,49,49,46,52,51,56,32,50,48,46,53,51,53,32,49,51,46,52,56,56,32,49,57,46,55,49,49,32,99,32,49,53,46,53,51,57,32,49,56,46,56,57,49,10,49,54,46,53,51,53,32,49,54,46,53,54,50,32,49,53,46,55,49,49,32,49,52,46,53,49,50,32,99,32,49,53,46,54,57,57,32,49,52,46,52,55,51,32,49,53,46,54,56,52,32,49,52,46,52,51,56,32,49,53,46,54,54,52,32,49,52,46,51,57,56,10,99,32,83,10,48,32,106,10,49,50,32,57,32,109,32,49,50,32,49,51,32,49,54,32,49,50,32,49,54,32,49,54,32,99,32,83,10,49,46,53,51,57,50,56,54,32,119,10,49,32,106,10,113,32,49,32,48,32,48,32,45,48,46,57,57,57,57,57,49,32,48,32,50,52,32,99,109,10,49,50,46,54,56,52,32,49,57,46,56,57,49,32,109,32,49,50,46,52,55,51,32,50,48,46,50,53,56,32,49,50,46,48,48,52,32,50,48,46,51,57,53,32,49,49,46,54,50,57,32,50,48,46,49,57,53,32,99,32,49,49,46,50,53,52,10,49,57,46,57,57,50,32,49,49,46,49,48,53,32,49,57,46,53,51,49,32,49,49,46,50,57,55,32,49,57,46,49,52,57,32,99,32,49,49,46,52,56,56,32,49,56,46,55,55,32,49,49,46,57,52,53,32,49,56,46,54,49,32,49,50,46,51,51,50,10,49,56,46,55,56,57,32,99,32,49,50,46,55,49,57,32,49,56,46,57,54,57,32,49,50,46,56,57,49,32,49,57,46,52,50,54,32,49,50,46,55,49,57,32,49,57,46,56,49,55,32,99,32,83,32,81,10,0,78,101,119,80,97,114,97,103,114,97,112,104,0,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,52,32,119,10,48,32,74,10,50,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,113,32,49,32,48,32,48,32,45,49,32,48,32,50,52,32,99,109,10,57,46,50,49,49,32,49,49,46,57,56,56,32,109,32,56,46,52,52,57,32,49,50,46,48,55,32,55,46,55,49,49,32,49,49,46,55,48,55,32,55,46,51,48,53,32,49,49,46,48,53,57,32,99,32,54,46,56,57,56,32,49,48,46,52,49,10,54,46,56,57,56,32,57,46,53,57,32,55,46,51,48,53,32,56,46,57,52,49,32,99,32,55,46,55,49,49,32,56,46,50,57,51,32,56,46,52,52,57,32,55,46,57,51,32,57,46,50,49,49,32,56,46,48,49,50,32,99,32,83,32,81,10,49,46,48,48,52,52,49,51,32,119,10,49,32,74,10,49,32,106,10,113,32,49,32,48,32,48,32,45,48,46,57,57,49,50,51,50,32,48,32,50,52,32,99,109,10,49,56,46,48,55,32,49,49,46,53,49,49,32,109,32,49,53,46,49,49,51,32,49,48,46,48,49,52,32,108,32,49,50,46,49,57,57,32,49,49,46,54,48,50,32,108,32,49,50,46,55,49,49,32,56,46,51,50,51,32,108,32,49,48,46,51,48,49,10,54,46,48,52,53,32,108,32,49,51,46,53,55,52,32,53,46,53,49,55,32,108,32,49,52,46,57,57,54,32,50,46,53,50,50,32,108,32,49,54,46,53,49,50,32,53,46,52,55,52,32,108,32,49,57,46,56,48,49,32,53,46,56,57,57,32,108,10,49,55,46,52,54,49,32,56,46,50,53,50,32,108,32,49,56,46,48,55,32,49,49,46,53,49,49,32,108,32,104,10,49,56,46,48,55,32,49,49,46,53,49,49,32,109,32,83,32,81,10,50,32,119,10,48,32,106,10,49,49,32,49,55,32,109,32,49,48,32,49,55,32,108,32,49,48,32,51,32,108,32,83,10,49,52,32,51,32,109,32,49,52,32,49,51,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,52,32,119,10,48,32,74,10,50,32,106,10,113,32,49,32,48,32,48,32,45,49,32,48,32,50,52,32,99,109,10,57,46,50,49,49,32,49,48,46,57,56,56,32,109,32,56,46,49,48,57,32,49,49,46,49,48,53,32,55,46,49,50,53,32,49,48,46,51,48,57,32,55,46,48,49,50,32,57,46,50,49,49,32,99,32,54,46,56,57,53,32,56,46,49,48,57,10,55,46,54,57,49,32,55,46,49,50,53,32,56,46,55,56,57,32,55,46,48,49,50,32,99,32,56,46], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+51200); -/* memory initializer */ allocate([57,51,32,54,46,57,57,54,32,57,46,48,55,32,54,46,57,57,54,32,57,46,50,49,49,32,55,46,48,49,50,32,99,32,83,32,81,10,49,46,48,48,52,52,49,51,32,119,10,49,32,74,10,49,32,106,10,113,32,49,32,48,32,48,32,45,48,46,57,57,49,50,51,50,32,48,32,50,52,32,99,109,10,49,56,46,48,55,32,49,48,46,53,48,50,32,109,32,49,53,46,49,49,51,32,57,46,48,48,53,32,108,32,49,50,46,49,57,57,32,49,48,46,53,57,51,32,108,32,49,50,46,55,49,49,32,55,46,51,49,52,32,108,32,49,48,46,51,48,49,10,53,46,48,51,54,32,108,32,49,51,46,53,55,52,32,52,46,53,48,56,32,108,32,49,52,46,57,57,54,32,49,46,53,49,51,32,108,32,49,54,46,53,49,50,32,52,46,52,54,53,32,108,32,49,57,46,56,48,49,32,52,46,56,57,49,32,108,10,49,55,46,52,54,49,32,55,46,50,52,51,32,108,32,49,56,46,48,55,32,49,48,46,53,48,50,32,108,32,104,10,49,56,46,48,55,32,49,48,46,53,48,50,32,109,32,83,32,81,10,50,32,119,10,48,32,106,10,49,49,32,49,56,32,109,32,49,48,32,49,56,32,108,32,49,48,32,52,32,108,32,83,10,49,52,32,52,32,109,32,49,52,32,49,52,32,108,32,83,10,0,0,0,0,0,0,0,0,80,97,114,97,103,114,97,112,104,0,0,0,0,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,49,32,74,10,49,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,49,53,32,51,32,109,32,49,53,32,49,56,32,108,32,49,49,32,49,56,32,108,32,49,49,32,51,32,108,32,83,10,52,32,119,10,113,32,49,32,48,32,48,32,45,49,32,48,32,50,52,32,99,109,10,57,46,55,55,55,32,49,48,46,57,56,56,32,109,32,56,46,55,52,54,32,49,48,46,56,55,49,32,55,46,57,55,51,32,57,46,57,56,56,32,56,32,56,46,57,52,57,32,99,32,56,46,48,50,55,32,55,46,57,49,32,56,46,56,52,52,10,55,46,48,54,54,32,57,46,56,55,57,32,55,46,48,48,52,32,99,32,83,32,81,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,50,32,119,10,49,53,32,52,32,109,32,49,53,32,49,57,32,108,32,49,49,32,49,57,32,108,32,49,49,32,52,32,108,32,83,10,52,32,119,10,113,32,49,32,48,32,48,32,45,49,32,48,32,50,52,32,99,109,10,57,46,55,55,55,32,57,46,57,56,56,32,109,32,56,46,55,52,54,32,57,46,56,55,49,32,55,46,57,55,51,32,56,46,57,56,56,32,56,32,55,46,57,52,57,32,99,32,56,46,48,50,55,32,54,46,57,49,32,56,46,56,52,52,32,54,46,48,54,54,10,57,46,56,55,57,32,54,46,48,48,52,32,99,32,83,32,81,10,0,0,0,73,110,115,101,114,116,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,49,32,74,10,48,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,49,50,32,49,56,46,48,49,50,32,109,32,50,48,32,49,56,32,108,32,83,10,57,32,49,48,32,109,32,49,55,32,49,48,32,108,32,83,10,49,50,32,49,52,46,48,49,50,32,109,32,50,48,32,49,52,32,108,32,83,10,49,50,32,54,46,48,49,50,32,109,32,50,48,32,54,46,48,49,50,32,108,32,83,10,52,32,49,50,32,109,32,54,32,49,48,32,108,32,52,32,56,32,108,32,83,10,52,32,49,50,32,109,32,52,32,56,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,49,50,32,49,57,46,48,49,50,32,109,32,50,48,32,49,57,32,108,32,83,10,57,32,49,49,32,109,32,49,55,32,49,49,32,108,32,83,10,49,50,32,49,53,46,48,49,50,32,109,32,50,48,32,49,53,32,108,32,83,10,49,50,32,55,46,48,49,50,32,109,32,50,48,32,55,46,48,49,50,32,108,32,83,10,52,32,49,51,32,109,32,54,32,49,49,32,108,32,52,32,57,32,108,32,83,10,52,32,49,51,32,109,32,52,32,57,32,108,32,83,10,0,0,0,0,0,67,114,111,115,115,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,46,53,32,119,10,49,32,74,10,48,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,49,56,32,53,32,109,32,54,32,49,55,32,108,32,83,10,54,32,53,32,109,32,49,56,32,49,55,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,49,56,32,54,32,109,32,54,32,49,56,32,108,32,83,10,54,32,54,32,109,32,49,56,32,49,56,32,108,32,83,10,0,0,0,0,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,46,53,32,119,10,49,32,74,10,49,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,49,57,46,53,32,49,49,46,53,32,109,32,49,57,46,53,32,55,46,51,53,57,32,49,54,46,49,52,49,32,52,32,49,50,32,52,32,99,32,55,46,56,53,57,32,52,32,52,46,53,32,55,46,51,53,57,32,52,46,53,32,49,49,46,53,32,99,32,52,46,53,10,49,53,46,54,52,49,32,55,46,56,53,57,32,49,57,32,49,50,32,49,57,32,99,32,49,54,46,49,52,49,32,49,57,32,49,57,46,53,32,49,53,46,54,52,49,32,49,57,46,53,32,49,49,46,53,32,99,32,104,10,49,57,46,53,32,49,49,46,53,32,109,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,49,57,46,53,32,49,50,46,53,32,109,32,49,57,46,53,32,56,46,51,53,57,32,49,54,46,49,52,49,32,53,32,49,50,32,53,32,99,10,55,46,56,53,57,32,53,32,52,46,53,32,56,46,51,53,57,32,52,46,53,32,49,50,46,53,32,99,32,52,46,53,10,49,54,46,54,52,49,32,55,46,56,53,57,32,50,48,32,49,50,32,50,48,32,99,32,49,54,46,49,52,49,32,50,48,32,49,57,46,53,32,49,54,46,54,52,49,32,49,57,46,53,32,49,50,46,53,32,99,32,104,10,49,57,46,53,32,49,50,46,53,32,109,32,83,10,0,0,0,81,10,0,0,0,0,0,0,47,71,83,48,32,103,115,10,47,70,109,48,32,68,111,0,70,109,48,0,0,0,0,0,71,83,48,0,0,0,0,0,0,0,0,0,216,24,1,0,104,0,0,0,105,0,0,0,23,0,0,0,0,0,0,0,76,105,110,107,0,0,0,0,68,101,115,116,0,0,0,0,72,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,81,117,97,100,80,111,105,110,116,115,0,0,0,0,0,0,0,0,0,0,248,24,1,0,106,0,0,0,107,0,0,0,21,0,0,0,0,0,0,0,70,114,101,101,84,101,120,116,0,0,0,0,0,0,0,0,68,65,0,0,0,0,0,0,66,97,100,32,97,112,112,101,97,114,97,110,99,101,32,102,111,114,32,97,110,110,111,116,97,116,105,111,110,0,0,0,81,0,0,0,0,0,0,0,68,83,0,0,0,0,0,0,67,76,0,0,0,0,0,0,73,84,0,0,0,0,0,0,70,114,101,101,84,101,120,116,67,97,108,108,111,117,116,0,70,114,101,101,84,101,120,116,84,121,112,101,87,114,105,116,101,114,0,0,0,0,0,0,66,69,0,0,0,0,0,0,82,68,0,0,0,0,0,0,76,69,0,0,0,0,0,0,0,0,0,0,24,25,1,0,108,0,0,0,109,0,0,0,24,0,0,0,0,0,0,0,76,105,110,101,0,0,0,0,76,0,0,0,0,0,0,0,73,67,0,0,0,0,0,0,76,76,0,0,0,0,0,0,76,76,69,0,0,0,0,0,67,97,112,0,0,0,0,0,76,105,110,101,65,114,114,111,119,0,0,0,0,0,0,0,76,105,110,101,68,105,109,101,110,115,105,111,110,0,0,0,76,76,79,0,0,0,0,0,67,80,0,0,0,0,0,0,73,110,108,105,110,101,0,0,84,111,112,0,0,0,0,0,77,101,97,115,117,114,101,0,67,79,0,0,0,0,0,0,91,0,0,0,0,0,0,0,32,123,48,58,46,50,102,125,0,0,0,0,0,0,0,0,32,93,32,48,32,100,10,0,91,93,32,48,32,100,10,0,123,48,58,46,50,102,125,32,119,10,0,0,0,0,0,0,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,108,10,0,0,0,0,0,0,0,0,0,0,64,25,1,0,110,0,0,0,111,0,0,0,25,0,0,0,0,0,0,0,72,105,103,104,108,105,103,104,116,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,0,0,0,0,0,0,0,83,113,117,105,103,103,108,121,0,0,0,0,0,0,0,0,83,116,114,105,107,101,79,117,116,0,0,0,0,0,0,0,66,97,100,32,65,110,110,111,116,32,84,101,120,116,32,77,97,114,107,117,112,32,81,117,97,100,80,111,105,110,116,115,0,0,0,0,0,0,0,0,91,93,48,32,100,32,50,32,119,10,0,0,0,0,0,0,77,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,0,0,0,0,96,25,1,0,112,0,0,0,113,0,0,0,26,0,0,0,0,0,0,0,77,75,0,0,0,0,0,0,65,65,0,0,0,0,0,0,65,110,110,111,116,87,105,100,103,101,116,58,58,108,97,121,111,117,116,84,101,120,116,44,32,98,97,100,32,117,110,105,99,111,100,101,32,115,116,114,105,110,103,0,0,0,0,0,119,97,114,110,105,110,103,58,32,108,97,121,111,117,116,84,101,120,116,58,32,99,97,110,110,111,116,32,99,111,110,118,101,114,116,32,85,43,37,48,52,88,10,0,0,0,0,0,92,123,48,58,48,51,111,125,0,0,0,0,0,0,0,0,84,102,0,0,0,0,0,0,84,109,0,0,0,0,0,0,47,90,97,68,98,0,0,0,90,97,68,98,0,0,0,0,90,97,112,102,68,105,110,103,98,97,116,115,0,0,0,0,85,110,107,110,111,119,110,32,102,111,110,116,32,105,110,32,102,105,101,108,100,39,115,32,68,65,32,115,116,114,105,110,103,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,102,111,110,116,32,110,97,109,101,32,105,110,32,39,84,102,39,32,111,112,101,114,97,116,111,114,32,105,110,32,102,105,101,108,100,39,115,32,68,65,32,115,116,114,105,110,103,0,77,105,115,115,105,110,103,32,39,84,102,39,32,111,112,101,114,97,116,111,114,32,105,110,32,102,105,101,108,100,39,115,32,68,65,32,115,116,114,105,110,103,0,0,0,0,0,0,47,84,120,32,66,77,67,10,0,0,0,0,0,0,0,0,66,84,10,0,0,0,0,0,123,48,58,46,50,102,125,0,49,32,48,32,48,32,49,32,48,32,123,48,58,46,50,102,125,32,84,109,10,0,0,0,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,84,100,10,0,0,0,0,0,32,84,106,10,0,0,0,0,49,32,48,32,48,32,49,32,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,84,109,10,0,0,0,0,0,123,48,58,46,50,102,125,32,48,32,84,100,10,0,0,0,69,84,10,0,0,0,0,0,69,77,67,10,0,0,0,0,48,32,103,32,102,10,0,0,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,123,50,58,46,50,102,125,32,123,51,58,46,50,102,125,32,114,101,32,102,10,0,0,0,49,32,103,10,0,0,0,0,48,32,48,32,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,114,101,32,102,10,0,0,0,0,0,0,0,70,84,0,0,0,0,0,0,70,102,0,0,0,0,0,0,66,116,110,0,0,0,0,0,93,32,48,32,100,10,0,0,123,48,58,46,50,102,125,32,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,123,50,58,46,50,102,125,32,114,101,32,115,10,0,0,0,48,32,48,32,109,10,0,0,48,32,123,48,58,46,50,102,125,32,108,10,0,0,0,0,123,48,58,46,50,102,125,32,123,48,58,46,50,102,125,32,108,10,0,0,0,0,0,0,123,48,58,46,50,102,125,32,48,32,108,10,0,0,0,0,48,32,48,32,109,32,123,48,58,46,50,102,125,32,48,32,108,32,115,10,0,0,0,0,123,48,58,46,50,102,125,32,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,123,50,58,46,50,102,125,32,114,101,32,87,32,110,10,0,68,82,0,0,0,0,0,0,70,111,110,116,0,0,0,0,86,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,84,120,0,0,0,0,0,0,77,97,120,76,101,110,0,0,67,104,0,0,0,0,0,0,79,112,116,0,0,0,0,0,84,73,0,0,0,0,0,0,83,105,103,0,0,0,0,0,85,110,107,110,111,119,110,32,102,105,101,108,100,32,116,121,112,101,0,0,0,0,0,0,84,121,112,101,49,0,0,0,66,97,115,101,70,111,110,116,0,0,0,0,0,0,0,0,0,0,0,0,128,25,1,0,114,0,0,0,115,0,0,0,27,0,0,0,0,0,0,0,77,111,118,105,101,0,0,0,66,97,100,32,65,110,110,111,116,32,77,111,118,105,101,0,123,48,58,100,125,32,48,32,48,32,123,49,58,100,125,32,48,32,48,32,99,109,10,0,47,77,73,109,103,32,68,111,10,0,0,0,0,0,0,0,77,73,109,103,0,0,0,0,70,82,77,0,0,0,0,0,77,97,116,114,105,120,0,0,48,32,48,32,123,48,58,100,125,32,123,49,58,100,125,32,114,101,32,87,32,110,10,0,49,32,48,32,48,32,49,32,123,48,58,100,125,32,123,49,58,100,125,32,99,109,10,0,47,70,82,77,32,68,111,10,0,0,0,0,0,0,0,0,0,0,0,0,160,25,1,0,116,0,0,0,117,0,0,0,21,0,0,0,0,0,0,0,83,99,114,101,101,110,0,0,73,110,118,97,108,105,100,32,82,101,110,100,105,116,105,111,110,32,97,99,116,105,111,110,58,32,97,115,115,111,99,105,97,116,101,100,32,115,99,114,101,101,110,32,97,110,110,111,116,97,116,105,111,110,32,119,105,116,104,111,117,116,32,80,0,0,0,0,0,0,0,0,0,0,0,0,192,25,1,0,118,0,0,0,119,0,0,0,21,0,0,0,0,0,0,0,83,116,97,109,112,0,0,0,68,114,97,102,116,0,0,0,0,0,0,0,224,25,1,0,120,0,0,0,121,0,0,0,28,0,0,0,0,0,0,0,123,48,58,46,50,102,125,32,123,49,58,46,50,102,125,32,123,50,58,46,50,102,125,32,123,51,58,46,50,102,125,32,114,101,10,0,0,0,0,0,98,10,0,0,0,0,0,0,0,0,0,0,0,26,1,0,122,0,0,0,123,0,0,0,21,0,0,0,0,0,0,0,80,111,108,121,103,111,110,0,80,111,108,121,76,105,110,101,0,0,0,0,0,0,0,0,86,101,114,116,105,99,101,115,0,0,0,0,0,0,0,0,66,97,100,32,65,110,110,111,116,32,80,111,108,121,103,111,110,32,86,101,114,116,105,99,101,115,0,0,0,0,0,0,80,111,108,121,103,111,110,67,108,111,117,100,0,0,0,0,80,111,108,121,76,105,110,101,68,105,109,101,110,115,105,111,110,0,0,0,0,0,0,0,0,0,0,0,32,26,1,0,124,0,0,0,125,0,0,0,21,0,0,0,0,0,0,0,67,97,114,101,116,0,0,0,83,121,0,0,0,0,0,0,0,0,0,0,64,26,1,0,126,0,0,0,127,0,0,0,21,0,0,0,0,0,0,0,73,110,107,0,0,0,0,0,73,110,107,76,105,115,116,0,66,97,100,32,65,110,110,111,116,32,73,110,107,32,76,105,115,116,0,0,0,0,0,0,0,0,0,0,104,26,1,0,128,0,0,0,129,0,0,0,29,0,0,0,0,0,0,0,70,105,108,101,65,116,116,97,99,104,109,101,110,116,0,0,70,83,0,0,0,0,0,0,66,97,100,32,65,110,110,111,116,32,70,105,108,101,32,65,116,116,97,99,104,109,101,110,116,0,0,0,0,0,0,0,80,117,115,104,80,105,110,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,49,32,74,10,49,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,53,32,52,32,109,32,54,32,53,32,108,32,83,10,50,32,119,10,49,49,32,49,52,32,109,32,57,32,49,50,32,108,32,54,32,49,50,32,108,32,49,51,32,53,32,108,32,49,51,32,56,32,108,32,49,53,32,49,48,32,108,32,49,56,32,49,49,32,108,32,50,48,32,49,49,32,108,32,49,50,32,49,57,32,108,32,49,50,10,49,55,32,108,32,49,49,32,49,52,32,108,32,104,10,49,49,32,49,52,32,109,32,83,10,51,32,119,10,54,32,53,32,109,32,57,32,56,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,50,32,119,10,53,32,53,32,109,32,54,32,54,32,108,32,83,10,50,32,119,10,49,49,32,49,53,32,109,32,57,32,49,51,32,108,32,54,32,49,51,32,108,32,49,51,32,54,32,108,32,49,51,32,57,32,108,32,49,53,32,49,49,32,108,32,49,56,32,49,50,32,108,32,50,48,32,49,50,32,108,32,49,50,32,50,48,32,108,32,49,50,10,49,56,32,108,32,49,49,32,49,53,32,108,32,104,10,49,49,32,49,53,32,109,32,83,10,51,32,119,10,54,32,54,32,109,32,57,32,57,32,108,32,83,10,0,0,0,0,0,80,97,112,101,114,99,108,105,112,0,0,0,0,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,49,32,74,10,49,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,49,54,46,54,52,53,32,49,50,46,48,51,53,32,109,32,49,50,46,52,49,56,32,55,46,55,48,55,32,108,32,49,48,46,57,48,50,32,54,46,53,53,57,32,54,46,52,48,50,32,49,49,46,50,48,51,32,56,46,48,57,32,49,50,46,53,54,50,32,99,10,49,52,46,49,51,51,32,49,56,46,53,55,56,32,108,32,49,52,46,57,52,57,32,49,57,46,51,56,55,32,49,54,46,56,54,55,32,49,57,46,49,56,52,32,49,55,46,53,51,57,32,49,56,46,52,54,53,32,99,32,50,48,46,53,53,49,10,49,53,46,50,51,32,108,32,50,49,46,49,57,49,32,49,52,46,54,54,32,50,49,46,51,51,54,32,49,50,46,56,56,55,32,50,48,46,52,50,54,32,49,50,46,49,48,50,32,99,32,49,51,46,49,56,32,52,46,56,50,52,32,108,32,49,50,46,49,56,10,51,46,56,50,32,54,46,50,53,32,50,46,53,54,54,32,52,46,51,50,52,32,52,46,52,54,49,32,99,32,51,32,54,46,51,57,53,32,51,46,51,56,51,32,49,49,46,52,51,56,32,52,46,55,49,49,32,49,50,46,56,48,49,32,99,32,57,46,54,52,56,10,49,55,46,56,56,55,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,49,54,46,54,52,53,32,49,51,46,48,51,53,32,109,32,49,50,46,52,49,56,32,56,46,55,48,55,32,108,10,49,48,46,57,48,50,32,55,46,53,53,57,32,54,46,52,48,50,32,49,50,46,50,48,51,32,56,46,48,57,32,49,51,46,53,54,50,32,99,10,49,52,46,49,51,51,32,49,57,46,53,55,56,32,108,32,49,52,46,57,52,57,32,50,48,46,51,56,55,32,49,54,46,56,54,55,32,50,48,46,49,56,52,32,49,55,46,53,51,57,32,49,57,46,52,54,53,32,99,32,50,48,46,53,53,49,10,49,54,46,50,51,32,108,32,50,49,46,49,57,49,32,49,53,46,54,54,32,50,49,46,51,51,54,32,49,51,46,56,56,55,32,50,48,46,52,50,54,32,49,51,46,49,48,50,32,99,32,49,51,46,49,56,32,53,46,56,50,52,32,108,32,49,50,46,49,56,10,52,46,56,50,32,54,46,50,53,32,51,46,53,54,54,32,52,46,51,50,52,32,53,46,52,54,49,32,99,32,51,32,55,46,51,57,53,32,51,46,51,56,51,32,49,50,46,52,51,56,32,52,46,55,49,49,32,49,51,46,56,48,49,32,99,32,57,46,54,52,56,10,49,56,46,56,56,55,32,108,32,83,10,0,71,114,97,112,104,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,49,32,119,10,49,32,74,10,48,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,49,56,46,53,32,49,53,46,53,32,109,32,49,56,46,53,32,49,51,46,48,56,54,32,108,32,49,54,46,48,56,54,32,49,53,46,53,32,108,32,49,56,46,53,32,49,53,46,53,32,108,32,104,10,49,56,46,53,32,49,53,46,53,32,109,32,83,10,55,32,55,32,109,32,49,48,32,49,49,32,108,32,49,51,32,57,32,108,32,49,56,32,49,53,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,55,32,56,32,109,32,49,48,32,49,50,32,108,32,49,51,32,49,48,32,108,32,49,56,32,49,54,32,108,32,83,10,49,56,46,53,32,49,54,46,53,32,109,32,49,56,46,53,32,49,52,46,48,56,54,32,108,32,49,54,46,48,56,54,32,49,54,46,53,32,108,32,49,56,46,53,32,49,54,46,53,32,108,32,104,10,49,56,46,53,32,49,54,46,53,32,109,32,83,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,49,32,106,10,51,32,49,57,32,109,32,51,32,51,32,108,32,50,49,32,51,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,51,32,50,48,32,109,32,51,32,52,32,108,32,50,49,32,52,32,108,32,83,10,0,0,84,97,103,0,0,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,48,46,57,57,57,55,56,49,32,119,10,49,32,74,10,49,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,113,32,49,32,48,32,48,32,45,49,32,48,32,50,52,32,99,109,10,56,46,52,57,50,32,56,46,55,48,55,32,109,32,56,46,52,57,50,32,57,46,53,51,53,32,55,46,56,50,32,49,48,46,50,48,55,32,54,46,57,57,50,32,49,48,46,50,48,55,32,99,32,54,46,49,54,52,32,49,48,46,50,48,55,32,53,46,52,57,50,10,57,46,53,51,53,32,53,46,52,57,50,32,56,46,55,48,55,32,99,32,53,46,52,57,50,32,55,46,56,55,57,32,54,46,49,54,52,32,55,46,50,48,55,32,54,46,57,57,50,32,55,46,50,48,55,32,99,32,55,46,56,50,32,55,46,50,48,55,10,56,46,52,57,50,32,55,46,56,55,57,32,56,46,52,57,50,32,56,46,55,48,55,32,99,32,104,10,56,46,52,57,50,32,56,46,55,48,55,32,109,32,83,32,81,10,50,32,119,10,50,48,46,48,55,56,32,49,49,46,52,49,52,32,109,32,50,48,46,56,57,49,32,49,48,46,54,48,50,32,50,48,46,55,56,53,32,57,46,50,57,51,32,50,48,46,48,55,56,32,56,46,53,56,54,32,99,32,49,52,46,52,50,50,32,50,46,57,51,32,108,10,49,51,46,55,49,53,32,50,46,50,50,51,32,49,50,46,51,48,49,32,50,46,50,50,51,32,49,49,46,53,57,52,32,50,46,57,51,32,99,32,51,46,56,49,54,32,49,48,46,55,48,55,32,108,32,51,46,49,48,57,32,49,49,46,52,49,52,10,50,46,52,48,50,32,49,55,46,55,56,49,32,51,46,56,49,54,32,49,57,46,49,57,53,32,99,32,53,46,50,51,32,50,48,46,54,48,57,32,49,49,46,53,57,52,32,49,57,46,57,48,50,32,49,50,46,51,48,49,32,49,57,46,49,57,53,32,99,10,50,48,46,48,55,56,32,49,49,46,52,49,52,32,108,32,104,10,50,48,46,48,55,56,32,49,49,46,52,49,52,32,109,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,50,48,46,48,55,56,32,49,50,46,52,49,52,32,109,10,50,48,46,56,57,49,32,49,49,46,54,48,53,32,50,48,46,55,56,53,32,49,48,46,50,57,51,32,50,48,46,48,55,56,32,57,46,53,56,54,32,99,32,49,52,46,52,50,50,32,51,46,57,51,32,108,10,49,51,46,55,49,53,32,51,46,50,50,51,32,49,50,46,51,48,49,32,51,46,50,50,51,32,49,49,46,53,57,52,32,51,46,57,51,32,99,32,51,46,56,49,54,32,49,49,46,55,48,55,32,108,32,51,46,49,48,57,32,49,50,46,52,49,52,10,50,46,52,48,50,32,49,56,46,55,56,49,32,51,46,56,49,54,32,50,48,46,49,57,53,32,99,32,53,46,50,51,32,50,49,46,54,48,57,32,49,49,46,53,57,52,32,50,48,46,57,48,50,32,49,50,46,51,48,49,32,50,48,46,49,57,53,32,99,10,50,48,46,48,55,56,32,49,50,46,52,49,52,32,108,32,104,10,50,48,46,48,55,56,32,49,50,46,52,49,52,32,109,32,83,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,49,32,119,10,48,32,106,10,49,49,46,57,52,57,32,49,51,46,49,56,52,32,109,32,49,54,46,49,57,49,32,56,46,57,52,49,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,49,49,46,57,52,57,32,49,52,46,49,56,52,32,109,32,49,54,46,49,57,49,32,57,46,57,52,49,32,108,32,83,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,49,52,46,48,55,32,54,46,56,50,32,109,32,57,46,56,50,56,32,49,49,46,48,54,50,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,49,52,46,48,55,32,55,46,56,50,32,109,32,57,46,56,50,56,32,49,50,46,48,54,50,32,108,32,83,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,54,46,57,51,32,49,53,46,49,52,49,32,109,32,56,32,50,48,32,49,52,46,50,55,32,50,48,46,53,32,49,54,32,50,48,46,53,32,99,10,49,56,46,48,57,52,32,50,48,46,53,48,52,32,49,57,46,53,32,50,48,32,49,57,46,53,32,49,56,32,99,32,49,57,46,53,32,49,54,46,54,57,57,32,50,48,46,57,49,32,49,54,46,52,49,56,32,50,50,46,53,32,49,54,46,53,32,99,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,48,46,57,57,57,55,56,49,32,119,10,49,32,106,10,113,32,49,32,48,32,48,32,45,49,32,48,32,50,52,32,99,109,10,56,46,52,57,50,32,55,46,55,48,55,32,109,32,56,46,52,57,50,32,56,46,53,51,53,32,55,46,56,50,32,57,46,50,48,55,32,54,46,57,57,50,32,57,46,50,48,55,32,99,32,54,46,49,54,52,32,57,46,50,48,55,32,53,46,52,57,50,10,56,46,53,51,53,32,53,46,52,57,50,32,55,46,55,48,55,32,99,32,53,46,52,57,50,32,54,46,56,55,57,32,54,46,49,54,52,32,54,46,50,48,55,32,54,46,57,57,50,32,54,46,50,48,55,32,99,32,55,46,56,50,32,54,46,50,48,55,10,56,46,52,57,50,32,54,46,56,55,57,32,56,46,52,57,50,32,55,46,55,48,55,32,99,32,104,10,56,46,52,57,50,32,55,46,55,48,55,32,109,32,83,32,81,10,49,32,119,10,48,32,106,10,54,46,57,51,32,49,54,46,49,52,49,32,109,32,56,32,50,49,32,49,52,46,50,55,32,50,49,46,53,32,49,54,32,50,49,46,53,32,99,32,49,56,46,48,57,52,32,50,49,46,53,48,52,32,49,57,46,53,32,50,49,32,49,57,46,53,32,49,57,32,99,10,49,57,46,53,32,49,55,46,54,57,57,32,50,48,46,57,49,32,49,55,46,52,49,56,32,50,50,46,53,32,49,55,46,53,32,99,32,83,10,0,0,0,0,0,136,26,1,0,130,0,0,0,131,0,0,0,30,0,0,0,0,0,0,0,83,111,117,110,100,0,0,0,66,97,100,32,65,110,110,111,116,32,83,111,117,110,100,0,83,112,101,97,107,101,114,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,48,32,74,10,49,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,52,32,49,52,32,109,32,52,46,48,56,54,32,56,46,48,52,51,32,108,32,55,32,56,32,108,32,49,49,32,52,32,108,32,49,49,32,49,56,32,108,32,55,32,49,52,32,108,32,52,32,49,52,32,108,32,104,10,52,32,49,52,32,109,32,83,10,49,32,119,10,49,32,74,10,48,32,106,10,49,51,46,54,57,57,32,49,53,46,51,57,56,32,109,32,49,52,46,54,57,57,32,49,51,46,51,57,56,32,49,52,46,54,57,57,32,57,46,51,57,56,32,49,51,46,54,57,57,32,55,46,51,57,56,32,99,32,83,10,49,56,46,49,57,57,32,49,57,46,51,57,56,32,109,32,50,49,46,49,57,57,32,49,55,46,51,57,56,32,50,49,46,49,57,57,32,53,46,51,57,56,32,49,56,46,49,57,57,32,51,46,51,57,56,32,99,32,83,10,49,54,32,49,55,46,51,57,56,32,109,32,49,56,32,49,54,46,51,57,56,32,49,56,32,55,46,51,57,56,32,49,54,32,53,46,51,57,56,32,99,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,50,32,119,10,48,32,74,10,49,32,106,10,52,32,49,53,32,109,32,52,46,48,56,54,32,57,46,48,52,51,32,108,32,55,32,57,32,108,32,49,49,32,53,32,108,32,49,49,32,49,57,32,108,32,55,32,49,53,32,108,32,52,32,49,53,32,108,32,104,10,52,32,49,53,32,109,32,83,10,49,32,119,10,49,32,74,10,48,32,106,10,49,51,46,54,57,57,32,49,54,32,109,32,49,52,46,54,57,57,32,49,52,32,49,52,46,54,57,57,32,49,48,32,49,51,46,54,57,57,32,56,32,99,32,83,10,49,56,46,49,57,57,32,50,48,32,109,32,50,49,46,49,57,57,32,49,56,32,50,49,46,49,57,57,32,54,32,49,56,46,49,57,57,32,52,32,99,32,83,10,49,54,32,49,56,32,109,32,49,56,32,49,55,32,49,56,32,56,32,49,54,32,54,32,99,32,83,10,0,0,0,0,0,0,77,105,99,0,0,0,0,0,52,46,51,48,49,32,50,51,32,109,32,49,57,46,54,57,57,32,50,51,32,108,32,50,49,46,53,50,51,32,50,51,32,50,51,32,50,49,46,53,50,51,32,50,51,32,49,57,46,54,57,57,32,99,32,50,51,32,52,46,51,48,49,32,108,32,50,51,10,50,46,52,55,55,32,50,49,46,53,50,51,32,49,32,49,57,46,54,57,57,32,49,32,99,32,52,46,51,48,49,32,49,32,108,32,50,46,52,55,55,32,49,32,49,32,50,46,52,55,55,32,49,32,52,46,51,48,49,32,99,32,49,32,49,57,46,54,57,57,10,108,32,49,32,50,49,46,53,50,51,32,50,46,52,55,55,32,50,51,32,52,46,51,48,49,32,50,51,32,99,32,104,10,52,46,51,48,49,32,50,51,32,109,32,102,10,48,46,53,51,51,51,51,51,32,48,46,53,52,49,49,55,54,32,48,46,53,50,49,53,54,57,32,82,71,32,50,32,119,10,49,32,74,10,48,32,106,10,91,93,32,48,46,48,32,100,10,52,32,77,32,49,50,32,50,48,32,109,32,49,50,32,50,48,32,108,32,49,51,46,54,53,54,32,50,48,32,49,53,32,49,56,46,54,53,54,32,49,53,32,49,55,32,99,32,49,53,32,49,51,32,108,32,49,53,32,49,49,46,51,52,52,32,49,51,46,54,53,54,32,49,48,10,49,50,32,49,48,32,99,32,49,50,32,49,48,32,108,32,49,48,46,51,52,52,32,49,48,32,57,32,49,49,46,51,52,52,32,57,32,49,51,32,99,32,57,32,49,55,32,108,32,57,32,49,56,46,54,53,54,32,49,48,46,51,52,52,32,50,48,32,49,50,10,50,48,32,99,32,104,10,49,50,32,50,48,32,109,32,83,10,49,32,119,10,49,55,46,53,32,49,52,46,53,32,109,32,49,55,46,53,32,49,49,46,57,55,51,32,108,32,49,55,46,53,32,56,46,57,52,49,32,49,53,46,48,52,55,32,54,46,53,32,49,50,32,54,46,53,32,99,32,56,46,57,53,51,32,54,46,53,32,54,46,53,10,56,46,57,52,49,32,54,46,53,32,49,49,46,57,55,51,32,99,32,54,46,53,32,49,52,46,53,32,108,32,83,10,50,32,119,10,48,32,74,10,49,50,32,54,46,53,50,32,109,32,49,50,32,51,32,108,32,83,10,49,32,74,10,56,32,51,32,109,32,49,54,32,51,32,108,32,83,10,48,46,55,50,57,52,49,50,32,48,46,55,52,49,49,55,54,32,48,46,55,49,51,55,50,53,32,82,71,32,49,50,32,50,49,32,109,32,49,50,32,50,49,32,108,32,49,51,46,54,53,54,32,50,49,32,49,53,32,49,57,46,54,53,54,32,49,53,32,49,56,32,99,10,49,53,32,49,52,32,108,32,49,53,32,49,50,46,51,52,52,32,49,51,46,54,53,54,32,49,49,32,49,50,32,49,49,32,99,32,49,50,32,49,49,32,108,32,49,48,46,51,52,52,32,49,49,32,57,32,49,50,46,51,52,52,32,57,32,49,52,32,99,10,57,32,49,56,32,108,32,57,32,49,57,46,54,53,54,32,49,48,46,51,52,52,32,50,49,32,49,50,32,50,49,32,99,32,104,10,49,50,32,50,49,32,109,32,83,10,49,32,119,10,49,55,46,53,32,49,53,46,53,32,109,32,49,55,46,53,32,49,50,46,57,55,51,32,108,32,49,55,46,53,32,57,46,57,52,49,32,49,53,46,48,52,55,32,55,46,53,32,49,50,32,55,46,53,32,99,32,56,46,57,53,51,32,55,46,53,32,54,46,53,10,57,46,57,52,49,32,54,46,53,32,49,50,46,57,55,51,32,99,32,54,46,53,32,49,53,46,53,32,108,32,83,10,50,32,119,10,48,32,74,10,49,50,32,55,46,53,50,32,109,32,49,50,32,52,32,108,32,83,10,49,32,74,10,56,32,52,32,109,32,49,54,32,52,32,108,32,83,10,0,0,0,0,0,0,0,0,0,0,0,168,26,1,0,132,0,0,0,133,0,0,0,21,0,0,0,0,0,0,0,51,68,0,0,0,0,0,0,51,68,65,0,0,0,0,0,80,79,0,0,0,0,0,0,80,86,0,0,0,0,0,0,88,65,0,0,0,0,0,0,65,73,83,0,0,0,0,0,80,67,0,0,0,0,0,0,80,73,0,0,0,0,0,0,88,68,0,0,0,0,0,0,68,73,83,0,0,0,0,0,84,66], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+61440); -/* memory initializer */ allocate([78,80,0,0,0,0,0,0,87,105,100,103,101,116,0,0,80,114,105,110,116,101,114,77,97,114,107,0,0,0,0,0,84,114,97,112,78,101,116,0,87,97,116,101,114,109,97,114,107,0,0,0,0,0,0,0,49,49,65,110,110,111,116,66,111,114,100,101,114,0,0,0,88,113,4,0,64,24,1,0,53,65,110,110,111,116,0,0,88,113,4,0,88,24,1,0,49,48,65,110,110,111,116,80,111,112,117,112,0,0,0,0,128,113,4,0,104,24,1,0,96,24,1,0,0,0,0,0,49,49,65,110,110,111,116,77,97,114,107,117,112,0,0,0,128,113,4,0,136,24,1,0,96,24,1,0,0,0,0,0,57,65,110,110,111,116,84,101,120,116,0,0,0,0,0,0,128,113,4,0,168,24,1,0,152,24,1,0,0,0,0,0,57,65,110,110,111,116,76,105,110,107,0,0,0,0,0,0,128,113,4,0,200,24,1,0,96,24,1,0,0,0,0,0,49,51,65,110,110,111,116,70,114,101,101,84,101,120,116,0,128,113,4,0,232,24,1,0,152,24,1,0,0,0,0,0,57,65,110,110,111,116,76,105,110,101,0,0,0,0,0,0,128,113,4,0,8,25,1,0,152,24,1,0,0,0,0,0,49,53,65,110,110,111,116,84,101,120,116,77,97,114,107,117,112,0,0,0,0,0,0,0,128,113,4,0,40,25,1,0,152,24,1,0,0,0,0,0,49,49,65,110,110,111,116,87,105,100,103,101,116,0,0,0,128,113,4,0,80,25,1,0,96,24,1,0,0,0,0,0,49,48,65,110,110,111,116,77,111,118,105,101,0,0,0,0,128,113,4,0,112,25,1,0,96,24,1,0,0,0,0,0,49,49,65,110,110,111,116,83,99,114,101,101,110,0,0,0,128,113,4,0,144,25,1,0,96,24,1,0,0,0,0,0,49,48,65,110,110,111,116,83,116,97,109,112,0,0,0,0,128,113,4,0,176,25,1,0,152,24,1,0,0,0,0,0,49,51,65,110,110,111,116,71,101,111,109,101,116,114,121,0,128,113,4,0,208,25,1,0,152,24,1,0,0,0,0,0,49,50,65,110,110,111,116,80,111,108,121,103,111,110,0,0,128,113,4,0,240,25,1,0,152,24,1,0,0,0,0,0,49,48,65,110,110,111,116,67,97,114,101,116,0,0,0,0,128,113,4,0,16,26,1,0,152,24,1,0,0,0,0,0,56,65,110,110,111,116,73,110,107,0,0,0,0,0,0,0,128,113,4,0,48,26,1,0,152,24,1,0,0,0,0,0,49,57,65,110,110,111,116,70,105,108,101,65,116,116,97,99,104,109,101,110,116,0,0,0,128,113,4,0,80,26,1,0,152,24,1,0,0,0,0,0,49,48,65,110,110,111,116,83,111,117,110,100,0,0,0,0,128,113,4,0,120,26,1,0,152,24,1,0,0,0,0,0,55,65,110,110,111,116,51,68,0,0,0,0,0,0,0,0,128,113,4,0,152,26,1,0,96,24,1,0,0,0,0,0,49,54,65,110,110,111,116,67,97,108,108,111,117,116,76,105,110,101,0,0,0,0,0,0,88,113,4,0,184,26,1,0,50,49,65,110,110,111,116,67,97,108,108,111,117,116,77,117,108,116,105,76,105,110,101,0,128,113,4,0,216,26,1,0,208,26,1,0,0,0,0,0,49,54,65,110,110,111,116,66,111,114,100,101,114,65,114,114,97,121,0,0,0,0,0,0,128,113,4,0,0,27,1,0,80,24,1,0,0,0,0,0,49,51,65,110,110,111,116,66,111,114,100,101,114,66,83,0,128,113,4,0,40,27,1,0,80,24,1,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,77,97,114,107,117,112,51,68,0,0,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,32,111,114,32,37,100,0,0,0,0,0,67,111,117,114,105,101,114,0,67,111,117,114,105,101,114,45,66,111,108,100,0,0,0,0,67,111,117,114,105,101,114,45,66,111,108,100,79,98,108,105,113,117,101,0,0,0,0,0,67,111,117,114,105,101,114,45,79,98,108,105,113,117,101,0,72,101,108,118,101,116,105,99,97,0,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,66,111,108,100,0,0,72,101,108,118,101,116,105,99,97,45,66,111,108,100,79,98,108,105,113,117,101,0,0,0,72,101,108,118,101,116,105,99,97,45,79,98,108,105,113,117,101,0,0,0,0,0,0,0,83,121,109,98,111,108,0,0,84,105,109,101,115,45,66,111,108,100,0,0,0,0,0,0,84,105,109,101,115,45,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,0,0,84,105,109,101,115,45,73,116,97,108,105,99,0,0,0,0,84,105,109,101,115,45,82,111,109,97,110,0,0,0,0,0,90,97,112,102,68,105,110,103,98,97,116,115,0,0,0,0,240,27,1,0,176,36,2,0,117,2,99,255,233,255,6,255,203,2,37,3,0,0,0,0,248,27,1,0,176,36,2,0,117,2,99,255,143,255,6,255,237,2,33,3,0,0,0,0,8,28,1,0,176,36,2,0,117,2,99,255,199,255,6,255,101,3,33,3,0,0,0,0,32,28,1,0,176,36,2,0,117,2,99,255,229,255,6,255,81,3,37,3,0,0,0,0,48,28,1,0,176,36,2,0,206,2,49,255,90,255,31,255,232,3,163,3,0,0,0,0,64,28,1,0,176,36,2,0,206,2,49,255,86,255,28,255,235,3,194,3,0,0,0,0,80,28,1,0,176,36,2,0,206,2,49,255,82,255,28,255,90,4,194,3,0,0,0,0,104,28,1,0,176,36,2,0,206,2,49,255,86,255,31,255,92,4,163,3,0,0,0,0,128,28,1,0,232,46,2,0,242,3,219,254,76,255,219,254,66,4,242,3,0,0,0,0,136,28,1,0,176,36,2,0,171,2,39,255,88,255,38,255,232,3,167,3,0,0,0,0,152,28,1,0,176,36,2,0,171,2,39,255,56,255,38,255,228,3,153,3,0,0,0,0,176,28,1,0,176,36,2,0,171,2,39,255,87,255,39,255,242,3,115,3,0,0,0,0,192,28,1,0,176,36,2,0,171,2,39,255,88,255,38,255,232,3,130,3,0,0,0,0,208,28,1,0,192,56,2,0,52,3,113,255,255,255,113,255,213,3,52,3,0,0,0,0,224,28,1,0,40,29,1,0,248,28,1,0,16,29,1,0,64,29,1,0,136,29,1,0,88,29,1,0,112,29,1,0,0,30,1,0,232,29,1,0,184,29,1,0,208,29,1,0,120,232,1,0,88,2,0,0,0,0,0,0,128,232,1,0,88,2,0,0,0,0,0,0,136,232,1,0,88,2,0,0,0,0,0,0,152,232,1,0,88,2,0,0,0,0,0,0,168,232,1,0,88,2,0,0,0,0,0,0,176,232,1,0,88,2,0,0,0,0,0,0,184,232,1,0,88,2,0,0,0,0,0,0,192,232,1,0,88,2,0,0,0,0,0,0,208,232,1,0,88,2,0,0,0,0,0,0,224,232,1,0,88,2,0,0,0,0,0,0,240,232,1,0,88,2,0,0,0,0,0,0,0,233,1,0,88,2,0,0,0,0,0,0,16,233,1,0,88,2,0,0,0,0,0,0,24,233,1,0,88,2,0,0,0,0,0,0,32,233,1,0,88,2,0,0,0,0,0,0,40,233,1,0,88,2,0,0,0,0,0,0,48,233,1,0,88,2,0,0,0,0,0,0,56,233,1,0,88,2,0,0,0,0,0,0,64,233,1,0,88,2,0,0,0,0,0,0,80,233,1,0,88,2,0,0,0,0,0,0,88,233,1,0,88,2,0,0,0,0,0,0,96,233,1,0,88,2,0,0,0,0,0,0,104,233,1,0,88,2,0,0,0,0,0,0,216,226,1,0,88,2,0,0,0,0,0,0,112,233,1,0,88,2,0,0,0,0,0,0,120,233,1,0,88,2,0,0,0,0,0,0,136,233,1,0,88,2,0,0,0,0,0,0,144,233,1,0,88,2,0,0,0,0,0,0,152,233,1,0,88,2,0,0,0,0,0,0,160,233,1,0,88,2,0,0,0,0,0,0,176,233,1,0,88,2,0,0,0,0,0,0,184,233,1,0,88,2,0,0,0,0,0,0,192,233,1,0,88,2,0,0,0,0,0,0,200,233,1,0,88,2,0,0,0,0,0,0,208,233,1,0,88,2,0,0,0,0,0,0,216,233,1,0,88,2,0,0,0,0,0,0,224,233,1,0,88,2,0,0,0,0,0,0,232,233,1,0,88,2,0,0,0,0,0,0,248,233,1,0,88,2,0,0,0,0,0,0,0,234,1,0,88,2,0,0,0,0,0,0,8,234,1,0,88,2,0,0,0,0,0,0,16,234,1,0,88,2,0,0,0,0,0,0,24,234,1,0,88,2,0,0,0,0,0,0,32,234,1,0,88,2,0,0,0,0,0,0,40,234,1,0,88,2,0,0,0,0,0,0,64,234,1,0,88,2,0,0,0,0,0,0,48,234,1,0,88,2,0,0,0,0,0,0,72,234,1,0,88,2,0,0,0,0,0,0,88,234,1,0,88,2,0,0,0,0,0,0,96,234,1,0,88,2,0,0,0,0,0,0,104,234,1,0,88,2,0,0,0,0,0,0,112,234,1,0,88,2,0,0,0,0,0,0,128,234,1,0,88,2,0,0,0,0,0,0,136,234,1,0,88,2,0,0,0,0,0,0,144,234,1,0,88,2,0,0,0,0,0,0,152,234,1,0,88,2,0,0,0,0,0,0,168,234,1,0,88,2,0,0,0,0,0,0,176,234,1,0,88,2,0,0,0,0,0,0,184,234,1,0,88,2,0,0,0,0,0,0,192,234,1,0,88,2,0,0,0,0,0,0,200,234,1,0,88,2,0,0,0,0,0,0,208,234,1,0,88,2,0,0,0,0,0,0,216,234,1,0,88,2,0,0,0,0,0,0,224,234,1,0,88,2,0,0,0,0,0,0,232,234,1,0,88,2,0,0,0,0,0,0,8,235,1,0,88,2,0,0,0,0,0,0,248,234,1,0,88,2,0,0,0,0,0,0,240,234,1,0,88,2,0,0,0,0,0,0,16,235,1,0,88,2,0,0,0,0,0,0,24,235,1,0,88,2,0,0,0,0,0,0,32,235,1,0,88,2,0,0,0,0,0,0,40,235,1,0,88,2,0,0,0,0,0,0,48,235,1,0,88,2,0,0,0,0,0,0,64,235,1,0,88,2,0,0,0,0,0,0,72,235,1,0,88,2,0,0,0,0,0,0,80,235,1,0,88,2,0,0,0,0,0,0,88,235,1,0,88,2,0,0,0,0,0,0,96,235,1,0,88,2,0,0,0,0,0,0,104,235,1,0,88,2,0,0,0,0,0,0,112,235,1,0,88,2,0,0,0,0,0,0,120,235,1,0,88,2,0,0,0,0,0,0,128,235,1,0,88,2,0,0,0,0,0,0,136,235,1,0,88,2,0,0,0,0,0,0,144,235,1,0,88,2,0,0,0,0,0,0,152,235,1,0,88,2,0,0,0,0,0,0,160,235,1,0,88,2,0,0,0,0,0,0,168,235,1,0,88,2,0,0,0,0,0,0,176,235,1,0,88,2,0,0,0,0,0,0,184,235,1,0,88,2,0,0,0,0,0,0,192,235,1,0,88,2,0,0,0,0,0,0,208,235,1,0,88,2,0,0,0,0,0,0,216,235,1,0,88,2,0,0,0,0,0,0,232,235,1,0,88,2,0,0,0,0,0,0,240,235,1,0,88,2,0,0,0,0,0,0,248,235,1,0,88,2,0,0,0,0,0,0,0,236,1,0,88,2,0,0,0,0,0,0,16,236,1,0,88,2,0,0,0,0,0,0,24,236,1,0,88,2,0,0,0,0,0,0,40,236,1,0,88,2,0,0,0,0,0,0,48,236,1,0,88,2,0,0,0,0,0,0,56,236,1,0,88,2,0,0,0,0,0,0,64,236,1,0,88,2,0,0,0,0,0,0,72,236,1,0,88,2,0,0,0,0,0,0,80,236,1,0,88,2,0,0,0,0,0,0,88,236,1,0,88,2,0,0,0,0,0,0,96,236,1,0,88,2,0,0,0,0,0,0,104,236,1,0,88,2,0,0,0,0,0,0,112,236,1,0,88,2,0,0,0,0,0,0,120,236,1,0,88,2,0,0,0,0,0,0,128,236,1,0,88,2,0,0,0,0,0,0,136,236,1,0,88,2,0,0,0,0,0,0,144,236,1,0,88,2,0,0,0,0,0,0,160,236,1,0,88,2,0,0,0,0,0,0,176,236,1,0,88,2,0,0,0,0,0,0,192,236,1,0,88,2,0,0,0,0,0,0,200,236,1,0,88,2,0,0,0,0,0,0,216,236,1,0,88,2,0,0,0,0,0,0,232,236,1,0,88,2,0,0,0,0,0,0,240,236,1,0,88,2,0,0,0,0,0,0,0,237,1,0,88,2,0,0,0,0,0,0,8,237,1,0,88,2,0,0,0,0,0,0,16,237,1,0,88,2,0,0,0,0,0,0,32,237,1,0,88,2,0,0,0,0,0,0,40,237,1,0,88,2,0,0,0,0,0,0,56,237,1,0,88,2,0,0,0,0,0,0,64,237,1,0,88,2,0,0,0,0,0,0,80,237,1,0,88,2,0,0,0,0,0,0,88,237,1,0,88,2,0,0,0,0,0,0,104,237,1,0,88,2,0,0,0,0,0,0,112,237,1,0,88,2,0,0,0,0,0,0,128,237,1,0,88,2,0,0,0,0,0,0,144,237,1,0,88,2,0,0,0,0,0,0,152,237,1,0,88,2,0,0,0,0,0,0,160,237,1,0,88,2,0,0,0,0,0,0,168,237,1,0,88,2,0,0,0,0,0,0,176,237,1,0,88,2,0,0,0,0,0,0,192,237,1,0,88,2,0,0,0,0,0,0,200,237,1,0,88,2,0,0,0,0,0,0,208,237,1,0,88,2,0,0,0,0,0,0,224,237,1,0,88,2,0,0,0,0,0,0,232,237,1,0,88,2,0,0,0,0,0,0,8,238,1,0,88,2,0,0,0,0,0,0,248,237,1,0,88,2,0,0,0,0,0,0,16,238,1,0,88,2,0,0,0,0,0,0,32,238,1,0,88,2,0,0,0,0,0,0,40,238,1,0,88,2,0,0,0,0,0,0,56,238,1,0,88,2,0,0,0,0,0,0,64,238,1,0,88,2,0,0,0,0,0,0,72,238,1,0,88,2,0,0,0,0,0,0,80,238,1,0,88,2,0,0,0,0,0,0,88,238,1,0,88,2,0,0,0,0,0,0,104,238,1,0,88,2,0,0,0,0,0,0,120,238,1,0,88,2,0,0,0,0,0,0,136,238,1,0,88,2,0,0,0,0,0,0,144,238,1,0,88,2,0,0,0,0,0,0,152,238,1,0,88,2,0,0,0,0,0,0,168,238,1,0,88,2,0,0,0,0,0,0,176,238,1,0,88,2,0,0,0,0,0,0,192,238,1,0,88,2,0,0,0,0,0,0,208,238,1,0,88,2,0,0,0,0,0,0,216,238,1,0,88,2,0,0,0,0,0,0,224,238,1,0,88,2,0,0,0,0,0,0,240,238,1,0,88,2,0,0,0,0,0,0,0,239,1,0,88,2,0,0,0,0,0,0,16,239,1,0,88,2,0,0,0,0,0,0,24,239,1,0,88,2,0,0,0,0,0,0,40,239,1,0,88,2,0,0,0,0,0,0,56,239,1,0,88,2,0,0,0,0,0,0,72,239,1,0,88,2,0,0,0,0,0,0,88,239,1,0,88,2,0,0,0,0,0,0,96,239,1,0,88,2,0,0,0,0,0,0,104,239,1,0,88,2,0,0,0,0,0,0,112,239,1,0,88,2,0,0,0,0,0,0,128,239,1,0,88,2,0,0,0,0,0,0,136,239,1,0,88,2,0,0,0,0,0,0,152,239,1,0,88,2,0,0,0,0,0,0,168,239,1,0,88,2,0,0,0,0,0,0,176,239,1,0,88,2,0,0,0,0,0,0,184,239,1,0,88,2,0,0,0,0,0,0,200,239,1,0,88,2,0,0,0,0,0,0,216,239,1,0,88,2,0,0,0,0,0,0,224,239,1,0,88,2,0,0,0,0,0,0,240,239,1,0,88,2,0,0,0,0,0,0,232,239,1,0,88,2,0,0,0,0,0,0,248,239,1,0,88,2,0,0,0,0,0,0,8,240,1,0,88,2,0,0,0,0,0,0,16,240,1,0,88,2,0,0,0,0,0,0,32,240,1,0,88,2,0,0,0,0,0,0,48,240,1,0,88,2,0,0,0,0,0,0,64,240,1,0,88,2,0,0,0,0,0,0,80,240,1,0,88,2,0,0,0,0,0,0,96,240,1,0,88,2,0,0,0,0,0,0,104,240,1,0,88,2,0,0,0,0,0,0,112,240,1,0,88,2,0,0,0,0,0,0,120,240,1,0,88,2,0,0,0,0,0,0,136,240,1,0,88,2,0,0,0,0,0,0,144,240,1,0,88,2,0,0,0,0,0,0,168,240,1,0,88,2,0,0,0,0,0,0,152,240,1,0,88,2,0,0,0,0,0,0,176,240,1,0,88,2,0,0,0,0,0,0,184,240,1,0,88,2,0,0,0,0,0,0,208,240,1,0,88,2,0,0,0,0,0,0,200,240,1,0,88,2,0,0,0,0,0,0,216,240,1,0,88,2,0,0,0,0,0,0,232,240,1,0,88,2,0,0,0,0,0,0,240,240,1,0,88,2,0,0,0,0,0,0,0,241,1,0,88,2,0,0,0,0,0,0,8,241,1,0,88,2,0,0,0,0,0,0,16,241,1,0,88,2,0,0,0,0,0,0,32,241,1,0,88,2,0,0,0,0,0,0,48,241,1,0,88,2,0,0,0,0,0,0,56,241,1,0,88,2,0,0,0,0,0,0,88,241,1,0,88,2,0,0,0,0,0,0,80,241,1,0,88,2,0,0,0,0,0,0,64,241,1,0,88,2,0,0,0,0,0,0,104,241,1,0,88,2,0,0,0,0,0,0,112,241,1,0,88,2,0,0,0,0,0,0,120,241,1,0,88,2,0,0,0,0,0,0,128,241,1,0,88,2,0,0,0,0,0,0,136,241,1,0,88,2,0,0,0,0,0,0,144,241,1,0,88,2,0,0,0,0,0,0,152,241,1,0,88,2,0,0,0,0,0,0,160,241,1,0,88,2,0,0,0,0,0,0,176,241,1,0,88,2,0,0,0,0,0,0,184,241,1,0,88,2,0,0,0,0,0,0,192,241,1,0,88,2,0,0,0,0,0,0,200,241,1,0,88,2,0,0,0,0,0,0,208,241,1,0,88,2,0,0,0,0,0,0,224,241,1,0,88,2,0,0,0,0,0,0,232,241,1,0,88,2,0,0,0,0,0,0,240,241,1,0,88,2,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,88,2,0,0,0,0,0,0,16,242,1,0,88,2,0,0,0,0,0,0,24,242,1,0,88,2,0,0,0,0,0,0,40,242,1,0,88,2,0,0,0,0,0,0,48,242,1,0,88,2,0,0,0,0,0,0,56,242,1,0,88,2,0,0,0,0,0,0,72,242,1,0,88,2,0,0,0,0,0,0,80,242,1,0,88,2,0,0,0,0,0,0,88,242,1,0,88,2,0,0,0,0,0,0,96,242,1,0,88,2,0,0,0,0,0,0,112,242,1,0,88,2,0,0,0,0,0,0,128,242,1,0,88,2,0,0,0,0,0,0,136,242,1,0,88,2,0,0,0,0,0,0,144,242,1,0,88,2,0,0,0,0,0,0,152,242,1,0,88,2,0,0,0,0,0,0,176,242,1,0,88,2,0,0,0,0,0,0,168,242,1,0,88,2,0,0,0,0,0,0,200,242,1,0,88,2,0,0,0,0,0,0,192,242,1,0,88,2,0,0,0,0,0,0,208,242,1,0,88,2,0,0,0,0,0,0,216,242,1,0,88,2,0,0,0,0,0,0,224,242,1,0,88,2,0,0,0,0,0,0,232,242,1,0,88,2,0,0,0,0,0,0,248,242,1,0,88,2,0,0,0,0,0,0,8,243,1,0,88,2,0,0,0,0,0,0,16,243,1,0,88,2,0,0,0,0,0,0,32,243,1,0,88,2,0,0,0,0,0,0,48,243,1,0,88,2,0,0,0,0,0,0,56,243,1,0,88,2,0,0,0,0,0,0,64,243,1,0,88,2,0,0,0,0,0,0,88,243,1,0,88,2,0,0,0,0,0,0,80,243,1,0,88,2,0,0,0,0,0,0,104,243,1,0,88,2,0,0,0,0,0,0,112,243,1,0,88,2,0,0,0,0,0,0,120,243,1,0,88,2,0,0,0,0,0,0,128,243,1,0,88,2,0,0,0,0,0,0,144,243,1,0,88,2,0,0,0,0,0,0,152,243,1,0,88,2,0,0,0,0,0,0,160,243,1,0,88,2,0,0,0,0,0,0,176,243,1,0,88,2,0,0,0,0,0,0,184,243,1,0,88,2,0,0,0,0,0,0,200,243,1,0,88,2,0,0,0,0,0,0,216,243,1,0,88,2,0,0,0,0,0,0,240,243,1,0,88,2,0,0,0,0,0,0,232,243,1,0,88,2,0,0,0,0,0,0,248,243,1,0,88,2,0,0,0,0,0,0,0,244,1,0,88,2,0,0,0,0,0,0,16,244,1,0,88,2,0,0,0,0,0,0,32,244,1,0,88,2,0,0,0,0,0,0,48,244,1,0,88,2,0,0,0,0,0,0,64,244,1,0,88,2,0,0,0,0,0,0,72,244,1,0,88,2,0,0,0,0,0,0,88,244,1,0,88,2,0,0,0,0,0,0,104,244,1,0,88,2,0,0,0,0,0,0,120,244,1,0,88,2,0,0,0,0,0,0,128,244,1,0,88,2,0,0,0,0,0,0,152,244,1,0,88,2,0,0,0,0,0,0,136,244,1,0,88,2,0,0,0,0,0,0,168,244,1,0,88,2,0,0,0,0,0,0,184,244,1,0,88,2,0,0,0,0,0,0,192,244,1,0,88,2,0,0,0,0,0,0,200,244,1,0,88,2,0,0,0,0,0,0,208,244,1,0,88,2,0,0,0,0,0,0,216,244,1,0,88,2,0,0,0,0,0,0,232,244,1,0,88,2,0,0,0,0,0,0,248,244,1,0,88,2,0,0,0,0,0,0,8,245,1,0,88,2,0,0,0,0,0,0,16,245,1,0,88,2,0,0,0,0,0,0,24,245,1,0,88,2,0,0,0,0,0,0,32,245,1,0,88,2,0,0,0,0,0,0,48,245,1,0,88,2,0,0,0,0,0,0,56,245,1,0,88,2,0,0,0,0,0,0,64,245,1,0,88,2,0,0,0,0,0,0,80,245,1,0,88,2,0,0,0,0,0,0,88,245,1,0,88,2,0,0,0,0,0,0,96,245,1,0,88,2,0,0,0,0,0,0,104,245,1,0,88,2,0,0,0,0,0,0,120,245,1,0,88,2,0,0,0,0,0,0,128,245,1,0,88,2,0,0,0,0,0,0,136,245,1,0,88,2,0,0,0,0,0,0,152,245,1,0,88,2,0,0,0,0,0,0,168,245,1,0,88,2,0,0,0,0,0,0,184,245,1,0,88,2,0,0,0,0,0,0,0,0,0,0,120,232,1,0,88,2,0,0,0,0,0,0,128,232,1,0,88,2,0,0,0,0,0,0,136,232,1,0,88,2,0,0,0,0,0,0,152,232,1,0,88,2,0,0,0,0,0,0,168,232,1,0,88,2,0,0,0,0,0,0,176,232,1,0,88,2,0,0,0,0,0,0,184,232,1,0,88,2,0,0,0,0,0,0,192,232,1,0,88,2,0,0,0,0,0,0,208,232,1,0,88,2,0,0,0,0,0,0,224,232,1,0,88,2,0,0,0,0,0,0,240,232,1,0,88,2,0,0,0,0,0,0,0,233,1,0,88,2,0,0,0,0,0,0,16,233,1,0,88,2,0,0,0,0,0,0,24,233,1,0,88,2,0,0,0,0,0,0,32,233,1,0,88,2,0,0,0,0,0,0,40,233,1,0,88,2,0,0,0,0,0,0,48,233,1,0,88,2,0,0,0,0,0,0,56,233,1,0,88,2,0,0,0,0,0,0,64,233,1,0,88,2,0,0,0,0,0,0,80,233,1,0,88,2,0,0,0,0,0,0,88,233,1,0,88,2,0,0,0,0,0,0,96,233,1,0,88,2,0,0,0,0,0,0,104,233,1,0,88,2,0,0,0,0,0,0,216,226,1,0,88,2,0,0,0,0,0,0,112,233,1,0,88,2,0,0,0,0,0,0,120,233,1,0,88,2,0,0,0,0,0,0,136,233,1,0,88,2,0,0,0,0,0,0,144,233,1,0,88,2,0,0,0,0,0,0,152,233,1,0,88,2,0,0,0,0,0,0,160,233,1,0,88,2,0,0,0,0,0,0,176,233,1,0,88,2,0,0,0,0,0,0,184,233,1,0,88,2,0,0,0,0,0,0,192,233,1,0,88,2,0,0,0,0,0,0,200,233,1,0,88,2,0,0,0,0,0,0,208,233,1,0,88,2,0,0,0,0,0,0,216,233,1,0,88,2,0,0,0,0,0,0,224,233,1,0,88,2,0,0,0,0,0,0,232,233,1,0,88,2,0,0,0,0,0,0,248,233,1,0,88,2,0,0,0,0,0,0,0,234,1,0,88,2,0,0,0,0,0,0,8,234,1,0,88,2,0,0,0,0,0,0,16,234,1,0,88,2,0,0,0,0,0,0,24,234,1,0,88,2,0,0,0,0,0,0,32,234,1,0,88,2,0,0,0,0,0,0,40,234,1,0,88,2,0,0,0,0,0,0,48,234,1,0,88,2,0,0,0,0,0,0,64,234,1,0,88,2,0,0,0,0,0,0,72,234,1,0,88,2,0,0,0,0,0,0,88,234,1,0,88,2,0,0,0,0,0,0,96,234,1,0,88,2,0,0,0,0,0,0,104,234,1,0,88,2,0,0,0,0,0,0,112,234,1,0,88,2,0,0,0,0,0,0,128,234,1,0,88,2,0,0,0,0,0,0,136,234,1,0,88,2,0,0,0,0,0,0,144,234,1,0,88,2,0,0,0,0,0,0,152,234,1,0,88,2,0,0,0,0,0,0,168,234,1,0,88,2,0,0,0,0,0,0,176,234,1,0,88,2,0,0,0,0,0,0,184,234,1,0,88,2,0,0,0,0,0,0,192,234,1,0,88,2,0,0,0,0,0,0,200,234,1,0,88,2,0,0,0,0,0,0,208,234,1,0,88,2,0,0,0,0,0,0,216,234,1,0,88,2,0,0,0,0,0,0,224,234,1,0,88,2,0,0,0,0,0,0,232,234,1,0,88,2,0,0,0,0,0,0,240,234,1,0,88,2,0,0,0,0,0,0,248,234,1,0,88,2,0,0,0,0,0,0,8,235,1,0,88,2,0,0,0,0,0,0,16,235,1,0,88,2,0,0,0,0,0,0,24,235,1,0,88,2,0,0,0,0,0,0,32,235,1,0,88,2,0,0,0,0,0,0,40,235,1,0,88,2,0,0,0,0,0,0,48,235,1,0,88,2,0,0,0,0,0,0,64,235,1,0,88,2,0,0,0,0,0,0,72,235,1,0,88,2,0,0,0,0,0,0,80,235,1,0,88,2,0,0,0,0,0,0,88,235,1,0,88,2,0,0,0,0,0,0,96,235,1,0,88,2,0,0,0,0,0,0,104,235,1,0,88,2,0,0,0,0,0,0,112,235,1,0,88,2,0,0,0,0,0,0,120,235,1,0,88,2,0,0,0,0,0,0,128,235,1,0,88,2,0,0,0,0,0,0,136,235,1,0,88,2,0,0,0,0,0,0,144,235,1,0,88,2,0,0,0,0,0,0,152,235,1,0,88,2,0,0,0,0,0,0,160,235,1,0,88,2,0,0,0,0,0,0,168,235,1,0,88,2,0,0,0,0,0,0,176,235,1,0,88,2,0,0,0,0,0,0,184,235,1,0,88,2,0,0,0,0,0,0,192,235,1,0,88,2,0,0,0,0,0,0,208,235,1,0,88,2,0,0,0,0,0,0,216,235,1,0,88,2,0,0,0,0,0,0,232,235,1,0,88,2,0,0,0,0,0,0,240,235,1,0,88,2,0,0,0,0,0,0,248,235,1,0,88,2,0,0,0,0,0,0,0,236,1,0,88,2,0,0,0,0,0,0,16,236,1,0,88,2,0,0,0,0,0,0,24,236,1,0,88,2,0,0,0,0,0,0,40,236,1,0,88,2,0,0,0,0,0,0,48,236,1,0,88,2,0,0,0,0,0,0,56,236,1,0,88,2,0,0,0,0,0,0,64,236,1,0,88,2,0,0,0,0,0,0,72,236,1,0,88,2,0,0,0,0,0,0,80,236,1,0,88,2,0,0,0,0,0,0,88,236,1,0,88,2,0,0,0,0,0,0,96,236,1,0,88,2,0,0,0,0,0,0,104,236,1,0,88,2,0,0,0,0,0,0,112,236,1,0,88,2,0,0,0,0,0,0,120,236,1,0,88,2,0,0,0,0,0,0,128,236,1,0,88,2,0,0,0,0,0,0,136,236,1,0,88,2,0,0,0,0,0,0,144,236,1,0,88,2,0,0,0,0,0,0,160,236,1,0,88,2,0,0,0,0,0,0,176,236,1,0,88,2,0,0,0,0,0,0,192,236,1,0,88,2,0,0,0,0,0,0,200,236,1,0,88,2,0,0,0,0,0,0,216,236,1,0,88,2,0,0,0,0,0,0,232,236,1,0,88,2,0,0,0,0,0,0,240,236,1,0,88,2,0,0,0,0,0,0,0,237,1,0,88,2,0,0,0,0,0,0,8,237,1,0,88,2,0,0,0,0,0,0,16,237,1,0,88,2,0,0,0,0,0,0,32,237,1,0,88,2,0,0,0,0,0,0,40,237,1,0,88,2,0,0,0,0,0,0,56,237,1,0,88,2,0,0,0,0,0,0,64,237,1,0,88,2,0,0,0,0,0,0,80,237,1,0,88,2,0,0,0,0,0,0,88,237,1,0,88,2,0,0,0,0,0,0,104,237,1,0,88,2,0,0,0,0,0,0,112,237,1,0,88,2,0,0,0,0,0,0,128,237,1,0,88,2,0,0,0,0,0,0,144,237,1,0,88,2,0,0,0,0,0,0,152,237,1,0,88,2,0,0,0,0,0,0,160,237,1,0,88,2,0,0,0,0,0,0,168,237,1,0,88,2,0,0,0,0,0,0,176,237,1,0,88,2,0,0,0,0,0,0,192,237,1,0,88,2,0,0,0,0,0,0,200,237,1,0,88,2,0,0,0,0,0,0,208,237,1,0,88,2,0,0,0,0,0,0,224,237,1,0,88,2,0,0,0,0,0,0,232,237,1,0,88,2,0,0,0,0,0,0,248,237,1,0,88,2,0,0,0,0,0,0,8,238,1,0,88,2,0,0,0,0,0,0,16,238,1,0,88,2,0,0,0,0,0,0,32,238,1,0,88,2,0,0,0,0,0,0,40,238,1,0,88,2,0,0,0,0,0,0,56,238,1,0,88,2,0,0,0,0,0,0,64,238,1,0,88,2,0,0,0,0,0,0,72,238,1,0,88,2,0,0,0,0,0,0,80,238,1,0,88,2,0,0,0,0,0,0,88,238,1,0,88,2,0,0,0,0,0,0,104,238,1,0,88,2,0,0,0,0,0,0,120,238,1,0,88,2,0,0,0,0,0,0,136,238,1,0,88,2,0,0,0,0,0,0,144,238,1,0,88,2,0,0,0,0,0,0,152,238,1,0,88,2,0,0,0,0,0,0,168,238,1,0,88,2,0,0,0,0,0,0,176,238,1,0,88,2,0,0,0,0,0,0,192,238,1,0,88,2,0,0,0,0,0,0,208,238,1,0,88,2,0,0,0,0,0,0,216,238,1,0,88,2,0,0,0,0,0,0,224,238,1,0,88,2,0,0,0,0,0,0,240,238,1,0,88,2,0,0,0,0,0,0,0,239,1,0,88,2,0,0,0,0,0,0,16,239,1,0,88,2,0,0,0,0,0,0,24,239,1,0,88,2,0,0,0,0,0,0,40,239,1,0,88,2,0,0,0,0,0,0,56,239,1,0,88,2,0,0,0,0,0,0,72,239,1,0,88,2,0,0,0,0,0,0,88,239,1,0,88,2,0,0,0,0,0,0,96,239,1,0,88,2,0,0,0,0,0,0,104,239,1,0,88,2,0,0,0,0,0,0,112,239,1,0,88,2,0,0,0,0,0,0,128,239,1,0,88,2,0,0,0,0,0,0,136,239,1,0,88,2,0,0,0,0,0,0,152,239,1,0,88,2,0,0,0,0,0,0,168,239,1,0,88,2,0,0,0,0,0,0,176,239,1,0,88,2,0,0,0,0,0,0,184,239,1,0,88,2,0,0,0,0,0,0,200,239,1,0,88,2,0,0,0,0,0,0,216,239,1,0,88,2,0,0,0,0,0,0,224,239,1,0,88,2,0,0,0,0,0,0,232,239,1,0,88,2,0,0,0,0,0,0,240,239,1,0,88,2,0,0,0,0,0,0,248,239,1,0,88,2,0,0,0,0,0,0,8,240,1,0,88,2,0,0,0,0,0,0,16,240,1,0,88,2,0,0,0,0,0,0,32,240,1,0,88,2,0,0,0,0,0,0,48,240,1,0,88,2,0,0,0,0,0,0,64,240,1,0,88,2,0,0,0,0,0,0,80,240,1,0,88,2,0,0,0,0,0,0,96,240,1,0,88,2,0,0,0,0,0,0,104,240,1,0,88,2,0,0,0,0,0,0,112,240,1,0,88,2,0,0,0,0,0,0,120,240,1,0,88,2,0,0,0,0,0,0,136,240,1,0,88,2,0,0,0,0,0,0,144,240,1,0,88,2,0,0,0,0,0,0,152,240,1,0,88,2,0,0,0,0,0,0,168,240,1,0,88,2,0,0,0,0,0,0,176,240,1,0,88,2,0,0,0,0,0,0,184,240,1,0,88,2,0,0,0,0,0,0,200,240,1,0,88,2,0,0,0,0,0,0,208,240,1,0,88,2,0,0,0,0,0,0,216,240,1,0,88,2,0,0,0,0,0,0,232,240,1,0,88,2,0,0,0,0,0,0,240,240,1,0,88,2,0,0,0,0,0,0,0,241,1,0,88,2,0,0,0,0,0,0,8,241,1,0,88,2,0,0,0,0,0,0,16,241,1,0,88,2,0,0,0,0,0,0,32,241,1,0,88,2,0,0,0,0,0,0,48,241,1,0,88,2,0,0,0,0,0,0,56,241,1,0,88,2,0,0,0,0,0,0,64,241,1,0,88,2,0,0,0,0,0,0,80,241,1,0,88,2,0,0,0,0,0,0,88,241,1,0,88,2,0,0,0,0,0,0,104,241,1,0,88,2,0,0,0,0,0,0,112,241,1,0,88,2,0,0,0,0,0,0,120,241,1,0,88,2,0,0,0,0,0,0,128,241,1,0,88,2,0,0,0,0,0,0,136,241,1,0,88,2,0,0,0,0,0,0,144,241,1,0,88,2,0,0,0,0,0,0,152,241,1,0,88,2,0,0,0,0,0,0,160,241,1,0,88,2,0,0,0,0,0,0,176,241,1,0,88,2,0,0,0,0,0,0,184,241,1,0,88,2,0,0,0,0,0,0,192,241,1,0,88,2,0,0,0,0,0,0,200,241,1,0,88,2,0,0,0,0,0,0,208,241,1,0,88,2,0,0,0,0,0,0,224,241,1,0,88,2,0,0,0,0,0,0,232,241,1,0,88,2,0,0,0,0,0,0,240,241,1,0,88,2,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,88,2,0,0,0,0,0,0,16,242,1,0,88,2,0,0,0,0,0,0,24,242,1,0,88,2,0,0,0,0,0,0,40,242,1,0,88,2,0,0,0,0,0,0,48,242,1,0,88,2,0,0,0,0,0,0,56,242,1,0,88,2,0,0,0,0,0,0,72,242,1,0,88,2,0,0,0,0,0,0,80,242,1,0,88,2,0,0,0,0,0,0,88,242,1,0,88,2,0,0,0,0,0,0,96,242,1,0,88,2,0,0,0,0,0,0,112,242,1,0,88,2,0,0,0,0,0,0,128,242,1,0,88,2,0,0,0,0,0,0,136,242,1,0,88,2,0,0,0,0,0,0,144,242,1,0,88,2,0,0,0,0,0,0,152,242,1,0,88,2,0,0,0,0,0,0,168,242,1,0,88,2,0,0,0,0,0,0,176,242,1,0,88,2,0,0,0,0,0,0,192,242,1,0,88,2,0,0,0,0,0,0,200,242,1,0,88,2,0,0,0,0,0,0,208,242,1,0,88,2,0,0,0,0,0,0,216,242,1,0,88,2,0,0,0,0,0,0,224,242,1,0,88,2,0,0,0,0,0,0,232,242,1,0,88,2,0,0,0,0,0,0,248,242,1,0,88,2,0,0,0,0,0,0,8,243,1,0,88,2,0,0,0,0,0,0,16,243,1,0,88,2,0,0,0,0,0,0,32,243,1,0,88,2,0,0,0,0,0,0,48,243,1,0,88,2,0,0,0,0,0,0,56,243,1,0,88,2,0,0,0,0,0,0,64,243,1,0,88,2,0,0,0,0,0,0,80,243,1,0,88,2,0,0,0,0,0,0,88,243,1,0,88,2,0,0,0,0,0,0,104,243,1,0,88,2,0,0,0,0,0,0,112,243,1,0,88,2,0,0,0,0,0,0,120,243,1,0,88,2,0,0,0,0,0,0,128,243,1,0,88,2,0,0,0,0,0,0,144,243,1,0,88,2,0,0,0,0,0,0,152,243,1,0,88,2,0,0,0,0,0,0,160,243,1,0,88,2,0,0,0,0,0,0,176,243,1,0,88,2,0,0,0,0,0,0,184,243,1,0,88,2,0,0,0,0,0,0,200,243,1,0,88,2,0,0,0,0,0,0,216,243,1,0,88,2,0,0,0,0,0,0,232,243,1,0,88,2,0,0,0,0,0,0,240,243,1,0,88,2,0,0,0,0,0,0,248,243,1,0,88,2,0,0,0,0,0,0,0,244,1,0,88,2,0,0,0,0,0,0,16,244,1,0,88,2,0,0,0,0,0,0,32,244,1,0,88,2,0,0,0,0,0,0,48,244,1,0,88,2,0,0,0,0,0,0,64,244,1,0,88,2,0,0,0,0,0,0,72,244,1,0,88,2,0,0,0,0,0,0,88,244,1,0,88,2,0,0,0,0,0,0,104,244,1,0,88,2,0,0,0,0,0,0,120,244,1,0,88,2,0,0,0,0,0,0,128,244,1,0,88,2,0,0,0,0,0,0,136,244,1,0,88,2,0,0,0,0,0,0,152,244,1,0,88,2,0,0,0,0,0,0,168,244,1,0,88,2,0,0,0,0,0,0,184,244,1,0,88,2,0,0,0,0,0,0,192,244,1,0,88,2,0,0,0,0,0,0,200,244,1,0,88,2,0,0,0,0,0,0,208,244,1,0,88,2,0,0,0,0,0,0,216,244,1,0,88,2,0,0,0,0,0,0,232,244,1,0,88,2,0,0,0,0,0,0,248,244,1,0,88,2,0,0,0,0,0,0,8,245,1,0,88,2,0,0,0,0,0,0,16,245,1,0,88,2,0,0,0,0,0,0,24,245,1,0,88,2,0,0,0,0,0,0,32,245,1,0,88,2,0,0,0,0,0,0,48,245,1,0,88,2,0,0,0,0,0,0,56,245,1,0,88,2,0,0,0,0,0,0,64,245,1,0,88,2,0,0,0,0,0,0,80,245,1,0,88,2,0,0,0,0,0,0,88,245,1,0,88,2,0,0,0,0,0,0,96,245,1,0,88,2,0,0,0,0,0,0,104,245,1,0,88,2,0,0,0,0,0,0,120,245,1,0,88,2,0,0,0,0,0,0,128,245,1,0,88,2,0,0,0,0,0,0,136,245,1,0,88,2,0,0,0,0,0,0,152,245,1,0,88,2,0,0,0,0,0,0,168,245,1,0,88,2,0,0,0,0,0,0,184,245,1,0,88,2,0,0,0,0,0,0,0,0,0,0,120,232,1,0,88,2,0,0,0,0,0,0,128,232,1,0,88,2,0,0,0,0,0,0,136,232,1,0,88,2,0,0,0,0,0,0,152,232,1,0,88,2,0,0,0,0,0,0,168,232,1,0,88,2,0,0,0,0,0,0,176,232,1,0,88,2,0,0,0,0,0,0,184,232,1,0,88,2,0,0,0,0,0,0,192,232,1,0,88,2,0,0,0,0,0,0,208,232,1,0,88,2,0,0,0,0,0,0,224,232,1,0,88,2,0,0,0,0,0,0,240,232,1,0,88,2,0,0,0,0,0,0,0,233,1,0,88,2,0,0,0,0,0,0,16,233,1,0,88,2,0,0,0,0,0,0,24,233,1,0,88,2,0,0,0,0,0,0,32,233,1,0,88,2,0,0,0,0,0,0,40,233,1,0,88,2,0,0,0,0,0,0,48,233,1,0,88,2,0,0,0,0,0,0,56,233,1,0,88,2,0,0,0,0,0,0,64,233,1,0,88,2,0,0,0,0,0,0,80,233,1,0,88,2,0,0,0,0,0,0,88,233,1,0,88,2,0,0,0,0,0,0,96,233,1,0,88,2,0,0,0,0,0,0,104,233,1,0,88,2,0,0,0,0,0,0,216,226,1,0,88,2,0,0,0,0,0,0,112,233,1,0,88,2,0,0,0,0,0,0,120,233,1,0,88,2,0,0,0,0,0,0,136,233,1,0,88,2,0,0,0,0,0,0,144,233,1,0,88,2,0,0,0,0,0,0,152,233,1,0,88,2,0,0,0,0,0,0,160,233,1,0,88,2,0,0,0,0,0,0,176,233,1,0,88,2,0,0,0,0,0,0,184,233,1,0,88,2,0,0,0,0,0,0,192,233,1,0,88,2,0,0,0,0,0,0,200,233,1,0,88,2,0,0,0,0,0,0,208,233,1,0,88,2,0,0,0,0,0,0,216,233,1,0,88,2,0,0,0,0,0,0,224,233,1,0,88,2,0,0,0,0,0,0,232,233,1,0,88,2,0,0,0,0,0,0,248,233,1,0,88,2,0,0,0,0,0,0,0,234,1,0,88,2,0,0,0,0,0,0,8,234,1,0,88,2,0,0,0,0,0,0,16,234,1,0,88,2,0,0,0,0,0,0,24,234,1,0,88,2,0,0,0,0,0,0,32,234,1,0,88,2,0,0,0,0,0,0,40,234,1,0,88,2,0,0,0,0,0,0,48,234,1,0,88,2,0,0,0,0,0,0,64,234,1,0,88,2,0,0,0,0,0,0,72,234,1,0,88,2,0,0,0,0,0,0,88,234,1,0,88,2,0,0,0,0,0,0,96,234,1,0,88,2,0,0,0,0,0,0,104,234,1,0,88,2,0,0,0,0,0,0,112,234,1,0,88,2,0,0,0,0,0,0,128,234,1,0,88,2,0,0,0,0,0,0,136,234,1,0,88,2,0,0,0,0,0,0,144,234,1,0,88,2,0,0,0,0,0,0,152,234,1,0,88,2,0,0,0,0,0,0,168,234,1,0,88,2,0,0,0,0,0,0,176,234,1,0,88,2,0,0,0,0,0,0,184,234,1,0,88,2,0,0,0,0,0,0,192,234,1,0,88,2,0,0,0,0,0,0,200,234,1,0,88,2,0,0,0,0,0,0,208,234,1,0,88,2,0,0,0,0,0,0,216,234,1,0,88,2,0,0,0,0,0,0,224,234,1,0,88,2,0,0,0,0,0,0,232,234,1,0,88,2,0,0,0,0,0,0,240,234,1,0,88,2,0,0,0,0,0,0,248,234,1,0,88,2,0,0,0,0,0,0,8,235,1,0,88,2,0,0,0,0,0,0,16,235,1,0,88,2,0,0,0,0,0,0,24,235,1,0,88,2,0,0,0,0,0,0,32,235,1,0,88,2,0,0,0,0,0,0,40,235,1,0,88,2,0,0,0,0,0,0,48,235,1,0,88,2,0,0,0,0,0,0,64,235,1,0,88,2,0,0,0,0,0,0,72,235,1,0,88,2,0,0,0,0,0,0,80,235,1,0,88,2,0,0,0,0,0,0,88,235,1,0,88,2,0,0,0,0,0,0,96,235,1,0,88,2,0,0,0,0,0,0,104,235,1,0,88,2,0,0,0,0,0,0,112,235,1,0,88,2,0,0,0,0,0,0,120,235,1,0,88,2,0,0,0,0,0,0,128,235,1,0,88,2,0,0,0,0,0,0,136,235,1,0,88,2,0,0,0,0,0,0,144,235,1,0,88,2,0,0,0,0,0,0,152,235,1,0,88,2,0,0,0,0,0,0,160,235,1,0,88,2,0,0,0,0,0,0,168,235,1,0,88,2,0,0,0,0,0,0,176,235,1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+71680); -/* memory initializer */ allocate([88,2,0,0,0,0,0,0,184,235,1,0,88,2,0,0,0,0,0,0,192,235,1,0,88,2,0,0,0,0,0,0,208,235,1,0,88,2,0,0,0,0,0,0,216,235,1,0,88,2,0,0,0,0,0,0,232,235,1,0,88,2,0,0,0,0,0,0,240,235,1,0,88,2,0,0,0,0,0,0,248,235,1,0,88,2,0,0,0,0,0,0,0,236,1,0,88,2,0,0,0,0,0,0,16,236,1,0,88,2,0,0,0,0,0,0,24,236,1,0,88,2,0,0,0,0,0,0,40,236,1,0,88,2,0,0,0,0,0,0,48,236,1,0,88,2,0,0,0,0,0,0,56,236,1,0,88,2,0,0,0,0,0,0,64,236,1,0,88,2,0,0,0,0,0,0,72,236,1,0,88,2,0,0,0,0,0,0,80,236,1,0,88,2,0,0,0,0,0,0,88,236,1,0,88,2,0,0,0,0,0,0,96,236,1,0,88,2,0,0,0,0,0,0,104,236,1,0,88,2,0,0,0,0,0,0,112,236,1,0,88,2,0,0,0,0,0,0,120,236,1,0,88,2,0,0,0,0,0,0,128,236,1,0,88,2,0,0,0,0,0,0,136,236,1,0,88,2,0,0,0,0,0,0,144,236,1,0,88,2,0,0,0,0,0,0,160,236,1,0,88,2,0,0,0,0,0,0,176,236,1,0,88,2,0,0,0,0,0,0,192,236,1,0,88,2,0,0,0,0,0,0,200,236,1,0,88,2,0,0,0,0,0,0,216,236,1,0,88,2,0,0,0,0,0,0,232,236,1,0,88,2,0,0,0,0,0,0,240,236,1,0,88,2,0,0,0,0,0,0,0,237,1,0,88,2,0,0,0,0,0,0,8,237,1,0,88,2,0,0,0,0,0,0,16,237,1,0,88,2,0,0,0,0,0,0,32,237,1,0,88,2,0,0,0,0,0,0,40,237,1,0,88,2,0,0,0,0,0,0,56,237,1,0,88,2,0,0,0,0,0,0,64,237,1,0,88,2,0,0,0,0,0,0,80,237,1,0,88,2,0,0,0,0,0,0,88,237,1,0,88,2,0,0,0,0,0,0,104,237,1,0,88,2,0,0,0,0,0,0,112,237,1,0,88,2,0,0,0,0,0,0,128,237,1,0,88,2,0,0,0,0,0,0,144,237,1,0,88,2,0,0,0,0,0,0,152,237,1,0,88,2,0,0,0,0,0,0,160,237,1,0,88,2,0,0,0,0,0,0,168,237,1,0,88,2,0,0,0,0,0,0,176,237,1,0,88,2,0,0,0,0,0,0,192,237,1,0,88,2,0,0,0,0,0,0,200,237,1,0,88,2,0,0,0,0,0,0,208,237,1,0,88,2,0,0,0,0,0,0,224,237,1,0,88,2,0,0,0,0,0,0,232,237,1,0,88,2,0,0,0,0,0,0,248,237,1,0,88,2,0,0,0,0,0,0,8,238,1,0,88,2,0,0,0,0,0,0,16,238,1,0,88,2,0,0,0,0,0,0,32,238,1,0,88,2,0,0,0,0,0,0,40,238,1,0,88,2,0,0,0,0,0,0,56,238,1,0,88,2,0,0,0,0,0,0,64,238,1,0,88,2,0,0,0,0,0,0,72,238,1,0,88,2,0,0,0,0,0,0,80,238,1,0,88,2,0,0,0,0,0,0,88,238,1,0,88,2,0,0,0,0,0,0,104,238,1,0,88,2,0,0,0,0,0,0,120,238,1,0,88,2,0,0,0,0,0,0,136,238,1,0,88,2,0,0,0,0,0,0,144,238,1,0,88,2,0,0,0,0,0,0,152,238,1,0,88,2,0,0,0,0,0,0,168,238,1,0,88,2,0,0,0,0,0,0,176,238,1,0,88,2,0,0,0,0,0,0,192,238,1,0,88,2,0,0,0,0,0,0,208,238,1,0,88,2,0,0,0,0,0,0,216,238,1,0,88,2,0,0,0,0,0,0,224,238,1,0,88,2,0,0,0,0,0,0,240,238,1,0,88,2,0,0,0,0,0,0,0,239,1,0,88,2,0,0,0,0,0,0,16,239,1,0,88,2,0,0,0,0,0,0,24,239,1,0,88,2,0,0,0,0,0,0,40,239,1,0,88,2,0,0,0,0,0,0,56,239,1,0,88,2,0,0,0,0,0,0,72,239,1,0,88,2,0,0,0,0,0,0,88,239,1,0,88,2,0,0,0,0,0,0,96,239,1,0,88,2,0,0,0,0,0,0,104,239,1,0,88,2,0,0,0,0,0,0,112,239,1,0,88,2,0,0,0,0,0,0,128,239,1,0,88,2,0,0,0,0,0,0,136,239,1,0,88,2,0,0,0,0,0,0,152,239,1,0,88,2,0,0,0,0,0,0,168,239,1,0,88,2,0,0,0,0,0,0,176,239,1,0,88,2,0,0,0,0,0,0,184,239,1,0,88,2,0,0,0,0,0,0,200,239,1,0,88,2,0,0,0,0,0,0,216,239,1,0,88,2,0,0,0,0,0,0,224,239,1,0,88,2,0,0,0,0,0,0,232,239,1,0,88,2,0,0,0,0,0,0,240,239,1,0,88,2,0,0,0,0,0,0,248,239,1,0,88,2,0,0,0,0,0,0,8,240,1,0,88,2,0,0,0,0,0,0,16,240,1,0,88,2,0,0,0,0,0,0,32,240,1,0,88,2,0,0,0,0,0,0,48,240,1,0,88,2,0,0,0,0,0,0,64,240,1,0,88,2,0,0,0,0,0,0,80,240,1,0,88,2,0,0,0,0,0,0,96,240,1,0,88,2,0,0,0,0,0,0,104,240,1,0,88,2,0,0,0,0,0,0,112,240,1,0,88,2,0,0,0,0,0,0,120,240,1,0,88,2,0,0,0,0,0,0,136,240,1,0,88,2,0,0,0,0,0,0,144,240,1,0,88,2,0,0,0,0,0,0,152,240,1,0,88,2,0,0,0,0,0,0,168,240,1,0,88,2,0,0,0,0,0,0,176,240,1,0,88,2,0,0,0,0,0,0,184,240,1,0,88,2,0,0,0,0,0,0,200,240,1,0,88,2,0,0,0,0,0,0,208,240,1,0,88,2,0,0,0,0,0,0,216,240,1,0,88,2,0,0,0,0,0,0,232,240,1,0,88,2,0,0,0,0,0,0,240,240,1,0,88,2,0,0,0,0,0,0,0,241,1,0,88,2,0,0,0,0,0,0,8,241,1,0,88,2,0,0,0,0,0,0,16,241,1,0,88,2,0,0,0,0,0,0,32,241,1,0,88,2,0,0,0,0,0,0,48,241,1,0,88,2,0,0,0,0,0,0,56,241,1,0,88,2,0,0,0,0,0,0,64,241,1,0,88,2,0,0,0,0,0,0,80,241,1,0,88,2,0,0,0,0,0,0,88,241,1,0,88,2,0,0,0,0,0,0,104,241,1,0,88,2,0,0,0,0,0,0,112,241,1,0,88,2,0,0,0,0,0,0,120,241,1,0,88,2,0,0,0,0,0,0,128,241,1,0,88,2,0,0,0,0,0,0,136,241,1,0,88,2,0,0,0,0,0,0,144,241,1,0,88,2,0,0,0,0,0,0,152,241,1,0,88,2,0,0,0,0,0,0,160,241,1,0,88,2,0,0,0,0,0,0,176,241,1,0,88,2,0,0,0,0,0,0,184,241,1,0,88,2,0,0,0,0,0,0,192,241,1,0,88,2,0,0,0,0,0,0,200,241,1,0,88,2,0,0,0,0,0,0,208,241,1,0,88,2,0,0,0,0,0,0,224,241,1,0,88,2,0,0,0,0,0,0,232,241,1,0,88,2,0,0,0,0,0,0,240,241,1,0,88,2,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,88,2,0,0,0,0,0,0,16,242,1,0,88,2,0,0,0,0,0,0,24,242,1,0,88,2,0,0,0,0,0,0,40,242,1,0,88,2,0,0,0,0,0,0,48,242,1,0,88,2,0,0,0,0,0,0,56,242,1,0,88,2,0,0,0,0,0,0,72,242,1,0,88,2,0,0,0,0,0,0,80,242,1,0,88,2,0,0,0,0,0,0,88,242,1,0,88,2,0,0,0,0,0,0,96,242,1,0,88,2,0,0,0,0,0,0,112,242,1,0,88,2,0,0,0,0,0,0,128,242,1,0,88,2,0,0,0,0,0,0,136,242,1,0,88,2,0,0,0,0,0,0,144,242,1,0,88,2,0,0,0,0,0,0,152,242,1,0,88,2,0,0,0,0,0,0,168,242,1,0,88,2,0,0,0,0,0,0,176,242,1,0,88,2,0,0,0,0,0,0,192,242,1,0,88,2,0,0,0,0,0,0,200,242,1,0,88,2,0,0,0,0,0,0,208,242,1,0,88,2,0,0,0,0,0,0,216,242,1,0,88,2,0,0,0,0,0,0,224,242,1,0,88,2,0,0,0,0,0,0,232,242,1,0,88,2,0,0,0,0,0,0,248,242,1,0,88,2,0,0,0,0,0,0,8,243,1,0,88,2,0,0,0,0,0,0,16,243,1,0,88,2,0,0,0,0,0,0,32,243,1,0,88,2,0,0,0,0,0,0,48,243,1,0,88,2,0,0,0,0,0,0,56,243,1,0,88,2,0,0,0,0,0,0,64,243,1,0,88,2,0,0,0,0,0,0,80,243,1,0,88,2,0,0,0,0,0,0,88,243,1,0,88,2,0,0,0,0,0,0,104,243,1,0,88,2,0,0,0,0,0,0,112,243,1,0,88,2,0,0,0,0,0,0,120,243,1,0,88,2,0,0,0,0,0,0,128,243,1,0,88,2,0,0,0,0,0,0,144,243,1,0,88,2,0,0,0,0,0,0,152,243,1,0,88,2,0,0,0,0,0,0,160,243,1,0,88,2,0,0,0,0,0,0,176,243,1,0,88,2,0,0,0,0,0,0,184,243,1,0,88,2,0,0,0,0,0,0,200,243,1,0,88,2,0,0,0,0,0,0,216,243,1,0,88,2,0,0,0,0,0,0,232,243,1,0,88,2,0,0,0,0,0,0,240,243,1,0,88,2,0,0,0,0,0,0,248,243,1,0,88,2,0,0,0,0,0,0,0,244,1,0,88,2,0,0,0,0,0,0,16,244,1,0,88,2,0,0,0,0,0,0,32,244,1,0,88,2,0,0,0,0,0,0,48,244,1,0,88,2,0,0,0,0,0,0,64,244,1,0,88,2,0,0,0,0,0,0,72,244,1,0,88,2,0,0,0,0,0,0,88,244,1,0,88,2,0,0,0,0,0,0,104,244,1,0,88,2,0,0,0,0,0,0,120,244,1,0,88,2,0,0,0,0,0,0,128,244,1,0,88,2,0,0,0,0,0,0,136,244,1,0,88,2,0,0,0,0,0,0,152,244,1,0,88,2,0,0,0,0,0,0,168,244,1,0,88,2,0,0,0,0,0,0,184,244,1,0,88,2,0,0,0,0,0,0,192,244,1,0,88,2,0,0,0,0,0,0,200,244,1,0,88,2,0,0,0,0,0,0,208,244,1,0,88,2,0,0,0,0,0,0,216,244,1,0,88,2,0,0,0,0,0,0,232,244,1,0,88,2,0,0,0,0,0,0,248,244,1,0,88,2,0,0,0,0,0,0,8,245,1,0,88,2,0,0,0,0,0,0,16,245,1,0,88,2,0,0,0,0,0,0,24,245,1,0,88,2,0,0,0,0,0,0,32,245,1,0,88,2,0,0,0,0,0,0,48,245,1,0,88,2,0,0,0,0,0,0,56,245,1,0,88,2,0,0,0,0,0,0,64,245,1,0,88,2,0,0,0,0,0,0,80,245,1,0,88,2,0,0,0,0,0,0,88,245,1,0,88,2,0,0,0,0,0,0,96,245,1,0,88,2,0,0,0,0,0,0,104,245,1,0,88,2,0,0,0,0,0,0,120,245,1,0,88,2,0,0,0,0,0,0,128,245,1,0,88,2,0,0,0,0,0,0,136,245,1,0,88,2,0,0,0,0,0,0,152,245,1,0,88,2,0,0,0,0,0,0,168,245,1,0,88,2,0,0,0,0,0,0,184,245,1,0,88,2,0,0,0,0,0,0,0,0,0,0,120,232,1,0,88,2,0,0,0,0,0,0,128,232,1,0,88,2,0,0,0,0,0,0,136,232,1,0,88,2,0,0,0,0,0,0,152,232,1,0,88,2,0,0,0,0,0,0,168,232,1,0,88,2,0,0,0,0,0,0,176,232,1,0,88,2,0,0,0,0,0,0,184,232,1,0,88,2,0,0,0,0,0,0,192,232,1,0,88,2,0,0,0,0,0,0,208,232,1,0,88,2,0,0,0,0,0,0,224,232,1,0,88,2,0,0,0,0,0,0,240,232,1,0,88,2,0,0,0,0,0,0,0,233,1,0,88,2,0,0,0,0,0,0,16,233,1,0,88,2,0,0,0,0,0,0,24,233,1,0,88,2,0,0,0,0,0,0,32,233,1,0,88,2,0,0,0,0,0,0,40,233,1,0,88,2,0,0,0,0,0,0,48,233,1,0,88,2,0,0,0,0,0,0,56,233,1,0,88,2,0,0,0,0,0,0,64,233,1,0,88,2,0,0,0,0,0,0,80,233,1,0,88,2,0,0,0,0,0,0,88,233,1,0,88,2,0,0,0,0,0,0,96,233,1,0,88,2,0,0,0,0,0,0,104,233,1,0,88,2,0,0,0,0,0,0,216,226,1,0,88,2,0,0,0,0,0,0,112,233,1,0,88,2,0,0,0,0,0,0,120,233,1,0,88,2,0,0,0,0,0,0,136,233,1,0,88,2,0,0,0,0,0,0,144,233,1,0,88,2,0,0,0,0,0,0,152,233,1,0,88,2,0,0,0,0,0,0,160,233,1,0,88,2,0,0,0,0,0,0,176,233,1,0,88,2,0,0,0,0,0,0,184,233,1,0,88,2,0,0,0,0,0,0,192,233,1,0,88,2,0,0,0,0,0,0,200,233,1,0,88,2,0,0,0,0,0,0,208,233,1,0,88,2,0,0,0,0,0,0,216,233,1,0,88,2,0,0,0,0,0,0,224,233,1,0,88,2,0,0,0,0,0,0,232,233,1,0,88,2,0,0,0,0,0,0,248,233,1,0,88,2,0,0,0,0,0,0,0,234,1,0,88,2,0,0,0,0,0,0,8,234,1,0,88,2,0,0,0,0,0,0,16,234,1,0,88,2,0,0,0,0,0,0,24,234,1,0,88,2,0,0,0,0,0,0,32,234,1,0,88,2,0,0,0,0,0,0,40,234,1,0,88,2,0,0,0,0,0,0,48,234,1,0,88,2,0,0,0,0,0,0,64,234,1,0,88,2,0,0,0,0,0,0,72,234,1,0,88,2,0,0,0,0,0,0,88,234,1,0,88,2,0,0,0,0,0,0,96,234,1,0,88,2,0,0,0,0,0,0,104,234,1,0,88,2,0,0,0,0,0,0,112,234,1,0,88,2,0,0,0,0,0,0,128,234,1,0,88,2,0,0,0,0,0,0,136,234,1,0,88,2,0,0,0,0,0,0,144,234,1,0,88,2,0,0,0,0,0,0,152,234,1,0,88,2,0,0,0,0,0,0,168,234,1,0,88,2,0,0,0,0,0,0,176,234,1,0,88,2,0,0,0,0,0,0,184,234,1,0,88,2,0,0,0,0,0,0,192,234,1,0,88,2,0,0,0,0,0,0,200,234,1,0,88,2,0,0,0,0,0,0,208,234,1,0,88,2,0,0,0,0,0,0,216,234,1,0,88,2,0,0,0,0,0,0,224,234,1,0,88,2,0,0,0,0,0,0,232,234,1,0,88,2,0,0,0,0,0,0,240,234,1,0,88,2,0,0,0,0,0,0,248,234,1,0,88,2,0,0,0,0,0,0,8,235,1,0,88,2,0,0,0,0,0,0,16,235,1,0,88,2,0,0,0,0,0,0,24,235,1,0,88,2,0,0,0,0,0,0,32,235,1,0,88,2,0,0,0,0,0,0,40,235,1,0,88,2,0,0,0,0,0,0,48,235,1,0,88,2,0,0,0,0,0,0,64,235,1,0,88,2,0,0,0,0,0,0,72,235,1,0,88,2,0,0,0,0,0,0,80,235,1,0,88,2,0,0,0,0,0,0,88,235,1,0,88,2,0,0,0,0,0,0,96,235,1,0,88,2,0,0,0,0,0,0,104,235,1,0,88,2,0,0,0,0,0,0,112,235,1,0,88,2,0,0,0,0,0,0,120,235,1,0,88,2,0,0,0,0,0,0,128,235,1,0,88,2,0,0,0,0,0,0,136,235,1,0,88,2,0,0,0,0,0,0,144,235,1,0,88,2,0,0,0,0,0,0,152,235,1,0,88,2,0,0,0,0,0,0,160,235,1,0,88,2,0,0,0,0,0,0,168,235,1,0,88,2,0,0,0,0,0,0,176,235,1,0,88,2,0,0,0,0,0,0,184,235,1,0,88,2,0,0,0,0,0,0,192,235,1,0,88,2,0,0,0,0,0,0,208,235,1,0,88,2,0,0,0,0,0,0,216,235,1,0,88,2,0,0,0,0,0,0,232,235,1,0,88,2,0,0,0,0,0,0,240,235,1,0,88,2,0,0,0,0,0,0,248,235,1,0,88,2,0,0,0,0,0,0,0,236,1,0,88,2,0,0,0,0,0,0,16,236,1,0,88,2,0,0,0,0,0,0,24,236,1,0,88,2,0,0,0,0,0,0,40,236,1,0,88,2,0,0,0,0,0,0,48,236,1,0,88,2,0,0,0,0,0,0,56,236,1,0,88,2,0,0,0,0,0,0,64,236,1,0,88,2,0,0,0,0,0,0,72,236,1,0,88,2,0,0,0,0,0,0,80,236,1,0,88,2,0,0,0,0,0,0,88,236,1,0,88,2,0,0,0,0,0,0,96,236,1,0,88,2,0,0,0,0,0,0,104,236,1,0,88,2,0,0,0,0,0,0,112,236,1,0,88,2,0,0,0,0,0,0,120,236,1,0,88,2,0,0,0,0,0,0,128,236,1,0,88,2,0,0,0,0,0,0,136,236,1,0,88,2,0,0,0,0,0,0,144,236,1,0,88,2,0,0,0,0,0,0,160,236,1,0,88,2,0,0,0,0,0,0,176,236,1,0,88,2,0,0,0,0,0,0,192,236,1,0,88,2,0,0,0,0,0,0,200,236,1,0,88,2,0,0,0,0,0,0,216,236,1,0,88,2,0,0,0,0,0,0,232,236,1,0,88,2,0,0,0,0,0,0,240,236,1,0,88,2,0,0,0,0,0,0,0,237,1,0,88,2,0,0,0,0,0,0,8,237,1,0,88,2,0,0,0,0,0,0,16,237,1,0,88,2,0,0,0,0,0,0,32,237,1,0,88,2,0,0,0,0,0,0,40,237,1,0,88,2,0,0,0,0,0,0,56,237,1,0,88,2,0,0,0,0,0,0,64,237,1,0,88,2,0,0,0,0,0,0,80,237,1,0,88,2,0,0,0,0,0,0,88,237,1,0,88,2,0,0,0,0,0,0,104,237,1,0,88,2,0,0,0,0,0,0,112,237,1,0,88,2,0,0,0,0,0,0,128,237,1,0,88,2,0,0,0,0,0,0,144,237,1,0,88,2,0,0,0,0,0,0,152,237,1,0,88,2,0,0,0,0,0,0,160,237,1,0,88,2,0,0,0,0,0,0,168,237,1,0,88,2,0,0,0,0,0,0,176,237,1,0,88,2,0,0,0,0,0,0,192,237,1,0,88,2,0,0,0,0,0,0,200,237,1,0,88,2,0,0,0,0,0,0,208,237,1,0,88,2,0,0,0,0,0,0,224,237,1,0,88,2,0,0,0,0,0,0,232,237,1,0,88,2,0,0,0,0,0,0,248,237,1,0,88,2,0,0,0,0,0,0,8,238,1,0,88,2,0,0,0,0,0,0,16,238,1,0,88,2,0,0,0,0,0,0,32,238,1,0,88,2,0,0,0,0,0,0,40,238,1,0,88,2,0,0,0,0,0,0,56,238,1,0,88,2,0,0,0,0,0,0,64,238,1,0,88,2,0,0,0,0,0,0,72,238,1,0,88,2,0,0,0,0,0,0,80,238,1,0,88,2,0,0,0,0,0,0,88,238,1,0,88,2,0,0,0,0,0,0,104,238,1,0,88,2,0,0,0,0,0,0,120,238,1,0,88,2,0,0,0,0,0,0,136,238,1,0,88,2,0,0,0,0,0,0,144,238,1,0,88,2,0,0,0,0,0,0,152,238,1,0,88,2,0,0,0,0,0,0,168,238,1,0,88,2,0,0,0,0,0,0,176,238,1,0,88,2,0,0,0,0,0,0,192,238,1,0,88,2,0,0,0,0,0,0,208,238,1,0,88,2,0,0,0,0,0,0,216,238,1,0,88,2,0,0,0,0,0,0,224,238,1,0,88,2,0,0,0,0,0,0,240,238,1,0,88,2,0,0,0,0,0,0,0,239,1,0,88,2,0,0,0,0,0,0,16,239,1,0,88,2,0,0,0,0,0,0,24,239,1,0,88,2,0,0,0,0,0,0,40,239,1,0,88,2,0,0,0,0,0,0,56,239,1,0,88,2,0,0,0,0,0,0,72,239,1,0,88,2,0,0,0,0,0,0,88,239,1,0,88,2,0,0,0,0,0,0,96,239,1,0,88,2,0,0,0,0,0,0,104,239,1,0,88,2,0,0,0,0,0,0,112,239,1,0,88,2,0,0,0,0,0,0,128,239,1,0,88,2,0,0,0,0,0,0,136,239,1,0,88,2,0,0,0,0,0,0,152,239,1,0,88,2,0,0,0,0,0,0,168,239,1,0,88,2,0,0,0,0,0,0,176,239,1,0,88,2,0,0,0,0,0,0,184,239,1,0,88,2,0,0,0,0,0,0,200,239,1,0,88,2,0,0,0,0,0,0,216,239,1,0,88,2,0,0,0,0,0,0,224,239,1,0,88,2,0,0,0,0,0,0,232,239,1,0,88,2,0,0,0,0,0,0,240,239,1,0,88,2,0,0,0,0,0,0,248,239,1,0,88,2,0,0,0,0,0,0,8,240,1,0,88,2,0,0,0,0,0,0,16,240,1,0,88,2,0,0,0,0,0,0,32,240,1,0,88,2,0,0,0,0,0,0,48,240,1,0,88,2,0,0,0,0,0,0,64,240,1,0,88,2,0,0,0,0,0,0,80,240,1,0,88,2,0,0,0,0,0,0,96,240,1,0,88,2,0,0,0,0,0,0,104,240,1,0,88,2,0,0,0,0,0,0,112,240,1,0,88,2,0,0,0,0,0,0,120,240,1,0,88,2,0,0,0,0,0,0,136,240,1,0,88,2,0,0,0,0,0,0,144,240,1,0,88,2,0,0,0,0,0,0,152,240,1,0,88,2,0,0,0,0,0,0,168,240,1,0,88,2,0,0,0,0,0,0,176,240,1,0,88,2,0,0,0,0,0,0,184,240,1,0,88,2,0,0,0,0,0,0,200,240,1,0,88,2,0,0,0,0,0,0,208,240,1,0,88,2,0,0,0,0,0,0,216,240,1,0,88,2,0,0,0,0,0,0,232,240,1,0,88,2,0,0,0,0,0,0,240,240,1,0,88,2,0,0,0,0,0,0,0,241,1,0,88,2,0,0,0,0,0,0,8,241,1,0,88,2,0,0,0,0,0,0,16,241,1,0,88,2,0,0,0,0,0,0,32,241,1,0,88,2,0,0,0,0,0,0,48,241,1,0,88,2,0,0,0,0,0,0,56,241,1,0,88,2,0,0,0,0,0,0,64,241,1,0,88,2,0,0,0,0,0,0,80,241,1,0,88,2,0,0,0,0,0,0,88,241,1,0,88,2,0,0,0,0,0,0,104,241,1,0,88,2,0,0,0,0,0,0,112,241,1,0,88,2,0,0,0,0,0,0,120,241,1,0,88,2,0,0,0,0,0,0,128,241,1,0,88,2,0,0,0,0,0,0,136,241,1,0,88,2,0,0,0,0,0,0,144,241,1,0,88,2,0,0,0,0,0,0,152,241,1,0,88,2,0,0,0,0,0,0,160,241,1,0,88,2,0,0,0,0,0,0,176,241,1,0,88,2,0,0,0,0,0,0,184,241,1,0,88,2,0,0,0,0,0,0,192,241,1,0,88,2,0,0,0,0,0,0,200,241,1,0,88,2,0,0,0,0,0,0,208,241,1,0,88,2,0,0,0,0,0,0,224,241,1,0,88,2,0,0,0,0,0,0,232,241,1,0,88,2,0,0,0,0,0,0,240,241,1,0,88,2,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,88,2,0,0,0,0,0,0,16,242,1,0,88,2,0,0,0,0,0,0,24,242,1,0,88,2,0,0,0,0,0,0,40,242,1,0,88,2,0,0,0,0,0,0,48,242,1,0,88,2,0,0,0,0,0,0,56,242,1,0,88,2,0,0,0,0,0,0,72,242,1,0,88,2,0,0,0,0,0,0,80,242,1,0,88,2,0,0,0,0,0,0,88,242,1,0,88,2,0,0,0,0,0,0,96,242,1,0,88,2,0,0,0,0,0,0,112,242,1,0,88,2,0,0,0,0,0,0,128,242,1,0,88,2,0,0,0,0,0,0,136,242,1,0,88,2,0,0,0,0,0,0,144,242,1,0,88,2,0,0,0,0,0,0,152,242,1,0,88,2,0,0,0,0,0,0,168,242,1,0,88,2,0,0,0,0,0,0,176,242,1,0,88,2,0,0,0,0,0,0,192,242,1,0,88,2,0,0,0,0,0,0,200,242,1,0,88,2,0,0,0,0,0,0,208,242,1,0,88,2,0,0,0,0,0,0,216,242,1,0,88,2,0,0,0,0,0,0,224,242,1,0,88,2,0,0,0,0,0,0,232,242,1,0,88,2,0,0,0,0,0,0,248,242,1,0,88,2,0,0,0,0,0,0,8,243,1,0,88,2,0,0,0,0,0,0,16,243,1,0,88,2,0,0,0,0,0,0,32,243,1,0,88,2,0,0,0,0,0,0,48,243,1,0,88,2,0,0,0,0,0,0,56,243,1,0,88,2,0,0,0,0,0,0,64,243,1,0,88,2,0,0,0,0,0,0,80,243,1,0,88,2,0,0,0,0,0,0,88,243,1,0,88,2,0,0,0,0,0,0,104,243,1,0,88,2,0,0,0,0,0,0,112,243,1,0,88,2,0,0,0,0,0,0,120,243,1,0,88,2,0,0,0,0,0,0,128,243,1,0,88,2,0,0,0,0,0,0,144,243,1,0,88,2,0,0,0,0,0,0,152,243,1,0,88,2,0,0,0,0,0,0,160,243,1,0,88,2,0,0,0,0,0,0,176,243,1,0,88,2,0,0,0,0,0,0,184,243,1,0,88,2,0,0,0,0,0,0,200,243,1,0,88,2,0,0,0,0,0,0,216,243,1,0,88,2,0,0,0,0,0,0,232,243,1,0,88,2,0,0,0,0,0,0,240,243,1,0,88,2,0,0,0,0,0,0,248,243,1,0,88,2,0,0,0,0,0,0,0,244,1,0,88,2,0,0,0,0,0,0,16,244,1,0,88,2,0,0,0,0,0,0,32,244,1,0,88,2,0,0,0,0,0,0,48,244,1,0,88,2,0,0,0,0,0,0,64,244,1,0,88,2,0,0,0,0,0,0,72,244,1,0,88,2,0,0,0,0,0,0,88,244,1,0,88,2,0,0,0,0,0,0,104,244,1,0,88,2,0,0,0,0,0,0,120,244,1,0,88,2,0,0,0,0,0,0,128,244,1,0,88,2,0,0,0,0,0,0,136,244,1,0,88,2,0,0,0,0,0,0,152,244,1,0,88,2,0,0,0,0,0,0,168,244,1,0,88,2,0,0,0,0,0,0,184,244,1,0,88,2,0,0,0,0,0,0,192,244,1,0,88,2,0,0,0,0,0,0,200,244,1,0,88,2,0,0,0,0,0,0,208,244,1,0,88,2,0,0,0,0,0,0,216,244,1,0,88,2,0,0,0,0,0,0,232,244,1,0,88,2,0,0,0,0,0,0,248,244,1,0,88,2,0,0,0,0,0,0,8,245,1,0,88,2,0,0,0,0,0,0,16,245,1,0,88,2,0,0,0,0,0,0,24,245,1,0,88,2,0,0,0,0,0,0,32,245,1,0,88,2,0,0,0,0,0,0,48,245,1,0,88,2,0,0,0,0,0,0,56,245,1,0,88,2,0,0,0,0,0,0,64,245,1,0,88,2,0,0,0,0,0,0,80,245,1,0,88,2,0,0,0,0,0,0,88,245,1,0,88,2,0,0,0,0,0,0,96,245,1,0,88,2,0,0,0,0,0,0,104,245,1,0,88,2,0,0,0,0,0,0,120,245,1,0,88,2,0,0,0,0,0,0,128,245,1,0,88,2,0,0,0,0,0,0,136,245,1,0,88,2,0,0,0,0,0,0,152,245,1,0,88,2,0,0,0,0,0,0,168,245,1,0,88,2,0,0,0,0,0,0,184,245,1,0,88,2,0,0,0,0,0,0,0,0,0,0,120,232,1,0,210,2,0,0,0,0,0,0,128,232,1,0,77,1,0,0,0,0,0,0,136,232,1,0,244,1,0,0,0,0,0,0,152,232,1,0,210,2,0,0,0,0,0,0,168,232,1,0,99,2,0,0,0,0,0,0,176,232,1,0,22,1,0,0,0,0,0,0,184,232,1,0,77,1,0,0,0,0,0,0,192,232,1,0,72,2,0,0,0,0,0,0,208,232,1,0,77,1,0,0,0,0,0,0,224,232,1,0,77,1,0,0,0,0,0,0,240,232,1,0,44,2,0,0,0,0,0,0,0,233,1,0,72,2,0,0,0,0,0,0,16,233,1,0,22,1,0,0,0,0,0,0,24,233,1,0,66,3,0,0,0,0,0,0,32,233,1,0,44,2,0,0,0,0,0,0,40,233,1,0,44,2,0,0,0,0,0,0,48,233,1,0,44,2,0,0,0,0,0,0,56,233,1,0,155,2,0,0,0,0,0,0,64,233,1,0,44,2,0,0,0,0,0,0,80,233,1,0,72,2,0,0,0,0,0,0,88,233,1,0,22,1,0,0,0,0,0,0,96,233,1,0,244,1,0,0,0,0,0,0,104,233,1,0,44,2,0,0,0,0,0,0,216,226,1,0,22,1,0,0,0,0,0,0,112,233,1,0,10,3,0,0,0,0,0,0,120,233,1,0,99,2,0,0,0,0,0,0,136,233,1,0,232,3,0,0,0,0,0,0,144,233,1,0,155,2,0,0,0,0,0,0,152,233,1,0,44,2,0,0,0,0,0,0,160,233,1,0,44,2,0,0,0,0,0,0,176,233,1,0,43,1,0,0,0,0,0,0,184,233,1,0,155,2,0,0,0,0,0,0,192,233,1,0,155,2,0,0,0,0,0,0,200,233,1,0,210,2,0,0,0,0,0,0,208,233,1,0,44,2,0,0,0,0,0,0,216,233,1,0,210,2,0,0,0,0,0,0,224,233,1,0,155,2,0,0,0,0,0,0,232,233,1,0,66,3,0,0,0,0,0,0,248,233,1,0,99,2,0,0,0,0,0,0,0,234,1,0,10,3,0,0,0,0,0,0,8,234,1,0,210,2,0,0,0,0,0,0,16,234,1,0,22,1,0,0,0,0,0,0,24,234,1,0,244,1,0,0,0,0,0,0,32,234,1,0,155,2,0,0,0,0,0,0,40,234,1,0,222,0,0,0,0,0,0,0,48,234,1,0,22,1,0,0,0,0,0,0,64,234,1,0,44,2,0,0,0,0,0,0,72,234,1,0,22,1,0,0,0,0,0,0,88,234,1,0,65,3,0,0,0,0,0,0,96,234,1,0,210,2,0,0,0,0,0,0,104,234,1,0,44,2,0,0,0,0,0,0,112,234,1,0,99,2,0,0,0,0,0,0,128,234,1,0,10,3,0,0,0,0,0,0,136,234,1,0,155,2,0,0,0,0,0,0,144,234,1,0,10,3,0,0,0,0,0,0,152,234,1,0,210,2,0,0,0,0,0,0,168,234,1,0,210,2,0,0,0,0,0,0,176,234,1,0,155,2,0,0,0,0,0,0,184,234,1,0,77,1,0,0,0,0,0,0,192,234,1,0,155,2,0,0,0,0,0,0,200,234,1,0,99,2,0,0,0,0,0,0,208,234,1,0,210,2,0,0,0,0,0,0,216,234,1,0,44,2,0,0,0,0,0,0,224,234,1,0,155,2,0,0,0,0,0,0,232,234,1,0,176,3,0,0,0,0,0,0,240,234,1,0,155,2,0,0,0,0,0,0,248,234,1,0,44,2,0,0,0,0,0,0,8,235,1,0,72,2,0,0,0,0,0,0,16,235,1,0,155,2,0,0,0,0,0,0,24,235,1,0,99,2,0,0,0,0,0,0,32,235,1,0,44,2,0,0,0,0,0,0,40,235,1,0,44,2,0,0,0,0,0,0,48,235,1,0,10,3,0,0,0,0,0,0,64,235,1,0,44,2,0,0,0,0,0,0,72,235,1,0,244,1,0,0,0,0,0,0,80,235,1,0,44,2,0,0,0,0,0,0,88,235,1,0,44,2,0,0,0,0,0,0,96,235,1,0,22,1,0,0,0,0,0,0,104,235,1,0,44,2,0,0,0,0,0,0,112,235,1,0,94,1,0,0,0,0,0,0,120,235,1,0,44,2,0,0,0,0,0,0,128,235,1,0,222,0,0,0,0,0,0,0,136,235,1,0,10,3,0,0,0,0,0,0,144,235,1,0,44,2,0,0,0,0,0,0,152,235,1,0,222,0,0,0,0,0,0,0,160,235,1,0,244,1,0,0,0,0,0,0,168,235,1,0,222,0,0,0,0,0,0,0,176,235,1,0,65,3,0,0,0,0,0,0,184,235,1,0,44,2,0,0,0,0,0,0,192,235,1,0,22,1,0,0,0,0,0,0,208,235,1,0,44,2,0,0,0,0,0,0,216,235,1,0,114,1,0,0,0,0,0,0,232,235,1,0,77,1,0,0,0,0,0,0,240,235,1,0,44,2,0,0,0,0,0,0,248,235,1,0,44,2,0,0,0,0,0,0,0,236,1,0,44,2,0,0,0,0,0,0,16,236,1,0,77,1,0,0,0,0,0,0,24,236,1,0,77,1,0,0,0,0,0,0,40,236,1,0,44,2,0,0,0,0,0,0,48,236,1,0,244,1,0,0,0,0,0,0,56,236,1,0,232,3,0,0,0,0,0,0,64,236,1,0,22,1,0,0,0,0,0,0,72,236,1,0,72,2,0,0,0,0,0,0,80,236,1,0,44,2,0,0,0,0,0,0,88,236,1,0,210,2,0,0,0,0,0,0,96,236,1,0,244,1,0,0,0,0,0,0,104,236,1,0,210,2,0,0,0,0,0,0,112,236,1,0,244,1,0,0,0,0,0,0,120,236,1,0,244,1,0,0,0,0,0,0,128,236,1,0,244,1,0,0,0,0,0,0,136,236,1,0,10,3,0,0,0,0,0,0,144,236,1,0,250,0,0,0,0,0,0,0,160,236,1,0,77,1,0,0,0,0,0,0,176,236,1,0,22,1,0,0,0,0,0,0,192,236,1,0,210,2,0,0,0,0,0,0,200,236,1,0,99,1,0,0,0,0,0,0,216,236,1,0,44,2,0,0,0,0,0,0,232,236,1,0,44,2,0,0,0,0,0,0,240,236,1,0,37,2,0,0,0,0,0,0,0,237,1,0,155,2,0,0,0,0,0,0,8,237,1,0,44,2,0,0,0,0,0,0,16,237,1,0,22,1,0,0,0,0,0,0,32,237,1,0,99,2,0,0,0,0,0,0,40,237,1,0,37,2,0,0,0,0,0,0,56,237,1,0,215,1,0,0,0,0,0,0,64,237,1,0,77,1,0,0,0,0,0,0,80,237,1,0,244,1,0,0,0,0,0,0,88,237,1,0,155,2,0,0,0,0,0,0,104,237,1,0,44,2,0,0,0,0,0,0,112,237,1,0,232,3,0,0,0,0,0,0,128,237,1,0,44,2,0,0,0,0,0,0,144,237,1,0,44,2,0,0,0,0,0,0,152,237,1,0,77,1,0,0,0,0,0,0,160,237,1,0,10,3,0,0,0,0,0,0,168,237,1,0,155,2,0,0,0,0,0,0,176,237,1,0,232,3,0,0,0,0,0,0,192,237,1,0,244,1,0,0,0,0,0,0,200,237,1,0,232,3,0,0,0,0,0,0,208,237,1,0,210,2,0,0,0,0,0,0,224,237,1,0,222,0,0,0,0,0,0,0,232,237,1,0,77,1,0,0,0,0,0,0,248,237,1,0,77,1,0,0,0,0,0,0,8,238,1,0,77,1,0,0,0,0,0,0,16,238,1,0,191,0,0,0,0,0,0,0,32,238,1,0,44,2,0,0,0,0,0,0,40,238,1,0,77,1,0,0,0,0,0,0,56,238,1,0,44,2,0,0,0,0,0,0,64,238,1,0,176,3,0,0,0,0,0,0,72,238,1,0,155,2,0,0,0,0,0,0,80,238,1,0,210,2,0,0,0,0,0,0,88,238,1,0,44,2,0,0,0,0,0,0,104,238,1,0,155,2,0,0,0,0,0,0,120,238,1,0,225,2,0,0,0,0,0,0,136,238,1,0,155,2,0,0,0,0,0,0,144,238,1,0,22,1,0,0,0,0,0,0,152,238,1,0,155,2,0,0,0,0,0,0,168,238,1,0,44,2,0,0,0,0,0,0,176,238,1,0,22,1,0,0,0,0,0,0,192,238,1,0,77,1,0,0,0,0,0,0,208,238,1,0,44,2,0,0,0,0,0,0,216,238,1,0,44,2,0,0,0,0,0,0,224,238,1,0,10,3,0,0,0,0,0,0,240,238,1,0,44,2,0,0,0,0,0,0,0,239,1,0,22,1,0,0,0,0,0,0,16,239,1,0,210,2,0,0,0,0,0,0,24,239,1,0,222,0,0,0,0,0,0,0,40,239,1,0,210,2,0,0,0,0,0,0,56,239,1,0,232,3,0,0,0,0,0,0,72,239,1,0,155,2,0,0,0,0,0,0,88,239,1,0,44,2,0,0,0,0,0,0,96,239,1,0,44,2,0,0,0,0,0,0,104,239,1,0,155,2,0,0,0,0,0,0,112,239,1,0,44,2,0,0,0,0,0,0,128,239,1,0,44,2,0,0,0,0,0,0,136,239,1,0,44,2,0,0,0,0,0,0,152,239,1,0,22,1,0,0,0,0,0,0,168,239,1,0,210,2,0,0,0,0,0,0,176,239,1,0,121,3,0,0,0,0,0,0,184,239,1,0,133,1,0,0,0,0,0,0,200,239,1,0,44,2,0,0,0,0,0,0,216,239,1,0,210,2,0,0,0,0,0,0,224,239,1,0,44,2,0,0,0,0,0,0,232,239,1,0,44,2,0,0,0,0,0,0,240,239,1,0,44,2,0,0,0,0,0,0,248,239,1,0,44,2,0,0,0,0,0,0,8,240,1,0,99,2,0,0,0,0,0,0,16,240,1,0,155,2,0,0,0,0,0,0,32,240,1,0,66,3,0,0,0,0,0,0,48,240,1,0,44,2,0,0,0,0,0,0,64,240,1,0,210,2,0,0,0,0,0,0,80,240,1,0,244,1,0,0,0,0,0,0,96,240,1,0,77,1,0,0,0,0,0,0,104,240,1,0,247,3,0,0,0,0,0,0,112,240,1,0,44,2,0,0,0,0,0,0,120,240,1,0,44,2,0,0,0,0,0,0,136,240,1,0,44,2,0,0,0,0,0,0,144,240,1,0,210,2,0,0,0,0,0,0,152,240,1,0,72,2,0,0,0,0,0,0,168,240,1,0,44,2,0,0,0,0,0,0,176,240,1,0,44,2,0,0,0,0,0,0,184,240,1,0,155,2,0,0,0,0,0,0,200,240,1,0,10,3,0,0,0,0,0,0,208,240,1,0,210,2,0,0,0,0,0,0,216,240,1,0,220,1,0,0,0,0,0,0,232,240,1,0,44,2,0,0,0,0,0,0,240,240,1,0,78,1,0,0,0,0,0,0,0,241,1,0,155,2,0,0,0,0,0,0,8,241,1,0,244,1,0,0,0,0,0,0,16,241,1,0,244,1,0,0,0,0,0,0,32,241,1,0,244,1,0,0,0,0,0,0,48,241,1,0,210,2,0,0,0,0,0,0,56,241,1,0,44,2,0,0,0,0,0,0,64,241,1,0,10,3,0,0,0,0,0,0,80,241,1,0,10,3,0,0,0,0,0,0,88,241,1,0,244,1,0,0,0,0,0,0,104,241,1,0,77,1,0,0,0,0,0,0,112,241,1,0,44,2,0,0,0,0,0,0,120,241,1,0,77,1,0,0,0,0,0,0,128,241,1,0,99,2,0,0,0,0,0,0,136,241,1,0,155,2,0,0,0,0,0,0,144,241,1,0,44,2,0,0,0,0,0,0,152,241,1,0,144,1,0,0,0,0,0,0,160,241,1,0,225,2,0,0,0,0,0,0,176,241,1,0,197,1,0,0,0,0,0,0,184,241,1,0,155,2,0,0,0,0,0,0,192,241,1,0,121,3,0,0,0,0,0,0,200,241,1,0,44,2,0,0,0,0,0,0,208,241,1,0,25,2,0,0,0,0,0,0,224,241,1,0,131,2,0,0,0,0,0,0,232,241,1,0,210,2,0,0,0,0,0,0,240,241,1,0,44,2,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,22,1,0,0,0,0,0,0,16,242,1,0,44,2,0,0,0,0,0,0,24,242,1,0,44,2,0,0,0,0,0,0,40,242,1,0,44,2,0,0,0,0,0,0,48,242,1,0,210,2,0,0,0,0,0,0,56,242,1,0,44,2,0,0,0,0,0,0,72,242,1,0,61,1,0,0,0,0,0,0,80,242,1,0,44,2,0,0,0,0,0,0,88,242,1,0,100,2,0,0,0,0,0,0,96,242,1,0,10,3,0,0,0,0,0,0,112,242,1,0,213,1,0,0,0,0,0,0,128,242,1,0,44,2,0,0,0,0,0,0,136,242,1,0,77,1,0,0,0,0,0,0,144,242,1,0,44,2,0,0,0,0,0,0,152,242,1,0,22,1,0,0,0,0,0,0,168,242,1,0,22,1,0,0,0,0,0,0,176,242,1,0,155,2,0,0,0,0,0,0,192,242,1,0,22,1,0,0,0,0,0,0,200,242,1,0,222,0,0,0,0,0,0,0,208,242,1,0,210,2,0,0,0,0,0,0,216,242,1,0,72,2,0,0,0,0,0,0,224,242,1,0,44,2,0,0,0,0,0,0,232,242,1,0,222,0,0,0,0,0,0,0,248,242,1,0,222,0,0,0,0,0,0,0,8,243,1,0,155,2,0,0,0,0,0,0,16,243,1,0,44,2,0,0,0,0,0,0,32,243,1,0,77,1,0,0,0,0,0,0,48,243,1,0,77,1,0,0,0,0,0,0,56,243,1,0,44,2,0,0,0,0,0,0,64,243,1,0,77,1,0,0,0,0,0,0,80,243,1,0,22,1,0,0,0,0,0,0,88,243,1,0,77,1,0,0,0,0,0,0,104,243,1,0,44,2,0,0,0,0,0,0,112,243,1,0,44,2,0,0,0,0,0,0,120,243,1,0,244,1,0,0,0,0,0,0,128,243,1,0,210,2,0,0,0,0,0,0,144,243,1,0,244,1,0,0,0,0,0,0,152,243,1,0,244,1,0,0,0,0,0,0,160,243,1,0,155,2,0,0,0,0,0,0,176,243,1,0,210,2,0,0,0,0,0,0,184,243,1,0,22,1,0,0,0,0,0,0,200,243,1,0,44,2,0,0,0,0,0,0,216,243,1,0,99,2,0,0,0,0,0,0,232,243,1,0,155,2,0,0,0,0,0,0,240,243,1,0,44,2,0,0,0,0,0,0,248,243,1,0,155,2,0,0,0,0,0,0,0,244,1,0,109,1,0,0,0,0,0,0,16,244,1,0,22,1,0,0,0,0,0,0,32,244,1,0,44,2,0,0,0,0,0,0,48,244,1,0,37,2,0,0,0,0,0,0,64,244,1,0,22,1,0,0,0,0,0,0,72,244,1,0,77,1,0,0,0,0,0,0,88,244,1,0,99,2,0,0,0,0,0,0,104,244,1,0,44,2,0,0,0,0,0,0,120,244,1,0,244,1,0,0,0,0,0,0,128,244,1,0,155,2,0,0,0,0,0,0,136,244,1,0,22,1,0,0,0,0,0,0,152,244,1,0,78,1,0,0,0,0,0,0,168,244,1,0,77,1,0,0,0,0,0,0,184,244,1,0,44,2,0,0,0,0,0,0,192,244,1,0,244,1,0,0,0,0,0,0,200,244,1,0,22,1,0,0,0,0,0,0,208,244,1,0,44,2,0,0,0,0,0,0,216,244,1,0,44,2,0,0,0,0,0,0,232,244,1,0,72,2,0,0,0,0,0,0,248,244,1,0,244,1,0,0,0,0,0,0,8,245,1,0,155,2,0,0,0,0,0,0,16,245,1,0,77,1,0,0,0,0,0,0,24,245,1,0,4,1,0,0,0,0,0,0,32,245,1,0,167,0,0,0,0,0,0,0,48,245,1,0,72,2,0,0,0,0,0,0,56,245,1,0,44,2,0,0,0,0,0,0,64,245,1,0,77,1,0,0,0,0,0,0,80,245,1,0,22,1,0,0,0,0,0,0,88,245,1,0,22,1,0,0,0,0,0,0,96,245,1,0,210,2,0,0,0,0,0,0,104,245,1,0,155,2,0,0,0,0,0,0,120,245,1,0,72,2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+81920); -/* memory initializer */ allocate([128,245,1,0,44,2,0,0,0,0,0,0,136,245,1,0,4,1,0,0,0,0,0,0,152,245,1,0,222,0,0,0,0,0,0,0,168,245,1,0,155,2,0,0,0,0,0,0,184,245,1,0,77,1,0,0,0,0,0,0,0,0,0,0,120,232,1,0,210,2,0,0,0,0,0,0,128,232,1,0,133,1,0,0,0,0,0,0,136,232,1,0,44,2,0,0,0,0,0,0,152,232,1,0,210,2,0,0,0,0,0,0,168,232,1,0,99,2,0,0,0,0,0,0,176,232,1,0,22,1,0,0,0,0,0,0,184,232,1,0,77,1,0,0,0,0,0,0,192,232,1,0,72,2,0,0,0,0,0,0,208,232,1,0,77,1,0,0,0,0,0,0,224,232,1,0,77,1,0,0,0,0,0,0,240,232,1,0,44,2,0,0,0,0,0,0,0,233,1,0,72,2,0,0,0,0,0,0,16,233,1,0,77,1,0,0,0,0,0,0,24,233,1,0,66,3,0,0,0,0,0,0,32,233,1,0,44,2,0,0,0,0,0,0,40,233,1,0,99,2,0,0,0,0,0,0,48,233,1,0,99,2,0,0,0,0,0,0,56,233,1,0,210,2,0,0,0,0,0,0,64,233,1,0,99,2,0,0,0,0,0,0,80,233,1,0,72,2,0,0,0,0,0,0,88,233,1,0,22,1,0,0,0,0,0,0,96,233,1,0,244,1,0,0,0,0,0,0,104,233,1,0,44,2,0,0,0,0,0,0,216,226,1,0,22,1,0,0,0,0,0,0,112,233,1,0,10,3,0,0,0,0,0,0,120,233,1,0,99,2,0,0,0,0,0,0,136,233,1,0,232,3,0,0,0,0,0,0,144,233,1,0,210,2,0,0,0,0,0,0,152,233,1,0,44,2,0,0,0,0,0,0,160,233,1,0,44,2,0,0,0,0,0,0,176,233,1,0,144,1,0,0,0,0,0,0,184,233,1,0,210,2,0,0,0,0,0,0,192,233,1,0,210,2,0,0,0,0,0,0,200,233,1,0,210,2,0,0,0,0,0,0,208,233,1,0,44,2,0,0,0,0,0,0,216,233,1,0,210,2,0,0,0,0,0,0,224,233,1,0,155,2,0,0,0,0,0,0,232,233,1,0,66,3,0,0,0,0,0,0,248,233,1,0,99,2,0,0,0,0,0,0,0,234,1,0,10,3,0,0,0,0,0,0,8,234,1,0,210,2,0,0,0,0,0,0,16,234,1,0,22,1,0,0,0,0,0,0,24,234,1,0,44,2,0,0,0,0,0,0,32,234,1,0,210,2,0,0,0,0,0,0,40,234,1,0,22,1,0,0,0,0,0,0,48,234,1,0,22,1,0,0,0,0,0,0,64,234,1,0,99,2,0,0,0,0,0,0,72,234,1,0,22,1,0,0,0,0,0,0,88,234,1,0,65,3,0,0,0,0,0,0,96,234,1,0,210,2,0,0,0,0,0,0,104,234,1,0,99,2,0,0,0,0,0,0,112,234,1,0,99,2,0,0,0,0,0,0,128,234,1,0,10,3,0,0,0,0,0,0,136,234,1,0,155,2,0,0,0,0,0,0,144,234,1,0,10,3,0,0,0,0,0,0,152,234,1,0,210,2,0,0,0,0,0,0,168,234,1,0,210,2,0,0,0,0,0,0,176,234,1,0,210,2,0,0,0,0,0,0,184,234,1,0,77,1,0,0,0,0,0,0,192,234,1,0,155,2,0,0,0,0,0,0,200,234,1,0,99,2,0,0,0,0,0,0,208,234,1,0,210,2,0,0,0,0,0,0,216,234,1,0,44,2,0,0,0,0,0,0,224,234,1,0,155,2,0,0,0,0,0,0,232,234,1,0,176,3,0,0,0,0,0,0,240,234,1,0,155,2,0,0,0,0,0,0,248,234,1,0,99,2,0,0,0,0,0,0,8,235,1,0,72,2,0,0,0,0,0,0,16,235,1,0,155,2,0,0,0,0,0,0,24,235,1,0,99,2,0,0,0,0,0,0,32,235,1,0,44,2,0,0,0,0,0,0,40,235,1,0,44,2,0,0,0,0,0,0,48,235,1,0,10,3,0,0,0,0,0,0,64,235,1,0,99,2,0,0,0,0,0,0,72,235,1,0,44,2,0,0,0,0,0,0,80,235,1,0,99,2,0,0,0,0,0,0,88,235,1,0,44,2,0,0,0,0,0,0,96,235,1,0,77,1,0,0,0,0,0,0,104,235,1,0,99,2,0,0,0,0,0,0,112,235,1,0,94,1,0,0,0,0,0,0,120,235,1,0,99,2,0,0,0,0,0,0,128,235,1,0,22,1,0,0,0,0,0,0,136,235,1,0,10,3,0,0,0,0,0,0,144,235,1,0,44,2,0,0,0,0,0,0,152,235,1,0,22,1,0,0,0,0,0,0,160,235,1,0,44,2,0,0,0,0,0,0,168,235,1,0,22,1,0,0,0,0,0,0,176,235,1,0,121,3,0,0,0,0,0,0,184,235,1,0,99,2,0,0,0,0,0,0,192,235,1,0,77,1,0,0,0,0,0,0,208,235,1,0,99,2,0,0,0,0,0,0,216,235,1,0,114,1,0,0,0,0,0,0,232,235,1,0,77,1,0,0,0,0,0,0,240,235,1,0,99,2,0,0,0,0,0,0,248,235,1,0,99,2,0,0,0,0,0,0,0,236,1,0,99,2,0,0,0,0,0,0,16,236,1,0,133,1,0,0,0,0,0,0,24,236,1,0,77,1,0,0,0,0,0,0,40,236,1,0,44,2,0,0,0,0,0,0,48,236,1,0,44,2,0,0,0,0,0,0,56,236,1,0,232,3,0,0,0,0,0,0,64,236,1,0,77,1,0,0,0,0,0,0,72,236,1,0,72,2,0,0,0,0,0,0,80,236,1,0,99,2,0,0,0,0,0,0,88,236,1,0,210,2,0,0,0,0,0,0,96,236,1,0,44,2,0,0,0,0,0,0,104,236,1,0,10,3,0,0,0,0,0,0,112,236,1,0,44,2,0,0,0,0,0,0,120,236,1,0,44,2,0,0,0,0,0,0,128,236,1,0,244,1,0,0,0,0,0,0,136,236,1,0,10,3,0,0,0,0,0,0,144,236,1,0,250,0,0,0,0,0,0,0,160,236,1,0,77,1,0,0,0,0,0,0,176,236,1,0,22,1,0,0,0,0,0,0,192,236,1,0,210,2,0,0,0,0,0,0,200,236,1,0,218,1,0,0,0,0,0,0,216,236,1,0,99,2,0,0,0,0,0,0,232,236,1,0,99,2,0,0,0,0,0,0,240,236,1,0,37,2,0,0,0,0,0,0,0,237,1,0,155,2,0,0,0,0,0,0,8,237,1,0,99,2,0,0,0,0,0,0,16,237,1,0,77,1,0,0,0,0,0,0,32,237,1,0,99,2,0,0,0,0,0,0,40,237,1,0,37,2,0,0,0,0,0,0,56,237,1,0,238,1,0,0,0,0,0,0,64,237,1,0,77,1,0,0,0,0,0,0,80,237,1,0,44,2,0,0,0,0,0,0,88,237,1,0,155,2,0,0,0,0,0,0,104,237,1,0,99,2,0,0,0,0,0,0,112,237,1,0,232,3,0,0,0,0,0,0,128,237,1,0,44,2,0,0,0,0,0,0,144,237,1,0,99,2,0,0,0,0,0,0,152,237,1,0,77,1,0,0,0,0,0,0,160,237,1,0,10,3,0,0,0,0,0,0,168,237,1,0,155,2,0,0,0,0,0,0,176,237,1,0,232,3,0,0,0,0,0,0,192,237,1,0,44,2,0,0,0,0,0,0,200,237,1,0,232,3,0,0,0,0,0,0,208,237,1,0,210,2,0,0,0,0,0,0,224,237,1,0,22,1,0,0,0,0,0,0,232,237,1,0,244,1,0,0,0,0,0,0,248,237,1,0,77,1,0,0,0,0,0,0,8,238,1,0,77,1,0,0,0,0,0,0,16,238,1,0,238,0,0,0,0,0,0,0,32,238,1,0,44,2,0,0,0,0,0,0,40,238,1,0,77,1,0,0,0,0,0,0,56,238,1,0,44,2,0,0,0,0,0,0,64,238,1,0,176,3,0,0,0,0,0,0,72,238,1,0,210,2,0,0,0,0,0,0,80,238,1,0,210,2,0,0,0,0,0,0,88,238,1,0,44,2,0,0,0,0,0,0,104,238,1,0,210,2,0,0,0,0,0,0,120,238,1,0,225,2,0,0,0,0,0,0,136,238,1,0,155,2,0,0,0,0,0,0,144,238,1,0,22,1,0,0,0,0,0,0,152,238,1,0,155,2,0,0,0,0,0,0,168,238,1,0,99,2,0,0,0,0,0,0,176,238,1,0,22,1,0,0,0,0,0,0,192,238,1,0,77,1,0,0,0,0,0,0,208,238,1,0,44,2,0,0,0,0,0,0,216,238,1,0,44,2,0,0,0,0,0,0,224,238,1,0,10,3,0,0,0,0,0,0,240,238,1,0,99,2,0,0,0,0,0,0,0,239,1,0,77,1,0,0,0,0,0,0,16,239,1,0,210,2,0,0,0,0,0,0,24,239,1,0,22,1,0,0,0,0,0,0,40,239,1,0,210,2,0,0,0,0,0,0,56,239,1,0,232,3,0,0,0,0,0,0,72,239,1,0,155,2,0,0,0,0,0,0,88,239,1,0,99,2,0,0,0,0,0,0,96,239,1,0,44,2,0,0,0,0,0,0,104,239,1,0,155,2,0,0,0,0,0,0,112,239,1,0,44,2,0,0,0,0,0,0,128,239,1,0,44,2,0,0,0,0,0,0,136,239,1,0,44,2,0,0,0,0,0,0,152,239,1,0,22,1,0,0,0,0,0,0,168,239,1,0,210,2,0,0,0,0,0,0,176,239,1,0,121,3,0,0,0,0,0,0,184,239,1,0,133,1,0,0,0,0,0,0,200,239,1,0,99,2,0,0,0,0,0,0,216,239,1,0,210,2,0,0,0,0,0,0,224,239,1,0,99,2,0,0,0,0,0,0,232,239,1,0,44,2,0,0,0,0,0,0,240,239,1,0,44,2,0,0,0,0,0,0,248,239,1,0,99,2,0,0,0,0,0,0,8,240,1,0,99,2,0,0,0,0,0,0,16,240,1,0,155,2,0,0,0,0,0,0,32,240,1,0,66,3,0,0,0,0,0,0,48,240,1,0,44,2,0,0,0,0,0,0,64,240,1,0,210,2,0,0,0,0,0,0,80,240,1,0,44,2,0,0,0,0,0,0,96,240,1,0,77,1,0,0,0,0,0,0,72,252,1,0,44,2,0,0,0,0,0,0,104,240,1,0,207,3,0,0,0,0,0,0,112,240,1,0,44,2,0,0,0,0,0,0,120,240,1,0,44,2,0,0,0,0,0,0,136,240,1,0,44,2,0,0,0,0,0,0,144,240,1,0,210,2,0,0,0,0,0,0,152,240,1,0,72,2,0,0,0,0,0,0,168,240,1,0,44,2,0,0,0,0,0,0,176,240,1,0,99,2,0,0,0,0,0,0,184,240,1,0,155,2,0,0,0,0,0,0,200,240,1,0,10,3,0,0,0,0,0,0,208,240,1,0,210,2,0,0,0,0,0,0,216,240,1,0,238,1,0,0,0,0,0,0,232,240,1,0,99,2,0,0,0,0,0,0,240,240,1,0,133,1,0,0,0,0,0,0,0,241,1,0,155,2,0,0,0,0,0,0,8,241,1,0,244,1,0,0,0,0,0,0,16,241,1,0,44,2,0,0,0,0,0,0,32,241,1,0,44,2,0,0,0,0,0,0,48,241,1,0,210,2,0,0,0,0,0,0,56,241,1,0,99,2,0,0,0,0,0,0,64,241,1,0,10,3,0,0,0,0,0,0,80,241,1,0,10,3,0,0,0,0,0,0,88,241,1,0,44,2,0,0,0,0,0,0,104,241,1,0,77,1,0,0,0,0,0,0,112,241,1,0,99,2,0,0,0,0,0,0,120,241,1,0,133,1,0,0,0,0,0,0,128,241,1,0,99,2,0,0,0,0,0,0,136,241,1,0,155,2,0,0,0,0,0,0,144,241,1,0,99,2,0,0,0,0,0,0,152,241,1,0,144,1,0,0,0,0,0,0,160,241,1,0,225,2,0,0,0,0,0,0,176,241,1,0,37,2,0,0,0,0,0,0,184,241,1,0,210,2,0,0,0,0,0,0,192,241,1,0,121,3,0,0,0,0,0,0,200,241,1,0,44,2,0,0,0,0,0,0,208,241,1,0,44,2,0,0,0,0,0,0,224,241,1,0,231,2,0,0,0,0,0,0,232,241,1,0,210,2,0,0,0,0,0,0,240,241,1,0,44,2,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,22,1,0,0,0,0,0,0,16,242,1,0,99,2,0,0,0,0,0,0,24,242,1,0,99,2,0,0,0,0,0,0,40,242,1,0,99,2,0,0,0,0,0,0,48,242,1,0,210,2,0,0,0,0,0,0,56,242,1,0,99,2,0,0,0,0,0,0,72,242,1,0,133,1,0,0,0,0,0,0,80,242,1,0,44,2,0,0,0,0,0,0,88,242,1,0,100,2,0,0,0,0,0,0,96,242,1,0,10,3,0,0,0,0,0,0,112,242,1,0,72,2,0,0,0,0,0,0,128,242,1,0,44,2,0,0,0,0,0,0,136,242,1,0,77,1,0,0,0,0,0,0,144,242,1,0,99,2,0,0,0,0,0,0,152,242,1,0,77,1,0,0,0,0,0,0,168,242,1,0,22,1,0,0,0,0,0,0,176,242,1,0,210,2,0,0,0,0,0,0,192,242,1,0,22,1,0,0,0,0,0,0,200,242,1,0,22,1,0,0,0,0,0,0,208,242,1,0,210,2,0,0,0,0,0,0,216,242,1,0,72,2,0,0,0,0,0,0,224,242,1,0,99,2,0,0,0,0,0,0,232,242,1,0,22,1,0,0,0,0,0,0,248,242,1,0,22,1,0,0,0,0,0,0,8,243,1,0,155,2,0,0,0,0,0,0,16,243,1,0,99,2,0,0,0,0,0,0,32,243,1,0,77,1,0,0,0,0,0,0,48,243,1,0,77,1,0,0,0,0,0,0,56,243,1,0,44,2,0,0,0,0,0,0,64,243,1,0,77,1,0,0,0,0,0,0,80,243,1,0,22,1,0,0,0,0,0,0,88,243,1,0,244,1,0,0,0,0,0,0,104,243,1,0,99,2,0,0,0,0,0,0,112,243,1,0,44,2,0,0,0,0,0,0,120,243,1,0,44,2,0,0,0,0,0,0,128,243,1,0,210,2,0,0,0,0,0,0,144,243,1,0,99,2,0,0,0,0,0,0,152,243,1,0,99,2,0,0,0,0,0,0,160,243,1,0,210,2,0,0,0,0,0,0,176,243,1,0,210,2,0,0,0,0,0,0,184,243,1,0,22,1,0,0,0,0,0,0,200,243,1,0,44,2,0,0,0,0,0,0,216,243,1,0,99,2,0,0,0,0,0,0,232,243,1,0,210,2,0,0,0,0,0,0,240,243,1,0,44,2,0,0,0,0,0,0,248,243,1,0,155,2,0,0,0,0,0,0,0,244,1,0,109,1,0,0,0,0,0,0,16,244,1,0,22,1,0,0,0,0,0,0,32,244,1,0,44,2,0,0,0,0,0,0,48,244,1,0,37,2,0,0,0,0,0,0,64,244,1,0,22,1,0,0,0,0,0,0,72,244,1,0,133,1,0,0,0,0,0,0,88,244,1,0,99,2,0,0,0,0,0,0,104,244,1,0,44,2,0,0,0,0,0,0,120,244,1,0,44,2,0,0,0,0,0,0,128,244,1,0,155,2,0,0,0,0,0,0,136,244,1,0,22,1,0,0,0,0,0,0,152,244,1,0,133,1,0,0,0,0,0,0,168,244,1,0,244,1,0,0,0,0,0,0,184,244,1,0,44,2,0,0,0,0,0,0,192,244,1,0,44,2,0,0,0,0,0,0,200,244,1,0,22,1,0,0,0,0,0,0,208,244,1,0,44,2,0,0,0,0,0,0,216,244,1,0,44,2,0,0,0,0,0,0,232,244,1,0,72,2,0,0,0,0,0,0,248,244,1,0,244,1,0,0,0,0,0,0,8,245,1,0,210,2,0,0,0,0,0,0,16,245,1,0,77,1,0,0,0,0,0,0,24,245,1,0,24,1,0,0,0,0,0,0,32,245,1,0,167,0,0,0,0,0,0,0,48,245,1,0,72,2,0,0,0,0,0,0,56,245,1,0,44,2,0,0,0,0,0,0,64,245,1,0,77,1,0,0,0,0,0,0,80,245,1,0,77,1,0,0,0,0,0,0,88,245,1,0,22,1,0,0,0,0,0,0,96,245,1,0,210,2,0,0,0,0,0,0,104,245,1,0,210,2,0,0,0,0,0,0,120,245,1,0,72,2,0,0,0,0,0,0,128,245,1,0,44,2,0,0,0,0,0,0,136,245,1,0,24,1,0,0,0,0,0,0,152,245,1,0,22,1,0,0,0,0,0,0,168,245,1,0,155,2,0,0,0,0,0,0,184,245,1,0,77,1,0,0,0,0,0,0,120,232,1,0,210,2,0,0,0,0,0,0,128,232,1,0,133,1,0,0,0,0,0,0,136,232,1,0,44,2,0,0,0,0,0,0,152,232,1,0,210,2,0,0,0,0,0,0,168,232,1,0,99,2,0,0,0,0,0,0,176,232,1,0,22,1,0,0,0,0,0,0,184,232,1,0,77,1,0,0,0,0,0,0,192,232,1,0,72,2,0,0,0,0,0,0,208,232,1,0,77,1,0,0,0,0,0,0,224,232,1,0,77,1,0,0,0,0,0,0,240,232,1,0,44,2,0,0,0,0,0,0,0,233,1,0,72,2,0,0,0,0,0,0,16,233,1,0,77,1,0,0,0,0,0,0,24,233,1,0,66,3,0,0,0,0,0,0,32,233,1,0,44,2,0,0,0,0,0,0,40,233,1,0,99,2,0,0,0,0,0,0,48,233,1,0,99,2,0,0,0,0,0,0,56,233,1,0,210,2,0,0,0,0,0,0,64,233,1,0,99,2,0,0,0,0,0,0,80,233,1,0,72,2,0,0,0,0,0,0,88,233,1,0,22,1,0,0,0,0,0,0,96,233,1,0,244,1,0,0,0,0,0,0,104,233,1,0,44,2,0,0,0,0,0,0,216,226,1,0,22,1,0,0,0,0,0,0,112,233,1,0,10,3,0,0,0,0,0,0,120,233,1,0,99,2,0,0,0,0,0,0,136,233,1,0,232,3,0,0,0,0,0,0,144,233,1,0,210,2,0,0,0,0,0,0,152,233,1,0,44,2,0,0,0,0,0,0,160,233,1,0,44,2,0,0,0,0,0,0,176,233,1,0,144,1,0,0,0,0,0,0,184,233,1,0,210,2,0,0,0,0,0,0,192,233,1,0,210,2,0,0,0,0,0,0,200,233,1,0,210,2,0,0,0,0,0,0,208,233,1,0,44,2,0,0,0,0,0,0,216,233,1,0,210,2,0,0,0,0,0,0,224,233,1,0,155,2,0,0,0,0,0,0,232,233,1,0,66,3,0,0,0,0,0,0,248,233,1,0,99,2,0,0,0,0,0,0,0,234,1,0,10,3,0,0,0,0,0,0,8,234,1,0,210,2,0,0,0,0,0,0,16,234,1,0,22,1,0,0,0,0,0,0,24,234,1,0,44,2,0,0,0,0,0,0,32,234,1,0,210,2,0,0,0,0,0,0,40,234,1,0,22,1,0,0,0,0,0,0,48,234,1,0,22,1,0,0,0,0,0,0,64,234,1,0,99,2,0,0,0,0,0,0,72,234,1,0,22,1,0,0,0,0,0,0,88,234,1,0,65,3,0,0,0,0,0,0,96,234,1,0,210,2,0,0,0,0,0,0,104,234,1,0,99,2,0,0,0,0,0,0,112,234,1,0,99,2,0,0,0,0,0,0,128,234,1,0,10,3,0,0,0,0,0,0,136,234,1,0,155,2,0,0,0,0,0,0,144,234,1,0,10,3,0,0,0,0,0,0,152,234,1,0,210,2,0,0,0,0,0,0,168,234,1,0,210,2,0,0,0,0,0,0,176,234,1,0,210,2,0,0,0,0,0,0,184,234,1,0,77,1,0,0,0,0,0,0,192,234,1,0,155,2,0,0,0,0,0,0,200,234,1,0,99,2,0,0,0,0,0,0,208,234,1,0,210,2,0,0,0,0,0,0,216,234,1,0,44,2,0,0,0,0,0,0,224,234,1,0,155,2,0,0,0,0,0,0,232,234,1,0,176,3,0,0,0,0,0,0,240,234,1,0,155,2,0,0,0,0,0,0,248,234,1,0,99,2,0,0,0,0,0,0,8,235,1,0,72,2,0,0,0,0,0,0,16,235,1,0,155,2,0,0,0,0,0,0,24,235,1,0,99,2,0,0,0,0,0,0,32,235,1,0,44,2,0,0,0,0,0,0,40,235,1,0,44,2,0,0,0,0,0,0,48,235,1,0,10,3,0,0,0,0,0,0,64,235,1,0,99,2,0,0,0,0,0,0,72,235,1,0,44,2,0,0,0,0,0,0,80,235,1,0,99,2,0,0,0,0,0,0,88,235,1,0,44,2,0,0,0,0,0,0,96,235,1,0,77,1,0,0,0,0,0,0,104,235,1,0,99,2,0,0,0,0,0,0,112,235,1,0,94,1,0,0,0,0,0,0,120,235,1,0,99,2,0,0,0,0,0,0,128,235,1,0,22,1,0,0,0,0,0,0,136,235,1,0,10,3,0,0,0,0,0,0,144,235,1,0,44,2,0,0,0,0,0,0,152,235,1,0,22,1,0,0,0,0,0,0,160,235,1,0,44,2,0,0,0,0,0,0,168,235,1,0,22,1,0,0,0,0,0,0,176,235,1,0,121,3,0,0,0,0,0,0,184,235,1,0,99,2,0,0,0,0,0,0,192,235,1,0,77,1,0,0,0,0,0,0,208,235,1,0,99,2,0,0,0,0,0,0,216,235,1,0,114,1,0,0,0,0,0,0,232,235,1,0,77,1,0,0,0,0,0,0,240,235,1,0,99,2,0,0,0,0,0,0,248,235,1,0,99,2,0,0,0,0,0,0,0,236,1,0,99,2,0,0,0,0,0,0,16,236,1,0,133,1,0,0,0,0,0,0,24,236,1,0,77,1,0,0,0,0,0,0,40,236,1,0,44,2,0,0,0,0,0,0,48,236,1,0,44,2,0,0,0,0,0,0,56,236,1,0,232,3,0,0,0,0,0,0,64,236,1,0,77,1,0,0,0,0,0,0,72,236,1,0,72,2,0,0,0,0,0,0,80,236,1,0,99,2,0,0,0,0,0,0,88,236,1,0,210,2,0,0,0,0,0,0,96,236,1,0,44,2,0,0,0,0,0,0,104,236,1,0,10,3,0,0,0,0,0,0,112,236,1,0,44,2,0,0,0,0,0,0,120,236,1,0,44,2,0,0,0,0,0,0,128,236,1,0,244,1,0,0,0,0,0,0,136,236,1,0,10,3,0,0,0,0,0,0,144,236,1,0,250,0,0,0,0,0,0,0,160,236,1,0,77,1,0,0,0,0,0,0,176,236,1,0,22,1,0,0,0,0,0,0,192,236,1,0,210,2,0,0,0,0,0,0,200,236,1,0,218,1,0,0,0,0,0,0,216,236,1,0,99,2,0,0,0,0,0,0,232,236,1,0,99,2,0,0,0,0,0,0,240,236,1,0,37,2,0,0,0,0,0,0,0,237,1,0,155,2,0,0,0,0,0,0,8,237,1,0,99,2,0,0,0,0,0,0,16,237,1,0,77,1,0,0,0,0,0,0,32,237,1,0,99,2,0,0,0,0,0,0,40,237,1,0,37,2,0,0,0,0,0,0,56,237,1,0,238,1,0,0,0,0,0,0,64,237,1,0,77,1,0,0,0,0,0,0,80,237,1,0,44,2,0,0,0,0,0,0,88,237,1,0,155,2,0,0,0,0,0,0,104,237,1,0,99,2,0,0,0,0,0,0,112,237,1,0,232,3,0,0,0,0,0,0,128,237,1,0,44,2,0,0,0,0,0,0,144,237,1,0,99,2,0,0,0,0,0,0,152,237,1,0,77,1,0,0,0,0,0,0,160,237,1,0,10,3,0,0,0,0,0,0,168,237,1,0,155,2,0,0,0,0,0,0,176,237,1,0,232,3,0,0,0,0,0,0,192,237,1,0,44,2,0,0,0,0,0,0,200,237,1,0,232,3,0,0,0,0,0,0,208,237,1,0,210,2,0,0,0,0,0,0,224,237,1,0,22,1,0,0,0,0,0,0,232,237,1,0,244,1,0,0,0,0,0,0,248,237,1,0,77,1,0,0,0,0,0,0,8,238,1,0,77,1,0,0,0,0,0,0,16,238,1,0,238,0,0,0,0,0,0,0,32,238,1,0,44,2,0,0,0,0,0,0,40,238,1,0,77,1,0,0,0,0,0,0,56,238,1,0,44,2,0,0,0,0,0,0,64,238,1,0,176,3,0,0,0,0,0,0,72,238,1,0,210,2,0,0,0,0,0,0,80,238,1,0,210,2,0,0,0,0,0,0,88,238,1,0,44,2,0,0,0,0,0,0,104,238,1,0,210,2,0,0,0,0,0,0,120,238,1,0,225,2,0,0,0,0,0,0,136,238,1,0,155,2,0,0,0,0,0,0,144,238,1,0,22,1,0,0,0,0,0,0,152,238,1,0,155,2,0,0,0,0,0,0,168,238,1,0,99,2,0,0,0,0,0,0,176,238,1,0,22,1,0,0,0,0,0,0,192,238,1,0,77,1,0,0,0,0,0,0,208,238,1,0,44,2,0,0,0,0,0,0,216,238,1,0,44,2,0,0,0,0,0,0,224,238,1,0,10,3,0,0,0,0,0,0,240,238,1,0,99,2,0,0,0,0,0,0,0,239,1,0,77,1,0,0,0,0,0,0,16,239,1,0,210,2,0,0,0,0,0,0,24,239,1,0,22,1,0,0,0,0,0,0,40,239,1,0,210,2,0,0,0,0,0,0,56,239,1,0,232,3,0,0,0,0,0,0,72,239,1,0,155,2,0,0,0,0,0,0,88,239,1,0,99,2,0,0,0,0,0,0,96,239,1,0,44,2,0,0,0,0,0,0,104,239,1,0,155,2,0,0,0,0,0,0,112,239,1,0,44,2,0,0,0,0,0,0,128,239,1,0,44,2,0,0,0,0,0,0,136,239,1,0,44,2,0,0,0,0,0,0,152,239,1,0,22,1,0,0,0,0,0,0,168,239,1,0,210,2,0,0,0,0,0,0,176,239,1,0,121,3,0,0,0,0,0,0,184,239,1,0,133,1,0,0,0,0,0,0,200,239,1,0,99,2,0,0,0,0,0,0,216,239,1,0,210,2,0,0,0,0,0,0,224,239,1,0,99,2,0,0,0,0,0,0,232,239,1,0,44,2,0,0,0,0,0,0,240,239,1,0,44,2,0,0,0,0,0,0,248,239,1,0,99,2,0,0,0,0,0,0,8,240,1,0,99,2,0,0,0,0,0,0,16,240,1,0,155,2,0,0,0,0,0,0,32,240,1,0,66,3,0,0,0,0,0,0,48,240,1,0,44,2,0,0,0,0,0,0,64,240,1,0,210,2,0,0,0,0,0,0,80,240,1,0,44,2,0,0,0,0,0,0,96,240,1,0,77,1,0,0,0,0,0,0,104,240,1,0,207,3,0,0,0,0,0,0,112,240,1,0,44,2,0,0,0,0,0,0,120,240,1,0,44,2,0,0,0,0,0,0,136,240,1,0,44,2,0,0,0,0,0,0,144,240,1,0,210,2,0,0,0,0,0,0,152,240,1,0,72,2,0,0,0,0,0,0,168,240,1,0,44,2,0,0,0,0,0,0,176,240,1,0,99,2,0,0,0,0,0,0,184,240,1,0,155,2,0,0,0,0,0,0,200,240,1,0,10,3,0,0,0,0,0,0,208,240,1,0,210,2,0,0,0,0,0,0,216,240,1,0,238,1,0,0,0,0,0,0,232,240,1,0,99,2,0,0,0,0,0,0,240,240,1,0,133,1,0,0,0,0,0,0,0,241,1,0,155,2,0,0,0,0,0,0,8,241,1,0,244,1,0,0,0,0,0,0,16,241,1,0,44,2,0,0,0,0,0,0,32,241,1,0,44,2,0,0,0,0,0,0,48,241,1,0,210,2,0,0,0,0,0,0,56,241,1,0,99,2,0,0,0,0,0,0,64,241,1,0,10,3,0,0,0,0,0,0,80,241,1,0,10,3,0,0,0,0,0,0,88,241,1,0,44,2,0,0,0,0,0,0,104,241,1,0,77,1,0,0,0,0,0,0,112,241,1,0,99,2,0,0,0,0,0,0,120,241,1,0,133,1,0,0,0,0,0,0,128,241,1,0,99,2,0,0,0,0,0,0,136,241,1,0,155,2,0,0,0,0,0,0,144,241,1,0,99,2,0,0,0,0,0,0,152,241,1,0,144,1,0,0,0,0,0,0,160,241,1,0,225,2,0,0,0,0,0,0,176,241,1,0,37,2,0,0,0,0,0,0,184,241,1,0,210,2,0,0,0,0,0,0,192,241,1,0,121,3,0,0,0,0,0,0,200,241,1,0,44,2,0,0,0,0,0,0,208,241,1,0,44,2,0,0,0,0,0,0,224,241,1,0,231,2,0,0,0,0,0,0,232,241,1,0,210,2,0,0,0,0,0,0,240,241,1,0,44,2,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,22,1,0,0,0,0,0,0,16,242,1,0,99,2,0,0,0,0,0,0,24,242,1,0,99,2,0,0,0,0,0,0,40,242,1,0,99,2,0,0,0,0,0,0,48,242,1,0,210,2,0,0,0,0,0,0,56,242,1,0,99,2,0,0,0,0,0,0,72,242,1,0,133,1,0,0,0,0,0,0,80,242,1,0,44,2,0,0,0,0,0,0,88,242,1,0,100,2,0,0,0,0,0,0,96,242,1,0,10,3,0,0,0,0,0,0,112,242,1,0,72,2,0,0,0,0,0,0,128,242,1,0,44,2,0,0,0,0,0,0,136,242,1,0,77,1,0,0,0,0,0,0,144,242,1,0,99,2,0,0,0,0,0,0,152,242,1,0,77,1,0,0,0,0,0,0,168,242,1,0,22,1,0,0,0,0,0,0,176,242,1,0,210,2,0,0,0,0,0,0,192,242,1,0,22,1,0,0,0,0,0,0,200,242,1,0,22,1,0,0,0,0,0,0,208,242,1,0,210,2,0,0,0,0,0,0,216,242,1,0,72,2,0,0,0,0,0,0,224,242,1,0,99,2,0,0,0,0,0,0,232,242,1,0,22,1,0,0,0,0,0,0,248,242,1,0,22,1,0,0,0,0,0,0,8,243,1,0,155,2,0,0,0,0,0,0,16,243,1,0,99,2,0,0,0,0,0,0,32,243,1,0,77,1,0,0,0,0,0,0,48,243,1,0,77,1,0,0,0,0,0,0,56,243,1,0,44,2,0,0,0,0,0,0,64,243,1,0,77,1,0,0,0,0,0,0,80,243,1,0,22,1,0,0,0,0,0,0,88,243,1,0,244,1,0,0,0,0,0,0,104,243,1,0,99,2,0,0,0,0,0,0,112,243,1,0,44,2,0,0,0,0,0,0,120,243,1,0,44,2,0,0,0,0,0,0,128,243,1,0,210,2,0,0,0,0,0,0,144,243,1,0,99,2,0,0,0,0,0,0,152,243,1,0,99,2,0,0,0,0,0,0,160,243,1,0,210,2,0,0,0,0,0,0,176,243,1,0,210,2,0,0,0,0,0,0,184,243,1,0,22,1,0,0,0,0,0,0,200,243,1,0,44,2,0,0,0,0,0,0,216,243,1,0,99,2,0,0,0,0,0,0,232,243,1,0,210,2,0,0,0,0,0,0,240,243,1,0,44,2,0,0,0,0,0,0,248,243,1,0,155,2,0,0,0,0,0,0,0,244,1,0,109,1,0,0,0,0,0,0,16,244,1,0,22,1,0,0,0,0,0,0,32,244,1,0,44,2,0,0,0,0,0,0,48,244,1,0,37,2,0,0,0,0,0,0,64,244,1,0,22,1,0,0,0,0,0,0,72,244,1,0,133,1,0,0,0,0,0,0,88,244,1,0,99,2,0,0,0,0,0,0,104,244,1,0,44,2,0,0,0,0,0,0,120,244,1,0,44,2,0,0,0,0,0,0,128,244,1,0,155,2,0,0,0,0,0,0,136,244,1,0,22,1,0,0,0,0,0,0,152,244,1,0,133,1,0,0,0,0,0,0,168,244,1,0,244,1,0,0,0,0,0,0,184,244,1,0,44,2,0,0,0,0,0,0,192,244,1,0,44,2,0,0,0,0,0,0,200,244,1,0,22,1,0,0,0,0,0,0,208,244,1,0,44,2,0,0,0,0,0,0,216,244,1,0,44,2,0,0,0,0,0,0,232,244,1,0,72,2,0,0,0,0,0,0,248,244,1,0,244,1,0,0,0,0,0,0,8,245,1,0,210,2,0,0,0,0,0,0,16,245,1,0,77,1,0,0,0,0,0,0,24,245,1,0,24,1,0,0,0,0,0,0,32,245,1,0,167,0,0,0,0,0,0,0,48,245,1,0,72,2,0,0,0,0,0,0,56,245,1,0,44,2,0,0,0,0,0,0,64,245,1,0,77,1,0,0,0,0,0,0,80,245,1,0,77,1,0,0,0,0,0,0,88,245,1,0,22,1,0,0,0,0,0,0,96,245,1,0,210,2,0,0,0,0,0,0,104,245,1,0,210,2,0,0,0,0,0,0,120,245,1,0,72,2,0,0,0,0,0,0,128,245,1,0,44,2,0,0,0,0,0,0,136,245,1,0,24,1,0,0,0,0,0,0,152,245,1,0,22,1,0,0,0,0,0,0,168,245,1,0,155,2,0,0,0,0,0,0,184,245,1,0,77,1,0,0,0,0,0,0,0,0,0,0,120,232,1,0,210,2,0,0,0,0,0,0,128,232,1,0,77,1,0,0,0,0,0,0,136,232,1,0,244,1,0,0,0,0,0,0,152,232,1,0,210,2,0,0,0,0,0,0,168,232,1,0,99,2,0,0,0,0,0,0,176,232,1,0,22,1,0,0,0,0,0,0,184,232,1,0,77,1,0,0,0,0,0,0,192,232,1,0,72,2,0,0,0,0,0,0,208,232,1,0,77,1,0,0,0,0,0,0,224,232,1,0,77,1,0,0,0,0,0,0,240,232,1,0,44,2,0,0,0,0,0,0,0,233,1,0,72,2,0,0,0,0,0,0,16,233,1,0,22,1,0,0,0,0,0,0,24,233,1,0,66,3,0,0,0,0,0,0,32,233,1,0,44,2,0,0,0,0,0,0,40,233,1,0,44,2,0,0,0,0,0,0,48,233,1,0,44,2,0,0,0,0,0,0,56,233,1,0,155,2,0,0,0,0,0,0,64,233,1,0,44,2,0,0,0,0,0,0,80,233,1,0,72,2,0,0,0,0,0,0,88,233,1,0,22,1,0,0,0,0,0,0,96,233,1,0,244,1,0,0,0,0,0,0,104,233,1,0,44,2,0,0,0,0,0,0,216,226,1,0,22,1,0,0,0,0,0,0,112,233,1,0,10,3,0,0,0,0,0,0,120,233,1,0,99,2,0,0,0,0,0,0,136,233,1,0,232,3,0,0,0,0,0,0,144,233,1,0,155,2,0,0,0,0,0,0,152,233,1,0,44,2,0,0,0,0,0,0,160,233,1,0,44,2,0,0,0,0,0,0,176,233,1,0,43,1,0,0,0,0,0,0,184,233,1,0,155,2,0,0,0,0,0,0,192,233,1,0,155,2,0,0,0,0,0,0,200,233,1,0,210,2,0,0,0,0,0,0,208,233,1,0,44,2,0,0,0,0,0,0,216,233,1,0,210,2,0,0,0,0,0,0,224,233,1,0,155,2,0,0,0,0,0,0,232,233,1,0,66,3,0,0,0,0,0,0,248,233,1,0,99,2,0,0,0,0,0,0,0,234,1,0,10,3,0,0,0,0,0,0,8,234,1,0,210,2,0,0,0,0,0,0,16,234,1,0,22,1,0,0,0,0,0,0,24,234,1,0,244,1,0,0,0,0,0,0,32,234,1,0,155,2,0,0,0,0,0,0,40,234,1,0,222,0,0,0,0,0,0,0,48,234,1,0,22,1,0,0,0,0,0,0,64,234,1,0,44,2,0,0,0,0,0,0,72,234,1,0,22,1,0,0,0,0,0,0,88,234,1,0,65,3,0,0,0,0,0,0,96,234,1,0,210,2,0,0,0,0,0,0,104,234,1,0,44,2,0,0,0,0,0,0,112,234,1,0,99,2,0,0,0,0,0,0,128,234,1,0,10,3,0,0,0,0,0,0,136,234,1,0,155,2,0,0,0,0,0,0,144,234,1,0,10,3,0,0,0,0,0,0,152,234,1,0,210,2,0,0,0,0,0,0,168,234,1,0,210,2,0,0,0,0,0,0,176,234,1,0,155,2,0,0,0,0,0,0,184,234,1,0,77,1,0,0,0,0,0,0,192,234,1,0,155,2,0,0,0,0,0,0,200,234,1,0,99,2,0,0,0,0,0,0,208,234,1,0,210,2,0,0,0,0,0,0,216,234,1,0,44,2,0,0,0,0,0,0,224,234,1,0,155,2,0,0,0,0,0,0,232,234,1,0,176,3,0,0,0,0,0,0,240,234,1,0,155,2,0,0,0,0,0,0,248,234,1,0,44,2,0,0,0,0,0,0,8,235,1,0,72,2,0,0,0,0,0,0,16,235,1,0,155,2,0,0,0,0,0,0,24,235,1,0,99,2,0,0,0,0,0,0,32,235,1,0,44,2,0,0,0,0,0,0,40,235,1,0,44,2,0,0,0,0,0,0,48,235,1,0,10,3,0,0,0,0,0,0,64,235,1,0,44,2,0,0,0,0,0,0,72,235,1,0,244,1,0,0,0,0,0,0,80,235,1,0,44,2,0,0,0,0,0,0,88,235,1,0,44,2,0,0,0,0,0,0,96,235,1,0,22,1,0,0,0,0,0,0,104,235,1,0,44,2,0,0,0,0,0,0,112,235,1,0,94,1,0,0,0,0,0,0,120,235,1,0,44,2,0,0,0,0,0,0,128,235,1,0,222,0,0,0,0,0,0,0,136,235,1,0,10,3,0,0,0,0,0,0,144,235,1,0,44,2,0,0,0,0,0,0,152,235,1,0,222,0,0,0,0,0,0,0,160,235,1,0,244,1,0,0,0,0,0,0,168,235,1,0,222,0,0,0,0,0,0,0,176,235,1,0,65,3,0,0,0,0,0,0,184,235,1,0,44,2,0,0,0,0,0,0,192,235,1,0,22,1,0,0,0,0,0,0,208,235,1,0,44,2,0,0,0,0,0,0,216,235,1,0,114,1,0,0,0,0,0,0,232,235,1,0,77,1,0,0,0,0,0,0,240,235,1,0,44,2,0,0,0,0,0,0,248,235,1,0,44,2,0,0,0,0,0,0,0,236,1,0,44,2,0,0,0,0,0,0,16,236,1,0,77,1,0,0,0,0,0,0,24,236,1,0,77,1,0,0,0,0,0,0,40,236,1,0,44,2,0,0,0,0,0,0,48,236,1,0,244,1,0,0,0,0,0,0,56,236,1,0,232,3,0,0,0,0,0,0,64,236,1,0,22,1,0,0,0,0,0,0,72,236,1,0,72,2,0,0,0,0,0,0,80,236,1,0,44,2,0,0,0,0,0,0,88,236,1,0,210,2,0,0,0,0,0,0,96,236,1,0,244,1,0,0,0,0,0,0,104,236,1,0,210,2,0,0,0,0,0,0,112,236,1,0,244,1,0,0,0,0,0,0,120,236,1,0,244,1,0,0,0,0,0,0,128,236,1,0,244,1,0,0,0,0,0,0,136,236,1,0,10,3,0,0,0,0,0,0,144,236,1,0,250,0,0,0,0,0,0,0,160,236,1,0,77,1,0,0,0,0,0,0,176,236,1,0,22,1,0,0,0,0,0,0,192,236,1,0,210,2,0,0,0,0,0,0,200,236,1,0,99,1,0,0,0,0,0,0,216,236,1,0,44,2,0,0,0,0,0,0,232,236,1,0,44,2,0,0,0,0,0,0,240,236,1,0,37,2,0,0,0,0,0,0,0,237,1,0,155,2,0,0,0,0,0,0,8,237,1,0,44,2,0,0,0,0,0,0,16,237,1,0,22,1,0,0,0,0,0,0,32,237,1,0,99,2,0,0,0,0,0,0,40,237,1,0,37,2,0,0,0,0,0,0,56,237,1,0,215,1,0,0,0,0,0,0,64,237,1,0,77,1,0,0,0,0,0,0,80,237,1,0,244,1,0,0,0,0,0,0,88,237,1,0,155,2,0,0,0,0,0,0,104,237,1,0,44,2,0,0,0,0,0,0,112,237,1,0,232,3,0,0,0,0,0,0,128,237,1,0,44,2,0,0,0,0,0,0,144,237,1,0,44,2,0,0,0,0,0,0,152,237,1,0,77,1,0,0,0,0,0,0,160,237,1,0,10,3,0,0,0,0,0,0,168,237,1,0,155,2,0,0,0,0,0,0,176,237,1,0,232,3,0,0,0,0,0,0,192,237,1,0,244,1,0,0,0,0,0,0,200,237,1,0,232,3,0,0,0,0,0,0,208,237,1,0,210,2,0,0,0,0,0,0,224,237,1,0,222,0,0,0,0,0,0,0,232,237,1,0,77,1,0,0,0,0,0,0,248,237,1,0,77,1,0,0,0,0,0,0,8,238,1,0,77,1,0,0,0,0,0,0,16,238,1,0,191,0,0,0,0,0,0,0,32,238,1,0,44,2,0,0,0,0,0,0,40,238,1,0,77,1,0,0,0,0,0,0,56,238,1,0,44,2,0,0,0,0,0,0,64,238,1,0,176,3,0,0,0,0,0,0,72,238,1,0,155,2,0,0,0,0,0,0,80,238,1,0,210,2,0,0,0,0,0,0,88,238,1,0,44,2,0,0,0,0,0,0,104,238,1,0,155,2,0,0,0,0,0,0,120,238,1,0,225,2,0,0,0,0,0,0,136,238,1,0,155,2,0,0,0,0,0,0,144,238,1,0,22,1,0,0,0,0,0,0,152,238,1,0,155,2,0,0,0,0,0,0,168,238,1,0,44,2,0,0,0,0,0,0,176,238,1,0,22,1,0,0,0,0,0,0,192,238,1,0,77,1,0,0,0,0,0,0,208,238,1,0,44,2,0,0,0,0,0,0,216,238,1,0,44,2,0,0,0,0,0,0,224,238,1,0,10,3,0,0,0,0,0,0,240,238,1,0,44,2,0,0,0,0,0,0,0,239,1,0,22,1,0,0,0,0,0,0,16,239,1,0,210,2,0,0,0,0,0,0,24,239,1,0,222,0,0,0,0,0,0,0,40,239,1,0,210,2,0,0,0,0,0,0,56,239,1,0,232,3,0,0,0,0,0,0,72,239,1,0,155,2,0,0,0,0,0,0,88,239,1,0,44,2,0,0,0,0,0,0,96,239,1,0,44,2,0,0,0,0,0,0,104,239,1,0,155,2,0,0,0,0,0,0,112,239,1,0,44,2,0,0,0,0,0,0,128,239,1,0,44,2,0,0,0,0,0,0,136,239,1,0,44,2,0,0,0,0,0,0,152,239,1,0,22,1,0,0,0,0,0,0,168,239,1,0,210,2,0,0,0,0,0,0,176,239,1,0,121,3,0,0,0,0,0,0,184,239,1,0,133,1,0,0,0,0,0,0,200,239,1,0,44,2,0,0,0,0,0,0,216,239,1,0,210,2,0,0,0,0,0,0,224,239,1,0,44,2,0,0,0,0,0,0,232,239,1,0,44,2,0,0,0,0,0,0,240,239,1,0,44,2,0,0,0,0,0,0,248,239,1,0,44,2,0,0,0,0,0,0,8,240,1,0,99,2,0,0,0,0,0,0,16,240,1,0,155,2,0,0,0,0,0,0,32,240,1,0,66,3,0,0,0,0,0,0,48,240,1,0,44,2,0,0,0,0,0,0,64,240,1,0,210,2,0,0,0,0,0,0,80,240,1,0,244,1,0,0,0,0,0,0,96,240,1,0,77,1,0,0,0,0,0,0,104,240,1,0,247,3,0,0,0,0,0,0,112,240,1,0,44,2,0,0,0,0,0,0,120,240,1,0,44,2,0,0,0,0,0,0,136,240,1,0,44,2,0,0,0,0,0,0,144,240,1,0,210,2,0,0,0,0,0,0,152,240,1,0,72,2,0,0,0,0,0,0,168,240,1,0,44,2,0,0,0,0,0,0,176,240,1,0,44,2,0,0,0,0,0,0,184,240,1,0,155,2,0,0,0,0,0,0,200,240,1,0,10,3,0,0,0,0,0,0,208,240,1,0,210,2,0,0,0,0,0,0,216,240,1,0,220,1,0,0,0,0,0,0,232,240,1,0,44,2,0,0,0,0,0,0,240,240,1,0,78,1,0,0,0,0,0,0,0,241,1,0,155,2,0,0,0,0,0,0,8,241,1,0,244,1,0,0,0,0,0,0,16,241,1,0,244,1,0,0,0,0,0,0,32,241,1,0,244,1,0,0,0,0,0,0,48,241,1,0,210,2,0,0,0,0,0,0,56,241,1,0,44,2,0,0,0,0,0,0,64,241,1,0,10,3,0,0,0,0,0,0,80,241,1,0,10,3,0,0,0,0,0,0,88,241,1,0,244,1,0,0,0,0,0,0,104,241,1,0,77,1,0,0,0,0,0,0,112,241,1,0,44,2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+92160); -/* memory initializer */ allocate([120,241,1,0,77,1,0,0,0,0,0,0,128,241,1,0,99,2,0,0,0,0,0,0,136,241,1,0,155,2,0,0,0,0,0,0,144,241,1,0,44,2,0,0,0,0,0,0,152,241,1,0,144,1,0,0,0,0,0,0,160,241,1,0,225,2,0,0,0,0,0,0,176,241,1,0,197,1,0,0,0,0,0,0,184,241,1,0,155,2,0,0,0,0,0,0,192,241,1,0,121,3,0,0,0,0,0,0,200,241,1,0,44,2,0,0,0,0,0,0,208,241,1,0,25,2,0,0,0,0,0,0,224,241,1,0,131,2,0,0,0,0,0,0,232,241,1,0,210,2,0,0,0,0,0,0,240,241,1,0,44,2,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,22,1,0,0,0,0,0,0,16,242,1,0,44,2,0,0,0,0,0,0,24,242,1,0,44,2,0,0,0,0,0,0,40,242,1,0,44,2,0,0,0,0,0,0,48,242,1,0,210,2,0,0,0,0,0,0,56,242,1,0,44,2,0,0,0,0,0,0,72,242,1,0,61,1,0,0,0,0,0,0,80,242,1,0,44,2,0,0,0,0,0,0,88,242,1,0,100,2,0,0,0,0,0,0,96,242,1,0,10,3,0,0,0,0,0,0,112,242,1,0,213,1,0,0,0,0,0,0,128,242,1,0,44,2,0,0,0,0,0,0,136,242,1,0,77,1,0,0,0,0,0,0,144,242,1,0,44,2,0,0,0,0,0,0,152,242,1,0,22,1,0,0,0,0,0,0,168,242,1,0,22,1,0,0,0,0,0,0,176,242,1,0,155,2,0,0,0,0,0,0,192,242,1,0,22,1,0,0,0,0,0,0,200,242,1,0,222,0,0,0,0,0,0,0,208,242,1,0,210,2,0,0,0,0,0,0,216,242,1,0,72,2,0,0,0,0,0,0,224,242,1,0,44,2,0,0,0,0,0,0,232,242,1,0,222,0,0,0,0,0,0,0,248,242,1,0,222,0,0,0,0,0,0,0,8,243,1,0,155,2,0,0,0,0,0,0,16,243,1,0,44,2,0,0,0,0,0,0,32,243,1,0,77,1,0,0,0,0,0,0,48,243,1,0,77,1,0,0,0,0,0,0,56,243,1,0,44,2,0,0,0,0,0,0,64,243,1,0,77,1,0,0,0,0,0,0,80,243,1,0,22,1,0,0,0,0,0,0,88,243,1,0,77,1,0,0,0,0,0,0,104,243,1,0,44,2,0,0,0,0,0,0,112,243,1,0,44,2,0,0,0,0,0,0,120,243,1,0,244,1,0,0,0,0,0,0,128,243,1,0,210,2,0,0,0,0,0,0,144,243,1,0,244,1,0,0,0,0,0,0,152,243,1,0,244,1,0,0,0,0,0,0,160,243,1,0,155,2,0,0,0,0,0,0,176,243,1,0,210,2,0,0,0,0,0,0,184,243,1,0,22,1,0,0,0,0,0,0,200,243,1,0,44,2,0,0,0,0,0,0,216,243,1,0,99,2,0,0,0,0,0,0,232,243,1,0,155,2,0,0,0,0,0,0,240,243,1,0,44,2,0,0,0,0,0,0,248,243,1,0,155,2,0,0,0,0,0,0,0,244,1,0,109,1,0,0,0,0,0,0,16,244,1,0,22,1,0,0,0,0,0,0,32,244,1,0,44,2,0,0,0,0,0,0,48,244,1,0,37,2,0,0,0,0,0,0,64,244,1,0,22,1,0,0,0,0,0,0,72,244,1,0,77,1,0,0,0,0,0,0,88,244,1,0,99,2,0,0,0,0,0,0,104,244,1,0,44,2,0,0,0,0,0,0,120,244,1,0,244,1,0,0,0,0,0,0,128,244,1,0,155,2,0,0,0,0,0,0,136,244,1,0,22,1,0,0,0,0,0,0,152,244,1,0,78,1,0,0,0,0,0,0,168,244,1,0,77,1,0,0,0,0,0,0,184,244,1,0,44,2,0,0,0,0,0,0,192,244,1,0,244,1,0,0,0,0,0,0,200,244,1,0,22,1,0,0,0,0,0,0,208,244,1,0,44,2,0,0,0,0,0,0,216,244,1,0,44,2,0,0,0,0,0,0,232,244,1,0,72,2,0,0,0,0,0,0,248,244,1,0,244,1,0,0,0,0,0,0,8,245,1,0,155,2,0,0,0,0,0,0,16,245,1,0,77,1,0,0,0,0,0,0,24,245,1,0,4,1,0,0,0,0,0,0,32,245,1,0,167,0,0,0,0,0,0,0,48,245,1,0,72,2,0,0,0,0,0,0,56,245,1,0,44,2,0,0,0,0,0,0,64,245,1,0,77,1,0,0,0,0,0,0,80,245,1,0,22,1,0,0,0,0,0,0,88,245,1,0,22,1,0,0,0,0,0,0,96,245,1,0,210,2,0,0,0,0,0,0,104,245,1,0,155,2,0,0,0,0,0,0,120,245,1,0,72,2,0,0,0,0,0,0,128,245,1,0,44,2,0,0,0,0,0,0,136,245,1,0,4,1,0,0,0,0,0,0,152,245,1,0,222,0,0,0,0,0,0,0,168,245,1,0,155,2,0,0,0,0,0,0,184,245,1,0,77,1,0,0,0,0,0,0,0,0,0,0,200,245,1,0,128,1,0,0,0,0,0,0,216,245,1,0,119,2,0,0,0,0,0,0,224,245,1,0,0,3,0,0,0,0,0,0,232,245,1,0,201,2,0,0,0,0,0,0,176,232,1,0,250,0,0,0,0,0,0,0,248,245,1,0,22,3,0,0,0,0,0,0,192,232,1,0,37,2,0,0,0,0,0,0,8,246,1,0,91,2,0,0,0,0,0,0,16,246,1,0,22,3,0,0,0,0,0,0,24,246,1,0,128,1,0,0,0,0,0,0,40,246,1,0,201,2,0,0,0,0,0,0,16,233,1,0,22,1,0,0,0,0,0,0,56,246,1,0,37,2,0,0,0,0,0,0,64,246,1,0,238,1,0,0,0,0,0,0,80,246,1,0,174,2,0,0,0,0,0,0,88,246,1,0,251,2,0,0,0,0,0,0,80,233,1,0,37,2,0,0,0,0,0,0,216,226,1,0,250,0,0,0,0,0,0,0,96,246,1,0,80,2,0,0,0,0,0,0,104,246,1,0,37,2,0,0,0,0,0,0,120,246,1,0,247,0,0,0,0,0,0,0,128,246,1,0,0,3,0,0,0,0,0,0,144,246,1,0,210,2,0,0,0,0,0,0,152,233,1,0,244,1,0,0,0,0,0,0,160,233,1,0,244,1,0,0,0,0,0,0,152,246,1,0,37,2,0,0,0,0,0,0,160,246,1,0,9,2,0,0,0,0,0,0,168,246,1,0,55,3,0,0,0,0,0,0,176,246,1,0,99,2,0,0,0,0,0,0,184,246,1,0,241,2,0,0,0,0,0,0,192,246,1,0,91,2,0,0,0,0,0,0,208,246,1,0,91,2,0,0,0,0,0,0,216,246,1,0,201,2,0,0,0,0,0,0,232,246,1,0,37,2,0,0,0,0,0,0,248,234,1,0,188,1,0,0,0,0,0,0,8,235,1,0,37,2,0,0,0,0,0,0,240,246,1,0,99,2,0,0,0,0,0,0,248,246,1,0,55,3,0,0,0,0,0,0,8,247,1,0,241,2,0,0,0,0,0,0,32,235,1,0,244,1,0,0,0,0,0,0,16,247,1,0,121,3,0,0,0,0,0,0,24,247,1,0,128,1,0,0,0,0,0,0,40,247,1,0,241,2,0,0,0,0,0,0,112,235,1,0,204,1,0,0,0,0,0,0,48,247,1,0,0,3,0,0,0,0,0,0,56,247,1,0,183,1,0,0,0,0,0,0,64,247,1,0,178,2,0,0,0,0,0,0,72,247,1,0,238,1,0,0,0,0,0,0,88,247,1,0,241,2,0,0,0,0,0,0,72,236,1,0,37,2,0,0,0,0,0,0,96,247,1,0,183,1,0,0,0,0,0,0,104,247,1,0,91,2,0,0,0,0,0,0,120,247,1,0,128,1,0,0,0,0,0,0,240,236,1,0,37,2,0,0,0,0,0,0,232,236,1,0,64,2,0,0,0,0,0,0,136,247,1,0,210,2,0,0,0,0,0,0,144,247,1,0,95,3,0,0,0,0,0,0,160,247,1,0,201,2,0,0,0,0,0,0,176,247,1,0,174,2,0,0,0,0,0,0,16,237,1,0,22,1,0,0,0,0,0,0,184,247,1,0,201,2,0,0,0,0,0,0,192,247,1,0,64,2,0,0,0,0,0,0,200,247,1,0,37,2,0,0,0,0,0,0,216,247,1,0,174,2,0,0,0,0,0,0,40,237,1,0,37,2,0,0,0,0,0,0,232,247,1,0,91,2,0,0,0,0,0,0,56,237,1,0,238,1,0,0,0,0,0,0,240,247,1,0,122,3,0,0,0,0,0,0,64,237,1,0,77,1,0,0,0,0,0,0,0,248,1,0,201,2,0,0,0,0,0,0,16,248,1,0,183,1,0,0,0,0,0,0,24,248,1,0,9,2,0,0,0,0,0,0,32,248,1,0,91,2,0,0,0,0,0,0,40,248,1,0,73,1,0,0,0,0,0,0,176,237,1,0,232,3,0,0,0,0,0,0,56,248,1,0,44,2,0,0,0,0,0,0,64,248,1,0,128,1,0,0,0,0,0,0,80,248,1,0,244,1,0,0,0,0,0,0,32,238,1,0,244,1,0,0,0,0,0,0,96,248,1,0,73,1,0,0,0,0,0,0,112,248,1,0,91,2,0,0,0,0,0,0,128,248,1,0,37,2,0,0,0,0,0,0,144,248,1,0,229,2,0,0,0,0,0,0,152,248,1,0,0,3,0,0,0,0,0,0,168,248,1,0,0,3,0,0,0,0,0,0,144,238,1,0,22,1,0,0,0,0,0,0,176,248,1,0,22,3,0,0,0,0,0,0,192,238,1,0,77,1,0,0,0,0,0,0,208,238,1,0,244,1,0,0,0,0,0,0,192,248,1,0,155,1,0,0,0,0,0,0,0,239,1,0,77,1,0,0,0,0,0,0,200,248,1,0,37,2,0,0,0,0,0,0,208,248,1,0,0,3,0,0,0,0,0,0,224,248,1,0,210,2,0,0,0,0,0,0,232,248,1,0,9,2,0,0,0,0,0,0,240,248,1,0,37,2,0,0,0,0,0,0,248,248,1,0,174,2,0,0,0,0,0,0,8,249,1,0,210,2,0,0,0,0,0,0,16,249,1,0,55,3,0,0,0,0,0,0,232,239,1,0,244,1,0,0,0,0,0,0,240,239,1,0,244,1,0,0,0,0,0,0,24,249,1,0,201,2,0,0,0,0,0,0,40,249,1,0,128,1,0,0,0,0,0,0,56,249,1,0,18,3,0,0,0,0,0,0,72,249,1,0,250,0,0,0,0,0,0,0,80,249,1,0,174,2,0,0,0,0,0,0,96,249,1,0,37,2,0,0,0,0,0,0,104,249,1,0,128,1,0,0,0,0,0,0,120,249,1,0,91,2,0,0,0,0,0,0,120,240,1,0,244,1,0,0,0,0,0,0,136,240,1,0,238,2,0,0,0,0,0,0,152,240,1,0,37,2,0,0,0,0,0,0,168,240,1,0,244,1,0,0,0,0,0,0,216,240,1,0,238,1,0,0,0,0,0,0,128,249,1,0,0,3,0,0,0,0,0,0,136,249,1,0,219,3,0,0,0,0,0,0,240,240,1,0,224,1,0,0,0,0,0,0,152,249,1,0,128,1,0,0,0,0,0,0,168,249,1,0,27,3,0,0,0,0,0,0,184,249,1,0,99,2,0,0,0,0,0,0,192,249,1,0,238,1,0,0,0,0,0,0,200,249,1,0,91,2,0,0,0,0,0,0,216,249,1,0,91,2,0,0,0,0,0,0,232,249,1,0,174,2,0,0,0,0,0,0,152,241,1,0,144,1,0,0,0,0,0,0,248,249,1,0,77,1,0,0,0,0,0,0,0,250,1,0,146,2,0,0,0,0,0,0,176,241,1,0,37,2,0,0,0,0,0,0,16,250,1,0,244,1,0,0,0,0,0,0,192,241,1,0,65,3,0,0,0,0,0,0,32,250,1,0,238,1,0,0,0,0,0,0,200,241,1,0,244,1,0,0,0,0,0,0,240,241,1,0,244,1,0,0,0,0,0,0,40,250,1,0,219,3,0,0,0,0,0,0,248,241,1,0,201,2,0,0,0,0,0,0,56,250,1,0,128,1,0,0,0,0,0,0,72,250,1,0,146,2,0,0,0,0,0,0,88,250,1,0,183,1,0,0,0,0,0,0,104,250,1,0,91,2,0,0,0,0,0,0,88,242,1,0,100,2,0,0,0,0,0,0,120,250,1,0,73,1,0,0,0,0,0,0,128,250,1,0,232,3,0,0,0,0,0,0,144,250,1,0,128,1,0,0,0,0,0,0,152,242,1,0,77,1,0,0,0,0,0,0,176,242,1,0,10,3,0,0,0,0,0,0,216,242,1,0,37,2,0,0,0,0,0,0,160,250,1,0,201,2,0,0,0,0,0,0,176,250,1,0,238,1,0,0,0,0,0,0,184,250,1,0,22,3,0,0,0,0,0,0,200,250,1,0,238,1,0,0,0,0,0,0,216,250,1,0,219,3,0,0,0,0,0,0,232,250,1,0,155,1,0,0,0,0,0,0,240,250,1,0,18,4,0,0,0,0,0,0,112,243,1,0,244,1,0,0,0,0,0,0,0,251,1,0,27,3,0,0,0,0,0,0,8,251,1,0,238,1,0,0,0,0,0,0,24,251,1,0,128,1,0,0,0,0,0,0,240,243,1,0,244,1,0,0,0,0,0,0,40,251,1,0,238,1,0,0,0,0,0,0,48,244,1,0,37,2,0,0,0,0,0,0,56,251,1,0,174,2,0,0,0,0,0,0,64,251,1,0,37,2,0,0,0,0,0,0,80,251,1,0,201,2,0,0,0,0,0,0,96,251,1,0,219,3,0,0,0,0,0,0,152,244,1,0,224,1,0,0,0,0,0,0,112,251,1,0,201,2,0,0,0,0,0,0,128,251,1,0,133,2,0,0,0,0,0,0,136,251,1,0,119,2,0,0,0,0,0,0,232,244,1,0,201,2,0,0,0,0,0,0,144,251,1,0,210,2,0,0,0,0,0,0,152,251,1,0,37,2,0,0,0,0,0,0,24,245,1,0,200,0,0,0,0,0,0,0,32,245,1,0,167,0,0,0,0,0,0,0,48,245,1,0,37,2,0,0,0,0,0,0,160,251,1,0,22,3,0,0,0,0,0,0,176,251,1,0,201,2,0,0,0,0,0,0,80,245,1,0,77,1,0,0,0,0,0,0,184,251,1,0,108,2,0,0,0,0,0,0,200,251,1,0,238,1,0,0,0,0,0,0,216,251,1,0,237,1,0,0,0,0,0,0,88,245,1,0,250,0,0,0,0,0,0,0,224,251,1,0,210,2,0,0,0,0,0,0,232,251,1,0,219,3,0,0,0,0,0,0,120,245,1,0,37,2,0,0,0,0,0,0,248,251,1,0,128,1,0,0,0,0,0,0,8,252,1,0,37,2,0,0,0,0,0,0,16,252,1,0,201,2,0,0,0,0,0,0,32,252,1,0,18,1,0,0,0,0,0,0,48,252,1,0,18,4,0,0,0,0,0,0,64,252,1,0,155,2,0,0,0,0,0,0,120,232,1,0,210,2,0,0,0,0,0,0,128,232,1,0,188,1,0,0,0,0,0,0,136,232,1,0,44,2,0,0,0,0,0,0,152,232,1,0,210,2,0,0,0,0,0,0,168,232,1,0,155,2,0,0,0,0,0,0,176,232,1,0,250,0,0,0,0,0,0,0,184,232,1,0,77,1,0,0,0,0,0,0,192,232,1,0,58,2,0,0,0,0,0,0,208,232,1,0,77,1,0,0,0,0,0,0,224,232,1,0,77,1,0,0,0,0,0,0,240,232,1,0,188,1,0,0,0,0,0,0,0,233,1,0,8,2,0,0,0,0,0,0,16,233,1,0,77,1,0,0,0,0,0,0,24,233,1,0,238,2,0,0,0,0,0,0,32,233,1,0,244,1,0,0,0,0,0,0,40,233,1,0,155,2,0,0,0,0,0,0,48,233,1,0,44,2,0,0,0,0,0,0,56,233,1,0,210,2,0,0,0,0,0,0,64,233,1,0,44,2,0,0,0,0,0,0,80,233,1,0,58,2,0,0,0,0,0,0,88,233,1,0,133,1,0,0,0,0,0,0,96,233,1,0,188,1,0,0,0,0,0,0,104,233,1,0,244,1,0,0,0,0,0,0,216,226,1,0,250,0,0,0,0,0,0,0,112,233,1,0,10,3,0,0,0,0,0,0,120,233,1,0,244,1,0,0,0,0,0,0,136,233,1,0,232,3,0,0,0,0,0,0,144,233,1,0,210,2,0,0,0,0,0,0,152,233,1,0,244,1,0,0,0,0,0,0,160,233,1,0,244,1,0,0,0,0,0,0,176,233,1,0,138,1,0,0,0,0,0,0,184,233,1,0,210,2,0,0,0,0,0,0,192,233,1,0,155,2,0,0,0,0,0,0,200,233,1,0,210,2,0,0,0,0,0,0,208,233,1,0,244,1,0,0,0,0,0,0,216,233,1,0,210,2,0,0,0,0,0,0,224,233,1,0,155,2,0,0,0,0,0,0,232,233,1,0,238,2,0,0,0,0,0,0,248,233,1,0,99,2,0,0,0,0,0,0,0,234,1,0,10,3,0,0,0,0,0,0,8,234,1,0,10,3,0,0,0,0,0,0,16,234,1,0,133,1,0,0,0,0,0,0,24,234,1,0,244,1,0,0,0,0,0,0,32,234,1,0,10,3,0,0,0,0,0,0,40,234,1,0,22,1,0,0,0,0,0,0,48,234,1,0,22,1,0,0,0,0,0,0,64,234,1,0,155,2,0,0,0,0,0,0,72,234,1,0,250,0,0,0,0,0,0,0,88,234,1,0,176,3,0,0,0,0,0,0,96,234,1,0,210,2,0,0,0,0,0,0,104,234,1,0,244,1,0,0,0,0,0,0,112,234,1,0,155,2,0,0,0,0,0,0,128,234,1,0,10,3,0,0,0,0,0,0,136,234,1,0,99,2,0,0,0,0,0,0,144,234,1,0,10,3,0,0,0,0,0,0,152,234,1,0,210,2,0,0,0,0,0,0,168,234,1,0,210,2,0,0,0,0,0,0,176,234,1,0,210,2,0,0,0,0,0,0,184,234,1,0,77,1,0,0,0,0,0,0,192,234,1,0,44,2,0,0,0,0,0,0,200,234,1,0,155,2,0,0,0,0,0,0,208,234,1,0,210,2,0,0,0,0,0,0,216,234,1,0,244,1,0,0,0,0,0,0,224,234,1,0,210,2,0,0,0,0,0,0,232,234,1,0,232,3,0,0,0,0,0,0,240,234,1,0,210,2,0,0,0,0,0,0,248,234,1,0,244,1,0,0,0,0,0,0,8,235,1,0,58,2,0,0,0,0,0,0,16,235,1,0,210,2,0,0,0,0,0,0,24,235,1,0,155,2,0,0,0,0,0,0,32,235,1,0,244,1,0,0,0,0,0,0,40,235,1,0,244,1,0,0,0,0,0,0,48,235,1,0,10,3,0,0,0,0,0,0,64,235,1,0,44,2,0,0,0,0,0,0,72,235,1,0,188,1,0,0,0,0,0,0,80,235,1,0,44,2,0,0,0,0,0,0,88,235,1,0,188,1,0,0,0,0,0,0,96,235,1,0,77,1,0,0,0,0,0,0,104,235,1,0,244,1,0,0,0,0,0,0,112,235,1,0,94,1,0,0,0,0,0,0,120,235,1,0,44,2,0,0,0,0,0,0,128,235,1,0,22,1,0,0,0,0,0,0,136,235,1,0,10,3,0,0,0,0,0,0,144,235,1,0,244,1,0,0,0,0,0,0,152,235,1,0,77,1,0,0,0,0,0,0,160,235,1,0,44,2,0,0,0,0,0,0,168,235,1,0,22,1,0,0,0,0,0,0,176,235,1,0,65,3,0,0,0,0,0,0,184,235,1,0,44,2,0,0,0,0,0,0,192,235,1,0,77,1,0,0,0,0,0,0,208,235,1,0,244,1,0,0,0,0,0,0,216,235,1,0,44,1,0,0,0,0,0,0,232,235,1,0,77,1,0,0,0,0,0,0,240,235,1,0,44,2,0,0,0,0,0,0,248,235,1,0,44,2,0,0,0,0,0,0,0,236,1,0,44,2,0,0,0,0,0,0,16,236,1,0,188,1,0,0,0,0,0,0,24,236,1,0,44,1,0,0,0,0,0,0,40,236,1,0,244,1,0,0,0,0,0,0,48,236,1,0,133,1,0,0,0,0,0,0,56,236,1,0,232,3,0,0,0,0,0,0,64,236,1,0,77,1,0,0,0,0,0,0,72,236,1,0,58,2,0,0,0,0,0,0,80,236,1,0,44,2,0,0,0,0,0,0,88,236,1,0,210,2,0,0,0,0,0,0,96,236,1,0,244,1,0,0,0,0,0,0,104,236,1,0,210,2,0,0,0,0,0,0,112,236,1,0,244,1,0,0,0,0,0,0,120,236,1,0,244,1,0,0,0,0,0,0,128,236,1,0,188,1,0,0,0,0,0,0,136,236,1,0,10,3,0,0,0,0,0,0,144,236,1,0,250,0,0,0,0,0,0,0,160,236,1,0,77,1,0,0,0,0,0,0,176,236,1,0,133,1,0,0,0,0,0,0,192,236,1,0,210,2,0,0,0,0,0,0,200,236,1,0,43,2,0,0,0,0,0,0,216,236,1,0,244,1,0,0,0,0,0,0,232,236,1,0,44,2,0,0,0,0,0,0,240,236,1,0,37,2,0,0,0,0,0,0,0,237,1,0,44,2,0,0,0,0,0,0,8,237,1,0,155,2,0,0,0,0,0,0,16,237,1,0,77,1,0,0,0,0,0,0,32,237,1,0,244,1,0,0,0,0,0,0,40,237,1,0,37,2,0,0,0,0,0,0,56,237,1,0,238,1,0,0,0,0,0,0,64,237,1,0,77,1,0,0,0,0,0,0,80,237,1,0,188,1,0,0,0,0,0,0,88,237,1,0,155,2,0,0,0,0,0,0,104,237,1,0,244,1,0,0,0,0,0,0,112,237,1,0,232,3,0,0,0,0,0,0,128,237,1,0,244,1,0,0,0,0,0,0,144,237,1,0,44,2,0,0,0,0,0,0,152,237,1,0,77,1,0,0,0,0,0,0,160,237,1,0,10,3,0,0,0,0,0,0,168,237,1,0,155,2,0,0,0,0,0,0,176,237,1,0,232,3,0,0,0,0,0,0,192,237,1,0,133,1,0,0,0,0,0,0,200,237,1,0,232,3,0,0,0,0,0,0,208,237,1,0,210,2,0,0,0,0,0,0,224,237,1,0,22,1,0,0,0,0,0,0,232,237,1,0,244,1,0,0,0,0,0,0,248,237,1,0,77,1,0,0,0,0,0,0,8,238,1,0,77,1,0,0,0,0,0,0,16,238,1,0,22,1,0,0,0,0,0,0,32,238,1,0,244,1,0,0,0,0,0,0,40,238,1,0,77,1,0,0,0,0,0,0,56,238,1,0,244,1,0,0,0,0,0,0,64,238,1,0,210,2,0,0,0,0,0,0,72,238,1,0,210,2,0,0,0,0,0,0,80,238,1,0,210,2,0,0,0,0,0,0,88,238,1,0,188,1,0,0,0,0,0,0,104,238,1,0,210,2,0,0,0,0,0,0,120,238,1,0,235,2,0,0,0,0,0,0,136,238,1,0,155,2,0,0,0,0,0,0,144,238,1,0,22,1,0,0,0,0,0,0,152,238,1,0,155,2,0,0,0,0,0,0,168,238,1,0,244,1,0,0,0,0,0,0,176,238,1,0,133,1,0,0,0,0,0,0,192,238,1,0,77,1,0,0,0,0,0,0,208,238,1,0,244,1,0,0,0,0,0,0,216,238,1,0,188,1,0,0,0,0,0,0,224,238,1,0,10,3,0,0,0,0,0,0,240,238,1,0,44,2,0,0,0,0,0,0,0,239,1,0,77,1,0,0,0,0,0,0,16,239,1,0,210,2,0,0,0,0,0,0,24,239,1,0,77,1,0,0,0,0,0,0,40,239,1,0,210,2,0,0,0,0,0,0,56,239,1,0,232,3,0,0,0,0,0,0,72,239,1,0,210,2,0,0,0,0,0,0,88,239,1,0,44,2,0,0,0,0,0,0,96,239,1,0,244,1,0,0,0,0,0,0,104,239,1,0,155,2,0,0,0,0,0,0,112,239,1,0,244,1,0,0,0,0,0,0,128,239,1,0,188,1,0,0,0,0,0,0,136,239,1,0,188,1,0,0,0,0,0,0,152,239,1,0,22,1,0,0,0,0,0,0,168,239,1,0,210,2,0,0,0,0,0,0,176,239,1,0,210,2,0,0,0,0,0,0,184,239,1,0,244,1,0,0,0,0,0,0,200,239,1,0,244,1,0,0,0,0,0,0,216,239,1,0,210,2,0,0,0,0,0,0,224,239,1,0,44,2,0,0,0,0,0,0,232,239,1,0,244,1,0,0,0,0,0,0,240,239,1,0,244,1,0,0,0,0,0,0,248,239,1,0,44,2,0,0,0,0,0,0,8,240,1,0,155,2,0,0,0,0,0,0,16,240,1,0,44,2,0,0,0,0,0,0,32,240,1,0,238,2,0,0,0,0,0,0,48,240,1,0,244,1,0,0,0,0,0,0,64,240,1,0,210,2,0,0,0,0,0,0,80,240,1,0,244,1,0,0,0,0,0,0,96,240,1,0,77,1,0,0,0,0,0,0,104,240,1,0,162,3,0,0,0,0,0,0,112,240,1,0,188,1,0,0,0,0,0,0,120,240,1,0,244,1,0,0,0,0,0,0,136,240,1,0,244,1,0,0,0,0,0,0,144,240,1,0,210,2,0,0,0,0,0,0,152,240,1,0,58,2,0,0,0,0,0,0,168,240,1,0,244,1,0,0,0,0,0,0,176,240,1,0,244,1,0,0,0,0,0,0,184,240,1,0,44,2,0,0,0,0,0,0,200,240,1,0,10,3,0,0,0,0,0,0,208,240,1,0,210,2,0,0,0,0,0,0,216,240,1,0,238,1,0,0,0,0,0,0,232,240,1,0,44,2,0,0,0,0,0,0,240,240,1,0,138,1,0,0,0,0,0,0,0,241,1,0,99,2,0,0,0,0,0,0,8,241,1,0,188,1,0,0,0,0,0,0,16,241,1,0,133,1,0,0,0,0,0,0,32,241,1,0,188,1,0,0,0,0,0,0,48,241,1,0,210,2,0,0,0,0,0,0,56,241,1,0,44,2,0,0,0,0,0,0,64,241,1,0,10,3,0,0,0,0,0,0,80,241,1,0,10,3,0,0,0,0,0,0,88,241,1,0,133,1,0,0,0,0,0,0,104,241,1,0,77,1,0,0,0,0,0,0,112,241,1,0,244,1,0,0,0,0,0,0,120,241,1,0,188,1,0,0,0,0,0,0,128,241,1,0,155,2,0,0,0,0,0,0,136,241,1,0,155,2,0,0,0,0,0,0,144,241,1,0,44,2,0,0,0,0,0,0,152,241,1,0,144,1,0,0,0,0,0,0,160,241,1,0,235,2,0,0,0,0,0,0,176,241,1,0,37,2,0,0,0,0,0,0,184,241,1,0,210,2,0,0,0,0,0,0,192,241,1,0,232,3,0,0,0,0,0,0,200,241,1,0,244,1,0,0,0,0,0,0,208,241,1,0,28,2,0,0,0,0,0,0,224,241,1,0,160,2,0,0,0,0,0,0,232,241,1,0,210,2,0,0,0,0,0,0,240,241,1,0,244,1,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,133,1,0,0,0,0,0,0,16,242,1,0,155,2,0,0,0,0,0,0,24,242,1,0,244,1,0,0,0,0,0,0,40,242,1,0,244,1,0,0,0,0,0,0,48,242,1,0,210,2,0,0,0,0,0,0,56,242,1,0,155,2,0,0,0,0,0,0,72,242,1,0,160,1,0,0,0,0,0,0,80,242,1,0,188,1,0,0,0,0,0,0,88,242,1,0,100,2,0,0,0,0,0,0,96,242,1,0,10,3,0,0,0,0,0,0,112,242,1,0,69,2,0,0,0,0,0,0,128,242,1,0,244,1,0,0,0,0,0,0,136,242,1,0,77,1,0,0,0,0,0,0,144,242,1,0,44,2,0,0,0,0,0,0,152,242,1,0,77,1,0,0,0,0,0,0,168,242,1,0,133,1,0,0,0,0,0,0,176,242,1,0,65,3,0,0,0,0,0,0,192,242,1,0,22,1,0,0,0,0,0,0,200,242,1,0,22,1,0,0,0,0,0,0,208,242,1,0,210,2,0,0,0,0,0,0,216,242,1,0,58,2,0,0,0,0,0,0,224,242,1,0,44,2,0,0,0,0,0,0,232,242,1,0,77,1,0,0,0,0,0,0,248,242,1,0,22,1,0,0,0,0,0,0,8,243,1,0,210,2,0,0,0,0,0,0,16,243,1,0,244,1,0,0,0,0,0,0,32,243,1,0,44,1,0,0,0,0,0,0,48,243,1,0,77,1,0,0,0,0,0,0,56,243,1,0,244,1,0,0,0,0,0,0,64,243,1,0,77,1,0,0,0,0,0,0,80,243,1,0,22,1,0,0,0,0,0,0,88,243,1,0,244,1,0,0,0,0,0,0,104,243,1,0,44,2,0,0,0,0,0,0,112,243,1,0,244,1,0,0,0,0,0,0,120,243,1,0,244,1,0,0,0,0,0,0,128,243,1,0,210,2,0,0,0,0,0,0,144,243,1,0,44,2,0,0,0,0,0,0,152,243,1,0,44,2,0,0,0,0,0,0,160,243,1,0,210,2,0,0,0,0,0,0,176,243,1,0,210,2,0,0,0,0,0,0,184,243,1,0,133,1,0,0,0,0,0,0,200,243,1,0,244,1,0,0,0,0,0,0,216,243,1,0,44,2,0,0,0,0,0,0,232,243,1,0,210,2,0,0,0,0,0,0,240,243,1,0,244,1,0,0,0,0,0,0,248,243,1,0,44,2,0,0,0,0,0,0,0,244,1,0,74,1,0,0,0,0,0,0,16,244,1,0,22,1,0,0,0,0,0,0,32,244,1,0,244,1,0,0,0,0,0,0,48,244,1,0,37,2,0,0,0,0,0,0,64,244,1,0,133,1,0,0,0,0,0,0,72,244,1,0,188,1,0,0,0,0,0,0,88,244,1,0,155,2,0,0,0,0,0,0,104,244,1,0,244,1,0,0,0,0,0,0,120,244,1,0,188,1,0,0,0,0,0,0,128,244,1,0,155,2,0,0,0,0,0,0,136,244,1,0,22,1,0,0,0,0,0,0,152,244,1,0,138,1,0,0,0,0,0,0,168,244,1,0,244,1,0,0,0,0,0,0,184,244,1,0,244,1,0,0,0,0,0,0,192,244,1,0,133,1,0,0,0,0,0,0,200,244,1,0,22,1,0,0,0,0,0,0,208,244,1,0,244,1,0,0,0,0,0,0,216,244,1,0,244,1,0,0,0,0,0,0,232,244,1,0,58,2,0,0,0,0,0,0,248,244,1,0,188,1,0,0,0,0,0,0,8,245,1,0,210,2,0,0,0,0,0,0,16,245,1,0,77,1,0,0,0,0,0,0,24,245,1,0,220,0,0,0,0,0,0,0,32,245,1,0,167,0,0,0,0,0,0,0,48,245,1,0,58,2,0,0,0,0,0,0,56,245,1,0,188,1,0,0,0,0,0,0,64,245,1,0,77,1,0,0,0,0,0,0,80,245,1,0,77,1,0,0,0,0,0,0,88,245,1,0,250,0,0,0,0,0,0,0,96,245,1,0,210,2,0,0,0,0,0,0,104,245,1,0,10,3,0,0,0,0,0,0,120,245,1,0,58,2,0,0,0,0,0,0,128,245,1,0,244,1,0,0,0,0,0,0,136,245,1,0,220,0,0,0,0,0,0,0,152,245,1,0,77,1,0,0,0,0,0,0,168,245,1,0,155,2,0,0,0,0,0,0,184,245,1,0,44,1,0,0,0,0,0,0,0,0,0,0,120,232,1,0,210,2,0,0,0,0,0,0,128,232,1,0,133,1,0,0,0,0,0,0,136,232,1,0,244,1,0,0,0,0,0,0,152,232,1,0,210,2,0,0,0,0,0,0,168,232,1,0,99,2,0,0,0,0,0,0,176,232,1,0,250,0,0,0,0,0,0,0,184,232,1,0,77,1,0,0,0,0,0,0,192,232,1,0,58,2,0,0,0,0,0,0,208,232,1,0,77,1,0,0,0,0,0,0,224,232,1,0,77,1,0,0,0,0,0,0,240,232,1,0,188,1,0,0,0,0,0,0,0,233,1,0,58,2,0,0,0,0,0,0,16,233,1,0,77,1,0,0,0,0,0,0,24,233,1,0,238,2,0,0,0,0,0,0,32,233,1,0,244,1,0,0,0,0,0,0,40,233,1,0,99,2,0,0,0,0,0,0,48,233,1,0,44,2,0,0,0,0,0,0,56,233,1,0,155,2,0,0,0,0,0,0,64,233,1,0,44,2,0,0,0,0,0,0,80,233,1,0,94,2,0,0,0,0,0,0,88,233,1,0,133,1,0,0,0,0,0,0,96,233,1,0,133,1,0,0,0,0,0,0,104,233,1,0,244,1,0,0,0,0,0,0,216,226,1,0,250,0,0,0,0,0,0,0,112,233,1,0,210,2,0,0,0,0,0,0,120,233,1,0,244,1,0,0,0,0,0,0,136,233,1,0,232,3,0,0,0,0,0,0,144,233,1,0,155,2,0,0,0,0,0,0,152,233,1,0,244,1,0,0,0,0,0,0,160,233,1,0,244,1,0,0,0,0,0,0,176,233,1,0,126,1,0,0,0,0,0,0,184,233,1,0,155,2,0,0,0,0,0,0,192,233,1,0,155,2,0,0,0,0,0,0,200,233,1,0,155,2,0,0,0,0,0,0,208,233,1,0,244,1,0,0,0,0,0,0,216,233,1,0,210,2,0,0,0,0,0,0,224,233,1,0,155,2,0,0,0,0,0,0,232,233,1,0,238,2,0,0,0,0,0,0,248,233,1,0,155,2,0,0,0,0,0,0,0,234,1,0,210,2,0,0,0,0,0,0,8,234,1,0,10,3,0,0,0,0,0,0,16,234,1,0,133,1,0,0,0,0,0,0,24,234,1,0,244,1,0,0,0,0,0,0,32,234,1,0,155,2,0,0,0,0,0,0,40,234,1,0,22,1,0,0,0,0,0,0,48,234,1,0,22,1,0,0,0,0,0,0,64,234,1,0,99,2,0,0,0,0,0,0,72,234,1,0,250,0,0,0,0,0,0,0,88,234,1,0,121,3,0,0,0,0,0,0,96,234,1,0,210,2,0,0,0,0,0,0,104,234,1,0,244,1,0,0,0,0,0,0,112,234,1,0,99,2,0,0,0,0,0,0,128,234,1,0,210,2,0,0,0,0,0,0,136,234,1,0,99,2,0,0,0,0,0,0,144,234,1,0,210,2,0,0,0,0,0,0,152,234,1,0,210,2,0,0,0,0,0,0,168,234,1,0,155,2,0,0,0,0,0,0,176,234,1,0,155,2,0,0,0,0,0,0,184,234,1,0,77,1,0,0,0,0,0,0,192,234,1,0,44,2,0,0,0,0,0,0,200,234,1,0,99,2,0,0,0,0,0,0,208,234,1,0,210,2,0,0,0,0,0,0,216,234,1,0,244,1,0,0,0,0,0,0,224,234,1,0,155,2,0,0,0,0,0,0,232,234,1,0,121,3,0,0,0,0,0,0,240,234,1,0,155,2,0,0,0,0,0,0,248,234,1,0,244,1,0,0,0,0,0,0,8,235,1,0,58,2,0,0,0,0,0,0,16,235,1,0,99,2,0,0,0,0,0,0,24,235,1,0,99,2,0,0,0,0,0,0,32,235,1,0,244,1,0,0,0,0,0,0,40,235,1,0,244,1,0,0,0,0,0,0,48,235,1,0,210,2,0,0,0,0,0,0,64,235,1,0,244,1,0,0,0,0,0,0,72,235,1,0,188,1,0,0,0,0,0,0,80,235,1,0,244,1,0,0,0,0,0,0,88,235,1,0,188,1,0,0,0,0,0,0,96,235,1,0,77,1,0,0,0,0,0,0,104,235,1,0,244,1,0,0,0,0,0,0,112,235,1,0,94,1,0,0,0,0,0,0,120,235,1,0,44,2,0,0,0,0,0,0,128,235,1,0,22,1,0,0,0,0,0,0,136,235,1,0,210,2,0,0,0,0,0,0,144,235,1,0,244,1,0,0,0,0,0,0,152,235,1,0,22,1,0,0,0,0,0,0,160,235,1,0,244,1,0,0,0,0,0,0,168,235,1,0,22,1,0,0,0,0,0,0,176,235,1,0,10,3,0,0,0,0,0,0,184,235,1,0,44,2,0,0,0,0,0,0,192,235,1,0,22,1,0,0,0,0,0,0,208,235,1,0,244,1,0,0,0,0,0,0,216,235,1,0,10,1,0,0,0,0,0,0,232,235,1,0,77,1,0,0,0,0,0,0,240,235,1,0,244,1,0,0,0,0,0,0,248,235,1,0,244,1,0,0,0,0,0,0,0,236,1,0,44,2,0,0,0,0,0,0,16,236,1,0,133,1,0,0,0,0,0,0,24,236,1,0,44,1,0,0,0,0,0,0,40,236,1,0,244,1,0,0,0,0,0,0,48,236,1,0,133,1,0,0,0,0,0,0,56,236,1,0,176,3,0,0,0,0,0,0,64,236,1,0,22,1,0,0,0,0,0,0,72,236,1,0,58,2,0,0,0,0,0,0,80,236,1,0,44,2,0,0,0,0,0,0,88,236,1,0,155,2,0,0,0,0,0,0,96,236,1,0,188,1,0,0,0,0,0,0,104,236,1,0,155,2,0,0,0,0,0,0,112,236,1,0,244,1,0,0,0,0,0,0,120,236,1,0,188,1,0,0,0,0,0,0,128,236,1,0,133,1,0,0,0,0,0,0,136,236,1,0,210,2,0,0,0,0,0,0,144,236,1,0,250,0,0,0,0,0,0,0,160,236,1,0,77,1,0,0,0,0,0,0,176,236,1,0,133,1,0,0,0,0,0,0,192,236,1,0,210,2,0,0,0,0,0,0,200,236,1,0,43,2,0,0,0,0,0,0,216,236,1,0,244,1,0,0,0,0,0,0,232,236,1,0,64,2,0,0,0,0,0,0,240,236,1,0,37,2,0,0,0,0,0,0,0,237,1,0,44,2,0,0,0,0,0,0,8,237,1,0,99,2,0,0,0,0,0,0,16,237,1,0,77,1,0,0,0,0,0,0,32,237,1,0,244,1,0,0,0,0,0,0,40,237,1,0,37,2,0,0,0,0,0,0,56,237,1,0,238,1,0,0,0,0,0,0,64,237,1,0,77,1,0,0,0,0,0,0,80,237,1,0,188,1,0,0,0,0,0,0,88,237,1,0,155,2,0,0,0,0,0,0,104,237,1,0,244,1,0,0,0,0,0,0,112,237,1,0,232,3,0,0,0,0,0,0,128,237,1,0,244,1,0,0,0,0,0,0,144,237,1,0,44,2,0,0,0,0,0,0,152,237,1,0,77,1,0,0,0,0,0,0,160,237,1,0,210,2,0,0,0,0,0,0,168,237,1,0,155,2,0,0,0,0,0,0,176,237,1,0,232,3,0,0,0,0,0,0,192,237,1,0,133,1,0,0,0,0,0,0,200,237,1,0,176,3,0,0,0,0,0,0,208,237,1,0,210,2,0,0,0,0,0,0,224,237,1,0,22,1,0,0,0,0,0,0,232,237,1,0,244,1,0,0,0,0,0,0,248,237,1,0,77,1,0,0,0,0,0,0,8,238,1,0,77,1,0,0,0,0,0,0,16,238,1,0,22,1,0,0,0,0,0,0,32,238,1,0,244,1,0,0,0,0,0,0,40,238,1,0,133,1,0,0,0,0,0,0,56,238,1,0,244,1,0,0,0,0,0,0,64,238,1,0,210,2,0,0,0,0,0,0,72,238,1,0,155,2,0,0,0,0,0,0,80,238,1,0,210,2,0,0,0,0,0,0,88,238,1,0,188,1,0,0,0,0,0,0,104,238,1,0,155,2,0,0,0,0,0,0,120,238,1,0,235,2,0,0,0,0,0,0,136,238,1,0,155,2,0,0,0,0,0,0,144,238,1,0,22,1,0,0,0,0,0,0,152,238,1,0,155,2,0,0,0,0,0,0,168,238,1,0,244,1,0,0,0,0,0,0,176,238,1,0,133,1,0,0,0,0,0,0,192,238,1,0,77,1,0,0,0,0,0,0,208,238,1,0,244,1,0,0,0,0,0,0,216,238,1,0,188,1,0,0,0,0,0,0,224,238,1,0,210,2,0,0,0,0,0,0,240,238,1,0,44,2,0,0,0,0,0,0,0,239,1,0,77,1,0,0,0,0,0,0,16,239,1,0,210,2,0,0,0,0,0,0,24,239,1,0,77,1,0,0,0,0,0,0,40,239,1,0,210,2,0,0,0,0,0,0,56,239,1,0,232,3,0,0,0,0,0,0,72,239,1,0,99,2,0,0,0,0,0,0,88,239,1,0,44,2,0,0,0,0,0,0,96,239,1,0,244,1,0,0,0,0,0,0,104,239,1,0,155,2,0,0,0,0,0,0,112,239,1,0,244,1,0,0,0,0,0,0,128,239,1,0,188,1,0,0,0,0,0,0,136,239,1,0,188,1,0,0,0,0,0,0,152,239,1,0,22,1,0,0,0,0,0,0,168,239,1,0,210,2,0,0,0,0,0,0,176,239,1,0,210,2,0,0,0,0,0,0,184,239,1,0,244,1,0,0,0,0,0,0,200,239,1,0,244,1,0,0,0,0,0,0,216,239,1,0,210,2,0,0,0,0,0,0,224,239,1,0,44,2,0,0,0,0,0,0,232,239,1,0,244,1,0,0,0,0,0,0,240,239,1,0,244,1,0,0,0,0,0,0,248,239,1,0,44,2,0,0,0,0,0,0,8,240,1,0,99,2,0,0,0,0,0,0,16,240,1,0,44,2,0,0,0,0,0,0,32,240,1,0,238,2,0,0,0,0,0,0,48,240,1,0,244,1,0,0,0,0,0,0,64,240,1,0,155,2,0,0,0,0,0,0,80,240,1,0,188,1,0,0,0,0,0,0,96,240,1,0,77,1,0,0,0,0,0,0,104,240,1,0,64,3,0,0,0,0,0,0,112,240,1,0,188,1,0,0,0,0,0,0,120,240,1,0,244,1,0,0,0,0,0,0,136,240,1,0,244,1,0,0,0,0,0,0,144,240,1,0,210,2,0,0,0,0,0,0,152,240,1,0,58,2,0,0,0,0,0,0,168,240,1,0,244,1,0,0,0,0,0,0,176,240,1,0,244,1,0,0,0,0,0,0,184,240,1,0,44,2,0,0,0,0,0,0,200,240,1,0,210,2,0,0,0,0,0,0,208,240,1,0,155,2,0,0,0,0,0,0,216,240,1,0,238,1,0,0,0,0,0,0,232,240,1,0,44,2,0,0,0,0,0,0,240,240,1,0,92,1,0,0,0,0,0,0,0,241,1,0,99,2,0,0,0,0,0,0,8,241,1,0,133,1,0,0,0,0,0,0,16,241,1,0,133,1,0,0,0,0,0,0,32,241,1,0,188,1,0,0,0,0,0,0,48,241,1,0,210,2,0,0,0,0,0,0,56,241,1,0,244,1,0,0,0,0,0,0,64,241,1,0,210,2,0,0,0,0,0,0,80,241,1,0,210,2,0,0,0,0,0,0,88,241,1,0,133,1,0,0,0,0,0,0,104,241,1,0,77,1,0,0,0,0,0,0,112,241,1,0,244,1,0,0,0,0,0,0,120,241,1,0,133,1,0,0,0,0,0,0,128,241,1,0,99,2,0,0,0,0,0,0,136,241,1,0,155,2,0,0,0,0,0,0,144,241,1,0,244,1,0,0,0,0,0,0,152,241,1,0,144,1,0,0,0,0,0,0,160,241,1,0,235,2,0,0,0,0,0,0,176,241,1,0,37,2,0,0,0,0,0,0,184,241,1,0,155,2,0,0,0,0,0,0,192,241,1,0,65,3,0,0,0,0,0,0,200,241,1,0,244,1,0,0,0,0,0,0,208,241,1,0,244,1,0,0,0,0,0,0,224,241,1,0,96,2,0,0,0,0,0,0,232,241,1,0,210,2,0,0,0,0,0,0,240,241,1,0,244,1,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,133,1,0,0,0,0,0,0,16,242,1,0,99,2,0,0,0,0,0,0,24,242,1,0,244,1,0,0,0,0,0,0,40,242,1,0,244,1,0,0,0,0,0,0,48,242,1,0,210,2,0,0,0,0,0,0,56,242,1,0,99,2,0,0,0,0,0,0,72,242,1,0,110,1,0,0,0,0,0,0,80,242,1,0,188,1,0,0,0,0,0,0,88,242,1,0,100,2,0,0,0,0,0,0,96,242,1,0,210,2,0,0,0,0,0,0,112,242,1,0,58,2,0,0,0,0,0,0,128,242,1,0,244,1,0,0,0,0,0,0,136,242,1,0,77,1,0,0,0,0,0,0,144,242,1,0,44,2,0,0,0,0,0,0,152,242,1,0,77,1,0,0,0,0,0,0,168,242,1,0,133,1,0,0,0,0,0,0,176,242,1,0,10,3,0,0,0,0,0,0,192,242,1,0,22,1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+102404); -/* memory initializer */ allocate([200,242,1,0,22,1,0,0,0,0,0,0,208,242,1,0,210,2,0,0,0,0,0,0,216,242,1,0,58,2,0,0,0,0,0,0,224,242,1,0,44,2,0,0,0,0,0,0,232,242,1,0,77,1,0,0,0,0,0,0,248,242,1,0,22,1,0,0,0,0,0,0,8,243,1,0,99,2,0,0,0,0,0,0,16,243,1,0,244,1,0,0,0,0,0,0,32,243,1,0,44,1,0,0,0,0,0,0,48,243,1,0,77,1,0,0,0,0,0,0,56,243,1,0,244,1,0,0,0,0,0,0,64,243,1,0,77,1,0,0,0,0,0,0,80,243,1,0,22,1,0,0,0,0,0,0,88,243,1,0,244,1,0,0,0,0,0,0,104,243,1,0,44,2,0,0,0,0,0,0,112,243,1,0,244,1,0,0,0,0,0,0,120,243,1,0,188,1,0,0,0,0,0,0,128,243,1,0,155,2,0,0,0,0,0,0,144,243,1,0,44,2,0,0,0,0,0,0,152,243,1,0,44,2,0,0,0,0,0,0,160,243,1,0,155,2,0,0,0,0,0,0,176,243,1,0,155,2,0,0,0,0,0,0,184,243,1,0,133,1,0,0,0,0,0,0,200,243,1,0,244,1,0,0,0,0,0,0,216,243,1,0,244,1,0,0,0,0,0,0,232,243,1,0,155,2,0,0,0,0,0,0,240,243,1,0,244,1,0,0,0,0,0,0,248,243,1,0,44,2,0,0,0,0,0,0,0,244,1,0,44,1,0,0,0,0,0,0,16,244,1,0,22,1,0,0,0,0,0,0,32,244,1,0,244,1,0,0,0,0,0,0,48,244,1,0,37,2,0,0,0,0,0,0,64,244,1,0,133,1,0,0,0,0,0,0,72,244,1,0,133,1,0,0,0,0,0,0,88,244,1,0,99,2,0,0,0,0,0,0,104,244,1,0,244,1,0,0,0,0,0,0,120,244,1,0,188,1,0,0,0,0,0,0,128,244,1,0,155,2,0,0,0,0,0,0,136,244,1,0,22,1,0,0,0,0,0,0,152,244,1,0,92,1,0,0,0,0,0,0,168,244,1,0,244,1,0,0,0,0,0,0,184,244,1,0,244,1,0,0,0,0,0,0,192,244,1,0,133,1,0,0,0,0,0,0,200,244,1,0,22,1,0,0,0,0,0,0,208,244,1,0,244,1,0,0,0,0,0,0,216,244,1,0,244,1,0,0,0,0,0,0,232,244,1,0,94,2,0,0,0,0,0,0,248,244,1,0,133,1,0,0,0,0,0,0,8,245,1,0,155,2,0,0,0,0,0,0,16,245,1,0,77,1,0,0,0,0,0,0,24,245,1,0,220,0,0,0,0,0,0,0,32,245,1,0,167,0,0,0,0,0,0,0,48,245,1,0,58,2,0,0,0,0,0,0,56,245,1,0,188,1,0,0,0,0,0,0,64,245,1,0,77,1,0,0,0,0,0,0,80,245,1,0,133,1,0,0,0,0,0,0,88,245,1,0,250,0,0,0,0,0,0,0,96,245,1,0,155,2,0,0,0,0,0,0,104,245,1,0,155,2,0,0,0,0,0,0,120,245,1,0,58,2,0,0,0,0,0,0,128,245,1,0,244,1,0,0,0,0,0,0,136,245,1,0,220,0,0,0,0,0,0,0,152,245,1,0,77,1,0,0,0,0,0,0,168,245,1,0,155,2,0,0,0,0,0,0,184,245,1,0,44,1,0,0,0,0,0,0,0,0,0,0,120,232,1,0,155,2,0,0,0,0,0,0,128,232,1,0,133,1,0,0,0,0,0,0,136,232,1,0,188,1,0,0,0,0,0,0,152,232,1,0,155,2,0,0,0,0,0,0,168,232,1,0,44,2,0,0,0,0,0,0,176,232,1,0,250,0,0,0,0,0,0,0,184,232,1,0,77,1,0,0,0,0,0,0,192,232,1,0,163,2,0,0,0,0,0,0,208,232,1,0,77,1,0,0,0,0,0,0,224,232,1,0,77,1,0,0,0,0,0,0,240,232,1,0,188,1,0,0,0,0,0,0,0,233,1,0,29,2,0,0,0,0,0,0,16,233,1,0,77,1,0,0,0,0,0,0,24,233,1,0,238,2,0,0,0,0,0,0,32,233,1,0,244,1,0,0,0,0,0,0,40,233,1,0,99,2,0,0,0,0,0,0,48,233,1,0,244,1,0,0,0,0,0,0,56,233,1,0,99,2,0,0,0,0,0,0,64,233,1,0,244,1,0,0,0,0,0,0,80,233,1,0,163,2,0,0,0,0,0,0,88,233,1,0,77,1,0,0,0,0,0,0,96,233,1,0,133,1,0,0,0,0,0,0,104,233,1,0,244,1,0,0,0,0,0,0,216,226,1,0,250,0,0,0,0,0,0,0,112,233,1,0,210,2,0,0,0,0,0,0,120,233,1,0,244,1,0,0,0,0,0,0,136,233,1,0,121,3,0,0,0,0,0,0,144,233,1,0,99,2,0,0,0,0,0,0,152,233,1,0,244,1,0,0,0,0,0,0,160,233,1,0,244,1,0,0,0,0,0,0,176,233,1,0,44,1,0,0,0,0,0,0,184,233,1,0,99,2,0,0,0,0,0,0,192,233,1,0,99,2,0,0,0,0,0,0,200,233,1,0,155,2,0,0,0,0,0,0,208,233,1,0,244,1,0,0,0,0,0,0,216,233,1,0,210,2,0,0,0,0,0,0,224,233,1,0,99,2,0,0,0,0,0,0,232,233,1,0,238,2,0,0,0,0,0,0,248,233,1,0,99,2,0,0,0,0,0,0,0,234,1,0,210,2,0,0,0,0,0,0,8,234,1,0,210,2,0,0,0,0,0,0,16,234,1,0,77,1,0,0,0,0,0,0,24,234,1,0,188,1,0,0,0,0,0,0,32,234,1,0,155,2,0,0,0,0,0,0,40,234,1,0,22,1,0,0,0,0,0,0,48,234,1,0,22,1,0,0,0,0,0,0,64,234,1,0,44,2,0,0,0,0,0,0,72,234,1,0,250,0,0,0,0,0,0,0,88,234,1,0,65,3,0,0,0,0,0,0,96,234,1,0,155,2,0,0,0,0,0,0,104,234,1,0,244,1,0,0,0,0,0,0,112,234,1,0,44,2,0,0,0,0,0,0,128,234,1,0,210,2,0,0,0,0,0,0,136,234,1,0,99,2,0,0,0,0,0,0,144,234,1,0,210,2,0,0,0,0,0,0,152,234,1,0,210,2,0,0,0,0,0,0,168,234,1,0,99,2,0,0,0,0,0,0,176,234,1,0,99,2,0,0,0,0,0,0,184,234,1,0,77,1,0,0,0,0,0,0,192,234,1,0,244,1,0,0,0,0,0,0,200,234,1,0,44,2,0,0,0,0,0,0,208,234,1,0,210,2,0,0,0,0,0,0,216,234,1,0,244,1,0,0,0,0,0,0,224,234,1,0,99,2,0,0,0,0,0,0,232,234,1,0,65,3,0,0,0,0,0,0,240,234,1,0,99,2,0,0,0,0,0,0,248,234,1,0,244,1,0,0,0,0,0,0,8,235,1,0,163,2,0,0,0,0,0,0,16,235,1,0,44,2,0,0,0,0,0,0,24,235,1,0,44,2,0,0,0,0,0,0,32,235,1,0,244,1,0,0,0,0,0,0,40,235,1,0,244,1,0,0,0,0,0,0,48,235,1,0,210,2,0,0,0,0,0,0,64,235,1,0,244,1,0,0,0,0,0,0,72,235,1,0,188,1,0,0,0,0,0,0,80,235,1,0,244,1,0,0,0,0,0,0,88,235,1,0,188,1,0,0,0,0,0,0,96,235,1,0,22,1,0,0,0,0,0,0,104,235,1,0,244,1,0,0,0,0,0,0,112,235,1,0,94,1,0,0,0,0,0,0,120,235,1,0,244,1,0,0,0,0,0,0,128,235,1,0,22,1,0,0,0,0,0,0,136,235,1,0,210,2,0,0,0,0,0,0,144,235,1,0,244,1,0,0,0,0,0,0,152,235,1,0,22,1,0,0,0,0,0,0,160,235,1,0,188,1,0,0,0,0,0,0,168,235,1,0,22,1,0,0,0,0,0,0,176,235,1,0,210,2,0,0,0,0,0,0,184,235,1,0,244,1,0,0,0,0,0,0,192,235,1,0,22,1,0,0,0,0,0,0,208,235,1,0,244,1,0,0,0,0,0,0,216,235,1,0,20,1,0,0,0,0,0,0,232,235,1,0,77,1,0,0,0,0,0,0,240,235,1,0,244,1,0,0,0,0,0,0,248,235,1,0,244,1,0,0,0,0,0,0,0,236,1,0,244,1,0,0,0,0,0,0,16,236,1,0,133,1,0,0,0,0,0,0,24,236,1,0,44,1,0,0,0,0,0,0,40,236,1,0,244,1,0,0,0,0,0,0,48,236,1,0,133,1,0,0,0,0,0,0,56,236,1,0,176,3,0,0,0,0,0,0,64,236,1,0,22,1,0,0,0,0,0,0,72,236,1,0,163,2,0,0,0,0,0,0,80,236,1,0,244,1,0,0,0,0,0,0,88,236,1,0,155,2,0,0,0,0,0,0,96,236,1,0,188,1,0,0,0,0,0,0,104,236,1,0,155,2,0,0,0,0,0,0,112,236,1,0,188,1,0,0,0,0,0,0,120,236,1,0,188,1,0,0,0,0,0,0,128,236,1,0,133,1,0,0,0,0,0,0,136,236,1,0,210,2,0,0,0,0,0,0,144,236,1,0,250,0,0,0,0,0,0,0,160,236,1,0,77,1,0,0,0,0,0,0,176,236,1,0,77,1,0,0,0,0,0,0,192,236,1,0,155,2,0,0,0,0,0,0,200,236,1,0,164,1,0,0,0,0,0,0,216,236,1,0,244,1,0,0,0,0,0,0,232,236,1,0,244,1,0,0,0,0,0,0,240,236,1,0,37,2,0,0,0,0,0,0,0,237,1,0,244,1,0,0,0,0,0,0,8,237,1,0,44,2,0,0,0,0,0,0,16,237,1,0,77,1,0,0,0,0,0,0,32,237,1,0,244,1,0,0,0,0,0,0,40,237,1,0,37,2,0,0,0,0,0,0,56,237,1,0,215,1,0,0,0,0,0,0,64,237,1,0,77,1,0,0,0,0,0,0,80,237,1,0,188,1,0,0,0,0,0,0,88,237,1,0,99,2,0,0,0,0,0,0,104,237,1,0,244,1,0,0,0,0,0,0,112,237,1,0,212,3,0,0,0,0,0,0,128,237,1,0,244,1,0,0,0,0,0,0,144,237,1,0,244,1,0,0,0,0,0,0,152,237,1,0,77,1,0,0,0,0,0,0,160,237,1,0,210,2,0,0,0,0,0,0,168,237,1,0,99,2,0,0,0,0,0,0,176,237,1,0,121,3,0,0,0,0,0,0,192,237,1,0,133,1,0,0,0,0,0,0,200,237,1,0,121,3,0,0,0,0,0,0,208,237,1,0,210,2,0,0,0,0,0,0,224,237,1,0,22,1,0,0,0,0,0,0,232,237,1,0,44,2,0,0,0,0,0,0,248,237,1,0,77,1,0,0,0,0,0,0,8,238,1,0,77,1,0,0,0,0,0,0,16,238,1,0,214,0,0,0,0,0,0,0,32,238,1,0,244,1,0,0,0,0,0,0,40,238,1,0,133,1,0,0,0,0,0,0,56,238,1,0,244,1,0,0,0,0,0,0,64,238,1,0,155,2,0,0,0,0,0,0,72,238,1,0,99,2,0,0,0,0,0,0,80,238,1,0,210,2,0,0,0,0,0,0,88,238,1,0,188,1,0,0,0,0,0,0,104,238,1,0,99,2,0,0,0,0,0,0,120,238,1,0,248,2,0,0,0,0,0,0,136,238,1,0,99,2,0,0,0,0,0,0,144,238,1,0,22,1,0,0,0,0,0,0,152,238,1,0,99,2,0,0,0,0,0,0,168,238,1,0,244,1,0,0,0,0,0,0,176,238,1,0,77,1,0,0,0,0,0,0,192,238,1,0,77,1,0,0,0,0,0,0,208,238,1,0,244,1,0,0,0,0,0,0,216,238,1,0,188,1,0,0,0,0,0,0,224,238,1,0,210,2,0,0,0,0,0,0,240,238,1,0,244,1,0,0,0,0,0,0,0,239,1,0,133,1,0,0,0,0,0,0,16,239,1,0,210,2,0,0,0,0,0,0,24,239,1,0,77,1,0,0,0,0,0,0,40,239,1,0,210,2,0,0,0,0,0,0,56,239,1,0,232,3,0,0,0,0,0,0,72,239,1,0,44,2,0,0,0,0,0,0,88,239,1,0,244,1,0,0,0,0,0,0,96,239,1,0,244,1,0,0,0,0,0,0,104,239,1,0,99,2,0,0,0,0,0,0,112,239,1,0,244,1,0,0,0,0,0,0,128,239,1,0,188,1,0,0,0,0,0,0,136,239,1,0,188,1,0,0,0,0,0,0,152,239,1,0,22,1,0,0,0,0,0,0,168,239,1,0,210,2,0,0,0,0,0,0,176,239,1,0,155,2,0,0,0,0,0,0,184,239,1,0,244,1,0,0,0,0,0,0,200,239,1,0,244,1,0,0,0,0,0,0,216,239,1,0,210,2,0,0,0,0,0,0,224,239,1,0,244,1,0,0,0,0,0,0,232,239,1,0,244,1,0,0,0,0,0,0,240,239,1,0,244,1,0,0,0,0,0,0,248,239,1,0,244,1,0,0,0,0,0,0,8,240,1,0,44,2,0,0,0,0,0,0,16,240,1,0,244,1,0,0,0,0,0,0,32,240,1,0,238,2,0,0,0,0,0,0,48,240,1,0,244,1,0,0,0,0,0,0,64,240,1,0,155,2,0,0,0,0,0,0,80,240,1,0,188,1,0,0,0,0,0,0,96,240,1,0,77,1,0,0,0,0,0,0,104,240,1,0,152,3,0,0,0,0,0,0,112,240,1,0,188,1,0,0,0,0,0,0,120,240,1,0,244,1,0,0,0,0,0,0,136,240,1,0,244,1,0,0,0,0,0,0,144,240,1,0,210,2,0,0,0,0,0,0,152,240,1,0,163,2,0,0,0,0,0,0,168,240,1,0,244,1,0,0,0,0,0,0,176,240,1,0,244,1,0,0,0,0,0,0,184,240,1,0,244,1,0,0,0,0,0,0,200,240,1,0,210,2,0,0,0,0,0,0,208,240,1,0,99,2,0,0,0,0,0,0,216,240,1,0,220,1,0,0,0,0,0,0,232,240,1,0,244,1,0,0,0,0,0,0,240,240,1,0,144,1,0,0,0,0,0,0,0,241,1,0,99,2,0,0,0,0,0,0,8,241,1,0,133,1,0,0,0,0,0,0,16,241,1,0,133,1,0,0,0,0,0,0,32,241,1,0,188,1,0,0,0,0,0,0,48,241,1,0,210,2,0,0,0,0,0,0,56,241,1,0,244,1,0,0,0,0,0,0,64,241,1,0,210,2,0,0,0,0,0,0,80,241,1,0,210,2,0,0,0,0,0,0,88,241,1,0,133,1,0,0,0,0,0,0,104,241,1,0,77,1,0,0,0,0,0,0,112,241,1,0,244,1,0,0,0,0,0,0,120,241,1,0,133,1,0,0,0,0,0,0,128,241,1,0,44,2,0,0,0,0,0,0,136,241,1,0,99,2,0,0,0,0,0,0,144,241,1,0,244,1,0,0,0,0,0,0,152,241,1,0,144,1,0,0,0,0,0,0,160,241,1,0,248,2,0,0,0,0,0,0,176,241,1,0,197,1,0,0,0,0,0,0,184,241,1,0,99,2,0,0,0,0,0,0,192,241,1,0,65,3,0,0,0,0,0,0,200,241,1,0,244,1,0,0,0,0,0,0,208,241,1,0,11,2,0,0,0,0,0,0,224,241,1,0,32,2,0,0,0,0,0,0,232,241,1,0,210,2,0,0,0,0,0,0,240,241,1,0,244,1,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,77,1,0,0,0,0,0,0,16,242,1,0,44,2,0,0,0,0,0,0,24,242,1,0,244,1,0,0,0,0,0,0,40,242,1,0,244,1,0,0,0,0,0,0,48,242,1,0,210,2,0,0,0,0,0,0,56,242,1,0,44,2,0,0,0,0,0,0,72,242,1,0,44,1,0,0,0,0,0,0,80,242,1,0,188,1,0,0,0,0,0,0,88,242,1,0,100,2,0,0,0,0,0,0,96,242,1,0,210,2,0,0,0,0,0,0,112,242,1,0,166,1,0,0,0,0,0,0,128,242,1,0,244,1,0,0,0,0,0,0,136,242,1,0,77,1,0,0,0,0,0,0,144,242,1,0,244,1,0,0,0,0,0,0,152,242,1,0,133,1,0,0,0,0,0,0,168,242,1,0,77,1,0,0,0,0,0,0,176,242,1,0,10,3,0,0,0,0,0,0,192,242,1,0,22,1,0,0,0,0,0,0,200,242,1,0,22,1,0,0,0,0,0,0,208,242,1,0,155,2,0,0,0,0,0,0,216,242,1,0,163,2,0,0,0,0,0,0,224,242,1,0,244,1,0,0,0,0,0,0,232,242,1,0,77,1,0,0,0,0,0,0,248,242,1,0,22,1,0,0,0,0,0,0,8,243,1,0,44,2,0,0,0,0,0,0,16,243,1,0,244,1,0,0,0,0,0,0,32,243,1,0,44,1,0,0,0,0,0,0,48,243,1,0,77,1,0,0,0,0,0,0,56,243,1,0,244,1,0,0,0,0,0,0,64,243,1,0,77,1,0,0,0,0,0,0,80,243,1,0,22,1,0,0,0,0,0,0,88,243,1,0,44,2,0,0,0,0,0,0,104,243,1,0,244,1,0,0,0,0,0,0,112,243,1,0,244,1,0,0,0,0,0,0,120,243,1,0,188,1,0,0,0,0,0,0,128,243,1,0,99,2,0,0,0,0,0,0,144,243,1,0,244,1,0,0,0,0,0,0,152,243,1,0,244,1,0,0,0,0,0,0,160,243,1,0,99,2,0,0,0,0,0,0,176,243,1,0,155,2,0,0,0,0,0,0,184,243,1,0,77,1,0,0,0,0,0,0,200,243,1,0,244,1,0,0,0,0,0,0,216,243,1,0,244,1,0,0,0,0,0,0,232,243,1,0,99,2,0,0,0,0,0,0,240,243,1,0,244,1,0,0,0,0,0,0,248,243,1,0,244,1,0,0,0,0,0,0,0,244,1,0,54,1,0,0,0,0,0,0,16,244,1,0,22,1,0,0,0,0,0,0,32,244,1,0,244,1,0,0,0,0,0,0,48,244,1,0,37,2,0,0,0,0,0,0,64,244,1,0,77,1,0,0,0,0,0,0,72,244,1,0,133,1,0,0,0,0,0,0,88,244,1,0,44,2,0,0,0,0,0,0,104,244,1,0,244,1,0,0,0,0,0,0,120,244,1,0,188,1,0,0,0,0,0,0,128,244,1,0,99,2,0,0,0,0,0,0,136,244,1,0,22,1,0,0,0,0,0,0,152,244,1,0,144,1,0,0,0,0,0,0,168,244,1,0,44,2,0,0,0,0,0,0,184,244,1,0,244,1,0,0,0,0,0,0,192,244,1,0,133,1,0,0,0,0,0,0,200,244,1,0,22,1,0,0,0,0,0,0,208,244,1,0,244,1,0,0,0,0,0,0,216,244,1,0,244,1,0,0,0,0,0,0,232,244,1,0,163,2,0,0,0,0,0,0,248,244,1,0,133,1,0,0,0,0,0,0,8,245,1,0,99,2,0,0,0,0,0,0,16,245,1,0,77,1,0,0,0,0,0,0,24,245,1,0,19,1,0,0,0,0,0,0,32,245,1,0,167,0,0,0,0,0,0,0,48,245,1,0,163,2,0,0,0,0,0,0,56,245,1,0,188,1,0,0,0,0,0,0,64,245,1,0,77,1,0,0,0,0,0,0,80,245,1,0,77,1,0,0,0,0,0,0,88,245,1,0,250,0,0,0,0,0,0,0,96,245,1,0,99,2,0,0,0,0,0,0,104,245,1,0,155,2,0,0,0,0,0,0,120,245,1,0,163,2,0,0,0,0,0,0,128,245,1,0,244,1,0,0,0,0,0,0,136,245,1,0,19,1,0,0,0,0,0,0,152,245,1,0,77,1,0,0,0,0,0,0,168,245,1,0,99,2,0,0,0,0,0,0,184,245,1,0,44,1,0,0,0,0,0,0,0,0,0,0,120,232,1,0,210,2,0,0,0,0,0,0,128,232,1,0,77,1,0,0,0,0,0,0,136,232,1,0,244,1,0,0,0,0,0,0,152,232,1,0,210,2,0,0,0,0,0,0,168,232,1,0,99,2,0,0,0,0,0,0,176,232,1,0,250,0,0,0,0,0,0,0,184,232,1,0,77,1,0,0,0,0,0,0,192,232,1,0,52,2,0,0,0,0,0,0,208,232,1,0,77,1,0,0,0,0,0,0,224,232,1,0,77,1,0,0,0,0,0,0,240,232,1,0,188,1,0,0,0,0,0,0,0,233,1,0,29,2,0,0,0,0,0,0,16,233,1,0,22,1,0,0,0,0,0,0,24,233,1,0,238,2,0,0,0,0,0,0,32,233,1,0,244,1,0,0,0,0,0,0,40,233,1,0,99,2,0,0,0,0,0,0,48,233,1,0,244,1,0,0,0,0,0,0,56,233,1,0,210,2,0,0,0,0,0,0,64,233,1,0,244,1,0,0,0,0,0,0,80,233,1,0,52,2,0,0,0,0,0,0,88,233,1,0,77,1,0,0,0,0,0,0,96,233,1,0,188,1,0,0,0,0,0,0,104,233,1,0,244,1,0,0,0,0,0,0,216,226,1,0,250,0,0,0,0,0,0,0,112,233,1,0,210,2,0,0,0,0,0,0,120,233,1,0,188,1,0,0,0,0,0,0,136,233,1,0,232,3,0,0,0,0,0,0,144,233,1,0,210,2,0,0,0,0,0,0,152,233,1,0,244,1,0,0,0,0,0,0,160,233,1,0,244,1,0,0,0,0,0,0,176,233,1,0,88,1,0,0,0,0,0,0,184,233,1,0,210,2,0,0,0,0,0,0,192,233,1,0,155,2,0,0,0,0,0,0,200,233,1,0,155,2,0,0,0,0,0,0,208,233,1,0,188,1,0,0,0,0,0,0,216,233,1,0,210,2,0,0,0,0,0,0,224,233,1,0,99,2,0,0,0,0,0,0,232,233,1,0,238,2,0,0,0,0,0,0,248,233,1,0,44,2,0,0,0,0,0,0,0,234,1,0,210,2,0,0,0,0,0,0,8,234,1,0,210,2,0,0,0,0,0,0,16,234,1,0,77,1,0,0,0,0,0,0,24,234,1,0,133,1,0,0,0,0,0,0,32,234,1,0,210,2,0,0,0,0,0,0,40,234,1,0,22,1,0,0,0,0,0,0,48,234,1,0,22,1,0,0,0,0,0,0,64,234,1,0,99,2,0,0,0,0,0,0,72,234,1,0,250,0,0,0,0,0,0,0,88,234,1,0,121,3,0,0,0,0,0,0,96,234,1,0,210,2,0,0,0,0,0,0,104,234,1,0,244,1,0,0,0,0,0,0,112,234,1,0,99,2,0,0,0,0,0,0,128,234,1,0,210,2,0,0,0,0,0,0,136,234,1,0,44,2,0,0,0,0,0,0,144,234,1,0,210,2,0,0,0,0,0,0,152,234,1,0,210,2,0,0,0,0,0,0,168,234,1,0,155,2,0,0,0,0,0,0,176,234,1,0,210,2,0,0,0,0,0,0,184,234,1,0,77,1,0,0,0,0,0,0,192,234,1,0,44,2,0,0,0,0,0,0,200,234,1,0,99,2,0,0,0,0,0,0,208,234,1,0,210,2,0,0,0,0,0,0,216,234,1,0,188,1,0,0,0,0,0,0,224,234,1,0,210,2,0,0,0,0,0,0,232,234,1,0,176,3,0,0,0,0,0,0,240,234,1,0,210,2,0,0,0,0,0,0,248,234,1,0,188,1,0,0,0,0,0,0,8,235,1,0,52,2,0,0,0,0,0,0,16,235,1,0,210,2,0,0,0,0,0,0,24,235,1,0,99,2,0,0,0,0,0,0,32,235,1,0,244,1,0,0,0,0,0,0,40,235,1,0,188,1,0,0,0,0,0,0,48,235,1,0,210,2,0,0,0,0,0,0,64,235,1,0,244,1,0,0,0,0,0,0,72,235,1,0,188,1,0,0,0,0,0,0,80,235,1,0,244,1,0,0,0,0,0,0,88,235,1,0,188,1,0,0,0,0,0,0,96,235,1,0,77,1,0,0,0,0,0,0,104,235,1,0,244,1,0,0,0,0,0,0,112,235,1,0,94,1,0,0,0,0,0,0,120,235,1,0,244,1,0,0,0,0,0,0,128,235,1,0,22,1,0,0,0,0,0,0,136,235,1,0,210,2,0,0,0,0,0,0,144,235,1,0,244,1,0,0,0,0,0,0,152,235,1,0,22,1,0,0,0,0,0,0,160,235,1,0,244,1,0,0,0,0,0,0,168,235,1,0,22,1,0,0,0,0,0,0,176,235,1,0,10,3,0,0,0,0,0,0,184,235,1,0,244,1,0,0,0,0,0,0,192,235,1,0,22,1,0,0,0,0,0,0,208,235,1,0,244,1,0,0,0,0,0,0,216,235,1,0,20,1,0,0,0,0,0,0,232,235,1,0,77,1,0,0,0,0,0,0,240,235,1,0,244,1,0,0,0,0,0,0,248,235,1,0,244,1,0,0,0,0,0,0,0,236,1,0,244,1,0,0,0,0,0,0,16,236,1,0,77,1,0,0,0,0,0,0,24,236,1,0,44,1,0,0,0,0,0,0,40,236,1,0,188,1,0,0,0,0,0,0,48,236,1,0,133,1,0,0,0,0,0,0,56,236,1,0,121,3,0,0,0,0,0,0,64,236,1,0,22,1,0,0,0,0,0,0,72,236,1,0,52,2,0,0,0,0,0,0,80,236,1,0,244,1,0,0,0,0,0,0,88,236,1,0,155,2,0,0,0,0,0,0,96,236,1,0,244,1,0,0,0,0,0,0,104,236,1,0,210,2,0,0,0,0,0,0,112,236,1,0,244,1,0,0,0,0,0,0,120,236,1,0,244,1,0,0,0,0,0,0,128,236,1,0,188,1,0,0,0,0,0,0,136,236,1,0,210,2,0,0,0,0,0,0,144,236,1,0,250,0,0,0,0,0,0,0,160,236,1,0,77,1,0,0,0,0,0,0,176,236,1,0,77,1,0,0,0,0,0,0,192,236,1,0,210,2,0,0,0,0,0,0,200,236,1,0,152,1,0,0,0,0,0,0,216,236,1,0,244,1,0,0,0,0,0,0,232,236,1,0,244,1,0,0,0,0,0,0,240,236,1,0,37,2,0,0,0,0,0,0,0,237,1,0,44,2,0,0,0,0,0,0,8,237,1,0,99,2,0,0,0,0,0,0,16,237,1,0,22,1,0,0,0,0,0,0,32,237,1,0,244,1,0,0,0,0,0,0,40,237,1,0,37,2,0,0,0,0,0,0,56,237,1,0,215,1,0,0,0,0,0,0,64,237,1,0,77,1,0,0,0,0,0,0,80,237,1,0,188,1,0,0,0,0,0,0,88,237,1,0,99,2,0,0,0,0,0,0,104,237,1,0,244,1,0,0,0,0,0,0,112,237,1,0,212,3,0,0,0,0,0,0,128,237,1,0,244,1,0,0,0,0,0,0,144,237,1,0,244,1,0,0,0,0,0,0,152,237,1,0,77,1,0,0,0,0,0,0,160,237,1,0,210,2,0,0,0,0,0,0,168,237,1,0,99,2,0,0,0,0,0,0,176,237,1,0,232,3,0,0,0,0,0,0,192,237,1,0,133,1,0,0,0,0,0,0,200,237,1,0,121,3,0,0,0,0,0,0,208,237,1,0,210,2,0,0,0,0,0,0,224,237,1,0,22,1,0,0,0,0,0,0,232,237,1,0,188,1,0,0,0,0,0,0,248,237,1,0,77,1,0,0,0,0,0,0,8,238,1,0,77,1,0,0,0,0,0,0,16,238,1,0,180,0,0,0,0,0,0,0,32,238,1,0,244,1,0,0,0,0,0,0,40,238,1,0,77,1,0,0,0,0,0,0,56,238,1,0,244,1,0,0,0,0,0,0,64,238,1,0,210,2,0,0,0,0,0,0,72,238,1,0,210,2,0,0,0,0,0,0,80,238,1,0,210,2,0,0,0,0,0,0,88,238,1,0,188,1,0,0,0,0,0,0,104,238,1,0,210,2,0,0,0,0,0,0,120,238,1,0,248,2,0,0,0,0,0,0,136,238,1,0,99,2,0,0,0,0,0,0,144,238,1,0,22,1,0,0,0,0,0,0,152,238,1,0,99,2,0,0,0,0,0,0,168,238,1,0,244,1,0,0,0,0,0,0,176,238,1,0,77,1,0,0,0,0,0,0,192,238,1,0,77,1,0,0,0,0,0,0,208,238,1,0,244,1,0,0,0,0,0,0,216,238,1,0,188,1,0,0,0,0,0,0,224,238,1,0,210,2,0,0,0,0,0,0,240,238,1,0,244,1,0,0,0,0,0,0,0,239,1,0,77,1,0,0,0,0,0,0,16,239,1,0,210,2,0,0,0,0,0,0,24,239,1,0,77,1,0,0,0,0,0,0,40,239,1,0,210,2,0,0,0,0,0,0,56,239,1,0,232,3,0,0,0,0,0,0,72,239,1,0,210,2,0,0,0,0,0,0,88,239,1,0,244,1,0,0,0,0,0,0,96,239,1,0,188,1,0,0,0,0,0,0,104,239,1,0,99,2,0,0,0,0,0,0,112,239,1,0,188,1,0,0,0,0,0,0,128,239,1,0,188,1,0,0,0,0,0,0,136,239,1,0,188,1,0,0,0,0,0,0,152,239,1,0,22,1,0,0,0,0,0,0,168,239,1,0,210,2,0,0,0,0,0,0,176,239,1,0,155,2,0,0,0,0,0,0,184,239,1,0,244,1,0,0,0,0,0,0,200,239,1,0,244,1,0,0,0,0,0,0,216,239,1,0,210,2,0,0,0,0,0,0,224,239,1,0,244,1,0,0,0,0,0,0,232,239,1,0,244,1,0,0,0,0,0,0,240,239,1,0,244,1,0,0,0,0,0,0,248,239,1,0,244,1,0,0,0,0,0,0,8,240,1,0,99,2,0,0,0,0,0,0,16,240,1,0,44,2,0,0,0,0,0,0,32,240,1,0,238,2,0,0,0,0,0,0,48,240,1,0,244,1,0,0,0,0,0,0,64,240,1,0,155,2,0,0,0,0,0,0,80,240,1,0,244,1,0,0,0,0,0,0,96,240,1,0,77,1,0,0,0,0,0,0,104,240,1,0,153,3,0,0,0,0,0,0,112,240,1,0,188,1,0,0,0,0,0,0,120,240,1,0,244,1,0,0,0,0,0,0,136,240,1,0,244,1,0,0,0,0,0,0,144,240,1,0,210,2,0,0,0,0,0,0,152,240,1,0,52,2,0,0,0,0,0,0,168,240,1,0,244,1,0,0,0,0,0,0,176,240,1,0,244,1,0,0,0,0,0,0,184,240,1,0,44,2,0,0,0,0,0,0,200,240,1,0,210,2,0,0,0,0,0,0,208,240,1,0,155,2,0,0,0,0,0,0,216,240,1,0,220,1,0,0,0,0,0,0,232,240,1,0,244,1,0,0,0,0,0,0,240,240,1,0,224,1,0,0,0,0,0,0,0,241,1,0,44,2,0,0,0,0,0,0,8,241,1,0,188,1,0,0,0,0,0,0,16,241,1,0,133,1,0,0,0,0,0,0,32,241,1,0,188,1,0,0,0,0,0,0,48,241,1,0,210,2,0,0,0,0,0,0,56,241,1,0,244,1,0,0,0,0,0,0,64,241,1,0,210,2,0,0,0,0,0,0,80,241,1,0,210,2,0,0,0,0,0,0,88,241,1,0,133,1,0,0,0,0,0,0,104,241,1,0,77,1,0,0,0,0,0,0,112,241,1,0,244,1,0,0,0,0,0,0,120,241,1,0,77,1,0,0,0,0,0,0,128,241,1,0,99,2,0,0,0,0,0,0,136,241,1,0,99,2,0,0,0,0,0,0,144,241,1,0,244,1,0,0,0,0,0,0,152,241,1,0,144,1,0,0,0,0,0,0,160,241,1,0,248,2,0,0,0,0,0,0,176,241,1,0,197,1,0,0,0,0,0,0,184,241,1,0,210,2,0,0,0,0,0,0,192,241,1,0,65,3,0,0,0,0,0,0,200,241,1,0,244,1,0,0,0,0,0,0,208,241,1,0,197,1,0,0,0,0,0,0,224,241,1,0,76,2,0,0,0,0,0,0,232,241,1,0,210,2,0,0,0,0,0,0,240,241,1,0,244,1,0,0,0,0,0,0,248,241,1,0,88,2,0,0,0,0,0,0,8,242,1,0,77,1,0,0,0,0,0,0,16,242,1,0,99,2,0,0,0,0,0,0,24,242,1,0,244,1,0,0,0,0,0,0,40,242,1,0,244,1,0,0,0,0,0,0,48,242,1,0,210,2,0,0,0,0,0,0,56,242,1,0,99,2,0,0,0,0,0,0,72,242,1,0,70,1,0,0,0,0,0,0,80,242,1,0,188,1,0,0,0,0,0,0,88,242,1,0,100,2,0,0,0,0,0,0,96,242,1,0,210,2,0,0,0,0,0,0,112,242,1,0,213,1,0,0,0,0,0,0,128,242,1,0,188,1,0,0,0,0,0,0,136,242,1,0,77,1,0,0,0,0,0,0,144,242,1,0,244,1,0,0,0,0,0,0,152,242,1,0,77,1,0,0,0,0,0,0,168,242,1,0,77,1,0,0,0,0,0,0,176,242,1,0,10,3,0,0,0,0,0,0,192,242,1,0,22,1,0,0,0,0,0,0,200,242,1,0,22,1,0,0,0,0,0,0,208,242,1,0,210,2,0,0,0,0,0,0,216,242,1,0,52,2,0,0,0,0,0,0,224,242,1,0,244,1,0,0,0,0,0,0,232,242,1,0,77,1,0,0,0,0,0,0,248,242,1,0,22,1,0,0,0,0,0,0,8,243,1,0,210,2,0,0,0,0,0,0,16,243,1,0,244,1,0,0,0,0,0,0,32,243,1,0,44,1,0,0,0,0,0,0,48,243,1,0,77,1,0,0,0,0,0,0,56,243,1,0,244,1,0,0,0,0,0,0,64,243,1,0,77,1,0,0,0,0,0,0,80,243,1,0,22,1,0,0,0,0,0,0,88,243,1,0,188,1,0,0,0,0,0,0,104,243,1,0,244,1,0,0,0,0,0,0,112,243,1,0,244,1,0,0,0,0,0,0,120,243,1,0,244,1,0,0,0,0,0,0,128,243,1,0,155,2,0,0,0,0,0,0,144,243,1,0,44,2,0,0,0,0,0,0,152,243,1,0,44,2,0,0,0,0,0,0,160,243,1,0,210,2,0,0,0,0,0,0,176,243,1,0,155,2,0,0,0,0,0,0,184,243,1,0,77,1,0,0,0,0,0,0,200,243,1,0,244,1,0,0,0,0,0,0,216,243,1,0,244,1,0,0,0,0,0,0,232,243,1,0,210,2,0,0,0,0,0,0,240,243,1,0,244,1,0,0,0,0,0,0,248,243,1,0,44,2,0,0,0,0,0,0,0,244,1,0,54,1,0,0,0,0,0,0,16,244,1,0,22,1,0,0,0,0,0,0,32,244,1,0,244,1,0,0,0,0,0,0,48,244,1,0,37,2,0,0,0,0,0,0,64,244,1,0,77,1,0,0,0,0,0,0,72,244,1,0,77,1,0,0,0,0,0,0,88,244,1,0,99,2,0,0,0,0,0,0,104,244,1,0,188,1,0,0,0,0,0,0,120,244,1,0,188,1,0,0,0,0,0,0,128,244,1,0,99,2,0,0,0,0,0,0,136,244,1,0,22,1,0,0,0,0,0,0,152,244,1,0,224,1,0,0,0,0,0,0,168,244,1,0,188,1,0,0,0,0,0,0,184,244,1,0,188,1,0,0,0,0,0,0,192,244,1,0,133,1,0,0,0,0,0,0,200,244,1,0,22,1,0,0,0,0,0,0,208,244,1,0,244,1,0,0,0,0,0,0,216,244,1,0,244,1,0,0,0,0,0,0,232,244,1,0,52,2,0,0,0,0,0,0,248,244,1,0,188,1,0,0,0,0,0,0,8,245,1,0,210,2,0,0,0,0,0,0,16,245,1,0,77,1,0,0,0,0,0,0,24,245,1,0,200,0,0,0,0,0,0,0,32,245,1,0,167,0,0,0,0,0,0,0,48,245,1,0,52,2,0,0,0,0,0,0,56,245,1,0,188,1,0,0,0,0,0,0,64,245,1,0,77,1,0,0,0,0,0,0,80,245,1,0,77,1,0,0,0,0,0,0,88,245,1,0,250,0,0,0,0,0,0,0,96,245,1,0,155,2,0,0,0,0,0,0,104,245,1,0,210,2,0,0,0,0,0,0,120,245,1,0,52,2,0,0,0,0,0,0,128,245,1,0,188,1,0,0,0,0,0,0,136,245,1,0,200,0,0,0,0,0,0,0,152,245,1,0,77,1,0,0,0,0,0,0,168,245,1,0,99,2,0,0,0,0,0,0,184,245,1,0,44,1,0,0,0,0,0,0,0,0,0,0,40,226,1,0,182,1,0,0,0,0,0,0,48,226,1,0,138,0,0,0,0,0,0,0,56,226,1,0,21,1,0,0,0,0,0,0,64,226,1,0,159,1,0,0,0,0,0,0,72,226,1,0,253,1,0,0,0,0,0,0,80,226,1,0,154,1,0,0,0,0,0,0,88,226,1,0,234,0,0,0,0,0,0,0,96,226,1,0,234,0,0,0,0,0,0,0,104,226,1,0,134,1,0,0,0,0,0,0,112,226,1,0,20,3,0,0,0,0,0,0,120,226,1,0,20,3,0,0,0,0,0,0,128,226,1,0,20,3,0,0,0,0,0,0,136,226,1,0,20,3,0,0,0,0,0,0,144,226,1,0,20,3,0,0,0,0,0,0,152,226,1,0,20,3,0,0,0,0,0,0,160,226,1,0,20,3,0,0,0,0,0,0,168,226,1,0,20,3,0,0,0,0,0,0,176,226,1,0,20,3,0,0,0,0,0,0,184,226,1,0,20,3,0,0,0,0,0,0,192,226,1,0,134,1,0,0,0,0,0,0,200,226,1,0,20,1,0,0,0,0,0,0,208,226,1,0,20,1,0,0,0,0,0,0,216,226,1,0,22,1,0,0,0,0,0,0,224,226,1,0,61,1,0,0,0,0,0,0,232,226,1,0,61,1,0,0,0,0,0,0,240,226,1,0,78,1,0,0,0,0,0,0,248,226,1,0,78,1,0,0,0,0,0,0,0,227,1,0,136,1,0,0,0,0,0,0,8,227,1,0,136,1,0,0,0,0,0,0,16,227,1,0,156,2,0,0,0,0,0,0,24,227,1,0,20,3,0,0,0,0,0,0,32,227,1,0,20,3,0,0,0,0,0,0,40,227,1,0,20,3,0,0,0,0,0,0,48,227,1,0,20,3,0,0,0,0,0,0,56,227,1,0,20,3,0,0,0,0,0,0,64,227,1,0,20,3,0,0,0,0,0,0,72,227,1,0,20,3,0,0,0,0,0,0,80,227,1,0,20,3,0,0,0,0,0,0,88,227,1,0,20,3,0,0,0,0,0,0,96,227,1,0,20,3,0,0,0,0,0,0,104,227,1,0,126,3,0,0,0,0,0,0,112,227,1,0,70,3,0,0,0,0,0,0,120,227,1,0,156,3,0,0,0,0,0,0,128,227,1,0,248,3,0,0,0,0,0,0,136,227,1,0,202,1,0,0,0,0,0,0,144,227,1,0,156,3,0,0,0,0,0,0,152,227,1,0,150,3,0,0,0,0,0,0,160,227,1,0,159,3,0,0,0,0,0,0,168,227,1,0,160,3,0,0,0,0,0,0,176,227,1,0,160,3,0,0,0,0,0,0,184,227,1,0,66,3,0,0,0,0,0,0,192,227,1,0,105,3,0,0,0,0,0,0,200,227,1,0,60,3,0,0,0,0,0,0,208,227,1,0,156,3,0,0,0,0,0,0,216,227,1,0,149,3,0,0,0,0,0,0,224,227,1,0,162,3,0,0,0,0,0,0,232,227,1,0,163,3,0,0,0,0,0,0,240,227,1,0,207,1,0,0,0,0,0,0,248,227,1,0,115,3,0,0,0,0,0,0,0,228,1,0,68,3,0,0,0,0,0,0,8,228,1,0,99,3,0,0,0,0,0,0,16,228,1,0,184,2,0,0,0,0,0,0,24,228,1,0,106,3,0,0,0,0,0,0,32,228,1,0,248,2,0,0,0,0,0,0,40,228,1,0,178,3,0,0,0,0,0,0,48,228,1,0,97,3,0,0,0,0,0,0,56,228,1,0,199,3,0,0,0,0,0,0,64,228,1,0,63,3,0,0,0,0,0,0,72,228,1,0,105,3,0,0,0,0,0,0,80,228,1,0,159,3,0,0,0,0,0,0,88,228,1,0,206,3,0,0,0,0,0,0,96,228,1,0,193,3,0,0,0,0,0,0,104,228,1,0,212,3,0,0,0,0,0,0,112,228,1,0,207,2,0,0,0,0,0,0,120,228,1,0,21,3,0,0,0,0,0,0,128,228,1,0,238,1,0,0,0,0,0,0,136,228,1,0,40,2,0,0,0,0,0,0,144,228,1,0,25,2,0,0,0,0,0,0,152,228,1,0,65,2,0,0,0,0,0,0,160,228,1,0,202,3,0,0,0,0,0,0,168,228,1,0,150,3,0,0,0,0,0,0,176,228,1,0,236,2,0,0,0,0,0,0,184,228,1,0,68,3,0,0,0,0,0,0,192,228,1,0,3,3,0,0,0,0,0,0,200,228,1,0,120,3,0,0,0,0,0,0,208,228,1,0,236,2,0,0,0,0,0,0,216,228,1,0,3,3,0,0,0,0,0,0,224,228,1,0,120,3,0,0,0,0,0,0,232,228,1,0,99,3,0,0,0,0,0,0,240,228,1,0,180,2,0,0,0,0,0,0,248,228,1,0,192,3,0,0,0,0,0,0,0,229,1,0,171,3,0,0,0,0,0,0,8,229,1,0,37,2,0,0,0,0,0,0,16,229,1,0,87,3,0,0,0,0,0,0,24,229,1,0,143,3,0,0,0,0,0,0,32,229,1,0,165,3,0,0,0,0,0,0,40,229,1,0,177,3,0,0,0,0,0,0,48,229,1,0,206,3,0,0,0,0,0,0,56,229,1,0,243,2,0,0,0,0,0,0,64,229,1,0,78,3,0,0,0,0,0,0,72,229,1,0,250,2,0,0,0,0,0,0,80,229,1,0,249,2,0,0,0,0,0,0,88,229,1,0,59,2,0,0,0,0,0,0,96,229,1,0,165,2,0,0,0,0,0,0,104,229,1,0,251,2,0,0,0,0,0,0,112,229,1,0,248,2,0,0,0,0,0,0,120,229,1,0,247,2,0,0,0,0,0,0,128,229,1,0,242,2,0,0,0,0,0,0,136,229,1,0,18,3,0,0,0,0,0,0,144,229,1,0,20,3,0,0,0,0,0,0,152,229,1,0,20,3,0,0,0,0,0,0,160,229,1,0,22,3,0,0,0,0,0,0,168,229,1,0,25,3,0,0,0,0,0,0,176,229,1,0,26,3,0,0,0,0,0,0,184,229,1,0,48,3,0,0,0,0,0,0,192,229,1,0,55,3,0,0,0,0,0,0,200,229,1,0,21,3,0,0,0,0,0,0,208,229,1,0,73,3,0,0,0,0,0,0,216,229,1,0,55,3,0,0,0,0,0,0,224,229,1,0,65,3,0,0,0,0,0,0,232,229,1,0,48,3,0,0,0,0,0,0,240,229,1,0,63,3,0,0,0,0,0,0,248,229,1,0,155,3,0,0,0,0,0,0,0,230,1,0,232,2,0,0,0,0,0,0,8,230,1,0,211,2,0,0,0,0,0,0,16,230,1,0,237,2,0,0,0,0,0,0,24,230,1,0,22,3,0,0,0,0,0,0,32,230,1,0,24,3,0,0,0,0,0,0,40,230,1,0,183,2,0,0,0,0,0,0,48,230,1,0,156,2,0,0,0,0,0,0,56,230,1,0,220,2,0,0,0,0,0,0,64,230,1,0,32,2,0,0,0,0,0,0,72,230,1,0,32,2,0,0,0,0,0,0,80,230,1,0,142,3,0,0,0,0,0,0,88,230,1,0,143,3,0,0,0,0,0,0,96,230,1,0,155,2,0,0,0,0,0,0,104,230,1,0,248,2,0,0,0,0,0,0,112,230,1,0,248,2,0,0,0,0,0,0,120,230,1,0,114,2,0,0,0,0,0,0,128,230,1,0,8,3,0,0,0,0,0,0,136,230,1,0,0,3,0,0,0,0,0,0,144,230,1,0,24,3,0,0,0,0,0,0,152,230,1,0,247,2,0,0,0,0,0,0,160,230,1,0,195,2,0,0,0,0,0,0,168,230,1,0,196,2,0,0,0,0,0,0,176,230,1,0,170,2,0,0,0,0,0,0,184,230,1,0,189,2,0,0,0,0,0,0,192,230,1,0,58,3,0,0,0,0,0,0,200,230,1,0,47,3,0,0,0,0,0,0,208,230,1,0,182,2,0,0,0,0,0,0,216,230,1,0,83,2,0,0,0,0,0,0,224,230,1,0,8,3,0,0,0,0,0,0,232,230,1,0,178,2,0,0,0,0,0,0,240,230,1,0,23,3,0,0,0,0,0,0,248,230,1,0,22,3,0,0,0,0,0,0,0,231,1,0,21,3,0,0,0,0,0,0,8,231,1,0,21,3,0,0,0,0,0,0,16,231,1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+112648); -/* memory initializer */ allocate([195,2,0,0,0,0,0,0,24,231,1,0,175,2,0,0,0,0,0,0,32,231,1,0,184,2,0,0,0,0,0,0,40,231,1,0,177,2,0,0,0,0,0,0,48,231,1,0,18,3,0,0,0,0,0,0,56,231,1,0,19,3,0,0,0,0,0,0,64,231,1,0,201,2,0,0,0,0,0,0,72,231,1,0,23,3,0,0,0,0,0,0,80,231,1,0,184,2,0,0,0,0,0,0,88,231,1,0,106,3,0,0,0,0,0,0,96,231,1,0,20,3,0,0,0,0,0,0,104,231,1,0,20,3,0,0,0,0,0,0,112,231,1,0,206,3,0,0,0,0,0,0,120,231,1,0,20,3,0,0,0,0,0,0,128,231,1,0,250,2,0,0,0,0,0,0,136,231,1,0,20,3,0,0,0,0,0,0,144,231,1,0,247,2,0,0,0,0,0,0,152,231,1,0,20,3,0,0,0,0,0,0,160,231,1,0,253,1,0,0,0,0,0,0,168,231,1,0,20,3,0,0,0,0,0,0,176,231,1,0,154,1,0,0,0,0,0,0,184,231,1,0,20,3,0,0,0,0,0,0,192,231,1,0,20,3,0,0,0,0,0,0,200,231,1,0,20,3,0,0,0,0,0,0,208,231,1,0,20,3,0,0,0,0,0,0,216,231,1,0,17,3,0,0,0,0,0,0,224,231,1,0,23,3,0,0,0,0,0,0,232,231,1,0,105,3,0,0,0,0,0,0,240,231,1,0,249,2,0,0,0,0,0,0,248,231,1,0,250,2,0,0,0,0,0,0,0,232,1,0,247,2,0,0,0,0,0,0,8,232,1,0,124,3,0,0,0,0,0,0,16,232,1,0,124,3,0,0,0,0,0,0,24,232,1,0,20,3,0,0,0,0,0,0,32,232,1,0,16,3,0,0,0,0,0,0,40,232,1,0,20,3,0,0,0,0,0,0,48,232,1,0,20,3,0,0,0,0,0,0,56,232,1,0,20,3,0,0,0,0,0,0,64,232,1,0,20,3,0,0,0,0,0,0,72,232,1,0,20,3,0,0,0,0,0,0,80,232,1,0,20,3,0,0,0,0,0,0,88,232,1,0,20,3,0,0,0,0,0,0,96,232,1,0,20,3,0,0,0,0,0,0,104,232,1,0,20,3,0,0,0,0,0,0,112,232,1,0,20,3,0,0,0,0,0,0,97,56,49,0,0,0,0,0,97,56,50,0,0,0,0,0,97,56,51,0,0,0,0,0,97,56,52,0,0,0,0,0,97,56,53,0,0,0,0,0,97,56,54,0,0,0,0,0,97,56,55,0,0,0,0,0,97,56,56,0,0,0,0,0,97,56,57,0,0,0,0,0,97,49,52,48,0,0,0,0,97,49,52,49,0,0,0,0,97,49,52,50,0,0,0,0,97,49,52,51,0,0,0,0,97,49,52,52,0,0,0,0,97,49,52,53,0,0,0,0,97,49,52,54,0,0,0,0,97,49,52,55,0,0,0,0,97,49,52,56,0,0,0,0,97,49,52,57,0,0,0,0,97,57,48,0,0,0,0,0,97,57,49,0,0,0,0,0,97,57,50,0,0,0,0,0,115,112,97,99,101,0,0,0,97,57,51,0,0,0,0,0,97,57,52,0,0,0,0,0,97,57,53,0,0,0,0,0,97,57,54,0,0,0,0,0,97,57,55,0,0,0,0,0,97,57,56,0,0,0,0,0,97,57,57,0,0,0,0,0,97,49,53,48,0,0,0,0,97,49,53,49,0,0,0,0,97,49,53,50,0,0,0,0,97,49,53,51,0,0,0,0,97,49,53,52,0,0,0,0,97,49,53,53,0,0,0,0,97,49,53,54,0,0,0,0,97,49,53,55,0,0,0,0,97,49,53,56,0,0,0,0,97,49,53,57,0,0,0,0,97,49,54,48,0,0,0,0,97,49,54,49,0,0,0,0,97,49,54,50,0,0,0,0,97,49,54,51,0,0,0,0,97,49,54,52,0,0,0,0,97,49,54,53,0,0,0,0,97,49,54,54,0,0,0,0,97,49,54,55,0,0,0,0,97,49,54,56,0,0,0,0,97,49,54,57,0,0,0,0,97,49,55,48,0,0,0,0,97,49,55,49,0,0,0,0,97,49,55,50,0,0,0,0,97,49,55,51,0,0,0,0,97,49,55,52,0,0,0,0,97,49,55,53,0,0,0,0,97,49,55,54,0,0,0,0,97,49,55,55,0,0,0,0,97,49,55,56,0,0,0,0,97,49,55,57,0,0,0,0,97,49,56,48,0,0,0,0,97,49,56,49,0,0,0,0,97,49,56,50,0,0,0,0,97,49,56,51,0,0,0,0,97,49,56,52,0,0,0,0,97,49,56,53,0,0,0,0,97,49,56,54,0,0,0,0,97,49,56,55,0,0,0,0,97,49,56,56,0,0,0,0,97,49,56,57,0,0,0,0,97,49,0,0,0,0,0,0,97,50,0,0,0,0,0,0,97,51,0,0,0,0,0,0,97,52,0,0,0,0,0,0,97,53,0,0,0,0,0,0,97,54,0,0,0,0,0,0,97,55,0,0,0,0,0,0,97,56,0,0,0,0,0,0,97,57,0,0,0,0,0,0,97,49,57,48,0,0,0,0,97,49,57,49,0,0,0,0,97,49,57,50,0,0,0,0,97,49,57,51,0,0,0,0,97,49,57,52,0,0,0,0,97,49,57,53,0,0,0,0,97,49,57,54,0,0,0,0,97,49,57,55,0,0,0,0,97,49,57,56,0,0,0,0,97,49,57,57,0,0,0,0,97,49,48,0,0,0,0,0,97,49,49,0,0,0,0,0,97,49,50,0,0,0,0,0,97,49,51,0,0,0,0,0,97,49,52,0,0,0,0,0,97,49,53,0,0,0,0,0,97,49,54,0,0,0,0,0,97,49,55,0,0,0,0,0,97,49,56,0,0,0,0,0,97,49,57,0,0,0,0,0,97,50,48,0,0,0,0,0,97,50,49,0,0,0,0,0,97,50,50,0,0,0,0,0,97,50,51,0,0,0,0,0,97,50,52,0,0,0,0,0,97,50,53,0,0,0,0,0,97,50,54,0,0,0,0,0,97,50,55,0,0,0,0,0,97,50,56,0,0,0,0,0,97,50,57,0,0,0,0,0,97,51,48,0,0,0,0,0,97,51,49,0,0,0,0,0,97,51,50,0,0,0,0,0,97,51,51,0,0,0,0,0,97,51,52,0,0,0,0,0,97,51,53,0,0,0,0,0,97,51,54,0,0,0,0,0,97,51,55,0,0,0,0,0,97,51,56,0,0,0,0,0,97,51,57,0,0,0,0,0,97,52,48,0,0,0,0,0,97,52,49,0,0,0,0,0,97,52,50,0,0,0,0,0,97,52,51,0,0,0,0,0,97,52,52,0,0,0,0,0,97,52,53,0,0,0,0,0,97,52,54,0,0,0,0,0,97,52,55,0,0,0,0,0,97,52,56,0,0,0,0,0,97,52,57,0,0,0,0,0,97,49,48,48,0,0,0,0,97,49,48,49,0,0,0,0,97,49,48,50,0,0,0,0,97,49,48,51,0,0,0,0,97,49,48,52,0,0,0,0,97,49,48,53,0,0,0,0,97,49,48,54,0,0,0,0,97,49,48,55,0,0,0,0,97,49,48,56,0,0,0,0,97,49,48,57,0,0,0,0,97,53,48,0,0,0,0,0,97,53,49,0,0,0,0,0,97,53,50,0,0,0,0,0,97,53,51,0,0,0,0,0,97,53,52,0,0,0,0,0,97,53,53,0,0,0,0,0,97,53,54,0,0,0,0,0,97,53,55,0,0,0,0,0,97,53,56,0,0,0,0,0,97,53,57,0,0,0,0,0,97,49,49,48,0,0,0,0,97,49,49,49,0,0,0,0,97,49,49,50,0,0,0,0,97,49,49,55,0,0,0,0,97,49,49,56,0,0,0,0,97,49,49,57,0,0,0,0,97,54,48,0,0,0,0,0,97,54,49,0,0,0,0,0,97,54,50,0,0,0,0,0,97,54,51,0,0,0,0,0,97,54,52,0,0,0,0,0,97,54,53,0,0,0,0,0,97,54,54,0,0,0,0,0,97,54,55,0,0,0,0,0,97,54,56,0,0,0,0,0,97,54,57,0,0,0,0,0,97,50,48,48,0,0,0,0,97,50,48,49,0,0,0,0,97,49,50,48,0,0,0,0,97,49,50,49,0,0,0,0,97,50,48,50,0,0,0,0,97,49,50,50,0,0,0,0,97,50,48,51,0,0,0,0,97,49,50,51,0,0,0,0,97,50,48,52,0,0,0,0,97,49,50,52,0,0,0,0,97,50,48,53,0,0,0,0,97,49,50,53,0,0,0,0,97,50,48,54,0,0,0,0,97,49,50,54,0,0,0,0,97,49,50,55,0,0,0,0,97,49,50,56,0,0,0,0,97,49,50,57,0,0,0,0,97,55,48,0,0,0,0,0,97,55,49,0,0,0,0,0,97,55,50,0,0,0,0,0,97,55,51,0,0,0,0,0,97,55,52,0,0,0,0,0,97,55,53,0,0,0,0,0,97,55,54,0,0,0,0,0,97,55,55,0,0,0,0,0,97,55,56,0,0,0,0,0,97,55,57,0,0,0,0,0,97,49,51,48,0,0,0,0,97,49,51,49,0,0,0,0,97,49,51,50,0,0,0,0,97,49,51,51,0,0,0,0,97,49,51,52,0,0,0,0,97,49,51,53,0,0,0,0,97,49,51,54,0,0,0,0,97,49,51,55,0,0,0,0,97,49,51,56,0,0,0,0,97,49,51,57,0,0,0,0,78,116,105,108,100,101,0,0,114,99,97,114,111,110,0,0,107,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,78,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,90,97,99,117,116,101,0,0,99,111,109,109,97,0,0,0,99,101,100,105,108,108,97,0,112,108,117,115,109,105,110,117,115,0,0,0,0,0,0,0,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,0,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,0,101,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,97,115,99,105,105,116,105,108,100,101,0,0,0,0,0,0,99,111,108,111,110,0,0,0,111,110,101,104,97,108,102,0,100,111,108,108,97,114,0,0,76,99,97,114,111,110,0,0,110,116,105,108,100,101,0,0,65,111,103,111,110,101,107,0,110,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,109,105,110,117,115,0,0,0,73,111,103,111,110,101,107,0,122,97,99,117,116,101,0,0,121,101,110,0,0,0,0,0,79,109,97,99,114,111,110,0,113,117,101,115,116,105,111,110,100,111,119,110,0,0,0,0,101,109,100,97,115,104,0,0,65,103,114,97,118,101,0,0,116,104,114,101,101,0,0,0,110,117,109,98,101,114,115,105,103,110,0,0,0,0,0,0,108,99,97,114,111,110,0,0,65,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,97,111,103,111,110,101,107,0,68,0,0,0,0,0,0,0,69,0,0,0,0,0,0,0,111,110,101,113,117,97,114,116,101,114,0,0,0,0,0,0,70,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,75,0,0,0,0,0,0,0,105,111,103,111,110,101,107,0,98,97,99,107,115,108,97,115,104,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,0,77,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,111,109,97,99,114,111,110,0,84,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,79,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,85,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,82,0,0,0,0,0,0,0,65,97,99,117,116,101,0,0,99,97,114,111,110,0,0,0,83,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,97,103,114,97,118,101,0,0,86,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,113,117,101,115,116,105,111,110,0,0,0,0,0,0,0,0,101,113,117,97,108,0,0,0,89,0,0,0,0,0,0,0,90,0,0,0,0,0,0,0,102,111,117,114,0,0,0,0,97,0,0,0,0,0,0,0,71,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,98,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,103,0,0,0,0,0,0,0,98,117,108,108,101,116,0,0,104,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,79,115,108,97,115,104,0,0,100,97,103,103,101,114,0,0,106,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0,116,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,111,0,0,0,0,0,0,0,111,114,100,102,101,109,105,110,105,110,101,0,0,0,0,0,114,105,110,103,0,0,0,0,112,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,117,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,114,0,0,0,0,0,0,0,116,119,111,115,117,112,101,114,105,111,114,0,0,0,0,0,97,97,99,117,116,101,0,0,115,0,0,0,0,0,0,0,79,69,0,0,0,0,0,0,116,0,0,0,0,0,0,0,100,105,118,105,100,101,0,0,117,0,0,0,0,0,0,0,67,99,97,114,111,110,0,0,118,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,121,0,0,0,0,0,0,0,122,0,0,0,0,0,0,0,71,98,114,101,118,101,0,0,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,0,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,0,73,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,78,97,99,117,116,101,0,0,113,117,111,116,101,100,98,108,0,0,0,0,0,0,0,0,103,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,109,117,0,0,0,0,0,0,103,114,101,97,116,101,114,101,113,117,97,108,0,0,0,0,83,99,97,114,111,110,0,0,76,115,108,97,115,104,0,0,115,101,109,105,99,111,108,111,110,0,0,0,0,0,0,0,111,115,108,97,115,104,0,0,108,101,115,115,101,113,117,97,108,0,0,0,0,0,0,0,108,111,122,101,110,103,101,0,112,97,114,101,110,114,105,103,104,116,0,0,0,0,0,0,99,99,97,114,111,110,0,0,69,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,103,98,114,101,118,101,0,0,116,114,97,100,101,109,97,114,107,0,0,0,0,0,0,0,100,97,103,103,101,114,100,98,108,0,0,0,0,0,0,0,110,97,99,117,116,101,0,0,109,97,99,114,111,110,0,0,79,116,105,108,100,101,0,0,69,109,97,99,114,111,110,0,101,108,108,105,112,115,105,115,0,0,0,0,0,0,0,0,115,99,97,114,111,110,0,0,65,69,0,0,0,0,0,0,85,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,108,115,108,97,115,104,0,0,113,117,111,116,101,100,98,108,108,101,102,116,0,0,0,0,103,117,105,108,115,105,110,103,108,114,105,103,104,116,0,0,104,121,112,104,101,110,0,0,113,117,111,116,101,115,105,110,103,108,101,0,0,0,0,0,101,105,103,104,116,0,0,0,101,120,99,108,97,109,100,111,119,110,0,0,0,0,0,0,101,110,100,97,115,104,0,0,111,101,0,0,0,0,0,0,65,98,114,101,118,101,0,0,85,109,97,99,114,111,110,0,101,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,65,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,99,111,112,121,114,105,103,104,116,0,0,0,0,0,0,0,69,103,114,97,118,101,0,0,115,108,97,115,104,0,0,0,69,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,111,116,105,108,100,101,0,0,73,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,0,0,0,0,0,0,0,111,110,101,0,0,0,0,0,101,109,97,99,114,111,110,0,79,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,117,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,0,0,0,0,0,85,103,114,97,118,101,0,0,113,117,111,116,101,114,105,103,104,116,0,0,0,0,0,0,85,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,112,101,114,116,104,111,117,115,97,110,100,0,0,0,0,0,89,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,117,109,97,99,114,111,110,0,97,98,114,101,118,101,0,0,69,97,99,117,116,101,0,0,97,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,101,103,114,97,118,101,0,0,101,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,105,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,69,116,104,0,0,0,0,0,97,101,0,0,0,0,0,0,97,115,116,101,114,105,115,107,0,0,0,0,0,0,0,0,111,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,85,97,99,117,116,101,0,0,117,103,114,97,118,101,0,0,110,105,110,101,0,0,0,0,102,105,118,101,0,0,0,0,117,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,90,99,97,114,111,110,0,0,83,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,116,104,114,101,101,113,117,97,114,116,101,114,115,0,0,0,103,117,105,108,108,101,109,111,116,114,105,103,104,116,0,0,67,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,121,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,116,105,108,100,101,0,0,0,97,116,0,0,0,0,0,0,101,97,99,117,116,101,0,0,117,110,100,101,114,115,99,111,114,101,0,0,0,0,0,0,69,117,114,111,0,0,0,0,68,99,114,111,97,116,0,0,109,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,122,101,114,111,0,0,0,0,101,116,104,0,0,0,0,0,83,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,79,103,114,97,118,101,0,0,82,97,99,117,116,101,0,0,112,97,114,116,105,97,108,100,105,102,102,0,0,0,0,0,117,97,99,117,116,101,0,0,98,114,97,99,101,108,101,102,116,0,0,0,0,0,0,0,84,104,111,114,110,0,0,0,122,99,97,114,111,110,0,0,115,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,99,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,68,99,97,114,111,110,0,0,100,99,114,111,97,116,0,0,79,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,79,97,99,117,116,101,0,0,115,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,111,103,111,110,101,107,0,0,111,103,114,97,118,101,0,0,114,97,99,117,116,101,0,0,84,99,97,114,111,110,0,0,69,111,103,111,110,101,107,0,116,104,111,114,110,0,0,0,100,101,103,114,101,101,0,0,114,101,103,105,115,116,101,114,101,100,0,0,0,0,0,0,114,97,100,105,99,97,108,0,65,114,105,110,103,0,0,0,112,101,114,99,101,110,116,0,115,105,120,0,0,0,0,0,112,97,114,97,103,114,97,112,104,0,0,0,0,0,0,0,100,99,97,114,111,110,0,0,85,111,103,111,110,101,107,0,116,119,111,0,0,0,0,0,115,117,109,109,97,116,105,111,110,0,0,0,0,0,0,0,73,103,114,97,118,101,0,0,76,97,99,117,116,101,0,0,111,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,111,97,99,117,116,101,0,0,85,114,105,110,103,0,0,0,76,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,116,99,97,114,111,110,0,0,101,111,103,111,110,101,107,0,68,101,108,116,97,0,0,0,79,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,97,115,99,105,105,99,105,114,99,117,109,0,0,0,0,0,97,114,105,110,103,0,0,0,103,114,97,118,101,0,0,0,117,111,103,111,110,101,107,0,98,114,97,99,107,101,116,114,105,103,104,116,0,0,0,0,73,97,99,117,116,101,0,0,97,109,112,101,114,115,97,110,100,0,0,0,0,0,0,0,105,103,114,97,118,101,0,0,108,97,99,117,116,101,0,0,78,99,97,114,111,110,0,0,112,108,117,115,0,0,0,0,117,114,105,110,103,0,0,0,113,117,111,116,101,115,105,110,103,108,98,97,115,101,0,0,108,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,89,97,99,117,116,101,0,0,111,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,116,104,114,101,101,115,117,112,101,114,105,111,114,0,0,0,97,99,117,116,101,0,0,0,115,101,99,116,105,111,110,0,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,0,105,97,99,117,116,101,0,0,113,117,111,116,101,100,98,108,98,97,115,101,0,0,0,0,110,99,97,114,111,110,0,0,102,108,111,114,105,110,0,0,121,97,99,117,116,101,0,0,82,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,102,105,0,0,0,0,0,0,102,108,0,0,0,0,0,0,65,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,67,97,99,117,116,101,0,0,73,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,103,117,105,108,108,101,109,111,116,108,101,102,116,0,0,0,103,101,114,109,97,110,100,98,108,115,0,0,0,0,0,0,65,109,97,99,114,111,110,0,115,101,118,101,110,0,0,0,83,97,99,117,116,101,0,0,111,114,100,109,97,115,99,117,108,105,110,101,0,0,0,0,100,111,116,108,101,115,115,105,0,0,0,0,0,0,0,0,115,116,101,114,108,105,110,103,0,0,0,0,0,0,0,0,110,111,116,101,113,117,97,108,0,0,0,0,0,0,0,0,73,109,97,99,114,111,110,0,114,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,90,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,97,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,99,97,99,117,116,101,0,0,69,99,97,114,111,110,0,0,105,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,98,114,97,99,101,114,105,103,104,116,0,0,0,0,0,0,113,117,111,116,101,100,98,108,114,105,103,104,116,0,0,0,97,109,97,99,114,111,110,0,115,97,99,117,116,101,0,0,105,109,97,99,114,111,110,0,99,101,110,116,0,0,0,0,99,117,114,114,101,110,99,121,0,0,0,0,0,0,0,0,108,111,103,105,99,97,108,110,111,116,0,0,0,0,0,0,122,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,65,116,105,108,100,101,0,0,98,114,101,118,101,0,0,0,98,97,114,0,0,0,0,0,102,114,97,99,116,105,111,110,0,0,0,0,0,0,0,0,108,101,115,115,0,0,0,0,101,99,97,114,111,110,0,0,103,117,105,108,115,105,110,103,108,108,101,102,116,0,0,0,101,120,99,108,97,109,0,0,112,101,114,105,111,100,0,0,82,99,97,114,111,110,0,0,75,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,103,114,101,97,116,101,114,0,97,116,105,108,100,101,0,0,98,114,111,107,101,110,98,97,114,0,0,0,0,0,0,0,113,117,111,116,101,108,101,102,116,0,0,0,0,0,0,0,69,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,111,110,101,115,117,112,101,114,105,111,114,0,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,101,120,0,0,0,97,108,112,104,97,0,0,0,117,110,105,111,110,0,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,99,111,112,121,114,105,103,104,116,115,97,110,115,0,0,0,97,114,114,111,119,117,112,0,97,112,112,108,101,0,0,0,112,97,114,101,110,108,101,102,116,98,116,0,0,0,0,0,110,111,116,101,108,101,109,101,110,116,0,0,0,0,0,0,98,101,116,97,0,0,0,0,98,114,97,99,101,108,101,102,116,98,116,0,0,0,0,0,76,97,109,98,100,97,0,0,80,104,105,0,0,0,0,0,83,105,103,109,97,0,0,0,97,112,112,114,111,120,101,113,117,97,108,0,0,0,0,0,109,105,110,117,116,101,0,0,99,105,114,99,108,101,112,108,117,115,0,0,0,0,0,0,79,109,105,99,114,111,110,0,108,97,109,98,100,97,0,0,112,104,105,0,0,0,0,0,97,108,101,112,104,0,0,0,84,97,117,0,0,0,0,0,115,112,97,100,101,0,0,0,108,111,103,105,99,97,108,97,110,100,0,0,0,0,0,0,115,105,103,109,97,0,0,0,112,114,111,112,101,114,115,117,112,101,114,115,101,116,0,0,111,109,105,99,114,111,110,0,69,112,115,105,108,111,110,0,101,109,112,116,121,115,101,116,0,0,0,0,0,0,0,0,100,105,97,109,111,110,100,0,77,117,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,116,112,0,0,0,0,0,99,108,117,98,0,0,0,0,79,109,101,103,97,0,0,0,116,97,117,0,0,0,0,0,85,112,115,105,108,111,110,0,98,114,97,99,101,108,101,102,116,116,112,0,0,0,0,0,104,101,97,114,116,0,0,0,101,112,115,105,108,111,110,0,108,111,103,105,99,97,108,111,114,0,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,101,120,0,0,0,0,0,78,117,0,0,0,0,0,0,116,104,101,114,101,102,111,114,101,0,0,0,0,0,0,0,110,111,116,115,117,98,115,101,116,0,0,0,0,0,0,0,111,109,101,103,97,0,0,0,101,108,101,109,101,110,116,0,117,112,115,105,108,111,110,0,101,120,105,115,116,101,110,116,105,97,108,0,0,0,0,0,105,110,116,101,103,114,97,108,98,116,0,0,0,0,0,0,112,104,105,49,0,0,0,0,116,114,97,100,101,109,97,114,107,115,101,114,105,102,0,0,114,101,102,108,101,120,115,117,112,101,114,115,101,116,0,0,115,105,103,109,97,49,0,0,110,117,0,0,0,0,0,0,71,97,109,109,97,0,0,0,97,110,103,108,101,114,105,103,104,116,0,0,0,0,0,0,82,104,111,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,98,116,0,0,0,0,114,97,100,105,99,97,108,101,120,0,0,0,0,0,0,0,97,110,103,108,101,108,101,102,116,0,0,0,0,0,0,0,97,114,114,111,119,100,98,108,100,111,119,110,0,0,0,0,99,111,110,103,114,117,101,110,116,0,0,0,0,0,0,0,84,104,101,116,97,0,0,0,105,110,116,101,114,115,101,99,116,105,111,110,0,0,0,0,80,105,0,0,0,0,0,0,114,101,103,105,115,116,101,114,115,101,114,105,102,0,0,0,103,97,109,109,97,0,0,0,114,104,111,0,0,0,0,0,99,105,114,99,108,101,109,117,108,116,105,112,108,121,0,0,67,104,105,0,0,0,0,0,116,104,101,116,97,0,0,0,112,105,0,0,0,0,0,0,105,110,116,101,103,114,97,108,116,112,0,0,0,0,0,0,69,116,97,0,0,0,0,0,112,114,111,100,117,99,116,0,112,114,111,112,101,114,115,117,98,115,101,116,0,0,0,0,98,114,97,99,107,101,116,114,105,103,104,116,98,116,0,0,116,114,97,100,101,109,97,114,107,115,97,110,115,0,0,0,100,111,116,109,97,116,104,0,105,110,116,101,103,114,97,108,101,120,0,0,0,0,0,0,99,104,105,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,116,112,0,0,0,0,101,116,97,0,0,0,0,0,97,110,103,108,101,0,0,0,97,114,114,111,119,100,98,108,108,101,102,116,0,0,0,0,112,97,114,101,110,114,105,103,104,116,101,120,0,0,0,0,82,102,114,97,107,116,117,114,0,0,0,0,0,0,0,0,90,101,116,97,0,0,0,0,98,114,97,99,101,101,120,0,97,114,114,111,119,100,98,108,117,112,0,0,0,0,0,0,97,114,114,111,119,100,111,119,110,0,0,0,0,0,0,0,73,102,114,97,107,116,117,114,0,0,0,0,0,0,0,0,73,111,116,97,0,0,0,0,112,101,114,112,101,110,100,105,99,117,108,97,114,0,0,0,97,115,116,101,114,105,115,107,109,97,116,104,0,0,0,0,122,101,116,97,0,0,0,0,119,101,105,101,114,115,116,114,97,115,115,0,0,0,0,0,98,114,97,99,107,101,116,114,105,103,104,116,116,112,0,0,99,97,114,114,105,97,103,101,114,101,116,117,114,110,0,0,115,117,99,104,116,104,97,116,0,0,0,0,0,0,0,0,97,114,114,111,119,118,101,114,116,101,120,0,0,0,0,0,105,111,116,97,0,0,0,0,97,114,114,111,119,104,111,114,105,122,101,120,0,0,0,0,98,114,97,99,107,101,116,114,105,103,104,116,101,120,0,0,112,114,111,112,111,114,116,105,111,110,97,108,0,0,0,0,100,101,108,116,97,0,0,0,99,111,112,121,114,105,103,104,116,115,101,114,105,102,0,0,98,114,97,99,101,114,105,103,104,116,109,105,100,0,0,0,97,114,114,111,119,108,101,102,116,0,0,0,0,0,0,0,115,101,99,111,110,100,0,0,97,114,114,111,119,100,98,108,98,111,116,104,0,0,0,0,80,115,105,0,0,0,0,0,98,114,97,99,101,114,105,103,104,116,98,116,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,98,116,0,0,0,98,114,97,99,101,108,101,102,116,109,105,100,0,0,0,0,112,115,105,0,0,0,0,0,101,113,117,105,118,97,108,101,110,99,101,0,0,0,0,0,117,110,105,118,101,114,115,97,108,0,0,0,0,0,0,0,97,114,114,111,119,100,98,108,114,105,103,104,116,0,0,0,114,101,102,108,101,120,115,117,98,115,101,116,0,0,0,0,88,105,0,0,0,0,0,0,116,104,101,116,97,49,0,0,75,97,112,112,97,0,0,0,115,105,109,105,108,97,114,0,114,101,103,105,115,116,101,114,115,97,110,115,0,0,0,0,111,109,101,103,97,49,0,0,85,112,115,105,108,111,110,49,0,0,0,0,0,0,0,0,98,114,97,99,101,114,105,103,104,116,116,112,0,0,0,0,120,105,0,0,0,0,0,0,65,108,112,104,97,0,0,0,97,114,114,111,119,114,105,103,104,116,0,0,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,116,112,0,0,0,107,97,112,112,97,0,0,0,103,114,97,100,105,101,110,116,0,0,0,0,0,0,0,0,105,110,116,101,103,114,97,108,0,0,0,0,0,0,0,0,97,114,114,111,119,98,111,116,104,0,0,0,0,0,0,0,66,101,116,97,0,0,0,0,100,98,108,100,97,103,103,101,114,117,109,108,97,117,116,0,73,100,101,110,116,105,116,121,0,0,0,0,0,0,0,0,73,100,101,110,116,105,116,121,45,72,0,0,0,0,0,0,73,100,101,110,116,105,116,121,45,86,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,102,105,110,100,32,39,37,115,39,32,67,77,97,112,32,102,105,108,101,32,102,111,114,32,39,37,115,39,32,99,111,108,108,101,99,116,105,111,110,0,0,0,0,0,0,0,0,117,115,101,99,109,97,112,0,47,87,77,111,100,101,0,0,98,101,103,105,110,99,111,100,101,115,112,97,99,101,114,97,110,103,101,0,0,0,0,0,101,110,100,99,111,100,101,115,112,97,99,101,114,97,110,103,101,0,0,0,0,0,0,0,73,108,108,101,103,97,108,32,101,110,116,114,121,32,105,110,32,99,111,100,101,115,112,97,99,101,114,97,110,103,101,32,98,108,111,99,107,32,105,110,32,67,77,97,112,0,0,0,37,120,0,0,0,0,0,0,98,101,103,105,110,99,105,100,99,104,97,114,0,0,0,0,101,110,100,99,105,100,99,104,97,114,0,0,0,0,0,0,73,108,108,101,103,97,108,32,101,110,116,114,121,32,105,110,32,99,105,100,99,104,97,114,32,98,108,111,99,107,32,105,110,32,67,77,97,112,0,0,98,101,103,105,110,99,105,100,114,97,110,103,101,0,0,0,101,110,100,99,105,100,114,97,110,103,101,0,0,0,0,0,73,108,108,101,103,97,108,32,101,110,116,114,121,32,105,110,32,99,105,100,114,97,110,103,101,32,98,108,111,99,107,32,105,110,32,67,77,97,112,0,67,111,108,108,105,115,105,111,110,32,105,110,32,117,115,101,99,109,97,112,0,0,0,0,73,110,118,97,108,105,100,32,67,73,68,32,40,37,48,42,120,32,45,32,37,48,42,120,41,32,105,110,32,67,77,97,112,0,0,0,0,0,0,0,67,97,116,97,108,111,103,32,111,98,106,101,99,116,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,0,0,0,0,0,65,99,114,111,70,111,114,109,0,0,0,0,0,0,0,0,85,82,73,0,0,0,0,0,66,97,115,101,0,0,0,0,79,67,80,114,111,112,101,114,116,105,101,115,0,0,0,0,80,97,103,101,115,0,0,0,67,97,116,97,108,111,103,32,100,105,99,116,105,111,110,97,114,121,32,100,111,101,115,32,110,111,116,32,99,111,110,116,97,105,110,32,97,32,118,97,108,105,100,32,34,80,97,103,101,115,34,32,101,110,116,114,121,0,0,0,0,0,0,0,84,111,112,45,108,101,118,101,108,32,112,97,103,101,115,32,111,98,106,101,99,116,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,0,0,0,0,0,75,105,100,115,0,0,0,0,75,105,100,115,32,111,98,106,101,99,116,32,40,112,97,103,101,32,37,100,41,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,0,0,0,0,0,0,75,105,100,32,111,98,106,101,99,116,32,40,112,97,103,101,32,37,100,41,32,105,115,32,110,111,116,32,97,110,32,105,110,100,105,114,101,99,116,32,114,101,102,101,114,101,110,99,101,32,40,37,115,41,0,0,76,111,111,112,32,105,110,32,80,97,103,101,115,32,116,114,101,101,0,0,0,0,0,0,80,97,103,101,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,114,101,97,116,101,32,112,97,103,101,32,40,112,97,103,101,32,37,100,41,0,80,97,103,101,32,99,111,117,110,116,32,105,110,32,116,111,112,45,108,101,118,101,108,32,112,97,103,101,115,32,111,98,106,101,99,116,32,105,115,32,105,110,99,111,114,114,101,99,116,0,0,0,0,0,0,0,75,105,100,32,111,98,106,101,99,116,32,40,112,97,103,101,32,37,100,41,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,67,111,117,110,116,0,0,0,80,97,103,101,32,99,111,117,110,116,32,105,110,32,116,111,112,45,108,101,118,101,108,32,112,97,103,101,115,32,111,98,106,101,99,116,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,114,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,111,112,101,110,32,99,105,100,84,111,85,110,105,99,111,100,101,32,102,105,108,101,32,39,37,115,39,0,0,0,0,37,120,0,0,0,0,0,0,66,97,100,32,108,105,110,101,32,40,37,100,41,32,105,110,32,99,105,100,84,111,85,110,105,99,111,100,101,32,102,105,108,101,32,39,37,115,39,0,67,111,117,108,100,110,39,116,32,111,112,101,110,32,117,110,105,99,111,100,101,84,111,85,110,105,99,111,100,101,32,102,105,108,101,32,39,37,115,39,0,0,0,0,0,0,0,0,32,9,13,10,0,0,0,0,66,97,100,32,108,105,110,101,32,40,37,100,41,32,105,110,32,117,110,105,99,111,100,101,84,111,85,110,105,99,111,100,101,32,102,105,108,101,32,39,37,115,39,0,0,0,0,0,67,111,117,108,100,110,39,116,32,102,105,110,100,32,84,111,85,110,105,99,111,100,101,32,67,77,97,112,32,102,105,108,101,32,102,111,114,32,39,37,115,39,0,0,0,0,0,0,117,115,101,99,109,97,112,0,98,101,103,105,110,98,102,99,104,97,114,0,0,0,0,0,101,110,100,98,102,99,104,97,114,0,0,0,0,0,0,0,73,108,108,101,103,97,108,32,101,110,116,114,121,32,105,110,32,98,102,99,104,97,114,32,98,108,111,99,107,32,105,110,32,84,111,85,110,105,99,111,100,101,32,67,77,97,112,0,98,101,103,105,110,98,102,114,97,110,103,101,0,0,0,0,101,110,100,98,102,114,97,110,103,101,0,0,0,0,0,0,73,108,108,101,103,97,108,32,101,110,116,114,121,32,105,110,32,98,102,114,97,110,103,101,32,98,108,111,99,107,32,105,110,32,84,111,85,110,105,99,111,100,101,32,67,77,97,112,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,73,108,108,101,103,97,108,32,99,111,100,101,32,118,97,108,117,101,32,105,110,32,67,104,97,114,67,111,100,101,84,111,85,110,105,99,111,100,101,58,58,97,100,100,77,97,112,112,105,110,103,0,0,0,0,0,73,108,108,101,103,97,108,32,101,110,116,114,121,32,105,110,32,84,111,85,110,105,99,111,100,101,32,67,77,97,112,0,40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122,0,0,0,0,24,3,2,0,134,0,0,0,135,0,0,0,98,0,0,0,136,0,0,0,23,0,0,0,99,0,0,0,100,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,24,0,0,0,7,0,0,0,101,0,0,0,14,0,0,0,8,0,0,0,18,0,0,0,36,0,0,0,102,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,49,51,68,101,99,114,121,112,116,83,116,114,101,97,109,0,128,113,4,0,8,3,2,0,200,188,0,0,0,0,0,0,82,101,100,117,99,105,110,103,32,98,117,102,73,100,120,32,102,114,111,109,32,37,100,32,116,111,32,49,54,32,116,111,32,110,111,116,32,99,114,97,115,104,0,0,0,0,0,0,82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,128,0,0,0,27,0,0,0,54,0,0,0,0,99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22,84,121,112,101,0,0,0,0,115,112,97,99,101,0,0,0,101,120,99,108,97,109,0,0,113,117,111,116,101,100,98,108,0,0,0,0,0,0,0,0,110,117,109,98,101,114,115,105,103,110,0,0,0,0,0,0,100,111,108,108,97,114,0,0,112,101,114,99,101,110,116,0,97,109,112,101,114,115,97,110,100,0,0,0,0,0,0,0,113,117,111,116,101,115,105,110,103,108,101,0,0,0,0,0,112,97,114,101,110,108,101,102,116,0,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,0,0,0,0,0,0,97,115,116,101,114,105,115,107,0,0,0,0,0,0,0,0,112,108,117,115,0,0,0,0,99,111,109,109,97,0,0,0,104,121,112,104,101,110,0,0,112,101,114,105,111,100,0,0,115,108,97,115,104,0,0,0,122,101,114,111,0,0,0,0,111,110,101,0,0,0,0,0,116,119,111,0,0,0,0,0,116,104,114,101,101,0,0,0,102,111,117,114,0,0,0,0,102,105,118,101,0,0,0,0,115,105,120,0,0,0,0,0,115,101,118,101,110,0,0,0,101,105,103,104,116,0,0,0,110,105,110,101,0,0,0,0,99,111,108,111,110,0,0,0,115,101,109,105,99,111,108,111,110,0,0,0,0,0,0,0,108,101,115,115,0,0,0,0,101,113,117,97,108,0,0,0,103,114,101,97,116,101,114,0,113,117,101,115,116,105,111,110,0,0,0,0,0,0,0,0,97,116,0,0,0,0,0,0,65,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,69,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,75,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,82,0,0,0,0,0,0,0,83,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,89,0,0,0,0,0,0,0,90,0,0,0,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,0,0,0,0,0,98,97,99,107,115,108,97,115,104,0,0,0,0,0,0,0,98,114,97,99,107,101,116,114,105,103,104,116,0,0,0,0,97,115,99,105,105,99,105,114,99,117,109,0,0,0,0,0,117,110,100,101,114,115,99,111,114,101,0,0,0,0,0,0,103,114,97,118,101,0,0,0,97], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+122888); -/* memory initializer */ allocate([98,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,103,0,0,0,0,0,0,0,104,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,121,0,0,0,0,0,0,0,122,0,0,0,0,0,0,0,98,114,97,99,101,108,101,102,116,0,0,0,0,0,0,0,98,97,114,0,0,0,0,0,98,114,97,99,101,114,105,103,104,116,0,0,0,0,0,0,97,115,99,105,105,116,105,108,100,101,0,0,0,0,0,0,65,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,65,114,105,110,103,0,0,0,67,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,69,97,99,117,116,101,0,0,78,116,105,108,100,101,0,0,79,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,85,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,97,97,99,117,116,101,0,0,97,103,114,97,118,101,0,0,97,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,97,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,97,116,105,108,100,101,0,0,97,114,105,110,103,0,0,0,99,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,101,97,99,117,116,101,0,0,101,103,114,97,118,101,0,0,101,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,101,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,105,97,99,117,116,101,0,0,105,103,114,97,118,101,0,0,105,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,105,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,110,116,105,108,100,101,0,0,111,97,99,117,116,101,0,0,111,103,114,97,118,101,0,0,111,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,111,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,111,116,105,108,100,101,0,0,117,97,99,117,116,101,0,0,117,103,114,97,118,101,0,0,117,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,117,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,100,97,103,103,101,114,0,0,100,101,103,114,101,101,0,0,99,101,110,116,0,0,0,0,115,116,101,114,108,105,110,103,0,0,0,0,0,0,0,0,115,101,99,116,105,111,110,0,98,117,108,108,101,116,0,0,112,97,114,97,103,114,97,112,104,0,0,0,0,0,0,0,103,101,114,109,97,110,100,98,108,115,0,0,0,0,0,0,114,101,103,105,115,116,101,114,101,100,0,0,0,0,0,0,99,111,112,121,114,105,103,104,116,0,0,0,0,0,0,0,116,114,97,100,101,109,97,114,107,0,0,0,0,0,0,0,97,99,117,116,101,0,0,0,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,0,110,111,116,101,113,117,97,108,0,0,0,0,0,0,0,0,65,69,0,0,0,0,0,0,79,115,108,97,115,104,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,112,108,117,115,109,105,110,117,115,0,0,0,0,0,0,0,108,101,115,115,101,113,117,97,108,0,0,0,0,0,0,0,103,114,101,97,116,101,114,101,113,117,97,108,0,0,0,0,121,101,110,0,0,0,0,0,109,117,0,0,0,0,0,0,112,97,114,116,105,97,108,100,105,102,102,0,0,0,0,0,115,117,109,109,97,116,105,111,110,0,0,0,0,0,0,0,112,114,111,100,117,99,116,0,112,105,0,0,0,0,0,0,105,110,116,101,103,114,97,108,0,0,0,0,0,0,0,0,111,114,100,102,101,109,105,110,105,110,101,0,0,0,0,0,111,114,100,109,97,115,99,117,108,105,110,101,0,0,0,0,79,109,101,103,97,0,0,0,97,101,0,0,0,0,0,0,111,115,108,97,115,104,0,0,113,117,101,115,116,105,111,110,100,111,119,110,0,0,0,0,101,120,99,108,97,109,100,111,119,110,0,0,0,0,0,0,108,111,103,105,99,97,108,110,111,116,0,0,0,0,0,0,114,97,100,105,99,97,108,0,102,108,111,114,105,110,0,0,97,112,112,114,111,120,101,113,117,97,108,0,0,0,0,0,68,101,108,116,97,0,0,0,103,117,105,108,108,101,109,111,116,108,101,102,116,0,0,0,103,117,105,108,108,101,109,111,116,114,105,103,104,116,0,0,101,108,108,105,112,115,105,115,0,0,0,0,0,0,0,0,65,103,114,97,118,101,0,0,65,116,105,108,100,101,0,0,79,116,105,108,100,101,0,0,79,69,0,0,0,0,0,0,111,101,0,0,0,0,0,0,101,110,100,97,115,104,0,0,101,109,100,97,115,104,0,0,113,117,111,116,101,100,98,108,108,101,102,116,0,0,0,0,113,117,111,116,101,100,98,108,114,105,103,104,116,0,0,0,113,117,111,116,101,108,101,102,116,0,0,0,0,0,0,0,113,117,111,116,101,114,105,103,104,116,0,0,0,0,0,0,100,105,118,105,100,101,0,0,108,111,122,101,110,103,101,0,121,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,89,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,102,114,97,99,116,105,111,110,0,0,0,0,0,0,0,0,99,117,114,114,101,110,99,121,0,0,0,0,0,0,0,0,103,117,105,108,115,105,110,103,108,108,101,102,116,0,0,0,103,117,105,108,115,105,110,103,108,114,105,103,104,116,0,0,102,105,0,0,0,0,0,0,102,108,0,0,0,0,0,0,100,97,103,103,101,114,100,98,108,0,0,0,0,0,0,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,0,113,117,111,116,101,115,105,110,103,108,98,97,115,101,0,0,113,117,111,116,101,100,98,108,98,97,115,101,0,0,0,0,112,101,114,116,104,111,117,115,97,110,100,0,0,0,0,0,65,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,69,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,65,97,99,117,116,101,0,0,69,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,69,103,114,97,118,101,0,0,73,97,99,117,116,101,0,0,73,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,73,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,73,103,114,97,118,101,0,0,79,97,99,117,116,101,0,0,79,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,97,112,112,108,101,0,0,0,79,103,114,97,118,101,0,0,85,97,99,117,116,101,0,0,85,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,85,103,114,97,118,101,0,0,100,111,116,108,101,115,115,105,0,0,0,0,0,0,0,0,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,0,116,105,108,100,101,0,0,0,109,97,99,114,111,110,0,0,98,114,101,118,101,0,0,0,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,0,114,105,110,103,0,0,0,0,99,101,100,105,108,108,97,0,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,0,111,103,111,110,101,107,0,0,99,97,114,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,5,2,0,152,5,2,0,160,5,2,0,176,5,2,0,192,5,2,0,200,5,2,0,208,5,2,0,224,5,2,0,240,5,2,0,0,6,2,0,16,6,2,0,32,6,2,0,40,6,2,0,48,6,2,0,56,6,2,0,64,6,2,0,72,6,2,0,80,6,2,0,88,6,2,0,96,6,2,0,104,6,2,0,112,6,2,0,120,6,2,0,128,6,2,0,136,6,2,0,144,6,2,0,152,6,2,0,160,6,2,0,176,6,2,0,184,6,2,0,192,6,2,0,200,6,2,0,216,6,2,0,224,6,2,0,232,6,2,0,240,6,2,0,248,6,2,0,0,7,2,0,8,7,2,0,16,7,2,0,24,7,2,0,32,7,2,0,40,7,2,0,48,7,2,0,56,7,2,0,64,7,2,0,72,7,2,0,80,7,2,0,88,7,2,0,96,7,2,0,104,7,2,0,112,7,2,0,120,7,2,0,128,7,2,0,136,7,2,0,144,7,2,0,152,7,2,0,160,7,2,0,168,7,2,0,176,7,2,0,192,7,2,0,208,7,2,0,224,7,2,0,240,7,2,0,0,8,2,0,8,8,2,0,16,8,2,0,24,8,2,0,32,8,2,0,40,8,2,0,48,8,2,0,56,8,2,0,64,8,2,0,72,8,2,0,80,8,2,0,88,8,2,0,96,8,2,0,104,8,2,0,112,8,2,0,120,8,2,0,128,8,2,0,136,8,2,0,144,8,2,0,152,8,2,0,160,8,2,0,168,8,2,0,176,8,2,0,184,8,2,0,192,8,2,0,200,8,2,0,208,8,2,0,216,8,2,0,232,8,2,0,240,8,2,0,0,9,2,0,0,0,0,0,16,9,2,0,32,9,2,0,40,9,2,0,56,9,2,0,64,9,2,0,72,9,2,0,88,9,2,0,104,9,2,0,112,9,2,0,120,9,2,0,136,9,2,0,152,9,2,0,160,9,2,0,168,9,2,0,184,9,2,0,192,9,2,0,200,9,2,0,216,9,2,0,232,9,2,0,240,9,2,0,248,9,2,0,8,10,2,0,24,10,2,0,32,10,2,0,40,10,2,0,48,10,2,0,64,10,2,0,80,10,2,0,88,10,2,0,96,10,2,0,104,10,2,0,120,10,2,0,136,10,2,0,144,10,2,0,152,10,2,0,160,10,2,0,176,10,2,0,184,10,2,0,192,10,2,0,208,10,2,0,224,10,2,0,240,10,2,0,0,11,2,0,16,11,2,0,24,11,2,0,40,11,2,0,56,11,2,0,64,11,2,0,72,11,2,0,88,11,2,0,104,11,2,0,120,11,2,0,136,11,2,0,144,11,2,0,152,11,2,0,168,11,2,0,184,11,2,0,192,11,2,0,200,11,2,0,216,11,2,0,232,11,2,0,248,11,2,0,0,12,2,0,8,12,2,0,16,12,2,0,32,12,2,0,48,12,2,0,64,12,2,0,72,12,2,0,80,12,2,0,96,12,2,0,104,12,2,0,120,12,2,0,136,12,2,0,144,5,2,0,152,12,2,0,160,12,2,0,168,12,2,0,176,12,2,0,184,12,2,0,192,12,2,0,200,12,2,0,208,12,2,0,224,12,2,0,240,12,2,0,0,13,2,0,16,13,2,0,24,13,2,0,32,13,2,0,48,13,2,0,64,13,2,0,80,13,2,0,96,13,2,0,112,13,2,0,128,13,2,0,136,13,2,0,144,13,2,0,160,13,2,0,176,13,2,0,192,13,2,0,208,13,2,0,224,13,2,0,240,13,2,0,0,14,2,0,8,14,2,0,24,14,2,0,32,14,2,0,40,14,2,0,56,14,2,0,72,14,2,0,80,14,2,0,88,14,2,0,104,14,2,0,112,14,2,0,120,14,2,0,128,14,2,0,144,14,2,0,152,14,2,0,168,14,2,0,184,14,2,0,192,14,2,0,200,14,2,0,208,14,2,0,224,14,2,0,232,14,2,0,240,14,2,0,0,15,2,0,8,15,2,0,101,120,99,108,97,109,115,109,97,108,108,0,0,0,0,0,72,117,110,103,97,114,117,109,108,97,117,116,115,109,97,108,108,0,0,0,0,0,0,0,99,101,110,116,111,108,100,115,116,121,108,101,0,0,0,0,100,111,108,108,97,114,111,108,100,115,116,121,108,101,0,0,100,111,108,108,97,114,115,117,112,101,114,105,111,114,0,0,97,109,112,101,114,115,97,110,100,115,109,97,108,108,0,0,65,99,117,116,101,115,109,97,108,108,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,115,117,112,101,114,105,111,114,0,0,0,0,0,0,116,119,111,100,111,116,101,110,108,101,97,100,101,114,0,0,111,110,101,100,111,116,101,110,108,101,97,100,101,114,0,0,122,101,114,111,111,108,100,115,116,121,108,101,0,0,0,0,111,110,101,111,108,100,115,116,121,108,101,0,0,0,0,0,116,119,111,111,108,100,115,116,121,108,101,0,0,0,0,0,116,104,114,101,101,111,108,100,115,116,121,108,101,0,0,0,102,111,117,114,111,108,100,115,116,121,108,101,0,0,0,0,102,105,118,101,111,108,100,115,116,121,108,101,0,0,0,0,115,105,120,111,108,100,115,116,121,108,101,0,0,0,0,0,115,101,118,101,110,111,108,100,115,116,121,108,101,0,0,0,101,105,103,104,116,111,108,100,115,116,121,108,101,0,0,0,110,105,110,101,111,108,100,115,116,121,108,101,0,0,0,0,116,104,114,101,101,113,117,97,114,116,101,114,115,101,109,100,97,115,104,0,0,0,0,0,113,117,101,115,116,105,111,110,115,109,97,108,108,0,0,0,69,116,104,115,109,97,108,108,0,0,0,0,0,0,0,0,111,110,101,113,117,97,114,116,101,114,0,0,0,0,0,0,111,110,101,104,97,108,102,0,116,104,114,101,101,113,117,97,114,116,101,114,115,0,0,0,111,110,101,101,105,103,104,116,104,0,0,0,0,0,0,0,116,104,114,101,101,101,105,103,104,116,104,115,0,0,0,0,102,105,118,101,101,105,103,104,116,104,115,0,0,0,0,0,115,101,118,101,110,101,105,103,104,116,104,115,0,0,0,0,111,110,101,116,104,105,114,100,0,0,0,0,0,0,0,0,116,119,111,116,104,105,114,100,115,0,0,0,0,0,0,0,102,102,0,0,0,0,0,0,102,102,105,0,0,0,0,0,102,102,108,0,0,0,0,0,112,97,114,101,110,108,101,102,116,105,110,102,101,114,105,111,114,0,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,105,110,102,101,114,105,111,114,0,0,0,0,0,0,67,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,104,121,112,104,101,110,105,110,102,101,114,105,111,114,0,0,71,114,97,118,101,115,109,97,108,108,0,0,0,0,0,0,65,115,109,97,108,108,0,0,66,115,109,97,108,108,0,0,67,115,109,97,108,108,0,0,68,115,109,97,108,108,0,0,69,115,109,97,108,108,0,0,70,115,109,97,108,108,0,0,71,115,109,97,108,108,0,0,72,115,109,97,108,108,0,0,73,115,109,97,108,108,0,0,74,115,109,97,108,108,0,0,75,115,109,97,108,108,0,0,76,115,109,97,108,108,0,0,77,115,109,97,108,108,0,0,78,115,109,97,108,108,0,0,79,115,109,97,108,108,0,0,80,115,109,97,108,108,0,0,81,115,109,97,108,108,0,0,82,115,109,97,108,108,0,0,83,115,109,97,108,108,0,0,84,115,109,97,108,108,0,0,85,115,109,97,108,108,0,0,86,115,109,97,108,108,0,0,87,115,109,97,108,108,0,0,88,115,109,97,108,108,0,0,89,115,109,97,108,108,0,0,90,115,109,97,108,108,0,0,99,111,108,111,110,109,111,110,101,116,97,114,121,0,0,0,111,110,101,102,105,116,116,101,100,0,0,0,0,0,0,0,114,117,112,105,97,104,0,0,84,105,108,100,101,115,109,97,108,108,0,0,0,0,0,0,97,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,99,101,110,116,115,117,112,101,114,105,111,114,0,0,0,0,65,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,65,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,65,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,65,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,65,116,105,108,100,101,115,109,97,108,108,0,0,0,0,0,65,114,105,110,103,115,109,97,108,108,0,0,0,0,0,0,67,99,101,100,105,108,108,97,115,109,97,108,108,0,0,0,69,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,69,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,69,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,69,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,73,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,73,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,73,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,73,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,78,116,105,108,100,101,115,109,97,108,108,0,0,0,0,0,79,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,79,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,79,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,79,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,79,116,105,108,100,101,115,109,97,108,108,0,0,0,0,0,85,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,85,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,85,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,85,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,101,105,103,104,116,115,117,112,101,114,105,111,114,0,0,0,102,111,117,114,105,110,102,101,114,105,111,114,0,0,0,0,116,104,114,101,101,105,110,102,101,114,105,111,114,0,0,0,115,105,120,105,110,102,101,114,105,111,114,0,0,0,0,0,101,105,103,104,116,105,110,102,101,114,105,111,114,0,0,0,115,101,118,101,110,105,110,102,101,114,105,111,114,0,0,0,83,99,97,114,111,110,115,109,97,108,108,0,0,0,0,0,99,101,110,116,105,110,102,101,114,105,111,114,0,0,0,0,116,119,111,105,110,102,101,114,105,111,114,0,0,0,0,0,68,105,101,114,101,115,105,115,115,109,97,108,108,0,0,0,67,97,114,111,110,115,109,97,108,108,0,0,0,0,0,0,111,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,102,105,118,101,105,110,102,101,114,105,111,114,0,0,0,0,99,111,109,109,97,105,110,102,101,114,105,111,114,0,0,0,112,101,114,105,111,100,105,110,102,101,114,105,111,114,0,0,89,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,100,111,108,108,97,114,105,110,102,101,114,105,111,114,0,0,84,104,111,114,110,115,109,97,108,108,0,0,0,0,0,0,110,105,110,101,105,110,102,101,114,105,111,114,0,0,0,0,122,101,114,111,105,110,102,101,114,105,111,114,0,0,0,0,90,99,97,114,111,110,115,109,97,108,108,0,0,0,0,0,65,69,115,109,97,108,108,0,79,115,108,97,115,104,115,109,97,108,108,0,0,0,0,0,113,117,101,115,116,105,111,110,100,111,119,110,115,109,97,108,108,0,0,0,0,0,0,0,111,110,101,105,110,102,101,114,105,111,114,0,0,0,0,0,76,115,108,97,115,104,115,109,97,108,108,0,0,0,0,0,67,101,100,105,108,108,97,115,109,97,108,108,0,0,0,0,79,69,115,109,97,108,108,0,102,105,103,117,114,101,100,97,115,104,0,0,0,0,0,0,104,121,112,104,101,110,115,117,112,101,114,105,111,114,0,0,101,120,99,108,97,109,100,111,119,110,115,109,97,108,108,0,89,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,111,110,101,115,117,112,101,114,105,111,114,0,0,0,0,0,116,119,111,115,117,112,101,114,105,111,114,0,0,0,0,0,116,104,114,101,101,115,117,112,101,114,105,111,114,0,0,0,102,111,117,114,115,117,112,101,114,105,111,114,0,0,0,0,102,105,118,101,115,117,112,101,114,105,111,114,0,0,0,0,115,105,120,115,117,112,101,114,105,111,114,0,0,0,0,0,115,101,118,101,110,115,117,112,101,114,105,111,114,0,0,0,110,105,110,101,115,117,112,101,114,105,111,114,0,0,0,0,122,101,114,111,115,117,112,101,114,105,111,114,0,0,0,0,101,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,114,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,116,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,105,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,115,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,100,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,108,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,79,103,111,110,101,107,115,109,97,108,108,0,0,0,0,0,66,114,101,118,101,115,109,97,108,108,0,0,0,0,0,0,77,97,99,114,111,110,115,109,97,108,108,0,0,0,0,0,98,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,110,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,109,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,99,111,109,109,97,115,117,112,101,114,105,111,114,0,0,0,112,101,114,105,111,100,115,117,112,101,114,105,111,114,0,0,68,111,116,97,99,99,101,110,116,115,109,97,108,108,0,0,82,105,110,103,115,109,97,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,5,2,0,16,19,2,0,32,19,2,0,56,19,2,0,72,19,2,0,88,19,2,0,104,19,2,0,120,19,2,0,136,19,2,0,160,19,2,0,184,19,2,0,200,19,2,0,40,6,2,0,48,6,2,0,56,6,2,0,64,13,2,0,216,19,2,0,232,19,2,0,248,19,2,0,8,20,2,0,24,20,2,0,40,20,2,0,56,20,2,0,72,20,2,0,88,20,2,0,104,20,2,0,152,6,2,0,160,6,2,0,0,0,0,0,120,20,2,0,0,0,0,0,144,20,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,20,2,0,0,0,0,0,0,0,0,0,176,20,2,0,192,20,2,0,200,20,2,0,216,20,2,0,232,20,2,0,248,20,2,0,8,21,2,0,24,21,2,0,40,21,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,21,2,0,128,13,2,0,136,13,2,0,64,21,2,0,72,21,2,0,80,21,2,0,0,0,0,0,104,21,2,0,128,21,2,0,144,21,2,0,160,21,2,0,176,21,2,0,184,21,2,0,192,21,2,0,200,21,2,0,208,21,2,0,216,21,2,0,224,21,2,0,232,21,2,0,240,21,2,0,248,21,2,0,0,22,2,0,8,22,2,0,16,22,2,0,24,22,2,0,32,22,2,0,40,22,2,0,48,22,2,0,56,22,2,0,64,22,2,0,72,22,2,0,80,22,2,0,88,22,2,0,96,22,2,0,104,22,2,0,112,22,2,0,120,22,2,0,128,22,2,0,144,22,2,0,160,22,2,0,168,22,2,0,0,0,0,0,0,0,0,0,184,22,2,0,200,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,22,2,0,232,22,2,0,248,22,2,0,16,23,2,0,32,23,2,0,48,23,2,0,64,23,2,0,80,23,2,0,96,23,2,0,112,23,2,0,136,23,2,0,152,23,2,0,168,23,2,0,184,23,2,0,208,23,2,0,224,23,2,0,240,23,2,0,0,24,2,0,16,24,2,0,40,24,2,0,56,24,2,0,72,24,2,0,88,24,2,0,104,24,2,0,128,24,2,0,0,0,0,0,144,24,2,0,160,24,2,0,176,24,2,0,192,24,2,0,208,24,2,0,224,24,2,0,240,24,2,0,0,0,0,0,0,25,2,0,16,25,2,0,0,0,0,0,32,25,2,0,0,0,0,0,48,25,2,0,64,25,2,0,80,25,2,0,0,0,0,0,96,25,2,0,112,25,2,0,128,25,2,0,0,0,0,0,144,25,2,0,0,0,0,0,0,0,0,0,160,25,2,0,0,0,0,0,176,25,2,0,192,25,2,0,208,25,2,0,224,25,2,0,232,25,2,0,248,25,2,0,16,26,2,0,32,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,26,2,0,72,26,2,0,88,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,26,2,0,0,0,0,0,120,26,2,0,0,0,0,0,136,26,2,0,152,26,2,0,168,26,2,0,184,26,2,0,200,26,2,0,216,26,2,0,232,26,2,0,248,26,2,0,8,27,2,0,0,0,0,0,24,27,2,0,40,27,2,0,56,27,2,0,0,0,0,0,0,0,0,0,72,27,2,0,88,27,2,0,104,27,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,27,2,0,136,27,2,0,152,27,2,0,168,27,2,0,184,27,2,0,200,27,2,0,216,27,2,0,232,27,2,0,248,27,2,0,8,28,2,0,24,28,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,117,114,111,0,0,0,0,83,99,97,114,111,110,0,0,90,99,97,114,111,110,0,0,115,99,97,114,111,110,0,0,122,99,97,114,111,110,0,0,98,114,111,107,101,110,98,97,114,0,0,0,0,0,0,0,69,116,104,0,0,0,0,0,109,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,89,97,99,117,116,101,0,0,84,104,111,114,110,0,0,0,101,116,104,0,0,0,0,0,121,97,99,117,116,101,0,0,116,104,111,114,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,5,2,0,152,5,2,0,160,5,2,0,176,5,2,0,192,5,2,0,200,5,2,0,208,5,2,0,224,5,2,0,240,5,2,0,0,6,2,0,16,6,2,0,32,6,2,0,40,6,2,0,48,6,2,0,56,6,2,0,64,6,2,0,72,6,2,0,80,6,2,0,88,6,2,0,96,6,2,0,104,6,2,0,112,6,2,0,120,6,2,0,128,6,2,0,136,6,2,0,144,6,2,0,152,6,2,0,160,6,2,0,176,6,2,0,184,6,2,0,192,6,2,0,200,6,2,0,216,6,2,0,224,6,2,0,232,6,2,0,240,6,2,0,248,6,2,0,0,7,2,0,8,7,2,0,16,7,2,0,24,7,2,0,32,7,2,0,40,7,2,0,48,7,2,0,56,7,2,0,64,7,2,0,72,7,2,0,80,7,2,0,88,7,2,0,96,7,2,0,104,7,2,0,112,7,2,0,120,7,2,0,128,7,2,0,136,7,2,0,144,7,2,0,152,7,2,0,160,7,2,0,168,7,2,0,176,7,2,0,192,7,2,0,208,7,2,0,224,7,2,0,240,7,2,0,0,8,2,0,8,8,2,0,16,8,2,0,24,8,2,0,32,8,2,0,40,8,2,0,48,8,2,0,56,8,2,0,64,8,2,0,72,8,2,0,80,8,2,0,88,8,2,0,96,8,2,0,104,8,2,0,112,8,2,0,120,8,2,0,128,8,2,0,136,8,2,0,144,8,2,0,152,8,2,0,160,8,2,0,168,8,2,0,176,8,2,0,184,8,2,0,192,8,2,0,200,8,2,0,208,8,2,0,216,8,2,0,232,8,2,0,240,8,2,0,0,9,2,0,184,10,2,0,40,32,2,0,184,10,2,0,176,13,2,0,72,12,2,0,192,13,2,0,136,12,2,0,136,10,2,0,144,13,2,0,168,14,2,0,208,13,2,0,48,32,2,0,96,13,2,0,176,12,2,0,184,10,2,0,56,32,2,0,184,10,2,0,184,10,2,0,240,12,2,0,0,13,2,0,208,12,2,0,224,12,2,0,184,10,2,0,192,12,2,0,200,12,2,0,184,14,2,0,0,11,2,0,64,32,2,0,112,13,2,0,184,12,2,0,184,10,2,0,72,32,2,0,48,13,2,0,144,5,2,0,32,12,2,0,152,10,2,0,160,10,2,0,80,13,2,0,136,11,2,0,80,32,2,0,176,10,2,0,24,11,2,0,240,10,2,0,216,11,2,0,104,12,2,0,48,12,2,0,48,6,2,0,224,10,2,0,192,14,2,0,144,10,2,0,88,11,2,0,152,26,2,0,168,26,2,0,16,11,2,0,144,11,2,0,192,10,2,0,160,13,2,0,232,14,2,0,136,26,2,0,232,11,2,0,120,12,2,0,176,20,2,0,192,20,2,0,200,20,2,0,16,12,2,0,152,12,2,0,0,14,2,0,224,13,2,0,160,12,2,0,16,9,2,0,32,9,2,0,56,11,2,0,40,9,2,0,24,14,2,0,56,9,2,0,240,13,2,0,8,14,2,0,72,14,2,0,32,14,2,0,40,14,2,0,56,14,2,0,96,32,2,0,64,9,2,0,112,14,2,0,80,14,2,0,88,14,2,0,168,12,2,0,72,9,2,0,104,32,2,0,64,11,2,0,144,14,2,0,120,14,2,0,128,14,2,0,88,9,2,0,120,32,2,0,128,32,2,0,208,10,2,0,112,9,2,0,104,9,2,0,120,9,2,0,152,9,2,0,136,9,2,0,160,9,2,0,0,12,2,0,168,9,2,0,192,9,2,0,184,9,2,0,200,9,2,0,216,9,2,0,240,9,2,0,232,9,2,0,248,9,2,0,8,10,2,0,136,32,2,0,24,10,2,0,40,10,2,0,32,10,2,0,48,10,2,0,80,10,2,0,64,10,2,0,16,13,2,0,8,12,2,0,96,10,2,0,88,10,2,0,104,10,2,0,120,10,2,0,144,32,2,0,152,32,2,0,32,13,2,0,76,115,108,97,115,104,0,0,108,115,108,97,115,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,5,2,0,152,5,2,0,160,5,2,0,176,5,2,0,192,5,2,0,200,5,2,0,208,5,2,0,0,13,2,0,240,5,2,0,0,6,2,0,16,6,2,0,32,6,2,0,40,6,2,0,48,6,2,0,56,6,2,0,64,6,2,0,72,6,2,0,80,6,2,0,88,6,2,0,96,6,2,0,104,6,2,0,112,6,2,0,120,6,2,0,128,6,2,0,136,6,2,0,144,6,2,0,152,6,2,0,160,6,2,0,176,6,2,0,184,6,2,0,192,6,2,0,200,6,2,0,216,6,2,0,224,6,2,0,232,6,2,0,240,6,2,0,248,6,2,0,0,7,2,0,8,7,2,0,16,7,2,0,24,7,2,0,32,7,2,0,40,7,2,0,48,7,2,0,56,7,2,0,64,7,2,0,72,7,2,0,80,7,2,0,88,7,2,0,96,7,2,0,104,7,2,0,112,7,2,0,120,7,2,0,128,7,2,0,136,7,2,0,144,7,2,0,152,7,2,0,160,7,2,0,168,7,2,0,176,7,2,0,192,7,2,0,208,7,2,0,224,7,2,0,240,7,2,0,240,12,2,0,8,8,2,0,16,8,2,0,24,8,2,0,32,8,2,0,40,8,2,0,48,8,2,0,56,8,2,0,64,8,2,0,72,8,2,0,80,8,2,0,88,8,2,0,96,8,2,0,104,8,2,0,112,8,2,0,120,8,2,0,128,8,2,0,136,8,2,0,144,8,2,0,152,8,2,0,160,8,2,0,168,8,2,0,176,8,2,0,184,8,2,0,192,8,2,0,200,8,2,0,208,8,2,0,216,8,2,0,232,8,2,0,240,8,2,0,0,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,12,2,0,152,10,2,0,160,10,2,0,64,13,2,0,136,11,2,0,72,12,2,0,176,10,2,0,80,13,2,0,224,5,2,0,208,12,2,0,104,12,2,0,96,13,2,0,112,13,2,0,128,13,2,0,136,13,2,0,0,0,0,0,192,12,2,0,136,10,2,0,144,13,2,0,160,13,2,0,0,0,0,0,192,10,2,0,184,10,2,0,176,13,2,0,192,13,2,0,224,12,2,0,120,12,2,0,136,12,2,0,208,13,2,0,0,0,0,0,16,12,2,0,0,0,0,0,0,8,2,0,16,11,2,0,168,14,2,0,184,14,2,0,192,14,2,0,200,14,2,0,208,14,2,0,24,11,2,0,0,0,0,0,224,14,2,0,232,14,2,0,0,0,0,0,240,14,2,0,0,15,2,0,8,15,2,0,200,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,11,2,0,0,0,0,0,216,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,36,2,0,64,11,2,0,176,12,2,0,232,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,152,14,2,0,0,0,0,0,0,0,0,0,168,36,2,0,8,12,2,0,184,12,2,0,208,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,110,105,118,101,114,115,97,108,0,0,0,0,0,0,0,101,120,105,115,116,101,110,116,105,97,108,0,0,0,0,0,115,117,99,104,116,104,97,116,0,0,0,0,0,0,0,0,97,115,116,101,114,105,115,107,109,97,116,104,0,0,0,0,109,105,110,117,115,0,0,0,99,111,110,103,114,117,101,110,116,0,0,0,0,0,0,0,65,108,112,104,97,0,0,0,66,101,116,97,0,0,0,0,67,104,105,0,0,0,0,0,69,112,115,105,108,111,110,0,80,104,105,0,0,0,0,0,71,97,109,109,97,0,0,0,69,116,97,0,0,0,0,0,73,111,116,97,0,0,0,0,116,104,101,116,97,49,0,0,75,97,112,112,97,0,0,0,76,97,109,98,100,97,0,0,77,117,0,0,0,0,0,0,78,117,0,0,0,0,0,0,79,109,105,99,114,111,110,0,80,105,0,0,0,0,0,0,84,104,101,116,97,0,0,0,82,104,111,0,0,0,0,0,83,105,103,109,97,0,0,0,84,97,117,0,0,0,0,0,85,112,115,105,108,111,110,0,115,105,103,109,97,49,0,0,88,105,0,0,0,0,0,0,80,115,105,0,0,0,0,0,90,101,116,97,0,0,0,0,116,104,101,114,101,102,111,114,101,0,0,0,0,0,0,0,112,101,114,112,101,110,100,105,99,117,108,97,114,0,0,0,114,97,100,105,99,97,108,101,120,0,0,0,0,0,0,0,97,108,112,104,97,0,0,0,98,101,116,97,0,0,0,0,99,104,105,0,0,0,0,0,100,101,108,116,97,0,0,0,101,112,115,105,108,111,110,0,112,104,105,0,0,0,0,0,103,97,109,109,97,0,0,0,101,116,97,0,0,0,0,0,105,111,116,97,0,0,0,0,112,104,105,49,0,0,0,0,107,97,112,112,97,0,0,0,108,97,109,98,100,97,0,0,110,117,0,0,0,0,0,0,111,109,105,99,114,111,110,0,116,104,101,116,97,0,0,0,114,104,111,0,0,0,0,0,115,105,103,109,97,0,0,0,116,97,117,0,0,0,0,0,117,112,115,105,108,111,110,0,111,109,101,103,97,49,0,0,111,109,101,103,97,0,0,0,120,105,0,0,0,0,0,0,112,115,105,0,0,0,0,0,122,101,116,97,0,0,0,0,115,105,109,105,108,97,114,0,85,112,115,105,108,111,110,49,0,0,0,0,0,0,0,0,109,105,110,117,116,101,0,0,99,108,117,98,0,0,0,0,100,105,97,109,111,110,100,0,104,101,97,114,116,0,0,0,115,112,97,100,101,0,0,0,97,114,114,111,119,98,111,116,104,0,0,0,0,0,0,0,97,114,114,111,119,108,101,102,116,0,0,0,0,0,0,0,97,114,114,111,119,117,112,0,97,114,114,111,119,114,105,103,104,116,0,0,0,0,0,0,97,114,114,111,119,100,111,119,110,0,0,0,0,0,0,0,115,101,99,111,110,100,0,0,112,114,111,112,111,114,116,105,111,110,97,108,0,0,0,0,101,113,117,105,118,97,108,101,110,99,101,0,0,0,0,0,97,114,114,111,119,118,101,114,116,101,120,0,0,0,0,0,97,114,114,111,119,104,111,114,105,122,101,120,0,0,0,0,99,97,114,114,105,97,103,101,114,101,116,117,114,110,0,0,97,108,101,112,104,0,0,0,73,102,114,97,107,116,117,114,0,0,0,0,0,0,0,0,82,102,114,97,107,116,117,114,0,0,0,0,0,0,0,0,119,101,105,101,114,115,116,114,97,115,115,0,0,0,0,0,99,105,114,99,108,101,109,117,108,116,105,112,108,121,0,0,99,105,114,99,108,101,112,108,117,115,0,0,0,0,0,0,101,109,112,116,121,115,101,116,0,0,0,0,0,0,0,0,105,110,116,101,114,115,101,99,116,105,111,110,0,0,0,0,117,110,105,111,110,0,0,0,112,114,111,112,101,114,115,117,112,101,114,115,101,116,0,0,114,101,102,108,101,120,115,117,112,101,114,115,101,116,0,0,110,111,116,115,117,98,115,101,116,0,0,0,0,0,0,0,112,114,111,112,101,114,115,117,98,115,101,116,0,0,0,0,114,101,102,108,101,120,115,117,98,115,101,116,0,0,0,0,101,108,101,109,101,110,116,0,110,111,116,101,108,101,109,101,110,116,0,0,0,0,0,0,97,110,103,108,101,0,0,0,103,114,97,100,105,101,110,116,0,0,0,0,0,0,0,0,114,101,103,105,115,116,101,114,115,101,114,105,102,0,0,0,99,111,112,121,114,105,103,104,116,115,101,114,105,102,0,0,116,114,97,100,101,109,97,114,107,115,101,114,105,102,0,0,100,111,116,109,97,116,104,0,108,111,103,105,99,97,108,97,110,100,0,0,0,0,0,0,108,111,103,105,99,97,108,111,114,0,0,0,0,0,0,0,97,114,114,111,119,100,98,108,98,111,116,104,0,0,0,0,97,114,114,111,119,100,98,108,108,101,102,116,0,0,0,0,97,114,114,111,119,100,98,108,117,112,0,0,0,0,0,0,97,114,114,111,119,100,98,108,114,105,103,104,116,0,0,0,97,114,114,111,119,100,98,108,100,111,119,110,0,0,0,0,97,110,103,108,101,108,101,102,116,0,0,0,0,0,0,0,114,101,103,105,115,116,101,114,115,97,110,115,0,0,0,0,99,111,112,121,114,105,103,104,116,115,97,110,115,0,0,0,116,114,97,100,101,109,97,114,107,115,97,110,115,0,0,0,112,97,114,101,110,108,101,102,116,116,112,0,0,0,0,0,112,97,114,101,110,108,101,102,116,101,120,0,0,0,0,0,112,97,114,101,110,108,101,102,116,98,116,0,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,116,112,0,0,0,98,114,97,99,107,101,116,108,101,102,116,101,120,0,0,0,98,114,97,99,107,101,116,108,101,102,116,98,116,0,0,0,98,114,97,99,101,108,101,102,116,116,112,0,0,0,0,0,98,114,97,99,101,108,101,102,116,109,105,100,0,0,0,0,98,114,97,99,101,108,101,102,116,98,116,0,0,0,0,0,98,114,97,99,101,101,120,0,97,110,103,108,101,114,105,103,104,116,0,0,0,0,0,0,105,110,116,101,103,114,97,108,116,112,0,0,0,0,0,0,105,110,116,101,103,114,97,108,101,120,0,0,0,0,0,0,105,110,116,101,103,114,97,108,98,116,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,116,112,0,0,0,0,112,97,114,101,110,114,105,103,104,116,101,120,0,0,0,0,112,97,114,101,110,114,105,103,104,116,98,116,0,0,0,0,98,114,97,99,107,101,116,114,105,103,104,116,116,112,0,0,98,114,97,99,107,101,116,114,105,103,104,116,101,120,0,0,98,114,97,99,107,101,116,114,105,103,104,116,98,116,0,0,98,114,97,99,101,114,105,103,104,116,116,112,0,0,0,0,98,114,97,99,101,114,105,103,104,116,109,105,100,0,0,0,98,114,97,99,101,114,105,103,104,116,98,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,5,2,0,152,5,2,0,176,40,2,0,176,5,2,0,192,40,2,0,200,5,2,0,208,5,2,0,208,40,2,0,240,5,2,0,0,6,2,0,224,40,2,0,32,6,2,0,40,6,2,0,240,40,2,0,56,6,2,0,64,6,2,0,72,6,2,0,80,6,2,0,88,6,2,0,96,6,2,0,104,6,2,0,112,6,2,0,120,6,2,0,128,6,2,0,136,6,2,0,144,6,2,0,152,6,2,0,160,6,2,0,176,6,2,0,184,6,2,0,192,6,2,0,200,6,2,0,248,40,2,0,8,41,2,0,16,41,2,0,24,41,2,0,96,12,2,0,32,41,2,0,40,41,2,0,48,41,2,0,56,41,2,0,64,41,2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+133128); -/* memory initializer */ allocate([72,41,2,0,80,41,2,0,88,41,2,0,96,41,2,0,104,41,2,0,112,41,2,0,120,41,2,0,128,41,2,0,136,41,2,0,144,41,2,0,152,41,2,0,160,41,2,0,168,41,2,0,248,11,2,0,176,41,2,0,184,41,2,0,192,41,2,0,176,7,2,0,200,41,2,0,208,7,2,0,216,41,2,0,240,7,2,0,232,41,2,0,248,41,2,0,0,42,2,0,8,42,2,0,16,42,2,0,24,42,2,0,32,42,2,0,40,42,2,0,48,42,2,0,56,42,2,0,64,42,2,0,72,42,2,0,80,42,2,0,144,11,2,0,88,42,2,0,96,42,2,0,192,11,2,0,104,42,2,0,112,42,2,0,120,42,2,0,128,42,2,0,136,42,2,0,144,42,2,0,152,42,2,0,160,42,2,0,168,42,2,0,176,42,2,0,216,8,2,0,232,8,2,0,240,8,2,0,184,42,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,42,2,0,208,42,2,0,104,11,2,0,64,13,2,0,72,11,2,0,72,12,2,0,216,42,2,0,224,42,2,0,232,42,2,0,240,42,2,0,248,42,2,0,8,43,2,0,24,43,2,0,32,43,2,0,48,43,2,0,144,10,2,0,88,11,2,0,64,43,2,0,120,11,2,0,104,32,2,0,72,43,2,0,152,11,2,0,184,10,2,0,16,13,2,0,40,11,2,0,88,43,2,0,80,12,2,0,136,12,2,0,104,43,2,0,120,43,2,0,136,43,2,0,152,43,2,0,160,43,2,0,176,43,2,0,192,43,2,0,208,43,2,0,224,43,2,0,240,43,2,0,0,44,2,0,16,44,2,0,24,44,2,0,40,44,2,0,56,44,2,0,72,44,2,0,88,44,2,0,104,44,2,0,112,44,2,0,128,44,2,0,136,44,2,0,152,44,2,0,168,44,2,0,184,44,2,0,184,11,2,0,64,12,2,0,200,44,2,0,48,12,2,0,208,44,2,0,224,44,2,0,240,44,2,0,0,45,2,0,16,45,2,0,32,45,2,0,48,45,2,0,24,13,2,0,64,45,2,0,80,45,2,0,96,45,2,0,112,45,2,0,168,11,2,0,128,45,2,0,144,45,2,0,160,45,2,0,176,45,2,0,192,45,2,0,208,45,2,0,224,45,2,0,240,45,2,0,0,46,2,0,16,46,2,0,0,0,0,0,24,46,2,0,200,11,2,0,40,46,2,0,56,46,2,0,72,46,2,0,88,46,2,0,104,46,2,0,120,46,2,0,136,46,2,0,152,46,2,0,168,46,2,0,184,46,2,0,200,46,2,0,216,46,2,0,0,0,0,0,97,49,0,0,0,0,0,0,97,50,0,0,0,0,0,0,97,50,48,50,0,0,0,0,97,51,0,0,0,0,0,0,97,52,0,0,0,0,0,0,97,53,0,0,0,0,0,0,97,49,49,57,0,0,0,0,97,49,49,56,0,0,0,0,97,49,49,55,0,0,0,0,97,49,49,0,0,0,0,0,97,49,50,0,0,0,0,0,97,49,51,0,0,0,0,0,97,49,52,0,0,0,0,0,97,49,53,0,0,0,0,0,97,49,54,0,0,0,0,0,97,49,48,53,0,0,0,0,97,49,55,0,0,0,0,0,97,49,56,0,0,0,0,0,97,49,57,0,0,0,0,0,97,50,48,0,0,0,0,0,97,50,49,0,0,0,0,0,97,50,50,0,0,0,0,0,97,50,51,0,0,0,0,0,97,50,52,0,0,0,0,0,97,50,53,0,0,0,0,0,97,50,54,0,0,0,0,0,97,50,55,0,0,0,0,0,97,50,56,0,0,0,0,0,97,54,0,0,0,0,0,0,97,55,0,0,0,0,0,0,97,56,0,0,0,0,0,0,97,57,0,0,0,0,0,0,97,49,48,0,0,0,0,0,97,50,57,0,0,0,0,0,97,51,48,0,0,0,0,0,97,51,49,0,0,0,0,0,97,51,50,0,0,0,0,0,97,51,51,0,0,0,0,0,97,51,52,0,0,0,0,0,97,51,53,0,0,0,0,0,97,51,54,0,0,0,0,0,97,51,55,0,0,0,0,0,97,51,56,0,0,0,0,0,97,51,57,0,0,0,0,0,97,52,48,0,0,0,0,0,97,52,49,0,0,0,0,0,97,52,50,0,0,0,0,0,97,52,51,0,0,0,0,0,97,52,52,0,0,0,0,0,97,52,53,0,0,0,0,0,97,52,54,0,0,0,0,0,97,52,55,0,0,0,0,0,97,52,56,0,0,0,0,0,97,52,57,0,0,0,0,0,97,53,48,0,0,0,0,0,97,53,49,0,0,0,0,0,97,53,50,0,0,0,0,0,97,53,51,0,0,0,0,0,97,53,52,0,0,0,0,0,97,53,53,0,0,0,0,0,97,53,54,0,0,0,0,0,97,53,55,0,0,0,0,0,97,53,56,0,0,0,0,0,97,53,57,0,0,0,0,0,97,54,48,0,0,0,0,0,97,54,49,0,0,0,0,0,97,54,50,0,0,0,0,0,97,54,51,0,0,0,0,0,97,54,52,0,0,0,0,0,97,54,53,0,0,0,0,0,97,54,54,0,0,0,0,0,97,54,55,0,0,0,0,0,97,54,56,0,0,0,0,0,97,54,57,0,0,0,0,0,97,55,48,0,0,0,0,0,97,55,49,0,0,0,0,0,97,55,50,0,0,0,0,0,97,55,51,0,0,0,0,0,97,55,52,0,0,0,0,0,97,50,48,51,0,0,0,0,97,55,53,0,0,0,0,0,97,50,48,52,0,0,0,0,97,55,54,0,0,0,0,0,97,55,55,0,0,0,0,0,97,55,56,0,0,0,0,0,97,55,57,0,0,0,0,0,97,56,49,0,0,0,0,0,97,56,50,0,0,0,0,0,97,56,51,0,0,0,0,0,97,56,52,0,0,0,0,0,97,57,55,0,0,0,0,0,97,57,56,0,0,0,0,0,97,57,57,0,0,0,0,0,97,49,48,48,0,0,0,0,97,49,48,49,0,0,0,0,97,49,48,50,0,0,0,0,97,49,48,51,0,0,0,0,97,49,48,52,0,0,0,0,97,49,48,54,0,0,0,0,97,49,48,55,0,0,0,0,97,49,48,56,0,0,0,0,97,49,49,50,0,0,0,0,97,49,49,49,0,0,0,0,97,49,49,48,0,0,0,0,97,49,48,57,0,0,0,0,97,49,50,48,0,0,0,0,97,49,50,49,0,0,0,0,97,49,50,50,0,0,0,0,97,49,50,51,0,0,0,0,97,49,50,52,0,0,0,0,97,49,50,53,0,0,0,0,97,49,50,54,0,0,0,0,97,49,50,55,0,0,0,0,97,49,50,56,0,0,0,0,97,49,50,57,0,0,0,0,97,49,51,48,0,0,0,0,97,49,51,49,0,0,0,0,97,49,51,50,0,0,0,0,97,49,51,51,0,0,0,0,97,49,51,52,0,0,0,0,97,49,51,53,0,0,0,0,97,49,51,54,0,0,0,0,97,49,51,55,0,0,0,0,97,49,51,56,0,0,0,0,97,49,51,57,0,0,0,0,97,49,52,48,0,0,0,0,97,49,52,49,0,0,0,0,97,49,52,50,0,0,0,0,97,49,52,51,0,0,0,0,97,49,52,52,0,0,0,0,97,49,52,53,0,0,0,0,97,49,52,54,0,0,0,0,97,49,52,55,0,0,0,0,97,49,52,56,0,0,0,0,97,49,52,57,0,0,0,0,97,49,53,48,0,0,0,0,97,49,53,49,0,0,0,0,97,49,53,50,0,0,0,0,97,49,53,51,0,0,0,0,97,49,53,52,0,0,0,0,97,49,53,53,0,0,0,0,97,49,53,54,0,0,0,0,97,49,53,55,0,0,0,0,97,49,53,56,0,0,0,0,97,49,53,57,0,0,0,0,97,49,54,48,0,0,0,0,97,49,54,49,0,0,0,0,97,49,54,51,0,0,0,0,97,49,54,52,0,0,0,0,97,49,57,54,0,0,0,0,97,49,54,53,0,0,0,0,97,49,57,50,0,0,0,0,97,49,54,54,0,0,0,0,97,49,54,55,0,0,0,0,97,49,54,56,0,0,0,0,97,49,54,57,0,0,0,0,97,49,55,48,0,0,0,0,97,49,55,49,0,0,0,0,97,49,55,50,0,0,0,0,97,49,55,51,0,0,0,0,97,49,54,50,0,0,0,0,97,49,55,52,0,0,0,0,97,49,55,53,0,0,0,0,97,49,55,54,0,0,0,0,97,49,55,55,0,0,0,0,97,49,55,56,0,0,0,0,97,49,55,57,0,0,0,0,97,49,57,51,0,0,0,0,97,49,56,48,0,0,0,0,97,49,57,57,0,0,0,0,97,49,56,49,0,0,0,0,97,50,48,48,0,0,0,0,97,49,56,50,0,0,0,0,97,50,48,49,0,0,0,0,97,49,56,51,0,0,0,0,97,49,56,52,0,0,0,0,97,49,57,55,0,0,0,0,97,49,56,53,0,0,0,0,97,49,57,52,0,0,0,0,97,49,57,56,0,0,0,0,97,49,56,54,0,0,0,0,97,49,57,53,0,0,0,0,97,49,56,55,0,0,0,0,97,49,56,56,0,0,0,0,97,49,56,57,0,0,0,0,97,49,57,48,0,0,0,0,97,49,57,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,5,2,0,232,50,2,0,240,50,2,0,248,50,2,0,0,51,2,0,8,51,2,0,16,51,2,0,24,51,2,0,32,51,2,0,40,51,2,0,48,51,2,0,56,51,2,0,64,51,2,0,72,51,2,0,80,51,2,0,88,51,2,0,96,51,2,0,104,51,2,0,112,51,2,0,120,51,2,0,128,51,2,0,136,51,2,0,144,51,2,0,152,51,2,0,160,51,2,0,168,51,2,0,176,51,2,0,184,51,2,0,192,51,2,0,200,51,2,0,208,51,2,0,216,51,2,0,224,51,2,0,232,51,2,0,240,51,2,0,248,51,2,0,0,52,2,0,8,52,2,0,16,52,2,0,24,52,2,0,32,52,2,0,40,52,2,0,48,52,2,0,56,52,2,0,64,52,2,0,72,52,2,0,80,52,2,0,88,52,2,0,96,52,2,0,104,52,2,0,112,52,2,0,120,52,2,0,128,52,2,0,136,52,2,0,144,52,2,0,152,52,2,0,160,52,2,0,168,52,2,0,176,52,2,0,184,52,2,0,192,52,2,0,200,52,2,0,208,52,2,0,216,52,2,0,224,52,2,0,232,52,2,0,240,52,2,0,248,52,2,0,0,53,2,0,8,53,2,0,16,53,2,0,24,53,2,0,32,53,2,0,40,53,2,0,48,53,2,0,56,53,2,0,64,53,2,0,72,53,2,0,80,53,2,0,88,53,2,0,96,53,2,0,104,53,2,0,112,53,2,0,120,53,2,0,128,53,2,0,136,53,2,0,144,53,2,0,152,53,2,0,160,53,2,0,168,53,2,0,176,53,2,0,184,53,2,0,192,53,2,0,200,53,2,0,208,53,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,53,2,0,224,53,2,0,232,53,2,0,240,53,2,0,248,53,2,0,0,54,2,0,8,54,2,0,16,54,2,0,24,54,2,0,32,54,2,0,40,54,2,0,48,54,2,0,56,54,2,0,64,54,2,0,72,54,2,0,80,54,2,0,88,54,2,0,96,54,2,0,104,54,2,0,112,54,2,0,120,54,2,0,128,54,2,0,136,54,2,0,144,54,2,0,152,54,2,0,160,54,2,0,168,54,2,0,176,54,2,0,184,54,2,0,192,54,2,0,200,54,2,0,208,54,2,0,216,54,2,0,224,54,2,0,232,54,2,0,240,54,2,0,248,54,2,0,0,55,2,0,8,55,2,0,16,55,2,0,24,55,2,0,32,55,2,0,40,55,2,0,48,55,2,0,56,55,2,0,64,55,2,0,72,55,2,0,80,55,2,0,88,55,2,0,96,55,2,0,104,55,2,0,112,55,2,0,120,55,2,0,128,55,2,0,136,55,2,0,144,55,2,0,152,55,2,0,160,55,2,0,168,55,2,0,176,55,2,0,184,55,2,0,192,55,2,0,200,55,2,0,208,55,2,0,216,55,2,0,224,55,2,0,232,55,2,0,240,55,2,0,248,55,2,0,0,56,2,0,8,56,2,0,16,56,2,0,24,56,2,0,32,56,2,0,40,56,2,0,48,56,2,0,56,56,2,0,64,56,2,0,72,56,2,0,0,0,0,0,80,56,2,0,88,56,2,0,96,56,2,0,104,56,2,0,112,56,2,0,120,56,2,0,128,56,2,0,136,56,2,0,144,56,2,0,152,56,2,0,160,56,2,0,168,56,2,0,176,56,2,0,184,56,2,0,0,0,0,0,0,0,0,0,200,65,2,0,137,0,0,0,138,0,0,0,139,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,84,77,0,0,0,0,0,0,82,101,99,116,0,0,0,0,65,110,110,111,116,97,116,105,111,110,32,114,101,99,116,97,110,103,108,101,32,105,115,32,119,114,111,110,103,32,116,121,112,101,0,0,0,0,0,0,66,97,100,32,97,110,110,111,116,97,116,105,111,110,32,114,101,99,116,97,110,103,108,101,0,0,0,0,0,0,0,0,70,84,0,0,0,0,0,0,80,97,114,101,110,116,0,0,0,0,0,0,232,65,2,0,140,0,0,0,141,0,0,0,142,0,0,0,0,0,0,0,79,102,102,0,0,0,0,0,86,0,0,0,0,0,0,0,65,83,0,0,0,0,0,0,65,80,0,0,0,0,0,0,76,101,110,103,116,104,0,0,68,0,0,0,0,0,0,0,70,111,114,109,87,105,100,103,101,116,66,117,116,116,111,110,58,58,32,117,110,97,98,108,101,32,116,111,32,102,105,110,100,32,116,104,101,32,111,110,32,115,116,97,116,101,32,102,111,114,32,116,104,101,32,98,117,116,116,111,110,10,0,0,0,0,0,0,0,0,0,0,70,111,114,109,87,105,100,103,101,116,66,117,116,116,111,110,58,58,32,109,117,108,116,105,112,108,101,32,99,104,111,105,99,101,32,105,115,110,39,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,10,0,0,0,0,0,16,66,2,0,143,0,0,0,144,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,56,66,2,0,137,0,0,0,146,0,0,0,147,0,0,0,0,0,0,0,79,112,116,0,0,0,0,0,70,111,114,109,87,105,100,103,101,116,67,104,111,105,99,101,58,58,32,105,110,118,97,108,105,100,32,79,112,116,32,101,110,116,114,121,32,45,45,32,97,114,114,97,121,39,115,32,108,101,110,103,116,104,32,60,32,50,10,0,0,0,0,0,70,111,114,109,87,105,100,103,101,116,67,104,111,105,99,101,58,58,32,105,110,118,97,108,105,100,32,37,100,32,79,112,116,32,101,110,116,114,121,10,0,0,0,0,0,0,0,0,0,0,0,0,248,66,2,0,148,0,0,0,149,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,176,65,2,0,150,0,0,0,151,0,0,0,152,0,0,0,0,0,0,0,75,105,100,115,0,0,0,0,82,101,102,101,114,101,110,99,101,32,116,111,32,97,110,32,105,110,118,97,108,105,100,32,111,114,32,110,111,110,32,101,120,105,115,116,97,110,116,32,111,98,106,101,99,116,0,0,83,117,98,116,121,112,101,0,70,105,101,108,100,32,99,97,110,39,116,32,104,97,118,101,32,98,111,116,104,32,87,105,100,103,101,116,32,65,78,68,32,70,105,101,108,100,32,97,115,32,107,105,100,115,10,0,70,111,117,110,100,32,108,111,111,112,32,105,110,32,70,111,114,109,70,105,101,108,100,32,99,114,101,97,116,105,111,110,0,0,0,0,0,0,0,0,70,111,114,109,70,105,101,108,100,32,99,104,105,108,100,32,105,115,32,110,111,116,32,97,32,82,101,102,32,97,115,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,0,0,70,102,0,0,0,0,0,0,83,117,98,84,121,112,101,32,111,110,32,110,111,110,45,116,101,114,109,105,110,97,108,32,102,105,101,108,100,44,32,105,110,118,97,108,105,100,32,100,111,99,117,109,101,110,116,63,0,0,0,0,0,0,0,0,0,0,0,0,96,66,2,0,150,0,0,0,153,0,0,0,154,0,0,0,0,0,0,0,70,111,114,109,70,105,101,108,100,66,117,116,116,111,110,58,58,32,114,97,100,105,111,115,73,110,85,110,105,115,111,110,32,102,108,97,103,32,117,110,105,109,112,108,101,109,101,110,116,101,100,44,32,112,108,101,97,115,101,32,114,101,112,111,114,116,32,97,32,98,117,103,32,119,105,116,104,32,97,32,116,101,115,116,99,97,115,101,10,0,0,0,0,0,0,0,70,111,114,109,70,105,101,108,100,66,117,116,116,111,110,58,58,115,101,116,83,116,97,116,101,32,99,97,108,108,101,100,32,111,110,32,97,32,114,101,97,100,79,110,108,121,32,102,105,101,108,100,10,0,0,0,0,0,0,0,128,66,2,0,155,0,0,0,156,0,0,0,152,0,0,0,0,0,0,0,77,97,120,76,101,110,0,0,0,0,0,0,168,66,2,0,157,0,0,0,158,0,0,0,152,0,0,0,0,0,0,0,0,0,0,0,208,66,2,0,150,0,0,0,159,0,0,0,152,0,0,0,0,0,0,0,78,101,101,100,65,112,112,101,97,114,97,110,99,101,115,0,70,105,101,108,100,115,0,0,68,105,114,101,99,116,32,111,98,106,101,99,116,32,105,110,32,114,111,111,116,70,105,101,108,100,115,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,105,110,32,70,105,101,108,100,115,32,97,114,114,97,121,32,116,111,32,97,110,32,105,110,118,97,108,105,100,32,111,114,32,110,111,110,32,101,120,105,115,116,97,110,116,32,111,98,106,101,99,116,0,0,67,97,110,39,116,32,103,101,116,32,70,105,101,108,100,115,32,97,114,114,97,121,10,0,66,116,110,0,0,0,0,0,84,120,0,0,0,0,0,0,67,104,0,0,0,0,0,0,83,105,103,0,0,0,0,0,57,70,111,114,109,70,105,101,108,100,0,0,0,0,0,0,88,113,4,0,160,65,2,0,49,48,70,111,114,109,87,105,100,103,101,116,0,0,0,0,88,113,4,0,184,65,2,0,49,54,70,111,114,109,87,105,100,103,101,116,66,117,116,116,111,110,0,0,0,0,0,0,128,113,4,0,208,65,2,0,200,65,2,0,0,0,0,0,49,52,70,111,114,109,87,105,100,103,101,116,84,101,120,116,0,0,0,0,0,0,0,0,128,113,4,0,248,65,2,0,200,65,2,0,0,0,0,0,49,54,70,111,114,109,87,105,100,103,101,116,67,104,111,105,99,101,0,0,0,0,0,0,128,113,4,0,32,66,2,0,200,65,2,0,0,0,0,0,49,53,70,111,114,109,70,105,101,108,100,66,117,116,116,111,110,0,0,0,0,0,0,0,128,113,4,0,72,66,2,0,176,65,2,0,0,0,0,0,49,51,70,111,114,109,70,105,101,108,100,84,101,120,116,0,128,113,4,0,112,66,2,0,176,65,2,0,0,0,0,0,49,53,70,111,114,109,70,105,101,108,100,67,104,111,105,99,101,0,0,0,0,0,0,0,128,113,4,0,144,66,2,0,176,65,2,0,0,0,0,0,49,56,70,111,114,109,70,105,101,108,100,83,105,103,110,97,116,117,114,101,0,0,0,0,128,113,4,0,184,66,2,0,176,65,2,0,0,0,0,0,49,57,70,111,114,109,87,105,100,103,101,116,83,105,103,110,97,116,117,114,101,0,0,0,128,113,4,0,224,66,2,0,200,65,2,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,32,111,114,32,37,100,0,0,0,0,0,34,0,0,0,3,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,39,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,66,42,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,66,68,67,0,2,0,0,0,4,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,66,73,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,66,77,67,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,66,84,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,66,88,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,67,83,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,0,0,0,0,68,80,0,0,2,0,0,0,4,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,68,111,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,69,73,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,69,77,67,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,69,84,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,69,88,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,71,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,73,68,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,74,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,75,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,77,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,77,80,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,82,71,0,0,3,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,83,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,83,67,0,0,252,255,255,255,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,83,67,78,0,223,255,255,255,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,56,0,0,0,0,0,0,0,84,42,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,84,68,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,84,74,0,0,1,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,84,76,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,84,99,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,84,100,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,84,102,0,0,2,0,0,0,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,84,106,0,0,1,0,0,0,3], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+143368); -/* memory initializer */ allocate([64,0,0,0,0,0,0,0,84,109,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,84,114,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,84,115,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,84,119,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,84,122,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,87,42,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,98,42,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,99,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,99,109,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,0,0,0,0,0,0,0,99,115,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,100,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,100,48,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,100,49,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,102,42,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,103,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,103,115,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,0,0,0,0,104,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,0,0,0,0,105,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,106,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,107,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,108,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,109,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,0,0,0,0,0,0,0,114,101,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,114,103,0,0,3,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,114,105,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,0,0,0,0,0,0,0,115,99,0,0,252,255,255,255,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,115,99,110,0,223,255,255,255,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,96,0,0,0,0,0,0,0,115,104,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,118,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,119,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,121,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,70,111,110,116,0,0,0,0,88,79,98,106,101,99,116,0,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,80,97,116,116,101,114,110,0,83,104,97,100,105,110,103,0,69,120,116,71,83,116,97,116,101,0,0,0,0,0,0,0,80,114,111,112,101,114,116,105,101,115,0,0,0,0,0,0,85,110,107,110,111,119,110,32,102,111,110,116,32,116,97,103,32,39,37,115,39,0,0,0,88,79,98,106,101,99,116,32,39,37,115,39,32,105,115,32,117,110,107,110,111,119,110,0,77,97,114,107,101,100,32,67,111,110,116,101,110,116,32,39,37,115,39,32,105,115,32,117,110,107,110,111,119,110,0,0,85,110,107,110,111,119,110,32,112,97,116,116,101,114,110,32,39,37,115,39,0,0,0,0,85,110,107,110,111,119,110,32,115,104,97,100,105,110,103,32,39,37,115,39,0,0,0,0,69,120,116,71,83,116,97,116,101,32,39,37,115,39,32,105,115,32,117,110,107,110,111,119,110,0,0,0,0,0,0,0,70,111,117,110,100,32,115,116,97,116,101,32,117,110,100,101,114,32,108,97,115,116,32,115,116,97,116,101,32,103,117,97,114,100,46,32,80,111,112,112,105,110,103,46,0,0,0,0,87,101,105,114,100,32,112,97,103,101,32,99,111,110,116,101,110,116,115,0,0,0,0,0,84,111,111,32,109,97,110,121,32,97,114,103,115,32,105,110,32,99,111,110,116,101,110,116,32,115,116,114,101,97,109,0,116,104,114,111,119,105,110,103,32,97,119,97,121,32,97,114,103,58,32,0,0,0,0,0,76,101,102,116,111,118,101,114,32,97,114,103,115,32,105,110,32,99,111,110,116,101,110,116,32,115,116,114,101,97,109,0,37,100,32,108,101,102,116,111,118,101,114,115,58,0,0,0,85,110,107,110,111,119,110,32,111,112,101,114,97,116,111,114,32,39,37,115,39,0,0,0,84,111,111,32,102,101,119,32,40,37,100,41,32,97,114,103,115,32,116,111,32,39,37,115,39,32,111,112,101,114,97,116,111,114,0,0,0,0,0,0,84,111,111,32,109,97,110,121,32,40,37,100,41,32,97,114,103,115,32,116,111,32,39,37,115,39,32,111,112,101,114,97,116,111,114,0,0,0,0,0,65,114,103,32,35,37,100,32,116,111,32,39,37,115,39,32,111,112,101,114,97,116,111,114,32,105,115,32,119,114,111,110,103,32,116,121,112,101,32,40,37,115,41,0,0,0,0,0,69,120,116,71,83,116,97,116,101,32,39,37,115,39,32,105,115,32,119,114,111,110,103,32,116,121,112,101,0,0,0,0,32,32,103,102,120,32,115,116,97,116,101,32,100,105,99,116,58,32,0,0,0,0,0,0,66,77,0,0,0,0,0,0,73,110,118,97,108,105,100,32,98,108,101,110,100,32,109,111,100,101,32,105,110,32,69,120,116,71,83,116,97,116,101,0,99,97,0,0,0,0,0,0,67,65,0,0,0,0,0,0,111,112,0,0,0,0,0,0,79,80,0,0,0,0,0,0,83,65,0,0,0,0,0,0,84,82,50,0,0,0,0,0,84,82,0,0,0,0,0,0,68,101,102,97,117,108,116,0,73,100,101,110,116,105,116,121,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,116,114,97,110,115,102,101,114,32,102,117,110,99,116,105,111,110,32,105,110,32,69,120,116,71,83,116,97,116,101,0,0,65,73,83,0,0,0,0,0,84,75,0,0,0,0,0,0,83,77,97,115,107,0,0,0,78,111,110,101,0,0,0,0,83,0,0,0,0,0,0,0,65,108,112,104,97,0,0,0,73,110,118,97,108,105,100,32,116,114,97,110,115,102,101,114,32,102,117,110,99,116,105,111,110,32,105,110,32,115,111,102,116,32,109,97,115,107,32,105,110,32,69,120,116,71,83,116,97,116,101,0,0,0,0,0,66,67,0,0,0,0,0,0,71,0,0,0,0,0,0,0,71,114,111,117,112,0,0,0,67,83,0,0,0,0,0,0,73,0,0,0,0,0,0,0,75,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,115,111,102,116,32,109,97,115,107,32,105,110,32,69,120,116,71,83,116,97,116,101,32,45,32,109,105,115,115,105,110,103,32,103,114,111,117,112,0,0,73,110,118,97,108,105,100,32,115,111,102,116,32,109,97,115,107,32,105,110,32,69,120,116,71,83,116,97,116,101,0,0,78,117,109,98,101,114,32,111,102,32,97,114,103,115,32,109,105,115,109,97,116,99,104,32,102,111,114,32,47,70,111,110,116,32,105,110,32,69,120,116,71,83,116,97,116,101,0,0,76,87,0,0,0,0,0,0,76,67,0,0,0,0,0,0,76,74,0,0,0,0,0,0,77,76,0,0,0,0,0,0,68,0,0,0,0,0,0,0,78,117,109,98,101,114,32,111,102,32,97,114,103,115,32,109,105,115,109,97,116,99,104,32,102,111,114,32,47,68,32,105,110,32,69,120,116,71,83,116,97,116,101,0,0,0,0,0,82,73,0,0,0,0,0,0,70,76,0,0,0,0,0,0,70,111,114,109,84,121,112,101,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,102,111,114,109,32,116,121,112,101,0,0,0,0,0,0,0,66,66,111,120,0,0,0,0,66,97,100,32,102,111,114,109,32,98,111,117,110,100,105,110,103,32,98,111,120,0,0,0,66,97,100,32,102,111,114,109,32,98,111,117,110,100,105,110,103,32,98,111,120,32,40,110,111,110,32,110,117,109,98,101,114,41,0,0,0,0,0,0,77,97,116,114,105,120,0,0,82,101,115,111,117,114,99,101,115,0,0,0,0,0,0,0,66,97,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,102,105,108,108,41,0,0,66,97,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,115,116,114,111,107,101,41,0,0,0,0,0,0,0,0,73,110,99,111,114,114,101,99,116,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,105,110,32,39,115,99,39,32,99,111,109,109,97,110,100,0,0,0,73,110,99,111,114,114,101,99,116,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,105,110,32,39,83,67,39,32,99,111,109,109,97,110,100,0,0,0,73,110,99,111,114,114,101,99,116,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,105,110,32,39,115,99,110,39,32,99,111,109,109,97,110,100,0,0,73,110,99,111,114,114,101,99,116,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,105,110,32,39,83,67,78,39,32,99,111,109,109,97,110,100,0,0,78,111,32,99,117,114,114,101,110,116,32,112,111,105,110,116,32,105,110,32,108,105,110,101,116,111,0,0,0,0,0,0,78,111,32,99,117,114,114,101,110,116,32,112,111,105,110,116,32,105,110,32,99,117,114,118,101,116,111,0,0,0,0,0,78,111,32,99,117,114,114,101,110,116,32,112,111,105,110,116,32,105,110,32,99,117,114,118,101,116,111,49,0,0,0,0,78,111,32,99,117,114,114,101,110,116,32,112,111,105,110,116,32,105,110,32,99,117,114,118,101,116,111,50,0,0,0,0,78,111,32,99,117,114,114,101,110,116,32,112,111,105,110,116,32,105,110,32,99,108,111,115,101,112,97,116,104,0,0,0,85,110,105,109,112,108,101,109,101,110,116,101,100,32,112,97,116,116,101,114,110,32,116,121,112,101,32,40,37,100,41,32,105,110,32,102,105,108,108,0,85,110,105,109,112,108,101,109,101,110,116,101,100,32,112,97,116,116,101,114,110,32,116,121,112,101,32,40,37,100,41,32,105,110,32,115,116,114,111,107,101,0,0,0,0,0,0,0,33,112,97,116,104,45,62,105,115,69,110,100,40,41,0,0,71,102,120,46,99,99,0,0,103,111,117,114,97,117,100,70,105,108,108,84,114,105,97,110,103,108,101,0,0,0,0,0,112,97,116,104,45,62,105,115,69,110,100,40,41,0,0,0,32,32,102,111,110,116,58,32,116,97,103,61,37,115,32,110,97,109,101,61,39,37,115,39,32,37,103,10,0,0,0,0,63,63,63,0,0,0,0,0,78,111,32,102,111,110,116,32,105,110,32,115,104,111,119,0,78,111,32,102,111,110,116,32,105,110,32,109,111,118,101,47,115,104,111,119,0,0,0,0,78,111,32,102,111,110,116,32,105,110,32,109,111,118,101,47,115,101,116,47,115,104,111,119,0,0,0,0,0,0,0,0,78,111,32,102,111,110,116,32,105,110,32,115,104,111,119,47,115,112,97,99,101,0,0,0,69,108,101,109,101,110,116,32,111,102,32,115,104,111,119,47,115,112,97,99,101,32,97,114,114,97,121,32,109,117,115,116,32,98,101,32,110,117,109,98,101,114,32,111,114,32,115,116,114,105,110,103,0,0,0,0,77,105,115,115,105,110,103,32,111,114,32,98,97,100,32,84,121,112,101,51,32,67,104,97,114,80,114,111,99,32,101,110,116,114,121,0,0,0,0,0,88,79,98,106,101,99,116,32,39,37,115,39,32,105,115,32,119,114,111,110,103,32,116,121,112,101,0,0,0,0,0,0,79,67,0,0,0,0,0,0,88,79,98,106,101,99,116,32,79,67,32,118,97,108,117,101,32,110,111,116,32,110,117,108,108,32,111,114,32,100,105,99,116,58,32,37,105,0,0,0,79,80,73,0,0,0,0,0,83,117,98,116,121,112,101,0,73,109,97,103,101,0,0,0,70,111,114,109,0,0,0,0,80,83,0,0,0,0,0,0,76,101,118,101,108,49,0,0,85,110,107,110,111,119,110,32,88,79,98,106,101,99,116,32,115,117,98,116,121,112,101,32,39,37,115,39,0,0,0,0,88,79,98,106,101,99,116,32,115,117,98,116,121,112,101,32,105,115,32,109,105,115,115,105,110,103,32,111,114,32,119,114,111,110,103,32,116,121,112,101,0,0,0,0,0,0,0,0,87,105,100,116,104,0,0,0,87,0,0,0,0,0,0,0,72,101,105,103,104,116,0,0,72,0,0,0,0,0,0,0,73,110,116,101,114,112,111,108,97,116,101,0,0,0,0,0,73,109,97,103,101,77,97,115,107,0,0,0,0,0,0,0,73,77,0,0,0,0,0,0,66,105,116,115,80,101,114,67,111,109,112,111,110,101,110,116,0,0,0,0,0,0,0,0,66,80,67,0,0,0,0,0,68,101,99,111,100,101,0,0,77,97,115,107,0,0,0,0,77,97,115,107,32,101,110,116,114,121,32,115,104,111,117,108,100,32,98,101,32,97,110,32,105,110,116,101,103,101,114,32,98,117,116,32,105,116,39,115,32,97,32,114,101,97,108,44,32,116,114,121,105,110,103,32,116,111,32,117,115,101,32,105,116,0,0,0,0,0,0,0,77,97,115,107,32,101,110,116,114,121,32,115,104,111,117,108,100,32,98,101,32,97,110,32,105,110,116,101,103,101,114,32,98,117,116,32,105,116,39,115,32,111,102,32,116,121,112,101,32,37,100,0,0,0,0,0,66,97,100,32,105,109,97,103,101,32,112,97,114,97,109,101,116,101,114,115,0,0,0,0,66,97,100,32,102,111,114,109,32,98,111,117,110,100,105,110,103,32,98,111,120,32,118,97,108,117,101,0,0,0,0,0,84,114,97,110,115,112,97,114,101,110,99,121,0,0,0,0,84,104,101,114,101,39,115,32,97,32,102,111,114,109,32,119,105,116,104,32,109,111,114,101,32,113,32,116,104,97,110,32,81,44,32,116,114,121,105,110,103,32,116,111,32,102,105,120,0,0,0,0,0,0,0,0,84,104,101,114,101,39,115,32,97,32,102,111,114,109,32,119,105,116,104,32,109,111,114,101,32,81,32,116,104,97,110,32,113,0,0,0,0,0,0,0,73,68,0,0,0,0,0,0,73,110,108,105,110,101,32,105,109,97,103,101,32,100,105,99,116,105,111,110,97,114,121,32,107,101,121,32,109,117,115,116,32,98,101,32,97,32,110,97,109,101,32,111,98,106,101,99,116,0,0,0,0,0,0,0,69,110,100,32,111,102,32,102,105,108,101,32,105,110,32,105,110,108,105,110,101,32,105,109,97,103,101,0,0,0,0,0,73,110,116,101,114,110,97,108,58,32,103,111,116,32,39,73,68,39,32,111,112,101,114,97,116,111,114,0,0,0,0,0,73,110,116,101,114,110,97,108,58,32,103,111,116,32,39,69,73,39,32,111,112,101,114,97,116,111,114,0,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,77,67,32,84,121,112,101,58,32,37,105,0,0,68,73,68,32,78,79,84,32,102,105,110,100,32,37,115,0,105,110,115,117,102,102,105,99,105,101,110,116,32,97,114,103,117,109,101,110,116,115,32,102,111,114,32,77,97,114,107,101,100,32,67,111,110,116,101,110,116,0,0,0,0,0,0,0,32,32,109,97,114,107,101,100,32,99,111,110,116,101,110,116,58,32,37,115,32,0,0,0,32,32,109,97,114,107,32,112,111,105,110,116,58,32,37,115,32,0,0,0,0,0,0,0,82,101,115,116,111,114,105,110,103,32,115,116,97,116,101,32,119,104,101,110,32,110,111,32,118,97,108,105,100,32,115,116,97,116,101,115,32,116,111,32,112,111,112,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,32,111,114,32,37,100,0,0,0,0,0,66,97,115,101,70,111,110,116,0,0,0,0,0,0,0,0,83,117,98,116,121,112,101,0,84,121,112,101,49,0,0,0,77,77,84,121,112,101,49,0,84,121,112,101,49,67,0,0,84,121,112,101,51,0,0,0,84,114,117,101,84,121,112,101,0,0,0,0,0,0,0,0,84,121,112,101,48,0,0,0,85,110,107,110,111,119,110,32,102,111,110,116,32,116,121,112,101,58,32,39,37,115,39,0,63,63,63,0,0,0,0,0,0,0,0,0,248,136,2,0,103,0,0,0,1,0,0,0,104,0,0,0,1,0,0,0,160,0,0,0,161,0,0,0,70,111,110,116,68,101,115,99,114,105,112,116,111,114,0,0,70,108,97,103,115,0,0,0,70,111,110,116,78,97,109,101,0,0,0,0,0,0,0,0,70,111,110,116,110,97,109,101,0,0,0,0,0,0,0,0,84,104,101,32,102,105,108,101,32,117,115,101,115,32,70,111,110,116,110,97,109,101,32,105,110,115,116,101,97,100,32,111,102,32,70,111,110,116,78,97,109,101,32,112,108,101,97,115,101,32,110,111,116,105,102,121,32,116,104,101,32,99,114,101,97,116,111,114,32,116,104,97,116,32,116,104,101,32,102,105,108,101,32,105,115,32,98,114,111,107,101,110,0,0,0,0,70,111,110,116,70,97,109,105,108,121,0,0,0,0,0,0,70,111,110,116,83,116,114,101,116,99,104,0,0,0,0,0,85,108,116,114,97,67,111,110,100,101,110,115,101,100,0,0,69,120,116,114,97,67,111,110,100,101,110,115,101,100,0,0,67,111,110,100,101,110,115,101,100,0,0,0,0,0,0,0,83,101,109,105,67,111,110,100,101,110,115,101,100,0,0,0,78,111,114,109,97,108,0,0,83,101,109,105,69,120,112,97,110,100,101,100,0,0,0,0,69,120,112,97,110,100,101,100,0,0,0,0,0,0,0,0,69,120,116,114,97,69,120,112,97,110,100,101,100,0,0,0,85,108,116,114,97,69,120,112,97,110,100,101,100,0,0,0,73,110,118,97,108,105,100,32,70,111,110,116,32,83,116,114,101,116,99,104,0,0,0,0,70,111,110,116,87,101,105,103,104,116,0,0,0,0,0,0,73,110,118,97,108,105,100,32,70,111,110,116,32,87,101,105,103,104,116,0,0,0,0,0,70,111,110,116,70,105,108,101,0,0,0,0,0,0,0,0,77,105,115,109,97,116,99,104,32,98,101,116,119,101,101,110,32,102,111,110,116,32,116,121,112,101,32,97,110,100,32,101,109,98,101,100,100,101,100,32,102,111,110,116,32,102,105,108,101,0,0,0,0,0,0,0,67,73,68,32,102,111,110,116,32,104,97,115,32,70,111,110,116,70,105,108,101,32,97,116,116,114,105,98,117,116,101,59,32,97,115,115,117,109,105,110,103,32,67,73,68,84,121,112,101,48,0,0,0,0,0,0,70,111,110,116,70,105,108,101,50,0,0,0,0,0,0,0,70,111,110,116,70,105,108,101,51,0,0,0,0,0,0,0,69,109,98,101,100,100,101,100,32,67,73,68,32,102,111,110,116,32,104,97,115,32,116,121,112,101,32,84,121,112,101,49,59,32,97,115,115,117,109,105,110,103,32,67,73,68,84,121,112,101,48,0,0,0,0,0,69,109,98,101,100,100,101,100,32,67,73,68,32,102,111,110,116,32,104,97,115,32,116,121,112,101,32,84,121,112,101,49,67,59,32,97,115,115,117,109,105,110,103,32,67,73,68,84,121,112,101,48,67,0,0,0,69,109,98,101,100,100,101,100,32,67,73,68,32,102,111,110,116,32,104,97,115,32,116,121,112,101,32,84,114,117,101,84,121,112,101,59,32,97,115,115,117,109,105,110,103,32,67,73,68,84,121,112,101,50,0,0,67,73,68,70,111,110,116,84,121,112,101,48,67,0,0,0,69,109,98,101,100,100,101,100,32,110,111,110,45,67,73,68,32,102,111,110,116,32,104,97,115,32,116,121,112,101,32,67,73,68,70,111,110,116,84,121,112,101,48,99,59,32,97,115,115,117,109,105,110,103,32,84,121,112,101,49,67,0,0,0,79,112,101,110,84,121,112,101,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,101,109,98,101,100,100,101,100,32,102,111,110,116,32,116,121,112,101,32,39,37,115,39,0,77,105,115,115,105,110,103,87,105,100,116,104,0,0,0,0,65,115,99,101,110,116,0,0,68,101,115,99,101,110,116,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,84,111,85,110,105,99,111,100,101,0,0,0,0,0,0,0,152,126,2,0,160,126,2,0,168,126,2,0,176,126,2,0,0,0,0,0,0,0,0,0,46,112,102,97,0,0,0,0,46,112,102,98,0,0,0,0,46,112,115,0,0,0,0,0,0,0,0,0,0,0,0,0,200,126,2,0,208,126,2,0,0,0,0,0,0,0,0,0,46,116,116,102,0,0,0,0,46,116,116,99,0,0,0,0,69,109,98,101,100,100,101,100,32,102,111,110,116,32,102,105,108,101,32,105,115,32,110,111,116,32,97,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,0,0,0,137,2,0,103,0,0,0,105,0,0,0,104,0,0,0,1,0,0,0,162,0,0,0,163,0,0,0,48,138,2,0,56,138,2,0,72,138,2,0,88,138,2,0,104,138,2,0,128,138,2,0,152,138,2,0,168,138,2,0,192,138,2,0,88,138,2,0,208,138,2,0,128,138,2,0,232,138,2,0,128,138,2,0,0,139,2,0,88,138,2,0,16,139,2,0,168,138,2,0,32,139,2,0,168,138,2,0,48,139,2,0,56,138,2,0,56,139,2,0,72,139,2,0,88,139,2,0,112,139,2,0,136,139,2,0,152,139,2,0,168,139,2,0,184,139,2,0,192,139,2,0,72,139,2,0,208,139,2,0,112,139,2,0,232,139,2,0,152,139,2,0,0,140,2,0,72,139,2,0,16,140,2,0,112,139,2,0,40,140,2,0,152,139,2,0,64,140,2,0,112,139,2,0,96,140,2,0,72,139,2,0,120,140,2,0,152,139,2,0,144,140,2,0,184,139,2,0,160,140,2,0,88,138,2,0,176,140,2,0,128,138,2,0,200,140,2,0,168,138,2,0,224,140,2,0,128,138,2,0,248,140,2,0,168,138,2,0,16,141,2,0,32,141,2,0,40,141,2,0,32,141,2,0,64,141,2,0,32,141,2,0,80,141,2,0,96,141,2,0,112,141,2,0,136,141,2,0,152,141,2,0,184,141,2,0,208,141,2,0,232,141,2,0,248,141,2,0,136,141,2,0,16,142,2,0,184,141,2,0,48,142,2,0,232,141,2,0,72,142,2,0,96,141,2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+153696); -/* memory initializer */ allocate([88,142,2,0,136,141,2,0,112,142,2,0,184,141,2,0,144,142,2,0,184,141,2,0,176,142,2,0,136,141,2,0,200,142,2,0,232,141,2,0,224,142,2,0,232,141,2,0,0,143,2,0,96,141,2,0,24,143,2,0,136,141,2,0,48,143,2,0,184,141,2,0,80,143,2,0,232,141,2,0,70,111,110,116,77,97,116,114,105,120,0,0,0,0,0,0,67,104,97,114,80,114,111,99,115,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,67,104,97,114,80,114,111,99,115,32,100,105,99,116,105,111,110,97,114,121,32,105,110,32,84,121,112,101,32,51,32,102,111,110,116,0,0,82,101,115,111,117,114,99,101,115,0,0,0,0,0,0,0,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,66,97,115,101,69,110,99,111,100,105,110,103,0,0,0,0,77,97,99,82,111,109,97,110,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,77,97,99,69,120,112,101,114,116,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,87,105,110,65,110,115,105,69,110,99,111,100,105,110,103,0,68,105,102,102,101,114,101,110,99,101,115,0,0,0,0,0,87,114,111,110,103,32,116,121,112,101,32,105,110,32,102,111,110,116,32,101,110,99,111,100,105,110,103,32,114,101,115,111,117,114,99,101,32,100,105,102,102,101,114,101,110,99,101,115,32,40,37,115,41,0,0,0,46,110,111,116,100,101,102,0,70,105,114,115,116,67,104,97,114,0,0,0,0,0,0,0,76,97,115,116,67,104,97,114,0,0,0,0,0,0,0,0,87,105,100,116,104,115,0,0,115,112,97,99,101,0,0,0,0,0,0,0,32,137,2,0,106,0,0,0,107,0,0,0,108,0,0,0,2,0,0,0,164,0,0,0,165,0,0,0,68,101,115,99,101,110,100,97,110,116,70,111,110,116,115,0,77,105,115,115,105,110,103,32,68,101,115,99,101,110,100,97,110,116,70,111,110,116,115,32,101,110,116,114,121,32,105,110,32,84,121,112,101,32,48,32,102,111,110,116,0,0,0,0,66,97,100,32,100,101,115,99,101,110,100,97,110,116,32,102,111,110,116,32,105,110,32,84,121,112,101,32,48,32,102,111,110,116,0,0,0,0,0,0,77,105,115,115,105,110,103,32,83,117,98,116,121,112,101,32,101,110,116,114,121,32,105,110,32,84,121,112,101,32,48,32,100,101,115,99,101,110,100,97,110,116,32,102,111,110,116,0,67,73,68,70,111,110,116,84,121,112,101,48,0,0,0,0,67,73,68,70,111,110,116,84,121,112,101,50,0,0,0,0,85,110,107,110,111,119,110,32,84,121,112,101,32,48,32,100,101,115,99,101,110,100,97,110,116,32,102,111,110,116,32,116,121,112,101,32,39,37,115,39,0,0,0,0,0,0,0,0,67,73,68,83,121,115,116,101,109,73,110,102,111,0,0,0,77,105,115,115,105,110,103,32,67,73,68,83,121,115,116,101,109,73,110,102,111,32,100,105,99,116,105,111,110,97,114,121,32,105,110,32,84,121,112,101,32,48,32,100,101,115,99,101,110,100,97,110,116,32,102,111,110,116,0,0,0,0,0,0,82,101,103,105,115,116,114,121,0,0,0,0,0,0,0,0,79,114,100,101,114,105,110,103,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,67,73,68,83,121,115,116,101,109,73,110,102,111,32,100,105,99,116,105,111,110,97,114,121,32,105,110,32,84,121,112,101,32,48,32,100,101,115,99,101,110,100,97,110,116,32,102,111,110,116,0,0,0,0,0,0,65,100,111,98,101,45,73,100,101,110,116,105,116,121,0,0,65,100,111,98,101,45,85,67,83,0,0,0,0,0,0,0,240,131,2,0,0,132,2,0,16,132,2,0,32,132,2,0,48,132,2,0,0,0,0,0,65,100,111,98,101,45,67,78,83,49,0,0,0,0,0,0,65,100,111,98,101,45,71,66,49,0,0,0,0,0,0,0,65,100,111,98,101,45,74,97,112,97,110,49,0,0,0,0,65,100,111,98,101,45,74,97,112,97,110,50,0,0,0,0,65,100,111,98,101,45,75,111,114,101,97,49,0,0,0,0,77,105,115,115,105,110,103,32,108,97,110,103,117,97,103,101,32,112,97,99,107,32,102,111,114,32,39,37,115,39,32,109,97,112,112,105,110,103,0,0,85,110,107,110,111,119,110,32,99,104,97,114,97,99,116,101,114,32,99,111,108,108,101,99,116,105,111,110,32,39,37,115,39,0,0,0,0,0,0,0,67,77,97,112,78,97,109,101,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,69,110,99,111,100,105,110,103,32,101,110,116,114,121,32,105,110,32,84,121,112,101,32,48,32,102,111,110,116,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,67,77,97,112,32,39,37,115,39,32,102,111,114,32,99,104,97,114,97,99,116,101,114,32,99,111,108,108,101,99,116,105,111,110,32,39,37,115,39,0,67,73,68,84,111,71,73,68,77,97,112,0,0,0,0,0,73,100,101,110,116,105,116,121,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,67,73,68,84,111,71,73,68,77,97,112,32,101,110,116,114,121,32,105,110,32,67,73,68,32,102,111,110,116,0,0,0,68,87,0,0,0,0,0,0,87,0,0,0,0,0,0,0,66,97,100,32,119,105,100,116,104,115,32,97,114,114,97,121,32,105,110,32,84,121,112,101,32,48,32,102,111,110,116,0,68,87,50,0,0,0,0,0,87,50,0,0,0,0,0,0,66,97,100,32,119,105,100,116,104,115,32,40,87,50,41,32,97,114,114,97,121,32,105,110,32,84,121,112,101,32,48,32,102,111,110,116,0,0,0,0,0,32,0,0,1,32,0,0,2,32,0,0,3,32,0,0,4,32,0,0,5,32,0,0,6,32,0,0,7,32,0,0,8,32,0,0,9,32,0,0,10,32,0,0,160,0,0,0,11,32,0,0,96,32,0,0,0,48,0,0,255,254,0,0,0,0,0,0,0,0,0,0,24,134,2,0,40,134,2,0,56,134,2,0,72,134,2,0,0,0,0,0,0,0,0,0,85,110,105,67,78,83,45,85,84,70,51,50,45,86,0,0,85,110,105,67,78,83,45,85,67,83,50,45,86,0,0,0,85,110,105,67,78,83,45,85,84,70,51,50,45,72,0,0,85,110,105,67,78,83,45,85,67,83,50,45,72,0,0,0,112,134,2,0,128,134,2,0,144,134,2,0,160,134,2,0,0,0,0,0,0,0,0,0,85,110,105,71,66,45,85,84,70,51,50,45,86,0,0,0,85,110,105,71,66,45,85,67,83,50,45,86,0,0,0,0,85,110,105,71,66,45,85,84,70,51,50,45,72,0,0,0,85,110,105,71,66,45,85,67,83,50,45,72,0,0,0,0,200,134,2,0,216,134,2,0,232,134,2,0,248,134,2,0,0,0,0,0,0,0,0,0,85,110,105,74,73,83,45,85,84,70,51,50,45,86,0,0,85,110,105,74,73,83,45,85,67,83,50,45,86,0,0,0,85,110,105,74,73,83,45,85,84,70,51,50,45,72,0,0,85,110,105,74,73,83,45,85,67,83,50,45,72,0,0,0,32,135,2,0,48,135,2,0,64,135,2,0,80,135,2,0,0,0,0,0,0,0,0,0,85,110,105,72,111,106,111,45,85,84,70,51,50,45,86,0,85,110,105,72,111,106,111,45,85,67,83,50,45,86,0,0,85,110,105,72,111,106,111,45,85,84,70,51,50,45,72,0,85,110,105,72,111,106,111,45,85,67,83,50,45,72,0,0,120,135,2,0,136,135,2,0,152,135,2,0,168,135,2,0,0,0,0,0,0,0,0,0,85,110,105,75,83,45,85,84,70,51,50,45,86,0,0,0,85,110,105,75,83,45,85,67,83,50,45,86,0,0,0,0,85,110,105,75,83,45,85,84,70,51,50,45,72,0,0,0,85,110,105,75,83,45,85,67,83,50,45,72,0,0,0,0,240,131,2,0,24,136,2,0,32,136,2,0,0,134,2,0,0,132,2,0,24,136,2,0,48,136,2,0,88,134,2,0,16,132,2,0,24,136,2,0,64,136,2,0,176,134,2,0,32,132,2,0,24,136,2,0,88,136,2,0,8,135,2,0,48,132,2,0,24,136,2,0,112,136,2,0,96,135,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,97,110,97,0,0,0,0,65,100,111,98,101,45,67,78,83,49,45,85,67,83,50,0,65,100,111,98,101,45,71,66,49,45,85,67,83,50,0,0,65,100,111,98,101,45,74,97,112,97,110,49,45,85,67,83,50,0,0,0,0,0,0,0,65,100,111,98,101,45,74,97,112,97,110,50,45,85,67,83,50,0,0,0,0,0,0,0,65,100,111,98,101,45,75,111,114,101,97,49,45,85,67,83,50,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,99,104,97,114,97,99,116,101,114,32,99,111,108,108,101,99,116,105,111,110,32,37,115,10,0,0,0,0,0,0,0,0,102,111,110,116,32,114,101,115,111,117,114,99,101,32,105,115,32,110,111,116,32,97,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,49,49,71,102,120,56,66,105,116,70,111,110,116,0,0,0,55,71,102,120,70,111,110,116,0,0,0,0,0,0,0,0,88,113,4,0,232,136,2,0,128,113,4,0,216,136,2,0,248,136,2,0,0,0,0,0,49,48,71,102,120,67,73,68,70,111,110,116,0,0,0,0,128,113,4,0,16,137,2,0,248,136,2,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,90,101,114,111,45,108,101,110,103,116,104,32,111,117,116,112,117,116,32,98,117,102,102,101,114,32,40,114,101,99,117,114,115,105,111,110,32,111,118,101,114,102,108,111,119,63,41,32,105,110,32,112,97,114,115,101,67,104,97,114,78,97,109,101,44,32,99,111,109,112,111,110,101,110,116,32,34,37,115,34,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,112,97,114,115,101,32,108,105,103,97,116,117,114,101,32,99,111,109,112,111,110,101,110,116,32,34,37,115,34,32,111,102,32,34,37,115,34,32,105,110,32,112,97,114,115,101,67,104,97,114,78,97,109,101,0,0,0,0,0,0,0,0,117,110,105,0,0,0,0,0,37,52,120,0,0,0,0,0,37,120,0,0,0,0,0,0,65,114,105,97,108,0,0,0,72,101,108,118,101,116,105,99,97,0,0,0,0,0,0,0,65,114,105,97,108,44,66,111,108,100,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,66,111,108,100,0,0,65,114,105,97,108,44,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,66,111,108,100,79,98,108,105,113,117,101,0,0,0,65,114,105,97,108,44,73,116,97,108,105,99,0,0,0,0,72,101,108,118,101,116,105,99,97,45,79,98,108,105,113,117,101,0,0,0,0,0,0,0,65,114,105,97,108,45,66,111,108,100,0,0,0,0,0,0,65,114,105,97,108,45,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,0,0,65,114,105,97,108,45,66,111,108,100,73,116,97,108,105,99,77,84,0,0,0,0,0,0,65,114,105,97,108,45,66,111,108,100,77,84,0,0,0,0,65,114,105,97,108,45,73,116,97,108,105,99,0,0,0,0,65,114,105,97,108,45,73,116,97,108,105,99,77,84,0,0,65,114,105,97,108,77,84,0,67,111,117,114,105,101,114,44,66,111,108,100,0,0,0,0,67,111,117,114,105,101,114,45,66,111,108,100,0,0,0,0,67,111,117,114,105,101,114,44,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,67,111,117,114,105,101,114,45,66,111,108,100,79,98,108,105,113,117,101,0,0,0,0,0,67,111,117,114,105,101,114,44,73,116,97,108,105,99,0,0,67,111,117,114,105,101,114,45,79,98,108,105,113,117,101,0,67,111,117,114,105,101,114,78,101,119,0,0,0,0,0,0,67,111,117,114,105,101,114,0,67,111,117,114,105,101,114,78,101,119,44,66,111,108,100,0,67,111,117,114,105,101,114,78,101,119,44,66,111,108,100,73,116,97,108,105,99,0,0,0,67,111,117,114,105,101,114,78,101,119,44,73,116,97,108,105,99,0,0,0,0,0,0,0,67,111,117,114,105,101,114,78,101,119,45,66,111,108,100,0,67,111,117,114,105,101,114,78,101,119,45,66,111,108,100,73,116,97,108,105,99,0,0,0,67,111,117,114,105,101,114,78,101,119,45,73,116,97,108,105,99,0,0,0,0,0,0,0,67,111,117,114,105,101,114,78,101,119,80,83,45,66,111,108,100,73,116,97,108,105,99,77,84,0,0,0,0,0,0,0,67,111,117,114,105,101,114,78,101,119,80,83,45,66,111,108,100,77,84,0,0,0,0,0,67,111,117,114,105,101,114,78,101,119,80,83,45,73,116,97,108,105,99,77,84,0,0,0,67,111,117,114,105,101,114,78,101,119,80,83,77,84,0,0,72,101,108,118,101,116,105,99,97,44,66,111,108,100,0,0,72,101,108,118,101,116,105,99,97,44,66,111,108,100,73,116,97,108,105,99,0,0,0,0,72,101,108,118,101,116,105,99,97,44,73,116,97,108,105,99,0,0,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,66,111,108,100,73,116,97,108,105,99,0,0,0,0,72,101,108,118,101,116,105,99,97,45,73,116,97,108,105,99,0,0,0,0,0,0,0,0,83,121,109,98,111,108,44,66,111,108,100,0,0,0,0,0,83,121,109,98,111,108,0,0,83,121,109,98,111,108,44,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,0,83,121,109,98,111,108,44,73,116,97,108,105,99,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,0,0,0,84,105,109,101,115,45,82,111,109,97,110,0,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,44,66,111,108,100,0,0,0,0,0,0,84,105,109,101,115,45,66,111,108,100,0,0,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,44,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,0,0,84,105,109,101,115,45,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,44,73,116,97,108,105,99,0,0,0,0,84,105,109,101,115,45,73,116,97,108,105,99,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,45,66,111,108,100,0,0,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,45,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,45,73,116,97,108,105,99,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,45,66,111,108,100,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,45,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,45,66,111,108,100,73,116,97,108,105,99,77,84,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,45,66,111,108,100,77,84,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,45,73,116,97,108,105,99,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,45,73,116,97,108,105,99,77,84,0,0,0,0,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,77,84,0,0,0,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,77,84,44,66,111,108,100,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,77,84,44,66,111,108,100,73,116,97,108,105,99,0,0,0,0,84,105,109,101,115,78,101,119,82,111,109,97,110,80,83,77,84,44,73,116,97,108,105,99,0,0,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,32,111,114,32,37,100,0,0,0,0,0,68,101,118,105,99,101,71,114,97,121,0,0,0,0,0,0,71,0,0,0,0,0,0,0,68,101,118,105,99,101,82,71,66,0,0,0,0,0,0,0,82,71,66,0,0,0,0,0,68,101,118,105,99,101,67,77,89,75,0,0,0,0,0,0,67,77,89,75,0,0,0,0,80,97,116,116,101,114,110,0,66,97,100,32,99,111,108,111,114,32,115,112,97,99,101,32,39,37,115,39,0,0,0,0,67,97,108,71,114,97,121,0,67,97,108,82,71,66,0,0,76,97,98,0,0,0,0,0,73,67,67,66,97,115,101,100,0,0,0,0,0,0,0,0,73,110,100,101,120,101,100,0,73,0,0,0,0,0,0,0,83,101,112,97,114,97,116,105,111,110,0,0,0,0,0,0,68,101,118,105,99,101,78,0,66,97,100,32,99,111,108,111,114,32,115,112,97,99,101,0,66,97,100,32,99,111,108,111,114,32,115,112,97,99,101,32,45,32,101,120,112,101,99,116,101,100,32,110,97,109,101,32,111,114,32,97,114,114,97,121,0,0,0,0,0,0,0,0,0,0,0,0,208,158,2,0,166,0,0,0,167,0,0,0,109,0,0,0,110,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,16,0,0,0,17,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,57,0,0,0,18,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,128,159,2,0,166,0,0,0,168,0,0,0,115,0,0,0,116,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,19,0,0,0,20,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,58,0,0,0,18,0,0,0,114,0,0,0,0,0,0,0,66,97,100,32,67,97,108,71,114,97,121,32,99,111,108,111,114,32,115,112,97,99,101,0,87,104,105,116,101,80,111,105,110,116,0,0,0,0,0,0,66,108,97,99,107,80,111,105,110,116,0,0,0,0,0,0,71,97,109,109,97,0,0,0,0,0,0,0,0,159,2,0,166,0,0,0,169,0,0,0,120,0,0,0,121,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,21,0,0,0,22,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,59,0,0,0,18,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,168,159,2,0,166,0,0,0,170,0,0,0,125,0,0,0,126,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,19,0,0,0,20,0,0,0,117,0,0,0,118,0,0,0,127,0,0,0,60,0,0,0,18,0,0,0,114,0,0,0,0,0,0,0,66,97,100,32,67,97,108,82,71,66,32,99,111,108,111,114,32,115,112,97,99,101,0,0,77,97,116,114,105,120,0,0,0,0,0,0,48,159,2,0,166,0,0,0,171,0,0,0,128,0,0,0,129,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,19,0,0,0,20,0,0,0,117,0,0,0,118,0,0,0,130,0,0,0,61,0,0,0,18,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,208,159,2,0,166,0,0,0,172,0,0,0,131,0,0,0,132,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,19,0,0,0,20,0,0,0,117,0,0,0,118,0,0,0,133,0,0,0,62,0,0,0,23,0,0,0,114,0,0,0,0,0,0,0,66,97,100,32,76,97,98,32,99,111,108,111,114,32,115,112,97,99,101,0,0,0,0,0,82,97,110,103,101,0,0,0,0,0,0,0,248,159,2,0,173,0,0,0,174,0,0,0,134,0,0,0,135,0,0,0,119,0,0,0,120,0,0,0,121,0,0,0,19,0,0,0,24,0,0,0,136,0,0,0,118,0,0,0,137,0,0,0,63,0,0,0,25,0,0,0,114,0,0,0,0,0,0,0,66,97,100,32,73,67,67,66,97,115,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,115,116,114,101,97,109,41,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,66,97,100,32,73,67,67,66,97,115,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,78,41,0,0,0,0,73,67,67,66,97,115,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,119,105,116,104,32,116,111,111,32,109,97,110,121,32,40,37,100,32,62,32,37,100,41,32,99,111,109,112,111,110,101,110,116,115,0,65,108,116,101,114,110,97,116,101,0,0,0,0,0,0,0,66,97,100,32,73,67,67,66,97,115,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,45,32,105,110,118,97,108,105,100,32,78,0,0,0,0,0,0,0,0,32,160,2,0,175,0,0,0,176,0,0,0,138,0,0,0,139,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,19,0,0,0,26,0,0,0,140,0,0,0,118,0,0,0,141,0,0,0,64,0,0,0,27,0,0,0,114,0,0,0,0,0,0,0,66,97,100,32,73,110,100,101,120,101,100,32,99,111,108,111,114,32,115,112,97,99,101,0,66,97,100,32,73,110,100,101,120,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,98,97,115,101,32,99,111,108,111,114,32,115,112,97,99,101,41,0,0,0,0,0,0,66,97,100,32,73,110,100,101,120,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,104,105,118,97,108,41,0,66,97,100,32,73,110,100,101,120,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,105,110,118,97,108,105,100,32,105,110,100,101,120,72,105,103,104,32,118,97,108,117,101,44,32,119,97,115,32,37,100,32,117,115,105,110,103,32,37,100,32,116,111,32,116,114,121,32,116,111,32,114,101,99,111,118,101,114,41,0,0,0,0,66,97,100,32,73,110,100,101,120,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,108,111,111,107,117,112,32,116,97,98,108,101,32,115,116,114,101,97,109,32,116,111,111,32,115,104,111,114,116,41,32,112,97,100,100,105,110,103,32,119,105,116,104,32,122,101,114,111,101,115,0,0,0,0,0,66,97,100,32,73,110,100,101,120,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,108,111,111,107,117,112,32,116,97,98,108,101,32,115,116,114,105,110,103,32,116,111,111,32,115,104,111,114,116,41,0,66,97,100,32,73,110,100,101,120,101,100,32,99,111,108,111,114,32,115,112,97,99,101,32,40,108,111,111,107,117,112,32,116,97,98,108,101,41,0,0,0,0,0,0,80,160,2,0,177,0,0,0,178,0,0,0,142,0,0,0,143,0,0,0,125,0,0,0,126,0,0,0,127,0,0,0,19,0,0,0,20,0,0,0,117,0,0,0,118,0,0,0,144,0,0,0,65,0,0,0,18,0,0,0,145,0,0,0,0,0,0,0,78,111,110,101,0,0,0,0,66,97,100,32,83,101,112,97,114,97,116,105,111,110,32,99,111,108,111,114,32,115,112,97,99,101,0,0,0,0,0,0,66,97,100,32,83,101,112,97,114,97,116,105,111,110,32,99,111,108,111,114,32,115,112,97,99,101,32,40,110,97,109,101,41,0,0,0,0,0,0,0,66,97,100,32,83,101,112,97,114,97,116,105,111,110,32,99,111,108,111,114,32,115,112,97,99,101,32,40,97,108,116,101,114,110,97,116,101,32,99,111,108,111,114,32,115,112,97,99,101,41,0,0,0,0,0,0,0,0,0,0,120,160,2,0,179,0,0,0,180,0,0,0,146,0,0,0,147,0,0,0,128,0,0,0,129,0,0,0,130,0,0,0,19,0,0,0,20,0,0,0,117,0,0,0,118,0,0,0,148,0,0,0,66,0,0,0,18,0,0,0,149,0,0,0,0,0,0,0,66,97,100,32,68,101,118,105,99,101,78,32,99,111,108,111,114,32,115,112,97,99,101,0,66,97,100,32,68,101,118,105,99,101,78,32,99,111,108,111,114,32,115,112,97,99,101,32,40,110,97,109,101,115,41,0,68,101,118,105,99,101,78,32,99,111,108,111,114,32,115,112,97,99,101,32,119,105,116,104,32,116,111,111,32,109,97,110,121,32,40,37,100,32,62,32,37,100,41,32,99,111,109,112,111,110,101,110,116,115,0,0,66,97,100,32,68,101,118,105,99,101,78,32,99,111,108,111,114,32,115,112,97,99,101,32,40,97,108,116,101,114,110,97,116,101,32,99,111,108,111,114,32,115,112,97,99,101,41,0,0,0,0,0,88,159,2,0,181,0,0,0,182,0,0,0,150,0,0,0,151,0,0,0,131,0,0,0,132,0,0,0,133,0,0,0,19,0,0,0,20,0,0,0,117,0,0,0,118,0,0,0,152,0,0,0,67,0,0,0,18,0,0,0,114,0,0,0,0,0,0,0,66,97,100,32,80,97,116,116,101,114,110,32,99,111,108,111,114,32,115,112,97,99,101,0,66,97,100,32,80,97,116,116,101,114,110,32,99,111,108,111,114,32,115,112,97,99,101,32,40,117,110,100,101,114,108,121,105,110,103,32,99,111,108,111,114,32,115,112,97,99,101,41,0,0,0,0,0,0,0,0,80,97,116,116,101,114,110,84,121,112,101,0,0,0,0,0,80,97,105,110,116,84,121,112,101,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,111,114,32,109,105,115,115,105,110,103,32,80,97,105,110,116,84,121,112,101,32,105,110,32,112,97,116,116,101,114,110,0,84,105,108,105,110,103,84,121,112,101,0,0,0,0,0,0,73,110,118,97,108,105,100,32,111,114,32,109,105,115,115,105,110,103,32,84,105,108,105,110,103,84,121,112,101,32,105,110,32,112,97,116,116,101,114,110,0,0,0,0,0,0,0,0,66,66,111,120,0,0,0,0,73,110,118,97,108,105,100,32,111,114,32,109,105,115,115,105,110,103,32,66,66,111,120,32,105,110,32,112,97,116,116,101,114,110,0,0,0,0,0,0,88,83,116,101,112,0,0,0,73,110,118,97,108,105,100,32,111,114,32,109,105,115,115,105,110,103,32,88,83,116,101,112,32,105,110,32,112,97,116,116,101,114,110,0,0,0,0,0,89,83,116,101,112,0,0,0,73,110,118,97,108,105,100,32,111,114,32,109,105,115,115,105,110,103,32,89,83,116,101,112,32,105,110,32,112,97,116,116,101,114,110,0,0,0,0,0,82,101,115,111,117,114,99,101,115,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,111,114,32,109,105,115,115,105,110,103,32,82,101,115,111,117,114,99,101,115,32,105,110,32,112,97,116,116,101,114,110,0,0,0,0,0,184,160,2,0,183,0,0,0,184,0,0,0,153,0,0,0,0,0,0,0,83,104,97,100,105,110,103,0,0,0,0,0,224,160,2,0,185,0,0,0,186,0,0,0,154,0,0,0,0,0,0,0,0,0,0,0,0,161,2,0,187,0,0,0,188,0,0,0,1,0,0,0,0,0,0,0,83,104,97,100,105,110,103,84,121,112,101,0,0,0,0,0,73,110,118,97,108,105,100,32,83,104,97,100,105,110,103,84,121,112,101,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,84,121,112,101,32,52,32,115,104,97,100,105,110,103,32,111,98,106,101,99,116,0,0,0,73,110,118,97,108,105,100,32,84,121,112,101,32,53,32,115,104,97,100,105,110,103,32,111,98,106,101,99,116,0,0,0,73,110,118,97,108,105,100,32,84,121,112,101,32,54,32,115,104,97,100,105,110,103,32,111,98,106,101,99,116,0,0,0,73,110,118,97,108,105,100,32,84,121,112,101,32,55,32,115,104,97,100,105,110,103,32,111,98,106,101,99,116,0,0,0,85,110,105,109,112,108,101,109,101,110,116,101,100,32,115,104,97,100,105,110,103,32,116,121,112,101,32,37,100,0,0,0,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,66,97,100,32,99,111,108,111,114,32,115,112,97,99,101,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,0,0,66,97,99,107,103,114,111,117,110,100,0,0,0,0,0,0,66,97,100,32,66,97,99,107,103,114,111,117,110,100,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,66,97,100,32,66,66,111,120,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,32,40,86,97,108,117,101,115,32,110,111,116,32,110,117,109,98,101,114,115,41,0,0,0,0,0,66,97,100,32,66,66,111,120,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,32,161,2,0,189,0,0,0,190,0,0,0,155,0,0,0,0,0,0,0,68,111,109,97,105,110,0,0,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,70,117,110,99,116,105,111,110,32,97,114,114,97,121,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,0,72,161,2,0,191,0,0,0,192,0,0,0,156,0,0,0,0,0,0,0,67,111,111,114,100,115,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,67,111,111,114,100,115,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,69,120,116,101,110,100,0,0,0,0,0,0,112,161,2,0,193,0,0,0,194,0,0,0,157,0,0,0,0,0,0,0,0,0,0,0,160,161,2,0,195,0,0,0,196,0,0,0,158,0,0,0,0,0,0,0,66,105,116,115,80,101,114,67,111,111,114,100,105,110,97,116,101,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,66,105,116,115,80,101,114,67,111,111,114,100,105,110,97,116,101,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,66,105,116,115,80,101,114,67,111,109,112,111,110,101,110,116,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,66,105,116,115,80,101,114,67,111,109,112,111,110,101,110,116,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,66,105,116,115,80,101,114,70,108,97,103,0,0,0,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,66,105,116,115,80,101,114,70,108,97,103,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,86,101,114,116,105,99,101,115,80,101,114,82,111,119,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,86,101,114,116,105,99,101,115,80,101,114,82,111,119,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,68,101,99,111,100,101,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,68,101,99,111,100,101,32,97,114,114,97,121,32,105,110,32,115,104,97,100,105,110,103,32,100,105,99,116,105,111,110,97,114,121,0,0,0,33,105,115,80,97,114,97,109,101,116,101,114,105,122,101,100,40,41,0,0,0,0,0,0,71,102,120,83,116,97,116,101,46,99,99,0,0,0,0,0,103,101,116,84,114,105,97,110,103,108,101,0,0,0,0,0,105,115,80,97,114,97,109,101,116,101,114,105,122,101,100,40,41,0,0,0,0,0,0,0,0,0,0,0,200,161,2,0,197,0,0,0,198,0,0,0,159,0,0,0,0,0,0,0,216,161,2,0,0,0,0,0,224,161,2,0,0,0,0,0,240,161,2,0,1,0,0,0,0,162,2,0,2,0,0,0,8,162,2,0,3,0,0,0,16,162,2,0,4,0,0,0,24,162,2,0,5,0,0,0,32,162,2,0,6,0,0,0,48,162,2,0,7,0,0,0,64,162,2,0,8,0,0,0,80,162,2,0,9,0,0,0,96,162,2,0,10,0,0,0,112,162,2,0,11,0,0,0,128,162,2,0,12,0,0,0,136,162,2,0,13,0,0,0,152,162,2,0,14,0,0,0,160,162,2,0,15,0,0,0,49,51,71,102,120,67,111,108,111,114,83,112,97,99,101,0,88,113,4,0,152,158,2,0,50,51,71,102,120,68,101,118,105,99,101,71,114,97,121,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,0,128,113,4,0,176,158,2,0,168,158,2,0,0,0,0,0,50,50,71,102,120,68,101,118,105,99,101,82,71,66,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,0,0,128,113,4,0,224,158,2,0,168,158,2,0,0,0,0,0,50,51,71,102,120,68,101,118,105,99,101,67,77,89,75,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,0,128,113,4,0,16,159,2,0,168,158,2,0,0,0,0,0,50,48,71,102,120,80,97,116,116,101,114,110,67,111,108,111,114,83,112,97,99,101,0,0,128,113,4,0,64,159,2,0,168,158,2,0,0,0,0,0,50,48,71,102,120,67,97,108,71,114,97,121,67,111,108,111,114,83,112,97,99,101,0,0,128,113,4,0,104,159,2,0,168,158,2,0,0,0,0,0,49,57,71,102,120,67,97,108,82,71,66,67,111,108,111,114,83,112,97,99,101,0,0,0,128,113,4,0,144,159,2,0,168,158,2,0,0,0,0,0,49,54,71,102,120,76,97,98,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,128,113,4,0,184,159,2,0,168,158,2,0,0,0,0,0,50,49,71,102,120,73,67,67,66,97,115,101,100,67,111,108,111,114,83,112,97,99,101,0,128,113,4,0,224,159,2,0,168,158,2,0,0,0,0,0,50,48,71,102,120,73,110,100,101,120,101,100,67,111,108,111,114,83,112,97,99,101,0,0,128,113,4,0,8,160,2,0,168,158,2,0,0,0,0,0,50,51,71,102,120,83,101,112,97,114,97,116,105,111,110,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,0,128,113,4,0,48,160,2,0,168,158,2,0,0,0,0,0,50,48,71,102,120,68,101,118,105,99,101,78,67,111,108,111,114,83,112,97,99,101,0,0,128,113,4,0,96,160,2,0,168,158,2,0,0,0,0,0,49,48,71,102,120,80,97,116,116,101,114,110,0,0,0,0,88,113,4,0,136,160,2,0,49,54,71,102,120,84,105,108,105,110,103,80,97,116,116,101,114,110,0,0,0,0,0,0,128,113,4,0,160,160,2,0,152,160,2,0,0,0,0,0,49,55,71,102,120,83,104,97,100,105,110,103,80,97,116,116,101,114,110,0,0,0,0,0,128,113,4,0,200,160,2,0,152,160,2,0,0,0,0,0,49,48,71,102,120,83,104,97,100,105,110,103,0,0,0,0,88,113,4,0,240,160,2,0,49,56,71,102,120,70,117,110,99,116,105,111,110,83,104,97,100,105,110,103,0,0,0,0,128,113,4,0,8,161,2,0,0,161,2,0,0,0,0,0,49,53,71,102,120,65,120,105,97,108,83,104,97,100,105,110,103,0,0,0,0,0,0,0,128,113,4,0,48,161,2,0,0,161,2,0,0,0,0,0,49,54,71,102,120,82,97,100,105,97,108,83,104,97,100,105,110,103,0,0,0,0,0,0,128,113,4,0,88,161,2,0,0,161,2,0,0,0,0,0,50,53,71,102,120,71,111,117,114,97,117,100,84,114,105,97,110,103,108,101,83,104,97,100,105,110,103,0,0,0,0,0,128,113,4,0,128,161,2,0,0,161,2,0,0,0,0,0,49,57,71,102,120,80,97,116,99,104,77,101,115,104,83,104,97,100,105,110,103,0,0,0,128,113,4,0,176,161,2,0,0,161,2,0,0,0,0,0,78,111,114,109,97,108,0,0,67,111,109,112,97,116,105,98,108,101,0,0,0,0,0,0,77,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,83,99,114,101,101,110,0,0,79,118,101,114,108,97,121,0,68,97,114,107,101,110,0,0,76,105,103,104,116,101,110,0,67,111,108,111,114,68,111,100,103,101,0,0,0,0,0,0,67,111,108,111,114,66,117,114,110,0,0,0,0,0,0,0,72,97,114,100,76,105,103,104,116,0,0,0,0,0,0,0,83,111,102,116,76,105,103,104,116,0,0,0,0,0,0,0,68,105,102,102,101,114,101,110,99,101,0,0,0,0,0,0,69,120,99,108,117,115,105,111,110,0,0,0,0,0,0,0,72,117,101,0,0,0,0,0,83,97,116,117,114,97,116,105,111,110,0,0,0,0,0,0,67,111,108,111,114,0,0,0,76,117,109,105,110,111,115,105,116,121,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,32,111,114,32,37,100,0,0,0,0,0,73,110,118,97,108,105,100,32,114,101,102,101,114,101,110,99,101,32,102,111,114,32,102,105,114,115,116,32,112,97,103,101,32,111,98,106,101,99,116,32,40,37,100,41,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,112,97,103,101,115,32,40,37,100,41,32,102,111,114,32,104,105,110,116,115,32,116,97,98,108,101,0,0,0,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,104,105,110,116,115,32,116,97,98,101,108,0,0,0,0,0,0,0,111,98,106,0,0,0,0,0,83,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,115,104,97,114,101,100,32,111,98,106,101,99,116,32,104,105,110,116,32,116,97,98,108,101,32,111,102,102,115,101,116,0,70,97,105,108,101,100,32,112,97,114,115,105,110,103,32,104,105,110,116,115,32,116,97,98,108,101,32,111,98,106,101,99,116,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,112,97,103,101,115,32,114,101,97,100,105,110,103,32,112,97,103,101,32,111,102,102,115,101,116,32,104,105,110,116,115,32,116,97,98,108,101,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,115,104,97,114,101,100,32,111,98,106,101,99,116,115,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,115,104,97,114,101,100,32,111,98,106,101,99,116,32,73,68,115,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,115,104,97,114,101,100,32,111,98,106,101,99,116,32,103,114,111,117,112,115,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,102,105,114,115,116,32,112,97,103,101,32,115,104,97,114,101,100,32,111,98,106,101,99,116,32,103,114,111,117,112,115,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,115,104,97,114,101,100,32,111,98,106,101,99,116,32,103,114,111,117,112,115,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,255,255,255,255,255,255,255,255,7,0,8,0,7,0,7,0,6,0,6,0,6,0,6,0,6,0,5,0,6,0,5,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,66,97,100,32,116,119,111,32,100,105,109,32,99,111,100,101,32,105,110,32,74,66,73,71,50,32,77,77,82,32,115,116,114,101,97,109,0,0,0,0,255,255,255,255,12,0,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,11,0,0,7,11,0,0,7,12,0,192,7,12,0,0,8,12,0,64,8,12,0,128,8,12,0,192,8,12,0,0,9,11,0,64,7,11,0,64,7,11,0,128,7,11,0,128,7,12,0,64,9,12,0,128,9,12,0,192,9,12,0,0,10], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+163936); -/* memory initializer */ allocate([255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,8,0,29,0,8,0,29,0,8,0,30,0,8,0,30,0,8,0,45,0,8,0,45,0,8,0,46,0,8,0,46,0,7,0,22,0,7,0,22,0,7,0,22,0,7,0,22,0,7,0,23,0,7,0,23,0,7,0,23,0,7,0,23,0,8,0,47,0,8,0,47,0,8,0,48,0,8,0,48,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,6,0,13,0,7,0,20,0,7,0,20,0,7,0,20,0,7,0,20,0,8,0,33,0,8,0,33,0,8,0,34,0,8,0,34,0,8,0,35,0,8,0,35,0,8,0,36,0,8,0,36,0,8,0,37,0,8,0,37,0,8,0,38,0,8,0,38,0,7,0,19,0,7,0,19,0,7,0,19,0,7,0,19,0,8,0,31,0,8,0,31,0,8,0,32,0,8,0,32,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,1,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,6,0,12,0,8,0,53,0,8,0,53,0,8,0,54,0,8,0,54,0,7,0,26,0,7,0,26,0,7,0,26,0,7,0,26,0,8,0,39,0,8,0,39,0,8,0,40,0,8,0,40,0,8,0,41,0,8,0,41,0,8,0,42,0,8,0,42,0,8,0,43,0,8,0,43,0,8,0,44,0,8,0,44,0,7,0,21,0,7,0,21,0,7,0,21,0,7,0,21,0,7,0,28,0,7,0,28,0,7,0,28,0,7,0,28,0,8,0,61,0,8,0,61,0,8,0,62,0,8,0,62,0,8,0,63,0,8,0,63,0,8,0,0,0,8,0,0,0,8,0,64,1,8,0,64,1,8,0,128,1,8,0,128,1,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,10,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,5,0,11,0,7,0,27,0,7,0,27,0,7,0,27,0,7,0,27,0,8,0,59,0,8,0,59,0,8,0,60,0,8,0,60,0,9,0,192,5,9,0,0,6,9,0,64,6,9,0,192,6,7,0,18,0,7,0,18,0,7,0,18,0,7,0,18,0,7,0,24,0,7,0,24,0,7,0,24,0,7,0,24,0,8,0,49,0,8,0,49,0,8,0,50,0,8,0,50,0,8,0,51,0,8,0,51,0,8,0,52,0,8,0,52,0,7,0,25,0,7,0,25,0,7,0,25,0,7,0,25,0,8,0,55,0,8,0,55,0,8,0,56,0,8,0,56,0,8,0,57,0,8,0,57,0,8,0,58,0,8,0,58,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,192,0,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,6,0,128,6,8,0,192,1,8,0,192,1,8,0,0,2,8,0,0,2,9,0,192,2,9,0,0,3,8,0,128,2,8,0,128,2,8,0,64,2,8,0,64,2,9,0,64,3,9,0,128,3,9,0,192,3,9,0,0,4,9,0,64,4,9,0,128,4,9,0,192,4,9,0,0,5,9,0,64,5,9,0,128,5,7,0,0,1,7,0,0,1,7,0,0,1,7,0,0,1,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,2,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,128,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,8,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,5,0,9,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,16,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,6,0,17,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,6,0,14,0,6,0,14,0,6,0,14,0,6,0,14,0,6,0,14,0,6,0,14,0,6,0,14,0,6,0,14,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,6,0,15,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,5,0,64,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,4,0,7,0,66,97,100,32,119,104,105,116,101,32,99,111,100,101,32,105,110,32,74,66,73,71,50,32,77,77,82,32,115,116,114,101,97,109,0,0,0,0,0,0,255,255,255,255,255,255,255,255,12,0,254,255,12,0,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,11,0,0,7,11,0,0,7,11,0,0,7,11,0,0,7,12,0,192,7,12,0,192,7,12,0,0,8,12,0,0,8,12,0,64,8,12,0,64,8,12,0,128,8,12,0,128,8,12,0,192,8,12,0,192,8,12,0,0,9,12,0,0,9,11,0,64,7,11,0,64,7,11,0,64,7,11,0,64,7,11,0,128,7,11,0,128,7,11,0,128,7,11,0,128,7,12,0,64,9,12,0,64,9,12,0,128,9,12,0,128,9,12,0,192,9,12,0,192,9,12,0,0,10,12,0,0,10,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,10,0,18,0,12,0,52,0,12,0,52,0,13,0,128,2,13,0,192,2,13,0,0,3,13,0,64,3,12,0,55,0,12,0,55,0,12,0,56,0,12,0,56,0,13,0,0,5,13,0,64,5,13,0,128,5,13,0,192,5,12,0,59,0,12,0,59,0,12,0,60,0,12,0,60,0,13,0,0,6,13,0,64,6,11,0,24,0,11,0,24,0,11,0,24,0,11,0,24,0,11,0,25,0,11,0,25,0,11,0,25,0,11,0,25,0,13,0,128,6,13,0,192,6,12,0,64,1,12,0,64,1,12,0,128,1,12,0,128,1,12,0,192,1,12,0,192,1,13,0,0,2,13,0,64,2,12,0,53,0,12,0,53,0,12,0,54,0,12,0,54,0,13,0,128,3,13,0,192,3,13,0,0,4,13,0,64,4,13,0,128,4,13,0,192,4,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,10,0,64,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,8,0,13,0,11,0,23,0,11,0,23,0,12,0,50,0,12,0,51,0,12,0,44,0,12,0,45,0,12,0,46,0,12,0,47,0,12,0,57,0,12,0,58,0,12,0,61,0,12,0,0,1,10,0,16,0,10,0,16,0,10,0,16,0,10,0,16,0,10,0,17,0,10,0,17,0,10,0,17,0,10,0,17,0,12,0,48,0,12,0,49,0,12,0,62,0,12,0,63,0,12,0,30,0,12,0,31,0,12,0,32,0,12,0,33,0,12,0,40,0,12,0,41,0,11,0,22,0,11,0,22,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,8,0,14,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,10,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,7,0,11,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,9,0,15,0,12,0,128,0,12,0,192,0,12,0,26,0,12,0,27,0,12,0,28,0,12,0,29,0,11,0,19,0,11,0,19,0,11,0,20,0,11,0,20,0,12,0,34,0,12,0,35,0,12,0,36,0,12,0,37,0,12,0,38,0,12,0,39,0,11,0,21,0,11,0,21,0,12,0,42,0,12,0,43,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,7,0,12,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,6,0,9,0,6,0,8,0,5,0,7,0,5,0,7,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,6,0,4,0,5,0,4,0,5,0,4,0,5,0,4,0,5,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,3,0,4,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,3,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,66,97,100,32,98,108,97,99,107,32,99,111,100,101,32,105,110,32,74,66,73,71,50,32,77,77,82,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,0,0,240,200,2,0,199,0,0,0,200,0,0,0,160,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,119,105,100,116,104,47,104,101,105,103,104,116,0,0,0,0,0,0,0,0,24,201,2,0,201,0,0,0,202,0,0,0,161,0,0,0,0,0,0,0,0,0,0,0,64,201,2,0,203,0,0,0,204,0,0,0,162,0,0,0,0,0,0,0,0,0,0,0,104,201,2,0,205,0,0,0,206,0,0,0,163,0,0,0,0,0,0,0,0,0,0,0,136,201,2,0,207,0,0,0,208,0,0,0,164,0,0,0,209,0,0,0,210,0,0,0,165,0,0,0,166,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,24,0,0,0,7,0,0,0,167,0,0,0,14,0,0,0,20,0,0,0,19,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,13,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,70,105,114,115,116,32,74,66,73,71,50,32,115,101,103,109,101,110,116,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32,97,32,112,97,103,101,32,109,117,115,116,32,98,101,32,97,32,112,97,103,101,32,105,110,102,111,114,109,97,116,105,111,110,32,115,101,103,109,101,110,116,0,0,0,85,110,107,110,111,119,110,32,115,101,103,109,101,110,116,32,116,121,112,101,32,105,110,32,74,66,73,71,50,32,115,116,114,101,97,109,0,0,0,0,37,100,32,101,120,116,114,97,110,101,111,117,115,32,98,121,116,101,37,115,32,97,102,116,101,114,32,115,101,103,109,101,110,116,0,0,0,0,0,0,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,114,101,118,105,111,117,115,32,115,101,103,109,101,110,116,32,104,97,110,100,108,101,114,32,114,101,97,100,32,116,111,111,32,109,97,110,121,32,98,121,116,101,115,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,69,79,70,32,105,110,32,74,66,73,71,50,32,115,116,114,101,97,109,0,0,84,111,111,32,109,97,110,121,32,105,110,112,117,116,32,115,121,109,98,111,108,115,32,105,110,32,74,66,73,71,50,32,115,121,109,98,111,108,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,6,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,14,0,0,0,12,0,0,0,5,0,0,0,6,0,0,0,30,0,0,0,76,0,0,0,5,0,0,0,32,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,6,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,14,0,0,0,12,0,0,0,5,0,0,0,6,0,0,0,30,0,0,0,76,0,0,0,6,0,0,0,32,0,0,0,62,0,0,0,1,255,255,255,7,0,0,0,8,0,0,0,126,0,0,0,0,255,255,255,7,0,0,0,253,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,14,0,0,0,11,0,0,0,5,0,0,0,6,0,0,0,30,0,0,0,75,0,0,0,6,0,0,0,32,0,0,0,62,0,0,0,0,0,0,0,6,0,0,0,254,255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,14,0,0,0,11,0,0,0,5,0,0,0,6,0,0,0,30,0,0,0,0,0,0,0,6,0,0,0,254,255,255,255,62,0,0,0,75,0,0,0,7,0,0,0,32,0,0,0,254,0,0,0,0,255,255,255,8,0,0,0,8,0,0,0,254,0,0,0,255,254,255,255,8,0,0,0,253,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,16,0,0,0,2,0,0,0,8,0,0,0,2,0,0,0,16,1,0,0,3,0,0,0,16,0,0,0,6,0,0,0,16,1,1,0,3,0,0,0,32,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,66,97,100,32,100,101,108,116,97,45,104,101,105,103,104,116,32,118,97,108,117,101,32,105,110,32,74,66,73,71,50,32,115,121,109,98,111,108,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,84,111,111,32,109,97,110,121,32,115,121,109,98,111,108,115,32,105,110,32,74,66,73,71,50,32,115,121,109,98,111,108,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,5,0,0,0,254,255,255,255,4,0,0,0,0,0,0,0,12,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,13,0,0,0,252,255,255,255,5,0,0,0,1,0,0,0,28,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,29,0,0,0,248,255,255,255,6,0,0,0,2,0,0,0,60,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,61,0,0,0,232,255,255,255,7,0,0,0,4,0,0,0,124,0,0,0,9,0,0,0,7,0,0,0,4,0,0,0,125,0,0,0,231,255,255,255,7,0,0,0,253,255,255,255,126,0,0,0,25,0,0,0,7,0,0,0,32,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,73,110,118,97,108,105,100,32,115,121,109,98,111,108,32,73,68,32,105,110,32,74,66,73,71,50,32,115,121,109,98,111,108,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,0,2,0,0,0,7,0,0,0,0,0,0,0,128,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,0,1,0,0,3,0,0,0,8,0,0,0,3,0,0,0,0,252,255,255,4,0,0,0,9,0,0,0,8,0,0,0,0,254,255,255,4,0,0,0,8,0,0,0,9,0,0,0,0,255,255,255,4,0,0,0,7,0,0,0,10,0,0,0,224,255,255,255,4,0,0,0,5,0,0,0,11,0,0,0,0,2,0,0,4,0,0,0,9,0,0,0,12,0,0,0,0,4,0,0,4,0,0,0,10,0,0,0,13,0,0,0,0,248,255,255,5,0,0,0,10,0,0,0,28,0,0,0,128,255,255,255,5,0,0,0,6,0,0,0,29,0,0,0,192,255,255,255,5,0,0,0,5,0,0,0,30,0,0,0,255,247,255,255,6,0,0,0,253,255,255,255,62,0,0,0,0,8,0,0,6,0,0,0,32,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,254,255,255,255,1,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,255,255,255,255,4,0,0,0,0,0,0,0,10,0,0,0,22,0,0,0,4,0,0,0,4,0,0,0,11,0,0,0,38,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,26,0,0,0,70,0,0,0,5,0,0,0,6,0,0,0,27,0,0,0,134,0,0,0,5,0,0,0,7,0,0,0,28,0,0,0,3,0,0,0,6,0,0,0,0,0,0,0,58,0,0,0,20,0,0,0,6,0,0,0,1,0,0,0,59,0,0,0,6,1,0,0,6,0,0,0,7,0,0,0,60,0,0,0,134,2,0,0,6,0,0,0,10,0,0,0,61,0,0,0,254,255,255,255,7,0,0,0,0,0,0,0,124,0,0,0,134,1,0,0,7,0,0,0,8,0,0,0,125,0,0,0,241,255,255,255,8,0,0,0,3,0,0,0,252,0,0,0,251,255,255,255,8,0,0,0,1,0,0,0,253,0,0,0,249,255,255,255,9,0,0,0,1,0,0,0,252,1,0,0,253,255,255,255,9,0,0,0,0,0,0,0,253,1,0,0,240,255,255,255,9,0,0,0,253,255,255,255,254,1,0,0,134,6,0,0,9,0,0,0,32,0,0,0,255,1,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,12,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,13,0,0,0,7,0,0,0,5,0,0,0,1,0,0,0,28,0,0,0,9,0,0,0,5,0,0,0,2,0,0,0,29,0,0,0,13,0,0,0,6,0,0,0,2,0,0,0,60,0,0,0,17,0,0,0,7,0,0,0,2,0,0,0,122,0,0,0,21,0,0,0,7,0,0,0,3,0,0,0,123,0,0,0,29,0,0,0,7,0,0,0,4,0,0,0,124,0,0,0,45,0,0,0,7,0,0,0,5,0,0,0,125,0,0,0,77,0,0,0,7,0,0,0,6,0,0,0,126,0,0,0,141,0,0,0,7,0,0,0,32,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,84,111,111,32,109,97,110,121,32,101,120,112,111,114,116,101,100,32,115,121,109,98,111,108,115,32,105,110,32,74,66,73,71,50,32,115,121,109,98,111,108,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,84,111,111,32,102,101,119,32,115,121,109,98,111,108,115,32,105,110,32,74,66,73,71,50,32,115,121,109,98,111,108,32,100,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,77,105,115,115,105,110,103,32,99,111,100,101,32,116,97,98,108,101,32,105,110,32,74,66,73,71,50,32,115,121,109,98,111,108,32,100,105,99,116,105,111,110,97,114,121,0,0,0,73,110,118,97,108,105,100,32,115,101,103,109,101,110,116,32,114,101,102,101,114,101,110,99,101,32,105,110,32,74,66,73,71,50,32,116,101,120,116,32,114,101,103,105,111,110,0,0,0,254,255,255,3,0,0,0,8,0,0,0,0,0,0,0,0,1,0,0,3,0,0,0,8,0,0,0,1,0,0,0,0,2,0,0,3,0,0,0,9,0,0,0,2,0,0,0,0,4,0,0,3,0,0,0,10,0,0,0,3,0,0,0,0,252,255,255,4,0,0,0,9,0,0,0,8,0,0,0,0,255,255,255,4,0,0,0,7,0,0,0,9,0,0,0,224,255,255,255,4,0,0,0,5,0,0,0,10,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,11,0,0,0,128,0,0,0,4,0,0,0,7,0,0,0,12,0,0,0,128,255,255,255,5,0,0,0,6,0,0,0,26,0,0,0,192,255,255,255,5,0,0,0,5,0,0,0,27,0,0,0,32,0,0,0,5,0,0,0,5,0,0,0,28,0,0,0,64,0,0,0,5,0,0,0,6,0,0,0,29,0,0,0,255,251,255,255,5,0,0,0,253,255,255,255,30,0,0,0,0,8,0,0,5,0,0,0,32,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,2,0,0,0,254,255,255,255,0,0,0,0,255,255,255,255,3,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,253,255,255,255,4,0,0,0,1,0,0,0,10,0,0,0,43,0,0,0,4,0,0,0,5,0,0,0,11,0,0,0,75,0,0,0,4,0,0,0,6,0,0,0,12,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,26,0,0,0,139,0,0,0,5,0,0,0,7,0,0,0,27,0,0,0,11,1,0,0,5,0,0,0,8,0,0,0,28,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,58,0,0,0,39,0,0,0,6,0,0,0,2,0,0,0,59,0,0,0,11,2,0,0,6,0,0,0,8,0,0,0,60,0,0,0,11,5,0,0,6,0,0,0,11,0,0,0,61,0,0,0,251,255,255,255,7,0,0,0,1,0,0,0,124,0,0,0,11,3,0,0,7,0,0,0,9,0,0,0,125,0,0,0,225,255,255,255,8,0,0,0,4,0,0,0,252,0,0,0,245,255,255,255,8,0,0,0,2,0,0,0,253,0,0,0,241,255,255,255,9,0,0,0,2,0,0,0,252,1,0,0,249,255,255,255,9,0,0,0,1,0,0,0,253,1,0,0,224,255,255,255,9,0,0,0,253,255,255,255,254,1,0,0,11,13,0,0,9,0,0,0,32,0,0,0,255,1,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,254,255,255,255,2,0,0,0,2,0,0,0,0,0,0,0,6,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,254,255,255,255,2,0,0,0,253,255,255,255,5,0,0,0,0,0,0,0,24,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,25,0,0,0,70,0,0,0,5,0,0,0,5,0,0,0,26,0,0,0,3,0,0,0,6,0,0,0,0,0,0,0,54,0,0,0,102,0,0,0,6,0,0,0,5,0,0,0,55,0,0,0,134,0,0,0,6,0,0,0,6,0,0,0,56,0,0,0,198,0,0,0,6,0,0,0,7,0,0,0,57,0,0,0,70,1,0,0,6,0,0,0,8,0,0,0,58,0,0,0,70,2,0,0,6,0,0,0,9,0,0,0,59,0,0,0,70,4,0,0,6,0,0,0,10,0,0,0,60,0,0,0,235,255,255,255,7,0,0,0,4,0,0,0,122,0,0,0,252,255,255,255,7,0,0,0,0,0,0,0,123,0,0,0,4,0,0,0,7,0,0,0,0,0,0,0,124,0,0,0,70,8,0,0,7,0,0,0,11,0,0,0,125,0,0,0,251,255,255,255,8,0,0,0,0,0,0,0,252,0,0,0,5,0,0,0,8,0,0,0,0,0,0,0,253,0,0,0,234,255,255,255,8,0,0,0,253,255,255,255,254,0,0,0,70,16,0,0,8,0,0,0,32,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,1,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,28,0,0,0,6,0,0,0,5,0,0,0,1,0,0,0,29,0,0,0,8,0,0,0,6,0,0,0,1,0,0,0,60,0,0,0,10,0,0,0,7,0,0,0,0,0,0,0,122,0,0,0,11,0,0,0,7,0,0,0,1,0,0,0,123,0,0,0,13,0,0,0,7,0,0,0,2,0,0,0,124,0,0,0,17,0,0,0,7,0,0,0,3,0,0,0,125,0,0,0,25,0,0,0,7,0,0,0,4,0,0,0,126,0,0,0,41,0,0,0,8,0,0,0,5,0,0,0,254,0,0,0,73,0,0,0,8,0,0,0,32,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,7,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,12,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,13,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,28,0,0,0,15,0,0,0,6,0,0,0,1,0,0,0,58,0,0,0,17,0,0,0,6,0,0,0,2,0,0,0,59,0,0,0,21,0,0,0,6,0,0,0,3,0,0,0,60,0,0,0,29,0,0,0,6,0,0,0,4,0,0,0,61,0,0,0,45,0,0,0,6,0,0,0,5,0,0,0,62,0,0,0,77,0,0,0,7,0,0,0,6,0,0,0,126,0,0,0,141,0,0,0,7,0,0,0,32,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,255,255,255,255,3,0,0,0,0,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,77,105,115,115,105,110,103,32,99,111,100,101,32,116,97,98,108,101,32,105,110,32,74,66,73,71,50,32,116,101,120,116,32,114,101,103,105,111,110,0,73,110,118,97,108,105,100,32,115,121,109,98,111,108,32,110,117,109,98,101,114,32,105,110,32,74,66,73,71,50,32,116,101,120,116,32,114,101,103,105,111,110,0,0,0,0,0,0,66,97,100,32,98,105,116,109,97,112,32,115,105,122,101,32,105,110,32,74,66,73,71,50,32,104,97,108,102,116,111,110,101,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,66,97,100,32,103,114,105,100,32,115,105,122,101,32,105,110,32,74,66,73,71,50,32,104,97,108,102,116,111,110,101,32,115,101,103,109,101,110,116,0,66,97,100,32,115,121,109,98,111,108,32,100,105,99,116,105,111,110,97,114,121,32,114,101,102,101,114,101,110,99,101,32,105,110,32,74,66,73,71,50,32,104,97,108,102,116,111,110,101,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,66,97,100,32,119,105,100,116,104,32,105,110,32,74,66,73,71,50,32,103,101,110,101,114,105,99,32,98,105,116,109,97,112,0,0,0,0,0,0,0,73,108,108,101,103,97,108,32,99,111,100,101,32,105,110,32,74,66,73,71,50,32,77,77,82,32,98,105,116,109,97,112,32,100,97,116,97,0,0,0,77,105,115,115,105,110,103,32,69,79,70,66,32,105,110,32,74,66,73,71,50,32,77,77,82,32,98,105,116,109,97,112,32,100,97,116,97,0,0,0,66,97,100,32,114,101,102,101,114,101,110,99,101,32,105,110,32,74,66,73,71,50,32,103,101,110,101,114,105,99,32,114,101,102,105,110,101,109,101,110,116,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,66,97,100,32,98,105,116,109,97,112,32,114,101,102,101,114,101,110,99,101,32,105,110,32,74,66,73,71,50,32,103,101,110,101,114,105,99,32,114,101,102,105,110,101,109,101,110,116,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,0,114,101,97,100,71,101,110,101,114,105,99,82,101,102,105,110,101,109,101,110,116,82,101,103,105,111,110,83,101,103,32,119,105,116,104,32,110,117,108,108,32,98,105,116,109,97,112,0,16,0,0,0,13,0,0,0,10,0,0,0,10,0,0,0,13,0,0,0,10,0,0,0,49,49,74,66,73,71,50,66,105,116,109,97,112,0,0,0,49,50,74,66,73,71,50,83,101,103,109,101,110,116,0,0,88,113,4,0,216,200,2,0,128,113,4,0,200,200,2,0,232,200,2,0,0,0,0,0,49,53,74,66,73,71,50,83,121,109,98,111,108,68,105,99,116,0,0,0,0,0,0,0,128,113,4,0,0,201,2,0,232,200,2,0,0,0,0,0,49,54,74,66,73,71,50,80,97,116,116,101,114,110,68,105,99,116,0,0,0,0,0,0,128,113,4,0,40,201,2,0,232,200,2,0,0,0,0,0,49,52,74,66,73,71,50,67,111,100,101,84,97,98,108,101,0,0,0,0,0,0,0,0,128,113,4,0,80,201,2,0,232,200,2,0,0,0,0,0,49,49,74,66,73,71,50,83,116,114,101,97,109,0,0,0,128,113,4,0,120,201,2,0,200,188,0,0,0,0,0,0,74,66,73,71,50,32,77,77,82,32,114,111,119,32,105,115,32,119,114,111,110,103,32,108,101,110,103,116,104,32,40,37,100,41,0,0,0,0,0,0,73,110,118,97,108,105,100,32,74,66,73,71,50,32,77,77,82,32,99,111,100,101,0,0,0,0,0,0,0,211,2,0,211,0,0,0,212,0,0,0,168,0,0,0,213,0,0,0,214,0,0,0,169,0,0,0,170,0,0,0,25,0,0,0,12,0,0,0,34,0,0,0,24,0,0,0,7,0,0,0,35,0,0,0,14,0,0,0,21,0,0,0,20,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,29,0,0,0,134,0,0,0,39,0,0,0,31,0,0,0,9,0,0,0,78,97,107,101,100,32,74,80,69,71,32,50,48,48,48,32,99,111,100,101,115,116,114,101,97,109,44,32,109,105,115,115,105,110,103,32,74,80,50,47,74,80,88,32,119,114,97,112,112,101,114,0,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,69,79,70,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,0,0,85,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,70,111,117,110,100,32,98,105,116,115,32,112,101,114,32,99,111,109,112,111,110,101,110,116,32,98,111,120,32,98,101,102,111,114,101,32,105,109,97,103,101,32,104,101,97,100,101,114,32,98,111,120,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,0,0,0,0,73,110,118,97,108,105,100,32,98,105,116,115,32,112,101,114,32,99,111,109,112,111,110,101,110,116,32,98,111,120,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,0,0,74,80,88,32,115,116,114,101,97,109,32,105,115,32,109,105,115,115,105,110,103,32,116,104,101,32,105,109,97,103,101,32,104,101,97,100,101,114,32,98,111,120,0,0,0,0,0,0,74,80,88,32,115,116,114,101,97,109,32,104,97,115,32,110,111,32,115,117,112,112,111,114,116,101,100,32,99,111,108,111,114,32,115,112,101,99,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,99,111,108,111,114,32,115,112,101,99,0,69,114,114,111,114,32,105,110,32,74,80,88,32,99,111,100,101,115,116,114,101,97,109,0,69,114,114,111,114,32,105,110,32,74,80,88,32,83,73,90,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,68,105,102,102,101,114,101,110,116,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,105,110,32,74,80,88,32,83,73,90,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,0,66,97,100,32,116,105,108,101,32,99,111,117,110,116,32,105,110,32,74,80,88,32,83,73,90,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,67,79,68,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,74,80,88,32,67,79,67,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,32,98,101,102,111,114,101,32,67,79,68,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,67,79,67,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,69,114,114,111,114,32,105,110,32,74,80,88,32,81,67,68,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,74,80,88,32,81,67,67,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,32,98,101,102,111,114,101,32,81,67,68,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,81,67,67,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,82,71,78,10,0,0,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,80,80,77,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,80,79,67,10,0,0,0,0,80,80,77,10,0,0,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,84,76,77,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,69,114,114,111,114,32,105,110,32,74,80,88,32,80,76,77,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,69,114,114,111,114,32,105,110,32,74,80,88,32,67,82,71,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,69,114,114,111,114,32,105,110,32,74,80,88,32,67,79,77,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,85,110,107,110,111,119,110,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,32,37,48,50,120,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,83,73,90,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,67,79,68,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,81,67,68,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,69,79,67,32,109,97,114,107,101,114,32,105,110,32,74,80,88,32,99,111,100,101,115,116,114,101,97,109,0,0,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,83,79,84,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,87,101,105,114,100,32,116,105,108,101,32,105,110,100,101,120,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,116,105,108,101,45,112,97,114,116,32,99,111,100,101,115,116,114,101,97,109,0,0,0,0,0,0,0,80,80,84,10,0,0,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,80,80,84,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,69,114,114,111,114,32,105,110,32,74,80,88,32,80,76,84,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,0,85,110,107,110,111,119,110,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,32,37,48,50,120,32,105,110,32,74,80,88,32,116,105,108,101,45,112,97,114,116,32,115,116,114,101,97,109,0,0,0,0,0,69,114,114,111,114,32,105,110,32,74,80,88,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,2,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,8,0,0,0,2,0,0,0,2,0,0,0,8,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,6,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,3,0,0,0,8,0,0,0,6,0,0,0,3,0,0,0,8,0,0,0,8,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,4,0,0,0,5,0,0,0,8,0,0,0,4], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+174176); -/* memory initializer */ allocate([7,0,0,0,8,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,6,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,3,0,0,0,6,0,0,0,8,0,0,0,3,0,0,0,6,0,0,0,8,0,0,0,7,0,0,0,7,0,0,0,2,0,0,0,7,0,0,0,7,0,0,0,5,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,7,0,0,0,5,0,0,0,8,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,7,0,0,0,8,0,0,0,4,0,0,0,8,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,5,0,0,0,4,0,0,0,8,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,7,0,0,0,8,0,0,0,2,0,0,0,7,0,0,0,8,0,0,0,5,0,0,0,7,0,0,0,8,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,2,0,0,0,8,0,0,0,8,0,0,0,5,0,0,0,8,0,0,0,8,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,13,0,0,0,1,0,0,0,13,0,0,0,1,0,0,0,12,0,0,0,1,0,0,0,11,0,0,0,1,0,0,0,11,0,0,0,1,0,0,0,13,0,0,0,1,0,0,0,13,0,0,0,1,0,0,0,12,0,0,0,1,0,0,0,11,0,0,0,1,0,0,0,11,0,0,0,1,0,0,0,10,0,0,0,1,0,0,0,10,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,74,80,88,32,115,116,114,101,97,109,32,99,111,110,116,97,105,110,115,32,97,32,98,111,120,32,108,97,114,103,101,114,32,116,104,97,110,32,50,94,51,50,32,98,121,116,101,115,0,0,0,0,0,0,0,0,57,74,80,88,83,116,114,101,97,109,0,0,0,0,0,0,128,113,4,0,240,210,2,0,200,188,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,97,100,108,121,32,102,111,114,109,97,116,116,101,100,32,110,117,109,98,101,114,0,0,85,110,116,101,114,109,105,110,97,116,101,100,32,115,116,114,105,110,103,0,0,0,0,0,73,108,108,101,103,97,108,32,100,105,103,105,116,32,105,110,32,104,101,120,32,99,104,97,114,32,105,110,32,110,97,109,101,0,0,0,0,0,0,0,87,97,114,110,105,110,103,58,32,110,97,109,101,32,116,111,107,101,110,32,105,115,32,108,111,110,103,101,114,32,116,104,97,110,32,119,104,97,116,32,116,104,101,32,115,112,101,99,105,102,105,99,97,116,105,111,110,32,115,97,121,115,32,105,116,32,99,97,110,32,98,101,0,0,0,0,0,0,0,0,78,97,109,101,32,116,111,107,101,110,32,116,111,111,32,108,111,110,103,0,0,0,0,0,85,110,116,101,114,109,105,110,97,116,101,100,32,104,101,120,32,115,116,114,105,110,103,0,73,108,108,101,103,97,108,32,99,104,97,114,97,99,116,101,114,32,60,37,48,50,120,62,32,105,110,32,104,101,120,32,115,116,114,105,110,103,0,0,73,108,108,101,103,97,108,32,99,104,97,114,97,99,116,101,114,32,39,62,39,0,0,0,73,108,108,101,103,97,108,32,99,104,97,114,97,99,116,101,114,32,39,37,99,39,0,0,67,111,109,109,97,110,100,32,116,111,107,101,110,32,116,111,111,32,108,111,110,103,0,0,116,114,117,101,0,0,0,0,102,97,108,115,101,0,0,0,110,117,108,108,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,111,98,106,0,0,0,0,0,76,105,110,101,97,114,105,122,101,100,0,0,0,0,0,0,76,0,0,0,0,0,0,0,76,101,110,103,116,104,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,72,105,110,116,115,32,116,97,98,108,101,32,111,102,102,115,101,116,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,72,105,110,116,115,32,116,97,98,108,101,32,108,101,110,103,116,104,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,83,101,99,111,110,100,32,104,105,110,116,115,32,116,97,98,108,101,32,111,102,102,115,101,116,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,0,83,101,99,111,110,100,32,104,105,110,116,115,32,116,97,98,108,101,32,108,101,110,103,116,104,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,0,79,0,0,0,0,0,0,0,79,98,106,101,99,116,32,110,117,109,98,101,114,32,111,102,32,102,105,114,115,116,32,112,97,103,101,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,0,0,69,0,0,0,0,0,0,0,70,105,114,115,116,32,112,97,103,101,32,101,110,100,32,111,102,102,115,101,116,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,78,0,0,0,0,0,0,0,80,97,103,101,32,99,111,117,110,116,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,84,0,0,0,0,0,0,0,77,97,105,110,32,88,114,101,102,32,111,102,102,115,101,116,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,0,0,80,0,0,0,0,0,0,0,70,105,114,115,116,32,112,97,103,101,32,105,110,32,108,105,110,101,97,114,105,122,97,116,105,111,110,32,116,97,98,108,101,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,112,97,114,115,101,65,99,116,105,111,110,58,32,66,97,100,32,97,110,110,111,116,97,116,105,111,110,32,97,99,116,105,111,110,32,102,111,114,32,85,82,73,32,39,37,115,39,0,78,85,76,76,0,0,0,0,83,0,0,0,0,0,0,0,71,111,84,111,0,0,0,0,68,0,0,0,0,0,0,0,71,111,84,111,82,0,0,0,70,0,0,0,0,0,0,0,76,97,117,110,99,104,0,0,85,82,73,0,0,0,0,0,78,97,109,101,100,0,0,0,78,0,0,0,0,0,0,0,77,111,118,105,101,0,0,0,82,101,110,100,105,116,105,111,110,0,0,0,0,0,0,0,83,111,117,110,100,0,0,0,74,97,118,97,83,99,114,105,112,116,0,0,0,0,0,0,74,83,0,0,0,0,0,0,83,101,116,79,67,71,83,116,97,116,101,0,0,0,0,0,112,97,114,115,101,65,99,116,105,111,110,58,32,85,110,107,110,111,119,110,32,97,110,110,111,116,97,116,105,111,110,32,97,99,116,105,111,110,32,111,98,106,101,99,116,58,32,85,82,73,32,61,32,39,37,115,39,0,0,0,0,0,0,0,65,110,110,111,116,97,116,105,111,110,32,100,101,115,116,105,110,97,116,105,111,110,32,97,114,114,97,121,32,105,115,32,116,111,111,32,115,104,111,114,116,0,0,0,0,0,0,0,66,97,100,32,97,110,110,111,116,97,116,105,111,110,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,0,0,0,88,89,90,0,0,0,0,0,66,97,100,32,97,110,110,111,116,97,116,105,111,110,32,100,101,115,116,105,110,97,116,105,111,110,32,112,111,115,105,116,105,111,110,0,0,0,0,0,70,105,116,0,0,0,0,0,70,105,116,72,0,0,0,0,70,105,116,86,0,0,0,0,70,105,116,82,0,0,0,0,70,105,116,66,0,0,0,0,70,105,116,66,72,0,0,0,70,105,116,66,86,0,0,0,85,110,107,110,111,119,110,32,97,110,110,111,116,97,116,105,111,110,32,100,101,115,116,105,110,97,116,105,111,110,32,116,121,112,101,0,0,0,0,0,0,0,0,0,200,222,2,0,215,0,0,0,216,0,0,0,171,0,0,0,172,0,0,0,73,108,108,101,103,97,108,32,97,110,110,111,116,97,116,105,111,110,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,0,0,0,232,222,2,0,217,0,0,0,218,0,0,0,173,0,0,0,174,0,0,0,0,0,0,0,8,223,2,0,219,0,0,0,220,0,0,0,175,0,0,0,176,0,0,0,85,110,105,120,0,0,0,0,80,0,0,0,0,0,0,0,66,97,100,32,108,97,117,110,99,104,45,116,121,112,101,32,108,105,110,107,32,97,99,116,105,111,110,0,0,0,0,0,0,0,0,0,40,223,2,0,221,0,0,0,222,0,0,0,177,0,0,0,178,0,0,0,47,58,0,0,0,0,0,0,73,108,108,101,103,97,108,32,85,82,73,45,116,121,112,101,32,108,105,110,107,0,0,0,0,0,0,0,72,223,2,0,223,0,0,0,224,0,0,0,179,0,0,0,180,0,0,0,0,0,0,0,104,223,2,0,225,0,0,0,226,0,0,0,181,0,0,0,182,0,0,0,65,110,110,111,116,97,116,105,111,110,0,0,0,0,0,0,84,0,0,0,0,0,0,0,77,111,118,105,101,32,97,99,116,105,111,110,32,105,115,32,109,105,115,115,105,110,103,32,98,111,116,104,32,116,104,101,32,65,110,110,111,116,32,97,110,100,32,84,32,107,101,121,115,0,0,0,0,0,0,0,79,112,101,114,97,116,105,111,110,0,0,0,0,0,0,0,80,108,97,121,0,0,0,0,83,116,111,112,0,0,0,0,80,97,117,115,101,0,0,0,82,101,115,117,109,101,0,0,0,0,0,0,168,223,2,0,227,0,0,0,228,0,0,0,183,0,0,0,184,0,0,0,86,111,108,117,109,101,0,0,83,121,110,99,104,114,111,110,111,117,115,0,0,0,0,0,82,101,112,101,97,116,0,0,77,105,120,0,0,0,0,0,0,0,0,0,136,223,2,0,229,0,0,0,230,0,0,0,185,0,0,0,186,0,0,0,73,110,118,97,108,105,100,32,82,101,110,100,105,116,105,111,110,32,65,99,116,105,111,110,58,32,74,83,32,110,111,116,32,115,116,114,105,110,103,32,111,114,32,115,116,114,101,97,109,0,0,0,0,0,0,0,79,80,0,0,0,0,0,0,73,110,118,97,108,105,100,32,82,101,110,100,105,116,105,111,110,32,65,99,116,105,111,110,58,32,117,110,114,101,99,111,103,110,105,122,101,100,32,111,112,101,114,97,116,105,111,110,32,118,97,108,117,101,100,58,32,37,100,0,0,0,0,0,82,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,82,101,110,100,105,116,105,111,110,32,65,99,116,105,111,110,58,32,110,111,32,82,32,102,105,101,108,100,32,119,105,116,104,32,111,112,32,61,32,37,100,0,0,0,0,0,0,0,65,78,0,0,0,0,0,0,73,110,118,97,108,105,100,32,82,101,110,100,105,116,105,111,110,32,65,99,116,105,111,110,58,32,110,111,32,65,78,32,102,105,101,108,100,32,119,105,116,104,32,111,112,32,61,32,37,100,0,0,0,0,0,0,73,110,118,97,108,105,100,32,82,101,110,100,105,116,105,111,110,32,97,99,116,105,111,110,58,32,110,111,32,79,80,32,111,114,32,74,83,32,102,105,101,108,100,32,100,101,102,105,110,101,100,0,0,0,0,0,0,0,0,0,208,223,2,0,231,0,0,0,232,0,0,0,187,0,0,0,188,0,0,0,0,0,0,0,240,223,2,0,233,0,0,0,234,0,0,0,189,0,0,0,190,0,0,0,83,116,97,116,101,0,0,0,79,78,0,0,0,0,0,0,79,70,70,0,0,0,0,0,84,111,103,103,108,101,0,0,73,110,118,97,108,105,100,32,110,97,109,101,32,39,37,115,39,32,105,110,32,79,67,71,32,65,99,116,105,111,110,32,115,116,97,116,101,32,97,114,114,97,121,0,0,0,0,0,73,110,118,97,108,105,100,32,79,67,71,32,65,99,116,105,111,110,32,83,116,97,116,101,32,97,114,114,97,121,44,32,101,120,112,101,99,116,101,100,32,110,97,109,101,32,105,110,115,116,101,97,100,32,111,102,32,114,101,102,0,0,0,0,73,110,118,97,108,105,100,32,105,116,101,109,32,105,110,32,79,67,71,32,65,99,116,105,111,110,32,83,116,97,116,101,32,97,114,114,97,121,0,0,73,110,118,97,108,105,100,32,79,67,71,83,116,97,116,101,32,97,99,116,105,111,110,0,80,114,101,115,101,114,118,101,82,66,0,0,0,0,0,0,0,0,0,0,16,224,2,0,235,0,0,0,236,0,0,0,191,0,0,0,192,0,0,0,56,76,105,110,107,71,111,84,111,0,0,0,0,0,0,0,49,48,76,105,110,107,65,99,116,105,111,110,0,0,0,0,88,113,4,0,176,222,2,0,128,113,4,0,160,222,2,0,192,222,2,0,0,0,0,0,57,76,105,110,107,71,111,84,111,82,0,0,0,0,0,0,128,113,4,0,216,222,2,0,192,222,2,0,0,0,0,0,49,48,76,105,110,107,76,97,117,110,99,104,0,0,0,0,128,113,4,0,248,222,2,0,192,222,2,0,0,0,0,0,55,76,105,110,107,85,82,73,0,0,0,0,0,0,0,0,128,113,4,0,24,223,2,0,192,222,2,0,0,0,0,0,57,76,105,110,107,78,97,109,101,100,0,0,0,0,0,0,128,113,4,0,56,223,2,0,192,222,2,0,0,0,0,0,57,76,105,110,107,77,111,118,105,101,0,0,0,0,0,0,128,113,4,0,88,223,2,0,192,222,2,0,0,0,0,0,49,51,76,105,110,107,82,101,110,100,105,116,105,111,110,0,128,113,4,0,120,223,2,0,192,222,2,0,0,0,0,0,57,76,105,110,107,83,111,117,110,100,0,0,0,0,0,0,128,113,4,0,152,223,2,0,192,222,2,0,0,0,0,0,49,52,76,105,110,107,74,97,118,97,83,99,114,105,112,116,0,0,0,0,0,0,0,0,128,113,4,0,184,223,2,0,192,222,2,0,0,0,0,0,49,50,76,105,110,107,79,67,71,83,116,97,116,101,0,0,128,113,4,0,224,223,2,0,192,222,2,0,0,0,0,0,49,49,76,105,110,107,85,110,107,110,111,119,110,0,0,0,128,113,4,0,0,224,2,0,192,222,2,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,32,111,114,32,37,100,0,0,0,0,0,102,105,108,101,58,47,47,0,58,47,47,0,0,0,0,0,0,0,0,0,248,224,2,0,237,0,0,0,238,0,0,0,6,0,0,0,21,0,0,0,49,56,76,111,99,97,108,80,68,70,68,111,99,66,117,105,108,100,101,114,0,0,0,0,128,113,4,0,224,224,2,0,224,140,0,0,0,0,0,0,83,116,97,114,116,0,0,0,68,117,114,97,116,105,111,110,0,0,0,0,0,0,0,0,82,97,116,101,0,0,0,0,86,111,108,117,109,101,0,0,83,104,111,119,67,111,110,116,114,111,108,115,0,0,0,0,83,121,110,99,104,114,111,110,111,117,115,0,0,0,0,0,77,111,100,101,0,0,0,0,79,110,99,101,0,0,0,0,79,112,101,110,0,0,0,0,82,101,112,101,97,116,0,0,80,97,108,105,110,100,114,111,109,101,0,0,0,0,0,0,70,87,83,99,97,108,101,0,70,87,80,111,115,105,116,105,111,110,0,0,0,0,0,0,70,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,77,111,118,105,101,0,0,0,65,115,112,101,99,116,0,0,82,111,116,97,116,101,0,0,80,111,115,116,101,114,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,32,111,114,32,37,100,0,0,0,0,0,79,67,71,115,0,0,0,0,69,120,112,101,99,116,101,100,32,116,104,101,32,111,112,116,105,111,110,97,108,32,99,111,110,116,101,110,116,32,103,114,111,117,112,32,108,105,115,116,44,32,98,117,116,32,119,97,115,110,39,116,32,97,98,108,101,32,116,111,32,102,105,110,100,32,105,116,44,32,111,114,32,105,116,32,105,115,110,39,116,32,97,110,32,65,114,114,97,121,0,0,0,0,0,0,68,0,0,0,0,0,0,0,69,120,112,101,99,116,101,100,32,116,104,101,32,100,101,102,97,117,108,116,32,99,111,110,102,105,103,44,32,98,117,116,32,119,97,115,110,39,116,32,97,98,108,101,32,116,111,32,102,105,110,100,32,105,116,44,32,111,114,32,105,116,32,105,115,110,39,116,32,97,32,68,105,99,116,105,111,110,97,114,121,0,0,0,0,0,0,0,66,97,115,101,83,116,97,116,101,0,0,0,0,0,0,0,79,70,70,0,0,0,0,0,79,78,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,102,105,110,100,32,103,114,111,117,112,32,102,111,114,32,114,101,102,101,114,101,110,99,101,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,102,105,110,100,32,103,114,111,117,112,32,102,111,114,32,114,101,102,101,114,101,110,99,101,32,116,111,32,115,101,116,32,79,70,70,0,0,0,0,79,114,100,101,114,0,0,0,82,66,71,114,111,117,112,115,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,97,32,79,67,71,32,119,105,116,104,32,82,101,102,32,40,37,100,58,37,100,41,0,0,0,85,110,101,120,112,101,99,116,101,100,32,111,99,32,114,101,102,101,114,101,110,99,101,32,116,97,114,103,101,116,58,32,37,105,0,0,0,0,0,0,84,121,112,101,0,0,0,0,79,67,77,68,0,0,0,0,80,0,0,0,0,0,0,0,65,108,108,79,110,0,0,0,65,108,108,79,102,102,0,0,65,110,121,79,102,102,0,0,65,110,121,79,110,0,0,0,79,67,71,0,0,0,0,0,78,97,109,101,0,0,0,0,69,120,112,101,99,116,101,100,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,32,79,67,71,44,32,98,117,116,32,119,97,115,110,39,116,32,97,98,108,101,32,116,111,32,102,105,110,100,32,105,116,44,32,111,114,32,105,116,32,105,115,110,39,116,32,97,32,83,116,114,105,110,103,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,57,79,117,116,112,117,116,68,101,118,0,0,0,0,0,0,88,113,4,0,232,228,2,0,0,0,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,9,0,0,0,10,0,0,0,253,255,0,0,12,0,0,0,13,0,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,253,255,0,0,216,2,0,0,199,2,0,0,198,2,0,0,217,2,0,0,221,2,0,0,219,2,0,0,218,2,0,0,220,2,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,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,44,0,0,0,45,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,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,88,0,0,0,89,0,0,0,90,0,0,0,91,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,121,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,125,0,0,0,126,0,0,0,253,255,0,0,34,32,0,0,32,32,0,0,33,32,0,0,38,32,0,0,20,32,0,0,19,32,0,0,146,1,0,0,68,32,0,0,57,32,0,0,58,32,0,0,18,34,0,0,48,32,0,0,30,32,0,0,28,32,0,0,29,32,0,0,24,32,0,0,25,32,0,0,26,32,0,0,34,33,0,0,1,251,0,0,2,251,0,0,65,1,0,0,82,1,0,0,96,1,0,0,120,1,0,0,125,1,0,0,49,1,0,0,66,1,0,0,83,1,0,0,97,1,0,0,126,1,0,0,253,255,0,0,172,32,0,0,161,0,0,0,162,0,0,0,163,0,0,0,164,0,0,0,165,0,0,0,166,0,0,0,167,0,0,0,168,0,0,0,169,0,0,0,170,0,0,0,171,0,0,0,172,0,0,0,253,255,0,0,174,0,0,0,175,0,0,0,176,0,0,0,177,0,0,0,178,0,0,0,179,0,0,0,180,0,0,0,181,0,0,0,182,0,0,0,183,0,0,0,184,0,0,0,185,0,0,0,186,0,0,0,187,0,0,0,188,0,0,0,189,0,0,0,190,0,0,0,191,0,0,0,192,0,0,0,193,0,0,0,194,0,0,0,195,0,0,0,196,0,0,0,197,0,0,0,198,0,0,0,199,0,0,0,200,0,0,0,201,0,0,0,202,0,0,0,203,0,0,0,204,0,0,0,205,0,0,0,206,0,0,0,207,0,0,0,208,0,0,0,209,0,0,0,210,0,0,0,211,0,0,0,212,0,0,0,213,0,0,0,214,0,0,0,215,0,0,0,216,0,0,0,217,0,0,0,218,0,0,0,219,0,0,0,220,0,0,0,221,0,0,0,222,0,0,0,223,0,0,0,224,0,0,0,225,0,0,0,226,0,0,0,227,0,0,0,228,0,0,0,229,0,0,0,230,0,0,0,231,0,0,0,232,0,0,0,233,0,0,0,234,0,0,0,235,0,0,0,236,0,0,0,237,0,0,0,238,0,0,0,239,0,0,0,240,0,0,0,241,0,0,0,242,0,0,0,243,0,0,0,244,0,0,0,245,0,0,0,246,0,0,0,247,0,0,0,248,0,0,0,249,0,0,0,250,0,0,0,251,0,0,0,252,0,0,0,253,0,0,0,254,0,0,0,255,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,69,110,100,32,111,102,32,102,105,108,101,32,105,110,115,105,100,101,32,97,114,114,97,121,0,0,0,0,0,0,0,0,60,60,0,0,0,0,0,0,62,62,0,0,0,0,0,0,68,105,99,116,105,111,110,97,114,121,32,107,101,121,32,109,117,115,116,32,98,101,32,97,32,110,97,109,101,32,111,98,106,101,99,116,0,0,0,0,69,110,100,32,111,102,32,102,105,108,101,32,105,110,115,105,100,101,32,100,105,99,116,105,111,110,97,114,121,0,0,0,115,116,114,101,97,109,0,0,82,0,0,0,0,0,0,0,76,101,110,103,116,104,0,0,66,97,100,32,39,76,101,110,103,116,104,39,32,97,116,116,114,105,98,117,116,101,32,105,110,32,115,116,114,101,97,109,0,0,0,0,0,0,0,0,101,110,100,115,116,114,101,97,109,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,39,101,110,100,115,116,114,101,97,109,39,0,0,0,0,0,73,68,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,49,53,80,111,112,112,108,101,114,67,97,99,104,101,75,101,121,0,0,0,0,0,0,0,88,113,4,0,64,235,2,0,49,54,80,111,112,112,108,101,114,67,97,99,104,101,73,116,101,109,0,0,0,0,0,0,88,113,4,0,96,235,2,0,0,0,0,0,160,235,2,0,239,0,0,0,240,0,0,0,49,48,79,98,106,101,99,116,73,116,101,109,0,0,0,0,128,113,4,0,144,235,2,0,120,235,2,0,0,0,0,0,0,0,0,0,216,235,2,0,241,0,0,0,242,0,0,0,22,0,0,0,0,0,0,0,57,79,98,106,101,99,116,75,101,121,0,0,0,0,0,0,128,113,4,0,200,235,2,0,88,235,2,0,0,0,0,0,68,0,0,0,0,0,0,0,82,84,0,0,0,0,0,0,80,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,85,67,0,0,0,0,0,0,82,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,83,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,82,67,0,0,0,0,0,0,87,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,77,67,68,0,0,0,0,0,69,70,0,0,0,0,0,0,73,110,118,97,108,105,100,32,77,101,100,105,97,32,67,108,105,112,32,68,97,116,97,0,67,84,0,0,0,0,0,0,73,110,118,97,108,105,100,32,77,101,100,105,97,32,67,108,105,112,0,0,0,0,0,0,77,72,0,0,0,0,0,0,66,69,0,0,0,0,0,0,73,110,118,97,108,105,100,32,77,101,100,105,97,32,82,101,110,100,105,116,105,111,110,0,83,80,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,32,111,114,32,37,100,0,0,0,0,0,82,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,69,0,0,0,0,0,0,0,82,97,119,0,0,0,0,0,83,105,103,110,101,100,0,0,109,117,76,97,119,0,0,0,65,76,97,119,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,0,0,0,0,80,238,2,0,243,0,0,0,244,0,0,0,22,0,0,0,23,0,0,0,49,54,83,116,100,105,110,67,97,99,104,101,76,111,97,100,101,114,0,0,0,0,0,0,49,54,67,97,99,104,101,100,70,105,108,101,76,111,97,100,101,114,0,0,0,0,0,0,88,113,4,0,48,238,2,0,128,113,4,0,24,238,2,0,72,238,2,0,0,0,0,0,0,0,0,0,224,238,2,0,245,0,0,0,246,0,0,0,114,98,0,0,0,0,0,0,67,97,110,110,111,116,32,111,112,101,110,32,39,37,115,39,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,115,101,101,107,32,116,111,32,101,110,100,32,111,102,32,39,37,115,39,0,0,0,0,0,0,67,97,110,110,111,116,32,115,101,101,107,32,116,111,32,115,116,97,114,116,32,111,102,32,39,37,115,39,0,0,0,0,56,70,111,70,105,66,97,115,101,0,0,0,0,0,0,0,88,113,4,0,208,238,2,0,115,112,97,99,101,0,0,0,101,120,99,108,97,109,0,0,113,117,111,116,101,100,98,108,0,0,0,0,0,0,0,0,110,117,109,98,101,114,115,105,103,110,0,0,0,0,0,0,100,111,108,108,97,114,0,0,112,101,114,99,101,110,116,0,97,109,112,101,114,115,97,110,100,0,0,0,0,0,0,0,113,117,111,116,101,114,105,103,104,116,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,0,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,0,0,0,0,0,0,97,115,116,101,114,105,115,107,0,0,0,0,0,0,0,0,112,108,117,115,0,0,0,0,99,111,109,109,97,0,0,0,104,121,112,104,101,110,0,0,112,101,114,105,111,100,0,0,115,108,97,115,104,0,0,0,122,101,114,111,0,0,0,0,111,110,101,0,0,0,0,0,116,119,111,0,0,0,0,0,116,104,114,101,101,0,0,0,102,111,117,114,0,0,0,0,102,105,118,101,0,0,0,0,115,105,120,0,0,0,0,0,115,101,118,101,110,0,0,0,101,105,103,104,116,0,0,0,110,105,110,101,0,0,0,0,99,111,108,111,110,0,0,0,115,101,109,105,99,111,108,111,110,0,0,0,0,0,0,0,108,101,115,115,0,0,0,0,101,113,117,97,108,0,0,0,103,114,101,97,116,101,114,0,113,117,101,115,116,105,111,110,0,0,0,0,0,0,0,0,97,116,0,0,0,0,0,0,65,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,69,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,75,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,82,0,0,0,0,0,0,0,83,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,89,0,0,0,0,0,0,0,90,0,0,0,0,0,0,0,98,114,97,99,107,101,116,108,101,102,116,0,0,0,0,0,98,97,99,107,115,108,97,115,104,0,0,0,0,0,0,0,98,114,97,99,107,101,116,114,105,103,104,116,0,0,0,0,97,115,99,105,105,99,105,114,99,117,109,0,0,0,0,0,117,110,100,101,114,115,99,111,114,101,0,0,0,0,0,0,113,117,111,116,101,108,101,102,116,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,103,0,0,0,0,0,0,0,104,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,121,0,0,0,0,0,0,0,122,0,0,0,0,0,0,0,98,114,97,99,101,108,101,102,116,0,0,0,0,0,0,0,98,97,114,0,0,0,0,0,98,114,97,99,101,114,105,103,104,116,0,0,0,0,0,0,97,115,99,105,105,116,105,108,100,101,0,0,0,0,0,0,101,120,99,108,97,109,100,111,119,110,0,0,0,0,0,0,99,101,110,116,0,0,0,0,115,116,101,114,108,105,110,103,0,0,0,0,0,0,0,0,102,114,97,99,116,105,111,110,0,0,0,0,0,0,0,0,121,101,110,0,0,0,0,0,102,108,111,114,105,110,0,0,115,101,99,116,105,111,110,0,99,117,114,114,101,110,99,121,0,0,0,0,0,0,0,0,113,117,111,116,101,115,105,110,103,108,101,0,0,0,0,0,113,117,111,116,101,100,98,108,108,101,102,116,0,0,0,0,103,117,105,108,108,101,109,111,116,108,101,102,116,0,0,0,103,117,105,108,115,105,110,103,108,108,101,102,116,0,0,0,103,117,105,108,115,105,110,103,108,114,105,103,104,116,0,0,102,105,0,0,0,0,0,0,102,108,0,0,0,0,0,0,101,110,100,97,115,104,0,0,100,97,103,103,101,114,0,0,100,97,103,103,101,114,100,98,108,0,0,0,0,0,0,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,0,112,97,114,97,103,114,97,112,104,0,0,0,0,0,0,0,98,117,108,108,101,116,0,0,113,117,111,116,101,115,105,110,103,108,98,97,115,101,0,0,113,117,111,116,101,100,98,108,98,97,115,101,0,0,0,0,113,117,111,116,101,100,98,108,114,105,103,104,116,0,0,0,103,117,105,108,108,101,109,111,116,114,105,103,104,116,0,0,101,108,108,105,112,115,105,115,0,0,0,0,0,0,0,0,112,101,114,116,104,111,117,115,97,110,100,0,0,0,0,0,113,117,101,115,116,105,111,110,100,111,119,110,0,0,0,0,103,114,97,118,101,0,0,0,97,99,117,116,101,0,0,0,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,0,116,105,108,100,101,0,0,0,109,97,99,114,111,110,0,0,98,114,101,118,101,0,0,0,100,111,116,97,99,99,101,110,116,0,0,0,0,0,0,0,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,0,114,105,110,103,0,0,0,0,99,101,100,105,108,108,97,0,104,117,110,103,97,114,117,109,108,97,117,116,0,0,0,0,111,103,111,110,101,107,0,0,99,97,114,111,110,0,0,0,101,109,100,97,115,104,0,0,65,69,0,0,0,0,0,0,111,114,100,102,101,109,105,110,105,110,101,0,0,0,0,0,76,115,108,97,115,104,0,0,79,115,108,97,115,104,0,0,79,69,0,0,0,0,0,0,111,114,100,109,97,115,99,117,108,105,110,101,0,0,0,0,97,101,0,0,0,0,0,0,100,111,116,108,101,115,115,105,0,0,0,0,0,0,0,0,108,115,108,97,115,104,0,0,111,115,108,97,115,104,0,0,111,101,0,0,0,0,0,0,103,101,114,109,97,110,100,98,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,238,2,0,240,238,2,0,248,238,2,0,8,239,2,0,24,239,2,0,32,239,2,0,40,239,2,0,56,239,2,0,72,239,2,0,88,239,2,0,104,239,2,0,120,239,2,0,128,239,2,0,136,239,2,0,144,239,2,0,152,239,2,0,160,239,2,0,168,239,2,0,176,239,2,0,184,239,2,0,192,239,2,0,200,239,2,0,208,239,2,0,216,239,2,0,224,239,2,0,232,239,2,0,240,239,2,0,248,239,2,0,8,240,2,0,16,240,2,0,24,240,2,0,32,240,2,0,48,240,2,0,56,240,2,0,64,240,2,0,72,240,2,0,80,240,2,0,88,240,2,0,96,240,2,0,104,240,2,0,112,240,2,0,120,240,2,0,128,240,2,0,136,240,2,0,144,240,2,0,152,240,2,0,160,240,2,0,168,240,2,0,176,240,2,0,184,240,2,0,192,240,2,0,200,240,2,0,208,240,2,0,216,240,2,0,224,240,2,0,232,240,2,0,240,240,2,0,248,240,2,0,0,241,2,0,8,241,2,0,24,241,2,0,40,241,2,0,56,241,2,0,72,241,2,0,88,241,2,0,104,241,2,0,112,241,2,0,120,241,2,0,128,241,2,0,136,241,2,0,144,241,2,0,152,241,2,0,160,241,2,0,168,241,2,0,176,241,2,0,184,241,2,0,192,241,2,0,200,241,2,0,208,241,2,0,216,241,2,0,224,241,2,0,232,241,2,0,240,241,2,0,248,241,2,0,0,242,2,0,8,242,2,0,16,242,2,0,24,242,2,0,32,242,2,0,40,242,2,0,48,242,2,0,56,242,2,0,72,242,2,0,80,242,2,0,96,242,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,242,2,0,128,242,2,0,136,242,2,0,152,242,2,0,168,242,2,0,176,242,2,0,184,242,2,0,192,242,2,0,208,242,2,0,224,242,2,0,240,242,2,0,0,243,2,0,16,243,2,0,32,243,2,0,40,243,2,0,0,0,0,0,48,243,2,0,56,243,2,0,64,243,2,0,80,243,2,0,0,0,0,0,96,243,2,0,112,243,2,0,120,243,2,0,136,243,2,0,152,243,2,0,168,243,2,0,184,243,2,0,200,243,2,0,0,0,0,0,216,243,2,0,0,0,0,0,232,243,2,0,240,243,2,0,248,243,2,0,8,244,2,0,16,244,2,0,24,244,2,0,32,244,2,0,48,244,2,0,0,0,0,0,64,244,2,0,72,244,2,0,0,0,0,0,80,244,2,0,96,244,2,0,104,244,2,0,112,244,2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+184416); -/* memory initializer */ allocate([120,244,2,0,0,0,0,0,128,244,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,244,2,0,152,244,2,0,160,244,2,0,168,244,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,244,2,0,0,0,0,0,0,0,0,0,0,0,0,0,192,244,2,0,0,0,0,0,0,0,0,0,208,244,2,0,216,244,2,0,224,244,2,0,232,244,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,120,99,108,97,109,115,109,97,108,108,0,0,0,0,0,72,117,110,103,97,114,117,109,108,97,117,116,115,109,97,108,108,0,0,0,0,0,0,0,100,111,108,108,97,114,111,108,100,115,116,121,108,101,0,0,100,111,108,108,97,114,115,117,112,101,114,105,111,114,0,0,97,109,112,101,114,115,97,110,100,115,109,97,108,108,0,0,65,99,117,116,101,115,109,97,108,108,0,0,0,0,0,0,112,97,114,101,110,108,101,102,116,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,115,117,112,101,114,105,111,114,0,0,0,0,0,0,116,119,111,100,111,116,101,110,108,101,97,100,101,114,0,0,111,110,101,100,111,116,101,110,108,101,97,100,101,114,0,0,122,101,114,111,111,108,100,115,116,121,108,101,0,0,0,0,111,110,101,111,108,100,115,116,121,108,101,0,0,0,0,0,116,119,111,111,108,100,115,116,121,108,101,0,0,0,0,0,116,104,114,101,101,111,108,100,115,116,121,108,101,0,0,0,102,111,117,114,111,108,100,115,116,121,108,101,0,0,0,0,102,105,118,101,111,108,100,115,116,121,108,101,0,0,0,0,115,105,120,111,108,100,115,116,121,108,101,0,0,0,0,0,115,101,118,101,110,111,108,100,115,116,121,108,101,0,0,0,101,105,103,104,116,111,108,100,115,116,121,108,101,0,0,0,110,105,110,101,111,108,100,115,116,121,108,101,0,0,0,0,99,111,109,109,97,115,117,112,101,114,105,111,114,0,0,0,116,104,114,101,101,113,117,97,114,116,101,114,115,101,109,100,97,115,104,0,0,0,0,0,112,101,114,105,111,100,115,117,112,101,114,105,111,114,0,0,113,117,101,115,116,105,111,110,115,109,97,108,108,0,0,0,97,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,98,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,99,101,110,116,115,117,112,101,114,105,111,114,0,0,0,0,100,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,101,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,105,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,108,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,109,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,110,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,111,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,114,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,115,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,116,115,117,112,101,114,105,111,114,0,0,0,0,0,0,0,102,102,0,0,0,0,0,0,102,102,105,0,0,0,0,0,102,102,108,0,0,0,0,0,112,97,114,101,110,108,101,102,116,105,110,102,101,114,105,111,114,0,0,0,0,0,0,0,112,97,114,101,110,114,105,103,104,116,105,110,102,101,114,105,111,114,0,0,0,0,0,0,67,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,104,121,112,104,101,110,115,117,112,101,114,105,111,114,0,0,71,114,97,118,101,115,109,97,108,108,0,0,0,0,0,0,65,115,109,97,108,108,0,0,66,115,109,97,108,108,0,0,67,115,109,97,108,108,0,0,68,115,109,97,108,108,0,0,69,115,109,97,108,108,0,0,70,115,109,97,108,108,0,0,71,115,109,97,108,108,0,0,72,115,109,97,108,108,0,0,73,115,109,97,108,108,0,0,74,115,109,97,108,108,0,0,75,115,109,97,108,108,0,0,76,115,109,97,108,108,0,0,77,115,109,97,108,108,0,0,78,115,109,97,108,108,0,0,79,115,109,97,108,108,0,0,80,115,109,97,108,108,0,0,81,115,109,97,108,108,0,0,82,115,109,97,108,108,0,0,83,115,109,97,108,108,0,0,84,115,109,97,108,108,0,0,85,115,109,97,108,108,0,0,86,115,109,97,108,108,0,0,87,115,109,97,108,108,0,0,88,115,109,97,108,108,0,0,89,115,109,97,108,108,0,0,90,115,109,97,108,108,0,0,99,111,108,111,110,109,111,110,101,116,97,114,121,0,0,0,111,110,101,102,105,116,116,101,100,0,0,0,0,0,0,0,114,117,112,105,97,104,0,0,84,105,108,100,101,115,109,97,108,108,0,0,0,0,0,0,101,120,99,108,97,109,100,111,119,110,115,109,97,108,108,0,99,101,110,116,111,108,100,115,116,121,108,101,0,0,0,0,76,115,108,97,115,104,115,109,97,108,108,0,0,0,0,0,83,99,97,114,111,110,115,109,97,108,108,0,0,0,0,0,90,99,97,114,111,110,115,109,97,108,108,0,0,0,0,0,68,105,101,114,101,115,105,115,115,109,97,108,108,0,0,0,66,114,101,118,101,115,109,97,108,108,0,0,0,0,0,0,67,97,114,111,110,115,109,97,108,108,0,0,0,0,0,0,68,111,116,97,99,99,101,110,116,115,109,97,108,108,0,0,77,97,99,114,111,110,115,109,97,108,108,0,0,0,0,0,102,105,103,117,114,101,100,97,115,104,0,0,0,0,0,0,104,121,112,104,101,110,105,110,102,101,114,105,111,114,0,0,79,103,111,110,101,107,115,109,97,108,108,0,0,0,0,0,82,105,110,103,115,109,97,108,108,0,0,0,0,0,0,0,67,101,100,105,108,108,97,115,109,97,108,108,0,0,0,0,111,110,101,113,117,97,114,116,101,114,0,0,0,0,0,0,111,110,101,104,97,108,102,0,116,104,114,101,101,113,117,97,114,116,101,114,115,0,0,0,113,117,101,115,116,105,111,110,100,111,119,110,115,109,97,108,108,0,0,0,0,0,0,0,111,110,101,101,105,103,104,116,104,0,0,0,0,0,0,0,116,104,114,101,101,101,105,103,104,116,104,115,0,0,0,0,102,105,118,101,101,105,103,104,116,104,115,0,0,0,0,0,115,101,118,101,110,101,105,103,104,116,104,115,0,0,0,0,111,110,101,116,104,105,114,100,0,0,0,0,0,0,0,0,116,119,111,116,104,105,114,100,115,0,0,0,0,0,0,0,122,101,114,111,115,117,112,101,114,105,111,114,0,0,0,0,111,110,101,115,117,112,101,114,105,111,114,0,0,0,0,0,116,119,111,115,117,112,101,114,105,111,114,0,0,0,0,0,116,104,114,101,101,115,117,112,101,114,105,111,114,0,0,0,102,111,117,114,115,117,112,101,114,105,111,114,0,0,0,0,102,105,118,101,115,117,112,101,114,105,111,114,0,0,0,0,115,105,120,115,117,112,101,114,105,111,114,0,0,0,0,0,115,101,118,101,110,115,117,112,101,114,105,111,114,0,0,0,101,105,103,104,116,115,117,112,101,114,105,111,114,0,0,0,110,105,110,101,115,117,112,101,114,105,111,114,0,0,0,0,122,101,114,111,105,110,102,101,114,105,111,114,0,0,0,0,111,110,101,105,110,102,101,114,105,111,114,0,0,0,0,0,116,119,111,105,110,102,101,114,105,111,114,0,0,0,0,0,116,104,114,101,101,105,110,102,101,114,105,111,114,0,0,0,102,111,117,114,105,110,102,101,114,105,111,114,0,0,0,0,102,105,118,101,105,110,102,101,114,105,111,114,0,0,0,0,115,105,120,105,110,102,101,114,105,111,114,0,0,0,0,0,115,101,118,101,110,105,110,102,101,114,105,111,114,0,0,0,101,105,103,104,116,105,110,102,101,114,105,111,114,0,0,0,110,105,110,101,105,110,102,101,114,105,111,114,0,0,0,0,99,101,110,116,105,110,102,101,114,105,111,114,0,0,0,0,100,111,108,108,97,114,105,110,102,101,114,105,111,114,0,0,112,101,114,105,111,100,105,110,102,101,114,105,111,114,0,0,99,111,109,109,97,105,110,102,101,114,105,111,114,0,0,0,65,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,65,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,65,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,65,116,105,108,100,101,115,109,97,108,108,0,0,0,0,0,65,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,65,114,105,110,103,115,109,97,108,108,0,0,0,0,0,0,65,69,115,109,97,108,108,0,67,99,101,100,105,108,108,97,115,109,97,108,108,0,0,0,69,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,69,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,69,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,69,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,73,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,73,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,73,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,73,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,69,116,104,115,109,97,108,108,0,0,0,0,0,0,0,0,78,116,105,108,100,101,115,109,97,108,108,0,0,0,0,0,79,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,79,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,79,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,79,116,105,108,100,101,115,109,97,108,108,0,0,0,0,0,79,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,79,69,115,109,97,108,108,0,79,115,108,97,115,104,115,109,97,108,108,0,0,0,0,0,85,103,114,97,118,101,115,109,97,108,108,0,0,0,0,0,85,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,85,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,0,0,0,0,0,0,0,85,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,89,97,99,117,116,101,115,109,97,108,108,0,0,0,0,0,84,104,111,114,110,115,109,97,108,108,0,0,0,0,0,0,89,100,105,101,114,101,115,105,115,115,109,97,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,238,2,0,248,248,2,0,8,249,2,0,0,0,0,0,32,249,2,0,48,249,2,0,64,249,2,0,80,249,2,0,96,249,2,0,120,249,2,0,144,249,2,0,160,249,2,0,128,239,2,0,136,239,2,0,144,239,2,0,152,242,2,0,176,249,2,0,192,249,2,0,208,249,2,0,224,249,2,0,240,249,2,0,0,250,2,0,16,250,2,0,32,250,2,0,48,250,2,0,64,250,2,0,240,239,2,0,248,239,2,0,80,250,2,0,96,250,2,0,120,250,2,0,136,250,2,0,0,0,0,0,152,250,2,0,168,250,2,0,184,250,2,0,200,250,2,0,216,250,2,0,0,0,0,0,0,0,0,0,0,0,0,0,232,250,2,0,0,0,0,0,0,0,0,0,248,250,2,0,8,251,2,0,24,251,2,0,40,251,2,0,0,0,0,0,0,0,0,0,56,251,2,0,72,251,2,0,88,251,2,0,0,0,0,0,104,251,2,0,32,243,2,0,40,243,2,0,112,251,2,0,120,251,2,0,128,251,2,0,0,0,0,0,152,251,2,0,176,251,2,0,192,251,2,0,208,251,2,0,224,251,2,0,232,251,2,0,240,251,2,0,248,251,2,0,0,252,2,0,8,252,2,0,16,252,2,0,24,252,2,0,32,252,2,0,40,252,2,0,48,252,2,0,56,252,2,0,64,252,2,0,72,252,2,0,80,252,2,0,88,252,2,0,96,252,2,0,104,252,2,0,112,252,2,0,120,252,2,0,128,252,2,0,136,252,2,0,144,252,2,0,152,252,2,0,160,252,2,0,168,252,2,0,176,252,2,0,192,252,2,0,208,252,2,0,216,252,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,2,0,248,252,2,0,8,253,2,0,0,0,0,0,0,0,0,0,24,253,2,0,40,253,2,0,56,253,2,0,72,253,2,0,88,253,2,0,0,0,0,0,104,253,2,0,0,0,0,0,0,0,0,0,120,253,2,0,0,0,0,0,0,0,0,0,136,253,2,0,152,253,2,0,0,0,0,0,0,0,0,0,168,253,2,0,184,253,2,0,200,253,2,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,2,0,232,253,2,0,240,253,2,0,0,254,2,0,24,254,2,0,40,254,2,0,56,254,2,0,72,254,2,0,88,254,2,0,104,254,2,0,0,0,0,0,0,0,0,0,120,254,2,0,136,254,2,0,152,254,2,0,168,254,2,0,184,254,2,0,200,254,2,0,216,254,2,0,232,254,2,0,248,254,2,0,8,255,2,0,24,255,2,0,40,255,2,0,56,255,2,0,72,255,2,0,88,255,2,0,104,255,2,0,120,255,2,0,136,255,2,0,152,255,2,0,168,255,2,0,184,255,2,0,200,255,2,0,216,255,2,0,232,255,2,0,248,255,2,0,8,0,3,0,24,0,3,0,48,0,3,0,64,0,3,0,80,0,3,0,96,0,3,0,104,0,3,0,120,0,3,0,136,0,3,0,152,0,3,0,176,0,3,0,192,0,3,0,208,0,3,0,224,0,3,0,248,0,3,0,8,1,3,0,24,1,3,0,40,1,3,0,56,1,3,0,72,1,3,0,96,1,3,0,112,1,3,0,128,1,3,0,136,1,3,0,152,1,3,0,168,1,3,0,184,1,3,0,208,1,3,0,224,1,3,0,240,1,3,0,0,2,3,0,46,110,111,116,100,101,102,0,108,111,103,105,99,97,108,110,111,116,0,0,0,0,0,0,109,117,0,0,0,0,0,0,116,114,97,100,101,109,97,114,107,0,0,0,0,0,0,0,69,116,104,0,0,0,0,0,112,108,117,115,109,105,110,117,115,0,0,0,0,0,0,0,84,104,111,114,110,0,0,0,100,105,118,105,100,101,0,0,98,114,111,107,101,110,98,97,114,0,0,0,0,0,0,0,100,101,103,114,101,101,0,0,116,104,111,114,110,0,0,0,114,101,103,105,115,116,101,114,101,100,0,0,0,0,0,0,109,105,110,117,115,0,0,0,101,116,104,0,0,0,0,0,109,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,99,111,112,121,114,105,103,104,116,0,0,0,0,0,0,0,65,97,99,117,116,101,0,0,65,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,65,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,65,103,114,97,118,101,0,0,65,114,105,110,103,0,0,0,65,116,105,108,100,101,0,0,67,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,69,97,99,117,116,101,0,0,69,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,69,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,69,103,114,97,118,101,0,0,73,97,99,117,116,101,0,0,73,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,73,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,73,103,114,97,118,101,0,0,78,116,105,108,100,101,0,0,79,97,99,117,116,101,0,0,79,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,79,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,79,103,114,97,118,101,0,0,79,116,105,108,100,101,0,0,83,99,97,114,111,110,0,0,85,97,99,117,116,101,0,0,85,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,85,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,85,103,114,97,118,101,0,0,89,97,99,117,116,101,0,0,89,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,90,99,97,114,111,110,0,0,97,97,99,117,116,101,0,0,97,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,97,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,97,103,114,97,118,101,0,0,97,114,105,110,103,0,0,0,97,116,105,108,100,101,0,0,99,99,101,100,105,108,108,97,0,0,0,0,0,0,0,0,101,97,99,117,116,101,0,0,101,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,101,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,101,103,114,97,118,101,0,0,105,97,99,117,116,101,0,0,105,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,105,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,105,103,114,97,118,101,0,0,110,116,105,108,100,101,0,0,111,97,99,117,116,101,0,0,111,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,111,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,111,103,114,97,118,101,0,0,111,116,105,108,100,101,0,0,115,99,97,114,111,110,0,0,117,97,99,117,116,101,0,0,117,99,105,114,99,117,109,102,108,101,120,0,0,0,0,0,117,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,117,103,114,97,118,101,0,0,121,97,99,117,116,101,0,0,121,100,105,101,114,101,115,105,115,0,0,0,0,0,0,0,122,99,97,114,111,110,0,0,48,48,49,46,48,48,48,0,48,48,49,46,48,48,49,0,48,48,49,46,48,48,50,0,48,48,49,46,48,48,51,0,66,108,97,99,107,0,0,0,66,111,108,100,0,0,0,0,66,111,111,107,0,0,0,0,76,105,103,104,116,0,0,0,77,101,100,105,117,109,0,0,82,101,103,117,108,97,114,0,82,111,109,97,110,0,0,0,83,101,109,105,98,111,108,100,0,0,0,0,0,0,0,0,16,6,3,0,232,238,2,0,240,238,2,0,248,238,2,0,8,239,2,0,24,239,2,0,32,239,2,0,40,239,2,0,56,239,2,0,72,239,2,0,88,239,2,0,104,239,2,0,120,239,2,0,128,239,2,0,136,239,2,0,144,239,2,0,152,239,2,0,160,239,2,0,168,239,2,0,176,239,2,0,184,239,2,0,192,239,2,0,200,239,2,0,208,239,2,0,216,239,2,0,224,239,2,0,232,239,2,0,240,239,2,0,248,239,2,0,8,240,2,0,16,240,2,0,24,240,2,0,32,240,2,0,48,240,2,0,56,240,2,0,64,240,2,0,72,240,2,0,80,240,2,0,88,240,2,0,96,240,2,0,104,240,2,0,112,240,2,0,120,240,2,0,128,240,2,0,136,240,2,0,144,240,2,0,152,240,2,0,160,240,2,0,168,240,2,0,176,240,2,0,184,240,2,0,192,240,2,0,200,240,2,0,208,240,2,0,216,240,2,0,224,240,2,0,232,240,2,0,240,240,2,0,248,240,2,0,0,241,2,0,8,241,2,0,24,241,2,0,40,241,2,0,56,241,2,0,72,241,2,0,88,241,2,0,104,241,2,0,112,241,2,0,120,241,2,0,128,241,2,0,136,241,2,0,144,241,2,0,152,241,2,0,160,241,2,0,168,241,2,0,176,241,2,0,184,241,2,0,192,241,2,0,200,241,2,0,208,241,2,0,216,241,2,0,224,241,2,0,232,241,2,0,240,241,2,0,248,241,2,0,0,242,2,0,8,242,2,0,16,242,2,0,24,242,2,0,32,242,2,0,40,242,2,0,48,242,2,0,56,242,2,0,72,242,2,0,80,242,2,0,96,242,2,0,112,242,2,0,128,242,2,0,136,242,2,0,152,242,2,0,168,242,2,0,176,242,2,0,184,242,2,0,192,242,2,0,208,242,2,0,224,242,2,0,240,242,2,0,0,243,2,0,16,243,2,0,32,243,2,0,40,243,2,0,48,243,2,0,56,243,2,0,64,243,2,0,80,243,2,0,96,243,2,0,112,243,2,0,120,243,2,0,136,243,2,0,152,243,2,0,168,243,2,0,184,243,2,0,200,243,2,0,216,243,2,0,232,243,2,0,240,243,2,0,248,243,2,0,8,244,2,0,16,244,2,0,24,244,2,0,32,244,2,0,48,244,2,0,64,244,2,0,72,244,2,0,80,244,2,0,96,244,2,0,104,244,2,0,112,244,2,0,120,244,2,0,128,244,2,0,144,244,2,0,152,244,2,0,160,244,2,0,168,244,2,0,184,244,2,0,192,244,2,0,208,244,2,0,216,244,2,0,224,244,2,0,232,244,2,0,136,254,2,0,24,6,3,0,40,6,3,0,48,6,3,0,64,6,3,0,232,253,2,0,72,6,3,0,88,6,3,0,216,253,2,0,96,6,3,0,104,6,3,0,120,6,3,0,128,6,3,0,240,253,2,0,152,254,2,0,136,6,3,0,152,6,3,0,160,6,3,0,168,6,3,0,168,254,2,0,184,6,3,0,200,6,3,0,208,6,3,0,224,6,3,0,240,6,3,0,248,6,3,0,0,7,3,0,8,7,3,0,24,7,3,0,32,7,3,0,48,7,3,0,64,7,3,0,72,7,3,0,80,7,3,0,96,7,3,0,112,7,3,0,120,7,3,0,128,7,3,0,136,7,3,0,152,7,3,0,168,7,3,0,176,7,3,0,184,7,3,0,192,7,3,0,200,7,3,0,216,7,3,0,232,7,3,0,240,7,3,0,248,7,3,0,8,8,3,0,16,8,3,0,24,8,3,0,40,8,3,0,56,8,3,0,64,8,3,0,72,8,3,0,80,8,3,0,96,8,3,0,104,8,3,0,120,8,3,0,136,8,3,0,144,8,3,0,152,8,3,0,168,8,3,0,184,8,3,0,192,8,3,0,200,8,3,0,208,8,3,0,224,8,3,0,240,8,3,0,248,8,3,0,0,9,3,0,8,9,3,0,16,9,3,0,32,9,3,0,48,9,3,0,56,9,3,0,64,9,3,0,80,9,3,0,248,248,2,0,8,249,2,0,32,249,2,0,48,249,2,0,64,249,2,0,80,249,2,0,96,249,2,0,120,249,2,0,144,249,2,0,160,249,2,0,176,249,2,0,192,249,2,0,208,249,2,0,224,249,2,0,240,249,2,0,0,250,2,0,16,250,2,0,32,250,2,0,48,250,2,0,64,250,2,0,80,250,2,0,96,250,2,0,120,250,2,0,136,250,2,0,152,250,2,0,168,250,2,0,184,250,2,0,200,250,2,0,216,250,2,0,232,250,2,0,248,250,2,0,8,251,2,0,24,251,2,0,40,251,2,0,56,251,2,0,72,251,2,0,88,251,2,0,104,251,2,0,112,251,2,0,120,251,2,0,128,251,2,0,152,251,2,0,176,251,2,0,192,251,2,0,208,251,2,0,224,251,2,0,232,251,2,0,240,251,2,0,248,251,2,0,0,252,2,0,8,252,2,0,16,252,2,0,24,252,2,0,32,252,2,0,40,252,2,0,48,252,2,0,56,252,2,0,64,252,2,0,72,252,2,0,80,252,2,0,88,252,2,0,96,252,2,0,104,252,2,0,112,252,2,0,120,252,2,0,128,252,2,0,136,252,2,0,144,252,2,0,152,252,2,0,160,252,2,0,168,252,2,0,176,252,2,0,192,252,2,0,208,252,2,0,216,252,2,0,232,252,2,0,248,252,2,0,8,253,2,0,24,253,2,0,40,253,2,0,56,253,2,0,72,253,2,0,88,253,2,0,104,253,2,0,120,253,2,0,136,253,2,0,152,253,2,0,168,253,2,0,184,253,2,0,200,253,2,0,0,254,2,0,24,254,2,0,40,254,2,0,56,254,2,0,72,254,2,0,88,254,2,0,104,254,2,0,120,254,2,0,184,254,2,0,200,254,2,0,216,254,2,0,232,254,2,0,248,254,2,0,8,255,2,0,24,255,2,0,40,255,2,0,56,255,2,0,72,255,2,0,88,255,2,0,104,255,2,0,120,255,2,0,136,255,2,0,152,255,2,0,168,255,2,0,184,255,2,0,200,255,2,0,216,255,2,0,232,255,2,0,248,255,2,0,8,0,3,0,24,0,3,0,48,0,3,0,64,0,3,0,80,0,3,0,96,0,3,0,104,0,3,0,120,0,3,0,136,0,3,0,152,0,3,0,176,0,3,0,192,0,3,0,208,0,3,0,224,0,3,0,248,0,3,0,8,1,3,0,24,1,3,0,40,1,3,0,56,1,3,0,72,1,3,0,96,1,3,0,112,1,3,0,128,1,3,0,136,1,3,0,152,1,3,0,168,1,3,0,184,1,3,0,208,1,3,0,224,1,3,0,240,1,3,0,0,2,3,0,88,9,3,0,96,9,3,0,104,9,3,0,112,9,3,0,120,9,3,0,128,9,3,0,136,9,3,0,144,9,3,0,152,9,3,0,160,9,3,0,168,9,3,0,176,9,3,0,0,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,123,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,132,0,133,0,134,0,135,0,136,0,137,0,138,0,139,0,140,0,141,0,142,0,143,0,144,0,145,0,146,0,147,0,148,0,149,0,150,0,151,0,152,0,153,0,154,0,155,0,156,0,157,0,158,0,159,0,160,0,161,0,162,0,163,0,164,0,165,0,166,0,167,0,168,0,169,0,170,0,171,0,172,0,173,0,174,0,175,0,176,0,177,0,178,0,179,0,180,0,181,0,182,0,183,0,184,0,185,0,186,0,187,0,188,0,189,0,190,0,191,0,192,0,193,0,194,0,195,0,196,0,197,0,198,0,199,0,200,0,201,0,202,0,203,0,204,0,205,0,206,0,207,0,208,0,209,0,210,0,211,0,212,0,213,0,214,0,215,0,216,0,217,0,218,0,219,0,220,0,221,0,222,0,223,0,224,0,225,0,226,0,227,0,228,0,0,0,0,0,0,0,0,0,1,0,229,0,230,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,253,0,254,0,255,0,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,109,0,110,0,11,1,12,1,13,1,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,1,56,1,57,1,58,1,59,1,60,1,61,1,62,1,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,0,0,0,0,0,0,1,0,231,0,232,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,253,0,254,0,255,0,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,109,0,110,0,11,1,12,1,13,1,14,1,16,1,44,1,45,1,46,1,49,1,58,1,59,1,158,0,155,0,163,0,64,1,65,1,66,1,67,1,68,1,69,1,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,0,0,0,0,0,0,184,20,3,0,247,0,0,0,248,0,0,0,47,69,110,99,111,100,105,110,103,32,83,116,97,110,100,97,114,100,69,110,99,111,100,105,110,103,32,100,101,102,0,0,100,101,102,0,0,0,0,0,47,70,111,110,116,78,97,109,101,0,0,0,0,0,0,0,32,9,10,13,0,0,0,0,47,69,110,99,111,100,105,110,103,32,50,53,54,32,97,114,114,97,121,0,0,0,0,0,70,111,70,105,84,121,112,101,49,58,58,112,97,114,115,101,32,97,32,108,105,110,101,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,50,53,53,32,99,104,97,114,97,99,116,101,114,115,44,32,119,101,32,100,111,110,39,116,32,115,117,112,112,111,114,116,32,116,104,105,115,0,0,0,0,0,100,117,112,0,0,0,0,0,112,117,116,0,0,0,0,0,70,111,70,105,84,121,112,101,49,58,58,112,97,114,115,101,32,110,111,32,112,117,116,32,97,102,116,101,114,32,100,117,112,0,0,0,0,0,0,0,32,9,0,0,0,0,0,0,57,70,111,70,105,84,121,112,101,49,0,0,0,0,0,0,128,113,4,0,168,20,3,0,224,238,2,0,0,0,0,0,0,0,0,0,248,20,3,0,249,0,0,0,250,0,0,0,24,0,0,0,0,0,0,0,49,54,83,112,108,97,115,104,70,84,70,111,110,116,70,105,108,101,0,0,0,0,0,0,128,113,4,0,224,20,3,0,8,214,0,0,0,0,0,0,0,0,0,0,56,21,3,0,251,0,0,0,252,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,49,48,83,112,108,97,115,104,70,111,110,116,0,0,0,0,88,113,4,0,40,21,3,0,85,70,0,0,0,0,0,0,70,0,0,0,0,0,0,0,85,110,105,120,0,0,0,0,73,108,108,101,103,97,108,32,102,105,108,101,32,115,112,101,99,0,0,0,0,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,73,100,101,110,116,105,116,121,0,0,0,0,0,0,0,0,69,120,112,101,99,116,101,100,32,102,117,110,99,116,105,111,110,32,100,105,99,116,105,111,110,97,114,121,32,111,114,32,115,116,114,101,97,109,0,0,70,117,110,99,116,105,111,110,84,121,112,101,0,0,0,0,70,117,110,99,116,105,111,110,32,116,121,112,101,32,105,115,32,109,105,115,115,105,110,103,32,111,114,32,119,114,111,110,103,32,116,121,112,101,0,0,85,110,105,109,112,108,101,109,101,110,116,101,100,32,102,117,110,99,116,105,111,110,32,116,121,112,101,32,40,37,100,41,0,0,0,0,0,0,0,0,68,111,109,97,105,110,0,0,70,117,110,99,116,105,111,110,32,105,115,32,109,105,115,115,105,110,103,32,100,111,109,97,105,110,0,0,0,0,0,0,70,117,110,99,116,105,111,110,115,32,119,105,116,104,32,109,111,114,101,32,116,104,97,110,32,37,100,32,105,110,112,117,116,115,32,97,114,101,32,117,110,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,105,110,32,102,117,110,99,116,105,111,110,32,100,111,109,97,105,110,32,97,114,114,97,121,0,0,82,97,110,103,101,0,0,0,70,117,110,99,116,105,111,110,115,32,119,105,116,104,32,109,111,114,101,32,116,104,97,110,32,37,100,32,111,117,116,112,117,116,115,32,97,114,101,32,117,110,115,117,112,112,111,114,116,101,100,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,105,110,32,102,117,110,99,116,105,111,110,32,114,97,110,103,101,32,97,114,114,97,121,0,0,0,0,0,0,0,224,30,3,0,253,0,0,0,254,0,0,0,193,0,0,0,194,0,0,0,135,0,0,0,195,0,0,0,0,0,0,0,8,31,3,0,255,0,0,0,0,1,0,0,196,0,0,0,197,0,0,0,136,0,0,0,198,0,0,0,84,121,112,101,32,48,32,102,117,110,99,116,105,111,110,32,105,115,32,109,105,115,115,105,110,103,32,114,97,110,103,101,0,0,0,0,0,0,0,0,83,97,109,112,108,101,100,32,102,117,110,99,116,105,111,110,115,32,119,105,116,104,32,109,111,114,101,32,116,104,97,110,32,37,100,32,105,110,112,117,116,115,32,97,114,101,32,117,110,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,84,121,112,101,32,48,32,102,117,110,99,116,105,111,110,32,105,115,110,39,116,32,97,32,115,116,114,101,97,109,0,0,83,105,122,101,0,0,0,0,70,117,110,99,116,105,111,110,32,104,97,115,32,109,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,115,105,122,101,32,97,114,114,97,121,0,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,105,110,32,102,117,110,99,116,105,111,110,32,115,105,122,101,32,97,114,114,97,121,0,0,0,0,66,105,116,115,80,101,114,83,97,109,112,108,101,0,0,0,70,117,110,99,116,105,111,110,32,104,97,115,32,109,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,66,105,116,115,80,101,114,83,97,109,112,108,101,0,0,0,69,110,99,111,100,101,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,105,110,32,102,117,110,99,116,105,111,110,32,101,110,99,111,100,101,32,97,114,114,97,121,0,0,68,101,99,111,100,101,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,105,110,32,102,117,110,99,116,105,111,110,32,100,101,99,111,100,101,32,97,114,114,97,121,0,0,0,0,0,0,48,31,3,0,253,0,0,0,1,1,0,0,199,0,0,0,200,0,0,0,137,0,0,0,201,0,0,0,69,120,112,111,110,101,110,116,105,97,108,32,102,117,110,99,116,105,111,110,32,119,105,116,104,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,105,110,112,117,116,0,0,0,67,48,0,0,0,0,0,0,70,117,110,99,116,105,111,110,39,115,32,67,48,32,97,114,114,97,121,32,105,115,32,119,114,111,110,103,32,108,101,110,103,116,104,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,105,110,32,102,117,110,99,116,105,111,110,32,67,48,32,97,114,114,97,121,0,0,0,0,0,0,67,49,0,0,0,0,0,0,70,117,110,99,116,105,111,110,39,115,32,67,49,32,97,114,114,97,121,32,105,115,32,119,114,111,110,103,32,108,101,110,103,116,104,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,105,110,32,102,117,110,99,116,105,111,110,32,67,49,32,97,114,114,97,121,0,0,0,0,0,0,78,0,0,0,0,0,0,0,70,117,110,99,116,105,111,110,32,104,97,115,32,109,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,78,0,0,0,0,0,0,0,0,0,0,0,88,31,3,0,2,1,0,0,3,1,0,0,202,0,0,0,203,0,0,0,138,0,0,0,204,0,0,0,83,116,105,116,99,104,105,110,103,32,102,117,110,99,116,105,111,110,32,119,105,116,104,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,105,110,112,117,116,0,0,0,0,0,70,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,39,70,117,110,99,116,105,111,110,115,39,32,101,110,116,114,121,32,105,110,32,115,116,105,116,99,104,105,110,103,32,102,117,110,99,116,105,111,110,0,73,110,99,111,109,112,97,116,105,98,108,101,32,115,117,98,102,117,110,99,116,105,111,110,115,32,105,110,32,115,116,105,116,99,104,105,110,103,32,102,117,110,99,116,105,111,110,0,66,111,117,110,100,115,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,39,66,111,117,110,100,115,39,32,101,110,116,114,121,32,105,110,32,115,116,105,116,99,104,105,110,103,32,102,117,110,99,116,105,111,110,0,73,110,118,97,108,105,100,32,116,121,112,101,32,105,110,32,39,66,111,117,110,100,115,39,32,97,114,114,97,121,32,105,110,32,115,116,105,116,99,104,105,110,103,32,102,117,110,99,116,105,111,110,0,0,0,0,77,105,115,115,105,110,103,32,111,114,32,105,110,118,97,108,105,100,32,39,69,110,99,111,100,101,39,32,101,110,116,114,121,32,105,110,32,115,116,105,116,99,104,105,110,103,32,102,117,110,99,116,105,111,110,0,73,110,118,97,108,105,100,32,116,121,112,101,32,105,110,32,39,69,110,99,111,100,101,39,32,97,114,114,97,121,32,105,110,32,115,116,105,116,99,104,105,110,103,32,102,117,110,99,116,105,111,110,0,0,0,0,83,116,97,99,107,32,117,110,100,101,114,102,108,111,119,32,105,110,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,128,31,3,0,4,1,0,0,5,1,0,0,205,0,0,0,206,0,0,0,139,0,0,0,207,0,0,0,84,121,112,101,32,52,32,102,117,110,99,116,105,111,110,32,105,115,32,109,105,115,115,105,110,103,32,114,97,110,103,101,0,0,0,0,0,0,0,0,84,121,112,101,32,52,32,102,117,110,99,116,105,111,110,32,105,115,110,39,116,32,97,32,115,116,114,101,97,109,0,0,123,0,0,0,0,0,0,0,69,120,112,101,99,116,101,100,32,39,123,39,32,97,116,32,115,116,97,114,116,32,111,102,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,101,110,100,32,111,102,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,32,115,116,114,101,97,109,0,0,0,0,105,102,0,0,0,0,0,0,71,111,116,32,39,105,102,39,32,111,112,101,114,97,116,111,114,32,119,105,116,104,32,116,119,111,32,98,108,111,99,107,115,32,105,110,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,105,102,101,108,115,101,0,0,71,111,116,32,39,105,102,101,108,115,101,39,32,111,112,101,114,97,116,111,114,32,119,105,116,104,32,111,110,101,32,98,108,111,99,107,115,32,105,110,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,0,0,0,0,69,120,112,101,99,116,101,100,32,105,102,47,105,102,101,108,115,101,32,111,112,101,114,97,116,111,114,32,105,110,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,125,0,0,0,0,0,0,0,184,31,3,0,192,31,3,0,200,31,3,0,208,31,3,0,216,31,3,0,232,31,3,0,240,31,3,0,248,31,3,0,0,32,3,0,8,32,3,0,16,32,3,0,24,32,3,0,32,32,3,0,40,32,3,0,48,32,3,0,56,32,3,0,64,32,3,0,72,32,3,0,80,32,3,0,88,32,3,0,96,32,3,0,104,32,3,0,112,32,3,0,120,32,3,0,128,32,3,0,136,32,3,0,144,32,3,0,152,32,3,0,160,32,3,0,168,32,3,0,176,32,3,0,184,32,3,0,192,32,3,0,200,32,3,0,208,32,3,0,216,32,3,0,224,32,3,0,232,32,3,0,240,32,3,0,0,33,3,0,85,110,107,110,111,119,110,32,111,112,101,114,97,116,111,114,32,39,37,115,39,32,105,110,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,0,0,0,0,73,110,116,101,114,110,97,108,58,32,98,97,100,32,111,98,106,101,99,116,32,105,110,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,32,99,111,100,101,0,0,0,0,0,0,0,0,49,54,73,100,101,110,116,105,116,121,70,117,110,99,116,105,111,110,0,0,0,0,0,0,56,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,88,113,4,0,200,30,3,0,128,113,4,0,176,30,3,0,216,30,3,0,0,0,0,0,49,53,83,97,109,112,108,101,100,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,128,113,4,0,240,30,3,0,216,30,3,0,0,0,0,0,49,57,69,120,112,111,110,101,110,116,105,97,108,70,117,110,99,116,105,111,110,0,0,0,128,113,4,0,24,31,3,0,216,30,3,0,0,0,0,0,49,55,83,116,105,116,99,104,105,110,103,70,117,110,99,116,105,111,110,0,0,0,0,0,128,113,4,0,64,31,3,0,216,30,3,0,0,0,0,0,49,56,80,111,115,116,83,99,114,105,112,116,70,117,110,99,116,105,111,110,0,0,0,0,128,113,4,0,104,31,3,0,216,30,3,0,0,0,0,0,84,121,112,101,32,109,105,115,109,97,116,99,104,32,105,110,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,0,0,0,0,97,98,115,0,0,0,0,0,97,100,100,0,0,0,0,0,97,110,100,0,0,0,0,0,97,116,97,110,0,0,0,0,98,105,116,115,104,105,102,116,0,0,0,0,0,0,0,0,99,101,105,108,105,110,103,0,99,111,112,121,0,0,0,0,99,111,115,0,0,0,0,0,99,118,105,0,0,0,0,0,99,118,114,0,0,0,0,0,100,105,118,0,0,0,0,0,100,117,112,0,0,0,0,0,101,113,0,0,0,0,0,0,101,120,99,104,0,0,0,0,101,120,112,0,0,0,0,0,102,97,108,115,101,0,0,0,102,108,111,111,114,0,0,0,103,101,0,0,0,0,0,0,103,116,0,0,0,0,0,0,105,100,105,118,0,0,0,0,105,110,100,101,120,0,0,0,108,101,0,0,0,0,0,0,108,110,0,0,0,0,0,0,108,111,103], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+194676); -/* memory initializer */ allocate([108,116,0,0,0,0,0,0,109,111,100,0,0,0,0,0,109,117,108,0,0,0,0,0,110,101,0,0,0,0,0,0,110,101,103,0,0,0,0,0,110,111,116,0,0,0,0,0,111,114,0,0,0,0,0,0,112,111,112,0,0,0,0,0,114,111,108,108,0,0,0,0,114,111,117,110,100,0,0,0,115,105,110,0,0,0,0,0,115,113,114,116,0,0,0,0,115,117,98,0,0,0,0,0,116,114,117,101,0,0,0,0,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,0,120,111,114,0,0,0,0,0,0,0,0,0,56,33,3,0,6,1,0,0,7,1,0,0,23,0,0,0,0,0,0,0,50,49,80,111,115,116,83,99,114,105,112,116,70,117,110,99,116,105,111,110,75,101,121,0,128,113,4,0,32,33,3,0,88,235,2,0,0,0,0,0,0,0,0,0,120,33,3,0,8,1,0,0,9,1,0,0,50,50,80,111,115,116,83,99,114,105,112,116,70,117,110,99,116,105,111,110,73,116,101,109,0,0,0,0,0,0,0,0,128,113,4,0,88,33,3,0,120,235,2,0,0,0,0,0,83,116,97,99,107,32,111,118,101,114,102,108,111,119,32,105,110,32,80,111,115,116,83,99,114,105,112,116,32,102,117,110,99,116,105,111,110,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,0,0,0,67,97,108,108,32,116,111,32,79,98,106,101,99,116,32,119,104,101,114,101,32,116,104,101,32,111,98,106,101,99,116,32,119,97,115,32,116,121,112,101,32,37,100,44,32,110,111,116,32,116,104,101,32,101,120,112,101,99,116,101,100,32,116,121,112,101,32,37,100,32,111,114,32,37,100,0,0,0,0,0,0,0,1,86,0,0,1,52,0,0,1,24,0,0,193,10,0,0,33,5,0,0,33,2,0,0,1,86,0,0,1,84,0,0,1,72,0,0,1,56,0,0,1,48,0,0,1,36,0,0,1,28,0,0,1,22,0,0,1,86,0,0,1,84,0,0,1,81,0,0,1,72,0,0,1,56,0,0,1,52,0,0,1,48,0,0,1,40,0,0,1,36,0,0,1,34,0,0,1,28,0,0,1,24,0,0,1,22,0,0,1,20,0,0,1,18,0,0,1,17,0,0,193,10,0,0,193,9,0,0,161,8,0,0,33,5,0,0,65,4,0,0,161,2,0,0,33,2,0,0,65,1,0,0,17,1,0,0,133,0,0,0,73,0,0,0,37,0,0,0,21,0,0,0,9,0,0,0,5,0,0,0,1,0,0,0,1,86,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,38,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,29,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,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,44,0,0,0,45,0,0,0,45,0,0,0,46,0,0,0,0,0,0,0,1,0,0,0,6,0,0,0,9,0,0,0,12,0,0,0,29,0,0,0,33,0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,17,0,0,0,18,0,0,0,20,0,0,0,21,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,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,46,0,0,0,0,0,0,0,1,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,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,37,3,0,10,1,0,0,11,1,0,0,2,0,0,0,3,0,0,0,24,0,0,0,2,0,0,0,25,0,0,0,26,0,0,0,25,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,49,50,83,112,108,97,115,104,70,84,70,111,110,116,0,0,128,113,4,0,128,37,3,0,56,21,3,0,0,0,0,0,116,114,117,101,116,121,112,101,0,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,116,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,116,121,112,101,52,50,0,0,208,37,3,0,0,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,5,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,7,0,0,0,15,0,0,0,8,0,0,0,46,65,112,112,108,101,68,111,117,98,108,101,47,0,0,0,37,0,0,0,0,0,0,0,46,114,101,115,111,117,114,99,101,47,0,0,0,0,0,0,114,101,115,111,117,114,99,101,46,102,114,107,47,0,0,0,47,114,115,114,99,0,0,0,47,46,46,110,97,109,101,100,102,111,114,107,47,114,115,114,99,0,0,0,0,0,0,0,46,95,0,0,0,0,0,0,79,84,84,79,0,0,0,0,99,102,102,0,0,0,0,0,116,121,112,101,49,0,0,0,99,105,100,0,0,0,0,0,52,0,0,0,115,116,105,98,27,0,0,0,12,1,0,0,28,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,40,0,0,0,108,116,117,111,29,0,0,0,13,1,0,0,30,0,0,0,140,0,0,0,69,0,0,0,31,0,0,0,24,0,0,0,32,0,0,0,14,1,0,0,33,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,99,102,0,0,0,0,0,1,2,0,0,40,0,0,0,32,39,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,72,1,0,0,44,0,0,0,160,0,0,0,16,0,0,0,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,26,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,37,0,0,0,49,48,54,52,54,0,0,0,56,56,53,57,0,0,0,0,49,0,0,0,0,0,0,0,70,65,77,73,76,89,95,78,65,77,69,0,0,0,0,0,65,86,69,82,65,71,69,95,87,73,68,84,72,0,0,0,80,79,73,78,84,95,83,73,90,69,0,0,0,0,0,0,80,73,88,69,76,95,83,73,90,69,0,0,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,88,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,89,0,0,0,0,67,72,65,82,83,69,84,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,83,76,65,78,84,0,0,0,79,98,108,105,113,117,101,0,73,116,97,108,105,99,0,0,87,69,73,71,72,84,95,78,65,77,69,0,0,0,0,0,66,111,108,100,0,0,0,0,83,69,84,87,73,68,84,72,95,78,65,77,69,0,0,0,65,68,68,95,83,84,89,76,69,95,78,65,77,69,0,0,82,101,103,117,108,97,114,0,4,0,12,0,13,2,0,0,13,2,2,0,13,2,4,0,13,2,6,0,13,2,8,0,13,2,10,0,0,0,0,0,4,0,12,0,15,2,0,0,15,2,2,0,15,2,4,0,15,2,6,0,15,2,8,0,15,2,10,0,0,0,0,0,4,0,5,0,8,1,0,0,8,1,1,0,8,1,2,0,8,1,3,0,8,1,4,0,0,0,0,0,0,0,0,0,4,0,20,0,8,1,0,0,8,1,1,0,8,1,2,0,8,1,3,0,8,1,4,0,8,1,5,0,8,1,6,0,25,1,0,0,17,4,8,0,17,4,12,0,17,4,16,0,0,0,0,0,0,0,0,0,4,0,20,0,8,1,0,0,8,1,1,0,8,1,2,0,8,1,3,0,8,1,4,0,8,1,5,0,8,1,6,0,25,1,0,0,19,4,8,0,19,4,12,0,19,4,16,0,0,0,0,0,0,0,0,0,4,0,9,0,17,4,0,0,8,1,4,0,17,4,8,0,0,0,0,0,0,0,0,0,4,0,9,0,19,4,0,0,8,1,4,0,19,4,8,0,0,0,0,0,0,0,0,0,4,0,8,0,18,4,0,0,18,4,4,0,0,0,0,0,4,0,16,0,18,4,0,0,18,4,4,0,18,4,8,0,18,4,12,0,0,0,0,0,208,41,3,0,216,41,3,0,224,41,3,0,248,41,3,0,0,0,0,0,0,0,0,0,98,100,102,0,0,0,0,0,27,0,0,0,28,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,80,67,70,0,0,0,0,0,24,0,0,0,38,0,0,0,16,1,0,0,39,0,0,0,40,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,6,0,0,0,29,0,0,0,0,0,0,0,112,102,114,0,0,0,0,0,1,1,0,0,40,0,0,0,56,42,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,184,1,0,0,44,0,0,0,196,0,0,0,19,0,0,0,17,1,0,0,0,0,0,0,0,0,0,0,208,0,0,0,18,1,0,0,17,0,0,0,26,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,30,0,0,0,2,0,0,0,31,0,0,0,3,0,0,0,32,0,0,0,4,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,4,0,58,0,16,4,0,0,12,4,4,0,12,4,8,0,12,4,12,0,12,4,16,0,12,4,20,0,12,4,24,0,20,4,28,0,20,4,32,0,12,4,36,0,20,4,40,0,20,4,44,0,12,4,48,0,20,4,52,0,20,4,56,0,8,4,60,0,8,4,64,0,8,4,68,0,8,4,72,0,8,4,76,0,20,4,80,0,20,4,84,0,20,4,88,0,12,4,92,0,8,4,96,0,8,4,100,0,12,4,104,0,0,0,0,0,0,0,0,0,96,43,3,0,40,42,3,0,112,43,3,0,136,43,3,0,0,0,0,0,0,0,0,0,112,102,114,45,109,101,116,114,105,99,115,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,80,70,82,0,0,0,0,0,34,0,0,0,19,1,0,0,9,0,0,0,20,1,0,0,28,0,0,0,21,1,0,0,22,1,0,0,23,1,0,0,209,0,0,0,42,0,0,0,20,0,0,0,35,0,0,0,10,0,0,0,70,0,0,0,29,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,1,0,0,0,24,1,0,0,43,0,0,0,30,0,0,0,36,0,0,0,210,0,0,0,37,0,0,0,25,1,0,0,4,0,0,0,26,1,0,0,38,0,0,0,0,0,0,0,11,0,0,0,27,1,0,0,211,0,0,0,0,0,0,0,32,0,0,0,44,0,0,0,28,1,0,0,45,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,47,0,0,0,28,1,0,0,45,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,48,0,0,0,29,1,0,0,49,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,51,0,0,0,30,1,0,0,52,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,44,3,0,64,44,3,0,104,44,3,0,144,44,3,0,112,115,97,117,120,0,0,0,144,43,3,0,160,43,3,0,216,43,3,0,248,43,3,0,141,0,0,0,184,44,3,0,8,44,3,0,0,0,0,0,0,0,0,0,20,0,0,0,200,44,3,0,0,0,2,0,0,0,2,0,208,44,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,116,97,114,116,70,111,110,116,77,101,116,114,105,99,115,0,0,0,0,0,0,0,0,116,114,117,101,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,224,46,3,0,240,46,3,0,0,47,3,0,16,47,3,0,24,47,3,0,40,47,3,0,56,47,3,0,80,47,3,0,88,47,3,0,96,47,3,0,104,47,3,0,120,47,3,0,136,47,3,0,152,47,3,0,168,47,3,0,184,47,3,0,200,47,3,0,208,47,3,0,224,47,3,0,240,47,3,0,0,48,3,0,16,48,3,0,32,48,3,0,48,48,3,0,64,48,3,0,72,48,3,0,88,48,3,0,104,48,3,0,120,48,3,0,136,48,3,0,152,48,3,0,168,48,3,0,184,48,3,0,200,48,3,0,216,48,3,0,224,48,3,0,232,48,3,0,240,48,3,0,248,48,3,0,0,49,3,0,16,49,3,0,32,49,3,0,40,49,3,0,48,49,3,0,56,49,3,0,72,49,3,0,96,49,3,0,112,49,3,0,24,45,3,0,128,49,3,0,144,49,3,0,160,49,3,0,176,49,3,0,192,49,3,0,208,49,3,0,216,49,3,0,224,49,3,0,240,49,3,0,8,50,3,0,32,50,3,0,40,50,3,0,48,50,3,0,56,50,3,0,64,50,3,0,72,50,3,0,80,50,3,0,88,50,3,0,96,50,3,0,104,50,3,0,112,50,3,0,120,50,3,0,128,50,3,0,136,50,3,0,152,50,3,0,65,115,99,101,110,100,101,114,0,0,0,0,0,0,0,0,65,120,105,115,76,97,98,101,108,0,0,0,0,0,0,0,65,120,105,115,84,121,112,101,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,66,108,101,110,100,65,120,105,115,84,121,112,101,115,0,0,66,108,101,110,100,68,101,115,105,103,110,77,97,112,0,0,66,108,101,110,100,68,101,115,105,103,110,80,111,115,105,116,105,111,110,115,0,0,0,0,67,0,0,0,0,0,0,0,67,67,0,0,0,0,0,0,67,72,0,0,0,0,0,0,67,97,112,72,101,105,103,104,116,0,0,0,0,0,0,0,67,104,97,114,87,105,100,116,104,0,0,0,0,0,0,0,67,104,97,114,97,99,116,101,114,83,101,116,0,0,0,0,67,104,97,114,97,99,116,101,114,115,0,0,0,0,0,0,68,101,115,99,101,110,100,101,114,0,0,0,0,0,0,0,69,110,99,111,100,105,110,103,83,99,104,101,109,101,0,0,69,110,100,65,120,105,115,0,69,110,100,67,104,97,114,77,101,116,114,105,99,115,0,0,69,110,100,67,111,109,112,111,115,105,116,101,115,0,0,0,69,110,100,68,105,114,101,99,116,105,111,110,0,0,0,0,69,110,100,70,111,110,116,77,101,116,114,105,99,115,0,0,69,110,100,75,101,114,110,68,97,116,97,0,0,0,0,0,69,110,100,75,101,114,110,80,97,105,114,115,0,0,0,0,69,110,100,84,114,97,99,107,75,101,114,110,0,0,0,0,69,115,99,67,104,97,114,0,70,97,109,105,108,121,78,97,109,101,0,0,0,0,0,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,70,111,110,116,78,97,109,101,0,0,0,0,0,0,0,0,70,117,108,108,78,97,109,101,0,0,0,0,0,0,0,0,73,115,66,97,115,101,70,111,110,116,0,0,0,0,0,0,73,115,67,73,68,70,111,110,116,0,0,0,0,0,0,0,73,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,73,115,70,105,120,101,100,86,0,0,0,0,0,0,0,0,73,116,97,108,105,99,65,110,103,108,101,0,0,0,0,0,75,80,0,0,0,0,0,0,75,80,72,0,0,0,0,0,75,80,88,0,0,0,0,0,75,80,89,0,0,0,0,0,76,0,0,0,0,0,0,0,77,97,112,112,105,110,103,83,99,104,101,109,101,0,0,0,77,101,116,114,105,99,115,83,101,116,115,0,0,0,0,0,78,0,0,0,0,0,0,0,78,111,116,105,99,101,0,0,80,67,67,0,0,0,0,0,83,116,97,114,116,65,120,105,115,0,0,0,0,0,0,0,83,116,97,114,116,67,104,97,114,77,101,116,114,105,99,115,0,0,0,0,0,0,0,0,83,116,97,114,116,67,111,109,112,111,115,105,116,101,115,0,83,116,97,114,116,68,105,114,101,99,116,105,111,110,0,0,83,116,97,114,116,75,101,114,110,68,97,116,97,0,0,0,83,116,97,114,116,75,101,114,110,80,97,105,114,115,0,0,83,116,97,114,116,75,101,114,110,80,97,105,114,115,48,0,83,116,97,114,116,75,101,114,110,80,97,105,114,115,49,0,83,116,97,114,116,84,114,97,99,107,75,101,114,110,0,0,83,116,100,72,87,0,0,0,83,116,100,86,87,0,0,0,84,114,97,99,107,75,101,114,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,84,104,105,99,107,110,101,115,115,0,0,0,0,0,0,86,86,0,0,0,0,0,0,86,86,101,99,116,111,114,0,86,101,114,115,105,111,110,0,87,0,0,0,0,0,0,0,87,48,0,0,0,0,0,0,87,48,88,0,0,0,0,0,87,48,89,0,0,0,0,0,87,49,0,0,0,0,0,0,87,49,88,0,0,0,0,0,87,49,89,0,0,0,0,0,87,88,0,0,0,0,0,0,87,89,0,0,0,0,0,0,87,101,105,103,104,116,0,0,87,101,105,103,104,116,86,101,99,116,111,114,0,0,0,0,88,72,101,105,103,104,116,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,5,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,6,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,2,0,0,0,6,0,0,0,2,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,112,115,104,105,110,116,101,114,0,0,0,0,0,0,0,0,212,0,0,0,213,0,0,0,214,0,0,0,0,0,0,0,0,0,0,0,176,0,0,0,40,51,3,0,0,0,1,0,0,0,2,0,56,51,3,0,215,0,0,0,31,1,0,0,0,0,0,0,0,0,0,0,112,115,110,97,109,101,115,0,216,0,0,0,1,0,0,0,54,0,0,0,55,0,0,0,217,0,0,0,218,0,0,0,232,51,3,0,232,53,3,0,0,0,0,0,20,0,0,0,112,51,3,0,0,0,1,0,0,0,2,0,120,51,3,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,208,51,3,0,120,51,3,0,0,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,0,0,111,0,112,0,113,0,114,0,0,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,0,0,123,0,0,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,0,0,132,0,133,0,0,0,134,0,135,0,136,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,0,139,0,0,0,0,0,0,0,0,0,140,0,141,0,142,0,143,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,145,0,0,0,0,0,146,0,147,0,148,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,229,0,230,0,0,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,0,0,253,0,254,0,255,0,0,1,1,1,0,0,0,0,0,0,2,1,0,0,0,0,3,1,4,1,5,1,6,1,0,0,0,0,7,1,8,1,9,1,0,0,10,1,109,0,110,0,11,1,12,1,13,1,0,0,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,49,1,50,1,0,0,0,0,51,1,52,1,53,1,54,1,55,1,0,0,56,1,0,0,0,0,57,1,0,0,0,0,58,1,59,1,0,0,0,0,60,1,61,1,62,1,0,0,0,0,0,0,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,0,0,0,0,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,46,110,117,108,108,0,110,111,110,109,97,114,107,105,110,103,114,101,116,117,114,110,0,110,111,116,101,113,117,97,108,0,105,110,102,105,110,105,116,121,0,108,101,115,115,101,113,117,97,108,0,103,114,101,97,116,101,114,101,113,117,97,108,0,112,97,114,116,105,97,108,100,105,102,102,0,115,117,109,109,97,116,105,111,110,0,112,114,111,100,117,99,116,0,112,105,0,105,110,116,101,103,114,97,108,0,79,109,101,103,97,0,114,97,100,105,99,97,108,0,97,112,112,114,111,120,101,113,117,97,108,0,68,101,108,116,97,0,110,111,110,98,114,101,97,107,105,110,103,115,112,97,99,101,0,108,111,122,101,110,103,101,0,97,112,112,108,101,0,102,114,97,110,99,0,71,98,114,101,118,101,0,103,98,114,101,118,101,0,73,100,111,116,97,99,99,101,110,116,0,83,99,101,100,105,108,108,97,0,115,99,101,100,105,108,108,97,0,67,97,99,117,116,101,0,99,97,99,117,116,101,0,67,99,97,114,111,110,0,99,99,97,114,111,110,0,100,99,114,111,97,116,0,46,110,111,116,100,101,102,0,115,112,97,99,101,0,101,120,99,108,97,109,0,113,117,111,116,101,100,98,108,0,110,117,109,98,101,114,115,105,103,110,0,100,111,108,108,97,114,0,112,101,114,99,101,110,116,0,97,109,112,101,114,115,97,110,100,0,113,117,111,116,101,114,105,103,104,116,0,112,97,114,101,110,108,101,102,116,0,112,97,114,101,110,114,105,103,104,116,0,97,115,116,101,114,105,115,107,0,112,108,117,115,0,99,111,109,109,97,0,104,121,112,104,101,110,0,112,101,114,105,111,100,0,115,108,97,115,104,0,122,101,114,111,0,111,110,101,0,116,119,111,0,116,104,114,101,101,0,102,111,117,114,0,102,105,118,101,0,115,105,120,0,115,101,118,101,110,0,101,105,103,104,116,0,110,105,110,101,0,99,111,108,111,110,0,115,101,109,105,99,111,108,111,110,0,108,101,115,115,0,101,113,117,97,108,0,103,114,101,97,116,101,114,0,113,117,101,115,116,105,111,110,0,97,116,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,98,114,97,99,107,101,116,108,101,102,116,0,98,97,99,107,115,108,97,115,104,0,98,114,97,99,107,101,116,114,105,103,104,116,0,97,115,99,105,105,99,105,114,99,117,109,0,117,110,100,101,114,115,99,111,114,101,0,113,117,111,116,101,108,101,102,116,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,98,114,97,99,101,108,101,102,116,0,98,97,114,0,98,114,97,99,101,114,105,103,104,116,0,97,115,99,105,105,116,105,108,100,101,0,101,120,99,108,97,109,100,111,119,110,0,99,101,110,116,0,115,116,101,114,108,105,110,103,0,102,114,97,99,116,105,111,110,0,121,101,110,0,102,108,111,114,105,110,0,115,101,99,116,105,111,110,0,99,117,114,114,101,110,99,121,0,113,117,111,116,101,115,105,110,103,108,101,0,113,117,111,116,101,100,98,108,108,101,102,116,0,103,117,105,108,108,101,109,111,116,108,101,102,116,0,103,117,105,108,115,105,110,103,108,108,101,102,116,0,103,117,105,108,115,105,110,103,108,114,105,103,104,116,0,102,105,0,102,108,0,101,110,100,97,115,104,0,100,97,103,103,101,114,0,100,97,103,103,101,114,100,98,108,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,112,97,114,97,103,114,97,112,104,0,98,117,108,108,101,116,0,113,117,111,116,101,115,105,110,103,108,98,97,115,101,0,113,117,111,116,101,100,98,108,98,97,115,101,0,113,117,111,116,101,100,98,108,114,105,103,104,116,0,103,117,105,108,108,101,109,111,116,114,105,103,104,116,0,101,108,108,105,112,115,105,115,0,112,101,114,116,104,111,117,115,97,110,100,0,113,117,101,115,116,105,111,110,100,111,119,110,0,103,114,97,118,101,0,97,99,117,116,101,0,99,105,114,99,117,109,102,108,101,120,0,116,105,108,100,101,0,109,97,99,114,111,110,0,98,114,101,118,101,0,100,111,116,97,99,99,101,110,116,0,100,105,101,114,101,115,105,115,0,114,105,110,103,0,99,101,100,105,108,108,97,0,104,117,110,103,97,114,117,109,108,97,117,116,0,111,103,111,110,101,107,0,99,97,114,111,110,0,101,109,100,97,115,104,0,65,69,0,111,114,100,102,101,109,105,110,105,110,101,0,76,115,108,97,115,104,0,79,115,108,97,115,104,0,79,69,0,111,114,100,109,97,115,99,117,108,105,110,101,0,97,101,0,100,111,116,108,101,115,115,105,0,108,115,108,97,115,104,0,111,115,108,97,115,104,0,111,101,0,103,101,114,109,97,110,100,98,108,115,0,111,110,101,115,117,112,101,114,105,111,114,0,108,111,103,105,99,97,108,110,111,116,0,109,117,0,116,114,97,100,101,109,97,114,107,0,69,116,104,0,111,110,101,104,97,108,102,0,112,108,117,115,109,105,110,117,115,0,84,104,111,114,110,0,111,110,101,113,117,97,114,116,101,114,0,100,105,118,105,100,101,0,98,114,111,107,101,110,98,97,114,0,100,101,103,114,101,101,0,116,104,111,114,110,0,116,104,114,101,101,113,117,97,114,116,101,114,115,0,116,119,111,115,117,112,101,114,105,111,114,0,114,101,103,105,115,116,101,114,101,100,0,109,105,110,117,115,0,101,116,104,0,109,117,108,116,105,112,108,121,0,116,104,114,101,101,115,117,112,101,114,105,111,114,0,99,111,112,121,114,105,103,104,116,0,65,97,99,117,116,101,0,65,99,105,114,99,117,109,102,108,101,120,0,65,100,105,101,114,101,115,105,115,0,65,103,114,97,118,101,0,65,114,105,110,103,0,65,116,105,108,100,101,0,67,99,101,100,105,108,108,97,0,69,97,99,117,116,101,0,69,99,105,114,99,117,109,102,108,101,120,0,69,100,105,101,114,101,115,105,115,0,69,103,114,97,118,101,0,73,97,99,117,116,101,0,73,99,105,114,99,117,109,102,108,101,120,0,73,100,105,101,114,101,115,105,115,0,73,103,114,97,118,101,0,78,116,105,108,100,101,0,79,97,99,117,116,101,0,79,99,105,114,99,117,109,102,108,101,120,0,79,100,105,101,114,101,115,105,115,0,79,103,114,97,118,101,0,79,116,105,108,100,101,0,83,99,97,114,111,110,0,85,97,99,117,116,101,0,85,99,105,114,99,117,109,102,108,101,120,0,85,100,105,101,114,101,115,105,115,0,85,103,114,97,118,101,0,89,97,99,117,116,101,0,89,100,105,101,114,101,115,105,115,0,90,99,97,114,111,110,0,97,97,99,117,116,101,0,97,99,105,114,99,117,109,102,108,101,120,0,97,100,105,101,114,101,115,105,115,0,97,103,114,97,118,101,0,97,114,105,110,103,0,97,116,105,108,100,101,0,99,99,101,100,105,108,108,97,0,101,97,99,117,116,101,0,101,99,105,114,99,117,109,102,108,101,120,0,101,100,105,101,114,101,115,105,115,0,101,103,114,97,118,101,0,105,97,99,117,116,101,0,105,99,105,114,99,117,109,102,108,101,120,0,105,100,105,101,114,101,115,105,115,0,105,103,114,97,118,101,0,110,116,105,108,100,101,0,111,97,99,117,116,101,0,111,99,105,114,99,117,109,102,108,101,120,0,111,100,105,101,114,101,115,105,115,0,111,103,114,97,118,101,0,111,116,105,108,100,101,0,115,99,97,114,111,110,0,117,97,99,117,116,101,0,117,99,105,114,99,117,109,102,108,101,120,0,117,100,105,101,114,101,115,105,115,0,117,103,114,97,118,101,0,121,97,99,117,116,101,0,121,100,105,101,114,101,115,105,115,0,122,99,97,114,111,110,0,101,120,99,108,97,109,115,109,97,108,108,0,72,117,110,103,97,114,117,109,108,97,117,116,115,109,97,108,108,0,100,111,108,108,97,114,111,108,100,115,116,121,108,101,0,100,111,108,108,97,114,115,117,112,101,114,105,111,114,0,97,109,112,101,114,115,97,110,100,115,109,97,108,108,0,65,99,117,116,101,115,109,97,108,108,0,112,97,114,101,110,108,101,102,116,115,117,112,101,114,105,111,114,0,112,97,114,101,110,114,105,103,104,116,115,117,112,101,114,105,111,114,0,116,119,111,100,111,116,101,110,108,101,97,100,101,114,0,111,110,101,100,111,116,101,110,108,101,97,100,101,114,0,122,101,114,111,111,108,100,115,116,121,108,101,0,111,110,101,111,108,100,115,116,121,108,101,0,116,119,111,111,108,100,115,116,121,108,101,0,116,104,114,101,101,111,108,100,115,116,121,108,101,0,102,111,117,114,111,108,100,115,116,121,108,101,0,102,105,118,101,111,108,100,115,116,121,108,101,0,115,105,120,111,108,100,115,116,121,108,101,0,115,101,118,101,110,111,108,100,115,116,121,108,101,0,101,105,103,104,116,111,108,100,115,116,121,108,101,0,110,105,110,101,111,108,100,115,116,121,108,101,0,99,111,109,109,97,115,117,112,101,114,105,111,114,0,116,104,114,101,101,113,117,97,114,116,101,114,115,101,109,100,97,115,104,0,112,101,114,105,111,100,115,117,112,101,114,105,111,114,0,113,117,101,115,116,105,111,110,115,109,97,108,108,0,97,115,117,112,101,114,105,111,114,0,98,115,117,112,101,114,105,111,114,0,99,101,110,116,115,117,112,101,114,105,111,114,0,100,115,117,112,101,114,105,111,114,0,101,115,117,112,101,114,105,111,114,0,105,115,117,112,101,114,105,111,114,0,108,115,117,112,101,114,105,111,114,0,109,115,117,112,101,114,105,111,114,0,110,115,117,112,101,114,105,111,114,0,111,115,117,112,101,114,105,111,114,0,114,115,117,112,101,114,105,111,114,0,115,115,117,112,101,114,105,111,114,0,116,115,117,112,101,114,105,111,114,0,102,102,0,102,102,105,0,102,102,108,0,112,97,114,101,110,108,101,102,116,105,110,102,101,114,105,111,114,0,112,97,114,101,110,114,105,103,104,116,105,110,102,101,114,105,111,114,0,67,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,104,121,112,104,101,110,115,117,112,101,114,105,111,114,0,71,114,97,118,101,115,109,97,108,108,0,65,115,109,97,108,108,0,66,115,109,97,108,108,0,67,115,109,97,108,108,0,68,115,109,97,108,108,0,69,115,109,97,108,108,0,70,115,109,97,108,108,0,71,115,109,97,108,108,0,72,115,109,97,108,108,0,73,115,109,97,108,108,0,74,115,109,97,108,108,0,75,115,109,97,108,108,0,76,115,109,97,108,108,0,77,115,109,97,108,108,0,78,115,109,97,108,108,0,79,115,109,97,108,108,0,80,115,109,97,108,108,0,81,115,109,97,108,108,0,82,115,109,97,108,108,0,83,115,109,97,108,108,0,84,115,109,97,108,108,0,85,115,109,97,108,108,0,86,115,109,97,108,108,0,87,115,109,97,108,108,0,88,115,109,97,108,108,0,89,115,109,97,108,108,0,90,115,109,97,108,108,0,99,111,108,111,110,109,111,110,101,116,97,114,121,0,111,110,101,102,105,116,116,101,100,0,114,117,112,105,97,104,0,84,105,108,100,101,115,109,97,108,108,0,101,120,99,108,97,109,100,111,119,110,115,109,97,108,108,0,99,101,110,116,111,108,100,115,116,121,108,101,0,76,115,108,97,115,104,115,109,97,108,108,0,83,99,97,114,111,110,115,109,97,108,108,0,90,99,97,114,111,110,115,109,97,108,108,0,68,105,101,114,101,115,105,115,115,109,97,108,108,0,66,114,101,118,101,115,109,97,108,108,0,67,97,114,111,110,115,109,97,108,108,0,68,111,116,97,99,99,101,110,116,115,109,97,108,108,0,77,97,99,114,111,110,115,109,97,108,108,0,102,105,103,117,114,101,100,97,115,104,0,104,121,112,104,101,110,105,110,102,101,114,105,111,114,0,79,103,111,110,101,107,115,109,97,108,108,0,82,105,110,103,115,109,97,108,108,0,67,101,100,105,108,108,97,115,109,97,108,108,0,113,117,101,115,116,105,111,110,100,111,119,110,115,109,97,108,108,0,111,110,101,101,105,103,104,116,104,0,116,104,114,101,101,101,105,103,104,116,104,115,0,102,105,118,101,101,105,103,104,116,104,115,0,115,101,118,101,110,101,105,103,104,116,104,115,0,111,110,101,116,104,105,114,100,0,116,119,111,116,104,105,114,100,115,0,122,101,114,111,115,117,112,101,114,105,111,114,0,102,111,117,114,115,117,112,101,114,105,111,114,0,102,105,118,101,115,117,112,101,114,105,111,114,0,115,105,120,115,117,112,101,114,105,111,114,0,115,101,118,101,110,115,117,112,101,114,105,111,114,0,101,105,103,104,116,115,117,112,101,114,105,111,114,0,110,105,110,101,115,117,112,101,114,105,111,114,0,122,101,114,111,105,110,102,101,114,105,111,114,0,111,110,101,105,110,102,101,114,105,111,114,0,116,119,111,105,110,102,101,114,105,111,114,0,116,104,114,101,101,105,110,102,101,114,105,111,114,0,102,111,117,114,105,110,102,101,114,105,111,114,0,102,105,118,101,105,110,102,101,114,105,111,114,0,115,105,120,105,110,102,101,114,105,111,114,0,115,101,118,101,110,105,110,102,101,114,105,111,114,0,101,105,103,104,116,105,110,102,101,114,105,111,114,0,110,105,110,101,105,110,102,101,114,105,111,114,0,99,101,110,116,105,110,102,101,114,105,111,114,0,100,111,108,108,97,114,105,110,102,101,114,105,111,114,0,112,101,114,105,111,100,105,110,102,101,114,105,111,114,0,99,111,109,109,97,105,110,102,101,114,105,111,114,0,65,103,114,97,118,101,115,109,97,108,108,0,65,97,99,117,116,101,115,109,97,108,108,0,65,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,65,116,105,108,100,101,115,109,97,108,108,0,65,100,105,101,114,101,115,105,115,115,109,97,108,108,0,65,114,105,110,103,115,109,97,108,108,0,65,69,115,109,97,108,108,0,67,99,101,100,105,108,108,97,115,109,97,108,108,0,69,103,114,97,118,101,115,109,97,108,108,0,69,97,99,117,116,101,115,109,97,108,108,0,69,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,69,100,105,101,114,101,115,105,115,115,109,97,108,108,0,73,103,114,97,118,101,115,109,97,108,108,0,73,97,99,117,116,101,115,109,97,108,108,0,73,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,73,100,105,101,114,101,115,105,115,115,109,97,108,108,0,69,116,104,115,109,97,108,108,0,78,116,105,108,100,101,115,109,97,108,108,0,79,103,114,97,118,101,115,109,97,108,108,0,79,97,99,117,116,101,115,109,97,108,108,0,79,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,79,116,105,108,100,101,115,109,97,108,108,0,79,100,105,101,114,101,115,105,115,115,109,97,108,108,0,79,69,115,109,97,108,108,0,79,115,108,97,115,104,115,109,97,108,108,0,85,103,114,97,118,101,115,109,97,108,108,0,85,97,99,117,116,101,115,109,97,108,108,0,85,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,85,100,105,101,114,101,115,105,115,115,109,97,108,108,0,89,97,99,117,116,101,115,109,97,108,108,0,84,104,111,114,110,115,109,97,108,108,0,89,100,105,101,114,101,115,105,115,115,109,97,108,108,0,48,48,49,46,48,48,48,0,48,48,49,46,48,48,49,0,48,48,49,46,48,48,50,0,48,48,49,46,48,48,51,0,66,108,97,99,107,0,66,111,108,100,0,66,111,111,107,0,76,105,103,104,116,0,77,101,100,105,117,109,0,82,101,103,117,108,97,114,0,82,111,109,97,110,0,83,101,109,105,98,111,108,100,0,253,0,5,1,11,1,18,1,27,1,38,1,45,1,53,1,63,1,74,1,84,1,95,1,104,1,109,1,115,1,122,1,129,1,135,1,140,1,144,1,148,1,154,1,159,1,164,1,168,1,174,1,180,1,185,1,191,1,201,1,206,1,212,1,220,1,229,1,232,1,234,1,236,1,238,1,240,1,242,1,244,1,246,1,248,1,250,1,252,1,254,1,0,2,2,2,4,2,6,2,8,2,10,2,12,2,14,2,16,2,18,2,20,2,22,2,24,2,26,2,28,2,40,2,50,2,63,2,75,2,86,2,96,2,98,2,100,2,102,2,104,2,106,2,108,2,110,2,112,2,114,2,116,2,118,2,120,2,122,2,124,2,126,2,128,2,130,2,132,2,134,2,136,2,138,2,140,2,142,2,144,2,146,2,148,2,158,2,162,2,173,2,184,2,195,2,200,2,209,2,218,2,222,2,229,2,237,2,246,2,2,3,15,3,29,3,43,3,58,3,61,3,64,3,71,3,78,3,88,3,103,3,113,3,120,3,135,3,148,3,162,3,177,3,186,3,198,3,211,3,217,3,223,3,234,3,240,3,247,3,253,3,7,4,16,4,21,4,29,4,42,4,49,4,55,4,62,4,65,4,77,4,84,4,91,4,94,4,107,4,110,4,119,4,126,4,133,4,136,4,147,4,159,4,170,4,173,4,183,4,187,4,195,4,205,4,211,4,222,4,229,4,239,4,246,4,252,4,10,5,22,5,33,5,39,5,43,5,52,5,66,5,76,5,83,5,95,5,105,5,112,5,118,5,125,5,134,5,141,5,153,5,163,5,170,5,177,5,189,5,199,5,206,5,213,5,220,5,232,5,242,5,249,5,0,6,7,6,14,6,26,6,36,6,43,6,50,6,60,6,67,6,74,6,86,6,96,6,103,6,109,6,116,6,125,6,132,6,144,6,154,6,161,6,168,6,180,6,190,6,197,6,204,6,211,6,223,6,233,6,240,6,247,6,254,6,5,7,17,7,27,7,34,7,41,7,51,7,58,7,70,7,88,7,103,7,118,7,133,7,144,7,162,7,181,7,196,7,211,7,224,7,236,7,248,7,6,8,19,8,32,8,44,8,58,8,72,8,85,8,99,8,119,8,134,8,148,8,158,8,168,8,181,8,191,8,201,8,211,8,221,8,231,8,241,8,251,8,5,9,15,9,25,9,28,9,32,9,36,9,54,9,73,9,89,9,104,9,115,9,122,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+204920); -/* memory initializer */ allocate([129,9,136,9,143,9,150,9,157,9,164,9,171,9,178,9,185,9,192,9,199,9,206,9,213,9,220,9,227,9,234,9,241,9,248,9,255,9,6,10,13,10,20,10,27,10,34,10,41,10,55,10,65,10,72,10,83,10,99,10,112,10,124,10,136,10,148,10,162,10,173,10,184,10,199,10,211,10,222,10,237,10,249,10,3,11,16,11,34,11,44,11,57,11,69,11,82,11,91,11,101,11,114,11,127,11,140,11,152,11,166,11,180,11,193,11,206,11,218,11,230,11,244,11,1,12,14,12,26,12,40,12,54,12,67,12,80,12,95,12,110,12,124,12,136,12,148,12,165,12,177,12,192,12,203,12,211,12,225,12,237,12,249,12,10,13,25,13,37,13,49,13,66,13,81,13,90,13,102,13,114,13,126,13,143,13,155,13,170,13,178,13,190,13,202,13,214,13,231,13,246,13,2,14,13,14,28,14,36,14,44,14,52,14,60,14,66,14,71,14,76,14,82,14,89,14,97,14,103,14,0,0,253,0,0,0,6,0,5,1,11,1,18,1,27,1,38,1,45,1,53,1,246,2,74,1,84,1,95,1,104,1,109,1,115,1,122,1,129,1,135,1,140,1,144,1,148,1,154,1,159,1,164,1,168,1,174,1,180,1,185,1,191,1,201,1,206,1,212,1,220,1,229,1,232,1,234,1,236,1,238,1,240,1,242,1,244,1,246,1,248,1,250,1,252,1,254,1,0,2,2,2,4,2,6,2,8,2,10,2,12,2,14,2,16,2,18,2,20,2,22,2,24,2,26,2,28,2,40,2,50,2,63,2,75,2,211,3,96,2,98,2,100,2,102,2,104,2,106,2,108,2,110,2,112,2,114,2,116,2,118,2,120,2,122,2,124,2,126,2,128,2,130,2,132,2,134,2,136,2,138,2,140,2,142,2,144,2,146,2,148,2,158,2,162,2,173,2,95,5,112,5,125,5,134,5,206,5,232,5,26,6,67,6,96,6,74,6,86,6,109,6,103,6,116,6,125,6,154,6,132,6,144,6,161,6,190,6,168,6,180,6,197,6,204,6,233,6,211,6,223,6,240,6,254,6,27,7,5,7,17,7,71,3,239,4,195,2,200,2,229,2,113,3,103,3,136,4,22,5,66,5,173,4,217,3,7,4,23,0,62,4,84,4,32,0,195,4,41,0,51,0,218,2,170,4,64,0,76,0,86,0,94,0,97,0,65,4,94,4,106,0,107,4,126,4,198,3,184,2,159,4,112,0,222,2,120,0,132,0,15,3,162,3,177,3,138,0,105,5,118,5,249,5,91,4,133,4,64,3,55,4,2,3,148,3,86,2,63,1,222,4,155,0,41,7,50,6,209,2,237,2,29,3,43,3,58,3,61,3,78,3,88,3,120,3,135,3,186,3,83,5,141,5,76,5,153,5,163,5,170,5,177,5,189,5,199,5,213,5,220,5,163,0,242,5,7,6,14,6,36,6,110,4,223,3,234,3,240,3,247,3,253,3,16,4,21,4,29,4,42,4,49,4,77,4,119,4,0,6,247,6,60,6,51,7,229,4,183,4,39,5,43,6,34,7,205,4,246,4,33,5,43,5,147,4,10,5,52,5,187,4,211,4,252,4,169,0,175,0,182,0,189,0,200,0,209,0,218,0,225,0,232,0,239,0,246,0,0,0,0,0,148,3,0,0,169,3,0,0,21,34,0,0,173,0,0,0,201,2,0,0,188,3,0,0,25,34,0,0,160,0,0,0,26,2,0,0,27,2,0,0,68,101,108,116,97,0,79,109,101,103,97,0,102,114,97,99,116,105,111,110,0,104,121,112,104,101,110,0,109,97,99,114,111,110,0,109,117,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,115,112,97,99,101,0,84,99,111,109,109,97,97,99,99,101,110,116,0,116,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,0,0,0,0,6,0,0,0,12,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,38,0,0,0,53,0,0,0,59,0,0,0,72,0,0,0,0,52,0,106,2,167,3,63,4,220,6,125,9,143,10,23,11,137,12,199,14,246,15,87,16,233,17,219,18,104,19,88,22,110,23,32,23,71,24,77,27,156,29,73,31,247,32,107,32,222,33,55,34,154,35,218,53,84,59,196,68,6,75,183,83,178,88,135,93,242,101,165,109,185,111,55,117,254,123,73,130,238,138,206,145,31,153,182,156,189,163,249,178,221,193,17,197,99,199,240,204,27,204,155,210,100,65,143,0,65,0,140,0,175,0,193,1,15,1,147,1,233,1,251,2,7,2,40,2,57,2,82,2,91,2,128,2,136,2,154,69,131,0,198,0,150,0,158,0,167,225,227,245,244,101,128,1,252,237,225,227,242,239,110,128,1,226,243,237,225,236,108,128,247,230,225,227,245,244,101,129,0,193,0,185,243,237,225,236,108,128,247,225,226,242,229,246,101,134,1,2,0,213,0,221,0,232,0,243,0,251,1,7,225,227,245,244,101,128,30,174,227,249,242,233,236,236,233,99,128,4,208,228,239,244,226,229,236,239,119,128,30,182,231,242,225,246,101,128,30,176,232,239,239,235,225,226,239,246,101,128,30,178,244,233,236,228,101,128,30,180,99,4,1,25,1,32,1,121,1,137,225,242,239,110,128,1,205,233,242,99,2,1,40,1,45,236,101,128,36,182,245,237,230,236,229,120,134,0,194,1,66,1,74,1,85,1,93,1,105,1,113,225,227,245,244,101,128,30,164,228,239,244,226,229,236,239,119,128,30,172,231,242,225,246,101,128,30,166,232,239,239,235,225,226,239,246,101,128,30,168,243,237,225,236,108,128,247,226,244,233,236,228,101,128,30,170,245,244,101,129,246,201,1,129,243,237,225,236,108,128,247,180,249,242,233,236,236,233,99,128,4,16,100,3,1,155,1,165,1,209,226,236,231,242,225,246,101,128,2,0,233,229,242,229,243,233,115,131,0,196,1,181,1,192,1,201,227,249,242,233,236,236,233,99,128,4,210,237,225,227,242,239,110,128,1,222,243,237,225,236,108,128,247,228,239,116,2,1,216,1,224,226,229,236,239,119,128,30,160,237,225,227,242,239,110,128,1,224,231,242,225,246,101,129,0,192,1,243,243,237,225,236,108,128,247,224,232,239,239,235,225,226,239,246,101,128,30,162,105,2,2,13,2,25,229,227,249,242,233,236,236,233,99,128,4,212,238,246,229,242,244,229,228,226,242,229,246,101,128,2,2,236,240,232,97,129,3,145,2,49,244,239,238,239,115,128,3,134,109,2,2,63,2,71,225,227,242,239,110,128,1,0,239,238,239,243,240,225,227,101,128,255,33,239,231,239,238,229,107,128,1,4,242,233,238,103,131,0,197,2,104,2,112,2,120,225,227,245,244,101,128,1,250,226,229,236,239,119,128,30,0,243,237,225,236,108,128,247,229,243,237,225,236,108,128,247,97,244,233,236,228,101,129,0,195,2,146,243,237,225,236,108,128,247,227,249,226,225,242,237,229,238,233,225,110,128,5,49,66,137,0,66,2,189,2,198,2,223,3,3,3,10,3,22,3,34,3,46,3,54,227,233,242,227,236,101,128,36,183,228,239,116,2,2,206,2,215,225,227,227,229,238,116,128,30,2,226,229,236,239,119,128,30,4,101,3,2,231,2,242,2,254,227,249,242,233,236,236,233,99,128,4,17,238,225,242,237,229,238,233,225,110,128,5,50,244,97,128,3,146,232,239,239,107,128,1,129,236,233,238,229,226,229,236,239,119,128,30,6,237,239,238,239,243,240,225,227,101,128,255,34,242,229,246,229,243,237,225,236,108,128,246,244,243,237,225,236,108,128,247,98,244,239,240,226,225,114,128,1,130,67,137,0,67,3,85,3,127,3,193,3,210,3,224,4,171,4,188,4,200,4,212,97,3,3,93,3,104,3,111,225,242,237,229,238,233,225,110,128,5,62,227,245,244,101,128,1,6,242,239,110,129,246,202,3,119,243,237,225,236,108,128,246,245,99,3,3,135,3,142,3,171,225,242,239,110,128,1,12,229,228,233,236,236,97,130,0,199,3,155,3,163,225,227,245,244,101,128,30,8,243,237,225,236,108,128,247,231,233,242,99,2,3,179,3,184,236,101,128,36,184,245,237,230,236,229,120,128,1,8,228,239,116,129,1,10,3,201,225,227,227,229,238,116,128,1,10,229,228,233,236,236,225,243,237,225,236,108,128,247,184,104,4,3,234,3,246,4,161,4,165,225,225,242,237,229,238,233,225,110,128,5,73,101,6,4,4,4,24,4,35,4,103,4,115,4,136,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,188,227,249,242,233,236,236,233,99,128,4,39,100,2,4,41,4,85,229,243,227,229,238,228,229,114,2,4,54,4,74,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,190,227,249,242,233,236,236,233,99,128,4,182,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,244,232,225,242,237,229,238,233,225,110,128,5,67,235,232,225,235,225,243,243,233,225,238,227,249,242,233,236,236,233,99,128,4,203,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,184,105,128,3,167,239,239,107,128,1,135,233,242,227,245,237,230,236,229,248,243,237,225,236,108,128,246,246,237,239,238,239,243,240,225,227,101,128,255,35,239,225,242,237,229,238,233,225,110,128,5,81,243,237,225,236,108,128,247,99,68,142,0,68,4,252,5,10,5,36,5,96,5,121,5,166,5,173,5,231,5,244,6,0,6,12,6,28,6,48,6,57,90,129,1,241,5,2,227,225,242,239,110,128,1,196,97,2,5,16,5,27,225,242,237,229,238,233,225,110,128,5,52,230,242,233,227,225,110,128,1,137,99,4,5,46,5,53,5,62,5,89,225,242,239,110,128,1,14,229,228,233,236,236,97,128,30,16,233,242,99,2,5,70,5,75,236,101,128,36,185,245,237,230,236,229,248,226,229,236,239,119,128,30,18,242,239,225,116,128,1,16,228,239,116,2,5,104,5,113,225,227,227,229,238,116,128,30,10,226,229,236,239,119,128,30,12,101,3,5,129,5,140,5,150,227,249,242,233,236,236,233,99,128,4,20,233,227,239,240,244,233,99,128,3,238,236,244,97,129,34,6,5,158,231,242,229,229,107,128,3,148,232,239,239,107,128,1,138,105,2,5,179,5,218,229,242,229,243,233,115,131,246,203,5,194,5,202,5,210,193,227,245,244,101,128,246,204,199,242,225,246,101,128,246,205,243,237,225,236,108,128,247,168,231,225,237,237,225,231,242,229,229,107,128,3,220,234,229,227,249,242,233,236,236,233,99,128,4,2,236,233,238,229,226,229,236,239,119,128,30,14,237,239,238,239,243,240,225,227,101,128,255,36,239,244,225,227,227,229,238,244,243,237,225,236,108,128,246,247,115,2,6,34,6,41,236,225,243,104,128,1,16,237,225,236,108,128,247,100,244,239,240,226,225,114,128,1,139,122,131,1,242,6,67,6,75,6,112,227,225,242,239,110,128,1,197,101,2,6,81,6,101,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,224,227,249,242,233,236,236,233,99,128,4,5,232,229,227,249,242,233,236,236,233,99,128,4,15,69,146,0,69,6,165,6,183,6,191,7,89,7,153,7,165,7,183,7,211,8,7,8,36,8,94,8,169,8,189,8,208,8,248,9,44,9,109,9,115,225,227,245,244,101,129,0,201,6,175,243,237,225,236,108,128,247,233,226,242,229,246,101,128,1,20,99,5,6,203,6,210,6,224,6,236,7,79,225,242,239,110,128,1,26,229,228,233,236,236,225,226,242,229,246,101,128,30,28,232,225,242,237,229,238,233,225,110,128,5,53,233,242,99,2,6,244,6,249,236,101,128,36,186,245,237,230,236,229,120,135,0,202,7,16,7,24,7,32,7,43,7,51,7,63,7,71,225,227,245,244,101,128,30,190,226,229,236,239,119,128,30,24,228,239,244,226,229,236,239,119,128,30,198,231,242,225,246,101,128,30,192,232,239,239,235,225,226,239,246,101,128,30,194,243,237,225,236,108,128,247,234,244,233,236,228,101,128,30,196,249,242,233,236,236,233,99,128,4,4,100,3,7,97,7,107,7,127,226,236,231,242,225,246,101,128,2,4,233,229,242,229,243,233,115,129,0,203,7,119,243,237,225,236,108,128,247,235,239,116,130,1,22,7,136,7,145,225,227,227,229,238,116,128,1,22,226,229,236,239,119,128,30,184,230,227,249,242,233,236,236,233,99,128,4,36,231,242,225,246,101,129,0,200,7,175,243,237,225,236,108,128,247,232,104,2,7,189,7,200,225,242,237,229,238,233,225,110,128,5,55,239,239,235,225,226,239,246,101,128,30,186,105,3,7,219,7,230,7,245,231,232,244,242,239,237,225,110,128,33,103,238,246,229,242,244,229,228,226,242,229,246,101,128,2,6,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,100,108,2,8,13,8,24,227,249,242,233,236,236,233,99,128,4,27,229,246,229,238,242,239,237,225,110,128,33,106,109,3,8,44,8,72,8,83,225,227,242,239,110,130,1,18,8,56,8,64,225,227,245,244,101,128,30,22,231,242,225,246,101,128,30,20,227,249,242,233,236,236,233,99,128,4,28,239,238,239,243,240,225,227,101,128,255,37,110,4,8,104,8,115,8,135,8,154,227,249,242,233,236,236,233,99,128,4,29,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,162,103,129,1,74,8,141,232,229,227,249,242,233,236,236,233,99,128,4,164,232,239,239,235,227,249,242,233,236,236,233,99,128,4,199,111,2,8,175,8,183,231,239,238,229,107,128,1,24,240,229,110,128,1,144,240,243,233,236,239,110,129,3,149,8,200,244,239,238,239,115,128,3,136,114,2,8,214,8,225,227,249,242,233,236,236,233,99,128,4,32,229,246,229,242,243,229,100,129,1,142,8,237,227,249,242,233,236,236,233,99,128,4,45,115,4,9,2,9,13,9,33,9,37,227,249,242,233,236,236,233,99,128,4,33,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,170,104,128,1,169,237,225,236,108,128,247,101,116,3,9,52,9,78,9,92,97,130,3,151,9,60,9,70,242,237,229,238,233,225,110,128,5,56,244,239,238,239,115,128,3,137,104,129,0,208,9,84,243,237,225,236,108,128,247,240,233,236,228,101,129,30,188,9,101,226,229,236,239,119,128,30,26,245,242,111,128,32,172,250,104,130,1,183,9,124,9,132,227,225,242,239,110,128,1,238,242,229,246,229,242,243,229,100,128,1,184,70,136,0,70,9,163,9,172,9,184,9,212,9,219,9,248,10,4,10,15,227,233,242,227,236,101,128,36,187,228,239,244,225,227,227,229,238,116,128,30,30,101,2,9,190,9,202,232,225,242,237,229,238,233,225,110,128,5,86,233,227,239,240,244,233,99,128,3,228,232,239,239,107,128,1,145,105,2,9,225,9,238,244,225,227,249,242,233,236,236,233,99,128,4,114,246,229,242,239,237,225,110,128,33,100,237,239,238,239,243,240,225,227,101,128,255,38,239,245,242,242,239,237,225,110,128,33,99,243,237,225,236,108,128,247,102,71,140,0,71,10,51,10,61,10,107,10,115,10,176,10,193,10,205,11,39,11,52,11,65,11,90,11,107,194,243,241,245,225,242,101,128,51,135,97,3,10,69,10,76,10,94,227,245,244,101,128,1,244,237,237,97,129,3,147,10,84,225,230,242,233,227,225,110,128,1,148,238,231,233,225,227,239,240,244,233,99,128,3,234,226,242,229,246,101,128,1,30,99,4,10,125,10,132,10,141,10,163,225,242,239,110,128,1,230,229,228,233,236,236,97,128,1,34,233,242,99,2,10,149,10,154,236,101,128,36,188,245,237,230,236,229,120,128,1,28,239,237,237,225,225,227,227,229,238,116,128,1,34,228,239,116,129,1,32,10,184,225,227,227,229,238,116,128,1,32,229,227,249,242,233,236,236,233,99,128,4,19,104,3,10,213,10,226,11,33,225,228,225,242,237,229,238,233,225,110,128,5,66,101,3,10,234,10,255,11,16,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,148,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,146,245,240,244,245,242,238,227,249,242,233,236,236,233,99,128,4,144,239,239,107,128,1,147,233,237,225,242,237,229,238,233,225,110,128,5,51,234,229,227,249,242,233,236,236,233,99,128,4,3,109,2,11,71,11,79,225,227,242,239,110,128,30,32,239,238,239,243,240,225,227,101,128,255,39,242,225,246,101,129,246,206,11,99,243,237,225,236,108,128,247,96,115,2,11,113,11,129,237,225,236,108,129,247,103,11,122,232,239,239,107,128,2,155,244,242,239,235,101,128,1,228,72,140,0,72,11,165,11,190,11,198,11,208,12,17,12,40,12,77,12,117,12,129,12,157,12,165,12,189,177,184,53,3,11,175,11,180,11,185,179,51,128,37,207,180,51,128,37,170,181,49,128,37,171,178,178,176,183,51,128,37,161,208,243,241,245,225,242,101,128,51,203,97,3,11,216,11,236,12,0,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,168,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,178,242,228,243,233,231,238,227,249,242,233,236,236,233,99,128,4,42,98,2,12,23,12,28,225,114,128,1,38,242,229,246,229,226,229,236,239,119,128,30,42,99,2,12,46,12,55,229,228,233,236,236,97,128,30,40,233,242,99,2,12,63,12,68,236,101,128,36,189,245,237,230,236,229,120,128,1,36,100,2,12,83,12,93,233,229,242,229,243,233,115,128,30,38,239,116,2,12,100,12,109,225,227,227,229,238,116,128,30,34,226,229,236,239,119,128,30,36,237,239,238,239,243,240,225,227,101,128,255,40,111,2,12,135,12,146,225,242,237,229,238,233,225,110,128,5,64,242,233,227,239,240,244,233,99,128,3,232,243,237,225,236,108,128,247,104,245,238,231,225,242,245,237,236,225,245,116,129,246,207,12,181,243,237,225,236,108,128,246,248,250,243,241,245,225,242,101,128,51,144,73,146,0,73,12,239,12,251,12,255,13,11,13,29,13,37,13,94,13,181,13,214,13,224,13,242,13,254,14,48,14,86,14,99,14,166,14,187,14,205,193,227,249,242,233,236,236,233,99,128,4,47,74,128,1,50,213,227,249,242,233,236,236,233,99,128,4,46,225,227,245,244,101,129,0,205,13,21,243,237,225,236,108,128,247,237,226,242,229,246,101,128,1,44,99,3,13,45,13,52,13,84,225,242,239,110,128,1,207,233,242,99,2,13,60,13,65,236,101,128,36,190,245,237,230,236,229,120,129,0,206,13,76,243,237,225,236,108,128,247,238,249,242,233,236,236,233,99,128,4,6,100,3,13,102,13,112,13,155,226,236,231,242,225,246,101,128,2,8,233,229,242,229,243,233,115,131,0,207,13,128,13,136,13,147,225,227,245,244,101,128,30,46,227,249,242,233,236,236,233,99,128,4,228,243,237,225,236,108,128,247,239,239,116,130,1,48,13,164,13,173,225,227,227,229,238,116,128,1,48,226,229,236,239,119,128,30,202,101,2,13,187,13,203,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,214,227,249,242,233,236,236,233,99,128,4,21,230,242,225,235,244,245,114,128,33,17,231,242,225,246,101,129,0,204,13,234,243,237,225,236,108,128,247,236,232,239,239,235,225,226,239,246,101,128,30,200,105,3,14,6,14,17,14,32,227,249,242,233,236,236,233,99,128,4,24,238,246,229,242,244,229,228,226,242,229,246,101,128,2,10,243,232,239,242,244,227,249,242,233,236,236,233,99,128,4,25,109,2,14,54,14,75,225,227,242,239,110,129,1,42,14,64,227,249,242,233,236,236,233,99,128,4,226,239,238,239,243,240,225,227,101,128,255,41,238,233,225,242,237,229,238,233,225,110,128,5,59,111,3,14,107,14,118,14,126,227,249,242,233,236,236,233,99,128,4,1,231,239,238,229,107,128,1,46,244,97,131,3,153,14,137,14,147,14,158,225,230,242,233,227,225,110,128,1,150,228,233,229,242,229,243,233,115,128,3,170,244,239,238,239,115,128,3,138,115,2,14,172,14,179,237,225,236,108,128,247,105,244,242,239,235,101,128,1,151,244,233,236,228,101,129,1,40,14,197,226,229,236,239,119,128,30,44,250,232,233,244,243,97,2,14,216,14,227,227,249,242,233,236,236,233,99,128,4,116,228,226,236,231,242,225,246,229,227,249,242,233,236,236,233,99,128,4,118,74,134,0,74,15,6,15,18,15,41,15,53,15,67,15,79,225,225,242,237,229,238,233,225,110,128,5,65,227,233,242,99,2,15,27,15,32,236,101,128,36,191,245,237,230,236,229,120,128,1,52,229,227,249,242,233,236,236,233,99,128,4,8,232,229,232,225,242,237,229,238,233,225,110,128,5,75,237,239,238,239,243,240,225,227,101,128,255,42,243,237,225,236,108,128,247,106,75,140,0,75,15,115,15,125,15,135,16,18,16,65,16,76,16,106,16,143,16,156,16,168,16,180,16,208,194,243,241,245,225,242,101,128,51,133,203,243,241,245,225,242,101,128,51,205,97,7,15,151,15,169,15,191,15,211,15,226,15,232,15,249,226,225,243,232,235,233,242,227,249,242,233,236,236,233,99,128,4,160,99,2,15,175,15,181,245,244,101,128,30,48,249,242,233,236,236,233,99,128,4,26,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,154,232,239,239,235,227,249,242,233,236,236,233,99,128,4,195,240,240,97,128,3,154,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,158,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,156,99,4,16,28,16,35,16,44,16,52,225,242,239,110,128,1,232,229,228,233,236,236,97,128,1,54,233,242,227,236,101,128,36,192,239,237,237,225,225,227,227,229,238,116,128,1,54,228,239,244,226,229,236,239,119,128,30,50,101,2,16,82,16,94,232,225,242,237,229,238,233,225,110,128,5,84,238,225,242,237,229,238,233,225,110,128,5,63,104,3,16,114,16,126,16,137,225,227,249,242,233,236,236,233,99,128,4,37,229,233,227,239,240,244,233,99,128,3,230,239,239,107,128,1,152,234,229,227,249,242,233,236,236,233,99,128,4,12,236,233,238,229,226,229,236,239,119,128,30,52,237,239,238,239,243,240,225,227,101,128,255,43,239,240,240,97,2,16,189,16,200,227,249,242,233,236,236,233,99,128,4,128,231,242,229,229,107,128,3,222,115,2,16,214,16,226,233,227,249,242,233,236,236,233,99,128,4,110,237,225,236,108,128,247,107,76,138,0,76,17,1,17,5,17,9,17,29,17,95,17,133,17,147,17,165,17,177,17,189,74,128,1,199,76,128,246,191,97,2,17,15,17,22,227,245,244,101,128,1,57,237,226,228,97,128,3,155,99,4,17,39,17,46,17,55,17,82,225,242,239,110,128,1,61,229,228,233,236,236,97,128,1,59,233,242,99,2,17,63,17,68,236,101,128,36,193,245,237,230,236,229,248,226,229,236,239,119,128,30,60,239,237,237,225,225,227,227,229,238,116,128,1,59,228,239,116,130,1,63,17,105,17,114,225,227,227,229,238,116,128,1,63,226,229,236,239,119,129,30,54,17,124,237,225,227,242,239,110,128,30,56,233,247,238,225,242,237,229,238,233,225,110,128,5,60,106,129,1,200,17,153,229,227,249,242,233,236,236,233,99,128,4,9,236,233,238,229,226,229,236,239,119,128,30,58,237,239,238,239,243,240,225,227,101,128,255,44,115,2,17,195,17,212,236,225,243,104,129,1,65,17,204,243,237,225,236,108,128,246,249,237,225,236,108,128,247,108,77,137,0,77,17,241,17,251,18,24,18,33,18,58,18,71,18,83,18,91,18,100,194,243,241,245,225,242,101,128,51,134,225,99,2,18,2,18,18,242,239,110,129,246,208,18,10,243,237,225,236,108,128,247,175,245,244,101,128,30,62,227,233,242,227,236,101,128,36,194,228,239,116,2,18,41,18,50,225,227,227,229,238,116,128,30,64,226,229,236,239,119,128,30,66,229,238,225,242,237,229,238,233,225,110,128,5,68,237,239,238,239,243,240,225,227,101,128,255,45,243,237,225,236,108,128,247,109,244,245,242,238,229,100,128,1,156,117,128,3,156,78,141,0,78,18,134,18,138,18,146,18,212,18,237,18,248,19,3,19,21,19,33,19,45,19,58,19,66,19,84,74,128,1,202,225,227,245,244,101,128,1,67,99,4,18,156,18,163,18,172,18,199,225,242,239,110,128,1,71,229,228,233,236,236,97,128,1,69,233,242,99,2,18,180,18,185,236,101,128,36,195,245,237,230,236,229,248,226,229,236,239,119,128,30,74,239,237,237,225,225,227,227,229,238,116,128,1,69,228,239,116,2,18,220,18,229,225,227,227,229,238,116,128,30,68,226,229,236,239,119,128,30,70,232,239,239,235,236,229,230,116,128,1,157,233,238,229,242,239,237,225,110,128,33,104,106,129,1,203,19,9,229,227,249,242,233,236,236,233,99,128,4,10,236,233,238,229,226,229,236,239,119,128,30,72,237,239,238,239,243,240,225,227,101,128,255,46,239,247,225,242,237,229,238,233,225,110,128,5,70,243,237,225,236,108,128,247,110,244,233,236,228,101,129,0,209,19,76,243,237,225,236,108,128,247,241,117,128,3,157,79,141,0,79,19,118,19,132,19,150,19,203,20,78,20,152,20,187,21,48,21,69,21,213,21,223,21,254,22,53,69,129,1,82,19,124,243,237,225,236,108,128,246,250,225,227,245,244,101,129,0,211,19,142,243,237,225,236,108,128,247,243,98,2,19,156,19,196,225,242,242,229,100,2,19,166,19,177,227,249,242,233,236,236,233,99,128,4,232,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,234,242,229,246,101,128,1,78,99,4,19,213,19,220,19,235,20,68,225,242,239,110,128,1,209,229,238,244,229,242,229,228,244,233,236,228,101,128,1,159,233,242,99,2,19,243,19,248,236,101,128,36,196,245,237,230,236,229,120,134,0,212,20,13,20,21,20,32,20,40,20,52,20,60,225,227,245,244,101,128,30,208,228,239,244,226,229,236,239,119,128,30,216,231,242,225,246,101,128,30,210,232,239,239,235,225,226,239,246,101,128,30,212,243,237,225,236,108,128,247,244,244,233,236,228,101,128,30,214,249,242,233,236,236,233,99,128,4,30,100,3,20,86,20,109,20,142,226,108,2,20,93,20,101,225,227,245,244,101,128,1,80,231,242,225,246,101,128,2,12,233,229,242,229,243,233,115,130,0,214,20,123,20,134,227,249,242,233,236,236,233,99,128,4,230,243,237,225,236,108,128,247,246,239,244,226,229,236,239,119,128,30,204,103,2,20,158,20,170,239,238,229,235,243,237,225,236,108,128,246,251,242,225,246,101,129,0,210,20,179,243,237,225,236,108,128,247,242,104,4,20,197,20,208,20,212,21,34,225,242,237,229,238,233,225,110,128,5,85,109,128,33,38,111,2,20,218,20,228,239,235,225,226,239,246,101,128,30,206,242,110,133,1,160,20,243,20,251,21,6,21,14,21,26,225,227,245,244,101,128,30,218,228,239,244,226,229,236,239,119,128,30,226,231,242,225,246,101,128,30,220,232,239,239,235,225,226,239,246,101,128,30,222,244,233,236,228,101,128,30,224,245,238,231,225,242,245,237,236,225,245,116,128,1,80,105,129,1,162,21,54,238,246,229,242,244,229,228,226,242,229,246,101,128,2,14,109,4,21,79,21,107,21,184,21,202,225,227,242,239,110,130,1,76,21,91,21,99,225,227,245,244,101,128,30,82,231,242,225,246,101,128,30,80,229,231,97,132,33,38,21,121,21,132,21,140,21,156,227,249,242,233,236,236,233,99,128,4,96,231,242,229,229,107,128,3,169,242,239,245,238,228,227,249,242,233,236,236,233,99,128,4,122,116,2,21,162,21,177,233,244,236,239,227,249,242,233,236,236,233,99,128,4,124,239,238,239,115,128,3,143,233,227,242,239,110,129,3,159,21,194,244,239,238,239,115,128,3,140,239,238,239,243,240,225,227,101,128,255,47,238,229,242,239,237,225,110,128,33,96,111,2,21,229,21,248,231,239,238,229,107,129,1,234,21,239,237,225,227,242,239,110,128,1,236,240,229,110,128,1,134,115,3,22,6,22,33,22,40,236,225,243,104,130,0,216,22,17,22,25,225,227,245,244,101,128,1,254,243,237,225,236,108,128,247,248,237,225,236,108,128,247,111,244,242,239,235,229,225,227,245,244,101,128,1,254,116,2,22,59,22,70,227,249,242,233,236,236,233,99,128,4,126,233,236,228,101,131,0,213,22,83,22,91,22,102,225,227,245,244,101,128,30,76,228,233,229,242,229,243,233,115,128,30,78,243,237,225,236,108,128,247,245,80,136,0,80,22,130,22,138,22,147,22,159,22,211,22,227,22,246,23,2,225,227,245,244,101,128,30,84,227,233,242,227,236,101,128,36,197,228,239,244,225,227,227,229,238,116,128,30,86,101,3,22,167,22,178,22,190,227,249,242,233,236,236,233,99,128,4,31,232,225,242,237,229,238,233,225,110,128,5,74,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,166,104,2,22,217,22,221,105,128,3,166,239,239,107,128,1,164,105,129,3,160,22,233,247,242,225,242,237,229,238,233,225,110,128,5,83,237,239,238,239,243,240,225,227,101,128,255,48,115,2,23,8,23,25,105,129,3,168,23,14,227,249,242,233,236,236,233,99,128,4,112,237,225,236,108,128,247,112,81,131,0,81,23,42,23,51,23,63,227,233,242,227,236,101,128,36,198,237,239,238,239,243,240,225,227,101,128,255,49,243,237,225,236,108,128,247,113,82,138,0,82,23,95,23,119,23,166,23,217,23,230,23,240,23,245,24,19,24,31,24,43,97,2,23,101,23,112,225,242,237,229,238,233,225,110,128,5,76,227,245,244,101,128,1,84,99,4,23,129,23,136,23,145,23,153,225,242,239,110,128,1,88,229,228,233,236,236,97,128,1,86,233,242,227,236,101,128,36,199,239,237,237,225,225,227,227,229,238,116,128,1,86,100,2,23,172,23,182,226,236,231,242,225,246,101,128,2,16,239,116,2,23,189,23,198,225,227,227,229,238,116,128,30,88,226,229,236,239,119,129,30,90,23,208,237,225,227,242,239,110,128,30,92,229,232,225,242,237,229,238,233,225,110,128,5,80,230,242,225,235,244,245,114,128,33,28,232,111,128,3,161,233,110,2,23,252,24,5,231,243,237,225,236,108,128,246,252,246,229,242,244,229,228,226,242,229,246,101,128,2,18,236,233,238,229,226,229,236,239,119,128,30,94,237,239,238,239,243,240,225,227,101,128,255,50,243,237,225,236,108,129,247,114,24,53,233,238,246,229,242,244,229,100,129,2,129,24,66,243,245,240,229,242,233,239,114,128,2,182,83,139,0,83,24,103,26,17,26,55,26,182,26,221,26,250,27,84,27,105,27,117,27,135,27,143,70,6,24,117,24,209,24,241,25,77,25,119,25,221,48,9,24,137,24,145,24,153,24,161,24,169,24,177,24,185,24,193,24,201,177,176,176,176,48,128,37,12,178,176,176,176,48,128,37,20,179,176,176,176,48,128,37,16,180,176,176,176,48,128,37,24,181,176,176,176,48,128,37,60,182,176,176,176,48,128,37,44,183,176,176,176,48,128,37,52,184,176,176,176,48,128,37,28,185,176,176,176,48,128,37,36,49,3,24,217,24,225,24,233,176,176,176,176,48,128,37,0,177,176,176,176,48,128,37,2,185,176,176,176,48,128,37,97,50,9,25,5,25,13,25,21,25,29,25,37,25,45,25,53,25,61,25,69,176,176,176,176,48,128,37,98,177,176,176,176,48,128,37,86,178,176,176,176,48,128,37,85,179,176,176,176,48,128,37,99,180,176,176,176,48,128,37,81,181,176,176,176,48,128,37,87,182,176,176,176,48,128,37,93,183,176,176,176,48,128,37,92,184,176,176,176,48,128,37,91,51,4,25,87,25,95,25,103,25,111,182,176,176,176,48,128,37,94,183,176,176,176,48,128,37,95,184,176,176,176,48,128,37,90,185,176,176,176,48,128,37,84,52,10,25,141,25,149,25,157,25,165,25,173,25,181,25,189,25,197,25,205,25,213,176,176,176,176,48,128,37,105,177,176,176,176,48,128,37,102,178,176,176,176,48,128,37,96,179,176,176,176,48,128,37,80,180,176,176,176,48,128,37,108,181,176,176,176,48,128,37,103,182,176,176,176,48,128,37,104,183,176,176,176,48,128,37,100,184,176,176,176,48,128,37,101,185,176,176,176,48,128,37,89,53,5,25,233,25,241,25,249,26,1,26,9,176,176,176,176,48,128,37,88,177,176,176,176,48,128,37,82,178,176,176,176,48,128,37,83,179,176,176,176,48,128,37,107,180,176,176,176,48,128,37,106,97,2,26,23,26,44,227,245,244,101,129,1,90,26,32,228,239,244,225,227,227,229,238,116,128,30,100,237,240,233,231,242,229,229,107,128,3,224,99,5,26,67,26,98,26,107,26,147,26,169,225,242,239,110,130,1,96,26,78,26,90,228,239,244,225,227,227,229,238,116,128,30,102,243,237,225,236,108,128,246,253,229,228,233,236,236,97,128,1,94,232,247,97,130,1,143,26,117,26,128,227,249,242,233,236,236,233,99,128,4,216,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,218,233,242,99,2,26,155,26,160,236,101,128,36,200,245,237,230,236,229,120,128,1,92,239,237,237,225,225,227,227,229,238,116,128,2,24,228,239,116,2,26,190,26,199,225,227,227,229,238,116,128,30,96,226,229,236,239,119,129,30,98,26,209,228,239,244,225,227,227,229,238,116,128,30,104,101,2,26,227,26,239,232,225,242,237,229,238,233,225,110,128,5,77,246,229,238,242,239,237,225,110,128,33,102,104,5,27,6,27,34,27,48,27,59,27,72,97,2,27,12,27,23,225,242,237,229,238,233,225,110,128,5,71,227,249,242,233,236,236,233,99,128,4,40,227,232,225,227,249,242,233,236,236,233,99,128,4,41,229,233,227,239,240,244,233,99,128,3,226,232,225,227,249,242,233,236,236,233,99,128,4,186,233,237,225,227,239,240,244,233,99,128,3,236,105,2,27,90,27,96,231,237,97,128,3,163,248,242,239,237,225,110,128,33,101,237,239,238,239,243,240,225,227,101,128,255,51,239,230,244,243,233,231,238,227,249,242,233,236,236,233,99,128,4,44,243,237,225,236,108,128,247,115,244,233,231,237,225,231,242,229,229,107,128,3,218,84,141,0,84,27,186,27,191,27,197,28,7,28,32,28,96,28,147,28,177,28,189,28,201,28,246,29,6,29,46,225,117,128,3,164,226,225,114,128,1,102,99,4,27,207,27,214,27,223,27,250,225,242,239,110,128,1,100,229,228,233,236,236,97,128,1,98,233,242,99,2,27,231,27,236,236,101,128,36,201,245,237,230,236,229,248,226,229,236,239,119,128,30,112,239,237,237,225,225,227,227,229,238,116,128,1,98,228,239,116,2,28,15,28,24,225,227,227,229,238,116,128,30,106,226,229,236,239,119,128,30,108,101,4,28,42,28,53,28,73,28,82,227,249,242,233,236,236,233,99,128,4,34,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,172,238,242,239,237,225,110,128,33,105,244,243,229,227,249,242,233,236,236,233,99,128,4,180,104,3,28,104,28,110,28,136,229,244,97,128,3,152,111,2,28,116,28,121,239,107,128,1,172,242,110,129,0,222,28,128,243,237,225,236,108,128,247,254,242,229,229,242,239,237,225,110,128,33,98,105,2,28,153,28,164,236,228,229,243,237,225,236,108,128,246,254,247,238,225,242,237,229,238,233,225,110,128,5,79,236,233,238,229,226,229,236,239,119,128,30,110,237,239,238,239,243,240,225,227,101,128,255,52,111,2,28,207,28,218,225,242,237,229,238,233,225,110,128,5,57,238,101,3,28,227,28,234,28,240,230,233,246,101,128,1,188,243,233,120,128,1,132,244,247,111,128,1,167,242,229,244,242,239,230,236,229,248,232,239,239,107,128,1,174,115,3,29,14,29,26,29,39,229,227,249,242,233,236,236,233,99,128,4,38,232,229,227,249,242,233,236,236,233,99,128,4,11,237,225,236,108,128,247,116,119,2,29,52,29,64,229,236,246,229,242,239,237,225,110,128,33,107,239,242,239,237,225,110,128,33,97,85,142,0,85,29,105,29,123,29,131,29,198,30,69,30,87,30,198,30,214,30,226,31,21,31,30,31,142,31,149,31,219,225,227,245,244,101,129,0,218,29,115,243,237,225,236,108,128,247,250,226,242,229,246,101,128,1,108,99,3,29,139,29,146,29,188,225,242,239,110,128,1,211,233,242,99,2,29,154,29,159,236,101,128,36,202,245,237,230,236,229,120,130,0,219,29,172,29,180,226,229,236,239,119,128,30,118,243,237,225,236,108,128,247,251,249,242,233,236,236,233,99,128,4,35,100,3,29,206,29,229,30,59,226,108,2,29,213,29,221,225,227,245,244,101,128,1,112,231,242,225,246,101,128,2,20,233,229,242,229,243,233,115,134,0,220,29,251,30,3,30,11,30,34,30,42,30,51,225,227,245,244,101,128,1,215,226,229,236,239,119,128,30,114,99,2,30,17,30,24,225,242,239,110,128,1,217,249,242,233,236,236,233,99,128,4,240,231,242,225,246,101,128,1,219,237,225,227,242,239,110,128,1,213,243,237,225,236,108,128,247,252,239,244,226,229,236,239,119,128,30,228,231,242,225,246,101,129,0,217,30,79,243,237,225,236,108,128,247,249,104,2,30,93,30,171,111,2,30,99,30,109,239,235,225,226,239,246,101,128,30,230,242,110,133,1,175,30,124,30,132,30,143,30,151,30,163,225,227,245,244,101,128,30,232,228,239,244,226,229,236,239,119,128,30,240,231,242,225,246,101,128,30,234,232,239,239,235,225,226,239,246,101,128,30,236,244,233,236,228,101,128,30,238,245,238,231,225,242,245,237,236,225,245,116,129,1,112,30,187,227,249,242,233,236,236,233,99,128,4,242,233,238,246,229,242,244,229,228,226,242,229,246,101,128,2,22,235,227,249,242,233,236,236,233,99,128,4,120,109,2,30,232,31,10,225,227,242,239,110,130,1,106,30,244,30,255,227,249,242,233,236,236,233,99,128,4,238,228,233,229,242,229,243,233,115,128,30,122,239,238,239,243,240,225,227,101,128,255,53,239,231,239,238,229,107,128,1,114,240,243,233,236,239,110,133,3,165,31,49,31,53,31,90,31,121,31,134,49,128,3,210,97,2,31,59,31,81,227,245,244,229,232,239,239,235,243,249,237,226,239,236,231,242,229,229,107,128,3,211,230,242,233,227,225,110,128,1,177,228,233,229,242,229,243,233,115,129,3,171,31,103,232,239,239,235,243,249,237,226,239,236,231,242,229,229,107,128,3,212,232,239,239,235,243,249,237,226,239,108,128,3,210,244,239,238,239,115,128,3,142,242,233,238,103,128,1,110,115,3,31,157,31,172,31,179,232,239,242,244,227,249,242,233,236,236,233,99,128,4,14,237,225,236,108,128,247,117,244,242,225,233,231,232,116,2,31,191,31,202,227,249,242,233,236,236,233,99,128,4,174,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,176,244,233,236,228,101,130,1,104,31,231,31,239,225,227,245,244,101,128,30,120,226,229,236,239,119,128,30,116,86,136,0,86,32,11,32,20,32,31,32,60,32,67,32,79,32,91,32,99,227,233,242,227,236,101,128,36,203,228,239,244,226,229,236,239,119,128,30,126,101,2,32,37,32,48,227,249,242,233,236,236,233,99,128,4,18,247,225,242,237,229,238,233,225,110,128,5,78,232,239,239,107,128,1,178,237,239,238,239,243,240,225,227,101,128,255,54,239,225,242,237,229,238,233,225,110,128,5,72,243,237,225,236,108,128,247,118,244,233,236,228,101,128,30,124,87,134,0,87,32,123,32,131,32,154,32,194,32,202,32,214,225,227,245,244,101,128,30,130,227,233,242,99,2,32,140,32,145,236,101,128,36,204,245,237,230,236,229,120,128,1,116,100,2,32,160,32,170,233,229,242,229,243,233,115,128,30,132,239,116,2,32,177,32,186,225,227,227,229,238,116,128,30,134,226,229,236,239,119,128,30,136,231,242,225,246,101,128,30,128,237,239,238,239,243,240,225,227,101,128,255,55,243,237,225,236,108,128,247,119,88,134,0,88,32,238,32,247,33,18,33,31,33,35,33,47,227,233,242,227,236,101,128,36,205,100,2,32,253,33,7,233,229,242,229,243,233,115,128,30,140,239,244,225,227,227,229,238,116,128,30,138,229,232,225,242,237,229,238,233,225,110,128,5,61,105,128,3,158,237,239,238,239,243,240,225,227,101,128,255,56,243,237,225,236,108,128,247,120,89,139,0,89,33,81,33,116,33,139,33,189,33,228,33,236,33,253,34,40,34,52,34,60,34,68,97,2,33,87,33,104,227,245,244,101,129,0,221,33,96,243,237,225,236,108,128,247,253,244,227,249,242,233,236,236,233,99,128,4,98,227,233,242,99,2,33,125,33,130,236,101,128,36,206,245,237,230,236,229,120,128,1,118,100,2,33,145,33,165,233,229,242,229,243,233,115,129,1,120,33,157,243,237,225,236,108,128,247,255,239,116,2,33,172,33,181,225,227,227,229,238,116,128,30,142,226,229,236,239,119,128,30,244,229,114,2,33,196,33,208,233,227,249,242,233,236,236,233,99,128,4,43,245,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,248,231,242,225,246,101,128,30,242,232,239,239,107,129,1,179,33,245,225,226,239,246,101,128,30,246,105,3,34,5,34,16,34,27,225,242,237,229,238,233,225,110,128,5,69,227,249,242,233,236,236,233,99,128,4,7,247,238,225,242,237,229,238,233,225,110,128,5,82,237,239,238,239,243,240,225,227,101,128,255,57,243,237,225,236,108,128,247,121,244,233,236,228,101,128,30,248,245,115,2,34,75,34,113,226,233,103,2,34,83,34,94,227,249,242,233,236,236,233,99,128,4,106,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,108,236,233,244,244,236,101,2,34,124,34,135,227,249,242,233,236,236,233,99,128,4,102,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,104,90,136,0,90,34,174,34,198,34,243,35,14,35,81,35,173,35,185,35,197,97,2,34,180,34,191,225,242,237,229,238,233,225,110,128,5,54,227,245,244,101,128,1,121,99,2,34,204,34,221,225,242,239,110,129,1,125,34,213,243,237,225,236,108,128,246,255,233,242,99,2,34,229,34,234,236,101,128,36,207,245,237,230,236,229,120,128,30,144,228,239,116,130,1,123,34,253,35,6,225,227,227,229,238,116,128,1,123,226,229,236,239,119,128,30,146,101,3,35,22,35,33,35,76,227,249,242,233,236,236,233,99,128,4,23,100,2,35,39,35,58,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,152,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,222,244,97,128,3,150,232,101,4,35,92,35,103,35,119,35,130,225,242,237,229,238,233,225,110,128,5,58,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,193,227,249,242,233,236,236,233,99,128,4,22,100,2,35,136,35,155,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,150,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,220,236,233,238,229,226,229,236,239,119,128,30,148,237,239,238,239,243,240,225,227,101,128,255,58,115,2,35,203,35,210,237,225,236,108,128,247,122,244,242,239,235,101,128,1,181,97,149,0,97,36,8,36,144,37,35,37,211,38,55,38,91,45,10,45,47,45,74,46,43,46,81,47,170,47,242,48,197,48,206,49,79,51,87,52,77,52,124,53,19,53,33,97,7,36,24,36,34,36,41,36,48,36,73,36,89,36,100,226,229,238,231,225,236,105,128,9,134,227,245,244,101,128,0,225,228,229,246,97,128,9,6,231,117,2,36,55,36,64,234,225,242,225,244,105,128,10,134,242,237,245,235,232,105,128,10,6,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,62,242,245,243,241,245,225,242,101,128,51,3,246,239,247,229], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+215160); -/* memory initializer */ allocate([236,243,233,231,110,3,36,116,36,126,36,133,226,229,238,231,225,236,105,128,9,190,228,229,246,97,128,9,62,231,245,234,225,242,225,244,105,128,10,190,98,4,36,154,36,195,36,204,36,214,226,242,229,246,233,225,244,233,239,110,2,36,169,36,184,237,225,242,235,225,242,237,229,238,233,225,110,128,5,95,243,233,231,238,228,229,246,97,128,9,112,229,238,231,225,236,105,128,9,133,239,240,239,237,239,230,111,128,49,26,242,229,246,101,134,1,3,36,233,36,241,36,252,37,7,37,15,37,27,225,227,245,244,101,128,30,175,227,249,242,233,236,236,233,99,128,4,209,228,239,244,226,229,236,239,119,128,30,183,231,242,225,246,101,128,30,177,232,239,239,235,225,226,239,246,101,128,30,179,244,233,236,228,101,128,30,181,99,4,37,45,37,52,37,131,37,201,225,242,239,110,128,1,206,233,242,99,2,37,60,37,65,236,101,128,36,208,245,237,230,236,229,120,133,0,226,37,84,37,92,37,103,37,111,37,123,225,227,245,244,101,128,30,165,228,239,244,226,229,236,239,119,128,30,173,231,242,225,246,101,128,30,167,232,239,239,235,225,226,239,246,101,128,30,169,244,233,236,228,101,128,30,171,245,244,101,133,0,180,37,147,37,158,37,175,37,182,37,191,226,229,236,239,247,227,237,98,128,3,23,99,2,37,164,37,169,237,98,128,3,1,239,237,98,128,3,1,228,229,246,97,128,9,84,236,239,247,237,239,100,128,2,207,244,239,238,229,227,237,98,128,3,65,249,242,233,236,236,233,99,128,4,48,100,5,37,223,37,233,37,247,37,253,38,31,226,236,231,242,225,246,101,128,2,1,228,225,235,231,245,242,237,245,235,232,105,128,10,113,229,246,97,128,9,5,233,229,242,229,243,233,115,130,0,228,38,11,38,22,227,249,242,233,236,236,233,99,128,4,211,237,225,227,242,239,110,128,1,223,239,116,2,38,38,38,46,226,229,236,239,119,128,30,161,237,225,227,242,239,110,128,1,225,101,131,0,230,38,65,38,73,38,82,225,227,245,244,101,128,1,253,235,239,242,229,225,110,128,49,80,237,225,227,242,239,110,128,1,227,230,233,105,6,38,107,38,127,41,64,41,70,41,85,44,185,48,2,38,113,38,120,176,178,176,56,128,32,21,184,185,180,49,128,32,164,177,48,3,38,136,40,160,41,39,48,9,38,156,38,176,38,238,39,44,39,106,39,168,39,230,40,36,40,98,49,3,38,164,38,168,38,172,55,128,4,16,56,128,4,17,57,128,4,18,50,10,38,198,38,202,38,206,38,210,38,214,38,218,38,222,38,226,38,230,38,234,48,128,4,19,49,128,4,20,50,128,4,21,51,128,4,1,52,128,4,22,53,128,4,23,54,128,4,24,55,128,4,25,56,128,4,26,57,128,4,27,51,10,39,4,39,8,39,12,39,16,39,20,39,24,39,28,39,32,39,36,39,40,48,128,4,28,49,128,4,29,50,128,4,30,51,128,4,31,52,128,4,32,53,128,4,33,54,128,4,34,55,128,4,35,56,128,4,36,57,128,4,37,52,10,39,66,39,70,39,74,39,78,39,82,39,86,39,90,39,94,39,98,39,102,48,128,4,38,49,128,4,39,50,128,4,40,51,128,4,41,52,128,4,42,53,128,4,43,54,128,4,44,55,128,4,45,56,128,4,46,57,128,4,47,53,10,39,128,39,132,39,136,39,140,39,144,39,148,39,152,39,156,39,160,39,164,48,128,4,144,49,128,4,2,50,128,4,3,51,128,4,4,52,128,4,5,53,128,4,6,54,128,4,7,55,128,4,8,56,128,4,9,57,128,4,10,54,10,39,190,39,194,39,198,39,202,39,206,39,210,39,214,39,218,39,222,39,226,48,128,4,11,49,128,4,12,50,128,4,14,51,128,246,196,52,128,246,197,53,128,4,48,54,128,4,49,55,128,4,50,56,128,4,51,57,128,4,52,55,10,39,252,40,0,40,4,40,8,40,12,40,16,40,20,40,24,40,28,40,32,48,128,4,53,49,128,4,81,50,128,4,54,51,128,4,55,52,128,4,56,53,128,4,57,54,128,4,58,55,128,4,59,56,128,4,60,57,128,4,61,56,10,40,58,40,62,40,66,40,70,40,74,40,78,40,82,40,86,40,90,40,94,48,128,4,62,49,128,4,63,50,128,4,64,51,128,4,65,52,128,4,66,53,128,4,67,54,128,4,68,55,128,4,69,56,128,4,70,57,128,4,71,57,10,40,120,40,124,40,128,40,132,40,136,40,140,40,144,40,148,40,152,40,156,48,128,4,72,49,128,4,73,50,128,4,74,51,128,4,75,52,128,4,76,53,128,4,77,54,128,4,78,55,128,4,79,56,128,4,145,57,128,4,82,49,4,40,170,40,232,40,237,41,7,48,10,40,192,40,196,40,200,40,204,40,208,40,212,40,216,40,220,40,224,40,228,48,128,4,83,49,128,4,84,50,128,4,85,51,128,4,86,52,128,4,87,53,128,4,88,54,128,4,89,55,128,4,90,56,128,4,91,57,128,4,92,177,48,128,4,94,52,4,40,247,40,251,40,255,41,3,53,128,4,15,54,128,4,98,55,128,4,114,56,128,4,116,57,5,41,19,41,23,41,27,41,31,41,35,50,128,246,198,51,128,4,95,52,128,4,99,53,128,4,115,54,128,4,117,56,2,41,45,41,59,51,2,41,51,41,55,49,128,246,199,50,128,246,200,180,54,128,4,217,178,185,57,128,32,14,179,48,2,41,77,41,81,48,128,32,15,49,128,32,13,181,55,7,41,102,41,172,42,237,43,58,44,15,44,108,44,179,51,2,41,108,41,122,56,2,41,114,41,118,49,128,6,106,56,128,6,12,57,8,41,140,41,144,41,148,41,152,41,156,41,160,41,164,41,168,50,128,6,96,51,128,6,97,52,128,6,98,53,128,6,99,54,128,6,100,55,128,6,101,56,128,6,102,57,128,6,103,52,7,41,188,41,220,42,26,42,88,42,120,42,176,42,232,48,5,41,200,41,204,41,208,41,212,41,216,48,128,6,104,49,128,6,105,51,128,6,27,55,128,6,31,57,128,6,33,49,10,41,242,41,246,41,250,41,254,42,2,42,6,42,10,42,14,42,18,42,22,48,128,6,34,49,128,6,35,50,128,6,36,51,128,6,37,52,128,6,38,53,128,6,39,54,128,6,40,55,128,6,41,56,128,6,42,57,128,6,43,50,10,42,48,42,52,42,56,42,60,42,64,42,68,42,72,42,76,42,80,42,84,48,128,6,44,49,128,6,45,50,128,6,46,51,128,6,47,52,128,6,48,53,128,6,49,54,128,6,50,55,128,6,51,56,128,6,52,57,128,6,53,51,5,42,100,42,104,42,108,42,112,42,116,48,128,6,54,49,128,6,55,50,128,6,56,51,128,6,57,52,128,6,58,52,9,42,140,42,144,42,148,42,152,42,156,42,160,42,164,42,168,42,172,48,128,6,64,49,128,6,65,50,128,6,66,51,128,6,67,52,128,6,68,53,128,6,69,54,128,6,70,56,128,6,72,57,128,6,73,53,9,42,196,42,200,42,204,42,208,42,212,42,216,42,220,42,224,42,228,48,128,6,74,49,128,6,75,50,128,6,76,51,128,6,77,52,128,6,78,53,128,6,79,54,128,6,80,55,128,6,81,56,128,6,82,183,48,128,6,71,53,3,42,245,43,21,43,53,48,5,43,1,43,5,43,9,43,13,43,17,53,128,6,164,54,128,6,126,55,128,6,134,56,128,6,152,57,128,6,175,49,5,43,33,43,37,43,41,43,45,43,49,49,128,6,121,50,128,6,136,51,128,6,145,52,128,6,186,57,128,6,210,179,52,128,6,213,54,7,43,74,43,79,43,84,43,89,43,127,43,189,43,251,179,54,128,32,170,180,53,128,5,190,181,56,128,5,195,54,6,43,103,43,107,43,111,43,115,43,119,43,123,52,128,5,208,53,128,5,209,54,128,5,210,55,128,5,211,56,128,5,212,57,128,5,213,55,10,43,149,43,153,43,157,43,161,43,165,43,169,43,173,43,177,43,181,43,185,48,128,5,214,49,128,5,215,50,128,5,216,51,128,5,217,52,128,5,218,53,128,5,219,54,128,5,220,55,128,5,221,56,128,5,222,57,128,5,223,56,10,43,211,43,215,43,219,43,223,43,227,43,231,43,235,43,239,43,243,43,247,48,128,5,224,49,128,5,225,50,128,5,226,51,128,5,227,52,128,5,228,53,128,5,229,54,128,5,230,55,128,5,231,56,128,5,232,57,128,5,233,57,3,44,3,44,7,44,11,48,128,5,234,52,128,251,42,53,128,251,43,55,4,44,25,44,39,44,59,44,64,48,2,44,31,44,35,48,128,251,75,53,128,251,31,49,3,44,47,44,51,44,55,54,128,5,240,55,128,5,241,56,128,5,242,178,51,128,251,53,57,7,44,80,44,84,44,88,44,92,44,96,44,100,44,104,51,128,5,180,52,128,5,181,53,128,5,182,54,128,5,187,55,128,5,184,56,128,5,183,57,128,5,176,56,3,44,116,44,160,44,165,48,7,44,132,44,136,44,140,44,144,44,148,44,152,44,156,48,128,5,178,49,128,5,177,50,128,5,179,51,128,5,194,52,128,5,193,54,128,5,185,55,128,5,188,179,57,128,5,189,52,2,44,171,44,175,49,128,5,191,50,128,5,192,185,178,57,128,2,188,54,3,44,193,44,252,45,3,49,4,44,203,44,219,44,225,44,246,50,2,44,209,44,214,180,56,128,33,5,184,57,128,33,19,179,181,50,128,33,22,181,55,3,44,234,44,238,44,242,51,128,32,44,52,128,32,45,53,128,32,46,182,182,52,128,32,12,179,177,182,55,128,6,109,180,185,179,55,128,2,189,103,2,45,16,45,23,242,225,246,101,128,0,224,117,2,45,29,45,38,234,225,242,225,244,105,128,10,133,242,237,245,235,232,105,128,10,5,104,2,45,53,45,63,233,242,225,231,225,238,97,128,48,66,239,239,235,225,226,239,246,101,128,30,163,105,7,45,90,45,115,45,122,45,134,45,159,45,175,45,255,98,2,45,96,45,105,229,238,231,225,236,105,128,9,144,239,240,239,237,239,230,111,128,49,30,228,229,246,97,128,9,16,229,227,249,242,233,236,236,233,99,128,4,213,231,117,2,45,141,45,150,234,225,242,225,244,105,128,10,144,242,237,245,235,232,105,128,10,16,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,72,110,5,45,187,45,196,45,210,45,226,45,241,225,242,225,226,233,99,128,6,57,230,233,238,225,236,225,242,225,226,233,99,128,254,202,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,203,237,229,228,233,225,236,225,242,225,226,233,99,128,254,204,246,229,242,244,229,228,226,242,229,246,101,128,2,3,246,239,247,229,236,243,233,231,110,3,46,15,46,25,46,32,226,229,238,231,225,236,105,128,9,200,228,229,246,97,128,9,72,231,245,234,225,242,225,244,105,128,10,200,107,2,46,49,46,73,225,244,225,235,225,238,97,129,48,162,46,61,232,225,236,230,247,233,228,244,104,128,255,113,239,242,229,225,110,128,49,79,108,3,46,89,47,145,47,154,101,2,46,95,47,140,102,136,5,208,46,115,46,124,46,139,46,153,46,242,47,0,47,111,47,125,225,242,225,226,233,99,128,6,39,228,225,231,229,243,232,232,229,226,242,229,119,128,251,48,230,233,238,225,236,225,242,225,226,233,99,128,254,142,104,2,46,159,46,234,225,237,250,97,2,46,168,46,201,225,226,239,246,101,2,46,178,46,187,225,242,225,226,233,99,128,6,35,230,233,238,225,236,225,242,225,226,233,99,128,254,132,226,229,236,239,119,2,46,211,46,220,225,242,225,226,233,99,128,6,37,230,233,238,225,236,225,242,225,226,233,99,128,254,136,229,226,242,229,119,128,5,208,236,225,237,229,228,232,229,226,242,229,119,128,251,79,237,97,2,47,7,47,43,228,228,225,225,226,239,246,101,2,47,20,47,29,225,242,225,226,233,99,128,6,34,230,233,238,225,236,225,242,225,226,233,99,128,254,130,235,243,245,242,97,4,47,57,47,66,47,80,47,96,225,242,225,226,233,99,128,6,73,230,233,238,225,236,225,242,225,226,233,99,128,254,240,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,243,237,229,228,233,225,236,225,242,225,226,233,99,128,254,244,240,225,244,225,232,232,229,226,242,229,119,128,251,46,241,225,237,225,244,243,232,229,226,242,229,119,128,251,47,240,104,128,33,53,236,229,241,245,225,108,128,34,76,240,232,97,129,3,177,47,162,244,239,238,239,115,128,3,172,109,4,47,180,47,188,47,199,47,233,225,227,242,239,110,128,1,1,239,238,239,243,240,225,227,101,128,255,65,240,229,242,243,225,238,100,130,0,38,47,213,47,225,237,239,238,239,243,240,225,227,101,128,255,6,243,237,225,236,108,128,247,38,243,241,245,225,242,101,128,51,194,110,4,47,252,48,7,48,129,48,139,226,239,240,239,237,239,230,111,128,49,34,103,4,48,17,48,28,48,42,48,121,226,239,240,239,237,239,230,111,128,49,36,235,232,225,238,235,232,245,244,232,225,105,128,14,90,236,101,131,34,32,48,53,48,106,48,113,226,242,225,227,235,229,116,2,48,65,48,85,236,229,230,116,129,48,8,48,74,246,229,242,244,233,227,225,108,128,254,63,242,233,231,232,116,129,48,9,48,95,246,229,242,244,233,227,225,108,128,254,64,236,229,230,116,128,35,41,242,233,231,232,116,128,35,42,243,244,242,239,109,128,33,43,239,244,229,236,229,233,97,128,3,135,117,2,48,145,48,157,228,225,244,244,225,228,229,246,97,128,9,82,243,246,225,242,97,3,48,169,48,179,48,186,226,229,238,231,225,236,105,128,9,130,228,229,246,97,128,9,2,231,245,234,225,242,225,244,105,128,10,130,239,231,239,238,229,107,128,1,5,112,3,48,214,48,238,49,12,97,2,48,220,48,232,225,244,239,243,241,245,225,242,101,128,51,0,242,229,110,128,36,156,239,243,244,242,239,240,232,101,2,48,251,49,6,225,242,237,229,238,233,225,110,128,5,90,237,239,100,128,2,188,112,2,49,18,49,23,236,101,128,248,255,242,111,2,49,30,49,38,225,227,232,229,115,128,34,80,120,2,49,44,49,64,229,241,245,225,108,129,34,72,49,54,239,242,233,237,225,231,101,128,34,82,233,237,225,244,229,236,249,229,241,245,225,108,128,34,69,114,4,49,89,49,116,49,120,49,165,225,229,97,2,49,97,49,107,229,235,239,242,229,225,110,128,49,142,235,239,242,229,225,110,128,49,141,99,128,35,18,105,2,49,126,49,140,231,232,244,232,225,236,230,242,233,238,103,128,30,154,238,103,130,0,229,49,149,49,157,225,227,245,244,101,128,1,251,226,229,236,239,119,128,30,1,242,239,119,8,49,185,49,192,50,65,50,131,50,181,50,236,51,3,51,78,226,239,244,104,128,33,148,100,3,49,200,49,239,50,30,225,243,104,4,49,212,49,219,49,226,49,234,228,239,247,110,128,33,227,236,229,230,116,128,33,224,242,233,231,232,116,128,33,226,245,112,128,33,225,226,108,5,49,252,50,3,50,10,50,17,50,25,226,239,244,104,128,33,212,228,239,247,110,128,33,211,236,229,230,116,128,33,208,242,233,231,232,116,128,33,210,245,112,128,33,209,239,247,110,131,33,147,50,42,50,49,50,57,236,229,230,116,128,33,153,242,233,231,232,116,128,33,152,247,232,233,244,101,128,33,233,104,2,50,71,50,122,229,225,100,4,50,83,50,93,50,103,50,114,228,239,247,238,237,239,100,128,2,197,236,229,230,244,237,239,100,128,2,194,242,233,231,232,244,237,239,100,128,2,195,245,240,237,239,100,128,2,196,239,242,233,250,229,120,128,248,231,236,229,230,116,131,33,144,50,144,50,161,50,173,228,226,108,129,33,208,50,152,243,244,242,239,235,101,128,33,205,239,246,229,242,242,233,231,232,116,128,33,198,247,232,233,244,101,128,33,230,242,233,231,232,116,132,33,146,50,197,50,209,50,217,50,228,228,226,236,243,244,242,239,235,101,128,33,207,232,229,225,246,121,128,39,158,239,246,229,242,236,229,230,116,128,33,196,247,232,233,244,101,128,33,232,244,225,98,2,50,244,50,251,236,229,230,116,128,33,228,242,233,231,232,116,128,33,229,245,112,132,33,145,51,16,51,44,51,62,51,70,100,2,51,22,51,34,110,129,33,149,51,28,226,243,101,128,33,168,239,247,238,226,225,243,101,128,33,168,236,229,230,116,129,33,150,51,53,239,230,228,239,247,110,128,33,197,242,233,231,232,116,128,33,151,247,232,233,244,101,128,33,231,246,229,242,244,229,120,128,248,230,115,5,51,99,51,175,51,220,52,47,52,57,99,2,51,105,51,157,233,105,2,51,112,51,135,227,233,242,227,245,109,129,0,94,51,123,237,239,238,239,243,240,225,227,101,128,255,62,244,233,236,228,101,129,0,126,51,145,237,239,238,239,243,240,225,227,101,128,255,94,242,233,240,116,129,2,81,51,166,244,245,242,238,229,100,128,2,82,237,225,236,108,2,51,184,51,195,232,233,242,225,231,225,238,97,128,48,65,235,225,244,225,235,225,238,97,129,48,161,51,208,232,225,236,230,247,233,228,244,104,128,255,103,244,229,242,233,115,2,51,230,52,43,107,131,0,42,51,240,52,12,52,35,97,2,51,246,52,4,236,244,239,238,229,225,242,225,226,233,99,128,6,109,242,225,226,233,99,128,6,109,109,2,52,18,52,24,225,244,104,128,34,23,239,238,239,243,240,225,227,101,128,255,10,243,237,225,236,108,128,254,97,109,128,32,66,245,240,229,242,233,239,114,128,246,233,249,237,240,244,239,244,233,227,225,236,236,249,229,241,245,225,108,128,34,67,116,132,0,64,52,89,52,96,52,108,52,116,233,236,228,101,128,0,227,237,239,238,239,243,240,225,227,101,128,255,32,243,237,225,236,108,128,254,107,245,242,238,229,100,128,2,80,117,6,52,138,52,163,52,170,52,195,52,215,52,231,98,2,52,144,52,153,229,238,231,225,236,105,128,9,148,239,240,239,237,239,230,111,128,49,32,228,229,246,97,128,9,20,231,117,2,52,177,52,186,234,225,242,225,244,105,128,10,148,242,237,245,235,232,105,128,10,20,236,229,238,231,244,232,237,225,242,235,226,229,238,231,225,236,105,128,9,215,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,76,246,239,247,229,236,243,233,231,110,3,52,247,53,1,53,8,226,229,238,231,225,236,105,128,9,204,228,229,246,97,128,9,76,231,245,234,225,242,225,244,105,128,10,204,246,225,231,242,225,232,225,228,229,246,97,128,9,61,121,2,53,39,53,51,226,225,242,237,229,238,233,225,110,128,5,97,233,110,130,5,226,53,60,53,75,225,236,244,239,238,229,232,229,226,242,229,119,128,251,32,232,229,226,242,229,119,128,5,226,98,144,0,98,53,120,53,255,54,10,54,19,54,44,55,85,55,147,55,220,57,146,57,158,57,201,57,209,57,219,59,89,59,113,59,122,97,7,53,136,53,146,53,170,53,177,53,202,53,226,53,237,226,229,238,231,225,236,105,128,9,172,227,235,243,236,225,243,104,129,0,92,53,158,237,239,238,239,243,240,225,227,101,128,255,60,228,229,246,97,128,9,44,231,117,2,53,184,53,193,234,225,242,225,244,105,128,10,172,242,237,245,235,232,105,128,10,44,104,2,53,208,53,218,233,242,225,231,225,238,97,128,48,112,244,244,232,225,105,128,14,63,235,225,244,225,235,225,238,97,128,48,208,114,129,0,124,53,243,237,239,238,239,243,240,225,227,101,128,255,92,226,239,240,239,237,239,230,111,128,49,5,227,233,242,227,236,101,128,36,209,228,239,116,2,54,27,54,36,225,227,227,229,238,116,128,30,3,226,229,236,239,119,128,30,5,101,6,54,58,54,79,54,102,54,244,54,255,55,11,225,237,229,228,243,233,248,244,229,229,238,244,232,238,239,244,229,115,128,38,108,99,2,54,85,54,92,225,245,243,101,128,34,53,249,242,233,236,236,233,99,128,4,49,104,5,54,114,54,123,54,137,54,167,54,226,225,242,225,226,233,99,128,6,40,230,233,238,225,236,225,242,225,226,233,99,128,254,144,105,2,54,143,54,158,238,233,244,233,225,236,225,242,225,226,233,99,128,254,145,242,225,231,225,238,97,128,48,121,237,101,2,54,174,54,187,228,233,225,236,225,242,225,226,233,99,128,254,146,229,237,105,2,54,195,54,210,238,233,244,233,225,236,225,242,225,226,233,99,128,252,159,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,8,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,109,235,225,244,225,235,225,238,97,128,48,217,238,225,242,237,229,238,233,225,110,128,5,98,116,132,5,209,55,23,55,43,55,63,55,72,97,129,3,178,55,29,243,249,237,226,239,236,231,242,229,229,107,128,3,208,228,225,231,229,243,104,129,251,49,55,54,232,229,226,242,229,119,128,251,49,232,229,226,242,229,119,128,5,209,242,225,230,229,232,229,226,242,229,119,128,251,76,104,2,55,91,55,141,97,3,55,99,55,109,55,116,226,229,238,231,225,236,105,128,9,173,228,229,246,97,128,9,45,231,117,2,55,123,55,132,234,225,242,225,244,105,128,10,173,242,237,245,235,232,105,128,10,45,239,239,107,128,2,83,105,5,55,159,55,170,55,181,55,195,55,209,232,233,242,225,231,225,238,97,128,48,115,235,225,244,225,235,225,238,97,128,48,211,236,225,226,233,225,236,227,236,233,227,107,128,2,152,238,228,233,231,245,242,237,245,235,232,105,128,10,2,242,245,243,241,245,225,242,101,128,51,49,108,3,55,228,57,129,57,140,97,2,55,234,57,124,227,107,6,55,249,56,2,56,39,56,188,56,243,57,39,227,233,242,227,236,101,128,37,207,100,2,56,8,56,17,233,225,237,239,238,100,128,37,198,239,247,238,240,239,233,238,244,233,238,231,244,242,233,225,238,231,236,101,128,37,188,108,2,56,45,56,148,101,2,56,51,56,87,230,244,240,239,233,238,244,233,238,103,2,56,66,56,76,240,239,233,238,244,229,114,128,37,196,244,242,233,225,238,231,236,101,128,37,192,238,244,233,227,245,236,225,242,226,242,225,227,235,229,116,2,56,107,56,127,236,229,230,116,129,48,16,56,116,246,229,242,244,233,227,225,108,128,254,59,242,233,231,232,116,129,48,17,56,137,246,229,242,244,233,227,225,108,128,254,60,239,247,229,114,2,56,157,56,172,236,229,230,244,244,242,233,225,238,231,236,101,128,37,227,242,233,231,232,244,244,242,233,225,238,231,236,101,128,37,226,114,2,56,194,56,205,229,227,244,225,238,231,236,101,128,37,172,233,231,232,244,240,239,233,238,244,233,238,103,2,56,222,56,232,240,239,233,238,244,229,114,128,37,186,244,242,233,225,238,231,236,101,128,37,182,115,3,56,251,57,25,57,33,109,2,57,1,57,13,225,236,236,243,241,245,225,242,101,128,37,170,233,236,233,238,231,230,225,227,101,128,38,59,241,245,225,242,101,128,37,160,244,225,114,128,38,5,245,240,112,2,57,47,57,85,229,114,2,57,54,57,69,236,229,230,244,244,242,233,225,238,231,236,101,128,37,228,242,233,231,232,244,244,242,233,225,238,231,236,101,128,37,229,239,233,238,244,233,238,103,2,57,97,57,113,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,180,244,242,233,225,238,231,236,101,128,37,178,238,107,128,36,35,233,238,229,226,229,236,239,119,128,30,7,239,227,107,128,37,136,237,239,238,239,243,240,225,227,101,128,255,66,111,3,57,166,57,179,57,190,226,225,233,237,225,233,244,232,225,105,128,14,26,232,233,242,225,231,225,238,97,128,48,124,235,225,244,225,235,225,238,97,128,48,220,240,225,242,229,110,128,36,157,241,243,241,245,225,242,101,128,51,195,114,4,57,229,58,223,59,40,59,79,225,99,2,57,236,58,130,101,3,57,244,57,249,58,61,229,120,128,248,244,236,229,230,116,133,0,123,58,10,58,15,58,37,58,45,58,50,226,116,128,248,243,109,2,58,21,58,26,233,100,128,248,242,239,238,239,243,240,225,227,101,128,255,91,243,237,225,236,108,128,254,91,244,112,128,248,241,246,229,242,244,233,227,225,108,128,254,55,242,233,231,232,116,133,0,125,58,79,58,84,58,106,58,114,58,119,226,116,128,248,254,109,2,58,90,58,95,233,100,128,248,253,239,238,239,243,240,225,227,101,128,255,93,243,237,225,236,108,128,254,92,244,112,128,248,252,246,229,242,244,233,227,225,108,128,254,56,235,229,116,2,58,138,58,180,236,229,230,116,132,0,91,58,153,58,158,58,163,58,175,226,116,128,248,240,229,120,128,248,239,237,239,238,239,243,240,225,227,101,128,255,59,244,112,128,248,238,242,233,231,232,116,132,0,93,58,196,58,201,58,206,58,218,226,116,128,248,251,229,120,128,248,250,237,239,238,239,243,240,225,227,101,128,255,61,244,112,128,248,249,229,246,101,131,2,216,58,235,58,246,58,252,226,229,236,239,247,227,237,98,128,3,46,227,237,98,128,3,6,233,238,246,229,242,244,229,100,3,59,11,59,22,59,28,226,229,236,239,247,227,237,98,128,3,47,227,237,98,128,3,17,228,239,245,226,236,229,227,237,98,128,3,97,233,228,231,101,2,59,49,59,60,226,229,236,239,247,227,237,98,128,3,42,233,238,246,229,242,244,229,228,226,229,236,239,247,227,237,98,128,3,58,239,235,229,238,226,225,114,128,0,166,115,2,59,95,59,103,244,242,239,235,101,128,1,128,245,240,229,242,233,239,114,128,246,234,244,239,240,226,225,114,128,1,131,117,3,59,130,59,141,59,152,232,233,242,225,231,225,238,97,128,48,118,235,225,244,225,235,225,238,97,128,48,214,236,108,2,59,159,59,189,229,116,130,32,34,59,168,59,178,233,238,246,229,242,243,101,128,37,216,239,240,229,242,225,244,239,114,128,34,25,243,229,249,101,128,37,206,99,143,0,99,59,230,60,179,60,190,60,254,61,29,61,122,63,33,64,17,64,117,64,166,67,158,67,166,67,176,67,188,67,221,97,9,59,250,60,5,60,15,60,22,60,29,60,54,60,64,60,116,60,125,225,242,237,229,238,233,225,110,128,5,110,226,229,238,231,225,236,105,128,9,154,227,245,244,101,128,1,7,228,229,246,97,128,9,26,231,117,2,60,36,60,45,234,225,242,225,244,105,128,10,154,242,237,245,235,232,105,128,10,26,236,243,241,245,225,242,101,128,51,136,238,228,242,225,226,233,238,228,117,4,60,82,60,92,60,98,60,105,226,229,238,231,225,236,105,128,9,129,227,237,98,128,3,16,228,229,246,97,128,9,1,231,245,234,225,242,225,244,105,128,10,129,240,243,236,239,227,107,128,33,234,114,3,60,133,60,139,60,165,229,239,102,128,33,5,239,110,130,2,199,60,148,60,159,226,229,236,239,247,227,237,98,128,3,44,227,237,98,128,3,12,242,233,225,231,229,242,229,244,245,242,110,128,33,181,226,239,240,239,237,239,230,111,128,49,24,99,4,60,200,60,207,60,226,60,248,225,242,239,110,128,1,13,229,228,233,236,236,97,129,0,231,60,218,225,227,245,244,101,128,30,9,233,242,99,2,60,234,60,239,236,101,128,36,210,245,237,230,236,229,120,128,1,9,245,242,108,128,2,85,100,2,61,4,61,20,239,116,129,1,11,61,11,225,227,227,229,238,116,128,1,11,243,241,245,225,242,101,128,51,197,101,2,61,35,61,51,228,233,236,236,97,129,0,184,61,45,227,237,98,128,3,39,238,116,132,0,162,61,64,61,88,61,100,61,111,105,2,61,70,61,78,231,242,225,228,101,128,33,3,238,230,229,242,233,239,114,128,246,223,237,239,238,239,243,240,225,227,101,128,255,224,239,236,228,243,244,249,236,101,128,247,162,243,245,240,229,242,233,239,114,128,246,224,104,5,61,134,61,197,61,208,62,136,62,228,97,4,61,144,61,155,61,165,61,172,225,242,237,229,238,233,225,110,128,5,121,226,229,238,231,225,236,105,128,9,155,228,229,246,97,128,9,27,231,117,2,61,179,61,188,234,225,242,225,244,105,128,10,155,242,237,245,235,232,105,128,10,27,226,239,240,239,237,239,230,111,128,49,20,101,6,61,222,61,242,62,10,62,78,62,90,62,111,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,189,99,2,61,248,62,0,235,237,225,242,107,128,39,19,249,242,233,236,236,233,99,128,4,71,100,2,62,16,62,60,229,243,227,229,238,228,229,114,2,62,29,62,49,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,191,227,249,242,233,236,236,233,99,128,4,183,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,245,232,225,242,237,229,238,233,225,110,128,5,115,235,232,225,235,225,243,243,233,225,238,227,249,242,233,236,236,233,99,128,4,204,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,185,105,129,3,199,62,142,229,245,227,104,4,62,155,62,190,62,205,62,214,97,2,62,161,62,176,227,233,242,227,236,229,235,239,242,229,225,110,128,50,119,240,225,242,229,238,235,239,242,229,225,110,128,50,23,227,233,242,227,236,229,235,239,242,229,225,110,128,50,105,235,239,242,229,225,110,128,49,74,240,225,242,229,238,235,239,242,229,225,110,128,50,9,111,2,62,234,63,28,227,104,3,62,243,63,9,63,19,225,110,2,62,250,63,2,231,244,232,225,105,128,14,10,244,232,225,105,128,14,8,233,238,231,244,232,225,105,128,14,9,239,229,244,232,225,105,128,14,12,239,107,128,1,136,105,2,63,39,63,141,229,245,99,5,63,53,63,88,63,103,63,112,63,126,97,2,63,59,63,74,227,233,242,227,236,229,235,239,242,229,225,110,128,50,118,240,225,242,229,238,235,239,242,229,225,110,128,50,22,227,233,242,227,236,229,235,239,242,229,225,110,128,50,104,235,239,242,229,225,110,128,49,72,240,225,242,229,238,235,239,242,229,225,110,128,50,8,245,240,225,242,229,238,235,239,242,229,225,110,128,50,28,242,99,2,63,148,63,243,236,101,132,37,203,63,161,63,172,63,177,63,201,237,245,236,244,233,240,236,121,128,34,151,239,116,128,34,153,112,2,63,183,63,189,236,245,115,128,34,149,239,243,244,225,236,237,225,242,107,128,48,54,247,233,244,104,2,63,210,63,226,236,229,230,244,232,225,236,230,226,236,225,227,107,128,37,208,242,233,231,232,244,232,225,236,230,226,236,225,227,107,128,37,209,245,237,230,236,229,120,130,2,198,64,0,64,11,226,229,236,239,247,227,237,98,128,3,45,227,237,98,128,3,2,108,3,64,25,64,31,64,85,229,225,114,128,35,39,233,227,107,4,64,43,64,54,64,63,64,73,225,236,246,229,239,236,225,114,128,1,194,228,229,238,244,225,108,128,1,192,236,225,244,229,242,225,108,128,1,193,242,229,244,242,239,230,236,229,120,128,1,195,245,98,129,38,99,64,92,243,245,233,116,2,64,101,64,109,226,236,225,227,107,128,38,99,247,232,233,244,101,128,38,103,109,3,64,125,64,139,64,150,227,245,226,229,228,243,241,245,225,242,101,128,51,164,239,238,239,243,240,225,227,101,128,255,67,243,241,245,225,242,229,228,243,241,245,225,242,101,128,51,160,111,8,64,184,64,195,65,26,65,224,66,253,67,28,67,135,67,144,225,242,237,229,238,233,225,110,128,5,129,236,239,110,131,0,58,64,207,64,232,64,251,237,239,110,2,64,215,64,223,229,244,225,242,121,128,32,161,239,243,240,225,227,101,128,255,26,115,2,64,238,64,244,233,231,110,128,32,161,237,225,236,108,128,254,85,244,242,233,225,238,231,245,236,225,114,2,65,10,65,20,232,225,236,230,237,239,100,128,2,209,237,239,100,128,2,208,109,2,65,32,65,217,237,97,134,0,44,65,49,65,113,65,124,65,136,65,166,65,189,97,3,65,57,65,83,65,91,226,239,246,101,2,65,66,65,72,227,237,98,128,3,19,242,233,231,232,244,227,237,98,128,3,21,227,227,229,238,116,128,246,195,114,2,65,97,65,104,225,226,233,99,128,6,12,237,229,238,233,225,110,128,5,93,233,238,230,229,242,233,239,114,128,246,225,237,239,238,239,243,240,225,227,101,128,255,12,242,229,246,229,242,243,229,100,2,65,149,65,160,225,226,239,246,229,227,237,98,128,3,20,237,239,100,128,2,189,115,2,65,172,65,179,237,225,236,108,128,254,80,245,240,229,242,233,239,114,128,246,226,244,245,242,238,229,100,2,65,200,65,211,225,226,239,246,229,227,237,98,128,3,18,237,239,100,128,2,187,240,225,243,115,128,38,60,110,2,65,230,65,239,231,242,245,229,238,116,128,34,69,116,2,65,245,66,3,239,245,242,233,238,244,229,231,242,225,108,128,34,46,242,239,108,142,35,3,66,37,66,43,66,58,66,73,66,117,66,162,66,176,66,181,66,186,66,191,66,197,66,202,66,243,66,248,193,195,75,128,0,6,66,2,66,49,66,54,197,76,128,0,7,83,128,0,8,67,2,66,64,66,69,193,78,128,0,24,82,128,0,13,68,3,66,81,66,107,66,112,67,4,66,91,66,95,66,99,66,103,49,128,0,17,50,128,0,18,51,128,0,19,52,128,0,20,197,76,128,0,127,204,69,128,0,16,69,5,66,129,66,133,66,138,66,143,66,148,77,128,0,25,206,81,128,0,5,207,84,128,0,4,211,67,128,0,27,84,2,66,154,66,158,66,128,0,23,88,128,0,3,70,2,66,168,66,172,70,128,0,12,83,128,0,28,199,83,128,0,29,200,84,128,0,9,204,70,128,0,10,206,193,75,128,0,21,210,83,128,0,30,83,5,66,214,66,218,66,228,66,233,66,238,73,128,0,15,79,129,0,14,66,224,84,128,0,2,212,88,128,0,1,213,66,128,0,26,217,78,128,0,22,213,83,128,0,31,214,84,128,0,11,240,249,242,233,231,232,116,129,0,169,67,9,115,2,67,15,67,21,225,238,115,128,248,233,229,242,233,102,128,246,217,114,2,67,34,67,118,238,229,242,226,242,225,227,235,229,116,2,67,49,67,83,236,229,230,116,130,48,12,67,60,67,72,232,225,236,230,247,233,228,244,104,128,255,98,246,229,242,244,233,227,225,108,128,254,65,242,233,231,232,116,130,48,13,67,95,67,107,232,225,236,230,247,233,228,244,104,128,255,99,246,229,242,244,233,227,225,108,128,254,66,240,239,242,225,244,233,239,238,243,241,245,225,242,101,128,51,127,243,241,245,225,242,101,128,51,199,246,229,242,235,231,243,241,245,225,242,101,128,51,198,240,225,242,229,110,128,36,158,242,245,250,229,233,242,111,128,32,162,243,244,242,229,244,227,232,229,100,128,2,151,245,114,2,67,195,67,213,236,121,2,67,202,67,208,225,238,100,128,34,207,239,114,128,34,206,242,229,238,227,121,128,0,164,249,114,4,67,232,67,240,67,247,67,255,194,242,229,246,101,128,246,209,198,236,229,120,128,246,210,226,242,229,246,101,128,246,212,230,236,229,120,128,246,213,100,146,0,100,68,46,69,184,70,208,71,12,71,188,72,142,72,204,73,133,73,146,73,155,73,181,73,206,73,215,75,26,75,34,75,45,75,65,75,93,97,11,68,70,68,81,68,91,68,163,68,226,68,237,68,248,69,61,69,123,69,129,69,159,225,242,237,229,238,233,225,110,128,5,100,226,229,238,231,225,236,105,128,9,166,100,5,68,103,68,112,68,118,68,132,68,148,225,242,225,226,233,99,128,6,54,229,246,97,128,9,38,230,233,238,225,236,225,242,225,226,233,99,128,254,190,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,191,237,229,228,233,225,236,225,242,225,226,233,99,128,254,192,103,3,68,171,68,188,68,202,229,243,104,129,5,188,68,179,232,229,226,242,229,119,128,5,188,231,229,114,129,32,32,68,196,228,226,108,128,32,33,117,2,68,208,68,217,234,225,242,225,244,105,128,10,166,242,237,245,235,232,105,128,10,38,232,233,242,225,231,225,238,97,128,48,96,235,225,244,225,235,225,238,97,128,48,192,108,3,69,0,69,9,69,47,225,242,225,226,233,99,128,6,47,229,116,130,5,211,69,18,69,38,228,225,231,229,243,104,129,251,51,69,29,232,229,226,242,229,119,128,251,51,232,229,226,242,229,119,128,5,211,230,233,238,225,236,225,242,225,226,233,99,128,254,170,237,237,97,3,69,71,69,80,69,92,225,242,225,226,233,99,128,6,79,236,239,247,225,242,225,226,233,99,128,6,79,244,225,238,97,2,69,101,69,115,236,244,239,238,229,225,242,225,226,233,99,128,6,76,242,225,226,233,99,128,6,76,238,228,97,128,9,100,242,231,97,2,69,137,69,146,232,229,226,242,229,119,128,5,167,236,229,230,244,232,229,226,242,229,119,128,5,167,243,233,225,240,238,229,245,237,225,244,225,227,249,242,233,236,236,233,227,227,237,98,128,4,133,98,3,69,192,70,189,70,199,108,9,69,212,69,220,70,77,70,85,70,101,70,112,70,130,70,144,70,155,199,242,225,246,101,128,246,211,97,2,69,226,70,27,238,231,236,229,226,242,225,227,235,229,116,2,69,242,70,6,236,229,230,116,129,48,10,69,251,246,229,242,244,233,227,225,108,128,254,61,242,233,231,232,116,129,48,11,70,16,246,229,242,244,233,227,225,108,128,254,62,114,2,70,33,70,54,227,232,233,238,246,229,242,244,229,228,226,229,236,239,247,227,237,98,128,3,43,242,239,119,2,70,62,70,69,236,229,230,116,128,33,212,242,233,231,232,116,128,33,210,228,225,238,228,97,128,9,101,231,242,225,246,101,129,246,214,70,95,227,237,98,128,3,15,233,238,244,229,231,242,225,108,128,34,44,236,239,247,236,233,238,101,129,32,23,70,124,227,237,98,128,3,51,239,246,229,242,236,233,238,229,227,237,98,128,3,63,240,242,233,237,229,237,239,100,128,2,186,246,229,242,244,233,227,225,108,2,70,168,70,174,226,225,114,128,32,22,236,233,238,229,225,226,239,246,229,227,237,98,128,3,14,239,240,239,237,239,230,111,128,49,9,243,241,245,225,242,101,128,51,200,99,4,70,218,70,225,70,234,71,5,225,242,239,110,128,1,15,229,228,233,236,236,97,128,30,17,233,242,99,2,70,242,70,247,236,101,128,36,211,245,237,230,236,229,248,226,229,236,239,119,128,30,19,242,239,225,116,128,1,17,100,4,71,22,71,103,71,113,71,164,97,4,71,32,71,42,71,49,71,74,226,229,238,231,225,236,105,128,9,161,228,229,246,97,128,9,33,231,117,2,71,56,71,65,234,225,242,225,244,105,128,10,161,242,237,245,235,232,105,128,10,33,108,2,71,80,71,89,225,242,225,226,233,99,128,6,136,230,233,238,225,236,225,242,225,226,233,99,128,251,137,228,232,225,228,229,246,97,128,9,92,232,97,3,71,122,71,132,71,139,226,229,238,231,225,236,105,128,9,162,228,229,246,97,128,9,34,231,117,2,71,146,71,155,234,225,242,225,244,105,128,10,162,242,237,245,235,232,105,128,10,34,239,116,2,71,171,71,180,225,227,227,229,238,116,128,30,11,226,229,236,239,119,128,30,13,101,8,71,206,72,3,72,10,72,35,72,45,72,56,72,101,72,137,99,2,71,212,71,249,233,237,225,236,243,229,240,225,242,225,244,239,114,2,71,230,71,239,225,242,225,226,233,99,128,6,107,240,229,242,243,233,225,110,128,6,107,249,242,233,236,236,233,99,128,4,52,231,242,229,101,128,0,176,232,105,2,72,17,72,26,232,229,226,242,229,119,128,5,173,242,225,231,225,238,97,128,48,103,233,227,239,240,244,233,99,128,3,239,235,225,244,225,235,225,238,97,128,48,199,108,2,72,62,72,85,229,244,101,2,72,70,72,77,236,229,230,116,128,35,43,242,233,231,232,116,128,35,38,244,97,129,3,180,72,92,244,245,242,238,229,100,128,1,141,238,239,237,233,238,225,244,239,242,237,233,238,245,243,239,238,229,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,248,250,104,128,2,164,104,2,72,148,72,198,97,3,72,156,72,166,72,173,226,229,238,231,225,236,105,128,9,167,228,229,246,97,128,9,39,231,117,2,72,180,72,189,234,225,242,225,244,105,128,10,167,242,237,245,235,232,105,128,10,39,239,239,107,128,2,87,105,6,72,218,73,11,73,71,73,82,73,93,73,103,97,2,72,224,72,246,236,249,244,233,235,225,244,239,238,239,115,129,3,133,72,240,227,237,98,128,3,68,237,239,238,100,129,38,102,72,255,243,245,233,244,247,232,233,244,101,128,38,98,229,242,229,243,233,115,133,0,168,73,30,73,38,73,49,73,55,73,63,225,227,245,244,101,128,246,215,226,229,236,239,247,227,237,98,128,3,36,227,237,98,128,3,8,231,242,225,246,101,128,246,216,244,239,238,239,115,128,3,133,232,233,242,225,231,225,238,97,128,48,98,235,225,244,225,235,225,238,97,128,48,194,244,244,239,237,225,242,107,128,48,3,246,105,2,73,110,73,121,228,101,129,0,247,73,117,115,128,34,35,243,233,239,238,243,236,225,243,104,128,34,21,234,229,227,249,242,233,236,236,233,99,128,4,82,235,243,232,225,228,101,128,37,147,108,2,73,161,73,172,233,238,229,226,229,236,239,119,128,30,15,243,241,245,225,242,101,128,51,151,109,2,73,187,73,195,225,227,242,239,110,128,1,17,239,238,239,243,240,225,227,101,128,255,68,238,226,236,239,227,107,128,37,132,111,10,73,237,73,249,74,3,74,14,74,25,74,97,74,102,74,113,74,228,74,254,227,232,225,228,225,244,232,225,105,128,14,14,228,229,235,244,232,225,105,128,14,20,232,233,242,225,231,225,238,97,128,48,105,235,225,244,225,235,225,238,97,128,48,201,236,236,225,114,132,0,36,74,40,74,51,74,63,74,74,233,238,230,229,242,233,239,114,128,246,227,237,239,238,239,243,240,225,227,101,128,255,4,239,236,228,243,244,249,236,101,128,247,36,115,2,74,80,74,87,237,225,236,108,128,254,105,245,240,229,242,233,239,114,128,246,228,238,103,128,32,171,242,245,243,241,245,225,242,101,128,51,38,116,6,74,127,74,144,74,166,74,177,74,209,74,216,225,227,227,229,238,116,129,2,217,74,138,227,237,98,128,3,7,226,229,236,239,247,99,2,74,155,74,160,237,98,128,3,35,239,237,98,128,3,35,235,225,244,225,235,225,238,97,128,48,251,236,229,243,115,2,74,186,74,190,105,128,1,49,106,129,246,190,74,196,243,244,242,239,235,229,232,239,239,107,128,2,132,237,225,244,104,128,34,197,244,229,228,227,233,242,227,236,101,128,37,204,245,226,236,229,249,239,228,240,225,244,225,104,129,251,31,74,245,232,229,226,242,229,119,128,251,31,247,238,244,225,227,107,2,75,9,75,20,226,229,236,239,247,227,237,98,128,3,30,237,239,100,128,2,213,240,225,242,229,110,128,36,159,243,245,240,229,242,233,239,114,128,246,235,116,2,75,51,75,57,225,233,108,128,2,86,239,240,226,225,114,128,1,140,117,2,75,71,75,82,232,233,242,225,231,225,238,97,128,48,101,235,225,244,225,235,225,238,97,128,48,197,122,132,1,243,75,105,75,114,75,133,75,170,225,236,244,239,238,101,128,2,163,99,2,75,120,75,127,225,242,239,110,128,1,198,245,242,108,128,2,165,101,2,75,139,75,159,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,225,227,249,242,233,236,236,233,99,128,4,85,232,229,227,249,242,233,236,236,233,99,128,4,95,101,151,0,101,75,233,75,252,76,30,77,4,77,66,77,99,77,111,77,134,77,187,79,43,79,101,79,203,80,63,80,198,81,17,81,48,81,110,81,163,82,98,82,231,82,251,83,39,83,130,97,2,75,239,75,246,227,245,244,101,128,0,233,242,244,104,128,38,65,98,3,76,4,76,13,76,23,229,238,231,225,236,105,128,9,143,239,240,239,237,239,230,111,128,49,28,242,229,246,101,128,1,21,99,5,76,42,76,115,76,129,76,161,76,250,97,2,76,48,76,109,238,228,242,97,3,76,59,76,66,76,77,228,229,246,97,128,9,13,231,245,234,225,242,225,244,105,128,10,141,246,239,247,229,236,243,233,231,110,2,76,91,76,98,228,229,246,97,128,9,69,231,245,234,225,242,225], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+225400); -/* memory initializer */ allocate([244,105,128,10,197,242,239,110,128,1,27,229,228,233,236,236,225,226,242,229,246,101,128,30,29,104,2,76,135,76,146,225,242,237,229,238,233,225,110,128,5,101,249,233,247,238,225,242,237,229,238,233,225,110,128,5,135,233,242,99,2,76,169,76,174,236,101,128,36,212,245,237,230,236,229,120,134,0,234,76,195,76,203,76,211,76,222,76,230,76,242,225,227,245,244,101,128,30,191,226,229,236,239,119,128,30,25,228,239,244,226,229,236,239,119,128,30,199,231,242,225,246,101,128,30,193,232,239,239,235,225,226,239,246,101,128,30,195,244,233,236,228,101,128,30,197,249,242,233,236,236,233,99,128,4,84,100,4,77,14,77,24,77,30,77,40,226,236,231,242,225,246,101,128,2,5,229,246,97,128,9,15,233,229,242,229,243,233,115,128,0,235,239,116,130,1,23,77,49,77,58,225,227,227,229,238,116,128,1,23,226,229,236,239,119,128,30,185,101,2,77,72,77,83,231,245,242,237,245,235,232,105,128,10,15,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,71,230,227,249,242,233,236,236,233,99,128,4,68,103,2,77,117,77,124,242,225,246,101,128,0,232,245,234,225,242,225,244,105,128,10,143,104,4,77,144,77,155,77,166,77,176,225,242,237,229,238,233,225,110,128,5,103,226,239,240,239,237,239,230,111,128,49,29,233,242,225,231,225,238,97,128,48,72,239,239,235,225,226,239,246,101,128,30,187,105,4,77,197,77,208,79,10,79,25,226,239,240,239,237,239,230,111,128,49,31,231,232,116,142,0,56,77,242,77,251,78,5,78,35,78,42,78,80,78,105,78,150,78,184,78,196,78,207,78,240,78,248,79,3,225,242,225,226,233,99,128,6,104,226,229,238,231,225,236,105,128,9,238,227,233,242,227,236,101,129,36,103,78,16,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,145,228,229,246,97,128,9,110,229,229,110,2,78,50,78,59,227,233,242,227,236,101,128,36,113,112,2,78,65,78,72,225,242,229,110,128,36,133,229,242,233,239,100,128,36,153,231,117,2,78,87,78,96,234,225,242,225,244,105,128,10,238,242,237,245,235,232,105,128,10,110,104,2,78,111,78,137,97,2,78,117,78,128,227,235,225,242,225,226,233,99,128,6,104,238,231,250,232,239,117,128,48,40,238,239,244,229,226,229,225,237,229,100,128,38,107,105,2,78,156,78,174,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,39,238,230,229,242,233,239,114,128,32,136,237,239,238,239,243,240,225,227,101,128,255,24,239,236,228,243,244,249,236,101,128,247,56,112,2,78,213,78,220,225,242,229,110,128,36,123,229,114,2,78,227,78,233,233,239,100,128,36,143,243,233,225,110,128,6,248,242,239,237,225,110,128,33,119,243,245,240,229,242,233,239,114,128,32,120,244,232,225,105,128,14,88,238,246,229,242,244,229,228,226,242,229,246,101,128,2,7,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,101,107,2,79,49,79,73,225,244,225,235,225,238,97,129,48,168,79,61,232,225,236,230,247,233,228,244,104,128,255,116,111,2,79,79,79,94,238,235,225,242,231,245,242,237,245,235,232,105,128,10,116,242,229,225,110,128,49,84,108,3,79,109,79,120,79,181,227,249,242,233,236,236,233,99,128,4,59,101,2,79,126,79,133,237,229,238,116,128,34,8,246,229,110,3,79,143,79,152,79,173,227,233,242,227,236,101,128,36,106,112,2,79,158,79,165,225,242,229,110,128,36,126,229,242,233,239,100,128,36,146,242,239,237,225,110,128,33,122,236,233,240,243,233,115,129,32,38,79,192,246,229,242,244,233,227,225,108,128,34,238,109,5,79,215,79,243,79,254,80,18,80,29,225,227,242,239,110,130,1,19,79,227,79,235,225,227,245,244,101,128,30,23,231,242,225,246,101,128,30,21,227,249,242,233,236,236,233,99,128,4,60,228,225,243,104,129,32,20,80,7,246,229,242,244,233,227,225,108,128,254,49,239,238,239,243,240,225,227,101,128,255,69,112,2,80,35,80,55,232,225,243,233,243,237,225,242,235,225,242,237,229,238,233,225,110,128,5,91,244,249,243,229,116,128,34,5,110,6,80,77,80,88,80,99,80,143,80,175,80,190,226,239,240,239,237,239,230,111,128,49,35,227,249,242,233,236,236,233,99,128,4,61,100,2,80,105,80,124,225,243,104,129,32,19,80,113,246,229,242,244,233,227,225,108,128,254,50,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,163,103,130,1,75,80,151,80,162,226,239,240,239,237,239,230,111,128,49,37,232,229,227,249,242,233,236,236,233,99,128,4,165,232,239,239,235,227,249,242,233,236,236,233,99,128,4,200,243,240,225,227,101,128,32,2,111,3,80,206,80,214,80,223,231,239,238,229,107,128,1,25,235,239,242,229,225,110,128,49,83,240,229,110,130,2,91,80,233,80,242,227,236,239,243,229,100,128,2,154,242,229,246,229,242,243,229,100,130,2,92,81,1,81,10,227,236,239,243,229,100,128,2,94,232,239,239,107,128,2,93,112,2,81,23,81,30,225,242,229,110,128,36,160,243,233,236,239,110,129,3,181,81,40,244,239,238,239,115,128,3,173,241,117,2,81,55,81,99,225,108,130,0,61,81,64,81,76,237,239,238,239,243,240,225,227,101,128,255,29,115,2,81,82,81,89,237,225,236,108,128,254,102,245,240,229,242,233,239,114,128,32,124,233,246,225,236,229,238,227,101,128,34,97,114,3,81,118,81,129,81,140,226,239,240,239,237,239,230,111,128,49,38,227,249,242,233,236,236,233,99,128,4,64,229,246,229,242,243,229,100,129,2,88,81,152,227,249,242,233,236,236,233,99,128,4,77,115,6,81,177,81,188,81,208,82,33,82,78,82,88,227,249,242,233,236,236,233,99,128,4,65,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,171,104,132,2,131,81,220,81,227,82,2,82,17,227,245,242,108,128,2,134,239,242,116,2,81,235,81,242,228,229,246,97,128,9,14,246,239,247,229,236,243,233,231,238,228,229,246,97,128,9,70,242,229,246,229,242,243,229,228,236,239,239,112,128,1,170,243,241,245,225,244,242,229,246,229,242,243,229,100,128,2,133,237,225,236,108,2,82,42,82,53,232,233,242,225,231,225,238,97,128,48,71,235,225,244,225,235,225,238,97,129,48,167,82,66,232,225,236,230,247,233,228,244,104,128,255,106,244,233,237,225,244,229,100,128,33,46,245,240,229,242,233,239,114,128,246,236,116,5,82,110,82,136,82,140,82,157,82,223,97,130,3,183,82,118,82,128,242,237,229,238,233,225,110,128,5,104,244,239,238,239,115,128,3,174,104,128,0,240,233,236,228,101,129,30,189,82,149,226,229,236,239,119,128,30,27,238,225,232,244,97,3,82,169,82,201,82,210,230,239,245,235,104,2,82,179,82,188,232,229,226,242,229,119,128,5,145,236,229,230,244,232,229,226,242,229,119,128,5,145,232,229,226,242,229,119,128,5,145,236,229,230,244,232,229,226,242,229,119,128,5,145,245,242,238,229,100,128,1,221,117,2,82,237,82,246,235,239,242,229,225,110,128,49,97,242,111,128,32,172,246,239,247,229,236,243,233,231,110,3,83,11,83,21,83,28,226,229,238,231,225,236,105,128,9,199,228,229,246,97,128,9,71,231,245,234,225,242,225,244,105,128,10,199,120,2,83,45,83,118,227,236,225,109,132,0,33,83,60,83,71,83,98,83,110,225,242,237,229,238,233,225,110,128,5,92,100,2,83,77,83,82,226,108,128,32,60,239,247,110,129,0,161,83,90,243,237,225,236,108,128,247,161,237,239,238,239,243,240,225,227,101,128,255,1,243,237,225,236,108,128,247,33,233,243,244,229,238,244,233,225,108,128,34,3,250,104,131,2,146,83,141,83,160,83,171,99,2,83,147,83,154,225,242,239,110,128,1,239,245,242,108,128,2,147,242,229,246,229,242,243,229,100,128,1,185,244,225,233,108,128,1,186,102,140,0,102,83,206,84,32,84,43,84,52,84,64,84,167,84,183,86,191,86,204,86,230,88,107,88,115,97,4,83,216,83,223,83,234,83,245,228,229,246,97,128,9,94,231,245,242,237,245,235,232,105,128,10,94,232,242,229,238,232,229,233,116,128,33,9,244,232,97,3,83,255,84,8,84,20,225,242,225,226,233,99,128,6,78,236,239,247,225,242,225,226,233,99,128,6,78,244,225,238,225,242,225,226,233,99,128,6,75,226,239,240,239,237,239,230,111,128,49,8,227,233,242,227,236,101,128,36,213,228,239,244,225,227,227,229,238,116,128,30,31,101,3,84,72,84,150,84,160,104,4,84,82,84,105,84,119,84,135,225,114,2,84,89,84,96,225,226,233,99,128,6,65,237,229,238,233,225,110,128,5,134,230,233,238,225,236,225,242,225,226,233,99,128,254,210,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,211,237,229,228,233,225,236,225,242,225,226,233,99,128,254,212,233,227,239,240,244,233,99,128,3,229,237,225,236,101,128,38,64,102,130,251,0,84,175,84,179,105,128,251,3,108,128,251,4,105,136,251,1,84,203,84,243,84,254,85,20,85,142,85,159,85,167,85,180,230,244,229,229,110,2,84,213,84,222,227,233,242,227,236,101,128,36,110,112,2,84,228,84,235,225,242,229,110,128,36,130,229,242,233,239,100,128,36,150,231,245,242,229,228,225,243,104,128,32,18,236,236,229,100,2,85,7,85,13,226,239,120,128,37,160,242,229,227,116,128,37,172,238,225,108,5,85,34,85,73,85,90,85,107,85,123,235,225,102,130,5,218,85,44,85,64,228,225,231,229,243,104,129,251,58,85,55,232,229,226,242,229,119,128,251,58,232,229,226,242,229,119,128,5,218,237,229,109,129,5,221,85,81,232,229,226,242,229,119,128,5,221,238,245,110,129,5,223,85,98,232,229,226,242,229,119,128,5,223,240,101,129,5,227,85,114,232,229,226,242,229,119,128,5,227,244,243,225,228,105,129,5,229,85,133,232,229,226,242,229,119,128,5,229,242,243,244,244,239,238,229,227,232,233,238,229,243,101,128,2,201,243,232,229,249,101,128,37,201,244,225,227,249,242,233,236,236,233,99,128,4,115,246,101,142,0,53,85,213,85,222,85,232,86,6,86,13,86,23,86,48,86,75,86,109,86,121,86,132,86,165,86,173,86,184,225,242,225,226,233,99,128,6,101,226,229,238,231,225,236,105,128,9,235,227,233,242,227,236,101,129,36,100,85,243,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,142,228,229,246,97,128,9,107,229,233,231,232,244,232,115,128,33,93,231,117,2,86,30,86,39,234,225,242,225,244,105,128,10,235,242,237,245,235,232,105,128,10,107,232,97,2,86,55,86,66,227,235,225,242,225,226,233,99,128,6,101,238,231,250,232,239,117,128,48,37,105,2,86,81,86,99,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,36,238,230,229,242,233,239,114,128,32,133,237,239,238,239,243,240,225,227,101,128,255,21,239,236,228,243,244,249,236,101,128,247,53,112,2,86,138,86,145,225,242,229,110,128,36,120,229,114,2,86,152,86,158,233,239,100,128,36,140,243,233,225,110,128,6,245,242,239,237,225,110,128,33,116,243,245,240,229,242,233,239,114,128,32,117,244,232,225,105,128,14,85,108,129,251,2,86,197,239,242,233,110,128,1,146,109,2,86,210,86,221,239,238,239,243,240,225,227,101,128,255,70,243,241,245,225,242,101,128,51,153,111,4,86,240,87,6,87,18,87,25,230,97,2,86,247,86,255,238,244,232,225,105,128,14,31,244,232,225,105,128,14,29,238,231,237,225,238,244,232,225,105,128,14,79,242,225,236,108,128,34,0,245,114,142,0,52,87,58,87,67,87,77,87,107,87,114,87,139,87,166,87,200,87,212,87,231,87,242,88,19,88,27,88,38,225,242,225,226,233,99,128,6,100,226,229,238,231,225,236,105,128,9,234,227,233,242,227,236,101,129,36,99,87,88,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,141,228,229,246,97,128,9,106,231,117,2,87,121,87,130,234,225,242,225,244,105,128,10,234,242,237,245,235,232,105,128,10,106,232,97,2,87,146,87,157,227,235,225,242,225,226,233,99,128,6,100,238,231,250,232,239,117,128,48,36,105,2,87,172,87,190,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,35,238,230,229,242,233,239,114,128,32,132,237,239,238,239,243,240,225,227,101,128,255,20,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,247,239,236,228,243,244,249,236,101,128,247,52,112,2,87,248,87,255,225,242,229,110,128,36,119,229,114,2,88,6,88,12,233,239,100,128,36,139,243,233,225,110,128,6,244,242,239,237,225,110,128,33,115,243,245,240,229,242,233,239,114,128,32,116,116,2,88,44,88,82,229,229,110,2,88,52,88,61,227,233,242,227,236,101,128,36,109,112,2,88,67,88,74,225,242,229,110,128,36,129,229,242,233,239,100,128,36,149,104,2,88,88,88,93,225,105,128,14,84,244,239,238,229,227,232,233,238,229,243,101,128,2,203,240,225,242,229,110,128,36,161,242,97,2,88,122,88,130,227,244,233,239,110,128,32,68,238,99,128,32,163,103,144,0,103,88,171,89,117,89,140,89,201,89,218,90,139,91,132,91,217,91,230,92,88,92,113,92,141,92,163,93,108,93,130,93,232,97,9,88,191,88,201,88,208,88,215,89,23,89,48,89,59,89,70,89,104,226,229,238,231,225,236,105,128,9,151,227,245,244,101,128,1,245,228,229,246,97,128,9,23,102,4,88,225,88,234,88,248,89,8,225,242,225,226,233,99,128,6,175,230,233,238,225,236,225,242,225,226,233,99,128,251,147,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,148,237,229,228,233,225,236,225,242,225,226,233,99,128,251,149,231,117,2,89,30,89,39,234,225,242,225,244,105,128,10,151,242,237,245,235,232,105,128,10,23,232,233,242,225,231,225,238,97,128,48,76,235,225,244,225,235,225,238,97,128,48,172,237,237,97,130,3,179,89,80,89,93,236,225,244,233,238,243,237,225,236,108,128,2,99,243,245,240,229,242,233,239,114,128,2,224,238,231,233,225,227,239,240,244,233,99,128,3,235,98,2,89,123,89,133,239,240,239,237,239,230,111,128,49,13,242,229,246,101,128,1,31,99,4,89,150,89,157,89,166,89,188,225,242,239,110,128,1,231,229,228,233,236,236,97,128,1,35,233,242,99,2,89,174,89,179,236,101,128,36,214,245,237,230,236,229,120,128,1,29,239,237,237,225,225,227,227,229,238,116,128,1,35,228,239,116,129,1,33,89,209,225,227,227,229,238,116,128,1,33,101,6,89,232,89,243,89,254,90,9,90,28,90,130,227,249,242,233,236,236,233,99,128,4,51,232,233,242,225,231,225,238,97,128,48,82,235,225,244,225,235,225,238,97,128,48,178,239,237,229,244,242,233,227,225,236,236,249,229,241,245,225,108,128,34,81,114,3,90,36,90,85,90,95,229,243,104,3,90,46,90,61,90,70,225,227,227,229,238,244,232,229,226,242,229,119,128,5,156,232,229,226,242,229,119,128,5,243,237,245,241,228,225,237,232,229,226,242,229,119,128,5,157,237,225,238,228,226,236,115,128,0,223,243,232,225,249,233,109,2,90,106,90,121,225,227,227,229,238,244,232,229,226,242,229,119,128,5,158,232,229,226,242,229,119,128,5,244,244,225,237,225,242,107,128,48,19,104,5,90,151,91,28,91,91,91,116,91,122,97,4,90,161,90,171,90,194,90,219,226,229,238,231,225,236,105,128,9,152,100,2,90,177,90,188,225,242,237,229,238,233,225,110,128,5,114,229,246,97,128,9,24,231,117,2,90,201,90,210,234,225,242,225,244,105,128,10,152,242,237,245,235,232,105,128,10,24,233,110,4,90,230,90,239,90,253,91,13,225,242,225,226,233,99,128,6,58,230,233,238,225,236,225,242,225,226,233,99,128,254,206,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,207,237,229,228,233,225,236,225,242,225,226,233,99,128,254,208,101,3,91,36,91,57,91,74,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,149,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,147,245,240,244,245,242,238,227,249,242,233,236,236,233,99,128,4,145,232,97,2,91,98,91,105,228,229,246,97,128,9,90,231,245,242,237,245,235,232,105,128,10,90,239,239,107,128,2,96,250,243,241,245,225,242,101,128,51,147,105,3,91,140,91,151,91,162,232,233,242,225,231,225,238,97,128,48,78,235,225,244,225,235,225,238,97,128,48,174,109,2,91,168,91,179,225,242,237,229,238,233,225,110,128,5,99,229,108,130,5,210,91,188,91,208,228,225,231,229,243,104,129,251,50,91,199,232,229,226,242,229,119,128,251,50,232,229,226,242,229,119,128,5,210,234,229,227,249,242,233,236,236,233,99,128,4,83,236,239,244,244,225,108,2,91,241,92,2,233,238,246,229,242,244,229,228,243,244,242,239,235,101,128,1,190,243,244,239,112,132,2,148,92,17,92,28,92,34,92,66,233,238,246,229,242,244,229,100,128,2,150,237,239,100,128,2,192,242,229,246,229,242,243,229,100,130,2,149,92,49,92,55,237,239,100,128,2,193,243,245,240,229,242,233,239,114,128,2,228,243,244,242,239,235,101,129,2,161,92,77,242,229,246,229,242,243,229,100,128,2,162,109,2,92,94,92,102,225,227,242,239,110,128,30,33,239,238,239,243,240,225,227,101,128,255,71,111,2,92,119,92,130,232,233,242,225,231,225,238,97,128,48,84,235,225,244,225,235,225,238,97,128,48,180,240,97,2,92,148,92,154,242,229,110,128,36,162,243,241,245,225,242,101,128,51,172,114,2,92,169,93,10,97,2,92,175,92,183,228,233,229,238,116,128,34,7,246,101,134,0,96,92,200,92,211,92,228,92,235,92,244,93,0,226,229,236,239,247,227,237,98,128,3,22,99,2,92,217,92,222,237,98,128,3,0,239,237,98,128,3,0,228,229,246,97,128,9,83,236,239,247,237,239,100,128,2,206,237,239,238,239,243,240,225,227,101,128,255,64,244,239,238,229,227,237,98,128,3,64,229,225,244,229,114,132,0,62,93,26,93,45,93,57,93,100,229,241,245,225,108,129,34,101,93,36,239,242,236,229,243,115,128,34,219,237,239,238,239,243,240,225,227,101,128,255,30,111,2,93,63,93,89,114,2,93,69,93,82,229,241,245,233,246,225,236,229,238,116,128,34,115,236,229,243,115,128,34,119,246,229,242,229,241,245,225,108,128,34,103,243,237,225,236,108,128,254,101,115,2,93,114,93,122,227,242,233,240,116,128,2,97,244,242,239,235,101,128,1,229,117,4,93,140,93,151,93,208,93,219,232,233,242,225,231,225,238,97,128,48,80,233,108,2,93,158,93,183,236,229,237,239,116,2,93,168,93,175,236,229,230,116,128,0,171,242,233,231,232,116,128,0,187,243,233,238,231,108,2,93,193,93,200,236,229,230,116,128,32,57,242,233,231,232,116,128,32,58,235,225,244,225,235,225,238,97,128,48,176,242,225,237,245,243,241,245,225,242,101,128,51,24,249,243,241,245,225,242,101,128,51,201,104,144,0,104,94,22,96,164,96,199,96,236,97,20,98,164,98,184,99,149,99,161,99,173,100,241,100,249,101,4,101,13,101,93,101,97,97,13,94,50,94,89,94,99,94,129,94,154,94,232,94,244,95,13,95,28,95,57,95,70,95,128,95,137,97,2,94,56,94,75,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,169,236,244,239,238,229,225,242,225,226,233,99,128,6,193,226,229,238,231,225,236,105,128,9,185,228,101,2,94,106,94,124,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,179,246,97,128,9,57,231,117,2,94,136,94,145,234,225,242,225,244,105,128,10,185,242,237,245,235,232,105,128,10,57,104,4,94,164,94,173,94,187,94,217,225,242,225,226,233,99,128,6,45,230,233,238,225,236,225,242,225,226,233,99,128,254,162,105,2,94,193,94,208,238,233,244,233,225,236,225,242,225,226,233,99,128,254,163,242,225,231,225,238,97,128,48,111,237,229,228,233,225,236,225,242,225,226,233,99,128,254,164,233,244,245,243,241,245,225,242,101,128,51,42,235,225,244,225,235,225,238,97,129,48,207,95,1,232,225,236,230,247,233,228,244,104,128,255,138,236,225,238,244,231,245,242,237,245,235,232,105,128,10,77,237,250,97,2,95,36,95,45,225,242,225,226,233,99,128,6,33,236,239,247,225,242,225,226,233,99,128,6,33,238,231,245,236,230,233,236,236,229,114,128,49,100,114,2,95,76,95,92,228,243,233,231,238,227,249,242,233,236,236,233,99,128,4,74,240,239,239,110,2,95,101,95,114,236,229,230,244,226,225,242,226,245,112,128,33,188,242,233,231,232,244,226,225,242,226,245,112,128,33,192,243,241,245,225,242,101,128,51,202,244,225,102,3,95,147,95,239,96,74,240,225,244,225,104,134,5,178,95,167,95,172,95,186,95,195,95,210,95,226,177,54,128,5,178,50,2,95,178,95,182,51,128,5,178,102,128,5,178,232,229,226,242,229,119,128,5,178,238,225,242,242,239,247,232,229,226,242,229,119,128,5,178,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,178,247,233,228,229,232,229,226,242,229,119,128,5,178,241,225,237,225,244,115,135,5,179,96,6,96,11,96,16,96,21,96,30,96,45,96,61,177,98,128,5,179,178,56,128,5,179,179,52,128,5,179,232,229,226,242,229,119,128,5,179,238,225,242,242,239,247,232,229,226,242,229,119,128,5,179,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,179,247,233,228,229,232,229,226,242,229,119,128,5,179,243,229,231,239,108,135,5,177,96,96,96,101,96,106,96,111,96,120,96,135,96,151,177,55,128,5,177,178,52,128,5,177,179,48,128,5,177,232,229,226,242,229,119,128,5,177,238,225,242,242,239,247,232,229,226,242,229,119,128,5,177,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,177,247,233,228,229,232,229,226,242,229,119,128,5,177,98,3,96,172,96,177,96,187,225,114,128,1,39,239,240,239,237,239,230,111,128,49,15,242,229,246,229,226,229,236,239,119,128,30,43,99,2,96,205,96,214,229,228,233,236,236,97,128,30,41,233,242,99,2,96,222,96,227,236,101,128,36,215,245,237,230,236,229,120,128,1,37,100,2,96,242,96,252,233,229,242,229,243,233,115,128,30,39,239,116,2,97,3,97,12,225,227,227,229,238,116,128,30,35,226,229,236,239,119,128,30,37,101,136,5,212,97,40,97,73,97,93,98,66,98,82,98,127,98,136,98,149,225,242,116,129,38,101,97,48,243,245,233,116,2,97,57,97,65,226,236,225,227,107,128,38,101,247,232,233,244,101,128,38,97,228,225,231,229,243,104,129,251,52,97,84,232,229,226,242,229,119,128,251,52,104,6,97,107,97,135,97,143,97,193,97,239,98,32,97,2,97,113,97,127,236,244,239,238,229,225,242,225,226,233,99,128,6,193,242,225,226,233,99,128,6,71,229,226,242,229,119,128,5,212,230,233,238,225,236,97,2,97,154,97,185,236,116,2,97,161,97,173,239,238,229,225,242,225,226,233,99,128,251,167,244,247,239,225,242,225,226,233,99,128,254,234,242,225,226,233,99,128,254,234,232,225,237,250,225,225,226,239,246,101,2,97,208,97,222,230,233,238,225,236,225,242,225,226,233,99,128,251,165,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,251,164,105,2,97,245,98,23,238,233,244,233,225,236,97,2,98,1,98,15,236,244,239,238,229,225,242,225,226,233,99,128,251,168,242,225,226,233,99,128,254,235,242,225,231,225,238,97,128,48,120,237,229,228,233,225,236,97,2,98,44,98,58,236,244,239,238,229,225,242,225,226,233,99,128,251,169,242,225,226,233,99,128,254,236,233,243,229,233,229,242,225,243,241,245,225,242,101,128,51,123,107,2,98,88,98,112,225,244,225,235,225,238,97,129,48,216,98,100,232,225,236,230,247,233,228,244,104,128,255,141,245,244,225,225,242,245,243,241,245,225,242,101,128,51,54,238,231,232,239,239,107,128,2,103,242,245,244,245,243,241,245,225,242,101,128,51,57,116,129,5,215,98,155,232,229,226,242,229,119,128,5,215,232,239,239,107,129,2,102,98,173,243,245,240,229,242,233,239,114,128,2,177,105,4,98,194,99,23,99,34,99,59,229,245,104,4,98,206,98,241,99,0,99,9,97,2,98,212,98,227,227,233,242,227,236,229,235,239,242,229,225,110,128,50,123,240,225,242,229,238,235,239,242,229,225,110,128,50,27,227,233,242,227,236,229,235,239,242,229,225,110,128,50,109,235,239,242,229,225,110,128,49,78,240,225,242,229,238,235,239,242,229,225,110,128,50,13,232,233,242,225,231,225,238,97,128,48,114,235,225,244,225,235,225,238,97,129,48,210,99,47,232,225,236,230,247,233,228,244,104,128,255,139,242,233,113,134,5,180,99,77,99,82,99,96,99,105,99,120,99,136,177,52,128,5,180,50,2,99,88,99,92,49,128,5,180,100,128,5,180,232,229,226,242,229,119,128,5,180,238,225,242,242,239,247,232,229,226,242,229,119,128,5,180,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,180,247,233,228,229,232,229,226,242,229,119,128,5,180,236,233,238,229,226,229,236,239,119,128,30,150,237,239,238,239,243,240,225,227,101,128,255,72,111,9,99,193,99,204,99,228,99,253,100,85,100,98,100,184,100,224,100,235,225,242,237,229,238,233,225,110,128,5,112,232,105,2,99,211,99,219,240,244,232,225,105,128,14,43,242,225,231,225,238,97,128,48,123,235,225,244,225,235,225,238,97,129,48,219,99,241,232,225,236,230,247,233,228,244,104,128,255,142,236,225,109,135,5,185,100,17,100,22,100,27,100,32,100,41,100,56,100,72,177,57,128,5,185,178,54,128,5,185,179,50,128,5,185,232,229,226,242,229,119,128,5,185,238,225,242,242,239,247,232,229,226,242,229,119,128,5,185,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,185,247,233,228,229,232,229,226,242,229,119,128,5,185,238,239,235,232,245,235,244,232,225,105,128,14,46,111,2,100,104,100,174,107,4,100,114,100,126,100,132,100,154,225,226,239,246,229,227,239,237,98,128,3,9,227,237,98,128,3,9,240,225,236,225,244,225,236,233,250,229,228,226,229,236,239,247,227,237,98,128,3,33,242,229,244,242,239,230,236,229,248,226,229,236,239,247,227,237,98,128,3,34,238,243,241,245,225,242,101,128,51,66,114,2,100,190,100,217,105,2,100,196,100,205,227,239,240,244,233,99,128,3,233,250,239,238,244,225,236,226,225,114,128,32,21,238,227,237,98,128,3,27,244,243,240,242,233,238,231,115,128,38,104,245,243,101,128,35,2,240,225,242,229,110,128,36,163,243,245,240,229,242,233,239,114,128,2,176,244,245,242,238,229,100,128,2,101,117,4,101,23,101,34,101,47,101,72,232,233,242,225,231,225,238,97,128,48,117,233,233,244,239,243,241,245,225,242,101,128,51,51,235,225,244,225,235,225,238,97,129,48,213,101,60,232,225,236,230,247,233,228,244,104,128,255,140,238,231,225,242,245,237,236,225,245,116,129,2,221,101,87,227,237,98,128,3,11,118,128,1,149,249,240,232,229,110,132,0,45,101,113,101,124,101,136,101,159,233,238,230,229,242,233,239,114,128,246,229,237,239,238,239,243,240,225,227,101,128,255,13,115,2,101,142,101,149,237,225,236,108,128,254,99,245,240,229,242,233,239,114,128,246,230,244,247,111,128,32,16,105,149,0,105,101,211,101,234,102,12,102,59,105,197,106,61,106,98,106,125,107,31,107,35,107,73,107,95,107,179,108,88,108,163,108,171,108,184,109,15,109,72,109,100,109,144,225,99,2,101,218,101,224,245,244,101,128,0,237,249,242,233,236,236,233,99,128,4,79,98,3,101,242,101,251,102,5,229,238,231,225,236,105,128,9,135,239,240,239,237,239,230,111,128,49,39,242,229,246,101,128,1,45,99,3,102,20,102,27,102,49,225,242,239,110,128,1,208,233,242,99,2,102,35,102,40,236,101,128,36,216,245,237,230,236,229,120,128,0,238,249,242,233,236,236,233,99,128,4,86,100,4,102,69,102,79,105,154,105,187,226,236,231,242,225,246,101,128,2,9,101,2,102,85,105,149,239,231,242,225,240,104,7,102,106,102,120,102,133,105,62,105,93,105,106,105,118,229,225,242,244,232,227,233,242,227,236,101,128,50,143,230,233,242,229,227,233,242,227,236,101,128,50,139,233,99,14,102,164,102,180,103,23,103,77,103,143,103,172,103,188,103,245,104,38,104,50,104,77,104,144,105,26,105,55,225,236,236,233,225,238,227,229,240,225,242,229,110,128,50,63,99,4,102,190,102,201,102,215,102,222,225,236,236,240,225,242,229,110,128,50,58,229,238,244,242,229,227,233,242,227,236,101,128,50,165,236,239,243,101,128,48,6,111,3,102,230,102,245,103,9,237,237,97,129,48,1,102,238,236,229,230,116,128,255,100,238,231,242,225,244,245,236,225,244,233,239,238,240,225,242,229,110,128,50,55,242,242,229,227,244,227,233,242,227,236,101,128,50,163,101,3,103,31,103,43,103,60,225,242,244,232,240,225,242,229,110,128,50,47,238,244,229,242,240,242,233,243,229,240,225,242,229,110,128,50,61,248,227,229,236,236,229,238,244,227,233,242,227,236,101,128,50,157,102,2,103,83,103,98,229,243,244,233,246,225,236,240,225,242,229,110,128,50,64,105,2,103,104,103,133,238,225,238,227,233,225,108,2,103,116,103,125,227,233,242,227,236,101,128,50,150,240,225,242,229,110,128,50,54,242,229,240,225,242,229,110,128,50,43,104,2,103,149,103,160,225,246,229,240,225,242,229,110,128,50,50,233,231,232,227,233,242,227,236,101,128,50,164,233,244,229,242,225,244,233,239,238,237,225,242,107,128,48,5,108,3,103,196,103,222,103,234,225,226,239,114,2,103,205,103,214,227,233,242,227,236,101,128,50,152,240,225,242,229,110,128,50,56,229,230,244,227,233,242,227,236,101,128,50,167,239,247,227,233,242,227,236,101,128,50,166,109,2,103,251,104,27,101,2,104,1,104,16,228,233,227,233,238,229,227,233,242,227,236,101,128,50,169,244,225,236,240,225,242,229,110,128,50,46,239,239,238,240,225,242,229,110,128,50,42,238,225,237,229,240,225,242,229,110,128,50,52,112,2,104,56,104,64,229,242,233,239,100,128,48,2,242,233,238,244,227,233,242,227,236,101,128,50,158,114,2,104,83,104,131,101,3,104,91,104,102,104,117,225,227,232,240,225,242,229,110,128,50,67,240,242,229,243,229,238,244,240,225,242,229,110,128,50,57,243,239,245,242,227,229,240,225,242,229,110,128,50,62,233,231,232,244,227,233,242,227,236,101,128,50,168,115,5,104,156,104,185,104,199,104,224,104,252,101,2,104,162,104,175,227,242,229,244,227,233,242,227,236,101,128,50,153,236,230,240,225,242,229,110,128,50,66,239,227,233,229,244,249,240,225,242,229,110,128,50,51,112,2,104,205,104,211,225,227,101,128,48,0,229,227,233,225,236,240,225,242,229,110,128,50,53,116,2,104,230,104,241,239,227,235,240,225,242,229,110,128,50,49,245,228,249,240,225,242,229,110,128,50,59,117,2,105,2,105,11,238,240,225,242,229,110,128,50,48,240,229,242,246,233,243,229,240,225,242,229,110,128,50,60,119,2,105,32,105,44,225,244,229,242,240,225,242,229,110,128,50,44,239,239,228,240,225,242,229,110,128,50,45,250,229,242,111,128,48,7,109,2,105,68,105,81,229,244,225,236,227,233,242,227,236,101,128,50,142,239,239,238,227,233,242,227,236,101,128,50,138,238,225,237,229,227,233,242,227,236,101,128,50,148,243,245,238,227,233,242,227,236,101,128,50,144,119,2,105,124,105,137,225,244,229,242,227,233,242,227,236,101,128,50,140,239,239,228,227,233,242,227,236,101,128,50,141,246,97,128,9,7,233,229,242,229,243,233,115,130,0,239,105,168,105,176,225,227,245,244,101,128,30,47,227,249,242,233,236,236,233,99,128,4,229,239,244,226,229,236,239,119,128,30,203,101,3,105,205,105,221,105,232,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,215,227,249,242,233,236,236,233,99,128,4,53,245,238,103,4,105,244,106,23,106,38,106,47,97,2,105,250,106,9,227,233,242,227,236,229,235,239,242,229,225,110,128,50,117,240,225,242,229,238,235,239,242,229,225,110,128,50,21,227,233,242,227,236,229,235,239,242,229,225,110,128,50,103,235,239,242,229,225,110,128,49,71,240,225,242,229,238,235,239,242,229,225,110,128,50,7,103,2,106,67,106,74,242,225,246,101,128,0,236,117,2,106,80,106,89,234,225,242,225,244,105,128,10,135,242,237,245,235,232,105,128,10,7,104,2,106,104,106,114,233,242,225,231,225,238,97,128,48,68,239,239,235,225,226,239,246,101,128,30,201,105,8,106,143,106,153,106,164,106,171,106,196,106,212,106,227,106,243,226,229,238,231,225,236,105,128,9,136,227,249,242,233,236,236,233,99,128,4,56,228,229,246,97,128,9,8,231,117,2,106,178,106,187,234,225,242,225,244,105,128,10,136,242,237,245,235,232,105,128,10,8,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,64,238,246,229,242,244,229,228,226,242,229,246,101,128,2,11,243,232,239,242,244,227,249,242,233,236,236,233,99,128,4,57,246,239,247,229,236,243,233,231,110,3,107,3,107,13,107,20,226,229,238,231,225,236,105,128,9,192,228,229,246,97,128,9,64,231,245,234,225,242,225,244,105,128,10,192,106,128,1,51,107,2,107,41,107,65,225,244,225,235,225,238,97,129,48,164,107,53,232,225,236,230,247,233,228,244,104,128,255,114,239,242,229,225,110,128,49,99,108,2,107,79,107,84,228,101,128,2,220,245,249,232,229,226,242,229,119,128,5,172,109,2,107,101,107,168,97,3,107,109,107,129,107,154,227,242,239,110,129,1,43,107,118,227,249,242,233,236,236,233,99,128,4,227,231,229,239,242,225,240,240,242,239,248,233,237,225,244,229,236,249,229,241,245,225,108,128,34,83,244,242,225,231,245,242,237,245,235,232,105,128,10,63,239,238,239,243,240,225,227,101,128,255,73,110,5,107,191,107,201,107,210,107,222,108,50,227,242,229,237,229,238,116,128,34,6,230,233,238,233,244,121,128,34,30,233,225,242,237,229,238,233,225,110,128,5,107,116,2,107,228,108,40,101,2,107,234,108,29,231,242,225,108,131,34,43,107,247,108,9,108,14,98,2,107,253,108,5,239,244,244,239,109,128,35,33,116,128,35,33,229,120,128,248,245,116,2,108,20,108,25,239,112,128,35,32,112,128,35,32,242,243,229,227,244,233,239,110,128,34,41,233,243,241,245,225,242,101,128,51,5,118,3,108,58,108,67,108,76,226,245,236,236,229,116,128,37,216,227,233,242,227,236,101,128,37,217,243,237,233,236,229,230,225,227,101,128,38,59,111,3,108,96,108,107,108,115,227,249,242,233,236,236,233,99,128,4,81,231,239,238,229,107,128,1,47,244,97,131,3,185,108,126,108,147,108,155,228,233,229,242,229,243,233,115,129,3,202,108,139,244,239,238,239,115,128,3,144,236,225,244,233,110,128,2,105,244,239,238,239,115,128,3,175,240,225,242,229,110,128,36,164,242,233,231,245,242,237,245,235,232,105,128,10,114,115,4,108,194,108,239,108,253,109,5,237,225,236,108,2,108,203,108,214,232,233,242,225,231,225,238,97,128,48,67,235,225,244,225,235,225,238,97,129,48,163,108,227,232,225,236,230,247,233,228,244,104,128,255,104,243,232,225,242,226,229,238,231,225,236,105,128,9,250,244,242,239,235,101,128,2,104,245,240,229,242,233,239,114,128,246,237,116,2,109,21,109,55,229,242,225,244,233,239,110,2,109,33,109,44,232,233,242,225,231,225,238,97,128,48,157,235,225,244,225,235,225,238,97,128,48,253,233,236,228,101,129,1,41,109,64,226,229,236,239,119,128,30,45,117,2,109,78,109,89,226,239,240,239,237,239,230,111,128,49,41,227,249,242,233,236,236,233,99,128,4,78,246,239,247,229,236,243,233,231,110,3,109,116,109,126,109,133,226,229,238,231,225,236,105,128,9,191,228,229,246,97,128,9,63,231,245,234,225,242,225,244,105,128,10,191,250,232,233,244,243,97,2,109,155,109,166,227,249,242,233,236,236,233,99,128,4,117,228,226,236,231,242,225,246,229,227,249,242,233,236,236,233,99,128,4,119,106,138,0,106,109,209,110,16,110,27,110,77,110,93,110,206,111,19,111,24,111,36,111,44,97,4,109,219,109,230,109,240,109,247,225,242,237,229,238,233,225,110,128,5,113,226,229,238,231,225,236,105,128,9,156,228,229,246,97,128,9,28,231,117,2,109,254,110,7,234,225,242,225,244,105,128,10,156,242,237,245,235,232,105,128,10,28,226,239,240,239,237,239,230,111,128,49,16,99,3,110,35,110,42,110,64,225,242,239,110,128,1,240,233,242,99,2,110,50,110,55,236,101,128,36,217,245,237,230,236,229,120,128,1,53,242,239,243,243,229,228,244,225,233,108,128,2,157,228,239,244,236,229,243,243,243,244,242,239,235,101,128,2,95,101,3,110,101,110,112,110,177,227,249,242,233,236,236,233,99,128,4,88,229,109,4,110,123,110,132,110,146,110,162,225,242,225,226,233,99,128,6,44,230,233,238,225,236,225,242,225,226,233,99,128,254,158,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,159,237,229,228,233,225,236,225,242,225,226,233,99,128,254,160,104,2,110,183,110,192,225,242,225,226,233,99,128,6,152,230,233,238,225,236,225,242,225,226,233,99,128,251,139,104,2,110,212,111,6,97,3,110,220,110,230,110,237,226,229,238,231,225,236,105,128,9,157,228,229,246,97,128,9,29,231,117,2,110,244,110,253,234,225,242,225,244,105,128,10,157,242,237,245,235,232,105,128,10,29,229,232,225,242,237,229,238,233,225,110,128,5,123,233,115,128,48,4,237,239,238,239,243,240,225,227,101,128,255,74,240,225,242,229,110,128,36,165,243,245,240,229,242,233,239,114,128,2,178,107,146,0,107,111,95,113,184,113,195,114,1,114,12,114,102,114,116,115,224,116,164,116,177,116,203,116,252,117,134,117,156,117,169,117,192,117,234,117,244,97,12,111,121,111,153,111,175,111,205,112,63,112,88,112,118,112,143,112,249,113,7,113,130,113,159,98,2,111,127,111,144,225,243,232,235,233,242,227,249,242,233,236,236,233,99,128,4,161,229,238,231,225,236,105,128,9,149,99,2,111,159,111,165,245,244,101,128,30,49,249,242,233,236,236,233,99,128,4,58,228,101,2,111,182,111,200,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,155,246,97,128,9,21,102,135,5,219,111,223,111,232,111,252,112,10,112,19,112,35,112,50,225,242,225,226,233,99,128,6,67,228,225,231,229,243,104,129,251,59,111,243,232,229,226,242,229,119,128,251,59,230,233,238,225,236,225,242,225,226,233,99,128,254,218,232,229,226,242,229,119,128,5,219,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,219,237,229,228,233,225,236,225,242,225,226,233,99,128,254,220,242,225,230,229,232,229,226,242,229,119,128,251,77,231,117,2,112,70,112,79,234,225,242,225,244,105,128,10,149,242,237,245,235,232,105,128,10,21,104,2,112,94,112,104,233,242,225,231,225,238,97,128,48,75,239,239,235,227,249,242,233,236,236,233,99,128,4,196,235,225,244,225,235,225,238,97,129,48,171,112,131,232,225,236,230,247,233,228,244,104,128,255,118,112,2,112,149,112,170,240,97,129,3,186,112,156,243,249,237,226,239,236,231,242,229,229,107,128,3,240,249,229,239,245,110,3,112,182,112,196,112,230,237,233,229,245,237,235,239,242,229,225,110,128,49,113,112,2,112,202,112,217,232,233,229,245,240,232,235,239,242,229,225,110,128,49,132,233,229,245,240,235,239,242,229,225,110,128,49,120,243,243,225,238,231,240,233,229,245,240,235,239,242,229,225,110,128,49,121,242,239,242,233,233,243,241,245,225,242,101,128,51,13,115,5,113,19,113,63,113,78,113,86,113,114,232,233,228,225,225,245,244,111,2,113,32,113,41,225,242,225,226,233,99,128,6,64,238,239,243,233,228,229,226,229,225,242,233,238,231,225,242,225,226,233,99,128,6,64,237,225,236,236,235,225,244,225,235,225,238,97,128,48,245,241,245,225,242,101,128,51,132,242,97,2,113,93,113,102,225,242,225,226,233,99,128,6,80,244,225,238,225,242,225,226,233,99,128,6,77,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,159,244,225,232,233,242,225,240,242,239,236,239,238,231,237,225,242,235,232,225,236,230,247,233,228,244,104,128,255,112,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,157,226,239,240,239,237,239,230,111,128,49,14,99,4,113,205,113,227,113,236,113,244,97,2,113,211,113,221,236,243,241,245,225,242,101,128,51,137,242,239,110,128,1,233,229,228,233,236,236,97,128,1,55,233,242,227,236,101,128,36,218,239,237,237,225,225,227,227,229,238,116,128,1,55,228,239,244,226,229,236,239,119,128,30,51,101,4,114,22,114,49,114,74,114,86,104,2,114,28,114,39,225,242,237,229,238,233,225,110,128,5,132,233,242,225,231,225,238,97,128,48,81,235,225,244,225,235,225,238,97,129,48,177,114,62,232,225,236,230,247,233,228,244,104,128,255,121,238,225,242,237,229,238,233,225,110,128,5,111,243,237,225,236,236,235,225,244,225,235,225,238,97,128,48,246,231,242,229,229,238,236,225,238,228,233,99,128,1,56,104,6,114,130,115,3,115,14,115,39,115,126,115,214,97,5,114,142,114,152,114,163,114,170,114,195,226,229,238,231,225,236,105,128,9,150,227,249,242,233,236,236,233,99,128,4,69,228,229,246,97,128,9,22,231,117,2,114,177,114,186,234,225,242,225,244,105,128,10,150,242,237,245,235,232,105,128,10,22,104,4,114,205,114,214,114,228,114,244,225,242,225,226,233,99,128,6,46,230,233,238,225,236,225,242,225,226,233,99,128,254,166,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,167,237,229,228,233,225,236,225,242,225,226,233,99,128,254,168,229,233,227,239,240,244,233,99,128,3,231,232,97,2,115,21,115,28,228,229,246,97,128,9,89,231,245,242,237,245,235,232,105,128,10,89,233,229,245,235,104,4,115,53,115,88,115,103,115,112,97,2,115,59,115,74,227,233,242,227,236,229,235,239,242,229,225,110,128,50,120,240,225,242,229,238,235,239,242,229,225,110,128,50,24,227,233,242,227,236,229,235,239,242,229,225,110,128,50,106,235,239,242,229,225,110,128,49,75,240,225,242,229,238,235,239,242,229,225,110,128,50,10,111,4,115,136,115,185,115,195,115,200,235,104,4,115,147,115,156,115,165,115,175,225,233,244,232,225,105,128,14,2,239,238,244,232,225,105,128,14,5,245,225,244,244,232,225,105,128,14,3,247,225,233,244,232,225,105,128,14,4,237,245,244,244,232,225,105,128,14,91,239,107,128,1,153,242,225,235,232,225,238,231,244,232,225,105,128,14,6,250,243,241,245,225,242,101,128,51,145,105,4,115,234,115,245,116,14,116,63,232,233,242,225,231,225,238,97,128,48,77,235,225,244,225,235,225,238,97,129,48,173,116,2,232,225,236,230,247,233,228,244,104,128,255,119,242,111,3,116,23,116,38,116,54,231,245,242,225,237,245,243,241,245,225,242,101,128,51,21,237,229,229,244,239,242,245,243,241,245,225,242,101,128,51,22,243,241,245,225,242,101,128,51,20,249,229,239,107,5,116,78,116,113,116,128,116,137,116,151,97,2,116,84,116,99,227,233,242,227,236,229,235,239,242,229,225,110,128,50,110,240,225,242,229,238], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+235640); -/* memory initializer */ allocate([235,239,242,229,225,110,128,50,14,227,233,242,227,236,229,235,239,242,229,225,110,128,50,96,235,239,242,229,225,110,128,49,49,240,225,242,229,238,235,239,242,229,225,110,128,50,0,243,233,239,243,235,239,242,229,225,110,128,49,51,234,229,227,249,242,233,236,236,233,99,128,4,92,108,2,116,183,116,194,233,238,229,226,229,236,239,119,128,30,53,243,241,245,225,242,101,128,51,152,109,3,116,211,116,225,116,236,227,245,226,229,228,243,241,245,225,242,101,128,51,166,239,238,239,243,240,225,227,101,128,255,75,243,241,245,225,242,229,228,243,241,245,225,242,101,128,51,162,111,5,117,8,117,34,117,72,117,84,117,98,104,2,117,14,117,24,233,242,225,231,225,238,97,128,48,83,237,243,241,245,225,242,101,128,51,192,235,97,2,117,41,117,49,233,244,232,225,105,128,14,1,244,225,235,225,238,97,129,48,179,117,60,232,225,236,230,247,233,228,244,104,128,255,122,239,240,239,243,241,245,225,242,101,128,51,30,240,240,225,227,249,242,233,236,236,233,99,128,4,129,114,2,117,104,117,124,229,225,238,243,244,225,238,228,225,242,228,243,249,237,226,239,108,128,50,127,239,238,233,243,227,237,98,128,3,67,240,97,2,117,141,117,147,242,229,110,128,36,166,243,241,245,225,242,101,128,51,170,243,233,227,249,242,233,236,236,233,99,128,4,111,116,2,117,175,117,184,243,241,245,225,242,101,128,51,207,245,242,238,229,100,128,2,158,117,2,117,198,117,209,232,233,242,225,231,225,238,97,128,48,79,235,225,244,225,235,225,238,97,129,48,175,117,222,232,225,236,230,247,233,228,244,104,128,255,120,246,243,241,245,225,242,101,128,51,184,247,243,241,245,225,242,101,128,51,190,108,146,0,108,118,38,120,65,120,94,120,160,120,198,121,94,121,103,121,119,121,143,121,161,122,23,122,64,122,199,122,207,122,240,122,249,123,1,123,63,97,7,118,54,118,64,118,71,118,78,118,103,118,119,120,53,226,229,238,231,225,236,105,128,9,178,227,245,244,101,128,1,58,228,229,246,97,128,9,50,231,117,2,118,85,118,94,234,225,242,225,244,105,128,10,178,242,237,245,235,232,105,128,10,50,235,235,232,225,238,231,249,225,239,244,232,225,105,128,14,69,109,10,118,141,119,80,119,97,119,135,119,149,119,168,119,184,119,204,119,224,119,247,97,2,118,147,119,72,236,229,102,4,118,159,118,173,119,9,119,26,230,233,238,225,236,225,242,225,226,233,99,128,254,252,232,225,237,250,97,2,118,183,118,224,225,226,239,246,101,2,118,193,118,207,230,233,238,225,236,225,242,225,226,233,99,128,254,248,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,247,226,229,236,239,119,2,118,234,118,248,230,233,238,225,236,225,242,225,226,233,99,128,254,250,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,249,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,251,237,225,228,228,225,225,226,239,246,101,2,119,41,119,55,230,233,238,225,236,225,242,225,226,233,99,128,254,246,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,245,242,225,226,233,99,128,6,68,226,228,97,129,3,187,119,88,243,244,242,239,235,101,128,1,155,229,100,130,5,220,119,106,119,126,228,225,231,229,243,104,129,251,60,119,117,232,229,226,242,229,119,128,251,60,232,229,226,242,229,119,128,5,220,230,233,238,225,236,225,242,225,226,233,99,128,254,222,232,225,232,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,202,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,223,234,229,229,237,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,201,235,232,225,232,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,203,236,225,237,232,229,232,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,253,242,237,101,2,119,254,120,11,228,233,225,236,225,242,225,226,233,99,128,254,224,229,109,2,120,18,120,37,232,225,232,233,238,233,244,233,225,236,225,242,225,226,233,99,128,253,136,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,204,242,231,229,227,233,242,227,236,101,128,37,239,98,3,120,73,120,78,120,84,225,114,128,1,154,229,236,116,128,2,108,239,240,239,237,239,230,111,128,49,12,99,4,120,104,120,111,120,120,120,147,225,242,239,110,128,1,62,229,228,233,236,236,97,128,1,60,233,242,99,2,120,128,120,133,236,101,128,36,219,245,237,230,236,229,248,226,229,236,239,119,128,30,61,239,237,237,225,225,227,227,229,238,116,128,1,60,228,239,116,130,1,64,120,170,120,179,225,227,227,229,238,116,128,1,64,226,229,236,239,119,129,30,55,120,189,237,225,227,242,239,110,128,30,57,101,3,120,206,120,244,121,89,230,116,2,120,213,120,229,225,238,231,236,229,225,226,239,246,229,227,237,98,128,3,26,244,225,227,235,226,229,236,239,247,227,237,98,128,3,24,243,115,132,0,60,121,1,121,23,121,35,121,81,229,241,245,225,108,129,34,100,121,11,239,242,231,242,229,225,244,229,114,128,34,218,237,239,238,239,243,240,225,227,101,128,255,28,111,2,121,41,121,70,114,2,121,47,121,60,229,241,245,233,246,225,236,229,238,116,128,34,114,231,242,229,225,244,229,114,128,34,118,246,229,242,229,241,245,225,108,128,34,102,243,237,225,236,108,128,254,100,250,104,128,2,110,230,226,236,239,227,107,128,37,140,232,239,239,235,242,229,244,242,239,230,236,229,120,128,2,109,105,2,121,125,121,130,242,97,128,32,164,247,238,225,242,237,229,238,233,225,110,128,5,108,106,129,1,201,121,149,229,227,249,242,233,236,236,233,99,128,4,89,108,132,246,192,121,173,121,197,121,208,121,217,97,2,121,179,121,186,228,229,246,97,128,9,51,231,245,234,225,242,225,244,105,128,10,179,233,238,229,226,229,236,239,119,128,30,59,236,225,228,229,246,97,128,9,52,246,239,227,225,236,233,99,3,121,231,121,241,121,248,226,229,238,231,225,236,105,128,9,225,228,229,246,97,128,9,97,246,239,247,229,236,243,233,231,110,2,122,6,122,16,226,229,238,231,225,236,105,128,9,227,228,229,246,97,128,9,99,109,3,122,31,122,44,122,55,233,228,228,236,229,244,233,236,228,101,128,2,107,239,238,239,243,240,225,227,101,128,255,76,243,241,245,225,242,101,128,51,208,111,6,122,78,122,90,122,132,122,143,122,149,122,191,227,232,245,236,225,244,232,225,105,128,14,44,231,233,227,225,108,3,122,102,122,108,122,127,225,238,100,128,34,39,238,239,116,129,0,172,122,116,242,229,246,229,242,243,229,100,128,35,16,239,114,128,34,40,236,233,238,231,244,232,225,105,128,14,37,238,231,115,128,1,127,247,236,233,238,101,2,122,159,122,182,99,2,122,165,122,177,229,238,244,229,242,236,233,238,101,128,254,78,237,98,128,3,50,228,225,243,232,229,100,128,254,77,250,229,238,231,101,128,37,202,240,225,242,229,110,128,36,167,115,3,122,215,122,222,122,230,236,225,243,104,128,1,66,241,245,225,242,101,128,33,19,245,240,229,242,233,239,114,128,246,238,244,243,232,225,228,101,128,37,145,245,244,232,225,105,128,14,38,246,239,227,225,236,233,99,3,123,15,123,25,123,32,226,229,238,231,225,236,105,128,9,140,228,229,246,97,128,9,12,246,239,247,229,236,243,233,231,110,2,123,46,123,56,226,229,238,231,225,236,105,128,9,226,228,229,246,97,128,9,98,248,243,241,245,225,242,101,128,51,211,109,144,0,109,123,109,125,218,125,243,126,14,126,39,127,92,127,114,128,169,128,199,128,248,129,99,129,121,129,146,129,155,130,182,130,210,97,12,123,135,123,145,123,209,123,216,123,241,124,33,125,125,125,150,125,155,125,169,125,181,125,186,226,229,238,231,225,236,105,128,9,174,99,2,123,151,123,203,242,239,110,132,0,175,123,165,123,176,123,182,123,191,226,229,236,239,247,227,237,98,128,3,49,227,237,98,128,3,4,236,239,247,237,239,100,128,2,205,237,239,238,239,243,240,225,227,101,128,255,227,245,244,101,128,30,63,228,229,246,97,128,9,46,231,117,2,123,223,123,232,234,225,242,225,244,105,128,10,174,242,237,245,235,232,105,128,10,46,104,2,123,247,124,23,225,240,225,235,104,2,124,1,124,10,232,229,226,242,229,119,128,5,164,236,229,230,244,232,229,226,242,229,119,128,5,164,233,242,225,231,225,238,97,128,48,126,105,5,124,45,124,114,124,177,124,207,125,113,227,232,225,244,244,225,247,97,3,124,60,124,91,124,98,236,239,119,2,124,68,124,79,236,229,230,244,244,232,225,105,128,248,149,242,233,231,232,244,244,232,225,105,128,248,148,244,232,225,105,128,14,75,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,147,229,107,3,124,123,124,154,124,161,236,239,119,2,124,131,124,142,236,229,230,244,244,232,225,105,128,248,140,242,233,231,232,244,244,232,225,105,128,248,139,244,232,225,105,128,14,72,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,138,232,225,238,225,235,225,116,2,124,189,124,200,236,229,230,244,244,232,225,105,128,248,132,244,232,225,105,128,14,49,116,3,124,215,124,243,125,50,225,233,235,232,117,2,124,225,124,236,236,229,230,244,244,232,225,105,128,248,137,244,232,225,105,128,14,71,232,111,3,124,252,125,27,125,34,236,239,119,2,125,4,125,15,236,229,230,244,244,232,225,105,128,248,143,242,233,231,232,244,244,232,225,105,128,248,142,244,232,225,105,128,14,73,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,141,242,105,3,125,59,125,90,125,97,236,239,119,2,125,67,125,78,236,229,230,244,244,232,225,105,128,248,146,242,233,231,232,244,244,232,225,105,128,248,145,244,232,225,105,128,14,74,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,144,249,225,237,239,235,244,232,225,105,128,14,70,235,225,244,225,235,225,238,97,129,48,222,125,138,232,225,236,230,247,233,228,244,104,128,255,143,236,101,128,38,66,238,243,249,239,238,243,241,245,225,242,101,128,51,71,241,225,230,232,229,226,242,229,119,128,5,190,242,115,128,38,66,115,2,125,192,125,210,239,242,225,227,233,242,227,236,229,232,229,226,242,229,119,128,5,175,241,245,225,242,101,128,51,131,98,2,125,224,125,234,239,240,239,237,239,230,111,128,49,7,243,241,245,225,242,101,128,51,212,99,2,125,249,126,1,233,242,227,236,101,128,36,220,245,226,229,228,243,241,245,225,242,101,128,51,165,228,239,116,2,126,22,126,31,225,227,227,229,238,116,128,30,65,226,229,236,239,119,128,30,67,101,7,126,55,126,182,126,193,126,208,126,233,127,14,127,26,101,2,126,61,126,169,109,4,126,71,126,80,126,94,126,110,225,242,225,226,233,99,128,6,69,230,233,238,225,236,225,242,225,226,233,99,128,254,226,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,227,237,101,2,126,117,126,130,228,233,225,236,225,242,225,226,233,99,128,254,228,229,237,105,2,126,138,126,153,238,233,244,233,225,236,225,242,225,226,233,99,128,252,209,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,72,244,239,242,245,243,241,245,225,242,101,128,51,77,232,233,242,225,231,225,238,97,128,48,129,233,250,233,229,242,225,243,241,245,225,242,101,128,51,126,235,225,244,225,235,225,238,97,129,48,225,126,221,232,225,236,230,247,233,228,244,104,128,255,146,109,130,5,222,126,241,127,5,228,225,231,229,243,104,129,251,62,126,252,232,229,226,242,229,119,128,251,62,232,229,226,242,229,119,128,5,222,238,225,242,237,229,238,233,225,110,128,5,116,242,235,232,97,3,127,37,127,46,127,79,232,229,226,242,229,119,128,5,165,235,229,230,245,236,97,2,127,57,127,66,232,229,226,242,229,119,128,5,166,236,229,230,244,232,229,226,242,229,119,128,5,166,236,229,230,244,232,229,226,242,229,119,128,5,165,104,2,127,98,127,104,239,239,107,128,2,113,250,243,241,245,225,242,101,128,51,146,105,6,127,128,127,165,128,46,128,57,128,82,128,139,228,100,2,127,135,127,160,236,229,228,239,244,235,225,244,225,235,225,238,225,232,225,236,230,247,233,228,244,104,128,255,101,239,116,128,0,183,229,245,109,5,127,179,127,214,127,229,127,238,128,33,97,2,127,185,127,200,227,233,242,227,236,229,235,239,242,229,225,110,128,50,114,240,225,242,229,238,235,239,242,229,225,110,128,50,18,227,233,242,227,236,229,235,239,242,229,225,110,128,50,100,235,239,242,229,225,110,128,49,65,112,2,127,244,128,20,97,2,127,250,128,8,238,243,233,239,243,235,239,242,229,225,110,128,49,112,242,229,238,235,239,242,229,225,110,128,50,4,233,229,245,240,235,239,242,229,225,110,128,49,110,243,233,239,243,235,239,242,229,225,110,128,49,111,232,233,242,225,231,225,238,97,128,48,127,235,225,244,225,235,225,238,97,129,48,223,128,70,232,225,236,230,247,233,228,244,104,128,255,144,238,117,2,128,89,128,134,115,132,34,18,128,101,128,112,128,121,128,127,226,229,236,239,247,227,237,98,128,3,32,227,233,242,227,236,101,128,34,150,237,239,100,128,2,215,240,236,245,115,128,34,19,244,101,128,32,50,242,105,2,128,146,128,160,226,225,225,242,245,243,241,245,225,242,101,128,51,74,243,241,245,225,242,101,128,51,73,108,2,128,175,128,190,239,238,231,236,229,231,244,245,242,238,229,100,128,2,112,243,241,245,225,242,101,128,51,150,109,3,128,207,128,221,128,232,227,245,226,229,228,243,241,245,225,242,101,128,51,163,239,238,239,243,240,225,227,101,128,255,77,243,241,245,225,242,229,228,243,241,245,225,242,101,128,51,159,111,5,129,4,129,30,129,55,129,65,129,74,104,2,129,10,129,20,233,242,225,231,225,238,97,128,48,130,237,243,241,245,225,242,101,128,51,193,235,225,244,225,235,225,238,97,129,48,226,129,43,232,225,236,230,247,233,228,244,104,128,255,147,236,243,241,245,225,242,101,128,51,214,237,225,244,232,225,105,128,14,33,246,229,242,243,243,241,245,225,242,101,129,51,167,129,89,228,243,241,245,225,242,101,128,51,168,240,97,2,129,106,129,112,242,229,110,128,36,168,243,241,245,225,242,101,128,51,171,115,2,129,127,129,136,243,241,245,225,242,101,128,51,179,245,240,229,242,233,239,114,128,246,239,244,245,242,238,229,100,128,2,111,117,141,0,181,129,185,129,189,129,199,129,223,129,233,129,255,130,10,130,35,130,58,130,68,130,98,130,162,130,172,49,128,0,181,225,243,241,245,225,242,101,128,51,130,227,104,2,129,206,129,216,231,242,229,225,244,229,114,128,34,107,236,229,243,115,128,34,106,230,243,241,245,225,242,101,128,51,140,103,2,129,239,129,246,242,229,229,107,128,3,188,243,241,245,225,242,101,128,51,141,232,233,242,225,231,225,238,97,128,48,128,235,225,244,225,235,225,238,97,129,48,224,130,23,232,225,236,230,247,233,228,244,104,128,255,145,108,2,130,41,130,50,243,241,245,225,242,101,128,51,149,244,233,240,236,121,128,0,215,237,243,241,245,225,242,101,128,51,155,238,225,104,2,130,76,130,85,232,229,226,242,229,119,128,5,163,236,229,230,244,232,229,226,242,229,119,128,5,163,115,2,130,104,130,153,233,99,3,130,113,130,130,130,141,225,236,238,239,244,101,129,38,106,130,124,228,226,108,128,38,107,230,236,225,244,243,233,231,110,128,38,109,243,232,225,242,240,243,233,231,110,128,38,111,243,241,245,225,242,101,128,51,178,246,243,241,245,225,242,101,128,51,182,247,243,241,245,225,242,101,128,51,188,118,2,130,188,130,201,237,229,231,225,243,241,245,225,242,101,128,51,185,243,241,245,225,242,101,128,51,183,119,2,130,216,130,229,237,229,231,225,243,241,245,225,242,101,128,51,191,243,241,245,225,242,101,128,51,189,110,150,0,110,131,30,131,164,131,188,131,254,132,23,132,81,132,91,132,158,132,201,134,235,134,253,135,22,135,53,135,79,135,144,137,126,137,134,137,159,137,167,138,135,138,145,138,155,97,8,131,48,131,68,131,75,131,82,131,107,131,118,131,143,131,155,98,2,131,54,131,63,229,238,231,225,236,105,128,9,168,236,97,128,34,7,227,245,244,101,128,1,68,228,229,246,97,128,9,40,231,117,2,131,89,131,98,234,225,242,225,244,105,128,10,168,242,237,245,235,232,105,128,10,40,232,233,242,225,231,225,238,97,128,48,106,235,225,244,225,235,225,238,97,129,48,202,131,131,232,225,236,230,247,233,228,244,104,128,255,133,240,239,243,244,242,239,240,232,101,128,1,73,243,241,245,225,242,101,128,51,129,98,2,131,170,131,180,239,240,239,237,239,230,111,128,49,11,243,240,225,227,101,128,0,160,99,4,131,198,131,205,131,214,131,241,225,242,239,110,128,1,72,229,228,233,236,236,97,128,1,70,233,242,99,2,131,222,131,227,236,101,128,36,221,245,237,230,236,229,248,226,229,236,239,119,128,30,75,239,237,237,225,225,227,227,229,238,116,128,1,70,228,239,116,2,132,6,132,15,225,227,227,229,238,116,128,30,69,226,229,236,239,119,128,30,71,101,3,132,31,132,42,132,67,232,233,242,225,231,225,238,97,128,48,109,235,225,244,225,235,225,238,97,129,48,205,132,55,232,225,236,230,247,233,228,244,104,128,255,136,247,243,232,229,241,229,236,243,233,231,110,128,32,170,230,243,241,245,225,242,101,128,51,139,103,2,132,97,132,147,97,3,132,105,132,115,132,122,226,229,238,231,225,236,105,128,9,153,228,229,246,97,128,9,25,231,117,2,132,129,132,138,234,225,242,225,244,105,128,10,153,242,237,245,235,232,105,128,10,25,239,238,231,245,244,232,225,105,128,14,7,104,2,132,164,132,174,233,242,225,231,225,238,97,128,48,147,239,239,107,2,132,182,132,189,236,229,230,116,128,2,114,242,229,244,242,239,230,236,229,120,128,2,115,105,4,132,211,133,124,133,135,133,193,229,245,110,7,132,229,133,8,133,40,133,54,133,63,133,96,133,109,97,2,132,235,132,250,227,233,242,227,236,229,235,239,242,229,225,110,128,50,111,240,225,242,229,238,235,239,242,229,225,110,128,50,15,227,105,2,133,15,133,27,229,245,227,235,239,242,229,225,110,128,49,53,242,227,236,229,235,239,242,229,225,110,128,50,97,232,233,229,245,232,235,239,242,229,225,110,128,49,54,235,239,242,229,225,110,128,49,52,240,97,2,133,70,133,84,238,243,233,239,243,235,239,242,229,225,110,128,49,104,242,229,238,235,239,242,229,225,110,128,50,1,243,233,239,243,235,239,242,229,225,110,128,49,103,244,233,235,229,245,244,235,239,242,229,225,110,128,49,102,232,233,242,225,231,225,238,97,128,48,107,107,2,133,141,133,165,225,244,225,235,225,238,97,129,48,203,133,153,232,225,236,230,247,233,228,244,104,128,255,134,232,225,232,233,116,2,133,175,133,186,236,229,230,244,244,232,225,105,128,248,153,244,232,225,105,128,14,77,238,101,141,0,57,133,224,133,233,133,243,134,17,134,24,134,49,134,76,134,110,134,122,134,133,134,166,134,174,134,185,225,242,225,226,233,99,128,6,105,226,229,238,231,225,236,105,128,9,239,227,233,242,227,236,101,129,36,104,133,254,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,146,228,229,246,97,128,9,111,231,117,2,134,31,134,40,234,225,242,225,244,105,128,10,239,242,237,245,235,232,105,128,10,111,232,97,2,134,56,134,67,227,235,225,242,225,226,233,99,128,6,105,238,231,250,232,239,117,128,48,41,105,2,134,82,134,100,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,40,238,230,229,242,233,239,114,128,32,137,237,239,238,239,243,240,225,227,101,128,255,25,239,236,228,243,244,249,236,101,128,247,57,112,2,134,139,134,146,225,242,229,110,128,36,124,229,114,2,134,153,134,159,233,239,100,128,36,144,243,233,225,110,128,6,249,242,239,237,225,110,128,33,120,243,245,240,229,242,233,239,114,128,32,121,116,2,134,191,134,229,229,229,110,2,134,199,134,208,227,233,242,227,236,101,128,36,114,112,2,134,214,134,221,225,242,229,110,128,36,134,229,242,233,239,100,128,36,154,232,225,105,128,14,89,106,129,1,204,134,241,229,227,249,242,233,236,236,233,99,128,4,90,235,225,244,225,235,225,238,97,129,48,243,135,10,232,225,236,230,247,233,228,244,104,128,255,157,108,2,135,28,135,42,229,231,242,233,231,232,244,236,239,238,103,128,1,158,233,238,229,226,229,236,239,119,128,30,73,109,2,135,59,135,70,239,238,239,243,240,225,227,101,128,255,78,243,241,245,225,242,101,128,51,154,110,2,135,85,135,135,97,3,135,93,135,103,135,110,226,229,238,231,225,236,105,128,9,163,228,229,246,97,128,9,35,231,117,2,135,117,135,126,234,225,242,225,244,105,128,10,163,242,237,245,235,232,105,128,10,35,238,225,228,229,246,97,128,9,41,111,6,135,158,135,169,135,194,135,235,136,187,137,114,232,233,242,225,231,225,238,97,128,48,110,235,225,244,225,235,225,238,97,129,48,206,135,182,232,225,236,230,247,233,228,244,104,128,255,137,110,3,135,202,135,218,135,227,226,242,229,225,235,233,238,231,243,240,225,227,101,128,0,160,229,238,244,232,225,105,128,14,19,245,244,232,225,105,128,14,25,239,110,7,135,252,136,5,136,19,136,53,136,69,136,110,136,169,225,242,225,226,233,99,128,6,70,230,233,238,225,236,225,242,225,226,233,99,128,254,230,231,232,245,238,238,97,2,136,30,136,39,225,242,225,226,233,99,128,6,186,230,233,238,225,236,225,242,225,226,233,99,128,251,159,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,231,234,229,229,237,105,2,136,79,136,94,238,233,244,233,225,236,225,242,225,226,233,99,128,252,210,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,75,237,101,2,136,117,136,130,228,233,225,236,225,242,225,226,233,99,128,254,232,229,237,105,2,136,138,136,153,238,233,244,233,225,236,225,242,225,226,233,99,128,252,213,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,78,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,141,116,7,136,203,136,214,136,243,137,22,137,34,137,54,137,80,227,239,238,244,225,233,238,115,128,34,12,101,2,136,220,136,236,236,229,237,229,238,116,129,34,9,136,231,239,102,128,34,9,241,245,225,108,128,34,96,231,242,229,225,244,229,114,129,34,111,136,255,238,239,114,2,137,7,137,15,229,241,245,225,108,128,34,113,236,229,243,115,128,34,121,233,228,229,238,244,233,227,225,108,128,34,98,236,229,243,115,129,34,110,137,43,238,239,242,229,241,245,225,108,128,34,112,112,2,137,60,137,70,225,242,225,236,236,229,108,128,34,38,242,229,227,229,228,229,115,128,34,128,243,117,3,137,89,137,96,137,105,226,243,229,116,128,34,132,227,227,229,229,228,115,128,34,129,240,229,242,243,229,116,128,34,133,247,225,242,237,229,238,233,225,110,128,5,118,240,225,242,229,110,128,36,169,115,2,137,140,137,149,243,241,245,225,242,101,128,51,177,245,240,229,242,233,239,114,128,32,127,244,233,236,228,101,128,0,241,117,132,3,189,137,179,137,190,138,15,138,98,232,233,242,225,231,225,238,97,128,48,108,107,2,137,196,137,220,225,244,225,235,225,238,97,129,48,204,137,208,232,225,236,230,247,233,228,244,104,128,255,135,244,97,3,137,229,137,239,137,246,226,229,238,231,225,236,105,128,9,188,228,229,246,97,128,9,60,231,117,2,137,253,138,6,234,225,242,225,244,105,128,10,188,242,237,245,235,232,105,128,10,60,109,2,138,21,138,55,226,229,242,243,233,231,110,130,0,35,138,35,138,47,237,239,238,239,243,240,225,227,101,128,255,3,243,237,225,236,108,128,254,95,229,114,2,138,62,138,94,225,236,243,233,231,110,2,138,73,138,81,231,242,229,229,107,128,3,116,236,239,247,229,242,231,242,229,229,107,128,3,117,111,128,33,22,110,130,5,224,138,106,138,126,228,225,231,229,243,104,129,251,64,138,117,232,229,226,242,229,119,128,251,64,232,229,226,242,229,119,128,5,224,246,243,241,245,225,242,101,128,51,181,247,243,241,245,225,242,101,128,51,187,249,97,3,138,164,138,174,138,181,226,229,238,231,225,236,105,128,9,158,228,229,246,97,128,9,30,231,117,2,138,188,138,197,234,225,242,225,244,105,128,10,158,242,237,245,235,232,105,128,10,30,111,147,0,111,138,248,139,14,139,92,140,6,140,78,140,93,140,133,141,0,141,21,141,59,141,70,141,248,143,82,143,146,143,179,143,225,144,98,144,145,144,157,97,2,138,254,139,5,227,245,244,101,128,0,243,238,231,244,232,225,105,128,14,45,98,4,139,24,139,66,139,75,139,85,225,242,242,229,100,130,2,117,139,36,139,47,227,249,242,233,236,236,233,99,128,4,233,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,235,229,238,231,225,236,105,128,9,147,239,240,239,237,239,230,111,128,49,27,242,229,246,101,128,1,79,99,3,139,100,139,173,139,252,97,2,139,106,139,167,238,228,242,97,3,139,117,139,124,139,135,228,229,246,97,128,9,17,231,245,234,225,242,225,244,105,128,10,145,246,239,247,229,236,243,233,231,110,2,139,149,139,156,228,229,246,97,128,9,73,231,245,234,225,242,225,244,105,128,10,201,242,239,110,128,1,210,233,242,99,2,139,181,139,186,236,101,128,36,222,245,237,230,236,229,120,133,0,244,139,205,139,213,139,224,139,232,139,244,225,227,245,244,101,128,30,209,228,239,244,226,229,236,239,119,128,30,217,231,242,225,246,101,128,30,211,232,239,239,235,225,226,239,246,101,128,30,213,244,233,236,228,101,128,30,215,249,242,233,236,236,233,99,128,4,62,100,4,140,16,140,39,140,45,140,68,226,108,2,140,23,140,31,225,227,245,244,101,128,1,81,231,242,225,246,101,128,2,13,229,246,97,128,9,19,233,229,242,229,243,233,115,129,0,246,140,57,227,249,242,233,236,236,233,99,128,4,231,239,244,226,229,236,239,119,128,30,205,101,129,1,83,140,84,235,239,242,229,225,110,128,49,90,103,3,140,101,140,116,140,123,239,238,229,107,129,2,219,140,110,227,237,98,128,3,40,242,225,246,101,128,0,242,245,234,225,242,225,244,105,128,10,147,104,4,140,143,140,154,140,164,140,242,225,242,237,229,238,233,225,110,128,5,133,233,242,225,231,225,238,97,128,48,74,111,2,140,170,140,180,239,235,225,226,239,246,101,128,30,207,242,110,133,1,161,140,195,140,203,140,214,140,222,140,234,225,227,245,244,101,128,30,219,228,239,244,226,229,236,239,119,128,30,227,231,242,225,246,101,128,30,221,232,239,239,235,225,226,239,246,101,128,30,223,244,233,236,228,101,128,30,225,245,238,231,225,242,245,237,236,225,245,116,128,1,81,105,129,1,163,141,6,238,246,229,242,244,229,228,226,242,229,246,101,128,2,15,107,2,141,27,141,51,225,244,225,235,225,238,97,129,48,170,141,39,232,225,236,230,247,233,228,244,104,128,255,117,239,242,229,225,110,128,49,87,236,229,232,229,226,242,229,119,128,5,171,109,6,141,84,141,112,141,119,141,208,141,219,141,237,225,227,242,239,110,130,1,77,141,96,141,104,225,227,245,244,101,128,30,83,231,242,225,246,101,128,30,81,228,229,246,97,128,9,80,229,231,97,133,3,201,141,135,141,139,141,150,141,164,141,180,49,128,3,214,227,249,242,233,236,236,233,99,128,4,97,236,225,244,233,238,227,236,239,243,229,100,128,2,119,242,239,245,238,228,227,249,242,233,236,236,233,99,128,4,123,116,2,141,186,141,201,233,244,236,239,227,249,242,233,236,236,233,99,128,4,125,239,238,239,115,128,3,206,231,245,234,225,242,225,244,105,128,10,208,233,227,242,239,110,129,3,191,141,229,244,239,238,239,115,128,3,204,239,238,239,243,240,225,227,101,128,255,79,238,101,145,0,49,142,31,142,40,142,50,142,80,142,105,142,114,142,123,142,148,142,182,142,216,142,228,142,247,143,2,143,35,143,45,143,53,143,64,225,242,225,226,233,99,128,6,97,226,229,238,231,225,236,105,128,9,231,227,233,242,227,236,101,129,36,96,142,61,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,138,100,2,142,86,142,92,229,246,97,128,9,103,239,244,229,238,236,229,225,228,229,114,128,32,36,229,233,231,232,244,104,128,33,91,230,233,244,244,229,100,128,246,220,231,117,2,142,130,142,139,234,225,242,225,244,105,128,10,231,242,237,245,235,232,105,128,10,103,232,97,3,142,157,142,168,142,173,227,235,225,242,225,226,233,99,128,6,97,236,102,128,0,189,238,231,250,232,239,117,128,48,33,105,2,142,188,142,206,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,32,238,230,229,242,233,239,114,128,32,129,237,239,238,239,243,240,225,227,101,128,255,17,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,244,239,236,228,243,244,249,236,101,128,247,49,112,2,143,8,143,15,225,242,229,110,128,36,116,229,114,2,143,22,143,28,233,239,100,128,36,136,243,233,225,110,128,6,241,241,245,225,242,244,229,114,128,0,188,242,239,237,225,110,128,33,112,243,245,240,229,242,233,239,114,128,0,185,244,104,2,143,71,143,76,225,105,128,14,81,233,242,100,128,33,83,111,3,143,90,143,124,143,140,103,2,143,96,143,114,239,238,229,107,129,1,235,143,105,237,225,227,242,239,110,128,1,237,245,242,237,245,235,232,105,128,10,19,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,75,240,229,110,128,2,84,112,3,143,154,143,161,143,172,225,242,229,110,128,36,170,229,238,226,245,236,236,229,116,128,37,230,244,233,239,110,128,35,37,114,2,143,185,143,214,100,2,143,191,143,202,230,229,237,233,238,233,238,101,128,0,170,237,225,243,227,245,236,233,238,101,128,0,186,244,232,239,231,239,238,225,108,128,34,31,115,5,143,237,144,13,144,30,144,75,144,88,232,239,242,116,2,143,246,143,253,228,229,246,97,128,9,18,246,239,247,229,236,243,233,231,238,228,229,246,97,128,9,74,236,225,243,104,129,0,248,144,22,225,227,245,244,101,128,1,255,237,225,236,108,2,144,39,144,50,232,233,242,225,231,225,238,97,128,48,73,235,225,244,225,235,225,238,97,129,48,169,144,63,232,225,236,230,247,233,228,244,104,128,255,107,244,242,239,235,229,225,227,245,244,101,128,1,255,245,240,229,242,233,239,114,128,246,240,116,2,144,104,144,115,227,249,242,233,236,236,233,99,128,4,127,233,236,228,101,130,0,245,144,126,144,134,225,227,245,244,101,128,30,77,228,233,229,242,229,243,233,115,128,30,79,245,226,239,240,239,237,239,230,111,128,49,33,118,2,144,163,144,244,229,114,2,144,170,144,236,236,233,238,101,131,32,62,144,183,144,206,144,229,99,2,144,189,144,201,229,238,244,229,242,236,233,238,101,128,254,74,237,98,128,3,5,100,2,144,212,144,220,225,243,232,229,100,128,254,73,226,236,247,225,246,121,128,254,76,247,225,246,121,128,254,75,243,227,239,242,101,128,0,175,239,247,229,236,243,233,231,110,3,145,3,145,13,145,20,226,229,238,231,225,236,105,128,9,203,228,229,246,97,128,9,75,231,245,234,225,242,225,244,105,128,10,203,112,145,0,112,145,69,147,197,147,208,147,217,147,229,149,154,149,164,150,156,151,175,152,9,152,35,152,166,152,174,153,76,153,134,153,162,153,172,97,14,145,99,145,131,145,141,145,148,145,155,145,203,145,214,145,228,145,239,146,30,146,44,147,56,147,95,147,185,97,2,145,105,145,117,237,240,243,243,241,245,225,242,101,128,51,128,243,229,238,244,239,243,241,245,225,242,101,128,51,43,226,229,238,231,225,236,105,128,9,170,227,245,244,101,128,30,85,228,229,246,97,128,9,42,103,2,145,161,145,179,101,2,145,167,145,174,228,239,247,110,128,33,223,245,112,128,33,222,117,2,145,185,145,194,234,225,242,225,244,105,128,10,170,242,237,245,235,232,105,128,10,42,232,233,242,225,231,225,238,97,128,48,113,233,249,225,238,238,239,233,244,232,225,105,128,14,47,235,225,244,225,235,225,238,97,128,48,209,108,2,145,245,146,14,225,244,225,236,233,250,225,244,233,239,238,227,249,242,233,236,236,233,227,227,237,98,128,4,132,239,227,232,235,225,227,249,242,233,236,236,233,99,128,4,192,238,243,233,239,243,235,239,242,229,225,110,128,49,127,114,3,146,52,146,73,147,45,97,2,146,58,146,66,231,242,225,240,104,128,0,182,236,236,229,108,128,34,37,229,110,2,146,80,146,190,236,229,230,116,136,0,40,146,103,146,118,146,123,146,128,146,139,146,151,146,174,146,179,225,236,244,239,238,229,225,242,225,226,233,99,128,253,62,226,116,128,248,237,229,120,128,248,236,233,238,230,229,242,233,239,114,128,32,141,237,239,238,239,243,240,225,227,101,128,255,8,115,2,146,157,146,164,237,225,236,108,128,254,89,245,240,229,242,233,239,114,128,32,125,244,112,128,248,235,246,229,242,244,233,227,225,108,128,254,53,242,233,231,232,116,136,0,41,146,214,146,229,146,234,146,239,146,250,147,6,147,29,147,34,225,236,244,239,238,229,225,242,225,226,233,99,128,253,63,226,116,128,248,248,229,120,128,248,247,233,238,230,229,242,233,239,114,128,32,142,237,239,238,239,243,240,225,227,101,128,255,9,115,2,147,12,147,19,237,225,236,108,128,254,90,245,240,229,242,233,239,114,128,32,126,244,112,128,248,246,246,229,242,244,233,227,225,108,128,254,54,244,233,225,236,228,233,230,102,128,34,2,115,3,147,64,147,75,147,87,229,241,232,229,226,242,229,119,128,5,192,232,244,225,232,229,226,242,229,119,128,5,153,241,245,225,242,101,128,51,169,244,225,104,134,5,183,147,113,147,127,147,132,147,141,147,156,147,172,49,2,147,119,147,123,49,128,5,183,100,128,5,183,178,97,128,5,183,232,229,226,242,229,119,128,5,183,238,225,242,242,239,247,232,229,226,242,229,119,128,5,183,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,183,247,233,228,229,232,229,226,242,229,119,128,5,183,250,229,242,232,229,226,242,229,119,128,5,161,226,239,240,239,237,239,230,111,128,49,6,227,233,242,227,236,101,128,36,223,228,239,244,225,227,227,229,238,116,128,30,87,101,137,5,228,147,251,148,6,148,26,148,38,148,58,148,160,148,171,148,192,149,147,227,249,242,233,236,236,233,99,128,4,63,228,225,231,229,243,104,129,251,68,148,17,232,229,226,242,229,119,128,251,68,229,250,233,243,241,245,225,242,101,128,51,59,230,233,238,225,236,228,225,231,229,243,232,232,229,226,242,229,119,128,251,67,104,5,148,70,148,93,148,101,148,115,148,145,225,114,2,148,77,148,84,225,226,233,99,128,6,126,237,229,238,233,225,110,128,5,122,229,226,242,229,119,128,5,228,230,233,238,225,236,225,242,225,226,233,99,128,251,87,105,2,148,121,148,136,238,233,244,233,225,236,225,242,225,226,233,99,128,251,88,242,225,231,225,238,97,128,48,122,237,229,228,233,225,236,225,242,225,226,233,99,128,251,89,235,225,244,225,235,225,238,97,128,48,218,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,167,114,5,148,204,148,216,149,2,149,123,149,136,225,230,229,232,229,226,242,229,119,128,251,78,227,229,238,116,131,0,37,148,229,148,238,148,250,225,242,225,226,233,99,128,6,106,237,239,238,239,243,240,225,227,101,128,255,5,243,237,225,236,108,128,254,106,105,2,149,8,149,105,239,100,134,0,46,149,25,149,36,149,47,149,59,149,70,149,82,225,242,237,229,238,233,225,110,128,5,137,227,229,238,244,229,242,229,100,128,0,183,232,225,236,230,247,233,228,244,104,128,255,97,233,238,230,229,242,233,239,114,128,246,231,237,239,238,239,243,240,225,227,101,128,255,14,115,2,149,88,149,95,237,225,236,108,128,254,82,245,240,229,242,233,239,114,128,246,232,243,240,239,237,229,238,233,231,242,229,229,235,227,237,98,128,3,66,240,229,238,228,233,227,245,236,225,114,128,34,165,244,232,239,245,243,225,238,100,128,32,48,243,229,244,97,128,32,167,230,243,241,245,225,242,101,128,51,138,104,3,149,172,149,222,150,103,97,3,149,180,149,190,149,197,226,229,238,231,225,236,105,128,9,171,228,229,246,97,128,9,43,231,117,2,149,204,149,213,234,225,242,225,244,105,128,10,171,242,237,245,235,232,105,128,10,43,105,133,3,198,149,236,149,240,150,70,150,78,150,89,49,128,3,213,229,245,240,104,4,149,253,150,32,150,47,150,56,97,2,150,3,150,18,227,233,242,227,236,229,235,239,242,229,225,110,128,50,122,240,225,242,229,238,235,239,242,229,225,110,128,50,26,227,233,242,227,236,229,235,239,242,229,225,110,128,50,108,235,239,242,229,225,110,128,49,77,240,225,242,229,238,235,239,242,229,225,110,128,50,12,236,225,244,233,110,128,2,120,238,244,232,245,244,232,225,105,128,14,58,243,249,237,226,239,236,231,242,229,229,107,128,3,213,111,3,150,111,150,116,150,142,239,107,128,1,165,240,104,2,150,123,150,132,225,238,244,232,225,105,128,14,30,245,238,231,244,232,225,105,128,14,28,243,225,237,240,232,225,239,244,232,225,105,128,14,32,105,133,3,192,150,170,151,126,151,137,151,148,151,162,229,245,112,6,150,186,150,221,150,253,151,25,151,39,151,91,97,2,150,192,150,207,227,233,242,227,236,229,235,239,242,229,225,110,128,50,115,240,225,242,229,238,235,239,242,229,225,110,128,50,19,227,105,2,150,228,150,240,229,245,227,235,239,242,229,225,110,128,49,118,242,227,236,229,235,239,242,229,225,110,128,50,101,107,2,151,3,151,17,233,249,229,239,235,235,239,242,229,225,110,128,49,114,239,242,229,225,110,128,49,66,240,225,242,229,238,235,239,242,229,225,110,128,50,5,243,233,239,115,2,151,48,151,76,107,2,151,54,151,68,233,249,229,239,235,235,239,242,229,225,110,128,49,116,239,242,229,225,110,128,49,68,244,233,235,229,245,244,235,239,242,229,225,110,128,49,117,116,2,151,97,151,112,232,233,229,245,244,232,235,239,242,229,225,110,128,49,119,233,235,229,245,244,235,239,242,229,225,110,128,49,115,232,233,242,225,231,225,238,97,128,48,116,235,225,244,225,235,225,238,97,128,48,212,243,249,237,226,239,236,231,242,229,229,107,128,3,214,247,242,225,242,237,229,238,233,225,110,128,5,131,236,245,115,132,0,43,151,189,151,200,151,209,151,242,226,229,236,239,247,227,237,98,128,3,31,227,233,242,227,236,101,128,34,149,109,2,151,215,151,222,233,238,245,115,128,0,177,111,2,151,228,151,232,100,128,2,214,238,239,243,240,225,227,101,128,255,11,115,2,151,248,151,255,237,225,236,108,128,254,98,245,240,229,242,233,239,114,128,32,122,109,2,152,15,152,26,239,238,239,243,240,225,227,101,128,255,80,243,241,245,225,242,101,128,51,216,111,5,152,47,152,58,152,125,152,136,152,146,232,233,242,225,231,225,238,97,128,48,125,233,238,244,233,238,231,233,238,228,229,120,4,152,78,152,90,152,102,152,115,228,239,247,238,247,232,233,244,101,128,38,31,236,229,230,244,247,232,233,244,101,128,38,28,242,233,231,232,244,247,232,233,244,101,128,38,30,245,240,247,232,233,244,101,128,38,29,235,225,244,225,235,225,238,97,128,48,221,240,236,225,244,232,225,105,128,14,27,243,244,225,236,237,225,242,107,129,48,18,152,159,230,225,227,101,128,48,32,240,225,242,229,110,128,36,171,114,3,152,182,152,208,152,233,101,2,152,188,152,196,227,229,228,229,115,128,34,122,243,227,242,233,240,244,233,239,110,128,33,30,233,237,101,2,152,216,152,222,237,239,100,128,2,185,242,229,246,229,242,243,229,100,128,32,53,111,4,152,243,152,250,153,4,153,17,228,245,227,116,128,34,15,234,229,227,244,233,246,101,128,35,5,236,239,238,231,229,228,235,225,238,97,128,48,252,112,2,153,23,153,60,101,2,153,29,153,36,236,236,239,114,128,35,24,242,243,117,2,153,44,153,51,226,243,229,116,128,34,130,240,229,242,243,229,116,128,34,131,239,242,244,233,239,110,129,34,55,153,71,225,108,128,34,29,115,2,153,82,153,125,105,130,3,200,153,90,153,101,227,249,242,233,236,236,233,99,128,4,113,236,233,240,238,229,245,237,225,244,225,227,249,242,233,236,236,233,227,227,237,98,128,4,134,243,241,245,225,242,101,128,51,176,117,2,153,140,153,151,232,233,242,225,231,225,238,97,128,48,119,235,225,244,225,235,225,238,97,128,48,215,246,243,241,245,225,242,101,128,51,180,247,243,241,245,225,242,101,128,51,186,113,136,0,113,153,202,154,251,155,6,155,15,155,22,155,34,155,72,155,80,97,4,153,212,153,235,154,43,154,234,100,2,153,218,153,224,229,246,97,128,9,88,237,225,232,229,226,242,229,119,128,5,168,102,4,153,245,153,254,154,12,154,28,225,242,225,226,233,99,128,6,66,230,233,238,225,236,225,242,225,226,233,99,128,254,214,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,215,237,229,228,233,225,236,225,242,225,226,233,99,128,254,216,237,225,244,115,136,5,184,154,66,154,86,154,100,154,105,154,110,154,119,154,134,154,221,49,3,154,74,154,78,154,82,48,128,5,184,97,128,5,184,99,128,5,184,50,2,154,92,154,96,55,128,5,184,57,128,5,184,179,51,128,5,184,228,101,128,5,184,232,229,226,242,229,119,128,5,184,238,225,242,242,239,247,232,229,226,242,229,119,128,5,184,113,2,154,140,154,206,225,244,225,110,4,154,153,154,162,154,177,154,193,232,229,226,242,229,119,128,5,184,238,225,242,242,239,247,232,229,226,242,229,119,128,5,184,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,184,247,233,228,229,232,229,226,242,229,119,128,5,184,245,225,242,244,229,242,232,229,226,242,229,119,128,5,184,247,233,228,229,232,229,226,242,229,119,128,5,184,242,238,229,249,240,225,242,225,232,229,226,242,229,119,128,5,159,226,239,240,239,237,239,230,111,128,49,17,227,233,242,227,236,101,128,36,224,232,239,239,107,128,2,160,237,239,238,239,243,240,225,227,101,128,255,81,239,102,130,5,231,155,43,155,63,228,225,231,229,243,104,129,251,71,155,54,232,229,226,242,229,119,128,251,71,232,229,226,242,229,119,128,5,231,240,225,242,229,110,128,36,172,117,4,155,90,155,102,155,191,156,22,225,242,244,229,242,238,239,244,101,128,38,105,226,245,244,115,135,5,187,155,123,155,128,155,133,155,138,155,147,155,162,155,178,177,56,128,5,187,178,53,128,5,187,179,49,128,5,187,232,229,226,242,229,119,128,5,187,238,225,242,242,239,247,232,229,226,242,229,119,128,5,187,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,187,247,233,228,229,232,229,226,242,229,119,128,5,187,229,243,244,233,239,110,133,0,63,155,210,155,233,155,250,156,2,156,14,225,114,2,155,217,155,224,225,226,233,99,128,6,31,237,229,238,233,225,110,128,5,94,228,239,247,110,129,0,191,155,242,243,237,225,236,108,128,247,191,231,242,229,229,107,128,3,126,237,239,238,239,243,240,225,227,101,128,255,31,243,237,225,236,108,128,247,63,239,244,101,4,156,34,156,105,156,125,156,154,228,226,108,133,0,34,156,50,156,57,156,64,156,76,156,97,226,225,243,101,128,32,30,236,229,230,116,128,32,28,237,239,238,239,243,240,225,227,101,128,255,2,240,242,233,237,101,129,48,30,156,86,242,229,246,229,242,243,229,100,128,48,29,242,233,231,232,116,128,32], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+245880); -/* memory initializer */ allocate([29,236,229,230,116,129,32,24,156,114,242,229,246,229,242,243,229,100,128,32,27,114,2,156,131,156,141,229,246,229,242,243,229,100,128,32,27,233,231,232,116,129,32,25,156,150,110,128,1,73,243,233,238,231,108,2,156,164,156,171,226,225,243,101,128,32,26,101,129,0,39,156,177,237,239,238,239,243,240,225,227,101,128,255,7,114,145,0,114,156,227,157,231,157,242,158,33,158,84,159,101,159,125,159,220,161,254,162,35,162,47,162,101,162,109,163,15,163,26,163,61,163,161,97,11,156,251,157,6,157,16,157,23,157,88,157,104,157,129,157,140,157,165,157,188,157,225,225,242,237,229,238,233,225,110,128,5,124,226,229,238,231,225,236,105,128,9,176,227,245,244,101,128,1,85,100,4,157,33,157,39,157,53,157,79,229,246,97,128,9,48,233,227,225,108,129,34,26,157,48,229,120,128,248,229,239,246,229,242,243,243,241,245,225,242,101,129,51,174,157,69,228,243,241,245,225,242,101,128,51,175,243,241,245,225,242,101,128,51,173,230,101,129,5,191,157,95,232,229,226,242,229,119,128,5,191,231,117,2,157,111,157,120,234,225,242,225,244,105,128,10,176,242,237,245,235,232,105,128,10,48,232,233,242,225,231,225,238,97,128,48,137,235,225,244,225,235,225,238,97,129,48,233,157,153,232,225,236,230,247,233,228,244,104,128,255,151,236,239,247,229,242,228,233,225,231,239,238,225,236,226,229,238,231,225,236,105,128,9,241,109,2,157,194,157,217,233,228,228,236,229,228,233,225,231,239,238,225,236,226,229,238,231,225,236,105,128,9,240,243,232,239,242,110,128,2,100,244,233,111,128,34,54,226,239,240,239,237,239,230,111,128,49,22,99,4,157,252,158,3,158,12,158,20,225,242,239,110,128,1,89,229,228,233,236,236,97,128,1,87,233,242,227,236,101,128,36,225,239,237,237,225,225,227,227,229,238,116,128,1,87,100,2,158,39,158,49,226,236,231,242,225,246,101,128,2,17,239,116,2,158,56,158,65,225,227,227,229,238,116,128,30,89,226,229,236,239,119,129,30,91,158,75,237,225,227,242,239,110,128,30,93,101,6,158,98,158,143,158,178,158,233,159,2,159,35,102,2,158,104,158,117,229,242,229,238,227,229,237,225,242,107,128,32,59,236,229,248,243,117,2,158,127,158,134,226,243,229,116,128,34,134,240,229,242,243,229,116,128,34,135,231,233,243,244,229,114,2,158,154,158,159,229,100,128,0,174,115,2,158,165,158,171,225,238,115,128,248,232,229,242,233,102,128,246,218,104,3,158,186,158,209,158,223,225,114,2,158,193,158,200,225,226,233,99,128,6,49,237,229,238,233,225,110,128,5,128,230,233,238,225,236,225,242,225,226,233,99,128,254,174,233,242,225,231,225,238,97,128,48,140,235,225,244,225,235,225,238,97,129,48,236,158,246,232,225,236,230,247,233,228,244,104,128,255,154,243,104,130,5,232,159,11,159,26,228,225,231,229,243,232,232,229,226,242,229,119,128,251,72,232,229,226,242,229,119,128,5,232,118,3,159,43,159,56,159,88,229,242,243,229,228,244,233,236,228,101,128,34,61,233,97,2,159,63,159,72,232,229,226,242,229,119,128,5,151,237,245,231,242,225,243,232,232,229,226,242,229,119,128,5,151,236,239,231,233,227,225,236,238,239,116,128,35,16,230,233,243,232,232,239,239,107,129,2,126,159,114,242,229,246,229,242,243,229,100,128,2,127,104,2,159,131,159,154,97,2,159,137,159,147,226,229,238,231,225,236,105,128,9,221,228,229,246,97,128,9,93,111,131,3,193,159,164,159,193,159,207,239,107,129,2,125,159,171,244,245,242,238,229,100,129,2,123,159,182,243,245,240,229,242,233,239,114,128,2,181,243,249,237,226,239,236,231,242,229,229,107,128,3,241,244,233,227,232,239,239,235,237,239,100,128,2,222,105,6,159,234,161,22,161,68,161,79,161,104,161,240,229,245,108,9,160,0,160,35,160,50,160,64,160,110,160,124,160,210,160,223,161,2,97,2,160,6,160,21,227,233,242,227,236,229,235,239,242,229,225,110,128,50,113,240,225,242,229,238,235,239,242,229,225,110,128,50,17,227,233,242,227,236,229,235,239,242,229,225,110,128,50,99,232,233,229,245,232,235,239,242,229,225,110,128,49,64,107,2,160,70,160,102,233,249,229,239,107,2,160,80,160,89,235,239,242,229,225,110,128,49,58,243,233,239,243,235,239,242,229,225,110,128,49,105,239,242,229,225,110,128,49,57,237,233,229,245,237,235,239,242,229,225,110,128,49,59,112,3,160,132,160,164,160,179,97,2,160,138,160,152,238,243,233,239,243,235,239,242,229,225,110,128,49,108,242,229,238,235,239,242,229,225,110,128,50,3,232,233,229,245,240,232,235,239,242,229,225,110,128,49,63,233,229,245,112,2,160,188,160,197,235,239,242,229,225,110,128,49,60,243,233,239,243,235,239,242,229,225,110,128,49,107,243,233,239,243,235,239,242,229,225,110,128,49,61,116,2,160,229,160,244,232,233,229,245,244,232,235,239,242,229,225,110,128,49,62,233,235,229,245,244,235,239,242,229,225,110,128,49,106,249,229,239,242,233,238,232,233,229,245,232,235,239,242,229,225,110,128,49,109,231,232,116,2,161,30,161,38,225,238,231,236,101,128,34,31,116,2,161,44,161,58,225,227,235,226,229,236,239,247,227,237,98,128,3,25,242,233,225,238,231,236,101,128,34,191,232,233,242,225,231,225,238,97,128,48,138,235,225,244,225,235,225,238,97,129,48,234,161,92,232,225,236,230,247,233,228,244,104,128,255,152,110,2,161,110,161,226,103,131,2,218,161,120,161,131,161,137,226,229,236,239,247,227,237,98,128,3,37,227,237,98,128,3,10,232,225,236,102,2,161,146,161,192,236,229,230,116,131,2,191,161,159,161,170,161,181,225,242,237,229,238,233,225,110,128,5,89,226,229,236,239,247,227,237,98,128,3,28,227,229,238,244,229,242,229,100,128,2,211,242,233,231,232,116,130,2,190,161,204,161,215,226,229,236,239,247,227,237,98,128,3,57,227,229,238,244,229,242,229,100,128,2,210,246,229,242,244,229,228,226,242,229,246,101,128,2,19,244,244,239,242,245,243,241,245,225,242,101,128,51,81,108,2,162,4,162,15,233,238,229,226,229,236,239,119,128,30,95,239,238,231,236,229,103,129,2,124,162,26,244,245,242,238,229,100,128,2,122,237,239,238,239,243,240,225,227,101,128,255,82,111,3,162,55,162,66,162,91,232,233,242,225,231,225,238,97,128,48,141,235,225,244,225,235,225,238,97,129,48,237,162,79,232,225,236,230,247,233,228,244,104,128,255,155,242,245,225,244,232,225,105,128,14,35,240,225,242,229,110,128,36,173,114,3,162,117,162,153,162,183,97,3,162,125,162,135,162,142,226,229,238,231,225,236,105,128,9,220,228,229,246,97,128,9,49,231,245,242,237,245,235,232,105,128,10,92,229,104,2,162,160,162,169,225,242,225,226,233,99,128,6,145,230,233,238,225,236,225,242,225,226,233,99,128,251,141,246,239,227,225,236,233,99,4,162,199,162,209,162,216,162,227,226,229,238,231,225,236,105,128,9,224,228,229,246,97,128,9,96,231,245,234,225,242,225,244,105,128,10,224,246,239,247,229,236,243,233,231,110,3,162,243,162,253,163,4,226,229,238,231,225,236,105,128,9,196,228,229,246,97,128,9,68,231,245,234,225,242,225,244,105,128,10,196,243,245,240,229,242,233,239,114,128,246,241,116,2,163,32,163,40,226,236,239,227,107,128,37,144,245,242,238,229,100,129,2,121,163,50,243,245,240,229,242,233,239,114,128,2,180,117,4,163,71,163,82,163,107,163,154,232,233,242,225,231,225,238,97,128,48,139,235,225,244,225,235,225,238,97,129,48,235,163,95,232,225,236,230,247,233,228,244,104,128,255,153,112,2,163,113,163,148,229,101,2,163,120,163,134,237,225,242,235,226,229,238,231,225,236,105,128,9,242,243,233,231,238,226,229,238,231,225,236,105,128,9,243,233,225,104,128,246,221,244,232,225,105,128,14,36,246,239,227,225,236,233,99,4,163,177,163,187,163,194,163,205,226,229,238,231,225,236,105,128,9,139,228,229,246,97,128,9,11,231,245,234,225,242,225,244,105,128,10,139,246,239,247,229,236,243,233,231,110,3,163,221,163,231,163,238,226,229,238,231,225,236,105,128,9,195,228,229,246,97,128,9,67,231,245,234,225,242,225,244,105,128,10,195,115,147,0,115,164,35,166,5,166,16,166,142,166,181,169,123,169,134,172,21,174,159,174,205,174,232,175,167,175,234,177,11,177,21,177,207,178,24,178,194,178,204,97,9,164,55,164,65,164,86,164,158,164,183,164,194,164,219,164,251,165,35,226,229,238,231,225,236,105,128,9,184,227,245,244,101,129,1,91,164,74,228,239,244,225,227,227,229,238,116,128,30,101,100,5,164,98,164,107,164,113,164,127,164,143,225,242,225,226,233,99,128,6,53,229,246,97,128,9,56,230,233,238,225,236,225,242,225,226,233,99,128,254,186,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,187,237,229,228,233,225,236,225,242,225,226,233,99,128,254,188,231,117,2,164,165,164,174,234,225,242,225,244,105,128,10,184,242,237,245,235,232,105,128,10,56,232,233,242,225,231,225,238,97,128,48,85,235,225,244,225,235,225,238,97,129,48,181,164,207,232,225,236,230,247,233,228,244,104,128,255,123,236,236,225,236,236,225,232,239,245,225,236,225,249,232,229,247,225,243,225,236,236,225,237,225,242,225,226,233,99,128,253,250,237,229,235,104,130,5,225,165,6,165,26,228,225,231,229,243,104,129,251,65,165,17,232,229,226,242,229,119,128,251,65,232,229,226,242,229,119,128,5,225,242,97,5,165,48,165,122,165,130,165,180,165,188,97,5,165,60,165,68,165,76,165,107,165,115,225,244,232,225,105,128,14,50,229,244,232,225,105,128,14,65,233,237,225,233,109,2,165,86,165,97,225,236,225,233,244,232,225,105,128,14,68,245,225,238,244,232,225,105,128,14,67,237,244,232,225,105,128,14,51,244,232,225,105,128,14,48,229,244,232,225,105,128,14,64,105,3,165,138,165,162,165,173,105,2,165,144,165,155,236,229,230,244,244,232,225,105,128,248,134,244,232,225,105,128,14,53,236,229,230,244,244,232,225,105,128,248,133,244,232,225,105,128,14,52,239,244,232,225,105,128,14,66,117,3,165,196,165,246,165,253,101,3,165,204,165,228,165,239,101,2,165,210,165,221,236,229,230,244,244,232,225,105,128,248,136,244,232,225,105,128,14,55,236,229,230,244,244,232,225,105,128,248,135,244,232,225,105,128,14,54,244,232,225,105,128,14,56,245,244,232,225,105,128,14,57,226,239,240,239,237,239,230,111,128,49,25,99,5,166,28,166,49,166,58,166,107,166,129,225,242,239,110,129,1,97,166,37,228,239,244,225,227,227,229,238,116,128,30,103,229,228,233,236,236,97,128,1,95,232,247,97,131,2,89,166,70,166,81,166,100,227,249,242,233,236,236,233,99,128,4,217,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,219,232,239,239,107,128,2,90,233,242,99,2,166,115,166,120,236,101,128,36,226,245,237,230,236,229,120,128,1,93,239,237,237,225,225,227,227,229,238,116,128,2,25,228,239,116,2,166,150,166,159,225,227,227,229,238,116,128,30,97,226,229,236,239,119,129,30,99,166,169,228,239,244,225,227,227,229,238,116,128,30,105,101,9,166,201,166,217,166,252,167,61,167,164,167,191,167,216,168,41,168,68,225,231,245,236,236,226,229,236,239,247,227,237,98,128,3,60,99,2,166,223,166,245,239,238,100,129,32,51,166,231,244,239,238,229,227,232,233,238,229,243,101,128,2,202,244,233,239,110,128,0,167,229,110,4,167,7,167,16,167,30,167,46,225,242,225,226,233,99,128,6,51,230,233,238,225,236,225,242,225,226,233,99,128,254,178,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,179,237,229,228,233,225,236,225,242,225,226,233,99,128,254,180,231,239,108,135,5,182,167,81,167,95,167,100,167,109,167,124,167,140,167,151,49,2,167,87,167,91,51,128,5,182,102,128,5,182,178,99,128,5,182,232,229,226,242,229,119,128,5,182,238,225,242,242,239,247,232,229,226,242,229,119,128,5,182,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,182,244,225,232,229,226,242,229,119,128,5,146,247,233,228,229,232,229,226,242,229,119,128,5,182,104,2,167,170,167,181,225,242,237,229,238,233,225,110,128,5,125,233,242,225,231,225,238,97,128,48,91,235,225,244,225,235,225,238,97,129,48,187,167,204,232,225,236,230,247,233,228,244,104,128,255,126,237,105,2,167,223,168,10,227,239,236,239,110,131,0,59,167,237,167,246,168,2,225,242,225,226,233,99,128,6,27,237,239,238,239,243,240,225,227,101,128,255,27,243,237,225,236,108,128,254,84,246,239,233,227,229,228,237,225,242,235,235,225,238,97,129,48,156,168,29,232,225,236,230,247,233,228,244,104,128,255,159,238,116,2,168,48,168,58,233,243,241,245,225,242,101,128,51,34,239,243,241,245,225,242,101,128,51,35,246,229,110,142,0,55,168,102,168,111,168,121,168,151,168,158,168,168,168,193,168,220,168,254,169,10,169,21,169,54,169,62,169,73,225,242,225,226,233,99,128,6,103,226,229,238,231,225,236,105,128,9,237,227,233,242,227,236,101,129,36,102,168,132,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,144,228,229,246,97,128,9,109,229,233,231,232,244,232,115,128,33,94,231,117,2,168,175,168,184,234,225,242,225,244,105,128,10,237,242,237,245,235,232,105,128,10,109,232,97,2,168,200,168,211,227,235,225,242,225,226,233,99,128,6,103,238,231,250,232,239,117,128,48,39,105,2,168,226,168,244,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,38,238,230,229,242,233,239,114,128,32,135,237,239,238,239,243,240,225,227,101,128,255,23,239,236,228,243,244,249,236,101,128,247,55,112,2,169,27,169,34,225,242,229,110,128,36,122,229,114,2,169,41,169,47,233,239,100,128,36,142,243,233,225,110,128,6,247,242,239,237,225,110,128,33,118,243,245,240,229,242,233,239,114,128,32,119,116,2,169,79,169,117,229,229,110,2,169,87,169,96,227,233,242,227,236,101,128,36,112,112,2,169,102,169,109,225,242,229,110,128,36,132,229,242,233,239,100,128,36,152,232,225,105,128,14,87,230,244,232,249,240,232,229,110,128,0,173,104,7,169,150,170,124,170,135,170,149,171,94,171,107,172,15,97,6,169,164,169,175,169,185,169,196,170,83,170,108,225,242,237,229,238,233,225,110,128,5,119,226,229,238,231,225,236,105,128,9,182,227,249,242,233,236,236,233,99,128,4,72,100,2,169,202,170,42,228,97,4,169,213,169,222,169,253,170,11,225,242,225,226,233,99,128,6,81,228,225,237,237,97,2,169,232,169,241,225,242,225,226,233,99,128,252,97,244,225,238,225,242,225,226,233,99,128,252,94,230,225,244,232,225,225,242,225,226,233,99,128,252,96,235,225,243,242,97,2,170,21,170,30,225,242,225,226,233,99,128,252,98,244,225,238,225,242,225,226,233,99,128,252,95,101,132,37,146,170,54,170,61,170,69,170,78,228,225,242,107,128,37,147,236,233,231,232,116,128,37,145,237,229,228,233,245,109,128,37,146,246,97,128,9,54,231,117,2,170,90,170,99,234,225,242,225,244,105,128,10,182,242,237,245,235,232,105,128,10,54,236,243,232,229,236,229,244,232,229,226,242,229,119,128,5,147,226,239,240,239,237,239,230,111,128,49,21,227,232,225,227,249,242,233,236,236,233,99,128,4,73,101,4,170,159,170,224,170,234,170,251,229,110,4,170,170,170,179,170,193,170,209,225,242,225,226,233,99,128,6,52,230,233,238,225,236,225,242,225,226,233,99,128,254,182,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,183,237,229,228,233,225,236,225,242,225,226,233,99,128,254,184,233,227,239,240,244,233,99,128,3,227,241,229,108,129,32,170,170,242,232,229,226,242,229,119,128,32,170,246,97,134,5,176,171,12,171,27,171,41,171,50,171,65,171,81,49,2,171,18,171,23,177,53,128,5,176,53,128,5,176,50,2,171,33,171,37,50,128,5,176,101,128,5,176,232,229,226,242,229,119,128,5,176,238,225,242,242,239,247,232,229,226,242,229,119,128,5,176,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,176,247,233,228,229,232,229,226,242,229,119,128,5,176,232,225,227,249,242,233,236,236,233,99,128,4,187,105,2,171,113,171,124,237,225,227,239,240,244,233,99,128,3,237,110,131,5,233,171,134,171,217,171,226,100,2,171,140,171,206,225,231,229,243,104,130,251,73,171,152,171,161,232,229,226,242,229,119,128,251,73,115,2,171,167,171,187,232,233,238,228,239,116,129,251,44,171,178,232,229,226,242,229,119,128,251,44,233,238,228,239,116,129,251,45,171,197,232,229,226,242,229,119,128,251,45,239,244,232,229,226,242,229,119,128,5,193,232,229,226,242,229,119,128,5,233,115,2,171,232,171,252,232,233,238,228,239,116,129,251,42,171,243,232,229,226,242,229,119,128,251,42,233,238,228,239,116,129,251,43,172,6,232,229,226,242,229,119,128,251,43,239,239,107,128,2,130,105,8,172,39,172,83,172,94,172,119,172,149,172,157,172,170,173,85,231,237,97,131,3,195,172,51,172,55,172,63,49,128,3,194,230,233,238,225,108,128,3,194,236,245,238,225,244,229,243,249,237,226,239,236,231,242,229,229,107,128,3,242,232,233,242,225,231,225,238,97,128,48,87,235,225,244,225,235,225,238,97,129,48,183,172,107,232,225,236,230,247,233,228,244,104,128,255,124,236,245,113,2,172,127,172,136,232,229,226,242,229,119,128,5,189,236,229,230,244,232,229,226,242,229,119,128,5,189,237,233,236,225,114,128,34,60,238,228,239,244,232,229,226,242,229,119,128,5,194,239,115,6,172,185,172,220,172,252,173,24,173,38,173,70,97,2,172,191,172,206,227,233,242,227,236,229,235,239,242,229,225,110,128,50,116,240,225,242,229,238,235,239,242,229,225,110,128,50,20,227,105,2,172,227,172,239,229,245,227,235,239,242,229,225,110,128,49,126,242,227,236,229,235,239,242,229,225,110,128,50,102,107,2,173,2,173,16,233,249,229,239,235,235,239,242,229,225,110,128,49,122,239,242,229,225,110,128,49,69,238,233,229,245,238,235,239,242,229,225,110,128,49,123,112,2,173,44,173,57,225,242,229,238,235,239,242,229,225,110,128,50,6,233,229,245,240,235,239,242,229,225,110,128,49,125,244,233,235,229,245,244,235,239,242,229,225,110,128,49,124,120,141,0,54,173,115,173,124,173,134,173,164,173,171,173,196,173,223,174,1,174,13,174,24,174,57,174,65,174,76,225,242,225,226,233,99,128,6,102,226,229,238,231,225,236,105,128,9,236,227,233,242,227,236,101,129,36,101,173,145,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,143,228,229,246,97,128,9,108,231,117,2,173,178,173,187,234,225,242,225,244,105,128,10,236,242,237,245,235,232,105,128,10,108,232,97,2,173,203,173,214,227,235,225,242,225,226,233,99,128,6,102,238,231,250,232,239,117,128,48,38,105,2,173,229,173,247,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,37,238,230,229,242,233,239,114,128,32,134,237,239,238,239,243,240,225,227,101,128,255,22,239,236,228,243,244,249,236,101,128,247,54,112,2,174,30,174,37,225,242,229,110,128,36,121,229,114,2,174,44,174,50,233,239,100,128,36,141,243,233,225,110,128,6,246,242,239,237,225,110,128,33,117,243,245,240,229,242,233,239,114,128,32,118,116,2,174,82,174,153,229,229,110,2,174,90,174,132,99,2,174,96,174,104,233,242,227,236,101,128,36,111,245,242,242,229,238,227,249,228,229,238,239,237,233,238,225,244,239,242,226,229,238,231,225,236,105,128,9,249,112,2,174,138,174,145,225,242,229,110,128,36,131,229,242,233,239,100,128,36,151,232,225,105,128,14,86,108,2,174,165,174,185,225,243,104,129,0,47,174,173,237,239,238,239,243,240,225,227,101,128,255,15,239,238,103,129,1,127,174,193,228,239,244,225,227,227,229,238,116,128,30,155,109,2,174,211,174,221,233,236,229,230,225,227,101,128,38,58,239,238,239,243,240,225,227,101,128,255,83,111,6,174,246,175,40,175,51,175,76,175,121,175,132,102,2,174,252,175,10,240,225,243,245,241,232,229,226,242,229,119,128,5,195,116,2,175,16,175,25,232,249,240,232,229,110,128,0,173,243,233,231,238,227,249,242,233,236,236,233,99,128,4,76,232,233,242,225,231,225,238,97,128,48,93,235,225,244,225,235,225,238,97,129,48,189,175,64,232,225,236,230,247,233,228,244,104,128,255,127,236,233,228,245,115,2,175,86,175,103,236,239,238,231,239,246,229,242,236,225,249,227,237,98,128,3,56,243,232,239,242,244,239,246,229,242,236,225,249,227,237,98,128,3,55,242,245,243,233,244,232,225,105,128,14,41,115,3,175,140,175,150,175,158,225,236,225,244,232,225,105,128,14,40,239,244,232,225,105,128,14,11,245,225,244,232,225,105,128,14,42,240,97,3,175,176,175,196,175,228,227,101,129,0,32,175,183,232,225,227,235,225,242,225,226,233,99,128,0,32,228,101,129,38,96,175,203,243,245,233,116,2,175,212,175,220,226,236,225,227,107,128,38,96,247,232,233,244,101,128,38,100,242,229,110,128,36,174,241,245,225,242,101,11,176,6,176,17,176,31,176,56,176,73,176,99,176,114,176,147,176,174,176,230,176,245,226,229,236,239,247,227,237,98,128,3,59,99,2,176,23,176,27,99,128,51,196,109,128,51,157,228,233,225,231,239,238,225,236,227,242,239,243,243,232,225,244,227,232,230,233,236,108,128,37,169,232,239,242,233,250,239,238,244,225,236,230,233,236,108,128,37,164,107,2,176,79,176,83,103,128,51,143,109,129,51,158,176,89,227,225,240,233,244,225,108,128,51,206,108,2,176,105,176,109,110,128,51,209,239,103,128,51,210,109,4,176,124,176,128,176,133,176,137,103,128,51,142,233,108,128,51,213,109,128,51,156,243,241,245,225,242,229,100,128,51,161,239,242,244,232,239,231,239,238,225,236,227,242,239,243,243,232,225,244,227,232,230,233,236,108,128,37,166,245,240,240,229,114,2,176,184,176,207,236,229,230,244,244,239,236,239,247,229,242,242,233,231,232,244,230,233,236,108,128,37,167,242,233,231,232,244,244,239,236,239,247,229,242,236,229,230,244,230,233,236,108,128,37,168,246,229,242,244,233,227,225,236,230,233,236,108,128,37,165,247,232,233,244,229,247,233,244,232,243,237,225,236,236,226,236,225,227,107,128,37,163,242,243,241,245,225,242,101,128,51,219,115,2,177,27,177,197,97,4,177,37,177,47,177,54,177,65,226,229,238,231,225,236,105,128,9,183,228,229,246,97,128,9,55,231,245,234,225,242,225,244,105,128,10,183,238,103,8,177,84,177,98,177,112,177,126,177,141,177,155,177,169,177,182,227,233,229,245,227,235,239,242,229,225,110,128,49,73,232,233,229,245,232,235,239,242,229,225,110,128,49,133,233,229,245,238,231,235,239,242,229,225,110,128,49,128,235,233,249,229,239,235,235,239,242,229,225,110,128,49,50,238,233,229,245,238,235,239,242,229,225,110,128,49,101,240,233,229,245,240,235,239,242,229,225,110,128,49,67,243,233,239,243,235,239,242,229,225,110,128,49,70,244,233,235,229,245,244,235,239,242,229,225,110,128,49,56,245,240,229,242,233,239,114,128,246,242,116,2,177,213,177,236,229,242,236,233,238,103,129,0,163,177,224,237,239,238,239,243,240,225,227,101,128,255,225,242,239,235,101,2,177,245,178,6,236,239,238,231,239,246,229,242,236,225,249,227,237,98,128,3,54,243,232,239,242,244,239,246,229,242,236,225,249,227,237,98,128,3,53,117,7,178,40,178,72,178,94,178,105,178,146,178,156,178,160,226,243,229,116,130,34,130,178,51,178,62,238,239,244,229,241,245,225,108,128,34,138,239,242,229,241,245,225,108,128,34,134,99,2,178,78,178,86,227,229,229,228,115,128,34,123,232,244,232,225,116,128,34,11,232,233,242,225,231,225,238,97,128,48,89,107,2,178,111,178,135,225,244,225,235,225,238,97,129,48,185,178,123,232,225,236,230,247,233,228,244,104,128,255,125,245,238,225,242,225,226,233,99,128,6,82,237,237,225,244,233,239,110,128,34,17,110,128,38,60,240,229,242,243,229,116,130,34,131,178,173,178,184,238,239,244,229,241,245,225,108,128,34,139,239,242,229,241,245,225,108,128,34,135,246,243,241,245,225,242,101,128,51,220,249,239,245,247,225,229,242,225,243,241,245,225,242,101,128,51,124,116,144,0,116,179,1,180,10,180,31,180,174,180,214,183,6,186,144,187,219,187,231,187,243,189,20,189,45,189,131,190,55,190,239,191,73,97,10,179,23,179,33,179,54,179,61,179,86,179,164,179,181,179,206,179,220,179,224,226,229,238,231,225,236,105,128,9,164,227,107,2,179,40,179,47,228,239,247,110,128,34,164,236,229,230,116,128,34,163,228,229,246,97,128,9,36,231,117,2,179,68,179,77,234,225,242,225,244,105,128,10,164,242,237,245,235,232,105,128,10,36,104,4,179,96,179,105,179,119,179,149,225,242,225,226,233,99,128,6,55,230,233,238,225,236,225,242,225,226,233,99,128,254,194,105,2,179,125,179,140,238,233,244,233,225,236,225,242,225,226,233,99,128,254,195,242,225,231,225,238,97,128,48,95,237,229,228,233,225,236,225,242,225,226,233,99,128,254,196,233,243,249,239,245,229,242,225,243,241,245,225,242,101,128,51,125,235,225,244,225,235,225,238,97,129,48,191,179,194,232,225,236,230,247,233,228,244,104,128,255,128,244,247,229,229,236,225,242,225,226,233,99,128,6,64,117,128,3,196,118,130,5,234,179,232,180,1,228,225,231,229,115,129,251,74,179,242,104,129,251,74,179,248,232,229,226,242,229,119,128,251,74,232,229,226,242,229,119,128,5,234,98,2,180,16,180,21,225,114,128,1,103,239,240,239,237,239,230,111,128,49,10,99,6,180,45,180,52,180,59,180,68,180,134,180,161,225,242,239,110,128,1,101,227,245,242,108,128,2,168,229,228,233,236,236,97,128,1,99,232,229,104,4,180,80,180,89,180,103,180,119,225,242,225,226,233,99,128,6,134,230,233,238,225,236,225,242,225,226,233,99,128,251,123,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,124,237,229,228,233,225,236,225,242,225,226,233,99,128,251,125,233,242,99,2,180,142,180,147,236,101,128,36,227,245,237,230,236,229,248,226,229,236,239,119,128,30,113,239,237,237,225,225,227,227,229,238,116,128,1,99,100,2,180,180,180,190,233,229,242,229,243,233,115,128,30,151,239,116,2,180,197,180,206,225,227,227,229,238,116,128,30,107,226,229,236,239,119,128,30,109,101,9,180,234,180,245,181,9,182,19,182,44,182,108,182,175,182,180,182,232,227,249,242,233,236,236,233,99,128,4,66,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,173,104,7,181,25,181,34,181,48,181,88,181,118,181,159,182,1,225,242,225,226,233,99,128,6,42,230,233,238,225,236,225,242,225,226,233,99,128,254,150,232,225,232,105,2,181,57,181,72,238,233,244,233,225,236,225,242,225,226,233,99,128,252,162,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,12,105,2,181,94,181,109,238,233,244,233,225,236,225,242,225,226,233,99,128,254,151,242,225,231,225,238,97,128,48,102,234,229,229,237,105,2,181,128,181,143,238,233,244,233,225,236,225,242,225,226,233,99,128,252,161,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,11,109,2,181,165,181,199,225,242,226,245,244,97,2,181,176,181,185,225,242,225,226,233,99,128,6,41,230,233,238,225,236,225,242,225,226,233,99,128,254,148,101,2,181,205,181,218,228,233,225,236,225,242,225,226,233,99,128,254,152,229,237,105,2,181,226,181,241,238,233,244,233,225,236,225,242,225,226,233,99,128,252,164,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,14,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,115,235,225,244,225,235,225,238,97,129,48,198,182,32,232,225,236,230,247,233,228,244,104,128,255,131,108,2,182,50,182,69,229,240,232,239,238,101,129,33,33,182,61,226,236,225,227,107,128,38,14,233,243,232,97,2,182,78,182,93,231,229,228,239,236,225,232,229,226,242,229,119,128,5,160,241,229,244,225,238,225,232,229,226,242,229,119,128,5,169,110,4,182,118,182,127,182,146,182,167,227,233,242,227,236,101,128,36,105,233,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,41,112,2,182,152,182,159,225,242,229,110,128,36,125,229,242,233,239,100,128,36,145,242,239,237,225,110,128,33,121,243,104,128,2,167,116,131,5,216,182,190,182,210,182,219,228,225,231,229,243,104,129,251,56,182,201,232,229,226,242,229,119,128,251,56,232,229,226,242,229,119,128,5,216,243,229,227,249,242,233,236,236,233,99,128,4,181,246,233,114,2,182,240,182,249,232,229,226,242,229,119,128,5,155,236,229,230,244,232,229,226,242,229,119,128,5,155,104,6,183,20,183,172,184,38,184,170,185,77,186,134,97,5,183,32,183,42,183,49,183,74,183,103,226,229,238,231,225,236,105,128,9,165,228,229,246,97,128,9,37,231,117,2,183,56,183,65,234,225,242,225,244,105,128,10,165,242,237,245,235,232,105,128,10,37,108,2,183,80,183,89,225,242,225,226,233,99,128,6,48,230,233,238,225,236,225,242,225,226,233,99,128,254,172,238,244,232,225,235,232,225,116,3,183,118,183,149,183,156,236,239,119,2,183,126,183,137,236,229,230,244,244,232,225,105,128,248,152,242,233,231,232,244,244,232,225,105,128,248,151,244,232,225,105,128,14,76,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,150,101,3,183,180,183,244,184,11,104,4,183,190,183,199,183,213,183,229,225,242,225,226,233,99,128,6,43,230,233,238,225,236,225,242,225,226,233,99,128,254,154,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,155,237,229,228,233,225,236,225,242,225,226,233,99,128,254,156,242,101,2,183,251,184,4,229,248,233,243,244,115,128,34,3,230,239,242,101,128,34,52,244,97,130,3,184,184,20,184,24,49,128,3,209,243,249,237,226,239,236,231,242,229,229,107,128,3,209,105,2,184,44,184,130,229,245,244,104,4,184,57,184,92,184,107,184,116,97,2,184,63,184,78,227,233,242,227,236,229,235,239,242,229,225,110,128,50,121,240,225,242,229,238,235,239,242,229,225,110,128,50,25,227,233,242,227,236,229,235,239,242,229,225,110,128,50,107,235,239,242,229,225,110,128,49,76,240,225,242,229,238,235,239,242,229,225,110,128,50,11,242,244,229,229,110,2,184,140,184,149,227,233,242,227,236,101,128,36,108,112,2,184,155,184,162,225,242,229,110,128,36,128,229,242,233,239,100,128,36,148,111,6,184,184,184,201,184,206,184,220,184,225,185,22,238,225,238,231,237,239,238,244,232,239,244,232,225,105,128,14,17,239,107,128,1,173,240,232,245,244,232,225,239,244,232,225,105,128,14,18,242,110,128,0,254,244,104,3,184,234,185,2,185,12,97,2,184,240,184,250,232,225,238,244,232,225,105,128,14,23,238,244,232,225,105,128,14,16,239,238,231,244,232,225,105,128,14,24,245,238,231,244,232,225,105,128,14,22,245,243,225,238,100,2,185,32,185,43,227,249,242,233,236,236,233,99,128,4,130,243,243,229,240,225,242,225,244,239,114,2,185,58,185,67,225,242,225,226,233,99,128,6,108,240,229,242,243,233,225,110,128,6,108,242,229,101,144,0,51,185,115,185,124,185,134,185,164,185,171,185,181,185,206,185,233,186,11,186,23,186,42,186,53,186,86,186,108,186,116,186,127,225,242,225,226,233,99,128,6,99,226,229,238,231,225,236,105,128,9,233,227,233,242,227,236,101,129,36,98,185,145,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,140,228,229,246,97,128,9,105,229,233,231,232,244,232,115,128,33,92,231,117,2,185,188,185,197,234,225,242,225,244,105,128,10,233,242,237,245,235,232,105,128,10,105,232,97,2,185,213,185,224,227,235,225,242,225,226,233,99,128,6,99,238,231,250,232,239,117,128,48,35,105,2,185,239,186,1,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,34,238,230,229,242,233,239,114,128,32,131,237,239,238,239,243,240,225,227,101,128,255,19,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,246,239,236,228,243,244,249,236,101,128,247,51,112,2,186,59,186,66,225,242,229,110,128,36,118,229,114,2,186,73,186,79,233,239,100,128,36,138,243,233,225,110,128,6,243,241,245,225,242,244,229,242,115,129,0,190,186,99,229,237,228,225,243,104,128,246,222,242,239,237,225,110,128,33,114,243,245,240,229,242,233,239,114,128,0,179,244,232,225,105,128,14,83,250,243,241,245,225,242,101,128,51,148,105,7,186,160,186,171,187,30,187,128,187,140,187,189,187,206,232,233,242,225,231,225,238,97,128,48,97,107,2,186,177,186,201,225,244,225,235,225,238,97,129,48,193,186,189,232,225,236,230,247,233,228,244,104,128,255,129,229,245,116,4,186,213,186,248,187,7,187,16,97,2,186,219,186,234,227,233,242,227,236,229,235,239,242,229,225,110,128,50,112,240,225,242,229,238,235,239,242,229,225,110,128,50,16,227,233,242,227,236,229,235,239,242,229,225,110,128,50,98,235,239,242,229,225,110,128,49,55,240,225,242,229,238,235,239,242,229,225,110,128,50,2,236,228,101,133,2,220,187,46,187,57,187,74,187,86,187,114,226,229,236,239,247,227,237,98,128,3,48,99,2,187,63,187,68,237,98,128,3,3,239,237,98,128,3,3,228,239,245,226,236,229,227,237,98,128,3,96,111,2,187,92,187,102,240,229,242,225,244,239,114,128,34,60,246,229,242,236,225,249,227,237,98,128,3,52,246,229,242,244,233,227,225,236,227,237,98,128,3,62,237,229,243,227,233,242,227,236,101,128,34,151,112,2,187,146,187,176,229,232,97,2,187,154,187,163,232,229,226,242,229,119,128,5,150,236,229,230,244,232,229,226,242,229,119,128,5,150,240,233,231,245,242,237,245,235,232,105,128,10,112,244,236,239,227,249,242,233,236,236,233,227,227,237,98,128,4,131,247,238,225,242,237,229,238,233,225,110,128,5,127,236,233,238,229,226,229,236,239,119,128,30,111,237,239,238,239,243,240,225,227,101,128,255,84,111,7,188,3,188,14,188,25,188,50,188,170,188,182,189,10,225,242,237,229,238,233,225,110,128,5,105,232,233,242,225,231,225,238,97,128,48,104,235,225,244,225,235,225,238,97,129,48,200,188,38,232,225,236,230,247,233,228,244,104,128,255,132,110,3,188,58,188,156,188,161,101,4,188,68,188,137,188,144,188,150,226,225,114,4,188,80,188,109,188,119,188,128,229,248,244,242,97,2,188,90,188,100,232,233,231,232,237,239,100,128,2,229,236,239,247,237,239,100,128,2,233,232,233,231,232,237,239,100,128,2,230,236,239,247,237,239,100,128,2,232,237,233,228,237,239,100,128,2,231,230,233,246,101,128,1,189,243,233,120,128,1,133,244,247,111,128,1,168,239,115,128,3,132,243,241,245,225,242,101,128,51,39,240,225,244,225,235,244,232,225,105,128,14,15,242,244,239,233,243,229,243,232,229,236,236,226,242,225,227,235,229,116,2,188,205,188,235,236,229,230,116,130,48,20,188,216,188,224,243,237,225,236,108,128,254,93,246,229,242,244,233,227,225,108,128,254,57,242,233,231,232,116,130,48,21,188,247,188,255,243,237,225,236,108,128,254,94,246,229,242,244,233,227,225,108,128,254,58,244,225,239,244,232,225,105,128,14,21,240,97,2,189,27,189,39,236,225,244,225,236,232,239,239,107,128,1,171,242,229,110,128,36,175,114,3,189,53,189,84,189,99,225,228,229,237,225,242,107,129,33,34,189,65,115,2,189,71,189,77,225,238,115,128,248,234,229,242,233,102,128,246,219,229,244,242,239,230,236,229,248,232,239,239,107,128,2,136,233,225,103,4,189,111,189,116,189,121,189,126,228,110,128,37,188,236,102,128,37,196,242,116,128,37,186,245,112,128,37,178,115,132,2,166,189,143,189,182,190,32,190,45,225,228,105,130,5,230,189,153,189,173,228,225,231,229,243,104,129,251,70,189,164,232,229,226,242,229,119,128,251,70,232,229,226,242,229,119,128,5,230,101,2,189,188,189,199,227,249,242,233,236,236,233,99,128,4,70,242,101,134,5,181,189,216,189,230,189,235,189,244,190,3,190,19,49,2,189,222,189,226,50,128,5,181,101,128,5,181,178,98,128,5,181,232,229,226,242,229,119,128,5,181,238,225,242,242,239,247,232,229,226,242,229,119,128,5,181,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,181,247,233,228,229,232,229,226,242,229,119,128,5,181,232,229,227,249,242,233,236,236,233,99,128,4,91,245,240,229,242,233,239,114,128,246,243,116,4,190,65,190,115,190,180,190,231,97,3,190,73,190,83,190,90,226,229,238,231,225,236,105,128,9,159,228,229,246,97,128,9,31,231,117,2,190,97,190,106,234,225,242,225,244,105,128,10,159,242,237,245,235,232,105,128,10,31,229,104,4,190,126,190,135,190,149,190,165,225,242,225,226,233,99,128,6,121,230,233,238,225,236,225,242,225,226,233,99,128,251,103,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,104,237,229,228,233,225,236,225,242,225,226,233,99,128,251,105,232,97,3,190,189,190,199,190,206,226,229,238,231,225,236,105,128,9,160,228,229,246,97,128,9,32,231,117,2,190,213,190,222,234,225,242,225,244,105,128,10,160,242,237,245,235,232,105,128,10,32,245,242,238,229,100,128,2,135,117,3,190,247,191,2,191,27,232,233,242,225,231,225,238,97,128,48,100,235,225,244,225,235,225,238,97,129,48,196,191,15,232,225,236,230,247,233,228,244,104,128,255,130,243,237,225,236,108,2,191,37,191,48,232,233,242,225,231,225,238,97,128,48,99,235,225,244,225,235,225,238,97,129,48,195,191,61,232,225,236,230,247,233,228,244,104,128,255,111,119,2,191,79,191,184,101,2,191,85,191,133,236,246,101,3,191,95,191,104,191,125,227,233,242,227,236,101,128,36,107,112,2,191,110,191,117,225,242,229,110,128,36,127,229,242,233,239,100,128,36,147,242,239,237,225,110,128,33,123,238,244,121,3,191,143,191,152,191,163,227,233,242,227,236,101,128,36,115,232,225,238,231,250,232,239,117,128,83,68,112,2,191,169,191,176,225,242,229,110,128,36,135,229,242,233,239,100,128,36,155,111,142,0,50,191,216,191,225,191,235,192,9,192,61,192,86,192,113,192,147,192,159,192,178,192,189,192,222,192,230,192,254,225,242,225,226,233,99,128,6,98,226,229,238,231,225,236,105,128,9,232,227,233,242,227,236,101,129,36,97,191,246,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,139,100,2,192,15,192,21,229,246,97,128,9,104,239,116,2,192,28,192,39,229,238,236,229,225,228,229,114,128,32,37,236,229,225,228,229,114,129,32,37,192,50,246,229,242,244,233,227,225,108,128,254,48,231,117,2,192,68,192,77,234,225,242,225,244,105,128,10,232,242,237,245,235,232,105,128,10,104,232,97,2,192,93,192,104,227,235,225,242,225,226,233,99,128,6,98,238,231,250,232,239,117,128,48,34,105,2,192,119,192,137,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,33,238,230,229,242,233,239,114,128,32,130,237,239,238,239,243,240,225,227,101,128,255,18,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,245,239,236,228,243,244,249,236,101,128,247,50,112,2,192,195,192,202,225,242,229,110,128,36,117,229,114,2,192,209,192,215,233,239,100,128,36,137,243,233,225,110,128,6,242,242,239,237,225,110,128,33,113,115,2,192,236,192,244,244,242,239,235,101,128,1,187,245,240,229,242,233,239,114,128,0,178,244,104,2,193,5,193,10,225,105,128,14,82,233,242,228,115,128,33,84,117,145,0,117,193,55,193,63,193,104,193,161,194,43,194,80,194,203,194,219,195,14,195,84,195,165,195,174,196,37,196,61,196,169,196,197,197,55,225,227,245,244,101,128,0,250,98,4,193,73,193,78,193,87,193,97,225,114,128,2,137,229,238,231,225,236,105,128,9,137,239,240,239,237,239,230,111,128,49,40,242,229,246,101,128,1,109,99,3,193,112,193,119,193,151,225,242,239,110,128,1,212,233,242,99,2,193,127,193,132,236,101,128,36,228,245,237,230,236,229,120,129,0,251,193,143,226,229,236,239,119,128,30,119,249,242,233,236,236,233,99,128,4,67,100,5,193,173,193,184,193,207,193,213,194,33,225,244,244,225,228,229,246,97,128,9,81,226,108,2,193,191,193,199,225,227,245,244,101,128,1,113,231,242,225,246,101,128,2,21,229,246,97,128,9,9,233,229,242,229,243,233,115,133,0,252,193,233,193,241,193,249,194,16,194,24,225,227,245,244,101,128,1,216,226,229,236,239,119,128,30,115,99,2,193,255,194,6,225,242,239,110,128,1,218,249,242,233,236,236,233,99,128,4,241,231,242,225,246,101,128,1,220,237,225,227,242,239,110,128,1,214,239,244,226,229,236,239,119,128,30,229,103,2,194,49,194,56,242,225,246,101,128,0,249,117,2,194,62,194,71,234,225,242,225,244,105,128,10,137,242,237,245,235,232,105,128,10,9,104,3,194,88,194,98,194,176,233,242,225,231,225,238,97,128,48,70,111,2,194,104,194,114,239,235,225,226,239,246,101,128,30,231,242,110,133,1,176,194,129,194,137,194,148,194,156,194,168,225,227,245,244,101,128,30,233,228,239,244,226,229,236,239,119,128,30,241,231,242,225,246,101,128,30,235,232,239,239,235,225,226,239,246,101,128,30,237,244,233,236,228,101,128,30,239,245,238,231,225,242,245,237,236,225,245,116,129,1,113,194,192,227,249,242,233,236,236,233,99,128,4,243,233,238,246,229,242,244,229,228,226,242,229,246,101,128,2,23,107,3,194,227,194,251,195,6,225,244,225,235,225,238,97,129,48,166,194,239,232,225,236,230,247,233,228,244,104,128,255,115,227,249,242,233,236,236,233,99,128,4,121,239,242,229,225,110,128,49,92,109,2,195,20,195,73,97,2,195,26,195,59,227,242,239,110,130,1,107,195,37,195,48,227,249,242,233,236,236,233,99,128,4,239,228,233,229,242,229,243,233,115,128,30,123,244,242,225,231,245,242,237,245,235,232,105,128,10,65,239,238,239,243,240,225,227,101,128,255,85,110,2,195,90,195,145,228,229,242,243,227,239,242,101,132,0,95,195,109,195,115,195,127,195,138,228,226,108,128,32,23,237,239,238,239,243,240,225,227,101,128,255,63,246,229,242,244,233,227,225,108,128,254,51,247,225,246,121,128,254,79,105,2,195,151,195,156,239,110,128,34,42,246,229,242,243,225,108,128,34,0,239,231,239,238,229,107,128,1,115,112,5,195,186,195,193,195,201,195,216,196,11,225,242,229,110,128,36,176,226,236,239,227,107,128,37,128,240,229,242,228,239,244,232,229,226,242,229,119,128,5,196,243,233,236,239,110,131,3,197,195,230,195,251,196,3,228,233,229,242,229,243,233,115,129,3,203,195,243,244,239,238,239,115,128,3,176,236,225,244,233,110,128,2,138,244,239,238,239,115,128,3,205,244,225,227,107,2,196,20,196,31,226,229,236,239,247,227,237,98,128,3,29,237,239,100,128,2,212,114,2,196,43,196,55,225,231,245,242,237,245,235,232,105,128,10,115,233,238,103,128,1,111,115,3,196,69,196,84,196,129,232,239,242,244,227,249,242,233,236,236,233,99,128,4,94,237,225,236,108,2,196,93,196,104,232,233,242,225,231,225,238,97,128,48,69], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+256120); -/* memory initializer */ allocate([235,225,244,225,235,225,238,97,129,48,165,196,117,232,225,236,230,247,233,228,244,104,128,255,105,244,242,225,233,231,232,116,2,196,141,196,152,227,249,242,233,236,236,233,99,128,4,175,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,177,244,233,236,228,101,130,1,105,196,181,196,189,225,227,245,244,101,128,30,121,226,229,236,239,119,128,30,117,117,5,196,209,196,219,196,226,196,251,197,11,226,229,238,231,225,236,105,128,9,138,228,229,246,97,128,9,10,231,117,2,196,233,196,242,234,225,242,225,244,105,128,10,138,242,237,245,235,232,105,128,10,10,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,66,246,239,247,229,236,243,233,231,110,3,197,27,197,37,197,44,226,229,238,231,225,236,105,128,9,194,228,229,246,97,128,9,66,231,245,234,225,242,225,244,105,128,10,194,246,239,247,229,236,243,233,231,110,3,197,71,197,81,197,88,226,229,238,231,225,236,105,128,9,193,228,229,246,97,128,9,65,231,245,234,225,242,225,244,105,128,10,193,118,139,0,118,197,125,198,17,198,26,198,37,198,222,198,229,199,71,199,83,199,183,199,191,199,212,97,4,197,135,197,142,197,167,197,178,228,229,246,97,128,9,53,231,117,2,197,149,197,158,234,225,242,225,244,105,128,10,181,242,237,245,235,232,105,128,10,53,235,225,244,225,235,225,238,97,128,48,247,118,132,5,213,197,190,197,217,197,249,198,5,228,225,231,229,243,104,130,251,53,197,203,197,208,182,53,128,251,53,232,229,226,242,229,119,128,251,53,104,2,197,223,197,231,229,226,242,229,119,128,5,213,239,236,225,109,129,251,75,197,240,232,229,226,242,229,119,128,251,75,246,225,246,232,229,226,242,229,119,128,5,240,249,239,228,232,229,226,242,229,119,128,5,241,227,233,242,227,236,101,128,36,229,228,239,244,226,229,236,239,119,128,30,127,101,6,198,51,198,62,198,126,198,137,198,143,198,210,227,249,242,233,236,236,233,99,128,4,50,104,4,198,72,198,81,198,95,198,111,225,242,225,226,233,99,128,6,164,230,233,238,225,236,225,242,225,226,233,99,128,251,107,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,108,237,229,228,233,225,236,225,242,225,226,233,99,128,251,109,235,225,244,225,235,225,238,97,128,48,249,238,245,115,128,38,64,242,244,233,227,225,108,2,198,154,198,160,226,225,114,128,0,124,236,233,238,101,4,198,173,198,184,198,195,198,204,225,226,239,246,229,227,237,98,128,3,13,226,229,236,239,247,227,237,98,128,3,41,236,239,247,237,239,100,128,2,204,237,239,100,128,2,200,247,225,242,237,229,238,233,225,110,128,5,126,232,239,239,107,128,2,139,105,3,198,237,198,248,199,31,235,225,244,225,235,225,238,97,128,48,248,242,225,237,97,3,199,3,199,13,199,20,226,229,238,231,225,236,105,128,9,205,228,229,246,97,128,9,77,231,245,234,225,242,225,244,105,128,10,205,243,225,242,231,97,3,199,43,199,53,199,60,226,229,238,231,225,236,105,128,9,131,228,229,246,97,128,9,3,231,245,234,225,242,225,244,105,128,10,131,237,239,238,239,243,240,225,227,101,128,255,86,111,3,199,91,199,102,199,172,225,242,237,229,238,233,225,110,128,5,120,233,227,229,100,2,199,111,199,147,233,244,229,242,225,244,233,239,110,2,199,125,199,136,232,233,242,225,231,225,238,97,128,48,158,235,225,244,225,235,225,238,97,128,48,254,237,225,242,235,235,225,238,97,129,48,155,199,160,232,225,236,230,247,233,228,244,104,128,255,158,235,225,244,225,235,225,238,97,128,48,250,240,225,242,229,110,128,36,177,116,2,199,197,199,204,233,236,228,101,128,30,125,245,242,238,229,100,128,2,140,117,2,199,218,199,229,232,233,242,225,231,225,238,97,128,48,148,235,225,244,225,235,225,238,97,128,48,244,119,143,0,119,200,18,200,251,201,5,201,28,201,68,201,135,201,143,203,114,203,155,203,167,203,242,203,250,204,1,204,12,204,21,97,8,200,36,200,43,200,53,200,64,200,102,200,134,200,146,200,182,227,245,244,101,128,30,131,229,235,239,242,229,225,110,128,49,89,232,233,242,225,231,225,238,97,128,48,143,107,2,200,70,200,94,225,244,225,235,225,238,97,129,48,239,200,82,232,225,236,230,247,233,228,244,104,128,255,156,239,242,229,225,110,128,49,88,243,237,225,236,108,2,200,112,200,123,232,233,242,225,231,225,238,97,128,48,142,235,225,244,225,235,225,238,97,128,48,238,244,244,239,243,241,245,225,242,101,128,51,87,118,2,200,152,200,160,229,228,225,243,104,128,48,28,249,245,238,228,229,242,243,227,239,242,229,246,229,242,244,233,227,225,108,128,254,52,119,3,200,190,200,199,200,213,225,242,225,226,233,99,128,6,72,230,233,238,225,236,225,242,225,226,233,99,128,254,238,232,225,237,250,225,225,226,239,246,101,2,200,228,200,237,225,242,225,226,233,99,128,6,36,230,233,238,225,236,225,242,225,226,233,99,128,254,134,226,243,241,245,225,242,101,128,51,221,227,233,242,99,2,201,14,201,19,236,101,128,36,230,245,237,230,236,229,120,128,1,117,100,2,201,34,201,44,233,229,242,229,243,233,115,128,30,133,239,116,2,201,51,201,60,225,227,227,229,238,116,128,30,135,226,229,236,239,119,128,30,137,101,4,201,78,201,89,201,101,201,125,232,233,242,225,231,225,238,97,128,48,145,233,229,242,243,244,242,225,243,115,128,33,24,107,2,201,107,201,117,225,244,225,235,225,238,97,128,48,241,239,242,229,225,110,128,49,94,239,235,239,242,229,225,110,128,49,93,231,242,225,246,101,128,30,129,232,233,244,101,8,201,164,201,173,202,1,202,91,202,175,202,220,203,16,203,72,226,245,236,236,229,116,128,37,230,99,2,201,179,201,199,233,242,227,236,101,129,37,203,201,189,233,238,246,229,242,243,101,128,37,217,239,242,238,229,242,226,242,225,227,235,229,116,2,201,216,201,236,236,229,230,116,129,48,14,201,225,246,229,242,244,233,227,225,108,128,254,67,242,233,231,232,116,129,48,15,201,246,246,229,242,244,233,227,225,108,128,254,68,100,2,202,7,202,48,233,225,237,239,238,100,129,37,199,202,18,227,239,238,244,225,233,238,233,238,231,226,236,225,227,235,243,237,225,236,236,228,233,225,237,239,238,100,128,37,200,239,247,238,240,239,233,238,244,233,238,103,2,202,64,202,80,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,191,244,242,233,225,238,231,236,101,128,37,189,236,101,2,202,98,202,140,230,244,240,239,233,238,244,233,238,103,2,202,113,202,129,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,195,244,242,233,225,238,231,236,101,128,37,193,238,244,233,227,245,236,225,242,226,242,225,227,235,229,116,2,202,160,202,167,236,229,230,116,128,48,22,242,233,231,232,116,128,48,23,242,233,231,232,244,240,239,233,238,244,233,238,103,2,202,193,202,209,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,185,244,242,233,225,238,231,236,101,128,37,183,115,3,202,228,203,2,203,10,109,2,202,234,202,246,225,236,236,243,241,245,225,242,101,128,37,171,233,236,233,238,231,230,225,227,101,128,38,58,241,245,225,242,101,128,37,161,244,225,114,128,38,6,116,2,203,22,203,33,229,236,229,240,232,239,238,101,128,38,15,239,242,244,239,233,243,229,243,232,229,236,236,226,242,225,227,235,229,116,2,203,57,203,64,236,229,230,116,128,48,24,242,233,231,232,116,128,48,25,245,240,240,239,233,238,244,233,238,103,2,203,87,203,103,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,181,244,242,233,225,238,231,236,101,128,37,179,105,2,203,120,203,131,232,233,242,225,231,225,238,97,128,48,144,107,2,203,137,203,147,225,244,225,235,225,238,97,128,48,240,239,242,229,225,110,128,49,95,237,239,238,239,243,240,225,227,101,128,255,87,111,4,203,177,203,188,203,213,203,231,232,233,242,225,231,225,238,97,128,48,146,235,225,244,225,235,225,238,97,129,48,242,203,201,232,225,236,230,247,233,228,244,104,128,255,102,110,129,32,169,203,219,237,239,238,239,243,240,225,227,101,128,255,230,247,225,229,238,244,232,225,105,128,14,39,240,225,242,229,110,128,36,178,242,233,238,103,128,30,152,243,245,240,229,242,233,239,114,128,2,183,244,245,242,238,229,100,128,2,141,249,238,110,128,1,191,120,137,0,120,204,49,204,60,204,71,204,80,204,107,204,120,204,124,204,136,204,144,225,226,239,246,229,227,237,98,128,3,61,226,239,240,239,237,239,230,111,128,49,18,227,233,242,227,236,101,128,36,231,100,2,204,86,204,96,233,229,242,229,243,233,115,128,30,141,239,244,225,227,227,229,238,116,128,30,139,229,232,225,242,237,229,238,233,225,110,128,5,109,105,128,3,190,237,239,238,239,243,240,225,227,101,128,255,88,240,225,242,229,110,128,36,179,243,245,240,229,242,233,239,114,128,2,227,121,143,0,121,204,189,205,148,205,171,205,211,207,177,207,185,207,202,208,10,208,22,209,19,209,59,209,71,209,82,209,103,210,76,97,11,204,213,204,225,204,235,204,242,204,249,205,3,205,28,205,39,205,77,205,90,205,136,225,228,239,243,241,245,225,242,101,128,51,78,226,229,238,231,225,236,105,128,9,175,227,245,244,101,128,0,253,228,229,246,97,128,9,47,229,235,239,242,229,225,110,128,49,82,231,117,2,205,10,205,19,234,225,242,225,244,105,128,10,175,242,237,245,235,232,105,128,10,47,232,233,242,225,231,225,238,97,128,48,132,107,2,205,45,205,69,225,244,225,235,225,238,97,129,48,228,205,57,232,225,236,230,247,233,228,244,104,128,255,148,239,242,229,225,110,128,49,81,237,225,235,235,225,238,244,232,225,105,128,14,78,243,237,225,236,108,2,205,100,205,111,232,233,242,225,231,225,238,97,128,48,131,235,225,244,225,235,225,238,97,129,48,227,205,124,232,225,236,230,247,233,228,244,104,128,255,108,244,227,249,242,233,236,236,233,99,128,4,99,227,233,242,99,2,205,157,205,162,236,101,128,36,232,245,237,230,236,229,120,128,1,119,100,2,205,177,205,187,233,229,242,229,243,233,115,128,0,255,239,116,2,205,194,205,203,225,227,227,229,238,116,128,30,143,226,229,236,239,119,128,30,245,101,7,205,227,206,235,206,244,207,6,207,38,207,114,207,165,104,8,205,245,205,254,206,32,206,46,206,119,206,135,206,194,206,212,225,242,225,226,233,99,128,6,74,226,225,242,242,229,101,2,206,9,206,18,225,242,225,226,233,99,128,6,210,230,233,238,225,236,225,242,225,226,233,99,128,251,175,230,233,238,225,236,225,242,225,226,233,99,128,254,242,232,225,237,250,225,225,226,239,246,101,4,206,65,206,74,206,88,206,104,225,242,225,226,233,99,128,6,38,230,233,238,225,236,225,242,225,226,233,99,128,254,138,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,139,237,229,228,233,225,236,225,242,225,226,233,99,128,254,140,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,243,237,101,2,206,142,206,155,228,233,225,236,225,242,225,226,233,99,128,254,244,229,237,105,2,206,163,206,178,238,233,244,233,225,236,225,242,225,226,233,99,128,252,221,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,88,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,148,244,232,242,229,229,228,239,244,243,226,229,236,239,247,225,242,225,226,233,99,128,6,209,235,239,242,229,225,110,128,49,86,110,129,0,165,206,250,237,239,238,239,243,240,225,227,101,128,255,229,111,2,207,12,207,21,235,239,242,229,225,110,128,49,85,242,233,238,232,233,229,245,232,235,239,242,229,225,110,128,49,134,114,3,207,46,207,82,207,94,225,232,226,229,238,249,239,237,111,2,207,60,207,69,232,229,226,242,229,119,128,5,170,236,229,230,244,232,229,226,242,229,119,128,5,170,233,227,249,242,233,236,236,233,99,128,4,75,245,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,249,243,233,229,245,238,103,3,207,127,207,136,207,152,235,239,242,229,225,110,128,49,129,240,225,238,243,233,239,243,235,239,242,229,225,110,128,49,131,243,233,239,243,235,239,242,229,225,110,128,49,130,244,233,246,232,229,226,242,229,119,128,5,154,231,242,225,246,101,128,30,243,232,239,239,107,129,1,180,207,194,225,226,239,246,101,128,30,247,105,5,207,214,207,225,207,236,207,245,207,253,225,242,237,229,238,233,225,110,128,5,117,227,249,242,233,236,236,233,99,128,4,87,235,239,242,229,225,110,128,49,98,238,249,225,238,103,128,38,47,247,238,225,242,237,229,238,233,225,110,128,5,130,237,239,238,239,243,240,225,227,101,128,255,89,111,7,208,38,208,108,208,119,208,129,208,167,208,213,208,222,100,131,5,217,208,48,208,68,208,77,228,225,231,229,243,104,129,251,57,208,59,232,229,226,242,229,119,128,251,57,232,229,226,242,229,119,128,5,217,249,239,100,2,208,85,208,94,232,229,226,242,229,119,128,5,242,240,225,244,225,232,232,229,226,242,229,119,128,251,31,232,233,242,225,231,225,238,97,128,48,136,233,235,239,242,229,225,110,128,49,137,107,2,208,135,208,159,225,244,225,235,225,238,97,129,48,232,208,147,232,225,236,230,247,233,228,244,104,128,255,150,239,242,229,225,110,128,49,91,243,237,225,236,108,2,208,177,208,188,232,233,242,225,231,225,238,97,128,48,135,235,225,244,225,235,225,238,97,129,48,231,208,201,232,225,236,230,247,233,228,244,104,128,255,110,244,231,242,229,229,107,128,3,243,121,2,208,228,209,9,97,2,208,234,208,244,229,235,239,242,229,225,110,128,49,136,107,2,208,250,209,2,239,242,229,225,110,128,49,135,244,232,225,105,128,14,34,233,238,231,244,232,225,105,128,14,13,112,2,209,25,209,32,225,242,229,110,128,36,180,239,231,229,231,242,225,237,237,229,238,105,129,3,122,209,48,231,242,229,229,235,227,237,98,128,3,69,114,129,1,166,209,65,233,238,103,128,30,153,243,245,240,229,242,233,239,114,128,2,184,116,2,209,88,209,95,233,236,228,101,128,30,249,245,242,238,229,100,128,2,142,117,5,209,115,209,126,209,136,209,174,210,50,232,233,242,225,231,225,238,97,128,48,134,233,235,239,242,229,225,110,128,49,140,107,2,209,142,209,166,225,244,225,235,225,238,97,129,48,230,209,154,232,225,236,230,247,233,228,244,104,128,255,149,239,242,229,225,110,128,49,96,115,3,209,182,209,220,210,5,226,233,103,2,209,190,209,201,227,249,242,233,236,236,233,99,128,4,107,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,109,236,233,244,244,236,101,2,209,231,209,242,227,249,242,233,236,236,233,99,128,4,103,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,105,237,225,236,108,2,210,14,210,25,232,233,242,225,231,225,238,97,128,48,133,235,225,244,225,235,225,238,97,129,48,229,210,38,232,225,236,230,247,233,228,244,104,128,255,109,249,101,2,210,57,210,66,235,239,242,229,225,110,128,49,139,239,235,239,242,229,225,110,128,49,138,249,97,2,210,83,210,93,226,229,238,231,225,236,105,128,9,223,228,229,246,97,128,9,95,122,142,0,122,210,132,211,140,211,151,211,194,211,221,213,0,213,108,213,150,213,162,213,174,213,202,213,210,213,226,213,235,97,10,210,154,210,165,210,172,210,179,210,190,211,12,211,42,211,53,211,89,211,101,225,242,237,229,238,233,225,110,128,5,102,227,245,244,101,128,1,122,228,229,246,97,128,9,91,231,245,242,237,245,235,232,105,128,10,91,104,4,210,200,210,209,210,223,210,253,225,242,225,226,233,99,128,6,56,230,233,238,225,236,225,242,225,226,233,99,128,254,198,105,2,210,229,210,244,238,233,244,233,225,236,225,242,225,226,233,99,128,254,199,242,225,231,225,238,97,128,48,86,237,229,228,233,225,236,225,242,225,226,233,99,128,254,200,233,110,2,211,19,211,28,225,242,225,226,233,99,128,6,50,230,233,238,225,236,225,242,225,226,233,99,128,254,176,235,225,244,225,235,225,238,97,128,48,182,241,229,102,2,211,61,211,75,231,225,228,239,236,232,229,226,242,229,119,128,5,149,241,225,244,225,238,232,229,226,242,229,119,128,5,148,242,241,225,232,229,226,242,229,119,128,5,152,249,233,110,130,5,214,211,111,211,131,228,225,231,229,243,104,129,251,54,211,122,232,229,226,242,229,119,128,251,54,232,229,226,242,229,119,128,5,214,226,239,240,239,237,239,230,111,128,49,23,99,3,211,159,211,166,211,188,225,242,239,110,128,1,126,233,242,99,2,211,174,211,179,236,101,128,36,233,245,237,230,236,229,120,128,30,145,245,242,108,128,2,145,228,239,116,130,1,124,211,204,211,213,225,227,227,229,238,116,128,1,124,226,229,236,239,119,128,30,147,101,6,211,235,211,246,212,33,212,44,212,55,212,251,227,249,242,233,236,236,233,99,128,4,55,100,2,211,252,212,15,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,153,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,223,232,233,242,225,231,225,238,97,128,48,92,235,225,244,225,235,225,238,97,128,48,188,242,111,140,0,48,212,84,212,93,212,103,212,110,212,135,212,148,212,159,212,171,212,182,212,192,212,203,212,210,225,242,225,226,233,99,128,6,96,226,229,238,231,225,236,105,128,9,230,228,229,246,97,128,9,102,231,117,2,212,117,212,126,234,225,242,225,244,105,128,10,230,242,237,245,235,232,105,128,10,102,232,225,227,235,225,242,225,226,233,99,128,6,96,233,238,230,229,242,233,239,114,128,32,128,237,239,238,239,243,240,225,227,101,128,255,16,239,236,228,243,244,249,236,101,128,247,48,240,229,242,243,233,225,110,128,6,240,243,245,240,229,242,233,239,114,128,32,112,244,232,225,105,128,14,80,247,233,228,244,104,3,212,222,212,231,212,243,234,239,233,238,229,114,128,254,255,238,239,238,234,239,233,238,229,114,128,32,12,243,240,225,227,101,128,32,11,244,97,128,3,182,104,2,213,6,213,17,226,239,240,239,237,239,230,111,128,49,19,101,4,213,27,213,38,213,54,213,65,225,242,237,229,238,233,225,110,128,5,106,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,194,227,249,242,233,236,236,233,99,128,4,54,100,2,213,71,213,90,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,151,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,221,105,3,213,116,213,127,213,138,232,233,242,225,231,225,238,97,128,48,88,235,225,244,225,235,225,238,97,128,48,184,238,239,242,232,229,226,242,229,119,128,5,174,236,233,238,229,226,229,236,239,119,128,30,149,237,239,238,239,243,240,225,227,101,128,255,90,111,2,213,180,213,191,232,233,242,225,231,225,238,97,128,48,94,235,225,244,225,235,225,238,97,128,48,190,240,225,242,229,110,128,36,181,242,229,244,242,239,230,236,229,248,232,239,239,107,128,2,144,243,244,242,239,235,101,128,1,182,117,2,213,241,213,252,232,233,242,225,231,225,238,97,128,48,90,235,225,244,225,235,225,238,97,128,48,186,0,108,116,117,111,57,0,0,0,142,0,0,0,39,0,0,0,58,0,0,0,32,1,0,0,114,97,115,116,101,114,49,0,2,0,0,0,72,0,0,0,56,34,4,0,0,0,1,0,0,0,2,0,0,0,0,0,219,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,12,0,0,0,13,0,0,0,143,0,0,0,40,0,0,0,32,34,4,0,0,0,0,0,114,97,115,116,101,114,53,0,2,0,0,0,72,0,0,0,128,34,4,0,0,0,1,0,0,0,2,0,0,0,0,0,219,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,12,0,0,0,13,0,0,0,143,0,0,0,40,0,0,0,32,34,4,0,0,0,0,0,24,0,0,0,59,0,0,0,0,0,0,0,60,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,63,0,0,0,0,0,0,0,24,0,0,0,59,0,0,0,0,0,0,0,64,0,0,0,65,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,66,0,0,0,67,0,0,0,0,0,0,0,56,0,0,0,68,0,0,0,0,0,0,0,69,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,71,0,0,0,72,0,0,0,0,0,0,0,24,0,0,0,59,0,0,0,0,0,0,0,73,0,0,0,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,75,0,0,0,76,0,0,0,0,0,0,0,24,0,0,0,59,0,0,0,0,0,0,0,77,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,79,0,0,0,80,0,0,0,0,0,0,0,24,0,0,0,59,0,0,0,0,0,0,0,81,0,0,0,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,83,0,0,0,84,0,0,0,0,0,0,0,44,0,0,0,85,0,0,0,0,0,0,0,86,0,0,0,87,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,88,0,0,0,89,0,0,0,0,0,0,0,44,0,0,0,90,0,0,0,0,0,0,0,91,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,93,0,0,0,94,0,0,0,0,0,0,0,40,0,0,0,95,0,0,0,33,1,0,0,96,0,0,0,97,0,0,0,14,0,0,0,41,0,0,0,98,0,0,0,42,0,0,0,43,0,0,0,14,0,0,0,99,0,0,0,100,0,0,0,0,0,0,0,115,102,110,116,0,0,0,0,15,0,0,0,23,0,0,0,24,0,0,0,34,1,0,0,101,0,0,0,25,0,0,0,16,0,0,0,44,0,0,0,102,0,0,0,45,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,35,1,0,0,108,0,0,0,36,1,0,0,109,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,17,0,0,0,113,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,37,1,0,0,47,0,0,0,38,1,0,0,48,0,0,0,114,0,0,0,49,0,0,0,115,0,0,0,50,0,0,0,116,0,0,0,39,1,0,0,51,0,0,0,52,0,0,0,26,0,0,0,0,0,0,0,20,0,0,0,192,36,4,0,0,0,1,0,0,0,2,0,200,36,4,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,192,37,4,0,208,37,4,0,224,37,4,0,248,37,4,0,0,38,4,0,16,38,4,0,24,38,4,0,32,38,4,0,40,38,4,0,56,38,4,0,0,0,0,0,0,0,0,0,115,102,110,116,45,116,97,98,108,101,0,0,0,0,0,0,25,0,0,0,117,0,0,0,27,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,220,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,18,0,0,0,118,0,0,0,98,100,102,0,0,0,0,0,53,0,0,0,54,0,0,0,116,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,9,1,0,0,9,1,1,0,8,1,2,0,9,1,3,0,9,1,4,0,9,1,5,0,9,1,6,0,9,1,7,0,9,1,8,0,9,1,9,0,9,1,10,0,9,1,11,0,0,0,0,0,0,0,0,0,16,4,8,0,17,0,0,0,16,4,0,0,16,4,12,0,0,0,0,0,0,0,0,0,12,2,40,0,12,2,42,0,8,1,44,0,8,1,45,0,8,1,46,0,9,1,47,0,0,0,0,0,0,0,0,0,4,0,8,0,8,1,0,0,8,1,1,0,9,1,2,0,9,1,3,0,8,1,4,0,9,1,5,0,9,1,6,0,8,1,7,0,0,0,0,0,4,0,8,0,12,2,4,0,12,2,6,0,12,2,8,0,12,2,10,0,0,0,0,0,4,0,16,0,16,4,0,0,16,4,4,0,16,4,8,0,16,4,12,0,0,0,0,0,4,0,5,0,8,1,0,0,8,1,1,0,9,1,2,0,9,1,3,0,8,1,4,0,0,0,0,0,0,0,0,0,4,0,54,0,16,4,0,0,16,4,4,0,17,4,8,0,17,4,12,0,12,2,16,0,12,2,18,0,17,4,20,0,17,4,24,0,17,4,28,0,17,4,32,0,13,2,36,0,13,2,38,0,13,2,40,0,13,2,42,0,12,2,44,0,12,2,46,0,13,2,48,0,13,2,50,0,13,2,52,0,0,0,0,0,0,0,0,0,4,0,54,0,16,4,0,0,16,4,4,0,12,2,8,0,12,2,10,0,12,2,12,0,12,2,14,0,12,2,16,0,24,16,20,0,24,8,36,0,24,6,44,0,9,1,50,0,9,1,51,0,8,1,52,0,8,1,53,0,0,0,0,0,4,0,6,0,12,2,0,0,12,4,4,0,12,4,8,0,0,0,0,0,0,0,0,0,12,2,0,0,12,2,2,0,12,2,4,0,12,2,6,0,12,2,8,0,12,4,12,0,0,0,0,0,0,0,0,0,4,0,32,0,16,4,0,0,16,4,4,0,13,2,8,0,13,2,10,0,16,4,12,0,16,4,16,0,16,4,20,0,16,4,24,0,16,4,28,0,0,0,0,0,0,0,0,0,4,0,78,0,12,2,0,0,13,2,2,0,12,2,4,0,12,2,6,0,13,2,8,0,13,2,10,0,13,2,12,0,13,2,14,0,13,2,16,0,13,2,18,0,13,2,20,0,13,2,22,0,13,2,24,0,13,2,26,0,13,2,28,0,13,2,30,0,8,1,32,0,8,1,33,0,8,1,34,0,8,1,35,0,8,1,36,0,8,1,37,0,8,1,38,0,8,1,39,0,8,1,40,0,8,1,41,0,16,4,44,0,16,4,48,0,16,4,52,0,16,4,56,0,8,1,60,0,8,1,61,0,8,1,62,0,8,1,63,0,12,2,64,0,12,2,66,0,12,2,68,0,13,2,70,0,13,2,72,0,13,2,74,0,12,2,76,0,12,2,78,0,0,0,0,0,4,0,8,0,16,4,80,0,16,4,84,0,0,0,0,0,4,0,10,0,13,2,88,0,13,2,90,0,12,2,92,0,12,2,94,0,12,2,96,0,0,0,0,0,0,0,0,0,4,0,6,0,17,4,0,0,12,2,4,0,0,0,0,0,4,0,26,0,12,2,6,0,12,2,8,0,12,2,10,0,12,2,12,0,12,2,14,0,12,2,16,0,12,2,18,0,12,2,20,0,12,2,22,0,12,2,24,0,12,2,26,0,12,2,28,0,12,2,30,0,0,0,0,0,0,0,0,0,4,0,36,0,16,4,0,0,13,2,4,0,13,2,6,0,13,2,8,0,12,2,10,0,13,2,12,0,13,2,14,0,13,2,16,0,13,2,18,0,13,2,20,0,13,2,22,0,13,2,24,0,13,2,26,0,13,2,28,0,13,2,30,0,13,2,32,0,12,2,34,0,0,0,0,0,0,0,0,0,2,0,0,0,255,255,255,255,99,105,110,117,0,0,0,0,255,255,255,255,99,105,110,117,1,0,0,0,0,0,0,0,110,109,114,97,3,0,0,0,0,0,0,0,98,109,121,115,3,0,0,0,10,0,0,0,99,105,110,117,3,0,0,0,1,0,0,0,99,105,110,117,3,0,0,0,2,0,0,0,115,105,106,115,3,0,0,0,3,0,0,0,32,32,98,103,3,0,0,0,4,0,0,0,53,103,105,98,3,0,0,0,5,0,0,0,115,110,97,119,3,0,0,0,6,0,0,0,97,104,111,106,0,0,0,0,200,34,4,0,0,35,4,0,56,35,4,0,112,35,4,0,168,35,4,0,224,35,4,0,24,36,4,0,80,36,4,0,136,36,4,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,4,0,8,0,17,4,4,0,17,4,8,0,0,0,0,0,108,116,117,111,120,0,0,0,144,0,0,0,0,0,0,0,121,0,0,0,40,1,0,0,115,109,111,111,116,104,0,0,2,0,0,0,72,0,0,0,200,42,4,0,0,0,1,0,0,0,2,0,0,0,0,0,221,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,19,0,0,0,20,0,0,0,145,0,0,0,55,0,0,0,176,42,4,0,0,0,0,0,115,109,111,111,116,104,45,108,99,100,0,0,0,0,0,0,2,0,0,0,72,0,0,0,16,43,4,0,0,0,1,0,0,0,2,0,0,0,0,0,221,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,21,0,0,0,20,0,0,0,145,0,0,0,55,0,0,0,176,42,4,0,0,0,0,0,115,109,111,111,116,104,45,108,99,100,118,0,0,0,0,0,2,0,0,0,72,0,0,0,96,43,4,0,0,0,1,0,0,0,2,0,0,0,0,0,221,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,22,0,0,0,20,0,0,0,145,0,0,0,55,0,0,0,176,42,4,0,0,0,0,0,122,0,0,0,123,0,0,0,56,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,116,114,117,101,116,121,112,101,0,0,0,0,0,0,0,0,1,5,0,0,84,0,0,0,200,43,4,0,0,0,1,0,0,0,2,0,0,0,0,0,222,0,0,0,41,1,0,0,124,0,0,0,56,3,0,0,48,1,0,0,160,0,0,0,28,0,0,0,42,1,0,0,223,0,0,0,43,1,0,0,224,0,0,0,0,0,0,0,17,0,0,0,26,0,0,0,24,0,0,0,25,0,0,0,0,0,0,0,29,0,0,0,125,0,0,0,126,0,0,0,0,0,0,0,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,0,1,0,0,0,64,0,0,0,1,0,0,0,1,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,9,0,3,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,255,254,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,5,6,7,8,9,3,5,7,9,11,13,15,17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,32,32,32,32,32,32,2,2,0,80,16,16,16,16,16,16,16,16,0,0,16,0,16,16,16,16,18,16,0,34,1,17,16,32,0,16,32,16,16,0,16,16,0,0,0,0,16,16,16,16,16,0,32,32,0,0,32,32,0,0,32,17,32,17,17,17,32,33,33,1,1,0,0,16,33,33,33,33,33,33,17,17,16,0,33,33,17,16,16,16,33,33,33,33,17,17,17,17,17,17,17,17,17,17,17,17,32,16,16,16,16,16,16,16,32,32,0,0,0,0,16,16,0,32,32,0,0,16,32,32,17,16,51,33,33,16,32,0,0,0,0,0,0,0,0,0,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,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,102,110,116,0,0,0,0,88,240,188,5,228,2,0,0,241,59,35,40,196,135,0,0,234,161,68,163,225,1,0,0,88,240,188,5,228,2,0,0,241,59,35,40,196,135,0,0,235,161,68,163,225,1,0,0,212,234,229,17,80,3,0,0,59,202,48,90,99,144,0,0,2,38,164,19,126,0,0,0,252,255,251,255,8,0,0,0,184,72,158,156,162,190,0,0,18,1,2,112,8,0,0,0,252,255,251,255,8,0,0,0,131,4,90,10,57,124,1,0,18,1,2,112,8,0,0,0,68,70,75,97,105,83,104,111,45,83,66,0,0,0,0,0,0,68,70,75,97,105,83,104,117,0,0,0,0,0,0,0,0,0,68,70,75,97,105,45,83,66,0,0,0,0,0,0,0,0,0,72,117,97,84,105,97,110,75,97,105,84,105,63,0,0,0,0,72,117,97,84,105,97,110,83,111,110,103,84,105,63,0,0,0,77,105,110,103,76,105,85,0,0,0,0,0,0,0,0,0,0,80,77,105,110,103,76,105,85,0,0,0,0,0,0,0,0,0,77,105,110,103,76,105,52,51,0,0,0,0,0,0,0,0,0,184,47,4,0,208,47,4,0,224,47,4,0,240,47,4,0,8,48,4,0,24,48,4,0,32,48,4,0,40,48,4,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,84,114,117,101,84,121,112,101,0,0,0,0,0,0,0,0,109,117,108,116,105,45,109,97,115,116,101,114,115,0,0,0,0,0,0,0,0,0,0,0,57,0,0,0,127,0,0,0,58,0,0,0,0,0,0,0,116,114,117,101,116,121,112,101,45,101,110,103,105,110,101,0,2,0,0,0,0,0,0,0,116,116,45,103,108,121,102,0,59,0,0,0,0,0,0,0,4,0,16,0,17,4,0,0,12,2,4,0,12,2,6,0,12,2,8,0,12,2,10,0,12,2,12,0,12,2,14,0,0,0,0,0,0,0,0,0,4,0,20,0,16,4,0,0,16,4,4,0,16,4,8,0,16,4,12,0,12,2,16,0,12,2,18,0,0,0,0,0,87,101,105,103,104,116,0,0,87,105,100,116,104,0,0,0,79,112,116,105,99,97,108,83,105,122,101,0,0,0,0,0,83,108,97,110,116,0,0,0,4,0,20,0,17,4,0,0,12,2,4,0,12,2,6,0,16,4,8,0,12,2,12,0,12,2,14,0,16,4,16,0,0,0,0,0,0,0,0,0,116,121,112,101,49,0,0,0,1,5,0,0,40,0,0,0,200,48,4,0,0,0,1,0,0,0,2,0,0,0,0,0,225,0,0,0,44,1,0,0,128,0,0,0,44,2,0,0,44,0,0,0,180,0,0,0,30,0,0,0,45,1,0,0,226,0,0,0,46,1,0,0,227,0,0,0,47,1,0,0,17,0,0,0,26,0,0,0,26,0,0,0,27,0,0,0,129,0,0,0,31,0,0,0,130,0,0,0,0,0,0,0,112,115,104,105,110,116,101,114,0,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,112,115,97,117,120,0,0,0,82,101,103,117,108,97,114,0,66,111,108,100,0,0,0,0,66,108,97,99,107,0,0,0,46,110,111,116,100,101,102,0,101,101,120,101,99,0,0,0,99,108,111,115,101,102,105,108,101,0,0,0,0,0,0,0,70,111,110,116,68,105,114,101,99,116,111,114,121,0,0,0,96,56,4,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,104,56,4,0,3,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,112,56,4,0,3,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,128,56,4,0,3,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,144,56,4,0,3,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,152,56,4,0,3,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,168,56,4,0,3,0,0,0,1,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,184,56,4,0,3,0,0,0,2,0,0,0,0,0,0,0,26,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,208,56,4,0,3,0,0,0,2,0,0,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,232,56,4,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,240,56,4,0,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,57,4,0,4,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,57,4,0,4,0,0,0,2,0,0,0,0,0,0,0,184,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,24,57,4,0,4,0,0,0,2,0,0,0,0,0,0,0,188,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,40,57,4,0,4,0,0,0,4,0,0,0,0,0,0,0,108,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,56,57,4,0,4,0,0,0,2,0,0,0,0,0,0,0,112,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,72,57,4,0,4,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,88,57,4,0,4,0,0,0,8,0,0,0,0,0,0,0,12,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,2,0,0,0,104,57,4,0,4,0,0,0,8,0,0,0,0,0,0,0,40,0,0,0,2,0,0,0,10,0,0,0,9,0,0,0,2,0,0,0,120,57,4,0,4,0,0,0,8,0,0,0,0,0,0,0,60,0,0,0,2,0,0,0,14,0,0,0,10,0,0,0,2,0,0,0,136,57,4,0,4,0,0,0,8,0,0,0,0,0,0,0,88,0,0,0,2,0,0,0,10,0,0,0,11,0,0,0,2,0,0,0,160,57,4,0,4,0,0,0,8,0,0,0,0,0,0,0,120,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,168,57,4,0,4,0,0,0,8,0,0,0,0,0,0,0,122,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,176,57,4,0,4,0,0,0,8,0,0,0,0,0,0,0,192,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,192,57,4,0,4,0,0,0,8,0,0,0,0,0,0,0,128,0,0,0,2,0,0,0,12,0,0,0,124,0,0,0,2,0,0,0,208,57,4,0,4,0,0,0,8,0,0,0,0,0,0,0,154,0,0,0,2,0,0,0,12,0,0,0,125,0,0,0,2,0,0,0,224,57,4,0,4,0,0,0,3,0,0,0,0,0,0,0,180,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,240,57,4,0,4,0,0,0,1,0,0,0,0,0,0,0,126,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,58,4,0,1,0,0,0,6,0,0,0,0,0,0,0,232,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,58,4,0,1,0,0,0,2,0,0,0,0,0,0,0,44,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,32,58,4,0,1,0,0,0,2,0,0,0,0,0,0,0,45,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,48,58,4,0,1,0,0,0,3,0,0,0,0,0,0,0,92,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,58,4,0,5,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,80,58,4,0,7,0,0,0,2,0,0,0,0,0,0,0,24,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,88,58,4,0,7,0,0,0,2,0,0,0,0,0,0,0,28,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,96,58,4,0,8,0,0,0,8,0,0,0,0,0,0,0,96,1,0,0,4,0,0,0,16,0,0,0,160,1,0,0,1,0,0,0,112,58,4,0,8,0,0,0,10,0,0,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,128,58,4,0,8,0,0,0,10,0,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,144,58,4,0,8,0,0,0,10,0,0,0,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,80,56,4,0,8,0,0,0,10,0,0,0,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,152,58,4,0,8,0,0,0,10,0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,160,58,4,0,8,0,0,0,10,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,184,58,4,0,8,0,0,0,10,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,200,58,4,0,8,0,0,0,10,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,216,58,4,0,8,0,0,0,10,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,232,58,4,0,8,0,0,0,10,0,0,0,80,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,104,97,114,83,116,114,105,110,103,115,0,0,0,0,0,118,101,114,115,105,111,110,0,78,111,116,105,99,101,0,0,70,117,108,108,78,97,109,101], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+266360); -/* memory initializer */ allocate([70,97,109,105,108,121,78,97,109,101,0,0,0,0,0,0,87,101,105,103,104,116,0,0,73,116,97,108,105,99,65,110,103,108,101,0,0,0,0,0,105,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,85,110,100,101,114,108,105,110,101,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,84,104,105,99,107,110,101,115,115,0,0,0,0,0,0,70,83,84,121,112,101,0,0,85,110,105,113,117,101,73,68,0,0,0,0,0,0,0,0,108,101,110,73,86,0,0,0,76,97,110,103,117,97,103,101,71,114,111,117,112,0,0,0,112,97,115,115,119,111,114,100,0,0,0,0,0,0,0,0,66,108,117,101,83,99,97,108,101,0,0,0,0,0,0,0,66,108,117,101,83,104,105,102,116,0,0,0,0,0,0,0,66,108,117,101,70,117,122,122,0,0,0,0,0,0,0,0,66,108,117,101,86,97,108,117,101,115,0,0,0,0,0,0,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,70,97,109,105,108,121,66,108,117,101,115,0,0,0,0,0,70,97,109,105,108,121,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,0,0,83,116,100,72,87,0,0,0,83,116,100,86,87,0,0,0,77,105,110,70,101,97,116,117,114,101,0,0,0,0,0,0,83,116,101,109,83,110,97,112,72,0,0,0,0,0,0,0,83,116,101,109,83,110,97,112,86,0,0,0,0,0,0,0,69,120,112,97,110,115,105,111,110,70,97,99,116,111,114,0,70,111,114,99,101,66,111,108,100,0,0,0,0,0,0,0,70,111,110,116,78,97,109,101,0,0,0,0,0,0,0,0,80,97,105,110,116,84,121,112,101,0,0,0,0,0,0,0,70,111,110,116,84,121,112,101,0,0,0,0,0,0,0,0,83,116,114,111,107,101,87,105,100,116,104,0,0,0,0,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,78,68,86,0,0,0,0,0,67,68,86,0,0,0,0,0,68,101,115,105,103,110,86,101,99,116,111,114,0,0,0,0,70,111,110,116,77,97,116,114,105,120,0,0,0,0,0,0,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,83,117,98,114,115,0,0,0,80,114,105,118,97,116,101,0,66,108,101,110,100,68,101,115,105,103,110,80,111,115,105,116,105,111,110,115,0,0,0,0,66,108,101,110,100,68,101,115,105,103,110,77,97,112,0,0,66,108,101,110,100,65,120,105,115,84,121,112,101,115,0,0,87,101,105,103,104,116,86,101,99,116,111,114,0,0,0,0,66,117,105,108,100,67,104,97,114,65,114,114,97,121,0,0,139,247,225,13,14,0,0,0,100,117,112,0,0,0,0,0,112,117,116,0,0,0,0,0,83,116,97,110,100,97,114,100,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,69,120,112,101,114,116,69,110,99,111,100,105,110,103,0,0,73,83,79,76,97,116,105,110,49,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,37,33,80,83,45,65,100,111,98,101,70,111,110,116,0,0,37,33,70,111,110,116,84,121,112,101,0,0,0,0,0,0,168,59,4,0,192,59,4,0,200,59,4,0,216,59,4,0,224,59,4,0,248,59,4,0,0,60,4,0,16,60,4,0,32,60,4,0,40,60,4,0,48,60,4,0,64,60,4,0,0,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,228,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,28,0,0,0,131,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,84,121,112,101,32,49,0,0,112,111,115,116,115,99,114,105,112,116,45,105,110,102,111,0,132,0,0,0,133,0,0,0,229,0,0,0,134,0,0,0,107,101,114,110,105,110,103,0,29,0,0,0,0,0,0,0,109,117,108,116,105,45,109,97,115,116,101,114,115,0,0,0,135,0,0,0,60,0,0,0,61,0,0,0,136,0,0,0,62,0,0,0,0,0,0,0,87,105,100,116,104,0,0,0,79,112,116,105,99,97,108,83,105,122,101,0,0,0,0,0,116,49,99,105,100,0,0,0,1,5,0,0,40,0,0,0,112,60,4,0,0,0,1,0,0,0,2,0,0,0,0,0,230,0,0,0,48,1,0,0,137,0,0,0,76,1,0,0,48,0,0,0,172,0,0,0,32,0,0,0,49,1,0,0,231,0,0,0,50,1,0,0,232,0,0,0,51,1,0,0,17,0,0,0,26,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,0,0,0,0,0,112,115,104,105,110,116,101,114,0,0,0,0,0,0,0,0,112,115,97,117,120,0,0,0,82,101,103,117,108,97,114,0,66,111,108,100,0,0,0,0,66,108,97,99,107,0,0,0,37,65,68,79,66,101,103,105,110,70,111,110,116,68,105,99,116,0,0,0,0,0,0,0,88,68,4,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,68,4,0,0,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,68,4,0,0,0,0,0,2,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,68,4,0,0,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,68,4,0,0,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,68,4,0,0,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,68,4,0,0,0,0,0,2,0,0,0,0,0,0,0,72,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,68,4,0,0,0,0,0,2,0,0,0,0,0,0,0,144,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,68,4,0,0,0,0,0,2,0,0,0,0,0,0,0,148,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,68,4,0,0,0,0,0,2,0,0,0,0,0,0,0,152,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,68,4,0,0,0,0,0,2,0,0,0,0,0,0,0,156,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,68,4,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,68,4,0,3,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,4,0,3,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,69,4,0,3,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,69,4,0,3,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,69,4,0,3,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,69,4,0,3,0,0,0,1,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,69,4,0,3,0,0,0,2,0,0,0,0,0,0,0,26,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,69,4,0,3,0,0,0,2,0,0,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,69,4,0,2,0,0,0,2,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,0,128,69,4,0,1,0,0,0,2,0,0,0,0,0,0,0,212,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,69,4,0,1,0,0,0,2,0,0,0,0,0,0,0,213,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,69,4,0,1,0,0,0,2,0,0,0,0,0,0,0,244,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,69,4,0,1,0,0,0,2,0,0,0,0,0,0,0,248,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,69,4,0,1,0,0,0,2,0,0,0,0,0,0,0,240,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,69,4,0,1,0,0,0,2,0,0,0,0,0,0,0,196,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,69,4,0,1,0,0,0,3,0,0,0,0,0,0,0,200,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,69,4,0,1,0,0,0,3,0,0,0,0,0,0,0,204,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,70,4,0,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,70,4,0,4,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,70,4,0,4,0,0,0,2,0,0,0,0,0,0,0,184,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,70,4,0,4,0,0,0,2,0,0,0,0,0,0,0,188,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,70,4,0,4,0,0,0,4,0,0,0,0,0,0,0,108,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,70,4,0,4,0,0,0,2,0,0,0,0,0,0,0,112,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,70,4,0,4,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,70,4,0,4,0,0,0,8,0,0,0,0,0,0,0,12,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,0,0,0,0,128,70,4,0,4,0,0,0,8,0,0,0,0,0,0,0,40,0,0,0,2,0,0,0,10,0,0,0,9,0,0,0,0,0,0,0,144,70,4,0,4,0,0,0,8,0,0,0,0,0,0,0,60,0,0,0,2,0,0,0,14,0,0,0,10,0,0,0,0,0,0,0,160,70,4,0,4,0,0,0,8,0,0,0,0,0,0,0,88,0,0,0,2,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,184,70,4,0,4,0,0,0,8,0,0,0,0,0,0,0,120,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,192,70,4,0,4,0,0,0,8,0,0,0,0,0,0,0,122,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,200,70,4,0,4,0,0,0,8,0,0,0,0,0,0,0,192,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,216,70,4,0,4,0,0,0,8,0,0,0,0,0,0,0,128,0,0,0,2,0,0,0,12,0,0,0,124,0,0,0,0,0,0,0,232,70,4,0,4,0,0,0,8,0,0,0,0,0,0,0,154,0,0,0,2,0,0,0,12,0,0,0,125,0,0,0,0,0,0,0,248,70,4,0,4,0,0,0,1,0,0,0,0,0,0,0,126,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,71,4,0,5,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,71,4,0,5,0,0,0,10,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,71,4,0,5,0,0,0,10,0,0,0,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,71,4,0,5,0,0,0,10,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,73,68,70,111,110,116,78,97,109,101,0,0,0,0,0,67,73,68,70,111,110,116,86,101,114,115,105,111,110,0,0,67,73,68,70,111,110,116,84,121,112,101,0,0,0,0,0,82,101,103,105,115,116,114,121,0,0,0,0,0,0,0,0,79,114,100,101,114,105,110,103,0,0,0,0,0,0,0,0,83,117,112,112,108,101,109,101,110,116,0,0,0,0,0,0,85,73,68,66,97,115,101,0,67,73,68,77,97,112,79,102,102,115,101,116,0,0,0,0,70,68,66,121,116,101,115,0,71,68,66,121,116,101,115,0,67,73,68,67,111,117,110,116,0,0,0,0,0,0,0,0,118,101,114,115,105,111,110,0,78,111,116,105,99,101,0,0,70,117,108,108,78,97,109,101,0,0,0,0,0,0,0,0,70,97,109,105,108,121,78,97,109,101,0,0,0,0,0,0,87,101,105,103,104,116,0,0,73,116,97,108,105,99,65,110,103,108,101,0,0,0,0,0,105,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,85,110,100,101,114,108,105,110,101,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,84,104,105,99,107,110,101,115,115,0,0,0,0,0,0,70,83,84,121,112,101,0,0,80,97,105,110,116,84,121,112,101,0,0,0,0,0,0,0,70,111,110,116,84,121,112,101,0,0,0,0,0,0,0,0,83,117,98,114,77,97,112,79,102,102,115,101,116,0,0,0,83,68,66,121,116,101,115,0,83,117,98,114,67,111,117,110,116,0,0,0,0,0,0,0,108,101,110,66,117,105,108,100,67,104,97,114,65,114,114,97,121,0,0,0,0,0,0,0,70,111,114,99,101,66,111,108,100,84,104,114,101,115,104,111,108,100,0,0,0,0,0,0,83,116,114,111,107,101,87,105,100,116,104,0,0,0,0,0,85,110,105,113,117,101,73,68,0,0,0,0,0,0,0,0,108,101,110,73,86,0,0,0,76,97,110,103,117,97,103,101,71,114,111,117,112,0,0,0,112,97,115,115,119,111,114,100,0,0,0,0,0,0,0,0,66,108,117,101,83,99,97,108,101,0,0,0,0,0,0,0,66,108,117,101,83,104,105,102,116,0,0,0,0,0,0,0,66,108,117,101,70,117,122,122,0,0,0,0,0,0,0,0,66,108,117,101,86,97,108,117,101,115,0,0,0,0,0,0,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,70,97,109,105,108,121,66,108,117,101,115,0,0,0,0,0,70,97,109,105,108,121,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,0,0,83,116,100,72,87,0,0,0,83,116,100,86,87,0,0,0,77,105,110,70,101,97,116,117,114,101,0,0,0,0,0,0,83,116,101,109,83,110,97,112,72,0,0,0,0,0,0,0,83,116,101,109,83,110,97,112,86,0,0,0,0,0,0,0,70,111,114,99,101,66,111,108,100,0,0,0,0,0,0,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,70,68,65,114,114,97,121,0,70,111,110,116,77,97,116,114,105,120,0,0,0,0,0,0,69,120,112,97,110,115,105,111,110,70,97,99,116,111,114,0,37,33,80,83,45,65,100,111,98,101,45,51,46,48,32,82,101,115,111,117,114,99,101,45,67,73,68,70,111,110,116,0,83,116,97,114,116,68,97,116,97,0,0,0,0,0,0,0,47,115,102,110,116,115,0,0,40,72,101,120,41,0,0,0,168,71,4,0,192,71,4,0,208,71,4,0,232,71,4,0,240,71,4,0,0,72,4,0,16,72,4,0,24,72,4,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,67,73,68,32,84,121,112,101,32,49,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,233,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,105,110,102,111,0,139,0,0,0,140,0,0,0,0,0,0,0,0,0,0,0,67,73,68,0,0,0,0,0,31,0,0,0,141,0,0,0,63,0,0,0,0,0,0,0,116,121,112,101,52,50,0,0,1,5,0,0,48,0,0,0,40,72,4,0,0,0,1,0,0,0,2,0,0,0,0,0,234,0,0,0,52,1,0,0,142,0,0,0,48,2,0,0,48,0,0,0,164,0,0,0,33,0,0,0,53,1,0,0,235,0,0,0,54,1,0,0,236,0,0,0,55,1,0,0,17,0,0,0,26,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,144,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,112,115,97,117,120,0,0,0,82,101,103,117,108,97,114,0,46,110,111,116,100,101,102,0,70,111,110,116,68,105,114,101,99,116,111,114,121,0,0,0,107,110,111,119,110,0,0,0,176,75,4,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,75,4,0,3,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,75,4,0,3,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,75,4,0,3,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,75,4,0,3,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,75,4,0,3,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,75,4,0,3,0,0,0,1,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,76,4,0,3,0,0,0,2,0,0,0,0,0,0,0,26,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,76,4,0,3,0,0,0,2,0,0,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,76,4,0,2,0,0,0,2,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,0,64,76,4,0,1,0,0,0,6,0,0,0,0,0,0,0,232,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,76,4,0,1,0,0,0,2,0,0,0,0,0,0,0,44,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,76,4,0,1,0,0,0,2,0,0,0,0,0,0,0,45,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,76,4,0,1,0,0,0,3,0,0,0,0,0,0,0,92,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,76,4,0,5,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,76,4,0,5,0,0,0,10,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,76,4,0,5,0,0,0,10,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,76,4,0,5,0,0,0,10,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,192,76,4,0,5,0,0,0,10,0,0,0,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,101,114,115,105,111,110,0,78,111,116,105,99,101,0,0,70,117,108,108,78,97,109,101,0,0,0,0,0,0,0,0,70,97,109,105,108,121,78,97,109,101,0,0,0,0,0,0,87,101,105,103,104,116,0,0,73,116,97,108,105,99,65,110,103,108,101,0,0,0,0,0,105,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,85,110,100,101,114,108,105,110,101,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,84,104,105,99,107,110,101,115,115,0,0,0,0,0,0,70,83,84,121,112,101,0,0,70,111,110,116,78,97,109,101,0,0,0,0,0,0,0,0,80,97,105,110,116,84,121,112,101,0,0,0,0,0,0,0,70,111,110,116,84,121,112,101,0,0,0,0,0,0,0,0,83,116,114,111,107,101,87,105,100,116,104,0,0,0,0,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,70,111,110,116,77,97,116,114,105,120,0,0,0,0,0,0,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,67,104,97,114,83,116,114,105,110,103,115,0,0,0,0,0,115,102,110,116,115,0,0,0,83,116,97,110,100,97,114,100,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,69,120,112,101,114,116,69,110,99,111,100,105,110,103,0,0,73,83,79,76,97,116,105,110,49,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,37,33,80,83,45,84,114,117,101,84,121,112,101,70,111,110,116,0,0,0,0,0,0,0,72,77,4,0,88,77,4,0,96,77,4,0,120,77,4,0,128,77,4,0,144,77,4,0,160,77,4,0,184,77,4,0,0,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,33,0,0,0,145,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,237,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,105,110,102,111,0,146,0,0,0,147,0,0,0,238,0,0,0,148,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,84,121,112,101,32,52,50,0,116,114,117,101,116,121,112,101,0,0,0,0,0,0,0,0,119,105,110,102,111,110,116,115,0,0,0,0,0,0,0,0,1,2,0,0,40,0,0,0,208,77,4,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,149,0,0,0,152,0,0,0,44,0,0,0,160,0,0,0,34,0,0,0,56,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,26,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,0,0,151,0,0,0,82,101,103,117,108,97,114,0,66,111,108,100,32,73,116,97,108,105,99,0,0,0,0,0,66,111,108,100,0,0,0,0,73,116,97,108,105,99,0,0,24,0,0,0,152,0,0,0,0,0,0,0,153,0,0,0,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,148,0,14,2,0,0,18,4,4,0,24,60,8,0,14,2,68,0,14,2,70,0,14,2,72,0,14,2,74,0,14,2,76,0,14,2,78,0,14,2,80,0,8,1,82,0,8,1,83,0,8,1,84,0,14,2,86,0,8,1,88,0,14,2,90,0,14,2,92,0,8,1,94,0,14,2,96,0,14,2,98,0,8,1,100,0,8,1,101,0,8,1,102,0,8,1,103,0,14,2,104,0,18,4,108,0,18,4,112,0,18,4,116,0,18,4,120,0,8,1,124,0,18,4,128,0,14,2,132,0,14,2,134,0,14,2,136,0,18,2,138,0,24,16,140,0,0,0,0,0,4,0,64,0,14,2,0,0,25,58,0,0,18,2,2,0,0,0,0,0,0,0,0,0,4,0,40,0,14,2,0,0,25,34,0,0,14,2,2,0,14,2,4,0,0,0,0,0,4,0,248,0,18,4,0,0,14,2,4,0,14,2,6,0,25,12,0,0,14,2,8,0,25,2,0,0,14,2,10,0,25,110,0,0,18,4,12,0,18,4,16,0,25,104,0,0,0,0,0,0,0,0,0,0,4,0,40,0,24,8,0,0,25,4,0,0,18,4,8,0,18,4,12,0,18,4,16,0,25,16,0,0,0,0,0,0,4,0,16,0,18,4,0,0,18,4,4,0,14,2,8,0,14,2,10,0,14,2,12,0,14,2,14,0,0,0,0,0,4,0,8,0,18,4,0,0,18,4,4,0,0,0,0,0,4,0,16,0,18,4,0,0,18,4,4,0,18,4,8,0,18,4,12,0,0,0,0,0,24,80,4,0,48,80,4,0,208,77,4,0,64,80,4,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,87,105,110,100,111,119,115,32,70,78,84,0,0,0,0,0,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,0,0,0,64,0,0,0,32,0,0,0,127,0,0,0,160,0,0,0,255,0,0,0,0,1,0,0,127,1,0,0,128,1,0,0,79,2,0,0,80,2,0,0,175,2,0,0,176,2,0,0,255,2,0,0,0,3,0,0,111,3,0,0,112,3,0,0,255,3,0,0,0,4,0,0,255,4,0,0,0,5,0,0,47,5,0,0,0,29,0,0,127,29,0,0,128,29,0,0,191,29,0,0,192,29,0,0,255,29,0,0,0,30,0,0,255,30,0,0,0,31,0,0,255,31,0,0,0,32,0,0,111,32,0,0,112,32,0,0,159,32,0,0,160,32,0,0,207,32,0,0,80,33,0,0,143,33,0,0,96,36,0,0,255,36,0,0,96,44,0,0,127,44,0,0,224,45,0,0,255,45,0,0,64,166,0,0,159,166,0,0,32,167,0,0,255,167,0,0,0,251,0,0,6,251,0,0,0,212,1,0,255,215,1,0,0,0,0,0,0,0,0,0,1,0,0,0,104,80,4,0,64,3,0,0,157,0,0,0,88,0,0,0,0,0,0,0,158,0,0,0,65,0,0,0,128,46,0,0,255,46,0,0,0,47,0,0,223,47,0,0,0,48,0,0,63,48,0,0,64,48,0,0,159,48,0,0,160,48,0,0,255,48,0,0,0,49,0,0,47,49,0,0,48,49,0,0,143,49,0,0,160,49,0,0,191,49,0,0,192,49,0,0,239,49,0,0,240,49,0,0,255,49,0,0,0,50,0,0,255,50,0,0,0,51,0,0,255,51,0,0,0,52,0,0,191,77,0,0,192,77,0,0,255,77,0,0,0,78,0,0,255,159,0,0,0,249,0,0,255,250,0,0,48,254,0,0,79,254,0,0,0,255,0,0,239,255,0,0,0,0,2,0,223,166,2,0,0,248,2,0,31,250,2,0,0,0,0,0,0,0,0,0,2,0,0,0,96,81,4,0,64,3,0,0,159,0,0,0,89,0,0,0,0,0,0,0,160,0,0,0,66,0,0,0,0,9,0,0,255,13,0,0,0,0,0,0,0,0,0,0,3,0,0,0,40,82,4,0,64,3,0,0,161,0,0,0,90,0,0,0,0,0,0,0,162,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,97,117,116,111,102,105,116,116,101,114,0,0,0,0,0,0,4,0,0,0,204,0,0,0,104,82,4,0,0,0,1,0,0,0,2,0,88,82,4,0,239,0,0,0,57,1,0,0,0,0,0,0,0,0,0,0,72,80,4,0,64,81,4,0,8,82,4,0,56,82,4,0,0,0,0,0,0,0,0,0,99,105,110,117,110,109,114,97,66,79,68,65,49,116,97,108,0,0,0,0,0,0,0,0,84,72,69,90,79,67,81,83,0,0,0,0,0,72,69,90,76,79,67,85,83,0,0,0,0,0,102,105,106,107,100,98,104,0,0,0,0,0,0,120,122,114,111,101,115,99,0,0,0,0,0,0,120,122,114,111,101,115,99,0,0,0,0,0,0,112,113,103,106,121,0,0,0,0,0,0,0,0,0,0,24,0,0,0,163,0,0,0,58,1,0,0,164,0,0,0,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,100,102,0,0,0,0,0,1,2,0,0,40,0,0,0,72,83,4,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,166,0,0,0,168,0,0,0,44,0,0,0,160,0,0,0,36,0,0,0,59,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,26,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,0,0,0,168,0,0,0,83,80,65,67,73,78,71,0,70,65,77,73,76,89,95,78,65,77,69,0,0,0,0,0,65,86,69,82,65,71,69,95,87,73,68,84,72,0,0,0,80,79,73,78,84,95,83,73,90,69,0,0,0,0,0,0,80,73,88,69,76,95,83,73,90,69,0,0,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,88,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,89,0,0,0,0,67,72,65,82,83,69,84,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,49,48,54,52,54,0,0,0,56,56,53,57,0,0,0,0,49,0,0,0,0,0,0,0,83,76,65,78,84,0,0,0,79,98,108,105,113,117,101,0,73,116,97,108,105,99,0,0,87,69,73,71,72,84,95,78,65,77,69,0,0,0,0,0,66,111,108,100,0,0,0,0,83,69,84,87,73,68,84,72,95,78,65,77,69,0,0,0,65,68,68,95,83,84,89,76,69,95,78,65,77,69,0,0,82,101,103,117,108,97,114,0,67,79,77,77,69,78,84,0,83,84,65,82,84,70,79,78,84,0,0,0,0,0,0,0,168,84,4,0,1,0,0,0,1,0,0,0,0,0,0,0,208,83,4,0,2,0,0,0,1,0,0,0,0,0,0,0,208,91,4,0,2,0,0,0,1,0,0,0,0,0,0,0,232,91,4,0,2,0,0,0,1,0,0,0,0,0,0,0,0,92,4,0,2,0,0,0,1,0,0,0,0,0,0,0,16,92,4,0,1,0,0,0,1,0,0,0,0,0,0,0,56,84,4,0,1,0,0,0,1,0,0,0,0,0,0,0,32,84,4,0,1,0,0,0,1,0,0,0,0,0,0,0,192,84,4,0,1,0,0,0,1,0,0,0,0,0,0,0,40,92,4,0,1,0,0,0,1,0,0,0,0,0,0,0,136,91,4,0,3,0,0,0,1,0,0,0,0,0,0,0,56,92,4,0,3,0,0,0,1,0,0,0,0,0,0,0,72,92,4,0,1,0,0,0,1,0,0,0,0,0,0,0,96,92,4,0,2,0,0,0,1,0,0,0,0,0,0,0,112,92,4,0,1,0,0,0,1,0,0,0,0,0,0,0,192,83,4,0,1,0,0,0,1,0,0,0,0,0,0,0,128,92,4,0,2,0,0,0,1,0,0,0,0,0,0,0,48,90,4,0,1,0,0,0,1,0,0,0,0,0,0,0,144,92,4,0,1,0,0,0,1,0,0,0,0,0,0,0,80,90,4,0,2,0,0,0,1,0,0,0,0,0,0,0,96,90,4,0,2,0,0,0,1,0,0,0,0,0,0,0,168,92,4,0,1,0,0,0,1,0,0,0,0,0,0,0,176,92,4,0,1,0,0,0,1,0,0,0,0,0,0,0,192,92,4,0,2,0,0,0,1,0,0,0,0,0,0,0,208,92,4,0,2,0,0,0,1,0,0,0,0,0,0,0,224,92,4,0,2,0,0,0,1,0,0,0,0,0,0,0,240,92,4,0,2,0,0,0,1,0,0,0,0,0,0,0,0,93,4,0,1,0,0,0,1,0,0,0,0,0,0,0,240,83,4,0,2,0,0,0,1,0,0,0,0,0,0,0,224,83,4,0,2,0,0,0,1,0,0,0,0,0,0,0,8,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,24,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,40,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,64,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,88,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,112,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,128,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,144,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,160,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,184,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,200,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,216,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,232,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,248,93,4,0,2,0,0,0,1,0,0,0,0,0,0,0,8,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,24,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,40,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,56,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,80,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,104,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,128,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,152,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,168,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,184,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,208,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,232,94,4,0,2,0,0,0,1,0,0,0,0,0,0,0,0,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,24,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,48,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,64,95,4,0,3,0,0,0,1,0,0,0,0,0,0,0,88,95,4,0,3,0,0,0,1,0,0,0,0,0,0,0,104,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,0,84,4,0,3,0,0,0,1,0,0,0,0,0,0,0,16,84,4,0,3,0,0,0,1,0,0,0,0,0,0,0,152,84,4,0,1,0,0,0,1,0,0,0,0,0,0,0,104,84,4,0,1,0,0,0,1,0,0,0,0,0,0,0,120,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,184,83,4,0,1,0,0,0,1,0,0,0,0,0,0,0,136,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,160,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,184,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,200,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,216,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,232,95,4,0,2,0,0,0,1,0,0,0,0,0,0,0,0,96,4,0,2,0,0,0,1,0,0,0,0,0,0,0,16,96,4,0,2,0,0,0,1,0,0,0,0,0,0,0,32,96,4,0,2,0,0,0,1,0,0,0,0,0,0,0,56,96,4,0,2,0,0,0,1,0,0,0,0,0,0,0,80,96,4,0,3,0,0,0,1,0,0,0,0,0,0,0,128,84,4,0,1,0,0,0,1,0,0,0,0,0,0,0,88,96,4,0,2,0,0,0,1,0,0,0,0,0,0,0,104,96,4,0,2,0,0,0,1,0,0,0,0,0,0,0,128,96,4,0,2,0,0,0,1,0,0,0,0,0,0,0,83,84,65,82,84,80,82,79,80,69,82,84,73,69,83,0,32,43,0,0,0,0,0,0,70,79,78,84,66,79,85,78,68,73,78,71,66,79,88,0,70,79,78,84,0,0,0,0,83,73,90,69,0,0,0,0,67,72,65,82,83,0,0,0,37,104,100,0,0,0,0,0,70,79,78,84,95,65,83,67,69,78,84,0,0,0,0,0,70,79,78,84,95,68,69,83,67,69,78,84,0,0,0,0,69,78,68,70,79,78,84,0,69,78,68,67,72,65,82,0,83,84,65,82,84,67,72,65,82,0,0,0,0,0,0,0,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,192,224,240,248,252,254,83,87,73,68,84,72,0,0,68,87,73,68,84,72,0,0,66,66,88,0,0,0,0,0,66,73,84,77,65,80,0,0,0,0,0,0,0,0,255,3,126,0,0,0,126,0,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,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,69,70,65,85,76,84,95,67,72,65,82,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,78,68,80,82,79,80,69,82,84,73,69,83,0,0,0,95,88,70,82,69,69,56,54,95,71,76,89,80,72,95,82,65,78,71,69,83,0,0,0,65,86,71,95,67,65,80,73,84,65,76,95,87,73,68,84,72,0,0,0,0,0,0,0,65,86,71,95,76,79,87,69,82,67,65,83,69,95,87,73,68,84,72,0,0,0,0,0,67,65,80,95,72,69,73,71,72,84,0,0,0,0,0,0,67,72,65,82,83,69,84,95,67,79,76,76,69,67,84,73,79,78,83,0,0,0,0,0,67,79,80,89,82,73,71,72,84,0,0,0,0,0,0,0,68,69,83,84,73,78,65,84,73,79,78,0,0,0,0,0,68,69,86,73,67,69,95,70,79,78,84,95,78,65,77,69,0,0,0,0,0,0,0,0,69,78,68,95,83,80,65,67,69,0,0,0,0,0,0,0,70,65,67,69,95,78,65,77,69,0,0,0,0,0,0,0,70,73,71,85,82,69,95,87,73,68,84,72,0,0,0,0,70,79,78,84,78,65,77,69,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,70,79,85,78,68,82,89,0,70,85,76,76,95,78,65,77,69,0,0,0,0,0,0,0,73,84,65,76,73,67,95,65,78,71,76,69,0,0,0,0,77,65,88,95,83,80,65,67,69,0,0,0,0,0,0,0,77,73,78,95,83,80,65,67,69,0,0,0,0,0,0,0,78,79,82,77,95,83,80,65,67,69,0,0,0,0,0,0,78,79,84,73,67,69,0,0,81,85,65,68,95,87,73,68,84,72,0,0,0,0,0,0,82,65,87,95,65,83,67,69,78,84,0,0,0,0,0,0,82,65,87,95,65,86,69,82,65,71,69,95,87,73,68,84,72,0,0,0,0,0,0,0,82,65,87,95,65,86,71,95,67,65,80,73,84,65,76,95,87,73,68,84,72,0,0,0,82,65,87,95,65,86,71,95,76,79,87,69,82,67,65,83,69,95,87,73,68,84,72,0,82,65,87,95,67,65,80,95,72,69,73,71,72,84,0,0,82,65,87,95,68,69,83,67,69,78,84,0,0,0,0,0,82,65,87,95,69,78,68,95,83,80,65,67,69,0,0,0,82,65,87,95,70,73,71,85,82,69,95,87,73,68,84,72,0,0,0,0,0,0,0,0,82,65,87,95,77,65,88,95,83,80,65,67,69,0,0,0,82,65,87,95,77,73,78,95,83,80,65,67,69,0,0,0,82,65,87,95,78,79,82,77,95,83,80,65,67,69,0,0,82,65,87,95,80,73,88,69,76,95,83,73,90,69,0,0,82,65,87,95,80,79,73,78,84,95,83,73,90,69,0,0,82,65,87,95,80,73,88,69,76,83,73,90,69,0,0,0,82,65,87,95,80,79,73,78,84,83,73,90,69,0,0,0,82,65,87,95,81,85,65,68,95,87,73,68,84,72,0,0,82,65,87,95,83,77,65,76,76,95,67,65,80,95,83,73,90,69,0,0,0,0,0,0,82,65,87,95,83,84,82,73,75,69,79,85,84,95,65,83,67,69,78,84,0,0,0,0,82,65,87,95,83,84,82,73,75,69,79,85,84,95,68,69,83,67,69,78,84,0,0,0,82,65,87,95,83,85,66,83,67,82,73,80,84,95,83,73,90,69,0,0,0,0,0,0,82,65,87,95,83,85,66,83,67,82,73,80,84,95,88,0,82,65,87,95,83,85,66,83,67,82,73,80,84,95,89,0,82,65,87,95,83,85,80,69,82,83,67,82,73,80,84,95,83,73,90,69,0,0,0,0,82,65,87,95,83,85,80,69,82,83,67,82,73,80,84,95,88,0,0,0,0,0,0,0,82,65,87,95,83,85,80,69,82,83,67,82,73,80,84,95,89,0,0,0,0,0,0,0,82,65,87,95,85,78,68,69,82,76,73,78,69,95,80,79,83,73,84,73,79,78,0,0,82,65,87,95,85,78,68,69,82,76,73,78,69,95,84,72,73,67,75,78,69,83,83,0,82,65,87,95,88,95,72,69,73,71,72,84,0,0,0,0,82,69,76,65,84,73,86,69,95,83,69,84,87,73,68,84,72,0,0,0,0,0,0,0,82,69,76,65,84,73,86,69,95,87,69,73,71,72,84,0,82,69,83,79,76,85,84,73,79,78,0,0,0,0,0,0,83,77,65,76,76,95,67,65,80,95,83,73,90,69,0,0,83,84,82,73,75,69,79,85,84,95,65,83,67,69,78,84,0,0,0,0,0,0,0,0,83,84,82,73,75,69,79,85,84,95,68,69,83,67,69,78,84,0,0,0,0,0,0,0,83,85,66,83,67,82,73,80,84,95,83,73,90,69,0,0,83,85,66,83,67,82,73,80,84,95,88,0,0,0,0,0,83,85,66,83,67,82,73,80,84,95,89,0,0,0,0,0,83,85,80,69,82,83,67,82,73,80,84,95,83,73,90,69,0,0,0,0,0,0,0,0,83,85,80,69,82,83,67,82,73,80,84,95,88,0,0,0,83,85,80,69,82,83,67,82,73,80,84,95,89,0,0,0,85,78,68,69,82,76,73,78,69,95,80,79,83,73,84,73,79,78,0,0,0,0,0,0,85,78,68,69,82,76,73,78,69,95,84,72,73,67,75,78,69,83,83,0,0,0,0,0,87,69,73,71,72,84,0,0,88,95,72,69,73,71,72,84,0,0,0,0,0,0,0,0,95,77,85,76,69,95,66,65,83,69,76,73,78,69,95,79,70,70,83,69,84], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+276600); -/* memory initializer */ allocate([95,77,85,76,69,95,82,69,76,65,84,73,86,69,95,67,79,77,80,79,83,69,0,0,72,83,4,0,176,96,4,0,184,96,4,0,208,96,4,0,0,0,0,0,0,0,0,0,68,0,0,0,69,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,66,68,70,0,0,0,0,0,99,102,102,0,0,0,0,0,1,5,0,0,44,0,0,0,216,96,4,0,0,0,1,0,0,0,2,0,0,0,0,0,240,0,0,0,60,1,0,0,169,0,0,0,56,3,0,0,48,0,0,0,172,0,0,0,37,0,0,0,61,1,0,0,241,0,0,0,62,1,0,0,242,0,0,0,63,1,0,0,17,0,0,0,26,0,0,0,36,0,0,0,37,0,0,0,0,0,0,0,38,0,0,0,170,0,0,0,171,0,0,0,20,0,0,0,172,0,0,0,64,1,0,0,173,0,0,0,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,175,0,0,0,65,1,0,0,176,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,102,110,116,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,112,115,104,105,110,116,101,114,0,0,0,0,0,0,0,0,82,101,103,117,108,97,114,0,66,111,108,100,0,0,0,0,66,108,97,99,107,0,0,0,4,0,4,0,8,1,16,0,8,1,17,0,8,1,18,0,8,1,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,0,0,111,0,112,0,113,0,114,0,0,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,0,0,123,0,0,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,0,0,132,0,133,0,0,0,134,0,135,0,136,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,0,139,0,0,0,0,0,0,0,0,0,140,0,141,0,142,0,143,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,145,0,0,0,0,0,146,0,147,0,148,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,229,0,230,0,0,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,0,0,253,0,254,0,255,0,0,1,1,1,0,0,0,0,0,0,2,1,0,0,0,0,3,1,4,1,5,1,6,1,0,0,0,0,7,1,8,1,9,1,0,0,10,1,109,0,110,0,11,1,12,1,13,1,0,0,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,49,1,50,1,0,0,0,0,51,1,52,1,53,1,54,1,55,1,0,0,56,1,0,0,0,0,56,1,0,0,0,0,58,1,59,1,0,0,0,0,60,1,61,1,62,1,0,0,0,0,0,0,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,0,0,0,0,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,123,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,132,0,133,0,134,0,135,0,136,0,137,0,138,0,139,0,140,0,141,0,142,0,143,0,144,0,145,0,146,0,147,0,148,0,149,0,150,0,151,0,152,0,153,0,154,0,155,0,156,0,157,0,158,0,159,0,160,0,161,0,162,0,163,0,164,0,165,0,166,0,167,0,168,0,169,0,170,0,171,0,172,0,173,0,174,0,175,0,176,0,177,0,178,0,179,0,180,0,181,0,182,0,183,0,184,0,185,0,186,0,187,0,188,0,189,0,190,0,191,0,192,0,193,0,194,0,195,0,196,0,197,0,198,0,199,0,200,0,201,0,202,0,203,0,204,0,205,0,206,0,207,0,208,0,209,0,210,0,211,0,212,0,213,0,214,0,215,0,216,0,217,0,218,0,219,0,220,0,221,0,222,0,223,0,224,0,225,0,226,0,227,0,228,0,0,0,0,0,0,0,0,0,1,0,229,0,230,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,253,0,254,0,255,0,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,109,0,110,0,11,1,12,1,13,1,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,1,56,1,57,1,58,1,59,1,60,1,61,1,62,1,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,0,0,0,0,0,0,1,0,231,0,232,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,253,0,254,0,255,0,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,109,0,110,0,11,1,12,1,13,1,14,1,16,1,44,1,45,1,46,1,49,1,58,1,59,1,158,0,155,0,163,0,64,1,65,1,66,1,67,1,68,1,69,1,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,0,0,4,0,0,0,0,16,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,1,16,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,17,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,2,16,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,16,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,16,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,1,17,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,17,0,0,28,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,17,0,0,32,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,17,0,0,36,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,17,0,0,40,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,6,17,0,0,44,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,17,0,0,0,0,0,0,0,0,0,0,243,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,13,16,0,0,76,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,5,16,0,0,0,0,0,0,0,0,0,0,244,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,17,0,0,96,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,15,16,0,0,100,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,16,0,0,104,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,17,16,0,0,108,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,18,16,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,20,17,0,0,120,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,21,17,0,0,124,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,30,17,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,31,17,0,0,140,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,32,17,0,0,144,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,33,17,0,0,148,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,34,17,0,0,152,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,35,17,0,0,156,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,36,17,0,0,160,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,37,17,0,0,164,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,38,17,0,0,168,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,32,0,0,4,0,0,0,4,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,6,0,0,0,7,32,0,0,60,0,0,0,4,0,0,0,0,0,0,0,10,0,0,0,1,0,0,0,6,0,0,0,8,32,0,0,100,0,0,0,4,0,0,0,0,0,0,0,14,0,0,0,2,0,0,0,6,0,0,0,9,32,0,0,156,0,0,0,4,0,0,0,0,0,0,0,10,0,0,0,3,0,0,0,3,0,0,0,9,33,0,0,196,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,33,0,0,200,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,33,0,0,204,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,32,0,0,208,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,32,0,0,212,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,12,33,0,0,220,0,0,0,4,0,0,0,0,0,0,0,13,0,0,0,216,0,0,0,6,0,0,0,13,33,0,0,16,1,0,0,4,0,0,0,0,0,0,0,13,0,0,0,217,0,0,0,5,0,0,0,14,33,0,0,68,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,15,33,0,0,72,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,33,0,0,76,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,17,33,0,0,80,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,18,33,0,0,84,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,19,33,0,0,88,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,19,32,0,0,92,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,20,32,0,0,96,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,21,32,0,0,100,1,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,202,154,59,0,194,193,193,32,32,32,32,32,32,32,32,32,32,13,7,9,11,128,130,130,130,130,128,128,0,1,2,2,2,1,0,2,1,1,1,2,1,2,1,2,1,4,3,2,2,1,2,4,1,1,0,2,0,0,0,5,4,2,0,0,0,0,0,24,112,4,0,48,112,4,0,56,112,4,0,72,112,4,0,88,112,4,0,112,112,4,0,120,112,4,0,136,112,4,0,144,112,4,0,160,112,4,0,168,112,4,0,176,112,4,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,67,70,70,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,105,110,102,111,0,178,0,0,0,0,0,0,0,247,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,248,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,38,0,0,0,179,0,0,0,116,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,67,73,68,0,0,0,0,0,39,0,0,0,181,0,0,0,70,0,0,0,0,0,0,0,49,46,50,46,53,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,88,113,4,0,200,112,4,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,0,0,0,0,0,0,0,128,113,4,0,224,112,4,0,216,112,4,0,0,0,0,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,0,0,0,0,0,0,128,113,4,0,24,113,4,0,8,113,4,0,0,0,0,0,0,0,0,0,64,113,4,0,66,1,0,0,67,1,0,0,68,1,0,0,69,1,0,0,71,0,0,0,2,0,0,0,2,0,0,0,31,0,0,0,0,0,0,0,200,113,4,0,66,1,0,0,70,1,0,0,68,1,0,0,69,1,0,0,71,0,0,0,3,0,0,0,3,0,0,0,32,0,0,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,0,0,0,128,113,4,0,160,113,4,0,64,113,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,116,4,0,71,1,0,0,72,1,0,0,249,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,128,113,4,0,248,115,4,0,0,0,0,0,0,0,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,110,97,110,0,0,0,0,0,95,112,137,0,255,9,47,15,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+286840); - - - - -var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); - -assert(tempDoublePtr % 8 == 0); - -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - -} - -function copyTempDouble(ptr) { - - HEAP8[tempDoublePtr] = HEAP8[ptr]; - - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; - - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; - - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; - - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; - - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; - -} - - - - - Module["_tolower"] = _tolower; - Module["_strncasecmp"] = _strncasecmp; - - function _FcPatternGetInteger() { - Module['printErr']('missing function: FcPatternGetInteger'); abort(-1); - } - - var _DtoILow=true; - - var _UItoD=true; - - function _rand() { - return Math.floor(Math.random()*0x80000000); - } - - - - - 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}; - - var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; - - - var ___errno_state=0;function ___setErrNo(value) { - // For convenient setting and returning of errno. - HEAP32[((___errno_state)>>2)]=value; - return value; - } - - var PATH={splitPath:function (filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:function (parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - return parts; - },normalize:function (path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:function (path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:function (path) { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },extname:function (path) { - return PATH.splitPath(path)[3]; - },join:function () { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join('/')); - },join2:function (l, r) { - return PATH.normalize(l + '/' + r); - },resolve:function () { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:function (from, to) { - from = PATH.resolve(from).substr(1); - to = PATH.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - - var TTY={ttys:[],init:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function () { - // https://github.com/kripken/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function (dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function (stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - stream.tty = tty; - stream.seekable = false; - },close:function (stream) { - // flush any pending line data - if (stream.tty.output.length) { - stream.tty.ops.put_char(stream.tty, 10); - } - },read:function (stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function (stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(ERRNO_CODES.ENXIO); - } - for (var i = 0; i < length; i++) { - try { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function (tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - result = process['stdin']['read'](); - if (!result) { - if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { - return null; // EOF - } - return undefined; // no data available - } - } else if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function (tty, val) { - if (val === null || val === 10) { - Module['print'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }},default_tty1_ops:{put_char:function (tty, val) { - if (val === null || val === 10) { - Module['printErr'](tty.output.join('')); - tty.output = []; - } else { - tty.output.push(TTY.utf8.processCChar(val)); - } - }}}; - - var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { - return MEMFS.createNode(null, '/', 16384 | 0777, 0); - },createNode:function (parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - }, - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.contents = []; - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - } - return node; - },ensureFlexible:function (node) { - if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { - var contents = node.contents; - node.contents = Array.prototype.slice.call(contents); - node.contentMode = MEMFS.CONTENT_FLEXIBLE; - } - },node_ops:{getattr:function (node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.contents.length; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function (node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.ensureFlexible(node); - var contents = node.contents; - if (attr.size < contents.length) contents.length = attr.size; - else while (attr.size > contents.length) contents.push(0); - } - },lookup:function (parent, name) { - throw FS.genericErrors[ERRNO_CODES.ENOENT]; - },mknod:function (parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function (old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - old_node.parent = new_dir; - },unlink:function (parent, name) { - delete parent.contents[name]; - },rmdir:function (parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - delete parent.contents[name]; - },readdir:function (node) { - var entries = ['.', '..'] - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function (parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 0777 | 40960, 0); - node.link = oldpath; - return node; - },readlink:function (node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return node.link; - }},stream_ops:{read:function (stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else - { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } - return size; - },write:function (stream, buffer, offset, length, position, canOwn) { - var node = stream.node; - node.timestamp = Date.now(); - var contents = node.contents; - if (length && contents.length === 0 && position === 0 && buffer.subarray) { - // just replace it with the new data - if (canOwn && offset === 0) { - node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. - node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; - } else { - node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); - node.contentMode = MEMFS.CONTENT_FIXED; - } - return length; - } - MEMFS.ensureFlexible(node); - var contents = node.contents; - while (contents.length < position) contents.push(0); - for (var i = 0; i < length; i++) { - contents[position + i] = buffer[offset + i]; - } - return length; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - position += stream.node.contents.length; - } - } - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - stream.ungotten = []; - stream.position = position; - return position; - },allocate:function (stream, offset, length) { - MEMFS.ensureFlexible(stream.node); - var contents = stream.node.contents; - var limit = offset + length; - while (limit > contents.length) contents.push(0); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if ( !(flags & 2) && - (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { - // We can't emulate MAP_SHARED when the file is not backed by the buffer - // we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = _malloc(length); - if (!ptr) { - throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); - } - buffer.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - }}}; - - var IDBFS={dbs:{},indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { - return MEMFS.mount.apply(null, arguments); - },syncfs:function (mount, populate, callback) { - IDBFS.getLocalSet(mount, function(err, local) { - if (err) return callback(err); - - IDBFS.getRemoteSet(mount, function(err, remote) { - if (err) return callback(err); - - var src = populate ? remote : local; - var dst = populate ? local : remote; - - IDBFS.reconcile(src, dst, callback); - }); - }); - },reconcile:function (src, dst, callback) { - var total = 0; - - var create = {}; - for (var key in src.files) { - if (!src.files.hasOwnProperty(key)) continue; - var e = src.files[key]; - var e2 = dst.files[key]; - if (!e2 || e.timestamp > e2.timestamp) { - create[key] = e; - total++; - } - } - - var remove = {}; - for (var key in dst.files) { - if (!dst.files.hasOwnProperty(key)) continue; - var e = dst.files[key]; - var e2 = src.files[key]; - if (!e2) { - remove[key] = e; - total++; - } - } - - if (!total) { - // early out - return callback(null); - } - - var completed = 0; - function done(err) { - if (err) return callback(err); - if (++completed >= total) { - return callback(null); - } - }; - - // create a single transaction to handle and IDB reads / writes we'll need to do - var db = src.type === 'remote' ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); - transaction.onerror = function transaction_onerror() { callback(this.error); }; - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - - for (var path in create) { - if (!create.hasOwnProperty(path)) continue; - var entry = create[path]; - - if (dst.type === 'local') { - // save file to local - try { - if (FS.isDir(entry.mode)) { - FS.mkdir(path, entry.mode); - } else if (FS.isFile(entry.mode)) { - var stream = FS.open(path, 'w+', 0666); - FS.write(stream, entry.contents, 0, entry.contents.length, 0, true /* canOwn */); - FS.close(stream); - } - done(null); - } catch (e) { - return done(e); - } - } else { - // save file to IDB - var req = store.put(entry, path); - req.onsuccess = function req_onsuccess() { done(null); }; - req.onerror = function req_onerror() { done(this.error); }; - } - } - - for (var path in remove) { - if (!remove.hasOwnProperty(path)) continue; - var entry = remove[path]; - - if (dst.type === 'local') { - // delete file from local - try { - if (FS.isDir(entry.mode)) { - // TODO recursive delete? - FS.rmdir(path); - } else if (FS.isFile(entry.mode)) { - FS.unlink(path); - } - done(null); - } catch (e) { - return done(e); - } - } else { - // delete file from IDB - var req = store.delete(path); - req.onsuccess = function req_onsuccess() { done(null); }; - req.onerror = function req_onerror() { done(this.error); }; - } - } - },getLocalSet:function (mount, callback) { - var files = {}; - - function isRealDir(p) { - return p !== '.' && p !== '..'; - }; - function toAbsolute(root) { - return function(p) { - return PATH.join2(root, p); - } - }; - - var check = FS.readdir(mount.mountpoint) - .filter(isRealDir) - .map(toAbsolute(mount.mountpoint)); - - while (check.length) { - var path = check.pop(); - var stat, node; - - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - - if (FS.isDir(stat.mode)) { - check.push.apply(check, FS.readdir(path) - .filter(isRealDir) - .map(toAbsolute(path))); - - files[path] = { mode: stat.mode, timestamp: stat.mtime }; - } else if (FS.isFile(stat.mode)) { - files[path] = { contents: node.contents, mode: stat.mode, timestamp: stat.mtime }; - } else { - return callback(new Error('node type not supported')); - } - } - - return callback(null, { type: 'local', files: files }); - },getDB:function (name, callback) { - // look it up in the cache - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return onerror(e); - } - req.onupgradeneeded = function req_onupgradeneeded() { - db = req.result; - db.createObjectStore(IDBFS.DB_STORE_NAME); - }; - req.onsuccess = function req_onsuccess() { - db = req.result; - // add to the cache - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function req_onerror() { - callback(this.error); - }; - },getRemoteSet:function (mount, callback) { - var files = {}; - - IDBFS.getDB(mount.mountpoint, function(err, db) { - if (err) return callback(err); - - var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); - transaction.onerror = function transaction_onerror() { callback(this.error); }; - - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - store.openCursor().onsuccess = function store_openCursor_onsuccess(event) { - var cursor = event.target.result; - if (!cursor) { - return callback(null, { type: 'remote', db: db, files: files }); - } - - files[cursor.key] = cursor.value; - cursor.continue(); - }; - }); - }}; - - var NODEFS={isWindows:false,staticInit:function () { - NODEFS.isWindows = !!process.platform.match(/^win/); - },mount:function (mount) { - assert(ENVIRONMENT_IS_NODE); - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); - },createNode:function (parent, name, mode, dev) { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node = FS.createNode(parent, name, mode); - node.node_ops = NODEFS.node_ops; - node.stream_ops = NODEFS.stream_ops; - return node; - },getMode:function (path) { - var stat; - try { - stat = fs.lstatSync(path); - if (NODEFS.isWindows) { - // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so - // propagate write bits to execute bits. - stat.mode = stat.mode | ((stat.mode & 146) >> 1); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return stat.mode; - },realPath:function (node) { - var parts = []; - while (node.parent !== node) { - parts.push(node.name); - node = node.parent; - } - parts.push(node.mount.opts.root); - parts.reverse(); - return PATH.join.apply(null, parts); - },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { - if (flags in NODEFS.flagsToPermissionStringMap) { - return NODEFS.flagsToPermissionStringMap[flags]; - } else { - return flags; - } - },node_ops:{getattr:function (node) { - var path = NODEFS.realPath(node); - var stat; - try { - stat = fs.lstatSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. - // See http://support.microsoft.com/kb/140365 - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096; - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks - }; - },setattr:function (node, attr) { - var path = NODEFS.realPath(node); - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode); - // update the common node structure mode as well - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp); - fs.utimesSync(path, date, date); - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },lookup:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - var mode = NODEFS.getMode(path); - return NODEFS.createNode(parent, name, mode); - },mknod:function (parent, name, mode, dev) { - var node = NODEFS.createNode(parent, name, mode, dev); - // create the backing node for this in the fs root as well - var path = NODEFS.realPath(node); - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode); - } else { - fs.writeFileSync(path, '', { mode: node.mode }); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return node; - },rename:function (oldNode, newDir, newName) { - var oldPath = NODEFS.realPath(oldNode); - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); - try { - fs.renameSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },unlink:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.unlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },rmdir:function (parent, name) { - var path = PATH.join2(NODEFS.realPath(parent), name); - try { - fs.rmdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readdir:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readdirSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },symlink:function (parent, newName, oldPath) { - var newPath = PATH.join2(NODEFS.realPath(parent), newName); - try { - fs.symlinkSync(oldPath, newPath); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },readlink:function (node) { - var path = NODEFS.realPath(node); - try { - return fs.readlinkSync(path); - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - }},stream_ops:{open:function (stream) { - var path = NODEFS.realPath(stream.node); - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },close:function (stream) { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd); - } - } catch (e) { - if (!e.code) throw e; - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - },read:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(length); - var res; - try { - res = fs.readSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - if (res > 0) { - for (var i = 0; i < res; i++) { - buffer[offset + i] = nbuffer[i]; - } - } - return res; - },write:function (stream, buffer, offset, length, position) { - // FIXME this is terrible. - var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); - var res; - try { - res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - return res; - },llseek:function (stream, offset, whence) { - var position = offset; - if (whence === 1) { // SEEK_CUR. - position += stream.position; - } else if (whence === 2) { // SEEK_END. - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd); - position += stat.size; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES[e.code]); - } - } - } - - if (position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - - stream.position = position; - return position; - }}}; - - var _stdin=allocate(1, "i32*", ALLOC_STATIC); - - var _stdout=allocate(1, "i32*", ALLOC_STATIC); - - var _stderr=allocate(1, "i32*", ALLOC_STATIC); - - function _fflush(stream) { - // int fflush(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html - // we don't currently perform any user-space buffering of data - }var FS={root:null,mounts:[],devices:[null],streams:[null],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); - return ___setErrNo(e.errno); - },lookupPath:function (path, opts) { - path = PATH.resolve(FS.cwd(), path); - opts = opts || { recurse_count: 0 }; - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - - // split the path - var parts = PATH.normalizeArray(path.split('/').filter(function(p) { - return !!p; - }), false); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - current = current.mount.root; - } - - // follow symlinks - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(ERRNO_CODES.ELOOP); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:function (node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:function (parentid, name) { - var hash = 0; - - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:function (node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:function (parent, name) { - var err = FS.mayLookup(parent); - if (err) { - throw new FS.ErrnoError(err); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:function (parent, name, mode, rdev) { - if (!FS.FSNode) { - FS.FSNode = function(parent, name, mode, rdev) { - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - this.parent = null; - this.mount = null; - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - FS.hashAddNode(this); - }; - - // compatibility - var readMode = 292 | 73; - var writeMode = 146; - - FS.FSNode.prototype = {}; - - // NOTE we must use Object.defineProperties instead of individual calls to - // Object.defineProperty in order to make closure compiler happy - Object.defineProperties(FS.FSNode.prototype, { - read: { - get: function() { return (this.mode & readMode) === readMode; }, - set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } - }, - write: { - get: function() { return (this.mode & writeMode) === writeMode; }, - set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } - }, - isFolder: { - get: function() { return FS.isDir(this.mode); }, - }, - isDevice: { - get: function() { return FS.isChrdev(this.mode); }, - }, - }); - } - return new FS.FSNode(parent, name, mode, rdev); - },destroyNode:function (node) { - FS.hashRemoveNode(node); - },isRoot:function (node) { - return node === node.parent; - },isMountpoint:function (node) { - return node.mounted; - },isFile:function (mode) { - return (mode & 61440) === 32768; - },isDir:function (mode) { - return (mode & 61440) === 16384; - },isLink:function (mode) { - return (mode & 61440) === 40960; - },isChrdev:function (mode) { - return (mode & 61440) === 8192; - },isBlkdev:function (mode) { - return (mode & 61440) === 24576; - },isFIFO:function (mode) { - return (mode & 61440) === 4096; - },isSocket:function (mode) { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { - var flags = FS.flagModes[str]; - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:function (flag) { - var accmode = flag & 2097155; - var perms = ['r', 'w', 'rw'][accmode]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:function (node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { - return ERRNO_CODES.EACCES; - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { - return ERRNO_CODES.EACCES; - } - return 0; - },mayLookup:function (dir) { - return FS.nodePermissions(dir, 'x'); - },mayCreate:function (dir, name) { - try { - var node = FS.lookupNode(dir, name); - return ERRNO_CODES.EEXIST; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:function (dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var err = FS.nodePermissions(dir, 'wx'); - if (err) { - return err; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return ERRNO_CODES.ENOTDIR; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return ERRNO_CODES.EBUSY; - } - } else { - if (FS.isDir(node.mode)) { - return ERRNO_CODES.EISDIR; - } - } - return 0; - },mayOpen:function (node, flags) { - if (!node) { - return ERRNO_CODES.ENOENT; - } - if (FS.isLink(node.mode)) { - return ERRNO_CODES.ELOOP; - } else if (FS.isDir(node.mode)) { - if ((flags & 2097155) !== 0 || // opening for write - (flags & 512)) { - return ERRNO_CODES.EISDIR; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { - fd_start = fd_start || 1; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(ERRNO_CODES.EMFILE); - },getStream:function (fd) { - return FS.streams[fd]; - },createStream:function (stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function(){}; - FS.FSStream.prototype = {}; - // compatibility - Object.defineProperties(FS.FSStream.prototype, { - object: { - get: function() { return this.node; }, - set: function(val) { this.node = val; } - }, - isRead: { - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - get: function() { return (this.flags & 1024); } - } - }); - } - if (0) { - // reuse the object - stream.__proto__ = FS.FSStream.prototype; - } else { - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - } - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:function (fd) { - FS.streams[fd] = null; - },chrdev_stream_ops:{open:function (stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:function () { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - }},major:function (dev) { - return ((dev) >> 8); - },minor:function (dev) { - return ((dev) & 0xff); - },makedev:function (ma, mi) { - return ((ma) << 8 | (mi)); - },registerDevice:function (dev, ops) { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:function (dev) { - return FS.devices[dev]; - },syncfs:function (populate, callback) { - if (typeof(populate) === 'function') { - callback = populate; - populate = false; - } - - var completed = 0; - var total = FS.mounts.length; - function done(err) { - if (err) { - return callback(err); - } - if (++completed >= total) { - callback(null); - } - }; - - // sync all mounts - for (var i = 0; i < FS.mounts.length; i++) { - var mount = FS.mounts[i]; - if (!mount.type.syncfs) { - done(null); - continue; - } - mount.type.syncfs(mount, populate, done); - } - },mount:function (type, opts, mountpoint) { - var lookup; - if (mountpoint) { - lookup = FS.lookupPath(mountpoint, { follow: false }); - mountpoint = lookup.path; // use the absolute path - } - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - root: null - }; - // create a root node for the fs - var root = type.mount(mount); - root.mount = mount; - mount.root = root; - // assign the mount info to the mountpoint's node - if (lookup) { - lookup.node.mount = mount; - lookup.node.mounted = true; - // compatibility update FS.root if we mount to / - if (mountpoint === '/') { - FS.root = mount.root; - } - } - // add to our cached list of mounts - FS.mounts.push(mount); - return root; - },lookup:function (parent, name) { - return parent.node_ops.lookup(parent, name); - },mknod:function (path, mode, dev) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var err = FS.mayCreate(parent, name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:function (path, mode) { - mode = mode !== undefined ? mode : 0666; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:function (path, mode) { - mode = mode !== undefined ? mode : 0777; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdev:function (path, mode, dev) { - if (typeof(dev) === 'undefined') { - dev = mode; - mode = 0666; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:function (oldpath, newpath) { - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - var newname = PATH.basename(newpath); - var err = FS.mayCreate(parent, newname); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:function (old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - try { - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(ERRNO_CODES.EXDEV); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - // new path should not be an ancestor of the old path - relative = PATH.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var err = FS.mayDelete(old_dir, old_name, isdir); - if (err) { - throw new FS.ErrnoError(err); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - err = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (err) { - throw new FS.ErrnoError(err); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - err = FS.nodePermissions(old_dir, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, true); - if (err) { - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - return node.node_ops.readdir(node); - },unlink:function (path) { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var err = FS.mayDelete(parent, name, false); - if (err) { - // POSIX says unlink should set EPERM, not EISDIR - if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; - throw new FS.ErrnoError(err); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EBUSY); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:function (path) { - var lookup = FS.lookupPath(path, { follow: false }); - var link = lookup.node; - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - return link.node_ops.readlink(link); - },stat:function (path, dontFollow) { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - return node.node_ops.getattr(node); - },lstat:function (path) { - return FS.stat(path, true); - },chmod:function (path, mode, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:function (path, mode) { - FS.chmod(path, mode, true); - },fchmod:function (fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chmod(stream.node, mode); - },chown:function (path, uid, gid, dontFollow) { - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:function (path, uid, gid) { - FS.chown(path, uid, gid, true); - },fchown:function (fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - FS.chown(stream.node, uid, gid); - },truncate:function (path, len) { - if (len < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var node; - if (typeof path === 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(ERRNO_CODES.EPERM); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var err = FS.nodePermissions(node, 'w'); - if (err) { - throw new FS.ErrnoError(err); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:function (fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - FS.truncate(stream.node, len); - },utime:function (path, atime, mtime) { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:function (path, flags, mode, fd_start, fd_end) { - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === 'undefined' ? 0666 : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(ERRNO_CODES.EEXIST); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - } - } - if (!node) { - throw new FS.ErrnoError(ERRNO_CODES.ENOENT); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // check permissions - var err = FS.mayOpen(node, flags); - if (err) { - throw new FS.ErrnoError(err); - } - // do truncation if necessary - if ((flags & 512)) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }, fd_start, fd_end); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - Module['printErr']('read file: ' + path); - } - } - return stream; - },close:function (stream) { - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - },llseek:function (stream, offset, whence) { - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - return stream.stream_ops.llseek(stream, offset, whence); - },read:function (stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:function (stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.EISDIR); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var seeking = true; - if (typeof position === 'undefined') { - position = stream.position; - seeking = false; - } else if (!stream.seekable) { - throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); - } - if (stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:function (stream, offset, length) { - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EBADF); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:function (stream, buffer, offset, length, position, prot, flags) { - // TODO if PROT is PROT_WRITE, make sure we have write access - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(ERRNO_CODES.EACCES); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(ERRNO_CODES.ENODEV); - } - return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); - },ioctl:function (stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:function (path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'r'; - opts.encoding = opts.encoding || 'binary'; - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = ''; - var utf8 = new Runtime.UTF8Processor(); - for (var i = 0; i < length; i++) { - ret += utf8.processCChar(buf[i]); - } - } else if (opts.encoding === 'binary') { - ret = buf; - } else { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - FS.close(stream); - return ret; - },writeFile:function (path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 'w'; - opts.encoding = opts.encoding || 'utf8'; - var stream = FS.open(path, opts.flags, opts.mode); - if (opts.encoding === 'utf8') { - var utf8 = new Runtime.UTF8Processor(); - var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0); - } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0); - } else { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - FS.close(stream); - },cwd:function () { - return FS.currentPath; - },chdir:function (path) { - var lookup = FS.lookupPath(path, { follow: true }); - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); - } - var err = FS.nodePermissions(lookup.node, 'x'); - if (err) { - throw new FS.ErrnoError(err); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:function () { - FS.mkdir('/tmp'); - },createDefaultDevices:function () { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: function() { return 0; }, - write: function() { return 0; } - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using Module['printErr'] - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createStandardStreams:function () { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 'r'); - HEAP32[((_stdin)>>2)]=stdin.fd; - assert(stdin.fd === 1, 'invalid handle for stdin (' + stdin.fd + ')'); - - var stdout = FS.open('/dev/stdout', 'w'); - HEAP32[((_stdout)>>2)]=stdout.fd; - assert(stdout.fd === 2, 'invalid handle for stdout (' + stdout.fd + ')'); - - var stderr = FS.open('/dev/stderr', 'w'); - HEAP32[((_stderr)>>2)]=stderr.fd; - assert(stderr.fd === 3, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:function () { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - this.message = ERRNO_MESSAGES[errno]; - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [ERRNO_CODES.ENOENT].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:function () { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.root = FS.createNode(null, '/', 16384 | 0777, 0); - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - },init:function (input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:function () { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:function (canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },joinPath:function (parts, forceRelative) { - var path = PATH.join.apply(null, parts); - if (forceRelative && path[0] == '/') path = path.substr(1); - return path; - },absolutePath:function (relative, base) { - return PATH.resolve(base, relative); - },standardizePath:function (path) { - return PATH.normalize(path); - },findObject:function (path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - ___setErrNo(ret.error); - return null; - } - },analyzePath:function (path, dontResolveLastLink) { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createFolder:function (parent, name, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.mkdir(path, mode); - },createPath:function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:function (parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 'w'); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:function (parent, name, input, output) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos /* ignored */) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },createLink:function (parent, name, target, canRead, canWrite) { - var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); - return FS.symlink(target, path); - },forceLoadFile:function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - var success = true; - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (Module['read']) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(Module['read'](obj.url), true); - } catch (e) { - success = false; - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - if (!success) ___setErrNo(ERRNO_CODES.EIO); - return success; - },createLazyFile:function (parent, name, url, canRead, canWrite) { - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = Math.floor(idx / this.chunkSize); - return this.getter(chunkNum)[chunkOffset]; - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || '', true); - } - }); - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - - var lazyArray = new LazyUint8Array(); - Object.defineProperty(lazyArray, "length", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }); - Object.defineProperty(lazyArray, "chunkSize", { - get: function() { - if(!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - return fn.apply(null, arguments); - }; - }); - // use a custom read function - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - if (!FS.forceLoadFile(node)) { - throw new FS.ErrnoError(ERRNO_CODES.EIO); - } - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { - Browser.init(); - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; - function processData(byteArray) { - function finish(byteArray) { - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency('cp ' + fullname); - } - var handled = false; - Module['preloadPlugins'].forEach(function(plugin) { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency('cp ' + fullname); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency('cp ' + fullname); - if (typeof url == 'string') { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - },indexedDB:function () { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:function () { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - console.log('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:function (paths, onload, onerror) { - onload = onload || function(){}; - onerror = onerror || function(){}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }};function _close(fildes) { - // int close(int fildes); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - FS.close(stream); - return 0; - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _fsync(fildes) { - // int fsync(int fildes); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fsync.html - var stream = FS.getStream(fildes); - if (stream) { - // We write directly to the file system, so there's nothing to do here. - return 0; - } else { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - }function _fclose(stream) { - // int fclose(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fclose.html - _fsync(stream); - return _close(stream); - } - - function _pthread_mutex_lock() {} - - function _FcPatternBuild() { - Module['printErr']('missing function: FcPatternBuild'); abort(-1); - } - - var _UItoF=true; - - - var _emscripten_check_longjmp=true; - - - - function _isspace(chr) { - return (chr == 32) || (chr >= 9 && chr <= 13); - }function __parseInt(str, endptr, base, min, max, bits, unsign) { - // Skip space. - while (_isspace(HEAP8[(str)])) str++; - - // Check for a plus/minus sign. - var multiplier = 1; - if (HEAP8[(str)] == 45) { - multiplier = -1; - str++; - } else if (HEAP8[(str)] == 43) { - str++; - } - - // Find base. - var finalBase = base; - if (!finalBase) { - if (HEAP8[(str)] == 48) { - if (HEAP8[((str+1)|0)] == 120 || - HEAP8[((str+1)|0)] == 88) { - finalBase = 16; - str += 2; - } else { - finalBase = 8; - str++; - } - } - } else if (finalBase==16) { - if (HEAP8[(str)] == 48) { - if (HEAP8[((str+1)|0)] == 120 || - HEAP8[((str+1)|0)] == 88) { - str += 2; - } - } - } - if (!finalBase) finalBase = 10; - - // Get digits. - var chr; - var ret = 0; - while ((chr = HEAP8[(str)]) != 0) { - var digit = parseInt(String.fromCharCode(chr), finalBase); - if (isNaN(digit)) { - break; - } else { - ret = ret * finalBase + digit; - str++; - } - } - - // Apply sign. - ret *= multiplier; - - // Set end pointer. - if (endptr) { - HEAP32[((endptr)>>2)]=str; - } - - // Unsign if needed. - if (unsign) { - if (Math.abs(ret) > max) { - ret = max; - ___setErrNo(ERRNO_CODES.ERANGE); - } else { - ret = unSign(ret, bits); - } - } - - // Validate range. - if (ret > max || ret < min) { - ret = ret > max ? max : min; - ___setErrNo(ERRNO_CODES.ERANGE); - } - - if (bits == 64) { - return ((asm["setTempRet0"]((tempDouble=ret,(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)),ret>>>0)|0); - } - - return ret; - }function _strtol(str, endptr, base) { - return __parseInt(str, endptr, base, -2147483648, 2147483647, 32); // LONG_MIN, LONG_MAX. - } - - - - - - var _mkport=undefined;var SOCKFS={mount:function (mount) { - return FS.createNode(null, '/', 16384 | 0777, 0); - },createSocket:function (family, type, protocol) { - var streaming = type == 1; - if (protocol) { - assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: FS.modeStringToFlags('r+'), - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function (fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function (stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function (stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function (stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function (stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function () { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function (sock, addr, port) { - var ws; - - if (typeof addr === 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - var url = 'ws://' + addr + ':' + port; - // the node ws library API is slightly different than the browser's - var opts = ENVIRONMENT_IS_NODE ? {headers: {'websocket-protocol': ['binary']}} : ['binary']; - // If node we use the ws library. - var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; - ws = new WebSocket(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); - } - } - - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport !== 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function (sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function (sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function (sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function (sock, peer) { - var first = true; - - var handleOpen = function () { - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer - data = new Uint8Array(data); // make a typed array view on the array buffer - - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, flags) { - if (!flags.binary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('error', function() { - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - } - },poll:function (sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function (sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)]=bytes; - return 0; - default: - return ERRNO_CODES.EINVAL; - } - },close:function (sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function (sock, addr, port) { - if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound - } - sock.saddr = addr; - sock.sport = port || _mkport(); - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; - } - } - },connect:function (sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EALREADY); - } else { - throw new FS.ErrnoError(ERRNO_CODES.EISCONN); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); - },listen:function (sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); - } - if (sock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - } - }); - sock.server.on('closed', function() { - sock.server = null; - }); - sock.server.on('error', function() { - // don't throw - }); - },accept:function (listensock) { - if (!listensock.server) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function (sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function (sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - var data; - if (buffer instanceof Array || buffer instanceof ArrayBuffer) { - data = buffer.slice(offset, offset + length); - } else { // ArrayBufferView - data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); - } - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); - } - },recvmsg:function (sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); - } - else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - else { - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } else { - throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); - } - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}};function _send(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _write(fd, buf, len); - } - - function _pwrite(fildes, buf, nbyte, offset) { - // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _write(fildes, buf, nbyte) { - // ssize_t write(int fildes, const void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.write(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _fputc(c, stream) { - // int fputc(int c, FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html - var chr = unSign(c & 0xFF); - HEAP8[((_fputc.ret)|0)]=chr; - var ret = _write(stream, _fputc.ret, 1); - if (ret == -1) { - var streamObj = FS.getStream(stream); - if (streamObj) streamObj.error = true; - return -1; - } else { - return chr; - } - } - - function _fwrite(ptr, size, nitems, stream) { - // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html - var bytesToWrite = nitems * size; - if (bytesToWrite == 0) return 0; - var bytesWritten = _write(stream, ptr, bytesToWrite); - if (bytesWritten == -1) { - var streamObj = FS.getStream(stream); - if (streamObj) streamObj.error = true; - return 0; - } else { - return Math.floor(bytesWritten / size); - } - } - - function _FcPatternAddInteger() { - Module['printErr']('missing function: FcPatternAddInteger'); abort(-1); - } - - function _pthread_mutex_init() {} - - - function _putchar(c) { - // int putchar(int c); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/putchar.html - return _fputc(c, HEAP32[((_stdout)>>2)]); - } - Module["_saveSetjmp"] = _saveSetjmp; - - - - Module["_strlen"] = _strlen;function _fputs(s, stream) { - // int fputs(const char *restrict s, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html - return _write(stream, s, _strlen(s)); - } - - var Browser={mainLoop:{scheduler:null,shouldPause:false,paused:false,queue:[],pause:function () { - Browser.mainLoop.shouldPause = true; - },resume:function () { - if (Browser.mainLoop.paused) { - Browser.mainLoop.paused = false; - Browser.mainLoop.scheduler(); - } - Browser.mainLoop.shouldPause = false; - },updateStatus:function () { - if (Module['setStatus']) { - var message = Module['statusMessage'] || 'Please wait...'; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); - } else { - Module['setStatus'](message); - } - } else { - Module['setStatus'](''); - } - } - }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { - if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers - - if (Browser.initted || ENVIRONMENT_IS_WORKER) return; - Browser.initted = true; - - try { - new Blob(); - Browser.hasBlobConstructor = true; - } catch(e) { - Browser.hasBlobConstructor = false; - console.log("warning: no blob constructor, cannot create blobs with mimetypes"); - } - Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); - Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; - if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { - console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); - Module.noImageDecoding = true; - } - - // Support for plugins that can process preloaded files. You can add more of these to - // your app by creating and appending to Module.preloadPlugins. - // - // Each plugin is asked if it can handle a file based on the file's name. If it can, - // it is given the file's raw data. When it is done, it calls a callback with the file's - // (possibly modified) data. For example, a plugin might decompress a file, or it - // might create some side data structure for use later (like an Image element, etc.). - - var imagePlugin = {}; - imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = null; - if (Browser.hasBlobConstructor) { - try { - b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - if (b.size !== byteArray.length) { // Safari bug #118630 - // Safari's Blob can only take an ArrayBuffer - b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); - } - } catch(e) { - Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); - } - } - if (!b) { - var bb = new Browser.BlobBuilder(); - bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range - b = bb.getBlob(); - } - var url = Browser.URLObject.createObjectURL(b); - var img = new Image(); - img.onload = function img_onload() { - assert(img.complete, 'Image ' + name + ' could not be decoded'); - var canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - Module["preloadedImages"][name] = canvas; - Browser.URLObject.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = function img_onerror(event) { - console.log('Image ' + url + ' could not be decoded'); - if (onerror) onerror(); - }; - img.src = url; - }; - Module['preloadPlugins'].push(imagePlugin); - - var audioPlugin = {}; - audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; - }; - audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - Module["preloadedAudios"][name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); - } - if (Browser.hasBlobConstructor) { - try { - var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); - } catch(e) { - return fail(); - } - var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! - var audio = new Audio(); - audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 - audio.onerror = function audio_onerror(event) { - if (done) return; - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); - function encode64(data) { - var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var PAD = '='; - var ret = ''; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = (leftchar << 8) | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = (leftchar >> (leftbits-6)) & 0x3f; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar&3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar&0xf) << 2]; - ret += PAD; - } - return ret; - } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); - finish(audio); // we don't wait for confirmation this worked - but it's worth trying - }; - audio.src = url; - // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror - Browser.safeSetTimeout(function() { - finish(audio); // try to use it even though it is not necessarily ready to play - }, 10000); - } else { - return fail(); - } - }; - Module['preloadPlugins'].push(audioPlugin); - - // Canvas event setup - - var canvas = Module['canvas']; - canvas.requestPointerLock = canvas['requestPointerLock'] || - canvas['mozRequestPointerLock'] || - canvas['webkitRequestPointerLock']; - canvas.exitPointerLock = document['exitPointerLock'] || - document['mozExitPointerLock'] || - document['webkitExitPointerLock'] || - function(){}; // no-op if function does not exist - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - - function pointerLockChange() { - Browser.pointerLock = document['pointerLockElement'] === canvas || - document['mozPointerLockElement'] === canvas || - document['webkitPointerLockElement'] === canvas; - } - - document.addEventListener('pointerlockchange', pointerLockChange, false); - document.addEventListener('mozpointerlockchange', pointerLockChange, false); - document.addEventListener('webkitpointerlockchange', pointerLockChange, false); - - if (Module['elementPointerLock']) { - canvas.addEventListener("click", function(ev) { - if (!Browser.pointerLock && canvas.requestPointerLock) { - canvas.requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { - var ctx; - try { - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false - }; - - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - - - var errorInfo = '?'; - function onContextCreationError(event) { - errorInfo = event.statusMessage || errorInfo; - } - canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); - try { - ['experimental-webgl', 'webgl'].some(function(webglId) { - return ctx = canvas.getContext(webglId, contextAttributes); - }); - } finally { - canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); - } - } else { - ctx = canvas.getContext('2d'); - } - if (!ctx) throw ':('; - } catch (e) { - Module.print('Could not create canvas: ' + [errorInfo, e]); - return null; - } - if (useWebGL) { - // Set the background of the WebGL canvas to black - canvas.style.backgroundColor = "black"; - - // Warn on context loss - canvas.addEventListener('webglcontextlost', function(event) { - alert('WebGL context lost. You will need to reload the page.'); - }, false); - } - if (setInModule) { - GLctx = Module.ctx = ctx; - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); - Browser.init(); - } - return ctx; - },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; - - var canvas = Module['canvas']; - function fullScreenChange() { - Browser.isFullScreen = false; - if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || document['mozFullscreenElement'] || - document['fullScreenElement'] || document['fullscreenElement']) === canvas) { - canvas.cancelFullScreen = document['cancelFullScreen'] || - document['mozCancelFullScreen'] || - document['webkitCancelFullScreen']; - canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullScreen = true; - if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); - } else if (Browser.resizeCanvas){ - Browser.setWindowedCanvasSize(); - } - if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); - } - - if (!Browser.fullScreenHandlersInstalled) { - Browser.fullScreenHandlersInstalled = true; - document.addEventListener('fullscreenchange', fullScreenChange, false); - document.addEventListener('mozfullscreenchange', fullScreenChange, false); - document.addEventListener('webkitfullscreenchange', fullScreenChange, false); - } - - canvas.requestFullScreen = canvas['requestFullScreen'] || - canvas['mozRequestFullScreen'] || - (canvas['webkitRequestFullScreen'] ? function() { canvas['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); - canvas.requestFullScreen(); - },requestAnimationFrame:function requestAnimationFrame(func) { - if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) - setTimeout(func, 1000/60); - } else { - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = window['requestAnimationFrame'] || - window['mozRequestAnimationFrame'] || - window['webkitRequestAnimationFrame'] || - window['msRequestAnimationFrame'] || - window['oRequestAnimationFrame'] || - window['setTimeout']; - } - window.requestAnimationFrame(func); - } - },safeCallback:function (func) { - return function() { - if (!ABORT) return func.apply(null, arguments); - }; - },safeRequestAnimationFrame:function (func) { - return Browser.requestAnimationFrame(function() { - if (!ABORT) func(); - }); - },safeSetTimeout:function (func, timeout) { - return setTimeout(function() { - if (!ABORT) func(); - }, timeout); - },safeSetInterval:function (func, timeout) { - return setInterval(function() { - if (!ABORT) func(); - }, timeout); - },getMimetype:function (name) { - return { - 'jpg': 'image/jpeg', - 'jpeg': 'image/jpeg', - 'png': 'image/png', - 'bmp': 'image/bmp', - 'ogg': 'audio/ogg', - 'wav': 'audio/wav', - 'mp3': 'audio/mpeg' - }[name.substr(name.lastIndexOf('.')+1)]; - },getUserMedia:function (func) { - if(!window.getUserMedia) { - window.getUserMedia = navigator['getUserMedia'] || - navigator['mozGetUserMedia']; - } - window.getUserMedia(func); - },getMovementX:function (event) { - return event['movementX'] || - event['mozMovementX'] || - event['webkitMovementX'] || - 0; - },getMovementY:function (event) { - return event['movementY'] || - event['mozMovementY'] || - event['webkitMovementY'] || - 0; - },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup - if (Browser.pointerLock) { - // When the pointer is locked, calculate the coordinates - // based on the movement of the mouse. - // Workaround for Firefox bug 764498 - if (event.type != 'mousemove' && - ('mozMovementX' in event)) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - - // check if SDL is available - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - // just add the mouse delta to the current absolut mouse position - // FIXME: ideally this should be clamped against the canvas size and zero - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - // Otherwise, calculate the movement based on the changes - // in the coordinates. - var rect = Module["canvas"].getBoundingClientRect(); - var x, y; - - // Neither .scrollX or .pageXOffset are defined in a spec, but - // we prefer .scrollX because it is currently in a spec draft. - // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) - var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); - var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); - if (event.type == 'touchstart' || - event.type == 'touchend' || - event.type == 'touchmove') { - var t = event.touches.item(0); - if (t) { - x = t.pageX - (scrollX + rect.left); - y = t.pageY - (scrollY + rect.top); - } else { - return; - } - } else { - x = event.pageX - (scrollX + rect.left); - y = event.pageY - (scrollY + rect.top); - } - - // the canvas might be CSS-scaled compared to its backbuffer; - // SDL-using content will want mouse coordinates in terms - // of backbuffer units. - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - x = x * (cw / rect.width); - y = y * (ch / rect.height); - - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - },xhrLoad:function (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)) { // file URLs can return 0 - onload(xhr.response); - } else { - onerror(); - } - }; - xhr.onerror = onerror; - xhr.send(null); - },asyncLoad:function (url, onload, onerror, noRunDep) { - Browser.xhrLoad(url, function(arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (!noRunDep) removeRunDependency('al ' + url); - }, function(event) { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (!noRunDep) addRunDependency('al ' + url); - },resizeListeners:[],updateResizeListeners:function () { - var canvas = Module['canvas']; - Browser.resizeListeners.forEach(function(listener) { - listener(canvas.width, canvas.height); - }); - },setCanvasSize:function (width, height, noUpdates) { - var canvas = Module['canvas']; - canvas.width = width; - canvas.height = height; - if (!noUpdates) Browser.updateResizeListeners(); - },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { - var canvas = Module['canvas']; - this.windowedWidth = canvas.width; - this.windowedHeight = canvas.height; - canvas.width = screen.width; - canvas.height = screen.height; - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags | 0x00800000; // set SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - },setWindowedCanvasSize:function () { - var canvas = Module['canvas']; - canvas.width = this.windowedWidth; - canvas.height = this.windowedHeight; - // check if SDL is available - if (typeof SDL != "undefined") { - var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; - flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag - HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags - } - Browser.updateResizeListeners(); - }}; - - - - Module["_bitshift64Ashr"] = _bitshift64Ashr; - - - function _recv(fd, buf, len, flags) { - var sock = SOCKFS.getSocket(fd); - if (!sock) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - // TODO honor flags - return _read(fd, buf, len); - } - - function _pread(fildes, buf, nbyte, offset) { - // ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - var slab = HEAP8; - return FS.read(stream, slab, buf, nbyte, offset); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _read(fildes, buf, nbyte) { - // ssize_t read(int fildes, void *buf, size_t nbyte); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - - - try { - var slab = HEAP8; - return FS.read(stream, slab, buf, nbyte); - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - function _FcFontSetDestroy() { - Module['printErr']('missing function: FcFontSetDestroy'); abort(-1); - } - - var _ceil=Math_ceil; - - function _FcDefaultSubstitute() { - Module['printErr']('missing function: FcDefaultSubstitute'); abort(-1); - } - - function _getpwnam() { throw 'getpwnam: TODO' } - - - Module["_memcpy"] = _memcpy; - - function _strstr(ptr1, ptr2) { - var check = 0, start; - do { - if (!check) { - start = ptr1; - check = ptr2; - } - var curr1 = HEAP8[((ptr1++)|0)]; - var curr2 = HEAP8[((check++)|0)]; - if (curr2 == 0) return start; - if (curr2 != curr1) { - // rewind to one character after start, to find ez in eeez - ptr1 = start + 1; - check = 0; - } - } while (curr1); - return 0; - } - - - Module["_memmove"] = _memmove; - - function _inflateInit2_() { - Module['printErr']('dead function: inflateInit2_'); abort(-1); - } - - var _emscripten_preinvoke=true; - - - function _open(path, oflag, varargs) { - // int open(const char *path, int oflag, ...); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html - var mode = HEAP32[((varargs)>>2)]; - path = Pointer_stringify(path); - try { - var stream = FS.open(path, oflag, mode); - return stream.fd; - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _opendir(dirname) { - // DIR *opendir(const char *dirname); - // http://pubs.opengroup.org/onlinepubs/007908799/xsh/opendir.html - // NOTE: Calculating absolute path redundantly since we need to associate it - // with the opened stream. - var path = Pointer_stringify(dirname); - if (!path) { - ___setErrNo(ERRNO_CODES.ENOENT); - return 0; - } - var node; - try { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } catch (e) { - FS.handleFSError(e); - return 0; - } - if (!FS.isDir(node.mode)) { - ___setErrNo(ERRNO_CODES.ENOTDIR); - return 0; - } - var err = _open(dirname, 0, allocate([0, 0, 0, 0], 'i32', ALLOC_STACK)); - // open returns 0 on failure, not -1 - return err === -1 ? 0 : err; - } - - function _fmod(x, y) { - return x % y; - } - - - function _strncmp(px, py, n) { - var i = 0; - while (i < n) { - var x = HEAPU8[(((px)+(i))|0)]; - var y = HEAPU8[(((py)+(i))|0)]; - if (x == y && x == 0) return 0; - if (x == 0) return -1; - if (y == 0) return 1; - if (x == y) { - i ++; - continue; - } else { - return x > y ? 1 : -1; - } - } - return 0; - }function _strcmp(px, py) { - return _strncmp(px, py, TOTAL_MEMORY); - } - - function _memchr(ptr, chr, num) { - chr = unSign(chr); - for (var i = 0; i < num; i++) { - if (HEAP8[(ptr)] == chr) return ptr; - ptr++; - } - return 0; - } - - - - - function __reallyNegative(x) { - return x < 0 || (x === 0 && (1/x) === -Infinity); - }function __formatString(format, varargs) { - var textIndex = format; - var argIndex = 0; - function getNextArg(type) { - // NOTE: Explicitly ignoring type safety. Otherwise this fails: - // int x = 4; printf("%c\n", (char)x); - var ret; - if (type === 'double') { - ret = (HEAP32[((tempDoublePtr)>>2)]=HEAP32[(((varargs)+(argIndex))>>2)],HEAP32[(((tempDoublePtr)+(4))>>2)]=HEAP32[(((varargs)+((argIndex)+(4)))>>2)],(+(HEAPF64[(tempDoublePtr)>>3]))); - } else if (type == 'i64') { - ret = [HEAP32[(((varargs)+(argIndex))>>2)], - HEAP32[(((varargs)+(argIndex+4))>>2)]]; - - } else { - type = 'i32'; // varargs are always i32, i64, or double - ret = HEAP32[(((varargs)+(argIndex))>>2)]; - } - argIndex += Runtime.getNativeFieldSize(type); - return ret; - } - - var ret = []; - var curr, next, currArg; - while(1) { - var startTextIndex = textIndex; - curr = HEAP8[(textIndex)]; - if (curr === 0) break; - next = HEAP8[((textIndex+1)|0)]; - if (curr == 37) { - // Handle flags. - var flagAlwaysSigned = false; - var flagLeftAlign = false; - var flagAlternative = false; - var flagZeroPad = false; - var flagPadSign = false; - flagsLoop: while (1) { - switch (next) { - case 43: - flagAlwaysSigned = true; - break; - case 45: - flagLeftAlign = true; - break; - case 35: - flagAlternative = true; - break; - case 48: - if (flagZeroPad) { - break flagsLoop; - } else { - flagZeroPad = true; - break; - } - case 32: - flagPadSign = true; - break; - default: - break flagsLoop; - } - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - - // Handle width. - var width = 0; - if (next == 42) { - width = getNextArg('i32'); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } else { - while (next >= 48 && next <= 57) { - width = width * 10 + (next - 48); - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - } - } - - // Handle precision. - var precisionSet = false, precision = -1; - if (next == 46) { - precision = 0; - precisionSet = true; - textIndex++; - next = HEAP8[((textIndex+1)|0)]; - if (next == 42) { - precision = getNextArg('i32'); - textIndex++; - } else { - while(1) { - var precisionChr = HEAP8[((textIndex+1)|0)]; - if (precisionChr < 48 || - precisionChr > 57) break; - precision = precision * 10 + (precisionChr - 48); - textIndex++; - } - } - next = HEAP8[((textIndex+1)|0)]; - } - if (precision === -1) { - precision = 6; // Standard default. - precisionSet = false; - } - - // Handle integer sizes. WARNING: These assume a 32-bit architecture! - var argSize; - switch (String.fromCharCode(next)) { - case 'h': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 104) { - textIndex++; - argSize = 1; // char (actually i32 in varargs) - } else { - argSize = 2; // short (actually i32 in varargs) - } - break; - case 'l': - var nextNext = HEAP8[((textIndex+2)|0)]; - if (nextNext == 108) { - textIndex++; - argSize = 8; // long long - } else { - argSize = 4; // long - } - break; - case 'L': // long long - case 'q': // int64_t - case 'j': // intmax_t - argSize = 8; - break; - case 'z': // size_t - case 't': // ptrdiff_t - case 'I': // signed ptrdiff_t or unsigned size_t - argSize = 4; - break; - default: - argSize = null; - } - if (argSize) textIndex++; - next = HEAP8[((textIndex+1)|0)]; - - // Handle type specifier. - switch (String.fromCharCode(next)) { - case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { - // Integer. - var signed = next == 100 || next == 105; - argSize = argSize || 4; - var currArg = getNextArg('i' + (argSize * 8)); - var origArg = currArg; - var argText; - // Flatten i64-1 [low, high] into a (slightly rounded) double - if (argSize == 8) { - currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); - } - // Truncate to requested size. - if (argSize <= 4) { - var limit = Math.pow(256, argSize) - 1; - currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); - } - // Format the number. - var currAbsArg = Math.abs(currArg); - var prefix = ''; - if (next == 100 || next == 105) { - if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], null); else - argText = reSign(currArg, 8 * argSize, 1).toString(10); - } else if (next == 117) { - if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], true); else - argText = unSign(currArg, 8 * argSize, 1).toString(10); - currArg = Math.abs(currArg); - } else if (next == 111) { - argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); - } else if (next == 120 || next == 88) { - prefix = (flagAlternative && currArg != 0) ? '0x' : ''; - if (argSize == 8 && i64Math) { - if (origArg[1]) { - argText = (origArg[1]>>>0).toString(16); - var lower = (origArg[0]>>>0).toString(16); - while (lower.length < 8) lower = '0' + lower; - argText += lower; - } else { - argText = (origArg[0]>>>0).toString(16); - } - } else - if (currArg < 0) { - // Represent negative numbers in hex as 2's complement. - currArg = -currArg; - argText = (currAbsArg - 1).toString(16); - var buffer = []; - for (var i = 0; i < argText.length; i++) { - buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); - } - argText = buffer.join(''); - while (argText.length < argSize * 2) argText = 'f' + argText; - } else { - argText = currAbsArg.toString(16); - } - if (next == 88) { - prefix = prefix.toUpperCase(); - argText = argText.toUpperCase(); - } - } else if (next == 112) { - if (currAbsArg === 0) { - argText = '(nil)'; - } else { - prefix = '0x'; - argText = currAbsArg.toString(16); - } - } - if (precisionSet) { - while (argText.length < precision) { - argText = '0' + argText; - } - } - - // Add sign if needed - if (currArg >= 0) { - if (flagAlwaysSigned) { - prefix = '+' + prefix; - } else if (flagPadSign) { - prefix = ' ' + prefix; - } - } - - // Move sign to prefix so we zero-pad after the sign - if (argText.charAt(0) == '-') { - prefix = '-' + prefix; - argText = argText.substr(1); - } - - // Add padding. - while (prefix.length + argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad) { - argText = '0' + argText; - } else { - prefix = ' ' + prefix; - } - } - } - - // Insert the result into the buffer. - argText = prefix + argText; - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { - // Float. - var currArg = getNextArg('double'); - var argText; - if (isNaN(currArg)) { - argText = 'nan'; - flagZeroPad = false; - } else if (!isFinite(currArg)) { - argText = (currArg < 0 ? '-' : '') + 'inf'; - flagZeroPad = false; - } else { - var isGeneral = false; - var effectivePrecision = Math.min(precision, 20); - - // Convert g/G to f/F or e/E, as per: - // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - if (next == 103 || next == 71) { - isGeneral = true; - precision = precision || 1; - var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); - if (precision > exponent && exponent >= -4) { - next = ((next == 103) ? 'f' : 'F').charCodeAt(0); - precision -= exponent + 1; - } else { - next = ((next == 103) ? 'e' : 'E').charCodeAt(0); - precision--; - } - effectivePrecision = Math.min(precision, 20); - } - - if (next == 101 || next == 69) { - argText = currArg.toExponential(effectivePrecision); - // Make sure the exponent has at least 2 digits. - if (/[eE][-+]\d$/.test(argText)) { - argText = argText.slice(0, -1) + '0' + argText.slice(-1); - } - } else if (next == 102 || next == 70) { - argText = currArg.toFixed(effectivePrecision); - if (currArg === 0 && __reallyNegative(currArg)) { - argText = '-' + argText; - } - } - - var parts = argText.split('e'); - if (isGeneral && !flagAlternative) { - // Discard trailing zeros and periods. - while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && - (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { - parts[0] = parts[0].slice(0, -1); - } - } else { - // Make sure we have a period in alternative mode. - if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; - // Zero pad until required precision. - while (precision > effectivePrecision++) parts[0] += '0'; - } - argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); - - // Capitalize 'E' if needed. - if (next == 69) argText = argText.toUpperCase(); - - // Add sign. - if (currArg >= 0) { - if (flagAlwaysSigned) { - argText = '+' + argText; - } else if (flagPadSign) { - argText = ' ' + argText; - } - } - } - - // Add padding. - while (argText.length < width) { - if (flagLeftAlign) { - argText += ' '; - } else { - if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { - argText = argText[0] + '0' + argText.slice(1); - } else { - argText = (flagZeroPad ? '0' : ' ') + argText; - } - } - } - - // Adjust case. - if (next < 97) argText = argText.toUpperCase(); - - // Insert the result into the buffer. - argText.split('').forEach(function(chr) { - ret.push(chr.charCodeAt(0)); - }); - break; - } - case 's': { - // String. - var arg = getNextArg('i8*'); - var argLength = arg ? _strlen(arg) : '(null)'.length; - if (precisionSet) argLength = Math.min(argLength, precision); - if (!flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - if (arg) { - for (var i = 0; i < argLength; i++) { - ret.push(HEAPU8[((arg++)|0)]); - } - } else { - ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); - } - if (flagLeftAlign) { - while (argLength < width--) { - ret.push(32); - } - } - break; - } - case 'c': { - // Character. - if (flagLeftAlign) ret.push(getNextArg('i8')); - while (--width > 0) { - ret.push(32); - } - if (!flagLeftAlign) ret.push(getNextArg('i8')); - break; - } - case 'n': { - // Write the length written so far to the next parameter. - var ptr = getNextArg('i32*'); - HEAP32[((ptr)>>2)]=ret.length; - break; - } - case '%': { - // Literal percent sign. - ret.push(curr); - break; - } - default: { - // Unknown specifiers remain untouched. - for (var i = startTextIndex; i < textIndex + 2; i++) { - ret.push(HEAP8[(i)]); - } - } - } - textIndex += 2; - // TODO: Support a/A (hex float) and m (last error) specifiers. - // TODO: Support %1${specifier} for arg selection. - } else { - ret.push(curr); - textIndex += 1; - } - } - return ret; - }function _snprintf(s, n, format, varargs) { - // int snprintf(char *restrict s, size_t n, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var limit = (n === undefined) ? result.length - : Math.min(result.length, Math.max(n - 1, 0)); - if (s < 0) { - s = -s; - var buf = _malloc(limit+1); - HEAP32[((s)>>2)]=buf; - s = buf; - } - for (var i = 0; i < limit; i++) { - HEAP8[(((s)+(i))|0)]=result[i]; - } - if (limit < n || (n === undefined)) HEAP8[(((s)+(i))|0)]=0; - return result.length; - } - - - function _fread(ptr, size, nitems, stream) { - // size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fread.html - var bytesToRead = nitems * size; - if (bytesToRead == 0) { - return 0; - } - var bytesRead = 0; - var streamObj = FS.getStream(stream); - if (!streamObj) { - ___setErrNo(ERRNO_CODES.EBADF); - return 0; - } - while (streamObj.ungotten.length && bytesToRead > 0) { - HEAP8[((ptr++)|0)]=streamObj.ungotten.pop(); - bytesToRead--; - bytesRead++; - } - var err = _read(stream, ptr, bytesToRead); - if (err == -1) { - if (streamObj) streamObj.error = true; - return 0; - } - bytesRead += err; - if (bytesRead < bytesToRead) streamObj.eof = true; - return Math.floor(bytesRead / size); - }function _fgetc(stream) { - // int fgetc(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fgetc.html - var streamObj = FS.getStream(stream); - if (!streamObj) return -1; - if (streamObj.eof || streamObj.error) return -1; - var ret = _fread(_fgetc.ret, 1, 1, stream); - if (ret == 0) { - return -1; - } else if (ret == -1) { - streamObj.error = true; - return -1; - } else { - return HEAPU8[((_fgetc.ret)|0)]; - } - } - - - Module["_memset"] = _memset; - - var _BDtoILow=true; - - - Module["_strcat"] = _strcat; - - - function _readdir_r(dirp, entry, result) { - // int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); - // http://pubs.opengroup.org/onlinepubs/007908799/xsh/readdir_r.html - var stream = FS.getStream(dirp); - if (!stream) { - return ___setErrNo(ERRNO_CODES.EBADF); - } - var entries; - try { - entries = FS.readdir(stream.path); - } catch (e) { - return FS.handleFSError(e); - } - if (stream.position < 0 || stream.position >= entries.length) { - HEAP32[((result)>>2)]=0; - return 0; - } - var id; - var type; - var name = entries[stream.position]; - var offset = stream.position + 1; - if (!name.indexOf('.')) { - id = 1; - type = 4; - } else { - var child = FS.lookupNode(stream.node, name); - id = child.id; - type = FS.isChrdev(child.mode) ? 2 : // DT_CHR, character device. - FS.isDir(child.mode) ? 4 : // DT_DIR, directory. - FS.isLink(child.mode) ? 10 : // DT_LNK, symbolic link. - 8; // DT_REG, regular file. - } - HEAP32[((entry)>>2)]=id; - HEAP32[(((entry)+(4))>>2)]=offset; - HEAP32[(((entry)+(8))>>2)]=name.length + 1; - for (var i = 0; i < name.length; i++) { - HEAP8[(((entry + 11)+(i))|0)]=name.charCodeAt(i); - } - HEAP8[(((entry + 11)+(i))|0)]=0; - HEAP8[(((entry)+(10))|0)]=type; - HEAP32[((result)>>2)]=entry; - stream.position++; - return 0; - }function _readdir(dirp) { - // struct dirent *readdir(DIR *dirp); - // http://pubs.opengroup.org/onlinepubs/007908799/xsh/readdir_r.html - var stream = FS.getStream(dirp); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return 0; - } - // TODO Is it supposed to be safe to execute multiple readdirs? - if (!_readdir.entry) _readdir.entry = _malloc(268); - if (!_readdir.result) _readdir.result = _malloc(4); - var err = _readdir_r(dirp, _readdir.entry, _readdir.result); - if (err) { - ___setErrNo(err); - return 0; - } - return HEAP32[((_readdir.result)>>2)]; - } - - - function _strerror_r(errnum, strerrbuf, buflen) { - if (errnum in ERRNO_MESSAGES) { - if (ERRNO_MESSAGES[errnum].length > buflen - 1) { - return ___setErrNo(ERRNO_CODES.ERANGE); - } else { - var msg = ERRNO_MESSAGES[errnum]; - writeAsciiToMemory(msg, strerrbuf); - return 0; - } - } else { - return ___setErrNo(ERRNO_CODES.EINVAL); - } - }function _strerror(errnum) { - if (!_strerror.buffer) _strerror.buffer = _malloc(256); - _strerror_r(errnum, _strerror.buffer, 256); - return _strerror.buffer; - } - - - Module["_bitshift64Shl"] = _bitshift64Shl; - - var _llvm_memcpy_p0i8_p0i8_i32=_memcpy; - - 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 _getgid() { - // gid_t getgid(void); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/getgid.html - // We have just one process/group/user, all with ID 0. - return 0; - } - - function _strchr(ptr, chr) { - ptr--; - do { - ptr++; - var val = HEAP8[(ptr)]; - if (val == chr) return ptr; - } while (val); - return 0; - } - - var _asin=Math_asin; - - function _puts(s) { - // int puts(const char *s); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/puts.html - // NOTE: puts() always writes an extra newline. - var stdout = HEAP32[((_stdout)>>2)]; - var ret = _fputs(s, stdout); - if (ret < 0) { - return ret; - } else { - var newlineRet = _fputc(10, stdout); - return (newlineRet < 0) ? -1 : ret + 1; - } - } - - function _isxdigit(chr) { - return (chr >= 48 && chr <= 57) || - (chr >= 97 && chr <= 102) || - (chr >= 65 && chr <= 70); - } - - function _ftell(stream) { - // long ftell(FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/ftell.html - stream = FS.getStream(stream); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - if (FS.isChrdev(stream.node.mode)) { - ___setErrNo(ERRNO_CODES.ESPIPE); - return -1; - } else { - return stream.position; - } - } - - - function __exit(status) { - // void _exit(int status); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html - Module['exit'](status); - }function _exit(status) { - __exit(status); - } - - function _sprintf(s, format, varargs) { - // int sprintf(char *restrict s, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - return _snprintf(s, undefined, format, varargs); - } - - var _emscripten_get_longjmp_result=true; - - function _strrchr(ptr, chr) { - var ptr2 = ptr + _strlen(ptr); - do { - if (HEAP8[(ptr2)] == chr) return ptr2; - ptr2--; - } while (ptr2 >= ptr); - return 0; - } - - function _munmap(start, num) { - if (!_mmap.mappings) _mmap.mappings = {}; - // TODO: support unmmap'ing parts of allocations - var info = _mmap.mappings[start]; - if (!info) return 0; - if (num == info.num) { - _mmap.mappings[start] = null; - if (info.allocated) { - _free(info.malloc); - } - } - return 0; - } - - function _fcntl(fildes, cmd, varargs, dup2) { - // int fcntl(int fildes, int cmd, ...); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/fcntl.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - switch (cmd) { - case 0: - var arg = HEAP32[((varargs)>>2)]; - if (arg < 0) { - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - } - var newStream; - try { - newStream = FS.open(stream.path, stream.flags, 0, arg); - } catch (e) { - FS.handleFSError(e); - return -1; - } - return newStream.fd; - case 1: - case 2: - return 0; // FD_CLOEXEC makes no sense for a single process. - case 3: - return stream.flags; - case 4: - var arg = HEAP32[((varargs)>>2)]; - stream.flags |= arg; - return 0; - case 12: - case 12: - var arg = HEAP32[((varargs)>>2)]; - var offset = 0; - // We're always unlocked. - HEAP16[(((arg)+(offset))>>1)]=2; - return 0; - case 13: - case 14: - case 13: - case 14: - // Pretend that the locking is successful. - return 0; - case 8: - case 9: - // These are for sockets. We don't have them fully implemented yet. - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - default: - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - } - // Should never be reached. Only to silence strict warnings. - return -1; - } - - function _strcspn(pstr, pset) { - var str = pstr, set, strcurr, setcurr; - while (1) { - strcurr = HEAP8[(str)]; - if (!strcurr) return str - pstr; - set = pset; - while (1) { - setcurr = HEAP8[(set)]; - if (!setcurr || setcurr == strcurr) break; - set++; - } - if (setcurr) return str - pstr; - str++; - } - } - - function _copysign(a, b) { - return __reallyNegative(a) === __reallyNegative(b) ? a : -a; - } - - function _FcConfigSubstitute() { - Module['printErr']('missing function: FcConfigSubstitute'); abort(-1); - } - - var _log=Math_log; - - var _cos=Math_cos; - - - - function _lseek(fildes, offset, whence) { - // off_t lseek(int fildes, off_t offset, int whence); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/lseek.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - try { - return FS.llseek(stream, offset, whence); - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _fseek(stream, offset, whence) { - // int fseek(FILE *stream, long offset, int whence); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fseek.html - var ret = _lseek(stream, offset, whence); - if (ret == -1) { - return -1; - } - stream = FS.getStream(stream); - stream.eof = false; - return 0; - }var _fseeko=_fseek; - - function _FcFontSort() { - Module['printErr']('missing function: FcFontSort'); abort(-1); - } - - function _isalnum(chr) { - return (chr >= 48 && chr <= 57) || - (chr >= 97 && chr <= 122) || - (chr >= 65 && chr <= 90); - } - - function __ZNSt9exceptionD2Ev() {} - - - Module["_strcpy"] = _strcpy; - - function _mmap(start, num, prot, flags, stream, offset) { - /* FIXME: Since mmap is normally implemented at the kernel level, - * this implementation simply uses malloc underneath the call to - * mmap. - */ - var MAP_PRIVATE = 2; - var ptr; - var allocated = false; - - if (!_mmap.mappings) _mmap.mappings = {}; - - if (stream == -1) { - ptr = _malloc(num); - if (!ptr) return -1; - _memset(ptr, 0, num); - allocated = true; - } else { - var info = FS.getStream(stream); - if (!info) return -1; - try { - var res = FS.mmap(info, HEAPU8, start, num, offset, prot, flags); - ptr = res.ptr; - allocated = res.allocated; - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - _mmap.mappings[ptr] = { malloc: ptr, num: num, allocated: allocated }; - return ptr; - } - - var _acos=Math_acos; - - function _FcPatternDestroy() { - Module['printErr']('missing function: FcPatternDestroy'); abort(-1); - } - - var _llvm_memset_p0i8_i32=_memset; - - - Module["_i64Subtract"] = _i64Subtract; - - - Module["_i64Add"] = _i64Add; - - var _pow=Math_pow; - - - function __ZSt18uncaught_exceptionv() { // std::uncaught_exception() - return !!__ZSt18uncaught_exceptionv.uncaught_exception; - } - - - - function ___cxa_is_number_type(type) { - var isNumber = false; - try { if (type == __ZTIi) isNumber = true } catch(e){} - try { if (type == __ZTIj) isNumber = true } catch(e){} - try { if (type == __ZTIl) isNumber = true } catch(e){} - try { if (type == __ZTIm) isNumber = true } catch(e){} - try { if (type == __ZTIx) isNumber = true } catch(e){} - try { if (type == __ZTIy) isNumber = true } catch(e){} - try { if (type == __ZTIf) isNumber = true } catch(e){} - try { if (type == __ZTId) isNumber = true } catch(e){} - try { if (type == __ZTIe) isNumber = true } catch(e){} - try { if (type == __ZTIc) isNumber = true } catch(e){} - try { if (type == __ZTIa) isNumber = true } catch(e){} - try { if (type == __ZTIh) isNumber = true } catch(e){} - try { if (type == __ZTIs) isNumber = true } catch(e){} - try { if (type == __ZTIt) isNumber = true } catch(e){} - return isNumber; - }function ___cxa_does_inherit(definiteType, possibilityType, possibility) { - if (possibility == 0) return false; - if (possibilityType == 0 || possibilityType == definiteType) - return true; - var possibility_type_info; - if (___cxa_is_number_type(possibilityType)) { - possibility_type_info = possibilityType; - } else { - var possibility_type_infoAddr = HEAP32[((possibilityType)>>2)] - 8; - possibility_type_info = HEAP32[((possibility_type_infoAddr)>>2)]; - } - switch (possibility_type_info) { - case 0: // possibility is a pointer - // See if definite type is a pointer - var definite_type_infoAddr = HEAP32[((definiteType)>>2)] - 8; - var definite_type_info = HEAP32[((definite_type_infoAddr)>>2)]; - if (definite_type_info == 0) { - // Also a pointer; compare base types of pointers - var defPointerBaseAddr = definiteType+8; - var defPointerBaseType = HEAP32[((defPointerBaseAddr)>>2)]; - var possPointerBaseAddr = possibilityType+8; - var possPointerBaseType = HEAP32[((possPointerBaseAddr)>>2)]; - return ___cxa_does_inherit(defPointerBaseType, possPointerBaseType, possibility); - } else - return false; // one pointer and one non-pointer - case 1: // class with no base class - return false; - case 2: // class with base class - var parentTypeAddr = possibilityType + 8; - var parentType = HEAP32[((parentTypeAddr)>>2)]; - return ___cxa_does_inherit(definiteType, parentType, possibility); - default: - return false; // some unencountered type - } - } - - function ___resumeException(ptr) { - if (!___cxa_last_thrown_exception) { ___cxa_last_thrown_exception = 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."; - } - - var ___cxa_last_thrown_exception=0; - - var ___cxa_exception_header_size=8;function ___cxa_find_matching_catch(thrown, throwntype) { - if (thrown == -1) thrown = ___cxa_last_thrown_exception; - header = thrown - ___cxa_exception_header_size; - if (throwntype == -1) throwntype = HEAP32[((header)>>2)]; - var typeArray = Array.prototype.slice.call(arguments, 2); - - // If throwntype is a pointer, this means a pointer has been - // thrown. When a pointer is thrown, actually what's thrown - // is a pointer to the pointer. We'll dereference it. - if (throwntype != 0 && !___cxa_is_number_type(throwntype)) { - var throwntypeInfoAddr= HEAP32[((throwntype)>>2)] - 8; - var throwntypeInfo= HEAP32[((throwntypeInfoAddr)>>2)]; - if (throwntypeInfo == 0) - thrown = HEAP32[((thrown)>>2)]; - } - // The different catch blocks are denoted by different types. - // Due to inheritance, those types may not precisely match the - // type of the thrown object. Find one which matches, and - // return the type of the catch block which should be called. - for (var i = 0; i < typeArray.length; i++) { - if (___cxa_does_inherit(typeArray[i], throwntype, thrown)) - return ((asm["setTempRet0"](typeArray[i]),thrown)|0); - } - // Shouldn't happen unless we have bogus data in typeArray - // or encounter a type for which emscripten doesn't have suitable - // typeinfo defined. Best-efforts match just in case. - return ((asm["setTempRet0"](throwntype),thrown)|0); - }function ___cxa_throw(ptr, type, destructor) { - if (!___cxa_throw.initialized) { - try { - HEAP32[((__ZTVN10__cxxabiv119__pointer_type_infoE)>>2)]=0; // Workaround for libcxxabi integration bug - } catch(e){} - try { - HEAP32[((__ZTVN10__cxxabiv117__class_type_infoE)>>2)]=1; // Workaround for libcxxabi integration bug - } catch(e){} - try { - HEAP32[((__ZTVN10__cxxabiv120__si_class_type_infoE)>>2)]=2; // Workaround for libcxxabi integration bug - } catch(e){} - ___cxa_throw.initialized = true; - } - var header = ptr - ___cxa_exception_header_size; - HEAP32[((header)>>2)]=type - HEAP32[(((header)+(4))>>2)]=destructor - ___cxa_last_thrown_exception = 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."; - } - - var _FtoIHigh=true; - - - - function _fprintf(stream, format, varargs) { - // int fprintf(FILE *restrict stream, const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var result = __formatString(format, varargs); - var stack = Runtime.stackSave(); - var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); - Runtime.stackRestore(stack); - return ret; - }function _printf(format, varargs) { - // int printf(const char *restrict format, ...); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html - var stdout = HEAP32[((_stdout)>>2)]; - return _fprintf(stdout, format, varargs); - } - - function _fopen(filename, mode) { - // FILE *fopen(const char *restrict filename, const char *restrict mode); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/fopen.html - var flags; - mode = Pointer_stringify(mode); - if (mode[0] == 'r') { - if (mode.indexOf('+') != -1) { - flags = 2; - } else { - flags = 0; - } - } else if (mode[0] == 'w') { - if (mode.indexOf('+') != -1) { - flags = 2; - } else { - flags = 1; - } - flags |= 64; - flags |= 512; - } else if (mode[0] == 'a') { - if (mode.indexOf('+') != -1) { - flags = 2; - } else { - flags = 1; - } - flags |= 64; - flags |= 1024; - } else { - ___setErrNo(ERRNO_CODES.EINVAL); - return 0; - } - var ret = _open(filename, flags, allocate([0x1FF, 0, 0, 0], 'i32', ALLOC_STACK)); // All creation permissions. - return (ret == -1) ? 0 : ret; - } - - - - Module["_strncpy"] = _strncpy; - - function _inflateEnd() { - Module['printErr']('dead function: inflateEnd'); abort(-1); - } - - var _emscripten_postinvoke=true; - - var _copysignl=_copysign; - - function _FcPatternGetString() { - Module['printErr']('missing function: FcPatternGetString'); abort(-1); - } - - function _qsort(base, num, size, cmp) { - if (num == 0 || size == 0) return; - // forward calls to the JavaScript sort method - // first, sort the items logically - var keys = []; - for (var i = 0; i < num; i++) keys.push(i); - keys.sort(function(a, b) { - return Module['dynCall_iii'](cmp, base+a*size, base+b*size); - }); - // apply the sort - var temp = _malloc(num*size); - _memcpy(temp, base, num*size); - for (var i = 0; i < num; i++) { - if (keys[i] == i) continue; // already in place - _memcpy(base+i*size, temp+keys[i]*size, size); - } - _free(temp); - } - - function _isalpha(chr) { - return (chr >= 97 && chr <= 122) || - (chr >= 65 && chr <= 90); - } - - - Module["_memcmp"] = _memcmp; - - function _strdup(ptr) { - var len = _strlen(ptr); - var newStr = _malloc(len + 1); - (_memcpy(newStr, ptr, len)|0); - HEAP8[(((newStr)+(len))|0)]=0; - return newStr; - } - - function _log10(x) { - return Math.log(x) / Math.LN10; - } - - - Module["_bitshift64Lshr"] = _bitshift64Lshr; - - function _srand(seed) {} - - var _emscripten_prep_setjmp=true; - - var _BDtoIHigh=true; - - - - - Module["_testSetjmp"] = _testSetjmp;function _longjmp(env, value) { - asm['setThrew'](env, value || 1); - throw 'longjmp'; - }function _emscripten_longjmp(env, value) { - _longjmp(env, value); - } - - - - - - var _environ=allocate(1, "i32*", ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env) { - // WARNING: Arbitrary limit! - var MAX_ENV_VALUES = 64; - var TOTAL_ENV_SIZE = 1024; - - // Statically allocate memory for the environment. - var poolPtr; - var envPtr; - if (!___buildEnvironment.called) { - ___buildEnvironment.called = true; - // Set default values. Use string keys for Closure Compiler compatibility. - ENV['USER'] = 'root'; - ENV['PATH'] = '/'; - ENV['PWD'] = '/'; - ENV['HOME'] = '/home/emscripten'; - ENV['LANG'] = 'en_US.UTF-8'; - ENV['_'] = './this.program'; - // Allocate memory. - poolPtr = allocate(TOTAL_ENV_SIZE, 'i8', ALLOC_STATIC); - envPtr = allocate(MAX_ENV_VALUES * 4, - 'i8*', ALLOC_STATIC); - HEAP32[((envPtr)>>2)]=poolPtr; - HEAP32[((_environ)>>2)]=envPtr; - } else { - envPtr = HEAP32[((_environ)>>2)]; - poolPtr = HEAP32[((envPtr)>>2)]; - } - - // Collect key=value lines. - var strings = []; - var totalSize = 0; - for (var key in env) { - if (typeof env[key] === 'string') { - var line = key + '=' + env[key]; - strings.push(line); - totalSize += line.length; - } - } - if (totalSize > TOTAL_ENV_SIZE) { - throw new Error('Environment size exceeded TOTAL_ENV_SIZE!'); - } - - // Make new. - var ptrSize = 4; - for (var i = 0; i < strings.length; i++) { - var line = strings[i]; - writeAsciiToMemory(line, poolPtr); - HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr; - poolPtr += line.length + 1; - } - HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0; - }var ENV={};function _getenv(name) { - // char *getenv(const char *name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html - if (name === 0) return 0; - name = Pointer_stringify(name); - if (!ENV.hasOwnProperty(name)) return 0; - - if (_getenv.ret) _free(_getenv.ret); - _getenv.ret = allocate(intArrayFromString(ENV[name]), 'i8', ALLOC_NORMAL); - return _getenv.ret; - } - - function _gettimeofday(ptr) { - var now = Date.now(); - HEAP32[((ptr)>>2)]=Math.floor(now/1000); // seconds - HEAP32[(((ptr)+(4))>>2)]=Math.floor((now-1000*Math.floor(now/1000))*1000); // microseconds - return 0; - } - - function _atoi(ptr) { - return _strtol(ptr, null, 10); - } - - function _vfprintf(s, f, va_arg) { - return _fprintf(s, f, HEAP32[((va_arg)>>2)]); - } - - var _atol=_atoi; - - function _pthread_mutex_unlock() {} - - - function _inflate() { - Module['printErr']('dead function: inflate'); abort(-1); - } - - function _sbrk(bytes) { - // Implement a Linux-like 'memory area' for our 'process'. - // Changes the size of the memory area by |bytes|; returns the - // address of the previous top ('break') of the memory area - // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP - var self = _sbrk; - if (!self.called) { - DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned - self.called = true; - assert(Runtime.dynamicAlloc); - self.alloc = Runtime.dynamicAlloc; - Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; - } - var ret = DYNAMICTOP; - if (bytes != 0) self.alloc(bytes); - return ret; // Previous break location. - } - - function _localeconv() { - // %struct.timeval = type { char* decimal point, other stuff... } - // var indexes = Runtime.calculateStructAlignment({ fields: ['i32', 'i32'] }); - var me = _localeconv; - if (!me.ret) { - me.ret = allocate([allocate(intArrayFromString('.'), 'i8', ALLOC_NORMAL)], 'i8*', ALLOC_NORMAL); // just decimal point, for now - } - return me.ret; - } - - function ___errno_location() { - return ___errno_state; - } - - var _BItoD=true; - - function _pthread_mutex_destroy() {} - - - function _stat(path, buf, dontResolveLastLink) { - // http://pubs.opengroup.org/onlinepubs/7908799/xsh/stat.html - // int stat(const char *path, struct stat *buf); - // NOTE: dontResolveLastLink is a shortcut for lstat(). It should never be - // used in client code. - path = typeof path !== 'string' ? Pointer_stringify(path) : path; - try { - var stat = dontResolveLastLink ? FS.lstat(path) : FS.stat(path); - HEAP32[((buf)>>2)]=stat.dev; - HEAP32[(((buf)+(4))>>2)]=0; - HEAP32[(((buf)+(8))>>2)]=stat.ino; - HEAP32[(((buf)+(12))>>2)]=stat.mode; - HEAP32[(((buf)+(16))>>2)]=stat.nlink; - HEAP32[(((buf)+(20))>>2)]=stat.uid; - HEAP32[(((buf)+(24))>>2)]=stat.gid; - HEAP32[(((buf)+(28))>>2)]=stat.rdev; - HEAP32[(((buf)+(32))>>2)]=0; - HEAP32[(((buf)+(36))>>2)]=stat.size; - HEAP32[(((buf)+(40))>>2)]=4096; - HEAP32[(((buf)+(44))>>2)]=stat.blocks; - HEAP32[(((buf)+(48))>>2)]=Math.floor(stat.atime.getTime() / 1000); - HEAP32[(((buf)+(52))>>2)]=0; - HEAP32[(((buf)+(56))>>2)]=Math.floor(stat.mtime.getTime() / 1000); - HEAP32[(((buf)+(60))>>2)]=0; - HEAP32[(((buf)+(64))>>2)]=Math.floor(stat.ctime.getTime() / 1000); - HEAP32[(((buf)+(68))>>2)]=0; - HEAP32[(((buf)+(72))>>2)]=stat.ino; - return 0; - } catch (e) { - FS.handleFSError(e); - return -1; - } - }function _fstat(fildes, buf) { - // int fstat(int fildes, struct stat *buf); - // http://pubs.opengroup.org/onlinepubs/7908799/xsh/fstat.html - var stream = FS.getStream(fildes); - if (!stream) { - ___setErrNo(ERRNO_CODES.EBADF); - return -1; - } - return _stat(stream.path, buf); - } - - function _ungetc(c, stream) { - // int ungetc(int c, FILE *stream); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/ungetc.html - stream = FS.getStream(stream); - if (!stream) { - return -1; - } - if (c === -1) { - // do nothing for EOF character - return c; - } - c = unSign(c & 0xFF); - stream.ungotten.push(c); - stream.eof = false; - return c; - } - - function _getpwuid(uid) { - return 0; // NULL - } - - - - function __getFloat(text) { - return /^[+-]?[0-9]*\.?[0-9]+([eE][+-]?[0-9]+)?/.exec(text); - }function __scanString(format, get, unget, varargs) { - if (!__scanString.whiteSpace) { - __scanString.whiteSpace = {}; - __scanString.whiteSpace[32] = 1; - __scanString.whiteSpace[9] = 1; - __scanString.whiteSpace[10] = 1; - __scanString.whiteSpace[11] = 1; - __scanString.whiteSpace[12] = 1; - __scanString.whiteSpace[13] = 1; - } - // Supports %x, %4x, %d.%d, %lld, %s, %f, %lf. - // TODO: Support all format specifiers. - format = Pointer_stringify(format); - var soFar = 0; - if (format.indexOf('%n') >= 0) { - // need to track soFar - var _get = get; - get = function get() { - soFar++; - return _get(); - } - var _unget = unget; - unget = function unget() { - soFar--; - return _unget(); - } - } - var formatIndex = 0; - var argsi = 0; - var fields = 0; - var argIndex = 0; - var next; - - mainLoop: - for (var formatIndex = 0; formatIndex < format.length;) { - if (format[formatIndex] === '%' && format[formatIndex+1] == 'n') { - var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; - argIndex += Runtime.getAlignSize('void*', null, true); - HEAP32[((argPtr)>>2)]=soFar; - formatIndex += 2; - continue; - } - - if (format[formatIndex] === '%') { - var nextC = format.indexOf('c', formatIndex+1); - if (nextC > 0) { - var maxx = 1; - if (nextC > formatIndex+1) { - var sub = format.substring(formatIndex+1, nextC); - maxx = parseInt(sub); - if (maxx != sub) maxx = 0; - } - if (maxx) { - var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; - argIndex += Runtime.getAlignSize('void*', null, true); - fields++; - for (var i = 0; i < maxx; i++) { - next = get(); - HEAP8[((argPtr++)|0)]=next; - } - formatIndex += nextC - formatIndex + 1; - continue; - } - } - } - - // handle %[...] - if (format[formatIndex] === '%' && format.indexOf('[', formatIndex+1) > 0) { - var match = /\%([0-9]*)\[(\^)?(\]?[^\]]*)\]/.exec(format.substring(formatIndex)); - if (match) { - var maxNumCharacters = parseInt(match[1]) || Infinity; - var negateScanList = (match[2] === '^'); - var scanList = match[3]; - - // expand "middle" dashs into character sets - var middleDashMatch; - while ((middleDashMatch = /([^\-])\-([^\-])/.exec(scanList))) { - var rangeStartCharCode = middleDashMatch[1].charCodeAt(0); - var rangeEndCharCode = middleDashMatch[2].charCodeAt(0); - for (var expanded = ''; rangeStartCharCode <= rangeEndCharCode; expanded += String.fromCharCode(rangeStartCharCode++)); - scanList = scanList.replace(middleDashMatch[1] + '-' + middleDashMatch[2], expanded); - } - - var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; - argIndex += Runtime.getAlignSize('void*', null, true); - fields++; - - for (var i = 0; i < maxNumCharacters; i++) { - next = get(); - if (negateScanList) { - if (scanList.indexOf(String.fromCharCode(next)) < 0) { - HEAP8[((argPtr++)|0)]=next; - } else { - unget(); - break; - } - } else { - if (scanList.indexOf(String.fromCharCode(next)) >= 0) { - HEAP8[((argPtr++)|0)]=next; - } else { - unget(); - break; - } - } - } - - // write out null-terminating character - HEAP8[((argPtr++)|0)]=0; - formatIndex += match[0].length; - - continue; - } - } - // remove whitespace - while (1) { - next = get(); - if (next == 0) return fields; - if (!(next in __scanString.whiteSpace)) break; - } - unget(); - - if (format[formatIndex] === '%') { - formatIndex++; - var suppressAssignment = false; - if (format[formatIndex] == '*') { - suppressAssignment = true; - formatIndex++; - } - var maxSpecifierStart = formatIndex; - while (format[formatIndex].charCodeAt(0) >= 48 && - format[formatIndex].charCodeAt(0) <= 57) { - formatIndex++; - } - var max_; - if (formatIndex != maxSpecifierStart) { - max_ = parseInt(format.slice(maxSpecifierStart, formatIndex), 10); - } - var long_ = false; - var half = false; - var longLong = false; - if (format[formatIndex] == 'l') { - long_ = true; - formatIndex++; - if (format[formatIndex] == 'l') { - longLong = true; - formatIndex++; - } - } else if (format[formatIndex] == 'h') { - half = true; - formatIndex++; - } - var type = format[formatIndex]; - formatIndex++; - var curr = 0; - var buffer = []; - // Read characters according to the format. floats are trickier, they may be in an unfloat state in the middle, then be a valid float later - if (type == 'f' || type == 'e' || type == 'g' || - type == 'F' || type == 'E' || type == 'G') { - next = get(); - while (next > 0 && (!(next in __scanString.whiteSpace))) { - buffer.push(String.fromCharCode(next)); - next = get(); - } - var m = __getFloat(buffer.join('')); - var last = m ? m[0].length : 0; - for (var i = 0; i < buffer.length - last + 1; i++) { - unget(); - } - buffer.length = last; - } else { - next = get(); - var first = true; - - // Strip the optional 0x prefix for %x. - if ((type == 'x' || type == 'X') && (next == 48)) { - var peek = get(); - if (peek == 120 || peek == 88) { - next = get(); - } else { - unget(); - } - } - - while ((curr < max_ || isNaN(max_)) && next > 0) { - if (!(next in __scanString.whiteSpace) && // stop on whitespace - (type == 's' || - ((type === 'd' || type == 'u' || type == 'i') && ((next >= 48 && next <= 57) || - (first && next == 45))) || - ((type === 'x' || type === 'X') && (next >= 48 && next <= 57 || - next >= 97 && next <= 102 || - next >= 65 && next <= 70))) && - (formatIndex >= format.length || next !== format[formatIndex].charCodeAt(0))) { // Stop when we read something that is coming up - buffer.push(String.fromCharCode(next)); - next = get(); - curr++; - first = false; - } else { - break; - } - } - unget(); - } - if (buffer.length === 0) return 0; // Failure. - if (suppressAssignment) continue; - - var text = buffer.join(''); - var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; - argIndex += Runtime.getAlignSize('void*', null, true); - switch (type) { - case 'd': case 'u': case 'i': - if (half) { - HEAP16[((argPtr)>>1)]=parseInt(text, 10); - } else if (longLong) { - (tempI64 = [parseInt(text, 10)>>>0,(tempDouble=parseInt(text, 10),(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)],HEAP32[((argPtr)>>2)]=tempI64[0],HEAP32[(((argPtr)+(4))>>2)]=tempI64[1]); - } else { - HEAP32[((argPtr)>>2)]=parseInt(text, 10); - } - break; - case 'X': - case 'x': - HEAP32[((argPtr)>>2)]=parseInt(text, 16); - break; - case 'F': - case 'f': - case 'E': - case 'e': - case 'G': - case 'g': - case 'E': - // fallthrough intended - if (long_) { - HEAPF64[((argPtr)>>3)]=parseFloat(text); - } else { - HEAPF32[((argPtr)>>2)]=parseFloat(text); - } - break; - case 's': - var array = intArrayFromString(text); - for (var j = 0; j < array.length; j++) { - HEAP8[(((argPtr)+(j))|0)]=array[j]; - } - break; - } - fields++; - } else if (format[formatIndex].charCodeAt(0) in __scanString.whiteSpace) { - next = get(); - while (next in __scanString.whiteSpace) { - if (next <= 0) break mainLoop; // End of input. - next = get(); - } - unget(next); - formatIndex++; - } else { - // Not a specifier. - next = get(); - if (format[formatIndex].charCodeAt(0) !== next) { - unget(next); - break mainLoop; - } - formatIndex++; - } - } - return fields; - }function _sscanf(s, format, varargs) { - // int sscanf(const char *restrict s, const char *restrict format, ... ); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/scanf.html - var index = 0; - function get() { return HEAP8[(((s)+(index++))|0)]; }; - function unget() { index--; }; - return __scanString(format, get, unget, varargs); - } - - function _sysconf(name) { - // long sysconf(int name); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html - switch(name) { - case 30: return PAGE_SIZE; - case 132: - case 133: - case 12: - case 137: - case 138: - case 15: - case 235: - case 16: - case 17: - case 18: - case 19: - case 20: - case 149: - case 13: - case 10: - case 236: - case 153: - case 9: - case 21: - case 22: - case 159: - case 154: - case 14: - case 77: - case 78: - case 139: - case 80: - case 81: - case 79: - case 82: - case 68: - case 67: - case 164: - case 11: - case 29: - case 47: - case 48: - case 95: - case 52: - case 51: - case 46: - return 200809; - case 27: - case 246: - case 127: - case 128: - case 23: - case 24: - case 160: - case 161: - case 181: - case 182: - case 242: - case 183: - case 184: - case 243: - case 244: - case 245: - case 165: - case 178: - case 179: - case 49: - case 50: - case 168: - case 169: - case 175: - case 170: - case 171: - case 172: - case 97: - case 76: - case 32: - case 173: - case 35: - return -1; - case 176: - case 177: - case 7: - case 155: - case 8: - case 157: - case 125: - case 126: - case 92: - case 93: - case 129: - case 130: - case 131: - case 94: - case 91: - return 1; - case 74: - case 60: - case 69: - case 70: - case 4: - return 1024; - case 31: - case 42: - case 72: - return 32; - case 87: - case 26: - case 33: - return 2147483647; - case 34: - case 1: - return 47839; - case 38: - case 36: - return 99; - case 43: - case 37: - return 2048; - case 0: return 2097152; - case 3: return 65536; - case 28: return 32768; - case 44: return 32767; - case 75: return 16384; - case 39: return 1000; - case 89: return 700; - case 71: return 256; - case 40: return 255; - case 2: return 100; - case 180: return 64; - case 25: return 20; - case 5: return 16; - case 6: return 6; - case 73: return 4; - case 84: return 1; - } - ___setErrNo(ERRNO_CODES.EINVAL); - return -1; - } - - var _SItoD=true; - - var _SItoF=true; - - var _llvm_memmove_p0i8_p0i8_i32=_memmove; - - var _ftello=_ftell; - - function _strtok_r(s, delim, lasts) { - var skip_leading_delim = 1; - var spanp; - var c, sc; - var tok; - - - if (s == 0 && (s = getValue(lasts, 'i8*')) == 0) { - return 0; - } - - cont: while (1) { - c = getValue(s++, 'i8'); - for (spanp = delim; (sc = getValue(spanp++, 'i8')) != 0;) { - if (c == sc) { - if (skip_leading_delim) { - continue cont; - } else { - setValue(lasts, s, 'i8*'); - setValue(s - 1, 0, 'i8'); - return s - 1; - } - } - } - break; - } - - if (c == 0) { - setValue(lasts, 0, 'i8*'); - return 0; - } - tok = s - 1; - - for (;;) { - c = getValue(s++, 'i8'); - spanp = delim; - do { - if ((sc = getValue(spanp++, 'i8')) == c) { - if (c == 0) { - s = 0; - } else { - setValue(s - 1, 0, 'i8'); - } - setValue(lasts, s, 'i8*'); - return tok; - } - } while (sc != 0); - } - abort('strtok_r error!'); - } - - var _DtoIHigh=true; - - function _abort() { - Module['abort'](); - } - - - - var _fabs=Math_abs; - - var _floor=Math_floor; - - - var _sqrt=Math_sqrt; - - function _inflateReset() { - Module['printErr']('dead function: inflateReset'); abort(-1); - } - - function ___cxa_allocate_exception(size) { - var ptr = _malloc(size + ___cxa_exception_header_size); - return ptr + ___cxa_exception_header_size; - } - - var _sin=Math_sin; - - var _fmodl=_fmod; - - - function ___cxa_pure_virtual() { - ABORT = true; - throw 'Pure virtual function called!'; - } - - - function _time(ptr) { - var ret = Math.floor(Date.now()/1000); - if (ptr) { - HEAP32[((ptr)>>2)]=ret; - } - return ret; - } - - function _closedir(dirp) { - // int closedir(DIR *dirp); - // http://pubs.opengroup.org/onlinepubs/007908799/xsh/closedir.html - return _close(dirp); - } - - function _unlink(path) { - // int unlink(const char *path); - // http://pubs.opengroup.org/onlinepubs/000095399/functions/unlink.html - path = Pointer_stringify(path); - try { - FS.unlink(path); - return 0; - } catch (e) { - FS.handleFSError(e); - return -1; - } - } - - var _emscripten_setjmp=true; - - var _getuid=_getgid; - - var _atan2=Math_atan2; - - var _FtoILow=true; - - function __ZTISt9exception() { - Module['printErr']('missing function: _ZTISt9exception'); abort(-1); - } - - - - - - - -FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; -___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; -__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor(); -if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); } -_fputc.ret = allocate([0], "i8", ALLOC_STATIC); -__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } }); -Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; - Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; - Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; - Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; - Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; - Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } -_fgetc.ret = allocate([0], "i8", ALLOC_STATIC); -___buildEnvironment(ENV); -STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); - -staticSealed = true; // seal the static portion of memory - -STACK_MAX = STACK_BASE + 5242880; - -DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); - -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); - - var ctlz_i8 = allocate([8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_DYNAMIC); - 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_DYNAMIC); - -var Math_min = Math.min; -function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7) { - try { - return Module["dynCall_iiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7); - } 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_iiiidd(index,a1,a2,a3,a4,a5) { - try { - return Module["dynCall_iiiidd"](index,a1,a2,a3,a4,a5); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["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; - 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_viidd(index,a1,a2,a3,a4) { - try { - Module["dynCall_viidd"](index,a1,a2,a3,a4); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_viddii(index,a1,a2,a3,a4,a5) { - try { - Module["dynCall_viddii"](index,a1,a2,a3,a4,a5); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_viiddddddiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) { - try { - Module["dynCall_viiddddddiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_iiiiiiiiiiiidd(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) { - try { - return Module["dynCall_iiiiiiiiiiiidd"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_vidii(index,a1,a2,a3,a4) { - try { - Module["dynCall_vidii"](index,a1,a2,a3,a4); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_iiiii(index,a1,a2,a3,a4) { - try { - return Module["dynCall_iiiii"](index,a1,a2,a3,a4); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_iiiddddiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { - try { - return Module["dynCall_iiiddddiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_viiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) { - try { - Module["dynCall_viiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -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_iiiddiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) { - try { - return Module["dynCall_iiiddiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15); - } 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_viiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) { - try { - Module["dynCall_viiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_di(index,a1) { - try { - return Module["dynCall_di"](index,a1); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) { - try { - return Module["dynCall_iiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7) { - try { - Module["dynCall_viiiiiii"](index,a1,a2,a3,a4,a5,a6,a7); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { - try { - Module["dynCall_viiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) { - try { - Module["dynCall_viiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); - } 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_iiiiii(index,a1,a2,a3,a4,a5) { - try { - return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_dii(index,a1,a2) { - try { - return Module["dynCall_dii"](index,a1,a2); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_viidddddd(index,a1,a2,a3,a4,a5,a6,a7,a8) { - try { - Module["dynCall_viidddddd"](index,a1,a2,a3,a4,a5,a6,a7,a8); - } catch(e) { - if (typeof e !== 'number' && e !== 'longjmp') throw e; - asm["setThrew"](1, 0); - } -} - -function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { - try { - return Module["dynCall_iiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9); - } 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_viid(index,a1,a2,a3) { - try { - Module["dynCall_viid"](index,a1,a2,a3); - } 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); - } -} - -function asmPrintInt(x, y) { - Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); -} -function asmPrintFloat(x, y) { - Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); -} -// EMSCRIPTEN_START_ASM -var asm=(function(global,env,buffer){"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=env.ctlz_i8|0;var o=env.__ZTISt9exception|0;var p=env._stderr|0;var q=env._stdin|0;var r=env._stdout|0;var s=0;var t=0;var u=0;var v=0;var w=+env.NaN,x=+env.Infinity;var y=0,z=0,A=0,B=0,C=0.0,D=0,E=0,F=0,G=0.0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=0;var O=0;var P=0;var Q=0;var R=global.Math.floor;var S=global.Math.abs;var T=global.Math.sqrt;var U=global.Math.pow;var V=global.Math.cos;var W=global.Math.sin;var X=global.Math.tan;var Y=global.Math.acos;var Z=global.Math.asin;var _=global.Math.atan;var $=global.Math.atan2;var aa=global.Math.exp;var ba=global.Math.log;var ca=global.Math.ceil;var da=global.Math.imul;var ea=env.abort;var fa=env.assert;var ga=env.asmPrintInt;var ha=env.asmPrintFloat;var ia=env.min;var ja=env.invoke_iiiiiiii;var ka=env.invoke_viiiii;var la=env.invoke_vi;var ma=env.invoke_iiiidd;var na=env.invoke_vii;var oa=env.invoke_iiiiiii;var pa=env.invoke_ii;var qa=env.invoke_viidd;var ra=env.invoke_viddii;var sa=env.invoke_viiddddddiiii;var ta=env.invoke_iiiiiiiiiiiidd;var ua=env.invoke_vidii;var va=env.invoke_iiiii;var wa=env.invoke_iiiddddiii;var xa=env.invoke_viiiiiiiiiii;var ya=env.invoke_iiii;var za=env.invoke_iiiddiiiiiiiiiii;var Aa=env.invoke_viiiiii;var Ba=env.invoke_viiiiiiiiiiiii;var Ca=env.invoke_di;var Da=env.invoke_iiiiiiiiiii;var Ea=env.invoke_viiiiiii;var Fa=env.invoke_viiiiiiiii;var Ga=env.invoke_viiiiiiiiii;var Ha=env.invoke_iii;var Ia=env.invoke_iiiiii;var Ja=env.invoke_dii;var Ka=env.invoke_viidddddd;var La=env.invoke_iiiiiiiiii;var Ma=env.invoke_viii;var Na=env.invoke_v;var Oa=env.invoke_viid;var Pa=env.invoke_viiii;var Qa=env._isalnum;var Ra=env._fabs;var Sa=env._strrchr;var Ta=env._fread;var Ua=env._memchr;var Va=env._inflateReset;var Wa=env.__reallyNegative;var Xa=env._fstat;var Ya=env.___assert_fail;var Za=env.__ZSt18uncaught_exceptionv;var _a=env._longjmp;var $a=env._fsync;var ab=env._sbrk;var bb=env._sysconf;var cb=env._close;var db=env._cos;var eb=env._readdir;var fb=env._puts;var gb=env._FcPatternBuild;var hb=env._unlink;var ib=env._write;var jb=env._ftell;var kb=env._rand;var lb=env.__ZNSt9exceptionD2Ev;var mb=env.___cxa_does_inherit;var nb=env._strstr;var ob=env._FcPatternDestroy;var pb=env._qsort;var qb=env._closedir;var rb=env._FcPatternGetInteger;var sb=env._send;var tb=env._pow;var ub=env._atan2;var vb=env.___cxa_is_number_type;var wb=env._FcConfigSubstitute;var xb=env._fcntl;var yb=env.___cxa_find_matching_catch;var zb=env._opendir;var Ab=env._isalpha;var Bb=env._strtol;var Cb=env.___setErrNo;var Db=env.___resumeException;var Eb=env._srand;var Fb=env._strchr;var Gb=env._ceil;var Hb=env._putchar;var Ib=env.___buildEnvironment;var Jb=env._localeconv;var Kb=env._printf;var Lb=env._sprintf;var Mb=env._strtok_r;var Nb=env._stat;var Ob=env._FcPatternAddInteger;var Pb=env._getpwnam;var Qb=env._read;var Rb=env._fwrite;var Sb=env._FcPatternGetString;var Tb=env._time;var Ub=env._pthread_mutex_lock;var Vb=env._gettimeofday;var Wb=env._munmap;var Xb=env._mmap;var Yb=env._exit;var Zb=env._readdir_r;var _b=env._inflate;var $b=env._fmod;var ac=env._lseek;var bc=env._vfprintf;var cc=env.___cxa_allocate_exception;var dc=env._asin;var ec=env._atoi;var fc=env._pwrite;var gc=env._open;var hc=env._snprintf;var ic=env._FcFontSort;var jc=env._fseek;var kc=env._pthread_mutex_destroy;var lc=env._isxdigit;var mc=env._fclose;var nc=env.__parseInt;var oc=env._log;var pc=env._recv;var qc=env._fgetc;var rc=env.__getFloat;var sc=env._fputc;var tc=env._abort;var uc=env.___cxa_throw;var vc=env._strncmp;var wc=env._inflateInit2_;var xc=env._isspace;var yc=env._fopen;var zc=env._floor;var Ac=env._getgid;var Bc=env._sin;var Cc=env._acos;var Dc=env.___cxa_pure_virtual;var Ec=env._ungetc;var Fc=env._fflush;var Gc=env._fprintf;var Hc=env._sscanf;var Ic=env._strdup;var Jc=env.__exit;var Kc=env._strcspn;var Lc=env._log10;var Mc=env._pthread_mutex_unlock;var Nc=env._pread;var Oc=env._FcDefaultSubstitute;var Pc=env.___errno_location;var Qc=env._strcmp;var Rc=env._getpwuid;var Sc=env._copysign;var Tc=env._getenv;var Uc=env.__scanString;var Vc=env._FcFontSetDestroy;var Wc=env._inflateEnd;var Xc=env._strerror;var Yc=env._emscripten_longjmp;var Zc=env.__formatString;var _c=env._fputs;var $c=env._sqrt;var ad=env._pthread_mutex_init;var bd=env._strerror_r;var cd=0.0; -// EMSCRIPTEN_START_FUNCS -function Kd(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+7&-8;return b|0}function Ld(){return i|0}function Md(a){a=a|0;i=a}function Nd(a,b){a=a|0;b=b|0;if((s|0)==0){s=a;t=b}}function Od(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0]}function Pd(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0];a[k+4|0]=a[b+4|0];a[k+5|0]=a[b+5|0];a[k+6|0]=a[b+6|0];a[k+7|0]=a[b+7|0]}function Qd(a){a=a|0;H=a}function Rd(a){a=a|0;I=a}function Sd(a){a=a|0;J=a}function Td(a){a=a|0;K=a}function Ud(a){a=a|0;L=a}function Vd(a){a=a|0;M=a}function Wd(a){a=a|0;N=a}function Xd(a){a=a|0;O=a}function Yd(a){a=a|0;P=a}function Zd(a){a=a|0;Q=a}function _d(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0;e=i;j=i;i=i+24|0;g=j;v=i;i=i+8|0;u=v;r=i;i=i+8|0;q=r;t=i;i=i+8|0;s=t;l=i;i=i+8|0;f=i;i=i+512|0;m=i;i=i+8|0;n=m;o=i;i=i+8|0;c[l>>2]=b;b=ae(8,l,d)|0;if((a[608]&1)!=0){b=(a[616]&1)==0&b}w=+h[78];do{if(w!=0.0){if(!(+h[79]==150.0|+h[80]==150.0)){break}h[79]=w;h[80]=w}}while(0);do{if(b){b=c[l>>2]|0;if((b|0)>3){break}if((a[648]&1)!=0){break}if((a[656]&1)!=0){break}do{if((b|0)>1){q=FW(32)|0;fe(q,c[d+4>>2]|0);if((c[l>>2]|0)!=3){l=q;d=0;break}l=q;d=c[d+8>>2]|0}else{l=0;d=0}}while(0);q=FW(232)|0;Ue(q,0);c[834]=q;do{if((a[872]|0)!=0){if(Af(q,872)|0){break}Rb(888,38,1,c[p>>2]|0)|0}}while(0);do{if((a[928]|0)!=0){if(Bf(c[834]|0,928)|0){break}Rb(944,32,1,c[p>>2]|0)|0}}while(0);do{if((a[984]|0)!=0){if(Cf(c[834]|0,984)|0){break}Rb(1e3,38,1,c[p>>2]|0)|0}}while(0);if((a[1040]&1)!=0){Df(c[834]|0,1)}if((a[1048]|0)==0){q=0}else{q=FW(32)|0;fe(q,1048)}if((a[1088]|0)==0){r=0}else{r=FW(32)|0;fe(r,1088)}if((l|0)==0){l=FW(32)|0;fe(l,1128)}if((te(l,1136)|0)==0){if((l|0)!=0){ke(l);HW(l)}s=FW(32)|0;fe(s,1128)}else{s=l}eg(o,0);l=gg(o,s,q,r,0)|0;fg(o);if((s|0)!=0){ke(s);HW(s)}if((r|0)!=0){ke(r);HW(r)}if((q|0)!=0){ke(q);HW(q)}do{if((a[l+52|0]&1)==0){f=1}else{if((c[286]|0)<1){c[286]=1}o=c[288]|0;if((o|0)<1){k=50}else{if((o|0)>(_f(l)|0)){k=50}}if((k|0)==50){c[288]=_f(l)|0}a[m]=-1;a[n+1|0]=-1;a[n+2|0]=-1;m=FW(256)|0;if((a[608]&1)==0){o=(a[616]&1)!=0?1:2}else{o=0}Mg(m,o,4,0,n,1,1);Qg(m,c[l+28>>2]|0);n=c[290]|0;if((n|0)!=0){c[292]=n;c[294]=n}n=_f(l)|0;if(n>>>0>9){o=1;while(1){o=o+1|0;if(n>>>0>99){n=(n>>>0)/10|0}else{break}}}else{o=1}q=c[286]|0;a:do{if((q|0)<=(c[288]|0)){n=(d|0)==0;while(1){if((a[1184]&1)==0){k=61}else{if((q&1|0)!=0){k=61}}do{if((k|0)==61){k=0;if((a[1192]&1)!=0){if(((q|0)%2|0|0)==1){break}}b=(a[1200]&1)==0;k=($f(l,q)|0)==0;do{if(b){if(k){x=0.0}else{b=c[($f(l,q)|0)+36>>2]|0;x=+h[b+16>>3]- +h[b>>3]}if(($f(l,q)|0)==0){w=0.0;break}b=c[($f(l,q)|0)+36>>2]|0;w=+h[b+24>>3]- +h[b+8>>3]}else{if(k){x=0.0}else{b=c[($f(l,q)|0)+36>>2]|0;x=+h[b+48>>3]- +h[b+32>>3]}if(($f(l,q)|0)==0){w=0.0;break}b=c[($f(l,q)|0)+36>>2]|0;w=+h[b+56>>3]- +h[b+40>>3]}}while(0);k=c[302]|0;do{if((k|0)==0){k=c[304]|0;if((k|0)!=0){h[79]=+(k|0)*72.0/x}k=c[306]|0;if((k|0)==0){y=+h[80];break}else{y=+(k|0)*72.0/w;h[80]=y;break}}else{y=+(k|0)*72.0/(x>w?x:w);h[78]=y;h[80]=y;h[79]=y}}while(0);x=x*(+h[79]/72.0);y=w*(y/72.0);if(($f(l,q)|0)==0){k=81}else{if((c[(c[($f(l,q)|0)+36>>2]|0)+168>>2]|0)==90){k=83}else{k=81}}do{if((k|0)==81){k=0;if(($f(l,q)|0)==0){w=y;break}if((c[(c[($f(l,q)|0)+36>>2]|0)+168>>2]|0)==270){k=83}else{w=y}}}while(0);if((k|0)==83){k=0;w=x;x=y}if(n){$d(l,m,q,c[318]|0,c[320]|0,c[294]|0,c[292]|0,x,w,0);break}if((a[608]&1)==0){r=(a[616]&1)!=0?1256:1264}else{r=1248}c[j>>2]=480;c[g+4>>2]=d;c[g+8>>2]=o;c[g+12>>2]=q;c[g+16>>2]=r;hc(f|0,512,1232,g|0)|0;$d(l,m,q,c[318]|0,c[320]|0,c[294]|0,c[292]|0,x,w,f)}}while(0);if((q|0)>=(c[288]|0)){break a}q=q+1|0}}}while(0);if((m|0)==0){f=0;break}fd[c[(c[m>>2]|0)+4>>2]&511](m);f=0}}while(0);if((l|0)!=0){Zf(l);HW(l)}g=c[834]|0;if((g|0)==0){b=f;i=e;return b|0}af(g);HW(g);b=f;i=e;return b|0}}while(0);f=c[p>>2]|0;c[t>>2]=688;Gc(f|0,664,s|0)|0;c[r>>2]=704;Gc(f|0,696,q|0)|0;c[v>>2]=784;Gc(f|0,696,u|0)|0;f=a[648]|0;if((f&1)==0){be(824,840,8);f=a[648]|0}do{if((f&1)==0){if((a[656]&1)==0){f=99}else{break}i=e;return f|0}}while(0);b=0;i=e;return b|0}function $d(b,d,e,f,g,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=+l;m=+m;n=n|0;var o=0;o=i;if((j|0)==0){j=~~+ca(+l)}if((k|0)==0){k=~~+ca(+m)}if(+(j+f|0)>l){j=~~+ca(+(l- +(f|0)))}if(+(k+g|0)>m){k=~~+ca(+(m- +(g|0)))}ag(b,d,e,+h[79],+h[80],0,(a[1200]&1)==0,0,0,f,g,j,k,0,0,0,0);if((n|0)==0){fb(2624)|0;i=o;return}else{Me(c[d+180>>2]|0,n)|0;i=o;return}}function ae(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0.0;f=i;q=c[d>>2]|0;if((q|0)<=1){t=1;i=f;return t|0}j=c[p>>2]|0;g=1;k=1;a:while(1){n=e+(g<<2)|0;l=g+1|0;m=e+(l<<2)|0;b:while(1){r=c[n>>2]|0;if((Qc(r|0,2656)|0)==0){j=5;break a}s=c[b>>2]|0;if((s|0)==0){break}else{o=b}while(1){t=c[o+4>>2]|0;if((t|0)<4){if((Qc(s|0,r|0)|0)==0){break}}o=o+20|0;s=c[o>>2]|0;if((s|0)==0){break b}}if((o|0)==0){break}c:do{if((t|0)==3){if((l|0)>=(q|0)){r=1;o=0;break}t=o+8|0;r=o+12|0;hX(c[t>>2]|0,c[m>>2]|0,(c[r>>2]|0)+ -1|0)|0;a[(c[t>>2]|0)+((c[r>>2]|0)+ -1)|0]=0;r=2;o=1}else if((t|0)==1){if((l|0)>=(q|0)){r=1;o=0;break}q=c[m>>2]|0;t=a[q]|0;if(t<<24>>24==43|t<<24>>24==45){r=q+1|0}else{r=q}while(1){s=a[r]|0;if(((s<<24>>24)+ -48|0)>>>0>=10){break}r=r+1|0}if(s<<24>>24!=0){r=1;o=0;break}r=ec(q|0)|0;c[c[o+8>>2]>>2]=r;r=2;o=1}else if((t|0)==0){a[c[o+8>>2]|0]=1;r=1;o=1}else if((t|0)==2){if((l|0)>=(q|0)){r=1;o=0;break}q=c[m>>2]|0;t=a[q]|0;if(t<<24>>24==43|t<<24>>24==45){s=q+1|0;t=a[s]|0}else{s=q}if(((t<<24>>24)+ -48|0)>>>0<10){r=0;while(1){s=s+1|0;r=r+1|0;t=a[s]|0;if(((t<<24>>24)+ -48|0)>>>0<10){}else{break}}}else{r=0}t=t<<24>>24==46?s+1|0:s;s=a[t]|0;if(((s<<24>>24)+ -48|0)>>>0<10){while(1){t=t+1|0;r=r+1|0;s=a[t]|0;if(((s<<24>>24)+ -48|0)>>>0<10){}else{break}}}do{if((r|0)>0){if(!(s<<24>>24==69|s<<24>>24==101)){break}r=t+1|0;s=a[r]|0;if(s<<24>>24==43|s<<24>>24==45){r=t+2|0;s=a[r]|0}if(((s<<24>>24)+ -48|0)>>>0>=10){r=1;o=0;break c}while(1){r=r+1|0;s=a[r]|0;if(((s<<24>>24)+ -48|0)>>>0<10){}else{break}}}}while(0);if(s<<24>>24!=0){r=1;o=0;break}u=+Ie(q);h[c[o+8>>2]>>3]=u;r=2;o=1}else{Rb(2760,28,1,j|0)|0;r=1;o=1}}while(0);q=(c[d>>2]|0)-r|0;c[d>>2]=q;if((q|0)>(g|0)){s=g;while(1){c[e+(s<<2)>>2]=c[e+(s+r<<2)>>2];s=s+1|0;q=c[d>>2]|0;if((s|0)<(q|0)){}else{break}}}k=o&k;if((g|0)>=(q|0)){j=43;break a}}if((l|0)<(q|0)){g=l}else{j=43;break}}if((j|0)==5){t=q+ -1|0;c[d>>2]=t;if((g|0)>=(t|0)){t=k;i=f;return t|0}while(1){j=g+1|0;c[e+(g<<2)>>2]=c[e+(j<<2)>>2];if((j|0)<(c[d>>2]|0)){g=j}else{break}}i=f;return k|0}else if((j|0)==43){i=f;return k|0}return 0}function be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0;l=i;e=i;i=i+8|0;f=e;g=i;i=i+8|0;h=g;j=i;i=i+8|0;k=j;r=i;i=i+8|0;s=r;o=i;i=i+8|0;q=o;t=c[d>>2]|0;if((t|0)==0){n=9}else{m=d;n=0;do{t=ZW(t|0)|0;n=(t|0)>(n|0)?t:n;m=m+20|0;t=c[m>>2]|0;}while((t|0)!=0);n=n+9|0}m=c[p>>2]|0;c[o>>2]=a;Gc(m|0,2664,q|0)|0;if((b|0)!=0){c[r>>2]=b;Gc(m|0,2688,s|0)|0}sc(10,m|0)|0;o=c[d>>2]|0;if((o|0)==0){i=l;return}do{c[j>>2]=o;Gc(m|0,2696,k|0)|0;o=n-(ZW(c[d>>2]|0)|0)|0;switch(c[d+4>>2]|0){case 7:case 3:{q=2720;break};case 5:case 1:{q=2704;break};case 6:case 2:{q=2712;break};default:{q=2736}}c[g>>2]=o;c[h+4>>2]=q;Gc(m|0,2744,h|0)|0;o=c[d+16>>2]|0;if((o|0)!=0){c[e>>2]=o;Gc(m|0,2752,f|0)|0}sc(10,m|0)|0;d=d+20|0;o=c[d>>2]|0;}while((o|0)!=0);i=l;return}function ce(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;j=(b|0)!=0;do{if(j){if((d|0)==-1){k=ZW(b|0)|0;h=k;break}if((d|0)>-1){h=d;k=d;break}Ya(2792,2808,150,2824)}else{h=d;k=0}}while(0);d=(e|0)!=0;if(d){do{if((f|0)==-1){l=ZW(e|0)|0}else{if((f|0)>-1){l=f;break}Ya(2832,2808,158,2824)}}while(0);f=l;k=l+k|0}de(a,k);k=c[a+28>>2]|0;if(j){$W(k|0,b|0,h|0)|0;k=k+h|0}if(!d){i=g;return a|0}$W(k|0,e|0,f|0)|0;i=g;return a|0}function de(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=b+28|0;g=c[f>>2]|0;if((g|0)==0){h=7}else{j=b+24|0;k=c[j>>2]|0;if((k|0)<24){k=24}else{l=(k|0)<256?7:255;k=k+1+l&~l}if((d|0)<24){l=24}else{l=(d|0)<256?7:255;l=d+1+l&~l}if((k|0)!=(l|0)){h=7}}a:do{if((h|0)==7){do{if((d|0)<24){h=g;g=b}else{h=(d|0)<256?7:255;h=d+1+h&~h;if((g|0)==(b|0)){g=we(h)|0}else{g=xe(g,h)|0}h=c[f>>2]|0;if((h|0)==(b|0)|(g|0)==(b|0)){break}j=b+24|0;break a}}while(0);j=b+24|0;b=c[j>>2]|0;if((b|0)>(d|0)){$W(g|0,h|0,d|0)|0;break}else{$W(g|0,h|0,b|0)|0;break}}}while(0);c[f>>2]=g;c[j>>2]=d;a[g+d|0]=0;i=e;return}function ee(b){b=b|0;c[b+28>>2]=b;c[b+24>>2]=0;a[b]=0;i=i;return}function fe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=a+28|0;c[e>>2]=0;c[a+24>>2]=0;if((b|0)==0){de(a,0);i=d;return}else{f=ZW(b|0)|0;de(a,f);$W(c[e>>2]|0,b|0,f|0)|0;i=d;return}}function ge(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;f=a+28|0;c[f>>2]=0;c[a+24>>2]=0;if((b|0)==0){de(a,0);i=e;return}do{if((d|0)==-1){g=ZW(b|0)|0;de(a,g)}else{if((d|0)>-1){de(a,d);g=d;break}else{Ya(2792,2808,150,2824)}}}while(0);$W(c[f>>2]|0,b|0,g|0)|0;i=e;return}function he(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=a+28|0;c[g>>2]=0;c[a+24>>2]=0;if((e+d|0)>(c[b+24>>2]|0)){Ya(2848,2808,196,2880)}b=(c[b+28>>2]|0)+d|0;if((b|0)==0){de(a,0);i=f;return}do{if((e|0)==-1){h=ZW(b|0)|0;de(a,h)}else{if((e|0)>-1){de(a,e);h=e;break}else{Ya(2792,2808,150,2824)}}}while(0);$W(c[g>>2]|0,b|0,h|0)|0;i=f;return}function ie(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=a+28|0;c[e>>2]=0;c[a+24>>2]=0;f=c[b+28>>2]|0;b=c[b+24>>2]|0;if((f|0)==0){de(a,0);i=d;return}do{if((b|0)==-1){g=ZW(f|0)|0;de(a,g)}else{if((b|0)>-1){de(a,b);g=b;break}else{Ya(2792,2808,150,2824)}}}while(0);$W(c[e>>2]|0,f|0,g|0)|0;i=d;return}function je(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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.0,D=0,E=0,F=0,G=0,H=0.0;q=i;g=i;i=i+72|0;r=g;l=i;i=i+8|0;f=l;j=i;i=i+8|0;p=j;n=b+24|0;o=b+28|0;m=r+64|0;u=0;v=8;w=ye(8,8)|0;a:while(1){while(1){t=a[d]|0;if(t<<24>>24==123){s=a[d+1|0]|0;t=s<<24>>24;if(s<<24>>24!=123){break}G=c[n>>2]|0;de(b,G+1|0);a[(c[o>>2]|0)+G|0]=123;d=d+2|0;continue}else if(t<<24>>24==0){t=226;break a}s=d+1|0;if(t<<24>>24==125){d=(a[s]|0)==125?d+2|0:s;G=c[n>>2]|0;de(b,G+1|0);a[(c[o>>2]|0)+G|0]=125;continue}while(1){G=a[s]|0;if(G<<24>>24==125|G<<24>>24==123|G<<24>>24==0){break}s=s+1|0}x=s-d|0;t=c[n>>2]|0;if((x|0)==-1){x=ZW(d|0)|0}de(b,x+t|0);$W((c[o>>2]|0)+t|0,d|0,x|0)|0;d=s}if((s+ -48<<24>>24&255)>=10){t=226;break}z=t+ -48|0;s=d+2|0;t=a[s]|0;if((t+ -48<<24>>24&255)<10){while(1){z=(z*10|0)+ -48+(t<<24>>24)|0;s=s+1|0;t=a[s]|0;if((t+ -48<<24>>24&255)<10){}else{break}}}if(t<<24>>24!=58){t=226;break}d=s+1|0;t=(a[d]|0)==45;d=t?s+2|0:d;A=a[d]|0;x=A<<24>>24==48;if((A+ -48<<24>>24&255)<10){y=0;do{y=(y*10|0)+ -48+(A<<24>>24)|0;d=d+1|0;A=a[d]|0;}while((A+ -48<<24>>24&255)<10);s=y;y=65-y|0}else{s=0;y=65}do{if(A<<24>>24==46){d=d+1|0;B=a[d]|0;if((B+ -48<<24>>24&255)<10){A=0}else{A=0;break}while(1){A=(A*10|0)+ -48+(B<<24>>24)|0;d=d+1|0;B=a[d]|0;if((B+ -48<<24>>24&255)<10){}else{break}}}else{A=0}}while(0);F=3016;B=0;while(1){E=ZW(F|0)|0;D=B+1|0;if((vc(d|0,F|0,E|0)|0)==0){break}if((D|0)==23){t=226;break a}else{F=c[2896+(D<<2)>>2]|0;B=D}}if((a[d+E|0]|0)!=125){t=226;break}d=d+(E+1)|0;if((z|0)>(u|0)){t=226;break}if((z|0)==(u|0)){if((u|0)==(v|0)){G=u<<1;v=G;w=Ce(w,G,8)|0}switch(B|0){case 22:case 3:case 2:case 1:case 0:{F=c[e>>2]|0;G=c[F>>2]|0;c[e>>2]=F+4;c[w+(u<<3)>>2]=G;break};case 7:case 6:case 5:case 4:{F=c[e>>2]|0;G=c[F>>2]|0;c[e>>2]=F+4;c[w+(u<<3)>>2]=G;break};case 11:case 10:case 9:case 8:{F=c[e>>2]|0;G=c[F>>2]|0;c[e>>2]=F+4;c[w+(u<<3)>>2]=G;break};case 15:case 14:case 13:case 12:{F=c[e>>2]|0;G=c[F>>2]|0;c[e>>2]=F+4;c[w+(u<<3)>>2]=G;break};case 17:case 18:case 16:{G=c[e>>2]|0;H=+h[G>>3];c[e>>2]=G+8;h[w+(u<<3)>>3]=H;break};case 19:{F=c[e>>2]|0;G=c[F>>2]|0;c[e>>2]=F+4;a[w+(u<<3)|0]=G;break};case 20:{F=c[e>>2]|0;G=c[F>>2]|0;c[e>>2]=F+4;c[w+(u<<3)>>2]=G;break};case 21:{F=c[e>>2]|0;G=c[F>>2]|0;c[e>>2]=F+4;c[w+(u<<3)>>2]=G;break};default:{}}u=u+1|0}C=+h[w+(z<<3)>>3];h[k>>3]=C;z=c[k>>2]|0;b:do{switch(B|0){case 1:{A=(z|0)<0;D=A?0-z|0:z;z=z>>>31;if((D|0)==0){a[m]=48;B=64}else{B=65;while(1){B=B+ -1|0;a[r+B|0]=a[2992+((D|0)%16|0)|0]|0;if((B|0)<=(z|0)|(D+15|0)>>>0<31){break}else{D=(D|0)/16|0}}}do{if(x){E=65-B|0;x=s-z|0;if(!((B|0)>(z|0)&(E|0)<(x|0))){break}D=z-B|0;F=y+z-B|0;y=D>>>0>F>>>0;G=B;do{G=G+ -1|0;a[r+G|0]=48;E=E+1|0;}while((G|0)>(z|0)&(E|0)<(x|0));B=(y?D:F)+B|0}}while(0);if(A){B=B+ -1|0;a[r+B|0]=45}z=r+B|0;c[j>>2]=z;A=65-B|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 2:{A=(z|0)<0;D=A?0-z|0:z;z=z>>>31;if((D|0)==0){a[m]=48;B=64}else{B=65;while(1){B=B+ -1|0;a[r+B|0]=a[2992+((D|0)%8|0)|0]|0;if((B|0)<=(z|0)|(D+7|0)>>>0<15){break}else{D=(D|0)/8|0}}}do{if(x){E=65-B|0;x=s-z|0;if(!((B|0)>(z|0)&(E|0)<(x|0))){break}D=z-B|0;y=y+z-B|0;F=D>>>0>y>>>0;G=B;do{G=G+ -1|0;a[r+G|0]=48;E=E+1|0;}while((G|0)>(z|0)&(E|0)<(x|0));B=(F?D:y)+B|0}}while(0);if(A){B=B+ -1|0;a[r+B|0]=45}z=r+B|0;c[j>>2]=z;A=65-B|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 5:{if((z|0)==0){a[m]=48;y=64}else{A=65;while(1){y=A+ -1|0;a[r+y|0]=a[2992+(z&15)|0]|0;z=z>>>4;if((A|0)<2|(z|0)==0){break}else{A=y}}}do{if(x){D=65-y|0;if(!((y|0)>0&(D|0)<(s|0))){break}x=0-y|0;z=D-s|0;A=z>>>0>>0;B=y;do{B=B+ -1|0;a[r+B|0]=48;D=D+1|0;}while((B|0)>0&(D|0)<(s|0));y=(A?x:z)+y|0}}while(0);z=r+y|0;c[j>>2]=z;A=65-y|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 3:{A=(z|0)<0;D=A?0-z|0:z;z=z>>>31;if((D|0)==0){a[m]=48;B=64}else{B=65;while(1){B=B+ -1|0;a[r+B|0]=a[2992+((D|0)%2|0)|0]|0;if((B|0)<=(z|0)|(D+1|0)>>>0<3){break}else{D=(D|0)/2|0}}}do{if(x){E=65-B|0;D=s-z|0;if(!((B|0)>(z|0)&(E|0)<(D|0))){break}x=z-B|0;y=y+z-B|0;F=x>>>0>y>>>0;G=B;do{G=G+ -1|0;a[r+G|0]=48;E=E+1|0;}while((G|0)>(z|0)&(E|0)<(D|0));B=(F?x:y)+B|0}}while(0);if(A){B=B+ -1|0;a[r+B|0]=45}z=r+B|0;c[j>>2]=z;A=65-B|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 7:{if((z|0)==0){a[m]=48;y=64}else{A=65;while(1){y=A+ -1|0;a[r+y|0]=a[2992+(z&1)|0]|0;z=z>>>1;if((A|0)<2|(z|0)==0){break}else{A=y}}}do{if(x){D=65-y|0;if(!((y|0)>0&(D|0)<(s|0))){break}x=0-y|0;z=D-s|0;A=z>>>0>>0;B=y;do{B=B+ -1|0;a[r+B|0]=48;D=D+1|0;}while((B|0)>0&(D|0)<(s|0));y=(A?x:z)+y|0}}while(0);z=r+y|0;c[j>>2]=z;A=65-y|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 4:{if((z|0)==0){a[m]=48;y=64}else{A=65;while(1){y=A+ -1|0;a[r+y|0]=a[2992+((z>>>0)%10|0)|0]|0;if((A|0)<2|z>>>0<10){break}else{A=y;z=(z>>>0)/10|0}}}do{if(x){D=65-y|0;if(!((y|0)>0&(D|0)<(s|0))){break}x=0-y|0;z=D-s|0;A=z>>>0>>0;B=y;do{B=B+ -1|0;a[r+B|0]=48;D=D+1|0;}while((B|0)>0&(D|0)<(s|0));y=(A?x:z)+y|0}}while(0);z=r+y|0;c[j>>2]=z;A=65-y|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 0:{A=(z|0)<0;D=A?0-z|0:z;z=z>>>31;if((D|0)==0){a[m]=48;B=64}else{B=65;while(1){B=B+ -1|0;a[r+B|0]=a[2992+((D|0)%10|0)|0]|0;if((B|0)<=(z|0)|(D+9|0)>>>0<19){break}else{D=(D|0)/10|0}}}do{if(x){E=65-B|0;x=s-z|0;if(!((B|0)>(z|0)&(E|0)<(x|0))){break}D=z-B|0;F=y+z-B|0;G=D>>>0>F>>>0;y=B;do{y=y+ -1|0;a[r+y|0]=48;E=E+1|0;}while((y|0)>(z|0)&(E|0)<(x|0));B=(G?D:F)+B|0}}while(0);if(A){B=B+ -1|0;a[r+B|0]=45}z=r+B|0;c[j>>2]=z;A=65-B|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 6:{if((z|0)==0){a[m]=48;y=64}else{A=65;while(1){y=A+ -1|0;a[r+y|0]=a[2992+(z&7)|0]|0;z=z>>>3;if((A|0)<2|(z|0)==0){break}else{A=y}}}do{if(x){D=65-y|0;if(!((y|0)>0&(D|0)<(s|0))){break}B=0-y|0;A=D-s|0;z=A>>>0>>0;x=y;do{x=x+ -1|0;a[r+x|0]=48;D=D+1|0;}while((x|0)>0&(D|0)<(s|0));y=(z?B:A)+y|0}}while(0);z=r+y|0;c[j>>2]=z;A=65-y|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 8:{A=(z|0)<0;D=A?0-z|0:z;z=z>>>31;if((D|0)==0){a[m]=48;B=64}else{B=65;while(1){B=B+ -1|0;a[r+B|0]=a[2992+((D|0)%10|0)|0]|0;if((B|0)<=(z|0)|(D+9|0)>>>0<19){break}else{D=(D|0)/10|0}}}do{if(x){E=65-B|0;x=s-z|0;if(!((B|0)>(z|0)&(E|0)<(x|0))){break}D=z-B|0;y=y+z-B|0;F=D>>>0>y>>>0;G=B;do{G=G+ -1|0;a[r+G|0]=48;E=E+1|0;}while((G|0)>(z|0)&(E|0)<(x|0));B=(F?D:y)+B|0}}while(0);if(A){B=B+ -1|0;a[r+B|0]=45}z=r+B|0;c[j>>2]=z;A=65-B|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 12:{if((z|0)==0){a[m]=48;y=64}else{A=65;while(1){y=A+ -1|0;a[r+y|0]=a[2992+((z>>>0)%10|0)|0]|0;if((A|0)<2|z>>>0<10){break}else{A=y;z=(z>>>0)/10|0}}}do{if(x){D=65-y|0;if(!((y|0)>0&(D|0)<(s|0))){break}A=0-y|0;z=D-s|0;x=z>>>0>>0;B=y;do{B=B+ -1|0;a[r+B|0]=48;D=D+1|0;}while((B|0)>0&(D|0)<(s|0));y=(x?A:z)+y|0}}while(0);z=r+y|0;c[j>>2]=z;A=65-y|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 9:{A=(z|0)<0;D=A?0-z|0:z;z=z>>>31;if((D|0)==0){a[m]=48;B=64}else{B=65;while(1){B=B+ -1|0;a[r+B|0]=a[2992+((D|0)%16|0)|0]|0;if((B|0)<=(z|0)|(D+15|0)>>>0<31){break}else{D=(D|0)/16|0}}}do{if(x){G=65-B|0;D=s-z|0;if(!((B|0)>(z|0)&(G|0)<(D|0))){break}x=z-B|0;F=y+z-B|0;E=x>>>0>F>>>0;y=B;do{y=y+ -1|0;a[r+y|0]=48;G=G+1|0;}while((y|0)>(z|0)&(G|0)<(D|0));B=(E?x:F)+B|0}}while(0);if(A){B=B+ -1|0;a[r+B|0]=45}z=r+B|0;c[j>>2]=z;A=65-B|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 10:{A=(z|0)<0;D=A?0-z|0:z;z=z>>>31;if((D|0)==0){a[m]=48;B=64}else{B=65;while(1){B=B+ -1|0;a[r+B|0]=a[2992+((D|0)%8|0)|0]|0;if((B|0)<=(z|0)|(D+7|0)>>>0<15){break}else{D=(D|0)/8|0}}}do{if(x){G=65-B|0;x=s-z|0;if(!((B|0)>(z|0)&(G|0)<(x|0))){break}D=z-B|0;F=y+z-B|0;E=D>>>0>F>>>0;y=B;do{y=y+ -1|0;a[r+y|0]=48;G=G+1|0;}while((y|0)>(z|0)&(G|0)<(x|0));B=(E?D:F)+B|0}}while(0);if(A){B=B+ -1|0;a[r+B|0]=45}z=r+B|0;c[j>>2]=z;A=65-B|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 11:{A=(z|0)<0;D=A?0-z|0:z;z=z>>>31;if((D|0)==0){a[m]=48;B=64}else{B=65;while(1){B=B+ -1|0;a[r+B|0]=a[2992+((D|0)%2|0)|0]|0;if((B|0)<=(z|0)|(D+1|0)>>>0<3){break}else{D=(D|0)/2|0}}}do{if(x){G=65-B|0;x=s-z|0;if(!((B|0)>(z|0)&(G|0)<(x|0))){break}D=z-B|0;F=y+z-B|0;E=D>>>0>F>>>0;y=B;do{y=y+ -1|0;a[r+y|0]=48;G=G+1|0;}while((y|0)>(z|0)&(G|0)<(x|0));B=(E?D:F)+B|0}}while(0);if(A){B=B+ -1|0;a[r+B|0]=45}z=r+B|0;c[j>>2]=z;A=65-B|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 13:{if((z|0)==0){a[m]=48;y=64}else{A=65;while(1){y=A+ -1|0;a[r+y|0]=a[2992+(z&15)|0]|0;z=z>>>4;if((A|0)<2|(z|0)==0){break}else{A=y}}}do{if(x){D=65-y|0;if(!((y|0)>0&(D|0)<(s|0))){break}B=0-y|0;A=D-s|0;z=A>>>0>>0;x=y;do{x=x+ -1|0;a[r+x|0]=48;D=D+1|0;}while((x|0)>0&(D|0)<(s|0));y=(z?B:A)+y|0}}while(0);z=r+y|0;c[j>>2]=z;A=65-y|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 15:{if((z|0)==0){a[m]=48;y=64}else{A=65;while(1){y=A+ -1|0;a[r+y|0]=a[2992+(z&1)|0]|0;z=z>>>1;if((A|0)<2|(z|0)==0){break}else{A=y}}}do{if(x){D=65-y|0;if(!((y|0)>0&(D|0)<(s|0))){break}B=0-y|0;A=D-s|0;z=A>>>0>>0;x=y;do{x=x+ -1|0;a[r+x|0]=48;D=D+1|0;}while((x|0)>0&(D|0)<(s|0));y=(z?B:A)+y|0}}while(0);z=r+y|0;c[j>>2]=z;A=65-y|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 14:{if((z|0)==0){a[m]=48;y=64}else{A=65;while(1){y=A+ -1|0;a[r+y|0]=a[2992+(z&7)|0]|0;z=z>>>3;if((A|0)<2|(z|0)==0){break}else{A=y}}}do{if(x){D=65-y|0;if(!((y|0)>0&(D|0)<(s|0))){break}B=0-y|0;A=D-s|0;z=A>>>0>>0;x=y;do{x=x+ -1|0;a[r+x|0]=48;D=D+1|0;}while((x|0)>0&(D|0)<(s|0));y=(z?B:A)+y|0}}while(0);z=r+y|0;c[j>>2]=z;A=65-y|0;c[l>>2]=A;if(t){t=215}else{t=207}break};case 16:{qe(C,r,65,A,0,p,f);if(t){t=213}else{t=207}break};case 18:{qe(C,r,65,A,1,p,f);if(t){t=213}else{t=207}break};case 17:{H=+S(+C);if(H>=.1){qe(C,r,65,A,1,p,f);if(t){t=213;break b}else{t=207;break b}}if(H<.1&(A|0)<16){while(1){H=H*10.0;A=A+1|0;if(H<.1&(A|0)<16){}else{break}}}qe(C,r,65,A,1,p,f);if(t){t=213}else{t=207}break};case 19:{a[g]=z;c[j>>2]=r;c[l>>2]=1;if(t){t=207}else{A=1;t=214}break};case 20:{c[j>>2]=z;A=ZW(z|0)|0;c[l>>2]=A;if(t){t=207}else{t=215}break};case 21:{x=c[z+28>>2]|0;c[j>>2]=x;A=c[z+24>>2]|0;c[l>>2]=A;if(t){t=207}else{z=x;t=215}break};case 22:{c[j>>2]=r;c[l>>2]=0;if(t){A=0;s=z;t=214}else{s=z;t=207}break};default:{if(t){t=213}else{t=207}}}}while(0);if((t|0)==207){x=c[l>>2]|0;if((x|0)<(s|0)){do{G=c[n>>2]|0;de(b,G+1|0);a[(c[o>>2]|0)+G|0]=32;x=x+1|0;}while((x|0)<(s|0));x=c[l>>2]|0}s=c[j>>2]|0;t=c[n>>2]|0;if((x|0)==-1){x=ZW(s|0)|0}de(b,x+t|0);$W((c[o>>2]|0)+t|0,s|0,x|0)|0;continue}else if((t|0)==213){z=c[j>>2]|0;A=c[l>>2]|0;t=215}else if((t|0)==214){t=0;y=c[n>>2]|0;x=r}do{if((t|0)==215){y=c[n>>2]|0;if((A|0)!=-1){x=z;break}x=z;A=ZW(z|0)|0}}while(0);de(b,A+y|0);$W((c[o>>2]|0)+y|0,x|0,A|0)|0;t=c[l>>2]|0;if((t|0)>=(s|0)){continue}while(1){G=c[n>>2]|0;de(b,G+1|0);a[(c[o>>2]|0)+G|0]=32;t=t+1|0;if((t|0)<(s|0)){}else{continue a}}}if((t|0)==226){Fe(w);i=q;return b|0}return 0}function ke(a){a=a|0;var b=0,d=0;b=i;d=c[a+28>>2]|0;if((d|0)==(a|0)){i=b;return}Fe(d);i=b;return}function le(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=b+28|0;f=c[e>>2]|0;h=b+24|0;g=c[h>>2]|0;do{if((f|0)==0){h=b+24|0;if((g|0)>0){f=b;break}$W(b|0,f|0,g|0)|0;f=b}else{if((g|0)<24){break}j=(g|0)<256?7:255;if((g+1+j&~j|0)==24){break}h=b+24|0;f=b}}while(0);c[e>>2]=f;c[h>>2]=0;a[f]=0;i=d;return b|0}function me(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;f=c[b+24>>2]|0;de(b,f+1|0);a[(c[b+28>>2]|0)+f|0]=d;i=e;return b|0}function ne(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=c[a+24>>2]|0;if((d|0)==-1){d=ZW(b|0)|0}de(a,f+d|0);$W((c[a+28>>2]|0)+f|0,b|0,d|0)|0;i=e;return a|0}function oe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=c[b+28>>2]|0;f=c[b+24>>2]|0;b=c[a+24>>2]|0;if((f|0)==-1){f=ZW(e|0)|0}de(a,f+b|0);$W((c[a+28>>2]|0)+b|0,e|0,f|0)|0;i=d;return a|0}function pe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=i;i=i+16|0;c[f>>2]=d;je(a,b,f)|0;i=e;return a|0}function qe(b,d,e,f,g,h,j){b=+b;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0.0,p=0;k=i;l=b<0.0;if(l){b=-0.0-b}b=+R(+(b*+U(10.0,+(+(f|0)))+.5));g=g^1;p=(e|0)>1;if((f|0)>0&p){o=b;n=e;m=0;while(1){b=+R(+((o+.5)*.1));p=~~+R(+(o-b*10.0+.5));if(!((p|0)==0&(g^1))){n=n+ -1|0;a[d+n|0]=p+48;g=1}m=m+1|0;p=(n|0)>1;if((m|0)<(f|0)&p){o=b}else{break}}}else{n=e}if(p&g){n=n+ -1|0;a[d+n|0]=46}if((n|0)>1){while(1){o=+R(+((b+.5)*.1));n=n+ -1|0;a[d+n|0]=~~+R(+(b-o*10.0+.5))+48;if((n|0)>1&o!=0.0){b=o}else{break}}}if(!l){m=d+n|0;p=h;c[p>>2]=m;n=e-n|0;p=j;c[p>>2]=n;i=k;return}n=n+ -1|0;a[d+n|0]=45;m=d+n|0;p=h;c[p>>2]=m;n=e-n|0;p=j;c[p>>2]=n;i=k;return}function re(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;if((e|0)<=0){i=f;return b|0}g=b+24|0;h=c[g>>2]|0;e=(e+d|0)>(h|0)?h-d|0:e;j=h-e|0;if((j|0)>=(d|0)){h=b+28|0;while(1){j=c[h>>2]|0;a[j+d|0]=a[j+(d+e)|0]|0;j=(c[g>>2]|0)-e|0;if((d|0)<(j|0)){d=d+1|0}else{break}}}de(b,j);i=f;return b|0}function se(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;e=c[b+24>>2]|0;f=c[d+24>>2]|0;a:do{if((e|0)>0&(f|0)>0){h=0;b=c[b+28>>2]|0;d=c[d+28>>2]|0;while(1){j=a[b]|0;k=a[d]|0;if(j<<24>>24!=k<<24>>24){break}h=h+1|0;if((h|0)<(e|0)&(h|0)<(f|0)){b=b+1|0;d=d+1|0}else{break a}}k=(j<<24>>24)-(k<<24>>24)|0;i=g;return k|0}}while(0);k=e-f|0;i=g;return k|0}function te(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;g=c[b+24>>2]|0;j=a[d]|0;h=j<<24>>24==0;a:do{if((g|0)>0){k=0;b=c[b+28>>2]|0;while(1){if(h){g=1;f=8;break}h=a[b]|0;if(h<<24>>24!=j<<24>>24){break}k=k+1|0;d=d+1|0;j=a[d]|0;h=j<<24>>24==0;if((k|0)<(g|0)){b=b+1|0}else{break a}}if((f|0)==8){i=e;return g|0}d=(h<<24>>24)-(j<<24>>24)|0;i=e;return d|0}}while(0);d=(h^1)<<31>>31;i=e;return d|0}function ue(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;h=c[b+24>>2]|0;a:do{if((h|0)>0){g=0;b=c[b+28>>2]|0;while(1){k=a[d]|0;if(!(k<<24>>24!=0&(g|0)<(e|0))){h=4;break}j=a[b]|0;if(j<<24>>24!=k<<24>>24){h=6;break}g=g+1|0;d=d+1|0;if((g|0)<(h|0)){b=b+1|0}else{break a}}if((h|0)==4){k=(g|0)!=(e|0)|0;i=f;return k|0}else if((h|0)==6){k=(j<<24>>24)-(k<<24>>24)|0;i=f;return k|0}}else{g=0}}while(0);e=(g|0)==(e|0);if(e){k=e&1^1;i=f;return k|0}k=((a[d]|0)!=0)<<31>>31;i=f;return k|0}function ve(b){b=b|0;var d=0;d=i;b=c[b+28>>2]|0;if((a[b]|0)!=-2){b=0;i=d;return b|0}b=(a[b+1|0]|0)==-1;i=d;return b|0}function we(a){a=a|0;var b=0;b=i;if((a|0)==0){a=0;i=b;return a|0}a=AW(a)|0;if((a|0)==0){Rb(3232,14,1,c[p>>2]|0)|0;Yb(1)}else{i=b;return a|0}return 0}function xe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;f=(a|0)!=0;do{if((b|0)==0){if(!f){e=0;break}BW(a);e=0}else{if(f){a=CW(a,b)|0}else{a=AW(b)|0}if((a|0)!=0){e=a;break}Rb(3232,14,1,c[p>>2]|0)|0;Yb(1)}}while(0);i=d;return e|0}function ye(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((a|0)==0){e=0;i=d;return e|0}e=da(b,a)|0;do{if(!((b|0)<1|(a|0)<0)){if((2147483647/(b|0)|0|0)<=(a|0)){break}if((e|0)==0){e=0;i=d;return e|0}b=AW(e)|0;if((b|0)==0){Rb(3232,14,1,c[p>>2]|0)|0;Yb(1)}else{e=b;i=d;return e|0}}}while(0);Rb(3200,29,1,c[p>>2]|0)|0;Yb(1);return 0}function ze(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;a:do{if((a|0)==0){b=0}else{e=da(b,a)|0;do{if(!((b|0)<1|(a|0)<0)){if((2147483647/(b|0)|0|0)<=(a|0)){break}if((e|0)==0){b=0;break a}b=AW(e)|0;if((b|0)!=0){break a}Rb(3232,14,1,c[p>>2]|0)|0;b=0;break a}}while(0);Rb(3200,29,1,c[p>>2]|0)|0;b=0}}while(0);i=d;return b|0}function Ae(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;a=Be(a,b,c,0)|0;i=d;return a|0}function Be(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=da(b,a)|0;do{if(!((b|0)<1|(a|0)<0)){if((2147483647/(b|0)|0|0)<=(a|0)){break}if((g|0)==0){a=0;i=f;return a|0}b=da(g,d)|0;do{if(!((d|0)<1|(g|0)<0)){if((2147483647/(d|0)|0|0)<=(g|0)){break}if((b|0)==0){a=0;i=f;return a|0}g=AW(b)|0;if((g|0)!=0){a=g;i=f;return a|0}Rb(3232,14,1,c[p>>2]|0)|0;if(e){a=0;i=f;return a|0}else{Yb(1)}}}while(0);Rb(3200,29,1,c[p>>2]|0)|0;if(e){a=0;i=f;return a|0}else{Yb(1)}}}while(0);Rb(3200,29,1,c[p>>2]|0)|0;if(e){a=0;i=f;return a|0}else{Yb(1)}return 0}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;a=De(a,b,c,0)|0;i=d;return a|0}function De(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;a:do{if((b|0)==0){if((a|0)==0){g=0;break}BW(a);g=0}else{g=da(d,b)|0;do{if(!((d|0)<1|(b|0)<0)){if((2147483647/(d|0)|0|0)<=(b|0)){break}d=(a|0)!=0;if((g|0)==0){if(!d){g=0;break a}BW(a);g=0;break a}if(d){g=CW(a,g)|0}else{g=AW(g)|0}if((g|0)!=0){break a}Rb(3232,14,1,c[p>>2]|0)|0;if(e){g=0;break a}Yb(1)}}while(0);Rb(3200,29,1,c[p>>2]|0)|0;if(!e){Yb(1)}if((a|0)==0){g=0;break}BW(a);g=0}}while(0);i=f;return g|0}function Ee(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;a=De(a,b,c,1)|0;i=d;return a|0}function Fe(a){a=a|0;var b=0;b=i;if((a|0)!=0){BW(a)}i=b;return}function Ge(a){a=a|0;var b=0,d=0,e=0;b=i;e=(ZW(a|0)|0)+1|0;do{if((e|0)==0){d=0}else{e=AW(e)|0;if((e|0)!=0){d=e;break}Rb(3232,14,1,c[p>>2]|0)|0;Yb(1)}}while(0);eX(d|0,a|0)|0;i=b;return d|0}function He(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=d+1|0;do{if((g|0)==0){f=0}else{g=AW(g)|0;if((g|0)!=0){f=g;break}Rb(3232,14,1,c[p>>2]|0)|0;Yb(1)}}while(0);a[f+d|0]=0;$W(f|0,b|0,d|0)|0;i=e;return f|0}function Ie(a){a=a|0;var b=0.0,c=0;c=i;b=+Je(a,0);i=c;return+b}function Je(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;f=i;g=i;i=i+8|0;j=g;c[g>>2]=0;k=c[(Jb()|0)>>2]|0;h=ZW(k|0)|0;if((a[k]|0)==46){if((a[k+1|0]|0)==0){e=27}else{l=b;e=3}}else{l=b;e=3}do{if((e|0)==3){a:while(1){e=0;n=a[l]|0;switch(n<<24>>24){case 11:case 9:case 13:case 10:case 12:case 32:{break};case 45:case 43:{e=5;break a};default:{break a}}l=l+1|0;e=3}if((e|0)==5){l=l+1|0;n=a[l]|0}if(!((n+ -48<<24>>24&255)<10|n<<24>>24==46)){e=27;break}while(1){m=l+1|0;if((n+ -48<<24>>24&255)>=10){break}n=a[m]|0;l=m}o=n<<24>>24==46;n=o?m:l;while(1){p=a[n]|0;m=n+1|0;if((p+ -48<<24>>24&255)<10){n=m}else{break}}l=o?l:0;if(p<<24>>24==69|p<<24>>24==101){p=a[m]|0}else{m=n}if(p<<24>>24==45|p<<24>>24==43){o=m+1|0}else{o=m}while(1){if(((a[o]|0)+ -48<<24>>24&255)>=10){break}o=o+1|0}if((l|0)==0){if((o|0)==0){e=27;break}k=o-b|0;h=AW(k+1|0)|0;$W(h|0,b|0,k|0)|0;a[h+k|0]=0;k=Pc()|0;c[k>>2]=0;q=+UW(h,j);j=c[k>>2]|0;k=c[g>>2]|0;if((k|0)!=0){c[g>>2]=b+(k-h)}BW(h);break}n=AW(1-b+h+o|0)|0;m=l-b|0;$W(n|0,b|0,m|0)|0;$W(n+m|0,k|0,h|0)|0;k=m+h|0;l=l+1|0;p=o-l|0;$W(n+k|0,l|0,p|0)|0;a[n+(p+k)|0]=0;k=Pc()|0;c[k>>2]=0;q=+UW(n,j);j=c[k>>2]|0;k=c[g>>2]|0;do{if((k|0)!=0){k=k-n|0;if((k|0)>(m|0)){c[g>>2]=b+(1-h+k);break}else{c[g>>2]=b+k;break}}}while(0);BW(n)}}while(0);if((e|0)==27){p=Pc()|0;c[p>>2]=0;q=+UW(b,j);j=c[p>>2]|0}if((d|0)==0){p=Pc()|0;c[p>>2]=j;i=f;return+q}c[d>>2]=c[g>>2];p=Pc()|0;c[p>>2]=j;i=f;return+q}function Ke(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;j=i;c[a>>2]=b;k=a+4|0;c[k>>2]=d;c[a+16>>2]=f;c[a+8>>2]=e;a:do{switch(f|0){case 4:{if((b+ -1|0)>>>0<536870911){b=b<<2;c[a+12>>2]=b;f=16;break a}else{c[a+12>>2]=-1;f=15;break a}break};case 0:{if((b|0)>0){b=b+7>>3;c[a+12>>2]=b;f=16;break a}else{c[a+12>>2]=-1;f=15;break a}break};case 3:case 2:{if((b+ -1|0)>>>0<715827882){b=b*3|0;c[a+12>>2]=b;f=16;break a}else{c[a+12>>2]=-1;f=15;break a}break};case 1:{f=a+12|0;if((b|0)>0){c[f>>2]=b;f=16;break a}else{c[f>>2]=-1;f=15;break a}break};default:{b=c[a+12>>2]|0;f=16}}}while(0);do{if((f|0)==15){e=a+12|0;b=-1}else if((f|0)==16){f=a+12|0;if((b|0)<=0){e=f;break}b=b+ -1+e|0;b=b-((b|0)%(e|0)|0)|0;c[f>>2]=b;e=f}}while(0);f=ye(b,d)|0;d=a+20|0;c[d>>2]=f;if(!h){b=c[e>>2]|0;c[d>>2]=f+(da((c[k>>2]|0)+ -1|0,b)|0);c[e>>2]=0-b}if(g){c[a+24>>2]=ye(c[a>>2]|0,c[k>>2]|0)|0;i=j;return}else{c[a+24>>2]=0;i=j;return}}function Le(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a+12>>2]|0;e=c[a+20>>2]|0;if((d|0)<0){Fe(e+(da((c[a+4>>2]|0)+ -1|0,d)|0)|0)}else{Fe(e)}Fe(c[a+24>>2]|0);i=b;return}function Me(a,b){a=a|0;b=b|0;var c=0;c=i;b=yc(b|0,3248)|0;if((b|0)==0){b=5;i=c;return b|0}Ne(a,b)|0;mc(b|0)|0;b=0;i=c;return b|0}function Ne(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;p=i;i=i+8|0;n=p;j=i;i=i+8|0;k=j;q=i;i=i+8|0;h=q;l=i;i=i+8|0;m=l;g=i;i=i+8|0;o=g;switch(c[a+16>>2]|0){case 1:{f=a+4|0;k=c[f>>2]|0;c[l>>2]=c[a>>2];c[m+4>>2]=k;Gc(b|0,3272,m|0)|0;k=c[f>>2]|0;if((k|0)<=0){i=e;return 0}g=a+12|0;l=c[a>>2]|0;h=c[a+20>>2]|0;j=0;while(1){if((l|0)>0){k=h;m=0;while(1){sc(d[k]|0|0,b|0)|0;m=m+1|0;l=c[a>>2]|0;if((m|0)<(l|0)){k=k+1|0}else{break}}k=c[f>>2]|0}j=j+1|0;if((j|0)<(k|0)){h=h+(c[g>>2]|0)|0}else{break}}i=e;return 0};case 3:{f=a+4|0;k=c[f>>2]|0;c[p>>2]=c[a>>2];c[n+4>>2]=k;Gc(b|0,3288,n|0)|0;k=c[f>>2]|0;if((k|0)<=0){i=e;return 0}g=a+12|0;l=c[a>>2]|0;h=c[a+20>>2]|0;j=0;while(1){if((l|0)>0){k=h;m=0;while(1){sc(d[k+2|0]|0|0,b|0)|0;sc(d[k+1|0]|0|0,b|0)|0;sc(d[k]|0|0,b|0)|0;m=m+1|0;l=c[a>>2]|0;if((m|0)<(l|0)){k=k+3|0}else{break}}k=c[f>>2]|0}j=j+1|0;if((j|0)<(k|0)){h=h+(c[g>>2]|0)|0}else{break}}i=e;return 0};case 0:{f=a+4|0;k=c[f>>2]|0;c[g>>2]=c[a>>2];c[o+4>>2]=k;Gc(b|0,3256,o|0)|0;k=c[f>>2]|0;if((k|0)<=0){i=e;return 0}g=a+12|0;l=c[a>>2]|0;h=c[a+20>>2]|0;j=0;while(1){if((l|0)>0){k=h;m=0;while(1){sc((d[k]|0)^255|0,b|0)|0;m=m+8|0;l=c[a>>2]|0;if((m|0)<(l|0)){k=k+1|0}else{break}}k=c[f>>2]|0}j=j+1|0;if((j|0)<(k|0)){h=h+(c[g>>2]|0)|0}else{break}}i=e;return 0};case 4:{f=a+4|0;q=c[f>>2]|0;c[j>>2]=c[a>>2];c[k+4>>2]=q;Gc(b|0,3288,k|0)|0;k=c[f>>2]|0;if((k|0)<=0){i=e;return 0}g=a+12|0;l=c[a>>2]|0;h=c[a+20>>2]|0;j=0;while(1){if((l|0)>0){k=h;m=0;while(1){sc(d[k+2|0]|0|0,b|0)|0;sc(d[k+1|0]|0|0,b|0)|0;sc(d[k]|0|0,b|0)|0;m=m+1|0;l=c[a>>2]|0;if((m|0)<(l|0)){k=k+4|0}else{break}}k=c[f>>2]|0}j=j+1|0;if((j|0)<(k|0)){h=h+(c[g>>2]|0)|0}else{break}}i=e;return 0};case 2:{f=a+4|0;k=c[f>>2]|0;c[q>>2]=c[a>>2];c[h+4>>2]=k;Gc(b|0,3288,h|0)|0;k=c[f>>2]|0;if((k|0)<=0){i=e;return 0}g=a+12|0;l=c[a>>2]|0;h=c[a+20>>2]|0;j=0;while(1){if((l|0)>0){k=h;m=0;while(1){sc(d[k]|0|0,b|0)|0;sc(d[k+1|0]|0|0,b|0)|0;sc(d[k+2|0]|0|0,b|0)|0;m=m+1|0;l=c[a>>2]|0;if((m|0)<(l|0)){k=k+3|0}else{break}}k=c[f>>2]|0}j=j+1|0;if((j|0)<(k|0)){h=h+(c[g>>2]|0)|0}else{break}}i=e;return 0};default:{i=e;return 0}}return 0}function Oe(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;if((f|0)<0){i=h;return}if((c[b+4>>2]|0)<=(f|0)|(e|0)<0){i=h;return}if((c[b>>2]|0)<=(e|0)){i=h;return}switch(c[b+16>>2]|0){case 1:{a[g]=a[(da(c[b+12>>2]|0,f)|0)+e+(c[b+20>>2]|0)|0]|0;i=h;return};case 2:{e=(da(c[b+12>>2]|0,f)|0)+(e*3|0)|0;f=c[b+20>>2]|0;a[g]=a[f+e|0]|0;a[g+1|0]=a[f+(e+1)|0]|0;a[g+2|0]=a[f+(e+2)|0]|0;i=h;return};case 4:{e=(da(c[b+12>>2]|0,f)|0)+(e<<2)|0;f=c[b+20>>2]|0;a[g]=a[f+(e+2)|0]|0;a[g+1|0]=a[f+(e+1)|0]|0;a[g+2|0]=a[f+e|0]|0;a[g+3|0]=a[f+(e+3)|0]|0;i=h;return};case 3:{e=(da(c[b+12>>2]|0,f)|0)+(e*3|0)|0;f=c[b+20>>2]|0;a[g]=a[f+(e+2)|0]|0;a[g+1|0]=a[f+(e+1)|0]|0;a[g+2|0]=a[f+e|0]|0;i=h;return};case 0:{a[g]=(((d[(da(c[b+12>>2]|0,f)|0)+(e>>3)+(c[b+20>>2]|0)|0]|0)&128>>>(e&7)|0)!=0)<<31>>31;i=h;return};default:{i=h;return}}}function Pe(b,d,e){b=b|0;d=d|0;e=e|0;e=(da(c[b>>2]|0,e)|0)+d|0;i=i;return a[(c[b+24>>2]|0)+e|0]|0}function Qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;e=i;i=i+16|0;f=e;h=c[834]|0;do{if((h|0)!=0){if(!(wf(h)|0)){break}i=g;return}}while(0);c[e>>2]=d;Gd[c[826]&255](a,b,f);i=g;return}function Re(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=i;i=i+8|0;f=c[p>>2]|0;if((a|0)>-1){c[g>>2]=a;Gc(f|0,3312,g|0)|0}else{Rb(3328,7,1,f|0)|0}bc(f|0,b|0,d|0)|0;sc(10,f|0)|0;Fc(f|0)|0;i=e;return}function Se(a){a=a|0;var b=0;b=i;Te(a);HW(a);i=b;return}function Te(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=3352;d=c[a+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+8>>2]|0;if((d|0)==0){a=c[a+12>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}else if((d|0)==1){a=c[a+12>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}else{i=b;return}}function Ue(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0;e=i;c[b+224>>2]=d;ad(b+152|0,0)|0;ad(b+176|0,0)|0;ad(b+200|0,0)|0;wt();d=FW(12)|0;Ef(d);c[b>>2]=d;d=255;while(1){f=c[134928+(d<<2)>>2]|0;if((f|0)!=0){Gf(c[b>>2]|0,f,d)}if((d|0)>0){d=d+ -1|0}else{break}}c[b+4>>2]=Co(Bo()|0,3360)|0;j=FW(12)|0;Ef(j);f=b+8|0;c[f>>2]=j;j=FW(16)|0;jo(j,1);c[b+12>>2]=j;j=FW(16)|0;jo(j,1);c[b+16>>2]=j;j=FW(16)|0;jo(j,0);d=b+20|0;c[d>>2]=j;j=FW(16)|0;jo(j,1);c[b+24>>2]=j;j=FW(16)|0;jo(j,1);c[b+28>>2]=j;j=FW(16)|0;wo(j);c[b+32>>2]=j;j=FW(16)|0;jo(j,0);c[b+36>>2]=j;a[b+40|0]=0;a[b+41|0]=1;a[b+42|0]=1;c[b+44>>2]=2;j=FW(16)|0;jo(j,0);c[b+48>>2]=j;j=FW(16)|0;wo(j);c[b+52>>2]=j;j=FW(16)|0;wo(j);c[b+56>>2]=j;bX(b+60|0,1,5)|0;a[b+65|0]=0;a[b+66|0]=0;a[b+67|0]=0;j=FW(32)|0;fe(j,3368);c[b+68>>2]=j;c[b+72>>2]=0;a[b+76|0]=1;a[b+77|0]=0;j=FW(16)|0;wo(j);c[b+80>>2]=j;j=b+84|0;a[j]=16843009;a[j+1|0]=65793;a[j+2|0]=257;a[j+3|0]=1;c[b+88>>2]=0;c[b+92>>2]=-1;c[b+96>>2]=-1;h[b+104>>3]=1.0;h[b+112>>3]=0.0;h[b+120>>3]=1.0;a[b+128|0]=1;j=b+129|0;a[j]=0;a[j+1|0]=0;a[j+2|0]=0;a[j+3|0]=0;j=FW(8)|0;yu(j,4);c[b+136>>2]=j;j=FW(8)|0;yu(j,4);c[b+140>>2]=j;j=FW(16)|0;Xm(j);c[b+144>>2]=j;j=FW(16)|0;Lt(j);c[b+148>>2]=j;j=18144;g=0;do{Gf(c[f>>2]|0,j,c[3376+(g<<3)>>2]|0);g=g+1|0;j=c[3380+(g<<3)>>2]|0;}while((j|0)!=0);j=FW(56)|0;Tm(j,12048,0,12056,58);lo(c[d>>2]|0,c[j>>2]|0,j);j=FW(56)|0;Tm(j,12984,0,12992,129);lo(c[d>>2]|0,c[j>>2]|0,j);j=FW(56)|0;Tm(j,15056,0,15064,121);lo(c[d>>2]|0,c[j>>2]|0,j);j=FW(56)|0;Tm(j,17e3,0,17016,30);lo(c[d>>2]|0,c[j>>2]|0,j);j=FW(56)|0;Um(j,3368,1,72);lo(c[d>>2]|0,c[j>>2]|0,j);j=FW(56)|0;Um(j,17496,1,73);lo(c[d>>2]|0,c[j>>2]|0,j);Xe(b);i=e;return}function Ve(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=i;if(b>>>0<128){if((d|0)<1){d=0;i=e;return d|0}a[c]=b;d=1;i=e;return d|0}if(b>>>0<2048){if((d|0)<2){d=0;i=e;return d|0}a[c]=(b>>>6)+192;a[c+1|0]=b&63|128;d=2;i=e;return d|0}if(b>>>0<65536){if((d|0)<3){d=0;i=e;return d|0}a[c]=(b>>>12)+224;a[c+1|0]=b>>>6&63|128;a[c+2|0]=b&63|128;d=3;i=e;return d|0}else{if(b>>>0>1114111|(d|0)<4){d=0;i=e;return d|0}a[c]=(b>>>18)+240;a[c+1|0]=b>>>12&63|128;a[c+2|0]=b>>>6&63|128;a[c+3|0]=b&63|128;d=4;i=e;return d|0}return 0}function We(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=i;if(b>>>0<65536){if((d|0)<2){d=0;i=e;return d|0}a[c]=b>>>8;a[c+1|0]=b;d=2;i=e;return d|0}else{if(b>>>0>1114111|(d|0)<4){d=0;i=e;return d|0}d=((b+ -65536|0)>>>10)+55296|0;a[c]=d>>>8;a[c+1|0]=d;a[c+2|0]=b>>>8&3|220;a[c+3|0]=b;d=4;i=e;return d|0}return 0}function Xe(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;g=i;i=i+8|0;f=g;l=i;i=i+8|0;k=l;m=i;i=i+8|0;n=m;o=i;i=i+8|0;e=c[b+224>>2]|0;j=(e|0)==0?17504:e;h=(ZW(j|0)|0)+15|0;e=GW(h)|0;c[o>>2]=j;hc(e|0,h|0,17536,o|0)|0;o=FW(12)|0;Go(o,e,1);p=Io(o)|0;if((p|0)!=0){do{if((a[p+8|0]&1)==0){Ye(b,c[p+4>>2]|0)}Fo(p);HW(p);p=Io(o)|0;}while((p|0)!=0)}if((o|0)!=0){Ho(o);HW(o)}c[m>>2]=j;hc(e|0,h|0,17560,n|0)|0;m=FW(12)|0;Go(m,e,0);n=Io(m)|0;if((n|0)!=0){do{Ze(b,c[n>>2]|0,c[n+4>>2]|0);Fo(n);HW(n);n=Io(m)|0;}while((n|0)!=0)}if((m|0)!=0){Ho(m);HW(m)}c[l>>2]=j;hc(e|0,h|0,17576,k|0)|0;k=FW(12)|0;Go(k,e,0);l=Io(k)|0;if((l|0)!=0){do{_e(b,c[l>>2]|0,c[l+4>>2]|0);Fo(l);HW(l);l=Io(k)|0;}while((l|0)!=0)}if((k|0)!=0){Ho(k);HW(k)}c[g>>2]=j;hc(e|0,h|0,17592,f|0)|0;f=FW(12)|0;Go(f,e,0);h=Io(f)|0;if((h|0)!=0){g=b+32|0;do{n=h+4|0;$e(b,c[h>>2]|0,c[n>>2]|0);o=c[g>>2]|0;n=c[n>>2]|0;p=FW(32)|0;ie(p,n);yo(o,p);Fo(h);HW(h);h=Io(f)|0;}while((h|0)!=0)}if((f|0)!=0){Ho(f);HW(f)}if((e|0)==0){i=d;return}IW(e);i=d;return}function Ye(a,b){a=a|0;b=b|0;var 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;l=i;h=i;i=i+8|0;d=h;e=i;i=i+8|0;j=e;o=i;i=i+8|0;f=i;i=i+256|0;g=i;i=i+8|0;k=g;m=i;i=i+8|0;b=b+28|0;n=yc(c[b>>2]|0,17600)|0;if((n|0)==0){c[o>>2]=c[b>>2];Qe(-1,17608,o);i=l;return}if((Do(f,256,n)|0)!=0){q=a+8|0;p=1;while(1){o=Mb(f|0,17648,m|0)|0;a=Mb(0,17648,m|0)|0;if((o|0)==0|(a|0)==0){c[h>>2]=c[b>>2];c[d+4>>2]=p;Qe(-1,17664,d)}else{c[e>>2]=k;Hc(o|0,17656,j|0)|0;Gf(c[q>>2]|0,a,c[g>>2]|0)}if((Do(f,256,n)|0)==0){break}else{p=p+1|0}}}mc(n|0)|0;i=l;return}function Ze(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;a=a+12|0;f=qo(c[a>>2]|0,b)|0;if((f|0)!=0){ke(f);HW(f)}g=c[a>>2]|0;a=FW(32)|0;ie(a,b);f=FW(32)|0;ie(f,d);lo(g,a,f);i=e;return}function _e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;a=a+24|0;f=qo(c[a>>2]|0,b)|0;if((f|0)!=0){ke(f);HW(f)}g=c[a>>2]|0;a=FW(32)|0;ie(a,b);f=FW(32)|0;ie(f,d);lo(g,a,f);i=e;return}function $e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;a=a+28|0;f=oo(c[a>>2]|0,b)|0;if((f|0)==0){f=FW(16)|0;wo(f);g=c[a>>2]|0;a=FW(32)|0;ie(a,b);lo(g,a,f)}g=FW(32)|0;ie(g,d);yo(f,g);i=e;return}function af(a){a=a|0;var b=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;b=i;E=i;i=i+8|0;F=i;i=i+8|0;D=i;i=i+8|0;C=D;A=i;i=i+8|0;z=i;i=i+8|0;y=i;i=i+8|0;B=y;x=i;i=i+8|0;w=i;i=i+8|0;u=i;i=i+8|0;v=u;r=i;i=i+8|0;s=i;i=i+8|0;q=i;i=i+8|0;t=q;n=i;i=i+8|0;m=i;i=i+8|0;o=i;i=i+8|0;p=o;h=i;i=i+8|0;j=i;i=i+8|0;l=i;i=i+8|0;k=l;g=i;i=i+8|0;f=i;i=i+8|0;d=i;i=i+8|0;e=d;xt();G=c[a>>2]|0;if((G|0)!=0){Ff(G);HW(G)}G=c[a+4>>2]|0;if((G|0)!=0){ke(G);HW(G)}G=c[a+8>>2]|0;if((G|0)!=0){Ff(G);HW(G)}G=c[a+12>>2]|0;to(G,E);if(uo(G,E,F,C)|0){do{H=c[D>>2]|0;if((H|0)!=0){ke(H);HW(H)}}while(uo(G,E,F,C)|0)}if((G|0)!=0){ko(G);HW(G)}C=c[a+16>>2]|0;to(C,A);if(uo(C,A,z,B)|0){do{D=c[y>>2]|0;if((D|0)!=0){ke(D);HW(D)}}while(uo(C,A,z,B)|0)}if((C|0)!=0){ko(C);HW(C)}y=c[a+20>>2]|0;to(y,x);if(uo(y,x,w,v)|0){do{z=c[u>>2]|0;if((z|0)!=0){Vm(z);HW(z)}}while(uo(y,x,w,v)|0)}if((y|0)!=0){ko(y);HW(y)}v=c[a+24>>2]|0;to(v,r);if(uo(v,r,s,t)|0){do{u=c[q>>2]|0;if((u|0)!=0){ke(u);HW(u)}}while(uo(v,r,s,t)|0)}if((v|0)!=0){ko(v);HW(v)}q=c[a+32>>2]|0;r=q+8|0;t=c[r>>2]|0;if((t|0)>0){s=0;do{u=c[(c[q>>2]|0)+(s<<2)>>2]|0;if((u|0)!=0){ke(u);HW(u);t=c[r>>2]|0}s=s+1|0;}while((s|0)<(t|0))}if((q|0)!=0){xo(q);HW(q)}q=c[a+36>>2]|0;to(q,n);if(uo(q,n,m,p)|0){do{r=c[o>>2]|0;if((r|0)!=0){fd[c[(c[r>>2]|0)+4>>2]&511](r)}}while(uo(q,n,m,p)|0)}if((q|0)!=0){ko(q);HW(q)}m=c[a+48>>2]|0;to(m,h);if(uo(m,h,j,k)|0){do{n=c[l>>2]|0;if((n|0)!=0){o=c[n>>2]|0;if((o|0)!=0){ke(o);HW(o)}o=c[n+8>>2]|0;if((o|0)!=0){ke(o);HW(o)}o=c[n+12>>2]|0;if((o|0)!=0){ke(o);HW(o)}HW(n)}}while(uo(m,h,j,k)|0)}if((m|0)!=0){ko(m);HW(m)}h=c[a+52>>2]|0;j=h+8|0;m=c[j>>2]|0;if((m|0)>0){k=0;do{l=c[(c[h>>2]|0)+(k<<2)>>2]|0;if((l|0)!=0){m=c[l>>2]|0;if((m|0)!=0){ke(m);HW(m)}m=c[l+8>>2]|0;if((m|0)!=0){ke(m);HW(m)}m=c[l+12>>2]|0;if((m|0)!=0){ke(m);HW(m)}HW(l);m=c[j>>2]|0}k=k+1|0;}while((k|0)<(m|0))}if((h|0)!=0){xo(h);HW(h)}h=c[a+56>>2]|0;j=h+8|0;m=c[j>>2]|0;if((m|0)>0){k=0;do{l=c[(c[h>>2]|0)+(k<<2)>>2]|0;if((l|0)!=0){m=c[l>>2]|0;if((m|0)!=0){ke(m);HW(m)}m=c[l+8>>2]|0;if((m|0)!=0){ke(m);HW(m)}m=c[l+12>>2]|0;if((m|0)!=0){ke(m);HW(m)}HW(l);m=c[j>>2]|0}k=k+1|0;}while((k|0)<(m|0))}if((h|0)!=0){xo(h);HW(h)}h=c[a+68>>2]|0;if((h|0)!=0){ke(h);HW(h)}h=c[a+80>>2]|0;j=h+8|0;k=c[j>>2]|0;if((k|0)>0){l=0;do{m=c[(c[h>>2]|0)+(l<<2)>>2]|0;if((m|0)!=0){ke(m);HW(m);k=c[j>>2]|0}l=l+1|0;}while((l|0)<(k|0))}if((h|0)!=0){xo(h);HW(h)}k=a+28|0;to(c[k>>2]|0,g);if(uo(c[k>>2]|0,g,f,e)|0){do{h=c[d>>2]|0;j=h+8|0;l=c[j>>2]|0;if((l|0)>0){m=0;do{n=c[(c[h>>2]|0)+(m<<2)>>2]|0;if((n|0)!=0){ke(n);HW(n);l=c[j>>2]|0}m=m+1|0;}while((m|0)<(l|0))}if((h|0)!=0){xo(h);HW(h)}}while(uo(c[k>>2]|0,g,f,e)|0)}d=c[k>>2]|0;if((d|0)!=0){ko(d);HW(d)}d=c[a+136>>2]|0;if((d|0)!=0){zu(d);HW(d)}d=c[a+140>>2]|0;if((d|0)!=0){zu(d);HW(d)}d=c[a+144>>2]|0;if((d|0)!=0){Ym(d);HW(d)}d=c[a+148>>2]|0;if((d|0)==0){H=a+152|0;kc(H|0)|0;H=a+176|0;kc(H|0)|0;H=a+200|0;kc(H|0)|0;i=b;return}Mt(d);HW(d);H=a+152|0;kc(H|0)|0;H=a+176|0;kc(H|0)|0;H=a+200|0;kc(H|0)|0;i=b;return}function bf(a,b){a=a|0;b=b|0;var d=0;d=i;a=Hf(c[a>>2]|0,b)|0;i=d;return a|0}function cf(a,b){a=a|0;b=b|0;var d=0;d=i;a=Hf(c[a+8>>2]|0,b)|0;i=d;return a|0}function df(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;e=a+152|0;Ub(e|0)|0;b=oo(c[a+28>>2]|0,b)|0;if((b|0)==0){Mc(e|0)|0;j=0;i=f;return j|0}a=b+8|0;a:do{if((c[a>>2]|0)>0){h=d+28|0;j=0;while(1){g=c[(c[b>>2]|0)+(j<<2)>>2]|0;d=FW(32)|0;ie(d,g);d=Co(d,c[h>>2]|0)|0;g=yc(c[d+28>>2]|0,17600)|0;if((d|0)!=0){ke(d);HW(d)}j=j+1|0;if((g|0)!=0){break}if((j|0)>=(c[a>>2]|0)){break a}}Mc(e|0)|0;j=g;i=f;return j|0}}while(0);Mc(e|0)|0;j=0;i=f;return j|0}function ef(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;e=a+152|0;Ub(e|0)|0;a=a+32|0;g=c[a>>2]|0;a:do{if((c[g+8>>2]|0)>0){b=b+28|0;f=0;while(1){h=c[(c[g>>2]|0)+(f<<2)>>2]|0;g=FW(32)|0;ie(g,h);g=Co(g,c[b>>2]|0)|0;h=yc(c[g+28>>2]|0,17600)|0;if((g|0)!=0){ke(g);HW(g)}f=f+1|0;if((h|0)!=0){break}g=c[a>>2]|0;if((f|0)>=(c[g+8>>2]|0)){break a}}Mc(e|0)|0;i=d;return h|0}}while(0);Mc(e|0)|0;h=0;i=d;return h|0}function ff(b,d){b=b|0;d=d|0;var 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;e=i;m=i;i=i+32|0;n=m;o=i;i=i+8|0;j=i;i=i+8|0;f=j;g=i;i=i+8|0;l=g;q=d+20|0;k=c[q>>2]|0;if((k|0)==0){x=0;i=e;return x|0}b=b+152|0;Ub(b|0)|0;h=d+4|0;r=c[h>>2]|0;do{if((r|0)==0){q=c[(c[q>>2]|0)+28>>2]|0;r=Fb(q|0,44)|0;if((r|0)==0){r=Fb(q|0,45)|0}s=ZW(q|0)|0;if((s|0)>0){t=0;do{v=q+t|0;u=a[v]|0;a[v]=u<<24>>24==45?32:u;t=t+1|0;}while((t|0)<(s|0))}do{if((r|0)==0){s=-1;v=0;t=-1;u=-1}else{v=nb(r|0,17816)|0;t=nb(r|0,17824)|0;if((t|0)!=0){v=(v|0)==0|t>>>0>>0?t:v}u=nb(r|0,17832)|0;if((u|0)==0){t=-1}else{t=110;v=(v|0)==0|u>>>0>>0?u:v}u=nb(r|0,17840)|0;if((u|0)!=0){t=100;v=(v|0)==0|u>>>0>>0?u:v}w=nb(r|0,17848)|0;if((w|0)==0){u=-1}else{u=200;v=(v|0)==0|w>>>0>>0?w:v}w=nb(r|0,17856)|0;if((w|0)!=0){u=50;v=(v|0)==0|w>>>0>>0?w:v}w=nb(r|0,17864)|0;if((w|0)==0){w=-1;p=20}else{if((v|0)==0|w>>>0>>0){v=75}else{w=75;p=20}}if((p|0)==20){if((v|0)==0){s=w;v=0;break}else{v=w}}p=s+1|0;x=GW((p|0)>-1?p:-1)|0;eX(x|0,q|0)|0;a[x+(r-q)|0]=0;s=v;v=1;q=x}}while(0);x=c[d+44>>2]|0;r=(x&1|0)!=0;p=r?100:-1;w=(x&262144|0)!=0?200:u;t=(x&64|0)!=0?100:t;u=d+24|0;x=c[u>>2]|0;if((x|0)==0){u=v}else{if(!((q|0)==0|v^1)){IW(q);x=c[u>>2]|0}u=0;q=c[x+28>>2]|0}switch(c[d+32>>2]|0){case 2:{w=50;break};case 3:{w=75;break};case 4:{w=80;break};case 5:{w=100;break};case 6:{w=180;break};case 7:{w=200;break};case 8:{w=205;break};case 9:{w=210;break};case 1:{w=40;break};default:{}}switch(c[d+28>>2]|0){case 1:{s=50;break};case 2:{s=63;break};case 3:{s=75;break};case 4:{s=87;break};case 5:{s=100;break};case 6:{s=113;break};case 7:{s=125;break};case 8:{s=150;break};case 9:{s=200;break};default:{}}v=18008;do{if(jd[c[c[d>>2]>>2]&511](d)|0){d=sy(d)|0;if((d|0)==0){v=18008;break}d=c[d+28>>2]|0;if((Qc(d|0,17880)|0)==0){v=17896;break}if((Qc(d|0,17904)|0)==0){v=17920;break}if((Qc(d|0,17928)|0)==0){v=17944;break}if((Qc(d|0,17952)|0)==0){v=17944;break}if((Qc(d|0,17968)|0)==0){v=17984;break}if((Qc(d|0,17992)|0)==0){v=18008;break}if((Qc(d|0,18016)|0)==0){v=18008;break}Qe(-1,18032,o);v=18008}}while(0);c[m>>2]=18096;c[n+4>>2]=3;c[n+8>>2]=q;c[n+12>>2]=18104;c[n+16>>2]=3;c[n+20>>2]=v;c[n+24>>2]=0;m=gb(0,n|0)|0;if((t|0)!=-1){Ob(m|0,18112,t|0)|0}if((w|0)!=-1){Ob(m|0,18120,w|0)|0}if((s|0)!=-1){Ob(m|0,18128,s|0)|0}if(r){Ob(m|0,18136,p|0)|0}if(!((q|0)==0|u^1)){IW(q)}if((m|0)==0){r=0;break}wb(0,m|0,0)|0;Oc(m|0);l=ic(0,m|0,0,0,l|0)|0;if((l|0)==0){r=0}else{a:do{if((c[l>>2]|0)>0){n=l+8|0;o=0;b:while(1){x=Sb(c[(c[n>>2]|0)+(o<<2)>>2]|0,17728,0,f|0)|0;c[g>>2]=x;do{if((x|0)==0){d=c[j>>2]|0;if((d|0)==0){break}d=Sa(d|0,46)|0;if((d|0)==0){break}if((XW(d|0,17736,4)|0)==0){p=75;break b}if((XW(d|0,17744,4)|0)==0){p=75;break b}if((XW(d|0,17760,4)|0)==0){p=78;break b}if((XW(d|0,17768,4)|0)==0){p=78;break b}}}while(0);o=o+1|0;if((o|0)>=(c[l>>2]|0)){r=0;break a}}if((p|0)==75){r=FW(20)|0;x=FW(32)|0;ie(x,k);c[r>>2]=3352;c[r+4>>2]=x;c[r+8>>2]=1;x=r+12|0;c[x>>2]=0;w=FW(32)|0;fe(w,c[j>>2]|0);c[x>>2]=w;rb(c[(c[n>>2]|0)+(o<<2)>>2]|0,17752,0,r+16|0)|0}else if((p|0)==78){r=FW(20)|0;x=FW(32)|0;ie(x,k);c[r>>2]=3352;c[r+4>>2]=x;c[r+8>>2]=0;x=r+12|0;c[x>>2]=0;w=FW(32)|0;fe(w,c[j>>2]|0);c[x>>2]=w}c[h>>2]=r}else{r=0}}while(0);Vc(l|0)}ob(m|0)}}while(0);Mc(b|0)|0;x=r;i=e;return x|0}function gf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=a+152|0;Ub(f|0)|0;a=a+80|0;j=c[a>>2]|0;a:do{if((c[j+8>>2]|0)>0){b=b+28|0;g=0;b:while(1){h=c[(c[j>>2]|0)+(g<<2)>>2]|0;if((c[d>>2]|0)!=0){l=d;do{j=FW(32)|0;ie(j,h);j=Co(j,c[b>>2]|0)|0;ne(j,c[l>>2]|0,-1)|0;k=yc(c[j+28>>2]|0,17776)|0;if((k|0)!=0){break b}if((j|0)!=0){ke(j);HW(j)}l=l+4|0;}while((c[l>>2]|0)!=0);j=c[a>>2]|0}g=g+1|0;if((g|0)>=(c[j+8>>2]|0)){break a}}mc(k|0)|0;Mc(f|0)|0;l=j;i=e;return l|0}}while(0);Mc(f|0)|0;l=0;i=e;return l|0}function hf(b){b=b|0;var c=0,d=0;c=i;d=b+152|0;Ub(d|0)|0;b=(a[b+84|0]&1)!=0;Mc(d|0)|0;i=c;return b|0}function jf(b){b=b|0;var c=0,d=0;c=i;d=b+152|0;Ub(d|0)|0;b=(a[b+85|0]&1)!=0;Mc(d|0)|0;i=c;return b|0}function kf(b){b=b|0;var c=0,d=0;c=i;d=b+152|0;Ub(d|0)|0;b=(a[b+86|0]&1)!=0;Mc(d|0)|0;i=c;return b|0}function lf(b){b=b|0;var c=0,d=0;c=i;d=b+152|0;Ub(d|0)|0;b=(a[b+87|0]&1)!=0;Mc(d|0)|0;i=c;return b|0}function mf(a){a=a|0;var b=0,d=0;b=i;d=a+152|0;Ub(d|0)|0;a=c[a+88>>2]|0;Mc(d|0)|0;i=b;return a|0}function nf(a){a=a|0;var b=0,d=0;b=i;d=a+152|0;Ub(d|0)|0;a=c[a+92>>2]|0;Mc(d|0)|0;i=b;return a|0}function of(a){a=a|0;var b=0,d=0;b=i;d=a+152|0;Ub(d|0)|0;a=c[a+96>>2]|0;Mc(d|0)|0;i=b;return a|0}function pf(a){a=a|0;var b=0.0,c=0,d=0;c=i;d=a+152|0;Ub(d|0)|0;b=+h[a+104>>3];Mc(d|0)|0;i=c;return+b}function qf(a){a=a|0;var b=0.0,c=0,d=0;c=i;d=a+152|0;Ub(d|0)|0;b=+h[a+112>>3];Mc(d|0)|0;i=c;return+b}function rf(a){a=a|0;var b=0.0,c=0,d=0;c=i;d=a+152|0;Ub(d|0)|0;b=+h[a+120>>3];Mc(d|0)|0;i=c;return+b}function sf(b){b=b|0;var c=0,d=0;c=i;d=b+152|0;Ub(d|0)|0;b=(a[b+128|0]&1)!=0;Mc(d|0)|0;i=c;return b|0}function tf(b){b=b|0;var c=0,d=0;c=i;d=b+152|0;Ub(d|0)|0;b=(a[b+129|0]&1)!=0;Mc(d|0)|0;i=c;return b|0}function uf(b){b=b|0;var c=0,d=0;c=i;d=b+152|0;Ub(d|0)|0;b=(a[b+130|0]&1)!=0;Mc(d|0)|0;i=c;return b|0}function vf(b){b=b|0;var c=0,d=0;c=i;d=b+152|0;Ub(d|0)|0;b=(a[b+131|0]&1)!=0;Mc(d|0)|0;i=c;return b|0}function wf(b){b=b|0;i=i;return(a[b+132|0]&1)!=0|0}function xf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;d=a+152|0;Ub(d|0)|0;f=a+136|0;g=Au(c[f>>2]|0,b)|0;do{if((g|0)==0){g=oo(c[a+12>>2]|0,b)|0;if((g|0)==0){g=0;break}g=iu(g,b)|0;if((g|0)==0){g=0;break}Bu(c[f>>2]|0,g)}}while(0);Mc(d|0)|0;i=e;return g|0}function yf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;j=i;i=i+8|0;g=i;i=i+8|0;k=g;m=i;i=i+8|0;l=m;e=a+152|0;Ub(e|0)|0;h=a+16|0;to(c[h>>2]|0,j);n=b+28|0;while(1){if(!(uo(c[h>>2]|0,j,k,l)|0)){b=0;f=8;break}if((nb(c[n>>2]|0,c[(c[g>>2]|0)+28>>2]|0)|0)==0){continue}vo(c[h>>2]|0,j);b=c[m>>2]|0;if((b|0)!=0){break}}if((f|0)==8){Mc(e|0)|0;i=d;return b|0}f=a+140|0;g=Au(c[f>>2]|0,b)|0;if((g|0)!=0){n=g;Mc(e|0)|0;i=d;return n|0}b=ju(b)|0;if((b|0)==0){n=0;Mc(e|0)|0;i=d;return n|0}Bu(c[f>>2]|0,b);n=b;Mc(e|0)|0;i=d;return n|0}function zf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=a+200|0;Ub(g|0)|0;a=Et(c[a+148>>2]|0,b,d,e)|0;Mc(g|0)|0;i=f;return a|0}function Af(b,c){b=b|0;c=c|0;var d=0,e=0;e=i;d=b+152|0;Ub(d|0)|0;b=b+84|0;do{if((Qc(c|0,17712)|0)==0){c=1}else{if((Qc(c|0,17720)|0)==0){c=0;break}else{c=0}Mc(d|0)|0;i=e;return c|0}}while(0);a[b]=c;b=1;Mc(d|0)|0;i=e;return b|0}function Bf(b,c){b=b|0;c=c|0;var d=0,e=0;e=i;d=b+152|0;Ub(d|0)|0;b=b+85|0;do{if((Qc(c|0,17712)|0)==0){c=1}else{if((Qc(c|0,17720)|0)==0){c=0;break}else{c=0}Mc(d|0)|0;i=e;return c|0}}while(0);a[b]=c;b=1;Mc(d|0)|0;i=e;return b|0}function Cf(b,c){b=b|0;c=c|0;var d=0,e=0;e=i;d=b+152|0;Ub(d|0)|0;b=b+86|0;do{if((Qc(c|0,17712)|0)==0){c=1}else{if((Qc(c|0,17720)|0)==0){c=0;break}else{c=0}Mc(d|0)|0;i=e;return c|0}}while(0);a[b]=c;b=1;Mc(d|0)|0;i=e;return b|0}function Df(b,c){b=b|0;c=c|0;var d=0,e=0;d=i;e=b+152|0;Ub(e|0)|0;a[b+132|0]=c&1;Mc(e|0)|0;i=d;return}function Ef(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+4|0;c[d>>2]=31;c[a+8>>2]=0;e=ye(31,8)|0;c[a>>2]=e;if((c[d>>2]|0)>0){f=0}else{i=b;return}while(1){c[e+(f<<3)>>2]=0;f=f+1|0;if((f|0)>=(c[d>>2]|0)){break}e=c[a>>2]|0}i=b;return}function Ff(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a+4|0;e=c[d>>2]|0;g=c[a>>2]|0;if((e|0)>0){f=0}else{h=g;Fe(h);i=b;return}do{h=c[g+(f<<3)>>2]|0;if((h|0)!=0){Fe(h);g=c[a>>2]|0;e=c[d>>2]|0}f=f+1|0;}while((f|0)<(e|0));Fe(g);i=b;return}function Gf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;f=b+8|0;h=b+4|0;k=c[h>>2]|0;if((c[f>>2]|0)>=((k|0)/2|0|0)){j=c[b>>2]|0;l=k<<1|1;c[h>>2]=l;l=ye(l,8)|0;c[b>>2]=l;a:do{if((c[h>>2]|0)>0){m=0;while(1){c[l+(m<<3)>>2]=0;m=m+1|0;if((m|0)>=(c[h>>2]|0)){break a}l=c[b>>2]|0}}}while(0);if((k|0)>0){m=0;do{l=j+(m<<3)|0;n=c[l>>2]|0;if((n|0)!=0){p=a[n]|0;if(p<<24>>24==0){o=0}else{o=0;while(1){o=(o*17|0)+(p&255)|0;n=n+1|0;p=a[n]|0;if(p<<24>>24==0){break}else{}}}n=c[h>>2]|0;q=(o>>>0)%(n>>>0)|0;o=c[b>>2]|0;p=o+(q<<3)|0;if((c[p>>2]|0)!=0){while(1){p=q+1|0;q=(p|0)==(n|0)?0:p;p=o+(q<<3)|0;if((c[p>>2]|0)==0){break}else{}}}n=l;o=c[n+4>>2]|0;q=p;c[q>>2]=c[n>>2];c[q+4>>2]=o}m=m+1|0;}while((m|0)<(k|0))}Fe(j)}k=a[d]|0;if(k<<24>>24==0){l=0}else{l=0;j=d;while(1){l=(l*17|0)+(k&255)|0;j=j+1|0;k=a[j]|0;if(k<<24>>24==0){break}else{}}}h=c[h>>2]|0;l=(l>>>0)%(h>>>0)|0;j=c[b>>2]|0;k=c[j+(l<<3)>>2]|0;b:do{if((k|0)!=0){while(1){if((Qc(k|0,d|0)|0)==0){break}k=l+1|0;l=(k|0)==(h|0)?0:k;k=c[j+(l<<3)>>2]|0;if((k|0)==0){break b}}p=l<<3;p=j+p|0;p=p+4|0;c[p>>2]=e;p=f;p=c[p>>2]|0;p=p+1|0;q=f;c[q>>2]=p;i=g;return}}while(0);q=Ge(d)|0;c[(c[b>>2]|0)+(l<<3)>>2]=q;q=c[b>>2]|0;p=l;p=p<<3;p=q+p|0;p=p+4|0;c[p>>2]=e;p=f;p=c[p>>2]|0;p=p+1|0;q=f;c[q>>2]=p;i=g;return}function Hf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;h=a[d]|0;if(h<<24>>24==0){j=0}else{j=0;g=d;while(1){j=(j*17|0)+(h&255)|0;g=g+1|0;h=a[g]|0;if(h<<24>>24==0){break}else{}}}g=c[b+4>>2]|0;h=(j>>>0)%(g>>>0)|0;b=c[b>>2]|0;j=c[b+(h<<3)>>2]|0;if((j|0)==0){j=0;i=f;return j|0}while(1){if((Qc(j|0,d|0)|0)==0){break}h=h+1|0;h=(h|0)==(g|0)?0:h;j=c[b+(h<<3)>>2]|0;if((j|0)==0){d=0;e=7;break}}if((e|0)==7){i=f;return d|0}j=c[b+(h<<3)+4>>2]|0;i=f;return j|0}function If(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=a+8|0;c[e>>2]=0;c[e+4>>2]=0;c[a>>2]=6;f=FW(20)|0;rt(f,b);c[e>>2]=f;i=d;return a|0}function Jf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=a+8|0;c[e>>2]=0;c[e+4>>2]=0;c[a>>2]=7;f=FW(24)|0;Qu(f,b);c[e>>2]=f;i=d;return a|0}function Kf(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;c[d+4>>2]=0;c[a>>2]=7;c[d>>2]=b;b=b+20|0;c[b>>2]=(c[b>>2]|0)+1;i=i;return a|0}function Lf(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;c[d+4>>2]=0;c[a>>2]=8;c[d>>2]=b;i=i;return a|0}function Mf(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;$W(b|0,a|0,16)|0;switch(c[a>>2]|0){case 3:{e=c[a+8>>2]|0;a=FW(32)|0;ie(a,e);c[b+8>>2]=a;i=d;return b|0};case 10:{c[b+8>>2]=Ge(c[a+8>>2]|0)|0;i=d;return b|0};case 4:{c[b+8>>2]=Ge(c[a+8>>2]|0)|0;i=d;return b|0};case 6:{e=(c[a+8>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+1;i=d;return b|0};case 8:{e=(c[a+8>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+1;i=d;return b|0};case 7:{e=(c[a+8>>2]|0)+20|0;c[e>>2]=(c[e>>2]|0)+1;i=d;return b|0};default:{i=d;return b|0}}return 0}function Nf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if(!((c[a>>2]|0)!=9|(b|0)==0)){a=a+8|0;a=_m(b,c[a>>2]|0,c[a+4>>2]|0,d,e)|0;i=f;return a|0}$W(d|0,a|0,16)|0;switch(c[a>>2]|0){case 10:{c[d+8>>2]=Ge(c[a+8>>2]|0)|0;a=d;i=f;return a|0};case 3:{b=c[a+8>>2]|0;a=FW(32)|0;ie(a,b);c[d+8>>2]=a;a=d;i=f;return a|0};case 6:{a=(c[a+8>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+1;a=d;i=f;return a|0};case 4:{c[d+8>>2]=Ge(c[a+8>>2]|0)|0;a=d;i=f;return a|0};case 7:{a=(c[a+8>>2]|0)+20|0;c[a>>2]=(c[a>>2]|0)+1;a=d;i=f;return a|0};case 8:{a=(c[a+8>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)+1;a=d;i=f;return a|0};default:{a=d;i=f;return a|0}}return 0}function Of(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;a:do{switch(c[a>>2]|0){case 6:{d=a+8|0;f=(c[d>>2]|0)+16|0;e=(c[f>>2]|0)+ -1|0;c[f>>2]=e;if((e|0)!=0){break a}d=c[d>>2]|0;if((d|0)==0){break a}st(d);HW(d);break};case 3:{d=c[a+8>>2]|0;if((d|0)==0){break a}ke(d);HW(d);break};case 7:{d=a+8|0;e=(c[d>>2]|0)+20|0;f=(c[e>>2]|0)+ -1|0;c[e>>2]=f;if((f|0)!=0){break a}d=c[d>>2]|0;if((d|0)==0){break a}Su(d);HW(d);break};case 10:{Fe(c[a+8>>2]|0);break};case 8:{d=a+8|0;e=(c[d>>2]|0)+4|0;f=(c[e>>2]|0)+ -1|0;c[e>>2]=f;if((f|0)!=0){break a}d=c[d>>2]|0;if((d|0)==0){break a}fd[c[(c[d>>2]|0)+4>>2]&511](d);break};case 4:{Fe(c[a+8>>2]|0);break};default:{}}}while(0);c[a>>2]=13;i=b;return}function Pf(a){a=a|0;i=i;return c[32256+(c[a>>2]<<2)>>2]|0}function Qf(b,d){b=b|0;d=d|0;var e=0,f=0,g=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;e=i;z=i;i=i+8|0;y=z;x=i;i=i+8|0;w=x;n=i;i=i+8|0;o=n;q=i;i=i+8|0;r=q;g=i;i=i+8|0;j=g;p=i;i=i+8|0;s=p;l=i;i=i+8|0;m=l;u=i;i=i+8|0;t=u;A=i;i=i+8|0;v=i;i=i+8|0;B=i;i=i+16|0;f=B;c[B>>2]=13;B=f+8|0;c[B>>2]=0;c[B+4>>2]=0;switch(c[b>>2]|0){case 0:{_c(((a[b+8|0]&1)!=0?32320:32328)|0,d|0)|0;i=e;return};case 2:{B=A;h[k>>3]=+h[b+8>>3];c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];Gc(d|0,32344,A|0)|0;i=e;return};case 3:{sc(40,d|0)|0;B=c[b+8>>2]|0;Rb(c[B+28>>2]|0,1,c[B+24>>2]|0,d|0)|0;sc(41,d|0)|0;i=e;return};case 1:{c[v>>2]=c[b+8>>2];Gc(d|0,32336,v|0)|0;i=e;return};case 6:{sc(91,d|0)|0;g=c[b>>2]|0;if((g|0)!=6){A=g;B=l;c[B>>2]=A;B=m+4|0;c[B>>2]=6;B=32448;Qe(0,B,m);tc()}n=b+8|0;g=0;while(1){if((g|0)>=(c[(c[n>>2]|0)+12>>2]|0)){b=16;break}if((g|0)>0){sc(32,d|0)|0;j=c[b>>2]|0;if((j|0)!=6){b=14;break}}vt(c[n>>2]|0,g,f)|0;Qf(f,d);Of(f);j=c[b>>2]|0;if((j|0)==6){g=g+1|0}else{b=10;break}}if((b|0)==10){B=l;c[B>>2]=j;B=m+4|0;c[B>>2]=6;B=32448;Qe(0,B,m);tc()}else if((b|0)==14){c[p>>2]=j;c[s+4>>2]=6;Qe(0,32448,s);tc()}else if((b|0)==16){sc(93,d|0)|0;i=e;return}break};case 5:{Rb(32360,4,1,d|0)|0;i=e;return};case 4:{c[u>>2]=c[b+8>>2];Gc(d|0,32352,t|0)|0;i=e;return};case 7:{Rb(32368,2,1,d|0)|0;l=c[b>>2]|0;if((l|0)!=7){A=l;B=g;c[B>>2]=A;B=j+4|0;c[B>>2]=7;B=32448;Qe(0,B,j);tc()}l=b+8|0;m=0;while(1){p=c[l>>2]|0;if((m|0)>=(c[p+16>>2]|0)){b=24;break}c[q>>2]=$u(p,m)|0;Gc(d|0,32376,r|0)|0;p=c[b>>2]|0;if((p|0)!=7){b=22;break}bv(c[l>>2]|0,m,f)|0;Qf(f,d);Of(f);p=c[b>>2]|0;if((p|0)==7){m=m+1|0}else{b=19;break}}if((b|0)==19){B=g;c[B>>2]=p;B=j+4|0;c[B>>2]=7;B=32448;Qe(0,B,j);tc()}else if((b|0)==22){c[n>>2]=p;c[o+4>>2]=7;Qe(0,32448,o);tc()}else if((b|0)==24){Rb(32384,3,1,d|0)|0;i=e;return}break};case 8:{Rb(32392,8,1,d|0)|0;i=e;return};case 11:{Rb(32416,7,1,d|0)|0;i=e;return};case 10:{_c(c[b+8>>2]|0,d|0)|0;i=e;return};case 12:{Rb(32424,5,1,d|0)|0;i=e;return};case 13:{Rb(32432,6,1,d|0)|0;i=e;return};case 9:{A=b+8|0;B=c[A+4>>2]|0;c[x>>2]=c[A>>2];c[w+4>>2]=B;Gc(d|0,32408,w|0)|0;i=e;return};case 14:{c[z>>2]=c[b+8>>2];Gc(d|0,32440,y|0)|0;i=e;return};default:{i=e;return}}}function Rf(a){a=a|0;i=i;return}function Sf(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;l=i;q=i;i=i+8|0;j=q;o=i;i=i+16|0;p=o;t=i;i=i+80|0;c[o>>2]=13;m=p+8|0;c[m>>2]=0;n=m+4|0;c[n>>2]=0;r=b+52|0;a[r]=0;k=b+56|0;c[k>>2]=0;s=b+4|0;c[s>>2]=0;h=b+8|0;c[h>>2]=0;c[b+28>>2]=0;c[b+24>>2]=0;c[b+36>>2]=0;c[b+40>>2]=0;c[b+44>>2]=0;c[b+64>>2]=-1;c[b+32>>2]=0;c[b+48>>2]=0;c[b>>2]=d;c[b+12>>2]=g;if((Nb(c[d+28>>2]|0,t|0)|0)==0){t=c[t+36>>2]|0}else{t=0}d=yc(c[(c[b>>2]|0)+28>>2]|0,32632)|0;c[s>>2]=d;if((d|0)==0){g=Pc()|0;c[b+60>>2]=c[g>>2];d=c[(c[b>>2]|0)+28>>2]|0;g=Xc(c[g>>2]|0)|0;c[q>>2]=d;c[j+4>>2]=g;Qe(-1,32640,j);c[k>>2]=1;i=l;return}else{c[m>>2]=0;c[n>>2]=0;c[o>>2]=5;g=FW(320)|0;Dj(g,d,0,0,t,p);c[h>>2]=g;a[r]=(Tf(b,e,f)|0)&1;i=l;return}}function Tf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;f=i;i=i+8|0;l=i;i=i+8|0;j=i;i=i+8|0;k=i;i=i+8|0;h=b+8|0;m=c[h>>2]|0;Gd[c[(c[m>>2]|0)+52>>2]&255](m,0,-1);m=c[h>>2]|0;if((jd[c[(c[m>>2]|0)+48>>2]&511](m)|0)<0){Qe(-1,32672,j);m=0;i=g;return m|0}m=c[h>>2]|0;fd[c[(c[m>>2]|0)+12>>2]&511](m);Vf(b);a[k]=0;m=FW(128)|0;n=c[h>>2]|0;j=Wf(b)|0;an(m,n,j,Xf(b)|0,k,0);j=b+28|0;c[j>>2]=m;if((a[m+28|0]&1)==0){Qe(-1,32712,l);c[b+56>>2]=c[(c[j>>2]|0)+32>>2];n=0;i=g;return n|0}if(!(Yf(b,d,e)|0)){c[b+56>>2]=4;n=0;i=g;return n|0}l=FW(184)|0;Zt(l,c[j>>2]|0);d=b+36|0;c[d>>2]=l;if((l|0)==0){n=1;i=g;return n|0}if((a[l+164|0]&1)!=0){n=1;i=g;return n|0}if((a[k]&1)==0){$t(l);HW(l);k=c[j>>2]|0;if((k|0)!=0){en(k);HW(k)}n=FW(128)|0;an(n,c[h>>2]|0,0,0,0,1);c[j>>2]=n;l=FW(184)|0;Zt(l,n);c[d>>2]=l}if((l|0)==0){n=1;i=g;return n|0}if((a[l+164|0]&1)!=0){n=1;i=g;return n|0}Qe(-1,32744,f);c[b+56>>2]=2;n=0;i=g;return n|0}function Uf(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;j=b+52|0;a[j]=0;c[b+56>>2]=0;c[b>>2]=0;c[b+4>>2]=0;k=b+8|0;c[k>>2]=0;c[b+28>>2]=0;c[b+24>>2]=0;c[b+36>>2]=0;c[b+40>>2]=0;c[b+44>>2]=0;c[b+64>>2]=-1;c[b+32>>2]=0;c[b+48>>2]=0;c[b+12>>2]=g;if((jd[c[(c[d>>2]|0)+100>>2]&511](d)|0)==0){l=0;g=b;c[g>>2]=l;g=k;c[g>>2]=d;d=Tf(b,e,f)|0;d=d&1;g=j;a[g]=d;i=h;return}g=jd[c[(c[d>>2]|0)+100>>2]&511](d)|0;l=FW(32)|0;ie(l,g);g=b;c[g>>2]=l;g=k;c[g>>2]=d;g=Tf(b,e,f)|0;g=g&1;l=j;a[l]=g;i=h;return}function Vf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;g=i;i=i+8|0;j=g;e=i;i=i+8|0;l=i;i=i+8|0;m=i;i=i+1032|0;n=i;i=i+8|0;f=b+16|0;c[f>>2]=0;h=b+20|0;c[h>>2]=0;b=b+8|0;o=0;do{p=c[b>>2]|0;a[m+o|0]=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;o=o+1|0;}while((o|0)<1024);a[m+1024|0]=0;o=0;while(1){p=o+1|0;if((vc(m+o|0,32776,5)|0)==0){k=6;break}if((p|0)<1019){o=p}else{break}}do{if((k|0)==6){if((o|0)>1018){break}k=c[b>>2]|0;hd[c[(c[k>>2]|0)+112>>2]&127](k,o);k=Mb(m+(o+5)|0,32832,n|0)|0;if((k|0)==0){Qe(-1,32784,e);i=d;return}else{c[g>>2]=f;c[j+4>>2]=h;Hc(k|0,32840,j|0)|0;i=d;return}}}while(0);Qe(-1,32784,l);i=d;return}function Wf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;h=i;i=i+1032|0;g=i;i=i+1032|0;e=b+64|0;j=c[e>>2]|0;if((j|0)!=-1){k=j;i=d;return k|0}j=b+8|0;k=c[j>>2]|0;do{if((jd[c[(c[k>>2]|0)+104>>2]&511](k)|0)!=0){k=b+24|0;b=c[k>>2]|0;if((b|0)==0){b=FW(16)|0;iE(b,c[j>>2]|0);c[k>>2]=b}b=kE(b)|0;k=c[j>>2]|0;if((b|0)!=(jd[c[(c[k>>2]|0)+104>>2]&511](k)|0)){break}g=c[j>>2]|0;Gd[c[(c[g>>2]|0)+52>>2]&255](g,0,0);g=0;while(1){f=c[j>>2]|0;f=jd[c[(c[f>>2]|0)+20>>2]&511](f)|0;if((f|0)==-1){f=10;break}a[h+g|0]=f;g=g+1|0;if((g|0)>=1024){f=9;break}}do{if((f|0)==9){a[h+g|0]=0;c[e>>2]=0}else if((f|0)==10){a[h+g|0]=0;c[e>>2]=0;if((g|0)>0){break}else{e=0}i=d;return e|0}}while(0);j=0;while(1){b=j+1|0;if((vc(32856,h+j|0,6)|0)==0){break}if((b|0)<(g|0)){j=b}else{e=0;f=29;break}}if((f|0)==29){i=d;return e|0}k=j+6|0;c[e>>2]=k;i=d;return k|0}}while(0);h=c[j>>2]|0;Gd[c[(c[h>>2]|0)+52>>2]&255](h,1024,-1);h=0;do{b=c[j>>2]|0;b=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((b|0)==-1){break}a[g+h|0]=b;h=h+1|0;}while((h|0)<1024);a[g+h|0]=0;h=h+ -9|0;a:do{if((h|0)>-1){j=h;while(1){h=j+ -1|0;if((vc(g+j|0,32864,9)|0)==0){break}if((j|0)>0){j=h}else{f=22;break a}}if((j|0)<0){h=j;f=22}else{h=j}}else{f=22}}while(0);if((f|0)==22){c[e>>2]=0}j=g+(h+9)|0;while(1){if((xc(a[j]|0)|0)==0){break}else{j=j+1|0}}g=a[j]|0;b:do{if(g<<24>>24==0){h=0}else{f=0;h=0;while(1){g=(g<<24>>24)+ -48|0;if(!(g>>>0<10&(f|0)<10)){break b}h=g+(h*10|0)|0;j=j+1|0;g=a[j]|0;if(g<<24>>24==0){break}else{f=f+1|0}}}}while(0);c[e>>2]=h;k=h;i=d;return k|0}function Xf(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+8|0;e=c[d>>2]|0;if((jd[c[(c[e>>2]|0)+104>>2]&511](e)|0)==0){e=0;i=b;return e|0}a=a+24|0;e=c[a>>2]|0;if((e|0)==0){e=FW(16)|0;iE(e,c[d>>2]|0);c[a>>2]=e}f=kE(e)|0;e=c[d>>2]|0;if((f|0)!=(jd[c[(c[e>>2]|0)+104>>2]&511](e)|0)){f=0;i=b;return f|0}e=c[a>>2]|0;if((e|0)==0){e=FW(16)|0;iE(e,c[d>>2]|0);c[a>>2]=e}f=sE(e)|0;i=b;return f|0}function Yf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;j=i;i=i+8|0;h=j;m=i;i=i+16|0;g=m;c[m>>2]=13;f=g+8|0;c[f>>2]=0;c[f+4>>2]=0;f=a+28|0;l=c[f>>2]|0;k=c[l+40>>2]|0;if((k|0)!=7){c[j>>2]=k;c[h+4>>2]=7;Qe(0,33064,h);tc()}Yu(c[l+48>>2]|0,32848,g,0)|0;if((c[m>>2]|0)!=7){m=1;Of(g);i=e;return m|0}h=pg(a,g)|0;a=a+32|0;c[a>>2]=h;if((h|0)==0){m=0;Of(g);i=e;return m|0}if(!(qg(h,b,d)|0)){m=0;Of(g);i=e;return m|0}b=c[f>>2]|0;f=c[a>>2]|0;f=jd[c[(c[f>>2]|0)+24>>2]&511](f)|0;d=c[a>>2]|0;d=jd[c[(c[d>>2]|0)+28>>2]&511](d)|0;h=c[a>>2]|0;h=jd[c[(c[h>>2]|0)+32>>2]&511](h)|0;j=c[a>>2]|0;j=jd[c[(c[j>>2]|0)+36>>2]&511](j)|0;k=c[a>>2]|0;k=jd[c[(c[k>>2]|0)+40>>2]&511](k)|0;l=c[a>>2]|0;l=jd[c[(c[l>>2]|0)+44>>2]&511](l)|0;m=c[a>>2]|0;jn(b,f,d,h,j,k,l,jd[c[(c[m>>2]|0)+48>>2]&511](m)|0);m=1;Of(g);i=e;return m|0}function Zf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=a+48|0;if((c[d>>2]|0)!=0){e=(_f(a)|0)>0;f=c[d>>2]|0;if(e){e=0;do{f=c[f+(e<<2)>>2]|0;if((f|0)!=0){lg(f);HW(f)}e=e+1|0;g=(e|0)<(_f(a)|0);f=c[d>>2]|0}while(g)}Fe(f)}d=c[a+32>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+44>>2]|0;if((d|0)!=0){LF(d);HW(d)}d=c[a+36>>2]|0;if((d|0)!=0){$t(d);HW(d)}d=c[a+28>>2]|0;if((d|0)!=0){en(d);HW(d)}d=c[a+40>>2]|0;if((d|0)!=0){IC(d);HW(d)}d=c[a+24>>2]|0;if((d|0)!=0){jE(d);HW(d)}d=c[a+8>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+4>>2]|0;if((d|0)!=0){mc(d|0)|0}a=c[a>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function _f(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=a+8|0;f=c[d>>2]|0;do{if((jd[c[(c[f>>2]|0)+104>>2]&511](f)|0)!=0){e=a+24|0;f=c[e>>2]|0;if((f|0)==0){f=FW(16)|0;iE(f,c[d>>2]|0);c[e>>2]=f}g=kE(f)|0;f=c[d>>2]|0;if((g|0)!=(jd[c[(c[f>>2]|0)+104>>2]&511](f)|0)){break}f=c[e>>2]|0;if((f|0)==0){f=FW(16)|0;iE(f,c[d>>2]|0);c[e>>2]=f}d=rE(f)|0;if((d|0)==0){break}i=b;return d|0}}while(0);g=cu(c[a+36>>2]|0)|0;i=b;return g|0}function $f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=i;e=i;i=i+8|0;d=e;if((b|0)<1){j=0;i=f;return j|0}if((_f(a)|0)<(b|0)){j=0;i=f;return j|0}g=a+8|0;j=c[g>>2]|0;do{if((jd[c[(c[j>>2]|0)+104>>2]&511](j)|0)!=0){h=a+24|0;j=c[h>>2]|0;if((j|0)==0){j=FW(16)|0;iE(j,c[g>>2]|0);c[h>>2]=j}h=kE(j)|0;j=c[g>>2]|0;if((h|0)!=(jd[c[(c[j>>2]|0)+104>>2]&511](j)|0)){break}g=a+48|0;j=c[g>>2]|0;if((j|0)==0){c[g>>2]=ye(_f(a)|0,4)|0;if((_f(a)|0)>0){h=0;do{c[(c[g>>2]|0)+(h<<2)>>2]=0;h=h+1|0;}while((h|0)<(_f(a)|0))}j=c[g>>2]|0}h=b+ -1|0;j=c[j+(h<<2)>>2]|0;if((j|0)!=0){i=f;return j|0}j=dg(a,b)|0;c[(c[g>>2]|0)+(h<<2)>>2]=j;g=c[(c[g>>2]|0)+(h<<2)>>2]|0;if((g|0)==0){c[e>>2]=b;Qe(-1,33016,d);break}else{j=g;i=f;return j|0}}}while(0);j=au(c[a+36>>2]|0,b)|0;i=f;return j|0}function ag(a,b,d,e,f,g,h,j,k,l,m,n,o,p,q,r,s){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;var t=0;t=i;if(($f(a,d)|0)==0){i=t;return}d=$f(a,d)|0;mg(d,b,e,f,g,h,j,l,m,n,o,k,c[a+36>>2]|0,p,q,r,s);i=t;return}function bg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;d=i;b=a+40|0;if((c[b>>2]|0)!=0){h=b;h=c[h>>2]|0;i=d;return h|0}g=a+8|0;h=c[g>>2]|0;if((jd[c[(c[h>>2]|0)+104>>2]&511](h)|0)==0){h=b;h=c[h>>2]|0;i=d;return h|0}e=a+24|0;f=c[e>>2]|0;if((f|0)==0){f=FW(16)|0;iE(f,c[g>>2]|0);c[e>>2]=f}f=kE(f)|0;h=c[g>>2]|0;if((f|0)!=(jd[c[(c[h>>2]|0)+104>>2]&511](h)|0)){h=b;h=c[h>>2]|0;i=d;return h|0}f=FW(156)|0;g=c[g>>2]|0;h=c[e>>2]|0;if((h|0)==0){h=FW(16)|0;iE(h,g);c[e>>2]=h}GC(f,g,h,c[a+28>>2]|0,c[a+32>>2]|0);c[b>>2]=f;h=b;h=c[h>>2]|0;i=d;return h|0}function cg(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;e=FW(68)|0;a[e+52|0]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+28>>2]=0;c[e+24>>2]=0;c[e+36>>2]=0;c[e+40>>2]=0;c[e+44>>2]=0;c[e+64>>2]=-1;c[e+32>>2]=0;c[e+48>>2]=0;c[e+56>>2]=b;c[e>>2]=d;i=f;return e|0}function dg(a,b){a=a|0;b=b|0;var 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;l=i;d=i;i=i+8|0;m=d;o=i;i=i+8|0;g=o;q=i;i=i+8|0;p=q;r=i;i=i+8|0;f=i;i=i+16|0;n=f;j=i;i=i+8|0;k=j;c[f>>2]=13;h=n+8|0;c[h>>2]=0;c[h+4>>2]=0;e=MC(bg(a)|0,b)|0;if((e|0)==0){c[r>>2]=b;Qe(-1,32880,r);s=0;i=l;return s|0}do{if((e|0)>=0){r=a+28|0;s=c[r>>2]|0;if((e|0)>=(c[s+16>>2]|0)){break}p=c[(kn(s,e)|0)+4>>2]|0;_m(c[r>>2]|0,e,p,n,0)|0;if((c[f>>2]|0)==7){o=c[h>>2]|0;s=FW(144)|0;h=c[r>>2]|0;c[j>>2]=e;c[k+4>>2]=p;q=FW(288)|0;hg(q,0,o);r=_t(c[a+36>>2]|0)|0;$W(d|0,j|0,8)|0;kg(s,h,b,o,m,q,r);Of(n);i=l;return s|0}else{Of(n);c[o>>2]=e;c[g+4>>2]=p;Qe(-1,32976,g);s=0;i=l;return s|0}}}while(0);c[q>>2]=e;c[p+4>>2]=b;Qe(-1,32936,p);s=0;i=l;return s|0}function eg(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((b|0)==0){b=FW(16)|0;wo(b);c[a>>2]=b}else{c[a>>2]=b}e=FW(4)|0;c[e>>2]=36008;zo(b,0,e);a=c[a>>2]|0;b=FW(4)|0;c[b>>2]=188624;zo(a,0,b);i=d;return}function fg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;a=c[a>>2]|0;if((a|0)==0){i=b;return}d=a+8|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[(c[a>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}xo(a);HW(a);i=b;return}function gg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;h=i;j=i;i=i+8|0;g=j;l=c[(c[a>>2]|0)+8>>2]|0;while(1){k=l+ -1|0;if((l|0)<=0){a=5;break}l=c[(c[c[a>>2]>>2]|0)+(k<<2)>>2]|0;if(Bd[c[(c[l>>2]|0)+12>>2]&255](l,b)|0){a=4;break}else{l=k}}if((a|0)==4){l=Cd[c[(c[l>>2]|0)+8>>2]&63](l,b,d,e,f)|0;i=h;return l|0}else if((a|0)==5){c[j>>2]=c[b+28>>2];Qe(-1,33136,g);l=FW(32)|0;ie(l,b);l=cg(1,l)|0;i=h;return l|0}return 0}function hg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;p=i;f=i;i=i+16|0;n=f;B=i;i=i+32|0;z=b+32|0;y=b+72|0;x=b+104|0;s=b+136|0;o=b+176|0;bX(b|0,0,64)|0;bX(y|0,0,96)|0;c[o>>2]=13;m=b+184|0;c[m>>2]=0;c[m+4>>2]=0;m=b+192|0;c[m>>2]=13;l=b+200|0;c[l>>2]=0;c[l+4>>2]=0;l=b+208|0;c[l>>2]=13;g=b+216|0;c[g>>2]=0;c[g+4>>2]=0;g=b+224|0;c[g>>2]=13;j=b+232|0;c[j>>2]=0;c[j+4>>2]=0;j=b+240|0;c[j>>2]=13;k=b+248|0;c[k>>2]=0;c[k+4>>2]=0;k=b+256|0;c[k>>2]=13;q=b+264|0;c[q>>2]=0;c[q+4>>2]=0;q=b+272|0;c[q>>2]=13;u=b+280|0;c[u>>2]=0;A=u+4|0;c[A>>2]=0;c[f>>2]=13;r=n+8|0;c[r>>2]=0;c[r+4>>2]=0;bX(B|0,0,32)|0;t=Xu(e,33160)|0;if((d|0)==0){bX(b|0,0,16)|0;h[b+16>>3]=612.0;h[b+24>>3]=792.0;c[b+168>>2]=0;c[u>>2]=0;bX(z|0,0,33)|0;c[A>>2]=0;c[q>>2]=5}else{$W(b|0,d|0,32)|0;$W(z|0,d+32|0,32)|0;a[b+64|0]=a[d+64|0]&1;c[b+168>>2]=c[d+168>>2];Mf(d+272|0,q)|0}if(ig(0,e,33168,B)|0){$W(b|0,B|0,32)|0}u=b+64|0;do{if(ig(0,e,33184,z)|0){a[u]=1}else{if((a[u]&1)!=0){break}$W(z|0,b|0,32)|0}}while(0);do{if(t){d=b+48|0;u=b+16|0;w=+h[u>>3];v=+h[b>>3];if(+h[d>>3]- +h[z>>3]>w-v){h[z>>3]=v;h[d>>3]=w}A=b+56|0;B=b+40|0;t=b+24|0;w=+h[t>>3];C=b+8|0;v=+h[C>>3];if(+h[A>>3]- +h[B>>3]>w-v){h[B>>3]=v;h[A>>3]=w}$W(y|0,z|0,32)|0;ig(0,e,33192,y)|0;$W(x|0,z|0,32)|0;ig(0,e,33208,x)|0;$W(s|0,z|0,32)|0;ig(0,e,33216,s)|0;w=+h[z>>3];v=+h[b>>3];do{if(w>3]=v}else{D=+h[u>>3];if(w<=D){break}h[z>>3]=D}}while(0);D=+h[d>>3];do{if(D>3]=v}else{w=+h[u>>3];if(D<=w){break}h[d>>3]=w}}while(0);D=+h[B>>3];w=+h[C>>3];do{if(D>3]=w}else{E=+h[t>>3];if(D<=E){break}h[B>>3]=E}}while(0);D=+h[A>>3];do{if(D>3]=w}else{E=+h[t>>3];if(D<=E){break}h[A>>3]=E}}while(0);D=+h[y>>3];do{if(D>3]=v}else{E=+h[u>>3];if(D<=E){break}h[y>>3]=E}}while(0);y=b+88|0;D=+h[y>>3];do{if(D>3]=v}else{E=+h[u>>3];if(D<=E){break}h[y>>3]=E}}while(0);y=b+80|0;D=+h[y>>3];do{if(D>3]=w}else{E=+h[t>>3];if(D<=E){break}h[y>>3]=E}}while(0);y=b+96|0;E=+h[y>>3];do{if(E>3]=w}else{D=+h[t>>3];if(E<=D){break}h[y>>3]=D}}while(0);D=+h[x>>3];do{if(D>3]=v}else{E=+h[u>>3];if(D<=E){break}h[x>>3]=E}}while(0);x=b+120|0;D=+h[x>>3];do{if(D>3]=v}else{E=+h[u>>3];if(D<=E){break}h[x>>3]=E}}while(0);x=b+112|0;D=+h[x>>3];do{if(D>3]=w}else{E=+h[t>>3];if(D<=E){break}h[x>>3]=E}}while(0);x=b+128|0;E=+h[x>>3];do{if(E>3]=w}else{D=+h[t>>3];if(E<=D){break}h[x>>3]=D}}while(0);D=+h[s>>3];do{if(D>3]=v}else{E=+h[u>>3];if(D<=E){break}h[s>>3]=E}}while(0);s=b+152|0;D=+h[s>>3];do{if(D>3]=v}else{v=+h[u>>3];if(D<=v){break}h[s>>3]=v}}while(0);s=b+144|0;v=+h[s>>3];do{if(v>3]=w}else{D=+h[t>>3];if(v<=D){break}h[s>>3]=D}}while(0);s=b+160|0;v=+h[s>>3];if(v>3]=w;break}w=+h[t>>3];if(v<=w){break}h[s>>3]=w}else{$W(y|0,z|0,32)|0;ig(0,e,33192,y)|0;$W(x|0,z|0,32)|0;ig(0,e,33208,x)|0;$W(s|0,z|0,32)|0;ig(0,e,33216,s)|0}}while(0);Yu(e,33224,n,0)|0;if((c[f>>2]|0)==1){C=b+168|0;c[C>>2]=c[r>>2];r=C}else{r=b+168|0}Of(n);b=c[r>>2]|0;if((b|0)<0){C=~b;b=b+(C-((C>>>0)%360|0))+360|0;c[r>>2]=b}if((b|0)>359){c[r>>2]=((b+ -360|0)>>>0)%360|0}Yu(e,33232,o,0)|0;Yu(e,33248,m,0)|0;Yu(e,33264,l,0)|0;Yu(e,33272,g,0)|0;Yu(e,33288,j,0)|0;Yu(e,33304,k,0)|0;Yu(e,33320,n,0)|0;if((c[f>>2]|0)!=7){Of(n);i=p;return}Of(q);Mf(n,q)|0;Of(n);i=p;return}function ig(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0.0,u=0,v=0,w=0.0;a=i;n=i;i=i+8|0;o=n;s=i;i=i+8|0;r=s;u=i;i=i+8|0;v=u;p=i;i=i+16|0;f=p;l=i;i=i+16|0;g=l;c[p>>2]=13;m=f+8|0;c[m>>2]=0;c[m+4>>2]=0;c[l>>2]=13;k=g+8|0;c[k>>2]=0;c[k+4>>2]=0;Yu(b,d,f,0)|0;if((c[p>>2]|0)!=6){d=0;Of(f);i=a;return d|0}b=c[m>>2]|0;if((c[b+12>>2]|0)!=4){d=0;Of(f);i=a;return d|0}ut(b,0,g)|0;b=c[l>>2]|0;do{if((b+ -1|0)>>>0<2){if((b|0)==1){j=+(c[k>>2]|0);b=1;break}else{j=+h[k>>3];b=1;break}}else{j=0.0;b=0}}while(0);Of(g);d=c[p>>2]|0;if((d|0)!=6){c[u>>2]=d;c[v+4>>2]=6;Qe(0,33832,v);tc()}ut(c[m>>2]|0,1,g)|0;u=c[l>>2]|0;do{if((u+ -1|0)>>>0<2){if((u|0)==1){q=+(c[k>>2]|0);break}else{q=+h[k>>3];break}}else{q=0.0;b=0}}while(0);Of(g);u=c[p>>2]|0;if((u|0)!=6){c[s>>2]=u;c[r+4>>2]=6;Qe(0,33832,r);tc()}ut(c[m>>2]|0,2,g)|0;r=c[l>>2]|0;do{if((r+ -1|0)>>>0<2){if((r|0)==1){t=+(c[k>>2]|0);break}else{t=+h[k>>3];break}}else{t=0.0;b=0}}while(0);Of(g);p=c[p>>2]|0;if((p|0)!=6){c[n>>2]=p;c[o+4>>2]=6;Qe(0,33832,o);tc()}ut(c[m>>2]|0,3,g)|0;l=c[l>>2]|0;do{if((l+ -1|0)>>>0<2){if((l|0)==1){w=+(c[k>>2]|0);break}else{w=+h[k>>3];break}}else{w=0.0;b=0}}while(0);Of(g);if(j==0.0&t==0.0&q==0.0&w==0.0){d=0;Of(f);i=a;return d|0}g=b&1;if(g<<24>>24==0){d=g<<24>>24!=0;Of(f);i=a;return d|0}k=j>t;g=q>w;h[e>>3]=k?t:j;h[e+8>>3]=g?w:q;h[e+16>>3]=k?j:t;h[e+24>>3]=g?q:w;d=1;Of(f);i=a;return d|0}function jg(a){a=a|0;var b=0;b=i;Of(a+176|0);Of(a+192|0);Of(a+208|0);Of(a+224|0);Of(a+240|0);Of(a+256|0);Of(a+272|0);i=b;return}function kg(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var 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,O=0,P=0,Q=0,R=0.0,S=0,T=0;o=i;t=i;i=i+8|0;u=t;l=i;i=i+8|0;z=l;q=i;i=i+8|0;r=q;F=i;i=i+8|0;G=F;J=i;i=i+8|0;K=J;N=i;i=i+8|0;O=N;Q=i;i=i+16|0;D=Q;T=b+8|0;c[T>>2]=13;C=b+16|0;c[C>>2]=0;c[C+4>>2]=0;C=b+40|0;c[C>>2]=13;H=b+48|0;c[H>>2]=0;I=H+4|0;c[I>>2]=0;m=b+56|0;c[m>>2]=13;E=b+64|0;c[E>>2]=0;y=E+4|0;c[y>>2]=0;x=b+80|0;c[x>>2]=13;A=b+88|0;c[A>>2]=0;B=A+4|0;c[B>>2]=0;P=b+96|0;c[P>>2]=13;s=b+104|0;c[s>>2]=0;c[s+4>>2]=0;s=b+112|0;c[s>>2]=13;v=b+120|0;c[v>>2]=0;w=v+4|0;c[w>>2]=0;c[Q>>2]=13;M=D+8|0;c[M>>2]=0;c[M+4>>2]=0;n=b+136|0;a[n]=1;c[b>>2]=d;p=b+32|0;c[p>>2]=e;L=b+128|0;h[L>>3]=-1.0;e=b+72|0;c[e>>2]=0;Kf(T,f)|0;T=g;S=c[T+4>>2]|0;g=b+24|0;c[g>>2]=c[T>>2];c[g+4>>2]=S;c[b+36>>2]=j;Zu(f,33336,P)|0;g=c[P>>2]|0;if(!((g|0)==5|(g|0)==7|(g|0)==9)){S=c[p>>2]|0;T=Pf(P)|0;c[N>>2]=S;c[O+4>>2]=T;Qe(-1,33344,O);Of(P)}Zu(f,33400,D)|0;N=c[Q>>2]|0;do{if((N+ -1|0)>>>0<2){if((N|0)==1){R=+(c[M>>2]|0)}else{R=+h[M>>3]}h[L>>3]=R}else{if((N|0)==5){break}S=c[p>>2]|0;T=Pf(D)|0;c[J>>2]=S;c[K+4>>2]=T;Qe(-1,33408,K)}}while(0);Of(D);Zu(f,33464,C)|0;T=c[C>>2]|0;do{if((T|0)==5|(T|0)==6|(T|0)==9){T=FW(20)|0;S=Nf(C,c[b>>2]|0,D,0)|0;Qv(T,d,S,c[p>>2]|0,k);c[e>>2]=T;Of(D);Zu(f,33528,m)|0;T=c[m>>2]|0;if(!((T|0)==5|(T|0)==6|(T|0)==9)){S=c[p>>2]|0;T=Pf(m)|0;c[q>>2]=S;c[r+4>>2]=T;Qe(-1,33544,r);Of(m);break}Zu(f,33600,x)|0;T=c[x>>2]|0;if(!((T|0)==9|(T|0)==5|(T|0)==8)){S=c[p>>2]|0;T=Pf(x)|0;c[l>>2]=S;c[z+4>>2]=T;Qe(-1,33608,z);c[A>>2]=0;c[B>>2]=0;c[x>>2]=5}Zu(f,33656,s)|0;T=c[s>>2]|0;if((T|0)==5|(T|0)==7){i=o;return}S=c[p>>2]|0;T=Pf(s)|0;c[t>>2]=S;c[u+4>>2]=T;Qe(-1,33664,u);c[v>>2]=0;c[w>>2]=0;c[s>>2]=5;i=o;return}else{S=c[p>>2]|0;T=Pf(C)|0;c[F>>2]=S;c[G+4>>2]=T;Qe(-1,33472,G);Of(C);c[H>>2]=0;c[I>>2]=0;c[C>>2]=5}}while(0);c[E>>2]=0;c[y>>2]=0;c[m>>2]=5;a[n]=0;i=o;return}function lg(a){a=a|0;var b=0,d=0;b=i;d=c[a+72>>2]|0;if((d|0)!=0){Rv(d);HW(d)}d=c[a+36>>2]|0;if((d|0)!=0){Of(d+176|0);Of(d+192|0);Of(d+208|0);Of(d+224|0);Of(d+240|0);Of(d+256|0);Of(d+272|0);HW(d)}Of(a+8|0);Of(a+40|0);Of(a+56|0);Of(a+96|0);Of(a+80|0);Of(a+112|0);i=b;return}function mg(a,b,d,e,f,g,h,j,k,l,m,n,o,p,q,r,s){a=a|0;b=b|0;d=+d;e=+e;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;var t=0,u=0,v=0,w=0;t=i;v=i;i=i+16|0;u=v;c[v>>2]=13;w=u+8|0;c[w>>2]=0;c[w+4>>2]=0;if(!(td[c[(c[b>>2]|0)+56>>2]&1](b,a,d,e,f,g,h,j,k,l,m,n,o,p,q)|0)){i=t;return}f=ng(a,b,d,e,f,g,h,j,k,l,m,0,o,p,q,0,0)|0;Nf(a+56|0,c[a>>2]|0,u,0)|0;if((c[v>>2]|0)!=5){yx(f);vx(f,u,1);tx(f)}Of(u);v=FW(8)|0;w=c[a>>2]|0;bt(v,w,o,Nf(a+40|0,w,u,0)|0);Of(u);u=v+4|0;if((c[u>>2]|0)>0){if(uf(c[834]|0)|0){fb(33904)|0}a:do{if((c[u>>2]|0)>0){if((r|0)==0){r=0;while(1){w=c[(c[v>>2]|0)+(r<<2)>>2]|0;Gd[c[(c[w>>2]|0)+8>>2]&255](w,f,n);r=r+1|0;if((r|0)>=(c[u>>2]|0)){break a}}}else{a=0}do{if(Bd[r&255](c[(c[v>>2]|0)+(a<<2)>>2]|0,s)|0){w=c[(c[v>>2]|0)+(a<<2)>>2]|0;Gd[c[(c[w>>2]|0)+8>>2]&255](w,f,n)}a=a+1|0;}while((a|0)<(c[u>>2]|0))}}while(0);fd[c[(c[b>>2]|0)+68>>2]&511](b)}if((v|0)!=0){dt(v);HW(v)}if((f|0)==0){i=t;return}sx(f);HW(f);i=t;return}function ng(b,d,e,f,g,j,l,m,n,o,p,q,r,s,t,u,v){b=b|0;d=d|0;e=+e;f=+f;g=g|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;var w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0;v=i;w=i;i=i+8|0;x=i;i=i+32|0;z=x;A=i;i=i+32|0;y=A;u=i;i=i+8|0;B=i;i=i+32|0;q=B;a[u]=l&1;bX(B|0,0,32)|0;l=b+36|0;g=(c[(c[l>>2]|0)+168>>2]|0)+g|0;if((g|0)>359){g=g+ -360|0}else{g=(g|0)<0?g+360|0:g}og(b,e,f,g,j,jd[c[(c[d>>2]|0)+8>>2]&511](d)|0,+(m|0),+(n|0),+(o|0),+(p|0),q,u);n=c[l>>2]|0;o=n+32|0;if(uf(c[834]|0)|0){C=+h[n+8>>3];D=+h[n+16>>3];E=+h[n+24>>3];B=A;h[k>>3]=+h[n>>3];c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];B=y+8|0;h[k>>3]=C;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];B=y+16|0;h[k>>3]=D;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];B=y+24|0;h[k>>3]=E;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];Kb(33728,y|0)|0;E=+h[n+40>>3];D=+h[n+48>>3];C=+h[n+56>>3];B=x;h[k>>3]=+h[o>>3];c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];B=z+8|0;h[k>>3]=E;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];B=z+16|0;h[k>>3]=D;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];B=z+24|0;h[k>>3]=C;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];Kb(33768,z|0)|0;c[w>>2]=c[(c[l>>2]|0)+168>>2];Kb(33808,w|0)|0}n=FW(136)|0;m=c[b>>2]|0;b=c[b+32>>2]|0;l=c[l>>2]|0;if((c[l+272>>2]|0)!=7){l=0;B=a[u]|0;B=B&1;B=B<<24>>24!=0;B=B?o:0;rx(n,m,d,b,l,r,e,f,q,B,g,s,t);i=v;return n|0}l=c[l+280>>2]|0;B=a[u]|0;B=B&1;B=B<<24>>24!=0;B=B?o:0;rx(n,m,d,b,l,r,e,f,q,B,g,s,t);i=v;return n|0}function og(b,d,e,f,g,j,k,l,m,n,o,p){b=b|0;d=+d;e=+e;f=f|0;g=g|0;j=j|0;k=+k;l=+l;m=+m;n=+n;o=o|0;p=p|0;var q=0,r=0;q=i;r=c[b+36>>2]|0;b=r+32|0;if(m<0.0|n<0.0){if(g){$W(o|0,r|0,32)|0;i=q;return}else{$W(o|0,b|0,32)|0;a[p]=0;i=q;return}}g=g?r:b;d=72.0/d;e=72.0/e;if((f|0)==180){r=g+16|0;h[o>>3]=+h[r>>3]-(k+m)*d;h[o+16>>3]=+h[r>>3]-d*k;if(j){r=g+8|0;h[o+8>>3]=e*l+ +h[r>>3];h[o+24>>3]=(l+n)*e+ +h[r>>3];i=q;return}else{r=g+24|0;h[o+8>>3]=+h[r>>3]-(l+n)*e;h[o+24>>3]=+h[r>>3]-e*l;i=q;return}}else if((f|0)==270){if(j){r=g+16|0;h[o>>3]=+h[r>>3]-(l+n)*e;h[o+16>>3]=+h[r>>3]-e*l}else{h[o>>3]=e*l+ +h[g>>3];h[o+16>>3]=(l+n)*e+ +h[g>>3]}r=g+24|0;h[o+8>>3]=+h[r>>3]-(k+m)*d;h[o+24>>3]=+h[r>>3]-d*k;i=q;return}else if((f|0)==90){if(j){h[o>>3]=e*l+ +h[g>>3];h[o+16>>3]=(l+n)*e+ +h[g>>3]}else{r=g+16|0;h[o>>3]=+h[r>>3]-(l+n)*e;h[o+16>>3]=+h[r>>3]-e*l}r=g+8|0;h[o+8>>3]=d*k+ +h[r>>3];h[o+24>>3]=(k+m)*d+ +h[r>>3];i=q;return}else{h[o>>3]=d*k+ +h[g>>3];h[o+16>>3]=(k+m)*d+ +h[g>>3];if(j){r=g+24|0;h[o+8>>3]=+h[r>>3]-(l+n)*e;h[o+24>>3]=+h[r>>3]-e*l;i=q;return}else{r=g+8|0;h[o+8>>3]=e*l+ +h[r>>3];h[o+24>>3]=(l+n)*e+ +h[r>>3];i=q;return}}}function pg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;h=i;i=i+8|0;f=i;i=i+8|0;k=i;i=i+8|0;j=k;m=i;i=i+16|0;d=m;c[m>>2]=13;g=d+8|0;c[g>>2]=0;c[g+4>>2]=0;l=c[b>>2]|0;if((l|0)!=7){c[k>>2]=l;c[j+4>>2]=7;Qe(0,34440,j);tc()}Yu(c[b+8>>2]|0,33928,d,0)|0;if((c[m>>2]|0)!=4){Qe(-1,33992,h);m=0;Of(d);i=e;return m|0}g=c[g>>2]|0;if((Qc(g|0,33936)|0)==0){m=FW(68)|0;rg(m,a,b);Of(d);i=e;return m|0}else{c[f>>2]=g;Qe(-1,33952,f);m=0;Of(d);i=e;return m|0}return 0}function qg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;e=i;i=i+8|0;if((b|0)==0&(d|0)==0){b=0}else{b=sd[c[(c[a>>2]|0)+8>>2]&127](a,b,d)|0}d=Bd[c[(c[a>>2]|0)+20>>2]&255](a,b)|0;if((b|0)!=0){hd[c[(c[a>>2]|0)+16>>2]&127](a,b)}if(d){g=1;i=f;return g|0}b=0;g=0;do{d=jd[c[(c[a>>2]|0)+12>>2]&511](a)|0;if((d|0)==0){break}g=Bd[c[(c[a>>2]|0)+20>>2]&255](a,d)|0;hd[c[(c[a>>2]|0)+16>>2]&127](a,d);b=b+1|0;}while((b|0)<3&(g^1));if(g){g=1;i=f;return g|0}Qe(-1,34056,e);g=0;i=f;return g|0}function rg(b,d,e){b=b|0;d=d|0;e=e|0;var 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,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,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=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;g=i;Ia=i;i=i+8|0;x=i;i=i+8|0;t=x;r=i;i=i+8|0;s=r;A=i;i=i+8|0;B=A;F=i;i=i+8|0;E=F;I=i;i=i+8|0;H=I;Q=i;i=i+8|0;N=Q;S=i;i=i+8|0;T=S;da=i;i=i+8|0;ca=da;ka=i;i=i+8|0;ja=ka;ba=i;i=i+8|0;aa=ba;ha=i;i=i+8|0;ia=ha;oa=i;i=i+8|0;ma=oa;qa=i;i=i+8|0;va=qa;za=i;i=i+8|0;ya=za;Ba=i;i=i+8|0;Aa=Ba;Ga=i;i=i+8|0;Ja=Ga;Ma=i;i=i+8|0;Na=Ma;Qa=i;i=i+8|0;Oa=Qa;Sa=i;i=i+8|0;Ra=Sa;Ua=i;i=i+8|0;Ta=Ua;Wa=i;i=i+8|0;Va=Wa;fa=i;i=i+8|0;Xa=fa;Fa=i;i=i+16|0;h=Fa;Ha=i;i=i+16|0;j=Ha;Ca=i;i=i+16|0;k=Ca;J=i;i=i+16|0;l=J;G=i;i=i+16|0;m=G;M=i;i=i+16|0;f=M;w=i;i=i+16|0;n=w;v=i;i=i+16|0;q=v;ra=i;i=i+16|0;_=ra;sa=i;i=i+16|0;Y=sa;ta=i;i=i+16|0;W=ta;la=i;i=i+16|0;Z=la;na=i;i=i+16|0;V=na;ea=i;i=i+16|0;X=ea;R=i;i=i+16|0;P=R;La=b+4|0;c[La>>2]=d;c[b>>2]=34088;c[Fa>>2]=13;Ka=h+8|0;c[Ka>>2]=0;c[Ka+4>>2]=0;c[Ha>>2]=13;Ea=j+8|0;c[Ea>>2]=0;c[Ea+4>>2]=0;c[Ca>>2]=13;Da=k+8|0;c[Da>>2]=0;c[Da+4>>2]=0;c[J>>2]=13;K=l+8|0;c[K>>2]=0;c[K+4>>2]=0;c[G>>2]=13;D=m+8|0;c[D>>2]=0;c[D+4>>2]=0;c[M>>2]=13;O=f+8|0;c[O>>2]=0;Pa=O+4|0;c[Pa>>2]=0;c[w>>2]=13;z=n+8|0;c[z>>2]=0;c[z+4>>2]=0;c[v>>2]=13;u=q+8|0;c[u>>2]=0;c[u+4>>2]=0;c[ra>>2]=13;wa=_+8|0;c[wa>>2]=0;c[wa+4>>2]=0;c[sa>>2]=13;xa=Y+8|0;c[xa>>2]=0;c[xa+4>>2]=0;c[ta>>2]=13;ua=W+8|0;c[ua>>2]=0;c[ua+4>>2]=0;c[la>>2]=13;ga=Z+8|0;c[ga>>2]=0;c[ga+4>>2]=0;c[na>>2]=13;pa=V+8|0;c[pa>>2]=0;c[pa+4>>2]=0;c[ea>>2]=13;$=X+8|0;c[$>>2]=0;c[$+4>>2]=0;c[R>>2]=13;U=P+8|0;c[U>>2]=0;c[U+4>>2]=0;y=b+64|0;d=b+60|0;L=b+52|0;C=b+56|0;bX(L|0,0,13)|0;Ya=c[e>>2]|0;if((Ya|0)!=7){c[fa>>2]=Ya;c[Xa+4>>2]=7;Qe(0,34440,Xa);tc()}fa=e+8|0;Yu(c[fa>>2]|0,34144,h,0)|0;Xa=c[e>>2]|0;if((Xa|0)!=7){c[Wa>>2]=Xa;c[Va+4>>2]=7;Qe(0,34440,Va);tc()}Yu(c[fa>>2]|0,34152,j,0)|0;Va=c[e>>2]|0;if((Va|0)!=7){c[Ua>>2]=Va;c[Ta+4>>2]=7;Qe(0,34440,Ta);tc()}Yu(c[fa>>2]|0,34160,k,0)|0;Ta=c[e>>2]|0;if((Ta|0)!=7){c[Sa>>2]=Ta;c[Ra+4>>2]=7;Qe(0,34440,Ra);tc()}Yu(c[fa>>2]|0,34168,l,0)|0;Ra=c[e>>2]|0;if((Ra|0)!=7){c[Qa>>2]=Ra;c[Oa+4>>2]=7;Qe(0,34440,Oa);tc()}Yu(c[fa>>2]|0,34176,m,0)|0;Oa=c[e>>2]|0;if((Oa|0)!=7){c[Ma>>2]=Oa;c[Na+4>>2]=7;Qe(0,34440,Na);tc()}Yu(c[fa>>2]|0,34184,f,0)|0;if((c[M>>2]|0)==14){Ya=c[O>>2]|0;Of(f);c[Pa>>2]=0;c[M>>2]=1;c[O>>2]=Ya}Ma=c[(c[La>>2]|0)+28>>2]|0;La=c[Ma+40>>2]|0;if((La|0)!=7){c[Ga>>2]=La;c[Ja+4>>2]=7;Qe(0,34440,Ja);tc()}Yu(c[Ma+48>>2]|0,34192,n,0)|0;a:do{if((c[Fa>>2]|0)==1){if((c[Ha>>2]|0)!=1){o=85;break}if((c[J>>2]|0)!=3){o=85;break}if((c[(c[K>>2]|0)+24>>2]|0)!=32){o=85;break}if((c[G>>2]|0)!=3){o=85;break}if((c[(c[D>>2]|0)+24>>2]|0)!=32){o=85;break}if((c[M>>2]|0)!=1){o=85;break}Ha=c[Ka>>2]|0;Fa=b+36|0;c[Fa>>2]=Ha;Ia=c[Ea>>2]|0;Ea=b+40|0;c[Ea>>2]=Ia;Ga=b+48|0;c[Ga>>2]=0;do{if((Ia|0)==2){o=26}else{if((c[Ca>>2]|0)!=1){o=26;break}c[b+32>>2]=(c[Da>>2]|0)/8|0}}while(0);if((o|0)==26){c[b+32>>2]=5}Ca=b+44|0;a[Ca]=1;do{if((Ha|0)==4&(Ia|0)==4){Da=c[e>>2]|0;if((Da|0)!=7){c[Ba>>2]=Da;c[Aa+4>>2]=7;Qe(0,34440,Aa);tc()}Yu(c[fa>>2]|0,34200,_,0)|0;Aa=c[e>>2]|0;if((Aa|0)!=7){c[za>>2]=Aa;c[ya+4>>2]=7;Qe(0,34440,ya);tc()}Yu(c[fa>>2]|0,34208,Y,0)|0;ya=c[e>>2]|0;if((ya|0)!=7){c[qa>>2]=ya;c[va+4>>2]=7;Qe(0,34440,va);tc()}Yu(c[fa>>2]|0,34216,W,0)|0;do{if((c[ra>>2]|0)==7){if((c[sa>>2]|0)!=4){break}if((c[ta>>2]|0)!=4){break}qa=c[xa>>2]|0;if((Qc(qa|0,c[ua>>2]|0)|0)!=0){break}if((c[(Yu(c[wa>>2]|0,qa,Z,0)|0)>>2]|0)==7){qa=c[la>>2]|0;if((qa|0)!=7){c[oa>>2]=qa;c[ma+4>>2]=7;Qe(0,34440,ma);tc()}Yu(c[ga>>2]|0,34224,V,0)|0;do{if((c[na>>2]|0)==4){ma=c[pa>>2]|0;if((Qc(ma|0,34232)|0)==0){c[Fa>>2]=2;c[Ea>>2]=3;ca=c[la>>2]|0;if((ca|0)!=7){c[ha>>2]=ca;c[ia+4>>2]=7;Qe(0,34440,ia);tc()}do{if((c[(Yu(c[ga>>2]|0,34160,X,0)|0)>>2]|0)==1){ca=c[ea>>2]|0;if((ca|0)==1){c[b+32>>2]=c[$>>2];break}else{c[ba>>2]=ca;c[aa+4>>2]=1;Qe(0,34440,aa);tc()}}}while(0);Of(X);break}if((Qc(ma|0,34240)|0)!=0){break}c[Fa>>2]=2;c[Ea>>2]=3;c[Ga>>2]=1;aa=c[la>>2]|0;if((aa|0)!=7){c[ka>>2]=aa;c[ja+4>>2]=7;Qe(0,34440,ja);tc()}do{if((c[(Yu(c[ga>>2]|0,34160,X,0)|0)>>2]|0)==1){aa=c[ea>>2]|0;if((aa|0)==1){c[b+32>>2]=c[$>>2];break}else{c[da>>2]=aa;c[ca+4>>2]=1;Qe(0,34440,ca);tc()}}}while(0);Of(X)}}while(0);Of(V)}Of(Z)}}while(0);Of(W);Of(Y);Of(_);V=c[e>>2]|0;if((V|0)!=7){c[S>>2]=V;c[T+4>>2]=7;Qe(0,34440,T);tc()}do{if((c[(Yu(c[fa>>2]|0,34248,P,0)|0)>>2]|0)==0){R=c[R>>2]|0;if((R|0)==0){a[Ca]=a[U]&1;break}else{c[Q>>2]=R;c[N+4>>2]=0;Qe(0,34440,N);tc()}}}while(0);Of(P);M=c[M>>2]|0;if((M|0)==1){break}c[I>>2]=M;c[H+4>>2]=1;Qe(0,34440,H);tc()}}while(0);c[b+8>>2]=c[O>>2];H=c[J>>2]|0;if((H|0)!=3){c[F>>2]=H;c[E+4>>2]=3;Qe(0,34440,E);tc()}Ya=c[K>>2]|0;E=FW(32)|0;ie(E,Ya);c[L>>2]=E;E=c[G>>2]|0;if((E|0)!=3){c[A>>2]=E;c[B+4>>2]=3;Qe(0,34440,B);tc()}B=c[D>>2]|0;A=FW(32)|0;ie(A,B);c[C>>2]=A;A=c[Fa>>2]|0;B=c[Ea>>2]|0;do{if((A+ -1|0)>>>0<2){if((B+ -2|0)>>>0>=2){break}if((c[w>>2]|0)==6){do{if((c[(ut(c[z>>2]|0,0,q)|0)>>2]|0)==3){t=c[v>>2]|0;if((t|0)==3){Ya=c[u>>2]|0;p=FW(32)|0;ie(p,Ya);break}else{c[r>>2]=t;c[s+4>>2]=3;Qe(0,34440,s);tc()}}else{p=FW(32)|0;ee(p)}}while(0);c[d>>2]=p;Of(q)}else{Ya=FW(32)|0;ee(Ya);c[d>>2]=Ya}a[y]=1;break a}}while(0);c[x>>2]=A;c[t+4>>2]=B;Qe(-1,34264,t)}else{o=85}}while(0);if((o|0)==85){Qe(-1,34336,Ia)}o=b+32|0;if((c[o>>2]|0)<=16){Of(n);Of(f);Of(m);Of(l);Of(k);Of(j);Of(h);i=g;return}c[o>>2]=16;Of(n);Of(f);Of(m);Of(l);Of(k);Of(j);Of(h);i=g;return}function sg(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=34088;d=c[a+60>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+52>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+56>>2]|0;if((d|0)==0){HW(a);i=b;return}ke(d);HW(d);HW(a);i=b;return}function tg(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=34088;d=c[a+60>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+52>>2]|0;if((d|0)!=0){ke(d);HW(d)}a=c[a+56>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function ug(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;a=FW(8)|0;if((b|0)==0){b=0}else{f=FW(32)|0;ie(f,b);b=f}if((d|0)==0){d=0}else{f=FW(32)|0;ie(f,d);d=f}c[a>>2]=b;c[a+4>>2]=d;i=e;return a|0}function vg(a){a=a|0;i=i;return 0}function wg(a,b){a=a|0;b=b|0;var d=0;a=i;if((b|0)==0){i=a;return}d=c[b>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[b+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}HW(b);i=a;return}function xg(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;if((a[b+64|0]&1)==0){d=0;i=e;return d|0}if((d|0)==0){f=0;d=0}else{f=c[d>>2]|0;d=c[d+4>>2]|0}d=Cu(c[b+36>>2]|0,c[b+40>>2]|0,c[b+32>>2]|0,c[b+52>>2]|0,c[b+56>>2]|0,c[b+8>>2]|0,c[b+60>>2]|0,f,d,b+13|0,(a[b+44|0]&1)!=0,b+12|0)|0;i=e;return d|0}function yg(a){a=a|0;i=i;return c[a+8>>2]|0}function zg(b){b=b|0;i=i;return(a[b+12|0]&1)!=0|0}function Ag(a){a=a|0;i=i;return a+13|0}function Bg(a){a=a|0;i=i;return c[a+32>>2]|0}function Cg(a){a=a|0;i=i;return c[a+36>>2]|0}function Dg(a){a=a|0;i=i;return c[a+40>>2]|0}function Eg(a){a=a|0;i=i;return c[a+48>>2]|0}function Fg(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function Gg(a){a=a|0;i=i;return}function Hg(b,d,e,f){b=b|0;d=+d;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;j=i;i=i+8|0;h=i;i=i+16|0;k=h;m=i;i=i+128|0;n=m;o=c[b+4>>2]|0;l=c[o+8>>2]|0;fB(o,d,n);if((a[b+12|0]&1)!=0){a[f]=(((c[m>>2]|0)*255|0)+32768|0)>>>16;a[f+1|0]=(((c[n+4>>2]|0)*255|0)+32768|0)>>>16;a[f+2|0]=(((c[n+8>>2]|0)*255|0)+32768|0)>>>16;i=g;return}switch(e|0){case 1:case 0:{Gd[c[(c[l>>2]|0)+16>>2]&255](l,n,j);l=0;k=0;h=(((c[j>>2]|0)*255|0)+32768|0)>>>16&255;break};case 2:case 3:case 4:{Gd[c[(c[l>>2]|0)+20>>2]&255](l,n,k);l=(((c[k+8>>2]|0)*255|0)+32768|0)>>>16&255;k=(((c[k+4>>2]|0)*255|0)+32768|0)>>>16&255;h=(((c[h>>2]|0)*255|0)+32768|0)>>>16&255;break};default:{l=0;k=0;h=0}}a[f]=h;a[f+1|0]=k;a[f+2|0]=l;i=g;return}function Ig(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function Jg(a){a=a|0;i=i;return}function Kg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0.0;g=i;k=i;i=i+8|0;m=k;j=i;i=i+16|0;l=j;o=i;i=i+128|0;n=o;s=i;i=i+8|0;r=i;i=i+8|0;Hy(b+8|0,+(d|0),+(e|0),s,r);q=+h[b+104>>3]*((+h[s>>3]- +h[b+56>>3])*+h[b+88>>3]+(+h[r>>3]- +h[b+64>>3])*+h[b+96>>3]);do{if(q<0.0){d=c[b+128>>2]|0;if((a[d+364|0]&1)==0){p=4;break}q=+h[b+112>>3]}else{p=4}}while(0);a:do{if((p|0)==4){do{if(q>1.0){d=c[b+128>>2]|0;if((a[d+365|0]&1)==0){break}q=+h[b+120>>3];break a}}while(0);if(q>=0.0&q<=1.0){t=+h[b+112>>3];d=c[b+128>>2]|0;q=t+q*(+h[b+120>>3]-t);break}else{s=0;i=g;return s|0}}}while(0);WA(d,q,n);n=b+132|0;$W((c[n>>2]|0)+124|0,o|0,128)|0;n=c[n>>2]|0;o=c[n+116>>2]|0;n=n+124|0;switch(c[b+136>>2]|0){case 2:case 3:case 4:{Gd[c[(c[o>>2]|0)+20>>2]&255](o,n,l);m=(((c[l+8>>2]|0)*255|0)+32768|0)>>>16&255;l=(((c[l+4>>2]|0)*255|0)+32768|0)>>>16&255;j=(((c[j>>2]|0)*255|0)+32768|0)>>>16&255;break};case 1:case 0:{Gd[c[(c[o>>2]|0)+16>>2]&255](o,n,m);m=0;l=0;j=(((c[k>>2]|0)*255|0)+32768|0)>>>16&255;break};default:{m=0;l=0;j=0}}a[f]=j;a[f+1|0]=l;a[f+2|0]=m;s=1;i=g;return s|0}function Lg(d,e,f,g,j,k,l,m,n,o,p,q){d=d|0;e=e|0;f=+f;g=+g;j=+j;k=+k;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0;r=i;s=i;i=i+8|0;u=e;t=c[u+4>>2]|0;e=d;c[e>>2]=c[u>>2];c[e+4>>2]=t;h[d+8>>3]=f;h[d+16>>3]=g;h[d+24>>3]=j;h[d+32>>3]=k;c[d+40>>2]=l;c[d+44>>2]=m;c[d+48>>2]=n;c[d+52>>2]=o;a[d+56|0]=p&1;if(q){m=da(o,n)|0;c[d+60>>2]=m}else{m=da(n+7>>3,o)|0;c[d+60>>2]=m}p=d+68|0;c[p>>2]=8;do{if((m|0)<257){c[d+64>>2]=8;e=8;l=8}else{if((m|0)<513){c[d+64>>2]=4;e=4;l=8;break}if((m|0)<1025){c[d+64>>2]=2;e=2;l=8;break}if((m|0)<2049){c[d+64>>2]=1;c[p>>2]=4;e=1;l=4;break}c[d+64>>2]=1;if((m|0)<4097){c[p>>2]=2;e=1;l=2;break}else{c[p>>2]=1;e=1;l=1;break}}}while(0);q=d+64|0;do{if((m|0)<(((10485760/(l>>>0)|0)>>>0)/(e>>>0)|0|0)){u=ze(da(e,l)|0,m)|0;c[d+72>>2]=u;if((u|0)==0){break}s=ye(da(c[p>>2]|0,c[q>>2]|0)|0,4)|0;d=d+76|0;c[d>>2]=s;m=c[p>>2]|0;if((da(m,c[q>>2]|0)|0)>0){l=0}else{i=r;return}while(1){b[s+(l<<2)+2>>1]=m+65535&l;l=l+1|0;m=c[p>>2]|0;if((l|0)>=(da(m,c[q>>2]|0)|0)){break}s=c[d>>2]|0}i=r;return}else{Qe(-1,34592,s);c[d+72>>2]=0}}while(0);c[d+76>>2]=0;i=r;return}function Mg(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0;k=i;c[b+104>>2]=0;c[b>>2]=34864;l=b+112|0;c[l>>2]=d;d=b+116|0;c[d>>2]=e;e=b+120|0;a[e]=h&1;a[b+121|0]=j&1;do{if(j){if(!(kf(c[834]|0)|0)){h=0;break}h=(c[l>>2]|0)!=0|0}else{h=0}}while(0);j=b+122|0;a[j]=h;a[b+123|0]=0;Ng(b,72.0,72.0);a[b+124|0]=f&1;h=(g|0)==0;f=b+125|0;if(h){a[f]=0;a[b+126|0]=0;a[b+127|0]=0}else{a[f]=a[g]|0;a[b+126|0]=a[g+1|0]|0;a[b+127|0]=a[g+2|0]|0}a[b+109|0]=h&1;c[b+176>>2]=0;g=FW(28)|0;h=c[l>>2]|0;Ke(g,1,1,c[d>>2]|0,h,(h|0)!=0,(a[e]&1)!=0);c[b+180>>2]=g;h=FW(192)|0;Jo(h,g,(a[j]&1)!=0,b+136|0);c[b+184>>2]=h;ep(h,f,0);c[b+188>>2]=0;c[b+240>>2]=0;a[b+108|0]=0;c[b+244>>2]=0;bX(b+224|0,0,13)|0;i=k;return}function Ng(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,g=0,j=0;e=i;g=a+136|0;f=a+140|0;c[f>>2]=nf(c[834]|0)|0;j=a+144|0;c[j>>2]=of(c[834]|0)|0;h[a+152>>3]=+pf(c[834]|0);h[a+160>>3]=+qf(c[834]|0);h[a+168>>3]=+rf(c[834]|0);a=mf(c[834]|0)|0;if((a|0)==2){c[g>>2]=1;if((c[f>>2]|0)>=0){i=e;return}c[f>>2]=10;i=e;return}else if((a|0)==1){c[g>>2]=0;if((c[f>>2]|0)>=0){i=e;return}c[f>>2]=4;i=e;return}else if((a|0)==3){c[g>>2]=2;if((c[f>>2]|0)<0){c[f>>2]=100}if((c[j>>2]|0)>=0){i=e;return}c[j>>2]=2;i=e;return}else{if(!(b>299.9&d>299.9)){c[g>>2]=0;if((c[f>>2]|0)>=0){i=e;return}c[f>>2]=4;i=e;return}c[g>>2]=2;if((c[f>>2]|0)<0){c[f>>2]=100}if((c[j>>2]|0)>=0){i=e;return}c[j>>2]=2;i=e;return}}function Og(a){a=a|0;var b=0;b=i;Pg(a);HW(a);i=b;return}function Pg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=34864;d=a+224|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+192+(e<<2)>>2]|0;if((g|0)!=0){Fe(c[g+72>>2]|0);Fe(c[g+76>>2]|0);HW(g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}d=c[a+188>>2]|0;if((d|0)!=0){Np(d);HW(d)}d=c[a+184>>2]|0;if((d|0)!=0){Lo(d);HW(d)}a=c[a+180>>2]|0;if((a|0)==0){i=b;return}Le(a);HW(a);i=b;return}function Qg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;c[b+176>>2]=d;d=b+188|0;f=c[d>>2]|0;if((f|0)!=0){Np(f);HW(f)}f=FW(68)|0;g=hf(c[834]|0)|0;h=(a[b+123|0]&1)!=0;do{if((a[b+121|0]&1)==0){j=0}else{if(!(jf(c[834]|0)|0)){j=0;break}j=(c[b+112>>2]|0)!=0}}while(0);Mp(f,g,h,j);c[d>>2]=f;d=b+224|0;g=c[d>>2]|0;if((g|0)>0){f=0}else{j=d;c[j>>2]=0;i=e;return}do{h=c[b+192+(f<<2)>>2]|0;if((h|0)!=0){Fe(c[h+72>>2]|0);Fe(c[h+76>>2]|0);HW(h);g=c[d>>2]|0}f=f+1|0;}while((f|0)<(g|0));j=d;c[j>>2]=0;i=e;return}function Rg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=i;j=i;i=i+48|0;g=j;k=i;i=i+8|0;l=k;m=(e|0)!=0;if(m){Ng(b,+h[e>>3],+h[e+8>>3]);n=~~(+h[e+96>>3]+.5);o=~~(+h[e+104>>3]+.5);o=(o|0)<1?1:o;p=(n|0)<1?1:n}else{o=1;p=1}n=b+184|0;q=c[n>>2]|0;if((q|0)!=0){Lo(q);HW(q)}q=b+180|0;r=c[q>>2]|0;do{if((r|0)==0){f=9}else{if((p|0)==(c[r>>2]|0)){if((o|0)==(c[r+4>>2]|0)){break}}Le(r);HW(r);f=9}}while(0);if((f|0)==9){r=FW(28)|0;s=c[b+112>>2]|0;Ke(r,p,o,c[b+116>>2]|0,s,(s|0)!=0,(a[b+120|0]&1)!=0);c[q>>2]=r}o=FW(192)|0;Jo(o,r,(a[b+122|0]&1)!=0,b+136|0);c[n>>2]=o;if(m){h[j>>3]=+h[e+16>>3];h[g+8>>3]=+h[e+24>>3];h[g+16>>3]=+h[e+32>>3];h[g+24>>3]=+h[e+40>>3];h[g+32>>3]=+h[e+48>>3];h[g+40>>3]=+h[e+56>>3];Po(o,g)}switch(c[b+112>>2]|0){case 1:case 0:{a[k]=0;break};case 4:{a[l+3|0]=-1;f=16;break};case 3:case 2:{f=16;break};default:{}}if((f|0)==16){a[l+2|0]=0;a[l+1|0]=0;a[k]=0}s=c[n>>2]|0;r=FW(8)|0;tq(r,l);Qo(s,r);r=c[n>>2]|0;s=FW(8)|0;tq(s,l);Ro(r,s);Wo(c[n>>2]|0,0);Xo(c[n>>2]|0,0);_o(c[n>>2]|0,0,0,0.0);Yo(c[n>>2]|0,10.0);Zo(c[n>>2]|0,1.0);s=c[n>>2]|0;$o(s,lf(c[834]|0)|0);ep(c[n>>2]|0,b+125|0,0);i=d;return}function Sg(b){b=b|0;var d=0;d=i;if((c[b+112>>2]|0)==0){i=d;return}if((a[b+109|0]&1)!=0){i=d;return}Ap(c[b+184>>2]|0,b+125|0);i=d;return}function Tg(a,b){a=a|0;b=b|0;b=i;dp(c[a+184>>2]|0);i=b;return}function Ug(b,d){b=b|0;d=d|0;d=i;Mo(c[b+184>>2]|0)|0;a[b+236|0]=1;i=d;return}function Vg(b,d){b=b|0;d=d|0;var e=0;e=i;hd[c[(c[b>>2]|0)+96>>2]&127](b,d);hd[c[(c[b>>2]|0)+104>>2]&127](b,d);hd[c[(c[b>>2]|0)+108>>2]&127](b,d);hd[c[(c[b>>2]|0)+116>>2]&127](b,d);hd[c[(c[b>>2]|0)+100>>2]&127](b,d);hd[c[(c[b>>2]|0)+112>>2]&127](b,d);hd[c[(c[b>>2]|0)+120>>2]&127](b,d);hd[c[(c[b>>2]|0)+140>>2]&127](b,d);hd[c[(c[b>>2]|0)+144>>2]&127](b,d);a[b+236|0]=1;i=e;return}function Wg(a,b,d,e,f,g,j,k){a=a|0;b=b|0;d=+d;e=+e;f=+f;g=+g;j=+j;k=+k;var l=0,m=0,n=0;l=i;n=i;i=i+48|0;m=n;h[n>>3]=+h[b+16>>3];h[m+8>>3]=+h[b+24>>3];h[m+16>>3]=+h[b+32>>3];h[m+24>>3]=+h[b+40>>3];h[m+32>>3]=+h[b+48>>3];h[m+40>>3]=+h[b+56>>3];Po(c[a+184>>2]|0,m);i=l;return}function Xg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,j=0,k=0.0;f=i;e=i;i=i+160|0;d=c[b+440>>2]|0;j=c[b+444>>2]|0;g=+h[b+448>>3];j=(j|0)>20?20:j;if((j|0)>0){b=0}else{b=a+184|0;b=c[b>>2]|0;_o(b,e,j,g);i=f;return}do{k=+h[d+(b<<3)>>3];h[e+(b<<3)>>3]=k<0.0?0.0:k;b=b+1|0;}while((b|0)<(j|0));b=a+184|0;b=c[b>>2]|0;_o(b,e,j,g);i=f;return}function Yg(a,b){a=a|0;b=b|0;var d=0;d=i;Zo(c[a+184>>2]|0,+(c[b+456>>2]|0));i=d;return}function Zg(a,b){a=a|0;b=b|0;var d=0;d=i;Xo(c[a+184>>2]|0,c[b+460>>2]|0);i=d;return}function _g(a,b){a=a|0;b=b|0;var d=0;d=i;Wo(c[a+184>>2]|0,c[b+464>>2]|0);i=d;return}function $g(a,b){a=a|0;b=b|0;var d=0;d=i;Yo(c[a+184>>2]|0,+h[b+472>>3]);i=d;return}function ah(a,b){a=a|0;b=b|0;var d=0;d=i;Vo(c[a+184>>2]|0,+h[b+432>>3]);i=d;return}function bh(a,b){a=a|0;b=b|0;i=i;return}function ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;f=i;i=i+8|0;e=i;i=i+16|0;g=b+116|0;h=c[g>>2]|0;b=b+124|0;Gd[c[(c[h>>2]|0)+16>>2]&255](h,b,f);g=c[g>>2]|0;Gd[c[(c[g>>2]|0)+20>>2]&255](g,b,e);b=c[a+184>>2]|0;Ro(b,dh(a,c[f>>2]|0,e)|0);i=d;return}function dh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;f=i;i=i+8|0;g=f;if((a[b+124|0]&1)==0){k=c[e+8>>2]|0;j=c[e+4>>2]|0;e=c[e>>2]|0}else{d=65536-d|0;k=65536-(c[e+8>>2]|0)|0;j=65536-(c[e+4>>2]|0)|0;e=65536-(c[e>>2]|0)|0}switch(c[b+112>>2]|0){case 4:{a[g+3|0]=-1;break};case 1:case 0:{a[f]=((d*255|0)+32768|0)>>>16;d=FW(8)|0;tq(d,g);i=h;return d|0};case 3:case 2:{break};default:{d=0;i=h;return d|0}}a[f]=((e*255|0)+32768|0)>>>16;a[g+1|0]=((j*255|0)+32768|0)>>>16;a[g+2|0]=((k*255|0)+32768|0)>>>16;d=FW(8)|0;tq(d,g);i=h;return d|0}function eh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;f=i;i=i+8|0;e=i;i=i+16|0;g=b+120|0;h=c[g>>2]|0;b=b+252|0;Gd[c[(c[h>>2]|0)+16>>2]&255](h,b,f);g=c[g>>2]|0;Gd[c[(c[g>>2]|0)+20>>2]&255](g,b,e);b=c[a+184>>2]|0;Qo(b,dh(a,c[f>>2]|0,e)|0);i=d;return}function fh(a,b){a=a|0;b=b|0;var d=0;d=i;So(c[a+184>>2]|0,c[35280+(c[b+388>>2]<<2)>>2]|0);i=d;return}function gh(a,b){a=a|0;b=b|0;var d=0;d=i;Uo(c[a+184>>2]|0,+h[b+392>>3]);i=d;return}function hh(a,b){a=a|0;b=b|0;var d=0;d=i;To(c[a+184>>2]|0,+h[b+400>>3]);i=d;return}function ih(b,c){b=b|0;c=c|0;a[b+236|0]=1;i=i;return}function jh(b,d){b=b|0;d=d|0;var e=0,f=0,g=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.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0;e=i;q=i;i=i+8|0;p=q;u=i;i=i+8|0;v=u;E=i;i=i+8|0;D=E;y=i;i=i+8|0;F=y;s=i;i=i+8|0;r=s;z=i;i=i+8|0;A=z;C=i;i=i+8|0;x=C;B=i;i=i+8|0;w=B;J=i;i=i+8|0;o=J;H=i;i=i+8|0;L=H;g=i;i=i+32|0;j=g;t=i;i=i+8|0;G=t;a[b+236|0]=0;k=b+232|0;c[k>>2]=0;m=c[d+484>>2]|0;if((m|0)==0){i=e;return}n=c[m+40>>2]|0;if((n|0)==4){i=e;return}f=FW(12)|0;dq(f);c[f>>2]=35936;M=m+12|0;K=c[M+4>>2]|0;l=f+4|0;c[l>>2]=c[M>>2];c[l+4>>2]=K;l=b+188|0;K=Op(c[l>>2]|0,f)|0;a:do{if((K|0)==0){b:do{if((c[m+52>>2]|0)>-1){M=$x(m,c[b+176>>2]|0,L)|0;if((M|0)==0){n=0}else{o=0;J=0;K=0;L=n;I=17}}else{K=c[m+60>>2]|0;if((K|0)!=0){o=0;J=0;L=n;M=0;I=17;break}L=m+20|0;do{if((c[L>>2]|0)==0){g=35376}else{K=ff(c[834]|0,m)|0;if((K|0)==0){g=c[L>>2]|0;if((g|0)==0){g=35376;break}g=c[g+28>>2]|0;break}o=c[K+8>>2]|0;if((o|0)==0){K=c[K+12>>2]|0;M=jd[c[c[m>>2]>>2]&511](m)|0;o=1;J=0;L=M?7:1;M=0;I=17;break b}else if((o|0)==1){L=c[K+12>>2]|0;M=jd[c[c[m>>2]>>2]&511](m)|0;o=1;J=c[K+16>>2]|0;K=L;L=M?10:5;M=0;I=17;break b}else{o=1;J=0;K=0;L=n;M=0;I=17;break b}}}while(0);c[J>>2]=g;Qe(-1,35344,o);n=0}}while(0);c:do{if((I|0)==17){n=FW(24)|0;aq(n);I=(K|0)!=0;if(I){bq(n,K,0)}else{cq(n,M,c[H>>2]|0,1)}d:do{switch(L|0){case 8:case 7:{K=Sp(c[l>>2]|0,f,n)|0;if((K|0)!=0){break d}g=c[m+20>>2]|0;if((g|0)==0){g=35376}else{g=c[g+28>>2]|0}c[y>>2]=g;Qe(-1,35392,F);break c};case 9:{K=Tp(c[l>>2]|0,f,n)|0;if((K|0)!=0){break d}g=c[m+20>>2]|0;if((g|0)==0){g=35376}else{g=c[g+28>>2]|0}c[E>>2]=g;Qe(-1,35392,D);break c};case 11:case 10:{c[t>>2]=0;r=m+224|0;do{if((c[r>>2]|0)==0){if(I){r=Dn(c[K+28>>2]|0,0)|0}else{r=Cn(M,c[H>>2]|0,0)|0}if((r|0)!=0){M=ty(m,r,G)|0;fd[c[(c[r>>2]|0)+4>>2]&511](r);r=M;break}g=c[m+20>>2]|0;if((g|0)==0){g=35376}else{g=c[g+28>>2]|0}c[u>>2]=g;Qe(-1,35392,v);break c}else{s=c[m+228>>2]|0;c[t>>2]=s;if((s|0)==0){r=0;break}M=ye(s,2)|0;$W(M|0,c[r>>2]|0,c[t>>2]<<1|0)|0;r=M}}while(0);K=Up(c[l>>2]|0,f,n,r,c[t>>2]|0,J)|0;if((K|0)!=0){break d}g=c[m+20>>2]|0;if((g|0)==0){g=35376}else{g=c[g+28>>2]|0}c[q>>2]=g;Qe(-1,35392,p);break c};case 6:case 5:{if(I){p=Dn(c[K+28>>2]|0,0)|0}else{p=Cn(M,c[H>>2]|0,0)|0}if((p|0)==0){c[t>>2]=0;p=0;q=0}else{q=hy(m,p)|0;c[t>>2]=256;fd[c[(c[p>>2]|0)+4>>2]&511](p);p=c[t>>2]|0}K=Up(c[l>>2]|0,f,n,q,p,0)|0;if((K|0)!=0){break d}g=c[m+20>>2]|0;if((g|0)==0){g=35376}else{g=c[g+28>>2]|0}c[s>>2]=g;Qe(-1,35392,r);break c};case 2:{K=Qp(c[l>>2]|0,f,n,m+176|0)|0;if((K|0)!=0){break d}g=c[m+20>>2]|0;if((g|0)==0){g=35376}else{g=c[g+28>>2]|0}c[C>>2]=g;Qe(-1,35392,x);break c};case 3:{K=Rp(c[l>>2]|0,f,n,m+176|0)|0;if((K|0)!=0){break d}g=c[m+20>>2]|0;if((g|0)==0){g=35376}else{g=c[g+28>>2]|0}c[z>>2]=g;Qe(-1,35392,A);break c};case 1:{K=Pp(c[l>>2]|0,f,n,m+176|0)|0;if((K|0)!=0){break d}g=c[m+20>>2]|0;if((g|0)==0){g=35376}else{g=c[g+28>>2]|0}c[B>>2]=g;Qe(-1,35392,w);break c};default:{break c}}}while(0);a[K+4|0]=o;break a}}while(0);if((f|0)!=0){fd[c[(c[f>>2]|0)+4>>2]&511](f)}if((n|0)==0){i=e;return}if((a[n]&1)!=0){i=e;return}Zp(n);i=e;return}else{if((f|0)==0){n=0;break}fd[c[(c[f>>2]|0)+4>>2]&511](f);n=0}}while(0);Q=+h[d+488>>3];P=+h[d+560>>3];O=Q*+h[d+496>>3]*P;P=P*Q*+h[d+504>>3];N=Q*+h[d+512>>3];Q=Q*+h[d+520>>3];h[g>>3]=O;o=j+8|0;h[o>>3]=P;d=j+16|0;h[d>>3]=N;f=j+24|0;h[f>>3]=Q;M=c[l>>2]|0;b=b+184|0;c[k>>2]=Vp(M,K,j,No(c[b>>2]|0)|0)|0;e:do{if((a[K+4|0]&1)!=0){if(jd[c[c[m>>2]>>2]&511](m)|0){break}p=0;f:while(1){q=c[m+176+(p<<2)>>2]|0;do{if((q|0)!=0){if((a[q]|0)!=109){break}if((a[q+1|0]|0)==0){break f}}}while(0);p=p+1|0;if(p>>>0>=256){break e}}R=+h[m+1464+((p&255)<<3)>>3];M=c[k>>2]|0;S=+Dd[c[(c[M>>2]|0)+20>>2]&3](M,p);if(!((c[m+44>>2]&4|0)==0&S>0.0&R>.01&R>3]=O*S;h[o>>3]=P;h[d>>3]=N*S;h[f>>3]=Q;M=c[l>>2]|0;c[k>>2]=Vp(M,K,j,No(c[b>>2]|0)|0)|0}}while(0);if((n|0)==0){i=e;return}if((a[n]&1)!=0){i=e;return}Zp(n);i=e;return}function kh(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[b+120>>2]|0;if(jd[c[(c[e>>2]|0)+56>>2]&511](e)|0){i=d;return}b=lh(0,0,c[b+588>>2]|0)|0;fp(c[a+184>>2]|0,b)|0;if((b|0)==0){i=d;return}hq(b);HW(b);i=d;return}function lh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0;b=i;f=FW(32)|0;gq(f);d=e+28|0;if((c[d>>2]|0)<=0){i=b;return f|0}k=e+24|0;j=0;do{l=c[(c[k>>2]|0)+(j<<2)>>2]|0;e=l+12|0;do{if((c[e>>2]|0)>0){g=l+4|0;jq(f,+h[c[l>>2]>>3],+h[c[g>>2]>>3])|0;if((c[e>>2]|0)>1){m=l+8|0;p=1;do{o=c[l>>2]|0;r=+h[o+(p<<3)>>3];n=c[g>>2]|0;q=+h[n+(p<<3)>>3];if((a[(c[m>>2]|0)+p|0]&1)==0){kq(f,r,q)|0;p=p+1|0}else{t=p+1|0;s=p+2|0;lq(f,r,q,+h[o+(t<<3)>>3],+h[n+(t<<3)>>3],+h[o+(s<<3)>>3],+h[n+(s<<3)>>3])|0;p=p+3|0}}while((p|0)<(c[e>>2]|0))}if((a[l+20|0]&1)==0){break}mq(f)|0}}while(0);j=j+1|0;}while((j|0)<(c[d>>2]|0));i=b;return f|0}function mh(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[b+116>>2]|0;if(jd[c[(c[e>>2]|0)+56>>2]&511](e)|0){i=d;return}b=lh(0,0,c[b+588>>2]|0)|0;op(c[a+184>>2]|0,b,0)|0;if((b|0)==0){i=d;return}hq(b);HW(b);i=d;return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[b+116>>2]|0;if(jd[c[(c[e>>2]|0)+56>>2]&511](e)|0){i=d;return}b=lh(0,0,c[b+588>>2]|0)|0;op(c[a+184>>2]|0,b,1)|0;if((b|0)==0){i=d;return}hq(b);HW(b);i=d;return}function oh(a,b){a=a|0;b=b|0;var d=0;d=i;b=lh(0,0,c[b+588>>2]|0)|0;ap(c[a+184>>2]|0,b,0)|0;if((b|0)==0){i=d;return}hq(b);HW(b);i=d;return}function ph(a,b){a=a|0;b=b|0;var d=0;d=i;b=lh(0,0,c[b+588>>2]|0)|0;ap(c[a+184>>2]|0,b,1)|0;if((b|0)==0){i=d;return}hq(b);HW(b);i=d;return}function qh(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;b=lh(0,0,c[b+588>>2]|0)|0;e=a+184|0;a=lp(c[e>>2]|0,b,1)|0;if((b|0)!=0){hq(b);HW(b)}ap(c[e>>2]|0,a,0)|0;if((a|0)==0){i=d;return}hq(a);HW(a);i=d;return}function rh(b,d,e,f,g,h,j,k,l,m,n,o){b=b|0;d=d|0;e=+e;f=+f;g=+g;h=+h;j=+j;k=+k;l=l|0;m=m|0;n=n|0;o=o|0;var p=0;m=i;n=c[d+584>>2]|0;if((n|0)==3){i=m;return}if((a[b+236|0]&1)!=0){jh(b,d)}o=b+232|0;if((c[o>>2]|0)==0){i=m;return}e=e-j;f=f-k;do{if((n&1|0)==0){if((a[b+108|0]&1)!=0){break}p=c[d+116>>2]|0;if(jd[c[(c[p>>2]|0)+56>>2]&511](p)|0){break}qp(c[b+184>>2]|0,e,f,l,c[o>>2]|0)|0}}while(0);do{if(((n&3)+ -1|0)>>>0<2){p=c[d+120>>2]|0;if(jd[c[(c[p>>2]|0)+56>>2]&511](p)|0){break}d=c[o>>2]|0;d=Bd[c[(c[d>>2]|0)+16>>2]&255](d,l)|0;if((d|0)==0){break}oq(d,e,f);fp(c[b+184>>2]|0,d)|0;hq(d);HW(d)}}while(0);do{if((a[b+108|0]&1)==0){if((n&4|0)!=0){break}i=m;return}}while(0);p=c[o>>2]|0;l=Bd[c[(c[p>>2]|0)+16>>2]&255](p,l)|0;if((l|0)==0){i=m;return}oq(l,e,f);b=b+240|0;d=c[b>>2]|0;if((d|0)==0){c[b>>2]=l;i=m;return}else{iq(d,l);hq(l);HW(l);i=m;return}}function sh(d,f,g,j,k,l,m,n,o){d=d|0;f=f|0;g=+g;j=+j;k=+k;l=+l;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0.0,A=0.0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0,O=0,P=0.0,Q=0,S=0;n=i;p=i;i=i+32|0;o=p;r=c[f+484>>2]|0;if((r|0)==0){S=0;i=n;return S|0}q=r+12|0;x=f+16|0;z=+h[x>>3];y=f+32|0;k=+h[y>>3];v=f+48|0;l=+h[v>>3]+(z*0.0+k*0.0);t=f+24|0;g=+h[t>>3];u=f+40|0;w=+h[u>>3];f=f+56|0;j=+h[f>>3]+(g*0.0+w*0.0);B=d+224|0;N=c[B>>2]|0;a:do{if((N|0)>0){O=c[d+192>>2]|0;do{if((c[O>>2]|0)==(c[q>>2]|0)){if((c[O+4>>2]|0)!=(c[r+16>>2]|0)){break}if(+h[O+8>>3]!=z){break}if(+h[O+16>>3]!=g){break}if(+h[O+24>>3]!=k){break}if(+h[O+32>>3]==w){break a}}}while(0);if((N|0)<=1){O=1;s=22;break}S=c[q>>2]|0;Q=r+16|0;s=1;b:while(1){O=c[d+192+(s<<2)>>2]|0;do{if((c[O>>2]|0)==(S|0)){if((c[O+4>>2]|0)!=(c[Q>>2]|0)){break}if(+h[O+8>>3]!=z){break}if(+h[O+16>>3]!=g){break}if(+h[O+24>>3]!=k){break}if(+h[O+32>>3]==w){break b}}}while(0);s=s+1|0;if((s|0)>=(N|0)){O=s;s=22;break a}}if((s|0)>0){Q=s;while(1){N=Q+ -1|0;c[d+192+(Q<<2)>>2]=c[d+192+(N<<2)>>2];if((N|0)>0){Q=N}else{break}}N=c[B>>2]|0}c[d+192>>2]=O;O=s;s=22}else{O=1;s=22}}while(0);do{if((s|0)==22){if((O|0)<(N|0)){O=c[d+192>>2]|0;break}if((N|0)==8){O=c[d+220>>2]|0;if((O|0)!=0){Fe(c[O+72>>2]|0);Fe(c[O+76>>2]|0);HW(O);N=c[B>>2]|0}N=N+ -1|0;c[B>>2]=N}if((N|0)>0){while(1){O=N+ -1|0;c[d+192+(N<<2)>>2]=c[d+192+(O<<2)>>2];if((O|0)>0){N=O}else{break}}N=c[B>>2]|0}c[B>>2]=N+1;z=+h[r+112>>3];C=+h[r+120>>3];do{if(z==0.0&C==0.0){if(+h[r+128>>3]!=0.0){s=35;break}if(+h[r+136>>3]!=0.0){s=35;break}J=l+-5.0;G=j+15.0;z=+h[u>>3];k=+h[y>>3];w=+h[t>>3];g=+h[x>>3];r=0;H=J+30.0;F=G;G=G+-45.0}else{s=35}}while(0);do{if((s|0)==35){g=+h[x>>3];J=z*g;k=+h[y>>3];G=C*k;A=+h[v>>3];F=A+(J+G);w=+h[t>>3];M=z*w;z=+h[u>>3];I=C*z;D=+h[f>>3];K=D+(M+I);C=+h[r+136>>3];E=k*C;J=A+(J+E);C=z*C;M=D+(M+C);do{if(J>3];L=K*g;P=A+(L+G);K=K*w;G=D+(K+I);do{if(P=M){if(G<=F){G=M;break}F=G;G=M}}while(0);E=A+(L+E);A=D+(K+C);do{if(E>2]|0)!=0);c[d+192>>2]=O}}while(0);q=c[O+68>>2]|0;r=da((c[O+64>>2]|0)+ -1&m,q)|0;c:do{if((q|0)>0){t=c[O+76>>2]|0;if((t|0)==0){o=0;while(1){o=o+1|0;if((o|0)>=(q|0)){break c}}}else{s=0}while(1){f=s+r|0;if((b[t+(f<<2)+2>>1]|0)<0){if((e[t+(f<<2)>>1]|0)==(m|0)){break}}s=s+1|0;if((s|0)>=(q|0)){break c}}S=(c[O+72>>2]|0)+(da(c[O+60>>2]|0,f)|0)|0;c[p>>2]=0-(c[O+40>>2]|0);c[o+4>>2]=0-(c[O+44>>2]|0);c[o+8>>2]=c[O+48>>2];c[o+12>>2]=c[O+52>>2];a[o+16|0]=(c[d+112>>2]|0)!=0|0;c[o+20>>2]=S;a[o+24|0]=0;sp(c[d+184>>2]|0,0.0,0.0,o);S=1;i=n;return S|0}}while(0);S=FW(48)|0;bX(S|0,0,48)|0;Q=d+228|0;c[S+40>>2]=c[Q>>2];c[Q>>2]=S;b[S>>1]=m;c[S+4>>2]=O;c[S+8>>2]=0;c[S+12>>2]=0;S=0;i=n;return S|0}function th(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;f=i;j=i;i=i+32|0;k=j;e=b+228|0;l=c[e>>2]|0;if((c[l+8>>2]|0)!=0){g=b+180|0;$W(c[l+12>>2]|0,c[(c[g>>2]|0)+20>>2]|0,c[(c[l+4>>2]|0)+60>>2]|0)|0;l=c[g>>2]|0;if((l|0)!=0){Le(l);HW(l)}l=b+184|0;m=c[l>>2]|0;if((m|0)!=0){Lo(m);HW(m)}m=c[e>>2]|0;c[g>>2]=c[m+16>>2];c[l>>2]=c[m+20>>2];IB(d,+h[d+16>>3],+h[d+24>>3],+h[d+32>>3],+h[d+40>>3],+h[m+24>>3],+h[m+32>>3]);Ed[c[(c[b>>2]|0)+92>>2]&3](b,d,0.0,0.0,0.0,0.0,0.0,0.0);m=c[e>>2]|0;d=c[m+4>>2]|0;m=c[m+12>>2]|0;c[j>>2]=0-(c[d+40>>2]|0);c[k+4>>2]=0-(c[d+44>>2]|0);c[k+8>>2]=c[d+48>>2];c[k+12>>2]=c[d+52>>2];a[k+16|0]=(c[b+112>>2]|0)!=0|0;c[k+20>>2]=m;a[k+24|0]=0;sp(c[l>>2]|0,0.0,0.0,k);l=c[e>>2]|0}c[e>>2]=c[l+40>>2];if((l|0)==0){i=f;return}HW(l);i=f;return}function uh(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;i=i;return}function vh(d,f,g,j,k,l,m,n){d=d|0;f=f|0;g=+g;j=+j;k=+k;l=+l;m=+m;n=+n;var 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.0,E=0.0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0;r=i;A=i;i=i+8|0;t=i;i=i+8|0;u=i;i=i+8|0;s=i;i=i+8|0;p=i;i=i+8|0;q=p;o=d+228|0;y=c[o>>2]|0;if((y|0)==0){Qe(-1,35424,s);i=r;return}if((c[y+16>>2]|0)!=0){Qe(-1,35480,u);i=r;return}if((c[y+20>>2]|0)!=0){Qe(-1,35552,t);i=r;return}z=c[y+4>>2]|0;v=f+16|0;L=+h[v>>3];t=f+32|0;W=+h[t>>3];w=f+48|0;E=+h[w>>3];j=E+(L*0.0+W*0.0);u=f+24|0;H=+h[u>>3];s=f+40|0;J=+h[s>>3];x=f+56|0;D=+h[x>>3];g=D+(H*0.0+J*0.0);M=L*k;K=W*l;I=E+(M+K);N=H*k;k=J*l;O=D+(N+k);l=W*n;M=E+(M+l);n=J*n;N=D+(N+n);do{if(M>2]|0;do{if(M-j>=+(G|0)){C=z+44|0;P=c[C>>2]|0;if(N-g<+(P|0)){break}F=z+48|0;if(J-j>+((c[F>>2]|0)+G|0)){break}G=z+52|0;if(I-g>+((c[G>>2]|0)+P|0)){break}Q=z+76|0;R=c[Q>>2]|0;if((R|0)==0){i=r;return}P=z+68|0;S=c[P>>2]|0;A=da((c[z+64>>2]|0)+65535&(e[y>>1]|0),S)|0;if((S|0)>0){y=z+72|0;z=z+60|0;U=0;while(1){T=U+A|0;R=R+(T<<2)+2|0;V=b[R>>1]|0;if((V&32767|0)==(S+ -1|0)){b[R>>1]=-32768;b[(c[Q>>2]|0)+(T<<2)>>1]=b[c[o>>2]>>1]|0;c[(c[o>>2]|0)+8>>2]=(c[Q>>2]|0)+(T<<2);V=(c[y>>2]|0)+(da(c[z>>2]|0,T)|0)|0;c[(c[o>>2]|0)+12>>2]=V}else{b[R>>1]=V+1<<16>>16}U=U+1|0;S=c[P>>2]|0;if((U|0)>=(S|0)){break}R=c[Q>>2]|0}y=c[o>>2]|0}z=d+180|0;c[y+16>>2]=c[z>>2];y=d+184|0;c[(c[o>>2]|0)+20>>2]=c[y>>2];h[(c[o>>2]|0)+24>>3]=+h[w>>3];h[(c[o>>2]|0)+32>>3]=+h[x>>3];V=(c[d+112>>2]|0)==0;w=FW(28)|0;x=c[F>>2]|0;A=c[G>>2]|0;if(V){Ke(w,x,A,1,0,0,1);c[z>>2]=w;V=FW(192)|0;Ko(V,w,0,Oo(c[(c[o>>2]|0)+20>>2]|0)|0);c[y>>2]=V;a[p]=0;ep(V,q,0);a[p]=1}else{Ke(w,x,A,1,1,0,1);c[z>>2]=w;V=FW(192)|0;U=(a[d+122|0]&1)!=0;Ko(V,w,U,Oo(c[(c[o>>2]|0)+20>>2]|0)|0);c[y>>2]=V;a[p]=0;ep(V,q,0);a[p]=-1}V=c[y>>2]|0;U=FW(8)|0;tq(U,q);Ro(V,U);U=c[y>>2]|0;V=FW(8)|0;tq(V,q);Qo(U,V);IB(f,+h[v>>3],+h[u>>3],+h[t>>3],+h[s>>3],+(0-(c[B>>2]|0)|0),+(0-(c[C>>2]|0)|0));Ed[c[(c[d>>2]|0)+92>>2]&3](d,f,0.0,0.0,0.0,0.0,0.0,0.0);i=r;return}}while(0);if((a[z+56|0]&1)==0){i=r;return}Qe(-1,35624,A);i=r;return}function wh(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;if((c[d+584>>2]&4|0)!=0){i=e;return}f=c[d+116>>2]|0;if((jd[c[(c[f>>2]|0)+12>>2]&511](f)|0)!=10){i=e;return}a[b+108|0]=1;hd[c[(c[b>>2]|0)+80>>2]&127](b,d);i=e;return}function xh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;f=b+108|0;do{if((a[f]&1)!=0){a[f]=0;g=c[d+116>>2]|0;if((jd[c[(c[g>>2]|0)+12>>2]&511](g)|0)==10){break}f=b+240|0;g=c[f>>2]|0;if((g|0)!=0){op(c[b+184>>2]|0,g,1)|0;g=c[f>>2]|0;if((g|0)!=0){hq(g);HW(g)}c[f>>2]=0}hd[c[(c[b>>2]|0)+84>>2]&127](b,d);hd[c[(c[b>>2]|0)+140>>2]&127](b,d)}}while(0);d=b+240|0;f=c[d>>2]|0;if((f|0)==0){i=e;return}ap(c[b+184>>2]|0,f,0)|0;b=c[d>>2]|0;if((b|0)!=0){hq(b);HW(b)}c[d>>2]=0;i=e;return}function yh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;e=b+16|0;if((c[e>>2]|0)==(c[b+12>>2]|0)){j=0;i=g;return j|0}h=Bj(c[b>>2]|0)|0;f=b+8|0;if((c[f>>2]|0)>0){b=b+4|0;j=0;while(1){a[d]=a[b]&1^a[h];j=j+1|0;if((j|0)<(c[f>>2]|0)){d=d+1|0;h=h+1|0}else{break}}}c[e>>2]=(c[e>>2]|0)+1;j=1;i=g;return j|0}function zh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;g=i;h=i;i=i+32|0;f=h;$W(h|0,35664,32)|0;h=c[(c[b+180>>2]|0)+24>>2]|0;e=b+248|0;k=c[e>>2]|0;j=c[k+20>>2]|0;if((da(c[k+4>>2]|0,c[k+12>>2]|0)|0)>0){l=0;while(1){a[h+l|0]=a[j+l|0]|0;l=l+1|0;k=c[e>>2]|0;if((l|0)<(da(c[k+4>>2]|0,c[k+12>>2]|0)|0)){}else{break}}}if((k|0)!=0){Le(k);HW(k)}c[e>>2]=0;hd[c[(c[b>>2]|0)+384>>2]&127](b,d);Gd[c[(c[b>>2]|0)+388>>2]&255](b,d,f);i=g;return}function Ah(b,d,e,f,g,j,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;e=i;u=i;i=i+48|0;r=u;p=i;i=i+24|0;s=p;m=i;i=i+8|0;q=m;t=d+116|0;w=c[t>>2]|0;if(jd[c[(c[w>>2]|0)+56>>2]&511](w)|0){i=e;return}v=d+16|0;w=0;do{h[k>>3]=+h[d+16+(w<<3)>>3];x=c[k+4>>2]&2146435072;w=w+1|0;if(!(x>>>0<2146435072|(x|0)==2146435072&(c[k>>2]&0)>>>0<0)){o=14;break}}while((w|0)<6);if((o|0)==14){i=e;return}h[u>>3]=+h[v>>3];h[r+8>>3]=+h[d+24>>3];z=+h[d+32>>3];h[r+16>>3]=-0.0-z;y=+h[d+40>>3];h[r+24>>3]=-0.0-y;h[r+32>>3]=z+ +h[d+48>>3];h[r+40>>3]=y+ +h[d+56>>3];d=FW(28)|0;yj(d,f,g,1,1);c[p>>2]=d;Aj(d);a[s+4|0]=l&1^1;c[s+8>>2]=g;c[s+12>>2]=j;d=s+16|0;c[d>>2]=0;x=c[t>>2]|0;do{if((jd[c[(c[x>>2]|0)+12>>2]&511](x)|0)==10){w=FW(32)|0;bX(w|0,0,24)|0;c[w>>2]=0;c[w+4>>2]=0;c[w+12>>2]=0;a[w+16|0]=0;n=b+244|0;c[w+28>>2]=c[n>>2];c[n>>2]=w;n=b+180|0;l=c[n>>2]|0;v=w+20|0;c[v>>2]=l;u=b+184|0;t=w+24|0;c[t>>2]=c[u>>2];d=FW(28)|0;Ke(d,c[l>>2]|0,c[l+4>>2]|0,c[b+116>>2]|0,c[b+112>>2]|0,1,(a[b+120|0]&1)!=0);c[n>>2]=d;l=FW(192)|0;x=b+122|0;o=(a[x]&1)!=0;Ko(l,d,o,Oo(c[t>>2]|0)|0);c[u>>2]=l;t=c[n>>2]|0;Cp(l,c[v>>2]|0,0,0,0,0,c[t>>2]|0,c[t+4>>2]|0)|0;cp(c[u>>2]|0,c[v>>2]|0,0,0);n=c[n>>2]|0;c[w+8>>2]=n;w=FW(28)|0;Ke(w,c[n>>2]|0,c[n+4>>2]|0,1,1,0,1);c[b+248>>2]=w;n=FW(192)|0;Jo(n,w,(a[x]&1)!=0,0);a[m]=0;ep(n,q,0);a[m]=-1;x=FW(8)|0;tq(x,q);Ro(n,x);wp(n,182,s,g,j,r,(c[b+228>>2]|0)!=0)|0;if((n|0)==0){break}Lo(n);HW(n)}else{wp(c[b+184>>2]|0,182,s,g,j,r,(c[b+228>>2]|0)!=0)|0;if(!n){break}if((c[d>>2]|0)>=(j|0)){break}do{Bj(c[p>>2]|0)|0;x=(c[d>>2]|0)+1|0;c[d>>2]=x;}while((x|0)<(j|0))}}while(0);b=c[p>>2]|0;if((b|0)!=0){zj(b);HW(b)}fd[c[(c[f>>2]|0)+16>>2]&511](f);i=e;return}function Bh(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;p=i;i=i+8|0;o=p;n=i;i=i+16|0;m=n;g=b+28|0;if((c[g>>2]|0)==(c[b+24>>2]|0)){r=0;i=f;return r|0}h=b+4|0;q=c[h>>2]|0;k=c[q+8>>2]|0;l=b+8|0;j=b+16|0;r=c[j>>2]|0;a:do{if((c[l>>2]|0)==0){switch(r|0){case 3:case 2:case 4:{break};case 1:case 0:{l=Bj(c[b>>2]|0)|0;j=b+20|0;if((c[j>>2]|0)>0){m=0}else{break a}while(1){oB(c[h>>2]|0,l,o);a[e]=(((c[p>>2]|0)*255|0)+32768|0)>>>16;m=m+1|0;if((m|0)<(c[j>>2]|0)){e=e+1|0;l=l+k|0}else{break a}}break};default:{break a}}o=q+12|0;l=c[o>>2]|0;do{if((l|0)==0){l=18}else{if(jd[c[(c[l>>2]|0)+36>>2]&511](l)|0){p=Bj(c[b>>2]|0)|0;l=24;break}if((c[o>>2]|0)==0){l=18;break}p=Bj(c[b>>2]|0)|0;l=19}}while(0);if((l|0)==18){r=c[q>>2]|0;r=jd[c[(c[r>>2]|0)+36>>2]&511](r)|0;p=Bj(c[b>>2]|0)|0;if(r){l=24}else{l=19}}if((l|0)==19){o=b+20|0;if((c[o>>2]|0)<=0){break}b=m+4|0;l=m+8|0;q=0;while(1){pB(c[h>>2]|0,p,m);a[e]=(((c[n>>2]|0)*255|0)+32768|0)>>>16;a[e+1|0]=(((c[b>>2]|0)*255|0)+32768|0)>>>16;r=e+3|0;a[e+2|0]=(((c[l>>2]|0)*255|0)+32768|0)>>>16;if((c[j>>2]|0)==4){a[r]=-1;e=e+4|0}else{e=r}q=q+1|0;if((q|0)<(c[o>>2]|0)){p=p+k|0}else{break}}}else if((l|0)==24){k=b+20|0;l=ye(c[k>>2]|0,4)|0;qB(c[h>>2]|0,p,l,c[k>>2]|0);if((c[k>>2]|0)>0){h=0;do{r=l+(h<<2)|0;a[e]=(c[r>>2]|0)>>>16;a[e+1|0]=(c[r>>2]|0)>>>8;m=e+3|0;a[e+2|0]=c[r>>2];if((c[j>>2]|0)==4){a[m]=-1;e=e+4|0}else{e=m}h=h+1|0;}while((h|0)<(c[k>>2]|0))}Fe(l);break}}else{switch(r|0){case 1:case 0:{j=Bj(c[b>>2]|0)|0;h=b+20|0;if((c[h>>2]|0)>0){k=0}else{break a}while(1){a[e]=a[(c[l>>2]|0)+(d[j]|0)|0]|0;k=k+1|0;if((k|0)<(c[h>>2]|0)){e=e+1|0;j=j+1|0}else{break}}break};case 4:{j=Bj(c[b>>2]|0)|0;h=b+20|0;if((c[h>>2]|0)>0){k=0}else{break a}while(1){r=(d[j]|0)<<2;q=c[l>>2]|0;a[e]=a[q+r|0]|0;a[e+1|0]=a[q+(r|1)|0]|0;a[e+2|0]=a[q+(r|2)|0]|0;a[e+3|0]=a[q+(r|3)|0]|0;k=k+1|0;if((k|0)<(c[h>>2]|0)){e=e+4|0;j=j+1|0}else{break}}break};case 3:case 2:{j=Bj(c[b>>2]|0)|0;h=b+20|0;if((c[h>>2]|0)>0){k=0}else{break a}while(1){r=(d[j]|0)*3|0;q=c[l>>2]|0;a[e]=a[q+r|0]|0;a[e+1|0]=a[q+(r+1)|0]|0;a[e+2|0]=a[q+(r+2)|0]|0;k=k+1|0;if((k|0)<(c[h>>2]|0)){e=e+3|0;j=j+1|0}else{break}}break};default:{break a}}}}while(0);c[g>>2]=(c[g>>2]|0)+1;r=1;i=f;return r|0}function Ch(b,e,f){b=b|0;e=e|0;f=f|0;var 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,A=0;g=i;l=i;i=i+16|0;k=l;j=i;i=i+8|0;s=j;m=b+28|0;if((c[m>>2]|0)==(c[b+24>>2]|0)){A=0;i=g;return A|0}p=b+4|0;n=c[(c[p>>2]|0)+8>>2]|0;v=Bj(c[b>>2]|0)|0;o=b+20|0;if((c[o>>2]|0)>0){h=(n|0)>0;q=b+8|0;r=b+16|0;t=k+4|0;u=k+8|0;b=b+12|0;w=0;while(1){a:do{if(h){z=c[b>>2]|0;A=0;while(1){y=d[v+A|0]|0;x=A<<1;if((y|0)<(c[z+(x<<2)>>2]|0)){x=-1;break a}A=A+1|0;if((y|0)>(c[z+((x|1)<<2)>>2]|0)){x=-1;break a}if((A|0)>=(n|0)){x=0;break}}}else{x=0}}while(0);y=c[q>>2]|0;z=c[r>>2]|0;b:do{if((y|0)==0){switch(z|0){case 1:case 0:{oB(c[p>>2]|0,v,s);a[e]=(((c[j>>2]|0)*255|0)+32768|0)>>>16;a[f]=x;f=f+1|0;e=e+1|0;break b};case 3:case 2:case 4:{break};default:{break b}}pB(c[p>>2]|0,v,k);a[e]=(((c[l>>2]|0)*255|0)+32768|0)>>>16;a[e+1|0]=(((c[t>>2]|0)*255|0)+32768|0)>>>16;y=e+3|0;a[e+2|0]=(((c[u>>2]|0)*255|0)+32768|0)>>>16;if((c[r>>2]|0)==4){a[y]=-1;e=e+4|0}else{e=y}a[f]=x;f=f+1|0}else{switch(z|0){case 3:case 2:{A=(d[v]|0)*3|0;a[e]=a[y+A|0]|0;a[e+1|0]=a[y+(A+1)|0]|0;a[e+2|0]=a[y+(A+2)|0]|0;a[f]=x;f=f+1|0;e=e+3|0;break b};case 4:{A=(d[v]|0)<<2;a[e]=a[y+A|0]|0;a[e+1|0]=a[y+(A|1)|0]|0;a[e+2|0]=a[y+(A|2)|0]|0;a[e+3|0]=-1;a[f]=x;f=f+1|0;e=e+4|0;break b};case 1:case 0:{a[e]=a[y+(d[v]|0)|0]|0;a[f]=x;f=f+1|0;e=e+1|0;break b};default:{break b}}}}while(0);w=w+1|0;if((w|0)<(c[o>>2]|0)){v=v+n|0}else{break}}}c[m>>2]=(c[m>>2]|0)+1;A=1;i=g;return A|0}function Dh(b,d,e,f,g,j,l,m,n,o){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;var 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.0,D=0.0;e=i;w=i;i=i+48|0;m=w;p=i;i=i+32|0;q=p;x=i;i=i+8|0;y=x;u=i;i=i+16|0;t=u;s=i;i=i+8|0;r=s;z=d+16|0;A=0;do{h[k>>3]=+h[d+16+(A<<3)>>3];B=c[k+4>>2]&2146435072;A=A+1|0;if(!(B>>>0<2146435072|(B|0)==2146435072&(c[k>>2]&0)>>>0<0)){v=20;break}}while((A|0)<6);if((v|0)==20){i=e;return}h[w>>3]=+h[z>>3];h[m+8>>3]=+h[d+24>>3];D=+h[d+32>>3];h[m+16>>3]=-0.0-D;C=+h[d+40>>3];h[m+24>>3]=-0.0-C;h[m+32>>3]=D+ +h[d+48>>3];h[m+40>>3]=C+ +h[d+56>>3];w=FW(28)|0;B=l+8|0;z=l+4|0;yj(w,f,g,c[B>>2]|0,c[z>>2]|0);c[p>>2]=w;Aj(w);c[q+4>>2]=l;c[q+12>>2]=n;w=b+112|0;A=c[w>>2]|0;c[q+16>>2]=A;c[q+20>>2]=g;c[q+24>>2]=j;d=q+28|0;c[d>>2]=0;v=q+8|0;c[v>>2]=0;a:do{if((c[B>>2]|0)==1){z=1<>2];switch(A|0){case 4:{c[v>>2]=ye(z,4)|0;if((z|0)<=0){break a}x=t+4|0;y=t+8|0;A=0;do{a[s]=A;pB(l,r,t);B=A<<2;a[(c[v>>2]|0)+B|0]=(((c[u>>2]|0)*255|0)+32768|0)>>>16;a[(c[v>>2]|0)+(B|1)|0]=(((c[x>>2]|0)*255|0)+32768|0)>>>16;a[(c[v>>2]|0)+(B|2)|0]=(((c[y>>2]|0)*255|0)+32768|0)>>>16;a[(c[v>>2]|0)+(B|3)|0]=-1;A=A+1|0;}while((A|0)<(z|0));break};case 1:case 0:{c[v>>2]=we(z)|0;if((z|0)>0){t=0}else{break a}do{a[s]=t;oB(l,r,y);a[(c[v>>2]|0)+t|0]=(((c[x>>2]|0)*255|0)+32768|0)>>>16;t=t+1|0;}while((t|0)<(z|0));break};case 3:case 2:{c[v>>2]=ye(z,3)|0;if((z|0)<=0){break a}y=t+4|0;x=t+8|0;A=0;do{a[s]=A;pB(l,r,t);B=A*3|0;a[(c[v>>2]|0)+B|0]=(((c[u>>2]|0)*255|0)+32768|0)>>>16;a[(c[v>>2]|0)+(B+1)|0]=(((c[y>>2]|0)*255|0)+32768|0)>>>16;a[(c[v>>2]|0)+(B+2)|0]=(((c[x>>2]|0)*255|0)+32768|0)>>>16;A=A+1|0;}while((A|0)<(z|0));break};default:{break a}}}}while(0);l=c[w>>2]|0;n=(n|0)!=0;yp(c[b+184>>2]|0,n?74:75,q,(l|0)==0?1:l,n,g,j,m)|0;do{if(o){if((c[d>>2]|0)>=(j|0)){break}do{Bj(c[p>>2]|0)|0;B=(c[d>>2]|0)+1|0;c[d>>2]=B;}while((B|0)<(j|0))}}while(0);Fe(c[v>>2]|0);j=c[p>>2]|0;if((j|0)!=0){zj(j);HW(j)}fd[c[(c[f>>2]|0)+16>>2]&511](f);i=e;return}function Eh(b,e,f){b=b|0;e=e|0;f=f|0;var 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,A=0;h=i;g=i;i=i+8|0;m=g;k=i;i=i+16|0;j=k;n=i;i=i+8|0;r=n;l=b+28|0;if((c[l>>2]|0)==(c[b+24>>2]|0)){A=0;i=h;return A|0}p=b+4|0;q=c[(c[p>>2]|0)+8>>2]|0;w=Bj(c[b>>2]|0)|0;o=b+20|0;if((c[o>>2]|0)>0){s=b+8|0;t=b+12|0;b=b+16|0;u=j+4|0;v=j+8|0;x=0;while(1){Oe(c[s>>2]|0,x,c[l>>2]|0,m);y=((a[g]|0)!=0)<<31>>31;A=c[t>>2]|0;z=c[b>>2]|0;a:do{if((A|0)==0){switch(z|0){case 1:case 0:{oB(c[p>>2]|0,w,r);a[e]=(((c[n>>2]|0)*255|0)+32768|0)>>>16;a[f]=y;f=f+1|0;e=e+1|0;break a};case 3:case 2:case 4:{break};default:{break a}}pB(c[p>>2]|0,w,j);a[e]=(((c[k>>2]|0)*255|0)+32768|0)>>>16;a[e+1|0]=(((c[u>>2]|0)*255|0)+32768|0)>>>16;z=e+3|0;a[e+2|0]=(((c[v>>2]|0)*255|0)+32768|0)>>>16;if((c[b>>2]|0)==4){a[z]=-1;e=e+4|0}else{e=z}a[f]=y;f=f+1|0}else{switch(z|0){case 3:case 2:{z=(d[w]|0)*3|0;a[e]=a[A+z|0]|0;a[e+1|0]=a[A+(z+1)|0]|0;a[e+2|0]=a[A+(z+2)|0]|0;a[f]=y;f=f+1|0;e=e+3|0;break a};case 4:{z=d[w]<<2;a[e]=a[A+z|0]|0;a[e+1|0]=a[A+(z|1)|0]|0;a[e+2|0]=a[A+(z|2)|0]|0;a[e+3|0]=-1;a[f]=y;f=f+1|0;e=e+4|0;break a};case 1:case 0:{a[e]=a[A+(d[w]|0)|0]|0;a[f]=y;f=f+1|0;e=e+1|0;break a};default:{break a}}}}while(0);x=x+1|0;if((x|0)<(c[o>>2]|0)){w=w+q|0}else{break}}}c[l>>2]=(c[l>>2]|0)+1;A=1;i=h;return A|0}function Fh(b,d,e,f,g,j,l,m,n,o,p,q,r){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var 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.0,Y=0.0;s=i;K=i;i=i+8|0;L=K;P=i;i=i+8|0;O=P;N=i;i=i+16|0;I=N;V=i;i=i+16|0;Q=V;W=i;i=i+16|0;M=W;C=i;i=i+48|0;u=C;v=i;i=i+32|0;t=v;E=i;i=i+24|0;F=E;G=i;i=i+8|0;H=G;B=i;i=i+8|0;A=B;y=i;i=i+16|0;z=y;x=i;i=i+8|0;w=x;c[N>>2]=13;J=I+8|0;c[J>>2]=0;c[J+4>>2]=0;c[V>>2]=13;U=Q+8|0;c[U>>2]=0;S=U+4|0;c[S>>2]=0;c[W>>2]=13;R=M+8|0;c[R>>2]=0;T=R+4|0;c[T>>2]=0;if((o|0)>(g|0)|(p|0)>(j|0)){t=q&1;c[S>>2]=0;c[V>>2]=1;c[U>>2]=t^1;c[T>>2]=0;c[W>>2]=1;c[R>>2]=t;If(I,c[b+176>>2]|0)|0;t=c[N>>2]|0;if((t|0)!=6){c[P>>2]=t;c[O+4>>2]=6;Qe(0,35856,O);tc()}tt(c[J>>2]|0,Q);t=c[N>>2]|0;if((t|0)!=6){c[K>>2]=t;c[L+4>>2]=6;Qe(0,35856,L);tc()}tt(c[J>>2]|0,M);t=FW(672)|0;W=FW(4)|0;Ty(W);mB(t,1,I,W);Of(I);vd[c[(c[b>>2]|0)+324>>2]&3](b,d,e,f,g,j,l,m,n,o,p,t,r);if((t|0)==0){i=s;return}nB(t);HW(t);i=s;return}h[C>>3]=+(g|0);e=u+8|0;I=u+16|0;J=u+24|0;bX(e|0,0,16)|0;h[J>>3]=+(j|0);r=u+32|0;m=u+40|0;bX(r|0,0,16)|0;K=FW(28)|0;yj(K,n,o,1,1);c[E>>2]=K;Aj(K);a[F+4|0]=q&1^1;c[F+8>>2]=o;c[F+12>>2]=p;c[F+16>>2]=0;q=FW(28)|0;Ke(q,g,j,1,0,0,1);K=FW(192)|0;Jo(K,q,0,0);a[G]=0;ep(K,H,0);a[G]=-1;W=FW(8)|0;tq(W,H);Ro(K,W);wp(K,182,F,o,p,u,0)|0;o=c[E>>2]|0;if((o|0)!=0){zj(o);HW(o)}fd[c[(c[n>>2]|0)+16>>2]&511](n);if((K|0)!=0){Lo(K);HW(K)}n=d+16|0;o=0;do{h[k>>3]=+h[d+16+(o<<3)>>3];W=c[k+4>>2]&2146435072;o=o+1|0;if(!(W>>>0<2146435072|(W|0)==2146435072&(c[k>>2]&0)>>>0<0)){D=15;break}}while((o|0)<6);if((D|0)==15){if((q|0)==0){i=s;return}Le(q);HW(q);i=s;return}h[C>>3]=+h[n>>3];h[e>>3]=+h[d+24>>3];Y=+h[d+32>>3];h[I>>3]=-0.0-Y;X=+h[d+40>>3];h[J>>3]=-0.0-X;h[r>>3]=Y+ +h[d+48>>3];h[m>>3]=X+ +h[d+56>>3];n=FW(28)|0;W=l+8|0;o=l+4|0;yj(n,f,g,c[W>>2]|0,c[o>>2]|0);c[v>>2]=n;Aj(n);c[t+4>>2]=l;c[t+8>>2]=q;n=b+112|0;p=c[n>>2]|0;c[t+16>>2]=p;c[t+20>>2]=g;c[t+24>>2]=j;c[t+28>>2]=0;d=t+12|0;c[d>>2]=0;a:do{if((c[W>>2]|0)==1){o=1<>2];switch(p|0){case 4:{c[d>>2]=ye(o,4)|0;if((o|0)<=0){break a}A=z+4|0;B=z+8|0;p=0;do{a[x]=p;pB(l,w,z);W=p<<2;a[(c[d>>2]|0)+W|0]=(((c[y>>2]|0)*255|0)+32768|0)>>>16;a[(c[d>>2]|0)+(W|1)|0]=(((c[A>>2]|0)*255|0)+32768|0)>>>16;a[(c[d>>2]|0)+(W|2)|0]=(((c[B>>2]|0)*255|0)+32768|0)>>>16;a[(c[d>>2]|0)+(W|3)|0]=-1;p=p+1|0;}while((p|0)<(o|0));break};case 1:case 0:{c[d>>2]=we(o)|0;if((o|0)>0){y=0}else{break a}do{a[x]=y;oB(l,w,A);a[(c[d>>2]|0)+y|0]=(((c[B>>2]|0)*255|0)+32768|0)>>>16;y=y+1|0;}while((y|0)<(o|0));break};case 3:case 2:{c[d>>2]=ye(o,3)|0;if((o|0)<=0){break a}p=z+4|0;B=z+8|0;A=0;do{a[x]=A;pB(l,w,z);W=A*3|0;a[(c[d>>2]|0)+W|0]=(((c[y>>2]|0)*255|0)+32768|0)>>>16;a[(c[d>>2]|0)+(W+1)|0]=(((c[p>>2]|0)*255|0)+32768|0)>>>16;a[(c[d>>2]|0)+(W+2)|0]=(((c[B>>2]|0)*255|0)+32768|0)>>>16;A=A+1|0;}while((A|0)<(o|0));break};default:{break a}}}}while(0);l=c[n>>2]|0;yp(c[b+184>>2]|0,76,t,(l|0)==0?1:l,1,g,j,u)|0;if((q|0)!=0){Le(q);HW(q)}Fe(c[d>>2]|0);j=c[v>>2]|0;if((j|0)!=0){zj(j);HW(j)}fd[c[(c[f>>2]|0)+16>>2]&511](f);i=s;return}function Gh(b,d,e,f,g,j,l,m,n,o,p,q,r){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var 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.0,J=0.0;e=i;E=i;i=i+48|0;r=E;s=i;i=i+32|0;m=s;C=i;i=i+32|0;z=C;B=i;i=i+8|0;A=B;x=i;i=i+8|0;y=x;v=i;i=i+16|0;w=v;u=i;i=i+8|0;t=u;G=d+16|0;F=0;do{h[k>>3]=+h[d+16+(F<<3)>>3];H=c[k+4>>2]&2146435072;F=F+1|0;if(!(H>>>0<2146435072|(H|0)==2146435072&(c[k>>2]&0)>>>0<0)){D=23;break}}while((F|0)<6);if((D|0)==23){i=e;return}h[E>>3]=+h[G>>3];h[r+8>>3]=+h[d+24>>3];J=+h[d+32>>3];h[r+16>>3]=-0.0-J;I=+h[d+40>>3];h[r+24>>3]=-0.0-I;h[r+32>>3]=J+ +h[d+48>>3];h[r+40>>3]=I+ +h[d+56>>3];D=FW(28)|0;d=q+4|0;yj(D,n,o,c[q+8>>2]|0,c[d>>2]|0);c[C>>2]=D;Aj(D);c[z+4>>2]=q;c[z+12>>2]=0;c[z+16>>2]=1;c[z+20>>2]=o;c[z+24>>2]=p;c[z+28>>2]=0;d=1<>2];D=z+8|0;c[D>>2]=we(d)|0;if((d|0)>0){E=0;do{a[u]=E;oB(q,t,y);a[(c[D>>2]|0)+E|0]=(((c[x>>2]|0)*255|0)+32768|0)>>>16;E=E+1|0;}while((E|0)<(d|0))}q=FW(28)|0;d=c[b+180>>2]|0;Ke(q,c[d>>2]|0,c[d+4>>2]|0,1,1,0,1);d=FW(192)|0;Jo(d,q,(a[b+122|0]&1)!=0,0);a[B]=0;ep(d,A,0);yp(d,75,z,1,0,o,p,r)|0;p=c[C>>2]|0;if((p|0)!=0){zj(p);HW(p)}fd[c[(c[n>>2]|0)+16>>2]&511](n);Fe(c[D>>2]|0);if((d|0)!=0){Lo(d);HW(d)}n=b+184|0;bp(c[n>>2]|0,q);p=FW(28)|0;H=l+8|0;o=l+4|0;yj(p,f,g,c[H>>2]|0,c[o>>2]|0);c[s>>2]=p;Aj(p);c[m+4>>2]=l;c[m+12>>2]=0;p=b+112|0;q=c[p>>2]|0;c[m+16>>2]=q;c[m+20>>2]=g;c[m+24>>2]=j;c[m+28>>2]=0;b=m+8|0;c[b>>2]=0;a:do{if((c[H>>2]|0)==1){o=1<>2];switch(q|0){case 3:case 2:{c[b>>2]=ye(o,3)|0;if((o|0)<=0){break a}x=w+4|0;y=w+8|0;q=0;do{a[u]=q;pB(l,t,w);H=q*3|0;a[(c[b>>2]|0)+H|0]=(((c[v>>2]|0)*255|0)+32768|0)>>>16;a[(c[b>>2]|0)+(H+1)|0]=(((c[x>>2]|0)*255|0)+32768|0)>>>16;a[(c[b>>2]|0)+(H+2)|0]=(((c[y>>2]|0)*255|0)+32768|0)>>>16;q=q+1|0;}while((q|0)<(o|0));break};case 4:{c[b>>2]=ye(o,4)|0;if((o|0)<=0){break a}y=w+4|0;q=w+8|0;x=0;do{a[u]=x;pB(l,t,w);H=x<<2;a[(c[b>>2]|0)+H|0]=(((c[v>>2]|0)*255|0)+32768|0)>>>16;a[(c[b>>2]|0)+(H|1)|0]=(((c[y>>2]|0)*255|0)+32768|0)>>>16;a[(c[b>>2]|0)+(H|2)|0]=(((c[q>>2]|0)*255|0)+32768|0)>>>16;a[(c[b>>2]|0)+(H|3)|0]=-1;x=x+1|0;}while((x|0)<(o|0));break};case 1:case 0:{c[b>>2]=we(o)|0;if((o|0)>0){v=0}else{break a}do{a[u]=v;oB(l,t,y);a[(c[b>>2]|0)+v|0]=(((c[x>>2]|0)*255|0)+32768|0)>>>16;v=v+1|0;}while((v|0)<(o|0));break};default:{break a}}}}while(0);l=c[p>>2]|0;yp(c[n>>2]|0,75,m,(l|0)==0?1:l,0,g,j,r)|0;bp(c[n>>2]|0,0);Fe(c[b>>2]|0);g=c[s>>2]|0;if((g|0)!=0){zj(g);HW(g)}fd[c[(c[f>>2]|0)+16>>2]&511](f);i=e;return}function Hh(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0.0,D=0.0,E=0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;j=i;m=i;i=i+8|0;k=m;z=+h[e>>3];y=+h[e+8>>3];C=+h[d+16>>3];x=z*C;q=+h[d+32>>3];D=y*q;p=+h[d+48>>3];t=p+(x+D);A=+h[d+24>>3];z=z*A;w=+h[d+40>>3];y=y*w;n=+h[d+56>>3];F=n+(z+y);o=+h[e+24>>3];q=q*o;x=p+(x+q);o=w*o;z=n+(z+o);do{if(x>3];C=F*C;D=p+(C+D);A=F*A;y=n+(A+y);do{if(D>2]>>2]|0;r=(e|0)<(r|0)?e:r+ -1|0}e=0-r|0;s=~~+R(+z);B=c[b+180>>2]|0;G=c[B+4>>2]|0;if((s|0)<0){v=0}else{v=(s|0)<(G|0)?s:G+ -1|0}s=0-v|0;H=~~+ca(+w);u=b+180|0;E=c[B>>2]|0;E=(H+1|0)>(E|0)?E-r|0:1-r+H|0;E=(E|0)<1?1:E;H=~~+ca(+t);G=(H+1|0)>(G|0)?G-v|0:1-v+H|0;H=(G|0)<1?1:G;G=FW(32)|0;bX(G|0,0,24)|0;c[G>>2]=r;c[G+4>>2]=v;c[G+12>>2]=f;a[G+16|0]=g&1;I=b+244|0;c[G+28>>2]=c[I>>2];c[I>>2]=G;I=G+20|0;c[I>>2]=B;B=b+184|0;K=G+24|0;c[K>>2]=c[B>>2];M=FW(28)|0;J=b+112|0;Ke(M,E,H,c[b+116>>2]|0,c[J>>2]|0,1,(a[b+120|0]&1)!=0);c[u>>2]=M;f=FW(192)|0;L=(a[b+122|0]&1)!=0;Ko(f,M,L,Oo(c[K>>2]|0)|0);c[B>>2]=f;if(!g){Cp(f,c[I>>2]|0,r,v,0,0,E,H)|0;cp(c[B>>2]|0,c[I>>2]|0,r,v);L=u;L=c[L>>2]|0;M=G+8|0;c[M>>2]=L;D=+(e|0);F=+(s|0);KB(d,D,F);M=b;M=c[M>>2]|0;M=M+92|0;M=c[M>>2]|0;Ed[M&3](b,d,0.0,0.0,0.0,0.0,0.0,0.0);i=j;return}switch(c[J>>2]|0){case 4:{a[k+3|0]=-1;l=28;break};case 1:case 0:{a[m]=0;break};case 3:case 2:{l=28;break};default:{}}if((l|0)==28){a[k+2|0]=0;a[k+1|0]=0;a[m]=0}ep(f,k,0);L=u;L=c[L>>2]|0;M=G+8|0;c[M>>2]=L;D=+(e|0);F=+(s|0);KB(d,D,F);M=b;M=c[M>>2]|0;M=M+92|0;M=c[M>>2]|0;Ed[M&3](b,d,0.0,0.0,0.0,0.0,0.0,0.0);i=j;return}function Ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=a+184|0;f=c[e>>2]|0;if((f|0)!=0){Lo(f);HW(f)}f=c[a+244>>2]|0;c[a+180>>2]=c[f+20>>2];c[e>>2]=c[f+24>>2];KB(b,+(c[f>>2]|0),+(c[f+4>>2]|0));Ed[c[(c[a>>2]|0)+92>>2]&3](a,b,0.0,0.0,0.0,0.0,0.0,0.0);i=d;return}function Jh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;d=i;f=b+244|0;g=c[f>>2]|0;e=c[g+8>>2]|0;zp(c[b+184>>2]|0,e,0,0,c[g>>2]|0,c[g+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0,0,(a[g+16|0]&1)==0)|0;b=c[f>>2]|0;c[f>>2]=c[b+28>>2];if((b|0)!=0){HW(b)}if((e|0)==0){i=d;return}Le(e);HW(e);i=d;return}function Kh(b,e,f,g,j,k){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var 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.0;l=i;o=i;i=i+8|0;m=o;w=i;i=i+8|0;v=w;y=i;i=i+16|0;z=y;n=i;i=i+8|0;r=n;p=i;i=i+8|0;q=p;e=b+244|0;B=c[e>>2]|0;t=c[B>>2]|0;u=c[B+4>>2]|0;f=c[B+8>>2]|0;do{if(!g){A=b+112|0;if((c[A>>2]|0)==0){break}if((c[B+12>>2]|0)==0){break}x=FW(192)|0;D=(a[b+122|0]&1)!=0;Ko(x,f,D,Oo(c[B+24>>2]|0)|0);A=c[A>>2]|0;if((A|0)==1){D=c[(c[e>>2]|0)+12>>2]|0;Gd[c[(c[D>>2]|0)+16>>2]&255](D,k,v);a[o]=(((c[w>>2]|0)*255|0)+32768|0)>>>16;Ap(x,m)}else if((A|0)==2|(A|0)==3){s=7}else if((A|0)==4){a[m+3|0]=-1;s=7}if((s|0)==7){D=c[(c[e>>2]|0)+12>>2]|0;Gd[c[(c[D>>2]|0)+20>>2]&255](D,k,z);a[o]=(((c[y>>2]|0)*255|0)+32768|0)>>>16;a[m+1|0]=(((c[z+4>>2]|0)*255|0)+32768|0)>>>16;a[m+2|0]=(((c[z+8>>2]|0)*255|0)+32768|0)>>>16;Ap(x,m)}if((x|0)==0){break}Lo(x);HW(x)}}while(0);s=FW(28)|0;y=b+180|0;x=c[y>>2]|0;Ke(s,c[x>>2]|0,c[x+4>>2]|0,1,1,0,1);x=c[(c[e>>2]|0)+12>>2]|0;if((x|0)==0){v=0}else{Gd[c[(c[x>>2]|0)+16>>2]&255](x,k,v);v=(((c[w>>2]|0)*255|0)+32768|0)>>>16&255}x=s+20|0;k=s+12|0;bX(c[x>>2]|0,v|0,da(c[s+4>>2]|0,c[k>>2]|0)|0)|0;v=c[f>>2]|0;w=c[f+4>>2]|0;y=c[y>>2]|0;z=c[y>>2]|0;v=(v+t|0)>(z|0)?z-t|0:v;y=c[y+4>>2]|0;w=(w+u|0)>(y|0)?y-u|0:w;if((w|0)>0){C=c[k>>2]|0;B=(da(C,u)|0)+t|0;z=(v|0)>0;t=b+112|0;A=(j|0)==0;y=m+1|0;u=m+2|0;x=(c[x>>2]|0)+B|0;B=0;while(1){if(z){a:do{if(g){C=0;do{a[x+C|0]=Pe(f,C,B)|0;C=C+1|0;}while((C|0)<(v|0))}else{C=0;while(1){Oe(f,C,B,m);switch(c[t>>2]|0){case 3:case 2:case 4:{h[n>>3]=+(d[o]|0|0)*.001176470588235294+ +(d[y]|0|0)*.002313725490196078+ +(d[u]|0|0)*.00043137254901960784;break};case 1:case 0:{h[n>>3]=+(d[o]|0|0)/255.0;break};default:{}}if(A){E=+h[n>>3];h[p>>3]=E}else{Gd[c[(c[j>>2]|0)+16>>2]&255](j,r,q);E=+h[p>>3]}a[x+C|0]=~~(E*255.0+.5);C=C+1|0;if((C|0)>=(v|0)){break a}}}}while(0);D=c[k>>2]|0}else{D=C}B=B+1|0;if((B|0)<(w|0)){C=D;x=x+D|0}else{break}}}bp(c[b+184>>2]|0,s);j=c[e>>2]|0;c[e>>2]=c[j+28>>2];if((j|0)!=0){HW(j)}if((f|0)==0){i=l;return}Le(f);HW(f);i=l;return}function Lh(a,b){a=a|0;b=b|0;b=i;bp(c[a+184>>2]|0,0);i=b;return}function Mh(b){b=b|0;i=i;return(a[(c[b+184>>2]|0)+188|0]&1)!=0|0}function Nh(b,d){b=b|0;d=d|0;a[(c[b+184>>2]|0)+188|0]=d&1;i=i;return}function Oh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;h=c[e+8>>2]|0;h=jd[c[(c[h>>2]|0)+12>>2]&511](h)|0;h=(c[b+112>>2]|0)==2&(h|0)==2;g=FW(16)|0;qq(g);c[g>>2]=34520;c[g+8>>2]=d;c[g+4>>2]=e;a[g+12|0]=h&1;if((c[e+324>>2]|0)<=0){h=0;i=f;return h|0}d=jd[c[(c[b>>2]|0)+404>>2]&511](b)|0;hd[c[(c[b>>2]|0)+408>>2]&127](b,1);h=Bp(c[b+184>>2]|0,g)|0;hd[c[(c[b>>2]|0)+408>>2]&127](b,d);i=f;return h|0}function Ph(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=+f;g=+g;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;q=i;i=i+48|0;n=i;i=i+8|0;u=i;i=i+8|0;t=i;i=i+8|0;r=i;i=i+8|0;m=jd[c[(c[b>>2]|0)+404>>2]&511](b)|0;hd[c[(c[b>>2]|0)+408>>2]&127](b,1);HB(d,n,u,t,r);f=+h[n>>3];g=+h[u>>3];k=d+588|0;v=c[k>>2]|0;s=d+592|0;h[s>>3]=f;l=d+600|0;h[l>>3]=g;uB(v,f,g);g=+h[t>>3];f=+h[u>>3];u=c[k>>2]|0;h[s>>3]=g;h[l>>3]=f;vB(u,g,f);f=+h[t>>3];g=+h[r>>3];t=c[k>>2]|0;h[s>>3]=f;h[l>>3]=g;vB(t,f,g);g=+h[n>>3];f=+h[r>>3];r=c[k>>2]|0;h[s>>3]=g;h[l>>3]=f;vB(r,g,f);xB(c[k>>2]|0);k=c[k>>2]|0;r=k+28|0;n=k+24|0;t=c[(c[n>>2]|0)+((c[r>>2]|0)+ -1<<2)>>2]|0;h[s>>3]=+h[(c[t>>2]|0)+((c[t+12>>2]|0)+ -1<<3)>>3];r=c[(c[n>>2]|0)+((c[r>>2]|0)+ -1<<2)>>2]|0;h[l>>3]=+h[(c[r+4>>2]|0)+((c[r+12>>2]|0)+ -1<<3)>>3];k=lh(0,0,k)|0;l=FW(144)|0;r=c[b+112>>2]|0;qq(l);c[l>>2]=34568;n=l+128|0;c[n>>2]=e;c[l+132>>2]=d;c[l+136>>2]=r;$W(q|0,d+16|0,48)|0;Gy(q,l+8|0)|0;n=c[n>>2]|0;f=+h[n+184>>3];h[l+56>>3]=f;g=+h[n+192>>3];h[l+64>>3]=g;p=+h[n+200>>3];h[l+72>>3]=p;o=+h[n+208>>3];h[l+80>>3]=o;f=p-f;h[l+88>>3]=f;g=o-g;h[l+96>>3]=g;h[l+104>>3]=1.0/(f*f+g*g);h[l+112>>3]=+h[n+216>>3];h[l+120>>3]=+h[n+224>>3];e=(Dp(c[b+184>>2]|0,k,(a[e+176|0]&1)!=0,l)|0)==0;hd[c[(c[b>>2]|0)+408>>2]&127](b,m);SB(d);if((l|0)!=0){fd[c[(c[l>>2]|0)+8>>2]&511](l)}if((k|0)==0){i=j;return e|0}hq(k);HW(k);i=j;return e|0}function Qh(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,j=0.0,k=0,l=0,m=0,n=0;d=i;k=i;i=i+48|0;b=FW(144)|0;m=c[a+136>>2]|0;l=c[a+132>>2]|0;n=c[a+128>>2]|0;qq(b);c[b>>2]=34568;a=b+128|0;c[a>>2]=n;c[b+132>>2]=l;c[b+136>>2]=m;$W(k|0,l+16|0,48)|0;Gy(k,b+8|0)|0;a=c[a>>2]|0;f=+h[a+184>>3];h[b+56>>3]=f;e=+h[a+192>>3];h[b+64>>3]=e;j=+h[a+200>>3];h[b+72>>3]=j;g=+h[a+208>>3];h[b+80>>3]=g;f=j-f;h[b+88>>3]=f;e=g-e;h[b+96>>3]=e;h[b+104>>3]=1.0/(f*f+e*e);h[b+112>>3]=+h[a+216>>3];h[b+120>>3]=+h[a+224>>3];i=d;return b|0}function Rh(a){a=a|0;i=i;return 0}function Sh(b){b=b|0;var d=0,e=0,f=0,g=0;e=i;d=FW(16)|0;f=a[b+12|0]&1;g=c[b+8>>2]|0;b=c[b+4>>2]|0;qq(d);c[d>>2]=34520;c[d+8>>2]=g;c[d+4>>2]=b;a[d+12|0]=f;i=e;return d|0}function Th(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;i=i;return 0}function Uh(a){a=a|0;i=i;return 0}function Vh(a){a=a|0;i=i;return(c[(c[a+4>>2]|0)+324>>2]|0)>0|0}function Wh(a){a=a|0;i=i;return c[(c[a+4>>2]|0)+192>>2]|0}function Xh(a,b,d,e,f,g,h,j,k,l,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0;n=i;gB(c[a+4>>2]|0,b,d,e,f,g,h,j,k,l,m);i=n;return}function Yh(a){a=a|0;i=i;return-1}function Zh(a){a=a|0;i=i;return-1}function _h(a){a=a|0;i=i;return 0}function $h(a,b){a=a|0;b=b|0;if((b|0)==5|(b|0)==2|(b|0)==4){b=1}else{b=0}i=i;return b|0}function ai(a){a=a|0;i=i;return 0}function bi(a){a=a|0;i=i;return 0}function ci(a){a=a|0;i=i;return-1}function di(a){a=a|0;i=i;return-1}function ei(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[b+116>>2]|0;a=(jd[c[(c[a>>2]|0)+12>>2]&511](a)|0)==10;i=d;return a|0}function fi(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[b+116>>2]|0;a=(jd[c[(c[a>>2]|0)+12>>2]&511](a)|0)==10;i=d;return a|0}function gi(a,b,c,d,e,f,g,h,j,k,l,m,n,o,p){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;i=i;return-1}function hi(a){a=a|0;i=i;return}function ii(a,b){a=a|0;b=b|0;i=i;return}function ji(a,b){a=a|0;b=b|0;i=i;return}function ki(a,b){a=a|0;b=b|0;i=i;return}function li(a,b){a=a|0;b=b|0;i=i;return}function mi(a,b){a=a|0;b=b|0;i=i;return}function ni(a,b){a=a|0;b=b|0;i=i;return}function oi(a,b){a=a|0;b=b|0;i=i;return}function pi(a,b,c){a=a|0;b=b|0;c=+c;i=i;return}function qi(a,b){a=a|0;b=b|0;i=i;return}function ri(a,b){a=a|0;b=b|0;i=i;return}function si(a,b){a=a|0;b=b|0;i=i;return}function ti(a,b){a=a|0;b=b|0;i=i;return}function ui(a,b){a=a|0;b=b|0;i=i;return}function vi(a,b){a=a|0;b=b|0;i=i;return}function wi(a,b){a=a|0;b=b|0;i=i;return}function xi(a,b,c){a=a|0;b=b|0;c=+c;i=i;return}function yi(a,b,c,d,e,f,g,h,j,k,l,m,n){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;k=k|0;l=l|0;m=+m;n=+n;i=i;return 0}function zi(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function Ai(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function Bi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;i=i;return 0}function Ci(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function Di(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function Ei(a,b){a=a|0;b=b|0;i=i;return}function Fi(a,b){a=a|0;b=b|0;i=i;return}function Gi(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function Hi(a,b){a=a|0;b=b|0;i=i;return}function Ii(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function Ji(b,d){b=b|0;d=d|0;d=i;if((c[b+240>>2]|0)==0){b=0;i=d;return b|0}b=(a[b+108|0]&1)!=0;i=d;return b|0}function Ki(a,b){a=a|0;b=b|0;i=i;return}function Li(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function Mi(a){a=a|0;i=i;return c[a+104>>2]|0}function Ni(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function Oi(a){a=a|0;i=i;return}function Pi(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function Qi(a,b){a=a|0;b=b|0;var d=0;d=i;if((c[b+4>>2]|0)!=(c[a+4>>2]|0)){a=0;i=d;return a|0}a=(c[b+8>>2]|0)==(c[a+8>>2]|0);i=d;return a|0}function Ri(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;g=55024+(g<<2)|0;if((c[g>>2]|0)>0){j=0}else{i=h;return}do{a[f+j|0]=((da(d[b+j|0]|0,d[e+j|0]|0)|0)>>>0)/255|0;j=j+1|0;}while((j|0)<(c[g>>2]|0));i=h;return}function Si(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;g=55024+(g<<2)|0;if((c[g>>2]|0)>0){j=0}else{i=h;return}do{k=d[e+j|0]|0;l=d[b+j|0]|0;a[f+j|0]=l+k-(((da(l,k)|0)>>>0)/255|0);j=j+1|0;}while((j|0)<(c[g>>2]|0));i=h;return}function Ti(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;g=55024+(g<<2)|0;if((c[g>>2]|0)>0){j=0}else{i=h;return}do{m=a[e+j|0]|0;l=m&255;k=d[b+j|0]|0;if(m<<24>>24>-1){k=((da(l<<1,k)|0)>>>0)/255|0}else{k=255-(((da(l<<1^510,k^255)|0)>>>0)/255|0)|0}a[f+j|0]=k;j=j+1|0;}while((j|0)<(c[g>>2]|0));i=h;return}function Ui(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;f=55024+(f<<2)|0;if((c[f>>2]|0)>0){h=0}else{i=g;return}do{j=a[d+h|0]|0;k=a[b+h|0]|0;a[e+h|0]=(j&255)<(k&255)?j:k;h=h+1|0;}while((h|0)<(c[f>>2]|0));i=g;return}function Vi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;f=55024+(f<<2)|0;if((c[f>>2]|0)>0){h=0}else{i=g;return}do{j=a[d+h|0]|0;k=a[b+h|0]|0;a[e+h|0]=(j&255)>(k&255)?j:k;h=h+1|0;}while((h|0)<(c[f>>2]|0));i=g;return}function Wi(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;g=55024+(g<<2)|0;if((c[g>>2]|0)>0){j=0}else{i=h;return}do{k=a[b+j|0]|0;if(k<<24>>24==-1){a[f+j|0]=-1}else{k=(((d[e+j|0]|0)*255|0)>>>0)/((k&255^255)>>>0)|0;a[f+j|0]=k>>>0>255?-1:k&255}j=j+1|0;}while((j|0)<(c[g>>2]|0));i=h;return}function Xi(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;g=55024+(g<<2)|0;if((c[g>>2]|0)>0){j=0}else{i=h;return}do{k=a[b+j|0]|0;if(k<<24>>24==0){a[f+j|0]=0}else{k=((((d[e+j|0]|0)^255)*255|0)>>>0)/((k&255)>>>0)|0;if(k>>>0<256){k=255-k&255}else{k=0}a[f+j|0]=k}j=j+1|0;}while((j|0)<(c[g>>2]|0));i=h;return}function Yi(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;g=55024+(g<<2)|0;if((c[g>>2]|0)>0){j=0}else{i=h;return}do{m=a[b+j|0]|0;l=m&255;k=d[e+j|0]|0;if(m<<24>>24>-1){k=((da(l<<1,k)|0)>>>0)/255|0}else{k=255-(((da(l<<1^510,k^255)|0)>>>0)/255|0)|0}a[f+j|0]=k;j=j+1|0;}while((j|0)<(c[g>>2]|0));i=h;return}function Zi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;f=55024+(f<<2)|0;if((c[f>>2]|0)>0){h=0}else{i=g;return}do{k=a[b+h|0]|0;l=a[d+h|0]|0;j=l&255;if(k<<24>>24>-1){a[e+h|0]=j-((da(da(255-((k&255)<<1)|0,j)|0,j^255)|0)/65025|0)}else{if((l&255)<64){l=(da(((da((j<<4)+ -3060|0,j)|0)/255|0)+1020|0,j)|0)/255|0}else{l=~~+T(+(+(j|0)*255.0))}a[e+h|0]=((da(((k&255)<<1)+ -255|0,l-j|0)|0)/255|0)+j}h=h+1|0;}while((h|0)<(c[f>>2]|0));i=g;return}function _i(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;f=55024+(f<<2)|0;if((c[f>>2]|0)>0){h=0}else{i=g;return}do{j=a[d+h|0]|0;k=a[b+h|0]|0;a[e+h|0]=(j&255)<(k&255)?k-j<<24>>24:j-k<<24>>24;h=h+1|0;}while((h|0)<(c[f>>2]|0));i=g;return}function $i(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;g=55024+(g<<2)|0;if((c[g>>2]|0)>0){j=0}else{i=h;return}do{l=d[e+j|0]|0;k=d[b+j|0]|0;a[f+j|0]=k+l-(((da(l<<1,k)|0)>>>0)/255|0);j=j+1|0;}while((j|0)<(c[g>>2]|0));i=h;return}function aj(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;switch(e|0){case 1:case 0:{a[d]=a[c]|0;i=f;return};case 3:case 2:{break};case 4:{a[b+3|0]=-1;break};default:{i=f;return}}j=a[b]|0;h=a[b+1|0]|0;k=a[b+2|0]|0;e=j&255;g=h&255;b=k&255;do{if((j&255)<(h&255)){if((j&255)>=(k&255)){h=g;j=e;e=1;break}k=(h&255)<(k&255);h=k?b:g;j=k?g:b;b=e;e=k?3:2}else{if((h&255)>=(k&255)){h=e;j=g;e=0;break}k=(k&255)<(j&255);h=k?e:b;j=k?b:e;b=g;e=k?5:4}}while(0);if((h|0)==(b|0)){b=0}else{if((e&1|0)==0){b=((j-b|0)*60|0)/(h-b|0)|0}else{b=((h-j|0)*60|0)/(h-b|0)|0}b=b+(e*60|0)|0}e=a[c]|0;j=a[c+1|0]|0;k=a[c+2|0]|0;h=e&255;g=j&255;c=k&255;do{if((e&255)<(j&255)){if((e&255)>=(k&255)){e=g;break}e=(j&255)<(k&255)?c:g;c=h}else{if((j&255)>=(k&255)){e=h;break}e=(k&255)<(e&255)?h:c;c=g}}while(0);if((e|0)==(c|0)){c=0}else{c=((e-c|0)*255|0)/(e|0)|0}ej(b,c,e,d,d+1|0,d+2|0);i=f;return}function bj(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;switch(e|0){case 3:case 2:{break};case 4:{a[b+3|0]=-1;break};case 1:case 0:{a[d]=a[c]|0;i=f;return};default:{i=f;return}}e=a[b]|0;j=a[b+1|0]|0;k=a[b+2|0]|0;h=e&255;g=j&255;b=k&255;do{if((e&255)<(j&255)){if((e&255)>=(k&255)){e=g;break}e=(j&255)<(k&255)?b:g;b=h}else{if((j&255)>=(k&255)){e=h;break}e=(k&255)<(e&255)?h:b;b=g}}while(0);if((e|0)==(b|0)){e=0}else{e=((e-b|0)*255|0)/(e|0)|0}k=a[c]|0;j=a[c+1|0]|0;c=a[c+2|0]|0;g=k&255;h=j&255;b=c&255;do{if((k&255)<(j&255)){if((k&255)>=(c&255)){c=h;j=g;g=1;break}k=(j&255)<(c&255);c=k?b:h;j=k?h:b;b=g;g=k?3:2}else{if((j&255)>=(c&255)){c=g;j=h;g=0;break}k=(c&255)<(k&255);c=k?g:b;j=k?b:g;b=h;g=k?5:4}}while(0);if((c|0)==(b|0)){b=0}else{if((g&1|0)==0){b=((j-b|0)*60|0)/(c-b|0)|0}else{b=((c-j|0)*60|0)/(c-b|0)|0}b=b+(g*60|0)|0}ej(b,e,c,d,d+1|0,d+2|0);i=f;return}function cj(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;switch(e|0){case 4:{a[b+3|0]=-1;break};case 1:case 0:{a[d]=a[c]|0;i=f;return};case 3:case 2:{break};default:{i=f;return}}e=a[b]|0;j=a[b+1|0]|0;k=a[b+2|0]|0;g=e&255;h=j&255;b=k&255;do{if((e&255)<(j&255)){if((e&255)>=(k&255)){e=h;j=g;g=b;b=1;break}k=(j&255)<(k&255);e=k?b:h;j=k?h:b;b=k?3:2}else{if((j&255)>=(k&255)){e=g;j=h;g=b;b=0;break}k=(k&255)<(e&255);e=k?g:b;j=k?b:g;g=h;b=k?5:4}}while(0);if((e|0)==(g|0)){b=0;e=0}else{if((b&1|0)==0){h=((j-g|0)*60|0)/(e-g|0)|0}else{h=((e-j|0)*60|0)/(e-g|0)|0}b=h+(b*60|0)|0;e=((e-g|0)*255|0)/(e|0)|0}h=a[c]|0;g=a[c+1|0]|0;k=a[c+2|0]|0;l=h&255;c=g&255;j=k&255;do{if((h&255)<(g&255)){if((h&255)>=(k&255)){break}c=(g&255)<(k&255)?j:c}else{if((g&255)>=(k&255)){c=l;break}c=(k&255)<(h&255)?l:j}}while(0);ej(b,e,c,d,d+1|0,d+2|0);i=f;return}function dj(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;switch(e|0){case 1:case 0:{a[d]=a[c]|0;i=f;return};case 4:{a[b+3|0]=-1;break};case 3:case 2:{break};default:{i=f;return}}g=a[b]|0;e=a[b+1|0]|0;k=a[b+2|0]|0;j=g&255;b=e&255;h=k&255;do{if((g&255)<(e&255)){if((g&255)>=(k&255)){break}b=(e&255)<(k&255)?h:b}else{if((e&255)>=(k&255)){b=j;break}b=(k&255)<(g&255)?j:h}}while(0);j=a[c]|0;k=a[c+1|0]|0;c=a[c+2|0]|0;e=j&255;h=k&255;g=c&255;do{if((j&255)<(k&255)){if((j&255)>=(c&255)){c=h;j=e;e=g;g=1;break}k=(k&255)<(c&255);c=k?g:h;j=k?h:g;g=k?3:2}else{if((k&255)>=(c&255)){c=e;j=h;e=g;g=0;break}k=(c&255)<(j&255);c=k?e:g;j=k?g:e;e=h;g=k?5:4}}while(0);if((c|0)==(e|0)){g=0;c=0}else{if((g&1|0)==0){h=((j-e|0)*60|0)/(c-e|0)|0}else{h=((c-j|0)*60|0)/(c-e|0)|0}g=h+(g*60|0)|0;c=((c-e|0)*255|0)/(c|0)|0}ej(g,c,b,d,d+1|0,d+2|0);i=f;return}function ej(b,c,d,e,f,g){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;if((c|0)==0){b=d&255;a[g]=b;a[f]=b;a[e]=b;i=h;return}j=(b|0)/60|0;b=(b|0)%60|0;if((j&1|0)==0){b=da(255-((da(60-b|0,c)|0)/60|0)|0,d)|0;b=b+128+(b>>>8)|0}else{b=(d*255|0)-((da(b,c)|0)/60|0)|0;b=b+128+(b>>>8)|0}b=b>>>8&255;c=da(255-c|0,d)|0;c=(c+128+(c>>>8)|0)>>>8&255;switch(j|0){case 1:{a[f]=d;a[e]=b;a[g]=c;i=h;return};case 3:{a[g]=d;a[f]=b;a[e]=c;i=h;return};case 0:{a[e]=d;a[f]=b;a[g]=c;i=h;return};case 5:{a[e]=d;a[g]=b;a[f]=c;i=h;return};case 4:{a[g]=d;a[e]=b;a[f]=c;i=h;return};case 2:{a[f]=d;a[g]=b;a[e]=c;i=h;return};default:{i=h;return}}}function fj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=i;h=i;i=i+16|0;g=h;f=g+8|0;c[f>>2]=0;c[f+4>>2]=0;c[h>>2]=5;h=FW(24)|0;f=FW(4)|0;c[f>>2]=192008;Nt(h,f,0);f=FW(68)|0;a=FW(1088)|0;Lj(a,h,0,0,c[h+8>>2]|0,g);Uf(f,a,d,e,0);i=b;return f|0}function gj(a,b){a=a|0;b=b|0;var c=0;c=i;a=(ue(b,35992,6)|0)==0;i=c;return a|0}function hj(a){a=a|0;i=i;return}function ij(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function jj(a){a=a|0;i=i;return}function kj(a){a=a|0;i=i;return}function lj(a){a=a|0;var b=0;a=i;b=i;i=i+8|0;Qe(-1,36088,b);i=a;return-1}function mj(a,b,c){a=a|0;b=b|0;c=c|0;c=i;b=i;i=i+8|0;Qe(-1,36144,b);i=c;return 0}function nj(a,b,c){a=a|0;b=b|0;c=c|0;c=i;b=i;i=i+8|0;Qe(-1,36200,b);i=c;return}function oj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if((jd[c[(c[b>>2]|0)+24>>2]&511](b)|0)==-1){h=0;i=f;return h|0}e=e+ -1|0;a:do{if((e|0)>0){g=0;while(1){h=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((h|0)==13){break}else if((h|0)==10|(h|0)==-1){break a}a[d+g|0]=h;g=g+1|0;if((g|0)>=(e|0)){break a}}if((jd[c[(c[b>>2]|0)+24>>2]&511](b)|0)!=10){break}jd[c[(c[b>>2]|0)+20>>2]&511](b)|0}else{g=0}}while(0);a[d+g|0]=0;h=d;i=f;return h|0}function pj(a,b,c){a=a|0;b=b|0;c=c|0;b=i;c=FW(32)|0;ee(c);i=b;return c|0}function qj(a,b){a=a|0;b=b|0;var 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,A=0,B=0,C=0,D=0,E=0;e=i;v=i;i=i+8|0;k=i;i=i+8|0;g=i;i=i+8|0;h=g;x=i;i=i+8|0;w=x;y=i;i=i+8|0;z=y;B=i;i=i+8|0;A=B;C=i;i=i+8|0;E=C;r=i;i=i+16|0;d=r;l=i;i=i+16|0;p=l;q=i;i=i+16|0;f=q;o=i;i=i+16|0;j=o;c[r>>2]=13;t=d+8|0;c[t>>2]=0;c[t+4>>2]=0;c[l>>2]=13;s=p+8|0;c[s>>2]=0;c[s+4>>2]=0;c[q>>2]=13;m=f+8|0;c[m>>2]=0;c[m+4>>2]=0;c[o>>2]=13;n=j+8|0;c[n>>2]=0;u=n+4|0;c[u>>2]=0;D=c[b>>2]|0;if((D|0)!=7){c[C>>2]=D;c[E+4>>2]=7;Qe(0,48632,E);tc()}C=b+8|0;Yu(c[C>>2]|0,36256,d,0)|0;do{if((c[r>>2]|0)==5){Of(d);D=c[b>>2]|0;if((D|0)==7){Yu(c[C>>2]|0,36264,d,0)|0;break}else{c[B>>2]=D;c[A+4>>2]=7;Qe(0,48632,A);tc()}}}while(0);A=c[b>>2]|0;if((A|0)!=7){c[y>>2]=A;c[z+4>>2]=7;Qe(0,48632,z);tc()}Yu(c[C>>2]|0,36272,f,0)|0;do{if((c[q>>2]|0)==5){Of(f);b=c[b>>2]|0;if((b|0)==7){Yu(c[C>>2]|0,36288,f,0)|0;break}else{c[x>>2]=b;c[w+4>>2]=7;Qe(0,48632,w);tc()}}}while(0);w=c[r>>2]|0;if((w|0)==4){E=rj(a,c[t>>2]|0,a,f)|0;Of(d);Of(f);i=e;return E|0}else if((w|0)==6){v=0;w=a;while(1){x=c[t>>2]|0;if((v|0)>=(c[x+12>>2]|0)){j=26;break}ut(x,v,p)|0;if((c[q>>2]|0)==6){ut(c[m>>2]|0,v,j)|0}else{c[n>>2]=0;c[u>>2]=0;c[o>>2]=5}if((c[l>>2]|0)==4){x=rj(a,c[s>>2]|0,w,j)|0}else{Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,36296,k);x=FW(12)|0;c[x+4>>2]=1;c[x+8>>2]=w;c[x>>2]=48040}Of(p);Of(j);w=c[r>>2]|0;if((w|0)==6){v=v+1|0;w=x}else{j=16;break}}if((j|0)==16){c[g>>2]=w;c[h+4>>2]=6;Qe(0,48632,h);tc()}else if((j|0)==26){Of(d);Of(f);i=e;return w|0}}else if((w|0)==5){E=a;Of(d);Of(f);i=e;return E|0}else{Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,36312,v);E=a;Of(d);Of(f);i=e;return E|0}return 0}function rj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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,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;g=i;Q=i;i=i+8|0;O=Q;x=i;i=i+8|0;t=x;A=i;i=i+8|0;B=A;K=i;i=i+8|0;J=K;L=i;i=i+8|0;M=L;m=i;i=i+8|0;l=m;n=i;i=i+8|0;o=n;r=i;i=i+8|0;s=r;u=i;i=i+8|0;v=u;E=i;i=i+8|0;C=E;I=i;i=i+8|0;F=I;q=i;i=i+8|0;p=q;w=i;i=i+8|0;y=w;D=i;i=i+8|0;z=D;H=i;i=i+8|0;G=H;j=i;i=i+16|0;P=j;k=i;i=i+16|0;h=k;c[j>>2]=13;j=P+8|0;c[j>>2]=0;c[j+4>>2]=0;c[k>>2]=13;j=h+8|0;c[j>>2]=0;c[j+4>>2]=0;do{if((Qc(d|0,36352)|0)!=0){if((Qc(d|0,36368)|0)==0){break}do{if((Qc(d|0,36376)|0)!=0){if((Qc(d|0,36392)|0)==0){break}do{if((Qc(d|0,36400)|0)!=0){if((Qc(d|0,36416)|0)==0){break}do{if((Qc(d|0,36496)|0)!=0){if((Qc(d|0,36512)|0)==0){break}do{if((Qc(d|0,36520)|0)!=0){if((Qc(d|0,36536)|0)==0){break}do{if((Qc(d|0,36632)|0)!=0){if((Qc(d|0,36648)|0)==0){break}do{if((Qc(d|0,36672)|0)!=0){if((Qc(d|0,36688)|0)==0){break}if((Qc(d|0,36696)|0)==0){if((c[f>>2]|0)==7){Yu(c[f+8>>2]|0,36712,P,0)|0}b=FW(152)|0;bD(b,e,P);Of(P);i=g;return b|0}if((Qc(d|0,36728)|0)==0){b=FW(220)|0;FD(b,e);i=g;return b|0}else{b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[Q>>2]=d;Qe(b,36744,O);b=FW(12)|0;c[b+4>>2]=1;c[b+8>>2]=e;c[b>>2]=48040;i=g;return b|0}}}while(0);if((c[f>>2]|0)==7){n=f+8|0;Yu(c[n>>2]|0,36424,h,0)|0;if((c[k>>2]|0)==1){l=c[j>>2]|0}else{l=1}Of(h);m=c[f>>2]|0;if((m|0)!=7){c[K>>2]=m;c[J+4>>2]=7;Qe(0,48632,J);tc()}Yu(c[n>>2]|0,36440,h,0)|0;if((c[k>>2]|0)==1){m=c[j>>2]|0}else{m=1}Of(h);o=c[f>>2]|0;if((o|0)!=7){c[A>>2]=o;c[B+4>>2]=7;Qe(0,48632,B);tc()}Yu(c[n>>2]|0,36448,h,0)|0;if((c[k>>2]|0)==1){o=c[j>>2]|0}else{o=1}Of(h);f=c[f>>2]|0;if((f|0)!=7){c[x>>2]=f;c[t+4>>2]=7;Qe(0,48632,t);tc()}Yu(c[n>>2]|0,36456,h,0)|0;if((c[k>>2]|0)==1){j=c[j>>2]|0}else{j=8}Of(h);h=j}else{h=8;o=1;m=1;l=1}b=FW(34100)|0;ql(b,e,l,m,o,h);i=g;return b|0}}while(0);if((c[f>>2]|0)==7){do{if((c[(Yu(c[f+8>>2]|0,36656,h,0)|0)>>2]|0)==1){k=c[k>>2]|0;if((k|0)==1){N=c[j>>2]|0;break}else{c[L>>2]=k;c[M+4>>2]=1;Qe(0,48632,M);tc()}}else{N=-1}}while(0);Of(h)}else{N=-1}h=FW(4016)|0;c[h+4>>2]=1;c[h+8>>2]=e;c[h>>2]=43144;c[h+180>>2]=N;a[h+13|0]=0;a[h+12|0]=0;c[h+176>>2]=0;bX(h+16|0,0,16)|0;bX(h+3452|0,0,544)|0;if(a[43240]&1){b=h;i=g;return b|0}bX(43248,0,256)|0;e=0;do{a[e+43504|0]=e;e=e+1|0;}while((e|0)<256);bX(43760|0,-1,256)|0;a[43240]=1;b=h;i=g;return b|0}}while(0);if((c[f>>2]|0)==7){t=f+8|0;Yu(c[t>>2]|0,36544,h,0)|0;if((c[k>>2]|0)==1){q=c[j>>2]|0}else{q=0}Of(h);p=c[f>>2]|0;if((p|0)!=7){c[I>>2]=p;c[F+4>>2]=7;Qe(0,48632,F);tc()}Yu(c[t>>2]|0,36552,h,0)|0;if((c[k>>2]|0)==0){p=(a[j]&1)!=0}else{p=0}Of(h);w=c[f>>2]|0;if((w|0)!=7){c[E>>2]=w;c[C+4>>2]=7;Qe(0,48632,C);tc()}Yu(c[t>>2]|0,36568,h,0)|0;if((c[k>>2]|0)==0){w=(a[j]&1)!=0}else{w=0}Of(h);x=c[f>>2]|0;if((x|0)!=7){c[u>>2]=x;c[v+4>>2]=7;Qe(0,48632,v);tc()}Yu(c[t>>2]|0,36440,h,0)|0;if((c[k>>2]|0)==1){u=c[j>>2]|0}else{u=1728}Of(h);v=c[f>>2]|0;if((v|0)!=7){c[r>>2]=v;c[s+4>>2]=7;Qe(0,48632,s);tc()}Yu(c[t>>2]|0,36592,h,0)|0;if((c[k>>2]|0)==1){r=c[j>>2]|0}else{r=0}Of(h);s=c[f>>2]|0;if((s|0)!=7){c[n>>2]=s;c[o+4>>2]=7;Qe(0,48632,o);tc()}Yu(c[t>>2]|0,36600,h,0)|0;if((c[k>>2]|0)==0){n=(a[j]&1)!=0}else{n=1}Of(h);f=c[f>>2]|0;if((f|0)!=7){c[m>>2]=f;c[l+4>>2]=7;Qe(0,48632,l);tc()}Yu(c[t>>2]|0,36616,h,0)|0;if((c[k>>2]|0)==0){j=(a[j]&1)!=0}else{j=0}Of(h);h=j}else{q=0;h=0;w=0;u=1728;n=1;p=0;r=0}j=FW(68)|0;c[j+4>>2]=1;c[j+8>>2]=e;c[j>>2]=38440;c[j+12>>2]=q;a[j+16|0]=p&1;a[j+17|0]=w&1;e=j+20|0;c[e>>2]=u;do{if((u|0)<1){c[e>>2]=1;u=1}else{if((u|0)<=2147483645){break}c[e>>2]=2147483645;u=2147483645}}while(0);c[j+24>>2]=r;a[j+28|0]=n&1;a[j+29|0]=h&1;e=ze(u+1|0,4)|0;c[j+44>>2]=e;b=ze(u+2|0,4)|0;c[j+48>>2]=b;h=j+30|0;if((e|0)==0|(b|0)==0){a[h]=1}else{a[h]=0;c[e>>2]=u}c[j+32>>2]=0;a[j+31|0]=q>>>31;c[j+40>>2]=0;c[j+52>>2]=0;c[j+60>>2]=0;c[j+64>>2]=-1;b=j;i=g;return b|0}}while(0);b=FW(152)|0;c[b+4>>2]=1;c[b+8>>2]=e;c[b>>2]=38304;Q=b+12|0;c[b+144>>2]=Q;c[b+140>>2]=Q;a[b+148|0]=0;i=g;return b|0}}while(0);if((c[f>>2]|0)==7){m=f+8|0;Yu(c[m>>2]|0,36424,h,0)|0;if((c[k>>2]|0)==1){l=c[j>>2]|0}else{l=1}Of(h);n=c[f>>2]|0;if((n|0)!=7){c[H>>2]=n;c[G+4>>2]=7;Qe(0,48632,G);tc()}Yu(c[m>>2]|0,36440,h,0)|0;if((c[k>>2]|0)==1){n=c[j>>2]|0}else{n=1}Of(h);o=c[f>>2]|0;if((o|0)!=7){c[D>>2]=o;c[z+4>>2]=7;Qe(0,48632,z);tc()}Yu(c[m>>2]|0,36448,h,0)|0;if((c[k>>2]|0)==1){o=c[j>>2]|0}else{o=1}Of(h);r=c[f>>2]|0;if((r|0)!=7){c[w>>2]=r;c[y+4>>2]=7;Qe(0,48632,y);tc()}Yu(c[m>>2]|0,36456,h,0)|0;if((c[k>>2]|0)==1){r=c[j>>2]|0}else{r=8}Of(h);f=c[f>>2]|0;if((f|0)!=7){c[q>>2]=f;c[p+4>>2]=7;Qe(0,48632,p);tc()}Yu(c[m>>2]|0,36480,h,0)|0;if((c[k>>2]|0)==1){j=c[j>>2]|0}else{j=1}Of(h)}else{r=8;o=1;n=1;j=1;l=1}b=FW(53324)|0;tk(b,e,l,n,o,r,j);i=g;return b|0}}while(0);b=FW(60)|0;c[b+4>>2]=1;c[b+8>>2]=e;c[b>>2]=37936;c[b+52>>2]=0;c[b+48>>2]=0;a[b+56|0]=0;i=g;return b|0}}while(0);b=FW(20)|0;c[b+4>>2]=1;c[b+8>>2]=e;c[b>>2]=37760;c[b+12>>2]=-1;a[b+16|0]=0;i=g;return b|0}function sj(a){a=a|0;var b=0;b=i;c[a>>2]=36776;Of(a+16|0);HW(a);i=b;return}function tj(a){a=a|0;var b=0;b=i;c[a>>2]=36776;Of(a+16|0);i=b;return}function uj(a,b){a=a|0;b=b|0;c[a+4>>2]=1;c[a>>2]=36904;c[a+8>>2]=b;i=i;return}function vj(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function wj(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;fd[c[(c[a>>2]|0)+16>>2]&511](a);i=b;return}function xj(a,b,c){a=a|0;b=b|0;c=c|0;c=i;b=i;i=i+8|0;Qe(-1,37e3,b);i=c;return}function yj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+12>>2]=f;h=da(e,d)|0;b=a+16|0;c[b>>2]=h;if((f|0)==1){h=h+7&-8}c[a+20>>2]=ye((2147483647/(e|0)|0|0)<(d|0)?-1:h,1)|0;c[a+24>>2]=c[b>>2];i=g;return}function zj(a){a=a|0;var b=0;b=i;Fe(c[a+20>>2]|0);i=b;return}function Aj(a){a=a|0;var b=0;b=i;a=c[a>>2]|0;fd[c[(c[a>>2]|0)+12>>2]&511](a);i=b;return}function Bj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;e=b+12|0;k=c[e>>2]|0;if((k|0)==8){f=c[b+20>>2]|0;g=c[b>>2]|0;e=b+16|0;h=c[e>>2]|0;a:do{if(jd[c[(c[g>>2]|0)+88>>2]&511](g)|0){h=sd[c[(c[g>>2]|0)+92>>2]&127](g,h,f)|0}else{if((h|0)>0){j=0}else{break}do{k=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;if((k|0)==-1){h=j;break a}a[f+j|0]=k;j=j+1|0;}while((j|0)<(h|0))}}while(0);if((h|0)>=(c[e>>2]|0)){n=b+20|0;n=c[n>>2]|0;i=d;return n|0}do{a[f+h|0]=-1;h=h+1|0;}while((h|0)<(c[e>>2]|0));n=b+20|0;n=c[n>>2]|0;i=d;return n|0}else if((k|0)==16){f=b+16|0;if((c[f>>2]|0)<=0){n=b+20|0;n=c[n>>2]|0;i=d;return n|0}e=b+20|0;g=0;do{n=c[b>>2]|0;n=(jd[c[(c[n>>2]|0)+20>>2]&511](n)|0)&255;a[(c[e>>2]|0)+g|0]=n;n=c[b>>2]|0;jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;g=g+1|0;}while((g|0)<(c[f>>2]|0));n=b+20|0;n=c[n>>2]|0;i=d;return n|0}else if((k|0)==1){e=b+16|0;if((c[e>>2]|0)<=0){n=b+20|0;n=c[n>>2]|0;i=d;return n|0}f=b+20|0;g=0;do{n=c[b>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;a[(c[f>>2]|0)+g|0]=n>>>7&1;a[(c[f>>2]|0)+(g|1)|0]=n>>>6&1;a[(c[f>>2]|0)+(g|2)|0]=n>>>5&1;a[(c[f>>2]|0)+(g|3)|0]=n>>>4&1;a[(c[f>>2]|0)+(g|4)|0]=n>>>3&1;a[(c[f>>2]|0)+(g|5)|0]=n>>>2&1;a[(c[f>>2]|0)+(g|6)|0]=n>>>1&1;a[(c[f>>2]|0)+(g|7)|0]=n&1;g=g+8|0;}while((g|0)<(c[e>>2]|0));n=b+20|0;n=c[n>>2]|0;i=d;return n|0}else{h=(1<>2]|0)<=0){n=b+20|0;n=c[n>>2]|0;i=d;return n|0}f=b+20|0;j=0;l=0;m=0;while(1){if((j|0)<(k|0)){k=c[b>>2]|0;l=(jd[c[(c[k>>2]|0)+20>>2]&511](k)|0)&255|l<<8;k=c[e>>2]|0;j=j+8|0}a[(c[f>>2]|0)+m|0]=l>>>(j-k|0)&h;n=c[e>>2]|0;m=m+1|0;if((m|0)<(c[g>>2]|0)){k=n;j=j-n|0}else{break}}n=b+20|0;n=c[n>>2]|0;i=d;return n|0}return 0}function Cj(b){b=b|0;var 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;e=i;k=i;i=i+72|0;g=k;j=b+4|0;n=c[j>>2]|0;do{if((n|0)>9){f=c[b>>2]|0;f=jd[c[(c[f>>2]|0)+28>>2]&511](f)|0;if((f|0)==-1){w=0;i=e;return w|0}else{n=f+10|0;break}}}while(0);h=b+28|0;f=b+24|0;m=(c[h>>2]|0)-(c[f>>2]|0)|0;l=GW(m>>>0>1073741823?-1:m<<2)|0;o=c[b>>2]|0;Gd[c[(c[o>>2]|0)+32>>2]&255](o,m,l);o=c[f>>2]|0;bX(k|0,0,o+1|0)|0;a:do{if((o|0)<(c[h>>2]|0)){m=b+32|0;b:do{if((n|0)==11){t=o;while(1){if((t|0)>0){n=t;while(1){p=n+ -1|0;a[g+n|0]=a[g+p|0]|0;if((p|0)>0){n=p}else{break}}}r=c[m>>2]|0;n=r+o|0;a[k]=a[n]|0;q=o-t|0;p=c[l+(q<<2)>>2]|0;if((p|0)==-1){break b}a[n]=(d[r+q|0]|0)+p;o=o+1|0;if((o|0)>=(c[h>>2]|0)){break a}t=c[f>>2]|0}}else{t=o;while(1){if((t|0)>0){q=t;while(1){p=q+ -1|0;a[g+q|0]=a[g+p|0]|0;if((p|0)>0){q=p}else{break}}}r=c[m>>2]|0;p=r+o|0;s=a[p]|0;a[k]=s;u=o-t|0;q=c[l+(u<<2)>>2]|0;if((q|0)==-1){break b}do{if((n|0)==12){a[p]=(s&255)+q}else if((n|0)==14){r=d[r+u|0]|0;s=s&255;t=d[g+t|0]|0;w=s+r-t|0;u=w-r|0;u=(u|0)<0?0-u|0:u;v=w-s|0;v=(v|0)<0?0-v|0:v;w=w-t|0;w=(w|0)<0?0-w|0:w;if(!((u|0)>(v|0)|(u|0)>(w|0))){a[p]=r+q;break}if((v|0)>(w|0)){a[p]=t+q;break}else{a[p]=s+q;break}}else if((n|0)==13){a[p]=(((s&255)+(d[r+u|0]|0)|0)>>>1)+q}else{a[p]=q}}while(0);o=o+1|0;if((o|0)>=(c[h>>2]|0)){break a}t=c[f>>2]|0}}}while(0);if((o|0)>(t|0)){break}if((l|0)==0){w=0;i=e;return w|0}IW(l);w=0;i=e;return w|0}}while(0);if((l|0)!=0){IW(l)}c:do{if((c[j>>2]|0)==2){j=b+16|0;l=c[j>>2]|0;if((l|0)==1){m=c[f>>2]|0;g=b+32|0;if((m|0)>=(c[h>>2]|0)){break}w=c[g>>2]|0;k=b+12|0;j=w;l=m;m=d[w+(m+ -1)|0]|0;while(1){w=j+l|0;v=d[w]|0;m=v|m<<8;a[w]=m>>>(c[k>>2]|0)^v;l=l+8|0;if((l|0)>=(c[h>>2]|0)){break c}j=c[g>>2]|0}}else if((l|0)==8){k=c[f>>2]|0;if((k|0)>=(c[h>>2]|0)){break}g=b+12|0;j=b+32|0;do{v=c[j>>2]|0;w=v+k|0;a[w]=(a[w]|0)+(a[v+(k-(c[g>>2]|0))|0]|0)<<24>>24;k=k+1|0;}while((k|0)<(c[h>>2]|0))}else{h=b+12|0;o=c[h>>2]|0;bX(k|0,0,o+1|0)|0;m=(1<>2]|0;k=b+8|0;q=c[k>>2]|0;if((q|0)<=0){break}l=b+32|0;n=0;t=0;u=0;r=p;v=p;s=0;p=0;do{if((o|0)>0){q=0;do{w=c[j>>2]|0;if((t|0)<(w|0)){t=t+8|0;u=d[(c[l>>2]|0)+r|0]|0|u<<8;r=r+1|0}y=g+q|0;t=t-w|0;x=(u>>>t)+(d[y]|0)&m;a[y]=x;p=x&255|p<7){s=s+ -8|0;a[(c[l>>2]|0)+v|0]=p>>>s;o=c[h>>2]|0;v=v+1|0}q=q+1|0;}while((q|0)<(o|0));q=c[k>>2]|0}n=n+1|0;}while((n|0)<(q|0));if((s|0)<=0){break}y=8-s|0;a[(c[b+32>>2]|0)+v|0]=((1<>2]=c[f>>2];y=1;i=e;return y|0}function Dj(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0;j=i;c[b+4>>2]=1;c[b>>2]=36776;k=b+16|0;c[k>>2]=13;l=b+24|0;c[l>>2]=0;c[l+4>>2]=0;$W(k|0,h|0,16)|0;c[b>>2]=37056;c[b+32>>2]=d;c[b+36>>2]=e;a[b+40|0]=f&1;c[b+8>>2]=g;h=b+41|0;c[b+304>>2]=h;c[b+300>>2]=h;c[b+308>>2]=e;c[b+312>>2]=0;a[b+316|0]=0;i=j;return}function Ej(b){b=b|0;var d=0,e=0;d=i;c[b>>2]=37056;e=b+316|0;if((a[e]&1)!=0){jc(c[b+32>>2]|0,c[b+312>>2]|0,0)|0;a[e]=0}c[b>>2]=36776;Of(b+16|0);HW(b);i=d;return}function Fj(b){b=b|0;var d=0,e=0;d=i;c[b>>2]=37056;e=b+316|0;if((a[e]&1)!=0){jc(c[b+32>>2]|0,c[b+312>>2]|0,0)|0;a[e]=0}c[b>>2]=36776;Of(b+16|0);i=d;return}function Gj(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;j=i;h=FW(320)|0;b=c[b+32>>2]|0;c[h+4>>2]=1;$W(h+16|0,g|0,16)|0;c[h>>2]=37056;c[h+32>>2]=b;c[h+36>>2]=d;a[h+40|0]=e&1;c[h+8>>2]=f;b=h+41|0;c[h+304>>2]=b;c[h+300>>2]=b;c[h+308>>2]=d;c[h+312>>2]=0;a[h+316|0]=0;i=j;return h|0}function Hj(b){b=b|0;var d=0,e=0,f=0;d=i;f=b+32|0;c[b+312>>2]=jb(c[f>>2]|0)|0;e=b+36|0;jc(c[f>>2]|0,c[e>>2]|0,0)|0;a[b+316|0]=1;f=b+41|0;c[b+304>>2]=f;c[b+300>>2]=f;c[b+308>>2]=c[e>>2];i=d;return}function Ij(b){b=b|0;var d=0,e=0;d=i;e=b+316|0;if((a[e]&1)==0){i=d;return}jc(c[b+32>>2]|0,c[b+312>>2]|0,0)|0;a[e]=0;i=d;return}function Jj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;f=a+32|0;g=c[f>>2]|0;if((d|0)>-1){jc(g|0,b|0,0)|0;c[a+308>>2]=b}else{jc(g|0,0,2)|0;g=jb(c[f>>2]|0)|0;jc(c[f>>2]|0,0-(g>>>0>>0?g:b)|0,2)|0;c[a+308>>2]=jb(c[f>>2]|0)|0}d=a+41|0;c[a+304>>2]=d;c[a+300>>2]=d;i=e;return}function Kj(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;b=(c[d>>2]|0)+b|0;c[d>>2]=b;d=a+41|0;c[a+304>>2]=d;c[a+300>>2]=d;c[a+308>>2]=b;i=i;return}function Lj(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0;j=i;c[b+4>>2]=1;c[b>>2]=36776;k=b+16|0;c[k>>2]=13;l=b+24|0;c[l>>2]=0;c[l+4>>2]=0;$W(k|0,h|0,16)|0;c[b>>2]=37184;c[b+32>>2]=d;c[b+36>>2]=e;a[b+40|0]=f&1;c[b+8>>2]=g;h=b+41|0;c[b+1072>>2]=h;c[b+1068>>2]=h;c[b+1076>>2]=e;c[b+1080>>2]=0;a[b+1084|0]=0;i=j;return}function Mj(b){b=b|0;var d=0,e=0,f=0;d=i;c[b>>2]=37184;f=b+1084|0;e=b+32|0;if((a[f]&1)!=0){St(c[e>>2]|0,c[b+1080>>2]|0,0)|0;a[f]=0}Qt(c[e>>2]|0);c[b>>2]=36776;Of(b+16|0);HW(b);i=d;return}function Nj(b){b=b|0;var d=0,e=0,f=0;d=i;c[b>>2]=37184;f=b+1084|0;e=b+32|0;if((a[f]&1)!=0){St(c[e>>2]|0,c[b+1080>>2]|0,0)|0;a[f]=0}Qt(c[e>>2]|0);c[b>>2]=36776;Of(b+16|0);i=d;return}function Oj(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;j=b+32|0;Pt(c[j>>2]|0);b=FW(1088)|0;j=c[j>>2]|0;c[b+4>>2]=1;$W(b+16|0,g|0,16)|0;c[b>>2]=37184;c[b+32>>2]=j;c[b+36>>2]=d;a[b+40|0]=e&1;c[b+8>>2]=f;g=b+41|0;c[b+1072>>2]=g;c[b+1068>>2]=g;c[b+1076>>2]=d;c[b+1080>>2]=0;a[b+1084|0]=0;i=h;return b|0}function Pj(b){b=b|0;var d=0,e=0,f=0;d=i;f=b+32|0;c[b+1080>>2]=Rt(c[f>>2]|0)|0;e=b+36|0;St(c[f>>2]|0,c[e>>2]|0,0)|0;a[b+1084|0]=1;f=b+41|0;c[b+1072>>2]=f;c[b+1068>>2]=f;c[b+1076>>2]=c[e>>2];i=d;return}function Qj(b){b=b|0;var d=0,e=0;d=i;e=b+1084|0;if((a[e]&1)==0){i=d;return}St(c[b+32>>2]|0,c[b+1080>>2]|0,0)|0;a[e]=0;i=d;return}function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;f=a+32|0;g=c[f>>2]|0;if((d|0)>-1){St(g,b,0)|0;c[a+1076>>2]=b}else{St(g,0,2)|0;g=Rt(c[f>>2]|0)|0;St(c[f>>2]|0,0-(g>>>0>>0?g:b)|0,2)|0;c[a+1076>>2]=Rt(c[f>>2]|0)|0}d=a+41|0;c[a+1072>>2]=d;c[a+1068>>2]=d;i=e;return}function Sj(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;b=(c[d>>2]|0)+b|0;c[d>>2]=b;d=a+41|0;c[a+1072>>2]=d;c[a+1068>>2]=d;c[a+1076>>2]=b;i=i;return}function Tj(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;c[b+4>>2]=1;c[b>>2]=36776;j=b+16|0;c[j>>2]=13;k=b+24|0;c[k>>2]=0;c[k+4>>2]=0;$W(j|0,g|0,16)|0;c[b>>2]=37312;c[b+32>>2]=d;c[b+36>>2]=e;c[b+8>>2]=f;c[b+40>>2]=d+(e+f);c[b+44>>2]=d+e;a[b+48|0]=0;i=h;return}function Uj(b){b=b|0;var d=0;d=i;c[b>>2]=37312;if((a[b+48|0]&1)!=0){Fe(c[b+32>>2]|0)}c[b>>2]=36776;Of(b+16|0);HW(b);i=d;return}function Vj(b){b=b|0;var d=0;d=i;c[b>>2]=37312;if((a[b+48|0]&1)!=0){Fe(c[b+32>>2]|0)}c[b>>2]=36776;Of(b+16|0);i=d;return}function Wj(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;j=i;if(e){e=c[b+36>>2]|0;k=c[b+8>>2]|0;if((f+d|0)>>>0>(k+e|0)>>>0){h=4}}else{k=c[b+8>>2]|0;e=c[b+36>>2]|0;h=4}if((h|0)==4){f=e-d+k|0}k=FW(56)|0;e=c[b+32>>2]|0;c[k+4>>2]=1;$W(k+16|0,g|0,16)|0;c[k>>2]=37312;c[k+32>>2]=e;c[k+36>>2]=d;c[k+8>>2]=f;c[k+40>>2]=e+(f+d);c[k+44>>2]=e+d;a[k+48|0]=0;i=j;return k|0}function Xj(a){a=a|0;c[a+44>>2]=(c[a+32>>2]|0)+(c[a+36>>2]|0);i=i;return}function Yj(a){a=a|0;i=i;return}function Zj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+36>>2]|0;if((d|0)<=-1){b=e-b+(c[a+8>>2]|0)|0}if(b>>>0>=e>>>0){e=(c[a+8>>2]|0)+e|0;e=b>>>0>e>>>0?e:b}c[a+44>>2]=(c[a+32>>2]|0)+e;i=i;return}function _j(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+36|0;d=(c[e>>2]|0)+b|0;c[e>>2]=d;e=a+8|0;c[e>>2]=(c[e>>2]|0)-b;c[a+44>>2]=(c[a+32>>2]|0)+d;i=i;return}function $j(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;c[b+4>>2]=1;c[b>>2]=36776;j=b+16|0;c[j>>2]=13;k=b+24|0;c[k>>2]=0;c[k+4>>2]=0;$W(j|0,e|0,16)|0;c[b>>2]=37440;c[b+32>>2]=d;a[b+36|0]=f&1;c[b+8>>2]=g;i=h;return}function ak(a){a=a|0;var b=0;b=i;c[a>>2]=36776;Of(a+16|0);HW(a);i=b;return}function bk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;e=i;d=i;i=i+8|0;Qe(-1,37560,d);i=e;return 0}function ck(b){b=b|0;var d=0,e=0;d=i;e=c[b+8>>2]|0;if((a[b+36|0]&1)!=0&(e|0)==0){e=-1;i=d;return e|0}c[b+8>>2]=e+ -1;e=c[b+32>>2]|0;e=jd[c[(c[e>>2]|0)+20>>2]&511](e)|0;i=d;return e|0}function dk(b){b=b|0;var d=0;d=i;do{if((a[b+36|0]&1)!=0){if((c[b+8>>2]|0)==0){b=-1}else{break}i=d;return b|0}}while(0);b=c[b+32>>2]|0;b=jd[c[(c[b>>2]|0)+24>>2]&511](b)|0;i=d;return b|0}function ek(a,b,c){a=a|0;b=b|0;c=c|0;c=i;b=i;i=i+8|0;Qe(-1,37608,b);i=c;return}function fk(a){a=a|0;var b=0;a=i;b=i;i=i+8|0;Qe(-1,37656,b);i=a;return 0}function gk(a,b){a=a|0;b=b|0;b=i;a=i;i=i+8|0;Qe(-1,37704,a);i=b;return}function hk(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=37760;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function ik(a){a=a|0;var b=0;b=i;c[a>>2]=37760;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function jk(b){b=b|0;var d=0,e=0;d=i;e=c[b+8>>2]|0;fd[c[(c[e>>2]|0)+12>>2]&511](e);c[b+12>>2]=-1;a[b+16|0]=0;i=d;return}function kk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;f=i;i=i+8|0;g=f;j=i;i=i+8|0;k=j;e=b+12|0;h=c[e>>2]|0;if((h|0)!=-1){n=h;i=d;return n|0}h=b+16|0;if((a[h]&1)!=0){c[e>>2]=-1;n=-1;i=d;return n|0}n=b+8|0;do{l=c[n>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;}while((xc(l|0)|0)!=0);if((l|0)==62){a[h]=1;c[e>>2]=-1;n=-1;i=d;return n|0}do{m=c[n>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;}while((xc(m|0)|0)!=0);if((m|0)==62){a[h]=1;m=48}do{if((l+ -48|0)>>>0<10){k=(l<<4)+ -768|0}else{if((l+ -65|0)>>>0<6){k=(l<<4)+ -880|0;break}if((l+ -97|0)>>>0<6){k=(l<<4)+ -1392|0;break}if((l|0)==-1){a[h]=1;k=0;break}else{n=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[j>>2]=l;Qe(n,37856,k);k=0;break}}}while(0);j=m+ -48|0;do{if(j>>>0<10){k=j+k|0}else{if((m+ -65|0)>>>0<6){k=m+ -55+k|0;break}if((m+ -97|0)>>>0<6){k=m+ -87+k|0;break}if((m|0)==-1){a[h]=1;k=0;break}else{n=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[f>>2]=m;Qe(n,37856,g);break}}}while(0);n=k&255;c[e>>2]=n;i=d;return n|0}function lk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((b|0)<2){b=0;i=e;return b|0}a=c[a+8>>2]|0;a=sd[c[(c[a>>2]|0)+56>>2]&127](a,b,d)|0;if((a|0)==0){b=0;i=e;return b|0}ne(ne(a,d,-1)|0,37904,-1)|0;b=a;i=e;return b|0}function mk(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+8>>2]|0;b=Bd[c[(c[b>>2]|0)+60>>2]&255](b,0)|0;i=d;return b|0}function nk(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=37936;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function ok(a){a=a|0;var b=0;b=i;c[a>>2]=37936;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function pk(b){b=b|0;var d=0,e=0;d=i;e=c[b+8>>2]|0;fd[c[(c[e>>2]|0)+12>>2]&511](e);c[b+52>>2]=0;c[b+48>>2]=0;a[b+56|0]=0;i=d;return}function qk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;e=b+48|0;h=b+52|0;do{if((c[e>>2]|0)>=(c[h>>2]|0)){f=b+56|0;if((a[f]&1)!=0){l=-1;i=g;return l|0}c[e>>2]=0;j=b+8|0;d=b+12|0;do{l=c[j>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;c[d>>2]=l;}while(hE(l)|0);k=c[d>>2]|0;if((k|0)==-1|(k|0)==126){a[f]=1;c[h>>2]=0;l=-1;i=g;return l|0}else if((k|0)==122){bX(b+32|0,0,16)|0;c[h>>2]=4;break}else{k=1;while(1){l=b+12+(k<<2)|0;do{m=c[j>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;c[l>>2]=m;}while(hE(m)|0);m=c[l>>2]|0;if((m|0)==-1|(m|0)==126){j=12;break}l=k+1|0;if((l|0)<5){k=l}else{j=16;break}}do{if((j|0)==12){c[h>>2]=k+ -1;m=c[l>>2]|0;if(!((m|0)==-1|(m|0)==126)){break}h=k+1|0;if((h|0)<5){do{c[b+12+(h<<2)>>2]=117;h=h+1|0;}while((h|0)<5)}a[f]=1}else if((j|0)==16){c[h>>2]=k}}while(0);m=((((((((c[d>>2]|0)*85|0)+ -2838+(c[b+16>>2]|0)|0)*85|0)+ -33+(c[b+20>>2]|0)|0)*85|0)+ -33+(c[b+24>>2]|0)|0)*85|0)+ -33+(c[b+28>>2]|0)|0;c[b+44>>2]=m&255;c[b+40>>2]=m>>>8&255;c[b+36>>2]=m>>>16&255;c[b+32>>2]=m>>>24;break}}}while(0);m=c[b+32+(c[e>>2]<<2)>>2]|0;i=g;return m|0}function rk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((b|0)<2){b=0;i=e;return b|0}a=c[a+8>>2]|0;a=sd[c[(c[a>>2]|0)+56>>2]&127](a,b,d)|0;if((a|0)==0){b=0;i=e;return b|0}ne(ne(a,d,-1)|0,38032,-1)|0;b=a;i=e;return b|0}function sk(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+8>>2]|0;b=Bd[c[(c[b>>2]|0)+60>>2]&255](b,0)|0;i=d;return b|0}function tk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;k=i;c[b+4>>2]=1;c[b+8>>2]=d;c[b>>2]=38064;a:do{if((e|0)==1){c[b+12>>2]=0}else{d=FW(44)|0;c[d>>2]=b;c[d+4>>2]=e;c[d+8>>2]=f;c[d+12>>2]=g;c[d+16>>2]=h;e=d+32|0;c[e>>2]=0;n=d+40|0;a[n]=0;o=da(g,f)|0;c[d+20>>2]=o;l=(da(h,g)|0)+7>>3;c[d+24>>2]=l;l=((da(o,h)|0)+7>>3)+l|0;m=d+28|0;c[m>>2]=l;do{if(!((f|0)<1|(g|0)<1)){if((h|0)<1|(g|0)>32|(h|0)>16){break}if((2147483647/(g|0)|0|0)<=(f|0)){break}if((o|0)>=(2147483640/(h|0)|0|0)){break}o=we(l)|0;c[e>>2]=o;bX(o|0,0,c[m>>2]|0)|0;c[d+36>>2]=c[m>>2];a[n]=1;c[b+12>>2]=d;break a}}while(0);g=b+12|0;c[g>>2]=d;if((d|0)!=0){Fe(c[e>>2]|0);HW(d)}c[g>>2]=0}}while(0);c[b+16>>2]=j;a[b+20|0]=0;c[b+28>>2]=0;c[b+49196>>2]=258;c[b+49200>>2]=9;c[b+53312>>2]=0;c[b+53316>>2]=0;a[b+53320|0]=1;i=k;return}function uk(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=38064;d=c[a+12>>2]|0;if((d|0)!=0){Fe(c[d+32>>2]|0);HW(d)}d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function vk(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=38064;d=c[a+12>>2]|0;if((d|0)!=0){Fe(c[d+32>>2]|0);HW(d)}a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function wk(b){b=b|0;var e=0,f=0,g=0;e=i;f=c[b+12>>2]|0;if((f|0)!=0){b=f+36|0;g=c[b>>2]|0;do{if((g|0)>=(c[f+28>>2]|0)){if(Cj(f)|0){g=c[b>>2]|0;break}else{g=-1;i=e;return g|0}}}while(0);c[b>>2]=g+1;g=d[(c[f+32>>2]|0)+g|0]|0;i=e;return g|0}if((a[b+20|0]&1)!=0){g=-1;i=e;return g|0}f=b+53316|0;g=c[f>>2]|0;do{if((g|0)>=(c[b+53312>>2]|0)){if(xk(b)|0){g=c[f>>2]|0;break}else{g=-1;i=e;return g|0}}}while(0);c[f>>2]=g+1;g=d[b+49212+g|0]|0;i=e;return g|0}function xk(b){b=b|0;var 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;d=i;m=i;i=i+8|0;n=i;i=i+8|0;k=b+20|0;if((a[k]&1)!=0){t=0;i=d;return t|0}p=b+28|0;f=b+49200|0;q=b+8|0;r=b+24|0;g=b+49196|0;l=b+53312|0;e=b+53316|0;h=b+53320|0;t=c[f>>2]|0;s=c[p>>2]|0;a:while(1){if((s|0)<(t|0)){do{j=c[q>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){o=8;break a}j=c[r>>2]<<8|j&255;c[r>>2]=j;s=(c[p>>2]|0)+8|0;c[p>>2]=s;t=c[f>>2]|0;}while((s|0)<(t|0))}else{j=c[r>>2]|0}s=s-t|0;j=j>>s&(1<>2]=s;if((j|0)==257|(j|0)==-1){o=8;break}else if((j|0)!=256){break}c[g>>2]=258;c[f>>2]=9;c[l>>2]=0;c[e>>2]=0;a[h]=1;t=9}if((o|0)==8){a[k]=1;t=0;i=d;return t|0}p=c[g>>2]|0;if((p|0)>4096){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,38160,n);c[g>>2]=258;c[f>>2]=9;c[l>>2]=0;c[e>>2]=0;a[h]=1;o=0;p=258}else{o=c[l>>2]|0}n=o+1|0;do{if((j|0)<256){t=j&255;a[b+49212|0]=t;c[l>>2]=1;l=t}else{if((j|0)<(p|0)){k=c[b+32+(j*12|0)>>2]|0;c[l>>2]=k;k=k+ -1|0;l=j&255;if((k|0)>0){l=j;do{a[b+49212+k|0]=a[b+32+(l*12|0)+8|0]|0;l=c[b+32+(l*12|0)+4>>2]|0;k=k+ -1|0;}while((k|0)>0);l=l&255}a[b+49212|0]=l;break}else{if((j|0)==(p|0)){a[b+49212+o|0]=c[b+49208>>2];c[l>>2]=(c[l>>2]|0)+1;l=a[b+49212|0]|0;break}Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,38208,m);a[k]=1;t=0;i=d;return t|0}}}while(0);k=b+49208|0;c[k>>2]=l&255;do{if((a[h]&1)==0){c[b+32+((c[g>>2]|0)*12|0)>>2]=n;h=b+49204|0;c[b+32+((c[g>>2]|0)*12|0)+4>>2]=c[h>>2];a[b+32+((c[g>>2]|0)*12|0)+8|0]=c[k>>2];t=(c[g>>2]|0)+1|0;c[g>>2]=t;b=t+(c[b+16>>2]|0)|0;if((b|0)==512){c[f>>2]=10;break}else if((b|0)==1024){c[f>>2]=11;break}else if((b|0)==2048){c[f>>2]=12;break}else{break}}else{a[h]=0;h=b+49204|0}}while(0);c[h>>2]=j;c[e>>2]=0;t=1;i=d;return t|0}function yk(b){b=b|0;var e=0,f=0,g=0;e=i;f=c[b+12>>2]|0;if((f|0)!=0){g=f+36|0;b=c[g>>2]|0;do{if((b|0)>=(c[f+28>>2]|0)){if(Cj(f)|0){b=c[g>>2]|0;break}else{g=-1;i=e;return g|0}}}while(0);g=d[(c[f+32>>2]|0)+b|0]|0;i=e;return g|0}if((a[b+20|0]&1)!=0){g=-1;i=e;return g|0}g=b+53316|0;f=c[g>>2]|0;do{if((f|0)>=(c[b+53312>>2]|0)){if(xk(b)|0){f=c[g>>2]|0;break}else{g=-1;i=e;return g|0}}}while(0);g=d[b+49212+f|0]|0;i=e;return g|0}function zk(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;j=i;if((e|0)<=0){i=j;return}k=b+20|0;h=b+53316|0;g=b+53312|0;l=0;do{do{if((a[k]&1)==0){m=c[h>>2]|0;if((m|0)>=(c[g>>2]|0)){if(!(xk(b)|0)){m=-1;break}m=c[h>>2]|0}c[h>>2]=m+1;m=d[b+49212+m|0]|0}else{m=-1}}while(0);c[f+(l<<2)>>2]=m;l=l+1|0;}while((l|0)<(e|0));i=j;return}function Ak(b){b=b|0;var e=0,f=0,g=0;e=i;if((a[b+20|0]&1)!=0){g=-1;i=e;return g|0}f=b+53316|0;g=c[f>>2]|0;do{if((g|0)>=(c[b+53312>>2]|0)){if(xk(b)|0){g=c[f>>2]|0;break}else{g=-1;i=e;return g|0}}}while(0);c[f>>2]=g+1;g=d[b+49212+g|0]|0;i=e;return g|0}function Bk(b){b=b|0;var d=0,e=0;d=i;e=c[b+8>>2]|0;fd[c[(c[e>>2]|0)+12>>2]&511](e);a[b+20|0]=0;c[b+28>>2]=0;c[b+49196>>2]=258;c[b+49200>>2]=9;c[b+53312>>2]=0;c[b+53316>>2]=0;a[b+53320|0]=1;i=d;return}function Ck(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if((b|0)<2){b=0;i=e;return b|0}if((c[a+12>>2]|0)!=0){b=0;i=e;return b|0}f=c[a+8>>2]|0;b=sd[c[(c[f>>2]|0)+56>>2]&127](f,b,d)|0;if((b|0)==0){f=0;i=e;return f|0}ne(ne(b,d,-1)|0,38248,-1)|0;if((c[a+16>>2]|0)==0){ne(b,38256,-1)|0}ne(b,38272,-1)|0;f=b;i=e;return f|0}function Dk(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+8>>2]|0;b=Bd[c[(c[b>>2]|0)+60>>2]&255](b,1)|0;i=d;return b|0}function Ek(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=38304;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function Fk(a){a=a|0;var b=0;b=i;c[a>>2]=38304;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function Gk(b){b=b|0;var d=0,e=0;d=i;e=c[b+8>>2]|0;fd[c[(c[e>>2]|0)+12>>2]&511](e);e=b+12|0;c[b+144>>2]=e;c[b+140>>2]=e;a[b+148|0]=0;i=d;return}function Hk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((b|0)<2){b=0;i=e;return b|0}a=c[a+8>>2]|0;a=sd[c[(c[a>>2]|0)+56>>2]&127](a,b,d)|0;if((a|0)==0){b=0;i=e;return b|0}ne(ne(a,d,-1)|0,38400,-1)|0;b=a;i=e;return b|0}function Ik(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+8>>2]|0;b=Bd[c[(c[b>>2]|0)+60>>2]&255](b,1)|0;i=d;return b|0}function Jk(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=38440;d=c[a+8>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}Fe(c[a+48>>2]|0);Fe(c[a+44>>2]|0);HW(a);i=b;return}function Kk(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=38440;d=c[a+8>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}Fe(c[a+48>>2]|0);Fe(c[a+44>>2]|0);i=b;return}function Lk(b){b=b|0;var d=0,e=0;d=i;e=c[b+8>>2]|0;fd[c[(c[e>>2]|0)+12>>2]&511](e);c[b+32>>2]=0;a[b+31|0]=(c[b+12>>2]|0)>>>31;c[b+40>>2]=0;c[b+52>>2]=0;c[b+60>>2]=0;c[b+64>>2]=-1;i=d;return}function Mk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;fd[c[(c[b>>2]|0)+40>>2]&511](b);e=c[b+44>>2]|0;do{if((e|0)==0){f=4}else{if((c[b+48>>2]|0)==0){f=4;break}a[b+30|0]=0;c[e>>2]=c[b+20>>2]}}while(0);if((f|0)==4){a[b+30|0]=1}e=b+40|0;h=b+8|0;g=b+36|0;l=c[e>>2]|0;a:while(1){b:do{if((l|0)<12){while(1){j=c[h>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){break}k=(c[g>>2]<<8)+j|0;c[g>>2]=k;j=(c[e>>2]|0)+8|0;c[e>>2]=j;if((j|0)>=12){l=j;f=12;break b}}k=c[e>>2]|0;if((k|0)==0){j=0;break a}j=k;k=c[g>>2]<<12-k}else{k=c[g>>2]|0;f=12}}while(0);if((f|0)==12){f=0;j=l;k=k>>l+ -12}k=k&4095;if(k<<16>>16==1){f=15;break}else if(k<<16>>16!=0){break}j=j+ -1|0;l=(j|0)<0?0:j;c[e>>2]=l}if((f|0)==15){j=j+ -12|0;j=(j|0)<0?0:j;c[e>>2]=j}if((c[b+12>>2]|0)<=0){i=d;return}c:do{if((j|0)<1){while(1){j=c[h>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){break}k=(c[g>>2]<<8)+j|0;c[g>>2]=k;j=(c[e>>2]|0)+8|0;c[e>>2]=j;if((j|0)>=1){g=k;f=23;break c}}j=c[e>>2]|0;if((j|0)==0){h=0;g=-1;break}h=j;g=c[g>>2]<<1-j&1}else{g=c[g>>2]|0;f=23}}while(0);if((f|0)==23){h=j;g=g>>>(j+ -1|0)&1}a[b+31|0]=g<<16>>16==0|0;b=h+ -1|0;c[e>>2]=(b|0)<0?0:b;i=d;return}function Nk(b){b=b|0;var 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,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;d=i;j=i;i=i+8|0;E=i;i=i+8|0;D=E;A=i;i=i+8|0;w=A;B=i;i=i+8|0;C=B;p=i;i=i+8|0;q=p;n=i;i=i+8|0;o=n;r=i;i=i+8|0;s=r;y=i;i=i+8|0;z=y;t=i;i=i+8|0;x=t;v=i;i=i+8|0;u=v;e=b+64|0;f=c[e>>2]|0;if((f|0)!=-1){M=f;i=d;return M|0}f=b+60|0;h=c[f>>2]|0;if((h|0)==0){h=b+30|0;if((a[h]&1)!=0){M=-1;i=d;return M|0}l=b+56|0;a[l]=0;k=b+31|0;m=b+44|0;F=c[m>>2]|0;a:do{if((a[k]&1)==0){c[F>>2]=0;p=b+52|0;c[p>>2]=0;o=b+20|0;if((c[c[m>>2]>>2]|0)>=(c[o>>2]|0)){break}n=0;while(1){if((n|0)==0){r=0;while(1){M=Qk(b)|0;r=M+r<<16>>16;if(M<<16>>16>63){}else{break}}}else{r=0;while(1){M=Pk(b)|0;r=M+r<<16>>16;if(M<<16>>16>63){}else{break}}}t=c[p>>2]|0;s=c[(c[m>>2]|0)+(t<<2)>>2]|0;q=s+(r<<16>>16)|0;if(r<<16>>16>0){if((c[o>>2]|0)<(q|0)){t=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[E>>2]=q;Qe(t,48704,D);a[l]=1;t=c[p>>2]|0;q=c[o>>2]|0}if((t&1|0)!=(n|0)){t=t+1|0;c[p>>2]=t}c[(c[m>>2]|0)+(t<<2)>>2]=q;s=c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0}if((s|0)<(c[o>>2]|0)){n=n^1}else{break}}}else{G=c[F>>2]|0;D=b+20|0;F=c[D>>2]|0;E=b+48|0;if((G|0)<(F|0)){F=0;while(1){c[(c[E>>2]|0)+(F<<2)>>2]=G;F=F+1|0;G=c[(c[m>>2]|0)+(F<<2)>>2]|0;H=c[D>>2]|0;if((G|0)<(H|0)){}else{G=H;break}}}else{G=F;F=0}c[(c[E>>2]|0)+(F<<2)>>2]=G;c[(c[E>>2]|0)+(F+1<<2)>>2]=c[D>>2];c[c[m>>2]>>2]=0;F=b+52|0;c[F>>2]=0;if((c[c[m>>2]>>2]|0)>=(c[D>>2]|0)){break}G=0;H=0;while(1){I=(Ok(b)|0)<<16>>16;b:do{switch(I|0){case 1:{if((H|0)==0){J=0;while(1){M=Qk(b)|0;J=M+J<<16>>16;if(M<<16>>16>63){}else{I=0;break}}while(1){M=Pk(b)|0;I=M+I<<16>>16;if(M<<16>>16>63){}else{break}}}else{J=0;while(1){M=Pk(b)|0;J=M+J<<16>>16;if(M<<16>>16>63){}else{I=0;break}}while(1){M=Qk(b)|0;I=M+I<<16>>16;if(M<<16>>16>63){}else{break}}}M=c[F>>2]|0;K=c[(c[m>>2]|0)+(M<<2)>>2]|0;L=K+(J<<16>>16)|0;if(J<<16>>16>0){if((c[D>>2]|0)<(L|0)){M=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[t>>2]=L;Qe(M,48704,x);a[l]=1;M=c[F>>2]|0;L=c[D>>2]|0}if((M&1|0)!=(H|0)){M=M+1|0;c[F>>2]=M}c[(c[m>>2]|0)+(M<<2)>>2]=L;M=c[F>>2]|0;K=c[(c[m>>2]|0)+(M<<2)>>2]|0}L=c[D>>2]|0;do{if((K|0)<(L|0)){J=K+(I<<16>>16)|0;if(I<<16>>16<=0){break}if((L|0)<(J|0)){M=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[y>>2]=J;Qe(M,48704,z);a[l]=1;M=c[F>>2]|0;J=c[D>>2]|0}if((M&1|0)!=(H^1|0)){M=M+1|0;c[F>>2]=M}c[(c[m>>2]|0)+(M<<2)>>2]=J;K=c[(c[m>>2]|0)+(c[F>>2]<<2)>>2]|0}}while(0);J=c[E>>2]|0;M=c[J+(G<<2)>>2]|0;if((M|0)>(K|0)){break b}I=c[D>>2]|0;while(1){L=G+2|0;if((M|0)>=(I|0)){break b}M=c[J+(L<<2)>>2]|0;if((M|0)>(K|0)){G=L;break}else{G=L}}break};case 2:{J=c[(c[E>>2]|0)+(G<<2)>>2]|0;K=c[F>>2]|0;I=c[(c[m>>2]|0)+(K<<2)>>2]|0;if((I|0)<(J|0)){if((c[D>>2]|0)<(J|0)){K=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[B>>2]=J;Qe(K,48704,C);a[l]=1;K=c[F>>2]|0;J=c[D>>2]|0}if((K&1|0)!=(H|0)){K=K+1|0;c[F>>2]=K}c[(c[m>>2]|0)+(K<<2)>>2]=J;I=c[(c[m>>2]|0)+(c[F>>2]<<2)>>2]|0}H=H^1;J=c[D>>2]|0;if((I|0)>=(J|0)){break b}G=G+1|0;K=c[E>>2]|0;L=c[K+(G<<2)>>2]|0;if((L|0)>(I|0)){break b}while(1){M=G+2|0;if((L|0)>=(J|0)){break b}L=c[K+(M<<2)>>2]|0;if((L|0)>(I|0)){G=M;break}else{G=M}}break};case 5:{J=(c[(c[E>>2]|0)+(G<<2)>>2]|0)+2|0;K=c[F>>2]|0;I=c[(c[m>>2]|0)+(K<<2)>>2]|0;if((I|0)<(J|0)){if((c[D>>2]|0)<(J|0)){I=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[n>>2]=J;Qe(I,48704,o);a[l]=1;I=c[F>>2]|0;J=c[D>>2]|0}else{I=K}if((I&1|0)!=(H|0)){I=I+1|0;c[F>>2]=I}c[(c[m>>2]|0)+(I<<2)>>2]=J;I=c[(c[m>>2]|0)+(c[F>>2]<<2)>>2]|0}H=H^1;J=c[D>>2]|0;if((I|0)>=(J|0)){break b}G=G+1|0;K=c[E>>2]|0;L=c[K+(G<<2)>>2]|0;if((L|0)>(I|0)){break b}while(1){M=G+2|0;if((L|0)>=(J|0)){break b}L=c[K+(M<<2)>>2]|0;if((L|0)>(I|0)){G=M;break}else{G=M}}break};case 8:{Rk(b,(c[(c[E>>2]|0)+(G<<2)>>2]|0)+ -3|0,H);H=H^1;J=c[(c[m>>2]|0)+(c[F>>2]<<2)>>2]|0;I=c[D>>2]|0;if((J|0)>=(I|0)){break b}G=G+((G|0)>0?-1:1)|0;K=c[E>>2]|0;L=c[K+(G<<2)>>2]|0;if((L|0)>(J|0)){break b}while(1){M=G+2|0;if((L|0)>=(I|0)){break b}L=c[K+(M<<2)>>2]|0;if((L|0)>(J|0)){G=M;break}else{G=M}}break};case 6:{Rk(b,(c[(c[E>>2]|0)+(G<<2)>>2]|0)+ -2|0,H);H=H^1;J=c[(c[m>>2]|0)+(c[F>>2]<<2)>>2]|0;I=c[D>>2]|0;if((J|0)>=(I|0)){break b}G=G+((G|0)>0?-1:1)|0;K=c[E>>2]|0;L=c[K+(G<<2)>>2]|0;if((L|0)>(J|0)){break b}while(1){M=G+2|0;if((L|0)>=(I|0)){break b}L=c[K+(M<<2)>>2]|0;if((L|0)>(J|0)){G=M;break}else{G=M}}break};case 3:{J=(c[(c[E>>2]|0)+(G<<2)>>2]|0)+1|0;K=c[F>>2]|0;I=c[(c[m>>2]|0)+(K<<2)>>2]|0;if((I|0)<(J|0)){if((c[D>>2]|0)<(J|0)){K=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[p>>2]=J;Qe(K,48704,q);a[l]=1;K=c[F>>2]|0;J=c[D>>2]|0}if((K&1|0)!=(H|0)){K=K+1|0;c[F>>2]=K}c[(c[m>>2]|0)+(K<<2)>>2]=J;I=c[(c[m>>2]|0)+(c[F>>2]<<2)>>2]|0}H=H^1;J=c[D>>2]|0;if((I|0)>=(J|0)){break b}G=G+1|0;K=c[E>>2]|0;L=c[K+(G<<2)>>2]|0;if((L|0)>(I|0)){break b}while(1){M=G+2|0;if((L|0)>=(J|0)){break b}L=c[K+(M<<2)>>2]|0;if((L|0)>(I|0)){G=M;break}else{G=M}}break};case 7:{J=(c[(c[E>>2]|0)+(G<<2)>>2]|0)+3|0;K=c[F>>2]|0;I=c[(c[m>>2]|0)+(K<<2)>>2]|0;if((I|0)<(J|0)){if((c[D>>2]|0)<(J|0)){K=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[r>>2]=J;Qe(K,48704,s);a[l]=1;K=c[F>>2]|0;J=c[D>>2]|0}if((K&1|0)!=(H|0)){K=K+1|0;c[F>>2]=K}c[(c[m>>2]|0)+(K<<2)>>2]=J;I=c[(c[m>>2]|0)+(c[F>>2]<<2)>>2]|0}H=H^1;J=c[D>>2]|0;if((I|0)>=(J|0)){break b}G=G+1|0;K=c[E>>2]|0;M=c[K+(G<<2)>>2]|0;if((M|0)>(I|0)){break b}while(1){L=G+2|0;if((M|0)>=(J|0)){break b}M=c[K+(L<<2)>>2]|0;if((M|0)>(I|0)){G=L;break}else{G=L}}break};case 0:{I=G+1|0;J=c[(c[E>>2]|0)+(I<<2)>>2]|0;K=c[F>>2]|0;if((c[(c[m>>2]|0)+(K<<2)>>2]|0)<(J|0)){if((c[D>>2]|0)<(J|0)){K=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[v>>2]=J;Qe(K,48704,u);a[l]=1;K=c[F>>2]|0;J=c[D>>2]|0}if((K&1|0)!=(H|0)){K=K+1|0;c[F>>2]=K}c[(c[m>>2]|0)+(K<<2)>>2]=J;J=c[(c[E>>2]|0)+(I<<2)>>2]|0}G=(J|0)<(c[D>>2]|0)?G+2|0:G;break};case 4:{Rk(b,(c[(c[E>>2]|0)+(G<<2)>>2]|0)+ -1|0,H);H=H^1;J=c[(c[m>>2]|0)+(c[F>>2]<<2)>>2]|0;I=c[D>>2]|0;if((J|0)>=(I|0)){break b}G=G+((G|0)>0?-1:1)|0;K=c[E>>2]|0;L=c[K+(G<<2)>>2]|0;if((L|0)>(J|0)){break b}while(1){M=G+2|0;if((L|0)>=(I|0)){break b}L=c[K+(M<<2)>>2]|0;if((L|0)>(J|0)){G=M;break}else{G=M}}break};case-1:{I=c[D>>2]|0;K=c[F>>2]|0;J=c[m>>2]|0;if((c[J+(K<<2)>>2]|0)<(I|0)){if((K&1|0)!=0){K=K+1|0;c[F>>2]=K}c[J+(K<<2)>>2]=I}a[h]=1;break};default:{J=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[A>>2]=I;Qe(J,38536,w);J=c[D>>2]|0;K=c[F>>2]|0;I=c[m>>2]|0;if((c[I+(K<<2)>>2]|0)<(J|0)){if((K&1|0)!=0){K=K+1|0;c[F>>2]=K}c[I+(K<<2)>>2]=J}a[l]=1}}}while(0);if((c[(c[m>>2]|0)+(c[F>>2]<<2)>>2]|0)>=(c[D>>2]|0)){break a}}}}while(0);if((a[b+17|0]&1)!=0){M=b+40|0;c[M>>2]=c[M>>2]&-8}m=b+28|0;do{if((a[m]&1)==0){if((c[b+32>>2]|0)!=((c[b+24>>2]|0)+ -1|0)){g=119;break}a[h]=1;o=1}else{g=119}}while(0);c:do{if((g|0)==119){n=b+40|0;s=c[n>>2]|0;d:do{if((s|0)<12){o=b+8|0;r=b+36|0;while(1){p=c[o>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}p=(c[r>>2]<<8)+p|0;c[r>>2]=p;s=(c[n>>2]|0)+8|0;c[n>>2]=s;if((s|0)>=12){r=p;g=126;break d}}s=c[n>>2]|0;if((s|0)==0){q=0;p=r;r=-1;break}q=s;p=r;r=c[r>>2]<<12-s&4095}else{r=c[b+36>>2]|0;o=b+8|0;g=126}}while(0);if((g|0)==126){q=s;p=b+36|0;r=r>>s+ -12&4095}e:while(1){if(r<<16>>16==1){g=136;break}else if(r<<16>>16==-1){g=137;break}else if(r<<16>>16!=0){o=1;break c}q=q+ -1|0;r=(q|0)<0?0:q;c[n>>2]=r;f:do{if((r|0)<12){while(1){q=c[o>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}s=(c[p>>2]<<8)+q|0;c[p>>2]=s;r=(c[n>>2]|0)+8|0;c[n>>2]=r;if((r|0)>=12){break f}}r=c[n>>2]|0;if((r|0)==0){q=0;r=-1;continue e}q=r;r=c[p>>2]<<12-r&4095;continue e}else{s=c[p>>2]|0}}while(0);q=r;r=s>>r+ -12&4095}if((g|0)==136){o=q+ -12|0;c[n>>2]=(o|0)<0?0:o;o=0;break}else if((g|0)==137){a[h]=1;o=1;break}}}while(0);do{if((a[h]&1)==0){if((c[b+12>>2]|0)<=0){break}n=b+40|0;r=c[n>>2]|0;g:do{if((r|0)<1){q=b+8|0;p=b+36|0;while(1){r=c[q>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}s=(c[p>>2]<<8)+r|0;c[p>>2]=s;r=(c[n>>2]|0)+8|0;c[n>>2]=r;if((r|0)>=1){p=s;g=147;break g}}r=c[n>>2]|0;if((r|0)==0){q=0;p=-1;break}q=r;p=c[p>>2]<<1-r&1}else{p=c[b+36>>2]|0;g=147}}while(0);if((g|0)==147){q=r;p=p>>>(r+ -1|0)&1}a[k]=p<<16>>16==0|0;p=q+ -1|0;c[n>>2]=(p|0)<0?0:p}}while(0);h:do{if((a[m]&1)==0|o){if((a[l]&1)==0){break}if((a[b+16|0]&1)==0){break}j=b+40|0;l=b+8|0;m=b+36|0;p=c[j>>2]|0;i:while(1){j:do{if((p|0)<13){while(1){n=c[l>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}o=(c[m>>2]<<8)+n|0;c[m>>2]=o;p=(c[j>>2]|0)+8|0;c[j>>2]=p;if((p|0)>=13){g=195;break j}}o=c[j>>2]|0;if((o|0)==0){g=197;break i}n=o;o=c[m>>2]<<13-o}else{o=c[m>>2]|0;g=195}}while(0);if((g|0)==195){g=0;n=p;o=o>>p+ -13}o=o&65535&8191;if((o&8190|0)==2){g=199;break}n=n+ -1|0;p=(n|0)<0?0:n;c[j>>2]=p}if((g|0)==197){a[h]=1;M=-1;i=d;return M|0}else if((g|0)==199){h=n+ -12|0;h=(h|0)<0?0:h;c[j>>2]=h;if((c[b+12>>2]|0)<=0){break}h=h+ -1|0;c[j>>2]=(h|0)<0?0:h;a[k]=o&1^1;break}}else{k=b+40|0;n=c[k>>2]|0;k:do{if((n|0)<12){m=b+8|0;l=b+36|0;while(1){n=c[m>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}o=(c[l>>2]<<8)+n|0;c[l>>2]=o;n=(c[k>>2]|0)+8|0;c[k>>2]=n;if((n|0)>=12){l=o;g=157;break k}}n=c[k>>2]|0;if((n|0)==0){break h}m=n;l=c[l>>2]<<12-n}else{l=c[b+36>>2]|0;g=157}}while(0);if((g|0)==157){m=n;l=l>>n+ -12}if((l&4095)!=1){break}l=m+ -12|0;o=(l|0)<0?0:l;c[k>>2]=o;l=b+12|0;m=c[l>>2]|0;if((m|0)>0){if((o|0)<1){n=b+8|0;m=b+36|0;do{o=c[n>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){g=163;break}c[m>>2]=(c[m>>2]<<8)+o;o=(c[k>>2]|0)+8|0;c[k>>2]=o;}while((o|0)<1);if((g|0)==163){o=c[k>>2]|0}m=c[l>>2]|0}n=o+ -1|0;o=(n|0)<0?0:n;c[k>>2]=o}if((m|0)>-1){n=b+8|0;m=b+36|0;r=o;o=0;do{l:do{if((r|0)<12){while(1){g=c[n>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;if((g|0)==-1){break}q=(c[m>>2]<<8)+g|0;c[m>>2]=q;r=(c[k>>2]|0)+8|0;c[k>>2]=r;if((r|0)>=12){g=175;break l}}g=c[k>>2]|0;if((g|0)==0){g=177;break}p=g;q=c[m>>2]<<12-g;g=176}else{q=c[m>>2]|0;g=175}}while(0);if((g|0)==175){p=r;q=q>>r+ -12;g=176}if((g|0)==176){g=0;if((q&4095)!=1){g=177}}if((g|0)==177){g=0;Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,38576,j);p=c[k>>2]|0}p=p+ -12|0;r=(p|0)<0?0:p;c[k>>2]=r;if((c[l>>2]|0)>0){m:do{if((r|0)<1){while(1){p=c[n>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}c[m>>2]=(c[m>>2]<<8)+p;r=(c[k>>2]|0)+8|0;c[k>>2]=r;if((r|0)>=1){break m}}r=c[k>>2]|0}}while(0);p=r+ -1|0;r=(p|0)<0?0:p;c[k>>2]=r}o=o+1|0;}while((o|0)<4)}a[h]=1}}while(0);j=c[b+44>>2]|0;h=b+52|0;if((c[j>>2]|0)>0){c[h>>2]=0}else{c[h>>2]=1;j=j+4|0}h=c[j>>2]|0;c[f>>2]=h;M=b+32|0;c[M>>2]=(c[M>>2]|0)+1}n:do{if((h|0)>7){g=b+52|0;j=c[g>>2]|0;p=(j&1|0)!=0?0:255;c[e>>2]=p;M=h+ -8|0;c[f>>2]=M;if((M|0)!=0){break}k=c[b+44>>2]|0;h=k+(j<<2)|0;if((c[h>>2]|0)>=(c[b+20>>2]|0)){break}M=j+1|0;c[g>>2]=M;c[f>>2]=(c[k+(M<<2)>>2]|0)-(c[h>>2]|0)}else{c[e>>2]=0;j=b+52|0;l=b+44|0;m=b+20|0;p=0;k=8;while(1){if((h|0)>(k|0)){break}p=p<>2]=p;o=c[j>>2]|0;if((o&1|0)==0){p=255>>>(8-h|0)|p;c[e>>2]=p}n=k-h|0;c[f>>2]=0;q=c[l>>2]|0;r=q+(o<<2)|0;if((c[r>>2]|0)<(c[m>>2]|0)){o=o+1|0;c[j>>2]=o;o=(c[q+(o<<2)>>2]|0)-(c[r>>2]|0)|0;c[f>>2]=o}else{if((n|0)>0){g=219;break}else{o=0}}if((k|0)==(h|0)){break n}else{h=o;k=n}}if((g|0)==219){p=p<>2]=p;break}p=p<>2]=p;if((c[j>>2]&1|0)==0){p=p|255>>>(8-k|0);c[e>>2]=p}c[f>>2]=h-k}}while(0);if((a[b+29|0]&1)==0){M=p;i=d;return M|0}M=p^255;c[e>>2]=M;i=d;return M|0}function Ok(d){d=d|0;var 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;e=i;h=i;i=i+8|0;j=h;f=d+40|0;a:do{if((a[d+28|0]&1)==0){m=d+8|0;l=d+36|0;n=c[f>>2]|0;o=n;k=1;while(1){b:do{if((n|0)<(k|0)){while(1){n=c[m>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}q=(c[l>>2]<<8)+n|0;c[l>>2]=q;n=(c[f>>2]|0)+8|0;c[f>>2]=n;if((n|0)>=(k|0)){o=n;p=n;g=20;break b}}p=c[f>>2]|0;if((p|0)==0){o=0;n=0;r=-1;break}o=p;n=p;r=c[l>>2]<>>(16-k|0)&65535}else{p=n;q=c[l>>2]|0;g=20}}while(0);if((g|0)==20){g=0;n=p;r=q>>p-k&65535>>>(16-k|0)&65535}if((k|0)<7){r=r<<16>>16<<7-k&65535}q=r<<16>>16;p=k+1|0;if((b[38608+(q<<2)>>1]|0)==(k|0)){break}if((p|0)<8){k=p}else{break a}}d=o-k|0;c[f>>2]=(d|0)<0?0:d;r=b[38610+(q<<2)>>1]|0;i=e;return r|0}else{m=c[f>>2]|0;c:do{if((m|0)<7){l=d+8|0;k=d+36|0;while(1){m=c[l>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}n=(c[k>>2]<<8)+m|0;c[k>>2]=n;m=(c[f>>2]|0)+8|0;c[f>>2]=m;if((m|0)>=7){k=n;g=10;break c}}m=c[f>>2]|0;if((m|0)==0){l=0;d=-1;break}l=m;k=c[k>>2]<<7-m;g=11}else{k=c[d+36>>2]|0;g=10}}while(0);if((g|0)==10){l=m;k=k>>m+ -7;g=11}if((g|0)==11){r=k&127;if((r&65535)>1){d=r&65535}else{break}}g=l-(b[38608+(d<<2)>>1]|0)|0;c[f>>2]=(g|0)<0?0:g;r=b[38610+(d<<2)>>1]|0;i=e;return r|0}}while(0);q=jd[c[(c[d>>2]|0)+48>>2]&511](d)|0;c[h>>2]=r<<16>>16;Qe(q,39120,j);r=-1;i=e;return r|0}function Pk(d){d=d|0;var 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,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;e=i;h=i;i=i+8|0;g=h;f=d+40|0;a:do{if((a[d+28|0]&1)==0){t=d+8|0;u=d+36|0;N=c[f>>2]|0;M=2;b:while(1){c:do{if((N|0)<(M|0)){while(1){N=c[t>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){break}O=(c[u>>2]<<8)+N|0;c[u>>2]=O;N=(c[f>>2]|0)+8|0;c[f>>2]=N;if((N|0)>=(M|0)){G=N;I=O;j=25;break c}}L=c[f>>2]|0;if((L|0)==0){m=1;j=57;break b}O=c[u>>2]|0;J=L;H=O;L=O<>>(16-M|0)}else{G=N;I=c[u>>2]|0;j=25}}while(0);if((j|0)==25){j=0;J=G;H=I;L=I>>G-M&65535>>>(16-M|0)}N=L&65535;if(N<<16>>16==-1){m=1;j=57;break}if((M|0)<6){N=N<<16>>16<<6-M&65535}K=N<<16>>16;O=M+1|0;if((b[42672+(K<<2)>>1]|0)==(M|0)){j=30;break}if((O|0)<7){N=J;M=O}else{F=J;E=H;z=7;j=31;break}}if((j|0)==30){g=J-M|0;c[f>>2]=(g|0)<0?0:g;O=b[42674+(K<<2)>>1]|0;i=e;return O|0}else if((j|0)==31){d:while(1){j=0;e:do{if((F|0)<(z|0)){while(1){E=c[t>>2]|0;E=jd[c[(c[E>>2]|0)+20>>2]&511](E)|0;if((E|0)==-1){break}F=(c[u>>2]<<8)+E|0;c[u>>2]=F;E=(c[f>>2]|0)+8|0;c[f>>2]=E;if((E|0)>=(z|0)){A=E;B=F;j=36;break e}}D=c[f>>2]|0;if((D|0)==0){m=1;j=57;break d}O=c[u>>2]|0;y=D;C=O;D=O<>>(16-z|0)}else{A=F;B=E;j=36}}while(0);if((j|0)==36){y=A;C=B;D=B>>A-z&65535>>>(16-z|0)}j=D&65535;if(j<<16>>16==-1){m=1;j=57;break}if((z|0)<12){j=j<<16>>16<<12-z&65535}if(j<<16>>16>63){x=(j<<16>>16)+ -64|0;if((b[41904+(x<<2)>>1]|0)==(z|0)){j=42;break}}j=z+1|0;if((j|0)<13){F=y;E=C;z=j}else{w=y;v=C;p=10;j=45;break}}if((j|0)==42){g=y-z|0;c[f>>2]=(g|0)<0?0:g;O=b[41906+(x<<2)>>1]|0;i=e;return O|0}else if((j|0)==45){f:while(1){j=0;g:do{if((w|0)<(p|0)){while(1){v=c[t>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;if((v|0)==-1){break}v=(c[u>>2]<<8)+v|0;c[u>>2]=v;w=(c[f>>2]|0)+8|0;c[f>>2]=w;if((w|0)>=(p|0)){n=w;o=v;j=50;break g}}s=c[f>>2]|0;if((s|0)==0){m=1;j=57;break f}O=c[u>>2]|0;q=s;r=O;s=O<>>(16-p|0)}else{n=w;o=v;j=50}}while(0);if((j|0)==50){q=n;r=o;s=o>>n-p&65535>>>(16-p|0)}v=s&65535;if(v<<16>>16==-1){m=1;j=57;break}if((p|0)<13){v=v<<16>>16<<13-p&65535}k=v<<16>>16;j=p+1|0;if((b[41392+(k<<2)>>1]|0)==(p|0)){j=55;break}if((j|0)<14){w=q;v=r;p=j}else{l=v;break a}}if((j|0)==55){g=q-p|0;c[f>>2]=(g|0)<0?0:g;O=b[41394+(k<<2)>>1]|0;i=e;return O|0}else if((j|0)==57){i=e;return m|0}}else if((j|0)==57){i=e;return m|0}}else if((j|0)==57){i=e;return m|0}}else{k=c[f>>2]|0;h:do{if((k|0)<13){l=d+8|0;k=d+36|0;while(1){m=c[l>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}m=(c[k>>2]<<8)+m|0;c[k>>2]=m;n=(c[f>>2]|0)+8|0;c[f>>2]=n;if((n|0)>=13){M=m;u=n;j=10;break h}}l=c[f>>2]|0;if((l|0)==0){O=1;i=e;return O|0}else{t=l;N=c[k>>2]<<13-l;break}}else{M=c[d+36>>2]|0;u=k;j=10}}while(0);if((j|0)==10){t=u;N=M>>u+ -13}l=N&8191;k=l&65535;j=k>>>7;do{if((j|0)==0){j=41392+(k<<2)|0}else{if((l&65535)>511){j=42672+(j<<2)|0;break}else{j=41904+((k>>>1)+ -64<<2)|0;break}}}while(0);k=b[j>>1]|0;if(k<<16>>16<=0){break}g=t-(k<<16>>16)|0;c[f>>2]=(g|0)<0?0:g;O=b[j+2>>1]|0;i=e;return O|0}}while(0);f=jd[c[(c[d>>2]|0)+48>>2]&511](d)|0;c[h>>2]=l<<16>>16;Qe(f,42928,g);f=d+40|0;g=(c[f>>2]|0)+ -1|0;c[f>>2]=(g|0)<0?0:g;O=1;i=e;return O|0}function Qk(d){d=d|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0;e=i;g=i;i=i+8|0;h=g;f=d+40|0;a:do{if((a[d+28|0]&1)==0){t=d+8|0;u=d+36|0;E=c[f>>2]|0;D=1;b:while(1){c:do{if((E|0)<(D|0)){while(1){E=c[t>>2]|0;E=jd[c[(c[E>>2]|0)+20>>2]&511](E)|0;if((E|0)==-1){break}E=(c[u>>2]<<8)+E|0;c[u>>2]=E;F=(c[f>>2]|0)+8|0;c[f>>2]=F;if((F|0)>=(D|0)){y=F;A=E;j=23;break c}}C=c[f>>2]|0;if((C|0)==0){q=1;j=42;break b}F=c[u>>2]|0;x=C;z=F;C=F<>>(16-D|0)}else{y=E;A=c[u>>2]|0;j=23}}while(0);if((j|0)==23){j=0;x=y;z=A;C=A>>y-D&65535>>>(16-D|0)}E=C&65535;if(E<<16>>16==-1){q=1;j=42;break}if((D|0)<9){E=E<<16>>16<<9-D&65535}B=E<<16>>16;F=D+1|0;if((b[39296+(B<<2)>>1]|0)==(D|0)){j=28;break}if((F|0)<10){E=x;D=F}else{w=x;v=z;p=11;j=30;break}}if((j|0)==28){g=x-D|0;c[f>>2]=(g|0)<0?0:g;F=b[39298+(B<<2)>>1]|0;i=e;return F|0}else if((j|0)==30){d:while(1){j=0;e:do{if((w|0)<(p|0)){while(1){v=c[t>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;if((v|0)==-1){break}w=(c[u>>2]<<8)+v|0;c[u>>2]=w;v=(c[f>>2]|0)+8|0;c[f>>2]=v;if((v|0)>=(p|0)){r=v;l=w;j=35;break e}}s=c[f>>2]|0;if((s|0)==0){q=1;j=42;break d}F=c[u>>2]|0;m=s;n=F;s=F<>>(16-p|0)}else{r=w;l=v;j=35}}while(0);if((j|0)==35){m=r;n=l;s=l>>r-p&65535>>>(16-p|0)}v=s&65535;if(v<<16>>16==-1){q=1;j=42;break}if((p|0)<12){v=v<<16>>16<<12-p&65535}k=v<<16>>16;j=p+1|0;if((b[39168+(k<<2)>>1]|0)==(p|0)){j=40;break}if((j|0)<13){w=m;v=n;p=j}else{o=v;break a}}if((j|0)==40){g=m-p|0;c[f>>2]=(g|0)<0?0:g;F=b[39170+(k<<2)>>1]|0;i=e;return F|0}else if((j|0)==42){i=e;return q|0}}else if((j|0)==42){i=e;return q|0}}else{k=c[f>>2]|0;f:do{if((k|0)<12){l=d+8|0;k=d+36|0;while(1){m=c[l>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}m=(c[k>>2]<<8)+m|0;c[k>>2]=m;n=(c[f>>2]|0)+8|0;c[f>>2]=n;if((n|0)>=12){u=m;D=n;j=10;break f}}l=c[f>>2]|0;if((l|0)==0){F=1;i=e;return F|0}else{t=l;E=c[k>>2]<<12-l;break}}else{u=c[d+36>>2]|0;D=k;j=10}}while(0);if((j|0)==10){t=D;E=u>>D+ -12}o=E&4095;j=o&65535;if((o&65535)<32){j=39168+(j<<2)|0}else{j=39296+(j>>>3<<2)|0}k=b[j>>1]|0;if(k<<16>>16<=0){break}g=t-(k<<16>>16)|0;c[f>>2]=(g|0)<0?0:g;F=b[j+2>>1]|0;i=e;return F|0}}while(0);f=jd[c[(c[d>>2]|0)+48>>2]&511](d)|0;c[g>>2]=o<<16>>16;Qe(f,41344,h);f=d+40|0;g=(c[f>>2]|0)+ -1|0;c[f>>2]=(g|0)<0?0:g;F=1;i=e;return F|0}function Rk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;n=i;i=i+8|0;l=i;i=i+8|0;k=l;g=b+52|0;j=c[g>>2]|0;h=b+44|0;m=c[(c[h>>2]|0)+(j<<2)>>2]|0;if((m|0)<(d|0)){m=b+20|0;if((c[m>>2]|0)<(d|0)){j=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[l>>2]=d;Qe(j,48704,k);a[b+56|0]=1;j=c[g>>2]|0;d=c[m>>2]|0}if((j&1|0)!=(e|0)){j=j+1|0;c[g>>2]=j}c[(c[h>>2]|0)+(j<<2)>>2]=d;i=f;return}if((m|0)<=(d|0)){i=f;return}if((d|0)<0){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,48744,n);a[b+56|0]=1;d=0;j=c[g>>2]|0}h=c[h>>2]|0;a:do{if((j|0)>0){while(1){e=j+ -1|0;if((d|0)>(c[h+(e<<2)>>2]|0)){break a}c[g>>2]=e;if((e|0)>0){j=e}else{j=e;break}}}}while(0);c[h+(j<<2)>>2]=d;i=f;return}function Sk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;h=i;f=i;i=i+8|0;j=i;i=i+8|0;k=i;i=i+8|0;g=i;i=i+56|0;if((d|0)<2){e=0;i=h;return e|0}l=c[b+8>>2]|0;d=sd[c[(c[l>>2]|0)+56>>2]&127](l,d,e)|0;if((d|0)==0){l=0;i=h;return l|0}ne(ne(d,e,-1)|0,38248,-1)|0;e=c[b+12>>2]|0;if((e|0)!=0){c[k>>2]=e;Lb(g|0,42976,k|0)|0;ne(d,g,-1)|0}if((a[b+16|0]&1)!=0){ne(d,42984,-1)|0}if((a[b+17|0]&1)!=0){ne(d,43008,-1)|0}c[j>>2]=c[b+20>>2];Lb(g|0,43032,j|0)|0;ne(d,g,-1)|0;j=c[b+24>>2]|0;if((j|0)!=0){c[f>>2]=j;Lb(g|0,43048,f|0)|0;ne(d,g,-1)|0}if((a[b+28|0]&1)==0){ne(d,43064,-1)|0}if((a[b+29|0]&1)!=0){ne(d,43088,-1)|0}ne(d,43104,-1)|0;l=d;i=h;return l|0}function Tk(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+8>>2]|0;b=Bd[c[(c[b>>2]|0)+60>>2]&255](b,1)|0;i=d;return b|0}function Uk(a){a=a|0;var b=0;b=i;Vk(a);HW(a);i=b;return}function Vk(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=43144;d=0;do{e=a+3452+(d<<2)|0;Fe(c[e>>2]|0);c[e>>2]=0;d=d+1|0;}while((d|0)<32);d=a+3964|0;Fe(c[d>>2]|0);c[d>>2]=0;d=0;do{e=a+3580+(d<<2)|0;Fe(c[e>>2]|0);c[e>>2]=0;d=d+1|0;}while((d|0)<32);d=a+3968|0;Fe(c[d>>2]|0);c[d>>2]=0;d=0;do{e=a+3708+(d<<2)|0;Fe(c[e>>2]|0);c[e>>2]=0;d=d+1|0;}while((d|0)<32);d=a+3972|0;Fe(c[d>>2]|0);c[d>>2]=0;d=0;do{e=a+3836+(d<<2)|0;Fe(c[e>>2]|0);c[e>>2]=0;d=d+1|0;}while((d|0)<32);e=a+3976|0;Fe(c[e>>2]|0);c[e>>2]=0;a=a+8|0;e=c[a>>2]|0;fd[c[(c[e>>2]|0)+16>>2]&511](e);a=c[a>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function Wk(b){b=b|0;var d=0,e=0;d=i;e=c[b+8>>2]|0;fd[c[(c[e>>2]|0)+12>>2]&511](e);a[b+13|0]=0;a[b+12|0]=0;c[b+20>>2]=0;c[b+16>>2]=0;c[b+176>>2]=0;c[b+704>>2]=0;c[b+3444>>2]=0;c[b+3448>>2]=0;a[b+184|0]=0;a[b+185|0]=0;c[b+188>>2]=0;i=d;return}function Xk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;g=i;i=i+8|0;fd[c[(c[b>>2]|0)+40>>2]&511](b);if(!(Yk(b)|0)){c[b+3988>>2]=c[b+20>>2];i=e;return}d=b+176|0;f=c[d>>2]|0;do{if((f|0)==1){c[b+48>>2]=1;c[b+44>>2]=1;j=b+24|0;c[j>>2]=1;h=b+28|0;c[h>>2]=1;l=1;k=1}else{k=c[b+44>>2]|0;l=c[b+48>>2]|0;j=b+24|0;c[j>>2]=k;h=b+28|0;c[h>>2]=l;if((f|0)>1){n=k;m=1}else{break}while(1){k=c[b+40+(m*20|0)+4>>2]|0;if((k|0)>(n|0)){c[j>>2]=k}else{k=n}n=c[b+40+(m*20|0)+8>>2]|0;if((n|0)>(l|0)){c[h>>2]=n;l=n}m=m+1|0;if((m|0)<(f|0)){n=k}else{break}}}}while(0);k=k<<3;c[j>>2]=k;j=l<<3;c[h>>2]=j;l=b+180|0;a:do{if((c[l>>2]|0)==-1){if((f|0)!=3){c[l>>2]=0;break}if((a[b+184|0]&1)!=0){c[l>>2]=1;break}do{if((c[b+40>>2]|0)==82){if((c[b+60>>2]|0)!=71){break}if((c[b+80>>2]|0)!=66){break}c[l>>2]=0;break a}}while(0);c[l>>2]=1}}while(0);do{if((a[b+12|0]&1)==0){if((a[b+13|0]&1)==0){break}n=(c[b+16>>2]|0)+ -1+k|0;g=b+32|0;c[g>>2]=n-((n|0)%(k|0)|0);if((f|0)>0){k=0;do{if((j|0)>0){f=0;do{c[b+3452+(k<<7)+(f<<2)>>2]=ye(c[g>>2]|0,1)|0;f=f+1|0;j=c[h>>2]|0;}while((f|0)<(j|0));f=c[d>>2]|0}k=k+1|0;}while((k|0)<(f|0))}c[b+3980>>2]=0;c[b+3984>>2]=0;c[b+3988>>2]=0;c[b+3992>>2]=j;c[b+4e3>>2]=208;c[b+4012>>2]=0;c[b+3996>>2]=c[b+188>>2];if((f|0)>0){f=0;do{c[b+40+(f*20|0)+16>>2]=0;f=f+1|0;}while((f|0)<(c[d>>2]|0))}c[b+4004>>2]=0;i=e;return}}while(0);h=(c[b+16>>2]|0)+ -1+k|0;k=h-((h|0)%(k|0)|0)|0;h=b+32|0;c[h>>2]=k;l=b+20|0;m=(c[l>>2]|0)+ -1+j|0;m=m-((m|0)%(j|0)|0)|0;j=b+36|0;c[j>>2]=m;do{if(!((k|0)<1|(m|0)<1)){if((k|0)>((2147483647/(k|0)|0|0)/4|0|0)){break}b:do{if((f|0)>0){g=0;while(1){f=ye(da(m,k)|0,4)|0;c[b+3964+(g<<2)>>2]=f;bX(f|0,0,da(c[h>>2]<<2,c[j>>2]|0)|0)|0;g=g+1|0;f=c[d>>2]|0;if((g|0)>=(f|0)){break b}m=c[j>>2]|0;k=c[h>>2]|0}}}while(0);l=b+4e3|0;k=b+4012|0;j=b+188|0;g=b+3996|0;h=b+4004|0;while(1){c[l>>2]=208;c[k>>2]=0;c[g>>2]=c[j>>2];if((f|0)>0){f=0;do{c[b+40+(f*20|0)+16>>2]=0;f=f+1|0;}while((f|0)<(c[d>>2]|0))}c[h>>2]=0;Zk(b);if(!(Yk(b)|0)){break}f=c[d>>2]|0}_k(b);c[b+3980>>2]=0;c[b+3984>>2]=0;c[b+3988>>2]=0;i=e;return}}while(0);Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44016,g);c[b+3988>>2]=c[l>>2];i=e;return}function Yk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;g=i;i=i+8|0;h=g;f=i;i=i+8|0;b=i;i=i+8|0;d=a+8|0;e=a+188|0;a:while(1){l=c[d>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if(!((l|0)==255|(l|0)==-1)){continue}b:while(1){switch(l|0){case 218:{k=8;break a};case 221:{k=10;break b};case 216:case 0:{continue a};case 238:{k=19;break b};case 193:case 192:{k=5;break b};case 196:{k=7;break b};case 194:{k=6;break b};case 224:{k=18;break b};case-1:{k=20;break a};case 219:{k=9;break b};case 217:{k=27;break a};case 255:{break};default:{k=21;break b}}l=c[d>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0}if((k|0)==5){if(hl(a)|0){continue}else{k=27;break}}else if((k|0)==6){if(il(a)|0){continue}else{k=27;break}}else if((k|0)==7){if(jl(a)|0){continue}else{k=27;break}}else if((k|0)==9){if(ll(a)|0){continue}else{k=27;break}}else if((k|0)==10){k=c[d>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){k=17;break}l=c[d>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){k=17;break}if((l+(k<<8)|0)!=4){k=17;break}k=c[d>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;do{if((k|0)==-1){k=-1}else{l=c[d>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){k=-1;break}k=l+(k<<8)|0}}while(0);c[e>>2]=k;continue}else if((k|0)==18){if(ml(a)|0){continue}else{k=27;break}}else if((k|0)==19){if(nl(a)|0){continue}else{k=27;break}}else if((k|0)==21){if((l|0)<=223){k=26;break}k=c[d>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){continue}l=c[d>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){continue}k=(k<<8)+ -2+l|0;if((k|0)>0){l=0}else{continue}while(1){m=c[d>>2]|0;jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;l=l+1|0;if((l|0)<(k|0)){}else{continue a}}}}if((k|0)==8){m=kl(a)|0;i=j;return m|0}else if((k|0)==17){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44704,b);i=j;return 0}else if((k|0)==20){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44424,f);i=j;return 0}else if((k|0)==26){m=jd[c[(c[a>>2]|0)+48>>2]&511](a)|0;c[g>>2]=l;Qe(m,44440,h);i=j;return 0}else if((k|0)==27){i=j;return 0}return 0}function Zk(b){b=b|0;var 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,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;d=i;e=i;i=i+8|0;f=i;i=i+256|0;if((c[b+124>>2]|0)==1){j=c[b+176>>2]|0;a:do{if((j|0)>0){h=0;while(1){g=h+1|0;if((a[b+120+h|0]&1)!=0){break a}if((g|0)<(j|0)){h=g}else{h=g;break}}}else{h=0}}while(0);g=(c[b+24>>2]|0)/(c[b+40+(h*20|0)+4>>2]|0)|0;x=(c[b+28>>2]|0)/(c[b+40+(h*20|0)+8>>2]|0)|0}else{g=c[b+24>>2]|0;x=c[b+28>>2]|0}k=b+20|0;z=c[k>>2]|0;if((z|0)<=0){i=d;return}v=b+16|0;l=b+188|0;u=b+3996|0;w=b+8|0;h=b+4e3|0;o=b+4012|0;p=b+176|0;j=b+4004|0;r=b+24|0;s=b+28|0;t=(x|0)>0;q=(g|0)>0;n=b+32|0;m=b+12|0;A=c[v>>2]|0;y=0;b:while(1){if((A|0)>0){z=0;while(1){do{if((c[l>>2]|0)>0){if((c[u>>2]|0)!=0){break}c:while(1){A=c[w>>2]|0;A=jd[c[(c[A>>2]|0)+20>>2]&511](A)|0;if(!((A|0)==255|(A|0)==-1)){continue}while(1){if((A|0)==0){continue c}else if((A|0)!=255){break c}A=c[w>>2]|0;A=jd[c[(c[A>>2]|0)+20>>2]&511](A)|0}}if((A|0)!=(c[h>>2]|0)){f=16;break b}A=A+1|0;c[h>>2]=(A|0)==216?208:A;c[o>>2]=0;c[u>>2]=c[l>>2];if((c[p>>2]|0)>0){A=0;do{c[b+40+(A*20|0)+16>>2]=0;A=A+1|0;}while((A|0)<(c[p>>2]|0))}c[j>>2]=0}}while(0);E=c[p>>2]|0;if((E|0)>0){A=0;do{do{if((a[b+120+A|0]&1)!=0){C=(c[r>>2]|0)/(c[b+40+(A*20|0)+4>>2]|0)|0;B=(c[s>>2]|0)/(c[b+40+(A*20|0)+8>>2]|0)|0;D=(B|0)/8|0;if(!t){break}H=b+3964+(A<<2)|0;J=b+128+(A<<2)|0;G=b+144+(A<<2)|0;E=b+40+(A*20|0)+16|0;I=0;do{if(q){F=I+y|0;M=c[n>>2]|0;K=0;do{L=K+z|0;P=(da(M,F)|0)+L|0;N=0;P=(c[H>>2]|0)+(P<<2)|0;O=0;while(1){c[f+(N<<2)>>2]=c[P>>2];c[f+((N|1)<<2)>>2]=c[P+4>>2];c[f+((N|2)<<2)>>2]=c[P+8>>2];c[f+((N|3)<<2)>>2]=c[P+12>>2];c[f+((N|4)<<2)>>2]=c[P+16>>2];c[f+((N|5)<<2)>>2]=c[P+20>>2];c[f+((N|6)<<2)>>2]=c[P+24>>2];c[f+((N|7)<<2)>>2]=c[P+28>>2];P=P+((da(M,D)|0)<<2)|0;O=O+1|0;if((O|0)<8){N=N+8|0}else{break}}N=b+708+((c[J>>2]|0)*342|0)|0;M=b+2076+((c[G>>2]|0)*342|0)|0;if((a[m]&1)==0){if(!(dl(b,N,M,E,f)|0)){f=40;break b}}else{if(!(fl(b,N,M,E,f)|0)){f=40;break b}}N=(da(c[n>>2]|0,F)|0)+L|0;L=0;N=(c[H>>2]|0)+(N<<2)|0;O=0;while(1){c[N>>2]=c[f+(L<<2)>>2];c[N+4>>2]=c[f+((L|1)<<2)>>2];c[N+8>>2]=c[f+((L|2)<<2)>>2];c[N+12>>2]=c[f+((L|3)<<2)>>2];c[N+16>>2]=c[f+((L|4)<<2)>>2];c[N+20>>2]=c[f+((L|5)<<2)>>2];c[N+24>>2]=c[f+((L|6)<<2)>>2];c[N+28>>2]=c[f+((L|7)<<2)>>2];M=c[n>>2]|0;N=N+((da(M,D)|0)<<2)|0;O=O+1|0;if((O|0)<8){L=L+8|0}else{break}}K=K+C|0;}while((K|0)<(g|0))}I=I+B|0;}while((I|0)<(x|0));E=c[p>>2]|0}}while(0);A=A+1|0;}while((A|0)<(E|0))}c[u>>2]=(c[u>>2]|0)+ -1;z=z+g|0;A=c[v>>2]|0;if((z|0)>=(A|0)){break}}z=c[k>>2]|0}y=y+x|0;if((y|0)>=(z|0)){f=40;break}}if((f|0)==16){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44056,e);i=d;return}else if((f|0)==40){i=d;return}}function _k(a){a=a|0;var b=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,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;f=i;l=i;i=i+256|0;n=i;i=i+64|0;e=a+36|0;r=c[e>>2]|0;if((r|0)<=0){i=f;return}g=a+32|0;j=a+28|0;k=a+176|0;m=a+180|0;h=a+24|0;b=a+3964|0;o=a+3968|0;p=a+3972|0;R=c[g>>2]|0;q=0;do{if((R|0)>0){r=0;do{y=c[k>>2]|0;if((y|0)>0){G=c[j>>2]|0;F=c[h>>2]|0;s=0;do{w=a+192+(c[a+40+(s*20|0)+12>>2]<<7)|0;v=(F|0)/(c[a+40+(s*20|0)+4>>2]|0)|0;t=(G|0)/(c[a+40+(s*20|0)+8>>2]|0)|0;u=(v|0)/8|0;x=(t|0)/8|0;if((G|0)>0){A=a+3964+(s<<2)|0;E=v+ -8|0;D=t+ -8|0;C=(v+ -16|0)>>>0<8;B=(t+ -16|0)>>>0<8;z=(t|0)>7;y=(v|0)>7;H=F;F=0;do{if((H|0)>0){G=F+q|0;H=0;do{I=H+r|0;L=(da(R,G)|0)+I|0;J=0;L=(c[A>>2]|0)+(L<<2)|0;K=0;while(1){c[l+(J<<2)>>2]=c[L>>2];c[l+((J|1)<<2)>>2]=c[L+4>>2];c[l+((J|2)<<2)>>2]=c[L+8>>2];c[l+((J|3)<<2)>>2]=c[L+12>>2];c[l+((J|4)<<2)>>2]=c[L+16>>2];c[l+((J|5)<<2)>>2]=c[L+20>>2];c[l+((J|6)<<2)>>2]=c[L+24>>2];c[l+((J|7)<<2)>>2]=c[L+28>>2];L=L+((da(R,x)|0)<<2)|0;K=K+1|0;if((K|0)<8){J=J+8|0}else{break}}el(0,w,l,n);R=c[g>>2]|0;L=(da(R,G)|0)+I|0;K=c[A>>2]|0;J=K+(L<<2)|0;a:do{if(E>>>0>7|D>>>0>7){do{if(C){if(!B){I=0;K=0;break}I=0;K=K+(R+L<<2)|0;M=0;while(1){R=d[n+I|0]|0;c[K+4>>2]=R;c[K>>2]=R;c[J+4>>2]=R;c[J>>2]=R;R=d[n+(I|1)|0]|0;c[K+12>>2]=R;c[K+8>>2]=R;c[J+12>>2]=R;c[J+8>>2]=R;R=d[n+(I|2)|0]|0;c[K+20>>2]=R;c[K+16>>2]=R;c[J+20>>2]=R;c[J+16>>2]=R;R=d[n+(I|3)|0]|0;c[K+28>>2]=R;c[K+24>>2]=R;c[J+28>>2]=R;c[J+24>>2]=R;R=d[n+(I|4)|0]|0;c[K+36>>2]=R;c[K+32>>2]=R;c[J+36>>2]=R;c[J+32>>2]=R;R=d[n+(I|5)|0]|0;c[K+44>>2]=R;c[K+40>>2]=R;c[J+44>>2]=R;c[J+40>>2]=R;R=d[n+(I|6)|0]|0;c[K+52>>2]=R;c[K+48>>2]=R;c[J+52>>2]=R;c[J+48>>2]=R;R=d[n+(I|7)|0]|0;c[K+60>>2]=R;c[K+56>>2]=R;c[J+60>>2]=R;c[J+56>>2]=R;R=c[g>>2]|0;L=R<<1;M=M+2|0;if((M|0)<16){K=K+(L<<2)|0;J=J+(L<<2)|0;I=I+8|0}else{break a}}}else{I=0;K=0}}while(0);while(1){M=I;N=0;L=0;while(1){do{if(z){O=n+M|0;if(y){P=J+(L<<2)|0;Q=0}else{break}while(1){R=0;do{c[P+(R<<2)>>2]=d[O]|0;R=R+1|0;}while((R|0)<(u|0));R=c[g>>2]|0;Q=Q+1|0;if((Q|0)<(x|0)){P=P+(R<<2)|0}else{break}}}}while(0);N=N+1|0;if((N|0)<8){M=M+1|0;L=L+u|0}else{break}}J=J+((da(R,x)|0)<<2)|0;K=K+1|0;if((K|0)<8){I=I+8|0}else{break}}}else{I=0;K=0;while(1){c[J>>2]=d[n+I|0]|0;c[J+4>>2]=d[n+(I|1)|0]|0;c[J+8>>2]=d[n+(I|2)|0]|0;c[J+12>>2]=d[n+(I|3)|0]|0;c[J+16>>2]=d[n+(I|4)|0]|0;c[J+20>>2]=d[n+(I|5)|0]|0;c[J+24>>2]=d[n+(I|6)|0]|0;c[J+28>>2]=d[n+(I|7)|0]|0;R=c[g>>2]|0;K=K+1|0;if((K|0)<8){J=J+(R<<2)|0;I=I+8|0}else{break}}}}while(0);H=H+v|0;I=c[h>>2]|0;}while((H|0)<(I|0));G=c[j>>2]|0;H=I}F=F+t|0;}while((F|0)<(G|0));y=c[k>>2]|0;F=H}s=s+1|0;}while((s|0)<(y|0))}b:do{if((c[m>>2]|0)!=0){if((y|0)==3){t=c[j>>2]|0;if((t|0)<=0){break}u=c[h>>2]|0;s=0;while(1){v=(da(R,s+q|0)|0)+r|0;if((u|0)>0){u=(c[b>>2]|0)+(v<<2)|0;t=(c[o>>2]|0)+(v<<2)|0;v=(c[p>>2]|0)+(v<<2)|0;x=0;while(1){w=(c[t>>2]|0)+ -128|0;Q=(c[v>>2]|0)+ -128|0;R=c[u>>2]<<16|32768;c[u>>2]=d[(R+(Q*91881|0)>>16)+43504|0]|0;c[t>>2]=d[(R+(da(w,-22553)|0)+(da(Q,-46802)|0)>>16)+43504|0]|0;c[v>>2]=d[(R+(w*116130|0)>>16)+43504|0]|0;x=x+1|0;w=c[h>>2]|0;if((x|0)<(w|0)){v=v+4|0;t=t+4|0;u=u+4|0}else{break}}t=c[j>>2]|0;u=w}s=s+1|0;if((s|0)>=(t|0)){break b}R=c[g>>2]|0}}else if((y|0)==4){t=c[j>>2]|0;if((t|0)<=0){break}v=c[h>>2]|0;s=0;while(1){w=(da(R,s+q|0)|0)+r|0;if((v|0)>0){t=(c[b>>2]|0)+(w<<2)|0;u=(c[o>>2]|0)+(w<<2)|0;w=(c[p>>2]|0)+(w<<2)|0;x=0;while(1){v=(c[u>>2]|0)+ -128|0;Q=(c[w>>2]|0)+ -128|0;R=c[t>>2]<<16|32768;c[t>>2]=(d[(R+(Q*91881|0)>>16)+43504|0]|0)^255;c[u>>2]=(d[(R+(da(v,-22553)|0)+(da(Q,-46802)|0)>>16)+43504|0]|0)^255;c[w>>2]=(d[(R+(v*116130|0)>>16)+43504|0]|0)^255;x=x+1|0;v=c[h>>2]|0;if((x|0)<(v|0)){w=w+4|0;u=u+4|0;t=t+4|0}else{break}}t=c[j>>2]|0}s=s+1|0;if((s|0)>=(t|0)){break b}R=c[g>>2]|0}}else{break}}}while(0);r=(c[h>>2]|0)+r|0;R=c[g>>2]|0;}while((r|0)<(R|0));r=c[e>>2]|0}q=(c[j>>2]|0)+q|0;}while((q|0)<(r|0));i=f;return}function $k(a){a=a|0;var b=0,d=0,e=0;b=i;d=0;do{e=a+3452+(d<<2)|0;Fe(c[e>>2]|0);c[e>>2]=0;d=d+1|0;}while((d|0)<32);d=a+3964|0;Fe(c[d>>2]|0);c[d>>2]=0;d=0;do{e=a+3580+(d<<2)|0;Fe(c[e>>2]|0);c[e>>2]=0;d=d+1|0;}while((d|0)<32);d=a+3968|0;Fe(c[d>>2]|0);c[d>>2]=0;d=0;do{e=a+3708+(d<<2)|0;Fe(c[e>>2]|0);c[e>>2]=0;d=d+1|0;}while((d|0)<32);d=a+3972|0;Fe(c[d>>2]|0);c[d>>2]=0;d=0;do{e=a+3836+(d<<2)|0;Fe(c[e>>2]|0);c[e>>2]=0;d=d+1|0;}while((d|0)<32);e=a+3976|0;Fe(c[e>>2]|0);c[e>>2]=0;e=c[a+8>>2]|0;fd[c[(c[e>>2]|0)+16>>2]&511](e);i=b;return}function al(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;h=i;i=i+8|0;f=b+3988|0;j=c[f>>2]|0;k=b+20|0;if((j|0)>=(c[k>>2]|0)){q=-1;i=e;return q|0}do{if((a[b+12|0]&1)==0){if((a[b+13|0]&1)==0){break}m=b+3992|0;o=c[m>>2]|0;do{if((o|0)<(c[b+28>>2]|0)){n=c[b+3980>>2]|0;l=c[b+3984>>2]|0}else{if(bl(b)|0){c[b+3980>>2]=0;c[b+3984>>2]=0;c[m>>2]=0;n=0;l=0;o=0;break}c[f>>2]=c[k>>2];q=-1;i=e;return q|0}}while(0);p=b+3984|0;q=b+3980|0;j=d[(c[b+3452+(n<<7)+(o<<2)>>2]|0)+l|0]|0;n=n+1|0;c[q>>2]=n;if((n|0)!=(c[b+176>>2]|0)){q=j;i=e;return q|0}c[q>>2]=0;q=l+1|0;c[p>>2]=q;if((q|0)!=(c[b+16>>2]|0)){q=j;i=e;return q|0}c[p>>2]=0;q=(c[f>>2]|0)+1|0;c[f>>2]=q;c[m>>2]=o+1;if((q|0)!=(c[k>>2]|0)){q=j;i=e;return q|0}f=b+8|0;a:while(1){k=c[f>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if(!((k|0)==255|(k|0)==-1)){continue}while(1){if((k|0)==0){continue a}else if((k|0)==217){g=20;break a}else if((k|0)!=255){break a}k=c[f>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0}}if((g|0)==20){i=e;return j|0}Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44808,h);q=j;i=e;return q|0}}while(0);k=da(c[b+32>>2]|0,j)|0;g=b+3984|0;l=c[g>>2]|0;h=b+3980|0;q=c[h>>2]|0;k=c[(c[b+3964+(q<<2)>>2]|0)+(k+l<<2)>>2]|0;q=q+1|0;c[h>>2]=q;if((q|0)!=(c[b+176>>2]|0)){q=k;i=e;return q|0}c[h>>2]=0;q=l+1|0;c[g>>2]=q;if((q|0)!=(c[b+16>>2]|0)){q=k;i=e;return q|0}c[g>>2]=0;c[f>>2]=j+1;q=k;i=e;return q|0}function bl(b){b=b|0;var 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,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;e=i;f=i;i=i+8|0;t=i;i=i+256|0;j=i;i=i+64|0;p=b+16|0;if((c[p>>2]|0)<=0){ba=1;i=e;return ba|0}q=b+188|0;l=b+3996|0;n=b+8|0;o=b+4e3|0;s=b+4012|0;k=b+176|0;r=b+4004|0;m=b+180|0;g=b+24|0;h=b+28|0;u=0;a:while(1){do{if((c[q>>2]|0)>0){if((c[l>>2]|0)!=0){break}b:while(1){v=c[n>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;if(!((v|0)==255|(v|0)==-1)){continue}while(1){if((v|0)==0){continue b}else if((v|0)!=255){break b}v=c[n>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0}}if((v|0)!=(c[o>>2]|0)){g=9;break a}v=v+1|0;c[o>>2]=(v|0)==216?208:v;c[s>>2]=0;c[l>>2]=c[q>>2];if((c[k>>2]|0)>0){v=0;do{c[b+40+(v*20|0)+16>>2]=0;v=v+1|0;}while((v|0)<(c[k>>2]|0))}c[r>>2]=0}}while(0);A=c[k>>2]|0;if((A|0)>0){M=c[h>>2]|0;L=c[g>>2]|0;v=0;do{y=(L|0)/(c[b+40+(v*20|0)+4>>2]|0)|0;z=(M|0)/(c[b+40+(v*20|0)+8>>2]|0)|0;w=(y|0)/8|0;x=(z|0)/8|0;if((M|0)>0){E=b+128+(v<<2)|0;D=b+144+(v<<2)|0;J=b+40+(v*20|0)+16|0;A=b+40+(v*20|0)+12|0;G=y+ -8|0;F=z+ -8|0;C=y+ -16|0;B=z+ -16|0;H=(z|0)>7;I=(y|0)>7;K=0;do{if((L|0)>0){L=0;do{if(!(dl(b,b+708+((c[E>>2]|0)*342|0)|0,b+2076+((c[D>>2]|0)*342|0)|0,J,t)|0)){b=0;g=56;break a}el(0,b+192+(c[A>>2]<<7)|0,t,j);c:do{if(G>>>0>7|F>>>0>7){M=L+u|0;if(C>>>0>7|B>>>0>7){N=0;S=0;O=0}else{T=M+1|0;S=M+3|0;R=M+2|0;Q=M+5|0;P=M+4|0;O=M+7|0;N=M+6|0;V=M+9|0;U=M+8|0;$=M+11|0;aa=M+10|0;_=M+13|0;Z=M+12|0;Y=M+15|0;X=M+14|0;W=0;ba=0;while(1){fa=ba+K|0;ca=c[b+3452+(v<<7)+(fa<<2)>>2]|0;fa=c[b+3452+(v<<7)+(fa+1<<2)>>2]|0;ea=a[j+W|0]|0;a[fa+T|0]=ea;a[fa+M|0]=ea;a[ca+T|0]=ea;a[ca+M|0]=ea;ea=a[j+(W|1)|0]|0;a[fa+S|0]=ea;a[fa+R|0]=ea;a[ca+S|0]=ea;a[ca+R|0]=ea;ea=a[j+(W|2)|0]|0;a[fa+Q|0]=ea;a[fa+P|0]=ea;a[ca+Q|0]=ea;a[ca+P|0]=ea;ea=a[j+(W|3)|0]|0;a[fa+O|0]=ea;a[fa+N|0]=ea;a[ca+O|0]=ea;a[ca+N|0]=ea;ea=a[j+(W|4)|0]|0;a[fa+V|0]=ea;a[fa+U|0]=ea;a[ca+V|0]=ea;a[ca+U|0]=ea;ea=a[j+(W|5)|0]|0;a[fa+$|0]=ea;a[fa+aa|0]=ea;a[ca+$|0]=ea;a[ca+aa|0]=ea;ea=a[j+(W|6)|0]|0;a[fa+_|0]=ea;a[fa+Z|0]=ea;a[ca+_|0]=ea;a[ca+Z|0]=ea;ea=a[j+(W|7)|0]|0;a[fa+Y|0]=ea;a[fa+X|0]=ea;a[ca+Y|0]=ea;a[ca+X|0]=ea;ba=ba+2|0;if((ba|0)<16){W=W+8|0}else{break c}}}while(1){R=O+K|0;P=N;X=0;Q=0;while(1){if(H){V=j+P|0;W=M+Q|0;U=0;do{if(I){T=a[V]|0;Z=b+3452+(v<<7)+(R+U<<2)|0;Y=0;do{a[(c[Z>>2]|0)+(W+Y)|0]=T;Y=Y+1|0;}while((Y|0)<(w|0))}U=U+1|0;}while((U|0)<(x|0))}X=X+1|0;if((X|0)<8){P=P+1|0;Q=Q+w|0}else{break}}S=S+1|0;if((S|0)<8){N=N+8|0;O=O+x|0}else{break}}}else{S=L+u|0;T=S+1|0;U=S+2|0;M=S+3|0;N=S+4|0;O=S+5|0;P=S+6|0;Q=S+7|0;R=0;V=0;while(1){fa=c[b+3452+(v<<7)+(V+K<<2)>>2]|0;a[fa+S|0]=a[j+R|0]|0;a[fa+T|0]=a[j+(R|1)|0]|0;a[fa+U|0]=a[j+(R|2)|0]|0;a[fa+M|0]=a[j+(R|3)|0]|0;a[fa+N|0]=a[j+(R|4)|0]|0;a[fa+O|0]=a[j+(R|5)|0]|0;a[fa+P|0]=a[j+(R|6)|0]|0;a[fa+Q|0]=a[j+(R|7)|0]|0;V=V+1|0;if((V|0)<8){R=R+8|0}else{break}}}}while(0);L=L+y|0;N=c[g>>2]|0;}while((L|0)<(N|0));M=c[h>>2]|0;L=N}K=K+z|0;}while((K|0)<(M|0));A=c[k>>2]|0}v=v+1|0;}while((v|0)<(A|0))}c[l>>2]=(c[l>>2]|0)+ -1;do{if((c[m>>2]|0)!=0){if((A|0)==3){x=c[h>>2]|0;if((x|0)<=0){break}w=c[g>>2]|0;v=0;do{if((w|0)>0){x=b+3452+(v<<2)|0;y=b+3580+(v<<2)|0;z=b+3708+(v<<2)|0;A=0;do{w=A+u|0;ba=(c[x>>2]|0)+w|0;fa=(d[(c[y>>2]|0)+w|0]|0)+ -128|0;ca=(d[(c[z>>2]|0)+w|0]|0)+ -128|0;ea=(d[ba]|0)<<16|32768;a[ba]=a[(ea+(ca*91881|0)>>16)+43504|0]|0;ca=a[(ea+(da(fa,-22553)|0)+(da(ca,-46802)|0)>>16)+43504|0]|0;a[(c[y>>2]|0)+w|0]=ca;a[(c[z>>2]|0)+w|0]=a[(ea+(fa*116130|0)>>16)+43504|0]|0;A=A+1|0;w=c[g>>2]|0;}while((A|0)<(w|0));x=c[h>>2]|0}v=v+1|0;}while((v|0)<(x|0))}else if((A|0)==4){x=c[h>>2]|0;if((x|0)<=0){break}w=c[g>>2]|0;v=0;do{if((w|0)>0){x=b+3452+(v<<2)|0;z=b+3580+(v<<2)|0;y=b+3708+(v<<2)|0;A=0;do{w=A+u|0;ba=(c[x>>2]|0)+w|0;fa=(d[(c[z>>2]|0)+w|0]|0)+ -128|0;ca=(d[(c[y>>2]|0)+w|0]|0)+ -128|0;ea=(d[ba]|0)<<16|32768;a[ba]=~a[(ea+(ca*91881|0)>>16)+43504|0];ca=~a[(ea+(da(fa,-22553)|0)+(da(ca,-46802)|0)>>16)+43504|0];a[(c[z>>2]|0)+w|0]=ca;a[(c[y>>2]|0)+w|0]=~a[(ea+(fa*116130|0)>>16)+43504|0];A=A+1|0;w=c[g>>2]|0;}while((A|0)<(w|0));x=c[h>>2]|0}v=v+1|0;}while((v|0)<(x|0))}else{break}}}while(0);u=(c[g>>2]|0)+u|0;if((u|0)>=(c[p>>2]|0)){b=1;g=56;break}}if((g|0)==9){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44056,f);fa=0;i=e;return fa|0}else if((g|0)==56){i=e;return b|0}return 0}function cl(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;h=b+3988|0;f=c[h>>2]|0;g=b+20|0;if((f|0)>=(c[g>>2]|0)){j=-1;i=e;return j|0}do{if((a[b+12|0]&1)==0){if((a[b+13|0]&1)==0){break}j=b+3992|0;f=c[j>>2]|0;do{if((f|0)<(c[b+28>>2]|0)){h=c[b+3980>>2]|0;g=c[b+3984>>2]|0}else{if(bl(b)|0){c[b+3980>>2]=0;c[b+3984>>2]=0;c[j>>2]=0;h=0;g=0;f=0;break}c[h>>2]=c[g>>2];j=-1;i=e;return j|0}}while(0);j=d[(c[b+3452+(h<<7)+(f<<2)>>2]|0)+g|0]|0;i=e;return j|0}}while(0);j=da(c[b+32>>2]|0,f)|0;j=c[(c[b+3964+(c[b+3980>>2]<<2)>>2]|0)+(j+(c[b+3984>>2]|0)<<2)>>2]|0;i=e;return j|0}function dl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var 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;g=i;h=i;i=i+8|0;n=i;i=i+8|0;p=gl(a,b)|0;if((p|0)==9999){t=0;i=g;return t|0}b=a+4012|0;l=a+8|0;k=a+4008|0;do{if((p|0)>0){s=c[b>>2]|0;q=0;r=0;a:while(1){if((s|0)==0){t=c[l>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){j=0;q=33;break}else if((t|0)==255){while(1){s=c[l>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==0){break}else if((s|0)!=255){q=8;break a}}}c[k>>2]=t;c[b>>2]=8;o=t;s=7}else{o=c[k>>2]|0;s=s+ -1|0}c[b>>2]=s;o=o>>>s&1|q<<1;r=r+1|0;if((r|0)<(p|0)){q=o}else{q=11;break}}if((q|0)==8){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,n);t=0;i=g;return t|0}else if((q|0)==11){if((o|0)<(1<>2]|0)+m|0;c[e>>2]=m;c[f>>2]=m;bX(f+4|0,0,252)|0;m=1;b:while(1){e=0;while(1){n=gl(a,d)|0;if((n|0)==240&(e|0)<48){e=e+16|0}else{break}}if((n|0)==0){j=1;q=33;break}else if((n|0)==9999){q=32;break}o=n&15;if((o|0)==0){q=0}else{r=c[b>>2]|0;q=0;p=0;do{if((r|0)==0){s=c[l>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==255){while(1){r=c[l>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==0){break}else if((r|0)!=255){q=24;break b}}}else if((s|0)==-1){j=0;q=33;break b}c[k>>2]=s;c[b>>2]=8;r=7}else{s=c[k>>2]|0;r=r+ -1|0}c[b>>2]=r;q=s>>>r&1|q<<1;p=p+1|0;}while((p|0)<(o|0))}if((q|0)<(1<>>4&15|e)+m|0;if((e|0)>=64){j=1;q=33;break}m=e+1|0;c[f+(c[44096+(e<<2)>>2]<<2)>>2]=q;if((m|0)>=64){j=1;q=33;break}}if((q|0)==24){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,h);t=0;i=g;return t|0}else if((q|0)==32){t=0;i=g;return t|0}else if((q|0)==33){i=g;return j|0}return 0}function el(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var 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;b=i;j=0;while(1){r=f+(j<<2)|0;c[r>>2]=da(c[r>>2]|0,e[d+(j<<1)>>1]|0)|0;j=j+1|0;if((j|0)<64){}else{j=0;break}}while(1){m=f+(j<<2)|0;n=f+((j|1)<<2)|0;l=c[n>>2]|0;k=f+((j|2)<<2)|0;do{if((l|0)==0){if((c[k>>2]|0)!=0){h=11;break}o=f+((j|3)<<2)|0;if((c[o>>2]|0)!=0){h=11;break}d=f+((j|4)<<2)|0;if((c[d>>2]|0)!=0){h=11;break}p=f+((j|5)<<2)|0;if((c[p>>2]|0)!=0){h=11;break}q=f+((j|6)<<2)|0;if((c[q>>2]|0)!=0){h=11;break}r=f+((j|7)<<2)|0;if((c[r>>2]|0)!=0){h=11;break}l=((c[m>>2]|0)*5793|0)+512>>10;c[m>>2]=l;c[n>>2]=l;c[k>>2]=l;c[o>>2]=l;c[d>>2]=l;c[p>>2]=l;c[q>>2]=l;c[r>>2]=l}else{h=11}}while(0);if((h|0)==11){h=0;r=f+((j|4)<<2)|0;y=((c[r>>2]|0)*5793|0)+128>>8;z=c[k>>2]|0;t=f+((j|6)<<2)|0;x=c[t>>2]|0;w=f+((j|7)<<2)|0;d=c[w>>2]|0;q=((l-d|0)*2896|0)+128>>8;d=((d+l|0)*2896|0)+128>>8;o=f+((j|3)<<2)|0;p=c[o>>2]<<4;l=f+((j|5)<<2)|0;u=c[l>>2]<<4;s=(((c[m>>2]|0)*5793|0)+128>>8)+1|0;v=s-y>>1;y=s+y>>1;s=(z*3784|0)+128+(x*1567|0)>>8;x=(z*1567|0)+128+(da(x,-3784)|0)>>8;z=(0-u|1)+q>>1;q=(u|1)+q>>1;u=(p|1)+d>>1;d=(0-p|1)+d>>1;p=1-s+y>>1;y=s+1+y>>1;s=1-x+v>>1;v=x+1+v>>1;x=(u*3406|0)+2048+(q*2276|0)>>12;q=(da(u,-2276)|0)+2048+(q*3406|0)>>12;u=(z*4017|0)+2048+(d*799|0)>>12;d=(da(z,-799)|0)+2048+(d*4017|0)>>12;c[m>>2]=x+y;c[w>>2]=y-x;c[n>>2]=u+v;c[t>>2]=v-u;c[k>>2]=d+s;c[l>>2]=s-d;c[o>>2]=q+p;c[r>>2]=p-q}j=j+8|0;if((j|0)>=64){l=0;break}}while(1){q=f+(l<<2)|0;r=f+(l+8<<2)|0;p=c[r>>2]|0;o=f+(l+16<<2)|0;do{if((p|0)==0){if((c[o>>2]|0)!=0){h=21;break}n=f+(l+24<<2)|0;if((c[n>>2]|0)!=0){h=21;break}k=f+(l+32<<2)|0;if((c[k>>2]|0)!=0){h=21;break}j=f+(l+40<<2)|0;if((c[j>>2]|0)!=0){h=21;break}m=f+(l+48<<2)|0;if((c[m>>2]|0)!=0){h=21;break}d=f+(l+56<<2)|0;if((c[d>>2]|0)!=0){h=21;break}z=((c[q>>2]|0)*5793|0)+8192>>14;c[q>>2]=z;c[r>>2]=z;c[o>>2]=z;c[n>>2]=z;c[k>>2]=z;c[j>>2]=z;c[m>>2]=z;c[d>>2]=z}else{h=21}}while(0);if((h|0)==21){h=0;z=f+(l+32<<2)|0;j=((c[z>>2]|0)*5793|0)+2048>>12;d=c[o>>2]|0;s=f+(l+48<<2)|0;k=c[s>>2]|0;m=f+(l+56<<2)|0;u=c[m>>2]|0;y=((p-u|0)*2896|0)+2048>>12;u=((u+p|0)*2896|0)+2048>>12;w=f+(l+24<<2)|0;x=c[w>>2]|0;v=f+(l+40<<2)|0;p=c[v>>2]|0;t=(((c[q>>2]|0)*5793|0)+2048>>12)+1|0;n=t-j>>1;j=t+j>>1;t=(d*3784|0)+2048+(k*1567|0)>>12;k=(d*1567|0)+2048+(da(k,-3784)|0)>>12;d=1-p+y>>1;y=p+1+y>>1;p=x+1+u>>1;u=1-x+u>>1;x=1-t+j>>1;j=t+1+j>>1;t=1-k+n>>1;n=k+1+n>>1;k=(p*3406|0)+2048+(y*2276|0)>>12;y=(da(p,-2276)|0)+2048+(y*3406|0)>>12;p=(d*4017|0)+2048+(u*799|0)>>12;u=(da(d,-799)|0)+2048+(u*4017|0)>>12;c[q>>2]=k+j;c[m>>2]=j-k;c[r>>2]=p+n;c[s>>2]=n-p;c[o>>2]=u+t;c[v>>2]=t-u;c[w>>2]=y+x;c[z>>2]=x-y}l=l+1|0;if((l|0)>=8){h=0;break}}do{a[g+h|0]=a[((c[f+(h<<2)>>2]|0)+8>>4)+43632|0]|0;h=h+1|0;}while((h|0)<64);i=b;return}function fl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var 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,A=0,B=0;h=i;p=i;i=i+8|0;q=i;i=i+8|0;k=i;i=i+8|0;m=i;i=i+8|0;o=i;i=i+8|0;r=i;i=i+8|0;z=i;i=i+8|0;t=i;i=i+8|0;v=c[a+160>>2]|0;if((v|0)==0){if((c[a+168>>2]|0)==0){v=gl(a,b)|0;if((v|0)==9999){B=0;i=h;return B|0}do{if((v|0)>0){x=a+4012|0;z=a+8|0;w=a+4008|0;b=c[x>>2]|0;y=0;A=0;a:while(1){if((b|0)==0){b=c[z>>2]|0;b=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((b|0)==255){while(1){B=c[z>>2]|0;B=jd[c[(c[B>>2]|0)+20>>2]&511](B)|0;if((B|0)==0){break}else if((B|0)!=255){w=10;break a}}}else if((b|0)==-1){g=0;w=103;break}c[w>>2]=b;c[x>>2]=8;u=b;b=7}else{u=c[w>>2]|0;b=b+ -1|0}c[x>>2]=b;u=u>>>b&1|y<<1;A=A+1|0;if((A|0)<(v|0)){y=u}else{w=13;break}}if((w|0)==10){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,t);B=0;i=h;return B|0}else if((w|0)==13){if((u|0)<(1<>2]|0)+n|0;c[e>>2]=B;e=(c[f>>2]|0)+(B<>2])|0}else{e=a+4012|0;n=c[e>>2]|0;b:do{if((n|0)==0){t=a+8|0;n=c[t>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;c:do{if((n|0)==255){while(1){u=c[t>>2]|0;u=jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;if((u|0)==0){break c}else if((u|0)!=255){break}}Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,z);A=-1;break b}else if((n|0)==-1){A=-1;break b}}while(0);c[a+4008>>2]=n;c[e>>2]=8;x=n;y=7;w=23}else{x=c[a+4008>>2]|0;y=n+ -1|0;w=23}}while(0);if((w|0)==23){c[e>>2]=y;A=x>>>y&1}e=(c[f>>2]|0)+(A<>2])|0}c[f>>2]=e;v=1}e=a+164|0;u=c[e>>2]|0;if((u|0)==0){B=1;i=h;return B|0}n=a+4004|0;t=c[n>>2]|0;u=(v|0)>(u|0);if((t|0)>0){do{if(u){s=t}else{l=a+4012|0;j=a+8|0;k=a+4008|0;m=a+172|0;d:while(1){p=v+1|0;o=f+(c[44096+(v<<2)>>2]<<2)|0;do{if((c[o>>2]|0)!=0){d=c[l>>2]|0;if((d|0)==0){q=c[j>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==255){while(1){d=c[j>>2]|0;d=jd[c[(c[d>>2]|0)+20>>2]&511](d)|0;if((d|0)==0){break}else if((d|0)!=255){w=37;break d}}}else if((q|0)==-1){g=0;w=103;break d}c[k>>2]=q;c[l>>2]=8;d=7}else{q=c[k>>2]|0;d=d+ -1|0}c[l>>2]=d;if((1<>2]=(c[o>>2]|0)+(1<>2])}}while(0);if((v|0)<(c[e>>2]|0)){v=p}else{w=42;break}}if((w|0)==37){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,r);B=0;i=h;return B|0}else if((w|0)==42){s=c[n>>2]|0;break}else if((w|0)==103){i=h;return g|0}}}while(0);c[n>>2]=s+ -1;B=1;i=h;return B|0}if(u){B=1;i=h;return B|0}u=a+4012|0;r=a+8|0;s=a+4008|0;t=a+172|0;e:while(1){w=gl(a,d)|0;if((w|0)==240){A=v;w=0;do{x=A;while(1){A=x+1|0;x=f+(c[44096+(x<<2)>>2]<<2)|0;if((c[x>>2]|0)==0){break}z=c[u>>2]|0;if((z|0)==0){y=c[r>>2]|0;y=jd[c[(c[y>>2]|0)+20>>2]&511](y)|0;if((y|0)==255){while(1){z=c[r>>2]|0;z=jd[c[(c[z>>2]|0)+20>>2]&511](z)|0;if((z|0)==0){break}else if((z|0)!=255){w=52;break e}}}else if((y|0)==-1){g=0;w=103;break e}c[s>>2]=y;c[u>>2]=8;z=7}else{y=c[s>>2]|0;z=z+ -1|0}c[u>>2]=z;if((1<>2]=(c[x>>2]|0)+(1<>2]);x=A}w=w+1|0;}while((w|0)<16)}else if((w|0)==9999){g=0;w=103;break}else{x=w&15;l=w>>4;if((x|0)==0){w=57;break}w=l&15;A=c[u>>2]|0;y=0;z=0;do{if((A|0)==0){b=c[r>>2]|0;b=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((b|0)==255){while(1){A=c[r>>2]|0;A=jd[c[(c[A>>2]|0)+20>>2]&511](A)|0;if((A|0)==0){break}else if((A|0)!=255){w=84;break e}}}else if((b|0)==-1){g=0;w=103;break e}c[s>>2]=b;c[u>>2]=8;A=7}else{b=c[s>>2]|0;A=A+ -1|0}c[u>>2]=A;y=b>>>A&1|y<<1;z=z+1|0;}while((z|0)<(x|0));if((y|0)<(1<>2]<<2)|0;if((c[z>>2]|0)!=0){while(1){B=c[u>>2]|0;if((B|0)==0){b=c[r>>2]|0;b=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((b|0)==255){while(1){B=c[r>>2]|0;B=jd[c[(c[B>>2]|0)+20>>2]&511](B)|0;if((B|0)==0){break}else if((B|0)!=255){w=95;break e}}}else if((b|0)==-1){g=0;w=103;break e}c[s>>2]=b;c[u>>2]=8;B=7}else{b=c[s>>2]|0;B=B+ -1|0}c[u>>2]=B;if((1<>2]=(c[z>>2]|0)+(1<>2])}b=A+1|0;z=f+(c[44096+(A<<2)>>2]<<2)|0;if((c[z>>2]|0)==0){A=b;break}else{A=b}}}if((x|0)<(w|0)){z=A;x=x+1|0}else{break}}c[z>>2]=y<>2]}if((A|0)>(c[e>>2]|0)){g=1;w=103;break}else{v=A}}if((w|0)==52){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,o);B=0;i=h;return B|0}else if((w|0)==57){c[n>>2]=0;f:do{if((l|0)>0){q=0;p=c[u>>2]|0;o=0;g:while(1){if((p|0)==0){d=c[r>>2]|0;d=jd[c[(c[d>>2]|0)+20>>2]&511](d)|0;if((d|0)==255){while(1){p=c[r>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==0){break}else if((p|0)!=255){break g}}}else if((d|0)==-1){g=0;w=103;break}c[s>>2]=d;c[u>>2]=8;q=c[n>>2]|0;p=7}else{d=c[s>>2]|0;p=p+ -1|0}c[u>>2]=p;q=q<<1|d>>>p&1;c[n>>2]=q;o=o+1|0;if((o|0)>=(l|0)){break f}}if((w|0)==103){i=h;return g|0}Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,m);B=0;i=h;return B|0}else{q=0}}while(0);l=q+(1<>2]=l;do{if((v|0)>(c[e>>2]|0)){j=l}else{h:while(1){l=v+1|0;m=f+(c[44096+(v<<2)>>2]<<2)|0;do{if((c[m>>2]|0)!=0){p=c[u>>2]|0;if((p|0)==0){o=c[r>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==255){while(1){p=c[r>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==0){break}else if((p|0)!=255){w=72;break h}}}else if((o|0)==-1){g=0;w=103;break h}c[s>>2]=o;c[u>>2]=8;p=7}else{o=c[s>>2]|0;p=p+ -1|0}c[u>>2]=p;if((1<>2]=(c[m>>2]|0)+(1<>2])}}while(0);if((v|0)<(c[e>>2]|0)){v=l}else{w=77;break}}if((w|0)==72){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,k);B=0;i=h;return B|0}else if((w|0)==77){j=c[n>>2]|0;break}else if((w|0)==103){i=h;return g|0}}}while(0);c[n>>2]=j+ -1;B=1;i=h;return B|0}else if((w|0)==84){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,q);B=0;i=h;return B|0}else if((w|0)==95){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,p);B=0;i=h;return B|0}else if((w|0)==103){i=h;return g|0}return 0}function gl(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;g=i;i=i+8|0;h=i;i=i+8|0;j=a+4012|0;l=a+8|0;k=a+4008|0;o=c[j>>2]|0;m=0;n=0;a:while(1){if((o|0)==0){p=c[l>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){a=9999;j=12;break}else if((p|0)==255){while(1){o=c[l>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==0){break}else if((o|0)!=255){j=6;break a}}}c[k>>2]=p;c[j>>2]=8;o=7}else{p=c[k>>2]|0;o=o+ -1|0}c[j>>2]=o;n=p>>>o&1|(n&65535)<<1;m=m+1|0;p=e[b+18+(m<<1)>>1]|0;if(((n&65535)-p|0)<(e[b+52+(m<<1)>>1]|0|0)){j=9;break}if((m|0)<16){n=n&65535}else{j=11;break}}if((j|0)==6){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44384,h);p=9999;i=f;return p|0}else if((j|0)==9){p=d[b+86+((d[b+m|0]|0)+(n-p&65535))|0]|0;i=f;return p|0}else if((j|0)==11){Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44352,g);p=9999;i=f;return p|0}else if((j|0)==12){i=f;return a|0}return 0}function hl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;f=i;i=i+8|0;g=f;j=i;i=i+8|0;e=b+8|0;l=c[e>>2]|0;if((jd[c[(c[l>>2]|0)+20>>2]&511](l)|0)!=-1){l=c[e>>2]|0;jd[c[(c[l>>2]|0)+20>>2]&511](l)|0}h=c[e>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;l=c[e>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;do{if((l|0)==-1){k=-1}else{k=c[e>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){k=-1;break}k=k+(l<<8)|0}}while(0);c[b+20>>2]=k;k=c[e>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;do{if((k|0)==-1){k=-1}else{l=c[e>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){k=-1;break}k=l+(k<<8)|0}}while(0);c[b+16>>2]=k;l=c[e>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;k=b+176|0;c[k>>2]=l;if((l+ -1|0)>>>0>3){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44472,j);c[k>>2]=0;l=0;i=d;return l|0}if((h|0)!=8){l=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[f>>2]=h;Qe(l,44512,g);l=0;i=d;return l|0}if((l|0)>0){f=0;do{l=c[e>>2]|0;c[b+40+(f*20|0)>>2]=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;l=c[e>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;c[b+40+(f*20|0)+4>>2]=l>>>4&15;c[b+40+(f*20|0)+8>>2]=l&15;l=c[e>>2]|0;c[b+40+(f*20|0)+12>>2]=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;f=f+1|0;}while((f|0)<(c[k>>2]|0))}a[b+12|0]=0;l=1;i=d;return l|0}function il(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;h=i;i=i+8|0;f=h;e=b+8|0;k=c[e>>2]|0;if((jd[c[(c[k>>2]|0)+20>>2]&511](k)|0)!=-1){k=c[e>>2]|0;jd[c[(c[k>>2]|0)+20>>2]&511](k)|0}g=c[e>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;k=c[e>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;do{if((k|0)==-1){j=-1}else{j=c[e>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){j=-1;break}j=j+(k<<8)|0}}while(0);c[b+20>>2]=j;j=c[e>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;do{if((j|0)==-1){j=-1}else{k=c[e>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){j=-1;break}j=k+(j<<8)|0}}while(0);c[b+16>>2]=j;k=c[e>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;j=b+176|0;c[j>>2]=k;if((g|0)!=8){k=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[h>>2]=g;Qe(k,44512,f);k=0;i=d;return k|0}if((k|0)>0){f=0;do{k=c[e>>2]|0;c[b+40+(f*20|0)>>2]=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;k=c[e>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;c[b+40+(f*20|0)+4>>2]=k>>>4&15;c[b+40+(f*20|0)+8>>2]=k&15;k=c[e>>2]|0;c[b+40+(f*20|0)+12>>2]=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;f=f+1|0;}while((f|0)<(c[j>>2]|0))}a[b+12|0]=1;k=1;i=d;return k|0}function jl(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;h=i;i=i+8|0;g=d+8|0;k=c[g>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){q=1;i=e;return q|0}j=c[g>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){q=1;i=e;return q|0}m=(k<<8)+ -2+j|0;if((m|0)<=0){q=1;i=e;return q|0}k=d+3444|0;j=d+3448|0;while(1){l=c[g>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;n=l&15;if(n>>>0>3){break}if((l&16|0)==0){if((n|0)>=(c[k>>2]|0)){c[k>>2]=n+1}l=d+708+(n*342|0)|0}else{if((n|0)>=(c[j>>2]|0)){c[j>>2]=n+1}l=d+2076+(n*342|0)|0}p=0;q=1;o=0;while(1){n=c[g>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;a[l+q|0]=o;b[l+18+(q<<1)>>1]=p;b[l+52+(q<<1)>>1]=n;o=n+(o&255)|0;q=q+1|0;if((q|0)<17){o=o&255;p=n+(p&65535)<<1&65535}else{break}}m=m+ -17|0;o=o&255;if((o|0)!=0){n=0;do{q=c[g>>2]|0;a[l+86+n|0]=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;n=n+1|0;}while((n|0)<(o|0))}m=m-o|0;if((m|0)<=0){d=1;f=19;break}}if((f|0)==19){i=e;return d|0}Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,44680,h);q=0;i=e;return q|0}function kl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;f=i;i=i+8|0;g=i;i=i+8|0;j=i;i=i+8|0;k=i;i=i+8|0;e=b+8|0;h=c[e>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;do{if((h|0)==-1){m=-4}else{l=c[e>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){m=-4;break}m=(h<<8)+ -3+l|0}}while(0);l=c[e>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;h=b+124|0;c[h>>2]=l;if((l+ -1|0)>>>0>3){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44472,k);c[h>>2]=0;o=0;i=d;return o|0}if((m|0)!=((l<<1)+3|0)){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44536,j);o=0;i=d;return o|0}j=b+176|0;o=c[j>>2]|0;a[b+13|0]=(l|0)==(o|0)|0;if((o|0)>0){k=0;do{a[b+120+k|0]=0;c[b+128+(k<<2)>>2]=0;c[b+144+(k<<2)>>2]=0;k=k+1|0;}while((k|0)<(c[j>>2]|0));l=c[h>>2]|0}m=c[e>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;a:do{if((l|0)>0){k=0;while(1){if((m|0)==(c[b+40+(k*20|0)>>2]|0)){n=k}else{l=c[j>>2]|0;b:do{if((l|0)>0){n=0;while(1){o=n+1|0;if((m|0)==(c[b+40+(n*20|0)>>2]|0)){break b}if((o|0)<(l|0)){n=o}else{n=o;break}}}else{n=0}}while(0);if((n|0)==(l|0)){break}}a[b+120+n|0]=1;o=c[e>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;c[b+128+(n<<2)>>2]=o>>>4&15;c[b+144+(n<<2)>>2]=o&15;k=k+1|0;o=(k|0)<(c[h>>2]|0);m=c[e>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if(!o){break a}}Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44560,g);o=0;i=d;return o|0}}while(0);n=b+160|0;c[n>>2]=m;o=c[e>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;c[b+164>>2]=o;n=c[n>>2]|0;if((n|0)<0|(o|0)>63|(n|0)>(o|0)){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44600,f);o=0;i=d;return o|0}else{o=c[e>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;c[b+168>>2]=o>>>4&15;c[b+172>>2]=o&15;o=1;i=d;return o|0}return 0}function ll(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;f=i;i=i+8|0;g=a+8|0;h=c[g>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((h|0)==-1){o=1;i=e;return o|0}j=c[g>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){o=1;i=e;return o|0}k=(h<<8)+ -2+j|0;if((k|0)<=0){o=1;i=e;return o|0}h=a+704|0;while(1){j=c[g>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;l=j>>>4&15;j=j&15;if(l>>>0>1|j>>>0>3){break}if((j|0)==(c[h>>2]|0)){c[h>>2]=j+1}m=(l|0)!=0;l=0;do{n=c[g>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if(m){do{if((n|0)==-1){n=-1}else{o=c[g>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){n=-1;break}n=o+(n<<8)&65535}}while(0);b[a+192+(j<<7)+(c[44096+(l<<2)>>2]<<1)>>1]=n}else{b[a+192+(j<<7)+(c[44096+(l<<2)>>2]<<1)>>1]=n}l=l+1|0;}while((l|0)<64);k=k+(m?-129:-65)|0;if((k|0)<=0){a=1;d=18;break}}if((d|0)==18){i=e;return a|0}Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,44648,f);o=0;i=e;return o|0}function ml(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;f=i;i=i+8|0;j=i;i=i+8|0;h=i;i=i+8|0;e=b+8|0;l=c[e>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){l=1;i=d;return l|0}k=c[e>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){l=1;i=d;return l|0}k=k+(l<<8)|0;l=k+ -2|0;do{if((l|0)>4){l=0;while(1){g=c[e>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;if((g|0)==-1){g=5;break}a[h+l|0]=g;l=l+1|0;if((l|0)>=5){g=7;break}}if((g|0)==5){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44736,j);l=0;i=d;return l|0}else if((g|0)==7){l=k+ -7|0;if((iX(h|0,44760,5)|0)!=0){break}a[b+184|0]=1;break}}}while(0);if((l|0)<=0){l=1;i=d;return l|0}while(1){k=c[e>>2]|0;l=l+ -1|0;if((jd[c[(c[k>>2]|0)+20>>2]&511](k)|0)==-1){break}if((l|0)>0){}else{b=1;g=13;break}}if((g|0)==13){i=d;return b|0}Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44736,f);l=0;i=d;return l|0}function nl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;f=i;i=i+8|0;g=i;i=i+16|0;e=b+8|0;j=c[e>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;a:do{if((j|0)!=-1){h=c[e>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((h|0)==-1){break}h=h+(j<<8)|0;if((h|0)<14){break}else{j=0}do{k=c[e>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break a}a[g+j|0]=k;j=j+1|0;}while((j|0)<12);if((vc(g|0,44768,5)|0)!=0){break}c[b+180>>2]=a[g+11|0]|0;a[b+185|0]=1;if((h|0)>14){g=14}else{k=1;i=d;return k|0}while(1){k=c[e>>2]|0;g=g+1|0;if((jd[c[(c[k>>2]|0)+20>>2]&511](k)|0)==-1){break a}if((g|0)<(h|0)){}else{b=1;break}}i=d;return b|0}}while(0);Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,44776,f);k=0;i=d;return k|0}function ol(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((b|0)<2){b=0;i=e;return b|0}a=c[a+8>>2]|0;a=sd[c[(c[a>>2]|0)+56>>2]&127](a,b,d)|0;if((a|0)==0){b=0;i=e;return b|0}ne(ne(a,d,-1)|0,44824,-1)|0;b=a;i=e;return b|0}function pl(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+8>>2]|0;b=Bd[c[(c[b>>2]|0)+60>>2]&255](b,1)|0;i=d;return b|0}function ql(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;c[b+4>>2]=1;c[b+8>>2]=d;c[b>>2]=47624;a:do{if((e|0)==1){c[b+12>>2]=0}else{d=FW(44)|0;c[d>>2]=b;c[d+4>>2]=e;c[d+8>>2]=f;c[d+12>>2]=g;c[d+16>>2]=h;e=d+32|0;c[e>>2]=0;m=d+40|0;a[m]=0;n=da(g,f)|0;c[d+20>>2]=n;k=(da(h,g)|0)+7>>3;c[d+24>>2]=k;k=((da(n,h)|0)+7>>3)+k|0;l=d+28|0;c[l>>2]=k;do{if(!((f|0)<1|(g|0)<1)){if((h|0)<1|(g|0)>32|(h|0)>16){break}if((2147483647/(g|0)|0|0)<=(f|0)){break}if((n|0)>=(2147483640/(h|0)|0|0)){break}n=we(k)|0;c[e>>2]=n;bX(n|0,0,c[l>>2]|0)|0;c[d+36>>2]=c[l>>2];a[m]=1;c[b+12>>2]=d;break a}}while(0);h=b+12|0;c[h>>2]=d;if((d|0)!=0){Fe(c[e>>2]|0);HW(d)}c[h>>2]=0}}while(0);c[b+34072>>2]=0;c[b+34080>>2]=0;bX(b+16|0,0,32768)|0;i=j;return}function rl(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=47624;d=c[a+34072>>2]|0;if((d|0)!=(c[11868]|0)){Fe(d)}d=c[a+34080>>2]|0;if((d|0)!=(c[11902]|0)){Fe(d)}d=c[a+12>>2]|0;if((d|0)!=0){Fe(c[d+32>>2]|0);HW(d)}d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function sl(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=47624;d=c[a+34072>>2]|0;if((d|0)!=(c[11868]|0)){Fe(d)}d=c[a+34080>>2]|0;if((d|0)!=(c[11902]|0)){Fe(d)}d=c[a+12>>2]|0;if((d|0)!=0){Fe(c[d+32>>2]|0);HW(d)}a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function tl(b){b=b|0;var d=0;d=i;a[b+34088|0]=0;bX(b+32784|0,0,16)|0;a[b+34096|0]=1;a[b+34097|0]=1;b=c[b+8>>2]|0;fd[c[(c[b>>2]|0)+12>>2]&511](b);i=d;return}function ul(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;h=i;i=i+8|0;f=i;i=i+8|0;e=i;i=i+8|0;fd[c[(c[b>>2]|0)+40>>2]&511](b);g=b+34097|0;a[g]=1;a[b+34096|0]=1;j=b+8|0;k=c[j>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;j=c[j>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((k|0)==-1|(j|0)==-1){i=d;return}if((k&15|0)!=8){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,47720,e);i=d;return}if(((j+(k<<8)|0)%31|0|0)!=0){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,47768,f);i=d;return}if((j&32|0)==0){a[g]=0;i=d;return}else{Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,47800,h);i=d;return}}function vl(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=c[b+12>>2]|0;if((f|0)!=0){b=f+36|0;g=c[b>>2]|0;do{if((g|0)>=(c[f+28>>2]|0)){if(Cj(f)|0){g=c[b>>2]|0;break}else{j=-1;i=e;return j|0}}}while(0);c[b>>2]=g+1;j=d[(c[f+32>>2]|0)+g|0]|0;i=e;return j|0}f=b+32788|0;j=c[f>>2]|0;a:do{if((j|0)==0){h=b+34096|0;g=b+34097|0;while(1){if((a[h]&1)!=0){if((a[g]&1)!=0){b=-1;break}}yl(b);j=c[f>>2]|0;if((j|0)!=0){break a}}i=e;return b|0}}while(0);g=b+32784|0;k=c[g>>2]|0;h=d[b+16+k|0]|0;c[g>>2]=k+1&32767;c[f>>2]=j+ -1;j=h;i=e;return j|0}function wl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;f=b+12|0;j=c[f>>2]|0;h=(d|0)>0;if((j|0)!=0){if(!h){p=d;i=g;return p|0}l=j+36|0;n=j+28|0;k=j+32|0;m=0;while(1){o=c[l>>2]|0;if((o|0)>=(c[n>>2]|0)){if(!(Cj(j)|0)){j=22;break}o=c[l>>2]|0}c[l>>2]=o+1;a[e+m|0]=a[(c[k>>2]|0)+o|0]|0;m=m+1|0;if((m|0)>=(d|0)){m=d;j=22;break}}if((j|0)==22){i=g;return m|0}}if(!h){p=d;i=g;return p|0}k=b+32788|0;l=b+34096|0;h=b+34097|0;j=b+32784|0;n=0;m=0;a:while(1){if((n|0)==0){n=c[k>>2]|0;if((n|0)==0){do{if((a[l]&1)!=0){if((a[h]&1)!=0){j=22;break a}}yl(b);n=c[k>>2]|0;}while((n|0)==0)}o=c[j>>2]|0;p=a[b+16+o|0]|0;c[j>>2]=o+1&32767;c[k>>2]=n+ -1;n=p}else{o=n+36|0;p=c[o>>2]|0;if((p|0)>=(c[n+28>>2]|0)){if(!(Cj(n)|0)){j=22;break}p=c[o>>2]|0}c[o>>2]=p+1;n=a[(c[n+32>>2]|0)+p|0]|0}a[e+m|0]=n;m=m+1|0;if((m|0)>=(d|0)){m=d;j=22;break}n=c[f>>2]|0}if((j|0)==22){i=g;return m|0}return 0}function xl(b){b=b|0;var e=0,f=0,g=0,h=0;e=i;f=c[b+12>>2]|0;if((f|0)!=0){g=f+36|0;b=c[g>>2]|0;do{if((b|0)>=(c[f+28>>2]|0)){if(Cj(f)|0){b=c[g>>2]|0;break}else{h=-1;i=e;return h|0}}}while(0);h=d[(c[f+32>>2]|0)+b|0]|0;i=e;return h|0}f=b+32788|0;a:do{if((c[f>>2]|0)==0){h=b+34096|0;g=b+34097|0;while(1){if((a[h]&1)!=0){if((a[g]&1)!=0){b=-1;break}}yl(b);if((c[f>>2]|0)!=0){break a}}i=e;return b|0}}while(0);h=d[b+16+(c[b+32784>>2]|0)|0]|0;i=e;return h|0}function yl(d){d=d|0;var 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;f=i;k=i;i=i+8|0;g=d+34096|0;do{if((a[g]&1)!=0){if(Dl(d)|0){break}i=f;return}}while(0);if((a[d+34088|0]&1)==0){h=d+34092|0;j=c[h>>2]|0;j=(j|0)<32768?j:32768;a:do{if((j|0)>0){k=d+8|0;n=0;l=c[d+32784>>2]|0;while(1){m=c[k>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}a[d+16+l|0]=m;n=n+1|0;if((n|0)<(j|0)){l=l+1&32767}else{break a}}a[d+34097|0]=1;a[g]=1}else{n=0}}while(0);c[d+32788>>2]=n;s=c[h>>2]|0;c[h>>2]=s-j;if((s|0)!=(j|0)){i=f;return}a[g]=1;i=f;return}l=d+8|0;h=d+32796|0;m=c[h>>2]|0;n=d+34076|0;o=c[n>>2]|0;j=d+32792|0;b:do{if((m|0)<(o|0)){while(1){m=c[l>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}o=c[h>>2]|0;c[j>>2]=c[j>>2]|(m&255)<>2]=m;o=c[n>>2]|0;if((m|0)>=(o|0)){break b}}m=c[h>>2]|0;o=c[n>>2]|0}}while(0);n=c[j>>2]|0;o=(1<>2]|0;c:do{if((m|0)!=0){q=p+(o<<2)|0;s=b[q>>1]|0;r=s&65535;if((m|0)<(r|0)|s<<16>>16==0){break}n=n>>r;c[j>>2]=n;q=m-(e[q>>1]|0)|0;c[h>>2]=q;m=b[p+(o<<2)+2>>1]|0;if((m&65535)<256){a[d+16+(c[d+32784>>2]|0)|0]=m;c[d+32788>>2]=1;i=f;return}if(m<<16>>16==256){a[g]=1;c[d+32788>>2]=0;i=f;return}m=(m&65535)+ -257|0;o=c[44936+(m<<3)>>2]|0;if((o|0)>0){if((q|0)<(o|0)){do{n=c[l>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break c}q=c[h>>2]|0;n=c[j>>2]|(n&255)<>2]=n;q=q+8|0;c[h>>2]=q;}while((q|0)<(o|0))}p=n&(1<>o;c[j>>2]=n;q=q-o|0;c[h>>2]=q;if((p|0)==-1){break}else{o=p}}m=(c[44940+(m<<3)>>2]|0)+o|0;p=d+34084|0;r=c[p>>2]|0;d:do{if((q|0)<(r|0)){while(1){n=c[l>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}o=c[h>>2]|0;n=c[j>>2]|(n&255)<>2]=n;o=o+8|0;c[h>>2]=o;q=c[p>>2]|0;if((o|0)>=(q|0)){break d}}n=c[j>>2]|0;o=c[h>>2]|0;q=c[p>>2]|0}else{o=q;q=r}}while(0);q=(1<>2]|0;if((o|0)==0){break}s=p+(q<<2)|0;t=b[s>>1]|0;r=t&65535;if((o|0)<(r|0)|t<<16>>16==0){break}r=n>>r;c[j>>2]=r;s=o-(e[s>>1]|0)|0;c[h>>2]=s;n=e[p+(q<<2)+2>>1]|0;o=c[45184+(n<<3)>>2]|0;if((o|0)>0){if((s|0)<(o|0)){do{p=c[l>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break c}s=c[h>>2]|0;r=c[j>>2]|(p&255)<>2]=r;s=s+8|0;c[h>>2]=s;}while((s|0)<(o|0))}l=r&(1<>2]=r>>o;c[h>>2]=s-o;if((l|0)==-1){break}else{o=l}}h=c[d+32784>>2]|0;if((m|0)>0){g=h;j=h-((c[45188+(n<<3)>>2]|0)+o)|0;h=0;while(1){j=j&32767;a[d+16+g|0]=a[d+16+j|0]|0;h=h+1|0;if((h|0)<(m|0)){j=j+1|0;g=g+1&32767}else{break}}}c[d+32788>>2]=m;i=f;return}}while(0);Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,47864,k);a[d+34097|0]=1;a[g]=1;c[d+32788>>2]=0;i=f;return}function zl(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;l=i;if((e|0)<=0){i=l;return}k=b+32788|0;g=b+34096|0;j=b+34097|0;m=b+32784|0;n=0;do{o=c[k>>2]|0;a:do{if((o|0)==0){while(1){if((a[g]&1)!=0){if((a[j]&1)!=0){o=-1;break a}}yl(b);o=c[k>>2]|0;if((o|0)!=0){h=7;break}}}else{h=7}}while(0);if((h|0)==7){h=0;q=c[m>>2]|0;p=d[b+16+q|0]|0;c[m>>2]=q+1&32767;c[k>>2]=o+ -1;o=p}c[f+(n<<2)>>2]=o;n=n+1|0;}while((n|0)<(e|0));i=l;return}function Al(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=b+32788|0;j=c[f>>2]|0;a:do{if((j|0)==0){h=b+34096|0;g=b+34097|0;while(1){if((a[h]&1)!=0){if((a[g]&1)!=0){b=-1;break}}yl(b);j=c[f>>2]|0;if((j|0)!=0){break a}}i=e;return b|0}}while(0);g=b+32784|0;k=c[g>>2]|0;h=d[b+16+k|0]|0;c[g>>2]=k+1&32767;c[f>>2]=j+ -1;j=h;i=e;return j|0}function Bl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((b|0)<3){b=0;i=e;return b|0}if((c[a+12>>2]|0)!=0){b=0;i=e;return b|0}a=c[a+8>>2]|0;a=sd[c[(c[a>>2]|0)+56>>2]&127](a,b,d)|0;if((a|0)==0){b=0;i=e;return b|0}ne(ne(a,d,-1)|0,47832,-1)|0;b=a;i=e;return b|0}function Cl(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+8>>2]|0;b=Bd[c[(c[b>>2]|0)+60>>2]&255](b,1)|0;i=d;return b|0}function Dl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;e=i;i=i+8|0;f=i;i=i+8|0;h=b+34072|0;g=c[h>>2]|0;if((g|0)!=(c[11868]|0)){Fe(g)}c[h>>2]=0;j=b+34080|0;g=c[j>>2]|0;if((g|0)!=(c[11902]|0)){Fe(g)}c[j>>2]=0;g=b+32796|0;m=c[g>>2]|0;a:do{if((m|0)<3){n=b+8|0;m=b+32792|0;while(1){k=c[n>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){n=-1;k=11;break a}o=c[g>>2]|0;l=c[m>>2]|(k&255)<>2]=l;k=o+8|0;c[g>>2]=k;if((k|0)>=3){m=k;k=10;break}}}else{l=c[b+32792>>2]|0;k=10}}while(0);if((k|0)==10){n=l&7;c[b+32792>>2]=l>>3;c[g>>2]=m+ -3;if((l&1|0)!=0){k=11}}if((k|0)==11){a[b+34097|0]=1}k=n>>1;do{if((k|0)==0){a[b+34088|0]=0;j=b+8|0;k=c[j>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){k=23;break}h=b+34092|0;c[h>>2]=k&255;k=c[j>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){k=23;break}c[h>>2]=c[h>>2]|k<<8&65280;k=c[j>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){k=23;break}j=c[j>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){k=23;break}if((j<<8&65280|k&255|0)!=(c[h>>2]&65535^65535|0)){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,47904,f)}c[b+32792>>2]=0;c[g>>2]=0;k=22}else if((k|0)==1){a[b+34088|0]=1;c[h>>2]=c[11868];c[b+34076>>2]=c[47476>>2];c[j>>2]=c[11902];c[b+34084>>2]=c[47612>>2];k=22}else if((k|0)==2){a[b+34088|0]=1;if(El(b)|0){k=22}else{k=23}}else{k=23}}while(0);if((k|0)==22){a[b+34096|0]=0;o=1;i=d;return o|0}else if((k|0)==23){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,47952,e);a[b+34097|0]=1;a[b+34096|0]=1;o=0;i=d;return o|0}return 0}function El(a){a=a|0;var d=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;f=i;d=i;i=i+8|0;l=i;i=i+80|0;n=l;p=i;i=i+8|0;o=p;c[p>>2]=0;g=a+32796|0;q=c[g>>2]|0;a:do{if((q|0)<5){k=a+8|0;h=a+32792|0;while(1){j=c[k>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){p=0;break a}q=c[g>>2]|0;j=c[h>>2]|(j&255)<>2]=j;q=q+8|0;c[g>>2]=q;if((q|0)>=5){m=6;break}}}else{j=c[a+32792>>2]|0;m=6}}while(0);b:do{if((m|0)==6){h=a+32792|0;k=j>>5;c[h>>2]=k;q=q+ -5|0;c[g>>2]=q;j=(j&31)+257|0;if((q|0)<5){q=a+8|0;while(1){k=c[q>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){p=0;break b}r=c[g>>2]|0;k=c[h>>2]|(k&255)<>2]=k;r=r+8|0;c[g>>2]=r;if((r|0)>=5){s=r;break}}}else{s=q}r=k&31;q=k>>5;c[h>>2]=q;t=s+ -5|0;c[g>>2]=t;k=r+1|0;if((t|0)<4){s=a+8|0;do{q=c[s>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){p=0;break b}t=c[g>>2]|0;q=c[h>>2]|(q&255)<>2]=q;t=t+8|0;c[g>>2]=t;}while((t|0)<4)}s=q>>4;c[h>>2]=s;t=t+ -4|0;c[g>>2]=t;q=(q&15)+4|0;if(j>>>0>288|r>>>0>29|q>>>0>19){p=0;break}bX(l|0,0,76)|0;l=a+8|0;r=0;c:while(1){if((t|0)<3){do{s=c[l>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){m=18;break c}t=c[g>>2]|0;s=c[h>>2]|(s&255)<>2]=s;t=t+8|0;c[g>>2]=t;}while((t|0)<3)}u=s>>3;c[h>>2]=u;t=t+ -3|0;c[g>>2]=t;c[n+(c[44856+(r<<2)>>2]<<2)>>2]=s&7;r=r+1|0;if((r|0)<(q|0)){s=u}else{break}}if((m|0)==18){c[n+(c[44856+(r<<2)>>2]<<2)>>2]=-1;p=0;break}Fl(0,n,19,o);n=k+j|0;o=c[o+4>>2]|0;p=c[p>>2]|0;q=a+32800|0;r=0;m=0;d:while(1){while(1){s=c[g>>2]|0;e:do{if((s|0)<(o|0)){while(1){s=c[l>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}w=c[g>>2]|0;c[h>>2]=c[h>>2]|(s&255)<>2]=s;if((s|0)>=(o|0)){break e}}s=c[g>>2]|0}}while(0);w=c[h>>2]|0;t=(1<>1]|0;u=x&65535;if((s|0)<(u|0)|x<<16>>16==0){break b}u=w>>u;c[h>>2]=u;s=s-(e[v>>1]|0)|0;c[g>>2]=s;t=e[p+(t<<2)+2>>1]|0;if((t|0)==17){m=37;break}else if((t|0)==18){m=42;break}else if((t|0)!=16){m=47;break}if((s|0)<2){do{s=c[l>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break b}x=c[g>>2]|0;u=c[h>>2]|(s&255)<>2]=u;s=x+8|0;c[g>>2]=s;}while((s|0)<2)}c[h>>2]=u>>2;c[g>>2]=s+ -2;t=(u&3)+3|0;if((t+r|0)>(n|0)){break b}s=u&3;u=-3-s|0;u=r+4+((u|0)>-1?u:-1)|0;while(1){c[a+32800+(r<<2)>>2]=m;t=t+ -1|0;if((t|0)>0){r=r+1|0}else{break}}r=u+s|0;if((r|0)>=(n|0)){break d}}if((m|0)==37){if((s|0)<3){do{m=c[l>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break b}s=c[g>>2]|0;u=c[h>>2]|(m&255)<>2]=u;s=s+8|0;c[g>>2]=s;}while((s|0)<3)}c[h>>2]=u>>3;c[g>>2]=s+ -3;if(((u&7)+3+r|0)>(n|0)){break b}s=u&7;m=-3-s|0;t=(m|0)>-1?m:-1;bX(a+32800+(r<<2)|0,0,t+4+s<<2|0)|0;r=r+4+t+s|0;t=0}else if((m|0)==42){if((s|0)<7){do{m=c[l>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break b}s=c[g>>2]|0;u=c[h>>2]|(m&255)<>2]=u;s=s+8|0;c[g>>2]=s;}while((s|0)<7)}c[h>>2]=u>>7;c[g>>2]=s+ -7;if(((u&127)+11+r|0)>(n|0)){break b}m=u&127;s=-11-m|0;t=(s|0)>-1?s:-1;bX(a+32800+(r<<2)|0,0,t+12+m<<2|0)|0;r=r+12+t+m|0;t=0}else if((m|0)==47){c[a+32800+(r<<2)>>2]=t;r=r+1|0}if((r|0)<(n|0)){m=t}else{break}}Fl(0,q,j,a+34072|0);Fl(0,a+32800+(j<<2)|0,k,a+34080|0);Fe(p);x=1;i=f;return x|0}}while(0);Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,47992,d);Fe(p);x=0;i=f;return x|0}function Fl(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;a=i;h=f+4|0;c[h>>2]=0;g=(e|0)>0;if(g){k=0;j=0;do{l=c[d+(j<<2)>>2]|0;if((l|0)>(k|0)){c[h>>2]=l;k=l}j=j+1|0;}while((j|0)<(e|0))}else{k=0}j=1<>2]=k;a:do{if((j|0)>0){l=0;while(1){b[k+(l<<2)>>1]=0;b[(c[f>>2]|0)+(l<<2)+2>>1]=0;l=l+1|0;if((l|0)>=(j|0)){break a}k=c[f>>2]|0}}}while(0);m=c[h>>2]|0;if((m|0)<1){i=a;return}else{o=0;k=1;l=2}while(1){if(g){n=(k|0)>0;m=k&65535;p=0;do{if((c[d+(p<<2)>>2]|0)==(k|0)){if(n){r=0;s=0;q=o;while(1){r=q&1|r<<1;s=s+1|0;if((s|0)<(k|0)){q=q>>1}else{break}}}else{r=0}if((r|0)<(j|0)){q=p&65535;do{b[(c[f>>2]|0)+(r<<2)>>1]=m;b[(c[f>>2]|0)+(r<<2)+2>>1]=q;r=r+l|0;}while((r|0)<(j|0))}o=o+1|0}p=p+1|0;}while((p|0)<(e|0));m=c[h>>2]|0}if((k|0)<(m|0)){o=o<<1;k=k+1|0;l=l<<1}else{break}}i=a;return}function Gl(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=48040;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function Hl(a){a=a|0;var b=0;b=i;c[a>>2]=48040;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function Il(a){a=a|0;i=i;return 0}function Jl(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function Kl(a){a=a|0;i=i;return 0}function Ll(a){a=a|0;i=i;return 0}function Ml(a){a=a|0;i=i;return 0}function Nl(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=b+300|0;h=c[f>>2]|0;g=b+304|0;j=c[g>>2]|0;do{if(h>>>0>=j>>>0){h=b+41|0;k=b+308|0;j=(c[k>>2]|0)+(j-h)|0;c[k>>2]=j;c[g>>2]=h;c[f>>2]=h;do{if((a[b+40|0]&1)==0){j=256}else{k=(c[b+8>>2]|0)+(c[b+36>>2]|0)|0;if(j>>>0>>0){j=(j+256|0)>>>0>k>>>0?k-j|0:256;break}else{k=-1;i=e;return k|0}}}while(0);k=b+41+(Ta(h|0,1,j|0,c[b+32>>2]|0)|0)|0;c[g>>2]=k;h=c[f>>2]|0;if(h>>>0>>0){break}else{f=-1}i=e;return f|0}}while(0);c[f>>2]=h+1;k=d[h]|0;i=e;return k|0}function Ol(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;g=b+300|0;h=c[g>>2]|0;f=b+304|0;j=c[f>>2]|0;do{if(h>>>0>=j>>>0){h=b+41|0;k=b+308|0;j=(c[k>>2]|0)+(j-h)|0;c[k>>2]=j;c[f>>2]=h;c[g>>2]=h;do{if((a[b+40|0]&1)==0){j=256}else{k=(c[b+8>>2]|0)+(c[b+36>>2]|0)|0;if(j>>>0>>0){j=(j+256|0)>>>0>k>>>0?k-j|0:256;break}else{k=-1;i=e;return k|0}}}while(0);k=b+41+(Ta(h|0,1,j|0,c[b+32>>2]|0)|0)|0;c[f>>2]=k;h=c[g>>2]|0;if(h>>>0>>0){break}else{b=-1}i=e;return b|0}}while(0);k=d[h]|0;i=e;return k|0}function Pl(a){a=a|0;var b=0;b=i;a=jd[c[(c[a>>2]|0)+20>>2]&511](a)|0;i=b;return a|0}function Ql(a){a=a|0;var b=0;b=i;fd[c[(c[a>>2]|0)+12>>2]&511](a);i=b;return}function Rl(a){a=a|0;i=i;return(c[a+308>>2]|0)-(a+41)+(c[a+300>>2]|0)|0}function Sl(a,b){a=a|0;b=b|0;i=i;return b|0}function Tl(a){a=a|0;i=i;return a|0}function Ul(a){a=a|0;i=i;return a|0}function Vl(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;e=i;i=i+8|0;d=e;f=c[a+16>>2]|0;if((f|0)==7){i=b;return c[a+24>>2]|0}else{c[e>>2]=f;c[d+4>>2]=7;Qe(0,48632,d);tc()}return 0}function Wl(a){a=a|0;i=i;return-1}function Xl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;h=b+36|0;if((d|0)<=0){r=d;i=f;return r|0}j=b+300|0;m=b+304|0;k=b+41|0;o=b+308|0;g=b+40|0;l=b+32|0;n=b+8|0;p=0;while(1){r=c[j>>2]|0;q=c[m>>2]|0;if(r>>>0>=q>>>0){q=(c[o>>2]|0)+(q-k)|0;c[o>>2]=q;c[m>>2]=k;c[j>>2]=k;if((a[g]&1)==0){q=256}else{r=(c[n>>2]|0)+(c[h>>2]|0)|0;if(q>>>0>=r>>>0){d=p;g=9;break}q=(q+256|0)>>>0>r>>>0?r-q|0:256}q=b+41+(Ta(k|0,1,q|0,c[l>>2]|0)|0)|0;c[m>>2]=q;r=c[j>>2]|0;if(r>>>0>=q>>>0){d=p;g=9;break}}c[j>>2]=r+1;a[e+p|0]=a[r]|0;p=p+1|0;if((p|0)>=(d|0)){g=9;break}}if((g|0)==9){i=f;return d|0}return 0}function Yl(a){a=a|0;i=i;return 0}function Zl(a){a=a|0;i=i;return c[a+8>>2]|0}function _l(a){a=a|0;i=i;return c[a+36>>2]|0}function $l(a){a=a|0;i=i;return 1}function am(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=b+1068|0;j=c[f>>2]|0;g=b+1072|0;k=c[g>>2]|0;do{if(j>>>0>=k>>>0){j=b+41|0;l=b+1076|0;k=(c[l>>2]|0)+(k-j)|0;c[l>>2]=k;c[g>>2]=j;c[f>>2]=j;do{if((a[b+40|0]&1)==0){h=6}else{l=(c[b+8>>2]|0)+(c[b+36>>2]|0)|0;if(k>>>0>=l>>>0){l=-1;i=e;return l|0}if((k+1024|0)>>>0<=l>>>0){h=6;break}k=l-k|0}}while(0);if((h|0)==6){k=1024-(k&1023)|0}Ut(c[b+32>>2]|0,j,1,k)|0;l=b+41+k|0;c[g>>2]=l;j=c[f>>2]|0;if(j>>>0>>0){break}else{f=-1}i=e;return f|0}}while(0);c[f>>2]=j+1;l=d[j]|0;i=e;return l|0}function bm(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;g=b+1068|0;j=c[g>>2]|0;f=b+1072|0;k=c[f>>2]|0;do{if(j>>>0>=k>>>0){j=b+41|0;l=b+1076|0;k=(c[l>>2]|0)+(k-j)|0;c[l>>2]=k;c[f>>2]=j;c[g>>2]=j;do{if((a[b+40|0]&1)==0){h=6}else{l=(c[b+8>>2]|0)+(c[b+36>>2]|0)|0;if(k>>>0>=l>>>0){l=-1;i=e;return l|0}if((k+1024|0)>>>0<=l>>>0){h=6;break}k=l-k|0}}while(0);if((h|0)==6){k=1024-(k&1023)|0}Ut(c[b+32>>2]|0,j,1,k)|0;l=b+41+k|0;c[f>>2]=l;j=c[g>>2]|0;if(j>>>0>>0){break}else{b=-1}i=e;return b|0}}while(0);l=d[j]|0;i=e;return l|0}function cm(a){a=a|0;var b=0;b=i;a=jd[c[(c[a>>2]|0)+20>>2]&511](a)|0;i=b;return a|0}function dm(a){a=a|0;var b=0;b=i;fd[c[(c[a>>2]|0)+12>>2]&511](a);i=b;return}function em(a){a=a|0;i=i;return(c[a+1076>>2]|0)-(a+41)+(c[a+1068>>2]|0)|0}function fm(a){a=a|0;i=i;return c[a+36>>2]|0}function gm(a){a=a|0;i=i;return 11}function hm(a){a=a|0;var b=0,e=0,f=0;b=i;f=a+44|0;e=c[f>>2]|0;if(e>>>0>=(c[a+40>>2]|0)>>>0){f=-1;i=b;return f|0}c[f>>2]=e+1;f=d[e]|0;i=b;return f|0}function im(a){a=a|0;var b=0,e=0;b=i;e=c[a+44>>2]|0;if(e>>>0>=(c[a+40>>2]|0)>>>0){e=-1;i=b;return e|0}e=d[e]|0;i=b;return e|0}function jm(a){a=a|0;var b=0;b=i;a=jd[c[(c[a>>2]|0)+20>>2]&511](a)|0;i=b;return a|0}function km(a){a=a|0;var b=0;b=i;fd[c[(c[a>>2]|0)+12>>2]&511](a);i=b;return}function lm(a){a=a|0;i=i;return(c[a+44>>2]|0)-(c[a+32>>2]|0)|0}function mm(a){a=a|0;i=i;return c[a+36>>2]|0}function nm(b,c){b=b|0;c=c|0;a[b+48|0]=c&1;i=i;return}function om(a){a=a|0;i=i;return 2}function pm(a){a=a|0;var b=0,d=0;d=i;b=jd[c[(c[a>>2]|0)+24>>2]&511](a)|0;c[a+12>>2]=-1;i=d;return b|0}function qm(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;a=jd[c[(c[a>>2]|0)+36>>2]&511](a)|0;i=b;return a|0}function rm(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;fd[c[(c[a>>2]|0)+40>>2]&511](a);i=b;return}function sm(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;a=jd[c[(c[a>>2]|0)+48>>2]&511](a)|0;i=b;return a|0}function tm(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;a=jd[c[(c[a>>2]|0)+64>>2]&511](a)|0;i=b;return a|0}function um(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;a=jd[c[(c[a>>2]|0)+68>>2]&511](a)|0;i=b;return a|0}function vm(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;a=jd[c[(c[a>>2]|0)+72>>2]&511](a)|0;i=b;return a|0}function wm(a){a=a|0;i=i;return c[a+8>>2]|0}function xm(a){a=a|0;i=i;return 3}function ym(a){a=a|0;var b=0,d=0;d=i;b=jd[c[(c[a>>2]|0)+24>>2]&511](a)|0;a=a+48|0;c[a>>2]=(c[a>>2]|0)+1;i=d;return b|0}function zm(a){a=a|0;i=i;return 6}function Am(a){a=a|0;var b=0,d=0;d=i;b=jd[c[(c[a>>2]|0)+24>>2]&511](a)|0;c[a+64>>2]=-1;i=d;return b|0}function Bm(a){a=a|0;i=i;return 11}function Cm(a){a=a|0;i=i;return}function Dm(a){a=a|0;i=i;return-1}function Em(a){a=a|0;i=i;return-1}function Fm(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function Gm(a,b){a=a|0;b=b|0;i=i;return 0}function Hm(a){a=a|0;i=i;return 4}function Im(a){a=a|0;i=i;return 5}function Jm(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;f=i;e=b+140|0;h=c[e>>2]|0;g=b+144|0;if(h>>>0>=(c[g>>2]|0)>>>0){j=b+148|0;if((a[j]&1)!=0){k=-1;i=f;return k|0}h=b+8|0;k=c[h>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==128|(k|0)==-1){a[j]=1;k=-1;i=f;return k|0}do{if((k|0)<128){j=k+1|0;if((k|0)>-1){k=0}else{break}while(1){l=c[h>>2]|0;a[b+12+k|0]=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;k=k+1|0;if((k|0)<(j|0)){}else{break}}}else{j=257-k|0;h=c[h>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((j|0)<=0){break}bX(b+12|0,h&255|0,j|0)|0}}while(0);h=b+12|0;c[e>>2]=h;c[g>>2]=b+12+j}c[e>>2]=h+1;l=d[h]|0;i=f;return l|0}function Km(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=b+140|0;h=c[f>>2]|0;g=b+144|0;if(h>>>0>=(c[g>>2]|0)>>>0){j=b+148|0;if((a[j]&1)!=0){k=-1;i=e;return k|0}h=b+8|0;k=c[h>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==128|(k|0)==-1){a[j]=1;k=-1;i=e;return k|0}do{if((k|0)<128){j=k+1|0;if((k|0)>-1){k=0}else{break}while(1){l=c[h>>2]|0;a[b+12+k|0]=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;k=k+1|0;if((k|0)<(j|0)){}else{break}}}else{j=257-k|0;h=c[h>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((j|0)<=0){break}bX(b+12|0,h&255|0,j|0)|0}}while(0);h=b+12|0;c[f>>2]=h;c[g>>2]=b+12+j}l=d[h]|0;i=e;return l|0}function Lm(a){a=a|0;i=i;return 7}function Mm(a){a=a|0;i=i;return 8}function Nm(a){a=a|0;i=i;return-1}function Om(a){a=a|0;var b=0;b=i;a=c[a+32>>2]|0;a=jd[c[(c[a>>2]|0)+8>>2]&511](a)|0;i=b;return a|0}function Pm(a){a=a|0;i=i;return}function Qm(a){a=a|0;var b=0;b=i;a=c[a+32>>2]|0;a=jd[c[(c[a>>2]|0)+36>>2]&511](a)|0;i=b;return a|0}function Rm(a){a=a|0;var b=0;b=i;a=c[a+32>>2]|0;fd[c[(c[a>>2]|0)+40>>2]&511](a);i=b;return}function Sm(a){a=a|0;var b=0;b=i;a=c[a+32>>2]|0;a=jd[c[(c[a>>2]|0)+48>>2]&511](a)|0;i=b;return a|0}function Tm(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;j=FW(32)|0;fe(j,d);c[b>>2]=j;a[b+8|0]=e&1;c[b+4>>2]=1;c[b+12>>2]=f;c[b+16>>2]=g;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=1;ad(b+32|0,0)|0;i=h;return}function Um(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=FW(32)|0;fe(h,d);c[b>>2]=h;a[b+8|0]=e&1;c[b+4>>2]=2;c[b+12>>2]=f;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=1;ad(b+32|0,0)|0;i=g;return}function Vm(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;if((d|0)!=0){ke(d);HW(d)}do{if((c[a+4>>2]|0)==0){d=c[a+12>>2]|0;if((d|0)==0){break}Fe(d)}}while(0);d=c[a+20>>2]|0;if((d|0)==0){d=a+32|0;kc(d|0)|0;i=b;return}Fe(d);d=a+32|0;kc(d|0)|0;i=b;return}function Wm(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+32|0;Ub(d|0)|0;f=a+28|0;e=(c[f>>2]|0)+ -1|0;c[f>>2]=e;Mc(d|0)|0;if((e|0)!=0|(a|0)==0){i=b;return}e=c[a>>2]|0;if((e|0)!=0){ke(e);HW(e)}do{if((c[a+4>>2]|0)==0){e=c[a+12>>2]|0;if((e|0)==0){break}Fe(e)}}while(0);e=c[a+20>>2]|0;if((e|0)!=0){Fe(e)}kc(d|0)|0;HW(a);i=b;return}function Xm(a){a=a|0;var b=0;b=i;bX(a|0,0,16)|0;i=b;return}function Ym(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;if((d|0)!=0){Wm(d)}d=c[a+4>>2]|0;if((d|0)!=0){Wm(d)}d=c[a+8>>2]|0;if((d|0)!=0){Wm(d)}a=c[a+12>>2]|0;if((a|0)==0){i=b;return}Wm(a);i=b;return}function Zm(b,d,e){b=b|0;d=d|0;e=e|0;var 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,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;g=i;h=i;i=i+8|0;j=h;s=i;i=i+8|0;t=s;v=i;i=i+8|0;w=v;A=i;i=i+8|0;B=A;C=i;i=i+8|0;D=C;E=i;i=i+8|0;F=i;i=i+8|0;G=F;I=i;i=i+8|0;H=I;J=i;i=i+8|0;K=J;L=i;i=i+8|0;M=L;p=i;i=i+16|0;r=p;o=i;i=i+16|0;n=o;y=i;i=i+16|0;u=y;c[p>>2]=13;l=r+8|0;c[l>>2]=0;c[l+4>>2]=0;c[o>>2]=13;m=n+8|0;c[m>>2]=0;f=m+4|0;c[f>>2]=0;c[y>>2]=13;x=u+8|0;c[x>>2]=0;c[x+4>>2]=0;c[b>>2]=e;q=b+4|0;k=b+8|0;z=b+12|0;b=b+16|0;bX(q|0,0,13)|0;if((c[(_m(d,e,0,r,0)|0)>>2]|0)!=8){Of(r);i=g;return}e=c[p>>2]|0;if((e|0)!=8){c[L>>2]=e;c[M+4>>2]=8;Qe(0,49608,M);tc()}e=c[l>>2]|0;if((c[(Yu(jd[c[(c[e>>2]|0)+72>>2]&511](e)|0,48768,n,0)|0)>>2]|0)!=1){Of(n);Of(r);i=g;return}L=c[o>>2]|0;if((L|0)!=1){c[J>>2]=L;c[K+4>>2]=1;Qe(0,49608,K);tc()}c[q>>2]=c[m>>2];Of(n);if((c[q>>2]|0)<1){Of(r);i=g;return}J=c[p>>2]|0;if((J|0)!=8){c[I>>2]=J;c[H+4>>2]=8;Qe(0,49608,H);tc()}e=c[l>>2]|0;if((c[(Yu(jd[c[(c[e>>2]|0)+72>>2]&511](e)|0,48776,n,0)|0)>>2]|0)!=1){Of(n);Of(r);i=g;return}H=c[o>>2]|0;if((H|0)!=1){c[F>>2]=H;c[G+4>>2]=1;Qe(0,49608,G);tc()}F=c[m>>2]|0;Of(n);if((F|0)<0){Of(r);i=g;return}G=c[q>>2]|0;if((G|0)>1e6){Qe(-1,48784,E);Of(r);i=g;return}E=GW(G>>>0>268435455?-1:G<<4)|0;if((G|0)==0){G=0}else{G=E+(G<<4)|0;H=E;do{c[H>>2]=13;e=H+8|0;c[e>>2]=0;c[e+4>>2]=0;H=H+16|0;}while((H|0)!=(G|0));G=c[q>>2]|0}c[k>>2]=E;c[z>>2]=ye(G,4)|0;E=ye(c[q>>2]|0,4)|0;G=c[p>>2]|0;if((G|0)!=8){c[C>>2]=G;c[D+4>>2]=8;Qe(0,49608,D);tc()}C=c[l>>2]|0;fd[c[(c[C>>2]|0)+12>>2]&511](C);c[m>>2]=0;c[f>>2]=0;c[o>>2]=5;C=FW(40)|0;D=c[p>>2]|0;if((D|0)!=8){c[A>>2]=D;c[B+4>>2]=8;Qe(0,49608,B);tc()}$j(C,c[l>>2]|0,n,1,F);A=FW(56)|0;e=FW(168)|0;bE(e,d,C);aG(A,d,e,0);a:do{if((c[q>>2]|0)>0){B=0;while(1){cG(A,n,0,0,0,0,0)|0;cG(A,u,0,0,0,0,0)|0;if((c[o>>2]|0)!=1){x=31;break}if((c[y>>2]|0)!=1){x=31;break}c[(c[z>>2]|0)+(B<<2)>>2]=c[m>>2];D=c[y>>2]|0;if((D|0)!=1){x=35;break}D=E+(B<<2)|0;c[D>>2]=c[x>>2];Of(n);Of(u);if((c[(c[z>>2]|0)+(B<<2)>>2]|0)<0){x=40;break}D=c[D>>2]|0;if((D|0)<0){x=40;break}if((B|0)>0){if((D|0)<(c[E+(B+ -1<<2)>>2]|0)){x=40;break}}B=B+1|0;if((B|0)>=(c[q>>2]|0)){break a}}if((x|0)==31){Of(n);Of(u);if((A|0)!=0){bG(A);HW(A)}Fe(E);Of(r);i=g;return}else if((x|0)==35){c[v>>2]=D;c[w+4>>2]=1;Qe(0,49608,w);tc()}else if((x|0)==40){if((A|0)!=0){bG(A);HW(A)}Fe(E);Of(r);i=g;return}}}while(0);do{}while((jd[c[(c[C>>2]|0)+20>>2]&511](C)|0)!=-1);if((A|0)!=0){bG(A);HW(A)}b:do{if((F|0)<(c[E>>2]|0)){while(1){u=c[p>>2]|0;if((u|0)!=8){break}e=c[l>>2]|0;jd[c[(c[e>>2]|0)+20>>2]&511](e)|0;F=F+1|0;if((F|0)>=(c[E>>2]|0)){break b}}c[s>>2]=u;c[t+4>>2]=8;Qe(0,49608,t);tc()}}while(0);u=c[q>>2]|0;c:do{if((u|0)>0){s=0;while(1){c[m>>2]=0;c[f>>2]=0;c[o>>2]=5;t=FW(40)|0;v=c[p>>2]|0;if((v|0)!=8){break}v=c[l>>2]|0;if((s|0)==(u+ -1|0)){$j(t,v,n,0,0)}else{$j(t,v,n,1,(c[E+(s+1<<2)>>2]|0)-(c[E+(s<<2)>>2]|0)|0)}u=FW(56)|0;e=FW(168)|0;bE(e,d,t);aG(u,d,e,0);cG(u,(c[k>>2]|0)+(s<<4)|0,0,0,0,0,0)|0;do{}while((jd[c[(c[t>>2]|0)+20>>2]&511](t)|0)!=-1);if((u|0)!=0){bG(u);HW(u)}s=s+1|0;u=c[q>>2]|0;if((s|0)>=(u|0)){break c}}c[h>>2]=v;c[j+4>>2]=8;Qe(0,49608,j);tc()}}while(0);Fe(E);a[b]=1;Of(r);i=g;return}function _m(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;h=i;p=i;i=i+8|0;n=p;D=i;i=i+8|0;E=D;l=i;i=i+8|0;j=l;y=i;i=i+16|0;r=y;u=i;i=i+16|0;s=u;w=i;i=i+16|0;o=w;q=i;i=i+8|0;t=q;B=i;i=i+8|0;z=B;c[l>>2]=d;c[y>>2]=13;A=r+8|0;c[A>>2]=0;C=A+4|0;c[C>>2]=0;c[u>>2]=13;v=s+8|0;c[v>>2]=0;c[v+4>>2]=0;c[w>>2]=13;x=o+8|0;c[x>>2]=0;c[x+4>>2]=0;a:do{if((d|0)>=0){if((c[b+16>>2]|0)<=(d|0)){break}m=(g|0)==0;do{if(!m){F=g+4|0;I=c[F>>2]|0;if((I|0)==0){break}else{G=F}b:while(1){H=I;while(1){if((c[H+16>>2]|0)>=(d|0)){break}H=c[H+4>>2]|0;if((H|0)==0){break b}}I=c[H>>2]|0;if((I|0)==0){G=H;break}else{G=H}}if((G|0)==(F|0)){break}if((c[G+16>>2]|0)<=(d|0)){break a}}}while(0);F=kn(b,d)|0;d=F+16|0;if((c[d>>2]|0)!=5){I=Mf(d,f)|0;i=h;return I|0}if(m){g=FW(12)|0;m=g+4|0;c[m>>2]=0;c[g+8>>2]=0;c[g>>2]=m;m=1}else{m=0}tn(E,g,j);j=c[D>>2]|0;D=c[F+8>>2]|0;c:do{if((D|0)==2){if((e|0)!=0){k=66;break}o=c[F>>2]|0;c[B>>2]=49744;c[z+4>>2]=o;o=b+64|0;n=lG(c[o>>2]|0,z)|0;if((n|0)==0){k=41}else{n=c[n+4>>2]|0;if((n|0)==0){k=41}}do{if((k|0)==41){n=FW(20)|0;Zm(n,b,c[F>>2]|0);if((a[n+16|0]&1)!=0){H=FW(8)|0;I=c[F>>2]|0;c[H>>2]=49744;c[H+4>>2]=I;I=FW(8)|0;c[I>>2]=49688;c[I+4>>2]=n;mG(c[o>>2]|0,H,I);break}if((n|0)!=0){k=n+8|0;o=c[k>>2]|0;do{if((o|0)!=0){l=n+4|0;if((c[l>>2]|0)>0){b=0;do{Of(o+(b<<4)|0);b=b+1|0;o=c[k>>2]|0;}while((b|0)<(c[l>>2]|0));if((o|0)==0){break}}IW(o)}}while(0);Fe(c[n+12>>2]|0);HW(n)}k=66;break c}}while(0);b=c[F+4>>2]|0;l=c[l>>2]|0;do{if((b|0)<0){k=53}else{if((c[n+4>>2]|0)<=(b|0)){k=53;break}if((c[(c[n+12>>2]|0)+(b<<2)>>2]|0)!=(l|0)){k=53;break}Mf((c[n+8>>2]|0)+(b<<4)|0,f)|0}}while(0);if((k|0)==53){I=f+8|0;c[I>>2]=0;c[I+4>>2]=0;c[f>>2]=5}}else if((D|0)==1){if((c[F+4>>2]|0)!=(e|0)){k=66;break}c[A>>2]=0;c[C>>2]=0;c[y>>2]=5;z=FW(56)|0;I=FW(168)|0;H=c[b>>2]|0;bE(I,b,Cd[c[(c[H>>2]|0)+96>>2]&63](H,(c[F>>2]|0)+(c[b+4>>2]|0)|0,0,0,r)|0);aG(z,b,I,1);eG(z,r,g)|0;eG(z,s,g)|0;eG(z,o,g)|0;do{if((c[y>>2]|0)==1){y=c[A>>2]|0;l=(y|0)==(c[l>>2]|0);if(!l){break}if((c[u>>2]|0)!=1){break}if((c[v>>2]|0)==(e|0)){do{if((c[w>>2]|0)==10){if((Qc(c[x>>2]|0,48880)|0)!=0){break}dG(z,f,(a[b+68|0]&1)==0?0:b+92|0,c[b+80>>2]|0,c[b+84>>2]|0,y,e,g)|0;Of(r);Of(s);Of(o);if((z|0)==0){break c}bG(z);HW(z);break c}}while(0);if(!l){break}}if((c[u>>2]|0)!=1){break}if((c[v>>2]|0)!=(e|0)){break}if((c[w>>2]|0)!=10){break}l=c[x>>2]|0;if((ZW(l|0)|0)>>>0<=3){break}if((a[l]|0)!=111){break}if((a[l+1|0]|0)!=98){break}if((a[l+2|0]|0)!=106){break}b=Bb(l+3|0,t|0,0)|0;if((a[c[q>>2]|0]|0)!=0){break}c[p>>2]=l;c[n+4>>2]=b;Qe(-1,49264,n);I=f+8|0;c[I+4>>2]=0;c[f>>2]=1;c[I>>2]=b;Of(r);Of(s);Of(o);if((z|0)==0){break c}bG(z);HW(z);break c}}while(0);Of(r);Of(s);Of(o);if((z|0)==0){k=66;break}bG(z);HW(z);k=66}else{k=66}}while(0);if((k|0)==66){if(m){if((g|0)==0){break}xn(g,c[g+4>>2]|0);HW(g);break}k=c[j+4>>2]|0;if((k|0)==0){k=j;while(1){l=c[k+8>>2]|0;if((k|0)==(c[l>>2]|0)){k=l;break}else{k=l}}}else{while(1){l=c[k>>2]|0;if((l|0)==0){break}else{k=l}}}if((c[g>>2]|0)==(j|0)){c[g>>2]=k}I=g+8|0;c[I>>2]=(c[I>>2]|0)+ -1;sn(c[g+4>>2]|0,j);HW(j);break}if(m){if((g|0)==0){I=f;i=h;return I|0}xn(g,c[g+4>>2]|0);HW(g);I=f;i=h;return I|0}l=c[j+4>>2]|0;if((l|0)==0){l=j;while(1){k=c[l+8>>2]|0;if((l|0)==(c[k>>2]|0)){break}else{l=k}}}else{while(1){k=c[l>>2]|0;if((k|0)==0){k=l;break}else{l=k}}}if((c[g>>2]|0)==(j|0)){c[g>>2]=k}I=g+8|0;c[I>>2]=(c[I>>2]|0)+ -1;sn(c[g+4>>2]|0,j);HW(j);I=f;i=h;return I|0}}while(0);I=f+8|0;c[I>>2]=0;c[I+4>>2]=0;c[f>>2]=5;I=f;i=h;return I|0}function $m(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=a+8|0;g=c[d>>2]|0;do{if((g|0)!=0){e=a+4|0;if((c[e>>2]|0)>0){f=0;do{Of(g+(f<<4)|0);f=f+1|0;g=c[d>>2]|0;}while((f|0)<(c[e>>2]|0));if((g|0)==0){break}}IW(g)}}while(0);Fe(c[a+12>>2]|0);i=b;return}function an(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;j=i;m=i;i=i+8|0;k=m;t=i;i=i+8|0;n=t;x=i;i=i+8|0;w=x;B=i;i=i+8|0;z=i;i=i+8|0;A=z;s=i;i=i+16|0;r=s;D=i;i=i+16|0;C=D;o=b+40|0;c[o>>2]=13;l=b+48|0;c[l>>2]=0;c[l+4>>2]=0;c[s>>2]=13;q=r+8|0;c[q>>2]=0;u=q+4|0;c[u>>2]=0;p=b+28|0;a[p]=1;v=b+32|0;c[v>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;y=b+16|0;c[y>>2]=0;c[b+56>>2]=0;c[b+60>>2]=0;E=FW(16)|0;jG(E,5);c[b+64>>2]=E;a[b+120|0]=0;c[b+116>>2]=f;a[b+68|0]=0;c[b+88>>2]=65532;a[b+108|0]=0;c[b>>2]=d;c[b+4>>2]=jd[c[(c[d>>2]|0)+108>>2]&511](d)|0;f=b+112|0;c[f>>2]=e;do{if(h){E=bn(b,g)|0;a[p]=E&1;if(E){e=c[f>>2]|0;break}c[v>>2]=3;i=j;return}}while(0);do{if((e|0)==0){E=bn(b,g)|0;a[p]=E&1;if(E){break}c[v>>2]=3;i=j;return}else{c[D>>2]=0;e=C+4|0;c[e>>2]=0;c[C+8>>2]=0;cn(b,f,C)|0;do{if((a[p]&1)==0){E=bn(b,g)|0;a[p]=E&1;if(E){break}c[v>>2]=3;k=c[D>>2]|0;if((k|0)==0){i=j;return}l=c[e>>2]|0;if((k|0)!=(l|0)){c[e>>2]=l+(~((l+ -4+(0-k)|0)>>>2)<<2)}HW(k);i=j;return}}while(0);C=c[D>>2]|0;if((C|0)==0){break}D=c[e>>2]|0;if((C|0)!=(D|0)){c[e>>2]=D+(~((D+ -4+(0-C)|0)>>>2)<<2)}HW(C)}}while(0);C=c[o>>2]|0;if((C|0)!=7){c[z>>2]=C;c[A+4>>2]=7;Qe(0,49608,A);tc()}Zu(c[l>>2]|0,48824,r)|0;do{if((c[s>>2]|0)==1){z=c[q>>2]|0;if((z|0)<=(c[y>>2]|0)){break}z=dn(b,z)|0;y=c[s>>2]|0;if((y|0)!=1){c[x>>2]=y;c[w+4>>2]=1;Qe(0,49608,w);tc()}if((z|0)==(c[q>>2]|0)){break}E=bn(b,g)|0;a[p]=E&1;if(E){break}Of(r);c[v>>2]=3;i=j;return}else{Qe(-1,48832,B)}}while(0);Of(r);w=c[o>>2]|0;if((w|0)!=7){c[t>>2]=w;c[n+4>>2]=7;Qe(0,49608,n);tc()}Zu(c[l>>2]|0,48864,r)|0;do{if((c[s>>2]|0)==9){c[b+20>>2]=c[q>>2];c[b+24>>2]=c[u>>2];Of(r)}else{Of(r);E=bn(b,g)|0;a[p]=E&1;if(E){break}c[v>>2]=3;i=j;return}}while(0);n=c[o>>2]|0;if((n|0)!=7){c[m>>2]=n;c[k+4>>2]=7;Qe(0,49608,k);tc()}c[(c[l>>2]|0)+4>>2]=b;i=j;return}function bn(b,d){b=b|0;d=d|0;var 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,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;e=i;j=i;i=i+8|0;h=i;i=i+8|0;g=i;i=i+8|0;f=i;i=i+8|0;n=i;i=i+8|0;m=i;i=i+16|0;r=m;l=i;i=i+16|0;s=l;q=i;i=i+256|0;v=q;c[m>>2]=13;k=r+8|0;c[k>>2]=0;c[k+4>>2]=0;c[l>>2]=13;t=s+8|0;c[t>>2]=0;u=t+4|0;c[u>>2]=0;o=b+8|0;Fe(c[o>>2]|0);c[b+12>>2]=0;p=b+16|0;c[p>>2]=0;c[o>>2]=0;Qe(-1,49048,n);n=b+60|0;c[n>>2]=0;if((d|0)!=0){a[d]=1}B=c[b>>2]|0;fd[c[(c[B>>2]|0)+12>>2]&511](B);B=c[b>>2]|0;B=jd[c[(c[B>>2]|0)+48>>2]&511](B)|0;L=c[b>>2]|0;do{if((sd[c[(c[L>>2]|0)+44>>2]&127](L,v,256)|0)!=0){w=b+20|0;x=b+24|0;d=b+40|0;z=b+4|0;y=b+56|0;D=0;G=0;a:while(1){A=a[q]|0;b:do{if(A<<24>>24==0){A=0;H=1;I=v}else{I=v;while(1){C=I+1|0;if(!(hE(A&255)|0)){A=0;H=1;break b}A=a[C]|0;if(A<<24>>24==0){A=0;H=1;I=C;break}else{I=C}}}}while(0);c:while(1){C=B+7|0;do{E=nb(I|0,49112)|0;F=(E|0)!=0;if(!(F|H)){break c}if(F){a[E]=0;A=E-I|0;H=1}else{H=0}d:do{if((vc(I|0,48888,7)|0)==0){c[t>>2]=0;c[u>>2]=0;c[l>>2]=5;J=FW(56)|0;L=FW(168)|0;K=c[b>>2]|0;bE(L,0,Cd[c[(c[K>>2]|0)+96>>2]&63](K,C,0,0,s)|0);aG(J,0,L,0);cG(J,r,0,0,0,0,0)|0;if((c[m>>2]|0)==7){Zu(c[k>>2]|0,48864,s)|0;if((c[l>>2]|0)==9){c[w>>2]=c[t>>2];c[x>>2]=c[u>>2];if((c[d>>2]|0)!=13){Of(d)}Mf(r,d)|0;D=1}Of(s)}Of(r);if((J|0)==0){break}bG(J);HW(J)}else{if(((a[I]|0)+ -48|0)>>>0>=10){if((vc(I|0,49176,9)|0)!=0){break}K=c[n>>2]|0;if((K|0)==(G|0)){G=G+64|0;if((G|0)>536870910){k=49;break a}J=Ce(c[y>>2]|0,G,4)|0;c[y>>2]=J;K=c[n>>2]|0}else{J=c[y>>2]|0}c[n>>2]=K+1;c[J+(K<<2)>>2]=B;break}J=ec(I|0)|0;if((J|0)<=0){break}do{I=I+1|0;L=a[I]|0;K=L<<24>>24;if(L<<24>>24==0){break}}while((K+ -48|0)>>>0<10);if((xc(K|0)|0)==0){break}do{I=I+1|0;K=a[I]|0;if(K<<24>>24==0){break d}}while((xc(K<<24>>24|0)|0)!=0);if(((a[I]|0)+ -48|0)>>>0>=10){break}K=ec(I|0)|0;do{I=I+1|0;M=a[I]|0;L=M<<24>>24;if(M<<24>>24==0){break}}while((L+ -48|0)>>>0<10);if((xc(L|0)|0)==0){break}do{I=I+1|0;L=a[I]|0;if(L<<24>>24==0){break}}while((xc(L<<24>>24|0)|0)!=0);if((vc(I|0,48880,3)|0)!=0){break}if((J|0)>=(c[p>>2]|0)){L=J+256&-256;if((L|0)<0){k=39;break a}if((dn(b,L)|0)!=(L|0)){k=41;break a}}L=c[o>>2]|0;if((c[L+(J<<5)+8>>2]|0)!=0){if((K|0)<(c[L+(J<<5)+4>>2]|0)){break}}c[L+(J<<5)>>2]=B-(c[z>>2]|0);c[(c[o>>2]|0)+(J<<5)+4>>2]=K;c[(c[o>>2]|0)+(J<<5)+8>>2]=1}}while(0);H=H<<24>>24!=0}while(!F);I=E+6|0;B=B+6+A|0;C=a[I]|0;if(C<<24>>24==0){continue}while(1){if(!(hE(C&255)|0)){continue c}I=I+1|0;B=B+1|0;C=a[I]|0;if(C<<24>>24==0){continue c}}}B=c[b>>2]|0;B=jd[c[(c[B>>2]|0)+48>>2]&511](B)|0;M=c[b>>2]|0;if((sd[c[(c[M>>2]|0)+44>>2]&127](M,v,256)|0)==0){k=56;break}}if((k|0)==39){Qe(-1,49120,f);M=0;i=e;return M|0}else if((k|0)==41){Qe(-1,49144,g);M=0;i=e;return M|0}else if((k|0)==49){Qe(-1,49192,h);M=0;i=e;return M|0}else if((k|0)==56){if(D){f=1}else{break}i=e;return f|0}}}while(0);Qe(-1,49224,j);M=0;i=e;return M|0}function cn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;l=i;i=i+8|0;m=l;n=i;i=i+16|0;j=n;k=j+8|0;c[k>>2]=0;c[k+4>>2]=0;c[n>>2]=5;f=FW(56)|0;o=FW(168)|0;p=c[b>>2]|0;bE(o,0,Cd[c[(c[p>>2]|0)+96>>2]&63](p,(c[d>>2]|0)+(c[b+4>>2]|0)|0,0,0,j)|0);aG(f,0,o,1);cG(f,j,0,0,0,0,0)|0;o=c[n>>2]|0;do{if((o|0)==1){Of(j);if((c[(cG(f,j,0,0,0,0,0)|0)>>2]|0)!=1){h=15;break}Of(j);o=cG(f,j,0,0,0,0,0)|0;if((c[o>>2]|0)!=10){h=15;break}if((Qc(c[o+8>>2]|0,48880)|0)!=0){h=15;break}Of(j);if((c[(cG(f,j,0,0,0,0,0)|0)>>2]|0)!=8){h=15;break}if((c[b+40>>2]|0)==13){a[b+120|0]=1}n=c[n>>2]|0;if((n|0)==8){b=gn(b,c[k>>2]|0,d)|0;Of(j);h=13;break}else{c[l>>2]=n;c[m+4>>2]=8;Qe(0,49608,m);tc()}}else if((o|0)==10){if((Qc(c[k>>2]|0,48872)|0)!=0){h=15;break}Of(j);b=fn(b,f,d,e)|0;h=13}else{h=15}}while(0);if((h|0)==13){if((f|0)==0){p=b;i=g;return p|0}bG(f);HW(f);p=b;i=g;return p|0}else if((h|0)==15){Of(j);if((f|0)!=0){bG(f);HW(f)}a[b+28|0]=0;p=0;i=g;return p|0}return 0}function dn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=b+16|0;g=c[f>>2]|0;do{if((g|0)<(d|0)){g=b+12|0;h=c[g>>2]|0;do{if((h|0)<(d|0)){h=(h|0)==0?1024:h<<1;while(1){if((h|0)<(d|0)&(h|0)>0){h=h<<1}else{break}}if(h>>>0>67108862){h=0;break}k=b+8|0;j=Ee(c[k>>2]|0,h,32)|0;if((j|0)==0){h=0;break}c[k>>2]=j;c[g>>2]=h}}while(0);g=c[f>>2]|0;if((h|0)<(d|0)){k=g;i=e;return k|0}if((g|0)>=(d|0)){break}b=b+8|0;do{c[(c[b>>2]|0)+(g<<5)>>2]=-1;c[(c[b>>2]|0)+(g<<5)+8>>2]=3;k=c[b>>2]|0;j=k+(g<<5)+24|0;c[j>>2]=0;c[j+4>>2]=0;c[k+(g<<5)+16>>2]=5;a[(c[b>>2]|0)+(g<<5)+12|0]=0;c[(c[b>>2]|0)+(g<<5)+4>>2]=0;g=g+1|0;}while((g|0)<(d|0))}else{if((g|0)<=(d|0)){break}b=b+8|0;g=d;do{Of((c[b>>2]|0)+(g<<5)+16|0);g=g+1|0;}while((g|0)<(c[f>>2]|0))}}while(0);c[f>>2]=d;k=d;i=e;return k|0}function en(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=a+16|0;e=a+8|0;g=c[e>>2]|0;if((c[d>>2]|0)>0){f=0;while(1){Of(g+(f<<5)+16|0);f=f+1|0;g=c[e>>2]|0;if((f|0)<(c[d>>2]|0)){}else{break}}}Fe(g);Of(a+40|0);d=c[a+56>>2]|0;if((d|0)!=0){Fe(d)}a=c[a+64>>2]|0;if((a|0)==0){i=b;return}kG(a);HW(a);i=b;return}function fn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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,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;j=i;p=i;i=i+8|0;n=p;s=i;i=i+8|0;t=s;w=i;i=i+8|0;v=w;y=i;i=i+8|0;z=y;G=i;i=i+8|0;x=G;F=i;i=i+8|0;D=i;i=i+8|0;E=D;C=i;i=i+8|0;u=i;i=i+16|0;h=u;q=i;i=i+16|0;g=q;m=i;i=i+8|0;k=m;c[u>>2]=13;r=h+8|0;c[r>>2]=0;c[r+4>>2]=0;c[q>>2]=13;o=g+8|0;c[o>>2]=0;c[o+4>>2]=0;B=b+16|0;A=b+8|0;a:while(1){cG(d,h,0,0,0,0,0)|0;H=c[u>>2]|0;if((H|0)==10){l=3;break}else if((H|0)!=1){l=59;break}J=c[r>>2]|0;Of(h);if((c[(cG(d,h,0,0,0,0,0)|0)>>2]|0)!=1){l=59;break}H=c[u>>2]|0;if((H|0)!=1){l=7;break}H=c[r>>2]|0;Of(h);if((H|J|0)<0){break}I=H+J|0;if((I|0)<0){break}if((I|0)>(c[B>>2]|0)){if((dn(b,I)|0)!=(I|0)){l=13;break}}if((H|0)>0){I=J}else{continue}while(1){if((c[(cG(d,h,0,0,0,0,0)|0)>>2]|0)!=1){l=59;break a}K=c[u>>2]|0;if((K|0)!=1){l=16;break a}K=c[r>>2]|0;Of(h);if((c[(cG(d,h,0,0,0,0,0)|0)>>2]|0)!=1){l=59;break a}L=c[u>>2]|0;if((L|0)!=1){l=19;break a}L=c[r>>2]|0;Of(h);cG(d,h,0,0,0,0,0)|0;if((c[u>>2]|0)!=10){l=59;break a}M=c[r>>2]|0;if((Qc(M|0,48928)|0)==0){O=1}else{if((Qc(M|0,48936)|0)==0){O=0}else{l=59;break a}}Of(h);M=c[A>>2]|0;N=M+(J<<5)|0;do{if((c[N>>2]|0)==-1){c[N>>2]=K;c[M+(J<<5)+4>>2]=L;c[M+(J<<5)+8>>2]=O;a[M+(J<<5)+12|0]=0;$W(N+13|0,C|0,3)|0;c[M+(J<<5)+16>>2]=5;c[M+(J<<5)+24>>2]=0;c[N+28>>2]=0;if(!((J|0)==1&(I|0)==1)){break}J=c[A>>2]|0;I=J+32|0;if((c[I>>2]|0)!=0){I=1;J=1;break}if((c[J+36>>2]|0)!=65535){I=1;J=1;break}if((c[J+40>>2]|0)!=0){I=1;J=1;break}$W(J|0,I|0,32)|0;c[(c[A>>2]|0)+32>>2]=-1;I=0;J=0}}while(0);J=J+1|0;if((J|0)>=(I+H|0)){continue a}}}b:do{if((l|0)==3){if((Qc(c[r>>2]|0,48888)|0)!=0){l=59;break}Of(h);if((c[(cG(d,h,0,0,0,0,0)|0)>>2]|0)!=7){l=59;break}x=c[u>>2]|0;if((x|0)!=7){c[w>>2]=x;c[v+4>>2]=7;Qe(0,49608,v);tc()}Zu(c[r>>2]|0,48944,g)|0;v=c[q>>2]|0;if((v|0)==9){c[e>>2]=c[o>>2];e=1}else if((v|0)==1){c[e>>2]=c[o>>2];e=1}else{e=0}Of(g);v=b+40|0;if((c[v>>2]|0)==13){Mf(h,v)|0}u=c[u>>2]|0;if((u|0)!=7){c[s>>2]=u;c[t+4>>2]=7;Qe(0,49608,t);tc()}do{if((c[(Yu(c[r>>2]|0,48952,g,0)|0)>>2]|0)==1){q=c[q>>2]|0;if((q|0)!=1){c[p>>2]=q;c[n+4>>2]=1;Qe(0,49608,n);tc()}n=c[o>>2]|0;c[m>>2]=n;m=f+4|0;o=b+28|0;p=a[o]|0;c:do{if((p&1)==0){l=49}else{q=0;while(1){r=c[f>>2]|0;if(q>>>0>=(c[m>>2]|0)-r>>2>>>0){l=49;break c}if((c[r+(q<<2)>>2]|0)==(n|0)){break}if((p&1)==0){l=49;break c}q=q+1|0}a[o]=0}}while(0);if((l|0)==49){if((p&1)!=0){l=c[m>>2]|0;if((l|0)==(c[f+8>>2]|0)){vn(f,k)}else{if((l|0)==0){l=0}else{c[l>>2]=n;l=c[m>>2]|0}c[m>>2]=l+4}cn(b,k,f)|0;p=a[o]|0}if((p&1)!=0){break}}Of(g);l=59;break b}}while(0);Of(g);Of(h);O=e;i=j;return O|0}else if((l|0)==7){c[D>>2]=H;c[E+4>>2]=1;Qe(0,49608,E);tc()}else if((l|0)==13){Qe(-1,48896,F)}else if((l|0)==16){c[G>>2]=K;c[x+4>>2]=1;Qe(0,49608,x);tc()}else if((l|0)==19){c[y>>2]=L;c[z+4>>2]=1;Qe(0,49608,z);tc()}}while(0);if((l|0)==59){Of(h)}a[b+28|0]=0;O=0;i=j;return O|0}function gn(b,d,e){b=b|0;d=d|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;f=i;k=i;i=i+8|0;j=k;r=i;i=i+8|0;s=r;p=i;i=i+8|0;q=p;w=i;i=i+8|0;l=w;C=i;i=i+8|0;y=C;A=i;i=i+8|0;B=A;H=i;i=i+8|0;G=H;I=i;i=i+8|0;K=i;i=i+8|0;F=K;t=i;i=i+16|0;o=i;i=i+16|0;h=o;E=i;i=i+16|0;D=E;v=i;i=i+16|0;n=v;c[o>>2]=13;m=h+8|0;c[m>>2]=0;c[m+4>>2]=0;c[E>>2]=13;z=D+8|0;c[z>>2]=0;c[z+4>>2]=0;c[v>>2]=13;u=n+8|0;c[u>>2]=0;c[u+4>>2]=0;g=jd[c[(c[d>>2]|0)+72>>2]&511](d)|0;a:do{if((c[(Zu(g,48824,h)|0)>>2]|0)==1){J=c[o>>2]|0;if((J|0)!=1){c[K>>2]=J;c[F+4>>2]=1;Qe(0,49608,F);tc()}F=c[m>>2]|0;Of(h);if((F|0)<0){x=46;break}do{if((F|0)>(c[b+16>>2]|0)){if((dn(b,F)|0)==(F|0)){break}Qe(-1,48960,I);break a}}while(0);if((c[(Zu(g,48992,h)|0)>>2]|0)!=6){x=46;break}x=c[o>>2]|0;if((x|0)!=6){c[H>>2]=x;c[G+4>>2]=6;Qe(0,49608,G);tc()}if((c[(c[m>>2]|0)+12>>2]|0)<3){x=46;break}G=6;x=0;while(1){if((G|0)!=6){x=16;break}if((c[(ut(c[m>>2]|0,x,D)|0)>>2]|0)!=1){x=18;break}G=c[E>>2]|0;if((G|0)!=1){x=20;break}K=c[z>>2]|0;c[t+(x<<2)>>2]=K;Of(D);x=x+1|0;if(K>>>0>4){x=46;break a}if((x|0)>=3){x=22;break}G=c[o>>2]|0}if((x|0)==16){c[A>>2]=G;c[B+4>>2]=6;Qe(0,49608,B);tc()}else if((x|0)==18){Of(D);x=46;break}else if((x|0)==20){c[C>>2]=G;c[y+4>>2]=1;Qe(0,49608,y);tc()}else if((x|0)==22){Of(h);fd[c[(c[d>>2]|0)+12>>2]&511](d);Zu(g,49e3,n)|0;b:do{if((c[v>>2]|0)==6){y=1;x=0;while(1){z=c[u>>2]|0;if((y|0)>=(c[z+12>>2]|0)){break b}if((c[(ut(z,x,h)|0)>>2]|0)!=1){x=27;break}z=c[o>>2]|0;if((z|0)!=1){x=29;break}z=c[m>>2]|0;Of(h);A=c[v>>2]|0;if((A|0)!=6){x=31;break}if((c[(ut(c[u>>2]|0,y,h)|0)>>2]|0)!=1){x=33;break}y=c[o>>2]|0;if((y|0)!=1){x=35;break}y=c[m>>2]|0;Of(h);if((y|z|0)<0){x=38;break}if(!(hn(b,d,t,z,y)|0)){x=38;break}x=x+2|0;y=c[v>>2]|0;if((y|0)==6){y=x|1}else{x=24;break}}if((x|0)==24){c[w>>2]=y;c[l+4>>2]=6;Qe(0,49608,l);tc()}else if((x|0)==27){Of(n);x=46;break a}else if((x|0)==29){c[p>>2]=z;c[q+4>>2]=1;Qe(0,49608,q);tc()}else if((x|0)==31){c[r>>2]=A;c[s+4>>2]=6;Qe(0,49608,s);tc()}else if((x|0)==33){Of(n);x=46;break a}else if((x|0)==35){c[k>>2]=y;c[j+4>>2]=1;Qe(0,49608,j);tc()}else if((x|0)==38){Of(n);break a}}else{if(hn(b,d,t,0,F)|0){break}Of(n);break a}}while(0);Of(n);Zu(g,48944,h)|0;if((c[o>>2]|0)==1){c[e>>2]=c[m>>2];j=1}else{j=0}Of(h);b=b+40|0;if((c[b>>2]|0)!=13){K=j;i=f;return K|0}Kf(b,g)|0;K=j;i=f;return K|0}}else{x=46}}while(0);if((x|0)==46){Of(h)}a[b+28|0]=0;K=0;i=f;return K|0}function hn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;k=i;i=i+8|0;h=f+e|0;if((h|0)<0){o=0;i=g;return o|0}j=a+16|0;do{if((h|0)>(c[j>>2]|0)){o=dn(a,h)|0;if((o|0)==(c[j>>2]|0)){break}Qe(-1,49008,k);o=0;i=g;return o|0}}while(0);if((f|0)<=0){o=1;i=g;return o|0}j=d+4|0;f=d+8|0;a=a+8|0;a:while(1){k=c[d>>2]|0;do{if((k|0)==0){k=1}else{if((k|0)>0){l=0;k=0}else{k=0;break}do{m=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((m|0)==-1){d=0;h=23;break a}k=m+(k<<8)|0;l=l+1|0;}while((l|0)<(c[d>>2]|0))}}while(0);if((c[j>>2]|0)>0){m=0;l=0;do{n=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((n|0)==-1){d=0;h=23;break a}l=n+(l<<8)|0;m=m+1|0;}while((m|0)<(c[j>>2]|0))}else{l=0}if((c[f>>2]|0)>0){m=0;n=0;do{o=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((o|0)==-1){d=0;h=23;break a}m=o+(m<<8)|0;n=n+1|0;}while((n|0)<(c[f>>2]|0))}else{m=0}n=(c[a>>2]|0)+(e<<5)|0;do{if((c[n>>2]|0)==-1){if((k|0)==0){c[n>>2]=l;c[(c[a>>2]|0)+(e<<5)+4>>2]=m;c[(c[a>>2]|0)+(e<<5)+8>>2]=0;break}else if((k|0)==1){c[n>>2]=l;c[(c[a>>2]|0)+(e<<5)+4>>2]=m;c[(c[a>>2]|0)+(e<<5)+8>>2]=1;break}else if((k|0)==2){c[n>>2]=l;c[(c[a>>2]|0)+(e<<5)+4>>2]=m;c[(c[a>>2]|0)+(e<<5)+8>>2]=2;break}else{d=0;h=23;break a}}}while(0);e=e+1|0;if((e|0)>=(h|0)){d=1;h=23;break}}if((h|0)==23){i=g;return d|0}return 0}function jn(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0;l=i;a[b+68|0]=1;c[b+88>>2]=d;a[b+108|0]=e&1;e=b+84|0;if((g|0)<17){c[e>>2]=g;if((g|0)>0){g=0;m=4}}else{c[e>>2]=16;g=0;m=4}if((m|0)==4){while(1){a[b+92+g|0]=a[f+g|0]|0;g=g+1|0;if((g|0)<(c[e>>2]|0)){m=4}else{break}}}c[b+76>>2]=h;c[b+72>>2]=j;c[b+80>>2]=k;i=l;return}function kn(b,d){b=b|0;d=d|0;var 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,A=0;e=i;f=i;i=i+8|0;k=i;i=i+8|0;q=i;i=i+8|0;r=q;h=i;i=i+16|0;j=h;m=i;i=i+8|0;n=m;g=b+8|0;A=c[g>>2]|0;s=A+(d<<5)|0;if((c[A+(d<<5)+8>>2]|0)!=3){z=g;z=c[z>>2]|0;A=d<<5;A=z+A|0;i=e;return A|0}do{if((a[b+120|0]&1)==0){l=c[b+116>>2]|0;if((l|0)==0){break}if(rn(b,l+(d*20|0)|0,s)|0){z=g;z=c[z>>2]|0;A=d<<5;A=z+A|0;i=e;return A|0}c[q>>2]=d;Qe(-1,49376,r);z=g;z=c[z>>2]|0;A=d<<5;A=z+A|0;i=e;return A|0}}while(0);s=b+112|0;u=c[s>>2]|0;a:do{if((u|0)==0){p=0}else{l=j+4|0;r=j+8|0;q=b+28|0;w=1;t=0;y=0;x=0;b:while(1){if(!w){p=t;break a}v=x-t|0;w=v>>2;if((w|0)!=0){z=0;while(1){A=z+1|0;if((c[t+(z<<2)>>2]|0)==(u|0)){o=12;break b}if(A>>>0>>0){z=A}else{break}}}do{if((x|0)==(y|0)){x=w+1|0;if(x>>>0>1073741823){o=19;break b}if(w>>>0>536870910){z=1073741823;o=22}else{y=v>>1;z=y>>>0>>0?x:y;if((z|0)==0){y=0;z=0}else{o=22}}if((o|0)==22){o=0;y=FW(z<<2)|0}w=y+(w<<2)|0;z=y+(z<<2)|0;if((w|0)!=0){c[w>>2]=u}x=y+(x<<2)|0;$W(y|0,t|0,v|0)|0;if((t|0)==0){v=z;t=y;break}HW(t);v=z;t=y}else{if((x|0)!=0){c[x>>2]=u}v=y;x=x+4|0}}while(0);c[h>>2]=0;c[l>>2]=0;c[r>>2]=0;if(!(cn(b,s,j)|0)){c[s>>2]=0}if((a[q]&1)==0){o=30;break}u=c[h>>2]|0;if((u|0)!=0){w=c[l>>2]|0;if((u|0)!=(w|0)){c[l>>2]=w+(~((w+ -4+(0-u)|0)>>>2)<<2)}HW(u)}u=c[s>>2]|0;if((u|0)==0){p=t;break a}w=(c[(c[g>>2]|0)+(d<<5)+8>>2]|0)==3;y=v}if((o|0)==12){Qe(-1,49416,k);A=bn(b,0)|0;a[q]=A&1;if(A){p=t;break}c[b+32>>2]=3;p=t;break}else if((o|0)==19){wn(0)}else if((o|0)==30){a[m]=0;A=bn(b,n)|0;a[q]=A&1;if(A){h=c[h>>2]|0;if((h|0)==0){p=t;break}j=c[l>>2]|0;if((h|0)!=(j|0)){c[l>>2]=j+(~((j+ -4+(0-h)|0)>>>2)<<2)}HW(h);p=t;break}else{c[b+32>>2]=3;h=c[h>>2]|0;if((h|0)==0){p=t;break}j=c[l>>2]|0;if((h|0)!=(j|0)){c[l>>2]=j+(~((j+ -4+(0-h)|0)>>>2)<<2)}HW(h);p=t;break}}}}while(0);if((c[(c[g>>2]|0)+(d<<5)+8>>2]|0)==3){Qe(-1,49432,f);c[(c[g>>2]|0)+(d<<5)+8>>2]=0}if((p|0)==0){z=g;z=c[z>>2]|0;A=d<<5;A=z+A|0;i=e;return A|0}HW(p);z=g;z=c[z>>2]|0;A=d<<5;A=z+A|0;i=e;return A|0}function ln(a){a=a|0;i=i;return}function mn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=c[a+60>>2]|0;if((f|0)==0){j=0;i=e;return j|0}g=f+ -1|0;a=c[a+56>>2]|0;h=c[a+(g<<2)>>2]|0;if(h>>>0>>0){j=0;i=e;return j|0}if((f|0)>1){f=-1;do{h=(g+f|0)/2|0;j=(c[a+(h<<2)>>2]|0)>>>0>>0;f=j?h:f;g=j?g:h;}while((g-f|0)>1);h=c[a+(g<<2)>>2]|0}c[d>>2]=h;j=1;i=e;return j|0}function nn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=a+16|0;if((c[e>>2]|0)<=0){k=-1;i=d;return k|0}f=kn(a,0)|0;if((c[e>>2]|0)<=1){k=0;i=d;return k|0}h=1;g=c[f>>2]|0;k=0;while(1){j=c[(kn(a,h)|0)>>2]|0;f=j>>>0>=b>>>0|j>>>0>>0;k=f?k:h;h=h+1|0;if((h|0)<(c[e>>2]|0)){g=f?g:j}else{break}}i=d;return k|0}function on(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;j=b+16|0;m=c[j>>2]|0;if((m|0)<=(d|0)){k=b+12|0;if((c[k>>2]|0)>(d|0)){k=d+1|0}else{m=b+8|0;l=d+1|0;c[m>>2]=Ce(c[m>>2]|0,l,32)|0;c[k>>2]=l;m=c[j>>2]|0;k=l}if((m|0)<(k|0)){l=b+8|0;do{c[(c[l>>2]|0)+(m<<5)>>2]=-1;c[(c[l>>2]|0)+(m<<5)+8>>2]=0;n=c[l>>2]|0;o=n+(m<<5)+24|0;c[o>>2]=0;c[o+4>>2]=0;c[n+(m<<5)+16>>2]=5;a[(c[l>>2]|0)+(m<<5)+12|0]=0;c[(c[l>>2]|0)+(m<<5)+4>>2]=0;m=m+1|0;}while((m|0)<(k|0))}c[j>>2]=k}d=kn(b,d)|0;c[d+4>>2]=e;e=d+24|0;c[e>>2]=0;c[e+4>>2]=0;c[d+16>>2]=5;a[d+12|0]=0;e=d+8|0;if(g){c[e>>2]=1;c[d>>2]=f;i=h;return}else{c[e>>2]=0;c[d>>2]=0;i=h;return}}function pn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;g=i;i=i+8|0;h=g;f=c[e>>2]|0;do{if((f|0)>=0){if((f|0)>=(c[b+16>>2]|0)){break}b=kn(b,f)|0;h=b+16|0;Of(h);Mf(d,h)|0;a[b+12|0]=1;i=j;return}}while(0);d=c[e+4>>2]|0;c[g>>2]=f;c[h+4>>2]=d;Qe(-1,49328,h);i=j;return}function qn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=d+16|0;h=1;while(1){j=c[g>>2]|0;if((h|0)>=(j|0)){g=4;break}j=(c[(kn(d,h)|0)+8>>2]|0)==0;j=j?h:-1;if((j|0)==-1){h=h+1|0}else{g=5;break}}if((g|0)==4){on(d,j,0,0,0);d=kn(d,j)|0;h=j}else if((g|0)==5){d=kn(d,j)|0}c[d+8>>2]=1;Mf(e,d+16|0)|0;a[d+12|0]=1;c[b>>2]=h;c[b+4>>2]=c[d+4>>2];i=f;return}function rn(b,d,e){b=b|0;d=d|0;e=e|0;var 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;k=i;m=i;i=i+8|0;n=m;p=i;i=i+8|0;o=p;t=i;i=i+16|0;u=t;f=i;i=i+56|0;r=i;i=i+16|0;j=r;q=i;i=i+16|0;h=q;l=i;i=i+16|0;g=l;v=u+8|0;c[v>>2]=0;c[v+4>>2]=0;c[t>>2]=5;t=FW(168)|0;b=c[b>>2]|0;bE(t,0,Cd[c[(c[b>>2]|0)+96>>2]&63](b,d,0,20,u)|0);aG(f,0,t,1);c[r>>2]=13;t=j+8|0;c[t>>2]=0;c[t+4>>2]=0;c[q>>2]=13;d=h+8|0;c[d>>2]=0;c[d+4>>2]=0;c[l>>2]=13;b=g+8|0;c[b>>2]=0;c[b+4>>2]=0;if((c[(cG(f,j,0,0,0,0,0)|0)>>2]|0)!=1){v=0;Of(j);Of(h);Of(g);bG(f);i=k;return v|0}if((c[(cG(f,h,0,0,0,0,0)|0)>>2]|0)!=1){v=0;Of(j);Of(h);Of(g);bG(f);i=k;return v|0}u=cG(f,g,0,0,0,0,0)|0;if((c[u>>2]|0)==10){if((Qc(c[u+8>>2]|0,48928)|0)!=0){s=5}}else{s=5}do{if((s|0)==5){if((c[l>>2]|0)!=10){v=0;Of(j);Of(h);Of(g);bG(f);i=k;return v|0}if((Qc(c[b>>2]|0,48936)|0)==0){break}else{e=0}Of(j);Of(h);Of(g);bG(f);i=k;return e|0}}while(0);r=c[r>>2]|0;if((r|0)!=1){c[p>>2]=r;c[o+4>>2]=1;Qe(0,49608,o);tc()}c[e>>2]=c[t>>2];o=c[q>>2]|0;if((o|0)!=1){c[m>>2]=o;c[n+4>>2]=1;Qe(0,49608,n);tc()}c[e+4>>2]=c[d>>2];if((c[l>>2]|0)==10){l=(Qc(c[b>>2]|0,48928)|0)==0|0}else{l=0}c[e+8>>2]=l;v=e+24|0;c[v>>2]=0;c[v+4>>2]=0;c[e+16>>2]=5;a[e+12|0]=0;v=1;Of(j);Of(h);Of(g);bG(f);i=k;return v|0}function sn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;h=c[d>>2]|0;do{if((h|0)==0){l=d;f=5}else{l=c[d+4>>2]|0;if((l|0)==0){j=d;k=d;f=7;break}else{while(1){f=c[l>>2]|0;if((f|0)==0){f=5;break}else{l=f}}}}}while(0);do{if((f|0)==5){h=c[l+4>>2]|0;if((h|0)!=0){j=l;k=l;f=7;break}k=l;j=l;g=0;h=0;l=l+8|0}}while(0);if((f|0)==7){l=j+8|0;c[h+8>>2]=c[l>>2];g=1}f=c[l>>2]|0;do{if((j|0)==(c[f>>2]|0)){c[f>>2]=h;if((j|0)==(b|0)){b=h;f=0;break}f=c[(c[l>>2]|0)+4>>2]|0}else{c[f+4>>2]=h;f=c[c[l>>2]>>2]|0}}while(0);n=j+12|0;m=(a[n]&1)==0;if((j|0)==(d|0)){d=b}else{p=d+8|0;o=c[p>>2]|0;c[l>>2]=o;if((c[c[p>>2]>>2]|0)==(d|0)){c[o>>2]=j}else{c[o+4>>2]=j}p=c[d>>2]|0;c[k>>2]=p;c[p+8>>2]=j;k=c[d+4>>2]|0;c[j+4>>2]=k;if((k|0)!=0){c[k+8>>2]=j}a[n]=a[d+12|0]&1;d=(b|0)==(d|0)?j:b}if(m|(d|0)==0){i=e;return}if(g){a[h+12|0]=1;i=e;return}while(1){g=f+8|0;b=c[g>>2]|0;j=f+12|0;h=(a[j]&1)!=0;if((f|0)==(c[b>>2]|0)){if(h){b=f}else{a[j]=1;a[b+12|0]=0;h=c[g>>2]|0;b=c[h>>2]|0;g=b+4|0;j=c[g>>2]|0;c[h>>2]=j;if((j|0)!=0){c[j+8>>2]=h}j=h+8|0;c[b+8>>2]=c[j>>2];k=c[j>>2]|0;if((c[k>>2]|0)==(h|0)){c[k>>2]=b}else{c[k+4>>2]=b}c[g>>2]=h;c[j>>2]=b;b=c[f+4>>2]|0;d=(d|0)==(b|0)?f:d;b=c[b>>2]|0}g=c[b>>2]|0;h=(g|0)==0;if(!h){if((a[g+12|0]&1)==0){f=69;break}}f=c[b+4>>2]|0;if((f|0)!=0){if((a[f+12|0]&1)==0){f=68;break}}a[b+12|0]=0;b=c[b+8>>2]|0;g=b+12|0;if((a[g]&1)==0|(b|0)==(d|0)){f=65;break}g=c[b+8>>2]|0;f=c[g>>2]|0;if((b|0)!=(f|0)){continue}f=c[g+4>>2]|0;continue}if(h){b=f}else{a[j]=1;a[b+12|0]=0;b=c[g>>2]|0;p=b+4|0;g=c[p>>2]|0;h=c[g>>2]|0;c[p>>2]=h;if((h|0)!=0){c[h+8>>2]=b}h=b+8|0;c[g+8>>2]=c[h>>2];j=c[h>>2]|0;if((c[j>>2]|0)==(b|0)){c[j>>2]=g}else{c[j+4>>2]=g}c[g>>2]=b;c[h>>2]=g;b=c[f>>2]|0;d=(d|0)==(b|0)?f:d;b=c[b+4>>2]|0}g=c[b>>2]|0;if((g|0)!=0){if((a[g+12|0]&1)==0){f=39;break}}f=c[b+4>>2]|0;if((f|0)!=0){if((a[f+12|0]&1)==0){d=f;f=40;break}}a[b+12|0]=0;g=c[b+8>>2]|0;if((g|0)==(d|0)){f=36;break}if((a[g+12|0]&1)==0){d=g;f=36;break}b=c[g+8>>2]|0;f=c[b>>2]|0;if((g|0)!=(f|0)){continue}f=c[b+4>>2]|0}if((f|0)==36){a[d+12|0]=1;i=e;return}else if((f|0)==39){d=c[b+4>>2]|0;if((d|0)==0){f=41}else{f=40}}else if((f|0)==65){a[g]=1;i=e;return}else if((f|0)==68){if(h){f=70}else{f=69}}if((f|0)==40){if((a[d+12|0]&1)==0){f=47}else{f=41}}else if((f|0)==69){if((a[g+12|0]&1)==0){f=76}else{f=70}}if((f|0)==41){a[g+12|0]=1;a[b+12|0]=0;f=c[b>>2]|0;d=f+4|0;g=c[d>>2]|0;c[b>>2]=g;if((g|0)!=0){c[g+8>>2]=b}h=b+8|0;c[f+8>>2]=c[h>>2];g=c[h>>2]|0;if((c[g>>2]|0)==(b|0)){c[g>>2]=f}else{c[g+4>>2]=f}c[d>>2]=b;c[h>>2]=f;b=f;f=47}else if((f|0)==70){p=b+4|0;a[(c[p>>2]|0)+12|0]=1;a[b+12|0]=0;d=c[p>>2]|0;f=c[d>>2]|0;c[p>>2]=f;if((f|0)!=0){c[f+8>>2]=b}f=b+8|0;c[d+8>>2]=c[f>>2];g=c[f>>2]|0;if((c[g>>2]|0)==(b|0)){c[g>>2]=d}else{c[g+4>>2]=d}c[d>>2]=b;c[f>>2]=d;b=d;f=76}if((f|0)==47){f=b+8|0;p=(c[f>>2]|0)+12|0;a[b+12|0]=a[p]&1;a[p]=1;a[(c[b+4>>2]|0)+12|0]=1;f=c[f>>2]|0;p=f+4|0;d=c[p>>2]|0;b=c[d>>2]|0;c[p>>2]=b;if((b|0)!=0){c[b+8>>2]=f}b=f+8|0;c[d+8>>2]=c[b>>2];g=c[b>>2]|0;if((c[g>>2]|0)==(f|0)){c[g>>2]=d}else{c[g+4>>2]=d}c[d>>2]=f;c[b>>2]=d;i=e;return}else if((f|0)==76){d=b+8|0;f=(c[d>>2]|0)+12|0;a[b+12|0]=a[f]&1;a[f]=1;a[(c[b>>2]|0)+12|0]=1;d=c[d>>2]|0;f=c[d>>2]|0;b=f+4|0;g=c[b>>2]|0;c[d>>2]=g;if((g|0)!=0){c[g+8>>2]=d}h=d+8|0;c[f+8>>2]=c[h>>2];g=c[h>>2]|0;if((c[g>>2]|0)==(d|0)){c[g>>2]=f}else{c[g+4>>2]=f}c[b>>2]=d;c[h>>2]=f;i=e;return}}function tn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;g=i;i=i+8|0;h=g;k=d+4|0;j=c[k>>2]|0;do{if((j|0)==0){c[g>>2]=k;h=k}else{k=c[e>>2]|0;while(1){l=c[j+16>>2]|0;if((k|0)<(l|0)){l=c[j>>2]|0;if((l|0)==0){k=5;break}else{j=l;continue}}if((l|0)>=(k|0)){k=9;break}l=j+4|0;m=c[l>>2]|0;if((m|0)==0){k=8;break}else{j=m}}if((k|0)==5){c[g>>2]=j;h=j;break}else if((k|0)==8){c[g>>2]=j;h=l;break}else if((k|0)==9){c[g>>2]=j;break}}}while(0);j=c[h>>2]|0;if((j|0)!=0){l=0;k=j;m=b;c[m>>2]=k;m=b+4|0;a[m]=l;i=f;return}j=FW(20)|0;c[j+16>>2]=c[e>>2];g=c[g>>2]|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=g;c[h>>2]=j;g=c[c[d>>2]>>2]|0;if((g|0)==0){g=j}else{c[d>>2]=g;g=c[h>>2]|0}un(c[d+4>>2]|0,g);l=d+8|0;c[l>>2]=(c[l>>2]|0)+1;l=1;k=j;m=b;c[m>>2]=k;m=b+4|0;a[m]=l;i=f;return}function un(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;l=(d|0)==(b|0);a[d+12|0]=l&1;if(l){i=e;return}while(1){j=d+8|0;f=c[j>>2]|0;k=f+12|0;if((a[k]&1)!=0){b=37;break}g=f+8|0;h=c[g>>2]|0;l=c[h>>2]|0;if((f|0)==(l|0)){j=c[h+4>>2]|0;if((j|0)==0){b=7;break}j=j+12|0;if((a[j]&1)!=0){b=7;break}a[k]=1;a[h+12|0]=(h|0)==(b|0)|0;a[j]=1}else{if((l|0)==0){b=24;break}l=l+12|0;if((a[l]&1)!=0){b=24;break}a[k]=1;a[h+12|0]=(h|0)==(b|0)|0;a[l]=1}if((h|0)==(b|0)){b=37;break}else{d=h}}if((b|0)==7){if((d|0)!=(c[f>>2]|0)){l=f+4|0;d=c[l>>2]|0;j=c[d>>2]|0;c[l>>2]=j;if((j|0)!=0){c[j+8>>2]=f;h=c[g>>2]|0}j=d+8|0;c[j>>2]=h;h=c[g>>2]|0;if((c[h>>2]|0)==(f|0)){c[h>>2]=d}else{c[h+4>>2]=d}c[d>>2]=f;c[g>>2]=d;h=c[j>>2]|0;f=d}a[f+12|0]=1;a[h+12|0]=0;g=c[h>>2]|0;f=g+4|0;d=c[f>>2]|0;c[h>>2]=d;if((d|0)!=0){c[d+8>>2]=h}j=h+8|0;c[g+8>>2]=c[j>>2];d=c[j>>2]|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=g}else{c[d+4>>2]=g}c[f>>2]=h;c[j>>2]=g;i=e;return}else if((b|0)==24){if((d|0)==(c[f>>2]|0)){b=d+4|0;k=c[b>>2]|0;c[f>>2]=k;if((k|0)!=0){c[k+8>>2]=f;h=c[g>>2]|0}c[j>>2]=h;h=c[g>>2]|0;if((c[h>>2]|0)==(f|0)){c[h>>2]=d}else{c[h+4>>2]=d}c[b>>2]=f;c[g>>2]=d;h=c[j>>2]|0;f=d}a[f+12|0]=1;a[h+12|0]=0;l=h+4|0;f=c[l>>2]|0;g=c[f>>2]|0;c[l>>2]=g;if((g|0)!=0){c[g+8>>2]=h}g=h+8|0;c[f+8>>2]=c[g>>2];d=c[g>>2]|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=f}else{c[d+4>>2]=f}c[f>>2]=h;c[g>>2]=f;i=e;return}else if((b|0)==37){i=e;return}}function vn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;g=a+4|0;d=c[a>>2]|0;e=(c[g>>2]|0)-d|0;k=e>>2;f=k+1|0;if(f>>>0>1073741823){wn(0)}j=a+8|0;m=(c[j>>2]|0)-d|0;if(m>>2>>>0>536870910){n=1073741823;l=5}else{m=m>>1;n=m>>>0>>0?f:m;if((n|0)==0){m=0;n=0}else{l=5}}if((l|0)==5){m=FW(n<<2)|0}k=m+(k<<2)|0;if((k|0)!=0){c[k>>2]=c[b>>2]}$W(m|0,d|0,e|0)|0;c[a>>2]=m;c[g>>2]=m+(f<<2);c[j>>2]=m+(n<<2);if((d|0)==0){i=h;return}HW(d);i=h;return}function wn(a){a=a|0;Ya(49456,49480,307,49584)}function xn(a,b){a=a|0;b=b|0;var d=0;d=i;if((b|0)==0){i=d;return}else{xn(a,c[b>>2]|0);xn(a,c[b+4>>2]|0);HW(b);i=d;return}}function yn(a){a=a|0;var b=0;b=i;c[a>>2]=49688;a=c[a+4>>2]|0;if((a|0)==0){i=b;return}$m(a);HW(a);i=b;return}function zn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;c[a>>2]=49688;d=c[a+4>>2]|0;if((d|0)==0){HW(a);i=b;return}e=d+8|0;h=c[e>>2]|0;do{if((h|0)!=0){f=d+4|0;if((c[f>>2]|0)>0){g=0;do{Of(h+(g<<4)|0);g=g+1|0;h=c[e>>2]|0;}while((g|0)<(c[f>>2]|0));if((h|0)==0){break}}IW(h)}}while(0);Fe(c[d+12>>2]|0);HW(d);HW(a);i=b;return}function An(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function Bn(a,b){a=a|0;b=b|0;i=i;return(c[a+4>>2]|0)==(c[b+4>>2]|0)|0}function Cn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=FW(80)|0;OG(g,b,d,0);c[g>>2]=49808;c[g+60>>2]=0;b=g+65|0;a[b]=0;bX(g+20|0,0,16)|0;c[g+68>>2]=e;c[g+72>>2]=0;c[g+76>>2]=0;En(g);if((a[b]&1)!=0){b=g;i=f;return b|0}if((g|0)==0){b=0;i=f;return b|0}fd[c[(c[g>>2]|0)+4>>2]&511](g);b=0;i=f;return b|0}function Dn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;f=i;i=i+8|0;b=RG(b,f)|0;if((b|0)==0){g=0;i=e;return g|0}g=FW(80)|0;OG(g,b,c[f>>2]|0,1);c[g>>2]=49808;c[g+60>>2]=0;b=g+65|0;a[b]=0;bX(g+20|0,0,16)|0;c[g+68>>2]=d;c[g+72>>2]=0;c[g+76>>2]=0;En(g);if((a[b]&1)!=0){i=e;return g|0}if((g|0)==0){g=0;i=e;return g|0}fd[c[(c[g>>2]|0)+4>>2]&511](g);g=0;i=e;return g|0}function En(b){b=b|0;var 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;d=i;k=i;i=i+8|0;e=b+65|0;a[e]=1;g=VG(b,0,e)|0;if((a[e]&1)==0){i=d;return}do{if((g|0)==1953784678){j=VG(b,8,e)|0;if((a[e]&1)==0){i=d;return}if((j|0)==0){a[e]=0;i=d;return}g=b+68|0;h=c[g>>2]|0;if((h|0)>=(j|0)){c[g>>2]=0;h=0}m=VG(b,(h<<2)+12|0,e)|0;if((a[e]&1)!=0){break}i=d;return}else{m=0}}while(0);g=VG(b,m,e)|0;if((a[e]&1)==0){i=d;return}h=b+64|0;a[h]=(g|0)==1330926671|0;g=UG(b,m+4|0,e)|0;j=b+24|0;c[j>>2]=g;if((a[e]&1)==0){i=d;return}l=ye(g,20)|0;g=b+20|0;c[g>>2]=l;p=c[j>>2]|0;if((p|0)>0){l=b+12|0;o=0;m=m+12|0;n=0;while(1){q=VG(b,m,e)|0;c[(c[g>>2]|0)+(o*20|0)>>2]=q;q=VG(b,m+4|0,e)|0;c[(c[g>>2]|0)+(o*20|0)+4>>2]=q;q=VG(b,m+8|0,e)|0;c[(c[g>>2]|0)+(o*20|0)+8>>2]=q;q=VG(b,m+12|0,e)|0;c[(c[g>>2]|0)+(o*20|0)+16>>2]=q;q=c[g>>2]|0;p=c[q+(o*20|0)+16>>2]|0;if((p|0)<0){f=15}else{if(((c[q+(o*20|0)+8>>2]|0)+p|0)>(c[l>>2]|0)){f=15}}if((f|0)==15){f=0;Qe(-1,49824,k);o=o+ -1|0;n=n+1|0}o=o+1|0;p=c[j>>2]|0;if((o|0)<(p|0)){m=m+16|0}else{break}}k=c[g>>2]|0}else{k=l;n=0}l=p-n|0;c[j>>2]=l;l=Ee(k,l,20)|0;c[g>>2]=l;if((a[e]&1)==0|(l|0)==0){i=d;return}k=c[j>>2]|0;a:do{if((k|0)>0){n=0;while(1){m=n+1|0;if((c[l+(n*20|0)>>2]|0)==1751474532){break}if((m|0)<(k|0)){n=m}else{break a}}if((n|0)<0){break}else{n=0}while(1){m=n+1|0;if((c[l+(n*20|0)>>2]|0)==1751672161){break}if((m|0)<(k|0)){n=m}else{break a}}if((n|0)<0){break}else{n=0}while(1){m=n+1|0;if((c[l+(n*20|0)>>2]|0)==1835104368){break}if((m|0)<(k|0)){n=m}else{break a}}if((n|0)<0){break}else{n=0}while(1){m=n+1|0;if((c[l+(n*20|0)>>2]|0)==1752003704){break}if((m|0)<(k|0)){n=m}else{break a}}if((n|0)<0){break}m=(a[h]&1)==0;do{if(m){n=0;while(1){o=n+1|0;if((c[l+(n*20|0)>>2]|0)==1819239265){break}if((o|0)<(k|0)){n=o}else{break a}}if((n|0)<0){break a}if(m){n=0}else{m=0;f=42;break}while(1){o=n+1|0;if((c[l+(n*20|0)>>2]|0)==1735162214){break}if((o|0)<(k|0)){n=o}else{break a}}if((n|0)<0){break a}if(m){m=0}else{m=0;f=42}}else{m=0;f=42}}while(0);if((f|0)==42){while(1){f=m+1|0;if((c[l+(m*20|0)>>2]|0)==1128678944){break}if((f|0)<(k|0)){m=f;f=42}else{break a}}if((m|0)<0){break}else{m=0}}while(1){f=m+1|0;if((c[l+(m*20|0)>>2]|0)==1668112752){f=47;break}if((f|0)<(k|0)){m=f}else{f=54;break}}do{if((f|0)==47){if((m|0)<=-1){f=54;break}n=c[l+(m*20|0)+8>>2]|0;o=UG(b,n+2|0,e)|0;k=b+32|0;c[k>>2]=o;if((a[e]&1)==0){i=d;return}l=b+28|0;c[l>>2]=ye(o,20)|0;if((c[k>>2]|0)>0){o=0;n=n+4|0;while(1){q=UG(b,n,e)|0;c[(c[l>>2]|0)+(o*20|0)>>2]=q;q=UG(b,n+2|0,e)|0;c[(c[l>>2]|0)+(o*20|0)+4>>2]=q;q=c[(c[g>>2]|0)+(m*20|0)+8>>2]|0;q=(VG(b,n+4|0,e)|0)+q|0;c[(c[l>>2]|0)+(o*20|0)+8>>2]=q;q=UG(b,c[(c[l>>2]|0)+(o*20|0)+8>>2]|0,e)|0;c[(c[l>>2]|0)+(o*20|0)+16>>2]=q;q=UG(b,(c[(c[l>>2]|0)+(o*20|0)+8>>2]|0)+2|0,e)|0;c[(c[l>>2]|0)+(o*20|0)+12>>2]=q;o=o+1|0;if((o|0)<(c[k>>2]|0)){n=n+8|0}else{break}}}if((a[e]&1)==0){i=d;return}else{k=c[j>>2]|0;break}}}while(0);if((f|0)==54){c[b+32>>2]=0}l=c[g>>2]|0;b:do{if((k|0)>0){m=0;while(1){n=m+1|0;if((c[l+(m*20|0)>>2]|0)==1835104368){break b}if((n|0)<(k|0)){m=n}else{m=-1;break}}}else{m=-1}}while(0);k=b+36|0;c[k>>2]=UG(b,(c[l+(m*20|0)+8>>2]|0)+4|0,e)|0;if((a[e]&1)==0){i=d;return}o=c[j>>2]|0;l=c[g>>2]|0;c:do{if((o|0)>0){n=0;while(1){m=n+1|0;if((c[l+(n*20|0)>>2]|0)==1751474532){break c}if((m|0)<(o|0)){n=m}else{n=-1;break}}}else{n=-1}}while(0);c[b+44>>2]=TG(b,(c[l+(n*20|0)+8>>2]|0)+36|0,e)|0;c[b+48>>2]=TG(b,(c[(c[g>>2]|0)+(n*20|0)+8>>2]|0)+38|0,e)|0;c[b+52>>2]=TG(b,(c[(c[g>>2]|0)+(n*20|0)+8>>2]|0)+40|0,e)|0;c[b+56>>2]=TG(b,(c[(c[g>>2]|0)+(n*20|0)+8>>2]|0)+42|0,e)|0;m=TG(b,(c[(c[g>>2]|0)+(n*20|0)+8>>2]|0)+50|0,e)|0;l=b+40|0;c[l>>2]=m;n=a[e]|0;if((n&1)==0){i=d;return}do{if((a[h]&1)==0){p=c[j>>2]|0;j=c[g>>2]|0;d:do{if((p|0)>0){h=0;while(1){o=h+1|0;if((c[j+(h*20|0)>>2]|0)==1819239265){break d}if((o|0)<(p|0)){h=o}else{h=-1;break}}}else{h=-1}}while(0);q=c[j+(h*20|0)+16>>2]|0;if((q|0)<0){a[e]=0;i=d;return}o=c[k>>2]|0;p=(m|0)!=0?4:2;if((q|0)<(da(p,o+1|0)|0)){o=((q|0)/(p|0)|0)+ -1|0;c[k>>2]=o}if((o|0)>=0){n=b+12|0;o=0;while(1){j=c[j+(h*20|0)+8>>2]|0;if((m|0)==0){j=UG(b,j+(o<<1)|0,e)|0}else{j=VG(b,j+(o<<2)|0,e)|0}if((j|0)<0){f=78}else{if((j|0)>(c[n>>2]|0)){f=78}}if((f|0)==78){f=0;a[e]=0}if((o|0)>=(c[k>>2]|0)){break}j=c[g>>2]|0;m=c[l>>2]|0;o=o+1|0}n=a[e]|0}if((n&1)!=0){break}i=d;return}}while(0);Nn(b);i=d;return}}while(0);a[e]=0;i=d;return}function Fn(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=49808;Fe(c[a+20>>2]|0);Fe(c[a+28>>2]|0);d=c[a+60>>2]|0;if((d|0)==0){QG(a);HW(a);i=b;return}ko(d);HW(d);QG(a);HW(a);i=b;return}function Gn(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=49808;Fe(c[a+20>>2]|0);Fe(c[a+28>>2]|0);d=c[a+60>>2]|0;if((d|0)==0){QG(a);i=b;return}ko(d);HW(d);QG(a);i=b;return}function Hn(a){a=a|0;i=i;return c[a+32>>2]|0}function In(a,b){a=a|0;b=b|0;i=i;return c[(c[a+28>>2]|0)+(b*20|0)>>2]|0}function Jn(a,b){a=a|0;b=b|0;i=i;return c[(c[a+28>>2]|0)+(b*20|0)+4>>2]|0}function Kn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;g=i;i=i+8|0;h=g;if((d|0)<0){o=0;i=f;return o|0}if((c[b+32>>2]|0)<=(d|0)){o=0;i=f;return o|0}a[g]=1;k=c[b+28>>2]|0;j=c[k+(d*20|0)+8>>2]|0;l=c[k+(d*20|0)+16>>2]|0;do{if((l|0)==0){e=e+6|0;if(e>>>0<(c[k+(d*20|0)+12>>2]|0)>>>0){b=(SG(b,e+j|0,h)|0)&65535;break}else{o=0;i=f;return o|0}}else if((l|0)==12){k=VG(b,j+12|0,h)|0;n=k+ -1|0;d=j+16|0;j=j+20|0;if((VG(b,j+(n*12|0)|0,h)|0)>>>0>>0){o=0;i=f;return o|0}a:do{if((k|0)>1){k=-1;do{if((a[g]&1)==0){break a}m=(n+k|0)/2|0;l=(VG(b,j+(m*12|0)|0,h)|0)>>>0>>0;k=l?m:k;n=l?n:m;}while((n-k|0)>1)}}while(0);o=(n*12|0)+d|0;j=VG(b,o,h)|0;b=VG(b,o+8|0,h)|0;if(j>>>0>e>>>0){o=0;i=f;return o|0}else{b=e-j+b&65535;break}}else if((l|0)==4){l=UG(b,j+6|0,h)|0;d=(l|0)/2|0;m=d+ -1|0;k=j+14|0;if((UG(b,(m<<1)+k|0,h)|0)>>>0>>0){o=0;i=f;return o|0}b:do{if((l|0)>3){l=-1;do{if((a[g]&1)==0){break b}n=(m+l|0)/2|0;o=(UG(b,(n<<1)+k|0,h)|0)>>>0>>0;l=o?n:l;m=o?m:n;}while((m-l|0)>1)}}while(0);o=j+16|0;l=m<<1;k=UG(b,(d<<1)+o+l|0,h)|0;j=UG(b,(d<<2)+o+l|0,h)|0;d=(d*6|0)+o+l|0;l=UG(b,d,h)|0;if(k>>>0>e>>>0){o=0;i=f;return o|0}if((l|0)==0){b=j+e&65535;break}b=UG(b,l+d+(e-k<<1)|0,h)|0;if((b&65535|0)==0){b=b&65535;break}b=b+j&65535}else if((l|0)==6){d=UG(b,j+6|0,h)|0;k=UG(b,j+8|0,h)|0;if(d>>>0>e>>>0){o=0;i=f;return o|0}if((k+d|0)>>>0>e>>>0){b=(UG(b,j+10+(e-d<<1)|0,h)|0)&65535;break}else{o=0;i=f;return o|0}}else{o=0;i=f;return o|0}}while(0);o=(a[g]&1)==0?0:b;i=f;return o|0}function Ln(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+60>>2]|0;if((a|0)==0){a=0;i=d;return a|0}a=po(a,b)|0;i=d;return a|0}function Mn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;c[d>>2]=0;if((a[b+64|0]&1)==0){j=0;i=e;return j|0}g=c[b+24>>2]|0;f=c[b+20>>2]|0;a:do{if((g|0)>0){h=0;while(1){j=h+1|0;if((c[f+(h*20|0)>>2]|0)==1128678944){break a}if((j|0)<(g|0)){h=j}else{h=-1;break}}}else{h=-1}}while(0);if(!(XG(b,c[f+(h*20|0)+8>>2]|0,c[f+(h*20|0)+16>>2]|0)|0)){j=0;i=e;return j|0}j=c[b+20>>2]|0;b=Tn((c[b+8>>2]|0)+(c[j+(h*20|0)+8>>2]|0)|0,c[j+(h*20|0)+16>>2]|0)|0;if((b|0)==0){j=0;i=e;return j|0}j=_n(b,d)|0;fd[c[(c[b>>2]|0)+4>>2]&511](b);i=e;return j|0}function Nn(b){b=b|0;var 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;d=i;e=i;i=i+8|0;f=e;a[e]=1;k=c[b+24>>2]|0;if((k|0)<=0){i=d;return}j=c[b+20>>2]|0;l=0;while(1){h=l+1|0;if((c[j+(l*20|0)>>2]|0)==1886352244){break}if((h|0)<(k|0)){l=h}else{g=33;break}}if((g|0)==33){i=d;return}if((l|0)<0){i=d;return}j=c[j+(l*20|0)+8>>2]|0;g=VG(b,j,f)|0;a:do{if((a[e]&1)==0){g=b+60|0}else{if((g|0)==131072){h=FW(16)|0;jo(h,1);g=b+60|0;c[g>>2]=h;h=UG(b,j+32|0,f)|0;if((a[e]&1)==0){break}k=c[b+36>>2]|0;h=(h|0)>(k|0)?k:h;k=j+34|0;l=(h<<1)+k|0;if((h|0)<=0){i=d;return}j=b+8|0;m=0;p=0;o=l;while(1){n=UG(b,(m<<1)+k|0,f)|0;if((n|0)<258){r=c[49904+(n<<2)>>2]|0;so(c[g>>2]|0,r)|0;q=c[g>>2]|0;n=FW(32)|0;fe(n,r);no(q,n,m);n=p}else{n=n+ -258|0;if((n|0)==(p|0)){n=p}else{if((n|0)>0){p=0;o=l;while(1){p=p+1|0;o=o+1+(SG(b,o,f)|0)|0;if((p|0)<(n|0)){}else{break}}}else{n=0;o=l}if((a[e]&1)==0){break a}}p=SG(b,o,f)|0;if((a[e]&1)==0){break a}o=o+1|0;if(!(XG(b,o,p)|0)){break a}r=FW(32)|0;ge(r,(c[j>>2]|0)+o|0,p);ro(c[g>>2]|0,r)|0;no(c[g>>2]|0,r,m);n=n+1|0;o=o+p|0}m=m+1|0;if((m|0)<(h|0)){p=n}else{break}}i=d;return}else if((g|0)==163840){h=FW(16)|0;jo(h,1);g=b+60|0;c[g>>2]=h;h=b+36|0;if((c[h>>2]|0)<=0){i=d;return}l=j+32|0;k=0;do{j=SG(b,l+k|0,f)|0;if((a[e]&1)==0){break a}if((j|0)<258){p=c[49904+(j<<2)>>2]|0;so(c[g>>2]|0,p)|0;q=c[g>>2]|0;r=FW(32)|0;fe(r,p);no(q,r,k)}k=k+1|0;}while((k|0)<(c[h>>2]|0));i=d;return}else if((g|0)==65536){e=FW(16)|0;jo(e,1);b=b+60|0;c[b>>2]=e;f=0;while(1){r=FW(32)|0;fe(r,c[49904+(f<<2)>>2]|0);no(e,r,f);f=f+1|0;if((f|0)>=258){break}e=c[b>>2]|0}i=d;return}else{i=d;return}}}while(0);b=c[g>>2]|0;if((b|0)==0){i=d;return}ko(b);HW(b);c[g>>2]=0;i=d;return}function On(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;if((b|0)==0){c[a+72>>2]=0;i=e;return 0}n=ZW(b|0)|0;h=(n|0)>4?4:n;if((h|0)>0){m=0;l=0;do{l=d[b+m|0]|0|l<<8;m=m+1|0;}while((m|0)<(h|0));if((n|0)<4){g=n;f=l;j=6}else{k=l}}else{g=0;f=0;j=6}if((j|0)==6){while(1){j=0;k=f<<8|32;g=g+1|0;if((g|0)<4){f=k}else{break}}}l=c[a+24>>2]|0;if((l|0)<=0){i=e;return 0}f=c[a+20>>2]|0;g=0;while(1){h=g+1|0;if((c[f+(g*20|0)>>2]|0)==1196643650){break}if((h|0)<(l|0)){g=h}else{j=29;break}}if((j|0)==29){i=e;return 0}if((g|0)<0){i=e;return 0}g=c[f+(g*20|0)+8>>2]|0;h=a+65|0;b=UG(a,g+4|0,h)|0;f=UG(a,g+6|0,h)|0;c[a+76>>2]=(UG(a,g+8|0,h)|0)+g;b=b+g|0;l=UG(a,b,h)|0;if((l|0)==0){i=e;return 0}else{o=0;m=b}while(1){p=VG(a,m+2|0,h)|0;m=m+6|0;n=UG(a,m,h)|0;o=o+1|0;if((p|0)==(k|0)){break}if(o>>>0>>0){}else{j=29;break}}if((j|0)==29){i=e;return 0}k=n+b|0;j=UG(a,k,h)|0;if((j|0)==0){i=e;return 0}k=j+k|0;b=UG(a,k+2|0,h)|0;j=k+4|0;do{if((b|0)==65535){b=0}else{l=f+g|0;UG(a,l,h)|0;m=l+2+(b*6|0)|0;b=VG(a,m,h)|0;m=m+4|0;if((b|0)==1986359924){b=UG(a,m,h)|0;break}else if((b|0)!=1987212338){b=0;break}c[a+72>>2]=l+(UG(a,m,h)|0);i=e;return 0}}while(0);j=UG(a,j,h)|0;a:do{if((j|0)!=0){l=g+2+f|0;m=0;k=k+6|0;while(1){o=l+((UG(a,k,h)|0)*6|0)|0;n=VG(a,o,h)|0;o=o+4|0;if((n|0)==1987212338){break}if((b|0)==0&(n|0)==1986359924){b=UG(a,o,h)|0}m=m+1|0;if(m>>>0>>0){k=k+2|0}else{break a}}b=UG(a,o,h)|0}}while(0);if((b|0)==0){i=e;return 0}c[a+72>>2]=f+g+b;i=e;return 0}function Pn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=a+76|0;h=c[f>>2]|0;if((h|0)==0){l=0;i=e;return l|0}g=a+65|0;b=UG(a,(b<<1)+2+h|0,g)|0;j=(c[f>>2]|0)+b|0;h=UG(a,j+4|0,g)|0;if((h|0)==0){l=0;i=e;return l|0}k=0;j=j+6|0;while(1){l=UG(a,j,g)|0;l=Rn(a,l+b+(c[f>>2]|0)|0,d)|0;if((l|0)!=0){a=6;break}k=k+1|0;if(k>>>0>>0){j=j+2|0}else{l=0;a=6;break}}if((a|0)==6){i=e;return l|0}return 0}function Qn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;g=c[a+72>>2]|0;if((g|0)==0){j=b;i=d;return j|0}e=a+65|0;f=UG(a,g+2|0,e)|0;a:do{if((f|0)==0){j=0}else{h=0;g=g+4|0;while(1){j=Pn(a,UG(a,g,e)|0,b)|0;if((j|0)!=0){break a}h=h+1|0;if(h>>>0>>0){g=g+2|0}else{j=0;break}}}}while(0);j=(j|0)==0?b:j;i=d;return j|0}function Rn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=i;f=a+65|0;h=UG(a,b,f)|0;e=b+4|0;g=Sn(a,(UG(a,b+2|0,f)|0)+b|0,c)|0;do{if((g|0)>-1){if((h|0)==1){a=(TG(a,e,f)|0)+c|0;break}else if((h|0)!=2){a=0;break}if((TG(a,e,f)|0)<=(g|0)){a=0;break}a=UG(a,b+6+(g<<1)|0,f)|0}else{a=0}}while(0);i=d;return a|0}function Sn(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,k=0;d=i;e=a+65|0;f=UG(a,b,e)|0;g=b+2|0;a:do{if((f|0)==1){f=UG(a,g,e)|0;if((f|0)==0){g=-1;break}g=0;b=b+4|0;while(1){h=UG(a,b,e)|0;if((h|0)==(c|0)){break a}g=g+1|0;if(h>>>0>c>>>0){g=-1;break a}if(g>>>0>>0){b=b+2|0}else{g=-1;break}}}else if((f|0)==2){f=UG(a,g,e)|0;if((f|0)==0){g=-1;break}g=0;b=b+4|0;while(1){k=UG(a,b,e)|0;h=UG(a,b+2|0,e)|0;j=UG(a,b+4|0,e)|0;h=h>>>0>>0;if(!(k>>>0>c>>>0|h)){break}g=g+1|0;if(!h){g=-1;break a}if(g>>>0>>0){b=b+6|0}else{g=-1;break a}}g=c-k+j|0}else{g=-1}}while(0);i=d;return g|0}function Tn(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=FW(1160)|0;OG(e,a,b,0);c[e>>2]=53784;c[e+20>>2]=0;c[e+24>>2]=0;c[e+328>>2]=0;c[e+340>>2]=0;c[e+344>>2]=0;if(Un(e)|0){a=e;i=d;return a|0}if((e|0)==0){a=0;i=d;return a|0}fd[c[(c[e>>2]|0)+4>>2]&511](e);a=0;i=d;return a|0}function Un(b){b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;g=i;i=i+24|0;f=g;e=b+352|0;a[e]=1;m=b+12|0;j=c[m>>2]|0;do{if((j|0)>0){l=b+8|0;k=c[l>>2]|0;if((a[k]|0)==1){break}c[l>>2]=k+1;c[m>>2]=j+ -1}}while(0);l=b+28|0;$n(b,SG(b,2,e)|0,l,e);j=b+44|0;$n(b,c[j>>2]|0,b+48|0,e);$n(b,c[b+64>>2]|0,b+68|0,e);$n(b,c[b+84>>2]|0,b+88|0,e);if((a[e]&1)==0){r=0;i=d;return r|0}k=c[b+92>>2]|0;if((k|0)<1240){k=107}else{k=(k|0)<33900?1131:32768}c[b+348>>2]=k;if((c[b+32>>2]|0)<=0){a[e]=0;r=0;i=d;return r|0}m=b+40|0;k=c[m>>2]|0;q=b+36|0;k=(WG(b,(c[l>>2]|0)+3|0,c[q>>2]|0,e)|0)+k|0;r=c[m>>2]|0;q=c[q>>2]|0;l=(WG(b,(c[l>>2]|0)+3+q|0,q,e)|0)+r|0;m=c[m>>2]|0;do{if((k|0)>=(m|0)){r=c[j>>2]|0;if((l|0)<=(m|0)|(k|0)>(r|0)|(l|0)>(r|0)|(l|0)<(k|0)){break}if((a[e]&1)==0){r=0;i=d;return r|0}j=FW(32)|0;ge(j,(c[b+8>>2]|0)+k|0,l-k|0);c[b+20>>2]=j;co(b);j=b+128|0;a:do{if((c[j>>2]|0)==3102){k=c[b+320>>2]|0;if((k|0)==0){c[b+336>>2]=1;r=we(584)|0;c[b+328>>2]=r;a[r+48|0]=0;c[r+108>>2]=0;c[r+152>>2]=0;c[r+212>>2]=0;c[r+256>>2]=0;h[r+264>>3]=.039625;c[r+272>>2]=7;c[r+276>>2]=1;a[r+288|0]=0;a[r+304|0]=0;c[r+408>>2]=0;c[r+512>>2]=0;a[r+517|0]=0;h[r+520>>3]=0.0;c[r+528>>2]=0;h[r+536>>3]=.06;h[r+568>>3]=0.0;a[r+576|0]=0;bX(r+544|0,0,17)|0;break}$n(b,k,f,e);if((a[e]&1)==0){r=0;i=d;return r|0}l=c[f+4>>2]|0;m=b+336|0;c[m>>2]=l;n=b+328|0;c[n>>2]=ye(l,584)|0;if((c[m>>2]|0)<=0){break}k=c[f+12>>2]|0;o=(c[g>>2]|0)+3|0;g=c[f+8>>2]|0;q=c[f+16>>2]|0;r=0;while(1){if((l|0)<=(r|0)){f=20;break}f=(WG(b,o+(da(g,r)|0)|0,g,e)|0)+k|0;p=(WG(b,o+(da(g,r+1|0)|0)|0,g,e)|0)+k|0;if((f|0)<(k|0)){f=23;break}if((p|0)<=(k|0)|(f|0)>(q|0)|(p|0)>(q|0)|(p|0)<(f|0)){f=23;break}if((a[e]&1)==0){b=0;f=38;break}fo(b,f,p-f|0,(c[n>>2]|0)+(r*584|0)|0);r=r+1|0;if((r|0)>=(c[m>>2]|0)){break a}}if((f|0)==20){a[e]=0;r=0;i=d;return r|0}else if((f|0)==23){a[e]=0;r=0;i=d;return r|0}else if((f|0)==38){i=d;return b|0}}else{r=we(584)|0;c[b+328>>2]=r;eo(b,c[b+304>>2]|0,c[b+300>>2]|0,r)}}while(0);if((a[e]&1)==0){r=0;i=d;return r|0}f=c[b+296>>2]|0;if((f|0)<1){a[e]=0;r=0;i=d;return r|0}$n(b,f,b+108|0,e);if((a[e]&1)==0){r=0;i=d;return r|0}c[b+332>>2]=c[b+112>>2];do{if((c[j>>2]|0)==3102){go(b);if((a[e]&1)==0){b=0}else{break}i=d;return b|0}}while(0);if(!(ho(b)|0)){a[e]=0;r=0;i=d;return r|0}r=c[j>>2]|0;do{if(!((r|0)==3102|(r|0)==3092)){io(b);if((a[e]&1)==0){b=0}else{break}i=d;return b|0}}while(0);r=(a[e]&1)!=0;i=d;return r|0}}while(0);a[e]=0;r=0;i=d;return r|0}function Vn(a){a=a|0;var b=0,d=0,e=0;b=i;d=i;i=i+8|0;a=RG(a,d)|0;if((a|0)==0){e=0;i=b;return e|0}e=FW(1160)|0;OG(e,a,c[d>>2]|0,1);c[e>>2]=53784;c[e+20>>2]=0;c[e+24>>2]=0;c[e+328>>2]=0;c[e+340>>2]=0;c[e+344>>2]=0;if(Un(e)|0){i=b;return e|0}if((e|0)==0){e=0;i=b;return e|0}fd[c[(c[e>>2]|0)+4>>2]&511](e);e=0;i=b;return e|0}function Wn(a){a=a|0;var b=0;b=i;Xn(a);HW(a);i=b;return}function Xn(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=53784;d=c[a+20>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=a+24|0;f=c[d>>2]|0;if(!((f|0)==0|(f|0)==193784|(f|0)==197136)){e=0;do{Fe(c[f+(e<<2)>>2]|0);e=e+1|0;f=c[d>>2]|0}while((e|0)<256);Fe(f)}d=c[a+328>>2]|0;if((d|0)!=0){Fe(d)}d=c[a+340>>2]|0;if((d|0)!=0){Fe(d)}d=c[a+344>>2]|0;if((d|0)==0|(d|0)==200672|(d|0)==201136|(d|0)==201472){QG(a);i=b;return}Fe(d);QG(a);i=b;return}function Yn(a){a=a|0;var b=0;b=i;a=c[a+20>>2]|0;if((a|0)==0){a=0;i=b;return a|0}a=c[a+28>>2]|0;i=b;return a|0}function Zn(a){a=a|0;i=i;return c[a+24>>2]|0}function _n(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;if((c[a+128>>2]|0)!=3102){m=0;k=0;l=d;c[l>>2]=k;i=f;return m|0}g=a+332|0;k=c[g>>2]|0;if((k|0)>0){h=c[a+344>>2]|0;m=0;j=0;do{l=e[h+(m<<1)>>1]|0;j=(l|0)>(j|0)?l:j;m=m+1|0;}while((m|0)<(k|0));h=j+1|0}else{h=1}j=ye(h,2)|0;bX(j|0,0,h<<1|0)|0;if((c[g>>2]|0)<=0){m=j;k=h;l=d;c[l>>2]=k;i=f;return m|0}a=a+344|0;k=0;while(1){b[j+((e[(c[a>>2]|0)+(k<<1)>>1]|0)<<1)>>1]=k;k=k+1|0;if((k|0)<(c[g>>2]|0)){}else{break}}m=d;c[m>>2]=h;i=f;return j|0}function $n(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;c[e>>2]=d;p=UG(b,d,f)|0;j=e+4|0;c[j>>2]=p;if((p|0)==0){c[e+8>>2]=0;p=d+2|0;c[e+16>>2]=p;c[e+12>>2]=p;i=g;return}o=SG(b,d+2|0,f)|0;m=e+8|0;c[m>>2]=o;if((o+ -1|0)>>>0>3){a[f]=0;o=c[m>>2]|0}k=d+3|0;n=c[j>>2]|0;p=(da(n+1|0,o)|0)+k|0;l=p+ -1|0;d=e+12|0;c[d>>2]=l;if((p|0)<1){h=7}else{if((p|0)>(c[b+12>>2]|0)){h=7}}if((h|0)==7){a[f]=0;o=c[m>>2]|0;n=c[j>>2]|0;l=c[d>>2]|0}h=(WG(b,(da(o,n)|0)+k|0,o,f)|0)+l|0;c[e+16>>2]=h;do{if((h|0)>=(c[d>>2]|0)){if((h|0)>(c[b+12>>2]|0)){break}i=g;return}}while(0);a[f]=0;i=g;return}function ao(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;do{if((e|0)>=0){if((c[d+4>>2]|0)<=(e|0)){break}l=d+12|0;k=c[l>>2]|0;n=d+8|0;m=c[n>>2]|0;k=(WG(b,(c[d>>2]|0)+3+(da(m,e)|0)|0,m,g)|0)+k|0;m=c[l>>2]|0;n=c[n>>2]|0;b=(WG(b,(c[d>>2]|0)+3+(da(n,e+1|0)|0)|0,n,g)|0)+m|0;e=c[l>>2]|0;if((k|0)<(e|0)){j=6}else{n=c[d+16>>2]|0;if((b|0)<=(e|0)|(k|0)>(n|0)|(b|0)>(n|0)|(b|0)<(k|0)){j=6}}if((j|0)==6){a[g]=0}c[f>>2]=k;c[f+4>>2]=b-k;i=h;return}}while(0);a[g]=0;i=h;return}function bo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0.0;j=i;g=i;i=i+8|0;l=i;i=i+72|0;p=d+1|0;o=SG(b,d,f)|0;do{if((o|0)==28){l=(SG(b,p,f)|0)<<8;l=l|(SG(b,d+2|0,f)|0);e=d+3|0;n=1;m=0;q=+(((l&32768|0)==0?l:l|-65536)|0)}else{m=e^1;if((o|0)==29&m){p=(SG(b,p,f)|0)<<8;p=(p|(SG(b,d+2|0,f)|0))<<8;p=(p|(SG(b,d+3|0,f)|0))<<8;e=d+5|0;n=1;m=0;q=+(p|(SG(b,d+4|0,f)|0)|0);break}if((o|0)==30&m){n=0;while(1){e=p+1|0;m=SG(b,p,f)|0;d=m>>4;m=m&15;if((d|0)==15){break}o=n+1|0;a[l+n|0]=a[53792+d|0]|0;if((o|0)==64){n=64;break}if((d|0)==12){a[l+o|0]=45;n=n+2|0}else{n=o}if((n|0)==64|(m|0)==15){break}d=n+1|0;a[l+n|0]=a[53792+m|0]|0;if((d|0)==64){n=64;break}if((m|0)==12){a[l+d|0]=45;n=n+2|0}else{n=d}if((n|0)<64){p=e}else{break}}a[l+n|0]=0;n=1;m=1;q=+Ie(l);break}if((o+ -32|0)>>>0<215){e=p;n=1;m=0;q=+(o+ -139|0);break}if((o+ -247|0)>>>0<4){e=d+2|0;n=1;m=0;q=+((o<<8)+ -63124+(SG(b,p,f)|0)|0);break}if((o+ -251|0)>>>0<4){e=d+2|0;n=1;m=0;q=+(64148-(o<<8)-(SG(b,p,f)|0)|0);break}if((o|0)==255&e){p=(SG(b,p,f)|0)<<8;p=(p|(SG(b,d+2|0,f)|0))<<8;p=(p|(SG(b,d+3|0,f)|0))<<8;e=d+5|0;n=1;m=1;q=+(p|(SG(b,d+4|0,f)|0)|0)*152587890625.0e-16;break}if((o|0)==12){e=(SG(b,p,f)|0)+3072|0;c[k>>2]=e;c[k+4>>2]=0;e=d+2|0;n=0;m=0;q=+h[k>>3];break}else{c[k>>2]=o;c[k+4>>2]=0;e=p;n=0;m=0;q=+h[k>>3];break}}}while(0);l=b+1144|0;f=c[l>>2]|0;if((f|0)>=49){i=j;return e|0}c[l>>2]=f+1;p=b+360+(f<<4)|0;a[p]=n;a[b+360+(f<<4)+1|0]=m;$W(p+2|0,g|0,6)|0;h[b+360+(f<<4)+8>>3]=q;i=j;return e|0}function co(b){b=b|0;var d=0,e=0,f=0,g=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,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;F=i;Q=b+128|0;c[Q>>2]=-1;d=b+132|0;B=b+136|0;A=b+140|0;u=b+144|0;C=b+148|0;L=b+152|0;f=b+156|0;v=b+160|0;y=b+168|0;bX(d|0,0,36)|0;h[y>>3]=-100.0;D=b+176|0;h[D>>3]=50.0;x=b+184|0;c[x>>2]=0;M=b+188|0;c[M>>2]=2;m=b+192|0;h[m>>3]=.001;n=b+200|0;o=b+208|0;p=b+216|0;bX(n|0,0,16)|0;h[p>>3]=.001;q=b+224|0;r=b+232|0;s=b+240|0;K=b+244|0;G=b+248|0;H=b+256|0;I=b+264|0;J=b+272|0;g=b+280|0;w=b+288|0;P=b+292|0;E=b+296|0;N=b+300|0;O=b+304|0;j=b+308|0;k=b+312|0;l=b+316|0;z=b+320|0;t=b+324|0;e=b+352|0;bX(q|0,0,17)|0;bX(K|0,0,84)|0;if((c[b+52>>2]|0)<=0){a[e]=0;c[b+1144>>2]=0;i=F;return}S=b+60|0;Z=c[S>>2]|0;Y=b+48|0;_=b+56|0;Z=(WG(b,(c[Y>>2]|0)+3|0,c[_>>2]|0,e)|0)+Z|0;R=c[S>>2]|0;_=c[_>>2]|0;R=(WG(b,(c[Y>>2]|0)+3+_|0,_,e)|0)+R|0;S=c[S>>2]|0;if((Z|0)<(S|0)){T=5}else{_=c[b+64>>2]|0;if((R|0)<=(S|0)|(Z|0)>(_|0)|(R|0)>(_|0)|(R|0)<(Z|0)){T=5}}if((T|0)==5){a[e]=0}T=b+1144|0;c[T>>2]=0;if((R-Z|0)<=0){i=F;return}U=b+368|0;V=b+384|0;W=b+400|0;S=b+416|0;X=b+432|0;Y=b+448|0;while(1){Z=bo(b,Z,0,e)|0;if((a[e]&1)==0){T=38;break}_=(c[T>>2]|0)+ -1|0;if((a[b+360+(_<<4)|0]&1)==0){c[T>>2]=_;_=b+360+(_<<4)+8|0;if((c[Q>>2]|0)<0){c[Q>>2]=c[_>>2]}switch(c[_>>2]|0){case 3073:{c[f>>2]=~~+h[U>>3];break};case 3080:{h[g>>3]=+h[U>>3];break};case 3102:{c[j>>2]=~~+h[U>>3];c[k>>2]=~~+h[V>>3];c[l>>2]=~~+h[W>>3];break};case 3079:{h[m>>3]=+h[U>>3];h[n>>3]=+h[V>>3];h[o>>3]=+h[W>>3];h[p>>3]=+h[S>>3];h[q>>3]=+h[X>>3];h[r>>3]=+h[Y>>3];a[s]=1;break};case 3109:{c[t>>2]=~~+h[U>>3];break};case 2:{c[u>>2]=~~+h[U>>3];break};case 3074:{h[v>>3]=+h[U>>3];break};case 15:{c[w>>2]=~~+h[U>>3];break};case 3077:{c[x>>2]=~~+h[U>>3];break};case 3075:{h[y>>3]=+h[U>>3];break};case 3108:{c[z>>2]=~~+h[U>>3];break};case 3072:{c[A>>2]=~~+h[U>>3];break};case 1:{c[B>>2]=~~+h[U>>3];break};case 3:{c[C>>2]=~~+h[U>>3];break};case 3076:{h[D>>3]=+h[U>>3];break};case 17:{c[E>>2]=~~+h[U>>3];break};case 0:{c[d>>2]=~~+h[U>>3];break};case 5:{h[G>>3]=+h[U>>3];h[H>>3]=+h[V>>3];h[I>>3]=+h[W>>3];h[J>>3]=+h[S>>3];break};case 13:{c[K>>2]=~~+h[U>>3];break};case 4:{c[L>>2]=~~+h[U>>3];break};case 3078:{c[M>>2]=~~+h[U>>3];break};case 18:{c[N>>2]=~~+h[U>>3];c[O>>2]=~~+h[V>>3];break};case 16:{c[P>>2]=~~+h[U>>3];break};default:{}}c[T>>2]=0}if((Z|0)<(R|0)){}else{T=38;break}}if((T|0)==38){i=F;return}}function eo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=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.0,O=0,P=0;g=i;a[f+48|0]=0;n=f+108|0;c[n>>2]=0;B=f+152|0;c[B>>2]=0;u=f+212|0;c[u>>2]=0;t=f+256|0;c[t>>2]=0;p=f+264|0;h[p>>3]=.039625;q=f+272|0;c[q>>2]=7;v=f+276|0;c[v>>2]=1;o=f+288|0;a[o]=0;s=f+304|0;a[s]=0;E=f+408|0;c[E>>2]=0;C=f+512|0;c[C>>2]=0;A=f+517|0;a[A]=0;z=f+520|0;h[z>>3]=0.0;r=f+528|0;c[r>>2]=0;m=f+536|0;h[m>>3]=.06;D=f+544|0;y=f+548|0;k=f+552|0;l=f+560|0;w=f+568|0;h[w>>3]=0.0;x=f+576|0;a[x]=0;bX(D|0,0,17)|0;if((d|0)==0|(e|0)==0){i=g;return}F=b+1144|0;c[F>>2]=0;j=b+352|0;G=e+d|0;if((e|0)<=0){i=g;return}K=b+368|0;H=f+280|0;I=f+296|0;J=f+516|0;e=b+361|0;L=d;while(1){L=bo(b,L,0,j)|0;if((a[j]&1)==0){j=40;break}M=(c[F>>2]|0)+ -1|0;if((a[b+360+(M<<4)|0]&1)==0){c[F>>2]=M;switch(c[b+360+(M<<4)+8>>2]|0){case 20:{h[k>>3]=+h[K>>3];a[l]=a[e]&1;break};case 3090:{h[m>>3]=+h[K>>3];break};case 6:{M=(M|0)>14?14:M;if((M|0)>0){O=0;P=0;do{P=~~+h[b+360+(O<<4)+8>>3]+P|0;c[f+52+(O<<2)>>2]=P;O=O+1|0;}while((O|0)<(M|0))}c[n>>2]=M;break};case 10:{h[H>>3]=+h[K>>3];a[o]=1;break};case 3081:{h[p>>3]=+h[K>>3];break};case 3082:{c[q>>2]=~~+h[K>>3];break};case 3089:{c[r>>2]=~~+h[K>>3];break};case 11:{h[I>>3]=+h[K>>3];a[s]=1;break};case 9:{O=(M|0)>10?10:M;if((O|0)>0){M=0;P=0;do{P=~~+h[b+360+(M<<4)+8>>3]+P|0;c[f+216+(M<<2)>>2]=P;M=M+1|0;}while((M|0)<(O|0))}c[t>>2]=O;break};case 8:{M=(M|0)>14?14:M;if((M|0)>0){O=0;P=0;do{P=~~+h[b+360+(O<<4)+8>>3]+P|0;c[f+156+(O<<2)>>2]=P;O=O+1|0;}while((O|0)<(M|0))}c[u>>2]=M;break};case 3083:{c[v>>2]=~~+h[K>>3];break};case 21:{h[w>>3]=+h[K>>3];a[x]=a[e]&1;break};case 19:{c[y>>2]=~~+h[K>>3]+d;break};case 3087:{h[z>>3]=+h[K>>3];break};case 3086:{a[J]=+h[K>>3]!=0.0|0;a[A]=1;break};case 7:{M=(M|0)>10?10:M;if((M|0)>0){O=0;P=0;do{P=~~+h[b+360+(O<<4)+8>>3]+P|0;c[f+112+(O<<2)>>2]=P;O=O+1|0;}while((O|0)<(M|0))}c[B>>2]=M;break};case 3085:{M=(M|0)>12?12:M;if((M|0)>0){O=0;N=0.0;do{N=N+ +h[b+360+(O<<4)+8>>3];h[f+416+(O<<3)>>3]=N;O=O+1|0;}while((O|0)<(M|0))}c[C>>2]=M;break};case 3091:{c[D>>2]=~~+h[K>>3];break};case 3084:{M=(M|0)>12?12:M;if((M|0)>0){O=0;N=0.0;do{N=N+ +h[b+360+(O<<4)+8>>3];h[f+312+(O<<3)>>3]=N;O=O+1|0;}while((O|0)<(M|0))}c[E>>2]=M;break};default:{}}c[F>>2]=0}if((L|0)<(G|0)){}else{j=40;break}}if((j|0)==40){i=g;return}}function fo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;j=i;q=b+1144|0;c[q>>2]=0;u=e+d|0;v=b+352|0;e=b+368|0;w=b+384|0;x=b+400|0;y=b+416|0;s=b+432|0;t=b+448|0;k=0.0;l=0.0;r=0.0;m=0.0;n=0.0;o=0.0;p=0;a:while(1){do{if((d|0)>=(u|0)){q=0;e=0;break a}d=bo(b,d,0,v)|0;if((a[v]&1)==0){g=14;break a}z=c[q>>2]|0;A=z+ -1|0;}while((a[b+360+(A<<4)|0]&1)!=0);A=c[b+360+(A<<4)+8>>2]|0;if((A|0)==18){g=7;break}else if((A|0)==3079){k=+h[e>>3];l=+h[w>>3];r=+h[x>>3];m=+h[y>>3];n=+h[s>>3];o=+h[t>>3];p=1}c[q>>2]=0}if((g|0)==14){i=j;return}do{if((g|0)==7){if((z|0)>=3){q=~~+h[w>>3];e=~~+h[e>>3];break}a[v]=0;i=j;return}}while(0);eo(b,q,e,f);if(!p){i=j;return}h[f>>3]=k;h[f+8>>3]=l;h[f+16>>3]=r;h[f+24>>3]=m;h[f+32>>3]=n;h[f+40>>3]=o;a[f+48|0]=1;i=j;return}function go(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;e=b+332|0;g=we(c[e>>2]|0)|0;f=b+340|0;c[f>>2]=g;l=c[b+324>>2]|0;if((l|0)==0){if((c[e>>2]|0)>0){b=0}else{i=d;return}while(1){a[g+b|0]=0;b=b+1|0;if((b|0)>=(c[e>>2]|0)){break}g=c[f>>2]|0}i=d;return}j=l+1|0;g=b+352|0;h=SG(b,l,g)|0;if((a[g]&1)==0){i=d;return}if((h|0)==0){if(XG(b,j,c[e>>2]|0)|0){$W(c[f>>2]|0,(c[b+8>>2]|0)+j|0,c[e>>2]|0)|0;i=d;return}else{a[g]=0;i=d;return}}else if((h|0)==3){h=UG(b,j,g)|0;k=UG(b,l+3|0,g)|0;if((h|0)<1){i=d;return}j=1;m=l+5|0;while(1){n=SG(b,m,g)|0;l=UG(b,m+1|0,g)|0;if((a[g]&1)==0){e=22;break}m=m+3|0;if((k|0)>(l|0)){e=18;break}if((l|0)>(c[e>>2]|0)){e=18;break}if((k|0)<(l|0)){n=n&255;do{a[(c[f>>2]|0)+k|0]=n;k=k+1|0;}while((k|0)<(l|0))}if((j|0)<(h|0)){j=j+1|0;k=l}else{e=22;break}}if((e|0)==18){a[g]=0;i=d;return}else if((e|0)==22){i=d;return}}else{if((c[e>>2]|0)>0){b=0}else{i=d;return}do{a[(c[f>>2]|0)+b|0]=0;b=b+1|0;}while((b|0)<(c[e>>2]|0));i=d;return}}function ho(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;h=d+288|0;f=c[h>>2]|0;if((f|0)==2){c[d+344>>2]=201472;o=1;i=e;return o|0}else if((f|0)==0){c[d+344>>2]=200672;o=1;i=e;return o|0}else if((f|0)==1){c[d+344>>2]=201136;o=1;i=e;return o|0}else{f=d+332|0;j=ye(c[f>>2]|0,2)|0;g=d+344|0;c[g>>2]=j;a:do{if((c[f>>2]|0)>0){k=0;while(1){b[j+(k<<1)>>1]=0;k=k+1|0;if((k|0)>=(c[f>>2]|0)){break a}j=c[g>>2]|0}}}while(0);j=c[h>>2]|0;k=j+1|0;h=d+352|0;j=SG(d,j,h)|0;b:do{if((j|0)==0){if((c[f>>2]|0)>1){j=1}else{break}while(1){o=(UG(d,k,h)|0)&65535;b[(c[g>>2]|0)+(j<<1)>>1]=o;if((a[h]&1)==0){break b}j=j+1|0;if((j|0)<(c[f>>2]|0)){k=k+2|0}else{break}}}else if((j|0)==1){if((c[f>>2]|0)>1){l=1}else{break}while(1){m=UG(d,k,h)|0;j=k+3|0;k=SG(d,k+2|0,h)|0;if((a[h]&1)==0){break b}c:do{if((k|0)>=0){o=0;while(1){if((l|0)>=(c[f>>2]|0)){break c}n=l+1|0;b[(c[g>>2]|0)+(l<<1)>>1]=m;if((o|0)<(k|0)){m=m+1|0;l=n;o=o+1|0}else{l=n;break}}}}while(0);if((l|0)<(c[f>>2]|0)){k=j}else{break}}}else if((j|0)==2){if((c[f>>2]|0)>1){m=1}else{break}do{l=UG(d,k,h)|0;j=UG(d,k+2|0,h)|0;k=k+4|0;if((a[h]&1)==0){break b}d:do{if((j|0)>=0){o=0;while(1){if((m|0)>=(c[f>>2]|0)){break d}n=m+1|0;b[(c[g>>2]|0)+(m<<1)>>1]=l;if((o|0)<(j|0)){l=l+1|0;m=n;o=o+1|0}else{m=n;break}}}}while(0);}while((m|0)<(c[f>>2]|0))}}while(0);if((a[h]&1)!=0){o=1;i=e;return o|0}Fe(c[g>>2]|0);c[g>>2]=0;o=0;i=e;return o|0}return 0}function io(d){d=d|0;var 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,A=0,B=0,C=0;e=i;h=i;i=i+8|0;g=h;o=i;i=i+8|0;n=o;p=i;i=i+8|0;q=p;f=i;i=i+256|0;j=f;l=d+292|0;k=c[l>>2]|0;if((k|0)==1){c[d+24>>2]=197136;i=e;return}else if((k|0)==0){c[d+24>>2]=193784;i=e;return}else{m=ye(256,4)|0;k=d+24|0;c[k>>2]=m;r=0;while(1){c[m+(r<<2)>>2]=0;r=r+1|0;if((r|0)>=256){break}m=c[k>>2]|0}x=c[l>>2]|0;v=x+1|0;l=d+352|0;m=SG(d,x,l)|0;if((a[l]&1)==0){i=e;return}r=m&127;a:do{if((r|0)==1){q=SG(d,v,l)|0;if((a[l]&1)==0){i=e;return}v=x+2|0;if((q|0)<=0){break}r=d+332|0;u=d+344|0;p=d+68|0;s=n+4|0;t=d+8|0;w=0;y=1;while(1){A=SG(d,v,l)|0;x=SG(d,x+3|0,l)|0;if((a[l]&1)==0){break}b:do{if((x|0)>=0){z=0;while(1){if((y|0)>=(c[r>>2]|0)){break b}if((A|0)<256){B=c[(c[k>>2]|0)+(A<<2)>>2]|0;if((B|0)!=0){Fe(B)}C=b[(c[u>>2]|0)+(y<<1)>>1]|0;B=C&65535;do{if((C&65535)<391){eX(j|0,c[199104+(B<<2)>>2]|0)|0}else{ao(d,p,B+ -391|0,n,l);if((a[l]&1)==0){a[f]=0;break}else{B=c[s>>2]|0;C=(B|0)>255?255:B;hX(j|0,(c[t>>2]|0)+(c[o>>2]|0)|0,C|0)|0;a[j+C|0]=0;break}}}while(0);C=Ge(j)|0;c[(c[k>>2]|0)+(A<<2)>>2]=C}y=y+1|0;if((z|0)>=(x|0)){break b}A=A+1|0;z=z+1|0}}}while(0);w=w+1|0;x=v+2|0;if((w|0)<(q|0)){C=v;v=x;x=C}else{v=x;break a}}i=e;return}else if((r|0)==0){n=SG(d,v,l)|0;if((a[l]&1)==0){i=e;return}v=x+2|0;o=c[d+332>>2]|0;n=(n|0)<(o|0)?n+1|0:o;if((n|0)<=1){break}s=d+344|0;o=d+68|0;t=q+4|0;r=d+8|0;w=1;while(1){u=v+1|0;v=SG(d,v,l)|0;if((a[l]&1)==0){break}x=c[(c[k>>2]|0)+(v<<2)>>2]|0;if((x|0)!=0){Fe(x)}C=b[(c[s>>2]|0)+(w<<1)>>1]|0;x=C&65535;do{if((C&65535)<391){eX(j|0,c[199104+(x<<2)>>2]|0)|0}else{ao(d,o,x+ -391|0,q,l);if((a[l]&1)==0){a[f]=0;break}else{x=c[t>>2]|0;C=(x|0)>255?255:x;hX(j|0,(c[r>>2]|0)+(c[p>>2]|0)|0,C|0)|0;a[j+C|0]=0;break}}}while(0);C=Ge(j)|0;c[(c[k>>2]|0)+(v<<2)>>2]=C;w=w+1|0;if((w|0)<(n|0)){v=u}else{v=u;break a}}i=e;return}}while(0);if((m&128|0)==0){i=e;return}p=SG(d,v,l)|0;if(!((a[l]&1)!=0&(p|0)>0)){i=e;return}m=d+68|0;n=g+4|0;o=d+8|0;q=0;r=v+1|0;while(1){s=SG(d,r,l)|0;if((a[l]&1)==0){d=52;break}t=UG(d,r+1|0,l)|0;r=r+3|0;if((a[l]&1)==0){d=52;break}u=c[(c[k>>2]|0)+(s<<2)>>2]|0;if((u|0)!=0){Fe(u)}do{if((t|0)<391){eX(j|0,c[199104+(t<<2)>>2]|0)|0}else{ao(d,m,t+ -391|0,g,l);if((a[l]&1)==0){a[f]=0;break}else{t=c[n>>2]|0;C=(t|0)>255?255:t;hX(j|0,(c[o>>2]|0)+(c[h>>2]|0)|0,C|0)|0;a[j+C|0]=0;break}}}while(0);C=Ge(j)|0;c[(c[k>>2]|0)+(s<<2)>>2]=C;q=q+1|0;if((q|0)>=(p|0)){d=52;break}}if((d|0)==52){i=e;return}}}function jo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;a[b]=d&1;d=b+4|0;c[d>>2]=7;g=ye(7,4)|0;f=b+12|0;c[f>>2]=g;if((c[d>>2]|0)>0){h=0}else{h=b+8|0;c[h>>2]=0;i=e;return}while(1){c[g+(h<<2)>>2]=0;h=h+1|0;if((h|0)>=(c[d>>2]|0)){break}g=c[f>>2]|0}h=b+8|0;c[h>>2]=0;i=e;return}function ko(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;f=b+4|0;h=c[f>>2]|0;e=b+12|0;if((h|0)<=0){l=c[e>>2]|0;Fe(l);i=d;return}j=c[e>>2]|0;g=0;do{k=j+(g<<2)|0;l=c[k>>2]|0;if((l|0)!=0){h=l;do{c[k>>2]=c[h+8>>2];do{if((a[b]&1)!=0){j=c[h>>2]|0;if((j|0)==0){break}ke(j);HW(j)}}while(0);HW(h);j=c[e>>2]|0;k=j+(g<<2)|0;h=c[k>>2]|0;}while((h|0)!=0);h=c[f>>2]|0}g=g+1|0;}while((g|0)<(h|0));Fe(j);i=d;return}function lo(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;h=i;g=a+8|0;j=a+4|0;if((c[g>>2]|0)>=(c[j>>2]|0)){mo(a)}f=FW(12)|0;c[f>>2]=b;c[f+4>>2]=e;e=c[b+24>>2]|0;if((e|0)>0){l=0;k=0;b=c[b+28>>2]|0;while(1){l=(d[b]|0)+(l*17|0)|0;k=k+1|0;if((k|0)<(e|0)){b=b+1|0}else{break}}}else{l=0}l=(c[a+12>>2]|0)+(((l>>>0)%((c[j>>2]|0)>>>0)|0)<<2)|0;c[f+8>>2]=c[l>>2];c[l>>2]=f;c[g>>2]=(c[g>>2]|0)+1;i=h;return}function mo(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;b=a+4|0;f=c[b>>2]|0;a=a+12|0;g=c[a>>2]|0;h=f<<1|1;c[b>>2]=h;h=ye(h,4)|0;c[a>>2]=h;a:do{if((c[b>>2]|0)>0){j=0;while(1){c[h+(j<<2)>>2]=0;j=j+1|0;if((j|0)>=(c[b>>2]|0)){break a}h=c[a>>2]|0}}}while(0);if((f|0)>0){j=0}else{Fe(g);i=e;return}do{h=g+(j<<2)|0;k=c[h>>2]|0;if((k|0)!=0){do{l=k+8|0;c[h>>2]=c[l>>2];n=c[k>>2]|0;m=c[n+24>>2]|0;if((m|0)>0){p=0;o=0;n=c[n+28>>2]|0;while(1){p=(d[n]|0)+(p*17|0)|0;o=o+1|0;if((o|0)<(m|0)){n=n+1|0}else{break}}}else{p=0}p=(p>>>0)%((c[b>>2]|0)>>>0)|0;c[l>>2]=c[(c[a>>2]|0)+(p<<2)>>2];c[(c[a>>2]|0)+(p<<2)>>2]=k;k=c[h>>2]|0;}while((k|0)!=0)}j=j+1|0;}while((j|0)<(f|0));Fe(g);i=e;return}function no(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;h=i;g=a+8|0;j=a+4|0;if((c[g>>2]|0)>=(c[j>>2]|0)){mo(a)}f=FW(12)|0;c[f>>2]=b;c[f+4>>2]=e;e=c[b+24>>2]|0;if((e|0)>0){l=0;k=0;b=c[b+28>>2]|0;while(1){l=(d[b]|0)+(l*17|0)|0;k=k+1|0;if((k|0)<(e|0)){b=b+1|0}else{break}}}else{l=0}l=(c[a+12>>2]|0)+(((l>>>0)%((c[j>>2]|0)>>>0)|0)<<2)|0;c[f+8>>2]=c[l>>2];c[l>>2]=f;c[g>>2]=(c[g>>2]|0)+1;i=h;return}function oo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;h=c[b+24>>2]|0;if((h|0)>0){k=0;j=0;g=c[b+28>>2]|0;while(1){k=(d[g]|0)+(k*17|0)|0;j=j+1|0;if((j|0)<(h|0)){g=g+1|0}else{break}}}else{k=0}a=c[(c[a+12>>2]|0)+(((k>>>0)%((c[a+4>>2]|0)>>>0)|0)<<2)>>2]|0;if((a|0)==0){k=0;i=e;return k|0}while(1){if((se(c[a>>2]|0,b)|0)==0){break}a=c[a+8>>2]|0;if((a|0)==0){b=0;f=8;break}}if((f|0)==8){i=e;return b|0}k=c[a+4>>2]|0;i=e;return k|0}function po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;g=a[d]|0;if(g<<24>>24==0){j=0}else{j=0;h=d;while(1){j=(j*17|0)+(g&255)|0;h=h+1|0;g=a[h]|0;if(g<<24>>24==0){break}else{}}}b=c[(c[b+12>>2]|0)+(((j>>>0)%((c[b+4>>2]|0)>>>0)|0)<<2)>>2]|0;if((b|0)==0){j=0;i=f;return j|0}while(1){if((te(c[b>>2]|0,d)|0)==0){break}b=c[b+8>>2]|0;if((b|0)==0){d=0;e=7;break}}if((e|0)==7){i=f;return d|0}j=c[b+4>>2]|0;i=f;return j|0}function qo(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;j=c[e+24>>2]|0;if((j|0)>0){k=0;l=0;h=c[e+28>>2]|0;while(1){k=(d[h]|0)+(k*17|0)|0;l=l+1|0;if((l|0)<(j|0)){h=h+1|0}else{break}}}else{k=0}j=(k>>>0)%((c[b+4>>2]|0)>>>0)|0;k=b+12|0;h=c[(c[k>>2]|0)+(j<<2)>>2]|0;if((h|0)==0){l=0;i=f;return l|0}while(1){if((se(c[h>>2]|0,e)|0)==0){break}h=c[h+8>>2]|0;if((h|0)==0){b=0;g=13;break}}if((g|0)==13){i=f;return b|0}g=(c[k>>2]|0)+(j<<2)|0;while(1){e=c[g>>2]|0;if((e|0)==(h|0)){break}else{g=e+8|0}}c[g>>2]=c[h+8>>2];do{if((a[b]&1)!=0){g=c[h>>2]|0;if((g|0)==0){break}ke(g);HW(g)}}while(0);l=c[h+4>>2]|0;HW(h);k=b+8|0;c[k>>2]=(c[k>>2]|0)+ -1;i=f;return l|0}function ro(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;j=c[e+24>>2]|0;if((j|0)>0){k=0;l=0;h=c[e+28>>2]|0;while(1){k=(d[h]|0)+(k*17|0)|0;l=l+1|0;if((l|0)<(j|0)){h=h+1|0}else{break}}}else{k=0}j=(k>>>0)%((c[b+4>>2]|0)>>>0)|0;k=b+12|0;h=c[(c[k>>2]|0)+(j<<2)>>2]|0;if((h|0)==0){l=0;i=f;return l|0}while(1){if((se(c[h>>2]|0,e)|0)==0){break}h=c[h+8>>2]|0;if((h|0)==0){b=0;g=13;break}}if((g|0)==13){i=f;return b|0}g=(c[k>>2]|0)+(j<<2)|0;while(1){e=c[g>>2]|0;if((e|0)==(h|0)){break}else{g=e+8|0}}c[g>>2]=c[h+8>>2];do{if((a[b]&1)!=0){g=c[h>>2]|0;if((g|0)==0){break}ke(g);HW(g)}}while(0);l=c[h+4>>2]|0;HW(h);k=b+8|0;c[k>>2]=(c[k>>2]|0)+ -1;i=f;return l|0}function so(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;g=a[d]|0;if(g<<24>>24==0){j=0}else{j=0;h=d;while(1){j=(j*17|0)+(g&255)|0;h=h+1|0;g=a[h]|0;if(g<<24>>24==0){break}else{}}}h=(j>>>0)%((c[b+4>>2]|0)>>>0)|0;j=b+12|0;g=c[(c[j>>2]|0)+(h<<2)>>2]|0;if((g|0)==0){j=0;i=e;return j|0}while(1){if((te(c[g>>2]|0,d)|0)==0){break}g=c[g+8>>2]|0;if((g|0)==0){b=0;f=12;break}}if((f|0)==12){i=e;return b|0}d=(c[j>>2]|0)+(h<<2)|0;while(1){f=c[d>>2]|0;if((f|0)==(g|0)){break}else{d=f+8|0}}c[d>>2]=c[g+8>>2];do{if((a[b]&1)!=0){f=c[g>>2]|0;if((f|0)==0){break}ke(f);HW(f)}}while(0);j=c[g+4>>2]|0;HW(g);h=b+8|0;c[h>>2]=(c[h>>2]|0)+ -1;i=e;return j|0}function to(a,b){a=a|0;b=b|0;var d=0;a=i;d=FW(8)|0;c[b>>2]=d;c[d>>2]=-1;c[d+4>>2]=0;i=a;return}function uo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;j=c[b>>2]|0;if((j|0)==0){k=0;i=f;return k|0}k=j+4|0;h=c[k>>2]|0;if((h|0)==0){h=j;g=4}else{c[k>>2]=c[h+8>>2];h=c[b>>2]|0;j=c[h+4>>2]|0;if((j|0)==0){g=4}}a:do{if((g|0)==4){g=a+4|0;a=a+12|0;while(1){k=(c[h>>2]|0)+1|0;c[h>>2]=k;h=c[b>>2]|0;if((k|0)==(c[g>>2]|0)){break}c[h+4>>2]=c[(c[a>>2]|0)+(c[h>>2]<<2)>>2];h=c[b>>2]|0;j=c[h+4>>2]|0;if((j|0)!=0){break a}}if((h|0)!=0){HW(h)}c[b>>2]=0;k=0;i=f;return k|0}}while(0);c[d>>2]=c[j>>2];c[e>>2]=c[(c[(c[b>>2]|0)+4>>2]|0)+4>>2];k=1;i=f;return k|0}function vo(a,b){a=a|0;b=b|0;var d=0;a=i;d=c[b>>2]|0;if((d|0)!=0){HW(d)}c[b>>2]=0;i=a;return}function wo(a){a=a|0;var b=0;b=i;c[a+4>>2]=8;c[a>>2]=ye(8,4)|0;c[a+8>>2]=0;c[a+12>>2]=0;i=b;return}function xo(a){a=a|0;var b=0;b=i;Fe(c[a>>2]|0);i=b;return}function yo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;e=a+8|0;h=c[e>>2]|0;g=a+4|0;f=c[g>>2]|0;if((h|0)<(f|0)){a=c[a>>2]|0}else{h=c[a+12>>2]|0;h=((h|0)>0?h:f)+f|0;c[g>>2]=h;g=Ce(c[a>>2]|0,h,4)|0;c[a>>2]=g;h=c[e>>2]|0;a=g}c[e>>2]=h+1;c[a+(h<<2)>>2]=b;i=d;return}function zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;e=a+8|0;j=c[e>>2]|0;h=a+4|0;g=c[h>>2]|0;if((j|0)>=(g|0)){j=c[a+12>>2]|0;j=((j|0)>0?j:g)+g|0;c[h>>2]=j;c[a>>2]=Ce(c[a>>2]|0,j,4)|0;j=c[e>>2]|0}if((j|0)>(b|0)){h=c[a>>2]|0;aX(h+(b+1<<2)|0,h+(b<<2)|0,j-b<<2|0)|0}c[(c[a>>2]|0)+(b<<2)>>2]=d;c[e>>2]=(c[e>>2]|0)+1;i=f;return}function Ao(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;g=c[a>>2]|0;h=g+(b<<2)|0;e=c[h>>2]|0;f=a+8|0;j=c[f>>2]|0;if((j+ -1|0)>(b|0)){aX(h|0,g+(b+1<<2)|0,(j-b<<2)+ -4|0)|0;j=c[f>>2]|0}g=j+ -1|0;c[f>>2]=g;b=a+4|0;f=c[b>>2]|0;j=c[a+12>>2]|0;k=(j|0)>0;if(k){h=j}else{h=(f|0)/2|0}if((f-g|0)<(h|0)){i=d;return e|0}if(!k){j=(f|0)/2|0}k=f-j|0;c[b>>2]=k;c[a>>2]=Ce(c[a>>2]|0,k,4)|0;i=d;return e|0}function Bo(){var a=0,b=0,d=0;a=i;b=Tc(53840)|0;if((b|0)!=0){d=FW(32)|0;fe(d,b);i=a;return d|0}b=Tc(53848)|0;if((b|0)==0){b=Rc(Ac()|0)|0}else{b=Pb(b|0)|0}d=FW(32)|0;if((b|0)==0){fe(d,53856);i=a;return d|0}else{fe(d,c[b+20>>2]|0);i=a;return d|0}return 0}function Co(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;if((Qc(d|0,53856)|0)==0){i=e;return b|0}g=(Qc(d|0,53864)|0)==0;f=c[b+24>>2]|0;if(!g){do{if((f|0)>0){if((a[(c[b+28>>2]|0)+(f+ -1)|0]|0)==47){break}me(b,47)|0}}while(0);ne(b,d,-1)|0;i=e;return b|0}g=f+ -2|0;d=c[b+28>>2]|0;a:do{if((g|0)>-1){while(1){if((a[d+g|0]|0)==47){break}if((g|0)>0){g=g+ -1|0}else{break a}}if((g|0)<1){break}re(b,g,f-g|0)|0;i=e;return b|0}}while(0);if((a[d]|0)==47){re(b,1,f+ -1|0)|0;i=e;return b|0}else{le(b)|0;ne(b,53864,-1)|0;i=e;return b|0}return 0}function Do(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;c=c+ -1|0;g=0;while(1){if((g|0)>=(c|0)){break}j=qc(d|0)|0;if((j|0)==-1){break}h=g+1|0;a[b+g|0]=j;if((j|0)==13){f=5;break}else if((j|0)==10){g=h;break}else{g=h}}do{if((f|0)==5){f=qc(d|0)|0;if((f|0)==10&(h|0)<(c|0)){a[b+h|0]=10;g=g+2|0;break}if((f|0)==-1){g=h;break}Ec(f|0,d|0)|0;g=h}}while(0);a[b+g|0]=0;i=e;return((g|0)==0?0:b)|0}function Eo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;h=i;i=i+80|0;j=FW(32)|0;fe(j,e);c[b>>2]=j;j=b+8|0;a[j]=0;k=FW(32)|0;fe(k,d);b=b+4|0;c[b>>2]=k;Co(k,e)|0;if(!f){i=g;return}if((Nb(c[(c[b>>2]|0)+28>>2]|0,h|0)|0)!=0){i=g;return}a[j]=(c[h+12>>2]&61440|0)==16384|0;i=g;return}function Fo(a){a=a|0;var b=0,d=0;b=i;d=c[a+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}a=c[a>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function Go(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=FW(32)|0;fe(g,d);c[b>>2]=g;a[b+4|0]=e&1;c[b+8>>2]=zb(d|0)|0;i=f;return}function Ho(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;if((d|0)!=0){ke(d);HW(d)}a=c[a+8>>2]|0;if((a|0)==0){i=b;return}qb(a|0)|0;i=b;return}function Io(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;f=b+8|0;g=c[f>>2]|0;if((g|0)==0){g=0;i=d;return g|0}g=eb(g|0)|0;if((g|0)==0){g=0;i=d;return g|0}while(1){g=g+11|0;if((Qc(g|0,53856)|0)!=0){if((Qc(g|0,53864)|0)!=0){break}}g=eb(c[f>>2]|0)|0;if((g|0)==0){b=0;e=7;break}}if((e|0)==7){i=d;return b|0}f=FW(12)|0;Eo(f,c[(c[b>>2]|0)+28>>2]|0,g,(a[b+4|0]&1)!=0);g=f;i=d;return g|0}function Jo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0,k=0;g=i;c[b>>2]=d;j=b+188|0;a[j]=e&1;k=FW(152)|0;Hq(k,c[d>>2]|0,c[d+4>>2]|0,e,f);c[b+4>>2]=k;if((a[j]&1)==0){c[b+8>>2]=0;j=b;j=c[j>>2]|0;d=j;d=c[d>>2]|0;k=b+168|0;c[k>>2]=d;j=j+4|0;j=c[j>>2]|0;k=b+172|0;c[k>>2]=j;k=b+176|0;c[k>>2]=-1;k=b+180|0;c[k>>2]=-1;k=b+189|0;a[k]=0;i=g;return}else{j=FW(28)|0;Ke(j,c[c[b>>2]>>2]<<2,4,1,0,0,1);c[b+8>>2]=j;h[b+32>>3]=0.0;h[b+40>>3]=.015625;h[b+48>>3]=.04419417382415922;h[b+56>>3]=.08118988160479113;h[b+64>>3]=.125;h[b+72>>3]=.17469281074217108;h[b+80>>3]=.22963966338592295;h[b+88>>3]=.2893790496476896;h[b+96>>3]=.3535533905932738;h[b+104>>3]=.421875;h[b+112>>3]=.49410588440130926;h[b+120>>3]=.5700448858423344;h[b+128>>3]=.649519052838329;h[b+136>>3]=.7323776028286229;h[b+144>>3]=.8184875533567997;h[b+152>>3]=.9077304717673633;h[b+160>>3]=1.0;j=b;j=c[j>>2]|0;d=j;d=c[d>>2]|0;k=b+168|0;c[k>>2]=d;j=j+4|0;j=c[j>>2]|0;k=b+172|0;c[k>>2]=j;k=b+176|0;c[k>>2]=-1;k=b+180|0;c[k>>2]=-1;k=b+189|0;a[k]=0;i=g;return}}function Ko(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0,k=0;g=i;c[b>>2]=d;j=b+188|0;a[j]=e&1;k=FW(152)|0;Iq(k,c[d>>2]|0,c[d+4>>2]|0,e,f);c[b+4>>2]=k;if((a[j]&1)==0){c[b+8>>2]=0;j=b;j=c[j>>2]|0;d=j;d=c[d>>2]|0;k=b+168|0;c[k>>2]=d;j=j+4|0;j=c[j>>2]|0;k=b+172|0;c[k>>2]=j;k=b+176|0;c[k>>2]=-1;k=b+180|0;c[k>>2]=-1;k=b+189|0;a[k]=0;i=g;return}else{j=FW(28)|0;Ke(j,c[c[b>>2]>>2]<<2,4,1,0,0,1);c[b+8>>2]=j;h[b+32>>3]=0.0;h[b+40>>3]=.015625;h[b+48>>3]=.04419417382415922;h[b+56>>3]=.08118988160479113;h[b+64>>3]=.125;h[b+72>>3]=.17469281074217108;h[b+80>>3]=.22963966338592295;h[b+88>>3]=.2893790496476896;h[b+96>>3]=.3535533905932738;h[b+104>>3]=.421875;h[b+112>>3]=.49410588440130926;h[b+120>>3]=.5700448858423344;h[b+128>>3]=.649519052838329;h[b+136>>3]=.7323776028286229;h[b+144>>3]=.8184875533567997;h[b+152>>3]=.9077304717673633;h[b+160>>3]=1.0;j=b;j=c[j>>2]|0;d=j;d=c[d>>2]|0;k=b+168|0;c[k>>2]=d;j=j+4|0;j=c[j>>2]|0;k=b+172|0;c[k>>2]=j;k=b+176|0;c[k>>2]=-1;k=b+180|0;c[k>>2]=-1;k=b+189|0;a[k]=0;i=g;return}}function Lo(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;e=b+4|0;g=c[e>>2]|0;f=c[g+144>>2]|0;if((f|0)!=0){do{c[e>>2]=f;if((g|0)==0){g=f}else{Kq(g);HW(g);g=c[e>>2]|0}f=c[g+144>>2]|0;}while((f|0)!=0)}if((g|0)!=0){Kq(g);HW(g)}if((a[b+188|0]&1)==0){i=d;return}b=c[b+8>>2]|0;if((b|0)==0){i=d;return}Le(b);HW(b);i=d;return}function Mo(a){a=a|0;var b=0,d=0,e=0;b=i;d=a+4|0;e=c[d>>2]|0;a=c[e+144>>2]|0;if((a|0)==0){e=4;i=b;return e|0}c[d>>2]=a;if((e|0)==0){e=0;i=b;return e|0}Kq(e);HW(e);e=0;i=b;return e|0}function No(a){a=a|0;i=i;return c[a+4>>2]|0}function Oo(a){a=a|0;i=i;return c[(c[a+4>>2]|0)+56>>2]|0}function Po(a,b){a=a|0;b=b|0;var d=0;d=i;$W(c[a+4>>2]|0,b|0,48)|0;i=d;return}function Qo(a,b){a=a|0;b=b|0;var d=0;d=i;Lq(c[a+4>>2]|0,b);i=d;return}function Ro(a,b){a=a|0;b=b|0;var d=0;d=i;Mq(c[a+4>>2]|0,b);i=d;return}function So(a,b){a=a|0;b=b|0;c[(c[a+4>>2]|0)+60>>2]=b;i=i;return}function To(a,b){a=a|0;b=+b;h[(c[a+4>>2]|0)+64>>3]=b;i=i;return}function Uo(a,b){a=a|0;b=+b;h[(c[a+4>>2]|0)+72>>3]=b;i=i;return}function Vo(a,b){a=a|0;b=+b;h[(c[a+4>>2]|0)+80>>3]=b;i=i;return}function Wo(a,b){a=a|0;b=b|0;c[(c[a+4>>2]|0)+88>>2]=b;i=i;return}function Xo(a,b){a=a|0;b=b|0;c[(c[a+4>>2]|0)+92>>2]=b;i=i;return}function Yo(a,b){a=a|0;b=+b;h[(c[a+4>>2]|0)+96>>3]=b;i=i;return}function Zo(a,b){a=a|0;b=+b;h[(c[a+4>>2]|0)+104>>3]=b<1.0?1.0:b;i=i;return}function _o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0;f=i;Nq(c[a+4>>2]|0,b,d,e);i=f;return}function $o(b,d){b=b|0;d=d|0;a[(c[b+4>>2]|0)+128|0]=d&1;i=i;return}function ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=c[a+4>>2]|0;a=Ip(c[a+132>>2]|0,b,a,+h[a+104>>3],d)|0;i=e;return a|0}function bp(a,b){a=a|0;b=b|0;var d=0;d=i;Oq(c[a+4>>2]|0,b);i=d;return}function cp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[b+16>>2]=d;c[b+20>>2]=e;c[b+24>>2]=f;a[(c[b+4>>2]|0)+141|0]=1;i=i;return}function dp(a){a=a|0;var b=0,d=0,e=0;b=i;a=a+4|0;e=c[a>>2]|0;d=FW(152)|0;Jq(d,e);c[d+144>>2]=c[a>>2];c[a>>2]=d;i=b;return}function ep(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;g=c[b>>2]|0;a:do{switch(c[g+16>>2]|0){case 3:{j=a[d]|0;h=d+1|0;do{if(j<<24>>24==(a[h]|0)){if(j<<24>>24!=(a[d+2|0]|0)){break}d=c[g+12>>2]|0;h=c[g+20>>2]|0;g=c[g+4>>2]|0;if((d|0)<0){bX(h+(da(g+ -1|0,d)|0)|0,j|0,da(g,0-d|0)|0)|0;break a}else{bX(h|0,j|0,da(g,d)|0)|0;break a}}}while(0);if((c[g+4>>2]|0)<=0){break a}j=d+2|0;l=g;g=c[g+20>>2]|0;k=0;while(1){b:do{if((c[l>>2]|0)>0){l=g;n=1;while(1){a[l]=a[d]|0;a[l+1|0]=a[h]|0;a[l+2|0]=a[j]|0;m=c[b>>2]|0;if((n|0)>=(c[m>>2]|0)){break b}l=l+3|0;n=n+1|0}}else{m=l}}while(0);k=k+1|0;if((k|0)<(c[m+4>>2]|0)){l=m;g=g+(c[m+12>>2]|0)|0}else{break}}break};case 4:{j=a[d]|0;h=d+1|0;do{if(j<<24>>24==(a[h]|0)){if(j<<24>>24!=(a[d+2|0]|0)){break}d=c[g+12>>2]|0;h=c[g+20>>2]|0;g=c[g+4>>2]|0;if((d|0)<0){bX(h+(da(g+ -1|0,d)|0)|0,j|0,da(g,0-d|0)|0)|0;break a}else{bX(h|0,j|0,da(g,d)|0)|0;break a}}}while(0);if((c[g+4>>2]|0)<=0){break a}j=d+2|0;l=g;g=c[g+20>>2]|0;k=0;while(1){c:do{if((c[l>>2]|0)>0){l=g;n=1;while(1){a[l]=a[d]|0;a[l+1|0]=a[h]|0;a[l+2|0]=a[j]|0;a[l+3|0]=-1;m=c[b>>2]|0;if((n|0)>=(c[m>>2]|0)){break c}l=l+4|0;n=n+1|0}}else{m=l}}while(0);k=k+1|0;if((k|0)<(c[m+4>>2]|0)){l=m;g=g+(c[m+12>>2]|0)|0}else{break}}break};case 0:{h=a[d]>>7;j=c[g+12>>2]|0;d=c[g+20>>2]|0;g=c[g+4>>2]|0;if((j|0)<0){bX(d+(da(g+ -1|0,j)|0)|0,h|0,da(g,0-j|0)|0)|0;break a}else{bX(d|0,h|0,da(g,j)|0)|0;break a}break};case 2:{j=a[d]|0;h=d+1|0;do{if(j<<24>>24==(a[h]|0)){if(j<<24>>24!=(a[d+2|0]|0)){break}h=c[g+12>>2]|0;d=c[g+20>>2]|0;g=c[g+4>>2]|0;if((h|0)<0){bX(d+(da(g+ -1|0,h)|0)|0,j|0,da(g,0-h|0)|0)|0;break a}else{bX(d|0,j|0,da(g,h)|0)|0;break a}}}while(0);if((c[g+4>>2]|0)<=0){break a}j=d+2|0;l=g;g=c[g+20>>2]|0;k=0;while(1){d:do{if((c[l>>2]|0)>0){l=g;n=1;while(1){a[l]=a[j]|0;a[l+1|0]=a[h]|0;a[l+2|0]=a[d]|0;m=c[b>>2]|0;if((n|0)>=(c[m>>2]|0)){break d}l=l+3|0;n=n+1|0}}else{m=l}}while(0);k=k+1|0;if((k|0)<(c[m+4>>2]|0)){l=m;g=g+(c[m+12>>2]|0)|0}else{break}}break};case 1:{j=c[g+12>>2]|0;h=c[g+20>>2]|0;if((j|0)<0){n=c[g+4>>2]|0;m=h+(da(n+ -1|0,j)|0)|0;bX(m|0,a[d]|0,da(n,0-j|0)|0)|0;break a}else{bX(h|0,a[d]|0,da(c[g+4>>2]|0,j)|0)|0;break a}break};default:{}}}while(0);g=c[b>>2]|0;d=c[g+24>>2]|0;if((d|0)!=0){bX(d|0,e|0,da(c[g+4>>2]|0,c[g>>2]|0)|0)|0}e=b+168|0;g=c[e>>2]|0;if((g|0)>0){c[e>>2]=0;g=0}h=b+176|0;j=c[h>>2]|0;if((j|0)<0){c[h>>2]=0;j=0}d=b+172|0;l=c[d>>2]|0;if((l|0)>0){c[d>>2]=0;l=0}k=b+180|0;m=c[k>>2]|0;if((m|0)<0){c[k>>2]=0;m=0}b=c[b>>2]|0;n=(c[b>>2]|0)+ -1|0;if((g|0)>(n|0)){c[e>>2]=n}if((j|0)<(n|0)){c[h>>2]=n}b=(c[b+4>>2]|0)+ -1|0;if((l|0)>(b|0)){c[d>>2]=b}if((m|0)>=(b|0)){i=f;return}c[k>>2]=b;i=f;return}function fp(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0;f=i;j=i;i=i+40|0;g=j;m=i;i=i+16|0;l=m;do{if((a[b+189|0]&1)==0){l=e+8|0}else{o=c[b+4>>2]|0;p=+h[o+80>>3];c[m>>2]=c[o+116>>2];o=l+4|0;h[k>>3]=p;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];Kb(53944,l|0)|0;l=e+8|0;if((c[l>>2]|0)<=0){break}m=e+4|0;n=0;while(1){o=c[e>>2]|0;r=+h[o+(n<<4)>>3];p=+h[o+(n<<4)+8>>3];o=d[(c[m>>2]|0)+n|0]|0;c[j>>2]=n;q=g+4|0;h[k>>3]=r;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];q=g+12|0;h[k>>3]=p;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[g+20>>2]=(o&1|0)!=0?54576:54584;c[g+24>>2]=(o&2|0)!=0?54592:54584;c[g+28>>2]=(o&4|0)!=0?54600:54584;c[g+32>>2]=(o&8|0)!=0?54608:54584;Kb(54544,g|0)|0;n=n+1|0;if((n|0)<(c[l>>2]|0)){}else{break}}}}while(0);c[b+184>>2]=1;if((c[l>>2]|0)==0){q=2;i=f;return q|0}g=b+4|0;q=c[g>>2]|0;e=gp(b,e,q,+h[q+104>>3])|0;do{if((c[(c[g>>2]|0)+116>>2]|0)>0){j=hp(b,e)|0;if((e|0)==0){break}hq(e);HW(e)}else{j=e}}while(0);do{if(+h[(c[g>>2]|0)+80>>3]==0.0){ip(b,j)}else{e=lp(b,j,0)|0;q=c[g>>2]|0;mp(b,e,0,c[q+48>>2]|0,+h[q+64>>3])|0;if((e|0)==0){break}hq(e);HW(e)}}while(0);if((j|0)==0){q=0;i=f;return q|0}hq(j);HW(j);q=0;i=f;return q|0}function gp(b,e,f,g){b=b|0;e=e|0;f=f|0;g=+g;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;k=FW(32)|0;gq(k);g=g*g;l=e+8|0;if((c[l>>2]|0)<=0){i=j;return k|0}m=e+4|0;n=0;do{o=d[(c[m>>2]|0)+n|0]|0;do{if((o&1|0)==0){if((o&8|0)==0){o=c[e>>2]|0;kq(k,+h[o+(n<<4)>>3],+h[o+(n<<4)+8>>3])|0;n=n+1|0}else{r=n+ -1|0;p=c[e>>2]|0;q=n+1|0;o=n+2|0;np(b,+h[p+(r<<4)>>3],+h[p+(r<<4)+8>>3],+h[p+(n<<4)>>3],+h[p+(n<<4)+8>>3],+h[p+(q<<4)>>3],+h[p+(q<<4)+8>>3],+h[p+(o<<4)>>3],+h[p+(o<<4)+8>>3],f,g,k);n=n+3|0}if((a[(c[m>>2]|0)+(n+ -1)|0]&4)==0){break}mq(k)|0}else{r=c[e>>2]|0;jq(k,+h[r+(n<<4)>>3],+h[r+(n<<4)+8>>3])|0;n=n+1|0}}while(0);}while((n|0)<(c[l>>2]|0));i=j;return k|0}function hp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0;f=i;b=b+4|0;g=c[b>>2]|0;j=c[g+116>>2]|0;if((j|0)>0){k=c[g+112>>2]|0;m=0;l=0.0;while(1){l=l+ +h[k+(m<<3)>>3];m=m+1|0;if((m|0)<(j|0)){}else{break}}}else{l=0.0}r=+h[g+120>>3];s=r/l;if(s<=0.0){s=+R(+s)}l=r-l*+(~~s|0);k=c[g+112>>2]|0;r=+h[k>>3];if(l>3];if(l>2]|0;if((q|0)<=0){i=f;return n|0}m=d+4|0;p=0;do{t=q+ -1|0;a:do{if((p|0)<(t|0)){w=c[m>>2]|0;o=p;while(1){B=o+1|0;if((a[w+o|0]&2)!=0){break a}if((B|0)<(t|0)){o=B}else{o=B;break}}}else{o=p}}while(0);if((p|0)<(o|0)){x=+h[(c[(c[b>>2]|0)+112>>2]|0)+(g<<3)>>3]-l;q=g;t=j;w=1;do{B=c[d>>2]|0;u=+h[B+(p<<4)>>3];v=+h[B+(p<<4)+8>>3];p=p+1|0;s=+h[B+(p<<4)>>3];r=+h[B+(p<<4)+8>>3];A=s-u;y=r-v;y=+T(+(A*A+y*y));b:while(1){c:do{if(t){while(1){if(y<=0.0){t=1;break b}if(x0.0){w=0;y=0.0}else{y=0.0;break}}}else{while(1){if(y<=0.0){t=0;break b}if(x0.0){y=0.0}else{y=0.0;break}}}}while(0);if((e|0)==26){e=0;z=x/y;A=u+(s-u)*z;z=v+(r-v)*z;if(t){if(w){jq(n,u,v)|0}kq(n,A,z)|0}y=y-x;u=A;v=z}w=q+1|0;q=c[b>>2]|0;w=(w|0)==(c[q+116>>2]|0)?0:w;x=+h[(c[q+112>>2]|0)+(w<<3)>>3];q=w;t=t^1;w=1}}while((p|0)<(o|0));q=c[k>>2]|0}p=o+1|0;}while((p|0)<(q|0));i=f;return n|0}function ip(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=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.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0.0,E=0;d=i;m=i;i=i+80|0;g=i;i=i+16|0;l=g;k=l+8|0;c[k>>2]=0;f=l+4|0;c[f>>2]=0;c[g>>2]=0;e=FW(12)|0;j=a+4|0;r=c[j>>2]|0;Pq(e,b,r,+h[r+104>>3],0);r=c[j>>2]|0;jp(a,m,0,0,c[r+48>>2]|0,0,+h[r+64>>3],0,0);r=e+4|0;if((c[r>>2]|0)>0){p=a+168|0;o=a+176|0;n=a+172|0;b=a+180|0;s=0;q=c[e>>2]|0;while(1){B=+h[q>>3];if(B>0.0){u=B}else{u=+R(+B)}v=~~u;D=+h[q+16>>3];if(D>0.0){u=D}else{u=+R(+D)}x=~~u;t=q+8|0;u=+h[t>>3];if(u<=0.0){u=+R(+u)}w=~~u;u=+h[q+24>>3];if(u<=0.0){u=+R(+u)}A=~~u;do{if((w|0)==(A|0)){y=(v|0)>(x|0);t=y?x:v;v=y?v:x;x=Kp(c[(c[j>>2]|0)+132>>2]|0,t,v,w)|0;if((x|0)==1){x=1;break}kp(a,m,t,v,w,(x|0)==0)}else{u=+h[q+32>>3];if(+S(+u)>1.0){B=D-B;if((w|0)>(A|0)){B=-0.0-B;z=x;y=A}else{z=v;v=x;y=w;w=A}x=(z|0)<=(v|0);x=Jp(c[(c[j>>2]|0)+132>>2]|0,x?z:v,y,x?v:z,w)|0;if((x|0)==1){x=1;break}D=+h[q>>3]+u*(+(y|0)+1.0- +h[t>>3]);if(D<=0.0){D=+R(+D)}C=~~D;if(B>0.0){E=C+ -1|0;A=(x|0)==0;kp(a,m,z,(z|0)>(E|0)?z:E,y,A);z=w+ -1|0;if((y|0)<(z|0)){while(1){y=y+1|0;B=+h[q>>3]+u*(+(y|0)+1.0- +h[t>>3]);if(B<=0.0){B=+R(+B)}E=~~B;kp(a,m,C,E+ -1|0,y,A);if((y|0)<(z|0)){C=E}else{C=E;break}}}kp(a,m,C,(C|0)<=(v|0)?v:C,w,A);break}else{A=(x|0)==0;kp(a,m,(C|0)<(z|0)?C+1|0:z,z,y,A);z=w+ -1|0;if((y|0)<(z|0)){while(1){y=y+1|0;B=+h[q>>3]+u*(+(y|0)+1.0- +h[t>>3]);if(B<=0.0){B=+R(+B)}E=~~B;kp(a,m,E+1|0,C,y,A);if((y|0)<(z|0)){C=E}else{C=E;break}}}kp(a,m,v,(v|0)<=(C|0)?C:v,w,A);break}}y=(w|0)>(A|0);z=y?x:v;v=y?v:x;C=y?A:w;w=y?w:A;x=(z|0)<=(v|0);x=Jp(c[(c[j>>2]|0)+132>>2]|0,x?z:v,C,x?v:z,w)|0;if((x|0)==1){x=1;break}y=(x|0)==0;do{if((C|0)>=0){if(!y){if(!(vp(c[(c[j>>2]|0)+132>>2]|0,z,C)|0)){break}}tp(a,m,z,C);up(a,m);if((c[p>>2]|0)>(z|0)){c[p>>2]=z}if((c[o>>2]|0)<(z|0)){c[o>>2]=z}if((c[n>>2]|0)>(C|0)){c[n>>2]=C}if((c[b>>2]|0)>=(C|0)){break}c[b>>2]=C}}while(0);A=C+1|0;z=w+ -1|0;a:do{if((C|0)<(z|0)){if(y){while(1){B=+h[q>>3]+u*(+(A|0)- +h[t>>3]);if(B<=0.0){B=+R(+B)}C=~~B;do{if((A|0)>=0){tp(a,m,C,A);up(a,m);if((c[p>>2]|0)>(C|0)){c[p>>2]=C}if((c[o>>2]|0)<(C|0)){c[o>>2]=C}if((c[n>>2]|0)>(A|0)){c[n>>2]=A}if((c[b>>2]|0)>=(A|0)){break}c[b>>2]=A}}while(0);if((A|0)>=(z|0)){break a}A=A+1|0}}while(1){B=+h[q>>3]+u*(+(A|0)- +h[t>>3]);if(B<=0.0){B=+R(+B)}C=~~B;do{if((A|0)>=0){if(!(vp(c[(c[j>>2]|0)+132>>2]|0,C,A)|0)){break}tp(a,m,C,A);up(a,m);if((c[p>>2]|0)>(C|0)){c[p>>2]=C}if((c[o>>2]|0)<(C|0)){c[o>>2]=C}if((c[n>>2]|0)>(A|0)){c[n>>2]=A}if((c[b>>2]|0)>=(A|0)){break}c[b>>2]=A}}while(0);if((A|0)>=(z|0)){break a}A=A+1|0}}}while(0);if((w|0)<0){break}if(!y){if(!(vp(c[(c[j>>2]|0)+132>>2]|0,v,w)|0)){break}}tp(a,m,v,w);up(a,m);if((c[p>>2]|0)>(v|0)){c[p>>2]=v}if((c[o>>2]|0)<(v|0)){c[o>>2]=v}if((c[n>>2]|0)>(w|0)){c[n>>2]=w}if((c[b>>2]|0)>=(w|0)){break}c[b>>2]=w}}while(0);E=l+(x<<2)|0;c[E>>2]=(c[E>>2]|0)+1;s=s+1|0;if((s|0)<(c[r>>2]|0)){q=q+56|0}else{break}}if((c[k>>2]|0)==0){j=85}else{j=87}}else{j=85}do{if((j|0)==85){if((c[g>>2]|0)==0){c[a+184>>2]=1;break}if((c[f>>2]|0)!=0){j=87;break}c[a+184>>2]=0}}while(0);if((j|0)==87){c[a+184>>2]=2}if((e|0)==0){i=d;return}Uq(e);HW(e);i=d;return}function jp(b,d,e,f,g,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=+k;l=l|0;m=m|0;var n=0,o=0,p=0,q=0.0;n=i;tp(b,d,e,f);p=d+8|0;c[p>>2]=0;if((g|0)==0){c[d+28>>2]=j}else{if(jd[c[(c[g>>2]|0)+16>>2]&511](g)|0){j=d+32|0;pd[c[(c[g>>2]|0)+12>>2]&63](g,e,f,j)|0}else{c[p>>2]=g;j=d+32|0}c[d+28>>2]=j}g=d+16|0;h[g>>3]=k;j=b+4|0;do{if((c[(c[j>>2]|0)+136>>2]|0)==0){q=k*255.0;if(l){h[g>>3]=q;break}q=q+.5;if(q<=0.0){q=+R(+q)}a[d+25|0]=~~q}}while(0);a[d+24|0]=l&1;do{if(k==1.0){g=c[j>>2]|0;if((c[g+136>>2]|0)!=0|l){o=17;break}if((a[g+141|0]&1)!=0){o=17;break}a[d+64|0]=1;c[d+68>>2]=c[53872+(c[(c[b>>2]|0)+16>>2]<<2)>>2]}else{o=17}}while(0);do{if((o|0)==17){a[d+64|0]=0;o=c[(c[b>>2]|0)+16>>2]|0;if((c[(c[j>>2]|0)+60>>2]|0)==0){c[d+68>>2]=c[53896+(o<<2)>>2];break}else{c[d+68>>2]=c[53920+(o<<2)>>2];break}}}while(0);if(m){c[d+72>>2]=c[55024+(c[(c[b>>2]|0)+16>>2]<<2)>>2];i=n;return}else{c[d+72>>2]=0;i=n;return}}function kp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;tp(a,b,d,f);j=(d|0)>(e|0);if(g){if(!j){g=d;while(1){up(a,b);if((g|0)<(e|0)){g=g+1|0}else{break}}}b=a+168|0;j=c[b>>2]|0;if((j|0)>(d|0)){c[b>>2]=d;j=d}g=a+176|0;k=c[g>>2]|0;if((k|0)<(d|0)){c[g>>2]=d}else{d=k}if((j|0)>(e|0)){c[b>>2]=e}if((d|0)<(e|0)){c[g>>2]=e}e=a+172|0;if((c[e>>2]|0)>(f|0)){c[e>>2]=f}a=a+180|0;if((c[a>>2]|0)>=(f|0)){i=h;return}c[a>>2]=f;i=h;return}if(j){i=h;return}g=a+4|0;o=a+168|0;q=a+176|0;k=a+172|0;p=a+180|0;m=b+52|0;n=b+36|0;r=b+48|0;l=b+44|0;j=b+40|0;while(1){do{if(vp(c[(c[g>>2]|0)+132>>2]|0,d,f)|0){up(a,b);if((c[o>>2]|0)>(d|0)){c[o>>2]=d}if((c[q>>2]|0)<(d|0)){c[q>>2]=d}if((c[k>>2]|0)>(f|0)){c[k>>2]=f}if((c[p>>2]|0)>=(f|0)){break}c[p>>2]=f}else{c[b>>2]=(c[b>>2]|0)+1;if((c[(c[g>>2]|0)+136>>2]|0)!=0){c[j>>2]=(c[j>>2]|0)+1}a:do{switch(c[(c[a>>2]|0)+16>>2]|0){case 1:{c[l>>2]=(c[l>>2]|0)+1;break};case 4:{c[l>>2]=(c[l>>2]|0)+4;break};case 3:case 2:{c[l>>2]=(c[l>>2]|0)+3;break};case 0:{s=c[r>>2]>>1;c[r>>2]=s;if((s|0)!=0){break a}c[r>>2]=128;c[l>>2]=(c[l>>2]|0)+1;break};default:{}}}while(0);s=c[m>>2]|0;if((s|0)!=0){c[m>>2]=s+1}s=c[n>>2]|0;if((s|0)==0){break}c[n>>2]=s+1}}while(0);if((d|0)>=(e|0)){break}d=d+1|0}i=h;return}function lp(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0.0,o=0.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.0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0,J=0,K=0,L=0.0,M=0,N=0.0,O=0.0,P=0.0,Q=0,R=0,S=0.0,U=0.0,V=0.0,W=0,X=0,Y=0.0,Z=0.0,_=0.0;j=i;g=b+4|0;do{if(f){f=c[g>>2]|0;f=gp(b,e,f,+h[f+104>>3])|0;if((c[(c[g>>2]|0)+116>>2]|0)<=0){break}b=hp(b,f)|0;if((f|0)==0){f=b;break}hq(f);HW(f);f=b}else{f=e}}while(0);k=FW(32)|0;gq(k);o=+h[(c[g>>2]|0)+80>>3];l=f+8|0;if(((c[l>>2]|0)+ -1|0)>0){b=f+4|0;n=o*.5;m=k+8|0;o=o*.276142375;z=0;G=0;u=0;t=0;p=0;v=0;r=0;w=0;x=0;q=0;s=0;y=0;while(1){B=c[b>>2]|0;A=d[B+u|0]|0;do{if((A&2|0)==0){I=(A&1|0)!=0;if(I){z=(A&4|0)!=0;y=u}A=u+1|0;B=(a[B+A|0]&2)!=0;J=c[f>>2]|0;S=+h[J+(u<<4)>>3];U=+h[J+(u<<4)+8>>3];N=+h[J+(A<<4)>>3];L=+h[J+(A<<4)+8>>3];D=N-S;C=L-U;F=+T(+(D*D+C*C));if(F==0.0){F=0.0;H=1.0}else{H=1.0/F;F=D*H;H=C*H}C=n*F;D=n*H;E=y+1|0;X=B?E:u+2|0;N=+h[J+(X<<4)>>3]-N;L=+h[J+(X<<4)+8>>3]-L;O=+T(+(N*N+L*L));if(O==0.0){N=0.0;P=1.0}else{P=1.0/O;N=N*P;P=L*P}O=n*N;L=n*P;jq(k,S-D,C+U)|0;M=(u|0)==(y|0);if(M){J=(c[m>>2]|0)+ -1|0}else{J=G}do{if(z|I^1){X=c[f>>2]|0;kq(k,D+ +h[X+(u<<4)>>3],+h[X+(u<<4)+8>>3]-C)|0}else{G=c[(c[g>>2]|0)+88>>2]|0;if((G|0)==2){X=c[f>>2]|0;kq(k,+h[X+(u<<4)>>3]-C-D,C+ +h[X+(u<<4)+8>>3]-D)|0;X=c[f>>2]|0;kq(k,D+(+h[X+(u<<4)>>3]-C),+h[X+(u<<4)+8>>3]-C-D)|0;X=c[f>>2]|0;kq(k,D+ +h[X+(u<<4)>>3],+h[X+(u<<4)+8>>3]-C)|0;break}else if((G|0)==0){X=c[f>>2]|0;kq(k,D+ +h[X+(u<<4)>>3],+h[X+(u<<4)+8>>3]-C)|0;break}else if((G|0)==1){X=c[f>>2]|0;V=+h[X+(u<<4)>>3];Y=C*.55228475;U=+h[X+(u<<4)+8>>3];S=D*.55228475;Z=V-C;_=U-D;lq(k,V-D-Y,C+U-S,Z-S,Y+_,Z,_)|0;X=c[f>>2]|0;_=+h[X+(u<<4)>>3];Z=+h[X+(u<<4)+8>>3];U=D+_;V=Z-C;lq(k,S+(_-C),Z-D-Y,U-Y,V-S,U,V)|0;break}else{break}}}while(0);Q=c[m>>2]|0;I=Q+ -1|0;W=c[f>>2]|0;kq(k,D+ +h[W+(A<<4)>>3],+h[W+(A<<4)+8>>3]-C)|0;W=z|B^1;do{if(W){X=c[f>>2]|0;kq(k,+h[X+(A<<4)>>3]-D,C+ +h[X+(A<<4)+8>>3])|0}else{G=c[(c[g>>2]|0)+88>>2]|0;if((G|0)==2){X=c[f>>2]|0;kq(k,C+(D+ +h[X+(A<<4)>>3]),D+(+h[X+(A<<4)+8>>3]-C))|0;X=c[f>>2]|0;kq(k,C+(+h[X+(A<<4)>>3]-D),D+(C+ +h[X+(A<<4)+8>>3]))|0;X=c[f>>2]|0;kq(k,+h[X+(A<<4)>>3]-D,C+ +h[X+(A<<4)+8>>3])|0;break}else if((G|0)==0){X=c[f>>2]|0;kq(k,+h[X+(A<<4)>>3]-D,C+ +h[X+(A<<4)+8>>3])|0;break}else if((G|0)==1){X=c[f>>2]|0;_=+h[X+(A<<4)>>3];V=C*.55228475;Z=+h[X+(A<<4)+8>>3];Y=D*.55228475;U=C+_;S=D+Z;lq(k,V+(D+_),Y+(Z-C),Y+U,S-V,U,S)|0;X=c[f>>2]|0;S=+h[X+(A<<4)>>3];U=+h[X+(A<<4)+8>>3];Z=S-D;_=C+U;lq(k,C+S-Y,V+(D+U),V+Z,Y+_,Z,_)|0;break}else{break}}}while(0);R=c[m>>2]|0;G=R+ -1|0;mq(k)|0;K=c[m>>2]|0;if(W){S=H*P+F*N;if(S<-.99999){W=c[g>>2]|0;U=+h[W+96>>3]+1.0;S=0.0;U=U*U}else{S=2.0/(S+1.0);U=S<1.0?1.0:S;S=+T(+(U+-1.0));W=c[g>>2]|0}X=c[f>>2]|0;V=+h[X+(A<<4)>>3];a:do{if((c[W+92>>2]|0)==1){jq(k,n+V,+h[X+(A<<4)+8>>3])|0;X=c[f>>2]|0;_=+h[X+(A<<4)>>3];Z=+h[X+(A<<4)+8>>3];Y=n+Z;lq(k,n+_,o+Z,o+_,Y,_,Y)|0;X=c[f>>2]|0;Y=+h[X+(A<<4)>>3];_=+h[X+(A<<4)+8>>3];Z=Y-n;lq(k,Y-o,n+_,Z,o+_,Z,_)|0;X=c[f>>2]|0;_=+h[X+(A<<4)>>3];Z=+h[X+(A<<4)+8>>3];Y=Z-n;lq(k,_-n,Z-o,_-o,Y,_,Y)|0;X=c[f>>2]|0;Y=+h[X+(A<<4)>>3];_=+h[X+(A<<4)+8>>3];Z=n+Y;lq(k,o+Y,_-n,Z,_-o,Z,_)|0}else{jq(k,V,+h[X+(A<<4)+8>>3])|0;W=c[f>>2]|0;V=+h[W+(A<<4)>>3];if(F*P-H*N<0.0){kq(k,V-L,O+ +h[W+(A<<4)+8>>3])|0;W=c[g>>2]|0;do{if((c[W+92>>2]|0)==0){_=+T(+U);if(_>+h[W+96>>3]){break}X=c[f>>2]|0;kq(k,C*S+(+h[X+(A<<4)>>3]-D),D*S+(C+ +h[X+(A<<4)+8>>3]))|0;X=c[f>>2]|0;kq(k,+h[X+(A<<4)>>3]-D,C+ +h[X+(A<<4)+8>>3])|0;break a}}while(0);X=c[f>>2]|0;kq(k,+h[X+(A<<4)>>3]-D,C+ +h[X+(A<<4)+8>>3])|0;break}else{kq(k,D+V,+h[W+(A<<4)+8>>3]-C)|0;W=c[g>>2]|0;do{if((c[W+92>>2]|0)==0){_=+T(+U);if(_>+h[W+96>>3]){break}X=c[f>>2]|0;kq(k,C*S+(D+ +h[X+(A<<4)>>3]),D*S+(+h[X+(A<<4)+8>>3]-C))|0;X=c[f>>2]|0;kq(k,L+ +h[X+(A<<4)>>3],+h[X+(A<<4)+8>>3]-O)|0;break a}}while(0);X=c[f>>2]|0;kq(k,L+ +h[X+(A<<4)>>3],+h[X+(A<<4)+8>>3]-O)|0;break}}}while(0);mq(k)|0}if((a[(c[g>>2]|0)+128|0]&1)==0){u=A;break}if((u|0)>=(E|0)){if((u|0)<(y+2|0)){nq(k,r,q,J,I)}else{nq(k,r,q,v+1|0,x);nq(k,r,q,t,I)}nq(k,r,q,R,R)}w=M?I:w;s=M?G:s;if(!B){u=A;t=p;p=K;v=r;r=I;x=q;q=G;break}if((u|0)<(y+2|0)){nq(k,I,G,J,(c[m>>2]|0)+ -1|0)}else{nq(k,I,G,r+1|0,q);nq(k,I,G,p,(c[m>>2]|0)+ -1|0)}if(!z){u=A;z=0;t=p;p=K;v=r;r=I;x=q;q=G;break}nq(k,I,G,J,w);u=s+1|0;nq(k,I,G,u,u);nq(k,w,s,Q,G);nq(k,w,s,K,(c[m>>2]|0)+ -1|0);u=A;z=1;t=p;p=K;v=r;r=I;x=q;q=G}else{u=u+1|0;J=G}}while(0);if((u|0)<((c[l>>2]|0)+ -1|0)){G=J}else{break}}}if((f|0)==(e|0)|(f|0)==0){i=j;return k|0}hq(f);HW(f);i=j;return k|0}function mp(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var 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;o=i;j=i;i=i+80|0;s=i;i=i+8|0;u=i;i=i+8|0;v=i;i=i+8|0;k=i;i=i+8|0;r=i;i=i+8|0;l=r;q=i;i=i+8|0;m=q;if((c[d+8>>2]|0)==0){B=2;i=o;return B|0}n=FW(12)|0;p=b+4|0;t=c[p>>2]|0;Pq(n,d,t,+h[t+104>>3],1);t=b+188|0;if((a[t]&1)!=0){Vq(n)}Wq(n);d=FW(52)|0;$q(d,n,e);if((a[t]&1)==0){B=c[d+8>>2]|0;c[s>>2]=B;w=c[d+12>>2]|0;c[u>>2]=w;s=c[d+16>>2]|0;c[v>>2]=s;e=c[d+20>>2]|0;c[k>>2]=e;v=s;s=B}else{br(d,s,u,v,k);e=c[k>>2]|0;v=c[v>>2]|0;w=c[u>>2]|0;s=c[s>>2]|0}s=Jp(c[(c[p>>2]|0)+132>>2]|0,s,w,v,e)|0;a:do{if((s|0)!=1){x=c[u>>2]|0;v=(c[p>>2]|0)+132|0;w=c[v>>2]|0;e=c[w+44>>2]|0;if((x|0)<(e|0)){c[u>>2]=e;w=c[v>>2]|0}else{e=x}v=c[w+52>>2]|0;if((c[k>>2]|0)>(v|0)){c[k>>2]=v}jp(b,j,0,e,f,0,g,(a[t]&1)!=0,0);w=c[u>>2]|0;f=(w|0)>(c[k>>2]|0);if((a[t]&1)!=0){if(f){break}f=b+8|0;t=(s|0)==0;while(1){hr(d,c[f>>2]|0,l,m,w);if(!t){Lp(c[(c[p>>2]|0)+132>>2]|0,c[f>>2]|0,l,m,w)}pp(b,j,c[r>>2]|0,c[q>>2]|0,w);if((w|0)<(c[k>>2]|0)){w=w+1|0}else{break a}}}if(f){break}u=(s|0)==0;e=b+168|0;v=b+176|0;f=b+172|0;t=b+180|0;while(1){if(fr(d,w,l,m)|0){do{x=c[r>>2]|0;do{if(u){y=c[q>>2]|0;tp(b,j,x,w);if((x|0)<=(y|0)){z=x;while(1){up(b,j);if((z|0)<(y|0)){z=z+1|0}else{break}}}z=c[e>>2]|0;if((z|0)>(x|0)){c[e>>2]=x;z=x}A=c[v>>2]|0;if((A|0)<(x|0)){c[v>>2]=x}else{x=A}if((z|0)>(y|0)){c[e>>2]=y}if((x|0)<(y|0)){c[v>>2]=y}if((c[f>>2]|0)>(w|0)){c[f>>2]=w}if((c[t>>2]|0)>=(w|0)){break}c[t>>2]=w}else{y=(c[p>>2]|0)+132|0;z=c[y>>2]|0;A=c[z+40>>2]|0;if((x|0)<(A|0)){c[r>>2]=A;x=A;z=c[y>>2]|0}B=c[q>>2]|0;A=c[z+48>>2]|0;if((B|0)>(A|0)){c[q>>2]=A;z=c[y>>2]|0}else{A=B}B=Kp(z,x,A,w)|0;kp(b,j,c[r>>2]|0,c[q>>2]|0,w,(B|0)==0)}}while(0);}while(fr(d,w,l,m)|0)}if((w|0)<(c[k>>2]|0)){w=w+1|0}else{break}}}}while(0);c[b+184>>2]=s;if((d|0)!=0){ar(d);HW(d)}if((n|0)==0){B=0;i=o;return B|0}Uq(n);HW(n);B=0;i=o;return B|0}function np(a,b,d,e,f,g,j,k,l,m,n,o){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;j=+j;k=+k;l=+l;m=m|0;n=+n;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0.0,O=0.0,P=0,Q=0;r=i;s=i;i=i+24600|0;a=s;B=i;i=i+24600|0;p=B;w=i;i=i+4104|0;q=w;h[s>>3]=b;h[B>>3]=d;h[a+8>>3]=e;h[p+8>>3]=f;h[a+16>>3]=g;h[p+16>>3]=j;h[a+24576>>3]=k;h[p+24576>>3]=l;c[w>>2]=1024;w=m+16|0;B=m+32|0;s=m+8|0;t=m+24|0;u=m+40|0;v=0;while(1){z=a+(v*24|0)|0;A=p+(v*24|0)|0;P=a+(v*24|0)+8|0;C=p+(v*24|0)+8|0;D=a+(v*24|0)+16|0;E=p+(v*24|0)+16|0;F=q+(v<<2)|0;H=+h[m>>3];I=+h[w>>3];G=+h[B>>3];K=+h[s>>3];L=+h[t>>3];J=+h[u>>3];while(1){y=+h[z>>3];l=+h[A>>3];x=+h[P>>3];k=+h[C>>3];j=+h[D>>3];g=+h[E>>3];M=c[F>>2]|0;N=+h[a+(M*24|0)>>3];O=+h[p+(M*24|0)>>3];f=(y+N)*.5;b=(l+O)*.5;d=G+(H*f+I*b);b=J+(f*K+b*L);f=G+(x*H+k*I)-d;e=J+(x*K+k*L)-b;d=G+(j*H+g*I)-d;b=J+(j*K+g*L)-b;if((M-v|0)==1){break}if(!(f*f+e*e>n|d*d+b*b>n)){break}e=(y+x)*.5;f=(l+k)*.5;x=(x+j)*.5;y=(k+g)*.5;k=(e+x)*.5;l=(f+y)*.5;N=(j+N)*.5;O=(g+O)*.5;x=(x+N)*.5;y=(y+O)*.5;Q=(M+v|0)/2|0;h[P>>3]=e;h[C>>3]=f;h[D>>3]=k;h[E>>3]=l;c[F>>2]=Q;h[a+(Q*24|0)>>3]=(k+x)*.5;h[p+(Q*24|0)>>3]=(l+y)*.5;h[a+(Q*24|0)+8>>3]=x;h[p+(Q*24|0)+8>>3]=y;h[a+(Q*24|0)+16>>3]=N;h[p+(Q*24|0)+16>>3]=O;c[q+(Q<<2)>>2]=M}kq(o,N,O)|0;if((M|0)<1024){v=M}else{break}}i=r;return}function op(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;l=i;j=i;i=i+40|0;g=j;m=i;i=i+8|0;do{if((a[b+189|0]&1)!=0){c[m>>2]=f&1;Kb(53976,m|0)|0;m=e+8|0;if((c[m>>2]|0)<=0){break}n=e+4|0;o=0;do{p=c[e>>2]|0;s=+h[p+(o<<4)>>3];r=+h[p+(o<<4)+8>>3];p=d[(c[n>>2]|0)+o|0]|0;c[j>>2]=o;q=g+4|0;h[k>>3]=s;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];q=g+12|0;h[k>>3]=r;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[g+20>>2]=(p&1|0)!=0?54576:54584;c[g+24>>2]=(p&2|0)!=0?54592:54584;c[g+28>>2]=(p&4|0)!=0?54600:54584;c[g+32>>2]=(p&8|0)!=0?54608:54584;Kb(54544,g|0)|0;o=o+1|0;}while((o|0)<(c[m>>2]|0))}}while(0);q=c[b+4>>2]|0;q=mp(b,e,f,c[q+52>>2]|0,+h[q+72>>3])|0;i=l;return q|0}function pp(b,e,f,g,j){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;var 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;q=i;A=c[b+8>>2]|0;z=c[A+20>>2]|0;x=f>>1;A=c[A+12>>2]|0;w=A+x|0;B=w+A|0;tp(b,e,f,j);if((f|0)>(g|0)){i=q;return}k=b+4|0;t=e+52|0;s=e+36|0;v=e+48|0;u=e+44|0;r=e+40|0;l=e+56|0;m=b+168|0;n=b+176|0;o=b+172|0;p=b+180|0;y=z+x|0;x=z+w|0;w=z+B|0;C=z+(B+A)|0;while(1){D=d[y]|0;if((f&1|0)==0){A=x;z=w;B=C;w=(c[54680+((d[x]|0)>>>4<<2)>>2]|0)+(c[54680+(D>>>4<<2)>>2]|0)+(c[54680+((d[w]|0)>>>4<<2)>>2]|0)+(c[54680+((d[C]|0)>>>4<<2)>>2]|0)|0}else{y=y+1|0;A=x+1|0;z=w+1|0;B=C+1|0;w=(c[54680+((a[x]&15)<<2)>>2]|0)+(c[54680+((D&15)<<2)>>2]|0)+(c[54680+((a[w]&15)<<2)>>2]|0)+(c[54680+((a[C]&15)<<2)>>2]|0)|0}do{if((w|0)==0){c[e>>2]=(c[e>>2]|0)+1;if((c[(c[k>>2]|0)+136>>2]|0)!=0){c[r>>2]=(c[r>>2]|0)+1}a:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 3:case 2:{c[u>>2]=(c[u>>2]|0)+3;break};case 1:{c[u>>2]=(c[u>>2]|0)+1;break};case 4:{c[u>>2]=(c[u>>2]|0)+4;break};case 0:{D=c[v>>2]>>1;c[v>>2]=D;if((D|0)!=0){break a}c[v>>2]=128;c[u>>2]=(c[u>>2]|0)+1;break};default:{}}}while(0);w=c[t>>2]|0;if((w|0)!=0){c[t>>2]=w+1}w=c[s>>2]|0;if((w|0)==0){break}c[s>>2]=w+1}else{h[l>>3]=+h[b+32+(w<<3)>>3];up(b,e);if((c[m>>2]|0)>(f|0)){c[m>>2]=f}if((c[n>>2]|0)<(f|0)){c[n>>2]=f}if((c[o>>2]|0)>(j|0)){c[o>>2]=j}if((c[p>>2]|0)>=(j|0)){break}c[p>>2]=j}}while(0);if((f|0)<(g|0)){x=A;w=z;C=B;f=f+1|0}else{break}}i=q;return}function qp(b,d,e,f,g){b=b|0;d=+d;e=+e;f=f|0;g=g|0;var j=0,l=0,m=0,n=0,o=0,p=0.0,q=0;l=i;o=i;i=i+32|0;n=o;j=i;i=i+32|0;m=i;i=i+8|0;if((a[b+189|0]&1)!=0){q=o;h[k>>3]=d;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];q=n+8|0;h[k>>3]=e;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[n+16>>2]=f;c[n+20>>2]=f;c[n+24>>2]=f;Kb(53992,n|0)|0}n=c[b+4>>2]|0;p=+h[n+32>>3]+(+h[n>>3]*d+ +h[n+16>>3]*e);e=+h[n+40>>3]+(+h[n+8>>3]*d+ +h[n+24>>3]*e);if(p>0.0){d=p}else{d=+R(+p)}o=~~d;p=(p- +(o|0))*4.0;if(p<=0.0){p=+R(+p)}if(e>0.0){d=e}else{d=+R(+e)}q=~~d;e=(e- +(q|0))*4.0;if(e<=0.0){e=+R(+e)}if(!(Fd[c[(c[g>>2]|0)+8>>2]&7](g,f,~~p,~~e,j,o,q,c[n+132>>2]|0,m)|0)){q=6;i=l;return q|0}g=c[m>>2]|0;if((g|0)==1){m=1}else{rp(b,o,q,j,(g|0)==0);m=c[m>>2]|0}c[b+184>>2]=m;if((a[j+24|0]&1)==0){q=0;i=l;return q|0}Fe(c[j+20>>2]|0);q=0;i=l;return q|0}function rp(b,e,f,g,j){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;var 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.0;k=i;m=i;i=i+80|0;l=m;q=c[g+20>>2]|0;e=e-(c[g>>2]|0)|0;f=f-(c[g+4>>2]|0)|0;p=g+8|0;r=c[p>>2]|0;n=c[g+12>>2]|0;if((f|0)<0){q=q+(da(r,0-f|0)|0)|0;o=0;n=n+f|0}else{o=f}if((e|0)<0){q=q+(0-e)|0;f=0;e=r+e|0}else{f=e;e=r}s=c[b>>2]|0;t=c[s>>2]|0;e=(e+f|0)<(t|0)?e:t-f|0;s=c[s+4>>2]|0;n=(n+o|0)<(s|0)?n:s-o|0;g=(a[g+16|0]&1)!=0;if(j){if(!g){p=~~+ca(+(+(r|0)*.125));u=b+4|0;F=c[u>>2]|0;jp(b,l,f,o,c[F+52>>2]|0,0,+h[F+72>>3],0,0);if((n|0)<=0){i=k;return}y=(e|0)>0;g=l+52|0;j=l+36|0;s=l+48|0;r=l+44|0;z=l+40|0;x=b+168|0;w=b+176|0;v=b+172|0;t=b+180|0;A=0;while(1){tp(b,l,f,o);if(y){D=f;B=0;do{C=d[q+((B|0)/8|0)|0]|0;E=0;while(1){if((E+B|0)>=(e|0)){break}do{if((C&128|0)==0){c[m>>2]=(c[m>>2]|0)+1;if((c[(c[u>>2]|0)+136>>2]|0)!=0){c[z>>2]=(c[z>>2]|0)+1}a:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 4:{c[r>>2]=(c[r>>2]|0)+4;break};case 0:{F=c[s>>2]>>1;c[s>>2]=F;if((F|0)!=0){break a}c[s>>2]=128;c[r>>2]=(c[r>>2]|0)+1;break};case 1:{c[r>>2]=(c[r>>2]|0)+1;break};case 3:case 2:{c[r>>2]=(c[r>>2]|0)+3;break};default:{}}}while(0);F=c[g>>2]|0;if((F|0)!=0){c[g>>2]=F+1}F=c[j>>2]|0;if((F|0)==0){break}c[j>>2]=F+1}else{up(b,l);if((c[x>>2]|0)>(D|0)){c[x>>2]=D}if((c[w>>2]|0)<(D|0)){c[w>>2]=D}if((c[v>>2]|0)>(o|0)){c[v>>2]=o}if((c[t>>2]|0)>=(o|0)){break}c[t>>2]=o}}while(0);E=E+1|0;D=D+1|0;if((E|0)<8){C=C<<1}else{break}}B=B+8|0;}while((B|0)<(e|0))}A=A+1|0;if((A|0)<(n|0)){q=q+p|0;o=o+1|0}else{break}}i=k;return}j=b+4|0;g=c[j>>2]|0;r=c[g+52>>2]|0;G=+h[g+72>>3];tp(b,l,f,o);g=l+8|0;c[g>>2]=0;if((r|0)==0){c[l+28>>2]=0}else{if(jd[c[(c[r>>2]|0)+16>>2]&511](r)|0){g=l+32|0;pd[c[(c[r>>2]|0)+12>>2]&63](r,f,o,g)|0}else{c[g>>2]=r;g=l+32|0}c[l+28>>2]=g}r=l+16|0;h[r>>3]=G;g=c[j>>2]|0;if((c[g+136>>2]|0)==0){h[r>>3]=G*255.0}a[l+24|0]=1;a[l+64|0]=0;r=c[(c[b>>2]|0)+16>>2]|0;if((c[g+60>>2]|0)==0){c[l+68>>2]=c[53896+(r<<2)>>2]}else{c[l+68>>2]=c[53920+(r<<2)>>2]}c[l+72>>2]=0;if((n|0)<=0){i=k;return}g=(e|0)>0;u=l+52|0;t=l+36|0;w=l+48|0;v=l+44|0;x=l+40|0;r=l+56|0;s=b+168|0;z=b+176|0;A=b+172|0;y=b+180|0;C=0;while(1){tp(b,l,f,o);if(g){B=f;D=0;while(1){E=a[q+D|0]|0;do{if(E<<24>>24==0){c[m>>2]=(c[m>>2]|0)+1;if((c[(c[j>>2]|0)+136>>2]|0)!=0){c[x>>2]=(c[x>>2]|0)+1}b:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 1:{c[v>>2]=(c[v>>2]|0)+1;break};case 4:{c[v>>2]=(c[v>>2]|0)+4;break};case 0:{F=c[w>>2]>>1;c[w>>2]=F;if((F|0)!=0){break b}c[w>>2]=128;c[v>>2]=(c[v>>2]|0)+1;break};case 3:case 2:{c[v>>2]=(c[v>>2]|0)+3;break};default:{}}}while(0);E=c[u>>2]|0;if((E|0)!=0){c[u>>2]=E+1}E=c[t>>2]|0;if((E|0)==0){break}c[t>>2]=E+1}else{h[r>>3]=+(E&255|0)/255.0;up(b,l);if((c[s>>2]|0)>(B|0)){c[s>>2]=B}if((c[z>>2]|0)<(B|0)){c[z>>2]=B}if((c[A>>2]|0)>(o|0)){c[A>>2]=o}if((c[y>>2]|0)>=(o|0)){break}c[y>>2]=o}}while(0);D=D+1|0;if((D|0)<(e|0)){B=B+1|0}else{break}}}C=C+1|0;if((C|0)<(n|0)){q=q+(c[p>>2]|0)|0;o=o+1|0}else{break}}i=k;return}if(!g){w=~~+ca(+(+(r|0)*.125));g=b+4|0;F=c[g>>2]|0;jp(b,l,f,o,c[F+52>>2]|0,0,+h[F+72>>3],0,0);if((n|0)<=0){i=k;return}z=(e|0)>0;j=l+52|0;x=l+36|0;s=l+48|0;v=l+44|0;y=l+40|0;p=b+168|0;t=b+176|0;r=b+172|0;u=b+180|0;A=0;while(1){tp(b,l,f,o);if(z){D=f;B=0;do{C=d[q+((B|0)/8|0)|0]|0;E=0;while(1){if((E+B|0)>=(e|0)){break}do{if(vp(c[(c[g>>2]|0)+132>>2]|0,D,o)|0){if((C&128|0)!=0){up(b,l);if((c[p>>2]|0)>(D|0)){c[p>>2]=D}if((c[t>>2]|0)<(D|0)){c[t>>2]=D}if((c[r>>2]|0)>(o|0)){c[r>>2]=o}if((c[u>>2]|0)>=(o|0)){break}c[u>>2]=o;break}c[m>>2]=(c[m>>2]|0)+1;if((c[(c[g>>2]|0)+136>>2]|0)!=0){c[y>>2]=(c[y>>2]|0)+1}c:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 0:{F=c[s>>2]>>1;c[s>>2]=F;if((F|0)!=0){break c}c[s>>2]=128;c[v>>2]=(c[v>>2]|0)+1;break};case 1:{c[v>>2]=(c[v>>2]|0)+1;break};case 3:case 2:{c[v>>2]=(c[v>>2]|0)+3;break};case 4:{c[v>>2]=(c[v>>2]|0)+4;break};default:{}}}while(0);F=c[j>>2]|0;if((F|0)!=0){c[j>>2]=F+1}F=c[x>>2]|0;if((F|0)==0){break}c[x>>2]=F+1}else{c[m>>2]=(c[m>>2]|0)+1;if((c[(c[g>>2]|0)+136>>2]|0)!=0){c[y>>2]=(c[y>>2]|0)+1}d:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 0:{F=c[s>>2]>>1;c[s>>2]=F;if((F|0)!=0){break d}c[s>>2]=128;c[v>>2]=(c[v>>2]|0)+1;break};case 1:{c[v>>2]=(c[v>>2]|0)+1;break};case 3:case 2:{c[v>>2]=(c[v>>2]|0)+3;break};case 4:{c[v>>2]=(c[v>>2]|0)+4;break};default:{}}}while(0);F=c[j>>2]|0;if((F|0)!=0){c[j>>2]=F+1}F=c[x>>2]|0;if((F|0)==0){break}c[x>>2]=F+1}}while(0);E=E+1|0;D=D+1|0;if((E|0)<8){C=C<<1}else{break}}B=B+8|0;}while((B|0)<(e|0))}A=A+1|0;if((A|0)<(n|0)){q=q+w|0;o=o+1|0}else{break}}i=k;return}j=b+4|0;r=c[j>>2]|0;g=c[r+52>>2]|0;G=+h[r+72>>3];tp(b,l,f,o);r=l+8|0;c[r>>2]=0;if((g|0)==0){c[l+28>>2]=0}else{if(jd[c[(c[g>>2]|0)+16>>2]&511](g)|0){F=l+32|0;pd[c[(c[g>>2]|0)+12>>2]&63](g,f,o,F)|0;g=F}else{c[r>>2]=g;g=l+32|0}c[l+28>>2]=g}r=l+16|0;h[r>>3]=G;g=c[j>>2]|0;if((c[g+136>>2]|0)==0){h[r>>3]=G*255.0}a[l+24|0]=1;a[l+64|0]=0;r=c[(c[b>>2]|0)+16>>2]|0;if((c[g+60>>2]|0)==0){c[l+68>>2]=c[53896+(r<<2)>>2]}else{c[l+68>>2]=c[53920+(r<<2)>>2]}c[l+72>>2]=0;if((n|0)<=0){i=k;return}s=(e|0)>0;A=l+52|0;z=l+36|0;u=l+48|0;t=l+44|0;r=l+40|0;y=l+56|0;x=b+168|0;w=b+176|0;v=b+172|0;g=b+180|0;C=0;while(1){tp(b,l,f,o);e:do{if(s){B=f;D=0;while(1){do{if(vp(c[(c[j>>2]|0)+132>>2]|0,B,o)|0){E=a[q+D|0]|0;if(E<<24>>24!=0){h[y>>3]=+(E&255|0)/255.0;up(b,l);if((c[x>>2]|0)>(B|0)){c[x>>2]=B}if((c[w>>2]|0)<(B|0)){c[w>>2]=B}if((c[v>>2]|0)>(o|0)){c[v>>2]=o}if((c[g>>2]|0)>=(o|0)){break}c[g>>2]=o;break}c[m>>2]=(c[m>>2]|0)+1;if((c[(c[j>>2]|0)+136>>2]|0)!=0){c[r>>2]=(c[r>>2]|0)+1}f:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 0:{F=c[u>>2]>>1;c[u>>2]=F;if((F|0)!=0){break f}c[u>>2]=128;c[t>>2]=(c[t>>2]|0)+1;break};case 1:{c[t>>2]=(c[t>>2]|0)+1;break};case 3:case 2:{c[t>>2]=(c[t>>2]|0)+3;break};case 4:{c[t>>2]=(c[t>>2]|0)+4;break};default:{}}}while(0);E=c[A>>2]|0;if((E|0)!=0){c[A>>2]=E+1}E=c[z>>2]|0;if((E|0)==0){break}c[z>>2]=E+1}else{c[m>>2]=(c[m>>2]|0)+1;if((c[(c[j>>2]|0)+136>>2]|0)!=0){c[r>>2]=(c[r>>2]|0)+1}g:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 4:{c[t>>2]=(c[t>>2]|0)+4;break};case 0:{F=c[u>>2]>>1;c[u>>2]=F;if((F|0)!=0){break g}c[u>>2]=128;c[t>>2]=(c[t>>2]|0)+1;break};case 1:{c[t>>2]=(c[t>>2]|0)+1;break};case 3:case 2:{c[t>>2]=(c[t>>2]|0)+3;break};default:{}}}while(0);E=c[A>>2]|0;if((E|0)!=0){c[A>>2]=E+1}E=c[z>>2]|0;if((E|0)==0){break}c[z>>2]=E+1}}while(0);D=D+1|0;if((D|0)>=(e|0)){break e}B=B+1|0}}}while(0);C=C+1|0;if((C|0)<(n|0)){q=q+(c[p>>2]|0)|0;o=o+1|0}else{break}}i=k;return}function sp(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,g=0,j=0,k=0.0,l=0,m=0,n=0;f=i;g=c[a+4>>2]|0;k=+h[g+32>>3]+(+h[g>>3]*b+ +h[g+16>>3]*d);b=+h[g+40>>3]+(+h[g+8>>3]*b+ +h[g+24>>3]*d);if(k<=0.0){k=+R(+k)}j=~~k;if(b<=0.0){b=+R(+b)}l=~~b;n=j-(c[e>>2]|0)|0;m=l-(c[e+4>>2]|0)|0;g=Jp(c[g+132>>2]|0,n,m,n+ -1+(c[e+8>>2]|0)|0,m+ -1+(c[e+12>>2]|0)|0)|0;if((g|0)==1){n=a+184|0;c[n>>2]=g;i=f;return}rp(a,j,l,e,(g|0)==0);n=a+184|0;c[n>>2]=g;i=f;return}function tp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;c[d>>2]=e;c[d+4>>2]=f;h=b+4|0;j=c[(c[h>>2]|0)+136>>2]|0;if((j|0)!=0){k=(da(c[j+12>>2]|0,f)|0)+e|0;c[d+40>>2]=(c[j+20>>2]|0)+k}j=c[b>>2]|0;switch(c[j+16>>2]|0){case 3:case 2:{c[d+44>>2]=(da(c[j+12>>2]|0,f)|0)+(e*3|0)+(c[j+20>>2]|0);break};case 1:{c[d+44>>2]=(da(c[j+12>>2]|0,f)|0)+e+(c[j+20>>2]|0);break};case 0:{c[d+44>>2]=(da(c[j+12>>2]|0,f)|0)+(e>>3)+(c[j+20>>2]|0);c[d+48>>2]=128>>>(e&7);break};case 4:{c[d+44>>2]=(da(c[j+12>>2]|0,f)|0)+(e<<2)+(c[j+20>>2]|0);break};default:{}}j=c[b>>2]|0;k=c[j+24>>2]|0;if((k|0)==0){c[d+52>>2]=0}else{c[d+52>>2]=k+((da(c[j>>2]|0,f)|0)+e)}do{if((a[(c[h>>2]|0)+141|0]&1)!=0){h=c[b+16>>2]|0;j=c[h+24>>2]|0;if((j|0)==0){break}k=da((c[b+24>>2]|0)+f|0,c[h>>2]|0)|0;c[d+36>>2]=j+((c[b+20>>2]|0)+e+k);i=g;return}}while(0);c[d+36>>2]=0;i=g;return}function up(b,e){b=b|0;e=e|0;var f=0,g=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.0,w=0,x=0;f=i;j=i;i=i+8|0;m=j;o=i;i=i+8|0;q=o;g=c[e+8>>2]|0;do{if((g|0)!=0){if(pd[c[(c[g>>2]|0)+12>>2]&63](g,c[e>>2]|0,c[e+4>>2]|0,e+32|0)|0){break}a:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 4:{u=e+44|0;c[u>>2]=(c[u>>2]|0)+4;break};case 0:{t=e+48|0;u=c[t>>2]>>1;c[t>>2]=u;if((u|0)!=0){break a}u=e+44|0;c[u>>2]=(c[u>>2]|0)+1;break};case 1:{u=e+44|0;c[u>>2]=(c[u>>2]|0)+1;break};case 2:case 3:{u=e+44|0;c[u>>2]=(c[u>>2]|0)+3;break};default:{}}}while(0);g=e+52|0;b=c[g>>2]|0;if((b|0)!=0){c[g>>2]=b+1}c[e>>2]=(c[e>>2]|0)+1;i=f;return}}while(0);p=e+64|0;do{if((a[p]&1)==0){l=26}else{g=c[b+4>>2]|0;if((c[g+60>>2]|0)!=0){l=26;break}b:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 2:{t=e+28|0;u=a[c[t>>2]|0]|0;s=e+44|0;r=c[s>>2]|0;c[s>>2]=r+1;a[r]=u;r=a[(c[t>>2]|0)+1|0]|0;u=c[s>>2]|0;c[s>>2]=u+1;a[u]=r;t=a[(c[t>>2]|0)+2|0]|0;u=c[s>>2]|0;c[s>>2]=u+1;a[u]=t;break};case 4:{s=e+28|0;u=a[(c[s>>2]|0)+2|0]|0;t=e+44|0;r=c[t>>2]|0;c[t>>2]=r+1;a[r]=u;r=a[(c[s>>2]|0)+1|0]|0;u=c[t>>2]|0;c[t>>2]=u+1;a[u]=r;s=a[c[s>>2]|0]|0;u=c[t>>2]|0;c[t>>2]=u+1;a[u]=s;u=c[t>>2]|0;c[t>>2]=u+1;a[u]=-1;break};case 0:{u=(Gq(c[g+56>>2]|0,c[e>>2]|0,c[e+4>>2]|0,a[c[e+28>>2]|0]|0)|0)==0;b=e+48|0;g=c[b>>2]|0;if(u){u=c[e+44>>2]|0;a[u]=(d[u]|0)&(g^255)}else{u=c[e+44>>2]|0;a[u]=d[u]|0|g}u=c[b>>2]>>1;c[b>>2]=u;if((u|0)!=0){break b}c[b>>2]=128;u=e+44|0;c[u>>2]=(c[u>>2]|0)+1;break};case 3:{t=e+28|0;u=a[(c[t>>2]|0)+2|0]|0;s=e+44|0;r=c[s>>2]|0;c[s>>2]=r+1;a[r]=u;r=a[(c[t>>2]|0)+1|0]|0;u=c[s>>2]|0;c[s>>2]=u+1;a[u]=r;t=a[c[t>>2]|0]|0;u=c[s>>2]|0;c[s>>2]=u+1;a[u]=t;break};case 1:{t=a[c[e+28>>2]|0]|0;s=e+44|0;u=c[s>>2]|0;c[s>>2]=u+1;a[u]=t;break};default:{}}}while(0);b=e+52|0;g=c[b>>2]|0;if((g|0)==0){break}c[b>>2]=g+1;a[g]=-1}}while(0);do{if((l|0)==26){r=(c[b>>2]|0)+16|0;switch(c[r>>2]|0){case 0:{a[j]=(((d[c[e+44>>2]|0]|0)&c[e+48>>2]|0)!=0)<<31>>31;break};case 3:{u=c[e+44>>2]|0;a[j]=a[u+2|0]|0;a[m+1|0]=a[u+1|0]|0;a[m+2|0]=a[u]|0;break};case 2:{u=c[e+44>>2]|0;a[j]=a[u]|0;a[m+1|0]=a[u+1|0]|0;a[m+2|0]=a[u+2|0]|0;break};case 4:{u=c[e+44>>2]|0;a[j]=a[u+2|0]|0;a[m+1|0]=a[u+1|0]|0;a[m+2|0]=a[u]|0;a[m+3|0]=-1;break};case 1:{a[j]=a[c[e+44>>2]|0]|0;break};default:{}}g=e+52|0;k=c[g>>2]|0;if((k|0)==0){n=255}else{n=d[k]|0}k=b+4|0;t=c[k>>2]|0;s=c[t+60>>2]|0;if((s|0)!=0){Jd[s&63](c[e+28>>2]|0,m,q,c[r>>2]|0);t=c[k>>2]|0}r=(a[e+24|0]&1)!=0;do{if((c[t+136>>2]|0)==0){if(!r){r=a[e+25|0]|0;break}v=+h[e+16>>3]*+h[e+56>>3]+.5;if(v<=0.0){v=+R(+v)}r=~~v&255}else{v=+h[e+16>>3];t=e+40|0;u=c[t>>2]|0;c[t>>2]=u+1;v=v*+(d[u]|0|0);if(r){v=v*+h[e+56>>3]+.5;if(v<=0.0){v=+R(+v)}r=~~v&255;break}else{v=v+.5;if(v<=0.0){v=+R(+v)}r=~~v&255;break}}}while(0);do{if((a[p]&1)==0){s=r&255;t=da(s,n)|0;t=s+n-((t+128+(t>>>8)|0)>>>8&255)|0;s=t&255;u=e+36|0;p=c[u>>2]|0;if((p|0)==0){p=s;break}c[u>>2]=p+1;w=d[p]|0;u=da(w,t&255)|0;p=s;s=w+t-((u+128+(u>>>8)|0)>>>8)&255}else{p=-1;s=-1}}while(0);c:do{switch(c[e+68>>2]|0){case 1:{s=c[e+28>>2]|0;t=n^255;r=0;q=0;l=55;break};case 0:{t=n^255;s=c[e+28>>2]|0;l=(da(d[s+2|0]|0,t)|0)+(da(d[q+2|0]|0,n)|0)|0;r=(da(d[s+1|0]|0,t)|0)+(da(d[q+1|0]|0,n)|0)|0;r=(r+128+(r>>>8)|0)>>>8&255;q=(l+128+(l>>>8)|0)>>>8&255;l=55;break};case 2:{o=s&255;if(s<<24>>24==0){o=0;r=0;q=0;break c}r=r&255;o=(((da(d[j]|0,o-r|0)|0)+(da(d[c[e+28>>2]|0]|0,r)|0)|0)/(o|0)|0)&255;r=0;q=0;break};case 3:{q=s&255;if(s<<24>>24==0){o=0;r=0;q=0;break c}w=r&255;t=q-w|0;o=da(d[j]|0,t)|0;u=c[e+28>>2]|0;o=(((da(d[u]|0,w)|0)+o|0)/(q|0)|0)&255;r=(((da(d[m+1|0]|0,t)|0)+(da(d[u+1|0]|0,w)|0)|0)/(q|0)|0)&255;q=(((da(d[m+2|0]|0,t)|0)+(da(d[u+2|0]|0,w)|0)|0)/(q|0)|0)&255;break};case 5:{t=s&255;if(s<<24>>24==0){o=0;r=0;q=0;break c}w=r&255;x=t-w|0;r=da(d[j]|0,x)|0;u=n^255;s=c[e+28>>2]|0;o=(((((da((da(d[s]|0,u)|0)+(da(d[o]|0,n)|0)|0,w)|0)>>>0)/255|0)+r|0)/(t|0)|0)&255;r=(((da(d[m+1|0]|0,x)|0)+(((da((da(d[s+1|0]|0,u)|0)+(da(d[q+1|0]|0,n)|0)|0,w)|0)>>>0)/255|0)|0)/(t|0)|0)&255;q=(((da(d[m+2|0]|0,x)|0)+(((da((da(d[s+2|0]|0,u)|0)+(da(d[q+2|0]|0,n)|0)|0,w)|0)>>>0)/255|0)|0)/(t|0)|0)&255;break};case 4:{q=s&255;if(s<<24>>24==0){o=0;r=0;q=0;break c}r=r&255;o=(((da(d[j]|0,q-r|0)|0)+(((da((da(d[c[e+28>>2]|0]|0,n^255)|0)+(da(d[o]|0,n)|0)|0,r)|0)>>>0)/255|0)|0)/(q|0)|0)&255;r=0;q=0;break};default:{o=0;r=0;q=0}}}while(0);if((l|0)==55){x=da(d[s]|0,t)|0;o=(da(d[o]|0,n)|0)+x|0;o=(o+128+(o>>>8)|0)>>>8&255}s=p&255;do{if(p<<24>>24!=0){l=c[e+72>>2]|0;if((l|0)==1){l=da(s^255,n)|0;n=s*255|0}else if((l|0)==3){q=q&255;w=da(s^255,n)|0;x=s*255|0;q=((da(w,q-(d[m+2|0]|0)|0)|0)/(x|0)|0)+q&255;r=r&255;l=w;n=x;r=((da(w,r-(d[m+1|0]|0)|0)|0)/(x|0)|0)+r&255}else{break}o=o&255;o=((da(l,o-(d[j]|0)|0)|0)/(n|0)|0)+o&255}}while(0);d:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 4:{w=e+44|0;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=q;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=r;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=o;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=-1;break};case 3:{w=e+44|0;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=q;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=r;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=o;break};case 1:{w=e+44|0;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=o;break};case 2:{w=e+44|0;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=o;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=r;x=c[w>>2]|0;c[w>>2]=x+1;a[x]=q;break};case 0:{x=(Gq(c[(c[k>>2]|0)+56>>2]|0,c[e>>2]|0,c[e+4>>2]|0,o)|0)==0;b=e+48|0;j=c[b>>2]|0;if(x){x=c[e+44>>2]|0;a[x]=(d[x]|0)&(j^255)}else{x=c[e+44>>2]|0;a[x]=d[x]|0|j}x=c[b>>2]>>1;c[b>>2]=x;if((x|0)!=0){break d}c[b>>2]=128;x=e+44|0;c[x>>2]=(c[x>>2]|0)+1;break};default:{}}}while(0);b=c[g>>2]|0;if((b|0)==0){break}c[g>>2]=b+1;a[b]=p}}while(0);c[e>>2]=(c[e>>2]|0)+1;i=f;return}function vp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;if((c[b+40>>2]|0)>(d|0)){j=0;i=f;return j|0}if((c[b+48>>2]|0)<(d|0)){j=0;i=f;return j|0}if((c[b+44>>2]|0)>(e|0)){j=0;i=f;return j|0}if((c[b+52>>2]|0)<(e|0)){j=0;i=f;return j|0}g=b+68|0;h=(c[g>>2]|0)>0;if((a[b]&1)==0){if(!h){j=1;i=f;return j|0}j=b+64|0;b=0;while(1){h=b+1|0;if(!(dr(c[(c[j>>2]|0)+(b<<2)>>2]|0,d,e)|0)){e=0;g=14;break}if((h|0)<(c[g>>2]|0)){b=h}else{e=1;g=14;break}}if((g|0)==14){i=f;return e|0}}else{if(!h){j=1;i=f;return j|0}h=b+64|0;d=d<<2;b=e<<2;j=0;while(1){e=j+1|0;if(!(dr(c[(c[h>>2]|0)+(j<<2)>>2]|0,d,b)|0)){e=0;g=14;break}if((e|0)<(c[g>>2]|0)){j=e}else{e=1;g=14;break}}if((g|0)==14){i=f;return e|0}}return 0}function wp(b,e,f,g,j,l,m){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.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,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.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.0;n=i;r=i;i=i+56|0;p=r;B=i;i=i+80|0;o=B;if((a[b+189|0]&1)!=0){q=+h[l>>3];u=+h[l+8>>3];v=+h[l+16>>3];y=+h[l+24>>3];ba=+h[l+32>>3];qa=+h[l+40>>3];c[r>>2]=g;c[p+4>>2]=j;pa=p+8|0;h[k>>3]=q;c[pa>>2]=c[k>>2];c[pa+4>>2]=c[k+4>>2];pa=p+16|0;h[k>>3]=u;c[pa>>2]=c[k>>2];c[pa+4>>2]=c[k+4>>2];pa=p+24|0;h[k>>3]=v;c[pa>>2]=c[k>>2];c[pa+4>>2]=c[k+4>>2];pa=p+32|0;h[k>>3]=y;c[pa>>2]=c[k>>2];c[pa+4>>2]=c[k+4>>2];pa=p+40|0;h[k>>3]=ba;c[pa>>2]=c[k>>2];c[pa+4>>2]=c[k+4>>2];pa=p+48|0;h[k>>3]=qa;c[pa>>2]=c[k>>2];c[pa+4>>2]=c[k+4>>2];Kb(54040,p|0)|0}if((j|g|0)==0){pa=254;i=n;return pa|0}q=+h[l>>3];v=+h[l+24>>3];qa=q*v;ba=+h[l+8>>3];y=+h[l+16>>3];u=ba*y;if(+S(+(qa-u))<1.0e-6){pa=8;i=n;return pa|0}p=+S(+ba)>+S(+q);if(p){qa=y-qa/ba;u=-0.0-ba;y=(-0.0-v)/qa;v=qa;q=(-0.0-q)/ba}else{v=v-u/q;u=q;y=y/v;q=ba/q}s=u>=0.0;ba=+h[l+32>>3];do{if(m){qa=ba+.5;if(qa<=0.0){qa=+R(+qa)}r=~~qa;if(s){ba=u+ba+.5;if(ba<=0.0){ba=+R(+ba)}s=~~ba+ -1|0;break}else{ba=u+ba+.5;if(ba<=0.0){ba=+R(+ba)}s=~~ba;r=r+ -1|0;break}}else{if(s){qa=ba+-.01;if(qa<=0.0){qa=+R(+qa)}ba=u+ba+.01;if(ba<=0.0){ba=+R(+ba)}s=~~ba;r=~~qa;break}else{qa=ba+.01;if(qa<=0.0){qa=+R(+qa)}ba=u+ba+-.01;if(ba<=0.0){ba=+R(+ba)}s=~~ba;r=~~qa;break}}}while(0);s=s-r|0;I=(s|0)>-1?s:0-s|0;s=I+1|0;t=v>=0.0;ba=+h[l+40>>3];do{if(m){qa=ba+.5;if(qa<=0.0){qa=+R(+qa)}m=~~qa;if(t){ba=v+ba+.5;if(ba<=0.0){ba=+R(+ba)}l=~~ba+ -1|0;break}else{ba=v+ba+.5;if(ba<=0.0){ba=+R(+ba)}l=~~ba;m=m+ -1|0;break}}else{if(t){qa=ba+-.01;if(qa<=0.0){qa=+R(+qa)}ba=v+ba+.01;if(ba<=0.0){ba=+R(+ba)}l=~~ba;m=~~qa;break}else{qa=ba+.01;if(qa<=0.0){qa=+R(+qa)}ba=v+ba+-.01;if(ba<=0.0){ba=+R(+ba)}l=~~ba;m=~~qa;break}}}while(0);l=l-m|0;J=(l|0)>-1?l:0-l|0;l=J+1|0;V=u<0.0;t=V?-1:1;x=v<0.0?-1:1;u=q*+(t|0);w=da(I,t)|0;z=~~(q*+(w|0));v=+(x|0);y=y*v;ba=y*+(J|0)+.5;if(ba>0.0){A=~~ba;C=da(J,x)|0;D=~~(q*+(A|0))+C|0}else{ba=+R(+ba);A=~~ba;C=da(J,x)|0;D=~~(q*+(A|0))+C|0}F=~~ba+w|0;H=~~(q*+(F|0))+C|0;if(p){G=H;E=z;C=D;A=m-A|0;D=m-F|0;F=m-w|0}else{G=F;E=w;C=A;A=D+m|0;D=H+m|0;F=m+z|0}K=C+r|0;H=E+r|0;G=G+r|0;do{if((E|0)>0){if((C|0)>0){L=(r|0)<(G|0)?r:G;z=63;break}else{C=(K|0)<(G|0)?K:G;z=67;break}}else{if((H|0)<(K|0)){L=(H|0)<(G|0)?H:G;z=63;break}else{L=(K|0)<(G|0)?K:G;z=63;break}}}while(0);do{if((z|0)==63){if((E|0)>=0){C=L;z=67;break}if((C|0)<0){C=L;E=(r|0)>(G|0)?r:G;break}else{C=L;E=(K|0)>(G|0)?K:G;break}}}while(0);do{if((z|0)==67){if((H|0)>(K|0)){E=(H|0)>(G|0)?H:G;break}else{E=(K|0)>(G|0)?K:G;break}}}while(0);do{if((m|0)<(F|0)){if((m|0)<(A|0)){G=(m|0)<(D|0)?m:D;break}else{G=(A|0)<(D|0)?A:D;break}}else{if((F|0)<(A|0)){G=(F|0)<(D|0)?F:D;break}else{G=(A|0)<(D|0)?A:D;break}}}while(0);do{if((m|0)>(F|0)){if((m|0)>(A|0)){D=(m|0)>(D|0)?m:D;break}else{D=(A|0)>(D|0)?A:D;break}}else{if((F|0)>(A|0)){D=(F|0)>(D|0)?F:D;break}else{D=(A|0)>(D|0)?A:D;break}}}while(0);A=b+4|0;C=Jp(c[(c[A>>2]|0)+132>>2]|0,C,G,E,D)|0;c[b+184>>2]=C;D=(j|0)/(l|0)|0;E=(j|0)%(l|0)|0;j=(g|0)/(s|0)|0;F=(g|0)%(s|0)|0;if((D|0)<0|(D|0)==2147483647){pa=9;i=n;return pa|0}H=D+1|0;G=ye(H,g)|0;K=c[A>>2]|0;L=c[K+52>>2]|0;ba=+h[K+72>>3];c[B>>2]=0;c[o+4>>2]=0;B=c[K+136>>2]|0;if((B|0)!=0){c[o+40>>2]=c[B+20>>2]}B=c[b>>2]|0;switch(c[B+16>>2]|0){case 3:case 2:{c[o+44>>2]=c[B+20>>2];break};case 0:{c[o+44>>2]=c[B+20>>2];c[o+48>>2]=128;break};case 1:{c[o+44>>2]=c[B+20>>2];break};case 4:{c[o+44>>2]=c[B+20>>2];break};default:{}}c[o+52>>2]=c[B+24>>2];do{if((a[K+141|0]&1)==0){z=95}else{M=c[b+16>>2]|0;B=c[M+24>>2]|0;if((B|0)==0){z=95;break}pa=da(c[M>>2]|0,c[b+24>>2]|0)|0;c[o+36>>2]=B+((c[b+20>>2]|0)+pa)}}while(0);if((z|0)==95){c[o+36>>2]=0}B=o+8|0;c[B>>2]=0;if((L|0)==0){c[o+28>>2]=0}else{if(jd[c[(c[L>>2]|0)+16>>2]&511](L)|0){B=o+32|0;pd[c[(c[L>>2]|0)+12>>2]&63](L,0,0,B)|0}else{c[B>>2]=L;B=o+32|0}c[o+28>>2]=B;K=c[A>>2]|0}B=o+16|0;h[B>>3]=ba;if((c[K+136>>2]|0)==0){h[B>>3]=ba*255.0}a[o+24|0]=1;a[o+64|0]=0;B=c[(c[b>>2]|0)+16>>2]|0;if((c[K+60>>2]|0)==0){c[o+68>>2]=c[53896+(B<<2)>>2]}else{c[o+68>>2]=c[53920+(B<<2)>>2]}c[o+72>>2]=0;B=b+188|0;if((a[B]&1)!=0){c[b+12>>2]=-1}if((J|0)>-1){J=(D|0)>0;K=(C|0)==0|p;T=u<0.0;U=(I|0)>-1;M=o+56|0;O=b+168|0;Q=b+176|0;N=b+172|0;L=b+180|0;P=V?I:0;I=V?0:I;Y=1;X=0;V=0;while(1){pa=V+E|0;W=(pa|0)<(l|0);V=pa-(W?0:l)|0;W=W?D:H;Z=J?W:Y;if((Z|0)>0){_=0;Y=G;while(1){Bd[e&255](f,Y)|0;_=_+1|0;if((_|0)<(Z|0)){Y=Y+g|0}else{break}}}ba=+(X|0);qa=y*ba+.5;if(qa<=0.0){qa=+R(+qa)}$=~~qa;qa=q*+($|0);do{if(K){_=C;z=118}else{Y=~~qa;if((Y|0)!=(~~(q*+($+w|0))|0)){_=C;z=118;break}pa=$+r|0;_=(da(X,x)|0)+m+Y|0;_=Kp(c[(c[A>>2]|0)+132>>2]|0,pa-P|0,pa+I|0,_)|0;if((_|0)!=1){z=118}}}while(0);do{if((z|0)==118){z=0;ba=v*ba+qa;if(T){ba=ba+.999}Y=(W|0)<1?1:W;if(!U){break}Z=(Y|0)>0;_=(_|0)==0;aa=0;ca=0;ea=0;while(1){pa=ea+F|0;fa=(pa|0)<(s|0);ea=pa-(fa?0:s)|0;fa=j+(fa&1^1)|0;ga=~~ba;ha=p?ga:$;ga=p?0-$|0:ga;ia=(fa|0)<1?1:fa;la=G+aa|0;do{if(Z){ja=g-ia|0;if((ia|0)<=0){break}ka=(fa|0)>1?fa:1;ma=0;oa=0;while(1){pa=0;na=la;while(1){oa=(d[na]|0)+oa|0;pa=pa+1|0;if((pa|0)<(ia|0)){na=na+1|0}else{break}}ma=ma+1|0;if((ma|0)<(Y|0)){la=la+(ka+ja)|0}else{break}}if((oa|0)==0){break}ia=da(ia,Y)|0;if((oa|0)==(ia|0)){qa=1.0}else{qa=+(oa|0)/+(ia|0)}h[M>>3]=qa;ha=ha+r|0;ga=ga+m|0;if(!((a[B]&1)==0|_)){xp(b,o,ha,ga);break}if((ga|0)<0){break}if(!_){if(!(vp(c[(c[A>>2]|0)+132>>2]|0,ha,ga)|0)){break}}tp(b,o,ha,ga);up(b,o);if((c[O>>2]|0)>(ha|0)){c[O>>2]=ha}if((c[Q>>2]|0)<(ha|0)){c[Q>>2]=ha}if((c[N>>2]|0)>(ga|0)){c[N>>2]=ga}if((c[L>>2]|0)>=(ga|0)){break}c[L>>2]=ga}}while(0);ca=ca+1|0;if((ca|0)<(s|0)){$=$+t|0;aa=fa+aa|0;ba=u+ba}else{break}}}}while(0);X=X+1|0;if((X|0)<(l|0)){Y=W}else{break}}}Fe(G);pa=0;i=n;return pa|0}function xp(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;k=i;i=i+8|0;l=i;i=i+8|0;if((f|0)<0){i=j;return}if((c[c[b>>2]>>2]|0)<=(f|0)){i=j;return}m=b+4|0;n=c[(c[m>>2]|0)+132>>2]|0;if((c[n+44>>2]|0)>(g|0)){i=j;return}if((c[n+52>>2]|0)<(g|0)){i=j;return}n=b+12|0;o=b+8|0;if((c[n>>2]|0)!=(g|0)){p=c[o>>2]|0;bX(c[p+20>>2]|0,-1,da(c[p+4>>2]|0,c[p+12>>2]|0)|0)|0;c[k>>2]=0;c[l>>2]=(c[c[b>>2]>>2]|0)+ -1;Lp(c[(c[m>>2]|0)+132>>2]|0,c[o>>2]|0,k,l,g);c[n>>2]=g}l=c[o>>2]|0;m=c[l+20>>2]|0;k=f>>1;l=c[l+12>>2]|0;n=d[m+k|0]|0;if((f&1|0)==0){k=(c[54616+((d[m+(l+k)|0]|0)>>>4<<2)>>2]|0)+(c[54616+(n>>>4<<2)>>2]|0)+(c[54616+((d[m+((l<<1)+k)|0]|0)>>>4<<2)>>2]|0)+(c[54616+((d[m+((l*3|0)+k)|0]|0)>>>4<<2)>>2]|0)|0}else{k=(c[54616+((a[m+(l+k)|0]&15)<<2)>>2]|0)+(c[54616+((n&15)<<2)>>2]|0)+(c[54616+((a[m+((l<<1)+k)|0]&15)<<2)>>2]|0)+(c[54616+((a[m+((l*3|0)+k)|0]&15)<<2)>>2]|0)|0}if((k|0)==0){i=j;return}tp(b,e,f,g);p=e+56|0;h[p>>3]=+h[b+32+(k<<3)>>3]*+h[p>>3];up(b,e);e=b+168|0;if((c[e>>2]|0)>(f|0)){c[e>>2]=f}e=b+176|0;if((c[e>>2]|0)<(f|0)){c[e>>2]=f}f=b+172|0;if((c[f>>2]|0)>(g|0)){c[f>>2]=g}b=b+180|0;if((c[b>>2]|0)>=(g|0)){i=j;return}c[b>>2]=g;i=j;return}function yp(b,e,f,g,j,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0.0,A=0.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,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.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,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0.0,Ia=0.0;o=i;s=i;i=i+64|0;q=s;L=i;i=i+80|0;p=L;U=i;i=i+8|0;if((a[b+189|0]&1)!=0){w=+h[n>>3];z=+h[n+8>>3];A=+h[n+16>>3];ma=+h[n+24>>3];Ha=+h[n+32>>3];Ia=+h[n+40>>3];c[s>>2]=g;c[q+4>>2]=j&1;c[q+8>>2]=l;c[q+12>>2]=m;Ga=q+16|0;h[k>>3]=w;c[Ga>>2]=c[k>>2];c[Ga+4>>2]=c[k+4>>2];Ga=q+24|0;h[k>>3]=z;c[Ga>>2]=c[k>>2];c[Ga+4>>2]=c[k+4>>2];Ga=q+32|0;h[k>>3]=A;c[Ga>>2]=c[k>>2];c[Ga+4>>2]=c[k+4>>2];Ga=q+40|0;h[k>>3]=ma;c[Ga>>2]=c[k>>2];c[Ga+4>>2]=c[k+4>>2];Ga=q+48|0;h[k>>3]=Ha;c[Ga>>2]=c[k>>2];c[Ga+4>>2]=c[k+4>>2];Ga=q+56|0;h[k>>3]=Ia;c[Ga>>2]=c[k>>2];c[Ga+4>>2]=c[k+4>>2];Kb(54104,q|0)|0}a:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 2:{if((g|0)==2){ba=3;break a}else{f=7}i=o;return f|0};case 3:{if((g|0)==3){ba=3;break a}else{f=7}i=o;return f|0};case 1:case 0:{if((g|0)==1){ba=1;break a}else{f=7}i=o;return f|0};case 4:{if((g|0)==4){ba=4;break a}else{f=7}i=o;return f|0};default:{Ga=7;i=o;return Ga|0}}}while(0);ma=+h[n>>3];z=+h[n+24>>3];w=ma*z;r=+h[n+8>>3];A=+h[n+16>>3];Ha=r*A;if(+S(+(w-Ha))<1.0e-6){Ga=8;i=o;return Ga|0}q=+S(+r)>+S(+ma);if(q){Ia=A-w/r;w=-0.0-r;A=(-0.0-z)/Ia;z=Ia;r=(-0.0-ma)/r}else{z=z-Ha/ma;w=ma;A=A/z;r=r/ma}ma=+h[n+32>>3];do{if(w<0.0){Ha=ma+.01;if(Ha<=0.0){Ha=+R(+Ha)}s=~~Ha;ma=w+ma+-.01;if(ma>0.0){break}ma=+R(+ma)}else{Ha=ma+-.01;if(Ha<=0.0){Ha=+R(+Ha)}s=~~Ha;ma=w+ma+.01;if(ma>0.0){break}ma=+R(+ma)}}while(0);t=~~ma-s|0;aa=(t|0)>-1?t:0-t|0;t=aa+1|0;ma=+h[n+40>>3];do{if(z<0.0){Ha=ma+.01;if(Ha<=0.0){Ha=+R(+Ha)}n=~~Ha;ma=z+ma+-.01;if(ma>0.0){break}ma=+R(+ma)}else{Ha=ma+-.01;if(Ha<=0.0){Ha=+R(+Ha)}n=~~Ha;ma=z+ma+.01;if(ma>0.0){break}ma=+R(+ma)}}while(0);u=~~ma-n|0;M=(u|0)>-1?u:0-u|0;u=M+1|0;ca=w<0.0;v=ca?-1:1;y=z<0.0?-1:1;w=r*+(v|0);x=da(aa,v)|0;B=~~(r*+(x|0));z=+(y|0);A=A*z;ma=A*+(M|0)+.5;if(ma>0.0){F=~~ma;D=da(M,y)|0;C=~~(r*+(F|0))+D|0}else{ma=+R(+ma);F=~~ma;D=da(M,y)|0;C=~~(r*+(F|0))+D|0}G=~~ma+x|0;H=~~(r*+(G|0))+D|0;if(q){J=H;D=B;E=C;C=n-F|0;F=n-G|0;G=n-x|0}else{J=G;D=x;E=F;C=C+n|0;F=H+n|0;G=n+B|0}H=E+s|0;I=D+s|0;J=J+s|0;do{if((D|0)>0){if((E|0)>0){K=(s|0)<(J|0)?s:J;B=43;break}else{D=(H|0)<(J|0)?H:J;B=47;break}}else{if((I|0)<(H|0)){K=(I|0)<(J|0)?I:J;B=43;break}else{K=(H|0)<(J|0)?H:J;B=43;break}}}while(0);do{if((B|0)==43){if((D|0)>=0){D=K;B=47;break}if((E|0)<0){D=K;H=(s|0)>(J|0)?s:J;break}else{D=K;H=(H|0)>(J|0)?H:J;break}}}while(0);do{if((B|0)==47){if((I|0)>(H|0)){H=(I|0)>(J|0)?I:J;break}else{H=(H|0)>(J|0)?H:J;break}}}while(0);do{if((n|0)<(G|0)){if((n|0)<(C|0)){E=(n|0)<(F|0)?n:F;break}else{E=(C|0)<(F|0)?C:F;break}}else{if((G|0)<(C|0)){E=(G|0)<(F|0)?G:F;break}else{E=(C|0)<(F|0)?C:F;break}}}while(0);do{if((n|0)>(G|0)){if((n|0)>(C|0)){F=(n|0)>(F|0)?n:F;break}else{F=(C|0)>(F|0)?C:F;break}}else{if((G|0)>(C|0)){F=(G|0)>(F|0)?G:F;break}else{F=(C|0)>(F|0)?C:F;break}}}while(0);C=b+4|0;D=Jp(c[(c[C>>2]|0)+132>>2]|0,D,E,H,F)|0;c[b+184>>2]=D;if((D|0)==1){Ga=0;i=o;return Ga|0}E=(m|0)/(u|0)|0;K=(m|0)%(u|0)|0;J=(l|0)/(t|0)|0;H=(l|0)%(t|0)|0;if((E|0)<0|(E|0)==2147483647){Ga=9;i=o;return Ga|0}I=E+1|0;m=Ae(I,l,ba)|0;if(j){G=U;O=1;F=ye(I,l)|0}else{G=U;O=(D|0)!=0&(a[b+188|0]&1)!=0;F=0}N=c[C>>2]|0;ma=+h[N+72>>3];c[L>>2]=0;c[p+4>>2]=0;L=N+136|0;P=c[L>>2]|0;if((P|0)!=0){c[p+40>>2]=c[P+20>>2]}Q=c[b>>2]|0;P=Q+16|0;switch(c[P>>2]|0){case 1:{c[p+44>>2]=c[Q+20>>2];break};case 3:case 2:{c[p+44>>2]=c[Q+20>>2];break};case 4:{c[p+44>>2]=c[Q+20>>2];break};case 0:{c[p+44>>2]=c[Q+20>>2];c[p+48>>2]=128;break};default:{}}c[p+52>>2]=c[Q+24>>2];Q=N+141|0;do{if((a[Q]&1)==0){B=79}else{V=c[b+16>>2]|0;T=c[V+24>>2]|0;if((T|0)==0){B=79;break}Ga=da(c[V>>2]|0,c[b+24>>2]|0)|0;c[p+36>>2]=T+((c[b+20>>2]|0)+Ga)}}while(0);if((B|0)==79){c[p+36>>2]=0}c[p+8>>2]=0;c[p+28>>2]=G;T=p+16|0;h[T>>3]=ma;do{if((c[L>>2]|0)==0){Ha=ma*255.0;if(O){h[T>>3]=Ha;break}Ha=Ha+.5;if(Ha<=0.0){Ha=+R(+Ha)}a[p+25|0]=~~Ha}}while(0);a[p+24|0]=O&1;do{if(ma==1.0){if((c[L>>2]|0)!=0|O){B=90;break}if((a[Q]&1)!=0){B=90;break}a[p+64|0]=1;c[p+68>>2]=c[53872+(c[P>>2]<<2)>>2]}else{B=90}}while(0);do{if((B|0)==90){a[p+64|0]=0;L=c[P>>2]|0;if((c[N+60>>2]|0)==0){c[p+68>>2]=c[53896+(L<<2)>>2];break}else{c[p+68>>2]=c[53920+(L<<2)>>2];break}}}while(0);c[p+72>>2]=0;L=b+188|0;if((a[L]&1)!=0){c[b+12>>2]=-1}M=(M|0)>-1;do{if(j){if(!M){break}O=(E|0)>0;T=(D|0)==0;M=T|q;j=w<0.0;N=(aa|0)>-1;P=U+1|0;Q=U+2|0;W=U+3|0;X=p+56|0;_=b+168|0;$=b+176|0;Y=b+172|0;U=b+180|0;V=J+1|0;Z=ca?aa:0;aa=ca?0:aa;ba=da(ba,l)|0;ga=1;ca=0;ea=0;while(1){Ga=ea+K|0;fa=(Ga|0)<(u|0);ea=Ga-(fa?0:u)|0;fa=fa?E:I;ia=O?fa:ga;if((ia|0)>0){ja=0;ga=m;ha=F;while(1){sd[e&127](f,ga,ha)|0;ja=ja+1|0;if((ja|0)<(ia|0)){ha=ha+l|0;ga=ga+ba|0}else{break}}}ma=+(ca|0);Ha=A*ma+.5;if(Ha<=0.0){Ha=+R(+Ha)}ja=~~Ha;Ha=r*+(ja|0);do{if(M){ia=D;B=107}else{ga=~~Ha;if((ga|0)!=(~~(r*+(ja+x|0))|0)){ia=D;B=107;break}Ga=ja+s|0;ia=(da(ca,y)|0)+n+ga|0;ia=Kp(c[(c[C>>2]|0)+132>>2]|0,Ga-Z|0,Ga+aa|0,ia)|0;if((ia|0)!=1){B=107}}}while(0);b:do{if((B|0)==107){B=0;ma=z*ma+Ha;if(j){ma=ma+.999}ga=(fa|0)<1?1:fa;switch(g|0){case 3:case 2:{if(!N){break b}ha=(ga|0)>0;ia=(ia|0)==0;ka=0;la=0;na=0;while(1){Ga=na+H|0;oa=(Ga|0)<(t|0);na=Ga-(oa?0:t)|0;oa=oa?J:V;pa=~~ma;qa=q?pa:ja;pa=q?0-ja|0:pa;ra=(oa|0)<1?1:oa;if(ha){ua=(ra|0)>0;va=l-ra|0;sa=va*3|0;wa=(oa|0)>1?oa:1;ta=wa*3|0;Fa=0;xa=0;ya=m+(ka*3|0)|0;Ga=0;Ea=0;Ca=0;Ba=F+ka|0;while(1){if(ua){za=Ba+wa|0;Da=0;Aa=ya;while(1){Ga=(d[Aa]|0)+Ga|0;Ea=(d[Aa+1|0]|0)+Ea|0;Ca=(d[Aa+2|0]|0)+Ca|0;Fa=(d[Ba]|0)+Fa|0;Da=Da+1|0;if((Da|0)<(ra|0)){Ba=Ba+1|0;Aa=Aa+3|0}else{break}}ya=ya+ta|0;Da=Ga;Aa=Ea}else{Da=Ga;Aa=Ea;za=Ba}xa=xa+1|0;if((xa|0)<(ga|0)){ya=ya+sa|0;Ga=Da;Ea=Aa;Ba=za+va|0}else{break}}}else{Fa=0;Da=0;Aa=0;Ca=0}Ha=1.0/+(da(ra,ga)|0);Ia=+(Fa|0)*Ha*.00392156862745098;do{if(Ia>0.0){a[G]=~~(+(Da|0)*Ha);a[P]=~~(+(Aa|0)*Ha);a[Q]=~~(+(Ca|0)*Ha);h[X>>3]=Ia;qa=qa+s|0;pa=pa+n|0;if(!((a[L]&1)==0|T)){xp(b,p,qa,pa);break}if((pa|0)<0){break}if(!ia){if(!(vp(c[(c[C>>2]|0)+132>>2]|0,qa,pa)|0)){break}}tp(b,p,qa,pa);up(b,p);if((c[_>>2]|0)>(qa|0)){c[_>>2]=qa}if((c[$>>2]|0)<(qa|0)){c[$>>2]=qa}if((c[Y>>2]|0)>(pa|0)){c[Y>>2]=pa}if((c[U>>2]|0)>=(pa|0)){break}c[U>>2]=pa}}while(0);la=la+1|0;if((la|0)<(t|0)){ja=ja+v|0;ka=oa+ka|0;ma=w+ma}else{break}}break};case 4:{if(!N){break b}ha=(ga|0)>0;ia=(ia|0)==0;ka=0;la=0;na=0;while(1){Ga=na+H|0;oa=(Ga|0)<(t|0);na=Ga-(oa?0:t)|0;oa=oa?J:V;pa=~~ma;qa=q?pa:ja;pa=q?0-ja|0:pa;ra=(oa|0)<1?1:oa;if(ha){ua=(ra|0)>0;va=l-ra|0;wa=va<<2;ta=(oa|0)>1?oa:1;sa=ta<<2;Ea=0;xa=0;ya=m+(ka<<2)|0;Ga=0;Fa=0;Da=0;Ba=F+ka|0;while(1){if(ua){za=Ba+ta|0;Ca=0;Aa=ya;while(1){Ga=(d[Aa]|0)+Ga|0;Fa=(d[Aa+1|0]|0)+Fa|0;Da=(d[Aa+2|0]|0)+Da|0;Ea=(d[Ba]|0)+Ea|0;Ca=Ca+1|0;if((Ca|0)<(ra|0)){Ba=Ba+1|0;Aa=Aa+4|0}else{break}}ya=ya+sa|0;Ca=Ga;Aa=Fa}else{Ca=Ga;Aa=Fa;za=Ba}xa=xa+1|0;if((xa|0)<(ga|0)){ya=ya+wa|0;Ga=Ca;Fa=Aa;Ba=za+va|0}else{break}}}else{Ea=0;Ca=0;Aa=0;Da=0}Ha=1.0/+(da(ra,ga)|0);Ia=+(Ea|0)*Ha*.00392156862745098;do{if(Ia>0.0){a[G]=~~(+(Ca|0)*Ha);a[P]=~~(+(Aa|0)*Ha);a[Q]=~~(+(Da|0)*Ha);a[W]=-1;h[X>>3]=Ia;qa=qa+s|0;pa=pa+n|0;if(!((a[L]&1)==0|T)){xp(b,p,qa,pa);break}if((pa|0)<0){break}if(!ia){if(!(vp(c[(c[C>>2]|0)+132>>2]|0,qa,pa)|0)){break}}tp(b,p,qa,pa);up(b,p);if((c[_>>2]|0)>(qa|0)){c[_>>2]=qa}if((c[$>>2]|0)<(qa|0)){c[$>>2]=qa}if((c[Y>>2]|0)>(pa|0)){c[Y>>2]=pa}if((c[U>>2]|0)>=(pa|0)){break}c[U>>2]=pa}}while(0);la=la+1|0;if((la|0)<(t|0)){ja=ja+v|0;ka=oa+ka|0;ma=w+ma}else{break}}break};case 1:case 0:{if(!N){break b}ha=(ga|0)>0;ia=(ia|0)==0;ka=0;la=0;na=0;while(1){Ga=na+H|0;oa=(Ga|0)<(t|0);na=Ga-(oa?0:t)|0;oa=oa?J:V;qa=~~ma;pa=q?qa:ja;qa=q?0-ja|0:qa;ra=(oa|0)<1?1:oa;if(ha){sa=(ra|0)>0;ta=l-ra|0;ua=(oa|0)>1?oa:1;ya=0;va=0;wa=m+ka|0;Ba=0;za=F+ka|0;while(1){if(sa){xa=za+ua|0;Ca=ya;Aa=0;ya=wa;while(1){Ba=(d[ya]|0)+Ba|0;Ca=(d[za]|0)+Ca|0;Aa=Aa+1|0;if((Aa|0)<(ra|0)){za=za+1|0;ya=ya+1|0}else{break}}ya=Ca;wa=wa+ua|0}else{xa=za}va=va+1|0;if((va|0)<(ga|0)){wa=wa+ta|0;za=xa+ta|0}else{break}}}else{ya=0;Ba=0}Ha=1.0/+(da(ra,ga)|0);Ia=+(ya|0)*Ha*.00392156862745098;do{if(Ia>0.0){a[G]=~~(+(Ba|0)*Ha);h[X>>3]=Ia;pa=pa+s|0;qa=qa+n|0;if(!((a[L]&1)==0|T)){xp(b,p,pa,qa);break}if((qa|0)<0){break}if(!ia){if(!(vp(c[(c[C>>2]|0)+132>>2]|0,pa,qa)|0)){break}}tp(b,p,pa,qa);up(b,p);if((c[_>>2]|0)>(pa|0)){c[_>>2]=pa}if((c[$>>2]|0)<(pa|0)){c[$>>2]=pa}if((c[Y>>2]|0)>(qa|0)){c[Y>>2]=qa}if((c[U>>2]|0)>=(qa|0)){break}c[U>>2]=qa}}while(0);la=la+1|0;if((la|0)<(t|0)){ja=ja+v|0;ka=oa+ka|0;ma=w+ma}else{break}}break};default:{break b}}}}while(0);ca=ca+1|0;if((ca|0)<(u|0)){ga=fa}else{break}}}else{if(!M){break}Q=(E|0)>0;O=(D|0)==0;P=O|q;j=w<0.0;T=(aa|0)>-1;M=U+1|0;N=U+2|0;W=U+3|0;X=b+168|0;Y=b+176|0;V=b+172|0;$=b+180|0;Z=p+56|0;_=J+1|0;U=ca?aa:0;aa=ca?0:aa;ba=da(ba,l)|0;ga=1;fa=0;ca=0;while(1){Ga=ca+K|0;ea=(Ga|0)<(u|0);ca=Ga-(ea?0:u)|0;ea=ea?E:I;ga=Q?ea:ga;if((ga|0)>0){ia=0;ha=m;while(1){sd[e&127](f,ha,0)|0;ia=ia+1|0;if((ia|0)<(ga|0)){ha=ha+ba|0}else{break}}}ma=+(fa|0);Ha=A*ma+.5;if(Ha<=0.0){Ha=+R(+Ha)}ka=~~Ha;Ha=r*+(ka|0);do{if(P){ia=D;B=190}else{ga=~~Ha;if((ga|0)!=(~~(r*+(ka+x|0))|0)){ia=D;B=190;break}Ga=ka+s|0;ia=(da(fa,y)|0)+n+ga|0;ia=Kp(c[(c[C>>2]|0)+132>>2]|0,Ga-U|0,Ga+aa|0,ia)|0;if((ia|0)!=1){B=190}}}while(0);c:do{if((B|0)==190){B=0;ma=z*ma+Ha;if(j){ma=ma+.999}ga=(ea|0)<1?1:ea;switch(g|0){case 1:case 0:{if(!T){break c}ha=(ga|0)>0;ia=(ia|0)==0;ja=0;la=0;na=0;while(1){Ga=na+H|0;oa=(Ga|0)<(t|0);na=Ga-(oa?0:t)|0;oa=oa?J:_;pa=~~ma;qa=q?pa:ka;pa=q?0-ka|0:pa;ra=(oa|0)<1?1:oa;if(ha){ua=(ra|0)>0;sa=l-ra|0;ta=(oa|0)>1?oa:1;va=0;wa=m+ja|0;ya=0;while(1){if(ua){za=0;xa=wa;while(1){ya=(d[xa]|0)+ya|0;za=za+1|0;if((za|0)<(ra|0)){xa=xa+1|0}else{break}}wa=wa+ta|0}va=va+1|0;if((va|0)<(ga|0)){wa=wa+sa|0}else{break}}}else{ya=0}a[G]=~~(+(ya|0)*(1.0/+(da(ra,ga)|0)));do{if((a[L]&1)==0|O){qa=qa+s|0;pa=pa+n|0;if((pa|0)<0){break}if(!ia){if(!(vp(c[(c[C>>2]|0)+132>>2]|0,qa,pa)|0)){break}}tp(b,p,qa,pa);up(b,p);if((c[X>>2]|0)>(qa|0)){c[X>>2]=qa}if((c[Y>>2]|0)<(qa|0)){c[Y>>2]=qa}if((c[V>>2]|0)>(pa|0)){c[V>>2]=pa}if((c[$>>2]|0)>=(pa|0)){break}c[$>>2]=pa}else{h[Z>>3]=1.0;xp(b,p,qa+s|0,pa+n|0)}}while(0);la=la+1|0;if((la|0)<(t|0)){ka=ka+v|0;ja=oa+ja|0;ma=w+ma}else{break}}break};case 3:case 2:{if(!T){break c}ha=(ga|0)>0;ia=(ia|0)==0;ja=0;la=0;na=0;while(1){Ga=na+H|0;oa=(Ga|0)<(t|0);na=Ga-(oa?0:t)|0;oa=oa?J:_;qa=~~ma;pa=q?qa:ka;qa=q?0-ka|0:qa;ra=(oa|0)<1?1:oa;if(ha){sa=(ra|0)>0;ta=(l-ra|0)*3|0;ua=(oa|0)>1?oa*3|0:3;va=0;wa=m+(ja*3|0)|0;Ba=0;Aa=0;za=0;while(1){if(sa){ya=0;xa=wa;while(1){Ba=(d[xa]|0)+Ba|0;Aa=(d[xa+1|0]|0)+Aa|0;za=(d[xa+2|0]|0)+za|0;ya=ya+1|0;if((ya|0)<(ra|0)){xa=xa+3|0}else{break}}wa=wa+ua|0}va=va+1|0;if((va|0)<(ga|0)){wa=wa+ta|0}else{break}}}else{Ba=0;Aa=0;za=0}Ia=1.0/+(da(ra,ga)|0);a[G]=~~(+(Ba|0)*Ia);a[M]=~~(+(Aa|0)*Ia);a[N]=~~(+(za|0)*Ia);do{if((a[L]&1)==0|O){pa=pa+s|0;qa=qa+n|0;if((qa|0)<0){break}if(!ia){if(!(vp(c[(c[C>>2]|0)+132>>2]|0,pa,qa)|0)){break}}tp(b,p,pa,qa);up(b,p);if((c[X>>2]|0)>(pa|0)){c[X>>2]=pa}if((c[Y>>2]|0)<(pa|0)){c[Y>>2]=pa}if((c[V>>2]|0)>(qa|0)){c[V>>2]=qa}if((c[$>>2]|0)>=(qa|0)){break}c[$>>2]=qa}else{h[Z>>3]=1.0;xp(b,p,pa+s|0,qa+n|0)}}while(0);la=la+1|0;if((la|0)<(t|0)){ka=ka+v|0;ja=oa+ja|0;ma=w+ma}else{break}}break};case 4:{if(!T){break c}ha=(ga|0)>0;ia=(ia|0)==0;ja=0;la=0;na=0;while(1){Ga=na+H|0;oa=(Ga|0)<(t|0);na=Ga-(oa?0:t)|0;oa=oa?J:_;qa=~~ma;pa=q?qa:ka;qa=q?0-ka|0:qa;ra=(oa|0)<1?1:oa;if(ha){ua=(ra|0)>0;sa=l-ra<<2;ta=(oa|0)>1?oa<<2:4;va=0;wa=m+(ja<<2)|0;Ba=0;Aa=0;za=0;while(1){if(ua){ya=0;xa=wa;while(1){Ba=(d[xa]|0)+Ba|0;Aa=(d[xa+1|0]|0)+Aa|0;za=(d[xa+2|0]|0)+za|0;ya=ya+1|0;if((ya|0)<(ra|0)){xa=xa+4|0}else{break}}wa=wa+ta|0}va=va+1|0;if((va|0)<(ga|0)){wa=wa+sa|0}else{break}}}else{Ba=0;Aa=0;za=0}Ia=1.0/+(da(ra,ga)|0);a[G]=~~(+(Ba|0)*Ia);a[M]=~~(+(Aa|0)*Ia);a[N]=~~(+(za|0)*Ia);a[W]=-1;do{if((a[L]&1)==0|O){pa=pa+s|0;qa=qa+n|0;if((qa|0)<0){break}if(!ia){if(!(vp(c[(c[C>>2]|0)+132>>2]|0,pa,qa)|0)){break}}tp(b,p,pa,qa);up(b,p);if((c[X>>2]|0)>(pa|0)){c[X>>2]=pa}if((c[Y>>2]|0)<(pa|0)){c[Y>>2]=pa}if((c[V>>2]|0)>(qa|0)){c[V>>2]=qa}if((c[$>>2]|0)>=(qa|0)){break}c[$>>2]=qa}else{h[Z>>3]=1.0;xp(b,p,pa+s|0,qa+n|0)}}while(0);la=la+1|0;if((la|0)<(t|0)){ka=ka+v|0;ja=oa+ja|0;ma=w+ma}else{break}}break};default:{break c}}}}while(0);fa=fa+1|0;if((fa|0)<(u|0)){ga=ea}else{break}}}}while(0);Fe(m);Fe(F);Ga=0;i=o;return Ga|0}function zp(b,d,e,f,g,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var 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.0,N=0.0;o=i;t=i;i=i+80|0;q=t;r=i;i=i+8|0;if((c[d+16>>2]|0)!=(c[(c[b>>2]|0)+16>>2]|0)){L=7;i=o;return L|0}u=d+24|0;L=(c[u>>2]|0)==0;p=b+4|0;M=+h[(c[p>>2]|0)+72>>3];tp(b,q,g,j);c[q+8>>2]=0;c[q+28>>2]=r;x=q+16|0;h[x>>3]=M;v=c[p>>2]|0;w=v+136|0;y=(c[w>>2]|0)==0;if(!L){if(y){h[x>>3]=M*255.0}a[q+24|0]=1;a[q+64|0]=0;x=(c[b>>2]|0)+16|0;w=c[x>>2]|0;if((c[v+60>>2]|0)==0){c[q+68>>2]=c[53896+(w<<2)>>2]}else{c[q+68>>2]=c[53920+(w<<2)>>2]}if(n){c[q+72>>2]=c[55024+(c[x>>2]<<2)>>2]}else{c[q+72>>2]=0}if((l|0)<=0){L=0;i=o;return L|0}n=(k|0)>0;z=q+56|0;v=b+168|0;w=b+176|0;x=b+172|0;y=b+180|0;A=q+52|0;E=q+36|0;C=q+48|0;B=q+44|0;D=q+40|0;H=0;while(1){F=H+j|0;tp(b,q,g,F);I=H+f|0;if(n){K=(da(c[d>>2]|0,I)|0)+e|0;K=(c[u>>2]|0)+K|0;J=0;while(1){G=K+1|0;K=a[K]|0;do{if(m){L=J+g|0;s=18}else{L=J+g|0;if(vp(c[(c[p>>2]|0)+132>>2]|0,L,F)|0){s=18;break}c[t>>2]=(c[t>>2]|0)+1;if((c[(c[p>>2]|0)+136>>2]|0)!=0){c[D>>2]=(c[D>>2]|0)+1}a:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 4:{c[B>>2]=(c[B>>2]|0)+4;break};case 1:{c[B>>2]=(c[B>>2]|0)+1;break};case 3:case 2:{c[B>>2]=(c[B>>2]|0)+3;break};case 0:{L=c[C>>2]>>1;c[C>>2]=L;if((L|0)!=0){break a}c[C>>2]=128;c[B>>2]=(c[B>>2]|0)+1;break};default:{}}}while(0);K=c[A>>2]|0;if((K|0)!=0){c[A>>2]=K+1}K=c[E>>2]|0;if((K|0)==0){break}c[E>>2]=K+1}}while(0);do{if((s|0)==18){s=0;Oe(d,J+e|0,I,r);h[z>>3]=+(K&255|0)/255.0;up(b,q);if((c[v>>2]|0)>(L|0)){c[v>>2]=L}if((c[w>>2]|0)<(L|0)){c[w>>2]=L}if((c[x>>2]|0)>(F|0)){c[x>>2]=F}if((c[y>>2]|0)>=(F|0)){break}c[y>>2]=F}}while(0);J=J+1|0;if((J|0)<(k|0)){K=G}else{break}}}H=H+1|0;if((H|0)>=(l|0)){p=0;break}}i=o;return p|0}if(y){N=M*255.0+.5;if(N<=0.0){N=+R(+N)}a[q+25|0]=~~N}a[q+24|0]=0;do{if(M==1.0){if((c[w>>2]|0)!=0){s=48;break}if((a[v+141|0]&1)!=0){s=48;break}a[q+64|0]=1;w=c[b>>2]|0;c[q+68>>2]=c[53872+(c[w+16>>2]<<2)>>2]}else{s=48}}while(0);do{if((s|0)==48){a[q+64|0]=0;w=c[b>>2]|0;u=c[w+16>>2]|0;if((c[v+60>>2]|0)==0){c[q+68>>2]=c[53896+(u<<2)>>2];break}else{c[q+68>>2]=c[53920+(u<<2)>>2];break}}}while(0);if(n){c[q+72>>2]=c[55024+(c[w+16>>2]<<2)>>2]}else{c[q+72>>2]=0}if((l|0)<=0){L=0;i=o;return L|0}u=(k|0)>0;w=b+168|0;n=b+176|0;x=b+172|0;y=b+180|0;A=q+52|0;z=q+36|0;C=q+48|0;B=q+44|0;v=q+40|0;G=0;while(1){F=G+j|0;tp(b,q,g,F);if(u){E=G+f|0;D=0;do{do{if(m){H=D+g|0;s=61}else{H=D+g|0;if(vp(c[(c[p>>2]|0)+132>>2]|0,H,F)|0){s=61;break}c[t>>2]=(c[t>>2]|0)+1;if((c[(c[p>>2]|0)+136>>2]|0)!=0){c[v>>2]=(c[v>>2]|0)+1}b:do{switch(c[(c[b>>2]|0)+16>>2]|0){case 1:{c[B>>2]=(c[B>>2]|0)+1;break};case 3:case 2:{c[B>>2]=(c[B>>2]|0)+3;break};case 0:{L=c[C>>2]>>1;c[C>>2]=L;if((L|0)!=0){break b}c[C>>2]=128;c[B>>2]=(c[B>>2]|0)+1;break};case 4:{c[B>>2]=(c[B>>2]|0)+4;break};default:{}}}while(0);H=c[A>>2]|0;if((H|0)!=0){c[A>>2]=H+1}H=c[z>>2]|0;if((H|0)==0){break}c[z>>2]=H+1}}while(0);do{if((s|0)==61){s=0;Oe(d,D+e|0,E,r);up(b,q);if((c[w>>2]|0)>(H|0)){c[w>>2]=H}if((c[n>>2]|0)<(H|0)){c[n>>2]=H}if((c[x>>2]|0)>(F|0)){c[x>>2]=F}if((c[y>>2]|0)>=(F|0)){break}c[y>>2]=F}}while(0);D=D+1|0;}while((D|0)<(k|0))}G=G+1|0;if((G|0)>=(l|0)){p=0;break}}i=o;return p|0}function Ap(b,e){b=b|0;e=e|0;var 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;f=i;g=i;i=i+8|0;m=c[b>>2]|0;if((c[m+24>>2]|0)==0){Qe(-1,54192,g);i=f;return}a:do{switch(c[m+16>>2]|0){case 3:case 2:{g=a[e]|0;h=a[e+1|0]|0;l=a[e+2|0]|0;if((c[m+4>>2]|0)<=0){break a}e=g&255;j=h&255;k=l&255;o=m;m=0;while(1){n=c[o>>2]|0;if((n|0)>0){q=da(n,m)|0;n=(c[o+20>>2]|0)+(da(c[o+12>>2]|0,m)|0)|0;q=(c[o+24>>2]|0)+q|0;p=0;while(1){o=q+1|0;r=a[q]|0;q=r&255;if(r<<24>>24==0){a[n]=g;a[n+1|0]=h;a[n+2|0]=l}else if(r<<24>>24!=-1){s=~r&255;t=da(s,e)|0;t=(da(d[n]|0,q)|0)+t|0;a[n]=(t+128+(t>>>8)|0)>>>8;t=da(s,j)|0;r=n+1|0;t=(da(d[r]|0,q)|0)+t|0;a[r]=(t+128+(t>>>8)|0)>>>8;s=da(s,k)|0;r=n+2|0;q=(da(d[r]|0,q)|0)+s|0;a[r]=(q+128+(q>>>8)|0)>>>8}p=p+1|0;q=c[b>>2]|0;if((p|0)<(c[q>>2]|0)){n=n+3|0;q=o}else{o=q;break}}}m=m+1|0;if((m|0)>=(c[o+4>>2]|0)){m=o;break}}break};case 1:{if((c[m+4>>2]|0)<=0){break a}g=d[e]|0;h=0;do{e=c[m>>2]|0;if((e|0)>0){j=da(e,h)|0;e=(c[m+20>>2]|0)+(da(c[m+12>>2]|0,h)|0)|0;j=(c[m+24>>2]|0)+j|0;k=0;while(1){t=a[j]|0;m=da(~t&255,g)|0;m=(da(d[e]|0,t&255)|0)+m|0;a[e]=(m+128+(m>>>8)|0)>>>8;k=k+1|0;m=c[b>>2]|0;if((k|0)<(c[m>>2]|0)){j=j+1|0;e=e+1|0}else{break}}}h=h+1|0;}while((h|0)<(c[m+4>>2]|0));break};case 0:{if((c[m+4>>2]|0)<=0){break a}g=d[e]|0;h=0;do{e=c[m>>2]|0;if((e|0)>0){j=da(e,h)|0;k=128;e=(c[m+20>>2]|0)+(da(c[m+12>>2]|0,h)|0)|0;j=(c[m+24>>2]|0)+j|0;l=0;while(1){t=a[j]|0;m=d[e]|0;t=(da(((m&k|0)!=0)<<31>>31&255,t&255)|0)+(da(~t&255,g)|0)|0;if(((t+128+(t>>>8)|0)>>>8&255)<<24>>24<0){m=m|k}else{m=m&(k^255)}a[e]=m;k=k>>1;n=(k|0)==0;l=l+1|0;m=c[b>>2]|0;if((l|0)<(c[m>>2]|0)){k=n?128:k;e=n?e+1|0:e;j=j+1|0}else{break}}}h=h+1|0;}while((h|0)<(c[m+4>>2]|0));break};case 4:{g=a[e]|0;h=a[e+1|0]|0;k=a[e+2|0]|0;if((c[m+4>>2]|0)<=0){break a}l=g&255;e=h&255;j=k&255;o=m;m=0;while(1){n=c[o>>2]|0;if((n|0)>0){q=da(n,m)|0;n=(c[o+20>>2]|0)+(da(c[o+12>>2]|0,m)|0)|0;q=(c[o+24>>2]|0)+q|0;p=0;while(1){o=q+1|0;q=a[q]|0;r=q&255;if(q<<24>>24==0){a[n]=g;a[n+1|0]=h;a[n+2|0]=k}else if(q<<24>>24!=-1){s=~q&255;q=da(s,l)|0;q=(da(d[n]|0,r)|0)+q|0;a[n]=(q+128+(q>>>8)|0)>>>8;q=da(s,e)|0;t=n+1|0;q=(da(d[t]|0,r)|0)+q|0;a[t]=(q+128+(q>>>8)|0)>>>8;s=da(s,j)|0;t=n+2|0;s=(da(d[t]|0,r)|0)+s|0;a[t]=(s+128+(s>>>8)|0)>>>8}a[n+3|0]=-1;p=p+1|0;q=c[b>>2]|0;if((p|0)<(c[q>>2]|0)){n=n+4|0;q=o}else{o=q;break}}}m=m+1|0;if((m|0)>=(c[o+4>>2]|0)){m=o;break}}break};default:{}}}while(0);bX(c[m+24>>2]|0,-1,da(c[m+4>>2]|0,c[m>>2]|0)|0)|0;i=f;return}function Bp(b,d){b=b|0;d=d|0;var e=0,f=0,g=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,O=0,P=0,Q=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0,_=0.0,$=0.0,aa=0,ba=0,ca=0.0,ea=0.0,fa=0.0,ga=0,ha=0.0,ia=0,ja=0.0,ka=0,la=0,ma=0.0,na=0.0,oa=0,pa=0.0,qa=0,ra=0,sa=0.0,ta=0.0,ua=0.0,va=0,wa=0;j=i;r=i;i=i+24|0;p=r;n=i;i=i+24|0;q=n;w=i;i=i+16|0;u=w;y=i;i=i+16|0;x=y;m=i;i=i+80|0;f=m;g=i;i=i+8|0;v=i;i=i+24|0;t=v;bX(r|0,0,24)|0;bX(n|0,0,24)|0;bX(w|0,0,12)|0;bX(y|0,0,12)|0;C=c[b>>2]|0;l=c[C>>2]|0;o=c[b+4>>2]|0;s=c[o+132>>2]|0;H=C+20|0;B=c[H>>2]|0;I=C+24|0;A=c[I>>2]|0;D=C+16|0;z=c[D>>2]|0;E=(A|0)!=0;G=C+12|0;e=c[G>>2]|0;if((z|0)==1){k=z}else if((z|0)==4){k=z}else if((z|0)==2){k=3}else if((z|0)==3){k=z}else{k=0}Z=+h[o+64>>3];c[m>>2]=0;c[f+4>>2]=0;m=o+136|0;J=c[m>>2]|0;if((J|0)!=0){c[f+40>>2]=c[J+20>>2]}switch(c[D>>2]|0){case 3:case 2:{c[f+44>>2]=c[H>>2];break};case 4:{c[f+44>>2]=c[H>>2];break};case 1:{c[f+44>>2]=c[H>>2];break};case 0:{c[f+44>>2]=c[H>>2];c[f+48>>2]=128;break};default:{}}c[f+52>>2]=c[I>>2];H=o+141|0;do{if((a[H]&1)==0){F=16}else{I=c[b+16>>2]|0;J=c[I+24>>2]|0;if((J|0)==0){F=16;break}wa=da(c[I>>2]|0,c[b+24>>2]|0)|0;c[f+36>>2]=J+((c[b+20>>2]|0)+wa)}}while(0);if((F|0)==16){c[f+36>>2]=0}c[f+8>>2]=0;c[f+28>>2]=g;h[f+16>>3]=Z;if((c[m>>2]|0)==0){_=Z*255.0+.5;if(_<=0.0){_=+R(+_)}a[f+25|0]=~~_}a[f+24|0]=0;do{if(Z==1.0){if((c[m>>2]|0)!=0){F=25;break}if((a[H]&1)!=0){F=25;break}a[f+64|0]=1;c[f+68>>2]=c[53872+(c[D>>2]<<2)>>2];H=1}else{F=25}}while(0);do{if((F|0)==25){a[f+64|0]=0;m=c[D>>2]|0;if((c[o+60>>2]|0)==0){c[f+68>>2]=c[53896+(m<<2)>>2];H=0;break}else{c[f+68>>2]=c[53920+(m<<2)>>2];H=0;break}}}while(0);c[f+72>>2]=0;m=b+188|0;do{if((a[m]&1)==0){if(H<<24>>24==0){F=33;break}if((c[o+60>>2]|0)==0){D=1}else{F=33}}else{if((c[b+8>>2]|0)==0){wa=0;i=j;return wa|0}else{c[b+12>>2]=-1;F=33;break}}}while(0);do{if((F|0)==33){E=FW(28)|0;Ke(E,c[C>>2]|0,c[C+4>>2]|0,c[C+8>>2]|0,c[D>>2]|0,1,(c[G>>2]|0)>-1);B=c[E+20>>2]|0;A=c[E+24>>2]|0;C=c[b>>2]|0;C=da(c[C+4>>2]|0,c[C>>2]|0)|0;if((C|0)<=0){D=0;C=E;E=1;break}bX(A|0,0,C|0)|0;D=0;C=E;E=1}}while(0);if(!(jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)){wa=0;i=j;return wa|0}a:do{if((jd[c[(c[d>>2]|0)+24>>2]&511](d)|0)>0){L=p+8|0;M=q+8|0;J=t+8|0;O=p+16|0;G=q+16|0;H=t+16|0;U=o+16|0;W=o+32|0;I=o+8|0;K=o+24|0;P=o+40|0;V=x+4|0;F=u+4|0;Q=x+8|0;T=u+8|0;N=0;b:while(1){rd[c[(c[d>>2]|0)+28>>2]&1](d,N,p,q,t,L,M,J,O,G,H);ua=+h[r>>3];Z=+h[n>>3];_=+h[W>>3]+(ua*+h[o>>3]+Z*+h[U>>3]);Z=+h[P>>3]+(ua*+h[I>>3]+Z*+h[K>>3]);h[r>>3]=_;h[n>>3]=Z;_=_+.5;if(_<=0.0){_=+R(+_)}ia=~~_;c[w>>2]=ia;Z=Z+.5;if(Z<=0.0){Z=+R(+Z)}X=~~Z;c[y>>2]=X;ua=+h[L>>3];Z=+h[M>>3];_=+h[W>>3]+(ua*+h[o>>3]+Z*+h[U>>3]);Z=+h[P>>3]+(ua*+h[I>>3]+Z*+h[K>>3]);h[L>>3]=_;h[M>>3]=Z;_=_+.5;if(_<=0.0){_=+R(+_)}Y=~~_;c[F>>2]=Y;Z=Z+.5;if(Z<=0.0){Z=+R(+Z)}ba=~~Z;c[V>>2]=ba;ua=+h[O>>3];Z=+h[G>>3];_=+h[W>>3]+(ua*+h[o>>3]+Z*+h[U>>3]);Z=+h[P>>3]+(ua*+h[I>>3]+Z*+h[K>>3]);h[O>>3]=_;h[G>>3]=Z;_=_+.5;if(_<=0.0){_=+R(+_)}la=~~_;c[T>>2]=la;Z=Z+.5;if(Z<=0.0){Z=+R(+Z)}ga=~~Z;c[Q>>2]=ga;if((X|0)>(ba|0)){c[w>>2]=Y;c[F>>2]=ia;c[y>>2]=ba;c[V>>2]=X;ua=+h[v>>3];h[v>>3]=+h[J>>3];h[J>>3]=ua;ka=Y;Y=X}else{ka=ia;ia=Y;Y=ba;ba=X}if((ba|0)>(Y|0)){F=45;break}do{if((Y|0)>(ga|0)){Z=+h[H>>3];c[T>>2]=ia;c[Q>>2]=Y;h[H>>3]=+h[J>>3];if((ba|0)>(ga|0)){c[F>>2]=ka;c[V>>2]=ba;h[J>>3]=+h[v>>3];c[w>>2]=la;c[y>>2]=ga;h[v>>3]=Z;aa=ka;ka=la;X=ba;ba=ga;break}else{c[F>>2]=la;c[V>>2]=ga;h[J>>3]=Z;aa=la;X=ga;break}}else{aa=ia;ia=la;X=Y;Y=ga}}while(0);if((ba|0)>(X|0)){F=51;break}if((X|0)>(Y|0)){F=53;break}do{if((da(ka-ia|0,X-Y|0)|0)!=(da(aa-ia|0,ba-Y|0)|0)){ga=(ba|0)==(X|0);la=ga?2:1;ga=ga&1;ra=c[x+(ga<<2)>>2]|0;wa=c[x+(la<<2)>>2]|0;if((ra|0)>=(wa|0)){F=56;break b}if((ba|0)>=(Y|0)){F=58;break b}va=c[u+(ga<<2)>>2]|0;ha=+((c[u+(la<<2)>>2]|0)-va|0)/+(wa-ra|0);fa=+(va|0)- +(ra|0)*ha;_=+(ia-ka|0)/+(Y-ba|0);$=+(ka|0)- +(ba|0)*_;Z=+(X|0);if(fa+ha*Z>$+_*Z){qa=ra;va=wa;ra=ba;wa=Y;ca=$;ea=_;ka=2;oa=0}else{qa=ba;va=Y;ca=fa;ea=ha;fa=$;ha=_;ka=la;oa=ga;la=2;ga=0}ma=+h[t+(oa<<3)>>3];na=(+h[t+(ka<<3)>>3]-ma)/+(wa-ra|0);pa=+h[t+(ga<<3)>>3];sa=(+h[t+(la<<3)>>3]-pa)/+(va-qa|0);if((ba|0)>(Y|0)){break}_=+(ia-aa|0);$=+(aa|0);aa=ba;ia=(X|0)<(Y|0);ja=na;ma=ma- +(ra|0)*na;na=sa;pa=pa- +(qa|0)*sa;ba=da(ba,e)|0;while(1){if(ia&(aa|0)==(X|0)){do{if((ka|0)==1){ma=+(Y-X|0);ea=_/ma;ua=+h[J>>3];ma=(+h[H>>3]-ua)/ma;ca=$-Z*ea;ka=2;oa=1;ja=ma;ma=ua-Z*ma}else{if((la|0)!=1){break}pa=+(Y-X|0);ha=_/pa;ua=+h[J>>3];pa=(+h[H>>3]-ua)/pa;fa=$-Z*ha;la=2;ga=1;na=pa;pa=ua-Z*pa}}while(0);if((c[x+(oa<<2)>>2]|0)>=(c[x+(ka<<2)>>2]|0)){F=69;break b}if((c[x+(ga<<2)>>2]|0)<(c[x+(la<<2)>>2]|0)){ia=0}else{F=71;break b}}ta=+(aa|0);sa=ta*ja+ma;ua=ca+ta*ea+.5;if(ua<=0.0){ua=+R(+ua)}ra=~~ua;ua=fa+ta*ha+.5;if(ua<=0.0){ua=+R(+ua)}qa=~~ua;if((qa|0)==(ra|0)){ta=0.0}else{ta=(ta*na+pa-sa)/+(qa-ra|0)}ua=+(ra|0)*ta;sa=sa-ua;if((ra|0)>(qa|0)){qa=ra-qa|0;if((((qa|0)>-1?qa:0-qa|0)|0)>=3){F=80;break b}}else{wa=da(aa,l)|0;va=ra;ra=(da(ra,k)|0)+ba|0;ua=ua+sa;while(1){do{if(vp(s,va,aa)|0){if(+S(+(ua-(sa+ta*+(va|0))))>=1.0e-10){F=84;break b}od[c[(c[d>>2]|0)+32>>2]&1](d,ua,z,B+ra|0);if(!E){break}a[A+(va+wa)|0]=-1}}while(0);if((va|0)<(qa|0)){va=va+1|0;ra=ra+k|0;ua=ta+ua}else{break}}}if((aa|0)<(Y|0)){aa=aa+1|0;ba=ba+e|0}else{break}}}}while(0);N=N+1|0;if((N|0)>=(jd[c[(c[d>>2]|0)+24>>2]&511](d)|0)){break a}}if((F|0)==45){Ya(54248,54264,3348,54280)}else if((F|0)==51){Ya(54248,54264,3363,54280)}else if((F|0)==53){Ya(54312,54264,3364,54280)}else if((F|0)==56){Ya(54328,54264,3392,54280)}else if((F|0)==58){Ya(54368,54264,3393,54280)}else if((F|0)==69){Ya(54328,54264,3451,54280)}else if((F|0)==71){Ya(54368,54264,3452,54280)}else if((F|0)==80){Ya(54408,54264,3474,54280)}else if((F|0)==84){Ya(54472,54264,3487,54280)}}}while(0);if(D){wa=1;i=j;return wa|0}o=c[C>>2]|0;n=c[C+4>>2]|0;if((o|0)>0){t=(n|0)>0;d=(k|0)==0;s=b+168|0;r=b+176|0;q=b+172|0;y=b+180|0;u=0;do{if(t){v=da(u,k)|0;w=0;do{do{if((a[A+((da(w,l)|0)+u)|0]|0)!=0){x=(da(w,e)|0)+v|0;if(!d){p=0;do{a[g+p|0]=a[B+(x+p)|0]|0;p=p+1|0;}while((p|0)<(k|0))}if((a[m]&1)!=0){xp(b,f,u,w);break}tp(b,f,u,w);up(b,f);if((c[s>>2]|0)>(u|0)){c[s>>2]=u}if((c[r>>2]|0)<(u|0)){c[r>>2]=u}if((c[q>>2]|0)>(w|0)){c[q>>2]=w}if((c[y>>2]|0)>=(w|0)){break}c[y>>2]=w}}while(0);w=w+1|0;}while((w|0)<(n|0))}u=u+1|0;}while((u|0)<(o|0))}if((C|0)==0){wa=1;i=j;return wa|0}Le(C);HW(C);wa=1;i=j;return wa|0}function Cp(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=i;n=i;i=i+8|0;o=n;q=c[e+16>>2]|0;p=c[b>>2]|0;if((q|0)!=(c[p+16>>2]|0)){x=7;i=m;return x|0}a:do{switch(q|0){case 0:{if((l|0)<=0){break a}r=h>>3;q=128>>>(h&7);s=(k|0)>0;t=0;while(1){if(s){w=da(c[p+12>>2]|0,t+j|0)|0;u=t+g|0;v=q;p=(c[p+20>>2]|0)+(w+r)|0;w=0;while(1){Oe(e,w+f|0,u,o);if((a[n]|0)==0){x=d[p]&(v^255)}else{x=d[p]|v}a[p]=x;v=v>>1;x=(v|0)==0;w=w+1|0;if((w|0)<(k|0)){v=x?128:v;p=x?p+1|0:p}else{break}}}t=t+1|0;if((t|0)>=(l|0)){break a}p=c[b>>2]|0}break};case 3:case 2:{if((l|0)<=0){break a}o=h*3|0;n=e+12|0;f=f*3|0;e=e+20|0;q=(k|0)>0;r=0;while(1){if(q){s=da(c[n>>2]|0,r+g|0)|0;t=da(c[p+12>>2]|0,r+j|0)|0;p=(c[p+20>>2]|0)+(t+o)|0;s=(c[e>>2]|0)+(s+f)|0;t=0;while(1){a[p]=a[s]|0;a[p+1|0]=a[s+1|0]|0;a[p+2|0]=a[s+2|0]|0;t=t+1|0;if((t|0)<(k|0)){s=s+3|0;p=p+3|0}else{break}}}r=r+1|0;if((r|0)>=(l|0)){break a}p=c[b>>2]|0}break};case 1:{if((l|0)<=0){break a}q=(k|0)>0;r=0;while(1){if(q){t=da(c[p+12>>2]|0,r+j|0)|0;s=r+g|0;p=(c[p+20>>2]|0)+(t+h)|0;t=0;while(1){Oe(e,t+f|0,s,o);a[p]=a[n]|0;t=t+1|0;if((t|0)<(k|0)){p=p+1|0}else{break}}}r=r+1|0;if((r|0)>=(l|0)){break a}p=c[b>>2]|0}break};case 4:{if((l|0)<=0){break a}n=h<<2;o=e+12|0;f=f<<2;e=e+20|0;q=(k|0)>0;r=0;while(1){if(q){s=da(c[o>>2]|0,r+g|0)|0;t=da(c[p+12>>2]|0,r+j|0)|0;p=(c[p+20>>2]|0)+(t+n)|0;s=(c[e>>2]|0)+(s+f)|0;t=0;while(1){a[p]=a[s]|0;a[p+1|0]=a[s+1|0]|0;a[p+2|0]=a[s+2|0]|0;a[p+3|0]=-1;t=t+1|0;if((t|0)<(k|0)){s=s+4|0;p=p+4|0}else{break}}}r=r+1|0;if((r|0)>=(l|0)){break a}p=c[b>>2]|0}break};default:{}}}while(0);e=c[b>>2]|0;g=c[e+24>>2]|0;if((g|0)!=0&(l|0)>0){f=0}else{x=0;i=m;return x|0}while(1){bX(g+((da(c[e>>2]|0,f+j|0)|0)+h)|0,0,k|0)|0;f=f+1|0;if((f|0)>=(l|0)){h=0;break}e=c[b>>2]|0;g=c[e+24>>2]|0}i=m;return h|0}function Dp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=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;r=i;j=i;i=i+80|0;u=i;i=i+8|0;t=i;i=i+8|0;s=i;i=i+8|0;m=i;i=i+8|0;k=i;i=i+8|0;o=k;l=i;i=i+8|0;p=l;n=b+8|0;if((c[n>>2]|0)==0){y=255;i=r;return y|0}if((c[d+8>>2]|0)==0){y=2;i=r;return y|0}g=FW(12)|0;q=b+4|0;y=c[q>>2]|0;Pq(g,d,y,+h[y+104>>3],1);Vq(g);Wq(g);d=FW(52)|0;$q(d,g,0);br(d,u,t,s,m);s=Jp(c[(c[q>>2]|0)+132>>2]|0,c[u>>2]|0,c[t>>2]|0,c[s>>2]|0,c[m>>2]|0)|0;do{if((s|0)!=1){y=c[t>>2]|0;u=c[q>>2]|0;w=u+132|0;x=c[w>>2]|0;v=c[x+44>>2]|0;if((y|0)<(v|0)){c[t>>2]=v;x=c[w>>2]|0}else{v=y}w=c[x+52>>2]|0;if((c[m>>2]|0)>(w|0)){c[m>>2]=w}jp(b,j,0,v,f,0,+h[u+72>>3],(a[b+188|0]&1)!=0&(e^1),0);e=c[t>>2]|0;if((e|0)>(c[m>>2]|0)){break}t=(s|0)==0;while(1){hr(d,c[n>>2]|0,o,p,e);if(!t){Lp(c[(c[q>>2]|0)+132>>2]|0,c[n>>2]|0,o,p,e)}pp(b,j,c[k>>2]|0,c[l>>2]|0,e);if((e|0)<(c[m>>2]|0)){e=e+1|0}else{break}}}}while(0);c[b+184>>2]=s;if((d|0)!=0){ar(d);HW(d)}if((g|0)==0){y=0;i=r;return y|0}Uq(g);HW(g);y=0;i=r;return y|0}function Ep(b,d,e,f,g,j){b=b|0;d=+d;e=+e;f=+f;g=+g;j=j|0;var k=0,l=0.0,m=0;k=i;a[b]=j&1;j=b+8|0;if(d>3]=d;h[b+24>>3]=f;l=f}else{h[j>>3]=f;h[b+24>>3]=d;l=d;d=f}j=b+16|0;if(e>3]=e;h[b+32>>3]=g;f=g}else{h[j>>3]=g;h[b+32>>3]=e;f=e;e=g}if(d<=0.0){d=+R(+d)}c[b+40>>2]=~~d;if(e<=0.0){e=+R(+e)}c[b+44>>2]=~~e;if(l<=0.0){l=+R(+l)}c[b+48>>2]=~~l;if(f>0.0){d=f;m=~~d;j=b+52|0;c[j>>2]=m;j=b+56|0;bX(j|0,0,20)|0;i=k;return}d=+R(+f);j=~~d;m=b+52|0;c[m>>2]=j;m=b+56|0;bX(m|0,0,20)|0;i=k;return}function Fp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0;e=i;a[b]=a[d]&1;h[b+8>>3]=+h[d+8>>3];h[b+16>>3]=+h[d+16>>3];h[b+24>>3]=+h[d+24>>3];h[b+32>>3]=+h[d+32>>3];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];j=b+68|0;c[j>>2]=c[d+68>>2];g=c[d+72>>2]|0;l=b+72|0;c[l>>2]=g;f=b+56|0;c[f>>2]=ye(g,4)|0;g=b+60|0;c[g>>2]=ye(c[l>>2]|0,1)|0;b=b+64|0;c[b>>2]=ye(c[l>>2]|0,4)|0;if((c[j>>2]|0)<=0){i=e;return}k=d+56|0;d=d+60|0;l=0;do{n=c[(c[k>>2]|0)+(l<<2)>>2]|0;m=FW(12)|0;Tq(m,n);c[(c[f>>2]|0)+(l<<2)>>2]=m;a[(c[g>>2]|0)+l|0]=a[(c[d>>2]|0)+l|0]|0;m=FW(52)|0;$q(m,c[(c[f>>2]|0)+(l<<2)>>2]|0,(a[(c[g>>2]|0)+l|0]&1)!=0);c[(c[b>>2]|0)+(l<<2)>>2]=m;l=l+1|0;}while((l|0)<(c[j>>2]|0));i=e;return}function Gp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;d=i;e=a+68|0;f=a+56|0;h=c[f>>2]|0;b=a+64|0;if((c[e>>2]|0)>0){g=0;do{h=c[h+(g<<2)>>2]|0;if((h|0)!=0){Uq(h);HW(h)}h=c[(c[b>>2]|0)+(g<<2)>>2]|0;if((h|0)!=0){ar(h);HW(h)}g=g+1|0;h=c[f>>2]|0}while((g|0)<(c[e>>2]|0))}Fe(h);Fe(c[a+60>>2]|0);Fe(c[b>>2]|0);i=d;return}function Hp(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=+f;var g=0,j=0,k=0.0;g=i;j=a+8|0;k=+h[j>>3];do{if(b>3]=b;if(b<=0.0){b=+R(+b)}c[a+40>>2]=~~b}j=a+24|0;if(+h[j>>3]<=e){break}h[j>>3]=e;if(e<=0.0){e=+R(+e)}c[a+48>>2]=~~e}else{if(k>3]=e;if(e<=0.0){e=+R(+e)}c[a+40>>2]=~~e}j=a+24|0;if(+h[j>>3]<=b){break}h[j>>3]=b;if(b<=0.0){b=+R(+b)}c[a+48>>2]=~~b}}while(0);j=a+16|0;e=+h[j>>3];if(d>3]=d;if(d<=0.0){d=+R(+d)}c[a+44>>2]=~~d}j=a+32|0;if(+h[j>>3]<=f){i=g;return 0}h[j>>3]=f;if(f<=0.0){f=+R(+f)}c[a+52>>2]=~~f;i=g;return 0}else{if(e>3]=f;if(f<=0.0){f=+R(+f)}c[a+44>>2]=~~f}j=a+32|0;if(+h[j>>3]<=d){i=g;return 0}h[j>>3]=d;if(d<=0.0){d=+R(+d)}c[a+52>>2]=~~d;i=g;return 0}return 0} - - - -function Ip(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=+f;g=g|0;var j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0;j=i;k=FW(12)|0;Pq(k,d,e,f,1);e=c[k+4>>2]|0;if((e|0)==4){l=8}else if((e|0)==0){m=+h[b+8>>3]+-1.0;h[b+24>>3]=m;f=+h[b+16>>3]+-1.0;h[b+32>>3]=f;if(m<=0.0){m=+R(+m)}c[b+48>>2]=~~m;if(f<=0.0){f=+R(+f)}c[b+52>>2]=~~f;if((k|0)==0){i=j;return 0}Uq(k);HW(k);i=j;return 0}do{if((l|0)==8){e=c[k>>2]|0;f=+h[e>>3];m=+h[e+16>>3];do{if(f==m){if(f!=+h[e+56>>3]){l=20;break}if(f!=+h[e+184>>3]){l=20;break}o=+h[e+112>>3];if(o!=+h[e+128>>3]){l=20;break}if(o!=+h[e+72>>3]){l=20;break}if(o!=+h[e+168>>3]){l=20;break}n=+h[e+64>>3];if(n!=+h[e+80>>3]){l=20;break}if(n!=+h[e+24>>3]){l=20;break}p=+h[e+120>>3];if(n!=p){l=20;break}q=+h[e+176>>3];if(q!=+h[e+192>>3]){l=20;break}n=+h[e+8>>3];if(q!=n){l=20;break}if(q!=+h[e+136>>3]){l=20}}else{l=20}}while(0);if((l|0)==20){n=+h[e+8>>3];if(n!=+h[e+24>>3]){break}if(n!=+h[e+64>>3]){break}if(n!=+h[e+192>>3]){break}p=+h[e+120>>3];if(p!=+h[e+136>>3]){break}if(p!=+h[e+80>>3]){break}if(p!=+h[e+176>>3]){break}q=+h[e+56>>3];if(!(q==+h[e+72>>3]&q==m)){break}o=+h[e+112>>3];if(q!=o){break}m=+h[e+168>>3];if(!(m==+h[e+184>>3]&m==f)){break}if(m!=+h[e+128>>3]){break}}Hp(b,f,n,o,p)|0;if((k|0)==0){i=j;return 0}Uq(k);HW(k);i=j;return 0}}while(0);l=b+68|0;s=c[l>>2]|0;d=s+1|0;e=b+72|0;r=c[e>>2]|0;if((s|0)>=(r|0)){if((r|0)==0){c[e>>2]=32;r=32}if((r|0)<(d|0)){do{r=r<<1;}while((r|0)<(d|0));c[e>>2]=r}s=b+56|0;c[s>>2]=Ce(c[s>>2]|0,r,4)|0;s=b+60|0;c[s>>2]=Ce(c[s>>2]|0,c[e>>2]|0,1)|0;s=b+64|0;c[s>>2]=Ce(c[s>>2]|0,c[e>>2]|0,4)|0}if((a[b]&1)!=0){Vq(k)}Wq(k);c[(c[b+56>>2]|0)+(c[l>>2]<<2)>>2]=k;a[(c[b+60>>2]|0)+(c[l>>2]|0)|0]=g&1;s=FW(52)|0;$q(s,k,g);c[(c[b+64>>2]|0)+(c[l>>2]<<2)>>2]=s;c[l>>2]=(c[l>>2]|0)+1;i=j;return 0}function Jp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;g=i;j=+(e+1|0);k=+h[a+8>>3];if(j<=k){e=1;i=g;return e|0}m=+(b|0);l=+h[a+24>>3];if(m>l){e=1;i=g;return e|0}o=+(f+1|0);n=+h[a+16>>3];if(o<=n){e=1;i=g;return e|0}p=+(d|0);q=+h[a+32>>3];if(p>q){e=1;i=g;return e|0}do{if(!(ml|pq)){if((c[a+68>>2]|0)==0){a=0}else{break}i=g;return a|0}}while(0);e=2;i=g;return e|0}function Kp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0;g=i;r=+(e+1|0);q=+h[b+8>>3];if(r<=q){t=1;i=g;return t|0}p=+(d|0);l=+h[b+24>>3];if(p>l){t=1;i=g;return t|0}n=+(f+1|0);m=+h[b+16>>3];if(n<=m){t=1;i=g;return t|0}o=+(f|0);k=+h[b+32>>3];if(o>k){t=1;i=g;return t|0}if(pl|ok){t=2;i=g;return t|0}j=b+68|0;s=(c[j>>2]|0)>0;if((a[b]&1)==0){if(!s){t=0;i=g;return t|0}t=b+64|0;s=0;while(1){b=s+1|0;if(!(er(c[(c[t>>2]|0)+(s<<2)>>2]|0,d,e,f)|0)){e=2;f=15;break}if((b|0)<(c[j>>2]|0)){s=b}else{e=0;f=15;break}}if((f|0)==15){i=g;return e|0}}else{if(!s){t=0;i=g;return t|0}b=b+64|0;d=d<<2;e=e<<2|3;f=f<<2;s=0;while(1){t=s+1|0;if(!(er(c[(c[b>>2]|0)+(s<<2)>>2]|0,d,e,f)|0)){e=2;f=15;break}if((t|0)<(c[j>>2]|0)){s=t}else{e=0;f=15;break}}if((f|0)==15){i=g;return e|0}}return 0}function Lp(b,e,f,g,j){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0;k=i;n=c[f>>2]|0;s=n<<2;l=b+8|0;v=+h[l>>3]*4.0;if(v<=0.0){v=+R(+v)}m=~~v;o=c[e>>2]|0;m=(m|0)>(o|0)?o:m;if((s|0)<(m|0)){o=s&-8;q=e+20|0;p=e+12|0;r=n>>1;n=255>>>(m&7);u=(c[q>>2]|0)+r|0;do{if((s|7|0)<(m|0)){t=o;while(1){s=u+1|0;a[u]=0;u=t+8|0;if((t+15|0)<(m|0)){t=u;u=s}else{break}}if((u|0)<(m|0)){a[s]=(d[s]|0)&n}u=(c[q>>2]|0)+((c[p>>2]|0)+r)|0;t=o;while(1){s=u+1|0;a[u]=0;u=t+8|0;if((t+15|0)<(m|0)){t=u;u=s}else{break}}if((u|0)<(m|0)){a[s]=(d[s]|0)&n}u=(c[q>>2]|0)+((c[p>>2]<<1)+r)|0;s=o;while(1){t=u+1|0;a[u]=0;u=s+8|0;if((s+15|0)<(m|0)){s=u;u=t}else{break}}if((u|0)<(m|0)){a[t]=(d[t]|0)&n}p=(c[q>>2]|0)+(((c[p>>2]|0)*3|0)+r)|0;while(1){q=p+1|0;a[p]=0;p=o+8|0;if((o+15|0)<(m|0)){o=p;p=q}else{break}}if((p|0)>=(m|0)){break}a[q]=(d[q]|0)&n}else{if((o|0)>=(m|0)){break}a[u]=(d[u]|0)&n;u=(c[q>>2]|0)+((c[p>>2]|0)+r)|0;a[u]=(d[u]|0)&n;u=(c[q>>2]|0)+((c[p>>2]<<1)+r)|0;a[u]=(d[u]|0)&n;u=(c[q>>2]|0)+(((c[p>>2]|0)*3|0)+r)|0;a[u]=(d[u]|0)&n}}while(0);v=+h[l>>3];if(v<=0.0){v=+R(+v)}c[f>>2]=~~v}l=b+24|0;v=+h[l>>3]*4.0;if(v<=0.0){v=+R(+v)}m=~~v+1|0;r=(m|0)<0?0:m;m=(c[g>>2]<<2)+4|0;if((r|0)<(m|0)){p=e+20|0;o=e+12|0;n=r>>3;w=r&7;s=65280>>>w;q=r+8&-8;t=c[p>>2]|0;u=t+n|0;do{if((w|0)==0){if((r|0)<(m|0)){q=r;while(1){a[u]=0;q=q+8|0;if((q|0)<(m|0)){u=u+1|0}else{break}}t=c[p>>2]|0}q=c[o>>2]|0;if((r|0)<(m|0)){q=t+(q+n)|0;s=r;while(1){a[q]=0;s=s+8|0;if((s|0)<(m|0)){q=q+1|0}else{break}}q=c[o>>2]|0;t=c[p>>2]|0}if((r|0)<(m|0)){q=t+((q<<1)+n)|0;s=r;while(1){a[q]=0;s=s+8|0;if((s|0)<(m|0)){q=q+1|0}else{break}}q=c[o>>2]|0;t=c[p>>2]|0}if((r|0)<(m|0)){n=t+((q*3|0)+n)|0}else{break}while(1){a[n]=0;r=r+8|0;if((r|0)<(m|0)){n=n+1|0}else{break}}}else{a[u]=(d[u]|0)&s;if((q|0)<(m|0)){r=t+(n+1)|0;t=q;while(1){a[r]=0;t=t+8|0;if((t|0)<(m|0)){r=r+1|0}else{break}}}r=c[p>>2]|0;t=(c[o>>2]|0)+n|0;w=r+t|0;a[w]=(d[w]|0)&s;if((q|0)<(m|0)){r=r+(t+1)|0;t=q;while(1){a[r]=0;t=t+8|0;if((t|0)<(m|0)){r=r+1|0}else{break}}}r=c[p>>2]|0;t=(c[o>>2]<<1)+n|0;w=r+t|0;a[w]=(d[w]|0)&s;if((q|0)<(m|0)){r=r+(t+1)|0;t=q;while(1){a[r]=0;t=t+8|0;if((t|0)<(m|0)){r=r+1|0}else{break}}}p=c[p>>2]|0;n=((c[o>>2]|0)*3|0)+n|0;w=p+n|0;a[w]=(d[w]|0)&s;if((q|0)<(m|0)){n=p+(n+1)|0}else{break}while(1){a[n]=0;q=q+8|0;if((q|0)<(m|0)){n=n+1|0}else{break}}}}while(0);v=+h[l>>3];if(v<=0.0){v=+R(+v)}c[g>>2]=~~v}l=b+68|0;if((c[l>>2]|0)<=0){i=k;return}b=b+64|0;m=0;do{ir(c[(c[b>>2]|0)+(m<<2)>>2]|0,e,f,g,j);m=m+1|0;}while((m|0)<(c[l>>2]|0));i=k;return}function Mp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;bX(a|0,0,64)|0;if(b){c[a+64>>2]=fH(e,d)|0;i=f;return}else{c[a+64>>2]=0;i=f;return}}function Np(a){a=a|0;var b=0,d=0,e=0;b=i;d=0;do{e=c[a+(d<<2)>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+4>>2]&511](e)}d=d+1|0;}while((d|0)<16);a=c[a+64>>2]|0;if((a|0)==0){i=b;return}gH(a);HW(a);i=b;return}function Op(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=0;a:while(1){f=c[a+(e<<2)>>2]|0;do{if((f|0)!=0){f=c[f+4>>2]|0;if((f|0)==0){break}g=c[f+8>>2]|0;if(Bd[c[(c[g>>2]|0)+8>>2]&255](g,b)|0){b=6;break a}}}while(0);e=e+1|0;if((e|0)>=16){f=0;b=6;break}}if((b|0)==6){i=d;return f|0}return 0}function Pp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;b=c[b+64>>2]|0;if((b|0)==0){d=0}else{d=hH(b,d,e,f)|0}if((a[e]&1)==0){i=g;return d|0}Zp(e);i=g;return d|0}function Qp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;b=c[b+64>>2]|0;if((b|0)==0){d=0}else{d=iH(b,d,e,f)|0}if((a[e]&1)==0){i=g;return d|0}Zp(e);i=g;return d|0}function Rp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;b=c[b+64>>2]|0;if((b|0)==0){d=0}else{d=jH(b,d,e,f)|0}if((a[e]&1)==0){i=g;return d|0}Zp(e);i=g;return d|0}function Sp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=i;b=c[b+64>>2]|0;if((b|0)==0){d=0}else{d=kH(b,d,e)|0}if((a[e]&1)==0){i=f;return d|0}Zp(e);i=f;return d|0}function Tp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=i;b=c[b+64>>2]|0;if((b|0)==0){d=0}else{d=lH(b,d,e)|0}if((a[e]&1)==0){i=f;return d|0}Zp(e);i=f;return d|0}function Up(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;j=i;b=c[b+64>>2]|0;if((b|0)==0){k=3}else{d=mH(b,d,e,f,g,h)|0;if((d|0)==0){k=3}}if((k|0)==3){Fe(f);d=0}if((a[e]&1)==0){i=j;return d|0}Zp(e);i=j;return d|0}function Vp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0.0;f=i;q=i;i=i+32|0;g=q;k=+h[d>>3];u=+h[e>>3];j=+h[d+8>>3];p=+h[e+16>>3];n=k*u+j*p;h[q>>3]=n;t=+h[e+8>>3];o=+h[e+24>>3];r=-0.0-(k*t+j*o);e=g+8|0;h[e>>3]=r;m=+h[d+16>>3];l=+h[d+24>>3];p=m*u+l*p;h[g+16>>3]=p;o=-0.0-(m*t+l*o);s=g+24|0;h[s>>3]=o;if(+S(+(n*o-p*r))<.01){h[q>>3]=.01;bX(e|0,0,16)|0;h[s>>3]=.01;o=.01;p=0.0;r=0.0;n=.01}q=c[a>>2]|0;do{if((q|0)==0){e=1}else{if((c[q+4>>2]|0)!=(b|0)){e=1;break}if(n!=+h[q+8>>3]){e=1;break}if(r!=+h[q+16>>3]){e=1;break}if(p!=+h[q+24>>3]){e=1;break}if(o!=+h[q+32>>3]){e=1;break}if(k!=+h[q+40>>3]){e=1;break}if(j!=+h[q+48>>3]){e=1;break}if(m!=+h[q+56>>3]){e=1;break}if(l!=+h[q+64>>3]){e=1;break}i=f;return q|0}}while(0);a:while(1){q=c[a+(e<<2)>>2]|0;do{if((q|0)!=0){if((c[q+4>>2]|0)!=(b|0)){break}if(n!=+h[q+8>>3]){break}if(r!=+h[q+16>>3]){break}if(p!=+h[q+24>>3]){break}if(o!=+h[q+32>>3]){break}if(k!=+h[q+40>>3]){break}if(j!=+h[q+48>>3]){break}if(m!=+h[q+56>>3]){break}if(l==+h[q+64>>3]){s=23;break a}}}while(0);e=e+1|0;if((e|0)>=16){s=27;break}}if((s|0)==23){if((e|0)>0){while(1){b=e+ -1|0;c[a+(e<<2)>>2]=c[a+(b<<2)>>2];if((b|0)>0){e=b}else{break}}}c[a>>2]=q;s=q;i=f;return s|0}else if((s|0)==27){b=sd[c[(c[b>>2]|0)+8>>2]&127](b,g,d)|0;d=a+60|0;g=c[d>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g)}e=a+56|0;c[d>>2]=c[e>>2];s=a+52|0;c[e>>2]=c[s>>2];e=a+48|0;c[s>>2]=c[e>>2];s=a+44|0;c[e>>2]=c[s>>2];e=a+40|0;c[s>>2]=c[e>>2];s=a+36|0;c[e>>2]=c[s>>2];e=a+32|0;c[s>>2]=c[e>>2];s=a+28|0;c[e>>2]=c[s>>2];e=a+24|0;c[s>>2]=c[e>>2];s=a+20|0;c[e>>2]=c[s>>2];e=a+16|0;c[s>>2]=c[e>>2];s=a+12|0;c[e>>2]=c[s>>2];e=a+8|0;c[s>>2]=c[e>>2];s=a+4|0;c[e>>2]=c[s>>2];c[s>>2]=c[a>>2];c[a>>2]=b;s=b;i=f;return s|0}return 0}function Wp(b,d,e){b=b|0;d=d|0;e=e|0;c[b>>2]=54752;c[b+8>>2]=d;c[b+12>>2]=e;d=e+16|0;c[d>>2]=(c[d>>2]|0)+1;c[b+16>>2]=0;a[b+4|0]=0;i=i;return}function Xp(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=54752;Zp(c[a+12>>2]|0);d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function Yp(a){a=a|0;var b=0;b=i;c[a>>2]=54752;Zp(c[a+12>>2]|0);a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function Zp(b){b=b|0;var d=0,e=0,f=0;d=i;f=b+16|0;e=(c[f>>2]|0)+ -1|0;c[f>>2]=e;if((e|0)!=0|(b|0)==0){i=d;return}do{if((a[b+20|0]&1)!=0){if((a[b]&1)==0){e=c[b+8>>2]|0;if((e|0)==0){break}Fe(e);break}else{e=c[b+4>>2]|0;if((e|0)==0){break}hb(c[e+28>>2]|0)|0;break}}}while(0);do{if((a[b]&1)!=0){e=c[b+4>>2]|0;if((e|0)==0){break}ke(e);HW(e)}}while(0);HW(b);i=d;return}function _p(a){a=a|0;a=a+16|0;c[a>>2]=(c[a>>2]|0)+1;i=i;return}function $p(a){a=a|0;var b=0,d=0,e=0;b=i;e=a+16|0;d=(c[e>>2]|0)+ -1|0;c[e>>2]=d;if((d|0)!=0|(a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function aq(b){b=b|0;a[b]=0;a[b+20|0]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+16>>2]=1;i=i;return}function bq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;a[b]=1;g=FW(32)|0;ie(g,d);c[b+4>>2]=g;a[b+20|0]=e&1;i=f;return}function cq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;a[b]=0;c[b+8>>2]=d;c[b+12>>2]=e;a[b+20|0]=f&1;i=i;return}function dq(a){a=a|0;c[a>>2]=54808;i=i;return}function eq(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function fq(a){a=a|0;i=i;return}function gq(a){a=a|0;var b=0;b=i;bX(a|0,0,32)|0;i=b;return}function hq(a){a=a|0;var b=0;b=i;Fe(c[a>>2]|0);Fe(c[a+4>>2]|0);Fe(c[a+20>>2]|0);i=b;return}function iq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;g=b+8|0;j=c[g>>2]|0;c[b+16>>2]=(c[d+16>>2]|0)+j;f=d+8|0;k=c[f>>2]|0;j=j+k|0;h=b+12|0;l=c[h>>2]|0;if((j|0)>(l|0)){if((l|0)==0){c[h>>2]=32;l=32}if((l|0)<(j|0)){do{l=l<<1;}while((l|0)<(j|0));c[h>>2]=l}c[b>>2]=Ce(c[b>>2]|0,l,16)|0;k=b+4|0;c[k>>2]=Ce(c[k>>2]|0,c[h>>2]|0,1)|0;k=c[f>>2]|0}if((k|0)<=0){i=e;return}l=d+4|0;k=b+4|0;h=c[g>>2]|0;j=0;do{$W((c[b>>2]|0)+(h<<4)|0,(c[d>>2]|0)+(j<<4)|0,16)|0;a[(c[k>>2]|0)+(c[g>>2]|0)|0]=a[(c[l>>2]|0)+j|0]|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;j=j+1|0;}while((j|0)<(c[f>>2]|0));i=e;return}function jq(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,j=0,k=0,l=0,m=0,n=0;j=i;g=b+16|0;f=b+8|0;m=c[f>>2]|0;if((c[g>>2]|0)==(m+ -1|0)){n=3;i=j;return n|0}l=m+1|0;k=b+12|0;n=c[k>>2]|0;if((m|0)<(n|0)){k=b;b=b+4|0}else{if((n|0)==0){c[k>>2]=32;n=32}if((n|0)<(l|0)){do{n=n<<1;}while((n|0)<(l|0));c[k>>2]=n}c[b>>2]=Ce(c[b>>2]|0,n,16)|0;n=b+4|0;c[n>>2]=Ce(c[n>>2]|0,c[k>>2]|0,1)|0;m=c[f>>2]|0;k=b;b=n}h[(c[k>>2]|0)+(m<<4)>>3]=d;h[(c[k>>2]|0)+(c[f>>2]<<4)+8>>3]=e;a[(c[b>>2]|0)+(c[f>>2]|0)|0]=3;n=c[f>>2]|0;c[f>>2]=n+1;c[g>>2]=n;n=0;i=j;return n|0}function kq(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,j=0,k=0,l=0,m=0,n=0;g=i;f=b+8|0;k=c[f>>2]|0;if((c[b+16>>2]|0)==(k|0)){n=1;i=g;return n|0}j=b+4|0;m=(c[j>>2]|0)+(k+ -1)|0;a[m]=a[m]&-3;m=c[f>>2]|0;l=m+1|0;k=b+12|0;n=c[k>>2]|0;if((m|0)>=(n|0)){if((n|0)==0){c[k>>2]=32;n=32}if((n|0)<(l|0)){do{n=n<<1;}while((n|0)<(l|0));c[k>>2]=n}c[b>>2]=Ce(c[b>>2]|0,n,16)|0;c[j>>2]=Ce(c[j>>2]|0,c[k>>2]|0,1)|0;m=c[f>>2]|0}h[(c[b>>2]|0)+(m<<4)>>3]=d;h[(c[b>>2]|0)+(c[f>>2]<<4)+8>>3]=e;a[(c[j>>2]|0)+(c[f>>2]|0)|0]=2;c[f>>2]=(c[f>>2]|0)+1;n=0;i=g;return n|0}function lq(b,d,e,f,g,j,k){b=b|0;d=+d;e=+e;f=+f;g=+g;j=+j;k=+k;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=i;m=b+8|0;o=c[m>>2]|0;if((c[b+16>>2]|0)==(o|0)){r=1;i=n;return r|0}l=b+4|0;r=(c[l>>2]|0)+(o+ -1)|0;a[r]=a[r]&-3;r=c[m>>2]|0;p=r+3|0;o=b+12|0;q=c[o>>2]|0;if((p|0)>(q|0)){if((q|0)==0){c[o>>2]=32;q=32}if((q|0)<(p|0)){do{q=q<<1;}while((q|0)<(p|0));c[o>>2]=q}c[b>>2]=Ce(c[b>>2]|0,q,16)|0;c[l>>2]=Ce(c[l>>2]|0,c[o>>2]|0,1)|0;r=c[m>>2]|0}h[(c[b>>2]|0)+(r<<4)>>3]=d;h[(c[b>>2]|0)+(c[m>>2]<<4)+8>>3]=e;a[(c[l>>2]|0)+(c[m>>2]|0)|0]=8;r=(c[m>>2]|0)+1|0;c[m>>2]=r;h[(c[b>>2]|0)+(r<<4)>>3]=f;h[(c[b>>2]|0)+(c[m>>2]<<4)+8>>3]=g;a[(c[l>>2]|0)+(c[m>>2]|0)|0]=8;r=(c[m>>2]|0)+1|0;c[m>>2]=r;h[(c[b>>2]|0)+(r<<4)>>3]=j;h[(c[b>>2]|0)+(c[m>>2]<<4)+8>>3]=k;a[(c[l>>2]|0)+(c[m>>2]|0)|0]=2;c[m>>2]=(c[m>>2]|0)+1;r=0;i=n;return r|0}function mq(b){b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0.0;e=i;g=b+16|0;j=c[g>>2]|0;f=b+8|0;k=c[f>>2]|0;if((j|0)==(k|0)){l=1;i=e;return l|0}l=k+ -1|0;k=c[b>>2]|0;do{if((j|0)==(l|0)){m=+h[k+(j<<4)>>3];d=6}else{m=+h[k+(j<<4)>>3];if(+h[k+(l<<4)>>3]!=m){d=6;break}if(+h[k+(l<<4)+8>>3]!=+h[k+(j<<4)+8>>3]){d=6}}}while(0);if((d|0)==6){kq(b,m,+h[k+(j<<4)+8>>3])|0;j=c[g>>2]|0}l=b+4|0;k=(c[l>>2]|0)+j|0;a[k]=a[k]|4;l=(c[l>>2]|0)+((c[f>>2]|0)+ -1)|0;a[l]=a[l]|4;c[g>>2]=c[f>>2];l=0;i=e;return l|0}function nq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;h=a+24|0;j=c[h>>2]|0;k=a+28|0;if((j|0)==(c[k>>2]|0)){l=(j|0)==0?8:j<<1;c[k>>2]=l;j=a+20|0;k=Ce(c[j>>2]|0,l,16)|0;c[j>>2]=k;j=c[h>>2]|0}else{k=c[a+20>>2]|0}l=a+20|0;c[k+(j<<4)>>2]=b;c[(c[l>>2]|0)+(c[h>>2]<<4)+4>>2]=d;c[(c[l>>2]|0)+(c[h>>2]<<4)+8>>2]=e;c[(c[l>>2]|0)+(c[h>>2]<<4)+12>>2]=f;c[h>>2]=(c[h>>2]|0)+1;i=g;return}function oq(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,g=0,j=0;e=i;f=a+8|0;if((c[f>>2]|0)<=0){i=e;return}g=0;do{j=(c[a>>2]|0)+(g<<4)|0;h[j>>3]=+h[j>>3]+b;j=(c[a>>2]|0)+(g<<4)+8|0;h[j>>3]=+h[j>>3]+d;g=g+1|0;}while((g|0)<(c[f>>2]|0));i=e;return}function pq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=a+8|0;f=c[g>>2]|0;if((c[a+16>>2]|0)==(f|0)){d=0;i=e;return d|0}h[b>>3]=+h[(c[a>>2]|0)+(f+ -1<<4)>>3];h[d>>3]=+h[(c[a>>2]|0)+((c[g>>2]|0)+ -1<<4)+8>>3];d=1;i=e;return d|0}function qq(a){a=a|0;c[a>>2]=54864;i=i;return}function rq(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function sq(a){a=a|0;i=i;return}function tq(b,d){b=b|0;d=d|0;c[b>>2]=54896;a[b+4|0]=a[d]|0;a[b+5|0]=a[d+1|0]|0;a[b+6|0]=a[d+2|0]|0;i=i;return}function uq(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function vq(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;a[e]=a[b+4|0]|0;a[e+1|0]=a[b+5|0]|0;a[e+2|0]=a[b+6|0]|0;i=i;return-1}function wq(b){b=b|0;var d=0,e=0;e=i;d=FW(8)|0;c[d>>2]=54896;a[d+4|0]=a[b+4|0]|0;a[d+5|0]=a[b+5|0]|0;a[d+6|0]=a[b+6|0]|0;i=e;return d|0}function xq(a){a=a|0;i=i;return-1}function yq(a,b){a=a|0;b=b|0;var d=0;d=i;c[a>>2]=(b|0)!=0?b:54984;bX(a+4|0,0,10)|0;i=d;return}function zq(b){b=b|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;e=i;j=c[b>>2]|0;f=c[j>>2]|0;if((f|0)==0){g=b+8|0;f=j+4|0;k=1;while(1){c[g>>2]=k;if((k|0)<(c[f>>2]|0)){k=k<<1}else{break}}c[b+4>>2]=ye(da(k,k)|0,1)|0;s=(c[g>>2]|0)/2|0;Aq(b,s,s,1,s,1)}else if((f|0)==2){f=c[j+4>>2]|0;k=j+8|0;g=c[k>>2]<<1;s=(f|0)<(g|0)?g:f;c[b+8>>2]=s;c[b+4>>2]=ye(da(s,s)|0,1)|0;Cq(b,c[k>>2]|0)}else if((f|0)==1){f=c[j+4>>2]&-2;s=(f|0)<2?2:f;c[b+8>>2]=s;c[b+4>>2]=ye(da(s,s)|0,1)|0;Bq(b)}g=b+12|0;a[g]=-1;f=b+13|0;a[f]=0;t=+h[j+24>>3]*255.0+.5;if(t<=0.0){t=+R(+t)}k=~~t;k=(k&255|0)==0?1:k&255;t=+h[j+32>>3]*255.0+.5;if(t<=0.0){t=+R(+t)}l=~~t;l=(l|0)>255?-1:l&255;m=b+8|0;s=c[m>>2]|0;if((da(s,s)|0)==0){i=e;return}b=b+4|0;q=j+16|0;n=k&255;j=l&255;p=0;do{o=(c[b>>2]|0)+p|0;t=+U(+(+(d[o]|0)/255.0),+(+h[q>>3]))*255.0+.5;if(t<=0.0){t=+R(+t)}s=~~t;r=s&255;if(r>>>0>>0){r=k}else{r=r>>>0>>0?s&255:l}a[o]=r;do{if((r&255)<(d[g]|0)){a[g]=r}else{if((r&255)<=(d[f]|0)){break}a[f]=r}}while(0);p=p+1|0;s=c[m>>2]|0;}while((p|0)<(da(s,s)|0));i=e;return}function Aq(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;k=b+8|0;if((g|0)==0){n=c[k>>2]|0}else{while(1){m=(g|0)/2|0;l=h<<2;Aq(b,d,e,f,m,l);n=g+d|0;p=c[k>>2]|0;o=g+e|0;Aq(b,(n|0)%(p|0)|0,(o|0)%(p|0)|0,h+f|0,m,l);Aq(b,(n|0)%(c[k>>2]|0)|0,e,(h<<1)+f|0,m,l);n=c[k>>2]|0;d=((g<<1)+d|0)%(n|0)|0;e=(o|0)%(n|0)|0;f=(h*3|0)+f|0;if((g+1|0)>>>0<3){break}else{h=l;g=m}}}o=(((f*254|0)+ -254|0)/((da(n,n)|0)+ -1|0)|0)+1&255;p=(da(n,d)|0)+e|0;a[(c[b+4>>2]|0)+p|0]=o;i=j;return}function Bq(b){b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0;f=i;d=b+8|0;l=c[d>>2]|0;e=l>>1;if((l|0)>0){g=b+4|0;j=0;do{if((l|0)>0){k=0;while(1){l=(da(l,j)|0)+k|0;a[(c[g>>2]|0)+l|0]=0;k=k+1|0;l=c[d>>2]|0;if((k|0)<(l|0)){}else{break}}}j=j+1|0;}while((j|0)<(l|0))}g=ye(da(l,e)|0,8)|0;j=(e|0)>0;do{if(j){n=e+ -1|0;w=+(e|0);m=0;do{v=+(m|0)+.5;l=da(m,e)|0;s=v-w;k=0;do{x=+(k|0)+.5;if((k+m|0)<(n|0)){y=v}else{x=x-w;y=s}h[g+(k+l<<3)>>3]=y*y+x*x;k=k+1|0;}while((k|0)<(e|0));m=m+1|0;}while((m|0)<(e|0));if(!j){break}s=+(e|0);k=0;do{w=+(k|0)+.5;v=w-s;l=da(k+e|0,e)|0;m=0;do{x=+(m|0)+.5;if((m|0)<(k|0)){y=v}else{x=x-s;y=w}h[g+(m+l<<3)>>3]=y*y+x*x;m=m+1|0;}while((m|0)<(e|0));k=k+1|0;}while((k|0)<(e|0))}}while(0);a[b+12|0]=1;a[b+13|0]=0;m=c[d>>2]|0;if((da(m,e)|0)<=0){Fe(g);i=f;return}k=b+4|0;b=e<<1;l=0;u=0;r=0;do{if(!((m|0)<1|j^1)){s=-1.0;q=0;do{n=da(m,q)|0;p=c[k>>2]|0;o=da(q,e)|0;t=0;do{do{if((a[p+(n+t)|0]|0)==0){v=+h[g+(t+o<<3)>>3];if(v<=s){break}s=v;u=t;r=q}}while(0);t=t+1|0;}while((t|0)<(e|0));q=q+1|0;}while((q|0)<(m|0))}t=((l*508|0)/((da(b,m)|0)+ -1|0)|0)+1&255;n=(da(m,r)|0)+u|0;a[(c[k>>2]|0)+n|0]=t;n=c[d>>2]|0;m=(((l<<1|1)*254|0)/((da(b,n)|0)+ -1|0)|0)+1&255;if((r|0)<(e|0)){t=u+e+(da(n,r+e|0)|0)|0;a[(c[k>>2]|0)+t|0]=m}else{t=u+e+(da(n,r-e|0)|0)|0;a[(c[k>>2]|0)+t|0]=m}l=l+1|0;m=c[d>>2]|0;}while((l|0)<(da(m,e)|0));Fe(g);i=f;return}function Cq(b,d){b=b|0;d=d|0;var 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;f=i;Eb(123);g=b+8|0;e=c[g>>2]|0;e=ye(da(e,e)|0,12)|0;k=c[g>>2]|0;if((k|0)>0){j=0;h=0;do{if((k|0)>0){k=0;while(1){c[e+(j*12|0)>>2]=k;c[e+(j*12|0)+4>>2]=h;j=j+1|0;l=k+1|0;k=c[g>>2]|0;if((l|0)<(k|0)){k=l}else{break}}}h=h+1|0;}while((h|0)<(k|0))}j=da(k,k)|0;if((j|0)!=0){h=0;do{w=~~(+(j-h|0)*+(kb()|0)*4.656612873077393e-10)+h|0;r=e+(h*12|0)|0;t=c[r>>2]|0;s=e+(h*12|0)+4|0;v=c[s>>2]|0;u=e+(w*12|0)|0;c[r>>2]=c[u>>2];w=e+(w*12|0)+4|0;c[s>>2]=c[w>>2];c[u>>2]=t;c[w>>2]=v;h=h+1|0;w=c[g>>2]|0;j=da(w,w)|0;}while((h|0)<(j|0))}m=d+1|0;k=ye(da(m,m)|0,1)|0;l=(d|0)<0;if(!l){n=da(d,d)|0;o=0;while(1){j=da(o,m)|0;h=0;while(1){a[k+(h+j)|0]=(da(h,o)|0)<=(n|0)|0;if((h|0)<(d|0)){h=h+1|0}else{break}}if((o|0)<(d|0)){o=o+1|0}else{break}}}n=c[g>>2]|0;n=ye(da(n,n)|0,1)|0;o=c[g>>2]|0;if((o|0)>0){h=0;do{if((o|0)>0){j=0;while(1){a[n+((da(o,h)|0)+j)|0]=0;j=j+1|0;o=c[g>>2]|0;if((j|0)<(o|0)){}else{break}}}h=h+1|0;}while((h|0)<(o|0))}j=ye(32,12)|0;s=c[g>>2]|0;if((da(s,s)|0)==0){h=0}else{h=0;p=32;o=0;while(1){t=e+(o*12|0)|0;r=c[t>>2]|0;q=c[e+(o*12|0)+4>>2]|0;if((a[n+((da(q,s)|0)+r)|0]|0)==0){if((h|0)==(p|0)){w=h<<1;p=w;j=Ce(j,w,12)|0}s=h+1|0;$W(j+(h*12|0)|0,t|0,12)|0;a:do{if(!l){h=0;while(1){t=c[g>>2]|0;u=(h+q|0)%(t|0)|0;t=(q-h+t|0)%(t|0)|0;w=da(h,m)|0;v=0;while(1){if((a[k+(v+w)|0]|0)!=0){z=c[g>>2]|0;y=(v+r|0)%(z|0)|0;x=(r-v+z|0)%(z|0)|0;a[n+((da(z,u)|0)+y)|0]=1;a[n+((da(c[g>>2]|0,u)|0)+x)|0]=1;a[n+((da(c[g>>2]|0,t)|0)+y)|0]=1;a[n+((da(c[g>>2]|0,t)|0)+x)|0]=1}if((v|0)<(d|0)){v=v+1|0}else{break}}if((h|0)>=(d|0)){break a}h=h+1|0}}}while(0);q=c[g>>2]|0;h=s}else{q=s}o=o+1|0;if((o|0)<(da(q,q)|0)){s=q}else{break}}}Fe(k);Fe(n);k=c[g>>2]|0;k=ye(da(k,k)|0,4)|0;d=c[g>>2]|0;d=ye(da(d,d)|0,4)|0;o=c[g>>2]|0;if((o|0)>0){l=j+4|0;m=(h|0)>1;n=0;do{if((o|0)>0){p=0;do{q=(c[j>>2]|0)-p|0;q=(q|0)>-1?q:0-q|0;r=o-q|0;q=(q|0)<(r|0)?q:r;r=(c[l>>2]|0)-n|0;s=(r|0)>-1?r:0-r|0;r=o-s|0;r=(s|0)<(r|0)?s:r;r=(da(r,r)|0)+(da(q,q)|0)|0;if(m){s=0;q=1;while(1){t=(c[j+(q*12|0)>>2]|0)-p|0;u=(t|0)>-1?t:0-t|0;t=o-u|0;t=(u|0)<(t|0)?u:t;u=(c[j+(q*12|0)+4>>2]|0)-n|0;u=(u|0)>-1?u:0-u|0;v=o-u|0;u=(u|0)<(v|0)?u:v;t=(da(u,u)|0)+(da(t,t)|0)|0;u=(t|0)<(r|0);s=u?q:s;r=u?t:r;q=q+1|0;if((q|0)<(h|0)){}else{break}}}else{s=0}c[k+((da(o,n)|0)+p<<2)>>2]=s;c[d+((da(c[g>>2]|0,n)|0)+p<<2)>>2]=r;p=p+1|0;o=c[g>>2]|0;}while((p|0)<(o|0))}n=n+1|0;}while((n|0)<(o|0))}if((h|0)<=0){Fe(e);Fe(k);Fe(d);Fe(j);i=f;return}b=b+4|0;l=0;while(1){do{if((o|0)>0){m=j+(l*12|0)|0;n=j+(l*12|0)+4|0;r=0;p=0;do{if((o|0)>0){q=0;do{if((c[k+((da(o,p)|0)+q<<2)>>2]|0)==(l|0)){c[e+(r*12|0)>>2]=q;c[e+(r*12|0)+4>>2]=p;o=(c[m>>2]|0)-q|0;s=(o|0)>-1?o:0-o|0;o=c[g>>2]|0;t=o-s|0;s=(s|0)<(t|0)?s:t;t=(c[n>>2]|0)-p|0;t=(t|0)>-1?t:0-t|0;o=o-t|0;o=(t|0)<(o|0)?t:o;c[e+(r*12|0)+8>>2]=(da(o,o)|0)+(da(s,s)|0);o=c[g>>2]|0;r=r+1|0}q=q+1|0;}while((q|0)<(o|0))}p=p+1|0;}while((p|0)<(o|0));pb(e|0,r|0,12,183);if((r|0)<=0){break}m=r+ -1|0;n=0;do{z=da(c[g>>2]|0,c[e+(n*12|0)+4>>2]|0)|0;a[(c[b>>2]|0)+(z+(c[e+(n*12|0)>>2]|0))|0]=255-((n*254|0)/(m|0)|0);n=n+1|0;}while((n|0)<(r|0))}else{pb(e|0,0,12,183)}}while(0);l=l+1|0;if((l|0)>=(h|0)){break}o=c[g>>2]|0}Fe(e);Fe(k);Fe(d);Fe(j);i=f;return}function Dq(a,b){a=a|0;b=b|0;i=i;return(c[a+8>>2]|0)-(c[b+8>>2]|0)|0}function Eq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;c[b>>2]=c[d>>2];g=c[d+8>>2]|0;f=b+8|0;c[f>>2]=g;g=ye(da(g,g)|0,1)|0;c[b+4>>2]=g;f=c[f>>2]|0;$W(g|0,c[d+4>>2]|0,da(f,f)|0)|0;a[b+12|0]=a[d+12|0]|0;a[b+13|0]=a[d+13|0]|0;i=e;return}function Fq(a){a=a|0;var b=0;b=i;Fe(c[a+4>>2]|0);i=b;return}function Gq(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=a+4|0;if((c[h>>2]|0)==0){zq(a)}if((d[a+12|0]|0)>(f&255)){b=0;i=g;return b|0}if((d[a+13|0]|0)<=(f&255)){b=1;i=g;return b|0}a=c[a+8>>2]|0;b=(b|0)%(a|0)|0;e=(e|0)%(a|0)|0;b=(da((e|0)<0?0-e|0:e,a)|0)+((b|0)<0?0-b|0:b)|0;b=(d[(c[h>>2]|0)+b|0]|0)<=(f&255)|0;i=g;return b|0}function Hq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0;j=i;k=i;i=i+8|0;l=k;h[b>>3]=1.0;bX(b+8|0,0,16)|0;h[b+24>>3]=1.0;bX(b+32|0,0,16)|0;c[k>>2]=0;k=FW(8)|0;tq(k,l);c[b+48>>2]=k;k=FW(8)|0;tq(k,l);c[b+52>>2]=k;k=FW(16)|0;yq(k,g);c[b+56>>2]=k;c[b+60>>2]=0;h[b+64>>3]=1.0;h[b+72>>3]=1.0;bX(b+80|0,0,16)|0;h[b+96>>3]=10.0;h[b+104>>3]=1.0;bX(b+112|0,0,17)|0;g=FW(80)|0;Ep(g,0.0,0.0,+(d|0)+-.001,+(e|0)+-.001,f);c[b+132>>2]=g;c[b+136>>2]=0;a[b+140|0]=0;a[b+141|0]=0;c[b+144>>2]=0;i=j;return}function Iq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0;j=i;k=i;i=i+8|0;l=k;h[b>>3]=1.0;bX(b+8|0,0,16)|0;h[b+24>>3]=1.0;bX(b+32|0,0,16)|0;c[k>>2]=0;k=FW(8)|0;tq(k,l);c[b+48>>2]=k;k=FW(8)|0;tq(k,l);c[b+52>>2]=k;k=FW(16)|0;Eq(k,g);c[b+56>>2]=k;c[b+60>>2]=0;h[b+64>>3]=1.0;h[b+72>>3]=1.0;bX(b+80|0,0,16)|0;h[b+96>>3]=10.0;h[b+104>>3]=1.0;bX(b+112|0,0,17)|0;g=FW(80)|0;Ep(g,0.0,0.0,+(d|0)+-.001,+(e|0)+-.001,f);c[b+132>>2]=g;c[b+136>>2]=0;a[b+140|0]=0;a[b+141|0]=0;c[b+144>>2]=0;i=j;return}function Jq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0;e=i;$W(b|0,d|0,48)|0;g=c[d+48>>2]|0;c[b+48>>2]=jd[c[c[g>>2]>>2]&511](g)|0;g=c[d+52>>2]|0;c[b+52>>2]=jd[c[c[g>>2]>>2]&511](g)|0;g=c[d+56>>2]|0;f=FW(16)|0;Eq(f,g);c[b+56>>2]=f;c[b+60>>2]=c[d+60>>2];h[b+64>>3]=+h[d+64>>3];h[b+72>>3]=+h[d+72>>3];h[b+80>>3]=+h[d+80>>3];c[b+88>>2]=c[d+88>>2];c[b+92>>2]=c[d+92>>2];h[b+96>>3]=+h[d+96>>3];h[b+104>>3]=+h[d+104>>3];f=d+112|0;if((c[f>>2]|0)==0){c[b+112>>2]=0;c[b+116>>2]=0}else{j=c[d+116>>2]|0;g=b+116|0;c[g>>2]=j;j=ye(j,8)|0;c[b+112>>2]=j;$W(j|0,c[f>>2]|0,c[g>>2]<<3|0)|0}h[b+120>>3]=+h[d+120>>3];a[b+128|0]=a[d+128|0]&1;g=c[d+132>>2]|0;j=FW(80)|0;Fp(j,g);c[b+132>>2]=j;c[b+136>>2]=c[d+136>>2];a[b+140|0]=0;a[b+141|0]=a[d+141|0]&1;c[b+144>>2]=0;i=e;return}function Kq(b){b=b|0;var d=0,e=0;d=i;e=c[b+48>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+8>>2]&511](e)}e=c[b+52>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+8>>2]&511](e)}e=c[b+56>>2]|0;if((e|0)!=0){Fq(e);HW(e)}Fe(c[b+112>>2]|0);e=c[b+132>>2]|0;if((e|0)!=0){Gp(e);HW(e)}if((a[b+140|0]&1)==0){i=d;return}b=c[b+136>>2]|0;if((b|0)==0){i=d;return}Le(b);HW(b);i=d;return}function Lq(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;a=a+48|0;e=c[a>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+8>>2]&511](e)}c[a>>2]=b;i=d;return}function Mq(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;a=a+52|0;e=c[a>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+8>>2]&511](e)}c[a>>2]=b;i=d;return}function Nq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0,j=0;f=i;j=a+112|0;Fe(c[j>>2]|0);g=a+116|0;c[g>>2]=d;if((d|0)>0){d=ye(d,8)|0;c[j>>2]=d;$W(d|0,b|0,c[g>>2]<<3|0)|0;d=a+120|0;h[d>>3]=e;i=f;return}else{c[j>>2]=0;d=a+120|0;h[d>>3]=e;i=f;return}}function Oq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=i;e=b+140|0;b=b+136|0;do{if((a[e]&1)!=0){g=c[b>>2]|0;if((g|0)==0){break}Le(g);HW(g)}}while(0);c[b>>2]=d;a[e]=1;i=f;return}function Pq(b,e,f,g,j){b=b|0;e=e|0;f=f|0;g=+g;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0;l=i;m=e+8|0;k=ye(c[m>>2]|0,16)|0;if((c[m>>2]|0)>0){C=f+16|0;w=f+32|0;n=f+8|0;o=f+24|0;D=f+40|0;s=0;do{G=c[e>>2]|0;A=+h[G+(s<<4)>>3];B=+h[G+(s<<4)+8>>3];h[k+(s<<4)>>3]=+h[w>>3]+(A*+h[f>>3]+B*+h[C>>3]);h[k+(s<<4)+8>>3]=+h[D>>3]+(A*+h[n>>3]+B*+h[o>>3]);s=s+1|0;}while((s|0)<(c[m>>2]|0))}s=e+20|0;a:do{if((c[s>>2]|0)!=0){o=e+24|0;n=ye(c[o>>2]|0,88)|0;f=c[o>>2]|0;b:do{if((f|0)>0){w=0;while(1){f=c[s>>2]|0;F=c[f+(w<<4)>>2]|0;C=F+1|0;G=c[m>>2]|0;if((C|0)>=(G|0)){p=8;break}E=c[f+(w<<4)+4>>2]|0;D=E+1|0;if((D|0)>=(G|0)){p=8;break}q=+h[k+(F<<4)>>3];t=+h[k+(F<<4)+8>>3];v=+h[k+(C<<4)+8>>3];r=+h[k+(E<<4)>>3];u=+h[k+(E<<4)+8>>3];x=+h[k+(D<<4)+8>>3];do{if(q==+h[k+(C<<4)>>3]){if(r!=+h[k+(D<<4)>>3]){p=12;break}a[n+(w*88|0)+8|0]=1}else{p=12}}while(0);if((p|0)==12){p=0;if(!(t==v&u==x)){p=14;break}a[n+(w*88|0)+8|0]=0;q=t;r=u}C=q>r;t=C?r:q;q=C?q:r;r=q-t+.5;if(r<=0.0){r=+R(+r)}C=~~r;h[n+(w*88|0)+16>>3]=t+-.01;h[n+(w*88|0)+24>>3]=t+.01;B=(t+q)*.5;h[n+(w*88|0)+32>>3]=B+-.01;h[n+(w*88|0)+40>>3]=B+.01;h[n+(w*88|0)+48>>3]=q+-.01;h[n+(w*88|0)+56>>3]=q+.01;q=t+.5;if(q<=0.0){q=+R(+q)}q=+(~~q|0);h[n+(w*88|0)+64>>3]=q;B=((C|0)==0?1.0:+(C|0))+q+-.01;h[n+(w*88|0)+72>>3]=B;h[n+(w*88|0)+80>>3]=(q+B)*.5;c[n+(w*88|0)>>2]=c[f+(w<<4)+8>>2];c[n+(w*88|0)+4>>2]=c[f+(w<<4)+12>>2];w=w+1|0;f=c[o>>2]|0;if((w|0)>=(f|0)){break b}}if((p|0)==8){Fe(n);break a}else if((p|0)==14){Fe(n);break a}}}while(0);if((n|0)==0){break}if((f|0)>0){p=n;s=0;while(1){C=c[p>>2]|0;w=p+4|0;if((C|0)<=(c[w>>2]|0)){while(1){Qq(0,p,k+(C<<4)|0,k+(C<<4)+8|0);if((C|0)<(c[w>>2]|0)){C=C+1|0}else{break}}f=c[o>>2]|0}s=s+1|0;if((s|0)<(f|0)){p=p+88|0}else{break}}}Fe(n)}}while(0);c[b>>2]=0;c[b+8>>2]=0;c[b+4>>2]=0;w=c[m>>2]|0;if((w|0)<=0){Fe(k);i=l;return}e=e+4|0;o=0;s=0;q=0.0;r=0.0;c:while(1){n=k+(o<<4)|0;o=k+(o<<4)+8|0;p=s;t=q;x=r;while(1){f=c[e>>2]|0;s=d[f+p|0]|0;if((s&1|0)!=0){break}v=+h[k+(p<<4)>>3];u=+h[k+(p<<4)+8>>3];if((s&8|0)==0){C=d[f+(p+ -1)|0]|0;w=(C&1|0)!=0;f=s&2;if(j|w^1){C=0}else{C=(C&4|0)==0}if((f|0)==0|j){s=0}else{s=(s&4|0)==0}Sq(b,t,x,v,u,w,(f|0)!=0,C,s);p=p+1|0;t=v}else{C=p+1|0;A=+h[k+(C<<4)>>3];B=+h[k+(C<<4)+8>>3];C=p+2|0;z=+h[k+(C<<4)>>3];y=+h[k+(C<<4)+8>>3];w=d[f+(p+ -1)|0]|0;s=(w&1|0)!=0;C=a[f+C|0]|0;f=(C&2)!=0;if(j|s^1){w=0}else{w=(w&4|0)==0}do{if(j){C=0}else{C=C&255;if((C&2|0)==0){C=0;break}C=(C&4|0)==0}}while(0);Rq(b,t,x,v,u,A,B,z,y,g,s,f,w,C);p=p+3|0;t=z;u=y}do{if(j){s=p+ -1|0;if((a[(c[e>>2]|0)+s|0]&2)==0){break}if(+h[k+(s<<4)>>3]==+h[n>>3]){if(+h[k+(s<<4)+8>>3]==+h[o>>3]){break}}Sq(b,t,u,q,r,0,1,0,0)}}while(0);w=c[m>>2]|0;if((p|0)<(w|0)){x=u}else{p=50;break c}}s=p+1|0;if((s|0)<(w|0)){o=p;q=+h[k+(p<<4)>>3];r=+h[k+(p<<4)+8>>3]}else{p=50;break}}if((p|0)==50){Fe(k);i=l;return}}function Qq(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0;b=i;if((a[c+8|0]&1)==0){f=+h[e>>3];do{if(f>+h[c+16>>3]){if(f>=+h[c+24>>3]){break}h[e>>3]=+h[c+64>>3];i=b;return}}while(0);do{if(f>+h[c+32>>3]){if(f>=+h[c+40>>3]){break}h[e>>3]=+h[c+80>>3];i=b;return}}while(0);if(f<=+h[c+48>>3]){i=b;return}if(f>=+h[c+56>>3]){i=b;return}h[e>>3]=+h[c+72>>3];i=b;return}else{f=+h[d>>3];do{if(f>+h[c+16>>3]){if(f>=+h[c+24>>3]){break}h[d>>3]=+h[c+64>>3];i=b;return}}while(0);do{if(f>+h[c+32>>3]){if(f>=+h[c+40>>3]){break}h[d>>3]=+h[c+80>>3];i=b;return}}while(0);if(f<=+h[c+48>>3]){i=b;return}if(f>=+h[c+56>>3]){i=b;return}h[d>>3]=+h[c+72>>3];i=b;return}}function Rq(a,b,d,e,f,g,j,k,l,m,n,o,p,q){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;j=+j;k=+k;l=+l;m=+m;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0,I=0;u=i;E=i;i=i+24600|0;r=E;H=i;i=i+24600|0;s=H;v=i;i=i+4104|0;t=v;m=m*m;h[E>>3]=b;h[H>>3]=d;h[r+8>>3]=e;h[s+8>>3]=f;h[r+16>>3]=g;h[s+16>>3]=j;h[r+24576>>3]=k;h[s+24576>>3]=l;c[v>>2]=1024;v=0;while(1){H=r+(v*24|0)|0;y=s+(v*24|0)|0;z=r+(v*24|0)+8|0;A=s+(v*24|0)+8|0;B=r+(v*24|0)+16|0;C=s+(v*24|0)+16|0;D=t+(v<<2)|0;while(1){F=+h[H>>3];G=+h[y>>3];k=+h[z>>3];j=+h[A>>3];g=+h[B>>3];f=+h[C>>3];E=c[D>>2]|0;w=+h[r+(E*24|0)>>3];l=+h[s+(E*24|0)>>3];b=(F+w)*.5;x=(G+l)*.5;e=k-b;d=j-x;b=g-b;x=f-x;if((E-v|0)==1){break}if(!(e*e+d*d>m|b*b+x*x>m)){break}d=(F+k)*.5;e=(G+j)*.5;b=(k+g)*.5;x=(j+f)*.5;j=(d+b)*.5;k=(e+x)*.5;F=(g+w)*.5;G=(f+l)*.5;w=(b+F)*.5;x=(x+G)*.5;I=(E+v|0)/2|0;h[z>>3]=d;h[A>>3]=e;h[B>>3]=j;h[C>>3]=k;c[D>>2]=I;h[r+(I*24|0)>>3]=(j+w)*.5;h[s+(I*24|0)>>3]=(k+x)*.5;h[r+(I*24|0)+8>>3]=w;h[s+(I*24|0)+8>>3]=x;h[r+(I*24|0)+16>>3]=F;h[s+(I*24|0)+16>>3]=G;c[t+(I<<2)>>2]=E}H=(v|0)==0;I=(E|0)==1024;Sq(a,F,G,w,l,H&n,I&o,H&p,I&q);if((E|0)<1024){v=E}else{break}}i=u;return}function Sq(a,b,d,e,f,g,j,k,l){a=a|0;b=+b;d=+d;e=+e;f=+f;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0;m=i;n=a+4|0;q=c[n>>2]|0;o=q+1|0;p=a+8|0;r=c[p>>2]|0;if((q|0)<(r|0)){o=c[a>>2]|0}else{if((r|0)==0){c[p>>2]=32;r=32}if((r|0)<(o|0)){do{r=r<<1;}while((r|0)<(o|0));c[p>>2]=r}o=Ce(c[a>>2]|0,r,56)|0;c[a>>2]=o;q=c[n>>2]|0}h[o+(q*56|0)>>3]=b;h[(c[a>>2]|0)+((c[n>>2]|0)*56|0)+8>>3]=d;h[(c[a>>2]|0)+((c[n>>2]|0)*56|0)+16>>3]=e;h[(c[a>>2]|0)+((c[n>>2]|0)*56|0)+24>>3]=f;c[(c[a>>2]|0)+((c[n>>2]|0)*56|0)+48>>2]=0;if(g){r=(c[a>>2]|0)+((c[n>>2]|0)*56|0)+48|0;c[r>>2]=c[r>>2]|1}if(j){r=(c[a>>2]|0)+((c[n>>2]|0)*56|0)+48|0;c[r>>2]=c[r>>2]|2}if(k){r=(c[a>>2]|0)+((c[n>>2]|0)*56|0)+48|0;c[r>>2]=c[r>>2]|4}if(l){r=(c[a>>2]|0)+((c[n>>2]|0)*56|0)+48|0;c[r>>2]=c[r>>2]|8}do{if(f==d){h[(c[a>>2]|0)+((c[n>>2]|0)*56|0)+40>>3]=0.0;h[(c[a>>2]|0)+((c[n>>2]|0)*56|0)+32>>3]=0.0;r=(c[a>>2]|0)+((c[n>>2]|0)*56|0)+48|0;c[r>>2]=c[r>>2]|16;if(e!=b){break}r=(c[a>>2]|0)+((c[n>>2]|0)*56|0)+48|0;c[r>>2]=c[r>>2]|32}else{if(e==b){h[(c[a>>2]|0)+((c[n>>2]|0)*56|0)+40>>3]=0.0;h[(c[a>>2]|0)+((c[n>>2]|0)*56|0)+32>>3]=0.0;r=(c[a>>2]|0)+((c[n>>2]|0)*56|0)+48|0;c[r>>2]=c[r>>2]|32;break}else{h[(c[a>>2]|0)+((c[n>>2]|0)*56|0)+32>>3]=(e-b)/(f-d);r=c[n>>2]|0;q=c[a>>2]|0;h[q+(r*56|0)+40>>3]=1.0/+h[q+(r*56|0)+32>>3];break}}}while(0);if(d<=f){q=n;q=c[q>>2]|0;q=q+1|0;r=n;c[r>>2]=q;i=m;return}q=(c[a>>2]|0)+((c[n>>2]|0)*56|0)+48|0;c[q>>2]=c[q>>2]|64;q=n;q=c[q>>2]|0;q=q+1|0;r=n;c[r>>2]=q;i=m;return}function Tq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=a+4|0;c[e>>2]=c[b+4>>2];f=c[b+8>>2]|0;c[a+8>>2]=f;f=ye(f,56)|0;c[a>>2]=f;$W(f|0,c[b>>2]|0,(c[e>>2]|0)*56|0)|0;i=d;return}function Uq(a){a=a|0;var b=0;b=i;Fe(c[a>>2]|0);i=b;return}function Vq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+4|0;if((c[d>>2]|0)<=0){i=b;return}e=0;a=c[a>>2]|0;while(1){h[a>>3]=+h[a>>3]*4.0;f=a+8|0;h[f>>3]=+h[f>>3]*4.0;f=a+16|0;h[f>>3]=+h[f>>3]*4.0;f=a+24|0;h[f>>3]=+h[f>>3]*4.0;e=e+1|0;if((e|0)<(c[d>>2]|0)){a=a+56|0}else{break}}i=b;return}function Wq(a){a=a|0;var b=0,d=0,e=0;b=i;d=i;i=i+8|0;e=c[a>>2]|0;a=e+((c[a+4>>2]|0)*56|0)|0;c[d>>2]=184;Yq(e,a,d);i=b;return}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,j=0.0,k=0.0;d=i;if((c[a+48>>2]&64|0)==0){g=a;a=a+8|0}else{g=a+16|0;a=a+24|0}e=+h[a>>3];f=+h[g>>3];if((c[b+48>>2]&64|0)==0){g=b;b=b+8|0}else{g=b+16|0;b=b+24|0}j=+h[b>>3];k=+h[g>>3];if(e!=j){a=e55944){Q=(O|0)/224|0;O=a+(Q*56|0)|0;Q=a+((Q+P|0)*56|0)|0;P=Zq(a,O,N,Q,d)|0;if(!(Bd[c[d>>2]&255](m,Q)|0)){break}$W(B|0,Q|0,56)|0;$W(Q|0,m|0,56)|0;$W(m|0,B|0,56)|0;if(!(Bd[c[d>>2]&255](Q,N)|0)){P=P+1|0;break}$W(J|0,N|0,56)|0;$W(N|0,Q|0,56)|0;$W(Q|0,J|0,56)|0;if(!(Bd[c[d>>2]&255](N,O)|0)){P=P+2|0;break}$W(z|0,O|0,56)|0;$W(O|0,N|0,56)|0;$W(N|0,z|0,56)|0;if(!(Bd[c[d>>2]&255](O,a)|0)){P=P+3|0;break}$W(y|0,a|0,56)|0;$W(a|0,O|0,56)|0;$W(O|0,y|0,56)|0;P=P+4|0}else{S=Bd[c[d>>2]&255](N,a)|0;O=Bd[c[d>>2]&255](m,N)|0;if(!S){if(!O){P=0;break}$W(D|0,N|0,56)|0;$W(N|0,m|0,56)|0;$W(m|0,D|0,56)|0;if(!(Bd[c[d>>2]&255](N,a)|0)){P=1;break}$W(C|0,a|0,56)|0;$W(a|0,N|0,56)|0;$W(N|0,C|0,56)|0;P=2;break}if(O){$W(E|0,a|0,56)|0;$W(a|0,m|0,56)|0;$W(m|0,E|0,56)|0;P=1;break}$W(G|0,a|0,56)|0;$W(a|0,N|0,56)|0;$W(N|0,G|0,56)|0;if(!(Bd[c[d>>2]&255](m,N)|0)){P=1;break}$W(F|0,N|0,56)|0;$W(N|0,m|0,56)|0;$W(m|0,F|0,56)|0;P=2}}while(0);do{if(Bd[c[d>>2]&255](a,N)|0){Q=m}else{Q=m;while(1){Q=Q+ -56|0;if((a|0)==(Q|0)){break}if(Bd[c[d>>2]&255](Q,N)|0){K=64;break}else{}}if((K|0)==64){K=0;$W(I|0,a|0,56)|0;$W(a|0,Q|0,56)|0;$W(Q|0,I|0,56)|0;P=P+1|0;break}O=a+56|0;if(!(Bd[c[d>>2]&255](a,m)|0)){if((O|0)==(m|0)){K=81;break a}while(1){N=O+56|0;if(Bd[c[d>>2]&255](a,O)|0){break}if((N|0)==(m|0)){K=81;break a}else{O=N}}$W(x|0,O|0,56)|0;$W(O|0,m|0,56)|0;$W(m|0,x|0,56)|0;O=N}if((O|0)==(m|0)){K=81;break a}else{N=m}while(1){while(1){P=O+56|0;if(Bd[c[d>>2]&255](a,O)|0){break}else{O=P}}do{N=N+ -56|0;}while(Bd[c[d>>2]&255](a,N)|0);if(O>>>0>=N>>>0){a=O;continue b}$W(H|0,O|0,56)|0;$W(O|0,N|0,56)|0;$W(N|0,H|0,56)|0;O=P}}}while(0);O=a+56|0;c:do{if(O>>>0>>0){while(1){S=O;while(1){O=S+56|0;if(Bd[c[d>>2]&255](S,N)|0){S=O}else{R=Q;break}}do{R=R+ -56|0;}while(!(Bd[c[d>>2]&255](R,N)|0));if(S>>>0>R>>>0){O=S;break c}$W(L|0,S|0,56)|0;$W(S|0,R|0,56)|0;$W(R|0,L|0,56)|0;Q=R;N=(N|0)==(S|0)?R:N;P=P+1|0}}}while(0);do{if((O|0)!=(N|0)){if(!(Bd[c[d>>2]&255](N,O)|0)){break}$W(M|0,O|0,56)|0;$W(O|0,N|0,56)|0;$W(N|0,M|0,56)|0;P=P+1|0}}while(0);if((P|0)==0){P=_q(a,O,d)|0;N=O+56|0;if(_q(N,b,d)|0){K=76;break}if(P){a=N;continue}}if((O-a|0)>=(b-O|0)){K=80;break}Yq(a,O,d);a=O+56|0}if((K|0)==76){K=0;if(P){K=81;break}else{b=O;continue}}else if((K|0)==80){K=0;Yq(O+56|0,b,d);b=O;continue}}if((K|0)==4){if(!(Bd[c[d>>2]&255](m,a)|0)){i=e;return}$W(A|0,a|0,56)|0;$W(a|0,m|0,56)|0;$W(m|0,A|0,56)|0;i=e;return}else if((K|0)==6){f=a+56|0;S=Bd[c[d>>2]&255](f,a)|0;g=Bd[c[d>>2]&255](m,f)|0;if(!S){if(!g){i=e;return}$W(u|0,f|0,56)|0;$W(f|0,m|0,56)|0;$W(m|0,u|0,56)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){i=e;return}$W(v|0,a|0,56)|0;$W(a|0,f|0,56)|0;$W(f|0,v|0,56)|0;i=e;return}if(g){$W(w|0,a|0,56)|0;$W(a|0,m|0,56)|0;$W(m|0,w|0,56)|0;i=e;return}$W(t|0,a|0,56)|0;$W(a|0,f|0,56)|0;$W(f|0,t|0,56)|0;if(!(Bd[c[d>>2]&255](m,f)|0)){i=e;return}$W(s|0,f|0,56)|0;$W(f|0,m|0,56)|0;$W(m|0,s|0,56)|0;i=e;return}else if((K|0)==14){Zq(a,a+56|0,a+112|0,m,d)|0;i=e;return}else if((K|0)==15){b=a+56|0;f=a+112|0;g=a+168|0;Zq(a,b,f,g,d)|0;if(!(Bd[c[d>>2]&255](m,g)|0)){i=e;return}$W(l|0,g|0,56)|0;$W(g|0,m|0,56)|0;$W(m|0,l|0,56)|0;if(!(Bd[c[d>>2]&255](g,f)|0)){i=e;return}$W(k|0,f|0,56)|0;$W(f|0,g|0,56)|0;$W(g|0,k|0,56)|0;if(!(Bd[c[d>>2]&255](f,b)|0)){i=e;return}$W(p|0,b|0,56)|0;$W(b|0,f|0,56)|0;$W(f|0,p|0,56)|0;if(!(Bd[c[d>>2]&255](b,a)|0)){i=e;return}$W(j|0,a|0,56)|0;$W(a|0,b|0,56)|0;$W(b|0,j|0,56)|0;i=e;return}else if((K|0)==21){j=a+112|0;l=a+56|0;S=Bd[c[d>>2]&255](l,a)|0;k=Bd[c[d>>2]&255](j,l)|0;do{if(S){if(k){$W(h|0,a|0,56)|0;$W(a|0,j|0,56)|0;$W(j|0,h|0,56)|0;break}$W(r|0,a|0,56)|0;$W(a|0,l|0,56)|0;$W(l|0,r|0,56)|0;if(!(Bd[c[d>>2]&255](j,l)|0)){break}$W(q|0,l|0,56)|0;$W(l|0,j|0,56)|0;$W(j|0,q|0,56)|0}else{if(!k){break}$W(n|0,l|0,56)|0;$W(l|0,j|0,56)|0;$W(j|0,n|0,56)|0;if(!(Bd[c[d>>2]&255](l,a)|0)){break}$W(o|0,a|0,56)|0;$W(a|0,l|0,56)|0;$W(l|0,o|0,56)|0}}while(0);h=a+168|0;if((h|0)==(b|0)){i=e;return}while(1){if(Bd[c[d>>2]&255](h,j)|0){$W(f|0,h|0,56)|0;k=h;while(1){$W(k|0,j|0,56)|0;if((j|0)==(a|0)){break}k=j+ -56|0;if(Bd[c[d>>2]&255](g,k)|0){S=j;j=k;k=S}else{break}}$W(j|0,f|0,56)|0}j=h+56|0;if((j|0)==(b|0)){break}else{S=h;h=j;j=S}}i=e;return}else if((K|0)==81){i=e;return}}function Zq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;n=i;i=i+56|0;p=i;i=i+56|0;l=i;i=i+56|0;o=i;i=i+56|0;m=i;i=i+56|0;h=i;i=i+56|0;g=i;i=i+56|0;j=i;i=i+56|0;r=Bd[c[f>>2]&255](b,a)|0;q=Bd[c[f>>2]&255](d,b)|0;do{if(r){if(q){$W(n|0,a|0,56)|0;$W(a|0,d|0,56)|0;$W(d|0,n|0,56)|0;l=1;break}$W(p|0,a|0,56)|0;$W(a|0,b|0,56)|0;$W(b|0,p|0,56)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){l=1;break}$W(o|0,b|0,56)|0;$W(b|0,d|0,56)|0;$W(d|0,o|0,56)|0;l=2}else{if(!q){l=0;break}$W(m|0,b|0,56)|0;$W(b|0,d|0,56)|0;$W(d|0,m|0,56)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){l=1;break}$W(l|0,a|0,56)|0;$W(a|0,b|0,56)|0;$W(b|0,l|0,56)|0;l=2}}while(0);if(!(Bd[c[f>>2]&255](e,d)|0)){r=l;i=k;return r|0}$W(j|0,d|0,56)|0;$W(d|0,e|0,56)|0;$W(e|0,j|0,56)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){r=l+1|0;i=k;return r|0}$W(h|0,b|0,56)|0;$W(b|0,d|0,56)|0;$W(d|0,h|0,56)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){r=l+2|0;i=k;return r|0}$W(g|0,a|0,56)|0;$W(a|0,b|0,56)|0;$W(b|0,g|0,56)|0;r=l+3|0;i=k;return r|0}function _q(a,b,d){a=a|0;b=b|0;d=d|0;var 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;e=i;n=i;i=i+56|0;r=i;i=i+56|0;s=i;i=i+56|0;q=i;i=i+56|0;t=i;i=i+56|0;m=i;i=i+56|0;j=i;i=i+56|0;l=i;i=i+56|0;k=i;i=i+56|0;u=i;i=i+56|0;w=i;i=i+56|0;p=i;i=i+56|0;v=i;i=i+56|0;o=i;i=i+56|0;x=i;i=i+56|0;g=i;i=i+56|0;h=g;switch((b-a|0)/56|0|0){case 3:{f=a+56|0;b=b+ -56|0;x=Bd[c[d>>2]&255](f,a)|0;g=Bd[c[d>>2]&255](b,f)|0;if(!x){if(!g){x=1;i=e;return x|0}$W(o|0,f|0,56)|0;$W(f|0,b|0,56)|0;$W(b|0,o|0,56)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){x=1;i=e;return x|0}$W(p|0,a|0,56)|0;$W(a|0,f|0,56)|0;$W(f|0,p|0,56)|0;x=1;i=e;return x|0}if(g){$W(u|0,a|0,56)|0;$W(a|0,b|0,56)|0;$W(b|0,u|0,56)|0;x=1;i=e;return x|0}$W(w|0,a|0,56)|0;$W(a|0,f|0,56)|0;$W(f|0,w|0,56)|0;if(!(Bd[c[d>>2]&255](b,f)|0)){x=1;i=e;return x|0}$W(v|0,f|0,56)|0;$W(f|0,b|0,56)|0;$W(b|0,v|0,56)|0;x=1;i=e;return x|0};case 5:{g=a+56|0;h=a+112|0;f=a+168|0;b=b+ -56|0;Zq(a,g,h,f,d)|0;if(!(Bd[c[d>>2]&255](b,f)|0)){x=1;i=e;return x|0}$W(k|0,f|0,56)|0;$W(f|0,b|0,56)|0;$W(b|0,k|0,56)|0;if(!(Bd[c[d>>2]&255](f,h)|0)){x=1;i=e;return x|0}$W(j|0,h|0,56)|0;$W(h|0,f|0,56)|0;$W(f|0,j|0,56)|0;if(!(Bd[c[d>>2]&255](h,g)|0)){x=1;i=e;return x|0}$W(m|0,g|0,56)|0;$W(g|0,h|0,56)|0;$W(h|0,m|0,56)|0;if(!(Bd[c[d>>2]&255](g,a)|0)){x=1;i=e;return x|0}$W(l|0,a|0,56)|0;$W(a|0,g|0,56)|0;$W(g|0,l|0,56)|0;x=1;i=e;return x|0};case 1:case 0:{x=1;i=e;return x|0};case 4:{Zq(a,a+56|0,a+112|0,b+ -56|0,d)|0;x=1;i=e;return x|0};case 2:{b=b+ -56|0;if(!(Bd[c[d>>2]&255](b,a)|0)){x=1;i=e;return x|0}$W(x|0,a|0,56)|0;$W(a|0,b|0,56)|0;$W(b|0,x|0,56)|0;x=1;i=e;return x|0};default:{j=a+112|0;k=a+56|0;x=Bd[c[d>>2]&255](k,a)|0;l=Bd[c[d>>2]&255](j,k)|0;do{if(x){if(l){$W(n|0,a|0,56)|0;$W(a|0,j|0,56)|0;$W(j|0,n|0,56)|0;break}$W(r|0,a|0,56)|0;$W(a|0,k|0,56)|0;$W(k|0,r|0,56)|0;if(!(Bd[c[d>>2]&255](j,k)|0)){break}$W(q|0,k|0,56)|0;$W(k|0,j|0,56)|0;$W(j|0,q|0,56)|0}else{if(!l){break}$W(t|0,k|0,56)|0;$W(k|0,j|0,56)|0;$W(j|0,t|0,56)|0;if(!(Bd[c[d>>2]&255](k,a)|0)){break}$W(s|0,a|0,56)|0;$W(a|0,k|0,56)|0;$W(k|0,s|0,56)|0}}while(0);k=a+168|0;if((k|0)==(b|0)){x=1;i=e;return x|0}l=0;while(1){if(Bd[c[d>>2]&255](k,j)|0){$W(g|0,k|0,56)|0;m=k;while(1){$W(m|0,j|0,56)|0;if((j|0)==(a|0)){break}m=j+ -56|0;if(Bd[c[d>>2]&255](h,m)|0){x=j;j=m;m=x}else{break}}$W(j|0,g|0,56)|0;l=l+1|0;if((l|0)==8){break}}j=k+56|0;if((j|0)==(b|0)){a=1;f=35;break}else{x=k;k=j;j=x}}if((f|0)==35){i=e;return a|0}x=(k+56|0)==(b|0);i=e;return x|0}}return 0}function $q(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0;f=i;c[b>>2]=d;a[b+4|0]=e&1;e=c[d+4>>2]|0;if((e|0)==0){c[b+12>>2]=1;c[b+8>>2]=1;c[b+20>>2]=0;c[b+16>>2]=0;j=0;o=b+24|0;c[o>>2]=j;o=b+36|0;bX(o|0,0,16)|0;i=f;return}d=c[d>>2]|0;g=+h[d>>3];k=+h[d+16>>3];j=g>k;l=j?k:g;m=j?g:k;if((c[d+48>>2]&64|0)==0){o=d+24|0;j=d+8|0}else{o=d+8|0;j=d+24|0}k=+h[o>>3];g=+h[j>>3];if((e|0)>1){j=1;do{n=+h[d+(j*56|0)>>3];do{if(n>3];do{if(n>2]&64|0)==0){n=+h[d+(j*56|0)+24>>3];if(n<=k){break}k=n}else{n=+h[d+(j*56|0)+8>>3];if(n<=k){break}k=n}}while(0);j=j+1|0;}while((j|0)<(e|0))}if(l<=0.0){l=+R(+l)}c[b+8>>2]=~~l;if(m<=0.0){m=+R(+m)}c[b+16>>2]=~~m;if(g<=0.0){g=+R(+g)}e=~~g;c[b+12>>2]=e;if(k<=0.0){k=+R(+k)}c[b+20>>2]=~~k;j=e+ -1|0;o=b+24|0;c[o>>2]=j;o=b+36|0;bX(o|0,0,16)|0;i=f;return}function ar(a){a=a|0;var b=0;b=i;Fe(c[a+40>>2]|0);i=b;return}function br(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=(c[a+8>>2]|0)/4|0;c[d>>2]=(c[a+12>>2]|0)/4|0;c[e>>2]=(c[a+16>>2]|0)/4|0;c[f>>2]=(c[a+20>>2]|0)/4|0;i=i;return}function cr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0,z=0.0,A=0,B=0.0,C=0,D=0,E=0.0,F=0,G=0.0,H=0.0;f=i;j=i;i=i+8|0;g=j;e=b+24|0;if((c[e>>2]|0)>(d|0)){r=0}else{r=c[b+36>>2]|0}y=c[b>>2]|0;l=y+4|0;m=c[l>>2]|0;a:do{if((r|0)<(m|0)){n=+(d|0);k=c[y>>2]|0;while(1){if(+h[k+(r*56|0)+8>>3]>=n){break a}q=r+1|0;if(+h[k+(r*56|0)+24>>3]>=n){break a}if((q|0)<(m|0)){r=q}else{r=q;break}}}}while(0);c[b+36>>2]=r;k=b+44|0;c[k>>2]=0;if((r|0)>=(c[l>>2]|0)){F=0;D=b+40|0;D=c[D>>2]|0;F=F*12|0;F=D+F|0;C=j;A=185;c[C>>2]=A;jr(D,F,g);F=e;c[F>>2]=d;F=b+28|0;c[F>>2]=0;F=b+32|0;c[F>>2]=0;i=f;return}n=+(d+1|0);p=+(d|0);q=b+48|0;l=b+40|0;o=p+1.0;m=b+4|0;w=0;while(1){v=c[y>>2]|0;A=v+(r*56|0)|0;s=v+(r*56|0)+48|0;C=c[s>>2]|0;if((C&64|0)==0){F=v+(r*56|0)+24|0;D=v+(r*56|0)+8|0}else{F=v+(r*56|0)+8|0;D=v+(r*56|0)+24|0}t=+h[F>>3];u=+h[D>>3];if(u>=n){v=46;break}if(t>=p){if((w|0)==(c[q>>2]|0)){C=(w|0)==0?16:w<<1;c[q>>2]=C;c[l>>2]=Ce(c[l>>2]|0,C,12)|0;C=c[s>>2]|0}do{if((C&16|0)==0){z=+h[A>>3];if((C&32|0)!=0){B=z;x=z;v=33;break}B=+h[v+(r*56|0)+16>>3];w=z>3];E=+h[v+(r*56|0)+32>>3];G=z+(p-H)*E;E=z+(o-H)*E;do{if(G>3];x=+h[v+(r*56|0)+16>>3];v=27}}while(0);do{if((v|0)==27){v=0;if(z>=x){B=z;v=33;break}if(z<=0.0){z=+R(+z)}c[(c[l>>2]|0)+((c[k>>2]|0)*12|0)>>2]=~~z;if(x<=0.0){x=+R(+x)}c[(c[l>>2]|0)+((c[k>>2]|0)*12|0)+4>>2]=~~x}}while(0);if((v|0)==33){v=0;if(x<=0.0){x=+R(+x)}c[(c[l>>2]|0)+((c[k>>2]|0)*12|0)>>2]=~~x;if(B<=0.0){B=+R(+B)}c[(c[l>>2]|0)+((c[k>>2]|0)*12|0)+4>>2]=~~B}do{if(u<=p&p>2]|0;if((s&16|0)!=0){v=43;break}if((a[m]&1)==0){s=(s>>>5&2)+ -1|0}else{s=1}c[(c[l>>2]|0)+((c[k>>2]|0)*12|0)+8>>2]=s}else{v=43}}while(0);if((v|0)==43){c[(c[l>>2]|0)+((c[k>>2]|0)*12|0)+8>>2]=0}w=(c[k>>2]|0)+1|0;c[k>>2]=w;y=c[b>>2]|0}r=r+1|0;if((r|0)>=(c[y+4>>2]|0)){v=46;break}}if((v|0)==46){D=l;D=c[D>>2]|0;F=w*12|0;F=D+F|0;C=j;A=185;c[C>>2]=A;jr(D,F,g);F=e;c[F>>2]=d;F=b+28|0;c[F>>2]=0;F=b+32|0;c[F>>2]=0;i=f;return}}function dr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;if((c[b+24>>2]|0)!=(e|0)){cr(b,e)}e=c[b+44>>2]|0;a:do{if((e|0)>0){g=c[b+40>>2]|0;j=0;h=0;while(1){if((c[g+(h*12|0)>>2]|0)>(d|0)){break a}if((c[g+(h*12|0)+4>>2]|0)>=(d|0)){b=1;break}j=(c[g+(h*12|0)+8>>2]|0)+j|0;h=h+1|0;if((h|0)>=(e|0)){break a}}i=f;return b|0}else{j=0}}while(0);if((a[b+4|0]&1)==0){b=(j|0)!=0|0}else{b=j&1}j=(b|0)!=0;i=f;return j|0}function er(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;if((c[b+24>>2]|0)!=(f|0)){cr(b,f)}f=c[b+44>>2]|0;a:do{if((f|0)>0){h=c[b+40>>2]|0;j=0;k=0;do{if((c[h+(k*12|0)+4>>2]|0)>=(d|0)){break a}j=(c[h+(k*12|0)+8>>2]|0)+j|0;k=k+1|0;}while((k|0)<(f|0))}else{j=0;k=0}}while(0);if((d|0)>(e|0)){m=1;i=g;return m|0}h=b+40|0;b=b+4|0;l=d+ -1|0;while(1){if((k|0)>=(f|0)){e=0;f=16;break}d=c[h>>2]|0;if((c[d+(k*12|0)>>2]|0)>(l+1|0)){if((a[b]&1)==0){m=(j|0)!=0|0}else{m=j&1}if((m|0)==0){e=0;f=16;break}}m=c[d+(k*12|0)+4>>2]|0;l=(m|0)>(l|0)?m:l;if((l|0)<(e|0)){j=(c[d+(k*12|0)+8>>2]|0)+j|0;k=k+1|0}else{e=1;f=16;break}}if((f|0)==16){i=g;return e|0}return 0}function fr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;if((c[b+24>>2]|0)!=(d|0)){cr(b,d)}k=b+28|0;n=c[k>>2]|0;h=c[b+44>>2]|0;if((n|0)>=(h|0)){p=0;i=g;return p|0}j=c[b+40>>2]|0;d=c[j+(n*12|0)>>2]|0;o=c[j+(n*12|0)+4>>2]|0;l=b+32|0;m=(c[l>>2]|0)+(c[j+(n*12|0)+8>>2]|0)|0;c[l>>2]=m;n=n+1|0;c[k>>2]=n;a:do{if((n|0)<(h|0)){b=b+4|0;do{if((c[j+(n*12|0)>>2]|0)>(o|0)){if((a[b]&1)==0){p=(m|0)!=0|0}else{p=m&1}if((p|0)==0){break a}}p=c[j+(n*12|0)+4>>2]|0;o=(p|0)>(o|0)?p:o;m=m+(c[j+(n*12|0)+8>>2]|0)|0;c[l>>2]=m;n=n+1|0;c[k>>2]=n;}while((n|0)<(h|0))}}while(0);c[e>>2]=d;c[f>>2]=o;p=1;i=g;return p|0}function gr(a,b){a=a|0;b=b|0;i=i;return(c[a>>2]|0)<(c[b>>2]|0)|0}function hr(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;l=i;j=e+20|0;k=e+12|0;bX(c[j>>2]|0,0,da(c[e+4>>2]|0,c[k>>2]|0)|0)|0;n=h<<2;m=b+28|0;p=b+44|0;h=b+40|0;o=b+32|0;q=b+4|0;s=-1;t=c[e>>2]|0;r=0;do{cr(b,r+n|0);y=c[m>>2]|0;u=c[p>>2]|0;if((y|0)<(u|0)){do{w=c[h>>2]|0;v=c[w+(y*12|0)>>2]|0;z=c[w+(y*12|0)+4>>2]|0;x=(c[o>>2]|0)+(c[w+(y*12|0)+8>>2]|0)|0;c[o>>2]=x;y=y+1|0;c[m>>2]=y;a:do{if((y|0)<(u|0)){do{if((c[w+(y*12|0)>>2]|0)>(z|0)){if((a[q]&1)==0){A=(x|0)!=0|0}else{A=x&1}if((A|0)==0){break a}}A=c[w+(y*12|0)+4>>2]|0;z=(A|0)>(z|0)?A:z;x=x+(c[w+(y*12|0)+8>>2]|0)|0;c[o>>2]=x;y=y+1|0;c[m>>2]=y;}while((y|0)<(u|0))}}while(0);u=(v|0)<0?0:v;v=c[e>>2]|0;v=(z|0)<(v|0)?z+1|0:v;do{if((u|0)<(v|0)){x=c[j>>2]|0;y=(da(c[k>>2]|0,r)|0)+(u>>3)|0;w=x+y|0;z=u&7;if((z|0)==0){x=u}else{A=255>>>z;z=u&-8;if((z|0)==(v&-8|0)){A=65280>>>(v&7)&A&255}else{A=A&255}a[w]=a[w]|A;w=x+(y+1)|0;x=z+8|0}if((x+7|0)<(v|0)){z=x;while(1){x=w+1|0;a[w]=-1;y=z+8|0;if((z+15|0)<(v|0)){z=y;w=x}else{w=x;x=y;break}}}if((x|0)>=(v|0)){break}a[w]=d[w]|0|65280>>>(v&7)}}while(0);t=(u|0)<(t|0)?u:t;s=(v|0)>(s|0)?v:s;y=c[m>>2]|0;u=c[p>>2]|0;}while((y|0)<(u|0))}r=r+1|0;}while((r|0)<4);c[f>>2]=(t|0)/4|0;c[g>>2]=(s+ -1|0)/4|0;i=l;return}function ir(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;j=i;m=h<<2;k=b+28|0;r=b+44|0;p=e+20|0;q=e+12|0;l=b+40|0;n=b+32|0;o=b+4|0;h=0;do{s=c[f>>2]<<2;cr(b,h+m|0);y=c[k>>2]|0;u=c[r>>2]|0;a:do{if((y|0)<(u|0)){do{if((s|0)>=((c[g>>2]<<2)+4|0)){break a}w=c[l>>2]|0;v=c[w+(y*12|0)>>2]|0;t=c[w+(y*12|0)+4>>2]|0;x=(c[n>>2]|0)+(c[w+(y*12|0)+8>>2]|0)|0;c[n>>2]=x;y=y+1|0;c[k>>2]=y;b:do{if((y|0)<(u|0)){do{if((c[w+(y*12|0)>>2]|0)>(t|0)){if((a[o]&1)==0){z=(x|0)!=0|0}else{z=x&1}if((z|0)==0){break b}}z=c[w+(y*12|0)+4>>2]|0;t=(z|0)>(t|0)?z:t;x=x+(c[w+(y*12|0)+8>>2]|0)|0;c[n>>2]=x;y=y+1|0;c[k>>2]=y;}while((y|0)<(u|0))}}while(0);u=c[e>>2]|0;u=(v|0)>(u|0)?u:v;do{if((s|0)<(u|0)){w=c[p>>2]|0;v=(da(c[q>>2]|0,h)|0)+(s>>3)|0;x=w+v|0;y=s&7;if((y|0)!=0){y=65280>>>y;s=s&-8;if((s|0)==(u&-8|0)){y=(255>>>(u&7)|y)&255}else{y=y&255}a[x]=a[x]&y;x=w+(v+1)|0;s=s+8|0}if((s+7|0)<=(u|0)){v=x;while(1){x=v+1|0;a[v]=0;v=s+8|0;if((s+15|0)>(u|0)){s=v;break}else{s=v;v=x}}}if((s|0)>=(u|0)){break}a[x]=(d[x]|0)&255>>>(u&7)}}while(0);s=(t|0)<(s|0)?s:t+1|0;y=c[k>>2]|0;u=c[r>>2]|0;}while((y|0)<(u|0))}}while(0);u=(c[g>>2]<<2)+4|0;t=c[e>>2]|0;t=(u|0)>(t|0)?t:u;do{if((s|0)<(t|0)){v=c[p>>2]|0;w=(da(c[q>>2]|0,h)|0)+(s>>3)|0;u=v+w|0;x=s&7;if((x|0)!=0){x=65280>>>x;s=s&-8;if((s|0)==(t&-8|0)){x=255>>>(t&7)&x&255}else{x=x&255}a[u]=a[u]&x;u=v+(w+1)|0;s=s+8|0}if((s+7|0)<=(t|0)){w=u;v=s;while(1){u=w+1|0;a[w]=0;s=v+8|0;if((v+15|0)>(t|0)){break}else{v=s;w=u}}}if((s|0)>=(t|0)){break}a[u]=(d[u]|0)&255>>>(t&7)}}while(0);h=h+1|0;}while((h|0)<4);i=j;return}function jr(a,b,d){a=a|0;b=b|0;d=d|0;var 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,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;e=i;l=i;i=i+16|0;q=i;i=i+16|0;r=i;i=i+16|0;p=i;i=i+16|0;o=i;i=i+16|0;E=i;i=i+16|0;G=i;i=i+16|0;C=i;i=i+16|0;F=i;i=i+16|0;D=i;i=i+16|0;z=i;i=i+16|0;A=i;i=i+16|0;y=i;i=i+16|0;B=i;i=i+16|0;g=i;i=i+16|0;f=g;h=i;i=i+16|0;j=i;i=i+16|0;n=i;i=i+16|0;k=i;i=i+16|0;u=i;i=i+16|0;s=i;i=i+16|0;t=i;i=i+16|0;w=i;i=i+16|0;v=i;i=i+16|0;M=i;i=i+16|0;L=i;i=i+16|0;I=i;i=i+16|0;H=i;i=i+16|0;x=i;i=i+16|0;J=i;i=i+16|0;a:while(1){m=b+ -12|0;b:while(1){O=b-a|0;switch((O|0)/12|0|0){case 4:{K=14;break a};case 3:{K=6;break a};case 5:{K=15;break a};case 1:case 0:{K=81;break a};case 2:{K=4;break a};default:{}}if((O|0)<372){K=21;break a}P=(O|0)/24|0;N=a+(P*12|0)|0;do{if((O|0)>11988){Q=(O|0)/48|0;O=a+(Q*12|0)|0;Q=a+((Q+P|0)*12|0)|0;P=kr(a,O,N,Q,d)|0;if(!(Bd[c[d>>2]&255](m,Q)|0)){break}$W(B|0,Q|0,12)|0;$W(Q|0,m|0,12)|0;$W(m|0,B|0,12)|0;if(!(Bd[c[d>>2]&255](Q,N)|0)){P=P+1|0;break}$W(A|0,N|0,12)|0;$W(N|0,Q|0,12)|0;$W(Q|0,A|0,12)|0;if(!(Bd[c[d>>2]&255](N,O)|0)){P=P+2|0;break}$W(z|0,O|0,12)|0;$W(O|0,N|0,12)|0;$W(N|0,z|0,12)|0;if(!(Bd[c[d>>2]&255](O,a)|0)){P=P+3|0;break}$W(y|0,a|0,12)|0;$W(a|0,O|0,12)|0;$W(O|0,y|0,12)|0;P=P+4|0}else{S=Bd[c[d>>2]&255](N,a)|0;O=Bd[c[d>>2]&255](m,N)|0;if(!S){if(!O){P=0;break}$W(D|0,N|0,12)|0;$W(N|0,m|0,12)|0;$W(m|0,D|0,12)|0;if(!(Bd[c[d>>2]&255](N,a)|0)){P=1;break}$W(C|0,a|0,12)|0;$W(a|0,N|0,12)|0;$W(N|0,C|0,12)|0;P=2;break}if(O){$W(E|0,a|0,12)|0;$W(a|0,m|0,12)|0;$W(m|0,E|0,12)|0;P=1;break}$W(G|0,a|0,12)|0;$W(a|0,N|0,12)|0;$W(N|0,G|0,12)|0;if(!(Bd[c[d>>2]&255](m,N)|0)){P=1;break}$W(F|0,N|0,12)|0;$W(N|0,m|0,12)|0;$W(m|0,F|0,12)|0;P=2}}while(0);do{if(Bd[c[d>>2]&255](a,N)|0){Q=m}else{Q=m;while(1){Q=Q+ -12|0;if((a|0)==(Q|0)){break}if(Bd[c[d>>2]&255](Q,N)|0){K=64;break}else{}}if((K|0)==64){K=0;$W(I|0,a|0,12)|0;$W(a|0,Q|0,12)|0;$W(Q|0,I|0,12)|0;P=P+1|0;break}O=a+12|0;if(!(Bd[c[d>>2]&255](a,m)|0)){if((O|0)==(m|0)){K=81;break a}while(1){N=O+12|0;if(Bd[c[d>>2]&255](a,O)|0){break}if((N|0)==(m|0)){K=81;break a}else{O=N}}$W(x|0,O|0,12)|0;$W(O|0,m|0,12)|0;$W(m|0,x|0,12)|0;O=N}if((O|0)==(m|0)){K=81;break a}else{N=m}while(1){while(1){P=O+12|0;if(Bd[c[d>>2]&255](a,O)|0){break}else{O=P}}do{N=N+ -12|0;}while(Bd[c[d>>2]&255](a,N)|0);if(O>>>0>=N>>>0){a=O;continue b}$W(H|0,O|0,12)|0;$W(O|0,N|0,12)|0;$W(N|0,H|0,12)|0;O=P}}}while(0);O=a+12|0;c:do{if(O>>>0>>0){while(1){S=O;while(1){O=S+12|0;if(Bd[c[d>>2]&255](S,N)|0){S=O}else{R=Q;break}}do{R=R+ -12|0;}while(!(Bd[c[d>>2]&255](R,N)|0));if(S>>>0>R>>>0){O=S;break c}$W(L|0,S|0,12)|0;$W(S|0,R|0,12)|0;$W(R|0,L|0,12)|0;Q=R;N=(N|0)==(S|0)?R:N;P=P+1|0}}}while(0);do{if((O|0)!=(N|0)){if(!(Bd[c[d>>2]&255](N,O)|0)){break}$W(M|0,O|0,12)|0;$W(O|0,N|0,12)|0;$W(N|0,M|0,12)|0;P=P+1|0}}while(0);if((P|0)==0){P=lr(a,O,d)|0;N=O+12|0;if(lr(N,b,d)|0){K=76;break}if(P){a=N;continue}}if((O-a|0)>=(b-O|0)){K=80;break}jr(a,O,d);a=O+12|0}if((K|0)==76){K=0;if(P){K=81;break}else{b=O;continue}}else if((K|0)==80){K=0;jr(O+12|0,b,d);b=O;continue}}if((K|0)==4){if(!(Bd[c[d>>2]&255](m,a)|0)){i=e;return}$W(J|0,a|0,12)|0;$W(a|0,m|0,12)|0;$W(m|0,J|0,12)|0;i=e;return}else if((K|0)==6){f=a+12|0;S=Bd[c[d>>2]&255](f,a)|0;g=Bd[c[d>>2]&255](m,f)|0;if(!S){if(!g){i=e;return}$W(v|0,f|0,12)|0;$W(f|0,m|0,12)|0;$W(m|0,v|0,12)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){i=e;return}$W(t|0,a|0,12)|0;$W(a|0,f|0,12)|0;$W(f|0,t|0,12)|0;i=e;return}if(g){$W(u|0,a|0,12)|0;$W(a|0,m|0,12)|0;$W(m|0,u|0,12)|0;i=e;return}$W(s|0,a|0,12)|0;$W(a|0,f|0,12)|0;$W(f|0,s|0,12)|0;if(!(Bd[c[d>>2]&255](m,f)|0)){i=e;return}$W(w|0,f|0,12)|0;$W(f|0,m|0,12)|0;$W(m|0,w|0,12)|0;i=e;return}else if((K|0)==14){kr(a,a+12|0,a+24|0,m,d)|0;i=e;return}else if((K|0)==15){b=a+12|0;f=a+24|0;g=a+36|0;kr(a,b,f,g,d)|0;if(!(Bd[c[d>>2]&255](m,g)|0)){i=e;return}$W(k|0,g|0,12)|0;$W(g|0,m|0,12)|0;$W(m|0,k|0,12)|0;if(!(Bd[c[d>>2]&255](g,f)|0)){i=e;return}$W(j|0,f|0,12)|0;$W(f|0,g|0,12)|0;$W(g|0,j|0,12)|0;if(!(Bd[c[d>>2]&255](f,b)|0)){i=e;return}$W(h|0,b|0,12)|0;$W(b|0,f|0,12)|0;$W(f|0,h|0,12)|0;if(!(Bd[c[d>>2]&255](b,a)|0)){i=e;return}$W(n|0,a|0,12)|0;$W(a|0,b|0,12)|0;$W(b|0,n|0,12)|0;i=e;return}else if((K|0)==21){h=a+24|0;k=a+12|0;S=Bd[c[d>>2]&255](k,a)|0;j=Bd[c[d>>2]&255](h,k)|0;do{if(S){if(j){$W(l|0,a|0,12)|0;$W(a|0,h|0,12)|0;$W(h|0,l|0,12)|0;break}$W(q|0,a|0,12)|0;$W(a|0,k|0,12)|0;$W(k|0,q|0,12)|0;if(!(Bd[c[d>>2]&255](h,k)|0)){break}$W(p|0,k|0,12)|0;$W(k|0,h|0,12)|0;$W(h|0,p|0,12)|0}else{if(!j){break}$W(o|0,k|0,12)|0;$W(k|0,h|0,12)|0;$W(h|0,o|0,12)|0;if(!(Bd[c[d>>2]&255](k,a)|0)){break}$W(r|0,a|0,12)|0;$W(a|0,k|0,12)|0;$W(k|0,r|0,12)|0}}while(0);j=a+36|0;if((j|0)==(b|0)){i=e;return}while(1){if(Bd[c[d>>2]&255](j,h)|0){$W(g|0,j|0,12)|0;k=j;while(1){$W(k|0,h|0,12)|0;if((h|0)==(a|0)){break}k=h+ -12|0;if(Bd[c[d>>2]&255](f,k)|0){S=h;h=k;k=S}else{break}}$W(h|0,g|0,12)|0}h=j+12|0;if((h|0)==(b|0)){break}else{S=j;j=h;h=S}}i=e;return}else if((K|0)==81){i=e;return}}function kr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;n=i;i=i+16|0;p=i;i=i+16|0;l=i;i=i+16|0;o=i;i=i+16|0;m=i;i=i+16|0;h=i;i=i+16|0;g=i;i=i+16|0;j=i;i=i+16|0;r=Bd[c[f>>2]&255](b,a)|0;q=Bd[c[f>>2]&255](d,b)|0;do{if(r){if(q){$W(n|0,a|0,12)|0;$W(a|0,d|0,12)|0;$W(d|0,n|0,12)|0;l=1;break}$W(p|0,a|0,12)|0;$W(a|0,b|0,12)|0;$W(b|0,p|0,12)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){l=1;break}$W(o|0,b|0,12)|0;$W(b|0,d|0,12)|0;$W(d|0,o|0,12)|0;l=2}else{if(!q){l=0;break}$W(m|0,b|0,12)|0;$W(b|0,d|0,12)|0;$W(d|0,m|0,12)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){l=1;break}$W(l|0,a|0,12)|0;$W(a|0,b|0,12)|0;$W(b|0,l|0,12)|0;l=2}}while(0);if(!(Bd[c[f>>2]&255](e,d)|0)){r=l;i=k;return r|0}$W(j|0,d|0,12)|0;$W(d|0,e|0,12)|0;$W(e|0,j|0,12)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){r=l+1|0;i=k;return r|0}$W(h|0,b|0,12)|0;$W(b|0,d|0,12)|0;$W(d|0,h|0,12)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){r=l+2|0;i=k;return r|0}$W(g|0,a|0,12)|0;$W(a|0,b|0,12)|0;$W(b|0,g|0,12)|0;r=l+3|0;i=k;return r|0}function lr(a,b,d){a=a|0;b=b|0;d=d|0;var 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;e=i;n=i;i=i+16|0;r=i;i=i+16|0;s=i;i=i+16|0;q=i;i=i+16|0;t=i;i=i+16|0;k=i;i=i+16|0;j=i;i=i+16|0;l=i;i=i+16|0;m=i;i=i+16|0;u=i;i=i+16|0;w=i;i=i+16|0;p=i;i=i+16|0;v=i;i=i+16|0;o=i;i=i+16|0;x=i;i=i+16|0;g=i;i=i+16|0;h=g;switch((b-a|0)/12|0|0){case 3:{f=a+12|0;b=b+ -12|0;x=Bd[c[d>>2]&255](f,a)|0;g=Bd[c[d>>2]&255](b,f)|0;if(!x){if(!g){x=1;i=e;return x|0}$W(o|0,f|0,12)|0;$W(f|0,b|0,12)|0;$W(b|0,o|0,12)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){x=1;i=e;return x|0}$W(p|0,a|0,12)|0;$W(a|0,f|0,12)|0;$W(f|0,p|0,12)|0;x=1;i=e;return x|0}if(g){$W(u|0,a|0,12)|0;$W(a|0,b|0,12)|0;$W(b|0,u|0,12)|0;x=1;i=e;return x|0}$W(w|0,a|0,12)|0;$W(a|0,f|0,12)|0;$W(f|0,w|0,12)|0;if(!(Bd[c[d>>2]&255](b,f)|0)){x=1;i=e;return x|0}$W(v|0,f|0,12)|0;$W(f|0,b|0,12)|0;$W(b|0,v|0,12)|0;x=1;i=e;return x|0};case 4:{kr(a,a+12|0,a+24|0,b+ -12|0,d)|0;x=1;i=e;return x|0};case 2:{b=b+ -12|0;if(!(Bd[c[d>>2]&255](b,a)|0)){x=1;i=e;return x|0}$W(x|0,a|0,12)|0;$W(a|0,b|0,12)|0;$W(b|0,x|0,12)|0;x=1;i=e;return x|0};case 5:{h=a+12|0;f=a+24|0;g=a+36|0;b=b+ -12|0;kr(a,h,f,g,d)|0;if(!(Bd[c[d>>2]&255](b,g)|0)){x=1;i=e;return x|0}$W(m|0,g|0,12)|0;$W(g|0,b|0,12)|0;$W(b|0,m|0,12)|0;if(!(Bd[c[d>>2]&255](g,f)|0)){x=1;i=e;return x|0}$W(j|0,f|0,12)|0;$W(f|0,g|0,12)|0;$W(g|0,j|0,12)|0;if(!(Bd[c[d>>2]&255](f,h)|0)){x=1;i=e;return x|0}$W(k|0,h|0,12)|0;$W(h|0,f|0,12)|0;$W(f|0,k|0,12)|0;if(!(Bd[c[d>>2]&255](h,a)|0)){x=1;i=e;return x|0}$W(l|0,a|0,12)|0;$W(a|0,h|0,12)|0;$W(h|0,l|0,12)|0;x=1;i=e;return x|0};case 1:case 0:{x=1;i=e;return x|0};default:{j=a+24|0;k=a+12|0;x=Bd[c[d>>2]&255](k,a)|0;l=Bd[c[d>>2]&255](j,k)|0;do{if(x){if(l){$W(n|0,a|0,12)|0;$W(a|0,j|0,12)|0;$W(j|0,n|0,12)|0;break}$W(r|0,a|0,12)|0;$W(a|0,k|0,12)|0;$W(k|0,r|0,12)|0;if(!(Bd[c[d>>2]&255](j,k)|0)){break}$W(q|0,k|0,12)|0;$W(k|0,j|0,12)|0;$W(j|0,q|0,12)|0}else{if(!l){break}$W(t|0,k|0,12)|0;$W(k|0,j|0,12)|0;$W(j|0,t|0,12)|0;if(!(Bd[c[d>>2]&255](k,a)|0)){break}$W(s|0,a|0,12)|0;$W(a|0,k|0,12)|0;$W(k|0,s|0,12)|0}}while(0);k=a+36|0;if((k|0)==(b|0)){x=1;i=e;return x|0}l=0;while(1){if(Bd[c[d>>2]&255](k,j)|0){$W(g|0,k|0,12)|0;m=k;while(1){$W(m|0,j|0,12)|0;if((j|0)==(a|0)){break}m=j+ -12|0;if(Bd[c[d>>2]&255](h,m)|0){x=j;j=m;m=x}else{break}}$W(j|0,g|0,12)|0;l=l+1|0;if((l|0)==8){break}}j=k+12|0;if((j|0)==(b|0)){a=1;f=35;break}else{x=k;k=j;j=x}}if((f|0)==35){i=e;return a|0}x=(k+12|0)==(b|0);i=e;return x|0}}return 0}function mr(a){a=a|0;var b=0;b=i;do{if((a|0)==0){a=5}else{if((te(a,55048)|0)==0){a=0;break}if((te(a,55056)|0)==0){a=1;break}if((te(a,55064)|0)==0){a=2;break}if((te(a,55072)|0)==0){a=3;break}if((te(a,55088)|0)==0){a=4;break}if((te(a,55104)|0)==0){a=6;break}if((te(a,55112)|0)==0){a=7;break}if((te(a,55128)|0)==0){a=8;break}a=(te(a,55144)|0)==0;a=a?9:5}}while(0);i=b;return a|0}function nr(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;d=i;j=i;i=i+16|0;k=j;o=i;i=i+16|0;n=o;r=i;i=i+16|0;q=r;t=i;i=i+16|0;u=t;l=i;i=i+16|0;f=l;if((c[a+12>>2]|0)!=4){u=0;i=d;return u|0}c[l>>2]=13;g=f+8|0;c[g>>2]=0;c[g+4>>2]=0;do{if(((c[(ut(a,0,f)|0)>>2]|0)+ -1|0)>>>0<2){s=c[l>>2]|0;if((s+ -1|0)>>>0>=2){c[t>>2]=s;c[u+4>>2]=1;c[u+8>>2]=2;Qe(0,72608,u);tc()}if((s|0)==1){e=+(c[g>>2]|0);break}else{e=+h[g>>3];break}}else{e=0.0}}while(0);Of(f);do{if(((c[(ut(a,1,f)|0)>>2]|0)+ -1|0)>>>0<2){s=c[l>>2]|0;if((s+ -1|0)>>>0>=2){c[r>>2]=s;c[q+4>>2]=1;c[q+8>>2]=2;Qe(0,72608,q);tc()}if((s|0)==1){m=+(c[g>>2]|0);break}else{m=+h[g>>3];break}}else{m=0.0}}while(0);Of(f);do{if(((c[(ut(a,2,f)|0)>>2]|0)+ -1|0)>>>0<2){q=c[l>>2]|0;if((q+ -1|0)>>>0>=2){c[o>>2]=q;c[n+4>>2]=1;c[n+8>>2]=2;Qe(0,72608,n);tc()}if((q|0)==1){p=+(c[g>>2]|0);break}else{p=+h[g>>3];break}}else{p=0.0}}while(0);Of(f);do{if(((c[(ut(a,3,f)|0)>>2]|0)+ -1|0)>>>0<2){l=c[l>>2]|0;if((l+ -1|0)>>>0>=2){c[j>>2]=l;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,72608,k);tc()}if((l|0)==1){v=+(c[g>>2]|0);break}else{v=+h[g>>3];break}}else{v=0.0}}while(0);Of(f);if(!(v!=0.0&((e<0.0|m<0.0|p<0.0)^1))){u=0;i=d;return u|0}x=+h[b+16>>3];w=+h[b>>3];if(x-w-e-p<0.0){u=0;i=d;return u|0}y=+h[b+24>>3];z=+h[b+8>>3];if(y-z-m-v<0.0){u=0;i=d;return u|0}u=FW(32)|0;bX(u|0,0,24)|0;h[u>>3]=e+w;h[u+8>>3]=m+z;h[u+16>>3]=x-p;h[u+24>>3]=y-v;i=d;return u|0}function or(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;d=i;g=i;i=i+16|0;j=g;m=i;i=i+8|0;l=m;k=i;i=i+16|0;e=k;c[k>>2]=13;f=e+8|0;c[f>>2]=0;c[f+4>>2]=0;do{if((c[(Yu(b,55152,e,0)|0)>>2]|0)==4){n=FW(32)|0;o=c[k>>2]|0;if((o|0)!=4){c[m>>2]=o;c[l+4>>2]=4;Qe(0,72520,l);tc()}fe(n,c[f>>2]|0);c[a>>2]=(te(n,55160)|0)==0;if((n|0)==0){break}ke(n);HW(n)}else{c[a>>2]=0}}while(0);Of(e);do{if(((c[(Yu(b,55168,e,0)|0)>>2]|0)+ -1|0)>>>0<2){if((c[a>>2]|0)!=1){break}k=c[k>>2]|0;if((k+ -1|0)>>>0>=2){c[g>>2]=k;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,72608,j);tc()}if((k|0)==1){p=+(c[f>>2]|0)}else{p=+h[f>>3]}h[a+8>>3]=p;Of(e);i=d;return}}while(0);h[a+8>>3]=0.0;Of(e);i=d;return}function pr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0;d=i;l=i;i=i+16|0;n=l;f=i;i=i+16|0;g=f;e=i;i=i+8|0;k=i;i=i+16|0;j=k;p=c[b+12>>2]|0;if((p&1|0)!=0){Qe(-1,55176,e);i=d;return}o=(p|0)/2|0;e=ye(o,4)|0;bX(e|0,0,o<<2|0)|0;a:do{if((p|0)>1){p=j+8|0;q=p+4|0;r=0;b:while(1){c[k>>2]=13;c[p>>2]=0;c[q>>2]=0;u=r<<1;do{if(((c[(ut(b,u,j)|0)>>2]|0)+ -1|0)>>>0<2){t=c[k>>2]|0;if((t+ -1|0)>>>0>=2){m=7;break b}if((t|0)==1){t=1;s=+(c[p>>2]|0);break}else{t=1;s=+h[p>>3];break}}else{t=0;s=0.0}}while(0);Of(j);if(((c[(ut(b,u|1,j)|0)>>2]|0)+ -1|0)>>>0>=2){m=12;break}u=c[k>>2]|0;if((u+ -1|0)>>>0>=2){m=14;break}if((u|0)==1){v=+(c[p>>2]|0);Of(j);if(!t){break}}else{v=+h[p>>3];Of(j);if(!t){break}}u=FW(16)|0;h[u>>3]=s;h[u+8>>3]=v;c[e+(r<<2)>>2]=u;r=r+1|0;if((r|0)>=(o|0)){break a}}if((m|0)==7){c[f>>2]=t;c[g+4>>2]=1;c[g+8>>2]=2;Qe(0,72608,g);tc()}else if((m|0)==12){Of(j)}else if((m|0)==14){c[l>>2]=u;c[n+4>>2]=1;c[n+8>>2]=2;Qe(0,72608,n);tc()}if((r|0)>0){do{r=r+ -1|0;f=c[e+(r<<2)>>2]|0;if((f|0)!=0){HW(f)}}while((r|0)>0)}Fe(e);i=d;return}}while(0);c[a>>2]=e;c[a+4>>2]=o;i=d;return}function qr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0;e=i;g=i;i=i+8|0;j=i;i=i+16|0;l=j;n=i;i=i+64|0;o=n;t=i;i=i+16|0;p=t;s=c[b+12>>2]|0;c[a>>2]=0;m=a+4|0;c[m>>2]=0;if((s&7|0)!=0){i=e;return}r=(s|0)/8|0;f=ye(r,4)|0;bX(f|0,0,r<<2|0)|0;a:do{if((s|0)>7){C=p+8|0;u=C+4|0;E=d+24|0;D=d+8|0;F=d+16|0;v=o+8|0;w=o+16|0;x=o+24|0;y=o+32|0;z=o+40|0;A=o+48|0;B=o+56|0;s=0;b:while(1){H=s<<3;G=0;do{c[t>>2]=13;c[C>>2]=0;c[u>>2]=0;if(((c[(ut(b,G+H|0,p)|0)>>2]|0)+ -1|0)>>>0>=2){break b}I=c[t>>2]|0;if((I+ -1|0)>>>0>=2){q=7;break b}I=(I|0)==1;if(I){K=c[C>>2]|0;J=K;L=+(K|0)}else{L=+h[C>>3];h[k>>3]=L;J=c[k>>2]|0}if(((G|0)%2|0|0)==1){M=+h[E>>3];do{if(L<=M){if(I){K=J;L=+(J|0)}else{L=+h[C>>3];h[k>>3]=L;K=c[k>>2]|0}M=+h[D>>3];if(L>3];break}}}while(0);h[o+(G<<3)>>3]=M}else{M=+h[F>>3];do{if(L<=M){if(I){K=J;L=+(J|0)}else{L=+h[C>>3];h[k>>3]=L;K=c[k>>2]|0}M=+h[d>>3];if(L>3];break}}}while(0);h[o+(G<<3)>>3]=M}Of(p);G=G+1|0;}while((G|0)<8);K=FW(64)|0;R=+h[v>>3];Q=+h[w>>3];P=+h[x>>3];O=+h[y>>3];N=+h[z>>3];L=+h[A>>3];M=+h[B>>3];h[K>>3]=+h[n>>3];h[K+8>>3]=R;h[K+16>>3]=Q;h[K+24>>3]=P;h[K+32>>3]=O;h[K+40>>3]=N;h[K+48>>3]=L;h[K+56>>3]=M;c[f+(s<<2)>>2]=K;s=s+1|0;if((s|0)>=(r|0)){break a}}if((q|0)==7){c[j>>2]=I;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,72608,l);tc()}Of(p);Qe(-1,55224,g);if((s|0)>0){g=0;do{j=c[f+(g<<2)>>2]|0;if((j|0)!=0){HW(j)}g=g+1|0;}while((g|0)<(s|0))}Fe(f);i=e;return}}while(0);c[m>>2]=r;c[a>>2]=f;i=e;return}function rr(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=55264;d=c[a+20>>2]|0;if((d|0)==0){HW(a);i=b;return}Fe(d);HW(a);i=b;return}function sr(a){a=a|0;var b=0;b=i;c[a>>2]=55264;a=c[a+20>>2]|0;if((a|0)==0){i=b;return}Fe(a);i=b;return}function tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=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.0;l=i;g=i;i=i+16|0;j=g;r=i;i=i+8|0;q=r;t=i;i=i+16|0;u=t;w=i;i=i+16|0;v=w;x=i;i=i+16|0;y=x;k=i;i=i+16|0;f=k;c[a+4>>2]=0;o=a+8|0;h[o>>3]=1.0;p=a+16|0;c[p>>2]=0;m=a+20|0;c[m>>2]=0;n=a+24|0;c[n>>2]=0;c[a>>2]=55304;c[k>>2]=13;d=f+8|0;c[d>>2]=0;c[d+4>>2]=0;z=c[b+12>>2]|0;s=(z|0)==4;do{if((z+ -3|0)>>>0<2){if(((c[(ut(b,0,f)|0)>>2]|0)+ -1|0)>>>0<2){z=c[k>>2]|0;if((z+ -1|0)>>>0>=2){c[x>>2]=z;c[y+4>>2]=1;c[y+8>>2]=2;Qe(0,72608,y);tc()}if((z|0)==1){A=+(c[d>>2]|0)}else{A=+h[d>>3]}h[a+32>>3]=A;x=1}else{x=0}Of(f);if(((c[(ut(b,1,f)|0)>>2]|0)+ -1|0)>>>0<2){y=c[k>>2]|0;if((y+ -1|0)>>>0>=2){c[w>>2]=y;c[v+4>>2]=1;c[v+8>>2]=2;Qe(0,72608,v);tc()}if((y|0)==1){A=+(c[d>>2]|0)}else{A=+h[d>>3]}h[a+40>>3]=A}else{x=0}Of(f);if(((c[(ut(b,2,f)|0)>>2]|0)+ -1|0)>>>0<2){a=c[k>>2]|0;if((a+ -1|0)>>>0>=2){c[t>>2]=a;c[u+4>>2]=1;c[u+8>>2]=2;Qe(0,72608,u);tc()}if((a|0)==1){A=+(c[d>>2]|0)}else{A=+h[d>>3]}h[o>>3]=A}else{x=0}Of(f);if(!s){if((x&1)==0){break}i=l;return}if((c[(ut(b,3,f)|0)>>2]|0)!=6){Of(f);break}b=c[k>>2]|0;if((b|0)!=6){c[r>>2]=b;c[q+4>>2]=6;Qe(0,72520,q);tc()}b=c[d>>2]|0;q=c[b+12>>2]|0;r=ye(q,8)|0;a:do{if((q|0)>0){s=0;b:while(1){if((x&1)==0){e=x;break a}do{if(((c[(ut(b,s,f)|0)>>2]|0)+ -1|0)>>>0<2){t=c[k>>2]|0;if((t+ -1|0)>>>0>=2){break b}if((t|0)==1){A=+(c[d>>2]|0)}else{A=+h[d>>3]}h[r+(s<<3)>>3]=A;if(A>=0.0){break}x=0}else{x=0}}while(0);Of(f);s=s+1|0;if(!((s|0)<(q|0)&(s|0)<10)){e=x;break a}}c[g>>2]=t;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,72608,j);tc()}else{e=x}}while(0);if((e&1)==0){Fe(r);Of(f);break}c[p>>2]=q;c[m>>2]=r;c[n>>2]=1;Of(f);i=l;return}}while(0);h[o>>3]=0.0;i=l;return}function ur(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=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.0;n=i;d=i;i=i+16|0;m=d;j=i;i=i+8|0;k=j;t=i;i=i+8|0;s=t;x=i;i=i+16|0;w=x;p=i;i=i+16|0;q=p;y=i;i=i+16|0;u=y;o=i;i=i+16|0;e=o;c[a+4>>2]=0;v=a+8|0;h[v>>3]=1.0;f=a+16|0;c[f>>2]=0;l=a+20|0;c[l>>2]=0;g=a+24|0;c[g>>2]=0;c[a>>2]=55344;c[p>>2]=13;a=q+8|0;c[a>>2]=0;c[a+4>>2]=0;c[y>>2]=13;z=u+8|0;c[z>>2]=0;c[z+4>>2]=0;Yu(b,55376,q,0)|0;Yu(b,55152,u,0)|0;do{if(((c[p>>2]|0)+ -1|0)>>>0<2){if((c[y>>2]|0)!=4){r=21;break}y=FW(32)|0;fe(y,c[z>>2]|0);z=c[p>>2]|0;if((z+ -1|0)>>>0>=2){c[x>>2]=z;c[w+4>>2]=1;c[w+8>>2]=2;Qe(0,72608,w);tc()}if((z|0)==1){A=+(c[a>>2]|0)}else{A=+h[a>>3]}h[v>>3]=A;do{if((te(y,55152)|0)==0){c[g>>2]=0}else{if((te(y,55384)|0)==0){c[g>>2]=1;break}if((te(y,55392)|0)==0){c[g>>2]=2;break}if((te(y,55168)|0)==0){c[g>>2]=3;break}if((te(y,55400)|0)==0){c[g>>2]=4;break}else{c[g>>2]=0;break}}}while(0);if((y|0)==0){break}ke(y);HW(y)}else{r=21}}while(0);if((r|0)==21){h[v>>3]=0.0}Of(u);Of(q);a:do{if((c[(Yu(b,55384,q,0)|0)>>2]|0)==6){r=c[p>>2]|0;if((r|0)!=6){c[t>>2]=r;c[s+4>>2]=6;Qe(0,72520,s);tc()}t=c[(c[a>>2]|0)+12>>2]|0;s=ye(t,8)|0;do{if((t|0)>=1){r=e+8|0;u=r+4|0;v=1;b=0;b:while(1){c[o>>2]=13;c[r>>2]=0;c[u>>2]=0;w=c[p>>2]|0;if((w|0)!=6){r=28;break}do{if(((c[(ut(c[a>>2]|0,b,e)|0)>>2]|0)+ -1|0)>>>0<2){w=c[o>>2]|0;if((w+ -1|0)>>>0>=2){r=31;break b}if((w|0)==1){A=+(c[r>>2]|0)}else{A=+h[r>>3]}h[s+(b<<3)>>3]=A;if(A>=0.0){break}v=0}else{v=0}}while(0);Of(e);b=b+1|0;if((b|0)>=(t|0)|v^1){r=38;break}}if((r|0)==28){c[j>>2]=w;c[k+4>>2]=6;Qe(0,72520,k);tc()}else if((r|0)==31){c[d>>2]=w;c[m+4>>2]=1;c[m+8>>2]=2;Qe(0,72608,m);tc()}else if((r|0)==38){if(v){break}Fe(s);break a}}}while(0);c[f>>2]=t;c[l>>2]=s;c[g>>2]=1}}while(0);if((c[l>>2]|0)!=0){Of(q);i=n;return}c[f>>2]=1;z=ye(1,8)|0;c[l>>2]=z;h[z>>3]=3.0;Of(q);i=n;return}function vr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;f=i;m=i;i=i+16|0;l=m;j=i;i=i+16|0;k=j;n=c[b+12>>2]|0;e=a+32|0;n=(n|0)>4?4:n;c[e>>2]=n;a:do{if((n|0)>0){n=k+8|0;o=n+4|0;p=0;while(1){c[j>>2]=13;c[n>>2]=0;c[o>>2]=0;if(((c[(ut(b,p,k)|0)>>2]|0)+ -1|0)>>>0<2){q=c[j>>2]|0;if((q+ -1|0)>>>0>=2){break}if((q|0)==1){r=+(c[n>>2]|0)}else{r=+h[n>>3]}h[a+(p<<3)>>3]=r<0.0|r>1.0?0.0:r}else{h[a+(p<<3)>>3]=0.0}Of(k);p=p+1|0;q=c[e>>2]|0;if((p|0)>=(q|0)){g=q;break a}}c[m>>2]=q;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,72608,l);tc()}else{g=n}}while(0);b=(g|0)==4?0-d|0:d;if((b|0)>0){if((g|0)>0){g=0}else{i=f;return}do{q=a+(g<<3)|0;h[q>>3]=+h[q>>3]*.5+.5;g=g+1|0;}while((g|0)<(c[e>>2]|0));i=f;return}else{if((b|0)<0&(g|0)>0){g=0}else{i=f;return}do{q=a+(g<<3)|0;h[q>>3]=+h[q>>3]*.5;g=g+1|0;}while((g|0)<(c[e>>2]|0));i=f;return}}function wr(b,d){b=b|0;d=d|0;var e=0,f=0,g=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.0;k=i;j=i;i=i+8|0;e=j;p=i;i=i+16|0;o=p;s=i;i=i+8|0;q=s;t=i;i=i+16|0;u=t;w=i;i=i+8|0;v=w;x=i;i=i+8|0;y=x;A=i;i=i+8|0;z=A;m=i;i=i+16|0;f=m;r=i;i=i+16|0;n=r;c[m>>2]=13;g=f+8|0;c[g>>2]=0;c[g+4>>2]=0;do{if((c[(Yu(d,55408,f,0)|0)>>2]|0)==4){B=FW(32)|0;C=c[m>>2]|0;if((C|0)!=4){c[A>>2]=C;c[z+4>>2]=4;Qe(0,72520,z);tc()}fe(B,c[g>>2]|0);do{if((te(B,55392)|0)==0){c[b>>2]=1}else{if((te(B,55152)|0)==0){c[b>>2]=2;break}if((te(B,55416)|0)==0){c[b>>2]=3;break}else{c[b>>2]=0;break}}}while(0);if((B|0)==0){break}ke(B);HW(B)}else{c[b>>2]=0}}while(0);Of(f);do{if((c[(Yu(d,55152,f,0)|0)>>2]|0)==4){z=FW(32)|0;A=c[m>>2]|0;if((A|0)!=4){c[x>>2]=A;c[y+4>>2]=4;Qe(0,72520,y);tc()}fe(z,c[g>>2]|0);c[b+4>>2]=(te(z,55424)|0)!=0;if((z|0)==0){break}ke(z);HW(z)}else{c[b+4>>2]=1}}while(0);Of(f);do{if((c[(Yu(d,55424,f,0)|0)>>2]|0)==6){x=c[m>>2]|0;if((x|0)!=6){c[w>>2]=x;c[v+4>>2]=6;Qe(0,72520,v);tc()}w=c[g>>2]|0;if((c[w+12>>2]|0)!=2){l=46;break}c[r>>2]=13;v=n+8|0;c[v>>2]=0;c[v+4>>2]=0;if(((c[(ut(w,0,n)|0)>>2]|0)+ -1|0)>>>0<2){w=c[r>>2]|0;if((w+ -1|0)>>>0>=2){c[t>>2]=w;c[u+4>>2]=1;c[u+8>>2]=2;Qe(0,72608,u);tc()}if((w|0)==1){D=+(c[v>>2]|0)}else{D=+h[v>>3]}h[b+8>>3]=D}else{h[b+8>>3]=0.0}Of(n);t=c[m>>2]|0;if((t|0)!=6){c[s>>2]=t;c[q+4>>2]=6;Qe(0,72520,q);tc()}if(((c[(ut(c[g>>2]|0,1,n)|0)>>2]|0)+ -1|0)>>>0<2){q=c[r>>2]|0;if((q+ -1|0)>>>0>=2){c[p>>2]=q;c[o+4>>2]=1;c[o+8>>2]=2;Qe(0,72608,o);tc()}if((q|0)==1){D=+(c[v>>2]|0)}else{D=+h[v>>3]}h[b+16>>3]=D}else{h[b+16>>3]=0.0}Of(n);n=b+8|0;D=+h[n>>3];if(D<0.0|D>1.0){h[n>>3]=.5}n=b+16|0;D=+h[n>>3];if(!(D<0.0|D>1.0)){break}h[n>>3]=.5}else{l=46}}while(0);if((l|0)==46){h[b+16>>3]=.5;h[b+8>>3]=.5}Of(f);if((c[(Yu(d,55432,f,0)|0)>>2]|0)!=0){a[b+24|0]=0;Of(f);i=k;return}l=c[m>>2]|0;if((l|0)!=0){c[j>>2]=l;c[e+4>>2]=0;Qe(0,72520,e);tc()}a[b+24|0]=a[g]&1;Of(f);i=k;return}function xr(a,b){a=a|0;b=b|0;var 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;h=i;g=i;i=i+8|0;d=g;k=i;i=i+8|0;l=k;n=i;i=i+8|0;m=n;p=i;i=i+8|0;o=p;r=i;i=i+8|0;q=r;s=i;i=i+8|0;t=s;v=i;i=i+8|0;u=v;x=i;i=i+8|0;w=x;j=i;i=i+16|0;e=j;c[j>>2]=13;f=e+8|0;c[f>>2]=0;c[f+4>>2]=0;do{if((c[(Yu(b,55440,e,0)|0)>>2]|0)==1){y=c[j>>2]|0;if((y|0)==1){c[a>>2]=c[f>>2];break}else{c[x>>2]=y;c[w+4>>2]=1;Qe(0,72520,w);tc()}}else{c[a>>2]=0}}while(0);Of(e);do{if((c[(Yu(b,55448,e,0)|0)>>2]|0)==6){w=FW(40)|0;x=c[j>>2]|0;if((x|0)==6){vr(w,c[f>>2]|0,0);c[a+4>>2]=w;break}else{c[v>>2]=x;c[u+4>>2]=6;Qe(0,72520,u);tc()}}else{c[a+4>>2]=0}}while(0);Of(e);do{if((c[(Yu(b,55456,e,0)|0)>>2]|0)==6){u=FW(40)|0;v=c[j>>2]|0;if((v|0)==6){vr(u,c[f>>2]|0,0);c[a+8>>2]=u;break}else{c[s>>2]=v;c[t+4>>2]=6;Qe(0,72520,t);tc()}}else{c[a+8>>2]=0}}while(0);Of(e);do{if((c[(Yu(b,55464,e,0)|0)>>2]|0)==4){s=FW(32)|0;t=c[j>>2]|0;if((t|0)==4){fe(s,c[f>>2]|0);c[a+12>>2]=s;break}else{c[r>>2]=t;c[q+4>>2]=4;Qe(0,72520,q);tc()}}else{c[a+12>>2]=0}}while(0);Of(e);do{if((c[(Yu(b,55472,e,0)|0)>>2]|0)==4){q=FW(32)|0;r=c[j>>2]|0;if((r|0)==4){fe(q,c[f>>2]|0);c[a+16>>2]=q;break}else{c[p>>2]=r;c[o+4>>2]=4;Qe(0,72520,o);tc()}}else{c[a+16>>2]=0}}while(0);Of(e);do{if((c[(Yu(b,55480,e,0)|0)>>2]|0)==4){o=FW(32)|0;p=c[j>>2]|0;if((p|0)==4){fe(o,c[f>>2]|0);c[a+20>>2]=o;break}else{c[n>>2]=p;c[m+4>>2]=4;Qe(0,72520,m);tc()}}else{c[a+20>>2]=0}}while(0);Of(e);do{if((c[(Yu(b,55488,e,0)|0)>>2]|0)==7){m=FW(32)|0;n=c[j>>2]|0;if((n|0)==7){wr(m,c[f>>2]|0);c[a+24>>2]=m;break}else{c[k>>2]=n;c[l+4>>2]=7;Qe(0,72520,l);tc()}}else{c[a+24>>2]=0}}while(0);Of(e);if((c[(Yu(b,55496,e,0)|0)>>2]|0)!=1){c[a+28>>2]=0;Of(e);i=h;return}b=c[j>>2]|0;if((b|0)!=1){c[g>>2]=b;c[d+4>>2]=1;Qe(0,72520,d);tc()}c[a+28>>2]=c[f>>2];Of(e);i=h;return}function yr(a){a=a|0;var b=0,d=0;b=i;d=c[a+4>>2]|0;if((d|0)!=0){HW(d)}d=c[a+8>>2]|0;if((d|0)!=0){HW(d)}d=c[a+12>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+16>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+20>>2]|0;if((d|0)!=0){ke(d);HW(d)}a=c[a+24>>2]|0;if((a|0)==0){i=b;return}HW(a);i=b;return}function zr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=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,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,pa=0,qa=0,ra=0.0,sa=0.0;k=i;j=i;i=i+8|0;g=j;o=i;i=i+8|0;l=o;q=i;i=i+8|0;r=q;v=i;i=i+8|0;s=v;t=i;i=i+8|0;u=t;L=i;i=i+8|0;K=L;A=i;i=i+8|0;y=A;B=i;i=i+8|0;C=B;E=i;i=i+8|0;G=E;I=i;i=i+8|0;H=I;M=i;i=i+8|0;N=M;O=i;i=i+8|0;P=O;Q=i;i=i+8|0;R=Q;T=i;i=i+8|0;S=T;U=i;i=i+8|0;V=U;ga=i;i=i+8|0;Z=i;i=i+16|0;_=Z;aa=i;i=i+8|0;ba=aa;da=i;i=i+16|0;ca=da;fa=i;i=i+8|0;ea=fa;ia=i;i=i+16|0;ha=ia;ja=i;i=i+8|0;ka=ja;la=i;i=i+16|0;ma=la;pa=i;i=i+8|0;oa=pa;p=i;i=i+16|0;m=p;$=i;i=i+16|0;Y=$;J=i;i=i+16|0;w=J;D=i;i=i+16|0;x=D;F=i;i=i+16|0;z=F;c[p>>2]=13;n=m+8|0;c[n>>2]=0;c[n+4>>2]=0;c[b+52>>2]=0;c[b+56>>2]=65535;na=b+144|0;a[na]=1;c[b+112>>2]=d;c[b+124>>2]=0;h[b+136>>3]=0.0;d=b+64|0;qa=b+72|0;c[qa>>2]=0;c[qa+4>>2]=0;c[d>>2]=5;qa=FW(32)|0;bX(qa|0,0,32)|0;X=b+28|0;c[X>>2]=qa;do{if((c[(Yu(e,55528,m,0)|0)>>2]|0)==6){qa=c[p>>2]|0;if((qa|0)!=6){c[pa>>2]=qa;c[oa+4>>2]=6;Qe(0,72520,oa);tc()}oa=c[n>>2]|0;if((c[oa+12>>2]|0)!=4){W=47;break}c[$>>2]=13;ga=Y+8|0;c[ga>>2]=0;c[ga+4>>2]=0;if(((c[(ut(oa,0,Y)|0)>>2]|0)+ -1|0)>>>0<2){na=c[$>>2]|0;if((na+ -1|0)>>>0>=2){c[la>>2]=na;c[ma+4>>2]=1;c[ma+8>>2]=2;Qe(0,72608,ma);tc()}if((na|0)==1){ra=+(c[ga>>2]|0)}else{ra=+h[ga>>3]}h[c[X>>2]>>3]=ra}else{h[c[X>>2]>>3]=0.0}Of(Y);la=c[p>>2]|0;if((la|0)!=6){c[ja>>2]=la;c[ka+4>>2]=6;Qe(0,72520,ka);tc()}if(((c[(ut(c[n>>2]|0,1,Y)|0)>>2]|0)+ -1|0)>>>0<2){ja=c[$>>2]|0;if((ja+ -1|0)>>>0>=2){c[ia>>2]=ja;c[ha+4>>2]=1;c[ha+8>>2]=2;Qe(0,72608,ha);tc()}if((ja|0)==1){ra=+(c[ga>>2]|0)}else{ra=+h[ga>>3]}h[(c[X>>2]|0)+8>>3]=ra}else{h[(c[X>>2]|0)+8>>3]=0.0}Of(Y);ha=c[p>>2]|0;if((ha|0)!=6){c[fa>>2]=ha;c[ea+4>>2]=6;Qe(0,72520,ea);tc()}if(((c[(ut(c[n>>2]|0,2,Y)|0)>>2]|0)+ -1|0)>>>0<2){ea=c[$>>2]|0;if((ea+ -1|0)>>>0>=2){c[da>>2]=ea;c[ca+4>>2]=1;c[ca+8>>2]=2;Qe(0,72608,ca);tc()}if((ea|0)==1){ra=+(c[ga>>2]|0)}else{ra=+h[ga>>3]}h[(c[X>>2]|0)+16>>3]=ra}else{h[(c[X>>2]|0)+16>>3]=1.0}Of(Y);ca=c[p>>2]|0;if((ca|0)!=6){c[aa>>2]=ca;c[ba+4>>2]=6;Qe(0,72520,ba);tc()}if(((c[(ut(c[n>>2]|0,3,Y)|0)>>2]|0)+ -1|0)>>>0<2){$=c[$>>2]|0;if(($+ -1|0)>>>0>=2){c[Z>>2]=$;c[_+4>>2]=1;c[_+8>>2]=2;Qe(0,72608,_);tc()}if(($|0)==1){ra=+(c[ga>>2]|0)}else{ra=+h[ga>>3]}h[(c[X>>2]|0)+24>>3]=ra}else{h[(c[X>>2]|0)+24>>3]=1.0}Of(Y);Y=c[X>>2]|0;sa=+h[Y>>3];ra=+h[Y+16>>3];if(sa>ra){h[Y>>3]=ra;h[(c[X>>2]|0)+16>>3]=sa;Z=c[X>>2]|0}else{Z=Y}Y=Z+8|0;ra=+h[Y>>3];sa=+h[Z+24>>3];if(ra<=sa){break}h[Y>>3]=sa;h[(c[X>>2]|0)+24>>3]=ra}else{W=47}}while(0);if((W|0)==47){h[(c[X>>2]|0)+8>>3]=0.0;h[c[X>>2]>>3]=0.0;h[(c[X>>2]|0)+24>>3]=1.0;h[(c[X>>2]|0)+16>>3]=1.0;Qe(-1,55536,ga);a[na]=0}Of(m);do{if((c[(Yu(e,55568,m,0)|0)>>2]|0)==3){W=c[p>>2]|0;if((W|0)==3){pa=c[n>>2]|0;qa=FW(32)|0;ie(qa,pa);c[b+32>>2]=qa;break}else{c[U>>2]=W;c[V+4>>2]=3;Qe(0,72520,V);tc()}}else{c[b+32>>2]=0}}while(0);Of(m);if((c[(Zu(e,55584,m)|0)>>2]|0)==9){U=c[p>>2]|0;if((U|0)!=9){c[T>>2]=U;c[S+4>>2]=9;Qe(0,72520,S);tc()}S=n;if((f|0)==0){S=-1}else{S=du(f,c[S>>2]|0,c[S+4>>2]|0)|0}c[b+36>>2]=S}else{c[b+36>>2]=0}Of(m);do{if((c[(Yu(e,55592,m,0)|0)>>2]|0)==3){S=c[p>>2]|0;if((S|0)==3){pa=c[n>>2]|0;qa=FW(32)|0;ie(qa,pa);c[b+40>>2]=qa;break}else{c[Q>>2]=S;c[R+4>>2]=3;Qe(0,72520,R);tc()}}else{c[b+40>>2]=0}}while(0);Of(m);do{if((c[(Yu(e,55600,m,0)|0)>>2]|0)==3){Q=c[p>>2]|0;if((Q|0)==3){pa=c[n>>2]|0;qa=FW(32)|0;ie(qa,pa);c[b+44>>2]=qa;break}else{c[O>>2]=Q;c[P+4>>2]=3;Qe(0,72520,P);tc()}}else{c[b+44>>2]=0}}while(0);Of(m);do{if((c[(Yu(e,55608,m,0)|0)>>2]|0)==1){O=c[p>>2]|0;if((O|0)==1){qa=b+48|0;c[qa>>2]=c[qa>>2]|c[n>>2];break}else{c[M>>2]=O;c[N+4>>2]=1;Qe(0,72520,N);tc()}}else{c[b+48>>2]=0}}while(0);Of(m);if((c[(Yu(e,55616,m,0)|0)>>2]|0)==7){c[J>>2]=13;M=w+8|0;c[M>>2]=0;c[M+4>>2]=0;do{if((c[(Yu(e,55624,w,0)|0)>>2]|0)==4){c[D>>2]=13;K=x+8|0;c[K>>2]=0;c[K+4>>2]=0;L=FW(32)|0;J=c[J>>2]|0;if((J|0)!=4){c[I>>2]=J;c[H+4>>2]=4;Qe(0,72520,H);tc()}fe(L,c[M>>2]|0);H=b+80|0;c[H>>2]=L;I=c[p>>2]|0;if((I|0)!=7){c[E>>2]=I;c[G+4>>2]=7;Qe(0,72520,G);tc()}if((c[(Yu(c[n>>2]|0,55416,x,0)|0)>>2]|0)==7){c[F>>2]=13;E=z+8|0;c[E>>2]=0;c[E+4>>2]=0;E=c[D>>2]|0;if((E|0)!=7){c[B>>2]=E;c[C+4>>2]=7;Qe(0,72520,C);tc()}do{if((c[(Zu(c[K>>2]|0,c[(c[H>>2]|0)+28>>2]|0,z)|0)>>2]|0)==9){Mf(z,d)|0}else{Of(z);B=c[D>>2]|0;if((B|0)!=7){c[A>>2]=B;c[y+4>>2]=7;Qe(0,72520,y);tc()}if((c[(Zu(c[K>>2]|0,55632,z)|0)>>2]|0)!=9){break}Mf(z,d)|0}}while(0);Of(z)}Of(x)}else{Of(w);c[b+80>>2]=0;x=c[p>>2]|0;if((x|0)!=7){c[L>>2]=x;c[K+4>>2]=7;Qe(0,72520,K);tc()}if((c[(Zu(c[n>>2]|0,55416,w)|0)>>2]|0)!=9){break}Mf(w,d)|0}}while(0);Of(w)}else{c[b+80>>2]=0}Of(m);do{if((c[(Yu(e,55640,m,0)|0)>>2]|0)==7){s=FW(32)|0;v=c[p>>2]|0;if((v|0)==7){ur(s,c[n>>2]|0);c[b+128>>2]=s;break}else{c[t>>2]=v;c[u+4>>2]=7;Qe(0,72520,u);tc()}}else{Of(m);if((c[(Yu(e,55648,m,0)|0)>>2]|0)!=6){c[b+128>>2]=0;break}t=FW(48)|0;u=c[p>>2]|0;if((u|0)==6){tr(t,c[n>>2]|0);c[b+128>>2]=t;break}else{c[v>>2]=u;c[s+4>>2]=6;Qe(0,72520,s);tc()}}}while(0);Of(m);do{if((c[(Yu(e,55160,m,0)|0)>>2]|0)==6){s=FW(40)|0;t=c[p>>2]|0;if((t|0)==6){vr(s,c[n>>2]|0,0);c[b+132>>2]=s;break}else{c[q>>2]=t;c[r+4>>2]=6;Qe(0,72520,r);tc()}}else{c[b+132>>2]=0}}while(0);Of(m);do{if((c[(Yu(e,55656,m,0)|0)>>2]|0)==1){p=c[p>>2]|0;if((p|0)==1){c[b+84>>2]=c[n>>2];break}else{c[o>>2]=p;c[l+4>>2]=1;Qe(0,72520,l);tc()}}else{c[b+84>>2]=0}}while(0);Of(m);if((f|0)==0){l=0}else{l=c[f+160>>2]|0}c[b+88>>2]=l;qa=b+96|0;Zu(e,55672,qa)|0;e=c[qa>>2]|0;if((e|0)==5|(e|0)==9){i=k;return}c[j>>2]=e;Qe(-1,55680,g);i=k;return}function Ar(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;c[b>>2]=55512;h=b+8|0;c[h>>2]=13;j=b+16|0;c[j>>2]=0;c[j+4>>2]=0;c[b+64>>2]=13;j=b+72|0;c[j>>2]=0;c[j+4>>2]=0;c[b+96>>2]=13;j=b+104|0;c[j>>2]=0;c[j+4>>2]=0;a[b+145|0]=0;c[b+48>>2]=0;c[b+24>>2]=0;Kf(h,e)|0;zr(b,d,e,f);i=g;return}function Br(a){a=a|0;var b=0;b=i;Cr(a);HW(a);i=b;return}function Cr(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=55512;Of(a+8|0);d=c[a+28>>2]|0;if((d|0)!=0){HW(d)}d=c[a+32>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+40>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+44>>2]|0;if((d|0)!=0){ke(d);HW(d)}Of(a+64|0);d=c[a+80>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+128>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+132>>2]|0;if((d|0)==0){d=a+96|0;Of(d);i=b;return}HW(d);d=a+96|0;Of(d);i=b;return}function Dr(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=f|0;var g=0,j=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0;g=i;m=i;i=i+48|0;j=m;r=i;i=i+48|0;l=r;v=i;i=i+48|0;q=v;z=i;i=i+48|0;u=z;B=i;i=i+16|0;y=B;a=a+124|0;A=c[a>>2]|0;n=b+e;h[k>>3]=n;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];B=y+8|0;h[k>>3]=d;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];pe(A,55832,y)|0;y=c[a>>2]|0;o=e*.55228475;w=o+d;p=o+b;x=d+e;h[k>>3]=n;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=u+8|0;h[k>>3]=w;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=u+16|0;h[k>>3]=p;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=u+24|0;h[k>>3]=x;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=u+32|0;h[k>>3]=b;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=u+40|0;h[k>>3]=x;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];pe(y,55856,u)|0;u=c[a>>2]|0;s=b-o;t=b-e;h[k>>3]=s;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];v=q+8|0;h[k>>3]=x;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];v=q+16|0;h[k>>3]=t;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];v=q+24|0;h[k>>3]=w;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];v=q+32|0;h[k>>3]=t;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];v=q+40|0;h[k>>3]=d;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];pe(u,55856,q)|0;q=c[a>>2]|0;o=d-o;e=d-e;h[k>>3]=t;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=l+8|0;h[k>>3]=o;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=l+16|0;h[k>>3]=s;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=l+24|0;h[k>>3]=e;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=l+32|0;h[k>>3]=b;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=l+40|0;h[k>>3]=e;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];pe(q,55856,l)|0;l=c[a>>2]|0;h[k>>3]=p;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];m=j+8|0;h[k>>3]=e;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];m=j+16|0;h[k>>3]=n;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];m=j+24|0;h[k>>3]=o;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];m=j+32|0;h[k>>3]=n;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];m=j+40|0;h[k>>3]=d;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];pe(l,55856,j)|0;ne(c[a>>2]|0,f?55912:55920,-1)|0;i=g;return}function Er(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=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,O=0,P=0,Q=0.0;g=i;l=i;i=i+8|0;k=l;n=i;i=i+8|0;p=n;r=i;i=i+8|0;s=r;A=i;i=i+8|0;z=A;B=i;i=i+8|0;C=B;G=i;i=i+8|0;E=G;H=i;i=i+8|0;I=H;J=i;i=i+8|0;K=J;M=i;i=i+8|0;L=M;N=i;i=i+8|0;O=N;u=i;i=i+16|0;t=u;F=i;i=i+16|0;D=F;q=i;i=i+16|0;m=q;x=i;i=i+16|0;o=x;c[u>>2]=13;v=t+8|0;c[v>>2]=0;y=v+4|0;c[y>>2]=0;c[F>>2]=13;j=D+8|0;c[j>>2]=0;c[j+4>>2]=0;c[q>>2]=13;j=m+8|0;c[j>>2]=0;c[j+4>>2]=0;w=a+112|0;Jf(m,c[w>>2]|0)|0;a=a+124|0;P=c[(c[a>>2]|0)+24>>2]|0;c[y>>2]=0;c[u>>2]=1;c[v>>2]=P;P=c[q>>2]|0;if((P|0)!=7){c[N>>2]=P;c[O+4>>2]=7;Qe(0,72520,O);tc()}Wu(c[j>>2]|0,55936,t);c[v>>2]=0;c[y>>2]=0;c[u>>2]=4;c[v>>2]=Ge(55952)|0;N=c[q>>2]|0;if((N|0)!=7){c[M>>2]=N;c[L+4>>2]=7;Qe(0,72520,L);tc()}Wu(c[j>>2]|0,55944,t);If(t,c[w>>2]|0)|0;Q=+h[b>>3];c[F>>2]=2;L=D+8|0;h[L>>3]=Q;M=c[u>>2]|0;if((M|0)!=6){c[J>>2]=M;c[K+4>>2]=6;Qe(0,72520,K);tc()}tt(c[v>>2]|0,D);Q=+h[b+8>>3];c[F>>2]=2;h[L>>3]=Q;J=c[u>>2]|0;if((J|0)!=6){c[H>>2]=J;c[I+4>>2]=6;Qe(0,72520,I);tc()}tt(c[v>>2]|0,D);Q=+h[b+16>>3];c[F>>2]=2;h[L>>3]=Q;H=c[u>>2]|0;if((H|0)!=6){c[G>>2]=H;c[E+4>>2]=6;Qe(0,72520,E);tc()}tt(c[v>>2]|0,D);Q=+h[b+24>>3];c[F>>2]=2;h[L>>3]=Q;E=c[u>>2]|0;if((E|0)!=6){c[B>>2]=E;c[C+4>>2]=6;Qe(0,72520,C);tc()}tt(c[v>>2]|0,D);B=c[q>>2]|0;if((B|0)!=7){c[A>>2]=B;c[z+4>>2]=7;Qe(0,72520,z);tc()}Wu(c[j>>2]|0,55960,t);do{if(d){c[x>>2]=13;z=o+8|0;c[z>>2]=0;c[z+4>>2]=0;Jf(o,c[w>>2]|0)|0;c[v>>2]=0;c[y>>2]=0;c[u>>2]=4;c[v>>2]=Ge(55968)|0;u=c[x>>2]|0;if((u|0)!=7){c[r>>2]=u;c[s+4>>2]=7;Qe(0,72520,s);tc()}Wu(c[z>>2]|0,55152,t);r=c[q>>2]|0;if((r|0)==7){Wu(c[j>>2]|0,55984,o);break}else{c[n>>2]=r;c[p+4>>2]=7;Qe(0,72520,p);tc()}}}while(0);if((e|0)==0){P=FW(56)|0;N=a;N=c[N>>2]|0;N=N+28|0;N=c[N>>2]|0;N=Ge(N)|0;O=a;O=c[O>>2]|0;O=O+24|0;O=c[O>>2]|0;Tj(P,N,0,O,m);O=P;O=c[O>>2]|0;O=O+116|0;O=c[O>>2]|0;hd[O&127](P,1);Lf(f,P)|0;i=g;return}n=c[q>>2]|0;if((n|0)!=7){c[l>>2]=n;c[k+4>>2]=7;Qe(0,72520,k);tc()}Wu(c[j>>2]|0,55992,e);P=FW(56)|0;N=a;N=c[N>>2]|0;N=N+28|0;N=c[N>>2]|0;N=Ge(N)|0;O=a;O=c[O>>2]|0;O=O+24|0;O=c[O>>2]|0;Tj(P,N,0,O,m);O=P;O=c[O>>2]|0;O=O+116|0;O=c[O>>2]|0;hd[O&127](P,1);Lf(f,P)|0;i=g;return}function Fr(a,b,d,e,f,g,j){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=g|0;j=j|0;var 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=i;l=i;i=i+8|0;k=l;q=i;i=i+8|0;p=q;t=i;i=i+8|0;r=t;w=i;i=i+8|0;x=w;A=i;i=i+8|0;z=A;F=i;i=i+8|0;G=F;L=i;i=i+8|0;K=L;H=i;i=i+16|0;v=H;C=i;i=i+16|0;o=C;u=i;i=i+16|0;n=u;E=i;i=i+16|0;D=E;c[H>>2]=13;B=v+8|0;c[B>>2]=0;c[B+4>>2]=0;c[C>>2]=13;y=o+8|0;c[y>>2]=0;c[y+4>>2]=0;c[u>>2]=13;s=n+8|0;c[s>>2]=0;c[s+4>>2]=0;c[E>>2]=13;I=D+8|0;c[I>>2]=0;J=I+4|0;c[J>>2]=0;a=a+112|0;Jf(v,c[a>>2]|0)|0;do{if(f!=1.0){c[E>>2]=2;M=D+8|0;h[M>>3]=f;N=c[H>>2]|0;if((N|0)!=7){c[L>>2]=N;c[K+4>>2]=7;Qe(0,72520,K);tc()}Wu(c[B>>2]|0,55464,D);c[E>>2]=2;h[M>>3]=f;K=c[H>>2]|0;if((K|0)==7){Wu(c[B>>2]|0,56008,D);break}else{c[F>>2]=K;c[G+4>>2]=7;Qe(0,72520,G);tc()}}}while(0);do{if((g|0)!=0){c[I>>2]=0;c[J>>2]=0;c[E>>2]=4;c[I>>2]=Ge(g)|0;E=c[H>>2]|0;if((E|0)==7){Wu(c[B>>2]|0,56016,D);break}else{c[A>>2]=E;c[z+4>>2]=7;Qe(0,72520,z);tc()}}}while(0);Jf(o,c[a>>2]|0)|0;z=c[C>>2]|0;if((z|0)!=7){c[w>>2]=z;c[x+4>>2]=7;Qe(0,72520,x);tc()}Wu(c[y>>2]|0,e,v);Jf(n,c[a>>2]|0)|0;u=c[u>>2]|0;if((u|0)!=7){c[t>>2]=u;c[r+4>>2]=7;Qe(0,72520,r);tc()}Wu(c[s>>2]|0,b,d);Jf(j,c[a>>2]|0)|0;b=c[j>>2]|0;if((b|0)!=7){c[q>>2]=b;c[p+4>>2]=7;Qe(0,72520,p);tc()}p=j+8|0;Wu(c[p>>2]|0,56024,o);o=c[j>>2]|0;if((o|0)==7){Wu(c[p>>2]|0,56040,n);i=m;return}else{c[l>>2]=o;c[k+4>>2]=7;Qe(0,72520,k);tc()}}function Gr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=i;i=i+16|0;f=g;c[g>>2]=13;g=f+8|0;c[g>>2]=0;c[g+4>>2]=0;g=c[a+48>>2]|0;if((g&2|0)!=0){i=e;return}do{if(d){if((g&4|0)!=0){break}i=e;return}else{if((g&32|0)==0){break}i=e;return}}while(0);g=c[a+88>>2]|0;do{if((g|0)!=0){d=a+96|0;if((c[d>>2]|0)!=9){break}if(GF(g,d)|0){break}i=e;return}}while(0);Nf(a+64|0,c[a+112>>2]|0,f,0)|0;d=c[a+28>>2]|0;Tx(b,f,0,c[a+132>>2]|0,+h[d>>3],+h[d+8>>3],+h[d+16>>3],+h[d+24>>3]);Of(f);i=e;return}function Hr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;d=i;g=i;i=i+8|0;h=g;l=i;i=i+16|0;j=l;c[l>>2]=13;f=j+8|0;c[f>>2]=0;c[f+4>>2]=0;k=b+152|0;if((c[(Zu(e,56080,k)|0)>>2]|0)!=9){m=b+160|0;c[m>>2]=0;c[m+4>>2]=0;c[k>>2]=5}if((c[(Yu(e,56088,j,0)|0)>>2]|0)!=0){a[b+168|0]=0;Of(j);i=d;return}e=c[l>>2]|0;if((e|0)!=0){c[g>>2]=e;c[h+4>>2]=0;Qe(0,72520,h);tc()}a[b+168|0]=a[f]&1;Of(j);i=d;return}function Ir(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;k=i;i=i+8|0;j=k;c[b>>2]=55512;h=b+8|0;c[h>>2]=13;m=b+16|0;c[m>>2]=0;c[m+4>>2]=0;c[b+64>>2]=13;m=b+72|0;c[m>>2]=0;c[m+4>>2]=0;c[b+96>>2]=13;m=b+104|0;c[m>>2]=0;c[m+4>>2]=0;m=b+145|0;do{if((c[g>>2]|0)==9){a[m]=1;m=c[g>>2]|0;if((m|0)==9){k=g+8|0;g=c[k+4>>2]|0;m=b+116|0;c[m>>2]=c[k>>2];c[m+4>>2]=g;break}else{c[k>>2]=m;c[j+4>>2]=9;Qe(0,72520,j);tc()}}else{a[m]=0}}while(0);c[b+48>>2]=0;m=b+24|0;c[m>>2]=0;Kf(h,e)|0;zr(b,d,e,f);c[b>>2]=56056;c[b+152>>2]=13;g=b+160|0;c[g>>2]=0;c[g+4>>2]=0;c[m>>2]=16;Hr(b,0,e,0);i=l;return}function Jr(a){a=a|0;var b=0;b=i;c[a>>2]=56056;Of(a+152|0);Cr(a);HW(a);i=b;return}function Kr(a){a=a|0;var b=0;b=i;c[a>>2]=56056;Of(a+152|0);Cr(a);i=b;return}function Lr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=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.0;k=i;m=i;i=i+8|0;l=m;p=i;i=i+8|0;o=p;s=i;i=i+8|0;t=s;v=i;i=i+8|0;u=v;x=i;i=i+8|0;w=x;z=i;i=i+8|0;y=z;B=i;i=i+16|0;A=B;D=i;i=i+8|0;C=D;F=i;i=i+8|0;E=F;n=i;i=i+16|0;g=n;r=i;i=i+16|0;j=r;c[r>>2]=13;q=j+8|0;c[q>>2]=0;c[q+4>>2]=0;do{if((c[(Yu(d,56120,j,0)|0)>>2]|0)==3){G=c[r>>2]|0;if((G|0)==3){F=c[q>>2]|0;G=FW(32)|0;ie(G,F);c[a+148>>2]=G;break}else{c[F>>2]=G;c[E+4>>2]=3;Qe(0,72520,E);tc()}}else{c[a+148>>2]=0}}while(0);Of(j);do{if((c[(Yu(d,56072,j,0)|0)>>2]|0)==7){E=FW(176)|0;F=c[r>>2]|0;if((F|0)==7){Ir(E,b,c[q>>2]|0,e,f);c[a+152>>2]=E;break}else{c[D>>2]=F;c[C+4>>2]=7;Qe(0,72520,C);tc()}}else{c[a+152>>2]=0}}while(0);Of(j);if(((c[(Yu(d,55464,j,0)|0)>>2]|0)+ -1|0)>>>0<2){f=c[r>>2]|0;if((f+ -1|0)>>>0>=2){c[B>>2]=f;c[A+4>>2]=1;c[A+8>>2]=2;Qe(0,72608,A);tc()}if((f|0)==1){H=+(c[q>>2]|0)}else{H=+h[q>>3]}h[a+160>>3]=H}else{h[a+160>>3]=1.0}Of(j);do{if((c[(Yu(d,56128,j,0)|0)>>2]|0)==3){A=c[r>>2]|0;if((A|0)==3){F=c[q>>2]|0;G=FW(32)|0;ie(G,F);c[a+168>>2]=G;break}else{c[z>>2]=A;c[y+4>>2]=3;Qe(0,72520,y);tc()}}else{c[a+168>>2]=0}}while(0);Of(j);y=a+172|0;do{if((c[(Zu(d,56144,j)|0)>>2]|0)==9){z=c[r>>2]|0;if((z|0)==9){E=q;F=c[E+4>>2]|0;G=y;c[G>>2]=c[E>>2];c[G+4>>2]=F;break}else{c[x>>2]=z;c[w+4>>2]=9;Qe(0,72520,w);tc()}}else{c[y>>2]=0;c[a+176>>2]=0}}while(0);Of(j);do{if((c[(Yu(d,56152,j,0)|0)>>2]|0)==3){w=c[r>>2]|0;if((w|0)==3){F=c[q>>2]|0;G=FW(32)|0;ie(G,F);c[a+180>>2]=G;break}else{c[v>>2]=w;c[u+4>>2]=3;Qe(0,72520,u);tc()}}else{c[a+180>>2]=0}}while(0);Of(j);do{if((c[(Yu(d,56160,j,0)|0)>>2]|0)==4){u=FW(32)|0;v=c[r>>2]|0;if((v|0)!=4){c[s>>2]=v;c[t+4>>2]=4;Qe(0,72520,t);tc()}fe(u,c[q>>2]|0);do{if((te(u,55440)|0)==0){c[a+184>>2]=0}else{s=a+184|0;if((te(u,55984)|0)==0){c[s>>2]=1;break}else{c[s>>2]=0;break}}}while(0);if((u|0)==0){break}ke(u);HW(u)}else{c[a+184>>2]=0}}while(0);Of(j);if((c[(Yu(d,56168,j,0)|0)>>2]|0)!=7){c[a+188>>2]=0;Of(j);i=k;return}d=c[r>>2]|0;if((d|0)!=7){c[p>>2]=d;c[o+4>>2]=7;Qe(0,72520,o);tc()}G=c[q>>2]|0;c[n>>2]=13;p=g+8|0;c[p>>2]=0;c[p+4>>2]=0;do{if((c[(Yu(G,55944,g,0)|0)>>2]|0)==4){o=FW(32)|0;n=c[n>>2]|0;if((n|0)!=4){c[m>>2]=n;c[l+4>>2]=4;Qe(0,72520,l);tc()}fe(o,c[p>>2]|0);l=(te(o,72592)|0)==0|0;if((o|0)==0){break}ke(o);HW(o)}else{l=0}}while(0);Of(g);c[a+188>>2]=l;Of(j);i=k;return}function Mr(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;k=i;i=i+8|0;j=k;c[b>>2]=55512;h=b+8|0;c[h>>2]=13;c[b+16>>2]=0;c[b+20>>2]=0;c[b+64>>2]=13;c[b+72>>2]=0;c[b+76>>2]=0;c[b+96>>2]=13;c[b+104>>2]=0;c[b+108>>2]=0;m=b+145|0;do{if((c[g>>2]|0)==9){a[m]=1;m=c[g>>2]|0;if((m|0)==9){j=g+8|0;k=c[j+4>>2]|0;m=b+116|0;c[m>>2]=c[j>>2];c[m+4>>2]=k;break}else{c[k>>2]=m;c[j+4>>2]=9;Qe(0,72520,j);tc()}}else{a[m]=0}}while(0);c[b+48>>2]=0;c[b+24>>2]=0;Kf(h,e)|0;zr(b,d,e,f);c[b>>2]=56104;Lr(b,d,e,f,g);i=l;return}function Nr(a){a=a|0;var b=0;b=i;Or(a);HW(a);i=b;return}function Or(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=56104;d=c[a+148>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+152>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+168>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+180>>2]|0;if((d|0)==0){Cr(a);i=b;return}ke(d);HW(d);Cr(a);i=b;return}function Pr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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;d=i;j=i;i=i+8|0;h=j;m=i;i=i+8|0;l=m;q=i;i=i+8|0;p=q;r=i;i=i+8|0;t=r;o=i;i=i+16|0;e=o;k=i;i=i+16|0;g=k;c[o>>2]=13;n=e+8|0;c[n>>2]=0;c[n+4>>2]=0;do{if((c[(Yu(f,56088,e,0)|0)>>2]|0)==0){s=c[o>>2]|0;if((s|0)==0){a[b+192|0]=a[n]&1;break}else{c[r>>2]=s;c[t+4>>2]=0;Qe(0,72520,t);tc()}}else{a[b+192|0]=0}}while(0);Of(e);t=(c[(Yu(f,56208,e,0)|0)>>2]|0)==4;s=FW(32)|0;do{if(t){r=c[o>>2]|0;if((r|0)==4){fe(s,c[n>>2]|0);c[b+196>>2]=s;break}else{c[q>>2]=r;c[p+4>>2]=4;Qe(0,72520,p);tc()}}else{fe(s,56216);c[b+196>>2]=s}}while(0);Of(e);if((c[(Yu(f,56224,e,0)|0)>>2]|0)!=3){c[b+200>>2]=0;Of(e);i=d;return}c[k>>2]=13;p=g+8|0;c[p>>2]=0;c[p+4>>2]=0;o=c[o>>2]|0;if((o|0)!=3){c[m>>2]=o;c[l+4>>2]=3;Qe(0,72520,l);tc()}l=c[n>>2]|0;do{if((c[(Yu(f,56240,g,0)|0)>>2]|0)==3){f=c[k>>2]|0;if((f|0)!=3){c[j>>2]=f;c[h+4>>2]=3;Qe(0,72520,h);tc()}f=c[p>>2]|0;if((te(f,56248)|0)==0){c[b+200>>2]=1;break}if((te(f,56256)|0)==0){c[b+200>>2]=2;break}if((te(f,56272)|0)==0){c[b+200>>2]=3;break}if((te(f,56288)|0)==0){c[b+200>>2]=4;break}if((te(f,56304)|0)==0){c[b+200>>2]=5;break}if((te(f,56320)|0)==0){c[b+200>>2]=6;break}h=b+200|0;if((te(f,56336)|0)==0){c[h>>2]=7;break}else{c[h>>2]=0;break}}else{c[b+200>>2]=0}}while(0);Of(g);if((te(l,56248)|0)==0){b=b+200|0;switch(c[b>>2]|0){case 7:case 6:case 5:case 4:case 3:{c[b>>2]=0;Of(e);i=d;return};case 0:{c[b>>2]=1;Of(e);i=d;return};default:{Of(e);i=d;return}}}b=b+200|0;if((te(l,56344)|0)!=0){c[b>>2]=0;Of(e);i=d;return}g=c[b>>2]|0;if((g|0)==2|(g|0)==1){c[b>>2]=0;Of(e);i=d;return}else if((g|0)==0){c[b>>2]=7;Of(e);i=d;return}else{Of(e);i=d;return}}function Qr(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=56184;d=c[a+196>>2]|0;if((d|0)!=0){ke(d);HW(d)}Or(a);HW(a);i=b;return}function Rr(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=56184;d=c[a+196>>2]|0;if((d|0)==0){Or(a);i=b;return}ke(d);HW(d);Or(a);i=b;return}function Sr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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.0,z=0,A=0,B=0.0,C=0.0,D=0.0;e=i;r=i;i=i+16|0;u=r;v=i;i=i+32|0;q=v;t=i;i=i+40|0;s=t;l=i;i=i+16|0;f=l;p=i;i=i+32|0;j=p;n=i;i=i+16|0;m=n;o=i;i=i+16|0;g=o;c[l>>2]=13;l=f+8|0;c[l>>2]=0;c[l+4>>2]=0;l=c[a+48>>2]|0;if((l&2|0)!=0){i=e;return}do{if(d){if((l&4|0)!=0){break}i=e;return}else{if((l&32|0)==0){break}i=e;return}}while(0);d=c[a+88>>2]|0;do{if((d|0)!=0){l=a+96|0;if((c[l>>2]|0)!=9){break}if(GF(d,l)|0){break}i=e;return}}while(0);l=a+28|0;x=c[l>>2]|0;d=a+64|0;if((c[d>>2]|0)==5){y=+h[a+160>>3];w=FW(32)|0;ee(w);x=a+124|0;c[x>>2]=w;ne(w,56352,-1)|0;w=a+132|0;z=c[w>>2]|0;do{if((z|0)==0){ne(c[x>>2]|0,56360,-1)|0}else{A=c[z+32>>2]|0;if((A|0)==3){A=c[x>>2]|0;C=+h[z+8>>3];B=+h[z+16>>3];h[k>>3]=+h[z>>3];c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];z=q+8|0;h[k>>3]=C;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=q+16|0;h[k>>3]=B;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];c[q+24>>2]=55800;pe(A,55768,q)|0;break}else if((A|0)==4){A=c[x>>2]|0;D=+h[z+8>>3];B=+h[z+16>>3];C=+h[z+24>>3];v=t;h[k>>3]=+h[z>>3];c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];z=s+8|0;h[k>>3]=D;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=s+16|0;h[k>>3]=B;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=s+24|0;h[k>>3]=C;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];c[s+32>>2]=107;pe(A,55728,s)|0;break}else if((A|0)==1){A=c[x>>2]|0;v=r;h[k>>3]=+h[z>>3];c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];c[u+8>>2]=103;pe(A,55816,u)|0;break}else{break}}}while(0);q=a+196|0;do{if((te(c[q>>2]|0,56216)|0)==0){ne(c[x>>2]|0,56376,-1)|0}else{if((te(c[q>>2]|0,57440)|0)==0){ne(c[x>>2]|0,57448,-1)|0;break}if((te(c[q>>2]|0,58064)|0)==0){ne(c[x>>2]|0,58072,-1)|0;break}if((te(c[q>>2]|0,59480)|0)==0){ne(c[x>>2]|0,59488,-1)|0;break}if((te(c[q>>2]|0,60600)|0)==0){ne(c[x>>2]|0,60616,-1)|0;break}if((te(c[q>>2]|0,61776)|0)==0){ne(c[x>>2]|0,61792,-1)|0;break}if((te(c[q>>2]|0,62360)|0)==0){ne(c[x>>2]|0,62368,-1)|0;break}if((te(c[q>>2]|0,62888)|0)==0){ne(c[x>>2]|0,62896,-1)|0;break}if((te(c[q>>2]|0,55056)|0)!=0){break}ne(c[x>>2]|0,63240,-1)|0}}while(0);ne(c[x>>2]|0,63808,-1)|0;bX(p|0,0,16)|0;h[j+24>>3]=24.0;h[j+16>>3]=24.0;if(y==1.0){Er(a,j,0,0,d)}else{c[n>>2]=13;n=m+8|0;c[n>>2]=0;c[n+4>>2]=0;c[o>>2]=13;n=g+8|0;c[n>>2]=0;c[n+4>>2]=0;Er(a,j,1,0,m);n=c[x>>2]|0;if((n|0)!=0){ke(n);HW(n)}A=FW(32)|0;fe(A,63816);c[x>>2]=A;Fr(a,63832,m,63840,y,0,g);Er(a,j,0,g,d)}g=c[x>>2]|0;if((g|0)!=0){ke(g);HW(g)}A=c[l>>2]|0;y=+h[A>>3]+24.0;B=+h[A+8>>3]+24.0}else{w=a+132|0;y=+h[x+16>>3];B=+h[x+24>>3]}Nf(d,c[a+112>>2]|0,f,0)|0;A=c[l>>2]|0;Tx(b,f,c[a+128>>2]|0,c[w>>2]|0,+h[A>>3],+h[A+8>>3],y,B);Of(f);i=e;return}function Tr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;f=i;i=i+8|0;g=f;n=i;i=i+8|0;l=n;j=i;i=i+16|0;h=j;c[j>>2]=13;b=h+8|0;c[b>>2]=0;c[b+4>>2]=0;Yu(e,63880,a+152|0,0)|0;do{if((c[(Yu(e,63888,h,0)|0)>>2]|0)==4){k=FW(32)|0;m=c[j>>2]|0;if((m|0)!=4){c[n>>2]=m;c[l+4>>2]=4;Qe(0,72520,l);tc()}fe(k,c[b>>2]|0);do{if((te(k,55416)|0)==0){c[a+168>>2]=0}else{if((te(k,55168)|0)==0){c[a+168>>2]=1;break}if((te(k,63896)|0)==0){c[a+168>>2]=2;break}l=a+168|0;if((te(k,55584)|0)==0){c[l>>2]=3;break}else{c[l>>2]=1;break}}}while(0);if((k|0)==0){break}ke(k);HW(k)}else{c[a+168>>2]=1}}while(0);Of(h);if((c[(Yu(e,63904,h,0)|0)>>2]|0)!=6){c[a+176>>2]=0;Of(h);i=d;return}e=FW(8)|0;j=c[j>>2]|0;if((j|0)!=6){c[f>>2]=j;c[g+4>>2]=6;Qe(0,72520,g);tc()}qr(e,c[b>>2]|0,c[a+28>>2]|0);c[a+176>>2]=e;Of(h);i=d;return}function Ur(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;k=i;i=i+8|0;j=k;c[b>>2]=55512;h=b+8|0;c[h>>2]=13;c[b+16>>2]=0;c[b+20>>2]=0;c[b+64>>2]=13;c[b+72>>2]=0;c[b+76>>2]=0;c[b+96>>2]=13;c[b+104>>2]=0;c[b+108>>2]=0;m=b+145|0;do{if((c[g>>2]|0)==9){a[m]=1;m=c[g>>2]|0;if((m|0)==9){k=g+8|0;g=c[k+4>>2]|0;m=b+116|0;c[m>>2]=c[k>>2];c[m+4>>2]=g;break}else{c[k>>2]=m;c[j+4>>2]=9;Qe(0,72520,j);tc()}}else{a[m]=0}}while(0);c[b+48>>2]=0;m=b+24|0;c[m>>2]=0;Kf(h,e)|0;zr(b,d,e,f);c[b>>2]=63856;c[b+152>>2]=13;g=b+160|0;c[g>>2]=0;c[g+4>>2]=0;c[m>>2]=2;Tr(b,0,0,e);i=l;return}function Vr(a){a=a|0;var b=0;b=i;Wr(a);HW(a);i=b;return}function Wr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;d=i;c[a>>2]=63856;Of(a+152|0);b=c[a+176>>2]|0;if((b|0)==0){Cr(a);i=d;return}h=c[b>>2]|0;if((h|0)!=0){e=b+4|0;f=c[e>>2]|0;if((f|0)>0){g=0;do{j=c[h+(g<<2)>>2]|0;if((j|0)!=0){HW(j);h=c[b>>2]|0;f=c[e>>2]|0}g=g+1|0;}while((g|0)<(f|0))}Fe(h)}HW(b);Cr(a);i=d;return}function Xr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=i;i=i+16|0;f=g;c[g>>2]=13;g=f+8|0;c[g>>2]=0;c[g+4>>2]=0;g=c[a+48>>2]|0;if((g&2|0)!=0){i=e;return}do{if(d){if((g&4|0)!=0){break}i=e;return}else{if((g&32|0)==0){break}i=e;return}}while(0);g=c[a+88>>2]|0;do{if((g|0)!=0){d=a+96|0;if((c[d>>2]|0)!=9){break}if(GF(g,d)|0){break}i=e;return}}while(0);Nf(a+64|0,c[a+112>>2]|0,f,0)|0;d=c[a+28>>2]|0;Tx(b,f,c[a+128>>2]|0,c[a+132>>2]|0,+h[d>>3],+h[d+8>>3],+h[d+16>>3],+h[d+24>>3]);Of(f);i=e;return}function Yr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=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,O=0,P=0,Q=0,R=0.0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0,_=0,$=0,aa=0.0,ba=0.0,ca=0.0,da=0.0;e=i;d=i;i=i+8|0;g=d;n=i;i=i+8|0;m=n;p=i;i=i+8|0;o=p;r=i;i=i+8|0;q=r;u=i;i=i+16|0;v=u;x=i;i=i+8|0;y=x;z=i;i=i+16|0;A=z;C=i;i=i+8|0;B=C;D=i;i=i+16|0;E=D;G=i;i=i+8|0;F=G;H=i;i=i+16|0;I=H;J=i;i=i+8|0;K=J;N=i;i=i+16|0;M=N;P=i;i=i+8|0;O=P;Q=i;i=i+16|0;S=Q;L=i;i=i+8|0;T=L;V=i;i=i+8|0;U=V;X=i;i=i+8|0;W=X;$=i;i=i+8|0;_=i;i=i+8|0;Y=_;l=i;i=i+16|0;k=l;w=i;i=i+16|0;t=w;c[l>>2]=13;j=k+8|0;c[j>>2]=0;c[j+4>>2]=0;do{if((c[(Yu(f,63960,k,0)|0)>>2]|0)==3){$=c[l>>2]|0;if(($|0)==3){_=c[j>>2]|0;$=FW(32)|0;ie($,_);c[b+192>>2]=$;break}else{c[_>>2]=$;c[Y+4>>2]=3;Qe(0,72520,Y);tc()}}else{_=FW(32)|0;ee(_);c[b+192>>2]=_;Qe(-1,63968,$);a[b+144|0]=0}}while(0);Of(k);do{if((c[(Yu(f,64e3,k,0)|0)>>2]|0)==1){Y=c[l>>2]|0;if((Y|0)==1){c[b+196>>2]=c[j>>2];break}else{c[X>>2]=Y;c[W+4>>2]=1;Qe(0,72520,W);tc()}}else{c[b+196>>2]=0}}while(0);Of(k);do{if((c[(Yu(f,64008,k,0)|0)>>2]|0)==3){W=c[l>>2]|0;if((W|0)==3){_=c[j>>2]|0;$=FW(32)|0;ie($,_);c[b+200>>2]=$;break}else{c[V>>2]=W;c[U+4>>2]=3;Qe(0,72520,U);tc()}}else{c[b+200>>2]=0}}while(0);Of(k);do{if((c[(Yu(f,64016,k,0)|0)>>2]|0)==6){U=c[l>>2]|0;if((U|0)!=6){c[L>>2]=U;c[T+4>>2]=6;Qe(0,72520,T);tc()}T=c[j>>2]|0;if((c[T+12>>2]|0)<=3){s=69;break}c[w>>2]=13;L=t+8|0;c[L>>2]=0;c[L+4>>2]=0;do{if(((c[(ut(T,0,t)|0)>>2]|0)+ -1|0)>>>0<2){T=c[w>>2]|0;if((T+ -1|0)>>>0>=2){c[Q>>2]=T;c[S+4>>2]=1;c[S+8>>2]=2;Qe(0,72608,S);tc()}if((T|0)==1){R=+(c[L>>2]|0);break}else{R=+h[L>>3];break}}else{R=0.0}}while(0);Of(t);Q=c[l>>2]|0;if((Q|0)!=6){c[P>>2]=Q;c[O+4>>2]=6;Qe(0,72520,O);tc()}do{if(((c[(ut(c[j>>2]|0,1,t)|0)>>2]|0)+ -1|0)>>>0<2){O=c[w>>2]|0;if((O+ -1|0)>>>0>=2){c[N>>2]=O;c[M+4>>2]=1;c[M+8>>2]=2;Qe(0,72608,M);tc()}if((O|0)==1){Z=+(c[L>>2]|0);break}else{Z=+h[L>>3];break}}else{Z=0.0}}while(0);Of(t);M=c[l>>2]|0;if((M|0)!=6){c[J>>2]=M;c[K+4>>2]=6;Qe(0,72520,K);tc()}do{if(((c[(ut(c[j>>2]|0,2,t)|0)>>2]|0)+ -1|0)>>>0<2){J=c[w>>2]|0;if((J+ -1|0)>>>0>=2){c[H>>2]=J;c[I+4>>2]=1;c[I+8>>2]=2;Qe(0,72608,I);tc()}if((J|0)==1){aa=+(c[L>>2]|0);break}else{aa=+h[L>>3];break}}else{aa=0.0}}while(0);Of(t);H=c[l>>2]|0;if((H|0)!=6){c[G>>2]=H;c[F+4>>2]=6;Qe(0,72520,F);tc()}do{if(((c[(ut(c[j>>2]|0,3,t)|0)>>2]|0)+ -1|0)>>>0<2){F=c[w>>2]|0;if((F+ -1|0)>>>0>=2){c[D>>2]=F;c[E+4>>2]=1;c[E+8>>2]=2;Qe(0,72608,E);tc()}if((F|0)==1){ba=+(c[L>>2]|0);break}else{ba=+h[L>>3];break}}else{ba=0.0}}while(0);Of(t);D=c[l>>2]|0;if((D|0)!=6){c[C>>2]=D;c[B+4>>2]=6;Qe(0,72520,B);tc()}B=c[j>>2]|0;if((c[B+12>>2]|0)!=6){$=FW(40)|0;c[$>>2]=55200;h[$+8>>3]=R;h[$+16>>3]=Z;h[$+24>>3]=aa;h[$+32>>3]=ba;c[b+204>>2]=$;break}do{if(((c[(ut(B,4,t)|0)>>2]|0)+ -1|0)>>>0<2){B=c[w>>2]|0;if((B+ -1|0)>>>0>=2){c[z>>2]=B;c[A+4>>2]=1;c[A+8>>2]=2;Qe(0,72608,A);tc()}if((B|0)==1){ca=+(c[L>>2]|0);break}else{ca=+h[L>>3];break}}else{ca=0.0}}while(0);Of(t);z=c[l>>2]|0;if((z|0)!=6){c[x>>2]=z;c[y+4>>2]=6;Qe(0,72520,y);tc()}do{if(((c[(ut(c[j>>2]|0,5,t)|0)>>2]|0)+ -1|0)>>>0<2){w=c[w>>2]|0;if((w+ -1|0)>>>0>=2){c[u>>2]=w;c[v+4>>2]=1;c[v+8>>2]=2;Qe(0,72608,v);tc()}if((w|0)==1){da=+(c[L>>2]|0);break}else{da=+h[L>>3];break}}else{da=0.0}}while(0);Of(t);$=FW(56)|0;h[$+8>>3]=R;h[$+16>>3]=Z;h[$+24>>3]=aa;h[$+32>>3]=ba;c[$>>2]=55216;h[$+40>>3]=ca;h[$+48>>3]=da;c[b+204>>2]=$}else{s=69}}while(0);if((s|0)==69){c[b+204>>2]=0}Of(k);do{if((c[(Yu(f,64024,k,0)|0)>>2]|0)==4){s=FW(32)|0;t=c[l>>2]|0;if((t|0)!=4){c[r>>2]=t;c[q+4>>2]=4;Qe(0,72520,q);tc()}fe(s,c[j>>2]|0);do{if((te(s,63944)|0)==0){c[b+208>>2]=0}else{if((te(s,64032)|0)==0){c[b+208>>2]=1;break}q=b+208|0;if((te(s,64048)|0)==0){c[q>>2]=2;break}else{c[q>>2]=0;break}}}while(0);if((s|0)==0){break}ke(s);HW(s)}else{c[b+208>>2]=0}}while(0);Of(k);do{if((c[(Yu(f,64072,k,0)|0)>>2]|0)==7){q=FW(16)|0;r=c[l>>2]|0;if((r|0)==7){or(q,c[j>>2]|0);c[b+212>>2]=q;break}else{c[p>>2]=r;c[o+4>>2]=7;Qe(0,72520,o);tc()}}else{c[b+212>>2]=0}}while(0);Of(k);do{if((c[(Yu(f,64080,k,0)|0)>>2]|0)==6){o=c[l>>2]|0;if((o|0)==6){c[b+216>>2]=nr(c[j>>2]|0,c[b+28>>2]|0)|0;break}else{c[n>>2]=o;c[m+4>>2]=6;Qe(0,72520,m);tc()}}else{c[b+216>>2]=0}}while(0);Of(k);if((c[(Yu(f,64088,k,0)|0)>>2]|0)!=4){c[b+220>>2]=5;Of(k);i=e;return}f=FW(32)|0;l=c[l>>2]|0;if((l|0)!=4){c[d>>2]=l;c[g+4>>2]=4;Qe(0,72520,g);tc()}fe(f,c[j>>2]|0);c[b+220>>2]=mr(f)|0;if((f|0)==0){Of(k);i=e;return}ke(f);HW(f);Of(k);i=e;return}function Zr(a){a=a|0;var b=0;b=i;_r(a);HW(a);i=b;return}function _r(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=63928;d=c[a+192>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+200>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+204>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+212>>2]|0;if((d|0)!=0){HW(d)}d=c[a+216>>2]|0;if((d|0)==0){Or(a);i=b;return}HW(d);Or(a);i=b;return}function $r(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=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,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.0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0.0,ma=0.0,na=0.0;d=i;j=i;i=i+16|0;k=j;m=i;i=i+8|0;o=m;r=i;i=i+16|0;q=r;s=i;i=i+8|0;t=s;u=i;i=i+8|0;v=u;w=i;i=i+16|0;x=w;y=i;i=i+8|0;z=y;A=i;i=i+8|0;B=A;D=i;i=i+16|0;C=D;E=i;i=i+16|0;F=E;H=i;i=i+8|0;G=H;J=i;i=i+8|0;K=J;M=i;i=i+8|0;O=M;Q=i;i=i+8|0;P=Q;R=i;i=i+8|0;S=R;V=i;i=i+16|0;U=V;Y=i;i=i+8|0;X=Y;_=i;i=i+16|0;Z=_;aa=i;i=i+8|0;ba=aa;da=i;i=i+16|0;ea=da;fa=i;i=i+8|0;ga=fa;ia=i;i=i+16|0;ha=ia;ka=i;i=i+8|0;$=ka;p=i;i=i+16|0;g=p;W=i;i=i+16|0;T=W;N=i;i=i+16|0;L=N;n=i;i=i+16|0;e=n;c[p>>2]=13;l=g+8|0;c[l>>2]=0;c[l+4>>2]=0;do{if((c[(Yu(f,64128,g,0)|0)>>2]|0)==6){ja=c[p>>2]|0;if((ja|0)!=6){c[ka>>2]=ja;c[$+4>>2]=6;Qe(0,72520,$);tc()}ja=c[l>>2]|0;if((c[ja+12>>2]|0)!=4){I=36;break}c[W>>2]=13;$=T+8|0;c[$>>2]=0;c[$+4>>2]=0;do{if(((c[(ut(ja,0,T)|0)>>2]|0)+ -1|0)>>>0<2){ja=c[W>>2]|0;if((ja+ -1|0)>>>0>=2){c[ia>>2]=ja;c[ha+4>>2]=1;c[ha+8>>2]=2;Qe(0,72608,ha);tc()}if((ja|0)==1){ca=+(c[$>>2]|0);break}else{ca=+h[$>>3];break}}else{ca=0.0}}while(0);Of(T);ha=c[p>>2]|0;if((ha|0)!=6){c[fa>>2]=ha;c[ga+4>>2]=6;Qe(0,72520,ga);tc()}do{if(((c[(ut(c[l>>2]|0,1,T)|0)>>2]|0)+ -1|0)>>>0<2){fa=c[W>>2]|0;if((fa+ -1|0)>>>0>=2){c[da>>2]=fa;c[ea+4>>2]=1;c[ea+8>>2]=2;Qe(0,72608,ea);tc()}if((fa|0)==1){la=+(c[$>>2]|0);break}else{la=+h[$>>3];break}}else{la=0.0}}while(0);Of(T);da=c[p>>2]|0;if((da|0)!=6){c[aa>>2]=da;c[ba+4>>2]=6;Qe(0,72520,ba);tc()}do{if(((c[(ut(c[l>>2]|0,2,T)|0)>>2]|0)+ -1|0)>>>0<2){aa=c[W>>2]|0;if((aa+ -1|0)>>>0>=2){c[_>>2]=aa;c[Z+4>>2]=1;c[Z+8>>2]=2;Qe(0,72608,Z);tc()}if((aa|0)==1){ma=+(c[$>>2]|0);break}else{ma=+h[$>>3];break}}else{ma=0.0}}while(0);Of(T);Z=c[p>>2]|0;if((Z|0)!=6){c[Y>>2]=Z;c[X+4>>2]=6;Qe(0,72520,X);tc()}do{if(((c[(ut(c[l>>2]|0,3,T)|0)>>2]|0)+ -1|0)>>>0<2){W=c[W>>2]|0;if((W+ -1|0)>>>0>=2){c[V>>2]=W;c[U+4>>2]=1;c[U+8>>2]=2;Qe(0,72608,U);tc()}if((W|0)==1){na=+(c[$>>2]|0);break}else{na=+h[$>>3];break}}else{na=0.0}}while(0);Of(T);ka=FW(16)|0;h[ka>>3]=ca;h[ka+8>>3]=la;c[b+192>>2]=ka;ka=FW(16)|0;h[ka>>3]=ma;h[ka+8>>3]=na;c[b+196>>2]=ka}else{I=36}}while(0);if((I|0)==36){ka=FW(16)|0;bX(ka|0,0,16)|0;c[b+192>>2]=ka;ka=FW(16)|0;bX(ka|0,0,16)|0;c[b+196>>2]=ka}Of(g);do{if((c[(Yu(f,64088,g,0)|0)>>2]|0)==6){T=c[p>>2]|0;if((T|0)!=6){c[R>>2]=T;c[S+4>>2]=6;Qe(0,72520,S);tc()}S=c[l>>2]|0;if((c[S+12>>2]|0)!=2){I=54;break}c[N>>2]=13;R=L+8|0;c[R>>2]=0;c[R+4>>2]=0;do{if((c[(ut(S,0,L)|0)>>2]|0)==3){S=c[N>>2]|0;if((S|0)==3){c[b+200>>2]=mr(c[R>>2]|0)|0;break}else{c[Q>>2]=S;c[P+4>>2]=3;Qe(0,72520,P);tc()}}else{c[b+200>>2]=5}}while(0);Of(L);P=c[p>>2]|0;if((P|0)!=6){c[M>>2]=P;c[O+4>>2]=6;Qe(0,72520,O);tc()}do{if((c[(ut(c[l>>2]|0,1,L)|0)>>2]|0)==3){M=c[N>>2]|0;if((M|0)==3){c[b+204>>2]=mr(c[R>>2]|0)|0;break}else{c[J>>2]=M;c[K+4>>2]=3;Qe(0,72520,K);tc()}}else{c[b+204>>2]=5}}while(0);Of(L)}else{I=54}}while(0);if((I|0)==54){c[b+204>>2]=5;c[b+200>>2]=5}Of(g);do{if((c[(Yu(f,64136,g,0)|0)>>2]|0)==6){I=FW(40)|0;J=c[p>>2]|0;if((J|0)==6){vr(I,c[l>>2]|0,0);c[b+208>>2]=I;break}else{c[H>>2]=J;c[G+4>>2]=6;Qe(0,72520,G);tc()}}else{c[b+208>>2]=0}}while(0);Of(g);if(((c[(Yu(f,64144,g,0)|0)>>2]|0)+ -1|0)>>>0<2){G=c[p>>2]|0;if((G+ -1|0)>>>0>=2){c[E>>2]=G;c[F+4>>2]=1;c[F+8>>2]=2;Qe(0,72608,F);tc()}if((G|0)==1){ca=+(c[l>>2]|0)}else{ca=+h[l>>3]}h[b+216>>3]=ca}else{h[b+216>>3]=0.0}Of(g);do{if(((c[(Yu(f,64152,g,0)|0)>>2]|0)+ -1|0)>>>0<2){E=c[p>>2]|0;if((E+ -1|0)>>>0>=2){c[D>>2]=E;c[C+4>>2]=1;c[C+8>>2]=2;Qe(0,72608,C);tc()}if((E|0)==1){ca=+(c[l>>2]|0)}else{ca=+h[l>>3]}C=b+224|0;h[C>>3]=ca;if(ca>=0.0){break}h[C>>3]=0.0}else{h[b+224>>3]=0.0}}while(0);Of(g);do{if((c[(Yu(f,64160,g,0)|0)>>2]|0)==0){C=c[p>>2]|0;if((C|0)==0){a[b+232|0]=a[l]&1;break}else{c[A>>2]=C;c[B+4>>2]=0;Qe(0,72520,B);tc()}}else{a[b+232|0]=0}}while(0);Of(g);do{if((c[(Yu(f,64024,g,0)|0)>>2]|0)==4){A=FW(32)|0;B=c[p>>2]|0;if((B|0)!=4){c[y>>2]=B;c[z+4>>2]=4;Qe(0,72520,z);tc()}fe(A,c[l>>2]|0);do{if((te(A,64168)|0)==0){c[b+236>>2]=0}else{y=b+236|0;if((te(A,64184)|0)==0){c[y>>2]=1;break}else{c[y>>2]=0;break}}}while(0);if((A|0)==0){break}ke(A);HW(A)}else{c[b+236>>2]=0}}while(0);Of(g);do{if(((c[(Yu(f,64200,g,0)|0)>>2]|0)+ -1|0)>>>0<2){y=c[p>>2]|0;if((y+ -1|0)>>>0>=2){c[w>>2]=y;c[x+4>>2]=1;c[x+8>>2]=2;Qe(0,72608,x);tc()}if((y|0)==1){ca=+(c[l>>2]|0)}else{ca=+h[l>>3]}w=b+240|0;h[w>>3]=ca;if(ca>=0.0){break}h[w>>3]=0.0}else{h[b+240>>3]=0.0}}while(0);Of(g);do{if((c[(Yu(f,64208,g,0)|0)>>2]|0)==4){w=FW(32)|0;x=c[p>>2]|0;if((x|0)!=4){c[u>>2]=x;c[v+4>>2]=4;Qe(0,72520,v);tc()}fe(w,c[l>>2]|0);do{if((te(w,64216)|0)==0){c[b+248>>2]=0}else{u=b+248|0;if((te(w,64224)|0)==0){c[u>>2]=1;break}else{c[u>>2]=0;break}}}while(0);if((w|0)==0){break}ke(w);HW(w)}else{c[b+248>>2]=0}}while(0);Of(g);Yu(f,64232,g,0)|0;c[b+252>>2]=0;Of(g);do{if((c[(Yu(f,64240,g,0)|0)>>2]|0)==6){f=c[p>>2]|0;if((f|0)!=6){c[s>>2]=f;c[t+4>>2]=6;Qe(0,72520,t);tc()}s=c[l>>2]|0;if((c[s+12>>2]|0)!=2){break}c[n>>2]=13;f=e+8|0;c[f>>2]=0;c[f+4>>2]=0;if(((c[(ut(s,0,e)|0)>>2]|0)+ -1|0)>>>0<2){s=c[n>>2]|0;if((s+ -1|0)>>>0>=2){c[r>>2]=s;c[q+4>>2]=1;c[q+8>>2]=2;Qe(0,72608,q);tc()}if((s|0)==1){ca=+(c[f>>2]|0)}else{ca=+h[f>>3]}h[b+256>>3]=ca}else{h[b+256>>3]=0.0}Of(e);p=c[p>>2]|0;if((p|0)!=6){c[m>>2]=p;c[o+4>>2]=6;Qe(0,72520,o);tc()}if(((c[(ut(c[l>>2]|0,1,e)|0)>>2]|0)+ -1|0)>>>0<2){l=c[n>>2]|0;if((l+ -1|0)>>>0>=2){c[j>>2]=l;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,72608,k);tc()}if((l|0)==1){ca=+(c[f>>2]|0)}else{ca=+h[f>>3]}h[b+264>>3]=ca}else{h[b+264>>3]=0.0}Of(e);Of(g);i=d;return}}while(0);bX(b+256|0,0,16)|0;Of(g);i=d;return}function as(a){a=a|0;var b=0;b=i;bs(a);HW(a);i=b;return}function bs(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=64104;d=c[a+192>>2]|0;if((d|0)!=0){HW(d)}d=c[a+196>>2]|0;if((d|0)!=0){HW(d)}d=c[a+208>>2]|0;if((d|0)!=0){HW(d)}d=c[a+252>>2]|0;if((d|0)==0){Or(a);i=b;return}Su(d);HW(d);Or(a);i=b;return}function cs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0;f=i;q=i;i=i+16|0;r=q;o=i;i=i+16|0;p=o;m=i;i=i+8|0;u=m;w=i;i=i+8|0;x=w;B=i;i=i+16|0;D=B;F=i;i=i+32|0;C=F;E=i;i=i+40|0;G=E;v=i;i=i+16|0;e=v;s=i;i=i+32|0;l=s;t=i;i=i+16|0;j=t;n=i;i=i+16|0;g=n;c[v>>2]=13;v=e+8|0;c[v>>2]=0;c[v+4>>2]=0;v=c[a+48>>2]|0;if((v&2|0)!=0){i=f;return}do{if(d){if((v&4|0)!=0){break}i=f;return}else{if((v&32|0)==0){break}i=f;return}}while(0);d=c[a+88>>2]|0;do{if((d|0)!=0){v=a+96|0;if((c[v>>2]|0)!=9){break}if(GF(d,v)|0){break}i=f;return}}while(0);v=a+28|0;d=c[v>>2]|0;A=+h[d+24>>3];if(+h[d+8>>3]==A){y=c[a+128>>2]|0;if((y|0)==0){J=1.0}else{J=+wd[c[(c[y>>2]|0)+12>>2]&1](y);d=c[v>>2]|0;A=+h[d+24>>3]}h[d+24>>3]=J+A}d=a+64|0;do{if((c[d>>2]|0)==5){A=+h[a+160>>3];y=FW(32)|0;ee(y);z=a+124|0;c[z>>2]=y;ne(y,56352,-1)|0;y=a+132|0;H=c[y>>2]|0;do{if((H|0)!=0){I=c[H+32>>2]|0;if((I|0)==3){I=c[z>>2]|0;K=+h[H+8>>3];J=+h[H+16>>3];G=F;h[k>>3]=+h[H>>3];c[G>>2]=c[k>>2];c[G+4>>2]=c[k+4>>2];H=C+8|0;h[k>>3]=K;c[H>>2]=c[k>>2];c[H+4>>2]=c[k+4>>2];H=C+16|0;h[k>>3]=J;c[H>>2]=c[k>>2];c[H+4>>2]=c[k+4>>2];c[C+24>>2]=55808;pe(I,55768,C)|0;break}else if((I|0)==1){I=c[z>>2]|0;G=B;h[k>>3]=+h[H>>3];c[G>>2]=c[k>>2];c[G+4>>2]=c[k+4>>2];c[D+8>>2]=71;pe(I,55816,D)|0;break}else if((I|0)==4){I=c[z>>2]|0;L=+h[H+8>>3];J=+h[H+16>>3];K=+h[H+24>>3];F=E;h[k>>3]=+h[H>>3];c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];H=G+8|0;h[k>>3]=L;c[H>>2]=c[k>>2];c[H+4>>2]=c[k+4>>2];H=G+16|0;h[k>>3]=J;c[H>>2]=c[k>>2];c[H+4>>2]=c[k+4>>2];H=G+24|0;h[k>>3]=K;c[H>>2]=c[k>>2];c[H+4>>2]=c[k+4>>2];c[G+32>>2]=75;pe(I,55728,G)|0;break}else{break}}}while(0);B=a+128|0;C=c[B>>2]|0;if((C|0)!=0){I=(jd[c[(c[C>>2]|0)+24>>2]&511](C)|0)==1;C=c[z>>2]|0;if(I){ne(C,64248,-1)|0;C=c[B>>2]|0;C=jd[c[(c[C>>2]|0)+16>>2]&511](C)|0;D=c[B>>2]|0;D=jd[c[(c[D>>2]|0)+20>>2]&511](D)|0;F=c[z>>2]|0;if((C|0)>0){E=0;while(1){I=w;h[k>>3]=+h[D+(E<<3)>>3];c[I>>2]=c[k>>2];c[I+4>>2]=c[k+4>>2];pe(F,64256,x)|0;E=E+1|0;F=c[z>>2]|0;if((E|0)<(C|0)){}else{break}}}ne(F,64272,-1)|0}else{ne(C,64280,-1)|0}I=c[z>>2]|0;H=c[B>>2]|0;L=+wd[c[(c[H>>2]|0)+12>>2]&1](H);H=m;h[k>>3]=L;c[H>>2]=c[k>>2];c[H+4>>2]=c[k+4>>2];pe(I,64288,u)|0}I=c[z>>2]|0;H=c[a+192>>2]|0;G=c[v>>2]|0;L=+h[H+8>>3]- +h[G+8>>3];F=o;h[k>>3]=+h[H>>3]- +h[G>>3];c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];F=p+8|0;h[k>>3]=L;c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];pe(I,55832,p)|0;I=c[z>>2]|0;F=c[a+196>>2]|0;G=c[v>>2]|0;L=+h[F+8>>3]- +h[G+8>>3];H=q;h[k>>3]=+h[F>>3]- +h[G>>3];c[H>>2]=c[k>>2];c[H+4>>2]=c[k+4>>2];H=r+8|0;h[k>>3]=L;c[H>>2]=c[k>>2];c[H+4>>2]=c[k+4>>2];pe(I,64304,r)|0;ne(c[z>>2]|0,55928,-1)|0;ne(c[z>>2]|0,63808,-1)|0;bX(s|0,0,16)|0;I=c[v>>2]|0;h[l+16>>3]=+h[I+16>>3]- +h[I>>3];h[l+24>>3]=+h[I+24>>3]- +h[I+8>>3];if(A==1.0){Er(a,l,0,0,d)}else{c[t>>2]=13;m=j+8|0;c[m>>2]=0;c[m+4>>2]=0;c[n>>2]=13;m=g+8|0;c[m>>2]=0;c[m+4>>2]=0;Er(a,l,1,0,j);m=c[z>>2]|0;if((m|0)!=0){ke(m);HW(m)}I=FW(32)|0;fe(I,63816);c[z>>2]=I;Fr(a,63832,j,63840,A,0,g);Er(a,l,0,g,d)}g=c[z>>2]|0;if((g|0)==0){break}ke(g);HW(g)}else{y=a+132|0}}while(0);Nf(d,c[a+112>>2]|0,e,0)|0;I=c[v>>2]|0;Tx(b,e,0,c[y>>2]|0,+h[I>>3],+h[I+8>>3],+h[I+16>>3],+h[I+24>>3]);Of(e);i=f;return}function ds(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;m=i;i=i+8|0;h=i;i=i+8|0;j=h;n=i;i=i+8|0;o=n;k=i;i=i+16|0;e=k;l=i;i=i+32|0;c[k>>2]=13;d=e+8|0;c[d>>2]=0;c[d+4>>2]=0;if((c[(Yu(f,55944,e,0)|0)>>2]|0)==4){p=c[k>>2]|0;if((p|0)!=4){c[n>>2]=p;c[o+4>>2]=4;Qe(0,72520,o);tc()}fe(l,c[d>>2]|0);do{if((te(l,64352)|0)==0){c[b+24>>2]=9}else{if((te(l,64368)|0)==0){c[b+24>>2]=10;break}if((te(l,64384)|0)==0){c[b+24>>2]=11;break}if((te(l,64400)|0)!=0){break}c[b+24>>2]=12}}while(0);ke(l)}Of(e);if((c[(Yu(f,63904,e,0)|0)>>2]|0)!=6){Qe(-1,64416,m);c[b+192>>2]=0;a[b+144|0]=0;Of(e);i=g;return}f=FW(8)|0;k=c[k>>2]|0;if((k|0)!=6){c[h>>2]=k;c[j+4>>2]=6;Qe(0,72520,j);tc()}qr(f,c[d>>2]|0,c[b+28>>2]|0);c[b+192>>2]=f;Of(e);i=g;return}function es(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;d=i;c[a>>2]=64336;b=c[a+192>>2]|0;if((b|0)==0){Or(a);HW(a);i=d;return}h=c[b>>2]|0;if((h|0)!=0){e=b+4|0;f=c[e>>2]|0;if((f|0)>0){g=0;do{j=c[h+(g<<2)>>2]|0;if((j|0)!=0){HW(j);h=c[b>>2]|0;f=c[e>>2]|0}g=g+1|0;}while((g|0)<(f|0))}Fe(h)}HW(b);Or(a);HW(a);i=d;return}function fs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;d=i;c[a>>2]=64336;b=c[a+192>>2]|0;if((b|0)==0){Or(a);i=d;return}h=c[b>>2]|0;if((h|0)!=0){e=b+4|0;f=c[e>>2]|0;if((f|0)>0){g=0;do{j=c[h+(g<<2)>>2]|0;if((j|0)!=0){HW(j);h=c[b>>2]|0;f=c[e>>2]|0}g=g+1|0;}while((g|0)<(f|0))}Fe(h)}HW(b);Or(a);i=d;return}function gs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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.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.0,ma=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0;f=i;y=i;i=i+48|0;w=y;E=i;i=i+16|0;u=E;C=i;i=i+48|0;D=C;A=i;i=i+16|0;B=A;da=i;i=i+16|0;ea=da;ba=i;i=i+32|0;ca=ba;$=i;i=i+40|0;aa=$;o=i;i=i+16|0;n=o;q=i;i=i+16|0;p=q;P=i;i=i+16|0;O=P;R=i;i=i+32|0;Q=R;H=i;i=i+40|0;M=H;ha=i;i=i+16|0;ia=ha;Y=i;i=i+32|0;Z=Y;_=i;i=i+40|0;fa=_;r=i;i=i+16|0;F=r;x=i;i=i+16|0;z=x;L=i;i=i+16|0;K=L;S=i;i=i+32|0;I=S;J=i;i=i+40|0;N=J;T=i;i=i+16|0;U=T;X=i;i=i+32|0;ga=X;V=i;i=i+40|0;W=V;ja=i;i=i+16|0;e=ja;v=i;i=i+16|0;m=v;t=i;i=i+16|0;l=t;s=i;i=i+32|0;j=s;c[ja>>2]=13;ja=e+8|0;c[ja>>2]=0;c[ja+4>>2]=0;ja=c[a+48>>2]|0;if((ja&2|0)!=0){i=f;return}do{if(d){if((ja&4|0)!=0){break}i=f;return}else{if((ja&32|0)==0){break}i=f;return}}while(0);d=c[a+88>>2]|0;do{if((d|0)!=0){ja=a+96|0;if((c[ja>>2]|0)!=9){break}if(GF(d,ja)|0){break}i=f;return}}while(0);d=a+64|0;ka=a+24|0;do{if((c[d>>2]|0)==5){g=11}else{if((c[ka>>2]|0)==9){g=11;break}n=a+132|0}}while(0);do{if((g|0)==11){G=+h[a+160>>3];ja=FW(32)|0;ee(ja);g=a+124|0;c[g>>2]=ja;ka=c[ka>>2]|0;if((ka|0)==12){j=a+132|0;m=c[j>>2]|0;do{if((m|0)!=0){l=c[m+32>>2]|0;if((l|0)==1){ka=ha;h[k>>3]=+h[m>>3];c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];c[ia+8>>2]=71;pe(ja,55816,ia)|0}else if((l|0)==3){ra=+h[m+8>>3];sa=+h[m+16>>3];ka=Y;h[k>>3]=+h[m>>3];c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=Z+8|0;h[k>>3]=ra;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=Z+16|0;h[k>>3]=sa;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];c[Z+24>>2]=55808;pe(ja,55768,Z)|0}else if((l|0)==4){qa=+h[m+8>>3];ra=+h[m+16>>3];sa=+h[m+24>>3];ka=_;h[k>>3]=+h[m>>3];c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=fa+8|0;h[k>>3]=qa;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=fa+16|0;h[k>>3]=ra;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=fa+24|0;h[k>>3]=sa;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];c[fa+32>>2]=75;pe(ja,55728,fa)|0}m=c[j>>2]|0;l=c[m+32>>2]|0;if((l|0)==3){ka=c[g>>2]|0;ra=+h[m+8>>3];sa=+h[m+16>>3];ja=R;h[k>>3]=+h[m>>3];c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=Q+8|0;h[k>>3]=ra;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=Q+16|0;h[k>>3]=sa;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];c[Q+24>>2]=55800;pe(ka,55768,Q)|0;break}else if((l|0)==1){ka=c[g>>2]|0;ja=P;h[k>>3]=+h[m>>3];c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];c[O+8>>2]=103;pe(ka,55816,O)|0;break}else if((l|0)==4){ka=c[g>>2]|0;qa=+h[m+8>>3];ra=+h[m+16>>3];sa=+h[m+24>>3];ja=H;h[k>>3]=+h[m>>3];c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=M+8|0;h[k>>3]=qa;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=M+16|0;h[k>>3]=ra;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=M+24|0;h[k>>3]=sa;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];c[M+32>>2]=107;pe(ka,55728,M)|0;break}else{break}}}while(0);m=a+192|0;t=c[m>>2]|0;r=c[t+4>>2]|0;if((r|0)<=0){n=j;break}l=a+28|0;s=0;while(1){t=c[(c[t>>2]|0)+(s<<2)>>2]|0;G=+h[t>>3];if((r|0)>(s|0)){ma=+h[t+8>>3];la=+h[t+16>>3];na=+h[t+40>>3]}else{ma=0.0;la=0.0;na=0.0}t=c[l>>2]|0;ra=G- +h[t>>3];sa=(ma-na)*.5+(na- +h[t+8>>3]);ne(c[g>>2]|0,64456,-1)|0;t=c[g>>2]|0;r=q;h[k>>3]=ra;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=p+8|0;h[k>>3]=sa;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];pe(t,55832,p)|0;t=c[g>>2]|0;r=o;h[k>>3]=la-G+ra;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=n+8|0;h[k>>3]=sa;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];pe(t,64304,n)|0;ne(c[g>>2]|0,55928,-1)|0;s=s+1|0;t=c[m>>2]|0;r=c[t+4>>2]|0;if((s|0)>=(r|0)){n=j;break}}}else if((ka|0)==10){n=a+132|0;j=c[n>>2]|0;do{if((j|0)!=0){l=c[j+32>>2]|0;if((l|0)==1){ka=T;h[k>>3]=+h[j>>3];c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];c[U+8>>2]=71;pe(ja,55816,U)|0}else if((l|0)==4){qa=+h[j+8>>3];ra=+h[j+16>>3];sa=+h[j+24>>3];ka=V;h[k>>3]=+h[j>>3];c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=W+8|0;h[k>>3]=qa;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=W+16|0;h[k>>3]=ra;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=W+24|0;h[k>>3]=sa;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];c[W+32>>2]=75;pe(ja,55728,W)|0}else if((l|0)==3){ra=+h[j+8>>3];sa=+h[j+16>>3];ka=X;h[k>>3]=+h[j>>3];c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=ga+8|0;h[k>>3]=ra;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];ka=ga+16|0;h[k>>3]=sa;c[ka>>2]=c[k>>2];c[ka+4>>2]=c[k+4>>2];c[ga+24>>2]=55808;pe(ja,55768,ga)|0}l=c[n>>2]|0;j=c[l+32>>2]|0;if((j|0)==1){ka=c[g>>2]|0;ja=L;h[k>>3]=+h[l>>3];c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];c[K+8>>2]=103;pe(ka,55816,K)|0;break}else if((j|0)==4){ka=c[g>>2]|0;qa=+h[l+8>>3];ra=+h[l+16>>3];sa=+h[l+24>>3];ja=J;h[k>>3]=+h[l>>3];c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=N+8|0;h[k>>3]=qa;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=N+16|0;h[k>>3]=ra;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=N+24|0;h[k>>3]=sa;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];c[N+32>>2]=107;pe(ka,55728,N)|0;break}else if((j|0)==3){ka=c[g>>2]|0;ra=+h[l+8>>3];sa=+h[l+16>>3];ja=S;h[k>>3]=+h[l>>3];c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=I+8|0;h[k>>3]=ra;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=I+16|0;h[k>>3]=sa;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];c[I+24>>2]=55800;pe(ka,55768,I)|0;break}else{break}}}while(0);j=a+192|0;p=c[j>>2]|0;m=c[p+4>>2]|0;if((m|0)<=0){break}l=a+28|0;o=0;do{p=c[(c[p>>2]|0)+(o<<2)>>2]|0;G=+h[p>>3];if((m|0)>(o|0)){la=+h[p+16>>3];ma=+h[p+40>>3]}else{la=0.0;ma=0.0}p=c[l>>2]|0;ra=G- +h[p>>3];sa=ma- +h[p+8>>3];ne(c[g>>2]|0,64456,-1)|0;p=c[g>>2]|0;m=x;h[k>>3]=ra;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];m=z+8|0;h[k>>3]=sa;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];pe(p,55832,z)|0;p=c[g>>2]|0;m=r;h[k>>3]=la-G+ra;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];m=F+8|0;h[k>>3]=sa;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];pe(p,64304,F)|0;ne(c[g>>2]|0,55928,-1)|0;o=o+1|0;p=c[j>>2]|0;m=c[p+4>>2]|0;}while((o|0)<(m|0))}else{Of(d);n=a+132|0;p=c[n>>2]|0;do{if((p|0)!=0){o=c[p+32>>2]|0;if((o|0)==4){ka=c[g>>2]|0;qa=+h[p+8>>3];ra=+h[p+16>>3];sa=+h[p+24>>3];ja=$;h[k>>3]=+h[p>>3];c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=aa+8|0;h[k>>3]=qa;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=aa+16|0;h[k>>3]=ra;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=aa+24|0;h[k>>3]=sa;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];c[aa+32>>2]=107;pe(ka,55728,aa)|0;break}else if((o|0)==3){ka=c[g>>2]|0;ra=+h[p+8>>3];sa=+h[p+16>>3];ja=ba;h[k>>3]=+h[p>>3];c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=ca+8|0;h[k>>3]=ra;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];ja=ca+16|0;h[k>>3]=sa;c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];c[ca+24>>2]=55800;pe(ka,55768,ca)|0;break}else if((o|0)==1){ka=c[g>>2]|0;ja=da;h[k>>3]=+h[p>>3];c[ja>>2]=c[k>>2];c[ja+4>>2]=c[k+4>>2];c[ea+8>>2]=103;pe(ka,55816,ea)|0;break}else{break}}}while(0);o=a+192|0;q=c[o>>2]|0;r=c[q+4>>2]|0;if((r|0)>0){p=0;do{q=c[(c[q>>2]|0)+(p<<2)>>2]|0;la=+h[q>>3];if((r|0)>(p|0)){qa=+h[q+24>>3];ma=+h[q+16>>3];na=+h[q+8>>3];pa=+h[q+56>>3];oa=+h[q+48>>3];ra=+h[q+40>>3];sa=+h[q+32>>3]}else{qa=0.0;ma=0.0;na=0.0;pa=0.0;oa=0.0;ra=0.0;sa=0.0}q=~~(na-ra);ta=+(((q|0)>-1?q:0-q|0)|0)*.25;q=c[g>>2]|0;r=A;h[k>>3]=sa;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=B+8|0;h[k>>3]=ra;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];pe(q,55832,B)|0;q=c[g>>2]|0;r=C;h[k>>3]=sa-ta;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=D+8|0;h[k>>3]=ra+ta;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=D+16|0;h[k>>3]=la-ta;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=D+24|0;h[k>>3]=na-ta;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=D+32|0;h[k>>3]=la;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=D+40|0;h[k>>3]=na;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];pe(q,55856,D)|0;q=c[g>>2]|0;r=E;h[k>>3]=ma;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=u+8|0;h[k>>3]=qa;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];pe(q,64304,u)|0;q=c[g>>2]|0;r=y;h[k>>3]=ma+ta;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=w+8|0;h[k>>3]=qa-ta;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=w+16|0;h[k>>3]=oa+ta;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=w+24|0;h[k>>3]=pa+ta;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=w+32|0;h[k>>3]=oa;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];r=w+40|0;h[k>>3]=pa;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];pe(q,55856,w)|0;ne(c[g>>2]|0,55912,-1)|0;p=p+1|0;q=c[o>>2]|0;r=c[q+4>>2]|0;}while((p|0)<(r|0))}c[v>>2]=13;o=m+8|0;c[o>>2]=0;c[o+4>>2]=0;c[t>>2]=13;o=l+8|0;c[o>>2]=0;c[o+4>>2]=0;o=c[a+28>>2]|0;h[s>>3]=+h[o>>3];h[j+8>>3]=+h[o+8>>3];h[j+16>>3]=+h[o+16>>3];h[j+24>>3]=+h[o+24>>3];Er(a,j,1,0,m);o=c[g>>2]|0;if((o|0)!=0){ke(o);HW(o)}ka=FW(32)|0;fe(ka,63816);c[g>>2]=ka;Fr(a,63832,m,63840,1.0,64472,l);if(G==1.0){Er(a,j,0,l,d)}else{Er(a,j,1,l,m);o=c[g>>2]|0;if((o|0)!=0){ke(o);HW(o)}ka=FW(32)|0;fe(ka,63816);c[g>>2]=ka;Fr(a,63832,m,63840,G,0,l);Er(a,j,0,l,d)}g=c[g>>2]|0;if((g|0)==0){break}ke(g);HW(g);break}}}while(0);Nf(d,c[a+112>>2]|0,e,0)|0;ka=c[a+28>>2]|0;Tx(b,e,0,c[n>>2]|0,+h[ka>>3],+h[ka+8>>3],+h[ka+16>>3],+h[ka+24>>3]);Of(e);i=f;return}function hs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;k=i;i=i+8|0;j=k;c[b>>2]=55512;h=b+8|0;c[h>>2]=13;c[b+16>>2]=0;c[b+20>>2]=0;c[b+64>>2]=13;c[b+72>>2]=0;c[b+76>>2]=0;c[b+96>>2]=13;c[b+104>>2]=0;c[b+108>>2]=0;m=b+145|0;do{if((c[g>>2]|0)==9){a[m]=1;m=c[g>>2]|0;if((m|0)==9){k=g+8|0;g=c[k+4>>2]|0;m=b+116|0;c[m>>2]=c[k>>2];c[m+4>>2]=g;break}else{c[k>>2]=m;c[j+4>>2]=9;Qe(0,72520,j);tc()}}else{a[m]=0}}while(0);c[b+48>>2]=0;m=b+24|0;c[m>>2]=0;Kf(h,e)|0;zr(b,d,e,f);c[b>>2]=64496;c[m>>2]=20;c[b+152>>2]=0;is(b,0,f,e);i=l;return}function is(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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;k=i;o=i;i=i+8|0;g=i;i=i+8|0;d=g;n=i;i=i+8|0;m=n;l=i;i=i+16|0;h=l;p=i;i=i+8|0;c[l>>2]=13;j=h+8|0;c[j>>2]=0;c[j+4>>2]=0;q=_t(e)|0;e=b+148|0;c[e>>2]=q;do{if((q|0)!=0){t=b+116|0;s=c[t+4>>2]|0;r=p;c[r>>2]=c[t>>2];c[r+4>>2]=s;$W(o|0,p|0,8)|0;p=Pv(q,o)|0;c[b+152>>2]=p;o=b+176|0;a[o]=0;if((p|0)==0){break}if(((c[p+8>>2]|0)+ -1|0)>>>0>=2){break}a[o]=a[(c[e>>2]|0)+20|0]&1}}while(0);t=c[b+64>>2]|0;if((t|0)==5|(t|0)==13){a[b+176|0]=1}do{if((c[(Yu(f,63888,h,0)|0)>>2]|0)==4){e=FW(32)|0;o=c[l>>2]|0;if((o|0)!=4){c[n>>2]=o;c[m+4>>2]=4;Qe(0,72520,m);tc()}fe(e,c[j>>2]|0);a:do{if((te(e,55416)|0)==0){c[b+156>>2]=0}else{if((te(e,63896)|0)==0){c[b+156>>2]=2;break}do{if((te(e,55584)|0)!=0){if((te(e,56120)|0)==0){break}c[b+156>>2]=1;break a}}while(0);c[b+156>>2]=3}}while(0);if((e|0)==0){break}ke(e);HW(e)}else{c[b+156>>2]=1}}while(0);Of(h);if((c[(Yu(f,64512,h,0)|0)>>2]|0)!=7){c[b+160>>2]=0;Of(h);t=55424;Yu(f,t,h,0)|0;t=b+164|0;c[t>>2]=0;Of(h);t=64520;Yu(f,t,h,0)|0;t=b+168|0;c[t>>2]=0;Of(h);t=56080;Yu(f,t,h,0)|0;t=b+172|0;c[t>>2]=0;Of(h);i=k;return}m=FW(32)|0;l=c[l>>2]|0;if((l|0)!=7){c[g>>2]=l;c[d+4>>2]=7;Qe(0,72520,d);tc()}xr(m,c[j>>2]|0);c[b+160>>2]=m;Of(h);t=55424;Yu(f,t,h,0)|0;t=b+164|0;c[t>>2]=0;Of(h);t=64520;Yu(f,t,h,0)|0;t=b+168|0;c[t>>2]=0;Of(h);t=56080;Yu(f,t,h,0)|0;t=b+172|0;c[t>>2]=0;Of(h);i=k;return}function js(a){a=a|0;var b=0;b=i;ks(a);HW(a);i=b;return}function ks(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=64496;d=c[a+160>>2]|0;if((d|0)!=0){yr(d);HW(d)}d=c[a+164>>2]|0;if((d|0)!=0){Su(d);HW(d)}d=c[a+168>>2]|0;if((d|0)!=0){Su(d);HW(d)}d=c[a+172>>2]|0;if((d|0)==0){Cr(a);i=b;return}Su(d);HW(d);Cr(a);i=b;return}function ls(b,e,f,g,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=+l;m=m|0;n=n|0;var o=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.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0;w=i;J=i;i=i+8|0;I=J;x=i;i=i+8|0;H=i;i=i+8|0;t=H;F=i;i=i+8|0;G=F;o=i;i=i+8|0;q=i;i=i+8|0;v=i;i=i+8|0;r=v;s=i;i=i+8|0;b=i;i=i+8|0;u=i;i=i+8|0;A=ve(e)|0;do{if(A){z=e+24|0;if((c[z>>2]&1|0)==0){S=c[g>>2]|0;if((S|0)!=0){break}c[g>>2]=2;S=2;break}else{Qe(-1,64528,x);i=w;return}}else{S=c[g>>2]|0;z=e+24|0}}while(0);le(f)|0;x=f+24|0;y=e+28|0;e=f+28|0;M=l>0.0;P=c[p>>2]|0;R=0;T=0;O=0.0;while(1){Q=c[g>>2]|0;if((Q|0)>=(c[z>>2]|0)){D=O;break}C=c[x>>2]|0;E=c[y>>2]|0;U=d[E+Q|0]|0;if(A){U=U<<8;c[F>>2]=U;U=d[E+(Q+1)|0]|U;c[F>>2]=U;E=Q+2|0}else{if(!n){U=c[189696+(U<<2)>>2]|0}c[F>>2]=U;E=Q+1|0}c[g>>2]=E;if((U|0)==10){D=O;break}else if((U|0)==13){B=15;break}do{if(n){me(f,U&255)|0}else{K=jd[c[(c[j>>2]|0)+4>>2]&511](j)|0;if((K|0)==0){me(f,(c[F>>2]|0)>>>8&255)|0;me(f,c[F>>2]&255)|0;break}U=(xu(K,G,t,1)|0)==0;uu(K);if(U){c[J>>2]=c[F>>2];Gc(P|0,64576,I|0)|0;break}U=jd[c[c[j>>2]>>2]&511](j)|0;K=c[H>>2]|0;if(U){me(f,K>>>8&255)|0;me(f,c[H>>2]&255)|0;break}else{me(f,K&255)|0;break}}}while(0);if((c[F>>2]|0)==32){K=c[g>>2]|0;L=T?R:C;T=1}else{K=S;L=R;T=0}R=c[x>>2]|0;if((R|0)>(C|0)){h[v>>3]=0.0;xd[c[(c[j>>2]|0)+12>>2]&3](j,(c[e>>2]|0)+C|0,R-C|0,t,o,q,r,s,b,u)|0;N=O+ +h[v>>3]}else{N=O}if(M&N>l){B=37;break}S=K;R=L;T=T<<24>>24!=0;O=N}do{if((B|0)==15){if((E|0)>=(c[z>>2]|0)){D=O;break}B=c[y>>2]|0;f=a[B+E|0]|0;if(!A){if(f<<24>>24!=10){D=O;break}c[g>>2]=E+1;D=O;break}if(f<<24>>24!=0){D=O;break}if((a[B+(E+1)|0]|0)!=10){D=O;break}c[g>>2]=E+2;D=O}else if((B|0)==37){if((L|0)>0){c[g>>2]=K;re(f,L,(c[x>>2]|0)-L|0)|0;D=N;break}if((C|0)<=0){D=N;break}c[g>>2]=Q;re(f,C,(c[x>>2]|0)-C|0)|0;D=N}}while(0);do{if(M&D>l){f=c[g>>2]|0;C=c[z>>2]|0;B=(f|0)<(C|0);if(!A){a:do{if(B){A=C;do{if((a[(c[y>>2]|0)+f|0]|0)!=32){break a}f=f+1|0;c[g>>2]=f;A=c[z>>2]|0;}while((f|0)<(A|0))}else{A=C}}while(0);do{if((f|0)<(A|0)){if((a[(c[y>>2]|0)+f|0]|0)!=13){break}f=f+1|0;c[g>>2]=f;A=c[z>>2]|0}}while(0);if((f|0)>=(A|0)){break}if((a[(c[y>>2]|0)+f|0]|0)!=10){break}c[g>>2]=f+1;break}b:do{if(B){A=C;do{B=c[y>>2]|0;if((a[B+f|0]|0)!=0){break b}if((a[B+(f+1)|0]|0)!=32){break b}f=f+2|0;c[g>>2]=f;A=c[z>>2]|0;}while((f|0)<(A|0))}else{A=C}}while(0);do{if((f|0)<(A|0)){B=c[y>>2]|0;if((a[B+f|0]|0)!=0){break}if((a[B+(f+1)|0]|0)!=13){break}f=f+2|0;c[g>>2]=f;A=c[z>>2]|0}}while(0);if((f|0)>=(A|0)){break}y=c[y>>2]|0;if((a[y+f|0]|0)!=0){break}if((a[y+(f+1)|0]|0)!=10){break}c[g>>2]=f+2}}while(0);y=(k|0)!=0;if((m|0)==0&(y^1)){i=w;return}g=c[e>>2]|0;x=c[x>>2]|0;if(y){h[k>>3]=0.0}e=(m|0)!=0;if(e){c[m>>2]=0}if((x|0)<=0){i=w;return}if(y){if(e){while(1){h[v>>3]=0.0;e=xd[c[(c[j>>2]|0)+12>>2]&3](j,g,x,t,o,q,r,s,b,u)|0;if((e|0)==0){B=81;break}h[k>>3]=+h[v>>3]+ +h[k>>3];c[m>>2]=(c[m>>2]|0)+1;x=x-e|0;if((x|0)>0){g=g+e|0}else{B=81;break}}if((B|0)==81){i=w;return}}else{while(1){h[v>>3]=0.0;m=xd[c[(c[j>>2]|0)+12>>2]&3](j,g,x,t,o,q,r,s,b,u)|0;if((m|0)==0){B=81;break}h[k>>3]=+h[v>>3]+ +h[k>>3];x=x-m|0;if((x|0)>0){g=g+m|0}else{B=81;break}}if((B|0)==81){i=w;return}}}else{if(e){while(1){h[v>>3]=0.0;k=xd[c[(c[j>>2]|0)+12>>2]&3](j,g,x,t,o,q,r,s,b,u)|0;if((k|0)==0){B=81;break}c[m>>2]=(c[m>>2]|0)+1;x=x-k|0;if((x|0)>0){g=g+k|0}else{B=81;break}}if((B|0)==81){i=w;return}}else{while(1){h[v>>3]=0.0;m=xd[c[(c[j>>2]|0)+12>>2]&3](j,g,x,t,o,q,r,s,b,u)|0;if((m|0)==0){B=81;break}x=x-m|0;if((x|0)>0){g=g+m|0}else{B=81;break}}if((B|0)==81){i=w;return}}}}function ms(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;b=i;g=i;i=i+8|0;h=g;me(e,40)|0;f=d+24|0;if((c[f>>2]|0)<=0){me(e,41)|0;i=b;return}d=d+28|0;j=0;do{k=a[(c[d>>2]|0)+j|0]|0;do{if(k<<24>>24==92|k<<24>>24==41|k<<24>>24==40){me(e,92)|0;me(e,k)|0}else{if(k<<24>>24<32){c[g>>2]=k&255;pe(e,64624,h)|0;break}else{me(e,k)|0;break}}}while(0);j=j+1|0;}while((j|0)<(c[f>>2]|0));me(e,41)|0;i=b;return}function ns(b,d,e,f,g,j,l,m,n,o){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;var 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,O=0,P=0,Q=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.0,ma=0,na=0,oa=0,pa=0.0,qa=0,ra=0,sa=0.0,ta=0.0,ua=0.0,va=0.0,wa=0.0,xa=0;p=i;A=i;i=i+8|0;aa=A;$=i;i=i+16|0;_=$;da=i;i=i+8|0;ea=da;ba=i;i=i+8|0;ca=ba;ja=i;i=i+8|0;ka=ja;E=i;i=i+8|0;D=E;V=i;i=i+16|0;U=V;Y=i;i=i+8|0;Z=Y;X=i;i=i+8|0;W=X;ha=i;i=i+8|0;ia=ha;w=i;i=i+16|0;x=w;C=i;i=i+8|0;M=C;N=i;i=i+8|0;O=N;S=i;i=i+8|0;Q=S;u=i;i=i+8|0;z=i;i=i+8|0;oa=i;i=i+8|0;s=i;i=i+8|0;y=s;r=i;i=i+8|0;v=r;na=i;i=i+8|0;ma=na;fa=i;i=i+8|0;ga=fa;K=i;i=i+8|0;J=i;i=i+8|0;I=i;i=i+8|0;L=i;i=i+8|0;B=L;H=i;i=i+8|0;G=i;i=i+8|0;F=i;i=i+8|0;do{if((e|0)==0){q=0;T=37}else{q=FW(16)|0;wo(q);c[r>>2]=0;t=e+24|0;ra=c[t>>2]|0;if((ra|0)>0){P=e+28|0;qa=0;do{a:do{if((qa|0)<(ra|0)){while(1){ra=hE(a[(c[P>>2]|0)+qa|0]|0)|0;qa=c[r>>2]|0;if(!ra){break}qa=qa+1|0;c[r>>2]=qa;ra=c[t>>2]|0;if((qa|0)>=(ra|0)){break a}}ra=c[t>>2]|0}}while(0);if((qa|0)<(ra|0)){while(1){qa=qa+1|0;if((qa|0)>=(ra|0)){break}if(hE(a[(c[P>>2]|0)+qa|0]|0)|0){break}ra=c[t>>2]|0}ra=FW(32)|0;xa=c[r>>2]|0;he(ra,e,xa,qa-xa|0);yo(q,ra);c[r>>2]=qa;ra=c[t>>2]|0}}while((qa|0)<(ra|0))}c[r>>2]=2;t=q+8|0;if((c[t>>2]|0)<=2){T=37;break}qa=2;e=-1;P=-1;do{do{if((qa|0)>1){xa=(te(c[(c[q>>2]|0)+(qa<<2)>>2]|0,64640)|0)==0;ra=c[r>>2]|0;if(xa){qa=ra;e=ra+ -2|0;break}if((ra|0)<=5){qa=ra;break}xa=(te(c[(c[q>>2]|0)+(ra<<2)>>2]|0,64648)|0)==0;ra=c[r>>2]|0;qa=ra;P=xa?ra+ -6|0:P}}while(0);qa=qa+1|0;c[r>>2]=qa;}while((qa|0)<(c[t>>2]|0));ra=(e|0)>-1;do{if(ra&n){qa=c[(c[q>>2]|0)+(e<<2)>>2]|0;if((te(qa,64656)|0)==0){T=25;break}le(qa)|0;ne(qa,64656,-1)|0;u=q}else{T=25}}while(0);if((T|0)==25){if(!ra){T=37;break}u=q}qa=c[(c[u>>2]|0)+(e<<2)>>2]|0;do{if((c[qa+24>>2]|0)>0){qa=c[qa+28>>2]|0;if((a[qa]|0)!=47){T=36;break}if((f|0)!=0){z=wy(f,qa+1|0)|0;if((z|0)!=0){A=0;break}}if(!n){Qe(-1,64688,oa);z=0;A=0;break}oa=FW(24)|0;ra=b+112|0;Qu(oa,c[ra>>2]|0);z=FW(3544)|0;ra=c[ra>>2]|0;c[na>>2]=0;c[ma+4>>2]=0;xa=FW(32)|0;fe(xa,64672);$W(A|0,na|0,8)|0;by(z,ra,64664,aa,xa,1,oa);if((oa|0)!=0){Su(oa);HW(oa)}a[b+177|0]=1;A=1}else{T=36}}while(0);if((T|0)==36){Qe(-1,64728,z);z=0;A=0}ma=e+1|0;pa=+Ie(c[(c[(c[u>>2]|0)+(ma<<2)>>2]|0)+28>>2]|0);if((z|0)==0){break}T=c[b+128>>2]|0;if((T|0)==0){la=0.0}else{la=+wd[c[(c[T>>2]|0)+12>>2]&1](T)}do{if(o){xa=ve(d)|0;o=c[d+24>>2]|0;if(xa){o=(o+ -2|0)/2|0}d=FW(32)|0;ee(d);c[r>>2]=0;if((o|0)<=0){o=0;break}while(1){me(d,42)|0;xa=(c[r>>2]|0)+1|0;c[r>>2]=xa;if((xa|0)>=(o|0)){o=0;break}}}else{o=1}}while(0);T=FW(32)|0;ee(T);aa=b+124|0;if(m){ne(c[aa>>2]|0,64832,-1)|0}ne(c[aa>>2]|0,56352,-1)|0;ne(c[aa>>2]|0,64848,-1)|0;do{if(g){B=b+28|0;E=c[B>>2]|0;sa=+h[E+16>>3]- +h[E>>3]-la*2.0+-4.0;if(pa==0.0){j=d+24|0;D=c[j>>2]|0;pa=20.0;while(1){ua=+h[E+24>>3]- +h[E+8>>3];c[r>>2]=0;if((D|0)>0){ta=sa/pa;while(1){ls(0,d,T,v,z,y,ta,0,n);ua=ua-pa;D=c[j>>2]|0;if((c[r>>2]|0)<(D|0)){}else{break}}}if(ua>=pa*.33){break}pa=pa+-1.0;if(pa<=1.0){break}E=c[B>>2]|0}E=c[(c[u>>2]|0)+(ma<<2)>>2]|0;le(E)|0;xa=S;h[k>>3]=pa;c[xa>>2]=c[k>>2];c[xa+4>>2]=c[k+4>>2];pe(E,64856,Q)|0;E=c[B>>2]|0}ta=+h[E+24>>3]- +h[E+8>>3];if((P|0)>-1){xa=c[(c[u>>2]|0)+(P+4<<2)>>2]|0;le(xa)|0;me(xa,48)|0;xa=c[(c[u>>2]|0)+(P+5<<2)>>2]|0;le(xa)|0;ra=N;h[k>>3]=ta;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64856,O)|0}do{if((q|0)!=0){c[r>>2]=0;if((c[t>>2]|0)>0){j=0}else{break}do{me(oe(c[aa>>2]|0,c[(c[u>>2]|0)+(j<<2)>>2]|0)|0,32)|0;j=(c[r>>2]|0)+1|0;c[r>>2]=j;}while((j|0)<(c[t>>2]|0))}}while(0);if((P|0)<0){xa=c[aa>>2]|0;ra=C;h[k>>3]=ta;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64864,M)|0}c[r>>2]=0;j=d+24|0;if((c[j>>2]|0)<=0){break}sa=sa/pa;ua=la+2.0;ta=-0.0-pa;va=0.0;while(1){ls(0,d,T,v,z,y,sa,0,n);wa=pa*+h[s>>3];h[s>>3]=wa;if((l|0)==2){xa=c[B>>2]|0;wa=+h[xa+16>>3]- +h[xa>>3]-la+-2.0-wa}else if((l|0)==1){xa=c[B>>2]|0;wa=(+h[xa+16>>3]- +h[xa>>3]-wa)*.5}else{wa=ua}xa=c[aa>>2]|0;ra=w;h[k>>3]=wa-va;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];ra=x+8|0;h[k>>3]=ta;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64888,x)|0;ms(0,T,c[aa>>2]|0);ne(c[aa>>2]|0,64912,-1)|0;if((c[r>>2]|0)<(c[j>>2]|0)){va=wa}else{break}}}else{if((j|0)<=0){c[r>>2]=0;ls(0,d,T,v,z,y,0.0,0,n);if(pa==0.0){xa=c[b+28>>2]|0;sa=la*2.0;pa=+h[xa+24>>3]- +h[xa+8>>3]-sa;sa=(+h[xa+16>>3]- +h[xa>>3]+-4.0-sa)/+h[s>>3];pa=+R(+(sa>2]|0)+(ma<<2)>>2]|0;le(xa)|0;ra=ja;h[k>>3]=pa;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64856,ka)|0}sa=pa*+h[s>>3];h[s>>3]=sa;if((l|0)==1){xa=c[b+28>>2]|0;s=xa;la=(+h[xa+16>>3]- +h[xa>>3]-sa)*.5}else if((l|0)==2){xa=c[b+28>>2]|0;s=xa;la=+h[xa+16>>3]- +h[xa>>3]-la+-2.0-sa}else{s=c[b+28>>2]|0;la=la+2.0}pa=(+h[s+24>>3]- +h[s+8>>3])*.5-pa*.4;if((P|0)>-1){xa=c[(c[u>>2]|0)+(P+4<<2)>>2]|0;le(xa)|0;ra=ba;h[k>>3]=la;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64856,ca)|0;xa=c[(c[u>>2]|0)+(P+5<<2)>>2]|0;le(xa)|0;ra=da;h[k>>3]=pa;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64856,ea)|0}do{if((q|0)!=0){c[r>>2]=0;if((c[t>>2]|0)>0){s=0}else{break}do{me(oe(c[aa>>2]|0,c[(c[u>>2]|0)+(s<<2)>>2]|0)|0,32)|0;s=(c[r>>2]|0)+1|0;c[r>>2]=s;}while((s|0)<(c[t>>2]|0))}}while(0);if((P|0)<0){xa=c[aa>>2]|0;ra=$;h[k>>3]=la;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];ra=_+8|0;h[k>>3]=pa;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64920,_)|0}ms(0,T,c[aa>>2]|0);ne(c[aa>>2]|0,64912,-1)|0;break}w=b+28|0;x=c[w>>2]|0;ta=la*2.0;sa=(+h[x+16>>3]- +h[x>>3]-ta)/+(j|0);h[s>>3]=sa;if(pa==0.0){pa=+h[x+24>>3]- +h[x+8>>3]-ta;pa=+R(+(sa>2]|0)+(ma<<2)>>2]|0;le(xa)|0;ra=ha;h[k>>3]=pa;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64856,ia)|0}c[r>>2]=0;ls(0,d,T,v,z,0,0.0,ga,n);v=c[fa>>2]|0;if((v|0)>(j|0)){c[fa>>2]=j;v=j}if((l|0)==1){la=la+ +((j-v|0)/2|0|0)*+h[s>>3]}else if((l|0)==2){la=la+ +h[s>>3]*+(j-v|0)}xa=c[w>>2]|0;sa=(+h[xa+24>>3]- +h[xa+8>>3])*.5-pa*.4;if((P|0)>-1){xa=c[(c[u>>2]|0)+(P+4<<2)>>2]|0;le(xa)|0;ra=X;h[k>>3]=la;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64856,W)|0;xa=c[(c[u>>2]|0)+(P+5<<2)>>2]|0;le(xa)|0;ra=Y;h[k>>3]=sa;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64856,Z)|0}do{if((q|0)!=0){c[r>>2]=0;if((c[t>>2]|0)>0){l=0}else{break}do{me(oe(c[aa>>2]|0,c[(c[u>>2]|0)+(l<<2)>>2]|0)|0,32)|0;l=(c[r>>2]|0)+1|0;c[r>>2]=l;}while((l|0)<(c[t>>2]|0))}}while(0);if((P|0)<0){xa=c[aa>>2]|0;ra=V;h[k>>3]=la;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];ra=U+8|0;h[k>>3]=sa;c[ra>>2]=c[k>>2];c[ra+4>>2]=c[k+4>>2];pe(xa,64920,U)|0}v=c[T+28>>2]|0;l=c[T+24>>2]|0;c[r>>2]=0;if((l|0)<=0){break}sa=+h[s>>3];while(1){h[L>>3]=0.0;n=xd[c[(c[z>>2]|0)+12>>2]&3](z,v,l,K,J,I,B,H,G,F)|0;la=pa*+h[L>>3];h[L>>3]=la;wa=+h[s>>3];la=(wa-la)*.5;w=c[aa>>2]|0;xa=E;h[k>>3]=wa+(la-sa);c[xa>>2]=c[k>>2];c[xa+4>>2]=c[k+4>>2];pe(w,64952,D)|0;w=FW(32)|0;ge(w,v,n);ms(0,w,c[aa>>2]|0);ne(c[aa>>2]|0,64912,-1)|0;if((w|0)!=0){ke(w);HW(w)}xa=(c[r>>2]|0)+1|0;c[r>>2]=xa;l=l-n|0;if((xa|0)<(j|0)&(l|0)>0){v=v+n|0;sa=la}else{break}}}}while(0);ne(c[aa>>2]|0,64968,-1)|0;ne(c[aa>>2]|0,63808,-1)|0;if(m){ne(c[aa>>2]|0,64976,-1)|0}if((q|0)!=0){m=c[t>>2]|0;if((m|0)>0){r=0;do{s=c[(c[u>>2]|0)+(r<<2)>>2]|0;if((s|0)!=0){ke(s);HW(s);m=c[t>>2]|0}r=r+1|0;}while((r|0)<(m|0))}xo(q);HW(q)}if(!(o|(d|0)==0)){ke(d);HW(d)}if((T|0)!=0){ke(T);HW(T)}if(!A){i=p;return}Yx(z);i=p;return}}while(0);if((T|0)==37){Qe(-1,64784,u)}if((q|0)==0){i=p;return}r=q+8|0;s=c[r>>2]|0;if((s|0)>0){m=0;do{t=c[(c[q>>2]|0)+(m<<2)>>2]|0;if((t|0)!=0){ke(t);HW(t);s=c[r>>2]|0}m=m+1|0;}while((m|0)<(s|0))}xo(q);HW(q);i=p;return}function os(b,d,e,f,g,j,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;var 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.0,G=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,S=0,T=0,U=0,V=0;n=i;x=i;i=i+16|0;y=x;v=i;i=i+8|0;w=v;A=i;i=i+8|0;u=A;s=i;i=i+32|0;t=s;C=i;i=i+8|0;D=C;I=i;i=i+8|0;H=i;i=i+8|0;G=i;i=i+8|0;r=i;i=i+8|0;q=r;z=i;i=i+8|0;p=z;do{if((j|0)==0){o=0;E=28}else{o=FW(16)|0;wo(o);B=j+24|0;T=c[B>>2]|0;if((T|0)>0){J=j+28|0;S=0;do{a:do{if((S|0)<(T|0)){while(1){V=hE(a[(c[J>>2]|0)+S|0]|0)|0;U=S+1|0;T=c[B>>2]|0;if(!V){break a}if((U|0)<(T|0)){S=U}else{S=U;break}}}}while(0);if((S|0)<(T|0)){U=S+1|0;c[z>>2]=U;b:do{if((U|0)<(T|0)){do{V=hE(a[(c[J>>2]|0)+U|0]|0)|0;U=c[z>>2]|0;if(V){break b}U=U+1|0;c[z>>2]=U;}while((U|0)<(c[B>>2]|0))}}while(0);T=FW(32)|0;he(T,j,S,U-S|0);yo(o,T);T=c[B>>2]|0;S=c[z>>2]|0}}while((S|0)<(T|0))}B=o+8|0;if((c[B>>2]|0)<=2){E=28;break}S=2;J=-1;j=-1;do{do{if((S|0)>1){if((te(c[(c[o>>2]|0)+(S<<2)>>2]|0,64640)|0)==0){J=S+ -2|0;break}if((S|0)<=5){break}V=(te(c[(c[o>>2]|0)+(S<<2)>>2]|0,64648)|0)==0;j=V?S+ -6|0:j}}while(0);S=S+1|0;}while((S|0)<(c[B>>2]|0));if((J|0)<=-1){E=28;break}I=c[(c[o>>2]|0)+(J<<2)>>2]|0;do{if((c[I+24>>2]|0)>0){I=c[I+28>>2]|0;if((a[I]|0)!=47){E=27;break}if((l|0)!=0){l=wy(l,I+1|0)|0;if((l|0)!=0){break}}Qe(-1,64688,G);l=0}else{E=27}}while(0);if((E|0)==27){Qe(-1,64728,H);l=0}G=J+1|0;L=+Ie(c[(c[(c[o>>2]|0)+(G<<2)>>2]|0)+28>>2]|0);if((l|0)==0){break}E=FW(32)|0;ee(E);H=c[b+128>>2]|0;if((H|0)==0){F=0.0}else{F=+wd[c[(c[H>>2]|0)+12>>2]&1](H)}if(L==0.0){if((f|0)>0){H=0;K=0.0;while(1){c[z>>2]=0;ls(0,c[d+(H<<2)>>2]|0,E,p,l,q,0.0,0,0);L=+h[r>>3];K=L>K?L:K;H=H+1|0;if((H|0)<(f|0)){}else{break}}}else{K=0.0}H=b+28|0;V=c[H>>2]|0;Q=F*2.0;L=+h[V+24>>3]- +h[V+8>>3]-Q;K=(+h[V+16>>3]- +h[V>>3]+-4.0-Q)/K;L=+R(+(K>2]|0)+(G<<2)>>2]|0;le(V)|0;h[k>>3]=L;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];pe(V,64856,D)|0;C=H}else{C=b+28|0}J=c[C>>2]|0;K=L*1.1;if((g|0)<(f|0)){I=b+124|0;M=F+2.0;b=(j|0)>-1;G=j+4|0;D=j+5|0;H=(o|0)==0;j=(j|0)<0;N=L*.2;O=F*2.0;P=+h[J+24>>3]- +h[J+8>>3];do{P=P-K;ne(c[I>>2]|0,56352,-1)|0;J=e+g|0;if((a[J]&1)!=0){ne(c[I>>2]|0,64984,-1)|0;V=c[I>>2]|0;U=c[C>>2]|0;Q=+h[U+16>>3]- +h[U>>3]-O;U=s;h[k>>3]=F;c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];U=t+8|0;h[k>>3]=P-N;c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];U=t+16|0;h[k>>3]=Q;c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];U=t+24|0;h[k>>3]=K;c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];pe(V,64992,t)|0}ne(c[I>>2]|0,64848,-1)|0;c[z>>2]=0;ls(0,c[d+(g<<2)>>2]|0,E,p,l,q,0.0,0,0);Q=L*+h[r>>3];h[r>>3]=Q;if((m|0)==1){V=c[C>>2]|0;Q=(+h[V+16>>3]- +h[V>>3]-Q)*.5}else if((m|0)==2){V=c[C>>2]|0;Q=+h[V+16>>3]- +h[V>>3]-F+-2.0-Q}else{Q=M}if(b){V=c[(c[o>>2]|0)+(G<<2)>>2]|0;le(V)|0;U=A;h[k>>3]=Q;c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];pe(V,64856,u)|0;V=c[(c[o>>2]|0)+(D<<2)>>2]|0;le(V)|0;U=v;h[k>>3]=P;c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];pe(V,64856,w)|0}do{if(!H){c[z>>2]=0;if((c[B>>2]|0)>0){S=0}else{break}do{me(oe(c[I>>2]|0,c[(c[o>>2]|0)+(S<<2)>>2]|0)|0,32)|0;S=(c[z>>2]|0)+1|0;c[z>>2]=S;}while((S|0)<(c[B>>2]|0))}}while(0);if(j){V=c[I>>2]|0;U=x;h[k>>3]=Q;c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];U=y+8|0;h[k>>3]=P;c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];pe(V,64920,y)|0}if((a[J]&1)!=0){ne(c[I>>2]|0,65032,-1)|0}ms(0,E,c[I>>2]|0);ne(c[I>>2]|0,64912,-1)|0;ne(c[I>>2]|0,64968,-1)|0;ne(c[I>>2]|0,63808,-1)|0;g=g+1|0;}while((g|0)<(f|0))}if((o|0)!=0){q=c[B>>2]|0;if((q|0)>0){p=0;do{r=c[(c[o>>2]|0)+(p<<2)>>2]|0;if((r|0)!=0){ke(r);HW(r);q=c[B>>2]|0}p=p+1|0;}while((p|0)<(q|0))}xo(o);HW(o)}if((E|0)==0){i=n;return}ke(E);HW(E);i=n;return}}while(0);if((E|0)==28){Qe(-1,64784,I)}if((o|0)==0){i=n;return}p=o+8|0;r=c[p>>2]|0;if((r|0)>0){q=0;do{m=c[(c[o>>2]|0)+(q<<2)>>2]|0;if((m|0)!=0){ke(m);HW(m);r=c[p>>2]|0}q=q+1|0;}while((q|0)<(r|0))}xo(o);HW(o);i=n;return}function ps(b){b=b|0;var d=0,e=0,f=0,g=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,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,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=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,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0.0,Gb=0,Hb=0,Ib=0.0,Jb=0.0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,id=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ge=0,he=0,je=0,le=0.0,me=0.0,oe=0.0,qe=0.0,re=0.0,te=0.0,ue=0.0,ve=0.0,we=0.0,xe=0.0,ze=0.0,Ae=0.0;f=i;d=i;i=i+8|0;m=d;z=i;i=i+8|0;v=z;l=i;i=i+8|0;j=l;C=i;i=i+8|0;B=C;H=i;i=i+8|0;G=H;Q=i;i=i+8|0;O=Q;S=i;i=i+8|0;U=S;W=i;i=i+8|0;V=W;Y=i;i=i+8|0;X=Y;_=i;i=i+8|0;$=_;aa=i;i=i+8|0;ba=aa;ca=i;i=i+8|0;da=ca;ga=i;i=i+8|0;fa=ga;cb=i;i=i+8|0;oa=i;i=i+8|0;pa=oa;sa=i;i=i+8|0;ta=sa;ra=i;i=i+8|0;qa=ra;Da=i;i=i+8|0;Ea=Da;Ba=i;i=i+8|0;Ca=Ba;Sa=i;i=i+8|0;Ra=Sa;Ta=i;i=i+8|0;Wa=Ta;Za=i;i=i+8|0;ab=Za;Ja=i;i=i+8|0;Ma=Ja;Va=i;i=i+8|0;Ua=Va;Xa=i;i=i+8|0;Ya=Xa;Pa=i;i=i+8|0;Oa=Pa;wa=i;i=i+16|0;va=wa;za=i;i=i+32|0;ua=za;Aa=i;i=i+40|0;ya=Aa;Ia=i;i=i+8|0;Ha=Ia;Ka=i;i=i+8|0;Na=Ka;$a=i;i=i+8|0;bb=$a;fb=i;i=i+8|0;gb=fb;mb=i;i=i+24|0;lb=mb;od=i;i=i+8|0;nd=od;qd=i;i=i+16|0;kd=qd;ud=i;i=i+32|0;rd=ud;md=i;i=i+40|0;vd=md;Nd=i;i=i+8|0;Id=Nd;Pd=i;i=i+8|0;Qd=Pd;pc=i;i=i+8|0;qc=pc;nc=i;i=i+16|0;oc=nc;lc=i;i=i+16|0;mc=lc;jc=i;i=i+16|0;kc=jc;hc=i;i=i+8|0;ic=hc;xc=i;i=i+16|0;yc=xc;vc=i;i=i+32|0;wc=vc;sc=i;i=i+40|0;uc=sc;Oc=i;i=i+8|0;Nc=Oc;Xc=i;i=i+8|0;Wc=Xc;Zc=i;i=i+16|0;Yc=Zc;Uc=i;i=i+16|0;_c=Uc;td=i;i=i+16|0;gd=td;id=i;i=i+8|0;sd=id;xd=i;i=i+16|0;pd=xd;Cd=i;i=i+32|0;yd=Cd;Ad=i;i=i+40|0;Bd=Ad;Hd=i;i=i+8|0;Gd=Hd;ac=i;i=i+24|0;$b=ac;Vb=i;i=i+16|0;Ub=Vb;Xb=i;i=i+32|0;Wb=Xb;Zb=i;i=i+40|0;Yb=Zb;Kc=i;i=i+8|0;Jc=Kc;Lc=i;i=i+8|0;Mc=Lc;Vc=i;i=i+8|0;Tc=Vc;ob=i;i=i+48|0;vb=ob;sb=i;i=i+48|0;tb=sb;wb=i;i=i+16|0;ub=wb;qb=i;i=i+16|0;rb=qb;zb=i;i=i+32|0;pb=zb;yb=i;i=i+40|0;nb=yb;Bb=i;i=i+8|0;Cb=Bb;Eb=i;i=i+48|0;Db=Eb;Hb=i;i=i+48|0;Gb=Hb;Kb=i;i=i+16|0;Lb=Kb;fc=i;i=i+16|0;Tb=fc;cc=i;i=i+32|0;gc=cc;bc=i;i=i+40|0;dc=bc;Ec=i;i=i+8|0;Gc=Ec;cd=i;i=i+16|0;bd=cd;ed=i;i=i+32|0;dd=ed;ad=i;i=i+40|0;$c=ad;Ed=i;i=i+8|0;Dd=Ed;Jd=i;i=i+8|0;Ld=Jd;Qb=i;i=i+16|0;Sb=Qb;Ob=i;i=i+32|0;Pb=Ob;Mb=i;i=i+40|0;Nb=Mb;Ac=i;i=i+8|0;Bc=Ac;Dc=i;i=i+8|0;Cc=Dc;Rc=i;i=i+8|0;Sc=Rc;Rd=i;i=i+8|0;Od=Rd;Xd=i;i=i+16|0;Vd=Xd;_d=i;i=i+16|0;Yd=_d;Zd=i;i=i+32|0;Sd=Zd;Td=i;i=i+40|0;Wd=Td;$d=i;i=i+8|0;ae=$d;be=i;i=i+8|0;ce=be;ge=i;i=i+8|0;ib=ge;A=i;i=i+8|0;he=A;de=i;i=i+16|0;e=de;db=i;i=i+16|0;n=db;R=i;i=i+16|0;M=R;T=i;i=i+16|0;P=T;K=i;i=i+16|0;E=K;I=i;i=i+16|0;F=I;ja=i;i=i+16|0;ha=ja;jb=i;i=i+40|0;Ud=jb;zc=i;i=i+40|0;Rb=zc;Fd=i;i=i+40|0;fd=Fd;Fc=i;i=i+40|0;ec=Fc;Ab=i;i=i+40|0;xb=Ab;Hc=i;i=i+40|0;_b=Hc;Md=i;i=i+40|0;zd=Md;Pc=i;i=i+40|0;rc=Pc;Kd=i;i=i+40|0;ld=Kd;Fa=i;i=i+40|0;xa=Fa;w=i;i=i+8|0;y=w;x=i;i=i+8|0;u=i;i=i+16|0;p=u;t=i;i=i+16|0;q=t;s=i;i=i+16|0;o=s;r=i;i=i+8|0;c[de>>2]=13;kb=e+8|0;c[kb>>2]=0;c[kb+4>>2]=0;c[db>>2]=13;eb=n+8|0;c[eb>>2]=0;c[eb+4>>2]=0;c[R>>2]=13;N=M+8|0;c[N>>2]=0;c[N+4>>2]=0;c[T>>2]=13;hb=P+8|0;c[hb>>2]=0;c[hb+4>>2]=0;c[K>>2]=13;J=E+8|0;c[J>>2]=0;ea=J+4|0;c[ea>>2]=0;c[I>>2]=13;D=F+8|0;c[D>>2]=0;c[D+4>>2]=0;c[ja>>2]=13;ia=ha+8|0;c[ia>>2]=0;c[ia+4>>2]=0;L=b+152|0;Z=c[L>>2]|0;if((Z|0)==0){i=f;return}ma=c[Z+4>>2]|0;if((ma|0)==0){i=f;return}if((c[ma+24>>2]|0)!=7){i=f;return}ma=c[ma+32>>2]|0;je=c[Z+16>>2]|0;if((je|0)!=7){c[A>>2]=je;c[he+4>>2]=7;Qe(0,72520,he);tc()}A=c[Z+24>>2]|0;je=c[(c[b+148>>2]|0)+16>>2]|0;he=c[je>>2]|0;if((he|0)!=7){c[ge>>2]=he;c[ib+4>>2]=7;Qe(0,72520,ib);tc()}ib=c[je+8>>2]|0;if(((a[b+176|0]|a[Z+45|0])&1)==0){i=f;return}je=FW(32)|0;ee(je);Z=b+124|0;c[Z>>2]=je;do{if((c[(Yu(A,64512,e,0)|0)>>2]|0)==7){de=c[de>>2]|0;if((de|0)!=7){c[be>>2]=de;c[ce+4>>2]=7;Qe(0,72520,ce);tc()}kb=c[kb>>2]|0;if((kb|0)==0){jb=0;kb=0;break}do{if((c[(Yu(kb,55456,E,0)|0)>>2]|0)==6){be=c[K>>2]|0;if((be|0)!=6){c[$d>>2]=be;c[ae+4>>2]=6;Qe(0,72520,ae);tc()}$d=c[J>>2]|0;if((c[$d+12>>2]|0)<=0){break}vr(Ud,$d,0);$d=c[Ud+32>>2]|0;if(($d|0)==3){je=c[Z>>2]|0;xe=+h[Ud+8>>3];ze=+h[Ud+16>>3];he=Zd;h[k>>3]=+h[jb>>3];c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Sd+8|0;h[k>>3]=xe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Sd+16|0;h[k>>3]=ze;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Sd+24>>2]=55800;pe(je,55768,Sd)|0}else if(($d|0)==4){je=c[Z>>2]|0;we=+h[Ud+8>>3];xe=+h[Ud+16>>3];ze=+h[Ud+24>>3];he=Td;h[k>>3]=+h[jb>>3];c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Wd+8|0;h[k>>3]=we;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Wd+16|0;h[k>>3]=xe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Wd+24|0;h[k>>3]=ze;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Wd+32>>2]=107;pe(je,55728,Wd)|0}else if(($d|0)==1){je=c[Z>>2]|0;he=_d;h[k>>3]=+h[jb>>3];c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Yd+8>>2]=103;pe(je,55816,Yd)|0}je=c[Z>>2]|0;ge=c[b+28>>2]|0;ze=+h[ge+24>>3]- +h[ge+8>>3];he=Xd;h[k>>3]=+h[ge+16>>3]- +h[ge>>3];c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Vd+8|0;h[k>>3]=ze;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,65040,Vd)|0}}while(0);Of(E);jb=1}else{jb=0;kb=0}}while(0);pv(ma,65072,n)|0;do{if((c[(pv(ma,65080,E)|0)>>2]|0)==1){Sd=c[K>>2]|0;if((Sd|0)==1){Ga=c[J>>2]|0;break}else{c[Rd>>2]=Sd;c[Od+4>>2]=1;Qe(0,72520,Od);tc()}}else{Ga=0}}while(0);Of(E);do{if(jb){Od=b+128|0;Rd=c[Od>>2]|0;if((Rd|0)==0){break}Fb=+wd[c[(c[Rd>>2]|0)+12>>2]&1](Rd);if(Fb<=0.0){break}Yu(kb,55448,E,0)|0;if((c[K>>2]|0)==6){if((c[(c[J>>2]|0)+12>>2]|0)>0){ka=33}else{ka=32}}else{ka=32}if((ka|0)==32){Yu(kb,55456,E,0)|0;if((c[K>>2]|0)==6){ka=33}}a:do{if((ka|0)==33){if((c[(c[J>>2]|0)+12>>2]|0)<=0){break}Rd=c[b+28>>2]|0;Jb=+h[Rd+16>>3]- +h[Rd>>3];Ib=+h[Rd+24>>3]- +h[Rd+8>>3];Rd=(c[(Yu(kb,55464,F,0)|0)>>2]|0)==3;Of(F);do{if((c[db>>2]|0)==4){if((Qc(c[eb>>2]|0,65088)|0)!=0){break}if((Ga&32768|0)==0|Rd){break}le=(Jb>2]|0;switch(jd[c[(c[je>>2]|0)+24>>2]&511](je)|0){case 1:{ne(c[Z>>2]|0,64248,-1)|0;lb=c[Od>>2]|0;lb=jd[c[(c[lb>>2]|0)+16>>2]&511](lb)|0;mb=c[Od>>2]|0;mb=jd[c[(c[mb>>2]|0)+20>>2]&511](mb)|0;nb=c[Z>>2]|0;if((lb|0)>0){ob=0;while(1){je=Rc;h[k>>3]=+h[mb+(ob<<3)>>3];c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(nb,64256,Sc)|0;ob=ob+1|0;nb=c[Z>>2]|0;if((ob|0)<(lb|0)){}else{break}}}ne(nb,65096,-1)|0;break};case 4:case 0:{break};case 3:case 2:{lb=c[Z>>2]|0;je=Jd;h[k>>3]=Fb*.5;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(lb,64288,Ld)|0;lb=c[K>>2]|0;if((lb|0)!=6){c[Ed>>2]=lb;c[Dd+4>>2]=6;Qe(0,72520,Dd);tc()}vr(fd,c[J>>2]|0,0);qe=+h[Fd>>3];oe=+h[fd+8>>3];me=+h[fd+16>>3];lb=c[fd+32>>2]|0;if((lb|0)==4){ze=+h[fd+24>>3];je=c[Z>>2]|0;he=ad;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=$c+8|0;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=$c+16|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=$c+24|0;h[k>>3]=ze;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[$c+32>>2]=75;pe(je,55728,$c)|0}else if((lb|0)==3){je=c[Z>>2]|0;he=ed;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=dd+8|0;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=dd+16|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[dd+24>>2]=55808;pe(je,55768,dd)|0}else if((lb|0)==1){je=c[Z>>2]|0;he=cd;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[bd+8>>2]=71;pe(je,55816,bd)|0}Jb=Jb*.5;Ib=Ib*.5;Dr(b,Jb,Ib,le-Fb*.25,0);lb=c[K>>2]|0;if((lb|0)!=6){c[Ec>>2]=lb;c[Gc+4>>2]=6;Qe(0,72520,Gc);tc()}he=c[J>>2]|0;je=c[Od>>2]|0;je=(jd[c[(c[je>>2]|0)+24>>2]&511](je)|0)==2;vr(ec,he,je?1:-1);oe=+h[Fc>>3];me=+h[ec+8>>3];qe=+h[ec+16>>3];lb=c[ec+32>>2]|0;if((lb|0)==4){ze=+h[ec+24>>3];je=c[Z>>2]|0;he=bc;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=dc+8|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=dc+16|0;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=dc+24|0;h[k>>3]=ze;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[dc+32>>2]=75;pe(je,55728,dc)|0}else if((lb|0)==3){je=c[Z>>2]|0;he=cc;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=gc+8|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=gc+16|0;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[gc+24>>2]=55808;pe(je,55768,gc)|0}else if((lb|0)==1){je=c[Z>>2]|0;he=fc;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Tb+8>>2]=71;pe(je,55816,Tb)|0}ue=(le-Fb*.75)/1.4142135623730951;lb=c[Z>>2]|0;Fb=Jb+ue;le=Ib+ue;je=Kb;h[k>>3]=Fb;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Lb+8|0;h[k>>3]=le;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(lb,55832,Lb)|0;lb=c[Z>>2]|0;te=ue*.44771525;re=Jb+te;oe=ue*1.55228475;ze=Ib+oe;qe=Jb-te;me=Jb-ue;je=Hb;h[k>>3]=re;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Gb+8|0;h[k>>3]=ze;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Gb+16|0;h[k>>3]=qe;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Gb+24|0;h[k>>3]=ze;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Gb+32|0;h[k>>3]=me;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Gb+40|0;h[k>>3]=le;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(lb,55856,Gb)|0;lb=c[Z>>2]|0;ze=Jb-oe;ve=Ib+te;te=Ib-te;ue=Ib-ue;je=Eb;h[k>>3]=ze;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Db+8|0;h[k>>3]=ve;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Db+16|0;h[k>>3]=ze;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Db+24|0;h[k>>3]=te;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Db+32|0;h[k>>3]=me;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Db+40|0;h[k>>3]=ue;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(lb,55856,Db)|0;ne(c[Z>>2]|0,55928,-1)|0;lb=c[K>>2]|0;if((lb|0)!=6){c[Bb>>2]=lb;c[Cb+4>>2]=6;Qe(0,72520,Cb);tc()}he=c[J>>2]|0;je=c[Od>>2]|0;je=(jd[c[(c[je>>2]|0)+24>>2]&511](je)|0)==2;vr(xb,he,je?-1:1);ze=+h[Ab>>3];xe=+h[xb+8>>3];we=+h[xb+16>>3];lb=c[xb+32>>2]|0;if((lb|0)==4){Ae=+h[xb+24>>3];je=c[Z>>2]|0;he=yb;h[k>>3]=ze;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=nb+8|0;h[k>>3]=xe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=nb+16|0;h[k>>3]=we;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=nb+24|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[nb+32>>2]=75;pe(je,55728,nb)|0}else if((lb|0)==3){je=c[Z>>2]|0;he=zb;h[k>>3]=ze;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=pb+8|0;h[k>>3]=xe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=pb+16|0;h[k>>3]=we;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[pb+24>>2]=55808;pe(je,55768,pb)|0}else if((lb|0)==1){je=c[Z>>2]|0;he=qb;h[k>>3]=ze;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[rb+8>>2]=71;pe(je,55816,rb)|0}je=c[Z>>2]|0;he=wb;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=ub+8|0;h[k>>3]=ue;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,55832,ub)|0;je=c[Z>>2]|0;Ae=Ib-oe;he=sb;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=tb+8|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=tb+16|0;h[k>>3]=re;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=tb+24|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=tb+32|0;h[k>>3]=Fb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=tb+40|0;h[k>>3]=ue;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,55856,tb)|0;je=c[Z>>2]|0;Ae=Jb+oe;he=ob;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=vb+8|0;h[k>>3]=te;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=vb+16|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=vb+24|0;h[k>>3]=ve;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=vb+32|0;h[k>>3]=Fb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=vb+40|0;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,55856,vb)|0;ne(c[Z>>2]|0,55928,-1)|0;break a};default:{break a}}lb=c[Z>>2]|0;je=Dc;h[k>>3]=Fb;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(lb,64288,Cc)|0;lb=c[K>>2]|0;if((lb|0)!=6){c[Ac>>2]=lb;c[Bc+4>>2]=6;Qe(0,72520,Bc);tc()}vr(Rb,c[J>>2]|0,0);me=+h[zc>>3];oe=+h[Rb+8>>3];qe=+h[Rb+16>>3];lb=c[Rb+32>>2]|0;if((lb|0)==1){je=c[Z>>2]|0;he=Qb;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Sb+8>>2]=71;pe(je,55816,Sb)|0}else if((lb|0)==4){Ae=+h[Rb+24>>3];je=c[Z>>2]|0;he=Mb;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Nb+8|0;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Nb+16|0;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Nb+24|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Nb+32>>2]=75;pe(je,55728,Nb)|0}else if((lb|0)==3){je=c[Z>>2]|0;he=Ob;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Pb+8|0;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Pb+16|0;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Pb+24>>2]=55808;pe(je,55768,Pb)|0}Dr(b,Jb*.5,Ib*.5,le-Fb*.5,0);break a}}while(0);je=c[Od>>2]|0;switch(jd[c[(c[je>>2]|0)+24>>2]&511](je)|0){case 3:case 2:{nb=c[K>>2]|0;if((nb|0)!=6){c[Hd>>2]=nb;c[Gd+4>>2]=6;Qe(0,72520,Gd);tc()}he=c[J>>2]|0;je=c[Od>>2]|0;je=(jd[c[(c[je>>2]|0)+24>>2]&511](je)|0)==2;vr(zd,he,je?1:-1);oe=+h[Md>>3];me=+h[zd+8>>3];le=+h[zd+16>>3];nb=c[zd+32>>2]|0;if((nb|0)==4){Ae=+h[zd+24>>3];je=c[Z>>2]|0;he=Ad;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Bd+8|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Bd+16|0;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Bd+24|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Bd+32>>2]=107;pe(je,55728,Bd)|0}else if((nb|0)==3){je=c[Z>>2]|0;he=Cd;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=yd+8|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=yd+16|0;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[yd+24>>2]=55800;pe(je,55768,yd)|0}else if((nb|0)==1){je=c[Z>>2]|0;he=xd;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[pd+8>>2]=103;pe(je,55816,pd)|0}ne(c[Z>>2]|0,65144,-1)|0;nb=c[Z>>2]|0;je=id;h[k>>3]=Ib;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(nb,65152,sd)|0;nb=c[Z>>2]|0;je=td;h[k>>3]=Jb;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=gd+8|0;h[k>>3]=Ib;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(nb,64304,gd)|0;nb=c[Z>>2]|0;le=Jb-Fb;me=Ib-Fb;je=Uc;h[k>>3]=le;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=_c+8|0;h[k>>3]=me;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(nb,64304,_c)|0;nb=c[Z>>2]|0;je=Zc;h[k>>3]=Fb;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];je=Yc+8|0;h[k>>3]=me;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(nb,64304,Yc)|0;nb=c[Z>>2]|0;je=Xc;h[k>>3]=Fb;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(nb,65168,Wc)|0;ne(c[Z>>2]|0,55912,-1)|0;nb=c[K>>2]|0;if((nb|0)!=6){c[Oc>>2]=nb;c[Nc+4>>2]=6;Qe(0,72520,Nc);tc()}he=c[J>>2]|0;je=c[Od>>2]|0;je=(jd[c[(c[je>>2]|0)+24>>2]&511](je)|0)==2;vr(rc,he,je?-1:1);re=+h[Pc>>3];oe=+h[rc+8>>3];qe=+h[rc+16>>3];nb=c[rc+32>>2]|0;if((nb|0)==4){Ae=+h[rc+24>>3];je=c[Z>>2]|0;he=sc;h[k>>3]=re;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=uc+8|0;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=uc+16|0;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=uc+24|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[uc+32>>2]=107;pe(je,55728,uc)|0}else if((nb|0)==3){je=c[Z>>2]|0;he=vc;h[k>>3]=re;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=wc+8|0;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=wc+16|0;h[k>>3]=qe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[wc+24>>2]=55800;pe(je,55768,wc)|0}else if((nb|0)==1){je=c[Z>>2]|0;he=xc;h[k>>3]=re;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[yc+8>>2]=103;pe(je,55816,yc)|0}ne(c[Z>>2]|0,65144,-1)|0;je=c[Z>>2]|0;he=hc;h[k>>3]=Jb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,65192,ic)|0;je=c[Z>>2]|0;he=jc;h[k>>3]=Jb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=kc+8|0;h[k>>3]=Ib;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,64304,kc)|0;je=c[Z>>2]|0;he=lc;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=mc+8|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,64304,mc)|0;je=c[Z>>2]|0;he=nc;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=oc+8|0;h[k>>3]=Fb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,64304,oc)|0;je=c[Z>>2]|0;he=pc;h[k>>3]=Fb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,65168,qc)|0;ne(c[Z>>2]|0,55912,-1)|0;break};case 1:{ne(c[Z>>2]|0,64248,-1)|0;ka=c[Od>>2]|0;ka=jd[c[(c[ka>>2]|0)+16>>2]&511](ka)|0;nb=c[Od>>2]|0;nb=jd[c[(c[nb>>2]|0)+20>>2]&511](nb)|0;pb=c[Z>>2]|0;if((ka|0)>0){ob=0;while(1){je=Vc;h[k>>3]=+h[nb+(ob<<3)>>3];c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(pb,64256,Tc)|0;ob=ob+1|0;pb=c[Z>>2]|0;if((ob|0)<(ka|0)){}else{break}}}ne(pb,65096,-1)|0;ka=71;break};case 0:{ka=71;break};case 4:{nb=c[Z>>2]|0;je=Pd;h[k>>3]=Fb;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(nb,64288,Qd)|0;nb=c[K>>2]|0;if((nb|0)!=6){c[Nd>>2]=nb;c[Id+4>>2]=6;Qe(0,72520,Id);tc()}vr(ld,c[J>>2]|0,0);le=+h[Kd>>3];oe=+h[ld+8>>3];me=+h[ld+16>>3];nb=c[ld+32>>2]|0;if((nb|0)==4){Ae=+h[ld+24>>3];je=c[Z>>2]|0;he=md;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=vd+8|0;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=vd+16|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=vd+24|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[vd+32>>2]=75;pe(je,55728,vd)|0}else if((nb|0)==3){je=c[Z>>2]|0;he=ud;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=rd+8|0;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=rd+16|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[rd+24>>2]=55808;pe(je,55768,rd)|0}else if((nb|0)==1){je=c[Z>>2]|0;he=qd;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[kd+8>>2]=71;pe(je,55816,kd)|0}je=c[Z>>2]|0;he=od;h[k>>3]=Jb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,65208,nd)|0;break};default:{}}if((ka|0)==71){nb=c[Z>>2]|0;je=Lc;h[k>>3]=Fb;c[je>>2]=c[k>>2];c[je+4>>2]=c[k+4>>2];pe(nb,64288,Mc)|0;nb=c[K>>2]|0;if((nb|0)!=6){c[Kc>>2]=nb;c[Jc+4>>2]=6;Qe(0,72520,Jc);tc()}vr(_b,c[J>>2]|0,0);oe=+h[Hc>>3];me=+h[_b+8>>3];le=+h[_b+16>>3];nb=c[_b+32>>2]|0;if((nb|0)==4){Ae=+h[_b+24>>3];je=c[Z>>2]|0;he=Zb;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Yb+8|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Yb+16|0;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Yb+24|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Yb+32>>2]=75;pe(je,55728,Yb)|0}else if((nb|0)==3){je=c[Z>>2]|0;he=Xb;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Wb+8|0;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=Wb+16|0;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Wb+24>>2]=55808;pe(je,55768,Wb)|0}else if((nb|0)==1){je=c[Z>>2]|0;he=Vb;h[k>>3]=oe;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[Ub+8>>2]=71;pe(je,55816,Ub)|0}je=c[Z>>2]|0;he=ac;h[k>>3]=Fb*.5;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=$b+8|0;h[k>>3]=Jb-Fb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=$b+16|0;h[k>>3]=Ib-Fb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,65104,$b)|0}je=c[Z>>2]|0;Ae=Fb*2.0;he=mb;h[k>>3]=Fb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=lb+8|0;h[k>>3]=Jb-Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=lb+16|0;h[k>>3]=Ib-Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];pe(je,65232,lb)|0}}while(0);Of(E)}}while(0);Yu(ib,65272,P,0)|0;do{if((c[T>>2]|0)==7){if((c[(Yu(c[hb>>2]|0,65280,E,0)|0)>>2]|0)!=7){g=0;break}lb=FW(8)|0;hb=c[K>>2]|0;if((hb|0)==7){uy(lb,c[b+112>>2]|0,0,c[J>>2]|0);g=lb;break}else{c[fb>>2]=hb;c[gb+4>>2]=7;Qe(0,72520,gb);tc()}}else{g=0}}while(0);Of(E);if((c[(pv(ma,63960,E)|0)>>2]|0)==5){Of(E);Yu(ib,63960,E,0)|0}if((c[K>>2]|0)==3){je=c[J>>2]|0;fb=FW(32)|0;ie(fb,je)}else{fb=0}Of(E);b:do{if((c[db>>2]|0)==4){db=c[eb>>2]|0;if((Qc(db|0,65088)|0)==0){if(jb){do{if((c[(Yu(kb,55464,E,0)|0)>>2]|0)==3){la=c[K>>2]|0;if((la|0)==3){je=c[J>>2]|0;_a=FW(32)|0;ie(_a,je);break}else{c[$a>>2]=la;c[bb+4>>2]=3;Qe(0,72520,bb);tc()}}else{_a=0}}while(0);Of(E)}else{_a=0}do{if((Ga&32768|0)==0){if((Ga&65536|0)!=0){if((_a|0)==0){break b}ns(b,_a,fb,g,0,0,1,0,0,0);break}do{if((c[(Yu(A,55624,E,0)|0)>>2]|0)==4){ha=c[K>>2]|0;if((ha|0)!=4){c[Pa>>2]=ha;c[Oa+4>>2]=4;Qe(0,72520,Oa);tc()}if((Qc(c[J>>2]|0,55632)|0)==0){break}if((_a|0)==0){_a=FW(32)|0;fe(_a,65296)}ns(b,_a,fb,g,0,0,1,0,1,0)}}while(0);Of(E);ka=150}else{if((c[(pv(ma,65288,E)|0)>>2]|0)==4){ka=Yu(A,55624,F,0)|0;la=c[K>>2]|0;if((la|0)!=4){c[Ka>>2]=la;c[Na+4>>2]=4;Qe(0,72520,Na);tc()}do{if((c[ka>>2]|0)==4){la=c[J>>2]|0;if((Qc(c[ka+8>>2]|0,la|0)|0)!=0){break}if((Qc(la|0,55632)|0)==0){break}if((_a|0)!=0){ns(b,_a,fb,g,0,0,1,0,1,0);break}if(!jb){break}do{if((c[(Yu(kb,55448,ha,0)|0)>>2]|0)==6){ja=c[ja>>2]|0;if((ja|0)!=6){c[Ia>>2]=ja;c[Ha+4>>2]=6;Qe(0,72520,Ha);tc()}ia=c[ia>>2]|0;if((c[ia+12>>2]|0)<=0){break}je=c[b+28>>2]|0;Fb=+h[je+16>>3]- +h[je>>3];Ib=+h[je+24>>3]- +h[je+8>>3];vr(xa,ia,0);me=+h[Fa>>3];le=+h[xa+8>>3];Jb=+h[xa+16>>3];ia=c[xa+32>>2]|0;if((ia|0)==4){Ae=+h[xa+24>>3];je=c[Z>>2]|0;he=Aa;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=ya+8|0;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=ya+16|0;h[k>>3]=Jb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=ya+24|0;h[k>>3]=Ae;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[ya+32>>2]=107;pe(je,55728,ya)|0}else if((ia|0)==3){je=c[Z>>2]|0;he=za;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=ua+8|0;h[k>>3]=le;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];he=ua+16|0;h[k>>3]=Jb;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[ua+24>>2]=55800;pe(je,55768,ua)|0}else if((ia|0)==1){je=c[Z>>2]|0;he=wa;h[k>>3]=me;c[he>>2]=c[k>>2];c[he+4>>2]=c[k+4>>2];c[va+8>>2]=103;pe(je,55816,va)|0}Dr(b,Fb*.5,Ib*.5,(Fb>2]|0)==3){do{if((c[(pv(ma,64e3,F)|0)>>2]|0)==1){ha=c[I>>2]|0;if((ha|0)==1){La=c[D>>2]|0;break}else{c[Xa>>2]=ha;c[Ya+4>>2]=1;Qe(0,72520,Ya);tc()}}else{La=0}}while(0);Of(F);if((Ga&16777216|0)==0){Qa=0}else{do{if((c[(pv(ma,65312,F)|0)>>2]|0)==1){ha=c[I>>2]|0;if((ha|0)==1){Qa=c[D>>2]|0;break}else{c[Va>>2]=ha;c[Ua+4>>2]=1;Qe(0,72520,Ua);tc()}}else{Qa=0}}while(0);Of(F)}ha=c[K>>2]|0;if((ha|0)==3){ns(b,c[J>>2]|0,fb,g,(Ga&4096|0)!=0,Qa,La,1,0,(Ga&8192|0)!=0);break}else{c[Ja>>2]=ha;c[Ma+4>>2]=3;Qe(0,72520,Ma);tc()}}}while(0);Of(E);break}if((Qc(db|0,65320)|0)!=0){if((Qc(db|0,65344)|0)==0){break}else{ka=223;break}}do{if((c[(pv(ma,64e3,E)|0)>>2]|0)==1){ua=c[K>>2]|0;if((ua|0)==1){la=c[J>>2]|0;break}else{c[Za>>2]=ua;c[ab+4>>2]=1;Qe(0,72520,ab);tc()}}else{la=0}}while(0);Of(E);if((Ga&131072|0)!=0){do{if((c[(pv(ma,65288,E)|0)>>2]|0)==3){ha=c[K>>2]|0;if((ha|0)==3){ns(b,c[J>>2]|0,fb,g,0,0,la,1,0,0);break}else{c[Ta>>2]=ha;c[Wa+4>>2]=3;Qe(0,72520,Wa);tc()}}}while(0);Of(E);break}if((c[(Yu(ma,65328,E,0)|0)>>2]|0)==6){ua=c[K>>2]|0;if((ua|0)!=6){c[Sa>>2]=ua;c[Ra+4>>2]=6;Qe(0,72520,Ra);tc()}va=c[(c[J>>2]|0)+12>>2]|0;ua=ye(va,4)|0;wa=(va|0)>0;c:do{if(wa){ya=0;d:while(1){xa=ua+(ya<<2)|0;c[xa>>2]=0;za=c[K>>2]|0;if((za|0)!=6){ka=185;break}ut(c[J>>2]|0,ya,F)|0;za=c[I>>2]|0;do{if((za|0)==3){he=c[D>>2]|0;je=FW(32)|0;ie(je,he);c[xa>>2]=je}else if((za|0)==6){za=c[D>>2]|0;if((c[za+12>>2]|0)!=2){break}if((c[(ut(za,1,ha)|0)>>2]|0)==3){za=c[ja>>2]|0;if((za|0)!=3){ka=191;break d}he=c[ia>>2]|0;je=FW(32)|0;ie(je,he);c[xa>>2]=je}Of(ha)}}while(0);Of(F);if((c[xa>>2]|0)==0){je=FW(32)|0;ee(je);c[xa>>2]=je}ya=ya+1|0;if((ya|0)>=(va|0)){break c}}if((ka|0)==185){c[Ba>>2]=za;c[Ca+4>>2]=6;Qe(0,72520,Ca);tc()}else if((ka|0)==191){c[Da>>2]=za;c[Ea+4>>2]=3;Qe(0,72520,Ea);tc()}}}while(0);xa=ye(va,1)|0;pv(ma,65288,F)|0;e:do{if(wa){za=0;f:while(1){ya=xa+za|0;a[ya]=0;Aa=c[I>>2]|0;g:do{if((Aa|0)==6){Aa=ua+(za<<2)|0;Ba=0;while(1){Ca=c[D>>2]|0;if((Ba|0)>=(c[Ca+12>>2]|0)){break g}do{if((c[(ut(Ca,Ba,ha)|0)>>2]|0)==3){Ca=c[ja>>2]|0;if((Ca|0)!=3){ka=207;break f}if((se(c[ia>>2]|0,c[Aa>>2]|0)|0)!=0){break}a[ya]=1}}while(0);Of(ha);Ca=c[I>>2]|0;if((Ca|0)==6){Ba=Ba+1|0}else{ka=203;break f}}}else if((Aa|0)==3){if((se(c[D>>2]|0,c[ua+(za<<2)>>2]|0)|0)!=0){break}a[ya]=1}}while(0);za=za+1|0;if((za|0)>=(va|0)){break e}}if((ka|0)==203){c[ra>>2]=Ca;c[qa+4>>2]=6;Qe(0,72520,qa);tc()}else if((ka|0)==207){c[sa>>2]=Ca;c[ta+4>>2]=3;Qe(0,72520,ta);tc()}}}while(0);Of(F);do{if((c[(Yu(ma,65336,F,0)|0)>>2]|0)==1){ha=c[I>>2]|0;if((ha|0)==1){na=c[D>>2]|0;break}else{c[oa>>2]=ha;c[pa+4>>2]=1;Qe(0,72520,pa);tc()}}else{na=0}}while(0);Of(F);os(b,ua,xa,va,na,fb,g,la);if(wa){ia=0;do{ha=c[ua+(ia<<2)>>2]|0;if((ha|0)!=0){ke(ha);HW(ha)}ia=ia+1|0;}while((ia|0)<(va|0))}Fe(ua);Fe(xa)}Of(E)}else{ka=223}}while(0);if((ka|0)==223){Qe(-1,65352,cb)}if((fb|0)!=0){ke(fb);HW(fb)}ha=b+112|0;Jf(M,c[ha>>2]|0)|0;ia=Ge(55936)|0;ja=c[(c[Z>>2]|0)+24>>2]|0;c[ea>>2]=0;c[K>>2]=1;c[J>>2]=ja;ja=c[R>>2]|0;if((ja|0)!=7){c[ga>>2]=ja;c[fa+4>>2]=7;Qe(0,72520,fa);tc()}Tu(c[N>>2]|0,ia,E);fa=Ge(55944)|0;c[J>>2]=0;c[ea>>2]=0;c[K>>2]=4;c[J>>2]=Ge(55952)|0;ea=c[R>>2]|0;if((ea|0)!=7){c[ca>>2]=ea;c[da+4>>2]=7;Qe(0,72520,da);tc()}Tu(c[N>>2]|0,fa,E);If(E,c[ha>>2]|0)|0;c[I>>2]=2;ca=F+8|0;h[ca>>3]=0.0;da=c[K>>2]|0;if((da|0)!=6){c[aa>>2]=da;c[ba+4>>2]=6;Qe(0,72520,ba);tc()}tt(c[J>>2]|0,F);c[I>>2]=2;h[ca>>3]=0.0;aa=c[K>>2]|0;if((aa|0)!=6){c[_>>2]=aa;c[$+4>>2]=6;Qe(0,72520,$);tc()}tt(c[J>>2]|0,F);_=b+28|0;$=c[_>>2]|0;Ae=+h[$+16>>3]- +h[$>>3];c[I>>2]=2;h[ca>>3]=Ae;$=c[K>>2]|0;if(($|0)!=6){c[Y>>2]=$;c[X+4>>2]=6;Qe(0,72520,X);tc()}tt(c[J>>2]|0,F);X=c[_>>2]|0;Ae=+h[X+24>>3]- +h[X+8>>3];c[I>>2]=2;h[ca>>3]=Ae;X=c[K>>2]|0;if((X|0)!=6){c[W>>2]=X;c[V+4>>2]=6;Qe(0,72520,V);tc()}tt(c[J>>2]|0,F);V=Ge(55960)|0;W=c[R>>2]|0;if((W|0)!=7){c[S>>2]=W;c[U+4>>2]=7;Qe(0,72520,U);tc()}Tu(c[N>>2]|0,V,E);do{if((c[T>>2]|0)==7){S=Ge(55992)|0;T=Mf(P,E)|0;R=c[R>>2]|0;if((R|0)==7){Tu(c[N>>2]|0,S,T);break}else{c[Q>>2]=R;c[O+4>>2]=7;Qe(0,72520,O);tc()}}}while(0);Of(P);N=FW(56)|0;O=Ic(c[(c[Z>>2]|0)+28>>2]|0)|0;Tj(N,O,0,c[(c[Z>>2]|0)+24>>2]|0,M);M=b+64|0;Of(M);Lf(M,N)|0;O=c[Z>>2]|0;if((O|0)!=0){ke(O);HW(O)}hd[c[(c[N>>2]|0)+116>>2]&127](N,1);do{if((a[(c[L>>2]|0)+45|0]&1)!=0){do{if((c[(Yu(A,55616,E,0)|0)>>2]|0)==7){K=c[K>>2]|0;if((K|0)!=7){c[H>>2]=K;c[G+4>>2]=7;Qe(0,72520,G);tc()}if((c[(Zu(c[J>>2]|0,55416,F)|0)>>2]|0)!=9){break}G=c[I>>2]|0;if((G|0)==9){ge=D;he=c[ge+4>>2]|0;je=b+52|0;c[je>>2]=c[ge>>2];c[je+4>>2]=he;break}else{c[C>>2]=G;c[B+4>>2]=9;Qe(0,72520,B);tc()}}}while(0);Of(F);Of(E);B=b+52|0;C=c[ha>>2]|0;if((c[B>>2]|0)==0){qn(y,C,M);ge=w;he=c[ge+4>>2]|0;je=B;c[je>>2]=c[ge>>2];c[je+4>>2]=he}else{ge=B;he=c[ge+4>>2]|0;je=x;c[je>>2]=c[ge>>2];c[je+4>>2]=he;$W(z|0,x|0,8)|0;pn(C,M,v)}c[u>>2]=13;v=p+8|0;c[v>>2]=0;c[v+4>>2]=0;Jf(p,c[ha>>2]|0)|0;je=q+8|0;ge=c[B>>2]|0;he=c[b+56>>2]|0;c[t>>2]=9;c[je>>2]=ge;c[je+4>>2]=he;t=c[u>>2]|0;if((t|0)==7){Wu(c[v>>2]|0,55416,q);Wu(A,55616,p);je=FW(24)|0;Ru(je,A);de=je+20|0;c[de>>2]=(c[de>>2]|0)+ -1;c[s>>2]=13;de=o+8|0;c[de>>2]=0;c[de+4>>2]=0;Kf(o,je)|0;je=c[ha>>2]|0;de=b+116|0;ge=c[de+4>>2]|0;he=r;c[he>>2]=c[de>>2];c[he+4>>2]=ge;$W(d|0,r|0,8)|0;pn(je,o,m);Of(o);break}else{c[l>>2]=t;c[j+4>>2]=7;Qe(0,72520,j);tc()}}}while(0);if((g|0)!=0){vy(g);HW(g)}Of(n);Of(e);i=f;return}function qs(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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;g=i;r=i;i=i+16|0;f=r;m=i;i=i+16|0;q=m;k=i;i=i+16|0;l=k;n=i;i=i+16|0;o=n;p=i;i=i+16|0;j=p;c[r>>2]=13;r=f+8|0;c[r>>2]=0;c[r+4>>2]=0;r=c[b+48>>2]|0;if((r&2|0)!=0){i=g;return}do{if(e){if((r&4|0)!=0){break}i=g;return}else{if((r&32|0)==0){break}i=g;return}}while(0);r=c[b+88>>2]|0;do{if((r|0)!=0){e=b+96|0;if((c[e>>2]|0)!=9){break}if(GF(r,e)|0){break}i=g;return}}while(0);r=b+177|0;a[r]=0;ps(b);e=b+112|0;Nf(b+64|0,c[e>>2]|0,f,0)|0;do{if((a[r]&1)!=0){u=q+8|0;c[k>>2]=13;s=l+8|0;c[s>>2]=0;t=s+4|0;c[t>>2]=0;c[u>>2]=0;c[u+4>>2]=0;c[m>>2]=4;c[u>>2]=Ge(64672)|0;c[s>>2]=0;c[t>>2]=0;c[k>>2]=4;c[s>>2]=Ge(65376)|0;c[n>>2]=13;k=o+8|0;c[k>>2]=0;c[k+4>>2]=0;k=FW(24)|0;Qu(k,c[e>>2]|0);n=k+20|0;c[n>>2]=(c[n>>2]|0)+ -1;Tu(k,Ge(65384)|0,q);Tu(k,Ge(55944)|0,l);Kf(o,k)|0;c[p>>2]=13;k=j+8|0;c[k>>2]=0;c[k+4>>2]=0;k=FW(24)|0;Qu(k,c[e>>2]|0);q=k+20|0;c[q>>2]=(c[q>>2]|0)+ -1;Tu(k,Ge(64664)|0,o);Kf(j,k)|0;k=FW(24)|0;Qu(k,c[e>>2]|0);Tu(k,Ge(65280)|0,j);Px(d,k);if((k|0)==0){break}Su(k);HW(k)}}while(0);u=c[b+28>>2]|0;Tx(d,f,0,c[b+132>>2]|0,+h[u>>3],+h[u+8>>3],+h[u+16>>3],+h[u+24>>3]);if((a[r]&1)!=0){ux(d)}Of(f);i=g;return}function rs(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;m=i;i=i+8|0;n=i;i=i+8|0;h=n;p=i;i=i+16|0;j=p;k=i;i=i+16|0;d=k;o=i;i=i+16|0;g=o;c[p>>2]=13;l=j+8|0;c[l>>2]=0;c[l+4>>2]=0;do{if((c[(Yu(f,56120,j,0)|0)>>2]|0)==3){p=c[p>>2]|0;if((p|0)==3){n=c[l>>2]|0;p=FW(32)|0;ie(p,n);c[b+148>>2]=p;break}else{c[n>>2]=p;c[h+4>>2]=3;Qe(0,72520,h);tc()}}else{c[b+148>>2]=0}}while(0);Of(j);c[k>>2]=13;p=d+8|0;c[p>>2]=0;c[p+4>>2]=0;if((c[(Yu(f,65424,d,0)|0)>>2]|0)!=7){Qe(-1,65432,m);c[b+152>>2]=0;a[b+144|0]=0;Of(d);i=e;return}c[o>>2]=13;p=g+8|0;c[p>>2]=0;c[p+4>>2]=0;Yu(f,55424,g,0)|0;p=(c[o>>2]|0)==7;f=FW(104)|0;if(p){DF(f,d,g);c[b+152>>2]=f}else{CF(f,d);c[b+152>>2]=f}h=b+152|0;if((a[f]&1)==0){if((f|0)!=0){BF(f);HW(f)}c[h>>2]=0;a[b+144|0]=0}Of(g);Of(d);i=e;return}function ss(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;k=i;i=i+8|0;j=k;c[b>>2]=55512;h=b+8|0;c[h>>2]=13;c[b+16>>2]=0;c[b+20>>2]=0;c[b+64>>2]=13;c[b+72>>2]=0;c[b+76>>2]=0;c[b+96>>2]=13;c[b+104>>2]=0;c[b+108>>2]=0;m=b+145|0;do{if((c[g>>2]|0)==9){a[m]=1;m=c[g>>2]|0;if((m|0)==9){k=g+8|0;g=c[k+4>>2]|0;m=b+116|0;c[m>>2]=c[k>>2];c[m+4>>2]=g;break}else{c[k>>2]=m;c[j+4>>2]=9;Qe(0,72520,j);tc()}}else{a[m]=0}}while(0);c[b+48>>2]=0;m=b+24|0;c[m>>2]=0;Kf(h,e)|0;zr(b,d,e,f);c[b>>2]=65408;c[m>>2]=19;rs(b,0,0,e);i=l;return}function ts(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=65408;d=c[a+148>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+152>>2]|0;if((d|0)==0){Cr(a);HW(a);i=b;return}BF(d);HW(d);Cr(a);HW(a);i=b;return}function us(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=65408;d=c[a+148>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+152>>2]|0;if((d|0)==0){Cr(a);i=b;return}BF(d);HW(d);Cr(a);i=b;return}function vs(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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,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,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0;g=i;s=i;i=i+8|0;t=s;q=i;i=i+8|0;r=q;o=i;i=i+8|0;p=o;m=i;i=i+8|0;n=m;y=i;i=i+8|0;w=y;C=i;i=i+8|0;B=C;H=i;i=i+8|0;I=H;L=i;i=i+8|0;M=L;R=i;i=i+8|0;O=R;T=i;i=i+8|0;U=T;V=i;i=i+8|0;W=V;Z=i;i=i+8|0;Y=Z;$=i;i=i+8|0;_=$;ba=i;i=i+8|0;aa=ba;ca=i;i=i+8|0;da=ca;ga=i;i=i+8|0;fa=ga;ia=i;i=i+8|0;ha=ia;ja=i;i=i+8|0;ka=ja;la=i;i=i+8|0;ma=la;oa=i;i=i+8|0;na=oa;qa=i;i=i+8|0;pa=qa;ta=i;i=i+8|0;sa=ta;ea=i;i=i+8|0;ua=ea;X=i;i=i+8|0;wa=X;J=i;i=i+16|0;f=J;P=i;i=i+16|0;j=P;va=i;i=i+16|0;ra=va;x=i;i=i+16|0;v=x;G=i;i=i+16|0;D=G;Q=i;i=i+16|0;F=Q;S=i;i=i+16|0;K=S;E=i;i=i+16|0;z=E;A=i;i=i+16|0;l=A;u=i;i=i+32|0;k=u;c[J>>2]=13;J=f+8|0;c[J>>2]=0;c[J+4>>2]=0;J=c[b+48>>2]|0;if((J&2|0)!=0){i=g;return}do{if(e){if((J&4|0)!=0){break}i=g;return}else{if((J&32|0)==0){break}i=g;return}}while(0);e=c[b+88>>2]|0;do{if((e|0)!=0){J=b+96|0;if((c[J>>2]|0)!=9){break}if(GF(e,J)|0){break}i=g;return}}while(0);e=b+64|0;do{if((c[e>>2]|0)==5){J=b+152|0;N=c[J>>2]|0;if((a[N+32|0]&1)==0){break}c[P>>2]=13;xa=j+8|0;c[xa>>2]=0;c[xa+4>>2]=0;Mf(N+16|0,j)|0;J=c[J>>2]|0;N=c[J+4>>2]|0;J=c[J+8>>2]|0;do{if(!((N|0)==-1|(J|0)==-1)){if((c[P>>2]|0)==13){break}xa=FW(32)|0;ee(xa);P=b+124|0;c[P>>2]=xa;ne(xa,56352,-1)|0;xa=c[P>>2]|0;c[X>>2]=N;c[wa+4>>2]=J;pe(xa,65448,wa)|0;ne(c[P>>2]|0,65472,-1)|0;ne(c[P>>2]|0,63808,-1)|0;c[va>>2]=13;wa=ra+8|0;c[wa>>2]=0;c[wa+4>>2]=0;X=b+112|0;Jf(ra,c[X>>2]|0)|0;va=c[va>>2]|0;if((va|0)!=7){c[ea>>2]=va;c[ua+4>>2]=7;Qe(0,72520,ua);tc()}Wu(c[wa>>2]|0,65488,j);c[x>>2]=13;ea=v+8|0;c[ea>>2]=0;c[ea+4>>2]=0;Jf(v,c[X>>2]|0)|0;ua=c[x>>2]|0;if((ua|0)!=7){c[ta>>2]=ua;c[sa+4>>2]=7;Qe(0,72520,sa);tc()}Wu(c[ea>>2]|0,56040,ra);c[G>>2]=13;ra=D+8|0;c[ra>>2]=0;c[ra+4>>2]=0;c[Q>>2]=13;sa=F+8|0;c[sa>>2]=0;va=sa+4|0;c[va>>2]=0;c[S>>2]=13;ua=K+8|0;c[ua>>2]=0;ta=ua+4|0;c[ta>>2]=0;Jf(D,c[X>>2]|0)|0;wa=c[(c[P>>2]|0)+24>>2]|0;c[va>>2]=0;c[Q>>2]=1;c[sa>>2]=wa;wa=c[G>>2]|0;if((wa|0)!=7){c[qa>>2]=wa;c[pa+4>>2]=7;Qe(0,72520,pa);tc()}Wu(c[ra>>2]|0,55936,F);c[sa>>2]=0;c[va>>2]=0;c[Q>>2]=4;c[sa>>2]=Ge(55952)|0;pa=c[G>>2]|0;if((pa|0)!=7){c[oa>>2]=pa;c[na+4>>2]=7;Qe(0,72520,na);tc()}Wu(c[ra>>2]|0,55944,F);c[sa>>2]=0;c[va>>2]=0;c[Q>>2]=4;c[sa>>2]=Ge(65496)|0;na=c[G>>2]|0;if((na|0)!=7){c[la>>2]=na;c[ma+4>>2]=7;Qe(0,72520,ma);tc()}Wu(c[ra>>2]|0,56208,F);If(F,c[X>>2]|0)|0;c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=0;la=c[Q>>2]|0;if((la|0)!=6){c[ja>>2]=la;c[ka+4>>2]=6;Qe(0,72520,ka);tc()}tt(c[sa>>2]|0,K);c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=0;ja=c[Q>>2]|0;if((ja|0)!=6){c[ia>>2]=ja;c[ha+4>>2]=6;Qe(0,72520,ha);tc()}tt(c[sa>>2]|0,K);c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=N;ha=c[Q>>2]|0;if((ha|0)!=6){c[ga>>2]=ha;c[fa+4>>2]=6;Qe(0,72520,fa);tc()}tt(c[sa>>2]|0,K);c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=J;fa=c[Q>>2]|0;if((fa|0)!=6){c[ca>>2]=fa;c[da+4>>2]=6;Qe(0,72520,da);tc()}tt(c[sa>>2]|0,K);ca=c[G>>2]|0;if((ca|0)!=7){c[ba>>2]=ca;c[aa+4>>2]=7;Qe(0,72520,aa);tc()}Wu(c[ra>>2]|0,55960,F);If(F,c[X>>2]|0)|0;c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=1;aa=c[Q>>2]|0;if((aa|0)!=6){c[$>>2]=aa;c[_+4>>2]=6;Qe(0,72520,_);tc()}tt(c[sa>>2]|0,K);c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=0;_=c[Q>>2]|0;if((_|0)!=6){c[Z>>2]=_;c[Y+4>>2]=6;Qe(0,72520,Y);tc()}tt(c[sa>>2]|0,K);c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=0;Y=c[Q>>2]|0;if((Y|0)!=6){c[V>>2]=Y;c[W+4>>2]=6;Qe(0,72520,W);tc()}tt(c[sa>>2]|0,K);c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=1;V=c[Q>>2]|0;if((V|0)!=6){c[T>>2]=V;c[U+4>>2]=6;Qe(0,72520,U);tc()}tt(c[sa>>2]|0,K);c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=(N|0)/-2|0;T=c[Q>>2]|0;if((T|0)!=6){c[R>>2]=T;c[O+4>>2]=6;Qe(0,72520,O);tc()}tt(c[sa>>2]|0,K);c[ta>>2]=0;c[S>>2]=1;c[ua>>2]=(J|0)/-2|0;O=c[Q>>2]|0;if((O|0)!=6){c[L>>2]=O;c[M+4>>2]=6;Qe(0,72520,M);tc()}tt(c[sa>>2]|0,K);K=c[G>>2]|0;if((K|0)!=7){c[H>>2]=K;c[I+4>>2]=7;Qe(0,72520,I);tc()}Wu(c[ra>>2]|0,65504,F);F=c[G>>2]|0;if((F|0)!=7){c[C>>2]=F;c[B+4>>2]=7;Qe(0,72520,B);tc()}Wu(c[ra>>2]|0,55992,v);c[E>>2]=13;B=z+8|0;c[B>>2]=0;c[B+4>>2]=0;B=FW(56)|0;xa=Ge(c[(c[P>>2]|0)+28>>2]|0)|0;Tj(B,xa,0,c[(c[P>>2]|0)+24>>2]|0,D);hd[c[(c[B>>2]|0)+116>>2]&127](B,1);Lf(z,B)|0;B=c[P>>2]|0;if((B|0)!=0){ke(B);HW(B)}c[A>>2]=13;B=l+8|0;c[B>>2]=0;c[B+4>>2]=0;Jf(l,c[X>>2]|0)|0;A=c[A>>2]|0;if((A|0)!=7){c[y>>2]=A;c[w+4>>2]=7;Qe(0,72520,w);tc()}Wu(c[B>>2]|0,65496,z);Jf(v,c[X>>2]|0)|0;w=c[x>>2]|0;if((w|0)!=7){c[m>>2]=w;c[n+4>>2]=7;Qe(0,72520,n);tc()}Wu(c[ea>>2]|0,56040,l);xa=FW(32)|0;ee(xa);c[P>>2]=xa;ne(xa,56352,-1)|0;xa=c[P>>2]|0;c[o>>2]=N;c[p+4>>2]=J;pe(xa,65512,p)|0;ne(c[P>>2]|0,56352,-1)|0;xa=c[P>>2]|0;c[q>>2]=N;c[r+4>>2]=J;pe(xa,65512,r)|0;xa=c[P>>2]|0;c[s>>2]=(N|0)/2|0;c[t+4>>2]=(J|0)/2|0;pe(xa,65536,t)|0;ne(c[P>>2]|0,65560,-1)|0;ne(c[P>>2]|0,63808,-1)|0;ne(c[P>>2]|0,63808,-1)|0;bX(u|0,0,16)|0;h[k+16>>3]=+(N|0);h[k+24>>3]=+(J|0);Er(b,k,0,v,e);k=c[P>>2]|0;if((k|0)==0){break}ke(k);HW(k)}}while(0);Of(j)}}while(0);Nf(e,c[b+112>>2]|0,f,0)|0;xa=c[b+28>>2]|0;Tx(d,f,0,c[b+132>>2]|0,+h[xa>>3],+h[xa+8>>3],+h[xa+16>>3],+h[xa+24>>3]);Of(f);i=g;return}function ws(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;g=i;i=i+8|0;h=g;m=i;i=i+8|0;p=i;i=i+8|0;n=p;l=i;i=i+16|0;k=l;c[l>>2]=13;j=k+8|0;c[j>>2]=0;c[j+4>>2]=0;o=b+148|0;c[o>>2]=0;do{if((c[(Yu(f,56120,k,0)|0)>>2]|0)==3){q=c[l>>2]|0;if((q|0)==3){p=c[j>>2]|0;q=FW(32)|0;ie(q,p);c[o>>2]=q;break}else{c[p>>2]=q;c[n+4>>2]=3;Qe(0,72520,n);tc()}}}while(0);Of(k);n=b+156|0;c[n>>2]=0;do{if((c[(Yu(f,55424,k,0)|0)>>2]|0)==7){q=uE(k,c[e+92>>2]|0)|0;c[n>>2]=q;if((jd[c[(c[q>>2]|0)+12>>2]&511](q)|0)!=6){break}if((c[b+36>>2]|0)!=0){break}Qe(-1,65608,m);e=c[n>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+4>>2]&511](e)}c[n>>2]=0;a[b+144|0]=0}}while(0);Yu(f,64520,b+160|0,0)|0;b=b+152|0;c[b>>2]=0;if((c[(Yu(f,64512,k,0)|0)>>2]|0)!=7){Of(k);i=d;return}f=FW(32)|0;l=c[l>>2]|0;if((l|0)!=7){c[g>>2]=l;c[h+4>>2]=7;Qe(0,72520,h);tc()}xr(f,c[j>>2]|0);c[b>>2]=f;Of(k);i=d;return}function xs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;k=i;i=i+8|0;j=k;c[b>>2]=55512;h=b+8|0;c[h>>2]=13;c[b+16>>2]=0;c[b+20>>2]=0;c[b+64>>2]=13;c[b+72>>2]=0;c[b+76>>2]=0;c[b+96>>2]=13;c[b+104>>2]=0;c[b+108>>2]=0;m=b+145|0;do{if((c[g>>2]|0)==9){a[m]=1;m=c[g>>2]|0;if((m|0)==9){k=g+8|0;g=c[k+4>>2]|0;m=b+116|0;c[m>>2]=c[k>>2];c[m+4>>2]=g;break}else{c[k>>2]=m;c[j+4>>2]=9;Qe(0,72520,j);tc()}}else{a[m]=0}}while(0);c[b+48>>2]=0;m=b+24|0;c[m>>2]=0;Kf(h,e)|0;zr(b,d,e,f);c[b>>2]=65584;c[b+160>>2]=13;g=b+168|0;c[g>>2]=0;c[g+4>>2]=0;c[m>>2]=21;ws(b,0,f,e);i=l;return}function ys(a){a=a|0;var b=0;b=i;zs(a);HW(a);i=b;return}function zs(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=65584;d=c[a+148>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+152>>2]|0;if((d|0)!=0){yr(d);HW(d)}d=c[a+156>>2]|0;if((d|0)==0){d=a+160|0;Of(d);Cr(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);d=a+160|0;Of(d);Cr(a);i=b;return}function As(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;g=i;i=i+8|0;b=g;j=i;i=i+16|0;d=j;c[j>>2]=13;f=d+8|0;c[f>>2]=0;c[f+4>>2]=0;k=(c[(Yu(e,56208,d,0)|0)>>2]|0)==4;e=FW(32)|0;if(!k){fe(e,65712);c[a+192>>2]=e;Of(d);i=h;return}j=c[j>>2]|0;if((j|0)!=4){c[g>>2]=j;c[b+4>>2]=4;Qe(0,72520,b);tc()}fe(e,c[f>>2]|0);c[a+192>>2]=e;Of(d);i=h;return}function Bs(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=65688;d=c[a+192>>2]|0;if((d|0)!=0){ke(d);HW(d)}Or(a);HW(a);i=b;return}function Cs(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=65688;d=c[a+192>>2]|0;if((d|0)==0){Or(a);i=b;return}ke(d);HW(d);Or(a);i=b;return}function Ds(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;f=i;i=i+8|0;g=f;k=i;i=i+8|0;l=k;n=i;i=i+8|0;m=n;o=i;i=i+8|0;p=o;j=i;i=i+16|0;h=j;q=i;i=i+32|0;c[j>>2]=13;b=h+8|0;c[b>>2]=0;c[b+4>>2]=0;if((c[(Yu(e,55944,h,0)|0)>>2]|0)==4){r=c[j>>2]|0;if((r|0)!=4){c[o>>2]=r;c[p+4>>2]=4;Qe(0,72520,p);tc()}fe(q,c[b>>2]|0);do{if((te(q,55048)|0)==0){c[a+24>>2]=5}else{if((te(q,55056)|0)!=0){break}c[a+24>>2]=6}}while(0);ke(q)}Of(h);do{if((c[(Yu(e,64136,h,0)|0)>>2]|0)==6){o=FW(40)|0;p=c[j>>2]|0;if((p|0)==6){vr(o,c[b>>2]|0,0);c[a+192>>2]=o;break}else{c[n>>2]=p;c[m+4>>2]=6;Qe(0,72520,m);tc()}}else{c[a+192>>2]=0}}while(0);Of(h);do{if((c[(Yu(e,64072,h,0)|0)>>2]|0)==7){m=FW(16)|0;n=c[j>>2]|0;if((n|0)==7){or(m,c[b>>2]|0);c[a+196>>2]=m;break}else{c[k>>2]=n;c[l+4>>2]=7;Qe(0,72520,l);tc()}}else{c[a+196>>2]=0}}while(0);Of(h);k=a+200|0;c[k>>2]=0;if((c[(Yu(e,64080,h,0)|0)>>2]|0)!=6){Of(h);i=d;return}e=c[j>>2]|0;if((e|0)!=6){c[f>>2]=e;c[g+4>>2]=6;Qe(0,72520,g);tc()}c[k>>2]=nr(c[b>>2]|0,c[a+28>>2]|0)|0;Of(h);i=d;return}function Es(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=65728;d=c[a+192>>2]|0;if((d|0)!=0){HW(d)}d=c[a+196>>2]|0;if((d|0)!=0){HW(d)}d=c[a+200>>2]|0;if((d|0)==0){Or(a);HW(a);i=b;return}HW(d);Or(a);HW(a);i=b;return}function Fs(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=65728;d=c[a+192>>2]|0;if((d|0)!=0){HW(d)}d=c[a+196>>2]|0;if((d|0)!=0){HW(d)}d=c[a+200>>2]|0;if((d|0)==0){Or(a);i=b;return}HW(d);Or(a);i=b;return}function Gs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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.0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0.0,ca=0.0;f=i;p=i;i=i+48|0;A=p;x=i;i=i+48|0;y=x;v=i;i=i+48|0;w=v;t=i;i=i+48|0;u=t;r=i;i=i+16|0;s=r;G=i;i=i+32|0;q=G;E=i;i=i+16|0;C=E;z=i;i=i+32|0;F=z;B=i;i=i+40|0;H=B;L=i;i=i+8|0;K=L;M=i;i=i+8|0;N=M;T=i;i=i+16|0;Q=T;P=i;i=i+32|0;U=P;S=i;i=i+40|0;R=S;D=i;i=i+16|0;e=D;n=i;i=i+32|0;m=n;o=i;i=i+16|0;l=o;j=i;i=i+16|0;g=j;c[D>>2]=13;D=e+8|0;c[D>>2]=0;c[D+4>>2]=0;D=c[a+48>>2]|0;if((D&2|0)!=0){i=f;return}do{if(d){if((D&4|0)!=0){break}i=f;return}else{if((D&32|0)==0){break}i=f;return}}while(0);D=c[a+88>>2]|0;do{if((D|0)!=0){d=a+96|0;if((c[d>>2]|0)!=9){break}if(GF(D,d)|0){break}i=f;return}}while(0);d=a+64|0;do{if((c[d>>2]|0)==5){J=+h[a+160>>3];D=FW(32)|0;ee(D);I=a+124|0;c[I>>2]=D;ne(D,56352,-1)|0;D=a+132|0;V=c[D>>2]|0;do{if((V|0)!=0){W=c[V+32>>2]|0;if((W|0)==3){W=c[I>>2]|0;X=+h[V+8>>3];O=+h[V+16>>3];T=P;h[k>>3]=+h[V>>3];c[T>>2]=c[k>>2];c[T+4>>2]=c[k+4>>2];V=U+8|0;h[k>>3]=X;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=U+16|0;h[k>>3]=O;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];c[U+24>>2]=55808;pe(W,55768,U)|0;break}else if((W|0)==1){W=c[I>>2]|0;U=T;h[k>>3]=+h[V>>3];c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];c[Q+8>>2]=71;pe(W,55816,Q)|0;break}else if((W|0)==4){W=c[I>>2]|0;Y=+h[V+8>>3];O=+h[V+16>>3];X=+h[V+24>>3];U=S;h[k>>3]=+h[V>>3];c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];V=R+8|0;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=R+16|0;h[k>>3]=O;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=R+24|0;h[k>>3]=X;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];c[R+32>>2]=75;pe(W,55728,R)|0;break}else{break}}}while(0);Q=a+128|0;P=c[Q>>2]|0;do{if((P|0)!=0){O=+wd[c[(c[P>>2]|0)+12>>2]&1](P);W=c[Q>>2]|0;W=(jd[c[(c[W>>2]|0)+24>>2]&511](W)|0)==1;P=c[I>>2]|0;if(W){ne(P,64248,-1)|0;P=c[Q>>2]|0;P=jd[c[(c[P>>2]|0)+16>>2]&511](P)|0;Q=c[Q>>2]|0;Q=jd[c[(c[Q>>2]|0)+20>>2]&511](Q)|0;S=c[I>>2]|0;if((P|0)>0){R=0;while(1){W=M;h[k>>3]=+h[Q+(R<<3)>>3];c[W>>2]=c[k>>2];c[W+4>>2]=c[k+4>>2];pe(S,64256,N)|0;R=R+1|0;S=c[I>>2]|0;if((R|0)<(P|0)){}else{break}}}ne(S,64272,-1)|0}else{ne(P,64280,-1)|0}W=c[I>>2]|0;h[k>>3]=O;c[L>>2]=c[k>>2];c[L+4>>2]=c[k+4>>2];pe(W,64288,K)|0;K=a+192|0;L=c[K>>2]|0;do{if((L|0)!=0){M=c[L+32>>2]|0;if((M|0)==1){W=c[I>>2]|0;V=E;h[k>>3]=+h[L>>3];c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];c[C+8>>2]=103;pe(W,55816,C)|0;break}else if((M|0)==4){W=c[I>>2]|0;Z=+h[L+8>>3];X=+h[L+16>>3];Y=+h[L+24>>3];V=B;h[k>>3]=+h[L>>3];c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=H+8|0;h[k>>3]=Z;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=H+16|0;h[k>>3]=X;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=H+24|0;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];c[H+32>>2]=107;pe(W,55728,H)|0;break}else if((M|0)==3){W=c[I>>2]|0;Y=+h[L+8>>3];Z=+h[L+16>>3];V=z;h[k>>3]=+h[L>>3];c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=F+8|0;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=F+16|0;h[k>>3]=Z;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];c[F+24>>2]=55800;pe(W,55768,F)|0;break}else{break}}}while(0);if((c[a+24>>2]|0)==5){W=c[I>>2]|0;X=O*.5;V=c[a+28>>2]|0;Y=+h[V+16>>3]- +h[V>>3]-O;Z=+h[V+24>>3]- +h[V+8>>3]-O;V=G;h[k>>3]=X;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=q+8|0;h[k>>3]=X;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=q+16|0;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=q+24|0;h[k>>3]=Z;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];pe(W,65744,q)|0}else{W=c[a+28>>2]|0;aa=+h[W+16>>3]- +h[W>>3];ca=+h[W+24>>3]- +h[W+8>>3];Y=O*.5;Z=ca*.5;W=c[I>>2]|0;V=r;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=s+8|0;h[k>>3]=Z;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];pe(W,55832,s)|0;X=ca*.25;ba=Z+X;O=aa*.25;ca=ca-Y;_=aa*.5;W=c[I>>2]|0;V=t;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=u+8|0;h[k>>3]=ba;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=u+16|0;h[k>>3]=O;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=u+24|0;h[k>>3]=ca;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=u+32|0;h[k>>3]=_;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=u+40|0;h[k>>3]=ca;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];pe(W,55856,u)|0;aa=aa-Y;$=_+O;W=c[I>>2]|0;V=v;h[k>>3]=$;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=w+8|0;h[k>>3]=ca;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=w+16|0;h[k>>3]=aa;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=w+24|0;h[k>>3]=ba;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=w+32|0;h[k>>3]=aa;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=w+40|0;h[k>>3]=Z;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];pe(W,55856,w)|0;W=c[I>>2]|0;V=x;h[k>>3]=aa;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=y+8|0;h[k>>3]=X;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=y+16|0;h[k>>3]=$;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=y+24|0;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=y+32|0;h[k>>3]=_;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=y+40|0;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];pe(W,55856,y)|0;W=c[I>>2]|0;V=p;h[k>>3]=O;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=A+8|0;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=A+16|0;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=A+24|0;h[k>>3]=X;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=A+32|0;h[k>>3]=Y;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];V=A+40|0;h[k>>3]=Z;c[V>>2]=c[k>>2];c[V+4>>2]=c[k+4>>2];pe(W,55856,A)|0}p=c[I>>2]|0;if((c[K>>2]|0)==0){ne(p,55928,-1)|0;break}else{ne(p,65784,-1)|0;break}}}while(0);ne(c[I>>2]|0,63808,-1)|0;p=a+28|0;bX(n|0,0,16)|0;W=c[p>>2]|0;h[m+16>>3]=+h[W+16>>3]- +h[W>>3];h[m+24>>3]=+h[W+24>>3]- +h[W+8>>3];if(J==1.0){Er(a,m,0,0,d)}else{c[o>>2]=13;n=l+8|0;c[n>>2]=0;c[n+4>>2]=0;Er(a,m,1,0,l);n=c[I>>2]|0;if((n|0)!=0){ke(n);HW(n)}c[j>>2]=13;W=g+8|0;c[W>>2]=0;c[W+4>>2]=0;W=FW(32)|0;fe(W,63816);c[I>>2]=W;Fr(a,63832,l,63840,J,0,g);Er(a,m,0,g,d)}g=c[I>>2]|0;if((g|0)==0){break}ke(g);HW(g)}else{D=a+132|0;p=a+28|0}}while(0);Nf(d,c[a+112>>2]|0,e,0)|0;W=c[p>>2]|0;Tx(b,e,0,c[D>>2]|0,+h[W>>3],+h[W+8>>3],+h[W+16>>3],+h[W+24>>3]);Of(e);i=f;return}function Hs(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;e=i;h=i;i=i+8|0;g=h;l=i;i=i+8|0;m=l;o=i;i=i+8|0;p=o;r=i;i=i+8|0;q=r;v=i;i=i+8|0;u=v;x=i;i=i+8|0;w=x;z=i;i=i+8|0;y=z;C=i;i=i+8|0;B=i;i=i+8|0;A=B;F=i;i=i+8|0;D=F;k=i;i=i+16|0;d=k;E=i;i=i+32|0;t=i;i=i+16|0;s=t;c[k>>2]=13;j=d+8|0;c[j>>2]=0;c[j+4>>2]=0;if((c[(Yu(f,55944,d,0)|0)>>2]|0)==4){G=c[k>>2]|0;if((G|0)!=4){c[F>>2]=G;c[D+4>>2]=4;Qe(0,72520,D);tc()}fe(E,c[j>>2]|0);do{if((te(E,65816)|0)==0){c[b+24>>2]=7}else{if((te(E,65824)|0)!=0){break}c[b+24>>2]=8}}while(0);ke(E)}Of(d);G=(c[(Yu(f,65840,d,0)|0)>>2]|0)==6;D=FW(8)|0;do{if(G){C=c[k>>2]|0;if((C|0)==6){G=c[j>>2]|0;c[D>>2]=0;c[D+4>>2]=0;pr(D,G);c[b+192>>2]=D;break}else{c[B>>2]=C;c[A+4>>2]=6;Qe(0,72520,A);tc()}}else{c[D>>2]=0;c[D+4>>2]=0;c[b+192>>2]=D;Qe(-1,65856,C);a[b+144|0]=0}}while(0);Of(d);do{if((c[(Yu(f,64088,d,0)|0)>>2]|0)==6){A=c[k>>2]|0;if((A|0)!=6){c[z>>2]=A;c[y+4>>2]=6;Qe(0,72520,y);tc()}z=c[j>>2]|0;if((c[z+12>>2]|0)!=2){n=31;break}c[t>>2]=13;y=s+8|0;c[y>>2]=0;c[y+4>>2]=0;do{if((c[(ut(z,0,s)|0)>>2]|0)==3){z=c[t>>2]|0;if((z|0)==3){c[b+196>>2]=mr(c[y>>2]|0)|0;break}else{c[x>>2]=z;c[w+4>>2]=3;Qe(0,72520,w);tc()}}else{c[b+196>>2]=5}}while(0);Of(s);w=c[k>>2]|0;if((w|0)!=6){c[v>>2]=w;c[u+4>>2]=6;Qe(0,72520,u);tc()}do{if((c[(ut(c[j>>2]|0,1,s)|0)>>2]|0)==3){t=c[t>>2]|0;if((t|0)==3){c[b+200>>2]=mr(c[y>>2]|0)|0;break}else{c[r>>2]=t;c[q+4>>2]=3;Qe(0,72520,q);tc()}}else{c[b+200>>2]=5}}while(0);Of(s)}else{n=31}}while(0);if((n|0)==31){c[b+200>>2]=5;c[b+196>>2]=5}Of(d);do{if((c[(Yu(f,64136,d,0)|0)>>2]|0)==6){n=FW(40)|0;q=c[k>>2]|0;if((q|0)==6){vr(n,c[j>>2]|0,0);c[b+204>>2]=n;break}else{c[o>>2]=q;c[p+4>>2]=6;Qe(0,72520,p);tc()}}else{c[b+204>>2]=0}}while(0);Of(d);do{if((c[(Yu(f,64072,d,0)|0)>>2]|0)==7){n=FW(16)|0;o=c[k>>2]|0;if((o|0)==7){or(n,c[j>>2]|0);c[b+208>>2]=n;break}else{c[l>>2]=o;c[m+4>>2]=7;Qe(0,72520,m);tc()}}else{c[b+208>>2]=0}}while(0);Of(d);if((c[(Yu(f,64024,d,0)|0)>>2]|0)!=4){c[b+212>>2]=0;Of(d);i=e;return}f=FW(32)|0;k=c[k>>2]|0;if((k|0)!=4){c[h>>2]=k;c[g+4>>2]=4;Qe(0,72520,g);tc()}fe(f,c[j>>2]|0);do{if((te(f,65888)|0)==0){c[b+212>>2]=0}else{b=b+212|0;if((te(f,65904)|0)==0){c[b>>2]=1;break}else{c[b>>2]=2;break}}}while(0);if((f|0)==0){Of(d);i=e;return}ke(f);HW(f);Of(d);i=e;return}function Is(a){a=a|0;var b=0;b=i;Js(a);HW(a);i=b;return}function Js(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;c[a>>2]=65800;d=c[a+192>>2]|0;if((d|0)!=0){h=c[d>>2]|0;if((h|0)!=0){e=d+4|0;f=c[e>>2]|0;if((f|0)>0){g=0;do{j=c[h+(g<<2)>>2]|0;if((j|0)!=0){HW(j);h=c[d>>2]|0;f=c[e>>2]|0}g=g+1|0;}while((g|0)<(f|0))}Fe(h)}HW(d)}d=c[a+204>>2]|0;if((d|0)!=0){HW(d)}d=c[a+208>>2]|0;if((d|0)==0){Or(a);i=b;return}HW(d);Or(a);i=b;return}function Ks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;d=i;i=i+8|0;f=d;l=i;i=i+8|0;m=l;n=i;i=i+16|0;h=n;k=i;i=i+32|0;c[n>>2]=13;g=h+8|0;c[g>>2]=0;c[g+4>>2]=0;j=a+192|0;c[j>>2]=0;if((c[(Yu(e,65960,h,0)|0)>>2]|0)==4){o=c[n>>2]|0;if((o|0)!=4){c[l>>2]=o;c[m+4>>2]=4;Qe(0,72520,m);tc()}fe(k,c[g>>2]|0);do{if((te(k,55584)|0)==0){c[j>>2]=1}else{if((te(k,56336)|0)!=0){break}c[j>>2]=0}}while(0);ke(k)}Of(h);if((c[(Yu(e,64080,h,0)|0)>>2]|0)!=6){c[a+196>>2]=0;Of(h);i=b;return}e=c[n>>2]|0;if((e|0)!=6){c[d>>2]=e;c[f+4>>2]=6;Qe(0,72520,f);tc()}c[a+196>>2]=nr(c[g>>2]|0,c[a+28>>2]|0)|0;Of(h);i=b;return}function Ls(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=65936;d=c[a+196>>2]|0;if((d|0)!=0){HW(d)}Or(a);HW(a);i=b;return}function Ms(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=65936;d=c[a+196>>2]|0;if((d|0)==0){Or(a);i=b;return}HW(d);Or(a);i=b;return}function Ns(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;o=i;i=i+8|0;e=i;i=i+8|0;d=e;n=i;i=i+8|0;l=n;p=i;i=i+16|0;g=p;j=i;i=i+16|0;k=j;c[p>>2]=13;m=g+8|0;c[m>>2]=0;c[m+4>>2]=0;if((c[(Yu(f,66e3,g,0)|0)>>2]|0)!=6){c[b+196>>2]=0;c[b+192>>2]=0;Qe(-1,66008,o);a[b+144|0]=0;Of(g);i=h;return}f=c[p>>2]|0;if((f|0)!=6){c[n>>2]=f;c[l+4>>2]=6;Qe(0,72520,l);tc()}l=c[m>>2]|0;q=c[l+12>>2]|0;f=b+196|0;c[f>>2]=q;q=ye(q,4)|0;m=b+192|0;c[m>>2]=q;bX(q|0,0,c[f>>2]<<2|0)|0;if((c[f>>2]|0)<=0){Of(g);i=h;return}o=k+8|0;n=o+4|0;p=0;while(1){c[j>>2]=13;c[o>>2]=0;c[n>>2]=0;if((c[(ut(l,p,k)|0)>>2]|0)==6){q=FW(8)|0;b=c[j>>2]|0;if((b|0)!=6){j=8;break}b=c[o>>2]|0;c[q>>2]=0;c[q+4>>2]=0;pr(q,b);c[(c[m>>2]|0)+(p<<2)>>2]=q}Of(k);p=p+1|0;if((p|0)>=(c[f>>2]|0)){j=12;break}}if((j|0)==8){c[e>>2]=b;c[d+4>>2]=6;Qe(0,72520,d);tc()}else if((j|0)==12){Of(g);i=h;return}}function Os(a){a=a|0;var b=0;b=i;Ps(a);HW(a);i=b;return}function Ps(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;c[a>>2]=65976;d=a+192|0;j=c[d>>2]|0;if((j|0)==0){Or(a);i=b;return}e=a+196|0;h=c[e>>2]|0;if((h|0)>0){f=0;do{g=c[j+(f<<2)>>2]|0;if((g|0)!=0){l=c[g>>2]|0;if((l|0)!=0){h=g+4|0;j=c[h>>2]|0;if((j|0)>0){k=0;do{m=c[l+(k<<2)>>2]|0;if((m|0)!=0){HW(m);l=c[g>>2]|0;j=c[h>>2]|0}k=k+1|0;}while((k|0)<(j|0))}Fe(l)}HW(g);j=c[d>>2]|0;h=c[e>>2]|0}f=f+1|0;}while((f|0)<(h|0))}Fe(j);Or(a);i=b;return}function Qs(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;d=i;g=i;i=i+8|0;h=g;m=i;i=i+8|0;l=i;i=i+16|0;j=l;c[l>>2]=13;e=j+8|0;c[e>>2]=0;c[e+4>>2]=0;do{if((c[(Yu(f,66072,j,0)|0)>>2]|0)==7){k=3}else{if((c[(Yu(f,66072,j,0)|0)>>2]|0)==3){k=3;break}Qe(-1,66080,m);a[b+144|0]=0}}while(0);if((k|0)==3){Mf(j,b+192|0)|0}Of(j);m=(c[(Yu(f,56208,j,0)|0)>>2]|0)==4;f=FW(32)|0;if(!m){fe(f,66112);c[b+208>>2]=f;Of(j);i=d;return}k=c[l>>2]|0;if((k|0)!=4){c[g>>2]=k;c[h+4>>2]=4;Qe(0,72520,h);tc()}fe(f,c[e>>2]|0);c[b+208>>2]=f;Of(j);i=d;return}function Rs(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=66040;Of(a+192|0);d=c[a+208>>2]|0;if((d|0)==0){Or(a);HW(a);i=b;return}ke(d);HW(d);Or(a);HW(a);i=b;return}function Ss(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=66040;Of(a+192|0);d=c[a+208>>2]|0;if((d|0)==0){Or(a);i=b;return}ke(d);HW(d);Or(a);i=b;return}function Ts(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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.0,y=0,z=0,A=0.0,B=0.0,C=0.0;f=i;t=i;i=i+16|0;r=t;s=i;i=i+32|0;u=s;v=i;i=i+40|0;q=v;p=i;i=i+16|0;e=p;n=i;i=i+32|0;j=n;o=i;i=i+16|0;g=o;m=i;i=i+16|0;l=m;c[p>>2]=13;p=e+8|0;c[p>>2]=0;c[p+4>>2]=0;p=c[a+48>>2]|0;if((p&2|0)!=0){i=f;return}do{if(d){if((p&4|0)!=0){break}i=f;return}else{if((p&32|0)==0){break}i=f;return}}while(0);p=c[a+88>>2]|0;do{if((p|0)!=0){d=a+96|0;if((c[d>>2]|0)!=9){break}if(GF(p,d)|0){break}i=f;return}}while(0);p=a+64|0;do{if((c[p>>2]|0)==5){x=+h[a+160>>3];d=FW(32)|0;ee(d);w=a+124|0;c[w>>2]=d;ne(d,56352,-1)|0;d=a+132|0;z=c[d>>2]|0;do{if((z|0)==0){ne(c[w>>2]|0,56360,-1)|0}else{y=c[z+32>>2]|0;if((y|0)==3){y=c[w>>2]|0;B=+h[z+8>>3];A=+h[z+16>>3];v=s;h[k>>3]=+h[z>>3];c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];z=u+8|0;h[k>>3]=B;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=u+16|0;h[k>>3]=A;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];c[u+24>>2]=55800;pe(y,55768,u)|0;break}else if((y|0)==1){y=c[w>>2]|0;v=t;h[k>>3]=+h[z>>3];c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];c[r+8>>2]=103;pe(y,55816,r)|0;break}else if((y|0)==4){y=c[w>>2]|0;C=+h[z+8>>3];A=+h[z+16>>3];B=+h[z+24>>3];h[k>>3]=+h[z>>3];c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];z=q+8|0;h[k>>3]=C;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=q+16|0;h[k>>3]=A;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=q+24|0;h[k>>3]=B;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];c[q+32>>2]=107;pe(y,55728,q)|0;break}else{break}}}while(0);q=a+208|0;do{if((te(c[q>>2]|0,66112)|0)==0){ne(c[w>>2]|0,66120,-1)|0}else{if((te(c[q>>2]|0,66664)|0)==0){ne(c[w>>2]|0,66680,-1)|0;break}if((te(c[q>>2]|0,67536)|0)==0){ne(c[w>>2]|0,67544,-1)|0;break}if((te(c[q>>2]|0,68128)|0)!=0){break}ne(c[w>>2]|0,68136,-1)|0}}while(0);ne(c[w>>2]|0,63808,-1)|0;bX(n|0,0,16)|0;h[j+24>>3]=24.0;h[j+16>>3]=24.0;if(x==1.0){Er(a,j,0,0,p)}else{c[o>>2]=13;n=g+8|0;c[n>>2]=0;c[n+4>>2]=0;Er(a,j,1,0,g);n=c[w>>2]|0;if((n|0)!=0){ke(n);HW(n)}c[m>>2]=13;z=l+8|0;c[z>>2]=0;c[z+4>>2]=0;z=FW(32)|0;fe(z,63816);c[w>>2]=z;Fr(a,63832,g,63840,x,0,l);Er(a,j,0,l,p)}g=c[w>>2]|0;if((g|0)==0){break}ke(g);HW(g)}else{d=a+132|0}}while(0);Nf(p,c[a+112>>2]|0,e,0)|0;z=c[a+28>>2]|0;Tx(b,e,c[a+128>>2]|0,c[d>>2]|0,+h[z>>3],+h[z+8>>3],+h[z+16>>3],+h[z+24>>3]);Of(e);i=f;return}function Us(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;d=i;g=i;i=i+8|0;h=g;l=i;i=i+8|0;k=i;i=i+16|0;j=k;c[k>>2]=13;e=j+8|0;c[e>>2]=0;c[e+4>>2]=0;m=HG(Yu(f,69904,j,0)|0)|0;c[b+192>>2]=m;if((m|0)==0){Qe(-1,69912,l);a[b+144|0]=0}Of(j);m=(c[(Yu(f,56208,j,0)|0)>>2]|0)==4;f=FW(32)|0;if(!m){fe(f,69928);c[b+196>>2]=f;Of(j);i=d;return}k=c[k>>2]|0;if((k|0)!=4){c[g>>2]=k;c[h+4>>2]=4;Qe(0,72520,h);tc()}fe(f,c[e>>2]|0);c[b+196>>2]=f;Of(j);i=d;return}function Vs(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=69888;d=c[a+192>>2]|0;if((d|0)!=0){JG(d);HW(d)}d=c[a+196>>2]|0;if((d|0)==0){Or(a);HW(a);i=b;return}ke(d);HW(d);Or(a);HW(a);i=b;return}function Ws(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=69888;d=c[a+192>>2]|0;if((d|0)!=0){JG(d);HW(d)}d=c[a+196>>2]|0;if((d|0)==0){Or(a);i=b;return}ke(d);HW(d);Or(a);i=b;return}function Xs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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.0,y=0,z=0,A=0.0,B=0.0,C=0.0;f=i;s=i;i=i+16|0;p=s;q=i;i=i+32|0;r=q;t=i;i=i+40|0;u=t;v=i;i=i+16|0;e=v;o=i;i=i+32|0;g=o;m=i;i=i+16|0;j=m;n=i;i=i+16|0;l=n;c[v>>2]=13;v=e+8|0;c[v>>2]=0;c[v+4>>2]=0;v=c[a+48>>2]|0;if((v&2|0)!=0){i=f;return}do{if(d){if((v&4|0)!=0){break}i=f;return}else{if((v&32|0)==0){break}i=f;return}}while(0);v=c[a+88>>2]|0;do{if((v|0)!=0){d=a+96|0;if((c[d>>2]|0)!=9){break}if(GF(v,d)|0){break}i=f;return}}while(0);v=a+64|0;do{if((c[v>>2]|0)==5){x=+h[a+160>>3];d=FW(32)|0;ee(d);w=a+124|0;c[w>>2]=d;ne(d,56352,-1)|0;d=a+132|0;z=c[d>>2]|0;do{if((z|0)==0){ne(c[w>>2]|0,56360,-1)|0}else{y=c[z+32>>2]|0;if((y|0)==4){y=c[w>>2]|0;C=+h[z+8>>3];B=+h[z+16>>3];A=+h[z+24>>3];h[k>>3]=+h[z>>3];c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];z=u+8|0;h[k>>3]=C;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=u+16|0;h[k>>3]=B;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=u+24|0;h[k>>3]=A;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];c[u+32>>2]=107;pe(y,55728,u)|0;break}else if((y|0)==1){y=c[w>>2]|0;u=s;h[k>>3]=+h[z>>3];c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[p+8>>2]=103;pe(y,55816,p)|0;break}else if((y|0)==3){y=c[w>>2]|0;B=+h[z+8>>3];C=+h[z+16>>3];u=q;h[k>>3]=+h[z>>3];c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];z=r+8|0;h[k>>3]=B;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];z=r+16|0;h[k>>3]=C;c[z>>2]=c[k>>2];c[z+4>>2]=c[k+4>>2];c[r+24>>2]=55800;pe(y,55768,r)|0;break}else{break}}}while(0);p=a+196|0;do{if((te(c[p>>2]|0,69928)|0)==0){ne(c[w>>2]|0,69936,-1)|0}else{if((te(c[p>>2]|0,70664)|0)!=0){break}ne(c[w>>2]|0,70672,-1)|0}}while(0);ne(c[w>>2]|0,63808,-1)|0;bX(o|0,0,16)|0;h[g+24>>3]=24.0;h[g+16>>3]=24.0;if(x==1.0){Er(a,g,0,0,v)}else{c[m>>2]=13;m=j+8|0;c[m>>2]=0;c[m+4>>2]=0;c[n>>2]=13;m=l+8|0;c[m>>2]=0;c[m+4>>2]=0;Er(a,g,1,0,j);m=c[w>>2]|0;if((m|0)!=0){ke(m);HW(m)}z=FW(32)|0;fe(z,63816);c[w>>2]=z;Fr(a,63832,j,63840,x,0,l);Er(a,g,0,l,v)}g=c[w>>2]|0;if((g|0)==0){break}ke(g);HW(g)}else{d=a+132|0}}while(0);Nf(v,c[a+112>>2]|0,e,0)|0;z=c[a+28>>2]|0;Tx(b,e,c[a+128>>2]|0,c[d>>2]|0,+h[z>>3],+h[z+8>>3],+h[z+16>>3],+h[z+24>>3]);Of(e);i=f;return}function Ys(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;f=i;i=i+8|0;g=f;j=i;i=i+16|0;d=j;c[j>>2]=13;b=d+8|0;c[b>>2]=0;c[b+4>>2]=0;if((c[(Yu(e,71608,d,0)|0)>>2]|0)!=7){c[a+148>>2]=0;Of(d);i=h;return}e=FW(20)|0;j=c[j>>2]|0;if((j|0)!=7){c[f>>2]=j;c[g+4>>2]=7;Qe(0,72520,g);tc()}at(e,c[b>>2]|0);c[a+148>>2]=e;Of(d);i=h;return}function Zs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;k=i;i=i+8|0;j=k;c[b>>2]=55512;h=b+8|0;c[h>>2]=13;c[b+16>>2]=0;c[b+20>>2]=0;c[b+64>>2]=13;c[b+72>>2]=0;c[b+76>>2]=0;c[b+96>>2]=13;c[b+104>>2]=0;c[b+108>>2]=0;m=b+145|0;do{if((c[g>>2]|0)==9){a[m]=1;m=c[g>>2]|0;if((m|0)==9){k=g+8|0;g=c[k+4>>2]|0;m=b+116|0;c[m>>2]=c[k>>2];c[m+4>>2]=g;break}else{c[k>>2]=m;c[j+4>>2]=9;Qe(0,72520,j);tc()}}else{a[m]=0}}while(0);c[b+48>>2]=0;m=b+24|0;c[m>>2]=0;Kf(h,e)|0;zr(b,d,e,f);c[b>>2]=71584;c[m>>2]=25;Ys(b,0,0,e);i=l;return}function _s(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=71584;d=c[a+148>>2]|0;if((d|0)!=0){HW(d)}Cr(a);HW(a);i=b;return}function $s(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=71584;d=c[a+148>>2]|0;if((d|0)==0){Cr(a);i=b;return}HW(d);Cr(a);i=b;return}function at(b,d){b=b|0;d=d|0;var 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;j=i;g=i;i=i+8|0;f=g;m=i;i=i+8|0;k=m;o=i;i=i+8|0;n=o;p=i;i=i+8|0;q=p;r=i;i=i+8|0;s=r;t=i;i=i+8|0;u=t;l=i;i=i+16|0;h=l;c[l>>2]=13;e=h+8|0;c[e>>2]=0;c[e+4>>2]=0;do{if((c[(Yu(d,55424,h,0)|0)>>2]|0)==4){v=FW(32)|0;w=c[l>>2]|0;if((w|0)!=4){c[t>>2]=w;c[u+4>>2]=4;Qe(0,72520,u);tc()}fe(v,c[e>>2]|0);do{if((te(v,71616)|0)==0){c[b>>2]=1}else{if((te(v,71624)|0)==0){c[b>>2]=2;break}if((te(v,71632)|0)==0){c[b>>2]=3;break}else{c[b>>2]=0;break}}}while(0);if((v|0)==0){break}ke(v);HW(v)}else{c[b>>2]=0}}while(0);Of(h);do{if((c[(Yu(d,71640,h,0)|0)>>2]|0)==4){t=FW(32)|0;u=c[l>>2]|0;if((u|0)!=4){c[r>>2]=u;c[s+4>>2]=4;Qe(0,72520,s);tc()}fe(t,c[e>>2]|0);do{if((te(t,55168)|0)==0){c[b+4>>2]=1}else{r=b+4|0;if((te(t,64128)|0)==0){c[r>>2]=2;break}else{c[r>>2]=0;break}}}while(0);if((t|0)==0){break}ke(t);HW(t)}else{c[b+4>>2]=0}}while(0);Of(h);do{if((c[(Yu(d,55384,h,0)|0)>>2]|0)==4){r=FW(32)|0;s=c[l>>2]|0;if((s|0)!=4){c[p>>2]=s;c[q+4>>2]=4;Qe(0,72520,q);tc()}fe(r,c[e>>2]|0);do{if((te(r,71648)|0)==0){c[b+8>>2]=1}else{if((te(r,71656)|0)==0){c[b+8>>2]=2;break}p=b+8|0;if((te(r,71664)|0)==0){c[p>>2]=3;break}else{c[p>>2]=0;break}}}while(0);if((r|0)==0){break}ke(r);HW(r)}else{c[b+8>>2]=0}}while(0);Of(h);do{if((c[(Yu(d,71672,h,0)|0)>>2]|0)==4){p=FW(32)|0;q=c[l>>2]|0;if((q|0)!=4){c[o>>2]=q;c[n+4>>2]=4;Qe(0,72520,n);tc()}fe(p,c[e>>2]|0);do{if((te(p,55400)|0)==0){c[b+12>>2]=1}else{if((te(p,55168)|0)==0){c[b+12>>2]=2;break}n=b+12|0;if((te(p,64128)|0)==0){c[n>>2]=3;break}else{c[n>>2]=0;break}}}while(0);if((p|0)==0){break}ke(p);HW(p)}else{c[b+12>>2]=0}}while(0);Of(h);do{if((c[(Yu(d,71680,h,0)|0)>>2]|0)==0){n=c[l>>2]|0;if((n|0)==0){a[b+16|0]=a[e]&1;break}else{c[m>>2]=n;c[k+4>>2]=0;Qe(0,72520,k);tc()}}else{a[b+16|0]=1}}while(0);Of(h);if((c[(Yu(d,71688,h,0)|0)>>2]|0)!=0){a[b+17|0]=0;Of(h);i=j;return}k=c[l>>2]|0;if((k|0)!=0){c[g>>2]=k;c[f+4>>2]=0;Qe(0,72520,f);tc()}a[b+17|0]=a[e]&1;Of(h);i=j;return}function bt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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,A=0,B=0;n=i;j=i;i=i+8|0;k=j;g=i;i=i+8|0;h=g;l=i;i=i+8|0;m=l;q=i;i=i+16|0;t=q;r=i;i=i+16|0;s=r;c[q>>2]=13;p=t+8|0;c[p>>2]=0;c[p+4>>2]=0;c[b>>2]=0;o=b+4|0;c[o>>2]=0;if((c[f>>2]|0)!=6){i=n;return}u=f+8|0;v=s+8|0;w=v+4|0;x=0;y=0;a:while(1){z=c[u>>2]|0;if((x|0)>=(c[z+12>>2]|0)){e=18;break}c[r>>2]=13;c[v>>2]=0;c[w>>2]=0;do{if((c[(ut(z,x,t)|0)>>2]|0)==7){z=c[f>>2]|0;if((z|0)!=6){e=7;break a}vt(c[u>>2]|0,x,s)|0;z=c[q>>2]|0;if((z|0)!=7){e=9;break a}A=ct(0,d,c[p>>2]|0,e,s)|0;if((A|0)==0){break}if((a[A+144|0]&1)==0){fd[c[(c[A>>2]|0)+4>>2]&511](A);break}B=c[o>>2]|0;if((B|0)<(y|0)){z=c[b>>2]|0}else{y=y+16|0;z=Ce(c[b>>2]|0,y,4)|0;c[b>>2]=z;B=c[o>>2]|0}c[o>>2]=B+1;c[z+(B<<2)>>2]=A}}while(0);Of(s);Of(t);z=c[f>>2]|0;if((z|0)==6){x=x+1|0}else{e=3;break}}if((e|0)==3){c[l>>2]=z;c[m+4>>2]=6;Qe(0,72520,m);tc()}else if((e|0)==7){c[g>>2]=z;c[h+4>>2]=6;Qe(0,72520,h);tc()}else if((e|0)==9){c[j>>2]=z;c[k+4>>2]=7;Qe(0,72520,k);tc()}else if((e|0)==18){i=n;return}}function ct(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;l=i;i=i+8|0;o=l;p=i;i=i+16|0;j=p;n=i;i=i+16|0;k=n;c[p>>2]=13;m=j+8|0;c[m>>2]=0;c[m+4>>2]=0;if((c[(Yu(e,55944,j,0)|0)>>2]|0)!=4){p=0;Of(j);i=h;return p|0}b=FW(32)|0;p=c[p>>2]|0;if((p|0)!=4){c[l>>2]=p;c[o+4>>2]=4;Qe(0,72520,o);tc()}fe(b,c[m>>2]|0);do{if((te(b,56200)|0)==0){k=FW(208)|0;Mr(k,d,e,f,g);c[k>>2]=56184;c[k+24>>2]=1;p=k+48|0;c[p>>2]=c[p>>2]|24;Pr(k,0,0,e)}else{if((te(b,63872)|0)==0){k=FW(184)|0;Ur(k,d,e,f,g);break}if((te(b,63944)|0)==0){k=FW(224)|0;Mr(k,d,e,f,g);c[k>>2]=63928;c[k+24>>2]=3;Yr(k,0,0,e);break}if((te(b,64120)|0)==0){k=FW(272)|0;Mr(k,d,e,f,g);c[k>>2]=64104;c[k+24>>2]=4;$r(k,0,0,e);break}if((te(b,55048)|0)==0){k=FW(208)|0;Mr(k,d,e,f,g);c[k>>2]=65728;c[k+24>>2]=5;Ds(k,0,0,e);break}if((te(b,55056)|0)==0){k=FW(208)|0;Mr(k,d,e,f,g);c[k>>2]=65728;c[k+24>>2]=5;Ds(k,0,0,e);break}if((te(b,65816)|0)==0){k=FW(216)|0;Mr(k,d,e,f,g);c[k>>2]=65800;c[k+24>>2]=7;Hs(k,0,0,e);break}if((te(b,65824)|0)==0){k=FW(216)|0;Mr(k,d,e,f,g);c[k>>2]=65800;c[k+24>>2]=7;Hs(k,0,0,e);break}if((te(b,64352)|0)==0){k=FW(200)|0;Mr(k,d,e,f,g);c[k>>2]=64336;c[k+24>>2]=9;ds(k,0,0,e);break}if((te(b,64368)|0)==0){k=FW(200)|0;Mr(k,d,e,f,g);c[k>>2]=64336;c[k+24>>2]=9;ds(k,0,0,e);break}if((te(b,64384)|0)==0){k=FW(200)|0;Mr(k,d,e,f,g);c[k>>2]=64336;c[k+24>>2]=9;ds(k,0,0,e);break}if((te(b,64400)|0)==0){k=FW(200)|0;Mr(k,d,e,f,g);c[k>>2]=64336;c[k+24>>2]=9;ds(k,0,0,e);break}if((te(b,65704)|0)==0){k=FW(200)|0;Mr(k,d,e,f,g);c[k>>2]=65688;c[k+24>>2]=13;As(k,0,0,e);break}if((te(b,65952)|0)==0){k=FW(200)|0;Mr(k,d,e,f,g);c[k>>2]=65936;c[k+24>>2]=14;Ks(k,0,0,e);break}if((te(b,65992)|0)==0){k=FW(200)|0;Mr(k,d,e,f,g);c[k>>2]=65976;c[k+24>>2]=15;Ns(k,0,0,e);break}if((te(b,66056)|0)==0){k=FW(216)|0;Mr(k,d,e,f,g);c[k>>2]=66040;c[k+192>>2]=13;c[k+200>>2]=0;c[k+204>>2]=0;c[k+24>>2]=17;Qs(k,0,0,e);break}if((te(b,69904)|0)==0){k=FW(200)|0;Mr(k,d,e,f,g);c[k>>2]=69888;c[k+24>>2]=18;Us(k,0,0,e);break}if((te(b,65424)|0)==0){k=FW(160)|0;ss(k,d,e,f,g);break}if((te(b,71696)|0)==0){k=FW(184)|0;hs(k,d,e,f,g);break}if((te(b,65600)|0)==0){k=FW(176)|0;xs(k,d,e,f,g);break}if((te(b,71704)|0)==0){k=FW(152)|0;c[k>>2]=55512;l=k+8|0;c[l>>2]=13;c[k+16>>2]=0;c[k+20>>2]=0;c[k+64>>2]=13;c[k+72>>2]=0;c[k+76>>2]=0;c[k+96>>2]=13;c[k+104>>2]=0;c[k+108>>2]=0;m=k+145|0;if((c[g>>2]|0)==9){a[m]=1;n=g+8|0;o=c[n+4>>2]|0;p=k+116|0;c[p>>2]=c[n>>2];c[p+4>>2]=o}else{a[m]=0}c[k+48>>2]=0;c[k+24>>2]=0;Kf(l,e)|0;zr(k,d,e,f);break}if((te(b,71720)|0)==0){l=FW(152)|0;c[l>>2]=55512;m=l+8|0;c[m>>2]=13;c[l+16>>2]=0;c[l+20>>2]=0;c[l+64>>2]=13;c[l+72>>2]=0;c[l+76>>2]=0;c[l+96>>2]=13;c[l+104>>2]=0;c[l+108>>2]=0;k=l+145|0;if((c[g>>2]|0)==9){a[k]=1;n=g+8|0;o=c[n+4>>2]|0;p=l+116|0;c[p>>2]=c[n>>2];c[p+4>>2]=o}else{a[k]=0}c[l+48>>2]=0;c[l+24>>2]=0;Kf(m,e)|0;zr(l,d,e,f);k=l;break}if((te(b,71728)|0)==0){k=FW(152)|0;c[k>>2]=55512;l=k+8|0;c[l>>2]=13;c[k+16>>2]=0;c[k+20>>2]=0;c[k+64>>2]=13;c[k+72>>2]=0;c[k+76>>2]=0;c[k+96>>2]=13;c[k+104>>2]=0;c[k+108>>2]=0;m=k+145|0;if((c[g>>2]|0)==9){a[m]=1;n=g+8|0;o=c[n+4>>2]|0;p=k+116|0;c[p>>2]=c[n>>2];c[p+4>>2]=o}else{a[m]=0}c[k+48>>2]=0;c[k+24>>2]=0;Kf(l,e)|0;zr(k,d,e,f);break}if((te(b,71600)|0)==0){k=FW(152)|0;Zs(k,d,e,f,g);break}if((te(b,56072)|0)==0){c[n>>2]=13;p=k+8|0;c[p>>2]=0;c[p+4>>2]=0;if((c[(Yu(e,56080,k,0)|0)>>2]|0)==5){p=FW(176)|0;Ir(p,d,e,f,g);g=p}else{g=0}Of(k);k=g;break}m=FW(152)|0;c[m>>2]=55512;l=m+8|0;c[l>>2]=13;c[m+16>>2]=0;c[m+20>>2]=0;c[m+64>>2]=13;c[m+72>>2]=0;c[m+76>>2]=0;c[m+96>>2]=13;c[m+104>>2]=0;c[m+108>>2]=0;k=m+145|0;if((c[g>>2]|0)==9){a[k]=1;n=g+8|0;o=c[n+4>>2]|0;p=m+116|0;c[p>>2]=c[n>>2];c[p+4>>2]=o}else{a[k]=0}c[m+48>>2]=0;c[m+24>>2]=0;Kf(l,e)|0;zr(m,d,e,f);k=m}}while(0);if((b|0)==0){p=k;Of(j);i=h;return p|0}ke(b);HW(b);p=k;Of(j);i=h;return p|0}function dt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a+4|0;e=c[d>>2]|0;g=c[a>>2]|0;if((e|0)>0){f=0}else{h=g;Fe(h);i=b;return}do{h=c[g+(f<<2)>>2]|0;if((h|0)!=0){fd[c[(c[h>>2]|0)+4>>2]&511](h);g=c[a>>2]|0;e=c[d>>2]|0}f=f+1|0;}while((f|0)<(e|0));Fe(g);i=b;return}function et(a){a=a|0;i=i;return c[a+4>>2]|0}function ft(a){a=a|0;i=i;return+(+h[a+8>>3])}function gt(a){a=a|0;i=i;return c[a+16>>2]|0}function ht(a){a=a|0;i=i;return c[a+20>>2]|0}function it(a){a=a|0;i=i;return c[a+24>>2]|0}function jt(a){a=a|0;i=i;return}function kt(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function lt(a){a=a|0;i=i;return}function mt(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function nt(a){a=a|0;var b=0;b=i;c[a>>2]=55264;a=c[a+20>>2]|0;if((a|0)==0){i=b;return}Fe(a);i=b;return}function ot(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=55264;d=c[a+20>>2]|0;if((d|0)==0){HW(a);i=b;return}Fe(d);HW(a);i=b;return}function pt(a){a=a|0;var b=0;b=i;c[a>>2]=55264;a=c[a+20>>2]|0;if((a|0)==0){i=b;return}Fe(a);i=b;return}function qt(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=55264;d=c[a+20>>2]|0;if((d|0)==0){HW(a);i=b;return}Fe(d);HW(a);i=b;return}function rt(a,b){a=a|0;b=b|0;c[a>>2]=b;c[a+4>>2]=0;c[a+12>>2]=0;c[a+8>>2]=0;c[a+16>>2]=1;i=i;return}function st(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+12|0;a=a+4|0;f=c[a>>2]|0;if((c[d>>2]|0)>0){e=0}else{Fe(f);i=b;return}while(1){Of(f+(e<<4)|0);e=e+1|0;f=c[a>>2]|0;if((e|0)<(c[d>>2]|0)){}else{break}}Fe(f);i=b;return}function tt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;d=a+12|0;h=c[d>>2]|0;f=a+8|0;do{if((h|0)==(c[f>>2]|0)){g=(h|0)==0?8:h<<1;c[f>>2]=g;a=a+4|0;g=Ce(c[a>>2]|0,g,16)|0;c[a>>2]=g;h=c[d>>2]|0;if((h|0)>=(c[f>>2]|0)){break}while(1){g=g+(h<<4)+8|0;c[g>>2]=0;c[g+4>>2]=0;h=h+1|0;if((h|0)>=(c[f>>2]|0)){break}g=c[a>>2]|0}h=c[d>>2]|0}else{a=a+4|0}}while(0);$W((c[a>>2]|0)+(h<<4)|0,b|0,16)|0;c[d>>2]=(c[d>>2]|0)+1;i=e;return}function ut(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;do{if((b|0)>=0){if((c[a+12>>2]|0)<=(b|0)){break}b=Nf((c[a+4>>2]|0)+(b<<4)|0,c[a>>2]|0,d,0)|0;i=e;return b|0}}while(0);b=d+8|0;c[b>>2]=0;c[b+4>>2]=0;c[d>>2]=5;b=d;i=e;return b|0}function vt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;do{if((b|0)>=0){if((c[a+12>>2]|0)<=(b|0)){break}b=Mf((c[a+4>>2]|0)+(b<<4)|0,d)|0;i=e;return b|0}}while(0);b=d+8|0;c[b>>2]=0;c[b+4>>2]=0;c[d>>2]=5;b=d;i=e;return b|0}function wt(){var a=0,b=0;a=i;b=FW(8)|0;zH(b,73312,315);c[72948>>2]=b;b=FW(8)|0;zH(b,77096,315);c[72972>>2]=b;b=FW(8)|0;zH(b,80880,315);c[72996>>2]=b;b=FW(8)|0;zH(b,84664,315);c[73020>>2]=b;b=FW(8)|0;zH(b,88448,315);c[73044>>2]=b;b=FW(8)|0;zH(b,92232,316);c[73068>>2]=b;b=FW(8)|0;zH(b,96024,315);c[73092>>2]=b;b=FW(8)|0;zH(b,99808,315);c[73116>>2]=b;b=FW(8)|0;zH(b,103592,190);c[73140>>2]=b;b=FW(8)|0;zH(b,105872,315);c[73164>>2]=b;b=FW(8)|0;zH(b,109656,315);c[73188>>2]=b;b=FW(8)|0;zH(b,113440,315);c[73212>>2]=b;b=FW(8)|0;zH(b,117224,315);c[73236>>2]=b;b=FW(8)|0;zH(b,121008,202);c[73260>>2]=b;i=a;return}function xt(){var a=0,b=0,d=0;a=i;d=0;do{b=c[72948+(d*24|0)>>2]|0;if((b|0)!=0){AH(b);HW(b)}d=d+1|0;}while((d|0)<14);i=a;return}function yt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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,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;F=i;I=i;i=i+8|0;J=I;G=i;i=i+8|0;H=G;g=i;i=i+8|0;B=i;i=i+8|0;D=i;i=i+8|0;E=D;M=i;i=i+8|0;z=i;i=i+8|0;s=i;i=i+8|0;t=s;p=i;i=i+8|0;q=p;n=i;i=i+8|0;O=i;i=i+8|0;P=O;m=i;i=i+256|0;k=m;y=i;i=i+256|0;h=y;K=i;i=i+256|0;u=i;i=i+8|0;l=u;x=i;i=i+8|0;j=x;L=i;i=i+8|0;v=i;i=i+8|0;o=v;w=i;i=i+8|0;r=w;A=i;i=i+8|0;C=A;do{if((f|0)==0){f=df(c[834]|0,d,e)|0;if((f|0)!=0){O=FW(12)|0;YF(O,251,f);break}do{if((te(e,130136)|0)!=0){if((te(e,130152)|0)==0){break}if((te(e,130168)|0)==0){S=FW(44)|0;Q=FW(32)|0;ie(Q,d);R=FW(32)|0;ie(R,e);c[S>>2]=Q;c[S+4>>2]=R;c[S+8>>2]=1;c[S+12>>2]=0;c[S+16>>2]=1;ad(S+20|0,0)|0;i=F;return S|0}else{S=c[d+28>>2]|0;c[O>>2]=c[e+28>>2];c[P+4>>2]=S;Qe(-1,130184,P);S=0;i=F;return S|0}}}while(0);S=FW(44)|0;Q=FW(32)|0;ie(Q,d);R=FW(32)|0;ie(R,e);c[S>>2]=Q;c[S+4>>2]=R;c[S+8>>2]=0;c[S+12>>2]=0;c[S+16>>2]=1;ad(S+20|0,0)|0;i=F;return S|0}else{fd[c[(c[f>>2]|0)+12>>2]&511](f);O=FW(12)|0;YF(O,250,f);f=0}}while(0);P=FW(44)|0;S=FW(32)|0;ie(S,d);Q=FW(32)|0;ie(Q,e);c[P>>2]=S;c[P+4>>2]=Q;e=P+8|0;c[e>>2]=0;Q=ye(256,8)|0;d=P+12|0;c[d>>2]=Q;a[Q]=0;c[(c[d>>2]|0)+4>>2]=0;Q=1;do{a[(c[d>>2]|0)+(Q<<3)|0]=0;c[(c[d>>2]|0)+(Q<<3)+4>>2]=0;Q=Q+1|0;}while((Q|0)<256);c[P+16>>2]=1;ad(P+20|0,0)|0;_F(O,k,256,l)|0;if(_F(O,h,256,j)|0){R=k+1|0;Q=h+1|0;do{do{if((Qc(h|0,130240)|0)==0){if((a[m]|0)==47){Bt(P,b,R)}_F(O,k,256,l)|0}else{if((Qc(k|0,130248)|0)==0){c[e>>2]=ec(h|0)|0;_F(O,k,256,l)|0;break}if((Qc(h|0,130256)|0)==0){a:do{if(_F(O,k,256,l)|0){while(1){if((Qc(k|0,130280)|0)==0){break a}if(!(_F(O,h,256,j)|0)){break}if((Qc(h|0,130280)|0)==0){break}do{if((a[m]|0)==60){if((a[y]|0)!=60){break}S=c[u>>2]|0;if(!((S|0)==(c[x>>2]|0)&(S|0)>3&(S&1|0)==0)){break}S=S+ -1|0;a[h+S|0]=0;a[k+S|0]=0;c[p>>2]=o;Hc(R|0,130352,q|0)|0;c[s>>2]=r;Hc(Q|0,130352,t|0)|0;S=((c[u>>2]|0)+ -2|0)/2|0;c[u>>2]=S;Ct(P,c[d>>2]|0,c[v>>2]|0,c[w>>2]|0,S)}}while(0);if(!(_F(O,k,256,l)|0)){break a}}Qe(-1,130304,n)}}while(0);_F(O,k,256,l)|0;break}if((Qc(h|0,130360)|0)==0){b:do{if(_F(O,k,256,l)|0){while(1){if((Qc(k|0,130376)|0)==0){break b}if(!(_F(O,h,256,j)|0)){break}if((Qc(h|0,130376)|0)==0){break}do{if((a[m]|0)==60){T=c[u>>2]|0;S=k+(T+ -1)|0;if(!((a[S]|0)==62&(T|0)>3&(T&1|0)==0)){N=42;break}a[S]=0;c[D>>2]=C;if((Hc(R|0,130352,E|0)|0)==1){T=((c[u>>2]|0)+ -2|0)/2|0;c[u>>2]=T;S=c[A>>2]|0;Dt(P,S,S,T,ec(h|0)|0);break}else{Qe(-1,130392,B);break}}else{N=42}}while(0);if((N|0)==42){N=0;Qe(-1,130392,M)}if(!(_F(O,k,256,l)|0)){break b}}Qe(-1,130392,z)}}while(0);_F(O,k,256,l)|0;break}if((Qc(h|0,130432)|0)!=0){eX(k|0,h|0)|0;break}c:do{if(_F(O,k,256,l)|0){while(1){if((Qc(k|0,130448)|0)==0){break c}if(!(_F(O,h,256,j)|0)){break}if((Qc(h|0,130448)|0)==0){break}if(!(_F(O,K,256,L)|0)){break}if((Qc(K|0,130448)|0)==0){break}do{if((a[m]|0)==60){if((a[y]|0)!=60){break}S=c[u>>2]|0;if(!((S|0)==(c[x>>2]|0)&(S|0)>3&(S&1|0)==0)){break}T=S+ -1|0;a[h+T|0]=0;a[k+T|0]=0;c[G>>2]=o;Hc(R|0,130352,H|0)|0;c[I>>2]=r;Hc(Q|0,130352,J|0)|0;T=((c[u>>2]|0)+ -2|0)/2|0;c[u>>2]=T;U=c[v>>2]|0;S=c[w>>2]|0;Dt(P,U,S,T,ec(K|0)|0)}}while(0);if(!(_F(O,k,256,l)|0)){break c}}Qe(-1,130464,g)}}while(0);_F(O,k,256,l)|0}}while(0);}while(_F(O,h,256,j)|0)}if((O|0)!=0){HW(O)}if((f|0)==0){U=P;i=F;return U|0}mc(f|0)|0;U=P;i=F;return U|0}function zt(a){a=a|0;var b=0;b=i;a=jd[c[(c[a>>2]|0)+20>>2]&511](a)|0;i=b;return a|0}function At(a){a=a|0;var b=0;b=i;a=qc(a|0)|0;i=b;return a|0}function Bt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=FW(32)|0;fe(f,d);b=Et(b,c[a>>2]|0,f,0)|0;if((f|0)!=0){ke(f);HW(f)}if((b|0)==0){i=e;return}Ft(a,c[a+12>>2]|0,c[b+12>>2]|0);Gt(b);i=e;return}function Ct(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;if(g>>>0<=1){i=h;return}j=g+ -1|0;n=j<<3;k=e>>>n&255;g=f>>>n&255;n=(1<>>0>g>>>0){i=h;return}while(1){l=d+(k<<3)|0;a:do{if((a[l]&1)==0){a[l]=1;l=ye(256,8)|0;m=d+(k<<3)+4|0;c[m>>2]=l;n=0;while(1){a[l+(n<<3)|0]=0;c[(c[m>>2]|0)+(n<<3)+4>>2]=0;n=n+1|0;if((n|0)>=256){break a}l=c[m>>2]|0}}else{m=d+(k<<3)+4|0}}while(0);Ct(b,c[m>>2]|0,e,f,j);if((k|0)<(g|0)){k=k+1|0}else{break}}i=h;return}function Dt(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;k=i;i=i+16|0;h=k;l=i;i=i+16|0;m=l;n=f+ -1|0;b=c[b+12>>2]|0;a:do{if((n|0)==0){l=b}else{while(1){o=d>>>(n<<3)&255;if((a[b+(o<<3)|0]&1)==0){break}n=n+ -1|0;b=c[b+(o<<3)+4>>2]|0;if((n|0)==0){l=b;break a}}o=f<<1;c[l>>2]=o;c[m+4>>2]=d;c[m+8>>2]=o;c[m+12>>2]=e;Qe(-1,130528,m);i=j;return}}while(0);n=d&255;m=e&255;if(n>>>0>m>>>0){i=j;return}f=f<<1;while(1){if((a[l+(n<<3)|0]&1)==0){c[l+(n<<3)+4>>2]=g}else{c[k>>2]=f;c[h+4>>2]=d;c[h+8>>2]=f;c[h+12>>2]=e;Qe(-1,130528,h)}if((n|0)<(m|0)){n=n+1|0;g=g+1|0}else{break}}i=j;return}function Et(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;h=c[a>>2]|0;do{if((h|0)==0){h=1}else{if((se(c[h>>2]|0,b)|0)!=0){h=1;break}if((se(c[h+4>>2]|0,d)|0)!=0){h=1;break}j=c[a>>2]|0;k=j+20|0;Ub(k|0)|0;j=j+16|0;c[j>>2]=(c[j>>2]|0)+1;Mc(k|0)|0;k=c[a>>2]|0;i=f;return k|0}}while(0);a:do{j=a+(h<<2)|0;k=c[j>>2]|0;do{if((k|0)!=0){if((se(c[k>>2]|0,b)|0)!=0){break}if((se(c[k+4>>2]|0,d)|0)==0){g=8;break a}}}while(0);h=h+1|0;}while((h|0)<4);if((g|0)==8){d=c[j>>2]|0;if((h|0)>0){while(1){b=h+ -1|0;c[a+(h<<2)>>2]=c[a+(b<<2)>>2];if((b|0)>0){h=b}else{break}}}c[a>>2]=d;k=d+20|0;Ub(k|0)|0;j=d+16|0;c[j>>2]=(c[j>>2]|0)+1;Mc(k|0)|0;k=d;i=f;return k|0}d=yt(a,b,d,e)|0;if((d|0)==0){k=0;i=f;return k|0}b=a+12|0;g=c[b>>2]|0;if((g|0)!=0){Gt(g)}j=a+8|0;c[b>>2]=c[j>>2];k=a+4|0;c[j>>2]=c[k>>2];c[k>>2]=c[a>>2];c[a>>2]=d;k=d+20|0;Ub(k|0)|0;j=d+16|0;c[j>>2]=(c[j>>2]|0)+1;Mc(k|0)|0;k=d;i=f;return k|0}function Ft(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;h=i;f=i;i=i+8|0;g=0;do{j=d+(g<<3)|0;k=(a[j]&1)!=0;do{if((a[e+(g<<3)|0]&1)==0){if(k){Qe(-1,130504,f);break}else{c[d+(g<<3)+4>>2]=c[e+(g<<3)+4>>2];break}}else{a:do{if(k){k=d+(g<<3)+4|0}else{a[j]=1;j=ye(256,8)|0;k=d+(g<<3)+4|0;c[k>>2]=j;l=0;while(1){a[j+(l<<3)|0]=0;c[(c[k>>2]|0)+(l<<3)+4>>2]=0;l=l+1|0;if((l|0)>=256){break a}j=c[k>>2]|0}}}while(0);Ft(b,c[k>>2]|0,c[e+(g<<3)+4>>2]|0)}}while(0);g=g+1|0;}while((g|0)<256);i=h;return}function Gt(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+20|0;Ub(d|0)|0;f=a+16|0;e=(c[f>>2]|0)+ -1|0;c[f>>2]=e;Mc(d|0)|0;if((e|0)!=0|(a|0)==0){i=b;return}e=c[a>>2]|0;if((e|0)!=0){ke(e);HW(e)}e=c[a+4>>2]|0;if((e|0)!=0){ke(e);HW(e)}e=c[a+12>>2]|0;if((e|0)!=0){Ht(a,e)}kc(d|0)|0;HW(a);i=b;return}function Ht(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;f=0;do{if((a[d+(f<<3)|0]&1)!=0){Ht(b,c[d+(f<<3)+4>>2]|0)}f=f+1|0;}while((f|0)<256);Fe(d);i=e;return}function It(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;k=c[b+12>>2]|0;if((k|0)==0){c[g>>2]=2;if((f|0)<2){k=0;i=h;return k|0}k=(d[e]|0)<<8|(d[e+1|0]|0);i=h;return k|0}a:do{if((f|0)>0){j=0;while(1){b=j+1|0;j=d[e+j|0]|0;if((a[k+(j<<3)|0]&1)==0){break}if((b|0)<(f|0)){k=c[k+(j<<3)+4>>2]|0;j=b}else{break a}}c[g>>2]=b;k=c[k+(j<<3)+4>>2]|0;i=h;return k|0}else{b=0}}while(0);c[g>>2]=b;k=0;i=h;return k|0}function Jt(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;if((e|0)==0){i=j;return}if((h|0)==0){h=0;do{if((a[e+(h<<3)|0]&1)!=0){Jt(b,h+d<<8,c[e+(h<<3)+4>>2]|0,f,g,0)}h=h+1|0;}while((h|0)<256);i=j;return}else{k=0}do{a:do{if((a[e+(k<<3)|0]&1)==0){m=c[e+(k<<3)+4>>2]|0;if(m>>>0>=g>>>0){break}l=k+d|0;o=da(m,h)|0;p=0;while(1){m=f+(p+o<<2)|0;n=c[m>>2]|0;if((n|0)==0){break}p=p+1|0;if(!((n|0)!=(l|0)&p>>>0>>0)){break a}}c[m>>2]=l}else{Jt(b,k+d<<8,c[e+(k<<3)+4>>2]|0,f,g,h)}}while(0);k=k+1|0;}while((k|0)<256);i=j;return}function Kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;Jt(a,0,c[a+12>>2]|0,b,d,e);i=f;return}function Lt(a){a=a|0;var b=0;b=i;bX(a|0,0,16)|0;i=b;return}function Mt(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;if((d|0)!=0){Gt(d)}d=c[a+4>>2]|0;if((d|0)!=0){Gt(d)}d=c[a+8>>2]|0;if((d|0)!=0){Gt(d)}a=c[a+12>>2]|0;if((a|0)==0){i=b;return}Gt(a);i=b;return}function Nt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;c[a+4>>2]=d;c[a>>2]=b;c[a+12>>2]=0;h=FW(12)|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;g=a+16|0;c[g>>2]=h;h=a+8|0;c[h>>2]=0;b=sd[c[(c[b>>2]|0)+8>>2]&127](b,d,a)|0;c[h>>2]=b;c[a+20>>2]=1;g=c[g>>2]|0;b=(b>>>13)+1|0;d=g+4|0;a=c[d>>2]|0;h=c[g>>2]|0;f=(a-h|0)/8196|0;if(f>>>0>>0){Yt(g,b-f|0);i=e;return}if(f>>>0<=b>>>0){i=e;return}b=h+(b*8196|0)|0;if((b|0)==(a|0)){i=e;return}c[d>>2]=a+(~(((a+ -8196+(0-b)|0)>>>0)/8196|0)*8196|0);i=e;return}function Ot(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=c[a+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}a=c[a+16>>2]|0;if((a|0)==0){i=b;return}d=c[a>>2]|0;if((d|0)!=0){e=a+4|0;f=c[e>>2]|0;if((d|0)!=(f|0)){c[e>>2]=f+(~(((f+ -8196+(0-d)|0)>>>0)/8196|0)*8196|0)}HW(d)}HW(a);i=b;return}function Pt(a){a=a|0;a=a+20|0;c[a>>2]=(c[a>>2]|0)+1;i=i;return}function Qt(a){a=a|0;var b=0,d=0,e=0;b=i;e=a+20|0;d=(c[e>>2]|0)+ -1|0;c[e>>2]=d;if((d|0)!=0|(a|0)==0){i=b;return}Ot(a);HW(a);i=b;return}function Rt(a){a=a|0;i=i;return c[a+12>>2]|0}function St(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((d|0)==0){c[a+12>>2]=b}else if((d|0)==1){d=a+12|0;b=(c[d>>2]|0)+b|0;c[d>>2]=b}else{b=(c[a+8>>2]|0)+b|0;c[a+12>>2]=b}if(b>>>0<=(c[a+8>>2]|0)>>>0){d=0;i=e;return d|0}c[a+12>>2]=0;d=1;i=e;return d|0}function Tt(a,b){a=a|0;b=b|0;var 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,A=0,B=0,C=0;e=i;f=i;i=i+16|0;o=f;h=i;i=i+16|0;q=h;k=i;i=i+16|0;x=k;n=i;i=i+16|0;p=n;c[f>>2]=0;d=o+4|0;c[d>>2]=0;m=o+8|0;c[m>>2]=0;v=a+8|0;u=c[v>>2]|0;t=u>>>13;r=t+1|0;g=FW((u>>>18<<2)+4|0)|0;s=r>>>5;bX(g|0,0,s<<2|0)|0;j=s<<5;if((j|0)!=(r|0)){C=g+(s<<2)|0;c[C>>2]=c[C>>2]&~(-1>>>(31-t+j|0))}c[h>>2]=0;j=q+4|0;c[j>>2]=0;t=q+8|0;c[t>>2]=0;c[k>>2]=0;s=x+4|0;c[s>>2]=0;y=x+8|0;c[y>>2]=0;w=c[b+4>>2]|0;if((c[b>>2]|0)==(w|0)){w=FW(8)|0;if((w|0)!=0){C=w;c[C>>2]=0;c[C+4>>2]=u}C=w+8|0;c[k>>2]=w;c[s>>2]=C;c[y>>2]=w+8;u=C;w=C}else{u=0;x=b}b=0;do{C=g+(b>>>5<<2)|0;c[C>>2]=c[C>>2]&~(1<<(b&31));b=b+1|0;}while((b|0)<(r|0));b=c[x>>2]|0;if((w|0)==(b|0)){v=0}else{x=a+16|0;y=0;while(1){B=c[b+(y<<3)+4>>2]|0;a:do{if((B|0)!=0){z=c[b+(y<<3)>>2]|0;A=c[v>>2]|0;if(z>>>0>=A>>>0){break}B=B+ -1+z|0;z=z>>>13;A=(B>>>0>>0?B:A+ -1|0)>>>13;if(z>>>0>A>>>0){break}B=c[x>>2]|0;while(1){if((c[(c[B>>2]|0)+(z*8196|0)>>2]|0)==0){C=g+(z>>>5<<2)|0;c[C>>2]=c[C>>2]|1<<(z&31)}if((z|0)>=(A|0)){break a}z=z+1|0}}}while(0);y=y+1|0;if(y>>>0>=w-b>>3>>>0){v=0;break}}}b:while(1){if((1<<(v&31)&c[g+(v>>>5<<2)>>2]|0)==0){v=v+1|0;if((v|0)==(r|0)){l=66;break}else{continue}}if((v|0)==(r|0)){l=66;break}x=c[d>>2]|0;do{if((x|0)==(c[m>>2]|0)){w=c[f>>2]|0;b=x-w|0;y=b>>2;x=y+1|0;if(x>>>0>1073741823){l=28;break b}if(y>>>0>536870910){A=1073741823;l=31}else{z=b>>1;A=z>>>0>>0?x:z;if((A|0)==0){z=0;A=0}else{l=31}}if((l|0)==31){l=0;z=FW(A<<2)|0}y=z+(y<<2)|0;if((y|0)!=0){c[y>>2]=v}$W(z|0,w|0,b|0)|0;c[f>>2]=z;c[d>>2]=z+(x<<2);c[m>>2]=z+(A<<2);if((w|0)==0){break}HW(w)}else{if((x|0)==0){w=0}else{c[x>>2]=v;w=c[d>>2]|0}c[d>>2]=w+4}}while(0);w=v+1|0;c:do{if((w|0)==(r|0)){b=v;w=r}else{b=v;while(1){if((c[g+(w>>>5<<2)>>2]&1<<(w&31)|0)==0){break c}b=c[d>>2]|0;do{if((b|0)==(c[m>>2]|0)){x=c[f>>2]|0;b=b-x|0;z=b>>2;y=z+1|0;if(y>>>0>1073741823){l=44;break b}if(z>>>0>536870910){B=1073741823;l=47}else{A=b>>1;B=A>>>0>>0?y:A;if((B|0)==0){A=0;B=0}else{l=47}}if((l|0)==47){l=0;A=FW(B<<2)|0}z=A+(z<<2)|0;if((z|0)!=0){c[z>>2]=w}$W(A|0,x|0,b|0)|0;c[f>>2]=A;c[d>>2]=A+(y<<2);c[m>>2]=A+(B<<2);if((x|0)==0){break}HW(x)}else{if((b|0)==0){x=0}else{c[b>>2]=w;x=c[d>>2]|0}c[d>>2]=x+4}}while(0);x=w+1|0;if((x|0)==(r|0)){b=w;w=r;break}else{b=w;w=x}}}}while(0);x=v<<13;v=(b-v<<13)+8192|0;y=c[j>>2]|0;do{if((y|0)==(c[t>>2]|0)){b=c[h>>2]|0;z=y-b|0;A=z>>3;y=A+1|0;if(y>>>0>536870911){l=58;break b}if(A>>>0>268435454){C=536870911;l=61}else{B=z>>2;C=B>>>0>>0?y:B;if((C|0)==0){B=0;C=0}else{l=61}}if((l|0)==61){l=0;B=FW(C<<3)|0}A=B+(A<<3)|0;if((A|0)!=0){c[A>>2]=x;c[A+4>>2]=v}$W(B|0,b|0,z|0)|0;c[h>>2]=B;c[j>>2]=B+(y<<3);c[t>>2]=B+(C<<3);if((b|0)==0){break}HW(b)}else{if((y|0)==0){v=0}else{C=y;c[C>>2]=x;c[C+4>>2]=v;v=c[j>>2]|0}c[j>>2]=v+8}}while(0);if((w|0)<(r|0)){v=w}else{l=66;break}}if((l|0)==28){wn(0)}else if((l|0)==44){wn(0)}else if((l|0)==58){wn(0)}else if((l|0)==66){if((c[j>>2]|0)==(c[h>>2]|0)){a=0}else{c[n>>2]=a;c[p+4>>2]=o;c[p+12>>2]=0;c[p+8>>2]=c[f>>2];a=c[a>>2]|0;a=sd[c[(c[a>>2]|0)+12>>2]&127](a,q,p)|0}k=c[k>>2]|0;if((k|0)!=0){if((k|0)!=(u|0)){c[s>>2]=u+(~((u+ -8+(0-k)|0)>>>3)<<3)}HW(k)}h=c[h>>2]|0;if((h|0)!=0){k=c[j>>2]|0;if((h|0)!=(k|0)){c[j>>2]=k+(~((k+ -8+(0-h)|0)>>>3)<<3)}HW(h)}if((g|0)!=0){HW(g)}f=c[f>>2]|0;if((f|0)==0){i=e;return a|0}g=c[d>>2]|0;if((f|0)!=(g|0)){c[d>>2]=g+(~((g+ -4+(0-f)|0)>>>2)<<2)}HW(f);i=e;return a|0}return 0}function Ut(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;g=i;i=i+16|0;h=g;j=da(e,d)|0;e=c[a+8>>2]|0;d=a+12|0;k=c[d>>2]|0;e=e>>>0<(k+j|0)>>>0?e-k|0:j;if((e|0)==0){n=0;i=f;return n|0}c[g>>2]=0;j=h+4|0;c[j>>2]=0;m=h+8|0;c[m>>2]=0;l=FW(8)|0;n=l+8|0;if((l|0)!=0){o=l;c[o>>2]=k;c[o+4>>2]=e}c[g>>2]=l;c[j>>2]=n;c[m>>2]=n;h=Tt(a,h)|0;k=c[g>>2]|0;if((k|0)!=0){g=c[j>>2]|0;if((k|0)!=(g|0)){c[j>>2]=g+(~((g+ -8+(0-k)|0)>>>3)<<3)}HW(k)}if((h|0)!=0){o=0;i=f;return o|0}a=a+16|0;g=c[d>>2]|0;h=e;while(1){k=g&8191;j=8192-k|0;j=j>>>0>h>>>0?h:j;$W(b|0,(c[c[a>>2]>>2]|0)+((g>>>13)*8196|0)+4+k|0,j|0)|0;g=(c[d>>2]|0)+j|0;c[d>>2]=g;if((h|0)==(j|0)){break}else{h=h-j|0;b=b+j|0}}i=f;return e|0}function Vt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[a>>2]=b;c[a+4>>2]=d;if((d|0)==0){i=e;return}c[a+12>>2]=0;c[a+8>>2]=c[d>>2];i=e;return}function Wt(a){a=a|0;i=i;return}function Xt(a,b,d){a=a|0;b=b|0;d=d|0;var 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;e=i;if((d|0)==0){r=0;i=e;return r|0}h=a+4|0;g=a+12|0;j=a+8|0;k=0;while(1){l=c[h>>2]|0;if((l|0)==0){m=c[a>>2]|0;l=m+8|0;c[g>>2]=c[l>>2]&8191;l=(c[l>>2]|0)>>>13}else{m=c[j>>2]|0;if((c[g>>2]|0)==8192){m=m+4|0;c[j>>2]=m;if((m|0)==(c[l+4>>2]|0)){f=23;break}c[g>>2]=0;l=m}else{l=m}m=c[a>>2]|0;l=c[l>>2]|0}q=c[m+16>>2]|0;m=q+4|0;n=c[m>>2]|0;p=c[q>>2]|0;r=(n-p|0)/8196|0;do{if(l>>>0>=r>>>0){o=l+1|0;if(r>>>0>>0){Yt(q,o-r|0);break}if(r>>>0<=o>>>0){break}o=p+(o*8196|0)|0;if((o|0)==(n|0)){break}c[m>>2]=n+(~(((n+ -8196+(0-o)|0)>>>0)/8196|0)*8196|0)}}while(0);n=c[g>>2]|0;m=8192-n|0;m=d>>>0>=m>>>0?m:d;$W((c[c[(c[a>>2]|0)+16>>2]>>2]|0)+(l*8196|0)+4+n|0,b|0,m|0)|0;n=(c[g>>2]|0)+m|0;c[g>>2]=n;k=m+k|0;if((c[h>>2]|0)==0){n=(c[a>>2]|0)+8|0;c[n>>2]=(c[n>>2]|0)+m;n=c[g>>2]|0}if((n|0)==8192){c[(c[c[(c[a>>2]|0)+16>>2]>>2]|0)+(l*8196|0)>>2]=1}if((d|0)==(m|0)){break}else{b=b+m|0;d=d-m|0}}if((f|0)==23){i=e;return k|0}f=c[a>>2]|0;g=c[f+8>>2]|0;if((l|0)!=(g>>>13|0)){r=k;i=e;return r|0}if((c[a+12>>2]|0)!=(g&8191|0)){r=k;i=e;return r|0}c[(c[c[f+16>>2]>>2]|0)+(l*8196|0)>>2]=1;r=k;i=e;return r|0}function Yt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;f=a+8|0;k=c[f>>2]|0;d=a+4|0;g=c[d>>2]|0;if(((k-g|0)/8196|0)>>>0>=b>>>0){do{if((g|0)==0){f=0}else{bX(g|0,0,8196)|0;f=c[d>>2]|0}g=f+8196|0;c[d>>2]=g;b=b+ -1|0;}while((b|0)!=0);i=e;return}l=c[a>>2]|0;g=(g-l|0)/8196|0;j=g+b|0;if(j>>>0>524032){wn(0)}k=(k-l|0)/8196|0;if(k>>>0>262015){k=524032;h=9}else{k=k<<1;k=k>>>0>>0?j:k;if((k|0)==0){j=0;k=0}else{h=9}}if((h|0)==9){j=FW(k*8196|0)|0}h=j+(g*8196|0)|0;do{if((h|0)==0){h=0}else{bX(h|0,0,8196)|0}h=h+8196|0;b=b+ -1|0;}while((b|0)!=0);b=c[a>>2]|0;m=(c[d>>2]|0)-b|0;l=j+((((m|0)/-8196|0)+g|0)*8196|0)|0;$W(l|0,b|0,m|0)|0;c[a>>2]=l;c[d>>2]=h;c[f>>2]=j+(k*8196|0);if((b|0)==0){i=e;return}HW(b);i=e;return}function Zt(b,d){b=b|0;d=d|0;var 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,A=0,B=0,C=0,D=0,E=0;f=i;n=i;i=i+8|0;o=n;v=i;i=i+8|0;p=v;x=i;i=i+8|0;y=x;B=i;i=i+8|0;C=B;E=i;i=i+8|0;r=i;i=i+16|0;e=r;A=i;i=i+16|0;q=A;z=i;i=i+16|0;s=z;D=i;i=i+16|0;l=D;c[b+48>>2]=13;j=b+56|0;c[j>>2]=0;c[j+4>>2]=0;c[b+64>>2]=13;j=b+72|0;c[j>>2]=0;c[j+4>>2]=0;c[b+96>>2]=13;j=b+104|0;c[j>>2]=0;c[j+4>>2]=0;c[b+112>>2]=13;j=b+120|0;c[j>>2]=0;c[j+4>>2]=0;c[b+128>>2]=13;j=b+136|0;c[j>>2]=0;c[j+4>>2]=0;j=b+144|0;c[j>>2]=13;m=b+152|0;c[m>>2]=0;c[m+4>>2]=0;c[r>>2]=13;m=e+8|0;c[m>>2]=0;c[m+4>>2]=0;c[A>>2]=13;w=q+8|0;c[w>>2]=0;c[w+4>>2]=0;c[z>>2]=13;t=s+8|0;c[t>>2]=0;c[t+4>>2]=0;c[D>>2]=13;D=l+8|0;c[D>>2]=0;c[D+4>>2]=0;D=b+164|0;a[D]=1;c[b>>2]=d;c[b+4>>2]=0;c[b+8>>2]=0;c[b+36>>2]=-1;c[b+40>>2]=0;u=b+92|0;c[u>>2]=0;c[b+168>>2]=0;h=b+32|0;c[h>>2]=0;k=b+160|0;c[k>>2]=0;c[b+172>>2]=6;c[b+176>>2]=7;c[b+80>>2]=0;c[b+84>>2]=0;c[b+88>>2]=0;bX(b+12|0,0,20)|0;_m(d,c[d+20>>2]|0,c[d+24>>2]|0,e,0)|0;if((c[r>>2]|0)!=7){c[E>>2]=Pf(e)|0;Qe(-1,130568,E);Of(e);a[D]=0;i=f;return}Yu(c[m>>2]|0,130608,j,0)|0;d=c[r>>2]|0;if((d|0)!=7){c[B>>2]=d;c[C+4>>2]=7;Qe(0,131112,C);tc()}if((c[(Yu(c[m>>2]|0,130624,q,0)|0)>>2]|0)==7){A=c[A>>2]|0;if((A|0)!=7){c[x>>2]=A;c[y+4>>2]=7;Qe(0,131112,y);tc()}do{if((c[(Yu(c[w>>2]|0,130632,s,0)|0)>>2]|0)==3){w=c[z>>2]|0;if((w|0)==3){D=c[t>>2]|0;E=FW(32)|0;ie(E,D);c[u>>2]=E;break}else{c[v>>2]=w;c[p+4>>2]=3;Qe(0,131112,p);tc()}}}while(0);Of(s)}Of(q);p=c[r>>2]|0;if((p|0)!=7){c[n>>2]=p;c[o+4>>2]=7;Qe(0,131112,o);tc()}do{if((c[(Yu(c[m>>2]|0,130640,l,0)|0)>>2]|0)==7){m=FW(48)|0;EF(m,l,c[b>>2]|0);c[k>>2]=m;if((a[m]&1)!=0){break}if((m|0)!=0){FF(m);HW(m)}c[k>>2]=0}}while(0);Of(l);k=c[h>>2]|0;do{if((k|0)==0){if((c[j>>2]|0)!=7){break}k=FW(24)|0;Lv(k,c[b>>2]|0,j);c[h>>2]=k;if((k|0)!=0){g=23}}else{g=23}}while(0);if((g|0)==23){Ov(k)}Of(e);i=f;return}function _t(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+32|0;e=c[d>>2]|0;if((e|0)!=0){i=b;return e|0}e=a+144|0;if((c[e>>2]|0)!=7){e=0;i=b;return e|0}f=FW(24)|0;Lv(f,c[a>>2]|0,e);c[d>>2]=f;e=f;i=b;return e|0}function $t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;f=c[a+28>>2]|0;if((f|0)!=0){g=c[f>>2]|0;if((g|0)!=0){e=f+4|0;d=c[e>>2]|0;if((g|0)!=(d|0)){c[e>>2]=d+(~((d+ -4+(0-g)|0)>>>2)<<2)}HW(g)}HW(f)}d=a+24|0;h=c[d>>2]|0;do{if((h|0)!=0){f=c[h>>2]|0;g=h+4|0;e=c[g>>2]|0;if(f>>>0>>0){e=h;while(1){g=c[f>>2]|0;if((g|0)==0){h=e}else{jg(g);HW(g);h=c[d>>2]|0}f=f+4|0;g=h+4|0;e=c[g>>2]|0;if(f>>>0>>0){e=h}else{break}}if((h|0)==0){break}else{d=h}}else{d=h}f=c[d>>2]|0;if((f|0)!=0){if((f|0)!=(e|0)){c[g>>2]=e+(~((e+ -4+(0-f)|0)>>>2)<<2)}HW(f)}HW(d)}}while(0);f=c[a+20>>2]|0;if((f|0)!=0){e=c[f>>2]|0;if((e|0)!=0){d=f+4|0;g=c[d>>2]|0;if((e|0)!=(g|0)){c[d>>2]=g+(~((g+ -8+(0-e)|0)>>>3)<<3)}HW(e)}HW(f)}d=a+16|0;h=c[d>>2]|0;do{if((h|0)!=0){g=c[h>>2]|0;f=h+4|0;e=c[f>>2]|0;if(g>>>0>>0){do{j=(c[g>>2]|0)+20|0;k=(c[j>>2]|0)+ -1|0;c[j>>2]=k;do{if((k|0)==0){e=c[g>>2]|0;if((e|0)==0){break}Su(e);HW(e)}}while(0);g=g+4|0;h=c[d>>2]|0;f=h+4|0;e=c[f>>2]|0;}while(g>>>0>>0);if((h|0)==0){break}else{d=h}}else{d=h}g=c[d>>2]|0;if((g|0)!=0){if((g|0)!=(e|0)){c[f>>2]=e+(~((e+ -4+(0-g)|0)>>>2)<<2)}HW(g)}HW(d)}}while(0);e=a+4|0;h=c[e>>2]|0;if((h|0)!=0){d=a+40|0;f=c[d>>2]|0;if((f|0)>0){g=0;do{j=c[h+(g<<2)>>2]|0;if((j|0)!=0){lg(j);HW(j);h=c[e>>2]|0;f=c[d>>2]|0}g=g+1|0;}while((g|0)<(f|0))}Fe(h);Fe(c[a+8>>2]|0)}Of(a+64|0);Of(a+48|0);d=c[a+80>>2]|0;if((d|0)!=0){e=d+16|0;g=c[e>>2]|0;f=d+8|0;j=c[f>>2]|0;if((g|0)>0){h=0;do{k=c[j+(h<<2)>>2]|0;if((k|0)!=0){Of(k+32|0);ke(k);HW(k);j=c[f>>2]|0;g=c[e>>2]|0}h=h+1|0;}while((h|0)<(g|0))}Fe(j);HW(d)}d=c[a+84>>2]|0;if((d|0)!=0){e=d+16|0;g=c[e>>2]|0;f=d+8|0;j=c[f>>2]|0;if((g|0)>0){h=0;do{k=c[j+(h<<2)>>2]|0;if((k|0)!=0){Of(k+32|0);ke(k);HW(k);j=c[f>>2]|0;g=c[e>>2]|0}h=h+1|0;}while((h|0)<(g|0))}Fe(j);HW(d)}d=c[a+88>>2]|0;if((d|0)!=0){f=d+16|0;g=c[f>>2]|0;e=d+8|0;j=c[e>>2]|0;if((g|0)>0){h=0;do{k=c[j+(h<<2)>>2]|0;if((k|0)!=0){Of(k+32|0);ke(k);HW(k);j=c[e>>2]|0;g=c[f>>2]|0}h=h+1|0;}while((h|0)<(g|0))}Fe(j);HW(d)}d=c[a+92>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+168>>2]|0;if((d|0)!=0){$F(d);HW(d)}d=c[a+32>>2]|0;if((d|0)!=0){Mv(d);HW(d)}d=c[a+160>>2]|0;if((d|0)==0){k=a+96|0;Of(k);k=a+112|0;Of(k);k=a+128|0;Of(k);k=a+144|0;Of(k);i=b;return}FF(d);HW(d);k=a+96|0;Of(k);k=a+112|0;Of(k);k=a+128|0;Of(k);k=a+144|0;Of(k);i=b;return}function au(a,b){a=a|0;b=b|0;var d=0;d=i;if((b|0)<1){b=0;i=d;return b|0}do{if((c[a+12>>2]|0)<(b|0)){if(bu(a,b)|0){break}else{a=0}i=d;return a|0}}while(0);b=c[(c[a+4>>2]|0)+(b+ -1<<2)>>2]|0;i=d;return b|0}function bu(b,d){b=b|0;d=d|0;var 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,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,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0;f=i;E=i;i=i+8|0;F=E;$=i;i=i+8|0;h=$;Z=i;i=i+8|0;_=Z;X=i;i=i+8|0;Y=X;V=i;i=i+8|0;W=V;T=i;i=i+8|0;U=T;S=i;i=i+8|0;g=S;R=i;i=i+8|0;P=i;i=i+8|0;Q=P;N=i;i=i+8|0;O=N;L=i;i=i+8|0;M=L;J=i;i=i+8|0;K=J;H=i;i=i+8|0;I=H;p=i;i=i+8|0;n=i;i=i+8|0;o=n;k=i;i=i+8|0;l=k;ma=i;i=i+8|0;la=ma;ha=i;i=i+8|0;ia=ha;ra=i;i=i+8|0;oa=i;i=i+8|0;pa=oa;wa=i;i=i+8|0;va=wa;za=i;i=i+8|0;ya=za;G=i;i=i+8|0;ea=G;qa=i;i=i+16|0;na=qa;sa=i;i=i+8|0;fa=sa;xa=i;i=i+16|0;ta=xa;ka=i;i=i+16|0;ga=ka;da=i;i=i+8|0;ca=da;ba=i;i=i+8|0;aa=ba;r=i;i=i+16|0;j=r;v=i;i=i+16|0;m=v;q=i;i=i+16|0;s=q;D=i;i=i+8|0;t=i;i=i+8|0;u=t;w=i;i=i+8|0;x=w;z=i;i=i+8|0;A=z;B=i;i=i+8|0;C=B;y=b+16|0;a:do{if((c[y>>2]|0)==0){c[qa>>2]=13;ja=na+8|0;c[ja>>2]=0;c[ja+4>>2]=0;ua=c[b>>2]|0;_m(ua,c[ua+20>>2]|0,c[ua+24>>2]|0,na,0)|0;c[xa>>2]=13;ua=ta+8|0;c[ua>>2]=0;c[ua+4>>2]=0;Aa=c[qa>>2]|0;if((Aa|0)!=7){c[za>>2]=Aa;c[ya+4>>2]=7;Qe(0,131112,ya);tc()}do{if((c[(Zu(c[ja>>2]|0,130656,ta)|0)>>2]|0)==9){xa=c[xa>>2]|0;if((xa|0)!=9){c[wa>>2]=xa;c[va+4>>2]=9;Qe(0,131112,va);tc()}va=c[ua>>2]|0;if((va|0)<=-1){break}if((va|0)>=(c[(c[b>>2]|0)+16>>2]|0)){break}za=ua;Aa=c[za+4>>2]|0;ra=sa;c[ra>>2]=c[za>>2];c[ra+4>>2]=Aa;Of(ta);c[ka>>2]=13;ra=ga+8|0;c[ra>>2]=0;c[ra+4>>2]=0;qa=c[qa>>2]|0;if((qa|0)!=7){c[oa>>2]=qa;c[pa+4>>2]=7;Qe(0,131112,pa);tc()}Yu(c[ja>>2]|0,130656,ga,0)|0;Of(na);if((c[ka>>2]|0)!=7){c[ma>>2]=Pf(ga)|0;Qe(-1,130728,la);Of(ga);Aa=0;i=f;return Aa|0}ja=(c[ra>>2]|0)+20|0;c[ja>>2]=(c[ja>>2]|0)+1;ja=c[ka>>2]|0;if((ja|0)!=7){c[ha>>2]=ja;c[ia+4>>2]=7;Qe(0,131112,ia);tc()}c[G>>2]=c[ra>>2];Of(ga);ia=cu(b)|0;ga=b+40|0;c[ga>>2]=ia;ja=b+4|0;c[ja>>2]=ye(ia,4)|0;ia=b+8|0;c[ia>>2]=ye(c[ga>>2]|0,8)|0;if((c[ga>>2]|0)>0){ha=0;do{c[(c[ja>>2]|0)+(ha<<2)>>2]=0;c[(c[ia>>2]|0)+(ha<<3)>>2]=-1;c[(c[ia>>2]|0)+(ha<<3)+4>>2]=-1;ha=ha+1|0;}while((ha|0)<(c[ga>>2]|0))}ga=FW(12)|0;c[ga>>2]=0;c[ga+4>>2]=0;c[ga+8>>2]=0;c[y>>2]=ga;hu(ga,ea);ga=FW(12)|0;c[ga>>2]=0;c[ga+4>>2]=0;c[ga+8>>2]=0;c[b+20>>2]=ga;gu(ga,fa);ga=FW(12)|0;c[ga>>2]=0;ea=ga+4|0;c[ea>>2]=0;Aa=ga+8|0;c[Aa>>2]=0;c[b+24>>2]=ga;fa=FW(288)|0;hg(fa,0,c[G>>2]|0);c[da>>2]=fa;da=c[ea>>2]|0;if((da|0)==(c[Aa>>2]|0)){fu(ga,ca)}else{if((da|0)==0){ca=0}else{c[da>>2]=fa;ca=c[ea>>2]|0}c[ea>>2]=ca+4}Aa=FW(12)|0;c[Aa>>2]=0;c[Aa+4>>2]=0;c[Aa+8>>2]=0;c[b+28>>2]=Aa;c[ba>>2]=0;eu(Aa,aa);c[b+12>>2]=0;ba=0;break a}}while(0);Qe(-1,130664,ra);Of(ta);Aa=0;i=f;return Aa|0}else{ba=c[b+12>>2]|0}}while(0);aa=b+12|0;if((ba|0)>=(d|0)){Aa=1;i=f;return Aa|0}fa=j+8|0;na=fa+4|0;ja=b+28|0;ea=m+8|0;ba=ea+4|0;ha=b+20|0;ca=s+8|0;da=ca+4|0;ga=b+24|0;ia=b+32|0;ka=b+36|0;la=b+4|0;ma=b+8|0;b:while(1){Aa=c[y>>2]|0;oa=c[Aa+4>>2]|0;if((c[Aa>>2]|0)==(oa|0)){g=0;e=98;break}Aa=c[oa+ -4>>2]|0;c[G>>2]=Aa;c[r>>2]=13;c[fa>>2]=0;c[na>>2]=0;Yu(Aa,130776,j,0)|0;if((c[r>>2]|0)!=6){e=29;break}oa=c[(c[(c[ja>>2]|0)+4>>2]|0)+ -4>>2]|0;pa=c[fa>>2]|0;c:do{if((oa|0)<(c[pa+12>>2]|0)){c[v>>2]=13;c[ea>>2]=0;c[ba>>2]=0;vt(pa,oa,m)|0;if((c[v>>2]|0)!=9){e=44;break b}qa=c[ha>>2]|0;pa=c[qa+4>>2]|0;qa=c[qa>>2]|0;d:do{if((pa|0)!=(qa|0)){ra=0;while(1){sa=ra+1|0;if((c[qa+(ra<<3)>>2]|0)==(c[ea>>2]|0)){break}if(sa>>>0>3>>>0){ra=sa}else{break d}}Qe(-1,130888,p);Of(m);Of(j);Aa=(c[(c[ja>>2]|0)+4>>2]|0)+ -4|0;c[Aa>>2]=(c[Aa>>2]|0)+1;break c}}while(0);c[q>>2]=13;c[ca>>2]=0;c[da>>2]=0;pa=c[r>>2]|0;if((pa|0)!=6){e=47;break b}ut(c[fa>>2]|0,oa,s)|0;Of(j);e:do{if((c[q>>2]|0)==7){do{if(!(Xu(c[ca>>2]|0,130912)|0)){if((c[q>>2]|0)!=7){e=96;break e}if(!(Uu(c[ca>>2]|0,130776)|0)){break}if((c[q>>2]|0)!=7){e=96;break e}pa=c[ga>>2]|0;ra=FW(288)|0;oa=pa+4|0;hg(ra,c[(c[oa>>2]|0)+ -4>>2]|0,c[ca>>2]|0);c[t>>2]=ra;qa=c[oa>>2]|0;if((qa|0)==(c[pa+8>>2]|0)){fu(pa,u)}else{if((qa|0)==0){pa=0}else{c[qa>>2]=ra;pa=c[oa>>2]|0}c[oa>>2]=pa+4}pa=c[ha>>2]|0;oa=c[v>>2]|0;if((oa|0)!=9){e=76;break b}sa=ea;ra=c[sa>>2]|0;sa=c[sa+4>>2]|0;oa=w;c[oa>>2]=ra;c[oa+4>>2]=sa;oa=pa+4|0;qa=c[oa>>2]|0;if((qa|0)==(c[pa+8>>2]|0)){gu(pa,x)}else{if((qa|0)==0){pa=0}else{pa=qa;c[pa>>2]=ra;c[pa+4>>2]=sa;pa=c[oa>>2]|0}c[oa>>2]=pa+8}oa=c[q>>2]|0;if((oa|0)!=7){e=83;break b}oa=(c[ca>>2]|0)+20|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=c[y>>2]|0;pa=c[q>>2]|0;if((pa|0)!=7){e=85;break b}ra=c[ca>>2]|0;c[z>>2]=ra;pa=oa+4|0;qa=c[pa>>2]|0;if((qa|0)==(c[oa+8>>2]|0)){hu(oa,A)}else{if((qa|0)==0){oa=0}else{c[qa>>2]=ra;oa=c[pa>>2]|0}c[pa>>2]=oa+4}pa=c[ja>>2]|0;c[B>>2]=0;oa=pa+4|0;qa=c[oa>>2]|0;if((qa|0)==(c[pa+8>>2]|0)){eu(pa,C);break e}if((qa|0)==0){pa=0}else{c[qa>>2]=0;pa=c[oa>>2]|0}c[oa>>2]=pa+4;break e}}while(0);pa=FW(288)|0;oa=c[q>>2]|0;if((oa|0)!=7){e=53;break b}hg(pa,c[(c[(c[ga>>2]|0)+4>>2]|0)+ -4>>2]|0,c[ca>>2]|0);oa=FW(144)|0;qa=c[b>>2]|0;ra=(c[aa>>2]|0)+1|0;sa=c[q>>2]|0;if((sa|0)!=7){e=55;break b}sa=c[v>>2]|0;if((sa|0)!=9){e=57;break b}za=c[ca>>2]|0;xa=ea;ya=c[xa+4>>2]|0;Aa=D;c[Aa>>2]=c[xa>>2];c[Aa+4>>2]=ya;Aa=c[ia>>2]|0;$W(E|0,D|0,8)|0;kg(oa,qa,ra,za,F,pa,Aa);pa=c[aa>>2]|0;if((a[oa+136|0]&1)==0){e=59;break b}if((pa|0)>=(c[ka>>2]|0)){e=63;break b}c[(c[la>>2]|0)+(pa<<2)>>2]=oa;oa=c[v>>2]|0;if((oa|0)!=9){e=65;break b}c[(c[ma>>2]|0)+(c[aa>>2]<<3)>>2]=c[ea>>2];oa=c[v>>2]|0;if((oa|0)!=9){e=67;break b}c[(c[ma>>2]|0)+(c[aa>>2]<<3)+4>>2]=c[ba>>2];c[aa>>2]=(c[aa>>2]|0)+1;Aa=(c[(c[ja>>2]|0)+4>>2]|0)+ -4|0;c[Aa>>2]=(c[Aa>>2]|0)+1}else{e=96}}while(0);if((e|0)==96){e=0;za=(c[aa>>2]|0)+1|0;Aa=Pf(s)|0;c[$>>2]=za;c[h+4>>2]=Aa;Qe(-1,131008,h);Aa=(c[(c[ja>>2]|0)+4>>2]|0)+ -4|0;c[Aa>>2]=(c[Aa>>2]|0)+1}Of(m);Of(s)}else{za=(c[(c[(c[y>>2]|0)+4>>2]|0)+ -4>>2]|0)+20|0;Aa=(c[za>>2]|0)+ -1|0;c[za>>2]=Aa;do{if((Aa|0)==0){oa=c[(c[(c[y>>2]|0)+4>>2]|0)+ -4>>2]|0;if((oa|0)==0){break}Su(oa);HW(oa)}}while(0);oa=(c[y>>2]|0)+4|0;c[oa>>2]=(c[oa>>2]|0)+ -4;oa=(c[ha>>2]|0)+4|0;c[oa>>2]=(c[oa>>2]|0)+ -8;oa=c[ga>>2]|0;pa=c[oa+4>>2]|0;qa=c[pa+ -4>>2]|0;if((qa|0)!=0){jg(qa);HW(qa);oa=c[ga>>2]|0;pa=c[oa+4>>2]|0}c[oa+4>>2]=pa+ -4;Aa=(c[ja>>2]|0)+4|0;c[Aa>>2]=(c[Aa>>2]|0)+ -4;Aa=c[ja>>2]|0;oa=c[Aa+4>>2]|0;if((c[Aa>>2]|0)!=(oa|0)){Aa=oa+ -4|0;c[Aa>>2]=(c[Aa>>2]|0)+1}Of(j)}}while(0);if((c[aa>>2]|0)>=(d|0)){g=1;e=98;break}}if((e|0)==29){za=(c[aa>>2]|0)+1|0;Aa=Pf(j)|0;c[k>>2]=za;c[l+4>>2]=Aa;Qe(-1,130784,l);Of(j);Aa=0;i=f;return Aa|0}else if((e|0)==44){za=(c[aa>>2]|0)+1|0;Aa=Pf(m)|0;c[n>>2]=za;c[o+4>>2]=Aa;Qe(-1,130832,o);Of(m);Of(j);Aa=0;i=f;return Aa|0}else if((e|0)==47){c[H>>2]=pa;c[I+4>>2]=6;Qe(0,131112,I);tc()}else if((e|0)==53){c[J>>2]=oa;c[K+4>>2]=7;Qe(0,131112,K);tc()}else if((e|0)==55){c[L>>2]=sa;c[M+4>>2]=7;Qe(0,131112,M);tc()}else if((e|0)==57){c[N>>2]=sa;c[O+4>>2]=9;Qe(0,131112,O);tc()}else if((e|0)==59){c[P>>2]=pa+1;Qe(-1,130920,Q);if((oa|0)!=0){lg(oa);HW(oa)}Of(m);Of(s);Aa=0;i=f;return Aa|0}else if((e|0)==63){Qe(-1,130952,R);Of(m);Of(s);Aa=0;i=f;return Aa|0}else if((e|0)==65){c[S>>2]=oa;c[g+4>>2]=9;Qe(0,131112,g);tc()}else if((e|0)==67){c[T>>2]=oa;c[U+4>>2]=9;Qe(0,131112,U);tc()}else if((e|0)==76){c[V>>2]=oa;c[W+4>>2]=9;Qe(0,131112,W);tc()}else if((e|0)==83){c[X>>2]=oa;c[Y+4>>2]=7;Qe(0,131112,Y);tc()}else if((e|0)==85){c[Z>>2]=pa;c[_+4>>2]=7;Qe(0,131112,_);tc()}else if((e|0)==98){i=f;return g|0}return 0}function cu(a){a=a|0;var b=0,d=0,e=0,f=0,g=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.0;f=i;j=i;i=i+8|0;g=j;k=i;i=i+8|0;o=i;i=i+8|0;p=o;r=i;i=i+16|0;m=r;n=i;i=i+16|0;e=n;l=i;i=i+16|0;d=l;b=a+36|0;q=c[b>>2]|0;if((q|0)!=-1){t=q;i=f;return t|0}c[r>>2]=13;s=m+8|0;c[s>>2]=0;c[s+4>>2]=0;c[n>>2]=13;t=e+8|0;c[t>>2]=0;c[t+4>>2]=0;c[l>>2]=13;q=d+8|0;c[q>>2]=0;c[q+4>>2]=0;a=c[a>>2]|0;_m(a,c[a+20>>2]|0,c[a+24>>2]|0,m,0)|0;a=c[r>>2]|0;if((a|0)!=7){c[o>>2]=a;c[p+4>>2]=7;Qe(0,131112,p);tc()}Yu(c[s>>2]|0,130656,e,0)|0;Of(m);if((c[n>>2]|0)!=7){c[k>>2]=Pf(e)|0;Qe(-1,130728,k);Of(e);t=0;i=f;return t|0}Yu(c[t>>2]|0,131048,d,0)|0;k=c[l>>2]|0;if((k+ -1|0)>>>0<2){if((k|0)==1){u=+(c[q>>2]|0)}else{u=+h[q>>3]}g=~~u}else{c[j>>2]=Pf(d)|0;Qe(-1,131056,g);g=0}c[b>>2]=g;Of(d);Of(e);t=c[b>>2]|0;i=f;return t|0}function du(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;if((cu(a)|0)<=0){m=0;i=f;return m|0}g=a+12|0;h=a+8|0;j=0;a:while(1){k=j+1|0;if((c[g>>2]|0)<(k|0)){if(bu(a,k)|0){e=5}}else{e=5}do{if((e|0)==5){e=0;l=c[h>>2]|0;m=l+(j<<3)|0;if((m|0)==0){break}if((c[m>>2]|0)!=(b|0)){break}if((c[l+(j<<3)+4>>2]|0)==(d|0)){e=9;break a}}}while(0);if((k|0)<(cu(a)|0)){j=k}else{k=0;e=9;break}}if((e|0)==9){i=f;return k|0}return 0}function eu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;g=a+4|0;d=c[a>>2]|0;e=(c[g>>2]|0)-d|0;k=e>>2;f=k+1|0;if(f>>>0>1073741823){wn(0)}j=a+8|0;m=(c[j>>2]|0)-d|0;if(m>>2>>>0>536870910){n=1073741823;l=5}else{m=m>>1;n=m>>>0>>0?f:m;if((n|0)==0){m=0;n=0}else{l=5}}if((l|0)==5){m=FW(n<<2)|0}k=m+(k<<2)|0;if((k|0)!=0){c[k>>2]=c[b>>2]}$W(m|0,d|0,e|0)|0;c[a>>2]=m;c[g>>2]=m+(f<<2);c[j>>2]=m+(n<<2);if((d|0)==0){i=h;return}HW(d);i=h;return}function fu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;g=a+4|0;d=c[a>>2]|0;e=(c[g>>2]|0)-d|0;k=e>>2;f=k+1|0;if(f>>>0>1073741823){wn(0)}j=a+8|0;m=(c[j>>2]|0)-d|0;if(m>>2>>>0>536870910){n=1073741823;l=5}else{m=m>>1;n=m>>>0>>0?f:m;if((n|0)==0){m=0;n=0}else{l=5}}if((l|0)==5){m=FW(n<<2)|0}k=m+(k<<2)|0;if((k|0)!=0){c[k>>2]=c[b>>2]}$W(m|0,d|0,e|0)|0;c[a>>2]=m;c[g>>2]=m+(f<<2);c[j>>2]=m+(n<<2);if((d|0)==0){i=h;return}HW(d);i=h;return}function gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;g=a+4|0;d=c[a>>2]|0;e=(c[g>>2]|0)-d|0;k=e>>3;f=k+1|0;if(f>>>0>536870911){wn(0)}j=a+8|0;m=(c[j>>2]|0)-d|0;if(m>>3>>>0>268435454){n=536870911;l=5}else{m=m>>2;n=m>>>0>>0?f:m;if((n|0)==0){m=0;n=0}else{l=5}}if((l|0)==5){m=FW(n<<3)|0}k=m+(k<<3)|0;if((k|0)!=0){o=b;b=c[o+4>>2]|0;l=k;c[l>>2]=c[o>>2];c[l+4>>2]=b}$W(m|0,d|0,e|0)|0;c[a>>2]=m;c[g>>2]=m+(f<<3);c[j>>2]=m+(n<<3);if((d|0)==0){i=h;return}HW(d);i=h;return}function hu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;g=a+4|0;d=c[a>>2]|0;e=(c[g>>2]|0)-d|0;k=e>>2;f=k+1|0;if(f>>>0>1073741823){wn(0)}j=a+8|0;m=(c[j>>2]|0)-d|0;if(m>>2>>>0>536870910){n=1073741823;l=5}else{m=m>>1;n=m>>>0>>0?f:m;if((n|0)==0){m=0;n=0}else{l=5}}if((l|0)==5){m=FW(n<<2)|0}k=m+(k<<2)|0;if((k|0)!=0){c[k>>2]=c[b>>2]}$W(m|0,d|0,e|0)|0;c[a>>2]=m;c[g>>2]=m+(f<<2);c[j>>2]=m+(n<<2);if((d|0)==0){i=h;return}HW(d);i=h;return}function iu(a,b){a=a|0;b=b|0;var 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;d=i;h=i;i=i+8|0;j=h;l=i;i=i+8|0;f=l;n=i;i=i+8|0;e=i;i=i+64|0;g=i;i=i+8|0;k=g;m=a+28|0;a=yc(c[m>>2]|0,131184)|0;if((a|0)==0){c[n>>2]=c[m>>2];Qe(-1,131192,n);p=0;i=d;return p|0}p=ye(32768,4)|0;if((Do(e,64,a)|0)==0){n=0}else{n=0;o=32768;do{if((n|0)==(o|0)){o=n<<1;p=Ce(p,o,4)|0}c[l>>2]=k;if((Hc(e|0,131232,f|0)|0)==1){c[p+(n<<2)>>2]=c[g>>2];n=n+1|0}else{q=n+1|0;r=c[m>>2]|0;c[h>>2]=q;c[j+4>>2]=r;Qe(-1,131240,j);c[p+(n<<2)>>2]=0;n=q}}while((Do(e,64,a)|0)!=0)}mc(a|0)|0;r=FW(52)|0;q=FW(32)|0;ie(q,b);c[r>>2]=q;q=r+8|0;c[q>>2]=n;o=ye(n,4)|0;c[r+4>>2]=o;$W(o|0,p|0,c[q>>2]<<2|0)|0;c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=0;c[r+24>>2]=1;ad(r+28|0,0)|0;Fe(p);i=d;return r|0}function ju(a){a=a|0;var b=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;b=i;f=i;i=i+8|0;g=f;s=i;i=i+8|0;t=s;l=i;i=i+8|0;m=l;n=i;i=i+8|0;o=n;e=i;i=i+8|0;r=e;v=i;i=i+8|0;h=i;i=i+256|0;j=i;i=i+8|0;p=j;k=i;i=i+8|0;x=ye(8,4)|0;q=a+28|0;d=yc(c[q>>2]|0,131184)|0;if((d|0)==0){Fe(x);c[v>>2]=c[q>>2];Qe(-1,131280,v);H=0;i=b;return H|0}B=ye(4096,4)|0;bX(B|0,0,16384)|0;a:do{if((Do(h,256,d)|0)==0){w=0;A=0;v=0;y=0}else{w=0;z=0;A=0;v=0;y=0;D=4096;C=8;do{while(1){while(1){z=z+1|0;E=Mb(h|0,131328,k|0)|0;if((E|0)!=0){c[e>>2]=p;if((Hc(E|0,131232,r|0)|0)==1){break}}H=c[q>>2]|0;c[n>>2]=z;c[o+4>>2]=H;Qe(-1,131336,o);if((Do(h,256,d)|0)==0){break a}else{}}G=Mb(0,131328,k|0)|0;if((G|0)!=0){F=0;while(1){if((F|0)>=(C|0)){H=C+8|0;C=H;x=Ce(x,H,4)|0}c[l>>2]=x+(F<<2);E=F+1|0;if((Hc(G|0,131232,m|0)|0)!=1){u=14;break}G=Mb(0,131328,k|0)|0;if((G|0)==0){break}else{F=E}}if((u|0)==14){u=0;E=c[q>>2]|0;c[s>>2]=z;c[t+4>>2]=E;Qe(-1,131336,t);E=F}if((E|0)>=1){break}}H=c[q>>2]|0;c[f>>2]=z;c[g+4>>2]=H;Qe(-1,131336,g);if((Do(h,256,d)|0)==0){break a}}G=c[j>>2]|0;if(G>>>0>=D>>>0){F=D;while(1){if(G>>>0>>0){break}else{F=F<<1}}B=Ce(B,F,4)|0;bX(B+(D<<2)|0,0,F-D<<2|0)|0;D=F}if((E|0)==1){c[B+(c[j>>2]<<2)>>2]=c[x>>2]}else{c[B+(c[j>>2]<<2)>>2]=0;if((v|0)==(y|0)){y=v+16|0;A=Ce(A,y,12)|0}c[A+(v*12|0)>>2]=c[j>>2];G=ye(E,4)|0;F=A+(v*12|0)+4|0;c[F>>2]=G;b:do{if((E|0)>0){H=0;while(1){c[G+(H<<2)>>2]=c[x+(H<<2)>>2];H=H+1|0;if((H|0)>=(E|0)){break b}G=c[F>>2]|0}}}while(0);c[A+(v*12|0)+8>>2]=E;v=v+1|0}E=c[j>>2]|0;w=E>>>0>>0?w:E+1|0;}while((Do(h,256,d)|0)!=0)}}while(0);mc(d|0)|0;H=FW(52)|0;G=FW(32)|0;ie(G,a);c[H>>2]=G;G=H+8|0;c[G>>2]=w;F=ye(w,4)|0;c[H+4>>2]=F;$W(F|0,B|0,c[G>>2]<<2|0)|0;c[H+12>>2]=A;c[H+16>>2]=v;c[H+20>>2]=y;c[H+24>>2]=1;ad(H+28|0,0)|0;Fe(B);Fe(x);i=b;return H|0}function ku(a){a=a|0;var b=0,d=0,e=0;d=i;b=FW(52)|0;c[b>>2]=0;c[b+8>>2]=256;e=ye(256,4)|0;c[b+4>>2]=e;$W(e|0,a|0,1024)|0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;ad(b+28|0,0)|0;i=d;return b|0}function lu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;g=i;e=i;i=i+8|0;f=e;d=FW(52)|0;c[d>>2]=0;j=d+8|0;c[j>>2]=256;k=ye(256,4)|0;h=d+4|0;c[h>>2]=k;c[k>>2]=0;if((c[j>>2]|0)>>>0>1){k=1;do{c[(c[h>>2]|0)+(k<<2)>>2]=0;k=k+1|0;}while(k>>>0<(c[j>>2]|0)>>>0)}c[d+12>>2]=0;c[d+20>>2]=0;c[d+16>>2]=0;c[d+24>>2]=1;ad(d+28|0,0)|0;c[e>>2]=c[a+28>>2];mu(d,252,f,b);i=g;return d|0}function mu(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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,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;O=i;F=i;i=i+8|0;P=i;i=i+8|0;E=i;i=i+8|0;K=i;i=i+8|0;L=K;M=i;i=i+8|0;N=M;g=i;i=i+8|0;v=i;i=i+8|0;A=i;i=i+8|0;C=i;i=i+8|0;D=C;y=i;i=i+8|0;q=i;i=i+8|0;n=i;i=i+8|0;o=n;p=i;i=i+256|0;l=p;s=i;i=i+256|0;j=s;I=i;i=i+256|0;w=I;u=i;i=i+8|0;m=u;r=i;i=i+8|0;k=r;H=i;i=i+8|0;x=H;z=i;i=i+8|0;B=z;G=i;i=i+8|0;J=G;t=(f|0)/4|0;h=FW(12)|0;YF(h,d,e);_F(h,l,256,m)|0;if(_F(h,j,256,k)|0){T=l+1|0;d=t+2|0;R=j+1|0;S=w+1|0;e=t+4|0;Q=l+2|0;do{do{if((Qc(j|0,131432)|0)==0){do{if((a[p]|0)==47){V=FW(32)|0;fe(V,T);U=ef(c[834]|0,V)|0;if((U|0)==0){c[n>>2]=c[V+28>>2];Qe(-1,131384,o)}else{mu(b,253,U,f);mc(U|0)|0}if((V|0)==0){break}ke(V);HW(V)}}while(0);_F(h,l,256,m)|0}else{if((Qc(j|0,131440)|0)==0){a:do{if(_F(h,l,256,m)|0){while(1){if((Qc(l|0,131456)|0)==0){break a}if(!(_F(h,j,256,k)|0)){break}if((Qc(j|0,131456)|0)==0){break}V=c[u>>2]|0;do{if((V|0)==(d|0)){if((a[p]|0)!=60){U=22;break}if((a[l+(t+1)|0]|0)!=62){U=22;break}if((a[s]|0)!=60){U=22;break}W=c[r>>2]|0;if((a[j+(W+ -1)|0]|0)==62){V=d;U=31}else{U=22}}else{U=22}}while(0);b:do{if((U|0)==22){U=0;do{if((V|0)==(e|0)){if((a[p]|0)!=60){break}if((a[l+(t+3)|0]|0)!=62){break}if((a[T]|0)!=48){break}if((a[Q]|0)!=48){break}if((a[s]|0)!=60){break}W=c[r>>2]|0;if((a[j+(W+ -1)|0]|0)==62){V=e;U=31;break b}}}while(0);Qe(-1,131472,y)}}while(0);do{if((U|0)==31){a[j+(W+ -1)|0]=0;a[l+(V+ -1)|0]=0;c[C>>2]=B;if((Hc(T|0,131232,D|0)|0)==1){ru(b,c[z>>2]|0,R,(c[r>>2]|0)+ -2|0,0);break}else{Qe(-1,131472,A);break}}}while(0);if(!(_F(h,l,256,m)|0)){break a}}Qe(-1,131472,q)}}while(0);_F(h,l,256,m)|0;break}if((Qc(j|0,131520)|0)!=0){eX(l|0,j|0)|0;break}c:do{if(_F(h,l,256,m)|0){while(1){if((Qc(l|0,131536)|0)==0){break c}if(!(_F(h,j,256,k)|0)){break}if((Qc(j|0,131536)|0)==0){break}if(!(_F(h,w,256,x)|0)){break}if((Qc(w|0,131536)|0)==0){break}V=c[u>>2]|0;do{if((V|0)==(d|0)){if((a[p]|0)!=60){U=47;break}if((a[l+(t+1)|0]|0)==62){V=d;U=52}else{U=47}}else{U=47}}while(0);do{if((U|0)==47){if((V|0)!=(e|0)){U=60;break}if((a[p]|0)!=60){U=60;break}if((a[l+(t+3)|0]|0)!=62){U=60;break}if((a[T]|0)!=48){U=60;break}if((a[Q]|0)==48){V=e;U=52}else{U=60}}}while(0);d:do{if((U|0)==52){U=0;W=c[r>>2]|0;do{if((W|0)==(d|0)){if((a[s]|0)!=60){U=55;break}if((a[j+(t+1)|0]|0)==62){W=d}else{U=55}}else{U=55}}while(0);if((U|0)==55){U=0;if((W|0)!=(e|0)){U=60;break}if((a[s]|0)!=60){U=60;break}if((a[j+(t+3)|0]|0)!=62){U=60;break}if((a[T]|0)!=48){U=60;break}if((a[Q]|0)==48){W=e}else{U=60;break}}a[j+(W+ -1)|0]=0;a[l+(V+ -1)|0]=0;c[M>>2]=B;do{if((Hc(T|0,131232,N|0)|0)==1){c[K>>2]=J;if((Hc(R|0,131232,L|0)|0)!=1){break}if((Qc(w|0,131608)|0)!=0){do{if((a[I]|0)==60){V=c[H>>2]|0;W=w+(V+ -1)|0;if((a[W]|0)!=62){break}a[W]=0;W=c[z>>2]|0;if(W>>>0>(c[G>>2]|0)>>>0){break d}else{X=W;W=0}while(1){ru(b,X,S,V+ -2|0,W);X=(c[z>>2]|0)+1|0;c[z>>2]=X;if(X>>>0>(c[G>>2]|0)>>>0){break d}V=c[H>>2]|0;W=W+1|0}}}while(0);Qe(-1,131552,F);break d}if(_F(h,l,256,m)|0){X=0}else{break d}while(1){V=(c[z>>2]|0)+X|0;if(V>>>0>(c[G>>2]|0)>>>0){break d}if((Qc(l|0,131616)|0)==0){break d}do{if((a[p]|0)==60){W=c[u>>2]|0;Y=l+(W+ -1)|0;if((a[Y]|0)!=62){U=72;break}a[Y]=0;ru(b,V,T,W+ -2|0,0)}else{U=72}}while(0);if((U|0)==72){U=0;Qe(-1,131552,P)}if(_F(h,l,256,m)|0){X=X+1|0}else{break d}}}}while(0);Qe(-1,131552,E)}}while(0);if((U|0)==60){Qe(-1,131552,g)}if(!(_F(h,l,256,m)|0)){break c}}Qe(-1,131552,v)}}while(0);_F(h,l,256,m)|0}}while(0);}while(_F(h,j,256,k)|0)}if((h|0)==0){i=O;return}HW(h);i=O;return}function nu(b){b=b|0;var d=0,e=0,f=0;d=i;e=c[b>>2]|0;f=a[e]|0;if(f<<24>>24==0){f=-1;i=d;return f|0}c[b>>2]=e+1;f=f<<24>>24;i=d;return f|0}function ou(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;e=i;g=i;i=i+8|0;d=g;f=FW(52)|0;c[f>>2]=0;h=f+8|0;c[h>>2]=256;k=ye(256,4)|0;j=f+4|0;c[j>>2]=k;do{if((c[h>>2]|0)!=0){c[k>>2]=0;if((c[h>>2]|0)>>>0>1){k=1}else{break}do{c[(c[j>>2]|0)+(k<<2)>>2]=0;k=k+1|0;}while(k>>>0<(c[h>>2]|0)>>>0)}}while(0);c[f+12>>2]=0;c[f+20>>2]=0;c[f+16>>2]=0;c[f+24>>2]=1;ad(f+28|0,0)|0;h=ef(c[834]|0,a)|0;if((h|0)==0){c[g>>2]=c[a+28>>2];Qe(-1,131384,d);i=e;return f|0}else{mu(f,253,h,b);mc(h|0)|0;i=e;return f|0}return 0}function pu(a){a=a|0;var b=0;b=i;a=qc(a|0)|0;i=b;return a|0}function qu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=i;i=i+8|0;c[f>>2]=c[b+28>>2];mu(a,252,f,d);i=e;return}function ru(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var 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;h=i;j=i;i=i+8|0;l=i;i=i+8|0;m=l;p=i;i=i+8|0;q=i;i=i+8|0;o=q;t=i;i=i+8|0;n=i;i=i+8|0;r=n;k=i;i=i+8|0;s=b+8|0;u=c[s>>2]|0;a:do{if(u>>>0<=d>>>0){v=d+256&-256;c[s>>2]=v;if(v>>>0<=d>>>0){Qe(-1,131624,t);i=h;return}t=b+4|0;v=Ce(c[t>>2]|0,v,4)|0;c[t>>2]=v;if(u>>>0>=(c[s>>2]|0)>>>0){break}while(1){c[v+(u<<2)>>2]=0;u=u+1|0;if(u>>>0>=(c[s>>2]|0)>>>0){break a}v=c[t>>2]|0}}}while(0);if((f|0)<5){c[q>>2]=r;if((Hc(e|0,131232,o|0)|0)==1){c[(c[b+4>>2]|0)+(d<<2)>>2]=(c[n>>2]|0)+g;i=h;return}else{Qe(-1,131680,p);i=h;return}}n=b+16|0;p=b+20|0;o=c[p>>2]|0;if((c[n>>2]|0)<(o|0)){o=b+12|0}else{v=o+16|0;c[p>>2]=v;o=b+12|0;c[o>>2]=Ce(c[o>>2]|0,v,12)|0}c[(c[b+4>>2]|0)+(d<<2)>>2]=0;c[(c[o>>2]|0)+((c[n>>2]|0)*12|0)>>2]=d;c[(c[o>>2]|0)+((c[n>>2]|0)*12|0)+8>>2]=(f|0)/4|0;p=ye(c[(c[o>>2]|0)+((c[n>>2]|0)*12|0)+8>>2]|0,4)|0;c[(c[o>>2]|0)+((c[n>>2]|0)*12|0)+4>>2]=p;p=c[n>>2]|0;d=c[o>>2]|0;b=c[d+(p*12|0)+8>>2]|0;if((b|0)>0){f=k+4|0;q=0;do{hX(k|0,e+(q<<2)|0,4)|0;a[f]=0;c[l>>2]=(c[(c[o>>2]|0)+((c[n>>2]|0)*12|0)+4>>2]|0)+(q<<2);if((Hc(k|0,131232,m|0)|0)!=1){Qe(-1,131680,j)}q=q+1|0;p=c[n>>2]|0;d=c[o>>2]|0;b=c[d+(p*12|0)+8>>2]|0;}while((q|0)<(b|0))}v=(c[d+(p*12|0)+4>>2]|0)+(b+ -1<<2)|0;c[v>>2]=(c[v>>2]|0)+g;c[n>>2]=(c[n>>2]|0)+1;i=h;return}function su(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=c[a>>2]|0;if((d|0)!=0){ke(d);HW(d)}Fe(c[a+4>>2]|0);e=a+12|0;g=c[e>>2]|0;if((g|0)==0){g=a+28|0;kc(g|0)|0;i=b;return}d=a+16|0;if((c[d>>2]|0)>0){f=0;while(1){Fe(c[g+(f*12|0)+4>>2]|0);f=f+1|0;g=c[e>>2]|0;if((f|0)<(c[d>>2]|0)){}else{break}}}Fe(g);g=a+28|0;kc(g|0)|0;i=b;return}function tu(a){a=a|0;var b=0,d=0;b=i;d=a+28|0;Ub(d|0)|0;a=a+24|0;c[a>>2]=(c[a>>2]|0)+1;Mc(d|0)|0;i=b;return}function uu(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;e=a+28|0;Ub(e|0)|0;f=a+24|0;d=(c[f>>2]|0)+ -1|0;c[f>>2]=d;Mc(e|0)|0;if((d|0)!=0|(a|0)==0){i=b;return}su(a);HW(a);i=b;return}function vu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;if((e|0)==1){c[(c[a+4>>2]|0)+(b<<2)>>2]=c[d>>2];i=f;return}g=a+16|0;j=c[g>>2]|0;a:do{if((j|0)>0){l=c[a+12>>2]|0;h=0;while(1){k=h+1|0;if((c[l+(h*12|0)>>2]|0)==(b|0)){break}if((k|0)<(j|0)){h=k}else{h=k;break a}}Fe(c[l+(h*12|0)+4>>2]|0);j=c[g>>2]|0}else{h=0}}while(0);if((h|0)==(j|0)){k=a+20|0;if((j|0)==(c[k>>2]|0)){l=j+8|0;c[k>>2]=l;j=a+12|0;c[j>>2]=Ce(c[j>>2]|0,l,12)|0;j=c[g>>2]|0}c[g>>2]=j+1}c[(c[a+4>>2]|0)+(b<<2)>>2]=0;a=a+12|0;c[(c[a>>2]|0)+(h*12|0)>>2]=b;c[(c[a>>2]|0)+(h*12|0)+8>>2]=e;l=ye(e,4)|0;c[(c[a>>2]|0)+(h*12|0)+4>>2]=l;if((e|0)>0){b=0}else{i=f;return}do{c[(c[(c[a>>2]|0)+(h*12|0)+4>>2]|0)+(b<<2)>>2]=c[d+(b<<2)>>2];b=b+1|0;}while((b|0)<(e|0));i=f;return}function wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;if((c[a+8>>2]|0)>>>0<=b>>>0){h=0;i=f;return h|0}g=(c[a+4>>2]|0)+(b<<2)|0;if((c[g>>2]|0)!=0){c[d>>2]=g;h=1;i=f;return h|0}g=a+12|0;h=c[a+16>>2]|0;while(1){a=h+ -1|0;if((h|0)<=0){d=0;e=8;break}h=c[g>>2]|0;if((c[h+(a*12|0)>>2]|0)==(b|0)){break}else{h=a}}if((e|0)==8){i=f;return d|0}c[d>>2]=c[h+(a*12|0)+4>>2];h=c[(c[g>>2]|0)+(a*12|0)+8>>2]|0;i=f;return h|0}function xu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if((e|0)==1){g=c[a+8>>2]|0;a:do{if((g|0)!=0){e=c[a+4>>2]|0;a=c[b>>2]|0;h=0;while(1){b=h+1|0;if((c[e+(h<<2)>>2]|0)==(a|0)){break}if(b>>>0>>0){h=b}else{break a}}c[d>>2]=h;h=1;i=f;return h|0}}while(0);c[d>>2]=120;h=0;i=f;return h|0}b=c[a+16>>2]|0;if((b|0)<=0){h=0;i=f;return h|0}a=c[a+12>>2]|0;h=0;while(1){if((c[a+(h*12|0)+8>>2]|0)==(e|0)){if((((e|0)>0?e:0)|0)==(e|0)){break}}h=h+1|0;if((h|0)>=(b|0)){d=0;g=14;break}}if((g|0)==14){i=f;return d|0}c[d>>2]=c[a+(h*12|0)>>2];h=1;i=f;return h|0}function yu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=a+4|0;c[e>>2]=b;b=ye(b,4)|0;c[a>>2]=b;if((c[e>>2]|0)>0){f=0}else{i=d;return}while(1){c[b+(f<<2)>>2]=0;f=f+1|0;if((f|0)>=(c[e>>2]|0)){break}b=c[a>>2]|0}i=d;return}function zu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;d=a+4|0;f=c[a>>2]|0;if((c[d>>2]|0)>0){e=0}else{Fe(f);i=b;return}do{f=c[f+(e<<2)>>2]|0;do{if((f|0)!=0){h=f+28|0;Ub(h|0)|0;j=f+24|0;g=(c[j>>2]|0)+ -1|0;c[j>>2]=g;Mc(h|0)|0;if((g|0)!=0){break}su(f);HW(f)}}while(0);e=e+1|0;f=c[a>>2]|0}while((e|0)<(c[d>>2]|0));Fe(f);i=b;return}function Au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;f=c[c[a>>2]>>2]|0;do{if((f|0)!=0){f=c[f>>2]|0;if((f|0)==0){break}if((se(f,b)|0)!=0){break}h=c[c[a>>2]>>2]|0;j=h+28|0;Ub(j|0)|0;h=h+24|0;c[h>>2]=(c[h>>2]|0)+1;Mc(j|0)|0;j=c[c[a>>2]>>2]|0;i=d;return j|0}}while(0);g=a+4|0;h=c[g>>2]|0;if((h|0)>1){f=1}else{j=0;i=d;return j|0}a:while(1){j=c[(c[a>>2]|0)+(f<<2)>>2]|0;do{if((j|0)!=0){j=c[j>>2]|0;if((j|0)==0){break}if((se(j,b)|0)==0){break a}h=c[g>>2]|0}}while(0);f=f+1|0;if((f|0)>=(h|0)){a=0;e=14;break}}if((e|0)==14){i=d;return a|0}b=c[a>>2]|0;e=c[b+(f<<2)>>2]|0;if((f|0)>0){while(1){g=f+ -1|0;c[b+(f<<2)>>2]=c[b+(g<<2)>>2];b=c[a>>2]|0;if((g|0)>0){f=g}else{break}}}c[b>>2]=e;j=e+28|0;Ub(j|0)|0;h=e+24|0;c[h>>2]=(c[h>>2]|0)+1;Mc(j|0)|0;j=e;i=d;return j|0}function Bu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=a+4|0;f=c[(c[a>>2]|0)+((c[e>>2]|0)+ -1<<2)>>2]|0;do{if((f|0)!=0){h=f+28|0;Ub(h|0)|0;j=f+24|0;g=(c[j>>2]|0)+ -1|0;c[j>>2]=g;Mc(h|0)|0;if((g|0)!=0){break}su(f);HW(f)}}while(0);f=c[e>>2]|0;e=f+ -1|0;if((e|0)>0){while(1){g=c[a>>2]|0;c[g+(e<<2)>>2]=c[g+(f+ -2<<2)>>2];g=e+ -1|0;if((g|0)>0){f=e;e=g}else{break}}}c[c[a>>2]>>2]=b;j=b+28|0;Ub(j|0)|0;h=b+24|0;c[h>>2]=(c[h>>2]|0)+1;Mc(j|0)|0;i=d;return}function Cu(b,e,f,g,h,j,k,l,m,n,o,p){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var 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;b=i;x=i;i=i+32|0;s=x;v=i;i=i+32|0;q=v;r=i;i=i+256|0;t=i;i=i+16|0;a[p]=0;do{if((l|0)!=0){w=c[l+24>>2]|0;l=c[l+28>>2]|0;if((w|0)<32){$W(x|0,l|0,w|0)|0;$W(s+w|0,131712,32-w|0)|0}else{$W(x|0,l|0,32)|0}Du(s,32,s);if((e|0)==3){u=0;while(1){Du(s,f,s);u=u+1|0;if((u|0)<50){}else{u=12;break}}}else if((e|0)==2){t=0;do{a[r+t|0]=t;t=t+1|0;}while((t|0)<256);if((f|0)!=0){v=0;t=0;w=0;while(1){t=t&255;l=r+v|0;x=a[l]|0;w=(d[s+t|0]|0)+(w&255)+(x&255)|0;y=r+(w&255)|0;a[l]=a[y]|0;a[y]=x;v=v+1|0;if((v|0)<256){w=w&255;t=((t+1|0)%(f|0)|0)&255}else{break}}}s=c[g+28>>2]|0;t=0;v=0;w=0;while(1){y=a[s+w|0]|0;v=(v&255)+1|0;B=r+(v&255)|0;A=a[B]|0;x=A&255;t=x+(t&255)|0;z=r+(t&255)|0;l=a[z]|0;a[B]=l;a[z]=A;a[q+w|0]=a[r+((l&255)+x&255)|0]^y;w=w+1|0;if((w|0)<32){v=v&255;t=t&255}else{break}}}else{u=12}if((u|0)==12){$W(v|0,c[g+28>>2]|0,32)|0;u=(f|0)>0;v=(f|0)==0;w=19;while(1){if(u){l=0;while(1){a[t+l|0]=(d[s+l|0]|0)^w;l=l+1|0;if((l|0)<(f|0)){}else{l=0;break}}}else{l=0}do{a[r+l|0]=l;l=l+1|0;}while((l|0)<256);if(v){x=0;l=0;y=0}else{l=0;x=0;y=0;while(1){x=x&255;z=r+l|0;A=a[z]|0;y=(d[t+x|0]|0)+(y&255)+(A&255)|0;B=r+(y&255)|0;a[z]=a[B]|0;a[B]=A;l=l+1|0;if((l|0)<256){y=y&255;x=((x+1|0)%(f|0)|0)&255}else{x=0;l=0;y=0;break}}}while(1){B=q+y|0;A=a[B]|0;l=(l&255)+1|0;F=r+(l&255)|0;E=a[F]|0;z=E&255;x=z+(x&255)|0;D=r+(x&255)|0;C=a[D]|0;a[F]=C;a[D]=E;a[B]=a[r+((C&255)+z&255)|0]^A;y=y+1|0;if((y|0)<32){l=l&255;x=x&255}else{break}}if((w|0)>0){w=w+ -1|0}else{break}}}r=FW(32)|0;ge(r,q,32);if(!(Eu(0,e,f,g,h,j,k,r,n,o)|0)){if((r|0)==0){break}ke(r);HW(r);break}a[p]=1;if((r|0)==0){F=1;i=b;return F|0}ke(r);HW(r);F=1;i=b;return F|0}}while(0);F=Eu(0,e,f,g,h,j,k,m,n,o)|0;i=b;return F|0}function Du(b,e,f){b=b|0;e=e|0;f=f|0;var 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,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;A=i;j=i;i=i+64|0;h=j;L=e+72|0;k=(L|0)/64|0;if((L|0)<=63){u=1;w=69;x=103;v=35;y=-119;B=-51;C=-17;z=-85;D=-2;F=-70;G=-104;E=-36;H=118;J=50;K=16;I=84;L=f;a[L]=u;L=f+1|0;a[L]=v;L=f+2|0;a[L]=w;L=f+3|0;a[L]=x;L=f+4|0;a[L]=y;L=f+5|0;a[L]=z;L=f+6|0;a[L]=B;L=f+7|0;a[L]=C;L=f+8|0;a[L]=D;L=f+9|0;a[L]=E;L=f+10|0;a[L]=F;L=f+11|0;a[L]=G;L=f+12|0;a[L]=H;L=f+13|0;a[L]=I;L=f+14|0;a[L]=J;L=f+15|0;a[L]=K;i=A;return}l=e+ -3|0;n=k+ -1|0;o=e+ -2|0;p=e+ -1|0;q=e<<3;r=h+56|0;w=h+4|0;x=h+8|0;y=h+12|0;z=h+16|0;g=h+20|0;B=h+24|0;C=h+28|0;D=h+32|0;E=h+36|0;v=h+40|0;u=h+44|0;t=h+48|0;s=h+52|0;m=h+60|0;H=1732584193;J=-271733879;F=-1732584194;G=271733878;I=0;K=0;do{if((K|0)<(l|0)){L=0;while(1){c[h+(L<<2)>>2]=(((d[b+(K+3)|0]|0)<<8|(d[b+(K+2)|0]|0))<<8|(d[b+(K+1)|0]|0))<<8|(d[b+K|0]|0);L=L+1|0;K=K+4|0;if((L|0)<16&(K|0)<(l|0)){}else{break}}}else{L=0}if((I|0)==(n|0)){do{if((K|0)==(l|0)){c[h+(L<<2)>>2]=d[b+l|0]|0|((d[b+(e+ -1)|0]|0)<<8|(d[b+(e+ -2)|0]|0))<<8|-2147483648}else{if((K|0)==(o|0)){c[h+(L<<2)>>2]=d[b+o|0]|0|(d[b+(e+ -1)|0]|0)<<8|8388608;break}if((K|0)==(p|0)){c[h+(L<<2)>>2]=d[b+p|0]|0|32768;break}else{c[h+(L<<2)>>2]=128;break}}}while(0);if((L+1|0)<16){bX(h+(L+1<<2)|0,0,60-(L<<2)|0)|0}c[r>>2]=q}ca=c[j>>2]|0;ea=H+ -680876936+(G&~J|J&F)+ca|0;ea=(ea>>>25|ea<<7)+J|0;X=c[w>>2]|0;da=G+ -389564586+X+(F&~ea|ea&J)|0;da=(da>>>20|da<<12)+ea|0;Q=c[x>>2]|0;M=F+606105819+Q+(J&~da|da&ea)|0;M=(M>>>15|M<<17)+da|0;Z=c[y>>2]|0;N=J+ -1044525330+Z+(ea&~M|M&da)|0;N=(N>>>10|N<<22)+M|0;S=c[z>>2]|0;ea=ea+ -176418897+S+(da&~N|N&M)|0;ea=(ea>>>25|ea<<7)+N|0;$=c[g>>2]|0;da=$+1200080426+da+(M&~ea|ea&N)|0;da=(da>>>20|da<<12)+ea|0;U=c[B>>2]|0;M=U+ -1473231341+M+(N&~da|da&ea)|0;M=(M>>>15|M<<17)+da|0;ba=c[C>>2]|0;N=ba+ -45705983+N+(ea&~M|M&da)|0;N=(N>>>10|N<<22)+M|0;W=c[D>>2]|0;ea=W+1770035416+ea+(da&~N|N&M)|0;ea=(ea>>>25|ea<<7)+N|0;P=c[E>>2]|0;da=P+ -1958414417+da+(M&~ea|ea&N)|0;da=(da>>>20|da<<12)+ea|0;Y=c[v>>2]|0;M=Y+ -42063+M+(N&~da|da&ea)|0;M=(M>>>15|M<<17)+da|0;R=c[u>>2]|0;N=R+ -1990404162+N+(ea&~M|M&da)|0;N=(N>>>10|N<<22)+M|0;_=c[t>>2]|0;ea=_+1804603682+ea+(da&~N|N&M)|0;ea=(ea>>>25|ea<<7)+N|0;T=c[s>>2]|0;da=T+ -40341101+da+(M&~ea|ea&N)|0;da=(da>>>20|da<<12)+ea|0;aa=c[r>>2]|0;O=~da;M=aa+ -1502002290+M+(N&O|da&ea)|0;M=(M>>>15|M<<17)+da|0;V=c[m>>2]|0;L=~M;N=V+1236535329+N+(ea&L|M&da)|0;N=(N>>>10|N<<22)+M|0;O=X+ -165796510+ea+(N&da|M&O)|0;O=(O>>>27|O<<5)+N|0;L=U+ -1069501632+da+(O&M|N&L)|0;L=(L>>>23|L<<9)+O|0;M=R+643717713+M+(L&N|O&~N)|0;M=(M>>>18|M<<14)+L|0;N=ca+ -373897302+N+(M&O|L&~O)|0;N=(N>>>12|N<<20)+M|0;O=$+ -701558691+O+(N&L|M&~L)|0;O=(O>>>27|O<<5)+N|0;L=Y+38016083+L+(O&M|N&~M)|0;L=(L>>>23|L<<9)+O|0;M=V+ -660478335+M+(L&N|O&~N)|0;M=(M>>>18|M<<14)+L|0;N=S+ -405537848+N+(M&O|L&~O)|0;N=(N>>>12|N<<20)+M|0;O=P+568446438+O+(N&L|M&~L)|0;O=(O>>>27|O<<5)+N|0;L=aa+ -1019803690+L+(O&M|N&~M)|0;L=(L>>>23|L<<9)+O|0;M=Z+ -187363961+M+(L&N|O&~N)|0;M=(M>>>18|M<<14)+L|0;N=W+1163531501+N+(M&O|L&~O)|0;N=(N>>>12|N<<20)+M|0;O=T+ -1444681467+O+(N&L|M&~L)|0;O=(O>>>27|O<<5)+N|0;L=Q+ -51403784+L+(O&M|N&~M)|0;L=(L>>>23|L<<9)+O|0;M=ba+1735328473+M+(L&N|O&~N)|0;M=(M>>>18|M<<14)+L|0;N=_+ -1926607734+N+(M&O|L&~O)|0;N=(N>>>12|N<<20)+M|0;O=$+ -378558+O+(M^L^N)|0;O=(O>>>28|O<<4)+N|0;L=W+ -2022574463+L+(N^M^O)|0;L=(L>>>21|L<<11)+O|0;M=R+1839030562+M+(O^N^L)|0;M=(M>>>16|M<<16)+L|0;N=aa+ -35309556+N+(L^O^M)|0;N=(N>>>9|N<<23)+M|0;O=X+ -1530992060+O+(M^L^N)|0;O=(O>>>28|O<<4)+N|0;L=S+1272893353+L+(N^M^O)|0;L=(L>>>21|L<<11)+O|0;M=ba+ -155497632+M+(O^N^L)|0;M=(M>>>16|M<<16)+L|0;N=Y+ -1094730640+N+(L^O^M)|0;N=(N>>>9|N<<23)+M|0;O=T+681279174+O+(M^L^N)|0;O=(O>>>28|O<<4)+N|0;L=ca+ -358537222+L+(N^M^O)|0;L=(L>>>21|L<<11)+O|0;M=Z+ -722521979+M+(O^N^L)|0;M=(M>>>16|M<<16)+L|0;N=U+76029189+N+(L^O^M)|0;N=(N>>>9|N<<23)+M|0;O=P+ -640364487+O+(M^L^N)|0;O=(O>>>28|O<<4)+N|0;L=_+ -421815835+L+(N^M^O)|0;L=(L>>>21|L<<11)+O|0;M=V+530742520+M+(O^N^L)|0;M=(M>>>16|M<<16)+L|0;N=Q+ -995338651+N+(L^O^M)|0;N=(N>>>9|N<<23)+M|0;O=ca+ -198630844+O+((N|~L)^M)|0;O=(O>>>26|O<<6)+N|0;L=ba+1126891415+L+((O|~M)^N)|0;L=(L>>>22|L<<10)+O|0;M=aa+ -1416354905+M+((L|~N)^O)|0;M=(M>>>17|M<<15)+L|0;N=$+ -57434055+N+((M|~O)^L)|0;N=(N>>>11|N<<21)+M|0;O=_+1700485571+O+((N|~L)^M)|0;O=(O>>>26|O<<6)+N|0;L=Z+ -1894986606+L+((O|~M)^N)|0;L=(L>>>22|L<<10)+O|0;M=Y+ -1051523+M+((L|~N)^O)|0;M=(M>>>17|M<<15)+L|0;N=X+ -2054922799+N+((M|~O)^L)|0;N=(N>>>11|N<<21)+M|0;O=W+1873313359+O+((N|~L)^M)|0;O=(O>>>26|O<<6)+N|0;L=V+ -30611744+L+((O|~M)^N)|0;L=(L>>>22|L<<10)+O|0;M=U+ -1560198380+M+((L|~N)^O)|0;M=(M>>>17|M<<15)+L|0;N=T+1309151649+N+((M|~O)^L)|0;N=(N>>>11|N<<21)+M|0;O=S+ -145523070+O+((N|~L)^M)|0;O=(O>>>26|O<<6)+N|0;L=R+ -1120210379+L+((O|~M)^N)|0;L=(L>>>22|L<<10)+O|0;M=Q+718787259+M+((L|~N)^O)|0;M=(M>>>17|M<<15)+L|0;N=P+ -343485551+N+((M|~O)^L)|0;H=O+H|0;J=M+J+(N>>>11|N<<21)|0;F=M+F|0;G=L+G|0;I=I+1|0;}while((I|0)<(k|0));Q=H&255;S=H>>>16&255;T=H>>>24&255;R=H>>>8&255;U=J&255;W=J>>>16&255;X=J>>>24&255;V=J>>>8&255;Y=F&255;_=F>>>16&255;$=F>>>24&255;Z=F>>>8&255;aa=G&255;ca=G>>>16&255;da=G>>>24&255;ba=G>>>8&255;ea=f;a[ea]=Q;ea=f+1|0;a[ea]=R;ea=f+2|0;a[ea]=S;ea=f+3|0;a[ea]=T;ea=f+4|0;a[ea]=U;ea=f+5|0;a[ea]=V;ea=f+6|0;a[ea]=W;ea=f+7|0;a[ea]=X;ea=f+8|0;a[ea]=Y;ea=f+9|0;a[ea]=Z;ea=f+10|0;a[ea]=_;ea=f+11|0;a[ea]=$;ea=f+12|0;a[ea]=aa;ea=f+13|0;a[ea]=ba;ea=f+14|0;a[ea]=ca;ea=f+15|0;a[ea]=da;i=A;return}function Eu(b,e,f,g,h,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;b=i;u=i;i=i+32|0;p=u;o=i;i=i+256|0;r=i;i=i+16|0;s=k+24|0;q=we((c[s>>2]|0)+72|0)|0;do{if((l|0)==0){$W(q|0,131712,32)|0}else{t=c[l+24>>2]|0;l=c[l+28>>2]|0;if((t|0)<32){$W(q|0,l|0,t|0)|0;$W(q+t|0,131712,32-t|0)|0;break}else{$W(q|0,l|0,32)|0;break}}}while(0);t=q+32|0;$W(t|0,c[g+28>>2]|0,32)|0;a[q+64|0]=j;a[q+65|0]=j>>>8;a[q+66|0]=j>>>16;a[q+67|0]=j>>>24;j=k+28|0;$W(q+68|0,c[j>>2]|0,c[s>>2]|0)|0;k=c[s>>2]|0;g=k+68|0;if(!n){a[q+g|0]=-1;a[q+(k+69)|0]=-1;a[q+(k+70)|0]=-1;a[q+(k+71)|0]=-1;g=k+72|0}Du(q,g,m);g=(e|0)==3;if(g){n=0;do{Du(m,f,m);n=n+1|0;}while((n|0)<50)}if((e|0)==2){r=0;do{a[o+r|0]=r;r=r+1|0;}while((r|0)<256);if((f|0)!=0){r=0;t=0;s=0;while(1){t=t&255;g=o+r|0;k=a[g]|0;s=(d[m+t|0]|0)+(s&255)+(k&255)|0;l=o+(s&255)|0;a[g]=a[l]|0;a[l]=k;r=r+1|0;if((r|0)<256){s=s&255;t=((t+1|0)%(f|0)|0)&255}else{break}}}f=c[h+28>>2]|0;s=0;t=0;r=0;while(1){l=a[f+r|0]|0;t=(t&255)+1|0;e=o+(t&255)|0;u=a[e]|0;k=u&255;s=k+(s&255)|0;n=o+(s&255)|0;g=a[n]|0;a[e]=g;a[n]=u;a[p+r|0]=a[o+((g&255)+k&255)|0]^l;r=r+1|0;if((r|0)<32){t=t&255;s=s&255}else{break}}l=(iX(p|0,131712,32)|0)==0;Fe(q);i=b;return l|0}if(!g){l=0;Fe(q);i=b;return l|0}$W(u|0,c[h+28>>2]|0,32)|0;h=(f|0)==0;if((f|0)>0){e=19;while(1){u=0;while(1){a[r+u|0]=(d[m+u|0]|0)^e;u=u+1|0;if((u|0)<(f|0)){}else{u=0;break}}do{a[o+u|0]=u;u=u+1|0;}while((u|0)<256);if(h){g=0;n=0;u=0}else{u=0;g=0;n=0;while(1){g=g&255;v=o+u|0;k=a[v]|0;n=(d[r+g|0]|0)+(n&255)+(k&255)|0;l=o+(n&255)|0;a[v]=a[l]|0;a[l]=k;u=u+1|0;if((u|0)<256){n=n&255;g=((g+1|0)%(f|0)|0)&255}else{g=0;n=0;u=0;break}}}while(1){v=p+u|0;l=a[v]|0;n=(n&255)+1|0;z=o+(n&255)|0;y=a[z]|0;k=y&255;g=k+(g&255)|0;x=o+(g&255)|0;w=a[x]|0;a[z]=w;a[x]=y;a[v]=a[o+((w&255)+k&255)|0]^l;u=u+1|0;if((u|0)<32){n=n&255;g=g&255}else{break}}if((e|0)>0){e=e+ -1|0}else{break}}}else{m=19;while(1){e=0;do{a[o+e|0]=e;e=e+1|0;}while((e|0)<256);if(h){n=0;e=0;u=0}else{e=0;u=0;n=0;while(1){u=u&255;x=o+e|0;y=a[x]|0;n=(d[r+u|0]|0)+(n&255)+(y&255)|0;z=o+(n&255)|0;a[x]=a[z]|0;a[z]=y;e=e+1|0;if((e|0)<256){n=n&255;u=((u+1|0)%(f|0)|0)&255}else{n=0;e=0;u=0;break}}}while(1){z=p+u|0;y=a[z]|0;e=(e&255)+1|0;k=o+(e&255)|0;l=a[k]|0;x=l&255;n=x+(n&255)|0;v=o+(n&255)|0;w=a[v]|0;a[k]=w;a[v]=l;a[z]=a[o+((w&255)+x&255)|0]^y;u=u+1|0;if((u|0)<32){e=e&255;n=n&255}else{break}}if((m|0)>0){m=m+ -1|0}else{break}}}$W(q|0,131712,32)|0;$W(t|0,c[j>>2]|0,c[s>>2]|0)|0;Du(q,(c[s>>2]|0)+32|0,q);z=(iX(p|0,q|0,16)|0)==0;Fe(q);i=b;return z|0}function Fu(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;k=i;uj(b,d);c[b>>2]=131752;d=b+12|0;c[d>>2]=f;if((g|0)>0){f=0;do{a[b+20+f|0]=a[e+f|0]|0;f=f+1|0;}while((f|0)<(g|0))}a[b+20+g|0]=h;a[b+20+(g+1)|0]=h>>>8;a[b+20+(g+2)|0]=h>>>16;a[b+20+(g+3)|0]=j;a[b+20+(g+4)|0]=j>>>8;h=g+5|0;if((c[d>>2]|0)!=1){f=h;g=b+20|0;Du(g,f,g);g=b+16|0;f=(h|0)>16;d=f?16:h;f=g;c[f>>2]=d;f=b+48|0;c[f>>2]=0;i=k;return}a[b+20+h|0]=115;a[b+20+(g+6)|0]=65;a[b+20+(g+7)|0]=108;a[b+20+(g+8)|0]=84;f=g+9|0;g=b+20|0;Du(g,f,g);g=b+16|0;f=(h|0)>16;d=f?16:h;f=g;c[f>>2]=d;f=b+48|0;c[f>>2]=0;i=k;return}function Gu(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=131752;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function Hu(a){a=a|0;var b=0;b=i;c[a>>2]=131752;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function Iu(b){b=b|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;e=i;c[b+48>>2]=0;f=b+8|0;g=c[f>>2]|0;fd[c[(c[g>>2]|0)+12>>2]&511](g);g=c[b+12>>2]|0;if((g|0)==0){a[b+309|0]=0;a[b+308|0]=0;f=c[b+16>>2]|0;g=0;do{a[b+52+g|0]=g;g=g+1|0;}while((g|0)<256);if((f|0)!=0){h=0;g=0;j=0;while(1){g=g&255;I=b+52+h|0;J=a[I]|0;j=(d[b+20+g|0]|0)+(j&255)+(J&255)|0;K=b+52+(j&255)|0;a[I]=a[K]|0;a[K]=J;h=h+1|0;if((h|0)<256){j=j&255;g=((g+1|0)%(f|0)|0)&255}else{break}}}c[b+312>>2]=-1;i=e;return}else if((g|0)==1){g=b+52|0;c[g>>2]=(d[b+21|0]|0)<<16|(d[b+20|0]|0)<<24|(d[b+22|0]|0)<<8|(d[b+23|0]|0);c[b+56>>2]=(d[b+25|0]|0)<<16|(d[b+24|0]|0)<<24|(d[b+26|0]|0)<<8|(d[b+27|0]|0);c[b+60>>2]=(d[b+29|0]|0)<<16|(d[b+28|0]|0)<<24|(d[b+30|0]|0)<<8|(d[b+31|0]|0);j=(d[b+33|0]|0)<<16|(d[b+32|0]|0)<<24|(d[b+34|0]|0)<<8|(d[b+35|0]|0);c[b+64>>2]=j;h=4;while(1){if((h&3|0)==0){j=((d[132232+(j>>>8&255)|0]|0)<<16|(d[132232+(j>>>16&255)|0]|0)<<24|(d[132232+(j&255)|0]|0)<<8|(d[132232+(j>>>24)|0]|0))^c[132184+(((h|0)/4|0)<<2)>>2]}j=c[g+(h+ -4<<2)>>2]^j;c[g+(h<<2)>>2]=j;h=h+1|0;if((h|0)>=44){p=1;break}}while(1){o=p<<2;n=0;do{m=g+(n+o<<2)|0;j=c[m>>2]|0;h=j>>>24;k=j>>>16;l=j>>>8;q=h<<1;q=(h&128|0)!=0?q^27:q;G=(q&128|0)!=0;H=q<<1;r=H&510;r=G?r^27:r;s=r<<1;s=(r&128|0)!=0?s^27:s;t=k<<1&510;t=(k&128|0)!=0?t^27:t;B=(t&128|0)!=0;C=t<<1;u=C&510;u=B?u^27:u;v=u<<1;v=(u&128|0)!=0?v^27:v;w=l<<1&510;x=(l&128|0)!=0?w^27:w;I=(x&128|0)!=0;J=x<<1;w=I?J^27:J;y=w<<1;y=(w&128|0)!=0?y^27:y;z=j<<1&510;A=(j&128|0)!=0?z^27:z;E=(A&128|0)!=0;F=A<<1;z=E?F^27:F;D=z<<1;D=(z&128|0)!=0?D^27:D;G=G?H^27:H;H=G<<1;H=(G&128|0)!=0?H^27:H;J=J&510;I=I?J^27:J;J=I<<1;J=(I&128|0)!=0?J^27:J;K=h^j;B=B?C^27:C;C=B<<1;C=(B&128|0)!=0?C^27:C;F=F&510;E=E?F^27:F;F=E<<1;F=(E&128|0)!=0?F^27:F;c[m>>2]=(K^l^t^x^z^u^H^D^v^J)<<16&16711680|(k^j^l^q^t^r^w^D^s^y^v)<<24|(K^k^A^x^G^I^H^C^F^J)<<8&65280|(k^h^l^q^A^B^E^s^C^y^F)&255;n=n+1|0;}while((n|0)<4);p=p+1|0;if((p|0)>=10){g=0;break}}do{K=c[f>>2]|0;a[b+52+(g+192)|0]=jd[c[(c[K>>2]|0)+20>>2]&511](K)|0;g=g+1|0;}while((g|0)<16);c[b+276>>2]=16;i=e;return}else{i=e;return}}function Ju(a){a=a|0;i=i;return c[a+48>>2]|0}function Ku(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;h=i;i=i+16|0;g=c[b+12>>2]|0;a:do{if((g|0)==0){f=b+312|0;g=c[f>>2]|0;do{if((g|0)==-1){g=c[b+8>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;if((g|0)!=-1){k=b+308|0;m=b+309|0;j=(d[k]|0)+1|0;a[k]=j;j=b+52+(j&255)|0;k=(d[m]|0)+(d[j]|0)|0;a[m]=k;m=a[j]|0;k=b+52+(k&255)|0;l=a[k]|0;a[j]=l;a[k]=m;g=(a[b+52+((l&255)+(m&255)&255)|0]^g&255)&255;c[f>>2]=g;break}g=c[f>>2]|0;c[f>>2]=-1;if((g|0)==-1){b=-1}else{break a}i=e;return b|0}}while(0);c[f>>2]=-1}else if((g|0)==1){j=b+52|0;g=b+276|0;k=c[g>>2]|0;do{if((k|0)==16){m=b+8|0;l=0;do{k=c[m>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){b=-1;f=14;break}a[h+l|0]=k;l=l+1|0;}while((l|0)<16);if((f|0)==14){i=e;return b|0}k=c[m>>2]|0;Lu(j,h,(jd[c[(c[k>>2]|0)+24>>2]&511](k)|0)==-1);k=c[g>>2]|0;if((k|0)==16){b=-1}else{break}i=e;return b|0}}while(0);c[g>>2]=k+1;g=d[b+52+(k+208)|0]|0}else{m=-1;i=e;return m|0}}while(0);m=b+48|0;c[m>>2]=(c[m>>2]|0)+1;m=g;i=e;return m|0}function Lu(b,e,f){b=b|0;e=e|0;f=f|0;var 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,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,pa=0,qa=0,ra=0;j=i;h=i;i=i+8|0;g=h;P=a[e]|0;L=b+176|0;a[L]=P;t=e+1|0;M=b+180|0;a[M]=a[t]|0;u=e+2|0;I=b+184|0;a[I]=a[u]|0;v=e+3|0;E=b+188|0;a[E]=a[v]|0;w=e+4|0;O=b+177|0;a[O]=a[w]|0;k=e+5|0;K=b+181|0;a[K]=a[k]|0;y=e+6|0;z=b+185|0;a[z]=a[y]|0;x=e+7|0;D=b+189|0;a[D]=a[x]|0;s=e+8|0;A=b+178|0;a[A]=a[s]|0;r=e+9|0;H=b+182|0;a[H]=a[r]|0;q=e+10|0;G=b+186|0;a[G]=a[q]|0;p=e+11|0;C=b+190|0;a[C]=a[p]|0;o=e+12|0;N=b+179|0;a[N]=a[o]|0;n=e+13|0;J=b+183|0;a[J]=a[n]|0;m=e+14|0;F=b+187|0;a[F]=a[m]|0;l=e+15|0;B=b+191|0;a[B]=a[l]|0;Q=0;while(1){qa=b+(Q+40<<2)|0;a[b+176+Q|0]=P&255^(c[qa>>2]|0)>>>24;ra=b+176+(Q+4)|0;a[ra]=(d[ra]|0)^(c[qa>>2]|0)>>>16;ra=b+176+(Q+8)|0;a[ra]=(d[ra]|0)^(c[qa>>2]|0)>>>8;ra=b+176+(Q+12)|0;a[ra]=(d[ra]|0)^c[qa>>2];Q=Q+1|0;if((Q|0)>=4){P=9;break}P=a[b+176+Q|0]|0}while(1){a[L]=a[131928+(d[L]|0)|0]|0;a[O]=a[131928+(d[O]|0)|0]|0;a[A]=a[131928+(d[A]|0)|0]|0;a[N]=a[131928+(d[N]|0)|0]|0;ia=a[131928+(d[M]|0)|0]|0;ha=a[131928+(d[K]|0)|0]|0;ja=a[131928+(d[J]|0)|0]|0;la=a[131928+(d[I]|0)|0]|0;na=a[131928+(d[z]|0)|0]|0;ka=a[131928+(d[G]|0)|0]|0;ma=a[131928+(d[F]|0)|0]|0;ra=a[131928+(d[E]|0)|0]|0;oa=a[131928+(d[D]|0)|0]|0;pa=a[131928+(d[C]|0)|0]|0;qa=a[131928+(d[B]|0)|0]|0;a[J]=a[131928+(d[H]|0)|0]|0;a[H]=ha;a[K]=ia;a[M]=ja;a[I]=ka;a[G]=la;a[z]=ma;a[F]=na;a[E]=oa;a[D]=pa;a[C]=qa;a[B]=ra;if((P|0)>0){T=0}else{z=0;break}do{ia=b+176+T|0;V=a[ia]|0;Z=b+176+(T+4)|0;U=a[Z]|0;R=b+176+(T+8)|0;Q=a[R]|0;S=b+176+(T+12)|0;W=a[S]|0;ra=V&255;X=ra<<1;X=(ra&128|0)!=0?X^27:X;ja=(X&128|0)!=0;ka=X<<1;Y=ka&510;ma=ja?Y^27:Y;Y=ma<<1;Y=(ma&128|0)!=0?Y^27:Y;ra=U&255;_=ra<<1;ca=(ra&128|0)!=0?_^27:_;ba=(ca&128|0)!=0;da=ca<<1;_=da&510;ea=ba?_^27:_;_=ea<<1;ha=(ea&128|0)!=0?_^27:_;ra=Q&255;_=ra<<1;_=(ra&128|0)!=0?_^27:_;na=(_&128|0)!=0;pa=_<<1;qa=na?pa^27:pa;$=qa<<1;$=(qa&128|0)!=0?$^27:$;ra=W&255;aa=ra<<1;aa=(ra&128|0)!=0?aa^27:aa;fa=(aa&128|0)!=0;ga=aa<<1;la=fa?ga^27:ga;oa=la<<1;oa=(la&128|0)!=0?oa^27:oa;a[ia]=(Q^U)&255^X^ra^ca^ma^qa^Y^ha^$^oa;ia=ja?ka^27:ka;ja=ia<<1;ja=(ia&128|0)!=0?ja^27:ja;ka=pa&510;ka=na?ka^27:ka;ma=ka<<1;ma=(ka&128|0)!=0?ma^27:ma;a[Z]=(Q^V^W)&255^ca^_^ea^ja^la^ha^ma^oa;Z=ba?da^27:da;ba=Z<<1;ba=(Z&128|0)!=0?ba^27:ba;ca=ga&510;da=fa?ca^27:ca;ca=da<<1;ra=(da&128|0)!=0?ca^27:ca;qa=U^V;a[R]=_^(W^qa)&255^ia^aa^ja^ka^ba^ma^ra;a[S]=(qa^Q)&255^X^aa^Z^Y^ba^da^$^ra;T=T+1|0;}while((T|0)<4);R=P<<2;Q=0;do{qa=b+(Q+R<<2)|0;ra=b+176+Q|0;a[ra]=(d[ra]|0)^(c[qa>>2]|0)>>>24;ra=b+176+(Q+4)|0;a[ra]=(d[ra]|0)^(c[qa>>2]|0)>>>16;ra=b+176+(Q+8)|0;a[ra]=(d[ra]|0)^(c[qa>>2]|0)>>>8;ra=b+176+(Q+12)|0;a[ra]=(d[ra]|0)^c[qa>>2];Q=Q+1|0;}while((Q|0)<4);P=P+ -1|0}while(1){qa=b+(z<<2)|0;ra=b+176+z|0;a[ra]=(d[ra]|0)^(c[qa>>2]|0)>>>24;ra=b+176+(z+4)|0;a[ra]=(d[ra]|0)^(c[qa>>2]|0)>>>16;ra=b+176+(z+8)|0;a[ra]=(d[ra]|0)^(c[qa>>2]|0)>>>8;ra=b+176+(z+12)|0;a[ra]=(d[ra]|0)^c[qa>>2];z=z+1|0;if((z|0)<4){}else{z=0;break}}do{ra=z<<2;a[b+208+ra|0]=a[b+192+ra|0]^a[b+176+z|0];qa=ra|1;a[b+208+qa|0]=a[b+192+qa|0]^a[b+176+(z+4)|0];qa=ra|2;a[b+208+qa|0]=a[b+192+qa|0]^a[b+176+(z+8)|0];ra=ra|3;a[b+208+ra|0]=a[b+192+ra|0]^a[b+176+(z+12)|0];z=z+1|0;}while((z|0)<4);a[b+192|0]=a[e]|0;a[b+193|0]=a[t]|0;a[b+194|0]=a[u]|0;a[b+195|0]=a[v]|0;a[b+196|0]=a[w]|0;a[b+197|0]=a[k]|0;a[b+198|0]=a[y]|0;a[b+199|0]=a[x]|0;a[b+200|0]=a[s]|0;a[b+201|0]=a[r]|0;a[b+202|0]=a[q]|0;a[b+203|0]=a[p]|0;a[b+204|0]=a[o]|0;a[b+205|0]=a[n]|0;a[b+206|0]=a[m]|0;a[b+207|0]=a[l]|0;e=b+224|0;c[e>>2]=0;if(!f){i=j;return}k=a[b+223|0]|0;f=k&255;if((k&255)<=15){l=15;while(1){a[b+208+l|0]=a[b+208+(l-f)|0]|0;if((l|0)>(f|0)){l=l+ -1|0}else{break}}}c[e>>2]=f;if((k&255)<=16){i=j;return}c[h>>2]=f;Qe(-1,131880,g);c[e>>2]=16;i=j;return}function Mu(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;g=i;i=i+16|0;h=c[b+12>>2]|0;if((h|0)==1){h=b+52|0;j=b+276|0;k=c[j>>2]|0;do{if((k|0)==16){l=b+8|0;m=0;do{k=c[l>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){b=-1;f=12;break}a[g+m|0]=k;m=m+1|0;}while((m|0)<16);if((f|0)==12){i=e;return b|0}k=c[l>>2]|0;Lu(h,g,(jd[c[(c[k>>2]|0)+24>>2]&511](k)|0)==-1);k=c[j>>2]|0;if((k|0)==16){b=-1}else{break}i=e;return b|0}}while(0);m=d[b+52+(k+208)|0]|0;i=e;return m|0}else if((h|0)==0){f=b+312|0;g=c[f>>2]|0;if((g|0)!=-1){m=g;i=e;return m|0}g=c[b+8>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;if((g|0)==-1){m=c[f>>2]|0;i=e;return m|0}else{k=b+308|0;m=b+309|0;j=(d[k]|0)+1|0;a[k]=j;j=b+52+(j&255)|0;k=(d[m]|0)+(d[j]|0)|0;a[m]=k;m=a[j]|0;k=b+52+(k&255)|0;l=a[k]|0;a[j]=l;a[k]=m;m=(a[b+52+((l&255)+(m&255)&255)|0]^g&255)&255;c[f>>2]=m;i=e;return m|0}}else{m=-1;i=e;return m|0}return 0}function Nu(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+8>>2]|0;a=Bd[c[(c[a>>2]|0)+60>>2]&255](a,b)|0;i=d;return a|0}function Ou(a){a=a|0;i=i;return 11}function Pu(a){a=a|0;i=i;return a|0}function Qu(b,d){b=b|0;d=d|0;c[b+4>>2]=d;c[b+8>>2]=0;c[b+16>>2]=0;c[b+12>>2]=0;c[b+20>>2]=1;a[b]=0;i=i;return}function Ru(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;c[b+4>>2]=c[d+4>>2];g=c[d+16>>2]|0;f=b+16|0;c[f>>2]=g;c[b+12>>2]=g;c[b+20>>2]=1;a[b]=a[d]&1;b=b+8|0;c[b>>2]=ye(g,24)|0;if((c[f>>2]|0)<=0){i=e;return}d=d+8|0;g=0;do{h=Ic(c[(c[d>>2]|0)+(g*24|0)>>2]|0)|0;c[(c[b>>2]|0)+(g*24|0)>>2]=h;h=(c[b>>2]|0)+(g*24|0)+16|0;c[h>>2]=0;c[h+4>>2]=0;Mf((c[d>>2]|0)+(g*24|0)+8|0,(c[b>>2]|0)+(g*24|0)+8|0)|0;g=g+1|0;}while((g|0)<(c[f>>2]|0));i=e;return}function Su(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+16|0;a=a+8|0;f=c[a>>2]|0;if((c[d>>2]|0)>0){e=0}else{Fe(f);i=b;return}while(1){Fe(c[f+(e*24|0)>>2]|0);Of((c[a>>2]|0)+(e*24|0)+8|0);e=e+1|0;f=c[a>>2]|0;if((e|0)<(c[d>>2]|0)){}else{break}}Fe(f);i=b;return}function Tu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;if((a[b]&1)!=0){a[b]=0}f=b+16|0;k=c[f>>2]|0;h=b+12|0;do{if((k|0)==(c[h>>2]|0)){j=(k|0)==0?8:k<<1;c[h>>2]=j;b=b+8|0;j=Ce(c[b>>2]|0,j,24)|0;c[b>>2]=j;k=c[f>>2]|0;if((k|0)>=(c[h>>2]|0)){break}while(1){j=j+(k*24|0)+16|0;c[j>>2]=0;c[j+4>>2]=0;k=k+1|0;if((k|0)>=(c[h>>2]|0)){break}j=c[b>>2]|0}k=c[f>>2]|0}else{b=b+8|0}}while(0);c[(c[b>>2]|0)+(k*24|0)>>2]=d;$W((c[b>>2]|0)+((c[f>>2]|0)*24|0)+8|0,e|0,16)|0;c[f>>2]=(c[f>>2]|0)+1;i=g;return}function Uu(a,b){a=a|0;b=b|0;var c=0;c=i;a=(Vu(a,b)|0)!=0;i=c;return a|0}function Vu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;m=i;i=i+8|0;l=m;j=a[b]|0;do{if((j&1)==0){k=c[b+16>>2]|0;if((k|0)<=31){break}a[b]=1;j=c[b+8>>2]|0;c[m>>2]=186;dv(j,j+(k*24|0)|0,l);j=a[b]|0}}while(0);if((j&1)==0){j=b+8|0;k=c[b+16>>2]|0;while(1){b=k+ -1|0;if((k|0)<=0){f=0;g=18;break}h=c[j>>2]|0;if((Qc(d|0,c[h+(b*24|0)>>2]|0)|0)==0){break}else{k=b}}if((g|0)==18){i=e;return f|0}m=h+(b*24|0)|0;i=e;return m|0}h=c[b+8>>2]|0;g=c[b+16>>2]|0;if((g|0)<1){m=0;i=e;return m|0}k=g+ -1|0;g=0;a:while(1){while(1){b=g+k|0;j=(b|0)/2|0;l=Qc(d|0,c[h+(j*24|0)>>2]|0)|0;if((l|0)==0){g=12;break a}if((l|0)<0){break}if((j|0)<(k|0)){g=j+1|0}else{f=0;g=18;break a}}k=j+ -1|0;if((g|0)>(k|0)){f=0;g=18;break}}if((g|0)==12){if((b+3|0)>>>0<2){m=0;i=e;return m|0}m=h+(j*24|0)|0;i=e;return m|0}else if((g|0)==18){i=e;return f|0}return 0}function Wu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=Vu(b,d)|0;if((g|0)!=0){k=g+8|0;Of(k);$W(k|0,e|0,16)|0;i=f;return}d=Ge(d)|0;if((a[b]&1)!=0){a[b]=0}g=b+16|0;k=c[g>>2]|0;h=b+12|0;do{if((k|0)==(c[h>>2]|0)){j=(k|0)==0?8:k<<1;c[h>>2]=j;b=b+8|0;j=Ce(c[b>>2]|0,j,24)|0;c[b>>2]=j;k=c[g>>2]|0;if((k|0)>=(c[h>>2]|0)){break}j=j+(k*24|0)+16|0;c[j>>2]=0;c[j+4>>2]=0;j=k+1|0;if((j|0)<(c[h>>2]|0)){do{k=(c[b>>2]|0)+(j*24|0)+16|0;c[k>>2]=0;c[k+4>>2]=0;j=j+1|0;}while((j|0)<(c[h>>2]|0))}k=c[g>>2]|0}else{b=b+8|0}}while(0);c[(c[b>>2]|0)+(k*24|0)>>2]=d;$W((c[b>>2]|0)+((c[g>>2]|0)*24|0)+8|0,e|0,16)|0;c[g>>2]=(c[g>>2]|0)+1;i=f;return}function Xu(a,b){a=a|0;b=b|0;var d=0;d=i;a=Vu(a,132488)|0;if((a|0)==0){a=0;i=d;return a|0}if((c[a+8>>2]|0)!=4){a=0;i=d;return a|0}a=(Qc(c[a+16>>2]|0,b|0)|0)==0;i=d;return a|0}function Yu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;b=Vu(a,b)|0;if((b|0)==0){b=d+8|0;c[b>>2]=0;c[b+4>>2]=0;c[d>>2]=5;b=d;i=f;return b|0}else{b=Nf(b+8|0,c[a+4>>2]|0,d,e)|0;i=f;return b|0}return 0}function Zu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;b=Vu(a,b)|0;if((b|0)==0){a=d+8|0;c[a>>2]=0;c[a+4>>2]=0;c[d>>2]=5;a=d;i=e;return a|0}else{a=Mf(b+8|0,d)|0;i=e;return a|0}return 0}function _u(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;j=i;i=i+16|0;h=j;c[j>>2]=13;g=h+8|0;c[g>>2]=0;k=g+4|0;c[k>>2]=0;b=Vu(a,b)|0;if((b|0)==0){c[g>>2]=0;c[k>>2]=0;c[j>>2]=5;b=5}else{Nf(b+8|0,c[a+4>>2]|0,h,0)|0;b=c[j>>2]|0}do{if(!((b|0)!=5|(d|0)==0)){Of(h);d=Vu(a,d)|0;if((d|0)!=0){Nf(d+8|0,c[a+4>>2]|0,h,0)|0;b=c[j>>2]|0;break}c[g>>2]=0;c[k>>2]=0;c[j>>2]=5;b=0;Of(h);i=f;return b|0}}while(0);if((b|0)!=1){b=0;Of(h);i=f;return b|0}c[e>>2]=c[g>>2];b=1;Of(h);i=f;return b|0}function $u(a,b){a=a|0;b=b|0;i=i;return c[(c[a+8>>2]|0)+(b*24|0)>>2]|0}function av(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;b=Nf((c[a+8>>2]|0)+(b*24|0)+8|0,c[a+4>>2]|0,d,0)|0;i=e;return b|0}function bv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=Mf((c[a+8>>2]|0)+(b*24|0)+8|0,d)|0;i=e;return a|0}function cv(a,b){a=a|0;b=b|0;var d=0;d=i;a=(Qc(c[a>>2]|0,c[b>>2]|0)|0)<0;i=d;return a|0}function dv(a,b,d){a=a|0;b=b|0;d=d|0;var 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,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;e=i;h=i;i=i+24|0;r=i;i=i+24|0;o=i;i=i+24|0;q=i;i=i+24|0;n=i;i=i+24|0;E=i;i=i+24|0;G=i;i=i+24|0;C=i;i=i+24|0;F=i;i=i+24|0;D=i;i=i+24|0;z=i;i=i+24|0;J=i;i=i+24|0;y=i;i=i+24|0;B=i;i=i+24|0;f=i;i=i+24|0;g=f;p=i;i=i+24|0;k=i;i=i+24|0;j=i;i=i+24|0;l=i;i=i+24|0;w=i;i=i+24|0;t=i;i=i+24|0;v=i;i=i+24|0;s=i;i=i+24|0;u=i;i=i+24|0;M=i;i=i+24|0;L=i;i=i+24|0;I=i;i=i+24|0;H=i;i=i+24|0;x=i;i=i+24|0;A=i;i=i+24|0;a:while(1){m=b+ -24|0;b:while(1){O=b-a|0;switch((O|0)/24|0|0){case 2:{K=4;break a};case 3:{K=6;break a};case 5:{K=15;break a};case 4:{K=14;break a};case 1:case 0:{K=81;break a};default:{}}if((O|0)<744){K=21;break a}P=(O|0)/48|0;N=a+(P*24|0)|0;do{if((O|0)>23976){Q=(O|0)/96|0;O=a+(Q*24|0)|0;Q=a+((Q+P|0)*24|0)|0;P=ev(a,O,N,Q,d)|0;if(!(Bd[c[d>>2]&255](m,Q)|0)){break}$W(B|0,Q|0,24)|0;$W(Q|0,m|0,24)|0;$W(m|0,B|0,24)|0;if(!(Bd[c[d>>2]&255](Q,N)|0)){P=P+1|0;break}$W(J|0,N|0,24)|0;$W(N|0,Q|0,24)|0;$W(Q|0,J|0,24)|0;if(!(Bd[c[d>>2]&255](N,O)|0)){P=P+2|0;break}$W(z|0,O|0,24)|0;$W(O|0,N|0,24)|0;$W(N|0,z|0,24)|0;if(!(Bd[c[d>>2]&255](O,a)|0)){P=P+3|0;break}$W(y|0,a|0,24)|0;$W(a|0,O|0,24)|0;$W(O|0,y|0,24)|0;P=P+4|0}else{S=Bd[c[d>>2]&255](N,a)|0;O=Bd[c[d>>2]&255](m,N)|0;if(!S){if(!O){P=0;break}$W(D|0,N|0,24)|0;$W(N|0,m|0,24)|0;$W(m|0,D|0,24)|0;if(!(Bd[c[d>>2]&255](N,a)|0)){P=1;break}$W(C|0,a|0,24)|0;$W(a|0,N|0,24)|0;$W(N|0,C|0,24)|0;P=2;break}if(O){$W(E|0,a|0,24)|0;$W(a|0,m|0,24)|0;$W(m|0,E|0,24)|0;P=1;break}$W(G|0,a|0,24)|0;$W(a|0,N|0,24)|0;$W(N|0,G|0,24)|0;if(!(Bd[c[d>>2]&255](m,N)|0)){P=1;break}$W(F|0,N|0,24)|0;$W(N|0,m|0,24)|0;$W(m|0,F|0,24)|0;P=2}}while(0);do{if(Bd[c[d>>2]&255](a,N)|0){Q=m}else{Q=m;while(1){Q=Q+ -24|0;if((a|0)==(Q|0)){break}if(Bd[c[d>>2]&255](Q,N)|0){K=64;break}else{}}if((K|0)==64){K=0;$W(I|0,a|0,24)|0;$W(a|0,Q|0,24)|0;$W(Q|0,I|0,24)|0;P=P+1|0;break}O=a+24|0;if(!(Bd[c[d>>2]&255](a,m)|0)){if((O|0)==(m|0)){K=81;break a}while(1){N=O+24|0;if(Bd[c[d>>2]&255](a,O)|0){break}if((N|0)==(m|0)){K=81;break a}else{O=N}}$W(x|0,O|0,24)|0;$W(O|0,m|0,24)|0;$W(m|0,x|0,24)|0;O=N}if((O|0)==(m|0)){K=81;break a}else{N=m}while(1){while(1){P=O+24|0;if(Bd[c[d>>2]&255](a,O)|0){break}else{O=P}}do{N=N+ -24|0;}while(Bd[c[d>>2]&255](a,N)|0);if(O>>>0>=N>>>0){a=O;continue b}$W(H|0,O|0,24)|0;$W(O|0,N|0,24)|0;$W(N|0,H|0,24)|0;O=P}}}while(0);O=a+24|0;c:do{if(O>>>0>>0){while(1){S=O;while(1){O=S+24|0;if(Bd[c[d>>2]&255](S,N)|0){S=O}else{R=Q;break}}do{R=R+ -24|0;}while(!(Bd[c[d>>2]&255](R,N)|0));if(S>>>0>R>>>0){O=S;break c}$W(L|0,S|0,24)|0;$W(S|0,R|0,24)|0;$W(R|0,L|0,24)|0;Q=R;N=(N|0)==(S|0)?R:N;P=P+1|0}}}while(0);do{if((O|0)!=(N|0)){if(!(Bd[c[d>>2]&255](N,O)|0)){break}$W(M|0,O|0,24)|0;$W(O|0,N|0,24)|0;$W(N|0,M|0,24)|0;P=P+1|0}}while(0);if((P|0)==0){P=fv(a,O,d)|0;N=O+24|0;if(fv(N,b,d)|0){K=76;break}if(P){a=N;continue}}if((O-a|0)>=(b-O|0)){K=80;break}dv(a,O,d);a=O+24|0}if((K|0)==76){K=0;if(P){K=81;break}else{b=O;continue}}else if((K|0)==80){K=0;dv(O+24|0,b,d);b=O;continue}}if((K|0)==4){if(!(Bd[c[d>>2]&255](m,a)|0)){i=e;return}$W(A|0,a|0,24)|0;$W(a|0,m|0,24)|0;$W(m|0,A|0,24)|0;i=e;return}else if((K|0)==6){f=a+24|0;S=Bd[c[d>>2]&255](f,a)|0;g=Bd[c[d>>2]&255](m,f)|0;if(!S){if(!g){i=e;return}$W(u|0,f|0,24)|0;$W(f|0,m|0,24)|0;$W(m|0,u|0,24)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){i=e;return}$W(v|0,a|0,24)|0;$W(a|0,f|0,24)|0;$W(f|0,v|0,24)|0;i=e;return}if(g){$W(w|0,a|0,24)|0;$W(a|0,m|0,24)|0;$W(m|0,w|0,24)|0;i=e;return}$W(t|0,a|0,24)|0;$W(a|0,f|0,24)|0;$W(f|0,t|0,24)|0;if(!(Bd[c[d>>2]&255](m,f)|0)){i=e;return}$W(s|0,f|0,24)|0;$W(f|0,m|0,24)|0;$W(m|0,s|0,24)|0;i=e;return}else if((K|0)==14){ev(a,a+24|0,a+48|0,m,d)|0;i=e;return}else if((K|0)==15){b=a+24|0;f=a+48|0;g=a+72|0;ev(a,b,f,g,d)|0;if(!(Bd[c[d>>2]&255](m,g)|0)){i=e;return}$W(l|0,g|0,24)|0;$W(g|0,m|0,24)|0;$W(m|0,l|0,24)|0;if(!(Bd[c[d>>2]&255](g,f)|0)){i=e;return}$W(k|0,f|0,24)|0;$W(f|0,g|0,24)|0;$W(g|0,k|0,24)|0;if(!(Bd[c[d>>2]&255](f,b)|0)){i=e;return}$W(p|0,b|0,24)|0;$W(b|0,f|0,24)|0;$W(f|0,p|0,24)|0;if(!(Bd[c[d>>2]&255](b,a)|0)){i=e;return}$W(j|0,a|0,24)|0;$W(a|0,b|0,24)|0;$W(b|0,j|0,24)|0;i=e;return}else if((K|0)==21){j=a+48|0;l=a+24|0;S=Bd[c[d>>2]&255](l,a)|0;k=Bd[c[d>>2]&255](j,l)|0;do{if(S){if(k){$W(h|0,a|0,24)|0;$W(a|0,j|0,24)|0;$W(j|0,h|0,24)|0;break}$W(r|0,a|0,24)|0;$W(a|0,l|0,24)|0;$W(l|0,r|0,24)|0;if(!(Bd[c[d>>2]&255](j,l)|0)){break}$W(q|0,l|0,24)|0;$W(l|0,j|0,24)|0;$W(j|0,q|0,24)|0}else{if(!k){break}$W(n|0,l|0,24)|0;$W(l|0,j|0,24)|0;$W(j|0,n|0,24)|0;if(!(Bd[c[d>>2]&255](l,a)|0)){break}$W(o|0,a|0,24)|0;$W(a|0,l|0,24)|0;$W(l|0,o|0,24)|0}}while(0);h=a+72|0;if((h|0)==(b|0)){i=e;return}while(1){if(Bd[c[d>>2]&255](h,j)|0){$W(f|0,h|0,24)|0;k=h;while(1){$W(k|0,j|0,24)|0;if((j|0)==(a|0)){break}k=j+ -24|0;if(Bd[c[d>>2]&255](g,k)|0){S=j;j=k;k=S}else{break}}$W(j|0,f|0,24)|0}j=h+24|0;if((j|0)==(b|0)){break}else{S=h;h=j;j=S}}i=e;return}else if((K|0)==81){i=e;return}}function ev(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;n=i;i=i+24|0;p=i;i=i+24|0;l=i;i=i+24|0;o=i;i=i+24|0;m=i;i=i+24|0;h=i;i=i+24|0;g=i;i=i+24|0;j=i;i=i+24|0;r=Bd[c[f>>2]&255](b,a)|0;q=Bd[c[f>>2]&255](d,b)|0;do{if(r){if(q){$W(n|0,a|0,24)|0;$W(a|0,d|0,24)|0;$W(d|0,n|0,24)|0;l=1;break}$W(p|0,a|0,24)|0;$W(a|0,b|0,24)|0;$W(b|0,p|0,24)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){l=1;break}$W(o|0,b|0,24)|0;$W(b|0,d|0,24)|0;$W(d|0,o|0,24)|0;l=2}else{if(!q){l=0;break}$W(m|0,b|0,24)|0;$W(b|0,d|0,24)|0;$W(d|0,m|0,24)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){l=1;break}$W(l|0,a|0,24)|0;$W(a|0,b|0,24)|0;$W(b|0,l|0,24)|0;l=2}}while(0);if(!(Bd[c[f>>2]&255](e,d)|0)){r=l;i=k;return r|0}$W(j|0,d|0,24)|0;$W(d|0,e|0,24)|0;$W(e|0,j|0,24)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){r=l+1|0;i=k;return r|0}$W(h|0,b|0,24)|0;$W(b|0,d|0,24)|0;$W(d|0,h|0,24)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){r=l+2|0;i=k;return r|0}$W(g|0,a|0,24)|0;$W(a|0,b|0,24)|0;$W(b|0,g|0,24)|0;r=l+3|0;i=k;return r|0}function fv(a,b,d){a=a|0;b=b|0;d=d|0;var 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;e=i;o=i;i=i+24|0;q=i;i=i+24|0;w=i;i=i+24|0;p=i;i=i+24|0;s=i;i=i+24|0;j=i;i=i+24|0;m=i;i=i+24|0;l=i;i=i+24|0;k=i;i=i+24|0;t=i;i=i+24|0;v=i;i=i+24|0;n=i;i=i+24|0;u=i;i=i+24|0;r=i;i=i+24|0;x=i;i=i+24|0;g=i;i=i+24|0;h=g;switch((b-a|0)/24|0|0){case 1:case 0:{x=1;i=e;return x|0};case 4:{ev(a,a+24|0,a+48|0,b+ -24|0,d)|0;x=1;i=e;return x|0};case 2:{b=b+ -24|0;if(!(Bd[c[d>>2]&255](b,a)|0)){x=1;i=e;return x|0}$W(x|0,a|0,24)|0;$W(a|0,b|0,24)|0;$W(b|0,x|0,24)|0;x=1;i=e;return x|0};case 5:{f=a+24|0;g=a+48|0;h=a+72|0;b=b+ -24|0;ev(a,f,g,h,d)|0;if(!(Bd[c[d>>2]&255](b,h)|0)){x=1;i=e;return x|0}$W(k|0,h|0,24)|0;$W(h|0,b|0,24)|0;$W(b|0,k|0,24)|0;if(!(Bd[c[d>>2]&255](h,g)|0)){x=1;i=e;return x|0}$W(m|0,g|0,24)|0;$W(g|0,h|0,24)|0;$W(h|0,m|0,24)|0;if(!(Bd[c[d>>2]&255](g,f)|0)){x=1;i=e;return x|0}$W(j|0,f|0,24)|0;$W(f|0,g|0,24)|0;$W(g|0,j|0,24)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){x=1;i=e;return x|0}$W(l|0,a|0,24)|0;$W(a|0,f|0,24)|0;$W(f|0,l|0,24)|0;x=1;i=e;return x|0};case 3:{f=a+24|0;g=b+ -24|0;x=Bd[c[d>>2]&255](f,a)|0;b=Bd[c[d>>2]&255](g,f)|0;if(!x){if(!b){x=1;i=e;return x|0}$W(r|0,f|0,24)|0;$W(f|0,g|0,24)|0;$W(g|0,r|0,24)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){x=1;i=e;return x|0}$W(n|0,a|0,24)|0;$W(a|0,f|0,24)|0;$W(f|0,n|0,24)|0;x=1;i=e;return x|0}if(b){$W(t|0,a|0,24)|0;$W(a|0,g|0,24)|0;$W(g|0,t|0,24)|0;x=1;i=e;return x|0}$W(v|0,a|0,24)|0;$W(a|0,f|0,24)|0;$W(f|0,v|0,24)|0;if(!(Bd[c[d>>2]&255](g,f)|0)){x=1;i=e;return x|0}$W(u|0,f|0,24)|0;$W(f|0,g|0,24)|0;$W(g|0,u|0,24)|0;x=1;i=e;return x|0};default:{j=a+48|0;k=a+24|0;x=Bd[c[d>>2]&255](k,a)|0;l=Bd[c[d>>2]&255](j,k)|0;do{if(x){if(l){$W(o|0,a|0,24)|0;$W(a|0,j|0,24)|0;$W(j|0,o|0,24)|0;break}$W(q|0,a|0,24)|0;$W(a|0,k|0,24)|0;$W(k|0,q|0,24)|0;if(!(Bd[c[d>>2]&255](j,k)|0)){break}$W(p|0,k|0,24)|0;$W(k|0,j|0,24)|0;$W(j|0,p|0,24)|0}else{if(!l){break}$W(s|0,k|0,24)|0;$W(k|0,j|0,24)|0;$W(j|0,s|0,24)|0;if(!(Bd[c[d>>2]&255](k,a)|0)){break}$W(w|0,a|0,24)|0;$W(a|0,k|0,24)|0;$W(k|0,w|0,24)|0}}while(0);k=a+72|0;if((k|0)==(b|0)){x=1;i=e;return x|0}l=0;while(1){if(Bd[c[d>>2]&255](k,j)|0){$W(g|0,k|0,24)|0;m=k;while(1){$W(m|0,j|0,24)|0;if((j|0)==(a|0)){break}m=j+ -24|0;if(Bd[c[d>>2]&255](h,m)|0){x=j;j=m;m=x}else{break}}$W(j|0,g|0,24)|0;l=l+1|0;if((l|0)==8){break}}j=k+24|0;if((j|0)==(b|0)){a=1;f=35;break}else{x=k;k=j;j=x}}if((f|0)==35){i=e;return a|0}x=(k+24|0)==(b|0);i=e;return x|0}}return 0}function gv(b,d,e,f,g,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;var 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,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.0,V=0,W=0,X=0;l=i;o=i;i=i+16|0;n=o;r=i;i=i+8|0;q=i;i=i+8|0;s=q;x=i;i=i+16|0;w=x;z=i;i=i+8|0;A=i;i=i+8|0;y=A;C=i;i=i+16|0;B=C;E=i;i=i+8|0;D=i;i=i+8|0;F=D;H=i;i=i+16|0;G=H;I=i;i=i+8|0;J=i;i=i+8|0;K=J;N=i;i=i+8|0;L=i;i=i+8|0;M=L;O=i;i=i+8|0;P=O;R=i;i=i+8|0;Q=R;v=i;i=i+16|0;k=v;u=i;i=i+16|0;m=u;c[b>>2]=146632;V=b+16|0;c[V>>2]=13;S=b+24|0;c[S>>2]=0;c[S+4>>2]=0;c[v>>2]=13;t=k+8|0;c[t>>2]=0;c[t+4>>2]=0;c[u>>2]=13;p=m+8|0;c[p>>2]=0;c[p+4>>2]=0;X=g;W=c[X+4>>2]|0;g=b+32|0;c[g>>2]=c[X>>2];c[g+4>>2]=W;c[b+64>>2]=0;a[b+44|0]=0;h[b+104>>3]=0.0;a[b+45|0]=0;c[b+60>>2]=f;c[b+40>>2]=d;Mf(e,V)|0;c[b+8>>2]=4;c[b+4>>2]=j;j=c[V>>2]|0;if((j|0)!=7){c[R>>2]=j;c[Q+4>>2]=7;Qe(0,148232,Q);tc()}Q=c[S>>2]|0;c[b+56>>2]=0;do{if((c[(Yu(Q,146648,k,0)|0)>>2]|0)==3){R=c[v>>2]|0;if((R|0)==3){W=c[t>>2]|0;X=FW(32)|0;ie(X,W);c[b+48>>2]=X;break}else{c[O>>2]=R;c[P+4>>2]=3;Qe(0,148232,P);tc()}}else{c[b+48>>2]=0}}while(0);Of(k);do{if((c[(Yu(Q,146656,k,0)|0)>>2]|0)==3){O=c[v>>2]|0;if((O|0)==3){W=c[t>>2]|0;X=FW(32)|0;ie(X,W);c[b+52>>2]=X;break}else{c[L>>2]=O;c[M+4>>2]=3;Qe(0,148232,M);tc()}}else{c[b+52>>2]=0}}while(0);Of(k);if((c[(Yu(Q,146664,k,0)|0)>>2]|0)!=6){Qe(-1,146672,N);Of(k);i=l;return}L=c[v>>2]|0;if((L|0)!=6){c[J>>2]=L;c[K+4>>2]=6;Qe(0,148232,K);tc()}do{if(((c[(ut(c[t>>2]|0,0,m)|0)>>2]|0)+ -1|0)>>>0<2){I=c[u>>2]|0;if((I+ -1|0)>>>0>=2){c[H>>2]=I;c[G+4>>2]=1;c[G+8>>2]=2;Qe(0,148304,G);tc()}if((I|0)==1){T=+(c[p>>2]|0)}else{T=+h[p>>3]}G=b+72|0;h[G>>3]=T;Of(m);H=c[v>>2]|0;if((H|0)!=6){c[D>>2]=H;c[F+4>>2]=6;Qe(0,148232,F);tc()}if(((c[(ut(c[t>>2]|0,1,m)|0)>>2]|0)+ -1|0)>>>0>=2){Qe(-1,146712,E);break}D=c[u>>2]|0;if((D+ -1|0)>>>0>=2){c[C>>2]=D;c[B+4>>2]=1;c[B+8>>2]=2;Qe(0,148304,B);tc()}if((D|0)==1){T=+(c[p>>2]|0)}else{T=+h[p>>3]}B=b+80|0;h[B>>3]=T;Of(m);C=c[v>>2]|0;if((C|0)!=6){c[A>>2]=C;c[y+4>>2]=6;Qe(0,148232,y);tc()}if(((c[(ut(c[t>>2]|0,2,m)|0)>>2]|0)+ -1|0)>>>0>=2){Qe(-1,146712,z);break}y=c[u>>2]|0;if((y+ -1|0)>>>0>=2){c[x>>2]=y;c[w+4>>2]=1;c[w+8>>2]=2;Qe(0,148304,w);tc()}if((y|0)==1){T=+(c[p>>2]|0)}else{T=+h[p>>3]}w=b+88|0;h[w>>3]=T;Of(m);v=c[v>>2]|0;if((v|0)!=6){c[q>>2]=v;c[s+4>>2]=6;Qe(0,148232,s);tc()}if(((c[(ut(c[t>>2]|0,3,m)|0)>>2]|0)+ -1|0)>>>0>=2){Qe(-1,146712,r);break}q=c[u>>2]|0;if((q+ -1|0)>>>0>=2){c[o>>2]=q;c[n+4>>2]=1;c[n+8>>2]=2;Qe(0,148304,n);tc()}if((q|0)==1){T=+(c[p>>2]|0)}else{T=+h[p>>3]}b=b+96|0;h[b>>3]=T;Of(m);Of(k);T=+h[G>>3];U=+h[w>>3];if(T>U){h[G>>3]=U;h[w>>3]=T}U=+h[B>>3];T=+h[b>>3];if(U<=T){break}h[B>>3]=T;h[b>>3]=U}else{Qe(-1,146712,I)}}while(0);Of(m);Of(k);i=l;return}function hv(a){a=a|0;var b=0;b=i;iv(a);HW(a);i=b;return}function iv(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=146632;d=c[a+48>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+52>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+56>>2]|0;if((d|0)==0){d=a+16|0;Of(d);i=b;return}ke(d);HW(d);d=a+16|0;Of(d);i=b;return}function jv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;h=i;i=i+8|0;f=i;i=i+8|0;g=f;n=i;i=i+8|0;m=n;l=i;i=i+16|0;k=l;j=i;i=i+8|0;c[l>>2]=13;l=k+8|0;c[l>>2]=0;c[l+4>>2]=0;l=a+16|0;o=c[l>>2]|0;if((o|0)!=7){c[n>>2]=o;c[m+4>>2]=7;Qe(0,148232,m);tc()}if((c[(Yu(c[a+24>>2]|0,146744,k,0)|0)>>2]|0)==4){m=a+32|0}else{l=c[a+4>>2]|0;m=l+8|0;l=l+24|0}n=m;m=c[n>>2]|0;n=c[n+4>>2]|0;Of(k);k=c[l>>2]|0;if((k|0)==7){Wu(c[l+8>>2]|0,b,d);o=c[a+40>>2]|0;k=j;c[k>>2]=m;c[k+4>>2]=n;$W(h|0,j|0,8)|0;pn(o,l,h);i=e;return}else{c[f>>2]=k;c[g+4>>2]=7;Qe(0,148232,g);tc()}}function kv(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=146768;d=c[a+112>>2]|0;if((d|0)!=0){Fe(d)}d=c[a+120>>2]|0;if((d|0)==0){iv(a);HW(a);i=b;return}ke(d);HW(d);iv(a);HW(a);i=b;return}function lv(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=146768;d=c[a+112>>2]|0;if((d|0)!=0){Fe(d)}d=c[a+120>>2]|0;if((d|0)==0){iv(a);i=b;return}ke(d);HW(d);iv(a);i=b;return}function mv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;l=i;i=i+8|0;f=l;g=i;i=i+8|0;h=g;n=i;i=i+16|0;k=n;m=i;i=i+8|0;o=c[b+124>>2]|0;if((c[o+60>>2]|0)==1){i=j;return}do{if(!e){a[b+45|0]=1;if(nv(o,c[b+60>>2]|0,d)|0){break}i=j;return}}while(0);p=b+128|0;a[p]=d&1;c[n>>2]=13;e=k+8|0;c[e>>2]=0;o=e+4|0;c[o>>2]=0;if(d){d=c[(c[b+120>>2]|0)+28>>2]|0}else{d=146784}c[e>>2]=0;c[o>>2]=0;c[n>>2]=4;c[e>>2]=Ge(d)|0;jv(b,146792,k);if((a[p]&1)==0){d=146784}else{d=c[(c[b+120>>2]|0)+28>>2]|0}c[e>>2]=0;c[o>>2]=0;c[n>>2]=4;c[e>>2]=Ge(d)|0;n=b+16|0;o=c[n>>2]|0;if((o|0)!=7){c[g>>2]=o;c[h+4>>2]=7;Qe(0,148232,h);tc()}Wu(c[b+24>>2]|0,146800,k);p=c[b+40>>2]|0;o=b+32|0;d=c[o+4>>2]|0;e=m;c[e>>2]=c[o>>2];c[e+4>>2]=d;$W(l|0,m|0,8)|0;pn(p,n,f);i=j;return}function nv(b,d,e){b=b|0;d=d|0;e=e|0;var 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;f=i;q=i;i=i+8|0;p=q;h=i;i=i+8|0;g=h;o=i;i=i+8|0;t=o;l=i;i=i+8|0;k=l;v=i;i=i+8|0;n=i;i=i+16|0;m=n;j=i;i=i+8|0;u=i;i=i+16|0;s=u;r=i;i=i+8|0;if((a[b+56|0]&1)!=0){Qe(-1,147560,v);e=0;i=f;return e|0}v=c[b+60>>2]|0;if(!((v|0)==0|(v|0)==2)){e=1;i=f;return e|0}if(!e){if((a[b+72|0]&1)!=0){e=0;i=f;return e|0}c[b+68>>2]=-1;g=s+8|0;c[g+4>>2]=0;c[u>>2]=4;c[g>>2]=Ge(146784)|0;g=b+24|0;h=c[g>>2]|0;if((h|0)!=7){c[o>>2]=h;c[t+4>>2]=7;Qe(0,148232,t);tc()}Wu(c[b+32>>2]|0,146792,s);e=c[b+40>>2]|0;t=b+8|0;u=c[t+4>>2]|0;v=r;c[v>>2]=c[t>>2];c[v+4>>2]=u;$W(q|0,r|0,8)|0;pn(e,g,p);e=1;i=f;return e|0}o=b+68|0;c[o>>2]=d;q=b+48|0;r=c[q>>2]|0;if((r|0)>0){p=b+52|0;s=0;do{if((s|0)==(d|0)){d=s}else{mv(c[(c[p>>2]|0)+(s<<2)>>2]|0,0,1);r=c[q>>2]|0;d=c[o>>2]|0}s=s+1|0;}while((s|0)<(r|0))}if((d|0)<=-1){e=1;i=f;return e|0}d=(c[(c[b+52>>2]|0)+(d<<2)>>2]|0)+120|0;if((c[(c[d>>2]|0)+28>>2]|0)==0){e=1;i=f;return e|0}c[n>>2]=13;e=m+8|0;c[e>>2]=0;v=e+4|0;c[v>>2]=0;d=c[(c[d>>2]|0)+28>>2]|0;c[v>>2]=0;c[n>>2]=4;c[e>>2]=Ge(d)|0;n=b+24|0;d=c[n>>2]|0;if((d|0)!=7){c[l>>2]=d;c[k+4>>2]=7;Qe(0,148232,k);tc()}Wu(c[b+32>>2]|0,146792,m);e=c[b+40>>2]|0;t=b+8|0;u=c[t+4>>2]|0;v=j;c[v>>2]=c[t>>2];c[v+4>>2]=u;$W(h|0,j|0,8)|0;pn(e,n,g);e=1;i=f;return e|0}function ov(b){b=b|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;d=i;n=i;i=i+8|0;g=i;i=i+8|0;h=g;l=i;i=i+8|0;y=i;i=i+8|0;x=y;w=i;i=i+8|0;v=w;k=i;i=i+16|0;o=k;j=i;i=i+16|0;f=j;q=i;i=i+16|0;t=q;r=i;i=i+16|0;s=r;p=i;i=i+16|0;u=p;m=i;i=i+16|0;e=m;z=b+44|0;if((a[z]&1)!=0){i=d;return}a[z]=1;z=c[b+16>>2]|0;if((z|0)!=7){c[w>>2]=z;c[v+4>>2]=7;Qe(0,148232,v);tc()}w=c[b+24>>2]|0;c[j>>2]=13;v=f+8|0;c[v>>2]=0;c[v+4>>2]=0;do{if((c[(c[b+124>>2]|0)+60>>2]|0)!=1){do{if((c[(Yu(w,146808,f,0)|0)>>2]|0)==7){z=c[j>>2]|0;if((z|0)!=7){c[y>>2]=z;c[x+4>>2]=7;Qe(0,148232,x);tc()}z=c[v>>2]|0;G=c[z+16>>2]|0;if((G|0)<=0){break}D=t+8|0;x=D+4|0;A=b+120|0;B=s+8|0;C=B+4|0;E=u+8|0;F=E+4|0;y=0;do{c[q>>2]=13;c[D>>2]=0;c[x>>2]=0;av(z,y,t)|0;H=c[q>>2]|0;do{if((H|0)==7){H=c[D>>2]|0;I=c[H+16>>2]|0;if((I|0)>0){K=0}else{break}do{c[r>>2]=13;c[B>>2]=0;c[C>>2]=0;av(H,K,s)|0;J=$u(H,K)|0;if((Qc(J|0,146784)|0)!=0){L=FW(32)|0;fe(L,J);c[A>>2]=L}Of(s);K=K+1|0;}while((c[A>>2]|0)==0&(K|0)<(I|0))}else if((H|0)==8){L=c[D>>2]|0;L=jd[c[(c[L>>2]|0)+72>>2]&511](L)|0;c[p>>2]=13;c[E>>2]=0;c[F>>2]=0;Yu(L,146816,u,0)|0;L=FW(32)|0;fe(L,146824);c[A>>2]=L;Of(u)}}while(0);Of(t);y=y+1|0;}while((c[A>>2]|0)==0&(y|0)<(G|0))}}while(0);Of(f);p=b+120|0;if((c[p>>2]|0)!=0){break}Qe(-1,146832,l);L=FW(32)|0;fe(L,146896);c[p>>2]=L}}while(0);L=o+4|0;c[L>>2]=0;c[o+8>>2]=0;c[k>>2]=L;L=Nv(w,146792,f,o)|0;xn(o,c[o+4>>2]|0);do{if((c[L>>2]|0)==4){c[m>>2]=13;k=e+8|0;c[k>>2]=0;c[k+4>>2]=0;k=Yu(w,146800,e,0)|0;j=c[j>>2]|0;if((j|0)!=4){c[g>>2]=j;c[h+4>>2]=4;Qe(0,148232,h);tc()}do{if((c[k>>2]|0)==4){g=c[v>>2]|0;if((Qc(c[k+8>>2]|0,g|0)|0)!=0){break}if((Qc(g|0,146784)|0)==0){break}mv(b,1,0)}}while(0);Of(e)}else{if((c[j>>2]|0)!=6){break}Qe(-1,146904,n)}}while(0);Of(f);i=d;return}function pv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;g=i;i=i+16|0;f=g;h=f+4|0;c[h>>2]=0;c[f+8>>2]=0;c[g>>2]=h;a=Nv(a,b,d,f)|0;xn(f,c[f+4>>2]|0);i=e;return a|0}function qv(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;g=i;i=i+8|0;h=g;k=i;i=i+8|0;l=k;p=i;i=i+8|0;o=p;n=i;i=i+16|0;m=n;j=i;i=i+16|0;e=j;q=b+44|0;if((a[q]&1)!=0){i=f;return}a[q]=1;q=c[b+16>>2]|0;if((q|0)!=7){c[p>>2]=q;c[o+4>>2]=7;Qe(0,148232,o);tc()}q=c[b+24>>2]|0;c[j>>2]=13;o=e+8|0;c[o>>2]=0;c[o+4>>2]=0;p=m+4|0;c[p>>2]=0;c[m+8>>2]=0;c[n>>2]=p;q=Nv(q,146792,e,m)|0;xn(m,c[m+4>>2]|0);do{if((c[q>>2]|0)==3){m=c[j>>2]|0;if((m|0)!=3){c[k>>2]=m;c[l+4>>2]=3;Qe(0,148232,l);tc()}k=ve(c[o>>2]|0)|0;j=c[j>>2]|0;if((j|0)!=3){c[g>>2]=j;c[h+4>>2]=3;Qe(0,148232,h);tc()}j=c[o>>2]|0;g=c[j+24>>2]|0;if(k){if((g|0)<3){break}g=(c[b+112>>2]|0)+60|0;b=c[g>>2]|0;if((b|0)!=0){ke(b);HW(b)}q=FW(32)|0;ie(q,j);c[g>>2]=q;break}if((g|0)<=0){break}h=(g<<1)+2|0;g=GW((h|0)>-1?h:-1)|0;k=c[j+28>>2]|0;a[g]=-2;a[g+1|0]=-1;l=2;j=0;while(1){q=c[189696+((d[k+j|0]|0)<<2)>>2]|0;a[g+l|0]=q>>>8;a[g+(l|1)|0]=q;l=l+2|0;if((l|0)<(h|0)){j=j+1|0}else{break}}j=FW(32)|0;ge(j,g,h);h=(c[b+112>>2]|0)+60|0;b=c[h>>2]|0;if((b|0)!=0){ke(b);HW(b)}q=FW(32)|0;ie(q,j);c[h>>2]=q;if((j|0)!=0){ke(j);HW(j)}if((g|0)==0){break}IW(g)}}while(0);Of(e);i=f;return}function rv(b){b=b|0;var 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,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;f=i;p=i;i=i+8|0;m=p;k=i;i=i+8|0;o=k;q=i;i=i+8|0;r=q;x=i;i=i+8|0;y=x;E=i;i=i+8|0;F=E;N=i;i=i+8|0;D=N;A=i;i=i+8|0;B=A;K=i;i=i+8|0;H=i;i=i+8|0;I=H;C=i;i=i+8|0;G=C;Q=i;i=i+8|0;R=Q;j=i;i=i+8|0;O=j;t=i;i=i+16|0;u=t;g=i;i=i+16|0;h=g;J=i;i=i+16|0;z=J;w=i;i=i+16|0;L=w;v=i;i=i+16|0;M=v;l=i;i=i+16|0;n=l;P=b+44|0;if((a[P]&1)!=0){i=f;return}a[P]=1;P=c[b+16>>2]|0;if((P|0)!=7){c[j>>2]=P;c[O+4>>2]=7;Qe(0,148232,O);tc()}O=c[b+24>>2]|0;c[g>>2]=13;j=h+8|0;c[j>>2]=0;c[j+4>>2]=0;a:do{if((c[(Yu(O,147008,h,0)|0)>>2]|0)==6){c[J>>2]=13;P=z+8|0;c[P>>2]=0;c[P+4>>2]=0;b=b+112|0;S=c[g>>2]|0;if((S|0)!=6){c[Q>>2]=S;c[R+4>>2]=6;Qe(0,148232,R);tc()}c[(c[b>>2]|0)+64>>2]=c[(c[j>>2]|0)+12>>2];S=c[b>>2]|0;Q=S+64|0;T=c[Q>>2]|0;R=GW(T>>>0>357913941?-1:T*12|0)|0;S=S+68|0;c[S>>2]=R;do{if((T|0)>0){a[R+8|0]=0;if((c[Q>>2]|0)>1){R=1}else{break}do{a[(c[S>>2]|0)+(R*12|0)+8|0]=0;R=R+1|0;}while((R|0)<(c[Q>>2]|0))}}while(0);if((c[(c[b>>2]|0)+64>>2]|0)<=0){e=b;break}S=L+8|0;R=S+4|0;T=M+8|0;Q=T+4|0;U=0;b:while(1){V=c[g>>2]|0;if((V|0)!=6){s=14;break}ut(c[j>>2]|0,U,z)|0;V=c[J>>2]|0;do{if((V|0)==3){V=c[b>>2]|0;W=c[P>>2]|0;s=FW(32)|0;ie(s,W);c[(c[V+68>>2]|0)+(U*12|0)>>2]=s;V=c[J>>2]|0;if((V|0)!=3){s=17;break b}s=c[b>>2]|0;V=c[P>>2]|0;W=FW(32)|0;ie(W,V);c[(c[s+68>>2]|0)+(U*12|0)+4>>2]=W;s=29}else if((V|0)==6){c[w>>2]=13;c[S>>2]=0;c[R>>2]=0;c[v>>2]=13;c[T>>2]=0;c[Q>>2]=0;V=c[P>>2]|0;if((c[V+12>>2]|0)<2){Qe(-1,147016,K);W=c[b>>2]|0;V=FW(32)|0;fe(V,146896);c[(c[W+68>>2]|0)+(U*12|0)>>2]=V;W=c[b>>2]|0;V=FW(32)|0;fe(V,146896);c[(c[W+68>>2]|0)+(U*12|0)+4>>2]=V;break}ut(V,0,L)|0;V=c[J>>2]|0;if((V|0)!=6){s=22;break b}ut(c[P>>2]|0,1,M)|0;V=c[w>>2]|0;if((V|0)!=3){s=24;break b}V=c[b>>2]|0;s=c[S>>2]|0;W=FW(32)|0;ie(W,s);c[(c[V+68>>2]|0)+(U*12|0)>>2]=W;V=c[v>>2]|0;if((V|0)!=3){s=26;break b}s=c[b>>2]|0;V=c[T>>2]|0;W=FW(32)|0;ie(W,V);c[(c[s+68>>2]|0)+(U*12|0)+4>>2]=W;Of(L);Of(M);s=29}else{c[x>>2]=U;Qe(-1,147080,y);s=c[b>>2]|0;W=FW(32)|0;fe(W,146896);c[(c[s+68>>2]|0)+(U*12|0)>>2]=W;s=c[b>>2]|0;W=FW(32)|0;fe(W,146896);c[(c[s+68>>2]|0)+(U*12|0)+4>>2]=W;s=29}}while(0);if((s|0)==29){s=0;Of(z)}U=U+1|0;if((U|0)>=(c[(c[b>>2]|0)+64>>2]|0)){e=b;break a}}if((s|0)==14){c[C>>2]=V;c[G+4>>2]=6;Qe(0,148232,G);tc()}else if((s|0)==17){c[H>>2]=V;c[I+4>>2]=3;Qe(0,148232,I);tc()}else if((s|0)==22){c[A>>2]=V;c[B+4>>2]=6;Qe(0,148232,B);tc()}else if((s|0)==24){c[N>>2]=V;c[D+4>>2]=3;Qe(0,148232,D);tc()}else if((s|0)==26){c[E>>2]=V;c[F+4>>2]=3;Qe(0,148232,F);tc()}}else{e=b+112|0}}while(0);Of(h);s=(c[e>>2]|0)+64|0;v=c[s>>2]|0;v=GW((v|0)>-1?v:-1)|0;bX(v|0,0,c[s>>2]|0)|0;W=u+4|0;c[W>>2]=0;c[u+8>>2]=0;c[t>>2]=W;W=Nv(O,146792,h,u)|0;xn(u,c[u+4>>2]|0);c:do{if((c[W>>2]|0)==3){m=c[e>>2]|0;if((c[m+64>>2]|0)<=0){break}k=0;while(1){l=c[g>>2]|0;if((l|0)!=3){s=36;break}l=k+1|0;if((se(c[(c[m+68>>2]|0)+(k*12|0)+4>>2]|0,c[j>>2]|0)|0)==0){s=38;break}m=c[e>>2]|0;if((l|0)<(c[m+64>>2]|0)){k=l}else{break c}}if((s|0)==36){c[q>>2]=l;c[r+4>>2]=3;Qe(0,148232,r);tc()}else if((s|0)==38){a[v+k|0]=1;break}}else{if((c[g>>2]|0)!=6){break}s=n+8|0;r=s+4|0;q=0;d:while(1){t=c[j>>2]|0;if((q|0)>=(c[t+12>>2]|0)){break c}c[l>>2]=13;c[s>>2]=0;c[r>>2]=0;ut(t,q,n)|0;x=c[e>>2]|0;if((c[x+64>>2]|0)>0){u=v+q|0;w=0;do{t=c[l>>2]|0;if((t|0)!=3){s=46;break d}if((se(c[(c[x+68>>2]|0)+(w*12|0)+4>>2]|0,c[s>>2]|0)|0)==0){a[u]=1}w=w+1|0;x=c[e>>2]|0;}while((w|0)<(c[x+64>>2]|0))}Of(n);t=c[g>>2]|0;if((t|0)==6){q=q+1|0}else{s=41;break}}if((s|0)==41){c[k>>2]=t;c[o+4>>2]=6;Qe(0,148232,o);tc()}else if((s|0)==46){c[p>>2]=t;c[m+4>>2]=3;Qe(0,148232,m);tc()}}}while(0);Of(h);k=c[e>>2]|0;do{if((c[k+64>>2]|0)>0){g=0;do{do{if(!(ve(c[(c[k+68>>2]|0)+(g*12|0)+4>>2]|0)|0)){k=(c[e>>2]|0)+68|0;l=c[(c[k>>2]|0)+(g*12|0)+4>>2]|0;m=c[l+24>>2]|0;j=(m<<1)+2|0;h=GW((j|0)>-1?j:-1)|0;l=c[l+28>>2]|0;a[h]=-2;a[h+1|0]=-1;if((m|0)>0){n=2;m=0;while(1){W=c[189696+((d[l+m|0]|0)<<2)>>2]|0;a[h+n|0]=W>>>8;a[h+(n|1)|0]=W;n=n+2|0;if((n|0)<(j|0)){m=m+1|0}else{break}}}ce(c[(c[k>>2]|0)+(g*12|0)+4>>2]|0,h,j,0,-1)|0;if((h|0)==0){break}IW(h)}}while(0);g=g+1|0;k=c[e>>2]|0;h=c[k+64>>2]|0;}while((g|0)<(h|0));if((h|0)<=0){break}g=h;h=k+64|0;j=0;do{if((a[v+j|0]&1)!=0){l=k+68|0;if((a[k+59|0]&1)==0&(g|0)>0){g=0;do{a[(c[l>>2]|0)+(g*12|0)+8|0]=0;g=g+1|0;}while((g|0)<(c[h>>2]|0))}a[(c[l>>2]|0)+(j*12|0)+8|0]=1;k=c[e>>2]|0}j=j+1|0;h=k+64|0;g=c[h>>2]|0;}while((j|0)<(g|0))}}while(0);if((v|0)==0){i=f;return}IW(v);i=f;return}function sv(a){a=a|0;var b=0;b=i;iv(a);HW(a);i=b;return}function tv(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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,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,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;m=i;q=i;i=i+8|0;r=q;N=i;i=i+8|0;O=N;I=i;i=i+8|0;K=I;A=i;i=i+8|0;B=A;j=i;i=i+8|0;k=j;Q=i;i=i+8|0;P=i;i=i+8|0;fa=i;i=i+8|0;ga=fa;da=i;i=i+8|0;ea=da;ba=i;i=i+8|0;ca=ba;_=i;i=i+8|0;W=i;i=i+8|0;X=W;U=i;i=i+8|0;V=U;u=i;i=i+8|0;v=u;s=i;i=i+8|0;t=s;S=i;i=i+8|0;oa=i;i=i+8|0;na=oa;ja=i;i=i+8|0;ka=ja;$=i;i=i+8|0;aa=$;G=i;i=i+8|0;L=G;H=i;i=i+8|0;o=i;i=i+16|0;n=o;ha=i;i=i+16|0;l=ha;E=i;i=i+16|0;w=E;T=i;i=i+16|0;x=T;C=i;i=i+16|0;R=C;D=i;i=i+16|0;y=D;z=i;i=i+8|0;F=i;i=i+16|0;J=F;Y=i;i=i+8|0;Z=Y;M=i;i=i+8|0;p=i;i=i+8|0;c[b>>2]=147160;ia=b+24|0;c[ia>>2]=13;la=b+32|0;c[la>>2]=0;c[la+4>>2]=0;c[b+40>>2]=d;Mf(e,ia)|0;ia=c[ia>>2]|0;if((ia|0)!=7){c[ja>>2]=ia;c[ka+4>>2]=7;Qe(0,148232,ka);tc()}ia=c[la>>2]|0;ja=b+8|0;c[b+12>>2]=0;c[ja>>2]=0;c[b+4>>2]=h;la=b+48|0;ka=b+44|0;ma=b+16|0;a[ma]=0;h=b+56|0;bX(ka|0,0,13)|0;Fa=f;Ga=c[Fa+4>>2]|0;f=ja;c[f>>2]=c[Fa>>2];c[f+4>>2]=Ga;c[ha>>2]=13;f=l+8|0;c[f>>2]=0;c[f+4>>2]=0;a:do{if((c[(Yu(ia,147176,l,0)|0)>>2]|0)==6){pa=c[ha>>2]|0;if((pa|0)!=6){c[oa>>2]=pa;c[na+4>>2]=6;Qe(0,148232,na);tc()}na=c[f>>2]|0;qa=c[na+12>>2]|0;if((qa|0)<=0){break}ta=w+8|0;Ba=ta+4|0;xa=x+8|0;pa=xa+4|0;sa=R+8|0;Aa=sa+4|0;oa=g+4|0;ua=y+8|0;va=ua+4|0;wa=J+4|0;za=J+8|0;ya=J+4|0;ra=0;b:while(1){c[E>>2]=13;c[ta>>2]=0;c[Ba>>2]=0;c[T>>2]=13;c[xa>>2]=0;c[pa>>2]=0;ut(na,ra,w)|0;if((c[E>>2]|0)==7){c[C>>2]=13;c[sa>>2]=0;c[Aa>>2]=0;vt(na,ra,R)|0;c:do{if((c[C>>2]|0)==9){Ca=c[sa>>2]|0;Fa=c[oa>>2]|0;do{if((Fa|0)!=0){Da=oa;d:while(1){Ea=Fa;while(1){if((c[Ea+16>>2]|0)>=(Ca|0)){break}Ea=c[Ea+4>>2]|0;if((Ea|0)==0){break d}}Fa=c[Ea>>2]|0;if((Fa|0)==0){Da=Ea;break}else{Da=Ea}}if((Da|0)==(oa|0)){break}if((Ca|0)<(c[Da+16>>2]|0)){break}Qe(-1,147288,P);break c}}while(0);e:do{if((c[(Yu(ia,146744,x,0)|0)>>2]|0)==4){c[D>>2]=13;c[ua>>2]=0;c[va>>2]=0;Ca=c[E>>2]|0;if((Ca|0)!=7){Da=20;break b}if((c[(Yu(c[ta>>2]|0,147232,y,0)|0)>>2]|0)==4){Ca=c[C>>2]|0;if((Ca|0)!=9){Da=23;break b}Ea=sa;Fa=c[Ea+4>>2]|0;Ga=z;c[Ga>>2]=c[Ea>>2];c[Ga+4>>2]=Fa;$W(A|0,z|0,8)|0;uv(b,w,B)}Of(y)}else{Ea=c[E>>2]|0;if((Ea|0)!=7){Da=27;break b}do{if((c[(Yu(c[ta>>2]|0,146744,x,0)|0)>>2]|0)!=4){Ea=c[E>>2]|0;if((Ea|0)!=7){Da=30;break b}if((c[(Yu(c[ta>>2]|0,147176,x,0)|0)>>2]|0)==6){break}Ca=c[E>>2]|0;if((Ca|0)!=7){Da=61;break b}if((c[(Yu(c[ta>>2]|0,147232,x,0)|0)>>2]|0)!=4){break e}Ca=c[C>>2]|0;if((Ca|0)!=9){Da=64;break b}Ea=sa;Fa=c[Ea+4>>2]|0;Ga=M;c[Ga>>2]=c[Ea>>2];c[Ga+4>>2]=Fa;$W(N|0,M|0,8)|0;uv(b,w,O);break e}}while(0);c[wa>>2]=0;c[za>>2]=0;c[F>>2]=wa;Da=c[g>>2]|0;do{if((Da|0)==(oa|0)){Da=50}else{do{Ga=Da+16|0;c[H>>2]=wa;$W(I|0,H|0,4)|0;Ea=Xv(J,K,L,Ga)|0;if((c[Ea>>2]|0)==0){Fa=FW(20)|0;c[Fa+16>>2]=c[Ga>>2];Ga=c[G>>2]|0;c[Fa>>2]=0;c[Fa+4>>2]=0;c[Fa+8>>2]=Ga;c[Ea>>2]=Fa;Ga=c[c[F>>2]>>2]|0;if((Ga|0)!=0){c[F>>2]=Ga;Fa=c[Ea>>2]|0}un(c[ya>>2]|0,Fa);c[za>>2]=(c[za>>2]|0)+1}Ea=c[Da+4>>2]|0;if((Ea|0)==0){while(1){Ea=c[Da+8>>2]|0;if((Da|0)==(c[Ea>>2]|0)){Da=Ea;break}else{Da=Ea}}}else{Da=Ea;while(1){Ea=c[Da>>2]|0;if((Ea|0)==0){break}else{Da=Ea}}}}while((Da|0)!=(oa|0));Ea=c[wa>>2]|0;if((Ea|0)==0){Da=50;break}while(1){Da=c[Ea+16>>2]|0;if((Ca|0)<(Da|0)){Da=c[Ea>>2]|0;if((Da|0)==0){Da=45;break}else{Ea=Da;continue}}if((Da|0)>=(Ca|0)){Da=49;break}Fa=Ea+4|0;Da=c[Fa>>2]|0;if((Da|0)==0){Da=48;break}else{Ea=Da}}if((Da|0)==45){Da=0;c[$>>2]=Ea;break}else if((Da|0)==48){Da=0;c[$>>2]=Ea;Ea=Fa;break}else if((Da|0)==49){Da=0;c[$>>2]=Ea;Ea=aa;break}}}while(0);if((Da|0)==50){c[$>>2]=wa;Ea=wa}if((c[Ea>>2]|0)==0){Da=FW(20)|0;c[Da+16>>2]=Ca;Ca=c[$>>2]|0;c[Da>>2]=0;c[Da+4>>2]=0;c[Da+8>>2]=Ca;c[Ea>>2]=Da;Ca=c[c[F>>2]>>2]|0;if((Ca|0)!=0){c[F>>2]=Ca;Da=c[Ea>>2]|0}un(c[ya>>2]|0,Da);c[za>>2]=(c[za>>2]|0)+1}if((a[ma]&1)!=0){Qe(-1,147240,_)}Ca=(c[la>>2]|0)+1|0;c[la>>2]=Ca;c[ka>>2]=Ce(c[ka>>2]|0,Ca,4)|0;Of(x);Ca=c[C>>2]|0;if((Ca|0)!=9){Da=58;break b}Ea=sa;Fa=c[Ea+4>>2]|0;Ga=Y;c[Ga>>2]=c[Ea>>2];c[Ga+4>>2]=Fa;Ga=vv(w,d,Z,J)|0;c[(c[ka>>2]|0)+((c[la>>2]|0)+ -1<<2)>>2]=Ga;xn(J,c[ya>>2]|0)}}while(0);Of(x)}else{Qe(-1,147328,Q)}}while(0);Of(w)}else{Qe(-1,147184,S);Of(w)}ra=ra+1|0;if((ra|0)>=(qa|0)){break a}}if((Da|0)==20){c[s>>2]=Ca;c[t+4>>2]=7;Qe(0,148232,t);tc()}else if((Da|0)==23){c[u>>2]=Ca;c[v+4>>2]=9;Qe(0,148232,v);tc()}else if((Da|0)==27){c[U>>2]=Ea;c[V+4>>2]=7;Qe(0,148232,V);tc()}else if((Da|0)==30){c[W>>2]=Ea;c[X+4>>2]=7;Qe(0,148232,X);tc()}else if((Da|0)==58){c[ba>>2]=Ca;c[ca+4>>2]=9;Qe(0,148232,ca);tc()}else if((Da|0)==61){c[da>>2]=Ca;c[ea+4>>2]=7;Qe(0,148232,ea);tc()}else if((Da|0)==64){c[fa>>2]=Ca;c[ga+4>>2]=9;Qe(0,148232,ga);tc()}}}while(0);Of(l);if((c[(Yu(ia,147232,l,0)|0)>>2]|0)==4){Ea=ja;Fa=c[Ea+4>>2]|0;Ga=p;c[Ga>>2]=c[Ea>>2];c[Ga+4>>2]=Fa;$W(q|0,p|0,8)|0;uv(b,e,r)}Of(l);Ga=n+4|0;c[Ga>>2]=0;c[n+8>>2]=0;c[o>>2]=Ga;Ga=Nv(ia,147376,l,n)|0;xn(n,c[n+4>>2]|0);if((c[Ga>>2]|0)!=1){Of(l);i=m;return}g=c[ha>>2]|0;if((g|0)!=1){c[j>>2]=g;c[k+4>>2]=1;Qe(0,148232,k);tc()}if((c[f>>2]&1|0)==0){Of(l);i=m;return}a[h]=1;Of(l);i=m;return}function uv(b,d,e){b=b|0;d=d|0;e=e|0;var 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;p=i;f=i;i=i+8|0;q=f;m=i;i=i+8|0;n=m;j=i;i=i+8|0;s=i;i=i+8|0;t=s;u=i;i=i+8|0;o=i;i=i+8|0;l=i;i=i+8|0;k=i;i=i+8|0;r=i;i=i+8|0;v=b+16|0;a[v]=1;g=b+48|0;w=(c[g>>2]|0)+1|0;c[g>>2]=w;h=b+52|0;c[h>>2]=Ce(c[h>>2]|0,w,4)|0;w=c[b+4>>2]|0;if((w|0)==1){w=FW(120)|0;u=c[b+40>>2]|0;v=(c[g>>2]|0)+ -1|0;s=e;t=c[s+4>>2]|0;e=k;c[e>>2]=c[s>>2];c[e+4>>2]=t;$W(j|0,k|0,8)|0;gv(w,u,d,v,j,b);c[w>>2]=146968;c[w+8>>2]=1;c[w+112>>2]=c[w+4>>2];c[(c[h>>2]|0)+((c[g>>2]|0)+ -1<<2)>>2]=w;i=p;return}else if((w|0)==2){w=FW(120)|0;u=c[b+40>>2]|0;v=(c[g>>2]|0)+ -1|0;s=e;t=c[s+4>>2]|0;e=l;c[e>>2]=c[s>>2];c[e+4>>2]=t;$W(m|0,l|0,8)|0;gv(w,u,d,v,n,b);c[w>>2]=146992;c[w+8>>2]=2;c[w+112>>2]=c[w+4>>2];c[(c[h>>2]|0)+((c[g>>2]|0)+ -1<<2)>>2]=w;i=p;return}else if((w|0)==3){w=FW(120)|0;u=c[b+40>>2]|0;v=(c[g>>2]|0)+ -1|0;s=e;t=c[s+4>>2]|0;e=o;c[e>>2]=c[s>>2];c[e+4>>2]=t;$W(f|0,o|0,8)|0;gv(w,u,d,v,q,b);c[w>>2]=147136;c[w+8>>2]=3;c[w+112>>2]=c[w+4>>2];c[(c[h>>2]|0)+((c[g>>2]|0)+ -1<<2)>>2]=w;i=p;return}else if((w|0)==0){w=FW(136)|0;u=c[b+40>>2]|0;v=(c[g>>2]|0)+ -1|0;o=e;q=c[o+4>>2]|0;e=r;c[e>>2]=c[o>>2];c[e+4>>2]=q;$W(s|0,r|0,8)|0;gv(w,u,d,v,t,b);c[w>>2]=146768;c[w+8>>2]=0;c[w+124>>2]=c[w+4>>2];c[w+120>>2]=0;a[w+128|0]=0;c[w+112>>2]=0;c[w+116>>2]=0;c[(c[h>>2]|0)+((c[g>>2]|0)+ -1<<2)>>2]=w;i=p;return}else{Qe(-1,147384,u);c[g>>2]=(c[g>>2]|0)+ -1;a[v]=0;i=p;return}}function vv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;o=i;i=i+8|0;n=o;m=i;i=i+16|0;j=m;k=i;i=i+16|0;f=k;c[k>>2]=13;h=f+8|0;c[h>>2]=0;c[h+4>>2]=0;l=c[a>>2]|0;if((l|0)!=7){c[o>>2]=l;c[n+4>>2]=7;Qe(0,148232,n);tc()}l=c[a+8>>2]|0;o=j+4|0;c[o>>2]=0;c[j+8>>2]=0;c[m>>2]=o;l=Nv(l,146744,f,j)|0;xn(j,c[j+4>>2]|0);do{if((c[l>>2]|0)==4){if((Qc(c[l+8>>2]|0,147840)|0)!=0){break}o=FW(80)|0;Bv(o,b,a,d,e);Of(f);yv(o);i=g;return o|0}}while(0);do{if((c[k>>2]|0)==4){h=c[h>>2]|0;if((Qc(h|0,147848)|0)==0){o=FW(80)|0;Ev(o,b,a,d,e);Of(f);yv(o);i=g;return o|0}if((Qc(h|0,147856)|0)==0){o=FW(80)|0;Hv(o,b,a,d,e);Of(f);yv(o);i=g;return o|0}o=(Qc(h|0,147864)|0)==0;h=FW(64)|0;if(!o){break}tv(h,b,a,d,e,3);c[h>>2]=147680;o=h;Of(f);yv(o);i=g;return o|0}else{h=FW(64)|0}}while(0);tv(h,b,a,d,e,4);o=h;Of(f);yv(o);i=g;return o|0}function wv(a){a=a|0;var b=0;b=i;xv(a);HW(a);i=b;return}function xv(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;c[b>>2]=147160;if((a[b+16|0]&1)!=0){f=b+48|0;g=c[f>>2]|0;e=b+52|0;j=c[e>>2]|0;if((g|0)>0){h=0;do{k=c[j+(h<<2)>>2]|0;if((k|0)!=0){fd[c[(c[k>>2]|0)+4>>2]&511](k);j=c[e>>2]|0;g=c[f>>2]|0}h=h+1|0;}while((h|0)<(g|0))}Fe(j);k=b+24|0;Of(k);i=d;return}f=b+44|0;j=c[f>>2]|0;if((j|0)==0){k=b+24|0;Of(k);i=d;return}e=b+48|0;g=c[e>>2]|0;if((g|0)>0){h=0;do{k=c[j+(h<<2)>>2]|0;if((k|0)!=0){fd[c[(c[k>>2]|0)+4>>2]&511](k);j=c[f>>2]|0;g=c[e>>2]|0}h=h+1|0;}while((h|0)<(g|0))}Fe(j);k=b+24|0;Of(k);i=d;return}function yv(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;e=b+48|0;f=(c[e>>2]|0)>0;if((a[b+16|0]&1)==0){if(!f){i=d;return}b=b+44|0;f=0;do{yv(c[(c[b>>2]|0)+(f<<2)>>2]|0);f=f+1|0;}while((f|0)<(c[e>>2]|0));i=d;return}else{if(!f){i=d;return}b=b+52|0;f=0;do{g=c[(c[b>>2]|0)+(f<<2)>>2]|0;fd[c[(c[g>>2]|0)+8>>2]&511](g);f=f+1|0;}while((f|0)<(c[e>>2]|0));i=d;return}}function zv(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;if((a[b+16|0]&1)!=0){i=d;return}e=b+48|0;if((c[e>>2]|0)<=0){i=d;return}b=b+44|0;f=0;do{g=c[(c[b>>2]|0)+(f<<2)>>2]|0;fd[c[(c[g>>2]|0)+8>>2]&511](g);f=f+1|0;}while((f|0)<(c[e>>2]|0));i=d;return}function Av(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;j=i;i=i+8|0;h=j;n=i;i=i+8|0;e=c[b+48>>2]|0;g=(e|0)>0;if((a[b+16|0]&1)==0){if(!g){p=0;i=f;return p|0}m=d;l=c[m>>2]|0;m=c[m+4>>2]|0;k=c[b+44>>2]|0;p=0;while(1){o=c[k+(p<<2)>>2]|0;q=n;c[q>>2]=l;c[q+4>>2]=m;$W(j|0,n|0,8)|0;o=Av(o,h)|0;p=p+1|0;if((o|0)!=0){h=11;break}if((p|0)<(e|0)){}else{o=0;h=11;break}}if((h|0)==11){i=f;return o|0}}if(!g){q=0;i=f;return q|0}b=c[b+52>>2]|0;g=c[d>>2]|0;d=c[d+4>>2]|0;h=0;while(1){o=c[b+(h<<2)>>2]|0;j=o+32|0;if((c[j>>2]|0)==(g|0)){if((c[j+4>>2]|0)==(d|0)){h=11;break}}h=h+1|0;if((h|0)>=(e|0)){o=0;h=11;break}}if((h|0)==11){i=f;return o|0}return 0}function Bv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;h=i;i=i+8|0;k=i;i=i+8|0;l=k;r=i;i=i+8|0;q=r;p=i;i=i+16|0;o=p;m=i;i=i+16|0;n=m;tv(b,d,e,f,g,0);c[b>>2]=147448;g=c[b+24>>2]|0;if((g|0)!=7){c[r>>2]=g;c[q+4>>2]=7;Qe(0,148232,q);tc()}d=c[b+32>>2]|0;c[b+68>>2]=-1;q=b+72|0;a[q]=0;c[m>>2]=13;r=n+8|0;c[r>>2]=0;c[r+4>>2]=0;b=b+60|0;c[b>>2]=0;e=o+4|0;c[e>>2]=0;c[o+8>>2]=0;c[p>>2]=e;d=Nv(d,147376,n,o)|0;xn(o,c[o+4>>2]|0);if((c[d>>2]|0)!=1){i=j;return}m=c[m>>2]|0;if((m|0)!=1){c[k>>2]=m;c[l+4>>2]=1;Qe(0,148232,l);tc()}k=c[r>>2]|0;do{if((k&65536|0)==0){if((k&32768|0)==0){break}c[b>>2]=2;if((k&16384|0)==0){break}a[q]=1}else{c[b>>2]=1}}while(0);if((k&16777216|0)==0){i=j;return}Qe(-1,147464,h);i=j;return}function Cv(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=b+48|0;h=c[e>>2]|0;f=(h|0)>0;if((a[b+16|0]&1)==0){if(!f){i=d;return}b=b+44|0;f=0;do{k=c[(c[b>>2]|0)+(f<<2)>>2]|0;fd[c[(c[k>>2]|0)+8>>2]&511](k);f=f+1|0;}while((f|0)<(c[e>>2]|0));i=d;return}if(!f){i=d;return}f=b+52|0;b=0;do{g=c[(c[f>>2]|0)+(b<<2)>>2]|0;h=h+ -1|0;c[g+116>>2]=h;g=g+112|0;c[g>>2]=Ce(c[g>>2]|0,h,4)|0;h=c[e>>2]|0;if((h|0)>0){j=0;k=0;do{if((b|0)!=(k|0)){c[(c[g>>2]|0)+(j<<2)>>2]=c[(c[(c[f>>2]|0)+(k<<2)>>2]|0)+64>>2];h=c[e>>2]|0;j=j+1|0}k=k+1|0;}while((k|0)<(h|0))}b=b+1|0;}while((b|0)<(h|0));i=d;return}function Dv(a){a=a|0;var b=0;b=i;xv(a);HW(a);i=b;return}function Ev(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var 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;h=i;l=i;i=i+8|0;j=l;p=i;i=i+8|0;q=p;u=i;i=i+8|0;t=u;o=i;i=i+16|0;n=o;r=i;i=i+16|0;s=r;m=i;i=i+16|0;k=m;tv(b,d,e,f,g,1);c[b>>2]=147624;g=c[b+24>>2]|0;if((g|0)!=7){c[u>>2]=g;c[t+4>>2]=7;Qe(0,148232,t);tc()}f=c[b+32>>2]|0;c[m>>2]=13;t=k+8|0;c[t>>2]=0;c[t+4>>2]=0;e=b+70|0;d=b+69|0;v=b+68|0;w=b+67|0;x=b+66|0;y=b+65|0;g=b+64|0;u=b+72|0;c[u>>2]=0;bX(b+60|0,0,11)|0;b=s+4|0;c[b>>2]=0;c[s+8>>2]=0;c[r>>2]=b;b=Nv(f,147376,k,s)|0;xn(s,c[s+4>>2]|0);do{if((c[b>>2]|0)==1){r=c[m>>2]|0;if((r|0)!=1){c[p>>2]=r;c[q+4>>2]=1;Qe(0,148232,q);tc()}p=c[t>>2]|0;if((p&4096|0)!=0){a[g]=1}if((p&8192|0)!=0){a[y]=1}if((p&1048576|0)!=0){a[x]=1}if((p&4194304|0)!=0){a[w]=1}if((p&8388608|0)!=0){a[v]=1}if((p&16777216|0)!=0){a[d]=1}if((p&33554432|0)==0){break}a[e]=1}}while(0);Of(k);y=n+4|0;c[y>>2]=0;c[n+8>>2]=0;c[o>>2]=y;y=Nv(f,147640,k,n)|0;xn(n,c[n+4>>2]|0);if((c[y>>2]|0)!=1){Of(k);i=h;return}m=c[m>>2]|0;if((m|0)!=1){c[l>>2]=m;c[j+4>>2]=1;Qe(0,148232,j);tc()}c[u>>2]=c[t>>2];Of(k);i=h;return}function Fv(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=147624;d=c[a+60>>2]|0;if((d|0)!=0){ke(d);HW(d)}xv(a);HW(a);i=b;return}function Gv(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=147624;d=c[a+60>>2]|0;if((d|0)==0){xv(a);i=b;return}ke(d);HW(d);xv(a);i=b;return}function Hv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;k=i;i=i+8|0;l=k;q=i;i=i+8|0;p=q;o=i;i=i+16|0;n=o;m=i;i=i+16|0;j=m;tv(b,d,e,f,g,2);c[b>>2]=147656;c[b+64>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;g=c[b+24>>2]|0;if((g|0)!=7){c[q>>2]=g;c[p+4>>2]=7;Qe(0,148232,p);tc()}d=c[b+32>>2]|0;c[m>>2]=13;q=j+8|0;c[q>>2]=0;c[q+4>>2]=0;p=b+57|0;bX(p|0,0,5)|0;e=n+4|0;c[e>>2]=0;c[n+8>>2]=0;c[o>>2]=e;d=Nv(d,147376,j,n)|0;xn(n,c[n+4>>2]|0);if((c[d>>2]|0)!=1){Of(j);i=h;return}m=c[m>>2]|0;if((m|0)!=1){c[k>>2]=m;c[l+4>>2]=1;Qe(0,148232,l);tc()}k=c[q>>2]|0;if((k&131072|0)!=0){a[p]=1}if((k&262144|0)!=0){a[b+58|0]=1}if((k&2097152|0)!=0){a[b+59|0]=1}if((k&4194304|0)!=0){a[b+60|0]=1}if((k&67108864|0)==0){Of(j);i=h;return}a[b+61|0]=1;Of(j);i=h;return}function Iv(a){a=a|0;var b=0;b=i;Jv(a);HW(a);i=b;return}function Jv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;c[a>>2]=147656;d=a+64|0;e=a+68|0;g=c[e>>2]|0;if((c[d>>2]|0)>0){f=0;do{h=c[g+(f*12|0)>>2]|0;if((h|0)!=0){ke(h);HW(h);g=c[e>>2]|0}h=c[g+(f*12|0)+4>>2]|0;if((h|0)!=0){ke(h);HW(h);g=c[e>>2]|0}f=f+1|0;}while((f|0)<(c[d>>2]|0))}if((g|0)!=0){IW(g)}d=c[a+72>>2]|0;if((d|0)==0){xv(a);i=b;return}ke(d);HW(d);xv(a);i=b;return}function Kv(a){a=a|0;var b=0;b=i;xv(a);HW(a);i=b;return}function Lv(b,d,e){b=b|0;d=d|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0;f=i;z=i;i=i+8|0;h=i;i=i+8|0;j=h;u=i;i=i+8|0;t=i;i=i+8|0;y=i;i=i+8|0;A=y;C=i;i=i+8|0;E=C;x=i;i=i+16|0;g=x;s=i;i=i+16|0;v=s;r=i;i=i+16|0;l=r;p=i;i=i+16|0;o=p;m=i;i=i+8|0;n=m;c[x>>2]=13;w=g+8|0;c[w>>2]=0;c[w+4>>2]=0;c[b+12>>2]=d;B=b+16|0;c[B>>2]=e;q=b+8|0;c[q>>2]=0;k=b+4|0;c[k>>2]=0;c[b>>2]=0;D=c[e>>2]|0;if((D|0)!=7){c[C>>2]=D;c[E+4>>2]=7;Qe(0,148232,E);tc()}Yu(c[e+8>>2]|0,147696,g,0)|0;if((c[x>>2]|0)==0){e=a[w]&1}else{e=0}a[b+20|0]=e;Of(g);e=c[B>>2]|0;B=c[e>>2]|0;if((B|0)!=7){c[y>>2]=B;c[A+4>>2]=7;Qe(0,148232,A);tc()}Yu(c[e+8>>2]|0,147712,g,0)|0;if((c[x>>2]|0)!=6){Qe(-1,147816,z);Of(g);i=f;return}A=c[w>>2]|0;c[s>>2]=13;z=v+8|0;c[z>>2]=0;c[z+4>>2]=0;z=A+12|0;if((c[z>>2]|0)<=0){Of(g);i=f;return}w=l+8|0;x=w+4|0;e=o+4|0;y=o+8|0;B=o+4|0;C=0;a:while(1){c[r>>2]=13;c[w>>2]=0;c[x>>2]=0;ut(A,C,v)|0;vt(A,C,l)|0;do{if((c[r>>2]|0)==9){if((c[s>>2]|0)!=7){Qe(-1,147752,u);Of(v);Of(l);break}D=c[q>>2]|0;if((c[k>>2]|0)<(D|0)){c[e>>2]=0;c[y>>2]=0;c[p>>2]=e}else{D=D+16|0;c[q>>2]=D;c[b>>2]=Ce(c[b>>2]|0,D,4)|0;D=c[r>>2]|0;c[e>>2]=0;c[y>>2]=0;c[p>>2]=e;if((D|0)!=9){k=17;break a}}F=w;E=c[F+4>>2]|0;D=m;c[D>>2]=c[F>>2];c[D+4>>2]=E;D=vv(v,d,n,o)|0;E=c[k>>2]|0;c[k>>2]=E+1;c[(c[b>>2]|0)+(E<<2)>>2]=D;Of(v);Of(l);xn(o,c[B>>2]|0)}else{Qe(-1,147720,t);Of(v);Of(l)}}while(0);C=C+1|0;if((C|0)>=(c[z>>2]|0)){k=21;break}}if((k|0)==17){c[h>>2]=D;c[j+4>>2]=9;Qe(0,148232,j);tc()}else if((k|0)==21){Of(g);i=f;return}}function Mv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a+4|0;e=c[d>>2]|0;g=c[a>>2]|0;if((e|0)>0){f=0}else{h=g;Fe(h);i=b;return}do{h=c[g+(f<<2)>>2]|0;if((h|0)!=0){fd[c[(c[h>>2]|0)+4>>2]&511](h);g=c[a>>2]|0;e=c[d>>2]|0}f=f+1|0;}while((f|0)<(e|0));Fe(g);i=b;return}function Nv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;l=i;i=i+8|0;o=i;i=i+16|0;f=o;n=i;i=i+8|0;k=n;h=i;i=i+16|0;j=h;c[o>>2]=13;m=f+8|0;c[m>>2]=0;c[m+4>>2]=0;if((c[(Yu(a,b,d,0)|0)>>2]|0)!=5){i=g;return d|0}Of(d);Zu(a,146752,f)|0;o=c[o>>2]|0;a:do{if((o|0)==7){Nv(c[m>>2]|0,b,d,e)|0}else if((o|0)==9){q=m;m=c[q>>2]|0;q=c[q+4>>2]|0;c[n>>2]=m;c[n+4>>2]=q;n=e+4|0;q=c[n>>2]|0;do{if((q|0)!=0){p=n;b:while(1){o=q;while(1){if((c[o+16>>2]|0)>=(m|0)){break}o=c[o+4>>2]|0;if((o|0)==0){o=p;break b}}q=c[o>>2]|0;if((q|0)==0){break}else{p=o}}if((o|0)==(n|0)){break}if((m|0)>=(c[o+16>>2]|0)){break a}}}while(0);tn(l,e,k);c[h>>2]=13;k=j+8|0;c[k>>2]=0;c[k+4>>2]=0;Nf(f,c[a+4>>2]|0,j,0)|0;if((c[h>>2]|0)==7){Nv(c[k>>2]|0,b,d,e)|0}else{q=d+8|0;c[q>>2]=0;c[q+4>>2]=0;c[d>>2]=5}Of(j)}else{q=d+8|0;c[q>>2]=0;c[q+4>>2]=0;c[d>>2]=5}}while(0);Of(f);i=g;return d|0}function Ov(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+4|0;if((c[d>>2]|0)<=0){i=b;return}e=0;do{f=c[(c[a>>2]|0)+(e<<2)>>2]|0;fd[c[(c[f>>2]|0)+8>>2]&511](f);e=e+1|0;}while((e|0)<(c[d>>2]|0));i=b;return}function Pv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;f=i;i=i+8|0;g=f;e=i;i=i+8|0;h=c[a+4>>2]|0;if((h|0)<=0){l=0;i=d;return l|0}j=b;b=c[j>>2]|0;j=c[j+4>>2]|0;k=c[a>>2]|0;l=0;while(1){a=c[k+(l<<2)>>2]|0;m=e;c[m>>2]=b;c[m+4>>2]=j;$W(f|0,e|0,8)|0;a=Av(a,g)|0;l=l+1|0;if((a|0)!=0){e=5;break}if((l|0)<(h|0)){}else{a=0;e=5;break}}if((e|0)==5){i=d;return a|0}return 0}function Qv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=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;q=i;x=i;i=i+8|0;y=x;o=i;i=i+8|0;p=o;m=i;i=i+8|0;n=m;k=i;i=i+8|0;l=k;g=i;i=i+8|0;j=g;B=i;i=i+8|0;C=B;w=i;i=i+8|0;A=i;i=i+16|0;v=A;s=i;i=i+16|0;t=s;c[A>>2]=13;z=v+8|0;c[z>>2]=0;c[z+4>>2]=0;u=a+4|0;c[u>>2]=0;c[a>>2]=0;r=a+16|0;c[r>>2]=b;D=c[d>>2]|0;b=(D|0)==6;if((f|0)==0|b^1){i=q;return}if(!b){c[B>>2]=D;c[C+4>>2]=6;Qe(0,148232,C);tc()}B=d+8|0;L=c[(c[B>>2]|0)+12>>2]|0;C=a+8|0;c[C>>2]=L;c[a>>2]=Ce(0,L,4)|0;if((c[C>>2]|0)<=0){i=q;return}b=f+4|0;E=e<<16;D=t+8|0;e=D+4|0;F=0;a:while(1){G=c[d>>2]|0;if((G|0)!=6){d=7;break}if((c[(vt(c[B>>2]|0,F,v)|0)>>2]|0)==9){G=c[A>>2]|0;if((G|0)!=9){d=11;break}K=z;L=c[K>>2]|0;K=c[K+4>>2]|0;H=c[b>>2]|0;b:do{if((H|0)>0){J=c[f>>2]|0;I=0;while(1){G=c[J+(I<<2)>>2]|0;M=w;c[M>>2]=L;c[M+4>>2]=K;$W(x|0,w|0,8)|0;G=Av(G,y)|0;I=I+1|0;if((G|0)!=0){break}if((I|0)>=(H|0)){break b}}c[G+64>>2]=(c[u>>2]|0)+E;H=c[u>>2]|0;c[u>>2]=H+1;c[(c[a>>2]|0)+(H<<2)>>2]=G;c[s>>2]=13;c[D>>2]=0;c[e>>2]=0;H=c[d>>2]|0;if((H|0)!=6){d=17;break a}do{if((c[(ut(c[B>>2]|0,F,t)|0)>>2]|0)==7){I=FW(152)|0;H=c[s>>2]|0;if((H|0)!=7){d=20;break a}Ar(I,c[r>>2]|0,c[D>>2]|0,0);h[G+104>>3]=+h[I+136>>3];if((I|0)==0){break}fd[c[(c[I>>2]|0)+4>>2]&511](I)}}while(0);Of(t)}}while(0);Of(v)}else{Of(v)}F=F+1|0;if((F|0)>=(c[C>>2]|0)){d=26;break}}if((d|0)==7){c[g>>2]=G;c[j+4>>2]=6;Qe(0,148232,j);tc()}else if((d|0)==11){c[k>>2]=G;c[l+4>>2]=9;Qe(0,148232,l);tc()}else if((d|0)==17){c[m>>2]=H;c[n+4>>2]=6;Qe(0,148232,n);tc()}else if((d|0)==20){c[o>>2]=H;c[p+4>>2]=7;Qe(0,148232,p);tc()}else if((d|0)==26){i=q;return}}function Rv(a){a=a|0;var b=0;b=i;Fe(c[a>>2]|0);i=b;return}function Sv(a){a=a|0;i=i;return}function Tv(a){a=a|0;var b=0;b=i;iv(a);i=b;return}function Uv(a){a=a|0;var b=0;b=i;iv(a);HW(a);i=b;return}function Vv(a){a=a|0;var b=0;b=i;iv(a);i=b;return}function Wv(a){a=a|0;var b=0;b=i;iv(a);HW(a);i=b;return}function Xv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=a+4|0;b=c[b>>2]|0;do{if((b|0)!=(g|0)){h=c[e>>2]|0;j=c[b+16>>2]|0;if((h|0)<(j|0)){break}if((j|0)>=(h|0)){c[d>>2]=b;k=d;i=f;return k|0}a=b+4|0;j=c[a>>2]|0;e=(j|0)==0;if(e){j=b;while(1){k=c[j+8>>2]|0;if((j|0)==(c[k>>2]|0)){j=k;break}else{j=k}}}else{while(1){k=c[j>>2]|0;if((k|0)==0){break}else{j=k}}}do{if((j|0)!=(g|0)){if((h|0)<(c[j+16>>2]|0)){break}b=c[g>>2]|0;if((b|0)==0){c[d>>2]=g;k=g;i=f;return k|0}while(1){g=c[b+16>>2]|0;if((h|0)<(g|0)){g=c[b>>2]|0;if((g|0)==0){g=34;break}else{b=g;continue}}if((g|0)>=(h|0)){g=38;break}e=b+4|0;g=c[e>>2]|0;if((g|0)==0){g=37;break}else{b=g}}if((g|0)==34){c[d>>2]=b;k=b;i=f;return k|0}else if((g|0)==37){c[d>>2]=b;k=e;i=f;return k|0}else if((g|0)==38){c[d>>2]=b;k=d;i=f;return k|0}}}while(0);if(e){c[d>>2]=b;k=a;i=f;return k|0}else{c[d>>2]=j;k=j;i=f;return k|0}}}while(0);h=c[b>>2]|0;do{if((b|0)==(c[a>>2]|0)){a=b}else{if((h|0)==0){j=b;while(1){a=c[j+8>>2]|0;if((j|0)==(c[a>>2]|0)){j=a}else{break}}}else{a=h;while(1){j=c[a+4>>2]|0;if((j|0)==0){break}else{a=j}}}e=c[e>>2]|0;if((c[a+16>>2]|0)<(e|0)){break}b=c[g>>2]|0;if((b|0)==0){c[d>>2]=g;k=g;i=f;return k|0}while(1){g=c[b+16>>2]|0;if((e|0)<(g|0)){g=c[b>>2]|0;if((g|0)==0){g=15;break}else{b=g;continue}}if((g|0)>=(e|0)){g=19;break}h=b+4|0;g=c[h>>2]|0;if((g|0)==0){g=18;break}else{b=g}}if((g|0)==15){c[d>>2]=b;k=b;i=f;return k|0}else if((g|0)==18){c[d>>2]=b;k=h;i=f;return k|0}else if((g|0)==19){c[d>>2]=b;k=d;i=f;return k|0}}}while(0);if((h|0)==0){c[d>>2]=b;k=b;i=f;return k|0}else{c[d>>2]=a;k=a+4|0;i=f;return k|0}return 0}function Yv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0.0;e=i;f=i;i=i+8|0;g=f;k=i;i=i+16|0;l=k;o=i;i=i+16|0;m=o;n=i;i=i+8|0;j=b+28|0;p=c[j>>2]|0;if((c[p+484>>2]|0)==0){d=c[b+120>>2]|0;do{if((d|0)==0){d=-1}else{d=c[d+4>>2]|0;if((c[d+16>>2]|0)!=8){d=-1;break}d=c[d+24>>2]|0;d=jd[c[(c[d>>2]|0)+48>>2]&511](d)|0}}while(0);Qe(d,161136,n);i=e;return}n=b+48|0;if((a[n]&1)==0){n=p}else{r=c[b+8>>2]|0;hd[c[(c[r>>2]|0)+176>>2]&127](r,p);a[n]=0;n=c[j>>2]|0}p=c[d>>2]|0;if((p+ -1|0)>>>0>=2){c[o>>2]=p;c[m+4>>2]=1;c[m+8>>2]=2;Qe(0,162328,m);tc()}m=d+8|0;if((p|0)==1){q=+(c[m>>2]|0)}else{q=+h[m>>3]}h[n+552>>3]=q;m=c[j>>2]|0;n=c[d+16>>2]|0;if((n+ -1|0)>>>0>=2){c[k>>2]=n;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,162328,l);tc()}k=d+24|0;if((n|0)==1){q=+(c[k>>2]|0)}else{q=+h[k>>3]}h[m+544>>3]=q;k=c[j>>2]|0;s=+h[k+608>>3];l=k+616|0;q=+h[l>>3]- +h[k+568>>3];h[l>>3]=q;h[k+592>>3]=+h[k+528>>3]+(s*+h[k+496>>3]+q*+h[k+512>>3]);h[k+600>>3]=+h[k+536>>3]+(s*+h[k+504>>3]+q*+h[k+520>>3]);k=b+8|0;l=c[k>>2]|0;hd[c[(c[l>>2]|0)+196>>2]&127](l,c[j>>2]|0);l=c[k>>2]|0;hd[c[(c[l>>2]|0)+184>>2]&127](l,c[j>>2]|0);l=c[k>>2]|0;hd[c[(c[l>>2]|0)+204>>2]&127](l,c[j>>2]|0);l=c[k>>2]|0;hd[c[(c[l>>2]|0)+268>>2]&127](l,c[j>>2]|0);l=c[d+32>>2]|0;if((l|0)!=3){c[f>>2]=l;c[g+4>>2]=3;Qe(0,162256,g);tc()}Ox(b,c[d+40>>2]|0);r=c[k>>2]|0;hd[c[(c[r>>2]|0)+272>>2]&127](r,c[j>>2]|0);i=e;return}function Zv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0;e=i;g=i;i=i+8|0;j=g;k=i;i=i+8|0;f=b+28|0;l=c[f>>2]|0;if((c[l+484>>2]|0)==0){b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);Qe(b,161112,k);i=e;return}m=b+48|0;k=b+8|0;if((a[m]&1)!=0){n=c[k>>2]|0;hd[c[(c[n>>2]|0)+176>>2]&127](n,l);a[m]=0;l=c[f>>2]|0}p=+h[l+608>>3];n=l+616|0;o=+h[n>>3]- +h[l+568>>3];h[n>>3]=o;h[l+592>>3]=+h[l+528>>3]+(p*+h[l+496>>3]+o*+h[l+512>>3]);h[l+600>>3]=+h[l+536>>3]+(p*+h[l+504>>3]+o*+h[l+520>>3]);l=c[k>>2]|0;hd[c[(c[l>>2]|0)+204>>2]&127](l,c[f>>2]|0);l=c[k>>2]|0;hd[c[(c[l>>2]|0)+268>>2]&127](l,c[f>>2]|0);l=c[d>>2]|0;if((l|0)!=3){c[g>>2]=l;c[j+4>>2]=3;Qe(0,162256,j);tc()}Ox(b,c[d+8>>2]|0);n=c[k>>2]|0;hd[c[(c[n>>2]|0)+272>>2]&127](n,c[f>>2]|0);i=e;return}function _v(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;e=i;d=b+28|0;g=c[d>>2]|0;h=c[g+588>>2]|0;a:do{if((c[h+28>>2]|0)>0){h=c[b+116>>2]|0;b:do{if((h|0)!=0){if((a[h]&1)!=0){break a}while(1){h=c[h+4>>2]|0;if((h|0)==0){break b}if((a[h]&1)!=0){break a}}}}while(0);h=c[g+116>>2]|0;if((jd[c[(c[h>>2]|0)+12>>2]&511](h)|0)==10){Bx(b,0)}else{h=c[b+8>>2]|0;hd[c[(c[h>>2]|0)+216>>2]&127](h,c[d>>2]|0)}h=c[(c[d>>2]|0)+120>>2]|0;if((jd[c[(c[h>>2]|0)+12>>2]&511](h)|0)==10){Cx(b);break}else{h=c[b+8>>2]|0;hd[c[(c[h>>2]|0)+212>>2]&127](h,c[d>>2]|0);break}}else{if((a[h]&1)!=0){break}i=e;return}}while(0);g=c[d>>2]|0;h=c[g+588>>2]|0;do{if((c[h+28>>2]|0)>0){f=16}else{if((a[h]&1)!=0){f=16;break}b=b+52|0}}while(0);do{if((f|0)==16){f=b+52|0;if((c[f>>2]|0)==0){b=f;break}TB(g);b=c[b+8>>2]|0;g=c[b>>2]|0;if((c[f>>2]|0)==1){hd[c[g+256>>2]&127](b,c[d>>2]|0);b=f;break}else{hd[c[g+260>>2]&127](b,c[d>>2]|0);b=f;break}}}while(0);c[b>>2]=0;SB(c[d>>2]|0);i=e;return}function $v(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;e=i;d=b+28|0;g=c[d>>2]|0;h=c[g+588>>2]|0;a:do{if((c[h+28>>2]|0)>0){h=c[b+116>>2]|0;b:do{if((h|0)!=0){if((a[h]&1)!=0){break a}while(1){h=c[h+4>>2]|0;if((h|0)==0){break b}if((a[h]&1)!=0){break a}}}}while(0);h=c[g+116>>2]|0;if((jd[c[(c[h>>2]|0)+12>>2]&511](h)|0)==10){Bx(b,1)}else{h=c[b+8>>2]|0;hd[c[(c[h>>2]|0)+220>>2]&127](h,c[d>>2]|0)}h=c[(c[d>>2]|0)+120>>2]|0;if((jd[c[(c[h>>2]|0)+12>>2]&511](h)|0)==10){Cx(b);break}else{h=c[b+8>>2]|0;hd[c[(c[h>>2]|0)+212>>2]&127](h,c[d>>2]|0);break}}else{if((a[h]&1)!=0){break}i=e;return}}while(0);g=c[d>>2]|0;h=c[g+588>>2]|0;do{if((c[h+28>>2]|0)>0){f=16}else{if((a[h]&1)!=0){f=16;break}b=b+52|0}}while(0);do{if((f|0)==16){f=b+52|0;if((c[f>>2]|0)==0){b=f;break}TB(g);b=c[b+8>>2]|0;g=c[b>>2]|0;if((c[f>>2]|0)==1){hd[c[g+256>>2]&127](b,c[d>>2]|0);b=f;break}else{hd[c[g+260>>2]&127](b,c[d>>2]|0);b=f;break}}}while(0);c[b>>2]=0;SB(c[d>>2]|0);i=e;return}function aw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=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;f=i;j=i;i=i+8|0;k=j;g=i;i=i+8|0;h=g;m=i;i=i+8|0;p=m;o=i;i=i+8|0;n=o;D=i;i=i+8|0;s=i;i=i+8|0;q=s;w=i;i=i+8|0;t=w;A=i;i=i+8|0;z=A;C=i;i=i+8|0;B=C;F=i;i=i+8|0;E=F;v=i;i=i+16|0;y=v;x=FW(8)|0;u=x;c[u>>2]=0;c[u+4>>2]=0;a[x]=0;u=b+116|0;c[x+4>>2]=c[u>>2];c[u>>2]=x;x=c[(c[b+4>>2]|0)+160>>2]|0;l=c[d>>2]|0;if((l|0)!=4){c[F>>2]=l;c[E+4>>2]=4;Qe(0,162256,E);tc()}l=d+8|0;a:do{if(!((vc(c[l>>2]|0,161320,2)|0)!=0|(x|0)==0)){if((e|0)<=1){q=c[b+120>>2]|0;do{if((q|0)==0){q=-1}else{q=c[q+4>>2]|0;if((c[q+16>>2]|0)!=8){q=-1;break}q=c[q+24>>2]|0;q=jd[c[(c[q>>2]|0)+48>>2]&511](q)|0}}while(0);Qe(q,162112,D);break}D=d+16|0;E=c[D>>2]|0;do{if((E|0)!=4){F=c[b+120>>2]|0;do{if((F|0)==0){F=-1}else{F=c[F+4>>2]|0;if((c[F+16>>2]|0)!=8){F=-1;break}F=c[F+24>>2]|0;F=jd[c[(c[F>>2]|0)+48>>2]&511](F)|0;E=c[D>>2]|0}}while(0);c[C>>2]=E;Qe(F,162072,B);B=c[D>>2]|0;if((B|0)==4){break}c[A>>2]=B;c[z+4>>2]=4;Qe(0,162256,z);tc()}}while(0);z=c[d+24>>2]|0;c[v>>2]=13;A=y+8|0;c[A>>2]=0;c[A+4>>2]=0;A=c[b+20>>2]|0;b:do{if((A|0)!=0){while(1){if((c[A+96>>2]|0)==7){if((c[(Zu(c[A+104>>2]|0,z,y)|0)>>2]|0)!=5){break}Of(y)}A=c[A+112>>2]|0;if((A|0)==0){break b}}if((c[v>>2]|0)!=9){break a}F=GF(x,y)|0;a[c[u>>2]|0]=F&1^1;break a}}while(0);c[w>>2]=z;Qe(-1,159320,t);t=c[b+120>>2]|0;do{if((t|0)==0){t=-1}else{t=c[t+4>>2]|0;if((c[t+16>>2]|0)!=8){t=-1;break}t=c[t+24>>2]|0;t=jd[c[(c[t>>2]|0)+48>>2]&511](t)|0}}while(0);c[s>>2]=z;Qe(t,162096,q)}}while(0);if((a[b+13|0]&1)!=0){q=c[d>>2]|0;if((q|0)!=4){c[o>>2]=q;c[n+4>>2]=4;Qe(0,162256,n);tc()}c[m>>2]=c[l>>2];Kb(162160,p|0)|0;if((e|0)==2){m=c[r>>2]|0;Qf(d+16|0,m)}else{m=c[r>>2]|0}Hb(10)|0;Fc(m|0)|0}if((e|0)==1){g=c[b+8>>2]|0;d=c[d>>2]|0;if((d|0)!=4){c[j>>2]=d;c[k+4>>2]=4;Qe(0,162256,k);tc()}Gd[c[(c[g>>2]|0)+332>>2]&255](g,c[l>>2]|0,0);i=f;return}else if((e|0)==2){if((c[d+16>>2]|0)!=7){i=f;return}j=c[b+8>>2]|0;k=c[d>>2]|0;if((k|0)!=4){c[g>>2]=k;c[h+4>>2]=4;Qe(0,162256,h);tc()}Gd[c[(c[j>>2]|0)+332>>2]&255](j,c[l>>2]|0,c[d+24>>2]|0);i=f;return}else{i=f;return}}function bw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;b=i;d=Sx(a)|0;if((d|0)==0){i=b;return}Qx(a,0,d,1);e=jd[c[(c[d>>2]|0)+68>>2]&511](d)|0;e=jd[c[(c[e>>2]|0)+20>>2]&511](e)|0;a=jd[c[(c[d>>2]|0)+68>>2]&511](d)|0;a=jd[c[(c[a>>2]|0)+20>>2]&511](a)|0;while(1){if((e|0)==69){if((a|0)==73|(a|0)==-1){break}}else{if((a|0)==-1){break}}f=jd[c[(c[d>>2]|0)+68>>2]&511](d)|0;e=a;a=jd[c[(c[f>>2]|0)+20>>2]&511](f)|0}fd[c[(c[d>>2]|0)+4>>2]&511](d);i=b;return}function cw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;d=i;e=b+8|0;g=c[e>>2]|0;f=b+28|0;hd[c[(c[g>>2]|0)+300>>2]&127](g,c[f>>2]|0);a[b+16|0]=1;g=c[f>>2]|0;h[g+496>>3]=1.0;bX(g+504|0,0,16)|0;h[g+520>>3]=1.0;bX(g+528|0,0,16)|0;g=c[f>>2]|0;bX(g+608|0,0,16)|0;h[g+592>>3]=+h[g+528>>3]+(+h[g+496>>3]*0.0+ +h[g+512>>3]*0.0);h[g+600>>3]=+h[g+536>>3]+(+h[g+504>>3]*0.0+ +h[g+520>>3]*0.0);g=c[e>>2]|0;hd[c[(c[g>>2]|0)+180>>2]&127](g,c[f>>2]|0);g=c[e>>2]|0;hd[c[(c[g>>2]|0)+204>>2]&127](g,c[f>>2]|0);a[b+48|0]=1;f=c[f>>2]|0;if((c[f+584>>2]&4|0)!=0){i=d;return}g=c[e>>2]|0;if(!(Bd[c[(c[g>>2]|0)+40>>2]&255](g,f)|0)){i=d;return}a[b+15|0]=1;i=d;return}function dw(a,b,d){a=a|0;b=b|0;d=d|0;d=a+56|0;c[d>>2]=(c[d>>2]|0)+1;i=i;return}function ew(a,b,d){a=a|0;b=b|0;d=d|0;var 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;d=i;e=i;i=i+8|0;r=i;i=i+8|0;q=r;l=i;i=i+16|0;h=l;g=i;i=i+128|0;j=g;c[l>>2]=13;n=h+8|0;c[n>>2]=0;m=n+4|0;c[m>>2]=0;k=a+28|0;OB(c[k>>2]|0,0);o=c[a+20>>2]|0;p=c[b>>2]|0;if((p|0)!=4){c[r>>2]=p;c[q+4>>2]=4;Qe(0,162256,q);tc()}p=c[b+8>>2]|0;a:do{if((o|0)==0){f=8}else{while(1){if((c[o+24>>2]|0)==7){if((c[(Yu(c[o+32>>2]|0,p,h,0)|0)>>2]|0)!=5){break}Of(h)}o=c[o+112>>2]|0;if((o|0)==0){f=8;break a}}if((c[l>>2]|0)==5){f=10;break}b=Jy(h,a)|0}}while(0);if((f|0)==8){c[n>>2]=0;c[m>>2]=0;c[l>>2]=5;f=10}if((f|0)==10){b=Jy(b,a)|0}Of(h);if((b|0)!=0){MB(c[k>>2]|0,b);r=a+8|0;q=c[r>>2]|0;hd[c[(c[q>>2]|0)+136>>2]&127](q,c[k>>2]|0);hd[c[(c[b>>2]|0)+48>>2]&127](b,j);$W((c[k>>2]|0)+252|0,g|0,128)|0;r=c[r>>2]|0;hd[c[(c[r>>2]|0)+144>>2]&127](r,c[k>>2]|0);i=d;return}a=c[a+120>>2]|0;do{if((a|0)==0){a=-1}else{a=c[a+4>>2]|0;if((c[a+16>>2]|0)!=8){a=-1;break}a=c[a+24>>2]|0;a=jd[c[(c[a>>2]|0)+48>>2]&511](a)|0}}while(0);Qe(a,160520,e);i=d;return}function fw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;j=i;i=i+8|0;k=j;g=i;i=i+8|0;h=g;n=i;i=i+8|0;o=n;l=i;i=i+8|0;m=l;if((a[b+13|0]&1)!=0){p=c[d>>2]|0;if((p|0)!=4){c[l>>2]=p;c[m+4>>2]=4;Qe(0,162256,m);tc()}c[n>>2]=c[d+8>>2];Kb(162184,o|0)|0;if((e|0)==2){l=c[r>>2]|0;Qf(d+16|0,l)}else{l=c[r>>2]|0}Hb(10)|0;Fc(l|0)|0}do{if((e|0)==2){if((c[d+16>>2]|0)!=7){break}j=c[b+8>>2]|0;k=c[d>>2]|0;if((k|0)!=4){c[g>>2]=k;c[h+4>>2]=4;Qe(0,162256,h);tc()}Gd[c[(c[j>>2]|0)+340>>2]&255](j,c[d+8>>2]|0,c[d+24>>2]|0);i=f;return}}while(0);g=c[b+8>>2]|0;h=c[d>>2]|0;if((h|0)!=4){c[j>>2]=h;c[k+4>>2]=4;Qe(0,162256,k);tc()}hd[c[(c[g>>2]|0)+336>>2]&127](g,c[d+8>>2]|0);i=f;return}function gw(a,b,d){a=a|0;b=b|0;d=d|0;var 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,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;e=i;y=i;i=i+8|0;z=y;F=i;i=i+8|0;u=i;i=i+8|0;t=u;s=i;i=i+8|0;n=s;q=i;i=i+8|0;r=q;G=i;i=i+8|0;H=G;B=i;i=i+8|0;C=B;K=i;i=i+8|0;J=K;L=i;i=i+8|0;M=L;P=i;i=i+8|0;O=P;R=i;i=i+8|0;Q=R;S=i;i=i+8|0;T=S;V=i;i=i+8|0;U=V;W=i;i=i+8|0;X=W;Y=i;i=i+8|0;N=Y;E=i;i=i+16|0;d=E;D=i;i=i+16|0;h=D;p=i;i=i+16|0;I=p;A=i;i=i+16|0;m=A;j=i;i=i+16|0;f=j;x=i;i=i+8|0;c[E>>2]=13;l=d+8|0;c[l>>2]=0;c[l+4>>2]=0;c[D>>2]=13;v=h+8|0;c[v>>2]=0;c[v+4>>2]=0;c[p>>2]=13;o=I+8|0;c[o>>2]=0;c[o+4>>2]=0;c[A>>2]=13;w=m+8|0;c[w>>2]=0;c[w+4>>2]=0;c[j>>2]=13;g=f+8|0;c[g>>2]=0;c[g+4>>2]=0;Z=c[b>>2]|0;if((Z|0)!=4){c[Y>>2]=Z;c[N+4>>2]=4;Qe(0,162256,N);tc()}b=c[b+8>>2]|0;N=a+20|0;Y=c[N>>2]|0;a:do{if((Y|0)!=0){while(1){if((c[Y+8>>2]|0)==7){if((c[(Yu(c[Y+16>>2]|0,b,d,0)|0)>>2]|0)!=5){break}Of(d)}Y=c[Y+112>>2]|0;if((Y|0)==0){break a}}if((c[E>>2]|0)!=8){a=c[a+120>>2]|0;do{if((a|0)==0){a=-1}else{a=c[a+4>>2]|0;if((c[a+16>>2]|0)!=8){a=-1;break}a=c[a+24>>2]|0;a=jd[c[(c[a>>2]|0)+48>>2]&511](a)|0}}while(0);c[V>>2]=b;Qe(a,161288,U);Of(d);i=e;return}U=c[l>>2]|0;Zu(jd[c[(c[U>>2]|0)+72>>2]&511](U)|0,161320,h)|0;U=c[D>>2]|0;do{if((U|0)==9){S=c[(c[a+4>>2]|0)+160>>2]|0;if((S|0)==0){break}if(GF(S,h)|0){break}Of(h);Of(d);i=e;return}else if((U|0)!=5){V=c[a+120>>2]|0;do{if((V|0)==0){V=-1}else{V=c[V+4>>2]|0;if((c[V+16>>2]|0)!=8){V=-1;break}V=c[V+24>>2]|0;V=jd[c[(c[V>>2]|0)+48>>2]&511](V)|0;U=c[D>>2]|0}}while(0);c[S>>2]=U;Qe(V,161328,T)}}while(0);Of(h);S=c[E>>2]|0;if((S|0)!=8){c[R>>2]=S;c[Q+4>>2]=8;Qe(0,162256,Q);tc()}Z=c[l>>2]|0;Yu(jd[c[(c[Z>>2]|0)+72>>2]&511](Z)|0,161368,f,0)|0;if((c[j>>2]|0)==7){Z=c[a+8>>2]|0;Gd[c[(c[Z>>2]|0)+344>>2]&255](Z,c[a+28>>2]|0,c[g>>2]|0)}Q=c[E>>2]|0;if((Q|0)!=8){c[P>>2]=Q;c[O+4>>2]=8;Qe(0,162256,O);tc()}O=c[l>>2]|0;Yu(jd[c[(c[O>>2]|0)+72>>2]&511](O)|0,161376,h,0)|0;O=(c[D>>2]|0)==4;do{if(O){P=c[v>>2]|0;if((Qc(P|0,161384)|0)==0){Z=c[a+8>>2]|0;if(!(jd[c[(c[Z>>2]|0)+36>>2]&511](Z)|0)){break}Q=c[N>>2]|0;b:do{if((Q|0)==0){k=36}else{while(1){if((c[Q+8>>2]|0)==7){if((c[(Zu(c[Q+16>>2]|0,b,m)|0)>>2]|0)!=5){break b}Of(m)}Q=c[Q+112>>2]|0;if((Q|0)==0){k=36;break}}}}while(0);if((k|0)==36){c[L>>2]=b;Qe(-1,159296,M)}L=c[E>>2]|0;if((L|0)==8){Qx(a,m,c[l>>2]|0,0);Of(m);break}else{c[K>>2]=L;c[J+4>>2]=8;Qe(0,162256,J);tc()}}if((Qc(P|0,161392)|0)!=0){if((Qc(P|0,161400)|0)!=0){k=60;break}m=c[E>>2]|0;if((m|0)!=8){c[G>>2]=m;c[H+4>>2]=8;Qe(0,162256,H);tc()}m=c[l>>2]|0;Yu(jd[c[(c[m>>2]|0)+72>>2]&511](m)|0,161408,I,0)|0;m=c[a+8>>2]|0;n=c[(c[m>>2]|0)+364>>2]|0;s=c[E>>2]|0;if((s|0)!=8){c[q>>2]=s;c[r+4>>2]=8;Qe(0,162256,r);tc()}if((c[p>>2]|0)==8){o=c[o>>2]|0}else{o=0}Gd[n&255](m,c[l>>2]|0,o);break}l=c[N>>2]|0;c:do{if((l|0)==0){k=46}else{while(1){if((c[l+8>>2]|0)==7){if((c[(Zu(c[l+16>>2]|0,b,m)|0)>>2]|0)!=5){break c}Of(m)}l=c[l+112>>2]|0;if((l|0)==0){k=46;break}}}}while(0);if((k|0)==46){c[B>>2]=b;Qe(-1,159296,C)}l=a+8|0;Z=c[l>>2]|0;do{if(jd[c[(c[Z>>2]|0)+28>>2]&511](Z)|0){if((c[A>>2]|0)!=9){k=50;break}Z=c[l>>2]|0;Y=c[(c[Z>>2]|0)+360>>2]|0;V=w;W=c[V+4>>2]|0;X=x;c[X>>2]=c[V>>2];c[X+4>>2]=W;$W(y|0,x|0,8)|0;hd[Y&127](Z,z)}else{k=50}}while(0);if((k|0)==50){Rx(a,d)}Of(m)}else{k=60}}while(0);do{if((k|0)==60){k=c[a+120>>2]|0;do{if((k|0)==0){k=-1}else{k=c[k+4>>2]|0;if((c[k+16>>2]|0)!=8){k=-1;break}k=c[k+24>>2]|0;k=jd[c[(c[k>>2]|0)+48>>2]&511](k)|0}}while(0);if(!O){Qe(k,161448,F);break}l=c[D>>2]|0;if((l|0)==4){c[u>>2]=c[v>>2];Qe(k,161416,t);break}else{c[s>>2]=l;c[n+4>>2]=4;Qe(0,162256,n);tc()}}}while(0);Of(h);if((c[j>>2]|0)==7){Z=c[a+8>>2]|0;Gd[c[(c[Z>>2]|0)+348>>2]&255](Z,c[a+28>>2]|0,c[g>>2]|0)}Of(f);Of(d);i=e;return}}while(0);c[W>>2]=b;Qe(-1,159296,X);i=e;return}function hw(a,b,d){a=a|0;b=b|0;d=d|0;d=i;b=i;i=i+8|0;a=c[a+120>>2]|0;do{if((a|0)==0){a=-1}else{a=c[a+4>>2]|0;if((c[a+16>>2]|0)!=8){a=-1;break}a=c[a+24>>2]|0;a=jd[c[(c[a>>2]|0)+48>>2]&511](a)|0}}while(0);Qe(a,162040,b);i=d;return}function iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=i;e=a+116|0;d=c[e>>2]|0;if((d|0)!=0){c[e>>2]=c[d+4>>2];HW(d)}e=c[a+8>>2]|0;hd[c[(c[e>>2]|0)+328>>2]&127](e,c[a+28>>2]|0);i=b;return}function jw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;d=i;f=b+8|0;h=c[f>>2]|0;g=b+28|0;h=Bd[c[(c[h>>2]|0)+304>>2]&255](h,c[g>>2]|0)|0;e=c[f>>2]|0;hd[c[(c[e>>2]|0)+308>>2]&127](e,c[g>>2]|0);a[b+16|0]=0;e=b+15|0;if((a[e]&1)==0){h=e;a[h]=0;i=d;return}if(h){Bx(b,1)}h=c[f>>2]|0;hd[c[(c[h>>2]|0)+84>>2]&127](h,c[g>>2]|0);h=e;a[h]=0;i=d;return}function kw(a,b,d){a=a|0;b=b|0;d=d|0;b=i;d=a+56|0;a=c[d>>2]|0;if((a|0)<=0){i=b;return}c[d>>2]=a+ -1;i=b;return}function lw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;e=i;d=b+28|0;g=c[d>>2]|0;h=c[g+588>>2]|0;a:do{if((c[h+28>>2]|0)>0){h=c[b+116>>2]|0;b:do{if((h|0)!=0){if((a[h]&1)!=0){break a}while(1){h=c[h+4>>2]|0;if((h|0)==0){break b}if((a[h]&1)!=0){break a}}}}while(0);h=c[g+116>>2]|0;if((jd[c[(c[h>>2]|0)+12>>2]&511](h)|0)==10){Bx(b,0);break}else{h=c[b+8>>2]|0;hd[c[(c[h>>2]|0)+216>>2]&127](h,c[d>>2]|0);break}}else{if((a[h]&1)!=0){break}i=e;return}}while(0);g=c[d>>2]|0;h=c[g+588>>2]|0;do{if((c[h+28>>2]|0)>0){f=13}else{if((a[h]&1)!=0){f=13;break}b=b+52|0}}while(0);do{if((f|0)==13){f=b+52|0;if((c[f>>2]|0)==0){b=f;break}TB(g);b=c[b+8>>2]|0;g=c[b>>2]|0;if((c[f>>2]|0)==1){hd[c[g+256>>2]&127](b,c[d>>2]|0);b=f;break}else{hd[c[g+260>>2]&127](b,c[d>>2]|0);b=f;break}}}while(0);c[b>>2]=0;SB(c[d>>2]|0);i=e;return}function mw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0,m=0;e=i;k=i;i=i+16|0;j=k;d=i;i=i+128|0;f=a+28|0;OB(c[f>>2]|0,0);m=c[f>>2]|0;g=FW(4)|0;Ty(g);MB(m,g);a=a+8|0;g=c[a>>2]|0;hd[c[(c[g>>2]|0)+136>>2]&127](g,c[f>>2]|0);g=c[b>>2]|0;if((g+ -1|0)>>>0>=2){c[k>>2]=g;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,162328,j);tc()}b=b+8|0;if((g|0)==1){l=+(c[b>>2]|0)}else{l=+h[b>>3]}m=c[f>>2]|0;c[m+252>>2]=~~(l*65536.0);$W(m+256|0,d|0,124)|0;m=c[a>>2]|0;hd[c[(c[m>>2]|0)+144>>2]&127](m,c[f>>2]|0);i=e;return}function nw(a,b,d){a=a|0;b=b|0;d=d|0;d=i;b=i;i=i+8|0;a=c[a+120>>2]|0;do{if((a|0)==0){a=-1}else{a=c[a+4>>2]|0;if((c[a+16>>2]|0)!=8){a=-1;break}a=c[a+24>>2]|0;a=jd[c[(c[a>>2]|0)+48>>2]&511](a)|0}}while(0);Qe(a,162008,b);i=d;return}function ow(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=i;g=i;i=i+8|0;f=g;e=a+28|0;h=c[b>>2]|0;if((h|0)==1){c[(c[e>>2]|0)+464>>2]=c[b+8>>2];h=c[a+8>>2]|0;hd[c[(c[h>>2]|0)+108>>2]&127](h,c[e>>2]|0);i=d;return}else{c[g>>2]=h;c[f+4>>2]=1;Qe(0,162256,f);tc()}}function pw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;g=i;j=i;i=i+16|0;d=j;f=i;i=i+128|0;k=f;e=a+28|0;OB(c[e>>2]|0,0);n=c[e>>2]|0;l=FW(4)|0;vz(l);MB(n,l);a=a+8|0;l=c[a>>2]|0;hd[c[(c[l>>2]|0)+136>>2]&127](l,c[e>>2]|0);l=0;while(1){m=c[b+(l<<4)>>2]|0;if((m+ -1|0)>>>0>=2){b=3;break}n=b+(l<<4)+8|0;if((m|0)==1){o=+(c[n>>2]|0)}else{o=+h[n>>3]}c[k+(l<<2)>>2]=~~(o*65536.0);l=l+1|0;if((l|0)>=4){b=8;break}}if((b|0)==3){c[j>>2]=m;c[d+4>>2]=1;c[d+8>>2]=2;Qe(0,162328,d);tc()}else if((b|0)==8){$W((c[e>>2]|0)+252|0,f|0,128)|0;n=c[a>>2]|0;hd[c[(c[n>>2]|0)+144>>2]&127](n,c[e>>2]|0);i=g;return}}function qw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0;e=i;j=i;i=i+16|0;k=j;d=a+28|0;f=c[d>>2]|0;g=c[b>>2]|0;if((g+ -1|0)>>>0>=2){c[j>>2]=g;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}b=b+8|0;if((g|0)==1){l=+(c[b>>2]|0)}else{l=+h[b>>3]}h[f+472>>3]=l;k=c[a+8>>2]|0;hd[c[(c[k>>2]|0)+112>>2]&127](k,c[d>>2]|0);i=e;return}function rw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;e=i;d=i;i=i+8|0;f=b+32|0;h=c[b+36>>2]|0;do{if((c[f>>2]|0)>(c[h+(((c[b+40>>2]|0)-h>>2)+ -1<<2)>>2]|0)){h=b+28|0;g=c[h>>2]|0;if((c[g+656>>2]|0)==0){break}g=YB(g)|0;c[h>>2]=g;h=c[b+8>>2]|0;hd[c[(c[h>>2]|0)+84>>2]&127](h,g);c[f>>2]=(c[f>>2]|0)+ -1;i=e;return}}while(0);Qe(-1,162208,d);a[b+18|0]=1;i=e;return}function sw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;g=i;j=i;i=i+16|0;d=j;f=i;i=i+128|0;k=f;e=a+28|0;OB(c[e>>2]|0,0);n=c[e>>2]|0;l=FW(4)|0;gz(l);MB(n,l);a=a+8|0;l=c[a>>2]|0;hd[c[(c[l>>2]|0)+136>>2]&127](l,c[e>>2]|0);l=0;while(1){m=c[b+(l<<4)>>2]|0;if((m+ -1|0)>>>0>=2){b=3;break}n=b+(l<<4)+8|0;if((m|0)==1){o=+(c[n>>2]|0)}else{o=+h[n>>3]}c[k+(l<<2)>>2]=~~(o*65536.0);l=l+1|0;if((l|0)>=3){b=8;break}}if((b|0)==3){c[j>>2]=m;c[d+4>>2]=1;c[d+8>>2]=2;Qe(0,162328,d);tc()}else if((b|0)==8){$W((c[e>>2]|0)+252|0,f|0,128)|0;n=c[a>>2]|0;hd[c[(c[n>>2]|0)+144>>2]&127](n,c[e>>2]|0);i=g;return}}function tw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;e=i;d=b+28|0;g=c[d>>2]|0;h=c[g+588>>2]|0;a:do{if((c[h+28>>2]|0)>0){h=c[b+116>>2]|0;b:do{if((h|0)!=0){if((a[h]&1)!=0){break a}while(1){h=c[h+4>>2]|0;if((h|0)==0){break b}if((a[h]&1)!=0){break a}}}}while(0);h=c[g+120>>2]|0;if((jd[c[(c[h>>2]|0)+12>>2]&511](h)|0)==10){Cx(b);break}else{h=c[b+8>>2]|0;hd[c[(c[h>>2]|0)+212>>2]&127](h,c[d>>2]|0);break}}else{if((a[h]&1)!=0){break}i=e;return}}while(0);g=c[d>>2]|0;h=c[g+588>>2]|0;do{if((c[h+28>>2]|0)>0){f=13}else{if((a[h]&1)!=0){f=13;break}b=b+52|0}}while(0);do{if((f|0)==13){f=b+52|0;if((c[f>>2]|0)==0){b=f;break}TB(g);b=c[b+8>>2]|0;g=c[b>>2]|0;if((c[f>>2]|0)==1){hd[c[g+256>>2]&127](b,c[d>>2]|0);b=f;break}else{hd[c[g+260>>2]&127](b,c[d>>2]|0);b=f;break}}}while(0);c[b>>2]=0;SB(c[d>>2]|0);i=e;return}function uw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;e=i;f=i;i=i+16|0;g=f;m=i;i=i+8|0;k=i;i=i+128|0;l=k;j=a+28|0;o=c[(c[j>>2]|0)+120>>2]|0;if((jd[c[(c[o>>2]|0)+44>>2]&511](o)|0)!=(d|0)){d=c[a+120>>2]|0;do{if((d|0)==0){d=-1}else{d=c[d+4>>2]|0;if((c[d+16>>2]|0)!=8){d=-1;break}d=c[d+24>>2]|0;d=jd[c[(c[d>>2]|0)+48>>2]&511](d)|0}}while(0);Qe(d,160600,m);i=e;return}OB(c[j>>2]|0,0);a:do{if((d|0)>0){m=0;while(1){n=c[b+(m<<4)>>2]|0;if((n+ -1|0)>>>0>=2){break}o=b+(m<<4)+8|0;if((n|0)==1){p=+(c[o>>2]|0)}else{p=+h[o>>3]}c[l+(m<<2)>>2]=~~(p*65536.0);m=m+1|0;if((m|0)>=(d|0)){break a}}c[f>>2]=n;c[g+4>>2]=1;c[g+8>>2]=2;Qe(0,162328,g);tc()}}while(0);$W((c[j>>2]|0)+252|0,k|0,128)|0;o=c[a+8>>2]|0;hd[c[(c[o>>2]|0)+144>>2]&127](o,c[j>>2]|0);i=e;return}function vw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0.0;e=i;l=i;i=i+8|0;k=i;i=i+8|0;g=i;i=i+128|0;j=g;f=a+28|0;m=c[(c[f>>2]|0)+120>>2]|0;if((jd[c[(c[m>>2]|0)+12>>2]&511](m)|0)!=10){m=c[(c[f>>2]|0)+120>>2]|0;if((jd[c[(c[m>>2]|0)+44>>2]&511](m)|0)!=(d|0)){f=c[a+120>>2]|0;do{if((f|0)==0){f=-1}else{f=c[f+4>>2]|0;if((c[f+16>>2]|0)!=8){f=-1;break}f=c[f+24>>2]|0;f=jd[c[(c[f>>2]|0)+48>>2]&511](f)|0}}while(0);Qe(f,160696,l);i=e;return}OB(c[f>>2]|0,0);if((d|0)>0){k=0;do{m=c[b+(k<<4)>>2]|0;if((m+ -1|0)>>>0<2){l=b+(k<<4)+8|0;if((m|0)==1){n=+(c[l>>2]|0)}else{n=+h[l>>3]}c[j+(k<<2)>>2]=~~(n*65536.0)}else{c[j+(k<<2)>>2]=0}k=k+1|0;}while((k|0)<(d|0)&(k|0)<32)}$W((c[f>>2]|0)+252|0,g|0,128)|0;m=c[a+8>>2]|0;hd[c[(c[m>>2]|0)+144>>2]&127](m,c[f>>2]|0);i=e;return}a:do{if((d|0)>1){l=c[(c[(c[f>>2]|0)+120>>2]|0)+4>>2]|0;do{if((l|0)!=0){d=d+ -1|0;if((d|0)!=(jd[c[(c[l>>2]|0)+44>>2]&511](l)|0)){break}if((d|0)>0){k=0;do{m=c[b+(k<<4)>>2]|0;if((m+ -1|0)>>>0<2){l=b+(k<<4)+8|0;if((m|0)==1){n=+(c[l>>2]|0)}else{n=+h[l>>3]}c[j+(k<<2)>>2]=~~(n*65536.0)}else{c[j+(k<<2)>>2]=0}k=k+1|0;}while((k|0)<(d|0)&(k|0)<32)}$W((c[f>>2]|0)+252|0,g|0,128)|0;m=c[a+8>>2]|0;hd[c[(c[m>>2]|0)+144>>2]&127](m,c[f>>2]|0);break a}}while(0);f=c[a+120>>2]|0;do{if((f|0)==0){f=-1}else{f=c[f+4>>2]|0;if((c[f+16>>2]|0)!=8){f=-1;break}f=c[f+24>>2]|0;f=jd[c[(c[f>>2]|0)+48>>2]&511](f)|0}}while(0);Qe(f,160696,k);i=e;return}else{d=d+ -1|0}}while(0);if((c[b+(d<<4)>>2]|0)!=4){i=e;return}b=ox(c[a+20>>2]|0,c[b+(d<<4)+8>>2]|0,a)|0;if((b|0)==0){i=e;return}OB(c[f>>2]|0,b);i=e;return}function ww(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,j=0;d=i;b=a+28|0;e=c[b>>2]|0;g=+h[e+608>>3];j=e+616|0;f=+h[j>>3]- +h[e+568>>3];h[j>>3]=f;h[e+592>>3]=+h[e+528>>3]+(g*+h[e+496>>3]+f*+h[e+512>>3]);h[e+600>>3]=+h[e+536>>3]+(g*+h[e+504>>3]+f*+h[e+520>>3]);a=c[a+8>>2]|0;hd[c[(c[a>>2]|0)+204>>2]&127](a,c[b>>2]|0);i=d;return}function xw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0;e=i;g=i;i=i+16|0;j=g;m=i;i=i+16|0;n=m;d=a+28|0;f=c[d>>2]|0;k=+h[f+608>>3];l=c[b>>2]|0;if((l+ -1|0)>>>0>=2){c[m>>2]=l;c[n+4>>2]=1;c[n+8>>2]=2;Qe(0,162328,n);tc()}m=b+8|0;if((l|0)==1){o=+(c[m>>2]|0)}else{o=+h[m>>3]}k=k+o;l=c[b+16>>2]|0;if((l+ -1|0)>>>0>=2){c[g>>2]=l;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,162328,j);tc()}b=b+24|0;if((l|0)==1){o=+(c[b>>2]|0)}else{o=+h[b>>3]}h[f+568>>3]=-0.0-o;n=c[d>>2]|0;m=n+616|0;o=o+ +h[m>>3];h[n+608>>3]=k;h[m>>3]=o;h[n+592>>3]=+h[n+528>>3]+(k*+h[n+496>>3]+o*+h[n+512>>3]);h[n+600>>3]=+h[n+536>>3]+(k*+h[n+504>>3]+o*+h[n+520>>3]);n=c[a+8>>2]|0;hd[c[(c[n>>2]|0)+204>>2]&127](n,c[d>>2]|0);i=e;return}function yw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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.0,v=0;e=i;m=i;i=i+8|0;n=i;i=i+16|0;f=n;q=i;i=i+8|0;p=q;o=i;i=i+8|0;l=i;i=i+16|0;j=l;c[l>>2]=13;k=j+8|0;c[k>>2]=0;c[k+4>>2]=0;g=b+28|0;r=c[g>>2]|0;if((c[r+484>>2]|0)==0){b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);Qe(b,161168,o);i=e;return}s=b+48|0;o=b+8|0;if((a[s]&1)!=0){v=c[o>>2]|0;hd[c[(c[v>>2]|0)+176>>2]&127](v,r);a[s]=0;r=c[g>>2]|0}s=c[o>>2]|0;hd[c[(c[s>>2]|0)+268>>2]&127](s,r);r=c[(c[g>>2]|0)+484>>2]|0;r=jd[c[(c[r>>2]|0)+8>>2]&511](r)|0;s=c[d>>2]|0;if((s|0)!=6){c[q>>2]=s;c[p+4>>2]=6;Qe(0,162256,p);tc()}p=c[d+8>>2]|0;d=p+12|0;a:do{if((c[d>>2]|0)>0){r=(r|0)==0;q=b+120|0;s=0;b:while(1){ut(p,s,j)|0;v=c[l>>2]|0;do{if((v+ -1|0)>>>0<2){t=c[g>>2]|0;if((v|0)==1){u=+(c[k>>2]|0)}else{u=+h[k>>3]}u=u*-.001*+S(+(+h[t+488>>3]));if(r){VB(t,u,0.0)}else{VB(t,0.0,u)}t=c[o>>2]|0;v=c[l>>2]|0;if((v+ -1|0)>>>0>=2){break b}if((v|0)==1){u=+(c[k>>2]|0)}else{u=+h[k>>3]}Id[c[(c[t>>2]|0)+208>>2]&3](t,c[g>>2]|0,u)}else{if((v|0)==3){Ox(b,c[k>>2]|0);break}t=c[q>>2]|0;do{if((t|0)==0){t=-1}else{t=c[t+4>>2]|0;if((c[t+16>>2]|0)!=8){t=-1;break}t=c[t+24>>2]|0;t=jd[c[(c[t>>2]|0)+48>>2]&511](t)|0}}while(0);Qe(t,161192,m)}}while(0);Of(j);s=s+1|0;if((s|0)>=(c[d>>2]|0)){break a}}c[n>>2]=v;c[f+4>>2]=1;c[f+8>>2]=2;Qe(0,162328,f);tc()}}while(0);v=c[o>>2]|0;hd[c[(c[v>>2]|0)+272>>2]&127](v,c[g>>2]|0);i=e;return}function zw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0.0;d=i;g=i;i=i+16|0;f=g;a=c[a+28>>2]|0;e=c[b>>2]|0;if((e+ -1|0)>>>0>=2){c[g>>2]=e;c[f+4>>2]=1;c[f+8>>2]=2;Qe(0,162328,f);tc()}b=b+8|0;if((e|0)==1){j=+(c[b>>2]|0);g=a+568|0;h[g>>3]=j;i=d;return}else{j=+h[b>>3];g=a+568|0;h[g>>3]=j;i=d;return}}function Aw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0;e=i;j=i;i=i+16|0;k=j;d=a+28|0;f=c[d>>2]|0;g=c[b>>2]|0;if((g+ -1|0)>>>0>=2){c[j>>2]=g;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}b=b+8|0;if((g|0)==1){l=+(c[b>>2]|0)}else{l=+h[b>>3]}h[f+544>>3]=l;k=c[a+8>>2]|0;hd[c[(c[k>>2]|0)+184>>2]&127](k,c[d>>2]|0);i=e;return}function Bw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0,p=0,q=0.0;e=i;j=i;i=i+16|0;k=j;o=i;i=i+16|0;p=o;d=a+28|0;f=c[d>>2]|0;g=f+608|0;l=+h[g>>3];n=c[b>>2]|0;if((n+ -1|0)>>>0>=2){c[o>>2]=n;c[p+4>>2]=1;c[p+8>>2]=2;Qe(0,162328,p);tc()}o=b+8|0;if((n|0)==1){m=+(c[o>>2]|0)}else{m=+h[o>>3]}m=l+m;n=f+616|0;l=+h[n>>3];o=c[b+16>>2]|0;if((o+ -1|0)>>>0>=2){c[j>>2]=o;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}b=b+24|0;if((o|0)==1){q=+(c[b>>2]|0)}else{q=+h[b>>3]}q=l+q;h[g>>3]=m;h[n>>3]=q;h[f+592>>3]=+h[f+528>>3]+(m*+h[f+496>>3]+q*+h[f+512>>3]);h[f+600>>3]=+h[f+536>>3]+(m*+h[f+504>>3]+q*+h[f+520>>3]);p=c[a+8>>2]|0;hd[c[(c[p>>2]|0)+204>>2]&127](p,c[d>>2]|0);i=e;return}function Cw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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.0;e=i;f=i;i=i+16|0;g=f;j=i;i=i+16|0;l=j;o=i;i=i+16|0;n=o;p=i;i=i+16|0;q=p;t=i;i=i+8|0;s=t;u=i;i=i+8|0;w=u;m=c[b+20>>2]|0;v=c[d>>2]|0;if((v|0)!=4){c[u>>2]=v;c[w+4>>2]=4;Qe(0,162256,w);tc()}u=c[d+8>>2]|0;a:do{if((m|0)!=0){v=m;while(1){m=c[v>>2]|0;if((m|0)!=0){m=wy(m,u)|0;if((m|0)!=0){break}}v=c[v+112>>2]|0;if((v|0)==0){break a}}if((a[b+13|0]&1)==0){s=d+16|0}else{p=c[(c[m+8>>2]|0)+28>>2]|0;q=c[m+20>>2]|0;if((q|0)==0){q=161088}else{q=c[q+28>>2]|0}s=d+16|0;t=c[s>>2]|0;if((t+ -1|0)>>>0>=2){c[o>>2]=t;c[n+4>>2]=1;c[n+8>>2]=2;Qe(0,162328,n);tc()}n=d+24|0;if((t|0)==1){x=+(c[n>>2]|0)}else{x=+h[n>>3]}c[j>>2]=p;c[l+4>>2]=q;w=l+8|0;h[k>>3]=x;c[w>>2]=c[k>>2];c[w+4>>2]=c[k+4>>2];Kb(161056,l|0)|0;Fc(c[r>>2]|0)|0}Xx(m);j=c[b+28>>2]|0;l=c[s>>2]|0;if((l+ -1|0)>>>0>=2){c[f>>2]=l;c[g+4>>2]=1;c[g+8>>2]=2;Qe(0,162328,g);tc()}d=d+24|0;if((l|0)==1){x=+(c[d>>2]|0)}else{x=+h[d>>3]}PB(j,m,x);a[b+48|0]=1;i=e;return}}while(0);c[t>>2]=u;Qe(-1,159272,s);f=c[b+28>>2]|0;g=c[d+16>>2]|0;if((g+ -1|0)>>>0>=2){c[p>>2]=g;c[q+4>>2]=1;c[q+8>>2]=2;Qe(0,162328,q);tc()}d=d+24|0;if((g|0)==1){x=+(c[d>>2]|0)}else{x=+h[d>>3]}PB(f,0,x);a[b+48|0]=1;i=e;return}function Dw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;g=i;i=i+8|0;h=g;j=i;i=i+8|0;f=b+28|0;k=c[f>>2]|0;if((c[k+484>>2]|0)==0){b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);Qe(b,161096,j);i=e;return}l=b+48|0;j=b+8|0;if((a[l]&1)!=0){m=c[j>>2]|0;hd[c[(c[m>>2]|0)+176>>2]&127](m,k);a[l]=0;k=c[f>>2]|0}m=c[j>>2]|0;hd[c[(c[m>>2]|0)+268>>2]&127](m,k);k=c[d>>2]|0;if((k|0)!=3){c[g>>2]=k;c[h+4>>2]=3;Qe(0,162256,h);tc()}Ox(b,c[d+8>>2]|0);m=c[j>>2]|0;hd[c[(c[m>>2]|0)+272>>2]&127](m,c[f>>2]|0);i=e;return}function Ew(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0.0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0.0,B=0.0;f=i;k=i;i=i+16|0;j=k;n=i;i=i+16|0;m=n;q=i;i=i+16|0;p=q;s=i;i=i+16|0;r=s;v=i;i=i+16|0;u=v;z=i;i=i+16|0;y=z;g=b+28|0;e=c[g>>2]|0;w=c[d>>2]|0;if((w+ -1|0)>>>0>=2){c[z>>2]=w;c[y+4>>2]=1;c[y+8>>2]=2;Qe(0,162328,y);tc()}y=d+8|0;if((w|0)==1){l=+(c[y>>2]|0)}else{l=+h[y>>3]}w=c[d+16>>2]|0;if((w+ -1|0)>>>0>=2){c[v>>2]=w;c[u+4>>2]=1;c[u+8>>2]=2;Qe(0,162328,u);tc()}u=d+24|0;if((w|0)==1){o=+(c[u>>2]|0)}else{o=+h[u>>3]}u=c[d+32>>2]|0;if((u+ -1|0)>>>0>=2){c[s>>2]=u;c[r+4>>2]=1;c[r+8>>2]=2;Qe(0,162328,r);tc()}r=d+40|0;if((u|0)==1){t=+(c[r>>2]|0)}else{t=+h[r>>3]}r=c[d+48>>2]|0;if((r+ -1|0)>>>0>=2){c[q>>2]=r;c[p+4>>2]=1;c[p+8>>2]=2;Qe(0,162328,p);tc()}p=d+56|0;if((r|0)==1){x=+(c[p>>2]|0)}else{x=+h[p>>3]}p=c[d+64>>2]|0;if((p+ -1|0)>>>0>=2){c[n>>2]=p;c[m+4>>2]=1;c[m+8>>2]=2;Qe(0,162328,m);tc()}m=d+72|0;if((p|0)==1){A=+(c[m>>2]|0)}else{A=+h[m>>3]}m=c[d+80>>2]|0;if((m+ -1|0)>>>0>=2){c[k>>2]=m;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,162328,j);tc()}d=d+88|0;if((m|0)==1){B=+(c[d>>2]|0)}else{B=+h[d>>3]}h[e+496>>3]=l;h[e+504>>3]=o;h[e+512>>3]=t;h[e+520>>3]=x;h[e+528>>3]=A;h[e+536>>3]=B;z=c[g>>2]|0;bX(z+608|0,0,16)|0;h[z+592>>3]=+h[z+528>>3]+(+h[z+496>>3]*0.0+ +h[z+512>>3]*0.0);h[z+600>>3]=+h[z+536>>3]+(+h[z+504>>3]*0.0+ +h[z+520>>3]*0.0);z=b+8|0;y=c[z>>2]|0;hd[c[(c[y>>2]|0)+180>>2]&127](y,c[g>>2]|0);z=c[z>>2]|0;hd[c[(c[z>>2]|0)+204>>2]&127](z,c[g>>2]|0);a[b+48|0]=1;i=f;return}function Fw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;j=i;i=i+8|0;k=j;o=i;i=i+8|0;n=o;f=b+28|0;l=(c[f>>2]|0)+584|0;h=c[l>>2]|0;m=c[d>>2]|0;if((m|0)!=1){c[o>>2]=m;c[n+4>>2]=1;Qe(0,162256,n);tc()}m=d+8|0;c[l>>2]=c[m>>2];d=c[d>>2]|0;if((d|0)!=1){c[j>>2]=d;c[k+4>>2]=1;Qe(0,162256,k);tc()}k=(c[m>>2]&4|0)==0;do{if(k){g=11}else{j=b+15|0;if((a[j]&1)==0){g=11;break}if((a[b+16|0]&1)==0){g=11;break}h=b+8|0;o=c[h>>2]|0;o=Bd[c[(c[o>>2]|0)+304>>2]&255](o,c[f>>2]|0)|0;n=c[h>>2]|0;hd[c[(c[n>>2]|0)+308>>2]&127](n,c[f>>2]|0);if(o){Bx(b,1)}o=c[h>>2]|0;hd[c[(c[o>>2]|0)+84>>2]&127](o,c[f>>2]|0);o=c[h>>2]|0;hd[c[(c[o>>2]|0)+300>>2]&127](o,c[f>>2]|0);o=c[h>>2]|0;hd[c[(c[o>>2]|0)+180>>2]&127](o,c[f>>2]|0);o=c[h>>2]|0;hd[c[(c[o>>2]|0)+204>>2]&127](o,c[f>>2]|0);a[j]=0}}while(0);do{if((g|0)==11){if((h&4|0)==0|k^1){break}g=b+8|0;o=c[g>>2]|0;if(!(Bd[c[(c[o>>2]|0)+40>>2]&255](o,c[f>>2]|0)|0)){break}if((a[b+16|0]&1)==0){break}o=c[g>>2]|0;hd[c[(c[o>>2]|0)+300>>2]&127](o,c[f>>2]|0);a[b+15|0]=1}}while(0);o=c[b+8>>2]|0;hd[c[(c[o>>2]|0)+188>>2]&127](o,c[f>>2]|0);i=e;return}function Gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0;e=i;j=i;i=i+16|0;k=j;d=a+28|0;f=c[d>>2]|0;g=c[b>>2]|0;if((g+ -1|0)>>>0>=2){c[j>>2]=g;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}b=b+8|0;if((g|0)==1){l=+(c[b>>2]|0)}else{l=+h[b>>3]}h[f+576>>3]=l;k=c[a+8>>2]|0;hd[c[(c[k>>2]|0)+192>>2]&127](k,c[d>>2]|0);i=e;return}function Hw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0;e=i;j=i;i=i+16|0;k=j;d=a+28|0;f=c[d>>2]|0;g=c[b>>2]|0;if((g+ -1|0)>>>0>=2){c[j>>2]=g;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}b=b+8|0;if((g|0)==1){l=+(c[b>>2]|0)}else{l=+h[b>>3]}h[f+552>>3]=l;k=c[a+8>>2]|0;hd[c[(c[k>>2]|0)+196>>2]&127](k,c[d>>2]|0);i=e;return}function Iw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0.0;f=i;k=i;i=i+16|0;l=k;e=b+28|0;g=c[e>>2]|0;j=c[d>>2]|0;if((j+ -1|0)>>>0>=2){c[k>>2]=j;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,162328,l);tc()}d=d+8|0;if((j|0)==1){m=+(c[d>>2]|0)}else{m=+h[d>>3]}h[g+560>>3]=m*.01;l=c[b+8>>2]|0;hd[c[(c[l>>2]|0)+200>>2]&127](l,c[e>>2]|0);a[b+48|0]=1;i=f;return}function Jw(a,b,d){a=a|0;b=b|0;d=d|0;c[a+52>>2]=1;i=i;return}function Kw(a,b,d){a=a|0;b=b|0;d=d|0;c[a+52>>2]=2;i=i;return}function Lw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0;e=i;d=b+28|0;g=c[d>>2]|0;j=g+588|0;k=c[j>>2]|0;a:do{if((c[k+28>>2]|0)>0){l=c[b+116>>2]|0;b:do{if((l|0)!=0){if((a[l]&1)!=0){break a}while(1){l=c[l+4>>2]|0;if((l|0)==0){break b}if((a[l]&1)!=0){break a}}}}while(0);xB(k);k=c[j>>2]|0;l=k+28|0;k=k+24|0;j=c[(c[k>>2]|0)+((c[l>>2]|0)+ -1<<2)>>2]|0;h[g+592>>3]=+h[(c[j>>2]|0)+((c[j+12>>2]|0)+ -1<<3)>>3];l=c[(c[k>>2]|0)+((c[l>>2]|0)+ -1<<2)>>2]|0;h[g+600>>3]=+h[(c[l+4>>2]|0)+((c[l+12>>2]|0)+ -1<<3)>>3];l=c[(c[d>>2]|0)+116>>2]|0;if((jd[c[(c[l>>2]|0)+12>>2]&511](l)|0)==10){Bx(b,0)}else{l=c[b+8>>2]|0;hd[c[(c[l>>2]|0)+216>>2]&127](l,c[d>>2]|0)}l=c[(c[d>>2]|0)+120>>2]|0;if((jd[c[(c[l>>2]|0)+12>>2]&511](l)|0)==10){Cx(b);break}else{l=c[b+8>>2]|0;hd[c[(c[l>>2]|0)+212>>2]&127](l,c[d>>2]|0);break}}else{if((a[k]&1)!=0){break}i=e;return}}while(0);g=c[d>>2]|0;j=c[g+588>>2]|0;do{if((c[j+28>>2]|0)>0){f=16}else{if((a[j]&1)!=0){f=16;break}b=b+52|0}}while(0);do{if((f|0)==16){f=b+52|0;if((c[f>>2]|0)==0){b=f;break}TB(g);g=c[b+8>>2]|0;b=c[g>>2]|0;if((c[f>>2]|0)==1){hd[c[b+256>>2]&127](g,c[d>>2]|0);b=f;break}else{hd[c[b+260>>2]&127](g,c[d>>2]|0);b=f;break}}}while(0);c[b>>2]=0;SB(c[d>>2]|0);i=e;return}function Mw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0;e=i;d=b+28|0;g=c[d>>2]|0;j=g+588|0;k=c[j>>2]|0;a:do{if((c[k+28>>2]|0)>0){l=c[b+116>>2]|0;b:do{if((l|0)!=0){if((a[l]&1)!=0){break a}while(1){l=c[l+4>>2]|0;if((l|0)==0){break b}if((a[l]&1)!=0){break a}}}}while(0);xB(k);k=c[j>>2]|0;l=k+28|0;k=k+24|0;j=c[(c[k>>2]|0)+((c[l>>2]|0)+ -1<<2)>>2]|0;h[g+592>>3]=+h[(c[j>>2]|0)+((c[j+12>>2]|0)+ -1<<3)>>3];l=c[(c[k>>2]|0)+((c[l>>2]|0)+ -1<<2)>>2]|0;h[g+600>>3]=+h[(c[l+4>>2]|0)+((c[l+12>>2]|0)+ -1<<3)>>3];l=c[(c[d>>2]|0)+116>>2]|0;if((jd[c[(c[l>>2]|0)+12>>2]&511](l)|0)==10){Bx(b,1)}else{l=c[b+8>>2]|0;hd[c[(c[l>>2]|0)+220>>2]&127](l,c[d>>2]|0)}l=c[(c[d>>2]|0)+120>>2]|0;if((jd[c[(c[l>>2]|0)+12>>2]&511](l)|0)==10){Cx(b);break}else{l=c[b+8>>2]|0;hd[c[(c[l>>2]|0)+212>>2]&127](l,c[d>>2]|0);break}}else{if((a[k]&1)!=0){break}i=e;return}}while(0);g=c[d>>2]|0;j=c[g+588>>2]|0;do{if((c[j+28>>2]|0)>0){f=16}else{if((a[j]&1)!=0){f=16;break}b=b+52|0}}while(0);do{if((f|0)==16){f=b+52|0;if((c[f>>2]|0)==0){b=f;break}TB(g);g=c[b+8>>2]|0;b=c[g>>2]|0;if((c[f>>2]|0)==1){hd[c[b+256>>2]&127](g,c[d>>2]|0);b=f;break}else{hd[c[b+260>>2]&127](g,c[d>>2]|0);b=f;break}}}while(0);c[b>>2]=0;SB(c[d>>2]|0);i=e;return}function Nw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0;e=i;j=i;i=i+16|0;k=j;m=i;i=i+16|0;l=m;p=i;i=i+16|0;o=p;s=i;i=i+16|0;r=s;u=i;i=i+16|0;t=u;y=i;i=i+16|0;x=y;w=i;i=i+8|0;g=c[b+28>>2]|0;f=c[g+588>>2]|0;do{if((c[f+28>>2]|0)<=0){if((a[f]&1)!=0){break}f=c[b+120>>2]|0;do{if((f|0)==0){f=-1}else{f=c[f+4>>2]|0;if((c[f+16>>2]|0)!=8){f=-1;break}f=c[f+24>>2]|0;f=jd[c[(c[f>>2]|0)+48>>2]&511](f)|0}}while(0);Qe(f,160776,w);i=e;return}}while(0);w=c[d>>2]|0;if((w+ -1|0)>>>0>=2){c[y>>2]=w;c[x+4>>2]=1;c[x+8>>2]=2;Qe(0,162328,x);tc()}b=d+8|0;if((w|0)==1){n=+(c[b>>2]|0)}else{n=+h[b>>3]}w=c[d+16>>2]|0;if((w+ -1|0)>>>0>=2){c[u>>2]=w;c[t+4>>2]=1;c[t+8>>2]=2;Qe(0,162328,t);tc()}t=d+24|0;if((w|0)==1){q=+(c[t>>2]|0)}else{q=+h[t>>3]}t=c[d+32>>2]|0;if((t+ -1|0)>>>0>=2){c[s>>2]=t;c[r+4>>2]=1;c[r+8>>2]=2;Qe(0,162328,r);tc()}r=d+40|0;if((t|0)==1){v=+(c[r>>2]|0)}else{v=+h[r>>3]}r=c[d+48>>2]|0;if((r+ -1|0)>>>0>=2){c[p>>2]=r;c[o+4>>2]=1;c[o+8>>2]=2;Qe(0,162328,o);tc()}o=d+56|0;if((r|0)==1){z=+(c[o>>2]|0)}else{z=+h[o>>3]}o=c[d+64>>2]|0;if((o+ -1|0)>>>0>=2){c[m>>2]=o;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,162328,l);tc()}l=d+72|0;if((o|0)==1){A=+(c[l>>2]|0)}else{A=+h[l>>3]}l=c[d+80>>2]|0;if((l+ -1|0)>>>0>=2){c[j>>2]=l;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}d=d+88|0;if((l|0)==1){B=+(c[d>>2]|0)}else{B=+h[d>>3]}h[g+592>>3]=A;h[g+600>>3]=B;wB(f,n,q,v,z,A,B);i=e;return}function Ow(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0.0;g=i;f=i;i=i+16|0;e=f;j=i;i=i+16|0;k=j;l=i;i=i+16|0;m=l;o=i;i=i+16|0;n=o;q=i;i=i+16|0;p=q;r=i;i=i+16|0;s=r;F=i;i=i+16|0;D=F;G=i;i=i+16|0;E=G;B=i;i=i+16|0;C=B;A=i;i=i+16|0;y=A;x=i;i=i+16|0;w=x;u=i;i=i+16|0;M=u;t=b+28|0;z=c[t>>2]|0;v=c[d>>2]|0;if((v+ -1|0)>>>0>=2){c[u>>2]=v;c[M+4>>2]=1;c[M+8>>2]=2;Qe(0,162328,M);tc()}u=d+8|0;if((v|0)==1){H=+(c[u>>2]|0)}else{H=+h[u>>3]}v=d+16|0;M=c[v>>2]|0;if((M+ -1|0)>>>0>=2){c[x>>2]=M;c[w+4>>2]=1;c[w+8>>2]=2;Qe(0,162328,w);tc()}x=d+24|0;if((M|0)==1){I=+(c[x>>2]|0)}else{I=+h[x>>3]}w=d+32|0;M=c[w>>2]|0;if((M+ -1|0)>>>0>=2){c[A>>2]=M;c[y+4>>2]=1;c[y+8>>2]=2;Qe(0,162328,y);tc()}y=d+40|0;if((M|0)==1){J=+(c[y>>2]|0)}else{J=+h[y>>3]}A=d+48|0;M=c[A>>2]|0;if((M+ -1|0)>>>0>=2){c[B>>2]=M;c[C+4>>2]=1;c[C+8>>2]=2;Qe(0,162328,C);tc()}B=d+56|0;if((M|0)==1){K=+(c[B>>2]|0)}else{K=+h[B>>3]}C=d+64|0;M=c[C>>2]|0;if((M+ -1|0)>>>0>=2){c[G>>2]=M;c[E+4>>2]=1;c[E+8>>2]=2;Qe(0,162328,E);tc()}G=d+72|0;if((M|0)==1){L=+(c[G>>2]|0)}else{L=+h[G>>3]}E=d+80|0;M=c[E>>2]|0;if((M+ -1|0)>>>0>=2){c[F>>2]=M;c[D+4>>2]=1;c[D+8>>2]=2;Qe(0,162328,D);tc()}D=d+88|0;if((M|0)==1){N=+(c[D>>2]|0)}else{N=+h[D>>3]}JB(z,H,I,J,K,L,N);z=c[b+8>>2]|0;F=c[(c[z>>2]|0)+92>>2]|0;t=c[t>>2]|0;d=c[d>>2]|0;if((d+ -1|0)>>>0>=2){c[r>>2]=d;c[s+4>>2]=1;c[s+8>>2]=2;Qe(0,162328,s);tc()}if((d|0)==1){H=+(c[u>>2]|0)}else{H=+h[u>>3]}r=c[v>>2]|0;if((r+ -1|0)>>>0>=2){c[q>>2]=r;c[p+4>>2]=1;c[p+8>>2]=2;Qe(0,162328,p);tc()}if((r|0)==1){I=+(c[x>>2]|0)}else{I=+h[x>>3]}p=c[w>>2]|0;if((p+ -1|0)>>>0>=2){c[o>>2]=p;c[n+4>>2]=1;c[n+8>>2]=2;Qe(0,162328,n);tc()}if((p|0)==1){J=+(c[y>>2]|0)}else{J=+h[y>>3]}n=c[A>>2]|0;if((n+ -1|0)>>>0>=2){c[l>>2]=n;c[m+4>>2]=1;c[m+8>>2]=2;Qe(0,162328,m);tc()}if((n|0)==1){K=+(c[B>>2]|0)}else{K=+h[B>>3]}l=c[C>>2]|0;if((l+ -1|0)>>>0>=2){c[j>>2]=l;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}if((l|0)==1){L=+(c[G>>2]|0)}else{L=+h[G>>3]}j=c[E>>2]|0;if((j+ -1|0)>>>0>=2){c[f>>2]=j;c[e+4>>2]=1;c[e+8>>2]=2;Qe(0,162328,e);tc()}if((j|0)==1){N=+(c[D>>2]|0);M=F;Ed[M&3](z,t,H,I,J,K,L,N);M=b+48|0;a[M]=1;i=g;return}else{N=+h[D>>3];M=F;Ed[M&3](z,t,H,I,J,K,L,N);M=b+48|0;a[M]=1;i=g;return}}function Pw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;h=i;i=i+8|0;q=i;i=i+8|0;p=q;l=i;i=i+16|0;k=l;g=i;i=i+128|0;f=g;c[l>>2]=13;n=k+8|0;c[n>>2]=0;m=n+4|0;c[m>>2]=0;o=c[b+20>>2]|0;r=c[d>>2]|0;if((r|0)!=4){c[q>>2]=r;c[p+4>>2]=4;Qe(0,162256,p);tc()}p=c[d+8>>2]|0;a:do{if((o|0)==0){j=8}else{while(1){if((c[o+24>>2]|0)==7){if((c[(Yu(c[o+32>>2]|0,p,k,0)|0)>>2]|0)!=5){break}Of(k)}o=c[o+112>>2]|0;if((o|0)==0){j=8;break a}}if((c[l>>2]|0)==5){j=10;break}d=Jy(k,b)|0}}while(0);if((j|0)==8){c[n>>2]=0;c[m>>2]=0;c[l>>2]=5;j=10}if((j|0)==10){d=Jy(d,b)|0}Of(k);if((d|0)==0){b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);Qe(b,160496,h);i=e;return}h=b+15|0;do{if((a[h]&1)!=0){if((a[b+16|0]&1)==0){break}j=b+8|0;r=c[j>>2]|0;k=b+28|0;r=Bd[c[(c[r>>2]|0)+304>>2]&255](r,c[k>>2]|0)|0;q=c[j>>2]|0;hd[c[(c[q>>2]|0)+308>>2]&127](q,c[k>>2]|0);if(r){Bx(b,1)}r=c[j>>2]|0;hd[c[(c[r>>2]|0)+84>>2]&127](r,c[k>>2]|0)}}while(0);j=b+28|0;NB(c[j>>2]|0,0);LB(c[j>>2]|0,d);k=b+8|0;r=c[k>>2]|0;hd[c[(c[r>>2]|0)+132>>2]&127](r,c[j>>2]|0);hd[c[(c[d>>2]|0)+48>>2]&127](d,f);$W((c[j>>2]|0)+124|0,g|0,128)|0;r=c[k>>2]|0;hd[c[(c[r>>2]|0)+140>>2]&127](r,c[j>>2]|0);if((a[h]&1)!=0){r=c[k>>2]|0;hd[c[(c[r>>2]|0)+300>>2]&127](r,c[j>>2]|0);r=c[k>>2]|0;hd[c[(c[r>>2]|0)+188>>2]&127](r,c[j>>2]|0);r=c[k>>2]|0;hd[c[(c[r>>2]|0)+180>>2]&127](r,c[j>>2]|0);r=c[k>>2]|0;hd[c[(c[r>>2]|0)+204>>2]&127](r,c[j>>2]|0);a[h]=(jd[c[(c[d>>2]|0)+12>>2]&511](d)|0)==10|0;i=e;return}if((a[b+16|0]&1)==0){i=e;return}r=c[k>>2]|0;if(!(Bd[c[(c[r>>2]|0)+40>>2]&255](r,c[j>>2]|0)|0)){i=e;return}r=c[k>>2]|0;hd[c[(c[r>>2]|0)+300>>2]&127](r,c[j>>2]|0);a[h]=1;i=e;return}function Qw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;d=i;f=i;i=i+16|0;g=f;l=i;i=i+16|0;k=l;o=i;i=i+8|0;n=o;j=i;i=i+16|0;m=j;c[j>>2]=13;j=m+8|0;c[j>>2]=0;c[j+4>>2]=0;j=c[b>>2]|0;if((j|0)!=6){c[o>>2]=j;c[n+4>>2]=6;Qe(0,162256,n);tc()}n=c[b+8>>2]|0;j=c[n+12>>2]|0;a:do{if((j|0)==0){e=0}else{o=ye(j,8)|0;if((j|0)>0){p=0}else{e=o;break}while(1){r=ut(n,p,m)|0;q=c[r>>2]|0;if((q+ -1|0)>>>0>=2){break}r=r+8|0;if((q|0)==1){s=+(c[r>>2]|0)}else{s=+h[r>>3]}h[o+(p<<3)>>3]=s;Of(m);p=p+1|0;if((p|0)>=(j|0)){e=o;break a}}c[l>>2]=q;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}}while(0);l=a+28|0;k=c[l>>2]|0;m=c[b+16>>2]|0;if((m+ -1|0)>>>0>=2){c[f>>2]=m;c[g+4>>2]=1;c[g+8>>2]=2;Qe(0,162328,g);tc()}b=b+24|0;if((m|0)==1){s=+(c[b>>2]|0);RB(k,e,j,s);q=a+8|0;q=c[q>>2]|0;p=q;p=c[p>>2]|0;p=p+96|0;p=c[p>>2]|0;r=l;r=c[r>>2]|0;hd[p&127](q,r);i=d;return}else{s=+h[b>>3];RB(k,e,j,s);q=a+8|0;q=c[q>>2]|0;p=q;p=c[p>>2]|0;p=p+96|0;p=c[p>>2]|0;r=l;r=c[r>>2]|0;hd[p&127](q,r);i=d;return}}function Rw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;e=i;g=i;i=i+16|0;j=g;m=i;i=i+16|0;l=m;d=c[a+8>>2]|0;f=c[(c[d>>2]|0)+352>>2]|0;a=c[a+28>>2]|0;k=c[b>>2]|0;if((k+ -1|0)>>>0>=2){c[m>>2]=k;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,162328,l);tc()}l=b+8|0;if((k|0)==1){n=+(c[l>>2]|0)}else{n=+h[l>>3]}k=c[b+16>>2]|0;if((k+ -1|0)>>>0>=2){c[g>>2]=k;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,162328,j);tc()}b=b+24|0;if((k|0)==1){o=+(c[b>>2]|0);m=f;kd[m&1](d,a,n,o);i=e;return}else{o=+h[b>>3];m=f;kd[m&1](d,a,n,o);i=e;return}}function Sw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0;e=i;j=i;i=i+16|0;g=j;k=i;i=i+16|0;l=k;n=i;i=i+16|0;o=n;r=i;i=i+16|0;q=r;t=i;i=i+16|0;s=t;x=i;i=i+16|0;w=x;f=c[a+8>>2]|0;d=c[(c[f>>2]|0)+356>>2]|0;a=c[a+28>>2]|0;v=c[b>>2]|0;if((v+ -1|0)>>>0>=2){c[x>>2]=v;c[w+4>>2]=1;c[w+8>>2]=2;Qe(0,162328,w);tc()}w=b+8|0;if((v|0)==1){m=+(c[w>>2]|0)}else{m=+h[w>>3]}v=c[b+16>>2]|0;if((v+ -1|0)>>>0>=2){c[t>>2]=v;c[s+4>>2]=1;c[s+8>>2]=2;Qe(0,162328,s);tc()}s=b+24|0;if((v|0)==1){p=+(c[s>>2]|0)}else{p=+h[s>>3]}s=c[b+32>>2]|0;if((s+ -1|0)>>>0>=2){c[r>>2]=s;c[q+4>>2]=1;c[q+8>>2]=2;Qe(0,162328,q);tc()}q=b+40|0;if((s|0)==1){u=+(c[q>>2]|0)}else{u=+h[q>>3]}q=c[b+48>>2]|0;if((q+ -1|0)>>>0>=2){c[n>>2]=q;c[o+4>>2]=1;c[o+8>>2]=2;Qe(0,162328,o);tc()}n=b+56|0;if((q|0)==1){y=+(c[n>>2]|0)}else{y=+h[n>>3]}n=c[b+64>>2]|0;if((n+ -1|0)>>>0>=2){c[k>>2]=n;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,162328,l);tc()}k=b+72|0;if((n|0)==1){z=+(c[k>>2]|0)}else{z=+h[k>>3]}k=c[b+80>>2]|0;if((k+ -1|0)>>>0>=2){c[j>>2]=k;c[g+4>>2]=1;c[g+8>>2]=2;Qe(0,162328,g);tc()}b=b+88|0;if((k|0)==1){A=+(c[b>>2]|0);x=d;Ed[x&3](f,a,m,p,u,y,z,A);i=e;return}else{A=+h[b>>3];x=d;Ed[x&3](f,a,m,p,u,y,z,A);i=e;return}}function Tw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;e=i;d=b+28|0;g=c[d>>2]|0;h=c[g+588>>2]|0;a:do{if((c[h+28>>2]|0)>0){h=c[b+116>>2]|0;b:do{if((h|0)!=0){if((a[h]&1)!=0){break a}while(1){h=c[h+4>>2]|0;if((h|0)==0){break b}if((a[h]&1)!=0){break a}}}}while(0);h=c[g+116>>2]|0;if((jd[c[(c[h>>2]|0)+12>>2]&511](h)|0)==10){Bx(b,1);break}else{h=c[b+8>>2]|0;hd[c[(c[h>>2]|0)+220>>2]&127](h,c[d>>2]|0);break}}else{if((a[h]&1)!=0){break}i=e;return}}while(0);g=c[d>>2]|0;h=c[g+588>>2]|0;do{if((c[h+28>>2]|0)>0){f=13}else{if((a[h]&1)!=0){f=13;break}b=b+52|0}}while(0);do{if((f|0)==13){f=b+52|0;if((c[f>>2]|0)==0){b=f;break}TB(g);b=c[b+8>>2]|0;g=c[b>>2]|0;if((c[f>>2]|0)==1){hd[c[g+256>>2]&127](b,c[d>>2]|0);b=f;break}else{hd[c[g+260>>2]&127](b,c[d>>2]|0);b=f;break}}}while(0);c[b>>2]=0;SB(c[d>>2]|0);i=e;return}function Uw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0;e=i;k=i;i=i+16|0;j=k;g=i;i=i+128|0;f=b+15|0;do{if((a[f]&1)!=0){if((a[b+16|0]&1)==0){break}l=b+8|0;o=c[l>>2]|0;m=b+28|0;o=Bd[c[(c[o>>2]|0)+304>>2]&255](o,c[m>>2]|0)|0;p=c[l>>2]|0;hd[c[(c[p>>2]|0)+308>>2]&127](p,c[m>>2]|0);if(o){Bx(b,1)}p=c[l>>2]|0;hd[c[(c[p>>2]|0)+84>>2]&127](p,c[m>>2]|0)}}while(0);l=b+28|0;NB(c[l>>2]|0,0);p=c[l>>2]|0;m=FW(4)|0;Ty(m);LB(p,m);b=b+8|0;m=c[b>>2]|0;hd[c[(c[m>>2]|0)+132>>2]&127](m,c[l>>2]|0);m=c[d>>2]|0;if((m+ -1|0)>>>0>=2){c[k>>2]=m;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,162328,j);tc()}d=d+8|0;if((m|0)==1){n=+(c[d>>2]|0)}else{n=+h[d>>3]}p=c[l>>2]|0;c[p+124>>2]=~~(n*65536.0);$W(p+128|0,g|0,124)|0;p=c[b>>2]|0;hd[c[(c[p>>2]|0)+140>>2]&127](p,c[l>>2]|0);if((a[f]&1)==0){i=e;return}p=c[b>>2]|0;hd[c[(c[p>>2]|0)+300>>2]&127](p,c[l>>2]|0);p=c[b>>2]|0;hd[c[(c[p>>2]|0)+188>>2]&127](p,c[l>>2]|0);p=c[b>>2]|0;hd[c[(c[p>>2]|0)+180>>2]&127](p,c[l>>2]|0);p=c[b>>2]|0;hd[c[(c[p>>2]|0)+204>>2]&127](p,c[l>>2]|0);a[f]=0;i=e;return}function Vw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=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,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,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,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Ib=0,Jb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0.0;f=i;aa=i;i=i+8|0;ba=aa;l=i;i=i+16|0;k=l;o=i;i=i+8|0;n=o;s=i;i=i+8|0;q=s;u=i;i=i+8|0;w=i;i=i+8|0;v=w;A=i;i=i+8|0;z=A;C=i;i=i+8|0;B=C;E=i;i=i+16|0;D=E;F=i;i=i+8|0;G=F;I=i;i=i+8|0;H=I;J=i;i=i+8|0;K=J;M=i;i=i+8|0;L=M;N=i;i=i+8|0;O=N;P=i;i=i+16|0;Q=P;S=i;i=i+8|0;R=S;ja=i;i=i+8|0;W=i;i=i+16|0;X=W;ca=i;i=i+8|0;_=ca;ea=i;i=i+8|0;da=ea;ha=i;i=i+8|0;ia=ha;la=i;i=i+8|0;ka=la;na=i;i=i+8|0;ma=na;Ya=i;i=i+8|0;Ja=i;i=i+8|0;Ga=i;i=i+8|0;wa=i;i=i+8|0;sa=wa;Ba=i;i=i+8|0;Ca=Ba;Ea=i;i=i+8|0;Fa=Ea;Ia=i;i=i+8|0;Ha=Ia;La=i;i=i+8|0;Ka=La;Na=i;i=i+8|0;Ma=Na;Qa=i;i=i+8|0;Ra=Qa;Sa=i;i=i+8|0;Ta=Sa;Va=i;i=i+8|0;Ua=Va;Wa=i;i=i+8|0;Xa=i;i=i+8|0;Za=Xa;$a=i;i=i+8|0;_a=$a;bb=i;i=i+8|0;ab=bb;db=i;i=i+8|0;cb=db;fb=i;i=i+8|0;eb=fb;hb=i;i=i+8|0;gb=hb;mb=i;i=i+8|0;lb=i;i=i+8|0;kb=lb;ob=i;i=i+8|0;pb=ob;rb=i;i=i+8|0;qb=rb;sb=i;i=i+8|0;tb=sb;vb=i;i=i+8|0;ub=vb;xb=i;i=i+8|0;wb=xb;yb=i;i=i+8|0;zb=yb;Bb=i;i=i+8|0;Ab=Bb;Db=i;i=i+8|0;Cb=Db;Eb=i;i=i+8|0;Fb=Eb;Ib=i;i=i+16|0;Gb=Ib;Lb=i;i=i+8|0;Jb=Lb;Nb=i;i=i+16|0;Mb=Nb;Ob=i;i=i+8|0;Pb=Ob;Qb=i;i=i+8|0;Yb=i;i=i+8|0;Xb=Yb;Zb=i;i=i+8|0;Ub=i;i=i+8|0;Tb=Ub;Sb=i;i=i+8|0;Rb=Sb;$b=i;i=i+8|0;_b=$b;t=i;i=i+16|0;e=t;m=i;i=i+16|0;g=m;Pa=i;i=i+16|0;oa=Pa;Da=i;i=i+16|0;pa=Da;za=i;i=i+16|0;ua=za;Wb=i;i=i+8|0;Vb=Wb;xa=i;i=i+16|0;nb=xa;ta=i;i=i+128|0;ya=ta;fa=i;i=i+16|0;V=fa;Y=i;i=i+16|0;T=Y;ga=i;i=i+16|0;U=ga;$=i;i=i+8|0;y=i;i=i+32|0;x=y;c[t>>2]=13;p=e+8|0;c[p>>2]=0;c[p+4>>2]=0;c[m>>2]=13;j=g+8|0;c[j>>2]=0;c[j+4>>2]=0;c[Pa>>2]=13;Oa=oa+8|0;c[Oa>>2]=0;c[Oa+4>>2]=0;c[Da>>2]=13;Aa=pa+8|0;c[Aa>>2]=0;c[Aa+4>>2]=0;c[za>>2]=13;va=ua+8|0;c[va>>2]=0;c[va+4>>2]=0;Z=c[d>>2]|0;if((Z|0)!=4){c[$b>>2]=Z;c[_b+4>>2]=4;Qe(0,162256,_b);tc()}Z=d+8|0;if(!(qx(c[b+20>>2]|0,c[Z>>2]|0,e)|0)){i=f;return}if((c[t>>2]|0)!=7){b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);g=c[d>>2]|0;if((g|0)!=4){c[Sb>>2]=g;c[Rb+4>>2]=4;Qe(0,162256,Rb);tc()}c[Ub>>2]=c[Z>>2];Qe(b,159760,Tb);Of(e);i=f;return}do{if((a[b+13|0]&1)!=0){Kb(159792,Zb|0)|0;Qf(e,c[r>>2]|0);Hb(10)|0;Rb=c[t>>2]|0;if((Rb|0)==7){break}c[Yb>>2]=Rb;c[Xb+4>>2]=7;Qe(0,162256,Xb);tc()}}while(0);do{if((c[(Yu(c[p>>2]|0,159816,g,0)|0)>>2]|0)!=5){Rb=b+28|0;if(ZB(c[Rb>>2]|0,g,Vb)|0){c[(c[Rb>>2]|0)+388>>2]=c[Wb>>2];$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+148>>2]&127]($b,c[Rb>>2]|0);break}Rb=c[b+120>>2]|0;do{if((Rb|0)==0){Rb=-1}else{Rb=c[Rb+4>>2]|0;if((c[Rb+16>>2]|0)!=8){Rb=-1;break}Rb=c[Rb+24>>2]|0;Rb=jd[c[(c[Rb>>2]|0)+48>>2]&511](Rb)|0}}while(0);Qe(Rb,159824,Qb)}}while(0);Of(g);Qb=c[t>>2]|0;if((Qb|0)!=7){c[Ob>>2]=Qb;c[Pb+4>>2]=7;Qe(0,162256,Pb);tc()}if(((c[(Yu(c[p>>2]|0,159856,g,0)|0)>>2]|0)+ -1|0)>>>0<2){Pb=b+28|0;Ob=c[Pb>>2]|0;Qb=c[m>>2]|0;if((Qb+ -1|0)>>>0>=2){c[Nb>>2]=Qb;c[Mb+4>>2]=1;c[Mb+8>>2]=2;Qe(0,162328,Mb);tc()}if((Qb|0)==1){ac=+(c[j>>2]|0)}else{ac=+h[j>>3]}h[Ob+392>>3]=ac;$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+152>>2]&127]($b,c[Pb>>2]|0)}Of(g);Mb=c[t>>2]|0;if((Mb|0)!=7){c[Lb>>2]=Mb;c[Jb+4>>2]=7;Qe(0,162256,Jb);tc()}if(((c[(Yu(c[p>>2]|0,159864,g,0)|0)>>2]|0)+ -1|0)>>>0<2){Jb=b+28|0;Lb=c[Jb>>2]|0;Mb=c[m>>2]|0;if((Mb+ -1|0)>>>0>=2){c[Ib>>2]=Mb;c[Gb+4>>2]=1;c[Gb+8>>2]=2;Qe(0,162328,Gb);tc()}if((Mb|0)==1){ac=+(c[j>>2]|0)}else{ac=+h[j>>3]}h[Lb+400>>3]=ac;$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+156>>2]&127]($b,c[Jb>>2]|0)}Of(g);Gb=c[t>>2]|0;if((Gb|0)!=7){c[Eb>>2]=Gb;c[Fb+4>>2]=7;Qe(0,162256,Fb);tc()}Eb=(c[(Yu(c[p>>2]|0,159872,g,0)|0)>>2]|0)==0;do{if(Eb){Gb=b+28|0;Fb=c[m>>2]|0;if((Fb|0)==0){a[(c[Gb>>2]|0)+408|0]=a[j]&1;$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+160>>2]&127]($b,c[Gb>>2]|0);break}else{c[Db>>2]=Fb;c[Cb+4>>2]=0;Qe(0,162256,Cb);tc()}}}while(0);Of(g);Cb=c[t>>2]|0;if((Cb|0)!=7){c[Bb>>2]=Cb;c[Ab+4>>2]=7;Qe(0,162256,Ab);tc()}do{if((c[(Yu(c[p>>2]|0,159880,g,0)|0)>>2]|0)==0){Ab=b+28|0;Bb=c[m>>2]|0;if((Bb|0)!=0){c[yb>>2]=Bb;c[zb+4>>2]=0;Qe(0,162256,zb);tc()}a[(c[Ab>>2]|0)+409|0]=a[j]&1;yb=b+8|0;$b=c[yb>>2]|0;hd[c[(c[$b>>2]|0)+164>>2]&127]($b,c[Ab>>2]|0);if(Eb){break}zb=c[m>>2]|0;if((zb|0)==0){a[(c[Ab>>2]|0)+408|0]=a[j]&1;$b=c[yb>>2]|0;hd[c[(c[$b>>2]|0)+160>>2]&127]($b,c[Ab>>2]|0);break}else{c[xb>>2]=zb;c[wb+4>>2]=0;Qe(0,162256,wb);tc()}}}while(0);Of(g);wb=c[t>>2]|0;if((wb|0)!=7){c[vb>>2]=wb;c[ub+4>>2]=7;Qe(0,162256,ub);tc()}do{if((c[(Yu(c[p>>2]|0,159888,g,0)|0)>>2]|0)==0){ub=b+28|0;vb=c[m>>2]|0;if((vb|0)==0){a[(c[ub>>2]|0)+480|0]=a[j]&1;$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+120>>2]&127]($b,c[ub>>2]|0);break}else{c[sb>>2]=vb;c[tb+4>>2]=0;Qe(0,162256,tb);tc()}}}while(0);Of(g);sb=c[t>>2]|0;if((sb|0)!=7){c[rb>>2]=sb;c[qb+4>>2]=7;Qe(0,162256,qb);tc()}do{if((c[(Yu(c[p>>2]|0,159896,g,0)|0)>>2]|0)==5){Of(g);qb=c[t>>2]|0;if((qb|0)==7){Yu(c[p>>2]|0,159904,g,0)|0;break}else{c[ob>>2]=qb;c[pb+4>>2]=7;Qe(0,162256,pb);tc()}}}while(0);pb=c[m>>2]|0;a:do{switch(pb|0){case 6:{jb=71;break};case 5:{break};case 4:{ob=c[j>>2]|0;do{if((Qc(ob|0,159912)|0)!=0){if((Qc(ob|0,159920)|0)==0){break}switch(pb|0){case 6:{jb=71;break a};case 5:{break a};case 8:case 7:case 4:{jb=79;break a};default:{jb=81;break a}}}}while(0);$b=b+28|0;bX(xa|0,0,16)|0;QB(c[$b>>2]|0,nb);_b=c[b+8>>2]|0;hd[c[(c[_b>>2]|0)+168>>2]&127](_b,c[$b>>2]|0);break};case 8:case 7:{jb=79;break};default:{jb=81}}}while(0);do{if((jb|0)==71){if((c[(c[j>>2]|0)+12>>2]|0)==4){mb=6;ob=0}else{jb=81;break}while(1){if((mb|0)!=6){jb=75;break}ut(c[j>>2]|0,ob,oa)|0;$b=nb+(ob<<2)|0;c[$b>>2]=EH(oa)|0;Of(oa);pb=ob+1|0;if((c[$b>>2]|0)==0){ib=ob;break}if((pb|0)>=4){ib=pb;break}mb=c[m>>2]|0;ob=pb}if((jb|0)==75){c[lb>>2]=mb;c[kb+4>>2]=6;Qe(0,162256,kb);tc()}if((ib|0)!=4){break}$b=b+28|0;QB(c[$b>>2]|0,nb);_b=c[b+8>>2]|0;hd[c[(c[_b>>2]|0)+168>>2]&127](_b,c[$b>>2]|0)}else if((jb|0)==79){$b=EH(g)|0;c[xa>>2]=$b;if(($b|0)==0){break}c[nb+12>>2]=0;c[nb+8>>2]=0;c[nb+4>>2]=0;$b=b+28|0;QB(c[$b>>2]|0,nb);_b=c[b+8>>2]|0;hd[c[(c[_b>>2]|0)+168>>2]&127](_b,c[$b>>2]|0)}}while(0);if((jb|0)==81){ib=c[b+120>>2]|0;do{if((ib|0)==0){ib=-1}else{ib=c[ib+4>>2]|0;if((c[ib+16>>2]|0)!=8){ib=-1;break}ib=c[ib+24>>2]|0;ib=jd[c[(c[ib>>2]|0)+48>>2]&511](ib)|0}}while(0);Qe(ib,159936,mb)}Of(g);ib=c[t>>2]|0;if((ib|0)!=7){c[hb>>2]=ib;c[gb+4>>2]=7;Qe(0,162256,gb);tc()}do{if((c[(Yu(c[p>>2]|0,159976,g,0)|0)>>2]|0)==0){gb=b+28|0;hb=c[m>>2]|0;if((hb|0)==0){a[(c[gb>>2]|0)+481|0]=a[j]&1;$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+124>>2]&127]($b,c[gb>>2]|0);break}else{c[fb>>2]=hb;c[eb+4>>2]=0;Qe(0,162256,eb);tc()}}}while(0);Of(g);eb=c[t>>2]|0;if((eb|0)!=7){c[db>>2]=eb;c[cb+4>>2]=7;Qe(0,162256,cb);tc()}do{if((c[(Yu(c[p>>2]|0,159984,g,0)|0)>>2]|0)==0){db=b+28|0;cb=c[m>>2]|0;if((cb|0)==0){a[(c[db>>2]|0)+482|0]=a[j]&1;$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+128>>2]&127]($b,c[db>>2]|0);break}else{c[bb>>2]=cb;c[ab+4>>2]=0;Qe(0,162256,ab);tc()}}}while(0);Of(g);ab=c[t>>2]|0;if((ab|0)!=7){c[$a>>2]=ab;c[_a+4>>2]=7;Qe(0,162256,_a);tc()}b:do{if((c[(Yu(c[p>>2]|0,159992,g,0)|0)>>2]|0)!=5){_a=c[m>>2]|0;do{if((_a|0)==5){break b}else if((_a|0)==4){if((Qc(c[j>>2]|0,16e4)|0)!=0){break}$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+396>>2]&127]($b,c[b+28>>2]|0);break b}else if((_a|0)==7){Ya=Yu(c[j>>2]|0,160008,oa,0)|0;if((c[Ya>>2]|0)==4){Ya=(Qc(c[Ya+8>>2]|0,160016)|0)==0}else{Ya=0}Of(oa);c[xa>>2]=0;_a=c[m>>2]|0;if((_a|0)!=7){c[Xa>>2]=_a;c[Za+4>>2]=7;Qe(0,162256,Za);tc()}do{if((c[(Yu(c[j>>2]|0,159904,oa,0)|0)>>2]|0)!=5){Xa=EH(oa)|0;c[xa>>2]=Xa;if((c[Xa+4>>2]|0)==1){if((c[Xa+8>>2]|0)==1){break}}Xa=c[b+120>>2]|0;do{if((Xa|0)==0){Xa=-1}else{Xa=c[Xa+4>>2]|0;if((c[Xa+16>>2]|0)!=8){Xa=-1;break}Xa=c[Xa+24>>2]|0;Xa=jd[c[(c[Xa>>2]|0)+48>>2]&511](Xa)|0}}while(0);Qe(Xa,160024,Wa);Wa=c[xa>>2]|0;if((Wa|0)!=0){fd[c[(c[Wa>>2]|0)+4>>2]&511](Wa)}c[xa>>2]=0}}while(0);Of(oa);Wa=c[m>>2]|0;if((Wa|0)!=7){c[Va>>2]=Wa;c[Ua+4>>2]=7;Qe(0,162256,Ua);tc()}Ua=(c[(Yu(c[j>>2]|0,160080,oa,0)|0)>>2]|0)==6;c:do{if(Ua){bX(ta|0,0,128)|0;Va=c[Pa>>2]|0;if((Va|0)!=6){_b=Va;$b=Sa;c[$b>>2]=_b;$b=Ta+4|0;c[$b>>2]=6;$b=162256;Qe(0,$b,Ta);tc()}Va=0;while(1){Wa=c[Oa>>2]|0;if(!((Va|0)<(c[Wa+12>>2]|0)&(Va|0)<32)){break c}ut(Wa,Va,pa)|0;Wa=c[Da>>2]|0;if((Wa+ -1|0)>>>0<2){if((Wa|0)==1){ac=+(c[Aa>>2]|0)}else{ac=+h[Aa>>3]}c[ya+(Va<<2)>>2]=~~(ac*65536.0)}Of(pa);Wa=c[Pa>>2]|0;if((Wa|0)==6){Va=Va+1|0}else{break}}$b=Sa;c[$b>>2]=Wa;$b=Ta+4|0;c[$b>>2]=6;$b=162256;Qe(0,$b,Ta);tc()}}while(0);Of(oa);Sa=c[m>>2]|0;if((Sa|0)!=7){c[Qa>>2]=Sa;c[Ra+4>>2]=7;Qe(0,162256,Ra);tc()}if((c[(Yu(c[j>>2]|0,160088,oa,0)|0)>>2]|0)==8){Ja=c[Pa>>2]|0;if((Ja|0)!=8){c[Na>>2]=Ja;c[Ma+4>>2]=8;Qe(0,162256,Ma);tc()}$b=c[Oa>>2]|0;do{if((c[(Yu(jd[c[(c[$b>>2]|0)+72>>2]&511]($b)|0,160096,pa,0)|0)>>2]|0)==7){Ga=c[Da>>2]|0;if((Ga|0)!=7){c[La>>2]=Ga;c[Ka+4>>2]=7;Qe(0,162256,Ka);tc()}if((c[(Yu(c[Aa>>2]|0,160104,ua,0)|0)>>2]|0)==5){Ga=0}else{Ga=Jy(ua,b)|0}Of(ua);Ja=c[Da>>2]|0;if((Ja|0)!=7){c[Ia>>2]=Ja;c[Ha+4>>2]=7;Qe(0,162256,Ha);tc()}do{if((c[(Yu(c[Aa>>2]|0,160112,ua,0)|0)>>2]|0)==0){Ha=c[za>>2]|0;if((Ha|0)==0){ra=(a[va]&1)!=0;break}else{c[Ea>>2]=Ha;c[Fa+4>>2]=0;Qe(0,162256,Fa);tc()}}else{ra=0}}while(0);Of(ua);Da=c[Da>>2]|0;if((Da|0)!=7){c[Ba>>2]=Da;c[Ca+4>>2]=7;Qe(0,162256,Ca);tc()}do{if((c[(Yu(c[Aa>>2]|0,160120,ua,0)|0)>>2]|0)==0){za=c[za>>2]|0;if((za|0)==0){qa=(a[va]&1)!=0;break}else{c[wa>>2]=za;c[sa+4>>2]=0;Qe(0,162256,sa);tc()}}else{qa=0}}while(0);Of(ua);do{if(!Ua){if((Ga|0)==0){bX(ta|0,0,128)|0;break}else{hd[c[(c[Ga>>2]|0)+48>>2]&127](Ga,ya);break}}}while(0);zx(b,oa,Ya,Ga,ra,qa,c[xa>>2]|0,ya);qa=c[xa>>2]|0;if((qa|0)==0){break}fd[c[(c[qa>>2]|0)+4>>2]&511](qa)}else{qa=c[b+120>>2]|0;do{if((qa|0)==0){qa=-1}else{qa=c[qa+4>>2]|0;if((c[qa+16>>2]|0)!=8){qa=-1;break}qa=c[qa+24>>2]|0;qa=jd[c[(c[qa>>2]|0)+48>>2]&511](qa)|0}}while(0);Qe(qa,160128,Ga)}}while(0);Of(pa)}else{pa=c[b+120>>2]|0;do{if((pa|0)==0){pa=-1}else{pa=c[pa+4>>2]|0;if((c[pa+16>>2]|0)!=8){pa=-1;break}pa=c[pa+24>>2]|0;pa=jd[c[(c[pa>>2]|0)+48>>2]&511](pa)|0}}while(0);Qe(pa,160128,Ja)}Of(oa);break b}}while(0);oa=c[b+120>>2]|0;do{if((oa|0)==0){oa=-1}else{oa=c[oa+4>>2]|0;if((c[oa+16>>2]|0)!=8){oa=-1;break}oa=c[oa+24>>2]|0;oa=jd[c[(c[oa>>2]|0)+48>>2]&511](oa)|0}}while(0);Qe(oa,160176,Ya)}}while(0);Of(g);oa=c[t>>2]|0;if((oa|0)!=7){c[na>>2]=oa;c[ma+4>>2]=7;Qe(0,162256,ma);tc()}do{if((c[(Yu(c[p>>2]|0,159192,g,0)|0)>>2]|0)==6){ma=c[m>>2]|0;if((ma|0)!=6){c[la>>2]=ma;c[ka+4>>2]=6;Qe(0,162256,ka);tc()}la=c[j>>2]|0;if((c[la+12>>2]|0)!=2){T=c[b+120>>2]|0;do{if((T|0)==0){T=-1}else{T=c[T+4>>2]|0;if((c[T+16>>2]|0)!=8){T=-1;break}T=c[T+24>>2]|0;T=jd[c[(c[T>>2]|0)+48>>2]&511](T)|0}}while(0);Qe(T,160208,ja);break}c[fa>>2]=13;ka=V+8|0;c[ka>>2]=0;c[ka+4>>2]=0;c[Y>>2]=13;ja=T+8|0;c[ja>>2]=0;c[ja+4>>2]=0;vt(la,0,V)|0;la=c[m>>2]|0;if((la|0)!=6){c[ha>>2]=la;c[ia+4>>2]=6;Qe(0,162256,ia);tc()}ut(c[j>>2]|0,1,T)|0;do{if((c[fa>>2]|0)==9){if(((c[Y>>2]|0)+ -1|0)>>>0>=2){break}c[ga>>2]=13;ha=U+8|0;c[ha>>2]=0;c[ha+4>>2]=0;Nf(V,c[b>>2]|0,U,0)|0;if((c[ga>>2]|0)==7){fa=c[fa>>2]|0;if((fa|0)!=9){c[ea>>2]=fa;c[da+4>>2]=9;Qe(0,162256,da);tc()}d=c[d>>2]|0;if((d|0)!=4){c[ca>>2]=d;c[_+4>>2]=4;Qe(0,162256,_);tc()}$b=c[b>>2]|0;Zb=ka;_b=c[Zb+4>>2]|0;d=c[Z>>2]|0;Z=$;c[Z>>2]=c[Zb>>2];c[Z+4>>2]=_b;Z=c[ha>>2]|0;$W(aa|0,$|0,8)|0;Z=Ux($b,d,ba,Z)|0;d=c[b+28>>2]|0;Y=c[Y>>2]|0;if((Y+ -1|0)>>>0>=2){c[W>>2]=Y;c[X+4>>2]=1;c[X+8>>2]=2;Qe(0,162328,X);tc()}if((Y|0)==1){ac=+(c[ja>>2]|0)}else{ac=+h[ja>>3]}PB(d,Z,ac);a[b+48|0]=1}Of(U)}}while(0);Of(V);Of(T)}}while(0);Of(g);T=c[t>>2]|0;if((T|0)!=7){c[S>>2]=T;c[R+4>>2]=7;Qe(0,162256,R);tc()}if(((c[(Yu(c[p>>2]|0,160256,g,0)|0)>>2]|0)+ -1|0)>>>0<2){R=b+28|0;S=c[R>>2]|0;T=c[m>>2]|0;if((T+ -1|0)>>>0>=2){c[P>>2]=T;c[Q+4>>2]=1;c[Q+8>>2]=2;Qe(0,162328,Q);tc()}if((T|0)==1){ac=+(c[j>>2]|0)}else{ac=+h[j>>3]}h[S+432>>3]=ac;$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+116>>2]&127]($b,c[R>>2]|0)}Of(g);P=c[t>>2]|0;if((P|0)!=7){c[N>>2]=P;c[O+4>>2]=7;Qe(0,162256,O);tc()}do{if((c[(Yu(c[p>>2]|0,160264,g,0)|0)>>2]|0)==1){O=b+28|0;N=c[m>>2]|0;if((N|0)==1){c[(c[O>>2]|0)+464>>2]=c[j>>2];$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+108>>2]&127]($b,c[O>>2]|0);break}else{c[M>>2]=N;c[L+4>>2]=1;Qe(0,162256,L);tc()}}}while(0);Of(g);L=c[t>>2]|0;if((L|0)!=7){c[J>>2]=L;c[K+4>>2]=7;Qe(0,162256,K);tc()}do{if((c[(Yu(c[p>>2]|0,160272,g,0)|0)>>2]|0)==1){J=b+28|0;K=c[m>>2]|0;if((K|0)==1){c[(c[J>>2]|0)+460>>2]=c[j>>2];$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+104>>2]&127]($b,c[J>>2]|0);break}else{c[I>>2]=K;c[H+4>>2]=1;Qe(0,162256,H);tc()}}}while(0);Of(g);H=c[t>>2]|0;if((H|0)!=7){c[F>>2]=H;c[G+4>>2]=7;Qe(0,162256,G);tc()}if(((c[(Yu(c[p>>2]|0,160280,g,0)|0)>>2]|0)+ -1|0)>>>0<2){G=b+28|0;F=c[G>>2]|0;H=c[m>>2]|0;if((H+ -1|0)>>>0>=2){c[E>>2]=H;c[D+4>>2]=1;c[D+8>>2]=2;Qe(0,162328,D);tc()}if((H|0)==1){ac=+(c[j>>2]|0)}else{ac=+h[j>>3]}h[F+472>>3]=ac;$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+112>>2]&127]($b,c[G>>2]|0)}Of(g);D=c[t>>2]|0;if((D|0)!=7){c[C>>2]=D;c[B+4>>2]=7;Qe(0,162256,B);tc()}do{if((c[(Yu(c[p>>2]|0,160288,g,0)|0)>>2]|0)==6){B=c[m>>2]|0;if((B|0)!=6){c[A>>2]=B;c[z+4>>2]=6;Qe(0,162256,z);tc()}z=c[j>>2]|0;if((c[z+12>>2]|0)!=2){v=c[b+120>>2]|0;do{if((v|0)==0){v=-1}else{v=c[v+4>>2]|0;if((c[v+16>>2]|0)!=8){v=-1;break}v=c[v+24>>2]|0;v=jd[c[(c[v>>2]|0)+48>>2]&511](v)|0}}while(0);Qe(v,160296,u);break}c[y>>2]=13;u=x+8|0;c[u>>2]=0;c[u+4>>2]=0;c[x+16>>2]=13;u=x+24|0;c[u>>2]=0;c[u+4>>2]=0;vt(z,0,x)|0;u=x+16|0;z=c[m>>2]|0;if((z|0)!=6){c[w>>2]=z;c[v+4>>2]=6;Qe(0,162256,v);tc()}ut(c[j>>2]|0,1,u)|0;do{if((c[y>>2]|0)==6){if((c[u>>2]|0)!=1){break}Qw(b,x,0)}}while(0);Of(x);Of(u)}}while(0);Of(g);u=c[t>>2]|0;if((u|0)!=7){c[s>>2]=u;c[q+4>>2]=7;Qe(0,162256,q);tc()}Yu(c[p>>2]|0,160344,g,0)|0;Of(g);q=c[t>>2]|0;if((q|0)!=7){c[o>>2]=q;c[n+4>>2]=7;Qe(0,162256,n);tc()}if(((c[(Yu(c[p>>2]|0,160352,g,0)|0)>>2]|0)+ -1|0)>>>0<2){o=b+28|0;n=c[o>>2]|0;m=c[m>>2]|0;if((m+ -1|0)>>>0>=2){c[l>>2]=m;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}if((m|0)==1){ac=+(c[j>>2]|0)}else{ac=+h[j>>3]}c[n+456>>2]=~~ac;$b=c[b+8>>2]|0;hd[c[(c[$b>>2]|0)+100>>2]&127]($b,c[o>>2]|0)}Of(g);Of(e);i=f;return}function Ww(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0;e=i;d=i;i=i+8|0;f=c[b+28>>2]|0;g=f+588|0;j=c[g>>2]|0;do{if((c[j+28>>2]|0)<=0){if((a[j]&1)!=0){break}b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);Qe(b,160872,d);i=e;return}}while(0);xB(j);g=c[g>>2]|0;j=g+28|0;g=g+24|0;b=c[(c[g>>2]|0)+((c[j>>2]|0)+ -1<<2)>>2]|0;h[f+592>>3]=+h[(c[b>>2]|0)+((c[b+12>>2]|0)+ -1<<3)>>3];j=c[(c[g>>2]|0)+((c[j>>2]|0)+ -1<<2)>>2]|0;h[f+600>>3]=+h[(c[j+4>>2]|0)+((c[j+12>>2]|0)+ -1<<3)>>3];i=e;return}function Xw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0;e=i;j=i;i=i+16|0;k=j;d=a+28|0;f=c[d>>2]|0;g=c[b>>2]|0;if((g+ -1|0)>>>0>=2){c[j>>2]=g;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}b=b+8|0;if((g|0)==1){l=+(c[b>>2]|0)}else{l=+h[b>>3]}c[f+456>>2]=~~l;k=c[a+8>>2]|0;hd[c[(c[k>>2]|0)+100>>2]&127](k,c[d>>2]|0);i=e;return}function Yw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=i;g=i;i=i+8|0;f=g;e=a+28|0;h=c[b>>2]|0;if((h|0)==1){c[(c[e>>2]|0)+460>>2]=c[b+8>>2];h=c[a+8>>2]|0;hd[c[(c[h>>2]|0)+104>>2]&127](h,c[e>>2]|0);i=d;return}else{c[g>>2]=h;c[f+4>>2]=1;Qe(0,162256,f);tc()}}function Zw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;m=i;e=i;i=i+16|0;g=e;k=i;i=i+128|0;j=k;l=b+15|0;do{if((a[l]&1)!=0){if((a[b+16|0]&1)==0){break}o=b+8|0;q=c[o>>2]|0;n=b+28|0;q=Bd[c[(c[q>>2]|0)+304>>2]&255](q,c[n>>2]|0)|0;p=c[o>>2]|0;hd[c[(c[p>>2]|0)+308>>2]&127](p,c[n>>2]|0);if(q){Bx(b,1)}q=c[o>>2]|0;hd[c[(c[q>>2]|0)+84>>2]&127](q,c[n>>2]|0)}}while(0);n=b+28|0;NB(c[n>>2]|0,0);q=c[n>>2]|0;o=FW(4)|0;vz(o);LB(q,o);b=b+8|0;o=c[b>>2]|0;hd[c[(c[o>>2]|0)+132>>2]&127](o,c[n>>2]|0);o=0;do{p=c[d+(o<<4)>>2]|0;if((p+ -1|0)>>>0>=2){f=8;break}q=d+(o<<4)+8|0;if((p|0)==1){r=+(c[q>>2]|0)}else{r=+h[q>>3]}c[j+(o<<2)>>2]=~~(r*65536.0);o=o+1|0;}while((o|0)<4);if((f|0)==8){c[e>>2]=p;c[g+4>>2]=1;c[g+8>>2]=2;Qe(0,162328,g);tc()}$W((c[n>>2]|0)+124|0,k|0,128)|0;q=c[b>>2]|0;hd[c[(c[q>>2]|0)+140>>2]&127](q,c[n>>2]|0);if((a[l]&1)==0){i=m;return}q=c[b>>2]|0;hd[c[(c[q>>2]|0)+300>>2]&127](q,c[n>>2]|0);q=c[b>>2]|0;hd[c[(c[q>>2]|0)+188>>2]&127](q,c[n>>2]|0);q=c[b>>2]|0;hd[c[(c[q>>2]|0)+180>>2]&127](q,c[n>>2]|0);q=c[b>>2]|0;hd[c[(c[q>>2]|0)+204>>2]&127](q,c[n>>2]|0);a[l]=0;i=m;return}function _w(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0;e=i;j=i;i=i+16|0;k=j;n=i;i=i+16|0;m=n;l=i;i=i+8|0;f=c[b+28>>2]|0;g=c[f+588>>2]|0;do{if((c[g+28>>2]|0)<=0){if((a[g]&1)!=0){break}f=c[b+120>>2]|0;do{if((f|0)==0){f=-1}else{f=c[f+4>>2]|0;if((c[f+16>>2]|0)!=8){f=-1;break}f=c[f+24>>2]|0;f=jd[c[(c[f>>2]|0)+48>>2]&511](f)|0}}while(0);Qe(f,160744,l);i=e;return}}while(0);l=c[d>>2]|0;if((l+ -1|0)>>>0>=2){c[n>>2]=l;c[m+4>>2]=1;c[m+8>>2]=2;Qe(0,162328,m);tc()}m=d+8|0;if((l|0)==1){o=+(c[m>>2]|0)}else{o=+h[m>>3]}l=c[d+16>>2]|0;if((l+ -1|0)>>>0>=2){c[j>>2]=l;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}d=d+24|0;if((l|0)==1){p=+(c[d>>2]|0)}else{p=+h[d>>3]}h[f+592>>3]=o;h[f+600>>3]=p;vB(g,o,p);i=e;return}function $w(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0,m=0.0;d=i;e=i;i=i+16|0;f=e;k=i;i=i+16|0;j=k;a=c[a+28>>2]|0;g=c[b>>2]|0;if((g+ -1|0)>>>0>=2){c[k>>2]=g;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,162328,j);tc()}j=b+8|0;if((g|0)==1){l=+(c[j>>2]|0)}else{l=+h[j>>3]}g=c[b+16>>2]|0;if((g+ -1|0)>>>0>=2){c[e>>2]=g;c[f+4>>2]=1;c[f+8>>2]=2;Qe(0,162328,f);tc()}b=b+24|0;if((g|0)==1){m=+(c[b>>2]|0);k=a+588|0;k=c[k>>2]|0;j=a+592|0;h[j>>3]=l;j=a+600|0;h[j>>3]=m;uB(k,l,m);i=d;return}else{m=+h[b>>3];k=a+588|0;k=c[k>>2]|0;j=a+592|0;h[j>>3]=l;j=a+600|0;h[j>>3]=m;uB(k,l,m);i=d;return}}function ax(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;e=i;d=b+28|0;g=c[d>>2]|0;h=c[g+588>>2]|0;do{if((c[h+28>>2]|0)>0){f=4}else{if((a[h]&1)!=0){f=4;break}b=b+52|0}}while(0);do{if((f|0)==4){f=b+52|0;if((c[f>>2]|0)==0){b=f;break}TB(g);b=c[b+8>>2]|0;g=c[b>>2]|0;if((c[f>>2]|0)==1){hd[c[g+256>>2]&127](b,c[d>>2]|0);b=f;break}else{hd[c[g+260>>2]&127](b,c[d>>2]|0);b=f;break}}}while(0);c[b>>2]=0;SB(c[d>>2]|0);i=e;return}function bx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;d=i;e=c[a+8>>2]|0;b=a+28|0;hd[c[(c[e>>2]|0)+80>>2]&127](e,c[b>>2]|0);c[b>>2]=XB(c[b>>2]|0)|0;b=a+32|0;c[b>>2]=(c[b>>2]|0)+1;i=d;return}function cx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;d=i;f=i;i=i+16|0;e=f;j=i;i=i+16|0;k=j;n=i;i=i+16|0;l=n;q=i;i=i+16|0;p=q;o=c[b>>2]|0;if((o+ -1|0)>>>0>=2){c[q>>2]=o;c[p+4>>2]=1;c[p+8>>2]=2;Qe(0,162328,p);tc()}p=b+8|0;if((o|0)==1){g=+(c[p>>2]|0)}else{g=+h[p>>3]}o=c[b+16>>2]|0;if((o+ -1|0)>>>0>=2){c[n>>2]=o;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,162328,l);tc()}l=b+24|0;if((o|0)==1){m=+(c[l>>2]|0)}else{m=+h[l>>3]}l=c[b+32>>2]|0;if((l+ -1|0)>>>0>=2){c[j>>2]=l;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}j=b+40|0;if((l|0)==1){r=+(c[j>>2]|0)}else{r=+h[j>>3]}j=c[b+48>>2]|0;if((j+ -1|0)>>>0>=2){c[f>>2]=j;c[e+4>>2]=1;c[e+8>>2]=2;Qe(0,162328,e);tc()}b=b+56|0;if((j|0)==1){s=+(c[b>>2]|0)}else{s=+h[b>>3]}q=a+28|0;o=c[q>>2]|0;p=c[o+588>>2]|0;h[o+592>>3]=g;h[o+600>>3]=m;uB(p,g,m);p=c[q>>2]|0;r=g+r;o=c[p+588>>2]|0;h[p+592>>3]=r;h[p+600>>3]=m;vB(o,r,m);o=c[q>>2]|0;s=m+s;p=c[o+588>>2]|0;h[o+592>>3]=r;h[o+600>>3]=s;vB(p,r,s);p=c[q>>2]|0;o=c[p+588>>2]|0;h[p+592>>3]=g;h[p+600>>3]=s;vB(o,g,s);q=c[q>>2]|0;o=q+588|0;xB(c[o>>2]|0);o=c[o>>2]|0;p=o+28|0;o=o+24|0;n=c[(c[o>>2]|0)+((c[p>>2]|0)+ -1<<2)>>2]|0;h[q+592>>3]=+h[(c[n>>2]|0)+((c[n+12>>2]|0)+ -1<<3)>>3];p=c[(c[o>>2]|0)+((c[p>>2]|0)+ -1<<2)>>2]|0;h[q+600>>3]=+h[(c[p+4>>2]|0)+((c[p+12>>2]|0)+ -1<<3)>>3];i=d;return}function dx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;m=i;e=i;i=i+16|0;g=e;k=i;i=i+128|0;j=k;l=b+15|0;do{if((a[l]&1)!=0){if((a[b+16|0]&1)==0){break}o=b+8|0;q=c[o>>2]|0;n=b+28|0;q=Bd[c[(c[q>>2]|0)+304>>2]&255](q,c[n>>2]|0)|0;p=c[o>>2]|0;hd[c[(c[p>>2]|0)+308>>2]&127](p,c[n>>2]|0);if(q){Bx(b,1)}q=c[o>>2]|0;hd[c[(c[q>>2]|0)+84>>2]&127](q,c[n>>2]|0)}}while(0);n=b+28|0;NB(c[n>>2]|0,0);q=c[n>>2]|0;o=FW(4)|0;gz(o);LB(q,o);b=b+8|0;o=c[b>>2]|0;hd[c[(c[o>>2]|0)+132>>2]&127](o,c[n>>2]|0);o=0;do{p=c[d+(o<<4)>>2]|0;if((p+ -1|0)>>>0>=2){f=8;break}q=d+(o<<4)+8|0;if((p|0)==1){r=+(c[q>>2]|0)}else{r=+h[q>>3]}c[j+(o<<2)>>2]=~~(r*65536.0);o=o+1|0;}while((o|0)<3);if((f|0)==8){c[e>>2]=p;c[g+4>>2]=1;c[g+8>>2]=2;Qe(0,162328,g);tc()}$W((c[n>>2]|0)+124|0,k|0,128)|0;q=c[b>>2]|0;hd[c[(c[q>>2]|0)+140>>2]&127](q,c[n>>2]|0);if((a[l]&1)==0){i=m;return}q=c[b>>2]|0;hd[c[(c[q>>2]|0)+300>>2]&127](q,c[n>>2]|0);q=c[b>>2]|0;hd[c[(c[q>>2]|0)+188>>2]&127](q,c[n>>2]|0);q=c[b>>2]|0;hd[c[(c[q>>2]|0)+180>>2]&127](q,c[n>>2]|0);q=c[b>>2]|0;hd[c[(c[q>>2]|0)+204>>2]&127](q,c[n>>2]|0);a[l]=0;i=m;return}function ex(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function fx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0;e=i;d=b+28|0;j=c[d>>2]|0;g=j+588|0;k=c[g>>2]|0;do{if((c[k+28>>2]|0)<=0){if((a[k]&1)!=0){break}i=e;return}}while(0);xB(k);k=c[g>>2]|0;g=k+28|0;k=k+24|0;l=c[(c[k>>2]|0)+((c[g>>2]|0)+ -1<<2)>>2]|0;h[j+592>>3]=+h[(c[l>>2]|0)+((c[l+12>>2]|0)+ -1<<3)>>3];g=c[(c[k>>2]|0)+((c[g>>2]|0)+ -1<<2)>>2]|0;h[j+600>>3]=+h[(c[g+4>>2]|0)+((c[g+12>>2]|0)+ -1<<3)>>3];g=c[d>>2]|0;a:do{if((c[(c[g+588>>2]|0)+28>>2]|0)>0){j=c[b+116>>2]|0;b:do{if((j|0)!=0){if((a[j]&1)!=0){break a}while(1){j=c[j+4>>2]|0;if((j|0)==0){break b}if((a[j]&1)!=0){break a}}}}while(0);l=c[g+120>>2]|0;if((jd[c[(c[l>>2]|0)+12>>2]&511](l)|0)==10){Cx(b);break}else{l=c[b+8>>2]|0;hd[c[(c[l>>2]|0)+212>>2]&127](l,c[d>>2]|0);break}}}while(0);g=c[d>>2]|0;j=c[g+588>>2]|0;do{if((c[j+28>>2]|0)>0){f=14}else{if((a[j]&1)!=0){f=14;break}b=b+52|0}}while(0);do{if((f|0)==14){f=b+52|0;if((c[f>>2]|0)==0){b=f;break}TB(g);b=c[b+8>>2]|0;g=c[b>>2]|0;if((c[f>>2]|0)==1){hd[c[g+256>>2]&127](b,c[d>>2]|0);b=f;break}else{hd[c[g+260>>2]&127](b,c[d>>2]|0);b=f;break}}}while(0);c[b>>2]=0;SB(c[d>>2]|0);i=e;return}function gx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;e=i;f=i;i=i+16|0;g=f;m=i;i=i+8|0;k=i;i=i+128|0;l=k;j=a+28|0;o=c[(c[j>>2]|0)+116>>2]|0;if((jd[c[(c[o>>2]|0)+44>>2]&511](o)|0)!=(d|0)){d=c[a+120>>2]|0;do{if((d|0)==0){d=-1}else{d=c[d+4>>2]|0;if((c[d+16>>2]|0)!=8){d=-1;break}d=c[d+24>>2]|0;d=jd[c[(c[d>>2]|0)+48>>2]&511](d)|0}}while(0);Qe(d,160552,m);i=e;return}NB(c[j>>2]|0,0);a:do{if((d|0)>0){m=0;while(1){n=c[b+(m<<4)>>2]|0;if((n+ -1|0)>>>0>=2){break}o=b+(m<<4)+8|0;if((n|0)==1){p=+(c[o>>2]|0)}else{p=+h[o>>3]}c[l+(m<<2)>>2]=~~(p*65536.0);m=m+1|0;if((m|0)>=(d|0)){break a}}c[f>>2]=n;c[g+4>>2]=1;c[g+8>>2]=2;Qe(0,162328,g);tc()}}while(0);$W((c[j>>2]|0)+124|0,k|0,128)|0;o=c[a+8>>2]|0;hd[c[(c[o>>2]|0)+140>>2]&127](o,c[j>>2]|0);i=e;return}function hx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0.0;e=i;l=i;i=i+8|0;k=i;i=i+8|0;g=i;i=i+128|0;j=g;f=a+28|0;m=c[(c[f>>2]|0)+116>>2]|0;if((jd[c[(c[m>>2]|0)+12>>2]&511](m)|0)!=10){m=c[(c[f>>2]|0)+116>>2]|0;if((jd[c[(c[m>>2]|0)+44>>2]&511](m)|0)!=(d|0)){f=c[a+120>>2]|0;do{if((f|0)==0){f=-1}else{f=c[f+4>>2]|0;if((c[f+16>>2]|0)!=8){f=-1;break}f=c[f+24>>2]|0;f=jd[c[(c[f>>2]|0)+48>>2]&511](f)|0}}while(0);Qe(f,160648,l);i=e;return}NB(c[f>>2]|0,0);if((d|0)>0){k=0;do{m=c[b+(k<<4)>>2]|0;if((m+ -1|0)>>>0<2){l=b+(k<<4)+8|0;if((m|0)==1){n=+(c[l>>2]|0)}else{n=+h[l>>3]}c[j+(k<<2)>>2]=~~(n*65536.0)}else{c[j+(k<<2)>>2]=0}k=k+1|0;}while((k|0)<(d|0)&(k|0)<32)}$W((c[f>>2]|0)+124|0,g|0,128)|0;m=c[a+8>>2]|0;hd[c[(c[m>>2]|0)+140>>2]&127](m,c[f>>2]|0);i=e;return}a:do{if((d|0)>1){l=c[(c[(c[f>>2]|0)+116>>2]|0)+4>>2]|0;do{if((l|0)!=0){d=d+ -1|0;if((d|0)!=(jd[c[(c[l>>2]|0)+44>>2]&511](l)|0)){break}if((d|0)>0){k=0;do{m=c[b+(k<<4)>>2]|0;if((m+ -1|0)>>>0<2){l=b+(k<<4)+8|0;if((m|0)==1){n=+(c[l>>2]|0)}else{n=+h[l>>3]}c[j+(k<<2)>>2]=~~(n*65536.0)}else{c[j+(k<<2)>>2]=0}k=k+1|0;}while((k|0)<(d|0)&(k|0)<32)}$W((c[f>>2]|0)+124|0,g|0,128)|0;m=c[a+8>>2]|0;hd[c[(c[m>>2]|0)+140>>2]&127](m,c[f>>2]|0);break a}}while(0);f=c[a+120>>2]|0;do{if((f|0)==0){f=-1}else{f=c[f+4>>2]|0;if((c[f+16>>2]|0)!=8){f=-1;break}f=c[f+24>>2]|0;f=jd[c[(c[f>>2]|0)+48>>2]&511](f)|0}}while(0);Qe(f,160648,k);i=e;return}else{d=d+ -1|0}}while(0);if((c[b+(d<<4)>>2]|0)!=4){i=e;return}b=ox(c[a+20>>2]|0,c[b+(d<<4)+8>>2]|0,a)|0;if((b|0)==0){i=e;return}NB(c[f>>2]|0,b);i=e;return}function ix(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0.0;e=i;g=i;i=i+8|0;k=i;i=i+8|0;l=k;j=c[d>>2]|0;if((j|0)!=4){c[k>>2]=j;c[l+4>>2]=4;Qe(0,162256,l);tc()}m=px(c[b+20>>2]|0,c[d+8>>2]|0,b)|0;if((m|0)==0){i=e;return}l=b+28|0;d=c[(c[l>>2]|0)+588>>2]|0;j=FW(40)|0;tB(j,(a[d]&1)!=0,+h[d+8>>3],+h[d+16>>3],c[d+24>>2]|0,c[d+28>>2]|0,c[d+32>>2]|0);d=b+8|0;n=c[d>>2]|0;hd[c[(c[n>>2]|0)+80>>2]&127](n,c[l>>2]|0);n=XB(c[l>>2]|0)|0;c[l>>2]=n;k=b+32|0;c[k>>2]=(c[k>>2]|0)+1;if((a[m+176|0]&1)!=0){v=+h[m+144>>3];x=+h[m+152>>3];w=+h[m+160>>3];t=+h[m+168>>3];s=c[n+588>>2]|0;h[n+592>>3]=v;h[n+600>>3]=x;uB(s,v,x);s=c[l>>2]|0;n=c[s+588>>2]|0;h[s+592>>3]=w;h[s+600>>3]=x;vB(n,w,x);n=c[l>>2]|0;s=c[n+588>>2]|0;h[n+592>>3]=w;h[n+600>>3]=t;vB(s,w,t);s=c[l>>2]|0;n=c[s+588>>2]|0;h[s+592>>3]=v;h[s+600>>3]=t;vB(n,v,t);n=c[l>>2]|0;s=n+588|0;xB(c[s>>2]|0);s=c[s>>2]|0;u=s+28|0;s=s+24|0;r=c[(c[s>>2]|0)+((c[u>>2]|0)+ -1<<2)>>2]|0;h[n+592>>3]=+h[(c[r>>2]|0)+((c[r+12>>2]|0)+ -1<<3)>>3];u=c[(c[s>>2]|0)+((c[u>>2]|0)+ -1<<2)>>2]|0;h[n+600>>3]=+h[(c[u+4>>2]|0)+((c[u+12>>2]|0)+ -1<<3)>>3];TB(c[l>>2]|0);n=c[d>>2]|0;hd[c[(c[n>>2]|0)+256>>2]&127](n,c[l>>2]|0);SB(c[l>>2]|0);n=c[l>>2]|0}q=m+8|0;u=c[q>>2]|0;LB(n,jd[c[(c[u>>2]|0)+8>>2]&511](u)|0);n=c[d>>2]|0;hd[c[(c[n>>2]|0)+132>>2]&127](n,c[l>>2]|0);n=c[d>>2]|0;n=jd[c[(c[n>>2]|0)+404>>2]&511](n)|0;if(n){u=c[d>>2]|0;hd[c[(c[u>>2]|0)+408>>2]&127](u,0)}a:do{switch(c[m+4>>2]|0){case 1:{Fx(b,m);break};case 2:{Gx(b,m);break};case 3:{Hx(b,m);break};case 7:case 6:{o=m+184|0;p=c[o>>2]|0;do{if((p|0)>128){p=3}else{if((p|0)>64){p=2;break}p=(p|0)>16|0}}while(0);r=c[q>>2]|0;r=jd[c[(c[r>>2]|0)+44>>2]&511](r)|0;s=m+316|0;u=(c[s>>2]|0)>0;if(u){q=c[m+188>>2]|0;t=(+h[q+24>>3]- +h[q+16>>3])*.005}else{t=768.0}if((c[o>>2]|0)<=0){break a}q=m+180|0;Nx(b,c[q>>2]|0,r,u?1:r,t,p,m);if((c[o>>2]|0)>1){u=1}else{break a}do{Nx(b,(c[q>>2]|0)+(u*1280|0)|0,r,(c[s>>2]|0)>0?1:r,t,p,m);u=u+1|0;}while((u|0)<(c[o>>2]|0));break};case 5:case 4:{Ix(b,m);break};default:{}}}while(0);if(n){u=c[d>>2]|0;hd[c[(c[u>>2]|0)+408>>2]&127](u,1)}u=c[b+36>>2]|0;do{if((c[k>>2]|0)>(c[u+(((c[b+40>>2]|0)-u>>2)+ -1<<2)>>2]|0)){n=c[l>>2]|0;if((c[n+656>>2]|0)==0){f=25;break}u=YB(n)|0;c[l>>2]=u;s=c[d>>2]|0;hd[c[(c[s>>2]|0)+84>>2]&127](s,u);c[k>>2]=(c[k>>2]|0)+ -1}else{f=25}}while(0);if((f|0)==25){Qe(-1,162208,g);a[b+18|0]=1}GB(c[l>>2]|0,j);fd[c[(c[m>>2]|0)+4>>2]&511](m);i=e;return}function jx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0,w=0.0,x=0.0;e=i;g=i;i=i+16|0;j=g;p=i;i=i+16|0;o=p;r=i;i=i+16|0;s=r;v=i;i=i+16|0;t=v;l=i;i=i+8|0;m=c[b+28>>2]|0;f=c[m+588>>2]|0;do{if((c[f+28>>2]|0)<=0){if((a[f]&1)!=0){break}f=c[b+120>>2]|0;do{if((f|0)==0){f=-1}else{f=c[f+4>>2]|0;if((c[f+16>>2]|0)!=8){f=-1;break}f=c[f+24>>2]|0;f=jd[c[(c[f>>2]|0)+48>>2]&511](f)|0}}while(0);Qe(f,160808,l);i=e;return}}while(0);l=m+592|0;k=+h[l>>3];m=m+600|0;n=+h[m>>3];b=c[d>>2]|0;if((b+ -1|0)>>>0>=2){c[v>>2]=b;c[t+4>>2]=1;c[t+8>>2]=2;Qe(0,162328,t);tc()}t=d+8|0;if((b|0)==1){q=+(c[t>>2]|0)}else{q=+h[t>>3]}t=c[d+16>>2]|0;if((t+ -1|0)>>>0>=2){c[r>>2]=t;c[s+4>>2]=1;c[s+8>>2]=2;Qe(0,162328,s);tc()}r=d+24|0;if((t|0)==1){u=+(c[r>>2]|0)}else{u=+h[r>>3]}r=c[d+32>>2]|0;if((r+ -1|0)>>>0>=2){c[p>>2]=r;c[o+4>>2]=1;c[o+8>>2]=2;Qe(0,162328,o);tc()}o=d+40|0;if((r|0)==1){w=+(c[o>>2]|0)}else{w=+h[o>>3]}o=c[d+48>>2]|0;if((o+ -1|0)>>>0>=2){c[g>>2]=o;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,162328,j);tc()}d=d+56|0;if((o|0)==1){x=+(c[d>>2]|0)}else{x=+h[d>>3]}h[l>>3]=w;h[m>>3]=x;wB(f,k,n,q,u,w,x);i=e;return}function kx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0;e=i;j=i;i=i+16|0;k=j;d=a+28|0;f=c[d>>2]|0;g=c[b>>2]|0;if((g+ -1|0)>>>0>=2){c[j>>2]=g;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}b=b+8|0;if((g|0)==1){l=+(c[b>>2]|0)}else{l=+h[b>>3]}h[f+432>>3]=l;k=c[a+8>>2]|0;hd[c[(c[k>>2]|0)+116>>2]&127](k,c[d>>2]|0);i=e;return}function lx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0.0,v=0.0;e=i;j=i;i=i+16|0;k=j;l=i;i=i+16|0;m=l;o=i;i=i+16|0;p=o;s=i;i=i+16|0;t=s;q=i;i=i+8|0;f=c[b+28>>2]|0;g=c[f+588>>2]|0;do{if((c[g+28>>2]|0)<=0){if((a[g]&1)!=0){break}f=c[b+120>>2]|0;do{if((f|0)==0){f=-1}else{f=c[f+4>>2]|0;if((c[f+16>>2]|0)!=8){f=-1;break}f=c[f+24>>2]|0;f=jd[c[(c[f>>2]|0)+48>>2]&511](f)|0}}while(0);Qe(f,160840,q);i=e;return}}while(0);q=c[d>>2]|0;if((q+ -1|0)>>>0>=2){c[s>>2]=q;c[t+4>>2]=1;c[t+8>>2]=2;Qe(0,162328,t);tc()}s=d+8|0;if((q|0)==1){n=+(c[s>>2]|0)}else{n=+h[s>>3]}q=c[d+16>>2]|0;if((q+ -1|0)>>>0>=2){c[o>>2]=q;c[p+4>>2]=1;c[p+8>>2]=2;Qe(0,162328,p);tc()}o=d+24|0;if((q|0)==1){r=+(c[o>>2]|0)}else{r=+h[o>>3]}o=c[d+32>>2]|0;if((o+ -1|0)>>>0>=2){c[l>>2]=o;c[m+4>>2]=1;c[m+8>>2]=2;Qe(0,162328,m);tc()}l=d+40|0;if((o|0)==1){u=+(c[l>>2]|0)}else{u=+h[l>>3]}l=c[d+48>>2]|0;if((l+ -1|0)>>>0>=2){c[j>>2]=l;c[k+4>>2]=1;c[k+8>>2]=2;Qe(0,162328,k);tc()}d=d+56|0;if((l|0)==1){v=+(c[d>>2]|0)}else{v=+h[d>>3]}h[f+592>>3]=u;h[f+600>>3]=v;wB(g,n,r,u,v,u,v);i=e;return}function mx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;t=i;m=i;i=i+8|0;l=m;v=i;i=i+16|0;j=v;w=i;i=i+16|0;u=w;r=i;i=i+8|0;p=r;f=a+8|0;c[f>>2]=13;F=a+16|0;c[F>>2]=0;D=F+4|0;c[D>>2]=0;q=a+24|0;c[q>>2]=13;x=a+32|0;c[x>>2]=0;y=x+4|0;c[y>>2]=0;n=a+40|0;c[n>>2]=13;z=a+48|0;c[z>>2]=0;A=z+4|0;c[A>>2]=0;k=a+56|0;c[k>>2]=13;B=a+64|0;c[B>>2]=0;C=B+4|0;c[C>>2]=0;h=a+72|0;c[h>>2]=13;E=a+80|0;c[E>>2]=0;G=E+4|0;c[G>>2]=0;rG(a+88|0,2,b);g=a+96|0;c[g>>2]=13;H=a+104|0;c[H>>2]=0;I=H+4|0;c[I>>2]=0;c[v>>2]=13;s=j+8|0;c[s>>2]=0;c[s+4>>2]=0;c[w>>2]=13;o=u+8|0;c[o>>2]=0;c[o+4>>2]=0;c[a>>2]=0;if((d|0)==0){c[F>>2]=0;c[D>>2]=0;c[f>>2]=5;c[x>>2]=0;c[y>>2]=0;c[q>>2]=5;c[z>>2]=0;c[A>>2]=0;c[n>>2]=5;c[B>>2]=0;c[C>>2]=0;c[k>>2]=5;c[E>>2]=0;c[G>>2]=0;c[h>>2]=5;c[H>>2]=0;c[I>>2]=0;c[g>>2]=5;I=a+112|0;c[I>>2]=e;i=t;return}Zu(d,159192,j)|0;x=c[v>>2]|0;if((x|0)==9){Nf(j,b,u,0)|0;do{if((c[w>>2]|0)==7){v=c[v>>2]|0;if((v|0)==9){G=s;H=c[G+4>>2]|0;I=r;c[I>>2]=c[G>>2];c[I+4>>2]=H;I=FW(8)|0;uy(I,b,p,c[o>>2]|0);c[a>>2]=I;break}else{c[m>>2]=v;c[l+4>>2]=9;Qe(0,162256,l);tc()}}}while(0);Of(u)}else if((x|0)==7){I=FW(8)|0;uy(I,b,0,c[s>>2]|0);c[a>>2]=I}Of(j);Yu(d,159200,f,0)|0;Yu(d,159208,q,0)|0;Yu(d,159224,n,0)|0;Yu(d,159232,k,0)|0;Yu(d,159240,h,0)|0;Yu(d,159256,g,0)|0;I=a+112|0;c[I>>2]=e;i=t;return}function nx(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;if((d|0)!=0){vy(d);HW(d)}Of(a+8|0);Of(a+24|0);Of(a+40|0);Of(a+56|0);Of(a+72|0);Of(a+96|0);sG(a+88|0);i=b;return}function ox(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;g=i;i=i+8|0;h=g;j=i;i=i+16|0;e=j;c[j>>2]=13;j=e+8|0;c[j>>2]=0;c[j+4>>2]=0;a:do{if((a|0)!=0){while(1){if((c[a+40>>2]|0)==7){if((c[(Yu(c[a+48>>2]|0,b,e,0)|0)>>2]|0)!=5){break}Of(e)}a=c[a+112>>2]|0;if((a|0)==0){break a}}j=vA(e,d)|0;Of(e);i=f;return j|0}}while(0);c[g>>2]=b;Qe(-1,159352,h);j=0;i=f;return j|0}function px(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;g=i;i=i+8|0;h=g;j=i;i=i+16|0;e=j;c[j>>2]=13;j=e+8|0;c[j>>2]=0;c[j+4>>2]=0;a:do{if((a|0)!=0){while(1){if((c[a+56>>2]|0)==7){if((c[(Yu(c[a+64>>2]|0,b,e,0)|0)>>2]|0)!=5){break}Of(e)}a=c[a+112>>2]|0;if((a|0)==0){break a}}j=BA(e,d)|0;Of(e);i=f;return j|0}}while(0);c[g>>2]=b;Qe(-1,159376,h);j=0;i=f;return j|0}function qx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;h=i;i=i+8|0;j=h;g=i;i=i+8|0;f=g;a:do{if((a|0)!=0){k=a;while(1){if((c[k+72>>2]|0)==7){if((c[(Zu(c[k+80>>2]|0,b,d)|0)>>2]|0)!=5){break}Of(d)}k=c[k+112>>2]|0;if((k|0)==0){break a}}if((c[d>>2]|0)!=9){k=1;i=e;return k|0}b=d+8|0;k=c[b+4>>2]|0;c[g>>2]=c[b>>2];c[g+4>>2]=k;g=a+88|0;if((c[(uG(g,f,d)|0)>>2]|0)!=5){k=1;i=e;return k|0}Of(d);Mf(tG(g,f)|0,d)|0;k=1;i=e;return k|0}}while(0);c[h>>2]=b;Qe(-1,159400,j);k=0;i=e;return k|0}function rx(b,d,e,f,g,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=+k;l=+l;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0;r=i;c[b+36>>2]=0;s=b+40|0;c[s>>2]=0;t=b+44|0;c[t>>2]=0;c[b>>2]=d;c[b+4>>2]=j;a[b+12|0]=0;a[b+13|0]=(uf(c[834]|0)|0)&1;a[b+14|0]=(vf(c[834]|0)|0)&1;a[b+15|0]=0;a[b+16|0]=0;a[b+17|0]=0;c[b+116>>2]=0;c[b+120>>2]=0;d=FW(120)|0;mx(d,c[b>>2]|0,g,0);c[b+20>>2]=d;g=b+8|0;c[g>>2]=e;d=FW(664)|0;DB(d,k,l,m,o,jd[c[(c[e>>2]|0)+8>>2]&511](e)|0);m=b+28|0;c[m>>2]=d;o=b+32|0;c[o>>2]=1;e=c[s>>2]|0;if((e|0)==(c[t>>2]|0)){eu(b+36|0,o)}else{if((e|0)==0){e=0}else{c[e>>2]=1;e=c[s>>2]|0}c[s>>2]=e+4}a[b+48|0]=0;c[b+52>>2]=0;c[b+56>>2]=0;s=c[g>>2]|0;Gd[c[(c[s>>2]|0)+60>>2]&255](s,f,c[m>>2]|0);s=c[g>>2]|0;hd[c[(c[s>>2]|0)+52>>2]&127](s,(c[m>>2]|0)+16|0);s=c[g>>2]|0;hd[c[(c[s>>2]|0)+88>>2]&127](s,c[m>>2]|0);s=c[m>>2]|0;h[b+64>>3]=+h[s+16>>3];h[b+72>>3]=+h[s+24>>3];h[b+80>>3]=+h[s+32>>3];h[b+88>>3]=+h[s+40>>3];h[b+96>>3]=+h[s+48>>3];h[b+104>>3]=+h[s+56>>3];c[b+112>>2]=0;c[b+124>>2]=p;c[b+128>>2]=q;if((n|0)==0){i=r;return}l=+h[n>>3];d=n+8|0;k=+h[d>>3];j=c[s+588>>2]|0;h[s+592>>3]=l;h[s+600>>3]=k;uB(j,l,k);j=c[m>>2]|0;t=n+16|0;k=+h[t>>3];l=+h[d>>3];d=c[j+588>>2]|0;h[j+592>>3]=k;h[j+600>>3]=l;vB(d,k,l);d=c[m>>2]|0;l=+h[t>>3];t=n+24|0;k=+h[t>>3];j=c[d+588>>2]|0;h[d+592>>3]=l;h[d+600>>3]=k;vB(j,l,k);j=c[m>>2]|0;k=+h[n>>3];l=+h[t>>3];t=c[j+588>>2]|0;h[j+592>>3]=k;h[j+600>>3]=l;vB(t,k,l);t=c[m>>2]|0;j=t+588|0;xB(c[j>>2]|0);j=c[j>>2]|0;d=j+28|0;j=j+24|0;o=c[(c[j>>2]|0)+((c[d>>2]|0)+ -1<<2)>>2]|0;h[t+592>>3]=+h[(c[o>>2]|0)+((c[o+12>>2]|0)+ -1<<3)>>3];d=c[(c[j>>2]|0)+((c[d>>2]|0)+ -1<<2)>>2]|0;h[t+600>>3]=+h[(c[d+4>>2]|0)+((c[d+12>>2]|0)+ -1<<3)>>3];TB(c[m>>2]|0);t=c[g>>2]|0;hd[c[(c[t>>2]|0)+256>>2]&127](t,c[m>>2]|0);SB(c[m>>2]|0);i=r;return}function sx(b){b=b|0;var 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;e=i;h=i;i=i+8|0;j=i;i=i+8|0;d=b+40|0;p=c[d>>2]|0;f=b+36|0;n=c[f>>2]|0;g=b+28|0;if((p|0)!=(n|0)){m=b+32|0;l=b+8|0;o=c[m>>2]|0;do{a:do{if((o|0)>(c[n+((p-n>>2)+ -1<<2)>>2]|0)){do{q=c[g>>2]|0;if((c[q+656>>2]|0)==0){break a}o=YB(q)|0;c[g>>2]=o;p=c[l>>2]|0;hd[c[(c[p>>2]|0)+84>>2]&127](p,o);o=(c[m>>2]|0)+ -1|0;c[m>>2]=o;p=c[d>>2]|0;n=c[f>>2]|0;}while((o|0)>(c[n+((p-n>>2)+ -1<<2)>>2]|0))}}while(0);p=p+ -4|0;c[d>>2]=p;}while((p|0)!=(n|0))}if((c[(c[g>>2]|0)+656>>2]|0)!=0){m=b+32|0;l=b+8|0;n=b+18|0;do{Qe(-1,159432,j);q=c[f>>2]|0;do{if((c[m>>2]|0)>(c[q+(((c[d>>2]|0)-q>>2)+ -1<<2)>>2]|0)){o=c[g>>2]|0;if((c[o+656>>2]|0)==0){k=11;break}q=YB(o)|0;c[g>>2]=q;p=c[l>>2]|0;hd[c[(c[p>>2]|0)+84>>2]&127](p,q);c[m>>2]=(c[m>>2]|0)+ -1}else{k=11}}while(0);if((k|0)==11){k=0;Qe(-1,162208,h);a[n]=1}}while((c[(c[g>>2]|0)+656>>2]|0)!=0)}if((a[b+12|0]&1)==0){q=c[b+8>>2]|0;fd[c[(c[q>>2]|0)+64>>2]&511](q)}h=b+20|0;j=c[h>>2]|0;if((j|0)!=0){while(1){k=c[j+112>>2]|0;nx(j);HW(j);c[h>>2]=k;if((k|0)==0){break}else{j=k}}}g=c[g>>2]|0;if((g|0)!=0){EB(g);HW(g)}b=b+116|0;g=c[b>>2]|0;if((g|0)!=0){do{c[b>>2]=c[g+4>>2];HW(g);g=c[b>>2]|0;}while((g|0)!=0)}f=c[f>>2]|0;if((f|0)==0){i=e;return}b=c[d>>2]|0;if((f|0)!=(b|0)){c[d>>2]=b+(~((b+ -4+(0-f)|0)>>>2)<<2)}HW(f);i=e;return}function tx(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;d=i;i=i+8|0;f=b+32|0;h=c[b+36>>2]|0;do{if((c[f>>2]|0)>(c[h+(((c[b+40>>2]|0)-h>>2)+ -1<<2)>>2]|0)){h=b+28|0;g=c[h>>2]|0;if((c[g+656>>2]|0)==0){break}g=YB(g)|0;c[h>>2]=g;h=c[b+8>>2]|0;hd[c[(c[h>>2]|0)+84>>2]&127](h,g);c[f>>2]=(c[f>>2]|0)+ -1;i=e;return}}while(0);Qe(-1,162208,d);a[b+18|0]=1;i=e;return}function ux(a){a=a|0;var b=0,d=0,e=0;b=i;a=a+20|0;e=c[a>>2]|0;d=c[e+112>>2]|0;if((e|0)!=0){nx(e);HW(e)}c[a>>2]=d;i=b;return}function vx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;n=i;i=i+8|0;l=i;i=i+8|0;h=i;i=i+8|0;j=h;g=i;i=i+16|0;f=g;c[g>>2]=13;m=f+8|0;c[m>>2]=0;c[m+4>>2]=0;m=c[b>>2]|0;if((m|0)==6){k=2}else if((m|0)!=8){Qe(-1,159480,n);i=e;return}a:do{if((k|0)==2){m=b+8|0;n=0;while(1){o=c[m>>2]|0;if((n|0)>=(c[o+12>>2]|0)){break a}ut(o,n,f)|0;if((c[g>>2]|0)!=8){break}Of(f);o=c[b>>2]|0;if((o|0)==6){n=n+1|0}else{k=3;break}}if((k|0)==3){c[h>>2]=o;c[j+4>>2]=6;Qe(0,162256,j);tc()}Qe(-1,159480,l);Of(f);i=e;return}}while(0);o=FW(56)|0;n=c[a>>2]|0;f=FW(168)|0;cE(f,n,b);aG(o,n,f,0);f=a+120|0;c[f>>2]=o;wx(a,d);a=c[f>>2]|0;if((a|0)!=0){bG(a);HW(a)}c[f>>2]=0;i=e;return} - - - -function $K(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;do{if((d|b|e|0)<0){a=6}else{if((e|0)==0|(b|0)==0){if((f|0)==0){f=0;a=0;break}hd[c[a+8>>2]&127](a,f);f=0;a=0;break}if((2147483647/(b|0)|0|0)<(e|0)){a=10;break}if((d|0)!=0){d=da(d,b)|0;b=da(e,b)|0;b=pd[c[a+12>>2]&63](a,d,b,f)|0;a=(b|0)==0;f=a?f:b;a=a?64:0;break}b=da(e,b)|0;if((b|0)<=0){f=0;a=b>>31&6;break}f=Bd[c[a+4>>2]&255](a,b)|0;e=(f|0)==0;a=e?64:0;if(e){f=0;break}bX(f|0,0,b|0)|0}}while(0);c[g>>2]=a;i=h;return f|0}function aL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;e=(b|0)==0;do{if(e){j=0;f=4}else{h=(ZW(b|0)|0)+1|0;if((h|0)<=0){j=h;f=4;break}j=Bd[c[a+4>>2]&255](a,h)|0;a=j;j=(j|0)==0?64:0}}while(0);if((f|0)==4){h=j;a=0;j=j>>31&6}if((j|0)!=0|e){h=d;c[h>>2]=j;i=g;return a|0}$W(a|0,b|0,h|0)|0;h=d;c[h>>2]=j;i=g;return a|0}function bL(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=i;a:do{if(d>>>0>1){while(1){g=a[c]|0;if(g<<24>>24==0){break a}c=c+1|0;f=b+1|0;a[b]=g;d=d+ -1|0;if(d>>>0>1){b=f}else{b=f;break}}}}while(0);a[b]=0;i=e;return(a[c]|0)!=0|0}function cL(a){a=a|0;var b=0,c=0;b=i;while(1){c=a+ -1&a;if((c|0)==0){break}else{a=c}}i=b;return a|0}function dL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;a=i;c[e>>2]=0;if((b|0)==0){d=81;i=a;return d|0}d=nL(b,333319,f)|0;i=a;return d|0}function eL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;a=i;c[e>>2]=0;if((b|0)==0){d=81;i=a;return d|0}d=nL(b,333312,f)|0;i=a;return d|0}function fL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;k=i;i=i+32|0;j=k;h=i;i=i+8|0;b=c[a>>2]|0;d=mL(b,d,206480)|0;if((d|0)==0){k=64;i=g;return k|0}c[k>>2]=4;c[j+12>>2]=d;a=xJ(a,j,h)|0;do{if((a|0)==0){a=c[h>>2]|0;if((a|0)==0){f=81;break}f=nL(a,333319,f)|0;h=c[a+28>>2]|0;j=c[a+24>>2]|0;if((j|0)!=0){fd[j&511](a)}hd[c[h+8>>2]&127](h,a);if((f|0)!=0){break}c[e>>2]=d;k=0;i=g;return k|0}else{f=a}}while(0);hd[c[b+8>>2]&127](b,d);k=f;i=g;return k|0}function gL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;b=ZW(d|0)|0;h=b+18|0;a=c[a>>2]|0;do{if((h|0)>0){j=Bd[c[a+4>>2]&255](a,h)|0;k=(j|0)==0;a=k?64:0;if(k){j=0;break}bX(j|0,0,h|0)|0}else{j=0;a=h>>31&6}}while(0);if((a|0)!=0){k=a;i=g;return k|0}$W(j|0,d|0,b|0)|0;$W(j+b|0,206456,18)|0;c[e>>2]=j;c[f>>2]=0;k=0;i=g;return k|0}function hL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;b=ZW(d|0)|0;h=b+6|0;a=c[a>>2]|0;do{if((h|0)>0){j=Bd[c[a+4>>2]&255](a,h)|0;k=(j|0)==0;a=k?64:0;if(k){j=0;break}bX(j|0,0,h|0)|0}else{j=0;a=h>>31&6}}while(0);if((a|0)!=0){k=a;i=g;return k|0}$W(j|0,d|0,b|0)|0;$W(j+b|0,206448,6)|0;c[e>>2]=j;c[f>>2]=0;k=0;i=g;return k|0}function iL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;b=i;d=mL(c[a>>2]|0,d,206432)|0;if((d|0)==0){a=64;i=b;return a|0}c[e>>2]=d;c[f>>2]=0;a=0;i=b;return a|0}function jL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;b=i;d=mL(c[a>>2]|0,d,206416)|0;if((d|0)==0){a=64;i=b;return a|0}c[e>>2]=d;c[f>>2]=0;a=0;i=b;return a|0}function kL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;k=i;i=i+32|0;j=k;h=i;i=i+8|0;b=c[a>>2]|0;d=mL(b,d,206408)|0;if((d|0)==0){k=64;i=g;return k|0}c[k>>2]=4;c[j+12>>2]=d;a=xJ(a,j,h)|0;do{if((a|0)==0){a=c[h>>2]|0;if((a|0)==0){f=81;break}f=nL(a,333319,f)|0;h=c[a+28>>2]|0;j=c[a+24>>2]|0;if((j|0)!=0){fd[j&511](a)}hd[c[h+8>>2]&127](h,a);if((f|0)!=0){break}c[e>>2]=d;k=0;i=g;return k|0}else{f=a}}while(0);hd[c[b+8>>2]&127](b,d);k=f;i=g;return k|0}function lL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;k=i;i=i+32|0;j=k;h=i;i=i+8|0;b=c[a>>2]|0;d=mL(b,d,206392)|0;if((d|0)==0){k=64;i=g;return k|0}c[k>>2]=4;c[j+12>>2]=d;a=xJ(a,j,h)|0;do{if((a|0)==0){a=c[h>>2]|0;if((a|0)==0){f=81;break}f=nL(a,333319,f)|0;h=c[a+28>>2]|0;j=c[a+24>>2]|0;if((j|0)!=0){fd[j&511](a)}hd[c[h+8>>2]&127](h,a);if((f|0)!=0){break}c[e>>2]=d;k=0;i=g;return k|0}else{f=a}}while(0);hd[c[b+8>>2]&127](b,d);k=f;i=g;return k|0}function mL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=ZW(d|0)|0;g=g+1+(ZW(e|0)|0)|0;do{if((g|0)>0){b=Bd[c[b+4>>2]&255](b,g)|0;j=(b|0)==0;h=j?64:0;if(j){b=0;break}bX(b|0,0,g|0)|0}else{b=0;h=g>>31&6}}while(0);if((h|0)!=0){j=0;i=f;return j|0}g=Sa(d|0,47)|0;if((g|0)==0){a[b]=0}else{j=g-d+1|0;hX(b|0,d|0,j|0)|0;a[b+j|0]=0;d=g+1|0}cX(b|0,e|0)|0;cX(b|0,d|0)|0;j=b;i=f;return j|0}function nL(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;m=i;i=i+8|0;h=i;i=i+8|0;g=a+8|0;o=c[g>>2]|0;k=a+4|0;if((o+3|0)>>>0>=(c[k>>2]|0)>>>0){q=85;i=f;return q|0}j=a+20|0;n=c[j>>2]|0;do{if((n|0)==0){n=(c[a>>2]|0)+o|0;if((n|0)==0){p=0}else{l=6}}else{if((pd[n&63](a,o,h,4)|0)==4){o=c[g>>2]|0;n=h;l=6;break}else{q=85;i=f;return q|0}}}while(0);if((l|0)==6){p=(d[n+1|0]|0)<<16|(d[n]|0)<<24|(d[n+2|0]|0)<<8|(d[n+3|0]|0)}n=o+4|0;c[g>>2]=n;if((p|0)!=(b|0)){q=2;i=f;return q|0}if((o+7|0)>>>0>=(c[k>>2]|0)>>>0){q=85;i=f;return q|0}b=c[j>>2]|0;do{if((b|0)==0){c[g>>2]=o+8;o=o+24|0;l=14}else{if((pd[b&63](a,n,h,4)|0)!=4){q=85;i=f;return q|0}n=c[g>>2]|0;o=c[j>>2]|0;c[g>>2]=n+4;b=n+20|0;if((o|0)==0){o=b;l=14;break}q=(pd[o&63](a,b,0,0)|0)==0;o=q?0:85}}while(0);if((l|0)==14){b=o;o=(c[k>>2]|0)>>>0>>0?85:0}if((o|0)!=0){q=o;i=f;return q|0}c[g>>2]=b;if((n+21|0)>>>0>=(c[k>>2]|0)>>>0){q=85;i=f;return q|0}l=c[j>>2]|0;do{if((l|0)==0){m=(c[a>>2]|0)+b|0;if((m|0)!=0){break}c[g>>2]=n+22;q=2;i=f;return q|0}else{if((pd[l&63](a,b,m,2)|0)==2){b=c[g>>2]|0;break}else{q=85;i=f;return q|0}}}while(0);q=(d[m]|0)<<8&65535|(d[m+1|0]|0);p=b+2|0;c[g>>2]=p;m=q&65535;if(q<<16>>16==0){q=2;i=f;return q|0}b=1;a:while(1){if((p+3|0)>>>0>=(c[k>>2]|0)>>>0){o=85;l=49;break}l=c[j>>2]|0;do{if((l|0)==0){n=(c[a>>2]|0)+p|0;if((n|0)!=0){l=30;break}c[g>>2]=p+4;o=p+12|0;l=44}else{if((pd[l&63](a,p,h,4)|0)!=4){o=85;l=49;break a}p=c[g>>2]|0;n=h;l=30}}while(0);do{if((l|0)==30){l=0;q=(d[n+1|0]|0)<<16|(d[n]|0)<<24|(d[n+2|0]|0)<<8|(d[n+3|0]|0);n=p+4|0;c[g>>2]=n;if((q|0)!=2){l=c[j>>2]|0;n=p+12|0;if((l|0)==0){o=n;l=44;break}q=(pd[l&63](a,n,0,0)|0)==0;o=q?0:85;l=45;break}o=c[k>>2]|0;if((p+7|0)>>>0>=o>>>0){break}p=c[j>>2]|0;if((p|0)==0){p=(c[a>>2]|0)+n|0;if((p|0)==0){p=0}else{l=36}}else{if((pd[p&63](a,n,h,4)|0)!=4){break}o=c[k>>2]|0;n=c[g>>2]|0;p=h;l=36}if((l|0)==36){l=0;p=(d[p+1|0]|0)<<16|(d[p]|0)<<24|(d[p+2|0]|0)<<8|(d[p+3|0]|0)}q=n+4|0;c[g>>2]=q;if((n+7|0)>>>0>=o>>>0){break}n=c[j>>2]|0;if((n|0)==0){break a}if((pd[n&63](a,q,h,4)|0)==4){l=40;break a}}}while(0);if((l|0)==44){n=o;o=(c[k>>2]|0)>>>0>>0?85:0;l=45}if((l|0)==45){if((o|0)!=0){l=49;break}c[g>>2]=n}if((b|0)>=(m|0)){o=2;l=49;break}p=c[g>>2]|0;b=b+1|0}if((l|0)==40){q=c[g>>2]|0}else if((l|0)==49){i=f;return o|0}c[g>>2]=q+4;c[e>>2]=p;q=0;i=f;return q|0}function oL(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;k=i;i=i+128|0;j=k;if((e|0)==0){n=85;i=h;return n|0}l=e+20|0;m=c[l>>2]|0;do{if((m|0)!=0){m=(pd[m&63](e,0,0,0)|0)==0;if(m){break}else{g=m?0:85}i=h;return g|0}}while(0);m=e+8|0;c[m>>2]=0;n=c[e+4>>2]|0;if((n|0)==0){n=85;i=h;return n|0}l=c[l>>2]|0;if((l|0)==0){l=n>>>0>128?128:n;$W(k|0,c[e>>2]|0,l|0)|0}else{l=pd[l&63](e,0,j,128)|0}c[m>>2]=l;if(l>>>0<=127){n=85;i=h;return n|0}if((a[k]|0)!=0){n=2;i=h;return n|0}if((a[j+74|0]|0)!=0){n=2;i=h;return n|0}if((a[j+82|0]|0)!=0){n=2;i=h;return n|0}k=a[j+1|0]|0;if(k<<24>>24==0|(k&255)>33){n=2;i=h;return n|0}if((a[j+63|0]|0)!=0){n=2;i=h;return n|0}if((a[j+((k&255)+2)|0]|0)!=0){n=2;i=h;return n|0}n=pL(b,e,(d[j+84|0]<<16|d[j+83|0]<<24|d[j+85|0]<<8|d[j+86|0])+255&-128,f,g)|0;i=h;return n|0}function pL(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;k=i;p=i;i=i+8|0;n=i;i=i+8|0;t=i;i=i+8|0;s=i;i=i+8|0;l=i;i=i+8|0;o=l;q=i;i=i+8|0;r=q;j=c[b>>2]|0;f=BK(0,e,f,t,s)|0;if((f|0)!=0){F=f;i=k;return F|0}t=c[t>>2]|0;s=c[s>>2]|0;if((FK(b,e,t,s,1347375956,o,r)|0)!=0){o=FK(b,e,t,s,1936092788,o,r)|0;if((o|0)!=0){F=o;i=k;return F|0}o=c[q>>2]|0;p=(g|0)%(o|0)|0;s=c[b>>2]|0;f=(p|0)==-1?0:p;p=c[l>>2]|0;a:do{if((f|0)<(o|0)){t=c[p+(f<<2)>>2]|0;r=e+20|0;q=c[r>>2]|0;if((q|0)==0){q=(c[e+4>>2]|0)>>>0>>0?85:0}else{F=(pd[q&63](e,t,0,0)|0)==0;q=F?0:85}if((q|0)!=0){m=q;break}q=e+8|0;c[q>>2]=t;g=e+4|0;if((t+3|0)>>>0>=(c[g>>2]|0)>>>0){m=85;break}u=c[r>>2]|0;do{if((u|0)==0){n=(c[e>>2]|0)+t|0;if((n|0)!=0){u=t;m=77;break}c[q>>2]=t+4;n=0}else{if((pd[u&63](e,t,n,4)|0)!=4){m=85;break a}u=c[q>>2]|0;m=77}}while(0);if((m|0)==77){n=(d[n+1|0]|0)<<16|(d[n]|0)<<24|(d[n+2|0]|0)<<8|(d[n+3|0]|0);c[q>>2]=u+4;if((n|0)==-1){m=1;break}}m=QJ(b,e,f,h)|0;if((m|0)==0){m=0;break}t=t+4|0;f=c[r>>2]|0;if((f|0)==0){f=(c[g>>2]|0)>>>0>>0?85:0}else{F=(pd[f&63](e,t,0,0)|0)==0;f=F?0:85}if((f|0)!=0){break}c[q>>2]=t;do{if((n|0)>0){m=Bd[c[s+4>>2]&255](s,n)|0;t=(m|0)==0;s=t?64:0;if(t){m=0;break}bX(m|0,0,n|0)|0}else{m=0;s=n>>31&6}}while(0);if((s|0)!=0){m=s;break}s=c[q>>2]|0;g=c[g>>2]|0;if(g>>>0<=s>>>0){m=85;break}r=c[r>>2]|0;if((r|0)==0){r=g-s|0;F=r>>>0>n>>>0?n:r;$W(m|0,(c[e>>2]|0)+s|0,F|0)|0;e=F}else{e=pd[r&63](e,s,m,n)|0}c[q>>2]=e+s;if(e>>>0>>0){m=85;break}if((n|0)>4){F=(iX(m|0,206488,4)|0)!=0;e=F?206240:206496}else{e=206240}m=qL(b,m,n,0,e,h)|0}else{m=1}}while(0);if((p|0)!=0){hd[c[j+8>>2]&127](j,p)}c[l>>2]=0;if((m|0)!=0){F=m;i=k;return F|0}c[c[h>>2]>>2]=o;F=0;i=k;return F|0}o=c[l>>2]|0;r=c[q>>2]|0;q=c[b>>2]|0;b:do{if((g|0)==0|(g|0)==-1){f=(r|0)>0;do{if(f){v=e+20|0;g=e+4|0;u=e+8|0;s=0;t=0;do{w=c[o+(s<<2)>>2]|0;x=c[v>>2]|0;if((x|0)==0){C=(c[g>>2]|0)>>>0>>0?85:0}else{F=(pd[x&63](e,w,0,0)|0)==0;C=F?0:85}if((C|0)!=0){break b}c[u>>2]=w;if((w+3|0)>>>0>=(c[g>>2]|0)>>>0){C=85;break b}x=c[v>>2]|0;if((x|0)==0){x=(c[e>>2]|0)+w|0;if((x|0)==0){x=6}else{m=15}}else{if((pd[x&63](e,w,n,4)|0)!=4){C=85;break b}w=c[u>>2]|0;x=n;m=15}if((m|0)==15){m=0;x=((d[x+1|0]|0)<<16|(d[x]|0)<<24|(d[x+2|0]|0)<<8|(d[x+3|0]|0))+6|0}c[u>>2]=w+4;t=x+t|0;s=s+1|0;}while((s|0)<(r|0));u=t+2|0;if((u|0)>0){g=u;m=19;break}g=u;s=0;C=u>>31&6}else{g=2;t=0;m=19}}while(0);do{if((m|0)==19){s=Bd[c[q+4>>2]&255](q,g)|0;u=(s|0)==0;C=u?64:0;if(u){s=0;break}bX(s|0,0,g|0)|0}}while(0);if((C|0)!=0){break}a[s]=-128;a[s+1|0]=1;F=s+2|0;a[F]=0;a[F+1|0]=0;a[F+2|0]=0;a[F+3|0]=0;c:do{if(f){v=e+20|0;f=e+4|0;u=e+8|0;w=0;z=0;y=2;x=6;A=1;do{B=c[o+(w<<2)>>2]|0;C=c[v>>2]|0;if((C|0)==0){C=(c[f>>2]|0)>>>0>>0?85:0}else{F=(pd[C&63](e,B,0,0)|0)==0;C=F?0:85}if((C|0)!=0){break c}c[u>>2]=B;D=c[f>>2]|0;if((B+3|0)>>>0>=D>>>0){C=85;break b}C=c[v>>2]|0;if((C|0)==0){C=(c[e>>2]|0)+B|0;if((C|0)==0){C=B;B=0}else{E=C;m=33}}else{if((pd[C&63](e,B,n,4)|0)!=4){C=85;break b}D=c[f>>2]|0;B=c[u>>2]|0;E=n;m=33}if((m|0)==33){m=0;C=B;B=(d[E+1|0]|0)<<16|(d[E]|0)<<24|(d[E+2|0]|0)<<8|(d[E+3|0]|0)}E=C+4|0;c[u>>2]=E;if((C+5|0)>>>0>=D>>>0){C=85;break b}D=c[v>>2]|0;do{if((D|0)==0){D=(c[e>>2]|0)+E|0;if((D|0)!=0){m=40;break}c[u>>2]=C+6}else{if((pd[D&63](e,E,p,2)|0)!=2){C=85;break b}E=c[u>>2]|0;D=p;m=40}}while(0);do{if((m|0)==40){m=0;C=((d[D]|0)<<8&65535)>>>8;c[u>>2]=E+2;if((C|0)==0){break}B=(B|0)>2?B+ -2|0:0;if((C|0)==(A|0)){z=B+z|0;D=x}else{E=y+3|0;if((E|0)>(g|0)){C=0;break c}F=z&255;a[s+y|0]=F;A=z>>>8&255;a[s+(y+1)|0]=A;D=z>>>16&255;a[s+(y+2)|0]=D;z=z>>>24&255;a[s+E|0]=z;if((C|0)==5){e=z;m=56;break c}y=x+4|0;if((y|0)>(t|0)){C=0;break c}a[s+x|0]=-128;D=x+2|0;a[s+(x+1)|0]=C;a[s+D|0]=0;a[s+(x+3)|0]=0;a[s+y|0]=0;a[s+(x+5)|0]=0;z=B;y=D;D=x+6|0;A=C}if((D|0)>(t|0)){C=1;break c}x=D+B|0;if((x|0)>(t|0)){C=1;break c}D=s+D|0;C=c[u>>2]|0;E=c[f>>2]|0;if(E>>>0<=C>>>0){C=85;break c}F=c[v>>2]|0;if((F|0)==0){E=E-C|0;F=E>>>0>B>>>0?B:E;$W(D|0,(c[e>>2]|0)+C|0,F|0)|0;D=F}else{D=pd[F&63](e,C,D,B)|0}c[u>>2]=D+C;if(D>>>0>>0){C=85;break c}}}while(0);w=w+1|0;}while((w|0)<(r|0));F=z&255;D=z>>>16&255;e=z>>>24&255;A=z>>>8&255;m=56}else{F=0;D=0;e=0;A=0;y=2;x=6;m=56}}while(0);do{if((m|0)==56){if((x|0)>(t|0)){C=0;break}a[s+x|0]=-128;a[s+(x+1)|0]=3;m=y+3|0;if((m|0)>(g|0)){C=0;break}a[s+y|0]=F;a[s+(y+1)|0]=A;a[s+(y+2)|0]=D;a[s+m|0]=e;C=qL(b,s,x+2|0,0,206504,h)|0;break b}}while(0);if((s|0)==0){break}hd[c[q+8>>2]&127](q,s)}else{C=1}}while(0);if((o|0)!=0){hd[c[j+8>>2]&127](j,o)}c[l>>2]=0;if((C|0)!=0){F=C;i=k;return F|0}c[c[h>>2]>>2]=1;F=0;i=k;return F|0}function qL(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;m=i;i=i+32|0;l=m;j=c[a>>2]|0;k=(b|0)==0;do{if((a|0)==0){if(k){j=33}else{g=33;break}i=h;return j|0}else{if(k){n=6;i=h;return n|0}k=Bd[c[j+4>>2]&255](j,40)|0;if((k|0)==0){g=64;break}bX(k|0,0,40)|0;c[k>>2]=b;c[k+4>>2]=d;c[k+8>>2]=0;c[k+32>>2]=0;c[k+20>>2]=0;b=k+24|0;c[b>>2]=329;c[m>>2]=2;c[l+16>>2]=k;if((f|0)!=0){c[m>>2]=10;n=c[a+24>>2]|0;d=a+28+(n<<2)|0;a:do{if((n|0)>0){n=a+28|0;while(1){m=c[n>>2]|0;n=n+4|0;if((Qc(c[(c[m>>2]|0)+8>>2]|0,f|0)|0)==0){break a}if(n>>>0>>0){}else{m=0;break}}}else{m=0}}while(0);c[l+20>>2]=m}e=MJ(a,l,e,g)|0;if((e|0)==0){n=(c[g>>2]|0)+8|0;c[n>>2]=c[n>>2]&-1025;n=0;i=h;return n|0}g=c[b>>2]|0;if((g|0)!=0){fd[g&511](k)}hd[c[j+8>>2]&127](j,k);n=e;i=h;return n|0}}while(0);hd[c[j+8>>2]&127](j,b);n=g;i=h;return n|0}function rL(a){a=a|0;var b=0,d=0,e=0;b=i;e=c[a+28>>2]|0;d=c[a>>2]|0;if((d|0)!=0){hd[c[e+8>>2]&127](e,d)}c[a+4>>2]=0;c[a>>2]=0;c[a+24>>2]=0;i=b;return}function sL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=c[a>>2]|0;if((c[b+72>>2]|0)!=1651078259){a=18;i=d;return a|0}c[a+20>>2]=c[b+100>>2];c[a+24>>2]=c[b+104>>2];f=b+156|0;a=a+28|0;if((c[(c[f>>2]|0)+4>>2]&1|0)==0){YV(a);a=ZV(e,b+76|0,a)|0;i=d;return a|0}else{$W(a|0,b+76|0,24)|0;a=(c[f>>2]|0)+4|0;c[a>>2]=c[a>>2]&-2;a=0;i=d;return a|0}return 0}function tL(a){a=a|0;var b=0;b=i;_V(c[a>>2]|0,a+28|0)|0;i=b;return}function uL(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[a>>2]|0;c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];a=ZV(e,a+28|0,b+28|0)|0;i=d;return a|0}function vL(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+20>>2]<<6;c[b>>2]=e;d=a+28|0;c[b+8>>2]=(c[d+4>>2]<<6)+e;a=c[a+24>>2]<<6;c[b+12>>2]=a;c[b+4>>2]=a-(c[d>>2]<<6);i=i;return}function wL(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=i;f=d+108|0;g=a+20|0;if((c[d+72>>2]|0)!=1869968492){d=18;i=e;return d|0}a=wK(c[a>>2]|0,b[d+110>>1]|0,b[f>>1]|0,g)|0;if((a|0)!=0){d=a;i=e;return d|0}xK(f,g)|0;d=0;i=e;return d|0}function xL(a){a=a|0;var b=0;b=i;yK(c[a>>2]|0,a+20|0)|0;i=b;return}function yL(a,d){a=a|0;d=d|0;var e=0,f=0;e=i;f=a+20|0;d=d+20|0;a=wK(c[a>>2]|0,b[f+2>>1]|0,b[f>>1]|0,d)|0;if((a|0)!=0){i=e;return a|0}xK(f,d)|0;i=e;return a|0}function zL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((b|0)!=0){GJ(a+20|0,b)}if((d|0)==0){i=e;return}HJ(a+20|0,c[d>>2]|0,c[d+4>>2]|0);i=e;return}function AL(a,b){a=a|0;b=b|0;var c=0;c=i;zK(a+20|0,b);i=c;return}function BL(a,b){a=a|0;b=b|0;var d=0;d=i;c[b+72>>2]=1869968492;$W(b+108|0,a+20|0,20)|0;a=b+124|0;c[a>>2]=c[a>>2]&-2;i=d;return 0}function CL(a){a=a|0;var b=0,d=0,e=0;b=i;if((a|0)==0){i=b;return}d=c[c[a>>2]>>2]|0;e=c[(c[a+4>>2]|0)+12>>2]|0;if((e|0)!=0){fd[e&511](a)}lJ(d,a);i=b;return}function DL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=i;i=i+8|0;f=e;if((a|0)==0){j=37;i=d;return j|0}g=c[a>>2]|0;if((b|0)==0){j=6;i=d;return j|0}h=c[a+72>>2]|0;do{if((h|0)==1651078259){h=206520}else if((h|0)==1869968492){h=206552}else{h=iK(g,h,0)|0;j=(h|0)==0;if(j){b=18}else{h=j?0:h+28|0;break}i=d;return b|0}}while(0);f=jJ(c[g>>2]|0,c[h>>2]|0,f)|0;j=c[e>>2]|0;if((j|0)!=0){i=d;return j|0}c[f>>2]=g;g=f+4|0;c[g>>2]=h;c[f+8>>2]=c[h+4>>2];e=c[e>>2]|0;if((e|0)!=0){j=e;i=d;return j|0}c[f+12>>2]=c[a+64>>2]<<10;c[f+16>>2]=c[a+68>>2]<<10;a=Bd[c[h+8>>2]&255](f,a)|0;if((a|0)==0){c[b>>2]=f;j=0;i=d;return j|0}if((f|0)==0){j=a;i=d;return j|0}b=c[c[f>>2]>>2]|0;e=c[(c[g>>2]|0)+12>>2]|0;if((e|0)!=0){fd[e&511](f)}lJ(b,f);j=a;i=d;return j|0}function EL(a){a=a|0;var b=0;b=i;kK(a,273368)|0;kK(a,274640)|0;kK(a,286944)|0;kK(a,277624)|0;kK(a,207424)|0;kK(a,280624)|0;kK(a,282080)|0;kK(a,206632)|0;kK(a,283472)|0;kK(a,271720)|0;kK(a,283256)|0;kK(a,209736)|0;kK(a,270912)|0;kK(a,273104)|0;kK(a,273184)|0;kK(a,273264)|0;kK(a,208112)|0;kK(a,209816)|0;i=b;return}function FL(a){a=a|0;var b=0,d=0,e=0;b=i;d=ML()|0;do{if((d|0)==0){e=7}else{e=pK(d,a)|0;if((e|0)==0){EL(c[a>>2]|0);e=0;break}else{OL(d);break}}}while(0);i=b;return e|0}function GL(a){a=a|0;var b=0,d=0;b=i;if((a|0)==0){i=b;return 0}d=c[a>>2]|0;rK(a)|0;OL(d);i=b;return 0}function HL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;f=i;i=i+8|0;e=i;i=i+8|0;g=i;i=i+80|0;if((a|0)==0){j=40;i=d;return j|0}e=gc(b|0,0,e|0)|0;if((e|0)<0){j=1;i=d;return j|0}c[f>>2]=1;xb(e|0,2,f|0)|0;a:do{if((Xa(e|0,g|0)|0)>=0){g=c[g+36>>2]|0;if((g|0)==0){break}f=a+4|0;c[f>>2]=g;c[a+8>>2]=0;j=Xb(0,g|0,1,2,e|0,0)|0;c[a>>2]=j;do{if((j|0)==0|(j|0)==-1){j=c[f>>2]|0;g=AW(j)|0;c[a>>2]=g;if((g|0)==0){break a}else{h=0}while(1){g=Qb(e|0,g+h|0,j-h|0)|0;if((g|0)<1){if((g|0)!=-1){f=16;break}if((c[(Pc()|0)>>2]|0)!=4){f=16;break}}else{h=g+h|0}j=c[f>>2]|0;if((h|0)==(j|0)){f=14;break}g=c[a>>2]|0}if((f|0)==14){c[a+24>>2]=331;break}else if((f|0)==16){BW(c[a>>2]|0);break a}}else{c[a+24>>2]=330}}while(0);cb(e|0)|0;c[a+12>>2]=c[a>>2];c[a+16>>2]=b;c[a+20>>2]=0;j=0;i=d;return j|0}}while(0);cb(e|0)|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;j=81;i=d;return j|0}function IL(a){a=a|0;var b=0,d=0,e=0;b=i;e=a+12|0;d=a+4|0;Wb(c[e>>2]|0,c[d>>2]|0)|0;c[e>>2]=0;c[d>>2]=0;c[a>>2]=0;i=b;return}function JL(a,b){a=a|0;b=b|0;var c=0;c=i;a=AW(b)|0;i=c;return a|0}function KL(a){a=a|0;var b=0,d=0;b=i;d=a+12|0;BW(c[d>>2]|0);c[d>>2]=0;c[a+4>>2]=0;c[a>>2]=0;i=b;return}function LL(a,b){a=a|0;b=b|0;a=i;BW(b);i=a;return}function ML(){var a=0,b=0;b=i;a=AW(16)|0;if((a|0)==0){i=b;return a|0}c[a>>2]=0;c[a+4>>2]=190;c[a+12>>2]=40;c[a+8>>2]=91;i=b;return a|0}function NL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=i;b=CW(d,c)|0;i=a;return b|0}function OL(a){a=a|0;var b=0;b=i;hd[c[a+8>>2]&127](a,a);i=b;return}function PL(a,b){a=a|0;b=b|0;b=c[a>>2]|0;c[a+16>>2]=c[b+296>>2];c[a+20>>2]=c[b+300>>2];i=i;return 0}function QL(a){a=a|0;c[a+20>>2]=0;c[a+16>>2]=0;i=i;return}function RL(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0;f=i;g=c[a+20>>2]|0;a=c[a+16>>2]|0;if((a|0)==0){k=0;i=f;return k|0}else{j=0}while(1){h=(j+a|0)>>>1;k=c[g+(h<<3)>>2]|0;if((k|0)==(b|0)){break}k=k>>>0>b>>>0;a=k?h:a;j=k?j:h+1|0;if(j>>>0>=a>>>0){g=0;d=5;break}}if((d|0)==5){i=f;return g|0}k=(e[g+(h<<3)+4>>1]|0)+1|0;i=f;return k|0}function SL(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;f=i;d=c[a+20>>2]|0;g=(c[b>>2]|0)+1|0;a=c[a+16>>2]|0;a:do{if((a|0)==0){k=0}else{j=a;k=0;while(1){h=(k+j|0)>>>1;l=c[d+(h<<3)>>2]|0;if((g|0)==(l|0)){break}l=g>>>0>>0;j=l?h:j;k=l?k:h+1|0;if(k>>>0>=j>>>0){break a}}j=g;l=(e[d+(h<<3)+4>>1]|0)+1|0;k=b;c[k>>2]=j;i=f;return l|0}}while(0);if(k>>>0>=a>>>0){j=0;l=0;k=b;c[k>>2]=j;i=f;return l|0}j=c[d+(k<<3)>>2]|0;l=(e[d+(k<<3)+4>>1]|0)+1|0;k=b;c[k>>2]=j;i=f;return l|0}function TL(a,b){a=a|0;b=b|0;var c=0;c=i;a=uJ(207288,b)|0;i=c;return a|0}function UL(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0;g=i;h=i;i=i+16|0;f=h;a:do{if((ZL(d,e)|0)!=0){VL(e);l=e+132|0;k=$V(l,d)|0;do{if((k&255|0)!=7){if((k|0)!=0){k=gW(l,d)|0;if(!((k&255|0)!=7&(k|0)==0)){break}}c[e+172>>2]=d;c[e+104>>2]=l;if((ZL(l,e)|0)==0){break a}}}while(0);VL(e);l=2;i=g;return l|0}}while(0);k=c[e+180>>2]|0;do{if((k|0)==0){j=14}else{d=c[e+176>>2]|0;if((d|0)==0){j=14;break}l=a[k]|0;if(!(l<<24>>24==73|l<<24>>24==105)){j=14;break}l=a[k+1|0]|0;if(!(l<<24>>24==83|l<<24>>24==115)){j=14;break}l=a[k+2|0]|0;if(!(l<<24>>24==79|l<<24>>24==111)){j=14;break}k=k+3|0;if((Qc(k|0,206736)|0)!=0){if((Qc(k|0,206744)|0)!=0){j=14;break}if((Qc(d|0,206752)|0)!=0){j=14;break}}c[h>>2]=e;l=f+4|0;k=l;c[k>>2]=0;c[k+4>>2]=0;c[l>>2]=1970170211;b[f+8>>1]=3;b[f+10>>1]=1}}while(0);if((j|0)==14){c[h>>2]=e;l=f+4|0;c[l>>2]=0;c[l+4>>2]=0}l=eK(206584,0,f,0)|0;i=g;return l|0}function VL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;if((b|0)==0){i=d;return}e=c[b+100>>2]|0;f=b+300|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=b+292|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=b+284|0;h=c[f>>2]|0;do{if((h|0)==0){h=0}else{g=b+280|0;if((c[g>>2]|0)>0){j=0}else{break}do{k=h+(j*12|0)|0;do{if((k|0)!=0){lJ(e,c[k>>2]|0);c[k>>2]=0;if((a[h+(j*12|0)+4|0]|0)==0){break}k=h+(j*12|0)+8|0;lJ(e,c[k>>2]|0);c[k>>2]=0}}while(0);j=j+1|0;h=c[f>>2]|0}while((j|0)<(c[g>>2]|0))}}while(0);lJ(e,h);c[f>>2]=0;f=b+192|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=b+20|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=b+24|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=b+32|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=b+176|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=b+180|0;lJ(e,c[f>>2]|0);c[f>>2]=0;e=b+104|0;f=c[e>>2]|0;if((f|0)!=(b+132|0)){i=d;return}zJ(f);c[e>>2]=c[b+172>>2];i=d;return}function WL(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=i;f=c[f>>2]|0;if((f|0)==0){s=6;i=h;return s|0}if((c[f+16>>2]|0)>>>0<=g>>>0){s=6;i=h;return s|0}r=c[f+104>>2]|0;k=(g|0)==0?0:g+ -1|0;n=c[f+292>>2]|0;m=n+(k<<4)+6|0;p=(b[n+(k<<4)+8>>1]|0)+(b[m>>1]|0)|0;g=e+76|0;c[g>>2]=p;j=n+(k<<4)+2|0;l=n+(k<<4)|0;q=(b[j>>1]|0)-(b[l>>1]|0)|0;c[e+80>>2]=q;b[e+92>>1]=1;a[e+94|0]=1;o=f+308|0;s=1<<(c[o>>2]&3);if((s|0)==1){q=q+7>>3;c[e+84>>2]=q}else if((s|0)==8){q=q+63>>6<<3;c[e+84>>2]=q}else if((s|0)==4){q=q+31>>5<<2;c[e+84>>2]=q}else if((s|0)==2){q=q+15>>4<<1;c[e+84>>2]=q}else{s=3;i=h;return s|0}p=da(p,q)|0;q=CJ(e,p)|0;if((q|0)!=0){s=q;i=h;return s|0}q=PJ(r,c[n+(k<<4)+12>>2]|0)|0;if((q|0)!=0){s=q;i=h;return s|0}q=e+88|0;r=CK(r,c[q>>2]|0,p)|0;if((r|0)!=0){s=r;i=h;return s|0}r=c[o>>2]|0;if(!((r&8|0)!=0|(p|0)==0)){s=p;r=c[q>>2]|0;while(1){t=d[r]|0;t=t>>>1&85|t<<1&170;t=t>>>2&51|t<<2&204;a[r]=t>>>4|t<<4;s=s+ -1|0;if((s|0)==0){break}else{r=r+1|0}}r=c[o>>2]|0}do{if(((r>>>2^r>>>3)&1|0)!=0){o=1<<(r>>>4&3);if((o|0)==4){if(p>>>0<=3){break}o=c[q>>2]|0;while(1){s=a[o]|0;r=o+3|0;a[o]=a[r]|0;a[r]=s;r=o+1|0;s=a[r]|0;t=o+2|0;a[r]=a[t]|0;a[t]=s;p=p+ -4|0;if(p>>>0>3){o=o+4|0}else{break}}}else if((o|0)==2){if(p>>>0<=1){break}o=c[q>>2]|0;while(1){s=a[o]|0;t=o+1|0;a[o]=a[t]|0;a[t]=s;p=p+ -2|0;if(p>>>0>1){o=o+2|0}else{break}}}else{break}}}while(0);c[e+72>>2]=1651078259;c[e+100>>2]=b[l>>1]|0;c[e+104>>2]=b[m>>1]|0;s=e+24|0;c[e+40>>2]=b[n+(k<<4)+4>>1]<<6;c[e+32>>2]=b[l>>1]<<6;c[e+36>>2]=b[m>>1]<<6;c[s>>2]=(b[j>>1]|0)-(b[l>>1]|0)<<6;c[e+28>>2]=c[g>>2]<<6;t=f+196|0;XJ(s,(c[t+12>>2]|0)+(c[t+8>>2]|0)<<6);t=0;i=h;return t|0}function XL(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;e=c[a>>2]|0;g=c[d+16>>2]|0;h=c[d+8>>2]|0;if((g|0)!=0){h=((da(h,g)|0)+36|0)/72|0}g=h+32>>6;d=c[d>>2]|0;if((d|0)==0){d=(c[(c[e+32>>2]|0)+12>>2]|0)+32>>6}else if((d|0)==1){d=e+196|0;d=(c[d+12>>2]|0)+(c[d+8>>2]|0)|0}else{h=7;i=f;return h|0}d=(g|0)==(d|0);if(!d){h=d?0:23;i=f;return h|0}h=e+196|0;YJ(e,0);c[a+24>>2]=c[h+8>>2]<<6;c[a+28>>2]=0-(c[h+12>>2]|0)<<6;c[a+36>>2]=b[h+40>>1]<<6;h=0;i=f;return h|0}function YL(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=i;g=c[a>>2]|0;f=g+196|0;YJ(g,d);c[a+24>>2]=c[f+8>>2]<<6;c[a+28>>2]=0-(c[f+12>>2]|0)<<6;c[a+36>>2]=b[f+40>>1]<<6;i=e;return 0}function ZL(e,f){e=e|0;f=f|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;g=i;m=i;i=i+8|0;n=m;p=i;i=i+8|0;r=p;s=i;i=i+8|0;v=s;x=i;i=i+8|0;y=x;w=i;i=i+8|0;A=w;o=i;i=i+8|0;z=o;D=i;i=i+8|0;u=D;B=i;i=i+16|0;h=i;i=i+8|0;j=h;c[h>>2]=0;q=f+100|0;k=c[q>>2]|0;t=f+184|0;J=PJ(e,0)|0;c[D>>2]=J;a:do{if((J|0)==0){J=ZK(e,207248,t)|0;c[D>>2]=J;if((J|0)!=0){f=1;l=20;break}if((c[t>>2]|0)!=1885562369){f=3;l=20;break}t=f+188|0;C=c[t>>2]|0;if(C>>>0>134217727|(C|0)==0){f=3;l=20;break}C=oJ(k,16,0,C,0,u)|0;u=f+192|0;c[u>>2]=C;if((c[D>>2]|0)!=0){f=64;l=20;break}do{if((c[t>>2]|0)==0){F=0;l=10}else{E=0;while(1){J=ZK(e,207264,C)|0;c[D>>2]=J;if((J|0)!=0){break}E=E+1|0;F=c[t>>2]|0;if(E>>>0>>0){C=C+16|0}else{l=9;break}}if((l|0)==9){C=c[u>>2]|0;if((F|0)==1){F=1;l=22;break}else{l=10;break}}lJ(k,c[u>>2]|0);c[u>>2]=0;J=c[D>>2]|0;c[h>>2]=J;if((J|0)!=0){break a}F=c[t>>2]|0;C=0}}while(0);if((l|0)==10){D=0;while(1){l=~D;D=D+1|0;if((F|0)==(D|0)){break}G=c[C+12>>2]|0;H=0;F=0;while(1){E=F+1|0;I=C+(E<<4)+12|0;J=c[I>>2]|0;if(G>>>0>J>>>0){G=C+(E<<4)|0;H=C+(F<<4)|0;$W(B|0,H|0,16)|0;$W(H|0,G|0,16)|0;$W(G|0,B|0,16)|0;G=c[I>>2]|0;H=1}else{G=J}I=c[C+(F<<4)+8>>2]|0;if(I>>>0>G>>>0){f=9;l=20;break a}if((c[C+(F<<4)+12>>2]|0)>>>0>(G-I|0)>>>0){f=9;l=20;break a}F=c[t>>2]|0;if(E>>>0<(F+l|0)>>>0){F=E}else{break}}if((H|0)==0){break}if(D>>>0<(F+ -1|0)>>>0){}else{break}}C=c[u>>2]|0;l=22}if((l|0)==22){c[h>>2]=0}B=c[q>>2]|0;b:do{if((F|0)==0){z=3;l=30}else{D=0;while(1){E=D+1|0;if((c[C+(D<<4)>>2]|0)==1){break}if(E>>>0>>0){D=E}else{z=3;l=30;break b}}E=c[e+8>>2]|0;F=c[C+(D<<4)+12>>2]|0;if(E>>>0>F>>>0){z=83;l=30;break}if((DK(e,F-E|0)|0)!=0){z=83;l=30;break}G=c[C+(D<<4)+8>>2]|0;c[o>>2]=0;C=YK(e,z)|0;if(!((c[o>>2]|0)==0&C>>>0<256)){D=0;G=0;break}F=(C&4|0)==0;if(F){C=YK(e,z)|0}else{C=GK(e,z)|0}if((c[o>>2]|0)!=0){D=0;G=0;break}if(C>>>0>((G>>>0)/9|0)>>>0){c[o>>2]=8;D=0;G=0;break}c[f+280>>2]=C;D=oJ(B,12,0,C,0,z)|0;if((c[o>>2]|0)!=0){G=0;break}E=(C|0)==0;do{if(!E){if(F){H=0;do{J=ZK(e,207224,D+(H*12|0)|0)|0;c[o>>2]=J;if((J|0)!=0){G=0;break b}H=H+1|0;}while(H>>>0>>0)}else{H=0;do{J=ZK(e,207200,D+(H*12|0)|0)|0;c[o>>2]=J;if((J|0)!=0){G=0;break b}H=H+1|0;}while(H>>>0>>0)}H=C&3;if((H|0)==0){break}J=DK(e,4-H|0)|0;c[o>>2]=J;if((J|0)==0){break}c[o>>2]=83;G=0;break b}}while(0);if(F){F=YK(e,z)|0}else{F=GK(e,z)|0}if((c[o>>2]|0)!=0){G=0;break}if(F>>>0>((da(C,-9)|0)+G|0)>>>0){c[o>>2]=8;G=0;break}G=oJ(B,1,0,F,0,z)|0;if((c[o>>2]|0)!=0){break}J=CK(e,G,F)|0;c[o>>2]=J;if((J|0)!=0){break}H=oJ(B,12,0,C,0,z)|0;if((c[o>>2]|0)!=0){break}c[f+284>>2]=H;c:do{if(!E){E=0;while(1){I=c[D+(E*12|0)>>2]|0;if((I|0)<0|I>>>0>F>>>0){l=59;break}c[H+(E*12|0)>>2]=aL(B,G+I|0,z)|0;if((c[o>>2]|0)!=0){break b}J=D+(E*12|0)+4|0;a[H+(E*12|0)+4|0]=a[J]|0;I=c[D+(E*12|0)+8>>2]|0;if((a[J]|0)==0){c[H+(E*12|0)+8>>2]=I}else{if((I|0)<0|I>>>0>F>>>0){l=63;break}c[H+(E*12|0)+8>>2]=aL(B,G+I|0,z)|0;if((c[o>>2]|0)!=0){break b}}E=E+1|0;if(E>>>0>=C>>>0){break c}}if((l|0)==59){c[o>>2]=9;break b}else if((l|0)==63){c[o>>2]=9;break b}}}while(0);c[o>>2]=0}}while(0);if((l|0)==30){c[o>>2]=z;D=0;G=0}lJ(B,D);lJ(B,G);J=c[o>>2]|0;c[h>>2]=J;if((J|0)!=0){break}o=c[u>>2]|0;B=c[t>>2]|0;d:do{if((B|0)==0){l=72}else{z=0;while(1){C=z+1|0;if((c[o+(z<<4)>>2]|0)==256){z=1;break d}if(C>>>0>>0){z=C}else{l=72;break}}}}while(0);if((l|0)==72){J=_L(e,f,2)|0;c[h>>2]=J;if((J|0)!=0){break}B=c[t>>2]|0;o=c[u>>2]|0;z=0}c[w>>2]=0;C=c[q>>2]|0;e:do{if((B|0)==0){E=3;l=79}else{l=0;while(1){D=l+1|0;if((c[o+(l<<4)>>2]|0)==4){break}if(D>>>0>>0){l=D}else{E=3;l=79;break e}}B=e+8|0;E=c[B>>2]|0;D=c[o+(l<<4)+12>>2]|0;if(E>>>0>D>>>0){E=83;l=79;break}if((DK(e,D-E|0)|0)!=0){E=83;l=79;break}D=c[o+(l<<4)+8>>2]|0;c[w>>2]=0;l=YK(e,A)|0;E=c[w>>2]|0;if((E|0)!=0){l=102;break}J=l&-256;if(!((J|0)==256|(J|0)==0)){E=3;l=102;break}F=l>>>0<256;E=(l&4|0)!=0;do{if(F){if(E){l=GK(e,A)|0;break}else{l=YK(e,A)|0;break}}else{if(E){l=(EK(e,A)|0)&65535;break}else{l=(WK(e,A)|0)&65535;break}}}while(0);if((c[w>>2]|0)!=0){E=3;l=102;break}o=f+288|0;c[o>>2]=l;if((l|0)==0){E=8;l=102;break}if(F){if(l>>>0>((D>>>0)/12|0)>>>0){E=8;l=102;break}}else{if(l>>>0>((D>>>0)/5|0)>>>0){E=8;l=102;break}}D=oJ(C,16,0,l,0,A)|0;A=f+292|0;c[A>>2]=D;if((c[w>>2]|0)!=0){E=64;l=102;break}J=E?206992:207024;I=y+1|0;E=y+2|0;H=y+3|0;G=y+4|0;f:do{if(F){x=0;while(1){c[w>>2]=ZK(e,J,D+(x<<4)|0)|0;c[D+(x<<4)+12>>2]=0;x=x+1|0;if((c[w>>2]|0)!=0){l=104;break f}if(x>>>0>>0){}else{l=103;break}}}else{F=0;while(1){J=ZK(e,207056,y)|0;if((J|0)==0){b[D+(F<<4)>>1]=(d[x]|0)+ -128<<16>>16;b[D+(F<<4)+2>>1]=(d[I]|0)+ -128<<16>>16;b[D+(F<<4)+4>>1]=(d[E]|0)+ -128<<16>>16;b[D+(F<<4)+6>>1]=(d[H]|0)+ -128<<16>>16;b[D+(F<<4)+8>>1]=(d[G]|0)+ -128<<16>>16;b[D+(F<<4)+10>>1]=0;J=0}c[w>>2]=J;c[D+(F<<4)+12>>2]=0;F=F+1|0;if((c[w>>2]|0)!=0){l=104;break f}if(F>>>0>=l>>>0){l=103;break}}}}while(0);if((l|0)==103){c[h>>2]=0}else if((l|0)==104){lJ(C,c[A>>2]|0);c[A>>2]=0;J=c[w>>2]|0;c[h>>2]=J;if((J|0)!=0){break a}}c[s>>2]=0;w=c[q>>2]|0;y=c[u>>2]|0;D=c[t>>2]|0;g:do{if((D|0)==0){E=3;l=110}else{x=0;while(1){C=x+1|0;if((c[y+(x<<4)>>2]|0)==8){break}if(C>>>0>>0){x=C}else{E=3;l=110;break g}}C=c[B>>2]|0;D=c[y+(x<<4)+12>>2]|0;if(C>>>0>D>>>0){E=83;l=110;break}if((DK(e,D-C|0)|0)!=0){E=83;l=110;break}x=c[y+(x<<4)+8>>2]|0;c[s>>2]=0;E=MK(e,8)|0;c[s>>2]=E;if((E|0)!=0){break}y=UK(e)|0;F=(y&4|0)==0;if(F){C=UK(e)|0}else{C=TK(e)|0}PK(e);if(y>>>0>=256){E=3;break}J=c[o>>2]|0;if(!((J|0)>-1&(C|0)==(J|0))){E=3;break}D=oJ(w,4,0,C,0,v)|0;E=c[s>>2]|0;if((E|0)!=0){break}E=(C|0)==0;if(E){l=123}else{if(F){G=0;do{c[D+(G<<2)>>2]=YK(e,v)|0;G=G+1|0;}while(G>>>0>>0)}else{G=0;do{c[D+(G<<2)>>2]=GK(e,v)|0;G=G+1|0;}while(G>>>0>>0)}if((c[s>>2]|0)==0){l=123}}h:do{if((l|0)==123){if(F){F=0;do{YK(e,v)|0;F=F+1|0;if((c[s>>2]|0)!=0){break h}}while(F>>>0<4)}else{F=0;do{GK(e,v)|0;F=F+1|0;if((c[s>>2]|0)!=0){break h}}while(F>>>0<4)}if(!E){E=0;do{v=c[D+(E<<2)>>2]|0;if(!((v|0)<0|v>>>0>x>>>0)){c[(c[A>>2]|0)+(E<<4)+12>>2]=(c[B>>2]|0)+v}E=E+1|0;}while(E>>>0>>0)}c[f+308>>2]=y}}while(0);lJ(w,D);J=c[s>>2]|0;c[h>>2]=J;if((J|0)!=0){break a}c[p>>2]=0;s=c[q>>2]|0;u=c[u>>2]|0;v=c[t>>2]|0;i:do{if((v|0)==0){E=3;l=140}else{t=0;while(1){w=t+1|0;if((c[u+(t<<4)>>2]|0)==32){break}if(w>>>0>>0){t=w}else{E=3;l=140;break i}}v=c[B>>2]|0;t=c[u+(t<<4)+12>>2]|0;if(v>>>0>t>>>0){E=83;l=140;break}if((DK(e,t-v|0)|0)!=0){E=83;l=140;break}c[p>>2]=0;E=MK(e,14)|0;c[p>>2]=E;if((E|0)!=0){break}x=UK(e)|0;t=(x&4|0)==0;if(t){w=SK(e)|0;y=SK(e)|0;u=SK(e)|0;v=SK(e)|0;b[f+304>>1]=SK(e)|0}else{w=RK(e)|0;y=RK(e)|0;u=RK(e)|0;v=RK(e)|0;b[f+304>>1]=RK(e)|0}u=u<<16>>16;w=w<<16>>16;PK(e);if(x>>>0>=256){E=3;break}x=(y<<16>>16)-w+1|0;y=da(1-u+(v<<16>>16)|0,x)|0;v=oJ(s,8,0,y,0,r)|0;if((c[p>>2]|0)!=0){E=64;break}J=MK(e,y<<1)|0;c[p>>2]=J;do{if((J|0)==0){if((y|0)>0){A=0;B=0;do{if(t){C=SK(e)|0}else{C=RK(e)|0}if(C<<16>>16!=-1){c[v+(B<<3)>>2]=((A|0)%(x|0)|0)+w+(((A|0)/(x|0)|0)+u<<8);b[v+(B<<3)+4>>1]=C;B=B+1|0}A=A+1|0;}while((A|0)<(y|0))}else{B=0}PK(e);t=oJ(s,8,0,B,0,r)|0;if((c[p>>2]|0)!=0){l=159;break}if((B|0)>0){r=0;do{c[t+(r<<3)>>2]=c[v+(r<<3)>>2];b[t+(r<<3)+4>>1]=b[v+(r<<3)+4>>1]|0;r=r+1|0;}while((r|0)<(B|0))}c[f+296>>2]=B;c[f+300>>2]=t;lJ(s,v)}else{t=0;l=159}}while(0);if((l|0)==159){lJ(s,t);lJ(s,v)}J=c[p>>2]|0;c[h>>2]=J;if((J|0)!=0){break a}if(z){J=_L(e,f,256)|0;c[h>>2]=J;if((J|0)!=0){break a}}c[f>>2]=1;c[f+4>>2]=0;c[f+8>>2]=(a[f+199|0]|0)==0?146:150;c[m>>2]=0;e=c[q>>2]|0;t=f+12|0;c[t>>2]=0;q=f+284|0;s=c[q>>2]|0;p=f+280|0;r=c[p>>2]|0;do{if((r|0)>0){u=0;while(1){v=u+1|0;w=(Qc(c[s+(u*12|0)>>2]|0,206904)|0)!=0;if((v|0)<(r|0)&w){u=v}else{break}}do{if(w){w=0;u=2}else{if((s+(u*12|0)|0)==0){w=0;u=2;break}if((a[s+(u*12|0)+4|0]|0)==0){w=0;u=2;break}u=s+(u*12|0)+8|0;J=a[c[u>>2]|0]|0;if(!(J<<24>>24==105|J<<24>>24==73|J<<24>>24==111|J<<24>>24==79)){w=0;u=2;break}c[t>>2]=1;u=a[c[u>>2]|0]|0;if(u<<24>>24==79){w=206912;u=3;break}w=u<<24>>24==111?206912:206920;u=3}}while(0);y=0;while(1){x=y+1|0;v=(Qc(c[s+(y*12|0)>>2]|0,206928)|0)!=0;if((x|0)<(r|0)&v){y=x}else{break}}do{if(v){x=0}else{if((s+(y*12|0)|0)==0){x=0;break}if((a[s+(y*12|0)+4|0]|0)==0){x=0;break}J=a[c[s+(y*12|0)+8>>2]|0]|0;if(!(J<<24>>24==98|J<<24>>24==66)){x=0;break}c[t>>2]=u;x=206944}}while(0);u=0;while(1){t=u+1|0;v=(Qc(c[s+(u*12|0)>>2]|0,206952)|0)!=0;if((t|0)<(r|0)&v){u=t}else{break}}do{if(v){t=0}else{if((s+(u*12|0)|0)==0){t=0;break}if((a[s+(u*12|0)+4|0]|0)==0){t=0;break}t=c[s+(u*12|0)+8>>2]|0;J=a[t]|0;if(J<<24>>24==110|J<<24>>24==78|J<<24>>24==0){t=0;break}}}while(0);y=0;while(1){v=y+1|0;u=(Qc(c[s+(y*12|0)>>2]|0,206968)|0)!=0;if((v|0)<(r|0)&u){y=v}else{break}}do{if(u){B=0;C=0;A=0}else{if((s+(y*12|0)|0)==0){B=0;C=0;A=0;break}if((a[s+(y*12|0)+4|0]|0)==0){B=0;C=0;A=0;break}B=c[s+(y*12|0)+8>>2]|0;J=a[B]|0;if(J<<24>>24==110|J<<24>>24==78|J<<24>>24==0){B=0;C=0;A=0;break}if((B|0)==0){B=0;C=0;A=0;break}A=ZW(B|0)|0;C=A;A=A+1|0}}while(0);if((x|0)==0){u=1;x=0;y=0}else{J=ZW(x|0)|0;u=0;y=J;A=A+1+J|0}if((w|0)==0){z=1;w=0;s=0}else{J=ZW(w|0)|0;z=0;s=J;A=A+1+J|0}if((t|0)==0){r=1;t=0;v=0;break}J=ZW(t|0)|0;r=0;v=J;A=A+1+J|0}else{r=1;s=0;u=1;C=0;B=0;t=0;w=0;x=0;y=0;z=1;v=0;A=0}}while(0);D=(A|0)==0;C=D?7:C;B=D?206984:B;e=jJ(e,D?8:A,n)|0;n=f+24|0;c[n>>2]=e;A=c[m>>2]|0;if((A|0)!=0){c[h>>2]=A;break a}if((B|0)!=0){$W(e|0,B|0,C|0)|0;if((C|0)!=0){B=0;do{A=e+B|0;if((a[A]|0)==32){a[A]=45}B=B+1|0;}while(B>>>0>>0)}e=e+C|0}if(!u){if((e|0)!=(c[n>>2]|0)){a[e]=32;e=e+1|0}$W(e|0,x|0,y|0)|0;e=e+y|0}if(!z){if((e|0)!=(c[n>>2]|0)){a[e]=32;e=e+1|0}$W(e|0,w|0,s|0)|0;e=e+s|0}if(!r){if((e|0)!=(c[n>>2]|0)){a[e]=32;e=e+1|0}$W(e|0,t|0,v|0)|0;if((v|0)!=0){n=0;do{r=e+n|0;if((a[r]|0)==32){a[r]=45}n=n+1|0;}while(n>>>0>>0)}e=e+v|0}a[e]=0;J=c[m>>2]|0;c[h>>2]=J;if((J|0)!=0){break a}e=c[q>>2]|0;n=c[p>>2]|0;do{if((n|0)>0){m=0;while(1){s=m+1|0;r=(Qc(c[e+(m*12|0)>>2]|0,206760)|0)!=0;if((s|0)<(n|0)&r){m=s}else{break}}if(r){l=231;break}if((e+(m*12|0)|0)==0){l=231;break}if((a[e+(m*12|0)+4|0]|0)==0){l=231;break}c[f+20>>2]=aL(k,c[e+(m*12|0)+8>>2]|0,j)|0;if((c[h>>2]|0)!=0){break a}}else{l=231}}while(0);if((l|0)==231){c[f+20>>2]=0}c[f+16>>2]=(c[o>>2]|0)+1;c[f+28>>2]=1;m=oJ(k,16,0,1,0,j)|0;c[f+32>>2]=m;if((c[h>>2]|0)!=0){break a}bX(m|0,0,16)|0;o=(c[f+208>>2]|0)+(c[f+204>>2]|0)&65535;b[m>>1]=o;s=c[q>>2]|0;r=c[p>>2]|0;do{if((r|0)>0){n=0;while(1){t=n+1|0;e=(Qc(c[s+(n*12|0)>>2]|0,206776)|0)!=0;if((t|0)<(r|0)&e){n=t}else{break}}if(e){l=238;break}if((s+(n*12|0)|0)==0){l=238;break}b[m+2>>1]=((c[s+(n*12|0)+8>>2]|0)+5|0)/10|0}else{l=238}}while(0);if((l|0)==238){b[m+2>>1]=(o<<16>>16<<1|0)/3|0}e=c[q>>2]|0;r=c[p>>2]|0;do{if((r|0)>0){s=0;while(1){n=s+1|0;o=(Qc(c[e+(s*12|0)>>2]|0,206792)|0)!=0;if((n|0)<(r|0)&o){s=n}else{break}}do{if(o){n=0}else{if((e+(s*12|0)|0)==0){n=0;break}n=(((c[e+(s*12|0)+8>>2]|0)*460800|0)+36135|0)/72270|0;c[m+4>>2]=n;e=c[q>>2]|0;r=c[p>>2]|0}}while(0);if((r|0)>0){o=0}else{l=259;break}while(1){s=o+1|0;t=(Qc(c[e+(o*12|0)>>2]|0,206808)|0)!=0;if((s|0)<(r|0)&t){o=s}else{break}}do{if(t){o=0}else{if((e+(o*12|0)|0)==0){o=0;break}o=c[e+(o*12|0)+8>>2]<<16>>10;c[m+12>>2]=o;e=c[q>>2]|0;r=c[p>>2]|0}}while(0);do{if((r|0)>0){s=0;while(1){u=s+1|0;t=(Qc(c[e+(s*12|0)>>2]|0,206824)|0)!=0;if((u|0)<(r|0)&t){s=u}else{break}}do{if(t){v=0}else{if((e+(s*12|0)|0)==0){v=0;break}v=c[e+(s*12|0)+8>>2]<<16>>16}}while(0);s=0;while(1){t=s+1|0;u=(Qc(c[e+(s*12|0)>>2]|0,206840)|0)!=0;if((t|0)<(r|0)&u){s=t}else{break}}if(u){r=v;e=0;break}if((e+(s*12|0)|0)==0){r=v;e=0;break}r=v;e=c[e+(s*12|0)+8>>2]&65535}else{r=0;e=0}}while(0);s=m+12|0;if((o|0)==0){c[s>>2]=n;if(e<<16>>16==0){l=265;break}n=(da(n,e<<16>>16)|0)/72|0;c[s>>2]=n}else{n=o}if((r|0)==0|e<<16>>16==0){l=265;break}c[m+8>>2]=(da(n,r)|0)/(e<<16>>16|0)|0}else{n=0;l=259}}while(0);if((l|0)==259){c[m+12>>2]=n;l=265}if((l|0)==265){c[m+8>>2]=n}m=c[q>>2]|0;n=c[p>>2]|0;do{if((n|0)>0){q=0;while(1){p=q+1|0;o=(Qc(c[m+(q*12|0)>>2]|0,206856)|0)!=0;if((p|0)<(n|0)&o){q=p}else{break}}if(o){o=0}else{o=m+(q*12|0)|0}p=0;while(1){q=p+1|0;e=(Qc(c[m+(p*12|0)>>2]|0,206880)|0)!=0;if((q|0)<(n|0)&e){p=q}else{break}}if(e){m=0}else{m=m+(p*12|0)|0}if((o|0)==0){break}if((a[o+4|0]|0)==0|(m|0)==0){break}if((a[m+4|0]|0)==0){break}c[f+176>>2]=aL(k,c[m+8>>2]|0,j)|0;if((c[h>>2]|0)!=0){break a}c[f+180>>2]=aL(k,c[o+8>>2]|0,j)|0}}while(0);E=c[h>>2]|0;break e}}while(0);if((l|0)==140){c[p>>2]=E}c[h>>2]=E;break e}}while(0);if((l|0)==110){c[s>>2]=E}c[h>>2]=E}}while(0);if((l|0)==79){c[w>>2]=E;l=102}if((l|0)==102){c[h>>2]=E}if((E|0)==0){h=0}else{break}i=g;return h|0}else{f=1;l=20}}while(0);if((l|0)==20){c[h>>2]=f}c[h>>2]=3;J=3;i=g;return J|0}function _L(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=i;i=i+8|0;g=f;c[f>>2]=0;j=c[b+192>>2]|0;l=c[b+188>>2]|0;a:do{if((l|0)==0){b=3}else{h=0;while(1){k=h+1|0;if((c[j+(h<<4)>>2]|0)==(d|0)){break}if(k>>>0>>0){h=k}else{b=3;break a}}k=c[a+8>>2]|0;h=c[j+(h<<4)+12>>2]|0;if(k>>>0>h>>>0){b=83;break}if((DK(a,h-k|0)|0)!=0){b=83;break}c[f>>2]=0;h=YK(a,g)|0;g=c[f>>2]|0;if((g|0)!=0){l=g;i=e;return l|0}g=h&-256;if(!((g|0)==256|(g|0)==0)){l=0;i=e;return l|0}j=h&4;h=b+196|0;do{if((j|0)==0){h=ZK(a,207144,h)|0;c[f>>2]=h;if((h|0)==0){break}i=e;return h|0}else{h=ZK(a,207088,h)|0;c[f>>2]=h;if((h|0)==0){break}i=e;return h|0}}while(0);h=b+216|0;j=(j|0)!=0?206992:207024;k=ZK(a,j,h)|0;c[f>>2]=k;if((k|0)!=0){l=k;i=e;return l|0}k=b+232|0;d=ZK(a,j,k)|0;c[f>>2]=d;if((d|0)!=0){l=d;i=e;return l|0}d=b+248|0;if((g|0)!=256){$W(d|0,h|0,16)|0;$W(b+264|0,k|0,16)|0;l=0;i=e;return l|0}g=ZK(a,j,d)|0;c[f>>2]=g;if((g|0)!=0){l=g;i=e;return l|0}l=ZK(a,j,b+264|0)|0;c[f>>2]=l;i=e;return l|0}}while(0);c[f>>2]=b;l=b;i=e;return l|0}function $L(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=c[a+176>>2];c[d>>2]=c[a+180>>2];i=i;return 0}function aM(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;f=c[b+284>>2]|0;b=c[b+280>>2]|0;if((b|0)>0){h=0}else{k=6;i=g;return k|0}while(1){j=h+1|0;k=(Qc(c[f+(h*12|0)>>2]|0,d|0)|0)!=0;if((j|0)<(b|0)&k){h=j}else{break}}if(k){k=6;i=g;return k|0}if((f+(h*12|0)|0)==0){k=6;i=g;return k|0}if((a[f+(h*12|0)+4|0]|0)==0){c[e>>2]=2;c[e+4>>2]=c[f+(h*12|0)+8>>2];k=0;i=g;return k|0}else{c[e>>2]=1;c[e+4>>2]=c[f+(h*12|0)+8>>2];k=0;i=g;return k|0}return 0}function bM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;b=i;e=(c[a>>2]|0)+288|0;d=c[e+120>>2]|0;c[a+16>>2]=d;e=c[e+128>>2]|0;c[a+20>>2]=e;if(d>>>0<=1){g=0;i=b;return g|0}a=c[e>>2]|0;g=1;while(1){f=c[e+(g<<4)>>2]|0;g=g+1|0;if(a>>>0>=f>>>0){e=8;d=5;break}if(g>>>0>>0){a=f}else{e=0;d=5;break}}if((d|0)==5){i=b;return e|0}return 0}function cM(a){a=a|0;c[a+20>>2]=0;c[a+16>>2]=0;i=i;return}function dM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;e=i;g=c[a+16>>2]|0;if((g|0)==0){j=0;i=e;return j|0}a=c[a+20>>2]|0;h=0;while(1){f=((g-h|0)>>>1)+h|0;j=c[a+(f<<4)>>2]|0;if((j|0)==(b|0)){break}j=j>>>0>>0;g=j?g:f;h=j?f+1|0:h;if(h>>>0>=g>>>0){b=0;d=6;break}}if((d|0)==6){i=e;return b|0}j=f+1|0;i=e;return j|0}function eM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;f=c[a+16>>2]|0;a=a+20|0;a:do{if((f|0)==0){l=0;d=8}else{j=c[b>>2]|0;do{j=j+1|0;h=c[a>>2]|0;k=f;l=0;while(1){g=((k-l|0)>>>1)+l|0;m=c[h+(g<<4)>>2]|0;if((m|0)==(j|0)){break}m=m>>>0>>0;l=m?g+1|0:l;k=m?k:g;if(l>>>0>=k>>>0){d=8;break a}}}while((g|0)==0);f=g+1|0}}while(0);do{if((d|0)==8){if(l>>>0>=f>>>0|(l|0)==0){j=0;f=0;break}j=c[(c[a>>2]|0)+(l<<4)>>2]|0;f=l+1|0}}while(0);c[b>>2]=j;i=e;return f|0}function fM(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0;h=i;j=a+288|0;a=c[a+88>>2]|0;if((b|0)!=0){c[b>>2]=c[j+12>>2]}if((d|0)!=0){c[d>>2]=c[j+16>>2]}if((a|0)==0){j=65536;a=65536}else{b=j+16|0;j=bJ((e[a+12>>1]|0)<<6,c[b>>2]|0)|0;a=bJ((e[a+14>>1]|0)<<6,c[b>>2]|0)|0}if((f|0)!=0){c[f>>2]=j}if((g|0)==0){i=h;return 0}c[g>>2]=a;i=h;return 0}function gM(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;k=e+288|0;c[h>>2]=0;c[h+4>>2]=0;f=(f|0)==0?0:f+ -1|0;g=(g|0)==0?0:g+ -1|0;r=c[k+120>>2]|0;if(f>>>0>r>>>0|g>>>0>r>>>0){r=0;i=j;return r|0}r=c[k+128>>2]|0;f=c[r+(g<<4)>>2]&65535|c[r+(f<<4)>>2]<<16;k=c[k+136>>2]|0;e=c[e+104>>2]|0;if((k|0)==0){r=0;i=j;return r|0}while(1){if(f>>>0>=(c[k+16>>2]|0)>>>0){if(f>>>0<=(c[k+20>>2]|0)>>>0){break}}k=c[k>>2]|0;if((k|0)==0){h=0;l=33;break}}if((l|0)==33){i=j;return h|0}l=PJ(e,c[k+12>>2]|0)|0;if((l|0)!=0){r=l;i=j;return r|0}l=k+4|0;g=k+8|0;m=MK(e,da(d[l]|0,c[g>>2]|0)|0)|0;if((m|0)!=0){r=m;i=j;return r|0}l=d[l]|0;n=c[g>>2]|0;q=cL(l)|0;o=da(q,n)|0;p=c[e+32>>2]|0;g=a[k+5|0]|0;m=g&1;g=g&2;do{if((l|0)==(q|0)){l=16}else{q=da(l-q|0,n)|0;if(m<<24>>24==0){l=q+2|0;q=d[p+q|0]<<16|d[p+(q+1)|0]}else{l=q+4|0;q=d[p+(q+1)|0]<<16|d[p+q|0]<<24|d[p+(q+2)|0]<<8|d[p+(q+3)|0]}if((q|0)==(f|0)){n=p+l|0;l=28;break}if(q>>>0>=f>>>0){l=16;break}p=p+(l+(g<<24>>24==0?1:2))|0;l=16}}while(0);a:do{if((l|0)==16){b:do{if(o>>>0>n>>>0){if(m<<24>>24==0){while(1){o=o>>>1;q=p+o|0;r=d[q]<<16|d[p+(o+1)|0];if((r|0)==(f|0)){break}p=r>>>0>>0?q:p;if(o>>>0>n>>>0){}else{break b}}n=p+(o+2)|0;l=28;break a}else{while(1){o=o>>>1;r=p+o|0;q=d[p+(o+1)|0]<<16|d[r]<<24|d[p+(o+2)|0]<<8|d[p+(o+3)|0];if((q|0)==(f|0)){break}p=q>>>0>>0?r:p;if(o>>>0>n>>>0){}else{break b}}n=p+(o+4)|0;l=28;break a}}}while(0);if(m<<24>>24==0){m=d[p]<<16|d[p+1|0];n=p+2|0}else{m=d[p+1|0]<<16|d[p]<<24|d[p+2|0]<<8|d[p+3|0];n=p+4|0}if((m|0)==(f|0)){l=28}}}while(0);if((l|0)==28){f=a[n]|0;if(g<<24>>24==0){f=f&255}else{f=(d[n+1|0]|(f&255)<<8&65535)<<16>>16}c[h>>2]=(b[k+6>>1]|0)+f}PK(e);r=0;i=j;return r|0}function hM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[d>>2]=0;if((b|0)==0){b=6;i=e;return b|0}b=b+ -1|0;if((a|0)==0){b=6;i=e;return b|0}a=a+288|0;if(b>>>0>=(c[a+120>>2]|0)>>>0){b=6;i=e;return b|0}c[d>>2]=c[(c[a+128>>2]|0)+(b<<4)+4>>2];b=0;i=e;return b|0}function iM(a,b){a=a|0;b=b|0;var c=0;c=i;a=uJ(207688,b)|0;i=c;return a|0}function jM(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,O=0,P=0;h=i;r=i;i=i+8|0;t=r;u=i;i=i+8|0;s=u;o=i;i=i+8|0;q=o;p=i;i=i+8|0;v=p;w=i;i=i+8|0;z=w;j=i;i=i+8|0;m=j;l=i;i=i+16|0;k=l;y=f+132|0;x=PJ(e,0)|0;do{if((x|0)==0){x=ZK(e,207568,y)|0;if((x|0)!=0){break}x=f+204|0;O=f+168|0;c[O>>2]=(c[O>>2]|0)+(c[x>>2]<<16);c[j>>2]=0;do{if((c[y>>2]|0)==1346785840){if((c[f+136>>2]|0)>>>0>4){break}if((c[f+144>>2]|0)>>>0<58){break}if((c[f+140>>2]|0)!=3338){break}y=f+152|0;A=PJ(e,c[y>>2]|0)|0;c[w>>2]=A;if((A|0)!=0){c[j>>2]=A;O=A;i=h;return O|0}z=EK(e,z)|0;A=c[w>>2]|0;w=(A|0)==0;z=w?z&65535:0;c[j>>2]=A;if(!w){O=A;i=h;return O|0}c[f>>2]=z;if((g|0)<0){O=0;i=h;return O|0}if((z|0)<=(g|0)){c[j>>2]=6;O=6;i=h;return O|0}w=f+240|0;x=(c[x>>2]|0)==0;y=PJ(e,c[y>>2]|0)|0;c[p>>2]=y;do{if((y|0)==0){y=EK(e,v)|0;z=c[p>>2]|0;if((z|0)!=0){v=z;break}if((y&65535)>>>0<=g>>>0){v=6;break}y=DK(e,g*5|0)|0;c[p>>2]=y;if((y|0)!=0){v=y;break}A=EK(e,v)|0;z=A&65535;y=c[p>>2]|0;if((y|0)!=0){v=y;break}y=XK(e,v)|0;v=c[p>>2]|0;if((v|0)!=0){break}c[w>>2]=z;c[f+244>>2]=y;v=PJ(e,y)|0;c[p>>2]=v;if((v|0)!=0){break}v=MK(e,z)|0;c[p>>2]=v;if((v|0)!=0){break}v=e+32|0;B=c[v>>2]|0;y=B+z|0;a:do{if((A&65535)<13){n=53}else{c[w+8>>2]=d[B+1|0]<<8|a[B]<<16|d[B+2|0];c[w+12>>2]=d[B+4|0]<<8|a[B+3|0]<<16|d[B+5|0];c[w+16>>2]=d[B+7|0]<<8|a[B+6|0]<<16|d[B+8|0];c[w+20>>2]=d[B+10|0]<<8|a[B+9|0]<<16|d[B+11|0];E=B+13|0;A=d[B+12|0]|0;D=(A&4|0)!=0;if(D){C=A>>>3&1;F=(A&3|0)==0?C|4:C+1|0}else{F=0}C=(A&16|0)!=0;if(C){F=(A>>>5&1)+1+F|0}if((F+13|0)>(z|0)){n=53;break}do{if(D){if((A&8|0)==0){z=d[E]|0;E=B+14|0}else{z=(d[E]<<8&65535|d[B+14|0])<<16>>16;E=B+15|0}c[w+28>>2]=z;if((A&3|0)!=0){break}c[w+36>>2]=d[E+1|0]<<8|a[E]<<16|d[E+2|0];E=E+3|0}}while(0);if(C){if((A&32|0)==0){z=d[E]|0;E=E+1|0}else{z=(d[E]<<8&65535|d[E+1|0])<<16>>16;E=E+2|0}c[w+32>>2]=z}b:do{if((A&64|0)!=0){A=E+1|0;c:do{if(A>>>0<=y>>>0){z=a[E]|0;if(z<<24>>24==0){E=A}else{z=z&255;E=A;do{if((E+2|0)>>>0>y>>>0){break c}E=E+((d[E]|0)+2)|0;if(E>>>0>y>>>0){break c}z=z+ -1|0;}while((z|0)!=0)}c[p>>2]=0;break b}}while(0);c[p>>2]=8;break a}}while(0);A=E+5|0;if(A>>>0>y>>>0){n=53;break}z=(d[E]<<8&65535|d[E+1|0])&65535;B=w+40|0;c[B>>2]=z;c[w+44>>2]=d[E+3|0]<<8|d[E+2|0]<<16|d[E+4|0];if(x){break}if((E+6|0)>>>0>y>>>0){n=53;break}c[B>>2]=d[A]<<16|z}}while(0);if((n|0)==53){c[p>>2]=8}PK(e);p=c[p>>2]|0;c[j>>2]=p;if((p|0)!=0){O=p;i=h;return O|0}p=f+288|0;A=c[w+44>>2]|0;C=c[w+40>>2]|0;B=c[e+28>>2]|0;c[p>>2]=B;c[p+4>>2]=A;O=p+136|0;c[O>>2]=0;c[p+140>>2]=O;O=PJ(e,A)|0;c[o>>2]=O;d:do{if((O|0)==0){O=MK(e,C)|0;c[o>>2]=O;if((O|0)!=0){break}w=p+148|0;c[w>>2]=c[v>>2];E=c[v>>2]|0;z=E+C|0;e:do{if((C|0)<15){n=125}else{c[p+8>>2]=(d[E]<<8&65535|d[E+1|0])&65535;c[p+12>>2]=(d[E+2|0]<<8&65535|d[E+3|0])&65535;c[p+16>>2]=(d[E+4|0]<<8&65535|d[E+5|0])&65535;c[p+20>>2]=(d[E+6|0]<<8&65535|d[E+7|0])<<16>>16;c[p+24>>2]=(d[E+8|0]<<8&65535|d[E+9|0])<<16>>16;c[p+28>>2]=(d[E+10|0]<<8&65535|d[E+11|0])<<16>>16;c[p+32>>2]=(d[E+12|0]<<8&65535|d[E+13|0])<<16>>16;D=E+15|0;y=d[E+14|0]|0;c[p+36>>2]=y;x=(y&4|0)!=0;if(x){C=D}else{if((C|0)<17){n=125;break}c[p+40>>2]=(d[D]<<8&65535|d[E+16|0])<<16>>16;C=E+17|0}f:do{if((y&128|0)==0){D=C}else{D=C+1|0;g:do{if(D>>>0>z>>>0){E=8}else{C=a[C]|0;if(C<<24>>24!=0){C=C&255;do{E=D+2|0;if(E>>>0>z>>>0){E=8;break g}F=d[D+1|0]|0;D=D+((d[D]|0)+2)|0;if(D>>>0>z>>>0){E=8;break g}else{H=30;G=207528}while(1){if((c[G>>2]|0)==(F|0)){n=70;break}H=c[G+12>>2]|0;if((H|0)==0){break}else{G=G+8|0}}if((n|0)==70){n=0;E=sd[H&127](E,D,p)|0;if((E|0)!=0){break g}}C=C+ -1|0;}while((C|0)!=0)}c[o>>2]=0;break f}}while(0);c[o>>2]=E;break e}}while(0);M=D+3|0;if(M>>>0>z>>>0){n=125;break}I=d[D+1|0]<<8|d[D]<<16|d[D+2|0];h:do{if((I|0)==0){H=M}else{H=D+(I+3)|0;if(H>>>0>z>>>0){n=125;break e}D=p+84|0;G=p+44|0;C=p+48|0;F=p+52|0;E=p+88|0;i:while(1){L=M+4|0;if(L>>>0>H>>>0){break h}N=d[M]<<8&65535|d[M+1|0];K=N&65535;if((N&65535)<4|K>>>0>I>>>0){break h}J=M+K|0;O=(d[M+2|0]<<8&65535|d[M+3|0])&65535;j:do{if((O|0)==2){if((N&65535)<36){break}c[G>>2]=(d[M+14|0]<<8&65535|d[M+15|0])<<16>>16;c[C>>2]=(d[M+16|0]<<8&65535|d[M+17|0])<<16>>16;c[F>>2]=(d[M+18|0]<<8&65535|d[M+19|0])<<16>>16}else if((O|0)==3){N=K+ -4|0;c[r>>2]=0;k:do{if((N|0)!=0){N=(a[M+(K+ -1)|0]|0)==0?K+ -5|0:N;if((N|0)==0){break}else{O=0}do{P=a[M+(O+4)|0]|0;O=O+1|0;if((P&255)<32|P<<24>>24<0){break k}}while(O>>>0>>0);M=jJ(B,N+1|0,t)|0;O=c[r>>2]|0;if((O|0)!=0){n=96;break i}$W(M|0,L|0,N|0)|0;a[M+N|0]=0;O=c[r>>2]|0;c[E>>2]=M;c[o>>2]=O;if((O|0)==0){break j}else{break d}}}while(0);c[E>>2]=0;c[o>>2]=0}else if((O|0)==1){N=K+ -4|0;c[u>>2]=0;l:do{if((N|0)!=0){N=(a[M+(K+ -1)|0]|0)==0?K+ -5|0:N;if((N|0)==0){break}else{O=0}do{P=a[M+(O+4)|0]|0;O=O+1|0;if((P&255)<32|P<<24>>24<0){break l}}while(O>>>0>>0);M=jJ(B,N+1|0,s)|0;O=c[u>>2]|0;if((O|0)!=0){n=86;break i}$W(M|0,L|0,N|0)|0;a[M+N|0]=0;O=c[u>>2]|0;c[D>>2]=M;c[o>>2]=O;if((O|0)==0){break j}else{break d}}}while(0);c[D>>2]=0;c[o>>2]=0}}while(0);if((I|0)==(K|0)){break h}else{I=I-K|0;M=J}}if((n|0)==86){c[D>>2]=M;c[o>>2]=O;break d}else if((n|0)==96){c[E>>2]=M;c[o>>2]=O;break d}}}while(0);D=H+1|0;if(D>>>0>z>>>0){n=125;break}C=a[H]|0;r=C&255;c[p+104>>2]=r;s=H+(r<<1|1)|0;if(s>>>0>z>>>0){n=125;break}u=oJ(B,4,0,r,0,q)|0;t=p+108|0;c[t>>2]=u;if((c[o>>2]|0)!=0){break}do{if(C<<24>>24!=0){c[u>>2]=(d[D]<<8&65535|d[H+2|0])<<16>>16;if((C&255)>1){C=1}else{D=s;break}while(1){u=D+2|0;c[(c[t>>2]|0)+(C<<2)>>2]=(d[u]<<8&65535|d[D+3|0])<<16>>16;C=C+1|0;if(C>>>0>>0){D=u}else{D=s;break}}}}while(0);C=D+8|0;if(C>>>0>z>>>0){n=125;break}c[p+112>>2]=d[D]|0;c[p+116>>2]=d[D+1|0]|0;c[p+68>>2]=(d[D+2|0]<<8&65535|d[D+3|0])&65535;c[p+56>>2]=(d[D+4|0]<<8&65535|d[D+5|0])&65535;E=d[D+6|0]<<8&65535|d[D+7|0];r=E&65535;c[p+120>>2]=r;c[p+124>>2]=C+A-(c[v>>2]|0);A=oJ(B,16,0,r,0,q)|0;s=p+128|0;c[s>>2]=A;if((c[o>>2]|0)!=0){break}q=(y&2|0)==0;O=y&8;t=(O|0)!=0;N=y&16;v=(N|0)==0;P=y&32;u=(P|0)==0;if((D+((da(r,(N>>>4)+(O>>>3)+(P>>>5)+(y>>>1&3|4)|0)|0)+8)|0)>>>0>z>>>0){n=125;break}if(E<<16>>16==0){break}y=p+40|0;z=A;A=0;while(1){if(q){B=d[C]|0;C=C+1|0}else{B=(d[C]<<8&65535|d[C+1|0])&65535;C=C+2|0}c[z+(A<<4)>>2]=B;if(x){B=(d[C]<<8&65535|d[C+1|0])<<16>>16;C=C+2|0}else{B=c[y>>2]|0}c[z+(A<<4)+4>>2]=B;C=t?C+1|0:C;if(v){B=d[C]|0;C=C+1|0}else{B=(d[C]<<8&65535|d[C+1|0])&65535;C=C+2|0}c[z+(A<<4)+8>>2]=B;if(u){B=(d[C]<<8&65535|d[C+1|0])&65535;C=C+2|0}else{B=d[C+1|0]<<8|d[C]<<16|d[C+2|0];C=C+3|0}c[z+(A<<4)+12>>2]=B;A=A+1|0;if(A>>>0>=r>>>0){break e}z=c[s>>2]|0}}}while(0);if((n|0)==125){c[o>>2]=8}PK(e);c[p+144>>2]=IK(e)|0;c[w>>2]=0;e=c[o>>2]|0;c[j>>2]=e;if((e|0)!=0){P=e;i=h;return P|0}c[f+4>>2]=g;e=p+120|0;o=c[e>>2]|0;c[f+16>>2]=o+1;g=f+8|0;c[g>>2]=1;if((o|0)==0){n=133}else{q=c[p+128>>2]|0;s=0;while(1){r=s+1|0;if((c[q+(s<<4)+12>>2]|0)!=0){r=s;break}if(r>>>0>>0){s=r}else{break}}if((r|0)==(o|0)){n=133}else{o=1}}do{if((n|0)==133){if((c[p+92>>2]|0)!=0){c[g>>2]=0;o=0;break}c[j>>2]=3;P=3;i=h;return P|0}}while(0);r=p+36|0;u=c[r>>2]|0;if((u&4|0)==0){o=o|4;c[g>>2]=o}o=(u<<4&16)+16|o;c[g>>2]=o;s=c[p+92>>2]|0;v=(s|0)==0;if(!v){o=o|2;c[g>>2]=o}n=p+132|0;if((c[n>>2]|0)!=0){c[g>>2]=o|64}P=c[p+84>>2]|0;o=f+20|0;c[o>>2]=P;if((P|0)==0){c[o>>2]=c[p+80>>2]}c[f+24>>2]=c[p+88>>2];t=f+28|0;c[t>>2]=0;w=f+32|0;c[w>>2]=0;$W(f+52|0,p+20|0,16)|0;x=c[p+12>>2]|0;o=f+68|0;b[o>>1]=x;P=c[p+32>>2]&65535;b[f+70>>1]=P;y=c[p+24>>2]&65535;b[f+72>>1]=y;x=((((x&65535)*12|0)>>>0)/10|0)&65535;q=f+74|0;y=(P<<16>>16)-(y<<16>>16)|0;b[q>>1]=(x<<16>>16|0)<(y|0)?y&65535:x;if(!v){m=oJ(c[(c[f+104>>2]|0)+28>>2]|0,16,0,s,0,m)|0;c[w>>2]=m;u=c[j>>2]|0;if((u|0)!=0){P=u;i=h;return P|0}u=0;v=c[p+100>>2]|0;while(1){P=v+4|0;b[m>>1]=c[P>>2];b[m+2>>1]=c[v>>2];c[m+4>>2]=c[P>>2]<<6;c[m+8>>2]=c[v>>2]<<6;c[m+12>>2]=c[P>>2]<<6;u=u+1|0;if(u>>>0>>0){v=v+36|0;m=m+16|0}else{break}}c[t>>2]=s;u=c[r>>2]|0}if((u&4|0)==0){b[f+76>>1]=c[p+40>>2]}else{m=c[e>>2]|0;if((m|0)==0){m=0}else{e=c[p+128>>2]|0;p=0;while(1){r=c[e+4>>2]|0;p=(p|0)<(r|0)?r:p;m=m+ -1|0;if((m|0)==0){break}else{e=e+16|0}}m=p&65535}b[f+76>>1]=m}b[f+78>>1]=b[q>>1]|0;P=b[o>>1]|0;b[f+80>>1]=(P&65535|0)/-10|0;b[f+82>>1]=(P&65535)/30|0;c[l>>2]=f;b[k+8>>1]=3;b[k+10>>1]=1;c[k+4>>2]=1970170211;f=eK(207360,0,k,0)|0;c[j>>2]=f;if((c[n>>2]|0)==0){P=f;i=h;return P|0}c[g>>2]=c[g>>2]|64;P=f;i=h;return P|0}}while(0);c[j>>2]=O;P=O;i=h;return P|0}else{v=y}}while(0);c[j>>2]=v;P=v;i=h;return P|0}}while(0);c[j>>2]=2;P=2;i=h;return P|0}}while(0);c[j>>2]=x;P=x;i=h;return P|0}function kM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;if((a|0)==0){i=b;return}f=c[(c[a+96>>2]|0)+8>>2]|0;c[a+20>>2]=0;c[a+24>>2]=0;e=a+288|0;g=c[a+100>>2]|0;d=e+80|0;lJ(g,c[d>>2]|0);c[d>>2]=0;d=e+84|0;lJ(g,c[d>>2]|0);c[d>>2]=0;d=e+88|0;lJ(g,c[d>>2]|0);c[d>>2]=0;d=e+76|0;lJ(g,c[d>>2]|0);c[d>>2]=0;c[e+72>>2]=0;c[e+64>>2]=0;c[e+60>>2]=0;d=e+100|0;lJ(g,c[d>>2]|0);c[d>>2]=0;c[e+92>>2]=0;c[e+96>>2]=0;d=e+128|0;lJ(g,c[d>>2]|0);c[d>>2]=0;c[e+120>>2]=0;c[e+124>>2]=0;d=e+108|0;lJ(g,c[d>>2]|0);c[d>>2]=0;c[e+104>>2]=0;d=e+136|0;h=c[d>>2]|0;if((h|0)!=0){while(1){j=c[h>>2]|0;lJ(g,h);if((j|0)==0){break}else{h=j}}}c[d>>2]=0;c[e+140>>2]=0;c[e+132>>2]=0;j=a+32|0;lJ(f,c[j>>2]|0);c[j>>2]=0;i=b;return}function lM(b){b=b|0;var d=0,e=0;d=i;e=c[c[b+156>>2]>>2]|0;bX(b+160|0,0,36)|0;c[b+188>>2]=e;a[b+192|0]=0;kJ(e);i=d;return 0}function mM(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[c[a+188>>2]>>2]|0;e=a+168|0;lJ(d,c[e>>2]|0);c[e>>2]=0;c[a+172>>2]=0;c[a+164>>2]=0;lJ(d,c[a+184>>2]|0);bX(a+176|0,0,17)|0;i=b;return}function nM(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var 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;k=i;l=i;i=i+16|0;m=l;s=c[f+4>>2]|0;n=f+108|0;r=(h|0)==0?0:h+ -1|0;if((s|0)==0){H=6;i=k;return H|0}p=s+288|0;if(r>>>0>=(c[p+120>>2]|0)>>>0){H=6;i=k;return H|0}a:do{if((j&9|0)==0){h=c[s+104>>2]|0;t=c[p+128>>2]|0;w=c[p+92>>2]|0;if((w|0)==0){break}q=g+12|0;u=e[q>>1]|0;v=g+14|0;x=0;o=c[p+100>>2]|0;while(1){if((c[o>>2]|0)==(u|0)){if((c[o+4>>2]|0)==(e[v>>1]|0)){break}}x=x+1|0;if(x>>>0>>0){o=o+36|0}else{break a}}w=o+8|0;u=c[w>>2]|0;if((PJ(h,(c[o+24>>2]|0)+(c[p+144>>2]|0)|0)|0)!=0){break}y=o+28|0;if((MK(h,da(c[y>>2]|0,(u&1|4)+(u>>>1&1)+(u>>>2&1)|0)|0)|0)!=0){break}u=h+32|0;v=c[u>>2]|0;o=h+36|0;x=c[o>>2]|0;E=c[y>>2]|0;z=c[w>>2]|0;C=c[t+(r<<4)>>2]|0;G=z&1;B=(G|0)==0;H=z&2;y=(H|0)==0;z=z&4;w=(z|0)==0;z=(G|4)+(H>>>1)+(z>>>2)|0;b:do{if((E|0)!=0){A=0;while(1){F=(E+A|0)>>>1;H=da(F,z)|0;G=v+H|0;if((v+(H+z)|0)>>>0>x>>>0){break b}if(B){D=H+1|0;H=d[G]|0}else{D=H+2|0;H=(d[G]<<8&65535|d[v+(H+1)|0])&65535}G=v+D|0;if((H|0)==(C|0)){break}D=H>>>0>>0;E=D?E:F;A=D?F:A;if(A>>>0>=E>>>0){break b}}if(y){y=D+1|0;x=d[G]|0}else{y=D+2|0;x=(d[G]<<8&65535|d[v+(D+1)|0])&65535}z=a[v+y|0]|0;if(w){v=(d[v+(y+1)|0]|(z&255)<<8&65535)&65535}else{v=d[v+(y+1)|0]<<8|(z&255)<<16|d[v+(y+2)|0]}PK(h);if((x|0)==0){break a}w=t+(r<<4)+4|0;y=c[w>>2]|0;t=p+16|0;z=c[t>>2]|0;A=c[p+12>>2]|0;if((z|0)!=(A|0)){y=_I(y,A,z)|0}c[f+56>>2]=y;t=_I(e[q>>1]<<8,c[w>>2]|0,c[t>>2]|0)|0;if((PJ(h,(c[s+188>>2]|0)+v|0)|0)!=0){break a}if((MK(h,x)|0)!=0){break a}u=c[u>>2]|0;w=c[o>>2]|0;q=u+1|0;c:do{if(q>>>0<=w>>>0){v=a[u]|0;x=v&3;if((x|0)==0){y=u+2|0;if(y>>>0>w>>>0){break}u=a[q]|0;q=u<<24>>24>>4;u=(u<<4&255)<<24>>24>>4}else if((x|0)==2){y=u+5|0;if(y>>>0>w>>>0){break}q=(d[q]<<8&65535|d[u+2|0])<<16>>16;u=(d[u+3|0]<<8&65535|d[u+4|0])<<16>>16}else if((x|0)==1){y=u+3|0;if(y>>>0>w>>>0){break}q=a[q]|0;u=a[u+2|0]|0}else if((x|0)==3){y=u+7|0;if(y>>>0>w>>>0){break}q=d[u+2|0]<<8|a[q]<<16|d[u+3|0];u=d[u+5|0]<<8|a[u+4|0]<<16|d[u+6|0]}else{y=q;q=0;u=0}x=(v&255)>>>2&3;if((x|0)==2){z=y+2|0;if(z>>>0>w>>>0){break}x=d[y]|0;y=d[y+1|0]|0}else if((x|0)==3){z=y+4|0;if(z>>>0>w>>>0){break}x=(d[y]<<8&65535|d[y+1|0])&65535;y=(d[y+2|0]<<8&65535|d[y+3|0])&65535}else if((x|0)==1){z=y+1|0;if(z>>>0>w>>>0){break}y=a[y]|0;x=y>>>4&15;y=y&15}else{z=y;x=0;y=0}A=(v&255)>>>4&255;v=A&3;if((v|0)==3){v=z+3|0;if(v>>>0>w>>>0){break}t=d[z+1|0]<<8|a[z]<<16|d[z+2|0]}else if((v|0)==2){v=z+2|0;if(v>>>0>w>>>0){break}t=(d[z]<<8&65535|d[z+1|0])<<16>>16}else if((v|0)==1){v=z+1|0;if(v>>>0>w>>>0){break}t=a[z]<<8}else if((v|0)==0){v=z}else{t=0;v=z}w=A>>>2;C=y+u|0;if((C|0)<=-1){break}c[f+72>>2]=1651078259;A=f+80|0;c[A>>2]=x;B=f+76|0;c[B>>2]=y;H=(x+7|0)>>>3;z=f+84|0;c[z>>2]=H;a[f+94|0]=1;G=x<<6;c[f+24>>2]=G;c[f+28>>2]=y<<6;c[f+32>>2]=q<<6;c[f+36>>2]=u<<6;c[f+40>>2]=(t>>2)+32&-64;c[f+44>>2]=0-G>>1;c[f+48>>2]=0;c[f+52>>2]=c[g+32>>2];c[f+100>>2]=q;c[f+104>>2]=C;if((CJ(f,da(H,y)|0)|0)!=0){break}t=c[o>>2]|0;q=c[s+208>>2]|0;y=c[B>>2]|0;do{if((y|0)>0){o=c[A>>2]|0;if((o|0)<=0){break}x=c[f+88>>2]|0;z=c[z>>2]|0;u=da(o,y)|0;if((q&2|0)==0){q=0-z|0;x=x+(da(z,y+ -1|0)|0)|0}else{q=z}if((w|0)==1){if((u|0)>0){l=x;n=0;j=0;r=0;f=x;m=o;p=128;s=1;g=1}else{break}while(1){d:do{if((g|0)==0){g=j}else{g=j;while(1){if((s|0)==0){g=r;s=1}else{if(v>>>0>=t>>>0){break d}r=d[v]|0;v=v+1|0;g=r>>>4;r=r&15;s=0}if((g|0)==0){g=0}else{break}}}}while(0);n=((s|0)==0?0:p)|n;p=p>>>1;j=m+ -1|0;do{if((m|0)<2){a[f]=n;f=l+q|0;l=f;n=0;m=o;p=128}else{if((p|0)!=0){m=j;break}a[f]=n;n=0;f=f+1|0;m=j;p=128}}while(0);u=u+ -1|0;if((u|0)>0){j=g+ -1|0;g=(g|0)<2|0}else{break}}if((p|0)==128){break}a[f]=n;break}else if((w|0)==2){if((u|0)>0){l=x;n=0;r=0;f=x;m=o;p=128;j=1;g=1}else{break}while(1){e:do{if((g|0)==0){g=r}else{g=r;while(1){if(v>>>0>=t>>>0){break e}r=v+1|0;H=a[v]|0;g=H&255;j=j^1;if(H<<24>>24==0){v=r}else{v=r;break}}}}while(0);n=((j|0)==0?0:p)|n;p=p>>>1;r=m+ -1|0;do{if((m|0)<2){a[f]=n;f=l+q|0;l=f;n=0;m=o;p=128}else{if((p|0)!=0){m=r;break}a[f]=n;n=0;f=f+1|0;m=r;p=128}}while(0);u=u+ -1|0;if((u|0)>0){r=g+ -1|0;g=(g|0)<2|0}else{break}}if((p|0)==128){break}a[f]=n;break}else if((w|0)==0){l=t-v<<3;l=(l|0)>(u|0)?u:l;if((l|0)>0){f=x;r=0;n=x;j=o;s=128;g=l;p=0}else{break}while(1){if(((g^l)&7|0)==0){m=v+1|0;p=d[v]|0}else{m=v}r=((p&128|0)==0?0:s)|r;p=p<<1;s=s>>>1;t=j+ -1|0;do{if((j|0)<2){a[n]=r;n=f+q|0;f=n;r=0;j=o;s=128}else{if((s|0)!=0){j=t;break}a[n]=r;r=0;n=n+1|0;j=t;s=128}}while(0);g=g+ -1|0;if((g|0)>0){v=m}else{break}}if((s|0)==128){break}a[n]=r;break}else{break c}}}while(0);PK(h);H=0;i=k;return H|0}}while(0);PK(h);break a}}while(0);PK(h)}}while(0);if((j&16384|0)!=0){H=6;i=k;return H|0}t=c[p+128>>2]|0;c[f+72>>2]=1869968492;h=f+110|0;b[h>>1]=0;b[n>>1]=0;G=c[s+188>>2]|0;F=c[s+104>>2]|0;H=c[t+(r<<4)+12>>2]|0;q=c[t+(r<<4)+8>>2]|0;o=f+188|0;kJ(c[o>>2]|0);c[f+176>>2]=0;q=pM(f+160|0,F,G,H,q)|0;if((q|0)!=0){H=q;i=k;return H|0}j=j&1;$W(n|0,(c[o>>2]|0)+20|0,20)|0;o=f+124|0;q=c[o>>2]&-6;c[o>>2]=q|4;do{if((g|0)!=0){if((e[g+14>>1]|0)>=24){break}c[o>>2]=q|260}}while(0);q=f+40|0;c[q>>2]=0;o=f+52|0;c[o>>2]=0;r=c[t+(r<<4)+4>>2]|0;s=c[p+16>>2]|0;t=c[p+12>>2]|0;if((s|0)!=(t|0)){r=_I(r,t,s)|0}if((c[p+36>>2]&1|0)==0){c[q>>2]=r;p=c[o>>2]|0}else{c[o>>2]=r;p=r;r=c[q>>2]|0}c[f+56>>2]=r;c[f+60>>2]=p;c[f+44>>2]=0;c[f+48>>2]=0;if((j|0)==0){p=c[g+16>>2]|0;g=c[g+20>>2]|0;if((b[h>>1]|0)>0){j=0;r=c[f+112>>2]|0;while(1){c[r>>2]=aJ(c[r>>2]|0,p)|0;H=r+4|0;c[H>>2]=aJ(c[H>>2]|0,g)|0;j=j+1|0;if((j|0)<(b[h>>1]|0)){r=r+8|0}else{break}}r=c[q>>2]|0}c[q>>2]=aJ(r,p)|0;c[o>>2]=aJ(c[o>>2]|0,g)|0}zK(n,m);G=c[l>>2]|0;c[f+24>>2]=(c[m+8>>2]|0)-G;H=c[m+4>>2]|0;c[f+28>>2]=(c[m+12>>2]|0)-H;c[f+32>>2]=G;c[f+36>>2]=H;H=0;i=k;return H|0}function oM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=a+288|0;gM(a,b,d,e)|0;a=g+12|0;d=c[a>>2]|0;b=g+16|0;g=c[b>>2]|0;if((d|0)==(g|0)){i=f;return 0}h=c[e>>2]|0;if((h|0)==0){d=0}else{d=_I(h,d,g)|0;c[e>>2]=d}e=e+4|0;if((c[e>>2]|0)==0){i=f;return 0}c[e>>2]=_I(d,c[a>>2]|0,c[b>>2]|0)|0;i=f;return 0}function pM(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;k=i;m=i;i=i+8|0;s=m;n=i;i=i+32|0;o=n;p=i;i=i+8|0;r=p;h=PJ(f,h+g|0)|0;if((h|0)!=0){H=h;i=k;return H|0}h=MK(f,j)|0;if((h|0)!=0){H=h;i=k;return H|0}u=c[f+32>>2]|0;h=u+j|0;do{if((j|0)!=0){if((a[u]|0)>=0){break}n=c[e+28>>2]|0;o=e+16|0;m=c[o>>2]|0;c[p>>2]=0;s=c[n>>2]|0;t=u+1|0;a:do{if((j|0)<1){l=52}else{v=d[u]|0;if((v&128|0)==0){l=52;break}q=v&63;b:do{if((v&8|0)!=0){u=u+2|0;c:do{if((j|0)>=2){t=a[t]|0;if(t<<24>>24==0){t=u}else{j=t&255;t=u;do{if((t+2|0)>>>0>h>>>0){break c}t=t+((d[t]|0)+2)|0;if(t>>>0>h>>>0){break c}j=j+ -1|0;}while((j|0)!=0)}c[p>>2]=0;break b}}while(0);c[p>>2]=8;r=8;break a}}while(0);v=m+q|0;j=e+20|0;u=c[j>>2]|0;if(v>>>0>u>>>0){v=v+3&-4;if(v>>>0>64){c[p>>2]=8;r=8;break}H=e+24|0;c[H>>2]=oJ(s,24,u,v,c[H>>2]|0,r)|0;r=c[p>>2]|0;if((r|0)!=0){break}c[j>>2]=v}if((q|0)==0){r=0;break}s=0;u=t;r=(c[e+24>>2]|0)+(m*24|0)|0;while(1){j=u+1|0;if(j>>>0>h>>>0){l=52;break a}t=d[u]|0;c[r>>2]=65536;if((t&16|0)!=0){v=u+3|0;if(v>>>0>h>>>0){l=52;break a}c[r>>2]=(d[j]<<8&65535|d[u+2|0])<<16>>16<<4;j=v}v=r+4|0;c[v>>2]=65536;if((t&32|0)!=0){u=j+2|0;if(u>>>0>h>>>0){l=52;break a}c[v>>2]=(d[j]<<8&65535|d[j+1|0])<<16>>16<<4;j=u}u=t&3;if((u|0)==1){u=j+2|0;if(u>>>0>h>>>0){l=52;break a}j=(d[j]<<8&65535|d[j+1|0])<<16>>16}else if((u|0)==2){u=j+1|0;if(u>>>0>h>>>0){l=52;break a}j=a[j]|0}else{u=j;j=0}v=t>>>2&3;if((v|0)==1){v=u+2|0;if(v>>>0>h>>>0){l=52;break a}u=(d[u]<<8&65535|d[u+1|0])<<16>>16}else if((v|0)==2){v=u+1|0;if(v>>>0>h>>>0){l=52;break a}u=a[u]|0}else{v=u;u=0}c[r+8>>2]=j;c[r+12>>2]=u;if((t&64|0)==0){j=v+1|0;if(j>>>0>h>>>0){l=52;break a}c[r+20>>2]=d[v]|0}else{j=v+2|0;if(j>>>0>h>>>0){l=52;break a}c[r+20>>2]=(d[v]<<8&65535|d[v+1|0])&65535}if((t&128|0)==0){u=j+2|0;if(u>>>0>h>>>0){l=52;break a}c[r+16>>2]=(d[j]<<8&65535|d[j+1|0])&65535}else{u=j+3|0;if(u>>>0>h>>>0){l=52;break a}c[r+16>>2]=d[j+1|0]<<8|a[j]<<16|d[j+2|0]}c[o>>2]=(c[o>>2]|0)+1;s=s+1|0;if(s>>>0>>0){r=r+24|0}else{break}}r=c[p>>2]|0}}while(0);if((l|0)==52){c[p>>2]=8;r=8}PK(f);if((r|0)!=0){H=r;i=k;return H|0}h=(c[o>>2]|0)-m|0;p=e+24|0;if((h|0)<=0){H=0;i=k;return H|0}o=n+22|0;n=n+24|0;q=0;while(1){r=c[p>>2]|0;v=q+m|0;s=b[o>>1]|0;r=pM(e,f,g,c[r+(v*24|0)+16>>2]|0,c[r+(v*24|0)+20>>2]|0)|0;if((r|0)!=0){l=181;break}w=c[p>>2]|0;r=(b[o>>1]|0)-s|0;u=w+(v*24|0)|0;x=c[u>>2]|0;do{if((x|0)==65536){if((c[w+(v*24|0)+4>>2]|0)!=65536){l=59;break}if((r|0)<=0){break}t=w+(v*24|0)+8|0;j=w+(v*24|0)+12|0;u=0;s=(c[n>>2]|0)+(s<<3)|0;while(1){c[s>>2]=(c[s>>2]|0)+(c[t>>2]|0);H=s+4|0;c[H>>2]=(c[H>>2]|0)+(c[j>>2]|0);u=u+1|0;if((u|0)<(r|0)){s=s+8|0}else{break}}}else{l=59}}while(0);d:do{if((l|0)==59){l=0;if((r|0)<=0){break}j=w+(v*24|0)+8|0;t=w+(v*24|0)+4|0;v=w+(v*24|0)+12|0;w=1;s=(c[n>>2]|0)+(s<<3)|0;while(1){H=aJ(c[s>>2]|0,x)|0;c[s>>2]=(c[j>>2]|0)+H;H=s+4|0;G=aJ(c[H>>2]|0,c[t>>2]|0)|0;c[H>>2]=(c[v>>2]|0)+G;if((w|0)>=(r|0)){break d}x=c[u>>2]|0;w=w+1|0;s=s+8|0}}}while(0);q=q+1|0;if((q|0)>=(h|0)){r=0;l=181;break}}if((l|0)==181){i=k;return r|0}}}while(0);c[m>>2]=0;g=e+28|0;r=c[c[g>>2]>>2]|0;p=u+1|0;e:do{if((j|0)<1){l=179}else{t=d[u]|0;if((t&128|0)!=0){l=179;break}do{if((t&4|0)==0){if((t&2|0)==0){q=p;p=0}else{if((j|0)<2){l=179;break e}q=u+2|0;p=d[p]|0}if((t&1|0)==0){u=q;q=0;break}u=q+1|0;if(u>>>0>h>>>0){l=179;break e}q=d[q]|0}else{if((j|0)<2){l=179;break e}q=d[p]|0;u=u+2|0;p=q&15;q=q>>>4}}while(0);j=p+q|0;v=e+4|0;x=c[v>>2]|0;if(j>>>0>x>>>0){w=j+7&-8;C=e+8|0;r=oJ(r,4,x,w,c[C>>2]|0,s)|0;c[C>>2]=r;C=c[m>>2]|0;if((C|0)!=0){break}c[v>>2]=w;v=r}else{v=c[e+8>>2]|0}s=e+8|0;r=e+12|0;c[r>>2]=v+(p<<2);if((j|0)!=0){v=0;w=0;x=0;while(1){if((v&7|0)==0){y=u+1|0;if(y>>>0>h>>>0){l=179;break e}w=d[u]|0}else{y=u}if((w&1|0)==0){u=y+1|0;if(u>>>0>h>>>0){l=179;break e}x=(d[y]|0)+x|0}else{u=y+2|0;if(u>>>0>h>>>0){l=179;break e}x=(d[y]<<8&65535|d[y+1|0])<<16>>16}c[(c[s>>2]|0)+(v<<2)>>2]=x;v=v+1|0;if(v>>>0>>0){w=w>>>1}else{break}}}f:do{if((t&8|0)==0){A=u}else{A=u+1|0;g:do{if(A>>>0<=h>>>0){t=a[u]|0;if(t<<24>>24!=0){t=t&255;do{if((A+2|0)>>>0>h>>>0){break g}A=A+((d[A]|0)+2)|0;if(A>>>0>h>>>0){break g}t=t+ -1|0;}while((t|0)!=0)}c[m>>2]=0;break f}}while(0);c[m>>2]=8;C=8;break e}}while(0);e=e+32|0;a[e]=0;t=o+4|0;c[t>>2]=0;c[n>>2]=0;v=o+24|0;x=n;y=c[x>>2]|0;x=c[x+4>>2]|0;w=v;c[w>>2]=y;c[w+4>>2]=x;w=o+28|0;j=o+8|0;u=o+16|0;x=x|0;h:while(1){z=A+1|0;if(z>>>0>h>>>0){l=179;break e}A=d[A]|0;D=A&15;A=A>>>4;switch(A|0){case 6:{C=3;D=2958;x=o;B=0;l=111;break};case 7:{C=3;D=3627;x=o;B=0;l=111;break};case 3:{if(D>>>0>=q>>>0){l=179;break e}c[n>>2]=y;c[t>>2]=c[(c[r>>2]|0)+(D<<2)>>2];x=n;y=c[x>>2]|0;x=c[x+4>>2]|0;H=v;c[H>>2]=y;c[H+4>>2]=x;x=x|0;break};case 0:{break h};case 5:case 4:case 1:{C=1;x=o;B=0;l=111;break};case 2:{if(D>>>0>=p>>>0){l=179;break e}c[n>>2]=c[(c[s>>2]|0)+(D<<2)>>2];c[t>>2]=x;x=n;y=c[x>>2]|0;x=c[x+4>>2]|0;H=v;c[H>>2]=y;c[H+4>>2]=x;x=x|0;break};default:{C=4;x=o;B=0;l=111}}if((l|0)==111){while(1){l=0;E=D&3;if((E|0)==1){y=z+2|0;if(y>>>0>h>>>0){l=179;break e}c[x>>2]=(d[z]<<8&65535|d[z+1|0])<<16>>16;z=y}else if((E|0)==0){y=z+1|0;if(y>>>0>h>>>0){l=179;break e}z=d[z]|0;if(z>>>0>=p>>>0){l=179;break e}c[x>>2]=c[(c[s>>2]|0)+(z<<2)>>2];z=y}else if((E|0)==2){E=z+1|0;if(E>>>0>h>>>0){l=179;break e}c[x>>2]=(a[z]|0)+y;z=E}else{c[x>>2]=y}y=D>>>2&3;if((y|0)==0){y=z+1|0;if(y>>>0>h>>>0){l=179;break e}z=d[z]|0;if(z>>>0>=q>>>0){l=179;break e}c[x+4>>2]=c[(c[r>>2]|0)+(z<<2)>>2];z=y}else if((y|0)==2){y=z+1|0;if(y>>>0>h>>>0){l=179;break e}c[x+4>>2]=(c[w>>2]|0)+(a[z]|0);z=y}else if((y|0)==1){y=z+2|0;if(y>>>0>h>>>0){l=179;break e}c[x+4>>2]=(d[z]<<8&65535|d[z+1|0])<<16>>16;z=y}else{c[x+4>>2]=c[w>>2]}if((B|0)==0&(C|0)==4){y=z+1|0;if(y>>>0>h>>>0){l=179;break e}C=3;D=d[z]|0;z=y}else{D=D>>>4}E=x;y=c[E>>2]|0;E=c[E+4>>2]|0;H=v;c[H>>2]=y;c[H+4>>2]=E;B=B+1|0;if(B>>>0>>0){x=x+8|0;l=111}else{break}}x=E|0}switch(A|0){case 5:case 4:{A=c[g>>2]|0;l=A+58|0;if((a[e]|0)!=0){F=b[l>>1]|0;E=F<<16>>16;H=E+ -1|0;D=A+56|0;C=b[D>>1]|0;if(C<<16>>16>0){B=b[(c[A+68>>2]|0)+((C<<16>>16)+ -1<<1)>>1]|0}else{B=0}do{if((H|0)>(B|0)){G=c[A+60>>2]|0;if((c[G+(B<<3)>>2]|0)!=(c[G+(H<<3)>>2]|0)){break}if((c[G+(B<<3)+4>>2]|0)!=(c[G+(H<<3)+4>>2]|0)){break}b[l>>1]=F+ -1<<16>>16;H=E+ -2|0}}while(0);if((H|0)>=(B|0)){b[D>>1]=C+1<<16>>16;b[(c[A+68>>2]|0)+(C<<16>>16<<1)>>1]=H}a[e]=0}a[e]=1;if(((b[A+22>>1]|0)+1+(b[l>>1]|0)|0)>>>0>(c[A+4>>2]|0)>>>0){l=165}else{if(((b[A+20>>1]|0)+1+(b[A+56>>1]|0)|0)>>>0>(c[A+8>>2]|0)>>>0){l=165}else{l=167}}do{if((l|0)==165){l=0;C=pJ(A,1,1)|0;if((C|0)!=0){break}if((a[e]|0)==0){C=8}else{l=167}}}while(0);do{if((l|0)==167){l=0;B=c[g>>2]|0;A=B+58|0;C=b[A>>1]|0;if(((b[B+22>>1]|0)+1+(C<<16>>16)|0)>>>0>(c[B+4>>2]|0)>>>0){C=pJ(B,1,0)|0;if((C|0)!=0){break}C=b[A>>1]|0}C=C<<16>>16;F=n;G=c[F+4>>2]|0;H=(c[B+60>>2]|0)+(C<<3)|0;c[H>>2]=c[F>>2];c[H+4>>2]=G;a[(c[B+64>>2]|0)+C|0]=1;b[A>>1]=(b[A>>1]|0)+1<<16>>16;C=0}}while(0);c[m>>2]=C;break};case 0:{break h};case 3:case 2:case 1:{B=c[g>>2]|0;do{if((a[e]|0)==0){C=8}else{A=B+58|0;C=b[A>>1]|0;if(((b[B+22>>1]|0)+1+(C<<16>>16)|0)>>>0>(c[B+4>>2]|0)>>>0){C=pJ(B,1,0)|0;if((C|0)!=0){break}C=b[A>>1]|0}C=C<<16>>16;F=n;G=c[F+4>>2]|0;H=(c[B+60>>2]|0)+(C<<3)|0;c[H>>2]=c[F>>2];c[H+4>>2]=G;a[(c[B+64>>2]|0)+C|0]=1;b[A>>1]=(b[A>>1]|0)+1<<16>>16;C=0}}while(0);c[m>>2]=C;break};default:{A=c[g>>2]|0;do{if((a[e]|0)==0){C=8}else{B=A+58|0;C=b[B>>1]|0;if(((b[A+22>>1]|0)+3+(C<<16>>16)|0)>>>0>(c[A+4>>2]|0)>>>0){C=pJ(A,3,0)|0;if((C|0)!=0){break}C=b[B>>1]|0}E=c[A+60>>2]|0;F=C<<16>>16;H=c[A+64>>2]|0;A=n;D=c[A+4>>2]|0;G=E+(F<<3)|0;c[G>>2]=c[A>>2];c[G+4>>2]=D;G=F+1|0;D=j;A=c[D+4>>2]|0;C=E+(G<<3)|0;c[C>>2]=c[D>>2];c[C+4>>2]=A;C=F+2|0;A=u;D=c[A+4>>2]|0;E=E+(C<<3)|0;c[E>>2]=c[A>>2];c[E+4>>2]=D;a[H+F|0]=2;a[H+G|0]=2;a[H+C|0]=1;b[B>>1]=(b[B>>1]|0)+3<<16>>16;C=0}}while(0);c[m>>2]=C}}if((C|0)==0){A=z}else{break e}}h=c[g>>2]|0;if((a[e]|0)!=0){s=h+58|0;t=b[s>>1]|0;r=t<<16>>16;j=r+ -1|0;n=h+56|0;o=b[n>>1]|0;if(o<<16>>16>0){p=b[(c[h+68>>2]|0)+((o<<16>>16)+ -1<<1)>>1]|0}else{p=0}do{if((j|0)>(p|0)){q=c[h+60>>2]|0;if((c[q+(p<<3)>>2]|0)!=(c[q+(j<<3)>>2]|0)){break}if((c[q+(p<<3)+4>>2]|0)!=(c[q+(j<<3)+4>>2]|0)){break}b[s>>1]=t+ -1<<16>>16;j=r+ -2|0}}while(0);if((j|0)>=(p|0)){b[n>>1]=o+1<<16>>16;b[(c[h+68>>2]|0)+(o<<16>>16<<1)>>1]=j}a[e]=0;h=c[g>>2]|0}sJ(h);C=c[m>>2]|0}}while(0);if((l|0)==179){c[m>>2]=8;C=8}PK(f);H=C;i=k;return H|0}function qM(b,e,f){b=b|0;e=e|0;f=f|0;var 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;g=i;k=i;i=i+8|0;s=k;m=c[f>>2]|0;c[k>>2]=0;r=b+5|0;do{if(r>>>0<=e>>>0){p=d[b+3|0]|0;q=a[b+4|0]|0;j=q&255;h=f+92|0;n=c[h>>2]|0;o=n+j|0;l=f+96|0;do{if(o>>>0>(c[l>>2]|0)>>>0){o=o+3&-4;t=f+100|0;c[t>>2]=oJ(m,36,n,o,c[t>>2]|0,s)|0;m=c[k>>2]|0;if((m|0)==0){c[l>>2]=o;break}else{t=m;i=g;return t|0}}}while(0);w=p&1;m=(w|0)==0;v=p&2;l=(v|0)==0;u=p&4;n=(u|0)==0;s=p&8;o=(s|0)==0;t=p&16;p=(t|0)==0;if((b+((da((w|8)+(v>>>1)+(u>>>2)+(s>>>3)+(t>>>4)|0,j)|0)+5)|0)>>>0>e>>>0){break}if(q<<24>>24==0){k=0}else{q=0;f=(c[f+100>>2]|0)+((c[h>>2]|0)*36|0)|0;while(1){if(m){b=d[r]|0;r=r+1|0}else{b=((d[r]|0)<<8&65535|(d[r+1|0]|0))&65535;r=r+2|0}c[f>>2]=b;if(l){b=d[r]|0;r=r+1|0}else{b=((d[r]|0)<<8&65535|(d[r+1|0]|0))&65535;r=r+2|0}c[f+4>>2]=b;c[f+8>>2]=d[r]|0;if(n){b=((d[r+1|0]|0)<<8&65535|(d[r+2|0]|0))&65535;r=r+3|0}else{b=(d[r+2|0]|0)<<8|(d[r+1|0]|0)<<16|(d[r+3|0]|0);r=r+4|0}c[f+20>>2]=b;if(o){b=((d[r]|0)<<8&65535|(d[r+1|0]|0))&65535;r=r+2|0}else{b=(d[r+1|0]|0)<<8|(d[r]|0)<<16|(d[r+2|0]|0);r=r+3|0}c[f+24>>2]=b;if(p){b=d[r]|0;r=r+1|0}else{b=((d[r]|0)<<8&65535|(d[r+1|0]|0))&65535;r=r+2|0}c[f+28>>2]=b;q=q+1|0;if(q>>>0>>0){f=f+36|0}else{break}}k=c[k>>2]|0}c[h>>2]=(c[h>>2]|0)+j;w=k;i=g;return w|0}}while(0);c[k>>2]=8;w=8;i=g;return w|0}function rM(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=i;i=i+8|0;c[g>>2]=0;d=d-b|0;h=e+80|0;if((c[h>>2]|0)!=0){j=0;i=f;return j|0}j=jJ(c[e>>2]|0,d+1|0,g)|0;c[h>>2]=j;e=c[g>>2]|0;if((e|0)!=0){j=e;i=f;return j|0}$W(j|0,b|0,d|0)|0;a[(c[h>>2]|0)+d|0]=0;j=c[g>>2]|0;i=f;return j|0}function sM(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;f=i;i=i+8|0;m=f;c[f>>2]=0;n=c[e>>2]|0;l=e+76|0;if((c[l>>2]|0)!=0){n=0;i=g;return n|0}j=a+1|0;do{if(j>>>0<=b>>>0){h=d[a]|0;k=h&15;h=k+(h>>>4)|0;if((a+(h<<1|1)|0)>>>0>b>>>0){break}b=oJ(n,4,0,h,0,m)|0;a=c[f>>2]|0;if((a|0)!=0){n=a;i=g;return n|0}c[l>>2]=b;c[e+64>>2]=b+(k<<2);if((h|0)==0){n=0;i=g;return n|0}while(1){c[b>>2]=((d[j]|0)<<8&65535|(d[j+1|0]|0))<<16>>16;h=h+ -1|0;if((h|0)==0){break}else{b=b+4|0;j=j+2|0}}n=c[f>>2]|0;i=g;return n|0}}while(0);c[f>>2]=8;n=8;i=g;return n|0}function tM(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=i;j=i;i=i+8|0;c[j>>2]=0;k=c[g>>2]|0;l=jJ(k,24,j)|0;if((c[j>>2]|0)!=0){t=j;t=c[t>>2]|0;i=n;return t|0}m=e+4|0;do{if(m>>>0<=f>>>0){p=a[e]|0;h=l+4|0;a[h]=p;b[l+6>>1]=(d[e+1|0]|0)<<8&65535|(d[e+2|0]|0);r=a[e+3|0]|0;a[l+5|0]=r;c[l+12>>2]=(c[g+4>>2]|0)+m-(c[g+148>>2]|0);o=(r&1)==0;q=o?3:5;t=(r&2)==0;s=q+1|0;r=t?q:s;c[l+8>>2]=t?q:s;q=p&255;if((e+((da(q,r)|0)+4)|0)>>>0>f>>>0){break}if(p<<24>>24==0){lJ(k,l);t=j;t=c[t>>2]|0;i=n;return t|0}if(o){c[l+16>>2]=(d[m]|0)<<16|(d[e+5|0]|0);t=da(q+ -1|0,r)|0;c[l+20>>2]=(d[e+(t+4)|0]|0)<<16|(d[e+(t+5)|0]|0)}else{c[l+16>>2]=((d[e+6|0]|0)<<8&65535|(d[e+7|0]|0))&65535|(((d[m]|0)<<8&65535|(d[e+5|0]|0))&65535)<<16;t=da(q+ -1|0,r)|0;c[l+20>>2]=((d[e+(t+6)|0]|0)<<8&65535|(d[e+(t+7)|0]|0))&65535|(((d[e+(t+4)|0]|0)<<8&65535|(d[e+(t+5)|0]|0))&65535)<<16}c[l>>2]=0;t=g+140|0;c[c[t>>2]>>2]=l;c[t>>2]=l;t=g+132|0;c[t>>2]=(c[t>>2]|0)+(d[h]|0);t=j;t=c[t>>2]|0;i=n;return t|0}}while(0);lJ(k,l);c[j>>2]=8;t=j;t=c[t>>2]|0;i=n;return t|0}function uM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;f=i;i=i+8|0;h=f;c[a+32>>2]=d;e=a+24|0;c[e>>2]=oJ(d,4,0,b,0,h)|0;do{if((c[f>>2]|0)==0){c[a+28>>2]=oJ(d,4,0,b,0,h)|0;if((c[f>>2]|0)!=0){break}c[a+16>>2]=b;c[a+12>>2]=-559038737;c[a+20>>2]=0;c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;$W(a+36|0,207760,16)|0;a=0;i=g;return a|0}}while(0);lJ(d,c[e>>2]|0);c[e>>2]=0;a=c[f>>2]|0;i=g;return a|0}function vM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;f=i;g=i;i=i+8|0;b=c[a+32>>2]|0;d=c[a>>2]|0;if((d|0)==0){i=f;return}e=a+4|0;h=jJ(b,c[e>>2]|0,g)|0;c[a>>2]=h;if((c[g>>2]|0)!=0){i=f;return}$W(h|0,d|0,c[e>>2]|0)|0;j=c[a+16>>2]|0;k=c[a+24>>2]|0;h=(c[a>>2]|0)-d|0;g=k+(j<<2)|0;if((j|0)>0){do{j=c[k>>2]|0;if((j|0)!=0){c[k>>2]=j+h}k=k+4|0;}while(k>>>0>>0)}c[a+8>>2]=c[e>>2];lJ(b,d);i=f;return}function wM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;o=i;i=i+8|0;p=o;if((b|0)<0){q=6;i=g;return q|0}n=a+16|0;if((c[n>>2]|0)<=(b|0)|(e|0)<0){q=6;i=g;return q|0}f=a+4|0;m=(c[f>>2]|0)+e|0;j=a+8|0;l=c[j>>2]|0;do{if(m>>>0>l>>>0){h=c[a>>2]|0;k=d-h|0;k=k>>>0>=l>>>0?-1:k;do{l=l+1024+(l>>>2)&-1024;}while(l>>>0>>0);m=c[a+32>>2]|0;p=jJ(m,l,p)|0;c[a>>2]=p;o=c[o>>2]|0;if((o|0)!=0){c[a>>2]=h;q=o;i=g;return q|0}if((h|0)!=0){$W(p|0,h|0,c[j>>2]|0)|0;q=c[n>>2]|0;p=c[a+24>>2]|0;n=(c[a>>2]|0)-h|0;o=p+(q<<2)|0;if((q|0)>0){do{q=c[p>>2]|0;if((q|0)!=0){c[p>>2]=q+n}p=p+4|0;}while(p>>>0>>0)}lJ(m,h)}c[j>>2]=l;if((k|0)<=-1){break}d=(c[a>>2]|0)+k|0}}while(0);c[(c[a+24>>2]|0)+(b<<2)>>2]=(c[a>>2]|0)+(c[f>>2]|0);c[(c[a+28>>2]|0)+(b<<2)>>2]=e;$W((c[a>>2]|0)+(c[f>>2]|0)|0,d|0,e|0)|0;c[f>>2]=(c[f>>2]|0)+e;q=0;i=g;return q|0}function xM(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=c[a+32>>2]|0;e=a+12|0;if((c[e>>2]|0)!=-559038737){i=b;return}lJ(d,c[a>>2]|0);c[a>>2]=0;f=a+24|0;lJ(d,c[f>>2]|0);c[f>>2]=0;a=a+28|0;lJ(d,c[a>>2]|0);c[a>>2]=0;c[e>>2]=0;i=b;return}function yM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;c[a+12>>2]=0;c[a+4>>2]=b;c[a+8>>2]=d;c[a>>2]=b;c[a+16>>2]=e;$W(a+20|0,207776,52)|0;i=f;return}function zM(a){a=a|0;i=i;return}function AM(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[b+8>>2]|0;g=c[b>>2]|0;a:do{if(g>>>0>>0){while(1){b:do{switch(a[g]|0){case 37:{f=37;while(1){if(f<<24>>24==10|f<<24>>24==13){break b}g=g+1|0;if(g>>>0>=e>>>0){break b}f=a[g]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break a}}}while(0);g=g+1|0;if(g>>>0>=e>>>0){break a}}}}while(0);c[b>>2]=g;i=d;return}function BM(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;e=c[b>>2]|0;g=c[b+8>>2]|0;a:do{if(e>>>0>>0){l=e;while(1){b:do{switch(a[l]|0){case 37:{j=37;while(1){if(j<<24>>24==10|j<<24>>24==13){break b}l=l+1|0;if(l>>>0>=g>>>0){break b}j=a[l]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break a}}}while(0);l=l+1|0;if(l>>>0>=g>>>0){break a}}}else{l=e}}while(0);c:do{if(l>>>0>>0){switch(a[l]|0){case 40:{j=0;while(1){d:while(1){h=a[l]|0;k=l+1|0;e:do{if(h<<24>>24==41){h=56;break d}else if(h<<24>>24==40){h=54;break d}else if(h<<24>>24==92){if((k|0)==(g|0)){h=3;break c}switch(d[k]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{l=l+2|0;break e};default:{}}if(k>>>0>>0){l=k;h=0}else{l=k;break}do{if(((a[l]|0)+ -48<<24>>24&255)>=8){break e}l=l+1|0;h=h+1|0;}while(h>>>0<3&l>>>0>>0)}else{l=k}}while(0);if(l>>>0>=g>>>0){g=l;h=3;break c}}if((h|0)==54){j=j+1|0}else if((h|0)==56){j=j+ -1|0;if((j|0)==0){g=k;h=0;break c}}if(k>>>0>>0){l=k}else{g=k;h=3;break c}}break};case 93:case 91:{g=l+1|0;h=0;break c};case 47:{l=l+1|0;break};case 60:{h=l+1|0;do{if(h>>>0>>0){if((a[h]|0)!=60){break}g=l+2|0;h=0;break c}}while(0);do{l=l+1|0;if(l>>>0>=g>>>0){break}f:do{g:do{switch(a[l]|0){case 37:{h=37;while(1){if(h<<24>>24==10|h<<24>>24==13){break g}l=l+1|0;if(l>>>0>=g>>>0){break g}h=a[l]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break f}}}while(0);l=l+1|0;}while(l>>>0>>0);if(l>>>0>=g>>>0){break}m=a[l]|0;}while((m+ -48<<24>>24&255)<10|(m+ -65<<24>>24&255)<6|(m+ -97<<24>>24&255)<6);if(l>>>0>>0){if((a[l]|0)!=62){g=l;h=3;break c}}g=l+1|0;h=0;break c};case 123:{k=123;j=0;h:while(1){i:do{switch(k&255|0){case 125:{j=j+ -1|0;if((j|0)==0){h=13;break h}break};case 60:{do{l=l+1|0;if(l>>>0>=g>>>0){break}j:do{k:do{switch(a[l]|0){case 37:{k=37;while(1){if(k<<24>>24==10|k<<24>>24==13){break k}l=l+1|0;if(l>>>0>=g>>>0){break k}k=a[l]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break j}}}while(0);l=l+1|0;}while(l>>>0>>0);if(l>>>0>=g>>>0){break}m=a[l]|0;}while((m+ -48<<24>>24&255)<10|(m+ -65<<24>>24&255)<6|(m+ -97<<24>>24&255)<6);if(l>>>0>>0){if((a[l]|0)!=62){g=l;h=41;break h}}l=l+1|0;break};case 40:{if(l>>>0>>0){k=0}else{g=l;h=41;break h}while(1){h=l;l:while(1){m=a[h]|0;l=h+1|0;m:do{if(m<<24>>24==92){if((l|0)==(g|0)){h=41;break h}switch(d[l]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{l=h+2|0;break m};default:{}}if(l>>>0>>0){h=0}else{break}do{if(((a[l]|0)+ -48<<24>>24&255)>=8){break m}l=l+1|0;h=h+1|0;}while(h>>>0<3&l>>>0>>0)}else if(m<<24>>24==41){h=26;break l}else if(m<<24>>24==40){h=24;break l}}while(0);if(l>>>0>>0){h=l}else{g=l;h=41;break h}}if((h|0)==24){k=k+1|0}else if((h|0)==26){h=0;k=k+ -1|0;if((k|0)==0){break i}}if(l>>>0>=g>>>0){g=l;h=41;break h}}break};case 123:{j=j+1|0;break};case 37:{while(1){if(k<<24>>24==10|k<<24>>24==13){break i}l=l+1|0;if(l>>>0>=g>>>0){break i}k=a[l]|0}break};default:{}}}while(0);l=l+1|0;if(l>>>0>=g>>>0){g=l;k=0;break}k=a[l]|0}if((h|0)==13){g=l+1|0;j=0;k=0}else if((h|0)==41){g=g+1|0;k=3}h=(j|0)==0?k:3;break c};case 62:{j=l+1|0;if(j>>>0>=g>>>0){g=j;h=3;break c}h=(a[j]|0)==62;g=h?l+2|0:j;h=h?0:3;break c};default:{}}if(l>>>0>=g>>>0){g=l;h=0;break}while(1){switch(a[l]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{g=l;h=0;break c};default:{}}l=l+1|0;if(l>>>0>=g>>>0){g=l;h=0;break c}}}else{g=l;h=0}}while(0);c[b+12>>2]=(g|0)==(e|0)?3:h;c[b>>2]=g;i=f;return}function CM(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[b+8>>2]|0;g=c[b>>2]|0;a:do{if(g>>>0>>0){while(1){b:do{switch(a[g]|0){case 37:{f=37;while(1){if(f<<24>>24==10|f<<24>>24==13){break b}g=g+1|0;if(g>>>0>=e>>>0){break b}f=a[g]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break a}}}while(0);g=g+1|0;if(g>>>0>=e>>>0){break a}}}}while(0);c[b>>2]=g;g=nN(b,e)|0;i=d;return g|0}function DM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=c[b+8>>2]|0;h=c[b>>2]|0;a:do{if(h>>>0>>0){while(1){b:do{switch(a[h]|0){case 37:{g=37;while(1){if(g<<24>>24==10|g<<24>>24==13){break b}h=h+1|0;if(h>>>0>=f>>>0){break b}g=a[h]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break a}}}while(0);h=h+1|0;if(h>>>0>=f>>>0){break a}}}}while(0);c[b>>2]=h;h=mN(b,f,d)|0;i=e;return h|0}function EM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;k=b+8|0;l=c[k>>2]|0;j=c[b>>2]|0;a:do{if(j>>>0>>0){while(1){b:do{switch(a[j]|0){case 37:{m=37;while(1){if(m<<24>>24==10|m<<24>>24==13){break b}j=j+1|0;if(j>>>0>=l>>>0){break b}m=a[j]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break a}}}while(0);j=j+1|0;if(j>>>0>=l>>>0){break a}}}}while(0);c[b>>2]=j;if(j>>>0>=l>>>0){o=0;i=h;return o|0}if(g<<24>>24==0){k=e<<1;l=l-j|0;l=k>>>0>l>>>0?l:k;do{if((l|0)==0){k=0;g=0}else{e=1;k=0;g=0;c:do{m=a[j+k|0]|0;d:do{switch(m<<24>>24){case 0:case 9:case 10:case 12:case 13:case 32:{break};default:{if(m<<24>>24<0){break c}m=a[208184+(m&127)|0]|0;if((m&255)>15){break c}e=m<<24>>24|e<<4;if((e&256|0)==0){break d}a[d+g|0]=e;e=1;g=g+1|0}}}while(0);k=k+1|0;}while(k>>>0>>0);if((e|0)==1){break}a[d+g|0]=e<<4;g=g+1|0}}while(0);c[f>>2]=g}else{if((a[j]|0)!=60){o=3;i=h;return o|0}g=e<<1;l=l-(j+1)|0;e=g>>>0>l>>>0?l:g;do{if((e|0)==0){g=0;l=0}else{m=1;n=0;l=0;e:while(1){g=n+1|0;o=a[j+g|0]|0;f:do{switch(o<<24>>24){case 0:case 9:case 10:case 12:case 13:case 32:{break};default:{if(o<<24>>24<0){g=n;break e}o=a[208184+(o&127)|0]|0;if((o&255)>15){g=n;break e}m=o<<24>>24|m<<4;if((m&256|0)==0){break f}a[d+l|0]=m;m=1;l=l+1|0}}}while(0);if(g>>>0>>0){n=g}else{break}}if((m|0)==1){break}a[d+l|0]=m<<4;l=l+1|0}}while(0);d=j+(g+1)|0;c[f>>2]=l;do{if(d>>>0<(c[k>>2]|0)>>>0){if((a[d]|0)==62){break}else{b=3}i=h;return b|0}}while(0);k=g+2|0}c[b>>2]=j+k;o=0;i=h;return o|0}function FM(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;h=i;i=i+8|0;j=h;k=c[d+8>>2]|0;o=c[d>>2]|0;a:do{if(o>>>0>>0){while(1){b:do{switch(a[o]|0){case 37:{l=37;while(1){if(l<<24>>24==10|l<<24>>24==13){break b}o=o+1|0;if(o>>>0>=k>>>0){break b}l=a[o]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break a}}}while(0);o=o+1|0;if(o>>>0>=k>>>0){break a}}}}while(0);c[d>>2]=o;c[h>>2]=o;c:do{if(o>>>0>>0){l=a[o]|0;if(l<<24>>24==91){l=93;m=10}else{if(l<<24>>24==123){l=125;m=10}else{n=0;l=0}}if((m|0)==10){o=o+1|0;c[h>>2]=o;n=1}d:do{if((f|0)==0){e=n;n=0;while(1){if(o>>>0>=k>>>0){break c}e:do{f:do{switch(a[o]|0){case 37:{f=37;while(1){if(f<<24>>24==10|f<<24>>24==13){break f}o=o+1|0;if(o>>>0>=k>>>0){break f}f=a[o]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break e}}}while(0);o=o+1|0;}while(o>>>0>>0);c[h>>2]=o;if(o>>>0>=k>>>0){break c}if((a[o]|0)==l<<24>>24){break d}mN(j,k,0)|0;f=c[h>>2]|0;if((o|0)==(f|0)){n=-1;break c}n=n+1|0;if(e){o=f;e=1}else{o=f;break c}}}else{m=n;n=0;while(1){if(o>>>0>>0){p=o}else{break c}g:while(1){h:do{switch(a[p]|0){case 37:{o=37;while(1){if(o<<24>>24==10|o<<24>>24==13){break h}p=p+1|0;if(p>>>0>=k>>>0){break h}o=a[p]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{o=p;break g}}}while(0);o=p+1|0;if(o>>>0>>0){p=o}else{break}}c[h>>2]=o;if(o>>>0>=k>>>0){break c}if((a[o]|0)==l<<24>>24){break d}if((n|0)>=(e|0)){break c}b[f+(n<<1)>>1]=(mN(j,k,0)|0)>>>16;p=c[h>>2]|0;if((o|0)==(p|0)){n=-1;break c}n=n+1|0;if(m){o=p;m=1}else{o=p;break c}}}}while(0);o=o+1|0;c[h>>2]=o}else{n=0}}while(0);c[d>>2]=o;i=g;return n|0}function GM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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;g=i;k=i;i=i+8|0;h=k;j=i;i=i+8|0;l=c[b+8>>2]|0;r=c[b>>2]|0;a:do{if(r>>>0>>0){while(1){b:do{switch(a[r]|0){case 37:{m=37;while(1){if(m<<24>>24==10|m<<24>>24==13){break b}r=r+1|0;if(r>>>0>=l>>>0){break b}m=a[r]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break a}}}while(0);r=r+1|0;if(r>>>0>=l>>>0){break a}}}}while(0);c[b>>2]=r;c[k>>2]=r;c:do{if(r>>>0>>0){m=a[r]|0;if(m<<24>>24==91){m=93;n=10}else{if(m<<24>>24==123){m=125;n=10}else{p=0;m=0}}if((n|0)==10){r=r+1|0;c[k>>2]=r;p=1}n=(e|0)!=0;o=n^1;q=0;while(1){if(r>>>0>>0){s=r}else{break c}d:while(1){e:do{switch(a[s]|0){case 37:{r=37;while(1){if(r<<24>>24==10|r<<24>>24==13){break e}s=s+1|0;if(s>>>0>=l>>>0){break e}r=a[s]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{r=s;break d}}}while(0);r=s+1|0;if(r>>>0>>0){s=r}else{break}}c[k>>2]=r;if(r>>>0>=l>>>0){break c}if((a[r]|0)==m<<24>>24){break}if(!((q|0)<(d|0)|o)){break c}s=mN(h,l,f)|0;if(n){t=e+(q<<2)|0}else{t=j}c[t>>2]=s;s=c[k>>2]|0;if((r|0)==(s|0)){q=-1;break c}q=q+1|0;if(p){r=s;p=1}else{r=s;break c}}r=r+1|0;c[k>>2]=r}else{q=0}}while(0);c[b>>2]=r;i=g;return q|0}function HM(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;g=e+8|0;c[g>>2]=0;c[e>>2]=0;h=e+4|0;c[h>>2]=0;l=b+8|0;j=c[l>>2]|0;n=c[b>>2]|0;a:do{if(n>>>0>>0){while(1){b:do{switch(a[n]|0){case 37:{m=37;while(1){if(m<<24>>24==10|m<<24>>24==13){break b}n=n+1|0;if(n>>>0>=j>>>0){break b}m=a[n]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break a}}}while(0);n=n+1|0;if(n>>>0>=j>>>0){break a}}}}while(0);c[b>>2]=n;if(n>>>0>=j>>>0){i=f;return}m=d[n]|0;c:do{if((m|0)==40){c[g>>2]=2;c[e>>2]=n;l=0;while(1){d:while(1){k=a[n]|0;m=n+1|0;e:do{if(k<<24>>24==92){if((m|0)==(j|0)){k=81;break c}switch(d[m]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{n=n+2|0;break e};default:{}}if(m>>>0>>0){n=m;k=0}else{n=m;break}do{if(((a[n]|0)+ -48<<24>>24&255)>=8){break e}n=n+1|0;k=k+1|0;}while(k>>>0<3&n>>>0>>0)}else if(k<<24>>24==41){k=22;break d}else if(k<<24>>24==40){k=20;break d}else{n=m}}while(0);if(n>>>0>=j>>>0){j=n;k=81;break c}}if((k|0)==20){l=l+1|0}else if((k|0)==22){k=0;l=l+ -1|0;if((l|0)==0){break}}if(m>>>0>>0){n=m}else{j=m;k=81;break c}}c[h>>2]=m;j=m}else if((m|0)==91){c[g>>2]=3;q=n+1|0;c[e>>2]=n;c[b>>2]=q;m=c[l>>2]|0;f:do{if(q>>>0>>0){while(1){g:do{switch(a[q]|0){case 0:case 12:case 9:case 10:case 13:case 32:{break};case 37:{n=37;while(1){if(n<<24>>24==10|n<<24>>24==13){break g}q=q+1|0;if(q>>>0>=m>>>0){break g}n=a[q]|0}break};default:{break f}}}while(0);q=q+1|0;if(q>>>0>=m>>>0){break f}}}}while(0);c[b>>2]=q;if(q>>>0>=j>>>0){j=q;k=81;break}m=b+12|0;n=1;while(1){if((c[m>>2]|0)!=0){j=q;k=81;break c}o=a[q]|0;if(o<<24>>24==91){n=n+1|0}else if(o<<24>>24==93){if((n|0)<2){break}else{n=n+ -1|0}}c[b>>2]=q;BM(b);o=c[l>>2]|0;q=c[b>>2]|0;h:do{if(q>>>0>>0){while(1){i:do{switch(a[q]|0){case 0:case 12:case 9:case 10:case 13:case 32:{break};case 37:{p=37;while(1){if(p<<24>>24==10|p<<24>>24==13){break i}q=q+1|0;if(q>>>0>=o>>>0){break i}p=a[q]|0}break};default:{break h}}}while(0);q=q+1|0;if(q>>>0>=o>>>0){break h}}}}while(0);c[b>>2]=q;if(q>>>0>=j>>>0){j=q;k=81;break c}}j=q+1|0;c[h>>2]=j}else if((m|0)==123){c[g>>2]=3;c[e>>2]=n;l=0;j:while(1){m=a[n]|0;k:do{switch(m&255|0){case 40:{if(n>>>0>>0){m=0}else{j=n;k=55;break j}while(1){o=n;l:while(1){k=a[o]|0;n=o+1|0;m:do{if(k<<24>>24==41){k=40;break l}else if(k<<24>>24==40){k=38;break l}else if(k<<24>>24==92){if((n|0)==(j|0)){k=55;break j}switch(d[n]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{n=o+2|0;break m};default:{}}if(n>>>0>>0){k=0}else{break}do{if(((a[n]|0)+ -48<<24>>24&255)>=8){break m}n=n+1|0;k=k+1|0;}while(k>>>0<3&n>>>0>>0)}}while(0);if(n>>>0>>0){o=n}else{j=n;k=55;break j}}if((k|0)==38){m=m+1|0}else if((k|0)==40){k=0;m=m+ -1|0;if((m|0)==0){break k}}if(n>>>0>=j>>>0){j=n;k=55;break j}}break};case 125:{l=l+ -1|0;if((l|0)==0){k=27;break j}break};case 60:{do{n=n+1|0;if(n>>>0>=j>>>0){break}n:do{o:do{switch(a[n]|0){case 0:case 12:case 9:case 10:case 13:case 32:{break};case 37:{m=37;while(1){if(m<<24>>24==10|m<<24>>24==13){break o}n=n+1|0;if(n>>>0>=j>>>0){break o}m=a[n]|0}break};default:{break n}}}while(0);n=n+1|0;}while(n>>>0>>0);if(n>>>0>=j>>>0){break}q=a[n]|0;}while((q+ -48<<24>>24&255)<10|(q+ -65<<24>>24&255)<6|(q+ -97<<24>>24&255)<6);if(n>>>0>>0){if((a[n]|0)!=62){j=n;k=55;break j}}n=n+1|0;break};case 123:{l=l+1|0;break};case 37:{while(1){if(m<<24>>24==10|m<<24>>24==13){break k}n=n+1|0;if(n>>>0>=j>>>0){break k}m=a[n]|0}break};default:{}}}while(0);n=n+1|0;if(n>>>0>=j>>>0){j=n;m=0;break}}if((k|0)==27){j=n+1|0;l=0;m=0}else if((k|0)==55){j=j+1|0;m=3}if((l|m|0)!=0){k=81;break}c[h>>2]=j}else{c[e>>2]=n;c[g>>2]=(a[n]|0)==47?4:1;BM(b);j=c[b>>2]|0;if((c[b+12>>2]|0)!=0){k=81;break}c[h>>2]=j;h=j;k=82}}while(0);if((k|0)==81){h=c[h>>2]|0;k=82}do{if((k|0)==82){if((h|0)!=0){break}c[e>>2]=0;c[g>>2]=0}}while(0);c[b>>2]=j;i=f;return}function IM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;n=i;i=i+16|0;m=n;l=i;i=i+16|0;k=l;c[e>>2]=-1;HM(a,m);if((c[m+8>>2]|0)!=3){i=j;return}g=c[a>>2]|0;f=a+8|0;h=c[f>>2]|0;d=b+(d*12|0)|0;o=(c[n>>2]|0)+1|0;c[a>>2]=o;n=(c[m+4>>2]|0)+ -1|0;c[f>>2]=n;a:do{if(o>>>0>>0){m=k+8|0;if((b|0)==0){n=0;while(1){HM(a,k);if((c[m>>2]|0)==0){break a}n=n+12|0;if((c[a>>2]|0)>>>0>=(c[f>>2]|0)>>>0){break a}}}else{n=b}do{HM(a,k);if((c[m>>2]|0)==0){break a}if(n>>>0>>0){$W(n|0,l|0,12)|0}n=n+12|0;}while((c[a>>2]|0)>>>0<(c[f>>2]|0)>>>0)}else{n=b}}while(0);c[e>>2]=(n-b|0)/12|0;c[a>>2]=g;c[f>>2]=h;i=j;return}function JM(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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=i;t=i;i=i+8|0;l=t;w=i;i=i+16|0;u=w;r=i;i=i+8|0;o=r;q=i;i=i+8|0;p=q;v=i;i=i+16|0;n=i;i=i+16|0;m=n;HM(e,u);s=c[u+8>>2]|0;a:do{if((s|0)!=0){F=c[w>>2]|0;c[r>>2]=F;w=c[u+4>>2]|0;u=f+8|0;if((c[u>>2]|0)==7){G=c[e>>2]|0;I=e+8|0;H=c[I>>2]|0;c[e>>2]=F+1;c[I>>2]=w+ -1;HM(e,v);c[e>>2]=G;c[I>>2]=H;if((c[v+8>>2]|0)==3){k=5}else{h=1;A=0}}else{if((s|0)==3){k=5}else{h=1;A=0}}if((k|0)==5){if((h|0)==0){break}F=F+1|0;c[r>>2]=F;A=1;w=w+ -1|0}v=f+16|0;f=f+20|0;z=e+16|0;y=m+4|0;e=m+8|0;x=m+12|0;b:while(1){C=c[g+(A<<2)>>2]|0;D=c[v>>2]|0;B=C+D|0;c:do{if(F>>>0>>0){while(1){d:do{switch(a[F]|0){case 37:{E=37;while(1){if(E<<24>>24==10|E<<24>>24==13){break d}F=F+1|0;if(F>>>0>=w>>>0){break d}E=a[F]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break c}}}while(0);F=F+1|0;if(F>>>0>=w>>>0){break c}}}}while(0);c[r>>2]=F;e:do{switch(c[u>>2]|0){case 4:{C=mN(o,w,3)|0;k=31;break};case 3:{C=mN(o,w,0)|0;k=31;break};case 7:{c[t>>2]=F;f:do{if(F>>>0>>0){E=a[F]|0;if(E<<24>>24==91){E=93;k=48}else{if(E<<24>>24==123){E=125;k=48}else{H=F;F=0;E=0}}if((k|0)==48){k=0;H=F+1|0;c[t>>2]=H;F=1}G=0;while(1){if(H>>>0>>0){I=H}else{break}g:while(1){h:do{switch(a[I]|0){case 37:{H=37;while(1){if(H<<24>>24==10|H<<24>>24==13){break h}I=I+1|0;if(I>>>0>=w>>>0){break h}H=a[I]|0}break};case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{H=I;break g}}}while(0);H=I+1|0;if(H>>>0>>0){I=H}else{break}}c[t>>2]=H;if(H>>>0>=w>>>0){break}if((a[H]|0)==E<<24>>24){k=58;break}if((G|0)>=4){F=H;k=63;break f}c[m+(G<<2)>>2]=mN(l,w,0)|0;I=c[t>>2]|0;if((H|0)==(I|0)){k=61;break b}G=G+1|0;if(F){H=I;F=1}else{H=I;break}}if((k|0)==58){k=0;H=H+1|0;c[t>>2]=H}c[r>>2]=H;if((G|0)<0){break b}}else{k=63}}while(0);if((k|0)==63){k=0;c[r>>2]=F}c[B>>2]=ZI(c[n>>2]|0)|0;c[C+(D+4)>>2]=ZI(c[y>>2]|0)|0;c[C+(D+8)>>2]=ZI(c[e>>2]|0)|0;c[C+(D+12)>>2]=ZI(c[x>>2]|0)|0;break};case 6:case 5:{E=c[z>>2]|0;D=w-F|0;if(F>>>0>=w>>>0){break e}if((s|0)==2){C=F+1|0;c[r>>2]=C;D=D+ -2|0}else if((s|0)==4){C=F+1|0;c[r>>2]=C;D=D+ -1|0}else{k=40;break b}F=c[B>>2]|0;if((F|0)!=0){lJ(E,F);c[B>>2]=0}F=jJ(E,D+1|0,p)|0;E=c[q>>2]|0;if((E|0)!=0){k=70;break b}$W(F|0,C|0,D|0)|0;a[F+D|0]=0;c[B>>2]=F;break};case 1:{C=F+3|0;do{if(C>>>0>>0){if((a[F]|0)!=116){k=21;break}if((a[F+1|0]|0)!=114){k=21;break}if((a[F+2|0]|0)!=117){k=21;break}if((a[C]|0)!=101){k=21;break}F=F+5|0;C=1}else{k=21}}while(0);do{if((k|0)==21){k=F+4|0;if(k>>>0>=w>>>0){C=0;break}if((a[F]|0)!=102){C=0;break}if((a[F+1|0]|0)!=97){C=0;break}if((a[F+2|0]|0)!=108){C=0;break}if((a[C]|0)!=115){C=0;break}F=(a[k]|0)==101?F+6|0:F;C=0}}while(0);c[r>>2]=F;k=31;break};case 2:{C=nN(o,w)|0;k=31;break};default:{break a}}}while(0);do{if((k|0)==31){k=0;D=d[f]|0;if((D|0)==2){b[B>>1]=C;break}else if((D|0)==1){a[B]=C;break}else if((D|0)==4){c[B>>2]=C;break}else{c[B>>2]=C;break}}}while(0);h=h+ -1|0;if((h|0)==0){k=69;break}F=c[r>>2]|0;A=A+1|0}if((k|0)==40){c[q>>2]=3;I=3;i=j;return I|0}else if((k|0)==61){c[r>>2]=H}else if((k|0)==69){c[q>>2]=0;I=0;i=j;return I|0}else if((k|0)==70){i=j;return E|0}c[q>>2]=3;I=3;i=j;return I|0}}while(0);c[q>>2]=3;I=3;i=j;return I|0}function KM(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=i;t=i;i=i+16|0;s=t;q=i;i=i+16|0;p=q;n=i;i=i+384|0;k=i;i=i+40|0;h=k;$W(k|0,e|0,36)|0;k=h+8|0;c[k>>2]=2;o=e+8|0;r=c[o>>2]|0;if((r|0)==7|(r|0)==9){c[k>>2]=3}HM(b,s);if((c[s+8>>2]|0)!=3){t=162;i=j;return t|0}m=c[b>>2]|0;k=b+8|0;l=c[k>>2]|0;r=n+384|0;u=(c[t>>2]|0)+1|0;c[b>>2]=u;t=(c[s+4>>2]|0)+ -1|0;c[k>>2]=t;a:do{if(u>>>0>>0){s=p+8|0;t=n;do{HM(b,p);if((c[s>>2]|0)==0){break a}if(t>>>0>>0){$W(t|0,q|0,12)|0}t=t+12|0;}while((c[b>>2]|0)>>>0<(c[k>>2]|0)>>>0)}else{t=n}}while(0);u=t-n|0;q=(u|0)/12|0;c[b>>2]=m;c[k>>2]=l;if((u|0)<0){u=162;i=j;return u|0}p=c[e+24>>2]|0;p=q>>>0>p>>>0?p:q;do{if((c[o>>2]|0)!=7){e=c[e+28>>2]|0;if((e|0)==0){break}a[(c[f>>2]|0)+e|0]=p}}while(0);if((p|0)>0){o=h+20|0;e=h+16|0;while(1){c[b>>2]=c[n>>2];c[k>>2]=c[n+4>>2];JM(b,h,f,g,0)|0;c[e>>2]=(c[e>>2]|0)+(d[o]|0);p=p+ -1|0;if((p|0)>0){n=n+12|0}else{break}}}c[b>>2]=m;c[k>>2]=l;u=0;i=j;return u|0}function LM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;c[b+64>>2]=0;a[b+68|0]=1;c[b+4>>2]=d;c[b+8>>2]=f;c[b>>2]=c[d+100>>2];do{if((f|0)!=0){f=f+156|0;d=c[c[f>>2]>>2]|0;c[b+12>>2]=d;c[b+16>>2]=d+20;c[b+20>>2]=d+56;kJ(d);c[b+76>>2]=c[e+40>>2];e=b+72|0;c[e>>2]=0;if(g<<24>>24==0){break}c[e>>2]=c[(c[f>>2]|0)+36>>2]}}while(0);bX(b+24|0,0,24)|0;$W(b+80|0,207832,32)|0;i=h;return}function MM(a){a=a|0;var b=0,d=0;b=i;d=c[a+8>>2]|0;if((d|0)==0){i=b;return}$W(d+108|0,c[a+16>>2]|0,20)|0;i=b;return}function NM(a,d){a=a|0;d=d|0;var e=0;e=i;if((d|0)==0){a=0;i=e;return a|0}a=c[a+12>>2]|0;if(((b[a+22>>1]|0)+d+(b[a+58>>1]|0)|0)>>>0<=(c[a+4>>2]|0)>>>0){a=0;i=e;return a|0}a=pJ(a,d,0)|0;i=e;return a|0}function OM(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;j=c[d+20>>2]|0;if((a[d+68|0]|0)==0){d=j+2|0;j=d;j=b[j>>1]|0;j=j+1<<16>>16;b[d>>1]=j;i=h;return}else{l=c[j+4>>2]|0;d=j+2|0;k=b[d>>1]|0;j=(c[j+8>>2]|0)+k|0;c[l+(k<<3)>>2]=(ZI(e)|0)>>16;c[l+(k<<3)+4>>2]=(ZI(f)|0)>>16;a[j]=g<<24>>24!=0?1:2;l=d;k=l;k=b[k>>1]|0;k=k+1<<16>>16;b[l>>1]=k;i=h;return}}function PM(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;h=c[d+12>>2]|0;do{if(((b[h+22>>1]|0)+1+(b[h+58>>1]|0)|0)>>>0>(c[h+4>>2]|0)>>>0){h=pJ(h,1,0)|0;if((h|0)==0){break}i=g;return h|0}}while(0);h=c[d+20>>2]|0;if((a[d+68|0]|0)==0){d=h+2|0}else{k=c[h+4>>2]|0;d=h+2|0;j=b[d>>1]|0;h=(c[h+8>>2]|0)+j|0;c[k+(j<<3)>>2]=(ZI(e)|0)>>16;c[k+(j<<3)+4>>2]=(ZI(f)|0)>>16;a[h]=1}b[d>>1]=(b[d>>1]|0)+1<<16>>16;k=0;i=g;return k|0}function QM(d){d=d|0;var e=0,f=0;e=i;f=c[d+20>>2]|0;if((f|0)==0){d=3;i=e;return d|0}if((a[d+68|0]|0)==0){b[f>>1]=(b[f>>1]|0)+1<<16>>16;d=0;i=e;return d|0}d=c[d+12>>2]|0;do{if(((b[d+20>>1]|0)+1+(b[d+56>>1]|0)|0)>>>0>(c[d+8>>2]|0)>>>0){d=pJ(d,0,1)|0;if((d|0)==0){break}i=e;return d|0}}while(0);d=b[f>>1]|0;if(d<<16>>16>0){b[(c[f+12>>2]|0)+((d<<16>>16)+ -1<<1)>>1]=(b[f+2>>1]|0)+ -1<<16>>16;d=b[f>>1]|0}b[f>>1]=d+1<<16>>16;d=0;i=e;return d|0}function RM(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;h=d+64|0;if((c[h>>2]|0)==3){l=0;i=g;return l|0}c[h>>2]=3;j=d+20|0;k=c[j>>2]|0;if((k|0)==0){l=3;i=g;return l|0}h=d+68|0;if((a[h]|0)==0){b[k>>1]=(b[k>>1]|0)+1<<16>>16;d=d+12|0}else{d=d+12|0;l=c[d>>2]|0;do{if(((b[l+20>>1]|0)+1+(b[l+56>>1]|0)|0)>>>0>(c[l+8>>2]|0)>>>0){l=pJ(l,0,1)|0;if((l|0)==0){break}i=g;return l|0}}while(0);l=b[k>>1]|0;if(l<<16>>16>0){b[(c[k+12>>2]|0)+((l<<16>>16)+ -1<<1)>>1]=(b[k+2>>1]|0)+ -1<<16>>16;l=b[k>>1]|0}b[k>>1]=l+1<<16>>16}k=c[d>>2]|0;do{if(((b[k+22>>1]|0)+1+(b[k+58>>1]|0)|0)>>>0>(c[k+4>>2]|0)>>>0){l=pJ(k,1,0)|0;if((l|0)==0){break}i=g;return l|0}}while(0);j=c[j>>2]|0;if((a[h]|0)==0){e=j+2|0}else{h=c[j+4>>2]|0;l=j+2|0;k=b[l>>1]|0;d=(c[j+8>>2]|0)+k|0;c[h+(k<<3)>>2]=(ZI(e)|0)>>16;c[h+(k<<3)+4>>2]=(ZI(f)|0)>>16;a[d]=1;e=l}b[e>>1]=(b[e>>1]|0)+1<<16>>16;l=0;i=g;return l|0}function SM(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=c[d+20>>2]|0;if((f|0)==0){i=e;return}g=b[f>>1]|0;if(g<<16>>16<2){h=0}else{h=(b[(c[f+12>>2]|0)+((g<<16>>16)+ -2<<1)>>1]|0)+1|0}d=f+2|0;j=b[d>>1]|0;do{if(j<<16>>16>1){l=c[f+4>>2]|0;k=(j<<16>>16)+ -1|0;if((c[l+(h<<3)>>2]|0)!=(c[l+(k<<3)>>2]|0)){break}if((c[l+(h<<3)+4>>2]|0)!=(c[l+(k<<3)+4>>2]|0)){break}if((a[(c[f+8>>2]|0)+k|0]|0)!=1){break}j=j+ -1<<16>>16;b[d>>1]=j}}while(0);if(g<<16>>16<=0){i=e;return}k=(j<<16>>16)+ -1|0;if((h|0)==(k|0)){b[f>>1]=g+ -1<<16>>16;b[d>>1]=j+ -1<<16>>16;i=e;return}else{b[(c[f+12>>2]|0)+((g<<16>>16)+ -1<<1)>>1]=k;i=e;return}}function TM(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0;m=i;bX(b|0,0,1500)|0;n=oK(c[d+96>>2]|0,209568)|0;if((n|0)==0){n=7;i=m;return n|0}c[b+1348>>2]=n;c[b+64>>2]=0;a[b+68|0]=1;c[b+4>>2]=d;c[b+8>>2]=f;c[b>>2]=c[d+100>>2];do{if((f|0)!=0){f=f+156|0;n=c[c[f>>2]>>2]|0;c[b+12>>2]=n;c[b+16>>2]=n+20;c[b+20>>2]=n+56;kJ(n);c[b+76>>2]=c[e+40>>2];e=b+72|0;c[e>>2]=0;if(j<<24>>24==0){break}c[e>>2]=c[(c[f>>2]|0)+36>>2]}}while(0);bX(b+24|0,0,24)|0;$W(b+80|0,207832,32)|0;c[b+1352>>2]=c[d+16>>2];c[b+1356>>2]=g;c[b+1468>>2]=k;c[b+1464>>2]=h;c[b+1472>>2]=l;$W(b+1476|0,207864,12)|0;n=0;i=m;return n|0}function UM(a){a=a|0;var b=0,d=0;b=i;d=c[a+8>>2]|0;if((d|0)==0){i=b;return}$W(d+108|0,c[a+16>>2]|0,20)|0;i=b;return}function VM(f,g,h){f=f|0;g=g|0;h=h|0;var 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,O=0,P=0,Q=0,R=0;j=i;l=i;i=i+8|0;p=i;i=i+8|0;k=i;i=i+8|0;c[l>>2]=f;c[p>>2]=g;m=p^l^k;m=(m>>>10^m^m>>20)&65535;c[k>>2]=(m|0)==0?29572:m;c[f+1136>>2]=f+112;D=f+1140|0;c[f+1344>>2]=D;n=f+64|0;c[n>>2]=0;m=c[f+72>>2]|0;q=c[f+1492>>2]|0;if((q|0)!=0){bX(c[f+1488>>2]|0,0,q<<2|0)|0;g=c[p>>2]|0}c[f+1144>>2]=g;E=g+h|0;c[f+1148>>2]=E;c[D>>2]=g;q=f+24|0;H=c[q>>2]|0;r=f+28|0;G=c[r>>2]|0;p=(m|0)!=0;if(p){fd[c[m+4>>2]&511](c[m>>2]|0)}if((h|0)<=0){R=0;i=j;return R|0}B=f+12|0;y=f+20|0;z=f+68|0;A=m+20|0;v=f+32|0;x=f+40|0;u=f+44|0;w=f+70|0;h=f+36|0;s=m+12|0;t=m+16|0;I=0;F=0;C=H;J=0;a:while(1){b:while(1){N=g;L=F;while(1){M=c[l>>2]|0;K=c[M+1136>>2]|0;g=N+1|0;O=a[N]|0;F=O&255;c:do{switch(F|0){case 11:{F=L;O=24;N=0;break};case 13:{F=L;O=2;N=0;break};case 255:{F=N+5|0;if(F>>>0>E>>>0){M=160;o=238;break a}N=d[N+2|0]<<16|d[g]<<24|d[N+3|0]<<8|d[N+4|0];P=L<<24>>24!=0;if((N+32e3|0)>>>0>64e3){g=F;F=P?L:1;O=0;break c}else{g=F;F=L;O=0;N=P?N:N<<16;break c}break};case 30:{F=L;O=12;N=0;break};case 31:{F=L;O=8;N=0;break};case 3:{F=L;O=18;N=0;break};case 4:{F=L;O=14;N=0;break};case 5:{F=L;O=9;N=0;break};case 6:{F=L;O=6;N=0;break};case 1:{F=L;O=16;N=0;break};case 14:{F=L;O=1;N=0;break};case 15:{F=L;O=26;N=0;break};case 9:{F=L;O=5;N=0;break};case 10:{F=L;O=22;N=0;break};case 7:{F=L;O=13;N=0;break};case 8:{F=L;O=11;N=0;break};case 21:{F=L;O=10;N=0;break};case 22:{F=L;O=7;N=0;break};case 12:{if(g>>>0>E>>>0){M=160;o=238;break a}F=N+2|0;switch(d[g]|0){case 2:{g=F;F=L;O=17;N=0;break c};case 12:{g=F;F=L;O=20;N=0;break c};case 16:{g=F;F=L;O=21;N=0;break c};case 0:{g=F;F=L;O=15;N=0;break c};case 6:{g=F;F=L;O=3;N=0;break c};case 7:{g=F;F=L;O=4;N=0;break c};case 1:{g=F;F=L;O=19;N=0;break c};case 17:{g=F;F=L;O=23;N=0;break c};case 33:{g=F;F=L;O=25;N=0;break c};default:{M=160;o=238;break a}}break};default:{if((O&255)<=31){M=160;o=238;break a}do{if((O&255)<247){N=g;P=F+ -139|0}else{N=N+2|0;if(N>>>0>E>>>0){M=160;o=238;break a}F=F<<8;if((O&255)<251){P=(d[g]|F+ -63232)+108|0;break}else{P=-108-(d[g]|F+ -64256)|0;break}}}while(0);g=N;F=L;O=0;N=L<<24>>24==0?P<<16:P}}}while(0);do{if((J|0)>0){if((O|0)==23|(O|0)==0|(O|0)==24|(O|0)==22){break}J=0}}while(0);do{if(F<<24>>24==0){F=0}else{if((O|0)==0|(O|0)==20){break}F=0}}while(0);if((O|0)==21){break}else if((O|0)!=0){break b}if((K-(M+112)|0)>1020){M=160;o=238;break a}c[K>>2]=N;c[(c[l>>2]|0)+1136>>2]=K+4;if(g>>>0>>0){N=g;L=F}else{M=0;o=238;break a}}O=M+112|0;if((K-O|0)<8){M=161;o=238;break a}R=K+ -8|0;I=c[K+ -4>>2]>>16;J=c[R>>2]>>16;if((J|0)>(R-O>>2|0)){M=161;o=238;break a}N=-2-J|0;L=K+(N<<2)|0;d:do{switch(I|0){case 2:{if((J|0)!=0){M=160;o=238;break a}R=M+1404|0;I=c[R>>2]|0;c[R>>2]=I+1;if((I+ -1|0)>>>0>=6){I=0;J=0;break d}if((I|0)==3){J=1}else{J=(I|0)==6|0}K=c[y>>2]|0;if((a[z]|0)==0){I=K+2|0}else{Q=c[K+4>>2]|0;I=K+2|0;R=b[I>>1]|0;K=(c[K+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=(ZI(H)|0)>>16;c[Q+(R<<3)+4>>2]=(ZI(G)|0)>>16;a[K]=J<<24>>24!=0?1:2}b[I>>1]=(b[I>>1]|0)+1<<16>>16;I=0;J=0;break};case 19:{I=c[M+1464>>2]|0;if((J|0)!=1|(I|0)==0){M=160;o=238;break a}J=c[L>>2]>>16;if((J|0)<0){M=160;o=238;break a}K=c[I>>2]|0;if((K+J|0)>>>0>(c[M+1492>>2]|0)>>>0){M=160;o=238;break a}$W((c[M+1488>>2]|0)+(J<<2)|0,c[I+136>>2]|0,K<<2|0)|0;I=0;J=0;break};case 3:{if((J|0)!=1){M=160;o=238;break a}if(!p){I=1;J=0;break d}hd[c[A>>2]&127](c[m>>2]|0,b[(c[y>>2]|0)+2>>1]|0);I=1;J=0;break};case 24:{if((J|0)!=2){M=160;o=238;break a}if((c[M+1464>>2]|0)==0){M=160;o=238;break a}I=c[K+(N+1<<2)>>2]>>16;if((I|0)<0){M=160;o=238;break a}if(I>>>0>=(c[M+1492>>2]|0)>>>0){M=160;o=238;break a}c[(c[M+1488>>2]|0)+(I<<2)>>2]=c[L>>2];I=0;J=0;break};case 21:{if((J|0)!=2){M=160;o=238;break a}c[L>>2]=(c[L>>2]|0)-(c[K+(N+1<<2)>>2]|0);I=1;J=0;break};case 1:{if((J|0)!=0){M=160;o=238;break a}c[M+1400>>2]=1;c[(c[l>>2]|0)+1404>>2]=0;M=RM(f,H,G)|0;if((M|0)!=0){o=238;break a}I=c[B>>2]|0;if(((b[I+22>>1]|0)+6+(b[I+58>>1]|0)|0)>>>0<=(c[I+4>>2]|0)>>>0){I=0;J=0;break d}M=pJ(I,6,0)|0;if((M|0)==0){I=0;J=0}else{o=238;break a}break};case 23:{if((J|0)!=2){M=160;o=238;break a}I=c[K+(N+1<<2)>>2]|0;if((I|0)==0){M=160;o=238;break a}c[L>>2]=bJ(c[L>>2]|0,I)|0;I=1;J=0;break};case 22:{if((J|0)!=2){M=160;o=238;break a}c[L>>2]=aJ(c[L>>2]|0,c[K+(N+1<<2)>>2]|0)|0;I=1;J=0;break};case 28:{if((J|0)!=0){M=160;o=238;break a}I=c[k>>2]|0;c[L>>2]=((I|0)>32767)+I;I=c[k>>2]|0;I=aJ(I,65536-I|0)|0;c[k>>2]=(I|0)==0?I+10355|0:I;I=1;J=0;break};case 27:{if((J|0)!=4){M=160;o=238;break a}if((c[K+(N+2<<2)>>2]|0)<=(c[K+(N+3<<2)>>2]|0)){I=1;J=0;break d}c[L>>2]=c[K+(N+1<<2)>>2];I=1;J=0;break};case 13:case 12:{I=0;L=O;J=0;break};case 18:case 17:case 16:case 15:case 14:{M=c[M+1464>>2]|0;if((M|0)==0){M=160;o=238;break a}I=I+ -13+((I|0)==18)|0;P=c[M>>2]|0;if((J|0)!=(da(P,I)|0)){M=160;o=238;break a}if((I|0)==0){I=0;J=0;break d}J=M+136|0;O=K+(I+N<<2)|0;K=1;N=L;while(1){Q=c[N>>2]|0;if(P>>>0>1){R=O;P=1;while(1){O=R+4|0;Q=(aJ(c[R>>2]|0,c[(c[J>>2]|0)+(P<<2)>>2]|0)|0)+Q|0;P=P+1|0;if(P>>>0<(c[M>>2]|0)>>>0){R=O}else{break}}}c[N>>2]=Q;if(K>>>0>=I>>>0){J=0;break d}P=c[M>>2]|0;K=K+1|0;N=N+4|0}break};case 0:{if((J|0)!=3){M=160;o=238;break a}if((c[M+1400>>2]|0)==0){M=160;o=238;break a}if((c[M+1404>>2]|0)!=7){M=160;o=238;break a}c[L>>2]=H;c[K+(N+1<<2)>>2]=G;I=2;J=0;break};case 25:{if((J|0)!=1){M=160;o=238;break a}if((c[M+1464>>2]|0)==0){M=160;o=238;break a}I=c[L>>2]>>16;if((I|0)<0){M=160;o=238;break a}if(I>>>0>=(c[M+1492>>2]|0)>>>0){M=160;o=238;break a}c[L>>2]=c[(c[M+1488>>2]|0)+(I<<2)>>2];I=1;J=0;break};case 20:{if((J|0)!=2){M=160;o=238;break a}c[L>>2]=(c[L>>2]|0)+(c[K+(N+1<<2)>>2]|0);I=1;J=0;break};default:{I=0}}}while(0);c[(c[l>>2]|0)+1136>>2]=L+(I<<2);if(g>>>0>=E>>>0){M=0;o=238;break a}}N=c[209592+(O<<2)>>2]|0;if((K-(M+112)>>2|0)<(N|0)){M=161;o=238;break}L=K+(0-N<<2)|0;e:do{switch(O|0){case 12:{M=RM(f,H,G)|0;if((M|0)!=0){o=238;break a}M=c[B>>2]|0;if(((b[M+22>>1]|0)+3+(b[M+58>>1]|0)|0)>>>0>(c[M+4>>2]|0)>>>0){M=pJ(M,3,0)|0;if((M|0)!=0){o=238;break a}}G=(c[L>>2]|0)+G|0;M=c[y>>2]|0;if((a[z]|0)==0){M=M+2|0}else{P=c[M+4>>2]|0;R=M+2|0;Q=b[R>>1]|0;M=(c[M+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[M]=2;M=R}b[M>>1]=(b[M>>1]|0)+1<<16>>16;H=(c[K+(1-N<<2)>>2]|0)+H|0;G=(c[K+(2-N<<2)>>2]|0)+G|0;M=c[y>>2]|0;if((a[z]|0)==0){M=M+2|0}else{P=c[M+4>>2]|0;R=M+2|0;Q=b[R>>1]|0;M=(c[M+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[M]=2;M=R}b[M>>1]=(b[M>>1]|0)+1<<16>>16;H=(c[K+(3-N<<2)>>2]|0)+H|0;K=c[y>>2]|0;if((a[z]|0)==0){K=K+2|0}else{P=c[K+4>>2]|0;R=K+2|0;Q=b[R>>1]|0;K=(c[K+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[K]=1;K=R}b[K>>1]=(b[K>>1]|0)+1<<16>>16;K=L;break};case 6:{M=RM(f,H,G)|0;if((M|0)!=0){o=238;break a}H=(c[L>>2]|0)+H|0;o=173;break};case 13:{M=RM(f,H,G)|0;if((M|0)!=0){o=238;break a}G=(c[L>>2]|0)+G|0;o=173;break};case 14:{G=(c[L>>2]|0)+G|0;if((c[M+1400>>2]|0)!=0){K=L;break e}if((c[n>>2]|0)==0){M=160;o=238;break a}c[n>>2]=2;K=L;break};case 17:{if(!p){K=L;break e}Gd[c[t>>2]&255](c[m>>2]|0,1,L);K=L;break};case 18:{if(!p){K=L;break e}c[L>>2]=(c[L>>2]|0)+C;Gd[c[s>>2]&255](c[m>>2]|0,0,L);K=L;break};case 19:{if(!p){K=L;break e}c[L>>2]=(c[L>>2]|0)+C;R=K+(2-N<<2)|0;c[R>>2]=(c[R>>2]|0)+C;K=K+(4-N<<2)|0;c[K>>2]=(c[K>>2]|0)+C;Gd[c[t>>2]&255](c[m>>2]|0,0,L);K=L;break};case 23:{if((I|0)>0){I=I+ -1|0;K=L;break e}if((J|0)==0){M=160;o=238;break a}K=K+(1-N<<2)|0;J=J+ -1|0;break};case 24:{if(D>>>0<=(M+1140|0)>>>0){M=160;o=238;break a}R=D+ -12|0;g=c[R>>2]|0;E=c[D+ -4>>2]|0;c[M+1344>>2]=R;K=L;D=R;break};case 16:{if(!p){K=L;break e}Gd[c[s>>2]&255](c[m>>2]|0,1,L);K=L;break};case 10:{H=(c[L>>2]|0)+H|0;G=(c[K+(1-N<<2)>>2]|0)+G|0;if((c[M+1400>>2]|0)!=0){K=L;break e}if((c[n>>2]|0)==0){M=160;o=238;break a}c[n>>2]=2;K=L;break};case 11:{M=RM(f,H,G)|0;if((M|0)!=0){o=238;break a}M=c[B>>2]|0;if(((b[M+22>>1]|0)+3+(b[M+58>>1]|0)|0)>>>0>(c[M+4>>2]|0)>>>0){M=pJ(M,3,0)|0;if((M|0)!=0){o=238;break a}}H=(c[L>>2]|0)+H|0;G=(c[K+(1-N<<2)>>2]|0)+G|0;M=c[y>>2]|0;if((a[z]|0)==0){M=M+2|0}else{P=c[M+4>>2]|0;R=M+2|0;Q=b[R>>1]|0;M=(c[M+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[M]=2;M=R}b[M>>1]=(b[M>>1]|0)+1<<16>>16;H=(c[K+(2-N<<2)>>2]|0)+H|0;G=(c[K+(3-N<<2)>>2]|0)+G|0;M=c[y>>2]|0;if((a[z]|0)==0){M=M+2|0}else{P=c[M+4>>2]|0;R=M+2|0;Q=b[R>>1]|0;M=(c[M+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[M]=2;M=R}b[M>>1]=(b[M>>1]|0)+1<<16>>16;H=(c[K+(4-N<<2)>>2]|0)+H|0;G=(c[K+(5-N<<2)>>2]|0)+G|0;K=c[y>>2]|0;if((a[z]|0)==0){K=K+2|0}else{P=c[K+4>>2]|0;R=K+2|0;Q=b[R>>1]|0;K=(c[K+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[K]=1;K=R}b[K>>1]=(b[K>>1]|0)+1<<16>>16;K=L;break};case 3:{o=124;break a};case 4:{c[n>>2]=1;c[v>>2]=(c[v>>2]|0)+(c[L>>2]|0);G=K+(1-N<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[G>>2]|0);c[x>>2]=c[K+(2-N<<2)>>2];c[u>>2]=c[K+(3-N<<2)>>2];if((a[w]|0)==0){K=L;H=(c[L>>2]|0)+(c[q>>2]|0)|0;G=(c[G>>2]|0)+(c[r>>2]|0)|0}else{M=0;o=238;break a}break};case 2:{c[n>>2]=1;c[v>>2]=(c[v>>2]|0)+(c[L>>2]|0);c[x>>2]=c[K+(1-N<<2)>>2];c[u>>2]=0;G=(c[L>>2]|0)+(c[q>>2]|0)|0;if((a[w]|0)==0){C=G;K=L;H=G;G=c[r>>2]|0}else{M=0;o=238;break a}break};case 1:{o=119;break a};case 25:{H=c[L>>2]|0;G=c[K+(1-N<<2)>>2]|0;c[M+1400>>2]=0;K=L;break};case 26:case 15:{K=L;break};case 20:{K=K+(1-N<<2)|0;c[L>>2]=bJ(c[L>>2]|0,c[K>>2]|0)|0;F=0;break};case 22:{E=c[L>>2]>>16;if((E|0)<0){M=160;o=238;break a}if((E|0)>=(c[M+1364>>2]|0)){M=160;o=238;break a}if((D-(M+1140)|0)>180){M=160;o=238;break a}c[D>>2]=g;M=D+12|0;K=c[(c[(c[l>>2]|0)+1368>>2]|0)+(E<<2)>>2]|0;g=D+16|0;c[g>>2]=K;N=c[l>>2]|0;O=c[N+1372>>2]|0;if((O|0)==0){N=c[N+1360>>2]|0;K=K+((N|0)<0?0:N)|0;c[g>>2]=K;c[D+20>>2]=c[(c[(c[l>>2]|0)+1368>>2]|0)+(E+1<<2)>>2]}else{c[D+20>>2]=K+(c[O+(E<<2)>>2]|0)}c[M>>2]=K;if((K|0)==0){M=160;o=238;break a}c[(c[l>>2]|0)+1344>>2]=M;g=c[g>>2]|0;E=c[D+20>>2]|0;K=L;D=M;break};case 7:{H=(c[L>>2]|0)+H|0;if((c[M+1400>>2]|0)!=0){K=L;break e}if((c[n>>2]|0)==0){M=160;o=238;break a}c[n>>2]=2;K=L;break};case 8:{M=RM(f,H,G)|0;if((M|0)!=0){o=238;break a}M=c[B>>2]|0;if(((b[M+22>>1]|0)+3+(b[M+58>>1]|0)|0)>>>0>(c[M+4>>2]|0)>>>0){M=pJ(M,3,0)|0;if((M|0)!=0){o=238;break a}}H=(c[L>>2]|0)+H|0;M=c[y>>2]|0;if((a[z]|0)==0){M=M+2|0}else{P=c[M+4>>2]|0;R=M+2|0;Q=b[R>>1]|0;M=(c[M+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[M]=2;M=R}b[M>>1]=(b[M>>1]|0)+1<<16>>16;H=(c[K+(1-N<<2)>>2]|0)+H|0;G=(c[K+(2-N<<2)>>2]|0)+G|0;M=c[y>>2]|0;if((a[z]|0)==0){M=M+2|0}else{P=c[M+4>>2]|0;R=M+2|0;Q=b[R>>1]|0;M=(c[M+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[M]=2;M=R}b[M>>1]=(b[M>>1]|0)+1<<16>>16;G=(c[K+(3-N<<2)>>2]|0)+G|0;K=c[y>>2]|0;if((a[z]|0)==0){K=K+2|0}else{P=c[K+4>>2]|0;R=K+2|0;Q=b[R>>1]|0;K=(c[K+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[K]=1;K=R}b[K>>1]=(b[K>>1]|0)+1<<16>>16;K=L;break};case 5:{if(((c[n>>2]|0)+ -2|0)>>>0<2){SM(f)}c[n>>2]=1;K=L;break};case 9:{M=RM(f,H,G)|0;if((M|0)!=0){o=238;break a}H=(c[L>>2]|0)+H|0;G=(c[K+(1-N<<2)>>2]|0)+G|0;o=173;break};default:{M=160;o=238;break a}}}while(0);if((o|0)==173){o=0;K=c[B>>2]|0;if(((b[K+22>>1]|0)+1+(b[K+58>>1]|0)|0)>>>0>(c[K+4>>2]|0)>>>0){M=pJ(K,1,0)|0;if((M|0)!=0){o=238;break}}K=c[y>>2]|0;if((a[z]|0)==0){K=K+2|0}else{P=c[K+4>>2]|0;R=K+2|0;Q=b[R>>1]|0;K=(c[K+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=(ZI(H)|0)>>16;c[P+(Q<<3)+4>>2]=(ZI(G)|0)>>16;a[K]=1;K=R}b[K>>1]=(b[K>>1]|0)+1<<16>>16;K=L}c[(c[l>>2]|0)+1136>>2]=K;if(g>>>0>=E>>>0){M=0;o=238;break}}if((o|0)==119){SM(f);do{if(p){if((Bd[c[m+8>>2]&255](c[m>>2]|0,b[(c[y>>2]|0)+2>>1]|0)|0)==0){pd[c[m+24>>2]&63](c[m>>2]|0,c[y>>2]|0,c[f+76>>2]|0,c[(c[l>>2]|0)+1468>>2]|0)|0;break}else{R=160;i=j;return R|0}}}while(0);sJ(c[B>>2]|0);R=0;i=j;return R|0}else if((o|0)==124){k=c[L>>2]|0;f=c[K+(2-N<<2)>>2]|0;r=c[K+(3-N<<2)>>2]>>16;o=c[K+(4-N<<2)>>2]>>16;l=M+1496|0;if((a[l]|0)!=0){R=160;i=j;return R|0}m=M+32|0;n=(c[m>>2]|0)+(c[K+(1-N<<2)>>2]|0)|0;p=M+1356|0;q=(c[(c[(c[M+4>>2]|0)+128>>2]|0)+52>>2]|0)==0;f:do{if((c[p>>2]|0)==0){if(q){M=160}else{break}i=j;return M|0}else{if(!q){break}q=M+1348|0;h=c[q>>2]|0;g:do{if(r>>>0>255){r=-1}else{s=jd[c[h+20>>2]&511](e[(c[h+24>>2]|0)+(r<<1)>>1]|0)|0;h=c[M+1352>>2]|0;if((h|0)==0){r=-1;break}t=c[p>>2]|0;r=0;while(1){u=c[t+(r<<2)>>2]|0;do{if((u|0)!=0){if((a[u]|0)!=(a[s]|0)){break}if((Qc(u|0,s|0)|0)==0){break g}}}while(0);r=r+1|0;if(r>>>0>=h>>>0){r=-1;break}}}}while(0);q=c[q>>2]|0;if(o>>>0>255){R=160;i=j;return R|0}q=jd[c[q+20>>2]&511](e[(c[q+24>>2]|0)+(o<<1)>>1]|0)|0;h=c[M+1352>>2]|0;if((h|0)==0){R=160;i=j;return R|0}p=c[p>>2]|0;o=0;while(1){s=c[p+(o<<2)>>2]|0;do{if((s|0)!=0){if((a[s]|0)!=(a[q]|0)){break}if((Qc(s|0,q|0)|0)==0){break f}}}while(0);o=o+1|0;if(o>>>0>=h>>>0){M=160;break}}i=j;return M|0}}while(0);if((r|o|0)<0){R=160;i=j;return R|0}if((a[M+69|0]|0)!=0){l=c[M+8>>2]|0;m=c[c[l+156>>2]>>2]|0;p=qJ(m,2)|0;if((p|0)!=0){R=p;i=j;return R|0}R=c[m+88>>2]|0;c[R>>2]=r;b[R+4>>1]=514;c[R+8>>2]=0;c[R+12>>2]=0;c[R+32>>2]=o;b[R+36>>1]=2;c[R+40>>2]=(ZI(n-k|0)|0)>>16;c[R+44>>2]=(ZI(f)|0)>>16;c[l+128>>2]=2;c[l+132>>2]=c[m+52>>2];c[l+72>>2]=1668246896;c[m+84>>2]=2;R=0;i=j;return R|0}rJ(c[M+12>>2]|0);a[l]=1;p=M+1472|0;q=Bd[c[p>>2]&255](M,r)|0;a[l]=0;if((q|0)!=0){R=q;i=j;return R|0}h=m;t=c[h>>2]|0;h=c[h+4>>2]|0;q=M+40|0;r=q;s=c[r>>2]|0;r=c[r+4>>2]|0;c[m>>2]=0;c[M+36>>2]=0;u=M+24|0;c[u>>2]=n-k;k=M+28|0;c[k>>2]=f;a[l]=1;f=Bd[c[p>>2]&255](M,o)|0;a[l]=0;if((f|0)!=0){R=f;i=j;return R|0}R=m;c[R>>2]=t;c[R+4>>2]=h;R=q;c[R>>2]=s;c[R+4>>2]=r;c[u>>2]=0;c[k>>2]=0;R=0;i=j;return R|0}else if((o|0)==238){i=j;return M|0}return 0}function WM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=i;i=i+8|0;h=jJ(b,16,g)|0;g=c[g>>2]|0;if((g|0)!=0){a=g;i=f;return a|0}c[h+4>>2]=d;c[h>>2]=d;c[h+8>>2]=e;c[h+12>>2]=2;c[a>>2]=b;c[a+4>>2]=h;c[a+8>>2]=0;c[a+12>>2]=0;a=0;i=f;return a|0}function XM(a){a=a|0;var b=0,d=0;b=i;d=a+4|0;lJ(c[a>>2]|0,c[d>>2]|0);c[d>>2]=0;i=b;return}function YM(b){b=b|0;var 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,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,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0;J=i;ha=i;i=i+8|0;ca=ha;S=i;i=i+8|0;T=S;n=i;i=i+8|0;h=n;q=i;i=i+8|0;p=q;r=i;i=i+40|0;j=r;o=i;i=i+8|0;k=o;t=i;i=i+8|0;s=t;u=i;i=i+32|0;l=u;Q=i;i=i+32|0;R=Q;g=c[b>>2]|0;m=b+8|0;x=c[m>>2]|0;if((x|0)==0){Ha=6;i=J;return Ha|0}N=b+4|0;ma=c[N>>2]|0;la=ma+12|0;ta=c[la>>2]|0;a:do{if((ta|0)>1){ra=c[ma+8>>2]|0;sa=c[ma>>2]|0}else{ua=c[ma>>2]|0;ra=c[ma+8>>2]|0;b:do{if((ta|0)>0){sa=ua}else{c:do{if(ua>>>0>>0){d:while(1){ta=ua+1|0;c[ma>>2]=ta;switch(d[ua]|0){case 9:case 32:{break};case 59:{K=9;break d};case 10:case 13:{K=8;break d};case 26:{sa=ta;break c};default:{sa=ta;break b}}if(ta>>>0>>0){ua=ta}else{sa=ta;break c}}if((K|0)==8){c[la>>2]=2;sa=ta;break a}else if((K|0)==9){c[la>>2]=1;sa=ta;break b}}else{sa=ua}}while(0);c[la>>2]=3;break a}}while(0);while(1){if(sa>>>0>=ra>>>0){ta=3;break}ta=sa+1|0;c[ma>>2]=ta;sa=a[sa]|0;Ha=sa&255;if((Ha|0)==10|(Ha|0)==13){sa=ta;ta=2;break}if(sa<<24>>24==26){sa=ta;ta=3;break}else{sa=ta}}c[la>>2]=ta}}while(0);c[la>>2]=0;e:do{if(sa>>>0>>0){f:while(1){ta=sa+1|0;c[ma>>2]=ta;switch(d[sa]|0){case 59:{K=20;break f};case 26:{break e};case 10:case 13:{c[la>>2]=2;sa=ta;break};case 9:case 32:{if(ta>>>0>>0){sa=ta;continue f}else{break e}break};default:{g:while(1){if(ta>>>0>=ra>>>0){oa=ta;K=26;break}pa=ta+1|0;c[ma>>2]=pa;switch(d[ta]|0){case 9:case 32:{qa=pa;na=0;break g};case 10:case 13:{K=24;break g};case 59:{K=25;break g};case 26:{oa=pa;K=26;break g};default:{ta=pa}}}if((K|0)==24){K=0;c[la>>2]=2;qa=pa;na=2}else if((K|0)==25){K=0;c[la>>2]=1;qa=pa;na=1}else if((K|0)==26){K=0;c[la>>2]=3;qa=oa;na=3}if((sa|0)!=0){K=30;break f}if((na|0)==2){sa=qa}else{L=2;K=273;break f}}}c[la>>2]=0;if(sa>>>0>=ra>>>0){break e}}if((K|0)==20){c[la>>2]=1;Ha=2;i=J;return Ha|0}else if((K|0)==30){if((qa+~sa|0)!=16){Ha=2;i=J;return Ha|0}if((vc(sa|0,208152,16)|0)!=0){Ha=2;i=J;return Ha|0}qa=T+4|0;pa=R+4|0;la=R+8|0;ma=R+16|0;na=R+24|0;sa=x+4|0;ta=R+12|0;ua=x+8|0;va=R+20|0;wa=x+12|0;xa=R+28|0;ya=x+16|0;ra=x+20|0;za=x+24|0;oa=ca+4|0;Ba=160;h:while(1){Ca=c[N>>2]|0;Aa=Ca+12|0;Fa=c[Aa>>2]|0;i:do{if((Fa|0)>1){Ea=c[Ca+8>>2]|0;Da=c[Ca>>2]|0}else{Da=c[Ca>>2]|0;Ea=c[Ca+8>>2]|0;j:do{if((Fa|0)<=0){k:do{if(Da>>>0>>0){Fa=Da;l:while(1){Da=Fa+1|0;c[Ca>>2]=Da;switch(d[Fa]|0){case 26:{X=Da;break k};case 59:{K=40;break l};case 9:case 32:{break};case 10:case 13:{K=39;break l};default:{break j}}if(Da>>>0>>0){Fa=Da}else{X=Da;break k}}if((K|0)==39){K=0;c[Aa>>2]=2;break i}else if((K|0)==40){K=0;c[Aa>>2]=1;break j}}else{X=Da}}while(0);c[Aa>>2]=3;Da=X;break i}}while(0);while(1){if(Da>>>0>=Ea>>>0){Fa=3;break}Fa=Da+1|0;c[Ca>>2]=Fa;Da=a[Da]|0;Ha=Da&255;if((Ha|0)==10|(Ha|0)==13){Da=Fa;Fa=2;break}if(Da<<24>>24==26){Da=Fa;Fa=3;break}else{Da=Fa}}c[Aa>>2]=Fa}}while(0);c[Aa>>2]=0;if(Da>>>0>=Ea>>>0){K=52;break}m:while(1){Fa=Da+1|0;c[Ca>>2]=Fa;switch(d[Da]|0){case 9:case 32:{if(Fa>>>0>>0){Da=Fa;continue m}else{K=52;break h}break};case 26:{K=52;break h};case 59:{K=51;break h};case 10:case 13:{c[Aa>>2]=2;Da=Fa;break};default:{n:while(1){if(Fa>>>0>=Ea>>>0){U=Fa;K=57;break}Y=Fa+1|0;c[Ca>>2]=Y;switch(d[Fa]|0){case 9:case 32:{V=Y;W=0;break n};case 10:case 13:{K=55;break n};case 59:{K=56;break n};case 26:{U=Y;K=57;break n};default:{Fa=Y}}}if((K|0)==55){K=0;c[Aa>>2]=2;V=Y;W=2}else if((K|0)==56){K=0;c[Aa>>2]=1;V=Y;W=1}else if((K|0)==57){K=0;c[Aa>>2]=3;V=U;W=3}if((Da|0)!=0){break m}if((W|0)==2){Da=V}else{M=Ba;break h}}}c[Aa>>2]=0;if(Da>>>0>=Ea>>>0){K=52;break h}}Ea=V+~Da|0;Ca=a[Da]|0;Fa=0;o:while(1){Ga=c[208312+(Fa<<2)>>2]|0;p:do{if((a[Ga]|0)==Ca<<24>>24&(Fa|0)<74){Ha=Fa;while(1){Fa=Ha+1|0;if((vc(Ga|0,Da|0,Ea|0)|0)==0){break o}if((Fa|0)>=74){break p}Ga=c[208312+(Fa<<2)>>2]|0;if((a[Ga]|0)==Ca<<24>>24){Ha=Fa}else{Ha=Ba;Ba=Ha;continue h}}}}while(0);Fa=Fa+1|0;if((Fa|0)>=74){Ha=Ba;Ba=Ha;continue h}}switch(Ha|0){case 20:{L=0;K=273;break h};case 45:{c[ha>>2]=3;if((kN(b,ca,1)|0)!=1){M=Ba;break h}Ca=c[oa>>2]|0;if((Ca|0)!=0){while(1){Ca=Ca+ -1|0;Da=c[N>>2]|0;ja=Da+12|0;Ga=c[ja>>2]|0;q:do{if((Ga|0)>1){Ea=c[Da+8>>2]|0;Fa=c[Da>>2]|0}else{Fa=c[Da>>2]|0;Ea=c[Da+8>>2]|0;r:do{if((Ga|0)<=0){s:do{if(Fa>>>0>>0){Ga=Fa;t:while(1){Fa=Ga+1|0;c[Da>>2]=Fa;switch(d[Ga]|0){case 59:{K=88;break t};case 10:case 13:{K=87;break t};case 26:{Z=Fa;break s};case 9:case 32:{break};default:{break r}}if(Fa>>>0>>0){Ga=Fa}else{Z=Fa;break s}}if((K|0)==87){K=0;c[ja>>2]=2;break q}else if((K|0)==88){K=0;c[ja>>2]=1;break r}}else{Z=Fa}}while(0);c[ja>>2]=3;Fa=Z;break q}}while(0);while(1){if(Fa>>>0>=Ea>>>0){Ga=3;break}Ga=Fa+1|0;c[Da>>2]=Ga;Fa=a[Fa]|0;Ha=Fa&255;if((Ha|0)==10|(Ha|0)==13){Fa=Ga;Ga=2;break}if(Fa<<24>>24==26){Fa=Ga;Ga=3;break}else{Fa=Ga}}c[ja>>2]=Ga}}while(0);c[ja>>2]=0;if(Fa>>>0>=Ea>>>0){K=99;break h}u:while(1){Ga=Fa+1|0;c[Da>>2]=Ga;switch(d[Fa]|0){case 59:{K=98;break h};case 9:case 32:{if(Ga>>>0>>0){Fa=Ga;continue u}else{K=99;break h}break};case 10:case 13:{c[ja>>2]=2;Fa=Ga;break};case 26:{K=99;break h};default:{v:while(1){if(Ga>>>0>=Ea>>>0){$=Ga;K=104;break}_=Ga+1|0;c[Da>>2]=_;switch(d[Ga]|0){case 10:case 13:{K=102;break v};case 26:{$=_;K=104;break v};case 9:case 32:{ba=_;aa=0;break v};case 59:{K=103;break v};default:{Ga=_}}}if((K|0)==102){K=0;c[ja>>2]=2;ba=_;aa=2}else if((K|0)==103){K=0;c[ja>>2]=1;ba=_;aa=1}else if((K|0)==104){K=0;c[ja>>2]=3;ba=$;aa=3}if((Fa|0)!=0){break u}if((aa|0)==2){Fa=ba}else{L=160;K=273;break h}}}c[ja>>2]=0;if(Fa>>>0>=Ea>>>0){K=99;break h}}if((Ca|0)==0){break}}}w:while(1){Ca=c[N>>2]|0;ka=Ca+12|0;Fa=c[ka>>2]|0;x:do{if((Fa|0)>1){Ea=c[Ca+8>>2]|0;Da=c[Ca>>2]|0}else{Da=c[Ca>>2]|0;Ea=c[Ca+8>>2]|0;y:do{if((Fa|0)<=0){z:do{if(Da>>>0>>0){Fa=Da;A:while(1){Da=Fa+1|0;c[Ca>>2]=Da;switch(d[Fa]|0){case 10:case 13:{K=114;break A};case 59:{K=115;break A};case 26:{da=Da;break z};case 9:case 32:{break};default:{break y}}if(Da>>>0>>0){Fa=Da}else{da=Da;break z}}if((K|0)==114){K=0;c[ka>>2]=2;break x}else if((K|0)==115){K=0;c[ka>>2]=1;break y}}else{da=Da}}while(0);c[ka>>2]=3;Da=da;break x}}while(0);while(1){if(Da>>>0>=Ea>>>0){Fa=3;break}Fa=Da+1|0;c[Ca>>2]=Fa;Da=a[Da]|0;Ha=Da&255;if((Ha|0)==10|(Ha|0)==13){Da=Fa;Fa=2;break}if(Da<<24>>24==26){Da=Fa;Fa=3;break}else{Da=Fa}}c[ka>>2]=Fa}}while(0);c[ka>>2]=0;if(Da>>>0>=Ea>>>0){K=126;break h}B:while(1){Fa=Da+1|0;c[Ca>>2]=Fa;switch(d[Da]|0){case 9:case 32:{if(Fa>>>0>>0){Da=Fa;continue B}else{K=126;break h}break};case 26:{K=126;break h};case 59:{K=125;break h};case 10:case 13:{c[ka>>2]=2;Da=Fa;break};default:{C:while(1){if(Fa>>>0>=Ea>>>0){fa=Fa;K=131;break}ea=Fa+1|0;c[Ca>>2]=ea;switch(d[Fa]|0){case 10:case 13:{K=129;break C};case 26:{fa=ea;K=131;break C};case 59:{K=130;break C};case 9:case 32:{ga=ea;ia=0;break C};default:{Fa=ea}}}if((K|0)==129){K=0;c[ka>>2]=2;ga=ea;ia=2}else if((K|0)==130){K=0;c[ka>>2]=1;ga=ea;ia=1}else if((K|0)==131){K=0;c[ka>>2]=3;ga=fa;ia=3}if((Da|0)!=0){break B}if((ia|0)==2){Da=ga}else{L=160;K=273;break h}}}c[ka>>2]=0;if(Da>>>0>=Ea>>>0){K=126;break h}}Ea=ga+~Da|0;Ca=a[Da]|0;Fa=0;D:while(1){Ga=c[208312+(Fa<<2)>>2]|0;E:do{if((a[Ga]|0)==Ca<<24>>24&(Fa|0)<74){Ha=Fa;while(1){Fa=Ha+1|0;if((vc(Ga|0,Da|0,Ea|0)|0)==0){break D}if((Fa|0)>=74){break E}Ga=c[208312+(Fa<<2)>>2]|0;if((a[Ga]|0)==Ca<<24>>24){Ha=Fa}else{continue w}}}}while(0);Fa=Fa+1|0;if((Fa|0)>=74){continue w}}if((Ha|0)==17|(Ha|0)==20){Ba=0;continue h}}break};case 30:{c[Q>>2]=4;if((kN(b,R,1)|0)!=1){M=Ba;break h}a[x]=a[pa]|0;Ha=Ba;Ba=Ha;continue h};case 40:{c[S>>2]=3;if((kN(b,T,1)|0)!=1){M=Ba;break h}Ha=c[qa>>2]|0;if((Ha|0)==0|(Ha|0)==2){Ha=Ba;Ba=Ha;continue h}else{M=7;break h}break};case 49:{K=142;break h};case 0:{c[Q>>2]=2;if((kN(b,R,1)|0)!=1){M=Ba;break h}c[ra>>2]=c[pa>>2];Ha=Ba;Ba=Ha;continue h};case 26:{c[Q>>2]=2;c[la>>2]=2;c[ma>>2]=2;c[na>>2]=2;if((kN(b,R,4)|0)!=4){M=Ba;break h}c[sa>>2]=c[pa>>2];c[ua>>2]=c[ta>>2];c[wa>>2]=c[va>>2];c[ya>>2]=c[xa>>2];Ha=Ba;Ba=Ha;continue h};case 14:{c[Q>>2]=2;if((kN(b,R,1)|0)!=1){M=Ba;break h}c[za>>2]=c[pa>>2];Ha=Ba;Ba=Ha;continue h};default:{Ha=Ba;Ba=Ha;continue h}}}F:do{if((K|0)==51){c[Aa>>2]=1;M=Ba}else if((K|0)==52){c[Aa>>2]=3;M=Ba}else if((K|0)==98){c[ja>>2]=1;Ha=160;i=J;return Ha|0}else if((K|0)==99){c[ja>>2]=3;Ha=160;i=J;return Ha|0}else if((K|0)==125){c[ka>>2]=1;Ha=160;i=J;return Ha|0}else if((K|0)==126){c[ka>>2]=3;Ha=160;i=J;return Ha|0}else if((K|0)==142){R=h+4|0;Z=j+8|0;S=j+16|0;T=j+24|0;U=j+32|0;fa=j+4|0;ga=j+12|0;ea=j+20|0;da=j+28|0;ca=j+36|0;ba=k+4|0;aa=l+8|0;$=l+16|0;_=l+24|0;Q=l+4|0;Y=l+12|0;X=l+20|0;W=l+28|0;G:while(1){ha=c[N>>2]|0;V=ha+12|0;ka=c[V>>2]|0;H:do{if((ka|0)>1){ja=c[ha+8>>2]|0;ia=c[ha>>2]|0}else{ia=c[ha>>2]|0;ja=c[ha+8>>2]|0;I:do{if((ka|0)<=0){J:do{if(ia>>>0>>0){ka=ia;K:while(1){ia=ka+1|0;c[ha>>2]=ia;switch(d[ka]|0){case 9:case 32:{break};case 59:{K=150;break K};case 26:{v=ia;break J};case 10:case 13:{K=149;break K};default:{break I}}if(ia>>>0>>0){ka=ia}else{v=ia;break J}}if((K|0)==149){K=0;c[V>>2]=2;break H}else if((K|0)==150){K=0;c[V>>2]=1;break I}}else{v=ia}}while(0);c[V>>2]=3;ia=v;break H}}while(0);while(1){if(ia>>>0>=ja>>>0){ka=3;break}ka=ia+1|0;c[ha>>2]=ka;ia=a[ia]|0;Ha=ia&255;if((Ha|0)==10|(Ha|0)==13){ia=ka;ka=2;break}if(ia<<24>>24==26){ia=ka;ka=3;break}else{ia=ka}}c[V>>2]=ka}}while(0);c[V>>2]=0;if(ia>>>0>=ja>>>0){K=161;break}L:while(1){ka=ia+1|0;c[ha>>2]=ka;switch(d[ia]|0){case 10:case 13:{c[V>>2]=2;ia=ka;break};case 59:{K=160;break G};case 26:{K=161;break G};case 9:case 32:{if(ka>>>0>>0){ia=ka;continue L}else{K=161;break G}break};default:{M:while(1){if(ka>>>0>=ja>>>0){e=ka;K=166;break}w=ka+1|0;c[ha>>2]=w;switch(d[ka]|0){case 10:case 13:{K=164;break M};case 59:{K=165;break M};case 26:{e=w;K=166;break M};case 9:case 32:{y=w;z=0;break M};default:{ka=w}}}if((K|0)==164){K=0;c[V>>2]=2;y=w;z=2}else if((K|0)==165){K=0;c[V>>2]=1;y=w;z=1}else if((K|0)==166){K=0;c[V>>2]=3;y=e;z=3}if((ia|0)!=0){break L}if((z|0)==2){ia=y}else{M=160;break F}}}c[V>>2]=0;if(ia>>>0>=ja>>>0){K=161;break G}}ha=y+~ia|0;ja=a[ia]|0;ka=0;N:while(1){la=c[208312+(ka<<2)>>2]|0;O:do{if((a[la]|0)==ja<<24>>24&(ka|0)<74){ma=ka;while(1){ka=ma+1|0;if((vc(la|0,ia|0,ha|0)|0)==0){break N}if((ka|0)>=74){break O}la=c[208312+(ka<<2)>>2]|0;if((a[la]|0)==ja<<24>>24){ma=ka}else{continue G}}}}while(0);ka=ka+1|0;if((ka|0)>=74){continue G}}switch(ma|0){case 20:case 21:{L=0;K=273;break G};case 75:{continue G};case 53:{ia=c[m>>2]|0;ha=ia+32|0;c[n>>2]=3;if((kN(b,h,1)|0)!=1){M=160;break F}P=c[R>>2]|0;c[ha>>2]=P;if((P|0)==0){ja=ia+28|0}else{ja=ia+28|0;c[ja>>2]=oJ(c[b>>2]|0,20,0,P,0,p)|0;P=c[q>>2]|0;if((P|0)!=0){M=P;break F}}ia=0;P:while(1){Q:while(1){ka=c[N>>2]|0;P=ka+12|0;na=c[P>>2]|0;R:do{if((na|0)>1){ma=c[ka+8>>2]|0;la=c[ka>>2]|0}else{la=c[ka>>2]|0;ma=c[ka+8>>2]|0;S:do{if((na|0)<=0){T:do{if(la>>>0>>0){na=la;U:while(1){la=na+1|0;c[ka>>2]=la;switch(d[na]|0){case 59:{K=189;break U};case 26:{A=la;break T};case 9:case 32:{break};case 10:case 13:{K=188;break U};default:{break S}}if(la>>>0>>0){na=la}else{A=la;break T}}if((K|0)==188){K=0;c[P>>2]=2;break R}else if((K|0)==189){K=0;c[P>>2]=1;break S}}else{A=la}}while(0);c[P>>2]=3;la=A;break R}}while(0);while(1){if(la>>>0>=ma>>>0){na=3;break}na=la+1|0;c[ka>>2]=na;la=a[la]|0;Ha=la&255;if((Ha|0)==10|(Ha|0)==13){la=na;na=2;break}if(la<<24>>24==26){la=na;na=3;break}else{la=na}}c[P>>2]=na}}while(0);c[P>>2]=0;if(la>>>0>=ma>>>0){K=200;break G}V:while(1){na=la+1|0;c[ka>>2]=na;switch(d[la]|0){case 10:case 13:{c[P>>2]=2;la=na;break};case 59:{K=199;break G};case 9:case 32:{if(na>>>0>>0){la=na;continue V}else{K=200;break G}break};case 26:{K=200;break G};default:{W:while(1){if(na>>>0>=ma>>>0){C=na;K=205;break}B=na+1|0;c[ka>>2]=B;switch(d[na]|0){case 59:{K=204;break W};case 26:{C=B;K=205;break W};case 9:case 32:{D=B;E=0;break W};case 10:case 13:{K=203;break W};default:{na=B}}}if((K|0)==203){K=0;c[P>>2]=2;D=B;E=2}else if((K|0)==204){K=0;c[P>>2]=1;D=B;E=1}else if((K|0)==205){K=0;c[P>>2]=3;D=C;E=3}if((la|0)!=0){break V}if((E|0)==2){la=D}else{M=160;break F}}}c[P>>2]=0;if(la>>>0>=ma>>>0){K=200;break G}}ma=D+~la|0;ka=a[la]|0;oa=0;X:while(1){na=c[208312+(oa<<2)>>2]|0;Y:do{if((a[na]|0)==ka<<24>>24&(oa|0)<74){pa=oa;while(1){oa=pa+1|0;if((vc(na|0,la|0,ma|0)|0)==0){break X}if((oa|0)>=74){break Y}na=c[208312+(oa<<2)>>2]|0;if((a[na]|0)==ka<<24>>24){pa=oa}else{continue Q}}}}while(0);oa=oa+1|0;if((oa|0)>=74){continue Q}}switch(pa|0){case 56:{break Q};case 75:{break};case 20:case 21:case 23:{break P};default:{M=160;break F}}}if((ia|0)>=(c[ha>>2]|0)){M=160;break F}ka=c[ja>>2]|0;c[r>>2]=3;c[Z>>2]=2;c[S>>2]=2;c[T>>2]=2;c[U>>2]=2;if((kN(b,j,5)|0)!=5){M=160;break F}Ha=c[fa>>2]|0;c[ka+(ia*20|0)>>2]=Ha;c[ka+(ia*20|0)+4>>2]=c[ga>>2];la=c[ea>>2]|0;P=ka+(ia*20|0)+8|0;c[P>>2]=la;c[ka+(ia*20|0)+12>>2]=c[da>>2];c[ka+(ia*20|0)+16>>2]=c[ca>>2];if((Ha|0)<0&(la|0)>0){c[P>>2]=0-la}ia=ia+1|0}c[ha>>2]=ia;continue G};case 51:case 50:{break};default:{M=160;break F}}ia=c[m>>2]|0;ha=ia+40|0;c[o>>2]=3;if((kN(b,k,1)|0)!=1){M=160;break F}O=c[ba>>2]|0;c[ha>>2]=O;if((O|0)==0){ja=ia+36|0}else{ja=ia+36|0;c[ja>>2]=oJ(c[b>>2]|0,16,0,O,0,s)|0;O=c[t>>2]|0;if((O|0)!=0){M=O;break F}}ia=0;Z:while(1){_:while(1){ka=c[N>>2]|0;O=ka+12|0;na=c[O>>2]|0;$:do{if((na|0)>1){ma=c[ka+8>>2]|0;la=c[ka>>2]|0}else{la=c[ka>>2]|0;ma=c[ka+8>>2]|0;aa:do{if((na|0)<=0){ba:do{if(la>>>0>>0){na=la;ca:while(1){la=na+1|0;c[ka>>2]=la;switch(d[na]|0){case 26:{F=la;break ba};case 9:case 32:{break};case 10:case 13:{K=234;break ca};case 59:{K=235;break ca};default:{break aa}}if(la>>>0>>0){na=la}else{F=la;break ba}}if((K|0)==234){K=0;c[O>>2]=2;break $}else if((K|0)==235){K=0;c[O>>2]=1;break aa}}else{F=la}}while(0);c[O>>2]=3;la=F;break $}}while(0);while(1){if(la>>>0>=ma>>>0){na=3;break}na=la+1|0;c[ka>>2]=na;la=a[la]|0;Ha=la&255;if((Ha|0)==10|(Ha|0)==13){la=na;na=2;break}if(la<<24>>24==26){la=na;na=3;break}else{la=na}}c[O>>2]=na}}while(0);c[O>>2]=0;if(la>>>0>=ma>>>0){K=246;break G}da:while(1){na=la+1|0;c[ka>>2]=na;switch(d[la]|0){case 26:{K=246;break G};case 9:case 32:{if(na>>>0>>0){la=na;continue da}else{K=246;break G}break};case 10:case 13:{c[O>>2]=2;la=na;break};case 59:{K=245;break G};default:{ea:while(1){if(na>>>0>=ma>>>0){H=na;K=251;break}G=na+1|0;c[ka>>2]=G;switch(d[na]|0){case 10:case 13:{K=249;break ea};case 59:{K=250;break ea};case 26:{H=G;K=251;break ea};case 9:case 32:{I=G;f=0;break ea};default:{na=G}}}if((K|0)==249){K=0;c[O>>2]=2;I=G;f=2}else if((K|0)==250){K=0;c[O>>2]=1;I=G;f=1}else if((K|0)==251){K=0;c[O>>2]=3;I=H;f=3}if((la|0)!=0){break da}if((f|0)==2){la=I}else{M=160;break F}}}c[O>>2]=0;if(la>>>0>=ma>>>0){K=246;break G}}ka=I+~la|0;ma=a[la]|0;na=0;fa:while(1){pa=c[208312+(na<<2)>>2]|0;ga:do{if((a[pa]|0)==ma<<24>>24&(na|0)<74){while(1){oa=na+1|0;if((vc(pa|0,la|0,ka|0)|0)==0){break fa}if((oa|0)>=74){na=oa;break ga}pa=c[208312+(oa<<2)>>2]|0;if((a[pa]|0)==ma<<24>>24){na=oa}else{continue _}}}}while(0);na=na+1|0;if((na|0)>=74){continue _}}switch(na|0){case 20:case 21:case 22:{break Z};case 37:case 36:case 34:{break _};case 75:{break};default:{M=160;break F}}}if((ia|0)>=(c[ha>>2]|0)){M=160;break F}O=c[ja>>2]|0;c[u>>2]=5;c[aa>>2]=5;c[$>>2]=3;c[_>>2]=3;ka=kN(b,l,4)|0;if((ka|0)<3){M=160;break F}c[O+(ia<<4)>>2]=c[Q>>2];c[O+(ia<<4)+4>>2]=c[Y>>2];if((na|0)==37){c[O+(ia<<4)+8>>2]=0;c[O+(ia<<4)+12>>2]=c[X>>2]}else{c[O+(ia<<4)+8>>2]=c[X>>2];if((na|0)==34&(ka|0)==4){ka=c[W>>2]|0}else{ka=0}c[O+(ia<<4)+12>>2]=ka}ia=ia+1|0}c[ha>>2]=ia;pb(c[ja>>2]|0,ia|0,16,191)}if((K|0)==160){c[V>>2]=1;M=160;break}else if((K|0)==161){c[V>>2]=3;M=160;break}else if((K|0)==199){c[P>>2]=1;M=160;break}else if((K|0)==200){c[P>>2]=3;M=160;break}else if((K|0)==245){c[O>>2]=1;M=160;break}else if((K|0)==246){c[O>>2]=3;M=160;break}else if((K|0)==273){i=J;return L|0}}else if((K|0)==273){i=J;return L|0}}while(0);Ha=x+28|0;lJ(g,c[Ha>>2]|0);c[Ha>>2]=0;c[x+32>>2]=0;Ha=x+36|0;lJ(g,c[Ha>>2]|0);c[Ha>>2]=0;c[x+40>>2]=0;a[x]=0;Ha=M;i=J;return Ha|0}else if((K|0)==273){i=J;return L|0}}}while(0);c[la>>2]=3;Ha=2;i=J;return Ha|0}function ZM(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=c[d+484>>2]|0;c[a+24>>2]=c[d+416>>2];c[a+28>>2]=c[d+420>>2];c[a+20>>2]=c[b+20>>2];c[a+16>>2]=c[b+24>>2];i=i;return 0}function _M(a){a=a|0;var b=0;b=i;bX(a+16|0,0,16)|0;i=b;return}function $M(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0;f=i;if(d>>>0>=256){j=0;i=f;return j|0}g=jd[c[b+20>>2]&511](e[(c[b+16>>2]|0)+(d<<1)>>1]|0)|0;d=c[b+24>>2]|0;if((d|0)==0){j=0;i=f;return j|0}b=c[b+28>>2]|0;h=0;a:while(1){j=c[b+(h<<2)>>2]|0;do{if((j|0)!=0){if((a[j]|0)!=(a[g]|0)){break}if((Qc(j|0,g|0)|0)==0){d=8;break a}}}while(0);h=h+1|0;if(h>>>0>=d>>>0){h=0;d=8;break}}if((d|0)==8){i=f;return h|0}return 0}function aN(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;m=(c[d>>2]|0)+1|0;if(m>>>0>=256){n=0;p=0;o=d;c[o>>2]=n;i=f;return p|0}h=b+16|0;g=b+20|0;j=b+24|0;b=b+28|0;a:while(1){o=jd[c[g>>2]&511](e[(c[h>>2]|0)+(m<<1)>>1]|0)|0;n=c[j>>2]|0;b:do{if((n|0)!=0){l=c[b>>2]|0;k=0;c:while(1){p=c[l+(k<<2)>>2]|0;do{if((p|0)!=0){if((a[p]|0)!=(a[o]|0)){break}if((Qc(p|0,o|0)|0)==0){break c}}}while(0);k=k+1|0;if(k>>>0>=n>>>0){break b}}if((k|0)!=0){g=11;break a}}}while(0);m=m+1|0;if(m>>>0>=256){m=0;k=0;g=11;break}}if((g|0)==11){p=d;c[p>>2]=m;i=f;return k|0}return 0}function bN(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=c[d+484>>2]|0;c[a+24>>2]=c[d+416>>2];c[a+28>>2]=c[d+420>>2];c[a+20>>2]=c[b+20>>2];c[a+16>>2]=c[b+28>>2];i=i;return 0}function cN(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=d+372|0;d=c[d+376>>2]|0;c[a+16>>2]=d;c[a+20>>2]=(c[b+8>>2]|0)-d;c[a+24>>2]=c[b+12>>2];i=i;return 0}function dN(a){a=a|0;c[a+24>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;i=i;return}function eN(a,b){a=a|0;b=b|0;var d=0,f=0;d=i;f=c[a+16>>2]|0;if(f>>>0>b>>>0){b=0;i=d;return b|0}if(((c[a+20>>2]|0)+f|0)>>>0<=b>>>0){b=0;i=d;return b|0}b=e[(c[a+24>>2]|0)+(b<<1)>>1]|0;i=d;return b|0}function fN(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;g=(c[d>>2]|0)+1|0;f=c[a+16>>2]|0;j=g>>>0>>0?f:g;f=(c[a+20>>2]|0)+f|0;a:do{if(j>>>0>>0){g=c[a+24>>2]|0;while(1){k=b[g+(j<<1)>>1]|0;a=k&65535;h=j+1|0;if(k<<16>>16!=0){break a}if(h>>>0>>0){j=h}else{j=0;break}}}else{j=0;a=0}}while(0);c[d>>2]=j;i=e;return a|0}function gN(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a>>2]|0;b=id[c[(c[b+484>>2]|0)+4>>2]&3](c[b+100>>2]|0,a,c[b+416>>2]|0,192,0,b)|0;i=d;return b|0}function hN(a){a=a|0;var b=0,d=0;b=i;d=a+20|0;lJ(c[(c[a>>2]|0)+100>>2]|0,c[d>>2]|0);c[d>>2]=0;c[a+16>>2]=0;i=b;return}function iN(a,b){a=a|0;b=b|0;var d=0;d=i;a=Bd[c[(c[(c[a>>2]|0)+484>>2]|0)+8>>2]&255](a,b)|0;i=d;return a|0}function jN(a,b){a=a|0;b=b|0;var d=0;d=i;a=Bd[c[(c[(c[a>>2]|0)+484>>2]|0)+12>>2]&255](a,b)|0;i=d;return a|0}function kN(b,e,f){b=b|0;e=e|0;f=f|0;var 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;h=i;k=i;i=i+8|0;m=k;n=i;i=i+8|0;j=n;l=c[b+4>>2]|0;if(f>>>0>5|(f|0)==0){x=0;i=h;return x|0}p=l+12|0;q=l+8|0;o=b+12|0;r=b+16|0;s=0;a:while(1){t=e+(s<<3)|0;u=c[p>>2]|0;v=(u|0)>0;if((c[t>>2]|0)==0){b:do{if(v){g=11}else{x=c[l>>2]|0;v=c[q>>2]|0;if(x>>>0>=v>>>0){g=10;break a}c:while(1){w=x+1|0;c[l>>2]=w;switch(d[x]|0|0){case 26:{g=10;break a};case 10:case 13:{g=8;break a};case 59:{break c};case 9:case 32:{break};default:{g=11;break b}}if(w>>>0>>0){x=w}else{g=10;break a}}c[p>>2]=1}}while(0);if((g|0)==11){g=0;if((u|0)>1){break}w=c[l>>2]|0;v=c[q>>2]|0}u=w+ -1|0;x=w;while(1){if(x>>>0>=v>>>0){w=x;v=3;break}w=x+1|0;c[l>>2]=w;x=a[x]|0;y=x&255;if((y|0)==10|(y|0)==13){v=2;break}if(x<<24>>24==26){v=3;break}else{x=w}}c[p>>2]=v;c[k>>2]=u}else{if(v){break}u=c[l>>2]|0;v=c[q>>2]|0;if(u>>>0>=v>>>0){g=24;break}d:while(1){x=u+1|0;c[l>>2]=x;switch(d[u]|0|0){case 26:{g=24;break a};case 9:case 32:{break};case 59:{g=23;break a};case 10:case 13:{g=22;break a};default:{break d}}if(x>>>0>>0){u=x}else{g=24;break a}}e:while(1){if(x>>>0>=v>>>0){w=x;g=29;break}w=x+1|0;c[l>>2]=w;switch(d[x]|0|0){case 59:{g=28;break e};case 10:case 13:{g=27;break e};case 9:case 32:{break e};case 26:{g=29;break e};default:{x=w}}}if((g|0)==27){g=0;c[p>>2]=2}else if((g|0)==28){g=0;c[p>>2]=1}else if((g|0)==29){g=0;c[p>>2]=3}c[k>>2]=u;if((u|0)==0){g=44;break}}w=w-u|0;v=w+ -1|0;f:do{switch(c[t>>2]|0){case 4:{if((v|0)==4){t=(vc(u|0,208176,4)|0)==0|0}else{t=0}a[e+(s<<3)+4|0]=t;break};case 3:{c[e+(s<<3)+4>>2]=nN(m,u+v|0)|0;break};case 5:{t=c[o>>2]|0;if((t|0)==0){c[e+(s<<3)+4>>2]=0;break f}else{c[e+(s<<3)+4>>2]=sd[t&127](u,v,c[r>>2]|0)|0;break f}break};case 1:case 0:{t=OK(c[b>>2]|0,w,j)|0;w=e+(s<<3)+4|0;c[w>>2]=t;if((c[n>>2]|0)!=0){break f}$W(t|0,u|0,v|0)|0;a[(c[w>>2]|0)+v|0]=0;break};case 2:{c[e+(s<<3)+4>>2]=mN(m,u+v|0,0)|0;break};default:{}}}while(0);s=s+1|0;if(s>>>0>=f>>>0){g=44;break}}if((g|0)==8){c[p>>2]=2}else if((g|0)==10){c[p>>2]=3}else if((g|0)==22){c[p>>2]=2}else if((g|0)==23){c[p>>2]=1}else if((g|0)==24){c[p>>2]=3}else if((g|0)==44){i=h;return s|0}c[k>>2]=0;y=s;i=h;return y|0}function lN(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a>>2]<<16|c[a+4>>2];b=c[b>>2]<<16|c[b+4>>2];if(a>>>0>b>>>0){a=1;i=d;return a|0}a=(a>>>0>>0)<<31>>31;i=d;return a|0}function mN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;f=i;i=i+8|0;k=f;m=c[b>>2]|0;c[f>>2]=m;if((m|0)==(d|0)){o=0;i=g;return o|0}h=a[m]|0;do{if(h<<24>>24==43|h<<24>>24==45){m=m+1|0;c[f>>2]=m;if((m|0)==(d|0)){o=0;i=g;return o|0}else{j=a[m]|0;h=h<<24>>24==45|0;break}}else{j=h;h=0}}while(0);if(j<<24>>24==46){j=0}else{j=(nN(k,d)|0)<<16;m=c[f>>2]|0}a:do{if(m>>>0>>0){if((a[m]|0)!=46){l=0;n=1;break}m=m+1|0;c[f>>2]=m;if(m>>>0>=d>>>0){l=0;n=1;break}if((j|0)==0){l=0;n=1}else{l=0;n=1;while(1){o=a[m]|0;switch(o<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{break a};default:{}}if(o<<24>>24<0){break a}o=o&127;if((o+ -48|0)>>>0>9){break a}if((n|0)<1e7){l=(l*10|0)+(a[208184+o|0]|0)|0;n=n*10|0}m=m+1|0;c[f>>2]=m;if(m>>>0>=d>>>0){break a}}}while(1){o=a[m]|0;switch(o<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{break a};default:{}}if(o<<24>>24<0){break a}p=o&127;o=a[208184+p|0]|0;if((p+ -48|0)>>>0>9){break a}do{if((e|0)>0){e=e+ -1|0;l=o+(l*10|0)|0}else{if((n|0)>=1e7){break}l=o+(l*10|0)|0;n=n*10|0}}while(0);m=m+1|0;c[f>>2]=m;if(m>>>0>=d>>>0){break a}}}else{l=0;n=1}}while(0);o=m+1|0;do{if(o>>>0>>0){p=a[m]|0;if(!(p<<24>>24==69|p<<24>>24==101)){break}c[f>>2]=o;e=(nN(k,d)|0)+e|0}}while(0);do{if((e|0)>0){while(1){j=j*10|0;l=l*10|0;e=e+ -1|0;if((e|0)>0){}else{break}}}else{if((e|0)>=0){break}while(1){j=(j|0)/10|0;n=n*10|0;e=e+1|0;if((e|0)<0){}else{break}}}}while(0);if((l|0)!=0){j=(bJ(l,n)|0)+j|0}c[b>>2]=c[f>>2];p=h<<24>>24==0?j:0-j|0;i=g;return p|0}function nN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;j=c[b>>2]|0;if((j|0)==(d|0)){k=0;i=e;return k|0}f=a[j]|0;if(f<<24>>24==43|f<<24>>24==45){h=j+1|0;if((h|0)==(d|0)){f=0}else{j=h;f=f<<24>>24==45|0;g=4}}else{f=0;g=4}if((g|0)==4){a:do{if(j>>>0>>0){h=0;g=j;while(1){j=a[g]|0;switch(j<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{break a};default:{}}if(j<<24>>24<0){break a}j=j&127;if((j+ -48|0)>>>0>=10){break a}h=(a[208184+j|0]|0)+(h*10|0)|0;g=g+1|0;if(g>>>0>=d>>>0){break a}}}else{h=0;g=j}}while(0);c[b>>2]=g;j=g;f=f<<24>>24==0?h:0-h|0}if(j>>>0>=d>>>0){k=f;i=e;return k|0}if((a[j]|0)!=35){k=f;i=e;return k|0}h=j+1|0;c[b>>2]=h;if((h|0)==(d|0)){k=0;i=e;return k|0}if((f+ -2|0)>>>0>34){k=0;i=e;return k|0}g=a[h]|0;do{if(g<<24>>24==43|g<<24>>24==45){h=j+2|0;if((h|0)==(d|0)){b=0}else{g=g<<24>>24==45|0;break}i=e;return b|0}else{g=0}}while(0);b:do{if(h>>>0>>0){j=0;while(1){k=a[h]|0;switch(k<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{break b};default:{}}if(k<<24>>24<0){break b}l=a[208184+(k&127)|0]|0;k=l<<24>>24;if(!(l<<24>>24>-1&(k|0)<(f|0))){break b}j=k+(da(j,f)|0)|0;h=h+1|0;if(h>>>0>=d>>>0){break b}}}else{j=0}}while(0);c[b>>2]=h;l=g<<24>>24==0?j:0-j|0;i=e;return l|0}function oN(a,b){a=a|0;b=b|0;i=i;return c[(c[a+420>>2]|0)+(b<<2)>>2]|0}function pN(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;if((c|0)==0){i=f;return}g=0;e=e&65535;while(1){j=b+g|0;h=d[j]|0;a[j]=h^e>>>8;g=g+1|0;if(g>>>0>>0){e=((h+e|0)*52845|0)+22719&65535}else{break}}i=f;return}function qN(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var 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,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;j=i;o=i;i=i+64|0;p=i;i=i+8|0;n=p;t=i;i=i+8|0;q=t;h=i;i=i+128|0;k=h;r=e+2|0;v=b[r>>1]|0;if(v<<16>>16==0){R=0;i=j;return R|0}if((b[e>>1]|0)==0){R=0;i=j;return R|0}bX(h|0,0,128)|0;u=c[f>>2]|0;m=k+16|0;c[m>>2]=u;l=k+8|0;c[l>>2]=oJ(u,48,0,v<<16>>16,0,q)|0;v=c[t>>2]|0;do{if((v|0)==0){x=oJ(u,8,0,b[e>>1]|0,0,q)|0;q=k+12|0;c[q>>2]=x;v=c[t>>2]|0;if((v|0)!=0){break}y=b[r>>1]|0;c[h>>2]=y;R=b[e>>1]|0;r=k+4|0;c[r>>2]=R<<16>>16;w=c[l>>2]|0;if(R<<16>>16!=0){v=e+12|0;D=0;A=0;while(1){B=b[(c[v>>2]|0)+(A<<1)>>1]|0;y=B+1|0;C=y-D|0;z=w+(D*48|0)|0;c[x>>2]=z;c[x+4>>2]=C;if((C|0)>0){B=w+(B*48|0)|0;c[z>>2]=B;c[w+(D*48|0)+8>>2]=x;if((C|0)>1){E=C;C=z;while(1){D=C+48|0;c[C+4>>2]=D;c[D>>2]=C;c[C+56>>2]=x;E=E+ -1|0;if((E|0)>1){C=D}else{break}}}else{B=z}c[B+4>>2]=z}A=A+1|0;if(A>>>0<(c[r>>2]|0)>>>0){x=x+8|0;D=y}else{break}}y=c[h>>2]|0;w=c[l>>2]|0}v=e+4|0;x=c[v>>2]|0;do{if((y|0)==0){c[k+20>>2]=e;c[k+24>>2]=f}else{y=e+8|0;A=0;z=w;while(1){C=((c[z>>2]|0)-w|0)/48|0;F=((c[z+4>>2]|0)-w|0)/48|0;if((a[(c[y>>2]|0)+A|0]&1)==0){c[z+12>>2]=1}E=x+(A<<3)|0;B=(c[E>>2]|0)-(c[x+(C<<3)>>2]|0)|0;G=x+(A<<3)+4|0;C=(c[G>>2]|0)-(c[x+(C<<3)+4>>2]|0)|0;D=(B|0)>-1?B:0-B|0;H=(C|0)>-1?C:0-C|0;do{if((H*12|0)<(D|0)){D=(B>>31&252|2)&255}else{if((D*12|0)>=(H|0)){D=4;break}D=(C>>31&2)+255&255}}while(0);a[z+20|0]=D;E=(c[x+(F<<3)>>2]|0)-(c[E>>2]|0)|0;F=(c[x+(F<<3)+4>>2]|0)-(c[G>>2]|0)|0;G=(E|0)>-1?E:0-E|0;H=(F|0)>-1?F:0-F|0;do{if((H*12|0)<(G|0)){H=(E>>31&252|2)&255}else{if((G*12|0)>=(H|0)){H=4;break}H=(F>>31&2)+255&255}}while(0);a[z+21|0]=H;G=z+12|0;I=c[G>>2]|0;do{if((I&1|0)==0){if(D<<24>>24!=H<<24>>24){break}if(D<<24>>24==4){if((hJ(B,C,E,F)|0)==0){break}I=c[G>>2]|0}c[G>>2]=I|2}else{c[G>>2]=I|2}}while(0);A=A+1|0;B=c[h>>2]|0;if(A>>>0>>0){z=z+48|0}else{break}}c[k+20>>2]=e;c[k+24>>2]=f;if((B|0)==0){break}e=c[l>>2]|0;v=c[v>>2]|0;while(1){c[e+16>>2]=0;c[e+32>>2]=0;c[e+36>>2]=c[v>>2];c[e+40>>2]=c[v+4>>2];B=B+ -1|0;if((B|0)==0){break}else{v=v+8|0;e=e+48|0}}}}while(0);if((c[r>>2]|0)!=0){e=0;do{v=c[q>>2]|0;a:do{if((c[v+(e<<3)+4>>2]|0)>>>0>=4){y=c[v+(e<<3)>>2]|0;B=y+36|0;v=y+40|0;z=y;do{z=c[z+4>>2]|0;if((z|0)==(y|0)){break a}Q=c[z+36>>2]|0;D=c[B>>2]|0;w=Q-D|0;R=c[z+40>>2]|0;A=c[v>>2]|0;x=R-A|0;}while((Q|0)==(D|0)&(R|0)==(A|0));C=c[y>>2]|0;if((C|0)==(y|0)){break}else{v=y}while(1){G=C+36|0;Q=c[G>>2]|0;E=D-Q|0;F=C+40|0;R=c[F>>2]|0;B=A-R|0;if(!((D|0)==(Q|0)&(A|0)==(R|0))){A=gJ(w,x,E,B)|0;if((A|0)!=0){w=E;E=v;break}}v=c[C>>2]|0;if((v|0)==(y|0)){break a}R=C;A=c[F>>2]|0;D=c[G>>2]|0;C=v;v=R}while(1){x=z;F=0;while(1){z=c[x+4>>2]|0;F=(z|0)==(v|0)?1:F;O=c[z+36>>2]|0;P=c[x+36>>2]|0;D=O-P|0;Q=c[z+40>>2]|0;R=c[x+40>>2]|0;y=Q-R|0;if((O|0)==(P|0)&(Q|0)==(R|0)){x=z;continue}C=gJ(w,B,D,y)|0;if((C|0)==0){x=z}else{break}}if((C^A|0)<0){do{R=E+12|0;c[R>>2]=c[R>>2]|4;E=c[E+4>>2]|0;}while((E|0)!=(x|0));R=x+12|0;c[R>>2]=c[R>>2]|4}if((F|0)==0){w=D;B=y;A=C;E=x}else{break}}}}while(0);e=e+1|0;}while(e>>>0<(c[r>>2]|0)>>>0)}v=RN(k+28|0,d+16|0,d+28|0,u)|0;c[t>>2]=v;if((v|0)!=0){break}v=RN(k+68|0,d+52|0,d+64|0,u)|0;if((v|0)!=0){break}d=k+24|0;u=c[d>>2]|0;t=c[u+200>>2]|0;u=c[u+404>>2]|0;v=aJ(c[f+416>>2]|0,u)|0;w=v+32&-64;if((w|0)==0|(v|0)==(w|0)){B=0}else{e=_I(u,w,v)|0;if((w|0)<(v|0)){v=t-((t|0)/50|0)|0}else{v=t}rN(c[d>>2]|0,v,e,0,0)|0;B=1}a[k+120|0]=1;a[k+121|0]=1;if((g|0)==2){a[k+122|0]=1;e=1}else{a[k+122|0]=(g|0)==3|0;e=(g|0)==4|0}a[k+123|0]=e;a[k+124|0]=(g|0)!=1|0;x=k+20|0;z=f+412|0;y=f+416|0;e=f+928|0;v=f+2488|0;A=f+2492|0;g=f+2484|0;w=f+428|0;B=B<<24>>24==0;C=0;while(1){E=c[h>>2]|0;F=c[l>>2]|0;D=c[(c[x>>2]|0)+4>>2]|0;if((E|0)!=0){if((C|0)==0){while(1){c[F+16>>2]=0;c[F+32>>2]=0;c[F+36>>2]=c[D>>2];c[F+40>>2]=c[D+4>>2];E=E+ -1|0;if((E|0)==0){break}else{D=D+8|0;F=F+48|0}}}else{while(1){c[F+16>>2]=0;c[F+32>>2]=0;c[F+36>>2]=c[D+4>>2];c[F+40>>2]=c[D>>2];E=E+ -1|0;if((E|0)==0){break}else{D=D+8|0;F=F+48|0}}}}F=c[r>>2]|0;b:do{if((F|0)==0){D=0}else{D=0;while(1){R=c[q>>2]|0;E=c[R+(D<<3)>>2]|0;if((c[R+(D<<3)+4>>2]|0)!=0){F=E+36|0;G=E;do{G=c[G>>2]|0;if((G|0)==(E|0)){s=97;break b}}while((c[G+36>>2]|0)==(c[F>>2]|0));E=c[G+4>>2]|0;I=E;c:while(1){H=I+36|0;F=I;do{F=c[F+4>>2]|0;if((F|0)==(E|0)){break c}J=c[F+36>>2]|0;K=c[H>>2]|0;}while((J|0)==(K|0));if((c[G+36>>2]|0)<(K|0)){if((J|0)<(K|0)){s=82}}else{if((J|0)>(K|0)){s=82}}if((s|0)==82){while(1){s=0;R=I+16|0;c[R>>2]=c[R>>2]|64;I=c[I+4>>2]|0;if((I|0)==(F|0)){break}else{s=82}}}G=c[F>>2]|0;I=F}F=c[r>>2]|0}D=D+1|0;if(D>>>0>=F>>>0){D=0;break}}}}while(0);d:while(1){if((s|0)==97){s=0;D=D+1|0}if(D>>>0>=(c[h>>2]|0)>>>0){break}G=c[l>>2]|0;s=G+(D*48|0)|0;F=G+(D*48|0)+16|0;E=c[F>>2]|0;if((E&64|0)==0){s=97;continue}I=G+(D*48|0)+40|0;J=s;while(1){J=c[J>>2]|0;if((J|0)==(s|0)){s=97;continue d}H=c[J+40>>2]|0;G=c[I>>2]|0;if((H|0)==(G|0)){}else{J=s;break}}while(1){J=c[J+4>>2]|0;if((J|0)==(s|0)){s=97;continue d}I=c[J+40>>2]|0;if((I|0)!=(G|0)){break}}if((H|0)<(G|0)&(I|0)>(G|0)){c[F>>2]=E|128;s=97;continue}if(!((H|0)>(G|0)&(I|0)<(G|0))){s=97;continue}c[F>>2]=E|256;s=97}E=k+28+(C*40|0)|0;H=c[d>>2]|0;F=c[E>>2]|0;if((F|0)!=0){D=c[k+28+(C*40|0)+8>>2]|0;while(1){QN(D,H,C,k);F=F+ -1|0;if((F|0)==0){break}else{D=D+28|0}}H=c[d>>2]|0}F=k+28+(C*40|0)+32|0;L=c[F>>2]|0;K=c[L+8>>2]|0;L=c[L>>2]|0;D=(C|0)==0;G=D?1:2;H=bJ(32,c[H+4+(C*204|0)+196>>2]|0)|0;H=(H|0)>30?30:H;e:do{if(L>>>0>1){M=c[h>>2]|0;if((M|0)==0){break}N=c[K+12>>2]|0;I=k+28+(C*40|0)+4|0;s=k+28+(C*40|0)+12|0;J=M;M=N>>>0>M>>>0?M:N;while(1){N=K+16|0;O=c[K+28>>2]|0;O=O>>>0>J>>>0?J:O;J=O-M|0;if((J|0)>0){R=(c[l>>2]|0)+(M*48|0)|0;ON(E,c[N>>2]|0,c[K+24>>2]|0);PN(c[I>>2]|0,c[s>>2]|0,R,J,H,G)}L=L+ -1|0;if(L>>>0<=1){J=s;s=111;break e}J=c[h>>2]|0;M=O;K=N}}else{if((L|0)!=1){s=112;break}I=k+28+(C*40|0)+4|0;J=k+28+(C*40|0)+12|0;s=111}}while(0);if((s|0)==111){R=c[h>>2]|0;Q=c[l>>2]|0;P=c[(c[F>>2]|0)+8>>2]|0;ON(E,c[P>>2]|0,c[P+8>>2]|0);PN(c[I>>2]|0,c[J>>2]|0,Q,R,H,G);s=112}do{if((s|0)==112){s=0;H=c[h>>2]|0;if((H|0)==0){break}E=c[l>>2]|0;while(1){do{if((c[E+32>>2]|0)!=0){F=E+16|0;G=c[F>>2]|0;if((G&16|0)!=0){break}c[F>>2]=G|16}}while(0);H=H+ -1|0;if((H|0)==0){break}else{E=E+48|0}}}}while(0);do{if((C|0)==1){H=c[h>>2]|0;if((H|0)==0){H=0;break}E=c[l>>2]|0;while(1){R=a[E+20|0]|0;if(R<<24>>24==-2|R<<24>>24==2){s=123}else{R=a[E+21|0]|0;if(R<<24>>24==-2|R<<24>>24==2){s=123}}f:do{if((s|0)==123){s=0;F=E+16|0;M=c[F>>2]|0;if((M&16|0)!=0){break}G=c[E+36>>2]|0;N=c[z>>2]|0;g:do{if((N|0)!=0){I=E+44|0;L=G-(c[w>>2]|0)|0;J=c[v>>2]|0;if((L|0)<(0-J|0)){break}else{K=y}while(1){do{if((G|0)<=((c[K+8>>2]|0)+J|0)){if((a[A]|0)==0){if((L|0)>(c[g>>2]|0)){break}}c[I>>2]=c[K+24>>2];M=M|48;c[F>>2]=M}}while(0);N=N+ -1|0;if((N|0)==0){break g}L=G-(c[K+44>>2]|0)|0;J=c[v>>2]|0;if((L|0)<(0-J|0)){break}else{K=K+32|0}}}}while(0);N=c[e>>2]|0;if((N|0)==0){break}L=N+ -1|0;I=E+44|0;K=(c[f+932+(L<<5)+8>>2]|0)-G|0;J=c[v>>2]|0;if((K|0)<(0-J|0)){break}L=f+932+(L<<5)|0;while(1){do{if((G|0)>=((c[L+12>>2]|0)-J|0)){if((a[A]|0)==0){if((K|0)>=(c[g>>2]|0)){break}}c[I>>2]=c[L+28>>2];M=M|48;c[F>>2]=M}}while(0);N=N+ -1|0;if((N|0)==0){break f}K=(c[L+ -24>>2]|0)-G|0;J=c[v>>2]|0;if((K|0)<(0-J|0)){break}else{L=L+ -32|0}}}}while(0);H=H+ -1|0;if((H|0)==0){s=142;break}else{E=E+48|0}}}else{s=142}}while(0);do{if((s|0)==142){s=0;H=c[h>>2]|0;E=c[(c[d>>2]|0)+4+(C*204|0)+196>>2]|0;if((H|0)==0){H=0;break}F=c[l>>2]|0;while(1){J=c[F+32>>2]|0;if((J|0)!=0){G=F+16|0;I=c[G>>2]|0;do{if((I&512|0)==0){if((I&1024|0)!=0){c[F+44>>2]=(c[J+12>>2]|0)+(c[J+8>>2]|0);break}I=(c[F+36>>2]|0)-(c[J>>2]|0)|0;if((I|0)<1){R=c[J+8>>2]|0;c[F+44>>2]=(aJ(I,E)|0)+R;break}K=c[J+4>>2]|0;L=c[J+8>>2]|0;J=c[J+12>>2]|0;if((I|0)<(K|0)){c[F+44>>2]=(_I(I,J,K)|0)+L;break}else{c[F+44>>2]=J+L+(aJ(I-K|0,E)|0);break}}else{c[F+44>>2]=c[J+8>>2]}}while(0);c[G>>2]=c[G>>2]|32}H=H+ -1|0;if((H|0)==0){break}else{F=F+48|0}}H=c[h>>2]|0}}while(0);G=c[(c[d>>2]|0)+4+(C*204|0)+196>>2]|0;F=c[m>>2]|0;L=c[l>>2]|0;E=L+(H*48|0)|0;do{if((H|0)>0){H=0;I=L;do{H=((c[I+16>>2]|0)>>>4&1)+H|0;I=I+48|0;}while(I>>>0>>0);if((H|0)==0){break}if(H>>>0<17){H=o}else{H=oJ(F,4,0,H,0,n)|0;if((c[p>>2]|0)!=0){break}}I=0;J=L;do{if((c[J+16>>2]&16|0)!=0){M=H+(I<<2)|0;h:do{if((I|0)>0){K=J+36|0;while(1){N=M+ -4|0;O=c[N>>2]|0;if((c[O+36>>2]|0)<=(c[K>>2]|0)){break h}c[M>>2]=O;if(N>>>0>H>>>0){M=N}else{M=N;break}}}}while(0);c[M>>2]=J;I=I+1|0}J=J+48|0;}while(J>>>0>>0);K=(I|0)==0;J=H+(I+ -1<<2)|0;do{M=L+16|0;Q=c[M>>2]|0;do{if((Q&16|0)==0){O=L+12|0;P=c[O>>2]|0;if((P&2|0)!=0){N=a[L+20|0]|0;if(N<<24>>24==4){break}if(N<<24>>24!=(a[L+21|0]|0)){break}if((Q&64|0)==0){if((P&4|0)==0){break}}c[O>>2]=P&-3}N=c[L+36>>2]|0;do{if(K){s=182}else{O=0;while(1){P=O+1|0;if((c[(c[H+(O<<2)>>2]|0)+36>>2]|0)>(N|0)){break}if(P>>>0>>0){O=P}else{O=P;break}}if((O|0)==0){s=182;break}O=c[H+(O+ -1<<2)>>2]|0;P=I;while(1){if((P|0)==0){P=0;break}Q=P+ -1|0;if((c[(c[H+(Q<<2)>>2]|0)+36>>2]|0)<(N|0)){break}else{P=Q}}if((P|0)==(I|0)){Q=c[J>>2]|0;R=c[Q+44>>2]|0;c[L+44>>2]=(aJ(N-(c[Q+36>>2]|0)|0,G)|0)+R;break}P=c[H+(P<<2)>>2]|0;R=c[O+36>>2]|0;if((N|0)==(R|0)){c[L+44>>2]=c[O+44>>2];break}Q=c[P+36>>2]|0;if((N|0)==(Q|0)){c[L+44>>2]=c[P+44>>2];break}else{O=c[O+44>>2]|0;c[L+44>>2]=(_I(N-R|0,(c[P+44>>2]|0)-O|0,Q-R|0)|0)+O;break}}}while(0);if((s|0)==182){s=0;Q=c[H>>2]|0;R=c[Q+44>>2]|0;c[L+44>>2]=(aJ(N-(c[Q+36>>2]|0)|0,G)|0)+R}c[M>>2]=c[M>>2]|32}}while(0);L=L+48|0;}while(L>>>0>>0);if((H|0)==(o|0)){break}lJ(F,H)}}while(0);G=c[r>>2]|0;H=c[d>>2]|0;E=c[H+4+(C*204|0)+196>>2]|0;if((G|0)!=0){F=c[q>>2]|0;H=c[H+4+(C*204|0)+200>>2]|0;while(1){K=c[F>>2]|0;R=c[F+4>>2]|0;J=K+(R*48|0)|0;i:do{if((R|0)>0){I=0;L=0;M=K;do{if((c[M+16>>2]&32|0)!=0){I=(I|0)==0?M:I;L=L+1|0}M=M+48|0;}while(M>>>0>>0);if(L>>>0<2){if((L|0)==1){H=c[I+44>>2]|0;H=H-(aJ(c[I+36>>2]|0,E)|0)|0}while(1){if((K|0)!=(I|0)){c[K+44>>2]=(aJ(c[K+36>>2]|0,E)|0)+H}K=K+48|0;if(K>>>0>=J>>>0){break i}}}O=I+4|0;M=c[O>>2]|0;if((M|0)==(I|0)){break}else{L=I}while(1){if((c[M+16>>2]&32|0)==0){J=M;do{J=c[J+4>>2]|0;}while((c[J+16>>2]&32|0)==0);N=c[L+36>>2]|0;Q=c[J+36>>2]|0;if((N|0)>(Q|0)){P=c[J+44>>2]|0;K=P;P=(c[L+44>>2]|0)-P|0;L=Q;N=N-Q|0}else{P=c[L+44>>2]|0;K=P;P=(c[J+44>>2]|0)-P|0;L=N;N=Q-N|0}if((N|0)>0){R=bJ(P,N)|0;M=c[O>>2]|0;O=R}else{O=65536}P=P+K|0;do{Q=(c[M+36>>2]|0)-L|0;do{if((Q|0)<1){Q=(aJ(Q,E)|0)+K|0}else{if((Q|0)<(N|0)){Q=(aJ(Q,O)|0)+K|0;break}else{Q=P+(aJ(Q-N|0,E)|0)|0;break}}}while(0);c[M+44>>2]=Q;M=c[M+4>>2]|0;}while((M|0)!=(J|0));if((J|0)==(I|0)){break i}}else{J=M}O=J+4|0;M=c[O>>2]|0;if((M|0)==(I|0)){break}else{L=J}}}}while(0);G=G+ -1|0;if((G|0)==0){break}else{F=F+8|0}}}H=c[l>>2]|0;G=c[x>>2]|0;F=c[G+4>>2]|0;G=c[G+8>>2]|0;if((c[h>>2]|0)!=0){E=D?32:64;if(D){D=0;while(1){c[F+(D<<3)>>2]=c[H+44>>2];if((c[H+16>>2]&16|0)!=0){R=G+D|0;a[R]=a[R]|E}D=D+1|0;if(D>>>0<(c[h>>2]|0)>>>0){H=H+48|0}else{break}}}else{D=0;while(1){c[F+(D<<3)+4>>2]=c[H+44>>2];if((c[H+16>>2]&16|0)!=0){R=G+D|0;a[R]=a[R]|E}D=D+1|0;if(D>>>0<(c[h>>2]|0)>>>0){H=H+48|0}else{break}}}}if(!B){rN(c[d>>2]|0,t,u,0,0)|0}C=C+1|0;if((C|0)>=2){v=0;break}}}else{q=k+12|0}}while(0);R=c[m>>2]|0;Q=k+92|0;lJ(R,c[Q>>2]|0);c[Q>>2]=0;c[k+88>>2]=0;c[k+96>>2]=0;Q=k+80|0;lJ(R,c[Q>>2]|0);c[Q>>2]=0;Q=k+76|0;lJ(R,c[Q>>2]|0);c[Q>>2]=0;c[k+72>>2]=0;c[k+68>>2]=0;c[k+84>>2]=0;Q=k+52|0;lJ(R,c[Q>>2]|0);c[Q>>2]=0;c[k+48>>2]=0;c[k+56>>2]=0;Q=k+40|0;lJ(R,c[Q>>2]|0);c[Q>>2]=0;Q=k+36|0;lJ(R,c[Q>>2]|0);c[Q>>2]=0;c[k+32>>2]=0;c[k+28>>2]=0;c[k+44>>2]=0;lJ(R,c[l>>2]|0);c[l>>2]=0;lJ(R,c[q>>2]|0);c[q>>2]=0;c[h>>2]=0;c[k+4>>2]=0;c[m>>2]=0;R=v;i=j;return R|0}function rN(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;k=b+200|0;l=b+204|0;if((c[k>>2]|0)==(d|0)){if((c[l>>2]|0)!=(f|0)){j=3}}else{j=3}do{if((j|0)==3){c[k>>2]=d;c[l>>2]=f;k=c[b+4>>2]|0;if((k|0)==0){break}m=aJ(c[b+8>>2]|0,d)|0;j=b+12|0;c[j>>2]=m;c[b+16>>2]=m+32&-64;m=k+ -1|0;if((m|0)==0){break}k=b+20|0;while(1){l=aJ(c[k>>2]|0,d)|0;n=c[j>>2]|0;f=l-n|0;o=(((f|0)<0?0-f|0:f)|0)<128?n:l;c[k+4>>2]=o;c[k+8>>2]=o+32&-64;m=m+ -1|0;if((m|0)==0){break}else{k=k+12|0}}}}while(0);j=b+404|0;d=b+408|0;do{if((c[j>>2]|0)==(e|0)){if((c[d>>2]|0)!=(g|0)){break}i=h;return 0}}while(0);c[j>>2]=e;c[d>>2]=g;j=c[b+208>>2]|0;do{if((j|0)!=0){m=aJ(c[b+212>>2]|0,e)|0;d=b+216|0;c[d>>2]=m;c[b+220>>2]=m+32&-64;m=j+ -1|0;if((m|0)==0){break}j=b+224|0;while(1){f=aJ(c[j>>2]|0,e)|0;l=c[d>>2]|0;k=f-l|0;o=(((k|0)<0?0-k|0:k)|0)<128?l:f;c[j+4>>2]=o;c[j+8>>2]=o+32&-64;m=m+ -1|0;if((m|0)==0){break}else{j=j+12|0}}}}while(0);l=b+412|0;if((e|0)>34359737){a[b+2492|0]=((c[b+2476>>2]<<3|0)/125|0|0)>(e|0)|0}else{a[b+2492|0]=(e*125|0)<(c[b+2476>>2]<<3|0)|0}d=c[b+2480>>2]|0;a:do{if((d|0)>0){while(1){j=d+ -1|0;if((aJ(d,e)|0)<=32){break a}if((j|0)>0){d=j}else{d=j;break}}}}while(0);c[b+2484>>2]=d;d=b+1960|0;j=b+928|0;k=b+1444|0;f=0;do{if((f|0)==2){n=k}else if((f|0)==1){n=j}else if((f|0)==0){n=l}else{n=d}m=c[n>>2]|0;if((m|0)!=0){n=n+4|0;while(1){c[n+28>>2]=(aJ(c[n+8>>2]|0,e)|0)+g;c[n+24>>2]=(aJ(c[n+12>>2]|0,e)|0)+g;o=n+16|0;c[o>>2]=(aJ(c[n>>2]|0,e)|0)+g;c[n+20>>2]=aJ(c[n+4>>2]|0,e)|0;c[o>>2]=(c[o>>2]|0)+32&-64;m=m+ -1|0;if((m|0)==0){break}else{n=n+32|0}}}f=f+1|0;}while(f>>>0<4);f=c[l>>2]|0;b:do{if((f|0)!=0){g=b+1448|0;l=b+416|0;while(1){o=c[k>>2]|0;c:do{if((o|0)!=0){m=g;while(1){n=(c[l>>2]|0)-(c[m>>2]|0)|0;if((aJ((n|0)<0?0-n|0:n,e)|0)<64){break}o=o+ -1|0;if((o|0)==0){break c}else{m=m+32|0}}c[l+28>>2]=c[m+28>>2];c[l+24>>2]=c[m+24>>2];c[l+16>>2]=c[m+16>>2];c[l+20>>2]=c[m+20>>2]}}while(0);f=f+ -1|0;if((f|0)==0){break b}l=l+32|0}}}while(0);j=c[j>>2]|0;if((j|0)==0){i=h;return 0}g=b+1964|0;b=b+932|0;while(1){f=c[d>>2]|0;d:do{if((f|0)!=0){k=g;while(1){l=(c[b>>2]|0)-(c[k>>2]|0)|0;if((aJ((l|0)<0?0-l|0:l,e)|0)<64){break}f=f+ -1|0;if((f|0)==0){break d}else{k=k+32|0}}c[b+28>>2]=c[k+28>>2];c[b+24>>2]=c[k+24>>2];c[b+16>>2]=c[k+16>>2];c[b+20>>2]=c[k+20>>2]}}while(0);j=j+ -1|0;if((j|0)==0){break}b=b+32|0}i=h;return 0}function sN(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a+8>>2]|0;e=a+20|0;bX(e|0,0,88)|0;c[e>>2]=d;c[a+108>>2]=77;c[a+112>>2]=39;c[a+116>>2]=332;d=a+120|0;bX(d|0,0,20)|0;c[a+124>>2]=333;c[a+128>>2]=193;c[a+132>>2]=146;c[a+136>>2]=147;c[a+140>>2]=92;c[a+144>>2]=41;c[d>>2]=e;d=a+148|0;bX(d|0,0,20)|0;c[a+152>>2]=334;c[a+156>>2]=193;c[a+160>>2]=33;c[a+164>>2]=34;c[a+168>>2]=148;c[a+172>>2]=41;c[d>>2]=e;i=b;return 0}function tN(a){a=a|0;var b=0,d=0,e=0;b=i;c[a+120>>2]=0;c[a+148>>2]=0;d=a+20|0;e=c[d>>2]|0;uN(a+36|0,e);uN(a+72|0,e);c[a+24>>2]=0;c[d>>2]=0;i=b;return}function uN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;f=a+28|0;h=c[f>>2]|0;e=a+32|0;if((h|0)!=0){g=c[e>>2]|0;while(1){lJ(b,c[g+8>>2]|0);bX(g|0,0,16)|0;h=h+ -1|0;if((h|0)==0){break}else{g=g+16|0}}}lJ(b,c[e>>2]|0);c[e>>2]=0;c[a+24>>2]=0;c[f>>2]=0;f=a+16|0;h=c[f>>2]|0;e=a+20|0;if((h|0)!=0){g=c[e>>2]|0;while(1){lJ(b,c[g+8>>2]|0);bX(g|0,0,16)|0;h=h+ -1|0;if((h|0)==0){break}else{g=g+16|0}}}lJ(b,c[e>>2]|0);c[e>>2]=0;c[a+12>>2]=0;c[f>>2]=0;h=a+8|0;lJ(b,c[h>>2]|0);c[h>>2]=0;c[a>>2]=0;c[a+4>>2]=0;i=d;return}function vN(a){a=a|0;c[a+4>>2]=0;c[a+12>>2]=2;c[a+16>>2]=0;c[a+28>>2]=0;c[a+40>>2]=0;c[a+52>>2]=0;c[a+64>>2]=0;c[a+76>>2]=0;i=i;return}function wN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=c[a+4>>2]|0;if((e|0)!=0){f=e;i=d;return f|0}f=c[a>>2]|0;e=CN(a+16|0,b,f)|0;if((e|0)!=0){f=e;i=d;return f|0}f=CN(a+52|0,b,f)|0;i=d;return f|0}function xN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;f=i;i=i+128|0;if((d|0)<=0){i=g;return}h=a+4|0;j=a+12|0;b=a+16+((b>>>0>1?1:b)*36|0)|0;m=0;do{k=(d|0)>16?16:d;l=k<<1;n=(k|0)>0;do{if(n){o=0;do{m=(c[e+(o<<2)>>2]|0)+m|0;c[f+(o<<2)>>2]=(ZI(m)|0)>>16;o=o+1|0;}while((o|0)<(l|0));if(n){n=0}else{break}while(1){o=f+((n|1)<<2)|0;c[o>>2]=(c[o>>2]|0)-(c[f+(n<<2)>>2]|0);n=n+2|0;if((n|0)<(l|0)){}else{break}}}}while(0);a:do{if((c[h>>2]|0)==0){if(((c[j>>2]|0)+ -1|0)>>>0>1|(k|0)==0){break}else{o=k;l=f}while(1){n=BN(b,c[l>>2]|0,c[l+4>>2]|0,c[a>>2]|0,0)|0;if((n|0)!=0){break}o=o+ -1|0;if((o|0)==0){break a}l=l+8|0}c[h>>2]=n}}while(0);d=d-k|0;}while((d|0)>0);i=g;return}function yN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;f=a+4|0;if((c[f>>2]|0)!=0){i=g;return}l=a+16|0;h=c[a>>2]|0;k=c[l>>2]|0;a=a+52|0;j=c[a>>2]|0;if((j+k|0)!=(d|0)){i=g;return}d=AN(l,e,j,k,b,h)|0;do{if((d|0)==0){d=AN(a,e,0,j,b,h)|0;if((d|0)!=0){break}i=g;return}}while(0);c[f>>2]=d;i=g;return}function zN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;e=a+4|0;if((c[e>>2]|0)!=0){i=f;return}k=a+16|0;h=c[a>>2]|0;g=c[k>>2]|0;a=a+52|0;j=c[a>>2]|0;if((j+g|0)!=(b|0)){i=f;return}b=AN(k,d,0,g,0,h)|0;do{if((b|0)==0){b=AN(a,d,g,j,0,h)|0;if((b|0)!=0){break}i=f;return}}while(0);c[e>>2]=b;i=f;return}function AN(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;k=i;m=i;i=i+8|0;l=m;o=i;i=i+8|0;q=o;r=i;i=i+8|0;n=b+12|0;p=c[n>>2]|0;if((p|0)==0){h=0}else{c[(c[b+20>>2]|0)+(p+ -1<<4)+12>>2]=h;h=c[n>>2]|0}s=h+1|0;p=b+16|0;u=c[p>>2]|0;do{if(s>>>0>u>>>0){c[r>>2]=0;t=h+8&-8;v=b+20|0;u=oJ(j,16,u,t,c[v>>2]|0,r)|0;c[v>>2]=u;r=c[r>>2]|0;if((r|0)==0){c[p>>2]=t;break}else{v=r;i=k;return v|0}}else{u=c[b+20>>2]|0}}while(0);c[u+(h<<4)>>2]=0;c[u+(h<<4)+12>>2]=0;c[n>>2]=s;if((s|0)==0){do{if((c[p>>2]|0)==0){c[o>>2]=0;v=b+20|0;q=oJ(j,16,0,8,c[v>>2]|0,q)|0;c[v>>2]=q;o=c[o>>2]|0;if((o|0)==0){c[p>>2]=8;break}else{v=o;i=k;return v|0}}else{q=c[b+20>>2]|0}}while(0);c[q>>2]=0;c[q+12>>2]=0;c[n>>2]=1;n=q}else{n=(c[b+20>>2]|0)+(h<<4)|0}o=n+4|0;p=((c[o>>2]|0)+7|0)>>>3;q=(g+7|0)>>>3;c[m>>2]=0;do{if(q>>>0>p>>>0){q=q+7&1073741816;v=n+8|0;c[v>>2]=oJ(j,1,p,q,c[v>>2]|0,l)|0;l=c[m>>2]|0;if((l|0)==0){c[o>>2]=q<<3;break}else{v=l;i=k;return v|0}}}while(0);c[n>>2]=g;if((g|0)==0){v=0;i=k;return v|0}e=e+(f>>>3)|0;j=128>>>(f&7);l=128;f=c[n+8>>2]|0;while(1){m=(d[f]|0)&~l;if(((d[e]|0)&j|0)==0){m=m&255}else{m=(m|l)&255}a[f]=m;n=j>>1;j=(n|0)==0;l=l>>1;m=(l|0)==0;g=g+ -1|0;if((g|0)==0){f=0;break}else{e=j?e+1|0:e;j=j?128:n;l=m?128:l;f=m?f+1|0:f}}i=k;return f|0}function BN(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;j=i;k=i;i=i+8|0;l=k;n=i;i=i+8|0;o=n;p=i;i=i+8|0;q=p;if((f|0)<0){m=(f|0)==-21;f=0;e=(m?-21:0)+e|0;r=m?3:1}else{r=0}m=(h|0)!=0;if(m){c[h>>2]=-1}s=c[b>>2]|0;a:do{if((s|0)==0){u=0;t=10}else{u=0;v=c[b+8>>2]|0;while(1){if((c[v>>2]|0)==(e|0)){if((c[v+4>>2]|0)==(f|0)){p=u;break a}}u=u+1|0;if(u>>>0>>0){v=v+12|0}else{t=10;break}}}}while(0);if((t|0)==10){w=s+1|0;t=b+4|0;x=c[t>>2]|0;do{if(w>>>0>=x>>>0){c[p>>2]=0;if(x>>>0>=w>>>0){break}v=s+8&-8;y=b+8|0;c[y>>2]=oJ(g,12,x,v,c[y>>2]|0,q)|0;p=c[p>>2]|0;if((p|0)==0){c[t>>2]=v;break}else{y=p;i=j;return y|0}}}while(0);p=c[b+8>>2]|0;c[b>>2]=w;c[p+(s*12|0)>>2]=e;c[p+(s*12|0)+4>>2]=f;c[p+(s*12|0)+8>>2]=r;p=u}f=b+12|0;q=c[f>>2]|0;if((q|0)==0){q=b+16|0;do{if((c[q>>2]|0)==0){c[n>>2]=0;y=b+20|0;o=oJ(g,16,0,8,c[y>>2]|0,o)|0;c[y>>2]=o;n=c[n>>2]|0;if((n|0)==0){c[q>>2]=8;n=o;break}else{y=n;i=j;return y|0}}else{n=c[b+20>>2]|0}}while(0);c[n>>2]=0;c[n+12>>2]=0;c[f>>2]=1}else{n=(c[b+20>>2]|0)+(q+ -1<<4)|0}if((p|0)>=0){if((c[n>>2]|0)>>>0<=p>>>0){o=p+1|0;b=n+4|0;q=((c[b>>2]|0)+7|0)>>>3;f=(p+8|0)>>>3;c[k>>2]=0;do{if(f>>>0>q>>>0){f=f+7&1073741816;y=n+8|0;c[y>>2]=oJ(g,1,q,f,c[y>>2]|0,l)|0;g=c[k>>2]|0;if((g|0)==0){c[b>>2]=f<<3;break}else{y=g;i=j;return y|0}}}while(0);c[n>>2]=o}y=(c[n+8>>2]|0)+(p>>3)|0;a[y]=d[y]|0|128>>>(p&7)}if(!m){y=0;i=j;return y|0}c[h>>2]=p;y=0;i=j;return y|0}function CN(b,e,f){b=b|0;e=e|0;f=f|0;var 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;g=i;k=i;i=i+8|0;j=k;h=i;i=i+16|0;l=c[b+12>>2]|0;if((l|0)!=0){c[(c[b+20>>2]|0)+(l+ -1<<4)+12>>2]=e}e=b+24|0;m=c[e>>2]|0;l=m+ -1|0;if((l|0)<=0){x=0;i=g;return x|0}b=b+32|0;o=m;a:while(1){p=m+ -2|0;b:do{if((p|0)>-1){m=c[b>>2]|0;n=c[m+(l<<4)+8>>2]|0;q=c[m+(l<<4)>>2]|0;c:while(1){r=c[m+(p<<4)+8>>2]|0;s=c[m+(p<<4)>>2]|0;s=q>>>0<=s>>>0?q:s;if(s>>>0>7){t=n;do{if((a[r]&a[t])<<24>>24!=0){break c}t=t+1|0;r=r+1|0;s=s+ -8|0;}while(s>>>0>7)}else{t=n}if((s|0)!=0){if((a[r]&a[t]&255&~(255>>>s)|0)!=0){break}}if((p|0)>0){p=p+ -1|0}else{break b}}q=(p|0)>(l|0);n=q?p:l;p=q?l:p;if(!((p|0)<(n|0)&(p|0)>-1&(n|0)<(o|0))){break}o=m+(n<<4)|0;s=m+(p<<4)|0;t=c[s>>2]|0;q=c[o>>2]|0;do{if((q|0)!=0){if(q>>>0>t>>>0){w=m+(p<<4)+4|0;x=((c[w>>2]|0)+7|0)>>>3;r=(q+7|0)>>>3;c[k>>2]=0;if(r>>>0>x>>>0){v=r+7&1073741816;u=m+(p<<4)+8|0;c[u>>2]=oJ(f,1,x,v,c[u>>2]|0,j)|0;x=c[k>>2]|0;if((x|0)!=0){f=32;break a}c[w>>2]=v<<3}else{u=m+(p<<4)+8|0}do{if((c[s>>2]|0)>>>0>t>>>0){x=(c[u>>2]|0)+(t>>3)|0;a[x]=(d[x]|0)&(128>>>(t&7)^255)}t=t+1|0;}while(t>>>0>>0)}else{r=(q+7|0)>>>3}if((r|0)==0){break}q=c[m+(n<<4)+8>>2]|0;p=c[m+(p<<4)+8>>2]|0;while(1){a[p]=a[q]|a[p];r=r+ -1|0;if((r|0)==0){break}else{p=p+1|0;q=q+1|0}}}}while(0);c[o>>2]=0;c[m+(n<<4)+12>>2]=0;r=c[e>>2]|0;p=r+ -1|0;q=p-n|0;if((q|0)>0){$W(h|0,o|0,16)|0;aX(o|0,m+(n+1<<4)|0,q<<4|0)|0;$W(m+(p<<4)|0,h|0,16)|0;r=c[e>>2]|0}o=r+ -1|0;c[e>>2]=o}}while(0);m=l+ -1|0;if((m|0)>0){x=l;l=m;m=x}else{x=0;f=32;break}}if((f|0)==32){i=g;return x|0}return 0}function DN(a){a=a|0;c[a+4>>2]=0;c[a+12>>2]=1;c[a+16>>2]=0;c[a+28>>2]=0;c[a+40>>2]=0;c[a+52>>2]=0;c[a+64>>2]=0;c[a+76>>2]=0;i=i;return}function EN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;h=i;i=i+8|0;g=h;f=(ZI(c[d>>2]|0)|0)>>16;c[h>>2]=f;c[g+4>>2]=(ZI(c[d+4>>2]|0)|0)>>16;d=a+4|0;if((c[d>>2]|0)!=0){i=e;return}if(((c[a+12>>2]|0)+ -1|0)>>>0>=2){i=e;return}a=BN(a+16+((b>>>0>1?1:b)*36|0)|0,f,c[g+4>>2]|0,c[a>>2]|0,0)|0;if((a|0)==0){i=e;return}c[d>>2]=a;i=e;return}function FN(b,e,f){b=b|0;e=e|0;f=f|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0;g=i;s=i;i=i+8|0;t=s;p=i;i=i+8|0;q=p;n=i;i=i+8|0;m=n;j=i;i=i+8|0;k=j;r=i;i=i+16|0;o=r;h=b+4|0;if((c[h>>2]|0)!=0){i=g;return}l=c[b>>2]|0;u=e>>>0>1?1:e;e=b+16+(u*36|0)|0;a:do{if((c[b+12>>2]|0)==1){x=0;while(1){w=(ZI(c[f>>2]|0)|0)>>16;w=BN(e,w,(ZI(c[f+4>>2]|0)|0)>>16,l,o+(x<<2)|0)|0;if((w|0)!=0){break a}x=x+1|0;if((x|0)<3){f=f+8|0}else{break}}e=c[r>>2]|0;r=c[o+4>>2]|0;o=c[o+8>>2]|0;f=b+16+(u*36|0)+24|0;w=c[f>>2]|0;b:do{if((w|0)==0){v=14}else{C=e>>3;B=128>>>(e&7);D=r>>3;A=128>>>(r&7);z=o>>3;y=128>>>(o&7);F=w;x=c[b+16+(u*36|0)+32>>2]|0;while(1){E=c[x>>2]|0;if(E>>>0>e>>>0){if(((d[(c[x+8>>2]|0)+C|0]|0)&B|0)!=0){s=x;break b}}if(E>>>0>r>>>0){if(((d[(c[x+8>>2]|0)+D|0]|0)&A|0)!=0){s=x;break b}}if(E>>>0>o>>>0){if(((d[(c[x+8>>2]|0)+z|0]|0)&y|0)!=0){s=x;break b}}F=F+ -1|0;if((F|0)==0){v=14;break}else{x=x+16|0}}}}while(0);if((v|0)==14){v=w+1|0;y=b+16+(u*36|0)+28|0;z=c[y>>2]|0;if(v>>>0>z>>>0){c[s>>2]=0;x=w+8&-8;F=b+16+(u*36|0)+32|0;b=oJ(l,16,z,x,c[F>>2]|0,t)|0;c[F>>2]=b;s=c[s>>2]|0;if((s|0)!=0){w=s;break}c[y>>2]=x}else{b=c[b+16+(u*36|0)+32>>2]|0}s=b+(w<<4)|0;c[s>>2]=0;c[b+(w<<4)+12>>2]=0;c[f>>2]=v}if((e|0)>=0){if((c[s>>2]|0)>>>0<=e>>>0){b=e+1|0;t=s+4|0;u=((c[t>>2]|0)+7|0)>>>3;v=(e+8|0)>>>3;c[p>>2]=0;if(v>>>0>u>>>0){v=v+7&1073741816;w=s+8|0;c[w>>2]=oJ(l,1,u,v,c[w>>2]|0,q)|0;w=c[p>>2]|0;if((w|0)!=0){break}c[t>>2]=v<<3}c[s>>2]=b}F=(c[s+8>>2]|0)+(e>>3)|0;a[F]=d[F]|0|128>>>(e&7)}if((r|0)>=0){if((c[s>>2]|0)>>>0<=r>>>0){p=r+1|0;q=s+4|0;e=((c[q>>2]|0)+7|0)>>>3;b=(r+8|0)>>>3;c[n>>2]=0;if(b>>>0>e>>>0){b=b+7&1073741816;w=s+8|0;c[w>>2]=oJ(l,1,e,b,c[w>>2]|0,m)|0;w=c[n>>2]|0;if((w|0)!=0){break}c[q>>2]=b<<3}c[s>>2]=p}F=(c[s+8>>2]|0)+(r>>3)|0;a[F]=d[F]|0|128>>>(r&7)}if((o|0)<0){i=g;return}if((c[s>>2]|0)>>>0<=o>>>0){n=o+1|0;m=s+4|0;p=((c[m>>2]|0)+7|0)>>>3;q=(o+8|0)>>>3;c[j>>2]=0;if(q>>>0>p>>>0){q=q+7&1073741816;w=s+8|0;c[w>>2]=oJ(l,1,p,q,c[w>>2]|0,k)|0;w=c[j>>2]|0;if((w|0)!=0){break}c[m>>2]=q<<3}c[s>>2]=n}F=(c[s+8>>2]|0)+(o>>3)|0;a[F]=d[F]|0|128>>>(o&7);i=g;return}else{w=6}}while(0);c[h>>2]=w;i=g;return}function GN(a,b){a=a|0;b=b|0;var 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;d=i;f=i;i=i+8|0;h=f;n=i;i=i+8|0;p=n;e=a+4|0;if((c[e>>2]|0)!=0){i=d;return}g=c[a>>2]|0;do{if((c[a+12>>2]|0)==1){j=a+28|0;k=c[j>>2]|0;if((k|0)==0){k=0}else{c[(c[a+36>>2]|0)+(k+ -1<<4)+12>>2]=b;k=c[j>>2]|0}l=k+1|0;m=a+32|0;q=c[m>>2]|0;if(l>>>0>q>>>0){c[n>>2]=0;o=k+8&-8;r=a+36|0;p=oJ(g,16,q,o,c[r>>2]|0,p)|0;c[r>>2]=p;n=c[n>>2]|0;if((n|0)!=0){break}c[m>>2]=o}else{p=c[a+36>>2]|0}c[p+(k<<4)>>2]=0;c[p+(k<<4)+12>>2]=0;c[j>>2]=l;j=a+64|0;k=c[j>>2]|0;if((k|0)==0){k=0}else{c[(c[a+72>>2]|0)+(k+ -1<<4)+12>>2]=b;k=c[j>>2]|0}b=k+1|0;l=a+68|0;n=c[l>>2]|0;if(b>>>0>n>>>0){c[f>>2]=0;m=k+8&-8;r=a+72|0;g=oJ(g,16,n,m,c[r>>2]|0,h)|0;c[r>>2]=g;n=c[f>>2]|0;if((n|0)!=0){break}c[l>>2]=m}else{g=c[a+72>>2]|0}c[g+(k<<4)>>2]=0;c[g+(k<<4)+12>>2]=0;c[j>>2]=b;i=d;return}else{n=6}}while(0);c[e>>2]=n;i=d;return}function HN(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=i;j=i;i=i+8|0;l=jJ(f,2496,j)|0;m=c[j>>2]|0;if((m|0)!=0){q=m;p=h;c[p>>2]=l;i=k;return q|0}c[l>>2]=f;f=l+4|0;m=l+208|0;c[l+212>>2]=e[g+120>>1]|0;n=g+124|0;o=a[n]|0;if(o<<24>>24==0){n=1}else{q=o&255;p=g+128|0;o=l+224|0;while(1){c[o>>2]=b[p>>1]|0;q=q+ -1|0;if((q|0)==0){break}else{o=o+12|0;p=p+2|0}}n=(d[n]|0)+1|0}c[m>>2]=n;c[l+8>>2]=e[g+122>>1]|0;m=g+125|0;n=a[m]|0;if(n<<24>>24==0){m=1}else{p=n&255;o=g+154|0;n=l+20|0;while(1){c[n>>2]=b[o>>1]|0;p=p+ -1|0;if((p|0)==0){break}else{n=n+12|0;o=o+2|0}}m=(d[m]|0)+1|0}c[f>>2]=m;p=l+412|0;q=g+116|0;JN(p,d[g+8|0]|0,g+12|0,d[g+9|0]|0,g+40|0,c[q>>2]|0,0);JN(p,d[g+10|0]|0,g+60|0,d[g+11|0]|0,g+88|0,c[q>>2]|0,1);c[l+2476>>2]=c[g+108>>2];c[l+2480>>2]=c[g+112>>2];c[l+2488>>2]=c[q>>2];c[l+200>>2]=0;c[l+204>>2]=0;c[l+404>>2]=0;c[l+408>>2]=0;q=c[j>>2]|0;p=h;c[p>>2]=l;i=k;return q|0}function IN(a){a=a|0;var b=0,d=0;b=i;if((a|0)==0){i=b;return}d=c[a>>2]|0;c[a+4>>2]=0;c[a+208>>2]=0;c[a+412>>2]=0;c[a+928>>2]=0;c[a+1444>>2]=0;c[a+1960>>2]=0;lJ(d,a);i=b;return}function JN(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;if((h|0)==0){h=a+516|0}else{h=a+1548|0;a=a+1032|0}c[a>>2]=0;c[h>>2]=0;KN(0,b,d,a,h);KN(1,e,f,a,h);b=c[a>>2]|0;e=c[h>>2]|0;if((b|0)>0){d=b;f=a+4|0;while(1){do{if(d>>>0>1){k=c[f>>2]|0;m=(c[f+32>>2]|0)-k|0;n=f+4|0;l=c[n>>2]|0;if((l|0)<=(m|0)){break}c[n>>2]=m;l=m}else{l=c[f+4>>2]|0;k=c[f>>2]|0}}while(0);c[f+12>>2]=k;c[f+8>>2]=k+l;d=d+ -1|0;if((d|0)==0){break}else{f=f+32|0}}}if((e|0)>0){k=e;f=h+4|0;while(1){d=c[f>>2]|0;do{if(k>>>0>1){n=d-(c[f+32>>2]|0)|0;l=f+4|0;m=c[l>>2]|0;if((m|0)>=(n|0)){break}c[l>>2]=n;m=n}else{m=c[f+4>>2]|0}}while(0);c[f+8>>2]=d;c[f+12>>2]=d+m;k=k+ -1|0;if((k|0)==0){break}else{f=f+32|0}}}f=g<<1;d=a+4|0;if((b|0)!=0){l=a+16|0;c[l>>2]=(c[l>>2]|0)-g;l=b+ -1|0;k=c[a+12>>2]|0;if((l|0)==0){a=d}else{a=a+ -28+(b<<3<<2)|0;b=l;while(1){n=d+44|0;l=c[n>>2]|0;m=l-k|0;if((m|0)<(f|0)){m=((m|0)/2|0)+k|0;c[n>>2]=m;c[d+8>>2]=m}else{c[d+8>>2]=k+g;c[n>>2]=l-g}b=b+ -1|0;k=c[d+40>>2]|0;if((b|0)==0){break}else{d=d+32|0}}}c[a+8>>2]=k+g}a=h+4|0;if((e|0)==0){i=j;return}d=h+16|0;c[d>>2]=(c[d>>2]|0)-g;d=e+ -1|0;b=c[h+12>>2]|0;if((d|0)==0){h=a}else{h=h+ -28+(e<<3<<2)|0;e=d;while(1){l=a+44|0;k=c[l>>2]|0;d=k-b|0;if((d|0)<(f|0)){n=((d|0)/2|0)+b|0;c[l>>2]=n;c[a+8>>2]=n}else{c[a+8>>2]=b+g;c[l>>2]=k-g}e=e+ -1|0;b=c[a+40>>2]|0;if((e|0)==0){break}else{a=a+32|0}}}c[h+8>>2]=b+g;i=j;return}function KN(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;m=c[f>>2]|0;l=c[g>>2]|0;if(d>>>0>1){k=1}else{r=l;q=m;s=f;c[s>>2]=q;s=g;c[s>>2]=r;i=h;return}while(1){if((k|a)<<24>>24==0){o=b[e>>1]|0;q=f;r=m;n=(b[e+2>>1]|0)-o|0;p=1}else{o=b[e+2>>1]|0;q=g;r=l;n=(b[e>>1]|0)-o|0;k=0;p=0}q=q+4|0;a:do{if((r|0)==0){j=16}else{while(1){s=c[q>>2]|0;if((o|0)<(s|0)){j=14;break}if((o|0)==(s|0)){break}r=r+ -1|0;q=q+32|0;if((r|0)==0){j=16;break a}}if((j|0)==14){if((r|0)==0){j=16;break}while(1){j=r+ -1|0;$W(q+(r<<5)|0,q+(j<<5)|0,32)|0;if((j|0)==0){j=16;break a}else{r=j}}}o=q+4|0;p=c[o>>2]|0;if((n|0)<0){if((n|0)>=(p|0)){break}c[o>>2]=n;break}else{if((n|0)<=(p|0)){break}c[o>>2]=n;break}}}while(0);do{if((j|0)==16){j=0;c[q>>2]=o;c[q+4>>2]=n;if(p<<24>>24==0){l=l+1|0;break}else{m=m+1|0;break}}}while(0);d=d+ -2|0;if(d>>>0>1){e=e+4|0}else{break}}s=f;c[s>>2]=m;s=g;c[s>>2]=l;i=h;return}function LN(a){a=a|0;i=i;return a+108|0}function MN(a){a=a|0;i=i;return a+120|0}function NN(a){a=a|0;i=i;return a+148|0}function ON(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;h=c[a>>2]|0;if((h|0)!=0){g=c[a+8>>2]|0;while(1){p=g+16|0;c[p>>2]=c[p>>2]&-5;c[g+24>>2]=-1;h=h+ -1|0;if((h|0)==0){break}else{g=g+28|0}}}if((b|0)==0){c[a+4>>2]=0;i=f;return}h=a+8|0;g=a+12|0;j=0;l=0;m=0;n=0;while(1){if((m|0)==0){k=e+1|0;m=128;n=d[e]|0}else{k=e}do{if((m&n|0)!=0){p=c[h>>2]|0;o=p+(l*28|0)+16|0;e=c[o>>2]|0;if((e&4|0)!=0){break}c[o>>2]=e|4;if(j>>>0>=(c[a>>2]|0)>>>0){break}c[(c[g>>2]|0)+(j<<2)>>2]=p+(l*28|0);j=j+1|0}}while(0);l=l+1|0;if(l>>>0>>0){e=k;m=m>>1}else{break}}c[a+4>>2]=j;m=c[g>>2]|0;if((j|0)>1){l=1}else{i=f;return}do{h=c[m+(l<<2)>>2]|0;g=l;while(1){a=g+ -1|0;k=m+(a<<2)|0;b=c[k>>2]|0;if((c[b>>2]|0)<(c[h>>2]|0)){break}c[m+(g<<2)>>2]=b;c[k>>2]=h;if((a|0)>0){g=a}else{break}}l=l+1|0;}while((l|0)<(j|0));i=f;return}function PN(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;l=i;if((f|0)==0){i=l;return}m=0-h|0;j=(b|0)==0;o=(h|0)==2;n=o?128:256;o=o?256:128;while(1){p=c[e+36>>2]|0;q=e+16|0;r=c[q>>2]|0;a:do{if((r&16|0)==0){s=a[e+20|0]|0;if((s|0)==(h|0)|(s|0)==(m|0)){k=6}else{s=a[e+21|0]|0;if((s|0)==(h|0)|(s|0)==(m|0)){k=6}}do{if((k|0)==6){k=0;if((s|0)==0){break}if((s|0)==(h|0)){if(j){break a}else{s=0}while(1){t=c[d+(s<<2)>>2]|0;u=p-(c[t>>2]|0)|0;s=s+1|0;if((u|0)<(g|0)&(0-u|0)<(g|0)){break}if(s>>>0>=b>>>0){break a}}c[q>>2]=r|528;c[e+32>>2]=t;break a}else{if((s|0)!=(m|0)|j){break a}else{s=0}while(1){t=c[d+(s<<2)>>2]|0;u=p-(c[t>>2]|0)-(c[t+4>>2]|0)|0;s=s+1|0;if((u|0)<(g|0)&(0-u|0)<(g|0)){break}if(s>>>0>=b>>>0){break a}}c[q>>2]=r|1040;c[e+32>>2]=t;break a}}}while(0);if((r&64|0)==0){break}b:do{if((r&n|0)==0){if((r&o|0)==0|j){break}else{t=0}while(1){s=c[d+(t<<2)>>2]|0;u=p-(c[s>>2]|0)-(c[s+4>>2]|0)|0;t=t+1|0;if((u|0)<(g|0)&(0-u|0)<(g|0)){break}if(t>>>0>=b>>>0){break b}}c[e+32>>2]=s;c[q>>2]=r|1040}else{if(j){break}else{t=0}while(1){s=c[d+(t<<2)>>2]|0;u=p-(c[s>>2]|0)|0;t=t+1|0;if((u|0)<(g|0)&(0-u|0)<(g|0)){break}if(t>>>0>=b>>>0){break b}}c[e+32>>2]=s;c[q>>2]=r|528}}while(0);t=e+32|0;if((c[t>>2]|0)!=0|j){break}else{s=0}while(1){r=c[d+(s<<2)>>2]|0;q=c[r>>2]|0;if((p|0)>=(q|0)){if((p|0)<=((c[r+4>>2]|0)+q|0)){break}}s=s+1|0;if(s>>>0>=b>>>0){break a}}c[t>>2]=r}}while(0);f=f+ -1|0;if((f|0)==0){break}else{e=e+48|0}}i=l;return}function QN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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;h=i;n=c[d+4+(e*204|0)+196>>2]|0;g=b+16|0;if((c[g>>2]&8|0)!=0){i=h;return}l=c[d+4+(e*204|0)+200>>2]|0;l=(aJ(c[b>>2]|0,n)|0)+l|0;m=b+4|0;k=aJ(c[m>>2]|0,n)|0;do{if((e|0)==0){if((a[f+120|0]|0)==0){j=5;break}p=(a[f+122|0]|0)!=0;o=b+12|0;c[o>>2]=k;q=0;r=0;j=27}else if((e|0)==1){if((a[f+121|0]|0)==0){j=5;break}p=(a[f+123|0]|0)!=0;o=b+12|0;c[o>>2]=k;t=c[b>>2]|0;u=(c[m>>2]|0)+t|0;s=a[d+2492|0]|0;x=c[d+412>>2]|0;a:do{if((x|0)==0){r=0;q=0;u=2}else{r=c[d+2488>>2]|0;q=0-r|0;v=d+416|0;while(1){w=u-(c[v+12>>2]|0)|0;if((w|0)<(q|0)){r=0;q=0;u=2;break a}if(((c[v+8>>2]|0)+r|0)>=(u|0)){break}x=x+ -1|0;if((x|0)==0){r=0;q=0;u=2;break a}else{v=v+32|0}}if(s<<24>>24==0){if((w|0)>(c[d+2484>>2]|0)){r=0;q=0;u=2;break}}r=c[v+16>>2]|0;q=1;u=3}}while(0);y=c[d+928>>2]|0;b:do{if((y|0)==0){s=0}else{v=c[d+2488>>2]|0;w=0-v|0;x=y;y=d+932+(y+ -1<<5)|0;while(1){z=(c[y+8>>2]|0)-t|0;if((z|0)<(w|0)){s=0;break b}if(((c[y+12>>2]|0)-v|0)<=(t|0)){break}x=x+ -1|0;if((x|0)==0){s=0;break b}else{y=y+ -32|0}}if(s<<24>>24==0){if((z|0)>=(c[d+2484>>2]|0)){s=0;break}}s=c[y+16>>2]|0;q=u}}while(0);if((q|0)==3){c[b+8>>2]=s;c[o>>2]=r-s;if(p){q=3;j=47;break}else{break}}else if((q|0)==1){c[b+8>>2]=r-k;if(p){q=1;j=47;break}else{break}}else if((q|0)==2){c[b+8>>2]=s;if(p){q=2;j=47;break}else{break}}else{j=27;break}}else{o=b+12|0;c[o>>2]=k;q=0;r=0;p=0;j=27}}while(0);if((j|0)==5){c[b+8>>2]=l;c[b+12>>2]=k;c[g>>2]=c[g>>2]|8;i=h;return}if((j|0)==27){s=c[b+20>>2]|0;if((s|0)!=0){if((c[s+16>>2]&8|0)==0){QN(s,d,e,f)}z=c[s+8>>2]|0;l=c[s+12>>2]>>1;l=z-(k>>1)+l+(aJ((c[b>>2]|0)-((c[s+4>>2]>>1)+(c[s>>2]|0))+(c[m>>2]>>1)|0,n)|0)|0}m=b+8|0;c[m>>2]=l;c[o>>2]=k;do{if((a[f+124|0]|0)==0){d=k}else{if((k|0)<65){if((k|0)>31){d=64;l=l+(k>>1)&-64;break}e=l+32&-64;if((k|0)<=0){d=k;l=e;break}d=l+k|0;f=d+32&-64;n=e-l|0;l=f-d|0;d=k;l=(((n|0)<0?0-n|0:n)|0)>(((l|0)<0?0-l|0:l)|0)?f:e;break}d=c[d+4+(e*204|0)+8>>2]|0;f=k-d|0;if((((f|0)<0?0-f|0:f)|0)<40){k=(d|0)<48?48:d}if((k|0)>=192){d=k+32&-64;break}d=k&63;f=k&-64;if(d>>>0<10){d=k;break}if(d>>>0<32){d=f|10;break}else{d=d>>>0<54?f|54:k;break}}}while(0);f=l+32|0;k=(f&-64)-l|0;f=(f+d&-64)-l-d|0;c[m>>2]=((((k|0)<0?0-k|0:k)|0)>(((f|0)<0?0-f|0:f)|0)?f:k)+l;c[o>>2]=d;if(p){j=47}}do{if((j|0)==47){b=b+8|0;k=c[b>>2]|0;j=c[o>>2]|0;if((j|0)<64){j=64}else{j=j+32&-64}if((q|0)==1){c[b>>2]=r-j;c[o>>2]=j;break}else if((q|0)==2){c[o>>2]=j;break}else if((q|0)==3){break}else{c[o>>2]=j;d=j>>1;k=d+k|0;if((j&64|0)==0){k=k+32&-64}else{k=k&-64|32}c[b>>2]=k-d;c[o>>2]=j;break}}}while(0);c[g>>2]=c[g>>2]|8;i=h;return}function RN(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var 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;g=i;h=i;i=i+8|0;n=h;m=c[b>>2]|0;k=m<<1;l=a+12|0;c[l>>2]=oJ(f,4,0,k,0,n)|0;if((c[h>>2]|0)!=0){x=h;x=c[x>>2]|0;i=g;return x|0}j=a+8|0;c[j>>2]=oJ(f,28,0,m,0,n)|0;if((c[h>>2]|0)!=0){x=h;x=c[x>>2]|0;i=g;return x|0}c[a+24>>2]=oJ(f,16,0,k|1,0,n)|0;if((c[h>>2]|0)!=0){x=h;x=c[x>>2]|0;i=g;return x|0}c[a>>2]=m;k=a+16|0;c[k>>2]=(c[l>>2]|0)+(m<<2);l=a+4|0;c[l>>2]=0;c[a+20>>2]=0;c[a+28>>2]=0;if((m|0)!=0){b=c[b+8>>2]|0;n=c[j>>2]|0;while(1){c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+16>>2]=c[b+8>>2];m=m+ -1|0;if((m|0)==0){break}else{n=n+28|0;b=b+12|0}}}do{if((e|0)!=0){b=c[e+8>>2]|0;m=c[e>>2]|0;c[a+32>>2]=e;if((m|0)==0){break}while(1){n=c[b>>2]|0;if((n|0)!=0){q=c[b+8>>2]|0;p=0;o=0;f=0;while(1){if((o|0)==0){e=q+1|0;o=128;f=d[q]|0}else{e=q}do{if((o&f|0)!=0){t=c[j>>2]|0;q=t+(p*28|0)|0;if((c[a>>2]|0)>>>0<=p>>>0){break}s=t+(p*28|0)+16|0;r=c[s>>2]|0;if((r&4|0)!=0){break}c[s>>2]=r|4;u=c[k>>2]|0;v=c[l>>2]|0;s=t+(p*28|0)+20|0;c[s>>2]=0;a:do{if((v|0)!=0){r=c[q>>2]|0;t=(c[t+(p*28|0)+4>>2]|0)+r|0;while(1){x=c[u>>2]|0;w=c[x>>2]|0;if((t|0)>=(w|0)){if(((c[x+4>>2]|0)+w|0)>=(r|0)){break}}v=v+ -1|0;if((v|0)==0){break a}else{u=u+4|0}}c[s>>2]=x}}while(0);r=c[l>>2]|0;if(r>>>0>=(c[a>>2]|0)>>>0){break}c[l>>2]=r+1;c[(c[k>>2]|0)+(r<<2)>>2]=q}}while(0);p=p+1|0;if(p>>>0>>0){q=e;o=o>>1}else{break}}}m=m+ -1|0;if((m|0)==0){break}else{b=b+16|0}}}}while(0);b=c[a>>2]|0;if((c[l>>2]|0)==(b|0)|(b|0)==0){x=h;x=c[x>>2]|0;i=g;return x|0}else{n=b;m=0}while(1){o=c[j>>2]|0;e=o+(m*28|0)|0;do{if(n>>>0>m>>>0){f=o+(m*28|0)+16|0;n=c[f>>2]|0;if((n&4|0)!=0){break}c[f>>2]=n|4;q=c[k>>2]|0;p=c[l>>2]|0;n=o+(m*28|0)+20|0;c[n>>2]=0;b:do{if((p|0)!=0){f=c[e>>2]|0;o=(c[o+(m*28|0)+4>>2]|0)+f|0;while(1){r=c[q>>2]|0;s=c[r>>2]|0;if((o|0)>=(s|0)){if(((c[r+4>>2]|0)+s|0)>=(f|0)){break}}p=p+ -1|0;if((p|0)==0){break b}else{q=q+4|0}}c[n>>2]=r}}while(0);n=c[l>>2]|0;if(n>>>0>=(c[a>>2]|0)>>>0){break}c[l>>2]=n+1;c[(c[k>>2]|0)+(n<<2)>>2]=e}}while(0);m=m+1|0;if(m>>>0>=b>>>0){break}n=c[a>>2]|0}x=h;x=c[x>>2]|0;i=g;return x|0}function SN(a,b){a=a|0;b=b|0;var c=0;c=i;a=uJ(209856,b)|0;i=c;return a|0}function TN(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;f=a[b]|0;do{if(f<<24>>24==117){g=b+1|0;h=a[g]|0;do{if(h<<24>>24==110){if((a[b+2|0]|0)!=105){h=110;j=6;k=0;break}l=4;j=b+3|0;k=0;do{m=d[j]|0;n=m+ -48|0;if(n>>>0>9){n=(m+ -65|0)>>>0>5?16:m+ -55|0;if(n>>>0>15){break}}k=n+(k<<4)|0;l=l+ -1|0;j=j+1|0;}while((l|0)>0);if((l|0)!=0){j=6;k=0;break}j=a[j]|0;if(j<<24>>24==0){n=k;i=e;return n|0}else if(j<<24>>24!=46){j=6;k=0;break}n=k|-2147483648;i=e;return n|0}else{j=6;k=0}}while(0);while(1){h=h&255;l=h+ -48|0;if(l>>>0>9){l=(h+ -65|0)>>>0>5?16:h+ -55|0;if(l>>>0>15){c=15;break}}k=l+(k<<4)|0;j=j+ -1|0;g=g+1|0;if((j|0)<=0){break}h=a[g]|0}if((c|0)==15){if((j|0)>=3){g=b;break}}g=a[g]|0;if(g<<24>>24==0){n=k;i=e;return n|0}else if(g<<24>>24!=46){g=b;break}n=k|-2147483648;i=e;return n|0}else{g=b}}while(0);while(1){if(f<<24>>24==0){break}else if(f<<24>>24==46){if(g>>>0>b>>>0){c=21;break}}n=g+1|0;f=a[n]|0;g=n}do{if((c|0)==21){if((g|0)==0){g=0;break}n=_N(b,g)|0|-2147483648;i=e;return n|0}}while(0);n=_N(b,g)|0;i=e;return n|0}function UN(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var 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;h=i;k=i;i=i+8|0;l=k;o=i;i=i+40|0;n=o;p=i;i=i+40|0;m=p;bX(o|0,0,40)|0;j=b+16|0;c[j>>2]=0;b=b+20|0;c[b>>2]=0;s=oJ(a,8,0,d+10|0,0,l)|0;c[b>>2]=s;r=c[k>>2]|0;if((r|0)!=0){w=r;i=h;return w|0}do{if((d|0)!=0){if((f|0)==0){f=0;do{r=Bd[e&255](g,f)|0;do{if((r|0)!=0){t=0;while(1){u=t+1|0;if((Qc(215960+(c[216048+(t<<2)>>2]|0)|0,r|0)|0)==0){q=7;break}if(u>>>0<10){t=u}else{break}}do{if((q|0)==7){q=0;u=n+(t<<2)|0;if((c[u>>2]|0)!=0){break}c[u>>2]=1;c[m+(t<<2)>>2]=f}}while(0);r=TN(r)|0;if((r&2147483647|0)==0){break}else{t=0}while(1){u=t+1|0;if((c[215920+(t<<2)>>2]|0)==(r|0)){q=12;break}if(u>>>0<10){t=u}else{break}}if((q|0)==12){q=0;c[n+(t<<2)>>2]=2}c[s>>2]=r;c[s+4>>2]=f;s=s+8|0}}while(0);f=f+1|0;}while(f>>>0>>0)}else{r=0;do{t=Bd[e&255](g,r)|0;if((t|0)!=0){u=0;while(1){v=u+1|0;if((Qc(215960+(c[216048+(u<<2)>>2]|0)|0,t|0)|0)==0){q=19;break}if(v>>>0<10){u=v}else{break}}do{if((q|0)==19){q=0;v=n+(u<<2)|0;if((c[v>>2]|0)!=0){break}c[v>>2]=1;c[m+(u<<2)>>2]=r}}while(0);w=TN(t)|0;if((w&2147483647|0)!=0){v=0;while(1){u=v+1|0;if((c[215920+(v<<2)>>2]|0)==(w|0)){q=24;break}if(u>>>0<10){v=u}else{break}}if((q|0)==24){q=0;c[n+(v<<2)>>2]=2}c[s>>2]=w;c[s+4>>2]=r;s=s+8|0}hd[f&127](g,t)}r=r+1|0;}while(r>>>0>>0)}if((c[o>>2]|0)!=1){break}c[s>>2]=916;c[s+4>>2]=c[p>>2];s=s+8|0}}while(0);if((c[n+4>>2]|0)==1){c[s>>2]=937;c[s+4>>2]=c[m+4>>2];s=s+8|0}if((c[n+8>>2]|0)==1){c[s>>2]=8725;c[s+4>>2]=c[m+8>>2];s=s+8|0}if((c[n+12>>2]|0)==1){c[s>>2]=173;c[s+4>>2]=c[m+12>>2];s=s+8|0}if((c[n+16>>2]|0)==1){c[s>>2]=713;c[s+4>>2]=c[m+16>>2];s=s+8|0}if((c[n+20>>2]|0)==1){c[s>>2]=956;c[s+4>>2]=c[m+20>>2];s=s+8|0}if((c[n+24>>2]|0)==1){c[s>>2]=8729;c[s+4>>2]=c[m+24>>2];s=s+8|0}if((c[n+28>>2]|0)==1){c[s>>2]=160;c[s+4>>2]=c[m+28>>2];s=s+8|0}if((c[n+32>>2]|0)==1){c[s>>2]=538;c[s+4>>2]=c[m+32>>2];s=s+8|0}if((c[n+36>>2]|0)==1){c[s>>2]=539;c[s+4>>2]=c[m+36>>2];s=s+8|0}n=c[b>>2]|0;m=s-n>>3;do{if((m|0)==0){lJ(a,n);c[b>>2]=0;a=c[k>>2]|0;if((a|0)!=0){break}c[k>>2]=163;a=163}else{if(m>>>0>>1>>>0){n=oJ(a,8,d,m,n,l)|0;c[b>>2]=n;c[k>>2]=0}pb(n|0,m|0,8,194);a=c[k>>2]|0}}while(0);c[j>>2]=m;w=a;i=h;return w|0}function VN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=c[a+20>>2]|0;a=(c[a+16>>2]|0)+ -1|0;if((a|0)<0){j=0;i=d;return j|0}a=e+(a<<3)|0;f=0;a:while(1){j=f;while(1){g=a-e>>4;f=e+(g<<3)|0;h=c[f>>2]|0;if((h|0)==(b|0)){break a}h=h&2147483647;f=(h|0)==(b|0)?f:j;if((e|0)==(a|0)){break a}if(h>>>0>=b>>>0){break}e=e+(g+1<<3)|0;if(e>>>0>a>>>0){break a}else{j=f}}a=g+ -1|0;if((a|0)<0){break}else{a=e+(a<<3)|0}}if((f|0)==0){j=0;i=d;return j|0}j=c[f+4>>2]|0;i=d;return j|0}function WN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;g=(c[b>>2]|0)+1|0;e=c[a+16>>2]|0;do{if((e|0)==0){l=0;k=9}else{f=c[a+20>>2]|0;k=e;l=0;j=0;while(1){h=((k-l|0)>>>1)+l|0;m=c[f+(h<<3)>>2]|0;if((m|0)==(g|0)){k=4;break}m=m&2147483647;if((m|0)==(g|0)){j=c[f+(h<<3)+4>>2]|0}m=m>>>0>>0;l=m?h+1|0:l;k=m?k:h;if(l>>>0>=k>>>0){k=8;break}}if((k|0)==4){j=c[f+(h<<3)+4>>2]|0;break}else if((k|0)==8){if((j|0)==0){k=9;break}else{break}}}}while(0);do{if((k|0)==9){if(l>>>0>=e>>>0){g=0;j=0;break}j=c[a+20>>2]|0;g=c[j+(l<<3)>>2]&2147483647;j=c[j+(l<<3)+4>>2]|0}}while(0);c[b>>2]=g;i=d;return j|0}function XN(a){a=a|0;i=i;return 210920+(b[215400+((a>>>0>257?0:a)<<1)>>1]|0)|0}function YN(a){a=a|0;var c=0;c=i;if(a>>>0>390){a=0;i=c;return a|0}a=210920+(b[214616+(a<<1)>>1]|0)|0;i=c;return a|0}function ZN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;a=c[a>>2]|0;e=a&2147483647;b=c[b>>2]|0;f=b&2147483647;do{if((e|0)==(f|0)){if(a>>>0>b>>>0){a=1;break}a=(a>>>0>>0)<<31>>31}else{if(e>>>0>f>>>0){a=1;break}a=(e>>>0>>0)<<31>>31}}while(0);i=d;return a|0}function _N(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;if(!((b|0)!=0&b>>>0>>0)){q=0;i=g;return q|0}h=b+1|0;l=a[b]|0;o=52;p=0;while(1){n=o+p>>1;b=n<<1;b=216088+(d[b+216090|0]<<8|d[b+216091|0])|0;m=a[b]|0;q=m&127;if((q|0)==(l|0)){break}q=(q|0)<(l|0);p=q?n+1|0:p;o=q?o:n;if((p|0)>=(o|0)){j=0;k=16;break}}if((k|0)==16){i=g;return j|0}a:do{if(h>>>0>>0){k=b;b:while(1){b=h+1|0;h=a[h]|0;j=k+1|0;o=a[j]|0;l=o&255;n=l&127;c:do{if(m<<24>>24<0){if((h|0)==(n|0)){m=o}else{j=0;k=16;break b}}else{if((n|0)==0){j=0;k=16;break b}k=((l&128|0)==0?j:k+3|0)+1|0;while(1){j=216088+(d[k]<<8|d[k+1|0])|0;m=a[j]|0;if((h|0)==(m&127|0)){break c}n=n+ -1|0;if((n|0)>0){k=k+2|0}else{j=0;k=16;break b}}}}while(0);if(b>>>0>>0){k=j;h=b}else{e=m;f=j;break a}}if((k|0)==16){i=g;return j|0}}else{e=m;f=b}}while(0);if(e<<24>>24<=-1){q=0;i=g;return q|0}if((a[f+1|0]|0)>=0){q=0;i=g;return q|0}q=d[f+2|0]<<8|d[f+3|0];i=g;return q|0}function $N(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;g=i;i=i+8|0;c[b>>2]=0;f=jJ(a,24,g)|0;e=c[g>>2]|0;if((e|0)!=0){b=e;i=d;return b|0}c[f+8>>2]=a;c[b>>2]=f;b=c[g>>2]|0;i=d;return b|0}function aO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((a|0)==0){i=e;return}if((b|0)!=0&(d|0)>3075){c[a>>2]=b+1032;c[a+4>>2]=d+ -1032;c[a+12>>2]=b;i=e;return}else{c[a>>2]=0;c[a+4>>2]=0;c[a+12>>2]=0;i=e;return}}function bO(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function cO(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;k=c[e+4>>2]|0;j=c[e>>2]|0;if((d|0)==0){p=96;i=f;return p|0}if((c[d>>2]|0)==0){p=96;i=f;return p|0}h=d+4|0;if((c[h>>2]|0)==0){p=96;i=f;return p|0}if((k|0)==0){p=20;i=f;return p|0}g=b[k+2>>1]|0;if(g<<16>>16==0){p=0;i=f;return p|0}m=b[k>>1]|0;if(m<<16>>16<1){p=0;i=f;return p|0}l=c[k+12>>2]|0;if((l|0)==0){p=20;i=f;return p|0}if((c[k+4>>2]|0)==0){p=20;i=f;return p|0}if((g<<16>>16|0)!=((b[l+((m<<16>>16)+ -1<<1)>>1]|0)+1|0)){p=20;i=f;return p|0}g=c[d+12>>2]|0;e=e+8|0;if((c[e>>2]&2|0)!=0){p=19;i=f;return p|0}if((j|0)==0){p=20;i=f;return p|0}if((c[j+4>>2]|0)==0){p=0;i=f;return p|0}if((c[j>>2]|0)==0){p=0;i=f;return p|0}if((c[j+12>>2]|0)==0){p=20;i=f;return p|0}$W(g+128|0,k|0,20)|0;$W(g+104|0,j|0,24)|0;p=c[d>>2]|0;c[g+28>>2]=p;c[g+32>>2]=p+((c[h>>2]|0)>>>2<<2);if((c[e>>2]&1|0)!=0){p=19;i=f;return p|0}h=c[g+144>>2]|0;if((h&256|0)==0){c[g>>2]=6;c[g+16>>2]=32;c[g+20>>2]=2;d=6}else{c[g>>2]=12;c[g+16>>2]=256;c[g+20>>2]=50;d=12}p=1<>2]=p;c[g+8>>2]=(p|0)/2|0;p=d+ -6|0;c[g+12>>2]=p;c[g+24>>2]=p;do{if((h&8|0)==0){d=g+180|0;j=(h&16|0)==0?0:4;a[d]=j;if((h&32|0)!=0){break}a[d]=j|1}else{a[g+180|0]=2}}while(0);d=g+181|0;a[d]=h>>>9&1^1;o=g+164|0;c[o>>2]=149;p=g+168|0;c[p>>2]=4;m=g+172|0;c[m>>2]=5;l=g+176|0;c[l>>2]=335;h=g+1024|0;c[h>>2]=0;j=g+960|0;b[j>>1]=0;e=g+962|0;b[e>>1]=(c[g+104>>2]|0)+65535;n=g+108|0;b[g+56>>1]=c[n>>2];c[g+60>>2]=c[g+116>>2];k=nO(g,0)|0;if((k|0)!=0){p=k;i=f;return p|0}do{if((a[d]|0)!=0){if((a[g+180|0]|0)==2){break}c[o>>2]=150;c[p>>2]=6;c[m>>2]=7;c[l>>2]=336;c[h>>2]=0;b[j>>1]=0;b[e>>1]=(c[n>>2]|0)+65535;g=nO(g,1)|0;if((g|0)==0){break}i=f;return g|0}}while(0);p=0;i=f;return p|0}function dO(a){a=a|0;var b=0;b=i;lJ(c[a+8>>2]|0,a);i=b;return}function eO(a){a=a|0;var b=0,d=0;b=i;d=c[a+4>>2]|0;Gd[c[(c[(c[a+20>>2]|0)+56>>2]|0)+8>>2]&255](c[a+60>>2]|0,c[d+172>>2]|0,c[d+176>>2]|0);i=b;return 0}function fO(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var 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;h=i;n=i;i=i+8|0;o=n;j=i;i=i+16|0;q=j;m=i;i=i+48|0;l=m;k=e+72|0;if((c[k>>2]|0)!=(c[d+24>>2]|0)){c[n>>2]=6;v=6;i=h;return v|0}p=c[d+20>>2]|0;do{if((f|0)==2){if((p|0)==270984){e=19}else{break}i=h;return e|0}else{if((p|0)==270912){e=19}else{break}i=h;return e|0}}while(0);p=e+108|0;if((g|0)!=0){HJ(p,c[g>>2]|0,c[g+4>>2]|0)}zK(p,q);v=c[j>>2]&-64;c[j>>2]=v;g=q+4|0;t=c[g>>2]&-64;c[g>>2]=t;s=q+8|0;u=(c[s>>2]|0)+63&-64;c[s>>2]=u;q=q+12|0;s=(c[q>>2]|0)+63&-64;c[q>>2]=s;v=u-v>>6;t=s-t>>6;s=e+76|0;u=c[d+8>>2]|0;r=e+156|0;if((c[(c[r>>2]|0)+4>>2]&1|0)!=0){w=e+88|0;lJ(u,c[w>>2]|0);c[w>>2]=0;w=(c[r>>2]|0)+4|0;c[w>>2]=c[w>>2]&-2}if((f&2|0)==0){a[e+94|0]=2;b[e+92>>1]=256;f=v+3&-4}else{a[e+94|0]=1;f=(v+15|0)>>>4<<1}c[e+80>>2]=v;c[s>>2]=t;c[e+84>>2]=f;c[e+88>>2]=oJ(u,t,0,f,0,o)|0;o=c[n>>2]|0;if((o|0)!=0){w=o;i=h;return w|0}w=(c[r>>2]|0)+4|0;c[w>>2]=c[w>>2]|1;HJ(p,0-(c[j>>2]|0)|0,0-(c[g>>2]|0)|0);c[m>>2]=s;c[l+4>>2]=p;c[l+8>>2]=(a[e+94|0]|0)==2;c[n>>2]=Bd[c[d+64>>2]&255](c[d+60>>2]|0,l)|0;HJ(p,c[j>>2]|0,c[g>>2]|0);l=c[n>>2]|0;if((l|0)!=0){w=l;i=h;return w|0}c[k>>2]=1651078259;c[e+100>>2]=c[j>>2]>>6;c[e+104>>2]=c[q>>2]>>6;w=0;i=h;return w|0}function gO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((c[b+72>>2]|0)!=(c[a+24>>2]|0)){a=6;i=f;return a|0}if((d|0)!=0){GJ(b+108|0,d)}if((e|0)==0){a=0;i=f;return a|0}HJ(b+108|0,c[e>>2]|0,c[e+4>>2]|0);a=0;i=f;return a|0}function hO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;bX(d|0,0,16)|0;if((c[b+72>>2]|0)!=(c[a+24>>2]|0)){i=e;return}zK(b+108|0,d);i=e;return}function iO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=sd[c[(c[(c[a+20>>2]|0)+56>>2]|0)+12>>2]&127](c[a+60>>2]|0,b,d)|0;i=e;return a|0}function jO(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;e=c[a+112>>2]|0;g=0-e|0;b[a+156>>1]=g;f=b[d>>1]|0;d=a+148|0;c[d>>2]=da(f,g)|0;if((e|0)>0){c[d>>2]=da((c[a+104>>2]|0)+~f|0,e)|0}b[a+158>>1]=0;b[a+160>>1]=0;i=i;return}function kO(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;l=i;p=c[f+4>>2]|0;g=0-p|0;m=c[f>>2]|0;k=(h+ -1+p&g)>>m;if((j-h-p|0)>(c[f+20>>2]|0)){h=(g&j)>>m}else{h=k}if((h|0)<=-1){i=l;return}j=e[f+56>>1]|0;if((k|0)>=(j|0)){i=l;return}k=(k|0)<0?0:k;m=(h|0)<(j|0)?h:j+ -1|0;h=k<<13>>16;j=m<<13>>16;g=255>>>(k&7);k=127>>>(m&7)^255;m=f+158|0;if((b[m>>1]|0)>(h|0)){b[m>>1]=h}m=f+160|0;if((b[m>>1]|0)<(j|0)){b[m>>1]=j}m=c[f+60>>2]|0;n=c[f+148>>2]|0;o=n+h|0;p=m+o|0;f=j-h|0;if((f|0)<=0){a[p]=d[p]|k&g;i=l;return}a[p]=d[p]|g;g=m+(o+1)|0;if((f+ -1|0)>0){bX(g|0,-1,j+ -1-h|0)|0;g=m+(n+j)|0}a[g]=d[g]|k;i=l;return}function lO(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=i;q=c[f+4>>2]|0;r=h+ -1|0;p=0-q|0;n=r+q&p;o=p&j;do{if((n|0)>(o|0)){s=c[k+12>>2]|0;t=s&7;if((n|0)!=(o+q|0)){i=m;return}do{if((t|0)==5|(t|0)==1){do{if((c[k+28>>2]|0)==(l|0)){if((c[k+16>>2]|0)>=1){break}if((s&16|0)==0){i=m;return}if((j-h|0)>=(c[f+8>>2]|0)){break}i=m;return}}while(0);do{if((c[l+28>>2]|0)==(k|0)){if((c[k+20>>2]|0)!=(g<<16>>16|0)){break}if((s&32|0)==0){i=m;return}if((j-h|0)>=(c[f+8>>2]|0)){break}i=m;return}}while(0);if((t|0)==1){l=o;break}l=(c[f+8>>2]|0)+((r+j|0)/2|0)&p}else if((t|0)==0){l=o}else if((t|0)==4){l=(c[f+8>>2]|0)+((r+j|0)/2|0)&p}else{i=m;return}}while(0);p=c[f>>2]|0;n=((l|0)==(n|0)?o:n)>>p;if((n|0)<=-1){n=l;break}if((n|0)>=(e[f+56>>1]|0)){n=l;break}if((d[(c[f+60>>2]|0)+((c[f+148>>2]|0)+(n<<13>>16))|0]&128>>>(n&7)|0)==0){n=l;break}i=m;return}else{p=c[f>>2]|0}}while(0);n=n>>p;if((n|0)<=-1){i=m;return}if((n|0)>=(e[f+56>>1]|0)){i=m;return}o=n>>>3&65535;l=f+158|0;if((b[l>>1]|0)>o<<16>>16){b[l>>1]=o}l=f+160|0;if((b[l>>1]|0)>16){b[l>>1]=o}t=(c[f+60>>2]|0)+((c[f+148>>2]|0)+(o<<16>>16))|0;a[t]=d[t]|128>>>(n&7);i=m;return}function mO(a){a=a|0;var d=0;d=a+148|0;c[d>>2]=(c[d>>2]|0)+(b[a+156>>1]|0);i=i;return}function nO(d,f){d=d|0;f=f|0;var 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,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;g=i;q=i;i=i+8|0;o=q;l=i;i=i+8|0;p=l;m=i;i=i+8|0;k=m;u=i;i=i+8|0;j=u;r=i;i=i+8|0;K=r;n=d+1024|0;X=c[n>>2]|0;if((X|0)<=-1){ia=0;i=g;return ia|0}M=d+4|0;I=d+80|0;J=d+76|0;w=d+28|0;F=d+40|0;N=d+44|0;H=d+92|0;C=d+87|0;v=d+86|0;L=d+32|0;D=d+36|0;h=d+48|0;E=d+88|0;G=d+84|0;B=d+128|0;x=d+100|0;y=d+96|0;A=d+140|0;z=d+132|0;s=d+24|0;t=d+8|0;O=f<<24>>24!=0;T=d+136|0;V=d+68|0;U=d+72|0;P=d+180|0;Q=d+164|0;f=d+176|0;S=d+172|0;R=d+168|0;a:while(1){ia=c[M>>2]|0;c[I>>2]=da(b[d+960+(X<<2)+2>>1]|0,ia)|0;c[J>>2]=da(b[d+960+(X<<2)>>1]|0,ia)|0;ia=c[w>>2]|0;c[F>>2]=ia;c[N>>2]=0;c[H>>2]=0;a[C]=0;a[v]=0;c[D>>2]=(c[L>>2]|0)+ -32;c[h>>2]=0;c[E>>2]=ia;c[ia+8>>2]=ia;b[G>>1]=0;b:do{if((b[B>>1]|0)>0){X=0;ca=0;while(1){c[x>>2]=0;c[y>>2]=0;aa=c[z>>2]|0;fa=e[(c[A>>2]|0)+(X<<1)>>1]|0;W=aa+(fa<<3)|0;_=aa+(ca<<3)|0;ia=c[s>>2]|0;ea=c[t>>2]|0;Y=(c[_>>2]<>2]<>2]<>2]<>2]|0;ga=ea+ca|0;ha=a[ga]|0;if((ha&4)!=0){a[P]=(ha&255)>>>5;ha=a[ga]|0}ha=ha&3;if((ha|0)==0){if((a[ea+fa|0]&3)==1){W=aa+(fa+ -1<<3)|0}else{Y=(Y+ba|0)/2|0;Z=(Z+$|0)/2|0}ga=ca+ -1|0;_=aa+(ga<<3)|0;ga=ea+ga|0}else if((ha|0)==2){W=30;break a}else{Y=ba;Z=$}c[V>>2]=Y;c[U>>2]=Z;c:do{if(_>>>0>>0){$=ga;d:while(1){fa=_+8|0;aa=$+1|0;ba=a[aa]&3;if((ba|0)==1){ha=c[s>>2]|0;ia=c[t>>2]|0;$=(c[fa>>2]<>2]<>24==0){_=fa;$=aa}else{W=83;break b}}else if((ba|0)==0){ha=c[s>>2]|0;ia=c[t>>2]|0;$=(c[fa>>2]<>2]<>>0>=W>>>0){W=23;break d}_=fa+8|0;$=$+1|0;ga=a[$]&3;ia=c[s>>2]|0;aa=c[t>>2]|0;ea=(c[_>>2]<>2]<>24==0){fa=_;ca=aa;ba=ea}else{W=83;break b}}}else{$=aa;while(1){if(fa>>>0>=W>>>0){W=23;break d}_=fa+8|0;$=$+1|0;ga=a[$]&3;ia=c[s>>2]|0;ea=c[t>>2]|0;aa=(c[_>>2]<>2]<>24==0){fa=_;ca=aa;ba=ea}else{W=83;break b}}}}while(0);if((tO(d,ca,ba,aa,ea)|0)<<24>>24!=0){W=83;break b}}else{if((_+16|0)>>>0>W>>>0){W=30;break a}if((a[$+2|0]&3)!=2){W=30;break a}ba=_+24|0;fa=c[s>>2]|0;ca=c[t>>2]|0;ga=(c[_+8>>2]<>2]<>2]<>2]<>>0>W>>>0){W=28;break}ia=(c[ba>>2]<>2]<>24==0){_=ba;$=$+3|0}else{W=83;break b}}if(_>>>0>=W>>>0){W=29;break c}}if((W|0)==23){W=0;if((tO(d,ca,ba,Y,Z)|0)<<24>>24==0){break}else{W=83;break b}}else if((W|0)==28){W=0;if((uO(d,aa,ga,ea,ha,Y,Z)|0)<<24>>24==0){break}else{W=83;break b}}}else{W=29}}while(0);if((W|0)==29){W=0;if((sO(d,Y,Z)|0)<<24>>24!=0){W=83;break b}}Y=(b[(c[A>>2]|0)+(X<<1)>>1]|0)+1<<16>>16;aa=c[U>>2]|0;_=c[M>>2]|0;$=_+ -1&aa;do{if(($|0)==0){if((aa|0)<(c[J>>2]|0)){break}if((aa|0)>(c[I>>2]|0)){break}Z=c[y>>2]|0;if((Z|0)==0){break}if(((c[(c[E>>2]|0)+12>>2]^c[Z+12>>2])&8|0)!=0){break}c[F>>2]=(c[F>>2]|0)+ -4}}while(0);Z=c[E>>2]|0;if((c[Z+12>>2]&8|0)==0){aa=((aa+ -1+_&0-_)-aa|0)>=(c[t>>2]|0)}else{aa=($|0)>=(c[t>>2]|0)}$=c[F>>2]|0;_=$-(c[Z+8>>2]|0)|0;if((_|0)<0){W=41;break a}if((_|0)>0){c[Z+16>>2]=_>>2;do{if(aa){_=(c[E>>2]|0)+12|0;$=c[_>>2]|0;if(($&8|0)==0){c[_>>2]=$|32;break}else{c[_>>2]=$|16;break}}}while(0);$=c[E>>2]|0;ia=c[F>>2]|0;c[E>>2]=ia;c[F>>2]=ia+32;c[ia+16>>2]=0;c[(c[E>>2]|0)+8>>2]=c[F>>2];c[$+28>>2]=c[E>>2];b[G>>1]=(b[G>>1]|0)+1<<16>>16;$=c[F>>2]|0}if($>>>0>=(c[D>>2]|0)>>>0){W=49;break}a[C]=0;_=c[y>>2]|0;if((_|0)!=0){c[Z+28>>2]=_}X=X+1|0;if((X|0)>=(b[B>>1]|0)){break}ca=Y&65535}if((W|0)==49){c[N>>2]=98;W=84;break}Y=b[G>>1]|0;X=c[H>>2]|0;if((Y&65535)<2|(X|0)==0){W=81;break}if(Y<<16>>16==0){W=82;break}while(1){if((Y&65535)>1){W=c[X+16>>2]|0;c[X+4>>2]=(c[X+8>>2]|0)+(W<<2)}else{c[X+4>>2]=0;W=c[X+16>>2]|0}_=X+20|0;Z=c[_>>2]|0;if((c[X+12>>2]&8|0)==0){aa=Z-W+1|0;c[_>>2]=aa;ia=X+8|0;c[ia>>2]=(c[ia>>2]|0)+(W+ -1<<2)}else{aa=Z;Z=W+ -1+Z|0}$=c[h>>2]|0;_=c[L>>2]|0;ca=$;while(1){ba=ca+ -1|0;if((ca|0)<=0){W=68;break}ea=c[_+(ba-$<<2)>>2]|0;if((ea|0)>(aa|0)){ca=ba}else{W=65;break}}do{if((W|0)==65){W=0;if((ea|0)<(aa|0)){W=aa;while(1){ia=_+(ba-$<<2)|0;aa=c[ia>>2]|0;c[ia>>2]=W;if((ba|0)>0){ba=ba+ -1|0;W=aa}else{W=68;break}}}else{if((ca|0)<1){W=68;break}else{break}}}}while(0);if((W|0)==68){ia=(c[D>>2]|0)+ -4|0;c[D>>2]=ia;if(ia>>>0<=(c[F>>2]|0)>>>0){W=70;break}_=c[h>>2]|0;c[h>>2]=_+1;c[(c[L>>2]|0)+(~_<<2)>>2]=aa;_=c[L>>2]|0;$=c[h>>2]|0}ca=Z+1|0;ba=$;while(1){Z=ba+ -1|0;if((ba|0)<=0){W=77;break}aa=c[_+(Z-$<<2)>>2]|0;if((aa|0)>(ca|0)){ba=Z}else{W=74;break}}do{if((W|0)==74){W=0;if((aa|0)<(ca|0)){W=ca;while(1){ia=_+(Z-$<<2)|0;ca=c[ia>>2]|0;c[ia>>2]=W;if((Z|0)>0){Z=Z+ -1|0;W=ca}else{W=77;break}}}else{if((ba|0)<1){W=77;break}else{break}}}}while(0);if((W|0)==77){ia=(c[D>>2]|0)+ -4|0;c[D>>2]=ia;if(ia>>>0<=(c[F>>2]|0)>>>0){W=79;break}ia=c[h>>2]|0;c[h>>2]=ia+1;c[(c[L>>2]|0)+(~ia<<2)>>2]=ca}Y=Y+ -1<<16>>16;if(Y<<16>>16==0){W=82;break b}else{X=c[X+4>>2]|0}}if((W|0)==70){c[N>>2]=98;W=84;break}else if((W|0)==79){c[N>>2]=98;W=84;break}}else{W=81}}while(0);if((W|0)==81){c[H>>2]=0;W=82}do{if((W|0)==82){W=0;if((c[F>>2]|0)>>>0>=(c[D>>2]|0)>>>0){W=83;break}X=c[H>>2]|0;do{if((X|0)!=0){c[m>>2]=0;c[u>>2]=0;c[r>>2]=0;ba=c[d>>2]|0;aa=c[J>>2]>>ba&65535;b[l>>1]=aa;ba=c[I>>2]>>ba&65535;b[q>>1]=ba;while(1){Y=X+4|0;Z=c[Y>>2]|0;$=c[X+20>>2]|0;_=$&65535;$=$+65535+(c[X+16>>2]|0)&65535;if(ba<<16>>16>_<<16>>16){b[q>>1]=_}else{_=ba}if(aa<<16>>16<$<<16>>16){b[l>>1]=$}else{$=aa}c[X>>2]=0;aa=c[m>>2]|0;f:do{if((aa|0)==0){ba=k;aa=0}else{ca=k;while(1){ba=aa+4|0;if((c[aa>>2]|0)>0){ba=ca;break f}aa=c[ba>>2]|0;if((aa|0)==0){aa=0;break}else{ca=ba}}}}while(0);c[Y>>2]=aa;c[ba>>2]=X;if((Z|0)==0){break}else{aa=$;ba=_;X=Z}}if((c[h>>2]|0)==0){W=98;break a}Gd[c[Q>>2]&255](d,o,p);Z=c[m>>2]|0;Y=b[q>>1]|0;if((Z|0)!=0){X=Y&65535;_=Z;do{c[_+24>>2]=(c[_+20>>2]|0)-X&65535;_=c[_+4>>2]|0;}while((_|0)!=0)}X=c[h>>2]|0;g:do{if((X|0)>0){if((c[(c[L>>2]|0)+(0-X<<2)>>2]|0)==(Y<<16>>16|0)){ia=X+ -1|0;c[h>>2]=ia;if((ia|0)>0){X=0}else{break}}else{X=0}while(1){if((Z|0)!=0){while(1){$=Z+4|0;_=c[$>>2]|0;ha=Z+24|0;ia=c[ha>>2]|0;c[ha>>2]=ia-X;do{if((ia|0)==(X|0)){ca=k;while(1){aa=c[ca>>2]|0;if((aa|0)==0){break}ba=aa+4|0;if((aa|0)==(Z|0)){W=112;break}else{ca=ba}}if((W|0)==112){W=0;c[ca>>2]=c[ba>>2]}aa=c[Z>>2]|0;if((c[Z+12>>2]&8|0)==0){ca=c[r>>2]|0;h:do{if((ca|0)==0){ba=K;ca=0}else{ea=K;while(1){ba=ca+4|0;if((aa|0)<(c[ca>>2]|0)){ba=ea;break h}ca=c[ba>>2]|0;if((ca|0)==0){ca=0;break}else{ea=ba}}}}while(0);c[$>>2]=ca;c[ba>>2]=Z;break}else{ca=c[u>>2]|0;i:do{if((ca|0)==0){ba=j;ca=0}else{ea=j;while(1){ba=ca+4|0;if((aa|0)<(c[ca>>2]|0)){ba=ea;break i}ca=c[ba>>2]|0;if((ca|0)==0){ca=0;break}else{ea=ba}}}}while(0);c[$>>2]=ca;c[ba>>2]=Z;break}}}while(0);if((_|0)==0){break}else{Z=_}}}$=c[u>>2]|0;do{if(($|0)==0){$=0}else{X=$;do{ia=X+8|0;ha=c[ia>>2]|0;c[X>>2]=c[ha>>2];c[ia>>2]=ha+(((c[X+12>>2]|0)>>>2&2)+ -1<<2);ia=X+16|0;c[ia>>2]=(c[ia>>2]|0)+ -1;X=c[X+4>>2]|0;}while((X|0)!=0);ba=$+4|0;aa=c[ba>>2]|0;if((aa|0)==0){break}else{X=$;Z=$;_=j}while(1){if((c[Z>>2]|0)>(c[aa>>2]|0)){c[_>>2]=aa;$=aa+4|0;c[ba>>2]=c[$>>2];c[$>>2]=Z;Z=c[u>>2]|0;$=Z;_=j}else{$=X;Z=aa;_=ba}ba=Z+4|0;aa=c[ba>>2]|0;if((aa|0)==0){break}else{X=$}}}}while(0);_=c[r>>2]|0;do{if((_|0)==0){_=0}else{X=_;do{ia=X+8|0;ha=c[ia>>2]|0;c[X>>2]=c[ha>>2];c[ia>>2]=ha+(((c[X+12>>2]|0)>>>2&2)+ -1<<2);ia=X+16|0;c[ia>>2]=(c[ia>>2]|0)+ -1;X=c[X+4>>2]|0;}while((X|0)!=0);ba=_+4|0;aa=c[ba>>2]|0;if((aa|0)==0){break}else{X=_;Z=_;$=aa;aa=K}while(1){if((c[Z>>2]|0)>(c[$>>2]|0)){c[aa>>2]=$;_=$+4|0;c[ba>>2]=c[_>>2];c[_>>2]=Z;Z=c[r>>2]|0;_=Z;aa=K}else{_=X;Z=$;aa=ba}ba=Z+4|0;$=c[ba>>2]|0;if(($|0)==0){break}else{X=_}}$=c[u>>2]|0}}while(0);Z=c[h>>2]|0;c[h>>2]=Z+ -1;Z=c[(c[L>>2]|0)+(0-Z<<2)>>2]<<16>>16;X=Z-(Y&65535)|0;j:do{if((Y<<16>>16|0)<(Z|0)){while(1){k:do{if(($|0)!=0){aa=0;while(1){ca=c[$>>2]|0;fa=c[_>>2]|0;ea=(ca|0)>(fa|0);ba=ea?fa:ca;ca=ea?ca:fa;ea=c[M>>2]|0;ga=0-ea|0;fa=ba&ga;ga=ea+ -1+ca&ga;do{if((ca-ba|0)>(ea|0)|(fa|0)==(ba|0)|(ga|0)==(ca|0)){W=143}else{if(!((fa|0)>(ga|0)|(ga|0)==(fa+ea|0))){W=143;break}if((c[$+12>>2]&7|0)==2){break}c[$>>2]=ba;c[_>>2]=ca;c[$+24>>2]=1;aa=aa+1<<16>>16}}while(0);if((W|0)==143){W=0;ud[c[R>>2]&7](d,Y,ba,ca,$,_)}$=c[$+4>>2]|0;if(($|0)==0){break}_=c[_+4>>2]|0}if(aa<<16>>16<=0){break}$=c[u>>2]|0;if(($|0)==0){break}else{_=K}while(1){_=c[_>>2]|0;aa=$+24|0;if((c[aa>>2]|0)!=0){c[aa>>2]=0;ud[c[S>>2]&7](d,Y,c[$>>2]|0,c[_>>2]|0,$,_)}$=c[$+4>>2]|0;if(($|0)==0){break k}_=_+4|0}}}while(0);fd[c[f>>2]&511](d);Y=Y+1<<16>>16;$=c[u>>2]|0;if((Y<<16>>16|0)>=(Z|0)){break j}do{if(($|0)==0){$=0}else{_=$;do{ia=_+8|0;ha=c[ia>>2]|0;c[_>>2]=c[ha>>2];c[ia>>2]=ha+(((c[_+12>>2]|0)>>>2&2)+ -1<<2);ia=_+16|0;c[ia>>2]=(c[ia>>2]|0)+ -1;_=c[_+4>>2]|0;}while((_|0)!=0);ca=$+4|0;ba=c[ca>>2]|0;if((ba|0)==0){break}else{_=$;aa=j}while(1){if((c[$>>2]|0)>(c[ba>>2]|0)){c[aa>>2]=ba;_=ba+4|0;c[ca>>2]=c[_>>2];c[_>>2]=$;$=c[u>>2]|0;_=$;aa=j}else{$=ba;aa=ca}ca=$+4|0;ba=c[ca>>2]|0;if((ba|0)==0){$=_;break}}}}while(0);_=c[r>>2]|0;if((_|0)==0){_=0;continue}else{aa=_}do{ia=aa+8|0;ha=c[ia>>2]|0;c[aa>>2]=c[ha>>2];c[ia>>2]=ha+(((c[aa+12>>2]|0)>>>2&2)+ -1<<2);ia=aa+16|0;c[ia>>2]=(c[ia>>2]|0)+ -1;aa=c[aa+4>>2]|0;}while((aa|0)!=0);ca=_+4|0;aa=c[ca>>2]|0;if((aa|0)==0){continue}else{$=_;ba=K}while(1){if((c[_>>2]|0)>(c[aa>>2]|0)){c[ba>>2]=aa;aa=aa+4|0;c[ca>>2]=c[aa>>2];c[aa>>2]=_;aa=c[r>>2]|0;_=aa;ba=K}else{_=$;ba=ca}ca=aa+4|0;ea=c[ca>>2]|0;if((ea|0)==0){break}else{$=_;_=aa;aa=ea}}$=c[u>>2]|0}}}while(0);if(($|0)!=0){while(1){aa=c[$+4>>2]|0;l:do{if((c[$+16>>2]|0)==0){_=j;while(1){Z=c[_>>2]|0;if((Z|0)==0){break l}ba=Z+4|0;if((Z|0)==($|0)){break}else{_=ba}}c[_>>2]=c[ba>>2]}}while(0);if((aa|0)==0){break}else{$=aa}}}_=c[r>>2]|0;if((_|0)!=0){while(1){$=c[_+4>>2]|0;m:do{if((c[_+16>>2]|0)==0){Z=K;while(1){ba=c[Z>>2]|0;if((ba|0)==0){break m}aa=ba+4|0;if((ba|0)==(_|0)){break}else{Z=aa}}c[Z>>2]=c[aa>>2]}}while(0);if(($|0)==0){break}else{_=$}}}if((c[h>>2]|0)<=0){break g}Z=c[m>>2]|0;X=X<<16>>16}}}while(0);if(Y<<16>>16>(b[l>>1]|0)){break}do{fd[c[f>>2]&511](d);Y=Y+1<<16>>16;}while(Y<<16>>16<=(b[l>>1]|0))}}while(0);X=(c[n>>2]|0)+ -1|0}}while(0);if((W|0)==83){if((c[N>>2]|0)==98){W=84}else{h=1;W=180;break}}if((W|0)==84){c[N>>2]=0;X=c[n>>2]|0;ia=b[d+960+(X<<2)>>1]|0;W=b[d+960+(X<<2)+2>>1]|0;Y=(((W<<16>>16)+(ia<<16>>16)|0)/2|0)&65535;if((X|0)>6|Y<<16>>16>16){W=85;break}b[d+960+(X+1<<2)>>1]=Y;b[d+960+((c[n>>2]|0)+1<<2)+2>>1]=W;b[d+960+(c[n>>2]<<2)+2>>1]=Y+ -1<<16>>16;X=(c[n>>2]|0)+1|0}c[n>>2]=X;if((X|0)<=-1){h=0;W=180;break}}if((W|0)==30){c[N>>2]=20;ia=1;i=g;return ia|0}else if((W|0)==41){c[N>>2]=99;ia=1;i=g;return ia|0}else if((W|0)==85){c[n>>2]=0;c[N>>2]=20;ia=20;i=g;return ia|0}else if((W|0)==98){c[N>>2]=20;ia=20;i=g;return ia|0}else if((W|0)==180){i=g;return h|0}return 0}function oO(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function pO(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;j=i;h=c[b+4>>2]|0;if((g-f|0)>=(h|0)){i=j;return}k=0-h|0;f=f+ -1+h&k;if((f|0)!=(k&g|0)){i=j;return}e=e<<16>>16;h=f>>c[b>>2];if((h|0)<=-1){i=j;return}g=c[b+104>>2]|0;if((h|0)>=(g|0)){i=j;return}f=c[b+112>>2]|0;h=(e>>3)-(da(f,h)|0)|0;if((f|0)>0){h=h+(da(f,g+ -1|0)|0)|0}k=(c[b+60>>2]|0)+h|0;a[k]=d[k]|0|128>>>(e&7);i=j;return}function qO(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;m=c[b+4>>2]|0;r=f+ -1|0;q=0-m|0;l=r+m&q;n=q&g;do{if((l|0)>(n|0)){p=c[h+12>>2]|0;o=p&7;if((l|0)!=(n+m|0)){i=k;return}do{if((o|0)==0){m=n}else if((o|0)==5|(o|0)==1){do{if((c[h+28>>2]|0)==(j|0)){if((c[h+16>>2]|0)>=1){break}if((p&16|0)==0){i=k;return}if((g-f|0)>=(c[b+8>>2]|0)){break}i=k;return}}while(0);do{if((c[j+28>>2]|0)==(h|0)){if((c[h+20>>2]|0)!=(e<<16>>16|0)){break}if((p&32|0)==0){i=k;return}if((g-f|0)>=(c[b+8>>2]|0)){break}i=k;return}}while(0);if((o|0)==1){m=n;break}m=(c[b+8>>2]|0)+((r+g|0)/2|0)&q}else if((o|0)==4){m=(c[b+8>>2]|0)+((r+g|0)/2|0)&q}else{i=k;return}}while(0);j=c[b>>2]|0;g=((m|0)==(l|0)?n:l)>>j;f=c[b+60>>2]|0;n=e<<16>>16;l=n>>3;n=128>>>(n&7);e=b+104|0;p=c[b+112>>2]|0;o=l-(da(g,p)|0)|0;if((p|0)>0){o=(da((c[e>>2]|0)+ -1|0,p)|0)+o|0}if((g|0)<=-1){e=f;f=l;l=m;break}if((g|0)>=(c[e>>2]|0)){e=f;f=l;l=m;break}if((n&(d[f+o|0]|0)|0)==0){e=f;f=l;l=m;break}i=k;return}else{f=e<<16>>16;j=c[b>>2]|0;e=c[b+60>>2]|0;n=128>>>(f&7);f=f>>3}}while(0);m=l>>j;if((m|0)<=-1){i=k;return}l=c[b+104>>2]|0;if((m|0)>=(l|0)){i=k;return}b=c[b+112>>2]|0;m=f-(da(b,m)|0)|0;if((b|0)>0){m=m+(da(b,l+ -1|0)|0)|0}r=e+m|0;a[r]=d[r]|0|n;i=k;return}function rO(a){a=a|0;i=i;return}function sO(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;j=e+100|0;k=c[j>>2]|0;do{if((k|0)==0){k=c[e+72>>2]|0;if((k|0)<(g|0)){n=c[e+4>>2]|0;k=((k+ -1+n&0-n)-k|0)<(c[e+8>>2]|0);n=e+92|0;l=e+40|0;m=c[l>>2]|0;if((c[n>>2]|0)==0){c[e+88>>2]=m;c[n>>2]=m;m=m+32|0;c[l>>2]=m}if(m>>>0>=(c[e+36>>2]|0)>>>0){c[e+44>>2]=98;s=1;i=h;return s|0}m=e+88|0;c[(c[m>>2]|0)+12>>2]=0;c[(c[m>>2]|0)+20>>2]=0;c[(c[m>>2]|0)+16>>2]=0;c[(c[m>>2]|0)+8>>2]=c[l>>2];c[(c[m>>2]|0)+4>>2]=0;c[(c[m>>2]|0)+28>>2]=0;c[(c[m>>2]|0)+12>>2]=d[e+180|0]|0;s=(c[m>>2]|0)+12|0;c[s>>2]=c[s>>2]|8;if(!k){s=(c[m>>2]|0)+12|0;c[s>>2]=c[s>>2]|32}k=e+96|0;if((c[k>>2]|0)==0){c[k>>2]=c[m>>2]}c[j>>2]=1;a[e+86|0]=1;a[e+87|0]=0;l=63;break}if((k|0)<=(g|0)){l=62;break}k=((c[e+4>>2]|0)+ -1&k|0)<(c[e+8>>2]|0);m=e+92|0;l=e+40|0;n=c[l>>2]|0;if((c[m>>2]|0)==0){c[e+88>>2]=n;c[m>>2]=n;n=n+32|0;c[l>>2]=n}if(n>>>0>=(c[e+36>>2]|0)>>>0){c[e+44>>2]=98;s=1;i=h;return s|0}m=e+88|0;c[(c[m>>2]|0)+12>>2]=0;c[(c[m>>2]|0)+20>>2]=0;c[(c[m>>2]|0)+16>>2]=0;c[(c[m>>2]|0)+8>>2]=c[l>>2];c[(c[m>>2]|0)+4>>2]=0;c[(c[m>>2]|0)+28>>2]=0;c[(c[m>>2]|0)+12>>2]=d[e+180|0]|0;if(!k){s=(c[m>>2]|0)+12|0;c[s>>2]=c[s>>2]|16}k=e+96|0;if((c[k>>2]|0)==0){c[k>>2]=c[m>>2]}c[j>>2]=2;a[e+86|0]=1;a[e+87|0]=0;l=64}else if((k|0)==1){m=e+72|0;k=c[m>>2]|0;if((k|0)<=(g|0)){l=63;break}n=e+4|0;o=e+8|0;s=((c[n>>2]|0)+ -1&k|0)<(c[o>>2]|0);l=e+40|0;r=c[l>>2]|0;k=e+88|0;q=c[k>>2]|0;p=r-(c[q+8>>2]|0)|0;if((p|0)<0){c[e+44>>2]=99;s=1;i=h;return s|0}if((p|0)>0){c[q+16>>2]=p>>2;do{if(!s){q=(c[k>>2]|0)+12|0;p=c[q>>2]|0;if((p&8|0)==0){c[q>>2]=p|32;break}else{c[q>>2]=p|16;break}}}while(0);r=c[k>>2]|0;s=c[l>>2]|0;c[k>>2]=s;c[l>>2]=s+32;c[s+16>>2]=0;c[(c[k>>2]|0)+8>>2]=c[l>>2];c[r+28>>2]=c[k>>2];r=e+84|0;b[r>>1]=(b[r>>1]|0)+1<<16>>16;r=c[l>>2]|0}q=c[e+36>>2]|0;if(r>>>0>=q>>>0){c[e+44>>2]=98;s=1;i=h;return s|0}p=e+87|0;a[p]=0;m=((c[n>>2]|0)+ -1&c[m>>2]|0)<(c[o>>2]|0);n=e+92|0;if((c[n>>2]|0)==0){c[k>>2]=r;c[n>>2]=r;r=r+32|0;c[l>>2]=r}if(r>>>0>=q>>>0){c[e+44>>2]=98;s=1;i=h;return s|0}c[(c[k>>2]|0)+12>>2]=0;c[(c[k>>2]|0)+20>>2]=0;c[(c[k>>2]|0)+16>>2]=0;c[(c[k>>2]|0)+8>>2]=c[l>>2];c[(c[k>>2]|0)+4>>2]=0;c[(c[k>>2]|0)+28>>2]=0;c[(c[k>>2]|0)+12>>2]=d[e+180|0]|0;if(!m){s=(c[k>>2]|0)+12|0;c[s>>2]=c[s>>2]|16}l=e+96|0;if((c[l>>2]|0)==0){c[l>>2]=c[k>>2]}c[j>>2]=2;a[e+86|0]=1;a[p]=0;l=64}else if((k|0)==2){n=e+72|0;k=c[n>>2]|0;if((k|0)>=(g|0)){l=64;break}m=e+4|0;s=c[m>>2]|0;o=e+8|0;s=((k+ -1+s&0-s)-k|0)<(c[o>>2]|0);l=e+40|0;r=c[l>>2]|0;k=e+88|0;q=c[k>>2]|0;p=r-(c[q+8>>2]|0)|0;if((p|0)<0){c[e+44>>2]=99;s=1;i=h;return s|0}if((p|0)>0){c[q+16>>2]=p>>2;do{if(!s){p=(c[k>>2]|0)+12|0;q=c[p>>2]|0;if((q&8|0)==0){c[p>>2]=q|32;break}else{c[p>>2]=q|16;break}}}while(0);r=c[k>>2]|0;s=c[l>>2]|0;c[k>>2]=s;c[l>>2]=s+32;c[s+16>>2]=0;c[(c[k>>2]|0)+8>>2]=c[l>>2];c[r+28>>2]=c[k>>2];r=e+84|0;b[r>>1]=(b[r>>1]|0)+1<<16>>16;r=c[l>>2]|0}q=c[e+36>>2]|0;if(r>>>0>=q>>>0){c[e+44>>2]=98;s=1;i=h;return s|0}p=e+87|0;a[p]=0;n=c[n>>2]|0;m=c[m>>2]|0;m=((n+ -1+m&0-m)-n|0)<(c[o>>2]|0);n=e+92|0;if((c[n>>2]|0)==0){c[k>>2]=r;c[n>>2]=r;r=r+32|0;c[l>>2]=r}if(r>>>0>=q>>>0){c[e+44>>2]=98;s=1;i=h;return s|0}c[(c[k>>2]|0)+12>>2]=0;c[(c[k>>2]|0)+20>>2]=0;c[(c[k>>2]|0)+16>>2]=0;c[(c[k>>2]|0)+8>>2]=c[l>>2];c[(c[k>>2]|0)+4>>2]=0;c[(c[k>>2]|0)+28>>2]=0;c[(c[k>>2]|0)+12>>2]=d[e+180|0]|0;s=(c[k>>2]|0)+12|0;c[s>>2]=c[s>>2]|8;if(!m){s=(c[k>>2]|0)+12|0;c[s>>2]=c[s>>2]|32}l=e+96|0;if((c[l>>2]|0)==0){c[l>>2]=c[k>>2]}c[j>>2]=1;a[e+86|0]=1;a[p]=0;l=63}else{l=62}}while(0);do{if((l|0)==62){k=e+68|0;j=e+72|0}else if((l|0)==63){k=e+68|0;j=e+72|0;if((zO(e,c[k>>2]|0,c[j>>2]|0,f,g,c[e+76>>2]|0,c[e+80>>2]|0)|0)<<24>>24==0){break}else{g=1}i=h;return g|0}else if((l|0)==64){k=e+68|0;j=e+72|0;m=e+86|0;s=a[m]|0;l=zO(e,c[k>>2]|0,0-(c[j>>2]|0)|0,f,0-g|0,0-(c[e+80>>2]|0)|0,0-(c[e+76>>2]|0)|0)|0;do{if(s<<24>>24!=0){if((a[m]|0)!=0){break}s=(c[e+88>>2]|0)+20|0;c[s>>2]=0-(c[s>>2]|0)}}while(0);if(l<<24>>24==0){break}else{g=1}i=h;return g|0}}while(0);c[k>>2]=f;c[j>>2]=g;s=0;i=h;return s|0}function tO(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;j=i;n=d+184|0;m=d+52|0;c[m>>2]=n;l=d+68|0;c[d+200>>2]=c[l>>2];k=d+72|0;z=c[k>>2]|0;c[d+204>>2]=z;c[d+192>>2]=e;c[d+196>>2]=f;c[n>>2]=g;c[d+188>>2]=h;w=d+100|0;x=d+76|0;s=d+80|0;v=d+86|0;p=d+88|0;u=d+4|0;t=d+8|0;q=d+40|0;r=d+84|0;o=d+36|0;e=d+87|0;y=n;a:while(1){A=(z|0)>(h|0);do{if((f|0)<((A?h:z)|0)|(f|0)>((A?z:h)|0)){D=y+16|0;C=c[D>>2]|0;c[y+32>>2]=C;A=y+8|0;B=c[A>>2]|0;C=(B+C|0)/2|0;c[y+24>>2]=C;B=(g+B|0)/2|0;c[A>>2]=B;c[D>>2]=(B+C|0)/2|0;c[y+36>>2]=z;D=(f+z|0)/2|0;c[y+28>>2]=D;C=(h+f|0)/2|0;c[y+12>>2]=C;c[y+20>>2]=(C+D|0)/2|0;c[m>>2]=(c[m>>2]|0)+16}else{if((z|0)==(h|0)){c[m>>2]=y+ -16;break}f=(z|0)<(h|0);y=f?1:2;B=c[w>>2]|0;if((B|0)!=(y|0)){A=c[u>>2]|0;if(f){A=((z+ -1+A&0-A)-z|0)>=(c[t>>2]|0)}else{A=(A+ -1&z|0)>=(c[t>>2]|0)}z=A&1;if((B|0)!=0){B=c[q>>2]|0;C=c[p>>2]|0;D=B-(c[C+8>>2]|0)|0;if((D|0)<0){m=12;break a}if((D|0)>0){c[C+16>>2]=D>>2;do{if(A){B=(c[p>>2]|0)+12|0;A=c[B>>2]|0;if((A&8|0)==0){c[B>>2]=A|32;break}else{c[B>>2]=A|16;break}}}while(0);B=c[p>>2]|0;D=c[q>>2]|0;c[p>>2]=D;c[q>>2]=D+32;c[D+16>>2]=0;c[(c[p>>2]|0)+8>>2]=c[q>>2];c[B+28>>2]=c[p>>2];b[r>>1]=(b[r>>1]|0)+1<<16>>16;B=c[q>>2]|0}if(B>>>0>=(c[o>>2]|0)>>>0){m=20;break a}a[e]=0}if((wO(d,y,z)|0)<<24>>24!=0){d=1;m=32;break a}}y=c[x>>2]|0;z=c[s>>2]|0;if(f){if((xO(d,2,337,y,z)|0)<<24>>24==0){break}else{d=1;m=32;break a}}D=c[m>>2]|0;f=D+4|0;c[f>>2]=0-(c[f>>2]|0);C=D+12|0;c[C>>2]=0-(c[C>>2]|0);D=D+20|0;c[D>>2]=0-(c[D>>2]|0);D=a[v]|0;y=xO(d,2,337,0-z|0,0-y|0)|0;do{if(D<<24>>24!=0){if((a[v]|0)!=0){break}D=(c[p>>2]|0)+20|0;c[D>>2]=0-(c[D>>2]|0)}}while(0);c[f>>2]=0-(c[f>>2]|0);if(y<<24>>24!=0){d=1;m=32;break a}}}while(0);y=c[m>>2]|0;if(y>>>0>>0){m=31;break}g=c[y>>2]|0;h=c[y+4>>2]|0;f=c[y+12>>2]|0;z=c[y+20>>2]|0}if((m|0)==12){c[d+44>>2]=99;D=1;i=j;return D|0}else if((m|0)==20){c[d+44>>2]=98;D=1;i=j;return D|0}else if((m|0)==31){c[l>>2]=g;c[k>>2]=h;D=0;i=j;return D|0}else if((m|0)==32){i=j;return d|0}return 0}function uO(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;l=i;p=d+184|0;o=d+52|0;c[o>>2]=p;n=d+68|0;c[d+208>>2]=c[n>>2];m=d+72|0;z=c[m>>2]|0;c[d+212>>2]=z;c[d+200>>2]=e;c[d+204>>2]=f;c[d+192>>2]=g;c[d+196>>2]=h;c[p>>2]=j;c[d+188>>2]=k;y=d+100|0;t=d+76|0;u=d+80|0;x=d+86|0;q=d+88|0;w=d+4|0;v=d+8|0;r=d+40|0;s=d+84|0;e=d+36|0;g=d+87|0;A=f;B=p;a:while(1){f=(z|0)<=(k|0);C=(A|0)>(h|0);do{if(((C?h:A)|0)<((f?z:k)|0)|((C?A:h)|0)>((f?k:z)|0)){C=B+24|0;D=c[C>>2]|0;c[B+48>>2]=D;H=B+8|0;F=B+16|0;E=c[F>>2]|0;G=(c[H>>2]|0)+1|0;f=j+G>>1;c[H>>2]=f;D=D+1+E>>1;c[B+40>>2]=D;E=(G+E>>1)+1|0;f=E+f>>1;c[F>>2]=f;D=E+D>>1;c[B+32>>2]=D;c[C>>2]=f+1+D>>1;c[B+52>>2]=z;h=h+1|0;C=k+h>>1;c[B+12>>2]=C;D=z+1+A>>1;c[B+44>>2]=D;A=(h+A>>1)+1|0;C=A+C>>1;c[B+20>>2]=C;D=A+D>>1;c[B+36>>2]=D;c[B+28>>2]=C+1+D>>1;c[o>>2]=(c[o>>2]|0)+24}else{if((z|0)==(k|0)){c[o>>2]=B+ -24;break}h=f?1:2;B=c[y>>2]|0;if((B|0)!=(h|0)){A=c[w>>2]|0;if(f){A=((z+ -1+A&0-A)-z|0)>=(c[v>>2]|0)}else{A=(A+ -1&z|0)>=(c[v>>2]|0)}z=A&1;if((B|0)!=0){B=c[r>>2]|0;D=c[q>>2]|0;C=B-(c[D+8>>2]|0)|0;if((C|0)<0){o=12;break a}if((C|0)>0){c[D+16>>2]=C>>2;do{if(A){A=(c[q>>2]|0)+12|0;B=c[A>>2]|0;if((B&8|0)==0){c[A>>2]=B|32;break}else{c[A>>2]=B|16;break}}}while(0);B=c[q>>2]|0;H=c[r>>2]|0;c[q>>2]=H;c[r>>2]=H+32;c[H+16>>2]=0;c[(c[q>>2]|0)+8>>2]=c[r>>2];c[B+28>>2]=c[q>>2];b[s>>1]=(b[s>>1]|0)+1<<16>>16;B=c[r>>2]|0}if(B>>>0>=(c[e>>2]|0)>>>0){o=20;break a}a[g]=0}if((wO(d,h,z)|0)<<24>>24!=0){d=1;o=32;break a}}h=c[t>>2]|0;z=c[u>>2]|0;if(f){if((xO(d,3,338,h,z)|0)<<24>>24==0){break}else{d=1;o=32;break a}}H=c[o>>2]|0;f=H+4|0;c[f>>2]=0-(c[f>>2]|0);G=H+12|0;c[G>>2]=0-(c[G>>2]|0);G=H+20|0;c[G>>2]=0-(c[G>>2]|0);H=H+28|0;c[H>>2]=0-(c[H>>2]|0);H=a[x]|0;h=xO(d,3,338,0-z|0,0-h|0)|0;do{if(H<<24>>24!=0){if((a[x]|0)!=0){break}H=(c[q>>2]|0)+20|0;c[H>>2]=0-(c[H>>2]|0)}}while(0);c[f>>2]=0-(c[f>>2]|0);if(h<<24>>24!=0){d=1;o=32;break a}}}while(0);B=c[o>>2]|0;if(B>>>0

>>0){c[a+36>>2]=b;a=a+32|0;c[a>>2]=oJ(b,4,l,p,c[a>>2]|0,o)|0;if((c[n>>2]|0)==0){c[g>>2]=p;break}else{s=0;i=f;return s|0}}else{a=a+32|0}}while(0);g=c[a>>2]|0;b=j+(k+4)|0;j=0;while(1){c[g+(j<<2)>>2]=(d[b+1|0]|0)<<8|(d[b]|0)<<16|(d[b+2|0]|0);j=j+1|0;if(j>>>0>>0){b=b+5|0}else{break}}c[g+(h<<2)>>2]=0;s=g;i=f;return s|0}n=p+r|0;p=a+28|0;o=c[p>>2]|0;c[m>>2]=0;do{if(o>>>0>>0){c[a+36>>2]=b;a=a+32|0;c[a>>2]=oJ(b,4,o,n,c[a>>2]|0,l)|0;if((c[m>>2]|0)==0){c[p>>2]=n;break}else{s=0;i=f;return s|0}}else{a=a+32|0}}while(0);b=c[a>>2]|0;m=d[j+(e+7)|0]|0;n=1;q=j+(e+8)|0;p=(d[j+(e+5)|0]|0)<<8|(d[j+(e+4)|0]|0)<<16|(d[j+(e+6)|0]|0);o=0;l=1;a=(d[j+(k+5)|0]|0)<<8|(d[j+(k+4)|0]|0)<<16|(d[j+(k+6)|0]|0);j=j+(k+9)|0;b:while(1){if(a>>>0>(m+p|0)>>>0){e=q;k=o;while(1){o=k;q=0;while(1){k=o+1|0;c[b+(o<<2)>>2]=q+p;q=q+1|0;if(q>>>0>m>>>0){break}else{o=k}}n=n+1|0;if(n>>>0>g>>>0){o=e;e=p;break b}p=(d[e+1|0]|0)<<8|(d[e]|0)<<16|(d[e+2|0]|0);q=e+4|0;m=d[e+3|0]|0;if(a>>>0>(m+p|0)>>>0){e=q}else{e=p;break}}}else{e=p;k=o}if(a>>>0>>0){c[b+(k<<2)>>2]=a;k=k+1|0}l=l+1|0;if(l>>>0>h>>>0){o=q;break}p=e;o=k;a=(d[j+1|0]|0)<<8|(d[j]|0)<<16|(d[j+2|0]|0);j=j+5|0}do{if(l>>>0>h>>>0){if(n>>>0>g>>>0){break}else{h=k;j=0}while(1){k=h+1|0;c[b+(h<<2)>>2]=j+e;j=j+1|0;if(j>>>0>m>>>0){break}else{h=k}}if(n>>>0>=g>>>0){break}while(1){j=(d[o+1|0]|0)<<8|(d[o]|0)<<16|(d[o+2|0]|0);a=d[o+3|0]|0;h=k;l=0;while(1){c[b+(h<<2)>>2]=l+j;l=l+1|0;if(l>>>0>a>>>0){break}else{h=h+1|0}}k=k+1+a|0;n=n+1|0;if(n>>>0>>0){o=o+4|0}else{break}}}else{c[b+(k<<2)>>2]=a;a=k+1|0;if(l>>>0>=h>>>0){k=a;break}g=k+h+1|0;k=a;a=l;while(1){c[b+(k<<2)>>2]=(d[j+1|0]|0)<<8|(d[j]|0)<<16|(d[j+2|0]|0);a=a+1|0;if(a>>>0>>0){j=j+5|0;k=k+1|0}else{break}}k=g-l|0}}while(0);c[b+(k<<2)>>2]=0;s=b;i=f;return s|0}else if((e|0)==59){i=f;return g|0}return 0}function rP(a,b){a=a|0;b=b|0;var 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;e=i;l=(d[a+3|0]|0)<<16|(d[a+2|0]|0)<<24|(d[a+4|0]|0)<<8|(d[a+5|0]|0);g=(d[a+7|0]|0)<<16|(d[a+6|0]|0)<<24|(d[a+8|0]|0)<<8|(d[a+9|0]|0);j=b+4|0;if(l>>>0>((c[j>>2]|0)-a|0)>>>0){wJ(b,8)}if(l>>>0<((g*11|0)+10|0)>>>0){wJ(b,8)}if((g|0)==0){i=e;return 0}f=b+8|0;h=b+172|0;n=1;m=0;o=a+10|0;a:while(1){q=(d[o+1|0]|0)<<8|(d[o]|0)<<16|(d[o+2|0]|0);p=(d[o+4|0]|0)<<16|(d[o+3|0]|0)<<24|(d[o+5|0]|0)<<8|(d[o+6|0]|0);k=o+11|0;o=(d[o+8|0]|0)<<16|(d[o+7|0]|0)<<24|(d[o+9|0]|0)<<8|(d[o+10|0]|0);if(!(p>>>0>>0&o>>>0>>0)){f=7;break}if(q>>>0>>0){f=9;break}n=q+1|0;do{if((p|0)!=0){q=p+4|0;p=(d[a+(p+1)|0]|0)<<16|(d[a+p|0]|0)<<24|(d[a+(p+2)|0]|0)<<8|(d[a+(p+3)|0]|0);if((a+((p<<2)+q)|0)>>>0>(c[j>>2]|0)>>>0){f=12;break a}if((p|0)==0){break}else{q=a+q|0;u=0;t=0}while(1){s=(d[q+1|0]|0)<<8|(d[q]|0)<<16|(d[q+2|0]|0);r=s+(d[q+3|0]|0)|0;if(r>>>0>1114111){f=15;break a}if(s>>>0>>0){f=17;break a}u=u+1|0;if(u>>>0

>>0){t=r+1|0;q=q+4|0}else{break}}}}while(0);do{if((o|0)!=0){r=a+(o+4)|0;o=(d[a+(o+1)|0]|0)<<16|(d[a+o|0]|0)<<24|(d[a+(o+2)|0]|0)<<8|(d[a+(o+3)|0]|0);if(o<<2>>>0>((c[j>>2]|0)-r|0)>>>0){f=21;break a}if((o|0)==0){break}else{p=0;s=0}while(1){t=(d[r+1|0]|0)<<8|(d[r]|0)<<16|(d[r+2|0]|0);q=r+5|0;if(t>>>0>1114111){f=24;break a}if(t>>>0>>0){f=26;break a}s=t+1|0;if((c[f>>2]|0)!=0){if((((d[r+3|0]|0)<<8&65535|(d[r+4|0]|0))&65535)>>>0>=(c[h>>2]|0)>>>0){f=29;break a}}p=p+1|0;if(p>>>0>>0){r=q}else{break}}}}while(0);m=m+1|0;if(m>>>0>>0){o=k}else{f=32;break}}if((f|0)==7){wJ(b,8)}else if((f|0)==9){wJ(b,8)}else if((f|0)==12){wJ(b,8)}else if((f|0)==15){wJ(b,8)}else if((f|0)==17){wJ(b,8)}else if((f|0)==21){wJ(b,8)}else if((f|0)==24){wJ(b,8)}else if((f|0)==26){wJ(b,8)}else if((f|0)==29){wJ(b,16)}else if((f|0)==32){i=e;return 0}return 0}function sP(a,b){a=a|0;b=b|0;c[b+4>>2]=14;c[b>>2]=-1;i=i;return 0}function tP(a,b){a=a|0;b=b|0;var c=0;c=i;a=uJ(271760,b)|0;i=c;return a|0}function uP(a,b){a=a|0;b=b|0;var d=0;d=i;a=Bd[c[(c[a+12>>2]|0)+48>>2]&255](a,b)|0;i=d;return a|0}function vP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;h=i;i=i+8|0;f=h;j=i;i=i+8|0;g=j;k=wP(a,271936,g)|0;if((k|0)!=0){a=k;i=e;return a|0}k=wP(a,271960,f)|0;if((k|0)!=0){a=k;i=e;return a|0}if((c[j>>2]|0)!=1){a=6;i=e;return a|0}if((c[h>>2]|0)!=1){a=6;i=e;return a|0}c[b>>2]=c[f+4>>2];c[d>>2]=c[g+4>>2];a=0;i=e;return a|0}function wP(e,f,g){e=e|0;f=f|0;g=g|0;var 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;j=i;m=c[e+88>>2]|0;c[g>>2]=0;p=e+812|0;a:do{if((a[p]|0)==0){n=c[e+104>>2]|0;o=e+792|0;bX(o|0,0,24)|0;v=b[e+152>>1]|0;r=c[e+156>>2]|0;q=r+((v&65535)<<4)|0;if(v<<16>>16==0){v=8;i=j;return v|0}while(1){if((c[r>>2]|0)==1111770656){t=c[r+12>>2]|0;if((t|0)!=0){break}}s=r+16|0;if(s>>>0>>0){r=s}else{h=8;l=36;break}}if((l|0)==36){i=j;return h|0}if((r|0)==0){v=8;i=j;return v|0}if((PJ(n,c[r+8>>2]|0)|0)!=0|t>>>0<8){v=8;i=j;return v|0}if((LK(n,t,o)|0)!=0){v=8;i=j;return v|0}r=c[o>>2]|0;c[e+796>>2]=r+t;u=d[r+2|0]<<8&65535|d[r+3|0];q=u&65535;v=d[r+5|0]<<16|d[r+4|0]<<24|d[r+6|0]<<8|d[r+7|0];do{if(!((d[r]<<8&65535|d[r+1|0])<<16>>16!=1|v>>>0<8)){if((v+ -8|0)>>>2>>>0>>0|(v+1|0)>>>0>t>>>0){break}c[e+808>>2]=q;s=r+v|0;c[e+800>>2]=s;c[e+804>>2]=t-v;v=r+((q<<2)+8)|0;if(u<<16>>16!=0){u=q;t=r+8|0;while(1){v=v+(((d[t+2|0]<<8&65535|d[t+3|0])&65535)*10|0)|0;u=u+ -1|0;if((u|0)==0){break}else{t=t+4|0}}}if(v>>>0>s>>>0){break}a[p]=1;break a}}while(0);NK(n,o);bX(o|0,0,24)|0;v=8;i=j;return v|0}else{r=c[e+792>>2]|0;q=c[e+808>>2]|0}}while(0);if((m|0)==0|(f|0)==0){v=6;i=j;return v|0}n=ZW(f|0)|0;if((n|0)==0|(q|0)==0){v=6;i=j;return v|0}o=b[m+14>>1]|0;s=q;p=r+8|0;m=r+((q<<2)+8)|0;while(1){r=d[p+2|0]<<8&65535|d[p+3|0];q=r&65535;if((d[p]<<8&65535|d[p+1|0])<<16>>16==o<<16>>16){break}s=s+ -1|0;if((s|0)==0){h=6;l=36;break}else{p=p+4|0;m=m+(q*10|0)|0}}if((l|0)==36){i=j;return h|0}if(r<<16>>16==0){v=6;i=j;return v|0}l=e+804|0;e=e+800|0;b:while(1){s=(d[m+4|0]<<8&65535|d[m+5|0])&65535;do{if((s&16|0)!=0){r=d[m+1|0]<<16|d[m]<<24|d[m+2|0]<<8|d[m+3|0];k=d[m+7|0]<<16|d[m+6|0]<<24|d[m+8|0]<<8|d[m+9|0];p=c[l>>2]|0;if(r>>>0>=p>>>0){break}t=p-r|0;if(n>>>0>=t>>>0){break}o=c[e>>2]|0;if((vc(f|0,o+r|0,t|0)|0)!=0){break}r=s&15;if((r|0)==3){l=34;break b}else if((r|0)==2){l=33;break b}else if(!((r|0)==1|(r|0)==0)){break}if(k>>>0>=p>>>0){break}if((Ua(o+k|0,0,p|0)|0)!=0){l=32;break b}}}while(0);q=q+ -1|0;if((q|0)==0){h=6;l=36;break}else{m=m+10|0}}if((l|0)==32){c[g>>2]=1;c[g+4>>2]=(c[e>>2]|0)+k;v=0;i=j;return v|0}else if((l|0)==33){c[g>>2]=2;c[g+4>>2]=k;v=0;i=j;return v|0}else if((l|0)==34){c[g>>2]=3;c[g+4>>2]=k;v=0;i=j;return v|0}else if((l|0)==36){i=j;return h|0}return 0}function xP(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;k=b[a+152>>1]|0;j=c[a+156>>2]|0;a=j+((k&65535)<<4)|0;if(k<<16>>16==0){k=142;i=g;return k|0}while(1){if((c[j>>2]|0)==(d|0)){k=c[j+12>>2]|0;if((k|0)!=0){break}}j=j+16|0;if(j>>>0>=a>>>0){d=142;h=9;break}}if((h|0)==9){i=g;return d|0}if((j|0)==0){k=142;i=g;return k|0}if((f|0)!=0){c[f>>2]=k}k=PJ(e,c[j+8>>2]|0)|0;i=g;return k|0}function yP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=i;i=i+8|0;b=AP(a,b,g)|0;if((b|0)!=0){i=f;return b|0}bL(d,c[g>>2]|0,e)|0;i=f;return b|0}function zP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;e=i;i=i+8|0;g=e;f=c[a+16>>2]|0;if((f|0)<1){h=0;i=d;return h|0}else{h=0}while(1){if((AP(a,h,g)|0)==0){if((Qc(b|0,c[e>>2]|0)|0)==0){b=5;break}}h=h+1|0;if(h>>>0>=f>>>0){h=0;b=5;break}}if((b|0)==5){i=d;return h|0}return 0}function AP(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;if((d|0)==0){l=35;i=h;return l|0}if((e[d+264>>1]|0)>>>0<=f>>>0){l=16;i=h;return l|0}j=c[d+536>>2]|0;if((j|0)==0){l=7;i=h;return l|0}k=d+628|0;j=j+16|0;c[g>>2]=jd[c[j>>2]&511](0)|0;l=c[d+468>>2]|0;if((l|0)==131072){do{if((a[k]|0)==0){if((BP(d)|0)==0){break}else{d=0}i=h;return d|0}}while(0);if((e[d+632>>1]|0)>>>0<=f>>>0){l=0;i=h;return l|0}l=b[(c[d+636>>2]|0)+(f<<1)>>1]|0;f=l&65535;if((l&65535)<258){c[g>>2]=jd[c[j>>2]&511](f)|0;l=0;i=h;return l|0}else{c[g>>2]=c[(c[d+640>>2]|0)+(f+ -258<<2)>>2];l=0;i=h;return l|0}}else if((l|0)==65536){if(f>>>0>=258){l=0;i=h;return l|0}c[g>>2]=jd[c[j>>2]&511](f)|0;l=0;i=h;return l|0}else if((l|0)==163840){do{if((a[k]|0)==0){if((BP(d)|0)==0){break}else{d=0}i=h;return d|0}}while(0);if((e[d+632>>1]|0)>>>0<=f>>>0){l=0;i=h;return l|0}c[g>>2]=jd[c[j>>2]&511]((a[(c[d+636>>2]|0)+f|0]|0)+f|0)|0;l=0;i=h;return l|0}else{l=0;i=h;return l|0}return 0}function BP(d){d=d|0;var 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;f=i;l=i;i=i+8|0;m=l;g=i;i=i+8|0;j=g;o=i;i=i+8|0;h=c[d+104>>2]|0;n=pd[c[d+508>>2]&63](d,1886352244,h,o)|0;if((n|0)!=0){u=n;i=f;return u|0}n=IK(h)|0;n=(c[o>>2]|0)+n|0;o=c[d+468>>2]|0;p=DK(h,32)|0;if((p|0)!=0){u=p;i=f;return u|0}a:do{if((o|0)==131072){l=c[h+28>>2]|0;o=EK(h,j)|0;p=o&65535;m=c[g>>2]|0;if((m|0)!=0){break}if((o&65535)>(e[d+264>>1]|0)){c[g>>2]=3;m=3;break}m=oJ(l,2,0,p,0,j)|0;b:do{if((c[g>>2]|0)==0){u=MK(h,p<<1)|0;c[g>>2]=u;if((u|0)!=0){p=0;break}if(o<<16>>16==0){PK(h);q=0}else{q=0;do{b[m+(q<<1)>>1]=RK(h)|0;q=q+1|0;}while((q|0)<(p|0));PK(h);r=0;q=0;do{s=b[m+(r<<1)>>1]|0;if((s&65535)>257){s=(s&65535)+ -257|0;q=(s|0)>(q&65535|0)?s&65535:q}r=r+1|0;}while((r|0)<(p|0))}p=oJ(l,4,0,q&65535,0,j)|0;if((c[g>>2]|0)!=0){break}c:do{if(q<<16>>16!=0){r=0;s=0;while(1){if((IK(h)|0)>=(n|0)){k=19;break}u=(VK(h,j)|0)&255;if((c[g>>2]|0)!=0){h=0;break}if((u|0)>(n|0)){k=23}else{if((IK(h)|0)>(n-u|0)){k=23}}do{if((k|0)==23){k=0;if((n-(IK(h)|0)|0)<0){u=0;break}u=n-(IK(h)|0)|0}}while(0);t=oJ(l,1,0,u+1|0,0,j)|0;r=p+(r<<2)|0;c[r>>2]=t;if((c[g>>2]|0)!=0){h=0;break}t=CK(h,t,u)|0;c[g>>2]=t;if((t|0)!=0){h=0;break}a[(c[r>>2]|0)+u|0]=0;s=s+1<<16>>16;if((s&65535)<(q&65535)){r=s&65535}else{break c}}d:do{if((k|0)==19){if((s&65535)>=(q&65535)){break c}while(1){h=oJ(l,1,0,1,0,j)|0;c[p+((s&65535)<<2)>>2]=h;if((c[g>>2]|0)!=0){h=0;break d}a[h]=0;s=s+1<<16>>16;if((s&65535)>=(q&65535)){break c}}}}while(0);while(1){u=p+((h&65535)<<2)|0;lJ(l,c[u>>2]|0);c[u>>2]=0;h=h+1<<16>>16;if((h&65535)<(q&65535)){}else{break b}}}}while(0);b[d+632>>1]=o;b[d+634>>1]=q;c[d+636>>2]=m;c[d+640>>2]=p;m=0;break a}else{p=0}}while(0);lJ(l,p);lJ(l,m);m=c[g>>2]|0}else if((o|0)==163840){k=c[h+28>>2]|0;j=EK(h,m)|0;g=j&65535;n=c[l>>2]|0;if((n|0)!=0){m=n;break}if((j&65535)>(e[d+264>>1]|0)|(j&65535)>258){c[l>>2]=3;m=3;break}m=oJ(k,1,0,g,0,m)|0;e:do{if((c[l>>2]|0)==0){u=CK(h,m,g)|0;c[l>>2]=u;if((u|0)!=0){break}f:do{if(j<<16>>16!=0){h=0;while(1){u=(a[m+h|0]|0)+h|0;h=h+1|0;if((u|0)<0|(u|0)>(g|0)){break}if((h|0)>=(g|0)){break f}}c[l>>2]=3;break e}}while(0);b[d+632>>1]=j;c[d+636>>2]=m;m=0;break a}}while(0);lJ(k,m);m=c[l>>2]|0}else{m=3}}while(0);a[d+628|0]=1;u=m;i=f;return u|0}function CP(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=i;h=i;i=i+8|0;l=h;j=i;i=i+8|0;k=j;f=d+700|0;m=c[f>>2]|0;if((m|0)!=0){r=m;i=g;return r|0}m=b[d+344>>1]|0;a:do{if(m<<16>>16==0){j=0}else{o=c[d+360>>2]|0;p=m&65535;m=-1;n=-1;q=0;do{do{if((b[o+(q*20|0)+6>>1]|0)==6){if((b[o+(q*20|0)+8>>1]|0)==0){break}r=b[o+(q*20|0)>>1]|0;if(r<<16>>16==3){if((b[o+(q*20|0)+2>>1]|0)!=1){break}n=(b[o+(q*20|0)+4>>1]|0)==1033?q:n}if(r<<16>>16!=1){break}if((b[o+(q*20|0)+2>>1]|0)!=0){break}m=(b[o+(q*20|0)+4>>1]|0)==0?q:m}}while(0);q=q+1|0;}while((q|0)<(p|0));if((n|0)==-1){if((m|0)==-1){j=0;break}l=c[d+100>>2]|0;h=c[d+360>>2]|0;o=h+(m*20|0)+8|0;n=e[o>>1]|0;c[j>>2]=0;k=jJ(l,n+1|0,k)|0;if((c[j>>2]|0)!=0){j=k;break}d=c[d+364>>2]|0;p=h+(m*20|0)+12|0;r=PJ(d,c[p>>2]|0)|0;c[j>>2]=r;do{if((r|0)==0){r=CK(d,k,n)|0;c[j>>2]=r;if((r|0)!=0){break}a[k+n|0]=0;j=k;break a}}while(0);c[p>>2]=0;b[o>>1]=0;j=h+(m*20|0)+16|0;lJ(l,c[j>>2]|0);c[j>>2]=0;lJ(l,k);j=0;break}o=c[d+100>>2]|0;p=c[d+360>>2]|0;k=p+(n*20|0)+8|0;m=(e[k>>1]|0)>>>1;c[h>>2]=0;j=jJ(o,(e[k>>1]|0)+1|0,l)|0;if((c[h>>2]|0)!=0){break}d=c[d+364>>2]|0;l=p+(n*20|0)+16|0;n=p+(n*20|0)+12|0;r=PJ(d,c[n>>2]|0)|0;c[h>>2]=r;do{if((r|0)==0){r=MK(d,e[k>>1]|0)|0;c[h>>2]=r;if((r|0)!=0){break}if((m|0)==0){k=j}else{h=c[d+32>>2]|0;k=j;while(1){do{if((a[h]|0)==0){l=a[h+1|0]|0;if(!((l&255)>31&l<<24>>24>-1)){break}a[k]=l;k=k+1|0}}while(0);m=m+ -1|0;if((m|0)==0){break}else{h=h+2|0}}}a[k]=0;PK(d);break a}}while(0);lJ(o,j);b[k>>1]=0;c[n>>2]=0;lJ(o,c[l>>2]|0);c[l>>2]=0;j=0}}while(0);c[f>>2]=j;r=j;i=g;return r|0}function DP(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;do{if((d|0)==0){l=c[(c[a+104>>2]|0)+4>>2]|0}else{l=b[a+152>>1]|0;m=c[a+156>>2]|0;k=m+((l&65535)<<4)|0;if(l<<16>>16==0){m=142;i=h;return m|0}while(1){if((c[m>>2]|0)==(d|0)){l=c[m+12>>2]|0;if((l|0)!=0){break}}m=m+16|0;if(m>>>0>=k>>>0){a=142;j=13;break}}if((j|0)==13){i=h;return a|0}if((m|0)==0){m=142;i=h;return m|0}else{e=(c[m+8>>2]|0)+e|0;break}}}while(0);do{if((g|0)!=0){j=c[g>>2]|0;if((j|0)!=0){l=j;break}c[g>>2]=l;m=0;i=h;return m|0}}while(0);m=JK(c[a+104>>2]|0,e,f,l)|0;i=h;return m|0}function EP(d,e){d=d|0;e=e|0;a:do{switch(e|0){case 1:{d=d+260|0;break};case 3:{d=d+216|0;break};case 6:{d=d+556|0;if((c[d>>2]|0)==0){d=0;break a}break};case 5:{d=d+468|0;break};case 2:{d=d+368|0;if((b[d>>1]|0)==-1){d=0;break a}break};case 0:{d=d+160|0;break};case 4:{if((a[d+296|0]|0)==0){d=0;break a}d=d+300|0;break};default:{d=0}}}while(0);i=i;return d|0}function FP(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0;h=i;if((d|0)==0|(f|0)==0|(g|0)==0){g=6;i=h;return g|0}if((e[a+152>>1]|0)>>>0<=b>>>0){g=142;i=h;return g|0}a=a+156|0;c[d>>2]=c[(c[a>>2]|0)+(b<<4)>>2];c[f>>2]=c[(c[a>>2]|0)+(b<<4)+8>>2];c[g>>2]=c[(c[a>>2]|0)+(b<<4)+12>>2];g=0;i=h;return g|0}function GP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;f=i;i=i+8|0;j=f;k=b+532|0;g=c[k>>2]|0;h=b+96|0;do{if((g|0)==0){g=nK(c[(c[h>>2]|0)+4>>2]|0,271552)|0;if((g|0)==0){p=3;i=e;return p|0}else{c[k>>2]=g;c[b+508>>2]=c[g>>2];break}}}while(0);c[b+536>>2]=oK(c[h>>2]|0,273032)|0;k=c[a+28>>2]|0;p=b+132|0;c[p>>2]=0;m=b+136|0;c[m>>2]=0;h=b+140|0;c[h>>2]=0;l=IK(a)|0;n=GK(a,j)|0;o=c[f>>2]|0;if((o|0)!=0){p=o;i=e;return p|0}if(!((n|0)==65536|(n|0)==131072|(n|0)==1330926671|(n|0)==1953658213|(n|0)==1953784678|(n|0)==1954115633)){p=2;i=e;return p|0}c[p>>2]=1953784678;do{if((n|0)==1953784678){l=ZK(a,273056,p)|0;c[f>>2]=l;if((l|0)!=0){p=l;i=e;return p|0}l=b+144|0;c[l>>2]=oJ(k,4,0,c[h>>2]|0,0,j)|0;j=c[f>>2]|0;if((j|0)!=0){p=j;i=e;return p|0}j=MK(a,c[h>>2]<<2)|0;c[f>>2]=j;if((j|0)!=0){p=j;i=e;return p|0}if((c[h>>2]|0)>0){j=0;do{p=TK(a)|0;c[(c[l>>2]|0)+(j<<2)>>2]=p;j=j+1|0;}while((j|0)<(c[h>>2]|0))}PK(a)}else{c[m>>2]=65536;c[h>>2]=1;j=jJ(k,4,j)|0;c[b+144>>2]=j;k=c[f>>2]|0;if((k|0)==0){c[j>>2]=l;break}else{p=k;i=e;return p|0}}}while(0);f=c[f>>2]|0;if((f|0)!=0){p=f;i=e;return p|0}d=(d|0)<0?0:d;if((d|0)>=(c[h>>2]|0)){p=6;i=e;return p|0}f=PJ(a,c[(c[b+144>>2]|0)+(d<<2)>>2]|0)|0;if((f|0)!=0){p=f;i=e;return p|0}a=Bd[c[g+132>>2]&255](b,a)|0;if((a|0)!=0){p=a;i=e;return p|0}c[b>>2]=c[h>>2];c[b+4>>2]=d;p=0;i=e;return p|0}function HP(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;g=i;k=i;i=i+8|0;p=k;m=i;i=i+32|0;l=m;o=c[f+532>>2]|0;if((h|0)>0){s=0;r=0;q=0;do{t=c[j+(s<<3)>>2]|0;if((t|0)==1768386662){r=1}else{q=(t|0)==1768386675?1:q}s=s+1|0;}while((s|0)<(h|0))}else{r=0;q=0}h=f+128|0;a:do{if((c[(c[h>>2]|0)+52>>2]|0)==0){t=b[f+152>>1]|0;s=c[f+156>>2]|0;j=s+((t&65535)<<4)|0;t=t<<16>>16==0;b:do{if(t){t=0}else{u=s;do{if((c[u>>2]|0)==1735162214){if((c[u+12>>2]|0)!=0){n=10;break}}u=u+16|0;}while(u>>>0>>0);if((n|0)==10){if((u|0)!=0){t=1;n=18;break a}}if(t){t=0;break}while(1){if((c[s>>2]|0)==1128678944){if((c[s+12>>2]|0)!=0){break}}s=s+16|0;if(s>>>0>=j>>>0){t=0;break b}}x=(s|0)!=0;t=x&1;if(x){n=18;break a}}}while(0);j=c[o+84>>2]|0;if((j|0)==0){t=0;n=18;break}x=Bd[j&255](f,d)|0;c[k>>2]=x;if((x|0)==0){u=1}else{n=18}}else{t=1;n=18}}while(0);do{if((n|0)==18){x=Bd[c[o+32>>2]&255](f,d)|0;c[k>>2]=x;if((x|0)==0){u=0;break}x=k;x=c[x>>2]|0;i=g;return x|0}}while(0);j=f+178|0;if((b[j>>1]|0)==0){c[k>>2]=8;x=k;x=c[x>>2]|0;i=g;return x|0}c[k>>2]=Bd[c[o+44>>2]&255](f,d)|0;c[k>>2]=Bd[c[o+40>>2]&255](f,d)|0;c[k>>2]=Bd[c[o+56>>2]&255](f,d)|0;s=Bd[c[o+52>>2]&255](f,d)|0;c[k>>2]=s;do{if(!u){u=o+36|0;v=sd[c[u>>2]&127](f,d,0)|0;c[k>>2]=v;do{if((v|0)==0){v=sd[c[o+136>>2]&127](f,d,0)|0;c[k>>2]=v;if((v|0)!=142){n=32;break}c[k>>2]=147;h=c[(c[h>>2]|0)+52>>2]|0;if((h|0)==0){x=k;x=c[x>>2]|0;i=g;return x|0}if((c[(c[h>>2]|0)+8>>2]|0)==0){x=k;x=c[x>>2]|0;i=g;return x|0}else{b[f+250>>1]=0;c[k>>2]=0;break}}else if((v|0)==142){if((c[f+148>>2]|0)==1953658213){c[k>>2]=0;t=0;break}c[k>>2]=143;h=c[(c[h>>2]|0)+52>>2]|0;if((h|0)==0){x=k;x=c[x>>2]|0;i=g;return x|0}if((c[(c[h>>2]|0)+8>>2]|0)==0){x=k;x=c[x>>2]|0;i=g;return x|0}else{b[f+250>>1]=0;c[k>>2]=0;break}}else{n=32}}while(0);do{if((n|0)==32){if((v|0)==0){break}x=k;x=c[x>>2]|0;i=g;return x|0}}while(0);h=sd[c[u>>2]&127](f,d,1)|0;c[k>>2]=h;do{if((h|0)==0){h=sd[c[o+136>>2]&127](f,d,1)|0;c[k>>2]=h;if((h|0)!=0){n=36;break}a[f+296|0]=1}else{n=36}}while(0);do{if((n|0)==36){if((h|0)==0|(h|0)==142){break}x=k;x=c[x>>2]|0;i=g;return x|0}}while(0);x=Bd[c[o+48>>2]&255](f,d)|0;c[k>>2]=x;if((x|0)==0){break}b[f+368>>1]=-1}}while(0);h=c[o+140>>2]|0;do{if((h|0)!=0){h=Bd[h&255](f,d)|0;c[k>>2]=h;if((h|0)==0){break}else if((h|0)==142){c[k>>2]=0;break}else{x=k;x=c[x>>2]|0;i=g;return x|0}}}while(0);h=Bd[c[o+80>>2]&255](f,d)|0;c[k>>2]=h;if((h|0)==142){c[f+556>>2]=0}else if((h|0)!=0){x=k;x=c[x>>2]|0;i=g;return x|0}c[k>>2]=Bd[c[o+76>>2]&255](f,d)|0;c[k>>2]=Bd[c[o+72>>2]&255](f,d)|0;c[f+16>>2]=e[f+264>>1]|0;u=f+20|0;c[u>>2]=0;d=f+24|0;c[d>>2]=0;h=f+368|0;do{if((b[h>>1]|0)==-1){n=54}else{if((b[f+432>>1]&256)==0){n=54;break}do{if(r<<24>>24==0){x=rQ(f,16,u)|0;c[k>>2]=x;if((x|0)==0){if((c[u>>2]|0)==0){n=49;break}else{break}}else{x=k;x=c[x>>2]|0;i=g;return x|0}}else{n=49}}while(0);do{if((n|0)==49){x=rQ(f,1,u)|0;c[k>>2]=x;if((x|0)==0){break}x=k;x=c[x>>2]|0;i=g;return x|0}}while(0);do{if(q<<24>>24==0){x=rQ(f,17,d)|0;c[k>>2]=x;if((x|0)==0){break}x=k;x=c[x>>2]|0;i=g;return x|0}}while(0);if((c[d>>2]|0)!=0){break}x=rQ(f,2,d)|0;c[k>>2]=x;if((x|0)==0){break}x=k;x=c[x>>2]|0;i=g;return x|0}}while(0);do{if((n|0)==54){x=rQ(f,21,u)|0;c[k>>2]=x;if((x|0)!=0){x=k;x=c[x>>2]|0;i=g;return x|0}v=c[u>>2]|0;do{if((v|0)==0&r<<24>>24==0){x=rQ(f,16,u)|0;c[k>>2]=x;if((x|0)==0){v=c[u>>2]|0;break}else{x=k;x=c[x>>2]|0;i=g;return x|0}}}while(0);do{if((v|0)==0){x=rQ(f,1,u)|0;c[k>>2]=x;if((x|0)==0){break}x=k;x=c[x>>2]|0;i=g;return x|0}}while(0);x=rQ(f,22,d)|0;c[k>>2]=x;if((x|0)!=0){x=k;x=c[x>>2]|0;i=g;return x|0}r=c[d>>2]|0;do{if((r|0)==0&q<<24>>24==0){x=rQ(f,17,d)|0;c[k>>2]=x;if((x|0)==0){r=c[d>>2]|0;break}else{x=k;x=c[x>>2]|0;i=g;return x|0}}}while(0);if((r|0)!=0){break}x=rQ(f,2,d)|0;c[k>>2]=x;if((x|0)==0){break}x=k;x=c[x>>2]|0;i=g;return x|0}}while(0);d=f+8|0;r=t<<24>>24==1;q=c[d>>2]|r&1;t=q|24;if((s|0)==0){t=(c[f+468>>2]|0)==196608?t:q|536}s=(c[f+480>>2]|0)==0?t:t|4;q=f+296|0;s=(a[q]|0)==0?s:s|32;s=(c[f+784>>2]|0)==0?s:s|64;x=b[f+152>>1]|0;u=c[f+156>>2]|0;t=u+((x&65535)<<4)|0;c:do{if(x<<16>>16!=0){v=u;while(1){if((c[v>>2]|0)==1735162214){if((c[v+12>>2]|0)!=0){break}}v=v+16|0;if(v>>>0>=t>>>0){break c}}if((v|0)==0){break}else{v=u}while(1){if((c[v>>2]|0)==1719034226){if((c[v+12>>2]|0)!=0){break}}v=v+16|0;if(v>>>0>=t>>>0){break c}}if((v|0)==0){break}while(1){if((c[u>>2]|0)==1735811442){if((c[u+12>>2]|0)!=0){break}}u=u+16|0;if(u>>>0>=t>>>0){u=0;break}}s=(u|0)==0?s:s|256}}while(0);c[d>>2]=s;do{if(r){if((b[h>>1]|0)==-1){n=84;break}x=b[f+432>>1]|0;r=x&65535;r=(x&65535)>>>4&2|((r&512|0)==0?r&1:1)}else{n=84}}while(0);if((n|0)==84){x=b[f+204>>1]|0;r=(x&65535)>>>1&1|((x&1)==0?0:2)}c[f+12>>2]=r;sQ(f);t=f+36|0;if((c[t>>2]|0)>0){r=f+40|0;s=0;do{u=c[(c[r>>2]|0)+(s<<2)>>2]|0;v=e[u+8>>1]|0;w=e[u+10>>1]|0;x=272856;while(1){if((c[x>>2]|0)==(v|0)){y=c[x+4>>2]|0;if((y|0)==(w|0)|(y|0)==-1){n=90;break}}x=x+12|0;if(x>>>0>=(272988|0)>>>0){v=0;break}}if((n|0)==90){n=0;v=c[x+8>>2]|0}c[u+4>>2]=v;s=s+1|0;}while((s|0)<(c[t>>2]|0))}r=c[f+612>>2]|0;do{if((r|0)==0){l=c[d>>2]|0}else{t=c[(c[f+104>>2]|0)+28>>2]|0;s=b[j>>1]|0;if(s<<16>>16==0){n=97}else{if((b[h>>1]|0)==-1){n=97}else{h=b[f+370>>1]|0}}if((n|0)==97){h=0;s=1}v=oJ(t,16,0,r,0,p)|0;n=f+32|0;c[n>>2]=v;if((c[k>>2]|0)!=0){y=k;y=c[y>>2]|0;i=g;return y|0}o=o+152|0;p=l+20|0;h=h<<16>>16;t=s&65535;u=t>>>1;s=l+2|0;w=0;while(1){y=sd[c[o>>2]&127](f,w,l)|0;c[k>>2]=y;if((y|0)!=0){n=108;break}b[v+(w<<4)>>1]=(c[p>>2]|0)>>>6;b[v+(w<<4)+2>>1]=((da(e[m>>1]|0,h)|0)+u|0)/(t|0)|0;c[v+(w<<4)+8>>2]=e[m>>1]<<6;c[v+(w<<4)+12>>2]=e[s>>1]<<6;c[v+(w<<4)+4>>2]=e[s>>1]<<6;w=w+1|0;if(w>>>0>=r>>>0){n=103;break}v=c[n>>2]|0}if((n|0)==103){l=c[d>>2]|2;c[d>>2]=l;c[f+28>>2]=r;break}else if((n|0)==108){y=k;y=c[y>>2]|0;i=g;return y|0}}}while(0);if((l&3|0)==0){l=l|1;c[d>>2]=l}if((l&1|0)==0){y=k;y=c[y>>2]|0;i=g;return y|0}c[f+52>>2]=b[f+196>>1]|0;c[f+56>>2]=b[f+198>>1]|0;c[f+60>>2]=b[f+200>>1]|0;c[f+64>>2]=b[f+202>>1]|0;b[f+68>>1]=b[j>>1]|0;x=b[f+220>>1]|0;b[f+70>>1]=x;y=b[f+222>>1]|0;b[f+72>>1]=y;l=f+74|0;b[l>>1]=(x-y<<16>>16)+(b[f+224>>1]|0)<<16>>16;b[f+76>>1]=b[f+226>>1]|0;b[f+78>>1]=b[((a[q]|0)==0?l:f+310|0)>>1]|0;y=b[f+478>>1]|0;b[f+80>>1]=(e[f+476>>1]|0)-((y<<16>>16|0)/2|0);b[f+82>>1]=y;y=k;y=c[y>>2]|0;i=g;return y|0}function IP(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;if((d|0)==0){i=e;return}g=c[d+100>>2]|0;j=d+532|0;f=c[j>>2]|0;h=(f|0)!=0;do{if(h){k=c[f+116>>2]|0;if((k|0)!=0){fd[k&511](d)}k=c[f+144>>2]|0;if((k|0)==0){break}fd[k&511](d)}}while(0);if((a[d+812|0]|0)!=0){k=d+792|0;if((c[k>>2]|0)!=0){NK(c[d+104>>2]|0,k)}c[d+796>>2]=0;c[d+800>>2]=0;c[d+804>>2]=0}k=d+104|0;NK(c[k>>2]|0,d+772|0);bX(d+776|0,0,16)|0;l=d+144|0;lJ(g,c[l>>2]|0);c[l>>2]=0;c[d+140>>2]=0;l=d+156|0;lJ(g,c[l>>2]|0);c[l>>2]=0;b[d+152>>1]=0;NK(c[k>>2]|0,d+500|0);c[d+504>>2]=0;k=d+252|0;lJ(g,c[k>>2]|0);c[k>>2]=0;k=d+256|0;lJ(g,c[k>>2]|0);c[k>>2]=0;k=d+296|0;if((a[k]|0)!=0){l=d+336|0;lJ(g,c[l>>2]|0);c[l>>2]=0;l=d+340|0;lJ(g,c[l>>2]|0);c[l>>2]=0;a[k]=0}l=d+552|0;lJ(g,c[l>>2]|0);c[l>>2]=0;b[d+550>>1]=0;if(h){fd[c[f+60>>2]&511](d)}l=d+20|0;lJ(g,c[l>>2]|0);c[l>>2]=0;l=d+24|0;lJ(g,c[l>>2]|0);c[l>>2]=0;l=d+32|0;lJ(g,c[l>>2]|0);c[l>>2]=0;c[d+28>>2]=0;l=d+700|0;lJ(g,c[l>>2]|0);c[l>>2]=0;c[j>>2]=0;i=e;return}function JP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;i=i;return 7}function KP(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 7}function LP(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=pd[c[a+508>>2]&63](a,1751474532,b,0)|0;if((e|0)!=0){a=e;i=d;return a|0}a=ZK(b,272216,a+160|0)|0;i=d;return a|0}function MP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=c[a+508>>2]|0;do{if(d<<24>>24==0){f=pd[f&63](a,1751672161,b,0)|0;if((f|0)==0){a=a+216|0;break}else{d=f;i=e;return d|0}}else{f=pd[f&63](a,1986553185,b,0)|0;if((f|0)==0){a=a+300|0;break}else{d=f;i=e;return d|0}}}while(0);b=ZK(b,272776,a)|0;if((b|0)!=0){d=b;i=e;return d|0}c[a+36>>2]=0;c[a+40>>2]=0;d=0;i=e;return d|0}function NP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=a+504|0;f=pd[c[a+508>>2]&63](a,1668112752,b,e)|0;if((f|0)!=0){a=f;i=d;return a|0}b=LK(b,c[e>>2]|0,a+500|0)|0;if((b|0)==0){a=0;i=d;return a|0}c[e>>2]=0;a=b;i=d;return a|0}function OP(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=a+260|0;h=pd[c[a+508>>2]&63](a,1835104368,d,0)|0;if((h|0)!=0){k=h;i=f;return k|0}h=ZK(d,272696,g)|0;if((h|0)!=0){k=h;i=f;return k|0}j=a+276|0;k=a+280|0;h=a+290|0;bX(a+266|0,0,26)|0;if((c[g>>2]|0)<=65535){k=0;i=f;return k|0}d=ZK(d,272712,g)|0;if((d|0)!=0){k=d;i=f;return k|0}if((e[k>>1]|0)<64){b[k>>1]=64}if((e[j>>1]|0)>65531){b[j>>1]=-5}if((e[h>>1]|0)<=100){k=0;i=f;return k|0}b[h>>1]=100;k=0;i=f;return k|0}function PP(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;f=i;h=pd[c[a+508>>2]&63](a,1330851634,d,0)|0;do{if((h|0)==0){g=a+368|0;h=ZK(d,272472,g)|0;if((h|0)!=0){break}bX(a+448|0,0,18)|0;if((b[g>>1]|0)==0){h=0;break}h=ZK(d,272648,g)|0;if((h|0)!=0){break}if((e[g>>1]|0)<=1){h=0;break}h=ZK(d,272664,g)|0}}while(0);i=f;return h|0}function QP(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=pd[c[a+508>>2]&63](a,1886352244,b,0)|0;if((e|0)!=0){a=e;i=d;return a|0}a=ZK(b,272424,a+468|0)|0;i=d;return a|0}function RP(a,d){a=a|0;d=d|0;var 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;f=i;e=i;i=i+8|0;k=i;i=i+8|0;m=c[d+28>>2]|0;c[a+364>>2]=d;g=pd[c[a+508>>2]&63](a,1851878757,d,k)|0;c[e>>2]=g;if((g|0)!=0){s=g;i=f;return s|0}h=IK(d)|0;g=ZK(d,272368,a+348|0)|0;c[e>>2]=g;if((g|0)!=0){s=g;i=f;return s|0}g=a+352|0;n=c[g>>2]|0;o=n*12|0;j=h+6+o|0;l=(c[k>>2]|0)+h|0;if(j>>>0>l>>>0){c[e>>2]=145;s=145;i=f;return s|0}c[g>>2]=0;k=a+360|0;c[k>>2]=oJ(m,20,0,n,0,e)|0;m=c[e>>2]|0;if((m|0)!=0){s=m;i=f;return s|0}m=MK(d,o)|0;c[e>>2]=m;if((m|0)!=0){s=m;i=f;return s|0}p=c[k>>2]|0;if((n|0)==0){h=p}else{m=a+356|0;do{s=ZK(d,272392,p)|0;c[e>>2]=s;a:do{if((s|0)==0){q=p+8|0;o=b[q>>1]|0;if(o<<16>>16==0){break}r=p+12|0;s=(c[m>>2]|0)+h+(c[r>>2]|0)|0;c[r>>2]=s;do{if(s>>>0>=j>>>0){if(((o&65535)+s|0)>>>0>l>>>0){break}p=p+20|0;break a}}while(0);c[r>>2]=0;b[q>>1]=0}}while(0);n=n+ -1|0;}while((n|0)!=0);h=c[k>>2]|0}c[g>>2]=(p-h|0)/20|0;PK(d);b[a+344>>1]=c[g>>2];s=c[e>>2]|0;i=f;return s|0}function SP(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=c[(c[a+96>>2]|0)+8>>2]|0;f=a+360|0;h=c[f>>2]|0;g=a+352|0;j=c[g>>2]|0;if((h|0)!=0){if((j|0)!=0){while(1){k=h+16|0;lJ(e,c[k>>2]|0);c[k>>2]=0;b[h+8>>1]=0;j=j+ -1|0;if((j|0)==0){break}else{h=h+20|0}}h=c[f>>2]|0}lJ(e,h);c[f>>2]=0}c[g>>2]=0;b[a+348>>1]=0;c[a+356>>2]=0;i=d;return}function TP(a,b){a=a|0;b=b|0;i=i;return 7}function UP(a){a=a|0;i=i;return}function VP(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;g=i;i=i+8|0;h=pd[c[b+508>>2]&63](b,1801810542,e,g)|0;if((h|0)!=0){q=h;i=f;return q|0}j=c[g>>2]|0;if(j>>>0<4){q=142;i=f;return q|0}h=b+772|0;e=LK(e,j,h)|0;if((e|0)!=0){q=e;i=f;return q|0}g=c[g>>2]|0;c[b+776>>2]=g;k=c[h>>2]|0;g=k+g|0;h=((d[k+2|0]|0)<<8&65535|(d[k+3|0]|0))&65535;j=h>>>0>32?32:h;a:do{if((j|0)==0){n=0;h=0;e=0}else{n=0;h=0;e=0;m=k+4|0;while(1){l=1<>>0>g>>>0){break a}k=(d[m+2|0]|0)<<8&65535|(d[m+3|0]|0);if((k&65535)<7){break a}k=m+(k&65535)|0;k=k>>>0>g>>>0?g:k;b:do{if((a[m+5|0]&247|(d[m+4|0]|0)<<8&65535)<<16>>16==1){o=m+14|0;if(o>>>0>g>>>0){break}p=((d[p]|0)<<8&65535|(d[m+7|0]|0))&65535;q=k-o|0;if((q|0)<(p*6|0)){p=(q|0)/6|0}n=l|n;if((p|0)==0){break}p=p+ -1|0;if((p|0)!=0){o=(d[m+15|0]|0)<<16|(d[o]|0)<<24|(d[m+16|0]|0)<<8|(d[m+17|0]|0);m=m+20|0;while(1){q=(d[m+1|0]|0)<<16|(d[m]|0)<<24|(d[m+2|0]|0)<<8|(d[m+3|0]|0);if(q>>>0<=o>>>0){break b}p=p+ -1|0;if((p|0)==0){break}else{m=m+6|0;o=q}}}e=l|e}}while(0);h=h+1|0;if(h>>>0>>0){m=k}else{break}}}}while(0);c[b+780>>2]=h;c[b+784>>2]=n;c[b+788>>2]=e;q=0;i=f;return q|0}function WP(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;f=i;i=i+8|0;j=c[d+28>>2]|0;h=pd[c[a+508>>2]&63](a,1734439792,d,0)|0;c[f>>2]=h;if((h|0)!=0){l=h;i=g;return l|0}h=MK(d,4)|0;c[f>>2]=h;if((h|0)!=0){l=h;i=g;return l|0}l=a+548|0;b[l>>1]=RK(d)|0;h=a+550|0;b[h>>1]=RK(d)|0;PK(d);if((e[l>>1]|0)>1){b[h>>1]=0;c[f>>2]=8;l=8;i=g;return l|0}k=b[h>>1]|0;h=k&65535;j=oJ(j,4,0,h,0,f)|0;l=c[f>>2]|0;if((l|0)!=0){i=g;return l|0}l=MK(d,h<<2)|0;c[f>>2]=l;if((l|0)!=0){i=g;return l|0}c[a+552>>2]=j;if(k<<16>>16!=0){a=0;do{b[j+(a<<2)>>1]=RK(d)|0;b[j+(a<<2)+2>>1]=RK(d)|0;a=a+1|0;}while(a>>>0>>0)}PK(d);l=c[f>>2]|0;i=g;return l|0}function XP(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=pd[c[a+508>>2]&63](a,1346587732,b,0)|0;if((e|0)!=0){a=e;i=d;return a|0}a=ZK(b,272304,a+556|0)|0;i=d;return a|0}function YP(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=pd[c[a+508>>2]&63](a,1651008868,b,0)|0;if((e|0)!=0){a=e;i=d;return a|0}a=ZK(b,272216,a+160|0)|0;i=d;return a|0}function ZP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;h=i;i=i+24|0;g=h;c[h>>2]=0;c[g+4>>2]=b;c[g+8>>2]=d;c[g+12>>2]=0;c[g+16>>2]=0;c[e>>2]=2147483647;b=WJ(a,g,0,e)|0;i=f;return b|0}function _P(a,b){a=a|0;b=b|0;i=i;return 7}function $P(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;j=c[a+616>>2]|0;do{if((j|0)!=0){if((c[a+612>>2]|0)>>>0<=d>>>0){break}j=j+(d*48|0)|0;if((qQ(b,j,e,g)|0)!=0){break}c[f>>2]=j;a=0;i=h;return a|0}}while(0);c[e>>2]=0;c[f>>2]=0;c[g>>2]=0;a=6;i=h;return a|0}function aQ(c,f,g){c=c|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;j=i;i=i+8|0;k=j;switch(e[f+6>>1]|0|0){case 8:case 2:case 1:{c=ZK(c,272184,k)|0;if((c|0)!=0){f=c;i=h;return f|0}a[g]=a[j]|0;a[g+1|0]=a[k+1|0]|0;a[g+2|0]=a[k+2|0]|0;a[g+3|0]=a[k+3|0]|0;a[g+4|0]=a[k+4|0]|0;a[g+5|0]=0;a[g+6|0]=0;a[g+7|0]=0;f=0;i=h;return f|0};case 9:case 7:case 6:{f=ZK(c,272096,g)|0;i=h;return f|0};default:{c=b[f+4>>1]|0;if(!(c<<16>>16==5|c<<16>>16==2)){f=3;i=h;return f|0}c=f+16|0;j=c;c=c+4|0;j=d[j]|d[j+1|0]<<8|d[j+2|0]<<16|d[j+3|0]<<24;c=d[c]|d[c+1|0]<<8|d[c+2|0]<<16|d[c+3|0]<<24;f=g;k=f;f=f+4|0;a[k]=j;a[k+1|0]=j>>8;a[k+2|0]=j>>16;a[k+3|0]=j>>24;a[f]=c;a[f+1|0]=c>>8;a[f+2|0]=c>>16;a[f+3|0]=c>>24;f=0;i=h;return f|0}}return 0}function bQ(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=i;q=i;i=i+8|0;r=q;p=i;i=i+8|0;s=p;n=c[b+616>>2]|0;do{if((n|0)!=0){if((c[b+612>>2]|0)>>>0<=e>>>0){break}o=n+(e*48|0)|0;if((qQ(f,o,s,r)|0)!=0){break}r=b+508|0;do{if((pd[c[r>>2]&63](b,1161970772,h,0)|0)!=0){r=pd[c[r>>2]&63](b,1650745716,h,0)|0;if((r|0)==0){break}i=l;return r|0}}while(0);u=IK(h)|0;o=pQ(o,c[p>>2]|0,u,c[q>>2]|0,c[b+84>>2]|0,0,0,h,k,0)|0;if((o|0)!=0){u=o;i=l;return u|0}if((a[n+(e*48|0)+47|0]&1)!=0){u=(a[n+(e*48|0)+16|0]|0)-(a[n+(e*48|0)+17|0]|0)|0;a[k+5|0]=(d[k+1|0]|0)/-2|0;a[k+6|0]=(u-(d[k]|0)|0)/2|0;a[k+7|0]=(u*12|0)/10|0}if((g&64|0)==0){u=0;i=l;return u|0}g=j+12|0;n=c[j>>2]|0;o=j+8|0;e=c[o>>2]|0;a:do{if((n|0)>0){b=c[g>>2]|0;if((e|0)>0){p=0;q=b}else{m=0;while(1){m=m+1|0;if((m|0)>=(n|0)){break a}}}b:while(1){h=q+e|0;while(1){r=q+1|0;if((a[q]|0)!=0){break b}if(r>>>0>>0){q=r}else{break}}p=p+1|0;if((p|0)<(n|0)){q=h}else{break a}}if((p|0)>0){n=n-p|0;aX(b|0,b+(da(p,e)|0)|0,da(n,e)|0)|0;a[k]=(d[k]|0)-p;u=k+3|0;a[u]=(d[u]|0)-p;u=k+6|0;a[u]=(d[u]|0)-p;c[j>>2]=(c[j>>2]|0)-p}do{if((n|0)>0){b=da(n+ -1|0,e)|0;o=0-e|0;q=0;b=(c[g>>2]|0)+b|0;c:while(1){p=b+e|0;r=b;while(1){h=r+1|0;if((a[r]|0)!=0){break c}if(h>>>0

>>0){r=h}else{break}}q=q+1|0;if((q|0)<(n|0)){b=b+o|0}else{break}}if((q|0)<=0){break}a[k]=(d[k]|0)-q;c[j>>2]=(c[j>>2]|0)-q;n=n-q|0}}while(0);n=da(n,e)|0;j=j+4|0;b=k+2|0;o=k+5|0;k=k+1|0;h=(n|0)>0;d:do{r=c[g>>2]|0;p=r+n|0;if(h){q=r;do{if((a[q]|0)<0){m=38;break d}q=q+e|0;}while(q>>>0

>>0);q=c[j>>2]|0;do{t=a[r]<<1&255;if((q|0)>8){s=r;u=8;while(1){f=s+1|0;v=a[f]|0;a[s]=(v&255)>>>7|t;u=u+8|0;t=v<<1&255;if((u|0)<(q|0)){s=f}else{break}}}else{f=r}a[f]=t;r=r+e|0;q=c[j>>2]|0}while(r>>>0

>>0)}else{q=c[j>>2]|0}c[j>>2]=q+ -1;a[b]=(a[b]|0)+1<<24>>24;a[o]=(a[o]|0)+1<<24>>24;a[k]=(a[k]|0)+ -1<<24>>24;p=c[j>>2]|0;}while((p|0)>0);if((m|0)==38){p=c[j>>2]|0}e:while(1){b=p+ -1|0;h=c[g>>2]|0;p=b>>3;v=p+n|0;m=h+v|0;if((p|0)<(v|0)){o=128>>>(b&7);h=h+p|0;do{if((d[h]&o|0)!=0){r=0;m=45;break e}h=h+e|0;}while(h>>>0>>0)}c[j>>2]=b;a[k]=(a[k]|0)+ -1<<24>>24;p=c[j>>2]|0;if((p|0)<=0){r=0;m=45;break}}if((m|0)==45){i=l;return r|0}}}while(0);c[j+4>>2]=0;c[j>>2]=0;c[o>>2]=0;a[j+18|0]=1;v=0;i=l;return v|0}}while(0);c[p>>2]=0;c[q>>2]=0;v=6;i=l;return v|0}function cQ(a){a=a|0;i=i;return}function dQ(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;g=c[d+100>>2]|0;f=d+628|0;if((a[f]|0)==0){m=f;a[m]=0;i=h;return}j=c[d+468>>2]|0;if((j|0)==131072){j=d+636|0;lJ(g,c[j>>2]|0);c[j>>2]=0;b[d+632>>1]=0;j=d+634|0;d=d+640|0;m=c[d>>2]|0;if((b[j>>1]|0)!=0){l=0;k=0;while(1){lJ(g,c[m+(l<<2)>>2]|0);c[(c[d>>2]|0)+(l<<2)>>2]=0;l=k+1<<16>>16;m=c[d>>2]|0;if((l&65535)<(e[j>>1]|0)){k=l;l=l&65535}else{break}}}lJ(g,m);c[d>>2]=0;b[j>>1]=0;m=f;a[m]=0;i=h;return}else if((j|0)==163840){m=d+636|0;lJ(g,c[m>>2]|0);c[m>>2]=0;b[d+632>>1]=0;m=f;a[m]=0;i=h;return}else{m=f;a[m]=0;i=h;return}}function eQ(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 7}function fQ(a,b){a=a|0;b=b|0;i=i;return 0}function gQ(a,b,e){a=a|0;b=b|0;e=e|0;var 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;f=i;k=c[a+772>>2]|0;g=k+(c[a+776>>2]|0)|0;j=c[a+780>>2]|0;if((j|0)==0){s=0;i=f;return s|0}h=a+784|0;b=b<<16|e;a=a+788|0;e=1;n=k+4|0;m=0;while(1){o=n+6|0;if(o>>>0>g>>>0){g=20;break}l=((d[n+4|0]|0)<<8&65535|(d[n+5|0]|0))&65535;k=n+(((d[n+2|0]|0)<<8&65535|(d[n+3|0]|0))&65535)|0;k=k>>>0>g>>>0?g:k;a:do{if((c[h>>2]&e|0)!=0){p=n+14|0;if(p>>>0>k>>>0){break}o=((d[o]|0)<<8&65535|(d[n+7|0]|0))&65535;q=k-p|0;if((q|0)<(o*6|0)){o=(q|0)/6|0}if((l&65280|0)!=0){break}q=(o|0)==0;if((c[a>>2]&e|0)==0){if(q){break}while(1){if(((d[p+1|0]|0)<<16|(d[p]|0)<<24|(d[p+2|0]|0)<<8|(d[p+3|0]|0)|0)==(b|0)){break}o=o+ -1|0;if((o|0)==0){break a}else{p=p+6|0}}n=(d[p+4|0]|0)<<8&65535|(d[p+5|0]|0)}else{if(q){break}else{q=0}while(1){p=(o+q|0)>>>1;r=p*6|0;s=(d[n+(r+15)|0]|0)<<16|(d[n+(r+14)|0]|0)<<24|(d[n+(r+16)|0]|0)<<8|(d[n+(r+17)|0]|0);if((s|0)==(b|0)){break}r=s>>>0>>0;q=r?p+1|0:q;o=r?o:p;if(q>>>0>=o>>>0){break a}}n=(d[n+(r+18)|0]|0)<<8&65535|(d[n+(r+19)|0]|0)}m=(n<<16>>16)+((l&8|0)==0?m:0)|0}}while(0);j=j+ -1|0;if((j|0)==0){g=20;break}else{e=e<<1;n=k}}if((g|0)==20){i=f;return m|0}return 0}function hQ(a,d){a=a|0;d=d|0;var 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,A=0,B=0,C=0,D=0,E=0;g=i;o=i;i=i+8|0;s=o;r=i;i=i+16|0;q=r;n=i;i=i+16|0;h=n;f=i;i=i+8|0;l=f;m=c[d+28>>2]|0;k=h+12|0;c[k>>2]=IK(d)|0;c[n>>2]=GK(d,l)|0;j=c[f>>2]|0;if((j|0)!=0){E=j;i=g;return E|0}j=ZK(d,272136,h)|0;c[f>>2]=j;if((j|0)!=0){E=j;i=g;return E|0}t=c[k>>2]|0;C=PJ(d,t+12|0)|0;c[o>>2]=C;a:do{if((C|0)==0){h=h+4|0;do{if((b[h>>1]|0)==0){b[h>>1]=0}else{w=q+8|0;v=q+12|0;j=d+4|0;x=t+28|0;y=0;B=0;u=0;t=0;z=0;A=0;b:while(1){E=ZK(d,272160,q)|0;c[o>>2]=E;if((E|0)!=0){p=8;break}D=c[w>>2]|0;E=c[v>>2]|0;do{if((E+D|0)>>>0<=(c[j>>2]|0)>>>0){A=A+1<<16>>16;C=c[r>>2]|0;if((C|0)==1397313095){t=1;break}else if(!((C|0)==1651008868|(C|0)==1751474532)){u=(C|0)==1296389185?1:u;break}if(E>>>0<54){p=12;break b}C=PJ(d,D+12|0)|0;c[o>>2]=C;if((C|0)!=0){break a}B=GK(d,s)|0;C=c[o>>2]|0;if((C|0)!=0){break a}if((B|0)!=1594834165){p=16;break b}C=PJ(d,x+(y<<4)|0)|0;c[o>>2]=C;if((C|0)==0){B=1}else{break a}}}while(0);z=z+1<<16>>16;if((z&65535)<(e[h>>1]|0)){y=z&65535}else{break}}if((p|0)==8){b[h>>1]=z+ -1<<16>>16}else if((p|0)==12){c[o>>2]=142;C=142;break a}else if((p|0)==16){c[o>>2]=142;C=142;break a}b[h>>1]=A;if(A<<16>>16==0){break}do{if((B|0)==0){if(!((t|0)==0|(u|0)==0)){break}c[o>>2]=142;C=142;break a}}while(0);c[f>>2]=0;o=a+152|0;b[o>>1]=A;c[a+148>>2]=c[n>>2];n=a+156|0;c[n>>2]=oJ(m,16,0,A&65535,0,l)|0;l=c[f>>2]|0;if((l|0)!=0){E=l;i=g;return E|0}k=PJ(d,(c[k>>2]|0)+12|0)|0;c[f>>2]=k;if((k|0)!=0){E=k;i=g;return E|0}k=MK(d,e[o>>1]<<4)|0;c[f>>2]=k;if((k|0)!=0){E=k;i=g;return E|0}if((b[h>>1]|0)!=0){m=c[n>>2]|0;n=0;while(1){c[m>>2]=TK(d)|0;c[m+4>>2]=TK(d)|0;k=m+8|0;c[k>>2]=TK(d)|0;l=TK(d)|0;c[m+12>>2]=l;n=n+1|0;if((n|0)<(e[h>>1]|0)){m=((c[k>>2]|0)+l|0)>>>0>(c[j>>2]|0)>>>0?m:m+16|0}else{break}}}PK(d);E=c[f>>2]|0;i=g;return E|0}}while(0);c[o>>2]=2;C=2}}while(0);c[f>>2]=C;E=C;i=g;return E|0}function iQ(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;j=i;i=i+8|0;o=j;q=i;i=i+8|0;k=q;p=c[f+28>>2]|0;g=g<<24>>24!=0;l=c[a+508>>2]|0;do{if(g){r=pd[l&63](a,1986884728,f,k)|0;c[j>>2]=r;if((r|0)==0){r=a+334|0;k=e[r>>1]|0;m=c[q>>2]|0;l=m>>>2;b[r>>1]=0;r=a+336|0;k=k>>>0>l>>>0?l:k;l=a+340|0;break}else{r=j;r=c[r>>2]|0;i=h;return r|0}}else{r=pd[l&63](a,1752003704,f,k)|0;c[j>>2]=r;if((r|0)==0){r=a+250|0;l=e[r>>1]|0;m=c[q>>2]|0;k=m>>>2;b[r>>1]=0;r=a+252|0;k=l>>>0>k>>>0?k:l;l=a+256|0;break}else{r=j;r=c[r>>2]|0;i=h;return r|0}}}while(0);n=(e[a+264>>1]|0)-k|0;m=(m-(k<<2)|0)>>>1;n=(n|0)<0?0:n;c[r>>2]=oJ(p,4,0,k,0,o)|0;if((c[j>>2]|0)!=0){r=j;r=c[r>>2]|0;i=h;return r|0}c[l>>2]=oJ(p,2,0,n,0,o)|0;if((c[j>>2]|0)!=0){r=j;r=c[r>>2]|0;i=h;return r|0}q=MK(f,c[q>>2]|0)|0;c[j>>2]=q;if((q|0)!=0){r=j;r=c[r>>2]|0;i=h;return r|0}p=c[f+32>>2]|0;q=c[r>>2]|0;o=q+(k<<2)|0;if(q>>>0>>0){while(1){b[q>>1]=(d[p]|0)<<8&65535|(d[p+1|0]|0);r=p+4|0;b[q+2>>1]=(d[p+2|0]|0)<<8&65535|(d[p+3|0]|0);q=q+4|0;if(q>>>0>>0){p=r}else{p=r;break}}}q=c[l>>2]|0;o=q+(((n|0)<(m|0)?n:m)<<1)|0;if(q>>>0>>0){while(1){b[q>>1]=(d[p]|0)<<8&65535|(d[p+1|0]|0);q=q+2|0;if(q>>>0>>0){p=p+2|0}else{break}}}do{if((n|0)>(m|0)&(m|0)!=0){r=c[l>>2]|0;l=b[r+(m+ -1<<1)>>1]|0;m=r+(n<<1)|0;if(q>>>0>=m>>>0){break}do{b[q>>1]=l;q=q+2|0;}while(q>>>0>>0)}}while(0);PK(f);f=k&65535;if(g){b[a+334>>1]=f;r=j;r=c[r>>2]|0;i=h;return r|0}else{b[a+250>>1]=f;r=j;r=c[r>>2]|0;i=h;return r|0}return 0}function jQ(a,d){a=a|0;d=d|0;var 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,A=0,B=0;e=i;l=i;i=i+8|0;k=l;p=i;i=i+8|0;h=p;o=i;i=i+8|0;j=o;g=i;i=i+8|0;q=g;c[g>>2]=0;m=d+28|0;n=c[m>>2]|0;t=a+612|0;c[t>>2]=0;r=a+508|0;B=pd[c[r>>2]&63](a,1161972803,d,0)|0;c[g>>2]=B;do{if((B|0)!=0){v=pd[c[r>>2]&63](a,1651273571,d,0)|0;c[g>>2]=v;if((v|0)==0){break}i=e;return v|0}}while(0);r=IK(d)|0;s=MK(d,8)|0;c[g>>2]=s;if((s|0)!=0){B=s;i=e;return B|0}B=TK(d)|0;s=TK(d)|0;PK(d);if((B|0)!=131072|s>>>0>65535){c[g>>2]=3;B=3;i=e;return B|0}u=oJ(n,48,0,s,0,q)|0;a=a+616|0;c[a>>2]=u;v=c[g>>2]|0;if((v|0)!=0){B=v;i=e;return B|0}c[t>>2]=s;t=MK(d,s*48|0)|0;c[g>>2]=t;if((t|0)!=0){B=t;i=e;return B|0}t=(s|0)==0;a:do{if(t){PK(d)}else{v=s;while(1){B=ZK(d,272040,u)|0;c[g>>2]=B;if((B|0)!=0){break}B=ZK(d,271984,u+16|0)|0;c[g>>2]=B;if((B|0)!=0){break}B=ZK(d,271984,u+28|0)|0;c[g>>2]=B;if((B|0)!=0){break}B=ZK(d,272064,u)|0;c[g>>2]=B;if((B|0)!=0){break}v=v+ -1|0;if((v|0)==0){break}else{u=u+48|0}}PK(d);if(t){break}a=c[a>>2]|0;b:while(1){v=c[a>>2]|0;u=a+8|0;B=PJ(d,(c[u>>2]|0)+r|0)|0;c[g>>2]=B;if((B|0)!=0){break a}B=MK(d,c[a>>2]<<3)|0;c[g>>2]=B;if((B|0)!=0){break a}w=oJ(n,40,0,c[a>>2]|0,0,q)|0;t=a+4|0;c[t>>2]=w;if((c[g>>2]|0)!=0){break a}if((v|0)!=0){while(1){b[w>>1]=RK(d)|0;b[w+2>>1]=RK(d)|0;B=(c[u>>2]|0)+r|0;c[w+36>>2]=B+(TK(d)|0);v=v+ -1|0;if((v|0)==0){break}else{w=w+40|0}}}PK(d);u=c[a>>2]|0;c:do{if((u|0)!=0){t=c[t>>2]|0;while(1){v=PJ(d,c[t+36>>2]|0)|0;c[g>>2]=v;if((v|0)!=0){f=51;break b}v=MK(d,8)|0;c[g>>2]=v;if((v|0)!=0){f=51;break b}w=t+4|0;b[w>>1]=RK(d)|0;b[t+6>>1]=RK(d)|0;v=t+8|0;c[v>>2]=TK(d)|0;PK(d);z=c[m>>2]|0;w=b[w>>1]|0;d:do{switch(w&65535|0){case 4:{v=oQ(t,d,1)|0;c[o>>2]=v;break};case 2:{c[t+12>>2]=GK(d,h)|0;v=c[p>>2]|0;if((v|0)==0){v=ZK(d,272096,t+16|0)|0;c[p>>2]=v;v=(v|0)!=0|0}c[o>>2]=v;break};case 3:case 1:{y=b[t+2>>1]|0;x=b[t>>1]|0;if((y&65535)<(x&65535)){f=28;break b}w=w<<16>>16==1;x=(y&65535)-(x&65535)|0;c[t+24>>2]=x+1;x=x+2|0;y=t+28|0;c[y>>2]=oJ(z,4,0,x,0,j)|0;z=c[o>>2]|0;if((z|0)!=0){break b}z=MK(d,da(x,w?4:2)|0)|0;c[o>>2]=z;if((z|0)!=0){break b}if((x|0)!=0){A=0;do{B=c[v>>2]|0;if(w){z=TK(d)|0}else{z=(RK(d)|0)&65535}c[(c[y>>2]|0)+(A<<2)>>2]=z+B;A=A+1|0;}while(A>>>0>>0)}PK(d);v=c[o>>2]|0;break};case 5:{c[t+12>>2]=GK(d,k)|0;z=c[l>>2]|0;if((z|0)!=0){f=42;break b}B=(ZK(d,272096,t+16|0)|0)!=0;v=B&1;c[o>>2]=v;if(B){break d}v=oQ(t,d,0)|0;c[o>>2]=v;break};default:{f=45;break b}}}while(0);c[g>>2]=v;if((v|0)!=0){f=51;break b}u=u+ -1|0;if((u|0)==0){break c}else{t=t+40|0}}}}while(0);s=s+ -1|0;if((s|0)==0){break a}else{a=a+48|0}}if((f|0)==28){c[o>>2]=3;z=3}else if((f|0)==42){c[o>>2]=z}else if((f|0)==45){c[o>>2]=3;z=3}else if((f|0)==51){i=e;return v|0}c[g>>2]=z;B=z;i=e;return B|0}}while(0);B=c[g>>2]|0;i=e;return B|0}function kQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;d=c[a+100>>2]|0;b=a+616|0;g=c[b>>2]|0;a=a+612|0;h=c[a>>2]|0;f=g+(h*48|0)|0;if((g|0)==0){l=a;c[l>>2]=0;i=e;return}if((h|0)>0){do{h=g+4|0;l=c[h>>2]|0;k=c[g>>2]|0;j=l+(k*40|0)|0;do{if((l|0)==0){l=0}else{if((k|0)<=0){break}do{k=l+28|0;lJ(d,c[k>>2]|0);c[k>>2]=0;k=l+32|0;lJ(d,c[k>>2]|0);c[k>>2]=0;l=l+40|0;}while(l>>>0>>0);l=c[h>>2]|0}}while(0);lJ(d,l);c[h>>2]=0;c[g>>2]=0;g=g+48|0;}while(g>>>0>>0);g=c[b>>2]|0}lJ(d,g);c[b>>2]=0;l=a;c[l>>2]=0;i=e;return}function lQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;a=WJ(a,b,0,c)|0;i=d;return a|0}function mQ(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;if((c[e+612>>2]|0)>>>0<=f>>>0){g=6;i=h;return g|0}k=c[e+616>>2]|0;b[g>>1]=d[k+(f*48|0)+44|0]|0;b[g+2>>1]=d[k+(f*48|0)+45|0]|0;j=a[k+(f*48|0)+16|0]<<6;c[g+12>>2]=j;e=a[k+(f*48|0)+17|0]<<6;c[g+16>>2]=e;c[g+24>>2]=(d[k+(f*48|0)+18|0]|0)+(a[k+(f*48|0)+22|0]|0)+(a[k+(f*48|0)+23|0]|0)<<6;c[g+20>>2]=j-e;g=0;i=h;return g|0}function nQ(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;d=d<<24>>24!=0?a+300|0:a+216|0;m=b[d+34>>1]|0;k=m&65535;do{if(m<<16>>16!=0){m=d+36|0;l=c[m>>2]|0;if((l|0)==0){break}if((e[a+264>>1]|0)>>>0<=f>>>0){break}if(k>>>0>f>>>0){b[g>>1]=b[l+(f<<2)+2>>1]|0;g=l+(f<<2)|0}else{b[g>>1]=b[(c[d+40>>2]|0)+(f-k<<1)>>1]|0;g=(c[m>>2]|0)+(k+ -1<<2)|0}b[h>>1]=b[g>>1]|0;i=j;return 0}}while(0);b[h>>1]=0;b[g>>1]=0;i=j;return 0}function oQ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;g=i;i=i+8|0;k=g;l=c[d+28>>2]|0;h=GK(d,k)|0;j=c[g>>2]|0;if((j|0)!=0){m=j;i=f;return m|0}c[a+24>>2]=h;j=e<<24>>24!=0;do{if(j){c[a+28>>2]=oJ(l,4,0,h,0,k)|0;e=c[g>>2]|0;if((e|0)==0){m=h<<2;break}else{m=e;i=f;return m|0}}else{m=h<<1}}while(0);e=a+32|0;c[e>>2]=oJ(l,2,0,h,0,k)|0;k=c[g>>2]|0;if((k|0)!=0){m=k;i=f;return m|0}k=MK(d,m)|0;c[g>>2]=k;if((k|0)!=0){m=k;i=f;return m|0}if((h|0)!=0){k=a+8|0;a=a+28|0;l=0;do{m=RK(d)|0;b[(c[e>>2]|0)+(l<<1)>>1]=m;if(j){m=c[k>>2]|0;m=((RK(d)|0)&65535)+m|0;c[(c[a>>2]|0)+(l<<2)>>2]=m}l=l+1|0;}while(l>>>0>>0)}PK(d);m=c[g>>2]|0;i=f;return m|0}function pQ(f,g,h,j,k,l,m,n,o,p){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var 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;q=i;C=i;i=i+8|0;B=C;r=i;i=i+8|0;z=r;x=i;i=i+8|0;v=x;t=i;i=i+8|0;u=i;i=i+8|0;w=u;s=c[n+28>>2]|0;y=k+76|0;j=PJ(n,j+h|0)|0;c[r>>2]=j;if((j|0)!=0){g=j;i=q;return g|0}j=g+6|0;a:do{switch(e[j>>1]|0){case 8:case 2:case 1:{A=ZK(n,272184,B)|0;if((A|0)!=0){n=A;A=8;break a}a[o]=a[C]|0;a[o+1|0]=a[B+1|0]|0;a[o+2|0]=a[B+2|0]|0;a[o+3|0]=a[B+3|0]|0;a[o+4|0]=a[B+4|0]|0;a[o+5|0]=0;a[o+6|0]=0;a[o+7|0]=0;A=7;break};case 9:case 7:case 6:{B=ZK(n,272096,o)|0;c[r>>2]=B;if((B|0)==0){break a}i=q;return B|0};default:{C=b[g+4>>1]|0;if(!(C<<16>>16==5|C<<16>>16==2)){n=3;A=8;break a}g=g+16|0;B=g;g=g+4|0;B=d[B]|d[B+1|0]<<8|d[B+2|0]<<16|d[B+3|0]<<24;g=d[g]|d[g+1|0]<<8|d[g+2|0]<<16|d[g+3|0]<<24;A=o;C=A;A=A+4|0;a[C]=B;a[C+1|0]=B>>8;a[C+2|0]=B>>16;a[C+3|0]=B>>24;a[A]=g;a[A+1|0]=g>>8;a[A+2|0]=g>>16;a[A+3|0]=g>>24;A=7}}}while(0);if((A|0)==7){c[r>>2]=0}else if((A|0)==8){c[r>>2]=n;g=n;i=q;return g|0}do{if((p|0)==0){B=d[o+1|0]|0;c[k+80>>2]=B;A=d[o]|0;c[y>>2]=A;C=d[f+46|0]|0;if((C|0)==4){a[k+94|0]=4;B=(B+1|0)>>>1;c[k+84>>2]=B}else if((C|0)==2){a[k+94|0]=3;B=(B+3|0)>>>2;c[k+84>>2]=B}else if((C|0)==1){a[k+94|0]=1;B=(B+7|0)>>>3;c[k+84>>2]=B}else if((C|0)==8){a[k+94|0]=2;c[k+84>>2]=B}else{g=3;i=q;return g|0}A=da(B,A)|0;if((A|0)==0){g=0;i=q;return g|0}B=CJ(k,A)|0;c[r>>2]=B;if((B|0)==0){break}i=q;return B|0}}while(0);j=e[j>>1]|0;b:do{switch(j|0){case 8:{g=DK(n,1)|0;c[r>>2]=g;if((g|0)==0){break b}c[r>>2]=83;g=83;i=q;return g|0};case 7:case 6:case 5:case 2:case 1:{s=d[f+46|0]|0;if((l|0)<0){g=6;i=q;return g|0}f=d[o+1|0]|0;if((f+l|0)>(c[k+80>>2]|0)|(m|0)<0){g=6;i=q;return g|0}t=d[o]|0;if((t+m|0)>(c[y>>2]|0)){g=6;i=q;return g|0}r=da(f,s)|0;switch(j|0){case 6:case 1:{if((s|0)==1){f=(f+7|0)>>>3}else if((s|0)==2){f=(f+3|0)>>>2}else if((s|0)==4){f=(f+1|0)>>>1}t=da(f,t)|0;h=1;break};case 7:case 5:case 2:{t=((da(t,r)|0)+7|0)>>>3;h=0;break};default:{g=3;i=q;return g|0}}t=MK(n,t)|0;if((t|0)!=0){g=t;i=q;return g|0}s=da(s,l)|0;v=a[o]|0;l=c[k+84>>2]|0;x=c[k+88>>2]|0;if((l|0)<0){x=x+(da((c[y>>2]|0)+ -1|0,0-l|0)|0)|0}if(v<<24>>24!=0){z=da(l,m)|0;p=s>>3;m=s&7;f=m&255;t=r>>>0>7;s=r+ -8|0;k=m<<24>>24==0;m=8-m<<24>>24&255;u=h<<24>>24==0;g=(15-r|0)>0?0:s>>>3;h=s-(g<<3)|0;o=c[n+32>>2]|0;y=0;w=v&255;v=x+(p+1+g+z)|0;x=x+(z+p)|0;p=0;while(1){if(t){z=o;A=y;y=s;j=x;while(1){if(p>>>0<8){o=z+1|0;A=(d[z]<<8-p|A&65535)&65535;p=p+8|0}else{o=z}z=(A&65535)>>>8&65535;if(k){a[j]=d[j]|z;j=j+1|0}else{a[j]=d[j]|z>>>f;j=j+1|0;a[j]=d[j]|z<-1){z=o}else{y=h;z=v;break}}}else{A=y;y=r;z=x}if((y|0)>0){if((p|0)<(y|0)){j=o+1|0;A=(d[o]<<8-p|A&65535)&65535;p=p+8|0}else{j=o}o=(A&65535)>>>8&65535&(255>>>y^255);a[z]=o>>>f|d[z];if((y|0)>(m|0)){g=z+1|0;a[g]=d[g]|o<0){y=u?A:0;v=v+l|0;x=x+l|0;p=u?p:0}else{break}}}PK(n);g=0;i=q;return g|0};case 9:{break};default:{g=3;i=q;return g|0}}}while(0);y=EK(n,z)|0;o=c[r>>2]|0;if((o|0)!=0){g=o;i=q;return g|0}j=y&65535;o=oJ(s,4,0,j,0,z)|0;z=c[r>>2]|0;if((z|0)!=0){g=z;i=q;return g|0}g=MK(n,j<<2)|0;c[r>>2]=g;c:do{if((g|0)==0){j=y<<16>>16==0;if(j){PK(n);break}else{z=o;A=y}while(1){b[z>>1]=RK(n)|0;a[z+2|0]=QK(n)|0;a[z+3|0]=QK(n)|0;A=A+ -1<<16>>16;if(A<<16>>16==0){break}else{z=z+4|0}}PK(n);if(j){break}z=p+1|0;p=o;while(1){g=qQ(e[p>>1]|0,f,v,w)|0;c[r>>2]=g;if((g|0)!=0){break c}g=pQ(f,c[x>>2]|0,h,c[u>>2]|0,k,(a[p+2|0]|0)+l|0,(a[p+3|0]|0)+m|0,n,t,z)|0;c[r>>2]=g;if((g|0)!=0){break c}y=y+ -1<<16>>16;if(y<<16>>16==0){break}else{p=p+4|0}}}}while(0);lJ(s,o);g=c[r>>2]|0;i=q;return g|0}function qQ(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;a:do{if((e[d+40>>1]|0)>>>0<=a>>>0){if((e[d+42>>1]|0)>>>0>>0){break}j=c[d+4>>2]|0;n=c[d>>2]|0;d=j+(n*40|0)|0;if(!((j|0)!=0&(n|0)>0)){break}while(1){k=e[j>>1]|0;if(k>>>0<=a>>>0){if((e[j+2>>1]|0)>>>0>=a>>>0){break}}j=j+40|0;if(j>>>0>=d>>>0){break a}}k=a-k|0;d=b[j+4>>1]|0;b:do{switch(d&65535|0){case 5:case 4:{k=c[j+24>>2]|0;if((k|0)==0){break a}m=c[j+32>>2]|0;n=0;while(1){l=n+1|0;if((e[m+(n<<1)>>1]|0|0)==(a|0)){break}if(l>>>0>>0){n=l}else{break a}}if(d<<16>>16==4){c[g>>2]=c[(c[j+28>>2]|0)+(n<<2)>>2];break b}else{c[g>>2]=(da(c[j+12>>2]|0,n)|0)+(c[j+8>>2]|0);break b}break};case 3:case 1:{c[g>>2]=c[(c[j+28>>2]|0)+((k&65535)<<2)>>2];break};case 2:{c[g>>2]=(da(c[j+12>>2]|0,k&65535)|0)+(c[j+8>>2]|0);break};default:{break a}}}while(0);c[f>>2]=j;n=0;i=h;return n|0}}while(0);c[f>>2]=0;c[g>>2]=0;n=6;i=h;return n|0}function rQ(a,d,f){a=a|0;d=d|0;f=f|0;var 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;g=i;h=i;i=i+8|0;k=h;j=c[a+100>>2]|0;c[h>>2]=0;m=a+360|0;p=b[a+344>>1]|0;if(p<<16>>16==0){v=0;w=f;c[w>>2]=v;w=h;w=c[w>>2]|0;i=g;return w|0}q=0;u=-1;v=-1;r=-1;n=-1;s=0;t=0;o=c[m>>2]|0;while(1){do{if((b[o+6>>1]|0)==d<<16>>16){if((b[o+8>>1]|0)==0){break}w=e[o>>1]|0;if((w|0)==1){if((b[o+4>>1]|0)==0){u=q;break}v=(b[o+2>>1]|0)==0?q:v;break}else if((w|0)==3){if((n|0)!=-1){if((b[o+4>>1]&1023)!=9){break}}w=e[o+2>>1]|0;if(!((w|0)==10|(w|0)==1|(w|0)==0)){break}n=q;s=(b[o+4>>1]&1023)==9|0;break}else if((w|0)==2|(w|0)==0){r=q;break}else{break}}}while(0);t=t+1<<16>>16;if((t&65535)<(p&65535)){q=t&65535;o=o+20|0}else{break}}o=(u|0)>-1?u:v;do{if((n|0)>-1){if((o|0)>-1&s<<24>>24==0){l=17;break}m=c[m>>2]|0;w=e[m+(n*20|0)+2>>1]|0;if((w|0)==10|(w|0)==0|(w|0)==1){d=195;m=m+(n*20|0)|0;break}else{j=0}w=f;c[w>>2]=j;w=h;w=c[w>>2]|0;i=g;return w|0}else{l=17}}while(0);do{if((l|0)==17){if((o|0)>-1){d=196;m=(c[m>>2]|0)+(o*20|0)|0;break}if((r|0)>-1){d=195;m=(c[m>>2]|0)+(r*20|0)|0;break}else{v=0;w=f;c[w>>2]=v;w=h;w=c[w>>2]|0;i=g;return w|0}}}while(0);if((m|0)==0){v=0;w=f;c[w>>2]=v;w=h;w=c[w>>2]|0;i=g;return w|0}l=m+16|0;a:do{if((c[l>>2]|0)==0){n=c[a+364>>2]|0;a=m+8|0;c[l>>2]=oJ(j,1,0,e[a>>1]|0,0,k)|0;do{if((c[h>>2]|0)==0){w=PJ(n,c[m+12>>2]|0)|0;c[h>>2]=w;if((w|0)!=0){break}w=CK(n,c[l>>2]|0,e[a>>1]|0)|0;c[h>>2]=w;if((w|0)==0){break a}}}while(0);lJ(j,c[l>>2]|0);c[l>>2]=0;b[a>>1]=0;v=0;w=f;c[w>>2]=v;w=h;w=c[w>>2]|0;i=g;return w|0}}while(0);v=Bd[d&255](m,j)|0;w=f;c[w>>2]=v;w=h;w=c[w>>2]|0;i=g;return w|0}function sQ(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=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;f=i;k=i;i=i+168|0;c[k>>2]=0;o=i;i=i+16|0;h=o;g=i;i=i+176|0;p=i;i=i+8|0;j=p;m=c[a+500>>2]|0;n=a+504|0;l=m+(c[n>>2]|0)|0;q=m;if((q|0)==0){i=f;return}if((q+4|0)>>>0>l>>>0){i=f;return}G=q+2|0;q=G;if((d[G+ -1|0]|0|(d[G+ -2|0]|0)<<8&65535)<<16>>16!=0){i=f;return}q=q+2|0;u=(d[q+ -1|0]|0|(d[q+ -2|0]|0)<<8&65535)&65535;if((u|0)==0){i=f;return}z=h+8|0;A=h+10|0;r=h+4|0;w=a+264|0;x=g+172|0;y=g+16|0;v=g+12|0;while(1){if((q+8|0)>>>0>l>>>0){a=24;break}q=q+2|0;b[z>>1]=d[q+ -1|0]|0|(d[q+ -2|0]|0)<<8&65535;q=q+2|0;b[A>>1]=d[q+ -1|0]|0|(d[q+ -2|0]|0)<<8&65535;c[o>>2]=a;c[r>>2]=0;q=q+4|0;B=(d[q+ -3|0]|0)<<16|(d[q+ -4|0]|0)<<24|(d[q+ -2|0]|0)<<8|(d[q+ -1|0]|0);do{if((B|0)!=0){if(B>>>0>((c[n>>2]|0)+ -2|0)>>>0){break}B=m+B|0;E=(d[B+1|0]|0|(d[B]|0)<<8&65535)&65535;D=272992;a:do{if((c[D>>2]|0)!=0){while(1){C=c[D>>2]|0;if((c[C+40>>2]|0)==(E|0)){break}D=D+4|0;if((c[D>>2]|0)==0){break a}}D=0;s=0;Pa(35,g|0,B|0,l|0,0);F=s;s=0;if((F|0)!=0&(t|0)!=0){E=kX(c[F>>2]|0,k)|0;if((E|0)==0){_a(F|0,t|0)}H=t}else{E=-1}if((E|0)==1){E=H}else{c[x>>2]=e[w>>1]|0;YW(y,1,k|0)|0;E=0}while(1){if((E|0)==0){s=0;G=Ha(c[C+44>>2]|0,B|0,g|0)|0;F=s;s=0;if((F|0)!=0&(t|0)!=0){E=kX(c[F>>2]|0,k)|0;if((E|0)==0){_a(F|0,t|0)}H=t}else{E=-1}if((E|0)==1){E=H;continue}D=G}if((c[v>>2]|0)!=0){break a}s=0;G=va(42,C|0,B|0,h|0,j|0)|0;F=s;s=0;if((F|0)!=0&(t|0)!=0){E=kX(c[F>>2]|0,k)|0;if((E|0)==0){_a(F|0,t|0)}H=t}else{E=-1}if((E|0)==1){E=H}else{break}}if((G|0)!=0){break}c[(c[p>>2]|0)+20>>2]=D}}while(0);}}while(0);u=u+ -1|0;if((u|0)==0){a=24;break}}if((a|0)==24){i=f;return}}function tQ(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;k=i;i=i+8|0;h=c[b+16>>2]|0;b=(e[b+8>>1]|0)>>>1;f=oJ(f,1,0,b+1|0,0,k)|0;if((c[k>>2]|0)!=0){k=0;i=g;return k|0}if((b|0)!=0){j=0;while(1){k=a[h+1|0]|0;a[f+j|0]=(((d[h]|0)<<8&65535|k&255)+ -32<<16>>16&65535)>95?63:k;j=j+1|0;if(j>>>0>>0){h=h+2|0}else{break}}}a[f+b|0]=0;k=f;i=g;return k|0}function uQ(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;j=i;i=i+8|0;g=c[d+16>>2]|0;h=b[d+8>>1]|0;d=h&65535;e=oJ(e,1,0,d+1|0,0,j)|0;if((c[j>>2]|0)!=0){j=0;i=f;return j|0}if(h<<16>>16!=0){h=0;while(1){j=a[g]|0;a[e+h|0]=(j&255)<32|j<<24>>24<0?63:j;h=h+1|0;if(h>>>0>>0){g=g+1|0}else{break}}}a[e+d|0]=0;j=e;i=f;return j|0}function vQ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;k=i;i=i+8|0;j=k;g=(d[b+1|0]|0)<<16|(d[b]|0)<<24|(d[b+2|0]|0)<<8|(d[b+3|0]|0);h=(g|0)==0;if(h){n=1}else{l=b+7|0;n=g;m=0;while(1){m=m+1+(d[l]|0)|0;n=n+ -1|0;if((n|0)==0){break}else{l=l+4|0}}n=m+1|0}l=a+28|0;m=c[l>>2]|0;c[k>>2]=0;do{if(m>>>0>>0){c[a+36>>2]=e;a=a+32|0;c[a>>2]=oJ(e,4,m,n,c[a>>2]|0,j)|0;if((c[k>>2]|0)==0){c[l>>2]=n;break}else{n=0;i=f;return n|0}}else{a=a+32|0}}while(0);k=c[a>>2]|0;if(!h){while(1){h=b+4|0;j=d[b+7|0]|0;l=j+1|0;e=k;b=(d[b+5|0]|0)<<8|(d[h]|0)<<16|(d[b+6|0]|0);while(1){c[e>>2]=b;l=l+ -1|0;if((l|0)==0){break}else{b=b+1|0;e=e+4|0}}k=k+(j+1<<2)|0;g=g+ -1|0;if((g|0)==0){break}else{b=h}}}c[k>>2]=0;n=c[a>>2]|0;i=f;return n|0}function wQ(a,b){a=a|0;b=b|0;var c=0,e=0,f=0,g=0,h=0,j=0,k=0;c=i;e=(d[a+1|0]|0)<<16|(d[a]|0)<<24|(d[a+2|0]|0)<<8|(d[a+3|0]|0);if((e|0)==0){k=0;i=c;return k|0}else{j=0}a:while(1){while(1){k=(j+e|0)>>>1;g=k*5|0;f=g+7|0;h=(d[a+(g+5)|0]|0)<<8|(d[a+(g+4)|0]|0)<<16|(d[a+(g+6)|0]|0);if(h>>>0>b>>>0){break}j=k+1|0;if(h>>>0>=b>>>0){b=7;break a}if(j>>>0>=e>>>0){a=0;b=8;break a}}if(j>>>0>>0){e=k}else{a=0;b=8;break}}if((b|0)==7){k=((d[a+f|0]|0)<<8&65535|(d[a+(g+8)|0]|0))&65535;i=c;return k|0}else if((b|0)==8){i=c;return a|0}return 0}function xQ(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;e=b+28|0;k=c[e>>2]|0;a:do{if((k|0)!=-1){f=b+36|0;l=c[f>>2]|0;g=c[b+40>>2]|0;if(l>>>0>=g>>>0){break}j=c[b+16>>2]|0;n=k+1|0;while(1){m=l*12|0;o=(d[j+(m+17)|0]|0)<<16|(d[j+(m+16)|0]|0)<<24|(d[j+(m+18)|0]|0)<<8|(d[j+(m+19)|0]|0);k=(d[j+(m+25)|0]|0)<<16|(d[j+(m+24)|0]|0)<<24|(d[j+(m+26)|0]|0)<<8|(d[j+(m+27)|0]|0);n=n>>>0>>0?o:n;o=l+1|0;if(!(n>>>0>((d[j+(m+21)|0]|0)<<16|(d[j+(m+20)|0]|0)<<24|(d[j+(m+22)|0]|0)<<8|(d[j+(m+23)|0]|0))>>>0|(k|0)==0)){break}if(o>>>0>>0){l=o}else{break a}}c[e>>2]=n;c[b+32>>2]=k;c[f>>2]=l;i=h;return}}while(0);a[b+24|0]=0;i=h;return}function yQ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=i;k=c[b+16>>2]|0;h=d[k+13|0]<<16|d[k+12|0]<<24|d[k+14|0]<<8|d[k+15|0];if((h|0)==0){r=0;i=g;return r|0}l=f<<24>>24!=0;f=(c[e>>2]|0)+(l&1)|0;m=h;r=0;a:while(1){while(1){n=(r+m|0)>>>1;q=n*12|0;p=q+24|0;o=d[k+(q+21)|0]<<16|d[k+(q+20)|0]<<24|d[k+(q+22)|0]<<8|d[k+(q+23)|0];if(f>>>0<(d[k+(q+17)|0]<<16|d[k+(q+16)|0]<<24|d[k+(q+18)|0]<<8|d[k+(q+19)|0])>>>0){break}r=n+1|0;if(f>>>0<=o>>>0){j=8;break a}if(r>>>0>=m>>>0){k=0;break a}}if(r>>>0>>0){m=n}else{k=0;break}}if((j|0)==8){k=d[k+(q+25)|0]<<16|d[k+p|0]<<24|d[k+(q+26)|0]<<8|d[k+(q+27)|0]}if(!l){r=k;i=g;return r|0}do{if(f>>>0>o>>>0){n=n+1|0;if((n|0)==(h|0)){e=0}else{break}i=g;return e|0}}while(0);j=b+24|0;a[j]=1;h=b+28|0;c[h>>2]=f;c[b+36>>2]=n;do{if((k|0)==0){xQ(b);if((a[j]|0)==0){r=0;i=g;return r|0}else{k=c[b+32>>2]|0;break}}else{c[b+32>>2]=k}}while(0);if((k|0)==0){r=0;i=g;return r|0}c[e>>2]=c[h>>2];r=k;i=g;return r|0}function zQ(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;e=b+28|0;l=c[e>>2]|0;a:do{if((l|0)!=-1){g=b+36|0;k=c[g>>2]|0;f=c[b+40>>2]|0;if(k>>>0>=f>>>0){break}h=c[b+16>>2]|0;o=l+1|0;b:while(1){n=k*12|0;l=(d[h+(n+17)|0]|0)<<16|(d[h+(n+16)|0]|0)<<24|(d[h+(n+18)|0]|0)<<8|(d[h+(n+19)|0]|0);m=(d[h+(n+21)|0]|0)<<16|(d[h+(n+20)|0]|0)<<24|(d[h+(n+22)|0]|0)<<8|(d[h+(n+23)|0]|0);n=(d[h+(n+25)|0]|0)<<16|(d[h+(n+24)|0]|0)<<24|(d[h+(n+26)|0]|0)<<8|(d[h+(n+27)|0]|0);o=o>>>0>>0?l:o;if(o>>>0<=m>>>0){p=o;while(1){q=p+n|0;o=p+1|0;if((q|0)!=(l|0)){break b}if(o>>>0>m>>>0){break}else{p=o}}}k=k+1|0;if(k>>>0>=f>>>0){break a}}c[e>>2]=p;c[b+32>>2]=q-l;c[g>>2]=k;i=j;return}}while(0);a[b+24|0]=0;i=j;return}function AQ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;l=c[b+16>>2]|0;h=d[l+13|0]<<16|d[l+12|0]<<24|d[l+14|0]<<8|d[l+15|0];if((h|0)==0){s=0;i=g;return s|0}k=f<<24>>24!=0;f=(c[e>>2]|0)+(k&1)|0;o=h;s=0;a:while(1){while(1){n=(s+o|0)>>>1;r=n*12|0;q=d[l+(r+17)|0]<<16|d[l+(r+16)|0]<<24|d[l+(r+18)|0]<<8|d[l+(r+19)|0];p=r+24|0;m=d[l+(r+21)|0]<<16|d[l+(r+20)|0]<<24|d[l+(r+22)|0]<<8|d[l+(r+23)|0];if(f>>>0>>0){break}s=n+1|0;if(f>>>0<=m>>>0){j=8;break a}if(s>>>0>=o>>>0){l=0;break a}}if(s>>>0>>0){o=n}else{l=0;break}}if((j|0)==8){l=f-q+(d[l+(r+25)|0]<<16|d[l+p|0]<<24|d[l+(r+26)|0]<<8|d[l+(r+27)|0])|0}if(!k){s=l;i=g;return s|0}do{if(f>>>0>m>>>0){n=n+1|0;if((n|0)==(h|0)){e=0}else{break}i=g;return e|0}}while(0);j=b+24|0;a[j]=1;h=b+28|0;c[h>>2]=f;c[b+36>>2]=n;do{if((l|0)==0){zQ(b);if((a[j]|0)==0){s=0;i=g;return s|0}else{l=c[b+32>>2]|0;break}}else{c[b+32>>2]=l}}while(0);if((l|0)==0){s=0;i=g;return s|0}c[e>>2]=c[h>>2];s=l;i=g;return s|0}function BQ(a,b,e){a=a|0;b=b|0;e=e|0;var 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,A=0,B=0,C=0;g=i;m=c[a+16>>2]|0;n=((d[m+6|0]|0)<<8&65535|(d[m+7|0]|0))&65535;h=n&65534;l=n>>>1;if((l|0)==0){C=0;i=g;return C|0}k=e<<24>>24!=0;s=(c[b>>2]|0)+(k&1)|0;if(s>>>0>=65536){C=0;i=g;return C|0}j=m+14|0;m=m+(h+16)|0;o=n|1;p=h<<1;q=p|1;r=l+ -1|0;n=p|2;while(1){u=0;w=j;v=m;a:while(1){x=w+2|0;B=(d[w]|0)<<8&65535|(d[w+1|0]|0);t=v+2|0;A=(d[v]|0)<<8&65535|(d[v+1|0]|0);w=A&65535;do{if(s>>>0>=w>>>0){if(s>>>0>(B&65535)>>>0){break}z=((d[v+h|0]|0)<<8&65535|(d[v+o|0]|0))<<16>>16;x=v+p|0;C=(d[x]|0)<<8&65535|(d[v+q|0]|0);y=C&65535;do{if(u>>>0>=r>>>0&A<<16>>16==-1&B<<16>>16==-1){A=c[a>>2]|0;if(C<<16>>16==0){break}A=(v+(n+y)|0)>>>0>((c[A+500>>2]|0)+(c[A+504>>2]|0)|0)>>>0;z=A?1:z;y=A?0:y}}while(0);if((y|0)!=65535)if((y|0)==0){f=11;break a}else{f=12;break a}}}while(0);u=u+1|0;if(u>>>0>>0){w=x;v=t}else{u=0;break}}do{if((f|0)==11){f=0;u=z+s&65535}else if((f|0)==12){f=0;C=(s-w<<1)+p+y|0;C=(d[v+C|0]|0)<<8&65535|(d[v+(C+1)|0]|0);u=C&65535;if(C<<16>>16==0){break}u=u+z&65535}}while(0);t=s+1|0;if(!(k&(u|0)==0)){break}if(t>>>0<65536){s=t}else{h=0;f=19;break}}if((f|0)==19){i=g;return h|0}if(e<<24>>24==0|(u|0)==0){C=u;i=g;return C|0}c[b>>2]=s;C=u;i=g;return C|0}function CQ(a){a=a|0;var b=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;b=i;e=a+24|0;f=c[e>>2]|0;a:do{if(f>>>0<=65534){m=f+1|0;f=a+40|0;l=c[f>>2]|0;h=a+52|0;j=a+44|0;k=a+48|0;g=a+36|0;o=l;q=m>>>0>>0?l:m;b:while(1){p=c[h>>2]|0;l=c[j>>2]|0;m=c[k>>2]|0;c:do{if(q>>>0>l>>>0){n=q}else{if((p|0)==0){n=q;while(1){o=n+m&65535;if((o|0)!=0){f=11;break b}n=n+1|0;if(n>>>0>l>>>0){break c}}}n=q;p=p+(q-o<<1)|0;while(1){o=p+2|0;p=(d[p]|0)<<8&65535|(d[p+1|0]|0);if(p<<16>>16!=0){p=(p&65535)+m&65535;if((p|0)!=0){f=8;break b}}n=n+1|0;if(n>>>0>l>>>0){break}else{p=o}}}}while(0);if((EQ(a,(c[g>>2]|0)+1|0)|0)<0){break a}l=c[f>>2]|0;o=l;q=n>>>0>>0?l:n}if((f|0)==8){c[e>>2]=n;c[a+28>>2]=p;i=b;return}else if((f|0)==11){c[e>>2]=n;c[a+28>>2]=o;i=b;return}}}while(0);c[e>>2]=-1;c[a+28>>2]=0;i=b;return}function DQ(a,b,e){a=a|0;b=b|0;e=e|0;var 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,A=0,B=0;f=i;j=c[a+16>>2]|0;g=((d[j+6|0]|0)<<8&65535|(d[j+7|0]|0))&65535;k=g&65534;if((k|0)==0){B=0;i=f;return B|0}g=g>>>1;h=e<<24>>24!=0;e=(c[b>>2]|0)+(h&1)|0;l=k+2|0;q=65535;r=g;m=g;o=0;a:while(1){while(1){if(o>>>0>=r>>>0){j=0;break a}m=(r+o|0)>>>1;t=m<<1;s=t+14|0;t=(d[j+s|0]|0)<<8&65535|(d[j+(t+15)|0]|0);q=t&65535;s=s+l|0;u=(d[j+s|0]|0)<<8&65535|(d[j+(s|1)|0]|0);n=u&65535;if(e>>>0>>0){r=m}else{break}}o=m+1|0;if(e>>>0<=q>>>0){p=7;break}}b:do{if((p|0)==7){w=s+k|0;r=((d[j+w|0]|0)<<8&65535|(d[j+(w|1)|0]|0))<<16>>16;w=w+k|0;s=j+w|0;v=(d[s]|0)<<8&65535|(d[j+(w|1)|0]|0);p=v&65535;do{if(m>>>0>=(g+ -1|0)>>>0&u<<16>>16==-1&t<<16>>16==-1){t=c[a>>2]|0;if(v<<16>>16==0){t=r;u=p;break}u=(j+(w+2+p)|0)>>>0>((c[t+500>>2]|0)+(c[t+504>>2]|0)|0)>>>0;t=u?1:r;u=u?0:p}else{t=r;u=p}}while(0);v=(u|0)==65535;do{if((c[a+20>>2]&2|0)==0){if(v){j=0;break b}}else{y=v?o:m;c:do{if((m|0)==0){v=q;w=0;x=n}else{v=q;w=m;x=n;while(1){A=w+ -1|0;z=A<<1;B=z+14|0;z=((d[j+B|0]|0)<<8&65535|(d[j+(z+15)|0]|0))&65535;if(e>>>0>z>>>0){break c}B=B+l|0;x=((d[j+B|0]|0)<<8&65535|(d[j+(B|1)|0]|0))&65535;B=B+k|0;t=((d[j+B|0]|0)<<8&65535|(d[j+(B|1)|0]|0))<<16>>16;B=B+k|0;s=j+B|0;B=(d[s]|0)<<8&65535|(d[j+(B|1)|0]|0);u=B&65535;y=B<<16>>16==-1?y:A;if((A|0)==0){v=z;w=0;break}else{w=A;v=z}}}}while(0);if((y|0)==(o|0)){s=(w|0)==(m|0);q=s?v:q;if(o>>>0>>0){t=s?t:r;r=m;u=s?u:p;n=s?x:n}else{j=0;break b}while(1){x=o<<1;w=x+14|0;v=w+l|0;s=j+v|0;p=((d[s]|0)<<8&65535|(d[j+(v|1)|0]|0))&65535;if(e>>>0

>>0){break}q=((d[j+w|0]|0)<<8&65535|(d[j+(x+15)|0]|0))&65535;B=v+k|0;t=((d[j+B|0]|0)<<8&65535|(d[j+(B|1)|0]|0))<<16>>16;B=B+k|0;s=j+B|0;B=(d[s]|0)<<8&65535|(d[j+(B|1)|0]|0);u=B&65535;r=B<<16>>16==-1?r:o;o=o+1|0;if(o>>>0>>0){n=p}else{n=p;break}}w=o+ -1|0;if((r|0)==(m|0)){j=0;m=w;break b}else{m=r}}else{q=v;m=y;n=x}if((m|0)==(w|0)){break}q=m<<1;B=q+14|0;n=B+l|0;t=n+k|0;u=t+k|0;s=j+u|0;t=((d[j+t|0]|0)<<8&65535|(d[j+(t|1)|0]|0))<<16>>16;q=((d[j+B|0]|0)<<8&65535|(d[j+(q+15)|0]|0))&65535;u=((d[s]|0)<<8&65535|(d[j+(u|1)|0]|0))&65535;n=((d[j+n|0]|0)<<8&65535|(d[j+(n|1)|0]|0))&65535}}while(0);if((u|0)==0){j=t+e&65535;break}B=(e-n<<1)+u|0;B=(d[s+B|0]|0)<<8&65535|(d[s+(B+1)|0]|0);j=B&65535;if(B<<16>>16==0){break}j=j+t&65535}}while(0);if(!h){B=j;i=f;return B|0}do{if(e>>>0>q>>>0){m=m+1|0;if((m|0)==(g|0)){b=0}else{break}i=f;return b|0}}while(0);if((EQ(a,m)|0)!=0){if((j|0)==0){B=0;i=f;return B|0}c[b>>2]=e;B=j;i=f;return B|0}g=a+24|0;c[g>>2]=e;if((j|0)==0){c[g>>2]=e;CQ(a);j=c[a+28>>2]|0}else{c[a+28>>2]=j}if((j|0)==0){B=0;i=f;return B|0}c[b>>2]=c[g>>2];B=j;i=f;return B|0}function EQ(a,b){a=a|0;b=b|0;var 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;f=i;o=c[a+16>>2]|0;g=c[a+32>>2]|0;if(g>>>0<=b>>>0){s=-1;i=f;return s|0}l=a+44|0;h=g<<1;m=h+2|0;n=a+40|0;k=a+48|0;j=g+ -1|0;a:while(1){s=b<<1;q=s+14|0;s=(d[o+q|0]|0)<<8&65535|(d[o+(s+15)|0]|0);c[l>>2]=s&65535;q=m+q|0;t=(d[o+q|0]|0)<<8&65535|(d[o+(q|1)|0]|0);c[n>>2]=t&65535;q=q+h|0;c[k>>2]=((d[o+q|0]|0)<<8&65535|(d[o+(q|1)|0]|0))<<16>>16;q=q+h|0;r=(d[o+q|0]|0)<<8&65535|(d[o+(q|1)|0]|0);p=r&65535;do{if(b>>>0>=j>>>0&t<<16>>16==-1&s<<16>>16==-1){s=c[a>>2]|0;if(r<<16>>16==0){break}if((o+(q+2+p)|0)>>>0>((c[s+500>>2]|0)+(c[s+504>>2]|0)|0)>>>0){e=6;break a}}}while(0);if((p|0)==0){g=0;break}else if((p|0)!=65535){e=8;break}b=b+1|0;if(b>>>0>=g>>>0){a=-1;e=11;break}}if((e|0)==6){c[k>>2]=1;g=0}else if((e|0)==8){g=o+(p+q)|0}else if((e|0)==11){i=f;return a|0}c[a+52>>2]=g;c[a+36>>2]=b;t=0;i=f;return t|0}function FQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;g=i;i=i+8|0;c[b>>2]=0;f=jJ(a,20,g)|0;e=c[g>>2]|0;if((e|0)!=0){b=e;i=d;return b|0}c[f+12>>2]=a;c[b>>2]=f;b=c[g>>2]|0;i=d;return b|0}function GQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((a|0)==0){i=e;return}if((b|0)!=0&(d|0)>3475){c[a+16>>2]=b;c[a>>2]=b+1440;d=d+ -1440|0;c[a+4>>2]=d&-16;c[a+8>>2]=d>>>7;i=e;return}else{c[a>>2]=0;c[a+4>>2]=0;c[a+16>>2]=0;i=e;return}}function HQ(a,d){a=a|0;d=d|0;var 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,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;e=i;g=i;i=i+320|0;h=g;l=c[d+4>>2]|0;s=c[d>>2]|0;if((a|0)==0){M=6;i=e;return M|0}if((c[a>>2]|0)==0){M=6;i=e;return M|0}k=a+4|0;if((c[k>>2]|0)==0){M=6;i=e;return M|0}if((l|0)==0){M=20;i=e;return M|0}n=b[l+2>>1]|0;if(n<<16>>16==0){M=0;i=e;return M|0}m=b[l>>1]|0;if(m<<16>>16<1){M=0;i=e;return M|0}j=c[l+12>>2]|0;if((j|0)==0){M=20;i=e;return M|0}if((c[l+4>>2]|0)==0){M=20;i=e;return M|0}if((n<<16>>16|0)!=((b[j+((m<<16>>16)+ -1<<1)>>1]|0)+1|0)){M=20;i=e;return M|0}j=c[a+16>>2]|0;t=d+8|0;m=c[t>>2]|0;n=(m&2|0)==0;do{if(n){if((s|0)==0){M=6;i=e;return M|0}if((c[s+4>>2]|0)==0){M=0;i=e;return M|0}if((c[s>>2]|0)==0){M=0;i=e;return M|0}if((c[s+12>>2]|0)==0){g=6}else{break}i=e;return g|0}}while(0);if((m&1|0)==0){M=19;i=e;return M|0}do{if(n){c[j+1024>>2]=0;c[j+1028>>2]=0;c[j+1032>>2]=c[s+4>>2];c[j+1036>>2]=c[s>>2]}else{n=j+1024|0;if((m&4|0)==0){c[n>>2]=-32768;c[j+1028>>2]=-32768;c[j+1032>>2]=32767;c[j+1036>>2]=32767;break}else{$W(n|0,d+32|0,16)|0;break}}}while(0);m=c[a>>2]|0;n=c[k>>2]|0;r=j+1412|0;c[r>>2]=m;o=j+1416|0;c[o>>2]=n;n=j+1420|0;c[n>>2]=m;m=j+44|0;c[m>>2]=0;q=j+48|0;c[q>>2]=0;k=j+52|0;c[k>>2]=0;c[j+32>>2]=0;c[j+36>>2]=0;p=j+40|0;c[p>>2]=1;$W(j+980|0,l|0,20)|0;c[k>>2]=0;c[p>>2]=1;l=j+1248|0;c[l>>2]=c[a+8>>2];a=j+1232|0;c[a>>2]=0;if((c[t>>2]&2|0)==0){$W(j+1e3|0,s|0,24)|0;c[j+1236>>2]=36;c[j+1240>>2]=j}else{c[j+1236>>2]=c[d+12>>2];c[j+1240>>2]=c[d+28>>2]}z=c[j+984>>2]|0;w=b[j+982>>1]|0;v=z+(w<<16>>16<<3)|0;if(w<<16>>16<1){bX(j+8|0,0,16)|0;z=0;t=0;A=0;u=0;y=j+12|0}else{x=c[z>>2]|0;d=j+12|0;c[d>>2]=x;u=j+8|0;c[u>>2]=x;y=c[z+4>>2]|0;t=j+20|0;c[t>>2]=y;s=j+16|0;c[s>>2]=y;if(w<<16>>16>1){w=y;A=x;B=z;z=z+8|0;while(1){C=c[z>>2]|0;B=c[B+12>>2]|0;if((C|0)<(x|0)){c[u>>2]=C;x=C}if((C|0)>(A|0)){c[d>>2]=C;A=C}if((B|0)<(y|0)){c[s>>2]=B;y=B}if((B|0)>(w|0)){c[t>>2]=B;w=B}B=z+8|0;if(B>>>0>>0){M=z;z=B;B=M}else{break}}}else{w=y;A=x}M=x>>6;c[u>>2]=M;z=y>>6;c[s>>2]=z;u=A+63>>6;c[d>>2]=u;A=w+63>>6;c[t>>2]=A;t=A;A=M;y=d}w=c[j+1024>>2]|0;if((u|0)<=(w|0)){M=0;i=e;return M|0}x=c[j+1032>>2]|0;if((A|0)>=(x|0)){M=0;i=e;return M|0}s=j+20|0;B=c[j+1028>>2]|0;if((t|0)<=(B|0)){M=0;i=e;return M|0}d=j+16|0;v=c[j+1036>>2]|0;if((z|0)>=(v|0)){M=0;i=e;return M|0}if((A|0)<(w|0)){c[j+8>>2]=w}else{w=A}if((z|0)<(B|0)){c[d>>2]=B;z=B}if((u|0)>(x|0)){c[y>>2]=x;u=x}if((t|0)>(v|0)){c[s>>2]=v}else{v=t}t=j+24|0;c[t>>2]=u-w;A=v-z|0;z=j+28|0;c[z>>2]=A;A=(A|0)/(c[l>>2]|0)|0;if((A|0)==0){A=1}if((A|0)>38){A=39}E=j+1252|0;c[E>>2]=0;G=c[d>>2]|0;F=c[s>>2]|0;D=0;a:do{if((D|0)<(A|0)){u=h+4|0;y=j+1424|0;x=j+1236|0;v=j+1244|0;B=j+1040|0;w=j+1240|0;b:while(1){C=(c[l>>2]|0)+G|0;if((D|0)==(A+ -1|0)){f=58}else{if((C|0)>(F|0)){f=58}}if((f|0)==58){f=0;C=F}c[g>>2]=G;c[u>>2]=C;G=h;if(G>>>0>=h>>>0){do{c[n>>2]=c[r>>2];H=(c[G+4>>2]|0)-(c[G>>2]|0)|0;c[y>>2]=H;J=H<<2;I=J&12;if((I|0)!=0){J=J+16-I|0}I=c[o>>2]&-16;c[m>>2]=(c[r>>2]|0)+J;do{if((J|0)<(I|0)){M=I-J|0;c[q>>2]=M>>4;if((M|0)<32){f=84;break}if((H|0)>0){H=0;do{c[(c[n>>2]|0)+(H<<2)>>2]=0;H=H+1|0;}while((H|0)<(c[y>>2]|0))}c[k>>2]=0;c[p>>2]=1;c[d>>2]=c[G>>2];c[s>>2]=c[G+4>>2];c[z>>2]=(c[G+4>>2]|0)-(c[G>>2]|0);H=SQ(j)|0;if((H|0)==64){f=84;break}else if((H|0)!=0){g=1;f=92;break b}do{if((c[k>>2]|0)!=0){c[a>>2]=0;if((c[y>>2]|0)>0){H=0;do{I=c[(c[n>>2]|0)+(H<<2)>>2]|0;do{if((I|0)!=0){J=0;L=0;do{K=c[I>>2]|0;if(!((K|0)<=(L|0)|(J|0)==0)){TQ(j,L,H,J<<9,K-L|0)}J=(c[I+4>>2]|0)+J|0;K=J<<9;L=c[I+8>>2]|0;M=K-L|0;do{if((K|0)!=(L|0)){L=c[I>>2]|0;if((L|0)<=-1){break}TQ(j,L,H,M,1)}}while(0);L=(c[I>>2]|0)+1|0;I=c[I+12>>2]|0;}while((I|0)!=0);if((J|0)==0){break}TQ(j,L,H,K,(c[t>>2]|0)-L|0)}}while(0);H=H+1|0;}while((H|0)<(c[y>>2]|0))}I=c[x>>2]|0;if((I|0)==0){break}H=c[a>>2]|0;if((H|0)<=0){break}Jd[I&63](c[v>>2]|0,H,B,c[w>>2]|0)}}while(0);G=G+ -8|0}else{f=84}}while(0);if((f|0)==84){f=0;I=c[G>>2]|0;H=c[G+4>>2]|0;M=H-I>>1;J=M+I|0;if((M|0)==0){g=1;f=92;break b}if((I-H|0)>=(c[l>>2]|0)){c[E>>2]=(c[E>>2]|0)+1}c[G+8>>2]=I;c[G+12>>2]=J;c[G>>2]=J;c[G+4>>2]=H;G=G+8|0}}while(G>>>0>=h>>>0)}D=D+1|0;G=C;if((D|0)>=(A|0)){break a}}if((f|0)==92){i=e;return g|0}}}while(0);if((c[E>>2]|0)<=8){M=0;i=e;return M|0}f=c[l>>2]|0;if((f|0)<=16){M=0;i=e;return M|0}c[l>>2]=(f|0)/2|0;M=0;i=e;return M|0}function IQ(a){a=a|0;var b=0;b=i;lJ(c[a+12>>2]|0,a);i=b;return}function JQ(a){a=a|0;var b=0,d=0;b=i;d=c[a+4>>2]|0;Gd[c[(c[(c[a+20>>2]|0)+56>>2]|0)+8>>2]&255](c[a+60>>2]|0,c[d+172>>2]|0,c[d+176>>2]|0);i=b;return 0}function KQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;a=QQ(a,b,(c|0)==1?0:c,d,0)|0;i=e;return a|0}function LQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((c[b+72>>2]|0)!=(c[a+24>>2]|0)){a=6;i=f;return a|0}if((d|0)!=0){GJ(b+108|0,d)}if((e|0)==0){a=0;i=f;return a|0}HJ(b+108|0,c[e>>2]|0,c[e+4>>2]|0);a=0;i=f;return a|0}function MQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;bX(d|0,0,16)|0;if((c[b+72>>2]|0)!=(c[a+24>>2]|0)){i=e;return}zK(b+108|0,d);i=e;return}function NQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=sd[c[(c[(c[a+20>>2]|0)+56>>2]|0)+12>>2]&127](c[a+60>>2]|0,b,d)|0;i=e;return a|0}function OQ(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=i;e=QQ(b,c,d,e,3)|0;if((e|0)!=0){i=f;return e|0}a[c+94|0]=5;i=f;return e|0}function PQ(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=i;e=QQ(b,c,d,e,4)|0;if((e|0)!=0){i=f;return e|0}a[c+94|0]=6;i=f;return e|0}function QQ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;j=i;k=i;i=i+8|0;o=i;i=i+16|0;p=o;y=i;i=i+48|0;x=y;w=(f|0)==3;n=(f|0)==4;l=e+72|0;if((c[l>>2]|0)!=(c[d+24>>2]|0)){c[k>>2]=6;C=6;i=j;return C|0}if((f|0)!=(h|0)){C=19;i=j;return C|0}h=e+108|0;f=(g|0)==0;if(!f){HJ(h,c[g>>2]|0,c[g+4>>2]|0)}zK(h,p);t=c[o>>2]&-64;c[o>>2]=t;q=p+4|0;m=c[q>>2]&-64;c[q>>2]=m;r=p+8|0;s=(c[r>>2]|0)+63&-64;c[r>>2]=s;r=p+12|0;p=(c[r>>2]|0)+63&-64;c[r>>2]=p;if((t|0)<0&(s|0)>(t+2147483647|0)){C=98;i=j;return C|0}u=s-t>>6;if((m|0)<0&(p|0)>(m+2147483647|0)){C=98;i=j;return C|0}s=p-m>>6;B=e+76|0;C=c[d+8>>2]|0;A=e+156|0;if((c[(c[A>>2]|0)+4>>2]&1|0)!=0){z=e+88|0;lJ(C,c[z>>2]|0);c[z>>2]=0;z=(c[A>>2]|0)+4|0;c[z>>2]=c[z>>2]&-2}if(w){v=u*3|0;m=v+3&-4}else{m=u;v=u}if(n){t=s*3|0}else{t=s}p=c[o>>2]|0;q=c[q>>2]|0;o=p>>6;r=c[r>>2]>>6;if(v>>>0>32767|t>>>0>32767){C=98;i=j;return C|0}a[e+94|0]=2;b[e+92>>1]=256;c[e+80>>2]=v;c[B>>2]=t;c[e+84>>2]=m;HJ(h,0-p|0,0-q|0);z=e+88|0;c[z>>2]=jJ(C,da(t,m)|0,k)|0;C=c[k>>2]|0;do{if((C|0)==0){C=(c[A>>2]|0)+4|0;c[C>>2]=c[C>>2]|1;c[y>>2]=B;c[x+4>>2]=h;c[x+8>>2]=1;c[k>>2]=Bd[c[d+64>>2]&255](c[d+60>>2]|0,x)|0;do{if(w){if((s|0)==0|(u|0)==0){break}else{w=s;d=c[z>>2]|0}while(1){x=d+v|0;A=u;while(1){A=A+ -1|0;C=a[d+A|0]|0;y=x+ -3|0;a[y]=C;a[x+ -2|0]=C;a[x+ -1|0]=C;if((A|0)==0){break}else{x=y}}w=w+ -1|0;if((w|0)==0){break}else{d=d+m|0}}}}while(0);do{if(n){d=c[z>>2]|0;if((s|0)==0){break}n=m<<1;u=n+m|0;v=s;s=d+(da(t-s|0,m)|0)|0;while(1){$W(d|0,s|0,m|0)|0;$W(d+m|0,s|0,m|0)|0;$W(d+n|0,s|0,m|0)|0;v=v+ -1|0;if((v|0)==0){break}else{d=d+u|0;s=s+m|0}}}}while(0);HJ(h,p,q);C=c[k>>2]|0;if((C|0)!=0){break}c[l>>2]=1651078259;c[e+100>>2]=o;c[e+104>>2]=r;C=0}}while(0);if(f){i=j;return C|0}HJ(h,0-(c[g>>2]|0)|0,0-(c[g+4>>2]|0)|0);C=c[k>>2]|0;i=j;return C|0}function RQ(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;k=c[g+1012>>2]|0;l=c[g+1008>>2]|0;d=da(l,d)|0;if((l|0)>-1){g=da((c[g+1e3>>2]|0)+ -1|0,l)|0}else{g=0}g=g-d|0;if((e|0)<=0){i=j;return}while(1){l=a[f+4|0]|0;a:do{if(l<<24>>24!=0){o=b[f+2>>1]|0;d=o&65535;n=b[f>>1]|0;m=k+(g+n)|0;if((o&65535)>7){bX(m|0,l|0,d|0)|0;break}switch(d|0){case 1:{break};case 6:{h=9;break};case 4:{h=11;break};case 7:{a[m]=l;m=k+(g+(n+1))|0;h=9;break};case 3:{h=12;break};case 5:{h=10;break};case 2:{h=13;break};default:{break a}}if((h|0)==9){a[m]=l;m=m+1|0;h=10}if((h|0)==10){a[m]=l;m=m+1|0;h=11}if((h|0)==11){a[m]=l;m=m+1|0;h=12}if((h|0)==12){a[m]=l;m=m+1|0;h=13}if((h|0)==13){h=0;a[m]=l;m=m+1|0}a[m]=l}}while(0);e=e+ -1|0;if((e|0)>0){f=f+6|0}else{break}}i=j;return}function SQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=i;i=i+168|0;c[d>>2]=0;YW(a+1256|0,1,d|0)|0;e=0;while(1){if((e|0)!=0){a=6;break}s=0;e=ya(78,a+980|0,273328,a|0)|0;f=s;s=0;if((f|0)!=0&(t|0)!=0){g=kX(c[f>>2]|0,d)|0;if((g|0)==0){_a(f|0,t|0)}H=t}else{g=-1}if((g|0)==1){e=H;continue}s=0;la(339,a|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){f=kX(c[g>>2]|0,d)|0;if((f|0)==0){_a(g|0,t|0)}H=t}else{f=-1}if((f|0)==1){e=H}else{a=5;break}}if((a|0)==5){g=e;i=b;return g|0}else if((a|0)==6){g=64;i=b;return g|0}return 0}function TQ(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;j=j>>9;j=(j|0)<0?0-j|0:j;do{if((c[f+996>>2]&2|0)==0){j=(j|0)>255?255:j}else{j=j&511;if(j>>>0>256){j=512-j|0;break}else{j=(j|0)==256?255:j;break}}}while(0);h=(c[f+16>>2]|0)+h|0;g=(c[f+8>>2]|0)+g|0;g=(g|0)<32767?g:32767;if((j|0)==0){i=l;return}m=f+1232|0;p=c[m>>2]|0;o=f+1040|0;q=p+ -1|0;n=(p|0)>0;s=c[f+1244>>2]|0;do{if(n&(s|0)==(h|0)){r=f+1040+(q*6|0)+2|0;s=e[r>>1]|0;if((s+(b[f+1040+(q*6|0)>>1]|0)|0)!=(g|0)){s=h;break}if((d[f+1040+(q*6|0)+4|0]|0)!=(j|0)){s=h;break}b[r>>1]=s+k;i=l;return}}while(0);r=f+1244|0;if((s|0)!=(h|0)|(p|0)>31){q=c[f+1236>>2]|0;if(!((q|0)==0|n^1)){Jd[q&63](s,p,o,c[f+1240>>2]|0)}c[m>>2]=0;c[r>>2]=h}else{o=f+1040+(p*6|0)|0}b[o>>1]=g;b[o+2>>1]=k;a[o+4|0]=j;c[m>>2]=(c[m>>2]|0)+1;i=l;return}function UQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;if((c[a+40>>2]|0)!=0){i=g;return}f=a+32|0;k=c[f>>2]|0;e=a+36|0;if((c[e>>2]|k|0)==0){i=g;return}l=c[a>>2]|0;j=c[a+24>>2]|0;j=(l|0)>(j|0)?j:l;n=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;l=c[n>>2]|0;a:do{if((l|0)==0){h=7}else{while(1){m=c[l>>2]|0;if((m|0)>(j|0)){h=7;break a}n=l+12|0;if((m|0)==(j|0)){d=k;b=l;break a}l=c[n>>2]|0;if((l|0)==0){h=7;break}}}}while(0);do{if((h|0)==7){k=a+52|0;h=c[k>>2]|0;if((h|0)<(c[a+48>>2]|0)){d=c[a+44>>2]|0;c[k>>2]=h+1;b=d+(h<<4)|0;c[b>>2]=j;c[d+(h<<4)+8>>2]=0;c[d+(h<<4)+4>>2]=0;c[d+(h<<4)+12>>2]=c[n>>2];c[n>>2]=b;d=c[f>>2]|0;break}else{_a(a+1256|0,1)}}}while(0);n=b+8|0;c[n>>2]=(c[n>>2]|0)+d;n=b+4|0;c[n>>2]=(c[n>>2]|0)+(c[e>>2]|0);i=g;return}function VQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;UQ(b);d=c[a>>2]<<2;a=c[a+4>>2]<<2;g=d>>8;m=a>>8;f=c[b+12>>2]|0;g=(f|0)<(g|0)?f:g;n=c[b+8>>2]|0;o=(g|0)<(n|0)?n+ -1|0:g;h=b+32|0;c[h>>2]=0;g=b+36|0;c[g>>2]=0;j=o-n|0;c[b>>2]=j;l=m-(c[b+16>>2]|0)|0;k=b+4|0;c[k>>2]=l;c[b+72>>2]=m<<8;m=b+40|0;c[m>>2]=0;f=((f|0)<(o|0)?f:o)-n|0;f=(f|0)>-1?f:-1;if((f|0)!=(j|0)){UQ(b);c[h>>2]=0;c[g>>2]=0}c[b>>2]=f;c[k>>2]=l;if(l>>>0>=(c[b+28>>2]|0)>>>0){n=1;o=m;c[o>>2]=n;o=b+64|0;c[o>>2]=d;o=b+68|0;c[o>>2]=a;i=e;return 0}n=(f|0)>=(c[b+24>>2]|0)|0;o=m;c[o>>2]=n;o=b+64|0;c[o>>2]=d;o=b+68|0;c[o>>2]=a;i=e;return 0}function WQ(a,b){a=a|0;b=b|0;var d=0;d=i;ZQ(b,c[a>>2]<<2,c[a+4>>2]<<2);i=d;return 0}function XQ(a,b,d){a=a|0;b=b|0;d=d|0;var 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;e=i;g=d+76|0;h=c[b>>2]<<2;c[g>>2]=h;b=c[b+4>>2]<<2;c[d+80>>2]=b;r=c[a>>2]|0;c[d+84>>2]=r<<2;j=c[a+4>>2]|0;c[d+88>>2]=j<<2;a=c[d+64>>2]|0;c[d+92>>2]=a;k=c[d+68>>2]|0;c[d+96>>2]=k;a=h-(r<<3)+a|0;a=(a|0)<0?0-a|0:a;j=b-(j<<3)+k|0;j=(j|0)<0?0-j|0:j;a=(a|0)<(j|0)?j:a;if((a|0)<65){ZQ(d,h,b);i=e;return 0}else{h=a;a=0}do{h=h>>2;a=a+1|0;}while((h|0)>64);c[d+852>>2]=a;h=d+20|0;b=d+16|0;j=0;while(1){l=d+852+(j<<2)|0;m=c[g+4>>2]|0;do{if((a|0)>1){q=g+12|0;k=c[q>>2]|0;p=(k|0)<(m|0)?k:m;r=(k|0)>(m|0)?k:m;n=g+20|0;o=c[n>>2]|0;if((((o|0)<(p|0)?o:p)>>8|0)>=(c[h>>2]|0)){f=11;break}if((((o|0)>(r|0)?o:r)>>8|0)<(c[b>>2]|0)){f=11;break}r=g+16|0;p=c[r>>2]|0;c[g+32>>2]=p;t=g+8|0;s=c[t>>2]|0;p=(s+p|0)/2|0;c[g+24>>2]=p;s=((c[g>>2]|0)+s|0)/2|0;c[t>>2]=s;c[r>>2]=(s+p|0)/2|0;c[g+36>>2]=o;r=(o+k|0)/2|0;c[g+28>>2]=r;p=(k+m|0)/2|0;c[q>>2]=p;c[n>>2]=(p+r|0)/2|0;j=j+1|0;r=a+ -1|0;c[l>>2]=r;c[d+852+(j<<2)>>2]=r;g=g+16|0}else{f=11}}while(0);if((f|0)==11){f=0;ZQ(d,c[g>>2]|0,m);g=g+ -16|0;j=j+ -1|0}if((j|0)<=-1){break}a=c[d+852+(j<<2)>>2]|0}i=e;return 0}function YQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var 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,A=0,B=0;f=i;g=e+76|0;c[g>>2]=c[d>>2]<<2;c[e+80>>2]=c[d+4>>2]<<2;c[e+84>>2]=c[b>>2]<<2;c[e+88>>2]=c[b+4>>2]<<2;c[e+92>>2]=c[a>>2]<<2;c[e+96>>2]=c[a+4>>2]<<2;c[e+100>>2]=c[e+64>>2];c[e+104>>2]=c[e+68>>2];a=e+20|0;d=e+16|0;m=g;a:while(1){h=c[m+4>>2]|0;k=m+12|0;j=c[k>>2]|0;o=(j|0)<(h|0)?j:h;n=(j|0)>(h|0)?j:h;l=m+20|0;b=c[l>>2]|0;q=(b|0)<(o|0)?b:o;r=(b|0)>(n|0)?b:n;o=m+24|0;p=m+28|0;n=c[p>>2]|0;b:do{if((((n|0)<(q|0)?n:q)>>8|0)<(c[a>>2]|0)){if((((n|0)>(r|0)?n:r)>>8|0)<(c[d>>2]|0)){break}q=c[o>>2]|0;r=c[m>>2]|0;t=q-r|0;s=n-h|0;u=(t|0)<0?0-t|0:t;v=(s|0)<0?0-s|0:s;if((u|0)>(v|0)){u=(u*236|0)+(v*97|0)|0}else{u=(u*97|0)+(v*236|0)|0}u=u>>8;do{if((u|0)>32767){u=c[m+8>>2]|0}else{v=u*42|0;u=c[m+8>>2]|0;w=u-r|0;x=j-h|0;y=(da(w,s)|0)-(da(t,x)|0)|0;if((((y|0)<0?0-y|0:y)|0)>(v|0)){break}z=c[m+16>>2]|0;A=z-r|0;y=b-h|0;B=(da(A,s)|0)-(da(t,y)|0)|0;if((((B|0)<0?0-B|0:B)|0)>(v|0)){break}if(((da(w,t)|0)+(da(s,x)|0)|0)<0){break}if(((da(A,t)|0)+(da(s,y)|0)|0)<0){break}if(((da(q-u|0,t)|0)+(da(n-j|0,s)|0)|0)<0){break}if(((da(q-z|0,t)|0)+(da(n-b|0,s)|0)|0)>=0){break b}}}while(0);c[m+48>>2]=q;y=m+16|0;z=c[y>>2]|0;B=(u+r|0)/2|0;c[m+8>>2]=B;A=(z+q|0)/2|0;c[m+40>>2]=A;z=(z+u|0)/2|0;B=(z+B|0)/2|0;c[y>>2]=B;A=(z+A|0)/2|0;c[m+32>>2]=A;c[m+24>>2]=(A+B|0)/2|0;c[m+52>>2]=n;B=(j+h|0)/2|0;c[k>>2]=B;A=(n+b|0)/2|0;c[m+44>>2]=A;z=(b+j|0)/2|0;B=(z+B|0)/2|0;c[l>>2]=B;A=(z+A|0)/2|0;c[m+36>>2]=A;c[p>>2]=(A+B|0)/2|0;m=o;continue a}}while(0);ZQ(e,c[m>>2]|0,h);if((m|0)==(g|0)){break}m=m+ -24|0}i=f;return 0}function ZQ(a,b,d){a=a|0;b=b|0;d=d|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;g=i;l=a+72|0;s=c[l>>2]|0;u=s>>8;k=d>>8;h=a+68|0;q=c[h>>2]|0;s=q-s|0;f=k<<8;j=d-f|0;e=a+64|0;r=c[e>>2]|0;x=b-r|0;q=d-q|0;o=(u|0)>(k|0);if(((o?k:u)|0)>=(c[a+20>>2]|0)){H=e;c[H>>2]=b;H=h;c[H>>2]=d;H=l;c[H>>2]=f;i=g;return}n=a+16|0;v=c[n>>2]|0;if(((o?u:k)|0)<(v|0)){H=e;c[H>>2]=b;H=h;c[H>>2]=d;H=l;c[H>>2]=f;i=g;return}if((u|0)==(k|0)){_Q(a,u,r,s,b,j);H=e;c[H>>2]=b;H=h;c[H>>2]=d;H=l;c[H>>2]=f;i=g;return}if((r|0)==(b|0)){o=b>>8;p=b-(o<<8)<<1;q=q>>31;r=q+256&-256;q=q|1;D=r-s|0;s=da(p,D)|0;t=a+32|0;c[t>>2]=(c[t>>2]|0)+s;s=a+36|0;c[s>>2]=(c[s>>2]|0)+D;D=q+u|0;x=D-v|0;v=a+12|0;w=c[v>>2]|0;u=a+8|0;w=((w|0)<(o|0)?w:o)-(c[u>>2]|0)|0;F=(w|0)>-1?w:-1;if((F|0)==(c[a>>2]|0)){w=a+4|0;if((x|0)!=(c[w>>2]|0)){m=8}}else{m=8}if((m|0)==8){if((c[a+40>>2]|0)==0){UQ(a)}c[t>>2]=0;c[s>>2]=0;w=a+4|0}c[a>>2]=F;c[w>>2]=x;w=a+28|0;E=c[w>>2]|0;if(x>>>0>>0){C=(F|0)>=(c[a+24>>2]|0)|0}else{C=1}x=a+40|0;c[x>>2]=C;z=(r<<1)+ -256|0;y=da(z,p)|0;if((D|0)!=(k|0)){B=a+4|0;A=a+24|0;while(1){c[t>>2]=(c[t>>2]|0)+y;c[s>>2]=(c[s>>2]|0)+z;D=D+q|0;G=D-(c[n>>2]|0)|0;H=c[v>>2]|0;H=((H|0)<(o|0)?H:o)-(c[u>>2]|0)|0;H=(H|0)>-1?H:-1;if((H|0)==(F|0)){if((G|0)!=(c[B>>2]|0)){m=17}}else{m=17}if((m|0)==17){m=0;if((C|0)==0){UQ(a);E=c[w>>2]|0}c[t>>2]=0;c[s>>2]=0}c[a>>2]=H;c[B>>2]=G;if(G>>>0>>0){C=(H|0)>=(c[A>>2]|0)|0}else{C=1}c[x>>2]=C;if((D|0)==(k|0)){break}else{F=H}}}H=j+ -256+r|0;G=da(p,H)|0;c[t>>2]=(c[t>>2]|0)+G;c[s>>2]=(c[s>>2]|0)+H;H=e;c[H>>2]=b;H=h;c[H>>2]=d;H=l;c[H>>2]=f;i=g;return}t=(q|0)<0;p=q>>31;o=p+256&-256;p=p|1;q=t?0-q|0:q;w=da(t?s:256-s|0,x)|0;t=(w|0)/(q|0)|0;w=(w|0)%(q|0)|0;if((w|0)<0){t=t+ -1|0;w=w+q|0}v=r+t|0;_Q(a,u,r,s,v,o);E=p+u|0;y=v>>8;u=E-(c[n>>2]|0)|0;r=a+12|0;t=c[r>>2]|0;s=a+8|0;t=((t|0)<(y|0)?t:y)-(c[s>>2]|0)|0;y=(t|0)>-1?t:-1;if((y|0)==(c[a>>2]|0)){t=a+4|0;if((u|0)!=(c[t>>2]|0)){m=28}}else{m=28}if((m|0)==28){if((c[a+40>>2]|0)==0){UQ(a)}c[a+32>>2]=0;c[a+36>>2]=0;t=a+4|0}c[a>>2]=y;c[t>>2]=u;t=a+28|0;if(u>>>0<(c[t>>2]|0)>>>0){y=(y|0)>=(c[a+24>>2]|0)|0}else{y=1}u=a+40|0;c[u>>2]=y;if((E|0)!=(k|0)){z=x<<8;x=(z|0)/(q|0)|0;z=(z|0)%(q|0)|0;if((z|0)<0){x=x+ -1|0;z=z+q|0}C=256-o|0;B=a+4|0;A=a+24|0;y=a+32|0;D=a+36|0;w=w-q|0;F=v;while(1){v=w+z|0;w=v-((v|0)>-1?q:0)|0;v=x+(v>>>31^1)+F|0;_Q(a,E,F,C,v,o);E=E+p|0;H=v>>8;F=E-(c[n>>2]|0)|0;G=c[r>>2]|0;G=((G|0)<(H|0)?G:H)-(c[s>>2]|0)|0;G=(G|0)>-1?G:-1;if((G|0)==(c[a>>2]|0)){if((F|0)!=(c[B>>2]|0)){m=39}}else{m=39}if((m|0)==39){m=0;if((c[u>>2]|0)==0){UQ(a)}c[y>>2]=0;c[D>>2]=0}c[a>>2]=G;c[B>>2]=F;if(F>>>0<(c[t>>2]|0)>>>0){F=(G|0)>=(c[A>>2]|0)|0}else{F=1}c[u>>2]=F;if((E|0)==(k|0)){break}else{F=v}}}_Q(a,k,v,256-o|0,b,j);H=e;c[H>>2]=b;H=h;c[H>>2]=d;H=l;c[H>>2]=f;i=g;return}function _Q(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var 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,A=0,B=0,C=0,D=0,E=0;h=i;l=f-d|0;p=d>>8;k=f>>8;n=d-(p<<8)|0;f=f-(k<<8)|0;if((e|0)==(g|0)){g=b-(c[a+16>>2]|0)|0;b=c[a+12>>2]|0;k=((b|0)<(k|0)?b:k)-(c[a+8>>2]|0)|0;k=(k|0)>-1?k:-1;if((k|0)==(c[a>>2]|0)){b=a+4|0;if((g|0)!=(c[b>>2]|0)){j=4}}else{j=4}if((j|0)==4){if((c[a+40>>2]|0)==0){UQ(a)}c[a+32>>2]=0;c[a+36>>2]=0;b=a+4|0}c[a>>2]=k;c[b>>2]=g;if(g>>>0<(c[a+28>>2]|0)>>>0){j=(k|0)>=(c[a+24>>2]|0)|0}else{j=1}c[a+40>>2]=j;i=h;return}if((p|0)==(k|0)){D=g-e|0;C=da(f+n|0,D)|0;E=a+32|0;c[E>>2]=(c[E>>2]|0)+C;E=a+36|0;c[E>>2]=(c[E>>2]|0)+D;i=h;return}o=(l|0)<0;m=l>>31;d=m+256&-256;l=o?0-l|0:l;m=m|1;x=da(o?n:256-n|0,g-e|0)|0;u=(x|0)/(l|0)|0;x=(x|0)%(l|0)|0;if((x|0)<0){u=u+ -1|0;x=x+l|0}o=da(u,d+n|0)|0;n=a+32|0;c[n>>2]=(c[n>>2]|0)+o;o=a+36|0;c[o>>2]=(c[o>>2]|0)+u;z=m+p|0;q=a+16|0;t=b-(c[q>>2]|0)|0;p=a+12|0;s=c[p>>2]|0;r=a+8|0;s=((s|0)<(z|0)?s:z)-(c[r>>2]|0)|0;B=(s|0)>-1?s:-1;if((B|0)==(c[a>>2]|0)){s=a+4|0;if((t|0)!=(c[s>>2]|0)){j=16}}else{j=16}if((j|0)==16){if((c[a+40>>2]|0)==0){UQ(a)}c[n>>2]=0;c[o>>2]=0;s=a+4|0}c[a>>2]=B;c[s>>2]=t;s=a+28|0;A=c[s>>2]|0;if(t>>>0>>0){y=(B|0)>=(c[a+24>>2]|0)|0}else{y=1}t=a+40|0;c[t>>2]=y;C=u+e|0;if((z|0)!=(k|0)){v=u+g-C<<8;e=(v|0)/(l|0)|0;v=(v|0)%(l|0)|0;if((v|0)<0){e=e+ -1|0;v=v+l|0}w=a+4|0;u=a+24|0;x=x-l|0;while(1){E=x+v|0;D=e+(E>>>31^1)|0;x=E-((E|0)>-1?l:0)|0;c[n>>2]=(c[n>>2]|0)+(D<<8);c[o>>2]=(c[o>>2]|0)+D;C=D+C|0;z=z+m|0;E=b-(c[q>>2]|0)|0;D=c[p>>2]|0;D=((D|0)<(z|0)?D:z)-(c[r>>2]|0)|0;D=(D|0)>-1?D:-1;if((D|0)==(B|0)){if((E|0)!=(c[w>>2]|0)){j=27}}else{j=27}if((j|0)==27){j=0;if((y|0)==0){UQ(a);A=c[s>>2]|0}c[n>>2]=0;c[o>>2]=0}c[a>>2]=D;c[w>>2]=E;if(E>>>0>>0){y=(D|0)>=(c[u>>2]|0)|0}else{y=1}c[t>>2]=y;if((z|0)==(k|0)){break}else{B=D}}}E=g-C|0;D=da(E,f+256-d|0)|0;c[n>>2]=D+(c[n>>2]|0);c[o>>2]=(c[o>>2]|0)+E;i=h;return}function $Q(a){a=a|0;var b=0;b=i;a=(mR(a)|0)==0;i=b;return(a?153:0)|0}function aR(a){a=a|0;var d=0,e=0,f=0,g=0;d=i;e=a+40|0;a=c[e>>2]|0;if((a|0)==0){i=d;return}f=c[a+8>>2]|0;b[a+440>>1]=0;b[a+442>>1]=0;g=a+24|0;lJ(f,c[g>>2]|0);c[g>>2]=0;c[a+20>>2]=0;g=a+436|0;lJ(f,c[g>>2]|0);c[g>>2]=0;c[a+432>>2]=0;c[a+428>>2]=0;g=a+392|0;lJ(f,c[g>>2]|0);c[g>>2]=0;c[a+388>>2]=0;c[a+4>>2]=0;c[a>>2]=0;lJ(f,a);c[e>>2]=0;i=d;return}function bR(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=uJ(274320,b)|0;if((e|0)!=0){i=d;return e|0}if((a|0)==0){e=0;i=d;return e|0}e=mK(c[a+4>>2]|0,274056)|0;if((e|0)==0){e=0;i=d;return e|0}e=c[(c[e>>2]|0)+20>>2]|0;if((e|0)==0){e=0;i=d;return e|0}e=Bd[c[e+16>>2]&255](a,b)|0;i=d;return e|0}function cR(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;k=i;m=i;i=i+8|0;l=m;o=i;i=i+8|0;n=o;p=i;i=i+8|0;q=p;t=i;i=i+8|0;v=t;r=i;i=i+8|0;w=r;y=i;i=i+24|0;x=y;z=nK(c[(c[f+96>>2]|0)+4>>2]|0,274056)|0;if((z|0)==0){G=2;i=k;return G|0}u=PJ(e,0)|0;if((u|0)!=0){G=u;i=k;return G|0}u=Cd[c[z+4>>2]&63](e,f,g,h,j)|0;if((u|0)!=0){G=u;i=k;return G|0}G=c[f+148>>2]|0;if(!((G|0)==1953658213|(G|0)==131072|(G|0)==65536)){G=2;i=k;return G|0}u=f+8|0;c[u>>2]=c[u>>2]|2048;if((g|0)<0){G=0;i=k;return G|0}h=Cd[c[z+8>>2]&63](e,f,g,h,j)|0;if((h|0)!=0){G=h;i=k;return G|0}a:do{if((f|0)!=0){h=c[f+20>>2]|0;b:do{if((h|0)==0){bX(y|0,0,20)|0;y=f+152|0;A=b[y>>1]|0;if(A<<16>>16==0){break a}h=f+156|0;g=f+508|0;j=f+104|0;z=0;while(1){D=c[h>>2]|0;B=c[D+(z<<4)>>2]|0;if((B|0)==1718642541){B=1;s=16}else if((B|0)==1886545264){B=2;s=16}else if((B|0)==1668707360){B=0;s=16}if((s|0)==16){s=0;A=z&65535;F=0;C=0;while(1){if((c[D+(z<<4)+12>>2]|0)==(c[274064+(C*24|0)+(B<<3)+4>>2]|0)){do{if((F|0)==0){F=c[D+(A<<4)+4>>2]|0;if((F|0)!=0){break}E=c[g>>2]|0;if((E|0)==0){F=0;break}if((pd[E&63](f,c[D+(A<<4)>>2]|0,c[j>>2]|0,0)|0)==0){F=0;break}D=c[j>>2]|0;E=c[(c[h>>2]|0)+(A<<4)+12>>2]|0;if((MK(D,E)|0)!=0){F=0;break}if(E>>>0>3){F=0;while(1){F=(TK(D)|0)+F|0;E=E+ -4|0;if(E>>>0>3){}else{break}}}else{F=0}if((E|0)!=0){G=F;F=3;while(1){G=(((QK(D)|0)&255)<<(F<<3))+G|0;E=E+ -1|0;if((E|0)==0){F=G;break}else{F=F+ -1|0}}}PK(D)}}while(0);E=x+(C<<2)|0;D=c[E>>2]|0;if((c[274064+(C*24|0)+(B<<3)>>2]|0)==(F|0)){D=D+1|0;c[E>>2]=D}if((D|0)==3){break b}}C=C+1|0;if((C|0)>=5){break}D=c[h>>2]|0}A=b[y>>1]|0}z=z+1|0;if((z|0)>=(A&65535|0)){break a}}}else{y=0;while(1){x=y+1|0;if((nb(h|0,274184+(y*17|0)|0)|0)!=0){break b}if((x|0)<8){y=x}else{break a}}}}while(0);c[u>>2]=c[u>>2]|8192}}while(0);g=c[e+28>>2]|0;x=f+508|0;G=pd[c[x>>2]&63](f,1751412088,e,w)|0;c[t>>2]=G;do{if((G|0)==0){w=c[r>>2]|0;if(w>>>0<8){break}z=f+740|0;w=LK(e,w,z)|0;c[t>>2]=w;if((w|0)!=0){G=w;i=k;return G|0}A=c[z>>2]|0;w=A+(c[r>>2]|0)|0;B=d[A+2|0]<<8&65535|d[A+3|0];h=B&65535;y=d[A+5|0]<<16|d[A+4|0]<<24|d[A+6|0]<<8|d[A+7|0];y=y>>>0>4294901759?y&65535:y;do{if((d[A]<<8&65535|d[A+1|0])<<16>>16!=0|(B&65535)>255|y>>>0>65537){c[t>>2]=3;s=47}else{j=f+756|0;c[j>>2]=oJ(g,1,0,h,0,v)|0;if((c[t>>2]|0)!=0){s=47;break}c:do{if(B<<16>>16==0){v=0}else{v=0;z=A+8|0;while(1){g=z+y|0;if(g>>>0>w>>>0){break c}a[(c[j>>2]|0)+v|0]=a[z]|0;v=v+1|0;if(v>>>0>>0){z=g}else{break}}}}while(0);c[f+748>>2]=v;c[f+744>>2]=c[r>>2];c[f+752>>2]=y}}while(0);if((s|0)==47){NK(e,z);c[f+744>>2]=0}r=c[t>>2]|0;if((r|0)==0){break}i=k;return r|0}}while(0);do{if((c[u>>2]&1|0)==0){s=0}else{if((c[(c[f+128>>2]|0)+52>>2]|0)==0){r=f+704|0;s=pd[c[x>>2]&63](f,1735162214,e,r)|0;if((s|0)==142){c[r>>2]=0}else if((s|0)!=0){break}if((pd[c[x>>2]&63](f,1819239265,e,q)|0)!=0){s=144;break}s=c[p>>2]|0;if((b[f+210>>1]|0)==0){if(s>>>0>131071){s=8;break}u=s>>>1;c[f+732>>2]=u;v=1}else{if(s>>>0>262143){s=8;break}u=s>>>2;c[f+732>>2]=u;v=2}q=f+732|0;r=f+16|0;t=c[r>>2]|0;do{if(u>>>0>>0){s=t<>2]|0;G=b[f+152>>1]|0;u=w+((G&65535)<<4)|0;t=IK(e)|0;if(G<<16>>16==0){v=2147483647}else{v=2147483647;while(1){y=(c[w+8>>2]|0)-t|0;v=(y|0)>0&(y|0)<(v|0)?y:v;w=w+16|0;if(w>>>0>>0){}else{break}}}if((w|0)==(u|0)){v=(c[e+4>>2]|0)-t|0}if((s|0)>(v|0)){s=c[p>>2]|0;break}else{c[q>>2]=c[r>>2];c[p>>2]=s;break}}}while(0);s=LK(e,s,f+736|0)|0;if((s|0)!=0){break}}s=TR(f,e)|0;if((s|0)!=0){break}if((pd[c[x>>2]&63](f,1718642541,e,n)|0)==0){s=c[o>>2]|0;c[f+652>>2]=s;s=LK(e,s,f+656|0)|0;if((s|0)!=0){break}}else{c[f+656>>2]=0;c[f+652>>2]=0}if((pd[c[x>>2]&63](f,1886545264,e,l)|0)==0){s=c[m>>2]|0;c[f+660>>2]=s;s=LK(e,s,f+664|0)|0;break}else{c[f+664>>2]=0;c[f+660>>2]=0;s=0;break}}}while(0);c[f+512>>2]=43;c[f+520>>2]=254;c[f+524>>2]=255;c[f+528>>2]=256;c[f+516>>2]=340;G=s;i=k;return G|0}function dR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;d=i;if((a|0)==0){i=d;return}b=c[a+100>>2]|0;h=a+104|0;j=c[h>>2]|0;e=c[a+532>>2]|0;f=a+692|0;g=c[f+4>>2]|0;if((g|0)!=0){fd[g&511](c[f>>2]|0)}if((e|0)!=0){fd[c[e+12>>2]&511](a)}NK(c[h>>2]|0,a+736|0);c[a+732>>2]=0;e=c[h>>2]|0;f=a+756|0;lJ(c[e+28>>2]|0,c[f>>2]|0);c[f>>2]=0;NK(e,a+740|0);e=a+672|0;lJ(b,c[e>>2]|0);c[e>>2]=0;c[a+668>>2]=0;NK(j,a+656|0);NK(j,a+664|0);c[a+652>>2]=0;c[a+660>>2]=0;e=a+712|0;f=c[e>>2]|0;if((f|0)!=0){g=f+4|0;lJ(b,c[g>>2]|0);c[g>>2]=0;g=f+8|0;lJ(b,c[g>>2]|0);c[g>>2]=0;g=f+20|0;a=c[g>>2]|0;if((a|0)!=0){if((c[f>>2]|0)!=0){h=0;while(1){lJ(b,c[a+(h<<3)+4>>2]|0);c[(c[g>>2]|0)+(h<<3)+4>>2]=0;h=h+1|0;a=c[g>>2]|0;if(h>>>0<(c[f>>2]|0)>>>0){}else{break}}}lJ(b,a);c[g>>2]=0}j=f+28|0;lJ(b,c[j>>2]|0);c[j>>2]=0;j=f+36|0;lJ(b,c[j>>2]|0);c[j>>2]=0;lJ(b,f)}c[e>>2]=0;i=d;return}function eR(b){b=b|0;a[b+300|0]=0;a[b+301|0]=0;a[b+108|0]=0;c[b+112>>2]=-1;i=i;return 0}function fR(b){b=b|0;var c=0;c=i;if((a[b+300|0]|0)!=0){SR(b)}a[b+108|0]=0;i=c;return}function gR(a){a=a|0;var b=0;b=i;a=nJ(c[c[a+156>>2]>>2]|0)|0;i=b;return a|0}function hR(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var 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;k=i;r=i;i=i+16|0;q=r;p=i;i=i+16|0;m=p;y=i;i=i+8|0;D=y;x=i;i=i+8|0;G=x;v=i;i=i+8|0;u=v;s=i;i=i+208|0;n=s;t=f+4|0;o=c[t>>2]|0;if((f|0)==0){K=37;i=k;return K|0}if((g|0)==0){K=36;i=k;return K|0}if((o|0)==0){K=6;i=k;return K|0}do{if((c[o+16>>2]|0)>>>0<=h>>>0){if((c[(c[o+128>>2]|0)+52>>2]|0)==0){x=6}else{break}i=k;return x|0}}while(0);if((j&2|0)!=0){j=(c[o+8>>2]&8192|0)==0?j:j&-3;j=j>>>14&2|j}if((j&1025|0)!=0){j=(c[o+8>>2]|0)>>>12&2^11|j}w=c[g+112>>2]|0;do{if((w|0)!=-1){if((j&8|0)!=0){break}if((dd[c[(c[o+532>>2]|0)+104>>2]&1](o,w,h,j,c[o+104>>2]|0,f+76|0,u)|0)!=0){break}b[f+110>>1]=0;b[f+108>>1]=0;c[f+24>>2]=d[u+1|0]<<6;c[f+28>>2]=d[v]<<6;q=a[u+2|0]|0;c[f+32>>2]=q<<6;p=a[u+3|0]|0;c[f+36>>2]=p<<6;c[f+40>>2]=d[u+4|0]<<6;m=a[u+5|0]|0;c[f+44>>2]=m<<6;r=a[u+6|0]|0;c[f+48>>2]=r<<6;c[f+52>>2]=d[u+7|0]<<6;c[f+72>>2]=1651078259;u=f+100|0;if((j&16|0)==0){c[u>>2]=q;c[f+104>>2]=p}else{c[u>>2]=m;c[f+104>>2]=r}if((c[o+8>>2]&1|0)==0){K=0;i=k;return K|0}p=c[t>>2]|0;q=c[p+104>>2]|0;bX(s|0,0,208)|0;do{if((c[(c[p+128>>2]|0)+52>>2]|0)==0){m=pd[c[p+508>>2]&63](p,1735162214,q,0)|0;if((m|0)==0){c[n+84>>2]=IK(q)|0;l=22;break}else if((m|0)==142){c[n+84>>2]=0;l=22;break}else{break}}else{c[n+84>>2]=0;l=22}}while(0);if((l|0)==22){c[n+16>>2]=j;c[s>>2]=p;c[n+4>>2]=g;c[n+8>>2]=f;c[n+24>>2]=q}cS(n,h,0,1)|0;g=f+56|0;c[g>>2]=c[n+60>>2];c[f+60>>2]=(c[n+48>>2]|0)+(c[n+176>>2]|0)-(c[n+180>>2]|0);if((c[o+480>>2]|0)==0){K=0;i=k;return K|0}if((j&512|0)!=0){K=0;i=k;return K|0}c[g>>2]=e[o+226>>1]|0;K=0;i=k;return K|0}}while(0);o=(j&1|0)!=0;do{if(!o){if((a[g+108|0]|0)==0){x=36}else{break}i=k;return x|0}}while(0);if((j&16384|0)!=0){K=6;i=k;return K|0}v=c[t>>2]|0;u=c[v+104>>2]|0;bX(s|0,0,208)|0;t=(j&2|0)==0;if(t){w=g+301|0;do{if((a[w]|0)==0){z=g+300|0;a:do{if((a[z]|0)==0){E=c[g>>2]|0;F=c[E+100>>2]|0;H=E+260|0;a[z]=1;a[w]=0;L=e[H+20>>1]|0;c[g+120>>2]=L;K=g+132|0;c[K>>2]=e[H+22>>1]|0;C=g+116|0;c[C>>2]=0;A=g+128|0;c[A>>2]=0;z=g+140|0;c[z>>2]=0;B=g+144|0;c[B>>2]=0;J=g+240|0;c[J>>2]=c[E+668>>2];I=g+248|0;b[I>>1]=b[H+18>>1]|0;M=g+72|0;a[M+37|0]=0;a[M+38|0]=0;bX(g+92|0,0,16)|0;c[g+124>>2]=oJ(F,16,0,L,0,G)|0;b:do{if((c[x>>2]|0)==0){c[g+136>>2]=oJ(F,16,0,c[K>>2]|0,0,G)|0;if((c[x>>2]|0)!=0){break}c[g+244>>2]=oJ(F,4,0,c[J>>2]|0,0,G)|0;if((c[x>>2]|0)!=0){break}c[g+252>>2]=oJ(F,4,0,e[I>>1]|0,0,G)|0;if((c[x>>2]|0)!=0){break}I=(b[H+16>>1]|0)+4<<16>>16;H=g+256|0;bX(H|0,0,36)|0;c[H>>2]=F;J=I&65535;G=H+12|0;c[G>>2]=oJ(F,8,0,J,0,D)|0;K=c[y>>2]|0;do{if((K|0)==0){c[H+16>>2]=oJ(F,8,0,J,0,D)|0;K=c[y>>2]|0;if((K|0)!=0){l=41;break}c[H+20>>2]=oJ(F,8,0,J,0,D)|0;K=c[y>>2]|0;if((K|0)!=0){l=41;break}c[H+24>>2]=oJ(F,1,0,J,0,D)|0;K=c[y>>2]|0;if((K|0)!=0){l=41;break}c[H+28>>2]=oJ(F,2,0,0,0,D)|0;K=c[y>>2]|0;if((K|0)!=0){l=41;break}b[H+4>>1]=I;b[H+6>>1]=0;c[x>>2]=0}else{l=41}}while(0);do{if((l|0)==41){D=c[H>>2]|0;if((D|0)==0){c[x>>2]=K;break b}else{M=H+28|0;lJ(D,c[M>>2]|0);c[M>>2]=0;M=H+24|0;lJ(D,c[M>>2]|0);c[M>>2]=0;M=H+16|0;lJ(D,c[M>>2]|0);c[M>>2]=0;lJ(D,c[G>>2]|0);c[G>>2]=0;M=H+20|0;lJ(D,c[M>>2]|0);c[M>>2]=0;bX(H|0,0,12)|0;M=c[y>>2]|0;c[x>>2]=M;if((M|0)==0){break}else{break b}}}}while(0);b[H+8>>1]=I;$W(g+172|0,273472,68)|0;y=c[(c[(c[E+96>>2]|0)+4>>2]|0)+180>>2]|0;c[E+688>>2]=(y|0)==0?257:y;y=c[g>>2]|0;if((a[g+292|0]|0)==0){D=(c[y+96>>2]|0)+40|0}else{D=g+296|0}D=c[D>>2]|0;do{if((D|0)==0){y=153}else{gS(D,y,g);c[D+428>>2]=0;c[D+16>>2]=0;c[D+476>>2]=64;c[D+480>>2]=0;c[D+484>>2]=0;a[D+488|0]=0;c[D+564>>2]=65536;b[D+252>>1]=0;c[D+260>>2]=0;bX(D+216|0,0,12)|0;c[D+256>>2]=65536;F=c[y+656>>2]|0;M=y+652|0;E=c[M>>2]|0;c[D+444>>2]=F;c[D+448>>2]=E;bX(D+452|0,0,16)|0;if((c[M>>2]|0)!=0){c[D+356>>2]=F;c[D+364>>2]=E;c[D+360>>2]=0;c[D+352>>2]=1;y=jd[c[y+688>>2]&511](D)|0;if((y|0)!=0){break}}c[C>>2]=c[D+396>>2];c[A>>2]=c[D+408>>2];c[z>>2]=c[D+420>>2];c[B>>2]=c[D+424>>2];K=D+444|0;L=c[K+4>>2]|0;M=g+148|0;c[M>>2]=c[K>>2];c[M+4>>2]=L;M=D+452|0;L=c[M+4>>2]|0;K=g+156|0;c[K>>2]=c[M>>2];c[K+4>>2]=L;K=D+460|0;L=c[K+4>>2]|0;M=g+164|0;c[M>>2]=c[K>>2];c[M+4>>2]=L;break a}}while(0);c[x>>2]=y}}while(0);SR(g);x=c[x>>2]|0;if((x|0)==0){break}i=k;return x|0}}while(0);if((a[w]|0)!=0){break}y=g+240|0;if((c[y>>2]|0)!=0){z=(c[g>>2]|0)+672|0;A=g+88|0;B=g+244|0;x=0;do{M=aJ(b[(c[z>>2]|0)+(x<<1)>>1]|0,c[A>>2]|0)|0;c[(c[B>>2]|0)+(x<<2)>>2]=M;x=x+1|0;}while(x>>>0<(c[y>>2]|0)>>>0)}y=g+264|0;if((b[y>>1]|0)!=0){x=g+268|0;z=g+272|0;A=0;do{c[(c[x>>2]|0)+(A<<3)>>2]=0;c[(c[x>>2]|0)+(A<<3)+4>>2]=0;c[(c[z>>2]|0)+(A<<3)>>2]=0;c[(c[z>>2]|0)+(A<<3)+4>>2]=0;A=A+1|0;}while(A>>>0<(e[y>>1]|0)>>>0)}x=g+248|0;if((b[x>>1]|0)!=0){y=g+252|0;z=0;do{c[(c[y>>2]|0)+(z<<2)>>2]=0;z=z+1|0;}while(z>>>0<(e[x>>1]|0)>>>0)}$W(g+172|0,273472,68)|0;x=hS(g)|0;if((x|0)==0){a[w]=1;break}else{M=x;i=k;return M|0}}}while(0);if((a[g+292|0]|0)==0){w=(c[v+96>>2]|0)+40|0}else{w=g+296|0}w=c[w>>2]|0;if((w|0)==0){M=153;i=k;return M|0}x=(j&983040|0)!=131072;gS(w,v,g);y=w+604|0;if((x&1|0)!=(d[y]|0)){a[y]=x&1;y=g+240|0;if((c[y>>2]|0)!=0){z=v+672|0;A=g+88|0;B=g+244|0;x=0;do{M=aJ(b[(c[z>>2]|0)+(x<<1)>>1]|0,c[A>>2]|0)|0;c[(c[B>>2]|0)+(x<<2)>>2]=M;x=x+1|0;}while(x>>>0<(c[y>>2]|0)>>>0)}hS(g)|0}x=a[w+336|0]|0;if((x&2)!=0){$W(w+284|0,273472,68)|0}a[w+561|0]=j&255&-128;c[n+160>>2]=w;c[n+164>>2]=c[w+392>>2];j=(x&1)<<1|j}do{if((c[(c[v+128>>2]|0)+52>>2]|0)==0){w=pd[c[v+508>>2]&63](v,1735162214,u,0)|0;if((w|0)==0){c[n+84>>2]=IK(u)|0;break}else if((w|0)==142){c[n+84>>2]=0;break}else{M=w;i=k;return M|0}}else{c[n+84>>2]=0}}while(0);w=c[c[f+156>>2]>>2]|0;kJ(w);x=n+12|0;c[x>>2]=w;w=n+16|0;c[w>>2]=j;c[s>>2]=v;v=n+4|0;c[v>>2]=g;y=n+8|0;c[y>>2]=f;c[n+24>>2]=u;A=f+72|0;c[A>>2]=1869968492;B=f+128|0;c[B>>2]=0;z=f+108|0;j=f+124|0;c[j>>2]=0;u=cS(n,h,0,0)|0;c:do{if((u|0)==0){x=c[x>>2]|0;do{if((c[A>>2]|0)==1668246896){c[B>>2]=c[x+48>>2];c[f+132>>2]=c[x+52>>2]}else{$W(z|0,x+20|0,20)|0;c[j>>2]=c[j>>2]&-513;f=c[n+68>>2]|0;if((f|0)==0){break}HJ(z,0-f|0,0)}}while(0);do{if(t){f=c[n+160>>2]|0;if((a[f+337|0]|0)==0){c[j>>2]=c[j>>2]|8;break}f=c[f+340>>2]|0;if((f|0)==4){c[j>>2]=c[j>>2]|48;break}else if((f|0)==5){c[j>>2]=c[j>>2]|16;break}else if((f|0)==1){break}else if((f|0)==0){c[j>>2]=c[j>>2]|32;break}else{c[j>>2]=c[j>>2]|8;break}}}while(0);x=c[s>>2]|0;s=c[y>>2]|0;A=c[v>>2]|0;if((c[w>>2]&1|0)==0){v=c[A+20>>2]|0}else{v=65536}if((c[s+72>>2]|0)==1668246896){$W(r|0,n+36|0,16)|0}else{zK(s+108|0,q)}f=c[n+60>>2]|0;z=x+480|0;do{if((c[z>>2]|0)!=0){if((c[w>>2]&512|0)!=0){break}f=e[x+226>>1]|0}}while(0);c[s+56>>2]=f;t=s+32|0;c[t>>2]=c[r>>2];y=q+12|0;c[s+36>>2]=c[y>>2];f=s+40|0;c[f>>2]=(c[n+76>>2]|0)-(c[n+68>>2]|0);d:do{if((c[z>>2]|0)==0){if((c[w>>2]&2|0)!=0){break}F=e[A+12>>1]|0;C=c[x+752>>2]|0;D=c[x+740>>2]|0;A=c[x+748>>2]|0;if((A|0)==0){break}E=c[x+756>>2]|0;B=0;while(1){z=B+1|0;if((d[E+B|0]|0)==(F|0)){break}if(z>>>0>>0){B=z}else{break d}}if((h+2|0)>>>0>=C>>>0){break}z=D+(h+10+(da(B,C)|0))|0;if((z|0)==0){break}c[f>>2]=d[z]<<6}}while(0);c[s+24>>2]=(c[q+8>>2]|0)-(c[r>>2]|0);q=q+4|0;c[s+28>>2]=(c[y>>2]|0)-(c[q>>2]|0);do{if((a[x+296|0]|0)==0){l=117}else{if((b[x+334>>1]|0)==0){l=117;break}r=n+188|0;q=(bJ((c[r>>2]|0)-(c[y>>2]|0)|0,v)|0)<<16>>16;r=c[r>>2]|0;n=c[n+196>>2]|0;if((r|0)<=(n|0)){n=0;break}n=(bJ(r-n|0,v)|0)&65535}}while(0);if((l|0)==117){l=(bJ((c[y>>2]|0)-(c[q>>2]|0)|0,v)|0)<<16>>16;n=x+368|0;if((b[n>>1]|0)==-1){q=x+216|0;q=(b[q+4>>1]|0)-(b[q+6>>1]|0)|0}else{q=(b[n+70>>1]|0)-(b[n+72>>1]|0)|0}n=q;q=(q-l|0)/2|0}l=c[(c[x+128>>2]|0)+52>>2]|0;do{if((l|0)!=0){if((c[(c[l>>2]|0)+8>>2]|0)==0){break}c[p>>2]=0;p=m+4|0;c[p>>2]=q;q=m+8|0;c[q>>2]=n;if((pd[c[(c[l>>2]|0)+8>>2]&63](c[l+4>>2]|0,h,1,m)|0)!=0){break c}n=c[q>>2]|0;q=c[p>>2]|0}}while(0);c[s+60>>2]=n;if((c[w>>2]&1|0)==0){q=aJ(q,v)|0;n=aJ(n,v)|0}c[s+44>>2]=(c[t>>2]|0)-((c[f>>2]|0)/2|0);c[s+48>>2]=q;c[s+52>>2]=n}}while(0);if(o){M=u;i=k;return M|0}if((e[g+14>>1]|0)>=24){M=u;i=k;return M|0}c[j>>2]=c[j>>2]|256;M=u;i=k;return M|0}function iR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=c[a+532>>2]|0;c[e>>2]=0;c[e+4>>2]=0;if((g|0)==0){i=f;return 0}c[e>>2]=sd[c[g+128>>2]&127](a,b,d)|0;i=f;return 0}function jR(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;r=i;i=i+8|0;p=r;q=i;i=i+8|0;l=q;m=i;i=i+8|0;o=i;i=i+8|0;n=o;s=h&512;t=(g|0)==0;if((h&16|0)!=0){if(t){i=k;return 0}o=d+296|0;m=d+68|0;n=d+532|0;s=0;do{if((a[o]|0)==0){b[r>>1]=0;h=b[m>>1]|0;b[q>>1]=h}else{Cd[c[(c[n>>2]|0)+156>>2]&63](d,1,s+f|0,p,l)|0;h=b[q>>1]|0}c[j+(s<<2)>>2]=h&65535;s=s+1|0;}while(s>>>0>>0);i=k;return 0}if(t){i=k;return 0}l=d+532|0;q=d+480|0;p=d+226|0;if((s|0)==0){r=0}else{p=0;do{Cd[c[(c[l>>2]|0)+156>>2]&63](d,0,p+f|0,m,n)|0;c[j+(p<<2)>>2]=e[o>>1]|0;p=p+1|0;}while(p>>>0>>0);i=k;return 0}do{Cd[c[(c[l>>2]|0)+156>>2]&63](d,0,r+f|0,m,n)|0;if((c[q>>2]|0)!=0){b[o>>1]=b[p>>1]|0}c[j+(r<<2)>>2]=e[o>>1]|0;r=r+1|0;}while(r>>>0>>0);i=k;return 0}function kR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=i;i=i+8|0;f=c[a>>2]|0;do{if((c[f+8>>2]&2|0)==0){e=f;f=0}else{f=sd[c[(c[f+532>>2]|0)+148>>2]&127](f,b,e)|0;if((f|0)!=0){c[a+112>>2]=-1;e=c[a>>2]|0;break}e=c[e>>2]|0;f=c[a>>2]|0;b=a+112|0;c[b>>2]=e;if((c[f+8>>2]&1|0)!=0){YJ(f,e);bS(a)|0;f=0;i=d;return f|0}a=sd[c[(c[f+532>>2]|0)+152>>2]&127](f,e,a+12|0)|0;if((a|0)==0){f=0;i=d;return f|0}c[b>>2]=-1;f=a;i=d;return f|0}}while(0);_J(e,b);if((c[(c[a>>2]|0)+8>>2]&1|0)==0){i=d;return f|0}f=bS(a)|0;i=d;return f|0}function lR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;f=c[a>>2]|0;e=a+112|0;c[e>>2]=b;if((c[f+8>>2]&1|0)!=0){YJ(f,b);bS(a)|0;b=0;i=d;return b|0}a=sd[c[(c[f+532>>2]|0)+152>>2]&127](f,b,a+12|0)|0;if((a|0)==0){b=0;i=d;return b|0}c[e>>2]=-1;b=a;i=d;return b|0}function mR(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;f=i;i=i+8|0;e=i;i=i+8|0;g=c[a+8>>2]|0;a=a+40|0;h=c[a>>2]|0;if((h|0)!=0){l=h;i=d;return l|0}h=jJ(g,608,e)|0;if((c[e>>2]|0)!=0){l=0;i=d;return l|0}l=h+8|0;c[l>>2]=g;j=h+432|0;c[j>>2]=32;k=h+436|0;c[k>>2]=oJ(g,16,0,32,0,f)|0;do{if((c[f>>2]|0)==0){b[h+440>>1]=0;b[h+442>>1]=0;c[h+20>>2]=0;c[h+388>>2]=0;c[h+24>>2]=0;c[h+392>>2]=0;c[h>>2]=0;c[h+4>>2]=0;c[e>>2]=0}else{l=c[l>>2]|0;b[h+440>>1]=0;b[h+442>>1]=0;g=h+24|0;lJ(l,c[g>>2]|0);c[g>>2]=0;c[h+20>>2]=0;lJ(l,c[k>>2]|0);c[k>>2]=0;c[j>>2]=0;c[h+428>>2]=0;k=h+392|0;lJ(l,c[k>>2]|0);c[k>>2]=0;c[h+388>>2]=0;c[h+4>>2]=0;c[h>>2]=0;lJ(l,h);l=c[f>>2]|0;c[e>>2]=l;if((l|0)==0){break}else{e=0}i=d;return e|0}}while(0);c[a>>2]=h;l=h;i=d;return l|0}function nR(f){f=f|0;var 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,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,za=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,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0;g=i;k=i;i=i+40|0;Gb=i;i=i+8|0;l=Gb;Ja=i;i=i+8|0;G=Ja;D=i;i=i+8|0;H=D;t=i;i=i+40|0;o=i;i=i+8|0;u=o;q=i;i=i+8|0;r=q;p=i;i=i+8|0;s=p;z=i;i=i+40|0;A=i;i=i+8|0;w=i;i=i+8|0;x=w;v=i;i=i+8|0;y=v;n=i;i=i+16|0;m=n;c[f+256>>2]=0;B=f+592|0;if((b[f+216>>1]|0)==(b[f+218>>1]|0)){c[B>>2]=198;c[f+596>>2]=153;c[f+600>>2]=154}else{c[B>>2]=197;c[f+596>>2]=151;c[f+600>>2]=152}uR(f);E=f+312|0;switch(c[E>>2]&255|0){case 7:{F=f+568|0;c[F>>2]=86;break};case 5:{F=f+568|0;c[F>>2]=79;break};case 6:{F=f+568|0;c[F>>2]=85;break};case 0:{F=f+568|0;c[F>>2]=83;break};case 2:{F=f+568|0;c[F>>2]=84;break};case 1:{F=f+568|0;c[F>>2]=80;break};case 4:{F=f+568|0;c[F>>2]=81;break};case 3:{F=f+568|0;c[F>>2]=82;break};default:{F=f+568|0}}ea=f+360|0;ba=f+356|0;La=f+368|0;Na=f+372|0;ca=f+364|0;Fb=f+16|0;$=f+28|0;Z=f+32|0;Eb=f+20|0;aa=f+376|0;h=f+12|0;_=f+24|0;ta=f+72|0;S=f+80|0;gb=f+380|0;Ka=f+284|0;T=f+44|0;Y=f+328|0;X=f+324|0;wa=f+346|0;Ha=f+48|0;qa=f+298|0;Fa=f+84|0;pa=f+300|0;N=f+88|0;P=f+52|0;Da=f+576|0;ra=f+572|0;mb=f+316|0;sa=f+584|0;C=f+286|0;Ea=f+288|0;Qa=f+308|0;va=f+344|0;Pa=f+320|0;M=f+561|0;Ga=f+92|0;Ia=f+56|0;kb=f+220|0;lb=f+224|0;ja=f+416|0;ka=f+408|0;ha=f+428|0;ia=f+432|0;ga=f+436|0;fa=f+352|0;j=f+488|0;Ra=f+294|0;Sa=f+296|0;eb=f+290|0;fb=f+292|0;V=f+294|0;R=f+116|0;O=f+124|0;W=f+290|0;U=f+298|0;Q=f+132|0;ua=f+36|0;K=f+180|0;L=f+144|0;J=f+108|0;I=f+348|0;Aa=f+304|0;oa=f+60|0;na=f+420|0;la=f+404|0;ma=f+396|0;Oa=f+400|0;db=f+264|0;Ta=f+154|0;bb=f+156|0;_a=f+160|0;$a=m+4|0;ab=f+164|0;Xa=m+8|0;Ya=f+152|0;Za=m+12|0;Va=f+172|0;Wa=f+176|0;Ua=f+168|0;cb=t+16|0;xa=k+16|0;za=f+118|0;ya=f+136|0;Ba=f+120|0;Ca=f+128|0;Ma=f+588|0;ib=f+468|0;hb=f+472|0;jb=f+596|0;nb=f+332|0;ob=f+334|0;pb=f+260|0;qb=f+384|0;rb=f+600|0;sb=f+476|0;ub=f+484|0;tb=f+480|0;wb=f+282|0;vb=f+337|0;xb=f+281|0;yb=f+252|0;Bb=f+604|0;Ab=f+412|0;zb=f+424|0;Cb=f+340|0;Db=f+336|0;Pb=c[ea>>2]|0;Hb=0;a:while(1){Nb=c[ba>>2]|0;Mb=a[Nb+Pb|0]|0;a[La]=Mb;Tb=Mb&255;Ub=a[273544+Tb|0]|0;c[Na>>2]=Ub;Ob=c[ca>>2]|0;if((Tb&254|0)==64){if((Pb|0)>=(Ob|0)){Lb=745;break}Ub=2-(da(d[Nb+(Pb+1)|0]|0,Ub)|0)|0;c[Na>>2]=Ub}Vb=Ub+Pb|0;if((Vb|0)>(Ob|0)){Lb=745;break}Qb=c[Fb>>2]|0;Ib=d[273800+Tb|0]|0;Kb=Qb-(Ib>>>4)|0;c[$>>2]=Kb;if((Kb|0)<0){Lb=20;break}Sb=(Ib&15)+Kb|0;c[Z>>2]=Sb;Rb=c[Eb>>2]|0;if(Sb>>>0>Rb>>>0){Lb=22;break}a[aa]=1;c[h>>2]=0;Jb=c[_>>2]|0;Ib=Jb+(Kb<<2)|0;b:do{switch(Tb|0){case 21:{Jb=c[Ib>>2]|0;if((Jb|0)==0){$W(J|0,K|0,36)|0}else if((Jb|0)==1){$W(J|0,L|0,36)|0}else{if((a[M]|0)==0){Lb=723;break b}else{Lb=73;break a}}b[I>>1]=c[Ib>>2];Lb=723;break};case 15:{Mb=c[Ib>>2]|0;Ob=c[Jb+(Kb+1<<2)>>2]|0;Lb=c[Jb+(Kb+2<<2)>>2]|0;Ib=c[Jb+(Kb+3<<2)>>2]&65535;Nb=e[T>>1]|0;do{if(Ib>>>0>>0){Jb=c[Jb+(Kb+4<<2)>>2]&65535;if(Jb>>>0>=Nb>>>0){break}Kb=Ob&65535;Nb=e[S>>1]|0;if(Kb>>>0>=Nb>>>0){break}Lb=Lb&65535;if(Lb>>>0>=Nb>>>0){break}Qb=Mb&65535;if(Qb>>>0>=(e[R>>1]|0)>>>0){break}Ub=c[P>>2]|0;Pb=c[Ub+(Ib<<3)>>2]|0;Rb=(c[Ub+(Jb<<3)>>2]|0)-Pb|0;Nb=c[Ub+(Jb<<3)+4>>2]|0;Ub=c[Ub+(Ib<<3)+4>>2]|0;Mb=c[N>>2]|0;Ob=c[Mb+(Kb<<3)>>2]|0;Tb=(c[Mb+(Lb<<3)>>2]|0)-Ob|0;Sb=c[Mb+(Kb<<3)+4>>2]|0;Mb=(c[Mb+(Lb<<3)+4>>2]|0)-Sb|0;Vb=(c[Q>>2]|0)+Qb|0;a[Vb]=a[Vb]|24;Nb=Ub-Nb|0;Vb=_I(Tb,Nb,64)|0;Vb=(_I(Mb,Rb,64)|0)+Vb|0;if((((Vb|0)<0?0-Vb|0:Vb)|0)>63){Lb=_I(Pb-Ob|0,Nb,64)|0;Lb=(_I(Ub-Sb|0,Rb,64)|0)+Lb|0;Ub=_I(Lb,Tb,Vb)|0;Lb=_I(Lb,Mb,Vb)|0;c[(c[O>>2]|0)+(Qb<<3)>>2]=(c[(c[N>>2]|0)+(Kb<<3)>>2]|0)+Ub;c[(c[O>>2]|0)+(Qb<<3)+4>>2]=(c[(c[N>>2]|0)+(Kb<<3)+4>>2]|0)+Lb;Lb=723;break b}else{Vb=c[N>>2]|0;Ub=c[P>>2]|0;c[(c[O>>2]|0)+(Qb<<3)>>2]=((c[Vb+(Lb<<3)>>2]|0)+(c[Vb+(Kb<<3)>>2]|0)+(c[Ub+(Ib<<3)>>2]|0)+(c[Ub+(Jb<<3)>>2]|0)|0)/4|0;Ub=c[N>>2]|0;Vb=c[P>>2]|0;c[(c[O>>2]|0)+(Qb<<3)+4>>2]=((c[Ub+(Lb<<3)+4>>2]|0)+(c[Ub+(Kb<<3)+4>>2]|0)+(c[Vb+(Ib<<3)+4>>2]|0)+(c[Vb+(Jb<<3)+4>>2]|0)|0)/4|0;Lb=723;break b}}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=50;break a}break};case 11:{vR(c[Ib>>2]<<16>>16,c[Jb+(Kb+1<<2)>>2]<<16>>16,U);uR(f);Lb=723;break};case 9:case 8:{Vb=c[Jb+(Kb+1<<2)>>2]|0;Ib=c[Ib>>2]|0;Jb=Vb&65535;do{if((e[R>>1]|0)>(Vb&65535)){if((e[S>>1]|0)<=(Ib&65535)){break}Vb=Ib&65535;Ub=c[N>>2]|0;Kb=c[O>>2]|0;Ib=(c[Ub+(Vb<<3)>>2]|0)-(c[Kb+(Jb<<3)>>2]|0)|0;Jb=(c[Ub+(Vb<<3)+4>>2]|0)-(c[Kb+(Jb<<3)+4>>2]|0)|0;Kb=(Mb&1)==0;vR(Kb?Ib:0-Jb|0,Kb?Jb:Ib,U);uR(f);Lb=723;break b}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=37;break a}break};case 10:{vR(c[Ib>>2]<<16>>16,c[Jb+(Kb+1<<2)>>2]<<16>>16,V);Vb=V;Vb=e[Vb>>1]|e[Vb+2>>1]<<16;Lb=W;b[Lb>>1]=Vb;b[Lb+2>>1]=Vb>>>16;uR(f);Lb=723;break};case 30:{c[X>>2]=c[Ib>>2];Lb=723;break};case 31:{c[Y>>2]=c[Ib>>2]>>10;Lb=723;break};case 32:{c[Jb+(Kb+1<<2)>>2]=c[Ib>>2];Lb=723;break};case 34:{c[Z>>2]=0;Lb=723;break};case 38:{Ib=c[Ib>>2]|0;if((Ib|0)<1|(Kb|0)<(Ib|0)){Lb=110;break a}Vb=Kb-Ib|0;Ub=Jb+(Vb<<2)|0;Lb=c[Ub>>2]|0;aX(Ub|0,Jb+(Vb+1<<2)|0,(Ib<<2)+ -4|0)|0;c[(c[_>>2]|0)+((c[$>>2]|0)+ -1<<2)>>2]=Lb;Lb=723;break};case 40:{Jb=c[ja>>2]|0;Vb=c[ka>>2]|0;Ib=Jb+(Vb<<4)|0;c:do{if((Vb|0)>0){while(1){if(Mb<<24>>24==(c[Jb+8>>2]&255)<<24>>24){if((a[Jb+12|0]|0)!=0){break}}Jb=Jb+16|0;if(Jb>>>0>=Ib>>>0){break c}}Ib=c[ha>>2]|0;if((Ib|0)>=(c[ia>>2]|0)){Lb=121;break a}Vb=c[ga>>2]|0;c[ha>>2]=Ib+1;c[Vb+(Ib<<4)>>2]=c[fa>>2];c[Vb+(Ib<<4)+4>>2]=(c[ea>>2]|0)+1;c[Vb+(Ib<<4)+8>>2]=1;Lb=Jb+4|0;c[Vb+(Ib<<4)+12>>2]=c[Lb>>2];Ib=c[Jb>>2]|0;Jb=c[Lb>>2]|0;Lb=Ib+ -1|0;do{if(Lb>>>0>2){c[h>>2]=132}else{Kb=c[f+444+(Lb<<3)>>2]|0;if((Kb|0)==0){c[h>>2]=138;break}Lb=c[f+444+(Lb<<3)+4>>2]|0;if(Lb>>>0>>0){c[h>>2]=131;break}else{c[ba>>2]=Kb;c[ca>>2]=Lb;c[ea>>2]=Jb;c[fa>>2]=Ib;break}}}while(0);a[aa]=0;Lb=723;break b}}while(0);c[h>>2]=128;Lb=724;break};case 42:{Jb=c[Jb+(Kb+1<<2)>>2]|0;Kb=(c[na>>2]|0)+1|0;if(Jb>>>0>=Kb>>>0){Lb=155;break a}Nb=c[la>>2]|0;Mb=c[ma>>2]|0;if((Kb|0)==(Mb|0)){if((c[Nb+(Jb<<4)+8>>2]|0)==(Jb|0)){Nb=Nb+(Jb<<4)|0}else{Lb=139}}else{Lb=139}if((Lb|0)==139){Kb=Nb+(Mb<<4)|0;d:do{if((Mb|0)>0){while(1){Lb=Nb+16|0;if((c[Nb+8>>2]|0)==(Jb|0)){break d}if(Lb>>>0>>0){Nb=Lb}else{Nb=Lb;break}}}}while(0);if((Nb|0)==(Kb|0)){Lb=155;break a}}if((a[Nb+12|0]|0)==0){Lb=155;break a}Jb=c[ha>>2]|0;if((Jb|0)>=(c[ia>>2]|0)){Lb=145;break a}if((c[Ib>>2]|0)<=0){Lb=723;break b}Lb=c[ga>>2]|0;c[Lb+(Jb<<4)>>2]=c[fa>>2];c[Lb+(Jb<<4)+4>>2]=(c[ea>>2]|0)+1;c[Lb+(Jb<<4)+8>>2]=c[Ib>>2];Kb=Nb+4|0;c[Lb+(Jb<<4)+12>>2]=c[Kb>>2];c[ha>>2]=(c[ha>>2]|0)+1;Jb=c[Nb>>2]|0;Kb=c[Kb>>2]|0;Lb=Jb+ -1|0;do{if(Lb>>>0>2){c[h>>2]=132}else{Ib=c[f+444+(Lb<<3)>>2]|0;if((Ib|0)==0){c[h>>2]=138;break}Lb=c[f+444+(Lb<<3)+4>>2]|0;if(Lb>>>0>>0){c[h>>2]=131;break}else{c[ba>>2]=Ib;c[ca>>2]=Lb;c[ea>>2]=Kb;c[fa>>2]=Jb;break}}}while(0);a[aa]=0;Lb=723;break};case 41:{Jb=c[Ib>>2]&65535;if(Jb>>>0<(e[T>>1]|0)>>>0){Ib=(b[qa>>1]|0)==0?-1:-9;Jb=(c[oa>>2]|0)+Jb|0;a[Jb]=((b[pa>>1]|0)==0?Ib:Ib&-17)&a[Jb];Lb=723;break b}else{if((a[M]|0)==0){Lb=723;break b}else{Lb=134;break a}}break};case 35:{Vb=c[Ib>>2]|0;Lb=Jb+(Kb+1<<2)|0;c[Ib>>2]=c[Lb>>2];c[Lb>>2]=Vb;Lb=723;break};case 36:{c[Ib>>2]=Qb;Lb=723;break};case 37:{Lb=c[Ib>>2]|0;if((Lb|0)<1|(Lb|0)>(Kb|0)){Lb=107;break a}c[Ib>>2]=c[Jb+(Kb-Lb<<2)>>2];Lb=723;break};case 43:{Ib=c[Ib>>2]|0;Jb=(c[na>>2]|0)+1|0;if(Jb>>>0<=Ib>>>0){Lb=174;break a}Kb=c[la>>2]|0;Mb=c[ma>>2]|0;if((Jb|0)==(Mb|0)){if((c[Kb+(Ib<<4)+8>>2]|0)==(Ib|0)){Kb=Kb+(Ib<<4)|0}else{Lb=159}}else{Lb=159}if((Lb|0)==159){Jb=Kb+(Mb<<4)|0;e:do{if((Mb|0)>0){while(1){Lb=Kb+16|0;if((c[Kb+8>>2]|0)==(Ib|0)){break e}if(Lb>>>0>>0){Kb=Lb}else{Kb=Lb;break}}}}while(0);if((Kb|0)==(Jb|0)){Lb=174;break a}}if((a[Kb+12|0]|0)==0){Lb=174;break a}Ib=c[ha>>2]|0;if((Ib|0)>=(c[ia>>2]|0)){Lb=165;break a}Vb=c[ga>>2]|0;c[Vb+(Ib<<4)>>2]=c[fa>>2];c[Vb+(Ib<<4)+4>>2]=(c[ea>>2]|0)+1;c[Vb+(Ib<<4)+8>>2]=1;Lb=Kb+4|0;c[Vb+(Ib<<4)+12>>2]=c[Lb>>2];c[ha>>2]=(c[ha>>2]|0)+1;Kb=c[Kb>>2]|0;Ib=c[Lb>>2]|0;Lb=Kb+ -1|0;do{if(Lb>>>0>2){c[h>>2]=132}else{Jb=c[f+444+(Lb<<3)>>2]|0;if((Jb|0)==0){c[h>>2]=138;break}Lb=c[f+444+(Lb<<3)+4>>2]|0;if(Lb>>>0>>0){c[h>>2]=131;break}else{c[ba>>2]=Jb;c[ca>>2]=Lb;c[ea>>2]=Ib;c[fa>>2]=Kb;break}}}while(0);a[aa]=0;Lb=723;break};case 14:{Vb=V;Vb=e[Vb>>1]|e[Vb+2>>1]<<16;Lb=U;b[Lb>>1]=Vb;b[Lb+2>>1]=Vb>>>16;uR(f);Lb=723;break};case 7:case 6:{Vb=c[Jb+(Kb+1<<2)>>2]|0;Ib=c[Ib>>2]|0;Jb=Vb&65535;do{if((e[R>>1]|0)>(Vb&65535)){if((e[S>>1]|0)<=(Ib&65535)){break}Vb=Ib&65535;Ub=c[N>>2]|0;Kb=c[O>>2]|0;Ib=(c[Ub+(Vb<<3)>>2]|0)-(c[Kb+(Jb<<3)>>2]|0)|0;Jb=(c[Ub+(Vb<<3)+4>>2]|0)-(c[Kb+(Jb<<3)+4>>2]|0)|0;Kb=(Mb&1)==0;vR(Kb?Ib:0-Jb|0,Kb?Jb:Ib,V);Vb=V;Vb=e[Vb>>1]|e[Vb+2>>1]<<16;Lb=W;b[Lb>>1]=Vb;b[Lb+2>>1]=Vb>>>16;uR(f);Lb=723;break b}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=32;break a}break};case 39:{Ib=c[Ib>>2]|0;Lb=c[Jb+(Kb+1<<2)>>2]|0;Jb=Ib&65535;Kb=Lb&65535;Ib=Ib&65535;do{if(Ib>>>0<(e[S>>1]|0)>>>0){Lb=Lb&65535;if(Lb>>>0>=(e[T>>1]|0)>>>0){break}Ub=c[P>>2]|0;Vb=c[N>>2]|0;Lb=(sd[c[ra>>2]&127](f,(c[Ub+(Lb<<3)>>2]|0)-(c[Vb+(Ib<<3)>>2]|0)|0,(c[Ub+(Lb<<3)+4>>2]|0)-(c[Vb+(Ib<<3)+4>>2]|0)|0)|0)/2|0;Jd[c[sa>>2]&63](f,ta,Jb,Lb);Jd[c[sa>>2]&63](f,ua,Kb,0-Lb|0);Lb=723;break b}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=115;break a}break};case 13:{c[Ib>>2]=b[qa>>1]|0;c[Jb+(Kb+1<<2)>>2]=b[pa>>1]|0;Lb=723;break};case 22:{Jb=c[Ib>>2]|0;if((Jb|0)==0){$W(ua|0,K|0,36)|0}else if((Jb|0)==1){$W(ua|0,L|0,36)|0}else{if((a[M]|0)==0){Lb=723;break b}else{Lb=79;break a}}$W(ta|0,ua|0,36)|0;$W(J|0,ua|0,36)|0;b[va>>1]=c[Ib>>2];b[wa>>1]=c[Ib>>2];b[I>>1]=c[Ib>>2];Lb=723;break};case 20:{Jb=c[Ib>>2]|0;if((Jb|0)==0){$W(ta|0,K|0,36)|0}else if((Jb|0)==1){$W(ta|0,L|0,36)|0}else{if((a[M]|0)==0){Lb=723;break b}else{Lb=67;break a}}b[wa>>1]=c[Ib>>2];Lb=723;break};case 55:case 54:{if((c[Ib>>2]|0)>>>0>1){if((a[M]|0)==0){Lb=723;break b}else{Lb=268;break a}}if((GR(f,G,H,k,l)|0)<<24>>24!=0){Lb=723;break b}Ib=b[I>>1]|0;do{if(Ib<<16>>16==0){Ib=b[R>>1]|0;Kb=Ib<<16>>16==0?0:Ib+ -1<<16>>16}else if(Ib<<16>>16==1){Ib=b[za>>1]|0;if(Ib<<16>>16<=0){Kb=0;break}Kb=b[(c[ya>>2]|0)+((Ib<<16>>16)+ -1<<1)>>1]|0;if((Kb&65535)<(e[R>>1]|0)){break}if((a[M]|0)==0){Lb=723;break b}else{Lb=275;break a}}else{Kb=0}}while(0);Ib=c[xa>>2]|0;Jb=b[Gb>>1]|0;Mb=c[D>>2]|0;Lb=c[Ja>>2]|0;Ob=0;while(1){Nb=c[O>>2]|0;do{if(!((Ib|0)==(Nb|0)&Jb<<16>>16==Ob<<16>>16)){if((b[qa>>1]|0)!=0){Vb=Nb+((Ob&65535)<<3)|0;c[Vb>>2]=(c[Vb>>2]|0)+Lb}if((b[pa>>1]|0)==0){break}Vb=(c[O>>2]|0)+((Ob&65535)<<3)+4|0;c[Vb>>2]=(c[Vb>>2]|0)+Mb}}while(0);Ob=Ob+1<<16>>16;if((Ob&65535)>(Kb&65535)){Lb=723;break}}break};case 56:{Lb=c[Aa>>2]|0;if((Qb|0)<(Lb+1|0)){Lb=284;break a}Mb=c[Ib>>2]|0;Nb=b[qa>>1]|0;Ib=Nb<<16>>16;Ob=(Mb|0)<0?0-Mb|0:Mb;Pb=Nb<<16>>16<0?0-Ib|0:Ib;Nb=Ob>>>16;Ob=Ob&65535;Vb=da(Nb,Pb)|0;Ub=Vb<<16|8192;Pb=Ub+(da(Ob,Pb)|0)|0;Pb=(Pb>>>0>>0)+(Vb>>>16)<<18|Pb>>>14;Ib=(Ib^Mb|0)>-1?Pb:0-Pb|0;Vb=b[pa>>1]|0;Pb=Vb<<16>>16;Tb=Vb<<16>>16<0?0-Pb|0:Pb;Vb=da(Tb,Nb)|0;Ub=Vb<<16|8192;Nb=Ub+(da(Tb,Ob)|0)|0;Nb=(Nb>>>0>>0)+(Vb>>>16)<<18|Nb>>>14;Mb=(Pb^Mb|0)>-1?Nb:0-Nb|0;f:do{if((Lb|0)>0){while(1){Vb=Kb+ -1|0;c[$>>2]=Vb;Jb=c[Jb+(Vb<<2)>>2]&65535;do{if(Jb>>>0<(e[R>>1]|0)>>>0){if((b[qa>>1]|0)!=0){Vb=(c[O>>2]|0)+(Jb<<3)|0;c[Vb>>2]=(c[Vb>>2]|0)+Ib;Vb=(c[Q>>2]|0)+Jb|0;a[Vb]=a[Vb]|8}if((b[pa>>1]|0)==0){break}Vb=(c[O>>2]|0)+(Jb<<3)+4|0;c[Vb>>2]=(c[Vb>>2]|0)+Mb;Vb=(c[Q>>2]|0)+Jb|0;a[Vb]=a[Vb]|16}else{if((a[M]|0)!=0){Lb=288;break a}}}while(0);Vb=(c[Aa>>2]|0)+ -1|0;c[Aa>>2]=Vb;Kb=c[$>>2]|0;if((Vb|0)<=0){break f}Jb=c[_>>2]|0}}}while(0);c[Aa>>2]=1;c[Z>>2]=Kb;Lb=723;break};case 57:{Lb=c[Aa>>2]|0;if((Qb|0)<(Lb|0)){Lb=297;break a}do{if((b[va>>1]|0)==0){Ib=1}else{if((b[wa>>1]|0)==0){Ib=1;break}Ib=(b[I>>1]|0)==0}}while(0);Vb=b[C>>1]|0;Pb=Vb&65535;if((Vb&65535)>=(e[T>>1]|0)){if((a[M]|0)==0){Lb=723;break b}else{Lb=303;break a}}Nb=c[(Ib?Ha:Ia)>>2]|0;Kb=Nb+(Pb<<3)|0;Ob=c[P>>2]|0;Jb=Ob+(Pb<<3)|0;Vb=b[Ea>>1]|0;Mb=Vb&65535;if((Vb&65535)<(e[S>>1]|0)){Lb=c[Da>>2]|0;if(Ib){Vb=c[Fa>>2]|0;Mb=sd[Lb&127](f,(c[Vb+(Mb<<3)>>2]|0)-(c[Kb>>2]|0)|0,(c[Vb+(Mb<<3)+4>>2]|0)-(c[Nb+(Pb<<3)+4>>2]|0)|0)|0}else{Vb=c[Ga>>2]|0;Mb=sd[Lb&127](f,(c[Vb+(Mb<<3)>>2]|0)-(c[Kb>>2]|0)|0,(c[Vb+(Mb<<3)+4>>2]|0)-(c[Nb+(Pb<<3)+4>>2]|0)|0)|0}Lb=e[Ea>>1]|0;Qb=c[N>>2]|0;Lb=sd[c[ra>>2]&127](f,(c[Qb+(Lb<<3)>>2]|0)-(c[Jb>>2]|0)|0,(c[Qb+(Lb<<3)+4>>2]|0)-(c[Ob+(Pb<<3)+4>>2]|0)|0)|0;Qb=c[Aa>>2]|0}else{Qb=Lb;Lb=0;Mb=0}if((Qb|0)>0){Nb=Nb+(Pb<<3)+4|0;Pb=Ob+(Pb<<3)+4|0;Ob=(Mb|0)==0;Rb=Qb;do{Qb=(c[$>>2]|0)+ -1|0;c[$>>2]=Qb;Qb=c[(c[_>>2]|0)+(Qb<<2)>>2]|0;if(Qb>>>0<(e[R>>1]|0)>>>0){Rb=c[Da>>2]|0;if(Ib){Sb=c[Ba>>2]|0;Sb=sd[Rb&127](f,(c[Sb+(Qb<<3)>>2]|0)-(c[Kb>>2]|0)|0,(c[Sb+(Qb<<3)+4>>2]|0)-(c[Nb>>2]|0)|0)|0}else{Sb=c[Ca>>2]|0;Sb=sd[Rb&127](f,(c[Sb+(Qb<<3)>>2]|0)-(c[Kb>>2]|0)|0,(c[Sb+(Qb<<3)+4>>2]|0)-(c[Nb>>2]|0)|0)|0}Rb=c[O>>2]|0;Rb=sd[c[ra>>2]&127](f,(c[Rb+(Qb<<3)>>2]|0)-(c[Jb>>2]|0)|0,(c[Rb+(Qb<<3)+4>>2]|0)-(c[Pb>>2]|0)|0)|0;Tb=(Sb|0)==0;if(Tb|Ob){Sb=Tb?0:Rb}else{Sb=_I(Sb,Lb,Mb)|0}Jd[c[sa>>2]&63](f,J,Qb&65535,Sb-Rb|0);Rb=c[Aa>>2]|0}else{if((a[M]|0)!=0){Lb=313;break a}}Rb=Rb+ -1|0;c[Aa>>2]=Rb;}while((Rb|0)>0)}c[Aa>>2]=1;c[Z>>2]=c[$>>2];Lb=723;break};case 59:case 58:{Ib=c[Ib>>2]|0;Lb=Ib&65535;Ib=Ib&65535;do{if(Ib>>>0<(e[S>>1]|0)>>>0){Mb=b[Ka>>1]|0;if((Mb&65535)>=(e[T>>1]|0)){break}if((b[wa>>1]|0)==0){Mb=(c[Ha>>2]|0)+((Mb&65535)<<3)|0;Vb=c[Mb+4>>2]|0;Ub=(c[Fa>>2]|0)+(Ib<<3)|0;c[Ub>>2]=c[Mb>>2];c[Ub+4>>2]=Vb;Jb=Jb+(Kb+1<<2)|0;Jd[c[Ma>>2]&63](f,ta,Lb,c[Jb>>2]|0);Ub=(c[Fa>>2]|0)+(Ib<<3)|0;Vb=c[Ub+4>>2]|0;Mb=(c[N>>2]|0)+(Ib<<3)|0;c[Mb>>2]=c[Ub>>2];c[Mb+4>>2]=Vb;Mb=b[Ka>>1]|0}else{Jb=Jb+(Kb+1<<2)|0}Tb=c[N>>2]|0;Ub=c[P>>2]|0;Vb=Mb&65535;Vb=sd[c[ra>>2]&127](f,(c[Tb+(Ib<<3)>>2]|0)-(c[Ub+(Vb<<3)>>2]|0)|0,(c[Tb+(Ib<<3)+4>>2]|0)-(c[Ub+(Vb<<3)+4>>2]|0)|0)|0;Jd[c[sa>>2]&63](f,ta,Lb,(c[Jb>>2]|0)-Vb|0);b[C>>1]=b[Ka>>1]|0;b[Ea>>1]=Lb;if((a[La]&1)==0){Lb=723;break b}b[Ka>>1]=Lb;Lb=723;break b}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=325;break a}break};case 44:{Ib=c[Ib>>2]|0;Lb=c[la>>2]|0;Kb=c[ma>>2]|0;Jb=Lb+(Kb<<4)|0;g:do{if((Kb|0)>0){while(1){Mb=Lb+16|0;if((c[Lb+8>>2]|0)==(Ib|0)){break g}if(Mb>>>0>>0){Lb=Mb}else{Lb=Mb;break}}}}while(0);if((Lb|0)==(Jb|0)){if(Kb>>>0>=(c[Oa>>2]|0)>>>0){Lb=180;break a}c[ma>>2]=Kb+1}if(Ib>>>0>65535){Lb=183;break a}c[Lb>>2]=c[fa>>2];Jb=Ib&65535;c[Lb+8>>2]=Jb;c[Lb+4>>2]=(c[ea>>2]|0)+1;a[Lb+12|0]=1;if((c[na>>2]|0)>>>0>>0){c[na>>2]=Jb}Ib=c[ca>>2]|0;Jb=c[ea>>2]|0;Lb=c[Na>>2]|0;while(1){Jb=Lb+Jb|0;c[ea>>2]=Jb;if((Jb|0)>=(Ib|0)){Lb=191;break a}Mb=c[ba>>2]|0;Kb=a[Mb+Jb|0]|0;a[La]=Kb;Kb=Kb&255;Lb=a[273544+Kb|0]|0;c[Na>>2]=Lb;if((Kb&254|0)==64){Lb=2-(da(d[Mb+(Jb+1)|0]|0,Lb)|0)|0;c[Na>>2]=Lb}if((Lb+Jb|0)>(Ib|0)){Lb=191;break a}if((Kb|0)==44|(Kb|0)==137){Lb=193;break a}else if((Kb|0)==45){Lb=723;break}else{}}break};case 28:{Vb=Pb+(c[Ib>>2]|0)|0;c[ea>>2]=Vb;if((Vb|0)<0){c[h>>2]=132}a[aa]=0;Lb=723;break};case 29:{c[Pa>>2]=c[Ib>>2];Lb=723;break};case 24:{c[E>>2]=1;c[F>>2]=80;Lb=723;break};case 25:{c[E>>2]=0;c[F>>2]=83;Lb=723;break};case 18:{b[Ea>>1]=c[Ib>>2];Lb=723;break};case 19:{Jb=c[Ib>>2]|0;if((Jb|0)==0){$W(ua|0,K|0,36)|0}else if((Jb|0)==1){$W(ua|0,L|0,36)|0}else{if((a[M]|0)==0){Lb=723;break b}else{Lb=61;break a}}b[va>>1]=c[Ib>>2];Lb=723;break};case 26:{c[Qa>>2]=c[Ib>>2];Lb=723;break};case 27:{Ib=1;while(1){Pb=Ub+Pb|0;c[ea>>2]=Pb;if((Pb|0)>=(Ob|0)){Lb=91;break a}Jb=a[Nb+Pb|0]|0;a[La]=Jb;Jb=Jb&255;Ub=a[273544+Jb|0]|0;c[Na>>2]=Ub;if((Jb&254|0)==64){Ub=2-(da(d[Nb+(Pb+1)|0]|0,Ub)|0)|0;c[Na>>2]=Ub}if((Ub+Pb|0)>(Ob|0)){Lb=91;break a}if((Jb|0)==89){Ib=Ib+ -1|0}else if((Jb|0)==88){Ib=Ib+1|0}if((Ib|0)==0){Lb=723;break}else{}}break};case 12:{c[Ib>>2]=b[Ra>>1]|0;c[Jb+(Kb+1<<2)>>2]=b[Sa>>1]|0;Lb=723;break};case 49:case 48:{if((b[Ta>>1]|0)==0){Lb=723;break b}Ib=c[bb>>2]|0;if((Mb&1)==0){c[n>>2]=Ib+4;c[$a>>2]=(c[_a>>2]|0)+4;Ib=16;Jb=(c[ab>>2]|0)+4|0}else{c[n>>2]=Ib;c[$a>>2]=c[_a>>2];Ib=8;Jb=c[ab>>2]|0}c[Xa>>2]=Jb;Kb=b[Ya>>1]|0;c[Za>>2]=Kb&65535;Jb=0;Lb=0;while(1){Mb=(e[(c[Va>>2]|0)+(Jb<<16>>16<<1)>>1]|0)-(e[Wa>>1]|0)|0;Kb=Kb&65535;Kb=Mb>>>0>>0?Mb:Kb+ -1|0;h:do{if(Lb>>>0<=Kb>>>0){Mb=c[Ua>>2]|0;Nb=Lb;while(1){Ob=Nb+1|0;if((d[Mb+Nb|0]&Ib|0)!=0){Qb=Nb;break}if(Ob>>>0>Kb>>>0){Lb=Ob;break h}else{Nb=Ob}}i:while(1){Pb=Qb;while(1){Mb=Pb+1|0;if(Mb>>>0>Kb>>>0){break i}if((d[(c[Ua>>2]|0)+Mb|0]&Ib|0)==0){Pb=Mb}else{break}}HR(m,Qb+1|0,Pb,Qb,Mb);Qb=Mb}if((Qb|0)!=(Nb|0)){HR(m,Qb+1&65535,Kb,Qb,Nb);if((Nb|0)==0){Lb=Mb;break}HR(m,Lb,Nb+ -1|0,Qb,Nb);Lb=Mb;break}Pb=c[$a>>2]|0;Ub=c[Pb+(Nb<<3)>>2]|0;Vb=c[(c[n>>2]|0)+(Nb<<3)>>2]|0;Qb=Ub-Vb|0;if((Ub|0)==(Vb|0)){Lb=Mb;break}do{if(Lb>>>0>>0){Vb=Pb+(Lb<<3)|0;c[Vb>>2]=(c[Vb>>2]|0)+Qb;Lb=Lb+1|0;if(Lb>>>0>=Nb>>>0){break}do{Vb=Pb+(Lb<<3)|0;c[Vb>>2]=(c[Vb>>2]|0)+Qb;Lb=Lb+1|0;}while(Lb>>>0>>0)}}while(0);if(Ob>>>0>Kb>>>0){Lb=Mb;break}while(1){Vb=Pb+(Ob<<3)|0;c[Vb>>2]=(c[Vb>>2]|0)+Qb;Ob=Ob+1|0;if(Ob>>>0>Kb>>>0){Lb=Mb;break}else{}}}}while(0);Jb=Jb+1<<16>>16;if(Jb<<16>>16>=(b[Ta>>1]|0)){Lb=723;break b}Kb=b[Ya>>1]|0}break};case 53:case 52:{Jb=c[Ib>>2]<<16>>16;if(Jb>>>0>=(b[Ta>>1]|0)>>>0){if((a[M]|0)==0){Lb=723;break b}else{Lb=251;break a}}if((GR(f,r,s,t,u)|0)<<24>>24!=0){Lb=723;break b}if((Jb|0)==0){Kb=b[Wa>>1]|0;Lb=c[Va>>2]|0;Ib=0}else{Vb=c[Va>>2]|0;Ib=b[Wa>>1]|0;Kb=Ib;Lb=Vb;Ib=((b[Vb+(Jb+ -1<<1)>>1]|0)+1<<16>>16)-Ib<<16>>16}Nb=(b[Lb+(Jb<<1)>>1]|0)-Kb<<16>>16;Jb=b[R>>1]|0;if((Nb&65535)>=(Jb&65535)){Nb=Jb<<16>>16==0?0:Jb+ -1<<16>>16}if((Ib&65535)>(Nb&65535)){Lb=723;break b}Kb=c[cb>>2]|0;Jb=b[o>>1]|0;Mb=c[p>>2]|0;Lb=c[q>>2]|0;while(1){Ob=c[O>>2]|0;do{if(!((Kb|0)==(Ob|0)&Jb<<16>>16==Ib<<16>>16)){if((b[qa>>1]|0)!=0){Vb=Ib&65535;Ub=Ob+(Vb<<3)|0;c[Ub>>2]=(c[Ub>>2]|0)+Lb;Vb=(c[Q>>2]|0)+Vb|0;a[Vb]=a[Vb]|8}if((b[pa>>1]|0)==0){break}Vb=Ib&65535;Ub=(c[O>>2]|0)+(Vb<<3)+4|0;c[Ub>>2]=(c[Ub>>2]|0)+Mb;Vb=(c[Q>>2]|0)+Vb|0;a[Vb]=a[Vb]|16}}while(0);Ib=Ib+1<<16>>16;if((Ib&65535)>(Nb&65535)){Lb=723;break}}break};case 51:case 50:{if((Qb|0)<(c[Aa>>2]|0)){Lb=236;break a}if((GR(f,x,y,z,A)|0)<<24>>24!=0){Lb=723;break b}if((c[Aa>>2]|0)>0){Kb=c[v>>2]|0;Jb=c[w>>2]|0;do{Ib=(c[$>>2]|0)+ -1|0;c[$>>2]=Ib;Ib=c[(c[_>>2]|0)+(Ib<<2)>>2]&65535;do{if(Ib>>>0<(e[R>>1]|0)>>>0){if((b[qa>>1]|0)!=0){Vb=(c[O>>2]|0)+(Ib<<3)|0;c[Vb>>2]=(c[Vb>>2]|0)+Jb;Vb=(c[Q>>2]|0)+Ib|0;a[Vb]=a[Vb]|8}if((b[pa>>1]|0)==0){break}Vb=(c[O>>2]|0)+(Ib<<3)+4|0;c[Vb>>2]=(c[Vb>>2]|0)+Kb;Vb=(c[Q>>2]|0)+Ib|0;a[Vb]=a[Vb]|16}else{if((a[M]|0)!=0){Lb=242;break a}}}while(0);Vb=(c[Aa>>2]|0)+ -1|0;c[Aa>>2]=Vb;}while((Vb|0)>0)}c[Aa>>2]=1;c[Z>>2]=c[$>>2];Lb=723;break};case 45:{Ib=c[ha>>2]|0;if((Ib|0)<1){Lb=195;break a}Kb=Ib+ -1|0;c[ha>>2]=Kb;Jb=c[ga>>2]|0;Vb=Jb+(Kb<<4)+8|0;c[Vb>>2]=(c[Vb>>2]|0)+ -1;a[aa]=0;if((c[Vb>>2]|0)>0){c[ha>>2]=(c[ha>>2]|0)+1;c[ea>>2]=c[Jb+(Kb<<4)+12>>2];Lb=723;break b}Ib=c[Jb+(Kb<<4)>>2]|0;Jb=c[Jb+(Kb<<4)+4>>2]|0;Lb=Ib+ -1|0;if(Lb>>>0>2){Lb=199;break a}Kb=c[f+444+(Lb<<3)>>2]|0;if((Kb|0)==0){Lb=201;break a}Lb=c[f+444+(Lb<<3)+4>>2]|0;if(Lb>>>0>>0){Lb=203;break a}c[ba>>2]=Kb;c[ca>>2]=Lb;c[ea>>2]=Jb;c[fa>>2]=Ib;Lb=723;break};case 47:case 46:{Jb=c[Ib>>2]|0;Ib=Jb&65535;Jb=Jb&65535;if(Jb>>>0>=(e[T>>1]|0)>>>0){if((a[M]|0)==0){Lb=723;break b}else{Lb=207;break a}}if((Mb&1)==0){Jb=0}else{Vb=c[P>>2]|0;Jb=sd[c[ra>>2]&127](f,c[Vb+(Jb<<3)>>2]|0,c[Vb+(Jb<<3)+4>>2]|0)|0;Jb=(sd[c[F>>2]&127](f,Jb,c[db>>2]|0)|0)-Jb|0}Jd[c[sa>>2]&63](f,ua,Ib,Jb);b[Ka>>1]=Ib;b[C>>1]=Ib;Lb=723;break};case 5:case 4:case 3:case 2:case 1:case 0:{Ib=Tb<<14&16384;Jb=Ib^16384;if((Mb&255)<4){b[Ra>>1]=Ib;b[Sa>>1]=Jb;b[eb>>1]=Ib;b[fb>>1]=Jb}if((Tb&2|0)==0){b[qa>>1]=Ib;b[pa>>1]=Jb}uR(f);Lb=723;break};case 16:{b[Ka>>1]=c[Ib>>2];Lb=723;break};case 17:{b[C>>1]=c[Ib>>2];Lb=723;break};case 23:{Ib=c[Ib>>2]|0;if((Ib|0)<0){Lb=82;break a}c[Aa>>2]=Ib;Lb=723;break};case 60:{Ib=c[Aa>>2]|0;do{if((Qb|0)>=(Ib|0)){if((e[Ka>>1]|0)>=(e[T>>1]|0)){break}j:do{if((Ib|0)>0){while(1){Kb=Kb+ -1|0;c[$>>2]=Kb;Kb=c[Jb+(Kb<<2)>>2]|0;Jb=Kb&65535;if(Jb>>>0<(e[S>>1]|0)>>>0){Ub=c[N>>2]|0;Vb=c[P>>2]|0;Ib=e[Ka>>1]|0;Ib=sd[c[ra>>2]&127](f,(c[Ub+(Jb<<3)>>2]|0)-(c[Vb+(Ib<<3)>>2]|0)|0,(c[Ub+(Jb<<3)+4>>2]|0)-(c[Vb+(Ib<<3)+4>>2]|0)|0)|0;Jd[c[sa>>2]&63](f,ta,Kb&65535,0-Ib|0);Ib=c[Aa>>2]|0}else{if((a[M]|0)!=0){Lb=338;break a}}Ib=Ib+ -1|0;c[Aa>>2]=Ib;Kb=c[$>>2]|0;if((Ib|0)<=0){break j}Jb=c[_>>2]|0}}}while(0);c[Aa>>2]=1;c[Z>>2]=Kb;Lb=723;break b}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=334;break a}break};case 63:case 62:{Vb=c[Ib>>2]|0;Jb=c[Jb+(Kb+1<<2)>>2]|0;Ib=Vb&65535;Kb=Vb&65535;do{if(Kb>>>0<(e[T>>1]|0)>>>0){if((c[gb>>2]|0)>>>0<=Jb>>>0){break}Jb=Bd[c[B>>2]&255](f,Jb)|0;if((b[va>>1]|0)==0){Lb=b[qa>>1]|0;Mb=Lb<<16>>16;Nb=(Jb|0)<0?0-Jb|0:Jb;Ob=Lb<<16>>16<0?0-Mb|0:Mb;Lb=Nb>>>16;Nb=Nb&65535;Vb=da(Ob,Lb)|0;Ub=Vb<<16|8192;Ob=Ub+(da(Ob,Nb)|0)|0;Ob=(Ob>>>0>>0)+(Vb>>>16)<<18|Ob>>>14;c[(c[Ha>>2]|0)+(Kb<<3)>>2]=(Mb^Jb|0)>-1?Ob:0-Ob|0;Vb=b[pa>>1]|0;Mb=Vb<<16>>16;Tb=Vb<<16>>16<0?0-Mb|0:Mb;Vb=da(Tb,Lb)|0;Ub=Vb<<16|8192;Lb=Ub+(da(Tb,Nb)|0)|0;Lb=(Lb>>>0>>0)+(Vb>>>16)<<18|Lb>>>14;c[(c[Ha>>2]|0)+(Kb<<3)+4>>2]=(Mb^Jb|0)>-1?Lb:0-Lb|0;Tb=(c[Ha>>2]|0)+(Kb<<3)|0;Ub=c[Tb+4>>2]|0;Vb=(c[P>>2]|0)+(Kb<<3)|0;c[Vb>>2]=c[Tb>>2];c[Vb+4>>2]=Ub}Vb=c[P>>2]|0;Kb=sd[c[ra>>2]&127](f,c[Vb+(Kb<<3)>>2]|0,c[Vb+(Kb<<3)+4>>2]|0)|0;if((a[La]&1)!=0){Lb=Jb-Kb|0;Jb=sd[c[F>>2]&127](f,(((Lb|0)<0?0-Lb|0:Lb)|0)>(c[Pa>>2]|0)?Kb:Jb,c[db>>2]|0)|0}Jd[c[sa>>2]&63](f,ua,Ib,Jb-Kb|0);b[Ka>>1]=Ib;b[C>>1]=Ib;Lb=723;break b}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=347;break a}break};case 61:{c[E>>2]=2;c[F>>2]=84;Lb=723;break};case 66:{Ib=c[Ib>>2]|0;if(Ib>>>0<(e[ib>>1]|0)>>>0){c[(c[hb>>2]|0)+(Ib<<2)>>2]=c[Jb+(Kb+1<<2)>>2];Lb=723;break b}else{if((a[M]|0)==0){Lb=723;break b}else{Lb=370;break a}}break};case 67:{Jb=c[Ib>>2]|0;if(Jb>>>0<(e[ib>>1]|0)>>>0){c[Ib>>2]=c[(c[hb>>2]|0)+(Jb<<2)>>2];Lb=723;break b}if((a[M]|0)!=0){Lb=370;break a}c[Ib>>2]=0;Lb=723;break};case 68:{Ib=c[Ib>>2]|0;if(Ib>>>0<(c[gb>>2]|0)>>>0){Gd[c[jb>>2]&255](f,Ib,c[Jb+(Kb+1<<2)>>2]|0);Lb=723;break b}else{if((a[M]|0)==0){Lb=723;break b}else{Lb=370;break a}}break};case 64:{Mb=a[Nb+(Pb+1)|0]|0;Lb=Mb&255;if(Lb>>>0>=(Rb+1-Qb|0)>>>0){Lb=356;break a}if(Mb<<24>>24!=0){Kb=Kb+ -1|0;c[Ib>>2]=d[Nb+(Pb+2)|0]|0;if((Mb&255)>=2){Ib=2;Mb=2;do{Mb=Mb+1<<16>>16;c[Jb+(Kb+Ib<<2)>>2]=d[(c[ba>>2]|0)+((c[ea>>2]|0)+1+Ib)|0]|0;Ib=Mb&65535;}while(Ib>>>0<=Lb>>>0)}Sb=c[Z>>2]|0}c[Z>>2]=Sb+Lb;Lb=723;break};case 65:{Lb=a[Nb+(Pb+1)|0]|0;Ib=Lb&255;if(Ib>>>0>=(Rb+1-Qb|0)>>>0){Lb=361;break a}Mb=Pb+2|0;c[ea>>2]=Mb;if(Lb<<24>>24!=0){Lb=Mb;Ob=0;Mb=1;while(1){c[ea>>2]=Lb+2;c[Jb+(Ob+Kb<<2)>>2]=(d[Nb+Lb|0]<<8&65535|d[Nb+(Lb+1)|0])<<16>>16;Ob=Mb&65535;if(Ob>>>0>=Ib>>>0){break}Nb=c[ba>>2]|0;Lb=c[ea>>2]|0;Mb=Mb+1<<16>>16}Sb=c[Z>>2]|0}a[aa]=0;c[Z>>2]=Sb+Ib;Lb=723;break};case 69:{Jb=c[Ib>>2]|0;if(Jb>>>0<(c[gb>>2]|0)>>>0){c[Ib>>2]=Bd[c[B>>2]&255](f,Jb)|0;Lb=723;break b}if((a[M]|0)!=0){Lb=370;break a}c[Ib>>2]=0;Lb=723;break};case 71:case 70:{Jb=c[Ib>>2]|0;do{if(Jb>>>0<(e[R>>1]|0)>>>0){if((Mb&1)==0){Vb=c[O>>2]|0;Jb=sd[c[ra>>2]&127](f,c[Vb+(Jb<<3)>>2]|0,c[Vb+(Jb<<3)+4>>2]|0)|0;break}else{Vb=c[Ba>>2]|0;Jb=sd[c[Da>>2]&127](f,c[Vb+(Jb<<3)>>2]|0,c[Vb+(Jb<<3)+4>>2]|0)|0;break}}else{if((a[M]|0)==0){Jb=0}else{Lb=384;break a}}}while(0);c[Ib>>2]=Jb;Lb=723;break};case 72:{Lb=c[Ib>>2]|0;Ib=Lb&65535;if(Ib>>>0>=(e[R>>1]|0)>>>0){if((a[M]|0)==0){Lb=723;break b}else{Lb=391;break a}}Vb=c[O>>2]|0;Vb=sd[c[ra>>2]&127](f,c[Vb+(Ib<<3)>>2]|0,c[Vb+(Ib<<3)+4>>2]|0)|0;Jd[c[sa>>2]&63](f,J,Lb&65535,(c[Jb+(Kb+1<<2)>>2]|0)-Vb|0);if((b[I>>1]|0)!=0){Lb=723;break b}Ub=(c[O>>2]|0)+(Ib<<3)|0;Vb=c[Ub+4>>2]|0;Lb=(c[Ba>>2]|0)+(Ib<<3)|0;c[Lb>>2]=c[Ub>>2];c[Lb+4>>2]=Vb;Lb=723;break};case 74:case 73:{Nb=c[Ib>>2]&65535;do{if(Nb>>>0<(e[T>>1]|0)>>>0){Jb=c[Jb+(Kb+1<<2)>>2]&65535;if(Jb>>>0>=(e[S>>1]|0)>>>0){Lb=396;break}if((Mb&1)!=0){Ub=c[P>>2]|0;Vb=c[N>>2]|0;Jb=sd[c[ra>>2]&127](f,(c[Ub+(Nb<<3)>>2]|0)-(c[Vb+(Jb<<3)>>2]|0)|0,(c[Ub+(Nb<<3)+4>>2]|0)-(c[Vb+(Jb<<3)+4>>2]|0)|0)|0;break}Qb=c[Ia>>2]|0;Ob=Qb+(Nb<<3)|0;Kb=c[Ga>>2]|0;Pb=Kb+(Jb<<3)|0;Mb=c[kb>>2]|0;if((Mb|0)==(c[lb>>2]|0)){Jb=sd[c[Da>>2]&127](f,(c[Ob>>2]|0)-(c[Pb>>2]|0)|0,(c[Qb+(Nb<<3)+4>>2]|0)-(c[Kb+(Jb<<3)+4>>2]|0)|0)|0;Jb=aJ(Jb,c[kb>>2]|0)|0;break}else{Vb=aJ((c[Ob>>2]|0)-(c[Pb>>2]|0)|0,Mb)|0;Jb=aJ((c[Qb+(Nb<<3)+4>>2]|0)-(c[Kb+(Jb<<3)+4>>2]|0)|0,c[lb>>2]|0)|0;Jb=sd[c[Da>>2]&127](f,Vb,Jb)|0;break}}else{Lb=396}}while(0);if((Lb|0)==396){if((a[M]|0)==0){Jb=0}else{Lb=397;break a}}c[Ib>>2]=Jb;Lb=723;break};case 75:{c[Ib>>2]=zR(f)|0;Lb=723;break};case 76:{c[Ib>>2]=zR(f)|0;Lb=723;break};case 77:{a[mb]=1;Lb=723;break};case 78:{a[mb]=0;Lb=723;break};case 79:{Lb=408;break a};case 80:{c[Ib>>2]=(c[Ib>>2]|0)<(c[Jb+(Kb+1<<2)>>2]|0);Lb=723;break};case 81:{c[Ib>>2]=(c[Ib>>2]|0)<=(c[Jb+(Kb+1<<2)>>2]|0);Lb=723;break};case 82:{c[Ib>>2]=(c[Ib>>2]|0)>(c[Jb+(Kb+1<<2)>>2]|0);Lb=723;break};case 90:{if((c[Ib>>2]|0)==0){Jb=0}else{Jb=(c[Jb+(Kb+1<<2)>>2]|0)!=0|0}c[Ib>>2]=Jb;Lb=723;break};case 83:{c[Ib>>2]=(c[Ib>>2]|0)>=(c[Jb+(Kb+1<<2)>>2]|0);Lb=723;break};case 84:{c[Ib>>2]=(c[Ib>>2]|0)==(c[Jb+(Kb+1<<2)>>2]|0);Lb=723;break};case 85:{c[Ib>>2]=(c[Ib>>2]|0)!=(c[Jb+(Kb+1<<2)>>2]|0);Lb=723;break};case 86:{c[Ib>>2]=((sd[c[F>>2]&127](f,c[Ib>>2]|0,0)|0)&127|0)==64;Lb=723;break};case 87:{c[Ib>>2]=((sd[c[F>>2]&127](f,c[Ib>>2]|0,0)|0)&127|0)==0;Lb=723;break};case 88:{if((c[Ib>>2]|0)!=0){Lb=723;break b}c[ea>>2]=Vb;if((Vb|0)<(Ob|0)){Ib=1}else{Lb=423;break a}while(1){Jb=(Ib|0)==1;while(1){Kb=a[Nb+Vb|0]|0;a[La]=Kb;Kb=Kb&255;Lb=a[273544+Kb|0]|0;c[Na>>2]=Lb;if((Kb&254|0)==64){Lb=2-(da(d[Nb+(Vb+1)|0]|0,Lb)|0)|0;c[Na>>2]=Lb}Vb=Lb+Vb|0;if((Vb|0)>(Ob|0)){Lb=423;break a}if((Kb|0)==88){Lb=426;break}else if((Kb|0)==27){if(Jb){Lb=723;break b}}else if((Kb|0)==89){Lb=428;break}c[ea>>2]=Vb;if((Vb|0)>=(Ob|0)){Lb=423;break a}}if((Lb|0)==426){Ib=Ib+1|0}else if((Lb|0)==428){Ib=Ib+ -1|0;if((Ib|0)==0){Lb=723;break b}}c[ea>>2]=Vb;if((Vb|0)>=(Ob|0)){Lb=423;break a}}break};case 91:{if((c[Ib>>2]|0)==0){Jb=(c[Jb+(Kb+1<<2)>>2]|0)!=0|0}else{Jb=1}c[Ib>>2]=Jb;Lb=723;break};case 92:{c[Ib>>2]=(c[Ib>>2]|0)==0;Lb=723;break};case 93:{AR(f,c[Ib>>2]|0);Lb=723;break};case 94:{b[nb>>1]=c[Ib>>2];Lb=723;break};case 95:{b[ob>>1]=c[Ib>>2];Lb=723;break};case 96:{c[Ib>>2]=(c[Ib>>2]|0)+(c[Jb+(Kb+1<<2)>>2]|0);Lb=723;break};case 99:{c[Ib>>2]=_I(c[Ib>>2]|0,c[Jb+(Kb+1<<2)>>2]|0,64)|0;Lb=723;break};case 100:{Jb=c[Ib>>2]|0;c[Ib>>2]=(Jb|0)<0?0-Jb|0:Jb;Lb=723;break};case 101:{c[Ib>>2]=0-(c[Ib>>2]|0);Lb=723;break};case 102:{c[Ib>>2]=c[Ib>>2]&-64;Lb=723;break};case 103:{c[Ib>>2]=(c[Ib>>2]|0)+63&-64;Lb=723;break};case 107:case 106:case 105:case 104:{c[Ib>>2]=sd[c[F>>2]&127](f,c[Ib>>2]|0,c[f+264+(Tb+ -104<<2)>>2]|0)|0;Lb=723;break};case 97:{c[Ib>>2]=(c[Ib>>2]|0)-(c[Jb+(Kb+1<<2)>>2]|0);Lb=723;break};case 98:{Jb=c[Jb+(Kb+1<<2)>>2]|0;if((Jb|0)==0){Lb=443;break a}c[Ib>>2]=$I(c[Ib>>2]|0,64,Jb)|0;Lb=723;break};case 112:{Ib=c[Ib>>2]|0;if(Ib>>>0<(c[gb>>2]|0)>>>0){Lb=aJ(c[Jb+(Kb+1<<2)>>2]|0,c[pb>>2]|0)|0;c[(c[qb>>2]|0)+(Ib<<2)>>2]=Lb;Lb=723;break b}else{if((a[M]|0)==0){Lb=723;break b}else{Lb=370;break a}}break};case 114:case 113:{AR(f,c[Ib>>2]|0);Lb=723;break};case 117:case 116:case 115:{Ib=c[Ib>>2]|0;if((Ib|0)!=0){Jb=1;do{if((Kb|0)<2){Lb=461;break a}Lb=Kb+ -2|0;c[$>>2]=Lb;Vb=c[_>>2]|0;Kb=c[Vb+(Kb+ -1<<2)>>2]|0;Lb=c[Vb+(Lb<<2)>>2]|0;do{if(Kb>>>0<(c[gb>>2]|0)>>>0){Mb=Lb>>>4&15;Nb=d[La]|0;if((Nb|0)==116){Mb=Mb|16}else if((Nb|0)==117){Mb=Mb|32}Vb=(b[nb>>1]|0)+Mb|0;if((zR(f)|0)!=(Vb|0)){break}Lb=Lb&15;Mb=Lb+ -8|0;Gd[c[rb>>2]&255](f,Kb,(((Mb|0)>-1?Lb+ -7|0:Mb)<<6|0)/(1<>1]|0)|0)}else{if((a[M]|0)!=0){Lb=464;break a}}}while(0);Jb=Jb+1|0;Kb=c[$>>2]|0}while(Jb>>>0<=Ib>>>0)}c[Z>>2]=Kb;Lb=723;break};case 111:case 110:case 109:case 108:{Jb=c[Ib>>2]|0;Kb=c[f+264+(Tb+ -108<<2)>>2]|0;if((Jb|0)>-1){Kb=Kb+Jb|0;Jb=(Jb|0)!=0&(Kb|0)<0?0:Kb}else{Jb=Jb-Kb|0;Jb=(Jb|0)>0?0:Jb}c[Ib>>2]=Jb;Lb=723;break};case 118:{Ib=c[Ib>>2]|0;Jb=Ib&192;if((Jb|0)==0){c[sb>>2]=8192}else if((Jb|0)==64){c[sb>>2]=16384}else if((Jb|0)==128){c[sb>>2]=32768}else if((Jb|0)==192){c[sb>>2]=16384}Jb=Ib&48;if((Jb|0)==0){c[tb>>2]=0}else if((Jb|0)==16){c[tb>>2]=(c[sb>>2]|0)/4|0}else if((Jb|0)==32){c[tb>>2]=(c[sb>>2]|0)/2|0}else if((Jb|0)==48){c[tb>>2]=((c[sb>>2]|0)*3|0)/4|0}Ib=Ib&15;if((Ib|0)==0){Jb=c[sb>>2]|0;Ib=Jb+ -1|0}else{Jb=c[sb>>2]|0;Ib=(da(Jb,Ib+ -4|0)|0)/8|0}c[sb>>2]=(Jb|0)/256|0;c[tb>>2]=(c[tb>>2]|0)/256|0;c[ub>>2]=(Ib|0)/256|0;c[E>>2]=6;c[F>>2]=85;Lb=723;break};case 119:{Ib=c[Ib>>2]|0;Jb=Ib&192;if((Jb|0)==0){c[sb>>2]=5792}else if((Jb|0)==64){c[sb>>2]=11585}else if((Jb|0)==128){c[sb>>2]=23170}else if((Jb|0)==192){c[sb>>2]=11585}Jb=Ib&48;if((Jb|0)==0){c[tb>>2]=0}else if((Jb|0)==16){c[tb>>2]=(c[sb>>2]|0)/4|0}else if((Jb|0)==32){c[tb>>2]=(c[sb>>2]|0)/2|0}else if((Jb|0)==48){c[tb>>2]=((c[sb>>2]|0)*3|0)/4|0}Ib=Ib&15;if((Ib|0)==0){Jb=c[sb>>2]|0;Ib=Jb+ -1|0}else{Jb=c[sb>>2]|0;Ib=(da(Jb,Ib+ -4|0)|0)/8|0}c[sb>>2]=(Jb|0)/256|0;c[tb>>2]=(c[tb>>2]|0)/256|0;c[ub>>2]=(Ib|0)/256|0;c[E>>2]=7;c[F>>2]=86;Lb=723;break};case 121:{if((c[Jb+(Kb+1<<2)>>2]|0)!=0){Lb=723;break b}Vb=Pb+(c[Ib>>2]|0)|0;c[ea>>2]=Vb;if((Vb|0)<0){c[h>>2]=132}a[aa]=0;Lb=723;break};case 122:{c[E>>2]=5;c[F>>2]=79;Lb=723;break};case 123:{Jb=c[ja>>2]|0;Vb=c[ka>>2]|0;Ib=Jb+(Vb<<4)|0;k:do{if((Vb|0)>0){while(1){if(Mb<<24>>24==(c[Jb+8>>2]&255)<<24>>24){if((a[Jb+12|0]|0)!=0){break}}Jb=Jb+16|0;if(Jb>>>0>=Ib>>>0){break k}}Ib=c[ha>>2]|0;if((Ib|0)>=(c[ia>>2]|0)){Lb=513;break a}Vb=c[ga>>2]|0;c[ha>>2]=Ib+1;c[Vb+(Ib<<4)>>2]=c[fa>>2];c[Vb+(Ib<<4)+4>>2]=(c[ea>>2]|0)+1;c[Vb+(Ib<<4)+8>>2]=1;Lb=Jb+4|0;c[Vb+(Ib<<4)+12>>2]=c[Lb>>2];Jb=c[Jb>>2]|0;Ib=c[Lb>>2]|0;Lb=Jb+ -1|0;do{if(Lb>>>0>2){c[h>>2]=132}else{Kb=c[f+444+(Lb<<3)>>2]|0;if((Kb|0)==0){c[h>>2]=138;break}Lb=c[f+444+(Lb<<3)+4>>2]|0;if(Lb>>>0>>0){c[h>>2]=131;break}else{c[ba>>2]=Kb;c[ca>>2]=Lb;c[ea>>2]=Ib;c[fa>>2]=Jb;break}}}while(0);a[aa]=0;Lb=723;break b}}while(0);c[h>>2]=128;Lb=724;break};case 120:{if((c[Jb+(Kb+1<<2)>>2]|0)==0){Lb=723;break b}Vb=Pb+(c[Ib>>2]|0)|0;c[ea>>2]=Vb;if((Vb|0)<0){c[h>>2]=132}a[aa]=0;Lb=723;break};case 124:{c[E>>2]=4;c[F>>2]=81;Lb=723;break};case 125:{c[E>>2]=3;c[F>>2]=82;Lb=723;break};case 128:{Ib=c[Aa>>2]|0;if((Qb|0)<(Ib|0)){Lb=528;break a}l:do{if((Ib|0)>0){while(1){Vb=Kb+ -1|0;c[$>>2]=Vb;Jb=c[Jb+(Vb<<2)>>2]&65535;if(Jb>>>0<(e[Ya>>1]|0)>>>0){Ib=(c[Ua>>2]|0)+Jb|0;a[Ib]=a[Ib]^1;Ib=c[Aa>>2]|0}else{if((a[M]|0)!=0){Lb=531;break a}}Ib=Ib+ -1|0;c[Aa>>2]=Ib;Kb=c[$>>2]|0;if((Ib|0)<=0){break l}Jb=c[_>>2]|0}}}while(0);c[Aa>>2]=1;c[Z>>2]=Kb;Lb=723;break};case 129:{Lb=c[Ib>>2]|0;Ib=c[Jb+(Kb+1<<2)>>2]&65535;Jb=e[Ya>>1]|0;do{if(Ib>>>0>>0){Kb=Lb&65535;if(Kb>>>0>=Jb>>>0){break}if(Kb>>>0>Ib>>>0){Lb=723;break b}else{Jb=Lb&65535}while(1){Kb=(c[Ua>>2]|0)+Kb|0;a[Kb]=a[Kb]|1;Jb=Jb+1<<16>>16;Kb=Jb&65535;if(Kb>>>0>Ib>>>0){Lb=723;break b}else{}}}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=540;break a}break};case 132:case 131:{Jb=c[ja>>2]|0;Vb=c[ka>>2]|0;Ib=Jb+(Vb<<4)|0;m:do{if((Vb|0)>0){while(1){if(Mb<<24>>24==(c[Jb+8>>2]&255)<<24>>24){if((a[Jb+12|0]|0)!=0){break}}Jb=Jb+16|0;if(Jb>>>0>=Ib>>>0){break m}}Ib=c[ha>>2]|0;if((Ib|0)>=(c[ia>>2]|0)){Lb=552;break a}Vb=c[ga>>2]|0;c[ha>>2]=Ib+1;c[Vb+(Ib<<4)>>2]=c[fa>>2];c[Vb+(Ib<<4)+4>>2]=(c[ea>>2]|0)+1;c[Vb+(Ib<<4)+8>>2]=1;Lb=Jb+4|0;c[Vb+(Ib<<4)+12>>2]=c[Lb>>2];Jb=c[Jb>>2]|0;Ib=c[Lb>>2]|0;Lb=Jb+ -1|0;do{if(Lb>>>0>2){c[h>>2]=132}else{Kb=c[f+444+(Lb<<3)>>2]|0;if((Kb|0)==0){c[h>>2]=138;break}Lb=c[f+444+(Lb<<3)+4>>2]|0;if(Lb>>>0>>0){c[h>>2]=131;break}else{c[ba>>2]=Kb;c[ca>>2]=Lb;c[ea>>2]=Ib;c[fa>>2]=Jb;break}}}while(0);a[aa]=0;Lb=723;break b}}while(0);c[h>>2]=128;Lb=724;break};case 130:{Lb=c[Ib>>2]|0;Ib=c[Jb+(Kb+1<<2)>>2]&65535;Jb=e[Ya>>1]|0;do{if(Ib>>>0>>0){Kb=Lb&65535;if(Kb>>>0>=Jb>>>0){break}if(Kb>>>0>Ib>>>0){Lb=723;break b}else{Jb=Lb&65535}while(1){Kb=(c[Ua>>2]|0)+Kb|0;a[Kb]=a[Kb]&-2;Jb=Jb+1<<16>>16;Kb=Jb&65535;if(Kb>>>0>Ib>>>0){Lb=723;break b}else{}}}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=546;break a}break};case 133:{Kb=c[Ib>>2]|0;Jb=Kb&255;if((Jb|0)==255){a[vb]=1;Lb=723;break b}else if((Jb|0)==0){a[vb]=0;Lb=723;break b}else{do{if((Kb&256|0)!=0){if((e[yb>>1]|0)>>>0>Jb>>>0){break}a[vb]=1;Kb=c[Ib>>2]|0}}while(0);do{if((Kb&512|0)!=0){if((a[xb]|0)==0){break}a[vb]=1;Kb=c[Ib>>2]|0}}while(0);do{if((Kb&1024|0)!=0){if((a[wb]|0)==0){break}a[vb]=1;Kb=c[Ib>>2]|0}}while(0);do{if((Kb&2048|0)!=0){if((e[yb>>1]|0)>>>0<=Jb>>>0){break}a[vb]=0;Kb=c[Ib>>2]|0}}while(0);do{if((Kb&4096|0)!=0){if((a[xb]|0)==0){break}a[vb]=0;Kb=c[Ib>>2]|0}}while(0);if((Kb&8192|0)==0){Lb=723;break b}if((a[wb]|0)==0){Lb=723;break b}a[vb]=0;Lb=723;break b}break};case 135:case 134:{Ib=c[Ib>>2]&65535;do{if(Ib>>>0<(e[S>>1]|0)>>>0){Jb=c[Jb+(Kb+1<<2)>>2]&65535;if(Jb>>>0>=(e[R>>1]|0)>>>0){break}Vb=c[Fa>>2]|0;Lb=c[Ba>>2]|0;Kb=(c[Vb+(Ib<<3)>>2]|0)-(c[Lb+(Jb<<3)>>2]|0)|0;Lb=(c[Vb+(Ib<<3)+4>>2]|0)-(c[Lb+(Jb<<3)+4>>2]|0)|0;Mb=(Mb&1)==0;vR(Mb?Kb:0-Lb|0,Mb?Lb:Kb,W);Ub=c[N>>2]|0;Vb=c[O>>2]|0;Kb=(c[Ub+(Ib<<3)>>2]|0)-(c[Vb+(Jb<<3)>>2]|0)|0;Ib=(c[Ub+(Ib<<3)+4>>2]|0)-(c[Vb+(Jb<<3)+4>>2]|0)|0;Jb=(a[La]&1)==0;vR(Jb?Kb:0-Ib|0,Jb?Ib:Kb,V);uR(f);Lb=723;break b}}while(0);if((a[M]|0)==0){Lb=723}else{Lb=587;break a}break};case 137:{Mb=c[ja>>2]|0;Kb=c[ka>>2]|0;Jb=Mb+(Kb<<4)|0;n:do{if((Kb|0)>0){Lb=c[Ib>>2]|0;Nb=Mb;while(1){Mb=Nb+16|0;if((c[Nb+8>>2]|0)==(Lb|0)){Mb=Nb;break n}if(Mb>>>0>>0){Nb=Mb}else{break}}}}while(0);if((Mb|0)==(Jb|0)){if(Kb>>>0>=(c[Ab>>2]|0)>>>0){Lb=602;break a}c[ka>>2]=Kb+1}Jb=c[Ib>>2]|0;if(Jb>>>0>255){Lb=605;break a}c[Mb+8>>2]=Jb&255;c[Mb+4>>2]=(c[ea>>2]|0)+1;c[Mb>>2]=c[fa>>2];a[Mb+12|0]=1;Ib=c[Ib>>2]|0;if(Ib>>>0>(c[zb>>2]|0)>>>0){c[zb>>2]=Ib&255}Ib=c[ca>>2]|0;Jb=c[ea>>2]|0;Mb=c[Na>>2]|0;while(1){Jb=Mb+Jb|0;c[ea>>2]=Jb;if((Jb|0)>=(Ib|0)){Lb=613;break a}Lb=c[ba>>2]|0;Kb=a[Lb+Jb|0]|0;a[La]=Kb;Kb=Kb&255;Mb=a[273544+Kb|0]|0;c[Na>>2]=Mb;if((Kb&254|0)==64){Mb=2-(da(d[Lb+(Jb+1)|0]|0,Mb)|0)|0;c[Na>>2]=Mb}if((Mb+Jb|0)>(Ib|0)){Lb=613;break a}if((Kb|0)==44|(Kb|0)==137){Lb=615;break a}else if((Kb|0)==45){Lb=723;break}else{}}break};case 136:{Jb=c[Ib>>2]|0;Kb=(Jb&1|0)!=0?35:0;if((Jb&2|0)!=0){Kb=(a[xb]|0)==0?Kb:Kb|128}if((Jb&4|0)!=0){Kb=(a[wb]|0)==0?Kb:Kb|256}if((Jb&32|0)!=0){Kb=(a[Bb]|0)==0?Kb:Kb|4096}c[Ib>>2]=Kb;Lb=723;break};case 138:{Tb=Jb+(Kb+2<<2)|0;Ub=c[Tb>>2]|0;Vb=Jb+(Kb+1<<2)|0;Lb=c[Vb>>2]|0;c[Tb>>2]=c[Ib>>2];c[Vb>>2]=Ub;c[Ib>>2]=Lb;Lb=723;break};case 139:{Jb=c[Jb+(Kb+1<<2)>>2]|0;if((Jb|0)<=(c[Ib>>2]|0)){Lb=723;break b}c[Ib>>2]=Jb;Lb=723;break};case 140:{Jb=c[Jb+(Kb+1<<2)>>2]|0;if((Jb|0)>=(c[Ib>>2]|0)){Lb=723;break b}c[Ib>>2]=Jb;Lb=723;break};case 141:{Ib=c[Ib>>2]|0;if((Ib|0)<=-1){Lb=723;break b}c[Cb>>2]=Ib;Lb=723;break};case 142:{Jb=c[Jb+(Kb+1<<2)>>2]|0;if((Jb+ -1|0)>>>0>1){if((a[M]|0)==0){Lb=723;break b}else{Lb=625;break a}}else{a[Db]=d[Db]&(Jb^255)|((c[Ib>>2]|0)==0?0:Jb);Lb=723;break b}break};case 143:{Jb=c[ja>>2]|0;Vb=c[ka>>2]|0;Ib=Jb+(Vb<<4)|0;o:do{if((Vb|0)>0){while(1){if(Mb<<24>>24==(c[Jb+8>>2]&255)<<24>>24){if((a[Jb+12|0]|0)!=0){break}}Jb=Jb+16|0;if(Jb>>>0>=Ib>>>0){break o}}Ib=c[ha>>2]|0;if((Ib|0)>=(c[ia>>2]|0)){Lb=631;break a}Lb=c[ga>>2]|0;c[ha>>2]=Ib+1;c[Lb+(Ib<<4)>>2]=c[fa>>2];c[Lb+(Ib<<4)+4>>2]=(c[ea>>2]|0)+1;c[Lb+(Ib<<4)+8>>2]=1;Kb=Jb+4|0;c[Lb+(Ib<<4)+12>>2]=c[Kb>>2];Jb=c[Jb>>2]|0;Kb=c[Kb>>2]|0;Lb=Jb+ -1|0;do{if(Lb>>>0>2){c[h>>2]=132}else{Ib=c[f+444+(Lb<<3)>>2]|0;if((Ib|0)==0){c[h>>2]=138;break}Lb=c[f+444+(Lb<<3)+4>>2]|0;if(Lb>>>0>>0){c[h>>2]=131;break}else{c[ba>>2]=Ib;c[ca>>2]=Lb;c[ea>>2]=Kb;c[fa>>2]=Jb;break}}}while(0);a[aa]=0;Lb=723;break b}}while(0);c[h>>2]=128;Lb=724;break};case 127:case 126:case 89:case 33:{Lb=738;break};default:{if((Mb&255)>223){Vb=c[Ib>>2]|0;Lb=c[Jb+(Kb+1<<2)>>2]|0;Ib=Vb&65535;Kb=Lb+1|0;Jb=Vb&65535;do{if(Jb>>>0<(e[S>>1]|0)>>>0){if(Kb>>>0>=((c[gb>>2]|0)+1|0)>>>0){break}if((e[Ka>>1]|0)>=(e[T>>1]|0)){break}if((Kb|0)==0){Lb=0}else{Lb=Bd[c[B>>2]&255](f,Lb)|0}Mb=c[Y>>2]|0;Kb=Lb-Mb|0;if((((Kb|0)<0?0-Kb|0:Kb)|0)<(c[X>>2]|0)){Lb=(Lb|0)>-1?Mb:0-Mb|0}if((b[wa>>1]|0)==0){Mb=b[qa>>1]|0;Kb=Mb<<16>>16;Nb=(Lb|0)<0?0-Lb|0:Lb;Ob=Mb<<16>>16<0?0-Kb|0:Kb;Mb=Nb>>>16;Nb=Nb&65535;Vb=da(Ob,Mb)|0;Ub=Vb<<16|8192;Ob=Ub+(da(Ob,Nb)|0)|0;Ob=(Ob>>>0>>0)+(Vb>>>16)<<18|Ob>>>14;c[(c[Fa>>2]|0)+(Jb<<3)>>2]=((Kb^Lb|0)>-1?Ob:0-Ob|0)+(c[(c[Ha>>2]|0)+(e[Ka>>1]<<3)>>2]|0);Vb=b[pa>>1]|0;Kb=Vb<<16>>16;Tb=Vb<<16>>16<0?0-Kb|0:Kb;Vb=da(Tb,Mb)|0;Ub=Vb<<16|8192;Mb=Ub+(da(Tb,Nb)|0)|0;Mb=(Mb>>>0>>0)+(Vb>>>16)<<18|Mb>>>14;c[(c[Fa>>2]|0)+(Jb<<3)+4>>2]=((Kb^Lb|0)>-1?Mb:0-Mb|0)+(c[(c[Ha>>2]|0)+(e[Ka>>1]<<3)+4>>2]|0);Tb=(c[P>>2]|0)+(Jb<<3)|0;Ub=c[Tb+4>>2]|0;Vb=(c[N>>2]|0)+(Jb<<3)|0;c[Vb>>2]=c[Tb>>2];c[Vb+4>>2]=Ub}Vb=c[Fa>>2]|0;Kb=e[Ka>>1]|0;Tb=c[Ha>>2]|0;Kb=sd[c[Da>>2]&127](f,(c[Vb+(Jb<<3)>>2]|0)-(c[Tb+(Kb<<3)>>2]|0)|0,(c[Vb+(Jb<<3)+4>>2]|0)-(c[Tb+(Kb<<3)+4>>2]|0)|0)|0;Tb=c[N>>2]|0;Vb=e[Ka>>1]|0;Ub=c[P>>2]|0;Jb=sd[c[ra>>2]&127](f,(c[Tb+(Jb<<3)>>2]|0)-(c[Ub+(Vb<<3)>>2]|0)|0,(c[Tb+(Jb<<3)+4>>2]|0)-(c[Ub+(Vb<<3)+4>>2]|0)|0)|0;if((a[mb]|0)!=0){Lb=(Kb^Lb|0)<0?0-Lb|0:Lb}Mb=a[La]|0;Nb=Mb&255;do{if((Nb&4|0)==0){Nb=c[f+264+((Nb&3)<<2)>>2]|0;if((Lb|0)>-1){Nb=Nb+Lb|0;Lb=(Lb|0)!=0&(Nb|0)<0?0:Nb;break}else{Lb=Lb-Nb|0;Lb=(Lb|0)>0?0:Lb;break}}else{if((b[va>>1]|0)==(b[wa>>1]|0)){Mb=Lb-Kb|0;Lb=(((Mb|0)<0?0-Mb|0:Mb)|0)<(c[Pa>>2]|0)?Lb:Kb}Lb=sd[c[F>>2]&127](f,Lb,c[f+264+((Nb&3)<<2)>>2]|0)|0;Mb=a[La]|0}}while(0);do{if((Mb&8)!=0){Mb=c[Qa>>2]|0;if((Kb|0)>-1){Lb=(Lb|0)<(Mb|0)?Mb:Lb;break}else{Kb=0-Mb|0;Lb=(Lb|0)>(Kb|0)?Kb:Lb;break}}}while(0);Jd[c[sa>>2]&63](f,ta,Ib,Lb-Jb|0);b[C>>1]=b[Ka>>1]|0;if((a[La]&16)!=0){b[Ka>>1]=Ib}b[Ea>>1]=Ib;Lb=723;break b}}while(0);if((a[M]|0)==0){Lb=723;break b}else{Lb=647;break a}}if((Mb&255)>191){Ib=c[Ib>>2]|0;Jb=Ib&65535;Ib=Ib&65535;do{if(Ib>>>0<(e[S>>1]|0)>>>0){Vb=b[Ka>>1]|0;Qb=Vb&65535;if((Vb&65535)>=(e[T>>1]|0)){break}do{if((b[va>>1]|0)==0){Lb=677}else{if((b[wa>>1]|0)==0){Lb=677;break}Ob=c[Ga>>2]|0;Mb=Ob+(Ib<<3)|0;Pb=c[Ia>>2]|0;Nb=Pb+(Qb<<3)|0;Kb=c[kb>>2]|0;if((Kb|0)==(c[lb>>2]|0)){Kb=sd[c[Da>>2]&127](f,(c[Mb>>2]|0)-(c[Nb>>2]|0)|0,(c[Ob+(Ib<<3)+4>>2]|0)-(c[Pb+(Qb<<3)+4>>2]|0)|0)|0;Kb=aJ(Kb,c[kb>>2]|0)|0;break}else{Vb=aJ((c[Mb>>2]|0)-(c[Nb>>2]|0)|0,Kb)|0;Kb=aJ((c[Ob+(Ib<<3)+4>>2]|0)-(c[Pb+(Qb<<3)+4>>2]|0)|0,c[lb>>2]|0)|0;Kb=sd[c[Da>>2]&127](f,Vb,Kb)|0;break}}}while(0);if((Lb|0)==677){Vb=c[Fa>>2]|0;Kb=c[Ha>>2]|0;Kb=sd[c[Da>>2]&127](f,(c[Vb+(Ib<<3)>>2]|0)-(c[Kb+(Qb<<3)>>2]|0)|0,(c[Vb+(Ib<<3)+4>>2]|0)-(c[Kb+(Qb<<3)+4>>2]|0)|0)|0}Mb=c[Y>>2]|0;Lb=Kb-Mb|0;if((((Lb|0)<0?0-Lb|0:Lb)|0)<(c[X>>2]|0)){Kb=(Kb|0)>-1?Mb:0-Mb|0}Lb=a[La]|0;Mb=Lb&255;do{if((Mb&4|0)==0){Mb=c[f+264+((Mb&3)<<2)>>2]|0;if((Kb|0)>-1){Mb=Mb+Kb|0;Mb=(Kb|0)!=0&(Mb|0)<0?0:Mb;break}else{Mb=Kb-Mb|0;Mb=(Mb|0)>0?0:Mb;break}}else{Mb=sd[c[F>>2]&127](f,Kb,c[f+264+((Mb&3)<<2)>>2]|0)|0;Lb=a[La]|0}}while(0);do{if((Lb&8)!=0){Lb=c[Qa>>2]|0;if((Kb|0)>-1){Mb=(Mb|0)<(Lb|0)?Lb:Mb;break}else{Kb=0-Lb|0;Mb=(Mb|0)>(Kb|0)?Kb:Mb;break}}}while(0);Tb=c[N>>2]|0;Ub=c[P>>2]|0;Vb=e[Ka>>1]|0;Vb=sd[c[ra>>2]&127](f,(c[Tb+(Ib<<3)>>2]|0)-(c[Ub+(Vb<<3)>>2]|0)|0,(c[Tb+(Ib<<3)+4>>2]|0)-(c[Ub+(Vb<<3)+4>>2]|0)|0)|0;Jd[c[sa>>2]&63](f,ta,Jb,Mb-Vb|0);b[C>>1]=b[Ka>>1]|0;b[Ea>>1]=Jb;if((a[La]&16)==0){Lb=723;break b}b[Ka>>1]=Jb;Lb=723;break b}}while(0);if((a[M]|0)==0){Lb=723;break b}else{Lb=674;break a}}if((Mb&255)>183){Ib=Tb+65353&65535;if(Ib>>>0>=(Rb+1-Qb|0)>>>0){Lb=696;break a}Mb=Pb+1|0;c[ea>>2]=Mb;p:do{if((Ib|0)!=0){Ob=0;Lb=1;while(1){c[ea>>2]=Mb+2;c[Jb+(Ob+Kb<<2)>>2]=(d[Nb+Mb|0]<<8&65535|d[Nb+(Mb+1)|0])<<16>>16;Ob=Lb&65535;if(Ob>>>0>=Ib>>>0){break p}Nb=c[ba>>2]|0;Mb=c[ea>>2]|0;Lb=Lb+1<<16>>16}}}while(0);a[aa]=0;Lb=723;break b}if((Mb&255)>175){Ib=Tb+65361&65535;if(Ib>>>0>=(Rb+1-Qb|0)>>>0){Lb=705;break a}if((Ib|0)==0){Lb=723;break b}Kb=Kb+ -1|0;Mb=1;Lb=2;while(1){c[Jb+(Kb+Mb<<2)>>2]=d[Nb+(Pb+Mb)|0]|0;Mb=Lb&65535;if(Mb>>>0>Ib>>>0){Lb=723;break b}Nb=c[ba>>2]|0;Pb=c[ea>>2]|0;Lb=Lb+1<<16>>16}}Jb=c[ja>>2]|0;Vb=c[ka>>2]|0;Ib=Jb+(Vb<<4)|0;q:do{if((Vb|0)>0){while(1){if(Mb<<24>>24==(c[Jb+8>>2]&255)<<24>>24){if((a[Jb+12|0]|0)!=0){break}}Jb=Jb+16|0;if(Jb>>>0>=Ib>>>0){break q}}Ib=c[ha>>2]|0;if((Ib|0)>=(c[ia>>2]|0)){Lb=712;break a}Kb=c[ga>>2]|0;c[ha>>2]=Ib+1;c[Kb+(Ib<<4)>>2]=c[fa>>2];c[Kb+(Ib<<4)+4>>2]=(c[ea>>2]|0)+1;c[Kb+(Ib<<4)+8>>2]=1;Lb=Jb+4|0;c[Kb+(Ib<<4)+12>>2]=c[Lb>>2];Kb=c[Jb>>2]|0;Jb=c[Lb>>2]|0;Lb=Kb+ -1|0;do{if(Lb>>>0>2){c[h>>2]=132}else{Ib=c[f+444+(Lb<<3)>>2]|0;if((Ib|0)==0){c[h>>2]=138;break}Lb=c[f+444+(Lb<<3)+4>>2]|0;if(Lb>>>0>>0){c[h>>2]=131;break}else{c[ba>>2]=Ib;c[ca>>2]=Lb;c[ea>>2]=Jb;c[fa>>2]=Kb;break}}}while(0);a[aa]=0;Lb=723;break b}}while(0);c[h>>2]=128;Lb=724}}}while(0);if((Lb|0)==723){Ib=c[h>>2]|0;if((Ib|0)==128){Lb=724}else if((Ib|0)==0){Lb=738}else{Lb=746;break}}if((Lb|0)==724){Lb=0;Jb=c[ja>>2]|0;Vb=c[ka>>2]|0;Ib=Jb+(Vb<<4)|0;if((Vb|0)<=0){Lb=737;break}while(1){if((a[Jb+12|0]|0)!=0){if((a[La]|0)==(c[Jb+8>>2]&255)<<24>>24){break}}Jb=Jb+16|0;if(Jb>>>0>=Ib>>>0){Lb=737;break a}}Ib=c[ha>>2]|0;if((Ib|0)>=(c[ia>>2]|0)){Lb=728;break}Mb=c[ga>>2]|0;c[Mb+(Ib<<4)>>2]=c[fa>>2];c[Mb+(Ib<<4)+4>>2]=(c[ea>>2]|0)+1;c[Mb+(Ib<<4)+8>>2]=1;Kb=Jb+4|0;c[Mb+(Ib<<4)+12>>2]=c[Kb>>2];Jb=c[Jb>>2]|0;Kb=c[Kb>>2]|0;Mb=Jb+ -1|0;if(Mb>>>0>2){Lb=730;break}Ib=c[f+444+(Mb<<3)>>2]|0;if((Ib|0)==0){Lb=732;break}Mb=c[f+444+(Mb<<3)+4>>2]|0;if(Mb>>>0>>0){Lb=734;break}c[ba>>2]=Ib;c[ca>>2]=Mb;c[ea>>2]=Kb;c[fa>>2]=Jb}else if((Lb|0)==738){Lb=0;c[Fb>>2]=c[Z>>2];if((a[aa]|0)!=0){c[ea>>2]=(c[ea>>2]|0)+(c[Na>>2]|0)}if((Hb|0)>999999){f=139;Lb=749;break}else{Hb=Hb+1|0}}Pb=c[ea>>2]|0;if((Pb|0)>=(c[ca>>2]|0)){Lb=742;break}if((a[j]|0)!=0){f=0;Lb=749;break}}do{if((Lb|0)==20){c[h>>2]=129;Ib=129}else if((Lb|0)==22){c[h>>2]=130;Ib=130}else if((Lb|0)==32){c[h>>2]=134;Ib=134}else if((Lb|0)==37){c[h>>2]=134;Ib=134}else if((Lb|0)==50){c[h>>2]=134;Ib=134}else if((Lb|0)==61){c[h>>2]=134;Ib=134}else if((Lb|0)==67){c[h>>2]=134;Ib=134}else if((Lb|0)==73){c[h>>2]=134;Ib=134}else if((Lb|0)==79){c[h>>2]=134;Ib=134}else if((Lb|0)==82){c[h>>2]=132;Ib=132}else if((Lb|0)==91){c[h>>2]=131;Ib=131}else if((Lb|0)==107){c[h>>2]=134;Ib=134}else if((Lb|0)==110){c[h>>2]=134;Ib=134}else if((Lb|0)==115){c[h>>2]=134;Ib=134}else if((Lb|0)==121){c[h>>2]=130;Ib=130}else if((Lb|0)==134){c[h>>2]=134;Ib=134}else if((Lb|0)==145){c[h>>2]=130;Ib=130}else if((Lb|0)==155){c[h>>2]=134;Ib=134}else if((Lb|0)==165){c[h>>2]=130;Ib=130}else if((Lb|0)==174){c[h>>2]=134;Ib=134}else if((Lb|0)==180){c[h>>2]=140;Ib=140}else if((Lb|0)==183){c[h>>2]=140;Ib=140}else if((Lb|0)==191){c[h>>2]=131;Ib=131}else if((Lb|0)==193){c[h>>2]=137;Ib=137}else if((Lb|0)==195){c[h>>2]=136;Ib=136}else if((Lb|0)==199){c[h>>2]=132;Ib=132}else if((Lb|0)==201){c[h>>2]=138;Ib=138}else if((Lb|0)==203){c[h>>2]=131;Ib=131}else if((Lb|0)==207){c[h>>2]=134;Ib=134}else if((Lb|0)==236){c[h>>2]=134;Ib=134}else if((Lb|0)==242){c[h>>2]=134;Ib=134}else if((Lb|0)==251){c[h>>2]=134;Ib=134}else if((Lb|0)==268){c[h>>2]=134;Ib=134}else if((Lb|0)==275){c[h>>2]=134;Ib=134}else if((Lb|0)==284){c[h>>2]=134;Ib=134}else if((Lb|0)==288){c[h>>2]=134;Ib=134}else if((Lb|0)==297){c[h>>2]=134;Ib=134}else if((Lb|0)==303){c[h>>2]=134;Ib=134}else if((Lb|0)==313){c[h>>2]=134;Ib=134}else if((Lb|0)==325){c[h>>2]=134;Ib=134}else if((Lb|0)==334){c[h>>2]=134;Ib=134}else if((Lb|0)==338){c[h>>2]=134;Ib=134}else if((Lb|0)==347){c[h>>2]=134;Ib=134}else if((Lb|0)==356){c[h>>2]=130;Ib=130}else if((Lb|0)==361){c[h>>2]=130;Ib=130}else if((Lb|0)==370){c[h>>2]=134;Ib=134}else if((Lb|0)==384){c[h>>2]=134;Ib=134}else if((Lb|0)==391){c[h>>2]=134;Ib=134}else if((Lb|0)==397){c[h>>2]=134;Ib=134}else if((Lb|0)==408){c[h>>2]=135;Ib=135}else if((Lb|0)==423){c[h>>2]=131;Ib=131}else if((Lb|0)==443){c[h>>2]=133;Ib=133}else if((Lb|0)==461){c[h>>2]=129;Ib=129}else if((Lb|0)==464){c[h>>2]=134;Ib=134}else if((Lb|0)==513){c[h>>2]=130;Ib=130}else if((Lb|0)==528){c[h>>2]=129;Ib=129}else if((Lb|0)==531){c[h>>2]=134;Ib=134}else if((Lb|0)==540){c[h>>2]=134;Ib=134}else if((Lb|0)==546){c[h>>2]=134;Ib=134}else if((Lb|0)==552){c[h>>2]=130;Ib=130}else if((Lb|0)==587){c[h>>2]=134;Ib=134}else if((Lb|0)==602){c[h>>2]=141;Ib=141}else if((Lb|0)==605){c[h>>2]=141;Ib=141}else if((Lb|0)==613){c[h>>2]=131;Ib=131}else if((Lb|0)==615){c[h>>2]=137;Ib=137}else if((Lb|0)==625){c[h>>2]=134;Ib=134}else if((Lb|0)==631){c[h>>2]=130;Ib=130}else if((Lb|0)==647){c[h>>2]=134;Ib=134}else if((Lb|0)==674){c[h>>2]=134;Ib=134}else if((Lb|0)==696){c[h>>2]=130;Ib=130}else if((Lb|0)==705){c[h>>2]=130;Ib=130}else if((Lb|0)==712){c[h>>2]=130;Ib=130}else if((Lb|0)==728){c[h>>2]=134;Ib=134}else if((Lb|0)==730){c[h>>2]=132;Ib=132}else if((Lb|0)==732){c[h>>2]=138;Ib=138}else if((Lb|0)==734){c[h>>2]=131;Ib=131}else if((Lb|0)==737){c[h>>2]=128;Ib=128}else if((Lb|0)==742){if((c[ha>>2]|0)>0){c[h>>2]=131;Ib=131;break}else{Vb=0;i=g;return Vb|0}}else if((Lb|0)==745){c[h>>2]=131;Ib=131}else if((Lb|0)==746){if((Ib|0)==0){f=0}else{break}i=g;return f|0}else if((Lb|0)==749){i=g;return f|0}}while(0);if((a[j]|0)!=0){Vb=Ib;i=g;return Vb|0}a[(c[f+4>>2]|0)+301|0]=0;Vb=c[h>>2]|0;i=g;return Vb|0}function oR(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;f=i;g=i;i=i+8|0;e=g;h=c[(c[a+384>>2]|0)+(d<<2)>>2]|0;d=a+244|0;j=a+256|0;k=c[j>>2]|0;if((k|0)!=0){l=k;l=aJ(h,l)|0;i=f;return l|0}k=a+296|0;if((b[k>>1]|0)==0){l=c[d>>2]|0;c[j>>2]=l;l=aJ(h,l)|0;i=f;return l|0}l=b[a+294>>1]|0;if(l<<16>>16==0){l=c[a+248>>2]|0;c[j>>2]=l;l=aJ(h,l)|0;i=f;return l|0}else{d=_I(l<<16>>16,c[d>>2]|0,16384)|0;l=_I(b[k>>1]|0,c[a+248>>2]|0,16384)|0;c[g>>2]=d;c[e+4>>2]=l;l=_K(e)|0;c[j>>2]=l;l=aJ(h,l)|0;i=f;return l|0}return 0}function pR(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;j=i;i=i+8|0;k=j;h=a+244|0;g=a+256|0;l=c[g>>2]|0;do{if((l|0)==0){m=a+296|0;if((b[m>>1]|0)==0){l=c[h>>2]|0;c[g>>2]=l;break}l=b[a+294>>1]|0;if(l<<16>>16==0){l=c[a+248>>2]|0;c[g>>2]=l;break}else{h=_I(l<<16>>16,c[h>>2]|0,16384)|0;l=_I(b[m>>1]|0,c[a+248>>2]|0,16384)|0;c[j>>2]=h;c[k+4>>2]=l;l=_K(k)|0;c[g>>2]=l;break}}}while(0);m=bJ(e,l)|0;c[(c[a+384>>2]|0)+(d<<2)>>2]=m;i=f;return}function qR(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;j=i;i=i+8|0;k=j;h=a+244|0;g=a+256|0;l=c[g>>2]|0;do{if((l|0)==0){m=a+296|0;if((b[m>>1]|0)==0){l=c[h>>2]|0;c[g>>2]=l;break}l=b[a+294>>1]|0;if(l<<16>>16==0){l=c[a+248>>2]|0;c[g>>2]=l;break}else{h=_I(l<<16>>16,c[h>>2]|0,16384)|0;l=_I(b[m>>1]|0,c[a+248>>2]|0,16384)|0;c[j>>2]=h;c[k+4>>2]=l;l=_K(k)|0;c[g>>2]=l;break}}}while(0);l=bJ(e,l)|0;m=(c[a+384>>2]|0)+(d<<2)|0;c[m>>2]=(c[m>>2]|0)+l;i=f;return}function rR(a,b){a=a|0;b=b|0;i=i;return c[(c[a+384>>2]|0)+(b<<2)>>2]|0}function sR(a,b,d){a=a|0;b=b|0;d=d|0;c[(c[a+384>>2]|0)+(b<<2)>>2]=d;i=i;return}function tR(a,b,d){a=a|0;b=b|0;d=d|0;a=(c[a+384>>2]|0)+(b<<2)|0;c[a>>2]=(c[a>>2]|0)+d;i=i;return}function uR(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=b[a+298>>1]|0;f=e<<16>>16;e=e<<16>>16==16384;do{if(e){g=b[a+294>>1]|0;f=g<<16>>16<<16;c[a+564>>2]=f}else{g=b[a+300>>1]|0;if(g<<16>>16==16384){f=b[a+296>>1]<<16;c[a+564>>2]=f;g=b[a+294>>1]|0;break}else{j=b[a+294>>1]|0;f=da(j<<16>>16,f)|0;f=(da(b[a+296>>1]|0,g<<16>>16)|0)+f<<2;c[a+564>>2]=f;g=j;break}}}while(0);do{if(g<<16>>16==16384){c[a+572>>2]=87}else{g=a+572|0;if((b[a+296>>1]|0)==16384){c[g>>2]=88;break}else{c[g>>2]=89;break}}}while(0);do{if((b[a+290>>1]|0)==16384){c[a+576>>2]=87}else{g=a+576|0;if((b[a+292>>1]|0)==16384){c[g>>2]=88;break}else{c[g>>2]=90;break}}}while(0);j=a+584|0;c[j>>2]=37;h=a+588|0;c[h>>2]=38;g=a+564|0;do{if((f|0)==1073741824){if(e){c[j>>2]=39;c[h>>2]=40;break}if((b[a+300>>1]|0)!=16384){break}c[j>>2]=41;c[h>>2]=42}}while(0);if((((f|0)<0?0-f|0:f)|0)>=67108864){j=a+256|0;c[j>>2]=0;i=d;return}c[g>>2]=1073741824;j=a+256|0;c[j>>2]=0;i=d;return}function vR(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;j=i;i=i+8|0;k=j;g=i;i=i+8|0;h=g;do{if((((a|0)<0?0-a|0:a)|0)<65536){if((((d|0)<0?0-d|0:d)|0)>=65536){break}j=a<<8;d=d<<8;c[g>>2]=j;c[h+4>>2]=d;g=_K(h)|0;if((g|0)==0){i=f;return}b[e>>1]=_I(j,16384,g)|0;b[e+2>>1]=_I(d,16384,g)|0;i=f;return}}while(0);c[j>>2]=a;c[k+4>>2]=d;g=_K(k)|0;h=_I(a,16384,g)|0;g=_I(d,16384,g)|0;d=(da(g,g)|0)+(da(h,h)|0)|0;j=(h|0)<0?0-h|0:h;k=(g|0)<0?0-g|0:g;if((d|0)<268435456){while(1){d=(j|0)<(k|0)|0;j=d+j|0;k=(d^1)+k|0;d=(da(k,k)|0)+(da(j,j)|0)|0;if((d|0)<268435456){}else{break}}}if((d|0)>268451839){d=k;while(1){a=(j|0)<(d|0);j=(a<<31>>31)+j|0;d=((a^1)<<31>>31)+d|0;if(((da(j,j)|0)+(da(d,d)|0)|0)>268451839){}else{break}}}else{d=k}if((h|0)>-1){h=j&65535}else{h=0-j&65535}if((g|0)>-1){g=d&65535}else{g=0-d&65535}b[e>>1]=h;b[e+2>>1]=g;i=f;return}function wR(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=b+32+c|0;i=a;return((b|0)!=0&(c|0)>0?c&-64:0)|0}else{b=0-(32-b+c&-64)|0;i=a;return((b|0)>0?0:b)|0}return 0}function xR(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=c+b&-64|32;i=a;return((b|0)!=0&(c|0)<0?0:c)|0}else{b=0-(c-b&-64|32)|0;i=a;return((b|0)>0?0:b)|0}return 0}function yR(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=b+16+c|0;i=a;return((b|0)!=0&(c|0)>0?c&-32:0)|0}else{b=0-(16-b+c&-32)|0;i=a;return((b|0)>0?0:b)|0}return 0}function zR(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;j=i;i=i+8|0;k=j;f=e[a+252>>1]|0;g=a+244|0;h=a+256|0;l=c[h>>2]|0;if((l|0)!=0){m=l;m=aJ(f,m)|0;i=d;return m|0}l=a+296|0;if((b[l>>1]|0)==0){m=c[g>>2]|0;c[h>>2]=m;m=aJ(f,m)|0;i=d;return m|0}m=b[a+294>>1]|0;if(m<<16>>16==0){m=c[a+248>>2]|0;c[h>>2]=m;m=aJ(f,m)|0;i=d;return m|0}else{g=_I(m<<16>>16,c[g>>2]|0,16384)|0;m=_I(b[l>>1]|0,c[a+248>>2]|0,16384)|0;c[j>>2]=g;c[k+4>>2]=m;m=_K(k)|0;c[h>>2]=m;m=aJ(f,m)|0;i=d;return m|0}return 0}function AR(f,g){f=f|0;g=g|0;var 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;h=i;k=f+28|0;u=c[k>>2]|0;a:do{if((g|0)!=0){l=f+24|0;q=f+36|0;j=f+44|0;s=f+368|0;r=f+332|0;o=f+334|0;p=f+584|0;n=f+561|0;m=f+12|0;t=1;while(1){if((u|0)<2){break}v=u+ -2|0;c[k>>2]=v;w=c[l>>2]|0;x=c[w+(u+ -1<<2)>>2]|0;u=x&65535;v=c[w+(v<<2)>>2]|0;do{if((x&65535)>>>0<(e[j>>1]|0)>>>0){x=v>>>4&15;w=d[s]|0;if((w|0)==113){x=x|16}else if((w|0)==114){x=x|32}x=(b[r>>1]|0)+x|0;if((zR(f)|0)!=(x|0)){break}v=v&15;w=v+ -8|0;Jd[c[p>>2]&63](f,q,u,(((w|0)>-1?v+ -7|0:w)<<6|0)/(1<>1]|0)|0)}else{if((a[n]|0)==0){break}c[m>>2]=134}}while(0);t=t+1|0;u=c[k>>2]|0;if(t>>>0>g>>>0){break a}}c[m>>2]=129;i=h;return}}while(0);c[f+32>>2]=u;i=h;return}function BR(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=c+b|0;i=a;return((b|0)!=0&(c|0)<0?0:c)|0}else{b=b-c|0;i=a;return((b|0)>0?0:b)|0}return 0}function CR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if((b|0)>-1){f=c[a+480>>2]|0;a=d+b-f+(c[a+484>>2]|0)&0-(c[a+476>>2]|0);f=((b|0)!=0&(a|0)<0?0:a)+f|0;i=e;return f|0}else{f=c[a+480>>2]|0;b=0-(d-b+(c[a+484>>2]|0)-f&0-(c[a+476>>2]|0))|0;f=((b|0)>0?0:b)-f|0;i=e;return f|0}return 0}function DR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if((b|0)>-1){f=c[a+480>>2]|0;d=d+b-f+(c[a+484>>2]|0)|0;a=d-((d|0)%(c[a+476>>2]|0)|0)|0;f=((b|0)!=0&(a|0)<0?0:a)+f|0;i=e;return f|0}else{f=c[a+480>>2]|0;b=d-b+(c[a+484>>2]|0)-f|0;b=((b|0)%(c[a+476>>2]|0)|0)-b|0;f=((b|0)>0?0:b)-f|0;i=e;return f|0}return 0}function ER(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=b+63+c|0;i=a;return((b|0)!=0&(c|0)>0?c&-64:0)|0}else{b=0-(63-b+c&-64)|0;i=a;return((b|0)>0?0:b)|0}return 0}function FR(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=c+b|0;i=a;return((b|0)!=0&(c|0)>0?c&-64:0)|0}else{b=0-(c-b&-64)|0;i=a;return((b|0)>0?0:b)|0}return 0}function GR(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;m=i;i=i+16|0;if((a[d+368|0]&1)==0){p=d+72|0;q=c[p>>2]|0;p=c[p+4>>2]|0;o=b[d+80>>1]|0;n=b[d+82>>1]|0;l=c[d+84>>2]|0;j=c[d+88>>2]|0;$W(m|0,d+92|0,16)|0;r=d+288|0}else{p=d+36|0;q=c[p>>2]|0;p=c[p+4>>2]|0;o=b[d+44>>1]|0;n=b[d+46>>1]|0;l=c[d+48>>2]|0;j=c[d+52>>2]|0;$W(m|0,d+56|0,16)|0;r=d+286|0}s=b[r>>1]|0;r=s&65535;if((s&65535)<(o&65535)){t=g;c[t>>2]=q;c[t+4>>2]=p;b[g+8>>1]=o;b[g+10>>1]=n;c[g+12>>2]=l;c[g+16>>2]=j;$W(g+20|0,m|0,16)|0;b[h>>1]=s;r=sd[c[d+572>>2]&127](d,(c[j+(r<<3)>>2]|0)-(c[l+(r<<3)>>2]|0)|0,(c[j+(r<<3)+4>>2]|0)-(c[l+(r<<3)+4>>2]|0)|0)|0;s=d+564|0;c[e>>2]=_I(r,b[d+298>>1]<<16,c[s>>2]|0)|0;c[f>>2]=_I(r,b[d+300>>1]<<16,c[s>>2]|0)|0;s=0;i=k;return s|0}if((a[d+561|0]|0)!=0){c[d+12>>2]=134}b[h>>1]=0;t=1;i=k;return t|0}function HR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;if(b>>>0>d>>>0){i=g;return}s=c[a+12>>2]|0;if(!(s>>>0>e>>>0&s>>>0>f>>>0)){i=g;return}h=a+8|0;k=c[h>>2]|0;l=c[k+(e<<3)>>2]|0;k=c[k+(f<<3)>>2]|0;j=(l|0)>(k|0);p=j?l:k;l=j?k:l;k=j?e:f;n=j?f:e;s=c[a>>2]|0;e=c[s+(n<<3)>>2]|0;m=c[s+(k<<3)>>2]|0;f=a+4|0;o=c[f>>2]|0;n=c[o+(n<<3)>>2]|0;j=n-e|0;q=c[o+(k<<3)>>2]|0;k=q-m|0;if((l|0)==(p|0)){while(1){h=c[s+(b<<3)>>2]|0;c[o+(b<<3)>>2]=((h|0)>(e|0)?k:j)+h;b=b+1|0;if(b>>>0>d>>>0){break}o=c[f>>2]|0;s=c[a>>2]|0}i=g;return}o=q-n|0;p=p-l|0;q=0;r=0;while(1){s=c[s+(b<<3)>>2]|0;do{if((s|0)>(e|0)){if((s|0)>=(m|0)){s=s+k|0;break}if(r<<24>>24==0){s=_I(o,65536,p)|0;r=1}else{s=q}q=s;s=(aJ((c[(c[h>>2]|0)+(b<<3)>>2]|0)-l|0,s)|0)+n|0}else{s=s+j|0}}while(0);c[(c[f>>2]|0)+(b<<3)>>2]=s;b=b+1|0;if(b>>>0>d>>>0){break}s=c[a>>2]|0}i=g;return}function IR(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return b|0}function JR(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return c|0}function KR(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=b[a+294>>1]|0;g=b[a+296>>1]|0;f=da(h,c&65535)|0;h=da(h,c>>16)|0;e=(h<<16)+f|0;a=da(g,d&65535)|0;g=da(g,d>>16)|0;d=(g<<16)+a|0;c=d+e|0;d=(h>>16)+(f>>31)+(a>>31)+(g>>16)+(e>>>0>>0)+(d>>>0>>0)+(c>>>0>>0)|0;e=d>>31;a=e+c|0;i=i;return e+d+(a>>>0>>0)+(a>>>0>4294959103)<<18|(a+8192|0)>>>14|0}function LR(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=b[a+290>>1]|0;g=b[a+292>>1]|0;f=da(h,c&65535)|0;h=da(h,c>>16)|0;e=(h<<16)+f|0;a=da(g,d&65535)|0;g=da(g,d>>16)|0;d=(g<<16)+a|0;c=d+e|0;d=(h>>16)+(f>>31)+(a>>31)+(g>>16)+(e>>>0>>0)+(d>>>0>>0)+(c>>>0>>0)|0;e=d>>31;a=e+c|0;i=i;return e+d+(a>>>0>>0)+(a>>>0>4294959103)<<18|(a+8192|0)>>>14|0}function MR(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;j=b[d+298>>1]|0;if(j<<16>>16!=0){l=_I(g,j<<16>>16<<16,c[d+564>>2]|0)|0;j=f&65535;k=(c[e+16>>2]|0)+(j<<3)|0;c[k>>2]=(c[k>>2]|0)+l;j=(c[e+24>>2]|0)+j|0;a[j]=a[j]|8}j=b[d+300>>1]|0;if(j<<16>>16==0){i=h;return}j=_I(g,j<<16>>16<<16,c[d+564>>2]|0)|0;l=f&65535;k=(c[e+16>>2]|0)+(l<<3)+4|0;c[k>>2]=(c[k>>2]|0)+j;l=(c[e+24>>2]|0)+l|0;a[l]=a[l]|16;i=h;return}function NR(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;h=b[a+298>>1]|0;if(h<<16>>16!=0){j=_I(f,h<<16>>16<<16,c[a+564>>2]|0)|0;h=(c[d+12>>2]|0)+((e&65535)<<3)|0;c[h>>2]=(c[h>>2]|0)+j}h=b[a+300>>1]|0;if(h<<16>>16==0){i=g;return}h=_I(f,h<<16>>16<<16,c[a+564>>2]|0)|0;j=(c[d+12>>2]|0)+((e&65535)<<3)+4|0;c[j>>2]=(c[j>>2]|0)+h;i=g;return}function OR(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;b=e&65535;e=(c[d+16>>2]|0)+(b<<3)|0;c[e>>2]=(c[e>>2]|0)+f;b=(c[d+24>>2]|0)+b|0;a[b]=a[b]|8;i=i;return}function PR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+12>>2]|0)+((d&65535)<<3)|0;c[a>>2]=(c[a>>2]|0)+e;i=i;return}function QR(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;b=e&65535;e=(c[d+16>>2]|0)+(b<<3)+4|0;c[e>>2]=(c[e>>2]|0)+f;b=(c[d+24>>2]|0)+b|0;a[b]=a[b]|16;i=i;return}function RR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+12>>2]|0)+((d&65535)<<3)+4|0;c[a>>2]=(c[a>>2]|0)+e;i=i;return}function SR(d){d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;e=c[(c[d>>2]|0)+100>>2]|0;g=d+292|0;if((a[g]|0)!=0){c[d+296>>2]=0;a[g]=0}g=d+244|0;lJ(e,c[g>>2]|0);c[g>>2]=0;c[d+240>>2]=0;g=d+252|0;lJ(e,c[g>>2]|0);c[g>>2]=0;b[d+248>>1]=0;g=d+256|0;h=c[g>>2]|0;if((h|0)!=0){j=g+28|0;lJ(h,c[j>>2]|0);c[j>>2]=0;j=g+24|0;lJ(h,c[j>>2]|0);c[j>>2]=0;j=g+16|0;lJ(h,c[j>>2]|0);c[j>>2]=0;j=g+12|0;lJ(h,c[j>>2]|0);c[j>>2]=0;j=g+20|0;lJ(h,c[j>>2]|0);c[j>>2]=0;bX(g|0,0,12)|0}j=d+124|0;lJ(e,c[j>>2]|0);c[j>>2]=0;lJ(e,c[d+136>>2]|0);c[d+116>>2]=0;c[d+120>>2]=0;a[d+300|0]=0;bX(d+128|0,0,20)|0;a[d+301|0]=0;i=f;return}function TR(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;f=i;i=i+8|0;h=i;i=i+8|0;k=c[e+28>>2]|0;j=pd[c[d+508>>2]&63](d,1668707360,e,h)|0;c[f>>2]=j;if((j|0)!=0){c[d+668>>2]=0;c[d+672>>2]=0;c[f>>2]=0;k=0;i=g;return k|0}l=(c[h>>2]|0)>>>1;h=d+668|0;c[h>>2]=l;j=d+672|0;c[j>>2]=oJ(k,2,0,l,0,f)|0;k=c[f>>2]|0;if((k|0)!=0){l=k;i=g;return l|0}k=MK(e,c[h>>2]<<1)|0;c[f>>2]=k;if((k|0)!=0){l=k;i=g;return l|0}j=c[j>>2]|0;l=c[h>>2]|0;h=j+(l<<1)|0;if((l|0)>0){do{b[j>>1]=RK(e)|0;j=j+2|0;}while(j>>>0>>0)}PK(e);if((a[d+708|0]|0)==0){l=c[f>>2]|0;i=g;return l|0}else{l=ZR(d,e)|0;c[f>>2]=l;i=g;return l|0}return 0}function UR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;b=i;f=c[a+24>>2]|0;d=PJ(f,d)|0;if((d|0)!=0){i=b;return d|0}e=MK(f,e)|0;if((e|0)!=0){d=e;i=b;return d|0}c[a+200>>2]=c[f+32>>2];c[a+204>>2]=c[f+36>>2];d=0;i=b;return d|0}function VR(a){a=a|0;var e=0,f=0,g=0,h=0;e=i;h=a+200|0;f=c[h>>2]|0;g=f+10|0;if(g>>>0>(c[a+204>>2]|0)>>>0){h=20;i=e;return h|0}b[a+32>>1]=(d[f]|0)<<8&65535|(d[f+1|0]|0);c[a+36>>2]=((d[f+2|0]|0)<<8&65535|(d[f+3|0]|0))<<16>>16;c[a+40>>2]=((d[f+4|0]|0)<<8&65535|(d[f+5|0]|0))<<16>>16;c[a+44>>2]=((d[f+6|0]|0)<<8&65535|(d[f+7|0]|0))<<16>>16;c[a+48>>2]=((d[f+8|0]|0)<<8&65535|(d[f+9|0]|0))<<16>>16;c[h>>2]=g;h=0;i=e;return h|0}function WR(f){f=f|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0;l=i;k=f+200|0;w=c[k>>2]|0;h=c[f+204>>2]|0;m=c[f+12>>2]|0;j=b[f+32>>1]|0;A=j<<16>>16;t=c[f>>2]|0;do{if(j<<16>>16!=0){do{if(((b[m+20>>1]|0)+A+(b[m+56>>1]|0)|0)>>>0>(c[m+8>>2]|0)>>>0){v=pJ(m,0,A)|0;if((v|0)==0){break}else{p=v}i=l;return p|0}}while(0);if(j<<16>>16>4094){p=20}else{break}i=l;return p|0}}while(0);z=m+68|0;C=c[z>>2]|0;v=C+(A<<1)|0;if((w+((A<<1)+2)|0)>>>0>h>>>0){F=20;i=l;return F|0}E=d[w]<<8&65535|d[w+1|0];B=j<<16>>16>0;if(B){b[C>>1]=E}while(1){A=w+2|0;D=C+2|0;if(D>>>0>=v>>>0){break}F=d[A]<<8&65535|d[w+3|0];b[D>>1]=F;if(F<<16>>16>E<<16>>16){E=F;w=A;C=D}else{p=8;u=51;break}}if((u|0)==51){i=l;return p|0}do{if(B){C=b[C>>1]|0;B=C+1|0;if((B|0)<0){F=20;i=l;return F|0}else{C=C+5|0;if((C|0)==0){n=B;break}else{y=C;x=B;u=13;break}}}else{y=4;x=0;u=13}}while(0);do{if((u|0)==13){if(((b[m+22>>1]|0)+y+(b[m+58>>1]|0)|0)>>>0<=(c[m+4>>2]|0)>>>0){n=x;break}n=pJ(m,y,0)|0;if((n|0)==0){n=x;break}else{p=n}i=l;return p|0}}while(0);x=c[z>>2]|0;while(1){y=x+2|0;if(y>>>0>=v>>>0){break}if((b[x>>1]|0)<(b[y>>1]|0)){x=y}else{p=20;u=51;break}}if((u|0)==51){i=l;return p|0}u=f+8|0;c[(c[u>>2]|0)+140>>2]=0;c[(c[u>>2]|0)+136>>2]=0;v=w+4|0;if(v>>>0>h>>>0){F=20;i=l;return F|0}F=d[A]<<8&65535|d[w+3|0];x=F&65535;if((F&65535)>(e[t+286>>1]|0)){F=22;i=l;return F|0}if((h-v|0)<(x|0)){F=22;i=l;return F|0}if((c[f+16>>2]&2|0)==0){c[(c[u>>2]|0)+140>>2]=x;F=f+160|0;c[(c[u>>2]|0)+136>>2]=c[(c[F>>2]|0)+392>>2];$W(c[(c[F>>2]|0)+392>>2]|0,v|0,x|0)|0}z=w+(x+4)|0;t=m+64|0;v=c[t>>2]|0;u=v+n|0;f=(n|0)>0;do{if(f){a:while(1){w=z+1|0;if(w>>>0>h>>>0){p=20;u=51;break}y=a[z]|0;x=v+1|0;a[v]=y;do{if((y&8)==0){v=x;s=w}else{z=z+2|0;if(z>>>0>h>>>0){p=20;u=51;break a}w=a[w]|0;if((v+((w&255)+1)|0)>>>0>u>>>0){p=20;u=51;break a}if(w<<24>>24==0){v=x;s=z;break}s=w+ -1<<24>>24&255;bX(x|0,y|0,s+1|0)|0;v=v+(s+2)|0;s=z}}while(0);if(v>>>0>>0){z=s}else{u=31;break}}if((u|0)==31){r=c[t>>2]|0;q=s;break}else if((u|0)==51){i=l;return p|0}}else{r=v;q=z}}while(0);s=m+60|0;v=c[s>>2]|0;u=v+(n<<3)|0;if(q>>>0>h>>>0){F=20;i=l;return F|0}b:do{if(f){x=0;c:while(1){w=a[r]|0;y=w&255;do{if((y&2|0)==0){if((y&16|0)!=0){o=q;q=0;break}y=q+2|0;if(y>>>0>h>>>0){p=20;u=51;break c}o=y;q=(d[q]<<8&65535|d[q+1|0])<<16>>16}else{z=q+1|0;if(z>>>0>h>>>0){p=20;u=51;break c}q=d[q]|0;o=z;q=(y&16|0)==0?0-q|0:q}}while(0);x=q+x|0;c[v>>2]=x;a[r]=w&-19;v=v+8|0;if(v>>>0>>0){r=r+1|0;q=o}else{u=41;break}}if((u|0)==41){r=c[s>>2]|0;p=r+(n<<3)|0;if(!f){g=o;break}q=c[t>>2]|0;f=0;d:while(1){s=a[q]|0;u=s&255;do{if((u&4|0)==0){if((u&32|0)!=0){t=o;o=0;break}t=o+2|0;if(t>>>0>h>>>0){p=20;u=51;break d}o=(d[o]<<8&65535|d[o+1|0])<<16>>16}else{t=o+1|0;if(t>>>0>h>>>0){p=20;u=51;break d}o=d[o]|0;o=(u&32|0)==0?0-o|0:o}}while(0);f=o+f|0;c[r+4>>2]=f;a[q]=s&1;r=r+8|0;if(r>>>0

>>0){q=q+1|0;o=t}else{g=t;break b}}if((u|0)==51){i=l;return p|0}}else if((u|0)==51){i=l;return p|0}}else{g=q}}while(0);b[m+58>>1]=n;b[m+56>>1]=j;c[k>>2]=g;F=0;i=l;return F|0}function XR(e){e=e|0;var 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;f=i;j=e+200|0;g=c[e+204>>2]|0;h=c[e+12>>2]|0;m=h+88|0;l=0;p=c[j>>2]|0;while(1){k=l+1|0;n=qJ(h,k)|0;if((n|0)!=0){l=21;break}t=p+4|0;if(t>>>0>g>>>0){n=21;l=21;break}o=c[m>>2]|0;q=o+(l<<5)+12|0;c[q>>2]=0;u=o+(l<<5)+8|0;c[u>>2]=0;n=d[p+1|0]|0;r=d[p]<<8&65535|n;b[o+(l<<5)+4>>1]=r;c[o+(l<<5)>>2]=(d[p+2|0]<<8&65535|d[p+3|0])&65535;v=(n&1)==0;w=v?2:4;s=r&65535;r=(s&8|0)==0;do{if(r){if((s&64|0)==0){w=s>>>4&8|w;break}else{w=w+4|0;break}}else{w=w+2|0}}while(0);if((p+(w+4)|0)>>>0>g>>>0){n=21;l=21;break}if(v){c[u>>2]=a[t]|0;t=p+6|0;p=a[p+5|0]|0}else{c[u>>2]=(d[t]<<8&65535|d[p+5|0])<<16>>16;t=p+8|0;p=(d[p+6|0]<<8&65535|d[p+7|0])<<16>>16}c[q>>2]=p;do{if(r){if((s&64|0)!=0){p=t+4|0;q=(d[t]<<8&65535|d[t+1|0])<<16>>16<<2;s=0;r=0;t=(d[t+2|0]<<8&65535|d[t+3|0])<<16>>16<<2;break}if((s&128|0)==0){p=t;q=65536;s=0;r=0;t=65536;break}p=t+8|0;q=(d[t]<<8&65535|d[t+1|0])<<16>>16<<2;s=(d[t+4|0]<<8&65535|d[t+5|0])<<16>>16<<2;r=(d[t+2|0]<<8&65535|d[t+3|0])<<16>>16<<2;t=(d[t+6|0]<<8&65535|d[t+7|0])<<16>>16<<2}else{w=(d[t]<<8&65535|d[t+1|0])<<16>>16<<2;p=t+2|0;q=w;s=0;r=0;t=w}}while(0);c[o+(l<<5)+16>>2]=q;c[o+(l<<5)+20>>2]=s;c[o+(l<<5)+24>>2]=r;c[o+(l<<5)+28>>2]=t;if((n&32)==0){l=20;break}else{l=k}}if((l|0)==20){c[h+84>>2]=k;c[e+168>>2]=p+(IK(c[e+24>>2]|0)|0)-g;c[j>>2]=p;w=0;i=f;return w|0}else if((l|0)==21){i=f;return n|0}return 0}function YR(a){a=a|0;var b=0;b=i;PK(c[a+24>>2]|0);i=b;return} - - - -function zD(b,e,f,g,h,j,k,l,m,n,o){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var 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,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;p=i;w=i;i=i+8|0;E=i;i=i+8|0;K=i;i=i+8|0;I=i;i=i+8|0;J=I;R=i;i=i+8|0;P=i;i=i+8|0;S=P;O=i;i=i+8|0;U=i;i=i+8|0;x=U;y=i;i=i+8|0;T=y;M=i;i=i+8|0;N=M;G=i;i=i+8|0;H=G;C=i;i=i+8|0;B=C;F=i;i=i+8|0;D=F;Q=i;i=i+8|0;L=Q;A=i;i=i+8|0;z=A;V=i;i=i+8|0;W=i;i=i+8|0;q=FW(24)|0;c[q+4>>2]=0;c[q>>2]=177856;v=q+8|0;c[v>>2]=f;u=q+12|0;c[u>>2]=g;s=f+7>>3;r=q+16|0;c[r>>2]=s;do{if((f|0)<1){t=5}else{if((g|0)<1|(s|0)<1){t=5;break}if((2147483646/(s|0)|0|0)<=(g|0)){t=5;break}s=we((da(s,g)|0)+1|0)|0;W=q+20|0;c[W>>2]=s;a[s+(da(c[r>>2]|0,c[u>>2]|0)|0)|0]=0;W=c[W>>2]|0;s=q+20|0;if((W|0)==0){break}bX(W|0,0,da(c[r>>2]|0,c[u>>2]|0)|0)|0;if(e){j=b+148|0;ea=c[j>>2]|0;c[ea+4>>2]=0;c[ea+8>>2]=0;c[ea+12>>2]=0;if((f|0)>2147483645){f=c[b+64>>2]|0;Qe(jd[c[(c[f>>2]|0)+48>>2]&511](f)|0,182160,V);f=-3}h=f+1|0;n=ye(h,4)|0;t=ye(f+2|0,4)|0;if((f|0)>-1){k=0;do{c[n+(k<<2)>>2]=f;k=k+1|0;}while((k|0)<(h|0))}if((g|0)>0){h=b+64|0;k=0;do{v=c[n>>2]|0;if((v|0)<(f|0)){u=0;while(1){c[t+(u<<2)>>2]=v;u=u+1|0;v=c[n+(u<<2)>>2]|0;if((v|0)<(f|0)){}else{break}}}else{u=0}c[t+(u<<2)>>2]=f;c[t+(u+1<<2)>>2]=f;c[n>>2]=0;if((f|0)>0){l=n;m=0;u=0;v=0;do{a:do{switch(PC(c[j>>2]|0)|0){case 1:{if((v|0)==0){e=0;while(1){ea=QC(c[j>>2]|0)|0;e=ea+e|0;if((ea|0)>63){}else{V=0;break}}while(1){ea=RC(c[j>>2]|0)|0;V=ea+V|0;if((ea|0)>63){}else{break}}}else{e=0;while(1){ea=RC(c[j>>2]|0)|0;e=ea+e|0;if((ea|0)>63){}else{V=0;break}}while(1){ea=QC(c[j>>2]|0)|0;V=ea+V|0;if((ea|0)>63){}else{break}}}l=(c[l>>2]|0)+e|0;if((e|0)>0){if((l|0)>(f|0)){ea=c[h>>2]|0;ea=jd[c[(c[ea>>2]|0)+48>>2]&511](ea)|0;c[Q>>2]=l;Qe(ea,182680,L);l=f}m=m+((m&1|0)!=(v|0))|0;c[n+(m<<2)>>2]=l}else{l=c[n+(m<<2)>>2]|0}do{if((l|0)<(f|0)){e=l+V|0;if((V|0)<=0){break}if((e|0)>(f|0)){l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+48>>2]&511](l)|0;c[F>>2]=e;Qe(l,182680,D);l=f}else{l=e}m=m+((m&1|0)!=(v^1|0))|0;c[n+(m<<2)>>2]=l}}while(0);while(1){ea=c[t+(u<<2)>>2]|0;if((ea|0)<=(l|0)&(ea|0)<(f|0)){u=u+2|0}else{break}}break};case 7:{V=(c[t+(u<<2)>>2]|0)+3|0;if((c[l>>2]|0)<(V|0)){if((V|0)>(f|0)){l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+48>>2]&511](l)|0;c[C>>2]=V;Qe(l,182680,B);l=f}else{l=V}m=m+((m&1|0)!=(v|0))|0;c[n+(m<<2)>>2]=l}else{l=c[n+(m<<2)>>2]|0}v=v^1;if((l|0)>=(f|0)){break a}u=u+1|0;while(1){ea=c[t+(u<<2)>>2]|0;if((ea|0)<=(l|0)&(ea|0)<(f|0)){u=u+2|0}else{break}}break};case 0:{V=t+(u+1<<2)|0;e=c[V>>2]|0;if((c[l>>2]|0)<(e|0)){if((e|0)>(f|0)){ea=c[h>>2]|0;ea=jd[c[(c[ea>>2]|0)+48>>2]&511](ea)|0;c[A>>2]=e;Qe(ea,182680,z);e=f}m=m+((m&1|0)!=(v|0))|0;c[n+(m<<2)>>2]=e;e=c[V>>2]|0}u=(e|0)<(f|0)?u+2|0:u;break};case 2:{V=c[t+(u<<2)>>2]|0;if((c[l>>2]|0)<(V|0)){if((V|0)>(f|0)){l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+48>>2]&511](l)|0;c[y>>2]=V;Qe(l,182680,T);l=f}else{l=V}m=m+((m&1|0)!=(v|0))|0;c[n+(m<<2)>>2]=l}else{l=c[n+(m<<2)>>2]|0}v=v^1;if((l|0)>=(f|0)){break a}u=u+1|0;while(1){ea=c[t+(u<<2)>>2]|0;if((ea|0)<=(l|0)&(ea|0)<(f|0)){u=u+2|0}else{break}}break};case 8:{V=(c[t+(u<<2)>>2]|0)+ -3|0;l=c[l>>2]|0;do{if((l|0)<(V|0)){if((V|0)>(f|0)){l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+48>>2]&511](l)|0;c[U>>2]=V;Qe(l,182680,x);l=f}else{l=V}m=m+((m&1|0)!=(v|0))|0;c[n+(m<<2)>>2]=l}else{if((l|0)<=(V|0)){l=c[n+(m<<2)>>2]|0;break}if((V|0)<0){l=c[h>>2]|0;Qe(jd[c[(c[l>>2]|0)+48>>2]&511](l)|0,182720,O);l=0}else{l=V}b:do{if((m|0)>0){while(1){V=m+ -1|0;if((l|0)>(c[n+(V<<2)>>2]|0)){break b}if((V|0)>0){m=V}else{m=V;break}}}}while(0);c[n+(m<<2)>>2]=l}}while(0);v=v^1;if((l|0)>=(f|0)){break a}if((u|0)>0){u=u+ -1|0}else{u=u+1|0}while(1){ea=c[t+(u<<2)>>2]|0;if((ea|0)<=(l|0)&(ea|0)<(f|0)){u=u+2|0}else{break}}break};case 6:{V=(c[t+(u<<2)>>2]|0)+ -2|0;l=c[l>>2]|0;do{if((l|0)<(V|0)){if((V|0)>(f|0)){l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+48>>2]&511](l)|0;c[P>>2]=V;Qe(l,182680,S);l=f}else{l=V}m=m+((m&1|0)!=(v|0))|0;c[n+(m<<2)>>2]=l}else{if((l|0)<=(V|0)){l=c[n+(m<<2)>>2]|0;break}if((V|0)<0){l=c[h>>2]|0;Qe(jd[c[(c[l>>2]|0)+48>>2]&511](l)|0,182720,R);l=0}else{l=V}c:do{if((m|0)>0){while(1){V=m+ -1|0;if((l|0)>(c[n+(V<<2)>>2]|0)){break c}if((V|0)>0){m=V}else{m=V;break}}}}while(0);c[n+(m<<2)>>2]=l}}while(0);v=v^1;if((l|0)>=(f|0)){break a}if((u|0)>0){u=u+ -1|0}else{u=u+1|0}while(1){ea=c[t+(u<<2)>>2]|0;if((ea|0)<=(l|0)&(ea|0)<(f|0)){u=u+2|0}else{break}}break};case 5:{V=(c[t+(u<<2)>>2]|0)+2|0;if((c[l>>2]|0)<(V|0)){if((V|0)>(f|0)){l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+48>>2]&511](l)|0;c[G>>2]=V;Qe(l,182680,H);l=f}else{l=V}m=m+((m&1|0)!=(v|0))|0;c[n+(m<<2)>>2]=l}else{l=c[n+(m<<2)>>2]|0}v=v^1;if((l|0)>=(f|0)){break a}u=u+1|0;while(1){ea=c[t+(u<<2)>>2]|0;if((ea|0)<=(l|0)&(ea|0)<(f|0)){u=u+2|0}else{break}}break};case 4:{V=c[t+(u<<2)>>2]|0;e=V+ -1|0;l=c[l>>2]|0;do{if((l|0)<(e|0)){if((e|0)>(f|0)){l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+48>>2]&511](l)|0;c[I>>2]=e;Qe(l,182680,J);l=f}else{l=e}m=m+((m&1|0)!=(v|0))|0;c[n+(m<<2)>>2]=l}else{if((l|0)<=(e|0)){l=c[n+(m<<2)>>2]|0;break}if((V|0)<1){l=c[h>>2]|0;Qe(jd[c[(c[l>>2]|0)+48>>2]&511](l)|0,182720,K);l=0}else{l=e}d:do{if((m|0)>0){while(1){V=m+ -1|0;if((l|0)>(c[n+(V<<2)>>2]|0)){break d}if((V|0)>0){m=V}else{m=V;break}}}}while(0);c[n+(m<<2)>>2]=l}}while(0);v=v^1;if((l|0)>=(f|0)){break a}if((u|0)>0){u=u+ -1|0}else{u=u+1|0}while(1){ea=c[t+(u<<2)>>2]|0;if((ea|0)<=(l|0)&(ea|0)<(f|0)){u=u+2|0}else{break}}break};case 3:{e=c[t+(u<<2)>>2]|0;V=e+1|0;if((c[l>>2]|0)<(V|0)){if((e|0)<(f|0)){l=V}else{l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+48>>2]&511](l)|0;c[M>>2]=V;Qe(l,182680,N);l=f}m=m+((m&1|0)!=(v|0))|0;c[n+(m<<2)>>2]=l}else{l=c[n+(m<<2)>>2]|0}v=v^1;if((l|0)>=(f|0)){break a}u=u+1|0;while(1){ea=c[t+(u<<2)>>2]|0;if((ea|0)<=(l|0)&(ea|0)<(f|0)){u=u+2|0}else{break}}break};case-1:{if((c[l>>2]|0)>=(f|0)){break a}m=m+(m&1)|0;c[n+(m<<2)>>2]=f;break};default:{ea=c[h>>2]|0;Qe(jd[c[(c[ea>>2]|0)+48>>2]&511](ea)|0,182200,E);if((c[l>>2]|0)>=(f|0)){break a}m=m+(m&1)|0;c[n+(m<<2)>>2]=f}}}while(0);l=n+(m<<2)|0;}while((c[l>>2]|0)<(f|0));m=c[n>>2]|0;u=0}else{m=0;u=0}do{v=n+((u|1)<<2)|0;l=c[v>>2]|0;if((m|0)<(l|0)){while(1){l=(da(c[r>>2]|0,k)|0)+(m>>3)|0;l=(c[s>>2]|0)+l|0;a[l]=d[l]|0|1<<(m&7^7);m=m+1|0;l=c[v>>2]|0;if((m|0)<(l|0)){}else{break}}}if((l|0)>=(f|0)){break}u=u+2|0;m=c[n+(u<<2)>>2]|0;}while((m|0)<(f|0));k=k+1|0;}while((k|0)<(g|0))}r=c[j>>2]|0;do{if((o|0)>-1){g=r+12|0;if((c[g>>2]|0)>>>0>=o>>>0){break}do{ea=c[r>>2]|0;jd[c[(c[ea>>2]|0)+20>>2]&511](ea)|0;ea=(c[g>>2]|0)+1|0;c[g>>2]=ea;}while(ea>>>0>>0)}else{s=r+8|0;j=c[s>>2]|0;g=r+4|0;k=c[g>>2]|0;if(j>>>0<24){f=r+12|0;while(1){j=c[r>>2]|0;k=(jd[c[(c[j>>2]|0)+20>>2]&511](j)|0)&255|k<<8;c[g>>2]=k;j=(c[s>>2]|0)+8|0;c[s>>2]=j;c[f>>2]=(c[f>>2]|0)+1;if(j>>>0<24){}else{break}}}if((k>>>(j+ -24|0)&16777215|0)==4097){break}ea=c[b+64>>2]|0;Qe(jd[c[(c[ea>>2]|0)+48>>2]&511](ea)|0,182240,w)}}while(0);Fe(t);Fe(n);ea=q;i=p;return ea|0}do{if(j){if((h|0)==0){o=14675;break}else if((h|0)==1){o=1946;break}else if((h|0)==2){o=227;break}else if((h|0)==3){o=394;break}else{o=0;break}}else{o=0}}while(0);if((g|0)<=0){ea=q;i=p;return ea|0}w=b+76|0;B=b+80|0;D=m+4|0;E=n+4|0;b=m+8|0;C=n+8|0;z=m+12|0;A=n+12|0;y=(f|0)>0;x=l+8|0;F=l+12|0;G=l+16|0;H=l+20|0;J=0;I=0;do{do{if(j){if(!(J^(II(c[w>>2]|0,o,c[B>>2]|0)|0)!=0)){J=0;t=156;break}if((I|0)<=0){J=1;break}ea=c[s>>2]|0;J=c[r>>2]|0;$W(ea+(da(J,I)|0)|0,ea+(da(J,I+ -1|0)|0)|0,J|0)|0;J=1}else{t=156}}while(0);do{if((t|0)==156){t=0;if((h|0)==3){K=I+ -1|0;do{if((I|0)<1){R=0;L=0;K=0;N=0;M=0}else{if((c[u>>2]|0)<=(K|0)){R=0;L=0;K=0;N=0;M=0;break}L=c[v>>2]|0;if((L|0)<=0){R=0;L=0;K=0;N=0;M=0;break}K=da(c[r>>2]|0,K)|0;K=(c[s>>2]|0)+K|0;if((K|0)==0){R=0;L=7;K=0;N=0;M=0;break}M=d[K]|0;N=M>>>7;if((L|0)==1){R=1;L=7;K=0;M=0;break}O=(L|0)==2;R=2;L=O?6:5;K=O?0:K;M=M>>>6&1}}while(0);T=M|N<<1;M=c[m>>2]|0;N=(c[n>>2]|0)+I|0;do{if((N|0)<0){Q=0;P=0;M=0}else{if((c[u>>2]|0)<=(N|0)){Q=0;P=0;M=0;break}if((c[v>>2]|0)<=(M|0)){Q=0;P=0;M=0;break}N=da(c[r>>2]|0,N)|0;if((M|0)<0){Q=M;P=7;M=(c[s>>2]|0)+N|0;break}else{Q=M;P=M&7^7;M=(c[s>>2]|0)+(N+(M>>3))|0;break}}}while(0);if(y){N=0;O=0}else{break}while(1){S=T<<5|N;do{if((M|0)==0){M=0;U=0}else{if((Q|0)<0){Q=Q+1|0;U=0;break}U=(d[M]|0)>>>P&1;Q=Q+1|0;if((Q|0)==(c[v>>2]|0)){M=0;break}if((P|0)==0){P=7;M=M+1|0;break}else{P=P+ -1|0;break}}}while(0);S=S|U;do{if(k){if((c[x>>2]|0)<=(O|0)){t=370;break}if((c[F>>2]|0)<=(I|0)){t=370;break}ea=(da(c[G>>2]|0,I)|0)+(O>>3)|0;if(((d[(c[H>>2]|0)+ea|0]|0)&1<<(O&7^7)|0)==0){t=370}else{S=0}}else{t=370}}while(0);do{if((t|0)==370){t=0;S=II(c[w>>2]|0,S,c[B>>2]|0)|0;if((S|0)==0){S=0;break}ea=(da(c[r>>2]|0,I)|0)+(O>>3)|0;ea=(c[s>>2]|0)+ea|0;a[ea]=d[ea]|0|1<<(O&7^7)}}while(0);T=T<<1;do{if((K|0)==0){K=0;U=0}else{if((R|0)<0){R=R+1|0;U=0;break}U=(d[K]|0)>>>L&1;R=R+1|0;if((R|0)==(c[v>>2]|0)){K=0;break}if((L|0)==0){L=7;K=K+1|0;break}else{L=L+ -1|0;break}}}while(0);O=O+1|0;if((O|0)<(f|0)){T=U|T&30;N=(S|N)<<1&30}else{break}}}else if((h|0)==0){K=I+ -2|0;do{if((K|0)<0){Q=0;R=0;V=0;L=0;K=0}else{if((c[u>>2]|0)<=(K|0)){Q=0;R=0;V=0;L=0;K=0;break}N=c[v>>2]|0;if((N|0)<=0){Q=0;R=0;V=0;L=0;K=0;break}M=da(c[r>>2]|0,K)|0;M=(c[s>>2]|0)+M|0;if((M|0)==0){Q=0;R=7;V=0;L=0;K=0;break}K=d[M]|0;L=K>>>7;if((N|0)==1){Q=1;R=7;V=0;K=0;break}N=(N|0)==2;Q=2;R=N?6:5;V=N?0:M;K=K>>>6&1}}while(0);Z=K|L<<1;K=I+ -1|0;do{if((I|0)<1){P=0;O=0;L=0;t=168}else{if((c[u>>2]|0)<=(K|0)){P=0;O=0;L=0;t=168;break}M=c[v>>2]|0;if((M|0)<=0){P=0;O=0;L=0;t=168;break}K=da(c[r>>2]|0,K)|0;K=(c[s>>2]|0)+K|0;if((K|0)==0){P=0;O=7;L=0;t=168;break}N=d[K]|0;L=N>>>7;if((M|0)==1){P=1;O=7;t=168;break}L=(N>>>6&1|L<<1)<<1;if((M|0)==2){P=2;O=6;M=0;K=0;break}if((K|0)==0){P=2;O=5;M=0;K=0;break}M=(c[v>>2]|0)==3;P=3;O=M?5:4;M=M?0:K;K=(d[K]|0)>>>5&1}}while(0);if((t|0)==168){t=0;L=L<<2;M=0;K=0}Y=K|L;K=c[m>>2]|0;L=(c[n>>2]|0)+I|0;do{if((L|0)<0){T=0;l=0;e=0}else{if((c[u>>2]|0)<=(L|0)){T=0;l=0;e=0;break}if((c[v>>2]|0)<=(K|0)){T=0;l=0;e=0;break}L=da(c[r>>2]|0,L)|0;if((K|0)<0){T=K;l=7;e=(c[s>>2]|0)+L|0;break}else{T=K;l=K&7^7;e=(c[s>>2]|0)+(L+(K>>3))|0;break}}}while(0);K=c[D>>2]|0;L=(c[E>>2]|0)+I|0;do{if((L|0)<0){$=0;aa=0;ba=0}else{if((c[u>>2]|0)<=(L|0)){$=0;aa=0;ba=0;break}if((c[v>>2]|0)<=(K|0)){$=0;aa=0;ba=0;break}L=da(c[r>>2]|0,L)|0;if((K|0)<0){$=K;aa=7;ba=(c[s>>2]|0)+L|0;break}else{$=K;aa=K&7^7;ba=(c[s>>2]|0)+(L+(K>>3))|0;break}}}while(0);K=c[b>>2]|0;L=(c[C>>2]|0)+I|0;do{if((L|0)<0){X=0;U=0;S=0}else{if((c[u>>2]|0)<=(L|0)){X=0;U=0;S=0;break}if((c[v>>2]|0)<=(K|0)){X=0;U=0;S=0;break}L=da(c[r>>2]|0,L)|0;if((K|0)<0){X=K;U=7;S=(c[s>>2]|0)+L|0;break}else{X=K;U=K&7^7;S=(c[s>>2]|0)+(L+(K>>3))|0;break}}}while(0);K=c[z>>2]|0;L=(c[A>>2]|0)+I|0;do{if((L|0)<0){N=0;L=0;K=0}else{if((c[u>>2]|0)<=(L|0)){N=0;L=0;K=0;break}if((c[v>>2]|0)<=(K|0)){N=0;L=0;K=0;break}W=da(c[r>>2]|0,L)|0;if((K|0)<0){N=K;L=7;K=(c[s>>2]|0)+W|0;break}else{N=K;L=K&7^7;K=(c[s>>2]|0)+(W+(K>>3))|0;break}}}while(0);if(y){W=R;_=Q;Q=0;R=0}else{break}while(1){ca=Y<<8|Z<<13|Q<<4;do{if((e|0)==0){e=0;ea=0}else{if((T|0)<0){T=T+1|0;ea=0;break}ea=(d[e]|0)>>>l&1;T=T+1|0;if((T|0)==(c[v>>2]|0)){e=0;break}if((l|0)==0){l=7;e=e+1|0;break}else{l=l+ -1|0;break}}}while(0);ca=ca|ea<<3;do{if((ba|0)==0){ba=0;ea=0}else{if(($|0)<0){$=$+1|0;ea=0;break}ea=(d[ba]|0)>>>aa&1;$=$+1|0;if(($|0)==(c[v>>2]|0)){ba=0;break}if((aa|0)==0){aa=7;ba=ba+1|0;break}else{aa=aa+ -1|0;break}}}while(0);ca=ca|ea<<2;do{if((S|0)==0){S=0;ea=0}else{if((X|0)<0){X=X+1|0;ea=0;break}ea=(d[S]|0)>>>U&1;X=X+1|0;if((X|0)==(c[v>>2]|0)){S=0;break}if((U|0)==0){U=7;S=S+1|0;break}else{U=U+ -1|0;break}}}while(0);ca=ca|ea<<1;do{if((K|0)==0){K=0;ea=0}else{if((N|0)<0){N=N+1|0;ea=0;break}ea=(d[K]|0)>>>L&1;N=N+1|0;if((N|0)==(c[v>>2]|0)){K=0;break}if((L|0)==0){L=7;K=K+1|0;break}else{L=L+ -1|0;break}}}while(0);ca=ca|ea;do{if(k){if((c[x>>2]|0)<=(R|0)){t=229;break}if((c[F>>2]|0)<=(I|0)){t=229;break}ea=(da(c[G>>2]|0,I)|0)+(R>>3)|0;if(((d[(c[H>>2]|0)+ea|0]|0)&1<<(R&7^7)|0)==0){t=229}else{ca=0}}else{t=229}}while(0);do{if((t|0)==229){t=0;ca=II(c[w>>2]|0,ca,c[B>>2]|0)|0;if((ca|0)==0){ca=0;break}ea=(da(c[r>>2]|0,I)|0)+(R>>3)|0;ea=(c[s>>2]|0)+ea|0;a[ea]=d[ea]|0|1<<(R&7^7)}}while(0);Z=Z<<1;do{if((V|0)==0){V=0;ea=0}else{if((_|0)<0){_=_+1|0;ea=0;break}ea=(d[V]|0)>>>W&1;_=_+1|0;if((_|0)==(c[v>>2]|0)){V=0;break}if((W|0)==0){W=7;V=V+1|0;break}else{W=W+ -1|0;break}}}while(0);Z=ea|Z&6;Y=Y<<1;do{if((M|0)==0){M=0;ea=0}else{if((P|0)<0){P=P+1|0;ea=0;break}ea=(d[M]|0)>>>O&1;P=P+1|0;if((P|0)==(c[v>>2]|0)){M=0;break}if((O|0)==0){O=7;M=M+1|0;break}else{O=O+ -1|0;break}}}while(0);R=R+1|0;if((R|0)<(f|0)){Y=ea|Y&30;Q=(ca|Q<<1)&15}else{break}}}else if((h|0)==2){K=I+ -2|0;do{if((K|0)<0){O=0;P=0;S=0;L=0;K=0}else{if((c[u>>2]|0)<=(K|0)){O=0;P=0;S=0;L=0;K=0;break}N=c[v>>2]|0;if((N|0)<=0){O=0;P=0;S=0;L=0;K=0;break}M=da(c[r>>2]|0,K)|0;M=(c[s>>2]|0)+M|0;if((M|0)==0){O=0;P=7;S=0;L=0;K=0;break}K=d[M]|0;L=K>>>7;if((N|0)==1){O=1;P=7;S=0;K=0;break}N=(N|0)==2;O=2;P=N?6:5;S=N?0:M;K=K>>>6&1}}while(0);U=K|L<<1;K=I+ -1|0;do{if((I|0)<1){M=0;L=0;K=0;Q=0;N=0}else{if((c[u>>2]|0)<=(K|0)){M=0;L=0;K=0;Q=0;N=0;break}L=c[v>>2]|0;if((L|0)<=0){M=0;L=0;K=0;Q=0;N=0;break}K=da(c[r>>2]|0,K)|0;K=(c[s>>2]|0)+K|0;if((K|0)==0){M=0;L=7;K=0;Q=0;N=0;break}N=d[K]|0;Q=N>>>7;if((L|0)==1){M=1;L=7;K=0;N=0;break}R=(L|0)==2;M=2;L=R?6:5;K=R?0:K;N=N>>>6&1}}while(0);l=N|Q<<1;N=c[m>>2]|0;Q=(c[n>>2]|0)+I|0;do{if((Q|0)<0){Q=0;R=0;N=0}else{if((c[u>>2]|0)<=(Q|0)){Q=0;R=0;N=0;break}if((c[v>>2]|0)<=(N|0)){Q=0;R=0;N=0;break}T=da(c[r>>2]|0,Q)|0;if((N|0)<0){Q=N;R=7;N=(c[s>>2]|0)+T|0;break}else{Q=N;R=N&7^7;N=(c[s>>2]|0)+(T+(N>>3))|0;break}}}while(0);if(y){T=P;V=O;e=U;O=0;P=0}else{break}while(1){U=l<<3|e<<7|O;do{if((N|0)==0){N=0;W=0}else{if((Q|0)<0){Q=Q+1|0;W=0;break}W=(d[N]|0)>>>R&1;Q=Q+1|0;if((Q|0)==(c[v>>2]|0)){N=0;break}if((R|0)==0){R=7;N=N+1|0;break}else{R=R+ -1|0;break}}}while(0);U=U|W;do{if(k){if((c[x>>2]|0)<=(P|0)){t=329;break}if((c[F>>2]|0)<=(I|0)){t=329;break}ea=(da(c[G>>2]|0,I)|0)+(P>>3)|0;if(((d[(c[H>>2]|0)+ea|0]|0)&1<<(P&7^7)|0)==0){t=329}else{U=0}}else{t=329}}while(0);do{if((t|0)==329){t=0;U=II(c[w>>2]|0,U,c[B>>2]|0)|0;if((U|0)==0){U=0;break}ea=(da(c[r>>2]|0,I)|0)+(P>>3)|0;ea=(c[s>>2]|0)+ea|0;a[ea]=d[ea]|0|1<<(P&7^7)}}while(0);e=e<<1;do{if((S|0)==0){S=0;W=0}else{if((V|0)<0){V=V+1|0;W=0;break}W=(d[S]|0)>>>T&1;V=V+1|0;if((V|0)==(c[v>>2]|0)){S=0;break}if((T|0)==0){T=7;S=S+1|0;break}else{T=T+ -1|0;break}}}while(0);e=W|e&6;l=l<<1;do{if((K|0)==0){K=0;W=0}else{if((M|0)<0){M=M+1|0;W=0;break}W=(d[K]|0)>>>L&1;M=M+1|0;if((M|0)==(c[v>>2]|0)){K=0;break}if((L|0)==0){L=7;K=K+1|0;break}else{L=L+ -1|0;break}}}while(0);P=P+1|0;if((P|0)<(f|0)){l=W|l&14;O=(U|O)<<1&6}else{break}}}else if((h|0)==1){K=I+ -2|0;do{if((K|0)<0){N=0;P=0;L=0;t=251}else{if((c[u>>2]|0)<=(K|0)){N=0;P=0;L=0;t=251;break}M=c[v>>2]|0;if((M|0)<=0){N=0;P=0;L=0;t=251;break}K=da(c[r>>2]|0,K)|0;K=(c[s>>2]|0)+K|0;if((K|0)==0){N=0;P=7;L=0;t=251;break}N=d[K]|0;L=N>>>7;if((M|0)==1){N=1;P=7;t=251;break}L=(N>>>6&1|L<<1)<<1;if((M|0)==2){N=2;P=6;T=0;K=0;break}if((K|0)==0){N=2;P=5;T=0;K=0;break}M=(c[v>>2]|0)==3;N=3;P=M?5:4;T=M?0:K;K=(d[K]|0)>>>5&1}}while(0);if((t|0)==251){t=0;L=L<<2;T=0;K=0}Q=K|L;L=I+ -1|0;do{if((I|0)<1){M=0;L=0;R=0;t=260}else{if((c[u>>2]|0)<=(L|0)){M=0;L=0;R=0;t=260;break}K=c[v>>2]|0;if((K|0)<=0){M=0;L=0;R=0;t=260;break}O=da(c[r>>2]|0,L)|0;O=(c[s>>2]|0)+O|0;if((O|0)==0){M=0;L=7;R=0;t=260;break}L=d[O]|0;R=L>>>7;if((K|0)==1){M=1;L=7;t=260;break}R=(L>>>6&1|R<<1)<<1;if((K|0)==2){M=2;L=6;K=0;O=0;break}if((O|0)==0){M=2;L=5;K=0;O=0;break}K=(c[v>>2]|0)==3;M=3;L=K?5:4;K=K?0:O;O=(d[O]|0)>>>5&1}}while(0);if((t|0)==260){t=0;R=R<<2;K=0;O=0}V=O|R;O=c[m>>2]|0;R=(c[n>>2]|0)+I|0;do{if((R|0)<0){R=0;S=0;O=0}else{if((c[u>>2]|0)<=(R|0)){R=0;S=0;O=0;break}if((c[v>>2]|0)<=(O|0)){R=0;S=0;O=0;break}U=da(c[r>>2]|0,R)|0;if((O|0)<0){R=O;S=7;O=(c[s>>2]|0)+U|0;break}else{R=O;S=O&7^7;O=(c[s>>2]|0)+(U+(O>>3))|0;break}}}while(0);if(y){U=P;e=Q;P=0;Q=0}else{break}while(1){l=V<<4|e<<9|P;do{if((O|0)==0){O=0;W=0}else{if((R|0)<0){R=R+1|0;W=0;break}W=(d[O]|0)>>>S&1;R=R+1|0;if((R|0)==(c[v>>2]|0)){O=0;break}if((S|0)==0){S=7;O=O+1|0;break}else{S=S+ -1|0;break}}}while(0);l=l|W;do{if(k){if((c[x>>2]|0)<=(Q|0)){t=282;break}if((c[F>>2]|0)<=(I|0)){t=282;break}ea=(da(c[G>>2]|0,I)|0)+(Q>>3)|0;if(((d[(c[H>>2]|0)+ea|0]|0)&1<<(Q&7^7)|0)==0){t=282}else{l=0}}else{t=282}}while(0);do{if((t|0)==282){t=0;l=II(c[w>>2]|0,l,c[B>>2]|0)|0;if((l|0)==0){l=0;break}ea=(da(c[r>>2]|0,I)|0)+(Q>>3)|0;ea=(c[s>>2]|0)+ea|0;a[ea]=d[ea]|0|1<<(Q&7^7)}}while(0);e=e<<1;do{if((T|0)==0){T=0;W=0}else{if((N|0)<0){N=N+1|0;W=0;break}W=(d[T]|0)>>>U&1;N=N+1|0;if((N|0)==(c[v>>2]|0)){T=0;break}if((U|0)==0){U=7;T=T+1|0;break}else{U=U+ -1|0;break}}}while(0);e=W|e&14;V=V<<1;do{if((K|0)==0){K=0;W=0}else{if((M|0)<0){M=M+1|0;W=0;break}W=(d[K]|0)>>>L&1;M=M+1|0;if((M|0)==(c[v>>2]|0)){K=0;break}if((L|0)==0){L=7;K=K+1|0;break}else{L=L+ -1|0;break}}}while(0);Q=Q+1|0;if((Q|0)<(f|0)){V=W|V&30;P=(l|P)<<1&14}else{break}}}else{break}}}while(0);I=I+1|0;}while((I|0)<(g|0));i=p;return q|0}}while(0);do{if((t|0)==5){Qe(-1,177872,W);c[q+20>>2]=0;if((q|0)==0){q=0}else{break}i=p;return q|0}}while(0);fd[c[(c[q>>2]|0)+4>>2]&511](q);ea=0;i=p;return ea|0}function AD(a){a=a|0;i=i;return 0}function BD(a){a=a|0;i=i;return 1}function CD(a){a=a|0;i=i;return 2}function DD(a){a=a|0;i=i;return 3}function ED(a){a=a|0;i=i;return 9}function FD(b,d){b=b|0;d=d|0;var e=0;e=i;uj(b,d);c[b>>2]=182752;a[b+72|0]=0;a[b+92|0]=0;a[b+112|0]=0;a[b+132|0]=0;c[b+196>>2]=0;bX(b+12|0,0,16)|0;bX(b+180|0,0,13)|0;i=e;return}function GD(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=182752;KD(a);d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function HD(a){a=a|0;var b=0;b=i;c[a>>2]=182752;KD(a);a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function ID(a){a=a|0;var b=0,d=0;b=i;d=c[a+8>>2]|0;fd[c[(c[d>>2]|0)+12>>2]&511](d);if(JD(a)|0){c[a+204>>2]=c[a+148>>2]}else{c[a+204>>2]=c[a+140>>2]}c[a+200>>2]=c[a+144>>2];c[a+208>>2]=0;c[a+216>>2]=0;i=b;return}function JD(b){b=b|0;var 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,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;d=i;g=i;i=i+8|0;u=i;i=i+8|0;t=i;i=i+8|0;h=i;i=i+8|0;j=i;i=i+8|0;k=i;i=i+8|0;l=i;i=i+8|0;m=i;i=i+8|0;o=i;i=i+8|0;p=i;i=i+8|0;q=i;i=i+8|0;n=i;i=i+8|0;f=i;i=i+8|0;e=i;i=i+8|0;A=i;i=i+8|0;s=i;i=i+8|0;z=s;y=i;i=i+8|0;v=i;i=i+8|0;x=v;r=b+28|0;a[r]=0;w=b+8|0;$=c[w>>2]|0;if((jd[c[(c[$>>2]|0)+24>>2]&511]($)|0)==255){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182848,A);TD(b,0)|0;h=c[b+168>>2]|0;g=b+12|0;c[g>>2]=h;h=ye(h,4)|0;f=b+16|0;c[f>>2]=h;a:do{if((c[g>>2]|0)!=0){e=b+180|0;j=0;while(1){c[h+(j<<2)>>2]=c[(c[(c[e>>2]|0)+48>>2]|0)+(j*88|0)+4>>2];j=j+1|0;if(j>>>0>=(c[g>>2]|0)>>>0){break a}h=c[f>>2]|0}}}while(0);c[b+20>>2]=(c[b+136>>2]|0)-(c[b+144>>2]|0);c[b+24>>2]=(c[b+140>>2]|0)-(c[b+148>>2]|0);$=1;i=d;return $|0}if(!(SD(b,z,y,x)|0)){$=1;i=d;return $|0}I=b+24|0;H=b+20|0;F=b+12|0;G=b+16|0;P=b+76|0;Q=b+80|0;R=b+84|0;S=b+88|0;T=b+92|0;L=b+96|0;O=b+100|0;N=b+104|0;M=b+108|0;K=b+112|0;E=b+116|0;B=b+120|0;C=b+124|0;D=b+128|0;A=b+132|0;J=b+72|0;b:while(1){U=c[s>>2]|0;do{if((U|0)==1768449138){U=c[w>>2]|0;U=jd[c[(c[U>>2]|0)+20>>2]&511](U)|0;if((U|0)==-1){r=25;break b}V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=25;break b}W=c[w>>2]|0;W=jd[c[(c[W>>2]|0)+20>>2]&511](W)|0;if((W|0)==-1){r=25;break b}X=c[w>>2]|0;X=jd[c[(c[X>>2]|0)+20>>2]&511](X)|0;if((X|0)==-1){r=25;break b}c[I>>2]=V<<16|U<<24|W<<8|X;X=c[w>>2]|0;X=jd[c[(c[X>>2]|0)+20>>2]&511](X)|0;if((X|0)==-1){r=25;break b}W=c[w>>2]|0;W=jd[c[(c[W>>2]|0)+20>>2]&511](W)|0;if((W|0)==-1){r=25;break b}U=c[w>>2]|0;U=jd[c[(c[U>>2]|0)+20>>2]&511](U)|0;if((U|0)==-1){r=25;break b}V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=25;break b}c[H>>2]=W<<16|X<<24|U<<8|V;U=c[w>>2]|0;U=jd[c[(c[U>>2]|0)+20>>2]&511](U)|0;if((U|0)==-1){r=25;break b}V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=25;break b}c[F>>2]=V|U<<8;U=c[w>>2]|0;U=jd[c[(c[U>>2]|0)+20>>2]&511](U)|0;if((U|0)==-1){r=25;break b}V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=25;break b}$=c[w>>2]|0;if((jd[c[(c[$>>2]|0)+20>>2]&511]($)|0)==-1){r=25;break b}$=c[w>>2]|0;if((jd[c[(c[$>>2]|0)+20>>2]&511]($)|0)==-1){r=25;break b}if((V|0)!=7){r=27;break b}V=ye(c[F>>2]|0,4)|0;c[G>>2]=V;c:do{if((c[F>>2]|0)!=0){W=0;while(1){c[V+(W<<2)>>2]=U;W=W+1|0;if(W>>>0>=(c[F>>2]|0)>>>0){break c}V=c[G>>2]|0}}}while(0);a[r]=1}else if((U|0)==1668246642){if(!(UD(b,c[v>>2]|0)|0)){b=0;r=92;break b}}else if((U|0)==1651532643){if((a[r]&1)==0){r=33;break b}U=c[v>>2]|0;if((U|0)!=(c[F>>2]|0)){r=36;break b}if((U|0)==0){break}else{W=0}do{U=c[G>>2]|0;V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=38;break b}c[U+(W<<2)>>2]=V;W=W+1|0;}while(W>>>0<(c[F>>2]|0)>>>0)}else if((U|0)==1785737827){if((c[G>>2]|0)==0){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183096,t)}if((a[J]&1)==0){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183144,u)}if(!(TD(b,0)|0)){b=0;r=92;break b}}else if((U|0)==1668112752){$=(c[v>>2]|0)>>>2;c[L>>2]=$;c[O>>2]=ye($,4)|0;c[N>>2]=ye(c[L>>2]|0,4)|0;c[M>>2]=ye(c[L>>2]|0,4)|0;if((c[L>>2]|0)!=0){U=0;do{W=(c[O>>2]|0)+(U<<2)|0;V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=67;break b}X=c[w>>2]|0;X=jd[c[(c[X>>2]|0)+20>>2]&511](X)|0;if((X|0)==-1){r=67;break b}c[W>>2]=X|V<<8;V=c[N>>2]|0;W=c[w>>2]|0;W=jd[c[(c[W>>2]|0)+20>>2]&511](W)|0;if((W|0)==-1){r=67;break b}c[V+(U<<2)>>2]=W;V=c[M>>2]|0;W=c[w>>2]|0;W=jd[c[(c[W>>2]|0)+20>>2]&511](W)|0;if((W|0)==-1){r=67;break b}c[V+(U<<2)>>2]=W;U=U+1|0;}while(U>>>0<(c[L>>2]|0)>>>0)}a[K]=1}else if((U|0)==1885564018){U=c[w>>2]|0;U=jd[c[(c[U>>2]|0)+20>>2]&511](U)|0;if((U|0)==-1){r=44;break b}V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=44;break b}c[P>>2]=V|U<<8;U=c[w>>2]|0;U=jd[c[(c[U>>2]|0)+20>>2]&511](U)|0;if((U|0)==-1){r=44;break b}c[Q>>2]=U;c[R>>2]=ye(U,4)|0;c[S>>2]=ye(da(c[Q>>2]|0,c[P>>2]|0)|0,4)|0;if((c[Q>>2]|0)==0){W=0}else{V=0;do{U=c[R>>2]|0;W=c[w>>2]|0;W=jd[c[(c[W>>2]|0)+20>>2]&511](W)|0;if((W|0)==-1){r=47;break b}c[U+(V<<2)>>2]=W;W=(c[R>>2]|0)+(V<<2)|0;c[W>>2]=(c[W>>2]|0)+1;V=V+1|0;W=c[Q>>2]|0;}while(V>>>0>>0)}V=c[P>>2]|0;if((V|0)!=0){U=0;do{if((W|0)==0){W=0}else{V=0;do{X=c[(c[R>>2]|0)+(V<<2)>>2]|0;Y=((X&127)+7|0)>>>3;X=(X&128|0)==0;W=(da(W,U)|0)+V|0;W=(c[S>>2]|0)+(W<<2)|0;if((Y|0)==0){_=0}else{Z=0;_=0;do{$=c[w>>2]|0;$=jd[c[(c[$>>2]|0)+20>>2]&511]($)|0;if(($|0)==-1){r=57;break b}_=$+(_<<8)|0;Z=Z+1|0;}while((Z|0)<(Y|0))}do{if(!X){X=Y<<3;if((_&1<>2]=_;V=V+1|0;W=c[Q>>2]|0;}while(V>>>0>>0);V=c[P>>2]|0}U=U+1|0;}while(U>>>0>>0)}a[T]=1}else if((U|0)==1667523942){U=c[w>>2]|0;U=jd[c[(c[U>>2]|0)+20>>2]&511](U)|0;if((U|0)==-1){r=72;break b}V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=72;break b}$=V|U<<8;c[E>>2]=$;c[B>>2]=ye($,4)|0;c[C>>2]=ye(c[E>>2]|0,4)|0;c[D>>2]=ye(c[E>>2]|0,4)|0;if((c[E>>2]|0)!=0){U=0;do{V=(c[B>>2]|0)+(U<<2)|0;X=c[w>>2]|0;X=jd[c[(c[X>>2]|0)+20>>2]&511](X)|0;if((X|0)==-1){r=80;break b}W=c[w>>2]|0;W=jd[c[(c[W>>2]|0)+20>>2]&511](W)|0;if((W|0)==-1){r=80;break b}c[V>>2]=W|X<<8;W=(c[C>>2]|0)+(U<<2)|0;X=c[w>>2]|0;X=jd[c[(c[X>>2]|0)+20>>2]&511](X)|0;if((X|0)==-1){r=80;break b}V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=80;break b}c[W>>2]=V|X<<8;W=(c[D>>2]|0)+(U<<2)|0;X=c[w>>2]|0;X=jd[c[(c[X>>2]|0)+20>>2]&511](X)|0;if((X|0)==-1){r=80;break b}V=c[w>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){r=80;break b}c[W>>2]=V|X<<8;U=U+1|0;}while(U>>>0<(c[E>>2]|0)>>>0)}a[A]=1}else if((U|0)!=1785737832){V=c[v>>2]|0;if((V|0)==0){break}else{U=0}do{$=c[w>>2]|0;U=U+1|0;if((jd[c[(c[$>>2]|0)+20>>2]&511]($)|0)==-1){r=91;break b}}while(U>>>0>>0)}}while(0);if(!(SD(b,z,y,x)|0)){b=1;r=92;break}}if((r|0)==25){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182904,e);$=0;i=d;return $|0}else if((r|0)==27){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182936,f);$=0;i=d;return $|0}else if((r|0)==33){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182976,n);$=0;i=d;return $|0}else if((r|0)==36){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183048,q);$=0;i=d;return $|0}else if((r|0)==38){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182904,p);$=0;i=d;return $|0}else if((r|0)==44){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182904,o);$=0;i=d;return $|0}else if((r|0)==47){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182904,m);$=0;i=d;return $|0}else if((r|0)==57){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182904,l);$=0;i=d;return $|0}else if((r|0)==67){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182904,k);$=0;i=d;return $|0}else if((r|0)==72){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182904,j);$=0;i=d;return $|0}else if((r|0)==80){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182904,h);$=0;i=d;return $|0}else if((r|0)==91){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,182904,g);$=0;i=d;return $|0}else if((r|0)==92){i=d;return b|0}return 0}function KD(b){b=b|0;var 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;d=i;e=b+16|0;Fe(c[e>>2]|0);c[e>>2]=0;e=b+92|0;if((a[e]&1)!=0){Fe(c[b+84>>2]|0);Fe(c[b+88>>2]|0);a[e]=0}e=b+112|0;if((a[e]&1)!=0){Fe(c[b+100>>2]|0);Fe(c[b+104>>2]|0);Fe(c[b+108>>2]|0);a[e]=0}e=b+132|0;if((a[e]&1)!=0){Fe(c[b+120>>2]|0);Fe(c[b+124>>2]|0);Fe(c[b+128>>2]|0);a[e]=0}e=b+180|0;k=c[e>>2]|0;if((k|0)==0){wj(b);i=d;return}g=b+172|0;m=c[g>>2]|0;f=b+176|0;l=c[f>>2]|0;if((da(l,m)|0)!=0){h=b+168|0;o=k;j=0;while(1){k=o+(j*52|0)+48|0;n=c[k>>2]|0;if((n|0)==0){k=o}else{if((c[h>>2]|0)!=0){m=0;while(1){Fe(c[n+(m*88|0)+44>>2]|0);Fe(c[n+(m*88|0)+76>>2]|0);Fe(c[n+(m*88|0)+80>>2]|0);l=n+(m*88|0)+84|0;p=c[l>>2]|0;if((p|0)!=0){n=n+(m*88|0)+20|0;o=0;while(1){q=c[p+(o*76|0)+72>>2]|0;if((q|0)!=0){p=(o|0)==0?1:3;q=q+16|0;u=c[q>>2]|0;if((u|0)!=0){r=0;do{Fe(c[u+(r*40|0)+28>>2]|0);Fe(c[u+(r*40|0)+32>>2]|0);t=u+(r*40|0)+36|0;w=c[t>>2]|0;if((w|0)!=0){s=u+(r*40|0)+16|0;u=u+(r*40|0)+20|0;if((da(c[u>>2]|0,c[s>>2]|0)|0)!=0){v=0;do{Fe(c[w+(v*56|0)+44>>2]|0);x=c[w+(v*56|0)+48>>2]|0;if((x|0)!=0){DI(x);HW(x)}w=c[w+(v*56|0)+52>>2]|0;if((w|0)!=0){yI(w);HW(w)}v=v+1|0;x=v>>>0<(da(c[u>>2]|0,c[s>>2]|0)|0)>>>0;w=c[t>>2]|0}while(x)}Fe(w)}r=r+1|0;u=c[q>>2]|0}while(r>>>0

>>0);Fe(u)}Fe(c[(c[(c[(c[e>>2]|0)+(j*52|0)+48>>2]|0)+(m*88|0)+84>>2]|0)+(o*76|0)+72>>2]|0)}o=o+1|0;if(o>>>0>(c[n>>2]|0)>>>0){break}p=c[l>>2]|0}Fe(c[(c[(c[e>>2]|0)+(j*52|0)+48>>2]|0)+(m*88|0)+84>>2]|0)}m=m+1|0;if(m>>>0>=(c[h>>2]|0)>>>0){break}n=c[k>>2]|0}n=c[(c[e>>2]|0)+(j*52|0)+48>>2]|0}Fe(n);k=c[e>>2]|0;l=c[f>>2]|0;m=c[g>>2]|0}j=j+1|0;if(j>>>0<(da(l,m)|0)>>>0){o=k}else{break}}}Fe(k);c[e>>2]=0;wj(b);i=d;return}function LD(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;b=a+216|0;e=c[b>>2]|0;if(e>>>0<8){MD(a);e=c[b>>2]|0}if((e|0)==8){e=c[a+212>>2]&255;c[b>>2]=0;i=d;return e|0}if(e>>>0>8){f=e+ -8|0;e=(c[a+212>>2]|0)>>>f&255;c[b>>2]=f;i=d;return e|0}if((e|0)==0){f=-1;i=d;return f|0}f=c[a+212>>2]<<8-e&255;c[b>>2]=0;i=d;return f|0}function MD(a){a=a|0;var b=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,A=0,B=0;b=i;g=a+204|0;l=a+164|0;m=a+156|0;n=a+172|0;f=a+200|0;d=a+160|0;p=a+152|0;h=a+208|0;q=a+180|0;r=a+168|0;j=a+136|0;e=a+144|0;o=a+212|0;k=a+216|0;a=c[a+140>>2]|0;u=c[g>>2]|0;while(1){if(u>>>0>=a>>>0){d=10;break}B=u-(c[l>>2]|0)|0;A=c[m>>2]|0;s=da(c[n>>2]|0,(B>>>0)/(A>>>0)|0)|0;v=c[f>>2]|0;y=v-(c[d>>2]|0)|0;x=c[p>>2]|0;w=c[h>>2]|0;s=c[(c[q>>2]|0)+((((y>>>0)/(x>>>0)|0)+s|0)*52|0)+48>>2]|0;t=c[s+(w*88|0)+8>>2]|0;z=c[s+(w*88|0)+12>>2]|0;t=(da((c[s+(w*88|0)+60>>2]|0)-(c[s+(w*88|0)+52>>2]|0)|0,((((B>>>0)%(A>>>0)|0)+ -1+z|0)>>>0)/(z>>>0)|0)|0)+(((((y>>>0)%(x>>>0)|0)+ -1+t|0)>>>0)/(t>>>0)|0)|0;t=c[(c[s+(w*88|0)+76>>2]|0)+(t<<2)>>2]|0;s=c[s+(w*88|0)+4>>2]|0;w=w+1|0;c[h>>2]=w;do{if((w|0)==(c[r>>2]|0)){c[h>>2]=0;B=v+1|0;c[f>>2]=B;if((B|0)!=(c[j>>2]|0)){break}c[f>>2]=c[e>>2];u=u+1|0;c[g>>2]=u}}while(0);v=c[o>>2]|0;if((s|0)==8){t=v<<8|t&255}else{t=v<>2]=t;B=(c[k>>2]|0)+s|0;c[k>>2]=B;if(B>>>0>=8){d=10;break}}if((d|0)==10){i=b;return}}function ND(a){a=a|0;var b=0,d=0,e=0;b=i;d=a+216|0;e=c[d>>2]|0;if(e>>>0<8){MD(a);e=c[d>>2]|0}if((e|0)==8){e=c[a+212>>2]&255;i=b;return e|0}if(e>>>0>8){e=(c[a+212>>2]|0)>>>(e+ -8|0)&255;i=b;return e|0}if((e|0)==0){e=-1;i=b;return e|0}e=c[a+212>>2]<<8-e&255;i=b;return e|0}function OD(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function PD(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+8>>2]|0;b=Bd[c[(c[b>>2]|0)+60>>2]&255](b,1)|0;i=d;return b|0}function QD(a,b,d){a=a|0;b=b|0;d=d|0;var 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;m=i;e=i;i=i+8|0;j=e;f=i;i=i+8|0;h=i;i=i+8|0;g=h;l=a+8|0;u=c[l>>2]|0;fd[c[(c[u>>2]|0)+12>>2]&511](u);u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+24>>2]&511](u)|0)==255){RD(a,b,d);u=l;u=c[u>>2]|0;t=u;t=c[t>>2]|0;t=t+16|0;t=c[t>>2]|0;fd[t&511](u);i=m;return}if(SD(a,j,f,g)|0){p=0;n=0;o=0}else{u=l;u=c[u>>2]|0;t=u;t=c[t>>2]|0;t=t+16|0;t=c[t>>2]|0;fd[t&511](u);i=m;return}a:while(1){q=c[e>>2]|0;b:do{if((q|0)==1785737827){break a}else if((q|0)==1768449138){u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}q=c[l>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}c[b>>2]=q+1;n=1}else if((q|0)!=1785737832)if((q|0)==1668246642){r=c[l>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}q=c[l>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}q=(q&128|0)==0?q:q|-256;u=c[l>>2]|0;if((jd[c[(c[u>>2]|0)+20>>2]&511](u)|0)==-1){break}if((((r&128|0)==0?r:r|-256)|0)!=1){q=c[h>>2]|0;if((q|0)==3){break}q=q+ -3|0;r=0;while(1){u=c[l>>2]|0;jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;r=r+1|0;if(r>>>0>>0){}else{break b}}}u=c[l>>2]|0;u=jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;if((u|0)==-1){break}t=c[l>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}s=c[l>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}r=c[l>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}r=t<<16|u<<24|s<<8|r;if((r|0)==0|(r|0)==17){r=1;k=35}else if((r|0)==12){r=3;k=35}else{if(!((r|0)!=21&(r&-5|0)!=16)){r=2;k=35}}do{if((k|0)==35){k=0;if(!((q|0)>(p|0)|o^1)){o=1;break}c[d>>2]=r;p=q;o=1}}while(0);q=c[h>>2]|0;if((q|0)==7){break}q=q+ -7|0;r=0;while(1){u=c[l>>2]|0;jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;r=r+1|0;if(r>>>0>>0){}else{break}}}else{q=c[h>>2]|0;if((q|0)==0){break}else{r=0}while(1){u=c[l>>2]|0;jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;r=r+1|0;if(r>>>0>>0){}else{break}}}}while(0);if(!(SD(a,j,f,g)|0)){k=44;break}}if((k|0)==44){u=l;u=c[u>>2]|0;t=u;t=c[t>>2]|0;t=t+16|0;t=c[t>>2]|0;fd[t&511](u);i=m;return}if(n&o){u=l;u=c[u>>2]|0;t=u;t=c[t>>2]|0;t=t+16|0;t=c[t>>2]|0;fd[t&511](u);i=m;return}RD(a,b,d);u=l;u=c[u>>2]|0;t=u;t=c[t>>2]|0;t=t+16|0;t=c[t>>2]|0;fd[t&511](u);i=m;return}function RD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;a=a+8|0;a:while(1){f=c[a>>2]|0;f=jd[c[(c[f>>2]|0)+20>>2]&511](f)|0;if((f|0)==-1){f=54;break}else if((f|0)!=255){continue}while(1){f=c[a>>2]|0;f=jd[c[(c[f>>2]|0)+20>>2]&511](f)|0;if((f|0)==0){continue a}else if((f|0)==-1){f=54;break a}else if((f|0)!=255){break}}if((f+ -48|0)>>>0<16){continue}if((f|0)==79|(f|0)==146|(f|0)==147|(f|0)==217){g=0}else{g=c[a>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;if((g|0)==-1){f=54;break}h=c[a>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((h|0)==-1){f=54;break}g=h|g<<8}if((f|0)==81){f=10;break}if(g>>>0<=2){continue}f=g+ -2|0;if((f|0)==0){continue}else{g=0}while(1){h=c[a>>2]|0;jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;g=g+1|0;if(g>>>0>>0){}else{continue a}}}if((f|0)==10){h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}h=c[a>>2]|0;if((jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)==-1){i=e;return}g=c[a>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;if((g|0)==-1){i=e;return}f=c[a>>2]|0;f=jd[c[(c[f>>2]|0)+20>>2]&511](f)|0;if((f|0)==-1){i=e;return}a=c[a>>2]|0;a=jd[c[(c[a>>2]|0)+20>>2]&511](a)|0;if((a|0)==-1){i=e;return}f=f|g<<8;c[b>>2]=(a&127)+1;if((f|0)==4){c[d>>2]=3;i=e;return}else if((f|0)==1){c[d>>2]=1;i=e;return}else if((f|0)==3){c[d>>2]=2;i=e;return}else{i=e;return}}else if((f|0)==54){i=e;return}}function SD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;f=i;i=i+8|0;h=a+8|0;m=c[h>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){o=0;i=g;return o|0}l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){o=0;i=g;return o|0}k=c[h>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){o=0;i=g;return o|0}j=c[h>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){o=0;i=g;return o|0}k=l<<16|m<<24|k<<8|j;l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){o=0;i=g;return o|0}m=c[h>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){o=0;i=g;return o|0}n=c[h>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){o=0;i=g;return o|0}j=c[h>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){o=0;i=g;return o|0}c[b>>2]=m<<16|l<<24|n<<8|j;if((k|0)==0){c[d>>2]=0;c[e>>2]=0;o=1;i=g;return o|0}else if((k|0)==1){k=c[h>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){o=0;i=g;return o|0}j=c[h>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){o=0;i=g;return o|0}b=c[h>>2]|0;b=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((b|0)==-1){o=0;i=g;return o|0}l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){o=0;i=g;return o|0}m=c[h>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){o=0;i=g;return o|0}n=c[h>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){o=0;i=g;return o|0}o=c[h>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){o=0;i=g;return o|0}h=c[h>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((h|0)==-1){o=0;i=g;return o|0}h=n<<16|m<<24|o<<8|h;if((j<<16|k<<24|b<<8|l|0)==0){c[d>>2]=h;c[e>>2]=h+ -16;o=1;i=g;return o|0}else{Qe(jd[c[(c[a>>2]|0)+48>>2]&511](a)|0,185016,f);o=0;i=g;return o|0}}else{c[d>>2]=k;c[e>>2]=k+ -8;o=1;i=g;return o|0}return 0}function TD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=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,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;h=i;m=i;i=i+8|0;l=i;i=i+8|0;J=i;i=i+8|0;I=i;i=i+8|0;H=i;i=i+8|0;V=i;i=i+8|0;W=V;G=i;i=i+8|0;F=i;i=i+8|0;E=i;i=i+8|0;D=i;i=i+8|0;C=i;i=i+8|0;B=i;i=i+8|0;A=i;i=i+8|0;z=i;i=i+8|0;y=i;i=i+8|0;x=i;i=i+8|0;w=i;i=i+8|0;v=i;i=i+8|0;u=i;i=i+8|0;t=i;i=i+8|0;s=i;i=i+8|0;r=i;i=i+8|0;ja=i;i=i+8|0;ha=i;i=i+8|0;ga=i;i=i+8|0;Y=i;i=i+8|0;S=i;i=i+8|0;Q=i;i=i+8|0;P=i;i=i+8|0;O=i;i=i+8|0;N=i;i=i+8|0;M=i;i=i+8|0;L=i;i=i+8|0;R=i;i=i+8|0;k=b+8|0;X=b+136|0;K=b+140|0;Z=b+144|0;_=b+148|0;$=b+152|0;aa=b+156|0;ba=b+160|0;ca=b+164|0;g=b+168|0;ea=b+28|0;e=b+172|0;d=b+176|0;f=b+180|0;fa=b+12|0;U=c[p>>2]|0;la=0;ma=0;T=0;a:while(1){b:while(1){na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=10;break a}else if((na|0)!=255){continue}while(1){oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=10;break a}else if((oa|0)==0){continue b}else if((oa|0)!=255){break b}}}do{if((oa+ -48|0)>>>0<16){na=0}else{if((oa|0)==79|(oa|0)==146|(oa|0)==147|(oa|0)==217){na=0;break}na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=10;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=10;break a}na=pa|na<<8}}while(0);switch(oa|0){case 85:{na=na+ -2|0;if((na|0)==0){pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}else{oa=0}while(1){ra=c[k>>2]|0;oa=oa+1|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=215;break a}if(oa>>>0>>0){}else{pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}}break};case 87:{na=na+ -2|0;if((na|0)==0){pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}else{oa=0}while(1){ra=c[k>>2]|0;oa=oa+1|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=218;break a}if(oa>>>0>>0){}else{pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}}break};case 79:{pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a};case 82:{oa=c[(c[f>>2]|0)+48>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=81;break a}c[oa+16>>2]=na;oa=c[f>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=81;break a}c[oa>>2]=na;oa=(c[f>>2]|0)+4|0;pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=81;break a}na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=81;break a}c[oa>>2]=na|pa<<8;oa=c[f>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=81;break a}c[oa+8>>2]=na;oa=c[(c[f>>2]|0)+48>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=81;break a}c[oa+20>>2]=na;oa=c[(c[f>>2]|0)+48>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=81;break a}c[oa+24>>2]=na;oa=c[(c[f>>2]|0)+48>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=81;break a}c[oa+28>>2]=na;oa=c[(c[f>>2]|0)+48>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=81;break a}c[oa+32>>2]=na;oa=c[(c[f>>2]|0)+48>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=81;break a}c[oa+36>>2]=na;ra=(c[(c[f>>2]|0)+48>>2]|0)+24|0;c[ra>>2]=(c[ra>>2]|0)+2;ra=(c[(c[f>>2]|0)+48>>2]|0)+28|0;c[ra>>2]=(c[ra>>2]|0)+2;if((da(c[d>>2]|0,c[e>>2]|0)|0)!=0){pa=0;do{if((pa|0)!=0){ra=c[f>>2]|0;c[ra+(pa*52|0)>>2]=c[ra>>2];ra=c[f>>2]|0;c[ra+(pa*52|0)+4>>2]=c[ra+4>>2];ra=c[f>>2]|0;c[ra+(pa*52|0)+8>>2]=c[ra+8>>2]}if((c[g>>2]|0)!=0){oa=0;do{if((oa|pa|0)!=0){ra=c[f>>2]|0;c[(c[ra+(pa*52|0)+48>>2]|0)+(oa*88|0)+16>>2]=c[(c[ra+48>>2]|0)+16>>2];ra=c[f>>2]|0;c[(c[ra+(pa*52|0)+48>>2]|0)+(oa*88|0)+20>>2]=c[(c[ra+48>>2]|0)+20>>2];ra=c[f>>2]|0;c[(c[ra+(pa*52|0)+48>>2]|0)+(oa*88|0)+24>>2]=c[(c[ra+48>>2]|0)+24>>2];ra=c[f>>2]|0;c[(c[ra+(pa*52|0)+48>>2]|0)+(oa*88|0)+28>>2]=c[(c[ra+48>>2]|0)+28>>2];ra=c[f>>2]|0;c[(c[ra+(pa*52|0)+48>>2]|0)+(oa*88|0)+32>>2]=c[(c[ra+48>>2]|0)+32>>2];ra=c[f>>2]|0;c[(c[ra+(pa*52|0)+48>>2]|0)+(oa*88|0)+36>>2]=c[(c[ra+48>>2]|0)+36>>2]}qa=ye((c[(c[(c[f>>2]|0)+(pa*52|0)+48>>2]|0)+(oa*88|0)+20>>2]|0)+1|0,76)|0;c[(c[(c[f>>2]|0)+(pa*52|0)+48>>2]|0)+(oa*88|0)+84>>2]=qa;qa=c[(c[f>>2]|0)+(pa*52|0)+48>>2]|0;na=0;do{c[(c[qa+(oa*88|0)+84>>2]|0)+(na*76|0)+72>>2]=0;na=na+1|0;qa=c[(c[f>>2]|0)+(pa*52|0)+48>>2]|0;}while(na>>>0<=(c[qa+(oa*88|0)+20>>2]|0)>>>0);oa=oa+1|0;}while(oa>>>0<(c[g>>2]|0)>>>0)}pa=pa+1|0;}while(pa>>>0<(da(c[d>>2]|0,c[e>>2]|0)|0)>>>0)}pa=c[(c[f>>2]|0)+48>>2]|0;na=0;do{if((c[pa+16>>2]&1|0)==0){c[(c[pa+84>>2]|0)+(na*76|0)>>2]=15;c[(c[(c[(c[f>>2]|0)+48>>2]|0)+84>>2]|0)+(na*76|0)+4>>2]=15}else{oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=95;break a}c[(c[(c[(c[f>>2]|0)+48>>2]|0)+84>>2]|0)+(na*76|0)>>2]=oa&15;c[(c[(c[(c[f>>2]|0)+48>>2]|0)+84>>2]|0)+(na*76|0)+4>>2]=oa>>>4&15}na=na+1|0;oa=c[f>>2]|0;pa=c[oa+48>>2]|0;}while(na>>>0<=(c[pa+20>>2]|0)>>>0);qa=c[e>>2]|0;pa=c[d>>2]|0;if((da(pa,qa)|0)==0){qa=T;ra=ma;la=1;T=qa;ma=ra;continue a}ra=c[g>>2]|0;na=ra;la=0;while(1){if((ra|0)==0){ra=0}else{pa=0;while(1){if((pa|la|0)==0){ra=na}else{na=c[oa+(la*52|0)+48>>2]|0;qa=0;do{c[(c[na+(pa*88|0)+84>>2]|0)+(qa*76|0)>>2]=c[(c[(c[oa+48>>2]|0)+84>>2]|0)+(qa*76|0)>>2];ra=c[f>>2]|0;c[(c[(c[ra+(la*52|0)+48>>2]|0)+(pa*88|0)+84>>2]|0)+(qa*76|0)+4>>2]=c[(c[(c[ra+48>>2]|0)+84>>2]|0)+(qa*76|0)+4>>2];qa=qa+1|0;oa=c[f>>2]|0;na=c[oa+(la*52|0)+48>>2]|0;}while(qa>>>0<=(c[na+(pa*88|0)+20>>2]|0)>>>0);ra=c[g>>2]|0}pa=pa+1|0;if(pa>>>0>>0){na=ra}else{break}}na=ra;pa=c[d>>2]|0;qa=c[e>>2]|0}la=la+1|0;if(la>>>0>=(da(pa,qa)|0)>>>0){qa=T;ra=ma;la=1;T=qa;ma=ra;continue a}}break};case 92:{oa=c[(c[f>>2]|0)+48>>2]|0;pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=144;break a}c[oa+40>>2]=pa;pa=c[(c[f>>2]|0)+48>>2]|0;oa=c[pa+40>>2]&31;do{if((oa|0)==0){c[pa+48>>2]=na+ -3;oa=c[(c[f>>2]|0)+48>>2]|0;oa=Ce(c[oa+44>>2]|0,c[oa+48>>2]|0,4)|0;c[(c[(c[f>>2]|0)+48>>2]|0)+44>>2]=oa;oa=c[(c[f>>2]|0)+48>>2]|0;if((c[oa+48>>2]|0)==0){break}else{na=0}do{pa=c[oa+44>>2]|0;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=148;break a}c[pa+(na<<2)>>2]=oa;na=na+1|0;oa=c[(c[f>>2]|0)+48>>2]|0;}while(na>>>0<(c[oa+48>>2]|0)>>>0)}else if((oa|0)==1){c[pa+48>>2]=1;oa=c[(c[f>>2]|0)+48>>2]|0;oa=Ce(c[oa+44>>2]|0,c[oa+48>>2]|0,4)|0;c[(c[(c[f>>2]|0)+48>>2]|0)+44>>2]=oa;oa=c[(c[(c[f>>2]|0)+48>>2]|0)+44>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=153;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=153;break a}c[oa>>2]=pa|na<<8}else if((oa|0)==2){c[pa+48>>2]=(na+ -3|0)>>>1;oa=c[(c[f>>2]|0)+48>>2]|0;oa=Ce(c[oa+44>>2]|0,c[oa+48>>2]|0,4)|0;c[(c[(c[f>>2]|0)+48>>2]|0)+44>>2]=oa;oa=c[(c[f>>2]|0)+48>>2]|0;if((c[oa+48>>2]|0)==0){break}else{na=0}do{pa=(c[oa+44>>2]|0)+(na<<2)|0;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=157;break a}qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=157;break a}c[pa>>2]=qa|oa<<8;na=na+1|0;oa=c[(c[f>>2]|0)+48>>2]|0;}while(na>>>0<(c[oa+48>>2]|0)>>>0)}else{o=159;break a}}while(0);pa=c[e>>2]|0;oa=c[d>>2]|0;if((da(oa,pa)|0)==0){qa=T;ra=la;ma=1;T=qa;la=ra;continue a}qa=c[g>>2]|0;na=qa;ma=0;while(1){if((qa|0)==0){qa=0}else{oa=0;while(1){if((oa|ma|0)==0){qa=na}else{pa=c[f>>2]|0;c[(c[pa+(ma*52|0)+48>>2]|0)+(oa*88|0)+40>>2]=c[(c[pa+48>>2]|0)+40>>2];pa=c[f>>2]|0;c[(c[pa+(ma*52|0)+48>>2]|0)+(oa*88|0)+48>>2]=c[(c[pa+48>>2]|0)+48>>2];pa=c[f>>2]|0;pa=Ce(c[(c[pa+(ma*52|0)+48>>2]|0)+(oa*88|0)+44>>2]|0,c[(c[pa+48>>2]|0)+48>>2]|0,4)|0;c[(c[(c[f>>2]|0)+(ma*52|0)+48>>2]|0)+(oa*88|0)+44>>2]=pa;pa=c[f>>2]|0;na=c[pa+48>>2]|0;if((c[na+48>>2]|0)!=0){qa=0;do{c[(c[(c[pa+(ma*52|0)+48>>2]|0)+(oa*88|0)+44>>2]|0)+(qa<<2)>>2]=c[(c[na+44>>2]|0)+(qa<<2)>>2];qa=qa+1|0;pa=c[f>>2]|0;na=c[pa+48>>2]|0;}while(qa>>>0<(c[na+48>>2]|0)>>>0)}qa=c[g>>2]|0}oa=oa+1|0;if(oa>>>0>>0){na=qa}else{break}}na=qa;oa=c[d>>2]|0;pa=c[e>>2]|0}ma=ma+1|0;if(ma>>>0>=(da(oa,pa)|0)>>>0){qa=T;ra=la;ma=1;T=qa;la=ra;continue a}}break};case 81:{ra=c[k>>2]|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=52;break a}ra=c[k>>2]|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=52;break a}na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=52;break a}oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=52;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=52;break a}qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=52;break a}c[X>>2]=oa<<16|na<<24|pa<<8|qa;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=52;break a}oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=52;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=52;break a}qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=52;break a}c[K>>2]=oa<<16|na<<24|pa<<8|qa;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=52;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=52;break a}qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=52;break a}na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=52;break a}c[Z>>2]=pa<<16|oa<<24|qa<<8|na;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=52;break a}oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=52;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=52;break a}qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=52;break a}c[_>>2]=oa<<16|na<<24|pa<<8|qa;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=52;break a}oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=52;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=52;break a}qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=52;break a}c[$>>2]=oa<<16|na<<24|pa<<8|qa;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=52;break a}oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=52;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=52;break a}qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=52;break a}c[aa>>2]=oa<<16|na<<24|pa<<8|qa;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=52;break a}oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=52;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=52;break a}qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=52;break a}c[ba>>2]=oa<<16|na<<24|pa<<8|qa;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=52;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=52;break a}qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=52;break a}na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=52;break a}c[ca>>2]=pa<<16|oa<<24|qa<<8|na;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=52;break a}na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=52;break a}na=na|oa<<8;c[g>>2]=na;if((a[ea]&1)!=0){if((na|0)!=(c[fa>>2]|0)){o=55;break a}}oa=c[$>>2]|0;oa=(((c[X>>2]|0)+ -1-(c[ba>>2]|0)+oa|0)>>>0)/(oa>>>0)|0;c[e>>2]=oa;na=c[aa>>2]|0;na=(((c[K>>2]|0)+ -1-(c[ca>>2]|0)+na|0)>>>0)/(na>>>0)|0;c[d>>2]=na;if((oa|0)==0|(na|0)==0){o=58;break a}if(oa>>>0>=(2147483647/(na>>>0)|0)>>>0){o=58;break a}c[f>>2]=ye(da(oa,na)|0,52)|0;ra=(da(c[d>>2]|0,c[e>>2]|0)|0)==0;oa=c[g>>2]|0;if(!ra){na=0;do{ra=ye(oa,88)|0;c[(c[f>>2]|0)+(na*52|0)+48>>2]=ra;if((c[g>>2]|0)==0){oa=0}else{pa=0;while(1){c[(c[(c[f>>2]|0)+(na*52|0)+48>>2]|0)+(pa*88|0)+44>>2]=0;c[(c[(c[f>>2]|0)+(na*52|0)+48>>2]|0)+(pa*88|0)+76>>2]=0;c[(c[(c[f>>2]|0)+(na*52|0)+48>>2]|0)+(pa*88|0)+80>>2]=0;c[(c[(c[f>>2]|0)+(na*52|0)+48>>2]|0)+(pa*88|0)+84>>2]=0;pa=pa+1|0;oa=c[g>>2]|0;if(pa>>>0>>0){}else{break}}}na=na+1|0;}while(na>>>0<(da(c[d>>2]|0,c[e>>2]|0)|0)>>>0)}if((oa|0)==0){qa=ma;ra=la;T=1;ma=qa;la=ra;continue a}else{na=0}while(1){pa=c[(c[f>>2]|0)+48>>2]|0;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=67;break a}c[pa+(na*88|0)+4>>2]=oa;pa=c[(c[f>>2]|0)+48>>2]|0;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=67;break a}c[pa+(na*88|0)+8>>2]=oa;pa=c[(c[f>>2]|0)+48>>2]|0;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=67;break a}c[pa+(na*88|0)+12>>2]=oa;ra=c[(c[f>>2]|0)+48>>2]|0;a[ra+(na*88|0)|0]=(c[ra+(na*88|0)+4>>2]|0)>>>7&1;ra=(c[(c[f>>2]|0)+48>>2]|0)+(na*88|0)+4|0;c[ra>>2]=(c[ra>>2]&127)+1;if((da(c[d>>2]|0,c[e>>2]|0)|0)>>>0>1){oa=1;do{ra=c[f>>2]|0;$W((c[ra+(oa*52|0)+48>>2]|0)+(na*88|0)|0,(c[ra+48>>2]|0)+(na*88|0)|0,88)|0;oa=oa+1|0;}while(oa>>>0<(da(c[d>>2]|0,c[e>>2]|0)|0)>>>0)}na=na+1|0;if(na>>>0>=(c[g>>2]|0)>>>0){qa=ma;ra=la;T=1;ma=qa;la=ra;continue a}}break};case 99:{na=na+ -2|0;if((na|0)==0){pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}else{oa=0}while(1){ra=c[k>>2]|0;oa=oa+1|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=221;break a}if(oa>>>0>>0){}else{pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}}break};case 100:{na=na+ -2|0;if((na|0)==0){pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}else{oa=0}while(1){ra=c[k>>2]|0;oa=oa+1|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=224;break a}if(oa>>>0>>0){}else{pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}}break};case 93:{if(!ma){o=171;break a}if((c[g>>2]|0)>>>0>256){oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=180;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=180;break a}qa=c[g>>2]|0;if(qa>>>0<257){o=176}else{q=qa;ia=pa|oa<<8}}else{o=176}if((o|0)==176){o=0;ia=c[k>>2]|0;ia=jd[c[(c[ia>>2]|0)+20>>2]&511](ia)|0;if((ia|0)==-1){o=180;break a}q=c[g>>2]|0}if(ia>>>0>=q>>>0){o=180;break a}pa=c[(c[f>>2]|0)+48>>2]|0;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=180;break a}c[pa+(ia*88|0)+40>>2]=oa;oa=c[(c[f>>2]|0)+48>>2]|0;pa=c[oa+(ia*88|0)+40>>2]&31;do{if((pa|0)==0){c[oa+(ia*88|0)+48>>2]=na-((c[g>>2]|0)>>>0>256?5:4);oa=c[(c[f>>2]|0)+48>>2]|0;oa=Ce(c[oa+(ia*88|0)+44>>2]|0,c[oa+(ia*88|0)+48>>2]|0,4)|0;c[(c[(c[f>>2]|0)+48>>2]|0)+(ia*88|0)+44>>2]=oa;oa=c[(c[f>>2]|0)+48>>2]|0;if((c[oa+(ia*88|0)+48>>2]|0)==0){break}else{na=0}do{pa=c[oa+(ia*88|0)+44>>2]|0;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=184;break a}c[pa+(na<<2)>>2]=oa;na=na+1|0;oa=c[(c[f>>2]|0)+48>>2]|0;}while(na>>>0<(c[oa+(ia*88|0)+48>>2]|0)>>>0)}else if((pa|0)==1){c[oa+(ia*88|0)+48>>2]=1;oa=c[(c[f>>2]|0)+48>>2]|0;oa=Ce(c[oa+(ia*88|0)+44>>2]|0,c[oa+(ia*88|0)+48>>2]|0,4)|0;c[(c[(c[f>>2]|0)+48>>2]|0)+(ia*88|0)+44>>2]=oa;oa=c[(c[(c[f>>2]|0)+48>>2]|0)+(ia*88|0)+44>>2]|0;na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=189;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=189;break a}c[oa>>2]=pa|na<<8}else if((pa|0)==2){c[oa+(ia*88|0)+48>>2]=(na-((c[g>>2]|0)>>>0>256?5:4)|0)>>>1;oa=c[(c[f>>2]|0)+48>>2]|0;oa=Ce(c[oa+(ia*88|0)+44>>2]|0,c[oa+(ia*88|0)+48>>2]|0,4)|0;c[(c[(c[f>>2]|0)+48>>2]|0)+(ia*88|0)+44>>2]=oa;oa=c[(c[f>>2]|0)+48>>2]|0;if((c[oa+(ia*88|0)+48>>2]|0)==0){break}else{na=0}do{pa=(c[oa+(ia*88|0)+44>>2]|0)+(na<<2)|0;qa=c[k>>2]|0;qa=jd[c[(c[qa>>2]|0)+20>>2]&511](qa)|0;if((qa|0)==-1){o=193;break a}oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=193;break a}c[pa>>2]=oa|qa<<8;na=na+1|0;oa=c[(c[f>>2]|0)+48>>2]|0;}while(na>>>0<(c[oa+(ia*88|0)+48>>2]|0)>>>0)}else{o=195;break a}}while(0);if((da(c[d>>2]|0,c[e>>2]|0)|0)>>>0<=1){qa=T;ra=la;ma=1;T=qa;la=ra;continue a}pa=c[f>>2]|0;ma=1;while(1){c[(c[pa+(ma*52|0)+48>>2]|0)+(ia*88|0)+40>>2]=c[(c[pa+48>>2]|0)+(ia*88|0)+40>>2];pa=c[f>>2]|0;c[(c[pa+(ma*52|0)+48>>2]|0)+(ia*88|0)+48>>2]=c[(c[pa+48>>2]|0)+(ia*88|0)+48>>2];pa=c[f>>2]|0;pa=Ce(c[(c[pa+(ma*52|0)+48>>2]|0)+(ia*88|0)+44>>2]|0,c[(c[pa+48>>2]|0)+(ia*88|0)+48>>2]|0,4)|0;c[(c[(c[f>>2]|0)+(ma*52|0)+48>>2]|0)+(ia*88|0)+44>>2]=pa;pa=c[f>>2]|0;oa=c[pa+48>>2]|0;if((c[oa+(ia*88|0)+48>>2]|0)!=0){na=0;while(1){c[(c[(c[pa+(ma*52|0)+48>>2]|0)+(ia*88|0)+44>>2]|0)+(na<<2)>>2]=c[(c[oa+(ia*88|0)+44>>2]|0)+(na<<2)>>2];na=na+1|0;pa=c[f>>2]|0;oa=c[pa+48>>2]|0;if(na>>>0<(c[oa+(ia*88|0)+48>>2]|0)>>>0){}else{break}}}ma=ma+1|0;if(ma>>>0>=(da(c[d>>2]|0,c[e>>2]|0)|0)>>>0){qa=T;ra=la;ma=1;T=qa;la=ra;continue a}}break};case 94:{Rb(183600,4,1,U|0)|0;na=na+ -2|0;if((na|0)==0){pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}else{oa=0}while(1){ra=c[k>>2]|0;oa=oa+1|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=204;break a}if(oa>>>0>>0){}else{pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}}break};case 95:{Rb(183640,4,1,U|0)|0;na=na+ -2|0;if((na|0)==0){pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}else{oa=0}while(1){ra=c[k>>2]|0;oa=oa+1|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=208;break a}if(oa>>>0>>0){}else{pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}}break};case 96:{Rb(183648,4,1,U|0)|0;na=na+ -2|0;if((na|0)==0){pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}else{oa=0}while(1){ra=c[k>>2]|0;oa=oa+1|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=212;break a}if(oa>>>0>>0){}else{pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}}break};case 83:{if(!la){o=110;break a}if((c[g>>2]|0)>>>0>256){oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=124;break a}pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=124;break a}na=c[g>>2]|0;if(na>>>0<257){o=115}else{n=na;ka=pa|oa<<8}}else{o=115}if((o|0)==115){o=0;ka=c[k>>2]|0;ka=jd[c[(c[ka>>2]|0)+20>>2]&511](ka)|0;if((ka|0)==-1){o=124;break a}n=c[g>>2]|0}if(ka>>>0>=n>>>0){o=124;break a}na=c[k>>2]|0;na=jd[c[(c[na>>2]|0)+20>>2]&511](na)|0;if((na|0)==-1){o=124;break a}oa=c[(c[f>>2]|0)+48>>2]|0;pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=124;break a}c[oa+(ka*88|0)+20>>2]=pa;oa=c[(c[f>>2]|0)+48>>2]|0;pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=124;break a}c[oa+(ka*88|0)+24>>2]=pa;oa=c[(c[f>>2]|0)+48>>2]|0;pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=124;break a}c[oa+(ka*88|0)+28>>2]=pa;pa=c[(c[f>>2]|0)+48>>2]|0;oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=124;break a}c[pa+(ka*88|0)+32>>2]=oa;oa=c[(c[f>>2]|0)+48>>2]|0;pa=c[k>>2]|0;pa=jd[c[(c[pa>>2]|0)+20>>2]&511](pa)|0;if((pa|0)==-1){o=124;break a}c[oa+(ka*88|0)+36>>2]=pa;ra=(c[(c[f>>2]|0)+48>>2]|0)+(ka*88|0)+16|0;c[ra>>2]=c[ra>>2]&-2|na&1;ra=(c[(c[f>>2]|0)+48>>2]|0)+(ka*88|0)+24|0;c[ra>>2]=(c[ra>>2]|0)+2;ra=(c[(c[f>>2]|0)+48>>2]|0)+(ka*88|0)+28|0;c[ra>>2]=(c[ra>>2]|0)+2;if((da(c[d>>2]|0,c[e>>2]|0)|0)==0){na=c[f>>2]|0}else{qa=0;do{if((qa|0)!=0){ra=c[f>>2]|0;c[(c[ra+(qa*52|0)+48>>2]|0)+(ka*88|0)+16>>2]=c[(c[ra+48>>2]|0)+(ka*88|0)+16>>2];ra=c[f>>2]|0;c[(c[ra+(qa*52|0)+48>>2]|0)+(ka*88|0)+20>>2]=c[(c[ra+48>>2]|0)+(ka*88|0)+20>>2];ra=c[f>>2]|0;c[(c[ra+(qa*52|0)+48>>2]|0)+(ka*88|0)+24>>2]=c[(c[ra+48>>2]|0)+(ka*88|0)+24>>2];ra=c[f>>2]|0;c[(c[ra+(qa*52|0)+48>>2]|0)+(ka*88|0)+28>>2]=c[(c[ra+48>>2]|0)+(ka*88|0)+28>>2];ra=c[f>>2]|0;c[(c[ra+(qa*52|0)+48>>2]|0)+(ka*88|0)+32>>2]=c[(c[ra+48>>2]|0)+(ka*88|0)+32>>2];ra=c[f>>2]|0;c[(c[ra+(qa*52|0)+48>>2]|0)+(ka*88|0)+36>>2]=c[(c[ra+48>>2]|0)+(ka*88|0)+36>>2]}oa=c[(c[f>>2]|0)+(qa*52|0)+48>>2]|0;oa=Ce(c[oa+(ka*88|0)+84>>2]|0,(c[oa+(ka*88|0)+20>>2]|0)+1|0,76)|0;c[(c[(c[f>>2]|0)+(qa*52|0)+48>>2]|0)+(ka*88|0)+84>>2]=oa;oa=c[(c[f>>2]|0)+(qa*52|0)+48>>2]|0;pa=0;do{c[(c[oa+(ka*88|0)+84>>2]|0)+(pa*76|0)+72>>2]=0;pa=pa+1|0;na=c[f>>2]|0;oa=c[na+(qa*52|0)+48>>2]|0;}while(pa>>>0<=(c[oa+(ka*88|0)+20>>2]|0)>>>0);qa=qa+1|0;}while(qa>>>0<(da(c[d>>2]|0,c[e>>2]|0)|0)>>>0)}oa=c[na+48>>2]|0;na=0;do{if((c[oa+(ka*88|0)+16>>2]&1|0)==0){c[(c[oa+(ka*88|0)+84>>2]|0)+(na*76|0)>>2]=15;c[(c[(c[(c[f>>2]|0)+48>>2]|0)+(ka*88|0)+84>>2]|0)+(na*76|0)+4>>2]=15}else{oa=c[k>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;if((oa|0)==-1){o=135;break a}c[(c[(c[(c[f>>2]|0)+48>>2]|0)+(ka*88|0)+84>>2]|0)+(na*76|0)>>2]=oa&15;c[(c[(c[(c[f>>2]|0)+48>>2]|0)+(ka*88|0)+84>>2]|0)+(na*76|0)+4>>2]=oa>>>4&15}na=na+1|0;pa=c[f>>2]|0;oa=c[pa+48>>2]|0;}while(na>>>0<=(c[oa+(ka*88|0)+20>>2]|0)>>>0);if((da(c[d>>2]|0,c[e>>2]|0)|0)>>>0>1){la=pa;oa=1}else{qa=T;ra=ma;la=1;T=qa;ma=ra;continue a}while(1){na=c[la+(oa*52|0)+48>>2]|0;pa=0;do{c[(c[na+(ka*88|0)+84>>2]|0)+(pa*76|0)>>2]=c[(c[(c[la+48>>2]|0)+(ka*88|0)+84>>2]|0)+(pa*76|0)>>2];ra=c[f>>2]|0;c[(c[(c[ra+(oa*52|0)+48>>2]|0)+(ka*88|0)+84>>2]|0)+(pa*76|0)+4>>2]=c[(c[(c[ra+48>>2]|0)+(ka*88|0)+84>>2]|0)+(pa*76|0)+4>>2];pa=pa+1|0;la=c[f>>2]|0;na=c[la+(oa*52|0)+48>>2]|0;}while(pa>>>0<=(c[na+(ka*88|0)+20>>2]|0)>>>0);oa=oa+1|0;if(oa>>>0>=(da(c[d>>2]|0,c[e>>2]|0)|0)>>>0){qa=T;ra=ma;la=1;T=qa;ma=ra;continue a}}break};case 144:{o=225;break a};default:{ra=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;c[V>>2]=oa;Qe(ra,183784,W);na=na+ -2|0;if((na|0)==0){pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}else{oa=0}while(1){ra=c[k>>2]|0;oa=oa+1|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)!=-1&oa>>>0>>0){}else{pa=T;qa=ma;ra=la;T=pa;ma=qa;la=ra;continue a}}}}}if((o|0)==10){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183208,R);ra=0;i=h;return ra|0}else if((o|0)==52){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183232,L);ra=0;i=h;return ra|0}else if((o|0)==55){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183264,M);ra=0;i=h;return ra|0}else if((o|0)==58){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183328,N);ra=0;i=h;return ra|0}else if((o|0)==67){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183232,O);ra=0;i=h;return ra|0}else if((o|0)==81){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183376,P);ra=0;i=h;return ra|0}else if((o|0)==95){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183376,Q);ra=0;i=h;return ra|0}else if((o|0)==110){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183408,S);ra=0;i=h;return ra|0}else if((o|0)==124){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183456,Y);ra=0;i=h;return ra|0}else if((o|0)==135){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183376,ga);ra=0;i=h;return ra|0}else if((o|0)==144){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183488,ha);ra=0;i=h;return ra|0}else if((o|0)==148){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183488,ja);ra=0;i=h;return ra|0}else if((o|0)==153){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183488,r);ra=0;i=h;return ra|0}else if((o|0)==157){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183488,s);ra=0;i=h;return ra|0}else if((o|0)==159){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183488,t);ra=0;i=h;return ra|0}else if((o|0)==171){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183520,u);ra=0;i=h;return ra|0}else if((o|0)==180){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183568,v);ra=0;i=h;return ra|0}else if((o|0)==184){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183568,w);ra=0;i=h;return ra|0}else if((o|0)==189){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183568,x);ra=0;i=h;return ra|0}else if((o|0)==193){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183488,y);ra=0;i=h;return ra|0}else if((o|0)==195){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183568,z);ra=0;i=h;return ra|0}else if((o|0)==204){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183608,A);ra=0;i=h;return ra|0}else if((o|0)==208){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183608,B);ra=0;i=h;return ra|0}else if((o|0)==212){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183608,C);ra=0;i=h;return ra|0}else if((o|0)==215){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183656,D);ra=0;i=h;return ra|0}else if((o|0)==218){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183688,E);ra=0;i=h;return ra|0}else if((o|0)==221){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183720,F);ra=0;i=h;return ra|0}else if((o|0)==224){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183752,G);ra=0;i=h;return ra|0}else if((o|0)==225){if(!T){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183832,H);ra=0;i=h;return ra|0}if(!la){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183880,I);ra=0;i=h;return ra|0}if(!ma){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183928,J);ra=0;i=h;return ra|0}c:while(1){if(!(VD(b)|0)){j=0;o=249;break}d:while(1){n=c[k>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){o=241;break c}else if((n|0)!=255){continue}while(1){n=c[k>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){o=241;break c}else if((n|0)==0){continue d}else if((n|0)!=255){break d}}}if((n+ -48|0)>>>0>=16){if((n|0)==217){o=238;break}else if((n|0)==147|(n|0)==146|(n|0)==79){o=243;break}ra=c[k>>2]|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=241;break}ra=c[k>>2]|0;if((jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0)==-1){o=241;break}}if((n|0)==217){o=238;break}else if((n|0)!=144){o=243;break}}if((o|0)==238){if((da(c[d>>2]|0,c[e>>2]|0)|0)==0){ra=1;i=h;return ra|0}else{k=0}while(1){l=c[f>>2]|0;j=l+(k*52|0)|0;if((c[g>>2]|0)!=0){l=l+(k*52|0)+48|0;m=0;do{WD(b,(c[l>>2]|0)+(m*88|0)|0);m=m+1|0;}while(m>>>0<(c[g>>2]|0)>>>0)}k=k+1|0;if(!(XD(b,j)|0)){j=0;o=249;break}if(k>>>0>=(da(c[d>>2]|0,c[e>>2]|0)|0)>>>0){j=1;o=249;break}}if((o|0)==249){i=h;return j|0}}else if((o|0)==241){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183208,l);ra=0;i=h;return ra|0}else if((o|0)==243){Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183976,m);ra=0;i=h;return ra|0}else if((o|0)==249){i=h;return j|0}}return 0}function UD(b,d){b=b|0;d=d|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=i;g=i;i=i+8|0;j=b+8|0;h=c[j>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;a:do{if((h|0)!=-1){f=c[j>>2]|0;f=jd[c[(c[f>>2]|0)+20>>2]&511](f)|0;if((f|0)==-1){break}f=(f&128|0)==0?f:f|-256;J=c[j>>2]|0;if((jd[c[(c[J>>2]|0)+20>>2]&511](J)|0)==-1){break}if((h|0)==1){h=c[j>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((h|0)==-1){break}k=c[j>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}l=c[j>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){break}m=c[j>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}h=k<<16|h<<24|l<<8|m;b:do{switch(h|0){case 23:case 22:case 21:case 20:case 24:case 18:case 17:case 16:case 13:case 12:case 11:case 9:case 4:case 3:case 1:case 0:{g=0;j=0;z=0;v=0;r=0;n=0;l=0;break};case 14:{if((d|0)==7){g=4470064;j=96;z=255;v=128;r=255;n=0;l=100;break b}else if((d|0)!=35){break a}m=c[j>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break a}l=c[j>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){break a}k=c[j>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break a}d=c[j>>2]|0;d=jd[c[(c[d>>2]|0)+20>>2]&511](d)|0;if((d|0)==-1){break a}p=c[j>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break a}n=c[j>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break a}q=c[j>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break a}o=c[j>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){break a}r=c[j>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break a}u=c[j>>2]|0;u=jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;if((u|0)==-1){break a}t=c[j>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break a}s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break a}w=c[j>>2]|0;w=jd[c[(c[w>>2]|0)+20>>2]&511](w)|0;if((w|0)==-1){break a}v=c[j>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;if((v|0)==-1){break a}y=c[j>>2]|0;y=jd[c[(c[y>>2]|0)+20>>2]&511](y)|0;if((y|0)==-1){break a}x=c[j>>2]|0;x=jd[c[(c[x>>2]|0)+20>>2]&511](x)|0;if((x|0)==-1){break a}C=c[j>>2]|0;C=jd[c[(c[C>>2]|0)+20>>2]&511](C)|0;if((C|0)==-1){break a}B=c[j>>2]|0;B=jd[c[(c[B>>2]|0)+20>>2]&511](B)|0;if((B|0)==-1){break a}A=c[j>>2]|0;A=jd[c[(c[A>>2]|0)+20>>2]&511](A)|0;if((A|0)==-1){break a}z=c[j>>2]|0;z=jd[c[(c[z>>2]|0)+20>>2]&511](z)|0;if((z|0)==-1){break a}G=c[j>>2]|0;G=jd[c[(c[G>>2]|0)+20>>2]&511](G)|0;if((G|0)==-1){break a}D=c[j>>2]|0;D=jd[c[(c[D>>2]|0)+20>>2]&511](D)|0;if((D|0)==-1){break a}F=c[j>>2]|0;F=jd[c[(c[F>>2]|0)+20>>2]&511](F)|0;if((F|0)==-1){break a}E=c[j>>2]|0;E=jd[c[(c[E>>2]|0)+20>>2]&511](E)|0;if((E|0)==-1){break a}H=c[j>>2]|0;H=jd[c[(c[H>>2]|0)+20>>2]&511](H)|0;if((H|0)==-1){break a}I=c[j>>2]|0;I=jd[c[(c[I>>2]|0)+20>>2]&511](I)|0;if((I|0)==-1){break a}J=c[j>>2]|0;J=jd[c[(c[J>>2]|0)+20>>2]&511](J)|0;if((J|0)==-1){break a}j=c[j>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){break a}g=I<<16|H<<24|J<<8|j;j=D<<16|G<<24|F<<8|E;z=B<<16|C<<24|A<<8|z;v=v<<16|w<<24|y<<8|x;r=u<<16|r<<24|t<<8|s;n=n<<16|p<<24|q<<8|o;l=l<<16|m<<24|k<<8|d;break};default:{break a}}}while(0);k=b+72|0;d=b+36|0;do{if((a[k]&1)!=0){if((f|0)>(c[d>>2]|0)){break}else{b=1}i=e;return b|0}}while(0);c[b+32>>2]=1;c[d>>2]=f;c[b+40>>2]=h;c[b+44>>2]=l;c[b+48>>2]=n;c[b+52>>2]=r;c[b+56>>2]=v;c[b+60>>2]=z;c[b+64>>2]=j;c[b+68>>2]=g;a[k]=1;J=1;i=e;return J|0}else if((h|0)==4|(h|0)==3|(h|0)==2){f=d+ -3|0;if((f|0)==0){J=1;i=e;return J|0}else{h=0}while(1){J=c[j>>2]|0;h=h+1|0;if((jd[c[(c[J>>2]|0)+20>>2]&511](J)|0)==-1){break a}if(h>>>0>>0){}else{b=1;break}}i=e;return b|0}else{J=1;i=e;return J|0}}}while(0);Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,183184,g);J=0;i=e;return J|0}function VD(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;f=i;F=i;i=i+8|0;G=F;C=i;i=i+8|0;B=i;i=i+8|0;A=i;i=i+8|0;z=i;i=i+8|0;y=i;i=i+8|0;x=i;i=i+8|0;w=i;i=i+8|0;v=i;i=i+8|0;u=i;i=i+8|0;t=i;i=i+8|0;s=i;i=i+8|0;r=i;i=i+8|0;q=i;i=i+8|0;o=i;i=i+8|0;n=i;i=i+8|0;m=i;i=i+8|0;l=i;i=i+8|0;I=i;i=i+8|0;H=i;i=i+8|0;E=i;i=i+8|0;h=i;i=i+8|0;j=i;i=i+8|0;D=d+8|0;k=c[D>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;do{if((k|0)!=-1){g=c[D>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;if((g|0)==-1){break}g=g|k<<8;k=c[D>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}L=c[D>>2]|0;L=jd[c[(c[L>>2]|0)+20>>2]&511](L)|0;if((L|0)==-1){break}K=c[D>>2]|0;K=jd[c[(c[K>>2]|0)+20>>2]&511](K)|0;if((K|0)==-1){break}J=c[D>>2]|0;J=jd[c[(c[J>>2]|0)+20>>2]&511](J)|0;if((J|0)==-1){break}k=L<<16|k<<24|K<<8|J;K=c[D>>2]|0;K=jd[c[(c[K>>2]|0)+20>>2]&511](K)|0;if((K|0)==-1){break}X=c[D>>2]|0;if((jd[c[(c[X>>2]|0)+20>>2]&511](X)|0)==-1){break}J=d+172|0;if(g>>>0>=(da(c[d+176>>2]|0,c[J>>2]|0)|0)>>>0){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,184048,h);X=0;i=f;return X|0}h=(k|0)==0;L=d+180|0;j=d+168|0;M=c[p>>2]|0;k=k+ -12|0;a:while(1){b:while(1){N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=21;break a}else if((N|0)!=255){continue}while(1){N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==0){continue b}else if((N|0)==-1){e=21;break a}else if((N|0)!=255){break b}}}do{if((N+ -48|0)>>>0<16){O=0}else{if((N|0)==79|(N|0)==146|(N|0)==147|(N|0)==217){O=0;break}P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=21;break a}O=c[D>>2]|0;O=jd[c[(c[O>>2]|0)+20>>2]&511](O)|0;if((O|0)==-1){e=21;break a}O=O|P<<8}}while(0);k=k+ -2-O|0;switch(N|0){case 93:{if((c[j>>2]|0)>>>0>256){Q=c[D>>2]|0;Q=jd[c[(c[Q>>2]|0)+20>>2]&511](Q)|0;if((Q|0)==-1){e=105;break a}N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=105;break a}P=c[j>>2]|0;if(P>>>0<257){e=101}else{N=N|Q<<8}}else{e=101}if((e|0)==101){e=0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=105;break a}P=c[j>>2]|0}if(N>>>0>=P>>>0){e=105;break a}Q=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=105;break a}c[Q+(N*88|0)+40>>2]=P;Q=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=c[Q+(N*88|0)+40>>2]&31;if((P|0)==0){c[Q+(N*88|0)+48>>2]=O-((c[j>>2]|0)>>>0>256?5:4);P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=Ce(c[P+(N*88|0)+44>>2]|0,c[P+(N*88|0)+48>>2]|0,4)|0;c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+44>>2]=P;P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;if((c[P+(N*88|0)+48>>2]|0)==0){continue a}else{O=0}while(1){Q=c[P+(N*88|0)+44>>2]|0;P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=109;break a}c[Q+(O<<2)>>2]=P;O=O+1|0;P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;if(O>>>0>=(c[P+(N*88|0)+48>>2]|0)>>>0){continue a}}}else if((P|0)==1){c[Q+(N*88|0)+48>>2]=1;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;O=Ce(c[O+(N*88|0)+44>>2]|0,c[O+(N*88|0)+48>>2]|0,4)|0;c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+44>>2]=O;O=c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+44>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=114;break a}P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=114;break a}c[O>>2]=P|N<<8;continue a}else if((P|0)==2){c[Q+(N*88|0)+48>>2]=(O-((c[j>>2]|0)>>>0>256?5:4)|0)>>>1;P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=Ce(c[P+(N*88|0)+44>>2]|0,c[P+(N*88|0)+48>>2]|0,4)|0;c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+44>>2]=P;P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;if((c[P+(N*88|0)+48>>2]|0)==0){continue a}else{O=0}while(1){Q=(c[P+(N*88|0)+44>>2]|0)+(O<<2)|0;R=c[D>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){e=118;break a}P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=118;break a}c[Q>>2]=P|R<<8;O=O+1|0;P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;if(O>>>0>=(c[P+(N*88|0)+48>>2]|0)>>>0){continue a}}}else{e=120;break a}break};case 82:{O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=35;break a}c[O+16>>2]=N;O=c[L>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=35;break a}c[O+(g*52|0)>>2]=N;O=(c[L>>2]|0)+(g*52|0)+4|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=35;break a}P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=35;break a}c[O>>2]=P|N<<8;O=c[L>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=35;break a}c[O+(g*52|0)+8>>2]=N;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=35;break a}c[O+20>>2]=N;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=35;break a}c[O+24>>2]=N;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=35;break a}c[O+28>>2]=N;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=35;break a}c[O+32>>2]=N;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=35;break a}c[O+36>>2]=N;X=(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+24|0;c[X>>2]=(c[X>>2]|0)+2;X=(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+28|0;c[X>>2]=(c[X>>2]|0)+2;if((c[j>>2]|0)==0){N=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;O=0}else{O=0;while(1){if((O|0)!=0){X=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;c[X+(O*88|0)+16>>2]=c[X+16>>2];X=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;c[X+(O*88|0)+20>>2]=c[X+20>>2];X=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;c[X+(O*88|0)+24>>2]=c[X+24>>2];X=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;c[X+(O*88|0)+28>>2]=c[X+28>>2];X=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;c[X+(O*88|0)+32>>2]=c[X+32>>2];X=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;c[X+(O*88|0)+36>>2]=c[X+36>>2]}N=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;N=Ce(c[N+(O*88|0)+84>>2]|0,(c[N+(O*88|0)+20>>2]|0)+1|0,76)|0;c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(O*88|0)+84>>2]=N;N=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=0;do{c[(c[N+(O*88|0)+84>>2]|0)+(P*76|0)+72>>2]=0;P=P+1|0;N=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;}while(P>>>0<=(c[N+(O*88|0)+20>>2]|0)>>>0);O=O+1|0;if(O>>>0>=(c[j>>2]|0)>>>0){O=0;break}}}do{if((c[N+16>>2]&1|0)==0){c[(c[N+84>>2]|0)+(O*76|0)>>2]=15;c[(c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+84>>2]|0)+(O*76|0)+4>>2]=15}else{N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=45;break a}c[(c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+84>>2]|0)+(O*76|0)>>2]=N&15;c[(c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+84>>2]|0)+(O*76|0)+4>>2]=N>>>4&15}O=O+1|0;N=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;}while(O>>>0<=(c[N+20>>2]|0)>>>0);if((c[j>>2]|0)>>>0>1){O=1}else{continue a}while(1){P=0;do{c[(c[N+(O*88|0)+84>>2]|0)+(P*76|0)>>2]=c[(c[N+84>>2]|0)+(P*76|0)>>2];X=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;c[(c[X+(O*88|0)+84>>2]|0)+(P*76|0)+4>>2]=c[(c[X+84>>2]|0)+(P*76|0)+4>>2];P=P+1|0;N=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;}while(P>>>0<=(c[N+(O*88|0)+20>>2]|0)>>>0);O=O+1|0;if(O>>>0>=(c[j>>2]|0)>>>0){continue a}}break};case 88:{N=O+ -2|0;break};case 100:{N=O+ -2|0;if((N|0)==0){continue a}else{O=0}while(1){X=c[D>>2]|0;O=O+1|0;if((jd[c[(c[X>>2]|0)+20>>2]&511](X)|0)==-1){e=139;break a}if(O>>>0>>0){}else{continue a}}break};case 83:{if((c[j>>2]|0)>>>0>256){N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=66;break a}P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=66;break a}O=c[j>>2]|0;if(O>>>0<257){e=57}else{N=P|N<<8}}else{e=57}if((e|0)==57){e=0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=66;break a}O=c[j>>2]|0}if(N>>>0>=O>>>0){e=66;break a}O=c[D>>2]|0;O=jd[c[(c[O>>2]|0)+20>>2]&511](O)|0;if((O|0)==-1){e=66;break a}Q=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=66;break a}c[Q+(N*88|0)+20>>2]=P;Q=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=66;break a}c[Q+(N*88|0)+24>>2]=P;Q=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=66;break a}c[Q+(N*88|0)+28>>2]=P;Q=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=66;break a}c[Q+(N*88|0)+32>>2]=P;Q=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=66;break a}c[Q+(N*88|0)+36>>2]=P;P=(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+16|0;c[P>>2]=c[P>>2]&-2|O&1;P=(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+24|0;c[P>>2]=(c[P>>2]|0)+2;P=(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+28|0;c[P>>2]=(c[P>>2]|0)+2;P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=Ce(c[P+(N*88|0)+84>>2]|0,(c[P+(N*88|0)+20>>2]|0)+1|0,76)|0;c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+84>>2]=P;P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;O=0;while(1){c[(c[P+(N*88|0)+84>>2]|0)+(O*76|0)+72>>2]=0;O=O+1|0;P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;if(O>>>0>(c[P+(N*88|0)+20>>2]|0)>>>0){O=0;break}else{}}while(1){if((c[P+(N*88|0)+16>>2]&1|0)==0){c[(c[P+(N*88|0)+84>>2]|0)+(O*76|0)>>2]=15;c[(c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+84>>2]|0)+(O*76|0)+4>>2]=15}else{P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=71;break a}c[(c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+84>>2]|0)+(O*76|0)>>2]=P&15;c[(c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+84>>2]|0)+(O*76|0)+4>>2]=P>>>4&15}O=O+1|0;P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;if(O>>>0>(c[P+(N*88|0)+20>>2]|0)>>>0){continue a}}break};case 95:{Rb(183640,4,1,M|0)|0;N=O+ -2|0;if((N|0)==0){continue a}else{O=0}while(1){X=c[D>>2]|0;O=O+1|0;if((jd[c[(c[X>>2]|0)+20>>2]&511](X)|0)==-1){e=128;break a}if(O>>>0>>0){}else{continue a}}break};case 97:{Rb(184120,4,1,M|0)|0;N=O+ -2|0;if((N|0)==0){continue a}else{O=0}while(1){X=c[D>>2]|0;O=O+1|0;if((jd[c[(c[X>>2]|0)+20>>2]&511](X)|0)==-1){e=132;break a}if(O>>>0>>0){}else{break}}break};case 94:{Rb(183600,4,1,M|0)|0;N=O+ -2|0;if((N|0)==0){continue a}else{O=0}while(1){X=c[D>>2]|0;O=O+1|0;if((jd[c[(c[X>>2]|0)+20>>2]&511](X)|0)==-1){e=124;break a}if(O>>>0>>0){}else{continue a}}break};case 147:{e=142;break a};case 92:{P=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=76;break a}c[P+40>>2]=N;N=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;P=c[N+40>>2]&31;do{if((P|0)==2){c[N+48>>2]=(O+ -3|0)>>>1;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;O=Ce(c[O+44>>2]|0,c[O+48>>2]|0,4)|0;c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+44>>2]=O;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;if((c[O+48>>2]|0)==0){break}else{N=0}do{P=(c[O+44>>2]|0)+(N<<2)|0;O=c[D>>2]|0;O=jd[c[(c[O>>2]|0)+20>>2]&511](O)|0;if((O|0)==-1){e=89;break a}Q=c[D>>2]|0;Q=jd[c[(c[Q>>2]|0)+20>>2]&511](Q)|0;if((Q|0)==-1){e=89;break a}c[P>>2]=Q|O<<8;N=N+1|0;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;}while(N>>>0<(c[O+48>>2]|0)>>>0)}else if((P|0)==1){c[N+48>>2]=1;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;O=Ce(c[O+44>>2]|0,c[O+48>>2]|0,4)|0;c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+44>>2]=O;O=c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+44>>2]|0;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){e=85;break a}P=c[D>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;if((P|0)==-1){e=85;break a}c[O>>2]=P|N<<8}else if((P|0)==0){c[N+48>>2]=O+ -3;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;O=Ce(c[O+44>>2]|0,c[O+48>>2]|0,4)|0;c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+44>>2]=O;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;if((c[O+48>>2]|0)==0){break}else{N=0}do{P=c[O+44>>2]|0;O=c[D>>2]|0;O=jd[c[(c[O>>2]|0)+20>>2]&511](O)|0;if((O|0)==-1){e=80;break a}c[P+(N<<2)>>2]=O;N=N+1|0;O=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;}while(N>>>0<(c[O+48>>2]|0)>>>0)}else{e=91;break a}}while(0);if((c[j>>2]|0)>>>0<=1){continue a}Q=c[L>>2]|0;N=1;while(1){Q=c[Q+(g*52|0)+48>>2]|0;c[Q+(N*88|0)+40>>2]=c[Q+40>>2];Q=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;c[Q+(N*88|0)+48>>2]=c[Q+48>>2];Q=c[(c[L>>2]|0)+(g*52|0)+48>>2]|0;Q=Ce(c[Q+(N*88|0)+44>>2]|0,c[Q+48>>2]|0,4)|0;c[(c[(c[L>>2]|0)+(g*52|0)+48>>2]|0)+(N*88|0)+44>>2]=Q;Q=c[L>>2]|0;O=c[Q+(g*52|0)+48>>2]|0;if((c[O+48>>2]|0)!=0){P=0;while(1){c[(c[O+(N*88|0)+44>>2]|0)+(P<<2)>>2]=c[(c[O+44>>2]|0)+(P<<2)>>2];P=P+1|0;Q=c[L>>2]|0;O=c[Q+(g*52|0)+48>>2]|0;if(P>>>0<(c[O+48>>2]|0)>>>0){}else{break}}}N=N+1|0;if(N>>>0>=(c[j>>2]|0)>>>0){continue a}}break};default:{X=jd[c[(c[d>>2]|0)+48>>2]&511](d)|0;c[F>>2]=N;Qe(X,184192,G);N=O+ -2|0;if((N|0)==0){continue a}else{O=0}while(1){X=c[D>>2]|0;O=O+1|0;if((jd[c[(c[X>>2]|0)+20>>2]&511](X)|0)!=-1&O>>>0>>0){}else{continue a}}}}if((N|0)==0){continue}else{O=0}while(1){X=c[D>>2]|0;O=O+1|0;if((jd[c[(c[X>>2]|0)+20>>2]&511](X)|0)==-1){e=136;break a}if(O>>>0>>0){}else{continue a}}}if((e|0)==21){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,184080,E);X=0;i=f;return X|0}else if((e|0)==35){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183376,H);X=0;i=f;return X|0}else if((e|0)==45){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183376,I);X=0;i=f;return X|0}else if((e|0)==66){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183456,l);X=0;i=f;return X|0}else if((e|0)==71){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183376,m);X=0;i=f;return X|0}else if((e|0)==76){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183488,n);X=0;i=f;return X|0}else if((e|0)==80){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183488,o);X=0;i=f;return X|0}else if((e|0)==85){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183488,q);X=0;i=f;return X|0}else if((e|0)==89){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183488,r);X=0;i=f;return X|0}else if((e|0)==91){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183488,s);X=0;i=f;return X|0}else if((e|0)==105){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183568,t);X=0;i=f;return X|0}else if((e|0)==109){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183568,u);X=0;i=f;return X|0}else if((e|0)==114){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183568,v);X=0;i=f;return X|0}else if((e|0)==118){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183488,w);X=0;i=f;return X|0}else if((e|0)==120){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183568,x);X=0;i=f;return X|0}else if((e|0)==124){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183608,y);X=0;i=f;return X|0}else if((e|0)==128){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183608,z);X=0;i=f;return X|0}else if((e|0)==132){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,184128,A);X=0;i=f;return X|0}else if((e|0)==136){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,184160,B);X=0;i=f;return X|0}else if((e|0)==139){Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,183752,C);X=0;i=f;return X|0}else if((e|0)==142){c:do{if((K|0)==0){r=c[L>>2]|0;t=c[J>>2]|0;o=(g>>>0)/(t>>>0)|0;t=(g>>>0)%(t>>>0)|0;n=d+160|0;u=d+152|0;q=(da(c[u>>2]|0,t)|0)+(c[n>>2]|0)|0;l=r+(g*52|0)+12|0;c[l>>2]=q;m=c[d+144>>2]|0;c[l>>2]=q>>>0>>0?m:q;s=d+164|0;q=d+156|0;w=(da(c[q>>2]|0,o)|0)+(c[s>>2]|0)|0;m=r+(g*52|0)+16|0;c[m>>2]=w;v=c[d+148>>2]|0;c[m>>2]=w>>>0>>0?v:w;u=(da(c[u>>2]|0,t+1|0)|0)+(c[n>>2]|0)|0;n=r+(g*52|0)+20|0;c[n>>2]=u;t=c[d+136>>2]|0;c[n>>2]=u>>>0>t>>>0?t:u;q=(da(c[q>>2]|0,o+1|0)|0)+(c[s>>2]|0)|0;o=r+(g*52|0)+24|0;c[o>>2]=q;s=c[d+140>>2]|0;c[o>>2]=q>>>0>s>>>0?s:q;q=r+(g*52|0)+28|0;bX(q|0,0,20)|0;if((c[j>>2]|0)==0){break}r=r+(g*52|0)+48|0;u=0;t=0;while(1){C=c[r>>2]|0;s=C+(t*88|0)+20|0;v=c[s>>2]|0;if(v>>>0>u>>>0){c[q>>2]=v}W=c[C+(t*88|0)+8>>2]|0;D=(((c[l>>2]|0)+ -1+W|0)>>>0)/(W>>>0)|0;v=C+(t*88|0)+52|0;c[v>>2]=D;X=(((c[m>>2]|0)+ -1+W|0)>>>0)/(W>>>0)|0;B=C+(t*88|0)+56|0;c[B>>2]=X;E=(((c[n>>2]|0)+ -1+W|0)>>>0)/(W>>>0)|0;y=C+(t*88|0)+60|0;c[y>>2]=E;W=(((c[o>>2]|0)+ -1+W|0)>>>0)/(W>>>0)|0;A=C+(t*88|0)+64|0;c[A>>2]=W;w=C+(t*88|0)+24|0;x=C+(t*88|0)+68|0;c[x>>2]=1<>2];u=C+(t*88|0)+28|0;z=C+(t*88|0)+72|0;c[z>>2]=1<>2];c[C+(t*88|0)+76>>2]=ye(da(W-X|0,E-D|0)|0,4)|0;D=(c[y>>2]|0)-(c[v>>2]|0)|0;E=(c[A>>2]|0)-(c[B>>2]|0)|0;c[C+(t*88|0)+80>>2]=ye((D>>>0>E>>>0?D:E)+8|0,4)|0;E=C+(t*88|0)+84|0;P=c[s>>2]|0;C=0;do{D=c[E>>2]|0;F=(C|0)==0;if(!F){P=1-C+P|0}K=(1<>2]|0)|0)>>>P;H=D+(C*76|0)+8|0;c[H>>2]=O;L=(K+(c[B>>2]|0)|0)>>>P;G=D+(C*76|0)+12|0;c[G>>2]=L;N=(K+(c[y>>2]|0)|0)>>>P;J=D+(C*76|0)+16|0;c[J>>2]=N;M=(K+(c[A>>2]|0)|0)>>>P;I=D+(C*76|0)+20|0;c[I>>2]=M;if(F){c[D+24>>2]=O;c[D+36>>2]=c[G>>2];c[D+48>>2]=c[J>>2];c[D+60>>2]=c[I>>2]}else{X=K+(-1<>2]=(X+(c[v>>2]|0)|0)>>>P;c[D+(C*76|0)+36>>2]=L;c[D+(C*76|0)+48>>2]=(X+(c[y>>2]|0)|0)>>>P;c[D+(C*76|0)+60>>2]=M;c[D+(C*76|0)+28>>2]=O;c[D+(C*76|0)+40>>2]=(X+(c[B>>2]|0)|0)>>>P;c[D+(C*76|0)+52>>2]=N;c[D+(C*76|0)+64>>2]=(X+(c[A>>2]|0)|0)>>>P;c[D+(C*76|0)+32>>2]=(X+(c[v>>2]|0)|0)>>>P;c[D+(C*76|0)+44>>2]=(X+(c[B>>2]|0)|0)>>>P;c[D+(C*76|0)+56>>2]=(X+(c[y>>2]|0)|0)>>>P;c[D+(C*76|0)+68>>2]=(X+(c[A>>2]|0)|0)>>>P}K=ye(1,20)|0;c[D+(C*76|0)+72>>2]=K;F=F?1:3;c[K>>2]=c[H>>2];c[K+4>>2]=c[G>>2];c[K+8>>2]=c[J>>2];c[K+12>>2]=c[I>>2];O=ye(F,40)|0;G=K+16|0;c[G>>2]=O;N=0;while(1){H=c[D+(C*76|0)+24+(N<<2)>>2]|0;L=O+(N*40|0)|0;c[L>>2]=H;M=c[D+(C*76|0)+36+(N<<2)>>2]|0;J=O+(N*40|0)+4|0;c[J>>2]=M;Q=c[D+(C*76|0)+48+(N<<2)>>2]|0;K=O+(N*40|0)+8|0;c[K>>2]=Q;R=c[D+(C*76|0)+60+(N<<2)>>2]|0;I=O+(N*40|0)+12|0;c[I>>2]=R;P=c[w>>2]|0;P=((Q+ -1+(1<>>P)-(H>>>P)|0;H=O+(N*40|0)+16|0;c[H>>2]=P;Q=c[u>>2]|0;Q=((R+ -1+(1<>>Q)-(M>>>Q)|0;M=O+(N*40|0)+20|0;c[M>>2]=Q;R=O+(N*40|0)+24|0;c[R>>2]=0;T=(P>>>0>Q>>>0?P:Q)+ -1|0;if((T|0)==0){S=0;R=0;e=157}else{S=0;do{S=S+1|0;T=T>>>1;}while((T|0)!=0);c[R>>2]=S;if((S|0)>-1){R=0;e=157}else{R=0}}if((e|0)==157){while(1){e=0;X=(1<>>S,(X+P|0)>>>S)|0)+R|0;if((S|0)>0){S=S+ -1|0;e=157}else{break}}}P=O+(N*40|0)+28|0;c[P>>2]=ye(R,8)|0;Q=O+(N*40|0)+32|0;c[Q>>2]=ye(R,8)|0;if((R|0)!=0){S=0;do{a[(c[P>>2]|0)+(S<<3)|0]=0;c[(c[P>>2]|0)+(S<<3)+4>>2]=0;a[(c[Q>>2]|0)+(S<<3)|0]=0;c[(c[Q>>2]|0)+(S<<3)+4>>2]=0;S=S+1|0;}while(S>>>0>>0)}R=ye(da(c[M>>2]|0,c[H>>2]|0)|0,56)|0;c[O+(N*40|0)+36>>2]=R;O=(c[L>>2]|0)>>>(c[w>>2]|0);P=(c[J>>2]|0)>>>(c[u>>2]|0);S=c[M>>2]|0;if((S|0)!=0){T=c[H>>2]|0;Q=0;do{if((T|0)==0){T=0}else{S=Q+P|0;T=0;do{X=T+O<>2];c[R>>2]=X;V=X+(c[x>>2]|0)|0;U=R+8|0;c[U>>2]=V;W=c[L>>2]|0;if(W>>>0>X>>>0){c[R>>2]=W}W=c[K>>2]|0;if(W>>>0>>0){c[U>>2]=W}Y=S<>2];W=R+4|0;c[W>>2]=Y;U=Y+(c[z>>2]|0)|0;V=R+12|0;c[V>>2]=U;X=c[J>>2]|0;if(X>>>0>Y>>>0){c[W>>2]=X}W=c[I>>2]|0;if(W>>>0>>0){c[V>>2]=W}a[R+16|0]=0;c[R+20>>2]=3;c[R+24>>2]=2;c[R+28>>2]=0;U=ye(1<<(c[u>>2]|0)+(c[w>>2]|0),8)|0;V=R+44|0;c[V>>2]=U;W=0;while(1){b[U+(W<<3)>>1]=0;b[(c[V>>2]|0)+(W<<3)+2>>1]=0;c[(c[V>>2]|0)+(W<<3)+4>>2]=0;W=W+1|0;if(W>>>0>=1<<(c[u>>2]|0)+(c[w>>2]|0)>>>0){break}U=c[V>>2]|0}c[R+48>>2]=0;c[R+52>>2]=0;R=R+56|0;T=T+1|0;U=c[H>>2]|0;}while(T>>>0>>0);S=c[M>>2]|0;T=U}Q=Q+1|0;}while(Q>>>0>>0)}N=N+1|0;if(N>>>0>=F>>>0){break}O=c[G>>2]|0}C=C+1|0;P=c[s>>2]|0;}while(C>>>0<=P>>>0);t=t+1|0;if(t>>>0>=(c[j>>2]|0)>>>0){break c}u=c[q>>2]|0}}}while(0);Y=YD(d,g,k,h)|0;i=f;return Y|0}}}while(0);Qe(jd[c[(c[d>>2]|0)+48>>2]&511](d)|0,184016,j);Y=0;i=f;return Y|0}function WD(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0.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;f=i;g=d+84|0;k=c[(c[(c[g>>2]|0)+72>>2]|0)+16>>2]|0;h=c[d+40>>2]|0;l=h>>>5&7;h=(h&31|0)==0;if(h){j=0.0;m=l+ -1+((c[c[d+44>>2]>>2]|0)>>>3&31)|0}else{j=+((c[c[d+44>>2]>>2]&2047|2048)>>>0)*.00048828125;m=l+ -1+(c[d+4>>2]|0)|0}l=d+36|0;n=(c[l>>2]|0)==0?m+16|0:m;o=k+20|0;v=c[o>>2]|0;if((v|0)!=0){q=k+16|0;m=k+4|0;r=d+60|0;s=d+52|0;p=d+76|0;t=d+68|0;x=c[q>>2]|0;y=x;u=0;w=c[k+36>>2]|0;do{if((x|0)==0){x=0}else{v=0;while(1){B=c[w+4>>2]|0;x=w+12|0;C=c[x>>2]|0;if(B>>>0>>0){y=w+8|0;z=w+28|0;F=c[y>>2]|0;A=c[w+44>>2]|0;while(1){D=da((c[r>>2]|0)-(c[s>>2]|0)|0,B-(c[m>>2]|0)|0)|0;E=c[w>>2]|0;D=(c[p>>2]|0)+(E-(c[k>>2]|0)+D<<2)|0;if(E>>>0>>0){if(h){C=A;while(1){G=c[C+4>>2]|0;if((G|0)==0){F=0}else{F=n-(c[z>>2]|0)-(e[C+2>>1]|0)|0;if((F|0)>0){F=(1<>0-F}F=(c[l>>2]|0)==0?F&-65536:F;F=(b[C>>1]&128)==0?F:0-F|0}c[D>>2]=F;E=E+1|0;F=c[y>>2]|0;if(E>>>0>>0){C=C+8|0;D=D+4|0}else{break}}}else{C=A;while(1){G=c[C+4>>2]|0;if((G|0)==0){F=0}else{F=n-(c[z>>2]|0)-(e[C+2>>1]|0)|0;if((F|0)>0){F=(1<>0-F}F=~~(j*+(F|0));F=(b[C>>1]&128)==0?F:0-F|0}c[D>>2]=F;E=E+1|0;F=c[y>>2]|0;if(E>>>0>>0){C=C+8|0;D=D+4|0}else{break}}}C=c[x>>2]|0}B=B+1|0;if(B>>>0>=C>>>0){break}A=A+(c[t>>2]<<3)|0}x=c[q>>2]|0}else{x=y}w=w+56|0;v=v+1|0;if(v>>>0>>0){y=x}else{break}}y=x;v=c[o>>2]|0}u=u+1|0;}while(u>>>0>>0)}l=d+20|0;r=c[l>>2]|0;if((r|0)==0){i=f;return}n=d+52|0;k=d+56|0;m=d+60|0;h=d+64|0;p=1;while(1){q=c[g>>2]|0;o=p+1|0;if((p|0)==(r|0)){s=n;u=m;r=k;t=h}else{s=q+(o*76|0)+8|0;u=q+(o*76|0)+16|0;r=q+(o*76|0)+12|0;t=q+(o*76|0)+20|0}_D(a,d,p,q+(p*76|0)|0,c[s>>2]|0,c[r>>2]|0,c[u>>2]|0,c[t>>2]|0);r=c[l>>2]|0;if(o>>>0>r>>>0){break}else{p=o}}i=f;return}function XD(b,d){b=b|0;d=d|0;var 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.0,w=0.0,x=0.0;e=i;b=b+168|0;do{if((c[d+8>>2]|0)==1){if((c[b>>2]|0)>>>0<3){u=0;i=e;return u|0}f=d+48|0;h=c[f>>2]|0;j=c[h+8>>2]|0;if((j|0)!=(c[h+96>>2]|0)){u=0;i=e;return u|0}g=c[h+12>>2]|0;if((g|0)!=(c[h+100>>2]|0)){u=0;i=e;return u|0}if((j|0)!=(c[h+184>>2]|0)){u=0;i=e;return u|0}if((g|0)!=(c[h+188>>2]|0)){u=0;i=e;return u|0}g=(c[h+64>>2]|0)==(c[h+56>>2]|0);if((c[h+36>>2]|0)==0){if(g){break}else{j=0;g=0}do{if((c[h+60>>2]|0)!=(c[h+52>>2]|0)){k=h;h=0;while(1){t=(c[k+76>>2]|0)+(j<<2)|0;u=c[(c[k+164>>2]|0)+(j<<2)>>2]|0;w=+(c[t>>2]|0);x=+(c[(c[k+252>>2]|0)+(j<<2)>>2]|0);c[t>>2]=~~(w+x*1.402+.5);v=+(u|0);c[(c[(c[f>>2]|0)+164>>2]|0)+(j<<2)>>2]=~~(w-v*.34413-x*.71414+.5);c[(c[(c[f>>2]|0)+252>>2]|0)+(j<<2)>>2]=~~(w+v*1.772+.5);j=j+1|0;h=h+1|0;k=c[f>>2]|0;if(h>>>0<((c[k+60>>2]|0)-(c[k+52>>2]|0)|0)>>>0){}else{h=k;break}}}g=g+1|0;}while(g>>>0<((c[h+64>>2]|0)-(c[h+56>>2]|0)|0)>>>0)}else{if(g){break}else{j=0;g=0}do{if((c[h+60>>2]|0)!=(c[h+52>>2]|0)){k=0;while(1){s=(c[h+164>>2]|0)+(j<<2)|0;u=c[s>>2]|0;t=c[(c[h+252>>2]|0)+(j<<2)>>2]|0;h=(c[(c[h+76>>2]|0)+(j<<2)>>2]|0)-(t+u>>2)|0;c[s>>2]=h;c[(c[(c[f>>2]|0)+76>>2]|0)+(j<<2)>>2]=h+t;c[(c[(c[f>>2]|0)+252>>2]|0)+(j<<2)>>2]=h+u;j=j+1|0;k=k+1|0;h=c[f>>2]|0;if(k>>>0<((c[h+60>>2]|0)-(c[h+52>>2]|0)|0)>>>0){}else{break}}}g=g+1|0;}while(g>>>0<((c[h+64>>2]|0)-(c[h+56>>2]|0)|0)>>>0)}}}while(0);if((c[b>>2]|0)==0){u=1;i=e;return u|0}d=d+48|0;f=0;while(1){o=c[d>>2]|0;h=c[o+(f*88|0)+4>>2]|0;do{if((a[o+(f*88|0)|0]&1)==0){g=(1<>2]|0;j=o+(f*88|0)+56|0;p=c[j>>2]|0;if((r|0)==(p|0)){break}h=o+(f*88|0)+60|0;n=o+(f*88|0)+52|0;m=o+(f*88|0)+36|0;s=c[n>>2]|0;t=c[h>>2]|0;u=c[o+(f*88|0)+76>>2]|0;o=0;while(1){if((t|0)==(s|0)){q=s;t=s}else{p=0;while(1){q=c[u>>2]|0;q=((c[m>>2]|0)==0?q>>16:q)+l|0;if((q|0)<0){q=0}else{q=(q|0)>(g|0)?g:q}s=u+4|0;c[u>>2]=q;p=p+1|0;t=c[h>>2]|0;q=c[n>>2]|0;if(p>>>0<(t-q|0)>>>0){u=s}else{break}}p=c[j>>2]|0;r=c[k>>2]|0;u=s}o=o+1|0;if(o>>>0<(r-p|0)>>>0){s=q}else{break}}}else{h=1<>2]|0;j=o+(f*88|0)+56|0;r=c[j>>2]|0;if((p|0)==(r|0)){break}m=o+(f*88|0)+60|0;n=o+(f*88|0)+52|0;g=o+(f*88|0)+36|0;s=c[n>>2]|0;t=c[m>>2]|0;u=c[o+(f*88|0)+76>>2]|0;o=0;while(1){if((t|0)==(s|0)){q=s;t=s}else{p=0;while(1){q=c[u>>2]|0;q=(c[g>>2]|0)==0?q>>16:q;if((q|0)<(l|0)){q=l}else{q=(q|0)>(h|0)?h:q}s=u+4|0;c[u>>2]=q;p=p+1|0;t=c[m>>2]|0;q=c[n>>2]|0;if(p>>>0<(t-q|0)>>>0){u=s}else{break}}r=c[j>>2]|0;p=c[k>>2]|0;u=s}o=o+1|0;if(o>>>0<(p-r|0)>>>0){s=q}else{break}}}}while(0);f=f+1|0;if(f>>>0>=(c[b>>2]|0)>>>0){b=1;break}}i=e;return b|0}function YD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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,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;g=i;j=i;i=i+8|0;x=c[b+180>>2]|0;o=f^1;if((e|0)==0&o){V=1;i=g;return V|0}l=x+(d*52|0)+32|0;s=x+(d*52|0)+48|0;q=x+(d*52|0)+36|0;t=x+(d*52|0)+40|0;r=b+188|0;u=b+192|0;v=b+196|0;f=b+8|0;w=b+184|0;k=x+(d*52|0)|0;m=b+168|0;p=x+(d*52|0)+28|0;n=x+(d*52|0)+44|0;x=x+(d*52|0)+4|0;A=c[q>>2]|0;a:while(1){z=c[l>>2]|0;V=c[s>>2]|0;d=V+(z*88|0)|0;y=c[t>>2]|0;z=c[(c[V+(z*88|0)+84>>2]|0)+(A*76|0)+72>>2]|0;c[r>>2]=0;a[u]=0;c[v>>2]=e;do{if((e|0)==0){break a}A=c[f>>2]|0;A=jd[c[(c[A>>2]|0)+20>>2]&511](A)|0;if((A|0)==-1){break a}e=(c[v>>2]|0)+ -1|0;c[v>>2]=e;B=c[w>>2]|0;if((a[u]&1)==0){B=B<<8|A&255;c[w>>2]=B;C=(c[r>>2]|0)+8|0}else{B=B<<7|A&127;c[w>>2]=B;C=(c[r>>2]|0)+7|0}c[r>>2]=C;a[u]=(A|0)==255|0;}while((C|0)<1);V=C+ -1|0;c[r>>2]=V;A=z+(y*20|0)+16|0;if((1<>2]|0;B=E+(D*40|0)+20|0;F=c[B>>2]|0;if((F|0)!=0){C=E+(D*40|0)+16|0;E=E+(D*40|0)+36|0;G=c[C>>2]|0;e=0;do{if((G|0)==0){G=0}else{F=0;do{V=(da(G,e)|0)+F|0;c[(c[E>>2]|0)+(V*56|0)+32>>2]=0;F=F+1|0;G=c[C>>2]|0;}while(F>>>0>>0);F=c[B>>2]|0}e=e+1|0;}while(e>>>0>>0)}D=D+1|0;}while(D>>>0<((c[q>>2]|0)==0?1:3)>>>0)}else{e=0;do{G=c[A>>2]|0;B=G+(e*40|0)+20|0;I=c[B>>2]|0;if((I|0)!=0){D=G+(e*40|0)+16|0;F=G+(e*40|0)+36|0;E=G+(e*40|0)+24|0;C=G+(e*40|0)+28|0;G=G+(e*40|0)+32|0;J=c[D>>2]|0;O=J;H=0;do{if((J|0)==0){J=0}else{I=0;while(1){K=(da(J,H)|0)+I|0;J=c[F>>2]|0;do{if((c[J+(K*56|0)>>2]|0)>>>0<(c[J+(K*56|0)+8>>2]|0)>>>0){if((c[J+(K*56|0)+4>>2]|0)>>>0>=(c[J+(K*56|0)+12>>2]|0)>>>0){h=23;break}L=J+(K*56|0)+16|0;if((a[L]&1)==0){N=c[E>>2]|0;b:do{if((N|0)>-1){M=0;R=0;while(1){Q=(1<>>N;O=(Q+(c[B>>2]|0)|0)>>>N;Q=(I>>>N)+M+(da(P,H>>>N)|0)|0;U=c[C>>2]|0;T=a[U+(Q<<3)|0]|0;V=U+(Q<<3)+4|0;S=c[V>>2]|0;if((T&1)==0&(S|0)==0){c[V>>2]=R;U=c[C>>2]|0;T=a[U+(Q<<3)|0]|0}else{R=S}c:do{if((T&1)==0){do{while(1){if(R>>>0>(c[n>>2]|0)>>>0){break c}U=c[r>>2]|0;if((U|0)<1){S=c[v>>2]|0;while(1){if((S|0)==0){break a}T=c[f>>2]|0;T=jd[c[(c[T>>2]|0)+20>>2]&511](T)|0;if((T|0)==-1){break a}S=(c[v>>2]|0)+ -1|0;c[v>>2]=S;U=c[w>>2]|0;if((a[u]&1)==0){V=U<<8|T&255;c[w>>2]=V;U=(c[r>>2]|0)+8|0}else{V=U<<7|T&127;c[w>>2]=V;U=(c[r>>2]|0)+7|0}c[r>>2]=U;a[u]=(T|0)==255|0;if((U|0)>=1){S=V;break}}}else{S=c[w>>2]|0}V=U+ -1|0;c[r>>2]=V;if((1<>2]|0)+(Q<<3)|0]=1;U=c[C>>2]|0;if((a[U+(Q<<3)|0]&1)!=0){break c}}R=R+1|0;U=c[C>>2]|0;}while((a[U+(Q<<3)|0]&1)==0)}}while(0);c[U+(Q<<3)+4>>2]=R;if(R>>>0>(c[n>>2]|0)>>>0){break b}Q=N+ -1|0;if((N|0)<=0){N=Q;break b}N=(da(O,P)|0)+M|0;O=c[D>>2]|0;M=N;N=Q}}}while(0);M=N>>>31;c[J+(K*56|0)+32>>2]=M}else{M=J+(K*56|0)+32|0;P=c[r>>2]|0;if((P|0)<1){O=c[v>>2]|0;do{if((O|0)==0){break a}N=c[f>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){break a}O=(c[v>>2]|0)+ -1|0;c[v>>2]=O;P=c[w>>2]|0;if((a[u]&1)==0){Q=P<<8|N&255;c[w>>2]=Q;P=(c[r>>2]|0)+8|0}else{Q=P<<7|N&127;c[w>>2]=Q;P=(c[r>>2]|0)+7|0}c[r>>2]=P;a[u]=(N|0)==255|0;}while((P|0)<1)}else{Q=c[w>>2]|0}c[M>>2]=Q>>>(P+ -1|0)&1;c[r>>2]=(c[r>>2]|0)+ -1;M=c[M>>2]|0}if((M|0)==0){break}if((a[L]&1)==0){L=c[E>>2]|0;if((L|0)>-1){M=0;Q=0;while(1){O=(1<>2]|0)|0)>>>L;O=(O+(c[B>>2]|0)|0)>>>L;P=(I>>>L)+M+(da(N,H>>>L)|0)|0;S=c[G>>2]|0;T=a[S+(P<<3)|0]|0;U=S+(P<<3)+4|0;R=c[U>>2]|0;if((T&1)==0&(R|0)==0){c[U>>2]=Q;S=c[G>>2]|0;T=a[S+(P<<3)|0]|0}else{Q=R}d:do{if((T&1)==0){do{while(1){R=c[r>>2]|0;if((R|0)<1){S=c[v>>2]|0;while(1){if((S|0)==0){break a}T=c[f>>2]|0;T=jd[c[(c[T>>2]|0)+20>>2]&511](T)|0;if((T|0)==-1){break a}S=(c[v>>2]|0)+ -1|0;c[v>>2]=S;R=c[w>>2]|0;if((a[u]&1)==0){U=R<<8|T&255;c[w>>2]=U;R=(c[r>>2]|0)+8|0}else{U=R<<7|T&127;c[w>>2]=U;R=(c[r>>2]|0)+7|0}c[r>>2]=R;a[u]=(T|0)==255|0;if((R|0)>=1){S=U;break}}}else{S=c[w>>2]|0}V=R+ -1|0;c[r>>2]=V;if((1<>2]|0)+(P<<3)|0]=1;S=c[G>>2]|0;if((a[S+(P<<3)|0]&1)!=0){break d}}Q=Q+1|0;S=c[G>>2]|0;}while((a[S+(P<<3)|0]&1)==0)}}while(0);c[S+(P<<3)+4>>2]=Q;M=(da(O,N)|0)+M|0;if((L|0)>0){L=L+ -1|0}else{break}}}else{Q=0}c[J+(K*56|0)+28>>2]=Q}N=c[r>>2]|0;if((N|0)<1){N=c[v>>2]|0;while(1){if((N|0)==0){break a}M=c[f>>2]|0;M=jd[c[(c[M>>2]|0)+20>>2]&511](M)|0;if((M|0)==-1){break a}N=(c[v>>2]|0)+ -1|0;c[v>>2]=N;L=c[w>>2]|0;if((a[u]&1)==0){L=L<<8|M&255;c[w>>2]=L;O=(c[r>>2]|0)+8|0}else{L=L<<7|M&127;c[w>>2]=L;O=(c[r>>2]|0)+7|0}c[r>>2]=O;a[u]=(M|0)==255|0;if((O|0)>=1){N=O;break}}}else{L=c[w>>2]|0}M=N+ -1|0;c[r>>2]=M;do{if((1<>2]=1}else{if((N|0)<2){M=c[v>>2]|0;while(1){if((M|0)==0){break a}N=c[f>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){break a}M=(c[v>>2]|0)+ -1|0;c[v>>2]=M;L=c[w>>2]|0;if((a[u]&1)==0){L=L<<8|N&255;c[w>>2]=L;O=(c[r>>2]|0)+8|0}else{L=L<<7|N&127;c[w>>2]=L;O=(c[r>>2]|0)+7|0}c[r>>2]=O;a[u]=(N|0)==255|0;if((O|0)>=1){M=O;break}}}N=M+ -1|0;c[r>>2]=N;if((1<>2]=2;break}if((M|0)<3){M=c[v>>2]|0;while(1){if((M|0)==0){break a}N=c[f>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){break a}M=(c[v>>2]|0)+ -1|0;c[v>>2]=M;L=c[w>>2]|0;if((a[u]&1)==0){L=L<<8|N&255;c[w>>2]=L;O=(c[r>>2]|0)+8|0}else{L=L<<7|N&127;c[w>>2]=L;O=(c[r>>2]|0)+7|0}c[r>>2]=O;a[u]=(N|0)==255|0;if((O|0)>=2){M=O;break}}}else{M=N}O=M+ -2|0;M=L>>>O&3;c[r>>2]=O;if((M|0)!=3){c[J+(K*56|0)+36>>2]=M+3;break}if((O|0)<5){M=c[v>>2]|0;do{if((M|0)==0){break a}L=c[f>>2]|0;L=jd[c[(c[L>>2]|0)+20>>2]&511](L)|0;if((L|0)==-1){break a}M=(c[v>>2]|0)+ -1|0;c[v>>2]=M;N=c[w>>2]|0;if((a[u]&1)==0){N=N<<8|L&255;c[w>>2]=N;O=(c[r>>2]|0)+8|0}else{N=N<<7|L&127;c[w>>2]=N;O=(c[r>>2]|0)+7|0}c[r>>2]=O;a[u]=(L|0)==255|0;}while((O|0)<5)}else{N=L}L=O+ -5|0;M=N>>>L&31;c[r>>2]=L;if((M|0)!=31){c[J+(K*56|0)+36>>2]=M+6;break}if((L|0)<7){M=c[v>>2]|0;while(1){if((M|0)==0){break a}N=c[f>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){break a}M=(c[v>>2]|0)+ -1|0;c[v>>2]=M;L=c[w>>2]|0;if((a[u]&1)==0){O=L<<8|N&255;c[w>>2]=O;L=(c[r>>2]|0)+8|0}else{O=L<<7|N&127;c[w>>2]=O;L=(c[r>>2]|0)+7|0}c[r>>2]=L;a[u]=(N|0)==255|0;if((L|0)>=7){N=O;break}}}V=L+ -7|0;c[r>>2]=V;c[J+(K*56|0)+36>>2]=(N>>>V&127)+37}}while(0);M=J+(K*56|0)+20|0;while(1){O=c[r>>2]|0;if((O|0)<1){L=c[v>>2]|0;do{if((L|0)==0){break a}N=c[f>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){break a}L=(c[v>>2]|0)+ -1|0;c[v>>2]=L;O=c[w>>2]|0;if((a[u]&1)==0){P=O<<8|N&255;c[w>>2]=P;O=(c[r>>2]|0)+8|0}else{P=O<<7|N&127;c[w>>2]=P;O=(c[r>>2]|0)+7|0}c[r>>2]=O;a[u]=(N|0)==255|0;}while((O|0)<1)}else{P=c[w>>2]|0}N=O+ -1|0;c[r>>2]=N;L=c[M>>2]|0;if((1<>2]=L+1}M=c[J+(K*56|0)+36>>2]|0;while(1){M=M>>>1;if((M|0)==0){break}else{L=L+1|0}}J=J+(K*56|0)+40|0;if((O|0)<=(L|0)){K=c[v>>2]|0;do{if((K|0)==0){break a}M=c[f>>2]|0;M=jd[c[(c[M>>2]|0)+20>>2]&511](M)|0;if((M|0)==-1){break a}K=(c[v>>2]|0)+ -1|0;c[v>>2]=K;N=c[w>>2]|0;if((a[u]&1)==0){P=N<<8|M&255;c[w>>2]=P;N=(c[r>>2]|0)+8|0}else{P=N<<7|M&127;c[w>>2]=P;N=(c[r>>2]|0)+7|0}c[r>>2]=N;a[u]=(M|0)==255|0;}while((N|0)<(L|0))}c[J>>2]=P>>>(N-L|0)&(1<>2]=(c[r>>2]|0)-L}else{h=23}}while(0);if((h|0)==23){h=0;c[J+(K*56|0)+32>>2]=0}I=I+1|0;J=c[D>>2]|0;if(I>>>0>>0){O=J}else{break}}O=J;I=c[B>>2]|0}H=H+1|0;}while(H>>>0>>0)}e=e+1|0;}while(e>>>0<((c[q>>2]|0)==0?1:3)>>>0)}if((a[u]&1)==0){e=c[v>>2]|0}else{e=c[f>>2]|0;jd[c[(c[e>>2]|0)+20>>2]&511](e)|0;e=(c[v>>2]|0)+ -1|0;c[v>>2]=e}y=z+(y*20|0)+16|0;z=0;do{C=c[y>>2]|0;B=C+(z*40|0)+20|0;F=c[B>>2]|0;if((F|0)!=0){A=C+(z*40|0)+16|0;C=C+(z*40|0)+36|0;G=c[A>>2]|0;E=G;D=0;do{if((G|0)==0){G=0}else{F=0;while(1){H=(da(G,D)|0)+F|0;G=c[C>>2]|0;if((c[G+(H*56|0)+32>>2]|0)==0){G=E}else{ZD(b,d,0,0,0,c[q>>2]|0,z,G+(H*56|0)|0)|0;e=e-(c[G+(H*56|0)+40>>2]|0)|0;a[G+(H*56|0)+16|0]=1;G=c[A>>2]|0}F=F+1|0;if(F>>>0>>0){E=G}else{break}}E=G;F=c[B>>2]|0}D=D+1|0;}while(D>>>0>>0)}z=z+1|0;A=c[q>>2]|0;}while(z>>>0<((A|0)==0?1:3)>>>0);e:do{switch(c[k>>2]|0){case 0:{V=(c[l>>2]|0)+1|0;c[l>>2]=V;if((V|0)!=(c[m>>2]|0)){break e}c[l>>2]=0;d=A+1|0;c[q>>2]=d;if((A|0)!=(c[p>>2]|0)){A=d;break e}c[q>>2]=0;d=(c[n>>2]|0)+1|0;c[n>>2]=(d|0)==(c[x>>2]|0)?0:d;A=0;break};case 1:{V=(c[l>>2]|0)+1|0;c[l>>2]=V;if((V|0)!=(c[m>>2]|0)){break e}c[l>>2]=0;V=(c[n>>2]|0)+1|0;c[n>>2]=V;if((V|0)!=(c[x>>2]|0)){break e}c[n>>2]=0;A=(A|0)==(c[p>>2]|0)?0:A+1|0;c[q>>2]=A;break};case 2:{V=(c[n>>2]|0)+1|0;c[n>>2]=V;if((V|0)!=(c[x>>2]|0)){break e}c[n>>2]=0;V=(c[l>>2]|0)+1|0;c[l>>2]=V;if((V|0)!=(c[m>>2]|0)){break e}c[l>>2]=0;A=(A|0)==(c[p>>2]|0)?0:A+1|0;c[q>>2]=A;break};case 3:{V=(c[n>>2]|0)+1|0;c[n>>2]=V;if((V|0)!=(c[x>>2]|0)){break e}c[n>>2]=0;d=A+1|0;c[q>>2]=d;if((A|0)!=(c[p>>2]|0)){A=d;break e}c[q>>2]=0;d=(c[l>>2]|0)+1|0;c[l>>2]=d;c[l>>2]=(d|0)==(c[m>>2]|0)?0:d;A=0;break};case 4:{V=(c[n>>2]|0)+1|0;c[n>>2]=V;if((V|0)!=(c[x>>2]|0)){break e}c[n>>2]=0;d=A+1|0;c[q>>2]=d;if((A|0)!=(c[p>>2]|0)){A=d;break e}c[q>>2]=0;d=(c[l>>2]|0)+1|0;c[l>>2]=d;c[l>>2]=(d|0)==(c[m>>2]|0)?0:d;A=0;break};default:{}}}while(0);if((e|0)==0&o){b=1;h=186;break}}if((h|0)==186){i=g;return b|0}Qe(jd[c[(c[b>>2]|0)+48>>2]&511](b)|0,184248,j);V=0;i=g;return V|0}function ZD(d,f,g,h,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var 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;g=i;h=m+48|0;j=c[h>>2]|0;if((j|0)==0){H=FW(36)|0;CI(H);c[h>>2]=H;I=c[m+40>>2]|0;c[H+24>>2]=c[d+8>>2];c[H+28>>2]=I;a[H+32|0]=1;FI(H);H=FW(8)|0;wI(H,19);I=m+52|0;c[I>>2]=H;BI(H,0,4,0);BI(c[I>>2]|0,17,3,0);BI(c[I>>2]|0,18,46,0)}else{HI(j,c[m+40>>2]|0)}r=m+36|0;if((c[r>>2]|0)==0){I=h;I=c[I>>2]|0;EI(I);i=g;return-1}d=m+24|0;p=m+4|0;j=m+44|0;s=m+12|0;q=m+8|0;o=f+24|0;f=f+68|0;k=(k|0)==0?1:l;l=m+52|0;u=c[d>>2]|0;t=0;do{if((u|0)==0){v=c[p>>2]|0;w=c[s>>2]|0;if(v>>>0>>0){y=c[q>>2]|0;u=c[j>>2]|0;while(1){x=c[m>>2]|0;if(x>>>0>>0){w=u;while(1){y=w;z=0;while(1){A=z+v|0;B=c[s>>2]|0;if(A>>>0>=B>>>0){break}do{if((b[y>>1]&1)==0){do{if(x>>>0>(c[m>>2]|0)>>>0){C=e[y+ -8>>1]|0;if((C&1|0)==0){D=2;E=0}else{D=C>>>6&2^3;E=1}if(A>>>0>(c[p>>2]|0)>>>0){C=b[y+(~c[f>>2]<<3)>>1]&1}else{C=0}if(A>>>0>=(B+ -1|0)>>>0){break}C=(b[y+((c[f>>2]|0)+ -1<<3)>>1]&1)+C|0}else{C=0;D=2;E=0}}while(0);do{if(x>>>0<((c[q>>2]|0)+ -1|0)>>>0){F=e[y+8>>1]|0;if((F&1|0)!=0){D=D+ -1+(F>>>6&2^2)|0;E=E+1|0}F=c[p>>2]|0;if(A>>>0>F>>>0){C=(b[y+(1-(c[f>>2]|0)<<3)>>1]&1)+C|0}if(A>>>0>=(B+ -1|0)>>>0){break}C=(b[y+((c[f>>2]|0)+1<<3)>>1]&1)+C|0}else{F=c[p>>2]|0}}while(0);do{if(A>>>0>F>>>0){F=e[y+(0-(c[f>>2]|0)<<3)>>1]|0;if((F&1|0)==0){G=2;F=0;break}G=F>>>6&2^3;F=1}else{G=2;F=0}}while(0);do{if(A>>>0<(B+ -1|0)>>>0){A=e[y+(c[f>>2]<<3)>>1]|0;if((A&1|0)==0){break}G=G+ -1+(A>>>6&2^2)|0;F=F+1|0}}while(0);A=c[184272+(E*180|0)+(F*60|0)+(C*12|0)+(k<<2)>>2]|0;if((A|0)==0){break}do{if((II(c[h>>2]|0,A,c[l>>2]|0)|0)!=0){b[y>>1]=b[y>>1]|5;I=y+4|0;c[I>>2]=c[I>>2]<<1|1;I=c[184816+(D*40|0)+(G<<3)+4>>2]|0;if((II(c[h>>2]|0,c[184816+(D*40|0)+(G<<3)>>2]|0,c[l>>2]|0)|0)==(I|0)){break}b[y>>1]=b[y>>1]|128}}while(0);I=y+2|0;b[I>>1]=(b[I>>1]|0)+1<<16>>16;b[y>>1]=b[y>>1]|2}}while(0);z=z+1|0;if(z>>>0>=4){break}y=y+(c[f>>2]<<3)|0}x=x+1|0;y=c[q>>2]|0;if(x>>>0>>0){w=w+8|0}else{break}}w=c[s>>2]|0}v=v+4|0;if(v>>>0>=w>>>0){break}u=u+(4<>2]<<3)|0}u=(c[d>>2]|0)+1|0}else{u=1}c[d>>2]=u}else if((u|0)==1){v=c[p>>2]|0;w=c[s>>2]|0;if(v>>>0>>0){y=c[q>>2]|0;u=c[j>>2]|0;while(1){x=c[m>>2]|0;if(x>>>0>>0){w=u;while(1){y=w;z=0;while(1){B=z+v|0;A=c[s>>2]|0;if(B>>>0>=A>>>0){break}C=e[y>>1]|0;if((C&3|0)==1){if((C&4|0)==0){A=16}else{do{if(x>>>0>(c[m>>2]|0)>>>0){C=b[y+ -8>>1]&1;if(B>>>0>(c[p>>2]|0)>>>0){C=(b[y+(~c[f>>2]<<3)>>1]&1)+C|0}if(B>>>0>=(A+ -1|0)>>>0){break}C=(b[y+((c[f>>2]|0)+ -1<<3)>>1]&1)+C|0}else{C=0}}while(0);do{if(x>>>0<((c[q>>2]|0)+ -1|0)>>>0){C=(b[y+8>>1]&1)+C|0;if(B>>>0>(c[p>>2]|0)>>>0){C=(b[y+(1-(c[f>>2]|0)<<3)>>1]&1)+C|0}if(B>>>0>=(A+ -1|0)>>>0){break}C=(b[y+((c[f>>2]|0)+1<<3)>>1]&1)+C|0}}while(0);if(B>>>0>(c[p>>2]|0)>>>0){C=(b[y+(0-(c[f>>2]|0)<<3)>>1]&1)+C|0}if(B>>>0<(A+ -1|0)>>>0){C=(b[y+(c[f>>2]<<3)>>1]&1)+C|0}A=(C|0)!=0?15:14}I=y+4|0;H=c[I>>2]<<1;c[I>>2]=II(c[h>>2]|0,A,c[l>>2]|0)|0|H;I=y+2|0;b[I>>1]=(b[I>>1]|0)+1<<16>>16;b[y>>1]=b[y>>1]&-7|2}z=z+1|0;if(z>>>0>=4){break}y=y+(c[f>>2]<<3)|0}x=x+1|0;y=c[q>>2]|0;if(x>>>0>>0){w=w+8|0}else{break}}w=c[s>>2]|0}v=v+4|0;if(v>>>0>=w>>>0){break}u=u+(4<>2]<<3)|0}u=(c[d>>2]|0)+1|0}else{u=2}c[d>>2]=u}else if((u|0)==2){v=c[p>>2]|0;A=c[s>>2]|0;a:do{if(v>>>0>>0){C=c[q>>2]|0;u=c[j>>2]|0;while(1){z=c[m>>2]|0;if(z>>>0>>0){x=v+3|0;w=v+4|0;y=u;while(1){b:do{if(x>>>0>>0){if((b[y>>1]&2)!=0){B=0;n=119;break}B=c[f>>2]|0;if((b[y+(B<<3)>>1]&2)!=0){B=0;n=119;break}F=B<<1;if((b[y+(F<<3)>>1]&2)!=0){B=0;n=119;break}E=B*3|0;if((b[y+(E<<3)>>1]&2)!=0){B=0;n=119;break}D=(z|0)==(c[m>>2]|0);G=c[p>>2]|0;do{if(!D){if((v|0)==(G|0)){G=v;break}if((b[y+(~B<<3)>>1]&1)!=0){B=0;n=119;break b}}}while(0);G=(v|0)==(G|0);if(!G){if((b[y+(0-B<<3)>>1]&1)!=0){B=0;n=119;break}}C=(z|0)==(C+ -1|0);if(!(C|G)){if((b[y+(1-B<<3)>>1]&1)!=0){B=0;n=119;break}}if(!D){if((b[y+ -8>>1]&1)!=0){B=0;n=119;break}if((b[y+(B+ -1<<3)>>1]&1)!=0){B=0;n=119;break}if((b[y+(F+ -1<<3)>>1]&1)!=0){B=0;n=119;break}if((b[y+(E+ -1<<3)>>1]&1)!=0){B=0;n=119;break}}if(!C){if((b[y+8>>1]&1)!=0){B=0;n=119;break}if((b[y+(B+1<<3)>>1]&1)!=0){B=0;n=119;break}if((b[y+((F|1)<<3)>>1]&1)!=0){B=0;n=119;break}if((b[y+(E+1<<3)>>1]&1)!=0){B=0;n=119;break}}do{if(!D){if((w|0)==(A|0)){A=w;break}if((b[y+((B<<2)+ -1<<3)>>1]&1)!=0){B=0;n=119;break b}}}while(0);A=(w|0)==(A|0);if(!A){if((b[y+(B<<2<<3)>>1]&1)!=0){B=0;n=119;break}}if(!(C|A)){if((b[y+((B<<2|1)<<3)>>1]&1)!=0){B=0;n=119;break}}if((II(c[h>>2]|0,17,c[l>>2]|0)|0)==0){I=y+2|0;b[I>>1]=(b[I>>1]|0)+1<<16>>16;I=c[f>>2]|0;H=y+(I<<3)+2|0;b[H>>1]=(b[H>>1]|0)+1<<16>>16;I=I+(c[f>>2]|0)|0;H=y+(I<<3)+2|0;b[H>>1]=(b[H>>1]|0)+1<<16>>16;I=y+(I+(c[f>>2]|0)<<3)+2|0;b[I>>1]=(b[I>>1]|0)+1<<16>>16;break}A=(II(c[h>>2]|0,18,c[l>>2]|0)|0)<<1;A=II(c[h>>2]|0,18,c[l>>2]|0)|0|A;if((A|0)==0){B=y}else{B=y;C=0;while(1){I=B+2|0;b[I>>1]=(b[I>>1]|0)+1<<16>>16;C=C+1|0;B=B+(c[f>>2]<<3)|0;if(C>>>0>>0){}else{break}}}b[B>>1]=b[B>>1]|5;I=B+4|0;c[I>>2]=c[I>>2]<<1|1;I=B+2|0;b[I>>1]=(b[I>>1]|0)+1<<16>>16;if((II(c[h>>2]|0,9,c[l>>2]|0)|0)!=0){b[B>>1]=b[B>>1]|128}B=A+1|0;if(B>>>0<4){n=119}}else{B=0;n=119}}while(0);c:do{if((n|0)==119){n=0;A=y+(B<>2]<<3)|0;while(1){C=B+v|0;D=c[s>>2]|0;if(C>>>0>=D>>>0){break c}E=b[A>>1]|0;if((E&2)==0){do{if(z>>>0>(c[m>>2]|0)>>>0){E=e[A+ -8>>1]|0;if((E&1|0)==0){F=2;H=0}else{F=E>>>6&2^3;H=1}if(C>>>0>(c[p>>2]|0)>>>0){E=b[A+(~c[f>>2]<<3)>>1]&1}else{E=0}if(C>>>0>=(D+ -1|0)>>>0){break}E=(b[A+((c[f>>2]|0)+ -1<<3)>>1]&1)+E|0}else{E=0;F=2;H=0}}while(0);do{if(z>>>0<((c[q>>2]|0)+ -1|0)>>>0){G=e[A+8>>1]|0;if((G&1|0)!=0){F=F+ -1+(G>>>6&2^2)|0;H=H+1|0}G=c[p>>2]|0;if(C>>>0>G>>>0){E=(b[A+(1-(c[f>>2]|0)<<3)>>1]&1)+E|0}if(C>>>0>=(D+ -1|0)>>>0){break}E=(b[A+((c[f>>2]|0)+1<<3)>>1]&1)+E|0}else{G=c[p>>2]|0}}while(0);do{if(C>>>0>G>>>0){G=e[A+(0-(c[f>>2]|0)<<3)>>1]|0;if((G&1|0)==0){I=2;G=0;break}I=G>>>6&2^3;G=1}else{I=2;G=0}}while(0);do{if(C>>>0<(D+ -1|0)>>>0){C=e[A+(c[f>>2]<<3)>>1]|0;if((C&1|0)==0){break}I=I+ -1+(C>>>6&2^2)|0;G=G+1|0}}while(0);do{if((II(c[h>>2]|0,c[184272+(H*180|0)+(G*60|0)+(E*12|0)+(k<<2)>>2]|0,c[l>>2]|0)|0)!=0){b[A>>1]=b[A>>1]|5;H=A+4|0;c[H>>2]=c[H>>2]<<1|1;H=c[184816+(F*40|0)+(I<<3)+4>>2]|0;if((II(c[h>>2]|0,c[184816+(F*40|0)+(I<<3)>>2]|0,c[l>>2]|0)|0)==(H|0)){break}b[A>>1]=b[A>>1]|128}}while(0);I=A+2|0;b[I>>1]=(b[I>>1]|0)+1<<16>>16}else{b[A>>1]=E&-3}B=B+1|0;if(B>>>0>=4){break c}A=A+(c[f>>2]<<3)|0}}}while(0);z=z+1|0;C=c[q>>2]|0;if(z>>>0>=C>>>0){break}A=c[s>>2]|0;y=y+8|0}A=c[s>>2]|0;v=w}else{v=v+4|0}if(v>>>0>=A>>>0){break a}u=u+(4<>2]<<3)|0}}}while(0);c[d>>2]=0;u=0}t=t+1|0;}while(t>>>0<(c[r>>2]|0)>>>0);I=h;I=c[I>>2]|0;EI(I);i=g;return-1}function _D(a,d,f,g,h,j,k,l){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.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;a=i;s=(c[g+20>>2]|0)+ -1|0;p=g+12|0;v=c[p>>2]|0;if((s|0)<(v|0)){m=d+60|0;n=d+52|0;o=d+76|0}else{r=g+16|0;q=g+8|0;m=d+60|0;n=d+52|0;o=d+76|0;u=c[q>>2]|0;do{w=(c[r>>2]|0)+ -1|0;if((w|0)>=(u|0)){t=(s<<1)-j|0;while(1){Q=(c[m>>2]|0)-(c[n>>2]|0)|0;v=w-u+(da(Q,s-v|0)|0)|0;u=c[o>>2]|0;c[u+((w<<1)-h+(da(Q,t)|0)<<2)>>2]=c[u+(v<<2)>>2];w=w+ -1|0;u=c[q>>2]|0;v=c[p>>2]|0;if((w|0)<(u|0)){break}else{}}}s=s+ -1|0;}while((s|0)>=(v|0))}q=c[d+40>>2]|0;y=q&31;q=q>>>5&7;p=(y|0)==0;t=(f*3|0)+ -2|0;f=d+44|0;r=q+ -1|0;s=d+36|0;u=(c[g+72>>2]|0)+16|0;w=d+68|0;g=d+4|0;y=(y|0)==1;v=0;do{if(p){x=0.0;z=r+((c[(c[f>>2]|0)+(t+v<<2)>>2]|0)>>>3&31)|0}else{x=+((c[(c[f>>2]|0)+((y?0:t+v|0)<<2)>>2]&2047|2048)>>>0)*.00048828125;z=((v|0)==2)+q+(c[g>>2]|0)|0}A=(c[s>>2]|0)==0?z+16|0:z;B=v&1;z=(v|0)!=0|0;G=c[u>>2]|0;C=G+(v*40|0)+20|0;H=c[C>>2]|0;if((H|0)!=0){D=G+(v*40|0)+16|0;I=c[D>>2]|0;F=I;E=0;G=c[G+(v*40|0)+36>>2]|0;do{if((I|0)==0){I=0}else{I=F;F=0;do{L=c[G+4>>2]|0;H=G+12|0;M=c[H>>2]|0;if(L>>>0>>0){I=G+8|0;J=G+28|0;P=c[I>>2]|0;K=c[G+44>>2]|0;while(1){N=da((c[m>>2]|0)-(c[n>>2]|0)|0,(L<<1|z)-j|0)|0;O=c[G>>2]|0;N=(c[o>>2]|0)+(N-h+((O<<1|B)^1)<<2)|0;if(O>>>0

>>0){if(p){M=K;while(1){Q=c[M+4>>2]|0;if((Q|0)==0){P=0}else{P=A-(c[J>>2]|0)-(e[M+2>>1]|0)|0;if((P|0)>0){P=(1<>0-P}P=(c[s>>2]|0)==0?P&-65536:P;P=(b[M>>1]&128)==0?P:0-P|0}c[N>>2]=P;O=O+1|0;P=c[I>>2]|0;if(O>>>0

>>0){M=M+8|0;N=N+8|0}else{break}}}else{M=K;while(1){Q=c[M+4>>2]|0;if((Q|0)==0){P=0}else{P=A-(c[J>>2]|0)-(e[M+2>>1]|0)|0;if((P|0)>0){P=(1<>0-P}P=~~(x*+(P|0));P=(b[M>>1]&128)==0?P:0-P|0}c[N>>2]=P;O=O+1|0;P=c[I>>2]|0;if(O>>>0

>>0){M=M+8|0;N=N+8|0}else{break}}}M=c[H>>2]|0}L=L+1|0;if(L>>>0>=M>>>0){break}K=K+(c[w>>2]<<3)|0}I=c[D>>2]|0}G=G+56|0;F=F+1|0;}while(F>>>0>>0);F=I;H=c[C>>2]|0}E=E+1|0;}while(E>>>0>>0)}v=v+1|0;}while(v>>>0<3);p=l-j|0;if((l|0)!=(j|0)){q=c[o>>2]|0;f=0;while(1){$D(0,d,q,1,h,k);f=f+1|0;if(f>>>0

>>0){q=q+((c[m>>2]|0)-(c[n>>2]|0)<<2)|0}else{break}}}p=k-h|0;if((k|0)==(h|0)){i=a;return}k=c[o>>2]|0;h=1;while(1){$D(0,d,k,(c[m>>2]|0)-(c[n>>2]|0)|0,j,l);if(h>>>0>=p>>>0){break}k=k+4|0;h=h+1|0}i=a;return}function $D(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;a=g-f|0;m=f&1;if((a|0)==1){if((m|0)==0){i=j;return}c[d>>2]=c[d>>2]>>1;i=j;return}h=m+3|0;l=a+h|0;k=c[b+80>>2]|0;g=(g|0)==(f|0);if(!g){f=0;do{c[k+(f+h<<2)>>2]=c[d+((da(f,e)|0)<<2)>>2];f=f+1|0;}while(f>>>0>>0)}c[k+(l<<2)>>2]=c[k+(l+ -2<<2)>>2];do{if((a|0)==2){f=k+((m|4)<<2)|0;c[k+(l+1<<2)>>2]=c[f>>2];c[k+(l+2<<2)>>2]=c[k+(h<<2)>>2];c[k+(l+3<<2)>>2]=c[f>>2]}else{c[k+(l+1<<2)>>2]=c[k+(a+m<<2)>>2];if((a|0)==3){f=k+((m|4)<<2)|0;c[k+(l+2<<2)>>2]=c[f>>2];c[k+(l+3<<2)>>2]=c[k+(m+5<<2)>>2];break}c[k+(l+2<<2)>>2]=c[k+(l+ -4<<2)>>2];if((a|0)==4){f=k+((m|4)<<2)|0;c[k+(l+3<<2)>>2]=c[f>>2];break}else{c[k+(l+3<<2)>>2]=c[k+(l+ -5<<2)>>2];f=k+((m|4)<<2)|0;break}}}while(0);c[k+((m|2)<<2)>>2]=c[f>>2];c[k+(m+1<<2)>>2]=c[k+(m+5<<2)>>2];c[k+(m<<2)>>2]=c[k+((m|6)<<2)>>2];if((h|0)==4){c[k>>2]=c[k+(m+7<<2)>>2]}do{if((c[b+36>>2]|0)==0){b=l+2|0;m=(b|0)==0;if(!m){f=1;do{n=k+(f<<2)|0;c[n>>2]=~~(+(c[n>>2]|0)*1.230174104914001);f=f+2|0;}while(f>>>0<=b>>>0)}n=l+3|0;f=0;do{o=k+(f<<2)|0;c[o>>2]=~~(+(c[o>>2]|0)*.8128930661159609);f=f+2|0;}while(f>>>0<=n>>>0);if(!m){f=c[k>>2]|0;n=1;while(1){o=k+(n<<2)|0;m=c[k+(n+1<<2)>>2]|0;c[o>>2]=~~(+(c[o>>2]|0)- +(m+f|0)*.443506852043971);n=n+2|0;if(n>>>0>b>>>0){break}else{f=m}}}b=l+1|0;if(b>>>0>=2){m=2;do{o=k+(m<<2)|0;c[o>>2]=~~(+(c[o>>2]|0)- +((c[k+((m|1)<<2)>>2]|0)+(c[k+(m+ -1<<2)>>2]|0)|0)*.882911075530934);m=m+2|0;}while(m>>>0<=b>>>0)}if(l>>>0>=3){f=c[k+8>>2]|0;m=3;while(1){o=k+(m<<2)|0;b=c[k+(m+1<<2)>>2]|0;c[o>>2]=~~(+(c[o>>2]|0)- +(b+f|0)*-.052980118572961);m=m+2|0;if(m>>>0>l>>>0){break}else{f=b}}}b=l+ -1|0;if(b>>>0<4){break}else{l=4}do{o=k+(l<<2)|0;c[o>>2]=~~(+(c[o>>2]|0)- +((c[k+((l|1)<<2)>>2]|0)+(c[k+(l+ -1<<2)>>2]|0)|0)*-1.586134342059924);l=l+2|0;}while(l>>>0<=b>>>0)}else{if(l>>>0<3){break}m=c[k+8>>2]|0;f=3;while(1){b=c[k+(f+1<<2)>>2]|0;o=k+(f<<2)|0;c[o>>2]=(c[o>>2]|0)-(m+2+b>>2);f=f+2|0;if(f>>>0>l>>>0){break}else{m=b}}if(l>>>0>4){b=4}else{break}do{o=k+(b<<2)|0;c[o>>2]=((c[k+((b|1)<<2)>>2]|0)+(c[k+(b+ -1<<2)>>2]|0)>>1)+(c[o>>2]|0);b=b+2|0;}while(b>>>0>>0)}}while(0);if(g){i=j;return}else{l=0}do{c[d+((da(l,e)|0)<<2)>>2]=c[k+(l+h<<2)>>2];l=l+1|0;}while(l>>>0>>0);i=j;return}function aE(a){a=a|0;i=i;return 10}function bE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;j=i;i=i+8|0;h=j;m=i;i=i+16|0;l=m;k=b+16|0;c[k>>2]=13;g=b+24|0;c[g>>2]=0;c[g+4>>2]=0;c[m>>2]=13;m=l+8|0;c[m>>2]=0;c[m+4>>2]=0;c[b>>2]=-3;m=b+164|0;c[m>>2]=d;Lf(k,e)|0;d=FW(20)|0;rt(d,c[m>>2]|0);c[b+4>>2]=d;tt(d,Mf(k,l)|0);c[b+8>>2]=0;a[b+32|0]=1;b=c[k>>2]|0;if((b|0)==8){m=c[g>>2]|0;fd[c[(c[m>>2]|0)+12>>2]&511](m);i=f;return}else{c[j>>2]=b;c[h+4>>2]=8;Qe(0,185712,h);tc()}}function cE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;g=i;i=i+8|0;h=g;n=i;i=i+8|0;o=n;k=i;i=i+16|0;m=k;l=b+16|0;c[l>>2]=13;f=b+24|0;c[f>>2]=0;c[f+4>>2]=0;c[k>>2]=13;k=m+8|0;c[k>>2]=0;c[k+4>>2]=0;c[b>>2]=-3;c[b+164>>2]=d;k=c[e>>2]|0;if((k|0)==6){p=c[e+8>>2]|0;c[b+4>>2]=p;a[b+32|0]=0}else if((k|0)==8){o=FW(20)|0;rt(o,d);p=b+4|0;c[p>>2]=o;a[b+32|0]=1;tt(o,Mf(e,m)|0);p=c[p>>2]|0}else{c[n>>2]=k;c[o+4>>2]=6;Qe(0,185712,o);tc()}c[b+8>>2]=0;if((c[p+12>>2]|0)<=0){i=j;return}ut(p,0,l)|0;k=c[l>>2]|0;if((k|0)!=8){c[g>>2]=k;c[h+4>>2]=8;Qe(0,185712,h);tc()}p=c[f>>2]|0;fd[c[(c[p>>2]|0)+12>>2]&511](p);i=j;return}function dE(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;g=i;i=i+8|0;h=g;e=b+16|0;f=c[e>>2]|0;if((f|0)==8){h=c[b+24>>2]|0;fd[c[(c[h>>2]|0)+16>>2]&511](h);Of(e)}else if((f|0)!=13){c[g>>2]=f;c[h+4>>2]=8;Qe(0,185712,h);tc()}if((a[b+32|0]&1)==0){i=d;return}b=c[b+4>>2]|0;if((b|0)==0){i=d;return}st(b);HW(b);i=d;return}function eE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;k=i;i=i+8|0;g=k;h=i;i=i+8|0;j=h;e=i;i=i+8|0;d=e;l=c[a>>2]|0;if((l|0)!=-3){c[a>>2]=-3;o=l;i=f;return o|0}n=a+16|0;m=a+24|0;l=a+8|0;a=a+4|0;if(b){b=c[n>>2]|0;if((b|0)==8){o=c[m>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;i=f;return o|0}else if((b|0)==13){o=-1;i=f;return o|0}else{o=e;c[o>>2]=b;o=d+4|0;c[o>>2]=8;o=185712;Qe(0,o,d);tc()}}while(1){b=c[n>>2]|0;if((b|0)==13){b=-1;l=15;break}else if((b|0)!=8){l=7;break}b=c[m>>2]|0;b=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((b|0)!=-1){l=15;break}b=c[n>>2]|0;if((b|0)!=8){l=10;break}b=c[m>>2]|0;fd[c[(c[b>>2]|0)+16>>2]&511](b);Of(n);b=(c[l>>2]|0)+1|0;c[l>>2]=b;o=c[a>>2]|0;if((b|0)>=(c[o+12>>2]|0)){continue}ut(o,b,n)|0;b=c[n>>2]|0;if((b|0)!=8){l=13;break}o=c[m>>2]|0;fd[c[(c[o>>2]|0)+12>>2]&511](o)}if((l|0)==7){o=e;c[o>>2]=b;o=d+4|0;c[o>>2]=8;o=185712;Qe(0,o,d);tc()}else if((l|0)==10){c[h>>2]=b;c[j+4>>2]=8;Qe(0,185712,j);tc()}else if((l|0)==13){c[k>>2]=b;c[g+4>>2]=8;Qe(0,185712,g);tc()}else if((l|0)==15){i=f;return b|0}return 0}function fE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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.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.0,ba=0.0,ca=0.0,da=0.0,ea=0.0;f=i;P=i;i=i+8|0;R=i;i=i+8|0;Q=R;_=i;i=i+8|0;$=_;S=i;i=i+8|0;T=i;i=i+8|0;Z=T;O=i;i=i+8|0;N=O;M=i;i=i+8|0;W=i;i=i+8|0;V=W;J=i;i=i+8|0;H=i;i=i+8|0;L=i;i=i+8|0;K=i;i=i+8|0;E=K;F=i;i=i+8|0;G=F;j=i;i=i+8|0;o=i;i=i+8|0;m=o;k=i;i=i+8|0;w=i;i=i+8|0;t=w;u=i;i=i+8|0;v=u;s=i;i=i+8|0;r=s;l=i;i=i+8|0;n=i;i=i+8|0;p=i;i=i+8|0;q=p;D=i;i=i+8|0;C=D;a:while(1){Y=eE(b,0)|0;if((Y|0)==37){while(1){Y=eE(b,0)|0;if((Y|0)==10|(Y|0)==13){continue a}else if((Y|0)==-1){g=4;break a}}}else if((Y|0)==-1){g=4;break}else{if((a[185104+Y|0]|0)==1){continue}else{break}}}if((g|0)==4){$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=12;i=f;return d|0}switch(Y|0){case 40:{n=b+33|0;y=b+16|0;x=b+24|0;q=(e|0)>0;p=b+164|0;A=0;D=1;C=n;z=0;b:while(1){c:while(1){d:while(1){F=eE(b,0)|0;E=F&255;if((F|0)==40){g=64;break c}else if((F|0)==-1){g=61;break b}else if((F|0)==41){g=65;break}else if((F|0)!=92){F=0;g=96;break c}E=eE(b,0)|0;switch(E|0){case 102:{g=69;break c};case 110:{E=10;F=0;g=96;break c};case 13:{break};case 116:{g=67;break c};case 98:{g=68;break c};case 10:{continue d};case 114:{E=13;F=0;break c};case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{g=71;break d};case 41:case 40:case 92:{g=70;break c};case-1:{g=91;break b};default:{F=0;break d}}E=c[b>>2]|0;if((E|0)==-3){E=c[y>>2]|0;if((E|0)==8){E=c[x>>2]|0;E=jd[c[(c[E>>2]|0)+20>>2]&511](E)|0}else if((E|0)==13){E=-1}else{g=87;break b}c[b>>2]=(E|0)==-1?-3:E}if((E|0)!=10){continue}eE(b,0)|0}do{if((g|0)==65){g=0;D=D+ -1|0;F=(D|0)==0;E=F?-1:41}else if((g|0)==71){g=0;E=E+ -48|0;F=c[b>>2]|0;if((F|0)==-3){F=c[y>>2]|0;if((F|0)==13){F=-1}else if((F|0)==8){F=c[x>>2]|0;F=jd[c[(c[F>>2]|0)+20>>2]&511](F)|0}else{g=74;break b}c[b>>2]=(F|0)==-1?-3:F}if((F+ -48|0)>>>0>=8){F=0;break}eE(b,0)|0;E=(E<<3)+ -48+F|0;F=c[b>>2]|0;if((F|0)==-3){F=c[y>>2]|0;if((F|0)==8){F=c[x>>2]|0;F=jd[c[(c[F>>2]|0)+20>>2]&511](F)|0}else if((F|0)==13){F=-1}else{g=80;break b}c[b>>2]=(F|0)==-1?-3:F}if((F+ -48|0)>>>0>=8){F=0;break}eE(b,0)|0;E=(E<<3)+ -48+F|0;F=0}}while(0);if((E|0)!=-1){g=95;break}if(F){g=113;break b}}if((g|0)==64){g=0;E=40;F=0;D=D+1|0}else if((g|0)==67){g=0;E=9;F=0}else if((g|0)==68){g=0;E=8;F=0}else if((g|0)==69){g=0;E=12;F=0}else if((g|0)==70){g=0;E=E&255;F=0}else if((g|0)==95){E=E&255;g=96}if((g|0)==96){g=0}do{if((A|0)==128){if((z|0)==0){z=FW(32)|0;ge(z,n,128)}else{ne(z,n,128)|0}if(!q){A=0;C=n;break}A=c[p>>2]|0;if((A|0)==0){A=0;C=n;break}C=c[y>>2]|0;if((C|0)!=8){g=104;break b}$=c[x>>2]|0;if((nn(A,jd[c[(c[$>>2]|0)+48>>2]&511]($)|0)|0)==(e|0)){A=0;C=n}else{g=106;break b}}}while(0);a[C]=E;A=A+1|0;if(F){g=113;break}else{C=C+1|0}}if((g|0)==61){if((c[y>>2]|0)==8){b=c[x>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}else{b=-1}Qe(b,185384,l);g=113}else if((g|0)==74){c[s>>2]=F;c[r+4>>2]=8;Qe(0,185712,r);tc()}else if((g|0)==80){c[u>>2]=F;c[v+4>>2]=8;Qe(0,185712,v);tc()}else if((g|0)==87){c[w>>2]=E;c[t+4>>2]=8;Qe(0,185712,t);tc()}else if((g|0)==91){if((c[y>>2]|0)==8){b=c[x>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}else{b=-1}Qe(b,185384,k);g=113}else if((g|0)==104){c[o>>2]=C;c[m+4>>2]=8;Qe(0,185712,m);tc()}else if((g|0)==106){if((c[y>>2]|0)==8){b=c[x>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}else{b=-1}Qe(b,185384,j);if((z|0)!=0){ke(z);HW(z)}a[n]=E}do{if((g|0)==113){if((A|0)<=-1){break}if((z|0)==0){z=FW(32)|0;ge(z,n,A)}else{ne(z,n,A)|0}$=d+8|0;c[$+4>>2]=0;c[d>>2]=3;c[$>>2]=z;i=f;return d|0}}while(0);$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=12;i=f;return d|0};case 47:{j=b+33|0;m=b+16|0;g=b+24|0;n=0;l=j;k=0;e:while(1){e=c[b>>2]|0;if((e|0)==-3){o=c[m>>2]|0;if((o|0)==13){e=-1}else if((o|0)==8){e=c[g>>2]|0;e=jd[c[(c[e>>2]|0)+20>>2]&511](e)|0}else{g=123;break}c[b>>2]=(e|0)==-1?-3:e}if((e|0)==-1){g=154;break}if((a[185104+e|0]|0)!=0){g=154;break}eE(b,0)|0;o=e&255;f:do{if((e|0)==35){e=c[b>>2]|0;if((e|0)==-3){e=c[m>>2]|0;if((e|0)==8){e=c[g>>2]|0;e=jd[c[(c[e>>2]|0)+20>>2]&511](e)|0}else if((e|0)==13){e=-1}else{g=131;break e}c[b>>2]=(e|0)==-1?-3:e}p=e+ -48|0;do{if(p>>>0>=10){if((e+ -65|0)>>>0<6){p=e+ -55|0;break}if((e+ -97|0)>>>0>=6){break f}p=e+ -87|0}}while(0);eE(b,0)|0;o=p<<4;e=eE(b,0)|0;if((e+ -48|0)>>>0<10){o=o+208+e&255;break}if((e+ -65|0)>>>0<6){o=o+201+e&255;break}if((e+ -97|0)>>>0<6){o=o+169+e&255;break}if((c[m>>2]|0)==8){e=c[g>>2]|0;e=jd[c[(c[e>>2]|0)+48>>2]&511](e)|0}else{e=-1}Qe(e,185408,L);o=o&255}}while(0);if((n|0)==128){if((c[m>>2]|0)==8){n=c[g>>2]|0;n=jd[c[(c[n>>2]|0)+48>>2]&511](n)|0}else{n=-1}if((k|0)!=0){g=152;break}Qe(n,185448,H);k=FW(32)|0;ge(k,j,128);n=0;l=j}a[l]=o;n=n+1|0;l=l+1|0}do{if((g|0)==123){c[F>>2]=o;c[G+4>>2]=8;Qe(0,185712,G);tc()}else if((g|0)==131){c[K>>2]=e;c[E+4>>2]=8;Qe(0,185712,E);tc()}else if((g|0)==152){Qe(n,185528,J);a[l]=0;I=128}else if((g|0)==154){a[l]=0;if((k|0)!=0){I=n;break}$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=4;c[$>>2]=Ge(j)|0;i=f;return d|0}}while(0);ne(k,j,I)|0;_=c[k+28>>2]|0;$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=4;c[$>>2]=Ge(_)|0;ke(k);HW(k);i=f;return d|0};case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 43:{j=0;e=(Y|0)==43?0:Y+ -48|0;g=9;break};case 62:{g=c[b>>2]|0;if((g|0)==-3){g=c[b+16>>2]|0;if((g|0)==8){U=c[b+24>>2]|0;U=jd[c[(c[U>>2]|0)+20>>2]&511](U)|0}else if((g|0)==13){U=-1}else{c[T>>2]=g;c[Z+4>>2]=8;Qe(0,185712,Z);tc()}c[b>>2]=(U|0)==-1?-3:U}else{U=g}if((U|0)==62){eE(b,0)|0;a[b+34|0]=62;_=b+33|0;a[_]=62;a[b+35|0]=0;$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=10;c[$>>2]=Ge(_)|0;i=f;return d|0}if((c[b+16>>2]|0)==8){b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}else{b=-1}Qe(b,185616,S);$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=11;i=f;return d|0};case 46:{y=b+16|0;z=b+24|0;x=b;A=0;e=0;g=39;break};case 41:case 123:case 125:{if((c[b+16>>2]|0)==8){b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}else{b=-1}c[_>>2]=Y;Qe(b,185640,$);$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=11;i=f;return d|0};case 60:{j=c[b>>2]|0;if((j|0)==-3){j=c[b+16>>2]|0;if((j|0)==8){X=c[b+24>>2]|0;X=jd[c[(c[X>>2]|0)+20>>2]&511](X)|0}else if((j|0)==13){X=-1}else{c[W>>2]=j;c[V+4>>2]=8;Qe(0,185712,V);tc()}c[b>>2]=(X|0)==-1?-3:X}else{X=j}if((X|0)==60){eE(b,0)|0;a[b+34|0]=60;_=b+33|0;a[_]=60;a[b+35|0]=0;$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=10;c[$>>2]=Ge(_)|0;i=f;return d|0}j=b+33|0;l=b+16|0;k=b+24|0;m=0;o=j;n=0;g:while(1){p=0;e=0;do{do{q=eE(b,0)|0;if((q|0)==62){break g}else if((q|0)==-1){g=169;break g}}while((a[185104+q|0]|0)==1);p=p<<4;do{if((q+ -48|0)>>>0<10){p=p+ -48+q|0}else{if((q+ -65|0)>>>0<6){p=p+ -55+q|0;break}if((q+ -97|0)>>>0<6){p=p+ -87+q|0;break}if((c[l>>2]|0)==8){r=c[k>>2]|0;r=jd[c[(c[r>>2]|0)+48>>2]&511](r)|0}else{r=-1}c[O>>2]=q;Qe(r,185576,N)}}while(0);e=e+1|0;}while((e|0)!=2);do{if((m|0)==128){if((n|0)==0){n=FW(32)|0;ge(n,j,128);m=0;o=j;break}else{ne(n,j,128)|0;m=0;o=j;break}}}while(0);a[o]=p;m=m+1|0;o=o+1|0}if((g|0)==169){if((c[l>>2]|0)==8){b=c[k>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}else{b=-1}Qe(b,185552,M)}if((n|0)==0){n=FW(32)|0;ge(n,j,m)}else{ne(n,j,m)|0}if((e|0)==1){me(n,p<<4&255)|0}$=d+8|0;c[$+4>>2]=0;c[d>>2]=3;c[$>>2]=n;i=f;return d|0};case 91:case 93:{_=b+33|0;a[_]=Y;a[b+34|0]=0;$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=10;c[$>>2]=Ge(_)|0;i=f;return d|0};case 45:{j=1;e=0;g=9;break};default:{j=b+33|0;a[j]=Y;m=b+16|0;n=b+24|0;l=2;k=b+34|0;while(1){o=c[b>>2]|0;if((o|0)==-3){o=c[m>>2]|0;if((o|0)==13){o=-1}else if((o|0)==8){o=c[n>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0}else{g=211;break}c[b>>2]=(o|0)==-1?-3:o}if((o|0)==-1){break}if((a[185104+o|0]|0)!=0){break}eE(b,0)|0;if((l|0)==128){g=216;break}a[k]=o;l=l+1|0;k=k+1|0}if((g|0)==211){c[R>>2]=o;c[Q+4>>2]=8;Qe(0,185712,Q);tc()}if((g|0)==216){if((c[m>>2]|0)==8){b=c[n>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}else{b=-1}Qe(b,185664,P)}a[k]=0;b=a[j]|0;do{if(b<<24>>24==110){if((Qc(j|0,185704)|0)!=0){break}$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=5;i=f;return d|0}else if(b<<24>>24==102){if((Qc(j|0,185696)|0)!=0){break}$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=0;a[$]=0;i=f;return d|0}else if(b<<24>>24==116){if((Qc(j|0,185688)|0)!=0){break}$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=0;a[$]=1;i=f;return d|0}}while(0);$=d+8|0;c[$>>2]=0;c[$+4>>2]=0;c[d>>2]=10;c[$>>2]=Ge(j)|0;i=f;return d|0}}do{if((g|0)==9){l=b+16|0;k=b+24|0;r=0;o=0;ca=0.0;m=0;h:while(1){aa=+(m>>>0);ba=aa*10.0;while(1){while(1){if(!r){break}s=c[b>>2]|0;if((s|0)==-3){s=c[l>>2]|0;if((s|0)==13){s=-1}else if((s|0)==8){s=c[k>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0}else{g=21;break h}c[b>>2]=(s|0)==-1?-3:s}if((s+ -48|0)>>>0>=10){r=1;g=32;break h}eE(b,0)|0;if(o){g=25;break}o=1;ca=ba+ +(s+ -48|0)}if((g|0)==25){g=0;r=1;o=1;ca=ca*10.0+ +(s+ -48|0);continue}while(1){s=c[b>>2]|0;if((s|0)==-3){s=c[l>>2]|0;if((s|0)==13){s=-1}else if((s|0)==8){s=c[k>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0}else{g=21;break h}c[b>>2]=(s|0)==-1?-3:s}if((s+ -48|0)>>>0>=10){r=0;g=32;break h}eE(b,0)|0;if((e|0)>214748363){ea=+(e|0);if(ea>+(-2147483601-s|0)/10.0){break}}e=(e*10|0)+ -48+s|0}da=ea*10.0+ +(s+ -48|0);if(ea>+((47-s|0)>>>0)/10.0){r=1;o=1;ca=da}else{break}}r=1;m=~~da>>>0}if((g|0)==21){c[D>>2]=s;c[C+4>>2]=8;Qe(0,185712,C);tc()}else if((g|0)==32){if((s|0)==46){eE(b,0)|0;if(!r){y=l;z=k;x=b;A=j;g=39;break}x=b;y=l;z=k;A=j;B=o?ca:aa;break}b=d+8|0;if(!r){c[b+4>>2]=0;c[d>>2]=1;c[b>>2]=j?0-e|0:e;i=f;return d|0}if(o){c[b>>2]=0;c[b+4>>2]=0;c[d>>2]=11;i=f;return d|0}else{c[b+4>>2]=0;c[d>>2]=14;c[b>>2]=m;i=f;return d|0}}}}while(0);if((g|0)==39){B=+(e|0)}aa=.1;i:while(1){while(1){j=c[x>>2]|0;if((j|0)==-3){j=c[y>>2]|0;if((j|0)==13){j=-1}else if((j|0)==8){j=c[z>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0}else{g=46;break i}c[x>>2]=(j|0)==-1?-3:j}if((j|0)!=45){break}if((c[y>>2]|0)==8){j=c[z>>2]|0;j=jd[c[(c[j>>2]|0)+48>>2]&511](j)|0}else{j=-1}Qe(j,185360,n);eE(b,0)|0}j=j+ -48|0;if(j>>>0>=10){break}eE(b,0)|0;ea=B+aa*+(j|0);aa=aa*.1;B=ea}if((g|0)==46){c[p>>2]=j;c[q+4>>2]=8;Qe(0,185712,q);tc()}if(A){B=-0.0-B}c[d>>2]=2;h[d+8>>3]=B;i=f;return d|0}function gE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=i;i=i+8|0;e=d;while(1){h=eE(a,0)|0;if((h|0)==13){break}else if((h|0)==10|(h|0)==-1){g=10;break}}if((g|0)==10){i=b;return}g=c[a>>2]|0;if((g|0)==-3){g=c[a+16>>2]|0;if((g|0)==8){f=c[a+24>>2]|0;f=jd[c[(c[f>>2]|0)+20>>2]&511](f)|0}else if((g|0)==13){f=-1}else{c[d>>2]=g;c[e+4>>2]=8;Qe(0,185712,e);tc()}c[a>>2]=(f|0)==-1?-3:f}else{f=g}if((f|0)!=10){i=b;return}eE(a,0)|0;i=b;return}function hE(b){b=b|0;var c=0;c=i;if(b>>>0>=256){b=0;i=c;return b|0}b=(a[185104+b|0]|0)==1;i=c;return b|0}function iE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0;n=i;u=i;i=i+16|0;k=u;s=i;i=i+16|0;j=s;r=i;i=i+16|0;g=r;p=i;i=i+16|0;l=p;m=a+8|0;d=m+4|0;c[u>>2]=13;v=k+8|0;c[v>>2]=0;f=v+4|0;c[f>>2]=0;c[s>>2]=13;q=j+8|0;c[q>>2]=0;c[q+4>>2]=0;c[r>>2]=13;q=g+8|0;c[q>>2]=0;c[q+4>>2]=0;c[p>>2]=13;o=l+8|0;c[o>>2]=0;c[o+4>>2]=0;c[m>>2]=0;c[d>>2]=0;c[a>>2]=5;fd[c[(c[b>>2]|0)+12>>2]&511](b);c[v>>2]=0;c[f>>2]=0;c[u>>2]=5;f=FW(56)|0;v=FW(168)|0;w=c[b>>2]|0;x=c[w+96>>2]|0;w=jd[c[w+108>>2]&511](b)|0;bE(v,0,Cd[x&63](b,w,0,0,k)|0);aG(f,0,v,0);cG(f,k,0,0,0,0,0)|0;cG(f,j,0,0,0,0,0)|0;cG(f,g,0,0,0,0,0)|0;cG(f,a,0,0,0,0,0)|0;do{if((c[u>>2]|0)==1){if((c[s>>2]|0)!=1){break}if((c[r>>2]|0)!=10){break}if((Qc(c[q>>2]|0,185784)|0)!=0){break}if((c[a>>2]|0)!=7){break}Yu(c[m>>2]|0,185792,l,0)|0;p=c[p>>2]|0;if((p+ -1|0)>>>0<2){if((p|0)==1){t=+(c[o>>2]|0)}else{t=+h[o>>3]}if(t<=0.0){e=11}}else{e=11}if((e|0)==11){Of(a);c[m>>2]=0;c[d>>2]=0;c[a>>2]=5}Of(l)}}while(0);Of(g);Of(j);Of(k);if((f|0)==0){i=n;return}bG(f);HW(f);i=n;return}function jE(a){a=a|0;var b=0;b=i;Of(a);i=b;return}function kE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=i;i=i+8|0;e=i;i=i+8|0;if((c[a>>2]|0)!=7){e=0;i=b;return e|0}f=_u(c[a+8>>2]|0,185808,0,e)|0;a=c[e>>2]|0;if(f&(a|0)>0){f=a;i=b;return f|0}Qe(-1,185816,d);f=0;i=b;return f|0}function lE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;f=i;i=i+8|0;g=i;i=i+8|0;j=g;m=i;i=i+8|0;n=m;o=i;i=i+16|0;b=o;k=i;i=i+16|0;e=k;c[o>>2]=13;l=b+8|0;c[l>>2]=0;c[l+4>>2]=0;c[k>>2]=13;h=e+8|0;c[h>>2]=0;c[h+4>>2]=0;do{if((c[a>>2]|0)==7){if((c[(Yu(c[a+8>>2]|0,185864,b,0)|0)>>2]|0)!=6){break}a=c[o>>2]|0;if((a|0)!=6){c[m>>2]=a;c[n+4>>2]=6;Qe(0,186424,n);tc()}l=c[l>>2]|0;if((c[l+12>>2]|0)<=1){break}if((c[(ut(l,0,e)|0)>>2]|0)!=1){break}k=c[k>>2]|0;if((k|0)!=1){c[g>>2]=k;c[j+4>>2]=1;Qe(0,186424,j);tc()}g=c[h>>2]|0;if((g|0)<=0){break}Of(e);Of(b);i=d;return g|0}}while(0);Qe(-1,185872,f);o=0;Of(e);Of(b);i=d;return o|0}function mE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;f=i;i=i+8|0;g=i;i=i+8|0;j=g;m=i;i=i+8|0;n=m;o=i;i=i+16|0;b=o;k=i;i=i+16|0;e=k;c[o>>2]=13;l=b+8|0;c[l>>2]=0;c[l+4>>2]=0;c[k>>2]=13;h=e+8|0;c[h>>2]=0;c[h+4>>2]=0;do{if((c[a>>2]|0)==7){if((c[(Yu(c[a+8>>2]|0,185864,b,0)|0)>>2]|0)!=6){break}a=c[o>>2]|0;if((a|0)!=6){c[m>>2]=a;c[n+4>>2]=6;Qe(0,186424,n);tc()}l=c[l>>2]|0;if((c[l+12>>2]|0)<=1){break}if((c[(ut(l,1,e)|0)>>2]|0)!=1){break}k=c[k>>2]|0;if((k|0)!=1){c[g>>2]=k;c[j+4>>2]=1;Qe(0,186424,j);tc()}g=c[h>>2]|0;if((g|0)<=0){break}Of(e);Of(b);i=d;return g|0}}while(0);Qe(-1,185928,f);o=0;Of(e);Of(b);i=d;return o|0}function nE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;f=i;i=i+8|0;g=i;i=i+8|0;j=g;m=i;i=i+8|0;n=m;o=i;i=i+16|0;d=o;k=i;i=i+16|0;b=k;c[o>>2]=13;l=d+8|0;c[l>>2]=0;c[l+4>>2]=0;c[k>>2]=13;h=b+8|0;c[h>>2]=0;c[h+4>>2]=0;if((c[a>>2]|0)!=7){o=0;Of(b);Of(d);i=e;return o|0}if((c[(Yu(c[a+8>>2]|0,185864,d,0)|0)>>2]|0)!=6){o=0;Of(b);Of(d);i=e;return o|0}a=c[o>>2]|0;if((a|0)!=6){c[m>>2]=a;c[n+4>>2]=6;Qe(0,186424,n);tc()}l=c[l>>2]|0;if((c[l+12>>2]|0)<=3){o=0;Of(b);Of(d);i=e;return o|0}do{if((c[(ut(l,2,b)|0)>>2]|0)==1){k=c[k>>2]|0;if((k|0)!=1){c[g>>2]=k;c[j+4>>2]=1;Qe(0,186424,j);tc()}g=c[h>>2]|0;if((g|0)<=0){break}Of(b);Of(d);i=e;return g|0}}while(0);Qe(-1,185984,f);o=0;Of(b);Of(d);i=e;return o|0}function oE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;f=i;i=i+8|0;g=i;i=i+8|0;j=g;m=i;i=i+8|0;n=m;o=i;i=i+16|0;d=o;k=i;i=i+16|0;b=k;c[o>>2]=13;l=d+8|0;c[l>>2]=0;c[l+4>>2]=0;c[k>>2]=13;h=b+8|0;c[h>>2]=0;c[h+4>>2]=0;if((c[a>>2]|0)!=7){o=0;Of(b);Of(d);i=e;return o|0}if((c[(Yu(c[a+8>>2]|0,185864,d,0)|0)>>2]|0)!=6){o=0;Of(b);Of(d);i=e;return o|0}a=c[o>>2]|0;if((a|0)!=6){c[m>>2]=a;c[n+4>>2]=6;Qe(0,186424,n);tc()}l=c[l>>2]|0;if((c[l+12>>2]|0)<=3){o=0;Of(b);Of(d);i=e;return o|0}do{if((c[(ut(l,3,b)|0)>>2]|0)==1){k=c[k>>2]|0;if((k|0)!=1){c[g>>2]=k;c[j+4>>2]=1;Qe(0,186424,j);tc()}g=c[h>>2]|0;if((g|0)<=0){break}Of(b);Of(d);i=e;return g|0}}while(0);Qe(-1,186048,f);o=0;Of(b);Of(d);i=e;return o|0}function pE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=i;i=i+8|0;e=i;i=i+8|0;c[e>>2]=0;do{if((c[a>>2]|0)==7){f=_u(c[a+8>>2]|0,186112,0,e)|0;a=c[e>>2]|0;if(!(f&(a|0)>0)){break}i=b;return a|0}}while(0);Qe(-1,186120,d);f=0;i=b;return f|0}function qE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=i;i=i+8|0;e=i;i=i+8|0;c[e>>2]=0;do{if((c[a>>2]|0)==7){f=_u(c[a+8>>2]|0,186184,0,e)|0;a=c[e>>2]|0;if(!(f&(a|0)>0)){break}i=b;return a|0}}while(0);Qe(-1,186192,d);f=0;i=b;return f|0}function rE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=i;i=i+8|0;e=i;i=i+8|0;c[e>>2]=0;do{if((c[a>>2]|0)==7){f=_u(c[a+8>>2]|0,186248,0,e)|0;a=c[e>>2]|0;if(!(f&(a|0)>0)){break}i=b;return a|0}}while(0);Qe(-1,186256,d);f=0;i=b;return f|0}function sE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=i;i=i+8|0;e=i;i=i+8|0;c[e>>2]=0;do{if((c[a>>2]|0)==7){f=_u(c[a+8>>2]|0,186304,0,e)|0;a=c[e>>2]|0;if(!(f&(a|0)>0)){break}i=b;return a|0}}while(0);Qe(-1,186312,d);f=0;i=b;return f|0}function tE(a){a=a|0;var b=0,d=0,e=0;b=i;d=i;i=i+8|0;e=i;i=i+8|0;c[e>>2]=0;if((c[a>>2]|0)!=7){e=0;i=b;return e|0}_u(c[a+8>>2]|0,186368,0,e)|0;a=c[e>>2]|0;if((a|0)>=0){e=a;i=b;return e|0}Qe(-1,186376,d);e=0;i=b;return e|0}function uE(a,b){a=a|0;b=b|0;var 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,A=0,B=0,C=0,D=0;d=i;z=i;i=i+8|0;y=z;m=i;i=i+8|0;l=m;k=i;i=i+8|0;o=k;p=i;i=i+8|0;q=p;s=i;i=i+8|0;t=s;v=i;i=i+8|0;w=v;x=i;i=i+8|0;u=x;n=i;i=i+8|0;C=n;A=i;i=i+16|0;e=A;h=i;i=i+16|0;f=h;D=i;i=i+16|0;r=D;c[A>>2]=13;B=e+8|0;c[B>>2]=0;c[B+4>>2]=0;c[h>>2]=13;g=f+8|0;c[g>>2]=0;c[g+4>>2]=0;c[D>>2]=13;D=r+8|0;c[D>>2]=0;c[D+4>>2]=0;if((c[a>>2]|0)!=7){if((b|0)==0){e=186544}else{e=c[b+28>>2]|0}c[n>>2]=e;Qe(-1,186496,C);D=0;i=d;return D|0}n=a+8|0;Yu(c[n>>2]|0,186552,e,0)|0;if((c[A>>2]|0)!=4){if((b|0)==0){f=186544}else{f=c[b+28>>2]|0}c[z>>2]=f;Qe(-1,186696,y);Of(e);D=0;i=d;return D|0}y=c[B>>2]|0;do{if((Qc(y|0,186560)|0)==0){g=c[a>>2]|0;if((g|0)==7){Yu(c[n>>2]|0,186568,f,0)|0;j=FW(12)|0;wE(j,f);Of(f);break}else{c[x>>2]=g;c[u+4>>2]=7;Qe(0,188448,u);tc()}}else{if((Qc(y|0,186576)|0)==0){u=c[a>>2]|0;if((u|0)!=7){c[v>>2]=u;c[w+4>>2]=7;Qe(0,188448,w);tc()}Yu(c[n>>2]|0,186584,f,0)|0;u=c[a>>2]|0;if((u|0)==7){Yu(c[n>>2]|0,186568,r,0)|0;j=FW(16)|0;zE(j,f,r);Of(f);Of(r);break}else{c[s>>2]=u;c[t+4>>2]=7;Qe(0,188448,t);tc()}}if((Qc(y|0,186592)|0)==0){j=FW(12)|0;CE(j,a);break}if((Qc(y|0,186600)|0)==0){r=c[a>>2]|0;if((r|0)==7){Yu(c[n>>2]|0,186600,f,0)|0;j=FW(8)|0;FE(j,f,b);Of(f);break}else{c[p>>2]=r;c[q+4>>2]=7;Qe(0,188448,q);tc()}}if((Qc(y|0,186608)|0)==0){j=c[a>>2]|0;if((j|0)!=7){c[k>>2]=j;c[o+4>>2]=7;Qe(0,188448,o);tc()}Yu(c[n>>2]|0,186616,f,0)|0;j=FW(8)|0;c[j>>2]=187200;k=j+4|0;c[k>>2]=0;if((c[h>>2]|0)==4){D=FW(32)|0;fe(D,c[g>>2]|0);c[k>>2]=D}Of(f);break}if((Qc(y|0,186624)|0)==0){j=FW(20)|0;KE(j,a);break}if((Qc(y|0,186632)|0)==0){j=FW(56)|0;QE(j,a);break}if((Qc(y|0,186648)|0)==0){j=FW(24)|0;NE(j,a);break}if((Qc(y|0,186656)|0)==0){g=c[a>>2]|0;if((g|0)==7){Yu(c[n>>2]|0,186672,f,0)|0;j=FW(8)|0;TE(j,f);Of(f);break}else{c[m>>2]=g;c[l+4>>2]=7;Qe(0,188448,l);tc()}}else{if((Qc(y|0,186680)|0)==0){j=FW(12)|0;WE(j,a);break}else{j=FW(8)|0;c[j>>2]=188048;D=FW(32)|0;fe(D,y);c[j+4>>2]=D;break}}}}while(0);Of(e);if((j|0)==0){D=0;i=d;return D|0}if(jd[c[(c[j>>2]|0)+8>>2]&511](j)|0){D=j;i=d;return D|0}fd[c[(c[j>>2]|0)+4>>2]&511](j);D=0;i=d;return D|0}function vE(b,d){b=b|0;d=d|0;var e=0,f=0,g=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,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.0;j=i;T=i;i=i+8|0;N=i;i=i+8|0;S=i;i=i+8|0;L=i;i=i+8|0;V=i;i=i+8|0;W=i;i=i+8|0;p=i;i=i+16|0;o=p;s=i;i=i+8|0;v=i;i=i+16|0;t=v;z=i;i=i+8|0;D=i;i=i+16|0;C=D;F=i;i=i+8|0;K=i;i=i+16|0;I=K;O=i;i=i+8|0;R=i;i=i+8|0;H=i;i=i+8|0;Q=i;i=i+8|0;J=i;i=i+8|0;U=i;i=i+8|0;P=i;i=i+8|0;u=i;i=i+8|0;B=i;i=i+8|0;M=i;i=i+8|0;Z=i;i=i+8|0;$=i;i=i+8|0;X=i;i=i+16|0;e=X;m=i;i=i+16|0;g=m;c[X>>2]=13;_=e+8|0;c[_>>2]=0;Y=_+4|0;c[Y>>2]=0;c[m>>2]=13;l=g+8|0;c[l>>2]=0;c[l+4>>2]=0;q=b+48|0;k=b+40|0;r=b+32|0;y=b+24|0;n=b+16|0;w=b+58|0;x=b+57|0;E=b+56|0;f=b+59|0;A=d+12|0;bX(n|0,0,44)|0;if((c[A>>2]|0)<2){Qe(-1,186760,$);i=j;return}vt(d,0,e)|0;$=c[X>>2]|0;if(($|0)==9){c[b+8>>2]=c[_>>2];c[b+12>>2]=c[Y>>2];a[b+4|0]=1;G=7}else if(($|0)==1){c[b+8>>2]=(c[_>>2]|0)+1;a[b+4|0]=0;G=7}else{Qe(-1,186808,Z)}a:do{if((G|0)==7){Of(e);ut(d,1,e)|0;b:do{if((c[X>>2]|0)==4){X=c[_>>2]|0;c:do{if((Qc(X|0,186840)|0)==0){c[b>>2]=0;do{if((c[A>>2]|0)<3){a[E]=0;G=20}else{ut(d,2,g)|0;b=c[m>>2]|0;if((b|0)==5){a[E]=0}else{if((b+ -1|0)>>>0>=2){Qe(-1,186848,M);break}a[E]=1;if((b|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[n>>3]=aa}Of(g);G=20}}while(0);do{if((G|0)==20){if((c[A>>2]|0)<4){a[x]=0}else{ut(d,3,g)|0;b=c[m>>2]|0;if((b|0)==5){a[x]=0}else{if((b+ -1|0)>>>0>=2){Qe(-1,186848,B);break}a[x]=1;if((b|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[k>>3]=aa}Of(g)}if((c[A>>2]|0)<5){a[w]=0;break c}ut(d,4,g)|0;k=c[m>>2]|0;if((k|0)==5){a[w]=0}else{if((k+ -1|0)>>>0>=2){Qe(-1,186848,u);break}a[w]=1;if((k|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[q>>3]=aa}Of(g);break c}}while(0);Of(g);break a}else{if((Qc(X|0,186888)|0)==0){if((c[A>>2]|0)<2){Qe(-1,186760,P);break a}else{c[b>>2]=1;break}}if((Qc(X|0,186896)|0)==0){if((c[A>>2]|0)<3){Qe(-1,186760,U);break a}c[b>>2]=2;ut(d,2,g)|0;d=c[m>>2]|0;do{if((d|0)==5){a[x]=0}else{if((d+ -1|0)>>>0>=2){Qe(-1,186848,J);c[b>>2]=1;break}a[x]=1;if((d|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[k>>3]=aa}}while(0);Of(g);break}if((Qc(X|0,186904)|0)==0){if((c[A>>2]|0)<3){Qe(-1,186760,Q);break a}c[b>>2]=3;ut(d,2,g)|0;k=c[m>>2]|0;do{if((k|0)==5){a[E]=0}else{if((k+ -1|0)>>>0>=2){Qe(-1,186848,H);c[b>>2]=1;break}a[E]=1;if((k|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[n>>3]=aa}}while(0);Of(g);break}if((Qc(X|0,186912)|0)!=0){if((Qc(X|0,186920)|0)==0){if((c[A>>2]|0)<2){Qe(-1,186760,W);break a}else{c[b>>2]=5;break}}if((Qc(X|0,186928)|0)==0){if((c[A>>2]|0)<3){Qe(-1,186760,V);break a}c[b>>2]=6;ut(d,2,g)|0;d=c[m>>2]|0;do{if((d|0)==5){a[x]=0}else{if((d+ -1|0)>>>0>=2){Qe(-1,186848,L);c[b>>2]=1;break}a[x]=1;if((d|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[k>>3]=aa}}while(0);Of(g);break}if((Qc(X|0,186936)|0)!=0){break b}if((c[A>>2]|0)<3){Qe(-1,186760,S);break a}c[b>>2]=7;ut(d,2,g)|0;k=c[m>>2]|0;do{if((k|0)==5){a[E]=0}else{if((k+ -1|0)>>>0>=2){Qe(-1,186848,N);c[b>>2]=1;break}a[E]=1;if((k|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[n>>3]=aa}}while(0);Of(g);break}if((c[A>>2]|0)<6){Qe(-1,186760,R);break a}c[b>>2]=4;if(((c[(ut(d,2,g)|0)>>2]|0)+ -1|0)>>>0>=2){Qe(-1,186848,O);c[b>>2]=1}q=c[m>>2]|0;if((q+ -1|0)>>>0>=2){c[K>>2]=q;c[I+4>>2]=1;c[I+8>>2]=2;Qe(0,188520,I);tc()}if((q|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[n>>3]=aa;Of(g);if(((c[(ut(d,3,g)|0)>>2]|0)+ -1|0)>>>0>=2){Qe(-1,186848,F);c[b>>2]=1}n=c[m>>2]|0;if((n+ -1|0)>>>0>=2){c[D>>2]=n;c[C+4>>2]=1;c[C+8>>2]=2;Qe(0,188520,C);tc()}if((n|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[y>>3]=aa;Of(g);if(((c[(ut(d,4,g)|0)>>2]|0)+ -1|0)>>>0>=2){Qe(-1,186848,z);c[b>>2]=1}n=c[m>>2]|0;if((n+ -1|0)>>>0>=2){c[v>>2]=n;c[t+4>>2]=1;c[t+8>>2]=2;Qe(0,188520,t);tc()}if((n|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[r>>3]=aa;Of(g);if(((c[(ut(d,5,g)|0)>>2]|0)+ -1|0)>>>0>=2){Qe(-1,186848,s);c[b>>2]=1}d=c[m>>2]|0;if((d+ -1|0)>>>0>=2){c[p>>2]=d;c[o+4>>2]=1;c[o+8>>2]=2;Qe(0,188520,o);tc()}if((d|0)==1){aa=+(c[l>>2]|0)}else{aa=+h[l>>3]}h[k>>3]=aa;Of(g)}}while(0);Of(e);a[f]=1;i=j;return}}while(0);Qe(-1,186944,T)}}while(0);Of(e);i=j;return}function wE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;g=i;i=i+8|0;c[b>>2]=186992;f=b+4|0;c[f>>2]=0;b=b+8|0;c[b>>2]=0;h=c[d>>2]|0;if((h|0)==4){h=FW(32)|0;fe(h,c[d+8>>2]|0);c[b>>2]=h;i=e;return}else if((h|0)==3){g=c[d+8>>2]|0;h=FW(32)|0;ie(h,g);c[b>>2]=h;i=e;return}else if((h|0)==6){g=FW(64)|0;vE(g,c[d+8>>2]|0);c[f>>2]=g;if((a[g+59|0]&1)!=0){i=e;return}if((g|0)!=0){HW(g)}c[f>>2]=0;i=e;return}else{Qe(-1,187008,g);i=e;return}}function xE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=186992;d=c[a+4>>2]|0;if((d|0)!=0){HW(d)}d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}ke(d);HW(d);HW(a);i=b;return}function yE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=186992;d=c[a+4>>2]|0;if((d|0)!=0){HW(d)}a=c[a+8>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function zE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;h=i;i=i+8|0;j=i;i=i+8|0;k=j;o=i;i=i+16|0;m=o;c[b>>2]=187048;l=b+4|0;c[l>>2]=0;g=b+8|0;c[g>>2]=0;b=b+12|0;c[b>>2]=0;c[o>>2]=13;n=m+8|0;c[n>>2]=0;c[n+4>>2]=0;do{if(CH(d,m)|0){o=c[o>>2]|0;if((o|0)==3){o=c[n>>2]|0;d=FW(32)|0;ie(d,o);c[l>>2]=d;Of(m);break}else{c[j>>2]=o;c[k+4>>2]=3;Qe(0,188448,k);tc()}}}while(0);j=c[e>>2]|0;if((j|0)==3){o=c[e+8>>2]|0;d=FW(32)|0;ie(d,o);c[b>>2]=d;i=f;return}else if((j|0)==4){d=FW(32)|0;fe(d,c[e+8>>2]|0);c[b>>2]=d;i=f;return}else if((j|0)==6){h=FW(64)|0;vE(h,c[e+8>>2]|0);c[g>>2]=h;if((a[h+59|0]&1)!=0){i=f;return}if((h|0)!=0){HW(h)}c[g>>2]=0;i=f;return}else{Qe(-1,187008,h);i=f;return}}function AE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187048;d=c[a+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+8>>2]|0;if((d|0)!=0){HW(d)}d=c[a+12>>2]|0;if((d|0)==0){HW(a);i=b;return}ke(d);HW(d);HW(a);i=b;return}function BE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187048;d=c[a+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+8>>2]|0;if((d|0)!=0){HW(d)}a=c[a+12>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function CE(a,b){a=a|0;b=b|0;var 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,A=0,B=0,C=0;d=i;x=i;i=i+8|0;h=i;i=i+8|0;g=h;p=i;i=i+8|0;k=p;r=i;i=i+8|0;t=r;v=i;i=i+8|0;w=v;y=i;i=i+8|0;z=y;A=i;i=i+8|0;B=A;s=i;i=i+16|0;e=s;l=i;i=i+16|0;f=l;u=i;i=i+16|0;n=u;c[a>>2]=187072;c[s>>2]=13;o=e+8|0;c[o>>2]=0;c[o+4>>2]=0;c[l>>2]=13;j=f+8|0;c[j>>2]=0;c[j+4>>2]=0;c[u>>2]=13;q=n+8|0;c[q>>2]=0;c[q+4>>2]=0;m=a+4|0;c[m>>2]=0;a=a+8|0;c[a>>2]=0;if((c[b>>2]|0)!=7){i=d;return}C=b+8|0;do{if((c[(Yu(c[C>>2]|0,186584,e,0)|0)>>2]|0)==5){Of(e);A=c[b>>2]|0;if((A|0)!=7){c[y>>2]=A;c[z+4>>2]=7;Qe(0,188448,z);tc()}if((c[(Yu(c[C>>2]|0,187088,e,0)|0)>>2]|0)!=7){Qe(-1,187104,x);break}x=c[s>>2]|0;if((x|0)!=7){c[v>>2]=x;c[w+4>>2]=7;Qe(0,188448,w);tc()}Yu(c[o>>2]|0,186584,f,0)|0;do{if(CH(f,n)|0){u=c[u>>2]|0;if((u|0)==3){b=c[q>>2]|0;C=FW(32)|0;ie(C,b);c[m>>2]=C;Of(n);break}else{c[r>>2]=u;c[t+4>>2]=3;Qe(0,188448,t);tc()}}}while(0);Of(f);m=c[s>>2]|0;if((m|0)!=7){c[p>>2]=m;c[k+4>>2]=7;Qe(0,188448,k);tc()}do{if((c[(Yu(c[o>>2]|0,187096,f,0)|0)>>2]|0)==3){k=c[l>>2]|0;if((k|0)==3){b=c[j>>2]|0;C=FW(32)|0;ie(C,b);c[a>>2]=C;break}else{c[h>>2]=k;c[g+4>>2]=3;Qe(0,188448,g);tc()}}}while(0);Of(f)}else{if(!(CH(e,n)|0)){break}f=c[u>>2]|0;if((f|0)==3){b=c[q>>2]|0;C=FW(32)|0;ie(C,b);c[m>>2]=C;Of(n);break}else{c[A>>2]=f;c[B+4>>2]=3;Qe(0,188448,B);tc()}}}while(0);Of(e);i=d;return}function DE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187072;d=c[a+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}ke(d);HW(d);HW(a);i=b;return}function EE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187072;d=c[a+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}a=c[a+8>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function FE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=i;i=i+8|0;c[b>>2]=187144;b=b+4|0;c[b>>2]=0;if((c[d>>2]|0)!=3){Qe(-1,187168,g);i=f;return}j=c[d+8>>2]|0;d=FW(32)|0;ie(d,j);do{if((e|0)!=0){if((c[e+24>>2]|0)<=0){break}g=d+28|0;j=c[g>>2]|0;h=Kc(j|0,187160)|0;do{if((h|0)!=(c[d+24>>2]|0)){if((a[j+h|0]|0)==47){break}c[b>>2]=d;i=f;return}}while(0);h=FW(32)|0;ie(h,e);c[b>>2]=h;j=a[(c[h+28>>2]|0)+((c[h+24>>2]|0)+ -1)|0]|0;do{if(j<<24>>24==63|j<<24>>24==47){if((a[c[g>>2]|0]|0)==47){re(d,0,1)|0;h=c[b>>2]|0}oe(h,d)|0}else{if((a[c[g>>2]|0]|0)!=47){me(h,47)|0;h=c[b>>2]|0}oe(h,d)|0;if((d|0)!=0){break}i=f;return}}while(0);ke(d);HW(d);i=f;return}}while(0);c[b>>2]=d;i=f;return}function GE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187144;d=c[a+4>>2]|0;if((d|0)==0){HW(a);i=b;return}ke(d);HW(d);HW(a);i=b;return}function HE(a){a=a|0;var b=0;b=i;c[a>>2]=187144;a=c[a+4>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function IE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187200;d=c[a+4>>2]|0;if((d|0)==0){HW(a);i=b;return}ke(d);HW(d);HW(a);i=b;return}function JE(a){a=a|0;var b=0;b=i;c[a>>2]=187200;a=c[a+4>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function KE(a,b){a=a|0;b=b|0;var 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;d=i;g=i;i=i+8|0;h=g;j=i;i=i+8|0;k=j;o=i;i=i+8|0;m=i;i=i+8|0;n=m;s=i;i=i+8|0;r=s;u=i;i=i+8|0;t=u;v=i;i=i+8|0;x=v;l=i;i=i+16|0;e=l;c[a>>2]=187224;p=a+4|0;c[p>>2]=-1;q=a+12|0;c[q>>2]=0;c[l>>2]=13;f=e+8|0;c[f>>2]=0;c[f+4>>2]=0;w=c[b>>2]|0;if((w|0)!=7){c[v>>2]=w;c[x+4>>2]=7;Qe(0,188448,x);tc()}v=b+8|0;do{if((c[(Zu(c[v>>2]|0,187240,e)|0)>>2]|0)==9){w=c[l>>2]|0;if((w|0)==9){u=f;w=c[u+4>>2]|0;x=p;c[x>>2]=c[u>>2];c[x+4>>2]=w;break}else{c[u>>2]=w;c[t+4>>2]=9;Qe(0,188448,t);tc()}}}while(0);Of(e);t=c[b>>2]|0;if((t|0)!=7){c[s>>2]=t;c[r+4>>2]=7;Qe(0,188448,r);tc()}do{if((c[(Yu(c[v>>2]|0,187256,e,0)|0)>>2]|0)==3){r=c[l>>2]|0;if((r|0)==3){w=c[f>>2]|0;x=FW(32)|0;ie(x,w);c[q>>2]=x;break}else{c[m>>2]=r;c[n+4>>2]=3;Qe(0,188448,n);tc()}}}while(0);Of(e);do{if((c[q>>2]|0)==0){if((c[p>>2]|0)!=-1){break}Qe(-1,187264,o)}}while(0);m=c[b>>2]|0;if((m|0)!=7){c[j>>2]=m;c[k+4>>2]=7;Qe(0,188448,k);tc()}if((c[(Yu(c[v>>2]|0,187320,e,0)|0)>>2]|0)!=4){Of(e);i=d;return}j=c[l>>2]|0;if((j|0)!=4){c[g>>2]=j;c[h+4>>2]=4;Qe(0,188448,h);tc()}f=c[f>>2]|0;if((Qc(f|0,187336)|0)==0){c[a+16>>2]=0;Of(e);i=d;return}if((Qc(f|0,187344)|0)==0){c[a+16>>2]=3;Of(e);i=d;return}if((Qc(f|0,187352)|0)==0){c[a+16>>2]=1;Of(e);i=d;return}if((Qc(f|0,187360)|0)!=0){Of(e);i=d;return}c[a+16>>2]=2;Of(e);i=d;return}function LE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187224;d=c[a+12>>2]|0;if((d|0)==0){HW(a);i=b;return}ke(d);HW(d);HW(a);i=b;return}function ME(a){a=a|0;var b=0;b=i;c[a>>2]=187224;a=c[a+12>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function NE(b,d){b=b|0;d=d|0;var e=0,f=0,g=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.0;j=i;g=i;i=i+8|0;e=g;m=i;i=i+8|0;k=m;q=i;i=i+8|0;p=q;u=i;i=i+8|0;v=u;l=i;i=i+16|0;f=l;c[b>>2]=187376;w=b+8|0;h[w>>3]=1.0;t=b+16|0;a[t]=0;s=b+17|0;a[s]=0;n=b+18|0;a[n]=0;b=b+20|0;c[b>>2]=0;if((c[d>>2]|0)!=7){i=j;return}c[l>>2]=13;r=f+8|0;c[r>>2]=0;c[r+4>>2]=0;o=d+8|0;Yu(c[o>>2]|0,187392,f,0)|0;x=c[l>>2]|0;if((x+ -1|0)>>>0<2){if((x|0)==1){y=+(c[r>>2]|0)}else{y=+h[r>>3]}h[w>>3]=y}Of(f);w=c[d>>2]|0;if((w|0)!=7){c[u>>2]=w;c[v+4>>2]=7;Qe(0,188448,v);tc()}Yu(c[o>>2]|0,187400,f,0)|0;if((c[l>>2]|0)==0){a[t]=a[r]&1}Of(f);t=c[d>>2]|0;if((t|0)!=7){c[q>>2]=t;c[p+4>>2]=7;Qe(0,188448,p);tc()}Yu(c[o>>2]|0,187416,f,0)|0;if((c[l>>2]|0)==0){a[s]=a[r]&1}Of(f);p=c[d>>2]|0;if((p|0)!=7){c[m>>2]=p;c[k+4>>2]=7;Qe(0,188448,k);tc()}Yu(c[o>>2]|0,187424,f,0)|0;if((c[l>>2]|0)==0){a[n]=a[r]&1}Of(f);k=c[d>>2]|0;if((k|0)!=7){c[g>>2]=k;c[e+4>>2]=7;Qe(0,188448,e);tc()}Yu(c[o>>2]|0,186648,f,0)|0;c[b>>2]=HG(f)|0;Of(f);i=j;return}function OE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187376;d=c[a+20>>2]|0;if((d|0)==0){HW(a);i=b;return}JG(d);HW(d);HW(a);i=b;return}function PE(a){a=a|0;var b=0;b=i;c[a>>2]=187376;a=c[a+20>>2]|0;if((a|0)==0){i=b;return}JG(a);HW(a);i=b;return}function QE(b,d){b=b|0;d=d|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=i;A=i;i=i+8|0;g=i;i=i+8|0;h=g;l=i;i=i+8|0;m=l;n=i;i=i+8|0;p=n;q=i;i=i+8|0;r=q;u=i;i=i+8|0;t=u;w=i;i=i+8|0;x=w;B=i;i=i+8|0;y=B;F=i;i=i+8|0;D=i;i=i+4096|0;C=i;i=i+16|0;e=C;c[b>>2]=187440;j=b+8|0;c[j>>2]=13;o=b+16|0;c[o>>2]=0;c[o+4>>2]=0;o=b+24|0;c[o>>2]=13;k=b+32|0;c[k>>2]=0;c[k+4>>2]=0;k=b+40|0;c[k>>2]=-1;s=b+44|0;c[s>>2]=0;v=b+48|0;c[v>>2]=0;if((c[d>>2]|0)!=7){i=f;return}c[C>>2]=13;z=e+8|0;c[z>>2]=0;c[z+4>>2]=0;b=d+8|0;a:do{if((c[(Yu(c[b>>2]|0,186672,e,0)|0)>>2]|0)!=5){G=c[C>>2]|0;if((G|0)==8){F=c[z>>2]|0;G=FW(32)|0;ee(G);c[v>>2]=G;fd[c[(c[F>>2]|0)+12>>2]&511](F);while(1){b:do{if(jd[c[(c[F>>2]|0)+88>>2]&511](F)|0){H=sd[c[(c[F>>2]|0)+92>>2]&127](F,4096,D)|0;E=10}else{H=0;while(1){I=jd[c[(c[F>>2]|0)+20>>2]&511](F)|0;if((I|0)==-1){E=10;break b}a[D+H|0]=I;H=H+1|0;if((H|0)>=4096){H=4096;break}}}}while(0);if((E|0)==10){E=0;if((H|0)==0){break a}}ne(G,D,H)|0}}else if((G|0)==3){I=FW(32)|0;ie(I,c[z>>2]|0);c[v>>2]=I;break}else{Qe(-1,187456,F);break}}}while(0);Of(e);D=c[d>>2]|0;if((D|0)!=7){c[B>>2]=D;c[y+4>>2]=7;Qe(0,188448,y);tc()}do{if((c[(Yu(c[b>>2]|0,187512,e,0)|0)>>2]|0)==1){y=c[C>>2]|0;if((y|0)!=1){c[w>>2]=y;c[x+4>>2]=1;Qe(0,188448,x);tc()}w=c[z>>2]|0;c[k>>2]=w;if((c[v>>2]|0)==0&w>>>0>4){c[u>>2]=w;Qe(-1,187520,t);break}t=c[d>>2]|0;if((t|0)!=7){c[q>>2]=t;c[r+4>>2]=7;Qe(0,188448,r);tc()}do{if((c[(Yu(c[b>>2]|0,187584,o,0)|0)>>2]|0)==7){I=FW(232)|0;GG(I,o);c[s>>2]=I}else{q=c[k>>2]|0;if(!((q|0)==4|(q|0)==0)){break}c[n>>2]=q;Qe(-1,187592,p);Of(o)}}while(0);n=c[d>>2]|0;if((n|0)!=7){c[l>>2]=n;c[m+4>>2]=7;Qe(0,188448,m);tc()}if((c[(Zu(c[b>>2]|0,187648,j)|0)>>2]|0)==9){break}k=c[k>>2]|0;if(k>>>0>=5){break}c[g>>2]=k;Qe(-1,187656,h);Of(j)}else{if((c[v>>2]|0)!=0){break}Qe(-1,187712,A)}}while(0);Of(e);i=f;return}function RE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187440;Of(a+24|0);Of(a+8|0);d=c[a+48>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+44>>2]|0;if((d|0)==0){HW(a);i=b;return}FG(d);HW(d);HW(a);i=b;return}function SE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187440;Of(a+24|0);Of(a+8|0);d=c[a+48>>2]|0;if((d|0)!=0){ke(d);HW(d)}a=c[a+44>>2]|0;if((a|0)==0){i=b;return}FG(a);HW(a);i=b;return}function TE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;f=i;i=i+4096|0;c[b>>2]=187776;h=b+4|0;c[h>>2]=0;b=c[d>>2]|0;if((b|0)==8){b=c[d+8>>2]|0;d=FW(32)|0;ee(d);c[h>>2]=d;fd[c[(c[b>>2]|0)+12>>2]&511](b);while(1){a:do{if(jd[c[(c[b>>2]|0)+88>>2]&511](b)|0){h=sd[c[(c[b>>2]|0)+92>>2]&127](b,4096,f)|0;e=8}else{h=0;while(1){j=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((j|0)==-1){e=8;break a}a[f+h|0]=j;h=h+1|0;if((h|0)>=4096){h=4096;break}}}}while(0);if((e|0)==8){e=0;if((h|0)==0){break}}ne(d,f,h)|0}i=g;return}else if((b|0)==3){j=FW(32)|0;ie(j,c[d+8>>2]|0);c[h>>2]=j;i=g;return}else{i=g;return}}function UE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=187776;d=c[a+4>>2]|0;if((d|0)==0){HW(a);i=b;return}ke(d);HW(d);HW(a);i=b;return}function VE(a){a=a|0;var b=0;b=i;c[a>>2]=187776;a=c[a+4>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function WE(b,d){b=b|0;d=d|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;h=i;e=i;i=i+8|0;j=e;m=i;i=i+8|0;k=m;z=i;i=i+8|0;x=i;i=i+8|0;s=i;i=i+8|0;v=i;i=i+8|0;w=v;q=i;i=i+8|0;r=q;o=i;i=i+8|0;p=o;t=i;i=i+8|0;A=t;l=i;i=i+16|0;g=l;u=i;i=i+16|0;y=u;c[b>>2]=187800;c[l>>2]=13;f=g+8|0;c[f>>2]=0;c[f+4>>2]=0;B=FW(16)|0;wo(B);n=b+4|0;c[n>>2]=B;b=b+8|0;a[b]=1;B=c[d>>2]|0;if((B|0)!=7){c[t>>2]=B;c[A+4>>2]=7;Qe(0,188448,A);tc()}t=d+8|0;do{if((c[(Yu(c[t>>2]|0,187816,g,0)|0)>>2]|0)==6){z=c[l>>2]|0;if((z|0)!=6){G=z;H=o;c[H>>2]=G;H=p+4|0;c[H>>2]=6;H=188448;Qe(0,H,p);tc()}B=y+8|0;A=B+4|0;z=0;C=0;a:while(1){D=c[f>>2]|0;if((z|0)>=(c[D+12>>2]|0)){s=32;break}c[u>>2]=13;c[B>>2]=0;c[A>>2]=0;vt(D,z,y)|0;D=c[u>>2]|0;do{if((D|0)==9){if((C|0)==0){Qe(-1,187896,s);C=0;break}else{G=B;F=c[G>>2]|0;G=c[G+4>>2]|0;H=FW(8)|0;E=H;c[E>>2]=0;c[E+4>>2]=0;c[H>>2]=F;c[H+4>>2]=G;yo(c[C+4>>2]|0,H);break}}else if((D|0)==4){if((C|0)!=0){yo(c[n>>2]|0,C);C=c[u>>2]|0;if((C|0)!=4){s=11;break a}}E=c[B>>2]|0;C=FW(8)|0;D=C+4|0;c[D>>2]=0;H=FW(16)|0;wo(H);c[D>>2]=H;if((Qc(E|0,187824)|0)==0){c[C>>2]=0;break}if((Qc(E|0,187832)|0)==0){c[C>>2]=1;break}if((Qc(E|0,187840)|0)==0){c[C>>2]=2;break}c[v>>2]=E;Qe(-1,187848,w);if((C|0)==0){C=0;break}D=c[D>>2]|0;if((D|0)!=0){E=D+8|0;G=c[E>>2]|0;if((G|0)>0){F=0;do{H=c[(c[D>>2]|0)+(F<<2)>>2]|0;if((H|0)!=0){HW(H);G=c[E>>2]|0}F=F+1|0;}while((F|0)<(G|0))}xo(D);HW(D)}HW(C);C=0}else{Qe(-1,187960,x)}}while(0);Of(y);D=c[l>>2]|0;if((D|0)==6){z=z+1|0}else{s=6;break}}if((s|0)==6){H=o;c[H>>2]=D;H=p+4|0;c[H>>2]=6;H=188448;Qe(0,H,p);tc()}else if((s|0)==11){c[q>>2]=C;c[r+4>>2]=4;Qe(0,188448,r);tc()}else if((s|0)==32){if((C|0)==0){break}yo(c[n>>2]|0,C);break}}else{Qe(-1,188e3,z);o=c[n>>2]|0;if((o|0)!=0){xo(o);HW(o)}c[n>>2]=0}}while(0);Of(g);d=c[d>>2]|0;if((d|0)!=7){c[m>>2]=d;c[k+4>>2]=7;Qe(0,188448,k);tc()}if((c[(Yu(c[t>>2]|0,188024,g,0)|0)>>2]|0)!=0){Of(g);i=h;return}k=c[l>>2]|0;if((k|0)!=0){c[e>>2]=k;c[j+4>>2]=0;Qe(0,188448,j);tc()}a[b]=a[f]&1;Of(g);i=h;return}function XE(a){a=a|0;var b=0;b=i;YE(a);HW(a);i=b;return}function YE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;c[a>>2]=187800;a=c[a+4>>2]|0;if((a|0)==0){i=b;return}d=a+8|0;g=c[d>>2]|0;if((g|0)>0){e=0;do{f=c[(c[a>>2]|0)+(e<<2)>>2]|0;if((f|0)!=0){g=c[f+4>>2]|0;if((g|0)!=0){h=g+8|0;j=c[h>>2]|0;if((j|0)>0){k=0;do{l=c[(c[g>>2]|0)+(k<<2)>>2]|0;if((l|0)!=0){HW(l);j=c[h>>2]|0}k=k+1|0;}while((k|0)<(j|0))}xo(g);HW(g)}HW(f);g=c[d>>2]|0}e=e+1|0;}while((e|0)<(g|0))}xo(a);HW(a);i=b;return}function ZE(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=188048;d=c[a+4>>2]|0;if((d|0)==0){HW(a);i=b;return}ke(d);HW(d);HW(a);i=b;return}function _E(a){a=a|0;var b=0;b=i;c[a>>2]=188048;a=c[a+4>>2]|0;if((a|0)==0){i=b;return}ke(a);HW(a);i=b;return}function $E(a){a=a|0;var b=0;b=i;if((c[a+4>>2]|0)!=0){a=1;i=b;return a|0}a=(c[a+8>>2]|0)!=0;i=b;return a|0}function aF(a){a=a|0;i=i;return 0}function bF(a){a=a|0;var b=0;b=i;if((c[a+4>>2]|0)==0){a=0;i=b;return a|0}if((c[a+8>>2]|0)!=0){a=1;i=b;return a|0}a=(c[a+12>>2]|0)!=0;i=b;return a|0}function cF(a){a=a|0;i=i;return 1}function dF(a){a=a|0;i=i;return(c[a+4>>2]|0)!=0|0}function eF(a){a=a|0;i=i;return 2}function fF(a){a=a|0;i=i;return(c[a+4>>2]|0)!=0|0}function gF(a){a=a|0;i=i;return 3}function hF(a){a=a|0;i=i;return(c[a+4>>2]|0)!=0|0}function iF(a){a=a|0;i=i;return 4}function jF(a){a=a|0;var b=0;b=i;if((c[a+4>>2]|0)>-1){a=1;i=b;return a|0}a=(c[a+12>>2]|0)!=0;i=b;return a|0}function kF(a){a=a|0;i=i;return 5}function lF(a){a=a|0;i=i;return-1}function mF(a){a=a|0;i=i;return 6}function nF(a){a=a|0;i=i;return(c[a+20>>2]|0)!=0|0}function oF(a){a=a|0;i=i;return 7}function pF(a){a=a|0;i=i;return(c[a+4>>2]|0)!=0|0}function qF(a){a=a|0;i=i;return 8}function rF(a){a=a|0;i=i;return(c[a+4>>2]|0)!=0|0}function sF(a){a=a|0;i=i;return 9}function tF(a){a=a|0;i=i;return(c[a+4>>2]|0)!=0|0}function uF(a){a=a|0;i=i;return 10}function vF(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;a=i;g=(ue(b,188600,7)|0)==0;f=FW(32)|0;ie(f,b);if(g){re(f,0,7)|0;g=FW(68)|0;Sf(g,f,c,d,e);i=a;return g|0}else{g=FW(68)|0;Sf(g,f,c,d,e);i=a;return g|0}return 0}function wF(a,b){a=a|0;b=b|0;a=i;if((ue(b,188600,7)|0)==0){b=1;i=a;return b|0}b=(nb(c[b+28>>2]|0,188608)|0)==0;i=a;return b|0}function xF(a){a=a|0;i=i;return}function yF(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function zF(b,d){b=b|0;d=d|0;var e=0,f=0,g=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,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.0;e=i;k=i;i=i+16|0;j=k;m=i;i=i+16|0;n=m;q=i;i=i+8|0;p=q;r=i;i=i+8|0;s=r;v=i;i=i+8|0;w=v;y=i;i=i+8|0;z=y;C=i;i=i+8|0;B=C;D=i;i=i+8|0;E=D;G=i;i=i+8|0;F=G;H=i;i=i+8|0;I=H;J=i;i=i+8|0;K=J;L=i;i=i+8|0;M=L;N=i;i=i+8|0;O=N;P=i;i=i+8|0;Q=P;R=i;i=i+16|0;S=R;T=i;i=i+8|0;U=T;W=i;i=i+16|0;V=W;X=i;i=i+8|0;Y=X;$=i;i=i+8|0;aa=$;da=i;i=i+8|0;A=da;t=i;i=i+16|0;f=t;ba=i;i=i+16|0;ca=ba;Z=i;i=i+16|0;_=Z;x=i;i=i+16|0;u=x;l=i;i=i+16|0;g=l;c[t>>2]=13;o=f+8|0;c[o>>2]=0;c[o+4>>2]=0;ea=c[d>>2]|0;if((ea|0)!=7){c[da>>2]=ea;c[A+4>>2]=7;Qe(0,188872,A);tc()}A=d+8|0;do{if((c[(Yu(c[A>>2]|0,188680,f,0)|0)>>2]|0)!=5){da=c[t>>2]|0;if((da|0)==1){c[b>>2]=c[o>>2];break}else if((da|0)!=6){break}ea=c[o>>2]|0;c[ba>>2]=13;da=ca+8|0;c[da>>2]=0;c[da+4>>2]=0;ut(ea,0,ca)|0;if((c[ba>>2]|0)==1){c[b>>2]=c[da>>2]}Of(ca);ut(ea,1,ca)|0;if((c[ba>>2]|0)==1){c[b+4>>2]=c[da>>2]}Of(ca)}}while(0);Of(f);ba=c[d>>2]|0;if((ba|0)!=7){c[$>>2]=ba;c[aa+4>>2]=7;Qe(0,188872,aa);tc()}do{if((c[(Yu(c[A>>2]|0,188688,f,0)|0)>>2]|0)!=5){$=c[t>>2]|0;if(($|0)==1){c[b+8>>2]=c[o>>2];break}else if(($|0)!=6){break}$=c[o>>2]|0;c[Z>>2]=13;aa=_+8|0;c[aa>>2]=0;c[aa+4>>2]=0;ut($,0,_)|0;if((c[Z>>2]|0)==1){c[b+8>>2]=c[aa>>2]}Of(_);ut($,1,_)|0;if((c[Z>>2]|0)==1){c[b+12>>2]=c[aa>>2]}Of(_)}}while(0);Of(f);Z=c[d>>2]|0;if((Z|0)!=7){c[X>>2]=Z;c[Y+4>>2]=7;Qe(0,188872,Y);tc()}if(((c[(Yu(c[A>>2]|0,188704,f,0)|0)>>2]|0)+ -1|0)>>>0<2){X=c[t>>2]|0;if((X+ -1|0)>>>0>=2){c[W>>2]=X;c[V+4>>2]=1;c[V+8>>2]=2;Qe(0,188944,V);tc()}if((X|0)==1){fa=+(c[o>>2]|0)}else{fa=+h[o>>3]}h[b+16>>3]=fa}Of(f);V=c[d>>2]|0;if((V|0)!=7){c[T>>2]=V;c[U+4>>2]=7;Qe(0,188872,U);tc()}if(((c[(Yu(c[A>>2]|0,188712,f,0)|0)>>2]|0)+ -1|0)>>>0<2){T=c[t>>2]|0;if((T+ -1|0)>>>0>=2){c[R>>2]=T;c[S+4>>2]=1;c[S+8>>2]=2;Qe(0,188944,S);tc()}if((T|0)==1){fa=+(c[o>>2]|0)}else{fa=+h[o>>3]}c[b+24>>2]=~~((fa+1.0)*50.0)}Of(f);R=c[d>>2]|0;if((R|0)!=7){c[P>>2]=R;c[Q+4>>2]=7;Qe(0,188872,Q);tc()}do{if((c[(Yu(c[A>>2]|0,188720,f,0)|0)>>2]|0)==0){P=c[t>>2]|0;if((P|0)==0){a[b+28|0]=a[o]&1;break}else{c[N>>2]=P;c[O+4>>2]=0;Qe(0,188872,O);tc()}}}while(0);Of(f);N=c[d>>2]|0;if((N|0)!=7){c[L>>2]=N;c[M+4>>2]=7;Qe(0,188872,M);tc()}do{if((c[(Yu(c[A>>2]|0,188736,f,0)|0)>>2]|0)==0){L=c[t>>2]|0;if((L|0)==0){a[b+29|0]=a[o]&1;break}else{c[J>>2]=L;c[K+4>>2]=0;Qe(0,188872,K);tc()}}}while(0);Of(f);J=c[d>>2]|0;if((J|0)!=7){c[H>>2]=J;c[I+4>>2]=7;Qe(0,188872,I);tc()}do{if((c[(Yu(c[A>>2]|0,188752,f,0)|0)>>2]|0)==4){H=c[t>>2]|0;if((H|0)!=4){c[G>>2]=H;c[F+4>>2]=4;Qe(0,188872,F);tc()}F=c[o>>2]|0;if((Qc(F|0,188760)|0)==0){c[b+32>>2]=0;break}if((Qc(F|0,188768)|0)==0){c[b+32>>2]=1;break}if((Qc(F|0,188776)|0)==0){c[b+32>>2]=2;break}if((Qc(F|0,188784)|0)!=0){break}c[b+32>>2]=3}}while(0);Of(f);F=c[d>>2]|0;if((F|0)!=7){c[D>>2]=F;c[E+4>>2]=7;Qe(0,188872,E);tc()}do{if((c[(Yu(c[A>>2]|0,188800,f,0)|0)>>2]|0)==6){a[b+36|0]=1;D=c[t>>2]|0;if((D|0)!=6){c[C>>2]=D;c[B+4>>2]=6;Qe(0,188872,B);tc()}C=c[o>>2]|0;if((c[C+12>>2]|0)<=1){break}c[x>>2]=13;B=u+8|0;c[B>>2]=0;c[B+4>>2]=0;do{if((c[(ut(C,0,u)|0)>>2]|0)==1){D=c[x>>2]|0;if((D|0)==1){c[b+56>>2]=c[B>>2];break}else{c[y>>2]=D;c[z+4>>2]=1;Qe(0,188872,z);tc()}}}while(0);Of(u);do{if((c[(ut(C,1,u)|0)>>2]|0)==1){x=c[x>>2]|0;if((x|0)==1){c[b+60>>2]=c[B>>2];break}else{c[v>>2]=x;c[w+4>>2]=1;Qe(0,188872,w);tc()}}}while(0);Of(u)}}while(0);Of(f);d=c[d>>2]|0;if((d|0)!=7){c[r>>2]=d;c[s+4>>2]=7;Qe(0,188872,s);tc()}if((c[(Yu(c[A>>2]|0,188808,f,0)|0)>>2]|0)!=6){Of(f);i=e;return}r=c[t>>2]|0;if((r|0)!=6){c[q>>2]=r;c[p+4>>2]=6;Qe(0,188872,p);tc()}p=c[o>>2]|0;if((c[p+12>>2]|0)<=1){Of(f);i=e;return}c[l>>2]=13;o=g+8|0;c[o>>2]=0;c[o+4>>2]=0;if(((c[(ut(p,0,g)|0)>>2]|0)+ -1|0)>>>0<2){q=c[l>>2]|0;if((q+ -1|0)>>>0>=2){c[m>>2]=q;c[n+4>>2]=1;c[n+8>>2]=2;Qe(0,188944,n);tc()}if((q|0)==1){fa=+(c[o>>2]|0)}else{fa=+h[o>>3]}h[b+40>>3]=fa}Of(g);if(((c[(ut(p,1,g)|0)>>2]|0)+ -1|0)>>>0<2){l=c[l>>2]|0;if((l+ -1|0)>>>0>=2){c[k>>2]=l;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,188944,j);tc()}if((l|0)==1){fa=+(c[o>>2]|0)}else{fa=+h[o>>3]}h[b+48>>3]=fa}Of(g);Of(f);i=e;return}function AF(d,e){d=d|0;e=e|0;var f=0,g=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,O=0,P=0.0;f=i;j=i;i=i+8|0;k=j;p=i;i=i+8|0;m=p;r=i;i=i+8|0;s=r;x=i;i=i+16|0;w=x;z=i;i=i+16|0;A=z;C=i;i=i+8|0;D=C;M=i;i=i+8|0;E=i;i=i+8|0;F=E;I=i;i=i+8|0;J=I;O=i;i=i+8|0;t=O;q=i;i=i+16|0;n=q;L=i;i=i+16|0;H=L;B=i;i=i+16|0;v=B;G=d+36|0;c[G>>2]=0;l=d+2|0;b[l>>1]=0;y=d+4|0;c[y>>2]=-1;u=d+8|0;c[u>>2]=-1;g=d+32|0;a[g]=0;c[q>>2]=13;o=n+8|0;c[o>>2]=0;c[o+4>>2]=0;c[L>>2]=13;K=H+8|0;c[K>>2]=0;c[K+4>>2]=0;N=c[e>>2]|0;if((N|0)!=7){c[O>>2]=N;c[t+4>>2]=7;Qe(0,188872,t);tc()}t=e+8|0;if(!(CH(Yu(c[t>>2]|0,188824,n,0)|0,H)|0)){Qe(-1,188832,M);a[d]=0;Of(n);i=f;return}L=c[L>>2]|0;if((L|0)!=3){c[I>>2]=L;c[J+4>>2]=3;Qe(0,188872,J);tc()}N=c[K>>2]|0;O=FW(32)|0;ie(O,N);c[G>>2]=O;Of(H);Of(n);G=c[e>>2]|0;if((G|0)!=7){c[E>>2]=G;c[F+4>>2]=7;Qe(0,188872,F);tc()}do{if((c[(Yu(c[t>>2]|0,188848,n,0)|0)>>2]|0)==6){E=c[q>>2]|0;if((E|0)!=6){c[C>>2]=E;c[D+4>>2]=6;Qe(0,188872,D);tc()}C=c[o>>2]|0;if((c[C+12>>2]|0)<=1){break}c[B>>2]=13;O=v+8|0;c[O>>2]=0;c[O+4>>2]=0;if(((c[(ut(C,0,v)|0)>>2]|0)+ -1|0)>>>0<2){D=ut(C,0,v)|0;B=c[D>>2]|0;if((B+ -1|0)>>>0>=2){c[z>>2]=B;c[A+4>>2]=1;c[A+8>>2]=2;Qe(0,188944,A);tc()}z=D+8|0;if((B|0)==1){P=+(c[z>>2]|0)}else{P=+h[z>>3]}c[y>>2]=~~+R(+(P+.5))}Of(v);if(((c[(ut(C,1,v)|0)>>2]|0)+ -1|0)>>>0<2){z=ut(C,1,v)|0;y=c[z>>2]|0;if((y+ -1|0)>>>0>=2){c[x>>2]=y;c[w+4>>2]=1;c[w+8>>2]=2;Qe(0,188944,w);tc()}w=z+8|0;if((y|0)==1){P=+(c[w>>2]|0)}else{P=+h[w>>3]}c[u>>2]=~~+R(+(P+.5))}Of(v)}}while(0);Of(n);u=c[e>>2]|0;if((u|0)!=7){c[r>>2]=u;c[s+4>>2]=7;Qe(0,188872,s);tc()}do{if((c[(Yu(c[t>>2]|0,188856,n,0)|0)>>2]|0)==1){q=c[q>>2]|0;if((q|0)==1){b[l>>1]=((((c[o>>2]|0)+360|0)%360|0|0)%90|0)*90;break}else{c[p>>2]=q;c[m+4>>2]=1;Qe(0,188872,m);tc()}}}while(0);Of(n);l=d+16|0;e=c[e>>2]|0;if((e|0)!=7){c[j>>2]=e;c[k+4>>2]=7;Qe(0,188872,k);tc()}if((c[(Zu(c[t>>2]|0,188864,l)|0)>>2]|0)==5){i=f;return}j=c[l>>2]|0;if((j|0)==8|(j|0)==9){a[g]=1;i=f;return}else if((j|0)==0){a[g]=a[d+24|0]&1;Of(l);i=f;return}else{Of(l);i=f;return}}function BF(a){a=a|0;var b=0,d=0;b=i;d=c[a+36>>2]|0;if((d|0)!=0){ke(d);HW(d)}Of(a+16|0);i=b;return}function CF(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;c[b+16>>2]=13;f=b+24|0;c[f>>2]=0;c[f+4>>2]=0;c[b+44>>2]=0;c[b+52>>2]=0;a[b+76|0]=0;h[b+80>>3]=.5;h[b+88>>3]=.5;h[b+56>>3]=1.0;c[b+64>>2]=100;a[b+68|0]=0;a[b+69|0]=0;c[b+72>>2]=0;c[b+40>>2]=0;c[b+48>>2]=0;c[b+96>>2]=1;c[b+100>>2]=1;a[b]=1;if((c[d>>2]|0)==7){AF(b,d);i=e;return}else{a[b]=0;i=e;return}}function DF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;c[b+16>>2]=13;g=b+24|0;c[g>>2]=0;c[g+4>>2]=0;g=b+40|0;c[b+44>>2]=0;c[b+52>>2]=0;a[b+76|0]=0;h[b+80>>3]=.5;h[b+88>>3]=.5;h[b+56>>3]=1.0;c[b+64>>2]=100;a[b+68|0]=0;a[b+69|0]=0;c[b+72>>2]=0;c[g>>2]=0;c[b+48>>2]=0;c[b+96>>2]=1;c[b+100>>2]=1;a[b]=1;if((c[d>>2]|0)!=7){a[b]=0;i=f;return}AF(b,d);if((c[e>>2]|0)!=7){i=f;return}zF(g,e);i=f;return}function EF(b,d,e){b=b|0;d=d|0;e=e|0;var 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,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;f=i;g=i;i=i+8|0;h=g;m=i;i=i+8|0;n=m;y=i;i=i+8|0;w=i;i=i+8|0;q=w;z=i;i=i+8|0;x=z;B=i;i=i+8|0;A=B;I=i;i=i+8|0;H=i;i=i+8|0;J=H;E=i;i=i+8|0;F=E;N=i;i=i+8|0;M=N;S=i;i=i+8|0;Q=i;i=i+8|0;R=Q;ba=i;i=i+8|0;T=ba;L=i;i=i+8|0;aa=L;Y=i;i=i+8|0;_=i;i=i+8|0;$=_;ea=i;i=i+8|0;da=i;i=i+8|0;fa=da;Z=i;i=i+16|0;X=Z;U=i;i=i+16|0;k=U;W=i;i=i+16|0;V=W;p=i;i=i+16|0;j=p;P=i;i=i+16|0;O=P;C=i;i=i+16|0;K=C;D=i;i=i+16|0;G=D;r=i;i=i+16|0;v=r;u=i;i=i+16|0;s=u;o=b+8|0;c[o>>2]=13;l=b+16|0;c[l>>2]=0;c[l+4>>2]=0;l=b+24|0;c[l>>2]=13;ca=b+32|0;c[ca>>2]=0;c[ca+4>>2]=0;c[b+40>>2]=e;a[b]=1;ca=FW(16)|0;wo(ca);e=b+4|0;c[e>>2]=ca;c[U>>2]=13;ca=k+8|0;c[ca>>2]=0;c[ca+4>>2]=0;ga=c[d>>2]|0;if((ga|0)!=7){c[da>>2]=ga;c[fa+4>>2]=7;Qe(0,189600,fa);tc()}da=d+8|0;Yu(c[da>>2]|0,189024,k,0)|0;if((c[U>>2]|0)!=6){Qe(-1,189032,ea);Of(k);a[b]=0;i=f;return}ga=V+8|0;fa=ga+4|0;ea=X+8|0;ia=ea+4|0;ha=0;while(1){ja=c[ca>>2]|0;if((ha|0)>=(c[ja+12>>2]|0)){break}c[W>>2]=13;c[ga>>2]=0;c[fa>>2]=0;ut(ja,ha,V)|0;if((c[W>>2]|0)!=7){t=9;break}ja=FW(20)|0;la=c[ga>>2]|0;ka=ja+4|0;c[ka>>2]=0;c[Z>>2]=13;c[ea>>2]=0;c[ia>>2]=0;Yu(la,189512,X,0)|0;if((c[Z>>2]|0)==3){la=FW(32)|0;ie(la,c[ea>>2]|0);c[ka>>2]=la}else{Qe(-1,189520,Y)}Of(X);Of(V);ka=c[U>>2]|0;if((ka|0)!=6){t=14;break}vt(c[ca>>2]|0,ha,V)|0;ka=c[W>>2]|0;if((ka|0)!=9){t=16;break}ma=ga;ka=c[ma+4>>2]|0;la=ja+8|0;c[la>>2]=c[ma>>2];c[la+4>>2]=ka;Of(V);c[ja+16>>2]=0;yo(c[e>>2]|0,ja);ja=c[U>>2]|0;if((ja|0)==6){ha=ha+1|0}else{t=6;break}}if((t|0)==6){c[_>>2]=ja;c[$+4>>2]=6;Qe(0,189600,$);tc()}else if((t|0)==9){Of(V)}else if((t|0)==14){c[L>>2]=ka;c[aa+4>>2]=6;Qe(0,189600,aa);tc()}else if((t|0)==16){c[ba>>2]=ka;c[T+4>>2]=9;Qe(0,189600,T);tc()}c[p>>2]=13;L=j+8|0;c[L>>2]=0;c[L+4>>2]=0;d=c[d>>2]|0;if((d|0)!=7){c[Q>>2]=d;c[R+4>>2]=7;Qe(0,189600,R);tc()}Yu(c[da>>2]|0,189128,j,0)|0;if((c[p>>2]|0)!=7){Qe(-1,189136,S);Of(j);Of(k);a[b]=0;i=f;return}c[P>>2]=13;Q=O+8|0;c[Q>>2]=0;c[Q+4>>2]=0;Yu(c[L>>2]|0,189224,O,0)|0;do{if((c[P>>2]|0)==4){if((Qc(c[Q>>2]|0,189240)|0)!=0){break}Q=c[e>>2]|0;if((c[Q+8>>2]|0)>0){P=0}else{break}do{c[(c[(c[Q>>2]|0)+(P<<2)>>2]|0)+16>>2]=1;P=P+1|0;Q=c[e>>2]|0;}while((P|0)<(c[Q+8>>2]|0))}}while(0);Of(O);c[C>>2]=13;O=K+8|0;c[O>>2]=0;c[O+4>>2]=0;P=c[p>>2]|0;if((P|0)!=7){c[N>>2]=P;c[M+4>>2]=7;Qe(0,189600,M);tc()}Yu(c[L>>2]|0,189248,K,0)|0;a:do{if((c[C>>2]|0)==6){N=G+8|0;P=N+4|0;M=0;b:while(1){Q=c[O>>2]|0;if((M|0)>=(c[Q+12>>2]|0)){break a}c[D>>2]=13;c[N>>2]=0;c[P>>2]=0;vt(Q,M,G)|0;if((c[D>>2]|0)!=9){t=33;break}R=N;S=c[R>>2]|0;R=c[R+4>>2]|0;b=c[e>>2]|0;Q=c[b+8>>2]|0;if((Q|0)<=0){t=39;break}b=c[b>>2]|0;T=0;while(1){d=c[b+(T<<2)>>2]|0;U=d+8|0;if((c[U>>2]|0)==(S|0)){if((c[U+4>>2]|0)==(R|0)){break}}T=T+1|0;if((T|0)>=(Q|0)){t=39;break b}}Of(G);if((d|0)==0){break}c[d+16>>2]=0;Q=c[C>>2]|0;if((Q|0)==6){M=M+1|0}else{t=30;break}}if((t|0)==30){c[E>>2]=Q;c[F+4>>2]=6;Qe(0,189600,F);tc()}else if((t|0)==33){Of(G);break}else if((t|0)==39){c[H>>2]=S;c[J+4>>2]=R;Qe(-1,189368,J);Of(G)}Qe(-1,189256,I)}}while(0);Of(K);c[r>>2]=13;C=v+8|0;c[C>>2]=0;c[C+4>>2]=0;D=c[p>>2]|0;if((D|0)!=7){c[B>>2]=D;c[A+4>>2]=7;Qe(0,189600,A);tc()}Yu(c[L>>2]|0,189240,v,0)|0;c:do{if((c[r>>2]|0)==6){A=s+8|0;B=A+4|0;D=0;d:while(1){E=c[C>>2]|0;if((D|0)>=(c[E+12>>2]|0)){break c}c[u>>2]=13;c[A>>2]=0;c[B>>2]=0;vt(E,D,s)|0;if((c[u>>2]|0)!=9){t=50;break}F=A;E=c[F>>2]|0;F=c[F+4>>2]|0;H=c[e>>2]|0;G=c[H+8>>2]|0;if((G|0)<=0){t=56;break}H=c[H>>2]|0;J=0;while(1){K=c[H+(J<<2)>>2]|0;I=K+8|0;if((c[I>>2]|0)==(E|0)){if((c[I+4>>2]|0)==(F|0)){break}}J=J+1|0;if((J|0)>=(G|0)){t=56;break d}}Of(s);if((K|0)==0){break}c[K+16>>2]=1;E=c[r>>2]|0;if((E|0)==6){D=D+1|0}else{t=47;break}}if((t|0)==47){c[z>>2]=E;c[x+4>>2]=6;Qe(0,189600,x);tc()}else if((t|0)==50){Of(s);break}else if((t|0)==56){c[w>>2]=E;c[q+4>>2]=F;Qe(-1,189368,q);Of(s)}Qe(-1,189296,y)}}while(0);Of(v);q=c[p>>2]|0;if((q|0)!=7){c[m>>2]=q;c[n+4>>2]=7;Qe(0,189600,n);tc()}Yu(c[L>>2]|0,189344,o,0)|0;m=c[p>>2]|0;if((m|0)!=7){c[g>>2]=m;c[h+4>>2]=7;Qe(0,189600,h);tc()}Yu(c[L>>2]|0,189352,l,0)|0;Of(k);Of(j);i=f;return}function FF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;d=i;b=c[a+4>>2]|0;e=b+8|0;g=c[e>>2]|0;if((g|0)>0){f=0;do{h=c[(c[b>>2]|0)+(f<<2)>>2]|0;if((h|0)!=0){g=c[h+4>>2]|0;if((g|0)!=0){ke(g);HW(g)}HW(h);g=c[e>>2]|0}f=f+1|0;}while((f|0)<(g|0))}if((b|0)==0){h=a+8|0;Of(h);h=a+24|0;Of(h);i=d;return}xo(b);HW(b);h=a+8|0;Of(h);h=a+24|0;Of(h);i=d;return}function GF(a,b){a=a|0;b=b|0;var 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;d=i;k=i;i=i+8|0;n=k;q=i;i=i+8|0;p=q;l=i;i=i+8|0;m=l;x=i;i=i+8|0;y=i;i=i+16|0;e=y;u=i;i=i+16|0;f=u;t=i;i=i+16|0;h=t;r=i;i=i+16|0;j=r;c[y>>2]=13;w=e+8|0;c[w>>2]=0;c[w+4>>2]=0;c[u>>2]=13;v=f+8|0;c[v>>2]=0;c[v+4>>2]=0;c[t>>2]=13;o=h+8|0;c[o>>2]=0;c[o+4>>2]=0;c[r>>2]=13;s=j+8|0;c[s>>2]=0;c[s+4>>2]=0;Nf(b,c[a+40>>2]|0,e,0)|0;y=c[y>>2]|0;if((y|0)!=7){c[x>>2]=y;Qe(-1,189408,x);Of(e);y=1;i=d;return y|0}w=c[w>>2]|0;Yu(w,189448,f,0)|0;a:do{if((c[u>>2]|0)==4){u=c[v>>2]|0;if((Qc(u|0,189456)|0)!=0){if((Qc(u|0,189504)|0)!=0){g=1;break}h=c[b>>2]|0;if((h|0)!=9){c[q>>2]=h;c[p+4>>2]=9;Qe(0,189600,p);tc()}h=b+8|0;j=c[h>>2]|0;h=c[h+4>>2]|0;m=c[a+4>>2]|0;l=c[m+8>>2]|0;b:do{if((l|0)>0){m=c[m>>2]|0;p=0;while(1){o=c[m+(p<<2)>>2]|0;a=o+8|0;if((c[a>>2]|0)==(j|0)){if((c[a+4>>2]|0)==(h|0)){break}}p=p+1|0;if((p|0)>=(l|0)){g=33;break b}}if((o|0)==0){break}if((c[o+16>>2]|0)!=1){g=1;break a}}else{g=33}}while(0);if((g|0)==33){c[k>>2]=j;c[n+4>>2]=h;Qe(-1,189368,n)}g=0;break}Yu(w,189464,j,0)|0;Zu(w,189024,h)|0;k=c[t>>2]|0;c:do{if((k|0)==9){n=o;k=c[n>>2]|0;n=c[n+4>>2]|0;o=c[a+4>>2]|0;a=c[o+8>>2]|0;d:do{if((a|0)>0){o=c[o>>2]|0;r=0;while(1){q=c[o+(r<<2)>>2]|0;p=q+8|0;if((c[p>>2]|0)==(k|0)){if((c[p+4>>2]|0)==(n|0)){break}}r=r+1|0;if((r|0)>=(a|0)){g=20;break d}}if((q|0)==0){break}if((c[q+16>>2]|0)==1){g=0;break c}}else{g=20}}while(0);if((g|0)==20){c[l>>2]=k;c[m+4>>2]=n;Qe(-1,189368,m)}g=1}else if((k|0)==6){do{if((c[r>>2]|0)==4){g=c[s>>2]|0;if((Qc(g|0,189472)|0)==0){g=HF(a,c[o>>2]|0)|0;break c}if((Qc(g|0,189480)|0)==0){g=IF(a,c[o>>2]|0)|0;break c}if((Qc(g|0,189488)|0)==0){g=JF(a,c[o>>2]|0)|0;break c}else{if((Qc(g|0,189496)|0)==0){break}else{g=1;break c}}}}while(0);g=KF(a,c[o>>2]|0)|0}else{g=1}}while(0);Of(h);Of(j)}else{g=1}}while(0);Of(f);Of(e);y=g;i=d;return y|0}function HF(a,b){a=a|0;b=b|0;var 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;d=i;g=i;i=i+8|0;h=g;j=i;i=i+16|0;k=j;f=b+12|0;if((c[f>>2]|0)<=0){t=1;i=d;return t|0}l=k+8|0;e=l+4|0;a=a+4|0;n=0;a:while(1){c[j>>2]=13;c[l>>2]=0;c[e>>2]=0;vt(b,n,k)|0;b:do{if((c[j>>2]|0)==9){o=l;p=c[o>>2]|0;o=c[o+4>>2]|0;q=c[a>>2]|0;m=c[q+8>>2]|0;c:do{if((m|0)>0){q=c[q>>2]|0;r=0;while(1){s=c[q+(r<<2)>>2]|0;t=s+8|0;if((c[t>>2]|0)==(p|0)){if((c[t+4>>2]|0)==(o|0)){break}}r=r+1|0;if((r|0)>=(m|0)){break c}}if((s|0)==0){break b}if((c[s+16>>2]|0)==1){f=0;e=13;break a}else{break b}}}while(0);c[g>>2]=p;c[h+4>>2]=o;Qe(-1,189368,h)}}while(0);n=n+1|0;if((n|0)>=(c[f>>2]|0)){f=1;e=13;break}}if((e|0)==13){i=d;return f|0}return 0}function IF(a,b){a=a|0;b=b|0;var 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;d=i;g=i;i=i+8|0;h=g;j=i;i=i+16|0;k=j;f=b+12|0;if((c[f>>2]|0)<=0){t=1;i=d;return t|0}l=k+8|0;e=l+4|0;a=a+4|0;n=0;a:while(1){c[j>>2]=13;c[l>>2]=0;c[e>>2]=0;vt(b,n,k)|0;b:do{if((c[j>>2]|0)==9){o=l;p=c[o>>2]|0;o=c[o+4>>2]|0;q=c[a>>2]|0;m=c[q+8>>2]|0;c:do{if((m|0)>0){q=c[q>>2]|0;r=0;while(1){s=c[q+(r<<2)>>2]|0;t=s+8|0;if((c[t>>2]|0)==(p|0)){if((c[t+4>>2]|0)==(o|0)){break}}r=r+1|0;if((r|0)>=(m|0)){break c}}if((s|0)==0){break b}if((c[s+16>>2]|0)==0){f=0;e=13;break a}else{break b}}}while(0);c[g>>2]=p;c[h+4>>2]=o;Qe(-1,189368,h)}}while(0);n=n+1|0;if((n|0)>=(c[f>>2]|0)){f=1;e=13;break}}if((e|0)==13){i=d;return f|0}return 0}function JF(a,b){a=a|0;b=b|0;var 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;d=i;g=i;i=i+8|0;h=g;j=i;i=i+16|0;k=j;f=b+12|0;if((c[f>>2]|0)<=0){t=0;i=d;return t|0}l=k+8|0;e=l+4|0;a=a+4|0;n=0;a:while(1){c[j>>2]=13;c[l>>2]=0;c[e>>2]=0;vt(b,n,k)|0;b:do{if((c[j>>2]|0)==9){o=l;p=c[o>>2]|0;o=c[o+4>>2]|0;q=c[a>>2]|0;m=c[q+8>>2]|0;c:do{if((m|0)>0){q=c[q>>2]|0;r=0;while(1){s=c[q+(r<<2)>>2]|0;t=s+8|0;if((c[t>>2]|0)==(p|0)){if((c[t+4>>2]|0)==(o|0)){break}}r=r+1|0;if((r|0)>=(m|0)){break c}}if((s|0)==0){break b}if((c[s+16>>2]|0)==1){f=1;e=13;break a}else{break b}}}while(0);c[g>>2]=p;c[h+4>>2]=o;Qe(-1,189368,h)}}while(0);n=n+1|0;if((n|0)>=(c[f>>2]|0)){f=0;e=13;break}}if((e|0)==13){i=d;return f|0}return 0}function KF(a,b){a=a|0;b=b|0;var 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;d=i;g=i;i=i+8|0;h=g;j=i;i=i+16|0;k=j;f=b+12|0;if((c[f>>2]|0)<=0){t=0;i=d;return t|0}l=k+8|0;e=l+4|0;a=a+4|0;n=0;a:while(1){c[j>>2]=13;c[l>>2]=0;c[e>>2]=0;vt(b,n,k)|0;b:do{if((c[j>>2]|0)==9){o=l;p=c[o>>2]|0;o=c[o+4>>2]|0;q=c[a>>2]|0;m=c[q+8>>2]|0;c:do{if((m|0)>0){q=c[q>>2]|0;r=0;while(1){s=c[q+(r<<2)>>2]|0;t=s+8|0;if((c[t>>2]|0)==(p|0)){if((c[t+4>>2]|0)==(o|0)){break}}r=r+1|0;if((r|0)>=(m|0)){break c}}if((s|0)==0){break b}if((c[s+16>>2]|0)==0){f=1;e=13;break a}else{break b}}}while(0);c[g>>2]=p;c[h+4>>2]=o;Qe(-1,189368,h)}}while(0);n=n+1|0;if((n|0)>=(c[f>>2]|0)){f=0;e=13;break}}if((e|0)==13){i=d;return f|0}return 0}function LF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;a=c[a>>2]|0;if((a|0)==0){i=b;return}d=a+8|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[(c[a>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0){MF(g);HW(g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}xo(a);HW(a);i=b;return}function MF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;d=a+68|0;f=c[d>>2]|0;if((f|0)!=0){e=f+8|0;g=c[e>>2]|0;if((g|0)>0){h=0;do{j=c[(c[f>>2]|0)+(h<<2)>>2]|0;if((j|0)!=0){MF(j);HW(j);g=c[e>>2]|0}h=h+1|0;}while((h|0)<(g|0))}xo(f);HW(f);c[d>>2]=0}d=c[a+4>>2]|0;if((d|0)!=0){Fe(d)}d=c[a+12>>2]|0;if((d|0)==0){j=a+16|0;Of(j);j=a+32|0;Of(j);j=a+48|0;Of(j);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);j=a+16|0;Of(j);j=a+32|0;Of(j);j=a+48|0;Of(j);i=b;return}function NF(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,j=0.0,k=0.0;d=+h[b>>3];h[a+8>>3]=d;f=+h[b+8>>3];h[a+16>>3]=f;k=+h[b+16>>3];h[a+24>>3]=k;j=+h[b+24>>3];h[a+32>>3]=j;e=+h[b+32>>3];h[a+40>>3]=e;c=+h[b+40>>3];h[a+48>>3]=c;g=1.0/(d*j-f*k);h[a+56>>3]=j*g;h[a+64>>3]=-0.0-g*f;h[a+72>>3]=-0.0-g*k;h[a+80>>3]=g*d;h[a+88>>3]=g*(k*c-j*e);h[a+96>>3]=g*(f*e-d*c);i=i;return}function OF(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;h[d>>3]=+h[a+88>>3]+(+h[a+56>>3]*b+ +h[a+72>>3]*c);h[e>>3]=+h[a+96>>3]+(+h[a+64>>3]*b+ +h[a+80>>3]*c);i=i;return}function PF(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;c[e>>2]=~~(+h[a+40>>3]+(+h[a+8>>3]*b+ +h[a+24>>3]*d)+.5);c[f>>2]=~~(+h[a+48>>3]+(+h[a+16>>3]*b+ +h[a+32>>3]*d)+.5);i=i;return}function QF(a,b){a=a|0;b=b|0;i=i;return}function RF(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function SF(a,b){a=a|0;b=b|0;i=i;return}function TF(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function UF(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function VF(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return}function WF(a){a=a|0;var b=0,d=0;b=i;a=a+104|0;d=c[a>>2]|0;if((d|0)!=0){ko(d);HW(d)}d=FW(16)|0;jo(d,1);c[a>>2]=d;i=b;return}function XF(a){a=a|0;var b=0;b=a+104|0;a=c[b>>2]|0;c[b>>2]=0;i=i;return a|0}function YF(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=-1;i=i;return}function ZF(a){a=a|0;i=i;return}function _F(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;j=b+8|0;h=b+4|0;a:while(1){l=c[j>>2]|0;if((l|0)<0){l=jd[c[b>>2]&511](c[h>>2]|0)|0}else{c[j>>2]=-1}if((l|0)==-1){k=10;break}else if((l|0)!=37){if((a[190720+l|0]|0)==1){continue}else{break}}while(1){l=c[j>>2]|0;if((l|0)<0){l=jd[c[b>>2]&511](c[h>>2]|0)|0}else{c[j>>2]=-1}if((l|0)==10|(l|0)==13){continue a}else if((l|0)==-1){k=10;break a}}}if((k|0)==10){a[d]=0;m=0;k=0;l=f;c[l>>2]=k;i=g;return m|0}e=e+ -1|0;a[d]=l;b:do{if((l|0)==40){l=1;k=1;while(1){m=c[j>>2]|0;if((m|0)<0){m=jd[c[b>>2]&511](c[h>>2]|0)|0;c[j>>2]=m;if((m|0)==-1){break b}}c[j>>2]=-1;if((k|0)<(e|0)){a[d+k|0]=m;k=k+1|0}if((m|0)==92){l=0;continue}if(l&(m|0)==41){break}else{l=1}}}else if((l|0)==60){k=1;do{l=c[j>>2]|0;if((l|0)<0){l=jd[c[b>>2]&511](c[h>>2]|0)|0;c[j>>2]=l;if((l|0)==-1){break b}}c[j>>2]=-1;do{if((k|0)<(e|0)){if((a[190720+l|0]|0)==1){break}a[d+k|0]=l;k=k+1|0}}while(0);}while((l|0)!=62)}else if((l|0)==91|(l|0)==93){k=1}else{k=1;while(1){l=c[j>>2]|0;if((k|0)>=(e|0)){break}if((l|0)<0){l=jd[c[b>>2]&511](c[h>>2]|0)|0;c[j>>2]=l;if((l|0)==-1){break b}}if((a[190720+l|0]|0)!=0){break b}c[j>>2]=-1;a[d+k|0]=l;k=k+1|0}while(1){if((l|0)<0){l=jd[c[b>>2]&511](c[h>>2]|0)|0;c[j>>2]=l;if((l|0)==-1){break b}}if((a[190720+l|0]|0)!=0){break b}c[j>>2]=-1;l=-1}}}while(0);a[d+k|0]=0;m=1;l=f;c[l>>2]=k;i=g;return m|0}function $F(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=a+8|0;f=c[d>>2]|0;if((f|0)<=0){xo(a);i=b;return}e=0;do{g=c[(c[a>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0){f=c[g>>2]|0;if((f|0)!=0){ke(f);HW(f)}HW(g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0));xo(a);i=b;return}function aG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;j=b+16|0;c[j>>2]=13;h=b+24|0;c[h>>2]=0;c[h+4>>2]=0;h=b+32|0;c[h>>2]=13;k=b+40|0;c[k>>2]=0;c[k+4>>2]=0;c[b>>2]=d;d=b+4|0;c[d>>2]=e;c[b+48>>2]=0;a[b+8|0]=f&1;fE(e,j,-1)|0;fE(c[d>>2]|0,h,-1)|0;i=g;return}function bG(a){a=a|0;var b=0;b=i;Of(a+16|0);Of(a+32|0);a=c[a+4>>2]|0;if((a|0)==0){i=b;return}dE(a);HW(a);i=b;return}function cG(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;l=i;i=i+16|0;k=l;m=k+4|0;c[m>>2]=0;c[k+8>>2]=0;c[l>>2]=m;a=dG(a,b,d,e,f,g,h,k)|0;xn(k,c[k+4>>2]|0);i=j;return a|0}function dG(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;l=i;A=i;i=i+8|0;B=A;q=i;i=i+8|0;r=i;i=i+8|0;s=r;t=i;i=i+8|0;u=i;i=i+8|0;w=i;i=i+8|0;v=w;x=i;i=i+16|0;m=x;c[x>>2]=13;z=m+8|0;c[z>>2]=0;y=z+4|0;c[y>>2]=0;p=b+48|0;n=b+16|0;if((c[p>>2]|0)==2){Of(n);D=b+32|0;Of(D);C=b+4|0;fE(c[C>>2]|0,n,-1)|0;fE(c[C>>2]|0,D,-1)|0;c[p>>2]=0}C=c[n>>2]|0;do{if((C|0)==10){p=b+24|0;D=c[p>>2]|0;if((Qc(D|0,190976)|0)==0){fG(b,-1);If(d,c[b>>2]|0)|0;q=d+8|0;while(1){r=c[n>>2]|0;if((r|0)==10){if((Qc(c[p>>2]|0,190984)|0)==0){break}}else if((r|0)==12){o=11;break}s=dG(b,m,e,f,g,h,j,k)|0;r=c[d>>2]|0;if((r|0)!=6){o=9;break}tt(c[q>>2]|0,s)}if((o|0)==9){c[w>>2]=r;c[v+4>>2]=6;Qe(0,191224,v);tc()}if((o|0)==11){j=c[b+4>>2]|0;if((c[j+16>>2]|0)==8){j=c[j+24>>2]|0;j=jd[c[(c[j>>2]|0)+48>>2]&511](j)|0}else{j=-1}Qe(j,190992,u)}fG(b,-1);i=l;return d|0}if((Qc(D|0,191024)|0)!=0){if((C|0)==1){o=38;break}else{break}}fG(b,h);Jf(d,c[b>>2]|0)|0;v=b+4|0;u=d+8|0;while(1){w=c[n>>2]|0;if((w|0)==10){if((Qc(c[p>>2]|0,191032)|0)==0){break}}else if((w|0)==4){w=Ge(c[p>>2]|0)|0;fG(b,-1);if(((c[n>>2]|0)+ -11|0)>>>0<2){o=26;break}y=dG(b,m,e,f,g,h,j,k)|0;x=c[d>>2]|0;if((x|0)!=7){o=24;break}Tu(c[u>>2]|0,w,y);continue}else if((w|0)==12){o=27;break}w=c[v>>2]|0;if((c[w+16>>2]|0)==8){w=c[w+24>>2]|0;w=jd[c[(c[w>>2]|0)+48>>2]&511](w)|0}else{w=-1}Qe(w,191040,t);fG(b,-1)}if((o|0)==24){c[r>>2]=x;c[s+4>>2]=7;Qe(0,191224,s);tc()}else if((o|0)==26){Fe(w);if((c[n>>2]|0)==12){o=27}}if((o|0)==27){m=c[v>>2]|0;if((c[m+16>>2]|0)==8){m=c[m+24>>2]|0;m=jd[c[(c[m>>2]|0)+48>>2]&511](m)|0}else{m=-1}Qe(m,191080,q)}do{if((a[b+8|0]&1)!=0){if((c[b+32>>2]|0)!=10){break}if((Qc(c[b+40>>2]|0,191112)|0)!=0){break}b=gG(b,d,e,f,g,h,j,k)|0;if((b|0)==0){Of(d);c[u>>2]=0;c[u+4>>2]=0;c[d>>2]=11;i=l;return d|0}else{Lf(d,b)|0;i=l;return d|0}}}while(0);fG(b,-1);i=l;return d|0}else if((C|0)==1){o=38}}while(0);if((o|0)==38){g=b+24|0;j=c[g>>2]|0;fG(b,-1);do{if((c[n>>2]|0)==1){if((c[b+32>>2]|0)!=10){break}if((Qc(c[b+40>>2]|0,191120)|0)!=0){break}C=c[g>>2]|0;D=d+8|0;c[d>>2]=9;c[D>>2]=j;c[D+4>>2]=C;fG(b,-1);fG(b,-1);i=l;return d|0}}while(0);D=d+8|0;c[D+4>>2]=0;c[d>>2]=1;c[D>>2]=j;i=l;return d|0}k=(C|0)==3;if((e|0)==0|k^1){$W(d|0,n|0,16)|0;D=b+24|0;c[D>>2]=0;c[D+4>>2]=0;c[n>>2]=5;fG(b,-1);i=l;return d|0}if(!k){c[A>>2]=C;c[B+4>>2]=3;Qe(0,191224,B);tc()}C=c[b+24>>2]|0;n=FW(32)|0;ee(n);c[z>>2]=0;c[y>>2]=0;c[x>>2]=5;k=FW(316)|0;D=FW(56)|0;Tj(D,c[C+28>>2]|0,0,c[C+24>>2]|0,m);Fu(k,D,e,f,g,h,j);fd[c[(c[k>>2]|0)+12>>2]&511](k);j=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((j|0)!=-1){j=j&255;while(1){me(n,j)|0;j=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((j|0)==-1){break}else{j=j&255}}}if((k|0)!=0){fd[c[(c[k>>2]|0)+4>>2]&511](k)}D=d+8|0;c[D+4>>2]=0;c[d>>2]=3;c[D>>2]=n;fG(b,-1);i=l;return d|0}function eG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;a=dG(a,b,0,0,0,0,0,c)|0;i=d;return a|0}function fG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=a+48|0;f=c[e>>2]|0;do{if((f|0)>0){if((f|0)<2){c[e>>2]=f+1;break}else{c[e>>2]=0;break}}else{if((c[a+32>>2]|0)!=10){break}if((Qc(c[a+40>>2]|0,191216)|0)!=0){break}eE(c[a+4>>2]|0,0)|0;c[e>>2]=1}}while(0);g=a+16|0;Of(g);f=a+32|0;$W(g|0,f|0,16)|0;if((c[e>>2]|0)>0){g=a+40|0;c[g>>2]=0;c[g+4>>2]=0;c[f>>2]=5;i=d;return}else{fE(c[a+4>>2]|0,f,b)|0;i=d;return}}function gG(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;k=i;m=i;i=i+8|0;l=m;u=i;i=i+8|0;z=i;i=i+8|0;A=i;i=i+8|0;s=A;q=i;i=i+16|0;o=q;y=i;i=i+8|0;x=y;c[q>>2]=13;r=o+8|0;c[r>>2]=0;p=r+4|0;c[p>>2]=0;t=a+4|0;gE(c[t>>2]|0);w=c[t>>2]|0;if((c[w+16>>2]|0)==8){w=c[w+24>>2]|0;w=jd[c[(c[w>>2]|0)+48>>2]&511](w)|0}else{w=-1}B=c[b>>2]|0;if((B|0)!=7){c[A>>2]=B;c[s+4>>2]=7;Qe(0,191224,s);tc()}s=b+8|0;Yu(c[s>>2]|0,191128,o,j)|0;if((c[q>>2]|0)==1){z=c[r>>2]|0;Of(o)}else{j=c[t>>2]|0;if((c[j+16>>2]|0)==8){j=c[j+24>>2]|0;j=jd[c[(c[j>>2]|0)+48>>2]&511](j)|0}else{j=-1}Qe(j,191136,z);Of(o);z=0}j=c[a>>2]|0;do{if((j|0)!=0){if(!(mn(j,w,x)|0)){break}z=(c[y>>2]|0)-w|0}}while(0);x=c[t>>2]|0;if((c[x+16>>2]|0)!=8){B=0;i=k;return B|0}x=c[x+24>>2]|0;if((x|0)==0){B=0;i=k;return B|0}x=jd[c[(c[x>>2]|0)+64>>2]&511](x)|0;y=c[t>>2]|0;if((c[y>>2]|0)!=-3){c[y>>2]=-3;y=c[t>>2]|0;w=w+ -1|0}if((c[y+16>>2]|0)==8){B=c[y+24>>2]|0;Gd[c[(c[B>>2]|0)+52>>2]&255](B,w+z|0,0)}fG(a,-1);fG(a,-1);y=a+16|0;do{if((c[y>>2]|0)==10){if((Qc(c[a+24>>2]|0,191176)|0)!=0){v=22;break}fG(a,-1);n=z}else{v=22}}while(0);do{if((v|0)==22){v=c[t>>2]|0;if((c[v+16>>2]|0)==8){v=c[v+24>>2]|0;v=jd[c[(c[v>>2]|0)+48>>2]&511](v)|0}else{v=-1}Qe(v,191192,u);if((c[a>>2]|0)==0){n=z+5e3|0;break}u=a+24|0;while(1){if((c[y>>2]|0)==10){if((Qc(c[u>>2]|0,191176)|0)==0){break}}v=c[a>>2]|0;z=c[t>>2]|0;if((c[z+16>>2]|0)==8){z=c[z+24>>2]|0;z=jd[c[(c[z>>2]|0)+48>>2]&511](z)|0}else{z=-1}if((nn(v,z)|0)!=(g|0)){break}if((c[y>>2]|0)==12){break}fG(a,-1)}a=c[t>>2]|0;if((c[a+16>>2]|0)==8){a=c[a+24>>2]|0;a=jd[c[(c[a>>2]|0)+48>>2]&511](a)|0}else{a=-1}a=a-w|0;if((c[y>>2]|0)!=10){n=a;break}if((Qc(c[u>>2]|0,191176)|0)!=0){n=a;break}c[p>>2]=0;c[q>>2]=1;c[r>>2]=a;p=c[b>>2]|0;if((p|0)==7){Wu(c[s>>2]|0,191128,o);Of(o);n=a;break}else{c[m>>2]=p;c[l+4>>2]=7;Qe(0,191224,l);tc()}}}while(0);l=Cd[c[(c[x>>2]|0)+96>>2]&63](x,w,1,n,b)|0;if((d|0)!=0){B=FW(316)|0;Fu(B,l,d,e,f,g,h);l=B}B=qj(l,b)|0;i=k;return B|0}function hG(a){a=a|0;i=i;return}function iG(a){a=a|0;i=i;return}function jG(a,b){a=a|0;b=b|0;var d=0;d=i;c[a+12>>2]=b;b=b>>>0>1073741823?-1:b<<2;c[a>>2]=GW(b)|0;c[a+4>>2]=GW(b)|0;c[a+8>>2]=-1;i=d;return}function kG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=a+8|0;g=c[a>>2]|0;if((c[d>>2]|0)>=0){e=a+4|0;f=0;while(1){g=c[g+(f<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g)}g=c[(c[e>>2]|0)+(f<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g)}g=c[a>>2]|0;if((f|0)<(c[d>>2]|0)){f=f+1|0}else{break}}}if((g|0)!=0){IW(g)}a=c[a+4>>2]|0;if((a|0)==0){i=b;return}IW(a);i=b;return}function lG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;f=a+8|0;if((c[f>>2]|0)<0){j=0;i=d;return j|0}j=c[c[a>>2]>>2]|0;if(Bd[c[(c[j>>2]|0)+8>>2]&255](j,b)|0){j=c[c[a+4>>2]>>2]|0;i=d;return j|0}if((c[f>>2]|0)<1){j=0;i=d;return j|0}else{g=1}while(1){j=c[(c[a>>2]|0)+(g<<2)>>2]|0;if(Bd[c[(c[j>>2]|0)+8>>2]&255](j,b)|0){break}if((g|0)<(c[f>>2]|0)){g=g+1|0}else{a=0;e=10;break}}if((e|0)==10){i=d;return a|0}j=c[a>>2]|0;f=c[j+(g<<2)>>2]|0;b=a+4|0;e=c[(c[b>>2]|0)+(g<<2)>>2]|0;if((g|0)>0){while(1){h=g+ -1|0;c[j+(g<<2)>>2]=c[j+(h<<2)>>2];j=c[b>>2]|0;c[j+(g<<2)>>2]=c[j+(h<<2)>>2];j=c[a>>2]|0;if((h|0)>0){g=h}else{break}}}c[j>>2]=f;c[c[b>>2]>>2]=e;j=e;i=d;return j|0}function mG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;g=a+8|0;h=c[g>>2]|0;j=h+1|0;f=a+12|0;if((h|0)==((c[f>>2]|0)+ -1|0)){j=c[(c[a>>2]|0)+(h<<2)>>2]|0;if((j|0)!=0){fd[c[(c[j>>2]|0)+4>>2]&511](j);h=c[g>>2]|0}g=c[(c[a+4>>2]|0)+(h<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g)}j=(c[f>>2]|0)+ -1|0}else{c[g>>2]=j}f=a+4|0;if((j|0)<=0){j=a;j=c[j>>2]|0;c[j>>2]=b;j=f;j=c[j>>2]|0;c[j>>2]=d;i=e;return}while(1){g=j+ -1|0;h=c[a>>2]|0;c[h+(j<<2)>>2]=c[h+(g<<2)>>2];h=c[f>>2]|0;c[h+(j<<2)>>2]=c[h+(g<<2)>>2];if((g|0)>0){j=g}else{break}}j=a;j=c[j>>2]|0;c[j>>2]=b;j=f;j=c[j>>2]|0;c[j>>2]=d;i=e;return}function nG(a){a=a|0;i=i;return c[a+12>>2]|0}function oG(a){a=a|0;i=i;return(c[a+8>>2]|0)+1|0}function pG(a,b){a=a|0;b=b|0;i=i;return c[(c[a+4>>2]|0)+(b<<2)>>2]|0}function qG(a,b){a=a|0;b=b|0;i=i;return c[(c[a>>2]|0)+(b<<2)>>2]|0}function rG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=FW(16)|0;c[f+12>>2]=b;b=b>>>0>1073741823?-1:b<<2;c[f>>2]=GW(b)|0;c[f+4>>2]=GW(b)|0;c[f+8>>2]=-1;c[a+4>>2]=f;c[a>>2]=d;i=e;return}function sG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;a=c[a+4>>2]|0;if((a|0)==0){i=b;return}e=a+8|0;g=c[a>>2]|0;if((c[e>>2]|0)>=0){d=a+4|0;f=0;while(1){g=c[g+(f<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g)}g=c[(c[d>>2]|0)+(f<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g)}g=c[a>>2]|0;if((f|0)<(c[e>>2]|0)){f=f+1|0}else{break}}}if((g|0)!=0){IW(g)}d=c[a+4>>2]|0;if((d|0)!=0){IW(d)}HW(a);i=b;return}function tG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;g=i;i=i+16|0;f=g;c[g>>2]=13;g=f+8|0;c[g>>2]=0;c[g+4>>2]=0;g=b+4|0;_m(c[a>>2]|0,c[b>>2]|0,c[g>>2]|0,f,0)|0;d=FW(12)|0;b=c[b>>2]|0;g=c[g>>2]|0;c[d>>2]=191416;c[d+4>>2]=b;c[d+8>>2]=g;g=FW(24)|0;c[g>>2]=191368;b=g+8|0;c[b>>2]=13;c[g+16>>2]=0;c[g+20>>2]=0;Mf(f,b)|0;h=c[a+4>>2]|0;l=h+8|0;j=c[l>>2]|0;k=j+1|0;a=h+12|0;if((j|0)==((c[a>>2]|0)+ -1|0)){k=c[(c[h>>2]|0)+(j<<2)>>2]|0;if((k|0)!=0){fd[c[(c[k>>2]|0)+4>>2]&511](k);j=c[l>>2]|0}k=h+4|0;j=c[(c[k>>2]|0)+(j<<2)>>2]|0;if((j|0)!=0){fd[c[(c[j>>2]|0)+4>>2]&511](j)}j=h;h=k;k=(c[a>>2]|0)+ -1|0}else{c[l>>2]=k;j=h;h=h+4|0}if((k|0)<=0){l=j;l=c[l>>2]|0;c[l>>2]=d;l=h;l=c[l>>2]|0;c[l>>2]=g;Of(f);i=e;return b|0}while(1){a=k+ -1|0;l=c[j>>2]|0;c[l+(k<<2)>>2]=c[l+(a<<2)>>2];l=c[h>>2]|0;c[l+(k<<2)>>2]=c[l+(a<<2)>>2];if((a|0)>0){k=a}else{break}}l=j;l=c[l>>2]|0;c[l>>2]=d;l=h;l=c[l>>2]|0;c[l>>2]=g;Of(f);i=e;return b|0}function uG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;j=i;i=i+16|0;f=j;k=c[b>>2]|0;b=c[b+4>>2]|0;c[j>>2]=191416;c[f+4>>2]=k;c[f+8>>2]=b;a=c[a+4>>2]|0;b=a+8|0;a:do{if((c[b>>2]|0)>=0){k=c[c[a>>2]>>2]|0;if(Bd[c[(c[k>>2]|0)+8>>2]&255](k,f)|0){f=c[c[a+4>>2]>>2]|0}else{if((c[b>>2]|0)<1){break}else{h=1}while(1){k=c[(c[a>>2]|0)+(h<<2)>>2]|0;if(Bd[c[(c[k>>2]|0)+8>>2]&255](k,f)|0){break}if((h|0)<(c[b>>2]|0)){h=h+1|0}else{break a}}k=c[a>>2]|0;b=c[k+(h<<2)>>2]|0;g=a+4|0;f=c[(c[g>>2]|0)+(h<<2)>>2]|0;if((h|0)>0){while(1){j=h+ -1|0;c[k+(h<<2)>>2]=c[k+(j<<2)>>2];k=c[g>>2]|0;c[k+(h<<2)>>2]=c[k+(j<<2)>>2];k=c[a>>2]|0;if((j|0)>0){h=j}else{break}}}c[k>>2]=b;c[c[g>>2]>>2]=f}if((f|0)==0){break}k=Mf(f+8|0,d)|0;i=e;return k|0}}while(0);k=d+8|0;c[k>>2]=0;c[k+4>>2]=0;c[d>>2]=5;k=d;i=e;return k|0}function vG(a){a=a|0;i=i;return}function wG(a){a=a|0;var b=0;b=i;c[a>>2]=191368;Of(a+8|0);i=b;return}function xG(a){a=a|0;var b=0;b=i;c[a>>2]=191368;Of(a+8|0);HW(a);i=b;return}function yG(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function zG(a,b){a=a|0;b=b|0;var d=0;d=i;if((c[b+4>>2]|0)!=(c[a+4>>2]|0)){a=0;i=d;return a|0}a=(c[b+8>>2]|0)==(c[a+8>>2]|0);i=d;return a|0}function AG(a){a=a|0;var b=0;b=i;c[a>>2]=0;bX(a+8|0,0,24)|0;i=b;return}function BG(a,b){a=a|0;b=+b;var d=0,e=0,f=0;e=i;d=c[a>>2]|0;f=a+16|0;do{if((d|0)==0){h[f>>3]=b;h[a+24>>3]=b}else{if(+h[f>>3]>b){h[f>>3]=b}f=a+24|0;if(+h[f>>3]>=b){break}h[f>>3]=b}}while(0);f=a+8|0;h[f>>3]=+h[f>>3]+b;c[a>>2]=d+1;i=e;return}function CG(b,d){b=b|0;d=d|0;var e=0,f=0,g=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,O=0;j=i;f=i;i=i+8|0;e=f;n=i;i=i+8|0;m=n;o=i;i=i+8|0;p=o;q=i;i=i+8|0;r=q;u=i;i=i+8|0;s=u;w=i;i=i+8|0;v=w;y=i;i=i+8|0;x=y;z=i;i=i+8|0;A=z;C=i;i=i+8|0;B=C;D=i;i=i+8|0;E=D;F=i;i=i+8|0;G=F;I=i;i=i+8|0;J=I;M=i;i=i+8|0;L=M;O=i;i=i+8|0;t=O;l=i;i=i+16|0;k=l;K=i;i=i+16|0;H=K;c[l>>2]=13;g=k+8|0;c[g>>2]=0;c[g+4>>2]=0;N=c[d>>2]|0;if((N|0)!=7){c[O>>2]=N;c[t+4>>2]=7;Qe(0,191704,t);tc()}t=d+8|0;do{if((c[(Yu(c[t>>2]|0,191464,k,0)|0)>>2]|0)==6){N=c[l>>2]|0;if((N|0)!=6){c[M>>2]=N;c[L+4>>2]=6;Qe(0,191704,L);tc()}M=c[g>>2]|0;if((c[M+12>>2]|0)<=1){break}c[K>>2]=13;L=H+8|0;c[L>>2]=0;c[L+4>>2]=0;do{if((c[(ut(M,0,H)|0)>>2]|0)==1){N=c[K>>2]|0;if((N|0)==1){c[b+4>>2]=c[L>>2];break}else{c[I>>2]=N;c[J+4>>2]=1;Qe(0,191704,J);tc()}}}while(0);Of(H);do{if((c[(ut(M,1,H)|0)>>2]|0)==1){I=c[K>>2]|0;if((I|0)==1){c[b+8>>2]=c[L>>2];break}else{c[F>>2]=I;c[G+4>>2]=1;Qe(0,191704,G);tc()}}}while(0);Of(H)}}while(0);Of(k);F=c[d>>2]|0;if((F|0)!=7){c[D>>2]=F;c[E+4>>2]=7;Qe(0,191704,E);tc()}do{if((c[(Yu(c[t>>2]|0,191472,k,0)|0)>>2]|0)==1){D=c[l>>2]|0;if((D|0)!=1){c[C>>2]=D;c[B+4>>2]=1;Qe(0,191704,B);tc()}B=c[g>>2]|0;if((B|0)==1){c[b+12>>2]=1;break}else if((B|0)==2){c[b+12>>2]=2;break}else if((B|0)==0){c[b+12>>2]=0;break}else{break}}}while(0);Of(k);B=c[d>>2]|0;if((B|0)!=7){c[z>>2]=B;c[A+4>>2]=7;Qe(0,191704,A);tc()}a:do{if((c[(Yu(c[t>>2]|0,191480,k,0)|0)>>2]|0)==1){z=c[l>>2]|0;if((z|0)!=1){c[y>>2]=z;c[x+4>>2]=1;Qe(0,191704,x);tc()}switch(c[g>>2]|0){case 3:{h[b+16>>3]=0.0;h[b+24>>3]=.5;break a};case 1:{h[b+16>>3]=.5;h[b+24>>3]=0.0;break a};case 6:{h[b+16>>3]=0.0;h[b+24>>3]=1.0;break a};case 5:{h[b+16>>3]=1.0;h[b+24>>3]=.5;break a};case 2:{h[b+16>>3]=1.0;h[b+24>>3]=0.0;break a};case 8:{h[b+16>>3]=1.0;h[b+24>>3]=1.0;break a};case 4:{h[b+16>>3]=.5;h[b+24>>3]=.5;break a};case 7:{h[b+16>>3]=.5;h[b+24>>3]=1.0;break a};case 0:{bX(b+16|0,0,16)|0;break a};default:{break a}}}}while(0);Of(k);x=c[d>>2]|0;if((x|0)!=7){c[w>>2]=x;c[v+4>>2]=7;Qe(0,191704,v);tc()}do{if((c[(Yu(c[t>>2]|0,191488,k,0)|0)>>2]|0)==0){v=c[l>>2]|0;if((v|0)==0){a[b+32|0]=a[g]&1;break}else{c[u>>2]=v;c[s+4>>2]=0;Qe(0,191704,s);tc()}}}while(0);Of(k);s=c[d>>2]|0;if((s|0)!=7){c[q>>2]=s;c[r+4>>2]=7;Qe(0,191704,r);tc()}do{if((c[(Yu(c[t>>2]|0,191496,k,0)|0)>>2]|0)==0){q=c[l>>2]|0;if((q|0)==0){a[b+33|0]=a[g]&1;break}else{c[o>>2]=q;c[p+4>>2]=0;Qe(0,191704,p);tc()}}}while(0);Of(k);d=c[d>>2]|0;if((d|0)!=7){c[n>>2]=d;c[m+4>>2]=7;Qe(0,191704,m);tc()}if((c[(Yu(c[t>>2]|0,191504,k,0)|0)>>2]|0)!=1){Of(k);i=j;return}l=c[l>>2]|0;if((l|0)!=1){c[f>>2]=l;c[e+4>>2]=1;Qe(0,191704,e);tc()}a[b+34|0]=(c[g>>2]|0)!=0|0;Of(k);i=j;return}function DG(b,d){b=b|0;d=d|0;var e=0,f=0,g=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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0;f=i;g=i;i=i+16|0;j=g;m=i;i=i+8|0;l=m;o=i;i=i+8|0;p=o;q=i;i=i+8|0;r=q;x=i;i=i+16|0;w=x;y=i;i=i+8|0;A=y;C=i;i=i+8|0;B=C;F=i;i=i+8|0;E=F;G=i;i=i+8|0;H=G;J=i;i=i+8|0;K=J;M=i;i=i+8|0;L=M;O=i;i=i+8|0;N=O;Q=i;i=i+8|0;P=Q;R=i;i=i+8|0;S=R;T=i;i=i+8|0;U=T;W=i;i=i+8|0;V=W;n=i;i=i+16|0;e=n;I=i;i=i+16|0;v=I;D=i;i=i+16|0;u=D;z=i;i=i+16|0;s=z;c[n>>2]=13;k=e+8|0;c[k>>2]=0;c[k+4>>2]=0;t=c[d>>2]|0;if((t|0)!=7){c[W>>2]=t;c[V+4>>2]=7;Qe(0,191704,V);tc()}t=d+8|0;do{if((c[(Yu(c[t>>2]|0,191512,e,0)|0)>>2]|0)==1){V=c[n>>2]|0;if((V|0)==1){c[b+4>>2]=c[k>>2];break}else{c[T>>2]=V;c[U+4>>2]=1;Qe(0,191704,U);tc()}}}while(0);Of(e);T=c[d>>2]|0;if((T|0)!=7){c[R>>2]=T;c[S+4>>2]=7;Qe(0,191704,S);tc()}do{if((c[(Yu(c[t>>2]|0,191520,e,0)|0)>>2]|0)==0){R=c[n>>2]|0;if((R|0)==0){a[b+56|0]=a[k]&1;break}else{c[Q>>2]=R;c[P+4>>2]=0;Qe(0,191704,P);tc()}}}while(0);Of(e);P=c[d>>2]|0;if((P|0)!=7){c[O>>2]=P;c[N+4>>2]=7;Qe(0,191704,N);tc()}a:do{if((c[(Yu(c[t>>2]|0,191528,e,0)|0)>>2]|0)==1){N=c[n>>2]|0;if((N|0)!=1){c[M>>2]=N;c[L+4>>2]=1;Qe(0,191704,L);tc()}switch(c[k>>2]|0){case 1:{c[b+8>>2]=1;break a};case 4:{c[b+8>>2]=4;break a};case 0:{c[b+8>>2]=0;break a};case 3:{c[b+8>>2]=3;break a};case 2:{c[b+8>>2]=2;break a};case 5:{c[b+8>>2]=5;break a};default:{break a}}}}while(0);Of(e);L=c[d>>2]|0;if((L|0)!=7){c[J>>2]=L;c[K+4>>2]=7;Qe(0,191704,K);tc()}if((c[(Yu(c[t>>2]|0,191464,e,0)|0)>>2]|0)==7){c[I>>2]=13;L=v+8|0;c[L>>2]=0;c[L+4>>2]=0;c[D>>2]=13;K=u+8|0;c[K>>2]=0;c[K+4>>2]=0;c[z>>2]=13;J=s+8|0;c[J>>2]=0;c[J+4>>2]=0;M=c[n>>2]|0;if((M|0)!=7){c[G>>2]=M;c[H+4>>2]=7;Qe(0,191704,H);tc()}do{if((c[(Yu(c[k>>2]|0,191536,v,0)|0)>>2]|0)==4){G=c[I>>2]|0;if((G|0)!=4){c[F>>2]=G;c[E+4>>2]=4;Qe(0,191704,E);tc()}E=c[L>>2]|0;if((Qc(E|0,191528)|0)==0){c[b>>2]=-1;break}if((Qc(E|0,191488)|0)!=0){break}E=c[n>>2]|0;if((E|0)!=7){c[C>>2]=E;c[B+4>>2]=7;Qe(0,191704,B);tc()}if((c[(Yu(c[k>>2]|0,191488,u,0)|0)>>2]|0)==7){B=c[D>>2]|0;if((B|0)!=7){c[y>>2]=B;c[A+4>>2]=7;Qe(0,191704,A);tc()}if(((c[(Yu(c[K>>2]|0,191512,s,0)|0)>>2]|0)+ -1|0)>>>0<2){y=c[z>>2]|0;if((y+ -1|0)>>>0>=2){c[x>>2]=y;c[w+4>>2]=1;c[w+8>>2]=2;Qe(0,191776,w);tc()}if((y|0)==1){X=+(c[J>>2]|0)}else{X=+h[J>>3]}c[b>>2]=~~X>>>0}Of(s)}Of(u)}}while(0);Of(v)}Of(e);s=c[d>>2]|0;if((s|0)!=7){c[q>>2]=s;c[r+4>>2]=7;Qe(0,191704,r);tc()}do{if((c[(Yu(c[t>>2]|0,191544,e,0)|0)>>2]|0)==0){q=c[n>>2]|0;if((q|0)==0){a[b+12|0]=a[k]&1;break}else{c[o>>2]=q;c[p+4>>2]=0;Qe(0,191704,p);tc()}}}while(0);Of(e);o=c[d>>2]|0;if((o|0)!=7){c[m>>2]=o;c[l+4>>2]=7;Qe(0,191704,l);tc()}if(((c[(Yu(c[t>>2]|0,191552,e,0)|0)>>2]|0)+ -1|0)>>>0>=2){Of(e);i=f;return}l=c[n>>2]|0;if((l+ -1|0)>>>0>=2){c[g>>2]=l;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,191776,j);tc()}if((l|0)==1){X=+(c[k>>2]|0)}else{X=+h[k>>3]}h[b+16>>3]=X;Of(e);i=f;return}function EG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=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.0;f=i;e=i;i=i+8|0;d=e;l=i;i=i+16|0;o=l;p=i;i=i+8|0;q=p;t=i;i=i+16|0;u=t;x=i;i=i+16|0;w=x;z=i;i=i+16|0;y=z;A=i;i=i+8|0;B=A;D=i;i=i+8|0;C=D;E=i;i=i+8|0;F=E;H=i;i=i+8|0;G=H;r=i;i=i+16|0;k=r;v=i;i=i+16|0;s=v;j=i;i=i+16|0;g=j;c[r>>2]=13;m=k+8|0;c[m>>2]=0;c[m+4>>2]=0;n=c[b>>2]|0;if((n|0)!=7){c[H>>2]=n;c[G+4>>2]=7;Qe(0,191704,G);tc()}n=b+8|0;do{if((c[(Yu(c[n>>2]|0,191560,k,0)|0)>>2]|0)==1){G=c[r>>2]|0;if((G|0)!=1){c[E>>2]=G;c[F+4>>2]=1;Qe(0,191704,F);tc()}E=c[m>>2]|0;if((E|0)==3){c[a+64>>2]=3;break}else if((E|0)==2){c[a+64>>2]=2;break}else if((E|0)==1){c[a+64>>2]=1;break}else if((E|0)==0){c[a+64>>2]=0;break}else{break}}}while(0);Of(k);E=c[b>>2]|0;if((E|0)!=7){c[D>>2]=E;c[C+4>>2]=7;Qe(0,191704,C);tc()}if((c[(Yu(c[n>>2]|0,191568,k,0)|0)>>2]|0)==6){C=c[r>>2]|0;if((C|0)!=6){c[A>>2]=C;c[B+4>>2]=6;Qe(0,191704,B);tc()}B=c[m>>2]|0;c[v>>2]=13;A=s+8|0;c[A>>2]=0;c[A+4>>2]=0;ut(B,0,s)|0;C=c[v>>2]|0;if((C+ -1|0)>>>0>=2){c[z>>2]=C;c[y+4>>2]=1;c[y+8>>2]=2;Qe(0,191776,y);tc()}if((C|0)==1){I=+(c[A>>2]|0)}else{I=+h[A>>3]}h[a+24>>3]=I;Of(s);ut(B,1,s)|0;y=c[v>>2]|0;if((y+ -1|0)>>>0>=2){c[x>>2]=y;c[w+4>>2]=1;c[w+8>>2]=2;Qe(0,191776,w);tc()}if((y|0)==1){I=+(c[A>>2]|0)}else{I=+h[A>>3]}h[a+32>>3]=I;Of(s);ut(B,2,s)|0;v=c[v>>2]|0;if((v+ -1|0)>>>0>=2){c[t>>2]=v;c[u+4>>2]=1;c[u+8>>2]=2;Qe(0,191776,u);tc()}if((v|0)==1){I=+(c[A>>2]|0)}else{I=+h[A>>3]}h[a+40>>3]=I;Of(s)}Of(k);s=c[b>>2]|0;if((s|0)!=7){c[p>>2]=s;c[q+4>>2]=7;Qe(0,191704,q);tc()}if(((c[(Yu(c[n>>2]|0,191576,k,0)|0)>>2]|0)+ -1|0)>>>0<2){p=c[r>>2]|0;if((p+ -1|0)>>>0>=2){c[l>>2]=p;c[o+4>>2]=1;c[o+8>>2]=2;Qe(0,191776,o);tc()}if((p|0)==1){I=+(c[m>>2]|0)}else{I=+h[m>>3]}h[a+48>>3]=I}Of(k);k=a+64|0;if((c[k>>2]|0)!=0){i=f;return}c[j>>2]=13;H=g+8|0;c[H>>2]=0;c[H+4>>2]=0;b=c[b>>2]|0;if((b|0)!=7){c[e>>2]=b;c[d+4>>2]=7;Qe(0,191704,d);tc()}if((c[(Yu(c[n>>2]|0,191528,g,0)|0)>>2]|0)==7){CG(k,g)}Of(g);i=f;return}function FG(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a+228>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+220>>2]|0;if((d|0)!=0){ke(d);HW(d)}a=a+224|0;d=c[a>>2]|0;if((d|0)==0){i=b;return}e=d+4|0;d=(c[e>>2]|0)+ -1|0;c[e>>2]=d;if((d|0)!=0){i=b;return}a=c[a>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function GG(b,d){b=b|0;d=d|0;var e=0,f=0,g=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,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;g=i;m=i;i=i+8|0;j=m;n=i;i=i+8|0;p=n;s=i;i=i+8|0;r=s;D=i;i=i+8|0;u=i;i=i+8|0;v=u;x=i;i=i+8|0;y=x;A=i;i=i+8|0;z=A;ha=i;i=i+8|0;E=i;i=i+8|0;F=E;K=i;i=i+8|0;L=K;da=i;i=i+8|0;N=i;i=i+8|0;M=N;U=i;i=i+8|0;R=U;W=i;i=i+8|0;X=W;Z=i;i=i+8|0;_=Z;$=i;i=i+8|0;aa=$;ca=i;i=i+8|0;ba=ca;ea=i;i=i+8|0;ga=ea;ja=i;i=i+8|0;ka=ja;la=i;i=i+8|0;ma=la;ia=i;i=i+16|0;I=ia;q=i;i=i+16|0;f=q;J=i;i=i+16|0;G=J;V=i;i=i+16|0;Q=V;T=i;i=i+16|0;P=T;B=i;i=i+16|0;w=B;t=i;i=i+16|0;l=t;o=b+8|0;c[b+72>>2]=3;c[b+76>>2]=-1;c[b+80>>2]=-1;c[b+84>>2]=0;h[b+88>>3]=.5;h[b+96>>3]=.5;a[b+104|0]=1;a[b+105|0]=1;a[b+106|0]=1;c[b+12>>2]=100;c[b+16>>2]=5;a[b+20|0]=1;h[b+24>>3]=1.0;h[b+56>>3]=1.0;a[b+64|0]=0;c[o>>2]=0;k=b+112|0;c[b+176>>2]=3;c[b+180>>2]=-1;c[b+184>>2]=-1;c[b+188>>2]=0;h[b+192>>3]=.5;h[b+200>>3]=.5;a[b+208|0]=1;a[b+209|0]=1;a[b+210|0]=1;c[b+116>>2]=100;c[b+120>>2]=5;a[b+124|0]=1;h[b+128>>3]=1.0;h[b+160>>3]=1.0;a[b+168|0]=0;c[k>>2]=0;c[ia>>2]=13;fa=I+8|0;c[fa>>2]=0;c[fa+4>>2]=0;c[q>>2]=13;e=f+8|0;c[e>>2]=0;c[e+4>>2]=0;a[b]=1;Y=b+228|0;c[Y>>2]=0;H=b+220|0;c[H>>2]=0;S=b+216|0;a[S]=0;O=b+224|0;c[O>>2]=0;C=c[d>>2]|0;if((C|0)!=7){c[la>>2]=C;c[ma+4>>2]=7;Qe(0,191704,ma);tc()}C=d+8|0;if((c[(Yu(c[C>>2]|0,191520,f,0)|0)>>2]|0)==7){la=c[q>>2]|0;if((la|0)!=7){c[ja>>2]=la;c[ka+4>>2]=7;Qe(0,191704,ka);tc()}do{if((c[(Yu(c[e>>2]|0,191536,I,0)|0)>>2]|0)==4){ha=c[ia>>2]|0;if((ha|0)!=4){c[ea>>2]=ha;c[ga+4>>2]=4;Qe(0,191704,ga);tc()}if((Qc(c[fa>>2]|0,191584)|0)!=0){break}c[J>>2]=13;ea=G+8|0;c[ea>>2]=0;c[ea+4>>2]=0;c[V>>2]=13;fa=Q+8|0;c[fa>>2]=0;c[fa+4>>2]=0;ga=c[q>>2]|0;if((ga|0)!=7){c[ca>>2]=ga;c[ba+4>>2]=7;Qe(0,191704,ba);tc()}if((c[(Yu(c[e>>2]|0,191464,G,0)|0)>>2]|0)==7){ba=c[J>>2]|0;if((ba|0)!=7){c[$>>2]=ba;c[aa+4>>2]=7;Qe(0,191704,aa);tc()}do{if((c[(Yu(c[ea>>2]|0,191528,Q,0)|0)>>2]|0)==3){$=c[V>>2]|0;if(($|0)==3){la=c[fa>>2]|0;ma=FW(32)|0;ie(ma,la);c[Y>>2]=ma;break}else{c[Z>>2]=$;c[_+4>>2]=3;Qe(0,191704,_);tc()}}}while(0);Of(Q);Y=c[J>>2]|0;if((Y|0)!=7){c[W>>2]=Y;c[X+4>>2]=7;Qe(0,191704,X);tc()}if((c[(Yu(c[ea>>2]|0,191592,Q,0)|0)>>2]|0)==7){c[T>>2]=13;W=P+8|0;c[W>>2]=0;c[W+4>>2]=0;V=c[V>>2]|0;if((V|0)!=7){c[U>>2]=V;c[R+4>>2]=7;Qe(0,191704,R);tc()}do{if((c[(Yu(c[fa>>2]|0,191528,P,0)|0)>>2]|0)==8){a[S]=1;R=c[T>>2]|0;if((R|0)==8){ma=c[W>>2]|0;c[O>>2]=ma;ma=ma+4|0;c[ma>>2]=(c[ma>>2]|0)+1;break}else{c[N>>2]=R;c[M+4>>2]=8;Qe(0,191704,M);tc()}}}while(0);Of(P)}Of(Q)}else{Qe(-1,191600,da);a[b]=0}Of(G);M=c[q>>2]|0;if((M|0)!=7){c[K>>2]=M;c[L+4>>2]=7;Qe(0,191704,L);tc()}do{if((c[(Yu(c[e>>2]|0,191624,G,0)|0)>>2]|0)==3){J=c[J>>2]|0;if((J|0)==3){la=c[ea>>2]|0;ma=FW(32)|0;ie(ma,la);c[H>>2]=ma;break}else{c[E>>2]=J;c[F+4>>2]=3;Qe(0,191704,F);tc()}}}while(0);Of(G)}else{Qe(-1,191632,ha);a[b]=0}}while(0);Of(I);E=1}else{E=0}Of(f);if((a[b]&1)==0){i=g;return}F=c[d>>2]|0;if((F|0)!=7){c[A>>2]=F;c[z+4>>2]=7;Qe(0,191704,z);tc()}do{if((c[(Yu(c[C>>2]|0,191480,f,0)|0)>>2]|0)==7){c[B>>2]=13;z=w+8|0;c[z>>2]=0;c[z+4>>2]=0;z=c[q>>2]|0;if((z|0)!=7){c[x>>2]=z;c[y+4>>2]=7;Qe(0,191704,y);tc()}if((c[(Yu(c[e>>2]|0,191656,w,0)|0)>>2]|0)==7){DG(o,w)}Of(w);x=c[q>>2]|0;if((x|0)!=7){c[u>>2]=x;c[v+4>>2]=7;Qe(0,191704,v);tc()}if((c[(Yu(c[e>>2]|0,191664,w,0)|0)>>2]|0)==7){DG(k,w)}Of(w)}else{if(!E){break}Qe(-1,191672,D);a[b]=0}}while(0);Of(f);u=c[d>>2]|0;if((u|0)!=7){c[s>>2]=u;c[r+4>>2]=7;Qe(0,191704,r);tc()}if((c[(Yu(c[C>>2]|0,191696,f,0)|0)>>2]|0)==7){c[t>>2]=13;r=l+8|0;c[r>>2]=0;c[r+4>>2]=0;r=c[q>>2]|0;if((r|0)!=7){c[n>>2]=r;c[p+4>>2]=7;Qe(0,191704,p);tc()}if((c[(Yu(c[e>>2]|0,191656,l,0)|0)>>2]|0)==7){EG(o,l)}Of(l);n=c[q>>2]|0;if((n|0)!=7){c[m>>2]=n;c[j+4>>2]=7;Qe(0,191704,j);tc()}if((c[(Yu(c[e>>2]|0,191664,l,0)|0)>>2]|0)==7){EG(k,l)}Of(l)}Of(f);i=g;return}function HG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=i;i=i+16|0;e=d;if((c[a>>2]|0)!=8){f=0;i=b;return f|0}f=c[a+8>>2]|0;f=jd[c[(c[f>>2]|0)+72>>2]&511](f)|0;if((f|0)==0){f=0;i=b;return f|0}c[d>>2]=13;g=e+8|0;c[g>>2]=0;c[g+4>>2]=0;Yu(f,191856,e,0)|0;if(((c[d>>2]|0)+ -1|0)>>>0>=2){g=0;i=b;return g|0}g=FW(40)|0;IG(g,a,1);i=b;return g|0}function IG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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.0;e=i;n=i;i=i+8|0;o=n;s=i;i=i+8|0;r=s;g=i;i=i+16|0;f=g;p=i;i=i+16|0;m=p;q=FW(16)|0;c[a>>2]=q;c[q+8>>2]=0;c[q+12>>2]=0;c[q>>2]=5;Mf(b,q)|0;q=a+8|0;c[q>>2]=0;j=a+16|0;h[j>>3]=0.0;k=a+24|0;c[k>>2]=1;l=a+28|0;c[l>>2]=8;b=a+32|0;c[b>>2]=0;if(!d){i=e;return}c[g>>2]=13;d=f+8|0;c[d>>2]=0;c[d+4>>2]=0;t=c[a>>2]|0;u=c[t>>2]|0;if((u|0)!=8){c[s>>2]=u;c[r+4>>2]=8;Qe(0,191928,r);tc()}r=c[t+8>>2]|0;r=jd[c[(c[r>>2]|0)+72>>2]&511](r)|0;Yu(r,191864,f,0)|0;do{if((c[g>>2]|0)==5){c[a+4>>2]=0}else{c[p>>2]=13;s=m+8|0;c[s>>2]=0;c[s+4>>2]=0;c[a+4>>2]=1;if(!(CH(f,m)|0)){break}p=c[p>>2]|0;if((p|0)==3){t=c[s>>2]|0;u=FW(32)|0;ie(u,t);c[q>>2]=u;Of(m);break}else{c[n>>2]=p;c[o+4>>2]=3;Qe(0,191928,o);tc()}}}while(0);Of(f);Yu(r,191856,f,0)|0;m=c[g>>2]|0;if((m+ -1|0)>>>0<2){if((m|0)==1){v=+(c[d>>2]|0)}else{v=+h[d>>3]}h[j>>3]=v}Of(f);Yu(r,191872,f,0)|0;if((c[g>>2]|0)==1){c[k>>2]=c[d>>2]}Of(f);Yu(r,191880,f,0)|0;if((c[g>>2]|0)==1){c[l>>2]=c[d>>2]}Of(f);Yu(r,191888,f,0)|0;do{if((c[g>>2]|0)==4){g=c[d>>2]|0;if((Qc(191896,g|0)|0)==0){c[b>>2]=0;break}if((Qc(191904,g|0)|0)==0){c[b>>2]=1;break}if((Qc(191912,g|0)|0)==0){c[b>>2]=2;break}if((Qc(191920,g|0)|0)!=0){break}c[b>>2]=3}}while(0);Of(f);i=e;return}function JG(a){a=a|0;var b=0,d=0;b=i;d=c[a+8>>2]|0;if((d|0)!=0){ke(d);HW(d)}Of(c[a>>2]|0);a=c[a>>2]|0;if((a|0)==0){i=b;return}HW(a);i=b;return}function KG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;a=i;b=i;i=i+8192|0;e=i;i=i+16|0;Vt(e,d,0);d=c[q>>2]|0;f=0;do{g=Ta(b|0,1,8192,d|0)|0;Xt(e,b,8192)|0;f=g+f|0;}while((g|0)==8192);i=a;return f|0}function LG(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function MG(a){a=a|0;i=i;return}function NG(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function OG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=192104;c[b+8>>2]=d;c[b+4>>2]=d;c[b+12>>2]=e;a[b+16|0]=f&1;i=i;return}function PG(b){b=b|0;var d=0;d=i;c[b>>2]=192104;if((a[b+16|0]&1)==0){HW(b);i=d;return}Fe(c[b+4>>2]|0);HW(b);i=d;return}function QG(b){b=b|0;var d=0;d=i;c[b>>2]=192104;if((a[b+16|0]&1)==0){i=d;return}Fe(c[b+4>>2]|0);i=d;return}function RG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;f=i;i=i+8|0;h=i;i=i+8|0;g=i;i=i+8|0;e=yc(a|0,192112)|0;if((e|0)==0){c[g>>2]=a;Qe(-1,192120,g);h=0;i=d;return h|0}if((jc(e|0,0,2)|0)!=0){c[h>>2]=a;Qe(-1,192144,h);mc(e|0)|0;h=0;i=d;return h|0}g=jb(e|0)|0;if((jc(e|0,0,0)|0)!=0){c[f>>2]=a;Qe(-1,192176,f);mc(e|0)|0;h=0;i=d;return h|0}a=we(g)|0;if((Ta(a|0,1,g|0,e|0)|0)==(g|0)){mc(e|0)|0;c[b>>2]=g;h=a;i=d;return h|0}else{Fe(a);mc(e|0)|0;h=0;i=d;return h|0}return 0}function SG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;g=i;do{if((e|0)>=0){if((c[b+12>>2]|0)<=(e|0)){break}e=d[(c[b+8>>2]|0)+e|0]|0;i=g;return e|0}}while(0);a[f]=0;e=0;i=g;return e|0}function TG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;do{if((e|0)>=0){h=e+1|0;if((h|0)>=(c[b+12>>2]|0)){break}f=c[b+8>>2]|0;b=(d[f+e|0]|0)<<8;f=b|(d[f+h|0]|0);h=(b&32768|0)==0?f:f|-65536;i=g;return h|0}}while(0);a[f]=0;h=0;i=g;return h|0}function UG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;do{if((e|0)>=0){h=e+1|0;if((h|0)>=(c[b+12>>2]|0)){break}b=c[b+8>>2]|0;h=(d[b+e|0]|0)<<8|(d[b+h|0]|0);i=g;return h|0}}while(0);a[f]=0;h=0;i=g;return h|0}function VG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;do{if((e|0)>=0){h=e+3|0;if((h|0)>=(c[b+12>>2]|0)){break}b=c[b+8>>2]|0;h=(((d[b+e|0]|0)<<8|(d[b+(e+1)|0]|0))<<8|(d[b+(e+2)|0]|0))<<8|(d[b+h|0]|0);i=g;return h|0}}while(0);a[f]=0;h=0;i=g;return h|0}function WG(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;do{if((e|0)>=0){if((f+e|0)>(c[b+12>>2]|0)){break}if((f|0)<=0){j=0;i=h;return j|0}b=c[b+8>>2]|0;g=0;j=0;while(1){j=d[b+(g+e)|0]|0|j<<8;g=g+1|0;if((g|0)<(f|0)){}else{break}}i=h;return j|0}}while(0);a[g]=0;j=0;i=h;return j|0}function XG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((d|b|0)<=-1){a=0;i=e;return a|0}a=(d+b|0)<=(c[a+12>>2]|0);i=e;return a|0}function YG(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;e=FW(32)|0;OG(e,b,d,0);c[e>>2]=201656;c[e+20>>2]=0;c[e+24>>2]=0;a[e+28|0]=0;i=f;return e|0}function ZG(b){b=b|0;var d=0,e=0,f=0;d=i;e=i;i=i+8|0;b=RG(b,e)|0;if((b|0)==0){b=0;i=d;return b|0}f=FW(32)|0;OG(f,b,c[e>>2]|0,1);c[f>>2]=201656;c[f+20>>2]=0;c[f+24>>2]=0;a[f+28|0]=0;b=f;i=d;return b|0}function _G(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=201656;d=c[a+20>>2]|0;if((d|0)!=0){Fe(d)}d=a+24|0;e=c[d>>2]|0;if((e|0)==0|(e|0)==193784){QG(a);HW(a);i=b;return}else{f=0}do{Fe(c[e+(f<<2)>>2]|0);f=f+1|0;e=c[d>>2]|0}while((f|0)<256);Fe(e);QG(a);HW(a);i=b;return}function $G(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=201656;d=c[a+20>>2]|0;if((d|0)!=0){Fe(d)}d=a+24|0;e=c[d>>2]|0;if((e|0)==0|(e|0)==193784){QG(a);i=b;return}else{f=0}do{Fe(c[e+(f<<2)>>2]|0);f=f+1|0;e=c[d>>2]|0}while((f|0)<256);Fe(e);QG(a);i=b;return}function aH(b){b=b|0;var d=0;d=i;if((a[b+28|0]&1)==0){bH(b)}i=d;return c[b+20>>2]|0}function bH(b){b=b|0;var 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;j=i;h=i;i=i+8|0;g=i;i=i+8|0;f=i;i=i+256|0;e=i;i=i+8|0;o=b+8|0;s=c[o>>2]|0;p=b+24|0;if((s|0)==0){x=b+28|0;a[x]=1;i=j;return}l=b+20|0;m=f+255|0;n=f+9|0;k=b+12|0;d=1;a:while(1){do{if((c[l>>2]|0)==0){if((vc(s|0,201704,9)|0)!=0){if((c[p>>2]|0)==0){q=18;break}else{q=76;break}}hX(f|0,s|0,255)|0;a[m]=0;r=Fb(n|0,47)|0;do{if((r|0)!=0){r=Mb(r+1|0,201720,e|0)|0;if((r|0)==0){break}c[l>>2]=Ge(r)|0}}while(0);r=(c[o>>2]|0)+(c[k>>2]|0)|0;b:do{if(r>>>0>s>>>0){do{x=a[s]|0;if(x<<24>>24==10|x<<24>>24==13){break b}s=s+1|0;}while(s>>>0>>0)}}while(0);if(s>>>0>>0){s=(a[s]|0)==13?s+1|0:s}if(s>>>0>>0){s=(a[s]|0)==10?s+1|0:s}s=s>>>0>>0?s:0}else{if((c[p>>2]|0)==0){q=18}else{q=86;break a}}}while(0);c:do{if((q|0)==18){q=0;if((vc(s|0,201664,30)|0)==0){c[p>>2]=193784;break}if((vc(s|0,201728,19)|0)!=0){q=76;break}r=ye(256,4)|0;c[p>>2]=r;t=0;while(1){c[r+(t<<2)>>2]=0;t=t+1|0;if((t|0)>=256){break}r=c[p>>2]|0}r=c[o>>2]|0;u=c[k>>2]|0;t=r+u|0;d:do{if(t>>>0>s>>>0){do{x=a[s]|0;if(x<<24>>24==10|x<<24>>24==13){break d}s=s+1|0;}while(s>>>0>>0)}}while(0);if(s>>>0>>0){s=(a[s]|0)==13?s+1|0:s}if(s>>>0>>0){s=(a[s]|0)==10?s+1|0:s}if((s|0)==0|s>>>0>=t>>>0){q=86;break a}else{t=r;r=0}while(1){t=t+u|0;e:do{if(t>>>0>s>>>0){u=s;do{x=a[u]|0;if(x<<24>>24==10|x<<24>>24==13){break e}u=u+1|0;}while(u>>>0>>0)}else{u=s}}while(0);if(u>>>0>>0){u=(a[u]|0)==13?u+1|0:u}if(u>>>0>>0){u=(a[u]|0)==10?u+1|0:u}t=u>>>0>>0?u:0;if((t|0)==0){break c}u=t-s|0;if((u|0)>255){Qe(-1,201752,g);u=255}hX(f|0,s|0,u|0)|0;a[f+u|0]=0;u=f;while(1){x=a[u]|0;if(!(x<<24>>24==9|x<<24>>24==32)){break}u=u+1|0}f:do{if((vc(u|0,201832,3)|0)==0){v=u+3|0;while(1){w=a[v]|0;if(!(w<<24>>24==9|w<<24>>24==32)){x=v;break}v=v+1|0}while(1){u=x+1|0;if((w+ -48<<24>>24&255)>=10){break}w=a[u]|0;x=u}if(w<<24>>24==0){s=t;break}a[x]=0;v=ec(v|0)|0;a[x]=w;do{if((v|0)==8&w<<24>>24==35){w=a[u]|0;if((w+ -48<<24>>24&255)<8){v=0}else{v=0;break}while(1){v=(v<<3)+ -48+(w<<24>>24)|0;u=u+1|0;w=a[u]|0;if((w+ -48<<24>>24&255)<8){}else{q=55;break}}}else{u=x;q=55}}while(0);if((q|0)==55){q=0;if(v>>>0>=256){s=t;break}}while(1){if(w<<24>>24==47){break}else if(!(w<<24>>24==9|w<<24>>24==32)){s=t;break f}x=u+1|0;w=a[x]|0;u=x}w=u+1|0;u=w;while(1){x=a[u]|0;if(x<<24>>24==9|x<<24>>24==32|x<<24>>24==0){break}u=u+1|0}a[u]=0;w=Ge(w)|0;c[(c[p>>2]|0)+(v<<2)>>2]=w;a[u]=x;while(1){if(!(x<<24>>24==9|x<<24>>24==32)){break}w=u+1|0;x=a[w]|0;u=w}if((vc(u|0,201840,3)|0)!=0){Qe(-1,201848,h);s=t;break}u=u+3|0;g:while(1){switch(a[u]|0){case 13:case 10:case 9:case 32:{break};case 0:{s=t;break f};default:{break g}}u=u+1|0}s=s+(u-f)|0}else{if((Mb(f|0,201888,e|0)|0)==0){s=t;break}u=Mb(0,201720,e|0)|0;if((u|0)==0){s=t;break}if((Qc(u|0,201696)|0)==0){break c}else{s=t}}}while(0);if((r|0)>298|(s|0)==0){break c}u=c[k>>2]|0;t=c[o>>2]|0;r=r+1|0}}}while(0);if((q|0)==76){q=0;r=(c[o>>2]|0)+(c[k>>2]|0)|0;h:do{if(r>>>0>s>>>0){do{x=a[s]|0;if(x<<24>>24==10|x<<24>>24==13){break h}s=s+1|0;}while(s>>>0>>0)}}while(0);if(s>>>0>>0){s=(a[s]|0)==13?s+1|0:s}if(s>>>0>>0){s=(a[s]|0)==10?s+1|0:s}s=s>>>0>>0?s:0}if((d|0)>99|(s|0)==0){q=86;break}d=d+1|0}if((q|0)==86){x=b+28|0;a[x]=1;i=j;return}}function cH(b){b=b|0;var d=0;d=i;if((a[b+28|0]&1)==0){bH(b)}i=d;return c[b+24>>2]|0}function dH(b){b=b|0;var c=0;c=i;Vb(b|0,0)|0;a[b+16|0]=1;i=c;return}function eH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0.0;d=i;g=b+8|0;if((a[b+16|0]&1)!=0){Vb(g|0,0)|0}e=c[b+4>>2]|0;h=b+12|0;f=c[h>>2]|0;if((e|0)>(f|0)){f=f+1e6|0;c[h>>2]=f;h=(c[g>>2]|0)+ -1|0;c[g>>2]=h;g=h}else{g=c[g>>2]|0}j=+(f-e|0)/1.0e6+ +(g-(c[b>>2]|0)|0);i=d;return+(j<0.0?0.0:j)}function fH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;k=i;i=i+8|0;h=i;i=i+8|0;g=i;i=i+8|0;j=i;i=i+8|0;if((FL(j)|0)!=0){k=0;i=e;return k|0}f=FW(12)|0;j=c[j>>2]|0;a[f]=b&1;a[f+1|0]=d&1;c[f+4>>2]=j;qK(j,k,h,g);b=c[k>>2]|0;do{if((b|0)>2){g=1}else{if((b|0)!=2){g=0;break}h=c[h>>2]|0;if((h|0)>1){g=1;break}if((h|0)!=1){g=0;break}g=(c[g>>2]|0)>7|0}}while(0);a[f+8|0]=g;k=f;i=e;return k|0}function gH(a){a=a|0;var b=0;b=i;GL(c[a+4>>2]|0)|0;i=b;return}function hH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;a=nH(a,b,c,d)|0;i=e;return a|0}function iH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;a=nH(a,b,c,d)|0;i=e;return a|0}function jH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;a=nH(a,b,c,d)|0;i=e;return a|0}function kH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=i;i=i+8|0;h=g;do{if((a[b+8|0]&1)==0){if((a[e]&1)==0){j=Tn(c[e+8>>2]|0,c[e+12>>2]|0)|0}else{j=Vn(c[(c[e+4>>2]|0)+28>>2]|0)|0}if((j|0)==0){c[g>>2]=0;h=0;g=0;break}else{k=_n(j,h)|0;fd[c[(c[j>>2]|0)+4>>2]&511](j);h=c[g>>2]|0;g=k;break}}else{c[g>>2]=0;h=0;g=0}}while(0);b=oH(b,d,e,g,h)|0;if((b|0)!=0){i=f;return b|0}Fe(g);i=f;return b|0}function lH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=i;i=i+8|0;j=g;c[g>>2]=0;do{if((a[b+8|0]&1)==0){if((a[e]&1)==0){h=Cn(c[e+8>>2]|0,c[e+12>>2]|0,0)|0}else{h=Dn(c[(c[e+4>>2]|0)+28>>2]|0,0)|0}if((h|0)==0){h=0;break}if((a[h+64|0]&1)==0){j=0}else{j=Mn(h,j)|0}fd[c[(c[h>>2]|0)+4>>2]&511](h);h=j}else{h=0}}while(0);b=oH(b,d,e,h,c[g>>2]|0)|0;if((b|0)!=0){i=f;return b|0}Fe(h);i=f;return b|0}function mH(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=i;a=pH(a,b,c,d,e,f)|0;i=g;return a|0}function nH(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;j=i;i=i+8|0;l=j;k=c[d+4>>2]|0;do{if((a[f]&1)==0){if((NJ(k,c[f+8>>2]|0,c[f+12>>2]|0,0,l)|0)==0){break}else{d=0}i=h;return d|0}else{if((LJ(k,c[(c[f+4>>2]|0)+28>>2]|0,0,l)|0)==0){break}else{d=0}i=h;return d|0}}while(0);k=ye(256,4)|0;l=0;do{m=k+(l<<1)|0;b[m>>1]=0;n=c[g+(l<<2)>>2]|0;if((n|0)!=0){b[m>>1]=gK(c[j>>2]|0,n)|0}l=l+1|0;}while((l|0)<256);n=FW(40)|0;m=c[j>>2]|0;Wp(n,e,f);c[n>>2]=201936;c[n+20>>2]=d;c[n+24>>2]=m;c[n+28>>2]=k;c[n+32>>2]=256;a[n+36|0]=0;i=h;return n|0}function oH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;j=i;i=i+8|0;k=j;l=c[b+4>>2]|0;do{if((a[e]&1)==0){if((NJ(l,c[e+8>>2]|0,c[e+12>>2]|0,0,k)|0)==0){break}else{d=0}i=h;return d|0}else{if((LJ(l,c[(c[e+4>>2]|0)+28>>2]|0,0,k)|0)==0){break}else{d=0}i=h;return d|0}}while(0);l=FW(40)|0;k=c[j>>2]|0;Wp(l,d,e);c[l>>2]=201936;c[l+20>>2]=b;c[l+24>>2]=k;c[l+28>>2]=f;c[l+32>>2]=g;a[l+36|0]=0;g=l;i=h;return g|0}function pH(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;m=i;i=i+8|0;k=m;l=c[b+4>>2]|0;do{if((a[e]&1)==0){if((NJ(l,c[e+8>>2]|0,c[e+12>>2]|0,h,k)|0)==0){break}else{e=0}i=j;return e|0}else{if((LJ(l,c[(c[e+4>>2]|0)+28>>2]|0,h,k)|0)==0){break}else{e=0}i=j;return e|0}}while(0);h=FW(40)|0;m=c[m>>2]|0;Wp(h,d,e);c[h>>2]=201936;c[h+20>>2]=b;c[h+24>>2]=m;c[h+28>>2]=f;c[h+32>>2]=g;a[h+36|0]=1;i=j;return h|0}function qH(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=201936;d=c[a+24>>2]|0;if((d|0)!=0){SJ(d)|0}d=c[a+28>>2]|0;if((d|0)==0){Yp(a);HW(a);i=b;return}Fe(d);Yp(a);HW(a);i=b;return}function rH(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=201936;d=c[a+24>>2]|0;if((d|0)!=0){SJ(d)|0}d=c[a+28>>2]|0;if((d|0)==0){Yp(a);i=b;return}Fe(d);Yp(a);i=b;return}function sH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;d=FW(184)|0;LI(d,a,b,c);uH(d);i=e;return d|0}function tH(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var j=0;j=i;c[b>>2]=202e3;c[b+4>>2]=d;_p(d);h[b+8>>3]=+h[e>>3];h[b+16>>3]=+h[e+8>>3];h[b+24>>3]=+h[e+16>>3];h[b+32>>3]=+h[e+24>>3];h[b+40>>3]=+h[f>>3];h[b+48>>3]=+h[f+8>>3];h[b+56>>3]=+h[f+16>>3];h[b+64>>3]=+h[f+24>>3];a[b+72|0]=g&1;bX(b+76|0,0,24)|0;i=j;return}function uH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=(c[b+84>>2]|0)+3-(c[b+76>>2]|0)|0;c[b+100>>2]=e;f=(c[b+88>>2]|0)-(c[b+80>>2]|0)+3|0;c[b+104>>2]=f;if((a[b+72|0]&1)==0){g=da(e+7>>3,f)|0;c[b+108>>2]=g}else{g=da(e,f)|0;c[b+108>>2]=g}e=b+116|0;c[e>>2]=8;do{if((g|0)<65){c[b+112>>2]=32;h=256}else{if((g|0)<129){c[b+112>>2]=16;h=128;break}if((g|0)<257){c[b+112>>2]=8;h=64;break}if((g|0)<513){c[b+112>>2]=4;h=32;break}f=b+112|0;if((g|0)<1025){c[f>>2]=2;h=16;break}else{c[f>>2]=1;h=8;break}}}while(0);f=b+112|0;j=ze(h,g)|0;c[b+92>>2]=j;if((j|0)==0){c[e>>2]=0;i=d;return}g=ye(da(c[e>>2]|0,c[f>>2]|0)|0,28)|0;b=b+96|0;c[b>>2]=g;h=c[e>>2]|0;if((da(h,c[f>>2]|0)|0)>0){j=0}else{i=d;return}while(1){c[g+(j*28|0)+8>>2]=h+ -1&j;j=j+1|0;h=c[e>>2]|0;if((j|0)>=(da(h,c[f>>2]|0)|0)){break}g=c[b>>2]|0}i=d;return}function vH(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=202e3;$p(c[a+4>>2]|0);d=c[a+92>>2]|0;if((d|0)!=0){Fe(d)}d=c[a+96>>2]|0;if((d|0)==0){HW(a);i=b;return}Fe(d);HW(a);i=b;return}function wH(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=202e3;$p(c[a+4>>2]|0);d=c[a+92>>2]|0;if((d|0)!=0){Fe(d)}a=c[a+96>>2]|0;if((a|0)==0){i=b;return}Fe(a);i=b;return}function xH(d,e,f,g,h,j,k,l,m){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var 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;n=i;q=i;i=i+32|0;r=q;s=d+72|0;if((a[s]&1)==0){o=3}else{if((c[d+104>>2]|0)>50){o=3}}if((o|0)==3){f=0;g=0}o=d+116|0;w=c[o>>2]|0;p=da((c[d+112>>2]|0)+ -1&e,w)|0;a:do{if((w|0)>0){t=d+96|0;x=c[t>>2]|0;u=0;b:while(1){v=u+p|0;do{if((c[x+(v*28|0)+8>>2]|0)<0){if((c[x+(v*28|0)>>2]|0)!=(e|0)){break}if((b[x+(v*28|0)+4>>1]|0)!=(f|0)){break}if((b[x+(v*28|0)+6>>1]|0)==(g|0)){break b}}}while(0);u=u+1|0;if((u|0)>=(w|0)){break a}}c[h>>2]=c[x+(v*28|0)+12>>2];e=h+4|0;c[e>>2]=c[(c[t>>2]|0)+(v*28|0)+16>>2];r=h+8|0;c[r>>2]=c[(c[t>>2]|0)+(v*28|0)+20>>2];q=h+12|0;c[q>>2]=c[(c[t>>2]|0)+(v*28|0)+24>>2];g=c[o>>2]|0;if((g|0)>0){f=0;do{do{if((f|0)!=(u|0)){A=c[t>>2]|0;w=A+((f+p|0)*28|0)+8|0;x=c[w>>2]|0;if((x&2147483647)>>>0>=(c[A+(v*28|0)+8>>2]&2147483647)>>>0){break}c[w>>2]=x+1;g=c[o>>2]|0}}while(0);f=f+1|0;}while((f|0)<(g|0))}c[(c[t>>2]|0)+(v*28|0)+8>>2]=-2147483648;a[h+16|0]=a[s]&1;c[h+20>>2]=(c[d+92>>2]|0)+(da(c[d+108>>2]|0,v)|0);a[h+24|0]=0;z=j-(c[h>>2]|0)|0;A=k-(c[e>>2]|0)|0;c[m>>2]=Jp(l,z,A,z+ -1+(c[r>>2]|0)|0,A+ -1+(c[q>>2]|0)|0)|0;A=1;i=n;return A|0}}while(0);if(!(Fd[c[(c[d>>2]|0)+12>>2]&7](d,e,f,g,r,j,k,l,m)|0)){A=0;i=n;return A|0}if((c[m>>2]|0)==1){a[h+24|0]=0;if((a[r+24|0]&1)==0){A=1;i=n;return A|0}Fe(c[r+20>>2]|0);A=1;i=n;return A|0}j=r+8|0;m=c[j>>2]|0;do{if((m|0)<=(c[d+100>>2]|0)){k=r+12|0;l=c[k>>2]|0;if((l|0)>(c[d+104>>2]|0)){break}if((a[s]&1)==0){m=m+7>>3}s=da(m,l)|0;v=c[o>>2]|0;if((v|0)==0){$W(h|0,q|0,28)|0;A=1;i=n;return A|0}if((v|0)>0){l=d+96|0;m=f&65535;t=g&65535;f=r+4|0;g=d+92|0;u=d+108|0;d=r+20|0;w=0;z=0;do{y=w+p|0;x=(c[l>>2]|0)+(y*28|0)+8|0;A=c[x>>2]|0;if((A&2147483647|0)==(v+ -1|0)){c[x>>2]=-2147483648;c[(c[l>>2]|0)+(y*28|0)>>2]=e;b[(c[l>>2]|0)+(y*28|0)+4>>1]=m;b[(c[l>>2]|0)+(y*28|0)+6>>1]=t;c[(c[l>>2]|0)+(y*28|0)+12>>2]=c[q>>2];c[(c[l>>2]|0)+(y*28|0)+16>>2]=c[f>>2];c[(c[l>>2]|0)+(y*28|0)+20>>2]=c[j>>2];c[(c[l>>2]|0)+(y*28|0)+24>>2]=c[k>>2];z=(c[g>>2]|0)+(da(c[u>>2]|0,y)|0)|0;$W(z|0,c[d>>2]|0,s|0)|0}else{c[x>>2]=A+1}w=w+1|0;v=c[o>>2]|0;}while((w|0)<(v|0))}else{z=0}$W(h|0,q|0,28)|0;c[h+20>>2]=z;a[h+24|0]=0;if((a[r+24|0]&1)==0){A=1;i=n;return A|0}Fe(c[r+20>>2]|0);A=1;i=n;return A|0}}while(0);$W(h|0,q|0,28)|0;A=1;i=n;return A|0}function yH(a,b){a=a|0;b=b|0;i=i;return -1.0}function zH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;f=b+4|0;c[f>>2]=e;h=ye(e,4)|0;c[b>>2]=h;a:do{if((c[f>>2]|0)>0){j=0;while(1){c[h+(j<<2)>>2]=0;j=j+1|0;if((j|0)>=(c[f>>2]|0)){break a}h=c[b>>2]|0}}}while(0);if((e|0)>0){j=0}else{i=g;return}do{h=d+(j*12|0)|0;m=c[h>>2]|0;k=a[m]|0;if(k<<24>>24==0){l=0}else{l=0;while(1){l=(l*17|0)+(k&255)|0;m=m+1|0;k=a[m]|0;if(k<<24>>24==0){break}else{}}}m=(l>>>0)%((c[f>>2]|0)>>>0)|0;c[d+(j*12|0)+8>>2]=c[(c[b>>2]|0)+(m<<2)>>2];c[(c[b>>2]|0)+(m<<2)>>2]=h;j=j+1|0;}while((j|0)<(e|0));i=g;return}function AH(a){a=a|0;var b=0;b=i;Fe(c[a>>2]|0);i=b;return}function BH(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;h=i;j=a[e]|0;if(j<<24>>24==0){l=0}else{l=0;k=e;while(1){l=(l*17|0)+(j&255)|0;k=k+1|0;j=a[k]|0;if(j<<24>>24==0){break}else{}}}d=c[(c[d>>2]|0)+(((l>>>0)%((c[d+4>>2]|0)>>>0)|0)<<2)>>2]|0;if((d|0)==0){l=0;i=h;return l|0}while(1){if((Qc(c[d>>2]|0,e|0)|0)==0){break}d=c[d+8>>2]|0;if((d|0)==0){f=0;g=7;break}}if((g|0)==7){i=h;return f|0}b[f>>1]=b[d+4>>1]|0;l=1;i=h;return l|0}function CH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;g=i;l=i;i=i+8|0;d=i;i=i+8|0;e=i;i=i+8|0;f=e;j=i;i=i+8|0;h=j;k=c[a>>2]|0;if((k|0)==3){Mf(a,b)|0;l=1;i=g;return l|0}else if((k|0)==7){k=a+8|0;if((c[(Yu(c[k>>2]|0,202048,b,0)|0)>>2]|0)==3){l=1;i=g;return l|0}Of(b);l=c[a>>2]|0;if((l|0)!=7){c[j>>2]=l;c[h+4>>2]=7;Qe(0,202096,h);tc()}if((c[(Yu(c[k>>2]|0,202056,b,0)|0)>>2]|0)==3){l=1;i=g;return l|0}Of(b);h=c[a>>2]|0;if((h|0)!=7){c[e>>2]=h;c[f+4>>2]=7;Qe(0,202096,f);tc()}if((c[(Yu(c[k>>2]|0,202064,b,0)|0)>>2]|0)==3){l=1;i=g;return l|0}Of(b);Qe(-1,202072,d);l=0;i=g;return l|0}else{Qe(-1,202072,l);l=0;i=g;return l|0}return 0}function DH(a){a=a|0;i=i;return}function EH(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;e=i;i=i+16|0;d=e;f=d+4|0;c[f>>2]=0;c[d+8>>2]=0;c[e>>2]=f;a=FH(a,d)|0;xn(d,c[d+4>>2]|0);i=b;return a|0}function FH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;f=i;i=i+8|0;g=f;k=i;i=i+8|0;l=k;n=i;i=i+8|0;r=i;i=i+8|0;o=i;i=i+16|0;j=o;c[o>>2]=13;m=j+8|0;c[m>>2]=0;c[m+4>>2]=0;q=c[b>>2]|0;do{if((q|0)==8){q=c[b+8>>2]|0;q=jd[c[(c[q>>2]|0)+72>>2]&511](q)|0}else if((q|0)==7){q=c[b+8>>2]|0}else if((q|0)==4){if((Qc(c[b+8>>2]|0,202168)|0)!=0){p=8;break}b=FW(1048)|0;c[b>>2]=202568;c[b+4>>2]=32;c[b+8>>2]=32;f=0;do{h[b+16+(f<<4)>>3]=0.0;h[b+16+(f<<4)+8>>3]=1.0;f=f+1|0;}while((f|0)<32);a[b+1040|0]=0;r=b;i=e;return r|0}else{p=8}}while(0);if((p|0)==8){Qe(-1,202184,r);r=0;i=e;return r|0}if((c[(Yu(q,202224,j,0)|0)>>2]|0)!=1){Qe(-1,202240,n);Of(j);r=0;i=e;return r|0}n=c[o>>2]|0;if((n|0)!=1){c[k>>2]=n;c[l+4>>2]=1;Qe(0,205232,l);tc()}k=c[m>>2]|0;Of(j);if((k|0)==4){r=FW(1072)|0;WH(r,b,q);b=r}else if((k|0)==3){b=FW(1072)|0;QH(b,0,q,d)}else if((k|0)==2){b=FW(1576)|0;NH(b,0,q)}else if((k|0)==0){r=FW(2600)|0;JH(r,b,q);b=r}else{c[f>>2]=k;Qe(-1,202280,g);r=0;i=e;return r|0}if(jd[c[(c[b>>2]|0)+20>>2]&511](b)|0){r=b;i=e;return r|0}if((b|0)==0){r=0;i=e;return r|0}fd[c[(c[b>>2]|0)+4>>2]&511](b);r=0;i=e;return r|0}function GH(b,d){b=b|0;d=d|0;var e=0,f=0,g=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.0;o=i;g=i;i=i+8|0;p=i;i=i+8|0;e=p;q=i;i=i+8|0;s=i;i=i+8|0;r=s;u=i;i=i+8|0;t=u;w=i;i=i+8|0;v=w;y=i;i=i+8|0;A=i;i=i+8|0;B=A;z=i;i=i+8|0;C=i;i=i+8|0;x=C;E=i;i=i+8|0;F=E;D=i;i=i+8|0;G=D;H=i;i=i+8|0;k=i;i=i+16|0;f=k;l=i;i=i+16|0;j=l;c[k>>2]=13;m=f+8|0;c[m>>2]=0;c[m+4>>2]=0;c[l>>2]=13;n=j+8|0;c[n>>2]=0;c[n+4>>2]=0;a:do{if((c[(Yu(d,202320,f,0)|0)>>2]|0)==6){H=c[k>>2]|0;if((H|0)!=6){c[D>>2]=H;c[G+4>>2]=6;Qe(0,205232,G);tc()}G=c[(c[m>>2]|0)+12>>2]|0;D=b+4|0;c[D>>2]=(G|0)/2|0;if((G|0)>65){c[E>>2]=32;Qe(-1,202360,F);break}b:do{if((G|0)>1){G=6;E=0;while(1){F=E<<1;if((G|0)!=6){D=10;break}ut(c[m>>2]|0,F,j)|0;G=c[l>>2]|0;if((G+ -1|0)>>>0>=2){D=12;break}if((G|0)==1){I=+(c[n>>2]|0)}else{I=+h[n>>3]}h[b+16+(E<<4)>>3]=I;Of(j);G=c[k>>2]|0;if((G|0)!=6){D=17;break}ut(c[m>>2]|0,F|1,j)|0;F=c[l>>2]|0;if((F+ -1|0)>>>0>=2){D=19;break}if((F|0)==1){I=+(c[n>>2]|0)}else{I=+h[n>>3]}h[b+16+(E<<4)+8>>3]=I;Of(j);E=E+1|0;if((E|0)>=(c[D>>2]|0)){D=25;break b}G=c[k>>2]|0}if((D|0)==10){c[C>>2]=G;c[x+4>>2]=6;Qe(0,205232,x);tc()}else if((D|0)==12){Qe(-1,202416,z);break}else if((D|0)==17){c[A>>2]=G;c[B+4>>2]=6;Qe(0,205232,B);tc()}else if((D|0)==19){Qe(-1,202416,y);break}}else{D=25}}while(0);c:do{if((D|0)==25){Of(f);y=b+1040|0;a[y]=0;x=b+8|0;c[x>>2]=0;d:do{if((c[(Yu(d,202456,f,0)|0)>>2]|0)==6){a[y]=1;d=c[k>>2]|0;if((d|0)!=6){c[w>>2]=d;c[v+4>>2]=6;Qe(0,205232,v);tc()}v=c[(c[m>>2]|0)+12>>2]|0;c[x>>2]=(v|0)/2|0;if((v|0)>65){c[u>>2]=32;Qe(-1,202464,t);break a}if((v|0)<=1){break}v=6;t=0;while(1){u=t<<1;if((v|0)!=6){D=33;break}ut(c[m>>2]|0,u,j)|0;v=c[l>>2]|0;if((v+ -1|0)>>>0>=2){D=35;break}if((v|0)==1){I=+(c[n>>2]|0)}else{I=+h[n>>3]}h[b+528+(t<<4)>>3]=I;Of(j);v=c[k>>2]|0;if((v|0)!=6){D=40;break}ut(c[m>>2]|0,u|1,j)|0;u=c[l>>2]|0;if((u+ -1|0)>>>0>=2){D=42;break}if((u|0)==1){I=+(c[n>>2]|0)}else{I=+h[n>>3]}h[b+528+(t<<4)+8>>3]=I;Of(j);t=t+1|0;if((t|0)>=(c[x>>2]|0)){break d}v=c[k>>2]|0}if((D|0)==33){c[s>>2]=v;c[r+4>>2]=6;Qe(0,205232,r);tc()}else if((D|0)==35){Qe(-1,202520,q);break c}else if((D|0)==40){c[p>>2]=v;c[e+4>>2]=6;Qe(0,205232,e);tc()}else if((D|0)==42){Qe(-1,202520,g);break c}}}while(0);Of(f);H=1;i=o;return H|0}}while(0);Of(j)}else{Qe(-1,202328,H)}}while(0);Of(f);H=0;i=o;return H|0}function HH(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function IH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=i;d=0;do{h[c+(d<<3)>>3]=+h[b+(d<<3)>>3];d=d+1|0;}while((d|0)<32);i=a;return}function JH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0.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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0.0;f=i;u=i;i=i+8|0;p=i;i=i+8|0;t=p;x=i;i=i+8|0;v=i;i=i+8|0;o=v;A=i;i=i+8|0;z=A;D=i;i=i+8|0;H=i;i=i+8|0;I=H;G=i;i=i+8|0;E=i;i=i+8|0;F=E;K=i;i=i+8|0;J=K;L=i;i=i+8|0;n=L;M=i;i=i+8|0;O=i;i=i+8|0;C=i;i=i+8|0;N=C;P=i;i=i+8|0;B=i;i=i+8|0;Q=B;T=i;i=i+8|0;S=i;i=i+8|0;k=i;i=i+8|0;s=i;i=i+16|0;m=s;r=i;i=i+16|0;y=r;c[b>>2]=202600;c[s>>2]=13;q=m+8|0;c[q>>2]=0;c[q+4>>2]=0;c[r>>2]=13;w=y+8|0;c[w>>2]=0;c[w+4>>2]=0;j=b+2584|0;c[j>>2]=0;R=b+2592|0;c[R>>2]=0;g=b+2596|0;a[g]=0;if(!(GH(b,e)|0)){i=f;return}if((a[b+1040|0]&1)==0){Qe(-1,202624,k);i=f;return}k=b+4|0;U=c[k>>2]|0;if((U|0)>16){c[S>>2]=16;Qe(-1,202664,S);i=f;return}c[R>>2]=ye(1<>2]|0)!=8){Qe(-1,202728,T);i=f;return}d=c[d+8>>2]|0;a:do{if((c[(Yu(e,202760,m,0)|0)>>2]|0)==6){R=c[s>>2]|0;if((R|0)!=6){c[B>>2]=R;c[Q+4>>2]=6;Qe(0,205232,Q);tc()}B=c[(c[q>>2]|0)+12>>2]|0;if((B|0)!=(c[k>>2]|0)){B=14;break}b:do{if((B|0)>0){P=6;B=0;while(1){if((P|0)!=6){B=16;break}ut(c[q>>2]|0,B,y)|0;if((c[r>>2]|0)!=1){B=18;break}c[b+1044+(B<<2)>>2]=c[w>>2];Of(y);B=B+1|0;if((B|0)>=(c[k>>2]|0)){B=21;break b}P=c[s>>2]|0}if((B|0)==16){c[C>>2]=P;c[N+4>>2]=6;Qe(0,205232,N);tc()}else if((B|0)==18){Qe(-1,202816,O);break}}else{B=21}}while(0);c:do{if((B|0)==21){Of(m);C=b+8|0;O=c[C>>2]|0;c[b+2456>>2]=O;if((c[k>>2]|0)>1){N=1;do{O=da(c[b+1044+(N+ -1<<2)>>2]|0,O)|0;c[b+2456+(N<<2)>>2]=O;N=N+1|0;}while((N|0)<(c[k>>2]|0))}if((c[(Yu(e,202856,m,0)|0)>>2]|0)!=1){Qe(-1,202872,M);break a}M=c[s>>2]|0;if((M|0)!=1){c[L>>2]=M;c[n+4>>2]=1;Qe(0,205232,n);tc()}n=c[q>>2]|0;l=1.0/(+lW(1.0,n)+-1.0);Of(m);d:do{if((c[(Yu(e,202920,m,0)|0)>>2]|0)==6){L=c[s>>2]|0;if((L|0)!=6){c[K>>2]=L;c[J+4>>2]=6;Qe(0,205232,J);tc()}J=c[k>>2]|0;if((c[(c[q>>2]|0)+12>>2]|0)!=(J<<1|0)){B=29;break}if((J|0)<=0){break}L=6;J=0;while(1){K=J<<1;if((L|0)!=6){B=36;break}ut(c[q>>2]|0,K,y)|0;L=c[r>>2]|0;if((L+ -1|0)>>>0>=2){B=38;break}if((L|0)==1){V=+(c[w>>2]|0)}else{V=+h[w>>3]}h[b+1176+(J<<4)>>3]=V;Of(y);L=c[s>>2]|0;if((L|0)!=6){B=43;break}ut(c[q>>2]|0,K|1,y)|0;K=c[r>>2]|0;if((K+ -1|0)>>>0>=2){B=45;break}if((K|0)==1){V=+(c[w>>2]|0)}else{V=+h[w>>3]}h[b+1176+(J<<4)+8>>3]=V;Of(y);J=J+1|0;if((J|0)>=(c[k>>2]|0)){break d}L=c[s>>2]|0}if((B|0)==36){c[E>>2]=L;c[F+4>>2]=6;Qe(0,205232,F);tc()}else if((B|0)==38){Qe(-1,202928,G);break c}else if((B|0)==43){c[H>>2]=L;c[I+4>>2]=6;Qe(0,205232,I);tc()}else if((B|0)==45){Qe(-1,202928,D);break c}}else{J=c[k>>2]|0;B=29}}while(0);do{if((B|0)==29){if((J|0)>0){D=0}else{break}do{h[b+1176+(D<<4)>>3]=0.0;h[b+1176+(D<<4)+8>>3]=+((c[b+1044+(D<<2)>>2]|0)+ -1|0);D=D+1|0;}while((D|0)<(c[k>>2]|0))}}while(0);Of(m);if((c[k>>2]|0)>0){D=b+16|0;E=0;do{h[b+2200+(E<<3)>>3]=(+h[b+1176+(E<<4)+8>>3]- +h[b+1176+(E<<4)>>3])/(+h[D+(E<<4)+8>>3]- +h[D+(E<<4)>>3]);E=E+1|0;}while((E|0)<(c[k>>2]|0))}e:do{if((c[(Yu(e,202968,m,0)|0)>>2]|0)==6){e=c[s>>2]|0;if((e|0)!=6){c[A>>2]=e;c[z+4>>2]=6;Qe(0,205232,z);tc()}z=c[C>>2]|0;if((c[(c[q>>2]|0)+12>>2]|0)!=(z<<1|0)){B=57;break}if((z|0)<=0){break}e=6;z=0;while(1){A=z<<1;if((e|0)!=6){B=65;break}ut(c[q>>2]|0,A,y)|0;e=c[r>>2]|0;if((e+ -1|0)>>>0>=2){B=67;break}if((e|0)==1){V=+(c[w>>2]|0)}else{V=+h[w>>3]}h[b+1688+(z<<4)>>3]=V;Of(y);e=c[s>>2]|0;if((e|0)!=6){B=72;break}ut(c[q>>2]|0,A|1,y)|0;A=c[r>>2]|0;if((A+ -1|0)>>>0>=2){B=74;break}if((A|0)==1){V=+(c[w>>2]|0)}else{V=+h[w>>3]}h[b+1688+(z<<4)+8>>3]=V;Of(y);z=z+1|0;if((z|0)>=(c[C>>2]|0)){break e}e=c[s>>2]|0}if((B|0)==65){c[v>>2]=e;c[o+4>>2]=6;Qe(0,205232,o);tc()}else if((B|0)==67){Qe(-1,202976,x);break c}else if((B|0)==72){c[p>>2]=e;c[t+4>>2]=6;Qe(0,205232,t);tc()}else if((B|0)==74){Qe(-1,202976,u);break c}}else{z=c[C>>2]|0;B=57}}while(0);do{if((B|0)==57){if((z|0)<=0){break}p=b+528|0;o=0;do{h[b+1688+(o<<4)>>3]=+h[p+(o<<4)>>3];h[b+1688+(o<<4)+8>>3]=+h[p+(o<<4)+8>>3];o=o+1|0;}while((o|0)<(c[C>>2]|0))}}while(0);Of(m);p=c[C>>2]|0;m=b+2588|0;c[m>>2]=p;k=c[k>>2]|0;if((k|0)>0){o=0;while(1){p=da(p,c[b+1044+(o<<2)>>2]|0)|0;c[m>>2]=p;o=o+1|0;if((o|0)<(k|0)){}else{break}}}c[j>>2]=ye(p,8)|0;b=(1<>2]|0)+12>>2]&511](d);if((c[m>>2]|0)>0){if((n|0)==8){b=0;do{V=l*+((jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)>>>0);h[(c[j>>2]|0)+(b<<3)>>3]=V;b=b+1|0;}while((b|0)<(c[m>>2]|0))}else if((n|0)==16){b=0;do{U=(jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)<<8;V=l*+(((jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)+U|0)>>>0);h[(c[j>>2]|0)+(b<<3)>>3]=V;b=b+1|0;}while((b|0)<(c[m>>2]|0))}else{p=0;o=0;k=0;do{if((n|0)==32){q=(jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)<<8;q=(jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)+q<<8;q=(jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)+q<<8;q=(jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)+q|0}else{if((p|0)<(n|0)){while(1){o=(jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)&255|o<<8;p=p+8|0;if((p|0)<(n|0)){}else{q=o;break}}}else{q=o}U=p-n|0;p=U;o=q;q=q>>>U&b}h[(c[j>>2]|0)+(k<<3)>>3]=l*+(q>>>0);k=k+1|0;}while((k|0)<(c[m>>2]|0))}}fd[c[(c[d>>2]|0)+16>>2]&511](d);a[g]=1;i=f;return}}while(0);Of(y)}else{B=14}}while(0);if((B|0)==14){Qe(-1,202768,P)}Of(m);i=f;return}function KH(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=202600;d=c[a+2584>>2]|0;if((d|0)!=0){Fe(d)}d=c[a+2592>>2]|0;if((d|0)==0){HW(a);i=b;return}Fe(d);HW(a);i=b;return}function LH(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=202600;d=c[a+2584>>2]|0;if((d|0)!=0){Fe(d)}a=c[a+2592>>2]|0;if((a|0)==0){i=b;return}Fe(a);i=b;return}function MH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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.0,x=0.0;j=i;l=i;i=i+256|0;f=i;i=i+256|0;g=i;i=i+256|0;e=a+4|0;q=c[e>>2]|0;if((q|0)>0){m=a+16|0;n=0;do{w=(+h[b+(n<<3)>>3]- +h[m+(n<<4)>>3])*+h[a+2200+(n<<3)>>3]+ +h[a+1176+(n<<4)>>3];o=c[a+1044+(n<<2)>>2]|0;do{if(w<0.0){w=0.0}else{x=+(o+ -1|0);if(w<=x){break}w=x}}while(0);p=~~w;c[l+(n<<3)>>2]=p;r=p+1|0;c[l+(n<<3)+4>>2]=(r|0)<(o|0)?r:p;x=w- +(p|0);h[g+(n<<3)>>3]=x;h[f+(n<<3)>>3]=1.0-x;n=n+1|0;}while((n|0)<(q|0))}p=a+8|0;if((c[p>>2]|0)<=0){i=j;return}b=a+2592|0;m=a+528|0;o=a+2588|0;n=a+2584|0;s=q;q=0;while(1){t=1<0){r=0;do{if((s|0)>0){u=q;v=0;t=r;while(1){u=(da(c[l+(v<<3)+((t&1)<<2)>>2]|0,c[a+2456+(v<<2)>>2]|0)|0)+u|0;v=v+1|0;if((v|0)<(s|0)){t=t>>1}else{break}}}else{u=q}do{if((u|0)>-1){if((u|0)>=(c[o>>2]|0)){k=15;break}h[(c[b>>2]|0)+(r<<3)>>3]=+h[(c[n>>2]|0)+(u<<3)>>3]}else{k=15}}while(0);if((k|0)==15){k=0;h[(c[b>>2]|0)+(r<<3)>>3]=0.0}r=r+1|0;s=c[e>>2]|0;t=1<0){r=0;while(1){if((t|0)>0){x=+h[f+(r<<3)>>3];w=+h[g+(r<<3)>>3];s=0;do{v=c[b>>2]|0;h[v+(s>>1<<3)>>3]=x*+h[v+(s<<3)>>3]+w*+h[v+((s|1)<<3)>>3];s=s+2|0;}while((s|0)<(t|0));s=c[e>>2]|0}r=r+1|0;if((r|0)<(s|0)){t=t>>1}else{break}}}w=+h[a+1688+(q<<4)>>3];w=w+ +h[c[b>>2]>>3]*(+h[a+1688+(q<<4)+8>>3]-w);r=d+(q<<3)|0;h[r>>3]=w;x=+h[m+(q<<4)>>3];do{if(w>3]=x}else{x=+h[m+(q<<4)+8>>3];if(w<=x){break}h[r>>3]=x}}while(0);q=q+1|0;if((q|0)>=(c[p>>2]|0)){break}s=c[e>>2]|0}i=j;return}function NH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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.0;d=i;k=i;i=i+16|0;l=k;q=i;i=i+8|0;y=i;i=i+8|0;s=i;i=i+8|0;t=i;i=i+8|0;o=t;v=i;i=i+8|0;x=i;i=i+8|0;w=x;I=i;i=i+8|0;B=i;i=i+8|0;z=i;i=i+8|0;A=z;D=i;i=i+8|0;F=D;G=i;i=i+8|0;H=i;i=i+8|0;C=H;E=i;i=i+8|0;m=i;i=i+16|0;f=m;r=i;i=i+16|0;p=r;c[b>>2]=203024;c[m>>2]=13;j=f+8|0;c[j>>2]=0;c[j+4>>2]=0;c[r>>2]=13;n=p+8|0;c[n>>2]=0;c[n+4>>2]=0;g=b+1569|0;a[g]=0;if(!(GH(b,e)|0)){i=d;return}if((c[b+4>>2]|0)!=1){Qe(-1,203048,E);i=d;return}J=(c[(Yu(e,203096,f,0)|0)>>2]|0)==6;E=(a[b+1040|0]&1)!=0;a:do{if(J){I=c[m>>2]|0;J=(I|0)==6;do{if(E){if(!J){c[H>>2]=I;c[C+4>>2]=6;Qe(0,205232,C);tc()}if((c[(c[j>>2]|0)+12>>2]|0)==(c[b+8>>2]|0)){break}Qe(-1,203104,G);break a}else{if(J){break}c[D>>2]=I;c[F+4>>2]=6;Qe(0,205232,F);tc()}}while(0);J=c[(c[j>>2]|0)+12>>2]|0;u=b+8|0;c[u>>2]=J;if((J|0)<=0){u=27;break}C=6;D=0;while(1){if((C|0)!=6){u=15;break}ut(c[j>>2]|0,D,p)|0;C=c[r>>2]|0;if((C+ -1|0)>>>0>=2){u=17;break}if((C|0)==1){K=+(c[n>>2]|0)}else{K=+h[n>>3]}h[b+1048+(D<<3)>>3]=K;Of(p);D=D+1|0;if((D|0)>=(c[u>>2]|0)){u=27;break a}C=c[m>>2]|0}if((u|0)==15){c[z>>2]=C;c[A+4>>2]=6;Qe(0,205232,A);tc()}else if((u|0)==17){Qe(-1,203144,B);u=54;break}}else{z=b+8|0;do{if(E){if((c[z>>2]|0)==1){break}Qe(-1,203104,I);break a}}while(0);c[z>>2]=1;h[b+1048>>3]=0.0;u=27}}while(0);b:do{if((u|0)==27){Of(f);c:do{if((c[(Yu(e,203184,f,0)|0)>>2]|0)==6){y=c[m>>2]|0;if((y|0)!=6){c[x>>2]=y;c[w+4>>2]=6;Qe(0,205232,w);tc()}x=c[(c[j>>2]|0)+12>>2]|0;w=b+8|0;if((x|0)!=(c[w>>2]|0)){Qe(-1,203192,v);break b}if((x|0)<=0){break}x=6;v=0;while(1){if((x|0)!=6){u=35;break}ut(c[j>>2]|0,v,p)|0;x=c[r>>2]|0;if((x+ -1|0)>>>0>=2){u=37;break}if((x|0)==1){K=+(c[n>>2]|0)}else{K=+h[n>>3]}h[b+1304+(v<<3)>>3]=K;Of(p);v=v+1|0;if((v|0)>=(c[w>>2]|0)){break c}x=c[m>>2]|0}if((u|0)==35){c[t>>2]=x;c[o+4>>2]=6;Qe(0,205232,o);tc()}else if((u|0)==37){Qe(-1,203232,s);u=54;break b}}else{if((c[b+8>>2]|0)==1){h[b+1304>>3]=1.0;break}else{Qe(-1,203192,y);break b}}}while(0);Of(f);if(((c[(Yu(e,203272,f,0)|0)>>2]|0)+ -1|0)>>>0>=2){Qe(-1,203280,q);break}e=c[m>>2]|0;if((e+ -1|0)>>>0>=2){c[k>>2]=e;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,205304,l);tc()}if((e|0)==1){K=+(c[j>>2]|0)}else{K=+h[j>>3]}J=b+1560|0;h[J>>3]=K;Of(f);a[b+1568|0]=+S(+(+h[J>>3]+-1.0))<1.0e-10|0;a[g]=1;i=d;return}}while(0);if((u|0)==54){Of(p)}Of(f);i=d;return}function OH(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function PH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0;f=i;o=+h[d>>3];k=+h[b+16>>3];if(o>=k){k=+h[b+24>>3];k=o>k?k:o}m=b+8|0;if((c[m>>2]|0)<=0){i=f;return}l=b+1568|0;d=b+1560|0;j=b+1040|0;g=0;do{o=+h[b+1048+(g<<3)>>3];if((a[l]&1)==0){p=+U(+k,+(+h[d>>3]))}else{p=k}o=o+p*(+h[b+1304+(g<<3)>>3]-o);n=e+(g<<3)|0;h[n>>3]=o;do{if((a[j]&1)!=0){p=+h[b+528+(g<<4)>>3];if(o>3]=p;break}p=+h[b+528+(g<<4)+8>>3];if(o<=p){break}h[n>>3]=p}}while(0);g=g+1|0;}while((g|0)<(c[m>>2]|0));i=f;return}function QH(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=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,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.0,la=0.0;l=i;T=i;i=i+8|0;_=T;w=i;i=i+16|0;t=w;r=i;i=i+8|0;u=i;i=i+8|0;v=u;y=i;i=i+8|0;z=i;i=i+8|0;A=z;F=i;i=i+16|0;G=F;E=i;i=i+8|0;C=i;i=i+8|0;D=C;K=i;i=i+8|0;I=i;i=i+8|0;L=I;U=i;i=i+8|0;W=i;i=i+8|0;V=W;Y=i;i=i+8|0;X=Y;x=i;i=i+8|0;$=x;ba=i;i=i+8|0;aa=i;i=i+8|0;Q=i;i=i+8|0;R=Q;O=i;i=i+8|0;P=O;N=i;i=i+8|0;m=i;i=i+16|0;q=m;o=i;i=i+16|0;s=o;S=i;i=i+16|0;Z=S;c[b>>2]=203328;c[m>>2]=13;p=q+8|0;c[p>>2]=0;c[p+4>>2]=0;c[o>>2]=13;n=s+8|0;c[n>>2]=0;c[n+4>>2]=0;k=b+1064|0;M=b+1048|0;j=b+1052|0;g=b+1056|0;d=b+1060|0;bX(M|0,0,17)|0;a:do{if(GH(b,e)|0){if((c[b+4>>2]|0)!=1){Qe(-1,203352,aa);break}if((c[(Yu(e,203400,q,0)|0)>>2]|0)!=6){Qe(-1,203416,ba);break}aa=c[m>>2]|0;if((aa|0)!=6){c[x>>2]=aa;c[$+4>>2]=6;Qe(0,205232,$);tc()}ja=c[(c[p>>2]|0)+12>>2]|0;x=b+1044|0;c[x>>2]=ja;c[M>>2]=ye(ja,4)|0;c[j>>2]=ye((c[x>>2]|0)+1|0,8)|0;c[g>>2]=ye(c[x>>2]<<1,8)|0;c[d>>2]=ye(c[x>>2]|0,8)|0;b:do{if((c[x>>2]|0)>0){$=0;do{c[(c[M>>2]|0)+($<<2)>>2]=0;$=$+1|0;aa=c[x>>2]|0;}while(($|0)<(aa|0));if((aa|0)<=0){H=56;break}ca=Z+4|0;ba=Z+8|0;$=f+4|0;aa=Z+4|0;da=0;c:while(1){c[ca>>2]=0;c[ba>>2]=0;c[S>>2]=ca;ea=c[f>>2]|0;if((ea|0)!=($|0)){do{ha=ea+16|0;c[N>>2]=ca;$W(T|0,N|0,4)|0;ga=Xv(Z,_,P,ha)|0;if((c[ga>>2]|0)==0){fa=FW(20)|0;c[fa+16>>2]=c[ha>>2];ha=c[O>>2]|0;c[fa>>2]=0;c[fa+4>>2]=0;c[fa+8>>2]=ha;c[ga>>2]=fa;ha=c[c[S>>2]>>2]|0;if((ha|0)!=0){c[S>>2]=ha;fa=c[ga>>2]|0}un(c[aa>>2]|0,fa);c[ba>>2]=(c[ba>>2]|0)+1}fa=c[ea+4>>2]|0;if((fa|0)==0){while(1){fa=c[ea+8>>2]|0;if((ea|0)==(c[fa>>2]|0)){ea=fa;break}else{ea=fa}}}else{ea=fa;while(1){fa=c[ea>>2]|0;if((fa|0)==0){break}else{ea=fa}}}}while((ea|0)!=($|0))}ea=c[m>>2]|0;if((ea|0)!=6){H=23;break}vt(c[p>>2]|0,da,s)|0;if((c[o>>2]|0)==9){ea=c[n>>2]|0;ga=c[ca>>2]|0;fa=(ga|0)==0;do{if(fa){H=40}else{ja=ga;ia=ca;d:while(1){ha=ja;while(1){if((c[ha+16>>2]|0)>=(ea|0)){break}ha=c[ha+4>>2]|0;if((ha|0)==0){ha=ia;break d}}ja=c[ha>>2]|0;if((ja|0)==0){break}else{ia=ha}}if((ha|0)!=(ca|0)){if((ea|0)>=(c[ha+16>>2]|0)){J=ga;break c}}if(fa){H=40;break}while(1){H=c[ga+16>>2]|0;if((ea|0)<(H|0)){H=c[ga>>2]|0;if((H|0)==0){H=35;break}else{ga=H;continue}}if((H|0)>=(ea|0)){H=39;break}fa=ga+4|0;H=c[fa>>2]|0;if((H|0)==0){H=38;break}else{ga=H}}if((H|0)==35){H=0;c[Q>>2]=ga;break}else if((H|0)==38){H=0;c[Q>>2]=ga;ga=fa;break}else if((H|0)==39){H=0;c[Q>>2]=ga;ga=R;break}}}while(0);if((H|0)==40){H=0;c[Q>>2]=ca;ga=ca}if((c[ga>>2]|0)==0){fa=FW(20)|0;c[fa+16>>2]=ea;ea=c[Q>>2]|0;c[fa>>2]=0;c[fa+4>>2]=0;c[fa+8>>2]=ea;c[ga>>2]=fa;ea=c[c[S>>2]>>2]|0;if((ea|0)!=0){c[S>>2]=ea;fa=c[ga>>2]|0}un(c[aa>>2]|0,fa);c[ba>>2]=(c[ba>>2]|0)+1}Of(s);ea=c[m>>2]|0;if((ea|0)!=6){H=46;break}ut(c[p>>2]|0,da,s)|0}ja=FH(s,Z)|0;c[(c[M>>2]|0)+(da<<2)>>2]=ja;if((ja|0)==0){H=49;break}if((da|0)>0){fa=c[M>>2]|0;ea=c[fa+(da<<2)>>2]|0;if((c[ea+4>>2]|0)!=1){H=53;break}if((c[ea+8>>2]|0)!=(c[(c[fa>>2]|0)+8>>2]|0)){H=53;break}}Of(s);xn(Z,c[aa>>2]|0);da=da+1|0;if((da|0)>=(c[x>>2]|0)){H=56;break b}}if((H|0)==23){c[Y>>2]=ea;c[X+4>>2]=6;Qe(0,205232,X);tc()}else if((H|0)==46){c[W>>2]=ea;c[V+4>>2]=6;Qe(0,205232,V);tc()}else if((H|0)==49){J=c[aa>>2]|0}else if((H|0)==53){Qe(-1,203464,U);xn(Z,c[aa>>2]|0);break}xn(Z,J)}else{H=56}}while(0);e:do{if((H|0)==56){Of(q);do{if((c[(Yu(e,203512,q,0)|0)>>2]|0)==6){H=c[m>>2]|0;if((H|0)!=6){c[I>>2]=H;c[L+4>>2]=6;Qe(0,205232,L);tc()}if((c[(c[p>>2]|0)+12>>2]|0)!=((c[x>>2]|0)+ -1|0)){break}h[c[j>>2]>>3]=+h[b+16>>3];H=c[x>>2]|0;f:do{if((H|0)>1){H=1;while(1){I=c[m>>2]|0;if((I|0)!=6){H=64;break}if(((c[(ut(c[p>>2]|0,H+ -1|0,s)|0)>>2]|0)+ -1|0)>>>0>=2){H=66;break}I=c[o>>2]|0;if((I+ -1|0)>>>0>=2){H=68;break}if((I|0)==1){ka=+(c[n>>2]|0)}else{ka=+h[n>>3]}h[(c[j>>2]|0)+(H<<3)>>3]=ka;Of(s);H=H+1|0;I=c[x>>2]|0;if((H|0)>=(I|0)){B=I;break f}}if((H|0)==64){c[C>>2]=I;c[D+4>>2]=6;Qe(0,205232,D);tc()}else if((H|0)==66){Qe(-1,203576,E);break e}else if((H|0)==68){c[F>>2]=I;c[G+4>>2]=1;c[G+8>>2]=2;Qe(0,205304,G);tc()}}else{B=H}}while(0);h[(c[j>>2]|0)+(B<<3)>>3]=+h[b+24>>3];Of(q);do{if((c[(Yu(e,202920,q,0)|0)>>2]|0)==6){B=c[m>>2]|0;if((B|0)!=6){c[z>>2]=B;c[A+4>>2]=6;Qe(0,205232,A);tc()}z=c[x>>2]|0;if((c[(c[p>>2]|0)+12>>2]|0)!=(z<<1|0)){break}g:do{if((z|0)>0){y=6;z=0;while(1){if((y|0)!=6){H=81;break}if(((c[(ut(c[p>>2]|0,z,s)|0)>>2]|0)+ -1|0)>>>0>=2){H=83;break}y=c[o>>2]|0;if((y+ -1|0)>>>0>=2){H=85;break}if((y|0)==1){ka=+(c[n>>2]|0)}else{ka=+h[n>>3]}h[(c[g>>2]|0)+(z<<3)>>3]=ka;Of(s);z=z+1|0;if((z|0)>=(c[x>>2]<<1|0)){break g}y=c[m>>2]|0}if((H|0)==81){c[u>>2]=y;c[v+4>>2]=6;Qe(0,205232,v);tc()}else if((H|0)==83){Qe(-1,203688,r);break e}else if((H|0)==85){c[w>>2]=y;c[t+4>>2]=1;c[t+8>>2]=2;Qe(0,205304,t);tc()}}}while(0);Of(q);if((c[x>>2]|0)>0){m=0;while(1){ja=c[j>>2]|0;la=+h[ja+(m<<3)>>3];n=m+1|0;ka=+h[ja+(n<<3)>>3];if(la==ka){h[(c[d>>2]|0)+(m<<3)>>3]=0.0}else{ja=m<<1;ia=c[g>>2]|0;h[(c[d>>2]|0)+(m<<3)>>3]=(+h[ia+((ja|1)<<3)>>3]- +h[ia+(ja<<3)>>3])/(ka-la)}if((n|0)<(c[x>>2]|0)){m=n}else{break}}}a[k]=1;i=l;return}}while(0);Qe(-1,203632,y);break a}}while(0);Qe(-1,203520,K);break a}}while(0);Of(s)}}while(0);Of(q);i=l;return}function RH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;c[b>>2]=203328;$W(b|0,d|0,1072)|0;k=c[d+1044>>2]|0;e=b+1044|0;c[e>>2]=k;g=b+1048|0;c[g>>2]=ye(k,4)|0;k=c[e>>2]|0;if((k|0)>0){h=d+1048|0;j=0;while(1){k=c[(c[h>>2]|0)+(j<<2)>>2]|0;k=jd[c[(c[k>>2]|0)+8>>2]&511](k)|0;c[(c[g>>2]|0)+(j<<2)>>2]=k;j=j+1|0;k=c[e>>2]|0;if((j|0)<(k|0)){}else{break}}}k=ye(k+1|0,8)|0;c[b+1052>>2]=k;$W(k|0,c[d+1052>>2]|0,(c[e>>2]<<3)+8|0)|0;k=ye(c[e>>2]<<1,8)|0;c[b+1056>>2]=k;$W(k|0,c[d+1056>>2]|0,c[e>>2]<<4|0)|0;k=ye(c[e>>2]|0,8)|0;c[b+1060>>2]=k;$W(k|0,c[d+1060>>2]|0,c[e>>2]<<3|0)|0;a[b+1064|0]=1;i=f;return}function SH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;c[a>>2]=203328;d=a+1048|0;f=c[d>>2]|0;do{if((f|0)==0){f=0}else{e=a+1044|0;h=c[e>>2]|0;if((h|0)>0){g=0}else{break}do{j=c[f+(g<<2)>>2]|0;if((j|0)!=0){fd[c[(c[j>>2]|0)+4>>2]&511](j);h=c[e>>2]|0;f=c[d>>2]|0}g=g+1|0;}while((g|0)<(h|0))}}while(0);Fe(f);Fe(c[a+1052>>2]|0);Fe(c[a+1056>>2]|0);Fe(c[a+1060>>2]|0);HW(a);i=b;return}function TH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;c[a>>2]=203328;d=a+1048|0;f=c[d>>2]|0;do{if((f|0)==0){f=0}else{e=a+1044|0;h=c[e>>2]|0;if((h|0)>0){g=0}else{break}do{f=c[f+(g<<2)>>2]|0;if((f|0)!=0){fd[c[(c[f>>2]|0)+4>>2]&511](f);h=c[e>>2]|0}g=g+1|0;f=c[d>>2]|0}while((g|0)<(h|0))}}while(0);Fe(f);Fe(c[a+1052>>2]|0);Fe(c[a+1056>>2]|0);Fe(c[a+1060>>2]|0);i=b;return}function UH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0;f=i;j=i;i=i+8|0;e=j;p=+h[b>>3];k=+h[a+16>>3];do{if(p>3]=k}else{k=+h[a+24>>3];if(p>k){h[j>>3]=k;break}else{h[j>>3]=p;k=p;break}}}while(0);o=(c[a+1044>>2]|0)+ -1|0;n=a+1052|0;b=0;while(1){if((b|0)>=(o|0)){g=8;break}m=b+1|0;l=c[n>>2]|0;if(k<+h[l+(m<<3)>>3]){break}else{b=m}}if((g|0)==8){l=c[n>>2]|0}h[j>>3]=+h[(c[a+1056>>2]|0)+(b<<1<<3)>>3]+(k- +h[l+(b<<3)>>3])*+h[(c[a+1060>>2]|0)+(b<<3)>>3];o=c[(c[a+1048>>2]|0)+(b<<2)>>2]|0;Gd[c[(c[o>>2]|0)+16>>2]&255](o,e,d);i=f;return}function VH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;e=i;i=i+16|0;if((b|0)==0){i=f;return}if((d|0)>-1){d=(d|0)%(b|0)|0}else{d=(0-d|0)%(b|0)|0;d=(d|0)==0?0:b-d|0}if((b|0)<1|(d|0)==0){i=f;return}if((d|0)>((b|0)/2|0|0)){d=b-d|0;if((d|0)<=0){i=f;return}g=a+1600|0;j=b+ -1|0;h=0;do{m=c[g>>2]|0;$W(e|0,a+(j+m<<4)|0,16)|0;l=m+b|0;k=l+ -1|0;if((k|0)>(m|0)){m=l;while(1){$W(a+(k<<4)|0,a+(m+ -2<<4)|0,16)|0;l=k+ -1|0;m=c[g>>2]|0;if((l|0)>(m|0)){m=k;k=l}else{break}}}$W(a+(m<<4)|0,e|0,16)|0;h=h+1|0;}while((h|0)<(d|0));i=f;return}else{if((d|0)<=0){i=f;return}g=a+1600|0;h=b+ -1|0;b=0;do{j=c[g>>2]|0;$W(e|0,a+(j<<4)|0,16)|0;k=h+j|0;if((j|0)<(k|0)){k=j;while(1){j=k+1|0;$W(a+(k<<4)|0,a+(j<<4)|0,16)|0;k=h+(c[g>>2]|0)|0;if((j|0)<(k|0)){k=j}else{break}}}$W(a+(k<<4)|0,e|0,16)|0;b=b+1|0;}while((b|0)<(d|0));i=f;return}}function WH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;j=i;i=i+8|0;h=i;i=i+8|0;l=i;i=i+8|0;m=i;i=i+8|0;f=i;i=i+8|0;c[b>>2]=203792;k=b+1044|0;bX(k|0,0,17)|0;n=FW(16)|0;jG(n,5);c[b+1064>>2]=n;if(!(GH(b,e)|0)){i=g;return}if((a[b+1040|0]&1)==0){Qe(-1,203816,m);i=g;return}if((c[d>>2]|0)!=8){Qe(-1,203856,l);i=g;return}l=c[d+8>>2]|0;n=FW(32)|0;ee(n);c[k>>2]=n;fd[c[(c[l>>2]|0)+12>>2]&511](l);k=XH(b,l)|0;if((k|0)==0){Qe(-1,203896,j);i=g;return}if((te(k,203888)|0)!=0){Qe(-1,203896,h);ke(k);HW(k);i=g;return}ke(k);HW(k);c[f>>2]=0;if(YH(b,l,f)|0){fd[c[(c[l>>2]|0)+16>>2]&511](l);a[b+1060|0]=1;n=FW(1608)|0;c[n+1600>>2]=100;c[b+1052>>2]=n}fd[c[(c[l>>2]|0)+16>>2]&511](l);i=g;return}function XH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=FW(32)|0;ee(e);a=a+1044|0;j=0;a:while(1){while(1){k=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((k|0)==-1){f=-1;break a}g=k&255;me(c[a>>2]|0,g)|0;if(j){break}if((k|0)==37){j=1;continue a}if((xc(k|0)|0)==0){h=9;break a}}if(!((k|0)==10|(k|0)==13)){j=1;continue}j=0}do{if((h|0)==9){if(!((k|0)==123|(k|0)==125)){f=k;break}me(e,g)|0;i=d;return e|0}}while(0);me(e,f&255)|0;g=jd[c[(c[b>>2]|0)+24>>2]&511](b)|0;h=(g|0)==-1;if((f+ -48|0)>>>0<10|(f+ -45|0)>>>0<2){if(h){i=d;return e|0}while(1){if(!((g+ -48|0)>>>0<10|(g+ -45|0)>>>0<2)){h=18;break}jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;g=g&255;me(c[a>>2]|0,g)|0;me(e,g)|0;g=jd[c[(c[b>>2]|0)+24>>2]&511](b)|0;if((g|0)==-1){h=18;break}}if((h|0)==18){i=d;return e|0}}else{if(h){i=d;return e|0}while(1){if((Qa(g|0)|0)==0){h=18;break}jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;g=g&255;me(c[a>>2]|0,g)|0;me(e,g)|0;g=jd[c[(c[b>>2]|0)+24>>2]&511](b)|0;if((g|0)==-1){h=18;break}}if((h|0)==18){i=d;return e|0}}return 0}function YH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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;f=i;n=i;i=i+8|0;o=n;m=i;i=i+8|0;l=i;i=i+8|0;r=i;i=i+8|0;q=i;i=i+8|0;p=i;i=i+8|0;s=i;i=i+8|0;u=XH(b,d)|0;a:do{if((u|0)!=0){j=b+1056|0;g=b+1048|0;b:while(1){t=u+28|0;v=c[t>>2]|0;y=a[v]|0;do{if(((y<<24>>24)+ -48|0)>>>0<10|(y+ -45<<24>>24&255)<2){while(1){v=v+1|0;w=a[v]|0;if(w<<24>>24==46){v=1;break}else if(w<<24>>24==0){k=6;break}else{}}if((k|0)==6){k=0;v=0}x=c[e>>2]|0;w=c[j>>2]|0;if((w|0)>(x|0)){w=c[g>>2]|0}else{w=w+64|0;c[j>>2]=w;w=Ce(c[g>>2]|0,w,16)|0;c[g>>2]=w;x=c[e>>2]|0}w=w+(x<<4)|0;if(v){c[w>>2]=2;z=+Ie(c[t>>2]|0);h[(c[g>>2]|0)+(c[e>>2]<<4)+8>>3]=z}else{c[w>>2]=1;y=ec(c[t>>2]|0)|0;c[(c[g>>2]|0)+(c[e>>2]<<4)+8>>2]=y}c[e>>2]=(c[e>>2]|0)+1;ke(u);HW(u)}else{if((te(u,203888)|0)!=0){if((te(u,204192)|0)==0){k=38;break b}else{v=-1;w=40;x=0}c:while(1){while(1){if((w-v|0)<=1){break c}y=(w+v|0)/2|0;x=te(u,c[204200+(y<<2)>>2]|0)|0;if((x|0)>0){v=y}else{break}}v=(x|0)<0?v:y;w=y}if((x|0)!=0){k=47;break b}ke(u);HW(u);u=c[e>>2]|0;t=c[j>>2]|0;if((t|0)>(u|0)){t=c[g>>2]|0}else{t=t+64|0;c[j>>2]=t;t=Ce(c[g>>2]|0,t,16)|0;c[g>>2]=t;u=c[e>>2]|0}c[t+(u<<4)>>2]=3;c[(c[g>>2]|0)+(c[e>>2]<<4)+8>>2]=v;c[e>>2]=(c[e>>2]|0)+1;u=XH(b,d)|0;if((u|0)==0){break a}else{continue b}}ke(u);HW(u);u=c[e>>2]|0;c[e>>2]=u+3;t=u+2|0;v=c[j>>2]|0;if((v|0)<=(t|0)){y=v+64|0;c[j>>2]=y;c[g>>2]=Ce(c[g>>2]|0,y,16)|0}if(!(YH(b,d,e)|0)){g=0;k=52;break b}w=XH(b,d)|0;if((w|0)==0){k=19;break b}if((te(w,203888)|0)==0){v=c[e>>2]|0;if(!(YH(b,d,e)|0)){g=0;k=52;break b}ke(w);HW(w);w=XH(b,d)|0;if((w|0)==0){k=23;break b}}else{v=-1}if((te(w,203992)|0)==0){if((v|0)>-1){k=26;break b}c[(c[g>>2]|0)+(u<<4)>>2]=3;c[(c[g>>2]|0)+(u<<4)+8>>2]=40;c[(c[g>>2]|0)+(t<<4)>>2]=4;c[(c[g>>2]|0)+(t<<4)+8>>2]=c[e>>2]}else{if((te(w,204064)|0)!=0){k=32;break b}if((v|0)<0){k=30;break b}c[(c[g>>2]|0)+(u<<4)>>2]=3;c[(c[g>>2]|0)+(u<<4)+8>>2]=41;y=u+1|0;c[(c[g>>2]|0)+(y<<4)>>2]=4;c[(c[g>>2]|0)+(y<<4)+8>>2]=v;c[(c[g>>2]|0)+(t<<4)>>2]=4;c[(c[g>>2]|0)+(t<<4)+8>>2]=c[e>>2]}if((w|0)==0){break}ke(w);HW(w)}}while(0);u=XH(b,d)|0;if((u|0)==0){break a}}if((k|0)==19){Qe(-1,203944,p);y=0;i=f;return y|0}else if((k|0)==23){Qe(-1,203944,q);y=0;i=f;return y|0}else if((k|0)==26){Qe(-1,204e3,r);y=0;i=f;return y|0}else if((k|0)==30){Qe(-1,204072,l);y=0;i=f;return y|0}else if((k|0)==32){Qe(-1,204136,m);if((w|0)==0){y=0;i=f;return y|0}ke(w);HW(w);y=0;i=f;return y|0}else if((k|0)==38){ke(u);HW(u);k=c[e>>2]|0;l=c[j>>2]|0;if((l|0)>(k|0)){j=c[g>>2]|0}else{k=l+64|0;c[j>>2]=k;j=Ce(c[g>>2]|0,k,16)|0;c[g>>2]=j;k=c[e>>2]|0}c[j+(k<<4)>>2]=3;c[(c[g>>2]|0)+(c[e>>2]<<4)+8>>2]=42;c[e>>2]=(c[e>>2]|0)+1;y=1;i=f;return y|0}else if((k|0)==47){c[n>>2]=c[t>>2];Qe(-1,204360,o);ke(u);HW(u);y=0;i=f;return y|0}else if((k|0)==52){i=f;return g|0}}}while(0);Qe(-1,203944,s);y=0;i=f;return y|0}function ZH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;c[b>>2]=203792;$W(b|0,d|0,1072)|0;n=b+1056|0;o=ye(c[n>>2]|0,16)|0;c[b+1048>>2]=o;$W(o|0,c[d+1048>>2]|0,c[n>>2]<<4|0)|0;n=c[d+1044>>2]|0;o=FW(32)|0;ie(o,n);c[b+1044>>2]=o;o=FW(1608)|0;c[o+1600>>2]=100;c[b+1052>>2]=o;$W(o|0,c[d+1052>>2]|0,1608)|0;o=FW(16)|0;d=d+1064|0;jG(o,nG(c[d>>2]|0)|0);b=b+1064|0;c[b>>2]=o;if((oG(c[d>>2]|0)|0)>0){f=0}else{i=e;return}do{g=FW(16)|0;o=qG(c[d>>2]|0,f)|0;c[g>>2]=205072;n=c[o+8>>2]|0;j=c[o+12>>2]|0;o=a[o+4|0]&1;a[g+4|0]=o;l=g+8|0;c[l>>2]=n;a:do{if(o<<24>>24==0){c[g+12>>2]=j}else{m=GW(n>>>0>536870911?-1:n<<3)|0;k=g+12|0;c[k>>2]=m;if((n|0)<=0){break}h[m>>3]=+h[j>>3];if((n|0)<=1){break}h[m+8>>3]=+h[j+8>>3];if((n|0)<=2){break}h[m+16>>3]=+h[j+16>>3];if((n|0)>3){n=3}else{break}while(1){h[m+(n<<3)>>3]=+h[j+(n<<3)>>3];n=n+1|0;if((n|0)>=(c[l>>2]|0)){break a}m=c[k>>2]|0}}}while(0);m=FW(12)|0;k=pG(c[d>>2]|0,f)|0;c[m>>2]=205136;n=c[k+4>>2]|0;k=c[k+8>>2]|0;j=m+4|0;c[j>>2]=n;o=GW(n>>>0>536870911?-1:n<<3)|0;l=m+8|0;c[l>>2]=o;b:do{if((n|0)>0){h[o>>3]=+h[k>>3];if((n|0)<=1){break}h[o+8>>3]=+h[k+8>>3];if((n|0)<=2){break}h[o+16>>3]=+h[k+16>>3];if((n|0)>3){n=3}else{break}while(1){h[o+(n<<3)>>3]=+h[k+(n<<3)>>3];n=n+1|0;if((n|0)>=(c[j>>2]|0)){break b}o=c[l>>2]|0}}}while(0);mG(c[b>>2]|0,g,m);f=f+1|0;}while((f|0)<(oG(c[d>>2]|0)|0));i=e;return}function _H(a){a=a|0;var b=0;b=i;$H(a);HW(a);i=b;return}function $H(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=203792;Fe(c[a+1048>>2]|0);d=c[a+1044>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+1052>>2]|0;if((d|0)!=0){HW(d)}a=c[a+1064>>2]|0;if((a|0)==0){i=b;return}kG(a);HW(a);i=b;return}function aI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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.0,w=0,x=0.0;f=i;n=i;i=i+8|0;o=i;i=i+8|0;q=i;i=i+8|0;j=i;i=i+16|0;p=j;m=b+4|0;g=c[m>>2]|0;c[j>>2]=205072;k=p+4|0;a[k]=0;c[p+8>>2]=g;g=p+12|0;c[g>>2]=d;l=b+1064|0;p=lG(c[l>>2]|0,p)|0;do{if((p|0)==0){p=b+1052|0;c[(c[p>>2]|0)+1600>>2]=100;r=c[p>>2]|0;if((c[m>>2]|0)>0){s=0;do{u=r+1600|0;t=c[u>>2]|0;if((t|0)<1){Qe(-1,205192,q)}else{x=+h[d+(s<<3)>>3];w=t+ -1|0;c[u>>2]=w;c[r+(w<<4)>>2]=2;h[r+(c[u>>2]<<4)+8>>3]=x}s=s+1|0;r=c[p>>2]|0}while((s|0)<(c[m>>2]|0))}bI(b,r,0);q=b+8|0;r=c[q>>2]|0;if((r|0)>0){b=b+528|0;do{r=r+ -1|0;w=c[p>>2]|0;t=w+1600|0;s=c[t>>2]|0;do{if((s|0)==100){Qe(-1,203744,o);v=0.0}else{u=c[w+(s<<4)>>2]|0;if((u+ -1|0)>>>0>=2){Qe(-1,204688,n);v=0.0;break}w=w+(s<<4)+8|0;if((u|0)==1){v=+(c[w>>2]|0)}else{v=+h[w>>3]}c[t>>2]=s+1}}while(0);s=e+(r<<3)|0;h[s>>3]=v;x=+h[b+(r<<4)>>3];do{if(v>3]=x}else{x=+h[b+(r<<4)+8>>3];if(v<=x){break}h[s>>3]=x}}while(0);}while((r|0)>0)}n=FW(16)|0;p=c[m>>2]|0;c[n>>2]=205072;a[n+4|0]=1;m=n+8|0;c[m>>2]=p;b=GW(p>>>0>536870911?-1:p<<3)|0;o=n+12|0;c[o>>2]=b;a:do{if((p|0)>0){h[b>>3]=+h[d>>3];if((p|0)<=1){break}h[b+8>>3]=+h[d+8>>3];if((p|0)<=2){break}h[b+16>>3]=+h[d+16>>3];if((p|0)>3){p=3}else{break}while(1){h[b+(p<<3)>>3]=+h[d+(p<<3)>>3];p=p+1|0;if((p|0)>=(c[m>>2]|0)){break a}b=c[o>>2]|0}}}while(0);d=FW(12)|0;p=c[q>>2]|0;c[d>>2]=205136;o=d+4|0;c[o>>2]=p;q=GW(p>>>0>536870911?-1:p<<3)|0;m=d+8|0;c[m>>2]=q;b:do{if((p|0)>0){h[q>>3]=+h[e>>3];if((p|0)<=1){break}h[q+8>>3]=+h[e+8>>3];if((p|0)<=2){break}h[q+16>>3]=+h[e+16>>3];if((p|0)>3){p=3}else{break}while(1){h[q+(p<<3)>>3]=+h[e+(p<<3)>>3];p=p+1|0;if((p|0)>=(c[o>>2]|0)){break b}q=c[m>>2]|0}}}while(0);mG(c[l>>2]|0,n,d)}else{l=b+8|0;if((c[l>>2]|0)<=0){break}d=p+8|0;m=0;do{h[e+(m<<3)>>3]=+h[(c[d>>2]|0)+(m<<3)>>3];m=m+1|0;}while((m|0)<(c[l>>2]|0))}}while(0);c[j>>2]=205072;if((a[k]&1)==0){i=f;return}g=c[g>>2]|0;if((g|0)==0){i=f;return}IW(g);i=f;return}function bI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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,O=0,P=0,Q=0,X=0,Y=0,Z=0,_=0,aa=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,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,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0.0,zd=0,Ad=0,Bd=0.0,Cd=0;g=i;Xb=i;i=i+8|0;Tb=i;i=i+8|0;Sb=i;i=i+8|0;Vb=i;i=i+8|0;Ub=i;i=i+8|0;qd=i;i=i+8|0;sd=i;i=i+8|0;rd=i;i=i+8|0;ud=i;i=i+8|0;td=i;i=i+8|0;Rb=i;i=i+8|0;Qb=i;i=i+8|0;Pb=i;i=i+8|0;Ob=i;i=i+8|0;pd=i;i=i+8|0;od=i;i=i+8|0;Nb=i;i=i+8|0;Mb=i;i=i+8|0;nd=i;i=i+8|0;md=i;i=i+8|0;ld=i;i=i+8|0;kd=i;i=i+8|0;jd=i;i=i+8|0;Ib=i;i=i+8|0;Hb=i;i=i+8|0;Gb=i;i=i+8|0;Fb=i;i=i+8|0;Lb=i;i=i+8|0;Kb=i;i=i+8|0;Jb=i;i=i+8|0;Eb=i;i=i+8|0;Db=i;i=i+8|0;Cb=i;i=i+8|0;id=i;i=i+8|0;hd=i;i=i+8|0;Bb=i;i=i+8|0;zb=i;i=i+8|0;yb=i;i=i+8|0;xb=i;i=i+8|0;wb=i;i=i+8|0;Ab=i;i=i+8|0;cd=i;i=i+8|0;ed=i;i=i+8|0;dd=i;i=i+8|0;gd=i;i=i+8|0;fd=i;i=i+8|0;vb=i;i=i+8|0;ub=i;i=i+8|0;tb=i;i=i+8|0;sb=i;i=i+8|0;rb=i;i=i+8|0;bd=i;i=i+8|0;qb=i;i=i+8|0;pb=i;i=i+8|0;ad=i;i=i+8|0;$c=i;i=i+8|0;ob=i;i=i+8|0;nb=i;i=i+8|0;Wc=i;i=i+8|0;Yc=i;i=i+8|0;Xc=i;i=i+8|0;_c=i;i=i+8|0;Zc=i;i=i+8|0;mb=i;i=i+8|0;lb=i;i=i+8|0;kb=i;i=i+8|0;jb=i;i=i+8|0;ib=i;i=i+8|0;hb=i;i=i+8|0;gb=i;i=i+8|0;fb=i;i=i+8|0;Vc=i;i=i+8|0;Uc=i;i=i+8|0;Tc=i;i=i+8|0;f=i;i=i+8|0;Rc=i;i=i+8|0;xa=i;i=i+8|0;wa=i;i=i+8|0;va=i;i=i+8|0;ua=i;i=i+8|0;ta=i;i=i+8|0;sa=i;i=i+8|0;ra=i;i=i+8|0;qa=i;i=i+8|0;pa=i;i=i+8|0;Qc=i;i=i+8|0;Pc=i;i=i+8|0;Oc=i;i=i+8|0;Nc=i;i=i+8|0;Mc=i;i=i+8|0;oa=i;i=i+8|0;na=i;i=i+8|0;ma=i;i=i+8|0;la=i;i=i+8|0;ka=i;i=i+8|0;ja=i;i=i+8|0;ia=i;i=i+8|0;ha=i;i=i+8|0;ga=i;i=i+8|0;fa=i;i=i+8|0;Kc=i;i=i+8|0;Jc=i;i=i+8|0;Ic=i;i=i+8|0;Hc=i;i=i+8|0;Gc=i;i=i+8|0;Ya=i;i=i+8|0;Xa=i;i=i+8|0;Wa=i;i=i+8|0;Va=i;i=i+8|0;Ua=i;i=i+8|0;Ta=i;i=i+8|0;Sa=i;i=i+8|0;ea=i;i=i+8|0;aa=i;i=i+8|0;_=i;i=i+8|0;Z=i;i=i+8|0;Y=i;i=i+8|0;Fc=i;i=i+8|0;Ec=i;i=i+8|0;Dc=i;i=i+8|0;Cc=i;i=i+8|0;Bc=i;i=i+8|0;ab=i;i=i+8|0;$a=i;i=i+8|0;_a=i;i=i+8|0;Za=i;i=i+8|0;Ac=i;i=i+8|0;zc=i;i=i+8|0;yc=i;i=i+8|0;xc=i;i=i+8|0;wc=i;i=i+8|0;Ba=i;i=i+8|0;Aa=i;i=i+8|0;za=i;i=i+8|0;ya=i;i=i+8|0;vc=i;i=i+8|0;uc=i;i=i+8|0;E=i;i=i+8|0;D=i;i=i+8|0;Ra=i;i=i+8|0;Qa=i;i=i+8|0;Pa=i;i=i+8|0;Oa=i;i=i+8|0;Na=i;i=i+8|0;pc=i;i=i+8|0;rc=i;i=i+8|0;qc=i;i=i+8|0;tc=i;i=i+8|0;sc=i;i=i+8|0;Ma=i;i=i+8|0;La=i;i=i+8|0;Ka=i;i=i+8|0;Ja=i;i=i+8|0;Ia=i;i=i+8|0;Ha=i;i=i+8|0;Ga=i;i=i+8|0;Fa=i;i=i+8|0;x=i;i=i+8|0;w=i;i=i+8|0;C=i;i=i+8|0;B=i;i=i+8|0;A=i;i=i+8|0;z=i;i=i+8|0;y=i;i=i+8|0;oc=i;i=i+8|0;nc=i;i=i+8|0;k=i;i=i+8|0;mc=i;i=i+8|0;lc=i;i=i+8|0;F=i;i=i+8|0;Ea=i;i=i+8|0;Da=i;i=i+8|0;Ca=i;i=i+8|0;v=i;i=i+8|0;u=i;i=i+8|0;t=i;i=i+8|0;s=i;i=i+8|0;kc=i;i=i+8|0;jc=i;i=i+8|0;X=i;i=i+8|0;Q=i;i=i+8|0;P=i;i=i+8|0;O=i;i=i+8|0;N=i;i=i+8|0;M=i;i=i+8|0;L=i;i=i+8|0;K=i;i=i+8|0;r=i;i=i+8|0;q=i;i=i+8|0;p=i;i=i+8|0;o=i;i=i+8|0;n=i;i=i+8|0;ec=i;i=i+8|0;gc=i;i=i+8|0;fc=i;i=i+8|0;ic=i;i=i+8|0;hc=i;i=i+8|0;eb=i;i=i+8|0;db=i;i=i+8|0;cb=i;i=i+8|0;bb=i;i=i+8|0;dc=i;i=i+8|0;cc=i;i=i+8|0;bc=i;i=i+8|0;ac=i;i=i+8|0;$b=i;i=i+8|0;J=i;i=i+8|0;I=i;i=i+8|0;H=i;i=i+8|0;G=i;i=i+8|0;_b=i;i=i+8|0;Zb=i;i=i+8|0;m=i;i=i+8|0;l=i;i=i+8|0;Wb=i;i=i+8|0;Yb=i;i=i+8|0;Sc=i;i=i+16|0;j=b+1048|0;vd=d+1600|0;a:while(1){zd=c[j>>2]|0;xd=c[zd+(e<<4)>>2]|0;if((xd|0)==3){xd=e+1|0;switch(c[zd+(e<<4)+8>>2]|0){case 9:{e=c[vd>>2]|0;do{if((e|0)<100){if((c[d+(e<<4)>>2]|0)==2){e=xd;continue a}else{wd=191}}else{if((e|0)!=100){wd=191;break}Qe(-1,203744,k);wd=197}}while(0);do{if((wd|0)==191){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,nc);wd=197;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==197){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,oc);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=yd;e=xd;continue a}break};case 0:{e=c[vd>>2]|0;do{if((e|0)<100){if((c[d+(e<<4)>>2]|0)!=1){wd=17;break}c[vd>>2]=e+1;zd=c[d+(e<<4)+8>>2]|0;if((e|0)<0){Qe(-1,205192,l);e=xd;continue a}else{c[vd>>2]=e;c[d+(e<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=(zd|0)>-1?zd:0-zd|0;e=xd;continue a}}else{if((e|0)!=100){wd=17;break}Qe(-1,203744,m);wd=23}}while(0);do{if((wd|0)==17){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Zb);wd=23;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==23){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,_b);e=xd;continue a}else{Bd=+S(+yd);e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd;e=xd;continue a}break};case 3:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,n);wd=99}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,o);wd=99;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==99){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,p);Bd=0.0}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,q);Bd=0.0;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}c[vd>>2]=e+1}}while(0);yd=+$(+Bd,+yd)*180.0/3.141592653589793;if(yd<0.0){yd=yd+360.0}e=c[vd>>2]|0;if((e|0)<1){Qe(-1,205192,r);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=yd;e=xd;continue a}break};case 6:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,s);e=0}else{if((c[d+(e<<4)>>2]|0)==1){c[vd>>2]=e+1;e=c[d+(e<<4)+8>>2]|0;break}else{Qe(-1,204688,t);e=0;break}}}while(0);zd=c[vd>>2]|0;Ad=zd+e|0;if((Ad|0)>100){Qe(-1,203744,u);e=xd;continue a}if((zd-e|0)<0){Qe(-1,205192,v);e=xd;continue a}if((e|0)>0){while(1){Ad=Ad+ -1|0;$W(d+(Ad-e<<4)|0,d+(Ad<<4)|0,16)|0;zd=c[vd>>2]|0;if((Ad|0)>(zd|0)){}else{break}}}c[vd>>2]=zd-e;e=xd;continue a};case 11:{e=c[vd>>2]|0;if((e|0)>99){Qe(-1,203744,w);e=xd;continue a}if((e|0)<1){Qe(-1,205192,x);e=xd;continue a}zd=e+1|0;while(1){e=zd+ -1|0;$W(d+(zd+ -2<<4)|0,d+(e<<4)|0,16)|0;zd=c[vd>>2]|0;if((e|0)>(zd|0)){zd=e}else{break}}c[vd>>2]=zd+ -1;e=xd;continue a};case 10:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,y);wd=209}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,z);wd=209;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==209){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,A);wd=218}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,B);wd=218;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==218){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,C);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd/yd;e=xd;continue a}break};case 15:{e=c[vd>>2]|0;if((e|0)<1){Qe(-1,205192,D);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=0;e=xd;continue a}break};case 16:{e=c[vd>>2]|0;do{if((e|0)<100){if((c[d+(e<<4)>>2]|0)==1){e=xd;continue a}else{wd=308}}else{if((e|0)!=100){wd=308;break}Qe(-1,203744,E);wd=314}}while(0);do{if((wd|0)==308){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,uc);wd=314;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==314){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,vc);e=xd;continue a}else{Bd=+R(+yd);e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd;e=xd;continue a}break};case 8:{e=c[vd>>2]|0;do{if((e|0)<100){if((c[d+(e<<4)>>2]|0)==1){e=xd;continue a}else{wd=177}}else{if((e|0)!=100){wd=177;break}Qe(-1,203744,F);wd=183}}while(0);do{if((wd|0)==177){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,lc);wd=183;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==183){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,mc);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=~~yd;e=xd;continue a}break};case 13:{zd=c[vd>>2]|0;$W(Sc|0,d+(zd<<4)|0,16)|0;if((zd|0)==2147483647){zd=zd+1|0}else{while(1){e=zd+1|0;$W(d+(zd<<4)|0,d+(e<<4)|0,16)|0;zd=(c[vd>>2]|0)+1|0;if((e|0)<(zd|0)){zd=e}else{break}}}$W(d+(zd<<4)|0,Sc|0,16)|0;e=xd;continue a};case 1:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=44;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=42;break}if((e|0)==100){Qe(-1,203744,G);zd=c[vd>>2]|0;e=0}else{c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,H);wd=38}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,I);wd=38;break}}}while(0);if((wd|0)==38){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,J);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=zd+e;e=xd;continue a}}else{wd=42}}while(0);do{if((wd|0)==42){if((e|0)!=100){wd=44;break}Qe(-1,203744,$b);wd=50}}while(0);do{if((wd|0)==44){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,ac);wd=50;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==50){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,bc);wd=59}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,cc);wd=59;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==59){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,dc);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=yd+Bd;e=xd;continue a}break};case 4:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,K);wd=118}else{if((c[d+(e<<4)>>2]|0)==1){zd=e+1|0;c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0;break}else{Qe(-1,204688,L);wd=118;break}}}while(0);if((wd|0)==118){wd=0;zd=c[vd>>2]|0;e=0}do{if((zd|0)==100){Qe(-1,203744,M);zd=0}else{if((c[d+(zd<<4)>>2]|0)==1){c[vd>>2]=zd+1;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,N);zd=0;break}}}while(0);if((e|0)>0){Ad=c[vd>>2]|0;if((Ad|0)<1){Qe(-1,205192,O);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=zd<>2]|0;Cd=(Ad|0)<1;if((e|0)<0){if(Cd){Qe(-1,205192,P);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=zd>>>e;e=xd;continue a}}else{if(Cd){Qe(-1,205192,Q);e=xd;continue a}else{e=Ad+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=zd;e=xd;continue a}}break};case 5:{e=c[vd>>2]|0;do{if((e|0)<100){if((c[d+(e<<4)>>2]|0)==1){e=xd;continue a}else{wd=139}}else{if((e|0)!=100){wd=139;break}Qe(-1,203744,X);wd=145}}while(0);do{if((wd|0)==139){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,jc);wd=145;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==145){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,kc);e=xd;continue a}else{Bd=+ca(+yd);e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd;e=xd;continue a}break};case 19:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,Y);wd=395}else{if((c[d+(e<<4)>>2]|0)==1){zd=e+1|0;c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0;break}else{Qe(-1,204688,Z);wd=395;break}}}while(0);if((wd|0)==395){wd=0;zd=c[vd>>2]|0;e=0}do{if((zd|0)==100){Qe(-1,203744,_);wd=401}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,aa);wd=401;break}}}while(0);if((wd|0)==401){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,ea);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=(zd|0)/(e|0)|0;e=xd;continue a}break};case 22:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,fa);wd=458}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,ga);wd=458;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==458){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,ha);e=xd;continue a}else{Bd=+ba(+yd);e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd;e=xd;continue a}break};case 23:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,ia);yd=0.0}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,ja);yd=0.0;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}c[vd>>2]=e+1}}while(0);yd=+Lc(+yd);e=c[vd>>2]|0;if((e|0)<1){Qe(-1,205192,ka);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=yd;e=xd;continue a}break};case 24:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=490;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=488;break}if((e|0)==100){Qe(-1,203744,la);zd=c[vd>>2]|0;e=0}else{c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,ma);wd=484}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,na);wd=484;break}}}while(0);if((wd|0)==484){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,oa);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(zd|0)<(e|0)|0;e=xd;continue a}}else{wd=488}}while(0);do{if((wd|0)==488){if((e|0)!=100){wd=490;break}Qe(-1,203744,Mc);wd=496}}while(0);do{if((wd|0)==490){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Nc);wd=496;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==496){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,Oc);wd=505}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Pc);wd=505;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==505){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,Qc);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=Bd>2]|0;do{if((e|0)==100){Qe(-1,203744,pa);wd=514}else{if((c[d+(e<<4)>>2]|0)==1){zd=e+1|0;c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0;break}else{Qe(-1,204688,qa);wd=514;break}}}while(0);if((wd|0)==514){wd=0;zd=c[vd>>2]|0;e=0}do{if((zd|0)==100){Qe(-1,203744,ra);wd=520}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,sa);wd=520;break}}}while(0);if((wd|0)==520){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,ta);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=(zd|0)%(e|0)|0;e=xd;continue a}break};case 26:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=541;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=539;break}if((e|0)==100){Qe(-1,203744,ua);zd=c[vd>>2]|0;e=0}else{c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,va);wd=535}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,wa);wd=535;break}}}while(0);if((wd|0)==535){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,xa);e=xd;continue a}else{e=da(zd,e)|0;Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=e;e=xd;continue a}}else{wd=539}}while(0);do{if((wd|0)==539){if((e|0)!=100){wd=541;break}Qe(-1,203744,Rc);wd=547}}while(0);do{if((wd|0)==541){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,f);wd=547;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==547){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,Tc);wd=556}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Uc);wd=556;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==556){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,Vc);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=yd*Bd;e=xd;continue a}break};case 17:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=335;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=333;break}if((e|0)==100){Qe(-1,203744,ya);zd=c[vd>>2]|0;e=0}else{c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,za);wd=329}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,Aa);wd=329;break}}}while(0);if((wd|0)==329){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,Ba);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(zd|0)>=(e|0)|0;e=xd;continue a}}else{wd=333}}while(0);do{if((wd|0)==333){if((e|0)!=100){wd=335;break}Qe(-1,203744,wc);wd=341}}while(0);do{if((wd|0)==335){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,xc);wd=341;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==341){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,yc);wd=350}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,zc);wd=350;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==350){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,Ac);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=Bd>=yd|0;e=xd;continue a}break};case 7:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,Ca);wd=169}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Da);wd=169;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==169){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,Ea);e=xd;continue a}else{Bd=+V(+(yd*3.141592653589793/180.0));e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd;e=xd;continue a}break};case 12:{e=c[vd>>2]|0;b:do{if((e|0)<99){Ad=c[d+(e<<4)>>2]|0;zd=(Ad|0)==1;do{if(zd){Ad=e+1|0;if((c[d+(Ad<<4)>>2]|0)!=1){break}if((e|0)==100){Qe(-1,203744,Fa);zd=c[vd>>2]|0;e=0}else{c[vd>>2]=Ad;zd=Ad;e=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,Ga);wd=240}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,Ha);wd=240;break}}}while(0);if((wd|0)==240){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,Ia);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(zd|0)==(e|0)|0;e=xd;continue a}}else{if((Ad+ -1|0)>>>0>=2){wd=266;break b}}}while(0);Ad=e+1|0;if(((c[d+(Ad<<4)>>2]|0)+ -1|0)>>>0>=2){wd=264;break}if((e|0)==100){Qe(-1,203744,Ja);e=c[vd>>2]|0;yd=0.0}else{e=d+(e<<4)+8|0;if(zd){yd=+(c[e>>2]|0)}else{yd=+h[e>>3]}c[vd>>2]=Ad;e=Ad}do{if((e|0)==100){Qe(-1,203744,Ka);wd=260}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,La);wd=260;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==260){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,Ma);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=Bd==yd|0;e=xd;continue a}}else{wd=264}}while(0);do{if((wd|0)==264){wd=0;if((e|0)!=100){wd=266;break}Qe(-1,203744,sc);e=0}}while(0);do{if((wd|0)==266){wd=0;if((c[d+(e<<4)>>2]|0)==0){c[vd>>2]=e+1;e=(a[d+(e<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,tc);e=0;break}}}while(0);zd=c[vd>>2]|0;do{if((zd|0)==100){Qe(-1,203744,qc);Ad=0}else{if((c[d+(zd<<4)>>2]|0)==0){c[vd>>2]=zd+1;Ad=(a[d+(zd<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,rc);Ad=0;break}}}while(0);zd=c[vd>>2]|0;if((zd|0)<1){Qe(-1,205192,pc);e=xd;continue a}else{Cd=zd+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(Ad^e)&1^1;e=xd;continue a}break};case 14:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,Na);wd=288}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Oa);wd=288;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==288){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,Pa);wd=297}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Qa);wd=297;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==297){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,Ra);e=xd;continue a}else{Bd=+U(+Bd,+yd);e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd;e=xd;continue a}break};case 20:{zd=c[vd>>2]|0;do{if((zd|0)==100){Qe(-1,203744,Sa);wd=410}else{if((c[d+(zd<<4)>>2]|0)==1){e=zd+1|0;c[vd>>2]=e;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,Ta);wd=410;break}}}while(0);if((wd|0)==410){wd=0;e=c[vd>>2]|0;zd=0}if((e|0)<1){Qe(-1,205192,Ua);e=xd;continue a}else{Cd=e+ -1|0;c[vd>>2]=Cd;$W(d+(Cd<<4)|0,d+(zd+e<<4)|0,16)|0;e=xd;continue a}break};case 21:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=431;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=429;break}if((e|0)==100){Qe(-1,203744,Va);zd=c[vd>>2]|0;e=0}else{c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,Wa);wd=425}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,Xa);wd=425;break}}}while(0);if((wd|0)==425){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,Ya);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(zd|0)<=(e|0)|0;e=xd;continue a}}else{wd=429}}while(0);do{if((wd|0)==429){if((e|0)!=100){wd=431;break}Qe(-1,203744,Gc);wd=437}}while(0);do{if((wd|0)==431){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Hc);wd=437;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==437){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,Ic);wd=446}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Jc);wd=446;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==446){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,Kc);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=Bd<=yd|0;e=xd;continue a}break};case 18:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=371;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=369;break}if((e|0)==100){Qe(-1,203744,Za);zd=c[vd>>2]|0;e=0}else{c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,_a);wd=365}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,$a);wd=365;break}}}while(0);if((wd|0)==365){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,ab);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(zd|0)>(e|0)|0;e=xd;continue a}}else{wd=369}}while(0);do{if((wd|0)==369){if((e|0)!=100){wd=371;break}Qe(-1,203744,Bc);wd=377}}while(0);do{if((wd|0)==371){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Cc);wd=377;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==377){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,Dc);wd=386}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,Ec);wd=386;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==386){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,Fc);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=Bd>yd|0;e=xd;continue a}break};case 2:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=80;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=78;break}if((e|0)==100){Qe(-1,203744,bb);zd=c[vd>>2]|0;e=0}else{c[vd>>2]=zd;e=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,cb);wd=74}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,db);wd=74;break}}}while(0);if((wd|0)==74){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,eb);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=zd&e;e=xd;continue a}}else{wd=78}}while(0);do{if((wd|0)==78){wd=0;if((e|0)!=100){wd=80;break}Qe(-1,203744,hc);e=0}}while(0);do{if((wd|0)==80){wd=0;if((c[d+(e<<4)>>2]|0)==0){c[vd>>2]=e+1;e=(a[d+(e<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,ic);e=0;break}}}while(0);zd=c[vd>>2]|0;do{if((zd|0)==100){Qe(-1,203744,fc);Ad=0}else{if((c[d+(zd<<4)>>2]|0)==0){c[vd>>2]=zd+1;Ad=(a[d+(zd<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,gc);Ad=0;break}}}while(0);zd=c[vd>>2]|0;if((zd|0)<1){Qe(-1,205192,ec);e=xd;continue a}else{Cd=zd+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=Ad&e&1;e=xd;continue a}break};case 27:{e=c[vd>>2]|0;c:do{if((e|0)<99){Ad=c[d+(e<<4)>>2]|0;zd=(Ad|0)==1;do{if(zd){Ad=e+1|0;if((c[d+(Ad<<4)>>2]|0)!=1){break}if((e|0)==100){Qe(-1,203744,fb);zd=c[vd>>2]|0;e=0}else{c[vd>>2]=Ad;zd=Ad;e=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,gb);wd=571}else{if((c[d+(zd<<4)>>2]|0)==1){Ad=zd+1|0;c[vd>>2]=Ad;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,hb);wd=571;break}}}while(0);if((wd|0)==571){wd=0;Ad=c[vd>>2]|0;zd=0}if((Ad|0)<1){Qe(-1,205192,ib);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(zd|0)!=(e|0)|0;e=xd;continue a}}else{if((Ad+ -1|0)>>>0>=2){wd=597;break c}}}while(0);Ad=e+1|0;if(((c[d+(Ad<<4)>>2]|0)+ -1|0)>>>0>=2){wd=595;break}if((e|0)==100){Qe(-1,203744,jb);e=c[vd>>2]|0;yd=0.0}else{e=d+(e<<4)+8|0;if(zd){yd=+(c[e>>2]|0)}else{yd=+h[e>>3]}c[vd>>2]=Ad;e=Ad}do{if((e|0)==100){Qe(-1,203744,kb);wd=591}else{zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,lb);wd=591;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){Bd=+(c[Ad>>2]|0)}else{Bd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==591){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,mb);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=Bd!=yd|0;e=xd;continue a}}else{wd=595}}while(0);do{if((wd|0)==595){wd=0;if((e|0)!=100){wd=597;break}Qe(-1,203744,Zc);e=0}}while(0);do{if((wd|0)==597){wd=0;if((c[d+(e<<4)>>2]|0)==0){c[vd>>2]=e+1;e=(a[d+(e<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,_c);e=0;break}}}while(0);zd=c[vd>>2]|0;do{if((zd|0)==100){Qe(-1,203744,Xc);Ad=0}else{if((c[d+(zd<<4)>>2]|0)==0){c[vd>>2]=zd+1;Ad=(a[d+(zd<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,Yc);Ad=0;break}}}while(0);zd=c[vd>>2]|0;if((zd|0)<1){Qe(-1,205192,Wc);e=xd;continue a}else{Cd=zd+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(Ad^e)&1;e=xd;continue a}break};case 28:{e=c[vd>>2]|0;do{if((e|0)<100){if((c[d+(e<<4)>>2]|0)!=1){wd=615;break}c[vd>>2]=e+1;if((e|0)<0){Qe(-1,205192,nb);e=xd;continue a}else{Cd=0-(c[d+(e<<4)+8>>2]|0)|0;c[vd>>2]=e;c[d+(e<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=Cd;e=xd;continue a}}else{if((e|0)!=100){wd=615;break}Qe(-1,203744,ob);wd=621}}while(0);do{if((wd|0)==615){wd=0;Ad=c[d+(e<<4)>>2]|0;if((Ad+ -1|0)>>>0>=2){Qe(-1,204688,$c);wd=621;break}zd=d+(e<<4)+8|0;if((Ad|0)==1){yd=+(c[zd>>2]|0)}else{yd=+h[zd>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==621){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,ad);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=-0.0-yd;e=xd;continue a}break};case 29:{e=c[vd>>2]|0;do{if((e|0)<100){if((c[d+(e<<4)>>2]|0)!=1){wd=632;break}c[vd>>2]=e+1;if((e|0)<0){Qe(-1,205192,pb);e=xd;continue a}else{Cd=~c[d+(e<<4)+8>>2];c[vd>>2]=e;c[d+(e<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=Cd;e=xd;continue a}}else{if((e|0)!=100){wd=632;break}Qe(-1,203744,qb);e=1}}while(0);do{if((wd|0)==632){wd=0;if((c[d+(e<<4)>>2]|0)==0){c[vd>>2]=e+1;e=a[d+(e<<4)+8|0]&1^1;break}else{Qe(-1,204688,bd);e=1;break}}}while(0);zd=c[vd>>2]|0;if((zd|0)<1){Qe(-1,205192,rb);e=xd;continue a}else{Cd=zd+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=e;e=xd;continue a}break};case 30:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=655;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=653;break}if((e|0)==100){Qe(-1,203744,sb);zd=c[vd>>2]|0;Ad=0}else{c[vd>>2]=zd;Ad=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,tb);wd=649}else{if((c[d+(zd<<4)>>2]|0)==1){e=zd+1|0;c[vd>>2]=e;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,ub);wd=649;break}}}while(0);if((wd|0)==649){wd=0;e=c[vd>>2]|0;zd=0}if((e|0)<1){Qe(-1,205192,vb);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=zd|Ad;e=xd;continue a}}else{wd=653}}while(0);do{if((wd|0)==653){wd=0;if((e|0)!=100){wd=655;break}Qe(-1,203744,fd);e=0}}while(0);do{if((wd|0)==655){wd=0;if((c[d+(e<<4)>>2]|0)==0){c[vd>>2]=e+1;e=(a[d+(e<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,gd);e=0;break}}}while(0);zd=c[vd>>2]|0;do{if((zd|0)==100){Qe(-1,203744,dd);zd=0}else{if((c[d+(zd<<4)>>2]|0)==0){c[vd>>2]=zd+1;zd=(a[d+(zd<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,ed);zd=0;break}}}while(0);Ad=c[vd>>2]|0;if((Ad|0)<1){Qe(-1,205192,cd);e=xd;continue a}else{Cd=Ad+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(zd|e)&1;e=xd;continue a}break};case 32:{zd=c[vd>>2]|0;do{if((zd|0)==100){Qe(-1,203744,wb);wd=674}else{if((c[d+(zd<<4)>>2]|0)==1){e=zd+1|0;c[vd>>2]=e;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,xb);wd=674;break}}}while(0);if((wd|0)==674){wd=0;e=c[vd>>2]|0;zd=0}do{if((e|0)==100){Qe(-1,203744,yb);e=0}else{if((c[d+(e<<4)>>2]|0)==1){c[vd>>2]=e+1;e=c[d+(e<<4)+8>>2]|0;break}else{Qe(-1,204688,zb);e=0;break}}}while(0);VH(d,e,zd);e=xd;continue a};case 31:{e=c[vd>>2]|0;if((e|0)==100){Qe(-1,203744,Ab);e=xd;continue a}else{c[vd>>2]=e+1;e=xd;continue a}break};case 33:{e=c[vd>>2]|0;do{if((e|0)<100){if((c[d+(e<<4)>>2]|0)==1){e=xd;continue a}else{wd=685}}else{if((e|0)!=100){wd=685;break}Qe(-1,203744,Bb);yd=0.0;wd=691}}while(0);do{if((wd|0)==685){wd=0;Ad=c[d+(e<<4)>>2]|0;if((Ad+ -1|0)>>>0>=2){Qe(-1,204688,hd);yd=0.0;wd=691;break}zd=d+(e<<4)+8|0;if((Ad|0)==1){yd=+(c[zd>>2]|0)}else{yd=+h[zd>>3]}e=e+1|0;c[vd>>2]=e;if(yd>=0.0){wd=691;break}yd=+ca(+(yd+-.5))}}while(0);if((wd|0)==691){wd=0;yd=+R(+(yd+.5));e=c[vd>>2]|0}if((e|0)<1){Qe(-1,205192,id);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=yd;e=xd;continue a}break};case 34:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,Cb);wd=704}else{Ad=c[d+(e<<4)>>2]|0;if((Ad+ -1|0)>>>0>=2){Qe(-1,204688,Db);wd=704;break}zd=d+(e<<4)+8|0;if((Ad|0)==1){yd=+(c[zd>>2]|0)}else{yd=+h[zd>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==704){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,Eb);e=xd;continue a}else{Bd=+W(+(yd*3.141592653589793/180.0));e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd;e=xd;continue a}break};case 36:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=737;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=735;break}if((e|0)==100){Qe(-1,203744,Fb);zd=c[vd>>2]|0;Ad=0}else{c[vd>>2]=zd;Ad=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,Gb);wd=731}else{if((c[d+(zd<<4)>>2]|0)==1){e=zd+1|0;c[vd>>2]=e;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,Hb);wd=731;break}}}while(0);if((wd|0)==731){wd=0;e=c[vd>>2]|0;zd=0}if((e|0)<1){Qe(-1,205192,Ib);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=zd-Ad;e=xd;continue a}}else{wd=735}}while(0);do{if((wd|0)==735){if((e|0)!=100){wd=737;break}Qe(-1,203744,jd);wd=743}}while(0);do{if((wd|0)==737){wd=0;zd=c[d+(e<<4)>>2]|0;if((zd+ -1|0)>>>0>=2){Qe(-1,204688,kd);wd=743;break}Ad=d+(e<<4)+8|0;if((zd|0)==1){yd=+(c[Ad>>2]|0)}else{yd=+h[Ad>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==743){wd=0;e=c[vd>>2]|0;yd=0.0}do{if((e|0)==100){Qe(-1,203744,ld);wd=752}else{Ad=c[d+(e<<4)>>2]|0;if((Ad+ -1|0)>>>0>=2){Qe(-1,204688,md);wd=752;break}zd=d+(e<<4)+8|0;if((Ad|0)==1){Bd=+(c[zd>>2]|0)}else{Bd=+h[zd>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==752){wd=0;e=c[vd>>2]|0;Bd=0.0}if((e|0)<1){Qe(-1,205192,nd);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd-yd;e=xd;continue a}break};case 35:{e=c[vd>>2]|0;do{if((e|0)==100){Qe(-1,203744,Jb);wd=716}else{Ad=c[d+(e<<4)>>2]|0;if((Ad+ -1|0)>>>0>=2){Qe(-1,204688,Kb);wd=716;break}zd=d+(e<<4)+8|0;if((Ad|0)==1){yd=+(c[zd>>2]|0)}else{yd=+h[zd>>3]}e=e+1|0;c[vd>>2]=e}}while(0);if((wd|0)==716){wd=0;e=c[vd>>2]|0;yd=0.0}if((e|0)<1){Qe(-1,205192,Lb);e=xd;continue a}else{Bd=+T(+yd);e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd;e=xd;continue a}break};case 37:{e=c[vd>>2]|0;if((e|0)<1){Qe(-1,205192,Mb);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=1;e=xd;continue a}break};case 38:{e=c[vd>>2]|0;do{if((e|0)<100){if((c[d+(e<<4)>>2]|0)==1){e=xd;continue a}else{wd=763}}else{if((e|0)!=100){wd=763;break}Qe(-1,203744,Nb);yd=0.0;wd=769}}while(0);do{if((wd|0)==763){wd=0;Ad=c[d+(e<<4)>>2]|0;if((Ad+ -1|0)>>>0>=2){Qe(-1,204688,od);yd=0.0;wd=769;break}zd=d+(e<<4)+8|0;if((Ad|0)==1){yd=+(c[zd>>2]|0)}else{yd=+h[zd>>3]}e=e+1|0;c[vd>>2]=e;if(yd>=0.0){wd=769;break}yd=+ca(+yd)}}while(0);if((wd|0)==769){wd=0;yd=+R(+yd);e=c[vd>>2]|0}if((e|0)<1){Qe(-1,205192,pd);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=yd;e=xd;continue a}break};case 39:{e=c[vd>>2]|0;do{if((e|0)<99){if((c[d+(e<<4)>>2]|0)!=1){wd=791;break}zd=e+1|0;if((c[d+(zd<<4)>>2]|0)!=1){wd=789;break}if((e|0)==100){Qe(-1,203744,Ob);zd=c[vd>>2]|0;Ad=0}else{c[vd>>2]=zd;Ad=c[d+(e<<4)+8>>2]|0}do{if((zd|0)==100){Qe(-1,203744,Pb);wd=785}else{if((c[d+(zd<<4)>>2]|0)==1){e=zd+1|0;c[vd>>2]=e;zd=c[d+(zd<<4)+8>>2]|0;break}else{Qe(-1,204688,Qb);wd=785;break}}}while(0);if((wd|0)==785){wd=0;e=c[vd>>2]|0;zd=0}if((e|0)<1){Qe(-1,205192,Rb);e=xd;continue a}else{e=e+ -1|0;c[vd>>2]=e;c[d+(e<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=zd^Ad;e=xd;continue a}}else{wd=789}}while(0);do{if((wd|0)==789){wd=0;if((e|0)!=100){wd=791;break}Qe(-1,203744,td);e=0}}while(0);do{if((wd|0)==791){wd=0;if((c[d+(e<<4)>>2]|0)==0){c[vd>>2]=e+1;e=(a[d+(e<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,ud);e=0;break}}}while(0);zd=c[vd>>2]|0;do{if((zd|0)==100){Qe(-1,203744,rd);Ad=0}else{if((c[d+(zd<<4)>>2]|0)==0){c[vd>>2]=zd+1;Ad=(a[d+(zd<<4)+8|0]&1)!=0;break}else{Qe(-1,204688,sd);Ad=0;break}}}while(0);zd=c[vd>>2]|0;if((zd|0)<1){Qe(-1,205192,qd);e=xd;continue a}else{Cd=zd+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=0;a[d+(c[vd>>2]<<4)+8|0]=(Ad^e)&1;e=xd;continue a}break};case 41:{zd=c[vd>>2]|0;do{if((zd|0)==100){Qe(-1,203744,Sb);wd=815}else{if((c[d+(zd<<4)>>2]|0)!=0){Qe(-1,204688,Tb);wd=815;break}c[vd>>2]=zd+1;if((a[d+(zd<<4)+8|0]&1)==0){wd=815;break}bI(b,d,e+3|0)}}while(0);if((wd|0)==815){wd=0;bI(b,d,c[(c[j>>2]|0)+(xd<<4)+8>>2]|0)}e=c[(c[j>>2]|0)+(e+2<<4)+8>>2]|0;continue a};case 40:{xd=c[vd>>2]|0;do{if((xd|0)==100){Qe(-1,203744,Ub)}else{if((c[d+(xd<<4)>>2]|0)!=0){Qe(-1,204688,Vb);break}c[vd>>2]=xd+1;if((a[d+(xd<<4)+8|0]&1)==0){break}bI(b,d,e+3|0)}}while(0);e=c[(c[j>>2]|0)+(e+2<<4)+8>>2]|0;continue a};case 42:{break a};default:{e=xd;continue a}}}else if((xd|0)==2){Ad=e+1|0;xd=c[vd>>2]|0;if((xd|0)<1){Qe(-1,205192,Wb);e=Ad;continue}else{Bd=+h[zd+(e<<4)+8>>3];Cd=xd+ -1|0;c[vd>>2]=Cd;c[d+(Cd<<4)>>2]=2;h[d+(c[vd>>2]<<4)+8>>3]=Bd;e=Ad;continue}}else if((xd|0)==1){Ad=e+1|0;xd=c[vd>>2]|0;if((xd|0)<1){Qe(-1,205192,Yb);e=Ad;continue}else{Cd=c[zd+(e<<4)+8>>2]|0;zd=xd+ -1|0;c[vd>>2]=zd;c[d+(zd<<4)>>2]=1;c[d+(c[vd>>2]<<4)+8>>2]=Cd;e=Ad;continue}}else{Qe(-1,204408,Xb);continue}}i=g;return}function cI(b){b=b|0;var d=0;d=i;c[b>>2]=205072;if((a[b+4|0]&1)==0){i=d;return}b=c[b+12>>2]|0;if((b|0)==0){i=d;return}IW(b);i=d;return}function dI(b){b=b|0;var d=0,e=0;d=i;b=FW(1048)|0;c[b>>2]=202568;c[b+4>>2]=32;c[b+8>>2]=32;e=0;do{h[b+16+(e<<4)>>3]=0.0;h[b+16+(e<<4)+8>>3]=1.0;e=e+1|0;}while((e|0)<32);a[b+1040|0]=0;i=d;return b|0}function eI(a){a=a|0;i=i;return-1}function fI(a){a=a|0;i=i;return-1}function gI(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;b=FW(2600)|0;$W(b|0,a|0,2600)|0;e=c[b+2588>>2]|0;f=ye(e,8)|0;c[b+2584>>2]=f;$W(f|0,c[a+2584>>2]|0,e<<3|0)|0;c[b+2592>>2]=ye(1<>2],8)|0;i=d;return b|0}function hI(a){a=a|0;i=i;return 0}function iI(b){b=b|0;i=i;return(a[b+2596|0]&1)!=0|0}function jI(a){a=a|0;var b=0,c=0;c=i;b=FW(1576)|0;$W(b|0,a|0,1576)|0;i=c;return b|0}function kI(a){a=a|0;i=i;return 2}function lI(b){b=b|0;i=i;return(a[b+1569|0]&1)!=0|0}function mI(a){a=a|0;var b=0,c=0;c=i;b=FW(1072)|0;RH(b,a);i=c;return b|0}function nI(a){a=a|0;i=i;return 3}function oI(b){b=b|0;i=i;return(a[b+1064|0]&1)!=0|0}function pI(a){a=a|0;var b=0,c=0;c=i;b=FW(1072)|0;ZH(b,a);i=c;return b|0}function qI(a){a=a|0;i=i;return 4}function rI(b){b=b|0;i=i;return(a[b+1060|0]&1)!=0|0}function sI(b){b=b|0;var d=0,e=0;d=i;c[b>>2]=205072;do{if((a[b+4|0]&1)!=0){e=c[b+12>>2]|0;if((e|0)==0){break}IW(e)}}while(0);HW(b);i=d;return}function tI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=c[a+8>>2]|0;if((e|0)!=(c[b+8>>2]|0)){f=0;i=d;return f|0}a=a+12|0;b=b+12|0;f=0;while(1){if((f|0)>=(e|0)){a=1;e=5;break}if(+h[(c[a>>2]|0)+(f<<3)>>3]==+h[(c[b>>2]|0)+(f<<3)>>3]){f=f+1|0}else{a=0;e=5;break}}if((e|0)==5){i=d;return a|0}return 0}function uI(a){a=a|0;var b=0;b=i;c[a>>2]=205136;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}IW(a);i=b;return}function vI(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=205136;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}IW(d);HW(a);i=b;return}function wI(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=a+4|0;c[e>>2]=b;b=ye(b,1)|0;c[a>>2]=b;bX(b|0,0,c[e>>2]|0)|0;i=d;return}function xI(a){a=a|0;var b=0;b=i;bX(c[a>>2]|0,0,c[a+4>>2]|0)|0;i=b;return}function yI(a){a=a|0;var b=0;b=i;Fe(c[a>>2]|0);i=b;return}function zI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=i;b=FW(8)|0;e=a+4|0;g=c[e>>2]|0;c[b+4>>2]=g;f=ye(g,1)|0;c[b>>2]=f;bX(f|0,0,g|0)|0;$W(f|0,c[a>>2]|0,c[e>>2]|0)|0;i=d;return b|0}function AI(a,b){a=a|0;b=b|0;var d=0;d=i;$W(c[a>>2]|0,c[b>>2]|0,c[a+4>>2]|0)|0;i=d;return}function BI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;a[(c[b>>2]|0)+d|0]=(e<<1)+f;i=i;return}function CI(b){b=b|0;c[b+24>>2]=0;c[b+28>>2]=0;a[b+32|0]=0;i=i;return}function DI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;f=b+32|0;k=a[f]|0;if((k&1)==0){i=j;return}h=b+28|0;l=c[h>>2]|0;if((l|0)<=0){i=j;return}d=b+4|0;g=b+24|0;m=c[d>>2]|0;while(1){c[b>>2]=m;if((k&1)==0){e=6}else{k=l+ -1|0;c[h>>2]=k;if((l|0)<1){l=k;m=255}else{e=6}}if((e|0)==6){e=0;m=c[g>>2]|0;m=(jd[c[(c[m>>2]|0)+20>>2]&511](m)|0)&255;l=c[h>>2]|0}c[d>>2]=m;if((l|0)<=0){break}k=a[f]|0}i=j;return}function EI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;f=b+32|0;k=a[f]|0;if((k&1)==0){i=j;return}h=b+28|0;l=c[h>>2]|0;if((l|0)<=0){i=j;return}d=b+4|0;g=b+24|0;m=c[d>>2]|0;while(1){c[b>>2]=m;if((k&1)==0){e=6}else{k=l+ -1|0;c[h>>2]=k;if((l|0)<1){l=k;m=255}else{e=6}}if((e|0)==6){e=0;m=c[g>>2]|0;m=(jd[c[(c[m>>2]|0)+20>>2]&511](m)|0)&255;l=c[h>>2]|0}c[d>>2]=m;if((l|0)<=0){break}k=a[f]|0}i=j;return}function FI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;f=b+32|0;g=a[f]|0;if((g&1)==0){e=3}else{j=b+28|0;h=c[j>>2]|0;c[j>>2]=h+ -1;if((h|0)<1){f=255}else{e=3}}if((e|0)==3){j=c[b+24>>2]|0;j=(jd[c[(c[j>>2]|0)+20>>2]&511](j)|0)&255;g=a[f]|0;f=j}c[b>>2]=f;if((g&1)==0){e=6}else{h=b+28|0;j=c[h>>2]|0;c[h>>2]=j+ -1;if((j|0)<1){g=255}else{e=6}}if((e|0)==6){g=c[b+24>>2]|0;g=(jd[c[(c[g>>2]|0)+20>>2]&511](g)|0)&255;f=c[b>>2]|0}c[b+4>>2]=g;j=b+8|0;c[j>>2]=f<<16^16711680;GI(b);c[j>>2]=c[j>>2]<<7;j=b+16|0;c[j>>2]=(c[j>>2]|0)+ -7;c[b+12>>2]=-2147483648;i=d;return}function GI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;e=i;d=b+4|0;h=c[d>>2]|0;if((c[b>>2]|0)!=255){c[b>>2]=h;if((a[b+32|0]&1)==0){f=10}else{j=b+28|0;g=c[j>>2]|0;c[j>>2]=g+ -1;if((g|0)<1){g=255}else{f=10}}if((f|0)==10){g=c[b+24>>2]|0;g=(jd[c[(c[g>>2]|0)+20>>2]&511](g)|0)&255;h=c[b>>2]|0}c[d>>2]=g;j=b+8|0;c[j>>2]=(c[j>>2]|0)+65280-(h<<8);c[b+16>>2]=8;i=e;return}if(h>>>0>143){c[b+16>>2]=8;i=e;return}c[b>>2]=h;if((a[b+32|0]&1)==0){f=6}else{g=b+28|0;j=c[g>>2]|0;c[g>>2]=j+ -1;if((j|0)<1){g=255}else{f=6}}if((f|0)==6){g=c[b+24>>2]|0;g=(jd[c[(c[g>>2]|0)+20>>2]&511](g)|0)&255;h=c[b>>2]|0}c[d>>2]=g;j=b+8|0;c[j>>2]=(c[j>>2]|0)+65024-(h<<9);c[b+16>>2]=7;i=e;return}function HI(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;g=b+28|0;h=c[g>>2]|0;c[g>>2]=d;if((h|0)==-1){if((a[b+32|0]&1)==0){e=4}else{c[g>>2]=d+ -1;if((d|0)<1){g=255}else{e=4}}if((e|0)==4){g=c[b+24>>2]|0;g=(jd[c[(c[g>>2]|0)+20>>2]&511](g)|0)&255}c[b+4>>2]=g;i=f;return}if((h|0)>=-1){i=f;return}h=b+32|0;j=a[h]|0;if((j&1)==0){e=9}else{c[g>>2]=d+ -1;if((d|0)<1){d=255}else{e=9}}if((e|0)==9){d=c[b+24>>2]|0;d=(jd[c[(c[d>>2]|0)+20>>2]&511](d)|0)&255;j=a[h]|0}c[b>>2]=d;if((j&1)==0){e=12}else{j=c[g>>2]|0;c[g>>2]=j+ -1;if((j|0)<1){g=255}else{e=12}}if((e|0)==12){g=c[b+24>>2]|0;g=(jd[c[(c[g>>2]|0)+20>>2]&511](g)|0)&255}c[b+4>>2]=g;i=f;return}function II(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;m=d[(c[f>>2]|0)+e|0]|0;l=m>>>1;m=m&1;k=c[205384+(l<<2)>>2]|0;h=b+12|0;o=(c[h>>2]|0)-k|0;c[h>>2]=o;j=b+8|0;n=c[j>>2]|0;if(n>>>0>=o>>>0){c[j>>2]=n-o;do{if(o>>>0>>0){a[(c[f>>2]|0)+e|0]=c[205576+(l<<2)>>2]<<1|m}else{n=m^1;o=c[205768+(l<<2)>>2]<<1;if((c[205960+(l<<2)>>2]|0)==0){a[(c[f>>2]|0)+e|0]=o|m;m=n;break}else{a[(c[f>>2]|0)+e|0]=o|n;m=n;break}}}while(0);c[h>>2]=k;l=b+16|0;f=c[l>>2]|0;do{if((f|0)==0){GI(b);f=c[l>>2]|0;k=c[h>>2]|0}k=k<<1;c[h>>2]=k;c[j>>2]=c[j>>2]<<1;f=f+ -1|0;c[l>>2]=f;}while((k|0)>-1);i=g;return m|0}if((o|0)<0){o=m;i=g;return o|0}do{if(o>>>0>>0){n=m^1;k=c[205768+(l<<2)>>2]<<1;if((c[205960+(l<<2)>>2]|0)==0){a[(c[f>>2]|0)+e|0]=k|m;m=n;break}else{a[(c[f>>2]|0)+e|0]=k|n;m=n;break}}else{a[(c[f>>2]|0)+e|0]=c[205576+(l<<2)>>2]<<1|m}}while(0);k=b+16|0;l=c[k>>2]|0;do{if((l|0)==0){GI(b);l=c[k>>2]|0}o=c[h>>2]<<1;c[h>>2]=o;c[j>>2]=c[j>>2]<<1;l=l+ -1|0;c[k>>2]=l;}while((o|0)>-1);i=g;return m|0}function JI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;g=a+20|0;c[g>>2]=1;f=II(a,1,d)|0;n=c[g>>2]|0;h=n<<1|f;if(n>>>0>=256){h=h&255|256}c[g>>2]=h;j=II(a,h,d)|0;n=c[g>>2]|0;h=n<<1|j;if(n>>>0>=256){h=h&255|256}c[g>>2]=h;h=II(a,h,d)|0;n=c[g>>2]|0;k=n<<1|h;if(n>>>0>=256){k=k&255|256}c[g>>2]=k;do{if((j|0)==0){a=II(a,k,d)|0;n=c[g>>2]|0;d=n<<1|a;if(n>>>0>=256){d=d&255|256}c[g>>2]=d;g=a|h<<1}else{j=II(a,k,d)|0;n=c[g>>2]|0;k=n<<1|j;if(n>>>0>=256){k=k&255|256}c[g>>2]=k;if((h|0)==0){h=II(a,k,d)|0;n=c[g>>2]|0;k=n<<1|h;if(n>>>0>=256){k=k&255|256}c[g>>2]=k;k=II(a,k,d)|0;n=c[g>>2]|0;l=n<<1|k;if(n>>>0>=256){l=l&255|256}c[g>>2]=l;a=II(a,l,d)|0;n=c[g>>2]|0;d=n<<1|a;if(n>>>0>=256){d=d&255|256}c[g>>2]=d;g=(a|(k|(h|j<<1)<<1)<<1)+4|0;break}h=II(a,k,d)|0;k=c[g>>2]|0;l=k>>>0<256;k=k<<1|h;if((j|0)==0){if(!l){k=k&255|256}c[g>>2]=k;j=II(a,k,d)|0;n=c[g>>2]|0;k=n<<1|j;if(n>>>0>=256){k=k&255|256}c[g>>2]=k;k=II(a,k,d)|0;n=c[g>>2]|0;l=n<<1|k;if(n>>>0>=256){l=l&255|256}c[g>>2]=l;l=II(a,l,d)|0;n=c[g>>2]|0;m=n<<1|l;if(n>>>0>=256){m=m&255|256}c[g>>2]=m;m=II(a,m,d)|0;o=c[g>>2]|0;n=o<<1|m;if(o>>>0>=256){n=n&255|256}c[g>>2]=n;a=II(a,n,d)|0;o=c[g>>2]|0;d=o<<1|a;if(o>>>0>=256){d=d&255|256}c[g>>2]=d;g=(a|(m|(l|(k|(j|h<<1)<<1)<<1)<<1)<<1)+20|0;break}if(l){j=k}else{j=k&255|256}c[g>>2]=j;if((h|0)==0){h=0;k=0;do{l=II(a,j,d)|0;o=c[g>>2]|0;j=o<<1|l;if(o>>>0>=256){j=j&255|256}c[g>>2]=j;k=l|k<<1;h=h+1|0;}while((h|0)<8);g=k+84|0;break}h=II(a,j,d)|0;o=c[g>>2]|0;j=o<<1|h;if(o>>>0>=256){j=j&255|256}c[g>>2]=j;if((h|0)==0){h=0;k=0;do{l=II(a,j,d)|0;o=c[g>>2]|0;j=o<<1|l;if(o>>>0>=256){j=j&255|256}c[g>>2]=j;k=l|k<<1;h=h+1|0;}while((h|0)<12);g=k+340|0;break}else{h=0;k=0;do{l=II(a,j,d)|0;o=c[g>>2]|0;j=o<<1|l;if(o>>>0>=256){j=j&255|256}c[g>>2]=j;k=l|k<<1;h=h+1|0;}while((h|0)<32);g=k+4436|0;break}}}while(0);do{if((f|0)!=0){if((g|0)==0){o=0;i=e;return o|0}else{g=0-g|0;break}}}while(0);c[b>>2]=g;o=1;i=e;return o|0}function KI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=a+20|0;c[f>>2]=1;if((b|0)==0){g=1;h=1<>2]<<1|h;c[f>>2]=h;g=g+1|0;if(g>>>0>>0){}else{break}}g=1<>2]|0]&1)!=0);c[b>>2]=206160;a[b+176|0]=a[(c[w>>2]|0)+1|0]&1;w=c[d+24>>2]|0;d=b+120|0;if((RJ(w,d)|0)!=0){i=j;return}c[w+88>>2]=c[d>>2];d=b+24|0;u=+h[d>>3];f=b+32|0;k=+h[f>>3];k=+T(+(u*u+k*k));g=b+168|0;u=(~~k|0)<1?1.0:k;h[g>>3]=u;if((bK(w,0,~~u)|0)!=0){i=j;return}l=+h[b+56>>3];k=+h[b+64>>3];n=+T(+(l*l+k*k));o=+h[g>>3];n=n/o;h[b+160>>3]=n;t=w+60|0;u=(c[t>>2]|0)>2e4?65536.0:1.0;m=+h[b+8>>3];z=w+52|0;p=+h[d>>3];x=w+56|0;v=w+68|0;A=~~((m*+(c[z>>2]|0)+p*+(c[x>>2]|0))/(u*+(e[v>>1]|0|0)));d=b+84|0;c[d>>2]=A;g=b+76|0;c[g>>2]=A;q=+h[b+16>>3];s=+h[f>>3];B=~~((q*+(c[z>>2]|0)+s*+(c[x>>2]|0))/(u*+(e[v>>1]|0|0)));r=b+88|0;c[r>>2]=B;f=b+80|0;c[f>>2]=B;w=w+64|0;C=~~((m*+(c[z>>2]|0)+p*+(c[w>>2]|0))/(u*+(e[v>>1]|0|0)));do{if((C|0)<(A|0)){c[g>>2]=C;y=A}else{if((C|0)<=(A|0)){y=A;C=A;break}c[d>>2]=C;y=C;C=A}}while(0);A=~~((q*+(c[z>>2]|0)+s*+(c[w>>2]|0))/(u*+(e[v>>1]|0|0)));do{if((A|0)<(B|0)){c[f>>2]=A;z=B}else{if((A|0)<=(B|0)){z=B;A=B;break}c[r>>2]=A;z=A;A=B}}while(0);B=~~((m*+(c[t>>2]|0)+p*+(c[x>>2]|0))/(u*+(e[v>>1]|0|0)));do{if((B|0)<(C|0)){c[g>>2]=B;C=B}else{if((B|0)<=(y|0)){break}c[d>>2]=B;y=B}}while(0);B=~~((q*+(c[t>>2]|0)+s*+(c[x>>2]|0))/(u*+(e[v>>1]|0|0)));do{if((B|0)<(A|0)){c[f>>2]=B;x=z;A=B}else{if((B|0)<=(z|0)){x=z;break}c[r>>2]=B;x=B}}while(0);z=~~((m*+(c[t>>2]|0)+p*+(c[w>>2]|0))/(u*+(e[v>>1]|0|0)));do{if((z|0)<(C|0)){c[g>>2]=z;C=z}else{if((z|0)<=(y|0)){break}c[d>>2]=z;y=z}}while(0);t=~~((q*+(c[t>>2]|0)+s*+(c[w>>2]|0))/(u*+(e[v>>1]|0|0)));do{if((t|0)<(A|0)){c[f>>2]=t;A=t}else{if((t|0)<=(x|0)){break}c[r>>2]=t;x=t}}while(0);if((y|0)==(C|0)){c[g>>2]=0;c[d>>2]=~~o}if((x|0)==(A|0)){c[f>>2]=0;c[r>>2]=~~(o*1.2)}c[b+124>>2]=~~(m/o*65536.0);c[b+132>>2]=~~(q/o*65536.0);c[b+128>>2]=~~(p/o*65536.0);c[b+136>>2]=~~(s/o*65536.0);u=o*n;c[b+140>>2]=~~(+h[b+40>>3]/u*65536.0);c[b+148>>2]=~~(+h[b+48>>3]/u*65536.0);c[b+144>>2]=~~(l/u*65536.0);c[b+152>>2]=~~(k/u*65536.0);i=j;return}function MI(a){a=a|0;var b=0;b=i;wH(a);HW(a);i=b;return}function NI(a){a=a|0;var b=0;b=i;wH(a);i=b;return}function OI(a,b,c,d,e,f,g,h,j){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;var k=0;k=i;d=xH(a,b,c,0,e,f,g,h,j)|0;i=k;return d|0}function PI(b,d,f,g,h,j,k,l,m){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;g=i;s=i;i=i+8|0;r=s;q=i;i=i+16|0;n=q;o=c[b+4>>2]|0;p=o+24|0;c[(c[p>>2]|0)+88>>2]=c[b+120>>2];c[s>>2]=~~(+(f|0)*.25*64.0);c[r+4>>2]=0;FJ(c[p>>2]|0,b+124|0,r);r=c[p>>2]|0;f=c[r+84>>2]|0;s=c[o+28>>2]|0;do{if((s|0)!=0){if((c[o+32>>2]|0)<=(d|0)){break}d=e[s+(d<<1)>>1]|0}}while(0);o=b+72|0;s=(a[o]&1)!=0;u=(a[b+176|0]&1)!=0;t=s^1;b=u^1;do{if(t|b){if(!(u|t)){b=10;break}b=s|b?2:0}else{b=8}}while(0);if((YI(r,d,b)|0)!=0){u=0;i=g;return u|0}zK((c[(c[p>>2]|0)+84>>2]|0)+108|0,n);d=c[q>>2]|0;s=((d|0)/-64|0)+2|0;c[h>>2]=s;u=c[n+12>>2]|0;t=((u|0)/64|0)+2|0;q=h+4|0;c[q>>2]=t;d=(((c[n+8>>2]|0)-d|0)/64|0)+4|0;p=h+8|0;c[p>>2]=d;u=((u-(c[n+4>>2]|0)|0)/64|0)+4|0;n=h+12|0;c[n>>2]=u;s=j-s|0;t=k-t|0;u=Jp(l,s,t,d+s|0,t+u|0)|0;c[m>>2]=u;if((u|0)==1){a[h+24|0]=0;u=1;i=g;return u|0}if((JJ(f,(a[o]&1)!=0?0:2)|0)!=0){u=0;i=g;return u|0}c[h>>2]=0-(c[f+100>>2]|0);c[q>>2]=c[f+104>>2];m=c[f+80>>2]|0;c[p>>2]=m;l=c[f+76>>2]|0;c[n>>2]=l;a[h+16|0]=a[o]&1;if((a[o]&1)==0){m=m+7>>3}l=ze(m,l)|0;c[h+20>>2]=l;if((l|0)==0){u=0;i=g;return u|0}a[h+24|0]=1;if((c[n>>2]|0)<=0){u=1;i=g;return u|0}h=f+84|0;k=0;f=c[f+88>>2]|0;while(1){$W(l|0,f|0,m|0)|0;k=k+1|0;if((k|0)<(c[n>>2]|0)){f=f+(c[h>>2]|0)|0;l=l+m|0}else{f=1;break}}i=g;return f|0}function QI(b,d){b=b|0;d=d|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;g=i;f=i;i=i+8|0;k=f;m=i;i=i+16|0;n=m;j=c[b+4>>2]|0;c[m>>2]=65536;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=65536;c[f>>2]=0;c[k+4>>2]=0;f=j+24|0;c[(c[f>>2]|0)+88>>2]=c[b+120>>2];FJ(c[f>>2]|0,n,k);k=c[j+28>>2]|0;do{if((k|0)!=0){if((c[j+32>>2]|0)<=(d|0)){break}d=e[k+(d<<1)>>1]|0}}while(0);if((a[j+36|0]&1)!=0&(d|0)==0){o=-1.0;i=g;return+o}j=c[f>>2]|0;k=(a[b+72|0]&1)!=0;n=(a[b+176|0]&1)!=0;m=k^1;l=n^1;do{if(m|l){if(!(n|m)){k=10;break}k=k|l?2:0}else{k=8}}while(0);if((YI(j,d,k)|0)!=0){o=-1.0;i=g;return+o}o=+(c[(c[(c[f>>2]|0)+84>>2]|0)+40>>2]|0)*.015625/+h[b+168>>3];i=g;return+o}function RI(b,d){b=b|0;d=d|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=i;k=i;i=i+24|0;l=k;f=i;i=i+8|0;g=f;o=c[b+4>>2]|0;j=o+24|0;c[(c[j>>2]|0)+88>>2]=c[b+120>>2];FJ(c[j>>2]|0,b+140|0,0);j=c[j>>2]|0;m=c[j+84>>2]|0;p=c[o+28>>2]|0;do{if((p|0)!=0){if((c[o+32>>2]|0)<=(d|0)){break}d=e[p+(d<<1)>>1]|0}}while(0);if((a[o+36|0]&1)!=0&(d|0)==0){r=0;i=n;return r|0}q=(a[b+72|0]&1)!=0;o=(a[b+176|0]&1)!=0;p=q^1;r=o^1;do{if(p|r){if(!(o|p)){o=10;break}o=q|r?2:0}else{o=8}}while(0);if((YI(j,d,o)|0)!=0){r=0;i=n;return r|0}if((DL(m,g)|0)!=0){r=0;i=n;return r|0}r=FW(32)|0;gq(r);c[k>>2]=r;h[l+8>>3]=+h[b+160>>3];r=l+16|0;a[r]=0;uK((c[f>>2]|0)+20|0,206184,l)|0;if((a[r]&1)!=0){mq(c[k>>2]|0)|0}CL(c[f>>2]|0);r=c[k>>2]|0;i=n;return r|0}function SI(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0;e=i;f=d+16|0;if((a[f]&1)!=0){mq(c[d>>2]|0)|0;a[f]=0}g=+h[d+8>>3];jq(c[d>>2]|0,+(c[b>>2]|0)*g*.015625,g*+(c[b+4>>2]|0)*.015625)|0;i=e;return 0}function TI(b,d){b=b|0;d=d|0;var e=0,f=0.0;e=i;f=+h[d+8>>3];kq(c[d>>2]|0,+(c[b>>2]|0)*f*.015625,f*+(c[b+4>>2]|0)*.015625)|0;a[d+16|0]=1;i=e;return 0}function UI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0;f=i;g=i;i=i+8|0;j=i;i=i+8|0;if(!(pq(c[e>>2]|0,g,j)|0)){i=f;return 0}m=+h[e+8>>3];l=m*+(c[d>>2]|0)*.015625;k=m*+(c[d+4>>2]|0)*.015625;n=+(c[b>>2]|0)*m*.015625*2.0;m=m*+(c[b+4>>2]|0)*.015625*2.0;lq(c[e>>2]|0,(n+ +h[g>>3])*.3333333333333333,(+h[j>>3]+m)*.3333333333333333,(n+l)*.3333333333333333,(m+k)*.3333333333333333,l,k)|0;a[e+16|0]=1;i=f;return 0}function VI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0.0;g=i;j=+h[f+8>>3];lq(c[f>>2]|0,+(c[b>>2]|0)*j*.015625,j*+(c[b+4>>2]|0)*.015625,j*+(c[d>>2]|0)*.015625,j*+(c[d+4>>2]|0)*.015625,j*+(c[e>>2]|0)*.015625,j*+(c[e+4>>2]|0)*.015625)|0;a[f+16|0]=1;i=g;return 0}function WI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;if((a|0)==0){g=35;i=f;return g|0}if((c[a+16>>2]|0)>>>0<=b>>>0){g=16;i=f;return g|0}g=c[(c[(c[a+96>>2]|0)+20>>2]|0)+92>>2]|0;do{if((g|0)!=0){if(!((d&3|0)!=0|(d&983040|0)==65536)){break}g=Cd[g&63](a,b,1,d,e)|0;if((g|0)==7){break}else if((g|0)!=0){i=f;return g|0}if((d&1|0)!=0){g=0;i=f;return g|0}a=c[a+88>>2]|0;if((a|0)==0){g=36;i=f;return g|0}c[e>>2]=_I(c[e>>2]|0,c[((d&16|0)==0?a+16|0:a+20|0)>>2]|0,64)|0;g=0;i=f;return g|0}}while(0);g=XI(a,b,1,d,e)|0;i=f;return g|0}function XI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;if((a|0)==0){k=35;i=g;return k|0}k=c[a+16>>2]|0;h=d+b|0;if(k>>>0<=b>>>0|h>>>0>>0|h>>>0>k>>>0){k=16;i=g;return k|0}if((d|0)==0){k=0;i=g;return k|0}h=c[(c[(c[a+96>>2]|0)+20>>2]|0)+92>>2]|0;do{if((h|0)==0){j=7}else{if(!((e&3|0)!=0|(e&983040|0)==65536)){j=7;break}k=Cd[h&63](a,b,d,e,f)|0;if((k|0)==0){h=e;break}else if((k|0)==7){j=7;break}i=g;return k|0}}while(0);a:do{if((j|0)==7){if((e&536870912|0)!=0){k=7;i=g;return k|0}h=e|256;j=a+84|0;if((e&16|0)==0){e=0;while(1){k=YI(a,e+b|0,h)|0;if((k|0)!=0){break}c[f+(e<<2)>>2]=c[(c[j>>2]|0)+64>>2];e=e+1|0;if(e>>>0>=d>>>0){break a}}i=g;return k|0}else{e=0;while(1){k=YI(a,e+b|0,h)|0;if((k|0)!=0){break}c[f+(e<<2)>>2]=c[(c[j>>2]|0)+68>>2];e=e+1|0;if(e>>>0>=d>>>0){break a}}i=g;return k|0}}}while(0);if((h&1|0)!=0){k=0;i=g;return k|0}a=c[a+88>>2]|0;if((a|0)==0){k=36;i=g;return k|0}a=c[((h&16|0)==0?a+16|0:a+20|0)>>2]|0;b=0;while(1){k=f+(b<<2)|0;c[k>>2]=_I(c[k>>2]|0,a,64)|0;b=b+1|0;if(b>>>0>>0){}else{k=0;break}}i=g;return k|0}function YI(d,e,f){d=d|0;e=e|0;f=f|0;var 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;g=i;if((d|0)==0){t=35;i=g;return t|0}l=d+88|0;if((c[l>>2]|0)==0){t=35;i=g;return t|0}h=c[d+84>>2]|0;if((h|0)==0){t=35;i=g;return t|0}p=h+156|0;n=c[p>>2]|0;do{if((n|0)==0){k=9}else{if((c[n+4>>2]&1|0)==0){k=9;break}m=c[(c[h+4>>2]|0)+100>>2]|0;j=h+88|0;o=c[j>>2]|0;if((o|0)!=0){hd[c[m+8>>2]&127](m,o);n=c[p>>2]|0}c[j>>2]=0;t=n+4|0;c[t>>2]=c[t>>2]&-2}}while(0);if((k|0)==9){c[h+88>>2]=0}m=h+24|0;a[h+94|0]=0;j=h+72|0;bX(m|0,0,40)|0;bX(j|0,0,16)|0;bX(h+100|0,0,56)|0;n=c[d+96>>2]|0;o=c[(c[n+4>>2]|0)+168>>2]|0;f=(f&1024|0)==0?f:f|2049;if((f&1|0)!=0){f=f&-15|10}a:do{if((o|0)==0){k=28}else{if((f&32770|0)!=0){k=28;break}p=c[c[n>>2]>>2]|0;if((p&768|0)!=256){k=28;break}q=c[d+8>>2]|0;if((q&8192|0)!=0){k=28;break}r=d+128|0;s=c[r>>2]|0;t=(c[s+4>>2]|0)==0;if((c[s+12>>2]|0)==0){if(t){k=28;break}}else{if(!t){k=28;break}}do{if((f&32|0)==0){if((p&1024|0)==0){break}if((f&983040|0)==65536){break}if((a[s+56|0]|0)==0){k=28;break a}}}while(0);do{if((q&2|0)!=0){if((f&8|0)!=0){break}if((pd[c[(c[n+20>>2]|0)+80>>2]&63](h,c[l>>2]|0,e,f|16384)|0)!=0){break}if((c[j>>2]|0)==1651078259){m=0;break a}}}while(0);t=(c[r>>2]|0)+28|0;s=c[t>>2]|0;c[t>>2]=0;m=Cd[c[(c[(c[o>>2]|0)+20>>2]|0)+12>>2]&63](o,h,c[l>>2]|0,e,f)|0;c[t>>2]=s}}while(0);do{if((k|0)==28){k=pd[c[(c[n+20>>2]|0)+80>>2]&63](h,c[l>>2]|0,e,f)|0;if((k|0)!=0){t=k;i=g;return t|0}if((c[j>>2]|0)!=1869968492){m=0;break}n=b[h+110>>1]|0;k=n<<16>>16;o=b[h+108>>1]|0;e=o<<16>>16;do{if((o|n)<<16>>16!=0){if(n<<16>>16<1|o<<16>>16<1){t=6;i=g;return t|0}b:do{if(o<<16>>16>0){q=c[h+120>>2]|0;o=-1;r=0;while(1){t=b[q+(r<<1)>>1]|0;p=t<<16>>16;r=r+1|0;if(!((p|0)>(o|0)&t<<16>>16>16)){h=6;break}if((r|0)<(e|0)){o=p}else{break b}}i=g;return h|0}else{p=-1}}while(0);if((p|0)==(k+ -1|0)){break}else{h=6}i=g;return h|0}}while(0);if((f&2|0)!=0){m=0;break}if((f&16|0)==0){n=h+44|0;c[n>>2]=c[n>>2]&-64;n=h+48|0;c[n>>2]=c[n>>2]&-64;n=h+32|0;q=c[n>>2]|0;p=q+63+(c[m>>2]|0)&-64;o=h+36|0;r=c[o>>2]|0;t=h+28|0;s=r-(c[t>>2]|0)&-64;q=q&-64;c[n>>2]=q;r=r+63&-64;c[o>>2]=r;c[m>>2]=p-q;c[t>>2]=r-s}else{n=h+32|0;c[n>>2]=c[n>>2]&-64;n=h+36|0;c[n>>2]=(c[n>>2]|0)+63&-64;n=h+44|0;q=c[n>>2]|0;p=q+63+(c[m>>2]|0)&-64;o=h+48|0;s=c[o>>2]|0;t=h+28|0;r=s+63+(c[t>>2]|0)&-64;q=q&-64;c[n>>2]=q;s=s&-64;c[o>>2]=s;c[m>>2]=p-q;c[t>>2]=r-s}m=h+40|0;c[m>>2]=(c[m>>2]|0)+32&-64;m=h+52|0;c[m>>2]=(c[m>>2]|0)+32&-64;m=0}}while(0);if((f&16|0)==0){c[h+64>>2]=c[h+40>>2];c[h+68>>2]=0}else{c[h+64>>2]=0;c[h+68>>2]=c[h+52>>2]}do{if((f&8192|0)==0){if((c[d+8>>2]&1|0)==0){break}s=c[l>>2]|0;t=h+56|0;c[t>>2]=_I(c[t>>2]|0,c[s+16>>2]|0,64)|0;t=h+60|0;c[t>>2]=_I(c[t>>2]|0,c[s+20>>2]|0,64)|0}}while(0);do{if((f&2048|0)==0){d=c[d+128>>2]|0;if((c[d+28>>2]|0)==0){break}l=c[(c[(c[h+4>>2]|0)+96>>2]|0)+4>>2]|0;k=c[l+164>>2]|0;if((k|0)==0){e=c[j>>2]|0;k=53}else{e=c[j>>2]|0;if((c[k+24>>2]|0)==(e|0)){m=k;k=58}else{k=53}}c:do{if((k|0)==53){d:do{if((l|0)!=0){n=c[l+156>>2]|0;if((n|0)==0){break}while(1){l=c[n+8>>2]|0;if((c[l+24>>2]|0)==(e|0)){break}n=c[n+4>>2]|0;if((n|0)==0){break d}}if((l|0)!=0){m=l;k=58;break c}}}while(0);l=d+4|0;if((e|0)!=1869968492){break}n=h+112|0;p=c[n>>2]|0;e=h+110|0;t=b[e>>1]|0;o=p+(t<<16>>16<<3)|0;if(t<<16>>16<=0){break}do{IJ(p,l);p=p+8|0;}while(p>>>0>>0);o=c[d+20>>2]|0;d=c[d+24>>2]|0;if((b[e>>1]|0)<=0){break}p=0;n=c[n>>2]|0;while(1){c[n>>2]=(c[n>>2]|0)+o;t=n+4|0;c[t>>2]=(c[t>>2]|0)+d;p=p+1<<16>>16;if((p&65535|0)<(b[e>>1]|0)){n=n+8|0}else{break}}}}while(0);if((k|0)==58){t=d+4|0;l=t;m=pd[c[(c[m+20>>2]|0)+44>>2]&63](m,h,t,d+20|0)|0}IJ(h+64|0,l)}}while(0);if((m|0)!=0){t=m;i=g;return t|0}t=c[j>>2]|0;if((t|0)==1668246896|(t|0)==1651078259){t=0;i=g;return t|0}if((f&4|0)==0){t=0;i=g;return t|0}j=f>>>16&15;k=c[h+4>>2]|0;if((k|0)==0){t=6;i=g;return t|0}t=jK(c[(c[k+96>>2]|0)+4>>2]|0,h,(j|0)!=0|(f&4096|0)==0?j:2)|0;i=g;return t|0}function ZI(a){a=a|0;var b=0;b=i;if((a|0)>-1){a=a+32768&-65536;i=b;return a|0}else{a=0-(32768-a&-65536)|0;i=b;return a|0}return 0}function _I(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,k=0;d=i;if((a|0)==0|(b|0)==(c|0)){i=d;return a|0}g=(a|0)<0?0-a|0:a;f=(b|0)<0?0-b|0:b;b=b^a^c;c=(c|0)<0?0-c|0:c;do{if((g|0)<46341&(f|0)<46341){if((c+ -1|0)>>>0>=176095){e=5;break}g=((c>>1)+(da(f,g)|0)|0)/(c|0)|0}else{e=5}}while(0);do{if((e|0)==5){if((c|0)<=0){g=2147483647;break}a=g&65535;j=g>>>16;e=f&65535;k=f>>>16;f=da(e,j)|0;h=(da(k,a)|0)+f|0;g=h<<16;a=g+(da(e,a)|0)|0;e=a+(c>>1)|0;a=(h>>>16)+(da(k,j)|0)+((h>>>0>>0)<<16)+(a>>>0>>0)+(e>>>0>>0)|0;if(a>>>0>>0){f=32;g=0}else{g=2147483647;break}while(1){g=g<<1;a=a<<1|e>>>31;if(a>>>0>=c>>>0){g=g|1;a=a-c|0}f=f+ -1|0;if((f|0)==0){break}else{e=e<<1}}}}while(0);k=(b|0)<0?0-g|0:g;i=d;return k|0}function $I(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,k=0,l=0;d=i;if((a|0)==0|(b|0)==(c|0)){g=a;i=d;return g|0}f=(a|0)<0?0-a|0:a;e=(b|0)<0?0-b|0:b;b=b^a^c;c=(c|0)<0?0-c|0:c;a=(c|0)>0;do{if((f|0)<46341&(e|0)<46341&a){a=(da(e,f)|0)/(c|0)|0}else{if(!a){a=2147483647;break}k=f&65535;h=f>>>16;l=e&65535;j=e>>>16;a=da(l,h)|0;f=(da(j,k)|0)+a|0;g=f<<16;e=g+(da(l,k)|0)|0;g=(f>>>16)+(da(j,h)|0)+((f>>>0>>0)<<16)+(e>>>0>>0)|0;if(g>>>0>>0){f=32;a=0}else{a=2147483647;break}while(1){a=a<<1;g=g<<1|e>>>31;if(g>>>0>=c>>>0){a=a|1;g=g-c|0}f=f+ -1|0;if((f|0)==0){break}else{e=e<<1}}}}while(0);l=(b|0)<0?0-a|0:a;i=d;return l|0}function aJ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=i;if((a|0)==0|(b|0)==65536){e=a;i=c;return e|0}d=(a|0)<0?0-a|0:a;e=(b|0)<0?0-b|0:b;if(d>>>0<2049&e>>>0<1048577){d=((da(e,d)|0)+32768|0)>>>16}else{f=d&65535;d=(da(e>>>16,f)|0)+(da(d>>>16,e)|0)+(((da(e&65535,f)|0)+32768|0)>>>16)|0}f=(b^a|0)<0?0-d|0:d;i=c;return f|0}function bJ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=i;d=(a|0)<0?0-a|0:a;a=b^a;b=(b|0)<0?0-b|0:b;do{if((b|0)==0){f=2147483647}else{e=d>>16;f=d<<16;d=(b>>1)+f|0;if((e|0)==0){f=(d>>>0)/(b>>>0)|0;break}g=(d>>>0>>0)+e|0;if(g>>>0>>0){e=32;f=0}else{f=2147483647;break}while(1){f=f<<1;g=g<<1|d>>>31;if(g>>>0>=b>>>0){f=f|1;g=g-b|0}e=e+ -1|0;if((e|0)==0){break}else{d=d<<1}}}}while(0);i=c;return((a|0)<0?0-f|0:f)|0}function cJ(a){a=a|0;var b=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;b=i;if((a|0)==0){r=6;i=b;return r|0}f=c[a>>2]|0;d=a+12|0;j=c[d>>2]|0;if((f|0)==0|(j|0)==65536){h=f}else{e=(f|0)<0?0-f|0:f;g=(j|0)<0?0-j|0:j;if(e>>>0<2049&g>>>0<1048577){e=((da(g,e)|0)+32768|0)>>>16}else{r=e&65535;e=(da(g>>>16,r)|0)+(da(e>>>16,g)|0)+(((da(g&65535,r)|0)+32768|0)>>>16)|0}h=(j^f|0)<0?0-e|0:e}m=a+4|0;e=c[m>>2]|0;k=a+8|0;l=c[k>>2]|0;if((e|0)==0|(l|0)==65536){n=e}else{n=(e|0)<0?0-e|0:e;g=(l|0)<0?0-l|0:l;if(n>>>0<2049&g>>>0<1048577){g=((da(g,n)|0)+32768|0)>>>16}else{r=n&65535;g=(da(g>>>16,r)|0)+(da(n>>>16,g)|0)+(((da(g&65535,r)|0)+32768|0)>>>16)|0}n=(l^e|0)<0?0-g|0:g}g=h-n|0;if((h|0)==(n|0)){r=6;i=b;return r|0}o=(e|0)<0?0-e|0:e;n=e^g;e=(g|0)<0?0-g|0:g;h=(e|0)==0;do{if(h){q=2147483647}else{p=o>>16;q=o<<16;o=q+(e>>1)|0;if((p|0)==0){q=(o>>>0)/(e>>>0)|0;break}r=(o>>>0>>0)+p|0;if(r>>>0>>0){p=32;q=0}else{q=2147483647;break}while(1){q=q<<1;r=r<<1|o>>>31;if(r>>>0>=e>>>0){q=q|1;r=r-e|0}p=p+ -1|0;if((p|0)==0){break}else{o=o<<1}}}}while(0);c[m>>2]=0-((n|0)<0?0-q|0:q);m=(l|0)<0?0-l|0:l;l=l^g;do{if(h){o=2147483647}else{n=m>>16;o=m<<16;m=o+(e>>1)|0;if((n|0)==0){o=(m>>>0)/(e>>>0)|0;break}p=(m>>>0>>0)+n|0;if(p>>>0>>0){n=32;o=0}else{o=2147483647;break}while(1){o=o<<1;p=p<<1|m>>>31;if(p>>>0>=e>>>0){o=o|1;p=p-e|0}n=n+ -1|0;if((n|0)==0){break}else{m=m<<1}}}}while(0);c[k>>2]=0-((l|0)<0?0-o|0:o);k=(j|0)<0?0-j|0:j;j=j^g;do{if(h){n=2147483647}else{l=k>>16;m=k<<16;k=m+(e>>1)|0;if((l|0)==0){n=(k>>>0)/(e>>>0)|0;break}m=(k>>>0>>0)+l|0;if(m>>>0>>0){l=32;n=0}else{n=2147483647;break}while(1){n=n<<1;m=m<<1|k>>>31;if(m>>>0>=e>>>0){n=n|1;m=m-e|0}l=l+ -1|0;if((l|0)==0){break}else{k=k<<1}}}}while(0);c[a>>2]=(j|0)<0?0-n|0:n;a=(f|0)<0?0-f|0:f;f=f^g;do{if(h){j=2147483647}else{g=a>>16;h=a<<16;a=h+(e>>1)|0;if((g|0)==0){j=(a>>>0)/(e>>>0)|0;break}h=(a>>>0>>0)+g|0;if(h>>>0>>0){g=32;j=0}else{j=2147483647;break}while(1){j=j<<1;h=h<<1|a>>>31;if(h>>>0>=e>>>0){j=j|1;h=h-e|0}g=g+ -1|0;if((g|0)==0){break}else{a=a<<1}}}}while(0);c[d>>2]=(f|0)<0?0-j|0:j;r=0;i=b;return r|0}function dJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;d=d<<16;if((a|0)==0|(b|0)==0){i=e;return}j=c[a>>2]|0;p=c[b>>2]|0;k=_I(j,p,d)|0;o=c[a+4>>2]|0;g=b+8|0;q=c[g>>2]|0;k=(_I(o,q,d)|0)+k|0;h=b+4|0;l=c[h>>2]|0;j=_I(j,l,d)|0;f=b+12|0;m=c[f>>2]|0;j=(_I(o,m,d)|0)+j|0;o=c[a+8>>2]|0;p=_I(o,p,d)|0;n=c[a+12>>2]|0;a=(_I(n,q,d)|0)+p|0;l=_I(o,l,d)|0;d=(_I(n,m,d)|0)+l|0;c[b>>2]=k;c[h>>2]=j;c[g>>2]=a;c[f>>2]=d;i=e;return}function eJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;d=d<<16;if((a|0)==0|(b|0)==0){i=e;return}h=c[a>>2]|0;g=_I(h,c[b>>2]|0,d)|0;f=a+4|0;j=c[f>>2]|0;g=(_I(j,c[b+4>>2]|0,d)|0)+g|0;h=_I(h,c[b+8>>2]|0,d)|0;d=(_I(j,c[b+12>>2]|0,d)|0)+h|0;c[a>>2]=g;c[f>>2]=d;i=e;return}function fJ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=i;if((a|0)>0){c=24;e=0;f=0}else{f=0;i=b;return f|0}while(1){e=a>>>30|e<<2;d=f<<1;f=f<<2|1;if(e>>>0>=f>>>0){e=e-f|0;d=d|1}c=c+ -1|0;if((c|0)==0){break}else{f=d;a=a<<2}}i=b;return d|0}function gJ(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,k=0,l=0;e=i;if((b|0)==0){i=e;return((a|0)>-1?d:0-d|0)|0}if((a|0)==0){a=(b|0)>-1?0-c|0:c;i=e;return a|0}if((d|0)==0){a=(c|0)>-1?b:0-b|0;i=e;return a|0}if((c|0)==0){a=(d|0)>-1?0-a|0:a;i=e;return a|0}f=a&65535;l=a>>>16;g=d&65535;j=d>>>16;k=da(g,l)|0;h=(da(j,f)|0)+k|0;a=h<<16;d=a+(da(g,f)|0)|0;a=(h>>>16)+(da(j,l)|0)+((h>>>0>>0)<<16)+(d>>>0>>0)|0;k=b&65535;h=b>>>16;l=c&65535;j=c>>>16;f=da(l,h)|0;g=(da(j,k)|0)+f|0;b=g<<16;c=b+(da(l,k)|0)|0;b=(g>>>16)+(da(j,h)|0)+((g>>>0>>0)<<16)+(c>>>0>>0)|0;if(a>>>0>b>>>0){l=1;i=e;return l|0}if(a>>>0>>0){l=-1;i=e;return l|0}if(d>>>0>c>>>0){l=1;i=e;return l|0}l=(d>>>0>>0)<<31>>31;i=e;return l|0}function hJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=c+a|0;f=d+b|0;e=((f|0)<0?0-f|0:f)+((e|0)<0?0-e|0:e)|0;i=i;return(((b|0)<0?0-b|0:b)+((a|0)<0?0-a|0:a)+((c|0)<0?0-c|0:c)+((d|0)<0?0-d|0:d)-e|0)<(e>>4|0)|0}function iJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=Bd[c[a+4>>2]&255](a,96)|0;f=(e|0)==0;g=f?64:0;if(f){i=d;return g|0}bX(e|0,0,96)|0;c[e>>2]=a;c[b>>2]=e;i=d;return g|0}function jJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;do{if((b|0)>0){f=Bd[c[a+4>>2]&255](a,b)|0;g=(f|0)==0;a=g?64:0;if(g){f=0;break}bX(f|0,0,b|0)|0}else{f=0;a=b>>31&6}}while(0);c[d>>2]=a;i=e;return f|0}function kJ(a){a=a|0;var d=0,e=0;d=i;e=a+20|0;b[a+22>>1]=0;b[e>>1]=0;c[a+48>>2]=0;$W(a+56|0,e|0,36)|0;i=d;return}function lJ(a,b){a=a|0;b=b|0;var d=0;d=i;if((b|0)==0){i=d;return}hd[c[a+8>>2]&127](a,b);i=d;return}function mJ(a){a=a|0;var d=0,e=0,f=0,g=0;e=i;if((a|0)==0){i=e;return}d=c[a>>2]|0;f=a+24|0;g=c[f>>2]|0;if((g|0)!=0){hd[c[d+8>>2]&127](d,g)}c[f>>2]=0;f=a+28|0;g=c[f>>2]|0;if((g|0)!=0){hd[c[d+8>>2]&127](d,g)}c[f>>2]=0;f=a+32|0;g=c[f>>2]|0;if((g|0)!=0){hd[c[d+8>>2]&127](d,g)}c[f>>2]=0;f=a+40|0;g=c[f>>2]|0;if((g|0)!=0){hd[c[d+8>>2]&127](d,g)}c[f>>2]=0;g=a+52|0;f=c[g>>2]|0;if((f|0)!=0){hd[c[d+8>>2]&127](d,f)}c[g>>2]=0;c[a+44>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;g=a+20|0;b[a+22>>1]=0;b[g>>1]=0;c[a+48>>2]=0;$W(a+56|0,g|0,36)|0;hd[c[d+8>>2]&127](d,a);i=e;return}function nJ(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;k=c[d>>2]|0;f=d+4|0;j=c[f>>2]|0;h=j<<1;a:do{if((h|0)<0){f=6}else{do{if((h|0)==0){k=0;g=10}else{if((h|0)>268435455){f=10;break a}j=j<<4;do{if((j|0)>0){k=Bd[c[k+4>>2]&255](k,j)|0;l=(k|0)==0;m=l?64:0;if(l){k=0;break}bX(k|0,0,j|0)|0}else{k=0;m=j>>31&6}}while(0);l=(m|0)==0;if(l&(h|0)>0){bX(k|0,0,j|0)|0;g=10;break}h=d+40|0;c[h>>2]=k;if(l){break}i=e;return m|0}}while(0);if((g|0)==10){h=d+40|0;c[h>>2]=k}a[d+16|0]=1;k=c[h>>2]|0;l=c[f>>2]|0;c[d+44>>2]=k+(l<<3);m=b[d+22>>1]|0;c[d+60>>2]=(c[d+24>>2]|0)+(m<<3);c[d+64>>2]=(c[d+28>>2]|0)+m;c[d+68>>2]=(c[d+32>>2]|0)+(b[d+20>>1]<<1);c[d+76>>2]=(c[h>>2]|0)+(m<<3);c[d+80>>2]=k+(l+m<<3);m=0;i=e;return m|0}}while(0);c[d+40>>2]=0;m=f;i=e;return m|0}function oJ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;a:do{if((d|b|e|0)<0){a=6}else{do{if((e|0)==0|(b|0)==0){if((f|0)==0){f=0;a=0;break}hd[c[a+8>>2]&127](a,f);f=0;a=0}else{if((2147483647/(b|0)|0|0)<(e|0)){a=10;break a}if((d|0)!=0){k=da(d,b)|0;j=da(e,b)|0;a=pd[c[a+12>>2]&63](a,k,j,f)|0;j=(a|0)==0;f=j?f:a;a=j?64:0;break}j=da(e,b)|0;if((j|0)<=0){f=0;a=j>>31&6;break}f=Bd[c[a+4>>2]&255](a,j)|0;k=(f|0)==0;a=k?64:0;if(k){f=0;break}bX(f|0,0,j|0)|0}}while(0);if(!((a|0)==0&(e|0)>(d|0))){break}bX(f+(da(d,b)|0)|0,0,da(e-d|0,b)|0)|0;a=0}}while(0);c[g>>2]=a;i=h;return f|0}function pJ(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;j=c[d>>2]|0;h=d+22|0;l=(b[h>>1]|0)+e+(b[d+58>>1]|0)|0;e=d+4|0;k=c[e>>2]|0;a:do{if(l>>>0>k>>>0){m=l+7|0;l=m&-8;if(l>>>0>32767){s=10;i=g;return s|0}p=d+24|0;q=c[p>>2]|0;b:do{if((m|k|0)<0){d=6}else{o=(l|0)==0;do{if(o){if((q|0)==0){q=0;r=0;break}hd[c[j+8>>2]&127](j,q);q=0;r=0}else{if((l|0)>268435455){d=10;break b}if((k|0)!=0){r=pd[c[j+12>>2]&63](j,k<<3,l<<3,q)|0;n=(r|0)==0;q=n?q:r;r=n?64:0;break}s=l<<3;if((l|0)<=0){q=0;r=m>>>28&6;break}q=Bd[c[j+4>>2]&255](j,s)|0;r=(q|0)==0;n=r?64:0;if(r){q=0;r=n;break}bX(q|0,0,s|0)|0;r=n}}while(0);s=(r|0)==0;n=(l|0)>(k|0);do{if(s&n){bX(q+(k<<3)|0,0,l-k<<3|0)|0;c[p>>2]=q}else{c[p>>2]=q;if(s){break}else{q=r}i=g;return q|0}}while(0);p=d+28|0;q=c[p>>2]|0;do{if(o){if((q|0)==0){o=0;q=0;break}hd[c[j+8>>2]&127](j,q);o=0;q=0}else{if((k|0)!=0){o=pd[c[j+12>>2]&63](j,k,l,q)|0;m=(o|0)==0;o=m?q:o;q=m?64:0;break}if((l|0)<=0){o=0;q=m>>31&6;break}o=Bd[c[j+4>>2]&255](j,l)|0;m=(o|0)==0;q=m?64:0;if(m){o=0;break}bX(o|0,0,l|0)|0}}while(0);m=(q|0)==0;do{if(m&n){bX(o+k|0,0,l-k|0)|0;c[p>>2]=o}else{c[p>>2]=o;if(m){break}i=g;return q|0}}while(0);c:do{if((a[d+16|0]|0)!=0){o=k<<1;n=l<<1;m=d+40|0;p=c[m>>2]|0;d:do{if((n|o|0)<0){d=6}else{do{if((n|0)==0){if((p|0)==0){p=0;q=0;break}hd[c[j+8>>2]&127](j,p);p=0;q=0}else{if((n|0)>268435455){d=10;break d}if((o|0)!=0){r=pd[c[j+12>>2]&63](j,k<<4,l<<4,p)|0;q=(r|0)==0;p=q?p:r;q=q?64:0;break}r=l<<4;if((r|0)<=0){p=0;q=r>>31&6;break}p=Bd[c[j+4>>2]&255](j,r)|0;s=(p|0)==0;q=s?64:0;if(s){p=0;break}bX(p|0,0,r|0)|0}}while(0);r=(q|0)==0;do{if(r&(n|0)>(o|0)){bX(p+(k<<4)|0,0,n-o<<3|0)|0;c[m>>2]=p}else{c[m>>2]=p;if(r){break}i=g;return q|0}}while(0);aX(p+(l<<3)|0,p+(k<<3)|0,k<<3|0)|0;c[d+44>>2]=(c[m>>2]|0)+(l<<3);break c}}while(0);c[m>>2]=p;s=d;i=g;return s|0}}while(0);c[e>>2]=l;n=1;break a}}while(0);c[p>>2]=q;s=d;i=g;return s|0}else{n=0}}while(0);k=d+8|0;l=c[k>>2]|0;e=d+20|0;m=b[e>>1]|0;f=(m<<16>>16)+f+(b[d+56>>1]|0)|0;e:do{if(f>>>0>l>>>0){o=f+3|0;f=o&-4;if(f>>>0>32767){s=10;i=g;return s|0}m=d+32|0;n=c[m>>2]|0;f:do{if((o|l|0)<0){d=6}else{do{if((f|0)==0){if((n|0)==0){j=0;q=0;break}hd[c[j+8>>2]&127](j,n);j=0;q=0}else{if((f|0)>1073741823){d=10;break f}if((l|0)!=0){j=pd[c[j+12>>2]&63](j,l<<1,f<<1,n)|0;o=(j|0)==0;j=o?n:j;q=o?64:0;break}n=f<<1;if((f|0)<=0){j=0;q=o>>30&6;break}j=Bd[c[j+4>>2]&255](j,n)|0;o=(j|0)==0;q=o?64:0;if(o){j=0;break}bX(j|0,0,n|0)|0}}while(0);n=(q|0)==0;do{if(n&(f|0)>(l|0)){bX(j+(l<<1)|0,0,f-l<<1|0)|0;c[m>>2]=j}else{c[m>>2]=j;if(n){break}i=g;return q|0}}while(0);c[k>>2]=f;m=b[e>>1]|0;break e}}while(0);c[m>>2]=n;s=d;i=g;return s|0}else{if(n<<24>>24==0){s=0;i=g;return s|0}else{j=c[d+32>>2]|0;break}}}while(0);h=b[h>>1]|0;c[d+60>>2]=(c[d+24>>2]|0)+(h<<3);c[d+64>>2]=(c[d+28>>2]|0)+h;c[d+68>>2]=j+(m<<16>>16<<1);if((a[d+16|0]|0)==0){s=0;i=g;return s|0}c[d+76>>2]=(c[d+40>>2]|0)+(h<<3);c[d+80>>2]=(c[d+44>>2]|0)+(h<<3);s=0;i=g;return s|0}function qJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;k=c[a>>2]|0;e=a+48|0;f=(c[e>>2]|0)+b+(c[a+84>>2]|0)|0;b=a+12|0;h=c[b>>2]|0;if(f>>>0<=h>>>0){m=0;i=d;return m|0}l=f+1|0;g=l&-2;f=a+52|0;j=c[f>>2]|0;a:do{if((l|h|0)<0){a=6}else{do{if((g|0)==0){if((j|0)==0){j=0;k=0;break}hd[c[k+8>>2]&127](k,j);j=0;k=0}else{if((g|0)>67108863){a=10;break a}if((h|0)!=0){l=pd[c[k+12>>2]&63](k,h<<5,g<<5,j)|0;k=(l|0)==0;j=k?j:l;k=k?64:0;break}j=g<<5;if((g|0)<=0){j=0;k=l>>>26&6;break}m=Bd[c[k+4>>2]&255](k,j)|0;l=(m|0)==0;k=l?64:0;if(l){j=0;break}bX(m|0,0,j|0)|0;j=m}}while(0);l=(k|0)==0;do{if(l&(g|0)>(h|0)){bX(j+(h<<5)|0,0,g-h<<5|0)|0;c[f>>2]=j}else{c[f>>2]=j;if(l){break}i=d;return k|0}}while(0);c[b>>2]=g;c[a+88>>2]=j+(c[e>>2]<<5);m=0;i=d;return m|0}}while(0);c[f>>2]=j;m=a;i=d;return m|0}function rJ(d){d=d|0;var e=0,f=0,g=0;e=i;b[d+58>>1]=0;b[d+56>>1]=0;c[d+84>>2]=0;f=b[d+22>>1]|0;c[d+60>>2]=(c[d+24>>2]|0)+(f<<3);c[d+64>>2]=(c[d+28>>2]|0)+f;c[d+68>>2]=(c[d+32>>2]|0)+(b[d+20>>1]<<1);if((a[d+16|0]|0)==0){f=d+52|0;f=c[f>>2]|0;g=d+48|0;g=c[g>>2]|0;g=g<<5;g=f+g|0;f=d+88|0;c[f>>2]=g;i=e;return}c[d+76>>2]=(c[d+40>>2]|0)+(f<<3);c[d+80>>2]=(c[d+44>>2]|0)+(f<<3);g=d+52|0;g=c[g>>2]|0;f=d+48|0;f=c[f>>2]|0;f=f<<5;f=g+f|0;g=d+88|0;c[g>>2]=f;i=e;return}function sJ(d){d=d|0;var 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;g=i;if((d|0)==0){i=g;return}j=d+56|0;r=b[j>>1]|0;n=r<<16>>16;l=d+22|0;o=b[l>>1]|0;h=d+58|0;p=(b[h>>1]|0)+o<<16>>16;b[l>>1]=p;m=d+20|0;q=r+(b[m>>1]|0)<<16>>16;b[m>>1]=q;k=d+84|0;f=d+48|0;c[f>>2]=(c[f>>2]|0)+(c[k>>2]|0);e=d+68|0;if(r<<16>>16!=0){p=0;do{r=(c[e>>2]|0)+(p<<1)|0;b[r>>1]=(b[r>>1]|0)+o<<16>>16;p=p+1|0;}while(p>>>0>>0);q=b[m>>1]|0;p=b[l>>1]|0}b[h>>1]=0;b[j>>1]=0;c[k>>2]=0;h=p<<16>>16;c[d+60>>2]=(c[d+24>>2]|0)+(h<<3);c[d+64>>2]=(c[d+28>>2]|0)+h;c[e>>2]=(c[d+32>>2]|0)+(q<<16>>16<<1);if((a[d+16|0]|0)!=0){c[d+76>>2]=(c[d+40>>2]|0)+(h<<3);c[d+80>>2]=(c[d+44>>2]|0)+(h<<3)}c[d+88>>2]=(c[d+52>>2]|0)+(c[f>>2]<<5);i=g;return}function tJ(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;g=b[e+22>>1]|0;j=g<<16>>16;h=b[e+20>>1]|0;k=h<<16>>16;l=pJ(d,j,k)|0;if((l|0)!=0){i=f;return l|0}m=d+24|0;q=j<<3;$W(c[m>>2]|0,c[e+24>>2]|0,q|0)|0;n=d+28|0;$W(c[n>>2]|0,c[e+28>>2]|0,j|0)|0;o=d+32|0;$W(c[o>>2]|0,c[e+32>>2]|0,k<<1|0)|0;r=d+16|0;p=a[r]|0;do{if(p<<24>>24==0){p=0}else{if((a[e+16|0]|0)==0){break}$W(c[d+40>>2]|0,c[e+40>>2]|0,q|0)|0;$W(c[d+44>>2]|0,c[e+44>>2]|0,q|0)|0;p=a[r]|0}}while(0);b[d+22>>1]=g;b[d+20>>1]=h;c[d+60>>2]=(c[m>>2]|0)+(j<<3);c[d+64>>2]=(c[n>>2]|0)+j;c[d+68>>2]=(c[o>>2]|0)+(k<<1);if(p<<24>>24==0){i=f;return l|0}c[d+76>>2]=(c[d+40>>2]|0)+(j<<3);c[d+80>>2]=(c[d+44>>2]|0)+(j<<3);i=f;return l|0}function uJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;a:do{if((a|0)==0|(b|0)==0){b=0}else{e=c[a>>2]|0;if((e|0)==0){b=0;break}else{f=a}while(1){a=f+8|0;if((Qc(e|0,b|0)|0)==0){break}e=c[a>>2]|0;if((e|0)==0){b=0;break a}else{f=a}}b=c[f+4>>2]|0}}while(0);i=d;return b|0}function vJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+12>>2]=0;i=i;return}function wJ(a,b){a=a|0;b=b|0;c[a+12>>2]=b;_a(a+16|0,1)}function xJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;c[d>>2]=0;if((a|0)==0){h=33;i=e;return h|0}if((b|0)==0){h=6;i=e;return h|0}a=c[a>>2]|0;f=Bd[c[a+4>>2]&255](a,40)|0;h=(f|0)==0;g=h?64:0;if(h){h=64;i=e;return h|0}bX(f|0,0,40)|0;c[f+28>>2]=a;h=c[b>>2]|0;do{if((h&1|0)==0){if((h&4|0)!=0){b=b+12|0;g=HL(f,c[b>>2]|0)|0;c[f+16>>2]=c[b>>2];b=12;break}if((h&2|0)==0){g=6;b=13;break}h=b+16|0;b=c[h>>2]|0;if((b|0)==0){g=6;b=13;break}if((f|0)==0){f=b;b=12;break}hd[c[a+8>>2]&127](a,f);f=c[h>>2]|0;b=12}else{h=c[b+8>>2]|0;c[f>>2]=c[b+4>>2];c[f+4>>2]=h;c[f+8>>2]=0;c[f+32>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;b=12}}while(0);do{if((b|0)==12){if((g|0)!=0){b=13;break}c[f+28>>2]=a;g=0}}while(0);do{if((b|0)==13){if((f|0)==0){f=0;break}hd[c[a+8>>2]&127](a,f);f=0}}while(0);c[d>>2]=f;h=g;i=e;return h|0}function yJ(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=0;c[a+32>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;i=i;return}function zJ(a){a=a|0;var b=0,d=0;b=i;do{if((a|0)!=0){d=c[a+24>>2]|0;if((d|0)==0){break}fd[d&511](a)}}while(0);i=b;return}function AJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;e=a+156|0;d=c[e>>2]|0;do{if((d|0)!=0){if((c[d+4>>2]&1|0)==0){break}f=c[(c[a+4>>2]|0)+100>>2]|0;a=a+88|0;g=c[a>>2]|0;if((g|0)!=0){hd[c[f+8>>2]&127](f,g);d=c[e>>2]|0}c[a>>2]=0;g=d+4|0;c[g>>2]=c[g>>2]&-2;i=b;return}}while(0);c[a+88>>2]=0;i=b;return}function BJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;g=a+156|0;f=c[g>>2]|0;do{if((f|0)!=0){if((c[f+4>>2]&1|0)==0){break}j=c[(c[a+4>>2]|0)+100>>2]|0;e=a+88|0;h=c[e>>2]|0;if((h|0)!=0){hd[c[j+8>>2]&127](j,h);f=c[g>>2]|0}c[e>>2]=0;j=f+4|0;c[j>>2]=c[j>>2]&-2;j=a+88|0;c[j>>2]=b;i=d;return}}while(0);c[a+88>>2]=0;j=a+88|0;c[j>>2]=b;i=d;return}function CJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[(c[a+4>>2]|0)+100>>2]|0;g=(c[a+156>>2]|0)+4|0;f=c[g>>2]|0;if((f&1|0)==0){c[g>>2]=f|1}else{g=a+88|0;f=c[g>>2]|0;if((f|0)!=0){hd[c[e+8>>2]&127](e,f)}c[g>>2]=0}do{if((b|0)>0){f=Bd[c[e+4>>2]&255](e,b)|0;g=(f|0)==0;e=g?64:0;if(g){f=0;break}bX(f|0,0,b|0)|0}else{f=0;e=b>>31&6}}while(0);c[a+88>>2]=f;i=d;return e|0}function DJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;if((a|0)==0){n=6;i=f;return n|0}j=a+96|0;g=c[j>>2]|0;if((g|0)==0){n=6;i=f;return n|0}e=c[g+8>>2]|0;k=c[(c[g+20>>2]|0)+44>>2]|0;do{if((k|0)>0){g=Bd[c[e+4>>2]&255](e,k)|0;l=(g|0)==0;h=l?64:0;if(l){g=0;break}bX(g|0,0,k|0)|0}else{g=0;h=k>>31&6}}while(0);if((h|0)!=0){if((b|0)==0){n=h;i=f;return n|0}c[b>>2]=0;n=h;i=f;return n|0}h=g+4|0;c[h>>2]=a;m=c[j>>2]|0;j=c[m+20>>2]|0;k=c[m+8>>2]|0;c[g>>2]=c[m+4>>2];n=k+4|0;l=Bd[c[n>>2]&255](k,40)|0;do{if((l|0)==0){b=64}else{bX(l|0,0,40)|0;c[g+156>>2]=l;if((c[c[m>>2]>>2]&512|0)==0){m=Bd[c[n>>2]&255](k,96)|0;if((m|0)==0){b=64;break}bX(m|0,0,96)|0;c[m>>2]=k;c[l>>2]=m}j=c[j+64>>2]|0;if((j|0)!=0){j=jd[j&511](g)|0;if((j|0)!=0){b=j;break}}n=a+84|0;c[g+8>>2]=c[n>>2];c[n>>2]=g;if((b|0)==0){n=0;i=f;return n|0}c[b>>2]=g;n=0;i=f;return n|0}}while(0);k=c[(c[h>>2]|0)+96>>2]|0;a=c[k+8>>2]|0;j=c[(c[k+20>>2]|0)+68>>2]|0;if((j|0)!=0){fd[j&511](g)}j=g+156|0;l=c[j>>2]|0;do{if((l|0)==0){d=21}else{if((c[l+4>>2]&1|0)==0){d=21;break}m=c[(c[h>>2]|0)+100>>2]|0;h=g+88|0;n=c[h>>2]|0;if((n|0)!=0){hd[c[m+8>>2]&127](m,n);l=c[j>>2]|0}c[h>>2]=0;l=l+4|0;c[l>>2]=c[l>>2]&-2;l=c[j>>2]|0}}while(0);if((d|0)==21){c[g+88>>2]=0}if((l|0)!=0){if((c[c[k>>2]>>2]&512|0)==0){mJ(c[l>>2]|0);c[c[j>>2]>>2]=0;l=c[j>>2]|0;if((l|0)!=0){d=25}}else{d=25}if((d|0)==25){hd[c[a+8>>2]&127](a,l)}c[j>>2]=0}if((g|0)==0){n=b;i=f;return n|0}hd[c[e+8>>2]&127](e,g);n=b;i=f;return n|0}function EJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;if((a|0)==0){i=e;return}g=a+4|0;f=c[g>>2]|0;d=c[(c[f+96>>2]|0)+8>>2]|0;f=f+84|0;j=c[f>>2]|0;if((j|0)==0){i=e;return}else{h=0}while(1){if((j|0)==(a|0)){break}h=c[j+8>>2]|0;if((h|0)==0){b=22;break}else{m=j;j=h;h=m}}if((b|0)==22){i=e;return}j=c[a+8>>2]|0;if((h|0)==0){c[f>>2]=j}else{c[h+8>>2]=j}j=c[(c[g>>2]|0)+96>>2]|0;f=c[j+8>>2]|0;h=c[(c[j+20>>2]|0)+68>>2]|0;if((h|0)!=0){fd[h&511](a)}h=a+156|0;k=c[h>>2]|0;do{if((k|0)==0){b=15}else{if((c[k+4>>2]&1|0)==0){b=15;break}l=c[(c[g>>2]|0)+100>>2]|0;g=a+88|0;m=c[g>>2]|0;if((m|0)!=0){hd[c[l+8>>2]&127](l,m);k=c[h>>2]|0}c[g>>2]=0;k=k+4|0;c[k>>2]=c[k>>2]&-2;k=c[h>>2]|0}}while(0);if((b|0)==15){c[a+88>>2]=0}if((k|0)!=0){if((c[c[j>>2]>>2]&512|0)==0){mJ(c[k>>2]|0);c[c[h>>2]>>2]=0;k=c[h>>2]|0;if((k|0)!=0){b=19}}else{b=19}if((b|0)==19){hd[c[f+8>>2]&127](f,k)}c[h>>2]=0}hd[c[d+8>>2]&127](d,a);i=e;return}function FJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;if((a|0)==0){i=e;return}f=c[a+128>>2]|0;a=f+28|0;c[a>>2]=0;h=f+4|0;if((b|0)==0){c[h>>2]=65536;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=65536;b=h}else{$W(h|0,b|0,16)|0}do{if((c[b+8>>2]|c[b+4>>2]|0)==0){if((c[b>>2]|0)!=65536){g=8;break}if((c[b+12>>2]|0)==65536){b=2}else{g=8}}else{g=8}}while(0);if((g|0)==8){c[a>>2]=1;b=3}g=f+20|0;if((d|0)==0){c[g>>2]=0;c[f+24>>2]=0;f=0;d=g}else{j=d;h=c[j+4>>2]|0;f=g;c[f>>2]=c[j>>2];c[f+4>>2]=h;f=c[d>>2]|0}if((c[d+4>>2]|f|0)==0){i=e;return}c[a>>2]=b;i=e;return}function GJ(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=i;if((a|0)==0|(d|0)==0){i=e;return}f=c[a+4>>2]|0;g=b[a+2>>1]|0;a=f+(g<<16>>16<<3)|0;if(g<<16>>16<=0){i=e;return}do{IJ(f,d);f=f+8|0;}while(f>>>0>>0);i=e;return}function HJ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;if((a|0)==0){i=f;return}g=a+2|0;if((b[g>>1]|0)<=0){i=f;return}h=0;a=c[a+4>>2]|0;while(1){c[a>>2]=(c[a>>2]|0)+d;j=a+4|0;c[j>>2]=(c[j>>2]|0)+e;h=h+1<<16>>16;if((h&65535|0)<(b[g>>1]|0)){a=a+8|0}else{break}}i=f;return}function IJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;if((a|0)==0|(b|0)==0){i=d;return}g=c[a>>2]|0;e=c[b>>2]|0;j=(g|0)==0;if(j|(e|0)==65536){k=g}else{h=(g|0)<0?0-g|0:g;f=(e|0)<0?0-e|0:e;if(h>>>0<2049&f>>>0<1048577){f=((da(f,h)|0)+32768|0)>>>16}else{n=h&65535;f=(da(f>>>16,n)|0)+(da(h>>>16,f)|0)+(((da(f&65535,n)|0)+32768|0)>>>16)|0}k=(e^g|0)<0?0-f|0:f}e=a+4|0;f=c[e>>2]|0;l=c[b+4>>2]|0;h=(f|0)==0;if(h|(l|0)==65536){l=f}else{m=(f|0)<0?0-f|0:f;n=(l|0)<0?0-l|0:l;if(m>>>0<2049&n>>>0<1048577){m=((da(n,m)|0)+32768|0)>>>16}else{o=m&65535;m=(da(n>>>16,o)|0)+(da(m>>>16,n)|0)+(((da(n&65535,o)|0)+32768|0)>>>16)|0}l=(l^f|0)<0?0-m|0:m}k=l+k|0;l=c[b+8>>2]|0;if(!(j|(l|0)==65536)){j=(g|0)<0?0-g|0:g;m=(l|0)<0?0-l|0:l;if(j>>>0<2049&m>>>0<1048577){j=((da(m,j)|0)+32768|0)>>>16}else{o=j&65535;j=(da(m>>>16,o)|0)+(da(j>>>16,m)|0)+(((da(m&65535,o)|0)+32768|0)>>>16)|0}g=(l^g|0)<0?0-j|0:j}b=c[b+12>>2]|0;if(!(h|(b|0)==65536)){h=(f|0)<0?0-f|0:f;j=(b|0)<0?0-b|0:b;if(h>>>0<2049&j>>>0<1048577){h=((da(j,h)|0)+32768|0)>>>16}else{o=h&65535;h=(da(j>>>16,o)|0)+(da(h>>>16,j)|0)+(((da(j&65535,o)|0)+32768|0)>>>16)|0}f=(b^f|0)<0?0-h|0:h}c[a>>2]=k;c[e>>2]=f+g;i=d;return}function JJ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((a|0)==0){e=6;i=d;return e|0}e=c[a+4>>2]|0;if((e|0)==0){e=6;i=d;return e|0}e=jK(c[(c[e+96>>2]|0)+4>>2]|0,a,b)|0;i=d;return e|0}function KJ(a,b){a=a|0;b=b|0;var d=0;d=i;if((a|0)==0){a=0;i=d;return a|0}a=c[a+92>>2]|0;if((a|0)==0){a=0;i=d;return a|0}a=Bd[c[(c[a+12>>2]|0)+12>>2]&255](a,b)|0;i=d;return a|0}function LJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=i;i=i+32|0;h=g;if((b|0)==0){e=6;i=f;return e|0}c[g>>2]=4;c[h+12>>2]=b;c[h+16>>2]=0;e=MJ(a,h,d,e)|0;i=f;return e|0}function MJ(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var 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,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;h=i;r=i;i=i+40|0;o=r;v=i;i=i+40|0;w=i;i=i+40|0;s=i;i=i+32|0;t=s;u=i;i=i+8|0;x=u;m=i;i=i+8|0;l=i;i=i+8|0;F=l;C=i;i=i+8|0;D=C;c[m>>2]=0;c[l>>2]=0;y=(g|0)!=0;E=(f|0)>-1;if(E&(y^1)|(e|0)==0){O=6;i=h;return O|0}if((c[e>>2]&2|0)==0){k=0}else{k=(c[e+16>>2]|0)!=0|0}G=xJ(d,e,m)|0;a:do{if((G|0)==0){G=c[d>>2]|0;I=c[e>>2]|0;do{if((I&8|0)==0){q=17}else{H=c[e+20>>2]|0;if((H|0)==0){q=17;break}if((c[c[H>>2]>>2]&1|0)==0){I=c[m>>2]|0;p=32}else{if((I&16|0)==0){J=0;K=0}else{J=c[e+24>>2]|0;K=c[e+28>>2]|0}I=c[m>>2]|0;H=OJ(H,I,f,J,K,F)|0;if((H|0)==0){break}else{p=H}}if((I|0)==0){break a}C=c[I+28>>2]|0;y=c[I+24>>2]|0;if((y|0)!=0){fd[y&511](I)}if(k<<24>>24!=0){break a}hd[c[C+8>>2]&127](C,I);break a}}while(0);b:do{if((q|0)==17){O=c[d+24>>2]|0;H=d+28+(O<<2)|0;if((O|0)<=0){n=0;q=36;break a}I=e+24|0;J=e+28|0;L=0;K=d+28|0;c:while(1){M=c[K>>2]|0;if((c[c[M>>2]>>2]&1|0)==0){M=L}else{if((c[e>>2]&16|0)==0){O=0;N=0}else{O=c[I>>2]|0;N=c[J>>2]|0}L=c[m>>2]|0;M=OJ(M,L,f,O,N,F)|0;if((M|0)==0){break b}do{if((Qc(c[(c[c[K>>2]>>2]|0)+8>>2]|0,206240)|0)==0){if((M&255|0)!=142){break}N=c[L+20>>2]|0;if((N|0)!=0){if((pd[N&63](L,0,0,0)|0)!=0){B=M;q=35;break a}}c[L+8>>2]=0;M=QJ(d,L,f,g)|0;if((M|0)==0){break c}}}while(0);if((M&255|0)!=2){B=M;q=35;break a}}K=K+4|0;if(K>>>0>>0){L=M}else{B=M;q=35;break a}}if((L|0)==0){O=0;i=h;return O|0}j=c[L+28>>2]|0;l=c[L+24>>2]|0;if((l|0)!=0){fd[l&511](L)}if(k<<24>>24!=0){O=0;i=h;return O|0}hd[c[j+8>>2]&127](j,L);O=0;i=h;return O|0}}while(0);if(k<<24>>24!=0){O=(c[l>>2]|0)+8|0;c[O>>2]=c[O>>2]|1024}H=Bd[c[G+4>>2]&255](G,12)|0;F=(H|0)==0;p=F?64:0;if(F){p=64;break}F=H;G=F;F=F+4|0;a[G]=0;a[G+1|0]=0;a[G+2|0]=0;a[G+3|0]=0;a[F]=0;a[F+1|0]=0;a[F+2|0]=0;a[F+3|0]=0;F=c[l>>2]|0;c[H+8>>2]=F;G=F+96|0;I=c[G>>2]|0;K=I+28|0;J=c[K>>2]|0;c[H+4>>2]=0;c[H>>2]=J;if((J|0)==0){c[I+24>>2]=H}else{c[J+4>>2]=H}c[K>>2]=H;if(E){p=DJ(F,0)|0;if((p|0)!=0){break}p=RJ(F,D)|0;if((p|0)!=0){break}c[F+88>>2]=c[C>>2];p=0}k=c[F+8>>2]|0;do{if((k&1|0)!=0){m=F+74|0;l=b[m>>1]|0;if(l<<16>>16<0){l=0-l<<16>>16;b[m>>1]=l}if((k&32|0)!=0){break}b[F+78>>1]=l}}while(0);do{if((k&2|0)!=0){k=F+28|0;if((c[k>>2]|0)>0){l=0}else{break}do{m=c[F+32>>2]|0;n=m+(l<<4)|0;o=b[n>>1]|0;if(o<<16>>16<0){b[n>>1]=0-o<<16>>16}o=m+(l<<4)+8|0;n=c[o>>2]|0;if((n|0)<0){c[o>>2]=0-n<<16>>16}n=m+(l<<4)+12|0;m=c[n>>2]|0;if((m|0)<0){c[n>>2]=0-m}l=l+1|0;}while((l|0)<(c[k>>2]|0))}}while(0);k=F+128|0;O=c[k>>2]|0;c[O+4>>2]=65536;c[O+8>>2]=0;c[O+12>>2]=0;c[O+16>>2]=65536;c[O+20>>2]=0;c[O+24>>2]=0;c[O+60>>2]=1;if(y){c[g>>2]=F;O=p;i=h;return O|0}if((F|0)==0){O=p;i=h;return O|0}if((c[G>>2]|0)==0){O=p;i=h;return O|0}O=(c[k>>2]|0)+60|0;c[O>>2]=(c[O>>2]|0)+ -1;if((c[(c[k>>2]|0)+60>>2]|0)!=0){O=p;i=h;return O|0}l=c[G>>2]|0;k=c[l+8>>2]|0;m=l+24|0;n=c[m>>2]|0;if((n|0)==0){O=p;i=h;return O|0}while(1){if((c[n+8>>2]|0)==(F|0)){break}o=c[n+4>>2]|0;if((o|0)==0){j=p;q=134;break}else{n=o}}if((q|0)==134){i=h;return j|0}o=c[n>>2]|0;j=c[n+4>>2]|0;if((o|0)==0){c[m>>2]=j}else{c[o+4>>2]=j}if((j|0)==0){c[l+28>>2]=o}else{c[j>>2]=o}if((n|0)!=0){hd[c[k+8>>2]&127](k,n)}UJ(k,F,l);O=p;i=h;return O|0}else{B=G;q=35}}while(0);do{if((q|0)==35){O=B&255;if(!((O|0)==85|(O|0)==2|(O|0)==81)){n=B;q=36;break}y=c[m>>2]|0;z=oL(d,y,f,g)|0;if((z&255|0)==2){z=pL(d,y,0,f,g)|0}O=z&255;do{if((O|0)==85|(O|0)==2){if((c[e>>2]&4|0)==0){o=z;break}z=c[d>>2]|0;c[u>>2]=0;e=e+12|0;B=c[e>>2]|0;E=(y|0)==0;D=y+20|0;C=y+8|0;F=0;do{G=o+(F<<2)|0;c[G>>2]=0;d:do{if(E){c[w+(F<<2)>>2]=0;q=48}else{A=c[D>>2]|0;do{if((A|0)!=0){if((pd[A&63](y,0,0,0)|0)==0){break}c[w+(F<<2)>>2]=85;break d}}while(0);c[C>>2]=0;c[w+(F<<2)>>2]=0;q=48}}while(0);if((q|0)==48){q=0;c[w+(F<<2)>>2]=Cd[c[206320+(F<<3)>>2]&63](d,y,B,G,v+(F<<2)|0)|0}F=F+1|0;}while((F|0)<9);q=t+12|0;D=2;A=0;C=0;e:while(1){B=((c[206324+(A<<3)>>2]|0)+ -3|0)>>>0<2;do{if(C<<24>>24==0|B^1){if((c[w+(A<<2)>>2]|0)!=0){break}c[s>>2]=4;D=c[o+(A<<2)>>2]|0;if((D|0)==0){D=c[e>>2]|0}c[q>>2]=D;D=xJ(d,t,x)|0;C=B&(D|0)==81?1:C;if((D|0)!=0){break}F=c[u>>2]|0;G=pL(d,F,c[v+(A<<2)>>2]|0,f,g)|0;if((F|0)!=0){E=c[F+28>>2]|0;D=c[F+24>>2]|0;if((D|0)!=0){fd[D&511](F)}hd[c[E+8>>2]&127](E,F)}if((G|0)==0){g=0;break e}D=G;C=B?1:C}}while(0);A=A+1|0;if((A|0)>=9){g=D;break}}q=z+8|0;s=c[r>>2]|0;if((s|0)!=0){hd[c[q>>2]&127](z,s);c[r>>2]=0}r=o+4|0;s=c[r>>2]|0;if((s|0)!=0){hd[c[q>>2]&127](z,s);c[r>>2]=0}r=o+8|0;s=c[r>>2]|0;if((s|0)!=0){hd[c[q>>2]&127](z,s);c[r>>2]=0}r=o+12|0;s=c[r>>2]|0;if((s|0)!=0){hd[c[q>>2]&127](z,s);c[r>>2]=0}s=o+16|0;r=c[s>>2]|0;if((r|0)!=0){hd[c[q>>2]&127](z,r);c[s>>2]=0}s=o+20|0;r=c[s>>2]|0;if((r|0)!=0){hd[c[q>>2]&127](z,r);c[s>>2]=0}r=o+24|0;s=c[r>>2]|0;if((s|0)!=0){hd[c[q>>2]&127](z,s);c[r>>2]=0}s=o+28|0;r=c[s>>2]|0;if((r|0)!=0){hd[c[q>>2]&127](z,r);c[s>>2]=0}o=o+32|0;r=c[o>>2]|0;if((r|0)!=0){hd[c[q>>2]&127](z,r);c[o>>2]=0}o=(g|0)==0?0:2}else{o=z}}while(0);if((o|0)!=0){z=y;A=(o&255|0)==2?2:o;q=73;break}if((y|0)==0){O=0;i=h;return O|0}j=c[y+28>>2]|0;l=c[y+24>>2]|0;if((l|0)!=0){fd[l&511](y)}if(k<<24>>24!=0){O=0;i=h;return O|0}hd[c[j+8>>2]&127](j,y);O=0;i=h;return O|0}}while(0);if((q|0)==36){z=c[m>>2]|0;A=n;q=73}do{if((q|0)==73){if((z|0)==0){p=A;break}m=c[z+28>>2]|0;n=c[z+24>>2]|0;if((n|0)!=0){fd[n&511](z)}if(k<<24>>24!=0){p=A;break}hd[c[m+8>>2]&127](m,z);p=A}}while(0);k=c[l>>2]|0;if((k|0)==0){O=p;i=h;return O|0}l=k+96|0;if((c[l>>2]|0)==0){O=p;i=h;return O|0}O=k+128|0;N=(c[O>>2]|0)+60|0;c[N>>2]=(c[N>>2]|0)+ -1;if((c[(c[O>>2]|0)+60>>2]|0)!=0){O=p;i=h;return O|0}n=c[l>>2]|0;m=c[n+8>>2]|0;l=n+24|0;o=c[l>>2]|0;if((o|0)==0){O=p;i=h;return O|0}while(1){if((c[o+8>>2]|0)==(k|0)){break}g=c[o+4>>2]|0;if((g|0)==0){j=p;q=134;break}else{o=g}}if((q|0)==134){i=h;return j|0}j=c[o>>2]|0;q=c[o+4>>2]|0;if((j|0)==0){c[l>>2]=q}else{c[j+4>>2]=q}if((q|0)==0){c[n+28>>2]=j}else{c[q>>2]=j}if((o|0)!=0){hd[c[m+8>>2]&127](m,o)}UJ(m,k,n);O=p;i=h;return O|0}function NJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;h=i;i=i+32|0;j=h;if((b|0)==0){f=6;i=g;return f|0}c[h>>2]=1;c[j+4>>2]=b;c[j+8>>2]=d;c[j+16>>2]=0;f=MJ(a,j,e,f)|0;i=g;return f|0}function OJ(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;m=c[a+20>>2]|0;l=c[a+8>>2]|0;p=c[m+36>>2]|0;do{if((p|0)>0){k=Bd[c[l+4>>2]&255](l,p)|0;q=(k|0)==0;o=q?64:0;if(q){k=0;break}bX(k|0,0,p|0)|0}else{k=0;o=p>>31&6}}while(0);do{if((o|0)==0){o=Bd[c[l+4>>2]&255](l,64)|0;q=(o|0)==0;p=q?64:0;if(q){n=64;f=0;break}bX(o|0,0,64)|0;q=k+128|0;c[q>>2]=o;c[k+96>>2]=a;c[k+100>>2]=l;c[k+104>>2]=d;c[o+52>>2]=0;a:do{if((f|0)>0){r=0;do{a=(c[q>>2]|0)+52|0;if((c[a>>2]|0)!=0){break a}if((c[g+(r<<3)>>2]|0)==1768842098){c[a>>2]=c[g+(r<<3)+4>>2]}r=r+1|0;}while((r|0)<(f|0))}}while(0);a=c[m+48>>2]|0;if((a|0)!=0){p=Cd[a&63](d,k,e,f,g)|0}if((p|0)!=0){n=p;f=o;break}l=c[k+40>>2]|0;if((l|0)==0){c[h>>2]=k;r=0;i=j;return r|0}m=(c[k+36>>2]|0)+ -1|0;b:do{if((m|0)>=0){m=l+(m<<2)|0;g=m;c:do{f=c[g>>2]|0;do{if((c[f+4>>2]|0)==1970170211){e=b[f+8>>1]|0;if(e<<16>>16==3){if((b[f+10>>1]|0)!=10){break}}else if(e<<16>>16==0){if((b[f+10>>1]|0)!=4){break}}else{break}if((g-l|0)<=60){n=25;break c}}}while(0);g=g+ -4|0;}while(g>>>0>=l>>>0);if((n|0)==25){c[k+92>>2]=f;break}while(1){n=c[m>>2]|0;if((c[n+4>>2]|0)==1970170211){if((m-l|0)<=60){break}}m=m+ -4|0;if(m>>>0>>0){break b}}c[k+92>>2]=n}}while(0);c[h>>2]=k;r=0;i=j;return r|0}else{n=o;f=0}}while(0);e=(k|0)==0;if(!e){g=k+36|0;d=k+40|0;o=c[d>>2]|0;if((c[g>>2]|0)>0){a=0;do{p=c[o+(a<<2)>>2]|0;q=c[(c[p>>2]|0)+100>>2]|0;o=c[(c[p+12>>2]|0)+8>>2]|0;if((o|0)!=0){fd[o&511](p)}hd[c[q+8>>2]&127](q,p);c[(c[d>>2]|0)+(a<<2)>>2]=0;a=a+1|0;o=c[d>>2]|0}while((a|0)<(c[g>>2]|0))}if((o|0)!=0){hd[c[l+8>>2]&127](l,o)}c[d>>2]=0;c[g>>2]=0}m=c[m+52>>2]|0;if((m|0)!=0){fd[m&511](k)}if((f|0)!=0){hd[c[l+8>>2]&127](l,f)}if(!e){hd[c[l+8>>2]&127](l,k)}c[h>>2]=0;r=n;i=j;return r|0}function PJ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[a+20>>2]|0;if((e|0)==0){e=(c[a+4>>2]|0)>>>0>>0?85:0}else{e=(pd[e&63](a,b,0,0)|0)==0;e=e?0:85}if((e|0)!=0){i=d;return e|0}c[a+8>>2]=b;i=d;return e|0}function QJ(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var 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;g=i;o=i;i=i+8|0;n=i;i=i+8|0;m=c[a>>2]|0;j=b+8|0;h=c[j>>2]|0;k=b+4|0;if((h+3|0)>>>0>=(c[k>>2]|0)>>>0){z=85;i=g;return z|0}l=b+20|0;q=c[l>>2]|0;do{if((q|0)==0){r=(c[b>>2]|0)+h|0;if((r|0)!=0){q=h;p=7;break}c[j>>2]=h+4}else{if((pd[q&63](b,h,n,4)|0)==4){q=c[j>>2]|0;r=n;p=7;break}else{z=85;i=g;return z|0}}}while(0);do{if((p|0)==7){z=(d[r+1|0]|0)<<16|(d[r]|0)<<24|(d[r+2|0]|0)<<8|(d[r+3|0]|0);p=q+4|0;c[j>>2]=p;if((z|0)!=1954115633){break}r=c[k>>2]|0;if((q+5|0)>>>0>=r>>>0){z=85;i=g;return z|0}s=c[l>>2]|0;do{if((s|0)==0){o=(c[b>>2]|0)+p|0;if((o|0)!=0){r=0;s=p;p=14;break}c[j>>2]=q+6;o=r;r=q+12|0;q=0;p=17}else{if((pd[s&63](b,p,o,2)|0)==2){r=c[l>>2]|0;s=c[j>>2]|0;p=14;break}else{z=85;i=g;return z|0}}}while(0);do{if((p|0)==14){q=((d[o]|0)<<8&65535|(d[o+1|0]|0))&65535;c[j>>2]=s+2;s=s+8|0;if((r|0)==0){o=c[k>>2]|0;r=s;p=17;break}else{z=(pd[r&63](b,s,0,0)|0)==0;o=z?0:85;break}}}while(0);if((p|0)==17){s=r;o=o>>>0>>0?85:0}if((o|0)!=0){z=o;i=g;return z|0}c[j>>2]=s;if((q|0)==0){z=142;i=g;return z|0}r=(e|0)>-1;o=(e|0)<0;p=s;u=0;s=1;t=-1;a:while(1){x=c[k>>2]|0;if((p+3|0)>>>0>=x>>>0){x=85;p=71;break}v=c[l>>2]|0;do{if((v|0)==0){v=(c[b>>2]|0)+p|0;if((v|0)!=0){x=0;z=p;p=29;break}c[j>>2]=p+4;y=p+8|0;z=p;v=0;p=32}else{if((pd[v&63](b,p,n,4)|0)!=4){x=85;p=71;break a}x=c[l>>2]|0;z=c[j>>2]|0;v=n;p=29}}while(0);do{if((p|0)==29){p=0;v=(d[v+1|0]|0)<<16|(d[v]|0)<<24|(d[v+2|0]|0)<<8|(d[v+3|0]|0);c[j>>2]=z+4;w=z+8|0;if((x|0)==0){x=c[k>>2]|0;y=w;p=32;break}else{y=(pd[x&63](b,w,0,0)|0)==0;x=y?0:85;break}}}while(0);if((p|0)==32){p=0;w=y;x=x>>>0>>0?85:0}if((x|0)!=0){p=71;break}c[j>>2]=w;y=c[k>>2]|0;if((z+11|0)>>>0>=y>>>0){x=85;p=71;break}x=c[l>>2]|0;if((x|0)==0){x=(c[b>>2]|0)+w|0;if((x|0)==0){x=0}else{p=39}}else{if((pd[x&63](b,w,n,4)|0)!=4){x=85;p=71;break}y=c[k>>2]|0;w=c[j>>2]|0;x=n;p=39}if((p|0)==39){p=0;x=(d[x+1|0]|0)<<16|(d[x]|0)<<24|(d[x+2|0]|0)<<8|(d[x+3|0]|0)}z=w+4|0;c[j>>2]=z;if((w+7|0)>>>0>=y>>>0){x=85;p=71;break}w=c[l>>2]|0;if((w|0)==0){w=(c[b>>2]|0)+z|0;if((w|0)==0){w=0}else{p=45}}else{if((pd[w&63](b,z,n,4)|0)!=4){x=85;p=71;break}z=c[j>>2]|0;w=n;p=45}if((p|0)==45){w=(d[w+1|0]|0)<<16|(d[w]|0)<<24|(d[w+2|0]|0)<<8|(d[w+3|0]|0)}p=z+4|0;c[j>>2]=p;if((v|0)==1415139377){x=x+24|0;w=w+ -24|0;if(o){n=w;u=0;p=50;break}else{u=0;t=t+1|0}}else if((v|0)==1128875040){x=x+22|0;w=w+ -22|0;if(o){n=w;u=1;p=50;break}else{u=1;t=t+1|0}}if(r&(t|0)==(e|0)){n=w;p=50;break}if((s|0)>=(q|0)){x=142;p=71;break}s=s+1|0}if((p|0)==50){p=x+h|0;q=c[l>>2]|0;if((q|0)==0){q=(c[k>>2]|0)>>>0

>>0?85:0}else{z=(pd[q&63](b,p,0,0)|0)==0;q=z?0:85}if((q|0)!=0){z=0;i=g;return z|0}c[j>>2]=p;do{if((n|0)>0){m=Bd[c[m+4>>2]&255](m,n)|0;p=(m|0)==0;x=p?64:0;if(p){m=0;break}bX(m|0,0,n|0)|0}else{m=0;x=n>>31&6}}while(0);do{if((x|0)==0){p=c[j>>2]|0;r=c[k>>2]|0;if(r>>>0<=p>>>0){z=85;i=g;return z|0}q=c[l>>2]|0;if((q|0)==0){q=r-p|0;q=q>>>0>n>>>0?n:q;$W(m|0,(c[b>>2]|0)+p|0,q|0)|0}else{q=pd[q&63](b,p,m,n)|0}c[j>>2]=q+p;if(q>>>0>>0){z=85;i=g;return z|0}else{x=qL(a,m,n,o?e:0,u<<24>>24!=0?206512:206504,f)|0;break}}}while(0);if((x|0)==2){break}i=g;return x|0}else if((p|0)==71){i=g;return x|0}}}while(0);l=c[l>>2]|0;if((l|0)==0){b=(c[k>>2]|0)>>>0>>0?85:0}else{z=(pd[l&63](b,h,0,0)|0)==0;b=z?0:85}if((b|0)!=0){z=b;i=g;return z|0}c[j>>2]=h;z=2;i=g;return z|0}function RJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;if((a|0)==0){k=35;i=d;return k|0}if((b|0)==0){k=36;i=d;return k|0}e=a+96|0;if((c[e>>2]|0)==0){k=34;i=d;return k|0}c[b>>2]=0;g=c[(c[e>>2]|0)+20>>2]|0;e=c[a+100>>2]|0;h=c[g+40>>2]|0;do{if((h|0)>0){f=Bd[c[e+4>>2]&255](e,h)|0;k=(f|0)==0;j=k?64:0;if(k){f=0;break}bX(f|0,0,h|0)|0}else{f=0;j=h>>31&6}}while(0);a:do{if((j|0)==0){h=Bd[c[e+4>>2]&255](e,12)|0;if((h|0)==0){j=64;break}bX(h|0,0,12)|0;c[f>>2]=a;c[f+40>>2]=0;g=c[g+56>>2]|0;do{if((g|0)!=0){j=jd[g&511](f)|0;if((j|0)==0){break}if((h|0)==0){break a}hd[c[e+8>>2]&127](e,h);break a}}while(0);c[b>>2]=f;c[h+8>>2]=f;b=a+112|0;e=c[b>>2]|0;c[h+4>>2]=0;c[h>>2]=e;if((e|0)==0){c[a+108>>2]=h}else{c[e+4>>2]=h}c[b>>2]=h;k=0;i=d;return k|0}}while(0);if((f|0)==0){k=j;i=d;return k|0}hd[c[e+8>>2]&127](e,f);k=j;i=d;return k|0}function SJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;if((a|0)==0){j=35;i=b;return j|0}d=a+96|0;if((c[d>>2]|0)==0){j=35;i=b;return j|0}j=a+128|0;h=(c[j>>2]|0)+60|0;c[h>>2]=(c[h>>2]|0)+ -1;if((c[(c[j>>2]|0)+60>>2]|0)!=0){j=0;i=b;return j|0}g=c[d>>2]|0;f=c[g+8>>2]|0;d=g+24|0;h=c[d>>2]|0;if((h|0)==0){j=35;i=b;return j|0}while(1){if((c[h+8>>2]|0)==(a|0)){break}h=c[h+4>>2]|0;if((h|0)==0){a=35;e=16;break}}if((e|0)==16){i=b;return a|0}e=c[h>>2]|0;j=c[h+4>>2]|0;if((e|0)==0){c[d>>2]=j}else{c[e+4>>2]=j}if((j|0)==0){c[g+28>>2]=e}else{c[j>>2]=e}if((h|0)!=0){hd[c[f+8>>2]&127](f,h)}UJ(f,a,g);j=0;i=b;return j|0}function TJ(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a>>2]|0;if((a|0)==0){a=0;i=d;return a|0}while(1){if((c[a+8>>2]|0)==(b|0)){b=4;break}a=c[a+4>>2]|0;if((a|0)==0){a=0;b=4;break}}if((b|0)==4){i=d;return a|0}return 0}function UJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;f=d+20|0;d=c[f>>2]|0;g=c[b+120>>2]|0;if((g|0)!=0){fd[g&511](c[b+116>>2]|0)}g=b+84|0;h=c[g>>2]|0;if((h|0)!=0){do{EJ(h);h=c[g>>2]|0;}while((h|0)!=0)}h=b+108|0;l=c[h>>2]|0;if((l|0)!=0){g=a+8|0;while(1){j=c[l+4>>2]|0;k=c[l+8>>2]|0;m=c[k+8>>2]|0;if((m|0)!=0){fd[m&511](k)}m=c[(c[f>>2]|0)+60>>2]|0;if((m|0)!=0){fd[m&511](k)}m=k+40|0;n=c[m>>2]|0;if((n|0)!=0){hd[c[g>>2]&127](a,n)}c[m>>2]=0;if((k|0)!=0){hd[c[g>>2]&127](a,k)}if((l|0)!=0){hd[c[g>>2]&127](a,l)}if((j|0)==0){break}else{l=j}}}c[h>>2]=0;c[b+112>>2]=0;c[b+88>>2]=0;f=c[b+48>>2]|0;if((f|0)!=0){fd[f&511](b)}f=(b|0)==0;if(!f){h=b+36|0;g=b+40|0;k=c[g>>2]|0;if((c[h>>2]|0)>0){j=0;do{m=c[k+(j<<2)>>2]|0;k=c[(c[m>>2]|0)+100>>2]|0;l=c[(c[m+12>>2]|0)+8>>2]|0;if((l|0)!=0){fd[l&511](m)}hd[c[k+8>>2]&127](k,m);c[(c[g>>2]|0)+(j<<2)>>2]=0;j=j+1|0;k=c[g>>2]|0}while((j|0)<(c[h>>2]|0))}if((k|0)!=0){hd[c[a+8>>2]&127](a,k)}c[g>>2]=0;c[h>>2]=0}d=c[d+52>>2]|0;if((d|0)!=0){fd[d&511](b)}j=b+104|0;h=c[j>>2]|0;g=c[b+8>>2]&1024;do{if((h|0)!=0){k=c[h+28>>2]|0;d=c[h+24>>2]|0;if((d|0)!=0){fd[d&511](h)}if((g|0)!=0){break}hd[c[k+8>>2]&127](k,h)}}while(0);c[j>>2]=0;d=b+128|0;g=c[d>>2]|0;if((g|0)!=0){hd[c[a+8>>2]&127](a,g);c[d>>2]=0}if(f){i=e;return}hd[c[a+8>>2]&127](a,b);i=e;return}function VJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;if((a|0)==0){k=36;i=b;return k|0}g=c[a>>2]|0;if((g|0)==0){k=35;i=b;return k|0}e=c[g+96>>2]|0;if((e|0)==0){k=34;i=b;return k|0}d=c[e+8>>2]|0;f=g+108|0;j=c[f>>2]|0;if((j|0)==0){k=36;i=b;return k|0}while(1){if((c[j+8>>2]|0)==(a|0)){break}j=c[j+4>>2]|0;if((j|0)==0){a=36;h=25;break}}if((h|0)==25){i=b;return a|0}k=c[j>>2]|0;h=c[j+4>>2]|0;if((k|0)==0){c[f>>2]=h}else{c[k+4>>2]=h}if((h|0)==0){c[g+112>>2]=k}else{c[h>>2]=k}if((j|0)!=0){hd[c[d+8>>2]&127](d,j)}g=g+88|0;do{if((c[g>>2]|0)==(a|0)){c[g>>2]=0;f=c[f>>2]|0;if((f|0)==0){break}c[g>>2]=c[f+8>>2]}}while(0);f=c[a+8>>2]|0;if((f|0)!=0){fd[f&511](a)}e=c[(c[e+20>>2]|0)+60>>2]|0;if((e|0)!=0){fd[e&511](a)}e=a+40|0;f=c[e>>2]|0;if((f|0)!=0){hd[c[d+8>>2]&127](d,f)}c[e>>2]=0;hd[c[d+8>>2]&127](d,a);k=0;i=b;return k|0}function WJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;if((c[a+8>>2]&2|0)==0){l=35;i=g;return l|0}if((c[b>>2]|0)!=0){l=7;i=g;return l|0}h=c[b+12>>2]|0;j=c[b+4>>2]|0;if((h|0)==0){h=j}else{h=((da(j,h)|0)+36|0)/72|0}l=c[b+16>>2]|0;k=c[b+8>>2]|0;if((l|0)==0){b=k}else{b=((da(k,l)|0)+36|0)/72|0}j=(j|0)==0;k=(k|0)==0?h:b;h=(j?k:h)+32|0;j=(j?b:k)+32|0;b=c[a+28>>2]|0;if((b|0)<=0){l=23;i=g;return l|0}a=c[a+32>>2]|0;d=d<<24>>24==0;k=0;while(1){if(((c[a+(k<<4)+12>>2]|0)+32^j)>>>0<=63){if(!(((c[a+(k<<4)+8>>2]|0)+32^h)>>>0>63&d)){break}}k=k+1|0;if((k|0)>=(b|0)){e=23;f=14;break}}if((f|0)==14){i=g;return e|0}if((e|0)==0){l=0;i=g;return l|0}c[e>>2]=k;l=0;i=g;return l|0}function XJ(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+4>>2]|0;d=c[a+12>>2]|0;if((d|0)<0){d=(e|0)<(d|0)?d:e}else{d=e-((d|0)>0?d:0)|0}if((b|0)==0){b=(d*12|0)/10|0}c[a+20>>2]=(c[a+8>>2]|0)-((c[a+16>>2]|0)/2|0);c[a+24>>2]=(b-d|0)/2|0;c[a+28>>2]=b;i=i;return}function YJ(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;e=c[a+88>>2]|0;f=e+12|0;j=c[a+32>>2]|0;k=j+(d<<4)+8|0;b[f>>1]=((c[k>>2]|0)+32|0)>>>6;h=j+(d<<4)+12|0;b[e+14>>1]=((c[h>>2]|0)+32|0)>>>6;if((c[a+8>>2]&1|0)==0){c[e+16>>2]=65536;c[e+20>>2]=65536;c[e+24>>2]=c[h>>2];c[e+28>>2]=0;c[e+32>>2]=b[j+(d<<4)>>1]<<6;c[e+36>>2]=c[k>>2];i=g;return}l=c[k>>2]|0;j=a+68|0;m=b[j>>1]|0;d=m&65535;k=(l|0)<0;l=k?0-l|0:l;do{if(m<<16>>16==0){o=2147483647}else{m=l>>16;n=l<<16;l=d>>>1|n;if((m|0)==0){o=(l>>>0)/(d>>>0)|0;break}n=(l>>>0>>0)+m|0;if(n>>>0>>0){m=32;o=0}else{o=2147483647;break}while(1){o=o<<1;n=n<<1|l>>>31;if(n>>>0>=d>>>0){o=o|1;n=n-d|0}m=m+ -1|0;if((m|0)==0){break}else{l=l<<1}}}}while(0);c[e+16>>2]=k?0-o|0:o;k=c[h>>2]|0;d=b[j>>1]|0;j=d&65535;h=(k|0)<0;k=h?0-k|0:k;do{if(d<<16>>16==0){l=2147483647}else{d=k>>16;l=k<<16;k=j>>>1|l;if((d|0)==0){l=(k>>>0)/(j>>>0)|0;break}m=(k>>>0>>0)+d|0;if(m>>>0>>0){d=32;l=0}else{l=2147483647;break}while(1){l=l<<1;m=m<<1|k>>>31;if(m>>>0>=j>>>0){l=l|1;m=m-j|0}d=d+ -1|0;if((d|0)==0){break}else{k=k<<1}}}}while(0);c[e+20>>2]=h?0-l|0:l;ZJ(a,f);i=g;return}function ZJ(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;j=b[a+70>>1]|0;h=j<<16>>16;f=c[d+8>>2]|0;g=(f|0)==65536;if(!(j<<16>>16==0|g)){k=j<<16>>16<0?0-h|0:h;j=(f|0)<0?0-f|0:f;if(k>>>0<2049&j>>>0<1048577){j=((da(j,k)|0)+32768|0)>>>16}else{l=k&65535;j=(da(j>>>16,l)|0)+(da(k>>>16,j)|0)+(((da(j&65535,l)|0)+32768|0)>>>16)|0}h=(f^h|0)<0?0-j|0:j}c[d+12>>2]=h+63&-64;j=b[a+72>>1]|0;h=j<<16>>16;if(!(j<<16>>16==0|g)){j=j<<16>>16<0?0-h|0:h;k=(f|0)<0?0-f|0:f;if(j>>>0<2049&k>>>0<1048577){j=((da(k,j)|0)+32768|0)>>>16}else{l=j&65535;j=(da(k>>>16,l)|0)+(da(j>>>16,k)|0)+(((da(k&65535,l)|0)+32768|0)>>>16)|0}h=(f^h|0)<0?0-j|0:j}c[d+16>>2]=h&-64;j=b[a+74>>1]|0;h=j<<16>>16;if(!(j<<16>>16==0|g)){g=j<<16>>16<0?0-h|0:h;j=(f|0)<0?0-f|0:f;if(g>>>0<2049&j>>>0<1048577){g=((da(j,g)|0)+32768|0)>>>16}else{l=g&65535;g=(da(j>>>16,l)|0)+(da(g>>>16,j)|0)+(((da(j&65535,l)|0)+32768|0)>>>16)|0}h=(f^h|0)<0?0-g|0:g}c[d+20>>2]=h+32&-64;g=b[a+76>>1]|0;a=g<<16>>16;f=c[d+4>>2]|0;if(g<<16>>16==0|(f|0)==65536){k=a;k=k+32|0;k=k&-64;l=d+24|0;c[l>>2]=k;i=e;return}g=g<<16>>16<0?0-a|0:a;h=(f|0)<0?0-f|0:f;if(g>>>0<2049&h>>>0<1048577){g=((da(h,g)|0)+32768|0)>>>16}else{l=g&65535;g=(da(h>>>16,l)|0)+(da(g>>>16,h)|0)+(((da(h&65535,l)|0)+32768|0)>>>16)|0}k=(f^a|0)<0?0-g|0:g;k=k+32|0;k=k&-64;l=d+24|0;c[l>>2]=k;i=e;return}function _J(a,d){a=a|0;d=d|0;var 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;f=i;h=c[a+88>>2]|0;g=h+12|0;if((c[a+8>>2]&1|0)==0){bX(g|0,0,28)|0;c[h+16>>2]=65536;c[h+20>>2]=65536;i=f;return}a:do{switch(c[d>>2]|0){case 2:{j=(c[a+64>>2]|0)-(c[a+56>>2]|0)|0;l=(c[a+60>>2]|0)-(c[a+52>>2]|0)|0;k=11;break};case 4:{o=c[d+4>>2]|0;k=h+16|0;c[k>>2]=o;j=c[d+8>>2]|0;l=h+20|0;c[l>>2]=j;if((o|0)==0){c[k>>2]=j;p=j;o=j;q=0;l=0;k=44;break a}if((j|0)!=0){p=j;q=0;l=0;k=44;break a}c[l>>2]=o;p=o;q=0;l=0;k=44;break};case 1:{l=(b[a+70>>1]|0)-(b[a+72>>1]|0)|0;j=l;k=11;break};case 0:{l=e[a+68>>1]|0;j=l;k=11;break};case 3:{j=(b[a+70>>1]|0)-(b[a+72>>1]|0)|0;l=b[a+76>>1]|0;k=11;break};default:{j=0;l=0;k=11}}}while(0);do{if((k|0)==11){n=(l|0)<0?0-l|0:l;m=(j|0)<0?0-j|0:j;j=c[d+12>>2]|0;o=c[d+4>>2]|0;if((j|0)==0){l=o}else{l=((da(o,j)|0)+36|0)/72|0}p=c[d+16>>2]|0;q=d+8|0;j=c[q>>2]|0;if((p|0)!=0){j=((da(j,p)|0)+36|0)/72|0}if((o|0)==0){o=(j|0)<0?0-j|0:j;k=j^m;l=(m|0)<0?0-m|0:m;do{if((l|0)==0){r=2147483647}else{p=o>>16;q=o<<16;o=q+(l>>1)|0;if((p|0)==0){r=(o>>>0)/(l>>>0)|0;break}q=(o>>>0>>0)+p|0;if(q>>>0>>0){p=32;r=0}else{r=2147483647;break}while(1){r=r<<1;q=q<<1|o>>>31;if(q>>>0>=l>>>0){r=r|1;q=q-l|0}p=p+ -1|0;if((p|0)==0){break}else{o=o<<1}}}}while(0);o=(k|0)<0?0-r|0:r;c[h+20>>2]=o;c[h+16>>2]=o;p=o;q=j;l=_I(j,n,m)|0;k=44;break}r=(l|0)<0?0-l|0:l;o=l^n;p=(n|0)<0?0-n|0:n;do{if((p|0)==0){t=2147483647}else{s=r>>16;t=r<<16;r=t+(p>>1)|0;if((s|0)==0){t=(r>>>0)/(p>>>0)|0;break}u=(r>>>0>>0)+s|0;if(u>>>0

>>0){s=32;t=0}else{t=2147483647;break}while(1){t=t<<1;u=u<<1|r>>>31;if(u>>>0>=p>>>0){t=t|1;u=u-p|0}s=s+ -1|0;if((s|0)==0){break}else{r=r<<1}}}}while(0);o=(o|0)<0?0-t|0:t;p=h+16|0;c[p>>2]=o;if((c[q>>2]|0)==0){c[h+20>>2]=o;p=o;q=_I(l,m,n)|0;k=44;break}q=(j|0)<0?0-j|0:j;n=j^m;m=(m|0)<0?0-m|0:m;do{if((m|0)==0){s=2147483647}else{r=q>>16;s=q<<16;q=s+(m>>1)|0;if((r|0)==0){s=(q>>>0)/(m>>>0)|0;break}t=(q>>>0>>0)+r|0;if(t>>>0>>0){r=32;s=0}else{s=2147483647;break}while(1){s=s<<1;t=t<<1|q>>>31;if(t>>>0>=m>>>0){s=s|1;t=t-m|0}r=r+ -1|0;if((r|0)==0){break}else{q=q<<1}}}}while(0);m=(n|0)<0?0-s|0:s;q=h+20|0;c[q>>2]=m;n=c[d>>2]|0;if((n|0)!=3){break}if((m|0)>(o|0)){c[q>>2]=o;p=o;q=j;k=44;break}else{c[p>>2]=m;p=m;o=m;q=j;k=44;break}}}while(0);if((k|0)==44){m=p;n=c[d>>2]|0;j=q}do{if((n|0)!=0){d=b[a+68>>1]|0;j=d&65535;k=d<<16>>16==0;if(k|(o|0)==65536){l=j}else{l=(o|0)<0;n=l?0-o|0:o;if((d&65535)<2049&n>>>0<1048577){n=((da(n,j)|0)+32768|0)>>>16}else{n=(((da(n&65535,j)|0)+32768|0)>>>16)+(da(n>>>16,j)|0)|0}l=l?0-n|0:n}if(k|(m|0)==65536){break}k=(m|0)<0;m=k?0-m|0:m;if((d&65535)<2049&m>>>0<1048577){d=((da(m,j)|0)+32768|0)>>>16}else{d=(((da(m&65535,j)|0)+32768|0)>>>16)+(da(m>>>16,j)|0)|0}j=k?0-d|0:d}}while(0);b[g>>1]=(l+32|0)>>>6;b[h+14>>1]=(j+32|0)>>>6;ZJ(a,g);i=f;return}function $J(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((a|0)==0){e=35;i=d;return e|0}if((c[a+8>>2]&2|0)==0){e=35;i=d;return e|0}if((b|0)<0){e=6;i=d;return e|0}if((c[a+28>>2]|0)<=(b|0)){e=6;i=d;return e|0}e=c[(c[(c[a+96>>2]|0)+20>>2]|0)+100>>2]|0;if((e|0)==0){YJ(a,b);e=0;i=d;return e|0}else{e=Bd[e&255](c[a+88>>2]|0,b)|0;i=d;return e|0}return 0}function aK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;if((a|0)==0){k=35;i=d;return k|0}if((b|0)==0){k=6;i=d;return k|0}h=c[b+4>>2]|0;if((h|0)<0){k=6;i=d;return k|0}g=c[b+8>>2]|0;if((g|0)<0){k=6;i=d;return k|0}j=c[b>>2]|0;if(j>>>0>4){k=6;i=d;return k|0}f=c[(c[a+96>>2]|0)+20>>2]|0;k=c[f+96>>2]|0;if((k|0)!=0){k=Bd[k&255](c[a+88>>2]|0,b)|0;i=d;return k|0}k=c[a+8>>2]|0;if((k&3|0)!=2){_J(a,b);k=0;i=d;return k|0}if((k&2|0)==0){k=35;i=d;return k|0}if((j|0)!=0){k=7;i=d;return k|0}j=c[b+12>>2]|0;if((j|0)==0){j=h}else{j=((da(j,h)|0)+36|0)/72|0}b=c[b+16>>2]|0;if((b|0)==0){b=g}else{b=((da(g,b)|0)+36|0)/72|0}h=(h|0)==0;k=(g|0)==0?j:b;g=(h?k:j)+32|0;b=(h?b:k)+32|0;h=c[a+28>>2]|0;if((h|0)<=0){k=23;i=d;return k|0}k=c[a+32>>2]|0;j=0;while(1){if(((c[k+(j<<4)+12>>2]|0)+32^b)>>>0<=63){if(((c[k+(j<<4)+8>>2]|0)+32^g)>>>0<=63){break}}j=j+1|0;if((j|0)>=(h|0)){a=23;e=25;break}}if((e|0)==25){i=d;return a|0}if(!((j|0)>-1&(h|0)>(j|0))){k=6;i=d;return k|0}e=c[f+100>>2]|0;if((e|0)==0){YJ(a,j);k=0;i=d;return k|0}else{k=Bd[e&255](c[a+88>>2]|0,j)|0;i=d;return k|0}return 0}function bK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;g=i;i=i+24|0;e=g;if((b|0)==0){h=d;b=d}else{h=(d|0)==0?b:d}d=(b|0)==0?1:b;h=(h|0)==0?1:h;c[g>>2]=0;c[e+4>>2]=d>>>0<65535?d<<6:4194240;c[e+8>>2]=h>>>0<65535?h<<6:4194240;c[e+12>>2]=0;c[e+16>>2]=0;b=aK(a,e)|0;i=f;return b|0}function cK(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;if((a|0)==0){m=35;i=g;return m|0}if((d|0)==0){m=6;i=g;return m|0}else if((d|0)==1970170211){d=c[a+40>>2]|0;if((d|0)==0){m=38;i=g;return m|0}j=(c[a+36>>2]|0)+ -1|0;if((j|0)<0){m=38;i=g;return m|0}j=d+(j<<2)|0;l=j;a:while(1){k=c[l>>2]|0;do{if((c[k+4>>2]|0)==1970170211){m=b[k+8>>1]|0;if(m<<16>>16==3){if((b[k+10>>1]|0)!=10){break}}else if(m<<16>>16==0){if((b[k+10>>1]|0)!=4){break}}else{break}if((l-d|0)<=60){e=12;break a}}}while(0);l=l+ -4|0;if(l>>>0>>0){h=j;break}}if((e|0)==12){c[a+92>>2]=k;m=0;i=g;return m|0}while(1){j=c[h>>2]|0;if((c[j+4>>2]|0)==1970170211){if((h-d|0)<=60){break}}h=h+ -4|0;if(h>>>0>>0){f=38;e=23;break}}if((e|0)==23){i=g;return f|0}c[a+92>>2]=j;m=0;i=g;return m|0}else{h=c[a+40>>2]|0;if((h|0)==0){m=38;i=g;return m|0}m=c[a+36>>2]|0;k=h+(m<<2)|0;if((m|0)>0){l=h}else{m=6;i=g;return m|0}while(1){j=c[l>>2]|0;if((c[j+4>>2]|0)==(d|0)){if((l-h|0)<=60){break}}l=l+4|0;if(l>>>0>=k>>>0){f=6;e=23;break}}if((e|0)==23){i=g;return f|0}c[a+92>>2]=j;m=0;i=g;return m|0}return 0}function dK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;e=i;h=i;i=i+8|0;if((a|0)==0){k=35;i=e;return k|0}f=a+40|0;g=c[f>>2]|0;if((g|0)==0){k=38;i=e;return k|0}do{if((b|0)!=0){j=c[b>>2]|0;if((j|0)==0){break}j=c[j+96>>2]|0;k=c[(c[j>>2]|0)+32>>2]|0;if((k|0)==0){break}j=Bd[k&255](j,206272)|0;if((j|0)==0){break}if((Bd[c[j>>2]&255](b,h)|0)!=0){break}if((c[h+4>>2]|0)==14){b=6}else{break}i=e;return b|0}}while(0);k=c[a+36>>2]|0;h=g+(k<<2)|0;if((k|0)<=0){k=6;i=e;return k|0}while(1){if((c[g>>2]|0)==(b|0)){if((g-(c[f>>2]|0)|0)<=60){break}}g=g+4|0;if(g>>>0>=h>>>0){b=6;d=14;break}}if((d|0)==14){i=e;return b|0}c[a+92>>2]=b;k=0;i=e;return k|0}function eK(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;if((b|0)==0|(e|0)==0){o=6;i=g;return o|0}k=c[e>>2]|0;if((k|0)==0){o=6;i=g;return o|0}j=c[k+100>>2]|0;n=c[b>>2]|0;do{if((n|0)>0){h=Bd[c[j+4>>2]&255](j,n)|0;o=(h|0)==0;m=o?64:0;if(o){h=0;break}bX(h|0,0,n|0)|0}else{h=0;m=n>>31&6}}while(0);a:do{if((m|0)==0){$W(h|0,e|0,12)|0;e=h+12|0;c[e>>2]=b;b=c[b+4>>2]|0;if((b|0)==0){l=10}else{m=Bd[b&255](h,d)|0;if((m|0)==0){l=10}}if((l|0)==10){l=k+36|0;d=c[l>>2]|0;m=d+1|0;k=k+40|0;b=c[k>>2]|0;b:do{if((m|d|0)<0){m=6}else{do{if((m|0)==0){if((b|0)==0){b=0;break}hd[c[j+8>>2]&127](j,b);b=0}else{if((d|0)>536870910){m=10;break b}do{if((d|0)==0){b=m<<2;n=Bd[c[j+4>>2]&255](j,b)|0;j=(n|0)==0;m=j?64:0;if(j){b=0;break}bX(n|0,0,b|0)|0;b=n}else{m=pd[c[j+12>>2]&63](j,d<<2,m<<2,b)|0;j=(m|0)==0;b=j?b:m;m=j?64:0}}while(0);if((m|0)!=0){break b}}}while(0);m=b+(d<<2)|0;a[m]=0;a[m+1|0]=0;a[m+2|0]=0;a[m+3|0]=0;c[k>>2]=b;m=c[l>>2]|0;c[l>>2]=m+1;c[b+(m<<2)>>2]=h;m=0;break a}}while(0);c[k>>2]=b}j=c[(c[h>>2]|0)+100>>2]|0;e=c[(c[e>>2]|0)+8>>2]|0;if((e|0)!=0){fd[e&511](h)}hd[c[j+8>>2]&127](j,h);h=0}}while(0);if((f|0)==0){o=m;i=g;return o|0}c[f>>2]=h;o=m;i=g;return o|0}function fK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=i;i=i+8|0;g=f;do{if((a|0)==0){g=0;f=0}else{h=c[a+92>>2]|0;if((h|0)==0){g=0;f=0;break}a=a+16|0;if((c[a>>2]|0)==0){g=0;f=0;break}c[f>>2]=b;j=h+12|0;do{b=Bd[c[(c[j>>2]|0)+16>>2]&255](h,g)|0;}while(b>>>0>=(c[a>>2]|0)>>>0);g=b;f=(b|0)==0?0:c[f>>2]|0}}while(0);if((d|0)==0){i=e;return f|0}c[d>>2]=g;i=e;return f|0}function gK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;if((a|0)==0){h=0;i=d;return h|0}if((c[a+8>>2]&512|0)==0){h=0;i=d;return h|0}e=a+128|0;f=(c[e>>2]|0)+40|0;h=c[f>>2]|0;if((h|0)==-2){h=0;i=d;return h|0}else if((h|0)==0){g=4}do{if((g|0)==4){h=c[a+96>>2]|0;g=c[(c[h>>2]|0)+32>>2]|0;if((g|0)==0){c[f>>2]=-2;h=0;i=d;return h|0}else{h=Bd[g&255](h,206256)|0;c[(c[e>>2]|0)+40>>2]=(h|0)!=0?h:-2;if((h|0)==0){a=0}else{break}i=d;return a|0}}}while(0);e=c[h+4>>2]|0;if((e|0)==0){h=0;i=d;return h|0}h=Bd[e&255](a,b)|0;i=d;return h|0}function hK(a){a=a|0;var b=0,d=0;b=i;do{if((a|0)==0){a=6}else{d=c[a>>2]|0;if((d|0)==0){a=6;break}if((c[d+96>>2]|0)==0){a=6;break}c[d+88>>2]=a;a=0}}while(0);i=b;return a|0}function iK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;if((a|0)==0){h=0;i=f;return h|0}h=c[a+156>>2]|0;a=(d|0)!=0;if(a){g=c[d>>2]|0;if((g|0)!=0){h=c[g+4>>2]|0}c[d>>2]=0}if((h|0)==0){h=0;i=f;return h|0}while(1){g=c[h+8>>2]|0;if((c[g+24>>2]|0)==(b|0)){break}h=c[h+4>>2]|0;if((h|0)==0){b=0;e=11;break}}if((e|0)==11){i=f;return b|0}if(!a){h=g;i=f;return h|0}c[d>>2]=h;h=g;i=f;return h|0}function jK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;g=b+72|0;j=c[g>>2]|0;a:do{if((j|0)==1869968492){m=a+156|0;h=m;m=c[m>>2]|0;l=c[a+164>>2]|0;f=8}else if((j|0)==1651078259){m=0;i=e;return m|0}else{h=a+156|0;if((a|0)==0){j=7;l=0;k=0}else{m=c[h>>2]|0;if((m|0)==0){m=0;l=0;f=8;break}while(1){l=c[m+8>>2]|0;if((c[l+24>>2]|0)==(j|0)){break}m=c[m+4>>2]|0;if((m|0)==0){m=0;l=0;break}}if((a|0)==0){j=7;k=0}else{f=8;break}}while(1){if((l|0)==0){break}j=pd[c[l+68>>2]&63](l,b,d,0)|0;if((j|0)!=0&(j&255|0)==19){l=0;k=1}else{d=1;b=l;break a}}i=e;return j|0}}while(0);b:do{if((f|0)==8){j=7;k=0;c:while(1){if((l|0)==0){break}j=pd[c[l+68>>2]&63](l,b,d,0)|0;if(!((j|0)!=0&(j&255|0)==19)){d=0;b=l;break b}k=c[g>>2]|0;m=c[((m|0)==0?h:m+4|0)>>2]|0;if((m|0)==0){m=0;l=0;k=1;continue}while(1){l=c[m+8>>2]|0;if((c[l+24>>2]|0)==(k|0)){k=1;continue c}m=c[m+4>>2]|0;if((m|0)==0){m=0;l=0;k=1;continue c}}}i=e;return j|0}}while(0);if((j|0)!=0|(k|0)==0|d|(b|0)==0){m=j;i=e;return m|0}d=c[h>>2]|0;if((d|0)==0){m=0;i=e;return m|0}while(1){if((c[d+8>>2]|0)==(b|0)){break}d=c[d+4>>2]|0;if((d|0)==0){j=0;f=27;break}}if((f|0)==27){i=e;return j|0}j=c[d>>2]|0;g=d+4|0;f=c[g>>2]|0;if((j|0)!=0){c[j+4>>2]=f;if((f|0)==0){c[a+160>>2]=j}else{c[f>>2]=j}c[d>>2]=0;c[g>>2]=c[h>>2];c[c[h>>2]>>2]=d;c[h>>2]=d}if((c[b+24>>2]|0)!=1869968492){m=0;i=e;return m|0}c[a+164>>2]=b;m=0;i=e;return m|0}function kK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;if((a|0)==0){n=33;i=d;return n|0}if((b|0)==0){n=6;i=d;return n|0}if((c[b+16>>2]|0)>131076){n=4;i=d;return n|0}e=a+24|0;k=c[e>>2]|0;do{if((k|0)==0){j=a}else{j=c[b+8>>2]|0;l=0;while(1){g=c[a+28+(l<<2)>>2]|0;f=c[g>>2]|0;l=l+1|0;if((Qc(c[f+8>>2]|0,j|0)|0)==0){h=9;break}if(l>>>0>>0){}else{break}}do{if((h|0)==9){if((c[b+12>>2]|0)>(c[f+12>>2]|0)){lK(a,g)|0;k=c[e>>2]|0;break}else{n=5;i=d;return n|0}}}while(0);if(k>>>0>31){e=48}else{j=a;break}i=d;return e|0}}while(0);f=c[j>>2]|0;k=c[b+4>>2]|0;do{if((k|0)>0){g=Bd[c[f+4>>2]&255](f,k)|0;m=(g|0)==0;l=m?64:0;if(m){g=0;break}bX(g|0,0,k|0)|0}else{g=0;l=k>>31&6}}while(0);if((l|0)!=0){n=l;i=d;return n|0}c[g+4>>2]=a;c[g+8>>2]=f;c[g>>2]=b;k=c[b>>2]|0;a:do{if((k&2|0)==0){j=b;h=31}else{k=c[j>>2]|0;j=Bd[c[k+4>>2]&255](k,12)|0;if((j|0)==0){n=64;break}bX(j|0,0,12)|0;m=c[g>>2]|0;c[g+20>>2]=m;n=m+36|0;c[g+24>>2]=c[n>>2];do{if((c[n>>2]|0)==1869968492){l=m+56|0;n=c[(c[l>>2]|0)+4>>2]|0;if((n|0)==0){break}n=Bd[n&255](k,g+60|0)|0;if((n|0)==0){c[g+64>>2]=c[(c[l>>2]|0)+16>>2];c[g+68>>2]=c[m+40>>2];break}else{hd[c[k+8>>2]&127](k,j);break a}}}while(0);c[j+8>>2]=g;h=a+160|0;k=c[h>>2]|0;c[j+4>>2]=0;c[j>>2]=k;if((k|0)==0){c[a+156>>2]=j;c[h>>2]=j}else{c[k+4>>2]=j;c[h>>2]=j;j=c[a+156>>2]|0}b:do{if((j|0)==0){h=0}else{while(1){h=c[j+8>>2]|0;if((c[h+24>>2]|0)==1869968492){break b}j=c[j+4>>2]|0;if((j|0)==0){h=0;break}}}}while(0);c[a+164>>2]=h;j=c[g>>2]|0;k=c[j>>2]|0;h=31}}while(0);c:do{if((h|0)==31){if((k&4|0)==0){h=k}else{c[a+168>>2]=g;j=c[g>>2]|0;h=c[j>>2]|0}do{if((h&1|0)!=0){c[g+20>>2]=j;if((c[j>>2]&512|0)!=0){break}h=Bd[c[f+4>>2]&255](f,96)|0;if((h|0)==0){n=64;break c}bX(h|0,0,96)|0;c[h>>2]=f;c[g+36>>2]=h}}while(0);b=c[b+24>>2]|0;if((b|0)!=0){n=jd[b&511](g)|0;if((n|0)!=0){break}}n=c[e>>2]|0;c[e>>2]=n+1;c[a+28+(n<<2)>>2]=g;n=0;i=d;return n|0}}while(0);e=c[c[g>>2]>>2]|0;if((e&513|0)==1){mJ(c[g+36>>2]|0);e=c[c[g>>2]>>2]|0}do{if((e&2|0)!=0){a=c[g+20>>2]|0;if((c[a+36>>2]|0)!=1869968492){break}e=c[g+60>>2]|0;if((e|0)==0){break}fd[c[(c[a+56>>2]|0)+20>>2]&511](e)}}while(0);if((g|0)==0){i=d;return n|0}hd[c[f+8>>2]&127](f,g);i=d;return n|0}function lK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;if((a|0)==0){m=33;i=d;return m|0}if((b|0)==0){m=34;i=d;return m|0}j=a+24|0;h=c[j>>2]|0;k=a+28+(h<<2)|0;if((h|0)<=0){m=34;i=d;return m|0}e=a+28|0;while(1){g=e+4|0;if((c[e>>2]|0)==(b|0)){break}if(g>>>0>>0){e=g}else{b=34;f=46;break}}if((f|0)==46){i=d;return b|0}f=h+ -1|0;c[j>>2]=f;f=a+28+(f<<2)|0;if(e>>>0>>0){while(1){g=e+4|0;c[e>>2]=c[g>>2];if(g>>>0>>0){e=g}else{break}}}c[f>>2]=0;g=b+8|0;e=c[g>>2]|0;f=c[b>>2]|0;a=b+4|0;j=c[a>>2]|0;h=c[b+16>>2]|0;if((h|0)!=0){fd[h&511](b)}do{if((j|0)!=0){h=j+168|0;if((c[h>>2]|0)!=(b|0)){break}c[h>>2]=0}}while(0);l=c[b>>2]|0;m=c[l>>2]|0;a:do{if((m&2|0)!=0){a=c[a>>2]|0;h=c[a>>2]|0;j=a+156|0;k=c[j>>2]|0;if((k|0)==0){break}while(1){if((c[k+8>>2]|0)==(b|0)){break}k=c[k+4>>2]|0;if((k|0)==0){break a}}l=c[b+20>>2]|0;do{if((c[l+36>>2]|0)==1869968492){m=c[b+60>>2]|0;if((m|0)==0){break}fd[c[(c[l+56>>2]|0)+20>>2]&511](m)}}while(0);m=c[k>>2]|0;l=c[k+4>>2]|0;if((m|0)==0){c[j>>2]=l}else{c[m+4>>2]=l}if((l|0)==0){c[a+160>>2]=m}else{c[l>>2]=m}if((k|0)!=0){hd[c[h+8>>2]&127](h,k)}b:do{if((a|0)==0){j=0}else{h=c[j>>2]|0;if((h|0)==0){j=0;break}while(1){j=c[h+8>>2]|0;if((c[j+24>>2]|0)==1869968492){break b}h=c[h+4>>2]|0;if((h|0)==0){j=0;break}}}}while(0);c[a+164>>2]=j;l=c[b>>2]|0;m=c[l>>2]|0}}while(0);do{if((m&1|0)!=0){a=c[g>>2]|0;g=b+24|0;j=c[g>>2]|0;if((j|0)!=0){h=a+8|0;while(1){k=c[j+4>>2]|0;UJ(a,c[j+8>>2]|0,b);if((j|0)!=0){hd[c[h>>2]&127](a,j)}if((k|0)==0){break}else{j=k}}l=c[b>>2]|0}c[g>>2]=0;c[b+28>>2]=0;if((c[l>>2]&512|0)!=0){break}mJ(c[b+36>>2]|0)}}while(0);f=c[f+28>>2]|0;if((f|0)!=0){fd[f&511](b)}hd[c[e+8>>2]&127](e,b);m=0;i=d;return m|0}function mK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;if((a|0)==0|(b|0)==0){f=0;i=d;return f|0}f=c[a+24>>2]|0;e=a+28+(f<<2)|0;if((f|0)<=0){f=0;i=d;return f|0}f=a+28|0;while(1){a=c[f>>2]|0;f=f+4|0;if((Qc(c[(c[a>>2]|0)+8>>2]|0,b|0)|0)==0){b=6;break}if(f>>>0>>0){}else{a=0;b=6;break}}if((b|0)==6){i=d;return a|0}return 0}function nK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;if((a|0)==0|(b|0)==0){h=0;i=e;return h|0}h=c[a+24>>2]|0;f=a+28+(h<<2)|0;if((h|0)<=0){h=0;i=e;return h|0}h=a+28|0;while(1){g=c[h>>2]|0;a=c[g>>2]|0;h=h+4|0;if((Qc(c[a+8>>2]|0,b|0)|0)==0){break}if(h>>>0>>0){}else{b=0;d=8;break}}if((d|0)==8){i=e;return b|0}if((g|0)==0){h=0;i=e;return h|0}h=c[a+20>>2]|0;i=e;return h|0}function oK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;if((a|0)==0){h=0;i=d;return h|0}e=c[(c[a>>2]|0)+32>>2]|0;do{if((e|0)!=0){g=Bd[e&255](a,b)|0;if((g|0)==0){break}i=d;return g|0}}while(0);f=c[a+4>>2]|0;h=c[f+24>>2]|0;e=f+28+(h<<2)|0;if((h|0)<=0){h=0;i=d;return h|0}f=f+28|0;a:while(1){h=c[f>>2]|0;do{if((h|0)!=(a|0)){g=c[(c[h>>2]|0)+32>>2]|0;if((g|0)==0){break}g=Bd[g&255](h,b)|0;if((g|0)!=0){a=10;break a}}}while(0);f=f+4|0;if(f>>>0>=e>>>0){g=0;a=10;break}}if((a|0)==10){i=d;return g|0}return 0}function pK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if((a|0)==0){g=6;i=d;return g|0}f=a+4|0;e=Bd[c[f>>2]&255](a,200)|0;if((e|0)==0){g=64;i=d;return g|0}bX(e|0,0,200)|0;c[e>>2]=a;c[e+176>>2]=16384;g=Bd[c[f>>2]&255](a,16384)|0;f=(g|0)==0;if(f){c[e+172>>2]=0;hd[c[a+8>>2]&127](a,e);g=f?64:0;i=d;return g|0}else{bX(g|0,0,16384)|0;c[e+172>>2]=g;c[e+12>>2]=2;c[e+16>>2]=4;c[e+20>>2]=4;c[e+196>>2]=1;c[b>>2]=e;g=0;i=d;return g|0}return 0}function qK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if((a|0)==0){h=0;g=0;a=0}else{h=c[a+12>>2]|0;g=c[a+16>>2]|0;a=c[a+20>>2]|0}if((b|0)!=0){c[b>>2]=h}if((d|0)!=0){c[d>>2]=g}if((e|0)==0){i=f;return}c[e>>2]=a;i=f;return}function rK(a){a=a|0;var b=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;d=i;if((a|0)==0){s=33;i=d;return s|0}r=a+196|0;s=(c[r>>2]|0)+ -1|0;c[r>>2]=s;if((s|0)!=0){s=0;i=d;return s|0}b=c[a>>2]|0;f=c[a+8>>2]|0;if((f|0)!=0){fd[f&511](a)}f=a+24|0;h=c[f>>2]|0;m=h;g=0;do{if((h|0)==0){h=0}else{h=(g|0)==0;j=206296+(g<<2)|0;k=0;while(1){l=c[a+28+(k<<2)>>2]|0;n=c[l>>2]|0;if(h){if((Qc(c[n+8>>2]|0,c[j>>2]|0)|0)==0){e=11}else{l=m}}else{e=11}do{if((e|0)==11){e=0;if((c[n>>2]&1|0)==0){l=m;break}l=l+24|0;n=c[l>>2]|0;if((n|0)==0){l=m;break}do{m=c[n+8>>2]|0;a:do{if((m|0)!=0){n=m+96|0;if((c[n>>2]|0)==0){break}s=m+128|0;r=(c[s>>2]|0)+60|0;c[r>>2]=(c[r>>2]|0)+ -1;if((c[(c[s>>2]|0)+60>>2]|0)!=0){break}o=c[n>>2]|0;n=c[o+8>>2]|0;p=o+24|0;s=c[p>>2]|0;if((s|0)==0){break}while(1){if((c[s+8>>2]|0)==(m|0)){break}s=c[s+4>>2]|0;if((s|0)==0){break a}}q=c[s>>2]|0;r=c[s+4>>2]|0;if((q|0)==0){c[p>>2]=r}else{c[q+4>>2]=r}if((r|0)==0){c[o+28>>2]=q}else{c[r>>2]=q}if((s|0)!=0){hd[c[n+8>>2]&127](n,s)}UJ(n,m,o)}}while(0);n=c[l>>2]|0;}while((n|0)!=0);l=c[f>>2]|0}}while(0);k=k+1|0;if(k>>>0>>0){m=l}else{m=l;h=l;break}}}g=g+1|0;}while(g>>>0<2);if((m|0)!=0){do{lK(a,c[a+28+(m+ -1<<2)>>2]|0)|0;m=c[f>>2]|0;}while((m|0)!=0)}e=a+172|0;f=c[e>>2]|0;if((f|0)!=0){hd[c[b+8>>2]&127](b,f)}c[e>>2]=0;c[a+176>>2]=0;hd[c[b+8>>2]&127](b,a);s=0;i=d;return s|0}function sK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;j=i;k=i;i=i+24|0;g=k;h=(c[(c[a>>2]|0)+96>>2]|0)+20|0;if((c[(c[h>>2]|0)+96>>2]|0)==0){d=0;i=j;return d|0}c[k>>2]=0;c[g+4>>2]=b;c[g+8>>2]=d;k=(e|0)==0?f:e;e=(k|0)==0;c[g+12>>2]=e?72:k;c[g+16>>2]=e?72:(f|0)==0?k:f;d=Bd[c[(c[h>>2]|0)+96>>2]&255](a,g)|0;i=j;return d|0}function tK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=i;i=i+24|0;g=f;h=(c[(c[a>>2]|0)+96>>2]|0)+20|0;if((c[(c[h>>2]|0)+96>>2]|0)==0){a=0;i=e;return a|0}c[f>>2]=0;c[g+4>>2]=b<<6;c[g+8>>2]=d<<6;c[g+12>>2]=0;c[g+16>>2]=0;a=Bd[c[(c[h>>2]|0)+96>>2]&255](a,g)|0;i=e;return a|0}function uK(d,e,f){d=d|0;e=e|0;f=f|0;var 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,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;g=i;l=i;i=i+8|0;y=l;t=i;i=i+8|0;s=t;o=i;i=i+8|0;p=o;k=i;i=i+8|0;j=k;m=i;i=i+8|0;n=m;q=i;i=i+8|0;v=q;r=i;i=i+8|0;w=r;u=i;i=i+8|0;x=u;if((d|0)==0|(e|0)==0){Z=6;i=g;return Z|0}h=c[e+16>>2]|0;z=c[e+20>>2]|0;if((b[d>>1]|0)<=0){Z=0;i=g;return Z|0}N=d+12|0;L=d+4|0;K=s+4|0;M=d+8|0;F=e+4|0;I=v+4|0;J=w+4|0;G=x+4|0;H=e+12|0;E=p+4|0;D=y+4|0;C=j+4|0;B=n+4|0;A=e+8|0;U=0;P=0;a:while(1){Z=b[(c[N>>2]|0)+(P<<1)>>1]|0;O=Z<<16>>16;if(Z<<16>>16<0){S=20;Q=29;break}R=c[L>>2]|0;Q=R+(O<<3)|0;V=R+(U<<3)|0;Z=c[V>>2]|0;V=c[V+4>>2]|0;X=t;c[X>>2]=Z;c[X+4>>2]=V;c[t>>2]=(Z<>2]=V;Z=(c[R+(O<<3)>>2]<>2]<>2]|0;T=c[T+4>>2]|0;S=l;c[S>>2]=Y;c[S+4>>2]=T;S=c[M>>2]|0;T=S+U|0;W=a[T]&3;if((W|0)==2){S=20;Q=29;break}else if((W|0)==0){if((a[S+O|0]&3)==1){c[t>>2]=Z;c[K>>2]=X;Q=R+(O+ -1<<3)|0}else{c[t>>2]=(Y+Z|0)/2|0;c[K>>2]=(V+X|0)/2|0}T=U+ -1|0;U=T;T=S+T|0}S=R+(U<<3)|0;R=Bd[c[e>>2]&255](s,f)|0;if((R|0)!=0){S=R;Q=29;break}b:do{if(S>>>0>>0){U=T;c:while(1){R=S+8|0;T=U+1|0;V=a[T]&3;if((V|0)==0){U=(c[R>>2]<>2]=U;S=(c[S+12>>2]<>2]=S;if(R>>>0>>0){V=R}else{Q=20;break}while(1){R=V+8|0;T=T+1|0;X=a[T]&3;W=(c[R>>2]<>2]=W;V=(c[V+12>>2]<>2]=V;if((X|0)==1){break}else if((X|0)!=0){S=20;Q=29;break a}c[m>>2]=(W+U|0)/2|0;c[B>>2]=(V+S|0)/2|0;S=sd[c[A>>2]&127](y,n,f)|0;if((S|0)!=0){Q=29;break a}S=k;U=c[S>>2]|0;S=c[S+4>>2]|0;Z=l;c[Z>>2]=U;c[Z+4>>2]=S;if(R>>>0>>0){S=S|0;V=R}else{Q=20;break c}}S=sd[c[A>>2]&127](y,j,f)|0;if((S|0)!=0){Q=29;break a}}else if((V|0)==1){c[o>>2]=(c[R>>2]<>2]=(c[S+12>>2]<>2]&255](p,f)|0;if((S|0)!=0){Q=29;break a}}else{if((S+16|0)>>>0>Q>>>0){S=20;Q=29;break a}if((a[U+2|0]&3)!=2){S=20;Q=29;break a}R=S+24|0;c[q>>2]=(c[S+8>>2]<>2]=(c[S+12>>2]<>2]=(c[S+16>>2]<>2]=(c[S+20>>2]<>>0>Q>>>0){Q=25;break}c[u>>2]=(c[R>>2]<>2]=(c[S+28>>2]<>2]&63](v,w,x,f)|0;if((S|0)==0){T=U+3|0}else{Q=29;break a}}if(R>>>0>>0){S=R;U=T}else{Q=26;break b}}if((Q|0)==20){Q=0;S=sd[c[A>>2]&127](y,s,f)|0;break}else if((Q|0)==25){Q=0;S=pd[c[H>>2]&63](v,w,s,f)|0;break}}else{Q=26}}while(0);if((Q|0)==26){S=Bd[c[F>>2]&255](s,f)|0}if((S|0)!=0){Q=29;break}P=P+1|0;if((P|0)<(b[d>>1]|0)){U=O+1|0}else{S=0;Q=29;break}}if((Q|0)==29){i=g;return S|0}return 0}function vK(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;if((f|0)==0|(a|0)==0){m=6;i=g;return m|0}bX(f|0,0,20)|0;a:do{if((d|0)<0){e=6;h=10}else{k=(d|0)==0;do{if(k){m=0}else{if((d|0)>268435455){e=10;h=10;break a}j=d<<3;m=Bd[c[a+4>>2]&255](a,j)|0;l=(m|0)==0;if(l){m=0}else{bX(m|0,0,j|0)|0}if(l){j=f+4|0;c[j>>2]=m;e=64;break a}else{bX(m|0,0,j|0)|0;break}}}while(0);j=f+4|0;c[j>>2]=m;do{if(k){m=0;h=18}else{l=(d|0)>0;if(!l){k=d>>31&6;c[f+8>>2]=0;if((k|0)==0){break}else{e=k;break a}}m=Bd[c[a+4>>2]&255](a,d)|0;k=(m|0)==0;if(k){m=0}else{bX(m|0,0,d|0)|0}if(l&(k^1)){bX(m|0,0,d|0)|0;h=18;break}else{c[f+8>>2]=m;if(k){e=64;break a}else{break}}}}while(0);if((h|0)==18){c[f+8>>2]=m}b:do{if((e|0)<0){e=6}else{do{if((e|0)==0){m=0}else{if((e|0)>1073741823){e=10;break b}k=e<<1;m=Bd[c[a+4>>2]&255](a,k)|0;l=(m|0)==0;if(l){m=0}else{bX(m|0,0,k|0)|0}if(l){c[f+12>>2]=m;e=64;break a}else{bX(m|0,0,k|0)|0;break}}}while(0);c[f+12>>2]=m;b[f+2>>1]=d;b[f>>1]=e;m=f+16|0;c[m>>2]=c[m>>2]|1;m=0;i=g;return m|0}}while(0);c[f+12>>2]=0}}while(0);if((h|0)==10){j=f+4|0;c[j>>2]=0}h=f+16|0;c[h>>2]=c[h>>2]|1;h=c[j>>2]|0;if((h|0)!=0){hd[c[a+8>>2]&127](a,h)}c[j>>2]=0;h=f+8|0;d=c[h>>2]|0;if((d|0)!=0){hd[c[a+8>>2]&127](a,d)}c[h>>2]=0;h=c[f+12>>2]|0;if((h|0)!=0){hd[c[a+8>>2]&127](a,h)}bX(f|0,0,20)|0;m=e;i=g;return m|0}function wK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((a|0)==0){e=33;i=f;return e|0}e=vK(c[a>>2]|0,b,d,e)|0;i=f;return e|0}function xK(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=i;if((a|0)==0|(d|0)==0){g=6;i=e;return g|0}g=a+2|0;f=b[g>>1]|0;if(f<<16>>16!=(b[d+2>>1]|0)){g=6;i=e;return g|0}if((b[a>>1]|0)!=(b[d>>1]|0)){g=6;i=e;return g|0}if((a|0)==(d|0)){g=0;i=e;return g|0}$W(c[d+4>>2]|0,c[a+4>>2]|0,f<<16>>16<<3|0)|0;$W(c[d+8>>2]|0,c[a+8>>2]|0,b[g>>1]|0)|0;$W(c[d+12>>2]|0,c[a+12>>2]|0,b[a>>1]<<1|0)|0;g=d+16|0;c[g>>2]=c[a+16>>2]&-2|c[g>>2]&1;g=0;i=e;return g|0}function yK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;if((a|0)==0){f=33;i=d;return f|0}a=c[a>>2]|0;if((a|0)==0|(b|0)==0){f=6;i=d;return f|0}if((c[b+16>>2]&1|0)!=0){e=b+4|0;f=c[e>>2]|0;if((f|0)!=0){hd[c[a+8>>2]&127](a,f)}c[e>>2]=0;e=b+8|0;f=c[e>>2]|0;if((f|0)!=0){hd[c[a+8>>2]&127](a,f)}c[e>>2]=0;e=b+12|0;f=c[e>>2]|0;if((f|0)!=0){hd[c[a+8>>2]&127](a,f)}c[e>>2]=0}bX(b|0,0,20)|0;f=0;i=d;return f|0}function zK(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;if((a|0)==0|(d|0)==0){i=e;return}h=b[a+2>>1]|0;do{if(h<<16>>16==0){l=0;g=0;h=0;j=0}else{f=c[a+4>>2]|0;a=f+(h<<16>>16<<3)|0;g=c[f>>2]|0;j=c[f+4>>2]|0;if(h<<16>>16<=1){l=g;h=j;break}k=f;f=f+8|0;l=g;h=j;while(1){m=c[f>>2]|0;g=(m|0)<(g|0)?m:g;l=(m|0)>(l|0)?m:l;k=c[k+12>>2]|0;j=(k|0)<(j|0)?k:j;h=(k|0)>(h|0)?k:h;k=f+8|0;if(k>>>0>>0){m=f;f=k;k=m}else{break}}}}while(0);c[d>>2]=g;c[d+8>>2]=l;c[d+4>>2]=j;c[d+12>>2]=h;i=e;return}function AK(a){a=a|0;var 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;d=i;k=i;i=i+16|0;h=k;g=i;i=i+16|0;e=g;$W(g|0,206304,12)|0;if((a|0)==0){z=0;i=d;return z|0}if((b[a+2>>1]|0)<1){z=0;i=d;return z|0}j=b[a>>1]|0;if(j<<16>>16<=0){z=0;i=d;return z|0}p=c[a+12>>2]|0;l=c[a+4>>2]|0;n=p+(j<<16>>16<<1)|0;o=l;r=32768;j=0;a=0;s=-32768;q=32768;while(1){m=b[p>>1]|0;t=l+(m<<3)|0;if(t>>>0>=(o+16|0)>>>0){if(o>>>0>t>>>0){y=-32768;u=32768;x=-32768;v=32768}else{y=-32768;u=32768;x=-32768;v=32768;w=o;while(1){z=c[w>>2]|0;u=(z|0)<(u|0)?z:u;y=(z|0)>(y|0)?z:y;z=c[w+4>>2]|0;v=(z|0)<(v|0)?z:v;x=(z|0)>(x|0)?z:x;w=w+8|0;if(w>>>0>t>>>0){break}else{}}}w=(u|0)>=(r|0)|(u|0)==(y|0)|(v|0)==(x|0);r=w?r:u;j=w?j:o;a=w?a:t;s=w?s:x;q=w?q:v}p=p+2|0;if(p>>>0>>0){o=l+(m+1<<3)|0}else{break}}if((r|0)==32768){z=0;i=d;return z|0}c[k>>2]=(q*3|0)+s>>2;c[h+4>>2]=s+q>>1;c[h+8>>2]=(s*3|0)+q>>2;l=j>>>0>a>>>0;k=0;do{a:do{if(!l){m=h+(k<<2)|0;o=c[m>>2]|0;p=0;r=0;q=32768;n=j;s=a;u=0;t=0;v=-32768;while(1){x=c[n+4>>2]|0;do{if((x|0)==(o|0)){f=16}else{w=c[s+4>>2]|0;if((w|0)==(o|0)){f=16;break}do{if(!((x|0)<(o|0)&(w|0)<(o|0))){if((x|0)>(o|0)&(w|0)>(o|0)){break}y=c[s>>2]|0;w=(_I((c[n>>2]|0)-y|0,o-w|0,x-w|0)|0)+y|0;y=(w|0)<(q|0);x=(w|0)>(v|0);p=y?s:p;r=y?n:r;q=y?w:q;u=x?s:u;t=x?n:t;v=x?w:v}}while(0);w=n+8|0;s=n}}while(0);if((f|0)==16){f=0;o=o+1|0;c[m>>2]=o;p=0;r=0;q=32768;w=j;s=a;u=0;t=0;v=-32768}if(w>>>0>a>>>0){break}else{n=w}}if((p|0)==0|(u|0)==0){break}m=c[p+4>>2]|0;n=c[r+4>>2]|0;do{if((m|0)<(n|0)){if((c[u+4>>2]|0)<=(c[t+4>>2]|0)){break}c[e+(k<<2)>>2]=0;break a}}while(0);do{if((m|0)>(n|0)){if((c[u+4>>2]|0)>=(c[t+4>>2]|0)){break}c[e+(k<<2)>>2]=1;break a}}while(0);c[e+(k<<2)>>2]=2}}while(0);k=k+1|0;}while((k|0)<3);g=c[g>>2]|0;f=e+4|0;do{if((g|0)!=2){if((g|0)==(c[f>>2]|0)){z=g;i=d;return z|0}if((g|0)!=(c[e+8>>2]|0)){break}i=d;return g|0}}while(0);g=c[f>>2]|0;do{if((g|0)!=2){if((g|0)!=(c[e+8>>2]|0)){break}i=d;return g|0}}while(0);z=0;i=d;return z|0}function BK(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;l=i;i=i+8|0;q=i;i=i+16|0;o=q;p=i;i=i+16|0;n=p;m=e+20|0;j=c[m>>2]|0;if((j|0)==0){j=(c[e+4>>2]|0)>>>0>>0?85:0}else{s=(pd[j&63](e,f,0,0)|0)==0;j=s?0:85}if((j|0)!=0){s=j;i=b;return s|0}j=e+8|0;c[j>>2]=f;k=e+4|0;r=c[k>>2]|0;if(r>>>0<=f>>>0){s=85;i=b;return s|0}s=c[m>>2]|0;if((s|0)==0){r=r-f|0;r=r>>>0>16?16:r;$W(q|0,(c[e>>2]|0)+f|0,r|0)|0}else{r=pd[s&63](e,f,o,16)|0}c[j>>2]=r+f;if(r>>>0<=15){s=85;i=b;return s|0}r=(d[o+1|0]<<16|d[q]<<24|d[o+2|0]<<8|d[o+3|0])+f|0;c[h>>2]=r;s=d[o+5|0]<<16|d[o+4|0]<<24|d[o+6|0]<<8|d[o+7|0];h=s+f|0;if(((d[o+9|0]<<16|d[o+8|0]<<24|d[o+10|0]<<8|d[o+11|0])+r|0)!=(h|0)|(s|0)==0){s=2;i=b;return s|0}f=c[m>>2]|0;if((f|0)==0){f=(c[k>>2]|0)>>>0>>0?85:0}else{s=(pd[f&63](e,h,0,0)|0)==0;f=s?0:85}if((f|0)!=0){s=f;i=b;return s|0}c[j>>2]=h;a[n+15|0]=(a[o+15|0]|0)+1<<24>>24;f=c[k>>2]|0;if(f>>>0<=h>>>0){s=85;i=b;return s|0}q=c[m>>2]|0;if((q|0)==0){f=f-h|0;f=f>>>0>16?16:f;$W(p|0,(c[e>>2]|0)+h|0,f|0)|0}else{f=pd[q&63](e,h,n,16)|0}p=f+h|0;c[j>>2]=p;if(f>>>0>15){q=1;f=1;r=0}else{s=85;i=b;return s|0}do{s=a[n+r|0]|0;f=s<<24>>24==0?f:0;q=s<<24>>24==(a[o+r|0]|0)?q:0;r=r+1|0;}while((r|0)<16);if((q|f|0)==0){s=2;i=b;return s|0}o=p+8|0;n=c[m>>2]|0;if((n|0)==0){n=(c[k>>2]|0)>>>0>>0?85:0}else{s=(pd[n&63](e,o,0,0)|0)==0;n=s?0:85}if((n|0)==0){c[j>>2]=o}else{o=c[j>>2]|0}if((o+1|0)>>>0>=(c[k>>2]|0)>>>0){s=85;i=b;return s|0}n=c[m>>2]|0;do{if((n|0)==0){l=(c[e>>2]|0)+o|0;if((l|0)!=0){n=0;m=34;break}c[j>>2]=o+2;m=36}else{if((pd[n&63](e,o,l,2)|0)==2){n=c[m>>2]|0;o=c[j>>2]|0;m=34;break}else{s=85;i=b;return s|0}}}while(0);do{if((m|0)==34){s=(d[l]<<8&65535|d[l+1|0])&65535;c[j>>2]=o+2;h=s+h|0;if((n|0)==0){m=36;break}s=(pd[n&63](e,h,0,0)|0)==0;e=h;k=s?0:85}}while(0);if((m|0)==36){e=h;k=(c[k>>2]|0)>>>0>>0?85:0}if((k|0)!=0){s=k;i=b;return s|0}c[j>>2]=e;c[g>>2]=e;s=0;i=b;return s|0}function CK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;g=a+8|0;f=c[g>>2]|0;h=c[a+4>>2]|0;if(h>>>0<=f>>>0){j=85;i=e;return j|0}j=c[a+20>>2]|0;if((j|0)==0){h=h-f|0;j=h>>>0>d>>>0?d:h;$W(b|0,(c[a>>2]|0)+f|0,j|0)|0;b=j}else{b=pd[j&63](a,f,b,d)|0}c[g>>2]=b+f;j=b>>>0>>0?85:0;i=e;return j|0}function DK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;if((b|0)<0){f=85;i=d;return f|0}e=a+8|0;b=(c[e>>2]|0)+b|0;f=c[a+20>>2]|0;if((f|0)==0){a=(c[a+4>>2]|0)>>>0>>0?85:0}else{f=(pd[f&63](a,b,0,0)|0)==0;a=f?0:85}if((a|0)!=0){f=a;i=d;return f|0}c[e>>2]=b;f=0;i=d;return f|0}function EK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;j=i;i=i+8|0;c[b>>2]=0;g=a+8|0;h=c[g>>2]|0;do{if((h+1|0)>>>0<(c[a+4>>2]|0)>>>0){k=c[a+20>>2]|0;if((k|0)==0){j=(c[a>>2]|0)+h|0;if((j|0)==0){j=0}else{e=6}}else{if((pd[k&63](a,h,j,2)|0)!=2){break}h=c[g>>2]|0;e=6}if((e|0)==6){j=(d[j]|0)<<8&65535|(d[j+1|0]|0)}c[g>>2]=h+2;k=j;i=f;return k|0}}while(0);c[b>>2]=85;k=0;i=f;return k|0}function FK(a,e,f,g,h,j,k){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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=i;o=i;i=i+8|0;n=i;i=i+8|0;a=c[a>>2]|0;p=e+20|0;q=c[p>>2]|0;if((q|0)==0){q=(c[e+4>>2]|0)>>>0>>0?85:0}else{y=(pd[q&63](e,f,0,0)|0)==0;q=y?0:85}if((q|0)!=0){y=q;i=l;return y|0}q=e+8|0;c[q>>2]=f;r=e+4|0;if((f+1|0)>>>0>=(c[r>>2]|0)>>>0){y=85;i=l;return y|0}s=c[p>>2]|0;do{if((s|0)==0){t=(c[e>>2]|0)+f|0;if((t|0)!=0){s=f;m=11;break}u=f+2|0;c[q>>2]=u;s=1}else{if((pd[s&63](e,f,n,2)|0)==2){s=c[q>>2]|0;t=n;m=11;break}else{y=85;i=l;return y|0}}}while(0);if((m|0)==11){y=(((d[t]|0)<<8&65535|(d[t+1|0]|0))&65535)+1|0;u=s+2|0;c[q>>2]=u;s=y}t=1;while(1){v=c[r>>2]|0;if((u+3|0)>>>0>=v>>>0){j=85;m=80;break}w=c[p>>2]|0;if((w|0)==0){w=(c[e>>2]|0)+u|0;if((w|0)==0){x=u;u=0}else{m=20}}else{if((pd[w&63](e,u,o,4)|0)!=4){j=85;m=80;break}v=c[r>>2]|0;u=c[q>>2]|0;w=o;m=20}if((m|0)==20){m=0;x=u;u=(d[w+1|0]|0)<<16|(d[w]|0)<<24|(d[w+2|0]|0)<<8|(d[w+3|0]|0)}w=x+4|0;c[q>>2]=w;if((x+5|0)>>>0>=v>>>0){j=85;m=80;break}x=c[p>>2]|0;if((x|0)==0){x=(c[e>>2]|0)+w|0;if((x|0)==0){x=v;v=1}else{y=x;m=26}}else{if((pd[x&63](e,w,n,2)|0)!=2){j=85;m=80;break}v=c[r>>2]|0;w=c[q>>2]|0;y=n;m=26}if((m|0)==26){m=0;x=v;v=(((d[y]|0)<<8&65535|(d[y+1|0]|0))&65535)+1|0}y=w+2|0;c[q>>2]=y;if((w+3|0)>>>0>=x>>>0){j=85;m=80;break}w=c[p>>2]|0;if((w|0)==0){w=(c[e>>2]|0)+y|0;if((w|0)==0){w=0}else{m=32}}else{if((pd[w&63](e,y,n,2)|0)!=2){j=85;m=80;break}y=c[q>>2]|0;w=n;m=32}if((m|0)==32){m=0;w=((d[w]|0)<<8&65535|(d[w+1|0]|0))&65535}x=y+2|0;c[q>>2]=x;if((u|0)==(h|0)){m=34;break}if((t|0)>=(s|0)){j=1;m=80;break}u=x;t=t+1|0}if((m|0)==34){c[k>>2]=v;h=w+f|0;f=c[p>>2]|0;if((f|0)==0){f=(c[r>>2]|0)>>>0>>0?85:0}else{y=(pd[f&63](e,h,0,0)|0)==0;f=y?0:85}if((f|0)!=0){y=f;i=l;return y|0}c[q>>2]=h;h=c[k>>2]|0;if((h|0)<0){y=6;i=l;return y|0}do{if((h|0)==0){h=0}else{if((h|0)>268435455){y=10;i=l;return y|0}s=h<<3;h=Bd[c[a+4>>2]&255](a,s)|0;f=(h|0)==0;if(f){h=0}else{bX(h|0,0,s|0)|0}if(f){y=64;i=l;return y|0}else{bX(h|0,0,s|0)|0;break}}}while(0);s=c[k>>2]|0;a:do{if((s|0)>0){f=0;while(1){s=c[q>>2]|0;if((s+1|0)>>>0>=(c[r>>2]|0)>>>0){break}t=c[p>>2]|0;if((t|0)==0){t=(c[e>>2]|0)+s|0;if((t|0)==0){t=0}else{m=51}}else{if((pd[t&63](e,s,n,2)|0)!=2){break}s=c[q>>2]|0;t=n;m=51}if((m|0)==51){m=0;t=(d[t]|0)<<8&65535|(d[t+1|0]|0)}c[q>>2]=s+2;b[h+(f<<3)>>1]=t;t=c[q>>2]|0;s=t+2|0;u=c[p>>2]|0;if((u|0)==0){u=(c[r>>2]|0)>>>0>>0?85:0}else{y=(pd[u&63](e,s,0,0)|0)==0;u=y?0:85}if((u|0)!=0){break a}c[q>>2]=s;if((t+5|0)>>>0>=(c[r>>2]|0)>>>0){u=85;break a}u=c[p>>2]|0;do{if((u|0)==0){m=(c[e>>2]|0)+s|0;if((m|0)!=0){t=0;u=s;s=m;m=63;break}c[q>>2]=t+6;u=t+10|0;s=0;m=65}else{if((pd[u&63](e,s,o,4)|0)!=4){u=85;break a}t=c[p>>2]|0;u=c[q>>2]|0;s=o;m=63}}while(0);do{if((m|0)==63){m=0;s=(d[s+2|0]|0)<<8|(d[s+1|0]|0)<<16|(d[s+3|0]|0);c[q>>2]=u+4;u=u+8|0;if((t|0)==0){m=65;break}y=(pd[t&63](e,u,0,0)|0)==0;t=u;u=y?0:85}}while(0);if((m|0)==65){m=0;t=u;u=(c[r>>2]|0)>>>0>>0?85:0}if((u|0)!=0){break a}c[q>>2]=t;c[h+(f<<3)+4>>2]=s;f=f+1|0;s=c[k>>2]|0;if((f|0)>=(s|0)){m=68;break a}}b[h+(f<<3)>>1]=0;u=85}else{m=68}}while(0);do{if((m|0)==68){pb(h|0,s|0,8,189);m=c[k>>2]|0;if((m|0)<0){u=6;break}if((m|0)==0){o=0}else{if((m|0)>536870911){u=10;break}m=m<<2;o=Bd[c[a+4>>2]&255](a,m)|0;n=(o|0)==0;if(n){o=0}else{bX(o|0,0,m|0)|0}if(n){u=64;break}bX(o|0,0,m|0)|0}if((c[k>>2]|0)>0){m=0;do{c[o+(m<<2)>>2]=(c[h+(m<<3)+4>>2]|0)+g;m=m+1|0;}while((m|0)<(c[k>>2]|0))}c[j>>2]=o;u=0}}while(0);if((h|0)==0){y=u;i=l;return y|0}hd[c[a+8>>2]&127](a,h);y=u;i=l;return y|0}else if((m|0)==80){i=l;return j|0}return 0}function GK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;j=i;i=i+8|0;c[b>>2]=0;g=a+8|0;h=c[g>>2]|0;do{if((h+3|0)>>>0<(c[a+4>>2]|0)>>>0){k=c[a+20>>2]|0;if((k|0)==0){j=(c[a>>2]|0)+h|0;if((j|0)==0){j=0}else{e=6}}else{if((pd[k&63](a,h,j,4)|0)!=4){break}h=c[g>>2]|0;e=6}if((e|0)==6){j=(d[j+1|0]|0)<<16|(d[j]|0)<<24|(d[j+2|0]|0)<<8|(d[j+3|0]|0)}c[g>>2]=h+4;k=j;i=f;return k|0}}while(0);c[b>>2]=85;k=0;i=f;return k|0}function HK(a,c){a=a|0;c=c|0;var d=0;d=i;a=b[a>>1]|0;c=b[c>>1]|0;if((a&65535)<(c&65535)){a=-1;i=d;return a|0}a=(a&65535)>(c&65535)|0;i=d;return a|0}function IK(a){a=a|0;i=i;return c[a+8>>2]|0}function JK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=c[a+4>>2]|0;if(g>>>0<=b>>>0){h=85;i=f;return h|0}h=c[a+20>>2]|0;if((h|0)==0){g=g-b|0;h=g>>>0>e>>>0?e:g;$W(d|0,(c[a>>2]|0)+b|0,h|0)|0;d=h}else{d=pd[h&63](a,b,d,e)|0}c[a+8>>2]=d+b;h=d>>>0>>0?85:0;i=f;return h|0}function KK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=a+8|0;g=c[f>>2]|0;h=c[a+4>>2]|0;if(g>>>0>=h>>>0){j=0;i=e;return j|0}j=c[a+20>>2]|0;if((j|0)==0){h=h-g|0;j=h>>>0>d>>>0?d:h;$W(b|0,(c[a>>2]|0)+g|0,j|0)|0;b=j}else{b=pd[j&63](a,g,b,d)|0}c[f>>2]=(c[f>>2]|0)+b;j=b;i=e;return j|0}function LK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;b=MK(a,b)|0;if((b|0)!=0){i=e;return b|0}f=a+32|0;c[d>>2]=c[f>>2];c[f>>2]=0;c[a+36>>2]=0;i=e;return b|0}function MK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;g=a+20|0;if((c[g>>2]|0)==0){e=a+8|0;f=c[e>>2]|0;h=c[a+4>>2]|0;if(f>>>0>=h>>>0|(h-f|0)>>>0>>0){h=85;i=d;return h|0}g=c[a>>2]|0;c[a+32>>2]=g+f;h=f+b|0;c[a+36>>2]=g+h;c[e>>2]=h;h=0;i=d;return h|0}f=c[a+28>>2]|0;if((c[a+4>>2]|0)>>>0>>0){h=85;i=d;return h|0}if((b|0)>0){e=Bd[c[f+4>>2]&255](f,b)|0;h=e;e=(e|0)==0?64:0}else{h=0;e=b>>31&6}c[a>>2]=h;if((e|0)!=0){h=e;i=d;return h|0}e=a+8|0;g=pd[c[g>>2]&63](a,c[e>>2]|0,h,b)|0;h=c[a>>2]|0;if(g>>>0>>0){if((h|0)!=0){hd[c[f+8>>2]&127](f,h)}c[a>>2]=0;h=0;f=85}else{f=0}c[a+32>>2]=h;c[a+36>>2]=h+b;c[e>>2]=(c[e>>2]|0)+g;h=f;i=d;return h|0}function NK(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;do{if((a|0)!=0){if((c[a+20>>2]|0)==0){break}e=c[a+28>>2]|0;a=c[b>>2]|0;if((a|0)!=0){hd[c[e+8>>2]&127](e,a)}c[b>>2]=0}}while(0);c[b>>2]=0;i=d;return}function OK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((b|0)>0){b=Bd[c[a+4>>2]&255](a,b)|0;a=b;b=(b|0)==0?64:0}else{a=0;b=b>>31&6}c[d>>2]=b;i=e;return a|0}function PK(a){a=a|0;var b=0,d=0,e=0;b=i;if((c[a+20>>2]|0)!=0){e=c[a+28>>2]|0;d=c[a>>2]|0;if((d|0)!=0){hd[c[e+8>>2]&127](e,d)}c[a>>2]=0}c[a+32>>2]=0;c[a+36>>2]=0;i=b;return}function QK(b){b=b|0;var d=0,e=0,f=0;d=i;f=b+32|0;e=c[f>>2]|0;if(e>>>0>=(c[b+36>>2]|0)>>>0){f=0;i=d;return f|0}c[f>>2]=e+1;f=a[e]|0;i=d;return f|0}function RK(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;e=a+32|0;f=c[e>>2]|0;g=f+1|0;if(g>>>0>=(c[a+36>>2]|0)>>>0){a=f;g=0;f=e;c[f>>2]=a;i=b;return g|0}a=f+2|0;g=(d[f]|0)<<8&65535|(d[g]|0);f=e;c[f>>2]=a;i=b;return g|0}function SK(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;e=a+32|0;f=c[e>>2]|0;g=f+1|0;if(g>>>0>=(c[a+36>>2]|0)>>>0){a=f;g=0;f=e;c[f>>2]=a;i=b;return g|0}a=f+2|0;g=(d[g]|0)<<8&65535|(d[f]|0);f=e;c[f>>2]=a;i=b;return g|0}function TK(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;e=a+32|0;f=c[e>>2]|0;g=f+3|0;if(g>>>0>=(c[a+36>>2]|0)>>>0){a=f;g=0;f=e;c[f>>2]=a;i=b;return g|0}a=f+4|0;g=(d[f+1|0]|0)<<16|(d[f]|0)<<24|(d[f+2|0]|0)<<8|(d[g]|0);f=e;c[f>>2]=a;i=b;return g|0}function UK(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;e=a+32|0;f=c[e>>2]|0;g=f+3|0;if(g>>>0>=(c[a+36>>2]|0)>>>0){a=f;g=0;f=e;c[f>>2]=a;i=b;return g|0}a=f+4|0;g=(d[f+2|0]|0)<<16|(d[g]|0)<<24|(d[f+1|0]|0)<<8|(d[f]|0);f=e;c[f>>2]=a;i=b;return g|0}function VK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;h=i;i=i+8|0;j=h;a[h]=0;c[d>>2]=0;k=c[b+20>>2]|0;e=b+8|0;g=c[e>>2]|0;do{if((k|0)==0){if(g>>>0>=(c[b+4>>2]|0)>>>0){h=7;break}d=a[(c[b>>2]|0)+g|0]|0;a[h]=d;h=6}else{if((pd[k&63](b,g,j,1)|0)!=1){h=7;break}d=a[h]|0;g=c[e>>2]|0;h=6}}while(0);if((h|0)==6){c[e>>2]=g+1;b=d;i=f;return b|0}else if((h|0)==7){c[d>>2]=85;b=0;i=f;return b|0}return 0}function WK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;j=i;i=i+8|0;c[b>>2]=0;g=a+8|0;h=c[g>>2]|0;do{if((h+1|0)>>>0<(c[a+4>>2]|0)>>>0){k=c[a+20>>2]|0;if((k|0)==0){j=(c[a>>2]|0)+h|0;if((j|0)==0){j=0}else{e=6}}else{if((pd[k&63](a,h,j,2)|0)!=2){break}h=c[g>>2]|0;e=6}if((e|0)==6){j=(d[j+1|0]|0)<<8&65535|(d[j]|0)}c[g>>2]=h+2;k=j;i=f;return k|0}}while(0);c[b>>2]=85;k=0;i=f;return k|0}function XK(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;k=i;i=i+8|0;c[e>>2]=0;h=b+8|0;j=c[h>>2]|0;do{if((j+2|0)>>>0<(c[b+4>>2]|0)>>>0){l=c[b+20>>2]|0;if((l|0)==0){k=(c[b>>2]|0)+j|0;if((k|0)==0){k=0}else{f=6}}else{if((pd[l&63](b,j,k,3)|0)!=3){break}j=c[h>>2]|0;f=6}if((f|0)==6){k=d[k+1|0]<<8|a[k]<<16|d[k+2|0]}c[h>>2]=j+3;l=k;i=g;return l|0}}while(0);c[e>>2]=85;l=0;i=g;return l|0}function YK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;j=i;i=i+8|0;c[b>>2]=0;g=a+8|0;h=c[g>>2]|0;do{if((h+3|0)>>>0<(c[a+4>>2]|0)>>>0){k=c[a+20>>2]|0;if((k|0)==0){j=(c[a>>2]|0)+h|0;if((j|0)==0){j=0}else{e=6}}else{if((pd[k&63](a,h,j,4)|0)!=4){break}h=c[g>>2]|0;e=6}if((e|0)==6){j=(d[j+2|0]|0)<<16|(d[j+3|0]|0)<<24|(d[j+1|0]|0)<<8|(d[j]|0)}c[g>>2]=h+4;k=j;i=f;return k|0}}while(0);c[b>>2]=85;k=0;i=f;return k|0}function ZK(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;if((g|0)==0|(f|0)==0){r=6;i=l;return r|0}k=f+32|0;j=f+36|0;n=0;a:while(1){q=c[k>>2]|0;b:while(1){p=a[g]|0;c:do{switch(p&255|0){case 9:case 8:{o=q+1|0;r=24;q=d[q]|0;m=18;break};case 18:case 19:{o=q+4|0;r=0;q=(d[q+2|0]|0)<<16|(d[q+3|0]|0)<<24|(d[q+1|0]|0)<<8|(d[q]|0);m=18;break};case 25:case 24:{r=d[g+1|0]|0;o=q+r|0;if(o>>>0>(c[j>>2]|0)>>>0){h=85;break a}if(p<<24>>24!=24){break c}$W(h+(e[g+2>>1]|0)|0,q|0,r|0)|0;break};case 22:case 23:{o=q+3|0;r=8;q=(d[q+1|0]|0)<<8|(d[q+2|0]|0)<<16|(d[q]|0);m=18;break};case 12:case 13:{o=q+2|0;r=16;q=((d[q]|0)<<8&65535|(d[q+1|0]|0))&65535;m=18;break};case 16:case 17:{o=q+4|0;r=0;q=(d[q+1|0]|0)<<16|(d[q]|0)<<24|(d[q+2|0]|0)<<8|(d[q+3|0]|0);m=18;break};case 14:case 15:{o=q+2|0;r=16;q=((d[q+1|0]|0)<<8&65535|(d[q]|0))&65535;m=18;break};case 20:case 21:{o=q+3|0;r=8;q=(d[q+1|0]|0)<<8|(d[q]|0)<<16|(d[q+2|0]|0);m=18;break};case 4:{break b};default:{m=17;break a}}}while(0);do{if((m|0)==18){m=0;if((p&1)!=0){q=q<>r}r=h+(e[g+2>>1]|0)|0;p=d[g+1|0]|0;if((p|0)==1){a[r]=q;break}else if((p|0)==2){b[r>>1]=q;break}else if((p|0)==4){c[r>>2]=q;break}else{c[r>>2]=q;break}}}while(0);g=g+4|0;q=o}o=MK(f,e[g+2>>1]|0)|0;if((o|0)!=0){h=o;break}g=g+4|0;n=1}if((m|0)==17){c[k>>2]=q;h=0}if(n<<24>>24==0){r=h;i=l;return r|0}if((c[f+20>>2]|0)!=0){n=c[f+28>>2]|0;m=c[f>>2]|0;if((m|0)!=0){hd[c[n+8>>2]&127](n,m)}c[f>>2]=0}c[k>>2]=0;c[j>>2]=0;r=h;i=l;return r|0}function _K(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a;a=c[d>>2]|0;d=c[d+4>>2]|0;if((a|0)==0){g=(d|0)>-1?d:0-d|0;i=b;return g|0}e=(a|0)>-1?a:0-a|0;if((d|0)==0){g=e;i=b;return g|0}e=((d|0)>-1?d:0-d|0)|e;f=(e|0)>65535;e=f?e>>16:e;f=f?16:0;if((e|0)>255){f=f|8;e=e>>8}if((e|0)>15){f=f+4|0;e=e>>4}if((e|0)>3){f=f+2|0;e=e>>2}f=((e|0)>1)+f|0;if((f|0)<28){g=27-f|0;d=d<>e;e=a>>e;a=27-f|0}if((e|0)<0){e=0-e|0;g=0-d|0}else{g=d}f=e<<1;if((g|0)<0){d=0;e=e-(g<<1)|0;f=g+f|0}else{d=0;e=(g<<1)+e|0;f=g-f|0}do{g=e>>d;if((f|0)<0){e=e-(f>>d)|0;f=f+g|0}else{e=(f>>d)+e|0;f=f-g|0}d=d+1|0;}while((d|0)<23);d=(e|0)>-1;e=d?e:0-e|0;f=e>>>16;e=e&65535;g=(e*17797|0)+(f*47593|0)|0;e=(e*47593|0)>>>16;h=g+e|0;f=(h>>>16)+(f*17797|0)|0;e=h>>>0<(g>>>0>=e>>>0?g:e)>>>0?f+65536|0:f;d=d?e:0-e|0;if((a|0)>0){h=d+(1<>a;i=b;return h|0}else{h=d<<0-a;i=b;return h|0}return 0} - - - -function wx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=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;e=i;l=i;i=i+8|0;m=l;k=i;i=i+8|0;n=i;i=i+8|0;p=i;i=i+8|0;o=i;i=i+8|0;w=o;u=i;i=i+16|0;v=u;j=i;i=i+528|0;t=i;i=i+24|0;c[u>>2]=13;q=v+8|0;c[q>>2]=0;c[q+4>>2]=0;f=j+528|0;g=j;do{c[g>>2]=13;J=g+8|0;c[J>>2]=0;c[J+4>>2]=0;g=g+16|0;}while((g|0)!=(f|0));g=b+32|0;f=b+40|0;h=c[f>>2]|0;if((h|0)==(c[b+44>>2]|0)){eu(b+36|0,g)}else{if((h|0)==0){h=0}else{c[h>>2]=c[g>>2];h=c[f>>2]|0}c[f>>2]=h+4}h=b+24|0;c[h>>2]=0;A=b+120|0;cG(c[A>>2]|0,v,0,0,0,0,0)|0;H=c[u>>2]|0;a:do{if((H|0)==12){Of(v)}else{C=b+18|0;y=b+13|0;x=b+14|0;B=b+8|0;D=b+124|0;E=b+128|0;z=c[r>>2]|0;F=0;G=0;b:while(1){a[C]=0;do{if((H|0)==10){if((a[y]&1)!=0){Qf(v,z);if((G|0)>0){H=0;do{Hb(32)|0;Qf(j+(H<<4)|0,z);H=H+1|0;}while((H|0)<(G|0))}Hb(10)|0;Fc(z|0)|0}dH(t);xx(b,v,j,G);do{if((a[x]&1)!=0){I=c[B>>2]|0;I=jd[c[(c[I>>2]|0)+372>>2]&511](I)|0;if((I|0)==0){break}H=FW(32)|0;J=c[u>>2]|0;if((J|0)!=10){s=19;break b}fe(H,c[q>>2]|0);J=oo(I,H)|0;if((J|0)==0){J=FW(32)|0;AG(J);lo(I,H,J)}BG(J,+eH(t))}}while(0);Of(v);if((G|0)>0){H=0;do{Of(j+(H<<4)|0);H=H+1|0;}while((H|0)<(G|0))}J=c[h>>2]|0;H=J+1|0;c[h>>2]=H;if((J|0)>19998){H=c[B>>2]|0;fd[c[(c[H>>2]|0)+68>>2]&511](H);c[h>>2]=0;H=0}if((a[C]&1)!=0){s=28;break b}G=c[D>>2]|0;if((G|0)==0){G=0;break}if((H-F|0)<=10){G=0;break}if(jd[G&511](c[E>>2]|0)|0){break b}F=c[h>>2]|0;G=0}else{if((G|0)<33){$W(j+(G<<4)|0,u|0,16)|0;G=G+1|0;break}H=c[A>>2]|0;do{if((H|0)==0){H=-1}else{H=c[H+4>>2]|0;if((c[H+16>>2]|0)!=8){H=-1;break}H=c[H+24>>2]|0;H=jd[c[(c[H>>2]|0)+48>>2]&511](H)|0}}while(0);Qe(H,159504,p);if((a[y]&1)!=0){Kb(159536,n|0)|0;Qf(v,z);Hb(10)|0;Fc(z|0)|0}Of(v)}}while(0);cG(c[A>>2]|0,v,0,0,0,0,0)|0;H=c[u>>2]|0;if((H|0)==12){s=43;break}}if((s|0)==19){c[o>>2]=J;c[w+4>>2]=10;Qe(0,162256,w);tc()}else if((s|0)==28){a[C]=0}else if((s|0)==43){Of(v);if((G|0)<=0){break}n=c[A>>2]|0;do{if((n|0)==0){n=-1}else{n=c[n+4>>2]|0;if((c[n+16>>2]|0)!=8){n=-1;break}n=c[n+24>>2]|0;n=jd[c[(c[n>>2]|0)+48>>2]&511](n)|0}}while(0);Qe(n,159560,k);if((a[b+13|0]&1)==0){k=0}else{c[l>>2]=G;Kb(159592,m|0)|0;l=c[r>>2]|0;k=0;do{Hb(32)|0;Qf(j+(k<<4)|0,l);k=k+1|0;}while((k|0)<(G|0));Hb(10)|0;Fc(c[r>>2]|0)|0;k=0}while(1){Of(j+(k<<4)|0);k=k+1|0;if((k|0)>=(G|0)){break a}}}Of(v)}}while(0);k=b+28|0;n=c[f>>2]|0;j=b+36|0;J=c[j>>2]|0;c:do{if((c[g>>2]|0)>(c[J+((n-J>>2)+ -1<<2)>>2]|0)){l=b+8|0;do{m=c[k>>2]|0;if((c[m+656>>2]|0)==0){break c}I=YB(m)|0;c[k>>2]=I;n=c[l>>2]|0;hd[c[(c[n>>2]|0)+84>>2]&127](n,I);I=(c[g>>2]|0)+ -1|0;c[g>>2]=I;n=c[f>>2]|0;J=c[j>>2]|0;}while((I|0)>(c[J+((n-J>>2)+ -1<<2)>>2]|0))}}while(0);c[f>>2]=n+ -4;if(!d){i=e;return}if((c[h>>2]|0)<=0){i=e;return}J=c[b+8>>2]|0;fd[c[(c[J>>2]|0)+68>>2]&511](J);i=e;return}function xx(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var 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;h=i;k=i;i=i+16|0;l=k;n=i;i=i+8|0;o=n;p=i;i=i+8|0;m=p;r=i;i=i+8|0;q=r;j=i;i=i+8|0;s=j;t=c[e>>2]|0;if((t|0)!=10){c[j>>2]=t;c[s+4>>2]=10;Qe(0,162256,s);tc()}j=c[e+8>>2]|0;s=-1;t=73;u=0;a:while(1){while(1){if((t-s|0)<=1){break a}e=(s+t|0)/2|0;u=Qc(148384+(e*148|0)|0,j|0)|0;if((u|0)<0){s=e}else{break}}s=(u|0)>0?s:e;t=e}do{if((u|0)==0){if((148384+(s*148|0)|0)==0){break}q=c[148388+(s*148|0)>>2]|0;do{if((q|0)>-1){if((q|0)<=(g|0)){if((q|0)>=(g|0)){m=g;break}m=q;f=f+(g-q<<4)|0;break}k=c[b+120>>2]|0;do{if((k|0)==0){k=-1}else{k=c[k+4>>2]|0;if((c[k+16>>2]|0)!=8){k=-1;break}k=c[k+24>>2]|0;k=jd[c[(c[k>>2]|0)+48>>2]&511](k)|0}}while(0);c[p>>2]=g;c[m+4>>2]=j;Qe(k,159632,m);a[b+18|0]=1;i=h;return}else{if((g|0)<=(0-q|0)){m=g;break}b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);c[n>>2]=g;c[o+4>>2]=j;Qe(b,159672,o);i=h;return}}while(0);b:do{if((m|0)>0){g=0;c:while(1){n=f+(g<<4)|0;switch(c[148392+(s*148|0)+(g<<2)>>2]|0){case 2:{if(((c[n>>2]|0)+ -1|0)>>>0>=2){break c}break};case 1:{if((c[n>>2]|0)!=1){break c}break};case 6:{u=c[n>>2]|0;if(!((u|0)==4|(u|0)==7)){break c}break};case 0:{if((c[n>>2]|0)!=0){break c}break};case 3:{if((c[n>>2]|0)!=3){break c}break};case 5:{if((c[n>>2]|0)!=6){break c}break};case 7:{u=c[n>>2]|0;if(!((u+ -1|0)>>>0<2|(u|0)==4)){break c}break};case 4:{if((c[n>>2]|0)!=4){break c}break};default:{break c}}g=g+1|0;if((g|0)>=(m|0)){break b}}b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);u=Pf(n)|0;c[k>>2]=g;c[l+4>>2]=j;c[l+8>>2]=u;Qe(b,159712,l);i=h;return}}while(0);u=148524+(s*148|0)|0;k=u;k=d[k]|d[k+1|0]<<8|d[k+2|0]<<16|d[k+3|0]<<24;u=u+4|0;u=d[u]|d[u+1|0]<<8|d[u+2|0]<<16|d[u+3|0]<<24;j=b+(u>>1)|0;if((u&1|0)!=0){k=c[(c[j>>2]|0)+k>>2]|0}Gd[k&255](j,f,m);i=h;return}}while(0);if((c[b+56>>2]|0)!=0){i=h;return}b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);c[r>>2]=j;Qe(b,159608,q);i=h;return}function yx(a){a=a|0;var b=0,d=0,e=0;b=i;e=c[a+8>>2]|0;d=a+28|0;hd[c[(c[e>>2]|0)+80>>2]&127](e,c[d>>2]|0);c[d>>2]=XB(c[d>>2]|0)|0;a=a+32|0;c[a>>2]=(c[a>>2]|0)+1;i=b;return}function zx(a,b,d,e,f,g,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var 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.0;l=i;t=i;i=i+8|0;r=t;x=i;i=i+8|0;A=i;i=i+8|0;B=A;C=i;i=i+8|0;D=i;i=i+8|0;G=i;i=i+8|0;F=G;z=i;i=i+48|0;o=z;n=i;i=i+32|0;s=i;i=i+16|0;m=s;w=i;i=i+16|0;q=w;c[s>>2]=13;u=m+8|0;c[u>>2]=0;c[u+4>>2]=0;c[w>>2]=13;v=q+8|0;c[v>>2]=0;c[v+4>>2]=0;p=a+112|0;if((c[p>>2]|0)>20){i=l;return}y=c[b>>2]|0;if((y|0)!=8){c[G>>2]=y;c[F+4>>2]=8;Qe(0,162256,F);tc()}y=c[b+8>>2]|0;y=jd[c[(c[y>>2]|0)+72>>2]&511](y)|0;Yu(y,160360,m,0)|0;F=c[s>>2]|0;if((F|0)==1){if((c[u>>2]|0)!=1){E=6}}else if((F|0)!=5){E=6}if((E|0)==6){E=c[a+120>>2]|0;do{if((E|0)==0){E=-1}else{E=c[E+4>>2]|0;if((c[E+16>>2]|0)!=8){E=-1;break}E=c[E+24>>2]|0;E=jd[c[(c[E>>2]|0)+48>>2]&511](E)|0}}while(0);Qe(E,160376,D)}Of(m);Yu(y,160400,m,0)|0;if((c[s>>2]|0)!=6){Of(m);d=c[a+120>>2]|0;do{if((d|0)==0){d=-1}else{d=c[d+4>>2]|0;if((c[d+16>>2]|0)!=8){d=-1;break}d=c[d+24>>2]|0;d=jd[c[(c[d>>2]|0)+48>>2]&511](d)|0}}while(0);Qe(d,160408,C);i=l;return}D=6;C=0;while(1){if((D|0)!=6){E=17;break}ut(c[u>>2]|0,C,q)|0;D=c[w>>2]|0;if((D+ -1|0)>>>0>=2){E=24;break}if((D|0)==1){H=+(c[v>>2]|0)}else{H=+h[v>>3]}h[n+(C<<3)>>3]=H;Of(q);C=C+1|0;if((C|0)>=4){E=28;break}D=c[s>>2]|0}if((E|0)==17){c[A>>2]=D;c[B+4>>2]=6;Qe(0,162256,B);tc()}else if((E|0)==24){Of(q);Of(m);d=c[a+120>>2]|0;do{if((d|0)==0){d=-1}else{d=c[d+4>>2]|0;if((c[d+16>>2]|0)!=8){d=-1;break}d=c[d+24>>2]|0;d=jd[c[(c[d>>2]|0)+48>>2]&511](d)|0}}while(0);Qe(d,160432,x);i=l;return}else if((E|0)==28){Of(m);Yu(y,160472,m,0)|0;a:do{if((c[s>>2]|0)==6){z=6;x=0;while(1){if((z|0)!=6){break}ut(c[u>>2]|0,x,q)|0;z=c[w>>2]|0;if((z+ -1|0)>>>0<2){if((z|0)==1){H=+(c[v>>2]|0)}else{H=+h[v>>3]}h[o+(x<<3)>>3]=H}else{h[o+(x<<3)>>3]=0.0}Of(q);x=x+1|0;if((x|0)>=6){break a}z=c[s>>2]|0}c[t>>2]=z;c[r+4>>2]=6;Qe(0,162256,r);tc()}else{h[z>>3]=1.0;bX(o+8|0,0,16)|0;h[o+24>>3]=1.0;bX(o+32|0,0,16)|0}}while(0);Of(m);Yu(y,160480,m,0)|0;if((c[s>>2]|0)==7){q=c[u>>2]|0}else{q=0}c[p>>2]=(c[p>>2]|0)+1;Ax(a,b,q,o,n,1,1,e,f,g,d,j,k);c[p>>2]=(c[p>>2]|0)+ -1;if((e|0)!=0){fd[c[(c[e>>2]|0)+4>>2]&511](e)}Of(m);i=l;return}}function Ax(b,d,e,f,g,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var 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.0,I=0.0,J=0,K=0,L=0;r=i;u=i;i=i+8|0;C=i;i=i+8|0;w=i;i=i+8|0;B=i;i=i+8|0;x=i;i=i+48|0;D=x;A=FW(120)|0;s=b+20|0;mx(A,c[b>>2]|0,e,c[s>>2]|0);c[s>>2]=A;e=b+8|0;A=c[e>>2]|0;t=b+28|0;hd[c[(c[A>>2]|0)+80>>2]&127](A,c[t>>2]|0);A=XB(c[t>>2]|0)|0;c[t>>2]=A;y=b+32|0;c[y>>2]=(c[y>>2]|0)+1;SB(A);A=b+120|0;z=c[A>>2]|0;K=f+8|0;J=f+16|0;G=f+24|0;E=f+32|0;F=f+40|0;JB(c[t>>2]|0,+h[f>>3],+h[K>>3],+h[J>>3],+h[G>>3],+h[E>>3],+h[F>>3]);L=c[e>>2]|0;Ed[c[(c[L>>2]|0)+92>>2]&3](L,c[t>>2]|0,+h[f>>3],+h[K>>3],+h[J>>3],+h[G>>3],+h[E>>3],+h[F>>3]);f=c[t>>2]|0;H=+h[g>>3];F=g+8|0;I=+h[F>>3];E=c[f+588>>2]|0;h[f+592>>3]=H;h[f+600>>3]=I;uB(E,H,I);E=c[t>>2]|0;f=g+16|0;I=+h[f>>3];H=+h[F>>3];F=c[E+588>>2]|0;h[E+592>>3]=I;h[E+600>>3]=H;vB(F,I,H);F=c[t>>2]|0;H=+h[f>>3];f=g+24|0;I=+h[f>>3];E=c[F+588>>2]|0;h[F+592>>3]=H;h[F+600>>3]=I;vB(E,H,I);E=c[t>>2]|0;I=+h[g>>3];H=+h[f>>3];f=c[E+588>>2]|0;h[E+592>>3]=I;h[E+600>>3]=H;vB(f,I,H);f=c[t>>2]|0;E=f+588|0;xB(c[E>>2]|0);E=c[E>>2]|0;F=E+28|0;E=E+24|0;G=c[(c[E>>2]|0)+((c[F>>2]|0)+ -1<<2)>>2]|0;h[f+592>>3]=+h[(c[G>>2]|0)+((c[G+12>>2]|0)+ -1<<3)>>3];F=c[(c[E>>2]|0)+((c[F>>2]|0)+ -1<<2)>>2]|0;h[f+600>>3]=+h[(c[F+4>>2]|0)+((c[F+12>>2]|0)+ -1<<3)>>3];TB(c[t>>2]|0);f=c[e>>2]|0;hd[c[(c[f>>2]|0)+256>>2]&127](f,c[t>>2]|0);SB(c[t>>2]|0);f=k|j;if(f){F=c[t>>2]|0;E=F+388|0;if((c[E>>2]|0)==0){E=F}else{c[E>>2]=0;E=c[e>>2]|0;hd[c[(c[E>>2]|0)+148>>2]&127](E,c[t>>2]|0);E=c[t>>2]|0}F=E+392|0;if(+h[F>>3]!=1.0){h[F>>3]=1.0;E=c[e>>2]|0;hd[c[(c[E>>2]|0)+152>>2]&127](E,c[t>>2]|0);E=c[t>>2]|0}F=E+400|0;if(+h[F>>3]!=1.0){h[F>>3]=1.0;E=c[e>>2]|0;hd[c[(c[E>>2]|0)+156>>2]&127](E,c[t>>2]|0);E=c[t>>2]|0}L=c[e>>2]|0;hd[c[(c[L>>2]|0)+396>>2]&127](L,E);L=c[e>>2]|0;yd[c[(c[L>>2]|0)+380>>2]&1](L,c[t>>2]|0,g,l,m,n,k)}l=b+64|0;h[x>>3]=+h[l>>3];m=c[t>>2]|0;h[l>>3]=+h[m+16>>3];L=b+72|0;h[D+8>>3]=+h[L>>3];h[L>>3]=+h[m+24>>3];L=b+80|0;h[D+16>>3]=+h[L>>3];h[L>>3]=+h[m+32>>3];L=b+88|0;h[D+24>>3]=+h[L>>3];h[L>>3]=+h[m+40>>3];L=b+96|0;h[D+32>>3]=+h[L>>3];h[L>>3]=+h[m+48>>3];L=b+104|0;h[D+40>>3]=+h[L>>3];h[L>>3]=+h[m+56>>3];vx(b,d,0);D=c[t>>2]|0;do{if((m|0)!=(D|0)){while(1){D=c[D+656>>2]|0;if((D|0)==(m|0)){break}if((D|0)==0){v=19;break}else{}}if((v|0)==19){Qe(-1,161872,C);break}Qe(-1,161816,B);d=c[t>>2]|0;if((m|0)==(d|0)){break}C=b+40|0;B=b+36|0;D=b+18|0;do{L=c[B>>2]|0;do{if((c[y>>2]|0)>(c[L+(((c[C>>2]|0)-L>>2)+ -1<<2)>>2]|0)){if((c[d+656>>2]|0)==0){v=16;break}L=YB(d)|0;c[t>>2]=L;K=c[e>>2]|0;hd[c[(c[K>>2]|0)+84>>2]&127](K,L);c[y>>2]=(c[y>>2]|0)+ -1}else{v=16}}while(0);if((v|0)==16){v=0;Qe(-1,162208,w);a[D]=1}d=c[t>>2]|0;}while((m|0)!=(d|0))}}while(0);if(f){L=c[e>>2]|0;hd[c[(c[L>>2]|0)+384>>2]&127](L,c[t>>2]|0)}$W(l|0,x|0,48)|0;c[A>>2]=z;L=c[b+36>>2]|0;do{if((c[y>>2]|0)>(c[L+(((c[b+40>>2]|0)-L>>2)+ -1<<2)>>2]|0)){w=c[t>>2]|0;if((c[w+656>>2]|0)==0){v=24;break}L=YB(w)|0;c[t>>2]=L;K=c[e>>2]|0;hd[c[(c[K>>2]|0)+84>>2]&127](K,L);c[y>>2]=(c[y>>2]|0)+ -1}else{v=24}}while(0);if((v|0)==24){Qe(-1,162208,u);a[b+18|0]=1}b=c[s>>2]|0;u=c[b+112>>2]|0;if((b|0)!=0){nx(b);HW(b)}c[s>>2]=u;if(k){L=c[e>>2]|0;ud[c[(c[L>>2]|0)+392>>2]&7](L,c[t>>2]|0,g,o,p,q);i=r;return}if(!j){i=r;return}L=c[e>>2]|0;Gd[c[(c[L>>2]|0)+388>>2]&255](L,c[t>>2]|0,g);i=r;return}function Bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=i;d=i;i=i+8|0;e=d;j=c[a+8>>2]|0;if(!(jd[c[(c[j>>2]|0)+36>>2]&511](j)|0)){i=f;return}j=c[(c[a+28>>2]|0)+380>>2]|0;if((j|0)==0){i=f;return}h=j+4|0;g=c[h>>2]|0;if((g|0)==1){Dx(a,j,0,b);i=f;return}else if((g|0)==2){Ex(a,j,0,b);i=f;return}else{j=c[a+120>>2]|0;do{if((j|0)==0){h=-1}else{j=c[j+4>>2]|0;if((c[j+16>>2]|0)!=8){h=-1;break}b=c[j+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0;g=c[h>>2]|0;h=b}}while(0);c[d>>2]=g;Qe(h,160904,e);i=f;return}}function Cx(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=i;b=i;i=i+8|0;d=b;h=c[a+8>>2]|0;if(!(jd[c[(c[h>>2]|0)+36>>2]&511](h)|0)){i=e;return}h=c[(c[a+28>>2]|0)+384>>2]|0;if((h|0)==0){i=e;return}g=h+4|0;f=c[g>>2]|0;if((f|0)==2){Ex(a,h,1,0);i=e;return}else if((f|0)==1){Dx(a,h,1,0);i=e;return}else{a=c[a+120>>2]|0;do{if((a|0)==0){g=-1}else{a=c[a+4>>2]|0;if((c[a+16>>2]|0)!=8){g=-1;break}h=c[a+24>>2]|0;h=jd[c[(c[h>>2]|0)+48>>2]&511](h)|0;f=c[g>>2]|0;g=h}}while(0);c[b>>2]=f;Qe(g,160944,d);i=e;return}}function Dx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0,Q=0,T=0,U=0,V=0.0;j=i;g=i;i=i+8|0;Q=i;i=i+128|0;P=Q;z=i;i=i+48|0;m=z;y=i;i=i+48|0;l=y;k=b+28|0;o=c[k>>2]|0;T=c[(e?o+120|0:o+116|0)>>2]|0;C=+h[o+16>>3];G=+h[o+40>>3];F=+h[o+24>>3];V=+h[o+32>>3];I=1.0/(C*G-F*V);H=G*I;K=-0.0-F*I;s=-0.0-V*I;p=C*I;D=+h[o+56>>3];E=+h[o+48>>3];v=+h[d+80>>3];t=+h[b+64>>3];L=+h[d+88>>3];M=+h[b+80>>3];N=v*t+L*M;h[y>>3]=N;r=+h[b+72>>3];A=+h[b+88>>3];L=v*r+L*A;h[l+8>>3]=L;v=+h[d+96>>3];B=+h[d+104>>3];J=v*t+B*M;h[l+16>>3]=J;B=v*r+B*A;h[l+24>>3]=B;v=+h[d+112>>3];n=+h[d+120>>3];M=+h[b+96>>3]+(v*t+n*M);q=l+32|0;h[q>>3]=M;A=+h[b+104>>3]+(v*r+n*A);o=l+40|0;h[o>>3]=A;n=H*N+L*s;h[z>>3]=n;r=N*K+p*L;h[m+8>>3]=r;v=H*J+B*s;h[m+16>>3]=v;t=J*K+p*B;h[m+24>>3]=t;s=I*(V*D-G*E)+(H*M+A*s);h[m+32>>3]=s;p=I*(F*E-C*D)+(M*K+p*A);h[m+40>>3]=p;K=1.0/(N*B-L*J);D=B*K;C=-0.0-L*K;E=-0.0-J*K;F=N*K;B=K*(J*A-B*M);A=K*(L*M-N*A);w=c[(c[k>>2]|0)+588>>2]|0;m=FW(40)|0;tB(m,(a[w]&1)!=0,+h[w+8>>3],+h[w+16>>3],c[w+24>>2]|0,c[w+28>>2]|0,c[w+32>>2]|0);w=b+8|0;U=c[w>>2]|0;hd[c[(c[U>>2]|0)+80>>2]&127](U,c[k>>2]|0);U=XB(c[k>>2]|0)|0;c[k>>2]=U;u=b+32|0;c[u>>2]=(c[u>>2]|0)+1;x=d+8|0;do{if((c[x>>2]|0)==2){T=c[T+4>>2]|0;if((T|0)==0){O=6;break}LB(U,jd[c[(c[T>>2]|0)+8>>2]&511](T)|0);P=c[w>>2]|0;hd[c[(c[P>>2]|0)+132>>2]&127](P,c[k>>2]|0);P=c[k>>2]|0;MB(P,jd[c[(c[T>>2]|0)+8>>2]&511](T)|0);P=c[w>>2]|0;hd[c[(c[P>>2]|0)+136>>2]&127](P,c[k>>2]|0);P=c[k>>2]|0;if(e){$W(P+124|0,P+252|0,128)|0;break}else{$W(P+252|0,P+124|0,128)|0;break}}else{O=6}}while(0);if((O|0)==6){T=FW(4)|0;Ty(T);LB(c[k>>2]|0,T);hd[c[(c[T>>2]|0)+48>>2]&127](T,P);$W((c[k>>2]|0)+124|0,Q|0,128)|0;T=c[w>>2]|0;hd[c[(c[T>>2]|0)+132>>2]&127](T,c[k>>2]|0);T=c[k>>2]|0;U=FW(4)|0;Ty(U);MB(T,U);$W((c[k>>2]|0)+252|0,Q|0,128)|0;U=c[w>>2]|0;hd[c[(c[U>>2]|0)+136>>2]&127](U,c[k>>2]|0)}NB(c[k>>2]|0,0);U=c[w>>2]|0;hd[c[(c[U>>2]|0)+140>>2]&127](U,c[k>>2]|0);OB(c[k>>2]|0,0);U=c[w>>2]|0;hd[c[(c[U>>2]|0)+144>>2]&127](U,c[k>>2]|0);do{if(e){UB(c[k>>2]|0);U=c[w>>2]|0;hd[c[(c[U>>2]|0)+264>>2]&127](U,c[k>>2]|0)}else{if((a[b+15|0]&1)!=0){break}if((a[b+17|0]&1)!=0){break}TB(c[k>>2]|0);e=c[w>>2]|0;O=c[e>>2]|0;if(f){hd[c[O+260>>2]&127](e,c[k>>2]|0);break}else{hd[c[O+256>>2]&127](e,c[k>>2]|0);break}}}while(0);SB(c[k>>2]|0);h[(c[k>>2]|0)+432>>3]=0.0;U=c[w>>2]|0;hd[c[(c[U>>2]|0)+116>>2]&127](U,c[k>>2]|0);U=c[k>>2]|0;H=+h[U+624>>3];L=+h[U+632>>3];G=+h[U+640>>3];J=+h[U+648>>3];a:do{if(!(H>G|L>J)){M=D*H;I=L*E;K=B+(M+I);V=H*C;H=F*L;N=A+(V+H);E=J*E;M=B+(M+E);F=F*J;L=A+(V+F);do{if(M>3]));A=+S(+(+h[d+56>>3]));f=d+16|0;N=+ca(+((M- +h[d+32>>3])/B));Q=~~+R(+((J- +h[f>>3])/B));V=+ca(+((L- +h[d+40>>3])/A));e=~~+R(+((K- +h[d+24>>3])/A));$W(y|0,z|0,32)|0;O=~~N;z=Q+1|0;Q=~~V;y=e+1|0;e=c[b+116>>2]|0;b:do{if((e|0)!=0){if((a[e]&1)!=0){break a}while(1){e=c[e+4>>2]|0;if((e|0)==0){break b}if((a[e]&1)!=0){break a}}}}while(0);h[q>>3]=s;h[o>>3]=p;U=c[w>>2]|0;if(jd[c[(c[U>>2]|0)+16>>2]&511](U)|0){e=c[w>>2]|0;if((c[d+64>>2]|0)==7){P=c[d+72>>2]|0}else{P=0}if(!((Q|0)<(y|0)&((nd[c[(c[e>>2]|0)+224>>2]&1](e,c[k>>2]|0,d+128|0,c[x>>2]|0,P,l,f,O,Q,z,y,B,A)|0)^1))){break}}else{if((Q|0)>=(y|0)){break}}P=(O|0)<(z|0);x=d+128|0;e=d+64|0;d=d+72|0;do{if(P){D=A*+(Q|0);C=D*v;D=D*t;T=O;do{V=B*+(T|0);h[q>>3]=s+(V*n+C);h[o>>3]=p+(V*r+D);if((c[e>>2]|0)==7){U=c[d>>2]|0}else{U=0}Ax(b,x,U,l,f,0,0,0,0,0,0,0,0);T=T+1|0;}while((T|0)<(z|0))}Q=Q+1|0;}while((Q|0)<(y|0))}}while(0);U=c[b+36>>2]|0;do{if((c[u>>2]|0)>(c[U+(((c[b+40>>2]|0)-U>>2)+ -1<<2)>>2]|0)){l=c[k>>2]|0;if((c[l+656>>2]|0)==0){break}U=YB(l)|0;c[k>>2]=U;T=c[w>>2]|0;hd[c[(c[T>>2]|0)+84>>2]&127](T,U);c[u>>2]=(c[u>>2]|0)+ -1;U=k;U=c[U>>2]|0;GB(U,m);i=j;return}}while(0);Qe(-1,162208,g);a[b+18|0]=1;U=k;U=c[U>>2]|0;GB(U,m);i=j;return}function Ex(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0;n=i;l=i;i=i+8|0;o=c[d+8>>2]|0;k=b+28|0;j=c[(c[k>>2]|0)+588>>2]|0;m=FW(40)|0;tB(m,(a[j]&1)!=0,+h[j+8>>3],+h[j+16>>3],c[j+24>>2]|0,c[j+28>>2]|0,c[j+32>>2]|0);j=b+8|0;p=c[j>>2]|0;hd[c[(c[p>>2]|0)+80>>2]&127](p,c[k>>2]|0);p=XB(c[k>>2]|0)|0;c[k>>2]=p;g=b+32|0;c[g>>2]=(c[g>>2]|0)+1;if((a[o+176|0]&1)!=0){u=+h[o+144>>3];w=+h[o+152>>3];v=+h[o+160>>3];s=+h[o+168>>3];q=c[p+588>>2]|0;h[p+592>>3]=u;h[p+600>>3]=w;uB(q,u,w);q=c[k>>2]|0;t=c[q+588>>2]|0;h[q+592>>3]=v;h[q+600>>3]=w;vB(t,v,w);t=c[k>>2]|0;q=c[t+588>>2]|0;h[t+592>>3]=v;h[t+600>>3]=s;vB(q,v,s);q=c[k>>2]|0;t=c[q+588>>2]|0;h[q+592>>3]=u;h[q+600>>3]=s;vB(t,u,s);t=c[k>>2]|0;q=t+588|0;xB(c[q>>2]|0);q=c[q>>2]|0;r=q+28|0;q=q+24|0;p=c[(c[q>>2]|0)+((c[r>>2]|0)+ -1<<2)>>2]|0;h[t+592>>3]=+h[(c[p>>2]|0)+((c[p+12>>2]|0)+ -1<<3)>>3];r=c[(c[q>>2]|0)+((c[r>>2]|0)+ -1<<2)>>2]|0;h[t+600>>3]=+h[(c[r+4>>2]|0)+((c[r+12>>2]|0)+ -1<<3)>>3];TB(c[k>>2]|0);do{if((a[b+15|0]&1)==0){if((a[b+17|0]&1)!=0){break}t=c[j>>2]|0;hd[c[(c[t>>2]|0)+256>>2]&127](t,c[k>>2]|0)}}while(0);r=c[k>>2]|0;t=FW(40)|0;tB(t,(a[m]&1)!=0,+h[m+8>>3],+h[m+16>>3],c[m+24>>2]|0,c[m+28>>2]|0,c[m+32>>2]|0);GB(r,t)}do{if(e){UB(c[k>>2]|0);t=c[j>>2]|0;hd[c[(c[t>>2]|0)+264>>2]&127](t,c[k>>2]|0)}else{if((a[b+15|0]&1)!=0){break}if((a[b+17|0]&1)!=0){break}TB(c[k>>2]|0);p=c[j>>2]|0;e=c[p>>2]|0;if(f){hd[c[e+260>>2]&127](p,c[k>>2]|0);break}else{hd[c[e+256>>2]&127](p,c[k>>2]|0);break}}}while(0);r=c[k>>2]|0;p=o+8|0;t=c[p>>2]|0;LB(r,jd[c[(c[t>>2]|0)+8>>2]&511](t)|0);t=c[j>>2]|0;hd[c[(c[t>>2]|0)+132>>2]&127](t,c[k>>2]|0);a:do{if((a[o+140|0]&1)!=0){$W((c[k>>2]|0)+124|0,o+12|0,128)|0;f=c[j>>2]|0;hd[c[(c[f>>2]|0)+140>>2]&127](f,c[k>>2]|0);f=c[b+116>>2]|0;b:do{if((f|0)!=0){if((a[f]&1)!=0){break a}while(1){f=c[f+4>>2]|0;if((f|0)==0){break b}if((a[f]&1)!=0){break a}}}}while(0);t=c[j>>2]|0;hd[c[(c[t>>2]|0)+216>>2]&127](t,c[k>>2]|0)}}while(0);SB(c[k>>2]|0);t=c[k>>2]|0;D=+h[t+16>>3];I=+h[t+40>>3];F=+h[t+24>>3];J=+h[t+32>>3];G=1.0/(D*I-F*J);H=I*G;A=-0.0-F*G;v=-0.0-J*G;z=D*G;C=+h[t+56>>3];E=+h[t+48>>3];L=+h[d+16>>3];N=+h[b+64>>3];x=+h[d+24>>3];B=+h[b+80>>3];s=L*N+x*B;M=+h[b+72>>3];y=+h[b+88>>3];x=L*M+x*y;L=+h[d+32>>3];u=+h[d+40>>3];K=N*L+B*u;u=M*L+y*u;L=+h[d+48>>3];w=+h[d+56>>3];B=+h[b+96>>3]+(N*L+B*w);w=M*L+y*w+ +h[b+104>>3];y=H*s+x*v;x=s*A+z*x;s=H*K+u*v;u=K*A+z*u;v=G*(J*C-I*E)+(H*B+w*v);w=G*(F*E-D*C)+(B*A+z*w);JB(t,y,x,s,u,v,w);d=c[j>>2]|0;Ed[c[(c[d>>2]|0)+92>>2]&3](d,c[k>>2]|0,y,x,s,u,v,w);d=c[j>>2]|0;d=jd[c[(c[d>>2]|0)+404>>2]&511](d)|0;if(d){t=c[j>>2]|0;hd[c[(c[t>>2]|0)+408>>2]&127](t,0)}c:do{switch(c[o+4>>2]|0){case 3:{Hx(b,o);break};case 5:case 4:{Ix(b,o);break};case 1:{Fx(b,o);break};case 2:{Gx(b,o);break};case 7:case 6:{f=o+184|0;e=c[f>>2]|0;do{if((e|0)>128){e=3}else{if((e|0)>64){e=2;break}e=(e|0)>16|0}}while(0);r=c[p>>2]|0;r=jd[c[(c[r>>2]|0)+44>>2]&511](r)|0;q=o+316|0;t=(c[q>>2]|0)>0;if(t){p=c[o+188>>2]|0;s=(+h[p+24>>3]- +h[p+16>>3])*.005}else{s=768.0}if((c[f>>2]|0)<=0){break c}p=o+180|0;Nx(b,c[p>>2]|0,r,t?1:r,s,e,o);if((c[f>>2]|0)>1){t=1}else{break c}do{Nx(b,(c[p>>2]|0)+(t*1280|0)|0,r,(c[q>>2]|0)>0?1:r,s,e,o);t=t+1|0;}while((t|0)<(c[f>>2]|0));break};default:{}}}while(0);if(d){t=c[j>>2]|0;hd[c[(c[t>>2]|0)+408>>2]&127](t,1)}t=c[b+36>>2]|0;do{if((c[g>>2]|0)>(c[t+(((c[b+40>>2]|0)-t>>2)+ -1<<2)>>2]|0)){o=c[k>>2]|0;if((c[o+656>>2]|0)==0){break}t=YB(o)|0;c[k>>2]=t;r=c[j>>2]|0;hd[c[(c[r>>2]|0)+84>>2]&127](r,t);c[g>>2]=(c[g>>2]|0)+ -1;t=k;t=c[t>>2]|0;GB(t,m);i=n;return}}while(0);Qe(-1,162208,l);a[b+18|0]=1;t=k;t=c[t>>2]|0;GB(t,m);i=n;return}function Fx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0.0,k=0.0,l=0.0,m=0.0;e=i;d=i;i=i+512|0;f=a+8|0;g=c[f>>2]|0;do{if(Bd[c[(c[g>>2]|0)+20>>2]&255](g,c[b+4>>2]|0)|0){g=c[f>>2]|0;if(!(sd[c[(c[g>>2]|0)+228>>2]&127](g,c[a+28>>2]|0,b)|0)){break}i=e;return}}while(0);m=+h[b+184>>3];l=+h[b+192>>3];k=+h[b+200>>3];j=+h[b+208>>3];RA(b,m,l,d);RA(b,m,j,d+128|0);RA(b,k,l,d+256|0);RA(b,k,j,d+384|0);Jx(a,b,m,l,k,j,d,0);i=e;return}function Gx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0.0,C=0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0,O=0,P=0,Q=0.0,R=0,T=0.0,U=0.0,V=0,W=0.0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0.0,ba=0,ca=0.0,da=0.0,ea=0.0,fa=0,ga=0.0,ha=0.0,ia=0,ja=0,ka=0.0;f=i;y=i;i=i+8|0;n=i;i=i+8|0;A=i;i=i+8|0;m=i;i=i+8|0;G=i;i=i+32|0;I=G;l=i;i=i+32|0;k=l;H=i;i=i+2056|0;q=H;J=i;i=i+1032|0;w=J;u=i;i=i+128|0;j=u;z=i;i=i+128|0;v=z;e=b+28|0;HB(c[e>>2]|0,y,n,A,m);r=+h[d+184>>3];s=+h[d+192>>3];B=+h[d+200>>3]-r;x=+h[d+208>>3]-s;p=+S(+B)<.01;o=+S(+x)<.01;t=p&o;do{if(t){L=0.0;E=0.0}else{da=1.0/(B*B+x*x);ga=B*(+h[y>>3]-r);ha=x*(+h[n>>3]-s);E=da*(ga+ha);h[G>>3]=E;D=x*(+h[m>>3]-s);ga=da*(ga+D);N=I+8|0;h[N>>3]=ga;ea=B*(+h[A>>3]-r);ha=da*(ea+ha);K=I+16|0;h[K>>3]=ha;D=da*(ea+D);C=I+24|0;h[C>>3]=D;O=ga>3]?2:O;ja=I+((D<+h[I+(O<<3)>>3]?3:O)<<3)|0;h[G>>3]=+h[ja>>3];h[ja>>3]=E;D=+h[N>>3];O=+h[K>>3]>3]<+h[I+(O<<3)>>3]?3:O)<<3)|0;h[N>>3]=+h[ja>>3];h[ja>>3]=D;D=+h[K>>3];ja=I+((+h[C>>3]>3]=+h[ja>>3];h[ja>>3]=D;E=+h[G>>3];L=+h[C>>3];if(E<0.0){E=(a[d+364|0]&1)!=0?E:0.0}if(L<=1.0){break}L=(a[d+365|0]&1)!=0?L:1.0}}while(0);C=b+8|0;ja=c[C>>2]|0;do{if(Bd[c[(c[ja>>2]|0)+20>>2]&255](ja,c[d+4>>2]|0)|0){ja=c[C>>2]|0;if(!(gd[c[(c[ja>>2]|0)+232>>2]&3](ja,c[e>>2]|0,d,E,L)|0)){break}i=f;return}}while(0);F=+h[d+216>>3];D=+h[d+224>>3];G=c[d+8>>2]|0;G=jd[c[(c[G>>2]|0)+44>>2]&511](G)|0;h[H>>3]=E;c[J>>2]=128;h[q+1024>>3]=(L+E)*.5;c[w+512>>2]=256;h[q+2048>>3]=L;do{if(E<0.0){M=F}else{if(E>1.0){M=D;break}M=F+E*(D-F)}}while(0);WA(d,M,j);ja=c[C>>2]|0;if(jd[c[(c[ja>>2]|0)+24>>2]&511](ja)|0){$W((c[e>>2]|0)+124|0,u|0,128)|0;ja=c[C>>2]|0;Id[c[(c[ja>>2]|0)+172>>2]&3](ja,c[e>>2]|0,0.0)}W=r+B*E;X=s+x*E;do{if(t){aa=0.0;U=0.0}else{if(p){M=-0.0-x;U=(+h[y>>3]-W)/M;M=(+h[A>>3]-W)/M;if(U<=M){aa=M;break}aa=U;U=M;break}U=(+h[n>>3]-X)/B;if(!o){h[l>>3]=U;ga=(+h[m>>3]-X)/B;H=k+8|0;h[H>>3]=ga;M=-0.0-x;ha=(+h[y>>3]-W)/M;J=k+16|0;h[J>>3]=ha;M=(+h[A>>3]-W)/M;K=k+24|0;h[K>>3]=M;N=ga>3]?2:N;ja=k+((M<+h[k+(N<<3)>>3]?3:N)<<3)|0;h[l>>3]=+h[ja>>3];h[ja>>3]=U;M=+h[H>>3];N=+h[J>>3]>3]<+h[k+(N<<3)>>3]?3:N)<<3)|0;h[H>>3]=+h[ja>>3];h[ja>>3]=M;M=+h[J>>3];ja=k+((+h[K>>3]>3]=+h[ja>>3];h[ja>>3]=M;aa=+h[J>>3];U=+h[H>>3];break}M=(+h[m>>3]-X)/B;if(U<=M){aa=M;break}aa=U;U=M}}while(0);if(t){H=I+16|0;J=I+8|0;Y=1;Z=1}else{Y=I+8|0;Z=I+16|0;H=Z;J=Y;Y=+h[Y>>3]>3]>L}I=c[C>>2]|0;I=sd[c[(c[I>>2]|0)+236>>2]&127](I,c[e>>2]|0,d)|0;K=(G|0)>0;L=L-E;N=b+116|0;Q=-0.0-x;O=k+8|0;b=k+16|0;P=k+24|0;R=(G|0)==0;M=D-F;_=0;T=W-x*U;U=X+B*U;W=W-x*aa;X=X+B*aa;while(1){V=w+(_<<2)|0;fa=c[V>>2]|0;$=_+1|0;a:do{if((fa|0)>($|0)){ba=q+(_<<3)|0;aa=+h[q+(fa<<3)>>3];b:while(1){do{if(aa<0.0){ca=F}else{if(aa>1.0){ca=D;break}ca=F+M*aa}}while(0);WA(d,ca,v);if(R){break}else{ia=0}while(1){ja=(c[v+(ia<<2)>>2]|0)-(c[j+(ia<<2)>>2]|0)|0;ia=ia+1|0;if((((ja|0)>-1?ja:0-ja|0)|0)>256){break}if(ia>>>0>=G>>>0){break b}}ia=(fa+_|0)/2|0;aa=(+h[ba>>3]+aa)*.5;h[q+(ia<<3)>>3]=aa;c[V>>2]=ia;c[w+(ia<<2)>>2]=fa;if((ia|0)>($|0)){fa=ia}else{fa=ia;break a}}do{if(Y){Y=1}else{ca=+h[J>>3];if(!(+h[ba>>3]ca)){Y=0;break}Y=~~((ca-E)*256.0/L);Y=(Y|0)>(_|0)?Y:$;if((Y|0)<(fa|0)){c[V>>2]=Y;c[w+(Y<<2)>>2]=fa;fa=Y}h[q+(fa<<3)>>3]=ca;aa=ca;Y=1}}while(0);if(Z){Z=1;break}ca=+h[H>>3];if(!(+h[ba>>3]ca)){Z=0;break}Z=~~((ca-E)*256.0/L);Z=(Z|0)>(_|0)?Z:$;if((Z|0)<(fa|0)){c[V>>2]=Z;c[w+(Z<<2)>>2]=fa;fa=Z}h[q+(fa<<3)>>3]=ca;Z=1}}while(0);if(K){_=0;do{ja=j+(_<<2)|0;c[ja>>2]=((c[v+(_<<2)>>2]|0)+(c[ja>>2]|0)|0)/2|0;_=_+1|0;}while((_|0)<(G|0))}aa=+h[q+(fa<<3)>>3];da=r+B*aa;ca=s+x*aa;do{if(t){ha=0.0;ga=0.0}else{if(p){ga=(+h[y>>3]-da)/Q;ea=(+h[A>>3]-da)/Q;if(ga<=ea){ha=ea;break}ha=ga;ga=ea;break}ea=(+h[n>>3]-ca)/B;if(!o){h[l>>3]=ea;ka=(+h[m>>3]-ca)/B;h[O>>3]=ka;ha=(+h[y>>3]-da)/Q;h[b>>3]=ha;ga=(+h[A>>3]-da)/Q;h[P>>3]=ga;_=ka>3]?2:_;ja=k+((ga<+h[k+(_<<3)>>3]?3:_)<<3)|0;h[l>>3]=+h[ja>>3];h[ja>>3]=ea;ea=+h[O>>3];_=+h[b>>3]>3]<+h[k+(_<<3)>>3]?3:_)<<3)|0;h[O>>3]=+h[ja>>3];h[ja>>3]=ea;ea=+h[b>>3];ja=k+((+h[P>>3]>3]=+h[ja>>3];h[ja>>3]=ea;ha=+h[b>>3];ga=+h[O>>3];break}ga=(+h[m>>3]-ca)/B;if(ea<=ga){ha=ga;ga=ea;break}ha=ea}}while(0);ea=da-x*ga;ga=ca+B*ga;da=da-x*ha;ca=ca+B*ha;$W((c[e>>2]|0)+124|0,u|0,128)|0;ja=c[C>>2]|0;ja=jd[c[(c[ja>>2]|0)+24>>2]&511](ja)|0;_=c[C>>2]|0;if(ja){Id[c[(c[_>>2]|0)+172>>2]&3](_,c[e>>2]|0,(aa-E)/L)}else{hd[c[(c[_>>2]|0)+140>>2]&127](_,c[e>>2]|0)}if(!I){ja=c[e>>2]|0;fa=c[ja+588>>2]|0;h[ja+592>>3]=T;h[ja+600>>3]=U;uB(fa,T,U);fa=c[e>>2]|0;ja=c[fa+588>>2]|0;h[fa+592>>3]=W;h[fa+600>>3]=X;vB(ja,W,X);ja=c[e>>2]|0;fa=c[ja+588>>2]|0;h[ja+592>>3]=da;h[ja+600>>3]=ca;vB(fa,da,ca);fa=c[e>>2]|0;ja=c[fa+588>>2]|0;h[fa+592>>3]=ea;h[fa+600>>3]=ga;vB(ja,ea,ga);ja=c[e>>2]|0;fa=ja+588|0;xB(c[fa>>2]|0);fa=c[fa>>2]|0;ia=fa+28|0;fa=fa+24|0;ba=c[(c[fa>>2]|0)+((c[ia>>2]|0)+ -1<<2)>>2]|0;h[ja+592>>3]=+h[(c[ba>>2]|0)+((c[ba+12>>2]|0)+ -1<<3)>>3];ia=c[(c[fa>>2]|0)+((c[ia>>2]|0)+ -1<<2)>>2]|0;h[ja+600>>3]=+h[(c[ia+4>>2]|0)+((c[ia+12>>2]|0)+ -1<<3)>>3]}ja=c[C>>2]|0;if(!(jd[c[(c[ja>>2]|0)+24>>2]&511](ja)|0)){_=c[N>>2]|0;c:do{if((_|0)==0){g=64}else{if((a[_]&1)!=0){break}do{_=c[_+4>>2]|0;if((_|0)==0){g=64;break c}}while((a[_]&1)==0)}}while(0);if((g|0)==64){g=0;ja=c[C>>2]|0;hd[c[(c[ja>>2]|0)+216>>2]&127](ja,c[e>>2]|0)}SB(c[e>>2]|0)}$W(u|0,z|0,128)|0;_=c[V>>2]|0;if((_|0)<256){T=ea;U=ga;W=da;X=ca}else{break}}ja=c[C>>2]|0;if(!(jd[c[(c[ja>>2]|0)+24>>2]&511](ja)|0)){i=f;return}if(I){ja=c[e>>2]|0;ka=+h[y>>3];ha=+h[n>>3];fa=c[ja+588>>2]|0;h[ja+592>>3]=ka;h[ja+600>>3]=ha;uB(fa,ka,ha);fa=c[e>>2]|0;ha=+h[y>>3];ka=+h[m>>3];ja=c[fa+588>>2]|0;h[fa+592>>3]=ha;h[fa+600>>3]=ka;vB(ja,ha,ka);ja=c[e>>2]|0;ka=+h[A>>3];ha=+h[m>>3];fa=c[ja+588>>2]|0;h[ja+592>>3]=ka;h[ja+600>>3]=ha;vB(fa,ka,ha);fa=c[e>>2]|0;ha=+h[A>>3];ka=+h[n>>3];ja=c[fa+588>>2]|0;h[fa+592>>3]=ha;h[fa+600>>3]=ka;vB(ja,ha,ka);ja=c[e>>2]|0;fa=ja+588|0;xB(c[fa>>2]|0);fa=c[fa>>2]|0;ia=fa+28|0;fa=fa+24|0;ba=c[(c[fa>>2]|0)+((c[ia>>2]|0)+ -1<<2)>>2]|0;h[ja+592>>3]=+h[(c[ba>>2]|0)+((c[ba+12>>2]|0)+ -1<<3)>>3];ia=c[(c[fa>>2]|0)+((c[ia>>2]|0)+ -1<<2)>>2]|0;h[ja+600>>3]=+h[(c[ia+4>>2]|0)+((c[ia+12>>2]|0)+ -1<<3)>>3]}j=c[N>>2]|0;d:do{if((j|0)==0){g=74}else{if((a[j]&1)!=0){break}do{j=c[j+4>>2]|0;if((j|0)==0){g=74;break d}}while((a[j]&1)==0)}}while(0);if((g|0)==74){ja=c[C>>2]|0;hd[c[(c[ja>>2]|0)+216>>2]&127](ja,c[e>>2]|0)}SB(c[e>>2]|0);i=f;return}function Hx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0.0,R=0.0,U=0,X=0.0,_=0.0,aa=0.0,ba=0.0,ca=0.0,da=0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0,na=0,oa=0.0,pa=0,qa=0,ra=0,sa=0.0,ta=0.0;f=i;p=i;i=i+8|0;G=p;o=i;i=i+8|0;E=o;k=i;i=i+8|0;D=k;n=i;i=i+8|0;B=n;j=i;i=i+128|0;g=j;x=i;i=i+128|0;y=x;w=i;i=i+128|0;t=+h[d+184>>3];q=+h[d+192>>3];u=+h[d+200>>3];s=+h[d+208>>3];r=+h[d+216>>3];v=+h[d+224>>3];l=+h[d+232>>3];m=+h[d+240>>3];z=c[d+8>>2]|0;z=jd[c[(c[z>>2]|0)+44>>2]&511](z)|0;a:do{if(t==s&q==r){C=0.0;e=10}else{do{if(u==v){I=r-q;J=s-t;F=0.0;C=0.0}else{if(v>u){F=(-0.0-u)/(v-u)}else{F=(-0.0-v)/(u-v)}J=s-t;oa=t+J*F;I=r-q;C=q+I*F;ka=oa-t;la=C-q;A=ka*ka+la*la<=u*u;oa=t-oa;C=q-C;C=+Z(+(u/+T(+(oa*oa+C*C))));if(u>v){C=-0.0-C;if(A){e=10;break a}else{break}}else{if(A){e=10;break a}else{break}}}}while(0);_=+$(+I,+J);A=b+28|0;HB(c[A>>2]|0,G,E,D,B);J=t+u;I=s+v-J;do{if(I!=0.0){J=(+h[p>>3]-J)/I;if(J<1.0){I=0.0;break}if(J<=0.0){I=0.0;J=1.0;break}I=J;J=1.0}else{I=0.0;J=1.0}}while(0);L=t-u;M=s-v-L;do{if(M!=0.0){L=(+h[k>>3]-L)/M;if(L>3]-L)/M;if(L>3]-L)/M;if(L=F){F=J;break}}else{I=u>v&I>F?F:I;F=J}}while(0);G=0;I=(a[d+381|0]&1)==0&I>1.0?1.0:I;J=(a[d+380|0]&1)==0&F<0.0?0.0:F;ba=C}}while(0);if((e|0)==10){A=b+28|0;HB(c[A>>2]|0,G,E,D,B);_=0.0;G=1;I=1.0;J=0.0;ba=C}B=b+8|0;ra=c[B>>2]|0;do{if(Bd[c[(c[ra>>2]|0)+20>>2]&255](ra,c[d+4>>2]|0)|0){ra=c[B>>2]|0;if(!(gd[c[(c[ra>>2]|0)+240>>2]&3](ra,c[A>>2]|0,d,J,I)|0)){break}i=f;return}}while(0);D=c[A>>2]|0;F=+S(+(+h[D+16>>3]));C=+S(+(+h[D+24>>3]));C=C>F?C:F;F=+S(+(+h[D+32>>3]));F=F>C?F:C;L=+S(+(+h[D+40>>3]));D=u>v;C=D?u:v;F=C*(L>F?L:F);do{if(F<1.0){E=3}else{E=~~(3.141592653589793/+Y(+(1.0-.1/F)));if((E|0)<3){E=3;break}E=(E|0)>200?200:E}}while(0);M=m-l;R=s-t;L=r-q;Q=v-u;Kx(l,m,l+M*J,d,g);K=c[B>>2]|0;K=sd[c[(c[K>>2]|0)+244>>2]&127](K,c[A>>2]|0,d)|0;O=l+M*I;P=(z|0)>0;N=I-J;b=b+116|0;H=(E|0)>1;F=+(E|0);X=_+ba+1.5707963267948966;U=(E|0)>0;aa=_-ba+-1.5707963267948966;ea=ba*2.0;_=ea+3.141592653589793;ca=ba*-2.0+3.141592653589793;ba=ea+-3.141592653589793;da=(z|0)==0;na=0;ea=u+Q*J;la=J;ga=t+R*J;fa=q+L*J;while(1){Kx(l,m,O,d,y);b:do{if((256-na|0)>1){ma=256;c:while(1){if(da){break}else{pa=0}while(1){qa=(c[y+(pa<<2)>>2]|0)-(c[g+(pa<<2)>>2]|0)|0;pa=pa+1|0;if((((qa|0)>-1?qa:0-qa|0)|0)>256){break}if(pa>>>0>=z>>>0){break c}}ma=(ma+na|0)/2|0;ha=J+N*+(ma|0)*.00390625;Kx(l,m,l+M*ha,d,y);if((ma-na|0)<=1){break b}}pa=na+1|0;d:do{if((na|0)<(ma|0)){na=pa;while(1){Kx(l,m,l+M*(J+N*+(na|0)*.00390625),d,w);if(!da){ra=0;do{qa=(c[w+(ra<<2)>>2]|0)-(c[g+(ra<<2)>>2]|0)|0;ra=ra+1|0;if((((qa|0)>-1?qa:0-qa|0)|0)>256){break d}}while(ra>>>0>>0)}qa=na+1|0;if((na|0)<(ma|0)){na=qa}else{na=qa;break}}}else{na=pa}}while(0);ma=(na|0)>(pa|0)?na+ -1|0:pa;ha=J+N*+(ma|0)*.00390625;Kx(l,m,l+M*ha,d,y)}else{ma=256;ha=I}}while(0);ja=t+R*ha;ka=q+L*ha;ia=u+Q*ha;if(P){na=0;do{ra=g+(na<<2)|0;c[ra>>2]=((c[y+(na<<2)>>2]|0)+(c[ra>>2]|0)|0)/2|0;na=na+1|0;}while((na|0)<(z|0))}$W((c[A>>2]|0)+124|0,j|0,128)|0;ra=c[B>>2]|0;ra=jd[c[(c[ra>>2]|0)+24>>2]&511](ra)|0;na=c[B>>2]|0;if(ra){Id[c[(c[na>>2]|0)+172>>2]&3](na,c[A>>2]|0,(la-J)/N)}else{hd[c[(c[na>>2]|0)+140>>2]&127](na,c[A>>2]|0)}do{if(!K){na=c[A>>2]|0;if(G){oa=ea+ga;ra=c[na+588>>2]|0;h[na+592>>3]=oa;h[na+600>>3]=fa;uB(ra,oa,fa);if(H){na=1;do{oa=+(na|0)/F*2.0*3.141592653589793;qa=c[A>>2]|0;la=ga+ea*+V(+oa);oa=fa+ea*+W(+oa);ra=c[qa+588>>2]|0;h[qa+592>>3]=la;h[qa+600>>3]=oa;vB(ra,la,oa);na=na+1|0;}while((na|0)<(E|0))}qa=c[A>>2]|0;pa=qa+588|0;xB(c[pa>>2]|0);pa=c[pa>>2]|0;ra=pa+28|0;pa=pa+24|0;na=c[(c[pa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[qa+592>>3]=+h[(c[na>>2]|0)+((c[na+12>>2]|0)+ -1<<3)>>3];ra=c[(c[pa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[qa+600>>3]=+h[(c[ra+4>>2]|0)+((c[ra+12>>2]|0)+ -1<<3)>>3];qa=c[A>>2]|0;oa=ja+ia;ra=c[qa+588>>2]|0;h[qa+592>>3]=oa;h[qa+600>>3]=ka;uB(ra,oa,ka);if(H){na=1;do{oa=+(na|0)/F*-2.0*3.141592653589793;qa=c[A>>2]|0;la=ja+ia*+V(+oa);oa=ka+ia*+W(+oa);ra=c[qa+588>>2]|0;h[qa+592>>3]=la;h[qa+600>>3]=oa;vB(ra,la,oa);na=na+1|0;}while((na|0)<(E|0))}ra=c[A>>2]|0;pa=ra+588|0;xB(c[pa>>2]|0);pa=c[pa>>2]|0;qa=pa+28|0;pa=pa+24|0;na=c[(c[pa>>2]|0)+((c[qa>>2]|0)+ -1<<2)>>2]|0;h[ra+592>>3]=+h[(c[na>>2]|0)+((c[na+12>>2]|0)+ -1<<3)>>3];qa=c[(c[pa>>2]|0)+((c[qa>>2]|0)+ -1<<2)>>2]|0;h[ra+600>>3]=+h[(c[qa+4>>2]|0)+((c[qa+12>>2]|0)+ -1<<3)>>3];break}oa=ga+ea*+V(+X);la=fa+ea*+W(+X);ra=c[na+588>>2]|0;h[na+592>>3]=oa;h[na+600>>3]=la;uB(ra,oa,la);do{if(U){na=0;do{sa=X-_*(+(na|0)/F);qa=c[A>>2]|0;ta=ja+ia*+V(+sa);sa=ka+ia*+W(+sa);ra=c[qa+588>>2]|0;h[qa+592>>3]=ta;h[qa+600>>3]=sa;vB(ra,ta,sa);na=na+1|0;}while((na|0)<(E|0));if(U){na=0}else{break}do{ta=aa+ba*(+(na|0)/F);qa=c[A>>2]|0;sa=ga+ea*+V(+ta);ta=fa+ea*+W(+ta);ra=c[qa+588>>2]|0;h[qa+592>>3]=sa;h[qa+600>>3]=ta;vB(ra,sa,ta);na=na+1|0;}while((na|0)<(E|0))}}while(0);qa=c[A>>2]|0;pa=qa+588|0;xB(c[pa>>2]|0);pa=c[pa>>2]|0;ra=pa+28|0;pa=pa+24|0;na=c[(c[pa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[qa+592>>3]=+h[(c[na>>2]|0)+((c[na+12>>2]|0)+ -1<<3)>>3];ra=c[(c[pa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[qa+600>>3]=+h[(c[ra+4>>2]|0)+((c[ra+12>>2]|0)+ -1<<3)>>3];qa=c[A>>2]|0;ra=c[qa+588>>2]|0;h[qa+592>>3]=oa;h[qa+600>>3]=la;uB(ra,oa,la);do{if(U){na=0;do{ta=X+ca*(+(na|0)/F);qa=c[A>>2]|0;sa=ja+ia*+V(+ta);ta=ka+ia*+W(+ta);ra=c[qa+588>>2]|0;h[qa+592>>3]=sa;h[qa+600>>3]=ta;vB(ra,sa,ta);na=na+1|0;}while((na|0)<(E|0));if(U){na=0}else{break}do{ta=aa+_*(+(na|0)/F);qa=c[A>>2]|0;sa=ga+ea*+V(+ta);ta=fa+ea*+W(+ta);ra=c[qa+588>>2]|0;h[qa+592>>3]=sa;h[qa+600>>3]=ta;vB(ra,sa,ta);na=na+1|0;}while((na|0)<(E|0))}}while(0);ra=c[A>>2]|0;pa=ra+588|0;xB(c[pa>>2]|0);pa=c[pa>>2]|0;qa=pa+28|0;pa=pa+24|0;na=c[(c[pa>>2]|0)+((c[qa>>2]|0)+ -1<<2)>>2]|0;h[ra+592>>3]=+h[(c[na>>2]|0)+((c[na+12>>2]|0)+ -1<<3)>>3];qa=c[(c[pa>>2]|0)+((c[qa>>2]|0)+ -1<<2)>>2]|0;h[ra+600>>3]=+h[(c[qa+4>>2]|0)+((c[qa+12>>2]|0)+ -1<<3)>>3]}}while(0);ra=c[B>>2]|0;if(!(jd[c[(c[ra>>2]|0)+24>>2]&511](ra)|0)){na=c[b>>2]|0;e:do{if((na|0)==0){e=75}else{if((a[na]&1)!=0){break}do{na=c[na+4>>2]|0;if((na|0)==0){e=75;break e}}while((a[na]&1)==0)}}while(0);if((e|0)==75){e=0;ra=c[B>>2]|0;hd[c[(c[ra>>2]|0)+216>>2]&127](ra,c[A>>2]|0)}SB(c[A>>2]|0)}$W(j|0,x|0,128)|0;if((ma|0)<256){na=ma;ea=ia;la=ha;ga=ja;fa=ka}else{break}}ra=c[B>>2]|0;if(jd[c[(c[ra>>2]|0)+24>>2]&511](ra)|0){$W((c[A>>2]|0)+124|0,j|0,128)|0;w=c[B>>2]|0;Id[c[(c[w>>2]|0)+172>>2]&3](w,c[A>>2]|0,(ha-J)/N);w=c[A>>2]|0;ta=+h[p>>3];sa=+h[o>>3];qa=c[w+588>>2]|0;h[w+592>>3]=ta;h[w+600>>3]=sa;uB(qa,ta,sa);qa=c[A>>2]|0;sa=+h[p>>3];ta=+h[n>>3];w=c[qa+588>>2]|0;h[qa+592>>3]=sa;h[qa+600>>3]=ta;vB(w,sa,ta);w=c[A>>2]|0;ta=+h[k>>3];sa=+h[n>>3];qa=c[w+588>>2]|0;h[w+592>>3]=ta;h[w+600>>3]=sa;vB(qa,ta,sa);qa=c[A>>2]|0;sa=+h[k>>3];ta=+h[o>>3];w=c[qa+588>>2]|0;h[qa+592>>3]=sa;h[qa+600>>3]=ta;vB(w,sa,ta);w=c[A>>2]|0;qa=w+588|0;xB(c[qa>>2]|0);qa=c[qa>>2]|0;ra=qa+28|0;qa=qa+24|0;pa=c[(c[qa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[w+592>>3]=+h[(c[pa>>2]|0)+((c[pa+12>>2]|0)+ -1<<3)>>3];ra=c[(c[qa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[w+600>>3]=+h[(c[ra+4>>2]|0)+((c[ra+12>>2]|0)+ -1<<3)>>3];w=c[b>>2]|0;f:do{if((w|0)==0){e=83}else{if((a[w]&1)!=0){break}do{w=c[w+4>>2]|0;if((w|0)==0){e=83;break f}}while((a[w]&1)==0)}}while(0);if((e|0)==83){ra=c[B>>2]|0;hd[c[(c[ra>>2]|0)+216>>2]&127](ra,c[A>>2]|0)}SB(c[A>>2]|0)}if(K|G^1){i=f;return}x=d+380|0;z=a[x]|0;w=u>v;if((z&1)==0|w){y=D^1;if(!((a[d+381|0]&1)==0|y)){e=88}}else{e=88}if((e|0)==88){I=w?v:u;u=w?s:t;v=w?r:q;$A(d,w?m:l,g);$W((c[A>>2]|0)+124|0,j|0,128)|0;qa=c[B>>2]|0;hd[c[(c[qa>>2]|0)+140>>2]&127](qa,c[A>>2]|0);qa=c[A>>2]|0;ta=u+I;ra=c[qa+588>>2]|0;h[qa+592>>3]=ta;h[qa+600>>3]=v;uB(ra,ta,v);if(H){y=1;do{ta=+(y|0)/F*2.0*3.141592653589793;qa=c[A>>2]|0;sa=u+I*+V(+ta);ta=v+I*+W(+ta);ra=c[qa+588>>2]|0;h[qa+592>>3]=sa;h[qa+600>>3]=ta;vB(ra,sa,ta);y=y+1|0;}while((y|0)<(E|0))}y=c[A>>2]|0;qa=y+588|0;xB(c[qa>>2]|0);qa=c[qa>>2]|0;ra=qa+28|0;qa=qa+24|0;pa=c[(c[qa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[y+592>>3]=+h[(c[pa>>2]|0)+((c[pa+12>>2]|0)+ -1<<3)>>3];ra=c[(c[qa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[y+600>>3]=+h[(c[ra+4>>2]|0)+((c[ra+12>>2]|0)+ -1<<3)>>3];y=c[b>>2]|0;g:do{if((y|0)==0){e=94}else{if((a[y]&1)!=0){break}do{y=c[y+4>>2]|0;if((y|0)==0){e=94;break g}}while((a[y]&1)==0)}}while(0);if((e|0)==94){ra=c[B>>2]|0;hd[c[(c[ra>>2]|0)+216>>2]&127](ra,c[A>>2]|0)}SB(c[A>>2]|0);z=a[x]|0;y=D^1}do{if((z&1)==0|y){if(!((a[d+381|0]&1)==0|w)){break}i=f;return}}while(0);s=D?t:s;q=D?q:r;$A(d,D?l:m,g);$W((c[A>>2]|0)+124|0,j|0,128)|0;qa=c[B>>2]|0;hd[c[(c[qa>>2]|0)+140>>2]&127](qa,c[A>>2]|0);qa=c[A>>2]|0;ta=+h[p>>3];sa=+h[o>>3];pa=c[qa+588>>2]|0;h[qa+592>>3]=ta;h[qa+600>>3]=sa;uB(pa,ta,sa);pa=c[A>>2]|0;sa=+h[p>>3];ta=+h[n>>3];qa=c[pa+588>>2]|0;h[pa+592>>3]=sa;h[pa+600>>3]=ta;vB(qa,sa,ta);qa=c[A>>2]|0;ta=+h[k>>3];sa=+h[n>>3];pa=c[qa+588>>2]|0;h[qa+592>>3]=ta;h[qa+600>>3]=sa;vB(pa,ta,sa);pa=c[A>>2]|0;sa=+h[k>>3];ta=+h[o>>3];qa=c[pa+588>>2]|0;h[pa+592>>3]=sa;h[pa+600>>3]=ta;vB(qa,sa,ta);qa=c[A>>2]|0;pa=qa+588|0;xB(c[pa>>2]|0);pa=c[pa>>2]|0;ra=pa+28|0;pa=pa+24|0;na=c[(c[pa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[qa+592>>3]=+h[(c[na>>2]|0)+((c[na+12>>2]|0)+ -1<<3)>>3];ra=c[(c[pa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[qa+600>>3]=+h[(c[ra+4>>2]|0)+((c[ra+12>>2]|0)+ -1<<3)>>3];qa=c[A>>2]|0;ta=s+C;ra=c[qa+588>>2]|0;h[qa+592>>3]=ta;h[qa+600>>3]=q;uB(ra,ta,q);if(H){g=1;do{ta=+(g|0)/F*2.0*3.141592653589793;qa=c[A>>2]|0;sa=s+C*+V(+ta);ta=q+C*+W(+ta);ra=c[qa+588>>2]|0;h[qa+592>>3]=sa;h[qa+600>>3]=ta;vB(ra,sa,ta);g=g+1|0;}while((g|0)<(E|0))}g=c[A>>2]|0;qa=g+588|0;xB(c[qa>>2]|0);qa=c[qa>>2]|0;ra=qa+28|0;qa=qa+24|0;pa=c[(c[qa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[g+592>>3]=+h[(c[pa>>2]|0)+((c[pa+12>>2]|0)+ -1<<3)>>3];ra=c[(c[qa>>2]|0)+((c[ra>>2]|0)+ -1<<2)>>2]|0;h[g+600>>3]=+h[(c[ra+4>>2]|0)+((c[ra+12>>2]|0)+ -1<<3)>>3];g=c[b>>2]|0;h:do{if((g|0)==0){e=104}else{if((a[g]&1)!=0){break}do{g=c[g+4>>2]|0;if((g|0)==0){e=104;break h}}while((a[g]&1)==0)}}while(0);if((e|0)==104){ra=c[B>>2]|0;hd[c[(c[ra>>2]|0)+216>>2]&127](ra,c[A>>2]|0)}SB(c[A>>2]|0);i=f;return}function Ix(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=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.0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0;j=i;n=i;i=i+8|0;m=n;o=i;i=i+8|0;e=o;q=i;i=i+8|0;f=q;r=i;i=i+8|0;g=r;p=i;i=i+8|0;k=p;d=i;i=i+8|0;l=d;B=i;i=i+8|0;s=B;t=i;i=i+8|0;w=t;v=i;i=i+8|0;u=v;x=i;i=i+128|0;y=i;i=i+128|0;z=i;i=i+128|0;A=a+8|0;D=c[A>>2]|0;do{if(Bd[c[(c[D>>2]|0)+20>>2]&255](D,c[b+4>>2]|0)|0){D=c[A>>2]|0;A=a+28|0;if(!(sd[c[(c[D>>2]|0)+248>>2]&127](D,c[A>>2]|0,b)|0)){break}i=j;return}else{A=a+28|0}}while(0);F=c[A>>2]|0;D=c[F+588>>2]|0;bX(F+592|0,0,16)|0;uB(D,0.0,0.0);D=c[A>>2]|0;F=c[D+588>>2]|0;h[D+592>>3]=1.0;h[D+600>>3]=0.0;vB(F,1.0,0.0);F=c[A>>2]|0;D=c[F+588>>2]|0;h[F+592>>3]=0.0;h[F+600>>3]=1.0;vB(D,0.0,1.0);D=c[A>>2]|0;F=D+588|0;xB(c[F>>2]|0);F=c[F>>2]|0;E=F+28|0;F=F+24|0;G=c[(c[F>>2]|0)+((c[E>>2]|0)+ -1<<2)>>2]|0;h[D+592>>3]=+h[(c[G>>2]|0)+((c[G+12>>2]|0)+ -1<<3)>>3];E=c[(c[F>>2]|0)+((c[E>>2]|0)+ -1<<2)>>2]|0;h[D+600>>3]=+h[(c[E+4>>2]|0)+((c[E+12>>2]|0)+ -1<<3)>>3];D=c[A>>2]|0;A=FW(20)|0;yB(A,c[D+588>>2]|0);do{if((c[b+324>>2]|0)>0){x=c[b+196>>2]|0;C=(+h[x+24>>3]- +h[x+16>>3])*.005;x=b+192|0;if((c[x>>2]|0)>0){y=0}else{break}do{gB(b,y,m,e,s,f,g,w,k,l,u);Lx(a,+h[n>>3],+h[o>>3],+h[B>>3],+h[q>>3],+h[r>>3],+h[t>>3],+h[p>>3],+h[d>>3],+h[v>>3],C,0,b,A);y=y+1|0;}while((y|0)<(c[x>>2]|0))}else{s=b+192|0;if((c[s>>2]|0)<=0){break}t=b+8|0;u=0;do{eB(b,u,m,e,x,f,g,y,k,l,z);L=+h[n>>3];K=+h[o>>3];J=+h[q>>3];I=+h[r>>3];H=+h[p>>3];C=+h[d>>3];G=c[t>>2]|0;Mx(a,L,K,x,J,I,y,H,C,z,jd[c[(c[G>>2]|0)+44>>2]&511](G)|0,0,A);u=u+1|0;}while((u|0)<(c[s>>2]|0))}}while(0);if((A|0)==0){i=j;return}HW(A);i=j;return}function Jx(b,d,e,f,g,j,k,l){b=b|0;d=d|0;e=+e;f=+f;g=+g;j=+j;k=k|0;l=l|0;var 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.0,L=0.0;m=i;p=i;i=i+128|0;s=p;r=i;i=i+128|0;w=r;v=i;i=i+128|0;x=v;C=i;i=i+128|0;y=C;u=i;i=i+128|0;z=u;t=i;i=i+128|0;A=t;B=i;i=i+512|0;q=B;F=c[d+8>>2]|0;F=jd[c[(c[F>>2]|0)+44>>2]&511](F)|0;o=d+216|0;D=(F|0)>0;E=0;a:while(1){G=E+1|0;if(D){J=G&3;I=0;do{H=(c[k+(E<<7)+(I<<2)>>2]|0)-(c[k+(J<<7)+(I<<2)>>2]|0)|0;I=I+1|0;if((((H|0)>-1?H:0-H|0)|0)>256){break a}}while((I|0)<(F|0))}if((G|0)<4){E=G}else{E=G;break}}K=(e+g)*.5;L=(f+j)*.5;if((E|0)==4){if((l|0)<=0){n=16}}else{if((l|0)!=6){n=16}}if((n|0)==16){RA(d,e,L,w);RA(d,g,L,x);RA(d,K,f,y);RA(d,K,j,z);RA(d,K,L,A);$W(B|0,k|0,128)|0;G=q+128|0;$W(G|0,r|0,128)|0;H=q+256|0;$W(H|0,C|0,128)|0;I=q+384|0;$W(I|0,t|0,128)|0;J=l+1|0;Jx(b,d,e,f,K,L,q,J);$W(B|0,r|0,128)|0;$W(G|0,k+128|0,128)|0;$W(H|0,t|0,128)|0;$W(I|0,u|0,128)|0;Jx(b,d,e,L,K,j,q,J);$W(B|0,C|0,128)|0;$W(G|0,t|0,128)|0;$W(H|0,k+256|0,128)|0;$W(I|0,v|0,128)|0;Jx(b,d,K,f,g,L,q,J);$W(B|0,t|0,128)|0;$W(G|0,u|0,128)|0;$W(H|0,v|0,128)|0;$W(I|0,k+384|0,128)|0;Jx(b,d,K,L,g,j,q,J);i=m;return}RA(d,K,L,s);q=b+28|0;$W((c[q>>2]|0)+124|0,p|0,128)|0;p=b+8|0;E=c[p>>2]|0;hd[c[(c[E>>2]|0)+140>>2]&127](E,c[q>>2]|0);E=c[q>>2]|0;G=d+232|0;F=d+248|0;L=+h[F>>3]+(+h[o>>3]*e+ +h[G>>3]*f);H=d+224|0;J=d+240|0;d=d+256|0;K=+h[d>>3]+(+h[H>>3]*e+ +h[J>>3]*f);I=c[E+588>>2]|0;h[E+592>>3]=L;h[E+600>>3]=K;uB(I,L,K);I=c[q>>2]|0;K=+h[F>>3]+(+h[o>>3]*g+ +h[G>>3]*f);L=+h[d>>3]+(+h[H>>3]*g+ +h[J>>3]*f);E=c[I+588>>2]|0;h[I+592>>3]=K;h[I+600>>3]=L;vB(E,K,L);E=c[q>>2]|0;L=+h[F>>3]+(+h[o>>3]*g+ +h[G>>3]*j);K=+h[d>>3]+(+h[H>>3]*g+ +h[J>>3]*j);I=c[E+588>>2]|0;h[E+592>>3]=L;h[E+600>>3]=K;vB(I,L,K);I=c[q>>2]|0;K=+h[F>>3]+(+h[o>>3]*e+ +h[G>>3]*j);L=+h[d>>3]+(+h[H>>3]*e+ +h[J>>3]*j);d=c[I+588>>2]|0;h[I+592>>3]=K;h[I+600>>3]=L;vB(d,K,L);d=c[q>>2]|0;I=d+588|0;xB(c[I>>2]|0);I=c[I>>2]|0;J=I+28|0;I=I+24|0;H=c[(c[I>>2]|0)+((c[J>>2]|0)+ -1<<2)>>2]|0;h[d+592>>3]=+h[(c[H>>2]|0)+((c[H+12>>2]|0)+ -1<<3)>>3];J=c[(c[I>>2]|0)+((c[J>>2]|0)+ -1<<2)>>2]|0;h[d+600>>3]=+h[(c[J+4>>2]|0)+((c[J+12>>2]|0)+ -1<<3)>>3];d=c[b+116>>2]|0;b:do{if((d|0)==0){n=14}else{if((a[d]&1)!=0){break}do{d=c[d+4>>2]|0;if((d|0)==0){n=14;break b}}while((a[d]&1)==0)}}while(0);if((n|0)==14){J=c[p>>2]|0;hd[c[(c[J>>2]|0)+216>>2]&127](J,c[q>>2]|0)}SB(c[q>>2]|0);i=m;return}function Kx(a,b,c,d,e){a=+a;b=+b;c=+c;d=d|0;e=e|0;var f=0;f=i;do{if(ab){$A(d,b,e);break}else{$A(d,c,e);break}}else{if(c>a){$A(d,a,e);break}if(c=n){w=4;break}if(!(+S(+(m-v))>2]|0)+124|0,s|0,128)|0;s=b+8|0;w=c[s>>2]|0;hd[c[(c[w>>2]|0)+140>>2]&127](w,c[t>>2]|0);CB(q);if(zB(q)|0){Ya(160992,161008,3232,161016)}BB(q,d,e);AB(q);if(zB(q)|0){Ya(160992,161008,3233,161016)}BB(q,g,h);AB(q);if(zB(q)|0){Ya(160992,161008,3234,161016)}BB(q,k,l);AB(q);if(zB(q)|0){Ya(160992,161008,3235,161016)}BB(q,d,e);AB(q);if(!(zB(q)|0)){Ya(161040,161008,3236,161016)}b=c[b+116>>2]|0;a:do{if((b|0)!=0){if((a[b]&1)!=0){i=r;return}do{b=c[b+4>>2]|0;if((b|0)==0){break a}}while((a[b]&1)==0);i=r;return}}while(0);w=c[s>>2]|0;hd[c[(c[w>>2]|0)+216>>2]&127](w,c[t>>2]|0);i=r;return}function Mx(b,d,e,f,g,h,j,k,l,m,n,o,p){b=b|0;d=+d;e=+e;f=f|0;g=+g;h=+h;j=j|0;k=+k;l=+l;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0;q=i;t=i;i=i+128|0;s=i;i=i+128|0;r=i;i=i+128|0;u=(n|0)>0;a:do{if(u){B=0;while(1){C=c[j+(B<<2)>>2]|0;D=(c[f+(B<<2)>>2]|0)-C|0;if((((D|0)>-1?D:0-D|0)|0)>768){break a}D=C-(c[m+(B<<2)>>2]|0)|0;C=B+1|0;if((((D|0)>-1?D:0-D|0)|0)>768){break a}if((C|0)<(n|0)){B=C}else{B=C;break}}}else{B=0}}while(0);if(!((B|0)==(n|0)|(o|0)==6)){x=(d+g)*.5;y=(e+h)*.5;w=(g+k)*.5;v=(h+l)*.5;z=(d+k)*.5;A=(e+l)*.5;if(u){u=0;do{C=c[f+(u<<2)>>2]|0;B=c[j+(u<<2)>>2]|0;c[t+(u<<2)>>2]=(B+C|0)/2|0;D=c[m+(u<<2)>>2]|0;c[s+(u<<2)>>2]=(D+B|0)/2|0;c[r+(u<<2)>>2]=(C+D|0)/2|0;u=u+1|0;}while((u|0)<(n|0))}D=o+1|0;Mx(b,d,e,f,x,y,t,z,A,r,n,D,p);Mx(b,x,y,t,g,h,j,w,v,s,n,D,p);Mx(b,x,y,t,w,v,s,z,A,r,n,D,p);Mx(b,z,A,r,w,v,s,k,l,m,n,D,p);i=q;return}o=b+28|0;$W((c[o>>2]|0)+124|0,f|0,128)|0;f=b+8|0;D=c[f>>2]|0;hd[c[(c[D>>2]|0)+140>>2]&127](D,c[o>>2]|0);CB(p);if(zB(p)|0){Ya(160992,161008,3184,161016)}BB(p,d,e);AB(p);if(zB(p)|0){Ya(160992,161008,3185,161016)}BB(p,g,h);AB(p);if(zB(p)|0){Ya(160992,161008,3186,161016)}BB(p,k,l);AB(p);if(zB(p)|0){Ya(160992,161008,3187,161016)}BB(p,d,e);AB(p);if(!(zB(p)|0)){Ya(161040,161008,3188,161016)}p=c[b+116>>2]|0;b:do{if((p|0)!=0){if((a[p]&1)!=0){i=q;return}do{p=c[p+4>>2]|0;if((p|0)==0){break b}}while((a[p]&1)==0);i=q;return}}while(0);D=c[f>>2]|0;hd[c[(c[D>>2]|0)+216>>2]&127](D,c[o>>2]|0);i=q;return}function Nx(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=+g;j=j|0;k=k|0;var 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.0,y=0.0,z=0.0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;l=i;o=i;i=i+1280|0;p=i;i=i+1280|0;m=i;i=i+1280|0;n=i;i=i+1280|0;t=i;i=i+256|0;q=i;i=i+256|0;u=i;i=i+128|0;v=u;r=(f|0)>0;a:do{if(r){w=0;while(1){x=+h[d+256+(w<<3)>>3];z=+h[d+512+(w<<3)>>3];if(+S(+(x-z))>g){break a}y=+h[d+1024+(w<<3)>>3];if(+S(+(z-y))>g){break a}z=+h[d+768+(w<<3)>>3];if(+S(+(y-z))>g){break a}A=w+1|0;if(+S(+(z-x))>g){break a}if((A|0)<(f|0)){w=A}else{w=A;break}}}else{w=0}}while(0);if(!((w|0)==(f|0)|(j|0)==6)){s=0;while(1){D=+h[d+(s<<5)>>3];h[t+(s<<6)>>3]=D;B=+h[d+128+(s<<5)>>3];h[q+(s<<6)>>3]=B;F=+h[d+(s<<5)+8>>3];D=(D+F)*.5;h[t+(s<<6)+8>>3]=D;E=+h[d+128+(s<<5)+8>>3];B=(B+E)*.5;h[q+(s<<6)+8>>3]=B;C=+h[d+(s<<5)+16>>3];F=(F+C)*.5;x=+h[d+128+(s<<5)+16>>3];E=(E+x)*.5;y=+h[d+(s<<5)+24>>3];C=(C+y)*.5;h[t+(s<<6)+48>>3]=C;z=+h[d+128+(s<<5)+24>>3];x=(x+z)*.5;h[q+(s<<6)+48>>3]=x;D=(F+D)*.5;h[t+(s<<6)+16>>3]=D;B=(E+B)*.5;h[q+(s<<6)+16>>3]=B;C=(F+C)*.5;h[t+(s<<6)+40>>3]=C;x=(E+x)*.5;h[q+(s<<6)+40>>3]=x;C=(D+C)*.5;h[t+(s<<6)+32>>3]=C;h[t+(s<<6)+24>>3]=C;x=(B+x)*.5;h[q+(s<<6)+32>>3]=x;h[q+(s<<6)+24>>3]=x;h[t+(s<<6)+56>>3]=y;h[q+(s<<6)+56>>3]=z;s=s+1|0;if((s|0)<4){}else{s=0;break}}while(1){z=+h[t+(s<<3)>>3];h[o+(s<<3)>>3]=z;B=+h[q+(s<<3)>>3];h[o+128+(s<<3)>>3]=B;x=+h[t+64+(s<<3)>>3];z=(z+x)*.5;h[o+32+(s<<3)>>3]=z;y=+h[q+64+(s<<3)>>3];B=(B+y)*.5;h[o+160+(s<<3)>>3]=B;C=+h[t+128+(s<<3)>>3];x=(x+C)*.5;D=+h[q+128+(s<<3)>>3];y=(y+D)*.5;E=+h[t+192+(s<<3)>>3];C=(C+E)*.5;h[m+64+(s<<3)>>3]=C;F=+h[q+192+(s<<3)>>3];D=(D+F)*.5;h[m+192+(s<<3)>>3]=D;z=(x+z)*.5;h[o+64+(s<<3)>>3]=z;B=(y+B)*.5;h[o+192+(s<<3)>>3]=B;C=(x+C)*.5;h[m+32+(s<<3)>>3]=C;D=(y+D)*.5;h[m+160+(s<<3)>>3]=D;C=(z+C)*.5;h[o+96+(s<<3)>>3]=C;D=(B+D)*.5;h[o+224+(s<<3)>>3]=D;h[m+(s<<3)>>3]=C;h[m+128+(s<<3)>>3]=D;h[m+96+(s<<3)>>3]=E;h[m+224+(s<<3)>>3]=F;s=s+1|0;if((s|0)<4){}else{s=4;break}}do{z=+h[t+(s<<3)>>3];A=s+ -4|0;h[p+(A<<3)>>3]=z;B=+h[q+(s<<3)>>3];h[p+128+(A<<3)>>3]=B;x=+h[t+64+(s<<3)>>3];z=(z+x)*.5;h[p+32+(A<<3)>>3]=z;y=+h[q+64+(s<<3)>>3];B=(B+y)*.5;h[p+160+(A<<3)>>3]=B;C=+h[t+128+(s<<3)>>3];x=(x+C)*.5;D=+h[q+128+(s<<3)>>3];y=(y+D)*.5;E=+h[t+192+(s<<3)>>3];C=(C+E)*.5;h[n+64+(A<<3)>>3]=C;F=+h[q+192+(s<<3)>>3];D=(D+F)*.5;h[n+192+(A<<3)>>3]=D;z=(x+z)*.5;h[p+64+(A<<3)>>3]=z;B=(y+B)*.5;h[p+192+(A<<3)>>3]=B;C=(x+C)*.5;h[n+32+(A<<3)>>3]=C;D=(y+D)*.5;h[n+160+(A<<3)>>3]=D;C=(z+C)*.5;h[p+96+(A<<3)>>3]=C;D=(B+D)*.5;h[p+224+(A<<3)>>3]=D;h[n+(A<<3)>>3]=C;h[n+128+(A<<3)>>3]=D;h[n+96+(A<<3)>>3]=E;h[n+224+(A<<3)>>3]=F;s=s+1|0;}while((s|0)<8);if(r){q=0;do{F=+h[d+256+(q<<3)>>3];h[o+256+(q<<3)>>3]=F;E=+h[d+512+(q<<3)>>3];C=(F+E)*.5;h[o+512+(q<<3)>>3]=C;h[p+256+(q<<3)>>3]=C;h[p+512+(q<<3)>>3]=E;C=+h[d+1024+(q<<3)>>3];E=(E+C)*.5;h[p+1024+(q<<3)>>3]=E;h[n+512+(q<<3)>>3]=E;h[n+1024+(q<<3)>>3]=C;D=+h[d+768+(q<<3)>>3];C=(C+D)*.5;h[n+768+(q<<3)>>3]=C;h[m+1024+(q<<3)>>3]=C;h[m+768+(q<<3)>>3]=D;F=(D+F)*.5;h[m+256+(q<<3)>>3]=F;h[o+768+(q<<3)>>3]=F;F=(E+F)*.5;h[o+1024+(q<<3)>>3]=F;h[p+768+(q<<3)>>3]=F;h[n+256+(q<<3)>>3]=F;h[m+512+(q<<3)>>3]=F;q=q+1|0;}while((q|0)<(f|0))}A=j+1|0;Nx(b,o,e,f,g,A,k);Nx(b,m,e,f,g,A,k);Nx(b,p,e,f,g,A,k);Nx(b,n,e,f,g,A,k);i=l;return}do{if((c[k+316>>2]|0)>0){kB(k,+h[d+256>>3],v)}else{if((e|0)>0){m=0}else{break}do{c[v+(m<<2)>>2]=~~+h[d+256+(m<<3)>>3];m=m+1|0;}while((m|0)<(e|0))}}while(0);e=b+28|0;$W((c[e>>2]|0)+124|0,u|0,128)|0;m=b+8|0;v=c[m>>2]|0;hd[c[(c[v>>2]|0)+140>>2]&127](v,c[e>>2]|0);v=c[e>>2]|0;E=+h[d>>3];A=d+128|0;F=+h[A>>3];w=c[v+588>>2]|0;h[v+592>>3]=E;h[v+600>>3]=F;uB(w,E,F);w=c[e>>2]|0;F=+h[d+8>>3];E=+h[d+136>>3];D=+h[d+16>>3];C=+h[d+144>>3];B=+h[d+24>>3];z=+h[d+152>>3];v=c[w+588>>2]|0;h[w+592>>3]=B;h[w+600>>3]=z;wB(v,F,E,D,C,B,z);v=c[e>>2]|0;z=+h[d+56>>3];B=+h[d+184>>3];C=+h[d+88>>3];D=+h[d+216>>3];E=+h[d+120>>3];F=+h[d+248>>3];w=c[v+588>>2]|0;h[v+592>>3]=E;h[v+600>>3]=F;wB(w,z,B,C,D,E,F);w=c[e>>2]|0;F=+h[d+112>>3];E=+h[d+240>>3];D=+h[d+104>>3];C=+h[d+232>>3];B=+h[d+96>>3];z=+h[d+224>>3];v=c[w+588>>2]|0;h[w+592>>3]=B;h[w+600>>3]=z;wB(v,F,E,D,C,B,z);v=c[e>>2]|0;z=+h[d+64>>3];B=+h[d+192>>3];C=+h[d+32>>3];D=+h[d+160>>3];E=+h[d>>3];F=+h[A>>3];A=c[v+588>>2]|0;h[v+592>>3]=E;h[v+600>>3]=F;wB(A,z,B,C,D,E,F);A=c[e>>2]|0;v=A+588|0;xB(c[v>>2]|0);v=c[v>>2]|0;w=v+28|0;v=v+24|0;u=c[(c[v>>2]|0)+((c[w>>2]|0)+ -1<<2)>>2]|0;h[A+592>>3]=+h[(c[u>>2]|0)+((c[u+12>>2]|0)+ -1<<3)>>3];w=c[(c[v>>2]|0)+((c[w>>2]|0)+ -1<<2)>>2]|0;h[A+600>>3]=+h[(c[w+4>>2]|0)+((c[w+12>>2]|0)+ -1<<3)>>3];b=c[b+116>>2]|0;b:do{if((b|0)==0){s=16}else{if((a[b]&1)!=0){break}do{b=c[b+4>>2]|0;if((b|0)==0){s=16;break b}}while((a[b]&1)==0)}}while(0);if((s|0)==16){A=c[m>>2]|0;hd[c[(c[A>>2]|0)+216>>2]&127](A,c[e>>2]|0)}SB(c[e>>2]|0);i=l;return}function Ox(b,d){b=b|0;d=d|0;var e=0,f=0,g=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.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0.0,R=0.0,S=0,T=0,U=0,V=0.0,W=0.0,X=0,Y=0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0;g=i;x=i;i=i+8|0;z=i;i=i+8|0;t=i;i=i+8|0;o=t;v=i;i=i+8|0;p=v;l=i;i=i+8|0;s=l;k=i;i=i+8|0;w=k;P=i;i=i+8|0;G=P;E=i;i=i+8|0;F=E;B=i;i=i+8|0;r=B;C=i;i=i+8|0;n=C;U=i;i=i+48|0;T=U;y=i;i=i+16|0;A=y;u=i;i=i+8|0;q=u;c[v>>2]=0;c[y>>2]=13;j=A+8|0;c[j>>2]=0;c[j+4>>2]=0;j=b+28|0;m=c[(c[j>>2]|0)+484>>2]|0;D=jd[c[(c[m>>2]|0)+8>>2]&511](m)|0;e=b+8|0;Y=c[e>>2]|0;if(jd[c[(c[Y>>2]|0)+12>>2]&511](Y)|0){Y=c[e>>2]|0;Gd[c[(c[Y>>2]|0)+276>>2]&255](Y,c[j>>2]|0,d)}do{if((c[m+40>>2]|0)==4){Y=c[e>>2]|0;if(!(jd[c[(c[Y>>2]|0)+32>>2]&511](Y)|0)){f=30;break}S=c[j>>2]|0;$W(U|0,S+16|0,48)|0;W=+h[S+496>>3];K=+h[U>>3];O=+h[S+504>>3];V=+h[T+16>>3];Q=+h[T+8>>3];L=+h[T+24>>3];H=+h[S+512>>3];I=+h[S+520>>3];N=K*H+V*I;M=Q*H+L*I;R=+h[m+64>>3];Z=+h[m+72>>3];V=(W*K+O*V)*R+Z*N;Z=(W*Q+O*L)*R+Z*M;R=+h[m+80>>3];L=+h[m+88>>3];Q=+h[S+488>>3];K=Z*Q;M=Q*(R*Z+M*L);Z=+h[S+560>>3];J=V*Q*Z;L=Z*Q*(R*V+N*L);N=+h[S+576>>3];H=W*0.0+N*H;I=O*0.0+N*I;N=+h[S+608>>3];O=+h[S+616>>3];F=b+120|0;P=c[F>>2]|0;U=c[d+24>>2]|0;if((U|0)>0){E=b+32|0;D=b+40|0;G=b+36|0;C=b+18|0;B=b+20|0;Q=+h[S+592>>3];R=+h[S+600>>3];S=c[d+28>>2]|0;while(1){T=xd[c[(c[m>>2]|0)+12>>2]&3](m,S,U,o,p,q,s,w,r,n)|0;X=c[j>>2]|0;Y=X+488|0;V=+h[l>>3]*+h[Y>>3]+ +h[X+544>>3];h[l>>3]=V;do{if((T|0)==1){if((a[S]|0)!=32){break}V=V+ +h[X+552>>3];h[l>>3]=V}}while(0);_=+h[X+560>>3]*V;h[l>>3]=_;V=+h[Y>>3]*+h[k>>3];h[k>>3]=V;W=_*+h[X+496>>3]+V*+h[X+512>>3];V=_*+h[X+504>>3]+V*+h[X+520>>3];_=H+Q;Z=I+R;aa=+h[X+48>>3]+(_*+h[X+16>>3]+Z*+h[X+32>>3]);$=+h[X+56>>3]+(_*+h[X+24>>3]+Z*+h[X+40>>3]);Y=c[e>>2]|0;hd[c[(c[Y>>2]|0)+80>>2]&127](Y,X);Y=XB(c[j>>2]|0)|0;c[j>>2]=Y;c[E>>2]=(c[E>>2]|0)+1;IB(Y,J,K,L,M,aa,$);Y=c[e>>2]|0;Ed[c[(c[Y>>2]|0)+92>>2]&3](Y,c[j>>2]|0,1.0,0.0,0.0,1.0,0.0,0.0);Y=c[e>>2]|0;if(!(qd[c[(c[Y>>2]|0)+292>>2]&1](Y,c[j>>2]|0,_,Z,W,V,c[t>>2]|0,c[v>>2]|0,c[u>>2]|0)|0)){iy(m,c[t>>2]|0,A)|0;Y=jy(m)|0;X=(Y|0)!=0;if(X){ba=FW(120)|0;mx(ba,c[b>>2]|0,Y,c[B>>2]|0);c[B>>2]=ba}if((c[y>>2]|0)==8){vx(b,A,0)}else{Y=c[F>>2]|0;do{if((Y|0)==0){Y=-1}else{Y=c[Y+4>>2]|0;if((c[Y+16>>2]|0)!=8){Y=-1;break}Y=c[Y+24>>2]|0;Y=jd[c[(c[Y>>2]|0)+48>>2]&511](Y)|0}}while(0);Qe(Y,161248,z)}ba=c[e>>2]|0;hd[c[(c[ba>>2]|0)+296>>2]&127](ba,c[j>>2]|0);if(X){Y=c[B>>2]|0;X=c[Y+112>>2]|0;if((Y|0)!=0){nx(Y);HW(Y)}c[B>>2]=X}Of(A)}ba=c[G>>2]|0;do{if((c[E>>2]|0)>(c[ba+(((c[D>>2]|0)-ba>>2)+ -1<<2)>>2]|0)){X=c[j>>2]|0;if((c[X+656>>2]|0)==0){f=26;break}ba=YB(X)|0;c[j>>2]=ba;Y=c[e>>2]|0;hd[c[(c[Y>>2]|0)+84>>2]&127](Y,ba);c[E>>2]=(c[E>>2]|0)+ -1}else{f=26}}while(0);if((f|0)==26){f=0;Qe(-1,162208,x);a[C]=1}Q=Q+W;R=R+V;Y=c[j>>2]|0;ba=c[Y+588>>2]|0;h[Y+592>>3]=Q;h[Y+600>>3]=R;uB(ba,Q,R);ba=c[j>>2]|0;h[ba+608>>3]=N;h[ba+616>>3]=O;U=U-T|0;if((U|0)>0){S=S+T|0}else{break}}}c[F>>2]=P}else{f=30}}while(0);do{if((f|0)==30){ba=c[e>>2]|0;if(!(jd[c[(c[ba>>2]|0)+12>>2]&511](ba)|0)){h[k>>3]=0.0;h[l>>3]=0.0;w=c[d+24>>2]|0;if((w|0)>0){v=0;s=0;t=c[d+28>>2]|0;while(1){u=xd[c[(c[m>>2]|0)+12>>2]&3](m,t,w,o,p,q,G,F,r,n)|0;H=+h[P>>3]+ +h[l>>3];h[l>>3]=H;I=+h[E>>3]+ +h[k>>3];h[k>>3]=I;if((u|0)==1){s=((a[t]|0)==32)+s|0}v=v+1|0;w=w-u|0;if((w|0)>0){t=t+u|0}else{break}}J=+(v|0)}else{I=0.0;H=0.0;J=0.0;s=0}m=c[j>>2]|0;n=m+488|0;K=+h[n>>3];if((D|0)==0){H=H*K+J*+h[m+544>>3]+ +(s|0)*+h[m+552>>3];h[l>>3]=H;H=H*+h[m+560>>3];h[l>>3]=H;J=+h[n>>3]*I}else{H=K*H;h[l>>3]=H;J=I*+h[n>>3]+J*+h[m+544>>3]+ +(s|0)*+h[m+552>>3]}h[k>>3]=J;I=H*+h[m+496>>3]+J*+h[m+512>>3];H=H*+h[m+504>>3]+J*+h[m+520>>3];k=c[b+116>>2]|0;a:do{if((k|0)==0){f=64}else{if((a[k]&1)!=0){break}while(1){k=c[k+4>>2]|0;if((k|0)==0){f=64;break a}if((a[k]&1)==0){}else{break}}}}while(0);if((f|0)==64){ba=c[e>>2]|0;Gd[c[(c[ba>>2]|0)+288>>2]&255](ba,m,d);m=c[j>>2]|0}WB(m,I,H);break}z=c[j>>2]|0;I=+h[z+576>>3];H=+h[z+496>>3]*0.0+I*+h[z+512>>3];I=+h[z+504>>3]*0.0+I*+h[z+520>>3];z=c[d+28>>2]|0;y=c[d+24>>2]|0;if((y|0)<=0){break}x=b+116|0;if((D|0)==0){while(1){A=xd[c[(c[m>>2]|0)+12>>2]&3](m,z,y,o,p,q,s,w,r,n)|0;D=c[j>>2]|0;E=D+488|0;J=+h[l>>3]*+h[E>>3]+ +h[D+544>>3];h[l>>3]=J;do{if((A|0)==1){if((a[z]|0)!=32){break}J=J+ +h[D+552>>3];h[l>>3]=J}}while(0);aa=+h[D+560>>3]*J;h[l>>3]=aa;J=+h[E>>3]*+h[k>>3];h[k>>3]=J;D=c[j>>2]|0;X=D+496|0;Y=D+512|0;K=aa*+h[X>>3]+J*+h[Y>>3];ba=D+504|0;E=D+520|0;J=aa*+h[ba>>3]+J*+h[E>>3];U=D+488|0;aa=+h[U>>3]*+h[B>>3];h[B>>3]=aa;M=+h[U>>3]*+h[C>>3];h[C>>3]=M;L=aa*+h[X>>3]+M*+h[Y>>3];M=aa*+h[ba>>3]+M*+h[E>>3];E=c[x>>2]|0;b:do{if((E|0)==0){f=40}else{if((a[E]&1)!=0){break}while(1){E=c[E+4>>2]|0;if((E|0)==0){f=40;break b}if((a[E]&1)==0){}else{break}}}}while(0);if((f|0)==40){f=0;ba=c[e>>2]|0;md[c[(c[ba>>2]|0)+284>>2]&1](ba,D,H+ +h[D+592>>3],I+ +h[D+600>>3],K,J,L,M,c[t>>2]|0,A,c[v>>2]|0,c[u>>2]|0);D=c[j>>2]|0}WB(D,K,J);y=y-A|0;if((y|0)>0){z=z+A|0}else{break}}}else{while(1){A=xd[c[(c[m>>2]|0)+12>>2]&3](m,z,y,o,p,q,s,w,r,n)|0;D=c[j>>2]|0;ba=D+488|0;K=+h[ba>>3]*+h[l>>3];h[l>>3]=K;L=+h[k>>3]*+h[ba>>3]+ +h[D+544>>3];h[k>>3]=L;do{if((A|0)==1){if((a[z]|0)!=32){break}L=L+ +h[D+552>>3];h[k>>3]=L}}while(0);X=D+496|0;Y=D+512|0;J=K*+h[X>>3]+L*+h[Y>>3];ba=D+504|0;E=D+520|0;K=K*+h[ba>>3]+L*+h[E>>3];U=D+488|0;aa=+h[U>>3]*+h[B>>3];h[B>>3]=aa;L=+h[U>>3]*+h[C>>3];h[C>>3]=L;M=aa*+h[X>>3]+L*+h[Y>>3];L=aa*+h[ba>>3]+L*+h[E>>3];E=c[x>>2]|0;c:do{if((E|0)==0){f=49}else{if((a[E]&1)!=0){break}while(1){E=c[E+4>>2]|0;if((E|0)==0){f=49;break c}if((a[E]&1)==0){}else{break}}}}while(0);if((f|0)==49){f=0;ba=c[e>>2]|0;md[c[(c[ba>>2]|0)+284>>2]&1](ba,D,H+ +h[D+592>>3],I+ +h[D+600>>3],J,K,M,L,c[t>>2]|0,A,c[v>>2]|0,c[u>>2]|0);D=c[j>>2]|0}WB(D,J,K);y=y-A|0;if((y|0)>0){z=z+A|0}else{break}}}}}while(0);ba=c[e>>2]|0;if(!(jd[c[(c[ba>>2]|0)+12>>2]&511](ba)|0)){Y=d+24|0;Y=c[Y>>2]|0;Y=Y*10|0;ba=b+24|0;X=ba;X=c[X>>2]|0;Y=X+Y|0;c[ba>>2]=Y;i=g;return}Y=c[e>>2]|0;hd[c[(c[Y>>2]|0)+280>>2]&127](Y,c[j>>2]|0);Y=d+24|0;Y=c[Y>>2]|0;Y=Y*10|0;ba=b+24|0;X=ba;X=c[X>>2]|0;Y=X+Y|0;c[ba>>2]=Y;i=g;return}function Px(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;f=FW(120)|0;e=a+20|0;mx(f,c[a>>2]|0,b,c[e>>2]|0);c[e>>2]=f;i=d;return}function Qx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=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,O=0,P=0.0;g=i;p=i;i=i+8|0;C=i;i=i+8|0;D=C;F=i;i=i+8|0;B=F;A=i;i=i+8|0;H=i;i=i+8|0;I=H;M=i;i=i+8|0;v=i;i=i+8|0;G=i;i=i+16|0;n=G;L=i;i=i+16|0;m=L;w=i;i=i+256|0;r=i;i=i+16|0;o=r;u=i;i=i+16|0;q=u;c[G>>2]=13;E=n+8|0;c[E>>2]=0;c[E+4>>2]=0;c[L>>2]=13;K=m+8|0;c[K>>2]=0;c[K+4>>2]=0;c[r>>2]=13;s=o+8|0;c[s>>2]=0;c[s+4>>2]=0;c[u>>2]=13;t=q+8|0;c[t>>2]=0;y=t+4|0;c[y>>2]=0;c[M>>2]=0;c[v>>2]=0;Gd[c[(c[e>>2]|0)+80>>2]&255](e,M,v);J=jd[c[(c[e>>2]|0)+72>>2]&511](e)|0;Yu(J,161496,o,0)|0;j=c[r>>2]|0;if((j|0)==5){Of(o);Yu(J,161504,o,0)|0;j=c[r>>2]|0}if((j|0)==1){j=c[s>>2]|0;x=6}else if((j|0)==2){j=~~+h[o+8>>3];x=6}else{x=161}a:do{if((x|0)==6){Of(o);Yu(J,161512,o,0)|0;k=c[r>>2]|0;if((k|0)==5){Of(o);Yu(J,161520,o,0)|0;k=c[r>>2]|0}if((k|0)==1){k=c[s>>2]|0}else if((k|0)==2){k=~~+h[o+8>>3]}else{x=161;break}Of(o);if((j|0)<1|(k|0)<1){break}Yu(J,161528,o,0)|0;l=c[r>>2]|0;if((l|0)==5){Of(o);Yu(J,160112,o,0)|0;l=c[r>>2]|0}if((l|0)==0){l=(a[s]&1)!=0}else{l=0}Of(o);Yu(J,161544,o,0)|0;N=c[r>>2]|0;if((N|0)==5){Of(o);Yu(J,161560,o,0)|0;N=c[r>>2]|0}if((N|0)==0){N=(a[s]&1)!=0}else if((N|0)==5){N=0}else{x=161;break}Of(o);if((c[M>>2]|0)==0){Yu(J,161568,o,0)|0;O=c[r>>2]|0;if((O|0)==5){Of(o);Yu(J,161592,o,0)|0;O=c[r>>2]|0}if((O|0)==1){O=c[s>>2]|0}else{if(N){O=1}else{x=161;break}}c[M>>2]=O;Of(o)}b:do{if(N){if((c[M>>2]|0)!=1){break a}Yu(J,161600,o,0)|0;m=c[r>>2]|0;if((m|0)==5){Of(o);Yu(J,160288,o,0)|0;m=c[r>>2]|0}if((m|0)==5){m=0}else if((m|0)==6){ut(c[s>>2]|0,0,q)|0;m=c[u>>2]|0;do{if((m+ -1|0)>>>0<2){if((m|0)==1){P=+(c[t>>2]|0)}else{P=+h[t>>3]}if(P<.9){m=0;break}m=1}else{m=0}}while(0);Of(q)}else{x=161;break a}Of(o);n=c[b+116>>2]|0;c:do{if((n|0)!=0){if((a[n]&1)!=0){break b}while(1){n=c[n+4>>2]|0;if((n|0)==0){break c}if((a[n]&1)!=0){break b}}}}while(0);o=b+8|0;O=c[o>>2]|0;n=b+28|0;zd[c[(c[O>>2]|0)+312>>2]&1](O,c[n>>2]|0,d,e,j,k,m,l,f);O=c[o>>2]|0;if(!(Bd[c[(c[O>>2]|0)+44>>2]&255](O,c[n>>2]|0)|0)){break}O=b+17|0;a[O]=1;Bx(b,1);N=c[o>>2]|0;hd[c[(c[N>>2]|0)+48>>2]&127](N,c[n>>2]|0);a[O]=0}else{Yu(J,159208,o,0)|0;N=c[r>>2]|0;if((N|0)==5){Of(o);Yu(J,160104,o,0)|0;N=c[r>>2]|0}d:do{if((N|0)==4&f){O=c[b+20>>2]|0;N=c[s>>2]|0;e:do{if((O|0)==0){x=53}else{while(1){if((c[O+24>>2]|0)==7){if((c[(Yu(c[O+32>>2]|0,N,q,0)|0)>>2]|0)!=5){break}Of(q)}O=c[O+112>>2]|0;if((O|0)==0){x=53;break e}}if((c[u>>2]|0)==5){break}Of(o);$W(r|0,u|0,16)|0;break d}}while(0);if((x|0)==53){c[t>>2]=0;c[y>>2]=0;c[u>>2]=5}Of(q)}}while(0);do{if((c[r>>2]|0)==5){v=c[v>>2]|0;if((v|0)==3){N=FW(4)|0;vz(N);break}else if((v|0)==2){N=FW(4)|0;gz(N);break}else if((v|0)==1){N=FW(4)|0;Ty(N);break}else{Of(o);break a}}else{N=Jy(o,b)|0}}while(0);Of(o);if((N|0)==0){break a}Yu(J,161600,o,0)|0;if((c[r>>2]|0)==5){Of(o);Yu(J,160288,o,0)|0}v=FW(672)|0;mB(v,c[M>>2]|0,o,N);Of(o);if((a[v+664|0]&1)==0){if((v|0)==0){break a}nB(v);HW(v);break a}Yu(J,161608,n,0)|0;Yu(J,159992,m,0)|0;f:do{if((c[L>>2]|0)==8){if(f){break a}f=c[K>>2]|0;z=jd[c[(c[f>>2]|0)+72>>2]&511](f)|0;Yu(z,161496,o,0)|0;w=c[r>>2]|0;if((w|0)==5){Of(o);Yu(z,161504,o,0)|0;w=c[r>>2]|0}if((w|0)!=1){x=161;break a}w=c[s>>2]|0;Of(o);Yu(z,161512,o,0)|0;A=c[r>>2]|0;if((A|0)==5){Of(o);Yu(z,161520,o,0)|0;A=c[r>>2]|0}if((A|0)!=1){x=161;break a}A=c[s>>2]|0;Of(o);Yu(z,161528,o,0)|0;B=c[r>>2]|0;if((B|0)==5){Of(o);Yu(z,160112,o,0)|0;B=c[r>>2]|0}if((B|0)==0){B=(a[s]&1)!=0}else{B=0}Of(o);Yu(z,161568,o,0)|0;C=c[r>>2]|0;if((C|0)==5){Of(o);Yu(z,161592,o,0)|0;C=c[r>>2]|0}if((C|0)!=1){x=161;break a}C=c[s>>2]|0;Of(o);Yu(z,159208,o,0)|0;D=c[r>>2]|0;if((D|0)==5){Of(o);Yu(z,160104,o,0)|0;D=c[r>>2]|0}g:do{if((D|0)==4){D=c[b+20>>2]|0;s=c[s>>2]|0;h:do{if((D|0)==0){x=93}else{while(1){if((c[D+24>>2]|0)==7){if((c[(Yu(c[D+32>>2]|0,s,q,0)|0)>>2]|0)!=5){break}Of(q)}D=c[D+112>>2]|0;if((D|0)==0){x=93;break h}}if((c[u>>2]|0)==5){break}Of(o);$W(r|0,u|0,16)|0;break g}}while(0);if((x|0)==93){c[t>>2]=0;c[y>>2]=0;c[u>>2]=5}Of(q)}}while(0);s=Jy(o,b)|0;Of(o);if((s|0)==0){break a}if((jd[c[(c[s>>2]|0)+12>>2]&511](s)|0)!=0){break a}Yu(z,161600,o,0)|0;if((c[r>>2]|0)==5){Of(o);Yu(z,160288,o,0)|0}q=FW(672)|0;mB(q,C,o,s);Of(o);if((a[q+664|0]&1)==0){if((q|0)==0){break a}nB(q);HW(q);break a}o=c[b+116>>2]|0;i:do{if((o|0)==0){x=144}else{if((a[o]&1)!=0){break}do{o=c[o+4>>2]|0;if((o|0)==0){x=144;break i}}while((a[o]&1)==0)}}while(0);if((x|0)==144){O=c[b+8>>2]|0;vd[c[(c[O>>2]|0)+324>>2]&3](O,c[b+28>>2]|0,d,e,j,k,v,l,f,w,A,q,B)}if((q|0)==0){break}nB(q);HW(q)}else{y=c[G>>2]|0;j:do{if((y|0)==6){t=o+8|0;q=0;while(1){u=c[E>>2]|0;if(!((q|0)<(c[u+12>>2]|0)&(q|0)<64)){z=1;break j}ut(u,q,o)|0;u=c[r>>2]|0;if((u|0)==2){Qe(-1,161616,A);u=c[r>>2]|0;if((u|0)!=2){x=111;break}c[w+(q<<2)>>2]=~~+h[t>>3]}else if((u|0)==1){c[w+(q<<2)>>2]=c[s>>2]}else{x=113;break}Of(o);u=c[G>>2]|0;if((u|0)==6){q=q+1|0}else{x=106;break}}if((x|0)==106){c[H>>2]=u;c[I+4>>2]=6;Qe(0,162256,I);tc()}else if((x|0)==111){c[F>>2]=u;c[B+4>>2]=2;Qe(0,162256,B);tc()}else if((x|0)==113){c[C>>2]=u;Qe(-1,161688,D);Of(o);break a}}else if((y|0)==8){if(f){break a}x=c[E>>2]|0;B=jd[c[(c[x>>2]|0)+72>>2]&511](x)|0;Yu(B,161496,o,0)|0;y=c[r>>2]|0;if((y|0)==5){Of(o);Yu(B,161504,o,0)|0;y=c[r>>2]|0}if((y|0)!=1){x=161;break a}y=c[s>>2]|0;Of(o);Yu(B,161512,o,0)|0;z=c[r>>2]|0;if((z|0)==5){Of(o);Yu(B,161520,o,0)|0;z=c[r>>2]|0}if((z|0)!=1){x=161;break a}z=c[s>>2]|0;Of(o);Yu(B,161528,o,0)|0;A=c[r>>2]|0;if((A|0)==5){Of(o);Yu(B,160112,o,0)|0;A=c[r>>2]|0}if((A|0)==0){A=(a[s]&1)!=0}else{A=0}Of(o);Yu(B,161544,o,0)|0;C=c[r>>2]|0;if((C|0)==5){Of(o);Yu(B,161560,o,0)|0;C=c[r>>2]|0}if((C|0)!=0){x=161;break a}if((a[s]&1)==0){x=161;break a}Of(o);Yu(B,161600,o,0)|0;C=c[r>>2]|0;if((C|0)==5){Of(o);Yu(B,160288,o,0)|0;C=c[r>>2]|0}if((C|0)==6){ut(c[s>>2]|0,0,q)|0;p=c[u>>2]|0;do{if((p+ -1|0)>>>0<2){if((p|0)==1){P=+(c[t>>2]|0)}else{P=+h[t>>3]}if(P<.9){p=0;break}p=1}else{p=0}}while(0);Of(q)}else if((C|0)==5){p=0}else{x=161;break a}Of(o);o=c[b+116>>2]|0;k:do{if((o|0)!=0){if((a[o]&1)!=0){z=0;break j}while(1){o=c[o+4>>2]|0;if((o|0)==0){break k}if((a[o]&1)==0){}else{z=0;break j}}}}while(0);O=c[b+8>>2]|0;vd[c[(c[O>>2]|0)+320>>2]&3](O,c[b+28>>2]|0,d,e,j,k,v,l,x,y,z,p,A);break f}else{z=0}}while(0);o=c[b+116>>2]|0;l:do{if((o|0)!=0){if((a[o]&1)!=0){break f}while(1){o=c[o+4>>2]|0;if((o|0)==0){break l}if((a[o]&1)!=0){break f}}}}while(0);O=c[b+8>>2]|0;Ad[c[(c[O>>2]|0)+316>>2]&1](O,c[b+28>>2]|0,d,e,j,k,v,l,z?w:0,f)}}while(0);if((v|0)!=0){nB(v);HW(v)}Of(n);Of(m)}}while(0);e=da(k,j)|0;b=b+24|0;c[b>>2]=(c[b>>2]|0)+((e|0)>1e3?1e3:e);i=g;return}}while(0);if((x|0)==161){Of(o)}b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);Qe(b,161744,p);i=g;return}function Rx(b,d){b=b|0;d=d|0;var e=0,f=0,g=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,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;e=i;r=i;i=i+8|0;s=r;v=i;i=i+8|0;w=v;z=i;i=i+8|0;y=z;B=i;i=i+8|0;A=B;C=i;i=i+8|0;D=C;E=i;i=i+8|0;F=E;K=i;i=i+8|0;L=K;N=i;i=i+8|0;U=i;i=i+8|0;T=U;V=i;i=i+8|0;W=i;i=i+8|0;Z=i;i=i+8|0;O=Z;I=i;i=i+16|0;H=I;Q=i;i=i+16|0;P=Q;R=i;i=i+48|0;k=R;j=i;i=i+32|0;J=i;i=i+16|0;f=J;x=i;i=i+16|0;g=x;q=i;i=i+16|0;m=q;u=i;i=i+16|0;p=u;c[I>>2]=13;M=H+8|0;c[M>>2]=0;c[M+4>>2]=0;c[Q>>2]=13;S=P+8|0;c[S>>2]=0;c[S+4>>2]=0;c[J>>2]=13;G=f+8|0;c[G>>2]=0;c[G+4>>2]=0;c[x>>2]=13;t=g+8|0;c[t>>2]=0;c[t+4>>2]=0;c[q>>2]=13;q=m+8|0;c[q>>2]=0;c[q+4>>2]=0;c[u>>2]=13;q=p+8|0;c[q>>2]=0;c[q+4>>2]=0;l=b+112|0;if((c[l>>2]|0)>20){i=e;return}Y=c[d>>2]|0;if((Y|0)!=8){c[Z>>2]=Y;c[O+4>>2]=8;Qe(0,162256,O);tc()}O=c[d+8>>2]|0;O=jd[c[(c[O>>2]|0)+72>>2]&511](O)|0;Yu(O,160360,g,0)|0;Y=c[x>>2]|0;if((Y|0)==1){if((c[t>>2]|0)!=1){X=6}}else if((Y|0)!=5){X=6}if((X|0)==6){X=c[b+120>>2]|0;do{if((X|0)==0){X=-1}else{X=c[X+4>>2]|0;if((c[X+16>>2]|0)!=8){X=-1;break}X=c[X+24>>2]|0;X=jd[c[(c[X>>2]|0)+48>>2]&511](X)|0}}while(0);Qe(X,160376,W)}Of(g);Yu(O,160400,P,0)|0;if((c[Q>>2]|0)!=6){Of(P);b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);Qe(b,160408,V);i=e;return}V=6;W=0;while(1){if((V|0)!=6){X=17;break}ut(c[S>>2]|0,W,g)|0;V=c[x>>2]|0;if((V+ -1|0)>>>0>=2){X=24;break}if((V|0)==1){_=+(c[t>>2]|0)}else{_=+h[t>>3]}h[j+(W<<3)>>3]=_;Of(g);W=W+1|0;if((W|0)>=4){X=28;break}V=c[Q>>2]|0}if((X|0)==17){c[U>>2]=V;c[T+4>>2]=6;Qe(0,162256,T);tc()}else if((X|0)==24){Of(g);b=c[b+120>>2]|0;do{if((b|0)==0){b=-1}else{b=c[b+4>>2]|0;if((c[b+16>>2]|0)!=8){b=-1;break}b=c[b+24>>2]|0;b=jd[c[(c[b>>2]|0)+48>>2]&511](b)|0}}while(0);Qe(b,161768,N);i=e;return}else if((X|0)==28){Of(P);Yu(O,160472,H,0)|0;a:do{if((c[I>>2]|0)==6){P=6;N=0;while(1){if((P|0)!=6){break}ut(c[M>>2]|0,N,g)|0;P=c[x>>2]|0;if((P+ -1|0)>>>0<2){if((P|0)==1){_=+(c[t>>2]|0)}else{_=+h[t>>3]}h[k+(N<<3)>>3]=_}else{h[k+(N<<3)>>3]=0.0}Of(g);N=N+1|0;if((N|0)>=6){break a}P=c[I>>2]|0}c[K>>2]=P;c[L+4>>2]=6;Qe(0,162256,L);tc()}else{h[R>>3]=1.0;bX(k+8|0,0,16)|0;h[k+24>>3]=1.0;bX(k+32|0,0,16)|0}}while(0);Of(H);Yu(O,160480,f,0)|0;if((c[J>>2]|0)==7){G=c[G>>2]|0}else{G=0}if((c[(Yu(O,160096,g,0)|0)>>2]|0)==7){H=c[x>>2]|0;if((H|0)!=7){c[E>>2]=H;c[F+4>>2]=7;Qe(0,162256,F);tc()}E=Yu(c[t>>2]|0,160008,m,0)|0;do{if((c[E>>2]|0)==4){if((Qc(c[E+8>>2]|0,161800)|0)!=0){C=0;o=0;n=0;p=0;break}E=c[x>>2]|0;if((E|0)!=7){c[C>>2]=E;c[D+4>>2]=7;Qe(0,162256,D);tc()}if((c[(Yu(c[t>>2]|0,160104,p,0)|0)>>2]|0)==5){C=0}else{C=Jy(p,b)|0}Of(p);D=c[x>>2]|0;if((D|0)!=7){c[B>>2]=D;c[A+4>>2]=7;Qe(0,162256,A);tc()}do{if((c[(Yu(c[t>>2]|0,160112,p,0)|0)>>2]|0)==0){A=c[u>>2]|0;if((A|0)==0){o=(a[q]&1)!=0;break}else{c[z>>2]=A;c[y+4>>2]=0;Qe(0,162256,y);tc()}}else{o=0}}while(0);Of(p);x=c[x>>2]|0;if((x|0)!=7){c[v>>2]=x;c[w+4>>2]=7;Qe(0,162256,w);tc()}do{if((c[(Yu(c[t>>2]|0,160120,p,0)|0)>>2]|0)==0){t=c[u>>2]|0;if((t|0)==0){n=(a[q]&1)!=0;break}else{c[r>>2]=t;c[s+4>>2]=0;Qe(0,162256,s);tc()}}else{n=0}}while(0);Of(p);p=1}else{C=0;o=0;n=0;p=0}}while(0);Of(m)}else{C=0;o=0;n=0;p=0}Of(g);c[l>>2]=(c[l>>2]|0)+1;Ax(b,d,G,k,j,p,0,C,o,n,0,0,0);c[l>>2]=(c[l>>2]|0)+ -1;if((C|0)!=0){fd[c[(c[C>>2]|0)+4>>2]&511](C)}Of(f);i=e;return}}function Sx(a){a=a|0;var b=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;d=i;e=i;i=i+8|0;j=i;i=i+8|0;g=j;o=i;i=i+8|0;m=i;i=i+16|0;b=m;h=i;i=i+16|0;f=h;c[m>>2]=13;l=b+8|0;c[l>>2]=0;c[l+4>>2]=0;c[h>>2]=13;n=f+8|0;c[n>>2]=0;c[n+4>>2]=0;Jf(b,c[a>>2]|0)|0;a=a+120|0;cG(c[a>>2]|0,f,0,0,0,0,0)|0;while(1){p=c[h>>2]|0;if((p|0)==4){p=Ge(c[n>>2]|0)|0;Of(f);cG(c[a>>2]|0,f,0,0,0,0,0)|0;if(((c[h>>2]|0)+ -11|0)>>>0<2){k=13;break}q=c[m>>2]|0;if((q|0)!=7){k=10;break}Tu(c[l>>2]|0,p,f)}else if((p|0)==10){if((Qc(c[n>>2]|0,161912)|0)==0){break}else{k=4}}else if((p|0)==12){k=14;break}else{k=4}if((k|0)==4){k=0;p=c[a>>2]|0;do{if((p|0)==0){p=-1}else{p=c[p+4>>2]|0;if((c[p+16>>2]|0)!=8){p=-1;break}p=c[p+24>>2]|0;p=jd[c[(c[p>>2]|0)+48>>2]&511](p)|0}}while(0);Qe(p,161920,o);Of(f)}cG(c[a>>2]|0,f,0,0,0,0,0)|0}if((k|0)==10){c[j>>2]=q;c[g+4>>2]=7;Qe(0,162256,g);tc()}else if((k|0)==13){Fe(p);if((c[h>>2]|0)==12){k=14}}if((k|0)==14){g=c[a>>2]|0;do{if((g|0)==0){g=-1}else{g=c[g+4>>2]|0;if((c[g+16>>2]|0)!=8){g=-1;break}g=c[g+24>>2]|0;g=jd[c[(c[g>>2]|0)+48>>2]&511](g)|0}}while(0);Qe(g,161976,e);Of(f);Of(b);q=0;i=d;return q|0}Of(f);f=(c[a>>2]|0)+4|0;e=c[f>>2]|0;do{if((c[e+16>>2]|0)==8){if((c[e+24>>2]|0)==0){break}e=FW(40)|0;f=c[f>>2]|0;if((c[f+16>>2]|0)==8){f=c[f+24>>2]|0}else{f=0}$j(e,f,b,0,0);q=qj(e,b)|0;i=d;return q|0}}while(0);Of(b);q=0;i=d;return q|0}function Tx(a,b,d,e,f,g,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;j=+j;k=+k;var l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0.0,ba=0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0;l=i;L=i;i=i+16|0;K=L;N=i;i=i+8|0;J=N;V=i;i=i+8|0;Y=i;i=i+8|0;X=Y;$=i;i=i+8|0;M=i;i=i+16|0;S=M;Z=i;i=i+16|0;W=Z;z=i;i=i+16|0;x=z;R=i;i=i+16|0;U=R;B=i;i=i+48|0;w=B;O=i;i=i+32|0;y=O;v=i;i=i+120|0;c[M>>2]=13;P=S+8|0;c[P>>2]=0;c[P+4>>2]=0;c[Z>>2]=13;_=W+8|0;c[_>>2]=0;c[_+4>>2]=0;c[z>>2]=13;A=x+8|0;c[A>>2]=0;c[A+4>>2]=0;c[R>>2]=13;Q=U+8|0;c[Q>>2]=0;c[Q+4>>2]=0;m=a+28|0;q=c[m>>2]|0;ha=+h[q+16>>3];ea=+h[q+40>>3];ia=+h[q+24>>3];fa=+h[q+32>>3];ja=1.0/(ha*ea-ia*fa);u=ea*ja;s=-0.0-ia*ja;r=-0.0-fa*ja;t=ha*ja;da=+h[q+56>>3];ca=+h[q+48>>3];ea=ja*(fa*da-ea*ca);da=ja*(ia*ca-ha*da);q=a+64|0;ha=+h[q>>3];n=a+80|0;ca=+h[n>>3];ia=+h[a+96>>3];ja=ia+(ha*f+ca*g);o=a+72|0;fa=+h[o>>3];p=a+88|0;aa=+h[p>>3];ga=+h[a+104>>3];g=ga+(fa*f+aa*g);f=ea+(u*ja+g*r);g=da+(ja*s+t*g);ca=ia+(ha*j+ca*k);aa=ga+(fa*j+aa*k);j=ea+(u*ca+aa*r);aa=da+(ca*s+t*aa);F=f>j;k=F?f:j;j=F?j:f;F=g>aa;f=F?aa:g;g=F?g:aa;do{if((c[b>>2]|0)==8){F=c[b+8>>2]|0;F=jd[c[(c[F>>2]|0)+72>>2]&511](F)|0;Yu(F,160400,W,0)|0;if((c[Z>>2]|0)!=6){Of(W);m=c[a+120>>2]|0;do{if((m|0)==0){m=-1}else{m=c[m+4>>2]|0;if((c[m+16>>2]|0)!=8){m=-1;break}m=c[m+24>>2]|0;m=jd[c[(c[m>>2]|0)+48>>2]&511](m)|0}}while(0);Qe(m,160408,$);i=l;return}$=6;ba=0;while(1){if(($|0)!=6){Z=9;break}ut(c[_>>2]|0,ba,U)|0;$=c[R>>2]|0;if(($+ -1|0)>>>0>=2){Z=16;break}if(($|0)==1){aa=+(c[Q>>2]|0)}else{aa=+h[Q>>3]}h[y+(ba<<3)>>3]=aa;Of(U);ba=ba+1|0;if((ba|0)>=4){Z=20;break}$=c[Z>>2]|0}if((Z|0)==9){c[Y>>2]=$;c[X+4>>2]=6;Qe(0,162256,X);tc()}else if((Z|0)==16){Of(U);m=c[a+120>>2]|0;do{if((m|0)==0){m=-1}else{m=c[m+4>>2]|0;if((c[m+16>>2]|0)!=8){m=-1;break}m=c[m+24>>2]|0;m=jd[c[(c[m>>2]|0)+48>>2]&511](m)|0}}while(0);Qe(m,161768,V);i=l;return}else if((Z|0)==20){Of(W);Yu(F,160472,S,0)|0;do{if((c[M>>2]|0)==6){if((c[(c[P>>2]|0)+12>>2]|0)>5){W=6;V=0}else{Z=31;break}while(1){if((W|0)!=6){Z=23;break}ut(c[P>>2]|0,V,U)|0;W=c[R>>2]|0;if((W+ -1|0)>>>0>=2){Z=25;break}if((W|0)==1){aa=+(c[Q>>2]|0)}else{aa=+h[Q>>3]}h[w+(V<<3)>>3]=aa;Of(U);V=V+1|0;if((V|0)>=6){Z=32;break}W=c[M>>2]|0}if((Z|0)==23){c[N>>2]=W;c[J+4>>2]=6;Qe(0,162256,J);tc()}else if((Z|0)==25){c[L>>2]=W;c[K+4>>2]=1;c[K+8>>2]=2;Qe(0,162328,K);tc()}else if((Z|0)==32){C=+h[w+40>>3];E=+h[w+24>>3];D=+h[w+8>>3];G=+h[w+32>>3];I=+h[w+16>>3];H=+h[B>>3];break}}else{Z=31}}while(0);if((Z|0)==31){h[B>>3]=1.0;bX(w+8|0,0,16)|0;h[w+24>>3]=1.0;bX(w+32|0,0,16)|0;C=0.0;E=1.0;D=0.0;G=0.0;I=0.0;H=1.0}Of(S);ia=+h[O>>3];aa=+h[y+8>>3];N=w+16|0;J=w+32|0;ca=G+(ia*H+aa*I);M=w+8|0;K=w+24|0;L=w+40|0;aa=C+(ia*D+aa*E);ia=+h[y+16>>3];ja=+h[y+24>>3];G=G+(H*ia+I*ja);D=C+(D*ia+E*ja);O=ca>G;C=O?ca:G;E=O?G:ca;O=aa>D;G=O?aa:D;D=O?D:aa;if(C==E){C=1.0}else{C=(k-j)/(C-E)}if(G==D){G=1.0}else{G=(g-f)/(G-D)}h[B>>3]=C*+h[B>>3];h[N>>3]=C*+h[N>>3];h[J>>3]=j+C*(+h[J>>3]-E);h[M>>3]=G*+h[M>>3];h[K>>3]=G*+h[K>>3];h[L>>3]=f+G*(+h[L>>3]-D);Yu(F,160480,x,0)|0;if((c[z>>2]|0)==7){z=c[A>>2]|0}else{z=0}Ax(a,b,z,w,y,0,0,0,0,0,0,0,0);Of(x);break}}}while(0);if((d|0)==0){i=l;return}if(+wd[c[(c[d>>2]|0)+12>>2]&1](d)<=0.0){i=l;return}ba=c[(c[m>>2]|0)+120>>2]|0;if((jd[c[(c[ba>>2]|0)+12>>2]&511](ba)|0)!=2){OB(c[m>>2]|0,0);$=c[m>>2]|0;ba=FW(4)|0;gz(ba);MB($,ba);ba=c[a+8>>2]|0;hd[c[(c[ba>>2]|0)+136>>2]&127](ba,c[m>>2]|0)}do{if((e|0)==0){w=0;b=0;e=0}else{if((c[e+32>>2]|0)!=3){w=0;b=0;e=0;break}w=~~(+h[e+16>>3]*65536.0);b=~~(+h[e+8>>3]*65536.0);e=~~(+h[e>>3]*65536.0)}}while(0);ba=c[m>>2]|0;c[ba+252>>2]=e;c[ba+256>>2]=b;c[ba+260>>2]=w;$W(ba+264|0,v|0,116)|0;v=a+8|0;ba=c[v>>2]|0;hd[c[(c[ba>>2]|0)+144>>2]&127](ba,c[m>>2]|0);ha=+h[q>>3]+ +h[n>>3];ia=+h[o>>3]+ +h[p>>3];ja=u*ha+ia*r;r=ha*s+t*ia;r=+T(+((ja*ja+r*r)*.5));p=c[m>>2]|0;h[p+432>>3]=r*+wd[c[(c[d>>2]|0)+12>>2]&1](d);p=c[v>>2]|0;hd[c[(c[p>>2]|0)+116>>2]&127](p,c[m>>2]|0);p=jd[c[(c[d>>2]|0)+16>>2]&511](d)|0;q=jd[c[(c[d>>2]|0)+20>>2]&511](d)|0;if((jd[c[(c[d>>2]|0)+24>>2]&511](d)|0)==1&(p|0)>0){n=ye(p,8)|0;o=0;do{h[n+(o<<3)>>3]=r*+h[q+(o<<3)>>3];o=o+1|0;}while((o|0)<(p|0));RB(c[m>>2]|0,n,p,0.0);ba=c[v>>2]|0;hd[c[(c[ba>>2]|0)+96>>2]&127](ba,c[m>>2]|0)}SB(c[m>>2]|0);n=c[m>>2]|0;ba=c[v>>2]|0;ba=jd[c[(c[ba>>2]|0)+8>>2]&511](ba)|0;ja=ba?f:g;ba=c[n+588>>2]|0;h[n+592>>3]=j;h[n+600>>3]=ja;uB(ba,j,ja);n=c[m>>2]|0;ba=c[v>>2]|0;ba=jd[c[(c[ba>>2]|0)+8>>2]&511](ba)|0;ja=ba?f:g;ba=c[n+588>>2]|0;h[n+592>>3]=k;h[n+600>>3]=ja;vB(ba,k,ja);if((jd[c[(c[d>>2]|0)+24>>2]&511](d)|0)!=4){d=c[m>>2]|0;ba=c[v>>2]|0;ba=jd[c[(c[ba>>2]|0)+8>>2]&511](ba)|0;ja=ba?g:f;ba=c[d+588>>2]|0;h[d+592>>3]=k;h[d+600>>3]=ja;vB(ba,k,ja);d=c[m>>2]|0;ba=c[v>>2]|0;ba=jd[c[(c[ba>>2]|0)+8>>2]&511](ba)|0;ja=ba?g:f;ba=c[d+588>>2]|0;h[d+592>>3]=j;h[d+600>>3]=ja;vB(ba,j,ja);ba=c[m>>2]|0;_=ba+588|0;xB(c[_>>2]|0);_=c[_>>2]|0;$=_+28|0;_=_+24|0;Z=c[(c[_>>2]|0)+((c[$>>2]|0)+ -1<<2)>>2]|0;h[ba+592>>3]=+h[(c[Z>>2]|0)+((c[Z+12>>2]|0)+ -1<<3)>>3];$=c[(c[_>>2]|0)+((c[$>>2]|0)+ -1<<2)>>2]|0;h[ba+600>>3]=+h[(c[$+4>>2]|0)+((c[$+12>>2]|0)+ -1<<3)>>3]}ba=c[v>>2]|0;hd[c[(c[ba>>2]|0)+212>>2]&127](ba,c[m>>2]|0);i=l;return}function Ux(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0;j=i;l=i;i=i+8|0;k=l;x=i;i=i+8|0;o=x;y=i;i=i+8|0;q=y;t=i;i=i+8|0;r=t;B=i;i=i+8|0;v=B;z=i;i=i+8|0;A=z;n=i;i=i+8|0;f=n;D=i;i=i+16|0;h=D;s=i;i=i+8|0;C=i;i=i+8|0;u=i;i=i+8|0;p=i;i=i+8|0;w=i;i=i+8|0;m=i;i=i+8|0;c[D>>2]=13;E=h+8|0;c[E>>2]=0;c[E+4>>2]=0;Yu(e,162408,h,0)|0;if((c[D>>2]|0)==4){g=FW(32)|0;fe(g,c[E>>2]|0)}else{g=0}Of(h);Yu(e,162424,h,0)|0;F=162512;a:do{if((c[D>>2]|0)==4){F=c[E>>2]|0;do{if((Qc(F|0,162432)|0)!=0){if((Qc(F|0,162440)|0)==0){break}if((Qc(F|0,162448)|0)==0){F=FW(3544)|0;A=d;D=c[A+4>>2]|0;E=C;c[E>>2]=c[A>>2];c[E+4>>2]=D;$W(B|0,C|0,8)|0;by(F,a,b,v,g,2,e);Of(h);i=j;return F|0}if((Qc(F|0,162456)|0)==0){F=FW(3544)|0;C=d;D=c[C+4>>2]|0;E=u;c[E>>2]=c[C>>2];c[E+4>>2]=D;$W(t|0,u|0,8)|0;by(F,a,b,r,g,4,e);Of(h);i=j;return F|0}if((Qc(F|0,162464)|0)==0){F=FW(3544)|0;C=d;D=c[C+4>>2]|0;E=p;c[E>>2]=c[C>>2];c[E+4>>2]=D;$W(y|0,p|0,8)|0;by(F,a,b,q,g,5,e);Of(h);i=j;return F|0}if((Qc(F|0,162480)|0)!=0){break a}F=FW(232)|0;C=d;D=c[C+4>>2]|0;E=w;c[E>>2]=c[C>>2];c[E+4>>2]=D;$W(x|0,w|0,8)|0;ky(F,a,b,o,g,e);Of(h);i=j;return F|0}}while(0);F=FW(3544)|0;C=d;D=c[C+4>>2]|0;E=s;c[E>>2]=c[C>>2];c[E+4>>2]=D;$W(z|0,s|0,8)|0;by(F,a,b,A,g,1,e);Of(h);i=j;return F|0}}while(0);c[n>>2]=F;Qe(-1,162488,f);F=FW(3544)|0;C=d;D=c[C+4>>2]|0;E=m;c[E>>2]=c[C>>2];c[E+4>>2]=D;$W(l|0,m|0,8)|0;by(F,a,b,k,g,0,e);Of(h);i=j;return F|0}function Vx(a){a=a|0;var b=0;b=i;Wx(a);HW(a);i=b;return}function Wx(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=162528;d=c[a+8>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+24>>2]|0;if((d|0)!=0){ke(d);HW(d)}e=c[a+36>>2]|0;d=a+20|0;do{if((e|0)!=0){if((e|0)==(c[d>>2]|0)){break}ke(e);HW(e)}}while(0);d=c[d>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+48>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+60>>2]|0;if((d|0)!=0){ke(d);HW(d)}a=c[a+4>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function Xx(a){a=a|0;a=a+168|0;c[a>>2]=(c[a>>2]|0)+1;i=i;return}function Yx(a){a=a|0;var b=0,d=0,e=0;b=i;e=a+168|0;d=(c[e>>2]|0)+ -1|0;c[e>>2]=d;if((d|0)!=0|(a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+20>>2]&511](a);i=b;return}function Zx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=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,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,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0.0;q=i;n=i;i=i+16|0;m=n;r=i;i=i+8|0;e=r;u=i;i=i+8|0;t=u;y=i;i=i+8|0;x=y;A=i;i=i+8|0;z=A;D=i;i=i+8|0;E=D;X=i;i=i+8|0;_=X;H=i;i=i+8|0;T=i;i=i+8|0;U=T;I=i;i=i+8|0;J=i;i=i+8|0;W=i;i=i+8|0;Q=W;M=i;i=i+8|0;L=i;i=i+8|0;R=i;i=i+8|0;Y=R;O=i;i=i+8|0;P=i;i=i+8|0;S=i;i=i+8|0;$=S;N=i;i=i+8|0;K=i;i=i+8|0;V=i;i=i+8|0;Z=V;da=i;i=i+8|0;ca=da;ea=i;i=i+8|0;fa=ea;ga=i;i=i+8|0;ha=i;i=i+8|0;ia=ha;ja=i;i=i+8|0;ka=ja;ma=i;i=i+8|0;la=i;i=i+8|0;na=i;i=i+8|0;oa=na;pa=i;i=i+8|0;qa=pa;ra=i;i=i+8|0;ta=i;i=i+8|0;sa=ta;ua=i;i=i+8|0;wa=i;i=i+8|0;va=wa;ya=i;i=i+8|0;xa=ya;Ba=i;i=i+8|0;za=i;i=i+8|0;Aa=za;Da=i;i=i+8|0;Ca=Da;Ea=i;i=i+8|0;Fa=Ea;Ia=i;i=i+8|0;Ha=Ia;w=i;i=i+16|0;o=w;l=i;i=i+16|0;j=l;g=i;i=i+16|0;p=g;aa=i;i=i+16|0;F=aa;c[w>>2]=13;v=o+8|0;c[v>>2]=0;c[v+4>>2]=0;c[l>>2]=13;f=j+8|0;c[f>>2]=0;c[f+4>>2]=0;c[g>>2]=13;s=p+8|0;c[s>>2]=0;c[s+4>>2]=0;c[aa>>2]=13;ba=F+8|0;c[ba>>2]=0;c[ba+4>>2]=0;Ga=a+44|0;c[Ga>>2]=2;G=a+52|0;c[G>>2]=-1;c[a+56>>2]=-1;B=a+144|0;h[B>>3]=0.0;if((c[(Yu(d,162552,o,0)|0)>>2]|0)!=7){Of(o);i=q;return}d=c[w>>2]|0;if((d|0)!=7){c[Ia>>2]=d;c[Ha+4>>2]=7;Qe(0,166192,Ha);tc()}do{if((c[(Yu(c[v>>2]|0,162568,j,0)|0)>>2]|0)==1){Ha=c[l>>2]|0;if((Ha|0)==1){c[Ga>>2]=c[f>>2];break}else{c[Ea>>2]=Ha;c[Fa+4>>2]=1;Qe(0,166192,Fa);tc()}}}while(0);Of(j);Ea=c[w>>2]|0;if((Ea|0)!=7){c[Da>>2]=Ea;c[Ca+4>>2]=7;Qe(0,166192,Ca);tc()}Yu(c[v>>2]|0,162576,j,0)|0;if((c[l>>2]|0)==4){d=FW(32)|0;fe(d,c[f>>2]|0);Ca=a+48|0;c[Ca>>2]=d}else{Ca=a+48|0}Of(j);if((c[Ca>>2]|0)==0){Da=c[w>>2]|0;if((Da|0)!=7){c[za>>2]=Da;c[Aa+4>>2]=7;Qe(0,166192,Aa);tc()}Yu(c[v>>2]|0,162592,j,0)|0;if((c[l>>2]|0)==4){d=FW(32)|0;fe(d,c[f>>2]|0);c[Ca>>2]=d;Qe(-1,162608,Ba)}Of(j)}za=c[w>>2]|0;if((za|0)!=7){c[ya>>2]=za;c[xa+4>>2]=7;Qe(0,166192,xa);tc()}Yu(c[v>>2]|0,162704,j,0)|0;if((c[l>>2]|0)==3){d=FW(32)|0;ie(d,c[f>>2]|0);c[a+24>>2]=d}Of(j);xa=c[w>>2]|0;if((xa|0)!=7){c[wa>>2]=xa;c[va+4>>2]=7;Qe(0,166192,va);tc()}Yu(c[v>>2]|0,162720,j,0)|0;do{if((c[l>>2]|0)==4){va=c[f>>2]|0;if((Qc(va|0,162736)|0)==0){c[a+28>>2]=1;break}if((Qc(va|0,162752)|0)==0){c[a+28>>2]=2;break}if((Qc(va|0,162768)|0)==0){c[a+28>>2]=3;break}if((Qc(va|0,162784)|0)==0){c[a+28>>2]=4;break}if((Qc(va|0,162800)|0)==0){c[a+28>>2]=5;break}if((Qc(va|0,162808)|0)==0){c[a+28>>2]=6;break}if((Qc(va|0,162824)|0)==0){c[a+28>>2]=7;break}if((Qc(va|0,162840)|0)==0){c[a+28>>2]=8;break}if((Qc(va|0,162856)|0)==0){c[a+28>>2]=9;break}else{Qe(-1,162872,ua);break}}}while(0);Of(j);ua=c[w>>2]|0;if((ua|0)!=7){c[ta>>2]=ua;c[sa+4>>2]=7;Qe(0,166192,sa);tc()}Yu(c[v>>2]|0,162896,j,0)|0;sa=c[l>>2]|0;do{if((sa+ -1|0)>>>0<2){sa=(sa|0)==1;if(sa){d=c[f>>2]|0;ta=d;Ja=+(d|0)}else{Ja=+h[f>>3];h[k>>3]=Ja;ta=c[k>>2]|0}if(Ja==100.0){c[a+32>>2]=1;break}if(sa){ua=ta;Ja=+(ta|0)}else{Ja=+h[f>>3];h[k>>3]=Ja;ua=c[k>>2]|0}if(Ja==200.0){c[a+32>>2]=2;break}if(sa){ta=ua;Ja=+(ua|0)}else{Ja=+h[f>>3];h[k>>3]=Ja;ta=c[k>>2]|0}if(Ja==300.0){c[a+32>>2]=3;break}if(sa){ua=ta;Ja=+(ta|0)}else{Ja=+h[f>>3];h[k>>3]=Ja;ua=c[k>>2]|0}if(Ja==400.0){c[a+32>>2]=4;break}if(sa){ta=ua;Ja=+(ua|0)}else{Ja=+h[f>>3];h[k>>3]=Ja;ta=c[k>>2]|0}if(Ja==500.0){c[a+32>>2]=5;break}if(sa){ua=ta;Ja=+(ta|0)}else{Ja=+h[f>>3];h[k>>3]=Ja;ua=c[k>>2]|0}if(Ja==600.0){c[a+32>>2]=6;break}if(sa){ta=ua;Ja=+(ua|0)}else{Ja=+h[f>>3];h[k>>3]=Ja;ta=c[k>>2]|0}if(Ja==700.0){c[a+32>>2]=7;break}if(sa){ua=ta;Ja=+(ta|0)}else{Ja=+h[f>>3];h[k>>3]=Ja;ua=c[k>>2]|0}if(Ja==800.0){c[a+32>>2]=8;break}if(sa){Ja=+(ua|0)}else{Ja=+h[f>>3]}if(Ja==900.0){c[a+32>>2]=9;break}else{Qe(-1,162912,ra);break}}}while(0);Of(j);ra=c[w>>2]|0;if((ra|0)!=7){c[pa>>2]=ra;c[qa+4>>2]=7;Qe(0,166192,qa);tc()}do{if((c[(Zu(c[v>>2]|0,162936,j)|0)>>2]|0)==9){pa=c[l>>2]|0;if((pa|0)!=9){c[na>>2]=pa;c[oa+4>>2]=9;Qe(0,166192,oa);tc()}Ia=f;d=c[Ia+4>>2]|0;na=G;c[na>>2]=c[Ia>>2];c[na+4>>2]=d;na=a+40|0;if((c[na>>2]|0)==1){break}Qe(-1,162952,la);if(jd[c[c[a>>2]>>2]&511](a)|0){Qe(-1,163008,ma);c[na>>2]=7;break}else{c[na>>2]=1;break}}}while(0);Of(j);do{if((c[G>>2]|0)==-1){la=c[w>>2]|0;if((la|0)!=7){c[ja>>2]=la;c[ka+4>>2]=7;Qe(0,166192,ka);tc()}if((c[(Zu(c[v>>2]|0,163064,j)|0)>>2]|0)!=9){break}ja=c[l>>2]|0;if((ja|0)!=9){c[ha>>2]=ja;c[ia+4>>2]=9;Qe(0,166192,ia);tc()}Ia=f;d=c[Ia+4>>2]|0;ha=G;c[ha>>2]=c[Ia>>2];c[ha+4>>2]=d;ha=a+40|0;d=c[ha>>2]|0;if((d|0)==10|(d|0)==5){break}Qe(-1,162952,ga);d=jd[c[c[a>>2]>>2]&511](a)|0;c[ha>>2]=d?10:5}}while(0);Of(j);do{if((c[G>>2]|0)==-1){ga=c[w>>2]|0;if((ga|0)!=7){c[ea>>2]=ga;c[fa+4>>2]=7;Qe(0,166192,fa);tc()}if((c[(Zu(c[v>>2]|0,163080,j)|0)>>2]|0)!=9){break}if((c[(Nf(j,b,p,0)|0)>>2]|0)==8){ea=c[g>>2]|0;if((ea|0)!=8){c[da>>2]=ea;c[ca+4>>2]=8;Qe(0,166192,ca);tc()}ca=c[s>>2]|0;Yu(jd[c[(c[ca>>2]|0)+72>>2]&511](ca)|0,162424,F,0)|0;ca=162512;do{if((c[aa>>2]|0)==4){ca=c[ba>>2]|0;if((Qc(ca|0,162432)|0)==0){H=c[l>>2]|0;if((H|0)!=9){c[V>>2]=H;c[Z+4>>2]=9;Qe(0,166192,Z);tc()}Ia=f;d=c[Ia+4>>2]|0;c[G>>2]=c[Ia>>2];c[G+4>>2]=d;G=a+40|0;if((c[G>>2]|0)==1){break}Qe(-1,162952,K);if(jd[c[c[a>>2]>>2]&511](a)|0){Qe(-1,163096,N);c[G>>2]=7;break}else{c[G>>2]=1;break}}if((Qc(ca|0,162448)|0)==0){H=c[l>>2]|0;if((H|0)!=9){c[S>>2]=H;c[$+4>>2]=9;Qe(0,166192,$);tc()}Ia=f;d=c[Ia+4>>2]|0;c[G>>2]=c[Ia>>2];c[G+4>>2]=d;G=a+40|0;if(((c[G>>2]|0)+ -1|0)>>>0>=2){Qe(-1,162952,P)}if(jd[c[c[a>>2]>>2]&511](a)|0){Qe(-1,163152,O);c[G>>2]=8;break}else{c[G>>2]=2;break}}if((Qc(ca|0,162464)|0)==0){H=c[l>>2]|0;if((H|0)!=9){c[R>>2]=H;c[Y+4>>2]=9;Qe(0,166192,Y);tc()}Ia=f;d=c[Ia+4>>2]|0;c[G>>2]=c[Ia>>2];c[G+4>>2]=d;G=a+40|0;if((c[G>>2]|0)==5){break}Qe(-1,162952,L);if(jd[c[c[a>>2]>>2]&511](a)|0){Qe(-1,163208,M);c[G>>2]=10;break}else{c[G>>2]=5;break}}if((Qc(ca|0,163264)|0)==0){H=c[l>>2]|0;if((H|0)!=9){c[W>>2]=H;c[Q+4>>2]=9;Qe(0,166192,Q);tc()}Ia=f;d=c[Ia+4>>2]|0;c[G>>2]=c[Ia>>2];c[G+4>>2]=d;G=a+40|0;if((c[G>>2]|0)!=7){Qe(-1,162952,J)}if(jd[c[c[a>>2]>>2]&511](a)|0){c[G>>2]=8;break}else{Qe(-1,163280,I);c[G>>2]=2;break}}if((Qc(ca|0,163344)|0)!=0){C=158;break}I=c[l>>2]|0;if((I|0)!=9){c[T>>2]=I;c[U+4>>2]=9;Qe(0,166192,U);tc()}d=f;I=c[d+4>>2]|0;c[G>>2]=c[d>>2];c[G+4>>2]=I;G=a+40|0;I=c[G>>2]|0;if((I|0)==1){c[G>>2]=3;break}else if((I|0)==7){c[G>>2]=9;break}else if((I|0)==10){c[G>>2]=11;break}else if((I|0)==5){c[G>>2]=6;break}else{Qe(-1,162952,H);break}}else{C=158}}while(0);if((C|0)==158){c[X>>2]=ca;Qe(-1,163360,_)}Of(F)}Of(p)}}while(0);Of(j);C=c[w>>2]|0;if((C|0)!=7){c[D>>2]=C;c[E+4>>2]=7;Qe(0,166192,E);tc()}Yu(c[v>>2]|0,163392,j,0)|0;C=c[l>>2]|0;if((C+ -1|0)>>>0<2){if((C|0)==1){Ja=+(c[f>>2]|0)}else{Ja=+h[f>>3]}h[B>>3]=Ja}Of(j);B=c[w>>2]|0;if((B|0)!=7){c[A>>2]=B;c[z+4>>2]=7;Qe(0,166192,z);tc()}Yu(c[v>>2]|0,163408,j,0)|0;z=c[l>>2]|0;do{if((z+ -1|0)>>>0<2){if((z|0)==1){Ja=+(c[f>>2]|0)}else{Ja=+h[f>>3]}Ja=Ja*.001;if(Ja==0.0){break}h[a+152>>3]=Ja}}while(0);Of(j);z=c[w>>2]|0;if((z|0)!=7){c[y>>2]=z;c[x+4>>2]=7;Qe(0,166192,x);tc()}Yu(c[v>>2]|0,163416,j,0)|0;x=c[l>>2]|0;do{if((x+ -1|0)>>>0<2){if((x|0)==1){Ja=+(c[f>>2]|0)}else{Ja=+h[f>>3]}Ja=Ja*.001;x=a+160|0;if(Ja!=0.0){h[x>>3]=Ja}else{Ja=+h[x>>3]}if(Ja<=0.0){break}h[a+160>>3]=-0.0-Ja}}while(0);Of(j);w=c[w>>2]|0;if((w|0)!=7){c[u>>2]=w;c[t+4>>2]=7;Qe(0,166192,t);tc()}a:do{if((c[(Yu(c[v>>2]|0,163424,j,0)|0)>>2]|0)==6){t=0;while(1){u=c[l>>2]|0;if((u|0)!=6){C=192;break}u=c[f>>2]|0;if((t|0)>=(c[u+12>>2]|0)){break a}if(((c[(ut(u,t,p)|0)>>2]|0)+ -1|0)>>>0<2){u=c[g>>2]|0;if((u+ -1|0)>>>0>=2){C=196;break}if((u|0)==1){Ja=+(c[s>>2]|0)}else{Ja=+h[s>>3]}h[a+112+(t<<3)>>3]=Ja*.001}Of(p);t=t+1|0;if((t|0)>=4){break a}}if((C|0)==192){c[r>>2]=u;c[e+4>>2]=6;Qe(0,166192,e);tc()}else if((C|0)==196){c[n>>2]=u;c[m+4>>2]=1;c[m+8>>2]=2;Qe(0,167792,m);tc()}}}while(0);Of(j);Of(o);i=q;return}function _x(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=i;k=i;i=i+8|0;l=k;q=i;i=i+8|0;p=q;n=i;i=i+4096|0;m=i;i=i+16|0;h=m;c[m>>2]=13;j=h+8|0;c[j>>2]=0;c[j+4>>2]=0;if((c[(Yu(d,163440,h,0)|0)>>2]|0)!=8){Of(h);r=0;i=g;return r|0}d=FW(32)|0;ee(d);r=c[m>>2]|0;if((r|0)!=8){c[q>>2]=r;c[p+4>>2]=8;Qe(0,166192,p);tc()}p=c[j>>2]|0;fd[c[(c[p>>2]|0)+12>>2]&511](p);while(1){a:do{if(jd[c[(c[p>>2]|0)+88>>2]&511](p)|0){q=sd[c[(c[p>>2]|0)+92>>2]&127](p,4096,n)|0;o=10}else{q=0;while(1){r=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((r|0)==-1){o=10;break a}a[n+q|0]=r;q=q+1|0;if((q|0)>=4096){q=4096;break}}}}while(0);if((o|0)==10){o=0;if((q|0)==0){break}}ne(d,n,q)|0}m=c[m>>2]|0;if((m|0)!=8){c[k>>2]=m;c[l+4>>2]=8;Qe(0,166192,l);tc()}r=c[j>>2]|0;fd[c[(c[r>>2]|0)+16>>2]&511](r);Of(h);if((f|0)==0){f=lu(d,e)|0}else{qu(f,d,e)}a[b+173|0]=1;if((d|0)==0){r=f;i=g;return r|0}ke(d);HW(d);r=f;i=g;return r|0}function $x(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;k=i;i=i+8|0;o=i;i=i+16|0;f=o;l=i;i=i+16|0;g=l;m=f+8|0;c[l>>2]=13;h=g+8|0;c[h>>2]=0;c[h+4>>2]=0;j=a+52|0;n=c[j>>2]|0;a=c[a+56>>2]|0;c[o>>2]=9;c[m>>2]=n;c[m+4>>2]=a;Nf(f,b,g,0)|0;if((c[l>>2]|0)==8){n=c[h>>2]|0;o=ay(n,d,4096,4096)|0;fd[c[(c[n>>2]|0)+16>>2]&511](n);Of(g);Of(f);i=e;return o|0}else{Qe(-1,163544,k);Of(g);Of(f);c[j>>2]=-1;c[d>>2]=0;o=0;i=e;return o|0}return 0}function ay(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;h=i;g=we(e)|0;c[d>>2]=0;fd[c[(c[b>>2]|0)+12>>2]&511](b);j=e;while(1){k=c[d>>2]|0;l=jd[c[(c[b>>2]|0)+88>>2]&511](b)|0;if((j|0)>0){a:do{if(l){l=sd[c[(c[b>>2]|0)+92>>2]&127](b,j,g+k|0)|0}else{l=0;while(1){m=jd[c[(c[b>>2]|0)+20>>2]&511](b)|0;if((m|0)==-1){break a}a[g+(l+k)|0]=m;l=l+1|0;if((l|0)>=(j|0)){l=j;break}}}}while(0);if((l|0)==0){d=16;break}c[d>>2]=(c[d>>2]|0)+l;if((l|0)!=(j|0)){d=16;break}if((jd[c[(c[b>>2]|0)+24>>2]&511](b)|0)==-1){d=16;break}}else{if(l){k=sd[c[(c[b>>2]|0)+92>>2]&127](b,j,g+k|0)|0}else{k=j}if((k|0)==0){d=16;break}c[d>>2]=(c[d>>2]|0)+k;if((k|0)!=(j|0)){d=16;break}if((jd[c[(c[b>>2]|0)+24>>2]&511](b)|0)==-1){d=16;break}}m=e+f|0;g=xe(g,m)|0;j=f;e=m}if((d|0)==16){i=h;return g|0}return 0}function by(d,f,g,j,k,l,m){d=d|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;var 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,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.0,pa=0.0;p=i;u=i;i=i+8|0;t=u;M=i;i=i+8|0;L=M;H=i;i=i+8|0;I=H;N=i;i=i+8|0;O=N;Y=i;i=i+8|0;X=i;i=i+16|0;W=X;Z=i;i=i+8|0;V=Z;ca=i;i=i+16|0;da=ca;aa=i;i=i+8|0;ba=aa;T=i;i=i+8|0;U=T;A=i;i=i+1024|0;B=A;C=i;i=i+32|0;D=C;o=i;i=i+8|0;n=o;r=i;i=i+16|0;q=r;s=i;i=i+16|0;v=s;J=i;i=i+16|0;K=J;z=i;i=i+8|0;y=z;S=j;R=c[S>>2]|0;S=c[S+4>>2]|0;c[d>>2]=162528;j=d+172|0;a[j]=0;E=FW(32)|0;fe(E,g);c[d+8>>2]=E;E=d+12|0;c[E>>2]=R;c[E+4>>2]=S;E=d+20|0;c[E>>2]=k;c[d+36>>2]=k;S=d+48|0;c[S>>2]=0;R=d+60|0;c[R>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;c[d+32>>2]=0;c[d+4>>2]=0;a[d+173|0]=0;c[d>>2]=163592;_=d+3512|0;c[_>>2]=13;$=d+3520|0;c[$>>2]=0;c[$+4>>2]=0;$=d+3528|0;c[$>>2]=13;g=d+3536|0;c[g>>2]=0;c[g+4>>2]=0;c[r>>2]=13;g=q+8|0;c[g>>2]=0;c[g+4>>2]=0;c[s>>2]=13;w=v+8|0;c[w>>2]=0;c[w+4>>2]=0;c[J>>2]=13;P=K+8|0;c[P>>2]=0;c[P+4>>2]=0;c[d+168>>2]=1;x=d+40|0;c[x>>2]=l;l=d+1456|0;c[l>>2]=0;a:do{if((k|0)==0){G=19}else{F=FW(32)|0;ie(F,k);k=F+24|0;fa=c[k>>2]|0;b:do{if((fa|0)>0){Q=F+28|0;ea=0;while(1){while(1){if((a[(c[Q>>2]|0)+ea|0]|0)!=32){break}re(F,ea,1)|0;fa=c[k>>2]|0;if((ea|0)>=(fa|0)){Q=0;ea=51;break b}}ea=ea+1|0;if((ea|0)>=(fa|0)){Q=0;ea=51;break}}}else{Q=0;ea=51}}while(0);do{k=(ea+Q|0)/2|0;fa=(te(F,c[163616+(k<<3)>>2]|0)|0)>-1;Q=fa?k:Q;ea=fa?ea:k;}while((ea-Q|0)>1);if((te(F,c[163616+(Q<<3)>>2]|0)|0)==0){na=FW(32)|0;fe(na,c[163620+(Q<<3)>>2]|0);c[E>>2]=na}if((F|0)!=0){ke(F);HW(F)}F=c[E>>2]|0;if((F|0)==0){G=19;break}else{la=0}while(1){k=72928+(la*24|0)|0;Q=la+1|0;if((te(F,c[k>>2]|0)|0)==0){break}if((Q|0)>=14){G=19;break a}F=c[E>>2]|0;la=Q}if((k|0)==0){G=19;break}ha=72936+(la*24|0)|0;ga=d+152|0;h[ga>>3]=+(b[ha>>1]|0)*.001;fa=72938+(la*24|0)|0;ea=d+160|0;h[ea>>3]=+(b[fa>>1]|0)*.001;Q=72940+(la*24|0)|0;ma=d+112|0;h[ma>>3]=+(b[Q>>1]|0)*.001;ia=72942+(la*24|0)|0;ka=d+120|0;h[ka>>3]=+(b[ia>>1]|0)*.001;F=72944+(la*24|0)|0;ja=d+128|0;h[ja>>3]=+(b[F>>1]|0)*.001;la=72946+(la*24|0)|0;na=d+136|0;h[na>>3]=+(b[la>>1]|0)*.001;Zx(d,f,m);if((c[d+52>>2]|0)>=0){F=1;break}h[ga>>3]=+(b[ha>>1]|0)*.001;h[ea>>3]=+(b[fa>>1]|0)*.001;h[ma>>3]=+(b[Q>>1]|0)*.001;h[ka>>3]=+(b[ia>>1]|0)*.001;h[ja>>3]=+(b[F>>1]|0)*.001;h[na>>3]=+(b[la>>1]|0)*.001;F=1}}while(0);if((G|0)==19){h[d+152>>3]=.95;h[d+160>>3]=-.35;bX(d+112|0,0,32)|0;Zx(d,f,m);F=0;k=0}ea=c[E>>2]|0;do{if((ea|0)!=0){Q=c[x>>2]|0;if((Q|0)==5){c[R>>2]=gf(c[834]|0,ea,163512)|0;break}else if((Q|0)==1){c[R>>2]=gf(c[834]|0,ea,163456)|0;break}else{break}}}while(0);h[d+88>>3]=1.0;Q=d+64|0;h[Q>>3]=1.0;bX(d+72|0,0,16)|0;bX(d+96|0,0,16)|0;c:do{if((c[(Yu(m,164024,q,0)|0)>>2]|0)==6){ea=0;while(1){fa=c[r>>2]|0;if((fa|0)!=6){G=28;break}fa=c[g>>2]|0;if((ea|0)>=(c[fa+12>>2]|0)){break c}if(((c[(ut(fa,ea,v)|0)>>2]|0)+ -1|0)>>>0<2){fa=c[s>>2]|0;if((fa+ -1|0)>>>0>=2){G=32;break}if((fa|0)==1){oa=+(c[w>>2]|0)}else{oa=+h[w>>3]}h[d+64+(ea<<3)>>3]=oa}Of(v);ea=ea+1|0;if((ea|0)>=6){break c}}if((G|0)==28){c[aa>>2]=fa;c[ba+4>>2]=6;Qe(0,166192,ba);tc()}else if((G|0)==32){c[ca>>2]=fa;c[da+4>>2]=1;c[da+8>>2]=2;Qe(0,167792,da);tc()}}}while(0);Of(q);do{if((c[x>>2]|0)==4){d:do{if((c[(Yu(m,163424,q,0)|0)>>2]|0)==6){aa=0;while(1){ba=c[r>>2]|0;if((ba|0)!=6){G=42;break}ba=c[g>>2]|0;if((aa|0)>=(c[ba+12>>2]|0)){break d}if(((c[(ut(ba,aa,v)|0)>>2]|0)+ -1|0)>>>0<2){ba=c[s>>2]|0;if((ba+ -1|0)>>>0>=2){G=46;break}if((ba|0)==1){oa=+(c[w>>2]|0)}else{oa=+h[w>>3]}h[d+112+(aa<<3)>>3]=oa}Of(v);aa=aa+1|0;if((aa|0)>=4){break d}}if((G|0)==42){c[Z>>2]=ba;c[V+4>>2]=6;Qe(0,166192,V);tc()}else if((G|0)==46){c[X>>2]=ba;c[W+4>>2]=1;c[W+8>>2]=2;Qe(0,167792,W);tc()}}}while(0);Of(q);if((c[(Yu(m,164040,_,0)|0)>>2]|0)!=7){Qe(-1,164056,Y);Of(_)}if((c[(Yu(m,164112,$,0)|0)>>2]|0)==7){break}Of($)}}while(0);V=d+1460|0;a[V]=0;W=d+1461|0;a[W]=0;Yu(m,164128,q,0)|0;X=c[r>>2]|0;do{if((X|0)==7){Yu(c[g>>2]|0,164144,v,0)|0;do{if((c[s>>2]|0)==4){X=c[w>>2]|0;if((Qc(X|0,164160)|0)==0){a[V]=1;a[W]=1;W=134928;break}if((Qc(X|0,164184)|0)==0){a[V]=1;W=138280;break}if((Qc(X|0,164208)|0)!=0){W=0;break}a[V]=1;W=139424}else{W=0}}while(0);Of(v)}else if((X|0)==4){if((Qc(c[g>>2]|0,164160)|0)==0){a[V]=1;a[W]=1;W=134928;break}W=c[g>>2]|0;if((Qc(W|0,164184)|0)==0){a[V]=1;W=138280;break}if((Qc(W|0,164208)|0)!=0){W=0;break}a[V]=1;W=139424}else{W=0}}while(0);Y=c[x>>2]|0;e:do{if((Y|0)==2){G=84}else if((Y|0)==1){X=c[R>>2]|0;do{if((X|0)==0){if((c[d+52>>2]|0)>-1){na=$x(d,f,U)|0;G=na;T=YG(na,c[T>>2]|0)|0;break}else{if((Y|0)==2){G=84;break e}else{f=0;S=0;T=0;break e}}}else{G=0;T=ZG(c[X+28>>2]|0)|0}}while(0);if((T|0)==0){f=0;U=G;S=0;T=0;G=95;break}if((aH(T)|0)!=0){f=c[S>>2]|0;if((f|0)!=0){ke(f);HW(f)}na=FW(32)|0;fe(na,aH(T)|0);c[S>>2]=na}if((W|0)!=0){f=0;U=G;S=0;G=95;break}f=1;W=cH(T)|0;U=G;S=0;G=95}else{f=0;S=0;T=0}}while(0);do{if((G|0)==84){X=c[R>>2]|0;if((X|0)==0){if((c[d+52>>2]|0)<=-1){f=0;S=0;T=0;break}na=$x(d,f,U)|0;G=na;T=Tn(na,c[T>>2]|0)|0}else{G=0;T=Vn(c[X+28>>2]|0)|0}if((T|0)==0){f=0;U=G;S=0;T=0;G=95;break}if((Yn(T)|0)!=0){f=c[S>>2]|0;if((f|0)!=0){ke(f);HW(f)}na=FW(32)|0;fe(na,Yn(T)|0);c[S>>2]=na}if((W|0)!=0){f=0;U=G;S=T;T=0;G=95;break}f=1;W=Zn(T)|0;U=G;S=T;T=0;G=95}}while(0);do{if((G|0)==95){if((U|0)==0){break}Fe(U)}}while(0);f:do{if((W|0)==0){do{if(F){if((c[d+52>>2]|0)>=0){break}W=c[k+4>>2]|0;a[V]=1;break f}}while(0);W=(c[x>>2]|0)==5?139424:140464}}while(0);U=f&1;if(f){X=0;do{Z=W+(X<<2)|0;Y=d+176+(X<<2)|0;c[Y>>2]=c[Z>>2];a[d+1200+X|0]=U;if((c[Y>>2]|0)!=0){c[Y>>2]=Ge(c[Z>>2]|0)|0}X=X+1|0;}while((X|0)<256)}else{X=0;do{c[d+176+(X<<2)>>2]=c[W+(X<<2)>>2];a[d+1200+X|0]=U;X=X+1|0;}while((X|0)<256)}do{if((c[x>>2]|0)==2){if((c[R>>2]|0)==0){if((c[d+52>>2]|0)<0|f^1){break}else{U=0}}else{if(f){U=0}else{break}}do{R=d+176+(U<<2)|0;do{if((c[R>>2]|0)==0){f=c[140464+(U<<2)>>2]|0;if((f|0)==0){break}c[R>>2]=f;a[d+1200+U|0]=0}}while(0);U=U+1|0;}while((U|0)<256)}}while(0);if((c[r>>2]|0)==7){Yu(c[g>>2]|0,164224,v,0)|0;g:do{if((c[s>>2]|0)==6){a[V]=1;f=0;R=0;while(1){U=c[w>>2]|0;if((R|0)>=(c[U+12>>2]|0)){break g}ut(U,R,K)|0;U=c[J>>2]|0;if((U|0)==1){f=c[P>>2]|0}else if((U|0)==4){if(f>>>0<256){U=d+1200+f|0;if((a[U]|0)!=0){Fe(c[d+176+(f<<2)>>2]|0);V=c[J>>2]|0;if((V|0)!=4){G=125;break}}c[d+176+(f<<2)>>2]=Ge(c[P>>2]|0)|0;a[U]=1}f=f+1|0}else{c[M>>2]=Pf(K)|0;Qe(-1,164240,L)}Of(K);U=c[s>>2]|0;if((U|0)==6){R=R+1|0}else{G=118;break}}if((G|0)==118){c[N>>2]=U;c[O+4>>2]=6;Qe(0,166192,O);tc()}else if((G|0)==125){c[H>>2]=V;c[I+4>>2]=4;Qe(0,166192,I);tc()}}}while(0);Of(v)}Of(q);if((T|0)!=0){fd[c[(c[T>>2]|0)+4>>2]&511](T)}if((S|0)==0){I=0;H=0;K=0}else{fd[c[(c[S>>2]|0)+4>>2]&511](S);I=0;H=0;K=0}while(1){J=c[d+176+(I<<2)>>2]|0;h:do{if((J|0)==0){c[B+(I<<2)>>2]=0;J=K}else{na=cf(c[834]|0,J)|0;c[B+(I<<2)>>2]=na;if((na|0)!=0){J=K;break}if((Qc(J|0,164296)|0)==0){J=K;break}do{if((ZW(J|0)|0)==3){if((Ab(a[J]|0)|0)==0){G=144;break}K=J+1|0;if((lc(a[K]|0)|0)==0){G=144;break}L=J+2|0;if((lc(a[L]|0)|0)==0){G=144;break}na=a[K]|0;if((na+ -97<<24>>24&255)<6|(na+ -65<<24>>24&255)<6){break}na=a[L]|0;if(!((na+ -97<<24>>24&255)<6|(na+ -65<<24>>24&255)<6)){G=144}}else{G=144}}while(0);do{if((G|0)==144){G=0;if((ZW(J|0)|0)!=2){J=1;break h}if((lc(a[J]|0)|0)==0){J=1;break h}K=J+1|0;if((lc(a[K]|0)|0)==0){J=1;break h}na=a[J]|0;if((na+ -97<<24>>24&255)<6|(na+ -65<<24>>24&255)<6){break}na=a[K]|0;if(!((na+ -97<<24>>24&255)<6|(na+ -65<<24>>24&255)<6)){J=1;break h}}}while(0);H=1;J=1}}while(0);I=I+1|0;if((I|0)<256){K=J}else{break}}G=ku(B)|0;c[l>>2]=G;if(J){G=0;do{i:do{if((c[B+(G<<2)>>2]|0)==0){I=c[d+176+(G<<2)>>2]|0;K=(I|0)!=0;do{if(K){if((Qc(I|0,164296)|0)==0){break}J=cy(I,D,8,0,1,sf(c[834]|0)|0,H,1)|0;if((J|0)==0){break}vu(c[l>>2]|0,G,D,J);break i}}while(0);if(!(tf(c[834]|0)|0)){break}do{if(K){J=a[I]|0;if(J<<24>>24==0){break}else{L=0}while(1){c[D+(L<<2)>>2]=J<<24>>24;K=L+1|0;if(J<<24>>24==0){K=L;break}if((K|0)>=8){break}J=a[I+K|0]|0;L=K}vu(c[l>>2]|0,G,D,K);break i}}while(0);c[C>>2]=G;vu(c[l>>2]|0,G,D,1)}}while(0);G=G+1|0;}while((G|0)<256);G=c[l>>2]|0}_x(d,m,8,G)|0;C=c[E>>2]|0;do{if((C|0)!=0){C=yf(c[834]|0,C)|0;if((C|0)==0){break}bX(A|0,0,1024)|0;A=ku(B)|0;D=0;do{do{if((wu(c[l>>2]|0,D,y)|0)>0){B=wu(C,c[c[z>>2]>>2]|0,y)|0;if((B|0)<=0){break}vu(A,D,c[z>>2]|0,B)}}while(0);D=D+1|0;}while((D|0)<256);uu(C);y=c[l>>2]|0;if((y|0)!=0){su(y);HW(y)}c[l>>2]=A}}while(0);y=d+144|0;z=0;do{h[d+1464+(z<<3)>>3]=+h[y>>3]*.001;z=z+1|0;}while((z|0)<256);Yu(m,164304,q,0)|0;if((c[r>>2]|0)==1){y=c[g>>2]|0}else{y=0}Of(q);y=y>>>0>255?0:y;Yu(m,164320,q,0)|0;if((c[r>>2]|0)==1){z=c[g>>2]|0}else{z=255}Of(q);z=z>>>0>255?255:z;if((c[x>>2]|0)==4){oa=+h[Q>>3]}else{oa=.001}Yu(m,164336,q,0)|0;if((c[r>>2]|0)==6){m=d+44|0;c[m>>2]=c[m>>2]|1;x=c[(c[g>>2]|0)+12>>2]|0;if((x|0)<(1-y+z|0)){x=y+ -1+x|0}else{x=z}if((y|0)>(x|0)){Of(q);na=j;a[na]=1;i=p;return}z=d+1464+(y<<3)|0;A=6;l=y;while(1){if((A|0)!=6){G=193;break}ut(c[g>>2]|0,l-y|0,v)|0;A=c[s>>2]|0;do{if((A+ -1|0)>>>0<2){if((A|0)==1){pa=+(c[w>>2]|0)}else{pa=+h[w>>3]}pa=oa*pa;h[d+1464+(l<<3)>>3]=pa;if(pa==+h[z>>3]){break}c[m>>2]=c[m>>2]&-2}}while(0);Of(v);if((l|0)>=(x|0)){G=217;break}A=c[r>>2]|0;l=l+1|0}if((G|0)==193){c[u>>2]=A;c[t+4>>2]=6;Qe(0,166192,t);tc()}else if((G|0)==217){Of(q);na=j;a[na]=1;i=p;return}}if(F){r=k+20|0;if(BH(c[r>>2]|0,164344,n)|0){h[d+1720>>3]=+(e[o>>1]|0)*.001;s=0}else{s=0}do{t=c[d+176+(s<<2)>>2]|0;do{if((t|0)!=0){if(!(BH(c[r>>2]|0,t,n)|0)){break}h[d+1464+(s<<3)>>3]=+(e[o>>1]|0)*.001}}while(0);s=s+1|0;}while((s|0)<256);Of(q);na=j;a[na]=1;i=p;return}r=c[d+44>>2]|0;if((r&1|0)==0){s=(r<<1&4)+4|0}else{s=0}r=(c[73264+((r>>>17&2|s)+(r>>>6&1)<<2)>>2]|0)+20|0;if(BH(c[r>>2]|0,164344,n)|0){h[d+1720>>3]=+(e[o>>1]|0)*.001;s=0}else{s=0}do{t=c[d+176+(s<<2)>>2]|0;do{if((t|0)!=0){if(!(BH(c[r>>2]|0,t,n)|0)){break}h[d+1464+(s<<3)>>3]=+(e[o>>1]|0)*.001}}while(0);s=s+1|0;}while((s|0)<256);Of(q);na=j;a[na]=1;i=p;return}function cy(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;l=i;u=i;i=i+8|0;v=u;t=i;i=i+8|0;s=t;y=i;i=i+8|0;z=y;m=i;i=i+8|0;n=m;q=i;i=i+8|0;r=q;B=i;i=i+8|0;o=i;i=i+8|0;p=o;A=i;i=i+8|0;x=A;if((e|0)<1){c[B>>2]=b;Qe(-1,166264,B);B=0;i=l;return B|0}do{if(k){B=Fb(b|0,46)|0;if((B|0)==(b|0)){B=0;i=l;return B|0}if((B|0)==0){break}f=He(b,B-b|0)|0;B=cy(f,d,e,1,g,h,j,0)|0;Fe(f);i=l;return B|0}}while(0);do{if(g){if((Fb(b|0,95)|0)==0){break}m=Ge(b)|0;n=m;t=0;while(1){o=Fb(n|0,95)|0;p=(o|0)!=0;if(p){a[o]=0}do{if((a[n]|0)!=0){s=cy(n,d+(t<<2)|0,e-t|0,1,0,h,j,k)|0;if((s|0)==0){c[q>>2]=n;c[r+4>>2]=b;Qe(-1,166352,r);break}else{t=s+t|0;break}}}while(0);if(!p){break}if((t|0)<(e|0)){n=o+1|0}else{break}}Fe(m);B=t;i=l;return B|0}}while(0);do{if(f){k=cf(c[834]|0,b)|0;c[d>>2]=k;k=(k|0)!=0;if(k|h^1){k=k&1}else{break}i=l;return k|0}else{if(h){break}else{k=0}i=l;return k|0}}while(0);h=ZW(b|0)|0;do{if(h>>>0>6&(h&3|0)==3){if((vc(b|0,166424,3)|0)!=0){break}if((e|0)>0&h>>>0>3){k=0;j=3}else{B=0;i=l;return B|0}do{q=b+j|0;do{if((lc(a[q]|0)|0)!=0){if((lc(a[b+(j+1)|0]|0)|0)==0){break}if((lc(a[b+(j+2)|0]|0)|0)==0){break}if((lc(a[b+(j+3)|0]|0)|0)==0){break}c[m>>2]=p;Hc(q|0,166432,n|0)|0;q=c[o>>2]|0;if(!(q>>>0<55296|(q+ -57344|0)>>>0<8192)){break}c[d+(k<<2)>>2]=q;k=k+1|0}}while(0);j=j+4|0;}while((k|0)<(e|0)&j>>>0>>0);i=l;return k|0}}while(0);a:do{if((h+ -5|0)>>>0<3){if((a[b]|0)!=117){w=44;break}e=b+1|0;if((lc(a[e]|0)|0)==0){w=44;break}if((lc(a[b+2|0]|0)|0)==0){w=44;break}if((lc(a[b+3|0]|0)|0)==0){w=44;break}if((lc(a[b+4|0]|0)|0)==0){w=44;break}do{if(h>>>0>=6){if((lc(a[b+5|0]|0)|0)==0){w=44;break a}if(h>>>0<7){break}if((lc(a[b+6|0]|0)|0)==0){break a}}}while(0);c[y>>2]=x;Hc(e|0,166440,z|0)|0;e=c[A>>2]|0;if(!(e>>>0<55296|(e+ -57344|0)>>>0<1056768)){w=44;break}c[d>>2]=e;B=1;i=l;return B|0}else{w=44}}while(0);do{if((w|0)==44){do{if((h|0)==3&j){if((Ab(a[b]|0)|0)==0){break}e=b+1|0;if((lc(a[e]|0)|0)==0){break}if((lc(a[b+2|0]|0)|0)==0){break}c[t>>2]=d;Hc(e|0,166440,s|0)|0;B=1;i=l;return B|0}}while(0);if(!((h|0)==2&j)){break}if((lc(a[b]|0)|0)==0){break}if((lc(a[b+1|0]|0)|0)==0){break}c[u>>2]=d;Hc(b|0,166440,v|0)|0;B=1;i=l;return B|0}}while(0);do{if(!j){if((h+ -2|0)>>>0>=3){break}if(((a[b]|0)+ -48|0)>>>0>=10){break}if(((a[b+1|0]|0)+ -48|0)>>>0>=10){break}c[d>>2]=ec(b|0)|0;B=1;i=l;return B|0}}while(0);do{if((h+ -3|0)>>>0<3){e=b+1|0;if(((a[e]|0)+ -48|0)>>>0>=10){break}if(((a[b+2|0]|0)+ -48|0)>>>0>=10){break}c[d>>2]=ec(e|0)|0;B=1;i=l;return B|0}}while(0);if((h+ -4|0)>>>0>=3){B=0;i=l;return B|0}e=b+2|0;if(((a[e]|0)+ -48|0)>>>0>=10){B=0;i=l;return B|0}if(((a[b+3|0]|0)+ -48|0)>>>0>=10){B=0;i=l;return B|0}c[d>>2]=ec(e|0)|0;B=1;i=l;return B|0}function dy(a){a=a|0;var b=0;b=i;ey(a);HW(a);i=b;return}function ey(b){b=b|0;var d=0,e=0,f=0;d=i;c[b>>2]=163592;e=0;do{do{if((a[b+1200+e|0]|0)!=0){f=c[b+176+(e<<2)>>2]|0;if((f|0)==0){break}Fe(f)}}while(0);e=e+1|0;}while((e|0)<256);uu(c[b+1456>>2]|0);e=b+3512|0;if((c[e>>2]|0)==7){Of(e)}e=b+3528|0;if((c[e>>2]|0)!=7){Wx(b);i=d;return}Of(e);Wx(b);i=d;return}function fy(a,b,e,f,g,j,k,l,m,n){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;e=i;b=d[b]|0;c[f>>2]=b;c[j>>2]=wu(c[a+1456>>2]|0,b,g)|0;h[k>>3]=+h[a+1464+(b<<3)>>3];h[n>>3]=0.0;h[m>>3]=0.0;h[l>>3]=0.0;i=e;return 1}function gy(a){a=a|0;var b=0;b=i;a=a+1456|0;tu(c[a>>2]|0);i=b;return c[a>>2]|0}function hy(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;h=i;i=i+8|0;j=h;g=ye(256,2)|0;bX(g|0,0,512)|0;if((Hn(e)|0)>0){k=0;m=-1;n=-1;l=-1;do{q=In(e,k)|0;o=Jn(e,k)|0;p=(q|0)==3;do{if(p&(o|0)==1|(q|0)==0){l=k}else{o=(o|0)==0;q=(q|0)==1&o;if(q|p^1){m=q?k:m;break}n=o?k:n}}while(0);k=k+1|0;}while((k|0)<(Hn(e)|0))}else{m=-1;n=-1;l=-1}do{if((a[d+1460|0]&1)==0){if((c[d+40>>2]|0)==1){k=8;break}if((n|0)>-1){m=n;k=15;break}m=(m|0)<0?0:m;k=15}else{k=8}}while(0);a:do{if((k|0)==8){o=(m|0)>-1;do{if(!((a[d+1461|0]&1)!=0&o)){if((l|0)<=-1){h=(c[d+44>>2]&4|0)!=0;if(h&(n|0)>-1){m=n;k=15;break a}if(h&o){k=15;break a}m=o?m:0;if(o){break}else{k=15;break a}}m=d+1456|0;n=0;while(1){o=c[d+176+(n<<2)>>2]|0;do{if((o|0)==0){k=25}else{o=cf(c[834]|0,o)|0;if((o|0)==0){k=25;break}b[g+(n<<1)>>1]=Kn(e,l,o)|0}}while(0);do{if((k|0)==25){k=0;if((wu(c[m>>2]|0,n,j)|0)<=0){break}b[g+(n<<1)>>1]=Kn(e,l,c[c[h>>2]>>2]|0)|0}}while(0);n=n+1|0;if((n|0)>=256){h=0;break a}}}}while(0);h=0;while(1){j=c[d+176+(h<<2)>>2]|0;do{if((j|0)!=0){j=bf(c[834]|0,j)|0;if((j|0)==0){break}b[g+(h<<1)>>1]=Kn(e,m,j)|0}}while(0);h=h+1|0;if((h|0)>=256){h=0;break}}}}while(0);if((k|0)==15){j=0;while(1){q=Kn(e,m,j)|0;h=g+(j<<1)|0;b[h>>1]=q;if(q<<16>>16==0){b[h>>1]=Kn(e,m,j+61440|0)|0}j=j+1|0;if((j|0)>=256){h=0;break}}}do{k=g+(h<<1)|0;do{if((b[k>>1]|0)==0){j=c[d+176+(h<<2)>>2]|0;if((j|0)==0){break}b[k>>1]=Ln(e,j)|0}}while(0);h=h+1|0;}while((h|0)<256);i=f;return g|0}function iy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;b=c[a+176+(b<<2)>>2]|0;do{if((b|0)!=0){if((c[a+3512>>2]|0)!=7){break}Yu(c[a+3520>>2]|0,b,d,0)|0;i=e;return d|0}}while(0);b=d+8|0;c[b>>2]=0;c[b+4>>2]=0;c[d>>2]=5;i=e;return d|0}function jy(a){a=a|0;var b=0;b=i;if((c[a+3528>>2]|0)!=7){a=0;i=b;return a|0}a=c[a+3536>>2]|0;i=b;return a|0}function ky(d,e,f,g,j,k){d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var 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,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,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=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,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0.0;m=i;u=i;i=i+8|0;ia=i;i=i+8|0;ha=i;i=i+16|0;ja=ha;I=i;i=i+16|0;L=I;E=i;i=i+16|0;G=E;B=i;i=i+8|0;C=B;z=i;i=i+8|0;A=z;s=i;i=i+8|0;r=s;fa=i;i=i+8|0;ga=fa;ea=i;i=i+8|0;ca=i;i=i+16|0;da=ca;aa=i;i=i+16|0;ba=aa;_=i;i=i+16|0;$=_;Y=i;i=i+8|0;Z=Y;t=i;i=i+8|0;X=t;ka=i;i=i+8|0;V=ka;S=i;i=i+8|0;T=S;x=i;i=i+8|0;y=x;v=i;i=i+8|0;w=v;p=i;i=i+8|0;q=p;ra=i;i=i+16|0;sa=ra;ua=i;i=i+8|0;ta=ua;xa=i;i=i+16|0;wa=xa;za=i;i=i+8|0;ya=za;Fa=i;i=i+8|0;Qa=i;i=i+8|0;Na=i;i=i+16|0;Oa=Na;Ea=i;i=i+8|0;Ba=Ea;La=i;i=i+8|0;Ma=La;Ga=i;i=i+8|0;Ja=i;i=i+16|0;Ka=Ja;Ha=i;i=i+8|0;Ia=Ha;Ua=i;i=i+8|0;Pa=Ua;Sa=i;i=i+8|0;Ra=Sa;Wa=i;i=i+8|0;Ta=Wa;Ca=i;i=i+8|0;Da=Ca;ab=i;i=i+8|0;$a=ab;lb=i;i=i+8|0;eb=i;i=i+8|0;db=eb;bb=i;i=i+8|0;cb=bb;kb=i;i=i+8|0;jb=kb;nb=i;i=i+8|0;mb=nb;ub=i;i=i+8|0;rb=ub;ob=i;i=i+8|0;Ab=i;i=i+8|0;Bb=Ab;zb=i;i=i+8|0;Cb=zb;Eb=i;i=i+8|0;Fb=Eb;Gb=i;i=i+8|0;Ib=i;i=i+8|0;Hb=Ib;Jb=i;i=i+8|0;Kb=Jb;Lb=i;i=i+8|0;Mb=i;i=i+8|0;Nb=Mb;Pb=i;i=i+8|0;Qb=i;i=i+8|0;_a=Qb;Rb=i;i=i+8|0;Sb=i;i=i+8|0;Tb=Sb;Vb=i;i=i+8|0;R=i;i=i+8|0;U=R;Xa=i;i=i+8|0;Va=Xa;Ub=i;i=i+16|0;n=Ub;N=i;i=i+16|0;l=N;K=i;i=i+16|0;Q=K;J=i;i=i+16|0;W=J;H=i;i=i+16|0;P=H;F=i;i=i+16|0;O=F;D=i;i=i+16|0;M=D;wb=i;i=i+8|0;xb=wb;pb=i;i=i+16|0;sb=pb;Ob=g;Wb=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;c[d>>2]=162528;g=d+172|0;a[g]=0;Db=FW(32)|0;fe(Db,f);c[d+8>>2]=Db;Db=d+12|0;c[Db>>2]=Wb;c[Db+4>>2]=Ob;Db=d+20|0;c[Db>>2]=j;c[d+36>>2]=j;c[d+48>>2]=0;Ob=d+60|0;c[Ob>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;c[d+32>>2]=0;c[d+4>>2]=0;a[d+173|0]=0;c[d>>2]=164360;c[Ub>>2]=13;Wb=n+8|0;c[Wb>>2]=0;c[Wb+4>>2]=0;c[N>>2]=13;pa=l+8|0;c[pa>>2]=0;c[pa+4>>2]=0;c[K>>2]=13;oa=Q+8|0;c[oa>>2]=0;c[oa+4>>2]=0;c[J>>2]=13;na=W+8|0;c[na>>2]=0;c[na+4>>2]=0;c[H>>2]=13;j=P+8|0;c[j>>2]=0;c[j+4>>2]=0;c[F>>2]=13;qa=O+8|0;c[qa>>2]=0;c[qa+4>>2]=0;c[D>>2]=13;ma=M+8|0;c[ma>>2]=0;c[ma+4>>2]=0;c[d+168>>2]=1;h[d+152>>3]=.95;h[d+160>>3]=-.35;vb=d+176|0;c[vb>>2]=0;yb=d+180|0;c[yb>>2]=0;fb=d+184|0;bX(d+112|0,0,32)|0;h[fb>>3]=1.0;va=d+192|0;h[va>>3]=-1.0;Aa=d+200|0;h[Aa>>3]=.88;Za=d+208|0;Ya=d+212|0;la=d+216|0;f=d+220|0;hb=d+224|0;ib=d+228|0;bX(Za|0,0,24)|0;if((c[(Yu(k,164384,l,0)|0)>>2]|0)!=6){Qe(-1,164400,Vb);Of(l);i=m;return}Vb=c[N>>2]|0;if((Vb|0)!=6){c[Sb>>2]=Vb;c[Tb+4>>2]=6;Qe(0,166192,Tb);tc()}a:do{if((c[(ut(c[pa>>2]|0,0,n)|0)>>2]|0)==7){Of(l);Rb=c[Ub>>2]|0;if((Rb|0)!=7){c[Qb>>2]=Rb;c[_a+4>>2]=7;Qe(0,166192,_a);tc()}_a=c[Wb>>2]|0;if((Yu(_a,162424,l,0)|0)==0){Qe(-1,164488,Pb);o=243;break}Pb=162512;do{if((c[N>>2]|0)==4){Pb=c[pa>>2]|0;if((Qc(Pb|0,164536)|0)==0){c[d+40>>2]=7}else{if((Qc(Pb|0,164552)|0)!=0){break}c[d+40>>2]=10}Of(l);Zx(d,e,_a);Mb=c[Db>>2]|0;do{if((Mb|0)!=0){Nb=c[d+40>>2]|0;if((Nb|0)==1){c[Ob>>2]=gf(c[834]|0,Mb,163456)|0;break}else if((Nb|0)==5){c[Ob>>2]=gf(c[834]|0,Mb,163512)|0;break}else{break}}}while(0);if((c[(Yu(_a,164616,l,0)|0)>>2]|0)!=7){Qe(-1,164632,Lb);o=243;break a}Lb=c[N>>2]|0;if((Lb|0)!=7){c[Jb>>2]=Lb;c[Kb+4>>2]=7;Qe(0,166192,Kb);tc()}Yu(c[pa>>2]|0,164696,Q,0)|0;Jb=c[N>>2]|0;if((Jb|0)!=7){c[Ib>>2]=Jb;c[Hb+4>>2]=7;Qe(0,166192,Hb);tc()}Yu(c[pa>>2]|0,164712,W,0)|0;do{if((c[K>>2]|0)==3){if((c[J>>2]|0)!=3){break}Hb=c[oa>>2]|0;Gb=FW(32)|0;ie(Gb,Hb);Gb=me(Gb,45)|0;Hb=c[J>>2]|0;if((Hb|0)!=3){c[Eb>>2]=Hb;c[Fb+4>>2]=3;Qe(0,166192,Fb);tc()}Eb=oe(Gb,c[na>>2]|0)|0;Of(W);Of(Q);Of(l);Wb=_x(d,k,16,0)|0;c[yb>>2]=Wb;do{if((Wb|0)==0){if((te(Eb,164792)|0)==0){break}if((te(Eb,164808)|0)==0){break}Wb=xf(c[834]|0,Eb)|0;c[yb>>2]=Wb;if((Wb|0)==0){Fb=0}else{break}while(1){Gb=Fb+1|0;if((te(Eb,c[164824+(Fb<<2)>>2]|0)|0)==0){break}if(Gb>>>0<5){Fb=Gb}else{o=40;break}}if((o|0)==40){c[Ab>>2]=c[Eb+28>>2];Qe(-1,164968,Bb);break}c[zb>>2]=c[Eb+28>>2];Qe(-1,164928,Cb);if((Eb|0)==0){break a}ke(Eb);HW(Eb);break a}}while(0);zb=c[Db>>2]|0;do{if((zb|0)!=0){zb=yf(c[834]|0,zb)|0;if((zb|0)==0){break}Bb=c[yb>>2]|0;if((Bb|0)==0){c[yb>>2]=zb;break}if((c[Bb+8>>2]|0)!=0){Ab=0;do{do{if((wu(Bb,Ab,xb)|0)>0){Bb=wu(zb,c[c[wb>>2]>>2]|0,xb)|0;if((Bb|0)<=0){break}vu(c[yb>>2]|0,Ab,c[wb>>2]|0,Bb)}}while(0);Ab=Ab+1|0;Bb=c[yb>>2]|0;}while(Ab>>>0<(c[Bb+8>>2]|0)>>>0)}uu(zb)}}while(0);b:do{if((c[(Yu(k,164128,l,0)|0)>>2]|0)==4){ob=FW(32)|0;pb=c[N>>2]|0;if((pb|0)==4){fe(ob,c[pa>>2]|0);tb=zf(c[834]|0,Eb,ob,0)|0;c[vb>>2]=tb;qb=ob;break}else{c[ub>>2]=pb;c[rb+4>>2]=4;Qe(0,166192,rb);tc()}}else{do{if((c[N>>2]|0)==8){c[pb>>2]=13;rb=sb+8|0;c[rb>>2]=0;c[rb+4>>2]=0;qb=c[pa>>2]|0;Yu(jd[c[(c[qb>>2]|0)+72>>2]&511](qb)|0,165008,sb,0)|0;if((c[pb>>2]|0)==4){Wb=FW(32)|0;fe(Wb,c[rb>>2]|0);c[vb>>2]=zf(c[834]|0,Eb,Wb,qb)|0;Of(sb);tb=c[vb>>2]|0;qb=Wb;break b}else{Of(sb);break}}}while(0);Qe(-1,165024,ob);if((Eb|0)==0){o=243;break a}ke(Eb);HW(Eb);o=243;break a}}while(0);if((tb|0)==0){Wb=c[Eb+28>>2]|0;c[nb>>2]=c[qb+28>>2];c[mb+4>>2]=Wb;Qe(-1,165080,mb);if((Eb|0)!=0){ke(Eb);HW(Eb)}if((qb|0)==0){break a}ke(qb);HW(qb);break a}if((Eb|0)!=0){ke(Eb);HW(Eb)}if((qb|0)!=0){ke(qb);HW(qb)}Of(l);if(((c[d+40>>2]|0)+ -10|0)>>>0<2){Yu(_a,165128,l,0)|0;mb=c[N>>2]|0;c:do{if((mb|0)==8){c[ib>>2]=0;c[hb>>2]=ye(64,2)|0;lb=c[N>>2]|0;if((lb|0)!=8){c[kb>>2]=lb;c[jb+4>>2]=8;Qe(0,166192,jb);tc()}jb=c[pa>>2]|0;fd[c[(c[jb>>2]|0)+12>>2]&511](jb);jb=c[N>>2]|0;if((jb|0)==8){gb=64}else{Vb=jb;Wb=bb;c[Wb>>2]=Vb;Wb=cb+4|0;c[Wb>>2]=8;Wb=166192;Qe(0,Wb,cb);tc()}while(1){jb=c[pa>>2]|0;jb=jd[c[(c[jb>>2]|0)+20>>2]&511](jb)|0;if((jb|0)==-1){break c}kb=c[N>>2]|0;if((kb|0)!=8){o=78;break}kb=c[pa>>2]|0;kb=jd[c[(c[kb>>2]|0)+20>>2]&511](kb)|0;if((kb|0)==-1){break c}mb=c[ib>>2]|0;if((mb|0)==(gb|0)){gb=gb<<1;lb=Ce(c[hb>>2]|0,gb,2)|0;c[hb>>2]=lb;mb=c[ib>>2]|0}else{lb=c[hb>>2]|0}c[ib>>2]=mb+1;b[lb+(mb<<1)>>1]=kb+(jb<<8);jb=c[N>>2]|0;if((jb|0)!=8){o=75;break}}if((o|0)==75){Wb=bb;c[Wb>>2]=jb;Wb=cb+4|0;c[Wb>>2]=8;Wb=166192;Qe(0,Wb,cb);tc()}else if((o|0)==78){c[eb>>2]=kb;c[db+4>>2]=8;Qe(0,166192,db);tc()}}else if((mb|0)==4){if((Qc(c[pa>>2]|0,165144)|0)!=0){o=85}}else if((mb|0)!=5){o=85}}while(0);if((o|0)==85){Qe(-1,165160,lb)}Of(l)}do{if((c[(Yu(_a,165200,l,0)|0)>>2]|0)==1){bb=c[N>>2]|0;if((bb|0)==1){h[fb>>3]=+(c[pa>>2]|0)*.001;break}else{c[ab>>2]=bb;c[$a+4>>2]=1;Qe(0,166192,$a);tc()}}}while(0);Of(l);do{if((c[(Yu(_a,165208,l,0)|0)>>2]|0)==6){$a=c[N>>2]|0;if(($a|0)!=6){Vb=$a;Wb=Ca;c[Wb>>2]=Vb;Wb=Da+4|0;c[Wb>>2]=6;Wb=166192;Qe(0,Wb,Da);tc()}bb=1;ab=0;$a=0;d:while(1){cb=c[pa>>2]|0;if((bb|0)>=(c[cb+12>>2]|0)){o=139;break}ut(cb,$a,Q)|0;cb=c[N>>2]|0;if((cb|0)!=6){o=97;break}ut(c[pa>>2]|0,bb,W)|0;e:do{if((c[K>>2]|0)==1){db=c[J>>2]|0;do{if((db|0)==1){cb=$a+2|0;eb=c[N>>2]|0;if((eb|0)!=6){o=101;break d}eb=c[pa>>2]|0;if((cb|0)>=(c[eb+12>>2]|0)){if((db|0)==6){break}else{o=137;break e}}if(((c[(ut(eb,cb,P)|0)>>2]|0)+ -1|0)>>>0<2){if((c[Ya>>2]|0)==(ab|0)){ab=ab+16|0;c[Za>>2]=Ce(c[Za>>2]|0,ab,16)|0}bb=c[K>>2]|0;if((bb|0)!=1){o=107;break d}c[(c[Za>>2]|0)+(c[Ya>>2]<<4)>>2]=c[oa>>2];bb=c[J>>2]|0;if((bb|0)!=1){o=109;break d}c[(c[Za>>2]|0)+(c[Ya>>2]<<4)+4>>2]=c[na>>2];bb=c[H>>2]|0;if((bb+ -1|0)>>>0>=2){o=111;break d}if((bb|0)==1){Xb=+(c[j>>2]|0)}else{Xb=+h[j>>3]}h[(c[Za>>2]|0)+(c[Ya>>2]<<4)+8>>3]=Xb*.001;c[Ya>>2]=(c[Ya>>2]|0)+1}else{Qe(-1,165216,Ga)}Of(P);$a=$a+3|0;break e}else if((db|0)!=6){o=137;break e}}while(0);bb=(c[(c[na>>2]|0)+12>>2]|0)+(c[Ya>>2]|0)|0;if((bb|0)>(ab|0)){ab=bb+15&-16;c[Za>>2]=Ce(c[Za>>2]|0,ab,16)|0;bb=c[K>>2]|0;if((bb|0)!=1){o=121;break d}}db=c[J>>2]|0;if((db|0)!=6){o=124;break d}cb=c[oa>>2]|0;bb=0;while(1){db=c[na>>2]|0;if((bb|0)>=(c[db+12>>2]|0)){break}if(((c[(ut(db,bb,P)|0)>>2]|0)+ -1|0)>>>0<2){c[(c[Za>>2]|0)+(c[Ya>>2]<<4)>>2]=cb;c[(c[Za>>2]|0)+(c[Ya>>2]<<4)+4>>2]=cb;db=c[H>>2]|0;if((db+ -1|0)>>>0>=2){o=128;break d}if((db|0)==1){Xb=+(c[j>>2]|0)}else{Xb=+h[j>>3]}h[(c[Za>>2]|0)+(c[Ya>>2]<<4)+8>>3]=Xb*.001;c[Ya>>2]=(c[Ya>>2]|0)+1;cb=cb+1|0}else{Qe(-1,165216,Qa)}Of(P);db=c[J>>2]|0;if((db|0)!=6){o=124;break d}bb=bb+1|0}$a=$a+2|0}else{o=137}}while(0);if((o|0)==137){o=0;Qe(-1,165216,Fa);$a=bb}Of(W);Of(Q);bb=c[N>>2]|0;if((bb|0)==6){bb=$a+1|0}else{o=94;break}}if((o|0)==94){Wb=Ca;c[Wb>>2]=bb;Wb=Da+4|0;c[Wb>>2]=6;Wb=166192;Qe(0,Wb,Da);tc()}else if((o|0)==97){c[Wa>>2]=cb;c[Ta+4>>2]=6;Qe(0,166192,Ta);tc()}else if((o|0)==101){c[Sa>>2]=eb;c[Ra+4>>2]=6;Qe(0,166192,Ra);tc()}else if((o|0)==107){c[Ua>>2]=bb;c[Pa+4>>2]=1;Qe(0,166192,Pa);tc()}else if((o|0)==109){c[Ha>>2]=bb;c[Ia+4>>2]=1;Qe(0,166192,Ia);tc()}else if((o|0)==111){c[Ja>>2]=bb;c[Ka+4>>2]=1;c[Ka+8>>2]=2;Qe(0,167792,Ka);tc()}else if((o|0)==121){c[La>>2]=bb;c[Ma+4>>2]=1;Qe(0,166192,Ma);tc()}else if((o|0)==124){c[Ea>>2]=db;c[Ba+4>>2]=6;Qe(0,166192,Ba);tc()}else if((o|0)==128){c[Na>>2]=db;c[Oa+4>>2]=1;c[Oa+8>>2]=2;Qe(0,167792,Oa);tc()}else if((o|0)==139){Vb=c[Za>>2]|0;Wb=Vb+(c[Ya>>2]<<4)|0;c[Xa>>2]=187;Dy(Vb,Wb,Va);break}}}while(0);Of(l);do{if((c[(Yu(_a,165248,l,0)|0)>>2]|0)==6){Ba=c[N>>2]|0;if((Ba|0)!=6){c[za>>2]=Ba;c[ya+4>>2]=6;Qe(0,166192,ya);tc()}ya=c[pa>>2]|0;if((c[ya+12>>2]|0)!=2){break}if(((c[(ut(ya,0,Q)|0)>>2]|0)+ -1|0)>>>0<2){ya=c[K>>2]|0;if((ya+ -1|0)>>>0>=2){c[xa>>2]=ya;c[wa+4>>2]=1;c[wa+8>>2]=2;Qe(0,167792,wa);tc()}if((ya|0)==1){Xb=+(c[oa>>2]|0)}else{Xb=+h[oa>>3]}h[Aa>>3]=Xb*.001}Of(Q);wa=c[N>>2]|0;if((wa|0)!=6){c[ua>>2]=wa;c[ta+4>>2]=6;Qe(0,166192,ta);tc()}if(((c[(ut(c[pa>>2]|0,1,Q)|0)>>2]|0)+ -1|0)>>>0<2){ta=c[K>>2]|0;if((ta+ -1|0)>>>0>=2){c[ra>>2]=ta;c[sa+4>>2]=1;c[sa+8>>2]=2;Qe(0,167792,sa);tc()}if((ta|0)==1){Xb=+(c[oa>>2]|0)}else{Xb=+h[oa>>3]}h[va>>3]=Xb*.001}Of(Q)}}while(0);Of(l);do{if((c[(Yu(_a,165256,l,0)|0)>>2]|0)==6){ra=c[N>>2]|0;if((ra|0)!=6){Vb=ra;Wb=p;c[Wb>>2]=Vb;Wb=q+4|0;c[Wb>>2]=6;Wb=166192;Qe(0,Wb,q);tc()}ta=1;sa=0;ra=0;f:while(1){ua=c[pa>>2]|0;if((ta|0)>=(c[ua+12>>2]|0)){o=241;break}ut(ua,ra,Q)|0;ua=c[N>>2]|0;if((ua|0)!=6){o=167;break}ut(c[pa>>2]|0,ta,W)|0;g:do{if((c[K>>2]|0)==1){va=c[J>>2]|0;do{if((va|0)==1){ua=ra+4|0;wa=c[N>>2]|0;if((wa|0)!=6){o=171;break f}wa=c[pa>>2]|0;if((ua|0)>=(c[wa+12>>2]|0)){if((va|0)==6){break}else{o=239;break g}}do{if(((c[(ut(wa,ra+2|0,P)|0)>>2]|0)+ -1|0)>>>0<2){ta=c[N>>2]|0;if((ta|0)!=6){o=175;break f}if(((c[(ut(c[pa>>2]|0,ra+3|0,O)|0)>>2]|0)+ -1|0)>>>0>=2){o=202;break}ta=c[N>>2]|0;if((ta|0)!=6){o=178;break f}if(((c[(ut(c[pa>>2]|0,ua,M)|0)>>2]|0)+ -1|0)>>>0>=2){o=202;break}if((c[f>>2]|0)==(sa|0)){sa=sa+16|0;c[la>>2]=Ce(c[la>>2]|0,sa,32)|0}ta=c[K>>2]|0;if((ta|0)!=1){o=183;break f}c[(c[la>>2]|0)+(c[f>>2]<<5)>>2]=c[oa>>2];ta=c[J>>2]|0;if((ta|0)!=1){o=185;break f}c[(c[la>>2]|0)+(c[f>>2]<<5)+4>>2]=c[na>>2];ta=c[H>>2]|0;if((ta+ -1|0)>>>0>=2){o=187;break f}if((ta|0)==1){Xb=+(c[j>>2]|0)}else{Xb=+h[j>>3]}h[(c[la>>2]|0)+(c[f>>2]<<5)+8>>3]=Xb*.001;ta=c[F>>2]|0;if((ta+ -1|0)>>>0>=2){o=192;break f}if((ta|0)==1){Xb=+(c[qa>>2]|0)}else{Xb=+h[qa>>3]}h[(c[la>>2]|0)+(c[f>>2]<<5)+16>>3]=Xb*.001;ta=c[D>>2]|0;if((ta+ -1|0)>>>0>=2){o=197;break f}if((ta|0)==1){Xb=+(c[ma>>2]|0)}else{Xb=+h[ma>>3]}h[(c[la>>2]|0)+(c[f>>2]<<5)+24>>3]=Xb*.001;c[f>>2]=(c[f>>2]|0)+1}else{o=202}}while(0);if((o|0)==202){o=0;Qe(-1,165264,ea)}Of(M);Of(O);Of(P);ra=ra+5|0;break g}else if((va|0)!=6){o=239;break g}}while(0);ta=((c[(c[na>>2]|0)+12>>2]|0)/3|0)+(c[f>>2]|0)|0;if((ta|0)>(sa|0)){sa=ta+15&-16;c[la>>2]=Ce(c[la>>2]|0,sa,32)|0;ta=c[K>>2]|0;if((ta|0)!=1){o=207;break f}}va=c[J>>2]|0;if((va|0)!=6){o=210;break f}ua=c[oa>>2]|0;ta=0;while(1){va=c[na>>2]|0;if((ta|0)>=(c[va+12>>2]|0)){break}do{if(((c[(ut(va,ta,P)|0)>>2]|0)+ -1|0)>>>0<2){va=c[J>>2]|0;if((va|0)!=6){o=214;break f}if(((c[(ut(c[na>>2]|0,ta+1|0,O)|0)>>2]|0)+ -1|0)>>>0>=2){o=235;break}va=c[J>>2]|0;if((va|0)!=6){o=217;break f}if(((c[(ut(c[na>>2]|0,ta+2|0,M)|0)>>2]|0)+ -1|0)>>>0>=2){o=235;break}c[(c[la>>2]|0)+(c[f>>2]<<5)>>2]=ua;c[(c[la>>2]|0)+(c[f>>2]<<5)+4>>2]=ua;va=c[H>>2]|0;if((va+ -1|0)>>>0>=2){o=220;break f}if((va|0)==1){Xb=+(c[j>>2]|0)}else{Xb=+h[j>>3]}h[(c[la>>2]|0)+(c[f>>2]<<5)+8>>3]=Xb*.001;va=c[F>>2]|0;if((va+ -1|0)>>>0>=2){o=225;break f}if((va|0)==1){Xb=+(c[qa>>2]|0)}else{Xb=+h[qa>>3]}h[(c[la>>2]|0)+(c[f>>2]<<5)+16>>3]=Xb*.001;va=c[D>>2]|0;if((va+ -1|0)>>>0>=2){o=230;break f}if((va|0)==1){Xb=+(c[ma>>2]|0)}else{Xb=+h[ma>>3]}h[(c[la>>2]|0)+(c[f>>2]<<5)+24>>3]=Xb*.001;c[f>>2]=(c[f>>2]|0)+1;ua=ua+1|0}else{o=235}}while(0);if((o|0)==235){o=0;Qe(-1,165264,ia)}Of(M);Of(O);Of(P);va=c[J>>2]|0;if((va|0)!=6){o=210;break f}ta=ta+3|0}ra=ra+2|0}else{o=239}}while(0);if((o|0)==239){o=0;Qe(-1,165264,u);ra=ta}Of(W);Of(Q);ta=c[N>>2]|0;if((ta|0)==6){ta=ra+1|0}else{o=164;break}}if((o|0)==164){Wb=p;c[Wb>>2]=ta;Wb=q+4|0;c[Wb>>2]=6;Wb=166192;Qe(0,Wb,q);tc()}else if((o|0)==167){c[v>>2]=ua;c[w+4>>2]=6;Qe(0,166192,w);tc()}else if((o|0)==171){c[x>>2]=wa;c[y+4>>2]=6;Qe(0,166192,y);tc()}else if((o|0)==175){c[S>>2]=ta;c[T+4>>2]=6;Qe(0,166192,T);tc()}else if((o|0)==178){c[ka>>2]=ta;c[V+4>>2]=6;Qe(0,166192,V);tc()}else if((o|0)==183){c[t>>2]=ta;c[X+4>>2]=1;Qe(0,166192,X);tc()}else if((o|0)==185){c[Y>>2]=ta;c[Z+4>>2]=1;Qe(0,166192,Z);tc()}else if((o|0)==187){c[_>>2]=ta;c[$+4>>2]=1;c[$+8>>2]=2;Qe(0,167792,$);tc()}else if((o|0)==192){c[aa>>2]=ta;c[ba+4>>2]=1;c[ba+8>>2]=2;Qe(0,167792,ba);tc()}else if((o|0)==197){c[ca>>2]=ta;c[da+4>>2]=1;c[da+8>>2]=2;Qe(0,167792,da);tc()}else if((o|0)==207){c[fa>>2]=ta;c[ga+4>>2]=1;Qe(0,166192,ga);tc()}else if((o|0)==210){c[s>>2]=va;c[r+4>>2]=6;Qe(0,166192,r);tc()}else if((o|0)==214){c[z>>2]=va;c[A+4>>2]=6;Qe(0,166192,A);tc()}else if((o|0)==217){c[B>>2]=va;c[C+4>>2]=6;Qe(0,166192,C);tc()}else if((o|0)==220){c[E>>2]=va;c[G+4>>2]=1;c[G+8>>2]=2;Qe(0,167792,G);tc()}else if((o|0)==225){c[I>>2]=va;c[L+4>>2]=1;c[L+8>>2]=2;Qe(0,167792,L);tc()}else if((o|0)==230){c[ha>>2]=va;c[ja+4>>2]=1;c[ja+8>>2]=2;Qe(0,167792,ja);tc()}else if((o|0)==241){Vb=c[la>>2]|0;Wb=Vb+(c[f>>2]<<5)|0;c[R>>2]=188;Ay(Vb,Wb,U);break}}}while(0);Of(l);Of(n);a[g]=1;i=m;return}}while(0);Qe(-1,164728,Gb);Of(W);Of(Q);o=243;break a}}while(0);c[Mb>>2]=Pb;Qe(-1,164568,Nb);o=243}else{Qe(-1,164448,Rb);o=243}}while(0);if((o|0)==243){Of(l)}Of(n);i=m;return}function ly(a,b){a=a|0;b=b|0;i=i;return(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0|0}function my(a,b){a=a|0;b=b|0;i=i;return(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0|0}function ny(a){a=a|0;var b=0;b=i;oy(a);HW(a);i=b;return}function oy(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=164360;d=c[a+176>>2]|0;if((d|0)!=0){Gt(d)}d=c[a+180>>2]|0;if((d|0)!=0){uu(d)}Fe(c[a+208>>2]|0);Fe(c[a+216>>2]|0);d=c[a+224>>2]|0;if((d|0)==0){Wx(a);i=b;return}Fe(d);Wx(a);i=b;return}function py(b,e,f,g,j,k,l,m,n,o){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0.0,s=0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0;p=i;q=i;i=i+8|0;s=b+176|0;v=c[s>>2]|0;if((v|0)==0){c[g>>2]=0;c[k>>2]=0;h[m>>3]=0.0;h[l>>3]=0.0;y=1;i=p;return y|0}f=It(v,e,f,q)|0;c[g>>2]=f;g=c[b+180>>2]|0;do{if((g|0)==0){c[k>>2]=0}else{if((a[b+173|0]&1)==0){c[k>>2]=wu(g,f,j)|0;break}v=c[q>>2]|0;if((v|0)>0){w=0;y=0;while(1){w=d[e+y|0]|0|w<<8;y=y+1|0;if((y|0)<(v|0)){}else{break}}}else{w=0}c[k>>2]=wu(g,w,j)|0}}while(0);do{if((c[(c[s>>2]|0)+8>>2]|0)==0){u=+h[b+184>>3];e=c[b+212>>2]|0;if((e|0)<=0){x=0.0;t=0.0;r=0.0;break}b=c[b+208>>2]|0;if(f>>>0<(c[b>>2]|0)>>>0){x=0.0;t=0.0;r=0.0;break}if((e|0)>1){k=0;while(1){j=(e+k|0)/2|0;s=(c[b+(j<<4)>>2]|0)>>>0>f>>>0;k=s?k:j;e=s?j:e;if((e-k|0)>1){}else{break}}}else{k=0}if(f>>>0>(c[b+(k<<4)+4>>2]|0)>>>0){x=0.0;t=0.0;r=0.0;break}x=0.0;t=0.0;r=0.0;u=+h[b+(k<<4)+8>>3]}else{u=+h[b+192>>3];t=+h[b+184>>3]*.5;r=+h[b+200>>3];e=c[b+220>>2]|0;if((e|0)<=0){x=u;u=0.0;break}b=c[b+216>>2]|0;if(f>>>0<(c[b>>2]|0)>>>0){x=u;u=0.0;break}if((e|0)>1){s=0;while(1){k=(e+s|0)/2|0;j=(c[b+(k<<5)+4>>2]|0)>>>0>f>>>0;s=j?s:k;e=j?k:e;if((e-s|0)>1){}else{break}}}else{s=0}if(f>>>0>(c[b+(s<<5)+4>>2]|0)>>>0){x=u;u=0.0;break}x=+h[b+(s<<5)+8>>3];t=+h[b+(s<<5)+16>>3];r=+h[b+(s<<5)+24>>3];u=0.0}}while(0);h[l>>3]=u;h[m>>3]=x;h[n>>3]=t;h[o>>3]=r;y=c[q>>2]|0;i=p;return y|0}function qy(a){a=a|0;var b=0;b=i;a=c[a+176>>2]|0;if((a|0)==0){a=0;i=b;return a|0}a=c[a+8>>2]|0;i=b;return a|0}function ry(a){a=a|0;var b=0,d=0;b=i;d=a+180|0;a=c[d>>2]|0;if((a|0)==0){d=0;i=b;return d|0}tu(a);d=c[d>>2]|0;i=b;return d|0}function sy(a){a=a|0;var b=0;b=i;a=c[a+176>>2]|0;if((a|0)==0){a=0;i=b;return a|0}a=c[a>>2]|0;i=b;return a|0}function ty(a,d,e){a=a|0;d=d|0;e=e|0;var 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;f=i;t=i;i=i+8|0;u=t;l=i;i=i+32|0;s=i;i=i+8|0;r=s;m=i;i=i+32|0;o=i;i=i+8|0;q=o;c[e>>2]=0;n=a+180|0;if((c[n>>2]|0)==0){x=0;i=f;return x|0}k=a+176|0;g=c[k>>2]|0;if((g|0)==0){g=0}else{g=c[g>>2]|0}if((te(g,164792)|0)==0){x=0;i=f;return x|0}if((c[a+52>>2]|0)>-1){c[e>>2]=c[a+228>>2];x=c[a+224>>2]|0;i=f;return x|0}if((Hn(d)|0)>0){h=-1;g=0}else{x=0;i=f;return x|0}while(1){p=In(d,g)|0;v=Jn(d,g)|0;j=(p|0)==3;if(j&(v|0)==10){break}if(j&(v|0)==1){h=g}else{h=(p|0)==0&(h|0)<0?g:h}g=g+1|0;if((g|0)>=(Hn(d)|0)){g=h;break}}if((g|0)<0){x=0;i=f;return x|0}p=jd[c[(c[a>>2]|0)+8>>2]&511](a)|0;w=c[k>>2]|0;h=c[(c[w>>2]|0)+28>>2]|0;x=164848;v=165816;while(1){j=v+16|0;if((Qc(x|0,h|0)|0)==0){break}x=c[j>>2]|0;if((x|0)==0){v=j;break}else{v=j}}h=GW(262144)|0;j=GW(524288)|0;bX(j|0,0,524288)|0;do{if((c[v>>2]|0)==0){c[t>>2]=c[(c[w>>2]|0)+28>>2];Qe(-1,166024,u);k=jd[c[(c[a>>2]|0)+4>>2]&511](a)|0;c[n>>2]=k;if((k|0)==0){o=0;break}else{l=0}do{if((wu(k,l,q)|0)==0){c[j+(l<<1<<2)>>2]=0}else{c[j+(l<<1<<2)>>2]=c[c[o>>2]>>2]}c[j+((l<<1|1)<<2)>>2]=0;l=l+1|0;k=c[n>>2]|0}while(l>>>0<65536);uu(k);o=0}else{fe(l,c[v+8>>2]|0);o=ou(l,16)|0;if((o|0)!=0){n=0;do{if((wu(o,n,r)|0)==1){c[h+(n<<2)>>2]=c[c[s>>2]>>2]}else{c[h+(n<<2)>>2]=0}n=n+1|0;}while(n>>>0<65536);su(o);HW(o)}o=GW(262144)|0;bX(o|0,0,262144)|0;n=c[v+12>>2]|0;q=c[n>>2]|0;if((q|0)!=0){do{fe(m,q);q=c[k>>2]|0;if((q|0)==0){q=0}else{q=c[q>>2]|0}q=zf(c[834]|0,q,m,0)|0;if((q|0)!=0){if((c[q+8>>2]|0)==0){Kt(q,j,65536,2)}else{Kt(q,o,65536,1)}Gt(q)}ke(m);n=n+4|0;q=c[n>>2]|0;}while((q|0)!=0)}On(d,c[v+4>>2]|0)|0;ke(l)}}while(0);l=ye(65536,2)|0;k=(j|0)!=0;m=(o|0)==0;n=(h|0)==0;p=(p|0)==0;q=0;do{a:do{if(k){s=q<<1;t=0;u=0;do{r=c[j+(u+s<<2)>>2]|0;if((r|0)==0){r=0;break a}x=Kn(d,g,r)|0;t=x&65535;u=u+1|0;}while((u|0)<2&x<<16>>16==0)}else{t=0;r=0}}while(0);do{if(!((t|0)!=0|m)){r=c[o+(q<<2)>>2]|0;if((r|0)==0){t=0;r=0;break}t=Kn(d,g,r)|0;s=Qn(d,t&65535)|0;x=(s&65535|0)==0?t:s&65535;t=x&65535;if(x<<16>>16!=0|n){break}r=c[h+(q<<2)>>2]|0;if((r|0)==0){r=0;break}s=Kn(d,g,r)|0;t=Qn(d,s&65535)|0;t=((t&65535|0)==0?s:t&65535)&65535}}while(0);do{if((t|0)!=0|n){u=r;s=52}else{u=c[h+(q<<2)>>2]|0;if((u|0)==0){r=0;u=0;s=53;break}t=(Kn(d,g,u)|0)&65535;s=52}}while(0);if((s|0)==52){s=0;r=t&65535;if((t|0)==0){s=53}}b:do{if((s|0)==53){if(k){s=c[j+(q<<2)>>2]|0}else{s=u}if((s|0)==0){break}else{t=8192;u=165304}while(1){u=u+4|0;if((t|0)==(s|0)){break}t=c[u>>2]|0;if((t|0)==0){break b}else{}}r=Kn(d,g,32)|0;if(p){break}s=Qn(d,r&65535)|0;r=(s&65535|0)==0?r:s&65535}}while(0);b[l+(q<<1)>>1]=r;q=q+1|0;}while(q>>>0<65536);c[e>>2]=65536;if((j|0)!=0){IW(j)}if(!n){IW(h)}if(m){x=l;i=f;return x|0}IW(o);x=l;i=f;return x|0}function uy(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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,A=0;j=i;p=i;i=i+8|0;r=p;k=i;i=i+8|0;g=i;i=i+8|0;h=g;u=i;i=i+16|0;l=u;s=i;i=i+16|0;m=s;q=i;i=i+8|0;c[u>>2]=13;t=l+8|0;c[t>>2]=0;c[t+4>>2]=0;c[s>>2]=13;o=m+8|0;c[o>>2]=0;c[o+4>>2]=0;A=c[f+16>>2]|0;n=b+4|0;c[n>>2]=A;c[b>>2]=ye(A,4)|0;if((c[n>>2]|0)<=0){i=j;return}v=q+4|0;w=(e|0)==0;x=0;a:while(1){bv(f,x,l)|0;Nf(l,d,m,0)|0;do{if((c[s>>2]|0)==7){do{if((c[u>>2]|0)==9){z=t;A=c[z>>2]|0;z=c[z+4>>2]|0}else{if(w){A=x;z=999999;break}A=x;z=(c[e>>2]|0)+1e5|0}}while(0);y=$u(f,x)|0;c[q>>2]=A;c[v>>2]=z;z=c[s>>2]|0;if((z|0)!=7){k=9;break a}A=c[o>>2]|0;$W(p|0,q|0,8)|0;y=Ux(d,y,r,A)|0;c[(c[b>>2]|0)+(x<<2)>>2]=y;y=c[(c[b>>2]|0)+(x<<2)>>2]|0;if((y|0)==0){break}if((a[y+172|0]&1)!=0){break}z=y+168|0;A=(c[z>>2]|0)+ -1|0;c[z>>2]=A;if((A|0)==0){fd[c[(c[y>>2]|0)+20>>2]&511](y)}c[(c[b>>2]|0)+(x<<2)>>2]=0}else{Qe(-1,166064,k);c[(c[b>>2]|0)+(x<<2)>>2]=0}}while(0);Of(l);Of(m);x=x+1|0;if((x|0)>=(c[n>>2]|0)){k=17;break}}if((k|0)==9){c[g>>2]=z;c[h+4>>2]=7;Qe(0,166192,h);tc()}else if((k|0)==17){i=j;return}}function vy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a+4|0;f=c[a>>2]|0;if((c[d>>2]|0)>0){e=0}else{Fe(f);i=b;return}do{f=c[f+(e<<2)>>2]|0;do{if((f|0)!=0){h=f+168|0;g=(c[h>>2]|0)+ -1|0;c[h>>2]=g;if((g|0)!=0){break}fd[c[(c[f>>2]|0)+20>>2]&511](f)}}while(0);e=e+1|0;f=c[a>>2]|0}while((e|0)<(c[d>>2]|0));Fe(f);i=b;return}function wy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;e=i;f=a+4|0;g=c[f>>2]|0;if((g|0)<=0){j=0;i=e;return j|0}h=0;while(1){j=c[(c[a>>2]|0)+(h<<2)>>2]|0;if((j|0)!=0){if((te(c[j+8>>2]|0,b)|0)==0){break}g=c[f>>2]|0}h=h+1|0;if((h|0)>=(g|0)){f=0;d=8;break}}if((d|0)==8){i=e;return f|0}j=c[(c[a>>2]|0)+(h<<2)>>2]|0;i=e;return j|0}function xy(a){a=a|0;i=i;return 0}function yy(a){a=a|0;i=i;return 0}function zy(a){a=a|0;i=i;return-1}function Ay(a,b,d){a=a|0;b=b|0;d=d|0;var 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,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;e=i;l=i;i=i+32|0;q=i;i=i+32|0;r=i;i=i+32|0;p=i;i=i+32|0;o=i;i=i+32|0;E=i;i=i+32|0;G=i;i=i+32|0;C=i;i=i+32|0;F=i;i=i+32|0;D=i;i=i+32|0;z=i;i=i+32|0;A=i;i=i+32|0;y=i;i=i+32|0;B=i;i=i+32|0;g=i;i=i+32|0;f=g;h=i;i=i+32|0;j=i;i=i+32|0;n=i;i=i+32|0;k=i;i=i+32|0;u=i;i=i+32|0;s=i;i=i+32|0;t=i;i=i+32|0;w=i;i=i+32|0;v=i;i=i+32|0;M=i;i=i+32|0;L=i;i=i+32|0;I=i;i=i+32|0;H=i;i=i+32|0;x=i;i=i+32|0;J=i;i=i+32|0;a:while(1){m=b+ -32|0;b:while(1){O=b-a|0;Q=O>>5;switch(Q|0){case 3:{K=6;break a};case 5:{K=15;break a};case 4:{K=14;break a};case 2:{K=4;break a};case 1:case 0:{K=81;break a};default:{}}if((O|0)<992){K=21;break a}P=(Q|0)/2|0;N=a+(P<<5)|0;do{if((O|0)>31968){Q=(Q|0)/4|0;O=a+(Q<<5)|0;P=a+(Q+P<<5)|0;Q=By(a,O,N,P,d)|0;if(!(Bd[c[d>>2]&255](m,P)|0)){break}$W(B|0,P|0,32)|0;$W(P|0,m|0,32)|0;$W(m|0,B|0,32)|0;if(!(Bd[c[d>>2]&255](P,N)|0)){Q=Q+1|0;break}$W(A|0,N|0,32)|0;$W(N|0,P|0,32)|0;$W(P|0,A|0,32)|0;if(!(Bd[c[d>>2]&255](N,O)|0)){Q=Q+2|0;break}$W(z|0,O|0,32)|0;$W(O|0,N|0,32)|0;$W(N|0,z|0,32)|0;if(!(Bd[c[d>>2]&255](O,a)|0)){Q=Q+3|0;break}$W(y|0,a|0,32)|0;$W(a|0,O|0,32)|0;$W(O|0,y|0,32)|0;Q=Q+4|0}else{S=Bd[c[d>>2]&255](N,a)|0;O=Bd[c[d>>2]&255](m,N)|0;if(!S){if(!O){Q=0;break}$W(D|0,N|0,32)|0;$W(N|0,m|0,32)|0;$W(m|0,D|0,32)|0;if(!(Bd[c[d>>2]&255](N,a)|0)){Q=1;break}$W(C|0,a|0,32)|0;$W(a|0,N|0,32)|0;$W(N|0,C|0,32)|0;Q=2;break}if(O){$W(E|0,a|0,32)|0;$W(a|0,m|0,32)|0;$W(m|0,E|0,32)|0;Q=1;break}$W(G|0,a|0,32)|0;$W(a|0,N|0,32)|0;$W(N|0,G|0,32)|0;if(!(Bd[c[d>>2]&255](m,N)|0)){Q=1;break}$W(F|0,N|0,32)|0;$W(N|0,m|0,32)|0;$W(m|0,F|0,32)|0;Q=2}}while(0);do{if(Bd[c[d>>2]&255](a,N)|0){P=m}else{P=m;while(1){P=P+ -32|0;if((a|0)==(P|0)){break}if(Bd[c[d>>2]&255](P,N)|0){K=64;break}else{}}if((K|0)==64){K=0;$W(I|0,a|0,32)|0;$W(a|0,P|0,32)|0;$W(P|0,I|0,32)|0;Q=Q+1|0;break}O=a+32|0;if(!(Bd[c[d>>2]&255](a,m)|0)){if((O|0)==(m|0)){K=81;break a}while(1){N=O+32|0;if(Bd[c[d>>2]&255](a,O)|0){break}if((N|0)==(m|0)){K=81;break a}else{O=N}}$W(x|0,O|0,32)|0;$W(O|0,m|0,32)|0;$W(m|0,x|0,32)|0;O=N}if((O|0)==(m|0)){K=81;break a}else{N=m}while(1){P=O;while(1){O=P+32|0;if(Bd[c[d>>2]&255](a,P)|0){break}else{P=O}}do{N=N+ -32|0;}while(Bd[c[d>>2]&255](a,N)|0);if(P>>>0>=N>>>0){a=P;continue b}$W(H|0,P|0,32)|0;$W(P|0,N|0,32)|0;$W(N|0,H|0,32)|0}}}while(0);O=a+32|0;c:do{if(O>>>0

>>0){while(1){S=O;while(1){O=S+32|0;if(Bd[c[d>>2]&255](S,N)|0){S=O}else{R=P;break}}do{R=R+ -32|0;}while(!(Bd[c[d>>2]&255](R,N)|0));if(S>>>0>R>>>0){O=S;break c}$W(L|0,S|0,32)|0;$W(S|0,R|0,32)|0;$W(R|0,L|0,32)|0;P=R;N=(N|0)==(S|0)?R:N;Q=Q+1|0}}}while(0);do{if((O|0)!=(N|0)){if(!(Bd[c[d>>2]&255](N,O)|0)){break}$W(M|0,O|0,32)|0;$W(O|0,N|0,32)|0;$W(N|0,M|0,32)|0;Q=Q+1|0}}while(0);if((Q|0)==0){P=Cy(a,O,d)|0;N=O+32|0;if(Cy(N,b,d)|0){K=76;break}if(P){a=N;continue}}if((O-a|0)>=(b-O|0)){K=80;break}Ay(a,O,d);a=O+32|0}if((K|0)==76){K=0;if(P){K=81;break}else{b=O;continue}}else if((K|0)==80){K=0;Ay(O+32|0,b,d);b=O;continue}}if((K|0)==4){if(!(Bd[c[d>>2]&255](m,a)|0)){i=e;return}$W(J|0,a|0,32)|0;$W(a|0,m|0,32)|0;$W(m|0,J|0,32)|0;i=e;return}else if((K|0)==6){f=a+32|0;S=Bd[c[d>>2]&255](f,a)|0;g=Bd[c[d>>2]&255](m,f)|0;if(!S){if(!g){i=e;return}$W(v|0,f|0,32)|0;$W(f|0,m|0,32)|0;$W(m|0,v|0,32)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){i=e;return}$W(t|0,a|0,32)|0;$W(a|0,f|0,32)|0;$W(f|0,t|0,32)|0;i=e;return}if(g){$W(u|0,a|0,32)|0;$W(a|0,m|0,32)|0;$W(m|0,u|0,32)|0;i=e;return}$W(s|0,a|0,32)|0;$W(a|0,f|0,32)|0;$W(f|0,s|0,32)|0;if(!(Bd[c[d>>2]&255](m,f)|0)){i=e;return}$W(w|0,f|0,32)|0;$W(f|0,m|0,32)|0;$W(m|0,w|0,32)|0;i=e;return}else if((K|0)==14){By(a,a+32|0,a+64|0,m,d)|0;i=e;return}else if((K|0)==15){g=a+32|0;b=a+64|0;f=a+96|0;By(a,g,b,f,d)|0;if(!(Bd[c[d>>2]&255](m,f)|0)){i=e;return}$W(k|0,f|0,32)|0;$W(f|0,m|0,32)|0;$W(m|0,k|0,32)|0;if(!(Bd[c[d>>2]&255](f,b)|0)){i=e;return}$W(j|0,b|0,32)|0;$W(b|0,f|0,32)|0;$W(f|0,j|0,32)|0;if(!(Bd[c[d>>2]&255](b,g)|0)){i=e;return}$W(h|0,g|0,32)|0;$W(g|0,b|0,32)|0;$W(b|0,h|0,32)|0;if(!(Bd[c[d>>2]&255](g,a)|0)){i=e;return}$W(n|0,a|0,32)|0;$W(a|0,g|0,32)|0;$W(g|0,n|0,32)|0;i=e;return}else if((K|0)==21){h=a+64|0;j=a+32|0;S=Bd[c[d>>2]&255](j,a)|0;k=Bd[c[d>>2]&255](h,j)|0;do{if(S){if(k){$W(l|0,a|0,32)|0;$W(a|0,h|0,32)|0;$W(h|0,l|0,32)|0;break}$W(q|0,a|0,32)|0;$W(a|0,j|0,32)|0;$W(j|0,q|0,32)|0;if(!(Bd[c[d>>2]&255](h,j)|0)){break}$W(p|0,j|0,32)|0;$W(j|0,h|0,32)|0;$W(h|0,p|0,32)|0}else{if(!k){break}$W(o|0,j|0,32)|0;$W(j|0,h|0,32)|0;$W(h|0,o|0,32)|0;if(!(Bd[c[d>>2]&255](j,a)|0)){break}$W(r|0,a|0,32)|0;$W(a|0,j|0,32)|0;$W(j|0,r|0,32)|0}}while(0);j=a+96|0;if((j|0)==(b|0)){i=e;return}while(1){if(Bd[c[d>>2]&255](j,h)|0){$W(g|0,j|0,32)|0;k=j;while(1){$W(k|0,h|0,32)|0;if((h|0)==(a|0)){break}k=h+ -32|0;if(Bd[c[d>>2]&255](f,k)|0){S=h;h=k;k=S}else{break}}$W(h|0,g|0,32)|0}h=j+32|0;if((h|0)==(b|0)){break}else{S=j;j=h;h=S}}i=e;return}else if((K|0)==81){i=e;return}}function By(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;n=i;i=i+32|0;p=i;i=i+32|0;l=i;i=i+32|0;o=i;i=i+32|0;m=i;i=i+32|0;h=i;i=i+32|0;g=i;i=i+32|0;j=i;i=i+32|0;r=Bd[c[f>>2]&255](b,a)|0;q=Bd[c[f>>2]&255](d,b)|0;do{if(r){if(q){$W(n|0,a|0,32)|0;$W(a|0,d|0,32)|0;$W(d|0,n|0,32)|0;l=1;break}$W(p|0,a|0,32)|0;$W(a|0,b|0,32)|0;$W(b|0,p|0,32)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){l=1;break}$W(o|0,b|0,32)|0;$W(b|0,d|0,32)|0;$W(d|0,o|0,32)|0;l=2}else{if(!q){l=0;break}$W(m|0,b|0,32)|0;$W(b|0,d|0,32)|0;$W(d|0,m|0,32)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){l=1;break}$W(l|0,a|0,32)|0;$W(a|0,b|0,32)|0;$W(b|0,l|0,32)|0;l=2}}while(0);if(!(Bd[c[f>>2]&255](e,d)|0)){r=l;i=k;return r|0}$W(j|0,d|0,32)|0;$W(d|0,e|0,32)|0;$W(e|0,j|0,32)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){r=l+1|0;i=k;return r|0}$W(h|0,b|0,32)|0;$W(b|0,d|0,32)|0;$W(d|0,h|0,32)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){r=l+2|0;i=k;return r|0}$W(g|0,a|0,32)|0;$W(a|0,b|0,32)|0;$W(b|0,g|0,32)|0;r=l+3|0;i=k;return r|0}function Cy(a,b,d){a=a|0;b=b|0;d=d|0;var 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;e=i;n=i;i=i+32|0;r=i;i=i+32|0;s=i;i=i+32|0;q=i;i=i+32|0;t=i;i=i+32|0;m=i;i=i+32|0;j=i;i=i+32|0;l=i;i=i+32|0;k=i;i=i+32|0;u=i;i=i+32|0;w=i;i=i+32|0;p=i;i=i+32|0;v=i;i=i+32|0;o=i;i=i+32|0;x=i;i=i+32|0;g=i;i=i+32|0;h=g;switch(b-a>>5|0){case 4:{By(a,a+32|0,a+64|0,b+ -32|0,d)|0;x=1;i=e;return x|0};case 1:case 0:{x=1;i=e;return x|0};case 3:{f=a+32|0;b=b+ -32|0;x=Bd[c[d>>2]&255](f,a)|0;g=Bd[c[d>>2]&255](b,f)|0;if(!x){if(!g){x=1;i=e;return x|0}$W(o|0,f|0,32)|0;$W(f|0,b|0,32)|0;$W(b|0,o|0,32)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){x=1;i=e;return x|0}$W(p|0,a|0,32)|0;$W(a|0,f|0,32)|0;$W(f|0,p|0,32)|0;x=1;i=e;return x|0}if(g){$W(u|0,a|0,32)|0;$W(a|0,b|0,32)|0;$W(b|0,u|0,32)|0;x=1;i=e;return x|0}$W(w|0,a|0,32)|0;$W(a|0,f|0,32)|0;$W(f|0,w|0,32)|0;if(!(Bd[c[d>>2]&255](b,f)|0)){x=1;i=e;return x|0}$W(v|0,f|0,32)|0;$W(f|0,b|0,32)|0;$W(b|0,v|0,32)|0;x=1;i=e;return x|0};case 5:{g=a+32|0;h=a+64|0;f=a+96|0;b=b+ -32|0;By(a,g,h,f,d)|0;if(!(Bd[c[d>>2]&255](b,f)|0)){x=1;i=e;return x|0}$W(k|0,f|0,32)|0;$W(f|0,b|0,32)|0;$W(b|0,k|0,32)|0;if(!(Bd[c[d>>2]&255](f,h)|0)){x=1;i=e;return x|0}$W(j|0,h|0,32)|0;$W(h|0,f|0,32)|0;$W(f|0,j|0,32)|0;if(!(Bd[c[d>>2]&255](h,g)|0)){x=1;i=e;return x|0}$W(m|0,g|0,32)|0;$W(g|0,h|0,32)|0;$W(h|0,m|0,32)|0;if(!(Bd[c[d>>2]&255](g,a)|0)){x=1;i=e;return x|0}$W(l|0,a|0,32)|0;$W(a|0,g|0,32)|0;$W(g|0,l|0,32)|0;x=1;i=e;return x|0};case 2:{b=b+ -32|0;if(!(Bd[c[d>>2]&255](b,a)|0)){x=1;i=e;return x|0}$W(x|0,a|0,32)|0;$W(a|0,b|0,32)|0;$W(b|0,x|0,32)|0;x=1;i=e;return x|0};default:{j=a+64|0;k=a+32|0;x=Bd[c[d>>2]&255](k,a)|0;l=Bd[c[d>>2]&255](j,k)|0;do{if(x){if(l){$W(n|0,a|0,32)|0;$W(a|0,j|0,32)|0;$W(j|0,n|0,32)|0;break}$W(r|0,a|0,32)|0;$W(a|0,k|0,32)|0;$W(k|0,r|0,32)|0;if(!(Bd[c[d>>2]&255](j,k)|0)){break}$W(q|0,k|0,32)|0;$W(k|0,j|0,32)|0;$W(j|0,q|0,32)|0}else{if(!l){break}$W(t|0,k|0,32)|0;$W(k|0,j|0,32)|0;$W(j|0,t|0,32)|0;if(!(Bd[c[d>>2]&255](k,a)|0)){break}$W(s|0,a|0,32)|0;$W(a|0,k|0,32)|0;$W(k|0,s|0,32)|0}}while(0);k=a+96|0;if((k|0)==(b|0)){x=1;i=e;return x|0}l=0;while(1){if(Bd[c[d>>2]&255](k,j)|0){$W(g|0,k|0,32)|0;m=k;while(1){$W(m|0,j|0,32)|0;if((j|0)==(a|0)){break}m=j+ -32|0;if(Bd[c[d>>2]&255](h,m)|0){x=j;j=m;m=x}else{break}}$W(j|0,g|0,32)|0;l=l+1|0;if((l|0)==8){break}}j=k+32|0;if((j|0)==(b|0)){a=1;f=35;break}else{x=k;k=j;j=x}}if((f|0)==35){i=e;return a|0}x=(k+32|0)==(b|0);i=e;return x|0}}return 0}function Dy(a,b,d){a=a|0;b=b|0;d=d|0;var 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,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;e=i;r=i;i=i+16|0;q=i;i=i+16|0;o=i;i=i+16|0;p=i;i=i+16|0;k=i;i=i+16|0;E=i;i=i+16|0;G=i;i=i+16|0;C=i;i=i+16|0;F=i;i=i+16|0;D=i;i=i+16|0;z=i;i=i+16|0;A=i;i=i+16|0;y=i;i=i+16|0;B=i;i=i+16|0;g=i;i=i+16|0;f=g;m=i;i=i+16|0;h=i;i=i+16|0;j=i;i=i+16|0;l=i;i=i+16|0;v=i;i=i+16|0;t=i;i=i+16|0;s=i;i=i+16|0;u=i;i=i+16|0;w=i;i=i+16|0;M=i;i=i+16|0;L=i;i=i+16|0;I=i;i=i+16|0;H=i;i=i+16|0;x=i;i=i+16|0;J=i;i=i+16|0;a:while(1){n=b+ -16|0;b:while(1){O=b-a|0;Q=O>>4;switch(Q|0){case 5:{K=15;break a};case 4:{K=14;break a};case 1:case 0:{K=81;break a};case 3:{K=6;break a};case 2:{K=4;break a};default:{}}if((O|0)<496){K=21;break a}P=(Q|0)/2|0;N=a+(P<<4)|0;do{if((O|0)>15984){Q=(Q|0)/4|0;O=a+(Q<<4)|0;P=a+(Q+P<<4)|0;Q=Ey(a,O,N,P,d)|0;if(!(Bd[c[d>>2]&255](n,P)|0)){break}$W(B|0,P|0,16)|0;$W(P|0,n|0,16)|0;$W(n|0,B|0,16)|0;if(!(Bd[c[d>>2]&255](P,N)|0)){Q=Q+1|0;break}$W(A|0,N|0,16)|0;$W(N|0,P|0,16)|0;$W(P|0,A|0,16)|0;if(!(Bd[c[d>>2]&255](N,O)|0)){Q=Q+2|0;break}$W(z|0,O|0,16)|0;$W(O|0,N|0,16)|0;$W(N|0,z|0,16)|0;if(!(Bd[c[d>>2]&255](O,a)|0)){Q=Q+3|0;break}$W(y|0,a|0,16)|0;$W(a|0,O|0,16)|0;$W(O|0,y|0,16)|0;Q=Q+4|0}else{S=Bd[c[d>>2]&255](N,a)|0;O=Bd[c[d>>2]&255](n,N)|0;if(!S){if(!O){Q=0;break}$W(D|0,N|0,16)|0;$W(N|0,n|0,16)|0;$W(n|0,D|0,16)|0;if(!(Bd[c[d>>2]&255](N,a)|0)){Q=1;break}$W(C|0,a|0,16)|0;$W(a|0,N|0,16)|0;$W(N|0,C|0,16)|0;Q=2;break}if(O){$W(E|0,a|0,16)|0;$W(a|0,n|0,16)|0;$W(n|0,E|0,16)|0;Q=1;break}$W(G|0,a|0,16)|0;$W(a|0,N|0,16)|0;$W(N|0,G|0,16)|0;if(!(Bd[c[d>>2]&255](n,N)|0)){Q=1;break}$W(F|0,N|0,16)|0;$W(N|0,n|0,16)|0;$W(n|0,F|0,16)|0;Q=2}}while(0);do{if(Bd[c[d>>2]&255](a,N)|0){P=n}else{P=n;while(1){P=P+ -16|0;if((a|0)==(P|0)){break}if(Bd[c[d>>2]&255](P,N)|0){K=64;break}else{}}if((K|0)==64){K=0;$W(I|0,a|0,16)|0;$W(a|0,P|0,16)|0;$W(P|0,I|0,16)|0;Q=Q+1|0;break}O=a+16|0;if(!(Bd[c[d>>2]&255](a,n)|0)){if((O|0)==(n|0)){K=81;break a}while(1){N=O+16|0;if(Bd[c[d>>2]&255](a,O)|0){break}if((N|0)==(n|0)){K=81;break a}else{O=N}}$W(x|0,O|0,16)|0;$W(O|0,n|0,16)|0;$W(n|0,x|0,16)|0;O=N}if((O|0)==(n|0)){K=81;break a}else{N=n}while(1){P=O;while(1){O=P+16|0;if(Bd[c[d>>2]&255](a,P)|0){break}else{P=O}}do{N=N+ -16|0;}while(Bd[c[d>>2]&255](a,N)|0);if(P>>>0>=N>>>0){a=P;continue b}$W(H|0,P|0,16)|0;$W(P|0,N|0,16)|0;$W(N|0,H|0,16)|0}}}while(0);O=a+16|0;c:do{if(O>>>0

>>0){while(1){S=O;while(1){O=S+16|0;if(Bd[c[d>>2]&255](S,N)|0){S=O}else{R=P;break}}do{R=R+ -16|0;}while(!(Bd[c[d>>2]&255](R,N)|0));if(S>>>0>R>>>0){O=S;break c}$W(L|0,S|0,16)|0;$W(S|0,R|0,16)|0;$W(R|0,L|0,16)|0;P=R;N=(N|0)==(S|0)?R:N;Q=Q+1|0}}}while(0);do{if((O|0)!=(N|0)){if(!(Bd[c[d>>2]&255](N,O)|0)){break}$W(M|0,O|0,16)|0;$W(O|0,N|0,16)|0;$W(N|0,M|0,16)|0;Q=Q+1|0}}while(0);if((Q|0)==0){P=Fy(a,O,d)|0;N=O+16|0;if(Fy(N,b,d)|0){K=76;break}if(P){a=N;continue}}if((O-a|0)>=(b-O|0)){K=80;break}Dy(a,O,d);a=O+16|0}if((K|0)==76){K=0;if(P){K=81;break}else{b=O;continue}}else if((K|0)==80){K=0;Dy(O+16|0,b,d);b=O;continue}}if((K|0)==4){if(!(Bd[c[d>>2]&255](n,a)|0)){i=e;return}$W(J|0,a|0,16)|0;$W(a|0,n|0,16)|0;$W(n|0,J|0,16)|0;i=e;return}else if((K|0)==6){f=a+16|0;S=Bd[c[d>>2]&255](f,a)|0;g=Bd[c[d>>2]&255](n,f)|0;if(!S){if(!g){i=e;return}$W(w|0,f|0,16)|0;$W(f|0,n|0,16)|0;$W(n|0,w|0,16)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){i=e;return}$W(s|0,a|0,16)|0;$W(a|0,f|0,16)|0;$W(f|0,s|0,16)|0;i=e;return}if(g){$W(v|0,a|0,16)|0;$W(a|0,n|0,16)|0;$W(n|0,v|0,16)|0;i=e;return}$W(t|0,a|0,16)|0;$W(a|0,f|0,16)|0;$W(f|0,t|0,16)|0;if(!(Bd[c[d>>2]&255](n,f)|0)){i=e;return}$W(u|0,f|0,16)|0;$W(f|0,n|0,16)|0;$W(n|0,u|0,16)|0;i=e;return}else if((K|0)==14){Ey(a,a+16|0,a+32|0,n,d)|0;i=e;return}else if((K|0)==15){g=a+16|0;b=a+32|0;f=a+48|0;Ey(a,g,b,f,d)|0;if(!(Bd[c[d>>2]&255](n,f)|0)){i=e;return}$W(l|0,f|0,16)|0;$W(f|0,n|0,16)|0;$W(n|0,l|0,16)|0;if(!(Bd[c[d>>2]&255](f,b)|0)){i=e;return}$W(h|0,b|0,16)|0;$W(b|0,f|0,16)|0;$W(f|0,h|0,16)|0;if(!(Bd[c[d>>2]&255](b,g)|0)){i=e;return}$W(m|0,g|0,16)|0;$W(g|0,b|0,16)|0;$W(b|0,m|0,16)|0;if(!(Bd[c[d>>2]&255](g,a)|0)){i=e;return}$W(j|0,a|0,16)|0;$W(a|0,g|0,16)|0;$W(g|0,j|0,16)|0;i=e;return}else if((K|0)==21){h=a+32|0;j=a+16|0;S=Bd[c[d>>2]&255](j,a)|0;l=Bd[c[d>>2]&255](h,j)|0;do{if(S){if(l){$W(r|0,a|0,16)|0;$W(a|0,h|0,16)|0;$W(h|0,r|0,16)|0;break}$W(q|0,a|0,16)|0;$W(a|0,j|0,16)|0;$W(j|0,q|0,16)|0;if(!(Bd[c[d>>2]&255](h,j)|0)){break}$W(p|0,j|0,16)|0;$W(j|0,h|0,16)|0;$W(h|0,p|0,16)|0}else{if(!l){break}$W(k|0,j|0,16)|0;$W(j|0,h|0,16)|0;$W(h|0,k|0,16)|0;if(!(Bd[c[d>>2]&255](j,a)|0)){break}$W(o|0,a|0,16)|0;$W(a|0,j|0,16)|0;$W(j|0,o|0,16)|0}}while(0);j=a+48|0;if((j|0)==(b|0)){i=e;return}while(1){if(Bd[c[d>>2]&255](j,h)|0){$W(g|0,j|0,16)|0;k=j;while(1){$W(k|0,h|0,16)|0;if((h|0)==(a|0)){break}k=h+ -16|0;if(Bd[c[d>>2]&255](f,k)|0){S=h;h=k;k=S}else{break}}$W(h|0,g|0,16)|0}h=j+16|0;if((h|0)==(b|0)){break}else{S=j;j=h;h=S}}i=e;return}else if((K|0)==81){i=e;return}}function Ey(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;n=i;i=i+16|0;p=i;i=i+16|0;l=i;i=i+16|0;o=i;i=i+16|0;m=i;i=i+16|0;h=i;i=i+16|0;g=i;i=i+16|0;j=i;i=i+16|0;r=Bd[c[f>>2]&255](b,a)|0;q=Bd[c[f>>2]&255](d,b)|0;do{if(r){if(q){$W(n|0,a|0,16)|0;$W(a|0,d|0,16)|0;$W(d|0,n|0,16)|0;l=1;break}$W(p|0,a|0,16)|0;$W(a|0,b|0,16)|0;$W(b|0,p|0,16)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){l=1;break}$W(o|0,b|0,16)|0;$W(b|0,d|0,16)|0;$W(d|0,o|0,16)|0;l=2}else{if(!q){l=0;break}$W(m|0,b|0,16)|0;$W(b|0,d|0,16)|0;$W(d|0,m|0,16)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){l=1;break}$W(l|0,a|0,16)|0;$W(a|0,b|0,16)|0;$W(b|0,l|0,16)|0;l=2}}while(0);if(!(Bd[c[f>>2]&255](e,d)|0)){r=l;i=k;return r|0}$W(j|0,d|0,16)|0;$W(d|0,e|0,16)|0;$W(e|0,j|0,16)|0;if(!(Bd[c[f>>2]&255](d,b)|0)){r=l+1|0;i=k;return r|0}$W(h|0,b|0,16)|0;$W(b|0,d|0,16)|0;$W(d|0,h|0,16)|0;if(!(Bd[c[f>>2]&255](b,a)|0)){r=l+2|0;i=k;return r|0}$W(g|0,a|0,16)|0;$W(a|0,b|0,16)|0;$W(b|0,g|0,16)|0;r=l+3|0;i=k;return r|0}function Fy(a,b,d){a=a|0;b=b|0;d=d|0;var 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;e=i;n=i;i=i+16|0;r=i;i=i+16|0;s=i;i=i+16|0;q=i;i=i+16|0;t=i;i=i+16|0;m=i;i=i+16|0;j=i;i=i+16|0;l=i;i=i+16|0;k=i;i=i+16|0;u=i;i=i+16|0;w=i;i=i+16|0;p=i;i=i+16|0;v=i;i=i+16|0;o=i;i=i+16|0;x=i;i=i+16|0;g=i;i=i+16|0;h=g;switch(b-a>>4|0){case 4:{Ey(a,a+16|0,a+32|0,b+ -16|0,d)|0;x=1;i=e;return x|0};case 1:case 0:{x=1;i=e;return x|0};case 3:{f=a+16|0;b=b+ -16|0;x=Bd[c[d>>2]&255](f,a)|0;g=Bd[c[d>>2]&255](b,f)|0;if(!x){if(!g){x=1;i=e;return x|0}$W(o|0,f|0,16)|0;$W(f|0,b|0,16)|0;$W(b|0,o|0,16)|0;if(!(Bd[c[d>>2]&255](f,a)|0)){x=1;i=e;return x|0}$W(p|0,a|0,16)|0;$W(a|0,f|0,16)|0;$W(f|0,p|0,16)|0;x=1;i=e;return x|0}if(g){$W(u|0,a|0,16)|0;$W(a|0,b|0,16)|0;$W(b|0,u|0,16)|0;x=1;i=e;return x|0}$W(w|0,a|0,16)|0;$W(a|0,f|0,16)|0;$W(f|0,w|0,16)|0;if(!(Bd[c[d>>2]&255](b,f)|0)){x=1;i=e;return x|0}$W(v|0,f|0,16)|0;$W(f|0,b|0,16)|0;$W(b|0,v|0,16)|0;x=1;i=e;return x|0};case 5:{g=a+16|0;h=a+32|0;f=a+48|0;b=b+ -16|0;Ey(a,g,h,f,d)|0;if(!(Bd[c[d>>2]&255](b,f)|0)){x=1;i=e;return x|0}$W(k|0,f|0,16)|0;$W(f|0,b|0,16)|0;$W(b|0,k|0,16)|0;if(!(Bd[c[d>>2]&255](f,h)|0)){x=1;i=e;return x|0}$W(j|0,h|0,16)|0;$W(h|0,f|0,16)|0;$W(f|0,j|0,16)|0;if(!(Bd[c[d>>2]&255](h,g)|0)){x=1;i=e;return x|0}$W(m|0,g|0,16)|0;$W(g|0,h|0,16)|0;$W(h|0,m|0,16)|0;if(!(Bd[c[d>>2]&255](g,a)|0)){x=1;i=e;return x|0}$W(l|0,a|0,16)|0;$W(a|0,g|0,16)|0;$W(g|0,l|0,16)|0;x=1;i=e;return x|0};case 2:{b=b+ -16|0;if(!(Bd[c[d>>2]&255](b,a)|0)){x=1;i=e;return x|0}$W(x|0,a|0,16)|0;$W(a|0,b|0,16)|0;$W(b|0,x|0,16)|0;x=1;i=e;return x|0};default:{j=a+32|0;k=a+16|0;x=Bd[c[d>>2]&255](k,a)|0;l=Bd[c[d>>2]&255](j,k)|0;do{if(x){if(l){$W(n|0,a|0,16)|0;$W(a|0,j|0,16)|0;$W(j|0,n|0,16)|0;break}$W(r|0,a|0,16)|0;$W(a|0,k|0,16)|0;$W(k|0,r|0,16)|0;if(!(Bd[c[d>>2]&255](j,k)|0)){break}$W(q|0,k|0,16)|0;$W(k|0,j|0,16)|0;$W(j|0,q|0,16)|0}else{if(!l){break}$W(t|0,k|0,16)|0;$W(k|0,j|0,16)|0;$W(j|0,t|0,16)|0;if(!(Bd[c[d>>2]&255](k,a)|0)){break}$W(s|0,a|0,16)|0;$W(a|0,k|0,16)|0;$W(k|0,s|0,16)|0}}while(0);k=a+48|0;if((k|0)==(b|0)){x=1;i=e;return x|0}l=0;while(1){if(Bd[c[d>>2]&255](k,j)|0){$W(g|0,k|0,16)|0;m=k;while(1){$W(m|0,j|0,16)|0;if((j|0)==(a|0)){break}m=j+ -16|0;if(Bd[c[d>>2]&255](h,m)|0){x=j;j=m;m=x}else{break}}$W(j|0,g|0,16)|0;l=l+1|0;if((l|0)==8){break}}j=k+16|0;if((j|0)==(b|0)){a=1;f=35;break}else{x=k;k=j;j=x}}if((f|0)==35){i=e;return a|0}x=(k+16|0)==(b|0);i=e;return x|0}}return 0}function Gy(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0,g=0,j=0,k=0.0;g=a+24|0;k=+h[g>>3];e=a+8|0;j=a+16|0;f=1.0/(+h[a>>3]*k- +h[e>>3]*+h[j>>3]);h[b>>3]=k*f;h[b+8>>3]=-0.0-f*+h[e>>3];h[b+16>>3]=-0.0-f*+h[j>>3];h[b+24>>3]=f*+h[a>>3];c=a+40|0;d=a+32|0;h[b+32>>3]=f*(+h[j>>3]*+h[c>>3]- +h[g>>3]*+h[d>>3]);h[b+40>>3]=f*(+h[e>>3]*+h[d>>3]- +h[a>>3]*+h[c>>3]);i=i;return-1}function Hy(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;var f=0.0;f=+h[a+40>>3]+(+h[a+8>>3]*b+ +h[a+24>>3]*c);h[d>>3]=+h[a+32>>3]+(+h[a>>3]*b+ +h[a+16>>3]*c);h[e>>3]=f;i=i;return}function Iy(a){a=a|0;i=i;return}function Jy(a,b){a=a|0;b=b|0;var 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,A=0,B=0,C=0,D=0;d=i;C=i;i=i+8|0;m=i;i=i+8|0;k=i;i=i+8|0;j=k;n=i;i=i+8|0;l=n;p=i;i=i+8|0;o=p;h=i;i=i+8|0;g=h;r=i;i=i+8|0;q=r;t=i;i=i+8|0;u=t;w=i;i=i+8|0;v=w;y=i;i=i+8|0;x=y;A=i;i=i+8|0;s=A;B=i;i=i+16|0;f=B;c[B>>2]=13;z=f+8|0;c[z>>2]=0;c[z+4>>2]=0;D=c[a>>2]|0;if((D|0)==4){e=c[a+8>>2]|0;do{if((Qc(e|0,167872)|0)!=0){if((Qc(e|0,167888)|0)==0){break}do{if((Qc(e|0,167896)|0)!=0){if((Qc(e|0,167912)|0)==0){break}do{if((Qc(e|0,167920)|0)!=0){if((Qc(e|0,167936)|0)==0){break}if((Qc(e|0,167944)|0)==0){D=FW(8)|0;c[D>>2]=169832;c[D+4>>2]=0;i=d;return D|0}else{c[A>>2]=e;Qe(-1,167952,s);D=0;i=d;return D|0}}}while(0);D=FW(4)|0;c[D>>2]=168512;i=d;return D|0}}while(0);D=FW(4)|0;c[D>>2]=168336;i=d;return D|0}}while(0);D=FW(4)|0;c[D>>2]=168128;i=d;return D|0}else if((D|0)==6){s=a+8|0;ut(c[s>>2]|0,0,f)|0;a:do{if((c[B>>2]|0)==4){z=c[z>>2]|0;do{if((Qc(z|0,167872)|0)!=0){if((Qc(z|0,167888)|0)==0){break}do{if((Qc(z|0,167896)|0)!=0){if((Qc(z|0,167912)|0)==0){break}do{if((Qc(z|0,167920)|0)!=0){if((Qc(z|0,167936)|0)==0){break}if((Qc(z|0,167976)|0)==0){A=c[a>>2]|0;if((A|0)==6){g=Ky(c[s>>2]|0)|0;break a}else{c[y>>2]=A;c[x+4>>2]=6;Qe(0,172720,x);tc()}}if((Qc(z|0,167984)|0)==0){x=c[a>>2]|0;if((x|0)==6){g=Ly(c[s>>2]|0)|0;break a}else{c[w>>2]=x;c[v+4>>2]=6;Qe(0,172720,v);tc()}}if((Qc(z|0,167992)|0)==0){v=c[a>>2]|0;if((v|0)==6){g=My(c[s>>2]|0)|0;break a}else{c[t>>2]=v;c[u+4>>2]=6;Qe(0,172720,u);tc()}}if((Qc(z|0,168e3)|0)==0){t=c[a>>2]|0;if((t|0)==6){g=Ny(c[s>>2]|0,b)|0;break a}else{c[r>>2]=t;c[q+4>>2]=6;Qe(0,172720,q);tc()}}do{if((Qc(z|0,168016)|0)!=0){if((Qc(z|0,168024)|0)==0){break}if((Qc(z|0,168032)|0)==0){q=c[a>>2]|0;if((q|0)==6){g=Py(c[s>>2]|0,b)|0;break a}else{c[p>>2]=q;c[o+4>>2]=6;Qe(0,172720,o);tc()}}if((Qc(z|0,168048)|0)==0){o=c[a>>2]|0;if((o|0)==6){g=Qy(c[s>>2]|0,b)|0;break a}else{c[n>>2]=o;c[l+4>>2]=6;Qe(0,172720,l);tc()}}if((Qc(z|0,167944)|0)!=0){e=57;break a}l=c[a>>2]|0;if((l|0)==6){g=Ry(c[s>>2]|0,b)|0;break a}else{c[k>>2]=l;c[j+4>>2]=6;Qe(0,172720,j);tc()}}}while(0);a=c[a>>2]|0;if((a|0)==6){g=Oy(c[s>>2]|0,b)|0;break a}else{c[h>>2]=a;c[g+4>>2]=6;Qe(0,172720,g);tc()}}}while(0);g=FW(4)|0;c[g>>2]=168512;break a}}while(0);g=FW(4)|0;c[g>>2]=168336;break a}}while(0);g=FW(4)|0;c[g>>2]=168128}else{e=57}}while(0);if((e|0)==57){Qe(-1,168056,m);g=0}Of(f);D=g;i=d;return D|0}else{Qe(-1,168072,C);D=0;i=d;return D|0}return 0}function Ky(a){a=a|0;var b=0,d=0,e=0,f=0,g=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.0,G=0.0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0,O=0,P=0.0;e=i;j=i;i=i+16|0;f=j;o=i;i=i+8|0;k=o;t=i;i=i+8|0;u=t;w=i;i=i+8|0;v=w;z=i;i=i+8|0;y=z;A=i;i=i+8|0;B=A;D=i;i=i+8|0;C=D;I=i;i=i+8|0;H=I;N=i;i=i+8|0;M=N;n=i;i=i+8|0;q=i;i=i+16|0;b=q;l=i;i=i+16|0;d=l;s=i;i=i+16|0;p=s;c[q>>2]=13;m=b+8|0;c[m>>2]=0;c[m+4>>2]=0;c[l>>2]=13;g=d+8|0;c[g>>2]=0;c[g+4>>2]=0;c[s>>2]=13;r=p+8|0;c[r>>2]=0;c[r+4>>2]=0;ut(a,1,b)|0;if((c[q>>2]|0)!=7){Qe(-1,168264,n);Of(b);O=0;i=e;return O|0}n=FW(88)|0;c[n>>2]=168200;E=n+24|0;h[E>>3]=1.0;J=n+16|0;h[J>>3]=1.0;L=n+8|0;h[L>>3]=1.0;x=n+32|0;a=n+56|0;bX(x|0,0,24)|0;h[a>>3]=1.0;do{if((c[(Yu(c[m>>2]|0,168288,d,0)|0)>>2]|0)==6){O=c[l>>2]|0;if((O|0)!=6){c[N>>2]=O;c[M+4>>2]=6;Qe(0,172720,M);tc()}M=c[g>>2]|0;if((c[M+12>>2]|0)!=3){F=1.0;G=1.0;K=1.0;break}ut(M,0,p)|0;M=c[s>>2]|0;if((M+ -1|0)>>>0<2){if((M|0)==1){K=+(c[r>>2]|0)}else{K=+h[r>>3]}h[L>>3]=K}else{K=1.0}Of(p);L=c[l>>2]|0;if((L|0)!=6){c[I>>2]=L;c[H+4>>2]=6;Qe(0,172720,H);tc()}ut(c[g>>2]|0,1,p)|0;H=c[s>>2]|0;if((H+ -1|0)>>>0<2){if((H|0)==1){G=+(c[r>>2]|0)}else{G=+h[r>>3]}h[J>>3]=G}else{G=1.0}Of(p);H=c[l>>2]|0;if((H|0)!=6){c[D>>2]=H;c[C+4>>2]=6;Qe(0,172720,C);tc()}ut(c[g>>2]|0,2,p)|0;C=c[s>>2]|0;if((C+ -1|0)>>>0<2){if((C|0)==1){F=+(c[r>>2]|0)}else{F=+h[r>>3]}h[E>>3]=F}else{F=1.0}Of(p)}else{F=1.0;G=1.0;K=1.0}}while(0);Of(d);C=c[q>>2]|0;if((C|0)!=7){c[A>>2]=C;c[B+4>>2]=7;Qe(0,172720,B);tc()}do{if((c[(Yu(c[m>>2]|0,168304,d,0)|0)>>2]|0)==6){A=c[l>>2]|0;if((A|0)!=6){c[z>>2]=A;c[y+4>>2]=6;Qe(0,172720,y);tc()}y=c[g>>2]|0;if((c[y+12>>2]|0)!=3){break}ut(y,0,p)|0;y=c[s>>2]|0;if((y+ -1|0)>>>0<2){if((y|0)==1){P=+(c[r>>2]|0)}else{P=+h[r>>3]}h[x>>3]=P}Of(p);x=c[l>>2]|0;if((x|0)!=6){c[w>>2]=x;c[v+4>>2]=6;Qe(0,172720,v);tc()}ut(c[g>>2]|0,1,p)|0;v=c[s>>2]|0;if((v+ -1|0)>>>0<2){if((v|0)==1){P=+(c[r>>2]|0)}else{P=+h[r>>3]}h[n+40>>3]=P}Of(p);v=c[l>>2]|0;if((v|0)!=6){c[t>>2]=v;c[u+4>>2]=6;Qe(0,172720,u);tc()}ut(c[g>>2]|0,2,p)|0;s=c[s>>2]|0;if((s+ -1|0)>>>0<2){if((s|0)==1){P=+(c[r>>2]|0)}else{P=+h[r>>3]}h[n+48>>3]=P}Of(p)}}while(0);Of(d);p=c[q>>2]|0;if((p|0)!=7){c[o>>2]=p;c[k+4>>2]=7;Qe(0,172720,k);tc()}if(((c[(Yu(c[m>>2]|0,168320,d,0)|0)>>2]|0)+ -1|0)>>>0<2){k=c[l>>2]|0;if((k+ -1|0)>>>0>=2){c[j>>2]=k;c[f+4>>2]=1;c[f+8>>2]=2;Qe(0,172792,f);tc()}if((k|0)==1){P=+(c[g>>2]|0)}else{P=+h[g>>3]}h[a>>3]=P}Of(d);Of(b);h[n+64>>3]=1.0/(K*3.240449+G*-1.537136+F*-.498531);h[n+72>>3]=1.0/(K*-.969265+G*1.876011+F*.041556);h[n+80>>3]=1.0/(K*.055643+G*-.204026+F*1.057229);O=n;i=e;return O|0}function Ly(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,g=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,O=0,P=0.0,Q=0.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.0;g=i;d=i;i=i+8|0;e=d;u=i;i=i+8|0;v=u;x=i;i=i+8|0;y=x;C=i;i=i+8|0;A=C;D=i;i=i+8|0;F=D;H=i;i=i+8|0;I=H;J=i;i=i+8|0;K=J;M=i;i=i+8|0;L=M;O=i;i=i+8|0;N=O;T=i;i=i+8|0;S=T;V=i;i=i+8|0;U=V;X=i;i=i+8|0;W=X;Z=i;i=i+8|0;Y=Z;$=i;i=i+8|0;_=$;q=i;i=i+8|0;z=i;i=i+16|0;j=z;l=i;i=i+16|0;k=l;p=i;i=i+16|0;m=p;c[z>>2]=13;w=j+8|0;c[w>>2]=0;c[w+4>>2]=0;c[l>>2]=13;o=k+8|0;c[o>>2]=0;c[o+4>>2]=0;c[p>>2]=13;n=m+8|0;c[n>>2]=0;c[n+4>>2]=0;ut(a,1,j)|0;if((c[z>>2]|0)!=7){Qe(-1,168472,q);Of(j);aa=0;i=g;return aa|0}a=FW(176)|0;c[a>>2]=168408;q=a+24|0;h[q>>3]=1.0;r=a+16|0;h[r>>3]=1.0;s=a+8|0;h[s>>3]=1.0;R=a+32|0;B=a+72|0;bX(R|0,0,24)|0;h[B>>3]=1.0;E=a+64|0;h[E>>3]=1.0;G=a+56|0;h[G>>3]=1.0;t=a+80|0;h[t>>3]=1.0;bX(a+88|0,0,24)|0;h[a+112>>3]=1.0;bX(a+120|0,0,24)|0;h[a+144>>3]=1.0;do{if((c[(Yu(c[w>>2]|0,168288,k,0)|0)>>2]|0)==6){aa=c[l>>2]|0;if((aa|0)!=6){c[$>>2]=aa;c[_+4>>2]=6;Qe(0,172720,_);tc()}_=c[o>>2]|0;if((c[_+12>>2]|0)!=3){P=1.0;Q=1.0;break}ut(_,0,m)|0;_=c[p>>2]|0;if((_+ -1|0)>>>0<2){if((_|0)==1){P=+(c[n>>2]|0)}else{P=+h[n>>3]}h[s>>3]=P}Of(m);_=c[l>>2]|0;if((_|0)!=6){c[Z>>2]=_;c[Y+4>>2]=6;Qe(0,172720,Y);tc()}ut(c[o>>2]|0,1,m)|0;Y=c[p>>2]|0;if((Y+ -1|0)>>>0<2){if((Y|0)==1){Q=+(c[n>>2]|0)}else{Q=+h[n>>3]}h[r>>3]=Q}else{Q=1.0}Of(m);Y=c[l>>2]|0;if((Y|0)!=6){c[X>>2]=Y;c[W+4>>2]=6;Qe(0,172720,W);tc()}ut(c[o>>2]|0,2,m)|0;W=c[p>>2]|0;if((W+ -1|0)>>>0<2){if((W|0)==1){P=+(c[n>>2]|0)}else{P=+h[n>>3]}h[q>>3]=P}else{P=1.0}Of(m)}else{P=1.0;Q=1.0}}while(0);Of(k);W=c[z>>2]|0;if((W|0)!=7){c[V>>2]=W;c[U+4>>2]=7;Qe(0,172720,U);tc()}do{if((c[(Yu(c[w>>2]|0,168304,k,0)|0)>>2]|0)==6){U=c[l>>2]|0;if((U|0)!=6){c[T>>2]=U;c[S+4>>2]=6;Qe(0,172720,S);tc()}S=c[o>>2]|0;if((c[S+12>>2]|0)!=3){break}ut(S,0,m)|0;S=c[p>>2]|0;if((S+ -1|0)>>>0<2){if((S|0)==1){ba=+(c[n>>2]|0)}else{ba=+h[n>>3]}h[R>>3]=ba}Of(m);R=c[l>>2]|0;if((R|0)!=6){c[O>>2]=R;c[N+4>>2]=6;Qe(0,172720,N);tc()}ut(c[o>>2]|0,1,m)|0;N=c[p>>2]|0;if((N+ -1|0)>>>0<2){if((N|0)==1){ba=+(c[n>>2]|0)}else{ba=+h[n>>3]}h[a+40>>3]=ba}Of(m);N=c[l>>2]|0;if((N|0)!=6){c[M>>2]=N;c[L+4>>2]=6;Qe(0,172720,L);tc()}ut(c[o>>2]|0,2,m)|0;L=c[p>>2]|0;if((L+ -1|0)>>>0<2){if((L|0)==1){ba=+(c[n>>2]|0)}else{ba=+h[n>>3]}h[a+48>>3]=ba}Of(m)}}while(0);Of(k);L=c[z>>2]|0;if((L|0)!=7){c[J>>2]=L;c[K+4>>2]=7;Qe(0,172720,K);tc()}do{if((c[(Yu(c[w>>2]|0,168320,k,0)|0)>>2]|0)==6){J=c[l>>2]|0;if((J|0)!=6){c[H>>2]=J;c[I+4>>2]=6;Qe(0,172720,I);tc()}H=c[o>>2]|0;if((c[H+12>>2]|0)!=3){break}ut(H,0,m)|0;H=c[p>>2]|0;if((H+ -1|0)>>>0<2){if((H|0)==1){ba=+(c[n>>2]|0)}else{ba=+h[n>>3]}h[G>>3]=ba}Of(m);G=c[l>>2]|0;if((G|0)!=6){c[D>>2]=G;c[F+4>>2]=6;Qe(0,172720,F);tc()}ut(c[o>>2]|0,1,m)|0;D=c[p>>2]|0;if((D+ -1|0)>>>0<2){if((D|0)==1){ba=+(c[n>>2]|0)}else{ba=+h[n>>3]}h[E>>3]=ba}Of(m);D=c[l>>2]|0;if((D|0)!=6){c[C>>2]=D;c[A+4>>2]=6;Qe(0,172720,A);tc()}ut(c[o>>2]|0,2,m)|0;A=c[p>>2]|0;if((A+ -1|0)>>>0<2){if((A|0)==1){ba=+(c[n>>2]|0)}else{ba=+h[n>>3]}h[B>>3]=ba}Of(m)}}while(0);Of(k);z=c[z>>2]|0;if((z|0)!=7){c[x>>2]=z;c[y+4>>2]=7;Qe(0,172720,y);tc()}do{if((c[(Yu(c[w>>2]|0,168496,k,0)|0)>>2]|0)==6){w=c[l>>2]|0;if((w|0)!=6){c[u>>2]=w;c[v+4>>2]=6;Qe(0,172720,v);tc()}if((c[(c[o>>2]|0)+12>>2]|0)!=9){f=P;b=Q;break}u=6;v=0;while(1){if((u|0)!=6){l=87;break}ut(c[o>>2]|0,v,m)|0;u=c[p>>2]|0;if((u+ -1|0)>>>0<2){if((u|0)==1){P=+(c[n>>2]|0)}else{P=+h[n>>3]}h[t+(v<<3)>>3]=P}Of(m);v=v+1|0;if((v|0)>=9){l=95;break}u=c[l>>2]|0}if((l|0)==87){c[d>>2]=u;c[e+4>>2]=6;Qe(0,172720,e);tc()}else if((l|0)==95){f=+h[q>>3];b=+h[r>>3];break}}else{f=P;b=Q}}while(0);Of(k);Of(j);ba=+h[s>>3];h[a+152>>3]=1.0/(ba*3.240449+b*-1.537136+f*-.498531);h[a+160>>3]=1.0/(ba*-.969265+b*1.876011+f*.041556);h[a+168>>3]=1.0/(ba*.055643+b*-.204026+f*1.057229);aa=a;i=g;return aa|0}function My(a){a=a|0;var b=0,d=0,e=0,f=0,g=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,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.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,pa=0,qa=0.0;b=i;k=i;i=i+16|0;j=k;m=i;i=i+8|0;p=m;s=i;i=i+16|0;r=s;u=i;i=i+8|0;t=u;x=i;i=i+16|0;w=x;y=i;i=i+8|0;A=y;B=i;i=i+16|0;C=B;F=i;i=i+8|0;E=F;H=i;i=i+8|0;I=H;L=i;i=i+16|0;K=L;N=i;i=i+8|0;M=N;O=i;i=i+16|0;P=O;R=i;i=i+8|0;Q=R;S=i;i=i+16|0;T=S;W=i;i=i+8|0;V=W;X=i;i=i+8|0;Y=X;ba=i;i=i+16|0;aa=ba;ca=i;i=i+8|0;ea=ca;fa=i;i=i+16|0;ga=fa;ha=i;i=i+8|0;ja=ha;la=i;i=i+16|0;ka=la;oa=i;i=i+8|0;na=oa;n=i;i=i+8|0;J=i;i=i+16|0;d=J;q=i;i=i+16|0;f=q;l=i;i=i+16|0;e=l;c[J>>2]=13;G=d+8|0;c[G>>2]=0;c[G+4>>2]=0;c[q>>2]=13;o=f+8|0;c[o>>2]=0;c[o+4>>2]=0;c[l>>2]=13;g=e+8|0;c[g>>2]=0;c[g+4>>2]=0;ut(a,1,d)|0;if((c[J>>2]|0)!=7){Qe(-1,168648,n);Of(d);pa=0;i=b;return pa|0}a=FW(112)|0;c[a>>2]=168584;da=a+24|0;h[da>>3]=1.0;ia=a+16|0;h[ia>>3]=1.0;ma=a+8|0;h[ma>>3]=1.0;U=a+32|0;v=a+72|0;bX(U|0,0,24)|0;h[v>>3]=-100.0;D=a+56|0;h[D>>3]=-100.0;n=a+80|0;h[n>>3]=100.0;z=a+64|0;h[z>>3]=100.0;do{if((c[(Yu(c[G>>2]|0,168288,f,0)|0)>>2]|0)==6){pa=c[q>>2]|0;if((pa|0)!=6){c[oa>>2]=pa;c[na+4>>2]=6;Qe(0,172720,na);tc()}na=c[o>>2]|0;if((c[na+12>>2]|0)!=3){Z=1.0;_=1.0;$=1.0;break}ut(na,0,e)|0;na=c[l>>2]|0;if((na+ -1|0)>>>0>=2){c[la>>2]=na;c[ka+4>>2]=1;c[ka+8>>2]=2;Qe(0,172792,ka);tc()}if((na|0)==1){$=+(c[g>>2]|0)}else{$=+h[g>>3]}h[ma>>3]=$;Of(e);ka=c[q>>2]|0;if((ka|0)!=6){c[ha>>2]=ka;c[ja+4>>2]=6;Qe(0,172720,ja);tc()}ut(c[o>>2]|0,1,e)|0;ha=c[l>>2]|0;if((ha+ -1|0)>>>0>=2){c[fa>>2]=ha;c[ga+4>>2]=1;c[ga+8>>2]=2;Qe(0,172792,ga);tc()}if((ha|0)==1){_=+(c[g>>2]|0)}else{_=+h[g>>3]}h[ia>>3]=_;Of(e);fa=c[q>>2]|0;if((fa|0)!=6){c[ca>>2]=fa;c[ea+4>>2]=6;Qe(0,172720,ea);tc()}ut(c[o>>2]|0,2,e)|0;ca=c[l>>2]|0;if((ca+ -1|0)>>>0>=2){c[ba>>2]=ca;c[aa+4>>2]=1;c[aa+8>>2]=2;Qe(0,172792,aa);tc()}if((ca|0)==1){Z=+(c[g>>2]|0)}else{Z=+h[g>>3]}h[da>>3]=Z;Of(e)}else{Z=1.0;_=1.0;$=1.0}}while(0);Of(f);aa=c[J>>2]|0;if((aa|0)!=7){c[X>>2]=aa;c[Y+4>>2]=7;Qe(0,172720,Y);tc()}do{if((c[(Yu(c[G>>2]|0,168304,f,0)|0)>>2]|0)==6){X=c[q>>2]|0;if((X|0)!=6){c[W>>2]=X;c[V+4>>2]=6;Qe(0,172720,V);tc()}V=c[o>>2]|0;if((c[V+12>>2]|0)!=3){break}ut(V,0,e)|0;V=c[l>>2]|0;if((V+ -1|0)>>>0>=2){c[S>>2]=V;c[T+4>>2]=1;c[T+8>>2]=2;Qe(0,172792,T);tc()}if((V|0)==1){qa=+(c[g>>2]|0)}else{qa=+h[g>>3]}h[U>>3]=qa;Of(e);S=c[q>>2]|0;if((S|0)!=6){c[R>>2]=S;c[Q+4>>2]=6;Qe(0,172720,Q);tc()}ut(c[o>>2]|0,1,e)|0;Q=c[l>>2]|0;if((Q+ -1|0)>>>0>=2){c[O>>2]=Q;c[P+4>>2]=1;c[P+8>>2]=2;Qe(0,172792,P);tc()}if((Q|0)==1){qa=+(c[g>>2]|0)}else{qa=+h[g>>3]}h[a+40>>3]=qa;Of(e);O=c[q>>2]|0;if((O|0)!=6){c[N>>2]=O;c[M+4>>2]=6;Qe(0,172720,M);tc()}ut(c[o>>2]|0,2,e)|0;M=c[l>>2]|0;if((M+ -1|0)>>>0>=2){c[L>>2]=M;c[K+4>>2]=1;c[K+8>>2]=2;Qe(0,172792,K);tc()}if((M|0)==1){qa=+(c[g>>2]|0)}else{qa=+h[g>>3]}h[a+48>>3]=qa;Of(e)}}while(0);Of(f);J=c[J>>2]|0;if((J|0)!=7){c[H>>2]=J;c[I+4>>2]=7;Qe(0,172720,I);tc()}do{if((c[(Yu(c[G>>2]|0,168672,f,0)|0)>>2]|0)==6){G=c[q>>2]|0;if((G|0)!=6){c[F>>2]=G;c[E+4>>2]=6;Qe(0,172720,E);tc()}E=c[o>>2]|0;if((c[E+12>>2]|0)!=4){break}ut(E,0,e)|0;E=c[l>>2]|0;if((E+ -1|0)>>>0>=2){c[B>>2]=E;c[C+4>>2]=1;c[C+8>>2]=2;Qe(0,172792,C);tc()}if((E|0)==1){qa=+(c[g>>2]|0)}else{qa=+h[g>>3]}h[D>>3]=qa;Of(e);B=c[q>>2]|0;if((B|0)!=6){c[y>>2]=B;c[A+4>>2]=6;Qe(0,172720,A);tc()}ut(c[o>>2]|0,1,e)|0;y=c[l>>2]|0;if((y+ -1|0)>>>0>=2){c[x>>2]=y;c[w+4>>2]=1;c[w+8>>2]=2;Qe(0,172792,w);tc()}if((y|0)==1){qa=+(c[g>>2]|0)}else{qa=+h[g>>3]}h[z>>3]=qa;Of(e);w=c[q>>2]|0;if((w|0)!=6){c[u>>2]=w;c[t+4>>2]=6;Qe(0,172720,t);tc()}ut(c[o>>2]|0,2,e)|0;t=c[l>>2]|0;if((t+ -1|0)>>>0>=2){c[s>>2]=t;c[r+4>>2]=1;c[r+8>>2]=2;Qe(0,172792,r);tc()}if((t|0)==1){qa=+(c[g>>2]|0)}else{qa=+h[g>>3]}h[v>>3]=qa;Of(e);q=c[q>>2]|0;if((q|0)!=6){c[m>>2]=q;c[p+4>>2]=6;Qe(0,172720,p);tc()}ut(c[o>>2]|0,3,e)|0;l=c[l>>2]|0;if((l+ -1|0)>>>0>=2){c[k>>2]=l;c[j+4>>2]=1;c[j+8>>2]=2;Qe(0,172792,j);tc()}if((l|0)==1){qa=+(c[g>>2]|0)}else{qa=+h[g>>3]}h[n>>3]=qa;Of(e)}}while(0);Of(f);Of(d);h[a+88>>3]=1.0/($*3.240449+_*-1.537136+Z*-.498531);h[a+96>>3]=1.0/($*-.969265+_*1.876011+Z*.041556);h[a+104>>3]=1.0/($*.055643+_*-.204026+Z*1.057229);pa=a;i=b;return pa|0}function Ny(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=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.0;n=i;s=i;i=i+8|0;r=s;g=i;i=i+8|0;j=g;u=i;i=i+8|0;t=u;B=i;i=i+8|0;E=i;i=i+8|0;D=E;F=i;i=i+8|0;w=F;G=i;i=i+8|0;H=i;i=i+8|0;I=i;i=i+16|0;p=I;q=i;i=i+16|0;f=q;e=i;i=i+16|0;k=e;d=i;i=i+16|0;l=d;c[I>>2]=13;C=p+8|0;c[C>>2]=0;c[C+4>>2]=0;c[q>>2]=13;o=f+8|0;c[o>>2]=0;c[o+4>>2]=0;c[e>>2]=13;m=k+8|0;c[m>>2]=0;c[m+4>>2]=0;vt(a,1,p)|0;if((c[I>>2]|0)==9){y=C;A=c[y>>2]|0;y=c[y+4>>2]|0;z=A&0;x=y|0;A=A|0;y=y&0}else{z=0;x=0;A=0;y=0}Of(p);ut(a,1,p)|0;if((c[I>>2]|0)!=8){Qe(-1,168752,H);Of(p);I=0;i=n;return I|0}C=c[C>>2]|0;C=jd[c[(c[C>>2]|0)+72>>2]&511](C)|0;if((c[(Yu(C,168792,f,0)|0)>>2]|0)!=1){Qe(-1,168800,G);Of(f);Of(p);I=0;i=n;return I|0}G=c[q>>2]|0;if((G|0)!=1){c[F>>2]=G;c[w+4>>2]=1;Qe(0,172720,w);tc()}w=c[o>>2]|0;Of(f);if((w|0)>32){c[E>>2]=w;c[D+4>>2]=32;Qe(-1,168832,D);w=32}if((c[(Yu(C,168888,f,0)|0)>>2]|0)==5){v=13}else{b=Jy(f,b)|0;if((b|0)==0){v=13}}do{if((v|0)==13){if((w|0)==1){b=FW(4)|0;c[b>>2]=168128;break}else if((w|0)==4){b=FW(4)|0;c[b>>2]=168512;break}else if((w|0)==3){b=FW(4)|0;c[b>>2]=168336;break}else{Qe(-1,168904,B);Of(f);Of(p);I=0;i=n;return I|0}}}while(0);Of(f);B=FW(88)|0;c[B>>2]=168688;c[B+4>>2]=w;c[B+8>>2]=b;v=B+80|0;c[v>>2]=A|z;c[v+4>>2]=y|x;x=B+16|0;bX(x|0,0,32)|0;h[B+72>>3]=1.0;h[B+64>>3]=1.0;h[B+56>>3]=1.0;v=B+48|0;h[v>>3]=1.0;a:do{if((c[(Yu(C,168672,f,0)|0)>>2]|0)==6){y=c[q>>2]|0;if((y|0)!=6){c[u>>2]=y;c[t+4>>2]=6;Qe(0,172720,t);tc()}if((c[(c[o>>2]|0)+12>>2]|0)!=(w<<1|0)){break}c[d>>2]=13;t=l+8|0;c[t>>2]=0;c[t+4>>2]=0;if((w|0)<=0){break}y=6;u=0;while(1){z=u<<1;if((y|0)!=6){v=25;break}ut(c[o>>2]|0,z,k)|0;y=c[q>>2]|0;if((y|0)!=6){v=27;break}ut(c[o>>2]|0,z|1,l)|0;z=c[e>>2]|0;do{if((z+ -1|0)>>>0<2){y=c[d>>2]|0;if((y+ -1|0)>>>0>=2){break}if((z|0)==1){J=+(c[m>>2]|0)}else{J=+h[m>>3]}h[x+(u<<3)>>3]=J;if((y|0)==1){J=+(c[t>>2]|0)}else{J=+h[t>>3]}h[v+(u<<3)>>3]=J}}while(0);Of(k);Of(l);u=u+1|0;if((u|0)>=(w|0)){break a}y=c[q>>2]|0}if((v|0)==25){c[g>>2]=y;c[j+4>>2]=6;Qe(0,172720,j);tc()}else if((v|0)==27){c[s>>2]=y;c[r+4>>2]=6;Qe(0,172720,r);tc()}}}while(0);Of(f);Of(p);I=B;i=n;return I|0}function Oy(b,d){b=b|0;d=d|0;var 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;f=i;v=i;i=i+8|0;u=i;i=i+8|0;g=i;i=i+8|0;j=g;t=i;i=i+8|0;m=i;i=i+8|0;n=m;o=i;i=i+8|0;q=i;i=i+8|0;s=q;x=i;i=i+8|0;r=x;y=i;i=i+8|0;z=i;i=i+8|0;w=i;i=i+8|0;l=i;i=i+16|0;e=l;c[l>>2]=13;k=e+8|0;c[k>>2]=0;c[k+4>>2]=0;if((c[b+12>>2]|0)!=4){Qe(-1,169016,w);d=0;i=f;return d|0}ut(b,1,e)|0;w=Jy(e,d)|0;do{if((w|0)==0){Qe(-1,169040,z)}else{Of(e);if((c[(ut(b,2,e)|0)>>2]|0)!=1){Qe(-1,169088,y);fd[c[(c[w>>2]|0)+4>>2]&511](w);break}y=c[l>>2]|0;if((y|0)!=1){c[x>>2]=y;c[r+4>>2]=1;Qe(0,172720,r);tc()}r=c[k>>2]|0;if(r>>>0>255){d=(r>>31&-255)+255|0;c[q>>2]=r;c[s+4>>2]=d;Qe(-1,169120,s);r=d}Of(e);q=FW(16)|0;c[q>>2]=168952;c[q+4>>2]=w;c[q+8>>2]=r;x=r+1|0;s=q+12|0;c[s>>2]=ye(da(jd[c[(c[w>>2]|0)+44>>2]&511](w)|0,x)|0,1)|0;ut(b,3,e)|0;b=jd[c[(c[w>>2]|0)+44>>2]&511](w)|0;w=c[l>>2]|0;do{if((w|0)==3){h=c[k>>2]|0;if((c[h+24>>2]|0)<(da(b,x)|0)){Qe(-1,169288,u);h=41;break}if((r|0)>-1&(b|0)>0){g=0;j=c[h+28>>2]|0}else{h=40;break}while(1){k=da(g,b)|0;l=0;h=j;while(1){a[(c[s>>2]|0)+(l+k)|0]=a[h]|0;l=l+1|0;if((l|0)>=(b|0)){break}h=h+1|0}if((g|0)<(r|0)){g=g+1|0;j=j+b|0}else{h=40;break}}}else if((w|0)==8){d=c[k>>2]|0;fd[c[(c[d>>2]|0)+12>>2]&511](d);a:do{if((r|0)>=0){if((b|0)>0){p=0}else{u=0;while(1){v=da(u,b)|0;w=(c[s>>2]|0)+v|0;x=c[l>>2]|0;if((x|0)!=8){break}x=c[k>>2]|0;do{if(jd[c[(c[x>>2]|0)+88>>2]&511](x)|0){w=sd[c[(c[x>>2]|0)+92>>2]&127](x,b,w)|0;if((w|0)>=(b|0)){break}do{Qe(-1,169208,t);a[(c[s>>2]|0)+(w+v)|0]=0;w=w+1|0;}while((w|0)<(b|0))}}while(0);if((u|0)<(r|0)){u=u+1|0}else{break a}}d=m;c[d>>2]=x;d=n+4|0;c[d>>2]=8;d=172720;Qe(0,d,n);tc()}while(1){t=da(p,b)|0;u=c[s>>2]|0;x=c[l>>2]|0;if((x|0)!=8){break}x=c[k>>2]|0;b:do{if(jd[c[(c[x>>2]|0)+88>>2]&511](x)|0){w=sd[c[(c[x>>2]|0)+92>>2]&127](x,b,u+t|0)|0;h=22}else{w=0;do{v=jd[c[(c[x>>2]|0)+20>>2]&511](x)|0;if((v|0)==-1){h=22;break b}a[u+(w+t)|0]=v;w=w+1|0;}while((w|0)<(b|0))}}while(0);do{if((h|0)==22){h=0;if((w|0)>=(b|0)){break}do{Qe(-1,169208,o);a[(c[s>>2]|0)+(w+t)|0]=0;w=w+1|0;}while((w|0)<(b|0))}}while(0);if((p|0)<(r|0)){p=p+1|0}else{break a}}d=m;c[d>>2]=x;d=n+4|0;c[d>>2]=8;d=172720;Qe(0,d,n);tc()}}while(0);l=c[l>>2]|0;if((l|0)==8){h=c[k>>2]|0;fd[c[(c[h>>2]|0)+16>>2]&511](h);h=40;break}else{c[g>>2]=l;c[j+4>>2]=8;Qe(0,172720,j);tc()}}else{Qe(-1,169344,v);h=41}}while(0);if((h|0)==40){Of(e);d=q;i=f;return d|0}else if((h|0)==41){if((q|0)==0){break}fd[c[(c[q>>2]|0)+4>>2]&511](q);break}}}while(0);Of(e);d=0;i=f;return d|0}function Py(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;g=i;i=i+8|0;k=i;i=i+8|0;l=k;h=i;i=i+8|0;n=i;i=i+8|0;m=i;i=i+16|0;e=m;c[m>>2]=13;j=e+8|0;c[j>>2]=0;c[j+4>>2]=0;if((c[b+12>>2]|0)!=4){Qe(-1,169464,n);n=0;i=f;return n|0}do{if((c[(ut(b,1,e)|0)>>2]|0)==4){h=FW(32)|0;m=c[m>>2]|0;if((m|0)!=4){c[k>>2]=m;c[l+4>>2]=4;Qe(0,172720,l);tc()}fe(h,c[j>>2]|0);Of(e);ut(b,2,e)|0;j=Jy(e,d)|0;do{if((j|0)==0){Qe(-1,169536,g)}else{Of(e);ut(b,3,e)|0;b=EH(e)|0;if((b|0)==0){fd[c[(c[j>>2]|0)+4>>2]&511](j);break}Of(e);n=FW(20)|0;c[n>>2]=169392;c[n+4>>2]=h;c[n+8>>2]=j;c[n+12>>2]=b;a[n+16|0]=(te(h,169456)|0)==0|0;i=f;return n|0}}while(0);if((h|0)==0){break}ke(h);HW(h)}else{Qe(-1,169496,h)}}while(0);Of(e);n=0;i=f;return n|0}function Qy(b,d){b=b|0;d=d|0;var 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,A=0,B=0;g=i;k=i;i=i+8|0;m=i;i=i+8|0;n=m;u=i;i=i+8|0;s=i;i=i+8|0;t=s;x=i;i=i+8|0;w=x;z=i;i=i+8|0;y=z;A=i;i=i+8|0;B=i;i=i+8|0;e=i;i=i+128|0;r=i;i=i+16|0;j=r;p=i;i=i+16|0;l=p;c[r>>2]=13;q=j+8|0;c[q>>2]=0;c[q+4>>2]=0;c[p>>2]=13;o=l+8|0;c[o>>2]=0;c[o+4>>2]=0;if(((c[b+12>>2]|0)+ -4|0)>>>0>=2){Qe(-1,169664,B);B=0;i=g;return B|0}a:do{if((c[(ut(b,1,j)|0)>>2]|0)==6){A=c[r>>2]|0;if((A|0)!=6){c[z>>2]=A;c[y+4>>2]=6;Qe(0,172720,y);tc()}y=c[(c[q>>2]|0)+12>>2]|0;if((y|0)>32){c[x>>2]=y;c[w+4>>2]=32;Qe(-1,169720,w);w=32;v=10}else{if((y|0)>0){w=y;v=10}else{h=0;f=y}}b:do{if((v|0)==10){v=0;while(1){x=c[r>>2]|0;if((x|0)!=6){v=12;break}if((c[(ut(c[q>>2]|0,v,l)|0)>>2]|0)!=4){v=14;break}y=FW(32)|0;x=c[p>>2]|0;if((x|0)!=4){v=16;break}fe(y,c[o>>2]|0);c[e+(v<<2)>>2]=y;Of(l);v=v+1|0;if((v|0)>=(w|0)){h=1;f=w;break b}}if((v|0)==12){c[s>>2]=x;c[t+4>>2]=6;Qe(0,172720,t);tc()}else if((v|0)==14){Qe(-1,169688,u);Of(l);break a}else if((v|0)==16){c[m>>2]=x;c[n+4>>2]=4;Qe(0,172720,n);tc()}}}while(0);Of(j);ut(b,2,j)|0;l=Jy(j,d)|0;do{if((l|0)==0){Qe(-1,169776,k)}else{Of(j);ut(b,3,j)|0;k=EH(j)|0;if((k|0)==0){fd[c[(c[l>>2]|0)+4>>2]&511](l);break}Of(j);j=FW(148)|0;c[j>>2]=169600;c[j+4>>2]=f;c[j+136>>2]=l;c[j+140>>2]=k;k=j+144|0;a[k]=1;if(h){h=j+8|0;b=0;do{B=c[e+(b<<2)>>2]|0;c[h+(b<<2)>>2]=B;if((te(B,169456)|0)!=0){a[k]=0}b=b+1|0;}while((b|0)<(f|0))}B=j;i=g;return B|0}}while(0);if(h){h=0}else{break}do{k=c[e+(h<<2)>>2]|0;if((k|0)!=0){ke(k);HW(k)}h=h+1|0;}while((h|0)<(f|0))}else{Qe(-1,169688,A)}}while(0);Of(j);B=0;i=g;return B|0}function Ry(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;f=i;i=i+8|0;h=i;i=i+8|0;j=i;i=i+16|0;e=j;c[j>>2]=13;j=e+8|0;c[j>>2]=0;c[j+4>>2]=0;j=c[a+12>>2]|0;if((j|0)==2){g=3}else if((j|0)==1){e=0}else{Qe(-1,169896,h);b=0;i=d;return b|0}do{if((g|0)==3){ut(a,1,e)|0;g=Jy(e,b)|0;if((g|0)!=0){Of(e);e=g;break}Qe(-1,169920,f);Of(e);b=0;i=d;return b|0}}while(0);b=FW(8)|0;c[b>>2]=169832;c[b+4>>2]=e;i=d;return b|0}function Sy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=i;if((jd[c[(c[a>>2]|0)+44>>2]&511](a)|0)>0){f=0}else{i=e;return}do{h[b+(f<<3)>>3]=0.0;h[d+(f<<3)>>3]=1.0;f=f+1|0;}while((f|0)<(jd[c[(c[a>>2]|0)+44>>2]&511](a)|0));i=e;return}function Ty(a){a=a|0;c[a>>2]=168128;i=i;return}function Uy(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function Vy(a){a=a|0;var b=0;b=i;a=FW(4)|0;c[a>>2]=168128;i=b;return a|0}function Wy(a,b,d){a=a|0;b=b|0;d=d|0;b=c[b>>2]|0;if((b|0)<0){b=0}else{b=(b|0)>65536?65536:b}c[d>>2]=b;i=i;return}function Xy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=i;$W(c|0,b|0,d|0)|0;i=a;return}function Yy(a,b,d){a=a|0;b=b|0;d=d|0;b=c[b>>2]|0;if((b|0)<0){b=0}else{b=(b|0)>65536?65536:b}c[d+8>>2]=b;c[d+4>>2]=b;c[d>>2]=b;i=i;return}function Zy(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;a=i;if((f|0)>0){g=0}else{i=a;return}do{h=d[b+g|0]|0;c[e+(g<<2)>>2]=h<<8|h|h<<16;g=g+1|0;}while((g|0)<(f|0));i=a;return}function _y(a,b,d){a=a|0;b=b|0;d=d|0;c[d+8>>2]=0;c[d+4>>2]=0;c[d>>2]=0;b=65536-(c[b>>2]|0)|0;if((b|0)<0){b=0}else{b=(b|0)>65536?65536:b}c[d+12>>2]=b;i=i;return}function $y(a,b){a=a|0;b=b|0;c[b>>2]=0;i=i;return}function az(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function bz(a){a=a|0;var b=0,d=0,e=0;d=i;b=FW(88)|0;c[b>>2]=168200;e=b+32|0;bX(e|0,0,16)|0;h[b+8>>3]=+h[a+8>>3];h[b+16>>3]=+h[a+16>>3];h[b+24>>3]=+h[a+24>>3];h[e>>3]=+h[a+32>>3];h[b+40>>3]=+h[a+40>>3];h[b+48>>3]=+h[a+48>>3];h[b+56>>3]=+h[a+56>>3];i=d;return b|0}function cz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=i;i=i+16|0;f=g;Gd[c[(c[a>>2]|0)+20>>2]&255](a,b,f);b=~~(+(c[g>>2]|0)*.299+ +(c[f+4>>2]|0)*.587+ +(c[f+8>>2]|0)*.114+.5);if((b|0)<0){f=0;g=d;c[g>>2]=f;i=e;return}f=(b|0)>65536?65536:b;g=d;c[g>>2]=f;i=e;return}function dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,j=0.0,k=0.0;e=i;g=+U(+(+(c[b>>2]|0)*152587890625.0e-16),+(+h[a+56>>3]));j=g*+h[a+8>>3];f=g*+h[a+16>>3];g=g*+h[a+24>>3];k=+h[a+64>>3]*(j*3.240449+f*-1.537136+g*-.498531);if(k<0.0){k=0.0}else{k=k>1.0?1.0:k}c[d>>2]=~~(+T(+k)*65536.0);k=(j*-.969265+f*1.876011+g*.041556)*+h[a+72>>3];if(k<0.0){k=0.0}else{k=k>1.0?1.0:k}c[d+4>>2]=~~(+T(+k)*65536.0);f=(j*.055643+f*-.204026+g*1.057229)*+h[a+80>>3];if(f<0.0){k=0.0;k=+T(+k);k=k*65536.0;a=~~k;b=d+8|0;c[b>>2]=a;i=e;return}k=f>1.0?1.0:f;k=+T(+k);k=k*65536.0;a=~~k;b=d+8|0;c[b>>2]=a;i=e;return}function ez(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=i;i=i+16|0;f=g;Gd[c[(c[a>>2]|0)+20>>2]&255](a,b,f);b=65536-(c[g>>2]|0)|0;if((b|0)<0){b=0}else{b=(b|0)>65536?65536:b}a=65536-(c[f+4>>2]|0)|0;if((a|0)<0){a=0}else{a=(a|0)>65536?65536:a}f=65536-(c[f+8>>2]|0)|0;if((f|0)<0){f=0}else{f=(f|0)>65536?65536:f}g=(a|0)<(b|0)?a:b;g=(f|0)<(g|0)?f:g;c[d>>2]=b-g;c[d+4>>2]=a-g;c[d+8>>2]=f-g;c[d+12>>2]=g;i=e;return}function fz(a,b){a=a|0;b=b|0;c[b>>2]=0;i=i;return}function gz(a){a=a|0;c[a>>2]=168336;i=i;return}function hz(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function iz(a){a=a|0;var b=0;b=i;a=FW(4)|0;c[a>>2]=168336;i=b;return a|0}function jz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=i;b=~~(+(c[b>>2]|0)*.3+ +(c[b+4>>2]|0)*.59+ +(c[b+8>>2]|0)*.11+.5);if((b|0)<0){e=0;b=d;c[b>>2]=e;i=a;return}b=(b|0)>65536?65536:b;e=d;c[e>>2]=b;i=a;return}function kz(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0;b=i;if((f|0)>0){g=0}else{i=b;return}do{h=g*3|0;a[e+g|0]=(((d[c+(h+1)|0]|0)*38469|0)+((d[c+h|0]|0)*19595|0)+((d[c+(h+2)|0]|0)*7472|0)|0)>>>16;g=g+1|0;}while((g|0)<(f|0));i=b;return}function lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=i;e=c[b>>2]|0;if((e|0)<0){e=0}else{e=(e|0)>65536?65536:e}c[d>>2]=e;e=c[b+4>>2]|0;if((e|0)<0){e=0}else{e=(e|0)>65536?65536:e}c[d+4>>2]=e;b=c[b+8>>2]|0;if((b|0)<0){b=0;e=d+8|0;c[e>>2]=b;i=a;return}b=(b|0)>65536?65536:b;e=d+8|0;c[e>>2]=b;i=a;return}function mz(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0;a=i;if((f|0)>0){g=0}else{i=a;return}while(1){c[e+(g<<2)>>2]=(d[b+1|0]|0)<<8|(d[b]|0)<<16|(d[b+2|0]|0);g=g+1|0;if((g|0)<(f|0)){b=b+3|0}else{break}}i=a;return}function nz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=65536-(c[b>>2]|0)|0;if((a|0)<0){a=0}else{a=(a|0)>65536?65536:a}e=65536-(c[b+4>>2]|0)|0;if((e|0)<0){e=0}else{e=(e|0)>65536?65536:e}b=65536-(c[b+8>>2]|0)|0;if((b|0)<0){b=0}else{b=(b|0)>65536?65536:b}f=(e|0)<(a|0)?e:a;f=(b|0)<(f|0)?b:f;c[d>>2]=a-f;c[d+4>>2]=e-f;c[d+8>>2]=b-f;c[d+12>>2]=f;i=i;return}function oz(a,b){a=a|0;b=b|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;i=i;return}function pz(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function qz(a){a=a|0;var b=0,d=0,e=0;d=i;b=FW(176)|0;c[b>>2]=168408;e=b+32|0;bX(e|0,0,16)|0;h[b+8>>3]=+h[a+8>>3];h[b+16>>3]=+h[a+16>>3];h[b+24>>3]=+h[a+24>>3];h[e>>3]=+h[a+32>>3];h[b+40>>3]=+h[a+40>>3];h[b+48>>3]=+h[a+48>>3];h[b+56>>3]=+h[a+56>>3];h[b+64>>3]=+h[a+64>>3];h[b+72>>3]=+h[a+72>>3];$W(b+80|0,a+80|0,72)|0;i=d;return b|0}function rz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=i;i=i+16|0;f=g;Gd[c[(c[a>>2]|0)+20>>2]&255](a,b,f);b=~~(+(c[g>>2]|0)*.299+ +(c[f+4>>2]|0)*.587+ +(c[f+8>>2]|0)*.114+.5);if((b|0)<0){f=0;g=d;c[g>>2]=f;i=e;return}f=(b|0)>65536?65536:b;g=d;c[g>>2]=f;i=e;return}function sz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,j=0.0,k=0.0,l=0.0;e=i;g=+U(+(+(c[b>>2]|0)*152587890625.0e-16),+(+h[a+56>>3]));j=+U(+(+(c[b+4>>2]|0)*152587890625.0e-16),+(+h[a+64>>3]));f=+U(+(+(c[b+8>>2]|0)*152587890625.0e-16),+(+h[a+72>>3]));l=g*+h[a+80>>3]+j*+h[a+104>>3]+f*+h[a+128>>3];k=g*+h[a+88>>3]+j*+h[a+112>>3]+f*+h[a+136>>3];f=g*+h[a+96>>3]+j*+h[a+120>>3]+f*+h[a+144>>3];j=l*3.240449+k*-1.537136+f*-.498531;g=l*-.969265+k*1.876011+f*.041556;f=l*.055643+k*-.204026+f*1.057229;if(j<0.0){j=0.0}else{j=j>1.0?1.0:j}c[d>>2]=~~(+T(+j)*65536.0);if(g<0.0){g=0.0}else{g=g>1.0?1.0:g}c[d+4>>2]=~~(+T(+g)*65536.0);if(f<0.0){l=0.0;l=+T(+l);l=l*65536.0;a=~~l;b=d+8|0;c[b>>2]=a;i=e;return}l=f>1.0?1.0:f;l=+T(+l);l=l*65536.0;a=~~l;b=d+8|0;c[b>>2]=a;i=e;return}function tz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=i;i=i+16|0;f=g;Gd[c[(c[a>>2]|0)+20>>2]&255](a,b,f);b=65536-(c[g>>2]|0)|0;if((b|0)<0){b=0}else{b=(b|0)>65536?65536:b}a=65536-(c[f+4>>2]|0)|0;if((a|0)<0){a=0}else{a=(a|0)>65536?65536:a}f=65536-(c[f+8>>2]|0)|0;if((f|0)<0){f=0}else{f=(f|0)>65536?65536:f}g=(a|0)<(b|0)?a:b;g=(f|0)<(g|0)?f:g;c[d>>2]=b-g;c[d+4>>2]=a-g;c[d+8>>2]=f-g;c[d+12>>2]=g;i=e;return}function uz(a,b){a=a|0;b=b|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;i=i;return}function vz(a){a=a|0;c[a>>2]=168512;i=i;return}function wz(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function xz(a){a=a|0;var b=0;b=i;a=FW(4)|0;c[a>>2]=168512;i=b;return a|0}function yz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=i;b=~~(+(65536-(c[b+12>>2]|0)|0)- +(c[b>>2]|0)*.3- +(c[b+4>>2]|0)*.59- +(c[b+8>>2]|0)*.11+.5);if((b|0)<0){e=0;b=d;c[b>>2]=e;i=a;return}b=(b|0)>65536?65536:b;e=d;c[e>>2]=b;i=a;return}function zz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0;a=i;h=+(c[b>>2]|0)*152587890625.0e-16;w=+(c[b+4>>2]|0)*152587890625.0e-16;v=+(c[b+8>>2]|0)*152587890625.0e-16;f=+(c[b+12>>2]|0)*152587890625.0e-16;u=1.0-h;q=1.0-w;g=1.0-v;e=1.0-f;r=u*q;p=r*g;o=p*e;p=f*p;r=v*r;s=r*e;r=f*r;u=u*w;t=u*g;n=t*e;u=u*v;m=u*e;q=h*q;k=q*g;l=k*e;k=f*k;q=v*q;j=q*e;w=h*w;g=w*g;h=g*e;e=w*v*e;b=~~((e*.2118+(h*.1804+(u*f*.1333+(m*.9294+(f*t*.1412+(n*.9255+(r*.1098+(s+(o+p*.1373)))))))))*65536.0);if((b|0)<0){b=0}else{b=(b|0)>65536?65536:b}c[d>>2]=b;b=~~((e*.2119+(h*.1922+(f*q*.0745+(j*.651+(k*.0588+(l*.6784+(m*.1098+(r*.102+(s*.949+(o+p*.1216))))))))))*65536.0);if((b|0)<0){b=0}else{b=(b|0)>65536?65536:b}c[d+4>>2]=b;b=~~((e*.2235+(f*g*.0078+(h*.5725+(j*.3137+(k*.1412+(l*.9373+(m*.1412+(n*.549+(o+p*.1255)))))))))*65536.0);if((b|0)<0){x=0;b=d+8|0;c[b>>2]=x;i=a;return}b=(b|0)>65536?65536:b;x=d+8|0;c[x>>2]=b;i=a;return}function Az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=i;e=c[b>>2]|0;if((e|0)<0){e=0}else{e=(e|0)>65536?65536:e}c[d>>2]=e;e=c[b+4>>2]|0;if((e|0)<0){e=0}else{e=(e|0)>65536?65536:e}c[d+4>>2]=e;e=c[b+8>>2]|0;if((e|0)<0){e=0}else{e=(e|0)>65536?65536:e}c[d+8>>2]=e;b=c[b+12>>2]|0;if((b|0)<0){b=0;e=d+12|0;c[e>>2]=b;i=a;return}b=(b|0)>65536?65536:b;e=d+12|0;c[e>>2]=b;i=a;return}function Bz(a,b){a=a|0;b=b|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=65536;i=i;return}function Cz(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function Dz(a){a=a|0;var b=0,d=0,e=0;d=i;b=FW(112)|0;c[b>>2]=168584;e=b+32|0;bX(e|0,0,16)|0;h[b+8>>3]=+h[a+8>>3];h[b+16>>3]=+h[a+16>>3];h[b+24>>3]=+h[a+24>>3];h[e>>3]=+h[a+32>>3];h[b+40>>3]=+h[a+40>>3];h[b+48>>3]=+h[a+48>>3];h[b+56>>3]=+h[a+56>>3];h[b+64>>3]=+h[a+64>>3];h[b+72>>3]=+h[a+72>>3];h[b+80>>3]=+h[a+80>>3];h[b+88>>3]=+h[a+88>>3];h[b+96>>3]=+h[a+96>>3];h[b+104>>3]=+h[a+104>>3];i=d;return b|0}function Ez(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=i;i=i+16|0;f=g;Gd[c[(c[a>>2]|0)+20>>2]&255](a,b,f);b=~~(+(c[g>>2]|0)*.299+ +(c[f+4>>2]|0)*.587+ +(c[f+8>>2]|0)*.114+.5);if((b|0)<0){f=0;g=d;c[g>>2]=f;i=e;return}f=(b|0)>65536?65536:b;g=d;c[g>>2]=f;i=e;return}function Fz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,j=0.0,k=0.0;e=i;j=(+(c[b>>2]|0)*152587890625.0e-16+16.0)/116.0;f=j+ +(c[b+4>>2]|0)*152587890625.0e-16/500.0;if(f<.20689655172413793){f=(f+-.13793103448275862)*.12841854934601665}else{f=f*f*f}if(j<.20689655172413793){g=(j+-.13793103448275862)*.12841854934601665}else{g=j*j*j}j=j- +(c[b+8>>2]|0)*152587890625.0e-16/200.0;if(j<.20689655172413793){j=(j+-.13793103448275862)*.12841854934601665}else{j=j*j*j}f=f*+h[a+8>>3];g=g*+h[a+16>>3];j=j*+h[a+24>>3];k=+h[a+88>>3]*(f*3.240449+g*-1.537136+j*-.498531);if(k<0.0){k=0.0}else{k=k>1.0?1.0:k}c[d>>2]=~~(+T(+k)*65536.0);k=(f*-.969265+g*1.876011+j*.041556)*+h[a+96>>3];if(k<0.0){k=0.0}else{k=k>1.0?1.0:k}c[d+4>>2]=~~(+T(+k)*65536.0);f=(f*.055643+g*-.204026+j*1.057229)*+h[a+104>>3];if(f<0.0){k=0.0;k=+T(+k);k=k*65536.0;a=~~k;b=d+8|0;c[b>>2]=a;i=e;return}k=f>1.0?1.0:f;k=+T(+k);k=k*65536.0;a=~~k;b=d+8|0;c[b>>2]=a;i=e;return}function Gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=i;i=i+16|0;f=g;Gd[c[(c[a>>2]|0)+20>>2]&255](a,b,f);b=65536-(c[g>>2]|0)|0;if((b|0)<0){b=0}else{b=(b|0)>65536?65536:b}a=65536-(c[f+4>>2]|0)|0;if((a|0)<0){a=0}else{a=(a|0)>65536?65536:a}f=65536-(c[f+8>>2]|0)|0;if((f|0)<0){f=0}else{f=(f|0)>65536?65536:f}g=(a|0)<(b|0)?a:b;g=(f|0)<(g|0)?f:g;c[d>>2]=b-g;c[d+4>>2]=a-g;c[d+8>>2]=f-g;c[d+12>>2]=g;i=e;return}function Hz(a,b){a=a|0;b=b|0;var d=0,e=0.0;d=i;c[b>>2]=0;e=+h[a+56>>3];do{if(e>0.0){c[b+4>>2]=~~(e*65536.0)}else{e=+h[a+64>>3];if(e<0.0){c[b+4>>2]=~~(e*65536.0);break}else{c[b+4>>2]=0;break}}}while(0);e=+h[a+72>>3];if(e>0.0){c[b+8>>2]=~~(e*65536.0);i=d;return}e=+h[a+80>>3];if(e<0.0){c[b+8>>2]=~~(e*65536.0);i=d;return}else{c[b+8>>2]=0;i=d;return}}function Iz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;h[b>>3]=0.0;h[c>>3]=100.0;d=a+56|0;h[b+8>>3]=+h[d>>3];h[c+8>>3]=+h[a+64>>3]- +h[d>>3];d=a+72|0;h[b+16>>3]=+h[d>>3];h[c+16>>3]=+h[a+80>>3]- +h[d>>3];i=i;return}function Jz(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=168688;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function Kz(a){a=a|0;var b=0;b=i;c[a>>2]=168688;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function Lz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=i;b=FW(88)|0;f=c[a+4>>2]|0;g=c[a+8>>2]|0;g=jd[c[(c[g>>2]|0)+8>>2]&511](g)|0;c[b>>2]=168688;c[b+4>>2]=f;c[b+8>>2]=g;g=a+80|0;f=c[g+4>>2]|0;e=b+80|0;c[e>>2]=c[g>>2];c[e+4>>2]=f;e=b+16|0;bX(e|0,0,24)|0;h[e>>3]=+h[a+16>>3];h[b+48>>3]=+h[a+48>>3];h[b+24>>3]=+h[a+24>>3];h[b+56>>3]=+h[a+56>>3];h[b+32>>3]=+h[a+32>>3];h[b+64>>3]=+h[a+64>>3];h[b+40>>3]=+h[a+40>>3];h[b+72>>3]=+h[a+72>>3];i=d;return b|0}function Mz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=c[a+8>>2]|0;Gd[c[(c[a>>2]|0)+16>>2]&255](a,b,d);i=e;return}function Nz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=c[a+8>>2]|0;Gd[c[(c[a>>2]|0)+20>>2]&255](a,b,d);i=e;return}function Oz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;a=c[a+8>>2]|0;Jd[c[(c[a>>2]|0)+32>>2]&63](a,b,d,e);i=f;return}function Pz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=c[a+8>>2]|0;Gd[c[(c[a>>2]|0)+24>>2]&255](a,b,d);i=e;return}function Qz(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;a=jd[c[(c[a>>2]|0)+36>>2]&511](a)|0;i=b;return a|0}function Rz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0;d=i;e=a+4|0;if((c[e>>2]|0)>0){f=0}else{i=d;return}do{g=+h[a+16+(f<<3)>>3];do{if(g>0.0){c[b+(f<<2)>>2]=~~(g*65536.0)}else{g=+h[a+48+(f<<3)>>3];if(g<0.0){c[b+(f<<2)>>2]=~~(g*65536.0);break}else{c[b+(f<<2)>>2]=0;break}}}while(0);f=f+1|0;}while((f|0)<(c[e>>2]|0));i=d;return}function Sz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;a=c[a+8>>2]|0;Jd[c[(c[a>>2]|0)+52>>2]&63](a,b,d,e);i=f;return}function Tz(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=168952;d=c[a+4>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}Fe(c[a+12>>2]|0);HW(a);i=b;return}function Uz(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=168952;d=c[a+4>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}Fe(c[a+12>>2]|0);i=b;return}function Vz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;d=i;b=FW(16)|0;e=a+4|0;f=c[e>>2]|0;f=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0;h=a+8|0;g=c[h>>2]|0;c[b>>2]=168952;c[b+4>>2]=f;c[b+8>>2]=g;g=ye(da(jd[c[(c[f>>2]|0)+44>>2]&511](f)|0,g+1|0)|0,1)|0;c[b+12>>2]=g;f=c[a+12>>2]|0;a=(c[h>>2]|0)+1|0;e=c[e>>2]|0;$W(g|0,f|0,da(jd[c[(c[e>>2]|0)+44>>2]&511](e)|0,a)|0)|0;i=d;return b|0}function Wz(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;k=i;i=i+256|0;m=i;i=i+256|0;g=i;i=i+128|0;o=a+4|0;f=c[o>>2]|0;n=c[f>>2]|0;l=c[n+16>>2]|0;n=jd[c[n+44>>2]&511](f)|0;o=c[o>>2]|0;Jd[c[(c[o>>2]|0)+52>>2]&63](o,k,m,c[a+8>>2]|0);b=da(~~(+(c[b>>2]|0)*152587890625.0e-16+.5),n)|0;o=c[a+12>>2]|0;if((n|0)>0){a=0}else{o=l;Gd[o&255](f,g,e);i=j;return}do{c[g+(a<<2)>>2]=~~((+h[k+(a<<3)>>3]+ +(d[o+(a+b)|0]|0|0)/255.0*+h[m+(a<<3)>>3])*65536.0);a=a+1|0;}while((a|0)<(n|0));o=l;Gd[o&255](f,g,e);i=j;return}function Xz(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;k=i;i=i+256|0;m=i;i=i+256|0;g=i;i=i+128|0;o=a+4|0;f=c[o>>2]|0;n=c[f>>2]|0;l=c[n+20>>2]|0;n=jd[c[n+44>>2]&511](f)|0;o=c[o>>2]|0;Jd[c[(c[o>>2]|0)+52>>2]&63](o,k,m,c[a+8>>2]|0);b=da(~~(+(c[b>>2]|0)*152587890625.0e-16+.5),n)|0;o=c[a+12>>2]|0;if((n|0)>0){a=0}else{o=l;Gd[o&255](f,g,e);i=j;return}do{c[g+(a<<2)>>2]=~~((+h[k+(a<<3)>>3]+ +(d[o+(a+b)|0]|0|0)/255.0*+h[m+(a<<3)>>3])*65536.0);a=a+1|0;}while((a|0)<(n|0));o=l;Gd[o&255](f,g,e);i=j;return}function Yz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;l=b+4|0;k=c[l>>2]|0;k=jd[c[(c[k>>2]|0)+44>>2]&511](k)|0;h=ye(g,k)|0;do{if((g|0)>0){b=b+12|0;if((k|0)>0){m=0}else{break}do{n=e+m|0;o=da(m,k)|0;p=0;do{q=(da(d[n]|0,k)|0)+p|0;a[h+(p+o)|0]=a[(c[b>>2]|0)+q|0]|0;p=p+1|0;}while((p|0)<(k|0));m=m+1|0;}while((m|0)<(g|0))}}while(0);q=c[l>>2]|0;Jd[c[(c[q>>2]|0)+32>>2]&63](q,h,f,g);Fe(h);i=j;return}function Zz(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;k=i;i=i+256|0;m=i;i=i+256|0;g=i;i=i+128|0;o=a+4|0;f=c[o>>2]|0;n=c[f>>2]|0;l=c[n+24>>2]|0;n=jd[c[n+44>>2]&511](f)|0;o=c[o>>2]|0;Jd[c[(c[o>>2]|0)+52>>2]&63](o,k,m,c[a+8>>2]|0);b=da(~~(+(c[b>>2]|0)*152587890625.0e-16+.5),n)|0;o=c[a+12>>2]|0;if((n|0)>0){a=0}else{o=l;Gd[o&255](f,g,e);i=j;return}do{c[g+(a<<2)>>2]=~~((+h[k+(a<<3)>>3]+ +(d[o+(a+b)|0]|0|0)/255.0*+h[m+(a<<3)>>3])*65536.0);a=a+1|0;}while((a|0)<(n|0));o=l;Gd[o&255](f,g,e);i=j;return}function _z(a,b){a=a|0;b=b|0;c[b>>2]=0;i=i;return}function $z(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;h[b>>3]=0.0;h[c>>3]=+(d|0);i=i;return}function aA(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=169392;d=c[a+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+8>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+12>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function bA(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=169392;d=c[a+4>>2]|0;if((d|0)!=0){ke(d);HW(d)}d=c[a+8>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}a=c[a+12>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function cA(b){b=b|0;var d=0,e=0,f=0,g=0;e=i;d=FW(20)|0;g=c[b+4>>2]|0;f=FW(32)|0;ie(f,g);g=c[b+8>>2]|0;g=jd[c[(c[g>>2]|0)+8>>2]&511](g)|0;b=c[b+12>>2]|0;b=jd[c[(c[b>>2]|0)+8>>2]&511](b)|0;c[d>>2]=169392;c[d+4>>2]=f;c[d+8>>2]=g;c[d+12>>2]=b;a[d+16|0]=(te(f,169456)|0)==0|0;i=e;return d|0}function dA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0;f=i;j=i;i=i+8|0;g=i;i=i+256|0;e=i;i=i+128|0;h[j>>3]=+(c[b>>2]|0)*152587890625.0e-16;b=c[a+12>>2]|0;Gd[c[(c[b>>2]|0)+16>>2]&255](b,j,g);a=a+8|0;b=c[a>>2]|0;if((jd[c[(c[b>>2]|0)+44>>2]&511](b)|0)>0){b=0}else{j=a;j=c[j>>2]|0;b=j;b=c[b>>2]|0;b=b+16|0;b=c[b>>2]|0;Gd[b&255](j,e,d);i=f;return}do{c[e+(b<<2)>>2]=~~(+h[g+(b<<3)>>3]*65536.0);b=b+1|0;j=c[a>>2]|0;}while((b|0)<(jd[c[(c[j>>2]|0)+44>>2]&511](j)|0));j=a;j=c[j>>2]|0;b=j;b=c[b>>2]|0;b=b+16|0;b=c[b>>2]|0;Gd[b&255](j,e,d);i=f;return}function eA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0;f=i;j=i;i=i+8|0;g=i;i=i+256|0;e=i;i=i+128|0;h[j>>3]=+(c[b>>2]|0)*152587890625.0e-16;b=c[a+12>>2]|0;Gd[c[(c[b>>2]|0)+16>>2]&255](b,j,g);a=a+8|0;b=c[a>>2]|0;if((jd[c[(c[b>>2]|0)+44>>2]&511](b)|0)>0){b=0}else{j=a;j=c[j>>2]|0;b=j;b=c[b>>2]|0;b=b+20|0;b=c[b>>2]|0;Gd[b&255](j,e,d);i=f;return}do{c[e+(b<<2)>>2]=~~(+h[g+(b<<3)>>3]*65536.0);b=b+1|0;j=c[a>>2]|0;}while((b|0)<(jd[c[(c[j>>2]|0)+44>>2]&511](j)|0));j=a;j=c[j>>2]|0;b=j;b=c[b>>2]|0;b=b+20|0;b=c[b>>2]|0;Gd[b&255](j,e,d);i=f;return}function fA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0;f=i;j=i;i=i+8|0;g=i;i=i+256|0;e=i;i=i+128|0;h[j>>3]=+(c[b>>2]|0)*152587890625.0e-16;b=c[a+12>>2]|0;Gd[c[(c[b>>2]|0)+16>>2]&255](b,j,g);a=a+8|0;b=c[a>>2]|0;if((jd[c[(c[b>>2]|0)+44>>2]&511](b)|0)>0){b=0}else{j=a;j=c[j>>2]|0;b=j;b=c[b>>2]|0;b=b+24|0;b=c[b>>2]|0;Gd[b&255](j,e,d);i=f;return}do{c[e+(b<<2)>>2]=~~(+h[g+(b<<3)>>3]*65536.0);b=b+1|0;j=c[a>>2]|0;}while((b|0)<(jd[c[(c[j>>2]|0)+44>>2]&511](j)|0));j=a;j=c[j>>2]|0;b=j;b=c[b>>2]|0;b=b+24|0;b=c[b>>2]|0;Gd[b&255](j,e,d);i=f;return}function gA(a,b){a=a|0;b=b|0;c[b>>2]=65536;i=i;return}function hA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=169600;d=a+4|0;e=c[d>>2]|0;if((e|0)>0){f=0;do{g=c[a+8+(f<<2)>>2]|0;if((g|0)!=0){ke(g);HW(g);e=c[d>>2]|0}f=f+1|0;}while((f|0)<(e|0))}d=c[a+136>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+140>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function iA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=169600;d=a+4|0;e=c[d>>2]|0;if((e|0)>0){f=0;do{g=c[a+8+(f<<2)>>2]|0;if((g|0)!=0){ke(g);HW(g);e=c[d>>2]|0}f=f+1|0;}while((f|0)<(e|0))}d=c[a+136>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}a=c[a+140>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function jA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;d=FW(148)|0;g=b+4|0;h=c[g>>2]|0;j=c[b+136>>2]|0;j=jd[c[(c[j>>2]|0)+8>>2]&511](j)|0;f=c[b+140>>2]|0;f=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0;c[d>>2]=169600;c[d+4>>2]=h;c[d+136>>2]=j;c[d+140>>2]=f;f=d+144|0;a[f]=0;if((c[g>>2]|0)<=0){h=b+144|0;h=a[h]|0;h=h&1;j=f;a[j]=h;i=e;return d|0}h=d+8|0;j=0;do{l=c[b+8+(j<<2)>>2]|0;k=FW(32)|0;ie(k,l);c[h+(j<<2)>>2]=k;j=j+1|0;}while((j|0)<(c[g>>2]|0));k=b+144|0;k=a[k]|0;k=k&1;l=f;a[l]=k;i=e;return d|0}function kA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;e=i;k=i;i=i+256|0;f=i;i=i+256|0;g=i;i=i+128|0;j=c[a+4>>2]|0;if((j|0)>0){l=0;do{h[k+(l<<3)>>3]=+(c[b+(l<<2)>>2]|0)*152587890625.0e-16;l=l+1|0;}while((l|0)<(j|0))}j=c[a+140>>2]|0;Gd[c[(c[j>>2]|0)+16>>2]&255](j,k,f);j=a+136|0;l=c[j>>2]|0;if((jd[c[(c[l>>2]|0)+44>>2]&511](l)|0)>0){k=0}else{l=j;l=c[l>>2]|0;b=l;b=c[b>>2]|0;b=b+16|0;b=c[b>>2]|0;Gd[b&255](l,g,d);i=e;return}do{c[g+(k<<2)>>2]=~~(+h[f+(k<<3)>>3]*65536.0);k=k+1|0;l=c[j>>2]|0;}while((k|0)<(jd[c[(c[l>>2]|0)+44>>2]&511](l)|0));l=j;l=c[l>>2]|0;b=l;b=c[b>>2]|0;b=b+16|0;b=c[b>>2]|0;Gd[b&255](l,g,d);i=e;return}function lA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;e=i;k=i;i=i+256|0;f=i;i=i+256|0;g=i;i=i+128|0;j=c[a+4>>2]|0;if((j|0)>0){l=0;do{h[k+(l<<3)>>3]=+(c[b+(l<<2)>>2]|0)*152587890625.0e-16;l=l+1|0;}while((l|0)<(j|0))}j=c[a+140>>2]|0;Gd[c[(c[j>>2]|0)+16>>2]&255](j,k,f);j=a+136|0;l=c[j>>2]|0;if((jd[c[(c[l>>2]|0)+44>>2]&511](l)|0)>0){k=0}else{l=j;l=c[l>>2]|0;b=l;b=c[b>>2]|0;b=b+20|0;b=c[b>>2]|0;Gd[b&255](l,g,d);i=e;return}do{c[g+(k<<2)>>2]=~~(+h[f+(k<<3)>>3]*65536.0);k=k+1|0;l=c[j>>2]|0;}while((k|0)<(jd[c[(c[l>>2]|0)+44>>2]&511](l)|0));l=j;l=c[l>>2]|0;b=l;b=c[b>>2]|0;b=b+20|0;b=c[b>>2]|0;Gd[b&255](l,g,d);i=e;return}function mA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;e=i;k=i;i=i+256|0;f=i;i=i+256|0;g=i;i=i+128|0;j=c[a+4>>2]|0;if((j|0)>0){l=0;do{h[k+(l<<3)>>3]=+(c[b+(l<<2)>>2]|0)*152587890625.0e-16;l=l+1|0;}while((l|0)<(j|0))}j=c[a+140>>2]|0;Gd[c[(c[j>>2]|0)+16>>2]&255](j,k,f);j=a+136|0;l=c[j>>2]|0;if((jd[c[(c[l>>2]|0)+44>>2]&511](l)|0)>0){k=0}else{l=j;l=c[l>>2]|0;b=l;b=c[b>>2]|0;b=b+24|0;b=c[b>>2]|0;Gd[b&255](l,g,d);i=e;return}do{c[g+(k<<2)>>2]=~~(+h[f+(k<<3)>>3]*65536.0);k=k+1|0;l=c[j>>2]|0;}while((k|0)<(jd[c[(c[l>>2]|0)+44>>2]&511](l)|0));l=j;l=c[l>>2]|0;b=l;b=c[b>>2]|0;b=b+24|0;b=c[b>>2]|0;Gd[b&255](l,g,d);i=e;return}function nA(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;a=a+4|0;if((c[a>>2]|0)>0){e=0}else{i=d;return}do{c[b+(e<<2)>>2]=65536;e=e+1|0;}while((e|0)<(c[a>>2]|0));i=d;return}function oA(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=169832;d=c[a+4>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function pA(a){a=a|0;var b=0;b=i;c[a>>2]=169832;a=c[a+4>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function qA(a){a=a|0;var b=0,d=0;d=i;b=FW(8)|0;a=c[a+4>>2]|0;if((a|0)==0){a=0}else{a=jd[c[(c[a>>2]|0)+8>>2]&511](a)|0}c[b>>2]=169832;c[b+4>>2]=a;i=d;return b|0}function rA(a,b,d){a=a|0;b=b|0;d=d|0;c[d>>2]=0;i=i;return}function sA(a,b,d){a=a|0;b=b|0;d=d|0;c[d+8>>2]=0;c[d+4>>2]=0;c[d>>2]=0;i=i;return}function tA(a,b,d){a=a|0;b=b|0;d=d|0;c[d+8>>2]=0;c[d+4>>2]=0;c[d>>2]=0;c[d+12>>2]=1;i=i;return}function uA(a,b){a=a|0;b=b|0;c[b>>2]=0;i=i;return}function vA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;g=i;i=i+16|0;d=g;c[g>>2]=13;f=d+8|0;c[f>>2]=0;c[f+4>>2]=0;h=c[a>>2]|0;if((h|0)==8){h=c[a+8>>2]|0;Yu(jd[c[(c[h>>2]|0)+72>>2]&511](h)|0,169976,d,0)|0}else if((h|0)==7){Yu(c[a+8>>2]|0,169976,d,0)|0}else{h=0;i=e;return h|0}do{if((c[g>>2]|0)==1){f=c[f>>2]|0;if((f|0)==2){a=xA(a,b)|0;break}else if((f|0)==1){a=wA(a)|0;break}else{a=0;break}}else{a=0}}while(0);Of(d);h=a;i=e;return h|0}function wA(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0.0,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.0,aa=0,ba=0.0,ca=0.0;j=i;n=i;i=i+16|0;y=n;z=i;i=i+8|0;g=z;B=i;i=i+8|0;A=B;K=i;i=i+8|0;N=i;i=i+8|0;M=i;i=i+16|0;L=M;Q=i;i=i+8|0;P=i;i=i+16|0;O=P;Y=i;i=i+8|0;R=i;i=i+16|0;T=R;V=i;i=i+8|0;U=V;W=i;i=i+8|0;X=W;Z=i;i=i+8|0;E=i;i=i+8|0;F=E;aa=i;i=i+8|0;_=i;i=i+8|0;G=_;q=i;i=i+32|0;S=q;l=i;i=i+48|0;m=l;J=i;i=i+16|0;d=J;k=i;i=i+16|0;x=k;s=i;i=i+16|0;f=s;c[J>>2]=13;H=d+8|0;c[H>>2]=0;I=H+4|0;c[I>>2]=0;c[k>>2]=13;e=x+8|0;c[e>>2]=0;c[e+4>>2]=0;c[s>>2]=13;w=f+8|0;c[w>>2]=0;c[w+4>>2]=0;if((c[a>>2]|0)!=8){aa=0;i=j;return aa|0}D=c[a+8>>2]|0;D=jd[c[(c[D>>2]|0)+72>>2]&511](D)|0;do{if((c[(Yu(D,169992,x,0)|0)>>2]|0)==1){aa=c[k>>2]|0;if((aa|0)==1){o=c[e>>2]|0;break}else{c[_>>2]=aa;c[G+4>>2]=1;Qe(0,172720,G);tc()}}else{Qe(-1,170008,aa);o=1}}while(0);Of(x);do{if((c[(Yu(D,170048,x,0)|0)>>2]|0)==1){G=c[k>>2]|0;if((G|0)==1){v=c[e>>2]|0;break}else{c[E>>2]=G;c[F+4>>2]=1;Qe(0,172720,F);tc()}}else{Qe(-1,170064,Z);v=1}}while(0);Of(x);F=S+8|0;G=S+24|0;bX(q|0,0,16)|0;h[G>>3]=1.0;E=S+16|0;h[E>>3]=1.0;a:do{if((c[(Yu(D,170112,x,0)|0)>>2]|0)==6){Z=c[k>>2]|0;if((Z|0)!=6){c[W>>2]=Z;c[X+4>>2]=6;Qe(0,172720,X);tc()}if((c[(c[e>>2]|0)+12>>2]|0)!=4){C=28;break}X=6;W=0;while(1){if((X|0)!=6){C=18;break}if(((c[(ut(c[e>>2]|0,W,f)|0)>>2]|0)+ -1|0)>>>0<2){X=c[s>>2]|0;if((X+ -1|0)>>>0>=2){C=21;break}if((X|0)==1){$=+(c[w>>2]|0)}else{$=+h[w>>3]}h[S+(W<<3)>>3]=$}Of(f);W=W+1|0;if((W|0)>=4){break a}X=c[k>>2]|0}if((C|0)==18){c[V>>2]=X;c[U+4>>2]=6;Qe(0,172720,U);tc()}else if((C|0)==21){c[R>>2]=X;c[T+4>>2]=1;c[T+8>>2]=2;Qe(0,172792,T);tc()}}else{C=28}}while(0);if((C|0)==28){Qe(-1,170120,Y)}Of(x);do{if(((c[(Yu(D,170160,x,0)|0)>>2]|0)+ -1|0)>>>0<2){C=c[k>>2]|0;if((C+ -1|0)>>>0>=2){c[P>>2]=C;c[O+4>>2]=1;c[O+8>>2]=2;Qe(0,172792,O);tc()}if((C|0)==1){$=+(c[e>>2]|0);break}else{$=+h[e>>3];break}}else{Qe(-1,170168,Q);$=1.0}}while(0);Of(x);do{if(((c[(Yu(D,170208,x,0)|0)>>2]|0)+ -1|0)>>>0<2){C=c[k>>2]|0;if((C+ -1|0)>>>0>=2){c[M>>2]=C;c[L+4>>2]=1;c[L+8>>2]=2;Qe(0,172792,L);tc()}if((C|0)==1){ba=+(c[e>>2]|0);break}else{ba=+h[e>>3];break}}else{Qe(-1,170216,N);ba=1.0}}while(0);Of(x);if((c[(Yu(D,170256,d,0)|0)>>2]|0)!=7){Of(d);c[H>>2]=0;c[I>>2]=0;c[J>>2]=5;Qe(-1,170272,K)}h[l>>3]=1.0;L=m+8|0;K=m+16|0;J=m+24|0;bX(L|0,0,16)|0;h[J>>3]=1.0;I=m+32|0;H=m+40|0;bX(I|0,0,16)|0;do{if((c[(Yu(D,168496,x,0)|0)>>2]|0)==6){C=c[k>>2]|0;if((C|0)!=6){c[B>>2]=C;c[A+4>>2]=6;Qe(0,172720,A);tc()}if((c[(c[e>>2]|0)+12>>2]|0)!=6){p=0.0;b=1.0;r=0.0;t=0.0;u=1.0;break}B=6;A=0;while(1){if((B|0)!=6){C=51;break}if(((c[(ut(c[e>>2]|0,A,f)|0)>>2]|0)+ -1|0)>>>0<2){B=c[s>>2]|0;if((B+ -1|0)>>>0>=2){C=54;break}if((B|0)==1){ca=+(c[w>>2]|0)}else{ca=+h[w>>3]}h[m+(A<<3)>>3]=ca}Of(f);A=A+1|0;if((A|0)>=6){C=61;break}B=c[k>>2]|0}if((C|0)==51){c[z>>2]=B;c[g+4>>2]=6;Qe(0,172720,g);tc()}else if((C|0)==54){c[n>>2]=B;c[y+4>>2]=1;c[y+8>>2]=2;Qe(0,172792,y);tc()}else if((C|0)==61){p=+h[I>>3];b=+h[J>>3];r=+h[K>>3];t=+h[L>>3];u=+h[l>>3];break}}else{p=0.0;b=1.0;r=0.0;t=0.0;u=1.0}}while(0);Of(x);aa=FW(144)|0;c[aa+4>>2]=1;c[aa>>2]=170320;Z=aa+64|0;c[Z>>2]=13;c[aa+72>>2]=0;c[aa+76>>2]=0;_=aa+128|0;c[_>>2]=13;c[aa+136>>2]=0;c[aa+140>>2]=0;c[aa+8>>2]=o;c[aa+12>>2]=v;h[aa+16>>3]=+h[q>>3];h[aa+24>>3]=+h[F>>3];h[aa+32>>3]=+h[E>>3];h[aa+40>>3]=+h[G>>3];h[aa+48>>3]=$;h[aa+56>>3]=ba;Mf(d,Z)|0;h[aa+80>>3]=u;h[aa+88>>3]=t;h[aa+96>>3]=r;h[aa+104>>3]=b;h[aa+112>>3]=p;h[aa+120>>3]=+h[H>>3];Mf(a,_)|0;Of(d);i=j;return aa|0}function xA(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.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.0;o=i;k=i;i=i+16|0;l=k;g=i;i=i+8|0;j=g;D=i;i=i+8|0;C=D;r=i;i=i+48|0;w=r;x=i;i=i+16|0;f=x;u=i;i=i+16|0;s=u;c[x>>2]=13;t=f+8|0;c[t>>2]=0;c[t+4>>2]=0;c[u>>2]=13;v=s+8|0;c[v>>2]=0;c[v+4>>2]=0;if((c[a>>2]|0)!=7){E=0;i=o;return E|0}E=c[a+8>>2]|0;Yu(E,170336,f,0)|0;z=BA(f,b)|0;Of(f);if((z|0)==0){E=0;i=o;return E|0}h[r>>3]=1.0;a=w+8|0;y=w+16|0;A=w+24|0;bX(a|0,0,16)|0;h[A>>3]=1.0;B=w+32|0;b=w+40|0;bX(B|0,0,16)|0;do{if((c[(Yu(E,168496,f,0)|0)>>2]|0)==6){E=c[x>>2]|0;if((E|0)!=6){c[D>>2]=E;c[C+4>>2]=6;Qe(0,172720,C);tc()}if((c[(c[t>>2]|0)+12>>2]|0)!=6){m=0.0;n=0.0;d=1.0;p=0.0;q=0.0;e=1.0;break}C=6;D=0;while(1){if((C|0)!=6){s=9;break}if(((c[(ut(c[t>>2]|0,D,s)|0)>>2]|0)+ -1|0)>>>0<2){C=c[u>>2]|0;if((C+ -1|0)>>>0>=2){s=12;break}if((C|0)==1){F=+(c[v>>2]|0)}else{F=+h[v>>3]}h[w+(D<<3)>>3]=F}Of(s);D=D+1|0;if((D|0)>=6){s=19;break}C=c[x>>2]|0}if((s|0)==9){c[g>>2]=C;c[j+4>>2]=6;Qe(0,172720,j);tc()}else if((s|0)==12){c[k>>2]=C;c[l+4>>2]=1;c[l+8>>2]=2;Qe(0,172792,l);tc()}else if((s|0)==19){m=+h[b>>3];n=+h[B>>3];d=+h[A>>3];p=+h[y>>3];q=+h[a>>3];e=+h[r>>3];break}}else{m=0.0;n=0.0;d=1.0;p=0.0;q=0.0;e=1.0}}while(0);Of(f);E=FW(64)|0;c[E+4>>2]=2;c[E>>2]=170352;c[E+8>>2]=z;h[E+16>>3]=e;h[E+24>>3]=q;h[E+32>>3]=p;h[E+40>>3]=d;h[E+48>>3]=n;h[E+56>>3]=m;i=o;return E|0}function yA(a){a=a|0;var b=0;b=i;c[a>>2]=170320;Of(a+64|0);Of(a+128|0);HW(a);i=b;return}function zA(a){a=a|0;var b=0;b=i;c[a>>2]=170320;Of(a+64|0);Of(a+128|0);i=b;return}function AA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,j=0.0,k=0,l=0;d=i;b=FW(144)|0;l=c[a+8>>2]|0;k=c[a+12>>2]|0;j=+h[a+48>>3];g=+h[a+56>>3];c[b+4>>2]=1;c[b>>2]=170320;f=b+64|0;c[f>>2]=13;c[b+72>>2]=0;c[b+76>>2]=0;e=b+128|0;c[e>>2]=13;c[b+136>>2]=0;c[b+140>>2]=0;c[b+8>>2]=l;c[b+12>>2]=k;h[b+16>>3]=+h[a+16>>3];h[b+24>>3]=+h[a+24>>3];h[b+32>>3]=+h[a+32>>3];h[b+40>>3]=+h[a+40>>3];h[b+48>>3]=j;h[b+56>>3]=g;Mf(a+64|0,f)|0;h[b+80>>3]=+h[a+80>>3];h[b+88>>3]=+h[a+88>>3];h[b+96>>3]=+h[a+96>>3];h[b+104>>3]=+h[a+104>>3];h[b+112>>3]=+h[a+112>>3];h[b+120>>3]=+h[a+120>>3];Mf(a+128|0,e)|0;i=d;return b|0}function BA(a,b){a=a|0;b=b|0;var 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;f=i;l=i;i=i+8|0;d=l;g=i;i=i+8|0;k=i;i=i+8|0;h=i;i=i+8|0;j=i;i=i+8|0;n=i;i=i+8|0;o=n;r=i;i=i+8|0;q=i;i=i+16|0;e=q;c[q>>2]=13;m=e+8|0;c[m>>2]=0;c[m+4>>2]=0;p=c[a>>2]|0;if((p|0)==8){p=c[a+8>>2]|0;p=jd[c[(c[p>>2]|0)+72>>2]&511](p)|0}else if((p|0)==7){p=c[a+8>>2]|0}else{r=0;i=f;return r|0}if((c[(Yu(p,170392,e,0)|0)>>2]|0)!=1){Qe(-1,170408,r);Of(e);r=0;i=f;return r|0}q=c[q>>2]|0;if((q|0)!=1){c[n>>2]=q;c[o+4>>2]=1;Qe(0,172720,o);tc()}m=c[m>>2]|0;Of(e);switch(m|0){case 2:{r=IA(p,b)|0;i=f;return r|0};case 1:{r=HA(p,b)|0;i=f;return r|0};case 7:{if((c[a>>2]|0)==8){r=LA(7,p,c[a+8>>2]|0,b)|0;i=f;return r|0}else{Qe(-1,170552,g);r=0;i=f;return r|0}break};case 5:{if((c[a>>2]|0)==8){r=KA(5,p,c[a+8>>2]|0,b)|0;i=f;return r|0}else{Qe(-1,170488,h);r=0;i=f;return r|0}break};case 4:{if((c[a>>2]|0)==8){r=KA(4,p,c[a+8>>2]|0,b)|0;i=f;return r|0}else{Qe(-1,170456,j);r=0;i=f;return r|0}break};case 6:{if((c[a>>2]|0)==8){r=LA(6,p,c[a+8>>2]|0,b)|0;i=f;return r|0}else{Qe(-1,170520,k);r=0;i=f;return r|0}break};case 3:{r=JA(p,b)|0;i=f;return r|0};default:{c[l>>2]=m;Qe(-1,170584,d);r=0;i=f;return r|0}}return 0}function CA(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=170352;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function DA(a){a=a|0;var b=0;b=i;c[a>>2]=170352;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function EA(a){a=a|0;var b=0,d=0,e=0;d=i;b=FW(64)|0;e=c[a+8>>2]|0;e=jd[c[(c[e>>2]|0)+8>>2]&511](e)|0;c[b+4>>2]=2;c[b>>2]=170352;c[b+8>>2]=e;h[b+16>>3]=+h[a+16>>3];h[b+24>>3]=+h[a+24>>3];h[b+32>>3]=+h[a+32>>3];h[b+40>>3]=+h[a+40>>3];h[b+48>>3]=+h[a+48>>3];h[b+56>>3]=+h[a+56>>3];i=d;return b|0}function FA(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=170376;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function GA(a){a=a|0;var b=0;b=i;c[a>>2]=170376;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function HA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=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.0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0.0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0.0,la=0.0,ma=0.0,na=0.0;e=i;o=i;i=i+8|0;k=o;p=i;i=i+8|0;s=i;i=i+16|0;r=s;t=i;i=i+8|0;u=t;v=i;i=i+16|0;w=v;x=i;i=i+8|0;y=x;A=i;i=i+16|0;z=A;B=i;i=i+8|0;C=B;D=i;i=i+16|0;E=D;G=i;i=i+8|0;F=G;I=i;i=i+16|0;H=I;K=i;i=i+8|0;L=K;Q=i;i=i+16|0;P=Q;R=i;i=i+8|0;S=R;T=i;i=i+16|0;U=T;W=i;i=i+8|0;V=W;Z=i;i=i+16|0;Y=Z;_=i;i=i+8|0;$=_;ba=i;i=i+16|0;aa=ba;da=i;i=i+8|0;ca=da;ga=i;i=i+16|0;fa=ga;ja=i;i=i+8|0;ha=ja;q=i;i=i+128|0;d=q;j=i;i=i+16|0;n=j;ia=i;i=i+16|0;m=ia;c[j>>2]=13;l=n+8|0;c[l>>2]=0;c[l+4>>2]=0;c[ia>>2]=13;ia=m+8|0;c[ia>>2]=0;c[ia+4>>2]=0;do{if((c[(Yu(a,170840,n,0)|0)>>2]|0)==6){ia=c[j>>2]|0;if((ia|0)!=6){c[ja>>2]=ia;c[ha+4>>2]=6;Qe(0,172720,ha);tc()}ha=c[l>>2]|0;if((c[ha+12>>2]|0)!=4){J=0.0;M=1.0;N=0.0;O=1.0;break}ia=ut(ha,0,m)|0;ha=c[ia>>2]|0;if((ha+ -1|0)>>>0>=2){c[ga>>2]=ha;c[fa+4>>2]=1;c[fa+8>>2]=2;Qe(0,172792,fa);tc()}fa=ia+8|0;if((ha|0)==1){J=+(c[fa>>2]|0)}else{J=+h[fa>>3]}Of(m);fa=c[j>>2]|0;if((fa|0)!=6){c[da>>2]=fa;c[ca+4>>2]=6;Qe(0,172720,ca);tc()}da=ut(c[l>>2]|0,1,m)|0;ca=c[da>>2]|0;if((ca+ -1|0)>>>0>=2){c[ba>>2]=ca;c[aa+4>>2]=1;c[aa+8>>2]=2;Qe(0,172792,aa);tc()}aa=da+8|0;if((ca|0)==1){M=+(c[aa>>2]|0)}else{M=+h[aa>>3]}Of(m);aa=c[j>>2]|0;if((aa|0)!=6){c[_>>2]=aa;c[$+4>>2]=6;Qe(0,172720,$);tc()}$=ut(c[l>>2]|0,2,m)|0;_=c[$>>2]|0;if((_+ -1|0)>>>0>=2){c[Z>>2]=_;c[Y+4>>2]=1;c[Y+8>>2]=2;Qe(0,172792,Y);tc()}Y=$+8|0;if((_|0)==1){N=+(c[Y>>2]|0)}else{N=+h[Y>>3]}Of(m);Y=c[j>>2]|0;if((Y|0)!=6){c[W>>2]=Y;c[V+4>>2]=6;Qe(0,172720,V);tc()}W=ut(c[l>>2]|0,3,m)|0;V=c[W>>2]|0;if((V+ -1|0)>>>0>=2){c[T>>2]=V;c[U+4>>2]=1;c[U+8>>2]=2;Qe(0,172792,U);tc()}T=W+8|0;if((V|0)==1){O=+(c[T>>2]|0)}else{O=+h[T>>3]}Of(m)}else{J=0.0;M=1.0;N=0.0;O=1.0}}while(0);Of(n);do{if((c[(Yu(a,168496,n,0)|0)>>2]|0)==6){T=c[j>>2]|0;if((T|0)!=6){c[R>>2]=T;c[S+4>>2]=6;Qe(0,172720,S);tc()}R=c[l>>2]|0;if((c[R+12>>2]|0)!=6){ma=0.0;na=0.0;la=1.0;ka=0.0;ea=0.0;X=1.0;break}S=ut(R,0,m)|0;R=c[S>>2]|0;if((R+ -1|0)>>>0>=2){c[Q>>2]=R;c[P+4>>2]=1;c[P+8>>2]=2;Qe(0,172792,P);tc()}P=S+8|0;if((R|0)==1){X=+(c[P>>2]|0)}else{X=+h[P>>3]}Of(m);P=c[j>>2]|0;if((P|0)!=6){c[K>>2]=P;c[L+4>>2]=6;Qe(0,172720,L);tc()}L=ut(c[l>>2]|0,1,m)|0;K=c[L>>2]|0;if((K+ -1|0)>>>0>=2){c[I>>2]=K;c[H+4>>2]=1;c[H+8>>2]=2;Qe(0,172792,H);tc()}H=L+8|0;if((K|0)==1){ea=+(c[H>>2]|0)}else{ea=+h[H>>3]}Of(m);H=c[j>>2]|0;if((H|0)!=6){c[G>>2]=H;c[F+4>>2]=6;Qe(0,172720,F);tc()}G=ut(c[l>>2]|0,2,m)|0;F=c[G>>2]|0;if((F+ -1|0)>>>0>=2){c[D>>2]=F;c[E+4>>2]=1;c[E+8>>2]=2;Qe(0,172792,E);tc()}D=G+8|0;if((F|0)==1){ka=+(c[D>>2]|0)}else{ka=+h[D>>3]}Of(m);D=c[j>>2]|0;if((D|0)!=6){c[B>>2]=D;c[C+4>>2]=6;Qe(0,172720,C);tc()}C=ut(c[l>>2]|0,3,m)|0;B=c[C>>2]|0;if((B+ -1|0)>>>0>=2){c[A>>2]=B;c[z+4>>2]=1;c[z+8>>2]=2;Qe(0,172792,z);tc()}z=C+8|0;if((B|0)==1){la=+(c[z>>2]|0)}else{la=+h[z>>3]}Of(m);z=c[j>>2]|0;if((z|0)!=6){c[x>>2]=z;c[y+4>>2]=6;Qe(0,172720,y);tc()}y=ut(c[l>>2]|0,4,m)|0;x=c[y>>2]|0;if((x+ -1|0)>>>0>=2){c[v>>2]=x;c[w+4>>2]=1;c[w+8>>2]=2;Qe(0,172792,w);tc()}v=y+8|0;if((x|0)==1){na=+(c[v>>2]|0)}else{na=+h[v>>3]}Of(m);v=c[j>>2]|0;if((v|0)!=6){c[t>>2]=v;c[u+4>>2]=6;Qe(0,172720,u);tc()}u=ut(c[l>>2]|0,5,m)|0;t=c[u>>2]|0;if((t+ -1|0)>>>0>=2){c[s>>2]=t;c[r+4>>2]=1;c[r+8>>2]=2;Qe(0,172792,r);tc()}r=u+8|0;if((t|0)==1){ma=+(c[r>>2]|0)}else{ma=+h[r>>3]}Of(m)}else{ma=0.0;na=0.0;la=1.0;ka=0.0;ea=0.0;X=1.0}}while(0);Of(n);Yu(a,170848,n,0)|0;a:do{if((c[j>>2]|0)==6){q=c[(c[l>>2]|0)+12>>2]|0;if((q|0)>32){Qe(-1,170864,p);g=92;break}if((q|0)>0){p=6;r=0}else{f=q;break}while(1){if((p|0)!=6){break}ut(c[l>>2]|0,r,m)|0;ja=EH(m)|0;c[d+(r<<2)>>2]=ja;Of(m);r=r+1|0;if((ja|0)==0){g=92;break a}if((r|0)>=(q|0)){f=q;break a}p=c[j>>2]|0}c[o>>2]=p;c[k+4>>2]=6;Qe(0,172720,k);tc()}else{ja=EH(n)|0;c[q>>2]=ja;if((ja|0)==0){g=92}else{f=1}}}while(0);if((g|0)==92){Of(n);ja=0;i=e;return ja|0}Of(n);g=FW(400)|0;c[g+4>>2]=1;c[g+8>>2]=0;c[g>>2]=170824;h[g+184>>3]=J;h[g+192>>3]=N;h[g+200>>3]=M;h[g+208>>3]=O;h[g+216>>3]=X;h[g+224>>3]=ea;h[g+232>>3]=ka;h[g+240>>3]=la;h[g+248>>3]=na;h[g+256>>3]=ma;j=g+392|0;c[j>>2]=f;if((f|0)>0){f=0;do{c[g+264+(f<<2)>>2]=c[d+(f<<2)>>2];f=f+1|0;}while((f|0)<(c[j>>2]|0))}if(MA(g,a,b)|0){ja=g;i=e;return ja|0}if((g|0)==0){ja=0;i=e;return ja|0}fd[c[(c[g>>2]|0)+4>>2]&511](g);ja=0;i=e;return ja|0}function IA(b,d){b=b|0;d=d|0;var e=0,f=0,g=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.0,K=0,L=0,M=0.0,N=0,O=0.0,P=0.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.0,ca=0.0;g=i;n=i;i=i+8|0;m=n;o=i;i=i+8|0;p=o;t=i;i=i+8|0;s=t;u=i;i=i+8|0;v=u;y=i;i=i+8|0;w=y;z=i;i=i+8|0;E=i;i=i+8|0;F=E;H=i;i=i+8|0;I=H;Q=i;i=i+8|0;W=i;i=i+8|0;X=W;Z=i;i=i+8|0;Y=Z;_=i;i=i+8|0;$=_;V=i;i=i+8|0;aa=V;A=i;i=i+128|0;e=A;r=i;i=i+16|0;k=r;G=i;i=i+16|0;l=G;U=i;i=i+16|0;K=U;S=i;i=i+16|0;L=S;R=i;i=i+16|0;N=R;D=i;i=i+16|0;B=D;c[r>>2]=13;q=k+8|0;c[q>>2]=0;c[q+4>>2]=0;c[G>>2]=13;C=l+8|0;c[C>>2]=0;c[C+4>>2]=0;do{if((c[(Yu(b,170936,k,0)|0)>>2]|0)==6){T=c[r>>2]|0;if((T|0)!=6){c[V>>2]=T;c[aa+4>>2]=6;Qe(0,172720,aa);tc()}aa=c[q>>2]|0;if((c[aa+12>>2]|0)!=4){break}c[U>>2]=13;V=K+8|0;c[V>>2]=0;c[V+4>>2]=0;c[S>>2]=13;T=L+8|0;c[T>>2]=0;c[T+4>>2]=0;c[R>>2]=13;Q=N+8|0;c[Q>>2]=0;c[Q+4>>2]=0;ut(aa,0,l)|0;aa=c[r>>2]|0;if((aa|0)!=6){c[_>>2]=aa;c[$+4>>2]=6;Qe(0,172720,$);tc()}ut(c[q>>2]|0,1,K)|0;_=c[r>>2]|0;if((_|0)!=6){c[Z>>2]=_;c[Y+4>>2]=6;Qe(0,172720,Y);tc()}ut(c[q>>2]|0,2,L)|0;Y=c[r>>2]|0;if((Y|0)!=6){c[W>>2]=Y;c[X+4>>2]=6;Qe(0,172720,X);tc()}ut(c[q>>2]|0,3,N)|0;W=c[G>>2]|0;do{if((W+ -1|0)>>>0<2){U=c[U>>2]|0;if((U+ -1|0)>>>0>=2){J=0.0;M=0.0;O=0.0;P=0.0;break}S=c[S>>2]|0;if((S+ -1|0)>>>0>=2){J=0.0;M=0.0;O=0.0;P=0.0;break}R=c[R>>2]|0;if((R+ -1|0)>>>0>=2){J=0.0;M=0.0;O=0.0;P=0.0;break}if((W|0)==1){J=+(c[C>>2]|0)}else{J=+h[C>>3]}if((U|0)==1){O=+(c[V>>2]|0)}else{O=+h[V>>3]}if((S|0)==1){M=+(c[T>>2]|0)}else{M=+h[T>>3]}if((R|0)==1){P=+(c[Q>>2]|0);break}else{P=+h[Q>>3];break}}else{J=0.0;M=0.0;O=0.0;P=0.0}}while(0);Of(l);Of(K);Of(L);Of(N);Of(k);do{if((c[(Yu(b,170840,k,0)|0)>>2]|0)==6){K=c[r>>2]|0;if((K|0)!=6){c[H>>2]=K;c[I+4>>2]=6;Qe(0,172720,I);tc()}I=c[q>>2]|0;if((c[I+12>>2]|0)!=2){ba=0.0;ca=1.0;break}c[D>>2]=13;H=B+8|0;c[H>>2]=0;c[H+4>>2]=0;ut(I,0,l)|0;I=c[r>>2]|0;if((I|0)!=6){c[E>>2]=I;c[F+4>>2]=6;Qe(0,172720,F);tc()}ut(c[q>>2]|0,1,B)|0;E=c[G>>2]|0;do{if((E+ -1|0)>>>0<2){D=c[D>>2]|0;if((D+ -1|0)>>>0>=2){ba=0.0;ca=1.0;break}if((E|0)==1){ba=+(c[C>>2]|0)}else{ba=+h[C>>3]}if((D|0)==1){ca=+(c[H>>2]|0);break}else{ca=+h[H>>3];break}}else{ba=0.0;ca=1.0}}while(0);Of(l);Of(B)}else{ba=0.0;ca=1.0}}while(0);Of(k);Yu(b,170848,k,0)|0;a:do{if((c[r>>2]|0)==6){A=c[(c[q>>2]|0)+12>>2]|0;if((A|0)>32){Qe(-1,170864,z);aa=0;i=g;return aa|0}if((A|0)>0){z=6;B=0}else{w=A;break}while(1){if((z|0)!=6){x=48;break}ut(c[q>>2]|0,B,l)|0;aa=EH(l)|0;c[e+(B<<2)>>2]=aa;if((aa|0)==0){break}Of(l);B=B+1|0;if((B|0)>=(A|0)){w=A;break a}z=c[r>>2]|0}if((x|0)==48){c[y>>2]=z;c[w+4>>2]=6;Qe(0,172720,w);tc()}Of(k);Of(l);aa=0;i=g;return aa|0}else{aa=EH(k)|0;c[A>>2]=aa;if((aa|0)!=0){w=1;break}Of(k);aa=0;i=g;return aa|0}}while(0);Of(k);do{if((c[(Yu(b,170992,k,0)|0)>>2]|0)==6){x=c[r>>2]|0;if((x|0)!=6){c[u>>2]=x;c[v+4>>2]=6;Qe(0,172720,v);tc()}u=c[q>>2]|0;if((c[u+12>>2]|0)!=2){j=0;f=0;break}u=ut(u,0,l)|0;v=c[u>>2]|0;if((v|0)!=0){c[t>>2]=v;c[s+4>>2]=0;Qe(0,172720,s);tc()}s=a[u+8|0]&1;Of(l);r=c[r>>2]|0;if((r|0)!=6){c[o>>2]=r;c[p+4>>2]=6;Qe(0,172720,p);tc()}o=ut(c[q>>2]|0,1,l)|0;p=c[o>>2]|0;if((p|0)==0){f=a[o+8|0]&1;Of(l);j=s;break}else{c[n>>2]=p;c[m+4>>2]=0;Qe(0,172720,m);tc()}}else{j=0;f=0}}while(0);Of(k);k=FW(368)|0;c[k+4>>2]=2;c[k+8>>2]=0;c[k>>2]=170920;h[k+184>>3]=J;h[k+192>>3]=O;h[k+200>>3]=M;h[k+208>>3]=P;h[k+216>>3]=ba;h[k+224>>3]=ca;l=k+360|0;c[l>>2]=w;if((w|0)>0){m=0;do{c[k+232+(m<<2)>>2]=c[e+(m<<2)>>2];m=m+1|0;}while((m|0)<(c[l>>2]|0))}a[k+364|0]=j;a[k+365|0]=f;if(MA(k,b,d)|0){aa=k;i=g;return aa|0}if((k|0)==0){aa=0;i=g;return aa|0}fd[c[(c[k>>2]|0)+4>>2]&511](k);aa=0;i=g;return aa|0}}while(0);Qe(-1,170944,Q);aa=0;i=g;return aa|0}function JA(b,d){b=b|0;d=d|0;var e=0,f=0,g=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.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0.0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0.0,oa=0.0;e=i;n=i;i=i+8|0;m=n;q=i;i=i+8|0;o=q;s=i;i=i+8|0;t=s;v=i;i=i+8|0;u=v;y=i;i=i+8|0;z=y;A=i;i=i+8|0;E=i;i=i+16|0;C=E;F=i;i=i+8|0;G=F;I=i;i=i+16|0;H=I;J=i;i=i+8|0;K=J;ja=i;i=i+8|0;M=i;i=i+16|0;N=M;O=i;i=i+8|0;P=O;R=i;i=i+16|0;Q=R;T=i;i=i+8|0;U=T;V=i;i=i+16|0;W=V;Y=i;i=i+8|0;X=Y;$=i;i=i+16|0;_=$;ba=i;i=i+8|0;aa=ba;ca=i;i=i+16|0;da=ca;fa=i;i=i+8|0;ga=fa;ha=i;i=i+16|0;ia=ha;ka=i;i=i+8|0;ma=ka;B=i;i=i+128|0;f=B;r=i;i=i+16|0;l=r;la=i;i=i+16|0;k=la;c[r>>2]=13;p=l+8|0;c[p>>2]=0;c[p+4>>2]=0;c[la>>2]=13;la=k+8|0;c[la>>2]=0;c[la+4>>2]=0;do{if((c[(Yu(b,170936,l,0)|0)>>2]|0)==6){la=c[r>>2]|0;if((la|0)!=6){c[ka>>2]=la;c[ma+4>>2]=6;Qe(0,172720,ma);tc()}ka=c[p>>2]|0;if((c[ka+12>>2]|0)!=6){break}ka=ut(ka,0,k)|0;ja=c[ka>>2]|0;if((ja+ -1|0)>>>0>=2){c[ha>>2]=ja;c[ia+4>>2]=1;c[ia+8>>2]=2;Qe(0,172792,ia);tc()}ha=ka+8|0;if((ja|0)==1){x=+(c[ha>>2]|0)}else{x=+h[ha>>3]}Of(k);ha=c[r>>2]|0;if((ha|0)!=6){c[fa>>2]=ha;c[ga+4>>2]=6;Qe(0,172720,ga);tc()}ga=ut(c[p>>2]|0,1,k)|0;fa=c[ga>>2]|0;if((fa+ -1|0)>>>0>=2){c[ca>>2]=fa;c[da+4>>2]=1;c[da+8>>2]=2;Qe(0,172792,da);tc()}ca=ga+8|0;if((fa|0)==1){D=+(c[ca>>2]|0)}else{D=+h[ca>>3]}Of(k);ca=c[r>>2]|0;if((ca|0)!=6){c[ba>>2]=ca;c[aa+4>>2]=6;Qe(0,172720,aa);tc()}ba=ut(c[p>>2]|0,2,k)|0;aa=c[ba>>2]|0;if((aa+ -1|0)>>>0>=2){c[$>>2]=aa;c[_+4>>2]=1;c[_+8>>2]=2;Qe(0,172792,_);tc()}_=ba+8|0;if((aa|0)==1){L=+(c[_>>2]|0)}else{L=+h[_>>3]}Of(k);_=c[r>>2]|0;if((_|0)!=6){c[Y>>2]=_;c[X+4>>2]=6;Qe(0,172720,X);tc()}Y=ut(c[p>>2]|0,3,k)|0;X=c[Y>>2]|0;if((X+ -1|0)>>>0>=2){c[V>>2]=X;c[W+4>>2]=1;c[W+8>>2]=2;Qe(0,172792,W);tc()}V=Y+8|0;if((X|0)==1){S=+(c[V>>2]|0)}else{S=+h[V>>3]}Of(k);V=c[r>>2]|0;if((V|0)!=6){c[T>>2]=V;c[U+4>>2]=6;Qe(0,172720,U);tc()}U=ut(c[p>>2]|0,4,k)|0;T=c[U>>2]|0;if((T+ -1|0)>>>0>=2){c[R>>2]=T;c[Q+4>>2]=1;c[Q+8>>2]=2;Qe(0,172792,Q);tc()}Q=U+8|0;if((T|0)==1){Z=+(c[Q>>2]|0)}else{Z=+h[Q>>3]}Of(k);Q=c[r>>2]|0;if((Q|0)!=6){c[O>>2]=Q;c[P+4>>2]=6;Qe(0,172720,P);tc()}P=ut(c[p>>2]|0,5,k)|0;O=c[P>>2]|0;if((O+ -1|0)>>>0>=2){c[M>>2]=O;c[N+4>>2]=1;c[N+8>>2]=2;Qe(0,172792,N);tc()}M=P+8|0;if((O|0)==1){ea=+(c[M>>2]|0)}else{ea=+h[M>>3]}Of(k);Of(l);do{if((c[(Yu(b,170840,l,0)|0)>>2]|0)==6){M=c[r>>2]|0;if((M|0)!=6){c[J>>2]=M;c[K+4>>2]=6;Qe(0,172720,K);tc()}J=c[p>>2]|0;if((c[J+12>>2]|0)!=2){na=0.0;oa=1.0;break}K=ut(J,0,k)|0;J=c[K>>2]|0;if((J+ -1|0)>>>0>=2){c[I>>2]=J;c[H+4>>2]=1;c[H+8>>2]=2;Qe(0,172792,H);tc()}H=K+8|0;if((J|0)==1){na=+(c[H>>2]|0)}else{na=+h[H>>3]}Of(k);H=c[r>>2]|0;if((H|0)!=6){c[F>>2]=H;c[G+4>>2]=6;Qe(0,172720,G);tc()}G=ut(c[p>>2]|0,1,k)|0;F=c[G>>2]|0;if((F+ -1|0)>>>0>=2){c[E>>2]=F;c[C+4>>2]=1;c[C+8>>2]=2;Qe(0,172792,C);tc()}C=G+8|0;if((F|0)==1){oa=+(c[C>>2]|0)}else{oa=+h[C>>3]}Of(k)}else{na=0.0;oa=1.0}}while(0);Of(l);Yu(b,170848,l,0)|0;a:do{if((c[r>>2]|0)==6){B=c[(c[p>>2]|0)+12>>2]|0;if((B|0)>32){Qe(-1,170864,A);ma=0;i=e;return ma|0}if((B|0)>0){A=6;C=0}else{w=B;break}while(1){if((A|0)!=6){w=68;break}ut(c[p>>2]|0,C,k)|0;ma=EH(k)|0;c[f+(C<<2)>>2]=ma;if((ma|0)==0){break}Of(k);C=C+1|0;if((C|0)>=(B|0)){w=B;break a}A=c[r>>2]|0}if((w|0)==68){c[y>>2]=A;c[z+4>>2]=6;Qe(0,172720,z);tc()}Of(l);Of(k);ma=0;i=e;return ma|0}else{ma=EH(l)|0;c[B>>2]=ma;if((ma|0)!=0){w=1;break}Of(l);ma=0;i=e;return ma|0}}while(0);Of(l);do{if((c[(Yu(b,170992,l,0)|0)>>2]|0)==6){y=c[r>>2]|0;if((y|0)!=6){c[v>>2]=y;c[u+4>>2]=6;Qe(0,172720,u);tc()}u=c[p>>2]|0;if((c[u+12>>2]|0)!=2){j=0;g=0;break}u=ut(u,0,k)|0;v=c[u>>2]|0;if((v|0)!=0){c[s>>2]=v;c[t+4>>2]=0;Qe(0,172720,t);tc()}s=a[u+8|0]&1;Of(k);r=c[r>>2]|0;if((r|0)!=6){c[q>>2]=r;c[o+4>>2]=6;Qe(0,172720,o);tc()}p=ut(c[p>>2]|0,1,k)|0;o=c[p>>2]|0;if((o|0)==0){g=a[p+8|0]&1;Of(k);j=s;break}else{c[n>>2]=o;c[m+4>>2]=0;Qe(0,172720,m);tc()}}else{j=0;g=0}}while(0);Of(l);k=FW(384)|0;c[k+4>>2]=3;c[k+8>>2]=0;c[k>>2]=171008;h[k+184>>3]=x;h[k+192>>3]=D;h[k+200>>3]=L;h[k+208>>3]=S;h[k+216>>3]=Z;h[k+224>>3]=ea;h[k+232>>3]=na;h[k+240>>3]=oa;l=k+376|0;c[l>>2]=w;if((w|0)>0){m=0;do{c[k+248+(m<<2)>>2]=c[f+(m<<2)>>2];m=m+1|0;}while((m|0)<(c[l>>2]|0))}a[k+380|0]=j;a[k+381|0]=g;if(MA(k,b,d)|0){ma=k;i=e;return ma|0}if((k|0)==0){ma=0;i=e;return ma|0}fd[c[(c[k>>2]|0)+4>>2]&511](k);ma=0;i=e;return ma|0}}while(0);Qe(-1,170944,ja);ma=0;i=e;return ma|0}function KA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,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.0,la=0.0,ma=0.0,na=0;f=i;B=i;i=i+8|0;C=B;F=i;i=i+8|0;H=i;i=i+8|0;N=i;i=i+16|0;K=N;L=i;i=i+8|0;I=L;O=i;i=i+16|0;M=O;y=i;i=i+8|0;G=y;w=i;i=i+16|0;v=w;x=i;i=i+8|0;P=x;Q=i;i=i+16|0;R=Q;S=i;i=i+8|0;T=S;U=i;i=i+16|0;V=U;W=i;i=i+8|0;X=W;Z=i;i=i+16|0;Y=Z;_=i;i=i+8|0;$=_;ga=i;i=i+8|0;ba=i;i=i+8|0;ca=ba;fa=i;i=i+8|0;ea=i;i=i+8|0;aa=ea;ha=i;i=i+8|0;p=i;i=i+8|0;q=p;ja=i;i=i+8|0;ia=i;i=i+8|0;o=ia;J=i;i=i+128|0;g=J;m=i;i=i+256|0;l=i;i=i+256|0;k=i;i=i+128|0;E=i;i=i+16|0;z=E;na=i;i=i+16|0;A=na;c[E>>2]=13;D=z+8|0;c[D>>2]=0;c[D+4>>2]=0;c[na>>2]=13;na=A+8|0;c[na>>2]=0;c[na+4>>2]=0;a:do{if((c[(Yu(b,171048,z,0)|0)>>2]|0)==1){ja=c[E>>2]|0;if((ja|0)!=1){c[ia>>2]=ja;c[o+4>>2]=1;Qe(0,172720,o);tc()}o=c[D>>2]|0;Of(z);if((c[(Yu(b,171136,z,0)|0)>>2]|0)!=1){Qe(-1,171160,ha);break}ha=c[E>>2]|0;if((ha|0)!=1){c[p>>2]=ha;c[q+4>>2]=1;Qe(0,172720,q);tc()}p=c[D>>2]|0;Of(z);q=(a|0)==4;do{if(q){if((c[(Yu(b,171224,z,0)|0)>>2]|0)!=1){Qe(-1,171240,fa);break a}ba=c[E>>2]|0;if((ba|0)==1){n=c[D>>2]|0;Of(z);j=0;break}else{c[ea>>2]=ba;c[aa+4>>2]=1;Qe(0,172720,aa);tc()}}else{if((c[(Yu(b,171296,z,0)|0)>>2]|0)!=1){Qe(-1,171312,ga);break a}aa=c[E>>2]|0;if((aa|0)==1){j=c[D>>2]|0;Of(z);n=0;break}else{c[ba>>2]=aa;c[ca+4>>2]=1;Qe(0,172720,ca);tc()}}}while(0);do{if((c[(Yu(b,171368,z,0)|0)>>2]|0)==6){aa=c[E>>2]|0;if((aa|0)!=6){c[_>>2]=aa;c[$+4>>2]=6;Qe(0,172720,$);tc()}_=c[D>>2]|0;if((c[_+12>>2]|0)<=5){break}$=ut(_,0,A)|0;_=c[$>>2]|0;if((_+ -1|0)>>>0>=2){c[Z>>2]=_;c[Y+4>>2]=1;c[Y+8>>2]=2;Qe(0,172792,Y);tc()}Y=$+8|0;if((_|0)==1){r=+(c[Y>>2]|0)}else{r=+h[Y>>3]}Of(A);Y=c[E>>2]|0;if((Y|0)!=6){c[W>>2]=Y;c[X+4>>2]=6;Qe(0,172720,X);tc()}X=ut(c[D>>2]|0,1,A)|0;W=c[X>>2]|0;if((W+ -1|0)>>>0>=2){c[U>>2]=W;c[V+4>>2]=1;c[V+8>>2]=2;Qe(0,172792,V);tc()}U=X+8|0;if((W|0)==1){s=+(c[U>>2]|0)}else{s=+h[U>>3]}Of(A);u=+lW(1.0,o)+-1.0;s=(s-r)/u;U=c[E>>2]|0;if((U|0)!=6){c[S>>2]=U;c[T+4>>2]=6;Qe(0,172720,T);tc()}T=ut(c[D>>2]|0,2,A)|0;S=c[T>>2]|0;if((S+ -1|0)>>>0>=2){c[Q>>2]=S;c[R+4>>2]=1;c[R+8>>2]=2;Qe(0,172792,R);tc()}Q=T+8|0;if((S|0)==1){t=+(c[Q>>2]|0)}else{t=+h[Q>>3]}Of(A);Q=c[E>>2]|0;if((Q|0)!=6){c[x>>2]=Q;c[P+4>>2]=6;Qe(0,172720,P);tc()}P=ut(c[D>>2]|0,3,A)|0;x=c[P>>2]|0;if((x+ -1|0)>>>0>=2){c[w>>2]=x;c[v+4>>2]=1;c[v+8>>2]=2;Qe(0,172792,v);tc()}v=P+8|0;if((x|0)==1){ka=+(c[v>>2]|0)}else{ka=+h[v>>3]}Of(A);u=(ka-t)/u;v=c[E>>2]|0;if((v|0)!=6){ja=v;na=y;c[na>>2]=ja;na=G+4|0;c[na>>2]=6;na=172720;Qe(0,na,G);tc()}v=(1<>2]|0;if(!((x|0)<(c[Q+12>>2]|0)&(w|0)<32)){x=67;break}Q=ut(Q,P+4|0,A)|0;P=c[Q>>2]|0;if((P+ -1|0)>>>0>=2){x=55;break}Q=Q+8|0;if((P|0)==1){la=+(c[Q>>2]|0)}else{la=+h[Q>>3]}h[m+(w<<3)>>3]=la;Of(A);P=c[E>>2]|0;if((P|0)!=6){x=60;break}x=ut(c[D>>2]|0,x,A)|0;P=c[x>>2]|0;if((P+ -1|0)>>>0>=2){x=62;break}x=x+8|0;if((P|0)==1){ma=+(c[x>>2]|0)}else{ma=+h[x>>3]}Of(A);h[l+(w<<3)>>3]=(ma-la)/ka;w=w+1|0;P=w<<1;x=c[E>>2]|0;if((x|0)==6){x=P+5|0}else{g=x;x=52;break}}if((x|0)==52){na=y;c[na>>2]=g;na=G+4|0;c[na>>2]=6;na=172720;Qe(0,na,G);tc()}else if((x|0)==55){c[O>>2]=P;c[M+4>>2]=1;c[M+8>>2]=2;Qe(0,172792,M);tc()}else if((x|0)==60){c[L>>2]=P;c[I+4>>2]=6;Qe(0,172720,I);tc()}else if((x|0)==62){c[N>>2]=P;c[K+4>>2]=1;c[K+8>>2]=2;Qe(0,172792,K);tc()}else if((x|0)==67){Of(z);b:do{if((c[(Yu(b,170848,z,0)|0)>>2]|0)==5){y=0}else{if((c[E>>2]|0)!=6){na=EH(z)|0;c[J>>2]=na;if((na|0)!=0){y=1;break}Of(z);na=0;i=f;return na|0}y=c[(c[D>>2]|0)+12>>2]|0;if((y|0)>32){Qe(-1,170864,F);na=0;i=f;return na|0}if((y|0)>0){F=6;G=0}else{break}while(1){if((F|0)!=6){x=74;break}ut(c[D>>2]|0,G,A)|0;na=EH(A)|0;c[g+(G<<2)>>2]=na;if((na|0)==0){break}Of(A);G=G+1|0;if((G|0)>=(y|0)){break b}F=c[E>>2]|0}if((x|0)==74){c[B>>2]=F;c[C+4>>2]=6;Qe(0,172720,C);tc()}Of(z);Of(A);na=0;i=f;return na|0}}while(0);Of(z);A=FW(12)|0;c[A>>2]=d;fd[c[(c[d>>2]|0)+12>>2]&511](d);G=A+4|0;c[G>>2]=0;B=A+8|0;c[B>>2]=0;D=(1<0;F=(1<>2]|0;if((K|0)>=(n|0)){N=K-n|0;K=c[G>>2]>>N&D;c[B>>2]=N;break}if((K|0)>0){na=c[G>>2]&(1<>2]=0;M=n-K|0;K=na}else{M=n;K=0}if((M|0)<=0){x=95;break}while(1){O=c[A>>2]|0;O=jd[c[(c[O>>2]|0)+20>>2]&511](O)|0;c[G>>2]=O;if((O|0)==-1){x=94;break c}if((M|0)<=7){break}K=O|K<<8;M=M+ -8|0;if((M|0)<=0){x=95;break d}}na=8-M|0;c[B>>2]=na;N=na;K=O>>na|K<>2]|0}do{if((N|0)<(o|0)){if((N|0)>0){M=c[G>>2]&(1<>2]=0;O=o-N|0;N=0}else{O=o;M=0}if((O|0)<=0){break}while(1){P=c[A>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;c[G>>2]=P;if((P|0)==-1){x=105;break c}if((O|0)<=7){x=103;break}M=P|M<<8;O=O+ -8|0;if((O|0)<=0){x=106;break}}if((x|0)==103){x=0;na=8-O|0;c[B>>2]=na;N=na;M=P>>na|M<>2]|0;break}}else{N=N-o|0;M=c[G>>2]>>N&F;c[B>>2]=N}}while(0);e:do{if((N|0)<(o|0)){if((N|0)>0){na=c[G>>2]&(1<>2]=0;O=o-N|0;N=na}else{O=o;N=0}if((O|0)<=0){break}while(1){P=c[A>>2]|0;P=jd[c[(c[P>>2]|0)+20>>2]&511](P)|0;c[G>>2]=P;if((P|0)==-1){x=117;break c}if((O|0)<=7){break}N=P|N<<8;O=O+ -8|0;if((O|0)<=0){break e}}na=8-O|0;c[B>>2]=na;N=P>>na|N<>2]>>na&F;c[B>>2]=na}}while(0);if(C){O=0;do{P=k+(O<<2)|0;Q=c[B>>2]|0;f:do{if((Q|0)<(p|0)){if((Q|0)>0){R=c[G>>2]&(1<>2]=0;Q=p-Q|0}else{Q=p;R=0}if((Q|0)>0){S=R}else{break}while(1){R=c[A>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;c[G>>2]=R;if((R|0)==-1){x=144;break c}if((Q|0)<=7){break}R=R|S<<8;Q=Q+ -8|0;if((Q|0)>0){S=R}else{break f}}na=8-Q|0;c[B>>2]=na;R=R>>na|S<>2]>>na&v;c[B>>2]=na}}while(0);c[P>>2]=R;O=O+1|0;}while((O|0)<(w|0))}if((d|0)==(L|0)){L=(d|0)==0?16:d<<1;z=Ce(z,L,144)|0;bX(z+(d*144|0)|0,0,(L-d|0)*144|0)|0}h[z+(d*144|0)>>3]=r+s*+(M>>>0);h[z+(d*144|0)+8>>3]=t+u*+(N>>>0);if(C){M=0;do{c[z+(d*144|0)+16+(M<<2)>>2]=~~((+h[m+(M<<3)>>3]+ +h[l+(M<<3)>>3]*+((c[k+(M<<2)>>2]|0)>>>0))*65536.0);M=M+1|0;}while((M|0)<(w|0))}M=d+1|0;c[G>>2]=0;c[B>>2]=0;if(q){break}else{d=M}}if(I>>>0<2){d=M;I=I+1|0;continue}else{N=(I|0)==2;if((K|0)==0&(N^1)){d=M;I=1;K=0;continue}else{break}}}if((E|0)==(J|0)){na=(E|0)==0?16:E<<1;J=na;H=Ce(H,na*3|0,4)|0}do{if(N){c[H+(E*12|0)>>2]=d+ -2;c[H+(E*12|0)+4>>2]=d+ -1;c[H+(E*12|0)+8>>2]=d;I=3}else{N=E+ -1|0;if((K|0)==1){c[H+(E*12|0)>>2]=c[H+(N*12|0)+4>>2];c[H+(E*12|0)+4>>2]=c[H+(N*12|0)+8>>2];c[H+(E*12|0)+8>>2]=d;break}else{c[H+(E*12|0)>>2]=c[H+(N*12|0)>>2];c[H+(E*12|0)+4>>2]=c[H+(N*12|0)+8>>2];c[H+(E*12|0)+8>>2]=d;break}}}while(0);E=E+1|0;d=M}if((x|0)==94){c[B>>2]=0;x=145}else if((x|0)==105){c[B>>2]=0;x=145}else if((x|0)==117){c[B>>2]=0;x=145}else if((x|0)==144){c[B>>2]=0;if((A|0)!=0){x=145}}if((x|0)==145){na=c[A>>2]|0;fd[c[(c[na>>2]|0)+16>>2]&511](na);HW(A)}do{if((a|0)==5){l=((d|0)/(j|0)|0)+ -1|0;k=j+ -1|0;E=da(l<<1,k)|0;H=ye(E*3|0,4)|0;if((l|0)<=0){break}n=(k|0)>0;m=(j<<1)+ -2|0;w=0;o=0;do{if(n){p=da(w,j)|0;w=w+1|0;v=da(w,j)|0;x=0;q=o;while(1){ia=x+p|0;c[H+(q*12|0)>>2]=ia;ia=ia+1|0;c[H+(q*12|0)+4>>2]=ia;ja=x+v|0;c[H+(q*12|0)+8>>2]=ja;na=q+1|0;c[H+(na*12|0)>>2]=ia;c[H+(na*12|0)+4>>2]=ja;c[H+(na*12|0)+8>>2]=ja+1;x=x+1|0;if((x|0)<(k|0)){q=q+2|0}else{break}}o=m+o|0}else{w=w+1|0}}while((w|0)<(l|0))}}while(0);j=FW(328)|0;c[j+4>>2]=a;c[j+8>>2]=0;c[j>>2]=171032;c[j+180>>2]=z;c[j+184>>2]=d;c[j+188>>2]=H;c[j+192>>2]=E;a=j+324|0;c[a>>2]=y;if((y|0)>0){k=0;do{c[j+196+(k<<2)>>2]=c[g+(k<<2)>>2];k=k+1|0;}while((k|0)<(c[a>>2]|0))}if(MA(j,b,e)|0){na=j;i=f;return na|0}if((j|0)==0){na=0;i=f;return na|0}fd[c[(c[j>>2]|0)+4>>2]&511](j);na=0;i=f;return na|0}}}while(0);Qe(-1,171376,H)}else{Qe(-1,171072,ja)}}while(0);Of(z);na=0;i=f;return na|0}function LA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.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,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0;f=i;C=i;i=i+8|0;D=C;H=i;i=i+8|0;I=i;i=i+8|0;O=i;i=i+16|0;L=O;M=i;i=i+8|0;N=M;K=i;i=i+16|0;P=K;z=i;i=i+8|0;G=z;x=i;i=i+16|0;y=x;Q=i;i=i+8|0;R=Q;S=i;i=i+16|0;T=S;U=i;i=i+8|0;V=U;X=i;i=i+16|0;W=X;Z=i;i=i+8|0;Y=Z;$=i;i=i+16|0;_=$;aa=i;i=i+8|0;ba=aa;da=i;i=i+8|0;ca=i;i=i+8|0;s=ca;fa=i;i=i+8|0;ea=i;i=i+8|0;r=ea;ha=i;i=i+8|0;ga=i;i=i+8|0;q=ga;J=i;i=i+128|0;g=J;m=i;i=i+256|0;j=i;i=i+256|0;p=i;i=i+128|0;o=p;l=i;i=i+128|0;n=l;k=i;i=i+1024|0;F=i;i=i+16|0;A=F;wa=i;i=i+16|0;B=wa;c[F>>2]=13;E=A+8|0;c[E>>2]=0;c[E+4>>2]=0;c[wa>>2]=13;wa=B+8|0;c[wa>>2]=0;c[wa+4>>2]=0;do{if((c[(Yu(b,171048,A,0)|0)>>2]|0)==1){ha=c[F>>2]|0;if((ha|0)!=1){c[ga>>2]=ha;c[q+4>>2]=1;Qe(0,172720,q);tc()}q=c[E>>2]|0;Of(A);if((c[(Yu(b,171136,A,0)|0)>>2]|0)!=1){Qe(-1,171160,fa);break}fa=c[F>>2]|0;if((fa|0)!=1){c[ea>>2]=fa;c[r+4>>2]=1;Qe(0,172720,r);tc()}r=c[E>>2]|0;Of(A);if((c[(Yu(b,171224,A,0)|0)>>2]|0)!=1){Qe(-1,171240,da);break}da=c[F>>2]|0;if((da|0)!=1){c[ca>>2]=da;c[s+4>>2]=1;Qe(0,172720,s);tc()}s=c[E>>2]|0;Of(A);do{if((c[(Yu(b,171368,A,0)|0)>>2]|0)==6){ca=c[F>>2]|0;if((ca|0)!=6){c[aa>>2]=ca;c[ba+4>>2]=6;Qe(0,172720,ba);tc()}aa=c[E>>2]|0;if((c[aa+12>>2]|0)<=5){break}ba=ut(aa,0,B)|0;aa=c[ba>>2]|0;if((aa+ -1|0)>>>0>=2){c[$>>2]=aa;c[_+4>>2]=1;c[_+8>>2]=2;Qe(0,172792,_);tc()}_=ba+8|0;if((aa|0)==1){t=+(c[_>>2]|0)}else{t=+h[_>>3]}Of(B);_=c[F>>2]|0;if((_|0)!=6){c[Z>>2]=_;c[Y+4>>2]=6;Qe(0,172720,Y);tc()}Z=ut(c[E>>2]|0,1,B)|0;Y=c[Z>>2]|0;if((Y+ -1|0)>>>0>=2){c[X>>2]=Y;c[W+4>>2]=1;c[W+8>>2]=2;Qe(0,172792,W);tc()}W=Z+8|0;if((Y|0)==1){u=+(c[W>>2]|0)}else{u=+h[W>>3]}Of(B);w=+lW(1.0,q)+-1.0;u=(u-t)/w;W=c[F>>2]|0;if((W|0)!=6){c[U>>2]=W;c[V+4>>2]=6;Qe(0,172720,V);tc()}V=ut(c[E>>2]|0,2,B)|0;U=c[V>>2]|0;if((U+ -1|0)>>>0>=2){c[S>>2]=U;c[T+4>>2]=1;c[T+8>>2]=2;Qe(0,172792,T);tc()}S=V+8|0;if((U|0)==1){v=+(c[S>>2]|0)}else{v=+h[S>>3]}Of(B);S=c[F>>2]|0;if((S|0)!=6){c[Q>>2]=S;c[R+4>>2]=6;Qe(0,172720,R);tc()}R=ut(c[E>>2]|0,3,B)|0;Q=c[R>>2]|0;if((Q+ -1|0)>>>0>=2){c[x>>2]=Q;c[y+4>>2]=1;c[y+8>>2]=2;Qe(0,172792,y);tc()}x=R+8|0;if((Q|0)==1){xa=+(c[x>>2]|0)}else{xa=+h[x>>3]}Of(B);w=(xa-v)/w;x=c[F>>2]|0;if((x|0)!=6){va=x;wa=z;c[wa>>2]=va;wa=G+4|0;c[wa>>2]=6;wa=172720;Qe(0,wa,G);tc()}x=(1<>2]|0;if(!((Q|0)<(c[S+12>>2]|0)&(y|0)<32)){pa=60;break}S=ut(S,R+4|0,B)|0;R=c[S>>2]|0;if((R+ -1|0)>>>0>=2){pa=48;break}S=S+8|0;if((R|0)==1){ya=+(c[S>>2]|0)}else{ya=+h[S>>3]}h[m+(y<<3)>>3]=ya;Of(B);R=c[F>>2]|0;if((R|0)!=6){pa=53;break}R=ut(c[E>>2]|0,Q,B)|0;Q=c[R>>2]|0;if((Q+ -1|0)>>>0>=2){pa=55;break}R=R+8|0;if((Q|0)==1){za=+(c[R>>2]|0)}else{za=+h[R>>3]}Of(B);h[j+(y<<3)>>3]=(za-ya)/xa;y=y+1|0;R=y<<1;Q=c[F>>2]|0;if((Q|0)==6){Q=R+5|0}else{pa=45;break}}if((pa|0)==45){wa=z;c[wa>>2]=Q;wa=G+4|0;c[wa>>2]=6;wa=172720;Qe(0,wa,G);tc()}else if((pa|0)==48){c[K>>2]=R;c[P+4>>2]=1;c[P+8>>2]=2;Qe(0,172792,P);tc()}else if((pa|0)==53){c[M>>2]=R;c[N+4>>2]=6;Qe(0,172720,N);tc()}else if((pa|0)==55){c[O>>2]=Q;c[L+4>>2]=1;c[L+8>>2]=2;Qe(0,172792,L);tc()}else if((pa|0)==60){Of(A);a:do{if((c[(Yu(b,170848,A,0)|0)>>2]|0)==5){z=0}else{if((c[F>>2]|0)!=6){wa=EH(A)|0;c[J>>2]=wa;if((wa|0)!=0){z=1;break}Of(A);wa=0;i=f;return wa|0}z=c[(c[E>>2]|0)+12>>2]|0;if((z|0)>32){Qe(-1,170864,H);wa=0;i=f;return wa|0}if((z|0)>0){G=6;H=0}else{break}while(1){if((G|0)!=6){pa=67;break}ut(c[E>>2]|0,H,B)|0;wa=EH(B)|0;c[g+(H<<2)>>2]=wa;if((wa|0)==0){break}Of(B);H=H+1|0;if((H|0)>=(z|0)){break a}G=c[F>>2]|0}if((pa|0)==67){c[C>>2]=G;c[D+4>>2]=6;Qe(0,172720,D);tc()}Of(A);Of(B);wa=0;i=f;return wa|0}}while(0);Of(A);A=FW(12)|0;c[A>>2]=d;fd[c[(c[d>>2]|0)+12>>2]&511](d);Z=A+4|0;c[Z>>2]=0;$=A+8|0;ha=(s|0)>0;_=(a|0)==6;Y=(1<0;W=(z|0)==0;U=o+8|0;T=n+8|0;S=o+16|0;R=n+16|0;Q=o+24|0;P=n+24|0;O=o+32|0;N=n+32|0;M=o+40|0;L=n+40|0;K=o+48|0;J=n+48|0;I=o+56|0;H=n+56|0;G=o+64|0;F=n+64|0;E=o+72|0;D=n+72|0;C=o+80|0;B=n+80|0;ka=o+88|0;ja=n+88|0;ga=o+96|0;fa=n+96|0;ea=o+104|0;da=n+104|0;ca=o+112|0;ba=n+112|0;V=o+120|0;aa=n+120|0;ia=0-s|0;d=0;la=0;ma=0;b:while(1){c[$>>2]=0;c:do{if(ha){qa=s;na=0;while(1){oa=c[A>>2]|0;oa=jd[c[(c[oa>>2]|0)+20>>2]&511](oa)|0;c[Z>>2]=oa;if((oa|0)==-1){pa=81;break b}if((qa|0)<=7){break}na=oa|na<<8;qa=qa+ -8|0;if((qa|0)<=0){pa=oa;break c}}wa=8-qa|0;c[$>>2]=wa;pa=oa;na=oa>>wa|na<>2]=ia;pa=0;na=0}}while(0);oa=(na|0)==0;if(_){qa=oa?12:8}else{qa=oa?16:12}oa=oa?4:2;ra=0;while(1){sa=c[$>>2]|0;do{if((sa|0)<(q|0)){if((sa|0)>0){c[$>>2]=0;wa=q-sa|0;ua=0;ta=pa&(1<>2]|0;va=jd[c[(c[va>>2]|0)+20>>2]&511](va)|0;c[Z>>2]=va;if((va|0)==-1){pa=144;break b}if((wa|0)<=7){pa=93;break}ta=va|ta<<8;wa=wa+ -8|0;if((wa|0)<=0){pa=95;break}}if((pa|0)==93){pa=8-wa|0;c[$>>2]=pa;sa=va;ua=pa;ta=va>>pa|ta<>2]|0;break}}else{ta=sa-q|0;c[$>>2]=ta;sa=pa;ua=ta;ta=pa>>ta&Y}}while(0);d:do{if((ua|0)<(q|0)){if((ua|0)>0){c[$>>2]=0;pa=q-ua|0;ua=sa&(1<0){sa=pa;va=ua}else{pa=sa;break}while(1){ua=c[A>>2]|0;ua=jd[c[(c[ua>>2]|0)+20>>2]&511](ua)|0;c[Z>>2]=ua;if((ua|0)==-1){pa=102;break b}if((sa|0)<=7){break}va=ua|va<<8;sa=sa+ -8|0;if((sa|0)<=0){pa=ua;ua=va;break d}}wa=8-sa|0;c[$>>2]=wa;pa=ua;ua=ua>>wa|va<>2]=ua;pa=sa;ua=sa>>ua&Y}}while(0);h[o+(ra<<3)>>3]=t+u*+(ta>>>0);h[n+(ra<<3)>>3]=v+w*+(ua>>>0);ra=ra+1|0;if((ra|0)>=(qa|0)){ra=pa;sa=pa;pa=0;break}}do{if(X){ta=ra;qa=0;while(1){ua=c[$>>2]|0;e:do{if((ua|0)<(r|0)){if((ua|0)>0){c[$>>2]=0;ra=r-ua|0;ua=sa&(1<0){ta=ra}else{ra=ta;break}while(1){va=c[A>>2]|0;va=jd[c[(c[va>>2]|0)+20>>2]&511](va)|0;c[Z>>2]=va;if((va|0)==-1){pa=121;break b}if((ta|0)<=7){break}ua=va|ua<<8;ta=ta+ -8|0;if((ta|0)<=0){ra=va;sa=va;break e}}wa=8-ta|0;c[$>>2]=wa;ra=va;sa=va;ua=va>>wa|ua<>2]=ua;ra=ta;sa=ta;ua=ta>>ua&x}}while(0);xa=+h[m+(qa<<3)>>3]+ +(ua>>>0)*+h[j+(qa<<3)>>3];if(W){xa=+(~~(xa*65536.0)|0)}h[k+(pa<<8)+(qa<<3)>>3]=xa;qa=qa+1|0;if((qa|0)<(y|0)){ta=ra}else{break}}}pa=pa+1|0;}while((pa|0)<(oa|0));if((d|0)==(ma|0)){ma=(d|0)==0?16:d<<1;la=Ce(la,ma,1280)|0;bX(la+(d*1280|0)|0,0,(ma-d|0)*1280|0)|0}oa=la+(d*1280|0)|0;do{if(_){if((na|0)==0){h[oa>>3]=+h[p>>3];h[la+(d*1280|0)+128>>3]=+h[l>>3];h[la+(d*1280|0)+8>>3]=+h[U>>3];h[la+(d*1280|0)+136>>3]=+h[T>>3];h[la+(d*1280|0)+16>>3]=+h[S>>3];h[la+(d*1280|0)+144>>3]=+h[R>>3];h[la+(d*1280|0)+24>>3]=+h[Q>>3];h[la+(d*1280|0)+152>>3]=+h[P>>3];h[la+(d*1280|0)+56>>3]=+h[O>>3];h[la+(d*1280|0)+184>>3]=+h[N>>3];h[la+(d*1280|0)+88>>3]=+h[M>>3];h[la+(d*1280|0)+216>>3]=+h[L>>3];h[la+(d*1280|0)+120>>3]=+h[K>>3];h[la+(d*1280|0)+248>>3]=+h[J>>3];h[la+(d*1280|0)+112>>3]=+h[I>>3];h[la+(d*1280|0)+240>>3]=+h[H>>3];h[la+(d*1280|0)+104>>3]=+h[G>>3];h[la+(d*1280|0)+232>>3]=+h[F>>3];h[la+(d*1280|0)+96>>3]=+h[E>>3];h[la+(d*1280|0)+224>>3]=+h[D>>3];h[la+(d*1280|0)+64>>3]=+h[C>>3];h[la+(d*1280|0)+192>>3]=+h[B>>3];h[la+(d*1280|0)+32>>3]=+h[ka>>3];h[la+(d*1280|0)+160>>3]=+h[ja>>3];if(X){na=0}else{break}do{h[la+(d*1280|0)+256+(na<<3)>>3]=+h[k+(na<<3)>>3];h[la+(d*1280|0)+512+(na<<3)>>3]=+h[k+256+(na<<3)>>3];h[la+(d*1280|0)+1024+(na<<3)>>3]=+h[k+512+(na<<3)>>3];h[la+(d*1280|0)+768+(na<<3)>>3]=+h[k+768+(na<<3)>>3];na=na+1|0;}while((na|0)<(y|0))}else if((na|0)==1){na=d+ -1|0;h[oa>>3]=+h[la+(na*1280|0)+24>>3];h[la+(d*1280|0)+128>>3]=+h[la+(na*1280|0)+152>>3];h[la+(d*1280|0)+8>>3]=+h[la+(na*1280|0)+56>>3];h[la+(d*1280|0)+136>>3]=+h[la+(na*1280|0)+184>>3];h[la+(d*1280|0)+16>>3]=+h[la+(na*1280|0)+88>>3];h[la+(d*1280|0)+144>>3]=+h[la+(na*1280|0)+216>>3];h[la+(d*1280|0)+24>>3]=+h[la+(na*1280|0)+120>>3];h[la+(d*1280|0)+152>>3]=+h[la+(na*1280|0)+248>>3];h[la+(d*1280|0)+56>>3]=+h[p>>3];h[la+(d*1280|0)+184>>3]=+h[l>>3];h[la+(d*1280|0)+88>>3]=+h[U>>3];h[la+(d*1280|0)+216>>3]=+h[T>>3];h[la+(d*1280|0)+120>>3]=+h[S>>3];h[la+(d*1280|0)+248>>3]=+h[R>>3];h[la+(d*1280|0)+112>>3]=+h[Q>>3];h[la+(d*1280|0)+240>>3]=+h[P>>3];h[la+(d*1280|0)+104>>3]=+h[O>>3];h[la+(d*1280|0)+232>>3]=+h[N>>3];h[la+(d*1280|0)+96>>3]=+h[M>>3];h[la+(d*1280|0)+224>>3]=+h[L>>3];h[la+(d*1280|0)+64>>3]=+h[K>>3];h[la+(d*1280|0)+192>>3]=+h[J>>3];h[la+(d*1280|0)+32>>3]=+h[I>>3];h[la+(d*1280|0)+160>>3]=+h[H>>3];if(X){oa=0}else{break}do{h[la+(d*1280|0)+256+(oa<<3)>>3]=+h[la+(na*1280|0)+512+(oa<<3)>>3];h[la+(d*1280|0)+512+(oa<<3)>>3]=+h[la+(na*1280|0)+1024+(oa<<3)>>3];h[la+(d*1280|0)+1024+(oa<<3)>>3]=+h[k+(oa<<3)>>3];h[la+(d*1280|0)+768+(oa<<3)>>3]=+h[k+256+(oa<<3)>>3];oa=oa+1|0;}while((oa|0)<(y|0))}else if((na|0)==2){na=d+ -1|0;h[oa>>3]=+h[la+(na*1280|0)+120>>3];h[la+(d*1280|0)+128>>3]=+h[la+(na*1280|0)+248>>3];h[la+(d*1280|0)+8>>3]=+h[la+(na*1280|0)+112>>3];h[la+(d*1280|0)+136>>3]=+h[la+(na*1280|0)+240>>3];h[la+(d*1280|0)+16>>3]=+h[la+(na*1280|0)+104>>3];h[la+(d*1280|0)+144>>3]=+h[la+(na*1280|0)+232>>3];h[la+(d*1280|0)+24>>3]=+h[la+(na*1280|0)+96>>3];h[la+(d*1280|0)+152>>3]=+h[la+(na*1280|0)+224>>3];h[la+(d*1280|0)+56>>3]=+h[p>>3];h[la+(d*1280|0)+184>>3]=+h[l>>3];h[la+(d*1280|0)+88>>3]=+h[U>>3];h[la+(d*1280|0)+216>>3]=+h[T>>3];h[la+(d*1280|0)+120>>3]=+h[S>>3];h[la+(d*1280|0)+248>>3]=+h[R>>3];h[la+(d*1280|0)+112>>3]=+h[Q>>3];h[la+(d*1280|0)+240>>3]=+h[P>>3];h[la+(d*1280|0)+104>>3]=+h[O>>3];h[la+(d*1280|0)+232>>3]=+h[N>>3];h[la+(d*1280|0)+96>>3]=+h[M>>3];h[la+(d*1280|0)+224>>3]=+h[L>>3];h[la+(d*1280|0)+64>>3]=+h[K>>3];h[la+(d*1280|0)+192>>3]=+h[J>>3];h[la+(d*1280|0)+32>>3]=+h[I>>3];h[la+(d*1280|0)+160>>3]=+h[H>>3];if(X){oa=0}else{break}do{h[la+(d*1280|0)+256+(oa<<3)>>3]=+h[la+(na*1280|0)+1024+(oa<<3)>>3];h[la+(d*1280|0)+512+(oa<<3)>>3]=+h[la+(na*1280|0)+768+(oa<<3)>>3];h[la+(d*1280|0)+1024+(oa<<3)>>3]=+h[k+(oa<<3)>>3];h[la+(d*1280|0)+768+(oa<<3)>>3]=+h[k+256+(oa<<3)>>3];oa=oa+1|0;}while((oa|0)<(y|0))}else if((na|0)==3){na=d+ -1|0;h[oa>>3]=+h[la+(na*1280|0)+96>>3];h[la+(d*1280|0)+128>>3]=+h[la+(na*1280|0)+224>>3];h[la+(d*1280|0)+8>>3]=+h[la+(na*1280|0)+64>>3];h[la+(d*1280|0)+136>>3]=+h[la+(na*1280|0)+192>>3];h[la+(d*1280|0)+16>>3]=+h[la+(na*1280|0)+32>>3];h[la+(d*1280|0)+144>>3]=+h[la+(na*1280|0)+160>>3];h[la+(d*1280|0)+24>>3]=+h[la+(na*1280|0)>>3];h[la+(d*1280|0)+152>>3]=+h[la+(na*1280|0)+128>>3];h[la+(d*1280|0)+56>>3]=+h[p>>3];h[la+(d*1280|0)+184>>3]=+h[l>>3];h[la+(d*1280|0)+88>>3]=+h[U>>3];h[la+(d*1280|0)+216>>3]=+h[T>>3];h[la+(d*1280|0)+120>>3]=+h[S>>3];h[la+(d*1280|0)+248>>3]=+h[R>>3];h[la+(d*1280|0)+112>>3]=+h[Q>>3];h[la+(d*1280|0)+240>>3]=+h[P>>3];h[la+(d*1280|0)+104>>3]=+h[O>>3];h[la+(d*1280|0)+232>>3]=+h[N>>3];h[la+(d*1280|0)+96>>3]=+h[M>>3];h[la+(d*1280|0)+224>>3]=+h[L>>3];h[la+(d*1280|0)+64>>3]=+h[K>>3];h[la+(d*1280|0)+192>>3]=+h[J>>3];h[la+(d*1280|0)+32>>3]=+h[I>>3];h[la+(d*1280|0)+160>>3]=+h[H>>3];if(X){oa=0}else{break}do{h[la+(d*1280|0)+512+(oa<<3)>>3]=+h[la+(na*1280|0)+256+(oa<<3)>>3];h[la+(d*1280|0)+1024+(oa<<3)>>3]=+h[k+(oa<<3)>>3];h[la+(d*1280|0)+768+(oa<<3)>>3]=+h[k+256+(oa<<3)>>3];oa=oa+1|0;}while((oa|0)<(y|0))}else{break}}else{if((na|0)==0){h[oa>>3]=+h[p>>3];h[la+(d*1280|0)+128>>3]=+h[l>>3];h[la+(d*1280|0)+8>>3]=+h[U>>3];h[la+(d*1280|0)+136>>3]=+h[T>>3];h[la+(d*1280|0)+16>>3]=+h[S>>3];h[la+(d*1280|0)+144>>3]=+h[R>>3];h[la+(d*1280|0)+24>>3]=+h[Q>>3];h[la+(d*1280|0)+152>>3]=+h[P>>3];h[la+(d*1280|0)+56>>3]=+h[O>>3];h[la+(d*1280|0)+184>>3]=+h[N>>3];h[la+(d*1280|0)+88>>3]=+h[M>>3];h[la+(d*1280|0)+216>>3]=+h[L>>3];h[la+(d*1280|0)+120>>3]=+h[K>>3];h[la+(d*1280|0)+248>>3]=+h[J>>3];h[la+(d*1280|0)+112>>3]=+h[I>>3];h[la+(d*1280|0)+240>>3]=+h[H>>3];h[la+(d*1280|0)+104>>3]=+h[G>>3];h[la+(d*1280|0)+232>>3]=+h[F>>3];h[la+(d*1280|0)+96>>3]=+h[E>>3];h[la+(d*1280|0)+224>>3]=+h[D>>3];h[la+(d*1280|0)+64>>3]=+h[C>>3];h[la+(d*1280|0)+192>>3]=+h[B>>3];h[la+(d*1280|0)+32>>3]=+h[ka>>3];h[la+(d*1280|0)+160>>3]=+h[ja>>3];h[la+(d*1280|0)+40>>3]=+h[ga>>3];h[la+(d*1280|0)+168>>3]=+h[fa>>3];h[la+(d*1280|0)+48>>3]=+h[ea>>3];h[la+(d*1280|0)+176>>3]=+h[da>>3];h[la+(d*1280|0)+80>>3]=+h[ca>>3];h[la+(d*1280|0)+208>>3]=+h[ba>>3];h[la+(d*1280|0)+72>>3]=+h[V>>3];h[la+(d*1280|0)+200>>3]=+h[aa>>3];if(X){na=0}else{break}do{h[la+(d*1280|0)+256+(na<<3)>>3]=+h[k+(na<<3)>>3];h[la+(d*1280|0)+512+(na<<3)>>3]=+h[k+256+(na<<3)>>3];h[la+(d*1280|0)+1024+(na<<3)>>3]=+h[k+512+(na<<3)>>3];h[la+(d*1280|0)+768+(na<<3)>>3]=+h[k+768+(na<<3)>>3];na=na+1|0;}while((na|0)<(y|0))}else if((na|0)==1){na=d+ -1|0;h[oa>>3]=+h[la+(na*1280|0)+24>>3];h[la+(d*1280|0)+128>>3]=+h[la+(na*1280|0)+152>>3];h[la+(d*1280|0)+8>>3]=+h[la+(na*1280|0)+56>>3];h[la+(d*1280|0)+136>>3]=+h[la+(na*1280|0)+184>>3];h[la+(d*1280|0)+16>>3]=+h[la+(na*1280|0)+88>>3];h[la+(d*1280|0)+144>>3]=+h[la+(na*1280|0)+216>>3];h[la+(d*1280|0)+24>>3]=+h[la+(na*1280|0)+120>>3];h[la+(d*1280|0)+152>>3]=+h[la+(na*1280|0)+248>>3];h[la+(d*1280|0)+56>>3]=+h[p>>3];h[la+(d*1280|0)+184>>3]=+h[l>>3];h[la+(d*1280|0)+88>>3]=+h[U>>3];h[la+(d*1280|0)+216>>3]=+h[T>>3];h[la+(d*1280|0)+120>>3]=+h[S>>3];h[la+(d*1280|0)+248>>3]=+h[R>>3];h[la+(d*1280|0)+112>>3]=+h[Q>>3];h[la+(d*1280|0)+240>>3]=+h[P>>3];h[la+(d*1280|0)+104>>3]=+h[O>>3];h[la+(d*1280|0)+232>>3]=+h[N>>3];h[la+(d*1280|0)+96>>3]=+h[M>>3];h[la+(d*1280|0)+224>>3]=+h[L>>3];h[la+(d*1280|0)+64>>3]=+h[K>>3];h[la+(d*1280|0)+192>>3]=+h[J>>3];h[la+(d*1280|0)+32>>3]=+h[I>>3];h[la+(d*1280|0)+160>>3]=+h[H>>3];h[la+(d*1280|0)+40>>3]=+h[G>>3];h[la+(d*1280|0)+168>>3]=+h[F>>3];h[la+(d*1280|0)+48>>3]=+h[E>>3];h[la+(d*1280|0)+176>>3]=+h[D>>3];h[la+(d*1280|0)+80>>3]=+h[C>>3];h[la+(d*1280|0)+208>>3]=+h[B>>3];h[la+(d*1280|0)+72>>3]=+h[ka>>3];h[la+(d*1280|0)+200>>3]=+h[ja>>3];if(X){oa=0}else{break}do{h[la+(d*1280|0)+256+(oa<<3)>>3]=+h[la+(na*1280|0)+512+(oa<<3)>>3];h[la+(d*1280|0)+512+(oa<<3)>>3]=+h[la+(na*1280|0)+1024+(oa<<3)>>3];h[la+(d*1280|0)+1024+(oa<<3)>>3]=+h[k+(oa<<3)>>3];h[la+(d*1280|0)+768+(oa<<3)>>3]=+h[k+256+(oa<<3)>>3];oa=oa+1|0;}while((oa|0)<(y|0))}else if((na|0)==2){na=d+ -1|0;h[oa>>3]=+h[la+(na*1280|0)+120>>3];h[la+(d*1280|0)+128>>3]=+h[la+(na*1280|0)+248>>3];h[la+(d*1280|0)+8>>3]=+h[la+(na*1280|0)+112>>3];h[la+(d*1280|0)+136>>3]=+h[la+(na*1280|0)+240>>3];h[la+(d*1280|0)+16>>3]=+h[la+(na*1280|0)+104>>3];h[la+(d*1280|0)+144>>3]=+h[la+(na*1280|0)+232>>3];h[la+(d*1280|0)+24>>3]=+h[la+(na*1280|0)+96>>3];h[la+(d*1280|0)+152>>3]=+h[la+(na*1280|0)+224>>3];h[la+(d*1280|0)+56>>3]=+h[p>>3];h[la+(d*1280|0)+184>>3]=+h[l>>3];h[la+(d*1280|0)+88>>3]=+h[U>>3];h[la+(d*1280|0)+216>>3]=+h[T>>3];h[la+(d*1280|0)+120>>3]=+h[S>>3];h[la+(d*1280|0)+248>>3]=+h[R>>3];h[la+(d*1280|0)+112>>3]=+h[Q>>3];h[la+(d*1280|0)+240>>3]=+h[P>>3];h[la+(d*1280|0)+104>>3]=+h[O>>3];h[la+(d*1280|0)+232>>3]=+h[N>>3];h[la+(d*1280|0)+96>>3]=+h[M>>3];h[la+(d*1280|0)+224>>3]=+h[L>>3];h[la+(d*1280|0)+64>>3]=+h[K>>3];h[la+(d*1280|0)+192>>3]=+h[J>>3];h[la+(d*1280|0)+32>>3]=+h[I>>3];h[la+(d*1280|0)+160>>3]=+h[H>>3];h[la+(d*1280|0)+40>>3]=+h[G>>3];h[la+(d*1280|0)+168>>3]=+h[F>>3];h[la+(d*1280|0)+48>>3]=+h[E>>3];h[la+(d*1280|0)+176>>3]=+h[D>>3];h[la+(d*1280|0)+80>>3]=+h[C>>3];h[la+(d*1280|0)+208>>3]=+h[B>>3];h[la+(d*1280|0)+72>>3]=+h[ka>>3];h[la+(d*1280|0)+200>>3]=+h[ja>>3];if(X){oa=0}else{break}do{h[la+(d*1280|0)+256+(oa<<3)>>3]=+h[la+(na*1280|0)+1024+(oa<<3)>>3];h[la+(d*1280|0)+512+(oa<<3)>>3]=+h[la+(na*1280|0)+768+(oa<<3)>>3];h[la+(d*1280|0)+1024+(oa<<3)>>3]=+h[k+(oa<<3)>>3];h[la+(d*1280|0)+768+(oa<<3)>>3]=+h[k+256+(oa<<3)>>3];oa=oa+1|0;}while((oa|0)<(y|0))}else if((na|0)==3){na=d+ -1|0;h[oa>>3]=+h[la+(na*1280|0)+96>>3];h[la+(d*1280|0)+128>>3]=+h[la+(na*1280|0)+224>>3];h[la+(d*1280|0)+8>>3]=+h[la+(na*1280|0)+64>>3];h[la+(d*1280|0)+136>>3]=+h[la+(na*1280|0)+192>>3];h[la+(d*1280|0)+16>>3]=+h[la+(na*1280|0)+32>>3];h[la+(d*1280|0)+144>>3]=+h[la+(na*1280|0)+160>>3];h[la+(d*1280|0)+24>>3]=+h[la+(na*1280|0)>>3];h[la+(d*1280|0)+152>>3]=+h[la+(na*1280|0)+128>>3];h[la+(d*1280|0)+56>>3]=+h[p>>3];h[la+(d*1280|0)+184>>3]=+h[l>>3];h[la+(d*1280|0)+88>>3]=+h[U>>3];h[la+(d*1280|0)+216>>3]=+h[T>>3];h[la+(d*1280|0)+120>>3]=+h[S>>3];h[la+(d*1280|0)+248>>3]=+h[R>>3];h[la+(d*1280|0)+112>>3]=+h[Q>>3];h[la+(d*1280|0)+240>>3]=+h[P>>3];h[la+(d*1280|0)+104>>3]=+h[O>>3];h[la+(d*1280|0)+232>>3]=+h[N>>3];h[la+(d*1280|0)+96>>3]=+h[M>>3];h[la+(d*1280|0)+224>>3]=+h[L>>3];h[la+(d*1280|0)+64>>3]=+h[K>>3];h[la+(d*1280|0)+192>>3]=+h[J>>3];h[la+(d*1280|0)+32>>3]=+h[I>>3];h[la+(d*1280|0)+160>>3]=+h[H>>3];h[la+(d*1280|0)+40>>3]=+h[G>>3];h[la+(d*1280|0)+168>>3]=+h[F>>3];h[la+(d*1280|0)+48>>3]=+h[E>>3];h[la+(d*1280|0)+176>>3]=+h[D>>3];h[la+(d*1280|0)+80>>3]=+h[C>>3];h[la+(d*1280|0)+208>>3]=+h[B>>3];h[la+(d*1280|0)+72>>3]=+h[ka>>3];h[la+(d*1280|0)+200>>3]=+h[ja>>3];if(X){oa=0}else{break}do{h[la+(d*1280|0)+256+(oa<<3)>>3]=+h[la+(na*1280|0)+768+(oa<<3)>>3];h[la+(d*1280|0)+512+(oa<<3)>>3]=+h[la+(na*1280|0)+256+(oa<<3)>>3];h[la+(d*1280|0)+1024+(oa<<3)>>3]=+h[k+(oa<<3)>>3];h[la+(d*1280|0)+768+(oa<<3)>>3]=+h[k+256+(oa<<3)>>3];oa=oa+1|0;}while((oa|0)<(y|0))}else{break}}}while(0);c[Z>>2]=0;d=d+1|0}if((pa|0)==81){c[$>>2]=0;pa=145}else if((pa|0)==102){c[$>>2]=0;pa=145}else if((pa|0)==121){c[$>>2]=0;pa=145}else if((pa|0)==144){c[$>>2]=0;if((A|0)!=0){pa=145}}if((pa|0)==145){wa=c[A>>2]|0;fd[c[(c[wa>>2]|0)+16>>2]&511](wa);HW(A)}if(_&(d|0)>0){j=0;do{pa=la+(j*1280|0)|0;w=+h[pa>>3];ra=la+(j*1280|0)+8|0;ya=+h[la+(j*1280|0)+32>>3];qa=la+(j*1280|0)+24|0;Ba=+h[qa>>3];ta=la+(j*1280|0)+96|0;Ja=+h[ta>>3];xa=+h[la+(j*1280|0)+104>>3];Ca=+h[la+(j*1280|0)+56>>3];sa=la+(j*1280|0)+120|0;za=+h[sa>>3];h[la+(j*1280|0)+40>>3]=(w*-4.0+(+h[ra>>3]+ya)*6.0-(Ba+Ja)*2.0+(xa+Ca)*3.0-za)/9.0;wa=la+(j*1280|0)+128|0;Ga=+h[wa>>3];Fa=+h[la+(j*1280|0)+136>>3];t=+h[la+(j*1280|0)+160>>3];va=la+(j*1280|0)+152|0;Ea=+h[va>>3];ua=la+(j*1280|0)+224|0;Ia=+h[ua>>3];Ha=+h[la+(j*1280|0)+232>>3];u=+h[la+(j*1280|0)+184>>3];v=+h[la+(j*1280|0)+248>>3];h[la+(j*1280|0)+168>>3]=(Ga*-4.0+(Fa+t)*6.0-(Ea+Ia)*2.0+(Ha+u)*3.0-v)/9.0;Aa=+h[la+(j*1280|0)+16>>3];Da=+h[la+(j*1280|0)+112>>3];h[la+(j*1280|0)+48>>3]=(Ba*-4.0+(Aa+Ca)*6.0-(w+za)*2.0+(Da+ya)*3.0-Ja)/9.0;ya=+h[la+(j*1280|0)+144>>3];Ga=(Ga+v)*2.0;w=+h[la+(j*1280|0)+240>>3];h[la+(j*1280|0)+176>>3]=(Ea*-4.0+(ya+u)*6.0-Ga+(w+t)*3.0-Ia)/9.0;t=+h[la+(j*1280|0)+64>>3];u=+h[pa>>3];Ca=+h[la+(j*1280|0)+88>>3];Ba=+h[qa>>3];h[la+(j*1280|0)+72>>3]=(Ja*-4.0+(xa+t)*6.0-(za+u)*2.0+(+h[ra>>3]+Ca)*3.0-Ba)/9.0;za=+h[la+(j*1280|0)+192>>3];xa=+h[la+(j*1280|0)+216>>3];h[la+(j*1280|0)+200>>3]=(Ia*-4.0+(Ha+za)*6.0-Ga+(Fa+xa)*3.0-Ea)/9.0;h[la+(j*1280|0)+80>>3]=(+h[sa>>3]*-4.0+(Da+Ca)*6.0-(+h[ta>>3]+Ba)*2.0+(Aa+t)*3.0-u)/9.0;h[la+(j*1280|0)+208>>3]=(v*-4.0+(w+xa)*6.0-(+h[ua>>3]+ +h[va>>3])*2.0+(ya+za)*3.0- +h[wa>>3])/9.0;j=j+1|0;}while((j|0)<(d|0))}j=FW(320)|0;c[j+4>>2]=a;c[j+8>>2]=0;c[j>>2]=171520;c[j+180>>2]=la;c[j+184>>2]=d;a=j+316|0;c[a>>2]=z;if((z|0)>0){k=0;do{c[j+188+(k<<2)>>2]=c[g+(k<<2)>>2];k=k+1|0;}while((k|0)<(c[a>>2]|0))}if(MA(j,b,e)|0){wa=j;i=f;return wa|0}if((j|0)==0){wa=0;i=f;return wa|0}fd[c[(c[j>>2]|0)+4>>2]&511](j);wa=0;i=f;return wa|0}}}while(0);Qe(-1,171376,I)}else{Qe(-1,171072,ha)}}while(0);Of(A);wa=0;i=f;return wa|0}function MA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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,O=0.0;j=i;C=i;i=i+8|0;p=i;i=i+8|0;v=i;i=i+8|0;t=v;y=i;i=i+8|0;x=y;A=i;i=i+8|0;B=A;D=i;i=i+8|0;E=D;J=i;i=i+8|0;G=i;i=i+16|0;F=G;I=i;i=i+8|0;H=I;L=i;i=i+8|0;K=L;M=i;i=i+8|0;z=i;i=i+16|0;g=z;w=i;i=i+16|0;k=w;s=i;i=i+16|0;l=s;r=i;i=i+16|0;m=r;q=i;i=i+16|0;n=q;c[z>>2]=13;u=g+8|0;c[u>>2]=0;c[u+4>>2]=0;c[w>>2]=13;o=k+8|0;c[o>>2]=0;c[o+4>>2]=0;Yu(d,170616,g,0)|0;N=Jy(g,e)|0;e=b+8|0;c[e>>2]=N;if((N|0)==0){Qe(-1,170632,M);Of(g);N=0;i=j;return N|0}Of(g);M=b+140|0;bX(b+12|0,0,129)|0;a:do{if((c[(Yu(d,170672,g,0)|0)>>2]|0)==6){N=c[z>>2]|0;if((N|0)!=6){c[L>>2]=N;c[K+4>>2]=6;Qe(0,172720,K);tc()}L=c[(c[u>>2]|0)+12>>2]|0;N=c[e>>2]|0;if((L|0)!=(jd[c[(c[N>>2]|0)+44>>2]&511](N)|0)){Qe(-1,170688,J);break}a[M]=1;N=c[e>>2]|0;if((jd[c[(c[N>>2]|0)+44>>2]&511](N)|0)>0){J=0}else{break}while(1){K=c[z>>2]|0;if((K|0)!=6){f=9;break}L=ut(c[u>>2]|0,J,k)|0;K=c[L>>2]|0;if((K+ -1|0)>>>0>=2){f=11;break}L=L+8|0;if((K|0)==1){O=+(c[L>>2]|0)}else{O=+h[L>>3]}c[b+12+(J<<2)>>2]=~~(O*65536.0);Of(k);J=J+1|0;N=c[e>>2]|0;if((J|0)>=(jd[c[(c[N>>2]|0)+44>>2]&511](N)|0)){break a}}if((f|0)==9){c[I>>2]=K;c[H+4>>2]=6;Qe(0,172720,H);tc()}else if((f|0)==11){c[G>>2]=K;c[F+4>>2]=1;c[F+8>>2]=2;Qe(0,172792,F);tc()}}}while(0);Of(g);F=b+168|0;G=b+160|0;H=b+152|0;I=b+144|0;b=b+176|0;bX(I|0,0,33)|0;do{if((c[(Yu(d,170112,g,0)|0)>>2]|0)==6){d=c[z>>2]|0;if((d|0)!=6){c[D>>2]=d;c[E+4>>2]=6;Qe(0,172720,E);tc()}d=c[u>>2]|0;if((c[d+12>>2]|0)!=4){Qe(-1,170784,C);break}c[s>>2]=13;E=l+8|0;c[E>>2]=0;c[E+4>>2]=0;c[r>>2]=13;D=m+8|0;c[D>>2]=0;c[D+4>>2]=0;c[q>>2]=13;C=n+8|0;c[C>>2]=0;c[C+4>>2]=0;ut(d,0,k)|0;d=c[z>>2]|0;if((d|0)!=6){c[A>>2]=d;c[B+4>>2]=6;Qe(0,172720,B);tc()}ut(c[u>>2]|0,1,l)|0;A=c[z>>2]|0;if((A|0)!=6){c[y>>2]=A;c[x+4>>2]=6;Qe(0,172720,x);tc()}ut(c[u>>2]|0,2,m)|0;x=c[z>>2]|0;if((x|0)!=6){c[v>>2]=x;c[t+4>>2]=6;Qe(0,172720,t);tc()}ut(c[u>>2]|0,3,n)|0;t=c[w>>2]|0;do{if((t+ -1|0)>>>0<2){s=c[s>>2]|0;if((s+ -1|0)>>>0>=2){f=44;break}r=c[r>>2]|0;if((r+ -1|0)>>>0>=2){f=44;break}q=c[q>>2]|0;if((q+ -1|0)>>>0>=2){f=44;break}a[b]=1;if((t|0)==1){O=+(c[o>>2]|0)}else{O=+h[o>>3]}h[I>>3]=O;if((s|0)==1){O=+(c[E>>2]|0)}else{O=+h[E>>3]}h[H>>3]=O;if((r|0)==1){O=+(c[D>>2]|0)}else{O=+h[D>>3]}h[G>>3]=O;if((q|0)==1){O=+(c[C>>2]|0)}else{O=+h[C>>3]}h[F>>3]=O}else{f=44}}while(0);if((f|0)==44){Qe(-1,170728,p)}Of(k);Of(l);Of(m);Of(n)}}while(0);Of(g);N=1;i=j;return N|0}function NA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0;e=i;c[b>>2]=170376;c[b+4>>2]=c[d+4>>2];f=c[d+8>>2]|0;c[b+8>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0;f=0;do{c[b+12+(f<<2)>>2]=c[d+12+(f<<2)>>2];f=f+1|0;}while((f|0)<32);a[b+140|0]=a[d+140|0]&1;h[b+144>>3]=+h[d+144>>3];h[b+152>>3]=+h[d+152>>3];h[b+160>>3]=+h[d+160>>3];h[b+168>>3]=+h[d+168>>3];a[b+176|0]=a[d+176|0]&1;c[b>>2]=170824;h[b+184>>3]=+h[d+184>>3];h[b+192>>3]=+h[d+192>>3];h[b+200>>3]=+h[d+200>>3];h[b+208>>3]=+h[d+208>>3];h[b+216>>3]=+h[d+216>>3];h[b+224>>3]=+h[d+224>>3];h[b+232>>3]=+h[d+232>>3];h[b+240>>3]=+h[d+240>>3];h[b+248>>3]=+h[d+248>>3];h[b+256>>3]=+h[d+256>>3];g=c[d+392>>2]|0;f=b+392|0;c[f>>2]=g;if((g|0)>0){g=0}else{i=e;return}do{j=c[d+264+(g<<2)>>2]|0;c[b+264+(g<<2)>>2]=jd[c[(c[j>>2]|0)+8>>2]&511](j)|0;g=g+1|0;}while((g|0)<(c[f>>2]|0));i=e;return}function OA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=170824;d=a+392|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+264+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function PA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=170824;d=a+392|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+264+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function QA(a){a=a|0;var b=0,c=0;c=i;b=FW(400)|0;NA(b,a);i=c;return b|0}function RA(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0;g=i;k=i;i=i+16|0;j=k;l=i;i=i+256|0;f=l;bX(l|0,0,256)|0;h[k>>3]=b;h[j+8>>3]=d;k=a+392|0;if((c[k>>2]|0)>0){l=0;while(1){m=c[a+264+(l<<2)>>2]|0;Gd[c[(c[m>>2]|0)+16>>2]&255](m,j,f+(l<<3)|0);l=l+1|0;if((l|0)<(c[k>>2]|0)){}else{j=0;break}}}else{j=0}do{c[e+(j<<2)>>2]=~~(+h[f+(j<<3)>>3]*65536.0);j=j+1|0;}while((j|0)<32);i=g;return}function SA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0;e=i;c[b>>2]=170376;c[b+4>>2]=c[d+4>>2];f=c[d+8>>2]|0;c[b+8>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0;f=0;do{c[b+12+(f<<2)>>2]=c[d+12+(f<<2)>>2];f=f+1|0;}while((f|0)<32);a[b+140|0]=a[d+140|0]&1;h[b+144>>3]=+h[d+144>>3];h[b+152>>3]=+h[d+152>>3];h[b+160>>3]=+h[d+160>>3];h[b+168>>3]=+h[d+168>>3];a[b+176|0]=a[d+176|0]&1;c[b>>2]=170920;h[b+184>>3]=+h[d+184>>3];h[b+192>>3]=+h[d+192>>3];h[b+200>>3]=+h[d+200>>3];h[b+208>>3]=+h[d+208>>3];h[b+216>>3]=+h[d+216>>3];h[b+224>>3]=+h[d+224>>3];g=c[d+360>>2]|0;f=b+360|0;c[f>>2]=g;if((g|0)>0){g=0}else{g=d+364|0;g=a[g]|0;g=g&1;f=b+364|0;a[f]=g;f=d+365|0;f=a[f]|0;f=f&1;g=b+365|0;a[g]=f;i=e;return}do{j=c[d+232+(g<<2)>>2]|0;c[b+232+(g<<2)>>2]=jd[c[(c[j>>2]|0)+8>>2]&511](j)|0;g=g+1|0;}while((g|0)<(c[f>>2]|0));j=d+364|0;j=a[j]|0;j=j&1;g=b+364|0;a[g]=j;g=d+365|0;g=a[g]|0;g=g&1;j=b+365|0;a[j]=g;i=e;return}function TA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=170920;d=a+360|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+232+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function UA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=170920;d=a+360|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+232+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function VA(a){a=a|0;var b=0,c=0;c=i;b=FW(368)|0;SA(b,a);i=c;return b|0}function WA(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;f=i;k=i;i=i+8|0;g=k;j=i;i=i+256|0;e=j;h[k>>3]=b;bX(j|0,0,256)|0;j=a+360|0;if((c[j>>2]|0)>0){k=0;while(1){l=c[a+232+(k<<2)>>2]|0;Gd[c[(c[l>>2]|0)+16>>2]&255](l,g,e+(k<<3)|0);k=k+1|0;if((k|0)<(c[j>>2]|0)){}else{a=0;break}}}else{a=0}do{c[d+(a<<2)>>2]=~~(+h[e+(a<<3)>>3]*65536.0);a=a+1|0;}while((a|0)<32);i=f;return}function XA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0;e=i;c[b>>2]=170376;c[b+4>>2]=c[d+4>>2];f=c[d+8>>2]|0;c[b+8>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0;f=0;do{c[b+12+(f<<2)>>2]=c[d+12+(f<<2)>>2];f=f+1|0;}while((f|0)<32);a[b+140|0]=a[d+140|0]&1;h[b+144>>3]=+h[d+144>>3];h[b+152>>3]=+h[d+152>>3];h[b+160>>3]=+h[d+160>>3];h[b+168>>3]=+h[d+168>>3];a[b+176|0]=a[d+176|0]&1;c[b>>2]=171008;h[b+184>>3]=+h[d+184>>3];h[b+192>>3]=+h[d+192>>3];h[b+200>>3]=+h[d+200>>3];h[b+208>>3]=+h[d+208>>3];h[b+216>>3]=+h[d+216>>3];h[b+224>>3]=+h[d+224>>3];h[b+232>>3]=+h[d+232>>3];h[b+240>>3]=+h[d+240>>3];g=c[d+376>>2]|0;f=b+376|0;c[f>>2]=g;if((g|0)>0){g=0}else{g=d+380|0;g=a[g]|0;g=g&1;f=b+380|0;a[f]=g;f=d+381|0;f=a[f]|0;f=f&1;g=b+381|0;a[g]=f;i=e;return}do{j=c[d+248+(g<<2)>>2]|0;c[b+248+(g<<2)>>2]=jd[c[(c[j>>2]|0)+8>>2]&511](j)|0;g=g+1|0;}while((g|0)<(c[f>>2]|0));j=d+380|0;j=a[j]|0;j=j&1;g=b+380|0;a[g]=j;g=d+381|0;g=a[g]|0;g=g&1;j=b+381|0;a[j]=g;i=e;return}function YA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=171008;d=a+376|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+248+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function ZA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=171008;d=a+376|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+248+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function _A(a){a=a|0;var b=0,c=0;c=i;b=FW(384)|0;XA(b,a);i=c;return b|0}function $A(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;f=i;k=i;i=i+8|0;g=k;j=i;i=i+256|0;e=j;h[k>>3]=b;bX(j|0,0,256)|0;j=a+376|0;if((c[j>>2]|0)>0){k=0;while(1){l=c[a+248+(k<<2)>>2]|0;Gd[c[(c[l>>2]|0)+16>>2]&255](l,g,e+(k<<3)|0);k=k+1|0;if((k|0)<(c[j>>2]|0)){}else{a=0;break}}}else{a=0}do{c[d+(a<<2)>>2]=~~(+h[e+(a<<3)>>3]*65536.0);a=a+1|0;}while((a|0)<32);i=f;return}function aB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0;e=i;c[b>>2]=170376;c[b+4>>2]=c[d+4>>2];f=c[d+8>>2]|0;c[b+8>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0;f=0;do{c[b+12+(f<<2)>>2]=c[d+12+(f<<2)>>2];f=f+1|0;}while((f|0)<32);a[b+140|0]=a[d+140|0]&1;h[b+144>>3]=+h[d+144>>3];h[b+152>>3]=+h[d+152>>3];h[b+160>>3]=+h[d+160>>3];h[b+168>>3]=+h[d+168>>3];a[b+176|0]=a[d+176|0]&1;c[b>>2]=171032;g=c[d+184>>2]|0;f=b+184|0;c[f>>2]=g;g=ye(g,144)|0;c[b+180>>2]=g;$W(g|0,c[d+180>>2]|0,(c[f>>2]|0)*144|0)|0;f=c[d+192>>2]|0;g=b+192|0;c[g>>2]=f;f=ye(f*3|0,4)|0;c[b+188>>2]=f;$W(f|0,c[d+188>>2]|0,(c[g>>2]|0)*12|0)|0;g=c[d+324>>2]|0;f=b+324|0;c[f>>2]=g;if((g|0)>0){g=0}else{i=e;return}do{j=c[d+196+(g<<2)>>2]|0;c[b+196+(g<<2)>>2]=jd[c[(c[j>>2]|0)+8>>2]&511](j)|0;g=g+1|0;}while((g|0)<(c[f>>2]|0));i=e;return}function bB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=171032;Fe(c[a+180>>2]|0);Fe(c[a+188>>2]|0);d=a+324|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+196+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function cB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=171032;Fe(c[a+180>>2]|0);Fe(c[a+188>>2]|0);d=a+324|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+196+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function dB(a){a=a|0;var b=0,c=0;c=i;b=FW(328)|0;aB(b,a);i=c;return b|0}function eB(a,b,d,e,f,g,j,k,l,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;p=i;s=i;i=i+8|0;r=s;o=i;i=i+256|0;q=a+324|0;if((c[q>>2]|0)>0){Ya(171432,171456,3392,171472)}u=a+188|0;v=c[(c[u>>2]|0)+(b*12|0)>>2]|0;t=a+180|0;h[d>>3]=+h[(c[t>>2]|0)+(v*144|0)>>3];h[e>>3]=+h[(c[t>>2]|0)+(v*144|0)+8>>3];e=c[t>>2]|0;if((c[q>>2]|0)>0){h[s>>3]=+(c[e+(v*144|0)+16>>2]|0)*152587890625.0e-16;v=0;while(1){d=c[a+196+(v<<2)>>2]|0;Gd[c[(c[d>>2]|0)+16>>2]&255](d,r,o+(v<<3)|0);v=v+1|0;if((v|0)<(c[q>>2]|0)){}else{v=0;break}}do{c[f+(v<<2)>>2]=~~(+h[o+(v<<3)>>3]*65536.0);v=v+1|0;}while((v|0)<32)}else{$W(f|0,e+(v*144|0)+16|0,128)|0}f=c[(c[u>>2]|0)+(b*12|0)+4>>2]|0;h[g>>3]=+h[(c[t>>2]|0)+(f*144|0)>>3];h[j>>3]=+h[(c[t>>2]|0)+(f*144|0)+8>>3];j=c[t>>2]|0;if((c[q>>2]|0)>0){h[s>>3]=+(c[j+(f*144|0)+16>>2]|0)*152587890625.0e-16;j=0;while(1){d=c[a+196+(j<<2)>>2]|0;Gd[c[(c[d>>2]|0)+16>>2]&255](d,r,o+(j<<3)|0);j=j+1|0;if((j|0)<(c[q>>2]|0)){}else{j=0;break}}do{c[k+(j<<2)>>2]=~~(+h[o+(j<<3)>>3]*65536.0);j=j+1|0;}while((j|0)<32)}else{$W(k|0,j+(f*144|0)+16|0,128)|0}k=c[(c[u>>2]|0)+(b*12|0)+8>>2]|0;h[l>>3]=+h[(c[t>>2]|0)+(k*144|0)>>3];h[m>>3]=+h[(c[t>>2]|0)+(k*144|0)+8>>3];t=c[t>>2]|0;if((c[q>>2]|0)<=0){$W(n|0,t+(k*144|0)+16|0,128)|0;i=p;return}h[s>>3]=+(c[t+(k*144|0)+16>>2]|0)*152587890625.0e-16;s=0;while(1){d=c[a+196+(s<<2)>>2]|0;Gd[c[(c[d>>2]|0)+16>>2]&255](d,r,o+(s<<3)|0);s=s+1|0;if((s|0)<(c[q>>2]|0)){}else{a=0;break}}do{c[n+(a<<2)>>2]=~~(+h[o+(a<<3)>>3]*65536.0);a=a+1|0;}while((a|0)<32);i=p;return}function fB(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;f=i;j=i;i=i+8|0;g=j;e=i;i=i+256|0;h[j>>3]=b;j=a+324|0;if((c[j>>2]|0)>0){k=0;while(1){l=c[a+196+(k<<2)>>2]|0;Gd[c[(c[l>>2]|0)+16>>2]&255](l,g,e+(k<<3)|0);k=k+1|0;if((k|0)<(c[j>>2]|0)){}else{a=0;break}}}else{a=0}do{c[d+(a<<2)>>2]=~~(+h[e+(a<<3)>>3]*65536.0);a=a+1|0;}while((a|0)<32);i=f;return}function gB(a,b,d,e,f,g,j,k,l,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0;if((c[a+324>>2]|0)>0){p=a+188|0;q=c[(c[p>>2]|0)+(b*12|0)>>2]|0;o=a+180|0;h[d>>3]=+h[(c[o>>2]|0)+(q*144|0)>>3];h[e>>3]=+h[(c[o>>2]|0)+(q*144|0)+8>>3];h[f>>3]=+(c[(c[o>>2]|0)+(q*144|0)+16>>2]|0)*152587890625.0e-16;a=c[(c[p>>2]|0)+(b*12|0)+4>>2]|0;h[g>>3]=+h[(c[o>>2]|0)+(a*144|0)>>3];h[j>>3]=+h[(c[o>>2]|0)+(a*144|0)+8>>3];h[k>>3]=+(c[(c[o>>2]|0)+(a*144|0)+16>>2]|0)*152587890625.0e-16;a=c[(c[p>>2]|0)+(b*12|0)+8>>2]|0;h[l>>3]=+h[(c[o>>2]|0)+(a*144|0)>>3];h[m>>3]=+h[(c[o>>2]|0)+(a*144|0)+8>>3];h[n>>3]=+(c[(c[o>>2]|0)+(a*144|0)+16>>2]|0)*152587890625.0e-16;i=i;return}else{Ya(171488,171456,3455,171472)}}function hB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0;e=i;c[b>>2]=170376;c[b+4>>2]=c[d+4>>2];f=c[d+8>>2]|0;c[b+8>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0;f=0;do{c[b+12+(f<<2)>>2]=c[d+12+(f<<2)>>2];f=f+1|0;}while((f|0)<32);a[b+140|0]=a[d+140|0]&1;h[b+144>>3]=+h[d+144>>3];h[b+152>>3]=+h[d+152>>3];h[b+160>>3]=+h[d+160>>3];h[b+168>>3]=+h[d+168>>3];a[b+176|0]=a[d+176|0]&1;c[b>>2]=171520;f=c[d+184>>2]|0;g=b+184|0;c[g>>2]=f;f=ye(f,1280)|0;c[b+180>>2]=f;$W(f|0,c[d+180>>2]|0,(c[g>>2]|0)*1280|0)|0;g=c[d+316>>2]|0;f=b+316|0;c[f>>2]=g;if((g|0)>0){g=0}else{i=e;return}do{j=c[d+188+(g<<2)>>2]|0;c[b+188+(g<<2)>>2]=jd[c[(c[j>>2]|0)+8>>2]&511](j)|0;g=g+1|0;}while((g|0)<(c[f>>2]|0));i=e;return}function iB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=171520;Fe(c[a+180>>2]|0);d=a+316|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+188+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;d=c[a+8>>2]|0;if((d|0)==0){HW(a);i=b;return}fd[c[(c[d>>2]|0)+4>>2]&511](d);HW(a);i=b;return}function jB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;c[a>>2]=171520;Fe(c[a+180>>2]|0);d=a+316|0;f=c[d>>2]|0;if((f|0)>0){e=0;do{g=c[a+188+(e<<2)>>2]|0;if((g|0)!=0){fd[c[(c[g>>2]|0)+4>>2]&511](g);f=c[d>>2]|0}e=e+1|0;}while((e|0)<(f|0))}c[a>>2]=170376;a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function kB(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;f=i;j=i;i=i+8|0;g=j;e=i;i=i+256|0;h[j>>3]=b;j=a+316|0;if((c[j>>2]|0)>0){k=0;while(1){l=c[a+188+(k<<2)>>2]|0;Gd[c[(c[l>>2]|0)+16>>2]&255](l,g,e+(k<<3)|0);k=k+1|0;if((k|0)<(c[j>>2]|0)){}else{a=0;break}}}else{a=0}do{c[d+(a<<2)>>2]=~~(+h[e+(a<<3)>>3]*65536.0);a=a+1|0;}while((a|0)<32);i=f;return}function lB(a){a=a|0;var b=0,c=0;c=i;b=FW(320)|0;hB(b,a);i=c;return b|0}function mB(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var 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.0,C=0,D=0.0;j=i;p=i;i=i+8|0;v=p;u=i;i=i+8|0;s=u;q=i;i=i+16|0;t=q;n=i;i=i+256|0;m=n;l=i;i=i+256|0;c[q>>2]=13;w=t+8|0;c[w>>2]=0;c[w+4>>2]=0;r=b+664|0;a[r]=1;c[b+4>>2]=e;e=(1<>2]=g;k=(e|0)>255?255:e;e=b+148|0;bX(b+20|0,0,132)|0;x=c[f>>2]|0;a:do{if((x|0)==5){c[b+8>>2]=jd[c[(c[g>>2]|0)+44>>2]&511](g)|0;C=c[b>>2]|0;Jd[c[(c[C>>2]|0)+52>>2]&63](C,b+152|0,b+408|0,k)}else if((x|0)==6){x=f+8|0;C=(c[(c[x>>2]|0)+12>>2]|0)/2|0;y=b+8|0;c[y>>2]=C;if((C|0)!=(jd[c[(c[g>>2]|0)+44>>2]&511](g)|0)){o=60;break}if((c[y>>2]|0)<=0){break}g=0;while(1){z=g<<1;A=c[f>>2]|0;if((A|0)!=6){o=7;break}ut(c[x>>2]|0,z,t)|0;A=c[q>>2]|0;if((A+ -1|0)>>>0>=2){o=59;break}if((A|0)==1){B=+(c[w>>2]|0)}else{B=+h[w>>3]}A=b+152+(g<<3)|0;h[A>>3]=B;Of(t);C=c[f>>2]|0;if((C|0)!=6){o=13;break}ut(c[x>>2]|0,z|1,t)|0;z=c[q>>2]|0;if((z+ -1|0)>>>0>=2){o=59;break}if((z|0)==1){B=+(c[w>>2]|0)}else{B=+h[w>>3]}h[b+408+(g<<3)>>3]=B- +h[A>>3];Of(t);g=g+1|0;if((g|0)>=(c[y>>2]|0)){break a}}if((o|0)==7){c[u>>2]=A;c[s+4>>2]=6;Qe(0,172720,s);tc()}else if((o|0)==13){c[p>>2]=C;c[v+4>>2]=6;Qe(0,172720,v);tc()}else if((o|0)==59){Of(t);o=60;break}}else{o=60}}while(0);if((o|0)==60){a[r]=0;i=j;return}r=b+12|0;c[r>>2]=0;p=b+16|0;c[p>>2]=0;q=c[b>>2]|0;q=jd[c[(c[q>>2]|0)+12>>2]&511](q)|0;if((q|0)==7){n=c[b>>2]|0;C=c[n+4>>2]|0;c[r>>2]=C;q=c[n+8>>2]|0;c[p>>2]=jd[c[(c[C>>2]|0)+44>>2]&511](C)|0;n=c[n+12>>2]|0;C=c[r>>2]|0;Jd[c[(c[C>>2]|0)+52>>2]&63](C,m,l,q);C=c[r>>2]|0;if(jd[c[(c[C>>2]|0)+40>>2]&511](C)|0){o=22}else{C=c[r>>2]|0;if(jd[c[(c[C>>2]|0)+36>>2]&511](C)|0){o=22}else{r=0}}if((o|0)==22){c[e>>2]=ye(k+1|0,c[p>>2]|0)|0;r=1}if((c[p>>2]|0)<=0){i=j;return}s=k+1|0;o=(k|0)<0;v=b+152|0;u=b+408|0;B=+(k|0);x=0;do{y=b+20+(x<<2)|0;c[y>>2]=ye(s,4)|0;if(!o){f=m+(x<<3)|0;w=l+(x<<3)|0;t=0;while(1){g=~~(+h[v>>3]+ +(t|0)*+h[u>>3]/B+.5);if((g|0)<0){g=0}else{g=(g|0)>(q|0)?q:g}D=+(d[n+((da(c[p>>2]|0,g)|0)+x)|0]|0|0)/255.0;D=+h[f>>3]+D*+h[w>>3];c[(c[y>>2]|0)+(t<<2)>>2]=~~(D*65536.0);if(r){C=(da(c[p>>2]|0,t)|0)+x|0;a[(c[e>>2]|0)+C|0]=~~(D*255.0)}if((t|0)<(k|0)){t=t+1|0}else{break}}}x=x+1|0;}while((x|0)<(c[p>>2]|0));i=j;return}else if((q|0)==8){q=c[b>>2]|0;C=c[q+8>>2]|0;c[r>>2]=C;c[p>>2]=jd[c[(c[C>>2]|0)+44>>2]&511](C)|0;q=c[q+12>>2]|0;C=c[r>>2]|0;if(jd[c[(c[C>>2]|0)+40>>2]&511](C)|0){o=35}else{C=c[r>>2]|0;if(jd[c[(c[C>>2]|0)+36>>2]&511](C)|0){o=35}else{r=0}}if((o|0)==35){c[e>>2]=ye(k+1|0,c[p>>2]|0)|0;r=1}if((c[p>>2]|0)<=0){i=j;return}u=k+1|0;o=(k|0)<0;s=b+152|0;t=b+408|0;B=+(k|0);f=0;do{v=b+20+(f<<2)|0;c[v>>2]=ye(u,4)|0;if(!o){w=l+(f<<3)|0;x=0;while(1){h[n>>3]=+h[s>>3]+ +(x|0)*+h[t>>3]/B;Gd[c[(c[q>>2]|0)+16>>2]&255](q,m,l);c[(c[v>>2]|0)+(x<<2)>>2]=~~(+h[w>>3]*65536.0);if(r){C=(da(c[p>>2]|0,x)|0)+f|0;a[(c[e>>2]|0)+C|0]=~~(+h[w>>3]*255.0)}if((x|0)<(k|0)){x=x+1|0}else{break}}}f=f+1|0;}while((f|0)<(c[p>>2]|0));i=j;return}else{C=c[b>>2]|0;do{if(jd[c[(c[C>>2]|0)+40>>2]&511](C)|0){o=47}else{C=c[b>>2]|0;if(jd[c[(c[C>>2]|0)+36>>2]&511](C)|0){o=47;break}m=b+8|0;l=0}}while(0);if((o|0)==47){m=b+8|0;c[e>>2]=ye(k+1|0,c[m>>2]|0)|0;l=1}if((c[m>>2]|0)<=0){i=j;return}q=k+1|0;r=(k|0)<0;B=+(k|0);p=0;do{t=ye(q,4)|0;f=b+20+(p<<2)|0;c[f>>2]=t;b:do{if(!r){o=b+152+(p<<3)|0;n=b+408+(p<<3)|0;s=0;while(1){D=+h[o>>3]+ +(s|0)*+h[n>>3]/B;c[t+(s<<2)>>2]=~~(D*65536.0);if(l){t=~~(D*255.0+.5);if((t|0)<0){t=0}else{t=(t|0)>255?-1:t&255}C=(da(c[m>>2]|0,s)|0)+p|0;a[(c[e>>2]|0)+C|0]=t}if((s|0)>=(k|0)){break b}t=c[f>>2]|0;s=s+1|0}}}while(0);p=p+1|0;}while((p|0)<(c[m>>2]|0));i=j;return}}function nB(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;if((d|0)==0){d=0}else{fd[c[(c[d>>2]|0)+4>>2]&511](d);d=0}do{Fe(c[a+20+(d<<2)>>2]|0);d=d+1|0;}while((d|0)<32);Fe(c[a+148>>2]|0);i=b;return}function oB(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;h=i;i=i+128|0;j=c[b+12>>2]|0;if((j|0)==0){k=c[b+8>>2]|0;if((k|0)>0){j=0;do{c[h+(j<<2)>>2]=c[(c[b+20+(j<<2)>>2]|0)+((d[e+j|0]|0)<<2)>>2];j=j+1|0;}while((j|0)<(k|0))}l=c[b>>2]|0;Gd[c[(c[l>>2]|0)+16>>2]&255](l,h,f);i=g;return}k=c[b+16>>2]|0;if((k|0)>0){e=a[e]|0;l=0;do{c[h+(l<<2)>>2]=c[(c[b+20+(l<<2)>>2]|0)+((e&255)<<2)>>2];l=l+1|0;}while((l|0)<(k|0))}Gd[c[(c[j>>2]|0)+16>>2]&255](j,h,f);i=g;return}function pB(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;h=i;i=i+128|0;j=c[b+12>>2]|0;if((j|0)==0){k=c[b+8>>2]|0;if((k|0)>0){j=0;do{c[h+(j<<2)>>2]=c[(c[b+20+(j<<2)>>2]|0)+((d[e+j|0]|0)<<2)>>2];j=j+1|0;}while((j|0)<(k|0))}l=c[b>>2]|0;Gd[c[(c[l>>2]|0)+20>>2]&255](l,h,f);i=g;return}k=c[b+16>>2]|0;if((k|0)>0){e=a[e]|0;l=0;do{c[h+(l<<2)>>2]=c[(c[b+20+(l<<2)>>2]|0)+((e&255)<<2)>>2];l=l+1|0;}while((l|0)<(k|0))}Gd[c[(c[j>>2]|0)+20>>2]&255](j,h,f);i=g;return}function qB(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var 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;h=i;k=i;i=i+128|0;l=i;i=i+16|0;m=l;j=b+12|0;o=c[j>>2]|0;do{if((o|0)==0){n=5}else{if(jd[c[(c[o>>2]|0)+36>>2]&511](o)|0){k=b;break}else{if((c[j>>2]|0)==0){n=5;break}else{n=6;break}}}}while(0);if((n|0)==5){v=c[b>>2]|0;if(jd[c[(c[v>>2]|0)+36>>2]&511](v)|0){k=b}else{n=6}}if((n|0)==6){if((g|0)<=0){i=h;return}q=b+8|0;n=m+4|0;p=m+8|0;o=b+16|0;r=0;while(1){s=c[j>>2]|0;if((s|0)==0){t=c[q>>2]|0;if((t|0)>0){s=0;do{c[k+(s<<2)>>2]=c[(c[b+20+(s<<2)>>2]|0)+((d[e+s|0]|0)<<2)>>2];s=s+1|0;}while((s|0)<(t|0))}v=c[b>>2]|0;Gd[c[(c[v>>2]|0)+20>>2]&255](v,k,m)}else{v=c[o>>2]|0;if((v|0)>0){t=d[e]|0;u=0;do{c[k+(u<<2)>>2]=c[(c[b+20+(u<<2)>>2]|0)+(t<<2)>>2];u=u+1|0;}while((u|0)<(v|0))}Gd[c[(c[s>>2]|0)+20>>2]&255](s,k,m)}c[f+(r<<2)>>2]=(((c[n>>2]|0)*255|0)+32768|0)>>>8&65280|((c[l>>2]|0)*255|0)+32768&16711680|(((c[p>>2]|0)*255|0)+32768|0)>>>16&255;r=r+1|0;if((r|0)>=(g|0)){break}e=e+(c[q>>2]|0)|0}i=h;return}v=c[k>>2]|0;if(((jd[c[(c[v>>2]|0)+12>>2]&511](v)|0)+ -7|0)>>>0>=2){if((g|0)>0){j=b+8|0;b=b+148|0;o=c[j>>2]|0;m=e;l=0;do{if((o|0)>0){n=0;while(1){o=(da(d[m]|0,o)|0)+n|0;a[m]=a[(c[b>>2]|0)+o|0]|0;m=m+1|0;n=n+1|0;o=c[j>>2]|0;if((n|0)<(o|0)){}else{break}}}l=l+1|0;}while((l|0)<(g|0))}v=c[k>>2]|0;Jd[c[(c[v>>2]|0)+32>>2]&63](v,e,f,g);i=h;return}k=b+16|0;l=ye(g,c[k>>2]|0)|0;if((g|0)>0){b=b+148|0;o=c[k>>2]|0;m=0;do{if((o|0)>0){n=e+m|0;p=0;while(1){v=(da(d[n]|0,o)|0)+p|0;a[l+((da(o,m)|0)+p)|0]=a[(c[b>>2]|0)+v|0]|0;p=p+1|0;o=c[k>>2]|0;if((p|0)<(o|0)){}else{break}}}m=m+1|0;}while((m|0)<(g|0))}v=c[j>>2]|0;Jd[c[(c[v>>2]|0)+32>>2]&63](v,l,f,g);Fe(l);i=h;return}function rB(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,j=0,k=0,l=0,m=0,n=0;g=i;f=b+12|0;k=c[f>>2]|0;j=b+16|0;l=c[j>>2]|0;if((k|0)<(l|0)){l=b;j=b+4|0;b=b+8|0}else{n=l+16|0;c[j>>2]=n;c[b>>2]=Ce(c[b>>2]|0,n,8)|0;n=b+4|0;c[n>>2]=Ce(c[n>>2]|0,c[j>>2]|0,8)|0;m=b+8|0;c[m>>2]=Ce(c[m>>2]|0,c[j>>2]|0,1)|0;k=c[f>>2]|0;l=b;j=n;b=m}h[(c[l>>2]|0)+(k<<3)>>3]=d;h[(c[j>>2]|0)+(c[f>>2]<<3)>>3]=e;a[(c[b>>2]|0)+(c[f>>2]|0)|0]=0;c[f>>2]=(c[f>>2]|0)+1;i=g;return}function sB(b,d,e,f,g,j,k){b=b|0;d=+d;e=+e;f=+f;g=+g;j=+j;k=+k;var l=0,m=0,n=0,o=0,p=0,q=0;m=i;l=b+12|0;p=c[l>>2]|0;o=b+16|0;n=c[o>>2]|0;if((p+3|0)>(n|0)){n=n+16|0;c[o>>2]=n;c[b>>2]=Ce(c[b>>2]|0,n,8)|0;n=b+4|0;c[n>>2]=Ce(c[n>>2]|0,c[o>>2]|0,8)|0;q=b+8|0;c[q>>2]=Ce(c[q>>2]|0,c[o>>2]|0,1)|0;p=c[l>>2]|0;o=b;b=q}else{o=b;n=b+4|0;b=b+8|0}h[(c[o>>2]|0)+(p<<3)>>3]=d;h[(c[n>>2]|0)+(c[l>>2]<<3)>>3]=e;h[(c[o>>2]|0)+((c[l>>2]|0)+1<<3)>>3]=f;h[(c[n>>2]|0)+((c[l>>2]|0)+1<<3)>>3]=g;h[(c[o>>2]|0)+((c[l>>2]|0)+2<<3)>>3]=j;h[(c[n>>2]|0)+((c[l>>2]|0)+2<<3)>>3]=k;a[(c[b>>2]|0)+((c[l>>2]|0)+1)|0]=1;a[(c[b>>2]|0)+(c[l>>2]|0)|0]=1;a[(c[b>>2]|0)+((c[l>>2]|0)+2)|0]=0;c[l>>2]=(c[l>>2]|0)+3;i=m;return}function tB(b,d,e,f,g,j,k){b=b|0;d=d|0;e=+e;f=+f;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;a[b]=d&1;h[b+8>>3]=e;h[b+16>>3]=f;c[b+32>>2]=k;d=b+28|0;c[d>>2]=j;b=b+24|0;c[b>>2]=ye(k,4)|0;if((c[d>>2]|0)>0){k=0}else{i=l;return}do{m=c[g+(k<<2)>>2]|0;j=FW(24)|0;o=c[m+16>>2]|0;c[j+16>>2]=o;n=c[m+12>>2]|0;c[j+12>>2]=n;r=ye(o,8)|0;c[j>>2]=r;q=ye(o,8)|0;c[j+4>>2]=q;o=ye(o,1)|0;c[j+8>>2]=o;p=n<<3;$W(r|0,c[m>>2]|0,p|0)|0;$W(q|0,c[m+4>>2]|0,p|0)|0;$W(o|0,c[m+8>>2]|0,n|0)|0;a[j+20|0]=a[m+20|0]&1;c[(c[b>>2]|0)+(k<<2)>>2]=j;k=k+1|0;}while((k|0)<(c[d>>2]|0));i=l;return}function uB(b,c,d){b=b|0;c=+c;d=+d;a[b]=1;h[b+8>>3]=c;h[b+16>>3]=d;i=i;return}function vB(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0;f=i;g=b+28|0;j=c[g>>2]|0;if((a[b]&1)==0){l=j;k=b+24|0;l=l+ -1|0;k=c[k>>2]|0;l=l<<2;l=k+l|0;l=c[l>>2]|0;rB(l,d,e);i=f;return}k=b+32|0;l=c[k>>2]|0;if((j|0)<(l|0)){j=b+24|0}else{l=l+16|0;c[k>>2]=l;j=b+24|0;c[j>>2]=Ce(c[j>>2]|0,l,4)|0}l=FW(24)|0;p=+h[b+8>>3];n=+h[b+16>>3];c[l+16>>2]=16;o=ye(16,8)|0;c[l>>2]=o;m=l+4|0;c[m>>2]=ye(16,8)|0;k=l+8|0;c[k>>2]=ye(16,1)|0;c[l+12>>2]=1;h[o>>3]=p;h[c[m>>2]>>3]=n;a[c[k>>2]|0]=0;a[l+20|0]=0;c[(c[j>>2]|0)+(c[g>>2]<<2)>>2]=l;l=(c[g>>2]|0)+1|0;c[g>>2]=l;a[b]=0;k=j;l=l+ -1|0;k=c[k>>2]|0;l=l<<2;l=k+l|0;l=c[l>>2]|0;rB(l,d,e);i=f;return}function wB(b,d,e,f,g,j,k){b=b|0;d=+d;e=+e;f=+f;g=+g;j=+j;k=+k;var l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0.0;m=i;l=b+28|0;n=c[l>>2]|0;if((a[b]&1)==0){p=n;o=b+24|0;p=p+ -1|0;o=c[o>>2]|0;p=p<<2;p=o+p|0;p=c[p>>2]|0;sB(p,d,e,f,g,j,k);i=m;return}o=b+32|0;p=c[o>>2]|0;if((n|0)<(p|0)){n=b+24|0}else{p=p+16|0;c[o>>2]=p;n=b+24|0;c[n>>2]=Ce(c[n>>2]|0,p,4)|0}p=FW(24)|0;t=+h[b+8>>3];r=+h[b+16>>3];c[p+16>>2]=16;s=ye(16,8)|0;c[p>>2]=s;q=p+4|0;c[q>>2]=ye(16,8)|0;o=p+8|0;c[o>>2]=ye(16,1)|0;c[p+12>>2]=1;h[s>>3]=t;h[c[q>>2]>>3]=r;a[c[o>>2]|0]=0;a[p+20|0]=0;c[(c[n>>2]|0)+(c[l>>2]<<2)>>2]=p;p=(c[l>>2]|0)+1|0;c[l>>2]=p;a[b]=0;o=n;p=p+ -1|0;o=c[o>>2]|0;p=p<<2;p=o+p|0;p=c[p>>2]|0;sB(p,d,e,f,g,j,k);i=m;return}function xB(b){b=b|0;var d=0,e=0,f=0.0,g=0,j=0,k=0.0,l=0,m=0,n=0;d=i;e=b+28|0;j=c[e>>2]|0;if((a[b]&1)==0){g=b+24|0}else{g=b+32|0;l=c[g>>2]|0;if((j|0)<(l|0)){g=b+24|0}else{l=l+16|0;c[g>>2]=l;g=b+24|0;c[g>>2]=Ce(c[g>>2]|0,l,4)|0}j=FW(24)|0;f=+h[b+8>>3];k=+h[b+16>>3];n=j+16|0;c[n>>2]=16;c[j>>2]=ye(16,8)|0;m=j+4|0;c[m>>2]=ye(c[n>>2]|0,8)|0;l=j+8|0;c[l>>2]=ye(c[n>>2]|0,1)|0;c[j+12>>2]=1;h[c[j>>2]>>3]=f;h[c[m>>2]>>3]=k;a[c[l>>2]|0]=0;a[j+20|0]=0;c[(c[g>>2]|0)+(c[e>>2]<<2)>>2]=j;j=(c[e>>2]|0)+1|0;c[e>>2]=j;a[b]=0}b=c[(c[g>>2]|0)+(j+ -1<<2)>>2]|0;g=(c[b+12>>2]|0)+ -1|0;n=c[b>>2]|0;f=+h[n>>3];e=c[b+4>>2]|0;do{if(+h[n+(g<<3)>>3]!=f){k=+h[e>>3]}else{k=+h[e>>3];if(+h[e+(g<<3)>>3]!=k){break}n=b+20|0;a[n]=1;i=d;return}}while(0);rB(b,f,k);n=b+20|0;a[n]=1;i=d;return}function yB(a,b){a=a|0;b=b|0;var d=0;d=i;c[a>>2]=b;bX(a+4|0,0,16)|0;if((c[b+28>>2]|0)==0){i=d;return}b=c[c[b+24>>2]>>2]|0;c[a+16>>2]=b;c[a+12>>2]=c[b+12>>2];i=d;return}function zB(a){a=a|0;i=i;return(c[a+8>>2]|0)>=(c[a+12>>2]|0)|0}function AB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=a+8|0;g=(c[d>>2]|0)+1|0;c[d>>2]=g;e=a+12|0;if((g|0)!=(c[e>>2]|0)){i=b;return}f=a+4|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;f=c[a>>2]|0;if((g|0)>=(c[f+28>>2]|0)){i=b;return}c[d>>2]=0;g=c[(c[f+24>>2]|0)+(g<<2)>>2]|0;c[a+16>>2]=g;c[e>>2]=c[g+12>>2];i=b;return}function BB(a,b,d){a=a|0;b=+b;d=+d;var e=0;e=a+16|0;a=a+8|0;h[(c[c[e>>2]>>2]|0)+(c[a>>2]<<3)>>3]=b;h[(c[(c[e>>2]|0)+4>>2]|0)+(c[a>>2]<<3)>>3]=d;i=i;return}function CB(a){a=a|0;var b=0;c[a+8>>2]=0;c[a+4>>2]=0;b=c[c[(c[a>>2]|0)+24>>2]>>2]|0;c[a+16>>2]=b;c[a+12>>2]=c[b+12>>2];i=i;return}function DB(b,d,e,f,g,j){b=b|0;d=+d;e=+e;f=f|0;g=g|0;j=j|0;var k=0.0,l=0.0,m=0.0,n=0,o=0.0,p=0.0;n=i;h[b>>3]=d;h[b+8>>3]=e;c[b+112>>2]=g;l=+h[f>>3];h[b+64>>3]=l;m=+h[f+8>>3];h[b+72>>3]=m;k=+h[f+16>>3];h[b+80>>3]=k;o=+h[f+24>>3];h[b+88>>3]=o;d=d/72.0;e=e/72.0;if((g|0)==180){h[b+16>>3]=-0.0-d;bX(b+24|0,0,16)|0;if(j){h[b+40>>3]=e;h[b+48>>3]=d*k;p=-0.0-m}else{h[b+40>>3]=-0.0-e;h[b+48>>3]=d*k;p=o}h[b+56>>3]=e*p;h[b+96>>3]=d*(k-l);h[b+104>>3]=e*(o-m)}else if((g|0)==90){h[b+16>>3]=0.0;if(j){p=e;j=1}else{p=-0.0-e}h[b+24>>3]=p;h[b+32>>3]=d;h[b+40>>3]=0.0;h[b+48>>3]=-0.0-d*m;if(j){p=-0.0-l}else{p=k}h[b+56>>3]=e*p;h[b+96>>3]=d*(o-m);h[b+104>>3]=e*(k-l)}else if((g|0)==270){h[b+16>>3]=0.0;if(j){p=-0.0-e}else{p=e;j=0}h[b+24>>3]=p;h[b+32>>3]=-0.0-d;h[b+40>>3]=0.0;h[b+48>>3]=d*o;if(j){p=k}else{p=-0.0-l}h[b+56>>3]=e*p;h[b+96>>3]=d*(o-m);h[b+104>>3]=e*(k-l)}else{h[b+16>>3]=d;bX(b+24|0,0,16)|0;if(j){h[b+40>>3]=-0.0-e;h[b+48>>3]=-0.0-d*l;p=o}else{h[b+40>>3]=e;h[b+48>>3]=-0.0-d*l;p=-0.0-m}h[b+56>>3]=e*p;h[b+96>>3]=d*(k-l);h[b+104>>3]=e*(o-m)}f=FW(4)|0;c[f>>2]=168128;c[b+116>>2]=f;f=FW(4)|0;c[f>>2]=168128;c[b+120>>2]=f;c[b+124>>2]=0;c[b+252>>2]=0;c[b+380>>2]=0;c[b+384>>2]=0;c[b+388>>2]=0;h[b+392>>3]=1.0;h[b+400>>3]=1.0;a[b+408|0]=0;a[b+409|0]=0;bX(b+412|0,0,16)|0;h[b+432>>3]=1.0;bX(b+440|0,0,16)|0;c[b+456>>2]=1;c[b+460>>2]=0;c[b+464>>2]=0;h[b+472>>3]=10.0;a[b+480|0]=0;c[b+484>>2]=0;h[b+488>>3]=0.0;h[b+496>>3]=1.0;bX(b+504|0,0,16)|0;h[b+520>>3]=1.0;bX(b+528|0,0,32)|0;h[b+560>>3]=1.0;bX(b+568|0,0,20)|0;f=FW(40)|0;a[f]=0;c[f+32>>2]=16;c[f+28>>2]=0;bX(f+8|0,0,16)|0;c[f+24>>2]=ye(16,4)|0;c[b+588>>2]=f;bX(b+592|0,0,48)|0;h[b+640>>3]=+h[b+96>>3];h[b+648>>3]=+h[b+104>>3];c[b+656>>2]=0;i=n;return}function EB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;d=c[a+116>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+120>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+380>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+384>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+412>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+416>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+420>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}d=c[a+424>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d)}Fe(c[a+440>>2]|0);d=c[a+588>>2]|0;if((d|0)!=0){f=d+28|0;g=c[f>>2]|0;e=d+24|0;j=c[e>>2]|0;if((g|0)>0){h=0;do{k=c[j+(h<<2)>>2]|0;if((k|0)!=0){Fe(c[k>>2]|0);Fe(c[k+4>>2]|0);Fe(c[k+8>>2]|0);HW(k);j=c[e>>2]|0;g=c[f>>2]|0}h=h+1|0;}while((h|0)<(g|0))}Fe(j);HW(d)}d=c[a+656>>2]|0;if((d|0)!=0){EB(d);HW(d)}a=c[a+484>>2]|0;if((a|0)==0){i=b;return}Yx(a);i=b;return}function FB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;$W(a|0,b|0,664)|0;e=a+116|0;if((c[e>>2]|0)!=0){f=c[b+116>>2]|0;c[e>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0}e=a+120|0;if((c[e>>2]|0)!=0){f=c[b+120>>2]|0;c[e>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0}e=a+380|0;if((c[e>>2]|0)!=0){f=c[b+380>>2]|0;c[e>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0}e=a+384|0;if((c[e>>2]|0)!=0){f=c[b+384>>2]|0;c[e>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0}e=a+412|0;if((c[e>>2]|0)!=0){f=c[b+412>>2]|0;c[e>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0}e=a+416|0;if((c[e>>2]|0)!=0){f=c[b+416>>2]|0;c[e>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0}e=a+420|0;if((c[e>>2]|0)!=0){f=c[b+420>>2]|0;c[e>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0}e=a+424|0;if((c[e>>2]|0)!=0){f=c[b+424>>2]|0;c[e>>2]=jd[c[(c[f>>2]|0)+8>>2]&511](f)|0}e=a+444|0;f=c[e>>2]|0;if((f|0)>0){f=ye(f,8)|0;c[a+440>>2]=f;$W(f|0,c[b+440>>2]|0,c[e>>2]<<3|0)|0}b=c[a+484>>2]|0;if((b|0)==0){f=a+656|0;c[f>>2]=0;i=d;return}Xx(b);f=a+656|0;c[f>>2]=0;i=d;return}function GB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;a=a+588|0;e=c[a>>2]|0;if((e|0)==0){l=a;c[l>>2]=b;i=d;return}g=e+28|0;h=c[g>>2]|0;f=e+24|0;k=c[f>>2]|0;if((h|0)>0){j=0;do{l=c[k+(j<<2)>>2]|0;if((l|0)!=0){Fe(c[l>>2]|0);Fe(c[l+4>>2]|0);Fe(c[l+8>>2]|0);HW(l);k=c[f>>2]|0;h=c[g>>2]|0}j=j+1|0;}while((j|0)<(h|0))}Fe(k);HW(e);l=a;c[l>>2]=b;i=d;return}function HB(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.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;f=i;q=+h[a+16>>3];k=+h[a+40>>3];o=+h[a+24>>3];n=+h[a+32>>3];t=1.0/(q*k-o*n);r=k*t;s=-0.0-o*t;l=-0.0-n*t;m=q*t;g=+h[a+56>>3];p=+h[a+48>>3];k=t*(n*g-k*p);g=t*(o*p-q*g);q=+h[a+624>>3];p=r*q;o=+h[a+632>>3];t=o*l;n=k+(p+t);q=q*s;o=m*o;u=g+(q+o);j=+h[a+648>>3];l=j*l;p=k+(p+l);j=m*j;q=g+(q+j);do{if(p>3];r=r*u;t=k+(r+t);s=u*s;o=g+(s+o);do{if(t>3]=p;h[c>>3]=q;h[d>>3]=m;h[e>>3]=n;i=f;return}function IB(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h[a+16>>3]=b;h[a+24>>3]=c;h[a+32>>3]=d;h[a+40>>3]=e;h[a+48>>3]=f;h[a+56>>3]=g;i=i;return}function JB(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0,p=0,q=0;q=a+16|0;n=+h[q>>3];p=a+24|0;k=+h[p>>3];o=a+32|0;m=+h[o>>3];l=a+40|0;j=+h[l>>3];h[q>>3]=n*b+m*c;h[p>>3]=k*b+j*c;h[o>>3]=n*d+m*e;h[l>>3]=k*d+j*e;l=a+48|0;h[l>>3]=n*f+m*g+ +h[l>>3];a=a+56|0;h[a>>3]=k*f+j*g+ +h[a>>3];i=i;return}function KB(a,b,c){a=a|0;b=+b;c=+c;var d=0;d=a+48|0;h[d>>3]=+h[d>>3]+b;d=a+56|0;h[d>>3]=+h[d>>3]+c;d=a+624|0;h[d>>3]=+h[d>>3]+b;d=a+632|0;h[d>>3]=+h[d>>3]+c;d=a+640|0;h[d>>3]=+h[d>>3]+b;a=a+648|0;h[a>>3]=+h[a>>3]+c;i=i;return}function LB(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;a=a+116|0;e=c[a>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+4>>2]&511](e)}c[a>>2]=b;i=d;return}function MB(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;a=a+120|0;e=c[a>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+4>>2]&511](e)}c[a>>2]=b;i=d;return}function NB(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;a=a+380|0;e=c[a>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+4>>2]&511](e)}c[a>>2]=b;i=d;return}function OB(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;a=a+384|0;e=c[a>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+4>>2]&511](e)}c[a>>2]=b;i=d;return}function PB(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;e=i;f=a+484|0;g=c[f>>2]|0;if((g|0)!=0){Yx(g)}c[f>>2]=b;h[a+488>>3]=d;i=e;return}function QB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;f=a+412|0;e=c[f>>2]|0;if((e|0)!=0){fd[c[(c[e>>2]|0)+4>>2]&511](e)}c[f>>2]=c[b>>2];e=a+416|0;f=c[e>>2]|0;if((f|0)!=0){fd[c[(c[f>>2]|0)+4>>2]&511](f)}c[e>>2]=c[b+4>>2];e=a+420|0;f=c[e>>2]|0;if((f|0)!=0){fd[c[(c[f>>2]|0)+4>>2]&511](f)}c[e>>2]=c[b+8>>2];a=a+424|0;e=c[a>>2]|0;if((e|0)==0){e=b+12|0;e=c[e>>2]|0;f=a;c[f>>2]=e;i=d;return}fd[c[(c[e>>2]|0)+4>>2]&511](e);e=b+12|0;e=c[e>>2]|0;f=a;c[f>>2]=e;i=d;return}function RB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0,j=0;f=i;g=a+440|0;j=c[g>>2]|0;if((j|0)!=0){Fe(j)}c[g>>2]=b;c[a+444>>2]=d;h[a+448>>3]=e;i=f;return}function SB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;e=b+588|0;b=c[e>>2]|0;if((b|0)!=0){g=b+28|0;h=c[g>>2]|0;f=b+24|0;k=c[f>>2]|0;if((h|0)>0){j=0;do{l=c[k+(j<<2)>>2]|0;if((l|0)!=0){Fe(c[l>>2]|0);Fe(c[l+4>>2]|0);Fe(c[l+8>>2]|0);HW(l);k=c[f>>2]|0;h=c[g>>2]|0}j=j+1|0;}while((j|0)<(h|0))}Fe(k);HW(b)}l=FW(40)|0;a[l]=0;c[l+32>>2]=16;c[l+28>>2]=0;bX(l+8|0,0,16)|0;c[l+24>>2]=ye(16,4)|0;c[e>>2]=l;i=d;return}function TB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;b=i;m=c[a+588>>2]|0;d=c[m+28>>2]|0;if((d|0)>0){e=a+16|0;f=a+32|0;g=a+48|0;j=a+24|0;k=a+40|0;l=a+56|0;m=c[m+24>>2]|0;n=0;y=0.0;A=0.0;z=0.0;B=0.0;do{u=c[m+(n<<2)>>2]|0;p=c[u+12>>2]|0;if((p|0)>0){o=c[u>>2]|0;u=c[u+4>>2]|0;s=+h[e>>3];r=+h[f>>3];t=+h[g>>3];w=+h[j>>3];v=+h[k>>3];q=+h[l>>3];x=0;C=B;while(1){E=+h[o+(x<<3)>>3];B=+h[u+(x<<3)>>3];D=t+(E*s+B*r);B=q+(E*w+B*v);do{if((x|n|0)==0){y=D;A=D;z=B}else{do{if(D+h[d>>3]){h[d>>3]=A}d=a+632|0;if(B>+h[d>>3]){h[d>>3]=B}d=a+640|0;if(y<+h[d>>3]){h[d>>3]=y}a=a+648|0;if(z>=+h[a>>3]){i=b;return}h[a>>3]=z;i=b;return}function UB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;b=i;m=c[a+588>>2]|0;f=c[m+28>>2]|0;e=a+16|0;d=a+32|0;if((f|0)>0){j=a+48|0;k=a+24|0;g=a+40|0;l=a+56|0;m=c[m+24>>2]|0;n=0;z=0.0;B=0.0;y=0.0;A=0.0;do{w=c[m+(n<<2)>>2]|0;p=c[w+12>>2]|0;if((p|0)>0){o=c[w>>2]|0;w=c[w+4>>2]|0;u=+h[e>>3];t=+h[d>>3];v=+h[j>>3];r=+h[k>>3];q=+h[g>>3];s=+h[l>>3];x=0;C=A;while(1){E=+h[o+(x<<3)>>3];A=+h[w+(x<<3)>>3];D=v+(E*u+A*t);A=s+(E*r+A*q);do{if((x|n|0)==0){z=D;B=D;y=A}else{do{if(D>3]));q=+S(+(+h[d>>3]));t=+h[a+432>>3]*.5;q=t*(r>q?r:q);s=B-q;q=z+q;u=+S(+(+h[g>>3]));t=t*(r>u?r:u);r=y+t;t=A-t;d=a+624|0;if(s>+h[d>>3]){h[d>>3]=s}d=a+632|0;if(t>+h[d>>3]){h[d>>3]=t}d=a+640|0;if(q<+h[d>>3]){h[d>>3]=q}a=a+648|0;if(r>=+h[a>>3]){i=b;return}h[a>>3]=r;i=b;return}function VB(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0;d=+h[a+504>>3]*b+ +h[a+520>>3]*c;e=a+592|0;h[e>>3]=+h[a+496>>3]*b+ +h[a+512>>3]*c+ +h[e>>3];a=a+600|0;h[a>>3]=+h[a>>3]+d;i=i;return}function WB(a,b,c){a=a|0;b=+b;c=+c;var d=0;d=a+592|0;h[d>>3]=+h[d>>3]+b;a=a+600|0;h[a>>3]=+h[a>>3]+c;i=i;return}function XB(a){a=a|0;var b=0,d=0;d=i;b=FW(664)|0;FB(b,a);c[b+656>>2]=a;i=d;return b|0}function YB(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;e=a+656|0;d=c[e>>2]|0;if((d|0)==0){e=a;i=b;return e|0}f=a+588|0;c[d+588>>2]=c[f>>2];h[d+592>>3]=+h[a+592>>3];h[d+600>>3]=+h[a+600>>3];h[d+608>>3]=+h[a+608>>3];h[d+616>>3]=+h[a+616>>3];c[f>>2]=0;c[e>>2]=0;EB(a);HW(a);e=d;i=b;return e|0}function ZB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;a=i;f=i;i=i+8|0;g=f;j=i;i=i+16|0;h=j;c[j>>2]=13;k=h+8|0;c[k>>2]=0;c[k+4>>2]=0;l=c[b>>2]|0;if((l|0)==4){f=b+8|0;g=0;while(1){b=g+1|0;if((Qc(c[f>>2]|0,c[171536+(g<<3)>>2]|0)|0)==0){break}if((b|0)<17){g=b}else{d=0;e=16;break}}if((e|0)==16){i=a;return d|0}c[d>>2]=c[171540+(g<<3)>>2];n=1;i=a;return n|0}else if((l|0)==6){e=b+8|0;l=0;a:while(1){m=c[e>>2]|0;if((l|0)>=(c[m+12>>2]|0)){e=15;break}ut(m,l,h)|0;if((c[j>>2]|0)==4){m=0}else{e=10;break}while(1){n=m+1|0;if((Qc(c[k>>2]|0,c[171536+(m<<3)>>2]|0)|0)==0){e=13;break a}if((n|0)<17){m=n}else{break}}Of(h);m=c[b>>2]|0;if((m|0)==6){l=l+1|0}else{e=7;break}}if((e|0)==7){c[f>>2]=m;c[g+4>>2]=6;Qe(0,172720,g);tc()}else if((e|0)==10){Of(h);n=0;i=a;return n|0}else if((e|0)==13){Of(h);c[d>>2]=c[171540+(m<<3)>>2];n=1;i=a;return n|0}else if((e|0)==15){c[d>>2]=0;n=1;i=a;return n|0}}else{n=0;i=a;return n|0}return 0}function _B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;i=i;return}function $B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;i=i;return}function aC(a){a=a|0;i=i;return 0}function bC(a){a=a|0;i=i;return 0}function cC(a){a=a|0;i=i;return 0}function dC(a){a=a|0;i=i;return 0}function eC(a){a=a|0;i=i;return-1}function fC(a){a=a|0;i=i;return-1}function gC(a){a=a|0;i=i;return 1}function hC(a){a=a|0;i=i;return 2}function iC(a){a=a|0;i=i;return-1}function jC(a){a=a|0;i=i;return-1}function kC(a){a=a|0;i=i;return 3}function lC(a){a=a|0;i=i;return 4}function mC(a){a=a|0;i=i;return 4}function nC(a){a=a|0;i=i;return 10}function oC(a){a=a|0;i=i;return 0}function pC(a){a=a|0;i=i;return 1}function qC(a){a=a|0;i=i;return 1}function rC(a){a=a|0;i=i;return 3}function sC(a){a=a|0;i=i;return 3}function tC(a){a=a|0;i=i;return 5}function uC(a){a=a|0;i=i;return 3}function vC(a){a=a|0;i=i;return 6}function wC(a){a=a|0;i=i;return c[a+4>>2]|0}function xC(a){a=a|0;i=i;return 7}function yC(a){a=a|0;i=i;return-1}function zC(a){a=a|0;i=i;return 1}function AC(a){a=a|0;i=i;return 8}function BC(a){a=a|0;i=i;return 1}function CC(b){b=b|0;i=i;return(a[b+16|0]&1)!=0|0}function DC(a){a=a|0;i=i;return 9}function EC(a){a=a|0;i=i;return c[a+4>>2]|0}function FC(b){b=b|0;i=i;return(a[b+144|0]&1)!=0|0}function GC(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;j=i;i=i+8|0;l=i;i=i+8|0;k=l;q=i;i=i+8|0;p=q;c[a+16>>2]=sE(d)|0;g=a+20|0;c[g>>2]=rE(d)|0;c[a+24>>2]=tE(d)|0;c[a+36>>2]=qE(d)|0;o=pE(d)|0;n=a+28|0;c[n>>2]=o;if((o|0)<0){m=3}else{if((o|0)>=(c[e+16>>2]|0)){m=3}}if((m|0)==3){c[q>>2]=o;Qe(-1,172872,p);c[n>>2]=0;o=0}c[a+32>>2]=c[(kn(e,o)|0)>>2];m=c[g>>2]|0;if((m|0)>536870910){c[l>>2]=m;Qe(-1,172944,k);c[g>>2]=0;m=0}q=a+96|0;c[q>>2]=ze(m,4)|0;m=a+100|0;c[m>>2]=ze(c[g>>2]|0,4)|0;p=a+104|0;c[p>>2]=ze(c[g>>2]|0,4)|0;o=a+108|0;c[o>>2]=ze(c[g>>2]|0,4)|0;n=a+112|0;c[n>>2]=ze(c[g>>2]|0,4)|0;l=a+116|0;c[l>>2]=ze(c[g>>2]|0,4)|0;k=ze(c[g>>2]|0,4)|0;c[a+120>>2]=k;do{if((c[q>>2]|0)!=0){if((c[m>>2]|0)==0){break}if((c[p>>2]|0)==0){break}if((c[o>>2]|0)==0){break}if((c[n>>2]|0)==0){break}m=c[l>>2]|0;if((m|0)==0|(k|0)==0){break}q=c[g>>2]<<2;p=m;bX(p|0,0,q|0)|0;q=a+124|0;bX(q|0,0,24)|0;HC(a,b,d,e,f);i=h;return}}while(0);Qe(-1,172992,j);c[g>>2]=0;q=0;p=c[l>>2]|0;bX(p|0,0,q|0)|0;q=a+124|0;bX(q|0,0,24)|0;HC(a,b,d,e,f);i=h;return}function HC(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0;l=i;r=i;i=i+8|0;n=i;i=i+8|0;o=i;i=i+8|0;p=o;t=i;i=i+8|0;u=t;v=i;i=i+8|0;w=v;q=i;i=i+16|0;k=q;j=i;i=i+8|0;m=j;c[b>>2]=lE(e)|0;B=b+4|0;c[B>>2]=mE(e)|0;A=b+8|0;c[A>>2]=nE(e)|0;z=oE(e)|0;x=b+12|0;c[x>>2]=z;c[q>>2]=13;e=k+8|0;c[e>>2]=0;y=e+4|0;c[y>>2]=0;C=c[B>>2]|0;z=z+C|0;if((z|0)==0){s=0}else{if((z|0)<0){wn(0)}s=FW(z)|0;D=s;C=z;while(1){if((D|0)==0){D=0}else{a[D]=0}C=C+ -1|0;if((C|0)==0){break}else{D=D+1|0}}C=c[B>>2]|0}c[e>>2]=0;c[y>>2]=0;c[q>>2]=5;C=Cd[c[(c[d>>2]|0)+96>>2]&63](d,c[b>>2]|0,0,C,k)|0;fd[c[(c[C>>2]|0)+12>>2]&511](C);if((c[B>>2]|0)==0){D=s}else{F=0;E=s;while(1){D=E+1|0;a[E]=jd[c[(c[C>>2]|0)+20>>2]&511](C)|0;F=F+1|0;if(F>>>0<(c[B>>2]|0)>>>0){E=D}else{break}}}if((C|0)!=0){fd[c[(c[C>>2]|0)+4>>2]&511](C)}A=c[A>>2]|0;do{if((A|0)!=0){B=c[x>>2]|0;if((B|0)==0){break}c[e>>2]=0;c[y>>2]=0;c[q>>2]=5;d=Cd[c[(c[d>>2]|0)+96>>2]&63](d,A,0,B,k)|0;fd[c[(c[d>>2]|0)+12>>2]&511](d);if((c[x>>2]|0)!=0){A=0;while(1){a[D]=jd[c[(c[d>>2]|0)+20>>2]&511](d)|0;A=A+1|0;if(A>>>0<(c[x>>2]|0)>>>0){D=D+1|0}else{break}}}if((d|0)==0){break}fd[c[(c[d>>2]|0)+4>>2]&511](d)}}while(0);c[e>>2]=0;c[y>>2]=0;c[q>>2]=5;E=FW(56)|0;Tj(E,s,0,z,k);c[e>>2]=0;c[y>>2]=0;c[q>>2]=5;x=FW(56)|0;F=FW(168)|0;bE(F,f,E);aG(x,f,F,1);do{if((c[(cG(x,k,0,0,0,0,0)|0)>>2]|0)==1){f=c[q>>2]|0;if((f|0)!=1){c[v>>2]=f;c[w+4>>2]=1;Qe(0,173432,w);tc()}v=c[e>>2]|0;Of(k);if((c[(cG(x,k,0,0,0,0,0)|0)>>2]|0)!=1){h=40;break}w=c[q>>2]|0;if((w|0)!=1){c[t>>2]=w;c[u+4>>2]=1;Qe(0,173432,u);tc()}t=c[e>>2]|0;Of(k);u=cG(x,k,0,0,0,0,0)|0;if((c[u>>2]|0)!=10){h=40;break}if((Qc(c[u+8>>2]|0,173040)|0)!=0){h=40;break}Of(k);if((g|0)==0){u=0;w=0;g=0}else{w=jd[c[(c[g>>2]|0)+32>>2]&511](g)|0;u=jd[c[(c[g>>2]|0)+48>>2]&511](g)|0;g=jd[c[(c[g>>2]|0)+36>>2]&511](g)|0}if((c[(cG(x,k,w,u,g,v,t)|0)>>2]|0)!=8){h=40;break}q=c[q>>2]|0;if((q|0)!=8){c[o>>2]=q;c[p+4>>2]=8;Qe(0,173432,p);tc()}o=c[e>>2]|0;F=jd[c[(c[o>>2]|0)+72>>2]&511](o)|0;c[j>>2]=0;F=_u(F,173048,0,m)|0;if(!(F&(c[j>>2]|0)>0)){Qe(-1,173056,n);break}fd[c[(c[o>>2]|0)+12>>2]&511](o);JC(b,o);fd[c[(c[o>>2]|0)+12>>2]&511](o);if((c[j>>2]|0)>0){m=0;do{jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;m=m+1|0;}while((m|0)<(c[j>>2]|0))}KC(b,o)}else{h=40}}while(0);if((h|0)==40){Qe(-1,173096,r)}Of(k);if((x|0)!=0){bG(x);HW(x)}if((s|0)==0){i=l;return}HW(s);i=l;return}function IC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;Fe(c[a+96>>2]|0);Fe(c[a+100>>2]|0);Fe(c[a+104>>2]|0);Fe(c[a+108>>2]|0);Fe(c[a+112>>2]|0);f=a+20|0;g=c[f>>2]|0;if((g|0)>0){d=a+116|0;e=a+120|0;h=0;do{if((c[(c[d>>2]|0)+(h<<2)>>2]|0)!=0){Fe(c[(c[e>>2]|0)+(h<<2)>>2]|0);g=c[f>>2]|0}h=h+1|0;}while((h|0)<(g|0))}else{e=a+120|0;d=a+116|0}Fe(c[e>>2]|0);Fe(c[d>>2]|0);Fe(c[a+128>>2]|0);Fe(c[a+132>>2]|0);Fe(c[a+136>>2]|0);Fe(c[a+140>>2]|0);Fe(c[a+144>>2]|0);i=b;return}function JC(a,b){a=a|0;b=b|0;var 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;e=i;h=i;i=i+8|0;g=i;i=i+8|0;f=i;i=i+8|0;d=a+20|0;if((c[d>>2]|0)<1){Qe(-1,173136,f);i=e;return}j=a+148|0;c[j>>2]=0;o=a+44|0;c[o>>2]=LC(a,32,b)|0;k=LC(a,32,b)|0;f=a+48|0;c[f>>2]=k;if(k>>>0>=(c[a>>2]|0)>>>0){c[f>>2]=(c[a+4>>2]|0)+k}p=a+52|0;c[p>>2]=LC(a,16,b)|0;m=a+56|0;c[m>>2]=LC(a,32,b)|0;l=a+60|0;c[l>>2]=LC(a,16,b)|0;c[a+64>>2]=LC(a,32,b)|0;c[a+68>>2]=LC(a,16,b)|0;c[a+72>>2]=LC(a,32,b)|0;c[a+76>>2]=LC(a,16,b)|0;k=a+80|0;c[k>>2]=LC(a,16,b)|0;f=a+84|0;c[f>>2]=LC(a,16,b)|0;c[a+88>>2]=LC(a,16,b)|0;c[a+92>>2]=LC(a,16,b)|0;n=a+96|0;if((c[d>>2]|0)>0){q=0;do{r=c[o>>2]|0;r=(LC(a,c[p>>2]|0,b)|0)+r|0;c[(c[n>>2]|0)+(q<<2)>>2]=r;q=q+1|0;}while((q|0)<(c[d>>2]|0))}c[c[n>>2]>>2]=0;o=a+104|0;c[c[o>>2]>>2]=(c[a+16>>2]|0)+20;if((c[d>>2]|0)>1){p=1;do{q=p+ -1|0;r=c[o>>2]|0;c[r+(p<<2)>>2]=((c[(c[n>>2]|0)+(q<<2)>>2]|0)*20|0)+(c[r+(q<<2)>>2]|0);p=p+1|0;}while((p|0)<(c[d>>2]|0))}o=a+100|0;c[c[o>>2]>>2]=1;if((c[d>>2]|0)>1){p=1;do{q=p+ -1|0;r=c[o>>2]|0;c[r+(p<<2)>>2]=(c[(c[n>>2]|0)+(q<<2)>>2]|0)+(c[r+(q<<2)>>2]|0);p=p+1|0;}while((p|0)<(c[d>>2]|0))}c[c[o>>2]>>2]=c[a+28>>2];c[j>>2]=0;if((c[d>>2]|0)>0){o=a+108|0;n=0;do{r=c[m>>2]|0;r=(LC(a,c[l>>2]|0,b)|0)+r|0;c[(c[o>>2]|0)+(n<<2)>>2]=r;n=n+1|0;}while((n|0)<(c[d>>2]|0))}c[j>>2]=0;m=LC(a,c[k>>2]|0,b)|0;l=a+116|0;c[c[l>>2]>>2]=m;c[c[l>>2]>>2]=0;m=a+120|0;c[c[m>>2]>>2]=0;do{if((c[d>>2]|0)>1){n=1;while(1){o=LC(a,c[k>>2]|0,b)|0;c[(c[l>>2]|0)+(n<<2)>>2]=o;o=c[(c[l>>2]|0)+(n<<2)>>2]|0;if(o>>>0>536870910){k=17;break}r=ze(o,4)|0;c[(c[m>>2]|0)+(n<<2)>>2]=r;if((c[(c[l>>2]|0)+(n<<2)>>2]|0)!=0){if((c[(c[m>>2]|0)+(n<<2)>>2]|0)==0){k=20;break}}o=n+1|0;n=c[d>>2]|0;if((o|0)<(n|0)){n=o}else{k=22;break}}if((k|0)==17){Qe(-1,173192,g);c[(c[l>>2]|0)+(n<<2)>>2]=0;i=e;return}else if((k|0)==20){Qe(-1,173232,h);c[(c[l>>2]|0)+(n<<2)>>2]=0;i=e;return}else if((k|0)==22){c[j>>2]=0;if((n|0)<=1){break}h=c[l>>2]|0;g=1;do{if((c[h+(g<<2)>>2]|0)!=0){j=0;do{h=LC(a,c[f>>2]|0,b)|0;c[(c[(c[m>>2]|0)+(g<<2)>>2]|0)+(j<<2)>>2]=h;j=j+1|0;h=c[l>>2]|0;}while(j>>>0<(c[h+(g<<2)>>2]|0)>>>0);n=c[d>>2]|0}g=g+1|0;}while((g|0)<(n|0))}}else{c[j>>2]=0}}while(0);b=a+112|0;c[c[b>>2]>>2]=c[a+32>>2];if((c[d>>2]|0)<=1){i=e;return}a=a+108|0;f=1;do{q=f+ -1|0;r=c[b>>2]|0;c[r+(f<<2)>>2]=(c[(c[a>>2]|0)+(q<<2)>>2]|0)+(c[r+(q<<2)>>2]|0);f=f+1|0;}while((f|0)<(c[d>>2]|0));i=e;return}function KC(b,d){b=b|0;d=d|0;var 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;f=i;u=i;i=i+8|0;g=i;i=i+8|0;h=i;i=i+8|0;m=b+148|0;c[m>>2]=0;j=LC(b,32,d)|0;s=LC(b,32,d)|0;s=(c[b+4>>2]|0)+s|0;k=LC(b,32,d)|0;e=LC(b,32,d)|0;l=LC(b,16,d)|0;p=LC(b,32,d)|0;t=LC(b,16,d)|0;if((e|0)==0|e>>>0>536870910){Qe(-1,173280,h);i=f;return}if((k|0)==0|k>>>0>e>>>0){Qe(-1,173320,g);k=e}r=b+128|0;c[r>>2]=ze(e,4)|0;q=b+132|0;c[q>>2]=ze(e,4)|0;o=b+136|0;c[o>>2]=ze(e,4)|0;h=b+140|0;c[h>>2]=ze(e,4)|0;v=ze(e,4)|0;g=b+144|0;c[g>>2]=v;do{if((c[r>>2]|0)!=0){if((c[q>>2]|0)==0){break}if((c[o>>2]|0)==0){break}if((c[h>>2]|0)==0|(v|0)==0){break}c[m>>2]=0;u=0;do{v=(LC(b,t,d)|0)+p|0;c[(c[r>>2]|0)+(u<<2)>>2]=v;u=u+1|0;}while(u>>>0>>0);c[c[q>>2]>>2]=c[b+48>>2];if(k>>>0>1){p=1;do{u=p+ -1|0;v=c[q>>2]|0;c[v+(p<<2)>>2]=(c[(c[r>>2]|0)+(u<<2)>>2]|0)+(c[v+(u<<2)>>2]|0);p=p+1|0;}while(p>>>0>>0)}p=e>>>0>k>>>0;do{if(p){c[(c[q>>2]|0)+(k<<2)>>2]=s;s=k+1|0;if(s>>>0>>0){u=k}else{break}while(1){t=c[q>>2]|0;c[t+(s<<2)>>2]=(c[(c[r>>2]|0)+(u<<2)>>2]|0)+(c[t+(u<<2)>>2]|0);t=s+1|0;if(t>>>0>>0){u=s;s=t}else{break}}}}while(0);c[m>>2]=0;q=b+152|0;t=0;r=0;while(1){do{if((t|0)==0){s=jd[c[(c[d>>2]|0)+20>>2]&511](d)|0;if((s|0)==-1){s=-1;break}s=s&255;a[q]=s;c[m>>2]=8;t=7;n=22}else{s=a[q]|0;t=t+ -1|0;n=22}}while(0);if((n|0)==22){n=0;c[m>>2]=t;s=s<<24>>24>>>t&1}c[(c[o>>2]|0)+(r<<2)>>2]=s;r=r+1|0;if(r>>>0>=e>>>0){break}t=c[m>>2]|0}c[m>>2]=0;n=0;do{if((c[(c[o>>2]|0)+(n<<2)>>2]|0)!=0){LC(b,128,d)|0}n=n+1|0;}while(n>>>0>>0);c[m>>2]=0;if((l|0)==0){d=0;do{c[(c[h>>2]|0)+(d<<2)>>2]=1;d=d+1|0;}while(d>>>0>>0)}else{m=0;do{v=(LC(b,l,d)|0)+1|0;c[(c[h>>2]|0)+(m<<2)>>2]=v;m=m+1|0;}while(m>>>0>>0)}if((k|0)!=0){d=0;do{c[(c[h>>2]|0)+(d<<2)>>2]=0;c[(c[g>>2]|0)+(d<<2)>>2]=0;d=d+1|0;}while(d>>>0>>0)}if(!p){i=f;return}c[(c[g>>2]|0)+(k<<2)>>2]=(c[b+16>>2]|0)+(j*20|0);b=k+1|0;if(b>>>0>=e>>>0){i=f;return}while(1){j=c[g>>2]|0;c[j+(b<<2)>>2]=((c[(c[h>>2]|0)+(k<<2)>>2]|0)*20|0)+(c[j+(k<<2)>>2]|0);j=b+1|0;if(j>>>0>>0){k=b;b=j}else{break}}i=f;return}}while(0);Qe(-1,173376,u);i=f;return}function LC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;if((d|0)<0){l=-1;i=f;return l|0}if((d|0)==0){l=0;i=f;return l|0}h=(d|0)==1;j=b+148|0;l=c[j>>2]|0;do{if((l|0)==0){k=jd[c[(c[e>>2]|0)+20>>2]&511](e)|0;if((k|0)==-1){j=-1;break}k=k&255;a[b+152|0]=k;c[j>>2]=8;l=7;g=7}else{k=a[b+152|0]|0;l=l+ -1|0;g=7}}while(0);if((g|0)==7){c[j>>2]=l;j=k<<24>>24>>>l&1}if(h){l=j;i=f;return l|0}g=d+ -1|0;d=j<>2]|0)<(b|0)){f=0;i=d;return f|0}f=b+ -1|0;e=c[a+24>>2]|0;if((f|0)>(e|0)){f=c[(c[a+100>>2]|0)+(f<<2)>>2]|0;i=d;return f|0}a=c[a+100>>2]|0;if((e|0)<(b|0)){f=c[a>>2]|0;i=d;return f|0}else{f=c[a+(b<<2)>>2]|0;i=d;return f|0}return 0}function NC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;k=d+8|0;if((c[k>>2]|0)==-1){q=0;i=e;return q|0}g=a+8|0;f=a+4|0;j=d;l=0;o=0;p=0;while(1){m=d+(l<<4)+4|0;if(o>>>0<(c[m>>2]|0)>>>0){n=c[g>>2]|0;do{if((n|0)==0){q=c[a>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;c[f>>2]=q;c[g>>2]=8;n=7}else{q=c[f>>2]|0;n=n+ -1|0}c[g>>2]=n;p=q>>>n&1|p<<1;o=o+1|0;}while(o>>>0<(c[m>>2]|0)>>>0)}m=l+1|0;if((p|0)==(c[d+(l<<4)+12>>2]|0)){break}k=d+(m<<4)+8|0;if((c[k>>2]|0)==-1){b=0;h=29;break}else{j=d+(m<<4)|0;l=m}}if((h|0)==29){i=e;return b|0}d=c[k>>2]|0;if((d|0)==-3){h=c[j>>2]|0;j=c[g>>2]|0;d=c[f>>2]|0;do{if(j>>>0<32){d=(1<>2]=0;if(j>>>0>7){while(1){q=c[a>>2]|0;d=(jd[c[(c[q>>2]|0)+20>>2]&511](q)|0)&255|d<<8;j=j+ -8|0;if(j>>>0>7){}else{break}}}if((j|0)==0){break}p=c[a>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;c[f>>2]=p;q=8-j|0;c[g>>2]=q;d=p>>>q&(1<>2]=q;d=d>>>q}}while(0);c[b>>2]=h-d;q=1;i=e;return q|0}else if((d|0)==-2){q=0;i=e;return q|0}else{h=c[j>>2]|0;if((d|0)==32){l=-1}else if((d|0)==0){c[b>>2]=h;q=1;i=e;return q|0}else{l=(1<>2]|0;j=c[f>>2]|0;do{if(k>>>0>>0){j=(1<>2]=0;if(d>>>0>7){while(1){q=c[a>>2]|0;j=(jd[c[(c[q>>2]|0)+20>>2]&511](q)|0)&255|j<<8;d=d+ -8|0;if(d>>>0>7){}else{break}}}if((d|0)==0){break}p=c[a>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;c[f>>2]=p;q=8-d|0;c[g>>2]=q;j=p>>>q&(1<>2]=q;j=j>>>q&l}}while(0);c[b>>2]=j+h;q=1;i=e;return q|0}return 0}function OC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;a=i;e=i;i=i+16|0;a:do{if((d|0)==0){f=0}else{f=0;do{h=f;while(1){g=h+1|0;if((c[b+(h<<4)+4>>2]|0)!=0){break}if(g>>>0>>0){h=g}else{h=g;break}}if((h|0)==(d|0)){break a}else{g=h}b:while(1){do{h=h+1|0;if(h>>>0>=d>>>0){break b}j=c[b+(h<<4)+4>>2]|0;}while((j|0)==0);g=j>>>0<(c[b+(g<<4)+4>>2]|0)>>>0?h:g}if((g|0)!=(f|0)){$W(e|0,b+(g<<4)|0,16)|0;if(g>>>0>f>>>0){while(1){h=g+ -1|0;$W(b+(g<<4)|0,b+(h<<4)|0,16)|0;if(h>>>0>f>>>0){g=h}else{break}}}$W(b+(f<<4)|0,e|0,16)|0}f=f+1|0;}while(f>>>0>>0)}}while(0);$W(b+(f<<4)|0,b+(d<<4)|0,16)|0;if((c[b+8>>2]|0)==-1){i=a;return}c[b+12>>2]=0;if((c[b+24>>2]|0)==-1){i=a;return}g=c[b+4>>2]|0;f=1;e=1;while(1){d=c[b+(f<<4)+4>>2]|0;e=e<>2]=e;f=f+1|0;if((c[b+(f<<4)+8>>2]|0)==-1){break}else{e=e+1|0;g=d}}i=a;return}function PC(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;f=i;i=i+8|0;e=a+8|0;j=c[e>>2]|0;do{if((j|0)==0){h=c[a>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;c[a+4>>2]=h&255;c[e>>2]=8;j=a+12|0;c[j>>2]=(c[j>>2]|0)+1;j=8;h=173504+((h>>>1&127)<<2)|0}else{k=a+4|0;g=c[k>>2]|0;if((j|0)==8){j=8;h=173504+((g>>>1&127)<<2)|0;break}h=173504+((g<<7-j&127)<<2)|0;l=b[h>>1]|0;if(!(l<<16>>16<0|(l<<16>>16|0)>(j|0))){break}l=c[a>>2]|0;l=(jd[c[(c[l>>2]|0)+20>>2]&511](l)|0)&255|g<<8;c[k>>2]=l;h=c[e>>2]|0;j=h+8|0;c[e>>2]=j;k=a+12|0;c[k>>2]=(c[k>>2]|0)+1;h=173504+((l>>>(h+1|0)&127)<<2)|0}}while(0);g=b[h>>1]|0;if(g<<16>>16<0){l=c[a>>2]|0;Qe(jd[c[(c[l>>2]|0)+48>>2]&511](l)|0,174016,f);l=-1;i=d;return l|0}else{c[e>>2]=j-(g<<16>>16);l=b[h+2>>1]|0;i=d;return l|0}return 0}function QC(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;e=i;i=i+8|0;g=a+8|0;h=c[g>>2]|0;if((h|0)==0){h=c[a>>2]|0;c[a+4>>2]=(jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)&255;c[g>>2]=8;h=a+12|0;c[h>>2]=(c[h>>2]|0)+1;h=8}while(1){j=c[a+4>>2]|0;do{if(h>>>0>10){if((j&127<>>0<13){k=j<<12-h}else{k=j>>>(h+ -12|0)}k=174056+((k&31)<<2)|0}else{f=9}}while(0);if((f|0)==9){f=0;if(h>>>0<10){k=j<<9-h}else{k=j>>>(h+ -9|0)}k=174184+((k&511)<<2)|0}m=b[k>>1]|0;l=m<<16>>16;if(!(m<<16>>16<1|(l|0)>(h|0))){f=14;break}if(h>>>0>11){f=17;break}h=c[a>>2]|0;c[a+4>>2]=(jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)&255|j<<8;h=(c[g>>2]|0)+8|0;c[g>>2]=h;m=a+12|0;c[m>>2]=(c[m>>2]|0)+1}if((f|0)==14){c[g>>2]=h-l;m=b[k+2>>1]|0;i=d;return m|0}else if((f|0)==17){m=c[a>>2]|0;Qe(jd[c[(c[m>>2]|0)+48>>2]&511](m)|0,176232,e);c[g>>2]=(c[g>>2]|0)+ -1;m=1;i=d;return m|0}return 0}function RC(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;e=i;i=i+8|0;g=a+8|0;h=c[g>>2]|0;if((h|0)==0){h=c[a>>2]|0;c[a+4>>2]=(jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)&255;c[g>>2]=8;h=a+12|0;c[h>>2]=(c[h>>2]|0)+1;h=8}while(1){j=c[a+4>>2]|0;do{if(h>>>0>9){if((j&63<>>0<14){k=j<<13-h}else{k=j>>>(h+ -13|0)}k=176272+((k&127)<<2)|0}else{f=9}}while(0);a:do{if((f|0)==9){f=0;do{if(h>>>0>6){do{if((15<>>0<13){k=j<<12-h}else{k=j>>>(h+ -12|0)}k=176784+((k&255)+ -64<<2)|0;break a}}while(0);if(h>>>0<7){f=17;break}k=j>>>(h+ -6|0)}else{f=17}}while(0);if((f|0)==17){f=0;k=j<<6-h}k=177552+((k&63)<<2)|0}}while(0);m=b[k>>1]|0;l=m<<16>>16;if(!(m<<16>>16<1|(l|0)>(h|0))){f=21;break}if(h>>>0>12){f=24;break}h=c[a>>2]|0;c[a+4>>2]=(jd[c[(c[h>>2]|0)+20>>2]&511](h)|0)&255|j<<8;h=(c[g>>2]|0)+8|0;c[g>>2]=h;m=a+12|0;c[m>>2]=(c[m>>2]|0)+1}if((f|0)==21){c[g>>2]=h-l;m=b[k+2>>1]|0;i=d;return m|0}else if((f|0)==24){m=c[a>>2]|0;Qe(jd[c[(c[m>>2]|0)+48>>2]&511](m)|0,177808,e);c[g>>2]=(c[g>>2]|0)+ -1;m=1;i=d;return m|0}return 0}function SC(a){a=a|0;var b=0;b=i;c[a>>2]=177856;Fe(c[a+20>>2]|0);HW(a);i=b;return}function TC(a){a=a|0;var b=0;b=i;c[a>>2]=177856;Fe(c[a+20>>2]|0);i=b;return}function UC(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;j=i;p=i;i=i+8|0;l=FW(24)|0;c[l+4>>2]=0;c[l>>2]=177856;c[l+8>>2]=g;n=l+12|0;c[n>>2]=h;m=g+7>>3;k=l+16|0;c[k>>2]=m;do{if((g|0)<1){o=16}else{if((h|0)<1|(m|0)<1){o=16;break}if((2147483646/(m|0)|0|0)<=(h|0)){o=16;break}m=we((da(m,h)|0)+1|0)|0;p=l+20|0;c[p>>2]=m;a[m+(da(c[k>>2]|0,c[n>>2]|0)|0)|0]=0;p=c[p>>2]|0;m=l+20|0;if((p|0)==0){break}bX(p|0,0,da(c[k>>2]|0,c[n>>2]|0)|0)|0;if((h|0)==0){u=l;i=j;return u|0}o=(g|0)==0;n=b+8|0;q=b+12|0;p=b+16|0;b=b+20|0;r=0;do{do{if(!o){u=r+f|0;if((u|0)<0){break}else{s=0}do{t=s+e|0;do{if((t|0)>=0){if((c[n>>2]|0)<=(t|0)){break}if((c[q>>2]|0)<=(u|0)){break}v=(da(c[p>>2]|0,u)|0)+(t>>3)|0;if(((d[(c[b>>2]|0)+v|0]|0)&1<<(t&7^7)|0)==0){break}v=(da(c[k>>2]|0,r)|0)+(s>>3)|0;v=(c[m>>2]|0)+v|0;a[v]=d[v]|0|1<<(s&7^7)}}while(0);s=s+1|0;}while(s>>>0>>0)}}while(0);r=r+1|0;}while(r>>>0>>0);i=j;return l|0}}while(0);do{if((o|0)==16){Qe(-1,177872,p);c[l+20>>2]=0;if((l|0)==0){l=0}else{break}i=j;return l|0}}while(0);fd[c[(c[l>>2]|0)+4>>2]&511](l);v=0;i=j;return v|0}function VC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;k=i;i=i+8|0;g=b+12|0;do{if((c[g>>2]|0)<(d|0)){h=b+16|0;j=c[h>>2]|0;if((j|0)<1){break}if((2147483646/(j|0)|0|0)<=(d|0)){break}k=b+20|0;b=xe(c[k>>2]|0,(da(j,d)|0)+1|0)|0;c[k>>2]=b;l=c[g>>2]|0;j=c[h>>2]|0;b=b+(da(j,l)|0)|0;j=da(d-l|0,j)|0;if((e|0)==0){bX(b|0,0,j|0)|0}else{bX(b|0,-1,j|0)|0}c[g>>2]=d;l=da(c[h>>2]|0,d)|0;a[(c[k>>2]|0)+l|0]=0;i=f;return}}while(0);Qe(-1,177872,k);l=b+20|0;Fe(c[l>>2]|0);c[l>>2]=0;i=f;return}function WC(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;j=i;if((g|0)==-2147483648){i=j;return}z=(g|0)<0?0-g|0:0;l=c[e+12>>2]|0;k=c[b+12>>2]|0;m=(l+g|0)>(k|0)?k-g|0:l;if((z|0)>=(m|0)){i=j;return}l=(f|0)>-1;k=l?f&-8:0;o=(c[e+8>>2]|0)+f|0;n=c[b+8>>2]|0;y=(o|0)>(n|0)?n:o;if((k|0)>=(y|0)){i=j;return}o=f&7;p=y&7;n=255>>>p;p=(p|0)==0?255:255<<8-p;s=p&255>>>o;r=(k|0)==(y+ -1&-8|0);q=b+20|0;u=b+16|0;b=f>>3;t=e+20|0;e=e+16|0;v=s^255;f=0-f>>3;x=k+8|0;w=255<<8-o;y=y+ -8|0;do{D=c[q>>2]|0;B=da(c[u>>2]|0,z+g|0)|0;A=D+B|0;do{if(r){if(l){A=D+(B+b)|0;B=(c[t>>2]|0)+(da(c[e>>2]|0,z)|0)|0;D=a[A]|0;C=D&255;B=d[B]|0;switch(h|0){case 4:{D=(B>>>o&s|C&v)&255;break};case 2:{D=(B>>>o&p^C)&255;break};case 3:{D=((B^255)>>>o&p^C)&255;break};case 0:{D=(B>>>o&p|C)&255;break};case 1:{D=((B|65280)>>>o|n)&C&255;break};default:{}}a[A]=D;break}else{D=(c[t>>2]|0)+((da(c[e>>2]|0,z)|0)+f)|0;C=a[A]|0;B=C&255;D=d[D]|0;switch(h|0){case 0:{C=(D&p|B)&255;break};case 2:{C=(D&p^B)&255;break};case 3:{C=((D^255)&p^B)&255;break};case 1:{C=(D|n)&B&255;break};case 4:{C=(D&p|B&n)&255;break};default:{}}a[A]=C;break}}else{if(l){A=B+b|0;F=D+A|0;C=c[t>>2]|0;B=da(c[e>>2]|0,z)|0;E=d[C+B|0]|0;G=a[F]|0;H=G&255;switch(h|0){case 4:{G=(H&w|E>>>o)&255;break};case 1:{G=(E|65280)>>>o&H&255;break};case 2:{G=(H^E>>>o)&255;break};case 0:{G=(H|E>>>o)&255;break};case 3:{G=((E^255)>>>o^H)&255;break};default:{}}a[F]=G;A=D+(A+1)|0;D=E;E=C+(B+1)|0;B=x}else{B=c[t>>2]|0;E=(da(c[e>>2]|0,z)|0)+f|0;D=d[B+E|0]|0;E=B+(E+1)|0;B=k}G=a[A]|0;C=G&255;F=E+1|0;E=d[E]|0;D=(E|D<<8)>>>o;if((B|0)<(y|0)){if((h|0)==1){H=A;while(1){A=H+1|0;a[H]=D&C;B=B+8|0;H=a[A]|0;C=H&255;G=d[F]|0;D=(G|E<<8)>>>o;if((B|0)<(y|0)){H=A;F=F+1|0;E=G}else{B=H;break}}}else if((h|0)==0){H=A;while(1){A=H+1|0;a[H]=D|C;B=B+8|0;H=a[A]|0;C=H&255;G=d[F]|0;D=(G|E<<8)>>>o;if((B|0)<(y|0)){H=A;F=F+1|0;E=G}else{B=H;break}}}else{H=A;while(1){if((h|0)==4){G=D&255}else if((h|0)==3){G=(C^255^D)&255}else if((h|0)==2){G=(D^C)&255}A=H+1|0;a[H]=G;B=B+8|0;G=a[A]|0;C=G&255;H=d[F]|0;D=(H|E<<8)>>>o;if((B|0)<(y|0)){E=H;F=F+1|0;H=A}else{B=G;break}}}}else{B=G}switch(h|0){case 0:{B=(D&p|C)&255;break};case 1:{B=(D|n)&C&255;break};case 4:{B=(D&p|C&n)&255;break};case 3:{B=((D^255)&p^C)&255;break};case 2:{B=(D&p^C)&255;break};default:{}}a[A]=B}}while(0);z=z+1|0;}while((z|0)<(m|0));i=j;return}function XC(a){a=a|0;var b=0;b=i;YC(a);HW(a);i=b;return}function YC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;c[a>>2]=177904;e=a+8|0;f=c[e>>2]|0;d=a+12|0;h=c[d>>2]|0;if((f|0)!=0){g=0;do{j=c[h+(g<<2)>>2]|0;if((j|0)!=0){fd[c[(c[j>>2]|0)+4>>2]&511](j);h=c[d>>2]|0;f=c[e>>2]|0}g=g+1|0;}while(g>>>0>>0)}Fe(h);d=c[a+16>>2]|0;if((d|0)!=0){yI(d);HW(d)}a=c[a+20>>2]|0;if((a|0)==0){i=b;return}yI(a);HW(a);i=b;return}function ZC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;c[a>>2]=177928;e=a+8|0;f=c[e>>2]|0;d=a+12|0;h=c[d>>2]|0;if((f|0)==0){j=h;Fe(j);HW(a);i=b;return}else{g=0}do{j=c[h+(g<<2)>>2]|0;if((j|0)!=0){fd[c[(c[j>>2]|0)+4>>2]&511](j);h=c[d>>2]|0;f=c[e>>2]|0}g=g+1|0;}while(g>>>0>>0);Fe(h);HW(a);i=b;return}function _C(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;c[a>>2]=177928;d=a+8|0;e=c[d>>2]|0;a=a+12|0;g=c[a>>2]|0;if((e|0)==0){h=g;Fe(h);i=b;return}else{f=0}do{h=c[g+(f<<2)>>2]|0;if((h|0)!=0){fd[c[(c[h>>2]|0)+4>>2]&511](h);g=c[a>>2]|0;e=c[d>>2]|0}f=f+1|0;}while(f>>>0>>0);Fe(g);i=b;return}function $C(a){a=a|0;var b=0;b=i;c[a>>2]=177952;Fe(c[a+8>>2]|0);HW(a);i=b;return}function aD(a){a=a|0;var b=0;b=i;c[a>>2]=177952;Fe(c[a+8>>2]|0);i=b;return}function bD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;uj(a,b);c[a>>2]=177976;b=a+16|0;c[b>>2]=13;f=a+24|0;c[f>>2]=0;c[f+4>>2]=0;c[a+48>>2]=0;f=FW(36)|0;CI(f);c[a+76>>2]=f;f=FW(8)|0;wI(f,2);c[a+80>>2]=f;f=FW(8)|0;wI(f,2);c[a+84>>2]=f;f=FW(8)|0;wI(f,512);c[a+88>>2]=f;f=FW(8)|0;wI(f,512);c[a+92>>2]=f;f=FW(8)|0;wI(f,512);c[a+96>>2]=f;f=FW(8)|0;wI(f,512);c[a+100>>2]=f;f=FW(8)|0;wI(f,512);c[a+104>>2]=f;f=FW(8)|0;wI(f,512);c[a+108>>2]=f;f=FW(8)|0;wI(f,512);c[a+112>>2]=f;f=FW(8)|0;wI(f,512);c[a+116>>2]=f;f=FW(8)|0;wI(f,512);c[a+120>>2]=f;f=FW(8)|0;wI(f,512);c[a+124>>2]=f;f=FW(8)|0;wI(f,512);c[a+128>>2]=f;f=FW(8)|0;wI(f,512);c[a+132>>2]=f;f=FW(8)|0;wI(f,512);c[a+136>>2]=f;f=FW(8)|0;wI(f,2);c[a+140>>2]=f;f=FW(12)|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[a+144>>2]=f;f=FW(16)|0;bX(f|0,0,16)|0;c[a+148>>2]=f;Mf(d,b)|0;bX(a+56|0,0,20)|0;i=e;return}function cD(a){a=a|0;var b=0;b=i;dD(a);HW(a);i=b;return}function dD(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=177976;gD(a);Of(a+16|0);d=c[a+76>>2]|0;if((d|0)!=0){DI(d);HW(d)}d=c[a+80>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+84>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+88>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+92>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+96>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+100>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+104>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+108>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+112>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+116>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+120>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+124>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+128>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+132>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+136>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+140>>2]|0;if((d|0)!=0){yI(d);HW(d)}d=c[a+144>>2]|0;if((d|0)!=0){HW(d)}d=c[a+148>>2]|0;if((d|0)!=0){HW(d)}a=c[a+8>>2]|0;if((a|0)==0){i=b;return}fd[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function eD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;f=FW(16)|0;wo(f);c[b+60>>2]=f;e=b+56|0;if((c[b+16>>2]|0)==8){c[e>>2]=f;j=c[b+24>>2]|0;g=b+64|0;c[g>>2]=j;fd[c[(c[j>>2]|0)+12>>2]&511](j);j=b+76|0;h=c[j>>2]|0;c[h+24>>2]=c[g>>2];c[h+28>>2]=0;a[h+32|0]=0;h=b+144|0;c[c[h>>2]>>2]=c[g>>2];f=b+148|0;c[c[f>>2]>>2]=c[g>>2];fD(b);k=c[g>>2]|0;fd[c[(c[k>>2]|0)+16>>2]&511](k)}else{g=b+64|0;j=b+76|0;h=b+144|0;f=b+148|0}k=FW(16)|0;wo(k);c[e>>2]=k;e=c[b+8>>2]|0;c[g>>2]=e;fd[c[(c[e>>2]|0)+12>>2]&511](e);e=c[j>>2]|0;c[e+24>>2]=c[g>>2];c[e+28>>2]=0;a[e+32|0]=0;c[c[h>>2]>>2]=c[g>>2];c[c[f>>2]>>2]=c[g>>2];fD(b);e=c[b+48>>2]|0;if((e|0)==0){c[b+72>>2]=0;c[b+68>>2]=0;i=d;return}else{k=c[e+20>>2]|0;c[b+68>>2]=k;c[b+72>>2]=k+(da(c[e+16>>2]|0,c[e+12>>2]|0)|0);i=d;return}}function fD(a){a=a|0;var b=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;l=i;k=i;i=i+8|0;h=i;i=i+8|0;g=i;i=i+8|0;f=g;e=i;i=i+8|0;d=i;i=i+8|0;j=a+64|0;o=c[j>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){i=l;return}b=a+48|0;a:while(1){n=c[j>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){n=78;break}m=c[j>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){n=78;break}p=c[j>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){n=78;break}n=n<<16|o<<24|m<<8|p;p=c[j>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){n=77;break}o=p&63;m=c[j>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){n=77;break}q=m>>>5;do{if((q|0)==7){r=c[j>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){n=77;break a}s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){n=77;break a}q=c[j>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){n=77;break a}q=(r<<16|m<<24|s<<8|q)&536870911;m=(q+9|0)>>>3;if((m|0)==0){break}else{r=0}while(1){v=c[j>>2]|0;jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;r=r+1|0;if(r>>>0>>0){}else{break}}}}while(0);m=ye(q,4)|0;b:do{if(n>>>0<257){if((q|0)==0){break}else{r=0}do{s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){n=76;break a}c[m+(r<<2)>>2]=s;r=r+1|0;}while(r>>>0>>0)}else{r=(q|0)==0;if(n>>>0<65537){if(r){break}else{r=0}while(1){s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){n=76;break a}t=c[j>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){n=76;break a}c[m+(r<<2)>>2]=t|s<<8;r=r+1|0;if(r>>>0>=q>>>0){break b}}}if(r){break}else{r=0}do{v=c[j>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;if((v|0)==-1){n=76;break a}u=c[j>>2]|0;u=jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;if((u|0)==-1){n=76;break a}s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){n=76;break a}t=c[j>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){n=76;break a}c[m+(r<<2)>>2]=u<<16|v<<24|s<<8|t;r=r+1|0;}while(r>>>0>>0)}}while(0);r=c[j>>2]|0;r=(jd[c[(c[r>>2]|0)+20>>2]&511](r)|0)==-1;if((p&64|0)==0){if(r){n=76;break}}else{if(r){n=76;break}v=c[j>>2]|0;if((jd[c[(c[v>>2]|0)+20>>2]&511](v)|0)==-1){n=76;break}v=c[j>>2]|0;if((jd[c[(c[v>>2]|0)+20>>2]&511](v)|0)==-1){n=76;break}v=c[j>>2]|0;if((jd[c[(c[v>>2]|0)+20>>2]&511](v)|0)==-1){n=76;break}}p=c[j>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){n=76;break}r=c[j>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){n=76;break}s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){n=76;break}t=c[j>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){n=76;break}r=r<<16|p<<24|s<<8|t;p=c[j>>2]|0;p=jd[c[(c[p>>2]|0)+48>>2]&511](p)|0;if((c[b>>2]|0)==0){if((o+ -4|0)>>>0<4|(o+ -20|0)>>>0<24){n=41;break}}c:do{switch(o|0){case 20:{pD(a,n,0,0,0,m,q);n=68;break};case 36:{qD(a,n,0,0,r);n=68;break};case 38:{qD(a,n,1,0,r);n=68;break};case 48:{sD(a,0);n=68;break};case 50:{if((r|0)==0){n=69;break c}else{n=0}while(1){v=c[j>>2]|0;jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;n=n+1|0;if(n>>>0>>0){}else{n=68;break}}break};case 40:{rD(a,n,0,0,0,m,q);n=68;break};case 42:{rD(a,n,1,0,0,m,q);n=68;break};case 22:{pD(a,n,1,0,0,m,q);n=68;break};case 6:{nD(a,n,1,0,0,m,q);n=68;break};case 7:{nD(a,n,1,0,0,m,q);n=68;break};case 0:{if(mD(a,n,0,m,q)|0){n=68}else{n=75;break a}break};case 39:{qD(a,n,1,0,r);n=68;break};case 52:{if((r|0)==0){n=69;break c}else{n=0}while(1){v=c[j>>2]|0;jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;n=n+1|0;if(n>>>0>>0){}else{n=68;break}}break};case 23:{pD(a,n,1,0,0,m,q);n=68;break};case 53:{tD(a,n,0);n=68;break};case 62:{if((r|0)==0){n=69;break c}else{n=0}while(1){v=c[j>>2]|0;jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;n=n+1|0;if(n>>>0>>0){}else{n=68;break}}break};case 16:{oD(a,n,r);n=68;break};case 43:{rD(a,n,1,0,0,m,q);n=68;break};case 4:{nD(a,n,0,0,0,m,q);n=68;break};default:{v=c[j>>2]|0;Qe(jd[c[(c[v>>2]|0)+48>>2]&511](v)|0,178152,e);if((r|0)==0){n=69;break c}else{n=0}while(1){v=c[j>>2]|0;n=n+1|0;if((jd[c[(c[v>>2]|0)+20>>2]&511](v)|0)==-1){n=76;break a}if(n>>>0>>0){}else{n=68;break}}}}}while(0);if((n|0)==68){n=0;if((r|0)!=-1){n=69}}do{if((n|0)==69){o=c[j>>2]|0;o=p+r-(jd[c[(c[o>>2]|0)+48>>2]&511](o)|0)|0;if((o|0)>0){n=c[j>>2]|0;n=jd[c[(c[n>>2]|0)+48>>2]&511](n)|0;c[g>>2]=o;c[f+4>>2]=(o|0)>1?178232:178240;Qe(n,178192,f);do{v=c[j>>2]|0;jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;o=o+ -1|0;}while((o|0)>0)}else{if((o|0)>=0){break}v=c[j>>2]|0;Qe(jd[c[(c[v>>2]|0)+48>>2]&511](v)|0,178248,h);break}}}while(0);Fe(m);o=c[j>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){n=78;break}}if((n|0)==41){v=c[j>>2]|0;Qe(jd[c[(c[v>>2]|0)+48>>2]&511](v)|0,178072,d);n=75}else if((n|0)==76){Fe(m);n=77}else if((n|0)==78){i=l;return}if((n|0)==75){Fe(m);i=l;return}else if((n|0)==77){v=c[j>>2]|0;Qe(jd[c[(c[v>>2]|0)+48>>2]&511](v)|0,178296,k);i=l;return}}function gD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;e=a+48|0;d=c[e>>2]|0;if((d|0)!=0){fd[c[(c[d>>2]|0)+4>>2]&511](d);c[e>>2]=0}d=a+56|0;f=c[d>>2]|0;if((f|0)!=0){e=f+8|0;h=c[e>>2]|0;if((h|0)>0){g=0;do{j=c[(c[f>>2]|0)+(g<<2)>>2]|0;if((j|0)!=0){fd[c[(c[j>>2]|0)+4>>2]&511](j);h=c[e>>2]|0}g=g+1|0;}while((g|0)<(h|0))}xo(f);HW(f);c[d>>2]=0}e=a+60|0;d=c[e>>2]|0;if((d|0)==0){j=a+72|0;c[j>>2]=0;j=a+68|0;c[j>>2]=0;wj(a);i=b;return}f=d+8|0;h=c[f>>2]|0;if((h|0)>0){g=0;do{j=c[(c[d>>2]|0)+(g<<2)>>2]|0;if((j|0)!=0){fd[c[(c[j>>2]|0)+4>>2]&511](j);h=c[f>>2]|0}g=g+1|0;}while((g|0)<(h|0))}xo(d);HW(d);c[e>>2]=0;j=a+72|0;c[j>>2]=0;j=a+68|0;c[j>>2]=0;wj(a);i=b;return}function hD(a){a=a|0;var b=0,e=0,f=0;b=i;f=a+68|0;e=c[f>>2]|0;if((e|0)==0){f=-1;i=b;return f|0}if(e>>>0>=(c[a+72>>2]|0)>>>0){f=-1;i=b;return f|0}c[f>>2]=e+1;f=(d[e]|0)^255;i=b;return f|0}function iD(a){a=a|0;var b=0,e=0;b=i;e=c[a+68>>2]|0;if((e|0)==0){e=-1;i=b;return e|0}if(e>>>0>=(c[a+72>>2]|0)>>>0){e=-1;i=b;return e|0}e=(d[e]|0)^255;i=b;return e|0}function jD(a){a=a|0;var b=0,d=0;b=i;d=c[a+48>>2]|0;if((d|0)==0){d=0;i=b;return d|0}d=(c[a+68>>2]|0)-(c[d+20>>2]|0)|0;i=b;return d|0}function kD(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function lD(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+8>>2]|0;b=Bd[c[(c[b>>2]|0)+60>>2]&255](b,1)|0;i=d;return b|0}function mD(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var 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,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;e=i;S=i;i=i+8|0;Y=i;i=i+8|0;l=i;i=i+8|0;p=i;i=i+8|0;o=i;i=i+8|0;L=i;i=i+8|0;J=i;i=i+8|0;E=i;i=i+8|0;C=i;i=i+8|0;G=i;i=i+8|0;T=i;i=i+8|0;U=i;i=i+8|0;V=i;i=i+16|0;I=V;R=i;i=i+16|0;K=R;t=i;i=i+8|0;A=t;s=i;i=i+8|0;z=s;w=i;i=i+8|0;x=w;F=i;i=i+8|0;H=F;B=i;i=i+8|0;u=B;M=i;i=i+8|0;y=M;N=i;i=i+8|0;v=N;D=i;i=i+8|0;O=D;n=i;i=i+8|0;m=n;j=b+64|0;h=c[j>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;a:do{if((h|0)!=-1){k=c[j>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}h=k|h<<8;Q=h>>>10&3;P=h>>>12&1;r=k&2;aa=k>>>2&3;$=k>>>4&3;_=k&64;Z=k&128;X=h>>>8&1;h=h&512;k=(k&1|0)!=0;do{if(!k){W=c[j>>2]|0;W=jd[c[(c[W>>2]|0)+20>>2]&511](W)|0;if((W|0)==-1){V=0}else{c[V>>2]=(W&128|0)==0?W:W|-256;V=1}if((Q|0)!=0){if(!V){break a}V=c[j>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){break a}c[R>>2]=(V&128|0)==0?V:V|-256;break}if(!V){break a}V=c[j>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){break a}c[R>>2]=(V&128|0)==0?V:V|-256;R=c[j>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break a}c[I+4>>2]=(R&128|0)==0?R:R|-256;R=c[j>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break a}c[K+4>>2]=(R&128|0)==0?R:R|-256;R=c[j>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break a}c[I+8>>2]=(R&128|0)==0?R:R|-256;R=c[j>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break a}c[K+8>>2]=(R&128|0)==0?R:R|-256;R=c[j>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break a}c[I+12>>2]=(R&128|0)==0?R:R|-256;R=c[j>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break a}c[K+12>>2]=(R&128|0)==0?R:R|-256}}while(0);r=(r|0)!=0;if(r&(P|0)==0){R=c[j>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break}c[t>>2]=(R&128|0)==0?R:R|-256;t=c[j>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}c[s>>2]=(t&128|0)==0?t:t|-256;s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}c[A+4>>2]=(s&128|0)==0?s:s|-256;s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}c[z+4>>2]=(s&128|0)==0?s:s|-256}R=c[j>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break}t=c[j>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}V=c[j>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){break}t=t<<16|R<<24|s<<8|V;W=c[j>>2]|0;W=jd[c[(c[W>>2]|0)+20>>2]&511](W)|0;if((W|0)==-1){break}V=c[j>>2]|0;V=jd[c[(c[V>>2]|0)+20>>2]&511](V)|0;if((V|0)==-1){break}R=c[j>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break}s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}s=V<<16|W<<24|R<<8|s;ba=FW(16)|0;wo(ba);ca=(g|0)==0;do{if(ca){R=0}else{W=b+60|0;V=b+56|0;ea=0;R=0;b:while(1){fa=c[f+(ea<<2)>>2]|0;ha=c[W>>2]|0;ga=c[ha+8>>2]|0;c:do{if((ga|0)>0){ia=c[ha>>2]|0;ja=0;while(1){ha=c[ia+(ja<<2)>>2]|0;ja=ja+1|0;if((c[ha+4>>2]|0)==(fa|0)){break c}if((ja|0)<(ga|0)){}else{q=38;break}}}else{q=38}}while(0);d:do{if((q|0)==38){q=0;ha=c[V>>2]|0;ga=c[ha+8>>2]|0;if((ga|0)<=0){q=51;break b}ia=c[ha>>2]|0;ja=0;while(1){ha=c[ia+(ja<<2)>>2]|0;ja=ja+1|0;if((c[ha+4>>2]|0)==(fa|0)){break d}if((ja|0)<(ga|0)){}else{q=51;break b}}}}while(0);if((ha|0)==0){q=51;break}do{if((jd[c[(c[ha>>2]|0)+8>>2]&511](ha)|0)==1){fa=c[ha+8>>2]|0;if(R>>>0>~fa>>>0){q=46;break b}R=fa+R|0}else{if((jd[c[(c[ha>>2]|0)+8>>2]&511](ha)|0)!=3){break}yo(ba,ha)}}while(0);ea=ea+1|0;if(ea>>>0>=g>>>0){q=54;break}}if((q|0)==46){ua=c[j>>2]|0;Qe(jd[c[(c[ua>>2]|0)+48>>2]&511](ua)|0,178328,U);if((ba|0)==0){break a}xo(ba);HW(ba);break a}else if((q|0)==51){if((ba|0)==0){ua=0;i=e;return ua|0}xo(ba);HW(ba);ua=0;i=e;return ua|0}else if((q|0)==54){if(R>>>0<=~s>>>0){break}ua=c[j>>2]|0;Qe(jd[c[(c[ua>>2]|0)+48>>2]&511](ua)|0,178328,T);if((ba|0)==0){break a}xo(ba);HW(ba);break a}}}while(0);U=R+s|0;V=(U|0)==0;do{if(V){T=ye(U,4)|0;S=T;W=1}else{S=U+ -1|0;W=1;while(1){S=S>>>1;if((S|0)==0){break}else{W=W+1|0}}T=ye(U,4)|0;if(V){S=T;break}bX(T|0,0,U<<2|0)|0;S=T}}while(0);if(ca){ha=0}else{ca=b+60|0;ea=b+56|0;fa=0;ha=0;ga=0;do{ia=c[f+(fa<<2)>>2]|0;ja=c[ca>>2]|0;q=c[ja+8>>2]|0;e:do{if((q|0)>0){ja=c[ja>>2]|0;la=0;while(1){ka=c[ja+(la<<2)>>2]|0;la=la+1|0;if((c[ka+4>>2]|0)==(ia|0)){ia=ka;q=73;break e}if((la|0)<(q|0)){}else{q=68;break}}}else{q=68}}while(0);f:do{if((q|0)==68){q=0;ka=c[ea>>2]|0;ja=c[ka+8>>2]|0;if((ja|0)<=0){break}la=c[ka>>2]|0;ma=0;while(1){ka=c[la+(ma<<2)>>2]|0;ma=ma+1|0;if((c[ka+4>>2]|0)==(ia|0)){ia=ka;q=73;break f}if((ma|0)<(ja|0)){}else{break}}}}while(0);do{if((q|0)==73){q=0;if((ia|0)==0){break}if((jd[c[(c[ia>>2]|0)+8>>2]&511](ia)|0)!=1){break}ha=ia+8|0;if((c[ha>>2]|0)==0){ha=ia;break}ja=ia+12|0;la=0;ka=ga;while(1){ga=ka+1|0;c[S+(ka<<2)>>2]=c[(c[ja>>2]|0)+(la<<2)>>2];la=la+1|0;if(la>>>0<(c[ha>>2]|0)>>>0){ka=ga}else{ha=ia;break}}}}while(0);fa=fa+1|0;}while(fa>>>0>>0)}g:do{if(k){g=178384;do{if((aa|0)==1){aa=178496;f=0;q=84}else if((aa|0)==0){aa=g;f=0;q=84}else{if((c[ba+8>>2]|0)==0){break}aa=c[(c[c[ba>>2]>>2]|0)+8>>2]|0;f=1;q=84}}while(0);do{if((q|0)==84){if(($|0)==0){g=178640}else if(($|0)==1){g=178768}else{if(f>>>0>=(c[ba+8>>2]|0)>>>0){break}g=c[(c[(c[ba>>2]|0)+(f<<2)>>2]|0)+8>>2]|0;f=f+1|0}if((_|0)==0){_=178928}else{if(f>>>0>=(c[ba+8>>2]|0)>>>0){break}_=c[(c[(c[ba>>2]|0)+(f<<2)>>2]|0)+8>>2]|0;f=f+1|0}if((Z|0)==0){Z=178928;$=aa;q=94;break g}if(f>>>0>=(c[ba+8>>2]|0)>>>0){break}Z=c[(c[(c[ba>>2]|0)+(f<<2)>>2]|0)+8>>2]|0;$=aa;q=94;break g}}while(0);ua=c[j>>2]|0;Qe(jd[c[(c[ua>>2]|0)+48>>2]&511](ua)|0,180304,Y);if((ba|0)==0){X=0;break}xo(ba);HW(ba);X=0}else{Z=0;_=0;$=0;g=0;q=94}}while(0);h:do{if((q|0)==94){if((ba|0)!=0){xo(ba);HW(ba)}if(k){ua=c[b+144>>2]|0;c[ua+4>>2]=0;c[ua+8>>2]=0}else{do{if((X|0)==0|(ha|0)==0){aa=c[182448+(Q<<2)>>2]|0;Y=b+80|0;f=c[Y>>2]|0;if((c[f+4>>2]|0)==(aa|0)){xI(f);break}if((f|0)!=0){yI(f);HW(f)}ua=FW(8)|0;wI(ua,1<>2]=ua}else{uD(b,Q,c[ha+16>>2]|0)}}while(0);vD(b,W);FI(c[b+76>>2]|0)}do{if(r){if(!((X|0)==0|(ha|0)==0)){wD(b,P,c[ha+20>>2]|0);ha=1;X=0;break}Y=c[182464+(P<<2)>>2]|0;X=b+84|0;q=c[X>>2]|0;if((c[q+4>>2]|0)==(Y|0)){xI(q);q=114;break}if((q|0)!=0){yI(q);HW(q)}q=FW(8)|0;wI(q,1<>2]=q;q=114}else{q=114}}while(0);do{if((q|0)==114){if(r|k^1){ha=1;X=0;break}ha=0;X=ye(s,4)|0}}while(0);Y=(s|0)==0;i:do{if(!Y){ea=b+144|0;ca=(W|0)==32;ga=b+76|0;ba=(1<>2]|0,x,$)|0}else{JI(c[ga>>2]|0,x,c[f>>2]|0)|0}ma=c[w>>2]|0;if(!((ma|0)>-1|la>>>0>(0-ma|0)>>>0)){q=122;break}la=ma+la|0;ma=na;pa=0;oa=0;k:while(1){if(k){if(!(NC(c[ea>>2]|0,H,g)|0)){break}}else{if(!(JI(c[ga>>2]|0,H,c[ka>>2]|0)|0)){break}}qa=c[F>>2]|0;if(!((qa|0)>-1|pa>>>0>(0-qa|0)>>>0)){q=128;break j}pa=qa+pa|0;if(ma>>>0>=s>>>0){q=130;break j}do{if(ha){if(!r){c[S+(ma+R<<2)>>2]=zD(b,0,pa,la,Q,0,0,0,I,K,0)|0;break}if(k){if(!(NC(c[ea>>2]|0,u,Z)|0)){break k}}else{if(!(JI(c[ga>>2]|0,u,c[ja>>2]|0)|0)){break k}}qa=c[B>>2]|0;if((qa|0)!=1){ua=ma+R|0;ta=179112;c[S+(ua<<2)>>2]=yD(b,k,1,pa,la,qa,0,ua,0,W,S,0,0,0,1,0,179384,179624,179976,ta,ta,ta,ta,178928,P,A,z)|0;break}if(k){ra=c[ea>>2]|0;sa=ra+8|0;ua=c[sa>>2]|0;qa=ra+4|0;ta=c[qa>>2]|0;do{if(ua>>>0>>0){ta=(1<>2]=0;if(ua>>>0>7){while(1){va=c[ra>>2]|0;ta=(jd[c[(c[va>>2]|0)+20>>2]&511](va)|0)&255|ta<<8;ua=ua+ -8|0;if(ua>>>0>7){}else{break}}}if((ua|0)==0){break}ra=c[ra>>2]|0;ra=jd[c[(c[ra>>2]|0)+20>>2]&511](ra)|0;c[qa>>2]=ra;va=8-ua|0;c[sa>>2]=va;ta=ra>>>va&(1<>2]=va;ta=ta>>>va&(ca?-1:ba)}}while(0);NC(c[ea>>2]|0,y,179112)|0;NC(c[ea>>2]|0,v,179112)|0;NC(c[ea>>2]|0,O,178928)|0;va=c[ea>>2]|0;c[va+4>>2]=0;c[va+8>>2]=0;FI(c[ga>>2]|0)}else{ta=KI(c[ga>>2]|0,W,c[ia>>2]|0)|0;JI(c[ga>>2]|0,y,c[fa>>2]|0)|0;JI(c[ga>>2]|0,v,c[aa>>2]|0)|0}qa=ma+R|0;if(ta>>>0>=qa>>>0){q=149;break j}c[S+(qa<<2)>>2]=xD(b,pa,la,P,0,c[S+(ta<<2)>>2]|0,c[M>>2]|0,c[N>>2]|0,A,z)|0}else{c[X+(ma<<2)>>2]=pa;oa=pa+oa|0}}while(0);ma=ma+1|0}do{if(!ha){NC(c[ea>>2]|0,O,_)|0;pa=c[ea>>2]|0;c[pa+4>>2]=0;c[pa+8>>2]=0;pa=c[D>>2]|0;do{if((pa|0)==0){pa=FW(24)|0;c[pa+4>>2]=0;c[pa>>2]=177856;c[pa+8>>2]=oa;qa=pa+12|0;c[qa>>2]=la;ra=oa+7|0;sa=ra>>3;ta=pa+16|0;c[ta>>2]=sa;do{if((oa|0)<1){q=159}else{if((la|0)<1|(sa|0)<1){q=159;break}if((2147483646/(sa|0)|0|0)<=(la|0)){q=159;break}va=we((da(sa,la)|0)+1|0)|0;c[pa+20>>2]=va;a[va+(da(c[ta>>2]|0,c[qa>>2]|0)|0)|0]=0}}while(0);if((q|0)==159){q=0;Qe(-1,177872,L);c[pa+20>>2]=0}va=da(ra>>>3,la)|0;c[D>>2]=va;if((va|0)==0){break}qa=0;oa=c[pa+20>>2]|0;while(1){va=c[j>>2]|0;a[oa]=jd[c[(c[va>>2]|0)+20>>2]&511](va)|0;qa=qa+1|0;if(qa>>>0<(c[D>>2]|0)>>>0){oa=oa+1|0}else{break}}}else{pa=zD(b,1,oa,la,0,0,0,0,0,0,pa)|0}}while(0);if(na>>>0>>0){oa=0;while(1){qa=X+(na<<2)|0;c[S+(na+R<<2)>>2]=UC(pa,oa,0,c[qa>>2]|0,la)|0;na=na+1|0;if(na>>>0>>0){oa=(c[qa>>2]|0)+oa|0}else{break}}}if((pa|0)==0){break}fd[c[(c[pa>>2]|0)+4>>2]&511](pa)}}while(0);if(ma>>>0>>0){na=ma}else{break i}}if((q|0)==122){va=c[j>>2]|0;Qe(jd[c[(c[va>>2]|0)+48>>2]&511](va)|0,179008,G);break h}else if((q|0)==128){va=c[j>>2]|0;Qe(jd[c[(c[va>>2]|0)+48>>2]&511](va)|0,179008,C);break h}else if((q|0)==130){va=c[j>>2]|0;Qe(jd[c[(c[va>>2]|0)+48>>2]&511](va)|0,179064,E);break h}else if((q|0)==149){va=c[j>>2]|0;Qe(jd[c[(c[va>>2]|0)+48>>2]&511](va)|0,179336,J);break h}}}while(0);u=FW(24)|0;c[u+4>>2]=d;c[u>>2]=177904;v=u+8|0;c[v>>2]=t;va=ze(t,4)|0;d=u+12|0;c[d>>2]=va;if((va|0)==0){c[v>>2]=0;c[u+16>>2]=0;c[u+20>>2]=0;if((u|0)==0){break}fd[c[(c[u>>2]|0)+4>>2]&511](u);break}v=u+16|0;c[v>>2]=0;w=u+20|0;c[w>>2]=0;l:do{if(V){B=0}else{x=b+144|0;z=b+76|0;y=b+96|0;A=0;E=0;B=0;m:while(1){if(k){NC(c[x>>2]|0,m,178928)|0}else{JI(c[z>>2]|0,m,c[y>>2]|0)|0}C=c[n>>2]|0;D=C+E|0;if(D>>>0>U>>>0){break}do{if(A){if((C+B|0)>>>0>t>>>0){break m}if((C|0)>0){C=0;F=E;E=B}else{D=E;break}while(1){B=E+1|0;D=F+1|0;H=c[S+(F<<2)>>2]|0;G=FW(24)|0;c[G+4>>2]=0;c[G>>2]=177856;va=c[H+8>>2]|0;c[G+8>>2]=va;I=c[H+12>>2]|0;c[G+12>>2]=I;F=c[H+16>>2]|0;c[G+16>>2]=F;do{if((va|0)<1){q=189}else{if((I|0)<1|(F|0)<1){q=189;break}if((I|0)>=(2147483646/(F|0)|0|0)){q=189;break}va=da(F,I)|0;ua=we(va+1|0)|0;c[G+20>>2]=ua;$W(ua|0,c[H+20>>2]|0,va|0)|0;a[ua+va|0]=0}}while(0);if((q|0)==189){q=0;Qe(-1,177872,p);c[G+20>>2]=0}c[(c[d>>2]|0)+(E<<2)>>2]=G;C=C+1|0;if((C|0)<(c[n>>2]|0)){E=B;F=D}else{break}}}}while(0);if(D>>>0>>0){A=A^1;E=D}else{break l}}va=c[j>>2]|0;Qe(jd[c[(c[va>>2]|0)+48>>2]&511](va)|0,180200,o);if(B>>>0>>0){do{c[(c[d>>2]|0)+(B<<2)>>2]=0;B=B+1|0;}while(B>>>0>>0)}if((u|0)==0){break h}fd[c[(c[u>>2]|0)+4>>2]&511](u);break h}}while(0);if((B|0)!=(t|0)){va=c[j>>2]|0;Qe(jd[c[(c[va>>2]|0)+48>>2]&511](va)|0,180256,l);if(B>>>0>>0){do{c[(c[d>>2]|0)+(B<<2)>>2]=0;B=B+1|0;}while(B>>>0>>0)}if((u|0)==0){break}fd[c[(c[u>>2]|0)+4>>2]&511](u);break}if(!Y){l=0;do{j=c[S+(l+R<<2)>>2]|0;if((j|0)!=0){fd[c[(c[j>>2]|0)+4>>2]&511](j)}l=l+1|0;}while(l>>>0>>0)}Fe(T);if((X|0)!=0){Fe(X)}do{if(!(k|(h|0)==0)){c[v>>2]=zI(c[b+80>>2]|0)|0;if(!r){break}c[w>>2]=zI(c[b+84>>2]|0)|0}}while(0);yo(c[b+56>>2]|0,u);va=1;i=e;return va|0}}while(0);if((s|0)!=0){b=0;do{h=c[S+(b+R<<2)>>2]|0;if((h|0)!=0){fd[c[(c[h>>2]|0)+4>>2]&511](h)}b=b+1|0;}while(b>>>0>>0)}Fe(T);if((X|0)==0){va=0;i=e;return va|0}Fe(X);va=0;i=e;return va|0}}while(0);va=c[j>>2]|0;Qe(jd[c[(c[va>>2]|0)+48>>2]&511](va)|0,178296,S);va=0;i=e;return va|0}function nD(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;e=i;B=i;i=i+8|0;E=i;i=i+8|0;C=i;i=i+8|0;n=i;i=i+576|0;N=i;i=i+8|0;f=N;F=i;i=i+8|0;j=F;m=i;i=i+8|0;l=m;D=a+64|0;q=c[D>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;do{if((q|0)!=-1){k=c[D>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}o=c[D>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){break}p=c[D>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}k=k<<16|q<<24|o<<8|p;r=c[D>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}q=c[D>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}p=c[D>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}o=c[D>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){break}o=q<<16|r<<24|p<<8|o;p=c[D>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}q=c[D>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}r=c[D>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}s=c[D>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}p=q<<16|p<<24|r<<8|s;t=c[D>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}s=c[D>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}r=c[D>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}q=c[D>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}q=s<<16|t<<24|r<<8|q;r=c[D>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}r=r&7;s=c[D>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}x=c[D>>2]|0;x=jd[c[(c[x>>2]|0)+20>>2]&511](x)|0;if((x|0)==-1){break}z=x|s<<8;A=x&2;u=x>>>2&3;v=x>>>4&3;t=x>>>6&1;s=z>>>7&3;w=z>>>9&1;y=z>>>10;y=(y&16|0)==0?y&31:y|-16;z=z>>>15&1;x=(x&1|0)!=0;if(x){H=c[D>>2]|0;H=jd[c[(c[H>>2]|0)+20>>2]&511](H)|0;if((H|0)==-1){break}I=c[D>>2]|0;I=jd[c[(c[I>>2]|0)+20>>2]&511](I)|0;if((I|0)==-1){break}L=I|H<<8;O=I>>>2&3;K=I>>>4&3;P=I&3;H=L>>>8&3;I=I>>>6&3;J=L>>>10&3;M=L>>>12&3;L=L>>>14&1}else{O=0;K=0;P=0;H=0;I=0;J=0;M=0;L=0}A=(A|0)!=0;if(A&(z|0)==0){Q=c[D>>2]|0;Q=jd[c[(c[Q>>2]|0)+20>>2]&511](Q)|0;if((Q|0)==-1){break}c[N>>2]=(Q&128|0)==0?Q:Q|-256;N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){break}c[F>>2]=(N&128|0)==0?N:N|-256;F=c[D>>2]|0;F=jd[c[(c[F>>2]|0)+20>>2]&511](F)|0;if((F|0)==-1){break}c[f+4>>2]=(F&128|0)==0?F:F|-256;F=c[D>>2]|0;F=jd[c[(c[F>>2]|0)+20>>2]&511](F)|0;if((F|0)==-1){break}c[j+4>>2]=(F&128|0)==0?F:F|-256}R=c[D>>2]|0;R=jd[c[(c[R>>2]|0)+20>>2]&511](R)|0;if((R|0)==-1){break}F=c[D>>2]|0;F=jd[c[(c[F>>2]|0)+20>>2]&511](F)|0;if((F|0)==-1){break}Q=c[D>>2]|0;Q=jd[c[(c[Q>>2]|0)+20>>2]&511](Q)|0;if((Q|0)==-1){break}N=c[D>>2]|0;N=jd[c[(c[N>>2]|0)+20>>2]&511](N)|0;if((N|0)==-1){break}B=F<<16|R<<24|Q<<8|N;N=FW(16)|0;wo(N);R=(h|0)==0;do{if(R){h=ye(0,4)|0;g=h;F=0;C=0}else{Q=a+60|0;S=a+56|0;T=0;F=0;a:do{U=c[g+(T<<2)>>2]|0;W=c[Q>>2]|0;V=c[W+8>>2]|0;b:do{if((V|0)>0){W=c[W>>2]|0;Y=0;while(1){X=c[W+(Y<<2)>>2]|0;Y=Y+1|0;if((c[X+4>>2]|0)==(U|0)){break b}if((Y|0)<(V|0)){}else{G=41;break}}}else{G=41}}while(0);c:do{if((G|0)==41){G=0;W=c[S>>2]|0;V=c[W+8>>2]|0;if((V|0)<=0){G=51;break a}W=c[W>>2]|0;Y=0;while(1){X=c[W+(Y<<2)>>2]|0;Y=Y+1|0;if((c[X+4>>2]|0)==(U|0)){break c}if((Y|0)<(V|0)){}else{G=51;break a}}}}while(0);if((X|0)==0){G=51;break}do{if((jd[c[(c[X>>2]|0)+8>>2]&511](X)|0)==1){F=(c[X+8>>2]|0)+F|0}else{if((jd[c[(c[X>>2]|0)+8>>2]&511](X)|0)!=3){break}yo(N,X)}}while(0);T=T+1|0;}while(T>>>0>>0);if((G|0)==51){Z=c[D>>2]|0;Qe(jd[c[(c[Z>>2]|0)+48>>2]&511](Z)|0,180352,C);if((N|0)==0){i=e;return}xo(N);HW(N);i=e;return}if(F>>>0>1){Q=1;C=0;while(1){C=C+1|0;Q=Q<<1;if(Q>>>0>>0){}else{break}}}else{C=0}Q=ye(F,4)|0;if(R){g=Q;h=Q;break}S=a+60|0;R=a+56|0;T=0;U=0;while(1){V=c[g+(T<<2)>>2]|0;W=c[S>>2]|0;G=c[W+8>>2]|0;d:do{if((G|0)>0){W=c[W>>2]|0;Y=0;while(1){X=c[W+(Y<<2)>>2]|0;Y=Y+1|0;if((c[X+4>>2]|0)==(V|0)){G=65;break d}if((Y|0)<(G|0)){}else{G=60;break}}}else{G=60}}while(0);e:do{if((G|0)==60){G=0;X=c[R>>2]|0;W=c[X+8>>2]|0;if((W|0)<=0){break}Y=c[X>>2]|0;Z=0;while(1){X=c[Y+(Z<<2)>>2]|0;Z=Z+1|0;if((c[X+4>>2]|0)==(V|0)){G=65;break e}if((Z|0)<(W|0)){}else{break}}}}while(0);do{if((G|0)==65){G=0;if((X|0)==0){break}if((jd[c[(c[X>>2]|0)+8>>2]&511](X)|0)!=1){break}V=X+8|0;if((c[V>>2]|0)==0){break}W=X+12|0;X=0;Y=U;while(1){U=Y+1|0;c[Q+(Y<<2)>>2]=c[(c[W>>2]|0)+(X<<2)>>2];X=X+1|0;if(X>>>0<(c[V>>2]|0)>>>0){Y=U}else{break}}}}while(0);T=T+1|0;if(T>>>0>=h>>>0){g=Q;h=Q;break}}}}while(0);f:do{if(x){Q=179384;do{if((P|0)==1){P=180400;Q=0;G=76}else if((P|0)==0){P=Q;Q=0;G=76}else{if((c[N+8>>2]|0)==0){break}P=c[(c[c[N>>2]>>2]|0)+8>>2]|0;Q=1;G=76}}while(0);do{if((G|0)==76){if((O|0)==0){G=179624}else if((O|0)==1){G=180656}else if((O|0)==2){G=181024}else{if(Q>>>0>=(c[N+8>>2]|0)>>>0){break}G=c[(c[(c[N>>2]|0)+(Q<<2)>>2]|0)+8>>2]|0;Q=Q+1|0}if((K|0)==0){O=179976}else if((K|0)==2){O=181600}else if((K|0)==1){O=181376}else{if(Q>>>0>=(c[N+8>>2]|0)>>>0){break}O=c[(c[(c[N>>2]|0)+(Q<<2)>>2]|0)+8>>2]|0;Q=Q+1|0}if((I|0)==0){I=181824}else if((I|0)==1){I=179112}else{if(Q>>>0>=(c[N+8>>2]|0)>>>0){break}I=c[(c[(c[N>>2]|0)+(Q<<2)>>2]|0)+8>>2]|0;Q=Q+1|0}if((H|0)==0){H=181824}else if((H|0)==1){H=179112}else{if(Q>>>0>=(c[N+8>>2]|0)>>>0){break}H=c[(c[(c[N>>2]|0)+(Q<<2)>>2]|0)+8>>2]|0;Q=Q+1|0}if((J|0)==0){J=181824}else if((J|0)==1){J=179112}else{if(Q>>>0>=(c[N+8>>2]|0)>>>0){break}J=c[(c[(c[N>>2]|0)+(Q<<2)>>2]|0)+8>>2]|0;Q=Q+1|0}K=181824;if((M|0)==1){K=179112;M=Q}else if((M|0)==0){M=Q}else{if(Q>>>0>=(c[N+8>>2]|0)>>>0){break}K=c[(c[(c[N>>2]|0)+(Q<<2)>>2]|0)+8>>2]|0;M=Q+1|0}if((L|0)==0){D=G;E=O;G=P;L=178928;break f}if(M>>>0>=(c[N+8>>2]|0)>>>0){break}D=G;E=O;G=P;L=c[(c[(c[N>>2]|0)+(M<<2)>>2]|0)+8>>2]|0;break f}}while(0);Z=c[D>>2]|0;Qe(jd[c[(c[Z>>2]|0)+48>>2]&511](Z)|0,181920,E);Fe(N);if((h|0)==0){i=e;return}HW(h);i=e;return}else{D=0;E=0;G=0;H=0;I=0;J=0;K=0;L=0}}while(0);if((N|0)!=0){xo(N);HW(N)}if(x){M=a+144|0;N=c[M>>2]|0;c[N+4>>2]=0;c[N+8>>2]=0;N=0;do{c[n+(N<<4)>>2]=N;P=c[M>>2]|0;Q=P+8|0;S=c[Q>>2]|0;O=P+4|0;R=c[O>>2]|0;do{if(S>>>0<4){R=(1<>2]=0;if(S>>>0>7){while(1){Z=c[P>>2]|0;R=(jd[c[(c[Z>>2]|0)+20>>2]&511](Z)|0)&255|R<<8;S=S+ -8|0;if(S>>>0>7){}else{break}}}if((S|0)==0){break}Y=c[P>>2]|0;Y=jd[c[(c[Y>>2]|0)+20>>2]&511](Y)|0;c[O>>2]=Y;Z=8-S|0;c[Q>>2]=Z;R=Y>>>Z&(1<>2]=Z;R=R>>>Z&15}}while(0);c[n+(N<<4)+4>>2]=R;c[n+(N<<4)+8>>2]=0;N=N+1|0;}while(N>>>0<32);c[n+512>>2]=259;O=c[M>>2]|0;N=O+8|0;R=c[N>>2]|0;P=O+4|0;Q=c[P>>2]|0;do{if(R>>>0<4){Q=(1<>2]=0;if(R>>>0>7){while(1){Z=c[O>>2]|0;Q=(jd[c[(c[Z>>2]|0)+20>>2]&511](Z)|0)&255|Q<<8;R=R+ -8|0;if(R>>>0>7){}else{break}}}if((R|0)==0){break}Y=c[O>>2]|0;Y=jd[c[(c[Y>>2]|0)+20>>2]&511](Y)|0;c[P>>2]=Y;Z=8-R|0;c[N>>2]=Z;Q=Y>>>Z&(1<>2]=Z;Q=Q>>>Z&15}}while(0);c[n+516>>2]=Q;c[n+520>>2]=2;c[n+528>>2]=515;P=c[M>>2]|0;N=P+8|0;R=c[N>>2]|0;O=P+4|0;Q=c[O>>2]|0;do{if(R>>>0<4){Q=(1<>2]=0;if(R>>>0>7){while(1){Z=c[P>>2]|0;Q=(jd[c[(c[Z>>2]|0)+20>>2]&511](Z)|0)&255|Q<<8;R=R+ -8|0;if(R>>>0>7){}else{break}}}if((R|0)==0){break}Y=c[P>>2]|0;Y=jd[c[(c[Y>>2]|0)+20>>2]&511](Y)|0;c[O>>2]=Y;Z=8-R|0;c[N>>2]=Z;Q=Y>>>Z&(1<>2]=Z;Q=Q>>>Z&15}}while(0);c[n+532>>2]=Q;c[n+536>>2]=3;c[n+544>>2]=523;O=c[M>>2]|0;P=O+8|0;R=c[P>>2]|0;N=O+4|0;Q=c[N>>2]|0;do{if(R>>>0<4){Q=(1<>2]=0;if(R>>>0>7){while(1){Z=c[O>>2]|0;Q=(jd[c[(c[Z>>2]|0)+20>>2]&511](Z)|0)&255|Q<<8;R=R+ -8|0;if(R>>>0>7){}else{break}}}if((R|0)==0){break}Y=c[O>>2]|0;Y=jd[c[(c[Y>>2]|0)+20>>2]&511](Y)|0;c[N>>2]=Y;Z=8-R|0;c[P>>2]=Z;Q=Y>>>Z&(1<>2]=Z;Q=Q>>>Z&15}}while(0);c[n+548>>2]=Q;c[n+552>>2]=7;c[n+564>>2]=0;c[n+568>>2]=-1;OC(0,n,35);N=ye(F+1|0,16)|0;P=(F|0)==0;do{if(P){l=0}else{O=0;do{c[N+(O<<4)>>2]=O;c[N+(O<<4)+8>>2]=0;O=O+1|0;}while(O>>>0>>0);if(P){l=0;break}else{O=0}while(1){NC(c[M>>2]|0,l,n)|0;Q=c[m>>2]|0;do{if((Q|0)>512){R=Q+ -512|0;c[m>>2]=R;if(!((R|0)!=0&O>>>0>>0)){break}Q=512-Q|0;P=O-F|0;P=Q>>>0>P>>>0?Q:P;Q=R+P|0;T=R;S=O;while(1){R=S+1|0;c[N+(S<<4)+4>>2]=0;T=T+ -1|0;if((T|0)!=0&R>>>0>>0){S=R}else{break}}c[m>>2]=Q;O=O-P|0}else{if((Q|0)<=256){c[N+(O<<4)+4>>2]=Q;O=O+1|0;break}P=Q+ -256|0;c[m>>2]=P;if(!((P|0)!=0&O>>>0>>0)){break}R=256-Q|0;Q=O-F|0;Q=R>>>0>Q>>>0?R:Q;R=P+Q|0;S=O;do{c[N+(S<<4)+4>>2]=c[N+(S+ -1<<4)+4>>2];S=S+1|0;P=P+ -1|0;}while((P|0)!=0&S>>>0>>0);c[m>>2]=R;O=O-Q|0}}while(0);if(O>>>0>=F>>>0){l=F;break}}}}while(0);c[N+(l<<4)+4>>2]=0;c[N+(F<<4)+8>>2]=-1;OC(0,N,l);F=c[M>>2]|0;c[F+4>>2]=0;c[F+8>>2]=0;F=l}else{vD(a,C);FI(c[a+76>>2]|0);N=0}do{if(A){m=c[182464+(z<<2)>>2]|0;l=a+84|0;n=c[l>>2]|0;if((c[n+4>>2]|0)==(m|0)){xI(n);break}if((n|0)!=0){yI(n);HW(n)}Z=FW(8)|0;wI(Z,1<>2]=Z}}while(0);f=yD(a,x,A,k,o,B,u,F,N,C,g,w,s,t,v,y,G,D,E,I,H,J,K,L,z,f,j)|0;Fe(h);do{if((f|0)!=0){if(!d){c[f+4>>2]=b;yo(c[a+56>>2]|0,f);break}do{if((c[a+36>>2]|0)==-1){d=q+o|0;if(d>>>0<=(c[a+40>>2]|0)>>>0){break}VC(c[a+48>>2]|0,d,c[a+44>>2]|0)}}while(0);WC(c[a+48>>2]|0,f,p,q,r);fd[c[(c[f>>2]|0)+4>>2]&511](f)}}while(0);if(!x){i=e;return}Fe(N);i=e;return}}while(0);Z=c[D>>2]|0;Qe(jd[c[(c[Z>>2]|0)+48>>2]&511](Z)|0,178296,B);i=e;return}function oD(a,b,d){a=a|0;b=b|0;d=d|0;var 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;e=i;s=i;i=i+8|0;l=i;i=i+16|0;j=l;m=i;i=i+16|0;h=m;p=a+64|0;n=c[p>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;do{if((n|0)!=-1){g=c[p>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;if((g|0)==-1){break}f=c[p>>2]|0;f=jd[c[(c[f>>2]|0)+20>>2]&511](f)|0;if((f|0)==-1){break}k=c[p>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}o=c[p>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){break}r=c[p>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}q=c[p>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}k=o<<16|k<<24|r<<8|q;o=n>>>1&3;n=(n&1|0)!=0;if(!n){q=c[182448+(o<<2)>>2]|0;r=a+80|0;p=c[r>>2]|0;if((c[p+4>>2]|0)==(q|0)){xI(p)}else{if((p|0)!=0){yI(p);HW(p)}s=FW(8)|0;wI(s,1<>2]=s}FI(c[a+76>>2]|0)}c[l>>2]=0-g;c[m>>2]=0;c[j+4>>2]=-3;c[h+4>>2]=-1;c[j+8>>2]=2;c[h+8>>2]=-2;c[j+12>>2]=-2;c[h+12>>2]=-2;l=k+1|0;h=zD(a,n,da(l,g)|0,f,o,0,0,0,j,h,d+ -7|0)|0;if((h|0)==0){i=e;return}d=FW(16)|0;c[d+4>>2]=b;c[d>>2]=177928;c[d+8>>2]=l;b=d+12|0;c[b>>2]=ye(l,4)|0;l=0;j=0;while(1){s=UC(h,j,0,g,f)|0;c[(c[b>>2]|0)+(l<<2)>>2]=s;l=l+1|0;if(l>>>0>k>>>0){break}else{j=j+g|0}}fd[c[(c[h>>2]|0)+4>>2]&511](h);yo(c[a+56>>2]|0,d);i=e;return}}while(0);r=c[p>>2]|0;Qe(jd[c[(c[r>>2]|0)+48>>2]&511](r)|0,178296,s);i=e;return}function pD(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,O=0,P=0,Q=0;g=i;A=i;i=i+8|0;B=i;i=i+8|0;C=i;i=i+8|0;G=i;i=i+8|0;I=i;i=i+8|0;J=i;i=i+8|0;K=i;i=i+8|0;u=i;i=i+16|0;o=u;v=i;i=i+16|0;n=v;D=b+64|0;l=c[D>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;do{if((l|0)!=-1){m=c[D>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}p=c[D>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}h=c[D>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((h|0)==-1){break}z=m<<16|l<<24|p<<8|h;l=c[D>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){break}m=c[D>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}h=c[D>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((h|0)==-1){break}p=c[D>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}h=m<<16|l<<24|h<<8|p;q=c[D>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}p=c[D>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}m=c[D>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}l=c[D>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){break}l=p<<16|q<<24|m<<8|l;m=c[D>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}r=c[D>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}q=c[D>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}p=c[D>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}m=r<<16|m<<24|q<<8|p;p=c[D>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}p=p&7;E=c[D>>2]|0;E=jd[c[(c[E>>2]|0)+20>>2]&511](E)|0;if((E|0)==-1){break}H=E&1;w=E>>>1&3;F=E&8;q=E>>>4&7;x=c[D>>2]|0;x=jd[c[(c[x>>2]|0)+20>>2]&511](x)|0;if((x|0)==-1){break}t=c[D>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}s=c[D>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}r=c[D>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}r=t<<16|x<<24|s<<8|r;t=c[D>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}y=c[D>>2]|0;y=jd[c[(c[y>>2]|0)+20>>2]&511](y)|0;if((y|0)==-1){break}x=c[D>>2]|0;x=jd[c[(c[x>>2]|0)+20>>2]&511](x)|0;if((x|0)==-1){break}s=c[D>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}s=y<<16|t<<24|x<<8|s;t=c[D>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}x=c[D>>2]|0;x=jd[c[(c[x>>2]|0)+20>>2]&511](x)|0;if((x|0)==-1){break}y=c[D>>2]|0;y=jd[c[(c[y>>2]|0)+20>>2]&511](y)|0;if((y|0)==-1){break}L=c[D>>2]|0;L=jd[c[(c[L>>2]|0)+20>>2]&511](L)|0;if((L|0)==-1){break}t=x<<16|t<<24|y<<8|L;L=c[D>>2]|0;L=jd[c[(c[L>>2]|0)+20>>2]&511](L)|0;if((L|0)==-1){break}y=c[D>>2]|0;y=jd[c[(c[y>>2]|0)+20>>2]&511](y)|0;if((y|0)==-1){break}M=c[D>>2]|0;M=jd[c[(c[M>>2]|0)+20>>2]&511](M)|0;if((M|0)==-1){break}x=c[D>>2]|0;x=jd[c[(c[x>>2]|0)+20>>2]&511](x)|0;if((x|0)==-1){break}x=y<<16|L<<24|M<<8|x;y=c[D>>2]|0;y=jd[c[(c[y>>2]|0)+20>>2]&511](y)|0;if((y|0)==-1){break}L=c[D>>2]|0;L=jd[c[(c[L>>2]|0)+20>>2]&511](L)|0;if((L|0)==-1){break}y=L|y<<8;L=c[D>>2]|0;L=jd[c[(c[L>>2]|0)+20>>2]&511](L)|0;if((L|0)==-1){break}M=c[D>>2]|0;M=jd[c[(c[M>>2]|0)+20>>2]&511](M)|0;if((M|0)==-1){break}A=M|L<<8;do{if(!((z|0)==0|(h|0)==0)){if(z>>>0>=(2147483647/(h>>>0)|0)>>>0){break}do{if((s|0)!=0){if(r>>>0>=(2147483647/(s>>>0)|0)>>>0){break}if((k|0)!=1){O=c[D>>2]|0;Qe(jd[c[(c[O>>2]|0)+48>>2]&511](O)|0,182096,I);i=g;return}j=c[j>>2]|0;I=c[b+60>>2]|0;k=c[I+8>>2]|0;a:do{if((k|0)>0){J=c[I>>2]|0;K=0;while(1){I=c[J+(K<<2)>>2]|0;K=K+1|0;if((c[I+4>>2]|0)==(j|0)){k=55;break a}if((K|0)<(k|0)){}else{k=50;break}}}else{k=50}}while(0);b:do{if((k|0)==50){J=c[b+56>>2]|0;I=c[J+8>>2]|0;if((I|0)<=0){break}K=c[J>>2]|0;L=0;do{J=c[K+(L<<2)>>2]|0;L=L+1|0;if((c[J+4>>2]|0)==(j|0)){I=J;k=55;break b}}while((L|0)<(I|0))}}while(0);do{if((k|0)==55){if((I|0)==0){break}if((jd[c[(c[I>>2]|0)+8>>2]&511](I)|0)!=2){break}D=c[I+8>>2]|0;if(D>>>0>1){j=0;G=1;while(1){G=G<<1;if(G>>>0>>0){j=j+1|0}else{break}}}else{j=-1}D=I+12|0;J=c[c[D>>2]>>2]|0;I=c[J+8>>2]|0;J=c[J+12>>2]|0;H=(H|0)!=0;if(!H){K=c[182448+(w<<2)>>2]|0;L=b+80|0;G=c[L>>2]|0;if((c[G+4>>2]|0)==(K|0)){xI(G)}else{if((G|0)!=0){yI(G);HW(G)}O=FW(8)|0;wI(O,1<>2]=O}FI(c[b+76>>2]|0)}G=FW(24)|0;c[G+4>>2]=e;c[G>>2]=177856;c[G+8>>2]=z;K=G+12|0;c[K>>2]=h;L=z+7>>3;e=G+16|0;c[e>>2]=L;do{if((z|0)<1){k=70}else{if((h|0)<1|(L|0)<1){k=70;break}if((2147483646/(L|0)|0|0)<=(h|0)){k=70;break}O=we((da(h,L)|0)+1|0)|0;C=G+20|0;c[C>>2]=O;a[O+(da(c[e>>2]|0,c[K>>2]|0)|0)|0]=0;C=c[C>>2]|0}}while(0);if((k|0)==70){Qe(-1,177872,C);c[G+20>>2]=0;C=0}e=da(c[e>>2]|0,c[K>>2]|0)|0;if((E&128|0)==0){bX(C|0,0,e|0)|0}else{bX(C|0,-1,e|0)|0}C=(F|0)!=0;if(C){e=FW(24)|0;c[e+4>>2]=0;c[e>>2]=177856;c[e+8>>2]=r;F=e+12|0;c[F>>2]=s;K=r+7>>3;E=e+16|0;c[E>>2]=K;do{if((r|0)<1){k=79}else{if((s|0)<1|(K|0)<1){k=79;break}if((2147483646/(K|0)|0|0)<=(s|0)){k=79;break}O=we((da(s,K)|0)+1|0)|0;K=e+20|0;c[K>>2]=O;a[O+(da(c[E>>2]|0,c[F>>2]|0)|0)|0]=0;K=c[K>>2]|0}}while(0);if((k|0)==79){Qe(-1,177872,B);c[e+20>>2]=0;K=0}B=e+20|0;bX(K|0,0,da(c[E>>2]|0,c[F>>2]|0)|0)|0;F=(r|0)==0;K=0;while(1){if(!F){L=(da(K,A)|0)+t|0;O=(da(K,y)|0)+x|0;M=0;do{P=L+(da(M,y)|0)|0;N=O-(da(M,A)|0)|0;if((P+I>>8|0)>0&(P>>8|0)<(z|0)){if(!((N+J>>8|0)>0&(N>>8|0)<(h|0))){k=86}}else{k=86}if((k|0)==86){k=0;P=(da(c[E>>2]|0,K)|0)+(M>>3)|0;P=(c[B>>2]|0)+P|0;a[P]=d[P]|0|1<<(M&7^7)}M=M+1|0;}while(M>>>0>>0)}K=K+1|0;if(K>>>0>=s>>>0){B=e;break}}}else{B=0}P=da(s,r)|0;z=ye(P,4)|0;bX(z|0,0,P<<2|0)|0;c[u>>2]=w>>>0<2?3:2;c[v>>2]=-1;c[o+4>>2]=-3;c[n+4>>2]=-1;c[o+8>>2]=2;c[n+8>>2]=-2;c[o+12>>2]=-2;c[n+12>>2]=-2;if((j|0)>-1){u=(r|0)==0;do{F=zD(b,H,r,s,w,0,C,B,o,n,-1)|0;I=F+8|0;v=F+12|0;E=F+16|0;e=F+20|0;K=0;J=0;do{if(!u){L=(J|0)<0;M=K;N=0;while(1){do{if((N|0)<0){O=0}else{if((c[I>>2]|0)<=(N|0)|L){O=0;break}if((c[v>>2]|0)<=(J|0)){O=0;break}O=(da(c[E>>2]|0,J)|0)+(N>>3)|0;O=(d[(c[e>>2]|0)+O|0]|0)>>>(N&7^7)&1}}while(0);P=z+(M<<2)|0;Q=c[P>>2]|0;c[P>>2]=Q&1^O|Q<<1;N=N+1|0;if(N>>>0>>0){M=M+1|0}else{break}}K=r+K|0}J=J+1|0;}while(J>>>0>>0);if((F|0)!=0){fd[c[(c[F>>2]|0)+4>>2]&511](F)}j=j+ -1|0;}while((j|0)>-1)}n=(r|0)==0;C=C^1;w=B+8|0;v=B+12|0;o=B+16|0;u=B+20|0;E=0;e=0;do{if(!n){F=(e|0)<0;H=E;J=0;j=(da(e,A)|0)+t|0;I=(da(e,y)|0)+x|0;while(1){do{if((J|0)<0|C){k=111}else{if((c[w>>2]|0)<=(J|0)|F){k=111;break}if((c[v>>2]|0)<=(e|0)){k=111;break}Q=(da(c[o>>2]|0,e)|0)+(J>>3)|0;if(((d[(c[u>>2]|0)+Q|0]|0)&1<<(J&7^7)|0)==0){k=111}}}while(0);if((k|0)==111){k=0;WC(G,c[(c[D>>2]|0)+(c[z+(H<<2)>>2]<<2)>>2]|0,j>>8,I>>8,q)}J=J+1|0;if(J>>>0>>0){H=H+1|0;j=j+y|0;I=I-A|0}else{break}}E=r+E|0}e=e+1|0;}while(e>>>0>>0);Fe(z);if((B|0)!=0){fd[c[(c[B>>2]|0)+4>>2]&511](B)}if(!f){yo(c[b+56>>2]|0,G);i=g;return}do{if((c[b+36>>2]|0)==-1){f=m+h|0;if(f>>>0<=(c[b+40>>2]|0)>>>0){break}VC(c[b+48>>2]|0,f,c[b+44>>2]|0)}}while(0);WC(c[b+48>>2]|0,G,l,m,p);if((G|0)==0){i=g;return}fd[c[(c[G>>2]|0)+4>>2]&511](G);i=g;return}}while(0);Q=c[D>>2]|0;Qe(jd[c[(c[Q>>2]|0)+48>>2]&511](Q)|0,182096,G);i=g;return}}while(0);Q=c[D>>2]|0;Qe(jd[c[(c[Q>>2]|0)+48>>2]&511](Q)|0,182056,J);i=g;return}}while(0);Q=c[D>>2]|0;Qe(jd[c[(c[Q>>2]|0)+48>>2]&511](Q)|0,182008,K);i=g;return}}while(0);Q=c[D>>2]|0;Qe(jd[c[(c[Q>>2]|0)+48>>2]&511](Q)|0,178296,A);i=g;return}function qD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var 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;e=i;k=i;i=i+8|0;p=i;i=i+16|0;g=p;n=i;i=i+16|0;h=n;j=a+64|0;l=c[j>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;do{if((l|0)!=-1){o=c[j>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){break}q=c[j>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}m=c[j>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}l=o<<16|l<<24|q<<8|m;r=c[j>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}q=c[j>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}o=c[j>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){break}m=c[j>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}m=q<<16|r<<24|o<<8|m;s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}r=c[j>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}q=c[j>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}o=c[j>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;if((o|0)==-1){break}o=r<<16|s<<24|q<<8|o;q=c[j>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}r=c[j>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}s=c[j>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}t=c[j>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}q=r<<16|q<<24|s<<8|t;r=c[j>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}r=r&7;u=c[j>>2]|0;u=jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;if((u|0)==-1){break}t=u>>>1&3;s=u&8;u=(u&1|0)!=0;if(!u){v=c[j>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;if((v|0)==-1){p=0}else{c[p>>2]=(v&128|0)==0?v:v|-256;p=1}if((t|0)==0){if(!p){break}p=c[j>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}c[n>>2]=(p&128|0)==0?p:p|-256;n=c[j>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}c[g+4>>2]=(n&128|0)==0?n:n|-256;n=c[j>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}c[h+4>>2]=(n&128|0)==0?n:n|-256;n=c[j>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}c[g+8>>2]=(n&128|0)==0?n:n|-256;n=c[j>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}c[h+8>>2]=(n&128|0)==0?n:n|-256;n=c[j>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}c[g+12>>2]=(n&128|0)==0?n:n|-256;n=c[j>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}c[h+12>>2]=(n&128|0)==0?n:n|-256}else{if(!p){break}p=c[j>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}c[n>>2]=(p&128|0)==0?p:p|-256}j=c[182448+(t<<2)>>2]|0;n=a+80|0;k=c[n>>2]|0;if((c[k+4>>2]|0)==(j|0)){xI(k)}else{if((k|0)!=0){yI(k);HW(k)}v=FW(8)|0;wI(v,1<>2]=v}FI(c[a+76>>2]|0)}f=zD(a,u,l,m,t,(s|0)!=0,0,0,g,h,u?f+ -18|0:0)|0;if((f|0)==0){i=e;return}if(!d){c[f+4>>2]=b;yo(c[a+56>>2]|0,f);i=e;return}do{if((c[a+36>>2]|0)==-1){b=q+m|0;if(b>>>0<=(c[a+40>>2]|0)>>>0){break}VC(c[a+48>>2]|0,b,c[a+44>>2]|0)}}while(0);WC(c[a+48>>2]|0,f,o,q,r);fd[c[(c[f>>2]|0)+4>>2]&511](f);i=e;return}}while(0);v=c[j>>2]|0;Qe(jd[c[(c[v>>2]|0)+48>>2]&511](v)|0,178296,k);i=e;return}function rD(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;e=i;w=i;i=i+8|0;k=i;i=i+8|0;n=i;i=i+8|0;v=i;i=i+8|0;y=i;i=i+8|0;m=y;x=i;i=i+8|0;l=x;f=a+64|0;o=c[f>>2]|0;o=jd[c[(c[o>>2]|0)+20>>2]&511](o)|0;do{if((o|0)!=-1){r=c[f>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}q=c[f>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}p=c[f>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}o=r<<16|o<<24|q<<8|p;r=c[f>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}s=c[f>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}p=c[f>>2]|0;p=jd[c[(c[p>>2]|0)+20>>2]&511](p)|0;if((p|0)==-1){break}q=c[f>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}p=s<<16|r<<24|p<<8|q;t=c[f>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}q=c[f>>2]|0;q=jd[c[(c[q>>2]|0)+20>>2]&511](q)|0;if((q|0)==-1){break}r=c[f>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}s=c[f>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}q=q<<16|t<<24|r<<8|s;t=c[f>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;if((t|0)==-1){break}r=c[f>>2]|0;r=jd[c[(c[r>>2]|0)+20>>2]&511](r)|0;if((r|0)==-1){break}s=c[f>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}u=c[f>>2]|0;u=jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;if((u|0)==-1){break}r=r<<16|t<<24|s<<8|u;s=c[f>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;if((s|0)==-1){break}s=s&7;u=c[f>>2]|0;u=jd[c[(c[u>>2]|0)+20>>2]&511](u)|0;if((u|0)==-1){break}t=u&1;u=u&2;if((t|0)==0){z=c[f>>2]|0;z=jd[c[(c[z>>2]|0)+20>>2]&511](z)|0;if((z|0)==-1){break}c[y>>2]=(z&128|0)==0?z:z|-256;y=c[f>>2]|0;y=jd[c[(c[y>>2]|0)+20>>2]&511](y)|0;if((y|0)==-1){break}c[x>>2]=(y&128|0)==0?y:y|-256;x=c[f>>2]|0;x=jd[c[(c[x>>2]|0)+20>>2]&511](x)|0;if((x|0)==-1){break}c[m+4>>2]=(x&128|0)==0?x:x|-256;x=c[f>>2]|0;x=jd[c[(c[x>>2]|0)+20>>2]&511](x)|0;if((x|0)==-1){break}c[l+4>>2]=(x&128|0)==0?x:x|-256}do{if((h|0)==0|d){if((c[a+36>>2]|0)!=-1){break}w=r+p|0;if(w>>>0<=(c[a+40>>2]|0)>>>0){break}VC(c[a+48>>2]|0,w,c[a+44>>2]|0)}}while(0);if(h>>>0>1){z=c[f>>2]|0;Qe(jd[c[(c[z>>2]|0)+48>>2]&511](z)|0,182280,v);i=e;return}h=(h|0)==1;a:do{if(h){v=c[g>>2]|0;w=c[a+60>>2]|0;j=c[w+8>>2]|0;b:do{if((j|0)>0){w=c[w>>2]|0;y=0;while(1){x=c[w+(y<<2)>>2]|0;y=y+1|0;if((c[x+4>>2]|0)==(v|0)){j=40;break b}if((y|0)<(j|0)){}else{j=35;break}}}else{j=35}}while(0);c:do{if((j|0)==35){x=c[a+56>>2]|0;w=c[x+8>>2]|0;if((w|0)<=0){break}y=c[x>>2]|0;z=0;do{x=c[y+(z<<2)>>2]|0;z=z+1|0;if((c[x+4>>2]|0)==(v|0)){j=40;break c}}while((z|0)<(w|0))}}while(0);do{if((j|0)==40){if((x|0)==0){break}if((jd[c[(c[x>>2]|0)+8>>2]&511](x)|0)!=0){break}break a}}while(0);z=c[f>>2]|0;Qe(jd[c[(c[z>>2]|0)+48>>2]&511](z)|0,182336,n);i=e;return}else{x=UC(c[a+48>>2]|0,q,r,o,p)|0}}while(0);n=c[182464+(t<<2)>>2]|0;v=a+84|0;w=c[v>>2]|0;if((c[w+4>>2]|0)==(n|0)){xI(w)}else{if((w|0)!=0){yI(w);HW(w)}z=FW(8)|0;wI(z,1<>2]=z}FI(c[a+76>>2]|0);l=xD(a,o,p,t,(u|0)!=0,x,0,0,m,l)|0;do{if(d){WC(c[a+48>>2]|0,l,q,r,s);if((l|0)==0){break}fd[c[(c[l>>2]|0)+4>>2]&511](l)}else{if((l|0)==0){z=c[f>>2]|0;Qe(jd[c[(c[z>>2]|0)+48>>2]&511](z)|0,182400,k);break}else{c[l+4>>2]=b;yo(c[a+56>>2]|0,l);break}}}while(0);if(!h){if((x|0)==0){i=e;return}fd[c[(c[x>>2]|0)+4>>2]&511](x);i=e;return}d=c[g>>2]|0;l=c[a+60>>2]|0;b=c[l+8>>2]|0;d:do{if((b|0)>0){k=c[l>>2]|0;f=0;while(1){g=f+1|0;if((c[(c[k+(f<<2)>>2]|0)+4>>2]|0)==(d|0)){break}if((g|0)<(b|0)){f=g}else{break d}}Ao(l,f)|0;i=e;return}}while(0);b=c[a+56>>2]|0;a=c[b+8>>2]|0;if((a|0)<=0){i=e;return}f=c[b>>2]|0;g=0;while(1){k=g+1|0;if((c[(c[f+(g<<2)>>2]|0)+4>>2]|0)==(d|0)){break}if((k|0)<(a|0)){g=k}else{j=70;break}}if((j|0)==70){i=e;return}Ao(b,g)|0;i=e;return}}while(0);z=c[f>>2]|0;Qe(jd[c[(c[z>>2]|0)+48>>2]&511](z)|0,178296,w);i=e;return}function sD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;g=i;i=i+8|0;e=i;i=i+8|0;f=b+32|0;h=b+64|0;m=c[h>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;do{if((m|0)!=-1){k=c[h>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){break}j=c[h>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){break}c[f>>2]=k<<16|m<<24|l<<8|j;j=b+36|0;k=c[h>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){break}m=c[h>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}n=c[h>>2]|0;n=jd[c[(c[n>>2]|0)+20>>2]&511](n)|0;if((n|0)==-1){break}c[j>>2]=l<<16|k<<24|m<<8|n;n=c[h>>2]|0;if((jd[c[(c[n>>2]|0)+20>>2]&511](n)|0)==-1){break}n=c[h>>2]|0;if((jd[c[(c[n>>2]|0)+20>>2]&511](n)|0)==-1){break}n=c[h>>2]|0;if((jd[c[(c[n>>2]|0)+20>>2]&511](n)|0)==-1){break}n=c[h>>2]|0;if((jd[c[(c[n>>2]|0)+20>>2]&511](n)|0)==-1){break}n=c[h>>2]|0;if((jd[c[(c[n>>2]|0)+20>>2]&511](n)|0)==-1){break}n=c[h>>2]|0;if((jd[c[(c[n>>2]|0)+20>>2]&511](n)|0)==-1){break}n=c[h>>2]|0;if((jd[c[(c[n>>2]|0)+20>>2]&511](n)|0)==-1){break}n=c[h>>2]|0;if((jd[c[(c[n>>2]|0)+20>>2]&511](n)|0)==-1){break}m=c[h>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}l=c[h>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){break}k=c[h>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}g=b+44|0;c[g>>2]=m>>>2&1;c[b+52>>2]=m>>>3&3;h=c[j>>2]|0;if((h|0)==-1){k=(k|l<<8)&32767;c[b+40>>2]=k}else{c[b+40>>2]=h;k=h}h=FW(24)|0;n=c[f>>2]|0;c[h+4>>2]=0;c[h>>2]=177856;c[h+8>>2]=n;f=h+12|0;c[f>>2]=k;l=n+7>>3;j=h+16|0;c[j>>2]=l;do{if((n|0)<1){f=27}else{if((k|0)<1|(l|0)<1){f=27;break}if((2147483646/(l|0)|0|0)<=(k|0)){f=27;break}n=we((da(l,k)|0)+1|0)|0;e=h+20|0;c[e>>2]=n;a[n+(da(c[j>>2]|0,c[f>>2]|0)|0)|0]=0;e=c[e>>2]|0;b=b+48|0;c[b>>2]=h;if((e|0)==0){f=28;break}b=da(c[j>>2]|0,c[f>>2]|0)|0;if((c[g>>2]|0)==0){bX(e|0,0,b|0)|0;i=d;return}else{bX(e|0,-1,b|0)|0;i=d;return}}}while(0);if((f|0)==27){Qe(-1,177872,e);c[h+20>>2]=0;b=b+48|0;c[b>>2]=h;if((h|0)!=0){f=28}}if((f|0)==28){fd[c[(c[h>>2]|0)+4>>2]&511](h)}c[b>>2]=0;i=d;return}}while(0);n=c[h>>2]|0;Qe(jd[c[(c[n>>2]|0)+48>>2]&511](n)|0,178296,g);i=d;return}function tD(a,b,d){a=a|0;b=b|0;d=d|0;var 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;d=i;e=i;i=i+8|0;f=a+64|0;g=c[f>>2]|0;g=jd[c[(c[g>>2]|0)+20>>2]&511](g)|0;do{if((g|0)!=-1){j=c[f>>2]|0;j=jd[c[(c[j>>2]|0)+20>>2]&511](j)|0;if((j|0)==-1){break}k=c[f>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}l=c[f>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){break}h=c[f>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((h|0)==-1){break}j=k<<16|j<<24|l<<8|h;l=c[f>>2]|0;l=jd[c[(c[l>>2]|0)+20>>2]&511](l)|0;if((l|0)==-1){break}m=c[f>>2]|0;m=jd[c[(c[m>>2]|0)+20>>2]&511](m)|0;if((m|0)==-1){break}h=c[f>>2]|0;h=jd[c[(c[h>>2]|0)+20>>2]&511](h)|0;if((h|0)==-1){break}k=c[f>>2]|0;k=jd[c[(c[k>>2]|0)+20>>2]&511](k)|0;if((k|0)==-1){break}h=m<<16|l<<24|h<<8|k;f=g&1;e=(g>>>1&7)+1|0;o=(g>>>4&7)+1|0;g=a+144|0;l=c[g>>2]|0;c[l+4>>2]=0;c[l+8>>2]=0;l=ye(8,16)|0;if((j|0)<(h|0)){m=(1<>2]=q;s=c[g>>2]|0;t=s+8|0;v=c[t>>2]|0;r=s+4|0;u=c[r>>2]|0;do{if(v>>>0>>0){u=(1<>2]=0;if(v>>>0>7){while(1){w=c[s>>2]|0;u=(jd[c[(c[w>>2]|0)+20>>2]&511](w)|0)&255|u<<8;v=v+ -8|0;if(v>>>0>7){}else{break}}}if((v|0)==0){break}s=c[s>>2]|0;s=jd[c[(c[s>>2]|0)+20>>2]&511](s)|0;c[r>>2]=s;w=8-v|0;c[t>>2]=w;u=s>>>w&(1<>2]=w;u=u>>>w&m}}while(0);c[l+(k<<4)+4>>2]=u;t=c[g>>2]|0;r=t+8|0;v=c[r>>2]|0;s=t+4|0;u=c[s>>2]|0;do{if(v>>>0>>0){u=(1<>2]=0;if(v>>>0>7){while(1){w=c[t>>2]|0;u=(jd[c[(c[w>>2]|0)+20>>2]&511](w)|0)&255|u<<8;v=v+ -8|0;if(v>>>0>7){}else{break}}}if((v|0)==0){break}t=c[t>>2]|0;t=jd[c[(c[t>>2]|0)+20>>2]&511](t)|0;c[s>>2]=t;w=8-v|0;c[r>>2]=w;u=t>>>w&(1<>2]=w;u=u>>>w&n}}while(0);c[l+(k<<4)+8>>2]=u;q=(1<>>0>p>>>0){l=Ce(l,m,16)|0}c[l+(k<<4)>>2]=j+ -1;n=c[g>>2]|0;j=n+8|0;p=c[j>>2]|0;m=n+4|0;o=c[m>>2]|0;do{if(p>>>0>>0){o=(1<>2]=0;if(p>>>0>7){while(1){w=c[n>>2]|0;o=(jd[c[(c[w>>2]|0)+20>>2]&511](w)|0)&255|o<<8;p=p+ -8|0;if(p>>>0>7){}else{break}}}if((p|0)==0){break}v=c[n>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;c[m>>2]=v;w=8-p|0;c[j>>2]=w;o=v>>>w&(1<>2]=w;o=o>>>w&(1<>2]=o;c[l+(k<<4)+8>>2]=-3;j=k+1|0;c[l+(j<<4)>>2]=h;n=c[g>>2]|0;h=n+8|0;p=c[h>>2]|0;m=n+4|0;o=c[m>>2]|0;do{if(p>>>0>>0){o=(1<>2]=0;if(p>>>0>7){while(1){w=c[n>>2]|0;o=(jd[c[(c[w>>2]|0)+20>>2]&511](w)|0)&255|o<<8;p=p+ -8|0;if(p>>>0>7){}else{break}}}if((p|0)==0){break}v=c[n>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;c[m>>2]=v;w=8-p|0;c[h>>2]=w;o=v>>>w&(1<>2]=w;o=o>>>w&(1<>2]=o;c[l+(j<<4)+8>>2]=32;h=k+2|0;if((f|0)!=0){c[l+(h<<4)>>2]=0;j=c[g>>2]|0;g=j+8|0;n=c[g>>2]|0;f=j+4|0;m=c[f>>2]|0;do{if(n>>>0>>0){m=(1<>2]=0;if(e>>>0>7){while(1){w=c[j>>2]|0;m=(jd[c[(c[w>>2]|0)+20>>2]&511](w)|0)&255|m<<8;e=e+ -8|0;if(e>>>0>7){}else{break}}}if((e|0)==0){break}v=c[j>>2]|0;v=jd[c[(c[v>>2]|0)+20>>2]&511](v)|0;c[f>>2]=v;w=8-e|0;c[g>>2]=w;m=v>>>w&(1<>2]=w;m=m>>>w&(1<>2]=m;c[l+(h<<4)+8>>2]=-2;h=k+3|0}c[l+(h<<4)>>2]=0;c[l+(h<<4)+4>>2]=0;c[l+(h<<4)+8>>2]=-1;OC(0,l,h);v=c[a+56>>2]|0;w=FW(12)|0;c[w+4>>2]=b;c[w>>2]=177952;c[w+8>>2]=l;yo(v,w);i=d;return}}while(0);w=c[f>>2]|0;Qe(jd[c[(c[w>>2]|0)+48>>2]&511](w)|0,178296,e);i=d;return}function uD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;b=c[182448+(b<<2)>>2]|0;do{if((d|0)!=0){if((c[d+4>>2]|0)!=(b|0)){break}f=a+80|0;a=c[f>>2]|0;if((c[a+4>>2]|0)==(b|0)){AI(a,d);i=e;return}if((a|0)!=0){yI(a);HW(a)}c[f>>2]=zI(d)|0;i=e;return}}while(0);a=a+80|0;d=c[a>>2]|0;if((c[d+4>>2]|0)==(b|0)){xI(d);i=e;return}if((d|0)!=0){yI(d);HW(d)}f=FW(8)|0;wI(f,1<>2]=f;i=e;return}function vD(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;xI(c[a+88>>2]|0);xI(c[a+92>>2]|0);xI(c[a+96>>2]|0);xI(c[a+100>>2]|0);xI(c[a+104>>2]|0);xI(c[a+108>>2]|0);xI(c[a+112>>2]|0);xI(c[a+116>>2]|0);xI(c[a+120>>2]|0);xI(c[a+124>>2]|0);xI(c[a+128>>2]|0);xI(c[a+132>>2]|0);xI(c[a+136>>2]|0);e=a+140|0;a=c[e>>2]|0;b=1<>2]|0)==(b|0)){xI(a);i=d;return}if((a|0)!=0){yI(a);HW(a)}a=FW(8)|0;wI(a,b);c[e>>2]=a;i=d;return}function wD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;b=c[182464+(b<<2)>>2]|0;do{if((d|0)!=0){if((c[d+4>>2]|0)!=(b|0)){break}f=a+84|0;a=c[f>>2]|0;if((c[a+4>>2]|0)==(b|0)){AI(a,d);i=e;return}if((a|0)!=0){yI(a);HW(a)}c[f>>2]=zI(d)|0;i=e;return}}while(0);a=a+84|0;d=c[a>>2]|0;if((c[d+4>>2]|0)==(b|0)){xI(d);i=e;return}if((d|0)!=0){yI(d);HW(d)}f=FW(8)|0;wI(f,1<>2]=f;i=e;return}function xD(b,e,f,g,h,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var 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,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,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0;o=i;v=i;i=i+8|0;t=FW(24)|0;c[t+4>>2]=0;c[t>>2]=177856;q=t+8|0;c[q>>2]=e;r=t+12|0;c[r>>2]=f;u=e+7>>3;s=t+16|0;c[s>>2]=u;do{if((e|0)<1){p=5}else{if((f|0)<1|(u|0)<1){p=5;break}if((2147483646/(u|0)|0|0)<=(f|0)){p=5;break}u=we((da(u,f)|0)+1|0)|0;v=t+20|0;c[v>>2]=u;a[u+(da(c[s>>2]|0,c[r>>2]|0)|0)|0]=0;v=c[v>>2]|0;u=t+20|0;if((v|0)==0){break}bX(v|0,0,da(c[s>>2]|0,c[r>>2]|0)|0)|0;x=(g|0)!=0;y=x?8:16;if((f|0)<=0){Fa=t;i=o;return Fa|0}C=0-k|0;z=~k;v=1-l|0;w=j+8|0;g=j+12|0;B=(k|0)>-1;A=j+16|0;D=j+20|0;F=z>>3;E=z&7^7;G=(e|0)>0;j=b+76|0;K=b+84|0;b=(k|0)>0;J=1-k|0;M=C>>3;L=C&7^7;I=m+4|0;H=n+4|0;N=0;do{V=N+ -1|0;do{if((N|0)<1){P=0;Q=0;R=0;O=0}else{if((c[r>>2]|0)<=(V|0)){P=0;Q=0;R=0;O=0;break}P=c[q>>2]|0;if((P|0)<=0){P=0;Q=0;R=0;O=0;break}O=da(c[s>>2]|0,V)|0;O=(c[u>>2]|0)+O|0;if((O|0)==0){P=0;Q=7;R=0;O=0;break}R=(P|0)==1;P=1;Q=R?7:6;R=R?0:O;O=(d[O]|0)>>>7}}while(0);do{if((c[r>>2]|0)>(N|0)){if((c[q>>2]|0)<=-1){S=0;T=0;U=0;break}U=da(c[s>>2]|0,N)|0;S=-1;T=7;U=(c[u>>2]|0)+U|0}else{S=0;T=0;U=0}}while(0);oa=V-l|0;pa=(oa|0)<0;do{if(pa){W=0;X=0;Y=0}else{if((c[g>>2]|0)<=(oa|0)){W=0;X=0;Y=0;break}if((c[w>>2]|0)<=(C|0)){W=0;X=0;Y=0;break}V=da(c[A>>2]|0,oa)|0;if(b){W=C;X=7;Y=(c[D>>2]|0)+V|0;break}else{W=C;X=L;Y=(c[D>>2]|0)+(V+M)|0;break}}}while(0);do{if(x){ia=N-l|0;ja=(ia|0)<0;a:do{if(ja){_=0;$=0;V=0;p=36}else{if((c[g>>2]|0)<=(ia|0)){_=0;$=0;V=0;p=36;break}Z=c[w>>2]|0;if((Z|0)<=(z|0)){_=0;$=0;V=0;p=36;break}V=da(c[A>>2]|0,ia)|0;if(B){$=7;aa=(c[D>>2]|0)+V|0}else{$=E;aa=(c[D>>2]|0)+(V+F)|0}if((aa|0)==0){_=z;V=0;p=36;break}do{if(B){V=0}else{V=(d[aa]|0)>>>$&1;if((Z|0)==(C|0)){_=C;p=36;break a}if(($|0)==0){V=V<<1;aa=aa+1|0;$=7;break}else{V=V<<1;$=$+ -1|0;break}}}while(0);if((C|0)<0){_=1-k|0;ba=0;break}ba=(d[aa]|0)>>>$&1;_=1-k|0;if((_|0)==(Z|0)){aa=0;break}if(($|0)==0){$=7;aa=aa+1|0;break}else{$=$+ -1|0;break}}}while(0);if((p|0)==36){p=0;V=V<<1;aa=0;ba=0}V=ba|V;fa=v+N|0;ga=(fa|0)<0;do{if(ga){ba=0;ca=0;ea=0;Z=0}else{if((c[g>>2]|0)<=(fa|0)){ba=0;ca=0;ea=0;Z=0;break}ba=c[w>>2]|0;if((ba|0)<=(C|0)){ba=0;ca=0;ea=0;Z=0;break}Z=da(c[A>>2]|0,fa)|0;if(b){ca=7;ea=(c[D>>2]|0)+Z|0}else{ca=L;ea=(c[D>>2]|0)+(Z+M)|0}if((ea|0)==0){ba=C;ea=0;Z=0;break}if(b){ba=J;Z=0;break}Z=(d[ea]|0)>>>ca&1;if((J|0)==(ba|0)){ba=J;ea=0;break}if((ca|0)==0){ba=J;ca=7;ea=ea+1|0;break}else{ba=J;ca=ca+ -1|0;break}}}while(0);if(h){b:do{if(pa){oa=0;na=0;ka=0;p=68}else{if((c[g>>2]|0)<=(oa|0)){oa=0;na=0;ka=0;p=68;break}ha=c[w>>2]|0;if((ha|0)<=(z|0)){oa=0;na=0;ka=0;p=68;break}ka=da(c[A>>2]|0,oa)|0;if(B){na=7;ma=(c[D>>2]|0)+ka|0}else{na=E;ma=(c[D>>2]|0)+(ka+F)|0}if((ma|0)==0){oa=z;ka=0;p=68;break}do{if(B){ka=0}else{ka=(d[ma]|0)>>>na&1;if((ha|0)==(C|0)){oa=C;p=68;break b}if((na|0)==0){ka=ka<<1;ma=ma+1|0;na=7;break}else{ka=ka<<1;na=na+ -1|0;break}}}while(0);do{if((C|0)<0){oa=1-k|0;la=0;p=76}else{la=(d[ma]|0)>>>na&1;oa=1-k|0;if((oa|0)==(ha|0)){ha=(la|ka)<<1;ma=0;ka=0;break b}if((na|0)==0){ha=(la|ka)<<1;ma=ma+1|0;na=7;break}else{na=na+ -1|0;p=76;break}}}while(0);if((p|0)==76){p=0;ha=(la|ka)<<1;if((ma|0)==0){ma=0;ka=0;break}}if((oa|0)<0){oa=oa+1|0;ka=0;break}ka=(d[ma]|0)>>>na&1;oa=oa+1|0;if((oa|0)==(c[w>>2]|0)){ma=0;break}if((na|0)==0){na=7;ma=ma+1|0;break}else{na=na+ -1|0;break}}}while(0);if((p|0)==68){p=0;ha=ka<<2;ma=0;ka=0}ha=ka|ha;c:do{if(ja){la=0;ka=0;ia=0;p=95}else{if((c[g>>2]|0)<=(ia|0)){la=0;ka=0;ia=0;p=95;break}pa=c[w>>2]|0;if((pa|0)<=(z|0)){la=0;ka=0;ia=0;p=95;break}ia=da(c[A>>2]|0,ia)|0;if(B){ka=7;ja=(c[D>>2]|0)+ia|0}else{ka=E;ja=(c[D>>2]|0)+(ia+F)|0}if((ja|0)==0){la=z;ia=0;p=95;break}do{if(B){ia=0}else{ia=(d[ja]|0)>>>ka&1;if((pa|0)==(C|0)){la=C;p=95;break c}if((ka|0)==0){ia=ia<<1;ja=ja+1|0;ka=7;break}else{ia=ia<<1;ka=ka+ -1|0;break}}}while(0);do{if((C|0)<0){la=1-k|0;qa=0;p=103}else{qa=(d[ja]|0)>>>ka&1;la=1-k|0;if((la|0)==(pa|0)){ia=(qa|ia)<<1;ja=0;pa=0;break c}if((ka|0)==0){ia=(qa|ia)<<1;ja=ja+1|0;ka=7;break}else{ka=ka+ -1|0;p=103;break}}}while(0);if((p|0)==103){p=0;ia=(qa|ia)<<1;if((ja|0)==0){ja=0;pa=0;break}}if((la|0)<0){la=la+1|0;pa=0;break}pa=(d[ja]|0)>>>ka&1;la=la+1|0;if((la|0)==(c[w>>2]|0)){ja=0;break}if((ka|0)==0){ka=7;ja=ja+1|0;break}else{ka=ka+ -1|0;break}}}while(0);if((p|0)==95){p=0;ia=ia<<2;ja=0;pa=0}qa=pa|ia;d:do{if(ga){ia=0;ga=0;pa=0;p=122}else{if((c[g>>2]|0)<=(fa|0)){ia=0;ga=0;pa=0;p=122;break}ia=c[w>>2]|0;if((ia|0)<=(z|0)){ia=0;ga=0;pa=0;p=122;break}fa=da(c[A>>2]|0,fa)|0;if(B){ga=7;fa=(c[D>>2]|0)+fa|0}else{ga=E;fa=(c[D>>2]|0)+(fa+F)|0}if((fa|0)==0){ia=z;pa=0;p=122;break}do{if(B){pa=0}else{pa=(d[fa]|0)>>>ga&1;if((ia|0)==(C|0)){ia=C;p=122;break d}if((ga|0)==0){pa=pa<<1;fa=fa+1|0;ga=7;break}else{pa=pa<<1;ga=ga+ -1|0;break}}}while(0);do{if((C|0)<0){ia=1-k|0;sa=0;p=130}else{sa=(d[fa]|0)>>>ga&1;ra=1-k|0;if((ra|0)==(ia|0)){pa=(sa|pa)<<1;fa=0;ra=0;break d}if((ga|0)==0){pa=(sa|pa)<<1;fa=fa+1|0;ga=7;ia=ra;break}else{ia=ra;ga=ga+ -1|0;p=130;break}}}while(0);if((p|0)==130){p=0;pa=(sa|pa)<<1;if((fa|0)==0){fa=0;ra=0;break}}if((ia|0)<0){ia=ia+1|0;ra=0;break}ra=(d[fa]|0)>>>ga&1;ia=ia+1|0;if((ia|0)==(c[w>>2]|0)){fa=0;break}if((ga|0)==0){ga=7;fa=fa+1|0;break}else{ga=ga+ -1|0;break}}}while(0);if((p|0)==122){p=0;pa=pa<<2;fa=0;ra=0}pa=ra|pa}else{oa=0;na=0;ma=0;la=0;ka=0;ja=0;ia=0;ga=0;fa=0;ha=0;qa=0;pa=0}if(G){ra=ha;ha=0}else{break}do{O=O<<1;do{if((R|0)==0){R=0;sa=0}else{if((P|0)<0){P=P+1|0;sa=0;break}sa=(d[R]|0)>>>Q&1;P=P+1|0;if((P|0)==(c[q>>2]|0)){R=0;break}if((Q|0)==0){Q=7;R=R+1|0;break}else{Q=Q+ -1|0;break}}}while(0);O=sa|O&6;V=V<<1;do{if((aa|0)==0){aa=0;sa=0}else{if((_|0)<0){_=_+1|0;sa=0;break}sa=(d[aa]|0)>>>$&1;_=_+1|0;if((_|0)==(c[w>>2]|0)){aa=0;break}if(($|0)==0){$=7;aa=aa+1|0;break}else{$=$+ -1|0;break}}}while(0);V=sa|V&6;Z=Z<<1;do{if((ea|0)==0){ea=0;sa=0}else{if((ba|0)<0){ba=ba+1|0;sa=0;break}sa=(d[ea]|0)>>>ca&1;ba=ba+1|0;if((ba|0)==(c[w>>2]|0)){ea=0;break}if((ca|0)==0){ca=7;ea=ea+1|0;break}else{ca=ca+ -1|0;break}}}while(0);Z=sa|Z&2;do{if(h){ra=ra<<1;do{if((ma|0)==0){ma=0;sa=0}else{if((oa|0)<0){oa=oa+1|0;sa=0;break}sa=(d[ma]|0)>>>na&1;oa=oa+1|0;if((oa|0)==(c[w>>2]|0)){ma=0;break}if((na|0)==0){na=7;ma=ma+1|0;break}else{na=na+ -1|0;break}}}while(0);ra=sa|ra&6;qa=qa<<1;do{if((ja|0)==0){ja=0;sa=0}else{if((la|0)<0){la=la+1|0;sa=0;break}sa=(d[ja]|0)>>>ka&1;la=la+1|0;if((la|0)==(c[w>>2]|0)){ja=0;break}if((ka|0)==0){ka=7;ja=ja+1|0;break}else{ka=ka+ -1|0;break}}}while(0);qa=sa|qa&6;pa=pa<<1;do{if((fa|0)==0){fa=0;sa=0}else{if((ia|0)<0){ia=ia+1|0;sa=0;break}sa=(d[fa]|0)>>>ga&1;ia=ia+1|0;if((ia|0)==(c[w>>2]|0)){fa=0;break}if((ga|0)==0){ga=7;fa=fa+1|0;break}else{ga=ga+ -1|0;break}}}while(0);pa=sa|pa&6;II(c[j>>2]|0,y,c[K>>2]|0)|0;if((qa|ra|pa|0)==0){Fa=(da(c[s>>2]|0,N)|0)+(ha>>3)|0;Fa=(c[u>>2]|0)+Fa|0;a[Fa]=(d[Fa]|0)&32639>>>(ha&7);break}if(!((ra|0)==7&(qa|0)==7&(pa|0)==7)){p=186;break}ra=(da(c[s>>2]|0,N)|0)+(ha>>3)|0;ra=(c[u>>2]|0)+ra|0;a[ra]=d[ra]|0|1<<(ha&7^7);ra=7;qa=7;pa=7}else{p=186}}while(0);do{if((p|0)==186){p=0;sa=O<<7;do{if((U|0)==0){U=0;ta=0}else{if((S|0)<0){S=S+1|0;ta=0;break}ta=(d[U]|0)>>>T&1;S=S+1|0;if((S|0)==(c[q>>2]|0)){U=0;break}if((T|0)==0){T=7;U=U+1|0;break}else{T=T+ -1|0;break}}}while(0);ta=ta<<6;do{if((Y|0)==0){Y=0;ua=0}else{if((W|0)<0){W=W+1|0;ua=0;break}ua=(d[Y]|0)>>>X&1;W=W+1|0;if((W|0)==(c[w>>2]|0)){Y=0;break}if((X|0)==0){X=7;Y=Y+1|0;break}else{X=X+ -1|0;break}}}while(0);if((II(c[j>>2]|0,V<<2|sa|Z|ta|ua<<5,c[K>>2]|0)|0)==0){break}Fa=(da(c[s>>2]|0,N)|0)+(ha>>3)|0;Fa=(c[u>>2]|0)+Fa|0;a[Fa]=d[Fa]|0|1<<(ha&7^7)}}while(0);ha=ha+1|0;}while((ha|0)<(e|0))}else{do{if((Y|0)==0){Y=0;V=0}else{if((W|0)<0){W=W+1|0;V=0;break}V=(d[Y]|0)>>>X&1;W=W+1|0;if((W|0)==(c[w>>2]|0)){Y=0;break}if((X|0)==0){X=7;Y=Y+1|0;break}else{X=X+ -1|0;break}}}while(0);qa=N-l|0;ra=(qa|0)<0;e:do{if(ra){_=0;$=0;Z=0;p=222}else{if((c[g>>2]|0)<=(qa|0)){_=0;$=0;Z=0;p=222;break}ba=c[w>>2]|0;if((ba|0)<=(z|0)){_=0;$=0;Z=0;p=222;break}Z=da(c[A>>2]|0,qa)|0;if(B){$=7;aa=(c[D>>2]|0)+Z|0}else{$=E;aa=(c[D>>2]|0)+(Z+F)|0}if((aa|0)==0){_=z;Z=0;p=222;break}do{if(B){Z=0}else{Z=(d[aa]|0)>>>$&1;if((ba|0)==(C|0)){_=C;p=222;break e}if(($|0)==0){Z=Z<<1;aa=aa+1|0;$=7;break}else{Z=Z<<1;$=$+ -1|0;break}}}while(0);if((C|0)<0){_=1-k|0;ca=0;break}ca=(d[aa]|0)>>>$&1;_=1-k|0;if((_|0)==(ba|0)){aa=0;break}if(($|0)==0){$=7;aa=aa+1|0;break}else{$=$+ -1|0;break}}}while(0);if((p|0)==222){p=0;Z=Z<<1;aa=0;ca=0}Z=ca|Z;ha=v+N|0;la=(ha|0)<0;f:do{if(la){ga=0;ia=0;ba=0;p=241}else{if((c[g>>2]|0)<=(ha|0)){ga=0;ia=0;ba=0;p=241;break}ea=c[w>>2]|0;if((ea|0)<=(z|0)){ga=0;ia=0;ba=0;p=241;break}ba=da(c[A>>2]|0,ha)|0;if(B){ia=7;ka=(c[D>>2]|0)+ba|0}else{ia=E;ka=(c[D>>2]|0)+(ba+F)|0}if((ka|0)==0){ga=z;ba=0;p=241;break}do{if(B){ba=0}else{ba=(d[ka]|0)>>>ia&1;if((ea|0)==(C|0)){ga=C;p=241;break f}if((ia|0)==0){ba=ba<<1;ka=ka+1|0;ia=7;break}else{ba=ba<<1;ia=ia+ -1|0;break}}}while(0);if((C|0)<0){ga=1-k|0;ca=0;break}ca=(d[ka]|0)>>>ia&1;ga=1-k|0;if((ga|0)==(ea|0)){ka=0;break}if((ia|0)==0){ia=7;ka=ka+1|0;break}else{ia=ia+ -1|0;break}}}while(0);if((p|0)==241){p=0;ba=ba<<1;ka=0;ca=0}ba=ca|ba;ca=c[m>>2]|0;ea=(c[n>>2]|0)+N|0;do{if((ea|0)<0){na=0;ma=0;ja=0}else{if((c[r>>2]|0)<=(ea|0)){na=0;ma=0;ja=0;break}if((c[q>>2]|0)<=(ca|0)){na=0;ma=0;ja=0;break}ea=da(c[s>>2]|0,ea)|0;if((ca|0)<0){na=ca;ma=7;ja=(c[u>>2]|0)+ea|0;break}else{na=ca;ma=ca&7^7;ja=(c[u>>2]|0)+(ea+(ca>>3))|0;break}}}while(0);ca=(c[I>>2]|0)-k|0;ea=qa+(c[H>>2]|0)|0;do{if((ea|0)<0){fa=0;ea=0;ca=0}else{if((c[g>>2]|0)<=(ea|0)){fa=0;ea=0;ca=0;break}if((c[w>>2]|0)<=(ca|0)){fa=0;ea=0;ca=0;break}sa=da(c[A>>2]|0,ea)|0;if((ca|0)<0){fa=ca;ea=7;ca=(c[D>>2]|0)+sa|0;break}else{fa=ca;ea=ca&7^7;ca=(c[D>>2]|0)+(sa+(ca>>3))|0;break}}}while(0);if(h){g:do{if(pa){va=0;ua=0;oa=0;p=273}else{if((c[g>>2]|0)<=(oa|0)){va=0;ua=0;oa=0;p=273;break}pa=c[w>>2]|0;if((pa|0)<=(z|0)){va=0;ua=0;oa=0;p=273;break}oa=da(c[A>>2]|0,oa)|0;if(B){ua=7;ta=(c[D>>2]|0)+oa|0}else{ua=E;ta=(c[D>>2]|0)+(oa+F)|0}if((ta|0)==0){va=z;oa=0;p=273;break}do{if(B){oa=0}else{oa=(d[ta]|0)>>>ua&1;if((pa|0)==(C|0)){va=C;p=273;break g}if((ua|0)==0){oa=oa<<1;ta=ta+1|0;ua=7;break}else{oa=oa<<1;ua=ua+ -1|0;break}}}while(0);do{if((C|0)<0){va=1-k|0;sa=0;p=281}else{sa=(d[ta]|0)>>>ua&1;va=1-k|0;if((va|0)==(pa|0)){oa=(sa|oa)<<1;ta=0;pa=0;break g}if((ua|0)==0){oa=(sa|oa)<<1;ta=ta+1|0;ua=7;break}else{ua=ua+ -1|0;p=281;break}}}while(0);if((p|0)==281){p=0;oa=(sa|oa)<<1;if((ta|0)==0){ta=0;pa=0;break}}if((va|0)<0){va=va+1|0;pa=0;break}pa=(d[ta]|0)>>>ua&1;va=va+1|0;if((va|0)==(c[w>>2]|0)){ta=0;break}if((ua|0)==0){ua=7;ta=ta+1|0;break}else{ua=ua+ -1|0;break}}}while(0);if((p|0)==273){p=0;oa=oa<<2;ta=0;pa=0}pa=pa|oa;h:do{if(ra){sa=0;ra=0;oa=0;p=300}else{if((c[g>>2]|0)<=(qa|0)){sa=0;ra=0;oa=0;p=300;break}wa=c[w>>2]|0;if((wa|0)<=(z|0)){sa=0;ra=0;oa=0;p=300;break}oa=da(c[A>>2]|0,qa)|0;if(B){ra=7;qa=(c[D>>2]|0)+oa|0}else{ra=E;qa=(c[D>>2]|0)+(oa+F)|0}if((qa|0)==0){sa=z;oa=0;p=300;break}do{if(B){oa=0}else{oa=(d[qa]|0)>>>ra&1;if((wa|0)==(C|0)){sa=C;p=300;break h}if((ra|0)==0){oa=oa<<1;qa=qa+1|0;ra=7;break}else{oa=oa<<1;ra=ra+ -1|0;break}}}while(0);do{if((C|0)<0){sa=1-k|0;xa=0;p=308}else{xa=(d[qa]|0)>>>ra&1;sa=1-k|0;if((sa|0)==(wa|0)){oa=(xa|oa)<<1;qa=0;wa=0;break h}if((ra|0)==0){oa=(xa|oa)<<1;qa=qa+1|0;ra=7;break}else{ra=ra+ -1|0;p=308;break}}}while(0);if((p|0)==308){p=0;oa=(xa|oa)<<1;if((qa|0)==0){qa=0;wa=0;break}}if((sa|0)<0){sa=sa+1|0;wa=0;break}wa=(d[qa]|0)>>>ra&1;sa=sa+1|0;if((sa|0)==(c[w>>2]|0)){qa=0;break}if((ra|0)==0){ra=7;qa=qa+1|0;break}else{ra=ra+ -1|0;break}}}while(0);if((p|0)==300){p=0;oa=oa<<2;qa=0;wa=0}xa=wa|oa;i:do{if(la){oa=0;la=0;wa=0;p=327}else{if((c[g>>2]|0)<=(ha|0)){oa=0;la=0;wa=0;p=327;break}ya=c[w>>2]|0;if((ya|0)<=(z|0)){oa=0;la=0;wa=0;p=327;break}ha=da(c[A>>2]|0,ha)|0;if(B){la=7;ha=(c[D>>2]|0)+ha|0}else{la=E;ha=(c[D>>2]|0)+(ha+F)|0}if((ha|0)==0){oa=z;wa=0;p=327;break}do{if(B){wa=0}else{wa=(d[ha]|0)>>>la&1;if((ya|0)==(C|0)){oa=C;p=327;break i}if((la|0)==0){wa=wa<<1;ha=ha+1|0;la=7;break}else{wa=wa<<1;la=la+ -1|0;break}}}while(0);do{if((C|0)<0){oa=1-k|0;za=0;p=335}else{za=(d[ha]|0)>>>la&1;oa=1-k|0;if((oa|0)==(ya|0)){wa=(za|wa)<<1;ha=0;za=0;break i}if((la|0)==0){wa=(za|wa)<<1;ha=ha+1|0;la=7;break}else{la=la+ -1|0;p=335;break}}}while(0);if((p|0)==335){p=0;wa=(za|wa)<<1;if((ha|0)==0){ha=0;za=0;break}}if((oa|0)<0){oa=oa+1|0;za=0;break}za=(d[ha]|0)>>>la&1;oa=oa+1|0;if((oa|0)==(c[w>>2]|0)){ha=0;break}if((la|0)==0){la=7;ha=ha+1|0;break}else{la=la+ -1|0;break}}}while(0);if((p|0)==327){p=0;wa=wa<<2;ha=0;za=0}ya=pa;wa=za|wa}else{va=0;ua=0;ta=0;sa=0;ra=0;qa=0;oa=0;la=0;ha=0;ya=0;xa=0;wa=0}if(G){pa=na;na=0}else{break}do{O=O<<1;do{if((R|0)==0){R=0;za=0}else{if((P|0)<0){P=P+1|0;za=0;break}za=(d[R]|0)>>>Q&1;P=P+1|0;if((P|0)==(c[q>>2]|0)){R=0;break}if((Q|0)==0){Q=7;R=R+1|0;break}else{Q=Q+ -1|0;break}}}while(0);O=za|O&2;V=V<<1;do{if((Y|0)==0){Y=0;za=0}else{if((W|0)<0){W=W+1|0;za=0;break}za=(d[Y]|0)>>>X&1;W=W+1|0;if((W|0)==(c[w>>2]|0)){Y=0;break}if((X|0)==0){X=7;Y=Y+1|0;break}else{X=X+ -1|0;break}}}while(0);V=za|V&2;Z=Z<<1;do{if((aa|0)==0){aa=0;za=0}else{if((_|0)<0){_=_+1|0;za=0;break}za=(d[aa]|0)>>>$&1;_=_+1|0;if((_|0)==(c[w>>2]|0)){aa=0;break}if(($|0)==0){$=7;aa=aa+1|0;break}else{$=$+ -1|0;break}}}while(0);Z=za|Z&6;ba=ba<<1;do{if((ka|0)==0){ka=0;za=0}else{if((ga|0)<0){ga=ga+1|0;za=0;break}za=(d[ka]|0)>>>ia&1;ga=ga+1|0;if((ga|0)==(c[w>>2]|0)){ka=0;break}if((ia|0)==0){ia=7;ka=ka+1|0;break}else{ia=ia+ -1|0;break}}}while(0);ba=za|ba&6;do{if(h){ya=ya<<1;do{if((ta|0)==0){ta=0;za=0}else{if((va|0)<0){va=va+1|0;za=0;break}za=(d[ta]|0)>>>ua&1;va=va+1|0;if((va|0)==(c[w>>2]|0)){ta=0;break}if((ua|0)==0){ua=7;ta=ta+1|0;break}else{ua=ua+ -1|0;break}}}while(0);ya=za|ya&6;xa=xa<<1;do{if((qa|0)==0){qa=0;za=0}else{if((sa|0)<0){sa=sa+1|0;za=0;break}za=(d[qa]|0)>>>ra&1;sa=sa+1|0;if((sa|0)==(c[w>>2]|0)){qa=0;break}if((ra|0)==0){ra=7;qa=qa+1|0;break}else{ra=ra+ -1|0;break}}}while(0);xa=za|xa&6;wa=wa<<1;do{if((ha|0)==0){ha=0;za=0}else{if((oa|0)<0){oa=oa+1|0;za=0;break}za=(d[ha]|0)>>>la&1;oa=oa+1|0;if((oa|0)==(c[w>>2]|0)){ha=0;break}if((la|0)==0){la=7;ha=ha+1|0;break}else{la=la+ -1|0;break}}}while(0);wa=za|wa&6;II(c[j>>2]|0,y,c[K>>2]|0)|0;if((xa|ya|wa|0)==0){Fa=(da(c[s>>2]|0,N)|0)+(na>>3)|0;Fa=(c[u>>2]|0)+Fa|0;a[Fa]=(d[Fa]|0)&32639>>>(na&7);break}if(!((ya|0)==7&(xa|0)==7&(wa|0)==7)){p=398;break}ya=(da(c[s>>2]|0,N)|0)+(na>>3)|0;ya=(c[u>>2]|0)+ya|0;a[ya]=d[ya]|0|1<<(na&7^7);ya=7;xa=7;wa=7}else{p=398}}while(0);do{if((p|0)==398){p=0;za=O<<11;do{if((U|0)==0){U=0;Aa=0}else{if((S|0)<0){S=S+1|0;Aa=0;break}Aa=(d[U]|0)>>>T&1;S=S+1|0;if((S|0)==(c[q>>2]|0)){U=0;break}if((T|0)==0){T=7;U=U+1|0;break}else{T=T+ -1|0;break}}}while(0);Aa=Aa<<10;Da=V<<8;Ba=Z<<5;Ca=ba<<2;do{if((ja|0)==0){ja=0;Ea=0}else{if((pa|0)<0){pa=pa+1|0;Ea=0;break}Ea=(d[ja]|0)>>>ma&1;pa=pa+1|0;if((pa|0)==(c[q>>2]|0)){ja=0;break}if((ma|0)==0){ma=7;ja=ja+1|0;break}else{ma=ma+ -1|0;break}}}while(0);Ea=Ea<<1;do{if((ca|0)==0){ca=0;Fa=0}else{if((fa|0)<0){fa=fa+1|0;Fa=0;break}Fa=(d[ca]|0)>>>ea&1;fa=fa+1|0;if((fa|0)==(c[w>>2]|0)){ca=0;break}if((ea|0)==0){ea=7;ca=ca+1|0;break}else{ea=ea+ -1|0;break}}}while(0);if((II(c[j>>2]|0,Da|za|Ba|Ca|Aa|Ea|Fa,c[K>>2]|0)|0)==0){break}Fa=(da(c[s>>2]|0,N)|0)+(na>>3)|0;Fa=(c[u>>2]|0)+Fa|0;a[Fa]=d[Fa]|0|1<<(na&7^7)}}while(0);na=na+1|0;}while((na|0)<(e|0))}}while(0);N=N+1|0;}while((N|0)<(f|0));i=o;return t|0}}while(0);do{if((p|0)==5){Qe(-1,177872,v);c[t+20>>2]=0;if((t|0)==0){t=0}else{break}i=o;return t|0}}while(0);fd[c[(c[t>>2]|0)+4>>2]&511](t);Fa=0;i=o;return Fa|0}function yD(b,d,e,f,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;x=x|0;y=y|0;z=z|0;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,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;E=i;V=i;i=i+8|0;ba=i;i=i+8|0;J=i;i=i+8|0;Z=J;I=i;i=i+8|0;H=I;F=i;i=i+8|0;G=F;X=i;i=i+8|0;W=X;L=i;i=i+8|0;T=L;M=i;i=i+8|0;S=M;N=i;i=i+8|0;R=N;O=i;i=i+8|0;Q=O;K=i;i=i+8|0;U=K;P=i;i=i+8|0;ja=1<>2]=0;c[Y>>2]=177856;c[Y+8>>2]=f;$=Y+12|0;c[$>>2]=g;aa=f+7>>3;_=Y+16|0;c[_>>2]=aa;do{if((f|0)<1){qa=5}else{if((g|0)<1|(aa|0)<1){qa=5;break}if((2147483646/(aa|0)|0|0)<=(g|0)){qa=5;break}wa=we((da(aa,g)|0)+1|0)|0;f=Y+20|0;c[f>>2]=wa;a[wa+(da(c[_>>2]|0,c[$>>2]|0)|0)|0]=0;f=c[f>>2]|0;if((f|0)==0){break}_=da(c[_>>2]|0,c[$>>2]|0)|0;if((o|0)==0){bX(f|0,0,_|0)|0}else{bX(f|0,-1,_|0)|0}if(d){NC(c[b+144>>2]|0,Z,v)|0}else{JI(c[b+76>>2]|0,Z,c[b+104>>2]|0)|0}c[J>>2]=da(c[J>>2]|0,0-ja|0)|0;if((h|0)==0){wa=Y;i=E;return wa|0}ca=b+144|0;fa=(ja|0)==1;Z=(l|0)==0;ba=(m|0)==32;g=(1<>2]|0,H,v)|0;c[J>>2]=(c[J>>2]|0)+(c[I>>2]<>2]|0,G,t)|0}else{JI(c[ea>>2]|0,H,c[ja>>2]|0)|0;c[J>>2]=(c[J>>2]|0)+(c[I>>2]<>2]|0,G,c[la>>2]|0)|0}na=(c[F>>2]|0)+na|0;b:do{if(oa>>>0>>0){pa=na;while(1){do{if(fa){ta=0;qa=30}else{if(!d){JI(c[ea>>2]|0,H,c[ka>>2]|0)|0;ra=(c[I>>2]|0)+(c[J>>2]|0)|0;qa=40;break}ra=c[ca>>2]|0;sa=ra+8|0;ua=c[sa>>2]|0;qa=ra+4|0;ta=c[qa>>2]|0;if(ua>>>0>=j>>>0){qa=ua-j|0;ra=ta>>>qa&ma;c[sa>>2]=qa;c[I>>2]=ra;ra=(c[J>>2]|0)+ra|0;qa=31;break}ta=(1<>2]=0;if(ua>>>0>7){while(1){wa=c[ra>>2]|0;ta=(jd[c[(c[wa>>2]|0)+20>>2]&511](wa)|0)&255|ta<<8;ua=ua+ -8|0;if(ua>>>0>7){}else{break}}}if((ua|0)==0){qa=30;break}wa=c[ra>>2]|0;wa=jd[c[(c[wa>>2]|0)+20>>2]&511](wa)|0;c[qa>>2]=wa;qa=8-ua|0;c[sa>>2]=qa;ta=wa>>>qa&(1<>2]=ta;ra=(c[J>>2]|0)+ta|0;if(d){qa=31}else{qa=40}}do{if((qa|0)==31){qa=0;ta=c[ca>>2]|0;if(!Z){NC(ta,W,l)|0;sa=c[X>>2]|0;break}sa=ta+8|0;va=c[sa>>2]|0;ua=ta+4|0;wa=c[ua>>2]|0;if(va>>>0>=m>>>0){va=va-m|0;c[sa>>2]=va;sa=wa>>>va&(ba?-1:g);break}wa=(1<>2]=0;if(va>>>0>7){while(1){xa=c[ta>>2]|0;wa=(jd[c[(c[xa>>2]|0)+20>>2]&511](xa)|0)&255|wa<<8;va=va+ -8|0;if(va>>>0>7){}else{break}}}if((va|0)==0){sa=wa;break}ta=c[ta>>2]|0;ta=jd[c[(c[ta>>2]|0)+20>>2]&511](ta)|0;c[ua>>2]=ta;xa=8-va|0;c[sa>>2]=xa;sa=ta>>>xa&(1<>2]|0,m,c[ia>>2]|0)|0}}while(0);do{if(sa>>>0>>0){do{if(e){if(d){ua=c[ca>>2]|0;ta=ua+8|0;va=c[ta>>2]|0;if((va|0)==0){va=c[ua>>2]|0;va=jd[c[(c[va>>2]|0)+20>>2]&511](va)|0;c[ua+4>>2]=va;c[ta>>2]=8;ua=va;va=7}else{ua=c[ua+4>>2]|0;va=va+ -1|0}c[ta>>2]=va;ta=ua>>>va&1;c[K>>2]=ta}else{JI(c[ea>>2]|0,U,c[o>>2]|0)|0;ta=c[K>>2]|0}if((ta|0)==0){qa=64;break}if(d){xa=NC(c[ca>>2]|0,T,w)|0;ta=c[ca>>2]|0;if(!xa){qa=82;break a}xa=NC(ta,S,x)|0;ta=c[ca>>2]|0;if(!xa){qa=81;break a}xa=NC(ta,R,y)|0;ta=c[ca>>2]|0;if(!xa){qa=80;break a}xa=NC(ta,Q,z)|0;ta=c[ca>>2]|0;if(!xa){qa=79;break a}xa=NC(ta,P,A)|0;wa=c[ca>>2]|0;c[wa+4>>2]=0;c[wa+8>>2]=0;FI(c[ea>>2]|0);if(!xa){break a}}else{if(!(JI(c[ea>>2]|0,T,c[aa>>2]|0)|0)){break a}if(!(JI(c[ea>>2]|0,S,c[_>>2]|0)|0)){break a}if(!(JI(c[ea>>2]|0,R,c[$>>2]|0)|0)){break a}if(!(JI(c[ea>>2]|0,Q,c[f>>2]|0)|0)){break a}}sa=c[n+(sa<<2)>>2]|0;if((sa|0)==0){break a}wa=c[L>>2]|0;xa=c[M>>2]|0;sa=xD(b,(c[sa+8>>2]|0)+wa|0,(c[sa+12>>2]|0)+xa|0,B,0,sa,(c[N>>2]|0)+(((wa>>31)+wa|0)/2|0)|0,(c[O>>2]|0)+(((xa>>31)+xa|0)/2|0)|0,C,D)|0}else{c[K>>2]=0;qa=64}}while(0);if((qa|0)==64){qa=0;sa=c[n+(sa<<2)>>2]|0}if((sa|0)==0){break a}ta=(c[sa+8>>2]|0)+ -1|0;qa=(c[sa+12>>2]|0)+ -1|0;do{if(ha){if((r|0)==1){WC(Y,sa,pa,ra,p);qa=ta;break}else if((r|0)==0){WC(Y,sa,pa,ra-qa|0,p);qa=ta;break}else if((r|0)==3){WC(Y,sa,pa,ra,p);qa=ta;break}else if((r|0)==2){WC(Y,sa,pa,ra-qa|0,p);qa=ta;break}else{qa=ta;break}}else{if((r|0)==3){WC(Y,sa,ra-ta|0,pa,p);break}else if((r|0)==2){WC(Y,sa,ra-ta|0,pa,p);break}else if((r|0)==1){WC(Y,sa,ra,pa,p);break}else if((r|0)==0){WC(Y,sa,ra,pa,p);break}else{break}}}while(0);pa=qa+pa|0;if((c[K>>2]|0)==0){break}fd[c[(c[sa>>2]|0)+4>>2]&511](sa)}else{xa=c[ga>>2]|0;Qe(jd[c[(c[xa>>2]|0)+48>>2]&511](xa)|0,181960,V)}}while(0);oa=oa+1|0;if(d){if(!(NC(c[ca>>2]|0,G,u)|0)){break b}}else{if(!(JI(c[ea>>2]|0,G,c[q>>2]|0)|0)){break b}}if(oa>>>0>>0){pa=pa+s+(c[F>>2]|0)|0}else{break}}}}while(0);if(oa>>>0>=h>>>0){qa=89;break}}if((qa|0)==79){c[ta+4>>2]=0;c[ta+8>>2]=0;FI(c[ea>>2]|0)}else if((qa|0)==80){c[ta+4>>2]=0;c[ta+8>>2]=0;FI(c[ea>>2]|0)}else if((qa|0)==81){c[ta+4>>2]=0;c[ta+8>>2]=0;FI(c[ea>>2]|0)}else if((qa|0)==82){c[ta+4>>2]=0;c[ta+8>>2]=0;FI(c[ea>>2]|0)}else if((qa|0)==89){i=E;return Y|0}if((Y|0)==0){xa=0;i=E;return xa|0}fd[c[(c[Y>>2]|0)+4>>2]&511](Y);xa=0;i=E;return xa|0}}while(0);do{if((qa|0)==5){Qe(-1,177872,ba);c[Y+20>>2]=0;if((Y|0)==0){Y=0}else{break}i=E;return Y|0}}while(0);fd[c[(c[Y>>2]|0)+4>>2]&511](Y);xa=0;i=E;return xa|0} - - - -function ZR(a,d){a=a|0;d=d|0;var 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,A=0,B=0,C=0;h=i;g=i;i=i+8|0;q=g;j=i;i=i+8|0;k=i;i=i+8|0;l=k;f=c[d+28>>2]|0;m=c[a+712>>2]|0;if((m|0)==0){c[g>>2]=0;B=0;A=0;z=0;lJ(f,z);lJ(f,A);lJ(f,B);B=g;B=c[B>>2]|0;i=h;return B|0}n=a+672|0;if((c[n>>2]|0)==0){c[g>>2]=0;B=0;A=0;z=0;lJ(f,z);lJ(f,A);lJ(f,B);B=g;B=c[B>>2]|0;i=h;return B|0}B=pd[c[a+508>>2]&63](a,1668702578,d,j)|0;c[g>>2]=B;if((B|0)!=0){c[g>>2]=0;B=0;A=0;z=0;lJ(f,z);lJ(f,A);lJ(f,B);B=g;B=c[B>>2]|0;i=h;return B|0}B=MK(d,c[j>>2]|0)|0;c[g>>2]=B;if((B|0)!=0){c[g>>2]=0;B=0;A=0;z=0;lJ(f,z);lJ(f,A);lJ(f,B);B=g;B=c[B>>2]|0;i=h;return B|0}p=d+32|0;u=(c[p>>2]|0)-(c[d>>2]|0)|0;do{if((TK(d)|0)==65536){j=oJ(f,4,0,c[m>>2]|0,0,q)|0;if((c[g>>2]|0)!=0){r=0;o=0;break}o=oJ(f,4,0,c[m>>2]|0,0,q)|0;if((c[g>>2]|0)!=0){r=0;break}r=oJ(f,4,0,c[m>>2]|0,0,q)|0;if((c[g>>2]|0)!=0){break}q=(RK(d)|0)&65535;v=RK(d)|0;q=q&4095;if((q|0)==0){break}a=a+668|0;s=0;v=u+(v&65535)|0;while(1){u=(RK(d)|0)&65535;w=RK(d)|0;x=w&65535;do{if((x&32768|0)==0){if((x&16384|0)==0){break}if((c[m>>2]&2147483647|0)==0){break}else{w=0}do{RK(d)|0;w=w+1|0;}while(w>>>0>2]<<1>>>0)}else{if((c[m>>2]|0)==0){z=0}else{y=0;while(1){c[j+(y<<2)>>2]=(RK(d)|0)<<16>>16<<2;y=y+1|0;z=c[m>>2]|0;if(y>>>0>>0){}else{break}}}do{if(!((x&16384|0)==0|(z|0)==0)){z=0;do{c[o+(z<<2)>>2]=(RK(d)|0)<<16>>16<<2;z=z+1|0;y=c[m>>2]|0;}while(z>>>0>>0);if((y|0)==0){break}else{y=0}do{c[r+(y<<2)>>2]=(RK(d)|0)<<16>>16<<2;y=y+1|0;}while(y>>>0<(c[m>>2]|0)>>>0)}}while(0);w=_R(m,w,j,o,r)|0;if((w|0)==0){break}if((x&8192|0)==0){break}x=c[d>>2]|0;y=(c[p>>2]|0)-x|0;c[p>>2]=x+v;x=$R(d,l)|0;A=c[k>>2]|0;B=(A|0)==0;if(B){z=c[a>>2]|0}else{z=A}z=aS(d,z)|0;do{if((x|0)==0|(z|0)==0){t=36}else{if((x|0)==-1){if((c[a>>2]|0)==0){break}else{t=0}while(1){B=e[(c[n>>2]|0)+(t<<1)>>1]|0;B=(aJ(b[z+(t<<1)>>1]|0,w)|0)+B&65535;b[(c[n>>2]|0)+(t<<1)>>1]=B;t=t+1|0;if(t>>>0<(c[a>>2]|0)>>>0){}else{t=36;break}}}else{if(B){t=37;break}else{t=0}while(1){B=e[x+(t<<1)>>1]|0;C=e[(c[n>>2]|0)+(B<<1)>>1]|0;C=(aJ(b[z+(t<<1)>>1]|0,w)|0)+C&65535;b[(c[n>>2]|0)+(B<<1)>>1]=C;t=t+1|0;if(t>>>0>>0){}else{t=36;break}}}}}while(0);if((t|0)==36){t=0;if((x|0)!=-1){t=37}}if((t|0)==37){t=0;lJ(f,x)}lJ(f,z);c[p>>2]=(c[d>>2]|0)+y}}while(0);s=s+1|0;if(s>>>0>>0){v=u+v|0}else{break}}}else{c[g>>2]=0;r=0;o=0;j=0}}while(0);PK(d);C=r;B=o;A=j;lJ(f,A);lJ(f,B);lJ(f,C);C=g;C=c[C>>2]|0;i=h;return C|0}function _R(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;g=a+4|0;n=c[a>>2]|0;if((n|0)==0){o=65536;i=h;return o|0}if((b&16384)==0){b=65536;l=0;while(1){m=c[d+(l<<2)>>2]|0;if((m|0)!=0){n=c[(c[g>>2]|0)+(l<<2)>>2]|0;if((n|0)==0){b=0;l=19;break}if((n|0)<0&(m|0)>0){b=0;l=19;break}o=(n|0)>0;if(o&(m|0)<0){b=0;l=19;break}b=_I(b,o?n:0-n|0,65536)|0;n=c[a>>2]|0}l=l+1|0;if(l>>>0>=n>>>0){l=19;break}}if((l|0)==19){i=h;return b|0}}else{k=65536;j=0}a:while(1){m=c[d+(j<<2)>>2]|0;do{if((m|0)!=0){l=c[(c[g>>2]|0)+(j<<2)>>2]|0;if((l|0)==0){b=0;l=19;break a}if((l|0)<0&(m|0)>0){b=0;l=19;break a}if((l|0)>0&(m|0)<0){b=0;l=19;break a}b=c[e+(j<<2)>>2]|0;if((l|0)<=(b|0)){b=0;l=19;break a}n=c[f+(j<<2)>>2]|0;if((l|0)>=(n|0)){b=0;l=19;break a}if((l|0)<(m|0)){k=_I(k,_I(l-b|0,65536,m-b|0)|0,65536)|0;break}else{k=_I(k,_I(n-l|0,65536,n-m|0)|0,65536)|0;break}}}while(0);j=j+1|0;if(j>>>0>=(c[a>>2]|0)>>>0){b=k;l=19;break}}if((l|0)==19){i=h;return b|0}return 0}function $R(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;h=i;i=i+8|0;g=c[a+28>>2]|0;c[h>>2]=0;m=QK(a)|0;f=m&255;c[d>>2]=f;if(m<<24>>24==0){m=-1;i=e;return m|0}if((f&128|0)!=0){f=(QK(a)|0)&255|f<<8&32512}g=oJ(g,2,0,f,0,h)|0;if((c[h>>2]|0)!=0){m=0;i=e;return m|0}if((f|0)>0){j=0}else{m=g;i=e;return m|0}while(1){k=QK(a)|0;h=k&255;if((h&128|0)==0){l=QK(a)|0;d=j+1|0;b[g+(j<<1)>>1]=l&255;if(k<<24>>24==0){a=18;break}if((h+d|0)>=(f|0)){a=18;break}j=h>>>0>1?h:1;l=l&255;k=d;m=0;while(1){l=((QK(a)|0)&255)+l|0;b[g+(k<<1)>>1]=l;m=m+1|0;if((m|0)<(h|0)){k=k+1|0}else{break}}j=d+j|0}else{h=h&127;l=RK(a)|0;d=j+1|0;b[g+(j<<1)>>1]=l;if((h|0)==0){a=18;break}if((h+d|0)>=(f|0)){a=18;break}j=k&127;j=j>>>0>1?j:1;m=l&65535;k=d;l=0;while(1){m=((RK(a)|0)&65535)+m|0;b[g+(k<<1)>>1]=m;l=l+1|0;if((l|0)<(h|0)){k=k+1|0}else{break}}j=d+j|0}if((j|0)>=(f|0)){a=18;break}}if((a|0)==18){i=e;return g|0}return 0}function aS(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;q=i;i=i+8|0;k=c[a+28>>2]|0;c[q>>2]=0;h=oJ(k,2,0,d,0,q)|0;if((c[q>>2]|0)==0){g=0}else{q=0;i=e;return q|0}while(1){if(g>>>0>=d>>>0){f=10;break}n=QK(a)|0;j=n&255;if((j&128|0)==0){l=j&63;m=g-d|0;n=~(n&63);m=m>>>0>n>>>0?m:n;n=0-m|0;if((j&64|0)==0){q=g;p=0;while(1){o=q+1|0;b[h+(q<<1)>>1]=(QK(a)|0)<<24>>24;p=p+1|0;if(p>>>0<=l>>>0&o>>>0>>0){q=o}else{break}}}else{p=g;q=0;while(1){o=p+1|0;b[h+(p<<1)>>1]=RK(a)|0;q=q+1|0;if(q>>>0<=l>>>0&o>>>0>>0){p=o}else{break}}}}else{l=g-d|0;m=~(n&63);m=l>>>0>m>>>0?l:m;bX(h+(g<<1)|0,0,da(m,-2)|0)|0;n=0-m|0}if(n>>>0>(j&63)>>>0){g=g-m|0}else{break}}if((f|0)==10){i=e;return h|0}lJ(k,h);q=0;i=e;return q|0}function bS(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;g=d+72|0;f=d+108|0;a[f]=0;l=c[d>>2]|0;k=d+44|0;$W(k|0,d+12|0,28)|0;j=b[k>>1]|0;if(j<<16>>16==0){n=151;i=h;return n|0}n=d+46|0;m=b[n>>1]|0;if(m<<16>>16==0){n=151;i=h;return n|0}if((b[l+176>>1]&8)!=0){o=l+68|0;m=d+48|0;c[m>>2]=bJ((j&65535)<<6,e[o>>1]|0)|0;o=bJ(e[n>>1]<<6,e[o>>1]|0)|0;j=d+52|0;c[j>>2]=o;c[d+56>>2]=(aJ(b[l+70>>1]|0,o)|0)+32&-64;c[d+60>>2]=(aJ(b[l+72>>1]|0,c[j>>2]|0)|0)+32&-64;c[d+64>>2]=(aJ(b[l+74>>1]|0,c[j>>2]|0)|0)+32&-64;c[d+68>>2]=(aJ(b[l+76>>1]|0,c[m>>2]|0)|0)+32&-64;m=b[n>>1]|0;j=b[k>>1]|0}if((j&65535)<(m&65535)){c[d+88>>2]=c[d+52>>2];b[d+80>>1]=m;c[g>>2]=_I(j&65535,65536,m&65535)|0;c[d+76>>2]=65536}else{c[d+88>>2]=c[d+48>>2];b[d+80>>1]=j;c[g>>2]=65536;c[d+76>>2]=_I(m&65535,65536,j&65535)|0}a[d+301|0]=0;a[f]=1;o=0;i=h;return o|0}function cS(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var 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,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;j=i;r=i;i=i+8|0;s=r;q=i;i=i+8|0;t=q;z=i;i=i+8|0;B=z;O=i;i=i+16|0;N=O;v=i;i=i+16|0;u=v;C=i;i=i+8|0;K=C;H=i;i=i+8|0;P=H;m=i;i=i+8|0;L=m;M=i;i=i+8|0;J=M;F=i;i=i+8|0;I=F;n=i;i=i+40|0;w=n;x=i;i=i+8|0;k=x;G=c[d>>2]|0;p=d+12|0;y=c[p>>2]|0;c[F>>2]=0;do{if(g>>>0>1){if((e[G+290>>1]|0)>>>0>>0){k=21}else{break}i=j;return k|0}}while(0);if((c[G+16>>2]|0)>>>0<=f>>>0){_=16;i=j;return _|0}A=d+20|0;c[A>>2]=f;o=d+16|0;Q=c[o>>2]|0;if((Q&1|0)==0){D=c[d+4>>2]|0;E=c[D+48>>2]|0;D=c[D+52>>2]|0}else{E=65536;D=65536}b[C>>1]=0;b[H>>1]=0;b[m>>1]=0;b[M>>1]=0;R=G+532|0;Cd[c[(c[R>>2]|0)+156>>2]&63](G,0,f,K,L)|0;do{if((Q&512|0)==0){if((c[G+480>>2]|0)==0){break}b[m>>1]=b[G+226>>1]|0}}while(0);if((a[G+296|0]|0)==0){b[H>>1]=0;L=b[G+68>>1]|0;b[M>>1]=L;K=0}else{Cd[c[(c[R>>2]|0)+156>>2]&63](G,1,f,P,J)|0;L=b[M>>1]|0;K=b[H>>1]|0}H=d+52|0;c[H>>2]=b[C>>1]|0;m=e[m>>1]|0;J=d+56|0;c[J>>2]=m;C=d+176|0;c[C>>2]=K;K=d+180|0;c[K>>2]=L&65535;M=d+64|0;if((a[M]|0)==0){a[M]=1;c[d+60>>2]=m}m=G+128|0;L=c[(c[m>>2]|0)+52>>2]|0;do{if((L|0)==0){n=0;w=dS(G,f,d+28|0)|0}else{L=sd[c[c[L>>2]>>2]&127](c[L+4>>2]|0,f,k)|0;if((L|0)==0){_=c[k+4>>2]|0;c[d+28>>2]=_;bX(n|0,0,40)|0;yJ(w,c[x>>2]|0,_);c[d+24>>2]=w;n=1;w=0;break}else{_=L;i=j;return _|0}}}while(0);x=d+28|0;P=c[x>>2]|0;do{if((P|0)>0){L=c[d+84>>2]|0;if((L|0)==0){if((c[(c[m>>2]|0)+52>>2]|0)==0){g=8;break}}w=pd[c[G+512>>2]&63](d,f,L+w|0,P)|0;if((w|0)!=0){g=w;break}l=jd[c[G+520>>2]&511](d)|0;if(!((l|0)==0&h<<24>>24==0)){g=l;l=120;break}P=c[x>>2]|0;L=1;l=24}else{L=0;l=24}}while(0);a:do{if((l|0)==24){do{if((P|0)==0){l=26}else{T=d+32|0;if((b[T>>1]|0)==0){l=26;break}W=c[H>>2]|0;R=(c[d+36>>2]|0)-W|0;v=d+68|0;c[v>>2]=R;S=d+72|0;c[S>>2]=0;U=c[J>>2]|0;w=d+76|0;c[w>>2]=U+R;R=d+80|0;c[R>>2]=0;h=d+184|0;c[h>>2]=0;V=(c[d+48>>2]|0)+(c[C>>2]|0)|0;Q=d+188|0;c[Q>>2]=V;u=d+192|0;c[u>>2]=0;P=d+196|0;c[P>>2]=V-(c[K>>2]|0);V=(c[d>>2]|0)+128|0;X=c[(c[V>>2]|0)+52>>2]|0;do{if((X|0)!=0){if((c[(c[X>>2]|0)+8>>2]|0)==0){break}c[O>>2]=W;c[N+4>>2]=0;W=N+8|0;c[W>>2]=U;c[N+12>>2]=0;_=c[(c[V>>2]|0)+52>>2]|0;if((pd[c[(c[_>>2]|0)+8>>2]&63](c[_+4>>2]|0,f,0,N)|0)!=0){break}_=c[W>>2]|0;c[H>>2]=c[O>>2]<<16>>16;H=_&65535;c[J>>2]=H;c[C>>2]=0;c[K>>2]=0;if((a[M]|0)!=0){break}a[M]=1;c[d+60>>2]=H}}while(0);C=b[T>>1]|0;if(C<<16>>16>0){g=jd[c[G+524>>2]&511](d)|0;if((g|0)!=0){break}fd[c[G+516>>2]&511](d);C=c[p>>2]|0;E=C+58|0;t=b[E>>1]|0;s=C+60|0;x=v;H=c[x+4>>2]|0;r=(c[s>>2]|0)+(t<<3)|0;c[r>>2]=c[x>>2];c[r+4>>2]=H;r=t+1|0;H=w;x=c[H+4>>2]|0;q=(c[s>>2]|0)+(r<<3)|0;c[q>>2]=c[H>>2];c[q+4>>2]=x;q=t+2|0;x=h;H=c[x+4>>2]|0;p=(c[s>>2]|0)+(q<<3)|0;c[p>>2]=c[x>>2];c[p+4>>2]=H;p=t+3|0;H=u;x=c[H+4>>2]|0;D=(c[s>>2]|0)+(p<<3)|0;c[D>>2]=c[H>>2];c[D+4>>2]=x;D=C+64|0;a[(c[D>>2]|0)+t|0]=0;a[(c[D>>2]|0)+r|0]=0;a[(c[D>>2]|0)+q|0]=0;a[(c[D>>2]|0)+p|0]=0;x=t+4|0;H=c[d>>2]|0;G=a[H+708|0]|0;if(G<<24>>24!=0){F=c[H+100>>2]|0;g=eS(c[H+104>>2]|0,G,c[H+712>>2]|0,c[A>>2]|0,B,x)|0;if((g|0)!=0){break a}A=c[z>>2]|0;if((x|0)>0){B=0;do{_=(c[s>>2]|0)+(B<<3)|0;c[_>>2]=(c[_>>2]|0)+(c[A+(B<<3)>>2]|0);_=(c[s>>2]|0)+(B<<3)+4|0;c[_>>2]=(c[_>>2]|0)+(c[A+(B<<3)+4>>2]|0);B=B+1|0;}while((B|0)<(x|0))}lJ(F,A);c[z>>2]=0}z=c[o>>2]|0;if((z&2|0)==0){z=b[E>>1]|0;b[d+132>>1]=z;b[d+134>>1]=b[C+56>>1]|0;c[d+136>>2]=c[C+76>>2];_=c[s>>2]|0;c[d+140>>2]=_;Z=c[C+80>>2]|0;c[d+144>>2]=Z;c[d+148>>2]=c[D>>2];c[d+152>>2]=c[C+68>>2];b[d+156>>1]=0;$W(Z|0,_|0,((z&65535)<<3)+32|0)|0;z=c[o>>2]|0}if((z&1|0)==0){D=c[s>>2]|0;C=D+(x<<3)|0;B=c[d+4>>2]|0;A=c[B+48>>2]|0;B=c[B+52>>2]|0;if((x|0)>0){do{c[D>>2]=aJ(c[D>>2]|0,A)|0;_=D+4|0;c[_>>2]=aJ(c[_>>2]|0,B)|0;D=D+8|0;}while(D>>>0>>0);D=c[s>>2]|0;z=c[o>>2]|0}_=D+(t<<3)|0;Z=c[_+4>>2]|0;Y=v;c[Y>>2]=c[_>>2];c[Y+4>>2]=Z;Y=(c[s>>2]|0)+(r<<3)|0;Z=c[Y+4>>2]|0;_=w;c[_>>2]=c[Y>>2];c[_+4>>2]=Z;_=(c[s>>2]|0)+(q<<3)|0;Z=c[_+4>>2]|0;Y=h;c[Y>>2]=c[_>>2];c[Y+4>>2]=Z;Y=(c[s>>2]|0)+(p<<3)|0;Z=c[Y+4>>2]|0;_=u;c[_>>2]=c[Y>>2];c[_+4>>2]=Z}if((z&2|0)==0){g=d+132|0;b[g>>1]=(b[g>>1]|0)+4<<16>>16;g=fS(d,0)|0;if((g|0)!=0){break a}}sJ(y);g=0;break a}if(C<<16>>16!=-1){g=20;break}K=y+22|0;B=b[K>>1]|0;z=B<<16>>16;C=b[y+20>>1]|0;A=C<<16>>16;H=jd[c[G+528>>2]&511](d)|0;if((H|0)!=0){g=H;break}H=d+168|0;J=c[H>>2]|0;fd[c[G+516>>2]&511](d);N=a[G+708|0]|0;if(N<<24>>24!=0){L=c[G+100>>2]|0;M=y+84|0;G=eS(c[G+104>>2]|0,N,c[G+712>>2]|0,f,I,(c[M>>2]|0)+4|0)|0;if((G|0)!=0){g=G;break a}I=c[M>>2]|0;if((I|0)>0){f=0;G=(c[y+88>>2]|0)+(c[y+48>>2]<<5)|0;while(1){if((b[G+4>>1]&2)!=0){_=G+8|0;c[_>>2]=(c[(c[F>>2]|0)+(f<<3)>>2]<<16>>16)+(c[_>>2]|0);_=G+12|0;c[_>>2]=(c[(c[F>>2]|0)+(f<<3)+4>>2]<<16>>16)+(c[_>>2]|0)}f=f+1|0;if((f|0)<(I|0)){G=G+32|0}else{break}}}else{I=0}_=c[F>>2]|0;c[v>>2]=(c[v>>2]|0)+(c[_+(I<<3)>>2]|0);c[S>>2]=(c[S>>2]|0)+(c[_+(I<<3)+4>>2]|0);Z=I+1|0;c[w>>2]=(c[w>>2]|0)+(c[_+(Z<<3)>>2]|0);c[R>>2]=(c[R>>2]|0)+(c[_+(Z<<3)+4>>2]|0);Z=I+2|0;c[h>>2]=(c[h>>2]|0)+(c[_+(Z<<3)>>2]|0);c[Q>>2]=(c[Q>>2]|0)+(c[_+(Z<<3)+4>>2]|0);Z=I+3|0;c[u>>2]=(c[u>>2]|0)+(c[_+(Z<<3)>>2]|0);c[P>>2]=(c[P>>2]|0)+(c[_+(Z<<3)+4>>2]|0);lJ(L,_);c[F>>2]=0}F=c[o>>2]|0;if((F&1|0)==0){c[v>>2]=aJ(c[v>>2]|0,E)|0;c[w>>2]=aJ(c[w>>2]|0,E)|0;c[Q>>2]=aJ(c[Q>>2]|0,D)|0;c[P>>2]=aJ(c[P>>2]|0,D)|0;F=c[o>>2]|0}if((F&1024|0)!=0){sJ(y);c[(c[d+8>>2]|0)+72>>2]=1668246896;g=0;break a}G=c[y+84>>2]|0;I=c[y+48>>2]|0;D=d+24|0;F=c[D>>2]|0;E=c[x>>2]|0;sJ(y);if((G|0)==0){P=z;g=0}else{y=y+52|0;L=g+1|0;f=d+4|0;N=0;do{U=N+I|0;Z=v;P=c[Z>>2]|0;Z=c[Z+4>>2]|0;Y=w;S=c[Y>>2]|0;Y=c[Y+4>>2]|0;X=h;Q=c[X>>2]|0;X=c[X+4>>2]|0;T=u;W=c[T>>2]|0;T=c[T+4>>2]|0;O=b[K>>1]|0;M=O<<16>>16;g=cS(d,c[(c[y>>2]|0)+(U<<5)>>2]|0,L,0)|0;if((g|0)!=0){break a}V=c[y>>2]|0;g=V+(U<<5)|0;R=V+(U<<5)+4|0;if((b[R>>1]&512)==0){_=v;c[_>>2]=P;c[_+4>>2]=Z;_=w;c[_>>2]=S;c[_+4>>2]=Y;_=h;c[_>>2]=Q;c[_+4>>2]=X;_=u;c[_>>2]=W;c[_+4>>2]=T}_=b[K>>1]|0;P=_<<16>>16;b:do{if(_<<16>>16!=O<<16>>16){S=c[p>>2]|0;W=S+24|0;Q=c[W>>2]|0;S=b[S+22>>1]|0;T=S<<16>>16;Z=b[R>>1]|0;X=(Z&200)==0;if((S&65535)>(O&65535)&(X^1)){Z=V+(U<<5)+16|0;Y=M;do{IJ(Q+(Y<<3)|0,Z);Y=Y+1|0;}while(Y>>>0>>0);Z=b[R>>1]|0}_=c[V+(U<<5)+8>>2]|0;Y=c[V+(U<<5)+12>>2]|0;do{if((Z&2)==0){U=_+z|0;V=Y+M|0;if(!(U>>>0>>0&V>>>0>>0)){break b}Y=c[W>>2]|0;R=(c[Y+(U<<3)>>2]|0)-(c[Y+(V<<3)>>2]|0)|0;Y=(c[Y+(U<<3)+4>>2]|0)-(c[Y+(V<<3)+4>>2]|0)|0}else{if((Y|_|0)==0){break b}do{if(!X){if((Z&2048)==0){break}X=c[V+(U<<5)+16>>2]|0;X=aJ(X,X)|0;Z=c[V+(U<<5)+20>>2]|0;X=fJ((aJ(Z,Z)|0)+X|0)|0;Z=c[V+(U<<5)+28>>2]|0;Z=aJ(Z,Z)|0;W=c[V+(U<<5)+24>>2]|0;Z=fJ((aJ(W,W)|0)+Z|0)|0;_=aJ(_,X)|0;Y=aJ(Y,Z)|0}}while(0);if((c[o>>2]&1|0)!=0){R=_;break}U=c[f>>2]|0;Z=c[U+52>>2]|0;U=aJ(_,c[U+48>>2]|0)|0;Y=aJ(Y,Z)|0;if((b[R>>1]&4)==0){R=U;break}R=U+32&-64;Y=Y+32&-64}}while(0);U=(Y|0)==0;if((R|Y|0)==0){break}T=T-M|0;S=S<<16>>16==O<<16>>16;if(!((R|0)==0|S)){O=0;do{_=Q+(O+M<<3)|0;c[_>>2]=(c[_>>2]|0)+R;O=O+1|0;}while(O>>>0>>0)}if(U|S){break}else{O=0}do{_=Q+(O+M<<3)+4|0;c[_>>2]=(c[_>>2]|0)+Y;O=O+1|0;}while(O>>>0>>0)}}while(0);N=N+1|0;}while(N>>>0>>0)}c[D>>2]=F;c[x>>2]=E;c[H>>2]=J;if((c[o>>2]&2|0)!=0){g=0;break a}if(!((b[g+4>>1]&256)!=0&P>>>0>z>>>0)){g=0;break a}E=c[p>>2]|0;F=E+22|0;y=b[F>>1]|0;o=y+4|0;do{if((o|0)==0){l=103}else{if((o+y+(b[E+58>>1]|0)|0)>>>0<=(c[E+4>>2]|0)>>>0){l=103;break}_=pJ(E,o,0)|0;c[q>>2]=_;if((_|0)!=0){g=0;break a}}}while(0);if((l|0)==103){c[q>>2]=0}o=E+24|0;Y=v;_=c[Y+4>>2]|0;Z=(c[o>>2]|0)+(b[F>>1]<<3)|0;c[Z>>2]=c[Y>>2];c[Z+4>>2]=_;Z=w;_=c[Z+4>>2]|0;Y=(c[o>>2]|0)+((b[F>>1]|0)+1<<3)|0;c[Y>>2]=c[Z>>2];c[Y+4>>2]=_;Y=h;_=c[Y+4>>2]|0;Z=(c[o>>2]|0)+((b[F>>1]|0)+2<<3)|0;c[Z>>2]=c[Y>>2];c[Z+4>>2]=_;Z=u;_=c[Z+4>>2]|0;o=(c[o>>2]|0)+((b[F>>1]|0)+3<<3)|0;c[o>>2]=c[Z>>2];c[o+4>>2]=_;o=E+28|0;a[(c[o>>2]|0)+(b[F>>1]|0)|0]=0;a[(c[o>>2]|0)+((b[F>>1]|0)+1)|0]=0;a[(c[o>>2]|0)+((b[F>>1]|0)+2)|0]=0;a[(c[o>>2]|0)+((b[F>>1]|0)+3)|0]=0;o=c[D>>2]|0;_=PJ(o,c[H>>2]|0)|0;c[q>>2]=_;if((_|0)!=0){g=0;break a}u=EK(o,t)|0;if((c[q>>2]|0)!=0){g=0;break a}t=u&65535;if((u&65535)>(e[(c[d>>2]|0)+286>>1]|0)){if((t|0)>(c[x>>2]|0)){g=0;break a}u=d+160|0;w=c[u>>2]|0;v=c[w+388>>2]|0;h=w+392|0;if(v>>>0>>0){c[h>>2]=oJ(c[w+8>>2]|0,1,v,t,c[h>>2]|0,s)|0;r=c[r>>2]|0;w=c[u>>2]|0;v=(r|0)==0?t:v}else{r=0}c[q>>2]=r;c[w+388>>2]=v&65535;if((c[q>>2]|0)!=0){g=0;break a}}else{if(u<<16>>16==0){g=0;break a}u=d+160|0}_=CK(o,c[(c[u>>2]|0)+392>>2]|0,t)|0;c[q>>2]=_;if((_|0)!=0){g=0;break a}Z=d+8|0;c[(c[Z>>2]|0)+136>>2]=c[(c[u>>2]|0)+392>>2];c[(c[Z>>2]|0)+140>>2]=t;Z=c[p>>2]|0;_=(e[Z+22>>1]|0)-z|0;q=_&65535;o=d+132|0;b[o>>1]=q;b[d+134>>1]=(b[Z+20>>1]|0)-C<<16>>16;c[d+136>>2]=(c[Z+40>>2]|0)+(z<<3);c[d+140>>2]=(c[Z+24>>2]|0)+(z<<3);c[d+144>>2]=(c[Z+44>>2]|0)+(z<<3);r=c[Z+28>>2]|0;p=d+148|0;c[p>>2]=r+z;c[d+152>>2]=(c[Z+32>>2]|0)+(A<<1);b[d+156>>1]=B;do{if((_&65535)>>>0>z>>>0){r=r+(z<<1)|0;a[r]=a[r]&-25;r=z+1|0;q=b[o>>1]|0;if(r>>>0>=(q&65535)>>>0){break}while(1){q=(c[p>>2]|0)+r|0;a[q]=a[q]&-25;r=r+1|0;q=b[o>>1]|0;if(r>>>0<(q&65535)>>>0){}else{break}}}}while(0);b[o>>1]=q+4<<16>>16;fS(d,1)|0;g=0;break a}}while(0);do{if((l|0)==26){bX(d+36|0,0,16)|0;if(h<<24>>24!=0){g=0;break}B=c[H>>2]|0;q=d+68|0;c[q>>2]=0-B;h=d+72|0;c[h>>2]=0;z=c[J>>2]|0;s=d+76|0;c[s>>2]=z-B;w=d+80|0;c[w>>2]=0;x=d+184|0;c[x>>2]=0;y=c[C>>2]|0;t=d+188|0;c[t>>2]=y;r=d+192|0;c[r>>2]=0;p=d+196|0;c[p>>2]=y-(c[K>>2]|0);y=(c[d>>2]|0)+128|0;A=c[(c[y>>2]|0)+52>>2]|0;do{if((A|0)!=0){if((c[(c[A>>2]|0)+8>>2]|0)==0){break}c[v>>2]=B;c[u+4>>2]=0;A=u+8|0;c[A>>2]=z;c[u+12>>2]=0;_=c[(c[y>>2]|0)+52>>2]|0;if((pd[c[(c[_>>2]|0)+8>>2]&63](c[_+4>>2]|0,f,0,u)|0)!=0){break}u=c[A>>2]|0;c[H>>2]=c[v>>2]<<16>>16;u=u&65535;c[J>>2]=u;c[C>>2]=0;c[K>>2]=0;if((a[M]|0)!=0){break}a[M]=1;c[d+60>>2]=u}}while(0);y=c[d>>2]|0;v=a[y+708|0]|0;if(v<<24>>24!=0){u=c[y+100>>2]|0;g=eS(c[y+104>>2]|0,v,c[y+712>>2]|0,f,I,4)|0;if((g|0)!=0){break}_=c[F>>2]|0;c[q>>2]=(c[q>>2]|0)+(c[_>>2]|0);c[h>>2]=(c[h>>2]|0)+(c[_+4>>2]|0);c[s>>2]=(c[s>>2]|0)+(c[_+8>>2]|0);c[w>>2]=(c[w>>2]|0)+(c[_+12>>2]|0);c[x>>2]=(c[x>>2]|0)+(c[_+16>>2]|0);c[t>>2]=(c[t>>2]|0)+(c[_+20>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[_+24>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[_+28>>2]|0);lJ(u,_);c[F>>2]=0}if((c[o>>2]&1|0)!=0){g=0;break}c[q>>2]=aJ(c[q>>2]|0,E)|0;c[s>>2]=aJ(c[s>>2]|0,E)|0;c[t>>2]=aJ(c[t>>2]|0,D)|0;c[p>>2]=aJ(c[p>>2]|0,D)|0;g=0}}while(0);if(L<<24>>24!=0){l=120}}}while(0);if((l|0)==120){fd[c[G+516>>2]&511](d)}if(n<<24>>24==0){_=g;i=j;return _|0}_=c[(c[m>>2]|0)+52>>2]|0;hd[c[(c[_>>2]|0)+4>>2]&127](c[_+4>>2]|0,k);_=g;i=j;return _|0}function dS(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;h=c[a+732>>2]|0;do{if(h>>>0>e>>>0){j=c[a+736>>2]|0;if((b[a+210>>1]|0)!=0){e=e<<2;k=d[j+(e|1)|0]<<16|d[j+e|0]<<24|d[j+(e|2)|0]<<8|d[j+(e|3)|0];if((e+8|0)>(h<<2|0)){h=k;j=k;break}h=k;j=d[j+(e+5)|0]<<16|d[j+(e+4)|0]<<24|d[j+(e+6)|0]<<8|d[j+(e+7)|0];break}k=e<<1;e=(d[j+k|0]<<8&65535|d[j+(k|1)|0])&65535;if((k+4|0)>(h<<1|0)){j=e}else{j=(d[j+(k+2)|0]<<8&65535|d[j+(k+3)|0])&65535}h=e<<1;j=j<<1}else{h=0;j=0}}while(0);a=c[a+704>>2]|0;if(h>>>0>=a>>>0){k=0;j=0;e=f;c[e>>2]=j;i=g;return k|0}e=j>>>0>>0?j:a;j=h;e=(e>>>0>>0?a:e)-h|0;k=f;c[k>>2]=e;i=g;return j|0}function eS(a,d,f,g,h,j){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;k=i;l=i;i=i+8|0;s=l;n=i;i=i+8|0;o=n;m=i;i=i+8|0;t=m;p=c[a+28>>2]|0;c[m>>2]=0;if(d<<24>>24==0|(f|0)==0){I=6;i=k;return I|0}d=oJ(p,8,0,j,0,s)|0;q=c[l>>2]|0;if((q|0)!=0){I=q;i=k;return I|0}c[h>>2]=d;if((c[f+32>>2]|0)>>>0<=g>>>0){I=0;i=k;return I|0}r=f+36|0;I=c[r>>2]|0;u=c[I+(g<<2)>>2]|0;q=g+1|0;if((u|0)==(c[I+(q<<2)>>2]|0)){I=0;i=k;return I|0}I=PJ(a,u)|0;c[l>>2]=I;do{if((I|0)==0){I=c[r>>2]|0;I=MK(a,(c[I+(q<<2)>>2]|0)-(c[I+(g<<2)>>2]|0)|0)|0;c[l>>2]=I;if((I|0)!=0){break}r=a+32|0;v=(c[r>>2]|0)-(c[a>>2]|0)|0;q=oJ(p,4,0,c[f>>2]|0,0,s)|0;do{if((c[l>>2]|0)==0){g=oJ(p,4,0,c[f>>2]|0,0,s)|0;if((c[l>>2]|0)!=0){break}s=oJ(p,4,0,c[f>>2]|0,0,s)|0;if((c[l>>2]|0)!=0){break}u=(RK(a)|0)&65535;A=((RK(a)|0)&65535)+v|0;if((u&32768|0)==0){t=0}else{H=c[a>>2]|0;I=(c[r>>2]|0)-H|0;c[r>>2]=H+A;t=$R(a,t)|0;H=c[a>>2]|0;A=(c[r>>2]|0)-H|0;c[r>>2]=H+I}v=u&4095;a:do{if((v|0)!=0){w=f+24|0;x=f+28|0;u=(j|0)==0;z=0;D=0;b:while(1){y=(RK(a)|0)&65535;B=RK(a)|0;E=B&65535;do{if((E&32768|0)==0){C=E&4095;if(C>>>0>=(c[w>>2]|0)>>>0){break b}I=c[f>>2]|0;H=da(I,C)|0;$W(q|0,(c[x>>2]|0)+(H<<2)|0,I<<2|0)|0}else{if((c[f>>2]|0)==0){break}else{C=0}do{c[q+(C<<2)>>2]=(RK(a)|0)<<16>>16<<2;C=C+1|0;}while(C>>>0<(c[f>>2]|0)>>>0)}}while(0);do{if((E&16384|0)!=0){if((c[f>>2]|0)==0){break}else{C=0}do{c[g+(C<<2)>>2]=(RK(a)|0)<<16>>16<<2;C=C+1|0;F=c[f>>2]|0;}while(C>>>0>>0);if((F|0)==0){break}else{C=0}do{c[s+(C<<2)>>2]=(RK(a)|0)<<16>>16<<2;C=C+1|0;}while(C>>>0<(c[f>>2]|0)>>>0)}}while(0);C=_R(f,B,q,g,s)|0;if((C|0)!=0){F=c[a>>2]|0;B=(c[r>>2]|0)-F|0;if((E&8192|0)==0){G=c[m>>2]|0;c[n>>2]=G;H=t}else{c[r>>2]=F+A;H=$R(a,o)|0;G=c[n>>2]|0;D=H}I=(G|0)==0;E=I?j:G;F=aS(a,E)|0;E=aS(a,E)|0;do{if(!((H|0)==0|(E|0)==0|(F|0)==0)){if((H|0)==-1){if(u){break}else{G=0}do{I=aJ(b[F+(G<<1)>>1]|0,C)|0;H=d+(G<<3)|0;c[H>>2]=(c[H>>2]|0)+I;H=aJ(b[E+(G<<1)>>1]|0,C)|0;I=d+(G<<3)+4|0;c[I>>2]=(c[I>>2]|0)+H;G=G+1|0;}while(G>>>0>>0)}else{if(I){break}else{H=0}do{K=aJ(b[F+(H<<1)>>1]|0,C)|0;I=D+(H<<1)|0;J=d+(e[I>>1]<<3)|0;c[J>>2]=(c[J>>2]|0)+K;J=aJ(b[E+(H<<1)>>1]|0,C)|0;I=d+(e[I>>1]<<3)+4|0;c[I>>2]=(c[I>>2]|0)+J;H=H+1|0;}while(H>>>0>>0)}}}while(0);if((D|0)==-1){D=-1}else{lJ(p,D);D=0}lJ(p,F);lJ(p,E);c[r>>2]=(c[a>>2]|0)+B}z=z+1|0;if(z>>>0>>0){A=y+A|0}else{break a}}c[l>>2]=8}}while(0);lJ(p,q);lJ(p,g);lJ(p,s)}}while(0);PK(a);if((c[l>>2]|0)==0){j=0}else{break}i=k;return j|0}}while(0);lJ(p,d);c[h>>2]=0;K=c[l>>2]|0;i=k;return K|0}function fS(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;m=f+124|0;l=c[(c[f+8>>2]|0)+140>>2]|0;k=f+132|0;p=b[k>>1]|0;o=p&65535;j=f+140|0;n=c[j>>2]|0;r=c[n+(o+ -4<<3)>>2]|0;q=r+32&-64;do{if((q|0)!=(r|0)){q=q-r|0;if(p<<16>>16==0){break}else{p=0}do{r=n+(p<<3)|0;c[r>>2]=q+(c[r>>2]|0);p=p+1|0;}while(p>>>0>>0)}}while(0);o=(l|0)!=0;if(o){$W(c[f+136>>2]|0,c[j>>2]|0,e[k>>1]<<3|0)|0}n=f+160|0;p=f+4|0;$W((c[n>>2]|0)+284|0,(c[p>>2]|0)+172|0,68)|0;if(g<<24>>24==0){c[(c[n>>2]|0)+220>>2]=c[(c[p>>2]|0)+48>>2];c[(c[n>>2]|0)+224>>2]=c[(c[p>>2]|0)+52>>2]}else{c[(c[n>>2]|0)+220>>2]=65536;c[(c[n>>2]|0)+224>>2]=65536;$W(c[f+144>>2]|0,c[j>>2]|0,e[k>>1]<<3|0)|0}r=(c[j>>2]|0)+((e[k>>1]|0)+ -3<<3)|0;c[r>>2]=(c[r>>2]|0)+32&-64;r=(c[j>>2]|0)+((e[k>>1]|0)+ -1<<3)+4|0;c[r>>2]=(c[r>>2]|0)+32&-64;if(o){o=c[(c[f+12>>2]|0)+64>>2]|0;r=c[n>>2]|0;c[r+460>>2]=c[r+392>>2];c[r+464>>2]=l;a[(c[n>>2]|0)+560|0]=g;$W((c[n>>2]|0)+144|0,m|0,36)|0;l=c[n>>2]|0;c[l+356>>2]=c[l+460>>2];c[l+364>>2]=c[l+464>>2];c[l+360>>2]=0;c[l+352>>2]=3;r=l+144|0;$W(l+36|0,r|0,36)|0;$W(l+72|0,r|0,36)|0;$W(l+108|0,r|0,36)|0;b[l+344>>1]=1;b[l+346>>1]=1;b[l+348>>1]=1;r=l+294|0;b[r>>1]=16384;b[l+296>>1]=0;r=e[r>>1]|e[r+2>>1]<<16;m=l+298|0;b[m>>1]=r;b[m+2>>1]=r>>>16;m=l+290|0;b[m>>1]=r;b[m+2>>1]=r>>>16;c[l+312>>2]=1;c[l+304>>2]=1;c[l+16>>2]=0;c[l+428>>2]=0;l=jd[c[(c[l>>2]|0)+688>>2]&511](l)|0;m=c[n>>2]|0;do{if((l|0)!=0){if((a[m+561|0]|0)==0){break}i=h;return l|0}}while(0);a[o]=c[m+340>>2]<<5|d[o]|4}if((a[f+65|0]|0)!=0){r=0;i=h;return r|0}p=e[k>>1]|0;q=c[j>>2]|0;n=q+(p+ -4<<3)|0;o=c[n+4>>2]|0;r=f+68|0;c[r>>2]=c[n>>2];c[r+4>>2]=o;r=q+(p+ -3<<3)|0;o=c[r+4>>2]|0;n=f+76|0;c[n>>2]=c[r>>2];c[n+4>>2]=o;n=q+(p+ -2<<3)|0;o=c[n+4>>2]|0;r=f+184|0;c[r>>2]=c[n>>2];c[r+4>>2]=o;p=q+(p+ -1<<3)|0;q=c[p+4>>2]|0;r=f+192|0;c[r>>2]=c[p>>2];c[r+4>>2]=q;r=0;i=h;return r|0}function gS(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;k=i;i=i+8|0;j=k;o=i;i=i+8|0;c[d>>2]=f;c[d+4>>2]=g;if((g|0)!=0){c[d+396>>2]=c[g+116>>2];c[d+400>>2]=c[g+120>>2];c[d+408>>2]=c[g+128>>2];c[d+412>>2]=c[g+132>>2];c[d+404>>2]=c[g+124>>2];c[d+416>>2]=c[g+136>>2];$W(d+244|0,g+72|0,40)|0;$W(d+216|0,g+44|0,28)|0;c[d+420>>2]=c[g+140>>2];c[d+424>>2]=c[g+144>>2];n=g+148|0;p=c[n+4>>2]|0;q=d+444|0;c[q>>2]=c[n>>2];c[q+4>>2]=p;q=g+156|0;p=c[q+4>>2]|0;n=d+452|0;c[n>>2]=c[q>>2];c[n+4>>2]=p;n=g+164|0;p=c[n+4>>2]|0;q=d+460|0;c[q>>2]=c[n>>2];c[q+4>>2]=p;$W(d+284|0,g+172|0,68)|0;c[d+380>>2]=c[g+240>>2];c[d+384>>2]=c[g+244>>2];b[d+468>>1]=b[g+248>>1]|0;c[d+472>>2]=c[g+252>>2];$W(d+180|0,g+256|0,36)|0;q=d+36|0;bX(q|0,0,36)|0;$W(d+72|0,q|0,36)|0;$W(d+108|0,q|0,36)|0}l=d+20|0;m=c[l>>2]|0;p=d+8|0;g=c[p>>2]|0;q=d+24|0;n=(e[f+284>>1]|0)+32|0;do{if(m>>>0>>0){c[q>>2]=oJ(g,1,m<<2,n<<2,c[q>>2]|0,o)|0;if((c[o>>2]|0)==0){g=c[p>>2]|0;m=n;break}c[l>>2]=m;i=h;return}}while(0);c[l>>2]=m;l=d+388|0;m=c[l>>2]|0;n=d+392|0;f=e[f+286>>1]|0;do{if(m>>>0>>0){c[n>>2]=oJ(g,1,m,f,c[n>>2]|0,j)|0;if((c[k>>2]|0)==0){m=f;break}c[l>>2]=m&65535;i=h;return}}while(0);c[l>>2]=m&65535;q=d+144|0;b[d+152>>1]=0;b[d+154>>1]=0;$W(d+72|0,q|0,36)|0;$W(d+108|0,q|0,36)|0;$W(d+36|0,q|0,36)|0;a[d+488|0]=0;i=h;return}function hS(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;f=c[b>>2]|0;e=b+292|0;if((a[e]|0)==0){g=(c[f+96>>2]|0)+40|0}else{g=b+296|0}g=c[g>>2]|0;if((g|0)==0){j=153;i=d;return j|0}gS(g,f,b);c[g+428>>2]=0;c[g+16>>2]=0;a[g+488|0]=0;j=c[f+664>>2]|0;k=f+660|0;h=c[k>>2]|0;c[g+452>>2]=j;c[g+456>>2]=h;c[g+460>>2]=0;c[g+464>>2]=0;do{if((c[k>>2]|0)==0){e=0}else{c[g+356>>2]=j;c[g+364>>2]=h;c[g+360>>2]=0;c[g+352>>2]=2;if((a[e]|0)!=0){e=0;break}e=jd[c[f+688>>2]&511](g)|0}}while(0);$W(b+172|0,g+284|0,68)|0;c[b+116>>2]=c[g+396>>2];c[b+128>>2]=c[g+408>>2];c[b+140>>2]=c[g+420>>2];c[b+144>>2]=c[g+424>>2];h=g+444|0;j=c[h+4>>2]|0;k=b+148|0;c[k>>2]=c[h>>2];c[k+4>>2]=j;k=g+452|0;j=c[k+4>>2]|0;h=b+156|0;c[h>>2]=c[k>>2];c[h+4>>2]=j;h=g+460|0;j=c[h+4>>2]|0;k=b+164|0;c[k>>2]=c[h>>2];c[k+4>>2]=j;k=e;i=d;return k|0}function iS(d,f,g){d=d|0;f=f|0;g=g|0;var 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,A=0,B=0;j=i;p=i;i=i+8|0;u=p;r=i;i=i+8|0;s=i;i=i+24|0;t=s;h=i;i=i+8|0;n=h;c[h>>2]=0;k=c[d+100>>2]|0;l=d+708|0;a[l]=0;o=d+712|0;m=c[o>>2]|0;do{if((m|0)==0){B=jS(d,0)|0;c[h>>2]=B;if((B|0)==0){m=c[o>>2]|0;break}else{B=h;B=c[B>>2]|0;i=j;return B|0}}}while(0);A=m+8|0;if((c[c[A>>2]>>2]|0)!=(f|0)){c[h>>2]=6;B=h;B=c[B>>2]|0;i=j;return B|0}o=(f|0)==0;a:do{if(!o){q=0;while(1){v=q+1|0;if(((c[g+(q<<2)>>2]|0)+65536|0)>>>0>131072){break}if(v>>>0>>0){q=v}else{break a}}c[h>>2]=6;B=h;B=c[B>>2]|0;i=j;return B|0}}while(0);x=m+36|0;do{if((c[x>>2]|0)==0){q=c[d+104>>2]|0;v=c[q+28>>2]|0;r=pd[c[d+508>>2]&63](d,1735811442,q,r)|0;c[p>>2]=r;b:do{if((r|0)==0){w=IK(q)|0;r=ZK(q,274592,t)|0;c[p>>2]=r;if((r|0)!=0){A=r;break}r=m+24|0;c[r>>2]=e[t+6>>1]|0;B=e[t+12>>1]|0;z=m+32|0;c[z>>2]=B;y=(c[t+16>>2]|0)+w|0;do{if((c[s>>2]|0)==65536){s=t+4|0;if((b[s>>1]|0)!=(c[c[A>>2]>>2]&65535)<<16>>16){break}c[x>>2]=oJ(v,4,0,B+1|0,0,u)|0;A=c[p>>2]|0;if((A|0)!=0){break b}A=(c[z>>2]|0)+1|0;if((b[t+14>>1]&1)==0){A=MK(q,A<<1)|0;c[p>>2]=A;if((A|0)==0){A=0}else{break b}do{B=(((RK(q)|0)&65535)<<1)+y|0;c[(c[x>>2]|0)+(A<<2)>>2]=B;A=A+1|0;}while(A>>>0<=(c[z>>2]|0)>>>0);PK(q)}else{A=MK(q,A<<2)|0;c[p>>2]=A;if((A|0)==0){A=0}else{break b}do{B=(TK(q)|0)+y|0;c[(c[x>>2]|0)+(A<<2)>>2]=B;A=A+1|0;}while(A>>>0<=(c[z>>2]|0)>>>0);PK(q)}y=c[r>>2]|0;if((y|0)!=0){x=m+28|0;c[x>>2]=oJ(v,4,0,da(e[s>>1]|0,y)|0,0,u)|0;A=c[p>>2]|0;if((A|0)!=0){break b}A=PJ(q,(c[t+8>>2]|0)+w|0)|0;c[p>>2]=A;if((A|0)!=0){break b}A=MK(q,da(c[r>>2]<<1,e[s>>1]|0)|0)|0;c[p>>2]=A;if((A|0)!=0){break b}u=c[r>>2]|0;if((u|0)!=0){v=b[s>>1]|0;t=0;do{if(v<<16>>16==0){v=0}else{u=0;do{B=(RK(q)|0)<<16>>16<<2;v=(da(e[s>>1]|0,t)|0)+u|0;c[(c[x>>2]|0)+(v<<2)>>2]=B;u=u+1|0;v=b[s>>1]|0;}while(u>>>0<(v&65535)>>>0);u=c[r>>2]|0}t=t+1|0;}while(t>>>0>>0)}PK(q)}A=c[p>>2]|0;break b}}while(0);c[p>>2]=8;A=8}else{A=r}}while(0);c[h>>2]=A;if((A|0)==0){break}B=h;B=c[B>>2]|0;i=j;return B|0}}while(0);q=m+4|0;p=c[q>>2]|0;c:do{if((p|0)==0){p=oJ(k,4,0,f,0,n)|0;c[q>>2]=p;if((c[h>>2]|0)==0){n=1;break}B=h;B=c[B>>2]|0;i=j;return B|0}else{if(o){n=0;break}else{n=0}while(1){o=n+1|0;if((c[p+(n<<2)>>2]|0)!=(c[g+(n<<2)>>2]|0)){n=2;break c}if(o>>>0>>0){n=o}else{n=0;break}}}}while(0);c[m>>2]=f;$W(p|0,g|0,f<<2|0)|0;a[l]=1;l=d+672|0;g=c[l>>2]|0;if((g|0)==0){B=h;B=c[B>>2]|0;i=j;return B|0}if((n|0)==1){ZR(d,c[d+104>>2]|0)|0;B=h;B=c[B>>2]|0;i=j;return B|0}else if((n|0)==2){lJ(k,g);c[l>>2]=0;TR(d,c[d+104>>2]|0)|0;B=h;B=c[B>>2]|0;i=j;return B|0}else{B=h;B=c[B>>2]|0;i=j;return B|0}return 0}function jS(d,f){d=d|0;f=f|0;var 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;h=i;r=i;i=i+8|0;o=r;g=i;i=i+8|0;m=g;n=i;i=i+16|0;s=n;p=i;i=i+24|0;q=p;k=c[d+104>>2]|0;l=c[d+100>>2]|0;c[g>>2]=0;j=d+712|0;a:do{if((c[j>>2]|0)==0){t=d+508|0;x=pd[c[t>>2]&63](d,1735811442,k,o)|0;c[g>>2]=x;if((x|0)!=0){x=g;x=c[x>>2]|0;i=h;return x|0}x=pd[c[t>>2]&63](d,1719034226,k,o)|0;c[g>>2]=x;if((x|0)!=0){x=g;x=c[x>>2]|0;i=h;return x|0}d=IK(k)|0;x=ZK(k,274480,s)|0;c[g>>2]=x;if((x|0)!=0){x=g;x=c[x>>2]|0;i=h;return x|0}do{if((c[n>>2]|0)==65536){if((b[s+6>>1]|0)!=2){break}if((b[s+10>>1]|0)!=20){break}o=s+8|0;x=b[o>>1]|0;u=x&65535;if((x&65535)>16382){break}v=e[s+14>>1]|0;if((v|0)!=((u<<2)+4|0)){break}n=s+12|0;t=b[n>>1]|0;if((t&65535)>32511){break}s=s+4|0;x=(da(t&65535,v)|0)+(u*20|0)+(e[s>>1]|0)|0;if(x>>>0>(c[r>>2]|0)>>>0){break}r=jJ(l,40,m)|0;c[j>>2]=r;if((c[g>>2]|0)!=0){x=g;x=c[x>>2]|0;i=h;return x|0}x=e[n>>1]|0;c[r+12>>2]=(x<<3)+20+(da((x<<2)+29|0,e[o>>1]|0)|0);r=jJ(l,c[(c[j>>2]|0)+12>>2]|0,m)|0;if((c[g>>2]|0)!=0){x=g;x=c[x>>2]|0;i=h;return x|0}c[(c[j>>2]|0)+8>>2]=r;c[r>>2]=e[o>>1]|0;c[r+4>>2]=-1;c[r+8>>2]=e[n>>1]|0;v=r+20|0;t=r+12|0;c[t>>2]=v;v=v+((e[o>>1]|0)*24|0)|0;r=r+16|0;c[r>>2]=v;x=b[n>>1]|0;w=v+((x&65535)<<3)|0;b:do{if(x<<16>>16==0){v=b[o>>1]|0}else{u=0;while(1){c[v+(u<<3)>>2]=w;v=b[o>>1]|0;w=w+((v&65535)<<2)|0;u=u+1|0;if((u|0)>=(e[n>>1]|0)){break b}v=c[r>>2]|0}}}while(0);c:do{if(v<<16>>16!=0){u=0;while(1){c[(c[t>>2]|0)+(u*24|0)>>2]=w;u=u+1|0;if((u|0)>=(e[o>>1]|0)){break c}w=w+5|0}}}while(0);x=PJ(k,(e[s>>1]|0)+d|0)|0;c[g>>2]=x;if((x|0)!=0){x=g;x=c[x>>2]|0;i=h;return x|0}d:do{if((b[o>>1]|0)==0){w=0}else{d=q+4|0;s=q+8|0;u=q+12|0;v=q+18|0;t=c[t>>2]|0;x=0;while(1){w=ZK(k,274520,q)|0;c[g>>2]=w;if((w|0)!=0){break}y=c[p>>2]|0;w=t+16|0;c[w>>2]=y;c[t+4>>2]=c[d>>2];c[t+8>>2]=c[s>>2];c[t+12>>2]=c[u>>2];c[t+20>>2]=e[v>>1]|0;a[c[t>>2]|0]=y>>>24;a[(c[t>>2]|0)+1|0]=(c[w>>2]|0)>>>16;a[(c[t>>2]|0)+2|0]=(c[w>>2]|0)>>>8;a[(c[t>>2]|0)+3|0]=c[w>>2];a[(c[t>>2]|0)+4|0]=0;x=x+1|0;w=b[o>>1]|0;if((x|0)<(w&65535|0)){t=t+24|0}else{break d}}y=g;y=c[y>>2]|0;i=h;return y|0}}while(0);if((b[n>>1]|0)==0){break a}p=1;q=c[r>>2]|0;while(1){y=MK(k,((w&65535)<<2)+4|0)|0;c[g>>2]=y;if((y|0)!=0){break}c[q+4>>2]=(RK(k)|0)&65535;RK(k)|0;if((b[o>>1]|0)!=0){r=0;do{y=TK(k)|0;c[(c[q>>2]|0)+(r<<2)>>2]=y;r=r+1|0;}while((r|0)<(e[o>>1]|0))}PK(k);if((p|0)>=(e[n>>1]|0)){break a}w=b[o>>1]|0;p=p+1|0;q=q+8|0}y=g;y=c[y>>2]|0;i=h;return y|0}}while(0);c[g>>2]=8;y=g;y=c[y>>2]|0;i=h;return y|0}}while(0);if((f|0)==0){y=g;y=c[y>>2]|0;i=h;return y|0}k=jJ(l,c[(c[j>>2]|0)+12>>2]|0,m)|0;if((c[g>>2]|0)!=0){y=g;y=c[y>>2]|0;i=h;return y|0}p=c[j>>2]|0;$W(k|0,c[p+8>>2]|0,c[p+12>>2]|0)|0;p=k+20|0;j=k+12|0;c[j>>2]=p;n=c[k>>2]|0;p=p+(n*24|0)|0;l=k+16|0;c[l>>2]=p;m=k+8|0;y=c[m>>2]|0;o=p+(y<<3)|0;e:do{if((y|0)==0){p=n}else{n=0;while(1){c[p+(n<<3)>>2]=o;p=c[k>>2]|0;o=o+(p<<2)|0;n=n+1|0;if(n>>>0>=(c[m>>2]|0)>>>0){break e}p=c[l>>2]|0}}}while(0);if((p|0)!=0){j=c[j>>2]|0;l=0;while(1){c[j>>2]=o;m=c[j+16>>2]|0;if((m|0)==2003265652){c[j>>2]=274552}else if((m|0)==2003072104){c[j>>2]=274560}else if((m|0)==1869640570){c[j>>2]=274568}else if((m|0)==1936486004){c[j>>2]=274584}l=l+1|0;if(l>>>0<(c[k>>2]|0)>>>0){j=j+24|0;o=o+5|0}else{break}}}c[f>>2]=k;y=g;y=c[y>>2]|0;i=h;return y|0}function kS(d,f,g){d=d|0;f=f|0;g=g|0;var 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;j=i;p=i;i=i+8|0;o=p;r=i;i=i+8|0;s=r;h=i;i=i+8|0;m=h;c[h>>2]=0;k=c[d+100>>2]|0;t=d+712|0;n=c[t>>2]|0;do{if((n|0)==0){y=jS(d,0)|0;c[h>>2]=y;if((y|0)==0){n=c[t>>2]|0;break}else{y=0;lJ(k,y);y=h;y=c[y>>2]|0;i=j;return y|0}}}while(0);l=c[n+8>>2]|0;if((c[l>>2]|0)!=(f|0)){c[h>>2]=6;y=0;lJ(k,y);y=h;y=c[y>>2]|0;i=j;return y|0}m=oJ(k,4,0,f,0,m)|0;if((c[h>>2]|0)!=0){y=m;lJ(k,y);y=h;y=c[y>>2]|0;i=j;return y|0}a:do{if((c[l>>2]|0)!=0){q=c[l+12>>2]|0;x=0;while(1){w=c[g+(x<<2)>>2]|0;v=c[q+12>>2]|0;if((w|0)>(v|0)){break}u=c[q+4>>2]|0;if((w|0)<(u|0)){break}y=c[q+8>>2]|0;do{if((w|0)<(y|0)){c[m+(x<<2)>>2]=0-(_I(w-y|0,65536,u-y|0)|0)}else{if((v|0)==(y|0)){c[m+(x<<2)>>2]=0;break}else{c[m+(x<<2)>>2]=_I(w-y|0,65536,v-y|0)|0;break}}}while(0);x=x+1|0;if(x>>>0<(c[l>>2]|0)>>>0){q=q+24|0}else{break a}}c[h>>2]=6;y=m;lJ(k,y);y=h;y=c[y>>2]|0;i=j;return y|0}}while(0);do{if((a[n+16|0]|0)==0){q=c[d+104>>2]|0;g=c[q+28>>2]|0;t=c[t>>2]|0;c[p>>2]=0;a[t+16|0]=1;y=pd[c[d+508>>2]&63](d,1635148146,q,s)|0;c[p>>2]=y;if((y|0)!=0){break}y=MK(q,c[r>>2]|0)|0;c[p>>2]=y;if((y|0)!=0){break}y=TK(q)|0;s=TK(q)|0;b:do{if((y|0)==65536){if((s|0)!=(c[c[t+8>>2]>>2]|0)){break}u=oJ(g,8,0,s,0,o)|0;r=t+20|0;c[r>>2]=u;if((c[p>>2]|0)==0&(s|0)>0){t=0}else{break}while(1){y=RK(q)|0;b[u>>1]=y;v=u+4|0;c[v>>2]=oJ(g,8,0,y&65535,0,o)|0;if((c[p>>2]|0)!=0){break}if((b[u>>1]|0)!=0){w=0;do{y=(RK(q)|0)<<16>>16<<2;c[(c[v>>2]|0)+(w<<3)>>2]=y;y=(RK(q)|0)<<16>>16<<2;c[(c[v>>2]|0)+(w<<3)+4>>2]=y;w=w+1|0;}while((w|0)<(e[u>>1]|0))}t=t+1|0;if((t|0)<(s|0)){u=u+8|0}else{break b}}o=c[r>>2]|0;if((t|0)>0){while(1){t=t+ -1|0;lJ(g,c[o+(t<<3)+4>>2]|0);c[(c[r>>2]|0)+(t<<3)+4>>2]=0;o=c[r>>2]|0;if((t|0)>0){}else{break}}}lJ(g,o);c[r>>2]=0}}while(0);PK(q)}}while(0);o=c[n+20>>2]|0;do{if((o|0)!=0){n=c[l>>2]|0;if((n|0)==0){break}else{p=0}while(1){s=b[o>>1]|0;c:do{if((s&65535)>1){v=m+(p<<2)|0;w=c[v>>2]|0;u=o+4|0;g=c[u>>2]|0;q=1;while(1){t=c[g+(q<<3)>>2]|0;r=q+1|0;if((w|0)<(t|0)){break}if(r>>>0<(s&65535)>>>0){q=r}else{break c}}y=q+ -1|0;x=c[g+(y<<3)>>2]|0;x=_I(w-x|0,65536,t-x|0)|0;n=c[u>>2]|0;n=_I(x,(c[n+(q<<3)+4>>2]|0)-(c[n+(y<<3)+4>>2]|0)|0,65536)|0;c[v>>2]=(c[(c[u>>2]|0)+(y<<3)+4>>2]|0)+n;n=c[l>>2]|0}}while(0);p=p+1|0;if(p>>>0>>0){o=o+8|0}else{break}}}}while(0);c[h>>2]=iS(d,f,m)|0;y=m;lJ(k,y);y=h;y=c[y>>2]|0;i=j;return y|0}function lS(a){a=a|0;i=i;return 0}function mS(a){a=a|0;i=i;return}function nS(a,b){a=a|0;b=b|0;var c=0;c=i;a=uJ(277360,b)|0;i=c;return a|0}function oS(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,O=0,P=0,Q=0,R=0,S=0;e=i;n=i;i=i+8|0;m=i;i=i+1504|0;F=i;i=i+8|0;G=F;H=i;i=i+8|0;I=H;x=i;i=i+8|0;z=x;C=i;i=i+8|0;A=C;P=i;i=i+8|0;Q=P;L=i;i=i+8|0;O=L;B=i;i=i+376|0;u=B;s=i;i=i+8|0;v=s;j=i;i=i+16|0;h=j;c[f>>2]=1;y=f+96|0;k=oK(c[y>>2]|0,274760)|0;c[f+484>>2]=k;l=nK(c[(c[y>>2]|0)+4>>2]|0,274784)|0;p=f+488|0;c[p>>2]=l;c[f+552>>2]=nK(c[(c[y>>2]|0)+4>>2]|0,274744)|0;y=c[p>>2]|0;bX(B|0,0,376)|0;c[f+536>>2]=-1;c[f+540>>2]=-1;o=f+544|0;c[o>>2]=0;c[f+280>>2]=7;c[f+284>>2]=1;c[f+172>>2]=4;c[f+348>>2]=3932;c[f+276>>2]=2596864;N=c[f+104>>2]|0;w=f+100|0;M=c[w>>2]|0;D=y+4|0;Jd[c[c[D>>2]>>2]&63](u,0,0,M);J=u+72|0;c[J>>2]=N;E=u+80|0;t=u+76|0;K=u+92|0;r=u+93|0;bX(t|0,0,19)|0;S=QS(N,277328,14)|0;c[L>>2]=S;if((S|0)==2){S=QS(N,277344,10)|0;c[L>>2]=S;if((S|0)==0){q=3}else{q=20}}else if((S|0)==0){q=3}else{q=20}a:do{if((q|0)==3){S=PJ(N,0)|0;c[L>>2]=S;if((S|0)!=0){q=20;break}R=EK(N,Q)|0;S=c[P>>2]|0;b:do{if((S|0)==0){do{if((R+32767<<16>>16&65535)<2){Q=YK(N,Q)|0;S=c[P>>2]|0;if((S|0)!=0){break b}c[L>>2]=0;if(R<<16>>16!=-32767){q=10;break}a[K]=1}else{c[L>>2]=0;q=10}}while(0);if((q|0)==10){S=PJ(N,0)|0;c[L>>2]=S;if((S|0)!=0){q=20;break a}Q=c[N+4>>2]|0}if((c[N+20>>2]|0)==0){c[t>>2]=(c[N>>2]|0)+(c[N+8>>2]|0);c[E>>2]=Q;a[r]=1;S=DK(N,Q)|0;c[L>>2]=S;if((S|0)!=0){q=20;break a}Q=c[E>>2]|0}else{q=jJ(M,Q,O)|0;c[t>>2]=q;S=c[L>>2]|0;if((S|0)!=0){q=20;break a}S=CK(N,q,Q)|0;c[L>>2]=S;if((S|0)!=0){q=20;break a}c[E>>2]=Q}L=c[t>>2]|0;c[u+4>>2]=L;c[B>>2]=L;c[u+8>>2]=L+Q;c[s>>2]=0;q=24;break a}}while(0);c[L>>2]=S;q=20}}while(0);do{if((q|0)==20){if((a[r]|0)==0){lJ(M,c[t>>2]|0);c[t>>2]=0;S=c[L>>2]|0}c[s>>2]=S;if((S|0)!=0){break}Q=c[E>>2]|0;L=c[t>>2]|0;q=24}}while(0);c:do{if((q|0)==24){S=ES(f,u,L,Q)|0;c[s>>2]=S;if((S|0)!=0){break}L=c[J>>2]|0;J=c[u+16>>2]|0;c[x>>2]=0;d:do{if((a[K]|0)==0){S=c[t>>2]|0;N=c[E>>2]|0;F=u+8|0;H=u+32|0;K=u+12|0;I=u+28|0;L=N;M=S;G=S;N=S+N|0;e:while(1){O=G;f:while(1){do{if((a[O]|0)==101){G=O+9|0;if(G>>>0>=N>>>0){break}if((a[O+1|0]|0)!=101){break}if((a[O+2|0]|0)!=120){break}if((a[O+3|0]|0)!=101){break}if((a[O+4|0]|0)==99){break f}}}while(0);O=O+1|0;if(O>>>0>=N>>>0){q=55;break e}}c[B>>2]=M;c[F>>2]=G;if(M>>>0>>0){do{if((a[M]|0)==101){if((vc(M|0,274824,5)|0)==0){break e}}fd[c[H>>2]&511](u);if((c[K>>2]|0)!=0){break}fd[c[I>>2]&511](u);M=c[B>>2]|0;}while(M>>>0>>0);O=c[E>>2]|0;N=c[t>>2]|0}else{O=L;N=M}L=O;M=N;N=N+O|0}if((q|0)==55){c[x>>2]=3;C=3;q=78;break}c[F>>2]=(c[t>>2]|0)+(c[E>>2]|0);fd[c[H>>2]&511](u);q=c[B>>2]|0;g:do{if(q>>>0>>0){while(1){S=a[q]|0;if(!(S<<24>>24==10|S<<24>>24==13|S<<24>>24==9|S<<24>>24==32)){break}q=q+1|0;if(q>>>0>=G>>>0){break g}}H=c[t>>2]|0;G=H-q+(c[E>>2]|0)|0;if((a[r]|0)==0){a[u+94|0]=1;c[u+84>>2]=H;c[u+88>>2]=G;c[t>>2]=0;c[E>>2]=0}else{H=jJ(J,G+1|0,z)|0;c[u+84>>2]=H;z=c[x>>2]|0;if((z|0)!=0){C=z;q=78;break d}c[u+88>>2]=G}S=d[q]|0;do{if((S+ -48|0)>>>0<10|(S+ -97|0)>>>0<6|(S+ -65|0)>>>0<6){S=d[q+1|0]|0;if(!((S+ -48|0)>>>0<10|(S+ -97|0)>>>0<6|(S+ -65|0)>>>0<6)){break}S=d[q+2|0]|0;if(!((S+ -48|0)>>>0<10|(S+ -97|0)>>>0<6|(S+ -65|0)>>>0<6)){break}S=d[q+3|0]|0;if(!((S+ -48|0)>>>0<10|(S+ -97|0)>>>0<6|(S+ -65|0)>>>0<6)){break}c[B>>2]=q;B=u+84|0;q=u+88|0;Cd[c[(c[D>>2]|0)+24>>2]&63](u,H,G,A,0)|0;z=c[C>>2]|0;c[q>>2]=z;a[(c[B>>2]|0)+z|0]=0;z=u;A=q;q=77;break d}}while(0);aX(H|0,q|0,G|0)|0;z=u;B=u+84|0;A=u+88|0;q=77;break d}}while(0);c[x>>2]=3;C=3;q=78}else{B=IK(L)|0;A=u+88|0;c[A>>2]=0;while(1){C=EK(L,I)|0;D=c[H>>2]|0;if((D|0)!=0){q=31;break}if((C+32767<<16>>16&65535)>=2){q=29;break}E=YK(L,I)|0;D=c[H>>2]|0;if((D|0)!=0){q=31;break}c[x>>2]=0;if(C<<16>>16!=-32766){break}c[A>>2]=(c[A>>2]|0)+E;C=DK(L,E)|0;c[x>>2]=C;if((C|0)!=0){q=78;break d}}if((q|0)==29){c[x>>2]=0}else if((q|0)==31){c[x>>2]=D;break}if((c[A>>2]|0)==0){c[x>>2]=3;C=3;q=78;break}C=PJ(L,B)|0;c[x>>2]=C;if((C|0)!=0){q=78;break}B=u+84|0;c[B>>2]=jJ(J,c[A>>2]|0,z)|0;C=c[x>>2]|0;if((C|0)!=0){q=78;break}c[A>>2]=0;C=EK(L,G)|0;D=c[F>>2]|0;h:do{if((D|0)==0){while(1){if((C+32767<<16>>16&65535)>=2){D=0;q=41;break h}z=YK(L,G)|0;D=c[F>>2]|0;if((D|0)!=0){q=41;break h}c[x>>2]=0;if(C<<16>>16!=-32766){break h}C=CK(L,(c[B>>2]|0)+(c[A>>2]|0)|0,z)|0;c[x>>2]=C;if((C|0)!=0){q=78;break d}c[A>>2]=(c[A>>2]|0)+z;C=EK(L,G)|0;D=c[F>>2]|0;if((D|0)!=0){q=41;break}}}else{q=41}}while(0);if((q|0)==41){c[x>>2]=D}c[x>>2]=0;z=u;F=u+8|0;q=77}}while(0);if((q|0)==77){Gd[c[y+16>>2]&255](c[B>>2]|0,c[A>>2]|0,-9871);a[c[B>>2]|0]=32;a[(c[B>>2]|0)+1|0]=32;a[(c[B>>2]|0)+2|0]=32;a[(c[B>>2]|0)+3|0]=32;D=c[B>>2]|0;c[u+4>>2]=D;c[z>>2]=D;c[F>>2]=D+(c[A>>2]|0);D=c[x>>2]|0}else if((q|0)==78){c[s>>2]=C;break}c[s>>2]=D;if((D|0)!=0){break}S=ES(f,u,c[u+84>>2]|0,c[u+88>>2]|0)|0;c[s>>2]=S;if((S|0)!=0){break}x=f+176|0;a[x]=a[x]&-2;x=f+532|0;A=c[x>>2]|0;do{if((A|0)!=0){y=A+416|0;z=c[y>>2]|0;if((z|0)!=0){if((z|0)!=(c[A+4>>2]|0)){c[y>>2]=0;A=c[x>>2]|0}if((A|0)==0){break}}if((c[A>>2]|0)==0){q=88}else{if((c[A+4>>2]|0)==0){q=88}}if((q|0)==88){DS(f);A=c[x>>2]|0}if((A|0)==0){break}B=c[A+4>>2]|0;if((B|0)!=0){z=0;while(1){y=z+1|0;if((a[A+88+(z*12|0)|0]|0)==0){q=93;break}if(y>>>0>>0){z=y}else{break}}if((q|0)==93){DS(f);A=c[x>>2]|0}if((A|0)==0){break}}x=c[o>>2]|0;if((x|0)==0){break}c[f+548>>2]=oJ(c[w>>2]|0,4,0,x,0,v)|0;if((c[s>>2]|0)==0){break}c[o>>2]=0;break c}}while(0);v=f+416|0;c[v>>2]=c[u+152>>2];w=u+328|0;if((c[w>>2]|0)!=0){c[w>>2]=0;c[f+404>>2]=c[u+312>>2];c[f+392>>2]=c[u+316>>2];c[f+408>>2]=c[u+340>>2];c[f+412>>2]=c[u+344>>2]}w=u+220|0;do{if((c[(c[f+128>>2]|0)+52>>2]|0)==0){if((c[w>>2]|0)!=0){break}c[s>>2]=3}}while(0);c[w>>2]=0;c[f+396>>2]=c[u+208>>2];c[f+424>>2]=c[u+232>>2];c[f+428>>2]=c[u+236>>2];R=u+156|0;c[f+400>>2]=c[R>>2];S=u+180|0;y=f+420|0;c[y>>2]=c[S>>2];c[R>>2]=0;c[S>>2]=0;if((c[f+368>>2]|0)!=1){break}w=u+116|0;if((c[w>>2]|0)>0){z=f+384|0;x=f+388|0;A=u+124|0;B=0;C=0;D=0;do{b[(c[z>>2]|0)+(B<<1)>>1]=0;c[(c[x>>2]|0)+(B<<2)>>2]=274816;I=c[(c[A>>2]|0)+(B<<2)>>2]|0;i:do{if((I|0)!=0){G=c[v>>2]|0;if((G|0)<=0){break}E=c[y>>2]|0;H=0;while(1){J=c[E+(H<<2)>>2]|0;F=H+1|0;if((Qc(I|0,J|0)|0)==0){break}if((F|0)<(G|0)){H=F}else{break i}}b[(c[z>>2]|0)+(B<<1)>>1]=H;c[(c[x>>2]|0)+(B<<2)>>2]=J;if((Qc(274816,J|0)|0)==0){break}C=(B|0)<(C|0)?C:B+1|0;D=(B|0)<(D|0)?B:D}}while(0);B=B+1|0;}while((B|0)<(c[w>>2]|0))}else{C=0;D=0}c[f+376>>2]=D;c[f+380>>2]=C;c[f+372>>2]=c[u+96>>2]}}while(0);v=c[u+148>>2]|0;if((v|0)!=0){fd[v&511](u+100|0)}v=c[u+256>>2]|0;if((v|0)!=0){fd[v&511](u+208|0)}v=c[u+204>>2]|0;if((v|0)!=0){fd[v&511](u+156|0)}v=c[u+308>>2]|0;if((v|0)!=0){fd[v&511](u+260|0)}v=c[u+364>>2]|0;if((v|0)!=0){fd[v&511](u+316|0)}v=c[u+16>>2]|0;S=u+84|0;lJ(v,c[S>>2]|0);c[S>>2]=0;if((a[r]|0)==0){lJ(v,c[t>>2]|0);c[t>>2]=0}fd[c[u+24>>2]&511](u);r=c[s>>2]|0;if((r|0)!=0|(g|0)<0){S=r;i=e;return S|0}if((g|0)>0){S=6;i=e;return S|0}g=f+416|0;c[f+16>>2]=c[g>>2];c[f+4>>2]=0;t=f+8|0;s=(a[f+156|0]|0)==0?2577:2581;c[t>>2]=s;r=c[f+532>>2]|0;if((r|0)!=0){c[t>>2]=s|256}t=c[f+144>>2]|0;u=f+20|0;c[u>>2]=t;s=f+24|0;c[s>>2]=0;j:do{if((t|0)==0){q=c[f+364>>2]|0;if((q|0)==0){q=145;break}c[u>>2]=q;q=145}else{w=c[f+140>>2]|0;if((w|0)==0){q=145;break}v=a[w]|0;k:do{if(v<<24>>24!=0){while(1){u=a[t]|0;while(1){if(v<<24>>24==u<<24>>24){q=136;break}if(!(v<<24>>24==45|v<<24>>24==32)){q=140;break}w=w+1|0;v=a[w]|0;if(v<<24>>24==0){break k}}if((q|0)==136){q=0;w=w+1|0}else if((q|0)==140){q=0;if(!(u<<24>>24==45|u<<24>>24==32))if(u<<24>>24==0){break}else{q=145;break j}}v=a[w]|0;if(v<<24>>24==0){break k}else{t=t+1|0}}c[s>>2]=w;if((w|0)==0){q=145;break j}else{break j}}}while(0);c[s>>2]=274792}}while(0);do{if((q|0)==145){q=c[f+148>>2]|0;if((q|0)==0){c[s>>2]=274792;break}else{c[s>>2]=q;break}}}while(0);s=f+12|0;t=(c[f+152>>2]|0)!=0|0;c[s>>2]=t;q=c[f+148>>2]|0;do{if((q|0)!=0){if((Qc(q|0,274800)|0)!=0){if((Qc(q|0,274808)|0)!=0){break}}c[s>>2]=t|2}}while(0);c[f+28>>2]=0;c[f+32>>2]=0;c[f+52>>2]=c[f+460>>2]>>16;s=c[f+464>>2]>>16;c[f+56>>2]=s;t=(c[f+468>>2]|0)+65535>>16;c[f+60>>2]=t;q=(c[f+472>>2]|0)+65535>>16;c[f+64>>2]=q;u=f+68|0;v=b[u>>1]|0;if(v<<16>>16==0){b[u>>1]=1e3;v=1e3}S=q&65535;b[f+70>>1]=S;u=s&65535;b[f+72>>1]=u;s=((((v&65535)*12|0)>>>0)/10|0)&65535;q=f+74|0;u=(S<<16>>16)-(u<<16>>16)|0;b[q>>1]=(s<<16>>16|0)<(u|0)?u&65535:s;s=f+76|0;b[s>>1]=t;p=(c[p>>2]|0)+12|0;if((Fd[c[c[p>>2]>>2]&7](m,f,0,0,c[f+420>>2]|0,r,0,0,199)|0)==0){a[m+70|0]=1;a[m+68|0]=0;c[m+1364>>2]=c[f+404>>2];c[m+1368>>2]=c[f+408>>2];c[m+1372>>2]=c[f+412>>2];c[m+1488>>2]=c[f+548>>2];c[m+1492>>2]=c[o>>2];if((c[g>>2]|0)>0){r=m+4|0;o=m+40|0;t=0;u=0;do{do{if((CS(m,u,n)|0)==0){v=c[(c[(c[r>>2]|0)+128>>2]|0)+52>>2]|0;if((v|0)==0){break}hd[c[(c[v>>2]|0)+4>>2]&127](c[v+4>>2]|0,n)}}while(0);v=c[o>>2]|0;t=(u|0)==0|(v|0)>(t|0)?v:t;u=u+1|0;}while((u|0)<(c[g>>2]|0))}else{t=0}fd[c[(c[p>>2]|0)+4>>2]&511](m);b[s>>1]=(ZI(t)|0)>>>16}b[f+78>>1]=b[q>>1]|0;b[f+80>>1]=b[f+158>>1]|0;b[f+82>>1]=b[f+160>>1]|0;if((k|0)==0|(l|0)==0){S=0;i=e;return S|0}k=c[l+20>>2]|0;c[j>>2]=f;o=h+8|0;b[o>>1]=3;l=h+10|0;b[l>>1]=1;j=h+4|0;c[j>>2]=1970170211;m=k+12|0;n=eK(c[m>>2]|0,0,h,0)|0;if(!((n|0)==0|(n|0)==163)){S=n;i=e;return S|0}b[o>>1]=7;f=c[f+368>>2]|0;if((f|0)==4){c[j>>2]=1094992453;b[l>>1]=1;k=k+4|0}else if((f|0)==1){c[j>>2]=1094992451;b[l>>1]=2;k=k+8|0}else if((f|0)==3){c[j>>2]=1818326065;b[l>>1]=3;k=m}else if((f|0)==2){c[j>>2]=1094995778;b[l>>1]=0}else{S=0;i=e;return S|0}f=c[k>>2]|0;if((f|0)==0){S=0;i=e;return S|0}S=eK(f,0,h,0)|0;i=e;return S|0}function pS(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((a|0)==0){i=b;return}d=c[a+100>>2]|0;e=a+548|0;f=c[e>>2]|0;if((f|0)!=0){lJ(d,f);c[e>>2]=0;c[a+544>>2]=0}DS(a);c[a+532>>2]=0;e=a+132|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+136|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+140|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+144|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+148|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+428|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+424|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+420|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+408|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+412|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+392|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+396|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+400|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+384|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+388|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+364|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=c[a+492>>2]|0;if((e|0)!=0){f=e+36|0;lJ(d,c[f>>2]|0);c[f>>2]=0;c[e+40>>2]=0;f=e+28|0;lJ(d,c[f>>2]|0);c[f>>2]=0;c[e+32>>2]=0;lJ(d,e)}c[a+20>>2]=0;c[a+24>>2]=0;i=b;return}function qS(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=i;i=i+8|0;e=c[a>>2]|0;f=c[e+552>>2]|0;e=mK(c[(c[e+96>>2]|0)+4>>2]|0,274744)|0;if((e|0)==0|(f|0)==0){f=0;i=b;return f|0}f=c[f>>2]|0;if((f|0)==0){f=0;i=b;return f|0}e=jd[f&511](e)|0;if((e|0)==0){f=0;i=b;return f|0}f=c[a>>2]|0;e=sd[c[e>>2]&127](c[f+100>>2]|0,f+168|0,d)|0;if((e|0)!=0){f=e;i=b;return f|0}c[a+40>>2]=c[d>>2];f=0;i=b;return f|0}function rS(a){a=a|0;var b=0,d=0,e=0;b=i;d=a+40|0;if((c[d>>2]|0)==0){i=b;return}a=c[a>>2]|0;e=c[a+552>>2]|0;a=mK(c[(c[a+96>>2]|0)+4>>2]|0,274744)|0;do{if(!((a|0)==0|(e|0)==0)){e=c[e>>2]|0;if((e|0)==0){break}a=jd[e&511](a)|0;if((a|0)==0){break}fd[c[a+8>>2]&511](c[d>>2]|0)}}while(0);c[d>>2]=0;i=b;return}function sS(a){a=a|0;var b=0,d=0,e=0;b=i;e=c[a+4>>2]|0;d=c[e+552>>2]|0;if((d|0)==0){i=b;return 0}e=mK(c[(c[e+96>>2]|0)+4>>2]|0,274744)|0;if((e|0)==0){i=b;return 0}e=jd[c[d+4>>2]&511](e)|0;c[(c[a+156>>2]|0)+36>>2]=e;i=b;return 0}function tS(a){a=a|0;c[(c[a+156>>2]|0)+36>>2]=0;i=i;return}function uS(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var 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;j=i;q=i;i=i+1504|0;x=i;i=i+16|0;w=x;m=i;i=i+8|0;k=m;o=i;i=i+16|0;n=o;y=i;i=i+8|0;v=y;l=c[d+4>>2]|0;s=c[(c[l+488>>2]|0)+12>>2]|0;do{if((c[l+16>>2]|0)>>>0<=g>>>0){if((c[(c[l+128>>2]|0)+52>>2]|0)==0){k=6}else{break}i=j;return k|0}}while(0);u=(h&1024|0)==0?h:h|3;B=(f|0)!=0;if(B){c[d+172>>2]=c[f+16>>2];c[d+176>>2]=c[f+20>>2]}else{c[d+172>>2]=65536;c[d+176>>2]=65536}h=d+108|0;b[d+110>>1]=0;b[h>>1]=0;z=(u&1|0)==0;if(z){r=(u>>>1&1^1)&255}else{r=0}A=d+72|0;c[A>>2]=1869968492;t=Fd[c[s>>2]&7](q,l,f,d,c[l+420>>2]|0,c[l+532>>2]|0,r,u>>>16&15,199)|0;if((t|0)!=0){D=t;i=j;return D|0}t=u&1024;a[q+69|0]=t>>>10;c[q+1364>>2]=c[l+404>>2];c[q+1368>>2]=c[l+408>>2];c[q+1372>>2]=c[l+412>>2];c[q+1488>>2]=c[l+548>>2];c[q+1492>>2]=c[l+544>>2];g=CS(q,g,k)|0;if((g|0)!=0){fd[c[s+4>>2]&511](q);D=g;i=j;return D|0}$W(x|0,q+1376|0,16)|0;C=c[q+1392>>2]|0;g=c[q+1396>>2]|0;fd[c[s+4>>2]&511](q);D=d+124|0;c[D>>2]=c[D>>2]&1|4;do{if((t|0)==0){t=d+24|0;E=q+40|0;s=d+40|0;c[s>>2]=(ZI(c[E>>2]|0)|0)>>16;c[d+56>>2]=(ZI(c[E>>2]|0)|0)>>16;a[(c[d+156>>2]|0)+8|0]=0;u=(u&16|0)!=0;if(u){E=l+460|0;E=(c[E+12>>2]|0)-(c[E+4>>2]|0)>>16;c[d+52>>2]=E;c[d+60>>2]=E}else{E=q+44|0;c[d+52>>2]=(ZI(c[E>>2]|0)|0)>>16;c[d+60>>2]=(ZI(c[E>>2]|0)|0)>>16}c[A>>2]=1869968492;do{if(B){if((e[f+14>>1]|0)>=24){break}c[D>>2]=c[D>>2]|256}}while(0);do{if((c[x>>2]|0)==65536){if((c[w+12>>2]|0)!=65536){p=22;break}if((c[w+4>>2]|0)!=0){p=22;break}if((c[w+8>>2]|0)!=0){p=22}}else{p=22}}while(0);if((p|0)==22){GJ(h,w)}if((g|C|0)!=0){HJ(h,C,g)}c[y>>2]=c[s>>2];E=v+4|0;c[E>>2]=0;IJ(v,w);c[s>>2]=(c[y>>2]|0)+C;c[y>>2]=0;x=d+52|0;c[E>>2]=c[x>>2];IJ(v,w);c[x>>2]=(c[E>>2]|0)+g;if(z){y=c[q+16>>2]|0;f=c[y+4>>2]|0;v=c[d+172>>2]|0;w=c[d+176>>2]|0;if(r<<24>>24==0){p=28}else{if((c[q+72>>2]|0)==0){p=28}}do{if((p|0)==28){p=b[y+2>>1]|0;if(p<<16>>16<=0){break}p=p<<16>>16;while(1){c[f>>2]=aJ(c[f>>2]|0,v)|0;E=f+4|0;c[E>>2]=aJ(c[E>>2]|0,w)|0;p=p+ -1|0;if((p|0)>0){f=f+8|0}else{break}}}}while(0);c[s>>2]=aJ(c[s>>2]|0,v)|0;c[x>>2]=aJ(c[x>>2]|0,w)|0}zK(h,n);D=c[o>>2]|0;c[t>>2]=(c[n+8>>2]|0)-D;E=c[n+12>>2]|0;c[d+28>>2]=E-(c[n+4>>2]|0);c[d+32>>2]=D;c[d+36>>2]=E;if(!u){break}XJ(t,c[x>>2]|0)}else{E=c[d+156>>2]|0;c[d+32>>2]=(ZI(c[q+32>>2]|0)|0)>>16;c[d+40>>2]=(ZI(c[q+40>>2]|0)|0)>>16;$W(E+12|0,x|0,16)|0;c[E+28>>2]=C;c[E+32>>2]=g;a[E+8|0]=1}}while(0);n=d+136|0;c[n>>2]=c[m>>2];d=d+140|0;c[d>>2]=c[k+4>>2];l=c[(c[l+128>>2]|0)+52>>2]|0;if((l|0)==0){E=0;i=j;return E|0}hd[c[(c[l>>2]|0)+4>>2]&127](c[l+4>>2]|0,k);c[n>>2]=0;c[d>>2]=0;E=0;i=j;return E|0}function vS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;g=i;c[e>>2]=0;f=e+4|0;c[f>>2]=0;a=c[a+492>>2]|0;if((a|0)==0){i=g;return 0}h=c[a+36>>2]|0;b=b<<16|d;a=(c[a+40>>2]|0)+ -1|0;a:do{if((a|0)>=0){a=h+(a<<4)|0;b:while(1){while(1){d=(a-h>>4|0)/2|0;j=c[h+(d<<4)>>2]<<16|c[h+(d<<4)+4>>2];if((j|0)==(b|0)){break b}if(j>>>0>=b>>>0){break}h=h+(d+1<<4)|0;if(h>>>0>a>>>0){break a}}a=d+ -1|0;if((a|0)<0){break a}else{a=h+(a<<4)|0}}c[e>>2]=c[h+(d<<4)+8>>2];c[f>>2]=c[h+(d<<4)+12>>2];i=g;return 0}}while(0);c[e>>2]=0;c[f>>2]=0;i=g;return 0}function wS(a,e){a=a|0;e=e|0;var 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,A=0,B=0,C=0;g=i;p=i;i=i+8|0;s=p;u=i;i=i+24|0;f=i;i=i+8|0;q=e+28|0;h=c[q>>2]|0;c[f>>2]=2;t=a+132|0;n=jJ(h,44,f)|0;do{if((c[f>>2]|0)==0){r=e+4|0;C=MK(e,c[r>>2]|0)|0;c[f>>2]=C;if((C|0)!=0){break}l=n+4|0;o=a+460|0;$W(l|0,o|0,16)|0;m=n+20|0;c[m>>2]=c[o+12>>2];k=n+24|0;c[k>>2]=c[o+4>>2];v=c[a+488>>2]|0;do{if((v|0)==0){j=7}else{v=v+24|0;w=c[v>>2]|0;if((w|0)==0){j=7;break}w=pd[c[w>>2]&63](u,c[q>>2]|0,c[e+32>>2]|0,c[e+36>>2]|0)|0;c[f>>2]=w;if((w|0)!=0){break}c[u+8>>2]=n;c[u+12>>2]=91;c[u+16>>2]=t;c[f>>2]=jd[c[(c[v>>2]|0)+8>>2]&511](u)|0;fd[c[(c[v>>2]|0)+4>>2]&511](u);j=7}}while(0);if((j|0)==7){w=c[f>>2]|0}do{if((w|0)==2){v=c[e+32>>2]|0;r=c[r>>2]|0;if(r>>>0<=6){break}if((d[v+1|0]|0)>=4){j=37;break}if((d[v+4|0]<<16|d[v+5|0]<<24|d[v+3|0]<<8|d[v+2|0]|0)!=(r|0)){j=37;break}q=c[q>>2]|0;w=c[e+36>>2]|0;c[p>>2]=0;a:do{if((v+101|0)>>>0>w>>>0){c[p>>2]=2;j=35}else{r=(d[v+100|0]<<8&65535|d[v+99|0])&65535;if((v+(r+135)|0)>>>0>w>>>0){w=0;break}if(((d[v+(r+118)|0]<<8&65535|d[v+(r+117)|0])&65535)<18){w=0;break}r=d[v+(r+133)|0]<<16|d[v+(r+134)|0]<<24|d[v+(r+132)|0]<<8|d[v+(r+131)|0];if((r|0)==0){w=0;break}u=r+2|0;t=v+u|0;if(t>>>0>w>>>0){c[p>>2]=2;j=35;break}y=d[v+(r+1)|0]<<8&65535|d[v+r|0];x=y&65535;r=n+40|0;c[r>>2]=x;if((v+((x<<2)+u)|0)>>>0>w>>>0){c[p>>2]=2;j=35;break}if(y<<16>>16==0){w=0;break}x=oJ(q,16,0,x,0,s)|0;s=n+36|0;c[s>>2]=x;if((c[p>>2]|0)!=0){j=35;break}y=(c[r>>2]<<2)+u|0;w=v+y|0;v=c[a+92>>2]|0;C=c[a+36>>2]|0;b:do{if((C|0)>0){A=c[a+40>>2]|0;z=0;while(1){B=c[A+(z<<2)>>2]|0;z=z+1|0;if((b[B+8>>1]|0)==7){break}if((z|0)>=(C|0)){break b}}C=dK(a,B)|0;c[p>>2]=C;if((C|0)!=0){j=35;break a}}}while(0);if((u|0)<(y|0)){while(1){c[x>>2]=KJ(a,d[t]|0)|0;c[x+4>>2]=KJ(a,d[t+1|0]|0)|0;c[x+8>>2]=(d[t+3|0]<<8&65535|d[t+2|0])<<16>>16;c[x+12>>2]=0;t=t+4|0;if(t>>>0>>0){x=x+16|0}else{break}}}if((v|0)==0){t=c[p>>2]|0}else{t=dK(a,v)|0;c[p>>2]=t}if((t|0)!=0){j=35;break}pb(c[s>>2]|0,c[r>>2]|0,16,200);if((c[p>>2]|0)==0){w=0}else{j=35}}}while(0);if((j|0)==35){w=n+36|0;lJ(q,c[w>>2]|0);c[w>>2]=0;c[n+40>>2]=0;w=c[p>>2]|0}c[f>>2]=w;j=37}else{j=37}}while(0);do{if((j|0)==37){if((w|0)!=0){break}$W(o|0,l|0,16)|0;c[a+52>>2]=c[l>>2]>>16;c[a+56>>2]=c[n+8>>2]>>16;c[a+60>>2]=(c[n+12>>2]|0)+65535>>16;c[a+64>>2]=(c[n+16>>2]|0)+65535>>16;b[a+70>>1]=((c[m>>2]|0)+32768|0)>>>16;b[a+72>>1]=((c[k>>2]|0)+32768|0)>>>16;if((c[n+40>>2]|0)==0){break}C=a+8|0;c[C>>2]=c[C>>2]|64;c[a+492>>2]=n;n=0}}while(0);PK(e)}}while(0);if((n|0)==0){C=f;C=c[C>>2]|0;i=g;return C|0}C=n+36|0;lJ(h,c[C>>2]|0);c[C>>2]=0;c[n+40>>2]=0;C=n+28|0;lJ(h,c[C>>2]|0);c[C>>2]=0;c[n+32>>2]=0;lJ(h,n);C=f;C=c[C>>2]|0;i=g;return C|0}function xS(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;k=i;i=i+8|0;j=i;i=i+1504|0;if((f&16|0)!=0){if((e|0)==0){m=0;i=h;return m|0}bX(g|0,0,e<<2|0)|0;m=0;i=h;return m|0}f=Fd[c[c[(c[b+488>>2]|0)+12>>2]>>2]&7](j,b,0,0,c[b+420>>2]|0,c[b+532>>2]|0,0,0,199)|0;if((f|0)!=0){m=f;i=h;return m|0}a[j+70|0]=1;a[j+68|0]=0;c[j+1364>>2]=c[b+404>>2];c[j+1368>>2]=c[b+408>>2];c[j+1372>>2]=c[b+412>>2];c[j+1488>>2]=c[b+548>>2];c[j+1492>>2]=c[b+544>>2];if((e|0)==0){m=0;i=h;return m|0}f=j+4|0;b=j+40|0;m=0;while(1){if((CS(j,m+d|0,k)|0)==0){l=c[(c[(c[f>>2]|0)+128>>2]|0)+52>>2]|0;if((l|0)!=0){hd[c[(c[l>>2]|0)+4>>2]&127](c[l+4>>2]|0,k)}c[g+(m<<2)>>2]=(ZI(c[b>>2]|0)|0)>>16}else{c[g+(m<<2)>>2]=0}m=m+1|0;if(m>>>0>=e>>>0){g=0;break}}i=h;return g|0}function yS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=c[a>>2]|0;f=c[e+552>>2]|0;e=mK(c[(c[e+96>>2]|0)+4>>2]|0,274744)|0;do{if(!((e|0)==0|(f|0)==0)){f=c[f>>2]|0;if((f|0)==0){break}e=jd[f&511](e)|0;_J(c[a>>2]|0,b);if((e|0)==0){i=d;return 0}Cd[c[e+4>>2]&63](c[a+40>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,0,0)|0;i=d;return 0}}while(0);_J(c[a>>2]|0,b);i=d;return 0}function zS(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;if(d>>>0>65535){j=0;i=f;return j|0}g=c[e+284>>2]|0;if((g|0)<=0){j=0;i=f;return j|0}e=c[e+288>>2]|0;h=0;a:while(1){j=c[e+(h<<2)>>2]|0;do{if((j|0)!=0){if((a[j]|0)!=(a[b]|0)){break}if((ZW(j|0)|0)!=(d|0)){break}if((vc(j|0,b|0,d|0)|0)==0){d=9;break a}}}while(0);h=h+1|0;if((h|0)>=(g|0)){h=0;d=9;break}}if((d|0)==9){i=f;return h|0}return 0}function AS(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a>>2]<<16|c[a+4>>2];b=c[b>>2]<<16|c[b+4>>2];if(a>>>0>b>>>0){a=1;i=d;return a|0}a=(a>>>0>>0)<<31>>31;i=d;return a|0}function BS(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=i;i=i+8|0;b=CS(a,b,e)|0;if((b|0)!=0){i=d;return b|0}a=c[(c[(c[a+4>>2]|0)+128>>2]|0)+52>>2]|0;if((a|0)==0){i=d;return b|0}hd[c[(c[a>>2]|0)+4>>2]&127](c[a+4>>2]|0,e);i=d;return b|0}function CS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;e=i;i=i+16|0;f=e;k=c[a+4>>2]|0;g=c[(c[k+128>>2]|0)+52>>2]|0;$W(a+1376|0,k+436|0,16)|0;m=k+452|0;l=c[m+4>>2]|0;h=a+1392|0;c[h>>2]=c[m>>2];c[h+4>>2]=l;h=(g|0)!=0;do{if(h){k=sd[c[c[g>>2]>>2]&127](c[g+4>>2]|0,b,d)|0;if((k|0)==0){k=c[d+4>>2]|0;d=c[d>>2]|0;break}else{m=k;i=j;return m|0}}else{m=c[(c[k+424>>2]|0)+(b<<2)>>2]|0;c[d>>2]=m;k=c[(c[k+428>>2]|0)+(b<<2)>>2]|0;c[d+4>>2]=k;d=m}}while(0);d=sd[c[a+1484>>2]&127](a,d,k)|0;if((d|0)!=0|h^1){m=d;i=j;return m|0}if((c[(c[g>>2]|0)+8>>2]|0)==0){m=0;i=j;return m|0}n=a+32|0;c[e>>2]=(ZI(c[n>>2]|0)|0)>>16;c[f+4>>2]=0;d=a+40|0;h=f+8|0;c[h>>2]=(ZI(c[d>>2]|0)|0)>>16;l=a+44|0;k=f+12|0;c[k>>2]=(ZI(c[l>>2]|0)|0)>>16;m=pd[c[(c[g>>2]|0)+8>>2]&63](c[g+4>>2]|0,b,0,f)|0;c[n>>2]=c[e>>2]<<16;c[d>>2]=c[h>>2]<<16;c[l>>2]=c[k>>2]<<16;i=j;return m|0}function DS(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;e=i;d=c[b+100>>2]|0;g=b+532|0;f=c[g>>2]|0;if((f|0)==0){i=e;return}h=c[f>>2]|0;b=c[f+4>>2]|0;j=f+24|0;lJ(d,c[j>>2]|0);c[j>>2]=0;if(h>>>0>1){bX(f+28|0,0,(h<<2)+ -4|0)|0}j=f+216|0;lJ(d,c[j>>2]|0);c[j>>2]=0;j=f+148|0;lJ(d,c[j>>2]|0);c[j>>2]=0;j=f+288|0;lJ(d,c[j>>2]|0);c[j>>2]=0;if((h|0)!=0){j=0;do{c[f+212+(j<<2)>>2]=0;c[f+144+(j<<2)>>2]=0;c[f+284+(j<<2)>>2]=0;j=j+1|0;}while(j>>>0>>0)}h=f+136|0;lJ(d,c[h>>2]|0);c[h>>2]=0;c[f+140>>2]=0;h=(b|0)==0;do{if(!h){j=0;do{k=f+8+(j<<2)|0;lJ(d,c[k>>2]|0);c[k>>2]=0;j=j+1|0;}while(j>>>0>>0);if(h){break}else{h=0}do{k=f+88+(h*12|0)+4|0;lJ(d,c[k>>2]|0);c[k>>2]=0;a[f+88+(h*12|0)|0]=0;h=h+1|0;}while(h>>>0>>0)}}while(0);lJ(d,c[g>>2]|0);c[g>>2]=0;i=e;return}function ES(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var 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,A=0,B=0,C=0,D=0,E=0;j=i;k=i;i=i+8|0;l=k;c[e>>2]=f;m=f+g|0;f=e+8|0;c[f>>2]=m;g=e+12|0;c[g>>2]=0;v=e+28|0;fd[c[v>>2]&511](e);A=c[e>>2]|0;a:do{if(A>>>0>>0){s=e+372|0;t=e+32|0;q=e+36|0;u=b+532|0;r=b+132|0;p=e+68|0;o=e+64|0;x=b+132|0;y=b+164|0;n=b+168|0;w=b+460|0;B=0;z=0;b:while(1){C=a[A]|0;if(C<<24>>24==70){h=14}else if(C<<24>>24==101){D=A+6|0;do{if((D|0)==(m|0)){h=7}else{if(D>>>0>=m>>>0){break}switch(a[A+5|0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{h=7;break};default:{}}}}while(0);if((h|0)==7){if((vc(A|0,274824,5)|0)==0){break a}}if(C<<24>>24==70){h=14}else if(C<<24>>24==99){h=9}else{h=21}}else if(C<<24>>24==99){h=9}else{h=21}if((h|0)==9){h=0;D=A+10|0;do{if((D|0)==(m|0)){h=12}else{if(D>>>0>=m>>>0){break}switch(a[A+9|0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{h=12;break};default:{}}}}while(0);if((h|0)==12){if((vc(A|0,274832,9)|0)==0){break a}}if(C<<24>>24==70){h=14}else{h=21}}c:do{if((h|0)==14){h=0;D=A+14|0;if((D|0)!=(m|0)){if(D>>>0>=m>>>0){h=21;break}switch(a[A+13|0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{h=21;break c}}}if((vc(A|0,274848,13)|0)!=0){h=21;break}C=c[s>>2]|0;if((C&1|0)!=0){c[s>>2]=C|2}c[e>>2]=A+13}}while(0);d:do{if((h|0)==21){h=0;if(((C&255)+ -48|0)>>>0<10){fd[c[t>>2]&511](e);if((c[g>>2]|0)==0){B=1;z=A;break}else{break a}}D=(A+6|0)>>>0>>0;do{if(C<<24>>24==82&D){if((a[A+1|0]|0)!=68|B<<24>>24==0){break}c[e>>2]=z;A=c[f>>2]|0;fd[c[v>>2]&511](e);B=c[e>>2]|0;if(B>>>0>=A>>>0){h=29;break b}if(((d[B]|0)+ -48|0)>>>0>=10){h=29;break b}B=jd[c[q>>2]&511](e)|0;fd[c[t>>2]&511](e);C=c[e>>2]|0;if((B|0)<=-1){h=29;break b}if((B|0)>=(A-(C+1)|0)){h=29;break b}c[e>>2]=C+(B+1);if((c[g>>2]|0)==0){B=0;break d}else{A=3;h=73;break b}}}while(0);do{if(C<<24>>24==45&D){if((a[A+1|0]|0)!=124|B<<24>>24==0){break}c[e>>2]=z;A=c[f>>2]|0;fd[c[v>>2]&511](e);B=c[e>>2]|0;if(B>>>0>=A>>>0){h=37;break b}if(((d[B]|0)+ -48|0)>>>0>=10){h=37;break b}C=jd[c[q>>2]&511](e)|0;fd[c[t>>2]&511](e);B=c[e>>2]|0;if((C|0)<=-1){h=37;break b}if((C|0)>=(A-(B+1)|0)){h=37;break b}c[e>>2]=B+(C+1);if((c[g>>2]|0)==0){B=0;break d}else{A=3;h=73;break b}}}while(0);if(!(C<<24>>24==47&(A+2|0)>>>0>>0)){fd[c[t>>2]&511](e);if((c[g>>2]|0)==0){B=0;break}else{break a}}C=A+1|0;c[e>>2]=C;fd[c[t>>2]&511](e);if((c[g>>2]|0)!=0){break a}E=c[e>>2]|0;D=E-C|0;if(!((D+ -1|0)>>>0<21&E>>>0>>0)){B=0;break}B=a[C]|0;E=276576;A=274864;e:while(1){do{if(B<<24>>24==(a[E]|0)){if((D|0)!=(ZW(E|0)|0)){break}if((iX(C|0,E|0,D|0)|0)==0){break e}}}while(0);A=A+36|0;E=c[A>>2]|0;if((E|0)==0){B=0;break d}}B=c[s>>2]|0;if(((B&1)+1&c[A+32>>2]|0)==0){B=0;break}if((B&2|0)!=0){if((Qc(E|0,276560)|0)!=0){B=0;break}}D=c[u>>2]|0;C=c[A+8>>2]|0;do{if((C|0)==10){hd[c[A+12>>2]&127](b,e);A=c[g>>2]|0}else{f:do{switch(c[A+4>>2]|0){case 4:{c[k>>2]=n;if((D|0)==0){B=0;D=l;break f}B=c[D>>2]|0;D=D+212|0;break};case 5:{c[k>>2]=w;if((D|0)==0){B=0;D=l;break f}B=c[D>>2]|0;D=D+284|0;break};case 8:{c[k>>2]=D;B=0;D=l;break};case 3:{c[k>>2]=x;if((D|0)==0){B=0;D=l;break f}B=c[D>>2]|0;D=D+144|0;break};case 6:{c[k>>2]=e;B=0;D=l;break};case 7:{c[k>>2]=b;B=0;D=l;break};case 2:{c[k>>2]=y;B=0;D=l;break};default:{c[k>>2]=r;B=0;D=l}}}while(0);if((C+ -8|0)>>>0<2){A=Cd[c[p>>2]&63](e,A,D,B,0)|0;break}else{A=Cd[c[o>>2]&63](e,A,D,B,0)|0;break}}}while(0);c[g>>2]=A;if((A|0)==0){B=0;break}if((A&255|0)!=162){h=73;break b}c[g>>2]=0;B=0}}while(0);fd[c[v>>2]&511](e);A=c[e>>2]|0;if(A>>>0>=m>>>0){break a}}if((h|0)==29){c[g>>2]=3;E=3;i=j;return E|0}else if((h|0)==37){c[g>>2]=3;E=3;i=j;return E|0}else if((h|0)==73){i=j;return A|0}}}while(0);E=c[g>>2]|0;i=j;return E|0}function FS(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;e=i;i=i+24|0;g=e;if((pd[c[d+52>>2]&63](d,6,g,3)|0)<0){c[d+12>>2]=3;i=f;return}h=g+12|0;j=c[h>>2]|0;j=(j|0)<0?0-j|0:j;if((j|0)==0){c[d+12>>2]=3;i=f;return}b[a+68>>1]=(bJ(65536e3,j)|0)>>>16;if((j|0)==65536){d=c[g+20>>2]|0;k=c[h>>2]|0;h=g+4|0;j=g+8|0;g=g+16|0}else{c[e>>2]=bJ(c[e>>2]|0,j)|0;n=g+4|0;c[n>>2]=bJ(c[n>>2]|0,j)|0;m=g+8|0;c[m>>2]=bJ(c[m>>2]|0,j)|0;l=g+16|0;c[l>>2]=bJ(c[l>>2]|0,j)|0;k=g+20|0;d=bJ(c[k>>2]|0,j)|0;c[k>>2]=d;k=c[h>>2]>>31&-131072|65536;c[h>>2]=k;h=n;j=m;g=l}c[a+436>>2]=c[e>>2];c[a+444>>2]=c[h>>2];c[a+440>>2]=c[j>>2];c[a+448>>2]=k;c[a+452>>2]=c[g>>2]>>16;c[a+456>>2]=d>>16;i=f;return}function GS(b,d){b=b|0;d=d|0;var 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;e=i;m=i;i=i+8|0;p=m;g=c[d+8>>2]|0;o=c[b+488>>2]|0;h=d+28|0;fd[c[h>>2]&511](d);l=c[d>>2]|0;if(l>>>0>=g>>>0){c[d+12>>2]=3;i=e;return}t=a[l]|0;k=t<<24>>24==91;if(!(((t&255)+ -48|0)>>>0<10|k)){do{if((l+17|0)>>>0>>0){if((vc(l|0,277264,16)|0)!=0){break}c[b+368>>2]=2;i=e;return}}while(0);do{if((l+15|0)>>>0>>0){if((vc(l|0,277288,14)|0)!=0){break}c[b+368>>2]=4;i=e;return}}while(0);do{if((l+18|0)>>>0>>0){if((vc(l|0,277304,17)|0)!=0){break}c[b+368>>2]=3;i=e;return}}while(0);c[d+12>>2]=162;i=e;return}j=d+100|0;n=c[d+16>>2]|0;if(k){c[d>>2]=l+1;k=256;q=1}else{k=jd[c[d+36>>2]&511](d)|0;q=0}fd[c[h>>2]&511](d);if((c[d>>2]|0)>>>0>=g>>>0){i=e;return}c[b+372>>2]=k;c[d+96>>2]=k;c[b+384>>2]=oJ(n,2,0,k,0,p)|0;r=c[m>>2]|0;do{if((r|0)==0){c[b+388>>2]=oJ(n,4,0,k,0,p)|0;r=c[m>>2]|0;if((r|0)!=0){break}r=sd[c[c[o>>2]>>2]&127](j,k,n)|0;c[m>>2]=r;if((r|0)!=0){break}if((k|0)>0){m=d+144|0;n=0;do{pd[c[m>>2]&63](j,n,274816,8)|0;n=n+1|0;}while((n|0)<(k|0))}fd[c[h>>2]&511](d);r=c[d>>2]|0;a:do{if(r>>>0>>0){m=d+32|0;l=d+12|0;o=d+144|0;n=d+124|0;p=d+36|0;b:do{if(q<<24>>24==0){q=0;c:while(1){s=a[r]|0;do{if(s<<24>>24==100){t=r+3|0;if(t>>>0>=g>>>0){break}if((a[r+1|0]|0)!=101){break}if((a[r+2|0]|0)!=102){break}switch(a[t]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{l=t;break a};default:{}}}else if(s<<24>>24==93){f=r;break b}}while(0);do{if(((s&255)+ -48|0)>>>0>9){fd[c[m>>2]&511](d);if((c[l>>2]|0)!=0){g=52;break c}}else{r=jd[c[p>>2]&511](d)|0;fd[c[h>>2]&511](d);s=c[d>>2]|0;if(!((a[s]|0)==47&(s+2|0)>>>0>>0&(q|0)<(k|0))){r=s;break}t=s+1|0;c[d>>2]=t;fd[c[m>>2]&511](d);if((c[l>>2]|0)!=0){g=52;break c}s=(c[d>>2]|0)-t|0;u=pd[c[o>>2]&63](j,r,t,s+1|0)|0;c[l>>2]=u;if((u|0)!=0){g=52;break c}a[(c[(c[n>>2]|0)+(r<<2)>>2]|0)+s|0]=0;r=t;q=q+1|0}}while(0);fd[c[h>>2]&511](d);s=c[d>>2]|0;if(s>>>0>>0){r=s}else{l=r;break a}}if((g|0)==52){i=e;return}}else{p=0;while(1){s=a[r]|0;if(s<<24>>24==93){f=r;break b}else if(s<<24>>24==100){q=r+3|0;if(q>>>0>=g>>>0){g=39;break}do{if((a[r+1|0]|0)==101){if((a[r+2|0]|0)!=102){break}switch(a[q]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{l=q;break a};default:{}}}}while(0);if(s<<24>>24==93){f=r;break b}}if(!(s<<24>>24==47&(r+2|0)>>>0>>0&(p|0)<(k|0))){g=39;break}q=r+1|0;c[d>>2]=q;fd[c[m>>2]&511](d);if((c[l>>2]|0)!=0){g=52;break}r=(c[d>>2]|0)-q|0;u=pd[c[o>>2]&63](j,p,q,r+1|0)|0;c[l>>2]=u;if((u|0)!=0){g=52;break}a[(c[(c[n>>2]|0)+(p<<2)>>2]|0)+r|0]=0;fd[c[h>>2]&511](d);r=c[d>>2]|0;if(r>>>0>>0){p=p+1|0}else{l=q;break a}}if((g|0)==39){c[l>>2]=2;i=e;return}else if((g|0)==52){i=e;return}}}while(0);l=f+1|0}}while(0);c[b+368>>2]=1;c[d>>2]=l;i=e;return}}while(0);c[d+12>>2]=r;i=e;return}function HS(b,e){b=b|0;e=e|0;var 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;f=i;l=i;i=i+8|0;j=l;n=e+316|0;h=c[e+16>>2]|0;t=c[b+488>>2]|0;k=e+28|0;fd[c[k>>2]&511](e);m=c[e>>2]|0;g=e+8|0;do{if(m>>>0<(c[g>>2]|0)>>>0){if((a[m]|0)!=91){break}fd[c[e+32>>2]&511](e);fd[c[k>>2]&511](e);h=c[e>>2]|0;do{if(h>>>0<(c[g>>2]|0)>>>0){if((a[h]|0)!=93){break}i=f;return}}while(0);c[e+12>>2]=3;i=f;return}}while(0);q=e+36|0;o=jd[c[q>>2]&511](e)|0;p=e+32|0;fd[c[p>>2]&511](e);m=e+12|0;if((c[m>>2]|0)!=0){i=f;return}fd[c[k>>2]&511](e);r=e+312|0;if((c[r>>2]|0)==0){x=sd[c[c[t>>2]>>2]&127](n,o,h)|0;c[l>>2]=x;if((x|0)==0){s=9}}else{s=9}a:do{if((s|0)==9){b:do{if((vc(c[e>>2]|0,277248,3)|0)==0){s=b+172|0;t=t+16|0;b=e+360|0;while(1){fd[c[p>>2]&511](e);u=jd[c[q>>2]&511](e)|0;x=c[g>>2]|0;fd[c[k>>2]&511](e);v=c[e>>2]|0;if(v>>>0>=x>>>0){s=15;break}if(((d[v]|0)+ -48|0)>>>0>=10){s=15;break}v=jd[c[q>>2]&511](e)|0;fd[c[p>>2]&511](e);y=c[e>>2]|0;w=y+1|0;if((v|0)<=-1){s=15;break}if((v|0)>=(x-w|0)){s=15;break}c[e>>2]=y+(v+1);if((c[m>>2]|0)!=0){s=32;break}fd[c[p>>2]&511](e);if((c[m>>2]|0)!=0){s=32;break}fd[c[k>>2]&511](e);if((vc(c[e>>2]|0,277256,3)|0)==0){fd[c[p>>2]&511](e);fd[c[k>>2]&511](e)}if((c[r>>2]|0)==0){x=c[s>>2]|0;if((x|0)>-1){if((v|0)<(x|0)){s=24;break}y=jJ(h,v,j)|0;x=c[l>>2]|0;if((x|0)!=0){break a}$W(y|0,w|0,v|0)|0;Gd[c[t>>2]&255](y,v,4330);x=c[s>>2]|0;c[l>>2]=pd[c[b>>2]&63](n,u,y+x|0,v-x|0)|0;lJ(h,y);x=c[l>>2]|0}else{x=pd[c[b>>2]&63](n,u,w,v)|0;c[l>>2]=x}if((x|0)!=0){break a}}if((vc(c[e>>2]|0,277248,3)|0)!=0){break b}}if((s|0)==15){c[m>>2]=3;i=f;return}else if((s|0)==24){c[l>>2]=3;x=3;break a}else if((s|0)==32){i=f;return}}}while(0);if((c[r>>2]|0)!=0){i=f;return}c[r>>2]=o;i=f;return}}while(0);c[m>>2]=x;i=f;return}function IS(b,e){b=b|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;f=i;h=i;i=i+8|0;p=h;o=i;i=i+8|0;n=o;j=e+208|0;k=e+156|0;l=e+260|0;q=c[e+16>>2]|0;z=c[b+488>>2]|0;r=e+8|0;t=c[r>>2]|0;s=e+36|0;y=jd[c[s>>2]&511](e)|0;if((y|0)==0){i=f;return}g=e+12|0;if((c[g>>2]|0)!=0){i=f;return}m=e+152|0;do{if((c[m>>2]|0)==0){v=y+6|0;G=sd[c[c[z>>2]>>2]&127](j,v,q)|0;c[h>>2]=G;if((G|0)!=0){break}G=sd[c[c[z>>2]>>2]&127](k,v,q)|0;c[h>>2]=G;if((G|0)!=0){break}G=sd[c[c[z>>2]>>2]&127](l,4,q)|0;c[h>>2]=G;if((G|0)==0){u=7}}else{u=7}}while(0);a:do{if((u|0)==7){x=e+28|0;fd[c[x>>2]&511](e);E=c[e>>2]|0;do{if(E>>>0>>0){u=e+32|0;v=e+200|0;w=e+180|0;b=b+172|0;y=y+5|0;A=z+16|0;z=e+252|0;B=0;D=0;C=0;b:while(1){G=(B|0)==0;while(1){F=E+3|0;c:do{if(F>>>0>>0){switch(a[F]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{break};default:{break c}}F=a[E]|0;if(F<<24>>24==100){if((a[E+1|0]|0)!=101){break}if(!((a[E+2|0]|0)!=102|G)){u=42;break b}if(F<<24>>24!=101){break}}else if(F<<24>>24!=101){break}if((a[E+1|0]|0)!=110){break}if((a[E+2|0]|0)==100){u=42;break b}}}while(0);fd[c[u>>2]&511](e);if((c[g>>2]|0)!=0){u=60;break b}if((a[E]|0)==47){I=E+1|0;if(I>>>0>=t>>>0){u=24;break b}H=(c[e>>2]|0)-I|0;J=c[r>>2]|0;fd[c[x>>2]&511](e);E=c[e>>2]|0;if(E>>>0>=J>>>0){u=29;break b}if(((d[E]|0)+ -48|0)>>>0>=10){u=29;break b}F=jd[c[s>>2]&511](e)|0;fd[c[u>>2]&511](e);K=c[e>>2]|0;E=K+1|0;if((F|0)<=-1){u=29;break b}if((F|0)>=(J-E|0)){u=29;break b}c[e>>2]=K+(F+1);if((c[g>>2]|0)!=0){u=60;break b}if((c[m>>2]|0)==0){break}}fd[c[x>>2]&511](e);E=c[e>>2]|0;if(E>>>0>=t>>>0){u=42;break b}}G=pd[c[v>>2]&63](k,B,I,H+1|0)|0;c[h>>2]=G;if((G|0)!=0){break a}a[(c[(c[w>>2]|0)+(B<<2)>>2]|0)+H|0]=0;if((a[I]|0)==46){G=(Qc(274816,c[(c[w>>2]|0)+(B<<2)>>2]|0)|0)==0;D=G?1:D;C=G?B:C}G=c[b>>2]|0;if((G|0)>-1&(B|0)<(y|0)){if((F|0)<=(G|0)){u=37;break}H=jJ(q,F,p)|0;G=c[h>>2]|0;if((G|0)!=0){break a}$W(H|0,E|0,F|0)|0;Gd[c[A>>2]&255](H,F,4330);G=c[b>>2]|0;c[h>>2]=pd[c[z>>2]&63](j,B,H+G|0,F-G|0)|0;lJ(q,H);G=c[h>>2]|0}else{G=pd[c[z>>2]&63](j,B,E,F)|0;c[h>>2]=G}B=B+1|0;if((G|0)!=0){break a}fd[c[x>>2]&511](e);E=c[e>>2]|0;if(E>>>0>=t>>>0){u=42;break}}if((u|0)==24){c[h>>2]=3;G=3;break a}else if((u|0)==29){c[g>>2]=3;i=f;return}else if((u|0)==37){c[h>>2]=3;G=3;break a}else if((u|0)==42){c[m>>2]=B;if(D<<24>>24==0){break}n=e+180|0;p=c[c[n>>2]>>2]|0;if((Qc(274816,p|0)|0)==0){i=f;return}m=e+304|0;o=e+184|0;G=pd[c[m>>2]&63](l,0,p,c[c[o>>2]>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break a}q=e+232|0;p=e+236|0;G=pd[c[m>>2]&63](l,1,c[c[q>>2]>>2]|0,c[c[p>>2]>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break a}G=pd[c[m>>2]&63](l,2,c[(c[n>>2]|0)+(C<<2)>>2]|0,c[(c[o>>2]|0)+(C<<2)>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break a}G=pd[c[m>>2]&63](l,3,c[(c[q>>2]|0)+(C<<2)>>2]|0,c[(c[p>>2]|0)+(C<<2)>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break a}n=e+200|0;l=e+284|0;m=e+288|0;G=pd[c[n>>2]&63](k,C,c[c[l>>2]>>2]|0,c[c[m>>2]>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break a}e=e+252|0;G=pd[c[e>>2]&63](j,C,c[(c[l>>2]|0)+4>>2]|0,c[(c[m>>2]|0)+4>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break a}G=pd[c[n>>2]&63](k,0,c[(c[l>>2]|0)+8>>2]|0,c[(c[m>>2]|0)+8>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break a}G=pd[c[e>>2]&63](j,0,c[(c[l>>2]|0)+12>>2]|0,c[(c[m>>2]|0)+12>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break a}i=f;return}else if((u|0)==60){i=f;return}}else{c[m>>2]=0;B=0}}while(0);$W(o|0,277240,5)|0;o=e+304|0;G=pd[c[o>>2]&63](l,0,c[c[e+180>>2]>>2]|0,c[c[e+184>>2]>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break}G=pd[c[o>>2]&63](l,1,c[c[e+232>>2]>>2]|0,c[c[e+236>>2]>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break}o=e+200|0;G=pd[c[o>>2]&63](k,0,274816,8)|0;c[h>>2]=G;if((G|0)!=0){break}l=e+252|0;G=pd[c[l>>2]&63](j,0,n,5)|0;c[h>>2]=G;if((G|0)!=0){break}n=e+284|0;e=e+288|0;G=pd[c[o>>2]&63](k,B,c[c[n>>2]>>2]|0,c[c[e>>2]>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break}G=pd[c[l>>2]&63](j,B,c[(c[n>>2]|0)+4>>2]|0,c[(c[e>>2]|0)+4>>2]|0)|0;c[h>>2]=G;if((G|0)!=0){break}c[m>>2]=(c[m>>2]|0)+1;i=f;return}}while(0);c[g>>2]=G;i=f;return}function JS(a,b){a=a|0;b=b|0;a=b+372|0;c[a>>2]=c[a>>2]|1;i=i;return}function KS(a,b){a=a|0;b=b|0;var 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;d=i;l=i;i=i+192|0;j=i;i=i+8|0;m=i;i=i+48|0;h=i;i=i+8|0;n=h;k=b+60|0;Jd[c[k>>2]&63](b,l,16,j);p=c[j>>2]|0;if((p|0)<0){t=162;u=b+12|0;c[u>>2]=t;i=d;return}if((p|0)==0|(p|0)>16){t=3;u=b+12|0;c[u>>2]=t;i=d;return}f=c[b>>2]|0;e=b+8|0;g=c[e>>2]|0;o=a+532|0;a:do{if((p|0)>0){p=b+40|0;r=c[o>>2]|0;q=0;u=0;while(1){c[b>>2]=c[l+(q*12|0)>>2];c[e>>2]=c[l+(q*12|0)+4>>2];Jd[c[k>>2]&63](b,m,4,n);s=c[h>>2]|0;if((q|0)==0){if((s+ -1|0)>>>0>3){r=3;a=15;break}r=PS(a,c[j>>2]|0,s)|0;if((r|0)!=0){a=15;break}t=c[h>>2]|0;r=c[o>>2]|0}else{if((s|0)==(u|0)){t=u;s=u}else{r=3;a=15;break}}if((t|0)>0){u=r+24+(q<<2)|0;t=0;do{c[b>>2]=c[m+(t*12|0)>>2];c[e>>2]=c[m+(t*12|0)+4>>2];v=Bd[c[p>>2]&255](b,0)|0;c[(c[u>>2]|0)+(t<<2)>>2]=v;t=t+1|0;}while((t|0)<(c[h>>2]|0))}q=q+1|0;if((q|0)<(c[j>>2]|0)){u=s}else{break a}}if((a|0)==15){v=b+12|0;c[v>>2]=r;i=d;return}}}while(0);c[b>>2]=f;c[e>>2]=g;u=0;v=b+12|0;c[v>>2]=u;i=d;return}function LS(b,d){b=b|0;d=d|0;var 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;e=i;j=i;i=i+8|0;r=j;p=i;i=i+48|0;n=i;i=i+8|0;q=i;i=i+240|0;m=i;i=i+8|0;l=m;c[j>>2]=0;k=c[b+100>>2]|0;o=d+60|0;Jd[c[o>>2]&63](d,p,4,n);s=c[n>>2]|0;if((s|0)<0){c[j>>2]=162;w=162;x=d+12|0;c[x>>2]=w;i=e;return}if((s|0)==0|(s|0)>4){c[j>>2]=3;w=3;x=d+12|0;c[x>>2]=w;i=e;return}g=c[d>>2]|0;h=d+8|0;f=c[h>>2]|0;s=PS(b,0,s)|0;c[j>>2]=s;if((s|0)!=0){w=s;x=d+12|0;c[x>>2]=w;i=e;return}b=c[b+532>>2]|0;do{if((c[n>>2]|0)>0){s=d+36|0;t=d+40|0;u=0;while(1){c[d>>2]=c[p+(u*12|0)>>2];c[h>>2]=c[p+(u*12|0)+4>>2];Jd[c[o>>2]&63](d,q,20,l);v=c[m>>2]|0;if((v+ -1|0)>>>0>19){k=9;break}w=oJ(k,4,0,v<<1,0,r)|0;v=b+88+(u*12|0)+4|0;c[v>>2]=w;x=c[j>>2]|0;if((x|0)!=0){k=16;break}x=b+88+(u*12|0)+8|0;c[x>>2]=w+(c[m>>2]<<2);a[b+88+(u*12|0)|0]=c[m>>2];if((c[m>>2]|0)>0){w=0;do{c[d>>2]=(c[q+(w*12|0)>>2]|0)+1;c[h>>2]=(c[q+(w*12|0)+4>>2]|0)+ -1;y=jd[c[s>>2]&511](d)|0;c[(c[v>>2]|0)+(w<<2)>>2]=y;y=Bd[c[t>>2]&255](d,0)|0;c[(c[x>>2]|0)+(w<<2)>>2]=y;w=w+1|0;}while((w|0)<(c[m>>2]|0))}u=u+1|0;if((u|0)>=(c[n>>2]|0)){k=14;break}}if((k|0)==9){c[j>>2]=3;x=3;y=d+12|0;c[y>>2]=x;i=e;return}else if((k|0)==14){j=c[j>>2]|0;break}else if((k|0)==16){y=d+12|0;c[y>>2]=x;i=e;return}}else{j=0}}while(0);c[d>>2]=g;c[h>>2]=f;x=j;y=d+12|0;c[y>>2]=x;i=e;return}function MS(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;h=i;i=i+48|0;j=i;i=i+8|0;f=i;i=i+8|0;g=f;c[f>>2]=0;Jd[c[d+60>>2]&63](d,h,4,j);k=c[j>>2]|0;a:do{if((k|0)<0){c[f>>2]=162;p=162}else{if((k|0)==0|(k|0)>4){c[f>>2]=3;p=3;break}p=PS(b,0,k)|0;c[f>>2]=p;if((p|0)!=0){break}k=c[b+532>>2]|0;b=c[b+100>>2]|0;if((c[j>>2]|0)>0){l=0}else{p=0;break}while(1){m=h+(l*12|0)|0;o=c[m>>2]|0;if((a[o]|0)==47){o=o+1|0;c[m>>2]=o}p=c[h+(l*12|0)+4>>2]|0;n=p-o|0;if((p|0)==(o|0)){g=10;break}o=jJ(b,n+1|0,g)|0;c[k+8+(l<<2)>>2]=o;p=c[f>>2]|0;if((p|0)!=0){break a}$W(o|0,c[m>>2]|0,n|0)|0;a[o+n|0]=0;l=l+1|0;if((l|0)>=(c[j>>2]|0)){g=13;break}}if((g|0)==10){c[f>>2]=3;p=3;break}else if((g|0)==13){p=c[f>>2]|0;break}}}while(0);c[d+12>>2]=p;i=e;return}function NS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;e=i;i=i+192|0;f=i;i=i+8|0;h=a+532|0;l=c[h>>2]|0;Jd[c[b+60>>2]&63](b,e,16,f);k=c[f>>2]|0;if((k|0)<0){a=162;m=b+12|0;c[m>>2]=a;i=d;return}if((k|0)==0|(k|0)>16){a=3;m=b+12|0;c[m>>2]=a;i=d;return}do{if((l|0)==0){g=5}else{j=c[l>>2]|0;if((j|0)==0){g=5;break}if((j|0)==(k|0)){break}else{e=3}m=b+12|0;c[m>>2]=e;i=d;return}}while(0);do{if((g|0)==5){g=PS(a,k,0)|0;if((g|0)==0){k=c[f>>2]|0;l=c[h>>2]|0;break}else{a=g;m=b+12|0;c[m>>2]=a;i=d;return}}}while(0);j=c[b>>2]|0;g=b+8|0;h=c[g>>2]|0;if((k|0)>0){a=b+40|0;k=l+136|0;l=l+140|0;m=0;do{c[b>>2]=c[e+(m*12|0)>>2];c[g>>2]=c[e+(m*12|0)+4>>2];n=Bd[c[a>>2]&255](b,0)|0;c[(c[k>>2]|0)+(m<<2)>>2]=n;c[(c[l>>2]|0)+(m<<2)>>2]=n;m=m+1|0;}while((m|0)<(c[f>>2]|0))}c[b>>2]=j;c[g>>2]=h;m=0;n=b+12|0;c[n>>2]=m;i=d;return}function OS(a,b){a=a|0;b=b|0;var d=0;d=i;c[a+544>>2]=pd[c[b+52>>2]&63](b,0,0,0)|0;i=d;return}function PS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;e=i;i=i+8|0;j=e;h=c[a+100>>2]|0;c[e>>2]=0;l=a+532|0;g=c[l>>2]|0;do{if((g|0)==0){g=jJ(h,420,j)|0;if((c[e>>2]|0)==0){c[g+416>>2]=0;c[l>>2]=g;break}else{n=e;n=c[n>>2]|0;i=f;return n|0}}}while(0);do{if((b|0)==0){k=15}else{l=c[g>>2]|0;if((l|0)!=0){if((l|0)==(b|0)){k=15;break}else{break}}l=g+148|0;c[l>>2]=oJ(h,32,0,b,0,j)|0;if((c[e>>2]|0)!=0){n=e;n=c[n>>2]|0;i=f;return n|0}k=g+216|0;c[k>>2]=oJ(h,196,0,b,0,j)|0;if((c[e>>2]|0)!=0){n=e;n=c[n>>2]|0;i=f;return n|0}m=g+288|0;c[m>>2]=oJ(h,16,0,b,0,j)|0;if((c[e>>2]|0)!=0){n=e;n=c[n>>2]|0;i=f;return n|0}n=oJ(h,4,0,b<<1,0,j)|0;c[g+136>>2]=n;if((c[e>>2]|0)!=0){n=e;n=c[n>>2]|0;i=f;return n|0}c[g+140>>2]=n+(b<<2);c[g+144>>2]=a+132;c[g+212>>2]=a+168;c[g+284>>2]=a+460;if(b>>>0>=2){a=c[m>>2]|0;l=c[l>>2]|0;m=c[k>>2]|0;k=2;do{m=m+196|0;c[g+212+(k<<2)>>2]=m;l=l+32|0;c[g+144+(k<<2)>>2]=l;a=a+16|0;c[g+284+(k<<2)>>2]=a;k=k+1|0;}while(k>>>0<=b>>>0)}c[g>>2]=b;k=15}}while(0);do{if((k|0)==15){b=g+4|0;a=c[b>>2]|0;if((d|0)==0){d=a}else{if(!((a|0)==0|(a|0)==(d|0))){break}c[b>>2]=d}a=c[g>>2]|0;if((a|0)==0|(d|0)==0){n=e;n=c[n>>2]|0;i=f;return n|0}b=g+24|0;if((c[b>>2]|0)!=0){n=e;n=c[n>>2]|0;i=f;return n|0}h=oJ(h,4,0,da(d,a)|0,0,j)|0;c[b>>2]=h;if((c[e>>2]|0)==0&a>>>0>1){j=1}else{n=e;n=c[n>>2]|0;i=f;return n|0}while(1){c[g+24+(j<<2)>>2]=h+((da(j,d)|0)<<2);j=j+1|0;if(j>>>0>=a>>>0){break}h=c[b>>2]|0}n=e;n=c[n>>2]|0;i=f;return n|0}}while(0);c[e>>2]=3;n=e;n=c[n>>2]|0;i=f;return n|0}function QS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;g=i;i=i+8|0;h=g;j=PJ(a,0)|0;if((j|0)!=0){k=j;i=e;return k|0}j=EK(a,h)|0;k=c[g>>2]|0;if((k|0)!=0){i=e;return k|0}do{if((j+32767<<16>>16&65535)<2){YK(a,h)|0;g=c[g>>2]|0;if((g|0)==0){if(j<<16>>16==-32767){break}else{f=6;break}}else{k=g;i=e;return k|0}}else{f=6}}while(0);do{if((f|0)==6){f=PJ(a,0)|0;if((f|0)==0){break}i=e;return f|0}}while(0);f=MK(a,d)|0;if((f|0)!=0){k=f;i=e;return k|0}k=(iX(c[a+32>>2]|0,b|0,d|0)|0)==0;PK(a);k=k?0:2;i=e;return k|0}function RS(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=i;a=c[a+532>>2]|0;if((a|0)==0){g=6;i=e;return g|0}f=a+4|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[a>>2];if((c[f>>2]|0)==0){g=0;i=e;return g|0}else{g=0}while(1){c[b+8+(g*12|0)>>2]=c[a+8+(g<<2)>>2];h=a+88+(g*12|0)+4|0;c[b+8+(g*12|0)+4>>2]=c[c[h>>2]>>2];c[b+8+(g*12|0)+8>>2]=c[(c[h>>2]|0)+((d[a+88+(g*12|0)|0]|0)+ -1<<2)>>2];g=g+1|0;if(g>>>0<(c[f>>2]|0)>>>0){}else{b=0;break}}i=e;return b|0}function SS(b,d,e){b=b|0;d=d|0;e=e|0;var 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;f=i;g=i;i=i+64|0;j=b+532|0;k=c[j>>2]|0;if((k|0)==0){u=6;i=f;return u|0}b=k+4|0;if((c[b>>2]|0)!=(d|0)){u=6;i=f;return u|0}if((d|0)!=0){m=d;l=0;do{r=c[e+(l<<2)>>2]|0;q=c[k+88+(l*12|0)+4>>2]|0;n=c[k+88+(l*12|0)+8>>2]|0;o=a[k+88+(l*12|0)|0]|0;do{if(o<<24>>24==0){h=10}else{s=-1;p=0;while(1){t=c[q+(p<<2)>>2]|0;if((r|0)==(t|0)){h=7;break}u=p+1|0;if((r|0)<(t|0)){t=p;p=s;break}if(u>>>0<(o&255)>>>0){s=p;p=u}else{t=-1;break}}if((h|0)==7){h=0;n=c[n+(p<<2)>>2]|0;break}if((p|0)<0){h=10;break}if((t|0)<0){n=c[n+((o&255)+ -1<<2)>>2]|0;break}else{m=c[q+(p<<2)>>2]|0;n=_I(r-m|0,(c[n+(t<<2)>>2]|0)-(c[n+(p<<2)>>2]|0)|0,(c[q+(t<<2)>>2]|0)-m|0)|0;m=c[b>>2]|0;break}}}while(0);if((h|0)==10){h=0;n=c[n>>2]|0}c[g+(l<<2)>>2]=n;l=l+1|0;}while(l>>>0>>0);k=c[j>>2]|0}if((k|0)==0){u=6;i=f;return u|0}e=k+4|0;if((c[e>>2]|0)!=(d|0)){u=6;i=f;return u|0}if((c[k>>2]|0)==0){u=0;i=f;return u|0}h=k+136|0;b=0;while(1){if((d|0)==0){d=65536}else{j=0;d=65536;while(1){l=c[g+(j<<2)>>2]|0;l=(l|0)<0?0:l;l=(l|0)>65536?65536:l;d=aJ(d,(1<>>0<(c[e>>2]|0)>>>0){}else{break}}}c[(c[h>>2]|0)+(b<<2)>>2]=d;b=b+1|0;if(b>>>0>=(c[k>>2]|0)>>>0){g=0;break}d=c[e>>2]|0}i=f;return g|0}function TS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;a=c[a+532>>2]|0;if((a|0)==0){k=6;i=e;return k|0}f=a+4|0;if((c[f>>2]|0)!=(b|0)){k=6;i=e;return k|0}if((c[a>>2]|0)==0){k=0;i=e;return k|0}g=a+136|0;h=0;while(1){if((b|0)==0){j=65536}else{b=0;j=65536;while(1){k=c[d+(b<<2)>>2]|0;k=(k|0)<0?0:k;k=(k|0)>65536?65536:k;j=aJ(j,(1<>>0<(c[f>>2]|0)>>>0){}else{break}}}c[(c[g>>2]|0)+(h<<2)>>2]=j;h=h+1|0;if(h>>>0>=(c[a>>2]|0)>>>0){d=0;break}b=c[f>>2]|0}i=e;return d|0}function US(b,e){b=b|0;e=e|0;var 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;g=i;o=i;i=i+56|0;n=o;h=i;i=i+8|0;j=h;l=i;i=i+16|0;f=l;p=c[b+100>>2]|0;b=c[b+532>>2]|0;if((b|0)==0){c[h>>2]=6;s=6;i=g;return s|0}m=b+4|0;q=c[m>>2]|0;c[o>>2]=q;k=n+4|0;c[k>>2]=c[b>>2];if((q|0)==0){o=0}else{r=0;do{c[n+8+(r*12|0)>>2]=c[b+8+(r<<2)>>2];s=c[b+88+(r*12|0)+4>>2]|0;c[n+8+(r*12|0)+4>>2]=c[s>>2];c[n+8+(r*12|0)+8>>2]=c[s+((d[b+88+(r*12|0)|0]|0)+ -1<<2)>>2];r=r+1|0;}while(r>>>0>>0);o=c[o>>2]|0}c[h>>2]=0;j=jJ(p,(o*24|0)+20|0,j)|0;p=c[h>>2]|0;if((p|0)!=0){s=p;i=g;return s|0}c[j>>2]=o;c[j+4>>2]=c[k>>2];c[j+8>>2]=-1;q=j+20|0;k=j+12|0;c[k>>2]=q;c[j+16>>2]=0;a:do{if((o|0)==0){n=0}else{p=0;while(1){c[q+(p*24|0)>>2]=c[n+8+(p*12|0)>>2];c[(c[k>>2]|0)+(p*24|0)+4>>2]=c[n+8+(p*12|0)+4>>2]<<16;c[(c[k>>2]|0)+(p*24|0)+12>>2]=c[n+8+(p*12|0)+8>>2]<<16;q=c[k>>2]|0;c[q+(p*24|0)+8>>2]=((c[q+(p*24|0)+12>>2]|0)+(c[q+(p*24|0)+4>>2]|0)|0)/2|0;c[(c[k>>2]|0)+(p*24|0)+20>>2]=-1;c[(c[k>>2]|0)+(p*24|0)+16>>2]=-1;q=c[k>>2]|0;r=c[q+(p*24|0)>>2]|0;do{if((Qc(r|0,276624)|0)==0){c[q+(p*24|0)+16>>2]=2003265652}else{if((Qc(r|0,277592)|0)==0){c[q+(p*24|0)+16>>2]=2003072104;break}if((Qc(r|0,277600)|0)!=0){break}c[q+(p*24|0)+16>>2]=1869640570}}while(0);p=p+1|0;if(p>>>0>=o>>>0){n=o;break a}q=c[k>>2]|0}}}while(0);m=c[m>>2]|0;b:do{if((c[b>>2]|0)==(1<>2]|0;if((m|0)==2){r=c[o+12>>2]|0;s=(c[o+4>>2]|0)+r|0;c[l>>2]=s;c[f+4>>2]=(c[o+8>>2]|0)+r;l=s}else if((m|0)==3){p=c[o+28>>2]|0;r=c[o+20>>2]|0;q=c[o+12>>2]|0;s=r+p+q+(c[o+4>>2]|0)|0;c[l>>2]=s;l=(c[o+24>>2]|0)+p|0;c[f+4>>2]=l+q+(c[o+8>>2]|0);c[f+8>>2]=l+r+(c[o+16>>2]|0);l=s}else if((m|0)==1){s=c[o+4>>2]|0;c[l>>2]=s;l=s}else{v=c[o+60>>2]|0;p=c[o+52>>2]|0;q=c[o+44>>2]|0;r=c[o+36>>2]|0;u=c[o+28>>2]|0;m=c[o+20>>2]|0;w=c[o+12>>2]|0;s=p+v+q+r+u+m+w+(c[o+4>>2]|0)|0;c[l>>2]=s;v=(c[o+56>>2]|0)+v|0;l=c[o+40>>2]|0;t=c[o+24>>2]|0;c[f+4>>2]=v+q+l+u+t+w+(c[o+8>>2]|0);p=v+p+(c[o+48>>2]|0)|0;c[f+8>>2]=p+u+t+m+(c[o+16>>2]|0);c[f+12>>2]=p+q+l+r+(c[o+32>>2]|0);l=s}if((n|0)==0){break}else{m=0}while(1){s=c[b+88+(m*12|0)+8>>2]|0;c:do{if((c[s>>2]|0)<(l|0)){w=a[b+88+(m*12|0)|0]|0;r=w&255;d:do{if((w&255)>1){p=1;while(1){q=c[s+(p<<2)>>2]|0;o=p+1|0;if((q|0)>=(l|0)){break}if((o|0)<(r|0)){p=o}else{break d}}u=p+ -1|0;v=c[s+(u<<2)>>2]|0;v=_I(l-v|0,65536,q-v|0)|0;w=c[b+88+(m*12|0)+4>>2]|0;l=c[w+(u<<2)>>2]|0;l=(_I(v,(c[w+(p<<2)>>2]|0)-l|0,1)|0)+(l<<16)|0;break c}}while(0);l=c[(c[b+88+(m*12|0)+4>>2]|0)+(r+ -1<<2)>>2]<<16}else{l=c[c[b+88+(m*12|0)+4>>2]>>2]<<16}}while(0);c[(c[k>>2]|0)+(m*24|0)+8>>2]=l;m=m+1|0;if(m>>>0>=n>>>0){break b}l=c[f+(m<<2)>>2]|0}}}while(0);c[e>>2]=j;w=c[h>>2]|0;i=g;return w|0}function VS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;e=i;i=i+16|0;if(b>>>0<5&(b|0)!=0){g=0}else{g=6;i=f;return g|0}do{c[e+(g<<2)>>2]=(ZI(c[d+(g<<2)>>2]|0)|0)>>16;g=g+1|0;}while(g>>>0>>0);g=SS(a,b,e)|0;i=f;return g|0}function WS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;g=c[a+492>>2]|0;if((g|0)==0){l=6;i=f;return l|0}a=g+32|0;if((c[a>>2]|0)<=0){l=0;i=f;return l|0}g=g+28|0;h=0;while(1){j=c[g>>2]|0;do{if((c[j+(h*20|0)>>2]|0)==(d|0)){k=c[j+(h*20|0)+4>>2]|0;if((k|0)>(b|0)){c[e>>2]=c[j+(h*20|0)+8>>2];break}l=c[j+(h*20|0)+12>>2]|0;if((l|0)<(b|0)){c[e>>2]=c[j+(h*20|0)+16>>2];break}else{m=j+(h*20|0)+8|0;l=_I(b-k|0,(c[j+(h*20|0)+16>>2]|0)-(c[m>>2]|0)|0,l-k|0)|0;c[e>>2]=(c[m>>2]|0)+l;break}}}while(0);h=h+1|0;if((h|0)>=(c[a>>2]|0)){e=0;break}}i=f;return e|0}function XS(a,b){a=a|0;b=b|0;var c=0;c=i;$W(b|0,a+132|0,32)|0;i=c;return 0}function YS(a,c){a=a|0;c=c|0;b[c>>1]=b[a+164>>1]|0;i=i;return 0}function ZS(a){a=a|0;i=i;return 1}function _S(a,b){a=a|0;b=b|0;var c=0;c=i;$W(b|0,a+168|0,196)|0;i=c;return 0}function $S(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;bL(d,c[(c[a+420>>2]|0)+(b<<2)>>2]|0,e)|0;i=f;return 0}function aT(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[a+416>>2]|0;if((e|0)<=0){g=0;i=d;return g|0}f=c[a+420>>2]|0;a=0;while(1){g=a+1|0;if((Qc(b|0,c[f+(a<<2)>>2]|0)|0)==0){b=5;break}if((g|0)<(e|0)){a=g}else{a=0;b=5;break}}if((b|0)==5){i=d;return a|0}return 0}function bT(a){a=a|0;i=i;return c[a+364>>2]|0}function cT(a){a=a|0;i=i;return 0}function dT(a){a=a|0;i=i;return}function eT(a,b){a=a|0;b=b|0;var c=0;c=i;a=uJ(280448,b)|0;i=c;return a|0}function fT(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;h=i;m=i;i=i+8|0;n=m;p=i;i=i+256|0;x=i;i=i+8|0;y=x;q=i;i=i+272|0;s=q;z=i;i=i+104|0;j=z;l=i;i=i+8|0;v=l;c[f>>2]=1;o=f+136|0;if((c[o>>2]|0)==0){c[o>>2]=nK(c[(c[f+96>>2]|0)+4>>2]|0,277744)|0}r=f+320|0;if((c[r>>2]|0)==0){c[r>>2]=nK(c[(c[f+96>>2]|0)+4>>2]|0,277728)|0}e=PJ(e,0)|0;if((e|0)!=0){T=e;i=h;return T|0}r=f+100|0;w=c[r>>2]|0;bX(z|0,0,104)|0;u=f+104|0;F=c[u>>2]|0;e=c[o>>2]|0;bX(z|0,0,100)|0;Jd[c[c[e+4>>2]>>2]&63](j,0,0,w);e=j+72|0;c[e>>2]=F;E=IK(F)|0;T=MK(F,31)|0;a:do{if((T|0)==0){T=(vc(c[F+32>>2]|0,280384,31)|0)==0;PK(F);if(!T){c[l>>2]=2;break}L=F+4|0;M=s+10|0;H=10-s|0;I=j+76|0;t=j+84|0;J=j+80|0;N=j+4|0;G=j+8|0;D=j+96|0;A=j+32|0;C=j+28|0;B=j+12|0;K=7-s|0;b:while(1){O=IK(F)|0;P=c[L>>2]|0;k=IK(F)|0;if((P|0)==(k|0)){T=2;k=36;break a}P=P-k|0;k=s;Q=266;c:while(1){P=(Q|0)<(P|0)?Q:P;T=CK(F,k,P)|0;if((T|0)!=0){k=36;break a}if((P|0)<256){a[k+P|0]=0}k=k+(P+ -10)|0;if(s>>>0>>0){R=a[q]|0;P=s;while(1){if(R<<24>>24==83){if((vc(P|0,280416,9)|0)==0){k=18;break c}}Q=P+1|0;R=a[Q]|0;if(R<<24>>24==115){if((vc(P|0,280432,6)|0)==0){k=22;break c}}if(Q>>>0>>0){P=Q}else{break}}}else{Q=s}aX(q|0,Q|0,10)|0;P=c[L>>2]|0;k=IK(F)|0;if((P|0)==(k|0)){T=2;k=36;break a}else{P=P-k|0;O=O+256|0;k=M;Q=256}}if((k|0)==18){k=0;P=H+P|0}else if((k|0)==22){k=0;P=K+P|0}O=P+O|0;P=O-E|0;T=PJ(F,E)|0;if((T|0)!=0){k=36;break a}T=LK(F,P,I)|0;if((T|0)!=0){k=36;break a}c[t>>2]=O;c[J>>2]=P;R=c[I>>2]|0;c[N>>2]=R;c[z>>2]=R;c[G>>2]=R+P;c[D>>2]=-1;fd[c[A>>2]&511](j);fd[c[C>>2]&511](j);Q=c[z>>2]|0;fd[c[A>>2]&511](j);fd[c[C>>2]&511](j);P=c[G>>2]|0;S=c[z>>2]|0;if(S>>>0

>>0){while(1){T=c[B>>2]|0;if((T|0)!=0){k=36;break a}if((a[S]|0)==83){if((vc(S|0,280416,9)|0)==0){break b}}if((a[S+1|0]|0)==115){if((vc(S|0,280432,6)|0)==0){T=2;k=36;break a}}fd[c[A>>2]&511](j);fd[c[C>>2]&511](j);R=c[z>>2]|0;if(R>>>0

>>0){U=S;T=Q;S=R;Q=U;R=T}else{break}}}NK(F,I);T=PJ(F,O)|0;if((T|0)!=0){k=36;break a}}if((vc(R|0,280440,5)|0)==0){c[j+88>>2]=ec(Q|0)|0}c[l>>2]=0;M=c[I>>2]|0;K=c[J>>2]|0;c[z>>2]=M;E=M+K|0;c[G>>2]=E;c[B>>2]=0;q=f+300|0;F=f+140|0;s=f+304|0;L=j+68|0;G=j+64|0;H=f+164|0;I=f+312|0;J=f+196|0;K=M+(K+ -18)|0;d:while(1){c[z>>2]=M;fd[c[C>>2]&511](j);N=c[z>>2]|0;P=N>>>0>>0;O=P?N+ -17|0:K;if(M>>>0>>0){do{do{if((a[M]|0)==37){if((vc(M|0,277776,17)|0)!=0){break}if((c[q>>2]|0)<=0){break}c[D>>2]=(c[D>>2]|0)+1}}while(0);M=M+1|0;}while(M>>>0>>0)}if(!P){k=74;break}fd[c[A>>2]&511](j);M=c[z>>2]|0;if(M>>>0>=E>>>0){k=74;break}if((c[B>>2]|0)!=0){k=74;break}if(!((a[N]|0)==47&(N+2|0)>>>0>>0)){continue}P=N+1|0;O=M-P|0;if((O+ -1|0)>>>0>=21){continue}P=a[P]|0;Q=279640;S=277800;e:do{if((O|0)>1){Q=279640;S=277800;while(1){f:do{if(P<<24>>24==(a[Q]|0)){if((O|0)==(ZW(Q|0)|0)){R=1}else{break}while(1){T=R+1|0;if((a[N+T|0]|0)!=(a[Q+R|0]|0)){break f}if((T|0)<(O|0)){R=T}else{break e}}}}while(0);S=S+36|0;Q=c[S>>2]|0;if((Q|0)==0){continue d}}}else{N=Q;while(1){if(P<<24>>24==(a[N]|0)){if((O|0)==(ZW(N|0)|0)){break e}}S=S+36|0;N=c[S>>2]|0;if((N|0)==0){continue d}}}}while(0);M=c[S+8>>2]|0;do{if((M|0)==10){hd[c[S+12>>2]&127](f,j);M=c[B>>2]|0}else{N=c[S+4>>2]|0;if((N|0)==0){N=F}else if((N|0)==2){N=I}else if((N|0)==3){N=H}else if((N|0)==5){N=J}else{N=c[D>>2]|0;if((N|0)<0){k=65;break d}N=(c[s>>2]|0)+(N*252|0)|0}c[x>>2]=N;if((M+ -8|0)>>>0<2){M=Cd[c[L>>2]&63](j,S,y,0,0)|0;break}else{M=Cd[c[G>>2]&63](j,S,y,0,0)|0;break}}}while(0);c[B>>2]=M;if((M|0)!=0){break}M=c[z>>2]|0}if((k|0)==65){c[B>>2]=160;M=160}else if((k|0)==74){U=c[B>>2]|0;c[l>>2]=U;if((U|0)!=0|(g|0)<0){break}z=jJ(w,40,v)|0;x=f+328|0;c[x>>2]=z;if((c[l>>2]|0)!=0){break}y=j+88|0;A=c[y>>2]|0;if((A|0)==0){$W(z|0,c[u>>2]|0,40)|0;c[f+308>>2]=c[t>>2]}else{A=jJ(w,A,v)|0;v=f+324|0;c[v>>2]=A;if((c[l>>2]|0)!=0){break}w=c[y>>2]|0;u=c[u>>2]|0;if((PJ(u,c[t>>2]|0)|0)!=0){break}t=A+w|0;g:do{if((w|0)>0){w=u+4|0;C=p;B=p;z=1;while(1){h:while(1){if(C>>>0>=B>>>0){B=IK(u)|0;U=c[w>>2]|0;C=U-B|0;if((U|0)==(B|0)){break a}if((CK(u,p,C>>>0<256?C:256)|0)!=0){break a}C=p;B=p+((IK(u)|0)-B)|0}F=a[C]|0;if(((F&255)+ -48|0)>>>0<10){k=91;break}E=F+ -97<<24>>24;if((E&255)<6){D=0;break}if((F+ -65<<24>>24&255)<6){k=92;break}switch(F<<24>>24){case 0:case 12:case 10:case 13:case 9:case 32:{break};case 62:{D=1;E=0;break h};default:{break a}}C=C+1|0}if((k|0)==91){k=0;D=0;E=F+ -48<<24>>24}else if((k|0)==92){k=0;D=0;E=F+ -55<<24>>24}if(z<<24>>24==0){a[A]=(a[A]|0)+E<<24>>24;A=A+1|0}else{a[A]=E<<4}if(D<<24>>24!=0){break g}if(A>>>0>>0){C=C+1|0;z=1-z<<24>>24}else{break}}}}while(0);yJ(c[x>>2]|0,c[v>>2]|0,c[y>>2]|0);c[f+308>>2]=0}p=c[r>>2]|0;r=c[x>>2]|0;v=c[o>>2]|0;x=oJ(p,8,0,c[q>>2]|0,0,n)|0;o=f+316|0;c[o>>2]=x;i:do{if((c[m>>2]|0)==0){if((c[q>>2]|0)<=0){A=0;break}u=f+308|0;t=r+32|0;v=v+16|0;z=0;w=0;A=0;while(1){D=c[s>>2]|0;B=c[D+(w*252|0)+4>>2]|0;y=c[D+(w*252|0)+240>>2]|0;C=y+1|0;if(C>>>0>z>>>0){E=y+4&-4;A=oJ(p,4,z,E,A,n)|0;if((c[m>>2]|0)==0){z=E}else{break}}U=PJ(r,(c[D+(w*252|0)+244>>2]|0)+(c[u>>2]|0)|0)|0;c[m>>2]=U;if((U|0)!=0){break}D=D+(w*252|0)+248|0;U=MK(r,da(c[D>>2]|0,C)|0)|0;c[m>>2]=U;if((U|0)!=0){break}E=0;G=c[t>>2]|0;do{F=c[D>>2]&255;if(F<<24>>24==0){I=0}else{J=F;H=G;I=0;while(1){I=d[H]|I<<8;J=J+ -1<<24>>24;if(J<<24>>24==0){break}else{H=H+1|0}}G=G+((F+ -1<<24>>24&255)+1)|0}c[A+(E<<2)>>2]=I;E=E+1|0;}while(E>>>0<=y>>>0);PK(r);E=(c[A+(y<<2)>>2]|0)-(c[A>>2]|0)|0;D=x+4|0;c[D>>2]=oJ(p,4,0,C,0,n)|0;if((c[m>>2]|0)!=0){break}U=jJ(p,E,n)|0;c[c[D>>2]>>2]=U;if((c[m>>2]|0)!=0){break}U=PJ(r,(c[A>>2]|0)+(c[u>>2]|0)|0)|0;c[m>>2]=U;if((U|0)!=0){break}U=CK(r,c[c[D>>2]>>2]|0,E)|0;c[m>>2]=U;if((U|0)!=0){break}do{if((y|0)!=0){C=1;do{T=C+ -1|0;U=c[D>>2]|0;c[U+(C<<2)>>2]=(c[U+(T<<2)>>2]|0)+((c[A+(C<<2)>>2]|0)-(c[A+(T<<2)>>2]|0));C=C+1|0;}while(C>>>0<=y>>>0);if((B|0)<0){break}else{C=0}while(1){B=C+1|0;Gd[c[v>>2]&255](c[(c[D>>2]|0)+(C<<2)>>2]|0,(c[A+(B<<2)>>2]|0)-(c[A+(C<<2)>>2]|0)|0,4330);if(B>>>0>>0){C=B}else{break}}}}while(0);c[x>>2]=y;w=w+1|0;if((w|0)<(c[q>>2]|0)){x=x+8|0}else{break i}}r=c[o>>2]|0;if((r|0)==0){break}if((c[q>>2]|0)>0){n=0;do{r=c[r+(n<<3)+4>>2]|0;if((r|0)==0){r=0}else{lJ(p,c[r>>2]|0);c[c[(c[o>>2]|0)+(n<<3)+4>>2]>>2]=0;r=c[(c[o>>2]|0)+(n<<3)+4>>2]|0}lJ(p,r);c[(c[o>>2]|0)+(n<<3)+4>>2]=0;n=n+1|0;r=c[o>>2]|0}while((n|0)<(c[q>>2]|0))}lJ(p,r);c[o>>2]=0}else{A=0}}while(0);lJ(p,A);c[l>>2]=c[m>>2];break}c[l>>2]=M}else{k=36}}while(0);if((k|0)==36){c[l>>2]=T}m=j+76|0;if((c[m>>2]|0)!=0){NK(c[e>>2]|0,m)}fd[c[j+24>>2]&511](j);j=c[l>>2]|0;if((j|0)!=0|(g|0)<0){U=j;i=h;return U|0}if((g|0)!=0){U=6;i=h;return U|0}g=f+140|0;j=g+24|0;c[f+16>>2]=c[g+156>>2];c[f+36>>2]=0;c[f+4>>2]=0;c[f+8>>2]=(a[g+48|0]|0)==0?2065:2069;n=c[g+36>>2]|0;m=f+20|0;c[m>>2]=n;l=f+24|0;c[l>>2]=277752;j:do{if((n|0)==0){k=c[g>>2]|0;if((k|0)==0){break}c[m>>2]=k}else{e=c[g+32>>2]|0;if((e|0)==0){break}m=a[e]|0;if(m<<24>>24==0){break}k:while(1){while(1){o=a[n]|0;if(m<<24>>24==o<<24>>24){k=137;break}if(m<<24>>24==45|m<<24>>24==32){break}if(o<<24>>24==0){break k}else if(!(o<<24>>24==45|o<<24>>24==32)){break j}if(m<<24>>24==0){break j}else{n=n+1|0}}if((k|0)==137){k=0;n=n+1|0}e=e+1|0;m=a[e]|0;if(m<<24>>24==0){break j}}c[l>>2]=e}}while(0);l=f+12|0;k=(c[g+44>>2]|0)!=0|0;c[l>>2]=k;m=c[g+40>>2]|0;do{if((m|0)!=0){if((Qc(m|0,277760)|0)!=0){if((Qc(m|0,277768)|0)!=0){break}}c[l>>2]=k|2}}while(0);c[f+28>>2]=0;c[f+32>>2]=0;c[f+52>>2]=c[g+56>>2]>>16;l=c[g+60>>2]>>16;c[f+56>>2]=l;c[f+60>>2]=(c[g+64>>2]|0)+65535>>16;k=(c[g+68>>2]|0)+65535>>16;c[f+64>>2]=k;m=f+68|0;e=b[m>>1]|0;if(e<<16>>16==0){b[m>>1]=1e3;e=1e3}U=k&65535;b[f+70>>1]=U;k=l&65535;b[f+72>>1]=k;l=((((e&65535)*12|0)>>>0)/10|0)&65535;k=(U<<16>>16)-(k<<16>>16)|0;b[f+74>>1]=(l<<16>>16|0)<(k|0)?k&65535:l;b[f+80>>1]=b[j+26>>1]|0;b[f+82>>1]=b[g+52>>1]|0;U=0;i=h;return U|0}function gT(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;if((a|0)==0){i=h;return}g=a+140|0;f=g+24|0;b=c[a+100>>2]|0;d=a+316|0;l=c[d>>2]|0;e=g+160|0;if((l|0)!=0){j=c[e>>2]|0;if((j|0)>0){k=0;do{m=l+(k<<3)+4|0;n=c[m>>2]|0;if((n|0)!=0){lJ(b,c[n>>2]|0);c[c[m>>2]>>2]=0;lJ(b,c[m>>2]|0);c[m>>2]=0;l=c[d>>2]|0;j=c[e>>2]|0}k=k+1|0;}while((k|0)<(j|0))}lJ(b,l);c[d>>2]=0}lJ(b,c[f>>2]|0);c[f>>2]=0;n=g+28|0;lJ(b,c[n>>2]|0);c[n>>2]=0;n=g+32|0;lJ(b,c[n>>2]|0);c[n>>2]=0;n=g+36|0;lJ(b,c[n>>2]|0);c[n>>2]=0;n=g+40|0;lJ(b,c[n>>2]|0);c[n>>2]=0;n=g+164|0;lJ(b,c[n>>2]|0);c[n>>2]=0;c[e>>2]=0;lJ(b,c[g>>2]|0);c[g>>2]=0;n=g+12|0;lJ(b,c[n>>2]|0);c[n>>2]=0;n=g+16|0;lJ(b,c[n>>2]|0);c[n>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;n=a+324|0;lJ(b,c[n>>2]|0);c[n>>2]=0;n=a+328|0;lJ(b,c[n>>2]|0);c[n>>2]=0;i=h;return}function hT(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=i;i=i+8|0;e=c[a>>2]|0;f=c[e+320>>2]|0;e=mK(c[(c[e+96>>2]|0)+4>>2]|0,277728)|0;if((e|0)==0|(f|0)==0){f=0;i=b;return f|0}f=c[f>>2]|0;if((f|0)==0){f=0;i=b;return f|0}e=jd[f&511](e)|0;if((e|0)==0){f=0;i=b;return f|0}f=c[a>>2]|0;e=sd[c[e>>2]&127](c[f+100>>2]|0,(c[f+304>>2]|0)+((c[f+4>>2]|0)*252|0)|0,d)|0;if((e|0)!=0){f=e;i=b;return f|0}c[a+40>>2]=c[d>>2];f=0;i=b;return f|0}function iT(a){a=a|0;var b=0,d=0,e=0;b=i;d=a+40|0;if((c[d>>2]|0)==0){i=b;return}a=c[a>>2]|0;e=c[a+320>>2]|0;a=mK(c[(c[a+96>>2]|0)+4>>2]|0,277728)|0;do{if(!((a|0)==0|(e|0)==0)){e=c[e>>2]|0;if((e|0)==0){break}a=jd[e&511](a)|0;if((a|0)==0){break}fd[c[a+8>>2]&511](c[d>>2]|0)}}while(0);c[d>>2]=0;i=b;return}function jT(a){a=a|0;var b=0,d=0,e=0;b=i;e=c[a+4>>2]|0;d=c[e+320>>2]|0;if((d|0)==0){i=b;return 0}e=mK(c[(c[e+96>>2]|0)+4>>2]|0,277728)|0;if((e|0)==0){i=b;return 0}e=jd[c[d+4>>2]&511](e)|0;c[(c[a+156>>2]|0)+36>>2]=e;i=b;return 0}function kT(a){a=a|0;c[(c[a+156>>2]|0)+36>>2]=0;i=i;return}function lT(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var 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;j=i;n=i;i=i+1504|0;s=i;i=i+16|0;v=s;l=i;i=i+16|0;k=l;u=i;i=i+8|0;w=u;x=c[d+4>>2]|0;t=c[x+136>>2]|0;if((c[x+16>>2]|0)>>>0<=g>>>0){C=6;i=j;return C|0}h=(h&1024|0)==0?h:h|3;r=d+164|0;c[r>>2]=c[f+16>>2];q=d+168|0;c[q>>2]=c[f+20>>2];m=d+108|0;b[d+110>>1]=0;b[m>>1]=0;z=(h&1|0)==0;if(z){p=(h>>>1&1^1)&255}else{p=0}y=d+72|0;c[y>>2]=1869968492;t=t+12|0;A=Fd[c[c[t>>2]>>2]&7](n,x,f,d,0,0,p,h>>>16&15,201)|0;if((A|0)!=0){C=A;i=j;return C|0}B=h&1024;a[n+69|0]=B>>>10;g=nT(n,g)|0;if((g|0)!=0){C=g;i=j;return C|0}$W(s|0,n+1376|0,16)|0;A=c[n+1392>>2]|0;g=c[n+1396>>2]|0;fd[c[(c[t>>2]|0)+4>>2]&511](n);C=d+124|0;c[C>>2]=c[C>>2]&1|4;if((B|0)!=0){C=c[d+156>>2]|0;c[d+32>>2]=(ZI(c[n+32>>2]|0)|0)>>16;c[d+40>>2]=(ZI(c[n+40>>2]|0)|0)>>16;$W(C+12|0,s|0,16)|0;c[C+28>>2]=A;c[C+32>>2]=g;a[C+8|0]=1;C=0;i=j;return C|0}t=d+24|0;B=n+40|0;s=d+40|0;c[s>>2]=(ZI(c[B>>2]|0)|0)>>16;c[d+56>>2]=(ZI(c[B>>2]|0)|0)>>16;a[(c[d+156>>2]|0)+8|0]=0;B=x+140|0;B=(c[B+68>>2]|0)-(c[B+60>>2]|0)>>16;x=d+52|0;c[x>>2]=B;c[d+60>>2]=B;c[y>>2]=1869968492;if((e[f+14>>1]|0)<24){c[C>>2]=c[C>>2]|256}GJ(m,v);HJ(m,A,g);c[u>>2]=c[s>>2];C=w+4|0;c[C>>2]=0;IJ(w,v);c[s>>2]=(c[u>>2]|0)+A;c[u>>2]=0;c[C>>2]=c[x>>2];IJ(w,v);c[x>>2]=(c[C>>2]|0)+g;if(z){u=c[n+16>>2]|0;f=c[u+4>>2]|0;r=c[r>>2]|0;q=c[q>>2]|0;if(p<<24>>24==0){o=13}else{if((c[n+72>>2]|0)==0){o=13}}do{if((o|0)==13){n=b[u+2>>1]|0;if(n<<16>>16<=0){break}n=n<<16>>16;while(1){c[f>>2]=aJ(c[f>>2]|0,r)|0;C=f+4|0;c[C>>2]=aJ(c[C>>2]|0,q)|0;n=n+ -1|0;if((n|0)>0){f=f+8|0}else{break}}}}while(0);c[s>>2]=aJ(c[s>>2]|0,r)|0;c[x>>2]=aJ(c[x>>2]|0,q)|0}zK(m,k);B=c[l>>2]|0;c[t>>2]=(c[k+8>>2]|0)-B;C=c[k+12>>2]|0;c[d+28>>2]=C-(c[k+4>>2]|0);c[d+32>>2]=B;c[d+36>>2]=C;if((h&16|0)==0){C=0;i=j;return C|0}XJ(t,c[x>>2]|0);C=0;i=j;return C|0}function mT(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;_J(c[a>>2]|0,b);b=c[a>>2]|0;e=c[b+320>>2]|0;b=mK(c[(c[b+96>>2]|0)+4>>2]|0,277728)|0;if((b|0)==0|(e|0)==0){i=d;return 0}e=c[e>>2]|0;if((e|0)==0){i=d;return 0}b=jd[e&511](b)|0;if((b|0)==0){i=d;return 0}Cd[c[b+4>>2]&63](c[a+40>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,0,0)|0;i=d;return 0}function nT(a,b){a=a|0;b=b|0;var 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,A=0;e=i;j=i;i=i+8|0;p=j;t=i;i=i+8|0;r=t;h=i;i=i+16|0;f=h;o=c[a+4>>2]|0;n=o+140|0;q=c[o+328>>2]|0;c[j>>2]=0;m=c[o+100>>2]|0;l=c[o+136>>2]|0;k=c[(c[o+128>>2]|0)+52>>2]|0;g=(k|0)!=0;do{if(g){q=k+4|0;s=sd[c[c[k>>2]>>2]&127](c[q>>2]|0,b,r)|0;c[j>>2]=s;if((s|0)!=0){A=s;i=e;return A|0}u=n+148|0;v=c[u>>2]|0;x=v&255;if(x<<24>>24==0){s=0}else{w=c[t>>2]|0;s=0;while(1){s=d[w]|0|s<<8;x=x+ -1<<24>>24;if(x<<24>>24==0){break}else{w=w+1|0}}}w=c[r+4>>2]|0;do{if((w|0)==0){p=0;t=0}else{v=w-v|0;p=jJ(m,v,p)|0;if((c[j>>2]|0)!=0){t=v;break}$W(p|0,(c[t>>2]|0)+(c[u>>2]|0)|0,v|0)|0;t=v}}while(0);hd[c[(c[k>>2]|0)+4>>2]&127](c[q>>2]|0,r);q=c[j>>2]|0;if((q|0)==0){break}i=e;return q|0}else{s=n+148|0;u=n+152|0;t=(c[u>>2]|0)+(c[s>>2]|0)|0;r=n+168|0;v=PJ(q,(c[n+144>>2]|0)+(c[r>>2]|0)+(da(t,b)|0)|0)|0;c[j>>2]=v;if((v|0)!=0){A=v;i=e;return A|0}t=MK(q,t<<1)|0;c[j>>2]=t;if((t|0)!=0){A=t;i=e;return A|0}v=c[q+32>>2]|0;t=c[s>>2]|0;y=t&255;if(y<<24>>24==0){s=0}else{w=y+ -1<<24>>24&255;x=v;s=0;while(1){s=d[x]|0|s<<8;y=y+ -1<<24>>24;if(y<<24>>24==0){break}else{x=x+1|0}}v=v+(w+1)|0}z=c[u>>2]&255;y=z<<24>>24==0;do{if(y){u=0;v=0}else{w=z+ -1<<24>>24&255;A=z;x=v;u=0;while(1){u=d[x]|0|u<<8;A=A+ -1<<24>>24;if(A<<24>>24==0){break}else{x=x+1|0}}if(y){v=0;break}t=v+(w+1+t)|0;v=0;while(1){v=d[t]|0|v<<8;z=z+ -1<<24>>24;if(z<<24>>24==0){break}else{t=t+1|0}}}}while(0);t=v-u|0;PK(q);if(s>>>0>=(c[n+160>>2]|0)>>>0){c[j>>2]=9;A=9;i=e;return A|0}if((v|0)==(u|0)){A=c[j>>2]|0;i=e;return A|0}p=jJ(m,t,p)|0;v=c[j>>2]|0;if((v|0)!=0){A=v;i=e;return A|0}q=JK(q,(c[r>>2]|0)+u|0,p,t)|0;c[j>>2]=q;if((q|0)==0){break}i=e;return q|0}}while(0);o=c[o+316>>2]|0;c[a+1364>>2]=c[o+(s<<3)>>2];c[a+1368>>2]=c[o+(s<<3)+4>>2];c[a+1372>>2]=0;o=c[n+164>>2]|0;$W(a+1376|0,o+(s*252|0)+216|0,16)|0;z=o+(s*252|0)+232|0;A=c[z+4>>2]|0;n=a+1392|0;c[n>>2]=c[z>>2];c[n+4>>2]=A;o=c[o+(s*252|0)+4>>2]|0;c[a+1360>>2]=o;n=(o|0)>-1;o=n?o:0;if(n){Gd[c[l+16>>2]&255](p,t,4330)}c[j>>2]=sd[c[a+1484>>2]&127](a,p+o|0,t-o|0)|0;lJ(m,p);l=c[j>>2]|0;if((l|0)!=0|g^1){A=l;i=e;return A|0}if((c[(c[k>>2]|0)+8>>2]|0)==0){A=0;i=e;return A|0}v=a+32|0;c[h>>2]=(ZI(c[v>>2]|0)|0)>>16;c[f+4>>2]=0;x=a+40|0;w=f+8|0;c[w>>2]=(ZI(c[x>>2]|0)|0)>>16;z=a+44|0;y=f+12|0;c[y>>2]=(ZI(c[z>>2]|0)|0)>>16;A=pd[c[(c[k>>2]|0)+8>>2]&63](c[k+4>>2]|0,b,0,f)|0;c[j>>2]=A;c[v>>2]=c[h>>2]<<16;c[x>>2]=c[w>>2]<<16;c[z>>2]=c[y>>2]<<16;i=e;return A|0}function oT(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;f=i;i=i+8|0;g=c[a+100>>2]|0;c[f>>2]=0;e=jd[c[b+36>>2]&511](b)|0;b=a+304|0;if((c[b>>2]|0)!=0){i=d;return}g=oJ(g,252,0,e,0,f)|0;c[b>>2]=g;if((c[f>>2]|0)!=0){i=d;return}a=a+300|0;c[a>>2]=e;if((e|0)>0){e=0}else{i=d;return}while(1){c[g+(e*252|0)+4>>2]=4;e=e+1|0;if((e|0)>=(c[a>>2]|0)){break}g=c[b>>2]|0}i=d;return}function pT(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;e=i;i=i+24|0;j=e;f=c[d+96>>2]|0;if((f|0)<=-1){i=h;return}g=c[a+304>>2]|0;pd[c[d+52>>2]&63](d,6,j,3)|0;d=j+12|0;k=c[d>>2]|0;k=(k|0)<0?0-k|0:k;b[a+68>>1]=bJ(65536,bJ(k,1e3)|0)|0;if((k|0)==65536){l=j+4|0;a=j+8|0;k=j+16|0;j=j+20|0}else{c[e>>2]=bJ(c[e>>2]|0,k)|0;l=j+4|0;c[l>>2]=bJ(c[l>>2]|0,k)|0;a=j+8|0;c[a>>2]=bJ(c[a>>2]|0,k)|0;m=j+16|0;c[m>>2]=bJ(c[m>>2]|0,k)|0;j=j+20|0;c[j>>2]=bJ(c[j>>2]|0,k)|0;c[d>>2]=65536;k=m}c[g+(f*252|0)+216>>2]=c[e>>2];c[g+(f*252|0)+224>>2]=c[l>>2];c[g+(f*252|0)+220>>2]=c[a>>2];c[g+(f*252|0)+228>>2]=c[d>>2];c[g+(f*252|0)+232>>2]=c[k>>2]>>16;c[g+(f*252|0)+236>>2]=c[j>>2]>>16;i=h;return}function qT(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[b+96>>2]|0;if((e|0)<=-1){i=d;return}a=c[a+304>>2]|0;b=Bd[c[b+40>>2]&255](b,0)|0;c[a+(e*252|0)+208>>2]=b;c[a+(e*252|0)+180>>2]=b;i=d;return}function rT(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((b|0)!=0){c[b>>2]=c[a+152>>2]}if((d|0)!=0){c[d>>2]=c[a+156>>2]}if((e|0)==0){i=f;return 0}c[e>>2]=c[a+160>>2];i=f;return 0}function sT(b,c){b=b|0;c=c|0;if((c|0)!=0){a[c]=1}i=i;return 0}function tT(a,b,d){a=a|0;b=b|0;d=d|0;if((d|0)!=0){c[d>>2]=b}i=i;return 0}function uT(a,b){a=a|0;b=b|0;var c=0;c=i;$W(b|0,a+164|0,32)|0;i=c;return 0}function vT(a,c){a=a|0;c=c|0;b[c>>1]=b[a+312>>1]|0;i=i;return 0}function wT(b){b=b|0;var d=0;d=i;b=c[b+140>>2]|0;if((b|0)==0){i=d;return 0}else{i=d;return((a[b]|0)==47?b+1|0:b)|0}return 0}function xT(a){a=a|0;var b=0;b=i;c[a+40>>2]=c[(mK(c[a+4>>2]|0,282048)|0)>>2];i=b;return 0}function yT(a){a=a|0;i=i;return}function zT(a,b){a=a|0;b=b|0;var c=0;c=i;a=uJ(281888,b)|0;i=c;return a|0}function AT(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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,O=0,P=0;d=i;x=i;i=i+8|0;w=x;v=i;i=i+16|0;B=i;i=i+8|0;F=B;C=i;i=i+304|0;t=C;u=i;i=i+8|0;p=i;i=i+32|0;s=p;k=i;i=i+16|0;j=k;n=e+500|0;c[n>>2]=0;c[e>>2]=1;q=e+96|0;l=oK(c[q>>2]|0,280728)|0;c[e+484>>2]=l;m=nK(c[(c[q>>2]|0)+4>>2]|0,280752)|0;c[e+488>>2]=m;z=c[e+100>>2]|0;bX(C|0,0,304)|0;o=e+492|0;c[o>>2]=jJ(z,12,u)|0;a:do{if((c[u>>2]|0)==0){E=c[e+104>>2]|0;A=c[c[m+4>>2]>>2]|0;c[B>>2]=0;Jd[A&63](t,0,0,z);c[t+72>>2]=E;A=t+80|0;c[A>>2]=0;y=t+76|0;c[y>>2]=0;D=t+84|0;a[D]=0;G=PJ(E,0)|0;c[B>>2]=G;do{if((G|0)==0){G=MK(E,17)|0;c[B>>2]=G;if((G|0)!=0){F=G;r=15;break}if((iX(c[E+32>>2]|0,281864,17)|0)!=0){c[B>>2]=2}PK(E);G=c[B>>2]|0;if((G|0)!=0){F=G;r=15;break}G=PJ(E,0)|0;c[B>>2]=G;if((G|0)!=0){F=G;r=15;break}G=c[E+4>>2]|0;if((c[E+20>>2]|0)==0){c[y>>2]=(c[E>>2]|0)+(c[E+8>>2]|0);c[A>>2]=G;a[D]=1;F=DK(E,G)|0;c[B>>2]=F;if((F|0)!=0){r=15;break}G=c[A>>2]|0}else{H=jJ(z,G,F)|0;c[y>>2]=H;F=c[B>>2]|0;if((F|0)!=0){r=15;break}F=CK(E,H,G)|0;c[B>>2]=F;if((F|0)!=0){r=15;break}c[A>>2]=G}z=c[y>>2]|0;c[t+4>>2]=z;c[C>>2]=z;A=t+8|0;c[A>>2]=z+G;c[u>>2]=0;y=t}else{F=G;r=15}}while(0);if((r|0)==15){if((a[D]|0)!=0){c[u>>2]=F;break}lJ(z,c[y>>2]|0);c[y>>2]=0;P=c[B>>2]|0;c[u>>2]=P;if((P|0)!=0){break}G=c[A>>2]|0;z=0;A=t+8|0;y=t}c[y>>2]=z;z=z+G|0;c[A>>2]=z;I=t+12|0;c[I>>2]=0;J=t+28|0;fd[c[J>>2]&511](t);L=c[y>>2]|0;b:do{if(L>>>0>>0){F=t+32|0;E=t+56|0;D=v+8|0;B=e+132|0;K=t+68|0;H=t+64|0;C=e+132|0;A=e+164|0;G=e+460|0;c:while(1){M=a[L]|0;do{if(M<<24>>24==70&(L+25|0)>>>0>>0){if((vc(L|0,280776,13)|0)!=0){r=30;break}fd[c[F>>2]&511](t);fd[c[J>>2]&511](t);L=c[y>>2]|0;d:do{if(L>>>0>>0){M=L;while(1){if((a[M]|0)==107&(M+5|0)>>>0>>0){if((vc(M|0,280792,5)|0)==0){break}}fd[c[F>>2]&511](t);M=c[I>>2]|0;if((M|0)!=0){r=51;break c}fd[c[J>>2]&511](t);M=c[y>>2]|0;if(M>>>0>=z>>>0){break d}}fd[c[F>>2]&511](t);hd[c[E>>2]&127](t,v);L=(c[D>>2]|0)==3?c[y>>2]|0:L}}while(0);c[y>>2]=L}else{r=30}}while(0);e:do{if((r|0)==30){r=0;if(!(M<<24>>24==47&(L+2|0)>>>0>>0)){fd[c[F>>2]&511](t);M=c[I>>2]|0;if((M|0)==0){break}else{r=52;break c}}L=L+1|0;c[y>>2]=L;fd[c[F>>2]&511](t);M=c[I>>2]|0;if((M|0)!=0){r=52;break c}P=c[y>>2]|0;N=P-L|0;if((N+ -1|0)>>>0<21&P>>>0>>0){O=0}else{break}f:while(1){M=280800+(O*36|0)|0;P=c[M>>2]|0;do{if((P|0)!=0){if((a[L]|0)!=(a[P]|0)){break}if((N|0)!=(ZW(P|0)|0)){break}if((iX(L|0,P|0,N|0)|0)==0){break f}}}while(0);O=O+1|0;if((O|0)>=20){break e}}L=c[280808+(O*36|0)>>2]|0;do{if((O+ -15|0)>>>0<4){hd[c[280812+(O*36|0)>>2]&127](e,t);M=c[I>>2]|0}else{N=c[280804+(O*36|0)>>2]|0;if((N|0)==5){c[x>>2]=G}else if((N|0)==2){c[x>>2]=A}else if((N|0)==3){c[x>>2]=C}else{c[x>>2]=B}if((L+ -8|0)>>>0<2){M=Cd[c[K>>2]&63](t,M,w,0,0)|0;break}else{M=Cd[c[H>>2]&63](t,M,w,0,0)|0;break}}}while(0);c[I>>2]=M;if((M|0)!=0){r=51;break c}}}while(0);fd[c[J>>2]&511](t);L=c[y>>2]|0;if(L>>>0>=z>>>0){break b}}if((r|0)==51){c[u>>2]=M;break a}else if((r|0)==52){c[u>>2]=M;break a}}}while(0);P=c[I>>2]|0;c[u>>2]=P;if((P|0)!=0){break}if((a[e+433|0]|0)!=42){c[u>>2]=2;break}v=e+416|0;c[v>>2]=c[t+144>>2];w=t+212|0;if((c[w>>2]|0)==0){c[u>>2]=3}c[w>>2]=0;c[e+396>>2]=c[t+200>>2];c[e+424>>2]=c[t+224>>2];c[e+428>>2]=c[t+228>>2];O=t+148|0;c[e+400>>2]=c[O>>2];P=t+172|0;w=e+420|0;c[w>>2]=c[P>>2];c[O>>2]=0;c[P>>2]=0;if((c[e+368>>2]|0)!=1){break}z=t+108|0;if((c[z>>2]|0)>0){A=e+384|0;y=e+388|0;x=t+116|0;B=0;D=0;C=0;do{b[(c[A>>2]|0)+(B<<1)>>1]=0;c[(c[y>>2]|0)+(B<<2)>>2]=280768;E=c[(c[x>>2]|0)+(B<<2)>>2]|0;g:do{if((E|0)!=0){J=c[v>>2]|0;if((J|0)<=0){break}G=c[w>>2]|0;I=0;while(1){F=c[G+(I<<2)>>2]|0;H=I+1|0;if((Qc(E|0,F|0)|0)==0){break}if((H|0)<(J|0)){I=H}else{break g}}b[(c[A>>2]|0)+(B<<1)>>1]=I;c[(c[y>>2]|0)+(B<<2)>>2]=F;if((Qc(280768,F|0)|0)==0){break}D=(B|0)<(D|0)?D:B+1|0;C=(B|0)<(C|0)?B:C}}while(0);B=B+1|0;}while((B|0)<(c[z>>2]|0))}else{D=0;C=0}c[e+376>>2]=C;c[e+380>>2]=D;c[e+372>>2]=c[t+88>>2]}}while(0);v=c[t+140>>2]|0;if((v|0)!=0){fd[v&511](t+92|0)}v=c[t+248>>2]|0;if((v|0)!=0){fd[v&511](t+200|0)}v=c[t+196>>2]|0;if((v|0)!=0){fd[v&511](t+148|0)}v=c[t+300>>2]|0;if((v|0)!=0){fd[v&511](t+252|0)}if((a[t+84|0]|0)==0){P=t+76|0;lJ(c[t+16>>2]|0,c[P>>2]|0);c[P>>2]=0}fd[c[t+24>>2]&511](t);t=c[u>>2]|0;if((t|0)!=0|(f|0)<0){P=t;i=d;return P|0}if((f|0)>0){P=6;i=d;return P|0}c[e+16>>2]=c[e+416>>2];c[e+36>>2]=0;c[e+4>>2]=0;f=e+8|0;c[f>>2]=(a[e+156|0]|0)==0?2577:2581;w=c[e+144>>2]|0;u=e+20|0;c[u>>2]=w;t=e+24|0;c[t>>2]=280760;h:do{if((w|0)==0){r=c[e+364>>2]|0;if((r|0)==0){break}c[u>>2]=r}else{v=c[e+140>>2]|0;if((v|0)==0){break}u=a[v]|0;if(u<<24>>24==0){break}i:while(1){while(1){x=a[w]|0;if(u<<24>>24==x<<24>>24){r=87;break}if(u<<24>>24==45|u<<24>>24==32){break}if(x<<24>>24==0){break i}else if(!(x<<24>>24==45|x<<24>>24==32)){break h}if(u<<24>>24==0){break h}else{w=w+1|0}}if((r|0)==87){r=0;w=w+1|0}v=v+1|0;u=a[v]|0;if(u<<24>>24==0){break h}}c[t>>2]=v}}while(0);c[e+28>>2]=0;c[e+32>>2]=0;c[p>>2]=1;c[s+4>>2]=c[o>>2];c[s+8>>2]=c[e+496>>2];if((g|0)!=0){c[p>>2]=17;c[s+24>>2]=g;c[s+28>>2]=h}h=MJ(c[(c[q>>2]|0)+4>>2]|0,s,0,n)|0;if((h|0)!=0){P=h;i=d;return P|0}VJ(c[(c[n>>2]|0)+88>>2]|0)|0;h=c[n>>2]|0;$W(e+52|0,h+52|0,16)|0;b[e+68>>1]=b[h+68>>1]|0;b[e+70>>1]=b[h+70>>1]|0;b[e+72>>1]=b[h+72>>1]|0;b[e+74>>1]=b[h+74>>1]|0;b[e+76>>1]=b[h+76>>1]|0;b[e+78>>1]=b[h+78>>1]|0;b[e+80>>1]=b[e+158>>1]|0;b[e+82>>1]=b[e+160>>1]|0;n=e+12|0;g=(c[e+152>>2]|0)!=0|0;c[n>>2]=g;if((c[h+12>>2]&2|0)!=0){c[n>>2]=g|2}if((c[h+8>>2]&32|0)!=0){c[f>>2]=c[f>>2]|32}if((l|0)==0|(m|0)==0){P=0;i=d;return P|0}l=c[m+20>>2]|0;c[k>>2]=e;g=j+8|0;b[g>>1]=3;m=j+10|0;b[m>>1]=1;h=j+4|0;c[h>>2]=1970170211;k=l+12|0;n=eK(c[k>>2]|0,0,j,0)|0;if(!((n|0)==0|(n|0)==163)){P=n;i=d;return P|0}b[g>>1]=7;e=c[e+368>>2]|0;if((e|0)==4){c[h>>2]=1094992453;b[m>>1]=1;l=l+4|0}else if((e|0)==2){c[h>>2]=1094995778;b[m>>1]=0}else if((e|0)==3){c[h>>2]=1818326065;b[m>>1]=3;l=k}else if((e|0)==1){c[h>>2]=1094992451;b[m>>1]=2;l=l+8|0}else{P=0;i=d;return P|0}e=c[l>>2]|0;if((e|0)==0){P=0;i=d;return P|0}P=eK(e,0,j,0)|0;i=d;return P|0}function BT(a){a=a|0;var b=0,d=0,e=0;b=i;if((a|0)==0){i=b;return}d=c[a+100>>2]|0;e=c[a+500>>2]|0;if((e|0)!=0){SJ(e)|0}e=a+132|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+136|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+140|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+144|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+148|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+428|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+424|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+420|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+396|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+400|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+384|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+388|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+364|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+492|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+556|0;lJ(d,c[e>>2]|0);c[e>>2]=0;c[a+552>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;i=b;return}function CT(a){a=a|0;var b=0,d=0,e=0;d=i;e=i;i=i+8|0;b=RJ(c[(c[a>>2]|0)+500>>2]|0,e)|0;e=c[e>>2]|0;c[a+44>>2]=e;hK(e)|0;i=d;return b|0}function DT(a){a=a|0;var b=0,d=0;b=i;d=a+44|0;if((TJ((c[(c[a>>2]|0)+500>>2]|0)+108|0,c[d>>2]|0)|0)==0){i=b;return}VJ(c[d>>2]|0)|0;c[d>>2]=0;i=b;return}function ET(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;e=i;i=i+8|0;f=c[a+4>>2]|0;d=c[f+500>>2]|0;if((c[f+84>>2]|0)==0){c[a+160>>2]=c[d+84>>2];f=0;i=b;return f|0}else{f=DJ(d,e)|0;c[a+160>>2]=c[e>>2];i=b;return f|0}return 0}function FT(a){a=a|0;var b=0;b=i;EJ(c[a+160>>2]|0);i=b;return}function GT(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;h=c[(c[(c[a+4>>2]|0)+96>>2]|0)+40>>2]|0;g=a+160|0;j=c[g>>2]|0;AJ(j);c[j+152>>2]=0;bX(j+24|0,0,40)|0;bX(j+72|0,0,72)|0;e=pd[c[h+80>>2]&63](c[g>>2]|0,c[b+44>>2]|0,d,e|8)|0;if((e|0)!=0){i=f;return e|0}j=c[g>>2]|0;$W(a+24|0,j+24|0,32)|0;c[a+56>>2]=c[j+56>>2];c[a+60>>2]=c[j+60>>2];c[a+72>>2]=c[j+72>>2];$W(a+108|0,j+108|0,20)|0;$W(a+76|0,j+76|0,24)|0;c[a+100>>2]=c[j+100>>2];c[a+104>>2]=c[j+104>>2];c[a+128>>2]=c[j+128>>2];c[a+132>>2]=c[j+132>>2];c[a+136>>2]=c[j+136>>2];c[a+140>>2]=c[j+140>>2];i=f;return e|0}function HT(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[a>>2]|0;hK(c[a+44>>2]|0)|0;e=e+500|0;b=aK(c[e>>2]|0,b)|0;if((b|0)!=0){i=d;return b|0}$W(a+12|0,(c[(c[e>>2]|0)+88>>2]|0)+12|0,28)|0;i=d;return b|0}function IT(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[a>>2]|0;hK(c[a+44>>2]|0)|0;e=e+500|0;b=$J(c[e>>2]|0,b)|0;if((b|0)!=0){i=d;return b|0}$W(a+12|0,(c[(c[e>>2]|0)+88>>2]|0)+12|0,28)|0;i=d;return b|0}function JT(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=i;i=i+24|0;g=f;pd[c[d+52>>2]&63](d,6,g,3)|0;h=g+12|0;d=c[h>>2]|0;d=(d|0)<0?0-d|0:d;b[a+68>>1]=(bJ(65536e3,d)|0)>>>16;if((d|0)==65536){d=c[g+20>>2]|0;h=c[h>>2]|0;j=g+4|0;k=g+8|0;g=g+16|0}else{c[f>>2]=bJ(c[f>>2]|0,d)|0;j=g+4|0;c[j>>2]=bJ(c[j>>2]|0,d)|0;k=g+8|0;c[k>>2]=bJ(c[k>>2]|0,d)|0;l=g+16|0;c[l>>2]=bJ(c[l>>2]|0,d)|0;g=g+20|0;d=bJ(c[g>>2]|0,d)|0;c[g>>2]=d;c[h>>2]=65536;h=65536;g=l}c[a+436>>2]=c[f>>2];c[a+444>>2]=c[j>>2];c[a+440>>2]=c[k>>2];c[a+448>>2]=h;c[a+452>>2]=c[g>>2]>>16;c[a+456>>2]=d>>16;i=e;return}function KT(b,d){b=b|0;d=d|0;var 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;e=i;m=i;i=i+8|0;s=m;j=c[d+8>>2]|0;o=c[b+488>>2]|0;f=d+28|0;fd[c[f>>2]&511](d);l=c[d>>2]|0;if(l>>>0>=j>>>0){c[d+12>>2]=3;i=e;return}v=a[l]|0;k=v<<24>>24==91;if(!(((v&255)+ -48|0)>>>0<10|k)){do{if((l+17|0)>>>0>>0){if((vc(l|0,281800,16)|0)!=0){break}c[b+368>>2]=2;i=e;return}}while(0);do{if((l+15|0)>>>0>>0){if((vc(l|0,281824,14)|0)!=0){break}c[b+368>>2]=4;i=e;return}}while(0);do{if((l+18|0)>>>0>>0){if((vc(l|0,281840,17)|0)!=0){break}c[b+368>>2]=3;i=e;return}}while(0);c[d+12>>2]=3;i=e;return}g=d+92|0;p=c[d+16>>2]|0;if(k){c[d>>2]=l+1;k=256;t=1}else{k=jd[c[d+36>>2]&511](d)|0;t=0}fd[c[f>>2]&511](d);if((c[d>>2]|0)>>>0>=j>>>0){i=e;return}c[b+372>>2]=k;c[d+88>>2]=k;c[b+384>>2]=oJ(p,2,0,k,0,s)|0;u=c[m>>2]|0;do{if((u|0)==0){c[b+388>>2]=oJ(p,4,0,k,0,s)|0;u=c[m>>2]|0;if((u|0)!=0){break}u=sd[c[c[o>>2]>>2]&127](g,k,p)|0;c[m>>2]=u;if((u|0)!=0){break}if((k|0)!=0){o=d+136|0;m=0;do{pd[c[o>>2]&63](g,m,280768,8)|0;m=m+1|0;}while(m>>>0>>0)}fd[c[f>>2]&511](d);u=c[d>>2]|0;a:do{if(u>>>0>>0){o=d+32|0;l=d+12|0;s=d+36|0;p=d+136|0;m=d+116|0;b:do{if(t<<24>>24==0){n=0;c:while(1){q=a[u]|0;do{if(q<<24>>24==93){h=u;break b}else if(q<<24>>24==100){r=u+3|0;if(r>>>0>=j>>>0){break}if((a[u+1|0]|0)!=101){break}if((a[u+2|0]|0)!=102){break}switch(a[r]|0){case 0:case 12:case 10:case 13:case 9:case 32:{break a};default:{}}}}while(0);do{if(((q&255)+ -48|0)>>>0>9){fd[c[o>>2]&511](d);if((c[l>>2]|0)==0){r=u}else{n=52;break c}}else{q=jd[c[s>>2]&511](d)|0;fd[c[f>>2]&511](d);r=c[d>>2]|0;if(!((a[r]|0)==47&(r+2|0)>>>0>>0&n>>>0>>0)){break}r=r+1|0;c[d>>2]=r;fd[c[o>>2]&511](d);if((c[l>>2]|0)!=0){n=52;break c}t=(c[d>>2]|0)-r|0;v=pd[c[p>>2]&63](g,q,r,t+1|0)|0;c[l>>2]=v;if((v|0)!=0){n=52;break c}a[(c[(c[m>>2]|0)+(q<<2)>>2]|0)+t|0]=0;n=n+1|0}}while(0);fd[c[f>>2]&511](d);u=c[d>>2]|0;if(u>>>0>=j>>>0){break a}}if((n|0)==52){i=e;return}}else{s=0;d:while(1){t=a[u]|0;do{if(t<<24>>24==93){h=u;break b}else if(t<<24>>24==100){v=u+3|0;if(v>>>0>=j>>>0){r=u;q=s;break}do{if((a[u+1|0]|0)==101){if((a[u+2|0]|0)!=102){break}switch(a[v]|0){case 0:case 12:case 10:case 13:case 9:case 32:{r=v;break a};default:{}}}}while(0);if(t<<24>>24==93){h=u;break b}else{n=36}}else{n=36}}while(0);do{if((n|0)==36){n=0;if(!(t<<24>>24==47&(u+2|0)>>>0>>0&s>>>0>>0)){r=u;q=s;break}r=u+1|0;c[d>>2]=r;fd[c[o>>2]&511](d);if((c[l>>2]|0)!=0){n=52;break d}q=(c[d>>2]|0)-r|0;v=pd[c[p>>2]&63](g,s,r,q+1|0)|0;c[l>>2]=v;if((v|0)!=0){n=52;break d}a[(c[(c[m>>2]|0)+(s<<2)>>2]|0)+q|0]=0;q=s+1|0}}while(0);fd[c[f>>2]&511](d);u=c[d>>2]|0;if(u>>>0>>0){s=q}else{break a}}if((n|0)==52){i=e;return}}}while(0);r=h+1|0}else{r=l}}while(0);c[b+368>>2]=1;c[d>>2]=r;i=e;return}}while(0);c[d+12>>2]=u;i=e;return}function LT(b,d){b=b|0;d=d|0;var 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,A=0,B=0;e=i;f=d+200|0;g=d+148|0;j=d+252|0;o=c[d+16>>2]|0;p=c[b+488>>2]|0;n=c[d+8>>2]|0;b=d+28|0;fd[c[b>>2]&511](d);r=c[d>>2]|0;a:do{if(r>>>0>>0){r=a[r]|0;b:do{if(((r&255)+ -48|0)>>>0<10){c[d+144>>2]=jd[c[d+36>>2]&511](d)|0;if((c[d+12>>2]|0)==0){q=c[d>>2]|0;break}else{i=e;return}}else{if(r<<24>>24!=60){B=3;break a}r=d+32|0;fd[c[r>>2]&511](d);s=d+12|0;if((c[s>>2]|0)!=0){i=e;return}fd[c[b>>2]&511](d);t=c[d>>2]|0;if(t>>>0>>0){w=t;v=0}else{q=t;break}while(1){u=a[w]|0;if(u<<24>>24==62){m=10;break}else if(u<<24>>24==47){u=v+1|0}else{u=v}fd[c[r>>2]&511](d);if((c[s>>2]|0)!=0){m=46;break}fd[c[b>>2]&511](d);w=c[d>>2]|0;if(w>>>0>>0){v=u}else{q=w;break b}}if((m|0)==10){c[d+144>>2]=v;c[d>>2]=t;q=t;break}else if((m|0)==46){i=e;return}}}while(0);if(q>>>0>=n>>>0){B=3;break}s=d+144|0;B=sd[c[c[p>>2]>>2]&127](f,c[s>>2]|0,o)|0;if((B|0)!=0){break}B=sd[c[c[p>>2]>>2]&127](g,c[s>>2]|0,o)|0;if((B|0)!=0){break}B=sd[c[c[p>>2]>>2]&127](j,4,o)|0;if((B|0)!=0){break}v=d+32|0;t=d+12|0;p=d+192|0;r=d+172|0;u=d+36|0;o=d+244|0;q=d+224|0;w=0;y=0;x=0;c:while(1){do{fd[c[b>>2]&511](d);A=c[d>>2]|0;if(A>>>0>=n>>>0){l=w;k=y;h=x;break c}z=a[A]|0;do{if(z<<24>>24==62){l=w;k=y;h=x;break c}else if(z<<24>>24==101){B=A+3|0;if(B>>>0>=n>>>0){break}do{if((a[A+1|0]|0)==110){if((a[A+2|0]|0)!=100){break}switch(a[B]|0){case 0:case 12:case 10:case 13:case 9:case 32:{l=w;k=y;h=x;break c};default:{}}}}while(0);if(z<<24>>24==62){l=w;k=y;h=x;break c}}}while(0);fd[c[v>>2]&511](d);if((c[t>>2]|0)!=0){m=46;break c}}while((a[A]|0)!=47);z=A+1|0;if(z>>>0>=n>>>0){B=3;break a}A=(c[d>>2]|0)-z|0;B=pd[c[p>>2]&63](g,w,z,A+1|0)|0;if((B|0)!=0){break a}a[(c[(c[r>>2]|0)+(w<<2)>>2]|0)+A|0]=0;if((a[z]|0)==46){z=(Qc(280768,c[(c[r>>2]|0)+(w<<2)>>2]|0)|0)==0;y=z?1:y;x=z?w:x}fd[c[b>>2]&511](d);z=c[d>>2]|0;jd[c[u>>2]&511](d)|0;A=c[d>>2]|0;if(A>>>0>=n>>>0){B=3;break a}A=A-z|0;B=pd[c[o>>2]&63](f,w,z,A+1|0)|0;if((B|0)!=0){break a}a[(c[(c[q>>2]|0)+(w<<2)>>2]|0)+A|0]=0;w=w+1|0;if(w>>>0>=(c[s>>2]|0)>>>0){l=w;k=y;h=x;break}}if((m|0)==46){i=e;return}c[s>>2]=l;if(k<<24>>24==0){B=3;break}m=c[c[r>>2]>>2]|0;if((Qc(280768,m|0)|0)==0){i=e;return}k=d+296|0;l=d+176|0;B=pd[c[k>>2]&63](j,0,m,c[c[l>>2]>>2]|0)|0;if((B|0)!=0){break}m=d+228|0;B=pd[c[k>>2]&63](j,1,c[c[q>>2]>>2]|0,c[c[m>>2]>>2]|0)|0;if((B|0)!=0){break}B=pd[c[k>>2]&63](j,2,c[(c[r>>2]|0)+(h<<2)>>2]|0,c[(c[l>>2]|0)+(h<<2)>>2]|0)|0;if((B|0)!=0){break}B=pd[c[k>>2]&63](j,3,c[(c[q>>2]|0)+(h<<2)>>2]|0,c[(c[m>>2]|0)+(h<<2)>>2]|0)|0;if((B|0)!=0){break}j=d+276|0;k=d+280|0;B=pd[c[p>>2]&63](g,h,c[c[j>>2]>>2]|0,c[c[k>>2]>>2]|0)|0;if((B|0)!=0){break}B=pd[c[o>>2]&63](f,h,c[(c[j>>2]|0)+4>>2]|0,c[(c[k>>2]|0)+4>>2]|0)|0;if((B|0)!=0){break}B=pd[c[p>>2]&63](g,0,c[(c[j>>2]|0)+8>>2]|0,c[(c[k>>2]|0)+8>>2]|0)|0;if((B|0)!=0){break}B=pd[c[o>>2]&63](f,0,c[(c[j>>2]|0)+12>>2]|0,c[(c[k>>2]|0)+12>>2]|0)|0;if((B|0)!=0){break}i=e;return}else{B=3}}while(0);c[d+12>>2]=B;i=e;return}function MT(b,e){b=b|0;e=e|0;var 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,A=0,B=0,C=0,D=0;f=i;h=i;i=i+8|0;l=h;k=i;i=i+8|0;j=k;g=c[e+16>>2]|0;n=c[e+8>>2]|0;m=e+28|0;fd[c[m>>2]&511](e);o=c[e>>2]|0;a:do{if(o>>>0>>0){c[e>>2]=o+1;if((a[o]|0)!=91){t=3;break}fd[c[m>>2]&511](e);B=c[e>>2]|0;b:do{if(B>>>0>>0){p=e+36|0;o=e+32|0;q=e+12|0;r=b+492|0;b=b+496|0;s=e+44|0;u=0;C=0;A=0;w=0;z=0;v=0;x=0;y=0;c:while(1){D=a[B]|0;do{if(D<<24>>24==60){fd[c[o>>2]&511](e);if((c[q>>2]|0)!=0){break a}t=((c[e>>2]|0)+~B|0)/2|0;v=oJ(g,1,w,t,v,l)|0;w=c[h>>2]|0;if((w|0)!=0){t=42;break a}c[e>>2]=B;Cd[c[s>>2]&63](e,v,t,j,1)|0;u=1;w=t;x=c[k>>2]|0;t=20}else if(D<<24>>24==93){t=7;break c}else{if(((D&255)+ -48|0)>>>0>=10){t=20;break}if(u<<24>>24!=0){t=13;break c}x=jd[c[p>>2]&511](e)|0;if((x|0)<0){t=15;break c}fd[c[o>>2]&511](e);if((c[q>>2]|0)!=0){t=45;break c}u=c[e>>2]|0;v=u+1|0;if((n-u|0)<(x|0)){t=18;break c}c[e>>2]=u+(x+1);u=0}}while(0);if((t|0)==20){t=0;if((v|0)==0){t=21;break}}B=x+ -1|0;if((a[v+B|0]|0)==0){x=((x|0)%2|0|0)==1?B:x}if((x|0)==0){t=26;break}if((x|0)>0){B=0;do{do{if((z|0)==0){if(C>>>0<12){a[(c[r>>2]|0)+C|0]=a[v+B|0]|0;C=C+1|0;z=0;break}else{t=c[r>>2]|0;A=(d[t+4|0]<<4)+(d[t+5|0]|0)|0;y=A<<4|12;c[r>>2]=oJ(g,1,12,y,t,l)|0;t=c[h>>2]|0;if((t|0)==0){t=31;break}else{w=t;t=42;break a}}}else if((z|0)==2){t=36}else if((z|0)==1){t=31}}while(0);do{if((t|0)==31){t=0;if(C>>>0>>0){a[(c[r>>2]|0)+C|0]=a[v+B|0]|0;C=C+1|0;z=1;break}t=c[r>>2]|0;if((A|0)>0){z=0;while(1){D=z<<4|12;y=((d[t+(D+13)|0]<<16|d[t+(D+12)|0]<<24|d[t+(D+14)|0]<<8|d[t+(D+15)|0])+3&-4)+y|0;z=z+1|0;if((z|0)<(A|0)){}else{break}}}c[b>>2]=y;c[r>>2]=oJ(g,1,A<<4|12,y+1|0,t,l)|0;t=c[h>>2]|0;if((t|0)==0){t=36}else{w=t;t=42;break a}}}while(0);if((t|0)==36){t=0;if(C>>>0>=y>>>0){t=37;break c}a[(c[r>>2]|0)+C|0]=a[v+B|0]|0;C=C+1|0;z=2}B=B+1|0;}while((B|0)<(x|0))}fd[c[m>>2]&511](e);B=c[e>>2]|0;if(B>>>0>=n>>>0){break b}}if((t|0)==7){c[e>>2]=B+1;break a}else if((t|0)==13){c[h>>2]=3;w=3;t=42;break a}else if((t|0)==15){c[h>>2]=3;w=3;u=0;t=42;break a}else if((t|0)==18){c[h>>2]=3;w=3;u=0;t=42;break a}else if((t|0)==21){c[h>>2]=3;w=3;v=0;t=42;break a}else if((t|0)==26){c[h>>2]=3;w=3;t=42;break a}else if((t|0)==37){c[h>>2]=3;w=3;t=42;break a}else if((t|0)==45){i=f;return}}else{u=0;v=0}}while(0);c[h>>2]=3;w=3;t=42}else{t=3}}while(0);if((t|0)==3){c[h>>2]=3;w=3;u=0;v=0;t=42}if((t|0)==42){c[e+12>>2]=w}if(u<<24>>24==0){i=f;return}lJ(g,v);i=f;return}function NT(a,b){a=a|0;b=b|0;var c=0;c=i;$W(b|0,a+132|0,32)|0;i=c;return 0}function OT(a,c){a=a|0;c=c|0;b[c>>1]=b[a+164>>1]|0;i=i;return 0}function PT(a){a=a|0;i=i;return 1}function QT(a,b){a=a|0;b=b|0;var c=0;c=i;$W(b|0,a+168|0,196)|0;i=c;return 0}function RT(a){a=a|0;i=i;return c[a+364>>2]|0}function ST(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;bL(d,c[(c[a+420>>2]|0)+(b<<2)>>2]|0,e)|0;i=f;return 0}function TT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;f=i;g=c[b+416>>2]|0;if((g|0)<=0){l=0;i=f;return l|0}h=c[b+420>>2]|0;j=a[d]|0;k=0;while(1){l=c[h+(k<<2)>>2]|0;if(j<<24>>24==(a[l]|0)){if((Qc(d|0,l|0)|0)==0){break}}k=k+1|0;if((k|0)>=(g|0)){g=0;e=7;break}}if((e|0)==7){i=f;return g|0}l=ec(c[(c[b+424>>2]|0)+(k<<2)>>2]|0)|0;i=f;return l|0}function UT(a,b){a=a|0;b=b|0;var c=0;c=i;a=uJ(282624,b)|0;i=c;return a|0}function VT(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;k=i;t=i;i=i+8|0;v=t;K=i;i=i+8|0;L=K;J=i;i=i+8|0;H=J;G=i;i=i+24|0;E=G;F=i;i=i+24|0;I=i;i=i+16|0;x=i;i=i+16|0;D=i;i=i+16|0;B=i;i=i+8|0;y=B;w=i;i=i+8|0;C=i;i=i+8|0;z=i;i=i+16|0;A=z;j=i;i=i+8|0;o=j;q=i;i=i+16|0;r=q;n=g+100|0;p=c[n>>2]|0;m=g+104|0;u=c[m>>2]|0;l=g+132|0;c[l>>2]=0;Y=PJ(u,0)|0;c[t>>2]=Y;a:do{if((Y|0)==0){Y=ZK(u,282416,L)|0;c[t>>2]=Y;if((Y|0)!=0){break}c[t>>2]=2;b:do{if((b[K>>1]|0)==23117){K=L+2|0;Y=PJ(u,e[K>>1]|0)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=ZK(u,282440,H)|0;c[t>>2]=Y;if((Y|0)!=0){break a}c[t>>2]=2;J=b[J>>1]|0;c:do{if(J<<16>>16==17744){Y=PJ(u,e[K>>1]|0)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=ZK(u,282464,E)|0;c[t>>2]=Y;if((Y|0)!=0){break a}do{if((c[G>>2]|0)==17744){if((b[E+4>>1]|0)!=332){break}if((b[E+8>>1]|0)!=224){break}if((b[E+10>>1]|0)!=267){break}c[g>>2]=0;G=E+6|0;d:do{if((b[G>>1]|0)!=0){J=E+12|0;E=F+8|0;H=0;while(1){Y=ZK(u,282520,F)|0;c[t>>2]=Y;if((Y|0)!=0){break a}H=H+1<<16>>16;if((c[J>>2]|0)==(c[E>>2]|0)){break}if((H&65535)>=(e[G>>1]|0)){break d}}F=F+16|0;Y=PJ(u,c[F>>2]|0)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=ZK(u,282552,I)|0;c[t>>2]=Y;if((Y|0)!=0){break a}G=c[F>>2]|0;H=I+12|0;N=I+14|0;if(((e[N>>1]|0)+(e[H>>1]|0)|0)<=0){u=0;v=g;break c}R=G+16|0;I=y+4|0;J=x+12|0;L=x+14|0;M=w+4|0;Q=D+12|0;K=D+14|0;O=C+4|0;P=A+4|0;T=0;S=0;e:while(1){Y=PJ(u,R+(T<<3)|0)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=ZK(u,282584,y)|0;c[t>>2]=Y;if((Y|0)!=0){break a}T=c[I>>2]|0;if((T|0)>=0){s=46;break}T=T&2147483647;c[I>>2]=T;T=(c[F>>2]|0)+T|0;Y=PJ(u,T)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=ZK(u,282552,x)|0;c[t>>2]=Y;if((Y|0)!=0){break a}if(((e[L>>1]|0)+(e[J>>1]|0)|0)>0){U=T+16|0;V=0;T=0;do{Y=PJ(u,U+(V<<3)|0)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=ZK(u,282584,w)|0;c[t>>2]=Y;if((Y|0)!=0){break a}V=c[M>>2]|0;if((V|0)>=0){s=54;break e}V=V&2147483647;c[M>>2]=V;V=(c[F>>2]|0)+V|0;Y=PJ(u,V)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=ZK(u,282552,D)|0;c[t>>2]=Y;if((Y|0)!=0){break a}if(((e[K>>1]|0)+(e[Q>>1]|0)|0)>0){W=V+16|0;X=0;V=0;do{Y=PJ(u,W+(X<<3)|0)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=ZK(u,282584,C)|0;c[t>>2]=Y;if((Y|0)!=0){break a}if((c[M>>2]|0)<0){s=62;break e}if((c[B>>2]|0)==8){Y=PJ(u,(c[O>>2]|0)+G|0)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=ZK(u,282600,A)|0;c[t>>2]=Y;if((Y|0)!=0){break a}X=c[g>>2]|0;if((X|0)==(h|0)){X=jJ(p,172,v)|0;c[l>>2]=X;Y=c[t>>2]|0;if((Y|0)!=0){break a}c[X>>2]=(c[z>>2]|0)+(c[F>>2]|0)-(c[E>>2]|0);c[(c[l>>2]|0)+164>>2]=c[P>>2];Y=_T(c[l>>2]|0,u)|0;c[t>>2]=Y;if((Y|0)!=0){s=79;break b}X=c[g>>2]|0}c[g>>2]=X+1}V=V+1<<16>>16;X=V&65535;}while((X|0)<((e[K>>1]|0)+(e[Q>>1]|0)|0))}T=T+1<<16>>16;V=T&65535;}while((V|0)<((e[L>>1]|0)+(e[J>>1]|0)|0))}S=S+1<<16>>16;T=S&65535;if((T|0)>=((e[N>>1]|0)+(e[H>>1]|0)|0)){u=0;v=g;break c}}if((s|0)==46){c[t>>2]=3;Y=3;break a}else if((s|0)==54){c[t>>2]=3;Y=3;break a}else if((s|0)==62){c[t>>2]=3;Y=3;break a}}}while(0);c[t>>2]=3;Y=3;break a}}while(0);c[t>>2]=3;Y=3;break a}else if(J<<16>>16==17742){w=H+2|0;Y=PJ(u,(e[w>>1]|0)+(e[K>>1]|0)|0)|0;c[t>>2]=Y;if((Y|0)!=0){break a}Y=MK(u,(e[H+4>>1]|0)-(e[w>>1]|0)|0)|0;c[t>>2]=Y;if((Y|0)!=0){break a}w=SK(u)|0;z=SK(u)|0;f:do{if(z<<16>>16==0){y=0;x=0}else{x=u+32|0;while(1){y=SK(u)|0;if(z<<16>>16==-32760){break}c[x>>2]=(c[x>>2]|0)+(((y&65535)*12|0)+4);z=SK(u)|0;if(z<<16>>16==0){y=0;x=0;break f}}Y=IK(u)|0;x=Y+4+(c[x>>2]|0)-(c[u+36>>2]|0)|0}}while(0);PK(u);if(y<<16>>16==0|(x|0)==0){c[t>>2]=3;Y=3;break a}y=y&65535;if((y*118|0)>>>0>(c[u+4>>2]|0)>>>0){c[t>>2]=3;Y=3;break a}c[g>>2]=y;if((y|0)<=(h|0)){c[t>>2]=6;Y=6;break a}if((h|0)<0){break b}c[l>>2]=jJ(p,172,v)|0;Y=c[t>>2]|0;if((Y|0)!=0){break a}Y=PJ(u,x+(h*12|0)|0)|0;c[t>>2]=Y;if((Y|0)!=0){s=79;break b}Y=MK(u,12)|0;c[t>>2]=Y;if((Y|0)!=0){s=79;break b}v=w&65535;Y=((SK(u)|0)&65535)<>2]>>2]=Y;v=((SK(u)|0)&65535)<>2]|0)+164>>2]=v;v=u+32|0;c[v>>2]=(c[v>>2]|0)+8;PK(u);u=_T(c[l>>2]|0,u)|0;c[t>>2]=u;v=g}else{u=2;v=g}}while(0);v=c[v>>2]|0;if((v|0)==0){c[t>>2]=3;Y=3;break a}if((v|0)>(h|0)){if((u|0)==0){break}else{s=79;break}}else{c[t>>2]=6;Y=6;break a}}else{s=79}}while(0);do{if((s|0)==79){u=c[n>>2]|0;w=c[l>>2]|0;if((w|0)==0){break}v=w+160|0;if((c[v>>2]|0)!=0){NK(c[m>>2]|0,v)}Y=w+168|0;lJ(u,c[Y>>2]|0);c[Y>>2]=0;lJ(u,w);c[l>>2]=0}}while(0);Y=c[t>>2]|0}}while(0);c[j>>2]=Y;t=(h|0)<0;if((Y|0)==0&t){Y=0;i=k;return Y|0}do{if((Y|0)==2){u=jJ(p,172,o)|0;c[l>>2]=u;v=c[j>>2]|0;if((v|0)!=0){Y=v;i=k;return Y|0}c[g>>2]=1;c[u>>2]=0;c[u+164>>2]=c[f+4>>2];Y=_T(u,f)|0;c[j>>2]=Y;if((Y|0)!=0){break}if((h|0)>0){c[j>>2]=6;Y=6;break}if(t){g=0}else{s=91;break}i=k;return g|0}else if((Y|0)==0){s=91}}while(0);do{if((s|0)==91){s=c[l>>2]|0;c[g+4>>2]=h;h=g+8|0;c[h>>2]=18;f=s+100|0;c[h>>2]=(b[f>>1]|0)==(b[s+102>>1]|0)?22:18;if((a[s+86|0]|0)!=0){Y=g+12|0;c[Y>>2]=c[Y>>2]|1}if((e[s+90>>1]|0)>799){Y=g+12|0;c[Y>>2]=c[Y>>2]|2}h=oJ(p,16,0,1,0,o)|0;c[g+32>>2]=h;Y=c[j>>2]|0;if((Y|0)!=0){break}c[g+28>>2]=1;b[h+2>>1]=b[f>>1]|0;x=s+96|0;b[h>>1]=(b[s+84>>1]|0)+(b[x>>1]|0)<<16>>16;u=e[s+74>>1]<<6;t=h+4|0;c[t>>2]=u;f=b[s+78>>1]|0;v=b[s+76>>1]|0;w=v<<16>>16!=0?v&65535:72;v=h+12|0;Y=(_I(u,w,72)|0)+32&-64;c[v>>2]=Y;u=e[x>>1]<<6;if((Y|0)>(u|0)){c[v>>2]=u;Y=_I(u,72,w)|0;c[t>>2]=Y;t=Y}else{t=c[t>>2]|0}c[h+8>>2]=(_I(t,f<<16>>16!=0?f&65535:72,72)|0)+32&-64;h=r+4|0;Y=h;c[Y>>2]=0;c[Y+4>>2]=0;c[q>>2]=g;if((a[s+92|0]|0)==77){c[h>>2]=1634889070;b[r+8>>1]=1}Y=eK(282224,0,r,0)|0;c[j>>2]=Y;if((Y|0)!=0){break}if((c[g+36>>2]|0)!=0){c[g+92>>2]=c[c[g+40>>2]>>2]}c[g+16>>2]=(d[s+105|0]|0)+2-(d[s+104|0]|0);q=s+116|0;r=c[q>>2]|0;h=c[s+8>>2]|0;if(r>>>0>=h>>>0){c[j>>2]=3;Y=3;break}h=h-r|0;f=jJ(p,h+1|0,o)|0;r=s+168|0;c[r>>2]=f;Y=c[j>>2]|0;if((Y|0)!=0){break}$W(f|0,(c[s+160>>2]|0)+(c[q>>2]|0)|0,h|0)|0;a[(c[r>>2]|0)+h|0]=0;Y=c[r>>2]|0;o=oJ(p,1,h,(ZW(Y|0)|0)+1|0,Y,o)|0;c[r>>2]=o;Y=c[j>>2]|0;if((Y|0)!=0){break}c[g+20>>2]=o;j=g+24|0;c[j>>2]=282184;Y=c[g+12>>2]|0;g=(Y&1|0)!=0;if((Y&2|0)==0){if(!g){Y=0;i=k;return Y|0}c[j>>2]=282216;Y=0;i=k;return Y|0}if(g){c[j>>2]=282192;Y=0;i=k;return Y|0}else{c[j>>2]=282208;Y=0;i=k;return Y|0}}}while(0);if((g|0)==0){i=k;return Y|0}n=c[n>>2]|0;o=c[m>>2]|0;p=c[l>>2]|0;if((p|0)!=0){m=p+160|0;if((c[m>>2]|0)!=0){NK(o,m)}Y=p+168|0;lJ(n,c[Y>>2]|0);c[Y>>2]=0;lJ(n,p);c[l>>2]=0}Y=g+32|0;lJ(n,c[Y>>2]|0);c[Y>>2]=0;c[g+28>>2]=0;Y=c[j>>2]|0;i=k;return Y|0}function WT(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;if((a|0)==0){i=b;return}d=c[a+100>>2]|0;g=c[a+104>>2]|0;f=a+132|0;e=c[f>>2]|0;if((e|0)!=0){h=e+160|0;if((c[h>>2]|0)!=0){NK(g,h)}h=e+168|0;lJ(d,c[h>>2]|0);c[h>>2]=0;lJ(d,e);c[f>>2]=0}h=a+32|0;lJ(d,c[h>>2]|0);c[h>>2]=0;c[a+28>>2]=0;i=b;return}function XT(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=i;k=i;i=i+8|0;n=k;l=c[g>>2]|0;c[k>>2]=0;if((l|0)==0){c[k>>2]=6;t=6;i=j;return t|0}g=c[l+132>>2]|0;do{if((g|0)!=0){if((c[l+16>>2]|0)>>>0<=h>>>0){break}if((h|0)==0){h=d[g+106|0]|0}else{h=h+ -1|0}o=(b[g+4>>1]|0)==768;m=g+160|0;p=c[m>>2]|0;r=(da(o?6:4,h)|0)+(o?148:118)|0;l=(d[p+(r|1)|0]<<8&65535|d[p+r|0])<<16>>16;h=f+80|0;c[h>>2]=l;q=p+(r+2)|0;if(o){o=d[p+(r+4)|0]<<16|d[p+(r+5)|0]<<24|d[p+(r+3)|0]<<8|d[q]}else{o=(d[p+(r+3)|0]<<8&65535|d[q])&65535}r=g+8|0;if(o>>>0>=(c[r>>2]|0)>>>0){c[k>>2]=3;t=3;i=j;return t|0}p=c[m>>2]|0;s=c[(c[f+4>>2]|0)+100>>2]|0;q=l+7>>3;l=f+84|0;c[l>>2]=q;t=e[g+96>>1]|0;m=f+76|0;c[m>>2]=t;a[f+94|0]=1;u=(da(q,t)|0)+o|0;if(u>>>0>=(c[r>>2]|0)>>>0){c[k>>2]=3;u=3;i=j;return u|0}n=oJ(s,t,0,q,0,n)|0;c[f+88>>2]=n;r=c[k>>2]|0;if((r|0)!=0){u=r;i=j;return u|0}a:do{if((q|0)>0){p=p+o|0;while(1){u=c[m>>2]|0;o=p+u|0;if((u|0)>0){r=p;p=n;while(1){a[p]=a[r]|0;r=r+1|0;if(r>>>0>>0){p=p+(c[l>>2]|0)|0}else{p=r;break}}}q=q+ -1|0;if((q|0)<=0){break a}n=n+1|0}}}while(0);c[(c[f+156>>2]|0)+4>>2]=1;c[f+100>>2]=0;s=e[g+80>>1]|0;c[f+104>>2]=s;c[f+72>>2]=1651078259;r=c[h>>2]<<6;t=f+24|0;c[t>>2]=r;u=c[m>>2]<<6;c[f+28>>2]=u;c[f+40>>2]=r;c[f+32>>2]=0;c[f+36>>2]=s<<6;XJ(t,u);u=c[k>>2]|0;i=j;return u|0}}while(0);c[k>>2]=6;u=6;i=j;return u|0}function YT(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0;g=i;d=c[a>>2]|0;f=c[d+132>>2]|0;h=c[b+16>>2]|0;j=c[b+8>>2]|0;if((h|0)!=0){j=((da(j,h)|0)+36|0)/72|0}h=j+32>>6;b=c[b>>2]|0;if((b|0)==0){b=(c[(c[d+32>>2]|0)+12>>2]|0)+32>>6}else if((b|0)==1){b=e[f+96>>1]|0}else{j=7;i=g;return j|0}b=(h|0)==(b|0);if(!b){j=b?0:23;i=g;return j|0}YJ(d,0);j=f+80|0;c[a+24>>2]=(e[j>>1]|0)<<6;c[a+28>>2]=(e[j>>1]|0)-(e[f+96>>1]|0)<<6;c[a+36>>2]=(e[f+102>>1]|0)<<6;j=0;i=g;return j|0}function ZT(a,b){a=a|0;b=b|0;var d=0,f=0;b=i;f=c[a>>2]|0;d=c[f+132>>2]|0;YJ(f,0);f=d+80|0;c[a+24>>2]=(e[f>>1]|0)<<6;c[a+28>>2]=(e[f>>1]|0)-(e[d+96>>1]|0)<<6;c[a+36>>2]=(e[d+102>>1]|0)<<6;i=b;return 0}function _T(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=i;f=a+4|0;g=PJ(d,c[a>>2]|0)|0;do{if((g|0)==0){g=ZK(d,282264,f)|0;if((g|0)!=0){break}g=b[f>>1]|0;if(!(g<<16>>16==768|g<<16>>16==512)){g=2;break}f=a+8|0;if((c[f>>2]|0)>>>0<(g<<16>>16==768?148:118)>>>0){g=2;break}if(g<<16>>16==512){bX(a+132|0,0,12)|0}if((b[a+72>>1]&1)!=0){g=2;break}g=PJ(d,c[a>>2]|0)|0;if((g|0)!=0){break}g=LK(d,c[f>>2]|0,a+160|0)|0}}while(0);i=e;return g|0}function $T(a,b){a=a|0;b=b|0;var e=0;b=c[(c[a>>2]|0)+132>>2]|0;e=d[b+104|0]|0;c[a+16>>2]=e;c[a+20>>2]=1-e+(d[b+105|0]|0);i=i;return 0}function aU(a,b){a=a|0;b=b|0;b=b-(c[a+16>>2]|0)|0;i=i;return(b>>>0<(c[a+20>>2]|0)>>>0?b+1|0:0)|0}function bU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b>>2]|0)+1|0;e=c[a+16>>2]|0;if(d>>>0>e>>>0){f=d-e|0;e=f>>>0<(c[a+20>>2]|0)>>>0;a=e?f+1|0:0;e=e?d:0}else{a=1}c[b>>2]=e;i=i;return a|0}function cU(a,b){a=a|0;b=b|0;var d=0;d=i;$W(b|0,(c[a+132>>2]|0)+4|0,156)|0;i=d;return 0}function dU(a,b){a=a|0;b=b|0;c[a+112>>2]=b;c[a+104>>2]=c[b+28>>2];i=i;return 0}function eU(a,b,c){a=a|0;b=b|0;c=c|0;i=i;return 0}function fU(d,f){d=d|0;f=f|0;var 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,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;h=i;j=i;i=i+8|0;k=j;l=i;i=i+48|0;m=i;i=i+48|0;g=c[f+92>>2]|0;c[d+36>>2]=e[f+68>>1]|0;p=0;while(1){n=p+1|0;if((cK(f,c[283320+(p<<2)>>2]|0)|0)==0){break}if((n|0)==4){o=56;break}else{p=n}}if((o|0)==56){dK(f,g)|0;i=h;return 0}GU(d,f,111);r=c[f+84>>2]|0;p=d+652|0;u=r+110|0;s=r+112|0;t=r+108|0;q=r+116|0;r=r+120|0;o=0;a:while(1){y=283356+(o*13|0)|0;w=(o&-3|0)==0;n=(o|0)==3;v=w|n;z=0;x=0;A=283344+(o*13|0)|0;do{B=a[A]|0;if(B<<24>>24==0){break}B=KJ(f,B<<24>>24)|0;b:do{if((B|0)!=0){if((YI(f,B,1)|0)!=0){break}if((b[u>>1]|0)<1){break}B=c[s>>2]|0;D=b[t>>1]|0;do{if(D<<16>>16>0){C=c[r>>2]|0;D=D<<16>>16;F=0;G=0;I=-1;K=0;J=0;H=0;while(1){E=b[C+(H<<1)>>1]|0;if((E|0)>(J|0)){L=(J|0)>(E|0);do{if(v){if(L){L=I;break}else{L=I;M=J}while(1){O=c[B+(M<<3)+4>>2]|0;N=(L|0)<0|(O|0)>(K|0);L=N?M:L;K=N?O:K;if((M|0)<(E|0)){M=M+1|0}else{break}}}else{if(L){L=I;break}else{L=I;M=J}while(1){N=c[B+(M<<3)+4>>2]|0;O=(L|0)<0|(N|0)<(K|0);L=O?M:L;K=O?N:K;if((M|0)<(E|0)){M=M+1|0}else{break}}}}while(0);I=(L|0)==(I|0);F=I?F:J;G=I?G:E;I=L}H=H+1|0;if((H|0)<(D|0)){J=E+1|0}else{break}}C=5-K|0;if((I|0)>-1){D=I}else{break}while(1){D=(D|0)>(F|0)?D+ -1|0:G;if(((c[B+(D<<3)+4>>2]|0)+C|0)>>>0>10|(D|0)==(I|0)){E=I;break}else{}}do{E=(E|0)<(G|0)?E+1|0:F;}while(!(((c[B+(E<<3)+4>>2]|0)+C|0)>>>0>10|(E|0)==(I|0)));B=c[q>>2]|0;if((a[B+D|0]&3)==1){if((a[B+E|0]&3)==1){break}}c[m+(x<<2)>>2]=K;x=x+1|0;break b}else{K=0}}while(0);c[l+(z<<2)>>2]=K;z=z+1|0}}while(0);A=A+1|0;}while(A>>>0>>0);A=(z|0)==0;y=(x|0)==0;do{if((x|z|0)!=0){if(x>>>0>1){F=1;do{D=c[m+(F<<2)>>2]|0;B=F;while(1){C=B+ -1|0;G=m+(C<<2)|0;E=c[G>>2]|0;if((D|0)>(E|0)){break}c[m+(B<<2)>>2]=E;c[G>>2]=D;if((C|0)==0){break}else{B=C}}F=F+1|0;}while(F>>>0>>0)}if(z>>>0>1){G=1;do{D=c[l+(G<<2)>>2]|0;E=G;while(1){F=E+ -1|0;C=l+(F<<2)|0;B=c[C>>2]|0;if((D|0)>(B|0)){break}c[l+(E<<2)>>2]=B;c[C>>2]=D;if((F|0)==0){break}else{E=F}}G=G+1|0;}while(G>>>0>>0)}C=c[p>>2]|0;B=d+656+(C*28|0)|0;D=d+656+(C*28|0)+12|0;c[p>>2]=C+1;do{if(A){O=c[m+(((x|0)/2|0)<<2)>>2]|0;c[D>>2]=O;c[B>>2]=O}else{z=c[l+(((z|0)/2|0)<<2)>>2]|0;if(y){c[D>>2]=z;c[B>>2]=z;break}c[B>>2]=z;x=c[m+(((x|0)/2|0)<<2)>>2]|0;c[D>>2]=x;if((x|0)==(z|0)){break}if(((w?1:n&1)|0)==((x|0)>(z|0)|0)){break}O=(x+z|0)/2|0;c[B>>2]=O;c[D>>2]=O}}while(0);w=d+656+(C*28|0)+24|0;v=v?2:0;c[w>>2]=v;if(!n){break}c[w>>2]=v|4;o=4;continue a}}while(0);o=o+1|0;if((o|0)>=6){break}}l=48;n=0;m=0;c:while(1){o=KJ(f,l)|0;do{if((o|0)!=0){if((WI(f,o,2051,k)|0)!=0){break}o=c[j>>2]|0;if(m<<24>>24==0){n=o;m=1;break}if((o|0)!=(n|0)){j=0;break c}}}while(0);l=l+1|0;if(l>>>0>=58){j=1;break}}a[d+32|0]=j;dK(f,g)|0;i=h;return 0}function gU(a,b){a=a|0;b=b|0;var d=0;d=i;c[a+24>>2]=c[b+20>>2];c[a+4>>2]=c[b>>2];KU(a,b,0);KU(a,b,1);i=d;return}function hU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;e=i;f=c[b+4>>2]|0;c[a+112>>2]=b;g=c[b+28>>2]|0;d=a+104|0;c[d>>2]=g;c[a+4>>2]=c[b+40>>2];c[a+8>>2]=c[b+44>>2];c[a+12>>2]=c[b+436>>2];c[a+16>>2]=c[b+440>>2];h=c[b+24>>2]|0;b=(h|0)==2;j=(h&-2|0)==2|0;j=b|(h|0)==4?j|2:j;h=(h|0)==1;j=h?j:j|4;b=b?j|8:j;do{if(!h){if((c[f+12>>2]&1|0)!=0){break}j=d;c[j>>2]=g;j=a+108|0;c[j>>2]=b;i=e;return 0}}while(0);h=g|1;j=d;c[j>>2]=h;j=a+108|0;c[j>>2]=b;i=e;return 0}function iU(f,g,h){f=f|0;g=g|0;h=h|0;var 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;j=i;k=xU(f,g)|0;if((k|0)!=0){D=k;i=j;return D|0}k=f+104|0;m=c[k>>2]|0;do{if((m&1|0)==0){m=IU(f,0)|0;if((m|0)==0){m=c[k>>2]|0;break}else{D=m;i=j;return D|0}}}while(0);do{if((m&2|0)==0){m=IU(f,1)|0;if((m|0)!=0){D=m;i=j;return D|0}q=c[f+96>>2]|0;D=c[f+88>>2]|0;p=q+(D*48|0)|0;m=c[h+436>>2]|0;if((D|0)<=0){break}o=h+36|0;n=f+100|0;do{u=aJ(((c[o>>2]|0)>>>0)/40|0,m)|0;s=q+13|0;r=q+12|0;t=0;w=0;u=(u|0)>32?32:u;do{v=h+656+(t*28|0)|0;x=c[h+656+(t*28|0)+24>>2]|0;do{if((x&1|0)!=0){x=(x&2|0)!=0;if(!((a[s]|0)==(c[n>>2]|0)^x)){break}y=(b[q>>1]|0)-(c[v>>2]|0)|0;y=aJ((y|0)<0?0-y|0:y,m)|0;z=(y|0)<(u|0);u=z?y:u;w=z?v:w;if((a[r]&1)==0|(y|0)==0){break}y=b[q>>1]|0;if(!((y|0)<(c[v>>2]|0)^x)){break}v=h+656+(t*28|0)+12|0;x=y-(c[v>>2]|0)|0;y=aJ((x|0)<0?0-x|0:x,m)|0;x=(y|0)<(u|0);w=x?v:w;u=x?y:u}}while(0);t=t+1|0;}while((t|0)<6);if((w|0)!=0){c[q+20>>2]=w}q=q+48|0;}while(q>>>0

>>0)}}while(0);n=f+108|0;m=f+112|0;h=0;a:while(1){do{if((h|0)==1){if((c[k>>2]&2|0)!=0){break a}p=c[f+96>>2]|0;q=c[f+88>>2]|0;o=p+(q*48|0)|0;if((q|0)>0){v=0;l=p}else{l=93;break}while(1){do{if((a[l+12|0]&4)==0){s=c[l+20>>2]|0;t=c[l+24>>2]|0;if((s|0)==0){if((t|0)==0){break}s=c[t+20>>2]|0;u=(s|0)==0;r=u?0:t;t=u?t:l}else{r=l}if((r|0)==0){break}s=c[s+8>>2]|0;c[r+8>>2]=s;D=r+12|0;u=a[D]|4;a[D]=u;do{if((t|0)!=0){if((c[t+20>>2]|0)!=0){break}D=t+12|0;C=a[D]|0;c[t+8>>2]=(JU(c[n>>2]|0,c[m>>2]|0,1,(c[t+4>>2]|0)-(c[r+4>>2]|0)|0,u&255,C&255)|0)+s;a[D]=C|4}}while(0);v=(v|0)==0?l:v}}while(0);l=l+48|0;if(l>>>0>=o>>>0){l=26;break}}}else if((h|0)==0){if((c[k>>2]&1|0)==0){p=c[f+68>>2]|0;q=c[f+60>>2]|0;o=p+(q*48|0)|0;v=0;l=26;break}else{h=h+1|0;continue a}}}while(0);do{if((l|0)==26){l=0;if((q|0)>0){r=p;s=0;while(1){t=r+12|0;B=a[t]|0;z=B&255;do{if((z&4|0)==0){u=c[r+24>>2]|0;if((u|0)==0){s=s+1|0;break}if((c[u+20>>2]|0)!=0){D=c[u+8>>2]|0;c[r+8>>2]=(JU(c[n>>2]|0,c[m>>2]|0,h,(c[r+4>>2]|0)-(c[u+4>>2]|0)|0,d[u+12|0]|0,z)|0)+D;a[t]=B|4;break}if((v|0)==0){v=u+4|0;x=r+4|0;A=c[x>>2]|0;C=(c[v>>2]|0)-A|0;w=u+12|0;y=JU(c[n>>2]|0,c[m>>2]|0,h,C,z,d[w]|0)|0;z=(y|0)<65;if((y|0)<96){C=(C>>1)+A|0;D=C+32&-64;B=D-(z?32:38)|0;A=C-B|0;z=(z?32:26)|D;C=C-z|0;B=((((A|0)<0?0-A|0:A)|0)<(((C|0)<0?0-C|0:C)|0)?B:z)-((y|0)/2|0)|0;A=r+8|0;c[A>>2]=B;u=u+8|0;c[u>>2]=B+y;B=a[t]|0;y=c[A>>2]|0;A=c[x>>2]|0}else{y=A+32&-64;c[r+8>>2]=y;u=u+8|0}D=B|4;a[t]=D;c[u>>2]=(JU(c[n>>2]|0,c[m>>2]|0,h,(c[v>>2]|0)-A|0,D&255,d[w]|0)|0)+y;v=r;break}C=c[r+4>>2]|0;B=C-(c[v+4>>2]|0)+(c[v+8>>2]|0)|0;C=(c[u+4>>2]|0)-C|0;y=(C>>1)+B|0;w=u+12|0;D=d[w]|0;x=JU(c[n>>2]|0,c[m>>2]|0,h,C,z,D)|0;do{if((D&4|0)==0){if((x|0)<96){C=y+32&-64;B=(x|0)<65;z=C-(B?32:38)|0;A=y-z|0;B=(B?32:26)|C;y=y-B|0;D=(((A|0)<0?0-A|0:A)|0)<(((y|0)<0?0-y|0:y)|0)?z:B;C=(x|0)/2|0;c[r+8>>2]=D-C;c[u+8>>2]=C+D;break}else{z=B+32&-64;D=x>>1;A=D+(z-y)|0;B=(C+32+B&-64)-x|0;y=D-y+B|0;D=(((A|0)<0?0-A|0:A)|0)<(((y|0)<0?0-y|0:y)|0)?z:B;c[r+8>>2]=D;c[u+8>>2]=D+x;break}}else{c[r+8>>2]=(c[u+8>>2]|0)-x}}while(0);a[t]=a[t]|4;a[w]=a[w]|4;if(r>>>0<=p>>>0){break}t=r+8|0;u=c[r+ -40>>2]|0;if((c[t>>2]|0)>=(u|0)){break}c[t>>2]=u}}while(0);r=r+48|0;if(r>>>0>=o>>>0){r=0;break}}}else{r=1;s=0}t=q*48|0;do{if((h|0)==0){q=(t|0)==576;if((t|0)==288){w=p;u=p+96|0;t=p+192|0}else if((t|0)==576){w=p+48|0;u=p+240|0;t=p+432|0}else{break}x=c[u+4>>2]|0;x=x-(c[t+4>>2]|0)+(x-(c[w+4>>2]|0))|0;if((((x|0)<0?0-x|0:x)|0)>=8){break}x=t+8|0;u=(c[u+8>>2]<<1)-(c[w+8>>2]|0)|0;w=(c[x>>2]|0)-u|0;c[x>>2]=u;u=t+24|0;x=c[u>>2]|0;if((x|0)!=0){D=x+8|0;c[D>>2]=(c[D>>2]|0)-w}if(q){D=p+392|0;c[D>>2]=(c[D>>2]|0)-w;D=p+536|0;c[D>>2]=(c[D>>2]|0)-w}q=t+12|0;a[q]=a[q]|4;q=c[u>>2]|0;if((q|0)==0){break}D=q+12|0;a[D]=a[D]|4}}while(0);if((v|0)!=0&(s|0)==0|r){l=93;break}else{q=p}while(1){r=q+12|0;s=a[r]|0;do{if((s&4)==0){x=c[q+28>>2]|0;do{if((x|0)==0){l=73}else{u=c[x+4>>2]|0;t=c[q+4>>2]|0;w=u-t|0;if((((w|0)<0?0-w|0:w)|0)>=80){l=73;break}t=(c[x+8>>2]|0)-u+t|0;c[q+8>>2]=t}}while(0);b:do{if((l|0)==73){l=0;if((v|0)==0){t=(c[q+4>>2]|0)+32&-64;c[q+8>>2]=t;v=q;break}else{u=q}while(1){y=u+ -48|0;if(y>>>0

>>0){w=0;break}if((a[u+ -36|0]&4)==0){u=y}else{w=1;break}}t=q;while(1){x=t+48|0;if(x>>>0>=o>>>0){break}if((a[t+60|0]&4)==0){t=x}else{l=80;break}}do{if((l|0)==80){l=0;if(!(w&y>>>0>>0&x>>>0>q>>>0)){break}x=c[t+52>>2]|0;w=c[u+ -44>>2]|0;u=c[u+ -40>>2]|0;if((x|0)==(w|0)){c[q+8>>2]=u;t=u;break b}else{t=(_I((c[q+4>>2]|0)-w|0,(c[t+56>>2]|0)-u|0,x-w|0)|0)+u|0;c[q+8>>2]=t;s=a[r]|0;break b}}}while(0);t=((c[q+4>>2]|0)+16-(c[v+4>>2]|0)&-32)+(c[v+8>>2]|0)|0;c[q+8>>2]=t}}while(0);a[r]=s|4;do{if(q>>>0>p>>>0){r=c[q+ -40>>2]|0;if((t|0)>=(r|0)){break}c[q+8>>2]=r;t=r}}while(0);s=q+48|0;if(s>>>0>=o>>>0){q=s;break}if((a[q+60|0]&4)==0){q=s;break}r=c[q+56>>2]|0;if((t|0)<=(r|0)){q=s;break}c[q+8>>2]=r;q=s}else{q=q+48|0}}while(0);if(q>>>0>=o>>>0){l=93;break}}}}while(0);if((l|0)==93){l=0;p=c[f+48+(h*28|0)+8>>2]|0;q=c[f+48+(h*28|0)>>2]|0;o=p+(q*52|0)|0;q=(q|0)>0;do{if((h|0)==0){if(!q){break}do{r=c[p+12>>2]|0;if((r|0)!=0){q=c[p+44>>2]|0;r=r+8|0;s=p+40|0;while(1){s=c[s>>2]|0;c[s+16>>2]=c[r>>2];b[s>>1]=b[s>>1]|64;if((s|0)==(q|0)){break}else{s=s+32|0}}}p=p+52|0;}while(p>>>0>>0)}else{if(!q){break}do{r=c[p+12>>2]|0;if((r|0)!=0){q=c[p+44>>2]|0;r=r+8|0;s=p+40|0;while(1){s=c[s>>2]|0;c[s+20>>2]=c[r>>2];b[s>>1]=b[s>>1]|128;if((s|0)==(q|0)){break}else{s=s+32|0}}}p=p+52|0;}while(p>>>0>>0)}}while(0);zU(f,h);AU(f,h)}h=h+1|0;if((h|0)>=2){break}}D=c[f+28>>2]|0;l=c[f+32>>2]|0;f=l+(D*40|0)|0;if((D|0)<=0){D=0;i=j;return D|0}k=c[g+8>>2]|0;g=c[g+4>>2]|0;while(1){c[g>>2]=c[l+16>>2];c[g+4>>2]=c[l+20>>2];h=e[l>>1]|0;do{if((h&1|0)==0){if((h&2|0)==0){a[k]=1;break}else{a[k]=2;break}}else{a[k]=0}}while(0);l=l+40|0;if(l>>>0>>0){k=k+1|0;g=g+8|0}else{g=0;break}}i=j;return g|0}function jU(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;h=i;i=i+8|0;j=h;k=d+92|0;f=c[k>>2]|0;c[b+36>>2]=e[d+68>>1]|0;if((cK(d,1970170211)|0)!=0){c[k>>2]=0;dK(d,f)|0;i=g;return 0}GU(b,d,3e4);k=48;m=0;l=0;a:while(1){n=KJ(d,k)|0;do{if((n|0)!=0){if((WI(d,n,2051,j)|0)!=0){break}n=c[h>>2]|0;if(l<<24>>24==0){m=n;l=1;break}if((n|0)!=(m|0)){h=0;break a}}}while(0);k=k+1|0;if(k>>>0>=58){h=1;break}}a[b+32|0]=h;dK(d,f)|0;i=g;return 0}function kU(a,b){a=a|0;b=b|0;var d=0;d=i;$W(a+4|0,b|0,28)|0;c[a+40>>2]=c[b+4>>2];c[a+44>>2]=c[b+12>>2];c[a+436>>2]=c[b+8>>2];c[a+440>>2]=c[b+16>>2];i=d;return}function lU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;c[a+112>>2]=b;d=c[b+28>>2]|0;e=a+104|0;c[e>>2]=d;c[a+4>>2]=c[b+40>>2];c[a+8>>2]=c[b+44>>2];c[a+12>>2]=c[b+436>>2];c[a+16>>2]=c[b+440>>2];f=c[b+24>>2]|0;b=(f|0)==2;g=(f&-2|0)==2|0;g=b|(f|0)==4?g|2:g;f=(f|0)==1?g:g|4;c[e>>2]=d|4;c[a+108>>2]=b?f|8:f;i=i;return 0}function mU(d,f,g){d=d|0;f=f|0;g=g|0;var 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,A=0,B=0;g=i;j=xU(d,f)|0;if((j|0)!=0){A=j;i=g;return A|0}j=d+104|0;k=c[j>>2]|0;do{if((k&1|0)==0){k=yU(d,0)|0;if((k|0)==0){k=c[j>>2]|0;break}else{A=k;i=g;return A|0}}}while(0);do{if((k&2|0)==0){k=yU(d,1)|0;if((k|0)==0){break}i=g;return k|0}}while(0);k=d+108|0;l=d+112|0;m=0;a:while(1){do{if((m|0)==0){if((c[j>>2]&1|0)==0){h=12;break}m=m+1|0;continue a}else if((m|0)==1){if((c[j>>2]&2|0)==0){h=12}else{break a}}}while(0);if((h|0)==12){h=0;p=d+48+(m*28|0)+20|0;q=c[p>>2]|0;o=d+48+(m*28|0)+12|0;n=c[o>>2]|0;r=q+(n*48|0)|0;s=(n|0)>0;if(s){u=(m|0)!=1;w=0;x=0;v=q;t=0;do{z=v+12|0;A=a[z]|0;do{if((A&4)==0){y=c[v+24>>2]|0;if((y|0)==0){t=t+1|0;break}if(y>>>0>>0){B=c[y+8>>2]|0;c[v+8>>2]=(DU(c[k>>2]|0,c[l>>2]|0,m,(c[v+4>>2]|0)-(c[y+4>>2]|0)|0)|0)+B;a[z]=A|4;break}if(u&(w|0)==0){x=CU(d,v,y,0,0)|0}else{CU(d,v,y,x,m)|0}a[z]=a[z]|4;w=y+12|0;a[w]=a[w]|4;w=v}}while(0);v=v+48|0;}while(v>>>0>>0)}else{t=0}v=n*48|0;n=(m|0)==0;do{if(n){u=(v|0)==576;if((v|0)==288){A=q;z=q+96|0;w=q+192|0}else if((v|0)==576){A=q+48|0;z=q+240|0;w=q+432|0}else{break}y=c[z+4>>2]|0;y=y-(c[w+4>>2]|0)+(y-(c[A+4>>2]|0))|0;if((c[A+24>>2]|0)!=(A+48|0)){break}if((c[z+24>>2]|0)!=(z+48|0)){break}v=w+24|0;x=c[v>>2]|0;if(!((x|0)==(w+48|0)&(((y|0)<0?0-y|0:y)|0)<8)){break}B=w+8|0;A=(c[z+8>>2]<<1)-(c[A+8>>2]|0)|0;y=(c[B>>2]|0)-A|0;c[B>>2]=A;if((x|0)!=0){B=x+8|0;c[B>>2]=(c[B>>2]|0)-y}if(u){B=q+392|0;c[B>>2]=(c[B>>2]|0)-y;B=q+536|0;c[B>>2]=(c[B>>2]|0)-y}u=w+12|0;a[u]=a[u]|4;u=c[v>>2]|0;if((u|0)==0){break}B=u+12|0;a[B]=a[B]|4}}while(0);do{if(!((t|0)==0|s^1)){s=q;do{w=s+12|0;v=a[w]|0;do{if((v&4)==0){u=c[s+28>>2]|0;if((u|0)==0){break}c[s+8>>2]=(c[u+8>>2]|0)-(c[u+4>>2]|0)+(c[s+4>>2]|0);a[w]=v|4;t=t+ -1|0}}while(0);s=s+48|0;}while(s>>>0>>0);if((t|0)==0){break}else{t=q}do{do{if((a[t+12|0]&4)==0){u=t;while(1){v=u+ -48|0;if(v>>>0>>0){w=1;y=0;break}if((a[u+ -36|0]&4)==0){u=v}else{w=0;y=1;break}}s=t;while(1){x=s+48|0;if(x>>>0>=r>>>0){h=49;break}if((a[s+60|0]&4)==0){s=x}else{y=1;break}}if((h|0)==49){h=0;if(y){y=0}else{break}}if(w){c[t+8>>2]=(c[s+56>>2]|0)-(c[s+52>>2]|0)+(c[t+4>>2]|0);break}if(!y){c[t+8>>2]=(c[u+ -40>>2]|0)-(c[u+ -44>>2]|0)+(c[t+4>>2]|0);break}w=b[x>>1]|0;B=b[v>>1]|0;v=B<<16>>16;u=c[u+ -40>>2]|0;if(w<<16>>16==B<<16>>16){c[t+8>>2]=u;break}else{c[t+8>>2]=(_I((b[t>>1]|0)-v|0,(c[s+56>>2]|0)-u|0,(w<<16>>16)-v|0)|0)+u;break}}}while(0);t=t+48|0;}while(t>>>0>>0)}}while(0);r=c[p>>2]|0;q=c[o>>2]|0;o=r+(q*48|0)|0;do{if(n){p=c[k>>2]&1}else{if((m|0)!=1){p=0;break}p=(c[k>>2]|0)>>>1&1}}while(0);if((q|0)>0){p=p<<24>>24==0;do{q=r+40|0;t=c[q>>2]|0;s=r+8|0;if(p){s=(c[s>>2]|0)-(c[r+4>>2]|0)|0;do{v=t+40|0;u=t+44|0;if(n){while(1){v=c[v>>2]|0;B=v+16|0;c[B>>2]=(c[B>>2]|0)+s;b[v>>1]=b[v>>1]|64;if((v|0)==(c[u>>2]|0)){break}else{v=v+32|0}}}else{while(1){v=c[v>>2]|0;B=v+20|0;c[B>>2]=(c[B>>2]|0)+s;b[v>>1]=b[v>>1]|128;if((v|0)==(c[u>>2]|0)){break}else{v=v+32|0}}}t=c[t+16>>2]|0;}while((t|0)!=(c[q>>2]|0))}else{do{v=t+40|0;u=t+44|0;if(n){while(1){v=c[v>>2]|0;c[v+16>>2]=c[s>>2];b[v>>1]=b[v>>1]|64;if((v|0)==(c[u>>2]|0)){break}else{v=v+32|0}}}else{while(1){v=c[v>>2]|0;c[v+20>>2]=c[s>>2];b[v>>1]=b[v>>1]|128;if((v|0)==(c[u>>2]|0)){break}else{v=v+32|0}}}t=c[t+16>>2]|0;}while((t|0)!=(c[q>>2]|0))}r=r+48|0;}while(r>>>0>>0)}zU(d,m);AU(d,m)}m=m+1|0;if((m|0)>=2){break}}B=c[d+28>>2]|0;j=c[d+32>>2]|0;d=j+(B*40|0)|0;if((B|0)<=0){B=0;i=g;return B|0}h=c[f+8>>2]|0;f=c[f+4>>2]|0;while(1){c[f>>2]=c[j+16>>2];c[f+4>>2]=c[j+20>>2];k=e[j>>1]|0;do{if((k&1|0)==0){if((k&2|0)==0){a[h]=1;break}else{a[h]=2;break}}else{a[h]=0}}while(0);j=j+40|0;if(j>>>0>>0){h=h+1|0;f=f+8|0}else{k=0;break}}i=g;return k|0}function nU(a,b){a=a|0;b=b|0;var c=0;c=i;jU(a,b)|0;i=c;return 0}function oU(a,b){a=a|0;b=b|0;var d=0;d=i;$W(a+4|0,b|0,28)|0;c[a+40>>2]=c[b+4>>2];c[a+44>>2]=c[b+12>>2];c[a+436>>2]=c[b+8>>2];c[a+440>>2]=c[b+16>>2];i=d;return}function pU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;c[a+112>>2]=b;d=c[b+28>>2]|0;e=a+104|0;c[e>>2]=d;c[a+4>>2]=c[b+40>>2];c[a+8>>2]=c[b+44>>2];c[a+12>>2]=c[b+436>>2];c[a+16>>2]=c[b+440>>2];f=c[b+24>>2]|0;b=(f|0)==2;g=(f&-2|0)==2|0;g=b|(f|0)==4?g|2:g;f=(f|0)==1?g:g|4;c[e>>2]=d|4;c[a+108>>2]=b?f|8:f;i=i;return 0}function qU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;a=mU(a,b,c)|0;i=d;return a|0}function rU(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var 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;e=i;l=i;i=i+8|0;m=l;t=i;i=i+8|0;s=t;q=i;i=i+8|0;k=i;i=i+32|0;h=k;j=b+20|0;d=c[d+4>>2]|0;n=c[d+88>>2]|0;if((n|0)==0){z=6;i=e;return z|0}bX(k|0,0,28)|0;c[k>>2]=d;c[h+4>>2]=c[n+16>>2];c[h+12>>2]=0;c[h+8>>2]=c[n+20>>2];c[h+16>>2]=0;c[h+20>>2]=g>>>16&15;c[h+24>>2]=0;c[j>>2]=d;n=d+116|0;o=b+24|0;c[o>>2]=c[n>>2];kJ(c[b+28>>2]|0);p=c[o>>2]|0;if((p|0)==0){r=d+16|0;p=jJ(c[d+100>>2]|0,(c[r>>2]|0)+28|0,q)|0;q=c[q>>2]|0;if((q|0)!=0){c[o>>2]=p;z=q;i=e;return z|0}c[p>>2]=d;z=c[r>>2]|0;r=p+4|0;c[r>>2]=z;y=p+28|0;c[p+8>>2]=y;q=c[d+92>>2]|0;bX(y|0,127,z|0)|0;if((cK(d,1970170211)|0)==0){v=0;while(1){w=c[(c[283296+(v<<2)>>2]|0)+4>>2]|0;do{if((w|0)!=0){y=c[w>>2]|0;if((y|0)==0){break}u=v&255;do{x=KJ(d,y)|0;c[t>>2]=x;do{if((x|0)!=0){if(x>>>0>=(c[r>>2]|0)>>>0){break}x=p+(x+28)|0;if((a[x]|0)!=127){break}a[x]=u}}while(0);x=w+4|0;z=fK(d,y,s)|0;y=c[t>>2]|0;a:do{if((y|0)!=0){do{if(z>>>0>(c[x>>2]|0)>>>0){break a}do{if(y>>>0<(c[r>>2]|0)>>>0){y=p+(y+28)|0;if((a[y]|0)!=127){break}a[y]=u}}while(0);z=fK(d,z,s)|0;y=c[t>>2]|0;}while((y|0)!=0)}}while(0);w=w+8|0;y=c[w>>2]|0;}while((y|0)!=0)}}while(0);v=v+1|0;if((v|0)==4){t=48;break}}do{s=KJ(d,t)|0;do{if((s|0)!=0){if(s>>>0>=(c[r>>2]|0)>>>0){break}z=p+(s+28)|0;a[z]=a[z]|-128}}while(0);t=t+1|0;}while(t>>>0<58)}t=c[r>>2]|0;if((t|0)>0){s=0;do{u=p+(s+28)|0;v=a[u]|0;if((v&127)==127){a[u]=v&-128|2;t=c[r>>2]|0}s=s+1|0;}while((s|0)<(t|0))}dK(d,q)|0;c[o>>2]=p;c[n>>2]=p;c[d+120>>2]=341;o=c[o>>2]|0}else{o=p}c[l>>2]=0;if((c[o+4>>2]|0)>>>0<=f>>>0){c[l>>2]=6;z=6;i=e;return z|0}n=c[283296+((a[(c[o+8>>2]|0)+f|0]&127)<<2)>>2]|0;d=c[o+12+(c[n>>2]<<2)>>2]|0;b:do{if((d|0)==0){d=c[(c[o>>2]|0)+100>>2]|0;m=jJ(d,c[n+8>>2]|0,m)|0;p=c[l>>2]|0;if((p|0)!=0){z=p;i=e;return z|0}c[m>>2]=n;p=c[n+12>>2]|0;do{if((p|0)!=0){z=Bd[p&255](m,c[o>>2]|0)|0;c[l>>2]=z;if((z|0)==0){break}n=c[n+20>>2]|0;if((n|0)!=0){fd[n&511](m)}lJ(d,m);m=0;break b}}while(0);c[o+12+(c[n>>2]<<2)>>2]=m}else{m=d}}while(0);l=c[l>>2]|0;if((l|0)!=0){z=l;i=e;return z|0}c[b+156>>2]=m;d=c[m>>2]|0;l=c[d+16>>2]|0;if((l|0)==0){$W(m+4|0,k|0,28)|0}else{hd[l&127](m,h);d=c[m>>2]|0}g=g&-2054|2049;k=c[d+24>>2]|0;do{if((k|0)!=0){b=Bd[k&255](b+32|0,m)|0;if((b|0)==0){break}i=e;return b|0}}while(0);z=vU(j,h,f,g,0)|0;i=e;return z|0}function sU(a){a=a|0;var b=0,d=0;b=i;d=c[c[a+4>>2]>>2]|0;bX(a+20|0,0,184)|0;c[a+32>>2]=d;a=iJ(d,a+28|0)|0;i=b;return a|0}function tU(a){a=a|0;var b=0;b=i;uU(a+32|0);c[a+20>>2]=0;c[a+24>>2]=0;a=a+28|0;mJ(c[a>>2]|0);c[a>>2]=0;i=b;return}function uU(a){a=a|0;var b=0,d=0,e=0;b=i;if((a|0)==0){i=b;return}d=c[a>>2]|0;if((d|0)==0){i=b;return}c[a+48>>2]=0;c[a+52>>2]=0;e=a+56|0;lJ(d,c[e>>2]|0);c[e>>2]=0;c[a+60>>2]=0;c[a+64>>2]=0;e=a+68|0;lJ(d,c[e>>2]|0);c[e>>2]=0;c[a+76>>2]=0;c[a+80>>2]=0;e=a+84|0;lJ(d,c[e>>2]|0);c[e>>2]=0;c[a+88>>2]=0;c[a+92>>2]=0;e=a+96|0;lJ(d,c[e>>2]|0);c[e>>2]=0;e=a+44|0;lJ(d,c[e>>2]|0);c[e>>2]=0;c[a+36>>2]=0;c[a+40>>2]=0;e=a+32|0;lJ(d,c[e>>2]|0);c[e>>2]=0;c[a+28>>2]=0;c[a+24>>2]=0;c[a>>2]=0;i=b;return}function vU(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;j=i;s=i;i=i+16|0;t=s;x=i;i=i+24|0;y=x;r=i;i=i+16|0;q=r;p=i;i=i+8|0;v=p;u=c[d>>2]|0;o=c[d+8>>2]|0;n=c[d+136>>2]|0;z=d+12|0;k=c[u+84>>2]|0;l=c[k+156>>2]|0;u=YI(u,f,g)|0;if((u|0)!=0){Z=u;i=j;return Z|0}Z=a[l+8|0]|0;w=d+140|0;a[w]=Z;if(Z<<24>>24!=0){Y=d+144|0;$W(Y|0,l+12|0,16)|0;Z=d+160|0;V=l+28|0;W=c[V+4>>2]|0;X=Z;c[X>>2]=c[V>>2];c[X+4>>2]=W;$W(s|0,Y|0,16)|0;cJ(t)|0;IJ(Z,t)}u=k+40|0;c[k+56>>2]=c[u>>2];t=k+52|0;c[k+60>>2]=c[t>>2];s=k+72|0;A=c[s>>2]|0;a:do{if((A|0)==1869968492){x=k+108|0;if((a[w]|0)!=0){HJ(x,c[d+160>>2]|0,c[d+164>>2]|0)}y=k+110|0;A=b[y>>1]|0;g=(A<<16>>16)+4|0;do{if((g|0)==0){m=10}else{if(((b[o+22>>1]|0)+g+(b[o+58>>1]|0)|0)>>>0<=(c[o+4>>2]|0)>>>0){m=10;break}B=b[x>>1]|0;m=12}}while(0);do{if((m|0)==10){B=b[x>>1]|0;if(B<<16>>16==0){g=A;break}if(((b[o+20>>1]|0)+(B<<16>>16)+(b[o+56>>1]|0)|0)>>>0>(c[o+8>>2]|0)>>>0){m=12}else{g=A}}}while(0);do{if((m|0)==12){g=pJ(o,g,B<<16>>16)|0;if((g|0)==0){g=b[y>>1]|0;break}else{Z=g;i=j;return Z|0}}}while(0);A=o+56|0;$W(c[o+60>>2]|0,c[k+112>>2]|0,g<<16>>16<<3|0)|0;$W(c[o+68>>2]|0,c[k+120>>2]|0,b[x>>1]<<1|0)|0;$W(c[o+64>>2]|0,c[k+116>>2]|0,b[y>>1]|0)|0;b[o+58>>1]=b[y>>1]|0;b[A>>1]=b[x>>1]|0;X=d+20|0;g=d+168|0;c[g>>2]=c[X>>2];Z=d+28|0;c[d+172>>2]=c[Z>>2];Y=aJ(c[u>>2]|0,c[d+16>>2]|0)|0;x=d+176|0;c[x>>2]=(c[X>>2]|0)+Y;c[d+180>>2]=c[Z>>2];if((b[y>>1]|0)==0){e=0;break}y=c[(c[n>>2]|0)+28>>2]|0;if((y|0)!=0){sd[y&127](z,A,n)|0}b:do{if((c[e+20>>2]|0)==1){Y=c[g>>2]|0;Z=c[x>>2]|0;X=Y+32+(c[d+128>>2]|0)&-64;c[g>>2]=X;c[x>>2]=Z+32+(c[d+132>>2]|0)&-64;c[k+144>>2]=X-Y;c[k+148>>2]=(c[x>>2]|0)-Z}else{C=c[d+80>>2]|0;Z=c[d+72>>2]|0;A=Z+ -1|0;do{if((Z|0)>1){if((c[d+116>>2]&4|0)!=0){break}e=(c[x>>2]|0)-(c[C+(A*48|0)+4>>2]|0)|0;z=c[C+4>>2]|0;y=c[C+8>>2]|0;B=y-z|0;A=C+(A*48|0)+8|0;C=(c[A>>2]|0)+e|0;B=(z|0)<24?B+ -8|0:B;C=(e|0)<24?C+8|0:C;E=B+32&-64;c[g>>2]=E;D=C+32&-64;c[x>>2]=D;if((E|0)>=(y|0)&(z|0)>0){E=E+ -64|0;c[g>>2]=E}if((D|0)<=(c[A>>2]|0)&(e|0)>0){c[x>>2]=D+64}c[k+144>>2]=E-B;c[k+148>>2]=(c[x>>2]|0)-C;break b}}while(0);Y=c[g>>2]|0;Z=c[x>>2]|0;X=Y+32&-64;c[g>>2]=X;c[x>>2]=Z+32&-64;c[k+144>>2]=X-Y;c[k+148>>2]=(c[x>>2]|0)-Z}}while(0);sJ(o);e=0}else if((A|0)==1668246896){C=c[k+128>>2]|0;B=o+20|0;z=o+22|0;A=b[z>>1]|0;D=qJ(o,C)|0;if((D|0)!=0){Z=D;i=j;return Z|0}$W(c[o+88>>2]|0,c[k+132>>2]|0,C<<5|0)|0;c[o+84>>2]=C;O=c[o+48>>2]|0;if((C|0)==0){e=0;break}E=o+52|0;D=d+168|0;G=d+176|0;F=h+1|0;L=o+24|0;N=y+4|0;M=y+2|0;K=d+16|0;J=d+20|0;I=d+24|0;H=d+28|0;Q=0;while(1){R=Q+O|0;T=D;Z=c[T>>2]|0;T=c[T+4>>2]|0;X=G;W=c[X>>2]|0;X=c[X+4>>2]|0;V=b[z>>1]|0;P=V<<16>>16;S=vU(d,e,c[(c[E>>2]|0)+(R<<5)>>2]|0,g,F)|0;if((S|0)!=0){m=58;break}S=c[E>>2]|0;U=S+(R<<5)+4|0;Y=b[U>>1]|0;if((Y&512)==0){Y=D;c[Y>>2]=Z;c[Y+4>>2]=T;Y=G;c[Y>>2]=W;c[Y+4>>2]=X;Y=b[U>>1]|0}Z=b[z>>1]|0;X=Z<<16>>16;T=X-P|0;do{if((Y&200)!=0){W=c[L>>2]|0;X=W+(X<<3)|0;if(V<<16>>16>=Z<<16>>16){break}V=S+(R<<5)+16|0;W=W+(P<<3)|0;do{IJ(W,V);W=W+8|0;}while(W>>>0>>0);Y=b[U>>1]|0}}while(0);U=c[S+(R<<5)+8>>2]|0;if((Y&2)==0){R=c[S+(R<<5)+12>>2]|0;S=U+A|0;if(!(S>>>0

>>0&R>>>0>>0)){S=21;m=58;break}Y=c[L>>2]|0;Z=P+A+R|0;R=(c[Y+(S<<3)>>2]|0)-(c[Y+(Z<<3)>>2]|0)|0;S=(c[Y+(S<<3)+4>>2]|0)-(c[Y+(Z<<3)+4>>2]|0)|0}else{Y=aJ(U,c[K>>2]|0)|0;Z=c[J>>2]|0;S=aJ(c[S+(R<<5)+12>>2]|0,c[I>>2]|0)|0;R=Y+32+Z&-64;S=S+32+(c[H>>2]|0)&-64}$W(x|0,B|0,20)|0;c[N>>2]=(c[N>>2]|0)+(P<<3);b[M>>1]=T;HJ(y,R,S);Q=Q+1|0;if(Q>>>0>=C>>>0){e=0;break a}}if((m|0)==58){i=j;return S|0}}else{e=7}}while(0);if((h|0)!=0){Z=e;i=j;return Z|0}z=k+44|0;g=k+32|0;e=(c[z>>2]|0)-(c[g>>2]|0)|0;c[p>>2]=e;y=k+48|0;A=k+36|0;x=v+4|0;c[x>>2]=(c[y>>2]|0)-(c[A>>2]|0);h=n+8|0;c[p>>2]=aJ(e,c[h>>2]|0)|0;e=n+12|0;c[x>>2]=aJ(c[x>>2]|0,c[e>>2]|0)|0;if((a[w]|0)!=0){Z=d+144|0;GJ(o+20|0,Z);IJ(v,Z)}v=d+168|0;w=c[v>>2]|0;B=o+20|0;if((w|0)!=0){HJ(B,0-w|0,0)}zK(B,q);X=c[r>>2]&-64;c[r>>2]=X;Y=q+4|0;c[Y>>2]=c[Y>>2]&-64;Z=q+8|0;W=(c[Z>>2]|0)+63&-64;c[Z>>2]=W;Z=q+12|0;c[Z>>2]=(c[Z>>2]|0)+63&-64;c[k+24>>2]=W-X;c[k+28>>2]=(c[Z>>2]|0)-(c[Y>>2]|0);c[g>>2]=c[r>>2];c[A>>2]=c[Z>>2];c[z>>2]=(c[p>>2]|0)+(c[r>>2]|0)&-64;c[y>>2]=(c[x>>2]|0)+(c[Z>>2]|0)&-64;c:do{if((c[(c[k+4>>2]|0)+8>>2]&4|0)==0){p=c[d+4>>2]|0;do{if((c[p+4>>2]|0)>>>0>f>>>0){if((a[(c[p+8>>2]|0)+f|0]|0)>-1){break}if((a[n+32|0]|0)!=0){m=53;break c}}}while(0);if((c[u>>2]|0)==0){break}c[u>>2]=(c[d+176>>2]|0)-(c[v>>2]|0)}else{m=53}}while(0);if((m|0)==53){c[u>>2]=aJ(c[u>>2]|0,c[h>>2]|0)|0;c[k+144>>2]=0;c[k+148>>2]=0}m=aJ(c[t>>2]|0,c[e>>2]|0)|0;c[u>>2]=(c[u>>2]|0)+32&-64;c[t>>2]=m+32&-64;kJ(c[l>>2]|0);m=tJ(c[l>>2]|0,o)|0;if((m|0)!=0){Z=m;i=j;return Z|0}$W(k+108|0,(c[l>>2]|0)+20|0,20)|0;c[s>>2]=1869968492;Z=0;i=j;return Z|0}function wU(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;if((a|0)==0){i=d;return}b=c[(c[a>>2]|0)+100>>2]|0;e=a+12|0;f=c[e>>2]|0;if((f|0)!=0){lJ(b,f);c[e>>2]=0}f=a+16|0;e=c[f>>2]|0;if((e|0)!=0){lJ(b,e);c[f>>2]=0}e=a+20|0;f=c[e>>2]|0;if((f|0)!=0){lJ(b,f);c[e>>2]=0}f=a+24|0;e=c[f>>2]|0;if((e|0)!=0){lJ(b,e);c[f>>2]=0}c[a+4>>2]=0;c[a+8>>2]=0;c[a>>2]=0;lJ(b,a);i=d;return}function xU(d,e){d=d|0;e=e|0;var 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;g=i;f=i;i=i+8|0;t=f;c[f>>2]=0;s=d+4|0;l=c[s>>2]|0;r=d+12|0;o=c[r>>2]|0;q=d+8|0;m=c[q>>2]|0;p=d+16|0;n=c[p>>2]|0;u=c[d>>2]|0;j=d+28|0;c[j>>2]=0;k=d+40|0;c[k>>2]=0;c[d+48>>2]=0;c[d+60>>2]=0;c[d+76>>2]=0;c[d+88>>2]=0;x=b[e>>1]|0;w=d+36|0;v=c[w>>2]|0;do{if(x>>>0>v>>>0){x=x+3&-4;z=d+44|0;c[z>>2]=oJ(u,4,v,x,c[z>>2]|0,t)|0;if((c[f>>2]|0)==0){c[w>>2]=x;break}else{z=f;z=c[z>>2]|0;i=g;return z|0}}}while(0);x=e+2|0;y=b[x>>1]|0;z=y<<16>>16;v=d+24|0;w=c[v>>2]|0;do{if((z+2|0)>>>0>w>>>0){y=z+11&-8;z=d+32|0;c[z>>2]=oJ(u,40,w,y,c[z>>2]|0,t)|0;if((c[f>>2]|0)==0){c[v>>2]=y;y=b[x>>1]|0;break}else{z=f;z=c[z>>2]|0;i=g;return z|0}}}while(0);c[j>>2]=y<<16>>16;c[k>>2]=b[e>>1]|0;t=d+72|0;c[t>>2]=2;u=d+100|0;c[u>>2]=-1;if((AK(e)|0)==1){c[t>>2]=-2;c[u>>2]=1}c[s>>2]=l;c[r>>2]=o;c[q>>2]=m;c[p>>2]=n;c[d+116>>2]=0;c[d+120>>2]=0;p=c[d+32>>2]|0;q=c[j>>2]|0;if((q|0)==0){z=f;z=c[z>>2]|0;i=g;return z|0}j=p+(q*40|0)|0;r=e+12|0;s=p+((b[c[r>>2]>>1]|0)*40|0)|0;q=(q|0)>0;if(q){v=0;w=s;u=p;x=s;s=c[e+8>>2]|0;t=c[e+4>>2]|0;while(1){b[u+12>>1]=c[t>>2];y=t+4|0;b[u+14>>1]=c[y>>2];z=(aJ(c[t>>2]|0,l)|0)+m|0;c[u+16>>2]=z;c[u+4>>2]=z;y=(aJ(c[y>>2]|0,o)|0)+n|0;c[u+20>>2]=y;c[u+8>>2]=y;y=a[s]&3;if((y|0)==0){b[u>>1]=1}else if((y|0)==2){b[u>>1]=2}else{b[u>>1]=0}c[u+36>>2]=x;c[x+32>>2]=u;do{if((u|0)==(w|0)){v=v+1|0;if((v|0)>=(b[e>>1]|0)){w=u;x=u;break}x=p+((b[(c[r>>2]|0)+(v<<1)>>1]|0)*40|0)|0;w=x}else{x=u}}while(0);u=u+40|0;if(u>>>0>>0){s=s+1|0;t=t+8|0}else{break}}}m=c[d+44>>2]|0;z=c[k>>2]|0;k=m+(z<<2)|0;if((z|0)>0){d=c[r>>2]|0;l=0;while(1){c[m>>2]=p+((l<<16>>16)*40|0);m=m+4|0;if(m>>>0>>0){l=(b[d>>1]|0)+1<<16>>16;d=d+2|0}else{break}}}if(q){m=p;l=4;n=0;d=0;k=p}else{z=f;z=c[z>>2]|0;i=g;return z|0}while(1){if((k|0)==(m|0)){m=c[k+36>>2]|0;p=b[k+12>>1]|0;o=(p<<16>>16)-(b[m+12>>1]|0)|0;e=b[k+14>>1]|0;d=(e<<16>>16)-(b[m+14>>1]|0)|0;n=0-o|0;q=(d|0)>=(n|0);if((d|0)<(o|0)){l=q?1:-2;n=q?o:d;q=q?d:o}else{l=q?2:-1;n=q?d:n;q=q?o:d}r=q*14|0;l=(((n|0)<0?0-n|0:n)|0)>(((q|0)<0?0-r|0:r)|0)?l:4;m=m+40|0;q=d}else{e=b[k+14>>1]|0;p=b[k+12>>1]|0;o=n;q=d}a[k+2|0]=l;d=c[k+32>>2]|0;n=(b[d+12>>1]|0)-(p<<16>>16)|0;d=(b[d+14>>1]|0)-(e<<16>>16)|0;p=0-n|0;r=(d|0)>=(p|0);if((d|0)<(n|0)){e=r?1:-2;p=r?n:d;s=r?d:n}else{e=r?2:-1;p=r?d:p;s=r?n:d}r=s*14|0;e=(((p|0)<0?0-p|0:p)|0)>(((s|0)<0?0-r|0:r)|0)?e:4;a[k+3|0]=e;p=b[k>>1]|0;do{if((p&3)==0){if(e<<24>>24!=l<<24>>24){if((l<<24>>24|0)==(0-(e<<24>>24)|0)){h=34;break}else{break}}if(l<<24>>24!=4){h=34;break}if((hJ(o,q,n,d)|0)==0){break}p=b[k>>1]|0;h=34}else{h=34}}while(0);if((h|0)==34){h=0;b[k>>1]=p|256}k=k+40|0;if(k>>>0>>0){l=e}else{break}}z=f;z=c[z>>2]|0;i=g;return z|0}function yU(d,e){d=d|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;f=i;j=i;i=i+8|0;h=j;k=d+48+(e*28|0)+8|0;n=c[k>>2]|0;l=d+48+(e*28|0)|0;o=c[l>>2]|0;m=n+(o*52|0)|0;p=FU(d,e)|0;if((p|0)!=0){G=p;i=f;return G|0}if((o|0)>0){do{r=c[n+40>>2]|0;p=c[n+44>>2]|0;q=b[r>>1]|0;o=a[n]|0;a[n]=o&-2;a:do{if((r|0)!=(p|0)){q=q&3;s=r;while(1){s=c[s+32>>2]|0;r=b[s>>1]&3;if((r|q|0)==0){break a}if((s|0)==(p|0)){break}else{q=r}}a[n]=o|1}}while(0);n=n+52|0;}while(n>>>0>>0)}p=c[k>>2]|0;s=c[l>>2]|0;n=p+(s*52|0)|0;r=c[d+48+(e*28|0)+24>>2]|0;m=d+112|0;q=(c[(c[m>>2]|0)+36>>2]<<3|0)/2048|0;l=(e|0)==0?d+4|0:d+12|0;o=bJ(192,c[l>>2]|0)|0;if((s|0)>0){A=p;while(1){do{if((c[A+40>>2]|0)!=(c[A+44>>2]|0)){z=A+1|0;if((a[z]|0)!=(r|0)){break}w=A+2|0;u=A+4|0;v=A+6|0;s=A+32|0;x=A+36|0;t=A+20|0;B=p;do{do{if((B|0)!=(A|0)){if((a[z]|0)!=(0-(a[B+1|0]|0)|0)){break}y=(b[B+2>>1]|0)-(b[w>>1]|0)|0;if((y|0)<0){break}E=b[u>>1]|0;F=b[v>>1]|0;D=b[B+4>>1]|0;C=b[B+6>>1]|0;C=((F<<16>>16>C<<16>>16?C:F)<<16>>16)-((E<<16>>16>16?D:E)<<16>>16)|0;if((C|0)<(q|0)){break}D=y<<3;E=c[s>>2]|0;do{if((D|0)<(E*9|0)){if((D|0)>=(E*7|0)){if((c[x>>2]|0)>=(C|0)){break}}c[s>>2]=y;c[x>>2]=C;c[t>>2]=B}}while(0);G=B+32|0;F=c[G>>2]|0;if((D|0)>=(F*9|0)){break}E=B+36|0;if((D|0)>=(F*7|0)){if((c[E>>2]|0)>=(C|0)){break}}c[G>>2]=y;c[E>>2]=C;c[B+20>>2]=A}}while(0);B=B+52|0;}while(B>>>0>>0)}}while(0);A=A+52|0;if(A>>>0>=n>>>0){t=p;break}}do{s=t+20|0;q=c[s>>2]|0;b:do{if((q|0)!=0){u=q+20|0;if((c[u>>2]|0)!=(t|0)){break}v=q+2|0;w=t+2|0;A=b[w>>1]|0;if((b[v>>1]|0)<=A<<16>>16){break}x=t+32|0;if((c[x>>2]|0)>=(o|0)){break}r=t+36|0;y=p;c:while(1){D=b[y+2>>1]|0;do{if(!(D<<16>>16>A<<16>>16|(t|0)==(y|0))){z=c[y+20>>2]|0;if((z|0)==0){break}if((c[z+20>>2]|0)!=(y|0)){break}B=b[z+2>>1]|0;C=b[v>>1]|0;if(B<<16>>16>16){break}if(A<<16>>16==D<<16>>16&C<<16>>16==B<<16>>16){break}G=c[y+32>>2]|0;F=c[x>>2]|0;if(!((G|0)>(F|0)&(F<<2|0)>(G|0))){break}if((c[r>>2]|0)<((c[y+36>>2]|0)*3|0)){break c}else{B=p}do{C=B+20|0;A=c[C>>2]|0;do{if((A|0)==(y|0)){c[C>>2]=0;c[B+24>>2]=q}else{if((A|0)!=(z|0)){break}c[C>>2]=0;c[B+24>>2]=t}}while(0);B=B+52|0;}while(B>>>0>>0)}}while(0);y=y+52|0;if(y>>>0>=n>>>0){break b}A=b[w>>1]|0}c[u>>2]=0;c[s>>2]=0}}while(0);t=t+52|0;}while(t>>>0>>0);do{t=p+20|0;s=c[t>>2]|0;d:do{if((s|0)!=0){q=s+28|0;c[q>>2]=(c[q>>2]|0)+1;r=s+20|0;if((c[r>>2]|0)==(p|0)){break}c[t>>2]=0;s=c[s+32>>2]|0;do{if((s|0)>=(o|0)){if((c[p+32>>2]|0)<(s<<2|0)){break}c[q>>2]=(c[q>>2]|0)+ -1;break d}}while(0);c[p+24>>2]=c[r>>2]}}while(0);p=p+52|0;}while(p>>>0>>0)}n=d+48+(e*28|0)|0;o=c[d>>2]|0;p=(c[m>>2]|0)+40|0;q=c[k>>2]|0;r=c[n>>2]|0;m=q+(r*52|0)|0;k=d+48+(e*28|0)+12|0;c[k>>2]=0;l=c[l>>2]|0;p=p+(e*396|0)+204|0;if((aJ(c[p>>2]|0,l)|0)>16){p=bJ(16,l)|0}else{p=c[p>>2]|0}d=d+48+(e*28|0)+20|0;e:do{if((r|0)>0){e=q;while(1){t=c[k>>2]|0;do{if((t|0)>0){s=c[d>>2]|0;u=a[e+1|0]|0;q=e+2|0;r=e+20|0;w=65535;v=0;y=0;while(1){x=s+(v*48|0)|0;do{if((a[s+(v*48|0)+13|0]|0)==u<<24>>24){z=(b[q>>1]|0)-(b[x>>1]|0)|0;z=(z|0)<0?0-z|0:z;if(!((z|0)<(p|0)&(z|0)<(w|0))){x=y;break}B=c[r>>2]|0;if((B|0)!=0){A=c[s+(v*48|0)+40>>2]|0;B=B+2|0;D=0;C=A;do{E=c[C+20>>2]|0;if((E|0)!=0){F=b[B>>1]|0;D=F<<16>>16;G=b[E+2>>1]|0;E=G<<16>>16;D=F<<16>>16>G<<16>>16?D-E|0:E-D|0;if((D|0)>=(p|0)){break}}C=c[C+16>>2]|0;}while((C|0)!=(A|0));if((D|0)>=(p|0)){x=y;break}}w=z}else{x=y}}while(0);v=v+1|0;if((v|0)<(t|0)){y=x}else{break}}if((x|0)==0){g=73;break}c[e+16>>2]=c[x+40>>2];G=x+44|0;c[(c[G>>2]|0)+16>>2]=e;c[G>>2]=e}else{u=a[e+1|0]|0;q=e+2|0;g=73}}while(0);if((g|0)==73){g=0;r=EU(n,b[q>>1]|0,u<<24>>24,o,h)|0;if((r|0)!=0){break}G=c[j>>2]|0;bX(G|0,0,40)|0;c[G+40>>2]=e;c[G+44>>2]=e;b[G>>1]=b[q>>1]|0;F=aJ(b[q>>1]|0,l)|0;c[G+8>>2]=F;c[G+4>>2]=F;c[e+16>>2]=e;a[(c[j>>2]|0)+13|0]=a[e+1|0]|0}e=e+52|0;if(e>>>0>=m>>>0){break e}}i=f;return r|0}}while(0);h=c[d>>2]|0;G=c[k>>2]|0;g=h+(G*48|0)|0;if((G|0)>0){d=h}else{G=0;i=f;return G|0}do{j=d+40|0;e=c[j>>2]|0;if((e|0)!=0){do{c[e+12>>2]=d;e=c[e+16>>2]|0;}while((e|0)!=(c[j>>2]|0))}d=d+48|0;}while(d>>>0>>0);while(1){e=h+40|0;k=c[e>>2]|0;d=h+24|0;j=h+28|0;l=k;m=0;n=0;do{p=(a[k]&1^1)&255;m=(p^1)+m|0;n=p+n|0;p=k+24|0;o=c[p>>2]|0;if((o|0)==0){o=0}else{o=(c[o+12>>2]|0)!=(h|0)|0}q=k+20|0;do{if(!((c[q>>2]|0)==0&o<<24>>24==0)){o=o<<24>>24!=0;t=c[(o?p:q)>>2]|0;p=c[(o?j:d)>>2]|0;do{if((p|0)==0){p=c[t+12>>2]|0}else{r=(b[h>>1]|0)-(b[p>>1]|0)|0;F=b[k+2>>1]|0;s=F<<16>>16;G=b[t+2>>1]|0;q=G<<16>>16;if(((F<<16>>16>G<<16>>16?s-q|0:q-s|0)|0)>=(((r|0)<0?0-r|0:r)|0)){break}p=c[t+12>>2]|0}}while(0);if(o){c[j>>2]=p;l=p+12|0;a[l]=a[l]|2;l=c[e>>2]|0;break}else{c[d>>2]=p;break}}}while(0);k=c[k+16>>2]|0;}while((k|0)!=(l|0));a[h+12|0]=((m|0)<1|(m|0)<(n|0))&1^1;do{if((c[j>>2]|0)!=0){if((c[d>>2]|0)==0){break}c[j>>2]=0}}while(0);h=h+48|0;if(h>>>0>=g>>>0){r=0;break}}i=f;return r|0}function zU(a,d){a=a|0;d=d|0;var 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;g=i;s=c[a+32>>2]|0;k=c[a+28>>2]|0;f=s+(k*40|0)|0;h=c[a+48+(d*28|0)+20>>2]|0;p=c[a+48+(d*28|0)+12>>2]|0;j=(d|0)==0;a=j?64:128;if(!((p|0)>0&(k|0)>0)){i=g;return}k=(d|0)==1;l=h+8|0;m=h+4|0;o=p+ -1|0;d=h+(o*48|0)|0;n=h+(o*48|0)+8|0;o=h+(o*48|0)+4|0;q=p*48|0;p=(q|0)/48|0;r=(q|0)<432;q=(q|0)>0;do{y=e[s>>1]|0;if(!((y&a|0)!=0|(y&768|0)==256)){if(k){v=s+8|0;t=s+14|0}else{v=s+4|0;t=s+12|0}u=b[t>>1]|0;t=u<<16>>16;v=c[v>>2]|0;x=b[h>>1]|0;a:do{if(((x<<16>>16)-t|0)>-1){t=(c[l>>2]|0)+v-(c[m>>2]|0)|0}else{if((t-(b[d>>1]|0)|0)>-1){t=(c[n>>2]|0)+v-(c[o>>2]|0)|0;break}b:do{if(r){c:do{if(q){v=0;while(1){w=v+1|0;if(x<<16>>16>=u<<16>>16){break c}x=b[h+(w*48|0)>>1]|0;if((w|0)<(p|0)){v=w}else{v=w;break}}}else{v=0}}while(0);if(x<<16>>16!=u<<16>>16){break}t=c[h+(v*48|0)+8>>2]|0;break a}else{y=p;v=0;while(1){while(1){if((v|0)>=(y|0)){break b}w=y+v>>1;x=b[h+(w*48|0)>>1]|0;if(u<<16>>16>16){y=w}else{break}}if(u<<16>>16>x<<16>>16){v=w+1|0}else{break}}t=c[h+(w*48|0)+8>>2]|0;break a}}while(0);w=v+ -1|0;u=h+(w*48|0)|0;x=h+(w*48|0)+16|0;y=c[x>>2]|0;if((y|0)==0){w=h+(w*48|0)+8|0;v=bJ((c[h+(v*48|0)+8>>2]|0)-(c[w>>2]|0)|0,(b[h+(v*48|0)>>1]|0)-(b[u>>1]|0)|0)|0;c[x>>2]=v}else{v=y;w=h+(w*48|0)+8|0}y=c[w>>2]|0;t=(aJ(t-(b[u>>1]|0)|0,v)|0)+y|0}}while(0);if(j){c[s+16>>2]=t}else{c[s+20>>2]=t}b[s>>1]=e[s>>1]|a}s=s+40|0;}while(s>>>0>>0);i=g;return}function AU(a,b){a=a|0;b=b|0;var d=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;d=i;g=c[a+32>>2]|0;h=c[a+28>>2]|0;f=g+(h*40|0)|0;k=c[a+44>>2]|0;l=c[a+40>>2]|0;a=k+(l<<2)|0;b=(b|0)==0;j=(h|0)>0;do{if(b){if(j){j=g}else{j=64;break}while(1){c[j+24>>2]=c[j+16>>2];c[j+28>>2]=c[j+4>>2];j=j+40|0;if(j>>>0>>0){}else{j=64;break}}}else{if(j){j=g}else{j=128;break}while(1){c[j+24>>2]=c[j+20>>2];c[j+28>>2]=c[j+8>>2];j=j+40|0;if(j>>>0>>0){}else{j=128;break}}}}while(0);if((l|0)>0){do{o=c[k>>2]|0;l=c[o+36>>2]|0;a:do{if(o>>>0<=l>>>0){m=o;while(1){n=m+40|0;if(((e[m>>1]|0)&j|0)!=0){p=m;break}if(n>>>0>l>>>0){break a}else{m=n}}b:while(1){q=p>>>0>>0;if(q){r=p+40|0;if(((e[p+40>>1]|0)&j|0)!=0){p=r;continue}}else{r=p+40|0}if(r>>>0>l>>>0){break}else{s=r}while(1){t=s+40|0;if(((e[s>>1]|0)&j|0)!=0){break}if(t>>>0>l>>>0){break b}else{s=t}}BU(r,s+ -40|0,p,s);p=s}if((p|0)!=(m|0)){if(q){BU(r,l,p,m)}if(m>>>0<=g>>>0){break}BU(o,m+ -40|0,p,m);break}s=c[m+24>>2]|0;t=c[m+28>>2]|0;p=s-t|0;if((s|0)==(t|0)){break}if(o>>>0>>0){do{c[o+24>>2]=(c[o+28>>2]|0)+p;o=o+40|0;}while(o>>>0>>0)}if(n>>>0>l>>>0){break}while(1){c[m+64>>2]=(c[m+68>>2]|0)+p;o=n+40|0;if(o>>>0>l>>>0){break}else{m=n;n=o}}}}while(0);k=k+4|0;}while(k>>>0>>0)}h=(h|0)>0;if(b){if(!h){i=d;return}do{c[g+16>>2]=c[g+24>>2];g=g+40|0;}while(g>>>0>>0);i=d;return}else{if(!h){i=d;return}do{c[g+20>>2]=c[g+24>>2];g=g+40|0;}while(g>>>0>>0);i=d;return}}function BU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;f=c[d+28>>2]|0;h=c[e+28>>2]|0;j=d+24|0;d=(c[j>>2]|0)-f|0;k=e+24|0;e=(c[k>>2]|0)-h|0;if(a>>>0>b>>>0){i=g;return}if((f|0)==(h|0)){do{h=c[a+28>>2]|0;c[a+24>>2]=((h|0)>(f|0)?e:d)+h;a=a+40|0;}while(a>>>0<=b>>>0);i=g;return}l=h-f|0;if((f|0)<(h|0)){do{m=c[a+28>>2]|0;do{if((m|0)>(f|0)){if((m|0)<(h|0)){n=c[j>>2]|0;m=(_I(m-f|0,(c[k>>2]|0)-n|0,l)|0)+n|0;break}else{m=m+e|0;break}}else{m=m+d|0}}while(0);c[a+24>>2]=m;a=a+40|0;}while(a>>>0<=b>>>0);i=g;return}else{do{m=c[a+28>>2]|0;do{if((m|0)>(h|0)){if((m|0)<(f|0)){n=c[j>>2]|0;m=(_I(m-f|0,(c[k>>2]|0)-n|0,l)|0)+n|0;break}else{m=m+d|0;break}}else{m=m+e|0}}while(0);c[a+24>>2]=m;a=a+40|0;}while(a>>>0<=b>>>0);i=g;return}}function CU(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;n=c[b+108>>2]|0;l=(n&4|0)==0;a:do{if(l){do{if((a[d+12|0]&1)!=0){if((a[e+12|0]&1)==0){break}m=(g|0)==1?55:49;break a}}while(0);m=(g|0)==1?61:59}else{m=64}}while(0);k=c[e+4>>2]|0;h=c[d+4>>2]|0;g=DU(n,c[b+112>>2]|0,g,k-h|0)|0;f=((h+k|0)/2|0)+f+((g|0)/-2|0)|0;p=f&63;b=f+g&63;n=64-p|0;o=64-b|0;do{if((p|0)==0|(b|0)==0){m=0}else{if((g|0)<=(m|0)){if((b|0)>=(g|0)){m=0;break}m=n>>>0>b>>>0?0-b|0:n;break}if(m>>>0<64){if(!(p>>>0>>0&n>>>0>>0&b>>>0>>0&o>>>0>>0)){m=0;break}}p=(g|0)%64|0;if((p|0)<32){if(!((n|0)>(p|0)&(b|0)>(p|0))){m=0;break}}else{p=64-m|0}o=m-n|0;n=n-p|0;m=m-b|0;b=b-p|0;n=(o|0)>(n|0)?n:0-o|0;m=(b|0)>(m|0)?m:0-b|0;m=(((n|0)<0?0-n|0:n)|0)>(((m|0)<0?0-m|0:m)|0)?m:n}}while(0);do{if(l){if((m|0)>14){m=14;break}m=(m|0)<-14?-14:m}}while(0);l=m+f|0;if((h|0)<(k|0)){c[d+8>>2]=l;c[e+8>>2]=l+g;i=j;return m|0}else{c[d+8>>2]=l+g;c[e+8>>2]=l;i=j;return m|0}return 0}function DU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;j=b+40|0;h=(d|0)==1;if((a&4|0)==0){q=e;i=f;return q|0}b=(e|0)<0?0-e|0:e;if(h){if((a&2|0)==0){g=5}else{g=15}}else{if((a&1|0)==0){g=5}else{g=15}}a:do{if((g|0)==5){do{if((c[j+(d*396|0)+8>>2]|0)!=0){g=c[j+(d*396|0)+16>>2]|0;a=b-g|0;if((((a|0)<0?0-a|0:a)|0)>=40){break}b=(g|0)<48?48:g;break a}}while(0);if((b|0)<54){b=((54-b|0)/2|0)+b|0;break}if((b|0)>=192){break}g=b&63;a=b&-64;if(g>>>0<10){break}if(g>>>0<22){b=a|10;break}else{b=(g+ -42|0)>>>0<12?a|54:b;break}}else if((g|0)==15){l=c[j+(d*396|0)+8>>2]|0;do{if((l|0)>0){k=98;n=0;o=b;while(1){q=c[j+(d*396|0)+12+(n*12|0)+4>>2]|0;m=b-q|0;p=(m|0)<0?0-m|0:m;m=(p|0)<(k|0);o=m?q:o;n=n+1|0;if((n|0)<(l|0)){k=m?p:k}else{break}}d=o+32&-64;if((o|0)<=(b|0)){g=19;break}b=(d+ -48|0)<(b|0)?o:b}else{d=b+32&-64;o=b;g=19}}while(0);if((g|0)==19){b=(d|48|0)>(b|0)?o:b}if(h){if((b|0)<=63){b=64;break}b=b+16&-64;break}if((a&8|0)!=0){if((b|0)<64){b=64;break}b=b+32&-64;break}if((b|0)<48){b=b+64>>1;break}if((b|0)<128){b=b+22&-64;break}else{b=b+32&-64;break}}}while(0);q=(e|0)>-1?b:0-b|0;i=f;return q|0}function EU(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;l=i;i=i+8|0;n=l;c[l>>2]=0;k=d+12|0;p=c[k>>2]|0;m=d+16|0;o=c[m>>2]|0;do{if((p|0)<(o|0)){m=c[d+20>>2]|0}else{if((o|0)>44739241){c[l>>2]=64;p=64;o=0;g=h;c[g>>2]=o;i=j;return p|0}q=(o>>2)+4|0;p=q+o|0;p=(q|0)<0|(p|0)>44739242?44739242:p;q=d+20|0;n=oJ(g,48,o,p,c[q>>2]|0,n)|0;c[q>>2]=n;o=c[l>>2]|0;if((o|0)==0){c[m>>2]=p;m=n;p=c[k>>2]|0;break}else{q=o;g=0;p=h;c[p>>2]=g;i=j;return q|0}}}while(0);n=m+(p*48|0)|0;d=d+24|0;a:do{if((p|0)>0){while(1){o=n+ -48|0;g=b[o>>1]|0;if((g|0)<(e|0)){break a}if((g|0)==(e|0)){if((c[d>>2]|0)==(f|0)){break a}}$W(n|0,o|0,48)|0;if(o>>>0>m>>>0){n=o}else{n=o;break}}}}while(0);c[k>>2]=(c[k>>2]|0)+1;bX(n|0,0,48)|0;b[n>>1]=e;a[n+13|0]=f;q=c[l>>2]|0;g=n;p=h;c[p>>2]=g;i=j;return q|0}function FU(d,f){d=d|0;f=f|0;var 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,A=0;g=i;n=i;i=i+8|0;m=n;o=i;i=i+32|0;k=i;i=i+16|0;l=c[d>>2]|0;s=c[d+44>>2]|0;r=c[d+40>>2]|0;p=s+(r<<2)|0;bX(o|0,0,31)|0;bX(k|0,0,16)|0;j=c[d+48+(f*28|0)+24>>2]|0;q=(j|0)<0?0-j|0:j;j=d+48+(f*28|0)|0;c[j>>2]=0;v=c[d+32>>2]|0;u=c[d+28>>2]|0;t=v+(u*40|0)|0;u=(u|0)>0;do{if((f|0)==0){if(!u){break}do{c[v+24>>2]=b[v+12>>1]|0;c[v+28>>2]=b[v+14>>1]|0;v=v+40|0;}while(v>>>0>>0)}else{if(!u){break}do{c[v+24>>2]=b[v+14>>1]|0;c[v+28>>2]=b[v+12>>1]|0;v=v+40|0;}while(v>>>0>>0)}}while(0);a:do{if((r|0)>0){r=d+48+(f*28|0)+4|0;d=d+48+(f*28|0)+8|0;w=0;u=q;b:while(1){f=c[s>>2]|0;t=c[f+36>>2]|0;c:do{if((f|0)!=(t|0)){v=a[t+3|0]|0;x=v<<24>>24;d:do{if(((v<<24>>24<0?0-x|0:x)|0)==(q|0)){A=a[f+3|0]|0;x=A<<24>>24;if(((A<<24>>24<0?0-x|0:x)|0)!=(q|0)){break}while(1){x=v<<24>>24;if(((v<<24>>24<0?0-x|0:x)|0)!=(q|0)){break}if((t|0)==(f|0)){break d}A=c[t+36>>2]|0;v=a[A+3|0]|0;t=A}f=c[t+32>>2]|0}}while(0);y=-32e3;z=32e3;x=0;v=0;t=f;while(1){do{if((x|0)==0){x=0;A=w}else{A=c[t+24>>2]|0;z=(A|0)<(z|0)?A:z;y=(A|0)>(y|0)?A:y;if(!((a[t+3|0]|0)!=(u|0)|(t|0)==(f|0))){A=w;break}c[w+44>>2]=t;b[w+2>>1]=(z+y|0)>>>1;y=c[w+40>>2]|0;if(((b[t>>1]|b[y>>1])&3)!=0){a[w]=a[w]|1}x=c[t+28>>2]|0;y=c[y+28>>2]|0;z=(y|0)<(x|0)?y:x;y=(y|0)>(x|0)?y:x;x=z&65535;b[w+4>>1]=x;A=y&65535;b[w+6>>1]=A;b[w+8>>1]=A-x<<16>>16;x=0;A=0}}while(0);if((t|0)==(f|0)){if(v<<24>>24==0){v=1}else{w=A;break c}}do{if((x|0)==0){x=a[t+3|0]|0;w=x<<24>>24;if(((x<<24>>24<0?0-w|0:w)|0)!=(q|0)){x=0;break}c[n>>2]=0;y=c[j>>2]|0;u=c[r>>2]|0;if((y|0)<(u|0)){u=c[d>>2]|0}else{if((u|0)>41297761){break b}A=(u>>2)+4|0;y=A+u|0;y=(A|0)<0|(y|0)>41297762?41297762:y;u=oJ(l,52,u,y,c[d>>2]|0,m)|0;c[d>>2]=u;z=c[n>>2]|0;if((z|0)!=0){h=47;break b}c[r>>2]=y;y=c[j>>2]|0}c[j>>2]=y+1;A=u+(y*52|0)|0;a[A]=0;z=u+(y*52|0)+1|0;$W(z|0,o|0,31)|0;c[u+(y*52|0)+32>>2]=32e3;$W(u+(y*52|0)+36|0,k|0,16)|0;a[z]=x;z=c[t+24>>2]|0;c[u+(y*52|0)+40>>2]=t;c[u+(y*52|0)+44>>2]=t;c[u+(y*52|0)+48>>2]=s;y=z;x=1;u=w}}while(0);t=c[t+32>>2]|0;w=A}}}while(0);s=s+4|0;if(s>>>0>=p>>>0){break a}}if((h|0)==47){i=g;return z|0}c[n>>2]=64;A=64;i=g;return A|0}else{d=d+48+(f*28|0)+8|0}}while(0);k=c[d>>2]|0;A=c[j>>2]|0;h=k+(A*52|0)|0;if((A|0)>0){j=k}else{A=0;i=g;return A|0}while(1){n=c[j+40>>2]|0;l=c[j+44>>2]|0;m=c[n+28>>2]|0;k=c[l+28>>2]|0;do{if((n|0)!=(l|0)){n=c[(c[n+36>>2]|0)+28>>2]|0;if((m|0)<(k|0)){if((n|0)<(m|0)){A=j+8|0;b[A>>1]=(e[A>>1]|0)+((m-n|0)>>>1)}l=c[(c[l+32>>2]|0)+28>>2]|0;if((l|0)<=(k|0)){break}A=j+8|0;b[A>>1]=(e[A>>1]|0)+((l-k|0)>>>1);break}else{if((n|0)>(m|0)){A=j+8|0;b[A>>1]=(e[A>>1]|0)+((n-m|0)>>>1)}l=c[(c[l+32>>2]|0)+28>>2]|0;if((l|0)>=(k|0)){break}A=j+8|0;b[A>>1]=(e[A>>1]|0)+((k-l|0)>>>1);break}}}while(0);j=j+52|0;if(j>>>0>=h>>>0){z=0;break}}i=g;return z|0}function GU(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;l=i;i=i+16|0;k=i;i=i+128|0;j=k;n=i;i=i+832|0;m=n;h=c[e+100>>2]|0;bX(k|0,0,124)|0;c[k>>2]=h;k=d+48|0;c[k>>2]=0;h=d+444|0;c[h>>2]=0;f=KJ(e,f)|0;a:do{if((f|0)!=0){if((YI(e,f,1)|0)!=0){break}f=c[e+84>>2]|0;if((b[f+110>>1]|0)<1){break}bX(n|0,0,832)|0;c[m+36>>2]=c[d+36>>2];c[m+12>>2]=65536;c[m+8>>2]=65536;c[m+20>>2]=0;c[m+16>>2]=0;c[m+4>>2]=e;c[m+24>>2]=0;c[m+28>>2]=0;c[j+112>>2]=m;c[j+104>>2]=0;if((xU(j,f+108|0)|0)!=0){break}e=0;do{if((FU(j,e)|0)!=0){break a}HU(j,e);f=c[j+48+(e*28|0)+8>>2]|0;p=c[j+48+(e*28|0)>>2]|0;n=f+(p*52|0)|0;do{if((p|0)>0){m=0;do{o=c[f+20>>2]|0;do{if((o|0)!=0){if(!((c[o+20>>2]|0)==(f|0)&o>>>0>f>>>0)){break}o=(b[f+2>>1]|0)-(b[o+2>>1]|0)|0;if(m>>>0>=16){break}c[d+40+(e*396|0)+12+(m*12|0)>>2]=(o|0)<0?0-o|0:o;m=m+1|0}}while(0);f=f+52|0;}while(f>>>0>>0);if(m>>>0>1){p=1}else{break}do{o=p;do{f=d+40+(e*396|0)+12+(o*12|0)|0;o=o+ -1|0;n=d+40+(e*396|0)+12+(o*12|0)|0;if((c[f>>2]|0)>(c[n>>2]|0)){break}$W(l|0,f|0,12)|0;$W(f|0,n|0,12)|0;$W(n|0,l|0,12)|0;}while((o|0)!=0);p=p+1|0;}while(p>>>0>>0)}else{m=0}}while(0);c[d+40+(e*396|0)+8>>2]=m;e=e+1|0;}while((e|0)<2)}}while(0);l=d+36|0;if((c[k>>2]|0)==0){k=((c[l>>2]|0)*50|0)/2048|0}else{k=c[d+52>>2]|0}c[d+244>>2]=(k|0)/5|0;c[d+248>>2]=k;a[d+252|0]=0;if((c[h>>2]|0)==0){o=((c[l>>2]|0)*50|0)/2048|0;f=(o|0)/5|0;p=d+640|0;c[p>>2]=f;p=d+644|0;c[p>>2]=o;p=d+648|0;a[p]=0;uU(j);i=g;return}else{o=c[d+448>>2]|0;f=(o|0)/5|0;p=d+640|0;c[p>>2]=f;p=d+644|0;c[p>>2]=o;p=d+648|0;a[p]=0;uU(j);i=g;return}}function HU(d,e){d=d|0;e=e|0;var 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;f=i;h=c[d+48+(e*28|0)+8>>2]|0;l=c[d+48+(e*28|0)>>2]|0;g=h+(l*52|0)|0;k=c[(c[d+112>>2]|0)+36>>2]|0;j=k<<3;j=(j+2047|0)>>>0<4095?1:(j|0)/2048|0;k=(k*6e3|0)/2048|0;l=(l|0)>0;if(!l){i=f;return}n=d+48+(e*28|0)+24|0;o=h;do{p=o+1|0;t=a[p]|0;a:do{if((t<<24>>24|0)==(c[n>>2]|0)){if((c[o+40>>2]|0)==(c[o+44>>2]|0)){break}q=o+2|0;m=o+4|0;e=o+6|0;r=o+32|0;d=o+20|0;s=h;while(1){do{if((t<<24>>24|0)==(0-(a[s+1|0]|0)|0)){u=b[s+2>>1]|0;t=b[q>>1]|0;if(u<<16>>16<=t<<16>>16){break}t=(u<<16>>16)-(t<<16>>16)|0;x=b[m>>1]|0;u=b[e>>1]|0;w=b[s+4>>1]|0;v=b[s+6>>1]|0;u=((u<<16>>16>v<<16>>16?v:u)<<16>>16)-((x<<16>>16>16?w:x)<<16>>16)|0;if((u|0)<(j|0)){break}t=((k|0)/(u|0)|0)+((t|0)<0?0-t|0:t)|0;if((t|0)<(c[r>>2]|0)){c[r>>2]=t;c[d>>2]=s}u=s+32|0;if((t|0)>=(c[u>>2]|0)){break}c[u>>2]=t;c[s+20>>2]=o}}while(0);s=s+52|0;if(s>>>0>=g>>>0){break a}t=a[p]|0}}}while(0);o=o+52|0;}while(o>>>0>>0);if(!l){i=f;return}do{j=h+20|0;k=c[j>>2]|0;do{if((k|0)!=0){k=k+20|0;if((c[k>>2]|0)==(h|0)){break}c[j>>2]=0;c[h+24>>2]=c[k>>2]}}while(0);h=h+52|0;}while(h>>>0>>0);i=f;return}function IU(d,e){d=d|0;e=e|0;var 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,A=0;f=i;k=i;i=i+8|0;j=k;h=FU(d,e)|0;if((h|0)!=0){A=h;i=f;return A|0}HU(d,e);o=d+48+(e*28|0)|0;m=c[d>>2]|0;q=(c[d+112>>2]|0)+40|0;s=c[d+48+(e*28|0)+8>>2]|0;r=c[o>>2]|0;l=s+(r*52|0)|0;h=d+48+(e*28|0)+12|0;c[h>>2]=0;p=(e|0)==0;t=d+12|0;n=c[(p?d+4|0:t)>>2]|0;if(p){p=bJ(64,c[t>>2]|0)|0}else{p=0}q=aJ(c[q+(e*396|0)+204>>2]|0,n)|0;q=bJ((q|0)>16?16:q,n)|0;a:do{if((r|0)>0){r=p*3|0;e=d+48+(e*28|0)+20|0;b:while(1){d=b[s+8>>1]|0;c:do{if((d|0)>=(p|0)){if((c[s+24>>2]|0)!=0){if((d<<1|0)<(r|0)){break}}x=c[h>>2]|0;d:do{if((x|0)>0){v=c[e>>2]|0;t=s+2|0;d=b[t>>1]|0;w=d<<16>>16;u=s+1|0;y=0;while(1){z=v+(y*48|0)|0;A=w-(b[z>>1]|0)|0;if((((A|0)<0?0-A|0:A)|0)<(q|0)){A=a[v+(y*48|0)+13|0]|0;if(A<<24>>24==(a[u]|0)){break}}y=y+1|0;if((y|0)>=(x|0)){g=17;break d}}if((z|0)==0){break}c[s+16>>2]=c[v+(y*48|0)+40>>2];A=v+(y*48|0)+44|0;c[(c[A>>2]|0)+16>>2]=s;c[A>>2]=s;break c}else{u=s+1|0;d=b[s+2>>1]|0;g=17}}while(0);if((g|0)==17){g=0;A=a[u]|0;t=s+2|0}d=EU(o,d<<16>>16,A<<24>>24,m,j)|0;if((d|0)!=0){break b}A=c[k>>2]|0;bX(A|0,0,40)|0;c[A+40>>2]=s;c[A+44>>2]=s;b[A>>1]=b[t>>1]|0;a[A+13|0]=a[s+1|0]|0;z=aJ(b[t>>1]|0,n)|0;c[A+8>>2]=z;c[A+4>>2]=z;c[s+16>>2]=s}}while(0);s=s+52|0;if(s>>>0>=l>>>0){break a}}i=f;return d|0}else{e=d+48+(e*28|0)+20|0}}while(0);l=c[e>>2]|0;A=c[h>>2]|0;h=l+(A*48|0)|0;if((A|0)>0){k=l}else{A=0;i=f;return A|0}do{j=k+40|0;m=c[j>>2]|0;if((m|0)!=0){do{c[m+12>>2]=k;m=c[m+16>>2]|0;}while((m|0)!=(c[j>>2]|0))}k=k+48|0;}while(k>>>0>>0);while(1){j=l+40|0;n=c[j>>2]|0;k=l+24|0;m=l+28|0;o=n;p=0;q=0;do{e=(a[n]&1^1)&255;p=(e^1)+p|0;q=e+q|0;e=n+24|0;r=c[e>>2]|0;do{if((r|0)==0){d=0}else{r=c[r+12>>2]|0;if((r|0)==0){d=0;break}d=(r|0)!=(l|0)|0}}while(0);s=n+20|0;r=c[s>>2]|0;if((r|0)==0){if(d<<24>>24!=0){g=33}}else{if(!((c[r+12>>2]|0)==0&d<<24>>24==0)){g=33}}do{if((g|0)==33){g=0;r=d<<24>>24!=0;e=c[(r?e:s)>>2]|0;t=c[(r?m:k)>>2]|0;do{if((t|0)==0){t=c[e+12>>2]|0}else{s=(b[l>>1]|0)-(b[t>>1]|0)|0;d=(b[n+2>>1]|0)-(b[e+2>>1]|0)|0;if((((d|0)<0?0-d|0:d)|0)>=(((s|0)<0?0-s|0:s)|0)){break}t=c[e+12>>2]|0}}while(0);if(r){c[m>>2]=t;o=t+12|0;a[o]=a[o]|2;o=c[j>>2]|0;break}else{c[k>>2]=t;break}}}while(0);n=c[n+16>>2]|0;}while((n|0)!=(o|0));a[l+12|0]=((p|0)<1|(p|0)<(q|0))&1^1;do{if((c[m>>2]|0)!=0){if((c[k>>2]|0)==0){break}c[m>>2]=0}}while(0);l=l+48|0;if(l>>>0>=h>>>0){d=0;break}}i=f;return d|0}function JU(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;m=d+40|0;l=(e|0)==1;if((b&4|0)==0){r=f;i=j;return r|0}if((a[m+(e*396|0)+212|0]|0)!=0){r=f;i=j;return r|0}d=(f|0)<0?0-f|0:f;do{if(l){if((b&2|0)!=0){k=19;break}if(!(l&(h&2|0)!=0&(d|0)<192)){k=7}}else{if((b&1|0)==0){k=7}else{k=19}}}while(0);do{if((k|0)==7){if((g&1|0)==0){d=(d|0)<56?56:d}else{d=(d|0)<80?64:d}if((c[m+(e*396|0)+8>>2]|0)==0){break}k=c[m+(e*396|0)+16>>2]|0;b=d-k|0;if((((b|0)<0?0-b|0:b)|0)<40){d=(k|0)<48?48:k;break}if((d|0)>=192){d=d+32&-64;break}b=d&63;k=d&-64;if(b>>>0<10){break}if(b>>>0<32){d=k|10;break}else{d=b>>>0<54?k|54:d;break}}else if((k|0)==19){h=c[m+(e*396|0)+8>>2]|0;do{if((h|0)>0){g=98;o=0;p=d;while(1){r=c[m+(e*396|0)+12+(o*12|0)+4>>2]|0;n=d-r|0;q=(n|0)<0?0-n|0:n;n=(q|0)<(g|0);p=n?r:p;o=o+1|0;if((o|0)<(h|0)){g=n?q:g}else{break}}e=p+32&-64;if((p|0)<=(d|0)){k=23;break}e=(e+ -48|0)<(d|0)?p:d}else{e=d+32&-64;p=d;k=23}}while(0);if((k|0)==23){e=(e|48|0)>(d|0)?p:d}if(l){if((e|0)<=63){d=64;break}d=e+16&-64;break}if((b&8|0)!=0){if((e|0)<64){d=64;break}d=e+32&-64;break}if((e|0)<48){d=e+64>>1;break}if((e|0)>=128){d=e+32&-64;break}k=e+22&-64;b=k-d|0;if((((b|0)<0?0-b|0:b)|0)<=15){d=k;break}if((d|0)>=48){break}d=d+64>>1}}while(0);r=(f|0)>-1?d:0-d|0;i=j;return r|0}function KU(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;k=(e|0)==0;if(k){g=d+12|0;h=d+4|0}else{g=d+16|0;h=d+8|0}j=c[h>>2]|0;g=c[g>>2]|0;l=b+40+(e*396|0)+388|0;h=b+40+(e*396|0)+392|0;do{if((c[l>>2]|0)==(j|0)){if((c[h>>2]|0)!=(g|0)){break}i=f;return}}while(0);c[l>>2]=j;c[h>>2]=g;h=b+652|0;l=c[h>>2]|0;a:do{if((l|0)!=0){n=0;while(1){m=n+1|0;if((c[b+656+(n*28|0)+24>>2]&4|0)!=0){break}if(m>>>0>>0){n=m}else{break a}}l=aJ(c[b+656+(n*28|0)+12>>2]|0,c[d+8>>2]|0)|0;d=l+40&-64;if(!((l|0)!=(d|0)&(e|0)==1)){break}j=_I(j,d,l)|0}}while(0);c[b+40+(e*396|0)>>2]=j;c[b+40+(e*396|0)+4>>2]=g;if(k){c[b+8>>2]=j;c[b+16>>2]=g}else{c[b+12>>2]=j;c[b+20>>2]=g}k=b+40+(e*396|0)+8|0;if((c[k>>2]|0)!=0){d=0;do{o=aJ(c[b+40+(e*396|0)+12+(d*12|0)>>2]|0,j)|0;c[b+40+(e*396|0)+12+(d*12|0)+4>>2]=o;c[b+40+(e*396|0)+12+(d*12|0)+8>>2]=o;d=d+1|0;}while(d>>>0<(c[k>>2]|0)>>>0)}a[b+40+(e*396|0)+212|0]=(aJ(c[b+40+(e*396|0)+208>>2]|0,j)|0)<40|0;if((e|0)!=1){i=f;return}if((c[h>>2]|0)==0){i=f;return}else{d=0}do{o=b+656+(d*28|0)|0;n=(aJ(c[o>>2]|0,j)|0)+g|0;l=b+656+(d*28|0)+4|0;c[l>>2]=n;e=b+656+(d*28|0)+8|0;c[e>>2]=n;n=b+656+(d*28|0)+12|0;m=(aJ(c[n>>2]|0,j)|0)+g|0;c[b+656+(d*28|0)+16>>2]=m;k=b+656+(d*28|0)+20|0;c[k>>2]=m;m=b+656+(d*28|0)+24|0;c[m>>2]=c[m>>2]&-2;if(((aJ((c[o>>2]|0)-(c[n>>2]|0)|0,j)|0)+48|0)>>>0<97){o=(c[n>>2]|0)-(c[o>>2]|0)|0;n=(o|0)<0;o=aJ(n?0-o|0:o,j)|0;do{if((o|0)<32){o=0}else{if((o|0)<64){o=o+16&-32;break}else{o=o+32&-64;break}}}while(0);l=(c[l>>2]|0)+32&-64;c[e>>2]=l;c[k>>2]=l+(n?0-o|0:o);c[m>>2]=c[m>>2]|1}d=d+1|0;}while(d>>>0<(c[h>>2]|0)>>>0);i=f;return}function LU(a,b){a=a|0;b=b|0;b=c[a>>2]|0;c[a+16>>2]=c[(c[b+140>>2]|0)+52>>2];c[a+20>>2]=c[b+144>>2];i=i;return 0}function MU(a){a=a|0;c[a+20>>2]=0;c[a+16>>2]=0;i=i;return}function NU(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0;f=i;g=c[a+20>>2]|0;a=c[a+16>>2]|0;if((a|0)==0){k=0;i=f;return k|0}else{j=0}while(1){h=(j+a|0)>>>1;k=c[g+(h<<3)>>2]|0;if((k|0)==(b|0)){break}k=k>>>0>b>>>0;a=k?h:a;j=k?j:h+1|0;if(j>>>0>=a>>>0){g=0;d=5;break}}if((d|0)==5){i=f;return g|0}k=(e[g+(h<<3)+4>>1]|0)+1&65535;i=f;return k|0}function OU(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;g=c[a+20>>2]|0;h=(c[d>>2]|0)+1|0;a=c[a+16>>2]|0;a:do{if((a|0)==0){k=0;e=5}else{l=a;k=0;while(1){j=(k+l|0)>>>1;m=c[g+(j<<3)>>2]|0;if((h|0)==(m|0)){break}m=h>>>0>>0;l=m?j:l;k=m?k:j+1|0;if(k>>>0>=l>>>0){e=5;break a}}g=(b[g+(j<<3)+4>>1]|0)+1<<16>>16}}while(0);do{if((e|0)==5){if(k>>>0>=a>>>0){h=0;g=0;break}h=c[g+(k<<3)>>2]|0;g=(b[g+(k<<3)+4>>1]|0)+1<<16>>16}}while(0);c[d>>2]=h;i=f;return g&65535|0}function PU(a,b){a=a|0;b=b|0;var c=0;c=i;a=uJ(286872,b)|0;i=c;return a|0}function QU(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,O=0,P=0,Q=0;j=i;r=i;i=i+8|0;s=r;D=i;i=i+8|0;C=D;A=i;i=i+8|0;B=A;t=i;i=i+8|0;q=t;g=i;i=i+8|0;m=g;v=i;i=i+16|0;w=v;k=i;i=i+16|0;h=k;n=i;i=i+16|0;o=n;c[g>>2]=0;u=f+100|0;l=c[u>>2]|0;x=PJ(d,0)|0;c[g>>2]=x;if((x|0)!=0){Q=x;i=j;return Q|0}c[v>>2]=1;c[w+4>>2]=1;c[w+8>>2]=0;c[w+12>>2]=8;c[t>>2]=0;v=jJ(l,8252,q)|0;a:do{if((c[t>>2]|0)==0){z=v+36|0;c[z>>2]=w;y=v+12|0;b[y>>1]=32767;c[v+8248>>2]=l;w=v+8232|0;bX(w|0,0,12)|0;x=v+8244|0;c[x>>2]=l;E=c[d+28>>2]|0;c[A>>2]=0;I=oJ(E,1,0,1024,0,B)|0;b:do{if((c[A>>2]|0)==0){c[D>>2]=40;a[I]=0;K=0;H=1024;L=0;M=0;F=1;N=0;J=0;G=256;c:while(1){d:while(1){e:do{if((J|0)==0){J=K;p=7}else{if(!N){L=KK(d,I+M|0,H-M|0)|0;K=L+M|0;M=0}f:do{if((J|0)<(K|0)){O=a[I+J|0]|0;if((O<<24>>24|0)==(G|0)){break e}else{N=J}while(1){if(O<<24>>24==10|O<<24>>24==13){G=O;break d}N=N+1|0;if((N|0)>=(K|0)){break f}O=a[I+N|0]|0}}}while(0);if((L|0)==0){break b}M=K-J|0;$W(I|0,I+J|0,M|0)|0;L=M;N=0;p=7}}while(0);g:do{if((p|0)==7){while(1){p=0;if(!N){L=KK(d,I+M|0,H-M|0)|0;J=L+M|0;M=0}h:do{if((J|0)>0){K=a[I]|0;if((K<<24>>24|0)==(G|0)){K=J;J=0;break g}else{N=0}while(1){if(K<<24>>24==10|K<<24>>24==13){G=K;K=J;J=0;break d}N=N+1|0;if((N|0)>=(J|0)){break h}K=a[I+N|0]|0}}}while(0);if((L|0)==0){break b}if(H>>>0>65535){break c}p=H<<1;I=oJ(E,1,H,p,I,B)|0;if((c[A>>2]|0)==0){M=H;H=p;N=0;p=7}else{break b}}}}while(0);N=1;J=J+1|0;G=256}O=I+N|0;a[O]=0;P=I+J|0;Q=a[P]|0;do{if(!(Q<<24>>24==26|Q<<24>>24==35)){if((N|0)<=(J|0)){break}Q=N-J|0;J=Cd[c[D>>2]&63](P,Q,F,C,v)|0;c[A>>2]=J;if((J|0)==-1){J=Cd[c[D>>2]&63](P,Q,F,C,v)|0;c[A>>2]=J}if((J|0)!=0){break b}}}while(0);F=F+1|0;a[O]=G;J=N+1|0;if(G<<24>>24==10){N=1;G=13;continue}else if(G<<24>>24==13){N=1;G=10;continue}else{N=1;G=256;continue}}c[A>>2]=6}}while(0);lJ(E,I);Q=c[A>>2]|0;c[t>>2]=Q;p=v+32|0;i:do{if((Q|0)==0){d=c[p>>2]|0;do{if((d|0)!=0){if((c[d+28>>2]|0)!=8){b[d+32>>1]=b[d+4>>1]|0;d=c[p>>2]|0}if((c[v+4>>2]|0)!=((c[d+64>>2]|0)+(c[d+52>>2]|0)|0)){b[d+16516>>1]=1}if((c[c[z>>2]>>2]|0)==0){break}d=c[p>>2]|0;if((c[d+52>>2]|0)==0){if((c[d+64>>2]|0)==0){break}}z=b[y>>1]|0;B=(b[v+16>>1]|0)-(z<<16>>16)|0;A=d+4|0;if((B|0)!=(e[A>>1]|0)){b[A>>1]=B;b[(c[p>>2]|0)+16516>>1]=1;z=b[y>>1]|0;d=c[p>>2]|0}y=d+8|0;if((b[y>>1]|0)!=z<<16>>16){b[y>>1]=z;b[(c[p>>2]|0)+16516>>1]=1;d=c[p>>2]|0}A=d+12|0;y=v+18|0;z=b[y>>1]|0;if((b[A>>1]|0)==z<<16>>16){C=d}else{b[A>>1]=z;b[(c[p>>2]|0)+16516>>1]=1;C=c[p>>2]|0}B=C+14|0;z=b[B>>1]|0;d=v+20|0;A=b[d>>1]|0;if(z<<16>>16==A<<16>>16){A=C}else{b[B>>1]=A;b[(c[p>>2]|0)+10>>1]=0-(b[d>>1]|0)<<16>>16;b[(c[p>>2]|0)+16516>>1]=1;A=c[p>>2]|0;z=b[d>>1]|0}y=(b[y>>1]|0)+(z<<16>>16)|0;d=A+6|0;if((y|0)==(e[d>>1]|0)){break}b[d>>1]=y}}while(0);y=c[v>>2]|0;if((y&1|0)!=0){if((y&32|0)==0){c[t>>2]=185;p=66;break a}else{c[t>>2]=186;p=66;break a}}y=c[p>>2]|0;do{if((y|0)==0){if((c[t>>2]|0)!=0){break}c[t>>2]=3}else{d=c[y+88>>2]|0;if((d|0)==0){break}Q=oJ(c[y+16520>>2]|0,1,d,d+1|0,c[y+84>>2]|0,q)|0;c[(c[p>>2]|0)+84>>2]=Q;if((c[t>>2]|0)!=0){break i}Q=c[p>>2]|0;a[(c[Q+84>>2]|0)+(c[Q+88>>2]|0)|0]=0}}while(0);q=c[p>>2]|0;p=68;break a}}while(0);VU(c[p>>2]|0);lJ(l,c[p>>2]|0);c[p>>2]=0;p=66}else{p=66}}while(0);do{if((p|0)==66){if((v|0)==0){q=0;break}q=0;x=v+8244|0;w=v+8232|0;p=68}}while(0);if((p|0)==68){x=c[x>>2]|0;if((x|0)!=0){lJ(x,c[w>>2]|0);bX(w|0,0,16)|0}lJ(l,v)}t=c[t>>2]|0;c[g>>2]=t;if((t|0)==176){RU(f);Q=2;i=j;return Q|0}else if((t|0)==0){v=f+140|0;c[v>>2]=q;c[f>>2]=1;c[f+4>>2]=0;x=f+8|0;c[x>>2]=146;t=(q|0)==0;j:do{if(t){p=97}else{w=q+72|0;if((c[w>>2]|0)==0){p=97;break}d=c[q+128>>2]|0;y=c[d+12>>2]|0;d=c[d+4>>2]|0;A=y+((3000791075%(d>>>0)|0)<<2)|0;z=c[A>>2]|0;k:do{if((z|0)!=0){d=y+(d+ -1<<2)|0;while(1){B=c[z>>2]|0;if((a[B]|0)==83){if((Qc(B|0,283576)|0)==0){break}}z=A+ -4|0;A=z>>>0>>0?d:z;z=c[A>>2]|0;if((z|0)==0){break k}}if((z|0)==0){break}y=c[q+80>>2]|0;d=c[z+4>>2]|0;if((y+(d<<4)|0)==0){break}if((c[y+(d<<4)+4>>2]|0)!=1){break}y=c[y+(d<<4)+12>>2]|0;if((y|0)==0){break}Q=a[y]|0;if(!(Q<<24>>24==99|Q<<24>>24==67|Q<<24>>24==109|Q<<24>>24==77)){break}c[x>>2]=150}}while(0);if((c[w>>2]|0)==0){p=97;break}x=c[q+128>>2]|0;w=c[x+12>>2]|0;x=c[x+4>>2]|0;d=w+((1183963782%(x>>>0)|0)<<2)|0;y=c[d>>2]|0;if((y|0)==0){p=97;break}x=w+(x+ -1<<2)|0;while(1){z=c[y>>2]|0;if((a[z]|0)==70){if((Qc(z|0,283584)|0)==0){break}}y=d+ -4|0;d=y>>>0>>0?x:y;y=c[d>>2]|0;if((y|0)==0){p=97;break j}}if((y|0)==0){p=97;break}w=c[q+80>>2]|0;x=c[y+4>>2]|0;if((w+(x<<4)|0)==0){p=97;break}w=c[w+(x<<4)+12>>2]|0;if((w|0)==0){p=97;break}c[f+20>>2]=aL(l,w,m)|0;w=c[g>>2]|0;if((w|0)==0){v=c[v>>2]|0;break}else{Q=w;i=j;return Q|0}}}while(0);if((p|0)==97){c[f+20>>2]=0;v=q}c[r>>2]=0;u=c[u>>2]|0;d=f+12|0;c[d>>2]=0;do{if((v|0)==0){v=1;x=0;z=1;E=0;F=0;d=0;w=0;y=0;B=0;C=1;A=0;D=0}else{y=v+72|0;if((c[y>>2]|0)==0){v=1;x=0;z=1;E=0;F=0;d=0;w=0;y=0;B=0;C=1;A=0;D=0;break}x=v+128|0;z=c[x>>2]|0;w=c[z+12>>2]|0;z=c[z+4>>2]|0;B=w+((78981326%(z>>>0)|0)<<2)|0;A=c[B>>2]|0;l:do{if((A|0)==0){A=2;w=0}else{z=w+(z+ -1<<2)|0;while(1){C=c[A>>2]|0;if((a[C]|0)==83){if((Qc(C|0,283752)|0)==0){break}}A=B+ -4|0;B=A>>>0>>0?z:A;A=c[B>>2]|0;if((A|0)==0){A=2;w=0;break l}}if((A|0)==0){A=2;w=0;break}w=c[v+80>>2]|0;z=c[A+4>>2]|0;if((w+(z<<4)|0)==0){A=2;w=0;break}if((c[w+(z<<4)+4>>2]|0)!=1){A=2;w=0;break}w=w+(z<<4)+12|0;z=c[w>>2]|0;if((z|0)==0){A=2;w=0;break}Q=a[z]|0;if(!(Q<<24>>24==105|Q<<24>>24==73|Q<<24>>24==111|Q<<24>>24==79)){A=2;w=0;break}c[d>>2]=1;w=a[c[w>>2]|0]|0;if(w<<24>>24==79){A=3;w=283760;break}A=3;w=w<<24>>24==111?283760:283768}}while(0);z=c[y>>2]|0;do{if((z|0)==0){z=1;E=0;F=0;d=0;y=0;B=0;D=0}else{C=c[x>>2]|0;B=c[C+12>>2]|0;C=c[C+4>>2]|0;E=B+((4260511730%(C>>>0)|0)<<2)|0;D=c[E>>2]|0;if((D|0)==0){y=0;p=125}else{C=B+(C+ -1<<2)|0;while(1){F=c[D>>2]|0;if((a[F]|0)==87){if((Qc(F|0,283776)|0)==0){p=118;break}}D=E+ -4|0;E=D>>>0>>0?C:D;D=c[E>>2]|0;if((D|0)==0){d=0;break}}do{if((p|0)==118){if((D|0)==0){d=0;break}B=c[v+80>>2]|0;C=c[D+4>>2]|0;if((B+(C<<4)|0)==0){d=0;break}if((c[B+(C<<4)+4>>2]|0)!=1){d=0;break}B=c[B+(C<<4)+12>>2]|0;if((B|0)==0){d=0;break}Q=a[B]|0;if(!(Q<<24>>24==98|Q<<24>>24==66)){d=0;break}c[d>>2]=A;d=283792;z=c[y>>2]|0}}while(0);if((z|0)==0){y=d;d=0;F=0;E=0;D=0}else{y=d;p=125}}m:do{if((p|0)==125){z=c[x>>2]|0;x=c[z+12>>2]|0;z=c[z+4>>2]|0;B=x+((41411398%(z>>>0)|0)<<2)|0;A=c[B>>2]|0;n:do{if((A|0)==0){d=0}else{d=x+(z+ -1<<2)|0;do{C=c[A>>2]|0;if((a[C]|0)==83){if((Qc(C|0,283800)|0)==0){p=130;break}}A=B+ -4|0;B=A>>>0>>0?d:A;A=c[B>>2]|0;}while((A|0)!=0);do{if((p|0)==130){if((A|0)==0){break}d=c[v+80>>2]|0;A=c[A+4>>2]|0;if((d+(A<<4)|0)==0){break}if((c[d+(A<<4)+4>>2]|0)!=1){break}d=c[d+(A<<4)+12>>2]|0;if((d|0)==0){break}Q=a[d]|0;if(!(Q<<24>>24==110|Q<<24>>24==78|Q<<24>>24==0)){break n}}}while(0);d=0}}while(0);B=x+((657458935%(z>>>0)|0)<<2)|0;A=c[B>>2]|0;if((A|0)==0){F=0;E=0;D=0;break}z=x+(z+ -1<<2)|0;while(1){C=c[A>>2]|0;if((a[C]|0)==65){if((Qc(C|0,283816)|0)==0){break}}A=B+ -4|0;B=A>>>0>>0?z:A;A=c[B>>2]|0;if((A|0)==0){F=0;E=0;D=0;break m}}if((A|0)==0){F=0;E=0;D=0;break}v=c[v+80>>2]|0;x=c[A+4>>2]|0;if((v+(x<<4)|0)==0){F=0;E=0;D=0;break}if((c[v+(x<<4)+4>>2]|0)!=1){F=0;E=0;D=0;break}F=c[v+(x<<4)+12>>2]|0;if((F|0)==0){F=0;E=0;D=0;break}Q=a[F]|0;if(Q<<24>>24==110|Q<<24>>24==78|Q<<24>>24==0){F=0;E=0;D=0;break}D=ZW(F|0)|0;E=D;D=D+1|0}}while(0);if((y|0)==0){z=1;y=0;B=0;break}Q=ZW(y|0)|0;z=0;B=Q;D=D+1+Q|0}}while(0);if((w|0)==0){C=1;w=0;x=0}else{Q=ZW(w|0)|0;C=0;x=Q;D=D+1+Q|0}if((d|0)==0){v=1;d=0;A=0;break}Q=ZW(d|0)|0;v=0;A=Q;D=D+1+Q|0}}while(0);G=(D|0)==0;E=G?7:E;F=G?283832:F;u=jJ(u,G?8:D,s)|0;s=f+24|0;c[s>>2]=u;D=c[r>>2]|0;if((D|0)!=0){c[g>>2]=D;Q=D;i=j;return Q|0}if((F|0)!=0){$W(u|0,F|0,E|0)|0;if((E|0)!=0){F=0;do{D=u+F|0;if((a[D]|0)==32){a[D]=45}F=F+1|0;}while(F>>>0>>0)}u=u+E|0}if(!z){if((u|0)!=(c[s>>2]|0)){a[u]=32;u=u+1|0}$W(u|0,y|0,B|0)|0;u=u+B|0}if(!C){if((u|0)!=(c[s>>2]|0)){a[u]=32;u=u+1|0}$W(u|0,w|0,x|0)|0;u=u+x|0}if(!v){if((u|0)!=(c[s>>2]|0)){a[u]=32;u=u+1|0}$W(u|0,d|0,A|0)|0;if((A|0)!=0){s=0;do{v=u+s|0;if((a[v]|0)==32){a[v]=45}s=s+1|0;}while(s>>>0>>0)}u=u+A|0}a[u]=0;r=c[r>>2]|0;c[g>>2]=r;if((r|0)!=0){Q=r;i=j;return Q|0}r=q+48|0;c[f+16>>2]=(c[r>>2]|0)+1;c[f+28>>2]=1;s=oJ(l,16,0,1,0,m)|0;c[f+32>>2]=s;u=c[g>>2]|0;if((u|0)!=0){Q=u;i=j;return Q|0}bX(s|0,0,16)|0;u=(c[q+44>>2]|0)+(c[q+40>>2]|0)&65535;b[s>>1]=u;o:do{if(t){p=189}else{if((c[q+72>>2]|0)==0){p=189;break}w=c[q+128>>2]|0;v=c[w+12>>2]|0;w=c[w+4>>2]|0;y=v+((3825651940%(w>>>0)|0)<<2)|0;x=c[y>>2]|0;if((x|0)==0){p=189;break}w=v+(w+ -1<<2)|0;while(1){d=c[x>>2]|0;if((a[d]|0)==65){if((Qc(d|0,283600)|0)==0){break}}x=y+ -4|0;y=x>>>0>>0?w:x;x=c[y>>2]|0;if((x|0)==0){p=189;break o}}if((x|0)==0){p=189;break}v=c[q+80>>2]|0;w=c[x+4>>2]|0;if((v+(w<<4)|0)==0){p=189;break}u=(((c[v+(w<<4)+12>>2]|0)+5|0)/10|0)&65535;b[s+2>>1]=u}}while(0);if((p|0)==189){u=((u<<16>>16<<1|0)/3|0)&65535;b[s+2>>1]=u}p:do{if(t){p=200}else{if((c[q+72>>2]|0)==0){p=200;break}w=c[q+128>>2]|0;v=c[w+12>>2]|0;w=c[w+4>>2]|0;y=v+((1780881776%(w>>>0)|0)<<2)|0;x=c[y>>2]|0;if((x|0)==0){p=200;break}w=v+(w+ -1<<2)|0;while(1){d=c[x>>2]|0;if((a[d]|0)==80){if((Qc(d|0,283616)|0)==0){break}}x=y+ -4|0;y=x>>>0>>0?w:x;x=c[y>>2]|0;if((x|0)==0){p=200;break p}}if((x|0)==0){p=200;break}v=c[q+80>>2]|0;w=c[x+4>>2]|0;if((v+(w<<4)|0)==0){p=200;break}u=(((c[v+(w<<4)+12>>2]|0)*460800|0)+36135|0)/72270|0;c[s+4>>2]=u}}while(0);if((p|0)==200){u=u<<16>>16<<6;c[s+4>>2]=u}do{if(t){c[s+12>>2]=u;p=236}else{w=q+72|0;if((c[w>>2]|0)==0){c[s+12>>2]=u;p=236;break}x=c[q+128>>2]|0;v=c[x+12>>2]|0;x=c[x+4>>2]|0;d=v+((486426170%(x>>>0)|0)<<2)|0;y=c[d>>2]|0;q:do{if((y|0)==0){v=0}else{x=v+(x+ -1<<2)|0;while(1){z=c[y>>2]|0;if((a[z]|0)==80){if((Qc(z|0,283632)|0)==0){break}}y=d+ -4|0;d=y>>>0>>0?x:y;y=c[d>>2]|0;if((y|0)==0){v=0;break q}}if((y|0)==0){v=0;break}v=c[q+80>>2]|0;x=c[y+4>>2]|0;if((v+(x<<4)|0)==0){v=0;break}v=c[v+(x<<4)+12>>2]<<16>>10;c[s+12>>2]=v}}while(0);w=(c[w>>2]|0)==0;r:do{if(w){w=0;x=0}else{y=c[q+128>>2]|0;x=c[y+12>>2]|0;y=c[y+4>>2]|0;z=x+((2286220677%(y>>>0)|0)<<2)|0;d=c[z>>2]|0;s:do{if((d|0)==0){w=0}else{y=x+(y+ -1<<2)|0;do{A=c[d>>2]|0;if((a[A]|0)==82){if((Qc(A|0,283648)|0)==0){p=219;break}}d=z+ -4|0;z=d>>>0>>0?y:d;d=c[z>>2]|0;}while((d|0)!=0);do{if((p|0)==219){if((d|0)==0){break}x=c[q+80>>2]|0;y=c[d+4>>2]|0;if((x+(y<<4)|0)==0){break}x=c[x+(y<<4)+12>>2]<<16>>16;if(w){w=x;x=0;break r}else{w=x;break s}}}while(0);if(w){w=0;x=0;break r}else{w=0}}}while(0);y=c[q+128>>2]|0;x=c[y+12>>2]|0;y=c[y+4>>2]|0;z=x+((2286220678%(y>>>0)|0)<<2)|0;d=c[z>>2]|0;if((d|0)==0){x=0;break}y=x+(y+ -1<<2)|0;while(1){A=c[d>>2]|0;if((a[A]|0)==82){if((Qc(A|0,283664)|0)==0){break}}d=z+ -4|0;z=d>>>0>>0?y:d;d=c[z>>2]|0;if((d|0)==0){x=0;break r}}if((d|0)==0){x=0;break}x=c[q+80>>2]|0;y=c[d+4>>2]|0;if((x+(y<<4)|0)==0){x=0;break}x=c[x+(y<<4)+12>>2]&65535}}while(0);y=s+12|0;if((v|0)==0){c[y>>2]=u;if(x<<16>>16==0){p=236;break}u=(da(u,x<<16>>16)|0)/72|0;c[y>>2]=u}else{u=v}if((w|0)==0|x<<16>>16==0){p=236;break}c[s+8>>2]=(da(u,w)|0)/(x<<16>>16|0)|0}}while(0);if((p|0)==236){c[s+8>>2]=u}s=c[q+56>>2]|0;x=oJ(l,8,0,c[r>>2]|0,0,m)|0;u=f+144|0;c[u>>2]=x;v=c[g>>2]|0;if((v|0)!=0){Q=v;i=j;return Q|0}w=f+164|0;c[w>>2]=0;t:do{if((c[r>>2]|0)!=0){v=q+36|0;y=0;while(1){Q=s+(y*36|0)+4|0;c[x+(y<<3)>>2]=c[Q>>2];b[(c[u>>2]|0)+(y<<3)+4>>1]=y;if((c[Q>>2]|0)==(c[v>>2]|0)){c[w>>2]=y}y=y+1|0;if(y>>>0>=(c[r>>2]|0)>>>0){break t}x=c[u>>2]|0}}}while(0);u:do{if(!t){s=(c[q+72>>2]|0)==0;if(s){break}t=c[q+128>>2]|0;r=c[t+12>>2]|0;t=c[t+4>>2]|0;v=r+((3781719536%(t>>>0)|0)<<2)|0;u=c[v>>2]|0;if((u|0)==0){r=0}else{t=r+(t+ -1<<2)|0;while(1){w=c[u>>2]|0;if((a[w]|0)==67){if((Qc(w|0,283680)|0)==0){p=251;break}}u=v+ -4|0;v=u>>>0>>0?t:u;u=c[v>>2]|0;if((u|0)==0){r=0;break}}do{if((p|0)==251){if((u|0)==0){r=0;break}r=(c[q+80>>2]|0)+(c[u+4>>2]<<4)|0}}while(0);if(s){break}}t=c[q+128>>2]|0;s=c[t+12>>2]|0;t=c[t+4>>2]|0;v=s+((1888187142%(t>>>0)|0)<<2)|0;u=c[v>>2]|0;if((u|0)==0){break}t=s+(t+ -1<<2)|0;while(1){w=c[u>>2]|0;if((a[w]|0)==67){if((Qc(w|0,283704)|0)==0){break}}u=v+ -4|0;v=u>>>0>>0?t:u;u=c[v>>2]|0;if((u|0)==0){break u}}if((u|0)==0){break}s=c[q+80>>2]|0;t=c[u+4>>2]|0;if((r|0)==0|(s+(t<<4)|0)==0){break}if((c[r+4>>2]|0)!=1){break}if((c[s+(t<<4)+4>>2]|0)!=1){break}q=r+12|0;if((c[q>>2]|0)==0){break}r=c[s+(t<<4)+12>>2]|0;if((r|0)==0){break}n=f+132|0;c[n>>2]=aL(l,r,m)|0;o=c[g>>2]|0;if((o|0)!=0){Q=o;i=j;return Q|0}m=aL(l,c[q>>2]|0,m)|0;c[f+136>>2]=m;l=c[g>>2]|0;if((l|0)!=0){Q=l;i=j;return Q|0}Q=a[m]|0;do{if(Q<<24>>24==73|Q<<24>>24==105){Q=a[m+1|0]|0;if(!(Q<<24>>24==83|Q<<24>>24==115)){p=273;break}Q=a[m+2|0]|0;if(!(Q<<24>>24==79|Q<<24>>24==111)){p=273;break}l=m+3|0;if((Qc(l|0,283728)|0)!=0){if((Qc(l|0,283736)|0)!=0){p=273;break}if((Qc(c[n>>2]|0,283744)|0)!=0){p=273;break}}c[k>>2]=f;Q=h+4|0;P=Q;c[P>>2]=0;c[P+4>>2]=0;c[Q>>2]=1970170211;b[h+8>>1]=3;b[h+10>>1]=1}else{p=273}}while(0);if((p|0)==273){c[k>>2]=f;Q=h+4|0;c[Q>>2]=0;c[Q+4>>2]=0}Q=eK(283424,0,h,0)|0;c[g>>2]=Q;i=j;return Q|0}}while(0);c[n>>2]=f;c[o+4>>2]=1094995778;b[o+8>>1]=7;b[o+10>>1]=0;h=eK(283424,0,o,0)|0;c[g>>2]=h;if((c[f+36>>2]|0)==0){Q=h;i=j;return Q|0}c[f+92>>2]=c[c[f+40>>2]>>2];Q=h;i=j;return Q|0}else{Q=t;i=j;return Q|0}return 0}function RU(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((a|0)==0){i=b;return}e=c[a+100>>2]|0;d=a+140|0;VU(c[d>>2]|0);f=a+144|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=a+132|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=a+136|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=a+20|0;lJ(e,c[f>>2]|0);c[f>>2]=0;f=a+24|0;lJ(e,c[f>>2]|0);c[f>>2]=0;a=a+32|0;lJ(e,c[a>>2]|0);c[a>>2]=0;lJ(e,c[d>>2]|0);c[d>>2]=0;i=b;return}function SU(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;l=c[f>>2]|0;f=l+140|0;k=c[f>>2]|0;j=e[k+16518>>1]|0;if((l|0)==0){n=6;i=h;return n|0}if((c[l+16>>2]|0)>>>0<=g>>>0){n=6;i=h;return n|0}if((g|0)==0){n=c[l+164>>2]|0}else{n=g+ -1|0}r=c[k+56>>2]|0;k=b[r+(n*36|0)+10>>1]|0;q=b[r+(n*36|0)+12>>1]|0;m=b[r+(n*36|0)+16>>1]|0;g=b[r+(n*36|0)+20>>1]|0;o=c[r+(n*36|0)+24>>2]|0;p=c[r+(n*36|0)+28>>2]|0;l=d+76|0;c[l>>2]=e[r+(n*36|0)+14>>1]|0;n=d+80|0;c[n>>2]=q&65535;c[d+84>>2]=p;BJ(d,o);if((j|0)==4){a[d+94|0]=4}else if((j|0)==2){a[d+94|0]=3}else if((j|0)==8){a[d+94|0]=2;b[d+92>>1]=256}else if((j|0)==1){a[d+94|0]=1}c[d+72>>2]=1651078259;p=m<<16>>16;c[d+100>>2]=p;q=g<<16>>16;c[d+104>>2]=q;r=d+24|0;c[d+40>>2]=(k&65535)<<6;c[d+32>>2]=p<<6;c[d+36>>2]=q<<6;c[r>>2]=c[n>>2]<<6;c[d+28>>2]=c[l>>2]<<6;XJ(r,(e[(c[f>>2]|0)+6>>1]|0)<<6);r=0;i=h;return r|0}function TU(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0;g=i;d=c[a>>2]|0;f=c[d+140>>2]|0;h=c[b+16>>2]|0;j=c[b+8>>2]|0;if((h|0)!=0){j=((da(j,h)|0)+36|0)/72|0}h=j+32>>6;b=c[b>>2]|0;if((b|0)==0){b=(c[(c[d+32>>2]|0)+12>>2]|0)+32>>6}else if((b|0)==1){b=(c[f+44>>2]|0)+(c[f+40>>2]|0)|0}else{j=7;i=g;return j|0}b=(h|0)==(b|0);if(!b){j=b?0:23;i=g;return j|0}YJ(d,0);c[a+24>>2]=c[f+40>>2]<<6;c[a+28>>2]=0-(c[f+44>>2]|0)<<6;c[a+36>>2]=(e[f+4>>1]|0)<<6;j=0;i=g;return j|0}function UU(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=i;g=c[a>>2]|0;f=c[g+140>>2]|0;YJ(g,b);c[a+24>>2]=c[f+40>>2]<<6;c[a+28>>2]=0-(c[f+44>>2]|0)<<6;c[a+36>>2]=(e[f+4>>1]|0)<<6;i=d;return 0}function VU(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;if((a|0)==0){i=d;return}b=c[a+16520>>2]|0;lJ(b,c[a>>2]|0);c[a>>2]=0;f=a+128|0;g=c[f>>2]|0;if((g|0)!=0){e=c[g+4>>2]|0;g=g+12|0;if((e|0)>0){h=c[g>>2]|0;j=0;while(1){lJ(b,c[h>>2]|0);c[h>>2]=0;j=j+1|0;if((j|0)<(e|0)){h=h+4|0}else{break}}}lJ(b,c[g>>2]|0);c[g>>2]=0;lJ(b,c[f>>2]|0);c[f>>2]=0}f=a+84|0;lJ(b,c[f>>2]|0);c[f>>2]=0;f=a+72|0;g=c[f>>2]|0;e=a+80|0;j=c[e>>2]|0;if((g|0)!=0){h=0;do{if((c[j+(h<<4)+4>>2]|0)==1){lJ(b,c[j+(h<<4)+12>>2]|0);c[(c[e>>2]|0)+(h<<4)+12>>2]=0;j=c[e>>2]|0;g=c[f>>2]|0}h=h+1|0;}while(h>>>0>>0)}lJ(b,j);c[e>>2]=0;e=a+56|0;g=a+52|0;if((c[g>>2]|0)!=0){f=c[e>>2]|0;h=0;while(1){lJ(b,c[f>>2]|0);c[f>>2]=0;j=f+24|0;lJ(b,c[j>>2]|0);c[j>>2]=0;h=h+1|0;if(h>>>0<(c[g>>2]|0)>>>0){f=f+36|0}else{break}}}h=a+68|0;g=a+64|0;if((c[g>>2]|0)!=0){f=c[h>>2]|0;j=0;while(1){lJ(b,c[f>>2]|0);c[f>>2]=0;k=f+24|0;lJ(b,c[k>>2]|0);c[k>>2]=0;j=j+1|0;if(j>>>0<(c[g>>2]|0)>>>0){f=f+36|0}else{break}}}lJ(b,c[e>>2]|0);c[e>>2]=0;lJ(b,c[h>>2]|0);c[h>>2]=0;g=a+104|0;f=a+112|0;if((c[f>>2]|0)!=0){e=c[g>>2]|0;h=0;while(1){lJ(b,c[e>>2]|0);c[e>>2]=0;k=e+24|0;lJ(b,c[k>>2]|0);c[k>>2]=0;h=h+1|0;if(h>>>0<(c[f>>2]|0)>>>0){e=e+36|0}else{break}}}lJ(b,c[g>>2]|0);c[g>>2]=0;g=c[a+16536>>2]|0;f=a+16544|0;if((g|0)>0){e=c[f>>2]|0;h=0;while(1){lJ(b,c[e>>2]|0);c[e>>2]=0;h=h+1|0;if((h|0)<(g|0)){e=e+4|0}else{break}}}lJ(b,c[f>>2]|0);c[f>>2]=0;e=a+16524|0;f=a+16528|0;if((c[f>>2]|0)!=0){g=0;a=c[e>>2]|0;while(1){lJ(b,c[a>>2]|0);c[a>>2]=0;if((c[a+4>>2]|0)==1){k=a+12|0;lJ(b,c[k>>2]|0);c[k>>2]=0}g=g+1|0;if(g>>>0<(c[f>>2]|0)>>>0){a=a+16|0}else{break}}}lJ(b,c[e>>2]|0);c[e>>2]=0;i=d;return}function WU(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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=i;C=i;i=i+8|0;A=C;E=i;i=i+8|0;B=E;s=i;i=i+256|0;r=s;p=i;i=i+16|0;q=p;u=i;i=i+8|0;t=u;z=i;i=i+8|0;y=z;v=i;i=i+8|0;x=v;k=i;i=i+8|0;n=k;D=i;i=i+128|0;c[k>>2]=0;l=j+32|0;w=c[l>>2]|0;F=(w|0)==0;if(F){o=0}else{o=c[w+16520>>2]|0}if((iX(e|0,283840,7)|0)==0){if((c[(c[j+36>>2]|0)+8>>2]|0)==0|F){F=k;F=c[F>>2]|0;i=g;return F|0}l=e+7|0;if((a[l]|0)==0){j=f+ -7|0}else{j=f+ -8|0;l=e+8|0}F=c[w+16520>>2]|0;c[v>>2]=0;m=w+88|0;o=c[m>>2]|0;n=j+1|0;p=w+84|0;o=oJ(F,1,o,o+n|0,c[p>>2]|0,x)|0;c[p>>2]=o;p=c[v>>2]|0;if((p|0)==0){p=c[m>>2]|0;$W(o+p|0,l|0,j|0)|0;a[o+(p+j)|0]=10;c[m>>2]=(c[m>>2]|0)+n;p=c[v>>2]|0}c[k>>2]=p;F=k;F=c[F>>2]|0;i=g;return F|0}v=c[j>>2]|0;if((v&1|0)==0){p=j+8248|0;o=c[p>>2]|0;if((iX(e|0,283848,9)|0)!=0){c[k>>2]=176;F=k;F=c[F>>2]|0;i=g;return F|0}c[j>>2]=1;c[l>>2]=0;q=jJ(o,16548,n)|0;if((c[k>>2]|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}c[l>>2]=q;c[q+16520>>2]=c[p>>2];c[p>>2]=0;p=q+16532|0;c[z>>2]=0;c[q+16536>>2]=241;c[p>>2]=80;c[q+16540>>2]=0;c[q+16544>>2]=oJ(o,4,0,241,0,y)|0;F=c[z>>2]|0;c[k>>2]=F;if((F|0)==0){r=0;q=283864}else{F=k;F=c[F>>2]|0;i=g;return F|0}while(1){F=XU(c[q>>2]|0,r,p,o)|0;c[k>>2]=F;if((F|0)!=0){m=151;break}r=r+1|0;if(r>>>0<83){q=q+16|0}else{break}}if((m|0)==151){F=k;F=c[F>>2]|0;i=g;return F|0}F=jJ(o,16,n)|0;c[(c[l>>2]|0)+128>>2]=F;if((c[k>>2]|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}F=c[(c[l>>2]|0)+128>>2]|0;c[u>>2]=0;c[F+4>>2]=241;c[F>>2]=80;c[F+8>>2]=0;c[F+12>>2]=oJ(o,4,0,241,0,t)|0;F=c[u>>2]|0;c[k>>2]=F;if((F|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}c[(c[l>>2]|0)+28>>2]=c[(c[j+36>>2]|0)+12>>2];c[(c[l>>2]|0)+36>>2]=-1;F=k;F=c[F>>2]|0;i=g;return F|0}if((iX(e|0,285192,15)|0)==0){if((v&8|0)==0){c[k>>2]=179;F=k;F=c[F>>2]|0;i=g;return F|0}m=j+8232|0;F=YU(m,285208,e,f)|0;c[k>>2]=F;if((F|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}s=c[(c[m>>2]|0)+4>>2]|0;a:do{if((s|0)==0){q=0}else{q=a[s]|0;p=285544;do{if(q<<24>>24==0){q=0;break a}else if(q<<24>>24==48){F=a[s+1|0]|0;if(!(F<<24>>24==88|F<<24>>24==120)){q=48;m=10;p=285544;break}s=s+2|0;q=a[s]|0;m=16;p=285512}else{m=10}}while(0);r=q<<24>>24;if((d[p+(r>>3)|0]&1<<(r&7)|0)==0){q=0;break}else{q=0}while(1){q=da(q,m)|0;q=(d[285344+r|0]|0)+q|0;s=s+1|0;r=a[s]|0;if((1<<(r&7)&d[p+(r>>3)|0]|0)==0){break}else{}}}}while(0);c[(c[l>>2]|0)+72>>2]=q;c[j+4>>2]=q;F=oJ(o,16,0,q,0,n)|0;c[(c[l>>2]|0)+80>>2]=F;if((c[k>>2]|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}c[j>>2]=c[j>>2]|16;c[h>>2]=41;F=k;F=c[F>>2]|0;i=g;return F|0}if((iX(e|0,285216,15)|0)==0){if((v&4|0)==0){c[k>>2]=178;F=k;F=c[F>>2]|0;i=g;return F|0}m=j+8232|0;F=YU(m,285208,e,f)|0;c[k>>2]=F;if((F|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}o=c[(c[m>>2]|0)+4>>2]|0;do{if((o|0)==0){n=0}else{n=a[o]|0;if(n<<24>>24==0){n=0;break}n=n<<24>>24==45;q=n?o+1|0:o;r=a[q]|0;p=285544;do{if(r<<24>>24==48){F=a[q+1|0]|0;if(!(F<<24>>24==88|F<<24>>24==120)){r=48;o=10;p=285544;break}q=q+2|0;r=a[q]|0;o=16;p=285512}else{o=10}}while(0);r=r<<24>>24;if((d[p+(r>>3)|0]&1<<(r&7)|0)==0){s=0}else{s=0;while(1){s=da(s,o)|0;q=q+1|0;s=(d[285344+r|0]|0)+s<<16>>16;r=a[q]|0;if((1<<(r&7)&d[p+(r>>3)|0]|0)==0){break}else{}}}n=(n?0-s|0:s)&65535}}while(0);b[(c[l>>2]|0)+4>>1]=n;o=c[(c[m>>2]|0)+8>>2]|0;do{if((o|0)==0){n=0}else{n=a[o]|0;if(n<<24>>24==0){n=0;break}n=n<<24>>24==45;s=n?o+1|0:o;q=a[s]|0;p=285544;do{if(q<<24>>24==48){F=a[s+1|0]|0;if(!(F<<24>>24==88|F<<24>>24==120)){q=48;o=10;p=285544;break}s=s+2|0;q=a[s]|0;o=16;p=285512}else{o=10}}while(0);r=q<<24>>24;if((d[p+(r>>3)|0]&1<<(r&7)|0)==0){q=0}else{q=0;while(1){q=da(q,o)|0;s=s+1|0;q=(d[285344+r|0]|0)+q<<16>>16;r=a[s]|0;if((1<<(r&7)&d[p+(r>>3)|0]|0)==0){break}else{}}}n=(n?0-q|0:q)&65535}}while(0);b[(c[l>>2]|0)+6>>1]=n;o=c[(c[m>>2]|0)+12>>2]|0;do{if((o|0)==0){n=0}else{n=a[o]|0;if(n<<24>>24==0){n=0;break}n=n<<24>>24==45;q=n?o+1|0:o;r=a[q]|0;p=285544;do{if(r<<24>>24==48){F=a[q+1|0]|0;if(!(F<<24>>24==88|F<<24>>24==120)){r=48;o=10;p=285544;break}q=q+2|0;r=a[q]|0;o=16;p=285512}else{o=10}}while(0);r=r<<24>>24;if((d[p+(r>>3)|0]&1<<(r&7)|0)==0){s=0}else{s=0;while(1){s=da(s,o)|0;q=q+1|0;s=(d[285344+r|0]|0)+s<<16>>16;r=a[q]|0;if((1<<(r&7)&d[p+(r>>3)|0]|0)==0){break}else{}}}n=(n?0-s|0:s)&65535}}while(0);b[(c[l>>2]|0)+8>>1]=n;n=c[(c[m>>2]|0)+16>>2]|0;do{if((n|0)==0){m=0}else{m=a[n]|0;if(m<<24>>24==0){m=0;break}m=m<<24>>24==45;p=m?n+1|0:n;q=a[p]|0;o=285544;do{if(q<<24>>24==48){F=a[p+1|0]|0;if(!(F<<24>>24==88|F<<24>>24==120)){q=48;n=10;o=285544;break}p=p+2|0;q=a[p]|0;n=16;o=285512}else{n=10}}while(0);r=q<<24>>24;if((d[o+(r>>3)|0]&1<<(r&7)|0)==0){q=0}else{q=0;while(1){q=da(q,n)|0;p=p+1|0;q=(d[285344+r|0]|0)+q<<16>>16;r=a[p]|0;if((1<<(r&7)&d[o+(r>>3)|0]|0)==0){break}else{}}}m=(m?0-q|0:q)&65535}}while(0);b[(c[l>>2]|0)+10>>1]=m;F=c[l>>2]|0;b[F+12>>1]=(b[F+10>>1]|0)+(b[F+6>>1]|0)<<16>>16;F=c[l>>2]|0;b[F+14>>1]=0-(b[F+10>>1]|0)<<16>>16;c[j>>2]=c[j>>2]|8;F=k;F=c[F>>2]|0;i=g;return F|0}if((iX(e|0,285232,4)|0)==0){m=j+8232|0;F=YU(m,285208,e,f)|0;c[k>>2]=F;if((F|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}h=j+8240|0;e=c[h>>2]|0;do{if((e|0)!=0){if(e>>>0<2){c[h>>2]=0;break}e=0;t=1;while(1){u=c[m>>2]|0;c[u+(e<<2)>>2]=c[u+(t<<2)>>2];t=t+1|0;u=c[h>>2]|0;if(t>>>0>>0){e=e+1|0}else{break}}w=u+ -1|0;c[h>>2]=w;if((w|0)==0){break}e=c[c[m>>2]>>2]|0;u=e;t=1;f=0;while(1){v=a[u]|0;if(v<<24>>24!=0){w=f;while(1){u=u+1|0;f=w+1|0;a[e+w|0]=v;v=a[u]|0;if(v<<24>>24==0){break}else{w=f}}w=c[h>>2]|0}if(t>>>0>>0){a[e+f|0]=32;w=c[h>>2]|0;f=f+1|0}if(t>>>0>=w>>>0){break}u=c[(c[m>>2]|0)+(t<<2)>>2]|0;t=t+1|0}if((e|0)==285600){e=285600}else{a[e+f|0]=0;if((e|0)==0){break}}lJ(o,c[c[l>>2]>>2]|0);c[c[l>>2]>>2]=0;m=f+1|0;F=oJ(o,1,0,m,0,n)|0;c[c[l>>2]>>2]=F;if((c[k>>2]|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}$W(c[c[l>>2]>>2]|0,e|0,m|0)|0;m=c[l>>2]|0;o=c[j+36>>2]|0;do{if((m|0)!=0){n=c[m>>2]|0;if((n|0)==0){break}if((a[n]|0)==0){break}F=c[m+16520>>2]|0;bX(p|0,0,12)|0;l=q+12|0;c[l>>2]=F;m=m+28|0;c[m>>2]=c[o+12>>2];o=(ZW(n|0)|0)+1|0;if(o>>>0>255){break}$W(s|0,n|0,o|0)|0;o=YU(q,285592,r,o)|0;n=(o|0)==0;b:do{if(n){if((c[q+8>>2]|0)!=15){break}switch(a[c[(c[p>>2]|0)+44>>2]|0]|0){case 99:case 67:{c[m>>2]=32;break b};case 109:case 77:{c[m>>2]=16;break b};case 112:case 80:{c[m>>2]=8;break b};default:{break b}}}}while(0);l=c[l>>2]|0;if((l|0)!=0){lJ(l,c[p>>2]|0);bX(p|0,0,16)|0}c[k>>2]=o;if(!n){F=k;F=c[F>>2]|0;i=g;return F|0}c[j>>2]=c[j>>2]|2;F=k;F=c[F>>2]|0;i=g;return F|0}}while(0);c[k>>2]=6;F=k;F=c[F>>2]|0;i=g;return F|0}}while(0);c[k>>2]=3;F=k;F=c[F>>2]|0;i=g;return F|0}if((iX(e|0,285240,4)|0)!=0){if((iX(e|0,285248,5)|0)!=0){c[k>>2]=3;F=k;F=c[F>>2]|0;i=g;return F|0}if((v&8|0)==0){c[k>>2]=179;F=k;F=c[F>>2]|0;i=g;return F|0}c[w+40>>2]=b[w+12>>1]|0;c[E>>2]=b[(c[l>>2]|0)+12>>1]|0;Lb(D|0,285256,B|0)|0;F=_U(c[l>>2]|0,285264,D)|0;c[k>>2]=F;if((F|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}F=c[l>>2]|0;c[F+44>>2]=b[F+14>>1]|0;c[C>>2]=b[(c[l>>2]|0)+14>>1]|0;Lb(D|0,285256,A|0)|0;F=_U(c[l>>2]|0,285280,D)|0;c[k>>2]=F;if((F|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}b[(c[l>>2]|0)+16516>>1]=1;c[h>>2]=42;c[k>>2]=-1;F=k;F=c[F>>2]|0;i=g;return F|0}if((v&2|0)==0){c[k>>2]=177;F=k;F=c[F>>2]|0;i=g;return F|0}n=j+8232|0;F=YU(n,285208,e,f)|0;c[k>>2]=F;if((F|0)!=0){F=k;F=c[F>>2]|0;i=g;return F|0}r=c[(c[n>>2]|0)+4>>2]|0;c:do{if((r|0)==0){s=0}else{q=a[r]|0;p=285544;do{if(q<<24>>24==48){F=a[r+1|0]|0;if(!(F<<24>>24==88|F<<24>>24==120)){q=48;o=10;p=285544;break}r=r+2|0;q=a[r]|0;o=16;p=285512}else if(q<<24>>24==0){s=0;break c}else{o=10}}while(0);q=q<<24>>24;if((d[p+(q>>3)|0]&1<<(q&7)|0)==0){s=0;break}else{s=0}while(1){s=da(s,o)|0;s=(d[285344+q|0]|0)+s|0;r=r+1|0;q=a[r]|0;if((1<<(q&7)&d[p+(q>>3)|0]|0)==0){break}else{}}}}while(0);c[(c[l>>2]|0)+16>>2]=s;r=c[(c[n>>2]|0)+8>>2]|0;d:do{if((r|0)==0){s=0}else{q=a[r]|0;p=285544;do{if(q<<24>>24==0){s=0;break d}else if(q<<24>>24==48){F=a[r+1|0]|0;if(!(F<<24>>24==88|F<<24>>24==120)){q=48;o=10;p=285544;break}r=r+2|0;q=a[r]|0;o=16;p=285512}else{o=10}}while(0);q=q<<24>>24;if((d[p+(q>>3)|0]&1<<(q&7)|0)==0){s=0;break}else{s=0}while(1){s=da(s,o)|0;s=(d[285344+q|0]|0)+s|0;r=r+1|0;q=a[r]|0;if((1<<(q&7)&d[p+(q>>3)|0]|0)==0){break}else{}}}}while(0);c[(c[l>>2]|0)+20>>2]=s;q=c[(c[n>>2]|0)+12>>2]|0;e:do{if((q|0)==0){r=0}else{r=a[q]|0;p=285544;do{if(r<<24>>24==0){r=0;break e}else if(r<<24>>24==48){F=a[q+1|0]|0;if(!(F<<24>>24==88|F<<24>>24==120)){r=48;o=10;p=285544;break}q=q+2|0;r=a[q]|0;o=16;p=285512}else{o=10}}while(0);s=r<<24>>24;if((d[p+(s>>3)|0]&1<<(s&7)|0)==0){r=0;break}else{r=0}while(1){r=da(r,o)|0;r=(d[285344+s|0]|0)+r|0;q=q+1|0;s=a[q]|0;if((1<<(s&7)&d[p+(s>>3)|0]|0)==0){break}else{}}}}while(0);c[(c[l>>2]|0)+24>>2]=r;do{if((c[j+8240>>2]|0)==5){o=c[(c[n>>2]|0)+16>>2]|0;do{if((o|0)==0){n=0}else{n=a[o]|0;if(n<<24>>24==0){n=0;break}n=n<<24>>24==45;q=n?o+1|0:o;r=a[q]|0;p=285544;do{if(r<<24>>24==48){F=a[q+1|0]|0;if(!(F<<24>>24==88|F<<24>>24==120)){r=48;o=10;p=285544;break}q=q+2|0;r=a[q]|0;o=16;p=285512}else{o=10}}while(0);r=r<<24>>24;if((d[p+(r>>3)|0]&1<<(r&7)|0)==0){s=0}else{s=0;while(1){s=da(s,o)|0;q=q+1|0;s=(d[285344+r|0]|0)+s<<16>>16;r=a[q]|0;if((1<<(r&7)&d[p+(r>>3)|0]|0)==0){break}else{}}}n=(n?0-s|0:s)&65535}}while(0);b[(c[l>>2]|0)+16518>>1]=n;l=(c[l>>2]|0)+16518|0;n=b[l>>1]|0;if(n<<16>>16==0){p=0;m=139}else{p=0;o=0;q=n;while(1){p=(q&1)==0?p:o;q=(q&65535)>>>1;if(q<<16>>16==0){break}else{o=o+1<<16>>16}}if((p&65535)>3){o=8}else{m=139}}if((m|0)==139){o=1<<(p&65535)&65535}if((n&65535|0)==(o|0)){break}b[l>>1]=o<<1}else{b[(c[l>>2]|0)+16518>>1]=1}}while(0);c[j>>2]=c[j>>2]|4;F=k;F=c[F>>2]|0;i=g;return F|0}function XU(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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;h=i;k=i;i=i+8|0;n=k;g=i;i=i+8|0;m=g;j=e+12|0;p=c[j>>2]|0;o=a[b]|0;if(o<<24>>24==0){q=0}else{l=o;r=b;q=0;while(1){r=r+1|0;q=(q*31|0)+(l<<24>>24)|0;l=a[r]|0;if(l<<24>>24==0){break}else{}}}l=e+4|0;t=c[l>>2]|0;s=p+(((q>>>0)%(t>>>0)|0)<<2)|0;r=c[s>>2]|0;a:do{if((r|0)!=0){q=p+(t+ -1<<2)|0;do{r=c[r>>2]|0;if((a[r]|0)==o<<24>>24){if((Qc(r|0,b|0)|0)==0){break a}}r=s+ -4|0;s=r>>>0

>>0?q:r;r=c[s>>2]|0;}while((r|0)!=0)}}while(0);c[g>>2]=0;o=c[s>>2]|0;if((o|0)!=0){c[o+4>>2]=d;u=g;u=c[u>>2]|0;i=h;return u|0}m=jJ(f,8,m)|0;if((c[g>>2]|0)!=0){u=g;u=c[u>>2]|0;i=h;return u|0}c[s>>2]=m;c[m>>2]=b;c[m+4>>2]=d;d=e+8|0;b=c[d>>2]|0;do{if((b|0)>=(c[e>>2]|0)){b=c[j>>2]|0;m=c[l>>2]|0;c[k>>2]=0;u=m<<1;c[l>>2]=u;c[e>>2]=(u|0)/3|0;c[j>>2]=oJ(f,4,0,u,0,n)|0;e=c[k>>2]|0;if((e|0)!=0){c[g>>2]=e;u=g;u=c[u>>2]|0;i=h;return u|0}if((m|0)>0){e=b;o=0;while(1){n=c[e>>2]|0;if((n|0)!=0){q=c[n>>2]|0;r=c[j>>2]|0;p=a[q]|0;if(p<<24>>24==0){t=0}else{u=p;s=q;t=0;while(1){s=s+1|0;t=(t*31|0)+(u<<24>>24)|0;u=a[s]|0;if(u<<24>>24==0){break}else{}}}s=c[l>>2]|0;u=r+(((t>>>0)%(s>>>0)|0)<<2)|0;t=c[u>>2]|0;b:do{if((t|0)!=0){s=r+(s+ -1<<2)|0;do{t=c[t>>2]|0;if((a[t]|0)==p<<24>>24){if((Qc(t|0,q|0)|0)==0){break b}}t=u+ -4|0;u=t>>>0>>0?s:t;t=c[u>>2]|0;}while((t|0)!=0)}}while(0);c[u>>2]=n}o=o+1|0;if((o|0)<(m|0)){e=e+4|0}else{break}}}lJ(f,b);u=c[k>>2]|0;c[g>>2]=u;if((u|0)==0){b=c[d>>2]|0;break}else{u=g;u=c[u>>2]|0;i=h;return u|0}}}while(0);c[d>>2]=b+1;u=g;u=c[u>>2]|0;i=h;return u|0}function YU(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var 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;h=i;k=i;i=i+8|0;l=k;o=i;i=i+8|0;p=o;r=i;i=i+32|0;n=r;j=b+8|0;c[j>>2]=0;if((g|0)==0){u=0;i=h;return u|0}s=a[f]|0;if(s<<24>>24==0){u=0;i=h;return u|0}if((e|0)==0){u=6;i=h;return u|0}q=a[e]|0;if(q<<24>>24==0){u=6;i=h;return u|0}bX(r|0,0,32)|0;r=0;while(1){if(q<<24>>24==43){e=e+1|0;if((a[e]|0)==0){r=1}else{m=9}}else if(q<<24>>24==0){break}else{e=e+1|0;m=9}if((m|0)==9){m=0;t=q&255;u=n+(t>>>3)|0;a[u]=1<<(t&7)|d[u]}q=a[e]|0}e=f+g|0;q=b+4|0;a:do{if((g|0)>0){g=b+12|0;r=(r|0)==0;u=0;t=f;b:while(1){if(s<<24>>24==0){t=u;break a}else{f=t}while(1){s=s&255;u=f+1|0;if((a[n+(s>>>3)|0]&1<<(s&7)|0)!=0){break}s=a[u]|0;if(s<<24>>24==0){f=u;break}else{f=u}}u=c[j>>2]|0;do{if((u|0)==(c[q>>2]|0)){c[o>>2]=0;if((u|0)==-1){u=-1;break}s=u+4+(u>>>1)|0;if((u|0)==536870911){break b}s=s>>>0>>0|s>>>0>536870911?536870911:s;c[b>>2]=oJ(c[g>>2]|0,4,u,s,c[b>>2]|0,p)|0;u=c[o>>2]|0;if((u|0)!=0){m=41;break b}c[q>>2]=s;u=c[j>>2]|0}}while(0);c[j>>2]=u+1;c[(c[b>>2]|0)+(u<<2)>>2]=f>>>0>t>>>0?t:285600;s=a[f]|0;t=s<<24>>24==0;do{if(r){if(t){s=0;t=0;break}m=f+1|0;a[f]=0;t=a[m]|0;f=m;m=29}else{if(t){s=0;t=0;break}else{u=f}while(1){t=s&255;if((a[n+(t>>>3)|0]&1<<(t&7)|0)==0){break}a[u]=0;u=u+1|0;s=a[u]|0;if(s<<24>>24==0){s=0;break}}if(u>>>0>f>>>0){t=s;f=u;m=29}else{t=0;f=u}}}while(0);if((m|0)==29){m=0;s=t;t=t<<24>>24==0|0}if(f>>>0>>0){u=t;t=f}else{break a}}if((m|0)==41){i=h;return u|0}c[o>>2]=64;u=64;i=h;return u|0}else{t=0}}while(0);n=(c[j>>2]|0)+t|0;m=c[q>>2]|0;do{if(n>>>0>=m>>>0){c[k>>2]=0;if(m>>>0>=(n+1|0)>>>0){break}n=m+4+(m>>>1)|0;if((m|0)==536870911){c[k>>2]=64;u=64;i=h;return u|0}n=n>>>0>>0|n>>>0>536870911?536870911:n;c[b>>2]=oJ(c[b+12>>2]|0,4,m,n,c[b>>2]|0,l)|0;k=c[k>>2]|0;if((k|0)==0){c[q>>2]=n;break}else{u=k;i=h;return u|0}}}while(0);if((t|0)!=0){u=c[j>>2]|0;c[j>>2]=u+1;c[(c[b>>2]|0)+(u<<2)>>2]=285600}c[(c[b>>2]|0)+(c[j>>2]<<2)>>2]=0;u=0;i=h;return u|0}function ZU(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=i;m=i;i=i+8|0;l=m;o=i;i=i+8|0;n=o;k=i;i=i+128|0;if((iX(d|0,285608,13)|0)==0){d=h+32|0;p=c[d>>2]|0;a:do{if((p|0)==0){j=11}else{if((c[p+72>>2]|0)==0){j=11;break}q=c[p+128>>2]|0;e=c[q+12>>2]|0;q=c[q+4>>2]|0;s=e+((1895527114%(q>>>0)|0)<<2)|0;r=c[s>>2]|0;if((r|0)==0){j=11;break}q=e+(q+ -1<<2)|0;while(1){t=c[r>>2]|0;if((a[t]|0)==70){if((Qc(t|0,285264)|0)==0){break}}r=s+ -4|0;s=r>>>0>>0?q:r;r=c[s>>2]|0;if((r|0)==0){j=11;break a}}if((r|0)==0){j=11;break}if(((c[p+80>>2]|0)+(c[r+4>>2]<<4)|0)==0){j=11}}}while(0);do{if((j|0)==11){c[p+40>>2]=b[p+12>>1]|0;c[o>>2]=b[(c[d>>2]|0)+12>>1]|0;Lb(k|0,285256,n|0)|0;e=_U(c[d>>2]|0,285264,k)|0;if((e|0)==0){b[(c[d>>2]|0)+16516>>1]=1;p=c[d>>2]|0;break}else{t=e;i=f;return t|0}}}while(0);b:do{if((p|0)==0){j=22}else{if((c[p+72>>2]|0)==0){j=22;break}n=c[p+128>>2]|0;e=c[n+12>>2]|0;n=c[n+4>>2]|0;q=e+((908209322%(n>>>0)|0)<<2)|0;o=c[q>>2]|0;if((o|0)==0){j=22;break}n=e+(n+ -1<<2)|0;while(1){r=c[o>>2]|0;if((a[r]|0)==70){if((Qc(r|0,285280)|0)==0){break}}o=q+ -4|0;q=o>>>0>>0?n:o;o=c[q>>2]|0;if((o|0)==0){j=22;break b}}if((o|0)==0){j=22;break}if(((c[p+80>>2]|0)+(c[o+4>>2]<<4)|0)==0){j=22}}}while(0);do{if((j|0)==22){c[p+44>>2]=b[p+14>>1]|0;c[m>>2]=b[(c[d>>2]|0)+14>>1]|0;Lb(k|0,285256,l|0)|0;j=_U(c[d>>2]|0,285280,k)|0;if((j|0)==0){b[(c[d>>2]|0)+16516>>1]=1;break}else{t=j;i=f;return t|0}}}while(0);c[h>>2]=c[h>>2]&-17;c[g>>2]=42;t=0;i=f;return t|0}if((iX(d|0,285624,21)|0)==0){t=0;i=f;return t|0}if((iX(d|0,283840,7)|0)==0){g=d+7|0;if((a[g]|0)!=0){a[g]=0;g=d+8|0}t=_U(c[h+32>>2]|0,d,g)|0;i=f;return t|0}g=h+32|0;l=c[g>>2]|0;k=d;while(1){m=a[k]|0;if(m<<24>>24==32|m<<24>>24==9){j=33;break}else if(m<<24>>24==0){m=-1;break}k=k+1|0}if((j|0)==33){a[k]=0;m=m<<24>>24}c:do{if((d|0)==0){j=0}else{n=a[d]|0;if(n<<24>>24==0){j=0;break}j=c[l+16544>>2]|0;q=n;p=d;o=0;do{p=p+1|0;o=(o*31|0)+(q<<24>>24)|0;q=a[p]|0;}while(q<<24>>24!=0);r=c[l+16536>>2]|0;q=j+(((o>>>0)%(r>>>0)|0)<<2)|0;p=c[q>>2]|0;if((p|0)==0){j=0;break}o=j+(r+ -1<<2)|0;while(1){r=c[p>>2]|0;if((a[r]|0)==n<<24>>24){if((Qc(r|0,d|0)|0)==0){break}}p=q+ -4|0;q=p>>>0>>0?o:p;p=c[q>>2]|0;if((p|0)==0){j=0;break c}}if((p|0)==0){j=0;break}j=c[p+4>>2]|0;if(j>>>0>82){j=(c[l+16524>>2]|0)+(j+ -83<<4)|0;break}else{j=283864+(j<<4)|0;break}}}while(0);if((m|0)!=-1){a[k]=m}do{if((j|0)!=0){if((c[j+4>>2]|0)==1){break}j=h+8232|0;d=YU(j,285208,d,e)|0;if((d|0)!=0){t=d;i=f;return t|0}k=c[j>>2]|0;d=c[k>>2]|0;h=h+8240|0;e=c[h>>2]|0;do{if((e|0)==0){e=0}else{if(e>>>0<2){c[h>>2]=0;e=0;break}else{e=0;l=1}while(1){c[k+(e<<2)>>2]=c[k+(l<<2)>>2];l=l+1|0;k=c[h>>2]|0;if(l>>>0>=k>>>0){break}k=c[j>>2]|0;e=e+1|0}o=k+ -1|0;c[h>>2]=o;if((o|0)==0){e=0;break}e=c[c[j>>2]>>2]|0;l=e;k=1;n=0;while(1){m=a[l]|0;if(m<<24>>24!=0){o=n;while(1){l=l+1|0;n=o+1|0;a[e+o|0]=m;m=a[l]|0;if(m<<24>>24==0){break}else{o=n}}o=c[h>>2]|0}if(k>>>0>>0){a[e+n|0]=32;o=c[h>>2]|0;n=n+1|0}if(k>>>0>=o>>>0){break}l=c[(c[j>>2]|0)+(k<<2)>>2]|0;k=k+1|0}if((e|0)==285600){e=285600;break}a[e+n|0]=0}}while(0);t=_U(c[g>>2]|0,d,e)|0;i=f;return t|0}}while(0);a[k]=0;while(1){l=k+1|0;j=a[l]|0;if(j<<24>>24==32|j<<24>>24==9){k=l}else{break}}h=d+e|0;j=j<<24>>24==34?k+2|0:l;d:do{if(h>>>0>j>>>0){while(1){h=h+ -1|0;e=a[h]|0;if(e<<24>>24==34){break}else if(!(e<<24>>24==9|e<<24>>24==32)){break d}a[h]=0;if(h>>>0<=j>>>0){break d}}a[h]=0}}while(0);t=_U(c[g>>2]|0,d,j)|0;i=f;return t|0}function _U(b,e,f){b=b|0;e=e|0;f=f|0;var 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;h=i;m=i;i=i+8|0;n=m;g=i;i=i+8|0;l=g;j=c[b+16520>>2]|0;c[g>>2]=0;k=b+128|0;r=c[k>>2]|0;q=c[r+12>>2]|0;p=a[e]|0;t=p<<24>>24==0;if(t){s=0}else{v=p;u=e;s=0;while(1){u=u+1|0;s=(s*31|0)+(v<<24>>24)|0;v=a[u]|0;if(v<<24>>24==0){break}else{}}}r=c[r+4>>2]|0;u=q+(((s>>>0)%(r>>>0)|0)<<2)|0;s=c[u>>2]|0;a:do{if((s|0)!=0){r=q+(r+ -1<<2)|0;while(1){v=c[s>>2]|0;if((a[v]|0)==p<<24>>24){if((Qc(v|0,e|0)|0)==0){break}}s=u+ -4|0;u=s>>>0>>0?r:s;s=c[u>>2]|0;if((s|0)==0){break a}}if((s|0)==0){break}b=c[b+80>>2]|0;k=c[s+4>>2]|0;e=c[b+(k<<4)+4>>2]|0;if((e|0)==3){b:do{if((f|0)==0){m=0}else{l=a[f]|0;e=285544;do{if(l<<24>>24==0){m=0;break b}else if(l<<24>>24==48){z=a[f+1|0]|0;if(!(z<<24>>24==88|z<<24>>24==120)){l=48;j=10;e=285544;break}f=f+2|0;l=a[f]|0;j=16;e=285512}else{j=10}}while(0);l=l<<24>>24;if((d[e+(l>>3)|0]&1<<(l&7)|0)==0){m=0;break}else{m=0}do{z=da(m,j)|0;m=(d[285344+l|0]|0)+z|0;f=f+1|0;l=a[f]|0;}while((1<<(l&7)&d[e+(l>>3)|0]|0)!=0)}}while(0);c[b+(k<<4)+12>>2]=m;z=g;z=c[z>>2]|0;i=h;return z|0}else if((e|0)==1){b=b+(k<<4)+12|0;lJ(j,c[b>>2]|0);c[b>>2]=0;if((f|0)==0){z=g;z=c[z>>2]|0;i=h;return z|0}if((a[f]|0)==0){z=g;z=c[z>>2]|0;i=h;return z|0}c[b>>2]=aL(j,f,l)|0;z=g;z=c[z>>2]|0;i=h;return z|0}else if((e|0)==2){do{if((f|0)==0){j=0}else{j=a[f]|0;if(j<<24>>24==0){j=0;break}j=j<<24>>24==45;l=j?f+1|0:f;m=a[l]|0;f=285544;do{if(m<<24>>24==48){z=a[l+1|0]|0;if(!(z<<24>>24==88|z<<24>>24==120)){m=48;e=10;f=285544;break}l=l+2|0;m=a[l]|0;e=16;f=285512}else{e=10}}while(0);m=m<<24>>24;if((d[f+(m>>3)|0]&1<<(m&7)|0)==0){n=0}else{n=0;while(1){n=da(n,e)|0;n=(d[285344+m|0]|0)+n|0;l=l+1|0;m=a[l]|0;if((1<<(m&7)&d[f+(m>>3)|0]|0)==0){break}else{}}}j=j?0-n|0:n}}while(0);c[b+(k<<4)+12>>2]=j;z=g;z=c[z>>2]|0;i=h;return z|0}else{z=g;z=c[z>>2]|0;i=h;return z|0}}}while(0);s=b+16532|0;r=b+16544|0;u=c[r>>2]|0;if(t){w=0}else{w=p;q=e;v=0;while(1){q=q+1|0;v=(v*31|0)+(w<<24>>24)|0;w=a[q]|0;if(w<<24>>24==0){w=v;break}else{}}}q=b+16536|0;v=c[q>>2]|0;y=u+(((w>>>0)%(v>>>0)|0)<<2)|0;x=c[y>>2]|0;c:do{if((x|0)==0){o=38}else{w=u+(v+ -1<<2)|0;while(1){z=c[x>>2]|0;if((a[z]|0)==p<<24>>24){if((Qc(z|0,e|0)|0)==0){break}}x=y+ -4|0;y=x>>>0>>0?w:x;x=c[y>>2]|0;if((x|0)==0){o=38;break c}}if((x|0)==0){o=38}}}while(0);d:do{if((o|0)==38){c[m>>2]=0;if(t){x=0}else{w=p;t=e;x=0;while(1){t=t+1|0;x=(x*31|0)+(w<<24>>24)|0;w=a[t]|0;if(w<<24>>24==0){break}else{}}}w=u+(((x>>>0)%(v>>>0)|0)<<2)|0;x=c[w>>2]|0;e:do{if((x|0)==0){o=46}else{t=u+(v+ -1<<2)|0;v=x;while(1){x=c[v>>2]|0;if((a[x]|0)==p<<24>>24){if((Qc(x|0,e|0)|0)==0){break}}v=w+ -4|0;w=v>>>0>>0?t:v;v=c[w>>2]|0;if((v|0)==0){o=46;break e}}if((v|0)==0){o=46}}}while(0);f:do{if((o|0)==46){o=b+16528|0;p=c[o>>2]|0;w=b+16524|0;p=oJ(j,16,p,p+1|0,c[w>>2]|0,n)|0;c[w>>2]=p;w=c[m>>2]|0;do{if((w|0)==0){u=c[o>>2]|0;v=p+(u<<4)|0;bX(v|0,0,16)|0;t=(ZW(e|0)|0)+1|0;n=oJ(j,1,0,t,0,n)|0;c[v>>2]=n;w=c[m>>2]|0;if((w|0)!=0){break}$W(n|0,e|0,t|0)|0;c[p+(u<<4)+4>>2]=1;c[p+(u<<4)+8>>2]=0;w=XU(c[v>>2]|0,(c[o>>2]|0)+83|0,s,j)|0;c[m>>2]=w;if((w|0)!=0){break}c[o>>2]=(c[o>>2]|0)+1;p=a[e]|0;u=c[r>>2]|0;break f}}while(0);c[g>>2]=w;z=g;z=c[z>>2]|0;i=h;return z|0}}while(0);c[g>>2]=0;if(p<<24>>24==0){o=0}else{n=p;m=e;o=0;while(1){m=m+1|0;o=(o*31|0)+(n<<24>>24)|0;n=a[m]|0;if(n<<24>>24==0){break}else{}}}m=c[q>>2]|0;n=u+(((o>>>0)%(m>>>0)|0)<<2)|0;x=c[n>>2]|0;if((x|0)==0){x=0;break}m=u+(m+ -1<<2)|0;while(1){o=c[x>>2]|0;if((a[o]|0)==p<<24>>24){if((Qc(o|0,e|0)|0)==0){break d}}n=n+ -4|0;n=n>>>0>>0?m:n;x=c[n>>2]|0;if((x|0)==0){x=0;break}}}}while(0);m=b+76|0;o=c[m>>2]|0;n=b+72|0;if((o|0)==(c[n>>2]|0)){do{if((o|0)==0){o=oJ(j,16,0,1,0,l)|0;c[b+80>>2]=o;if((c[g>>2]|0)==0){break}z=g;z=c[z>>2]|0;i=h;return z|0}else{z=b+80|0;o=oJ(j,16,o,o+1|0,c[z>>2]|0,l)|0;c[z>>2]=o;if((c[g>>2]|0)==0){break}z=g;z=c[z>>2]|0;i=h;return z|0}}while(0);bX(o+(c[n>>2]<<4)|0,0,16)|0;c[n>>2]=(c[n>>2]|0)+1}n=c[x+4>>2]|0;if(n>>>0>82){q=(c[b+16524>>2]|0)+(n+ -83<<4)|0}else{q=283864+(n<<4)|0}p=c[b+80>>2]|0;o=c[m>>2]|0;n=p+(o<<4)|0;c[n>>2]=c[q>>2];z=q+4|0;c[p+(o<<4)+4>>2]=c[z>>2];c[p+(o<<4)+8>>2]=c[q+8>>2];q=c[z>>2]|0;do{if((q|0)==3){g:do{if((f|0)==0){s=0}else{r=a[f]|0;q=285544;do{if(r<<24>>24==48){z=a[f+1|0]|0;if(!(z<<24>>24==88|z<<24>>24==120)){r=48;l=10;q=285544;break}f=f+2|0;r=a[f]|0;l=16;q=285512}else if(r<<24>>24==0){s=0;break g}else{l=10}}while(0);r=r<<24>>24;if((d[q+(r>>3)|0]&1<<(r&7)|0)==0){s=0;break}else{s=0}do{z=da(s,l)|0;s=(d[285344+r|0]|0)+z|0;f=f+1|0;r=a[f]|0;}while((1<<(r&7)&d[q+(r>>3)|0]|0)!=0)}}while(0);c[p+(o<<4)+12>>2]=s}else if((q|0)==2){do{if((f|0)==0){f=0}else{l=a[f]|0;if(l<<24>>24==0){f=0;break}l=l<<24>>24==45;s=l?f+1|0:f;r=a[s]|0;q=285544;do{if(r<<24>>24==48){z=a[s+1|0]|0;if(!(z<<24>>24==88|z<<24>>24==120)){r=48;f=10;q=285544;break}s=s+2|0;r=a[s]|0;f=16;q=285512}else{f=10}}while(0);t=r<<24>>24;if((d[q+(t>>3)|0]&1<<(t&7)|0)==0){r=0}else{r=0;while(1){r=da(r,f)|0;r=(d[285344+t|0]|0)+r|0;s=s+1|0;t=a[s]|0;if((1<<(t&7)&d[q+(t>>3)|0]|0)==0){break}else{}}}f=l?0-r|0:r}}while(0);c[p+(o<<4)+12>>2]=f}else if((q|0)==1){q=p+(o<<4)+12|0;c[q>>2]=0;if((f|0)==0){break}if((a[f]|0)==0){break}c[q>>2]=aL(j,f,l)|0;if((c[g>>2]|0)==0){break}z=g;z=c[z>>2]|0;i=h;return z|0}}while(0);do{if((iX(e|0,283840,7)|0)!=0){z=XU(c[n>>2]|0,c[m>>2]|0,c[k>>2]|0,j)|0;c[g>>2]=z;if((z|0)==0){break}z=g;z=c[z>>2]|0;i=h;return z|0}}while(0);c[m>>2]=(c[m>>2]|0)+1;if((iX(e|0,285576,12)|0)==0){c[b+36>>2]=c[p+(o<<4)+12>>2];z=g;z=c[z>>2]|0;i=h;return z|0}if((iX(e|0,285264,11)|0)==0){c[b+40>>2]=c[p+(o<<4)+12>>2];z=g;z=c[z>>2]|0;i=h;return z|0}if((iX(e|0,285280,12)|0)==0){c[b+44>>2]=c[p+(o<<4)+12>>2];z=g;z=c[z>>2]|0;i=h;return z|0}if((iX(e|0,283576,7)|0)!=0){z=g;z=c[z>>2]|0;i=h;return z|0}j=c[p+(o<<4)+12>>2]|0;if((j|0)==0){c[g>>2]=3;z=g;z=c[z>>2]|0;i=h;return z|0}switch(a[j]|0){case 77:case 109:{c[b+28>>2]=16;z=g;z=c[z>>2]|0;i=h;return z|0};case 80:case 112:{c[b+28>>2]=8;z=g;z=c[z>>2]|0;i=h;return z|0};case 67:case 99:{c[b+28>>2]=32;z=g;z=c[z>>2]|0;i=h;return z|0};default:{z=g;z=c[z>>2]|0;i=h;return z|0}}return 0}function $U(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;h=i;n=i;i=i+8|0;p=n;l=i;i=i+8|0;q=l;c[l>>2]=0;r=k+32|0;m=c[r>>2]|0;j=c[m+16520>>2]|0;a:do{if((iX(f|0,283840,7)|0)==0){q=f+7|0;if((a[q]|0)==0){o=g+ -7|0;g=q}else{o=g+ -8|0;g=f+8|0}c[n>>2]=0;q=m+88|0;u=c[q>>2]|0;f=o+1|0;v=m+84|0;m=oJ(j,1,u,u+f|0,c[v>>2]|0,p)|0;c[v>>2]=m;p=c[n>>2]|0;if((p|0)==0){p=c[q>>2]|0;$W(m+p|0,g|0,o|0)|0;a[m+(p+o)|0]=10;c[q>>2]=(c[q>>2]|0)+f;p=c[n>>2]|0}c[l>>2]=p;o=178}else{s=c[k>>2]|0;b:do{if((s&32|0)==0){if((iX(f|0,285248,5)|0)!=0){c[l>>2]=180;p=180;m=k;break a}n=k+8232|0;p=YU(n,285208,f,g)|0;c[l>>2]=p;if((p|0)!=0){m=k;break a}f=c[(c[n>>2]|0)+4>>2]|0;c:do{if((f|0)==0){o=17}else{g=a[f]|0;p=285544;do{if(g<<24>>24==48){v=a[f+1|0]|0;if(!(v<<24>>24==88|v<<24>>24==120)){g=48;n=10;p=285544;break}f=f+2|0;g=a[f]|0;n=16;p=285512}else if(g<<24>>24==0){o=17;break c}else{n=10}}while(0);g=g<<24>>24;if((d[p+(g>>3)|0]&1<<(g&7)|0)==0){o=17;break}else{r=f;f=0}do{v=da(f,n)|0;f=(d[285344+g|0]|0)+v|0;r=r+1|0;g=a[r]|0;}while((1<<(g&7)&d[p+(g>>3)|0]|0)!=0);n=m+48|0;c[n>>2]=f;p=k+4|0;c[p>>2]=f;if((f|0)==0){o=19}}}while(0);if((o|0)==17){n=m+48|0;c[n>>2]=0;p=k+4|0;c[p>>2]=0;o=19}if((o|0)==19){c[n>>2]=64;f=c[p>>2]|0}if(f>>>0>1114111){c[l>>2]=6;p=6;m=k;break a}c[m+56>>2]=oJ(j,36,0,c[n>>2]|0,0,q)|0;p=c[l>>2]|0;if((p|0)!=0){m=k;break a}c[k>>2]=c[k>>2]|32}else{if((iX(f|0,285296,7)|0)==0){pb(c[m+56>>2]|0,c[m+52>>2]|0,36,202);c[k>>2]=c[k>>2]&-2;break}if((iX(f|0,285304,7)|0)==0){c[k+28>>2]=0;c[k>>2]=s&-4033;break}n=(s&64|0)==0;do{if(!n){if((c[k+28>>2]|0)!=-1){break}if((c[(c[k+36>>2]|0)+4>>2]|0)==0){break b}}}while(0);if((iX(f|0,285312,9)|0)==0){m=k+24|0;lJ(j,c[m>>2]|0);c[m>>2]=0;n=k+8232|0;p=YU(n,285208,f,g)|0;c[l>>2]=p;if((p|0)!=0){m=k;break a}p=k+8240|0;f=c[p>>2]|0;do{if((f|0)!=0){if(f>>>0<2){c[p>>2]=0;break}f=0;g=1;while(1){r=c[n>>2]|0;c[r+(f<<2)>>2]=c[r+(g<<2)>>2];g=g+1|0;r=c[p>>2]|0;if(g>>>0>>0){f=f+1|0}else{break}}u=r+ -1|0;c[p>>2]=u;if((u|0)==0){break}f=c[c[n>>2]>>2]|0;r=f;g=1;t=0;while(1){s=a[r]|0;if(s<<24>>24!=0){u=t;while(1){r=r+1|0;t=u+1|0;a[f+u|0]=s;s=a[r]|0;if(s<<24>>24==0){break}else{u=t}}u=c[p>>2]|0}if(g>>>0>>0){a[f+t|0]=32;u=c[p>>2]|0;t=t+1|0}if(g>>>0>=u>>>0){break}r=c[(c[n>>2]|0)+(g<<2)>>2]|0;g=g+1|0}if((f|0)==285600){f=285600}else{a[f+t|0]=0;if((f|0)==0){break}}n=t+1|0;q=oJ(j,1,0,n,0,q)|0;c[m>>2]=q;p=c[l>>2]|0;if((p|0)!=0){m=k;break a}$W(q|0,f|0,n|0)|0;c[k>>2]=c[k>>2]|64;break b}}while(0);c[l>>2]=3;p=3;m=k;break a}if((iX(f|0,285328,8)|0)==0){if(n){c[l>>2]=181;p=181;m=k;break a}n=k+8232|0;p=YU(n,285208,f,g)|0;c[l>>2]=p;if((p|0)!=0){m=k;break a}p=c[(c[n>>2]|0)+4>>2]|0;do{if((p|0)==0){o=63}else{n=a[p]|0;if(n<<24>>24==0){o=63;break}n=n<<24>>24==45;g=n?p+1|0:p;r=a[g]|0;f=285544;do{if(r<<24>>24==48){v=a[g+1|0]|0;if(!(v<<24>>24==88|v<<24>>24==120)){r=48;p=10;f=285544;break}g=g+2|0;r=a[g]|0;p=16;f=285512}else{p=10}}while(0);s=r<<24>>24;if((d[f+(s>>3)|0]&1<<(s&7)|0)==0){r=0}else{r=0;while(1){r=da(r,p)|0;r=(d[285344+s|0]|0)+r|0;g=g+1|0;s=a[g]|0;if((1<<(s&7)&d[f+(s>>3)|0]|0)==0){break}else{}}}p=n?0-r|0:r;n=k+28|0;c[n>>2]=p;if(p>>>0<=65535){break}c[l>>2]=3;p=3;m=k;break a}}while(0);if((o|0)==63){n=k+28|0;c[n>>2]=0;p=0}f=k+40+(p>>5<<2)|0;g=c[f>>2]|0;p=1<<(p&31);if((p&g|0)==0){c[f>>2]=p|g}else{c[n>>2]=-1;b[m+16516>>1]=1}if((c[n>>2]|0)>-1){p=m+52|0;g=c[p>>2]|0;f=m+48|0;if((g|0)==(c[f>>2]|0)){m=m+56|0;q=oJ(j,36,g,g+64|0,c[m>>2]|0,q)|0;c[m>>2]=q;m=c[l>>2]|0;if((m|0)!=0){p=m;m=k;break a}c[f>>2]=(c[f>>2]|0)+64;g=c[p>>2]|0}else{q=c[m+56>>2]|0}c[p>>2]=g+1;v=k+24|0;c[q+(g*36|0)>>2]=c[v>>2];c[q+(g*36|0)+4>>2]=c[n>>2];c[v>>2]=0}else{if((c[(c[k+36>>2]|0)+4>>2]|0)==0){v=k+24|0;lJ(j,c[v>>2]|0);c[v>>2]=0}else{n=m+64|0;f=c[n>>2]|0;p=m+60|0;if((f|0)==(c[p>>2]|0)){m=m+68|0;q=oJ(j,36,f,f+4|0,c[m>>2]|0,q)|0;c[m>>2]=q;m=c[l>>2]|0;if((m|0)!=0){p=m;m=k;break a}c[p>>2]=(c[p>>2]|0)+4;f=c[n>>2]|0}else{q=c[m+68>>2]|0}c[q+(f*36|0)>>2]=c[k+24>>2];v=c[n>>2]|0;c[n>>2]=v+1;c[q+(f*36|0)+4>>2]=v}c[k+24>>2]=0}c[k>>2]=c[k>>2]&1073741695|128;break}p=k+28|0;if((c[p>>2]|0)==-1){n=(c[m+68>>2]|0)+(((c[m+64>>2]|0)+ -1|0)*36|0)|0}else{n=(c[m+56>>2]|0)+(((c[m+52>>2]|0)+ -1|0)*36|0)|0}if((s&2048|0)!=0){p=k+8|0;g=c[p>>2]|0;if(g>>>0>=(e[n+14>>1]|0)>>>0){if((s|0)<0){break}c[k>>2]=s|-2147483648;b[m+16516>>1]=1;break}s=c[n+28>>2]|0;q=s<<1;g=(c[n+24>>2]|0)+(da(s,g)|0)|0;s=0;d:while(1){while(1){if(s>>>0>=q>>>0){break d}a[g]=(a[g]<<4&255)+(a[285344+(a[f+s|0]|0)|0]|0)<<24>>24;t=s+1|0;if(t>>>0>=q>>>0|(s&1|0)==0){s=t}else{break}}s=g+1|0;a[s]=0;g=s;s=t}n=b[n+12>>1]|0;if(n<<16>>16!=0){v=a[285472+((da(e[(c[r>>2]|0)+16518>>1]|0,n&65535)|0)&7)|0]|0;a[g]=a[g]&v}n=a[f+q|0]|0;if(n<<24>>24==48){o=100}else{if((a[285344+(n<<24>>24)|0]|0)!=0){o=100}}do{if((o|0)==100){n=c[k>>2]|0;if((n&1073741824|0)!=0){break}c[k>>2]=n|1073741824;b[m+16516>>1]=1}}while(0);c[p>>2]=(c[p>>2]|0)+1;break}if((iX(f|0,285480,6)|0)==0){if((s&128|0)==0){c[l>>2]=182;p=182;m=k;break a}m=k+8232|0;p=YU(m,285208,f,g)|0;c[l>>2]=p;if((p|0)!=0){m=k;break a}p=c[(c[m>>2]|0)+4>>2]|0;e:do{if((p|0)==0){m=0}else{q=a[p]|0;o=285544;do{if(q<<24>>24==48){v=a[p+1|0]|0;if(!(v<<24>>24==88|v<<24>>24==120)){q=48;m=10;o=285544;break}p=p+2|0;q=a[p]|0;m=16;o=285512}else if(q<<24>>24==0){m=0;break e}else{m=10}}while(0);q=q<<24>>24;if((d[o+(q>>3)|0]&1<<(q&7)|0)==0){m=0;break}else{f=0}do{v=da(f,m)|0;f=(d[285344+q|0]|0)+v|0;p=p+1|0;q=a[p]|0;}while((1<<(q&7)&d[o+(q>>3)|0]|0)!=0);m=f&65535}}while(0);b[n+8>>1]=m;c[k>>2]=c[k>>2]|256;break}if((iX(f|0,285488,6)|0)==0){q=k+8232|0;p=YU(q,285208,f,g)|0;c[l>>2]=p;if((p|0)!=0){m=k;break a}f=c[(c[q>>2]|0)+4>>2]|0;f:do{if((f|0)==0){g=0}else{q=a[f]|0;p=285544;do{if(q<<24>>24==0){g=0;break f}else if(q<<24>>24==48){v=a[f+1|0]|0;if(!(v<<24>>24==88|v<<24>>24==120)){q=48;o=10;p=285544;break}f=f+2|0;q=a[f]|0;o=16;p=285512}else{o=10}}while(0);q=q<<24>>24;if((d[p+(q>>3)|0]&1<<(q&7)|0)==0){g=0;break}else{g=0}while(1){g=da(g,o)|0;g=(d[285344+q|0]|0)+g|0;f=f+1|0;q=a[f]|0;if((1<<(q&7)&d[p+(q>>3)|0]|0)==0){break}else{}}}}while(0);b[n+10>>1]=g;o=c[k>>2]|0;if((o&256|0)==0){b[n+8>>1]=_I(g&65535,72e3,da(c[m+20>>2]|0,c[m+16>>2]|0)|0)|0;o=c[k>>2]|0}c[k>>2]=o|512;break}if((iX(f|0,285496,3)|0)!=0){if((iX(f|0,285504,6)|0)!=0){c[l>>2]=3;p=3;m=k;break a}if((s&1024|0)==0){c[l>>2]=183;p=183;m=k;break a}m=((da(e[m+16518>>1]|0,e[n+12>>1]|0)|0)+7|0)>>>3;c[n+28>>2]=m;m=da(m,e[n+14>>1]|0)|0;if(m>>>0>65535){c[l>>2]=184;p=184;m=k;break a}b[n+32>>1]=m;c[n+24>>2]=oJ(j,1,0,m&65535,0,q)|0;p=c[l>>2]|0;if((p|0)!=0){m=k;break a}c[k+8>>2]=0;c[k>>2]=c[k>>2]|2048;break}q=k+8232|0;f=YU(q,285208,f,g)|0;c[l>>2]=f;if((f|0)!=0){p=f;m=k;break a}f=c[(c[q>>2]|0)+4>>2]|0;do{if((f|0)==0){f=0}else{o=a[f]|0;if(o<<24>>24==0){f=0;break}o=o<<24>>24==45;s=o?f+1|0:f;r=a[s]|0;g=285544;do{if(r<<24>>24==48){v=a[s+1|0]|0;if(!(v<<24>>24==88|v<<24>>24==120)){r=48;f=10;g=285544;break}s=s+2|0;r=a[s]|0;f=16;g=285512}else{f=10}}while(0);r=r<<24>>24;if((d[g+(r>>3)|0]&1<<(r&7)|0)==0){s=0}else{t=s;s=0;while(1){s=da(s,f)|0;t=t+1|0;s=(d[285344+r|0]|0)+s<<16>>16;r=a[t]|0;if((1<<(r&7)&d[g+(r>>3)|0]|0)==0){break}else{}}}f=(o?0-s|0:s)&65535}}while(0);o=n+12|0;b[o>>1]=f;g=c[(c[q>>2]|0)+8>>2]|0;do{if((g|0)==0){f=0}else{f=a[g]|0;if(f<<24>>24==0){f=0;break}f=f<<24>>24==45;s=f?g+1|0:g;t=a[s]|0;r=285544;do{if(t<<24>>24==48){v=a[s+1|0]|0;if(!(v<<24>>24==88|v<<24>>24==120)){t=48;g=10;r=285544;break}s=s+2|0;t=a[s]|0;g=16;r=285512}else{g=10}}while(0);t=t<<24>>24;if((d[r+(t>>3)|0]&1<<(t&7)|0)==0){s=0}else{u=s;s=0;while(1){s=da(s,g)|0;u=u+1|0;s=(d[285344+t|0]|0)+s<<16>>16;t=a[u]|0;if((1<<(t&7)&d[r+(t>>3)|0]|0)==0){break}else{}}}f=(f?0-s|0:s)&65535}}while(0);b[n+14>>1]=f;r=c[(c[q>>2]|0)+12>>2]|0;do{if((r|0)==0){r=0}else{g=a[r]|0;if(g<<24>>24==0){r=0;break}g=g<<24>>24==45;u=g?r+1|0:r;t=a[u]|0;s=285544;do{if(t<<24>>24==48){v=a[u+1|0]|0;if(!(v<<24>>24==88|v<<24>>24==120)){t=48;r=10;s=285544;break}u=u+2|0;t=a[u]|0;r=16;s=285512}else{r=10}}while(0);v=t<<24>>24;if((d[s+(v>>3)|0]&1<<(v&7)|0)==0){t=0}else{t=0;while(1){t=da(t,r)|0;u=u+1|0;t=(d[285344+v|0]|0)+t<<16>>16;v=a[u]|0;if((1<<(v&7)&d[s+(v>>3)|0]|0)==0){break}else{}}}r=(g?0-t|0:t)&65535}}while(0);g=n+16|0;b[g>>1]=r;r=c[(c[q>>2]|0)+16>>2]|0;do{if((r|0)==0){r=0}else{q=a[r]|0;if(q<<24>>24==0){r=0;break}q=q<<24>>24==45;t=q?r+1|0:r;u=a[t]|0;s=285544;do{if(u<<24>>24==48){v=a[t+1|0]|0;if(!(v<<24>>24==88|v<<24>>24==120)){u=48;r=10;s=285544;break}t=t+2|0;u=a[t]|0;r=16;s=285512}else{r=10}}while(0);v=u<<24>>24;if((d[s+(v>>3)|0]&1<<(v&7)|0)==0){u=0}else{u=0;while(1){u=da(u,r)|0;t=t+1|0;u=(d[285344+v|0]|0)+u<<16>>16;v=a[t]|0;if((1<<(v&7)&d[s+(v>>3)|0]|0)==0){break}else{}}}r=(q?0-u|0:u)&65535}}while(0);b[n+18>>1]=r;q=f+r<<16>>16;b[n+20>>1]=q;f=n+22|0;b[f>>1]=0-r<<16>>16;r=k+18|0;s=b[r>>1]|0;b[r>>1]=q<<16>>16>s<<16>>16?q:s;q=b[f>>1]|0;f=k+20|0;r=b[f>>1]|0;b[f>>1]=q<<16>>16>r<<16>>16?q:r;r=(b[g>>1]|0)+(b[o>>1]|0)<<16>>16;b[k+22>>1]=r;f=k+16|0;q=b[f>>1]|0;b[f>>1]=r<<16>>16>q<<16>>16?r:q;f=b[g>>1]|0;q=k+12|0;r=b[q>>1]|0;b[q>>1]=f<<16>>16>16?f:r;f=b[g>>1]|0;q=k+14|0;g=b[q>>1]|0;b[q>>1]=f<<16>>16>g<<16>>16?f:g;if((c[k>>2]&512|0)==0){b[n+10>>1]=b[o>>1]|0}do{if((c[c[k+36>>2]>>2]|0)!=0){q=_I(e[n+10>>1]|0,72e3,da(c[m+20>>2]|0,c[m+16>>2]|0)|0)|0;o=n+8|0;q=q&65535;if((b[o>>1]|0)==q<<16>>16){break}b[o>>1]=q;if((c[p>>2]|0)==-1){u=(c[m+64>>2]|0)+ -1|0;v=m+8324+(u>>>5<<2)|0;c[v>>2]=1<<(u&31)|c[v>>2]}else{u=c[n+4>>2]|0;v=m+132+(u>>5<<2)|0;c[v>>2]=1<<(u&31)|c[v>>2]}c[k>>2]=c[k>>2]|4096;b[m+16516>>1]=1}}while(0);c[k>>2]=c[k>>2]|1024}}while(0);p=c[l>>2]|0;o=178}}while(0);do{if((o|0)==178){if((p|0)==0){v=0;i=h;return v|0}else{m=k;break}}}while(0);if((c[m>>2]&64|0)==0){v=p;i=h;return v|0}v=k+24|0;lJ(j,c[v>>2]|0);c[v>>2]=0;v=c[l>>2]|0;i=h;return v|0}function aV(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+4>>2]|0;b=c[b+4>>2]|0;if((a|0)<(b|0)){a=-1;i=d;return a|0}a=(a|0)>(b|0)|0;i=d;return a|0}function bV(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=c[a+132>>2];c[d>>2]=c[a+136>>2];i=i;return 0}function cV(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;h=c[b+140>>2]|0;if((h|0)==0){n=6;i=f;return n|0}if((c[h+72>>2]|0)==0|(d|0)==0){n=6;i=f;return n|0}b=a[d]|0;if(b<<24>>24==0){n=6;i=f;return n|0}m=c[h+128>>2]|0;j=c[m+12>>2]|0;n=b;l=d;k=0;do{l=l+1|0;k=(k*31|0)+(n<<24>>24)|0;n=a[l]|0;}while(n<<24>>24!=0);n=c[m+4>>2]|0;m=j+(((k>>>0)%(n>>>0)|0)<<2)|0;l=c[m>>2]|0;if((l|0)==0){n=6;i=f;return n|0}k=j+(n+ -1<<2)|0;while(1){n=c[l>>2]|0;if((a[n]|0)==b<<24>>24){if((Qc(n|0,d|0)|0)==0){break}}l=m+ -4|0;m=l>>>0>>0?k:l;l=c[m>>2]|0;if((l|0)==0){e=6;g=17;break}}if((g|0)==17){i=f;return e|0}if((l|0)==0){n=6;i=f;return n|0}g=c[h+80>>2]|0;d=c[l+4>>2]|0;if((g+(d<<4)|0)==0){n=6;i=f;return n|0}b=c[g+(d<<4)+4>>2]|0;if((b|0)==3){c[e>>2]=3;c[e+4>>2]=c[g+(d<<4)+12>>2];n=0;i=f;return n|0}else if((b|0)==1){c[e>>2]=1;c[e+4>>2]=c[g+(d<<4)+12>>2];n=0;i=f;return n|0}else if((b|0)==2){c[e>>2]=2;c[e+4>>2]=c[g+(d<<4)+12>>2];n=0;i=f;return n|0}else{n=6;i=f;return n|0}return 0}function dV(a){a=a|0;i=i;return 0}function eV(a){a=a|0;i=i;return}function fV(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=uJ(290784,b)|0;if((e|0)!=0){a=e;i=d;return a|0}if((a|0)==0){a=0;i=d;return a|0}e=mK(c[a+4>>2]|0,287128)|0;if((e|0)==0){a=0;i=d;return a|0}a=Bd[c[(c[e>>2]|0)+32>>2]&255](e,b)|0;i=d;return a|0}function gV(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,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;n=i;q=i;i=i+8|0;v=i;i=i+8|0;r=i;i=i+8|0;x=i;i=i+8|0;y=x;A=i;i=i+8|0;B=A;w=i;i=i+8|0;z=w;I=i;i=i+8|0;H=I;M=i;i=i+8|0;L=M;J=i;i=i+8|0;K=J;P=i;i=i+8|0;Q=P;N=i;i=i+8|0;O=N;U=i;i=i+8|0;W=U;R=i;i=i+8|0;X=R;_=i;i=i+8|0;aa=_;E=i;i=i+8|0;da=E;D=i;i=i+32|0;F=D;Y=i;i=i+32|0;Z=Y;m=i;i=i+8|0;p=m;o=i;i=i+16|0;l=o;t=g+96|0;ca=c[(c[t>>2]|0)+4>>2]|0;s=nK(ca,287128)|0;a:do{if((s|0)==0){u=304}else{C=oK(c[t>>2]|0,287136)|0;G=nK(ca,287160)|0;ha=PJ(f,0)|0;c[m>>2]=ha;if((ha|0)!=0){break}ha=Cd[c[s+4>>2]&63](f,g,h,j,k)|0;c[m>>2]=ha;if((ha|0)==0){if((c[g+148>>2]|0)!=1330926671){u=304;break}if((h|0)<0){ha=0;i=n;return ha|0}if((h|0)>0){c[m>>2]=6;break}t=g+508|0;ha=pd[c[t>>2]&63](g,1751474532,f,0)|0;c[m>>2]=ha;if((ha|0)==0){ha=Cd[c[s+8>>2]&63](f,g,0,j,k)|0;c[m>>2]=ha;if((ha|0)==0){k=0}else{break}}else{ha=Bd[c[s+40>>2]&255](g,f)|0;c[m>>2]=ha;if((ha|0)==0){k=1}else{break}}ha=pd[c[t>>2]&63](g,1128678944,f,0)|0;c[m>>2]=ha;if((ha|0)==0){t=1}else{break}}else{ha=PJ(f,0)|0;c[m>>2]=ha;if((ha|0)!=0){break}c[m>>2]=0;k=1;t=0}s=c[g+100>>2]|0;p=jJ(s,2072,p)|0;if((c[m>>2]|0)!=0){break}c[g+692>>2]=p;S=f+28|0;fa=c[S>>2]|0;bX(p|0,0,2072)|0;bX(D|0,0,32)|0;c[p>>2]=f;c[p+4>>2]=fa;V=p+1324|0;T=IK(f)|0;ha=ZK(f,287200,p)|0;c[E>>2]=ha;b:do{if((ha|0)==0){do{if((a[p+16|0]|0)==1){j=a[p+18|0]|0;if((j&255)<4){break}if((d[p+19|0]|0)>4){break}ha=DK(f,(j&255)+ -4|0)|0;c[E>>2]=ha;if((ha|0)!=0){break b}j=p+20|0;ha=BV(j,f,0)|0;c[E>>2]=ha;if((ha|0)!=0){break b}ba=p+1208|0;ha=BV(ba,f,0)|0;c[E>>2]=ha;if((ha|0)!=0){break b}ha=BV(F,f,1)|0;c[E>>2]=ha;if((ha|0)!=0){break b}$=p+84|0;ha=BV($,f,1)|0;c[E>>2]=ha;if((ha|0)!=0){break b}ha=CV(F,p+1316|0,p+1320|0)|0;c[E>>2]=ha;if((ha|0)!=0){break b}c[p+1312>>2]=c[F+8>>2];ha=c[p+28>>2]|0;c[p+8>>2]=ha;if((ha|0)<=(h|0)){c[E>>2]=6}if((h|0)<0){break b}ha=DV(V,ba,h,f,T,ca)|0;c[E>>2]=ha;if((ha|0)!=0){break b}ba=p+1432|0;ha=PJ(f,(c[ba>>2]|0)+T|0)|0;c[E>>2]=ha;if((ha|0)!=0){break b}ha=BV(p+1176|0,f,0)|0;c[E>>2]=ha;if((ha|0)!=0){break b}V=p+1452|0;if((c[V>>2]|0)==65535){c[p+1892>>2]=0}else{ha=PJ(f,(c[p+1484>>2]|0)+T|0)|0;c[E>>2]=ha;if((ha|0)!=0){break b}ha=BV(Z,f,0)|0;c[E>>2]=ha;if((ha|0)!=0){break b}ea=Z+8|0;ga=c[ea>>2]|0;c:do{if(ga>>>0>32){fa=0}else{c[p+1892>>2]=ga;da=oJ(fa,568,0,ga,0,da)|0;fa=c[E>>2]|0;if((fa|0)!=0){break}fa=c[ea>>2]|0;if((fa|0)!=0){ga=0;while(1){c[p+1896+(ga<<2)>>2]=da+(ga*568|0);ga=ga+1|0;if(ga>>>0>>0){}else{da=0;break}}do{fa=DV(c[p+1896+(da<<2)>>2]|0,Z,da,f,T,ca)|0;c[E>>2]=fa;da=da+1|0;if((fa|0)!=0){break c}}while(da>>>0<(c[ea>>2]|0)>>>0)}ca=c[p+1184>>2]|0;fa=PJ(f,(c[p+1488>>2]|0)+T|0)|0;c[_>>2]=fa;do{if((fa|0)==0){da=VK(f,aa)|0;fa=c[_>>2]|0;if((fa|0)!=0){break}a[p+2024|0]=da;c[p+2044>>2]=0;da=da&255;if((da|0)==3){aa=EK(f,aa)|0;fa=c[_>>2]|0;if((fa|0)!=0){break}ca=((aa&65535)*3|0)+2|0;c[p+2036>>2]=ca}else if((da|0)==0){c[p+2036>>2]=ca}else{c[_>>2]=3;fa=3;break}fa=LK(f,ca,p+2032|0)|0;c[_>>2]=fa}}while(0);c[E>>2]=fa}}while(0);_=c[Y>>2]|0;if((_|0)!=0){ca=c[_+28>>2]|0;aa=Z+28|0;if((c[aa>>2]|0)!=0){NK(_,aa)}lJ(ca,c[Z+24>>2]|0);bX(Y|0,0,32)|0;fa=c[E>>2]|0}if((fa|0)!=0){break b}}if((c[ba>>2]|0)==0){c[E>>2]=2;break b}Y=p+12|0;c[Y>>2]=c[p+1184>>2];ha=CV($,p+1308|0,0)|0;c[E>>2]=ha;if((ha|0)!=0){break b}$=c[Y>>2]|0;d:do{if(($|0)!=0){if((c[V>>2]|0)==65535){aa=0}else{aa=k<<24>>24!=0|0}Z=p+1152|0;u=c[p+1424>>2]|0;_=c[S>>2]|0;c[R>>2]=0;e:do{if(u>>>0>2){ha=u+T|0;ba=p+1156|0;c[ba>>2]=ha;ha=PJ(f,ha)|0;c[R>>2]=ha;if((ha|0)!=0){u=111;break}c[Z>>2]=(VK(f,X)|0)&255;if((c[R>>2]|0)!=0){u=111;break}ca=oJ(_,2,0,$,0,X)|0;u=p+1160|0;c[u>>2]=ca;if((c[R>>2]|0)!=0){u=111;break}b[ca>>1]=0;ca=c[Z>>2]|0;if((ca|0)==2|(ca|0)==1){if($>>>0>1){ca=1}else{u=96;break}while(1){fa=EK(f,X)|0;if((c[R>>2]|0)!=0){u=111;break e}if((c[Z>>2]|0)==2){da=(EK(f,X)|0)&65535;if((c[R>>2]|0)!=0){u=111;break e}}else{da=(VK(f,X)|0)&255;if((c[R>>2]|0)!=0){u=111;break e}}ea=fa&65535;ea=ea>>>0>(da^65535)>>>0?ea^65535:da;if(ca>>>0<$>>>0){da=~ea;ha=0;ga=ca;while(1){b[(c[u>>2]|0)+(ga<<1)>>1]=fa;ha=ha+1|0;ga=ga+1|0;if(ga>>>0>=$>>>0|ha>>>0>ea>>>0){break}else{fa=fa+1<<16>>16}}ea=ca-$|0;ca=ca-(ea>>>0>da>>>0?ea:da)|0}if(ca>>>0>=$>>>0){u=96;break}}}else if((ca|0)==0){ha=MK(f,($<<1)+ -2|0)|0;c[R>>2]=ha;if((ha|0)!=0){u=111;break}if($>>>0>1){X=1;do{ha=RK(f)|0;b[(c[u>>2]|0)+(X<<1)>>1]=ha;X=X+1|0;}while(X>>>0<$>>>0)}PK(f);u=96;break}else{c[R>>2]=3;u=111;break}}else{ba=p+1156|0;c[ba>>2]=u;if((u|0)==1){if($>>>0>166){c[R>>2]=3;u=111;break}u=oJ(_,2,0,$,0,X)|0;c[p+1160>>2]=u;if((c[R>>2]|0)!=0){u=111;break}$W(u|0,288712,$<<1|0)|0;u=96;break}else if((u|0)==2){if($>>>0>87){c[R>>2]=3;u=111;break}u=oJ(_,2,0,$,0,X)|0;c[p+1160>>2]=u;if((c[R>>2]|0)!=0){u=111;break}$W(u|0,289048,$<<1|0)|0;u=96;break}else if((u|0)==0){if($>>>0>229){c[R>>2]=3;u=111;break}u=oJ(_,2,0,$,0,X)|0;c[p+1160>>2]=u;if((c[R>>2]|0)!=0){u=111;break}$W(u|0,288248,$<<1|0)|0;u=96;break}else{c[R>>2]=3;u=111;break}}}while(0);do{if((u|0)==96){if(aa<<24>>24==0){da=c[R>>2]|0}else{c[U>>2]=0;X=p+1168|0;do{if((c[X>>2]|0)==0){aa=p+1160|0;ea=c[aa>>2]|0;da=0;ca=0;do{ba=b[ea+(da<<1)>>1]|0;ca=(ba&65535)>(ca&65535)?ba:ca;da=da+1|0;}while(da>>>0<$>>>0);ba=ca&65535;ca=oJ(_,2,0,ba+1|0,0,W)|0;W=p+1164|0;c[W>>2]=ca;da=c[U>>2]|0;if((da|0)!=0){break}da=$+ -1|0;if((da|0)>-1){b[ca+(e[(c[aa>>2]|0)+(da<<1)>>1]<<1)>>1]=da;ca=$+ -2|0;if((ca|0)>-1){do{b[(c[W>>2]|0)+(e[(c[aa>>2]|0)+(ca<<1)>>1]<<1)>>1]=ca;ca=ca+ -1|0;}while((ca|0)>-1)}da=c[U>>2]|0}else{da=0}c[X>>2]=ba;c[p+1172>>2]=$}else{da=0}}while(0);c[R>>2]=da}if((da|0)==0){c[E>>2]=0;break}else{ba=p+1156|0;u=111;break}}}while(0);if((u|0)==111){ha=p+1160|0;lJ(_,c[ha>>2]|0);c[ha>>2]=0;ga=p+1164|0;lJ(_,c[ga>>2]|0);c[ga>>2]=0;c[Z>>2]=0;c[ba>>2]=0;c[ha>>2]=0;ha=c[R>>2]|0;c[E>>2]=ha;if((ha|0)!=0){break b}}if((c[V>>2]|0)!=65535){break}R=c[Y>>2]|0;W=c[p+1428>>2]|0;c[N>>2]=0;U=p+1160|0;f:do{if((c[U>>2]|0)==0){c[N>>2]=3;W=3}else{V=0;do{b[p+128+(V<<1)>>1]=0;b[p+640+(V<<1)>>1]=0;V=V+1|0;}while(V>>>0<256);do{if(W>>>0>1){W=W+T|0;c[p+120>>2]=W;W=PJ(f,W)|0;c[N>>2]=W;if((W|0)!=0){break f}P=p+116|0;c[P>>2]=(VK(f,O)|0)&255;W=c[N>>2]|0;if((W|0)!=0){break f}T=VK(f,O)|0;Q=T&255;W=c[N>>2]|0;if((W|0)!=0){break f}S=c[P>>2]&127;do{if((S|0)==1){S=p+124|0;c[S>>2]=0;if(T<<24>>24==0){break}else{V=1;T=0}while(1){X=(VK(f,O)|0)&255;W=c[N>>2]|0;if((W|0)!=0){break f}Y=VK(f,O)|0;W=c[N>>2]|0;if((W|0)!=0){break f}W=(Y&255)+1|0;if(W>>>0>(c[S>>2]|0)>>>0){c[S>>2]=W}W=W+V|0;if(V>>>0>>0){while(1){if(V>>>0>>0&X>>>0<256){b[p+640+(X<<1)>>1]=V;b[p+128+(X<<1)>>1]=b[(c[U>>2]|0)+(V<<1)>>1]|0}V=V+1|0;if(V>>>0>>0){X=X+1|0}else{break}}}T=T+1|0;if(T>>>0>>0){V=W}else{break}}if((c[S>>2]|0)>>>0<=256){break}c[S>>2]=256}else if((S|0)==0){c[p+124>>2]=Q+1;W=MK(f,Q)|0;c[N>>2]=W;if((W|0)!=0){break f}if(T<<24>>24!=0){V=1;S=c[f+32>>2]|0;while(1){T=d[S]|0;if(V>>>0>>0){b[p+640+(T<<1)>>1]=V;b[p+128+(T<<1)>>1]=b[(c[U>>2]|0)+(V<<1)>>1]|0}V=V+1|0;if(V>>>0>Q>>>0){break}else{S=S+1|0}}}PK(f)}else{c[N>>2]=3;W=3;break f}}while(0);if((c[P>>2]&128|0)==0){ha=c[N>>2]|0;c[E>>2]=ha;if((ha|0)==0){break d}else{break b}}Q=VK(f,O)|0;P=Q&255;W=c[N>>2]|0;if((W|0)!=0){break f}if(Q<<24>>24==0){break}T=(R|0)==0;S=0;do{Q=(VK(f,O)|0)&255;W=c[N>>2]|0;if((W|0)!=0){break f}V=EK(f,O)|0;W=c[N>>2]|0;if((W|0)!=0){break f}b[p+128+(Q<<1)>>1]=V;g:do{if(!T){X=c[U>>2]|0;Y=0;while(1){W=Y+1|0;if((b[X+(Y<<1)>>1]|0)==V<<16>>16){break}if(W>>>0>>0){Y=W}else{break g}}b[p+640+(Q<<1)>>1]=Y}}while(0);S=S+1|0;}while(S>>>0

>>0)}else{if((W|0)==1){$W(p+128|0,287736,512)|0}else if((W|0)==0){$W(p+128|0,287224,512)|0}else{c[N>>2]=3;W=3;break f}f=p+124|0;c[f>>2]=0;T=c[S>>2]|0;c[P>>2]=0;O=p+1168|0;if((c[O>>2]|0)==0){if((R|0)==0){S=0}else{V=c[U>>2]|0;W=0;X=0;do{S=b[V+(W<<1)>>1]|0;X=(S&65535)>(X&65535)?S:X;W=W+1|0;}while(W>>>0>>0);S=X&65535}T=oJ(T,2,0,S+1|0,0,Q)|0;Q=p+1164|0;c[Q>>2]=T;W=c[P>>2]|0;if((W|0)!=0){c[N>>2]=W;break f}V=R+ -1|0;if((V|0)>-1){b[T+(e[(c[U>>2]|0)+(V<<1)>>1]<<1)>>1]=V;T=R+ -2|0;if((T|0)>-1){do{b[(c[Q>>2]|0)+(e[(c[U>>2]|0)+(T<<1)>>1]<<1)>>1]=T;T=T+ -1|0;}while((T|0)>-1)}W=c[P>>2]|0}else{W=0}c[O>>2]=S;c[p+1172>>2]=R;c[N>>2]=W;if((W|0)!=0){break f}}else{c[N>>2]=0;Q=p+1164|0}N=0;do{P=p+128+(N<<1)|0;R=b[P>>1]|0;do{if(R<<16>>16==0){u=174}else{R=R&65535;if((c[O>>2]|0)>>>0>>0){u=174;break}R=b[(c[Q>>2]|0)+(R<<1)>>1]|0;if(R<<16>>16==0){u=174;break}b[p+640+(N<<1)>>1]=R;N=N+1|0;c[f>>2]=N}}while(0);if((u|0)==174){u=0;b[p+640+(N<<1)>>1]=0;b[P>>1]=0;N=N+1|0}}while(N>>>0<256)}}while(0);c[E>>2]=0;break d}}while(0);c[E>>2]=W;break b}}while(0);N=c[(c[j>>2]|0)+28>>2]|0;ha=AV(j,h,H,L)|0;c[J>>2]=ha;do{if((ha|0)==0){L=c[M>>2]|0;K=jJ(N,L+1|0,K)|0;if((c[J>>2]|0)==0){$W(K|0,c[I>>2]|0,L|0)|0;a[K+L|0]=0}if((c[p+48>>2]|0)!=0){break}NK(c[j>>2]|0,H)}else{K=0}}while(0);c[p+1304>>2]=K;break b}}while(0);c[E>>2]=2}}while(0);I=c[D>>2]|0;if((I|0)!=0){J=c[I+28>>2]|0;H=F+28|0;if((c[H>>2]|0)!=0){NK(I,H)}lJ(J,c[F+24>>2]|0);bX(D|0,0,32)|0}ha=c[E>>2]|0;c[m>>2]=ha;if((ha|0)!=0){break}c[p+2052>>2]=G;E=p+2056|0;c[E>>2]=C;c[g+4>>2]=h;F=g+16|0;c[F>>2]=c[p+12>>2];D=p+1452|0;if((c[D>>2]|0)==65535&(C|0)==0){u=304;break}C=p+1388|0;I=c[C>>2]|0;if((I|0)==0){if(k<<24>>24==0){I=e[g+68>>1]|0}else{I=1e3}c[C>>2]=I}H=p+1372|0;G=p+1392|0;J=p+1384|0;K=c[J>>2]|0;K=(K|0)<0?0-K|0:K;if((K|0)==65536){I=c[p+1396>>2]|0;J=G}else{c[C>>2]=bJ(I,K)|0;c[H>>2]=bJ(c[H>>2]|0,K)|0;I=p+1380|0;c[I>>2]=bJ(c[I>>2]|0,K)|0;I=p+1376|0;c[I>>2]=bJ(c[I>>2]|0,K)|0;c[J>>2]=bJ(c[J>>2]|0,K)|0;c[G>>2]=bJ(c[G>>2]|0,K)|0;J=p+1396|0;I=bJ(c[J>>2]|0,K)|0;c[J>>2]=I;J=G}c[J>>2]=c[J>>2]>>16;c[p+1396>>2]=I>>16;K=c[p+1892>>2]|0;if((K|0)!=0){I=p+1896|0;do{K=K+ -1|0;J=c[I+(K<<2)>>2]|0;L=J+64|0;M=c[L>>2]|0;if((M|0)==0){$W(J+48|0,H|0,16)|0;ga=G;ha=c[ga+4>>2]|0;f=J+68|0;c[f>>2]=c[ga>>2];c[f+4>>2]=ha;f=c[C>>2]|0}else{j=c[C>>2]|0;if(j>>>0>1&M>>>0>1){M=j>>>0>>0?j:M}else{M=1}dJ(H,J+48|0,M);eJ(J+68|0,H,M);f=_I(c[L>>2]|0,c[C>>2]|0,M)|0}c[L>>2]=f;M=J+68|0;j=J+60|0;N=c[j>>2]|0;N=(N|0)<0?0-N|0:N;if((N|0)==65536){L=c[J+72>>2]|0}else{f=bJ(f,N)|0;if(f>>>0>1e5){f=((f+500|0)>>>0)/1e3|0}c[L>>2]=f;ha=J+48|0;c[ha>>2]=bJ(c[ha>>2]|0,N)|0;ha=J+56|0;c[ha>>2]=bJ(c[ha>>2]|0,N)|0;ha=J+52|0;c[ha>>2]=bJ(c[ha>>2]|0,N)|0;c[j>>2]=bJ(c[j>>2]|0,N)|0;c[M>>2]=bJ(c[M>>2]|0,N)|0;ha=J+72|0;L=bJ(c[ha>>2]|0,N)|0;c[ha>>2]=L}c[M>>2]=c[M>>2]>>16;c[J+72>>2]=L>>16;}while((K|0)!=0)}k=k<<24>>24==0;if(!k){c[g>>2]=c[p+8>>2];if((c[D>>2]|0)==65535){G=c[p+1184>>2]|0}else{G=(c[p+1168>>2]|0)+1|0}c[F>>2]=G;c[g+52>>2]=c[p+1404>>2]>>16;ga=c[p+1408>>2]>>16;c[g+56>>2]=ga;c[g+60>>2]=(c[p+1412>>2]|0)+65535>>16;ha=(c[p+1416>>2]|0)+65535>>16;c[g+64>>2]=ha;F=c[C>>2]|0;b[g+68>>1]=F;ha=ha&65535;b[g+70>>1]=ha;C=ga&65535;b[g+72>>1]=C;F=((((F&65535)*12|0)>>>0)/10|0)&65535;C=(ha<<16>>16)-(C<<16>>16)|0;b[g+74>>1]=(F<<16>>16|0)<(C|0)?C&65535:F;b[g+80>>1]=(c[p+1356>>2]|0)>>>16;b[g+82>>1]=(c[p+1360>>2]|0)>>>16;C=p+20|0;F=c[(c[C>>2]|0)+28>>2]|0;ha=AV(C,h,y,B)|0;c[w>>2]=ha;do{if((ha|0)==0){A=c[A>>2]|0;z=jJ(F,A+1|0,z)|0;if((c[w>>2]|0)==0){$W(z|0,c[x>>2]|0,A|0)|0;a[z+A|0]=0}if((c[p+48>>2]|0)!=0){w=z;break}NK(c[C>>2]|0,y);w=z}else{w=0}}while(0);x=g+20|0;c[x>>2]=w;h:do{if((w|0)==0){u=c[p+1492>>2]|0;if((u|0)==65535){u=261;break}if(u>>>0>390){r=u+ -391|0;if((c[p+1312>>2]|0)>>>0<=r>>>0){u=261;break}r=c[(c[p+1316>>2]|0)+(r<<2)>>2]|0}else{r=c[E>>2]|0;if((r|0)==0){u=261;break}r=jd[c[r+20>>2]&511](u)|0}if((r|0)==0){u=261;break}c[x>>2]=aL(s,r,v)|0;u=261}else{y=c[p+1336>>2]|0;do{if((y|0)==65535){v=0}else{if(y>>>0>390){v=y+ -391|0;if((c[p+1312>>2]|0)>>>0<=v>>>0){v=0;break}v=c[(c[p+1316>>2]|0)+(v<<2)>>2]|0;break}else{v=c[E>>2]|0;if((v|0)==0){v=0;break}v=jd[c[v+20>>2]&511](y)|0;w=c[x>>2]|0;break}}}while(0);B=(ZW(w|0)|0)+1|0;C=w+6|0;F=(B|0)>7;i:do{if((B|0)>6){x=w+1|0;A=w+2|0;z=w+3|0;y=w+4|0;h=w+5|0;G=1;j:while(1){if((a[C]|0)!=43){break i}G=((a[y]|0)+ -65<<24>>24&255)<26?((a[z]|0)+ -65<<24>>24&255)<26?((a[A]|0)+ -65<<24>>24&255)<26?((a[x]|0)+ -65<<24>>24&255)<26?((a[w]|0)+ -65<<24>>24&255)<26?G:0:0:0:0:0;if(G<<24>>24==0|((a[h]|0)+ -65<<24>>24&255)>25){break i}if(F){H=7}else{continue}while(1){a[w+(H+ -7)|0]=a[w+H|0]|0;H=H+1|0;if((H|0)<(B|0)){}else{continue j}}}}}while(0);x=c[p+1340>>2]|0;do{if((x|0)==65535){x=0;u=240}else if((x|0)!=0){if(x>>>0>390){u=x+ -391|0;if((c[p+1312>>2]|0)>>>0<=u>>>0){x=0;u=240;break}x=c[(c[p+1316>>2]|0)+(u<<2)>>2]|0;u=240;break}else{u=c[E>>2]|0;if((u|0)==0){x=0;u=240;break}x=jd[c[u+20>>2]&511](x)|0;u=240;break}}}while(0);if((u|0)==240){w=(x|0)==0?w:x}if((v|0)==0|(w|0)==0){u=261;break}x=a[v]|0;if(x<<24>>24==0){u=261;break}k:while(1){while(1){y=a[w]|0;if(x<<24>>24==y<<24>>24){u=245;break}if(x<<24>>24==45|x<<24>>24==32){break}if(y<<24>>24==0){break k}else if(!(y<<24>>24==45|y<<24>>24==32)){u=261;break h}if(x<<24>>24==0){u=261;break h}w=w+1|0}if((u|0)==245){u=0;w=w+1|0}v=v+1|0;x=a[v]|0;if(x<<24>>24==0){u=261;break h}}r=aL(s,v,r)|0;if((r|0)==0){u=261;break}c[g+24>>2]=r}}while(0);if((u|0)==261){c[g+24>>2]=aL(s,287176,q)|0}q=t<<24>>24==0?2065:2073;c[g+8>>2]=(a[p+1348|0]|0)==0?q:q|4;q=(c[p+1352>>2]|0)!=0|0;r=c[p+1344>>2]|0;do{if((r|0)!=65535){if(r>>>0>390){r=r+ -391|0;if((c[p+1312>>2]|0)>>>0<=r>>>0){break}r=c[(c[p+1316>>2]|0)+(r<<2)>>2]|0}else{s=c[E>>2]|0;if((s|0)==0){break}r=jd[c[s+20>>2]&511](r)|0}if((r|0)==0){break}if((Qc(r|0,287184)|0)!=0){if((Qc(r|0,287192)|0)!=0){break}}q=q|2}}while(0);do{if((q&2|0)==0){r=c[g+24>>2]|0;if((r|0)==0){break}if((vc(r|0,287184,4)|0)!=0){if((vc(r|0,287192,5)|0)!=0){break}}q=q|2}}while(0);c[g+12>>2]=q}q=c[D>>2]|0;if((q|0)==65535){q=g+8|0;c[q>>2]=c[q>>2]|512;q=c[D>>2]|0}if(!((q|0)==65535|k)){ha=g+8|0;c[ha>>2]=c[ha>>2]|4096}q=g+36|0;s=c[q>>2]|0;l:do{if((s|0)==0){s=0;r=1;u=288}else{t=c[g+40>>2]|0;r=0;while(1){w=c[t+(r<<2)>>2]|0;v=b[w+8>>1]|0;if(v<<16>>16==3){if((b[w+10>>1]|0)==1){break l}}else if(v<<16>>16==0){break l}v=r+1|0;if(v>>>0>>0){r=v}else{break}}r=r+2|0;u=288}}while(0);do{if((u|0)==288){if(k){if(r>>>0>15){break a}}else{if((c[D>>2]|0)!=65535|r>>>0>15){break a}}c[o>>2]=g;b[l+8>>1]=3;b[l+10>>1]=1;c[l+4>>2]=1970170211;ha=eK(287088,0,l,0)|0;c[m>>2]=ha;if(!((ha|0)==0|(ha|0)==163)){break a}c[m>>2]=0;r=g+92|0;if((c[r>>2]|0)!=0){r=s;break}if((s|0)==(c[q>>2]|0)){r=s;break}c[r>>2]=c[(c[g+40>>2]|0)+(s<<2)>>2];r=s}}while(0);if(r>>>0>15){break}if((c[p+124>>2]|0)==0){break}c[o>>2]=g;b[l+8>>1]=7;g=c[p+120>>2]|0;do{if((g|0)==0){b[l+10>>1]=0;c[l+4>>2]=1094995778}else{o=l+10|0;if((g|0)==1){b[o>>1]=1;c[l+4>>2]=1094992453;break}else{b[o>>1]=2;c[l+4>>2]=1094992451;break}}}while(0);c[m>>2]=eK(287048,0,l,0)|0}}while(0);if((u|0)==304){c[m>>2]=2}ha=c[m>>2]|0;i=n;return ha|0}function hV(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;if((b|0)==0){i=d;return}e=c[b+100>>2]|0;f=c[b+532>>2]|0;if((f|0)!=0){fd[c[f+12>>2]&511](b)}f=b+692|0;g=c[f>>2]|0;if((g|0)==0){i=d;return}b=c[g+4>>2]|0;h=g+84|0;j=c[h>>2]|0;if((j|0)!=0){k=c[j+28>>2]|0;l=g+112|0;if((c[l>>2]|0)!=0){NK(j,l)}lJ(k,c[g+108>>2]|0);bX(h|0,0,32)|0}j=g+1208|0;k=c[j>>2]|0;if((k|0)!=0){l=c[k+28>>2]|0;h=g+1236|0;if((c[h>>2]|0)!=0){NK(k,h)}lJ(l,c[g+1232>>2]|0);bX(j|0,0,32)|0}h=g+20|0;j=c[h>>2]|0;if((j|0)!=0){k=c[j+28>>2]|0;l=g+48|0;if((c[l>>2]|0)!=0){NK(j,l)}lJ(k,c[g+44>>2]|0);bX(h|0,0,32)|0}l=g+1176|0;h=c[l>>2]|0;if((h|0)!=0){j=c[h+28>>2]|0;k=g+1204|0;if((c[k>>2]|0)!=0){NK(h,k)}lJ(j,c[g+1200>>2]|0);bX(l|0,0,32)|0}h=g+1892|0;l=c[h>>2]|0;if((l|0)!=0){j=0;do{k=c[g+1896+(j<<2)>>2]|0;if((k|0)!=0){l=k+532|0;m=c[l>>2]|0;if((m|0)!=0){n=c[m+28>>2]|0;o=k+560|0;if((c[o>>2]|0)!=0){NK(m,o)}lJ(n,c[k+556>>2]|0);bX(l|0,0,32)|0}l=k+564|0;lJ(b,c[l>>2]|0);c[l>>2]=0;l=c[h>>2]|0}j=j+1|0;}while(j>>>0>>0);o=g+1896|0;lJ(b,c[o>>2]|0);c[o>>2]=0}c[g+116>>2]=0;c[g+120>>2]=0;c[g+124>>2]=0;j=c[(c[g>>2]|0)+28>>2]|0;k=g+1164|0;lJ(j,c[k>>2]|0);c[k>>2]=0;c[g+1168>>2]=0;k=g+1160|0;lJ(j,c[k>>2]|0);c[k>>2]=0;c[g+1152>>2]=0;c[g+1156>>2]=0;k=g+1856|0;j=c[k>>2]|0;if((j|0)!=0){l=c[j+28>>2]|0;h=g+1884|0;if((c[h>>2]|0)!=0){NK(j,h)}lJ(l,c[g+1880>>2]|0);bX(k|0,0,32)|0}h=g+1888|0;lJ(b,c[h>>2]|0);c[h>>2]=0;h=g+2032|0;if((c[h>>2]|0)!=0){NK(c[g>>2]|0,h)}c[g+2036>>2]=0;a[g+2024|0]=0;c[g+2028>>2]=0;o=g+2060|0;lJ(b,c[o>>2]|0);c[o>>2]=0;o=g+1304|0;lJ(b,c[o>>2]|0);c[o>>2]=0;o=g+1308|0;lJ(b,c[o>>2]|0);c[o>>2]=0;o=g+1316|0;lJ(b,c[o>>2]|0);c[o>>2]=0;o=g+1320|0;lJ(b,c[o>>2]|0);c[o>>2]=0;lJ(e,c[f>>2]|0);c[f>>2]=0;i=d;return}function iV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;d=i;i=i+8|0;f=d;e=i;i=i+200|0;c[d>>2]=0;g=c[a>>2]|0;h=c[(c[g+692>>2]|0)+2052>>2]|0;g=mK(c[(c[g+96>>2]|0)+4>>2]|0,287160)|0;do{if(!((g|0)==0|(h|0)==0)){h=c[h>>2]|0;if((h|0)==0){break}g=jd[h&511](g)|0;if((g|0)==0){break}j=c[a>>2]|0;h=c[j+692>>2]|0;f=jJ(c[j+100>>2]|0,132,f)|0;j=c[d>>2]|0;if((j|0)!=0){l=j;i=b;return l|0}KV(h+1324|0,e);j=sd[c[g>>2]&127](c[(c[a>>2]|0)+100>>2]|0,e,f)|0;c[d>>2]=j;if((j|0)!=0){l=j;i=b;return l|0}k=h+1896|0;j=f+4|0;l=c[h+1892>>2]|0;while(1){if((l|0)==0){e=9;break}l=l+ -1|0;KV(c[k+(l<<2)>>2]|0,e);h=sd[c[g>>2]&127](c[(c[a>>2]|0)+100>>2]|0,e,j+(l<<2)|0)|0;c[d>>2]=h;if((h|0)!=0){e=11;break}}if((e|0)==9){c[a+40>>2]=f;break}else if((e|0)==11){i=b;return h|0}}}while(0);c[a+44>>2]=-1;l=c[d>>2]|0;i=b;return l|0}function jV(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;f=c[a>>2]|0;d=c[f+692>>2]|0;a=c[a+40>>2]|0;if((a|0)==0){i=b;return}e=c[d+2052>>2]|0;f=mK(c[(c[f+96>>2]|0)+4>>2]|0,287160)|0;if((f|0)==0|(e|0)==0){i=b;return}e=c[e>>2]|0;if((e|0)==0){i=b;return}e=jd[e&511](f)|0;if((e|0)==0){i=b;return}e=e+8|0;fd[c[e>>2]&511](c[a>>2]|0);d=c[d+1892>>2]|0;if((d|0)==0){i=b;return}do{d=d+ -1|0;fd[c[e>>2]&511](c[a+4+(d<<2)>>2]|0);}while((d|0)!=0);i=b;return}function kV(a){a=a|0;var b=0,d=0,e=0;b=i;e=c[a+4>>2]|0;d=c[(c[e+692>>2]|0)+2052>>2]|0;if((d|0)==0){i=b;return 0}e=mK(c[(c[e+96>>2]|0)+4>>2]|0,287160)|0;if((e|0)==0){i=b;return 0}e=jd[c[d+8>>2]&511](e)|0;c[(c[a+156>>2]|0)+36>>2]=e;i=b;return 0}function lV(a){a=a|0;c[(c[a+156>>2]|0)+36>>2]=0;i=i;return}function mV(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var 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,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;k=i;F=i;i=i+8|0;E=F;V=i;i=i+8|0;U=V;X=i;i=i+928|0;o=X;r=i;i=i+16|0;q=r;N=i;i=i+8|0;M=N;G=i;i=i+8|0;D=G;J=i;i=i+8|0;T=J;A=i;i=i+16|0;C=A;m=i;i=i+16|0;l=m;t=i;i=i+8|0;s=t;v=i;i=i+8|0;x=v;w=i;i=i+8|0;y=w;if((f|0)==0){da=37;i=k;return da|0}n=j|3;u=(g|0)==0?n:j;j=(u&1|0)==0?g:0;K=(j|0)==0;do{if(K){z=c[f+4>>2]|0}else{z=c[g>>2]|0;if((z|0)==(c[f+4>>2]|0)){break}else{C=35}i=k;return C|0}}while(0);I=z+692|0;H=c[I>>2]|0;L=H+1324|0;do{if((c[L+128>>2]|0)==65535){p=10}else{g=c[H+1164>>2]|0;if((g|0)==0){p=10;break}if((h|0)==0){h=0;break}if((c[H+1168>>2]|0)>>>0>>0){da=6;i=k;return da|0}g=b[g+(h<<1)>>1]|0;if(g<<16>>16==0){C=6}else{h=g&65535;break}i=k;return C|0}}while(0);do{if((p|0)==10){if((c[H+12>>2]|0)>>>0>h>>>0){break}else{C=6}i=k;return C|0}}while(0);n=(u&1024|0)==0?u:n;g=f+164|0;c[g>>2]=65536;u=f+168|0;c[u>>2]=65536;B=(j|0)!=0;do{if(B){c[g>>2]=c[j+16>>2];c[u>>2]=c[j+20>>2];P=c[j>>2]|0;O=c[P+532>>2]|0;Q=c[j+44>>2]|0;if((Q|0)==-1){break}if((c[O+140>>2]|0)==0){break}if((n&8|0)!=0){break}if((dd[c[O+104>>2]&1](z,Q,h,n,c[P+104>>2]|0,f+76|0,M)|0)!=0){break}b[f+110>>1]=0;b[f+108>>1]=0;c[f+24>>2]=d[M+1|0]<<6;c[f+28>>2]=d[N]<<6;l=a[M+2|0]|0;c[f+32>>2]=l<<6;m=a[M+3|0]|0;c[f+36>>2]=m<<6;c[f+40>>2]=d[M+4|0]<<6;p=a[M+5|0]|0;c[f+44>>2]=p<<6;o=a[M+6|0]|0;c[f+48>>2]=o<<6;c[f+52>>2]=d[M+7|0]<<6;c[f+72>>2]=1651078259;q=f+100|0;if((n&16|0)==0){c[q>>2]=l;c[f+104>>2]=m;da=0;i=k;return da|0}else{c[q>>2]=p;c[f+104>>2]=o;da=0;i=k;return da|0}}}while(0);if((n&16384|0)!=0){da=6;i=k;return da|0}M=c[H+1892>>2]|0;do{if((M|0)==0){$W(r|0,L+48|0,16)|0;O=c[H+1392>>2]|0;P=c[H+1396>>2]|0;R=0}else{N=H+2024|0;O=d[N]|0;a:do{if((O|0)==0){P=a[(c[N+8>>2]|0)+h|0]|0}else if((O|0)==3){W=N+16|0;S=N+20|0;if((h-(c[W>>2]|0)|0)>>>0<(c[S>>2]|0)>>>0){P=a[N+24|0]|0;break}Y=c[N+8>>2]|0;Q=Y+(c[N+12>>2]|0)|0;R=(d[Y]<<8&65535|d[Y+1|0])&65535;Y=Y+2|0;while(1){if(R>>>0>h>>>0){P=0;break a}P=a[Y]|0;O=Y+3|0;Y=(d[Y+1|0]<<8&65535|d[Y+2|0])&65535;if(Y>>>0>h>>>0){break}if(O>>>0>>0){R=Y;Y=O}else{P=0;break a}}c[W>>2]=R;c[S>>2]=Y-R;a[N+24|0]=P}else{P=0}}while(0);if((P&255)>>>0>=M>>>0){P=M+255&255}L=c[L+64>>2]|0;P=H+1896+((P&255)<<2)|0;O=c[P>>2]|0;M=c[O+64>>2]|0;$W(r|0,O+48|0,16)|0;P=c[P>>2]|0;O=c[P+68>>2]|0;P=c[P+72>>2]|0;if((L|0)==(M|0)){R=0;break}c[g>>2]=_I(c[g>>2]|0,L,M)|0;c[u>>2]=_I(c[u>>2]|0,L,M)|0;R=1}}while(0);L=f+108|0;N=f+110|0;b[N>>1]=0;b[L>>1]=0;Q=(n&1|0)==0;if(Q){M=(n&2|0)!=0}else{M=1}S=f+72|0;c[S>>2]=1869968492;Y=n>>>16&15;$=c[I>>2]|0;bX(X|0,0,928)|0;a[o+65|0]=1;_=o+4|0;c[_>>2]=z;W=o+8|0;c[W>>2]=f;c[X>>2]=c[z+100>>2];aa=f+156|0;X=c[c[aa>>2]>>2]|0;c[o+12>>2]=X;c[o+16>>2]=X+20;c[o+20>>2]=X+56;kJ(X);X=o+72|0;c[X>>2]=0;Z=o+68|0;c[Z>>2]=0;if(!(M|K)){c[X>>2]=c[c[j+40>>2]>>2];c[Z>>2]=c[(c[aa>>2]|0)+36>>2]}bX(o+24|0,0,24)|0;Z=o+76|0;c[Z>>2]=$;X=c[$+92>>2]|0;c[o+892>>2]=X;c[o+908>>2]=c[$+1308>>2];do{if((c[$+1368>>2]|0)==1){X=0}else{if(X>>>0<1240){X=107;break}X=X>>>0<33900?1131:32768}}while(0);c[o+900>>2]=X;c[o+920>>2]=Y;if((n&256|0)!=0){a[o+753|0]=1}X=n&1024;a[o+66|0]=0;Y=z+128|0;$=c[(c[Y>>2]|0)+52>>2]|0;if(($|0)==0){T=AV((c[I>>2]|0)+1176|0,h,D,T)|0}else{T=sd[c[c[$>>2]>>2]&127](c[$+4>>2]|0,h,U)|0;c[G>>2]=c[V>>2];c[J>>2]=c[U+4>>2]}if((T|0)!=0){da=T;i=k;return da|0}U=c[(c[_>>2]|0)+692>>2]|0;T=c[U+1892>>2]|0;do{if((T|0)==0){T=U+1324|0}else{V=d[U+2024|0]|0;b:do{if((V|0)==0){_=a[(c[U+2032>>2]|0)+h|0]|0}else if((V|0)==3){aa=U+2040|0;$=U+2044|0;if((h-(c[aa>>2]|0)|0)>>>0<(c[$>>2]|0)>>>0){_=a[U+2048|0]|0;break}da=c[U+2032>>2]|0;V=da+(c[U+2036>>2]|0)|0;ca=(d[da]<<8&65535|d[da+1|0])&65535;da=da+2|0;while(1){if(ca>>>0>h>>>0){_=0;break b}_=a[da]|0;ba=da+3|0;da=(d[da+1|0]<<8&65535|d[da+2|0])&65535;if(da>>>0>h>>>0){break}if(ba>>>0>>0){ca=da;da=ba}else{_=0;break b}}c[aa>>2]=ca;c[$>>2]=da-ca;a[U+2048|0]=_}else{_=0}}while(0);V=_&255;if(V>>>0>=T>>>0){da=3;i=k;return da|0}T=c[U+1896+(V<<2)>>2]|0;if((c[o+68>>2]|0)==0|K){break}c[o+72>>2]=c[(c[j+40>>2]|0)+4+(V<<2)>>2]}}while(0);K=c[T+540>>2]|0;c[o+888>>2]=K;c[o+904>>2]=c[T+564>>2];do{if((c[(c[Z>>2]|0)+1368>>2]|0)==1){K=0}else{if(K>>>0<1240){K=107;break}K=K>>>0<33900?1131:32768}}while(0);c[o+896>>2]=K;K=o+744|0;c[K>>2]=c[T+524>>2];c[o+748>>2]=c[T+528>>2];J=c[J>>2]|0;T=LV(o,c[G>>2]|0,J)|0;U=(c[Y>>2]|0)+52|0;do{if((c[U>>2]|0)==0){E=c[I>>2]|0;if((c[E+1204>>2]|0)!=0){break}NK(c[E+1176>>2]|0,D)}else{c[F>>2]=c[G>>2];c[E+4>>2]=J;da=c[U>>2]|0;hd[c[(c[da>>2]|0)+4>>2]&127](c[da+4>>2]|0,E)}}while(0);if((T|0)!=0){da=T;i=k;return da|0}do{if((c[(c[Y>>2]|0)+52>>2]|0)==0){D=H+1176|0;E=c[D+24>>2]|0;if((E|0)==0){break}c[f+136>>2]=(c[D+28>>2]|0)+((c[E+(h<<2)>>2]|0)+ -1);c[f+140>>2]=J}else{c[f+136>>2]=0;c[f+140>>2]=0}}while(0);D=c[W>>2]|0;if((D|0)!=0){$W(D+108|0,c[o+16>>2]|0,20)|0}D=c[(c[Y>>2]|0)+52>>2]|0;do{if((D|0)!=0){if((c[(c[D>>2]|0)+8>>2]|0)==0){break}$=o+32|0;c[A>>2]=c[$>>2];c[C+4>>2]=0;ba=o+40|0;aa=C+8|0;c[aa>>2]=c[ba>>2];da=o+44|0;ca=C+12|0;c[ca>>2]=c[da>>2];_=c[(c[Y>>2]|0)+52>>2]|0;C=pd[c[(c[_>>2]|0)+8>>2]&63](c[_+4>>2]|0,h,0,C)|0;c[$>>2]=c[A>>2];c[ba>>2]=c[aa>>2];c[da>>2]=c[ca>>2];if((C|0)==0){break}i=k;return C|0}}while(0);if((X|0)!=0){da=c[f+156>>2]|0;c[f+32>>2]=c[o+32>>2];c[f+40>>2]=c[K>>2];$W(da+12|0,r|0,16)|0;c[da+28>>2]=O;c[da+32>>2]=P;a[da+8|0]=1;da=0;i=k;return da|0}A=f+24|0;da=c[K>>2]|0;C=f+40|0;c[C>>2]=da;c[f+56>>2]=da;a[(c[f+156>>2]|0)+8|0]=0;do{if((a[z+296|0]|0)==0){p=84}else{D=z+300|0;if((b[D+34>>1]|0)==0){p=84;break}if((c[D+36>>2]|0)==0){p=84;break}b[v>>1]=0;b[w>>1]=0;Cd[c[(c[z+532>>2]|0)+156>>2]&63](z,1,h,x,y)|0;c[f+48>>2]=b[v>>1]|0;x=e[w>>1]|0;c[f+52>>2]=x;w=1}}while(0);do{if((p|0)==84){v=z+368|0;if((b[v>>1]|0)==-1){x=z+216|0;x=(b[x+4>>1]|0)-(b[x+6>>1]|0)|0;c[f+52>>2]=x;w=0;break}else{x=(b[v+70>>1]|0)-(b[v+72>>1]|0)|0;c[f+52>>2]=x;w=0;break}}}while(0);v=f+52|0;c[f+60>>2]=x;c[S>>2]=1869968492;x=f+124|0;c[x>>2]=0;do{if(B){if((e[j+14>>1]|0)>=24){j=4;break}c[x>>2]=256;j=260}else{j=4}}while(0);c[x>>2]=j;do{if((c[r>>2]|0)==65536){if((c[q+12>>2]|0)!=65536){p=94;break}if((c[q+4>>2]|0)!=0){p=94;break}if((c[q+8>>2]|0)!=0){p=94}}else{p=94}}while(0);if((p|0)==94){GJ(L,q)}if((P|O|0)!=0){HJ(L,O,P)}c[t>>2]=c[C>>2];da=s+4|0;c[da>>2]=0;IJ(s,q);c[C>>2]=(c[t>>2]|0)+O;c[t>>2]=0;c[da>>2]=c[v>>2];IJ(s,q);c[v>>2]=(c[da>>2]|0)+P;if(!((R|0)==0&(Q^1))){s=c[f+112>>2]|0;q=c[g>>2]|0;r=c[u>>2]|0;if(M){p=100}else{if((c[o+68>>2]|0)==0){p=100}}do{if((p|0)==100){o=b[N>>1]|0;if(o<<16>>16<=0){break}o=o<<16>>16;while(1){c[s>>2]=aJ(c[s>>2]|0,q)|0;da=s+4|0;c[da>>2]=aJ(c[da>>2]|0,r)|0;o=o+ -1|0;if((o|0)>0){s=s+8|0}else{break}}}}while(0);c[C>>2]=aJ(c[C>>2]|0,q)|0;c[v>>2]=aJ(c[v>>2]|0,r)|0}zK(L,l);m=c[m>>2]|0;c[A>>2]=(c[l+8>>2]|0)-m;da=c[l+12>>2]|0;c[f+28>>2]=da-(c[l+4>>2]|0);c[f+32>>2]=m;c[f+36>>2]=da;if(w){c[f+44>>2]=m-((c[C>>2]|0)/2|0);da=0;i=k;return da|0}if((n&16|0)==0){da=0;i=k;return da|0}XJ(A,c[v>>2]|0);da=0;i=k;return da|0}function nV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=c[a+532>>2]|0;c[e>>2]=0;c[e+4>>2]=0;if((g|0)==0){i=f;return 0}c[e>>2]=sd[c[g+128>>2]&127](a,b,d)|0;i=f;return 0}function oV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;h=c[a+84>>2]|0;j=e|256;a=a+88|0;if((d|0)==0){l=0;i=g;return l|0}e=(e&16|0)==0?h+56|0:h+60|0;l=0;while(1){k=mV(h,c[a>>2]|0,l+b|0,j)|0;if((k|0)!=0){f=5;break}c[f+(l<<2)>>2]=c[e>>2];l=l+1|0;if(l>>>0>=d>>>0){k=0;f=5;break}}if((f|0)==5){i=g;return k|0}return 0}function pV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;e=i;i=i+8|0;f=c[a>>2]|0;do{if((c[f+8>>2]&2|0)!=0){if((sd[c[(c[f+532>>2]|0)+148>>2]&127](f,b,e)|0)!=0){c[a+44>>2]=-1;f=c[a>>2]|0;break}qV(a,c[e>>2]|0)|0;i=d;return 0}}while(0);_J(f,b);b=c[a>>2]|0;e=c[(c[b+692>>2]|0)+2052>>2]|0;b=mK(c[(c[b+96>>2]|0)+4>>2]|0,287160)|0;if((b|0)==0|(e|0)==0){i=d;return 0}e=c[e>>2]|0;if((e|0)==0){i=d;return 0}f=jd[e&511](b)|0;if((f|0)==0){i=d;return 0}h=c[(c[a>>2]|0)+692>>2]|0;b=c[a+40>>2]|0;e=c[h+1388>>2]|0;g=f+4|0;f=a+16|0;a=a+20|0;Cd[c[g>>2]&63](c[b>>2]|0,c[f>>2]|0,c[a>>2]|0,0,0)|0;j=c[h+1892>>2]|0;if((j|0)==0){i=d;return 0}h=h+1896|0;do{j=j+ -1|0;l=c[(c[h+(j<<2)>>2]|0)+64>>2]|0;k=c[f>>2]|0;if((e|0)==(l|0)){l=c[a>>2]|0}else{k=_I(k,e,l)|0;l=_I(c[a>>2]|0,e,l)|0}Cd[c[g>>2]&63](c[b+4+(j<<2)>>2]|0,k,l,0,0)|0;}while((j|0)!=0);i=d;return 0}function qV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;c[a+44>>2]=b;YJ(c[a>>2]|0,b);b=c[a>>2]|0;e=c[(c[b+692>>2]|0)+2052>>2]|0;b=mK(c[(c[b+96>>2]|0)+4>>2]|0,287160)|0;if((b|0)==0|(e|0)==0){i=d;return 0}e=c[e>>2]|0;if((e|0)==0){i=d;return 0}f=jd[e&511](b)|0;if((f|0)==0){i=d;return 0}h=c[(c[a>>2]|0)+692>>2]|0;e=c[a+40>>2]|0;b=c[h+1388>>2]|0;g=f+4|0;f=a+16|0;a=a+20|0;Cd[c[g>>2]&63](c[e>>2]|0,c[f>>2]|0,c[a>>2]|0,0,0)|0;j=c[h+1892>>2]|0;if((j|0)==0){i=d;return 0}h=h+1896|0;do{j=j+ -1|0;l=c[(c[h+(j<<2)>>2]|0)+64>>2]|0;k=c[f>>2]|0;if((b|0)==(l|0)){l=c[a>>2]|0}else{k=_I(k,b,l)|0;l=_I(c[a>>2]|0,b,l)|0}Cd[c[g>>2]&63](c[e+4+(j<<2)>>2]|0,k,l,0,0)|0;}while((j|0)!=0);i=d;return 0}function rV(a,b){a=a|0;b=b|0;c[a+16>>2]=(c[(c[a>>2]|0)+692>>2]|0)+640;i=i;return 0}function sV(a){a=a|0;c[a+16>>2]=0;i=i;return}function tV(a,b){a=a|0;b=b|0;var d=0;d=i;if(b>>>0>=256){b=0;i=d;return b|0}b=e[(c[a+16>>2]|0)+(b<<1)>>1]|0;i=d;return b|0}function uV(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;g=c[d>>2]|0;c[d>>2]=0;if(g>>>0>=255){h=0;i=e;return h|0}a=a+16|0;h=0;do{g=g+1|0;if(g>>>0>255){f=6;break}j=b[(c[a>>2]|0)+(g<<1)>>1]|0;h=j&65535;}while(j<<16>>16==0);if((f|0)==6){i=e;return h|0}c[d>>2]=g;j=h;i=e;return j|0}function vV(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;e=c[a>>2]|0;d=c[e+692>>2]|0;if((c[d+1160>>2]|0)==0){e=163;i=b;return e|0}e=id[c[(c[d+2056>>2]|0)+4>>2]&3](c[e+100>>2]|0,a,c[d+12>>2]|0,203,0,e)|0;i=b;return e|0}function wV(a){a=a|0;var b=0,d=0;b=i;d=a+20|0;lJ(c[(c[a>>2]|0)+100>>2]|0,c[d>>2]|0);c[d>>2]=0;c[a+16>>2]=0;i=b;return}function xV(a,b){a=a|0;b=b|0;var d=0;d=i;a=Bd[c[(c[(c[(c[a>>2]|0)+692>>2]|0)+2056>>2]|0)+8>>2]&255](a,b)|0;i=d;return a|0}function yV(a,b){a=a|0;b=b|0;var d=0;d=i;a=Bd[c[(c[(c[(c[a>>2]|0)+692>>2]|0)+2056>>2]|0)+12>>2]&255](a,b)|0;i=d;return a|0}function zV(a,d){a=a|0;d=d|0;var e=0,f=0;e=i;a=c[a+692>>2]|0;f=b[(c[a+1160>>2]|0)+(d<<1)>>1]|0;d=f&65535;if(f<<16>>16==-1){f=0;i=e;return f|0}if((f&65535)>390){d=d+ -391|0;if((c[a+1312>>2]|0)>>>0<=d>>>0){f=0;i=e;return f|0}f=c[(c[a+1316>>2]|0)+(d<<2)>>2]|0;i=e;return f|0}else{a=c[a+2056>>2]|0;if((a|0)==0){f=0;i=e;return f|0}f=jd[c[a+20>>2]&511](d)|0;i=e;return f|0}return 0}function AV(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;l=i;i=i+8|0;if((b|0)==0){r=6;i=h;return r|0}k=b+8|0;p=c[k>>2]|0;if(p>>>0<=e>>>0){r=6;i=h;return r|0}j=c[b>>2]|0;m=c[b+24>>2]|0;a:do{if((m|0)==0){m=b+12|0;n=da(d[m]|0,e)|0;n=PJ(j,(c[b+4>>2]|0)+3+n|0)|0;if((n|0)!=0){r=n;i=h;return r|0}n=CK(c[b>>2]|0,l,d[m]|0)|0;if((n|0)!=0){r=n;i=h;return r|0}p=a[m]|0;if(p<<24>>24==0){k=20;break}o=p&255;q=0;n=0;do{n=d[l+q|0]|0|n<<8;q=q+1|0;}while((q|0)<(o|0));if((n|0)==0){k=20;break}while(1){e=e+1|0;p=CK(c[b>>2]|0,l,p&255)|0;do{if((p|0)==0){o=a[m]|0;if(o<<24>>24==0){break}q=o&255;r=0;o=0;do{o=d[l+r|0]|0|o<<8;r=r+1|0;}while((r|0)<(q|0));if((o|0)!=0){k=22;break a}}}while(0);if(e>>>0>=(c[k>>2]|0)>>>0){e=p;k=21;break a}p=a[m]|0}}else{n=c[m+(e<<2)>>2]|0;if((n|0)==0){k=20;break}while(1){e=e+1|0;o=c[m+(e<<2)>>2]|0;if((o|0)!=0){k=22;break a}if(e>>>0

>>0){}else{e=0;k=21;break}}}}while(0);do{if((k|0)==20){m=c[j+4>>2]|0;e=0;n=0;o=0;k=24}else if((k|0)==21){m=c[j+4>>2]|0;o=0;k=24}else if((k|0)==22){m=c[j+4>>2]|0;if(o>>>0<=(m+1|0)>>>0){e=0;k=24;break}l=c[b+16>>2]|0;e=0;k=25}}while(0);if((k|0)==24){l=c[b+16>>2]|0;if(l>>>0>(m+1-o|0)>>>0){k=25}}if((k|0)==25){o=m+1-l|0}if(!((n|0)!=0&o>>>0>n>>>0)){c[f>>2]=0;c[g>>2]=0;r=e;i=h;return r|0}k=o-n|0;c[g>>2]=k;g=c[b+28>>2]|0;if((g|0)!=0){c[f>>2]=g+(n+ -1);r=e;i=h;return r|0}b=PJ(j,n+ -1+(c[b+16>>2]|0)|0)|0;if((b|0)!=0){r=b;i=h;return r|0}r=LK(j,k,f)|0;i=h;return r|0}function BV(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;k=i;i=i+8|0;h=i;i=i+8|0;o=h;j=c[e+28>>2]|0;bX(b|0,0,32)|0;c[b>>2]=e;l=b+4|0;c[l>>2]=IK(e)|0;n=EK(e,o)|0;a:do{if((c[h>>2]|0)==0){m=n&65535;if(n<<16>>16==0){p=0;i=g;return p|0}p=VK(e,o)|0;if((c[h>>2]|0)!=0){break}o=p&255;if(p<<24>>24==0|(p&255)>4){c[h>>2]=8;break}c[b+8>>2]=m;n=b+12|0;a[n]=p;p=da(o,m+1|0)|0;c[b+16>>2]=p+3+(c[l>>2]|0);p=DK(e,p-o|0)|0;c[h>>2]=p;if((p|0)!=0){break}l=CK(c[b>>2]|0,k,d[n]|0)|0;m=(l|0)==0;if(!m){c[h>>2]=l;break}n=a[n]|0;do{if(n<<24>>24==0){c[h>>2]=l}else{p=n&255;o=0;n=0;do{n=d[k+o|0]|0|n<<8;o=o+1|0;}while((o|0)<(p|0));c[h>>2]=l;if(!m){break a}if((n|0)==0){break}k=n+ -1|0;c[b+20>>2]=k;if(f<<24>>24==0){e=DK(e,k)|0}else{e=LK(e,k,b+28|0)|0}c[h>>2]=e;if((e|0)==0){b=0}else{break a}i=g;return b|0}}while(0);c[h>>2]=8}}while(0);p=b+24|0;lJ(j,c[p>>2]|0);c[p>>2]=0;p=c[h>>2]|0;i=g;return p|0}function CV(b,e,f){b=b|0;e=e|0;f=f|0;var 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;h=i;o=i;i=i+8|0;r=o;g=i;i=i+8|0;p=g;c[g>>2]=0;m=c[(c[b>>2]|0)+28>>2]|0;c[e>>2]=0;j=b+24|0;a:do{if((c[j>>2]|0)==0){c[o>>2]=0;n=c[b>>2]|0;q=c[n+28>>2]|0;l=b+8|0;s=c[l>>2]|0;b:do{if((s|0)!=0){v=s+1|0;t=d[b+12|0]|0;u=da(t,v)|0;c[j>>2]=oJ(q,4,0,v,0,r)|0;do{if((c[o>>2]|0)==0){v=PJ(n,(c[b+4>>2]|0)+3|0)|0;c[o>>2]=v;if((v|0)!=0){break}v=MK(n,u)|0;c[o>>2]=v;if((v|0)!=0){break}s=c[j>>2]|0;v=c[n+32>>2]|0;r=v+u|0;do{if((t|0)==2){if((u|0)<=0){break}while(1){c[s>>2]=(d[v]<<8&65535|d[v+1|0])&65535;v=v+2|0;if(v>>>0>>0){s=s+4|0}else{break}}}else if((t|0)==3){if((u|0)<=0){break}while(1){c[s>>2]=d[v+1|0]<<8|a[v]<<16|d[v+2|0];v=v+3|0;if(v>>>0>>0){s=s+4|0}else{break}}}else if((t|0)==1){if((u|0)<=0){break}while(1){c[s>>2]=d[v]|0;v=v+1|0;if(v>>>0>>0){s=s+4|0}else{break}}}else{if((u|0)<=0){break}while(1){c[s>>2]=d[v+1|0]<<16|d[v]<<24|d[v+2|0]<<8|d[v+3|0];v=v+4|0;if(v>>>0>>0){s=s+4|0}else{break}}}}while(0);PK(n);if((c[o>>2]|0)==0){break b}}}while(0);lJ(q,c[j>>2]|0);c[j>>2]=0;v=c[o>>2]|0;c[g>>2]=v;if((v|0)==0){break a}v=g;v=c[v>>2]|0;i=h;return v|0}}while(0);c[g>>2]=0}else{l=b+8|0}}while(0);n=c[l>>2]|0;if((n|0)==0){v=g;v=c[v>>2]|0;i=h;return v|0}q=oJ(m,4,0,n+1|0,0,p)|0;if((c[g>>2]|0)!=0){v=g;v=c[v>>2]|0;i=h;return v|0}o=(f|0)!=0;n=b+20|0;do{if(o){m=jJ(m,(c[l>>2]|0)+(c[n>>2]|0)|0,p)|0;if((c[g>>2]|0)==0){break}v=g;v=c[v>>2]|0;i=h;return v|0}else{m=0}}while(0);b=c[b+28>>2]|0;p=(c[c[j>>2]>>2]|0)+ -1|0;r=p>>>0>=(c[n>>2]|0)>>>0?0:p;c[q>>2]=(o?m:b)+r;s=c[l>>2]|0;c:do{if((s|0)!=0){if(o){t=0;p=1}else{p=1;while(1){t=(c[(c[j>>2]|0)+(p<<2)>>2]|0)+ -1|0;if((t|0)==0|t>>>0>>0){k=33}else{if(t>>>0>=(c[n>>2]|0)>>>0&p>>>0>>0){k=33}else{r=t}}if((k|0)==33){k=0}c[q+(p<<2)>>2]=b+r;s=c[l>>2]|0;p=p+1|0;if(p>>>0>s>>>0){break c}}}do{u=(c[(c[j>>2]|0)+(p<<2)>>2]|0)+ -1|0;do{if((u|0)==0|u>>>0>>0){k=27}else{if(u>>>0>=(c[n>>2]|0)>>>0&p>>>0>>0){k=27;break}s=m+(u+t)|0;v=q+(p<<2)|0;c[v>>2]=s;if((u|0)==(r|0)){r=u;break}w=c[q+(p+ -1<<2)>>2]|0;$W(w|0,b+r|0,s-w|0)|0;a[c[v>>2]|0]=0;c[v>>2]=(c[v>>2]|0)+1;t=t+1|0;r=u}}while(0);if((k|0)==27){k=0;c[q+(p<<2)>>2]=m+(r+t)}p=p+1|0;s=c[l>>2]|0;}while(p>>>0<=s>>>0)}}while(0);c[e>>2]=q;if(!o){w=g;w=c[w>>2]|0;i=h;return w|0}c[f>>2]=m;w=g;w=c[w>>2]|0;i=h;return w|0}function DV(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;l=i;i=i+416|0;k=l;s=i;i=i+8|0;q=s;t=i;i=i+8|0;c[s>>2]=0;bX(l|0,0,408)|0;o=k+16|0;n=k+404|0;c[n>>2]=o;p=k+408|0;c[p>>2]=4096;m=k+412|0;c[m>>2]=b;c[l>>2]=h;bX(b|0,0,168)|0;c[b+32>>2]=-6553600;c[b+36>>2]=3276800;c[b+44>>2]=2;c[b+48>>2]=65536;c[b+60>>2]=65536;c[b+152>>2]=8720;c[b>>2]=65535;c[b+4>>2]=65535;c[b+8>>2]=65535;c[b+12>>2]=65535;c[b+16>>2]=65535;c[b+20>>2]=65535;c[b+124>>2]=65535;r=b+128|0;c[r>>2]=65535;c[b+132>>2]=65535;c[b+168>>2]=65535;e=AV(d,e,q,t)|0;if((e|0)==0){e=c[s>>2]|0;e=EV(k,e,e+(c[t>>2]|0)|0)|0}if((c[d+28>>2]|0)==0){NK(c[d>>2]|0,q)}if((e|0)!=0){i=j;return e|0}if((c[r>>2]|0)!=65535){e=0;i=j;return e|0}q=b+112|0;s=c[q>>2]|0;do{if((s|0)!=0){r=b+116|0;if((c[r>>2]|0)==0){break}d=b+172|0;bX(d|0,0,360)|0;c[b+372>>2]=7;c[b+376>>2]=1;c[b+504>>2]=-1;c[b+512>>2]=3932;c[b+368>>2]=2596864;bX(l|0,0,408)|0;c[n>>2]=o;c[p>>2]=8192;c[m>>2]=d;c[l>>2]=h;l=PJ(f,s+g|0)|0;if((l|0)!=0){e=l;i=j;return e|0}l=MK(f,c[r>>2]|0)|0;if((l|0)!=0){e=l;i=j;return e|0}k=EV(k,c[f+32>>2]|0,c[f+36>>2]|0)|0;PK(f);if((k|0)==0){a[d]=a[d]&-2;break}else{e=k;i=j;return e|0}}}while(0);k=c[b+520>>2]|0;if((k|0)==0){e=0;i=j;return e|0}g=PJ(f,k+g+(c[q>>2]|0)|0)|0;if((g|0)!=0){e=g;i=j;return e|0}g=b+532|0;f=BV(g,f,1)|0;if((f|0)!=0){e=f;i=j;return e|0}e=CV(g,b+564|0,0)|0;i=j;return e|0}function EV(e,f,g){e=e|0;f=f|0;g=g|0;var 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;h=i;k=e+16|0;o=e+404|0;c[o>>2]=k;c[e+4>>2]=f;c[e+8>>2]=g;c[e+12>>2]=f;if(f>>>0>=g>>>0){y=0;i=h;return y|0}l=e+408|0;n=e+412|0;m=e+20|0;p=k;a:while(1){q=a[f]|0;s=p-k|0;r=s>>2;do{if((q&255)>26&q<<24>>24!=31){if((s|0)>380){p=6;j=94;break a}c[o>>2]=p+4;c[p>>2]=f;if(q<<24>>24==28){f=f+2|0;break}else if(q<<24>>24==29){f=f+4|0;break}else if(q<<24>>24==30){while(1){f=f+1|0;if(f>>>0>=g>>>0){p=0;j=94;break a}y=d[f]|0;if((y&240|0)==240|(y&15|0)==15){break}else{}}}else{f=(q&255)>246?f+1|0:f;break}}else{s=q&255;c[p>>2]=f;if(q<<24>>24==12){f=f+1|0;if(f>>>0>=g>>>0){p=6;j=94;break a}s=d[f]|0|256}t=c[l>>2]|s;s=4;q=289224;while(1){p=q+28|0;if((c[q+4>>2]|0)==(t|0)){j=17;break}s=c[p>>2]|0;if((s|0)==0){break}else{q=p}}b:do{if((j|0)==17){j=0;t=c[n>>2]|0;p=t+(c[q+8>>2]|0)|0;if((s|0)!=6&(r|0)==0){p=6;j=94;break a}c:do{switch(s|0){case 6:{s=c[q+20>>2]|0;s=r>>>0>s>>>0?s:r;a[t+(c[q+24>>2]|0)|0]=s;if((s|0)==0){break b}q=q+12|0;u=k;t=0;while(1){r=u+4|0;y=c[u>>2]|0;x=c[r>>2]|0;w=a[y]|0;do{if(w<<24>>24==30){u=(FV(y,x,0,0)|0)>>16}else{u=y+1|0;v=w&255;if(w<<24>>24==28){if((y+3|0)>>>0>x>>>0){u=0;break}u=((d[u]|0)<<8&65535|(d[y+2|0]|0))<<16>>16;break}else if(w<<24>>24==29){if((y+5|0)>>>0>x>>>0){u=0;break}u=(d[y+2|0]|0)<<16|(d[u]|0)<<24|(d[y+3|0]|0)<<8|(d[y+4|0]|0);break}else{if((w&255)<247){u=v+ -139|0;break}x=(y+2|0)>>>0>x>>>0;if((w&255)<251){if(x){u=0;break}u=(d[u]|0|(v<<8)+ -63232)+108|0;break}else{if(x){u=0;break}u=(251-v<<8)+ -108-(d[u]|0)|0;break}}}}while(0);t=u+t|0;u=d[q]|0;if((u|0)==4){c[p>>2]=t}else if((u|0)==1){a[p]=t}else if((u|0)==2){b[p>>1]=t}else{c[p>>2]=t}s=s+ -1|0;if((s|0)==0){break b}else{p=p+(d[q]|0)|0;u=r}}break};case 3:{v=c[k>>2]|0;u=c[m>>2]|0;t=a[v]|0;if(t<<24>>24==30){r=FV(v,u,3,0)|0;break c}s=v+1|0;r=t&255;do{if(t<<24>>24==28){if((v+3|0)>>>0>u>>>0){r=0;break}r=((d[s]|0)<<8&65535|(d[v+2|0]|0))<<16>>16}else if(t<<24>>24==29){if((v+5|0)>>>0>u>>>0){r=0;break}r=(d[v+2|0]|0)<<16|(d[s]|0)<<24|(d[v+3|0]|0)<<8|(d[v+4|0]|0)}else{if((t&255)<247){r=r+ -139|0;break}u=(v+2|0)>>>0>u>>>0;if((t&255)<251){if(u){r=0;break}r=(d[s]|0|(r<<8)+ -63232)+108|0;break}else{if(u){r=0;break}r=(251-r<<8)+ -108-(d[s]|0)|0;break}}}while(0);r=da(r,65536e3)|0;break};case 1:case 4:case 5:{v=c[k>>2]|0;u=c[m>>2]|0;t=a[v]|0;if(t<<24>>24==30){r=(FV(v,u,0,0)|0)>>16;break c}s=v+1|0;r=t&255;if(t<<24>>24==29){if((v+5|0)>>>0>u>>>0){r=0;break c}r=(d[v+2|0]|0)<<16|(d[s]|0)<<24|(d[v+3|0]|0)<<8|(d[v+4|0]|0);break c}else if(t<<24>>24==28){if((v+3|0)>>>0>u>>>0){r=0;break c}r=((d[s]|0)<<8&65535|(d[v+2|0]|0))<<16>>16;break c}else{if((t&255)<247){r=r+ -139|0;break c}u=(v+2|0)>>>0>u>>>0;if((t&255)<251){if(u){r=0;break c}r=(d[s]|0|(r<<8)+ -63232)+108|0;break c}else{if(u){r=0;break c}r=(251-r<<8)+ -108-(d[s]|0)|0;break c}}break};case 2:{v=c[k>>2]|0;u=c[m>>2]|0;t=a[v]|0;if(t<<24>>24==30){r=FV(v,u,0,0)|0;break c}r=v+1|0;s=t&255;do{if(t<<24>>24==28){if((v+3|0)>>>0>u>>>0){r=0;break}r=((d[r]|0)<<8&65535|(d[v+2|0]|0))<<16>>16}else if(t<<24>>24==29){if((v+5|0)>>>0>u>>>0){r=0;break}r=(d[v+2|0]|0)<<16|(d[r]|0)<<24|(d[v+3|0]|0)<<8|(d[v+4|0]|0)}else{if((t&255)<247){r=s+ -139|0;break}u=(v+2|0)>>>0>u>>>0;if((t&255)<251){if(u){r=0;break}r=(d[r]|0|(s<<8)+ -63232)+108|0;break}else{if(u){r=0;break}r=(251-s<<8)+ -108-(d[r]|0)|0;break}}}while(0);r=r<<16;break};default:{p=jd[c[q+16>>2]&511](e)|0;if((p|0)==0){break b}else{j=94;break a}}}}while(0);q=d[q+12|0]|0;if((q|0)==2){b[p>>1]=r;break}else if((q|0)==1){a[p]=r;break}else if((q|0)==4){c[p>>2]=r;break}else{c[p>>2]=r;break}}}while(0);c[o>>2]=k}}while(0);f=f+1|0;if(f>>>0>=g>>>0){p=0;j=94;break}p=c[o>>2]|0}if((j|0)==94){i=h;return p|0}return 0}function FV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var 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,A=0,B=0,C=0;g=i;m=(f|0)!=0;if(m){c[f>>2]=0;z=0;k=0;v=0;A=4;h=0}else{z=0;k=0;v=0;A=4;h=0}a:while(1){y=(v|0)>214748363;b:while(1){while(1){if(!y){break}if((A|0)!=0){b=b+1|0;if(b>>>0>=d>>>0){y=60;break a}}B=a[b]|0;C=(B&255)>>>A&15;A=4-A|0;if((C|0)==14){h=1;continue b}if(C>>>0>9){w=B;x=C;t=A;u=b;y=17;break a}z=z+1|0}while(1){if((A|0)!=0){b=b+1|0;if(b>>>0>=d>>>0){y=60;break a}}C=a[b]|0;B=(C&255)>>>A&15;A=4-A|0;if((B|0)==14){h=1;continue b}if(B>>>0>9){w=C;x=B;t=A;u=b;y=17;break a}if((B|v|0)!=0){break b}}}k=k+1|0;v=B+(v*10|0)|0}if((y|0)==17){c:do{if((x|0)==10){w=0;d:while(1){x=(v|0)<214748364&(w|0)<9;while(1){if(x){if((t|0)!=0){u=u+1|0;if(u>>>0>=d>>>0){y=60;break d}}A=a[u]|0;y=(A&255)>>>t&15;t=4-t|0;if(y>>>0>9){s=A;o=z;l=w;r=y;j=v;q=u;p=t;break c}if((y|v|0)!=0){break}}else{do{if((t|0)!=0){u=u+1|0;if(u>>>0>=d>>>0){y=60;break d}}y=a[u]|0;A=(y&255)>>>t&15;t=4-t|0;if(A>>>0>9){s=y;o=z;l=w;r=A;j=v;q=u;p=t;break c}}while((A|v|0)!=0)}z=z+ -1|0}w=w+1|0;v=y+(v*10|0)|0}if((y|0)==60){i=g;return 0}}else{s=w;o=z;l=0;r=x;j=v;q=u;p=t}}while(0);t=(r|0)==12;do{if((r+ -11|0)>>>0<2){r=0;while(1){if((p|0)!=0){q=q+1|0;if(q>>>0>=d>>>0){y=60;break}s=a[q]|0}u=(s&255)>>>p&15;if(u>>>0>9){y=36;break}u=u+(r*10|0)|0;if((u|0)>1e3){y=60;break}else{r=u;p=4-p|0}}if((y|0)==36){n=t?0-r|0:r;break}else if((y|0)==60){i=g;return 0}}else{n=0}}while(0);d=o+e+n|0;if(m){l=l+k|0;k=d+k|0;if((l|0)>=6){m=c[290680+(l+ -5<<2)>>2]|0;if(((j|0)/(m|0)|0|0)>32767){j=bJ(j,c[290680+(l+ -4<<2)>>2]|0)|0;c[f>>2]=k+ -4;C=(h|0)==0;h=0-j|0;C=C?j:h;i=g;return C|0}else{j=bJ(j,m)|0;c[f>>2]=k+ -5;C=(h|0)==0;h=0-j|0;C=C?j:h;i=g;return C|0}}if((j|0)>32767){j=bJ(j,10)|0;c[f>>2]=1-l+k;C=(h|0)==0;h=0-j|0;C=C?j:h;i=g;return C|0}do{if((k|0)>0){C=(k|0)<5?k:5;k=k-C|0;j=da(c[290680+(C-l<<2)>>2]|0,j)|0;if((j|0)<=32767){break}k=k+1|0;j=(j|0)/10|0}else{k=k-l|0}}while(0);c[f>>2]=k;j=j<<16;C=(h|0)==0;h=0-j|0;C=C?j:h;i=g;return C|0}else{m=d+k|0;n=(m|0)<0;f=0-m|0;if(((n?f:m)|0)>5){i=g;return 0}if(n){k=l+k|0;j=(j|0)/(c[290680+(f<<2)>>2]|0)|0}else{k=l-d|0}do{if((k|0)==10){k=9;j=(j|0)/10|0}else{if((k|0)>0){break}j=da(c[290680+(0-k<<2)>>2]|0,j)|0;if((j|0)>32767){i=g;return 0}j=j<<16;C=(h|0)==0;h=0-j|0;C=C?j:h;i=g;return C|0}}while(0);f=c[290680+(k<<2)>>2]|0;if(((j|0)/(f|0)|0|0)>32767){i=g;return 0}j=bJ(j,f)|0;C=(h|0)==0;h=0-j|0;C=C?j:h;i=g;return C|0}}else if((y|0)==60){i=g;return 0}return 0}function GV(b){b=b|0;var 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;g=i;f=i;i=i+8|0;h=c[b+412>>2]|0;k=h+68|0;e=h+64|0;j=b+40|0;if((c[b+404>>2]|0)>>>0>>0){s=161;i=g;return s|0}m=h+48|0;s=c[b+16>>2]|0;l=b+20|0;r=c[l>>2]|0;q=a[s]|0;a:do{if(q<<24>>24==30){n=FV(s,r,0,f)|0}else{o=s+1|0;p=q&255;do{if(q<<24>>24==28){if((s+3|0)>>>0>r>>>0){o=0;break}o=((d[o]|0)<<8&65535|(d[s+2|0]|0))<<16>>16}else if(q<<24>>24==29){if((s+5|0)>>>0>r>>>0){o=0;break}o=(d[s+2|0]|0)<<16|(d[o]|0)<<24|(d[s+3|0]|0)<<8|(d[s+4|0]|0);n=16}else{if((q&255)<247){o=p+ -139|0;n=16;break}r=(s+2|0)>>>0>r>>>0;if((q&255)<251){if(r){o=0;break}o=(d[o]|0|(p<<8)+ -63232)+108|0;n=16;break}else{if(r){o=0;break}o=(251-p<<8)+ -108-(d[o]|0)|0;n=16;break}}}while(0);do{if((n|0)==16){if((o|0)>32767){q=5}else{break}while(1){n=q+1|0;if((o|0)<(c[290680+(q<<2)>>2]|0)){break}if((n|0)<10){q=n}else{q=n;break}}n=q+ -5|0;p=c[290680+(n<<2)>>2]|0;if(((o|0)/(p|0)|0|0)>32767){n=q+ -4|0;c[f>>2]=n;n=bJ(o,c[290680+(n<<2)>>2]|0)|0;break a}else{c[f>>2]=n;n=bJ(o,p)|0;break a}}}while(0);c[f>>2]=0;n=o<<16}}while(0);c[m>>2]=n;s=c[f>>2]|0;n=0-s|0;c[f>>2]=n;if((s|0)>0|(n|0)>9){c[m>>2]=65536;c[h+56>>2]=0;c[h+60>>2]=65536;c[k>>2]=0;c[h+72>>2]=0;c[e>>2]=1;s=0;i=g;return s|0}m=b+24|0;r=c[l>>2]|0;q=c[m>>2]|0;l=a[r]|0;if(l<<24>>24==30){l=FV(r,q,n,0)|0}else{o=r+1|0;p=l&255;do{if(l<<24>>24==29){if((r+5|0)>>>0>q>>>0){l=0;break}l=(d[r+2|0]|0)<<16|(d[o]|0)<<24|(d[r+3|0]|0)<<8|(d[r+4|0]|0)}else if(l<<24>>24==28){if((r+3|0)>>>0>q>>>0){l=0;break}l=((d[o]|0)<<8&65535|(d[r+2|0]|0))<<16>>16}else{if((l&255)<247){l=p+ -139|0;break}q=(r+2|0)>>>0>q>>>0;if((l&255)<251){if(q){l=0;break}l=(d[o]|0|(p<<8)+ -63232)+108|0;break}else{if(q){l=0;break}l=(251-p<<8)+ -108-(d[o]|0)|0;break}}}while(0);l=da(l<<16,c[290680+(n<<2)>>2]|0)|0}c[h+56>>2]=l;n=b+28|0;l=c[f>>2]|0;q=c[m>>2]|0;r=c[n>>2]|0;o=a[q]|0;if(o<<24>>24==30){l=FV(q,r,l,0)|0}else{p=q+1|0;m=o&255;do{if(o<<24>>24==29){if((q+5|0)>>>0>r>>>0){m=0;break}m=(d[q+2|0]|0)<<16|(d[p]|0)<<24|(d[q+3|0]|0)<<8|(d[q+4|0]|0)}else if(o<<24>>24==28){if((q+3|0)>>>0>r>>>0){m=0;break}m=((d[p]|0)<<8&65535|(d[q+2|0]|0))<<16>>16}else{if((o&255)<247){m=m+ -139|0;break}q=(q+2|0)>>>0>r>>>0;if((o&255)<251){if(q){m=0;break}m=(d[p]|0|(m<<8)+ -63232)+108|0;break}else{if(q){m=0;break}m=(251-m<<8)+ -108-(d[p]|0)|0;break}}}while(0);l=da(m<<16,c[290680+(l<<2)>>2]|0)|0}c[h+52>>2]=l;l=b+32|0;m=c[f>>2]|0;r=c[n>>2]|0;q=c[l>>2]|0;p=a[r]|0;if(p<<24>>24==30){m=FV(r,q,m,0)|0}else{o=r+1|0;n=p&255;do{if(p<<24>>24==28){if((r+3|0)>>>0>q>>>0){n=0;break}n=((d[o]|0)<<8&65535|(d[r+2|0]|0))<<16>>16}else if(p<<24>>24==29){if((r+5|0)>>>0>q>>>0){n=0;break}n=(d[r+2|0]|0)<<16|(d[o]|0)<<24|(d[r+3|0]|0)<<8|(d[r+4|0]|0)}else{if((p&255)<247){n=n+ -139|0;break}q=(r+2|0)>>>0>q>>>0;if((p&255)<251){if(q){n=0;break}n=(d[o]|0|(n<<8)+ -63232)+108|0;break}else{if(q){n=0;break}n=(251-n<<8)+ -108-(d[o]|0)|0;break}}}while(0);m=da(n<<16,c[290680+(m<<2)>>2]|0)|0}c[h+60>>2]=m;b=b+36|0;m=c[f>>2]|0;q=c[l>>2]|0;p=c[b>>2]|0;o=a[q]|0;if(o<<24>>24==30){l=FV(q,p,m,0)|0}else{l=q+1|0;n=o&255;do{if(o<<24>>24==29){if((q+5|0)>>>0>p>>>0){l=0;break}l=(d[q+2|0]|0)<<16|(d[l]|0)<<24|(d[q+3|0]|0)<<8|(d[q+4|0]|0)}else if(o<<24>>24==28){if((q+3|0)>>>0>p>>>0){l=0;break}l=((d[l]|0)<<8&65535|(d[q+2|0]|0))<<16>>16}else{if((o&255)<247){l=n+ -139|0;break}p=(q+2|0)>>>0>p>>>0;if((o&255)<251){if(p){l=0;break}l=(d[l]|0|(n<<8)+ -63232)+108|0;break}else{if(p){l=0;break}l=(251-n<<8)+ -108-(d[l]|0)|0;break}}}while(0);l=da(l<<16,c[290680+(m<<2)>>2]|0)|0}c[k>>2]=l;k=c[f>>2]|0;l=c[b>>2]|0;n=c[j>>2]|0;b=a[l]|0;if(b<<24>>24==30){j=FV(l,n,k,0)|0}else{m=l+1|0;j=b&255;do{if(b<<24>>24==29){if((l+5|0)>>>0>n>>>0){j=0;break}j=(d[l+2|0]|0)<<16|(d[m]|0)<<24|(d[l+3|0]|0)<<8|(d[l+4|0]|0)}else if(b<<24>>24==28){if((l+3|0)>>>0>n>>>0){j=0;break}j=((d[m]|0)<<8&65535|(d[l+2|0]|0))<<16>>16}else{if((b&255)<247){j=j+ -139|0;break}l=(l+2|0)>>>0>n>>>0;if((b&255)<251){if(l){j=0;break}j=(d[m]|0|(j<<8)+ -63232)+108|0;break}else{if(l){j=0;break}j=(251-j<<8)+ -108-(d[m]|0)|0;break}}}while(0);j=da(j<<16,c[290680+(k<<2)>>2]|0)|0}c[h+72>>2]=j;c[e>>2]=c[290680+(c[f>>2]<<2)>>2];s=0;i=g;return s|0}function HV(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;f=c[b+412>>2]|0;g=b+32|0;if((c[b+404>>2]|0)>>>0>>0){o=161;i=e;return o|0}j=f+80|0;h=b+20|0;o=c[b+16>>2]|0;n=c[h>>2]|0;m=a[o]|0;if(m<<24>>24==30){k=FV(o,n,0,0)|0}else{k=o+1|0;l=m&255;do{if(m<<24>>24==28){if((o+3|0)>>>0>n>>>0){k=0;break}k=((d[k]|0)<<8&65535|(d[o+2|0]|0))<<16>>16}else if(m<<24>>24==29){if((o+5|0)>>>0>n>>>0){k=0;break}k=(d[o+2|0]|0)<<16|(d[k]|0)<<24|(d[o+3|0]|0)<<8|(d[o+4|0]|0)}else{if((m&255)<247){k=l+ -139|0;break}n=(o+2|0)>>>0>n>>>0;if((m&255)<251){if(n){k=0;break}k=(d[k]|0|(l<<8)+ -63232)+108|0;break}else{if(n){k=0;break}k=(251-l<<8)+ -108-(d[k]|0)|0;break}}}while(0);k=k<<16}c[j>>2]=ZI(k)|0;j=b+24|0;m=c[h>>2]|0;n=c[j>>2]|0;l=a[m]|0;if(l<<24>>24==30){h=FV(m,n,0,0)|0}else{k=m+1|0;h=l&255;do{if(l<<24>>24==28){if((m+3|0)>>>0>n>>>0){h=0;break}h=((d[k]|0)<<8&65535|(d[m+2|0]|0))<<16>>16}else if(l<<24>>24==29){if((m+5|0)>>>0>n>>>0){h=0;break}h=(d[m+2|0]|0)<<16|(d[k]|0)<<24|(d[m+3|0]|0)<<8|(d[m+4|0]|0)}else{if((l&255)<247){h=h+ -139|0;break}m=(m+2|0)>>>0>n>>>0;if((l&255)<251){if(m){h=0;break}h=(d[k]|0|(h<<8)+ -63232)+108|0;break}else{if(m){h=0;break}h=(251-h<<8)+ -108-(d[k]|0)|0;break}}}while(0);h=h<<16}c[f+84>>2]=ZI(h)|0;b=b+28|0;m=c[j>>2]|0;l=c[b>>2]|0;j=a[m]|0;if(j<<24>>24==30){h=FV(m,l,0,0)|0}else{h=m+1|0;k=j&255;do{if(j<<24>>24==28){if((m+3|0)>>>0>l>>>0){h=0;break}h=((d[h]|0)<<8&65535|(d[m+2|0]|0))<<16>>16}else if(j<<24>>24==29){if((m+5|0)>>>0>l>>>0){h=0;break}h=(d[m+2|0]|0)<<16|(d[h]|0)<<24|(d[m+3|0]|0)<<8|(d[m+4|0]|0)}else{if((j&255)<247){h=k+ -139|0;break}l=(m+2|0)>>>0>l>>>0;if((j&255)<251){if(l){h=0;break}h=(d[h]|0|(k<<8)+ -63232)+108|0;break}else{if(l){h=0;break}h=(251-k<<8)+ -108-(d[h]|0)|0;break}}}while(0);h=h<<16}c[f+88>>2]=ZI(h)|0;h=c[b>>2]|0;k=c[g>>2]|0;b=a[h]|0;if(b<<24>>24==30){g=FV(h,k,0,0)|0}else{j=h+1|0;g=b&255;do{if(b<<24>>24==29){if((h+5|0)>>>0>k>>>0){g=0;break}g=(d[h+2|0]|0)<<16|(d[j]|0)<<24|(d[h+3|0]|0)<<8|(d[h+4|0]|0)}else if(b<<24>>24==28){if((h+3|0)>>>0>k>>>0){g=0;break}g=((d[j]|0)<<8&65535|(d[h+2|0]|0))<<16>>16}else{if((b&255)<247){g=g+ -139|0;break}h=(h+2|0)>>>0>k>>>0;if((b&255)<251){if(h){g=0;break}g=(d[j]|0|(g<<8)+ -63232)+108|0;break}else{if(h){g=0;break}g=(251-g<<8)+ -108-(d[j]|0)|0;break}}}while(0);g=g<<16}c[f+92>>2]=ZI(g)|0;o=0;i=e;return o|0}function IV(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;e=c[b+412>>2]|0;g=b+24|0;if((c[b+404>>2]|0)>>>0>>0){m=161;i=f;return m|0}h=b+20|0;m=c[b+16>>2]|0;l=c[h>>2]|0;b=a[m]|0;do{if(b<<24>>24==30){b=(FV(m,l,0,0)|0)>>16}else{j=m+1|0;k=b&255;if(b<<24>>24==28){if((m+3|0)>>>0>l>>>0){b=0;break}b=((d[j]|0)<<8&65535|(d[m+2|0]|0))<<16>>16;break}else if(b<<24>>24==29){if((m+5|0)>>>0>l>>>0){b=0;break}b=(d[m+2|0]|0)<<16|(d[j]|0)<<24|(d[m+3|0]|0)<<8|(d[m+4|0]|0);break}else{if((b&255)<247){b=k+ -139|0;break}l=(m+2|0)>>>0>l>>>0;if((b&255)<251){if(l){b=0;break}b=(d[j]|0|(k<<8)+ -63232)+108|0;break}else{if(l){b=0;break}b=(251-k<<8)+ -108-(d[j]|0)|0;break}}}}while(0);c[e+116>>2]=b;h=c[h>>2]|0;k=c[g>>2]|0;j=a[h]|0;do{if(j<<24>>24==30){g=(FV(h,k,0,0)|0)>>16}else{b=h+1|0;g=j&255;if(j<<24>>24==28){if((h+3|0)>>>0>k>>>0){g=0;break}g=((d[b]|0)<<8&65535|(d[h+2|0]|0))<<16>>16;break}else if(j<<24>>24==29){if((h+5|0)>>>0>k>>>0){g=0;break}g=(d[h+2|0]|0)<<16|(d[b]|0)<<24|(d[h+3|0]|0)<<8|(d[h+4|0]|0);break}else{if((j&255)<247){g=g+ -139|0;break}h=(h+2|0)>>>0>k>>>0;if((j&255)<251){if(h){g=0;break}g=(d[b]|0|(g<<8)+ -63232)+108|0;break}else{if(h){g=0;break}g=(251-g<<8)+ -108-(d[b]|0)|0;break}}}}while(0);c[e+112>>2]=g;m=0;i=f;return m|0}function JV(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;e=c[b+412>>2]|0;g=b+28|0;if((c[b+404>>2]|0)>>>0>>0){n=161;i=f;return n|0}h=b+20|0;m=c[b+16>>2]|0;n=c[h>>2]|0;k=a[m]|0;do{if(k<<24>>24==30){j=(FV(m,n,0,0)|0)>>16}else{j=m+1|0;l=k&255;if(k<<24>>24==28){if((m+3|0)>>>0>n>>>0){j=0;break}j=((d[j]|0)<<8&65535|(d[m+2|0]|0))<<16>>16;break}else if(k<<24>>24==29){if((m+5|0)>>>0>n>>>0){j=0;break}j=(d[m+2|0]|0)<<16|(d[j]|0)<<24|(d[m+3|0]|0)<<8|(d[m+4|0]|0);break}else{if((k&255)<247){j=l+ -139|0;break}m=(m+2|0)>>>0>n>>>0;if((k&255)<251){if(m){j=0;break}j=(d[j]|0|(l<<8)+ -63232)+108|0;break}else{if(m){j=0;break}j=(251-l<<8)+ -108-(d[j]|0)|0;break}}}}while(0);c[e+128>>2]=j;b=b+24|0;m=c[h>>2]|0;l=c[b>>2]|0;h=a[m]|0;do{if(h<<24>>24==30){h=(FV(m,l,0,0)|0)>>16}else{j=m+1|0;k=h&255;if(h<<24>>24==28){if((m+3|0)>>>0>l>>>0){h=0;break}h=((d[j]|0)<<8&65535|(d[m+2|0]|0))<<16>>16;break}else if(h<<24>>24==29){if((m+5|0)>>>0>l>>>0){h=0;break}h=(d[m+2|0]|0)<<16|(d[j]|0)<<24|(d[m+3|0]|0)<<8|(d[m+4|0]|0);break}else{if((h&255)<247){h=k+ -139|0;break}l=(m+2|0)>>>0>l>>>0;if((h&255)<251){if(l){h=0;break}h=(d[j]|0|(k<<8)+ -63232)+108|0;break}else{if(l){h=0;break}h=(251-k<<8)+ -108-(d[j]|0)|0;break}}}}while(0);c[e+132>>2]=h;h=c[b>>2]|0;k=c[g>>2]|0;b=a[h]|0;do{if(b<<24>>24==30){g=(FV(h,k,0,0)|0)>>16}else{j=h+1|0;g=b&255;if(b<<24>>24==28){if((h+3|0)>>>0>k>>>0){g=0;break}g=((d[j]|0)<<8&65535|(d[h+2|0]|0))<<16>>16;break}else if(b<<24>>24==29){if((h+5|0)>>>0>k>>>0){g=0;break}g=(d[h+2|0]|0)<<16|(d[j]|0)<<24|(d[h+3|0]|0)<<8|(d[h+4|0]|0);break}else{if((b&255)<247){g=g+ -139|0;break}h=(h+2|0)>>>0>k>>>0;if((b&255)<251){if(h){g=0;break}g=(d[j]|0|(g<<8)+ -63232)+108|0;break}else{if(h){g=0;break}g=(251-g<<8)+ -108-(d[j]|0)|0;break}}}}while(0);c[e+136>>2]=g;n=0;i=f;return n|0}function KV(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=i;bX(e|0,0,196)|0;g=a[d+172|0]|0;a[e+8|0]=g;h=g&255;if(g<<24>>24!=0){g=0;do{b[e+12+(g<<1)>>1]=c[d+176+(g<<2)>>2];g=g+1|0;}while(g>>>0>>0)}h=a[d+173|0]|0;a[e+9|0]=h;g=h&255;if(h<<24>>24!=0){h=0;do{b[e+40+(h<<1)>>1]=c[d+232+(h<<2)>>2];h=h+1|0;}while(h>>>0>>0)}g=a[d+174|0]|0;a[e+10|0]=g;h=g&255;if(g<<24>>24!=0){g=0;do{b[e+60+(g<<1)>>1]=c[d+272+(g<<2)>>2];g=g+1|0;}while(g>>>0>>0)}h=a[d+175|0]|0;a[e+11|0]=h;g=h&255;if(h<<24>>24!=0){h=0;do{b[e+88+(h<<1)>>1]=c[d+328+(h<<2)>>2];h=h+1|0;}while(h>>>0>>0)}c[e+108>>2]=c[d+368>>2];c[e+112>>2]=c[d+372>>2];c[e+116>>2]=c[d+376>>2];b[e+120>>1]=c[d+380>>2];b[e+122>>1]=c[d+384>>2];h=a[d+388|0]|0;a[e+124|0]=h;g=h&255;if(h<<24>>24!=0){h=0;do{b[e+128+(h<<1)>>1]=c[d+392+(h<<2)>>2];h=h+1|0;}while(h>>>0>>0)}g=a[d+389|0]|0;a[e+125|0]=g;h=g&255;if(g<<24>>24==0){g=d+496|0;g=a[g]|0;h=e+126|0;a[h]=g;h=d+508|0;h=c[h>>2]|0;g=e+184|0;c[g>>2]=h;g=d+504|0;g=c[g>>2]|0;h=e+4|0;c[h>>2]=g;i=f;return}else{g=0}do{b[e+154+(g<<1)>>1]=c[d+444+(g<<2)>>2];g=g+1|0;}while(g>>>0>>0);g=d+496|0;g=a[g]|0;h=e+126|0;a[h]=g;h=d+508|0;h=c[h>>2]|0;g=e+184|0;c[g>>2]=h;g=d+504|0;g=c[g>>2]|0;h=e+4|0;c[h>>2]=g;i=f;return}function LV(e,f,g){e=e|0;f=f|0;g=g|0;var 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,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;h=i;k=i;i=i+8|0;l=i;i=i+8|0;j=i;i=i+8|0;c[k>>2]=e;c[l>>2]=f;p=c[(c[e+76>>2]|0)+1368>>2]|0;c[e+756>>2]=0;a[e+752|0]=1;l=l^k^j;l=(l>>>10^l^l>>20)&65535;c[j>>2]=(l|0)==0?29572:l;l=e+80|0;c[e+276>>2]=l;w=e+280|0;c[e+676>>2]=w;n=c[e+68>>2]|0;m=e+64|0;a[m]=0;c[w>>2]=f;x=f+g|0;c[e+284>>2]=x;c[e+288>>2]=f;A=c[e+24>>2]|0;z=c[e+28>>2]|0;g=(n|0)!=0;if(g){fd[c[n+4>>2]&511](c[n>>2]|0);o=n}else{o=n}v=(p|0)==2?0:16;p=n+12|0;r=n+16|0;s=e+20|0;q=n+20|0;t=e+65|0;u=e+12|0;a:while(1){if(f>>>0>>0){D=f}else{e=0;y=398;break}while(1){f=D+1|0;B=a[D]|0;E=B&255;C=B<<24>>24==28;if(!((B&255)>31|C)){break}do{if(C){E=D+2|0;if(E>>>0>=x>>>0){e=3;y=398;break a}C=D+3|0;B=16;E=(d[f]<<8&65535|d[E])<<16>>16}else{if((B&255)<247){C=f;B=16;E=E+ -139|0;break}if((B&255)<251){if(f>>>0>=x>>>0){e=3;y=398;break a}C=D+2|0;B=16;E=(d[f]|(E<<8)+ -63232)+108|0;break}if(B<<24>>24==-1){E=D+4|0;if(E>>>0>=x>>>0){e=3;y=398;break a}C=D+5|0;B=v;E=d[D+2|0]<<16|d[f]<<24|d[D+3|0]<<8|d[E];break}else{if(f>>>0>=x>>>0){e=3;y=398;break a}C=D+2|0;B=16;E=(251-E<<8)+ -108-(d[f]|0)|0;break}}}while(0);D=(c[k>>2]|0)+276|0;f=c[D>>2]|0;if((f-l|0)>188){e=130;y=398;break a}c[D>>2]=f+4;c[f>>2]=E<>>0>>0){D=C}else{e=0;y=398;break a}}G=c[k>>2]|0;B=c[G+276>>2]|0;H=B-(G+80)|0;C=H>>2;b:do{switch(E|0){case 21:{E=1;break};case 22:{E=2;break};case 23:{E=22;break};case 4:{E=3;break};case 3:{E=20;break};case 24:{E=10;break};case 25:{E=11;break};case 26:{E=13;break};case 12:{if(f>>>0>=x>>>0){e=3;y=398;break a}D=D+2|0;switch(d[f]|0){case 35:{f=D;E=14;break b};case 36:{f=D;E=16;break b};case 37:{f=D;E=17;break b};case 28:{f=D;E=36;break b};case 29:{f=D;E=37;break b};case 30:{f=D;E=38;break b};case 4:{f=D;E=45;break b};case 5:{f=D;E=46;break b};case 6:{f=D;E=56;break b};case 15:{f=D;E=47;break b};case 16:{f=D;E=54;break b};case 17:{f=D;E=55;break b};case 24:{f=D;E=32;break b};case 26:{f=D;E=33;break b};case 27:{f=D;E=39;break b};case 7:{f=D;E=57;break b};case 8:{f=D;E=42;break b};case 9:{f=D;E=26;break b};case 0:{f=D;E=25;break b};case 21:{f=D;E=41;break b};case 22:{f=D;E=48;break b};case 23:{f=D;E=31;break b};case 18:{f=D;E=35;break b};case 20:{f=D;E=40;break b};case 10:{f=D;E=27;break b};case 11:{f=D;E=28;break b};case 2:{f=D;E=19;break b};case 3:{f=D;E=44;break b};case 1:{f=D;E=20;break b};case 12:{f=D;E=29;break b};case 13:{f=D;E=43;break b};case 14:{f=D;E=30;break b};case 33:{f=D;E=58;break b};case 34:{f=D;E=15;break b};default:{e=3;y=398;break a}}break};case 18:{E=21;break};case 19:{E=23;break};case 20:{E=24;break};case 10:{E=49;break};case 11:{E=51;break};case 1:{E=19;break};case 13:{E=52;break};case 14:{E=18;break};case 16:{E=34;break};case 27:{E=8;break};case 29:{E=50;break};case 7:{E=6;break};case 8:{E=7;break};case 9:{E=53;break};case 30:{E=12;break};case 31:{E=9;break};case 5:{E=4;break};case 6:{E=5;break};default:{e=3;y=398;break a}}}while(0);F=d[290720+E|0]|0;if((F&128|0)==0){H=C}else{c:do{if((H|0)>0){if((a[G+752|0]|0)==0){break}d:do{switch(E|0){case 24:case 23:case 1:case 22:case 21:case 20:case 19:{D=C&1;y=91;break};case 18:{if((C|0)==5){break d}D=(C|0)==1|0;y=91;break};case 3:case 2:{D=C&2;y=91;break};default:{break c}}}while(0);if((y|0)==91){y=0;if((D|0)==0){break}}c[G+744>>2]=(c[l>>2]>>16)+(c[G+748>>2]|0);G=c[k>>2]|0;if((a[G+753|0]|0)!=0){e=0;y=398;break a}C=C+ -1|0}}while(0);a[G+752|0]=0;H=C;F=0}C=F&15;if((H|0)<(C|0)){e=129;y=398;break}D=B+(0-C<<2)|0;G=H-C|0;e:do{switch(E|0){case 8:{if((G|0)<4){e=129;y=398;break a}D=(G|0)%4|0;D=((D|0)>0)+(G-D)|0;if((NV(e,A,z)|0)!=0){e=0;y=398;break a}E=D+C|0;C=B+(0-E<<2)|0;if((D&1|0)==0){B=C}else{B=B+(1-E<<2)|0;D=D+ -1|0;z=(c[C>>2]|0)+z|0}C=((D|0)/4|0)*3|0;do{if((D+3|0)>>>0>=7){D=c[u>>2]|0;if(((b[D+22>>1]|0)+C+(b[D+58>>1]|0)|0)>>>0<=(c[D+4>>2]|0)>>>0){break}if((pJ(D,C,0)|0)!=0){e=0;y=398;break a}}}while(0);if(B>>>0>=(c[(c[k>>2]|0)+276>>2]|0)>>>0){E=l;break e}while(1){A=(c[B>>2]|0)+A|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[C]=2;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;A=(c[B+4>>2]|0)+A|0;z=(c[B+8>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[C]=2;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;A=(c[B+12>>2]|0)+A|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[C]=1;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;B=B+16|0;if(B>>>0>=(c[(c[k>>2]|0)+276>>2]|0)>>>0){E=l;break}}break};case 11:{if((G|0)<8){e=129;y=398;break a}G=G&-2;I=G+ -6|0;D=(I|0)/2|0;if((NV(e,A,z)|0)!=0){e=0;y=398;break a}E=D+3|0;do{if((E|0)!=0){y=c[u>>2]|0;if(((b[y+22>>1]|0)+E+(b[y+58>>1]|0)|0)>>>0<=(c[y+4>>2]|0)>>>0){break}if((pJ(y,E,0)|0)!=0){e=0;y=398;break a}}}while(0);C=C+G|0;y=B+(0-C<<2)|0;E=(c[y>>2]|0)+A|0;C=(c[B+(1-C<<2)>>2]|0)+z|0;H=c[s>>2]|0;A=(a[t]|0)==0;if((I|0)>1){z=0-D|0;z=(D+((z|0)>-1?z:2147483647)<<1)-(G+(F&15))|0;while(1){if(A){A=H+2|0}else{N=c[H+4>>2]|0;A=H+2|0;O=b[A>>1]|0;P=(c[H+8>>2]|0)+O|0;c[N+(O<<3)>>2]=E>>16;c[N+(O<<3)+4>>2]=C>>16;a[P]=1}b[A>>1]=(b[A>>1]|0)+1<<16>>16;F=y+8|0;D=D+ -1|0;E=(c[F>>2]|0)+E|0;C=(c[y+12>>2]|0)+C|0;H=c[s>>2]|0;A=(a[t]|0)==0;if((D|0)>0){y=F}else{break}}y=B+(z+2<<2)|0;if(A){z=y;y=238}else{z=y;y=239}}else{if(A){z=y;y=238}else{z=y;y=239}}if((y|0)==238){y=0;A=H+2|0}else if((y|0)==239){y=0;N=c[H+4>>2]|0;A=H+2|0;O=b[A>>1]|0;P=(c[H+8>>2]|0)+O|0;c[N+(O<<3)>>2]=E>>16;c[N+(O<<3)+4>>2]=C>>16;a[P]=2}b[A>>1]=(b[A>>1]|0)+1<<16>>16;A=(c[z+8>>2]|0)+E|0;B=(c[z+12>>2]|0)+C|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=B>>16;a[C]=2;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;A=(c[z+16>>2]|0)+A|0;z=(c[z+20>>2]|0)+B|0;B=c[s>>2]|0;if((a[t]|0)==0){B=B+2|0}else{N=c[B+4>>2]|0;P=B+2|0;O=b[P>>1]|0;B=(c[B+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[B]=1;B=P}b[B>>1]=(b[B>>1]|0)+1<<16>>16;E=l;break};case 13:{if((G|0)<4){e=129;y=398;break a}D=(G|0)%4|0;D=((D|0)>0)+(G-D)|0;if((NV(e,A,z)|0)!=0){e=0;y=398;break a}E=D+C|0;C=B+(0-E<<2)|0;if((D&1|0)==0){B=C}else{B=B+(1-E<<2)|0;D=D+ -1|0;A=(c[C>>2]|0)+A|0}C=((D|0)/4|0)*3|0;do{if((D+3|0)>>>0>=7){D=c[u>>2]|0;if(((b[D+22>>1]|0)+C+(b[D+58>>1]|0)|0)>>>0<=(c[D+4>>2]|0)>>>0){break}if((pJ(D,C,0)|0)!=0){e=0;y=398;break a}}}while(0);if(B>>>0>=(c[(c[k>>2]|0)+276>>2]|0)>>>0){E=l;break e}while(1){z=(c[B>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[C]=2;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;A=(c[B+4>>2]|0)+A|0;z=(c[B+8>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[C]=2;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;z=(c[B+12>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[C]=1;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;B=B+16|0;if(B>>>0>=(c[(c[k>>2]|0)+276>>2]|0)>>>0){E=l;break}}break};case 7:{if((G|0)<6){e=129;y=398;break a}F=G-((G|0)%6|0)|0;if((NV(e,A,z)|0)!=0){e=0;y=398;break a}E=(F|0)/2|0;do{if((F+1|0)>>>0>=3){D=c[u>>2]|0;if(((b[D+22>>1]|0)+E+(b[D+58>>1]|0)|0)>>>0<=(c[D+4>>2]|0)>>>0){break}if((pJ(D,E,0)|0)!=0){e=0;y=398;break a}}}while(0);B=B+(0-(C+F)<<2)|0;if(B>>>0>=(c[(c[k>>2]|0)+276>>2]|0)>>>0){E=l;break e}while(1){A=(c[B>>2]|0)+A|0;z=(c[B+4>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[C]=2;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;A=(c[B+8>>2]|0)+A|0;z=(c[B+12>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[C]=2;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;A=(c[B+16>>2]|0)+A|0;z=(c[B+20>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{N=c[C+4>>2]|0;P=C+2|0;O=b[P>>1]|0;C=(c[C+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[C]=1;C=P}b[C>>1]=(b[C>>1]|0)+1<<16>>16;B=B+24|0;if(B>>>0>=(c[(c[k>>2]|0)+276>>2]|0)>>>0){E=l;break}}break};case 22:case 21:case 20:case 19:{if(g){if((E|0)==19){D=1}else{D=(E|0)==21|0}P=(G|0)/2|0;Jd[c[p>>2]&63](c[o>>2]|0,D,P,B+(0-(C+(G&-2))<<2)|0);B=P}else{B=(G|0)/2|0}E=(c[k>>2]|0)+756|0;c[E>>2]=(c[E>>2]|0)+B;E=l;break};case 3:{MV(c[s>>2]|0);a[m]=0;E=l;z=(c[B+(((F|-16)^15)<<2)>>2]|0)+z|0;break};case 1:{MV(c[s>>2]|0);a[m]=0;E=l;A=(c[B+(-2-C<<2)>>2]|0)+A|0;z=(c[B+(((F|-16)^15)<<2)>>2]|0)+z|0;break};case 9:case 12:{if((NV(e,A,z)|0)!=0){e=0;y=398;break a}if((G|0)<4){e=129;y=398;break a}D=(G|0)%4|0;D=((D|0)>0)+(G-D)|0;G=((D|0)/4|0)*3|0;if((D+3|0)>>>0<7){E=l;break e}F=c[u>>2]|0;if(((b[F+22>>1]|0)+G+(b[F+58>>1]|0)|0)>>>0>(c[F+4>>2]|0)>>>0){if((pJ(F,G,0)|0)!=0){e=129;y=398;break a}}if((D|0)<=3){E=l;break e}B=B+(0-(C+D)<<2)|0;C=(E|0)==9|0;while(1){D=D+ -4|0;E=c[B>>2]|0;if((C|0)==0){z=E+z|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{N=c[E+4>>2]|0;P=E+2|0;O=b[P>>1]|0;E=(c[E+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[E]=2;E=P}b[E>>1]=(b[E>>1]|0)+1<<16>>16;A=(c[B+4>>2]|0)+A|0;z=(c[B+8>>2]|0)+z|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{N=c[E+4>>2]|0;P=E+2|0;O=b[P>>1]|0;E=(c[E+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[E]=2;E=P}b[E>>1]=(b[E>>1]|0)+1<<16>>16;A=(c[B+12>>2]|0)+A|0;if((D|0)==1){z=(c[B+16>>2]|0)+z|0}E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{N=c[E+4>>2]|0;P=E+2|0;O=b[P>>1]|0;E=(c[E+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[E]=1;E=P}b[E>>1]=(b[E>>1]|0)+1<<16>>16}else{A=E+A|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{N=c[E+4>>2]|0;P=E+2|0;O=b[P>>1]|0;E=(c[E+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[E]=2;E=P}b[E>>1]=(b[E>>1]|0)+1<<16>>16;A=(c[B+4>>2]|0)+A|0;z=(c[B+8>>2]|0)+z|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{N=c[E+4>>2]|0;P=E+2|0;O=b[P>>1]|0;E=(c[E+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[E]=2;E=P}b[E>>1]=(b[E>>1]|0)+1<<16>>16;z=(c[B+12>>2]|0)+z|0;if((D|0)==1){A=(c[B+16>>2]|0)+A|0}E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{N=c[E+4>>2]|0;P=E+2|0;O=b[P>>1]|0;E=(c[E+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[E]=1;E=P}b[E>>1]=(b[E>>1]|0)+1<<16>>16}if((D|0)>3){B=B+16|0;C=C^1}else{E=l;break}}break};case 6:case 5:{B=(E|0)==5|0;if((G|0)<1){e=129;y=398;break a}if((NV(e,A,z)|0)!=0){e=0;y=398;break a}do{if((H|0)!=(C|0)){C=c[u>>2]|0;if(((b[C+22>>1]|0)+G+(b[C+58>>1]|0)|0)>>>0<=(c[C+4>>2]|0)>>>0){break}if((pJ(C,G,0)|0)!=0){e=0;y=398;break a}}}while(0);if(l>>>0<(c[(c[k>>2]|0)+276>>2]|0)>>>0){C=l}else{E=l;break e}while(1){D=(B|0)==0;E=c[C>>2]|0;z=(D?E:0)+z|0;A=(D?0:E)+A|0;D=c[u>>2]|0;if(((b[D+22>>1]|0)+1+(b[D+58>>1]|0)|0)>>>0>(c[D+4>>2]|0)>>>0){if((pJ(D,1,0)|0)!=0){e=0;y=398;break a}}D=c[s>>2]|0;if((a[t]|0)==0){D=D+2|0}else{N=c[D+4>>2]|0;P=D+2|0;O=b[P>>1]|0;D=(c[D+8>>2]|0)+O|0;c[N+(O<<3)>>2]=A>>16;c[N+(O<<3)+4>>2]=z>>16;a[D]=1;D=P}b[D>>1]=(b[D>>1]|0)+1<<16>>16;C=C+4|0;if(C>>>0>=(c[(c[k>>2]|0)+276>>2]|0)>>>0){E=l;break e}B=B^1}break};case 17:{if((NV(e,A,z)|0)!=0){e=0;y=398;break a}E=c[u>>2]|0;if(((b[E+22>>1]|0)+6+(b[E+58>>1]|0)|0)>>>0>(c[E+4>>2]|0)>>>0){if((pJ(E,6,0)|0)!=0){e=0;y=398;break a}}O=c[D>>2]|0;M=c[B+(1-C<<2)>>2]|0;E=2-C|0;N=B+(E<<2)|0;L=B+(E+1<<2)|0;K=B+(E+2<<2)|0;J=B+(E+3<<2)|0;I=B+(E+4<<2)|0;H=B+(E+5<<2)|0;G=B+(E+6<<2)|0;C=(c[G>>2]|0)+((c[I>>2]|0)+((c[K>>2]|0)+((c[N>>2]|0)+O)))|0;F=B+(E+7<<2)|0;D=(c[F>>2]|0)+((c[H>>2]|0)+((c[J>>2]|0)+((c[L>>2]|0)+M)))|0;O=O+A|0;M=M+z|0;P=c[s>>2]|0;if((a[t]|0)==0){P=P+2|0}else{S=c[P+4>>2]|0;Q=P+2|0;R=b[Q>>1]|0;P=(c[P+8>>2]|0)+R|0;c[S+(R<<3)>>2]=O>>16;c[S+(R<<3)+4>>2]=M>>16;a[P]=2;P=Q}b[P>>1]=(b[P>>1]|0)+1<<16>>16;N=(c[N>>2]|0)+O|0;L=(c[L>>2]|0)+M|0;M=c[s>>2]|0;if((a[t]|0)==0){M=M+2|0}else{Q=c[M+4>>2]|0;S=M+2|0;R=b[S>>1]|0;M=(c[M+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=N>>16;c[Q+(R<<3)+4>>2]=L>>16;a[M]=2;M=S}b[M>>1]=(b[M>>1]|0)+1<<16>>16;K=(c[K>>2]|0)+N|0;J=(c[J>>2]|0)+L|0;L=c[s>>2]|0;if((a[t]|0)==0){L=L+2|0}else{Q=c[L+4>>2]|0;S=L+2|0;R=b[S>>1]|0;L=(c[L+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=K>>16;c[Q+(R<<3)+4>>2]=J>>16;a[L]=1;L=S}b[L>>1]=(b[L>>1]|0)+1<<16>>16;I=(c[I>>2]|0)+K|0;H=(c[H>>2]|0)+J|0;J=c[s>>2]|0;if((a[t]|0)==0){J=J+2|0}else{Q=c[J+4>>2]|0;S=J+2|0;R=b[S>>1]|0;J=(c[J+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=I>>16;c[Q+(R<<3)+4>>2]=H>>16;a[J]=2;J=S}b[J>>1]=(b[J>>1]|0)+1<<16>>16;G=(c[G>>2]|0)+I|0;F=(c[F>>2]|0)+H|0;H=c[s>>2]|0;if((a[t]|0)==0){H=H+2|0}else{Q=c[H+4>>2]|0;S=H+2|0;R=b[S>>1]|0;H=(c[H+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=G>>16;c[Q+(R<<3)+4>>2]=F>>16;a[H]=2;H=S}b[H>>1]=(b[H>>1]|0)+1<<16>>16;B=c[B+(E+8<<2)>>2]|0;C=(((C|0)<0?0-C|0:C)|0)>(((D|0)<0?0-D|0:D)|0);z=C?z:B+F|0;A=C?B+G|0:A;B=c[s>>2]|0;if((a[t]|0)==0){B=B+2|0}else{Q=c[B+4>>2]|0;S=B+2|0;R=b[S>>1]|0;B=(c[B+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[B]=1;B=S}b[B>>1]=(b[B>>1]|0)+1<<16>>16;E=l;break};case 14:{if((NV(e,A,z)|0)!=0){e=0;y=398;break a}B=c[u>>2]|0;if(((b[B+22>>1]|0)+6+(b[B+58>>1]|0)|0)>>>0>(c[B+4>>2]|0)>>>0){if((pJ(B,6,0)|0)==0){B=6}else{e=0;y=398;break a}}else{B=6}while(1){A=(c[D>>2]|0)+A|0;z=(c[D+4>>2]|0)+z|0;if((B|0)==4){C=1}else{C=(B|0)==1|0}F=c[s>>2]|0;if((a[t]|0)==0){E=F+2|0}else{R=c[F+4>>2]|0;E=F+2|0;S=b[E>>1]|0;F=(c[F+8>>2]|0)+S|0;c[R+(S<<3)>>2]=A>>16;c[R+(S<<3)+4>>2]=z>>16;a[F]=C<<24>>24!=0?1:2}b[E>>1]=(b[E>>1]|0)+1<<16>>16;B=B+ -1|0;if((B|0)==0){E=l;break}else{D=D+8|0}}break};case 56:{y=330;break a};case 26:{E=c[D>>2]|0;if((E|0)<0){c[D>>2]=0-E}E=B+(1-C<<2)|0;break};case 27:{E=B+(1-C<<2)|0;c[D>>2]=(c[D>>2]|0)+(c[E>>2]|0);break};case 28:{E=B+(1-C<<2)|0;c[D>>2]=(c[D>>2]|0)-(c[E>>2]|0);break};case 29:{E=B+(1-C<<2)|0;c[D>>2]=bJ(c[D>>2]|0,c[E>>2]|0)|0;break};case 30:{c[D>>2]=0-(c[D>>2]|0);E=B+(1-C<<2)|0;break};case 18:{y=331;break a};case 38:{E=c[D>>2]>>16;J=c[B+(1-C<<2)>>2]>>16;G=(E|0)<1?1:E;C=G+C|0;E=B+(0-C<<2)|0;if(E>>>0>>0){e=129;y=398;break a}if((J|0)>-1){if((J|0)<=0){E=D;break e}F=B+(G+ -1-C<<2)|0;H=G+ -2|0;I=(H|0)>-1;G=1-C|0;while(1){K=c[F>>2]|0;if(I){L=H;while(1){c[B+(G+L<<2)>>2]=c[B+(L-C<<2)>>2];if((L|0)>0){L=L+ -1|0}else{break}}}c[E>>2]=K;J=J+ -1|0;if((J|0)<=0){E=D;break}}}else{F=G+ -1|0;if((F|0)<=0){while(1){c[B+(F-C<<2)>>2]=c[E>>2];J=J+1|0;if((J|0)<0){}else{E=D;break e}}}while(1){I=c[E>>2]|0;H=0;while(1){G=H+1|0;c[B+(H-C<<2)>>2]=c[B+(G-C<<2)>>2];if((G|0)<(F|0)){H=G}else{break}}c[B+(F-C<<2)>>2]=I;J=J+1|0;if((J|0)>=0){E=D;break}}}break};case 31:{S=c[j>>2]|0;c[D>>2]=((S|0)>32767)+S;D=c[j>>2]|0;D=aJ(D,65536-D|0)|0;c[j>>2]=(D|0)==0?D+10355|0:D;E=B+(1-C<<2)|0;break};case 32:{E=B+(1-C<<2)|0;c[D>>2]=aJ(c[D>>2]|0,c[E>>2]|0)|0;break};case 33:{F=c[D>>2]|0;f:do{if((F|0)>0){E=F;while(1){G=F+1+(bJ(E,F)|0)>>1;if((G|0)==(F|0)){break f}E=c[D>>2]|0;F=G}}else{F=0}}while(0);c[D>>2]=F;E=B+(1-C<<2)|0;break};case 44:{E=B+(1-C<<2)|0;if((c[D>>2]|0)==0){B=0}else{B=(c[E>>2]|0)!=0?65536:0}c[D>>2]=B;break};case 45:{E=B+(1-C<<2)|0;if((c[D>>2]|0)==0){B=(c[E>>2]|0)!=0?65536:0}else{B=65536}c[D>>2]=B;break};case 47:{c[D>>2]=(c[D>>2]|0)==0?65536:0;E=B+(1-C<<2)|0;break};case 36:{S=c[D>>2]|0;E=B+(1-C<<2)|0;c[D>>2]=c[E>>2];c[E>>2]=S;E=B+(2-C<<2)|0;break};case 37:{E=c[D>>2]>>16;if((E|0)<0){E=-1}else{F=G+ -2|0;E=~((E|0)>(F|0)?F:E)}c[D>>2]=c[B+(E-C<<2)>>2];E=B+(1-C<<2)|0;break};case 10:{if((G|0)<8){e=129;y=398;break a}E=G+ -2|0;I=(E|0)%6|0;D=(E|0)/6|0;if((NV(e,A,z)|0)!=0){e=0;y=398;break a}F=(D*3|0)+2|0;do{if((F|0)!=0){H=c[u>>2]|0;if(((b[H+22>>1]|0)+F+(b[H+58>>1]|0)|0)>>>0<=(c[H+4>>2]|0)>>>0){break}if((pJ(H,F,0)|0)!=0){e=0;y=398;break a}}}while(0);C=-2-C+(2-G)+I|0;F=B+(C<<2)|0;A=(c[F>>2]|0)+A|0;z=(c[B+(C+1<<2)>>2]|0)+z|0;B=c[s>>2]|0;C=(a[t]|0)==0;if((E|0)>5){G=B;B=F;while(1){if(C){C=G+2|0}else{Q=c[G+4>>2]|0;C=G+2|0;R=b[C>>1]|0;S=(c[G+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[S]=2}b[C>>1]=(b[C>>1]|0)+1<<16>>16;A=(c[B+8>>2]|0)+A|0;z=(c[B+12>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{Q=c[C+4>>2]|0;S=C+2|0;R=b[S>>1]|0;C=(c[C+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[C]=2;C=S}b[C>>1]=(b[C>>1]|0)+1<<16>>16;A=(c[B+16>>2]|0)+A|0;z=(c[B+20>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{Q=c[C+4>>2]|0;S=C+2|0;R=b[S>>1]|0;C=(c[C+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[C]=1;C=S}b[C>>1]=(b[C>>1]|0)+1<<16>>16;E=B+24|0;D=D+ -1|0;A=(c[E>>2]|0)+A|0;z=(c[B+28>>2]|0)+z|0;B=c[s>>2]|0;C=(a[t]|0)==0;if((D|0)>0){G=B;B=E}else{break}}}if(C){B=B+2|0}else{Q=c[B+4>>2]|0;S=B+2|0;R=b[S>>1]|0;B=(c[B+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[B]=1;B=S}b[B>>1]=(b[B>>1]|0)+1<<16>>16;E=l;break};case 16:{if((NV(e,A,z)|0)!=0){e=0;y=398;break a}E=c[u>>2]|0;if(((b[E+22>>1]|0)+6+(b[E+58>>1]|0)|0)>>>0>(c[E+4>>2]|0)>>>0){if((pJ(E,6,0)|0)!=0){e=0;y=398;break a}}D=(c[D>>2]|0)+A|0;A=(c[B+(1-C<<2)>>2]|0)+z|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{Q=c[E+4>>2]|0;S=E+2|0;R=b[S>>1]|0;E=(c[E+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=D>>16;c[Q+(R<<3)+4>>2]=A>>16;a[E]=2;E=S}b[E>>1]=(b[E>>1]|0)+1<<16>>16;D=(c[B+(2-C<<2)>>2]|0)+D|0;A=(c[B+(3-C<<2)>>2]|0)+A|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{Q=c[E+4>>2]|0;S=E+2|0;R=b[S>>1]|0;E=(c[E+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=D>>16;c[Q+(R<<3)+4>>2]=A>>16;a[E]=2;E=S}b[E>>1]=(b[E>>1]|0)+1<<16>>16;D=(c[B+(4-C<<2)>>2]|0)+D|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{Q=c[E+4>>2]|0;S=E+2|0;R=b[S>>1]|0;E=(c[E+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=D>>16;c[Q+(R<<3)+4>>2]=A>>16;a[E]=1;E=S}b[E>>1]=(b[E>>1]|0)+1<<16>>16;D=(c[B+(5-C<<2)>>2]|0)+D|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{Q=c[E+4>>2]|0;S=E+2|0;R=b[S>>1]|0;E=(c[E+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=D>>16;c[Q+(R<<3)+4>>2]=A>>16;a[E]=2;E=S}b[E>>1]=(b[E>>1]|0)+1<<16>>16;D=(c[B+(6-C<<2)>>2]|0)+D|0;E=c[s>>2]|0;if((a[t]|0)==0){A=E+2|0}else{P=(c[B+(7-C<<2)>>2]|0)+A|0;Q=c[E+4>>2]|0;A=E+2|0;R=b[A>>1]|0;S=(c[E+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=D>>16;c[Q+(R<<3)+4>>2]=P>>16;a[S]=2}b[A>>1]=(b[A>>1]|0)+1<<16>>16;A=(c[B+(8-C<<2)>>2]|0)+D|0;B=c[s>>2]|0;if((a[t]|0)==0){B=B+2|0}else{Q=c[B+4>>2]|0;S=B+2|0;R=b[S>>1]|0;B=(c[B+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[B]=1;B=S}b[B>>1]=(b[B>>1]|0)+1<<16>>16;E=l;break};case 4:{if((NV(e,A,z)|0)!=0){e=0;y=398;break a}D=(G|0)/2|0;if((G+1|0)>>>0<3){e=129;y=398;break a}E=c[u>>2]|0;if(((b[E+22>>1]|0)+D+(b[E+58>>1]|0)|0)>>>0>(c[E+4>>2]|0)>>>0){if((pJ(E,D,0)|0)!=0){e=0;y=398;break a}}if((G|0)<2){e=129;y=398;break a}B=B+(0-(C+(G&-2))<<2)|0;if(B>>>0>=(c[(c[k>>2]|0)+276>>2]|0)>>>0){E=l;break e}while(1){A=(c[B>>2]|0)+A|0;z=(c[B+4>>2]|0)+z|0;C=c[s>>2]|0;if((a[t]|0)==0){C=C+2|0}else{Q=c[C+4>>2]|0;S=C+2|0;R=b[S>>1]|0;C=(c[C+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[C]=1;C=S}b[C>>1]=(b[C>>1]|0)+1<<16>>16;B=B+8|0;if(B>>>0<(c[(c[k>>2]|0)+276>>2]|0)>>>0){}else{E=l;break}}break};case 2:{MV(c[s>>2]|0);a[m]=0;E=l;A=(c[B+(((F|-16)^15)<<2)>>2]|0)+A|0;break};case 24:case 23:{if((G|0)>0){if(g){S=(G|0)/2|0;Jd[c[p>>2]&63](c[o>>2]|0,0,S,B+(0-(C+(G&-2))<<2)|0);B=S}else{B=(G|0)/2|0}S=(c[k>>2]|0)+756|0;c[S>>2]=(c[S>>2]|0)+B}B=c[(c[k>>2]|0)+756>>2]|0;if((f+(B+7>>3)|0)>>>0>=x>>>0){e=3;y=398;break a}do{if(g){if((E|0)==23){Jd[c[r>>2]&63](c[o>>2]|0,b[(c[s>>2]|0)+2>>1]|0,B,f);break}else{Gd[c[q>>2]&255](c[o>>2]|0,B,f);break}}}while(0);E=l;f=f+((c[(c[k>>2]|0)+756>>2]|0)+7>>3)|0;break};case 15:{if((NV(e,A,z)|0)!=0){e=0;y=398;break a}E=c[u>>2]|0;if(((b[E+22>>1]|0)+6+(b[E+58>>1]|0)|0)>>>0>(c[E+4>>2]|0)>>>0){if((pJ(E,6,0)|0)!=0){e=0;y=398;break a}}A=(c[D>>2]|0)+A|0;D=c[s>>2]|0;if((a[t]|0)==0){D=D+2|0}else{Q=c[D+4>>2]|0;S=D+2|0;R=b[S>>1]|0;D=(c[D+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[D]=2;D=S}b[D>>1]=(b[D>>1]|0)+1<<16>>16;D=(c[B+(1-C<<2)>>2]|0)+A|0;A=(c[B+(2-C<<2)>>2]|0)+z|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{Q=c[E+4>>2]|0;S=E+2|0;R=b[S>>1]|0;E=(c[E+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=D>>16;c[Q+(R<<3)+4>>2]=A>>16;a[E]=2;E=S}b[E>>1]=(b[E>>1]|0)+1<<16>>16;D=(c[B+(3-C<<2)>>2]|0)+D|0;E=c[s>>2]|0;if((a[t]|0)==0){E=E+2|0}else{Q=c[E+4>>2]|0;S=E+2|0;R=b[S>>1]|0;E=(c[E+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=D>>16;c[Q+(R<<3)+4>>2]=A>>16;a[E]=1;E=S}b[E>>1]=(b[E>>1]|0)+1<<16>>16;D=(c[B+(4-C<<2)>>2]|0)+D|0;E=c[s>>2]|0;if((a[t]|0)==0){A=E+2|0}else{P=c[E+4>>2]|0;S=E+2|0;Q=b[S>>1]|0;R=(c[E+8>>2]|0)+Q|0;c[P+(Q<<3)>>2]=D>>16;c[P+(Q<<3)+4>>2]=A>>16;a[R]=2;A=S}b[A>>1]=(b[A>>1]|0)+1<<16>>16;A=(c[B+(5-C<<2)>>2]|0)+D|0;D=c[s>>2]|0;if((a[t]|0)==0){D=D+2|0}else{Q=c[D+4>>2]|0;S=D+2|0;R=b[S>>1]|0;D=(c[D+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[D]=2;D=S}b[D>>1]=(b[D>>1]|0)+1<<16>>16;A=(c[B+(6-C<<2)>>2]|0)+A|0;B=c[s>>2]|0;if((a[t]|0)==0){B=B+2|0}else{Q=c[B+4>>2]|0;S=B+2|0;R=b[S>>1]|0;B=(c[B+8>>2]|0)+R|0;c[Q+(R<<3)>>2]=A>>16;c[Q+(R<<3)+4>>2]=z>>16;a[B]=1;B=S}b[B>>1]=(b[B>>1]|0)+1<<16>>16;E=l;break};case 39:{c[B+(1-C<<2)>>2]=c[D>>2];E=B+(2-C<<2)|0;break};case 40:{B=c[B+(1-C<<2)>>2]>>16;if(B>>>0>=32){E=D;break e}c[(c[k>>2]|0)+760+(B<<2)>>2]=c[D>>2];E=D;break};case 41:{E=c[D>>2]>>16;if(E>>>0<32){E=c[(c[k>>2]|0)+760+(E<<2)>>2]|0}else{E=0}c[D>>2]=E;E=B+(1-C<<2)|0;break};case 53:{E=l;break};case 52:{z=c[k>>2]|0;c[z+744>>2]=(c[B+(1-C<<2)>>2]>>16)+(c[z+748>>2]|0);c[(c[k>>2]|0)+32>>2]=c[D>>2];c[(c[k>>2]|0)+36>>2]=0;z=c[k>>2]|0;E=l;A=(c[D>>2]|0)+(c[z+24>>2]|0)|0;z=c[z+28>>2]|0;break};case 57:{S=c[k>>2]|0;c[S+744>>2]=(c[B+(2-C<<2)>>2]>>16)+(c[S+748>>2]|0);c[(c[k>>2]|0)+32>>2]=c[D>>2];S=B+(1-C<<2)|0;c[(c[k>>2]|0)+36>>2]=c[S>>2];z=c[k>>2]|0;E=l;A=(c[D>>2]|0)+(c[z+24>>2]|0)|0;z=(c[S>>2]|0)+(c[z+28>>2]|0)|0;break};case 58:{z=c[k>>2]|0;E=l;A=(c[D>>2]|0)+(c[z+24>>2]|0)|0;z=(c[B+(1-C<<2)>>2]|0)+(c[z+28>>2]|0)|0;break};case 54:{E=-2-C|0;E=B+(E-(c[B+(E<<2)>>2]>>16)<<2)|0;if(E>>>0>>0){e=129;y=398;break a}break};case 55:{E=B+(1-C<<2)|0;break};case 50:{B=c[k>>2]|0;x=(c[B+900>>2]|0)+(c[D>>2]>>16)|0;if(x>>>0>=(c[B+892>>2]|0)>>>0){e=3;y=398;break a}if((w-(B+280)|0)>372){e=3;y=398;break a}c[w+8>>2]=f;B=w+12|0;S=c[(c[(c[k>>2]|0)+908>>2]|0)+(x<<2)>>2]|0;c[B>>2]=S;R=c[(c[(c[k>>2]|0)+908>>2]|0)+(x+1<<2)>>2]|0;x=w+16|0;c[x>>2]=R;c[w+20>>2]=S;if((S|0)==0|(R|0)==(S|0)){e=3;y=398;break a}c[(c[k>>2]|0)+676>>2]=B;E=D;f=c[B>>2]|0;x=c[x>>2]|0;w=B;break};case 48:{E=B+(1-C<<2)|0;if((c[B+(2-C<<2)>>2]|0)<=(c[B+(3-C<<2)>>2]|0)){break e}c[D>>2]=c[E>>2];break};case 49:{B=c[k>>2]|0;x=(c[B+896>>2]|0)+(c[D>>2]>>16)|0;if(x>>>0>=(c[B+888>>2]|0)>>>0){e=3;y=398;break a}if((w-(B+280)|0)>372){e=3;y=398;break a}c[w+8>>2]=f;B=w+12|0;S=c[(c[(c[k>>2]|0)+904>>2]|0)+(x<<2)>>2]|0;c[B>>2]=S;R=c[(c[(c[k>>2]|0)+904>>2]|0)+(x+1<<2)>>2]|0;x=w+16|0;c[x>>2]=R;c[w+20>>2]=S;if((S|0)==0|(R|0)==(S|0)){e=3;y=398;break a}c[(c[k>>2]|0)+676>>2]=B;E=D;f=c[B>>2]|0;x=c[x>>2]|0;w=B;break};case 51:{S=c[k>>2]|0;x=S+676|0;w=c[x>>2]|0;if(w>>>0<=(S+280|0)>>>0){e=3;y=398;break a}c[x>>2]=w+ -12;w=c[(c[k>>2]|0)+676>>2]|0;E=D;f=c[w+8>>2]|0;x=c[w+4>>2]|0;break};case 25:case 35:{E=D;break};default:{e=7;y=398;break a}}}while(0);c[(c[k>>2]|0)+276>>2]=E;if(((c[(c[k>>2]|0)+276>>2]|0)-l|0)>188){e=130;y=398;break}}if((y|0)==330){S=OV(c[k>>2]|0,c[D>>2]|0,c[B+(1-C<<2)>>2]|0,c[B+(2-C<<2)>>2]|0,c[B+(3-C<<2)>>2]>>16,c[B+(4-C<<2)>>2]>>16)|0;sJ(c[u>>2]|0);i=h;return S|0}else if((y|0)==331){if((G|0)>3){S=c[k>>2]|0;R=c[S+744>>2]|0;S=OV(S,0,c[B+(-4-C<<2)>>2]|0,c[B+(-3-C<<2)>>2]|0,c[B+(-2-C<<2)>>2]>>16,c[B+(((F|-16)^15)<<2)>>2]>>16)|0;c[(c[k>>2]|0)+744>>2]=R;i=h;return S|0}MV(c[s>>2]|0);do{if(g){if((Bd[c[n+8>>2]&255](c[o>>2]|0,b[(c[s>>2]|0)+2>>1]|0)|0)==0){pd[c[n+24>>2]&63](c[o>>2]|0,c[s>>2]|0,c[e+72>>2]|0,c[(c[k>>2]|0)+920>>2]|0)|0;break}else{S=3;i=h;return S|0}}}while(0);sJ(c[u>>2]|0);S=0;i=h;return S|0}else if((y|0)==398){i=h;return e|0}return 0}function MV(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;if((d|0)==0){i=e;return}f=b[d>>1]|0;if(f<<16>>16<2){g=0}else{g=(b[(c[d+12>>2]|0)+((f<<16>>16)+ -2<<1)>>1]|0)+1|0}h=d+2|0;j=b[h>>1]|0;do{if(j<<16>>16>1){l=c[d+4>>2]|0;k=(j<<16>>16)+ -1|0;if((c[l+(g<<3)>>2]|0)!=(c[l+(k<<3)>>2]|0)){break}if((c[l+(g<<3)+4>>2]|0)!=(c[l+(k<<3)+4>>2]|0)){break}if((a[(c[d+8>>2]|0)+k|0]|0)!=1){break}j=j+ -1<<16>>16;b[h>>1]=j}}while(0);if(f<<16>>16<=0){i=e;return}k=(j<<16>>16)+ -1|0;if((g|0)==(k|0)){b[d>>1]=f+ -1<<16>>16;b[h>>1]=j+ -1<<16>>16;i=e;return}else{b[(c[d+12>>2]|0)+((f<<16>>16)+ -1<<1)>>1]=k;i=e;return}}function NV(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;h=d+64|0;if((a[h]|0)!=0){l=0;i=g;return l|0}a[h]=1;j=d+20|0;k=c[j>>2]|0;h=d+65|0;if((a[h]|0)==0){b[k>>1]=(b[k>>1]|0)+1<<16>>16;d=d+12|0}else{d=d+12|0;l=c[d>>2]|0;do{if(((b[l+20>>1]|0)+1+(b[l+56>>1]|0)|0)>>>0>(c[l+8>>2]|0)>>>0){l=pJ(l,0,1)|0;if((l|0)==0){break}i=g;return l|0}}while(0);l=b[k>>1]|0;if(l<<16>>16>0){b[(c[k+12>>2]|0)+((l<<16>>16)+ -1<<1)>>1]=(b[k+2>>1]|0)+ -1<<16>>16;l=b[k>>1]|0}b[k>>1]=l+1<<16>>16}k=c[d>>2]|0;do{if(((b[k+22>>1]|0)+1+(b[k+58>>1]|0)|0)>>>0>(c[k+4>>2]|0)>>>0){l=pJ(k,1,0)|0;if((l|0)==0){break}i=g;return l|0}}while(0);j=c[j>>2]|0;if((a[h]|0)==0){e=j+2|0}else{h=c[j+4>>2]|0;l=j+2|0;k=b[l>>1]|0;d=(c[j+8>>2]|0)+k|0;c[h+(k<<3)>>2]=e>>16;c[h+(k<<3)+4>>2]=f>>16;a[d]=1;e=l}b[e>>1]=(b[e>>1]|0)+1<<16>>16;l=0;i=g;return l|0}function OV(d,e,f,g,h,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;k=i;n=i;i=i+8|0;p=n;t=i;i=i+8|0;v=t;y=i;i=i+8|0;z=y;B=i;i=i+8|0;A=B;o=i;i=i+8|0;m=o;s=i;i=i+8|0;u=s;q=c[d+4>>2]|0;r=d+924|0;if((a[r]|0)!=0){H=160;i=k;return H|0}l=d+32|0;f=(c[l>>2]|0)+f|0;x=d+36|0;w=(c[x>>2]|0)+g|0;g=q+128|0;a:do{if((c[(c[g>>2]|0)+52>>2]|0)==0){D=c[q+692>>2]|0;C=c[D+1160>>2]|0;E=(C|0)==0;b:do{if(E|h>>>0>255){h=-1}else{if(h>>>0<256){F=b[287224+(h<<1)>>1]|0}else{F=0}H=c[D+12>>2]|0;if((H|0)==0){h=-1;break}else{h=0}while(1){G=h+1|0;if((b[C+(h<<1)>>1]|0)==F<<16>>16){break b}if(G>>>0>>0){h=G}else{h=-1;break}}}}while(0);if(E|j>>>0>255){H=160;i=k;return H|0}if(j>>>0<256){E=b[287224+(j<<1)>>1]|0}else{E=0}F=c[D+12>>2]|0;if((F|0)==0){H=160;i=k;return H|0}else{j=0}while(1){D=j+1|0;if((b[C+(j<<1)>>1]|0)==E<<16>>16){break a}if(D>>>0>>0){j=D}else{A=160;break}}i=k;return A|0}}while(0);if((h|j|0)<0){H=160;i=k;return H|0}do{if((a[d+66|0]|0)!=0){D=c[d+8>>2]|0;C=c[c[D+156>>2]>>2]|0;E=qJ(C,2)|0;if((E|0)==0){H=c[C+88>>2]|0;c[H>>2]=h;b[H+4>>1]=514;c[H+8>>2]=0;c[H+12>>2]=0;c[H+32>>2]=j;b[H+36>>1]=2;c[H+40>>2]=f>>16;c[H+44>>2]=w>>16;c[D+128>>2]=2;c[D+132>>2]=c[C+52>>2];c[D+72>>2]=1668246896;c[C+84>>2]=2;break}else{H=E;i=k;return H|0}}}while(0);rJ(c[d+12>>2]|0);C=c[(c[g>>2]|0)+52>>2]|0;if((C|0)==0){A=AV((c[q+692>>2]|0)+1176|0,h,m,u)|0}else{H=sd[c[c[C>>2]>>2]&127](c[C+4>>2]|0,h,A)|0;c[o>>2]=c[B>>2];c[s>>2]=c[A+4>>2];A=H}do{if((A|0)==0){a[r]=1;C=c[s>>2]|0;A=LV(d,c[o>>2]|0,C)|0;a[r]=0;B=(c[g>>2]|0)+52|0;do{if((c[B>>2]|0)==0){y=c[q+692>>2]|0;if((c[y+1204>>2]|0)!=0){break}NK(c[y+1176>>2]|0,m)}else{c[y>>2]=c[o>>2];c[z+4>>2]=C;H=c[B>>2]|0;hd[c[(c[H>>2]|0)+4>>2]&127](c[H+4>>2]|0,z)}}while(0);if((A|0)==0){break}i=k;return A|0}}while(0);A=l;y=c[A>>2]|0;A=c[A+4>>2]|0;h=d+40|0;C=h;B=c[C>>2]|0;C=c[C+4>>2]|0;z=d+744|0;D=c[z>>2]|0;c[l>>2]=0;c[x>>2]=0;x=d+24|0;c[x>>2]=f-e;e=d+28|0;c[e>>2]=w;f=c[(c[g>>2]|0)+52>>2]|0;if((f|0)==0){t=AV((c[q+692>>2]|0)+1176|0,j,m,u)|0}else{H=sd[c[c[f>>2]>>2]&127](c[f+4>>2]|0,j,v)|0;c[o>>2]=c[t>>2];c[s>>2]=c[v+4>>2];t=H}do{if((t|0)==0){a[r]=1;s=c[s>>2]|0;d=LV(d,c[o>>2]|0,s)|0;a[r]=0;r=(c[g>>2]|0)+52|0;do{if((c[r>>2]|0)==0){n=c[q+692>>2]|0;if((c[n+1204>>2]|0)!=0){break}NK(c[n+1176>>2]|0,m)}else{c[n>>2]=c[o>>2];c[p+4>>2]=s;H=c[r>>2]|0;hd[c[(c[H>>2]|0)+4>>2]&127](c[H+4>>2]|0,p)}}while(0);if((d|0)==0){t=0;break}else{A=d}i=k;return A|0}}while(0);H=l;c[H>>2]=y;c[H+4>>2]=A;H=h;c[H>>2]=B;c[H+4>>2]=C;c[z>>2]=D;c[x>>2]=0;c[e>>2]=0;H=t;i=k;return H|0}function PV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;a=c[a+692>>2]|0;if((a|0)==0){j=0;i=f;return j|0}h=c[a+1452>>2]|0;if((h|0)==65535){j=6;i=f;return j|0}if((b|0)!=0){g=a+2064|0;j=c[g>>2]|0;if((j|0)==0){do{if(h>>>0>390){h=h+ -391|0;if((c[a+1312>>2]|0)>>>0<=h>>>0){j=0;break}j=c[(c[a+1316>>2]|0)+(h<<2)>>2]|0}else{j=c[a+2056>>2]|0;if((j|0)==0){j=0;break}j=jd[c[j+20>>2]&511](h)|0}}while(0);c[g>>2]=j}c[b>>2]=j}if((d|0)!=0){b=a+2068|0;g=c[b>>2]|0;if((g|0)==0){h=c[a+1456>>2]|0;do{if((h|0)==65535){g=0}else{if(h>>>0>390){g=h+ -391|0;if((c[a+1312>>2]|0)>>>0<=g>>>0){g=0;break}g=c[(c[a+1316>>2]|0)+(g<<2)>>2]|0;break}else{g=c[a+2056>>2]|0;if((g|0)==0){g=0;break}g=jd[c[g+20>>2]&511](h)|0;break}}}while(0);c[b>>2]=g}c[d>>2]=g}if((e|0)==0){j=0;i=f;return j|0}c[e>>2]=c[a+1460>>2];j=0;i=f;return j|0}function QV(b,d){b=b|0;d=d|0;var e=0;e=i;b=c[b+692>>2]|0;a[d]=0;if((b|0)==0){i=e;return 0}if((c[b+1452>>2]|0)==65535){i=e;return 0}a[d]=1;i=e;return 0}function RV(a,b,d){a=a|0;b=b|0;d=d|0;var f=0;f=i;a=c[a+692>>2]|0;do{if((a|0)==0){d=0}else{if((c[a+1452>>2]|0)==65535){d=6;break}if((c[a+12>>2]|0)>>>0>>0){d=6;break}if((d|0)==0){d=0;break}c[d>>2]=e[(c[a+1160>>2]|0)+(b<<1)>>1]|0;d=0}}while(0);i=f;return d|0}function SV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=c[(c[(c[a>>2]|0)+96>>2]|0)+4>>2]|0;c[b>>2]=0;c[b+4>>2]=0;f=c[a+12>>2]|0;if((f|0)==287048|(f|0)==287088){f=0;i=d;return f|0}e=oK(mK(e,287128)|0,290960)|0;if((e|0)==0){f=0;i=d;return f|0}e=c[e>>2]|0;if((e|0)==0){f=0;i=d;return f|0}f=Bd[e&255](a,b)|0;i=d;return f|0}function TV(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;a=c[a+692>>2]|0;h=c[a+2056>>2]|0;if((h|0)==0){j=2;i=g;return j|0}d=b[(c[a+1160>>2]|0)+(d<<1)>>1]|0;j=d&65535;if(d<<16>>16==-1){j=0;i=g;return j|0}do{if((d&65535)>390){h=j+ -391|0;if((c[a+1312>>2]|0)>>>0>h>>>0){a=c[(c[a+1316>>2]|0)+(h<<2)>>2]|0;break}else{j=0;i=g;return j|0}}else{a=jd[c[h+20>>2]&511](j)|0}}while(0);if((a|0)==0){j=0;i=g;return j|0}bL(e,a,f)|0;j=0;i=g;return j|0}function UV(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;j=c[a+692>>2]|0;k=oK(c[a+96>>2]|0,287136)|0;if((k|0)==0){m=0;i=f;return m|0}h=j+12|0;if((c[h>>2]|0)==0){m=0;i=f;return m|0}g=j+1160|0;a=j+1312|0;j=j+1316|0;k=k+20|0;l=0;a:while(1){n=b[(c[g>>2]|0)+(l<<1)>>1]|0;m=n&65535;do{if((n&65535)>390){m=m+ -391|0;if((c[a>>2]|0)>>>0<=m>>>0){break}m=c[(c[j>>2]|0)+(m<<2)>>2]|0;e=8}else{m=jd[c[k>>2]&511](m)|0;e=8}}while(0);do{if((e|0)==8){e=0;if((m|0)==0){break}if((Qc(d|0,m|0)|0)==0){e=11;break a}}}while(0);l=l+1|0;if(l>>>0>=(c[h>>2]|0)>>>0){l=0;e=11;break}}if((e|0)==11){i=f;return l|0}return 0}function VV(a){a=a|0;i=i;return c[(c[a+692>>2]|0)+1304>>2]|0}function WV(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;f=i;i=i+8|0;h=c[d+692>>2]|0;c[f>>2]=0;if((h|0)==0){l=f;l=c[l>>2]|0;i=g;return l|0}j=h+2060|0;k=c[j>>2]|0;if((k|0)==0){k=jJ(c[d+100>>2]|0,32,f)|0;if((c[f>>2]|0)!=0){l=f;l=c[l>>2]|0;i=g;return l|0}d=c[h+1324>>2]|0;do{if((d|0)==65535){d=0}else{if(d>>>0>390){d=d+ -391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{l=c[h+2056>>2]|0;if((l|0)==0){d=0;break}d=jd[c[l+20>>2]&511](d)|0;break}}}while(0);c[k>>2]=d;d=c[h+1328>>2]|0;do{if((d|0)==65535){d=0}else{if(d>>>0>390){d=d+ -391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{l=c[h+2056>>2]|0;if((l|0)==0){d=0;break}d=jd[c[l+20>>2]&511](d)|0;break}}}while(0);c[k+4>>2]=d;d=c[h+1336>>2]|0;do{if((d|0)==65535){d=0}else{if(d>>>0>390){d=d+ -391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{l=c[h+2056>>2]|0;if((l|0)==0){d=0;break}d=jd[c[l+20>>2]&511](d)|0;break}}}while(0);c[k+8>>2]=d;d=c[h+1340>>2]|0;do{if((d|0)==65535){d=0}else{if(d>>>0>390){d=d+ -391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{l=c[h+2056>>2]|0;if((l|0)==0){d=0;break}d=jd[c[l+20>>2]&511](d)|0;break}}}while(0);c[k+12>>2]=d;l=c[h+1344>>2]|0;do{if((l|0)==65535){d=0}else{if(l>>>0>390){d=l+ -391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{d=c[h+2056>>2]|0;if((d|0)==0){d=0;break}d=jd[c[d+20>>2]&511](l)|0;break}}}while(0);c[k+16>>2]=d;c[k+20>>2]=c[h+1352>>2];a[k+24|0]=a[h+1348|0]|0;b[k+26>>1]=c[h+1356>>2];b[k+28>>1]=c[h+1360>>2];c[j>>2]=k}$W(e|0,k|0,32)|0;l=f;l=c[l>>2]|0;i=g;return l|0}function XV(a){a=a|0;i=i;return(c[a+8>>2]|0)>>>9&1|0}function YV(a){a=a|0;var b=0;b=i;bX(a|0,0,24)|0;i=b;return}function ZV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;e=i;i=i+8|0;j=e;k=c[a>>2]|0;c[e>>2]=0;g=c[b+8>>2]|0;if((b|0)==(d|0)){m=0;i=f;return m|0}a=b+12|0;if((c[a>>2]|0)==0){$W(d|0,b|0,24)|0;m=0;i=f;return m|0}g=da(c[b>>2]|0,(g|0)<0?0-g|0:g)|0;h=d+12|0;l=c[h>>2]|0;do{if((l|0)==0){l=OK(k,g,j)|0;c[h>>2]=l}else{m=c[d+8>>2]|0;m=da((m|0)<0?0-m|0:m,c[d>>2]|0)|0;if((m|0)==(g|0)){break}l=$K(k,1,m,g,l,j)|0;c[h>>2]=l}}while(0);j=c[e>>2]|0;if((j|0)!=0){m=j;i=f;return m|0}$W(d|0,b|0,24)|0;c[h>>2]=l;$W(l|0,c[a>>2]|0,g|0)|0;m=c[e>>2]|0;i=f;return m|0}function _V(a,b){a=a|0;b=b|0;var d=0;d=i;if((a|0)==0){b=33;i=d;return b|0}if((b|0)==0){b=6;i=d;return b|0}lJ(c[a>>2]|0,c[b+12>>2]|0);bX(b|0,0,24)|0;b=0;i=d;return b|0}function $V(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;j=i;i=i+8|0;k=j;e=i;i=i+8|0;h=e;m=b+28|0;f=c[m>>2]|0;n=aW(b)|0;c[e>>2]=n;if((n|0)!=0){n=e;n=c[n>>2]|0;i=g;return n|0}bX(a|0,0,40)|0;n=a+28|0;c[n>>2]=f;d=OK(f,8276,h)|0;a:do{if((c[e>>2]|0)==0){l=d+12|0;c[d+4>>2]=a;c[d>>2]=b;c[d+8>>2]=c[n>>2];n=d+8264|0;c[d+8272>>2]=n;c[d+8268>>2]=n;c[n>>2]=0;n=aW(b)|0;do{if((n|0)==0){c[d+68>>2]=IK(b)|0;c[d+44>>2]=92;c[d+48>>2]=93;c[d+52>>2]=c[m>>2];c[d+16>>2]=0;c[l>>2]=d+4168;if((wc(l|0,-15,291008,56)|0)!=0){n=3;break}if((c[l>>2]|0)==0){n=3;break}c[e>>2]=0;c[a+12>>2]=d;break a}}while(0);c[e>>2]=n;lJ(f,d);n=e;n=c[n>>2]|0;i=g;return n|0}}while(0);l=c[b+8>>2]|0;do{if((PJ(b,(c[b+4>>2]|0)+ -4|0)|0)==0){k=GK(b,k)|0;j=(c[j>>2]|0)!=0?0:k;PJ(b,l)|0;if(!((j|0)!=0&j>>>0<40960)){break}b=jJ(f,j,h)|0;do{if((c[e>>2]|0)==0){if((bW(d,0,b,j)|0)!=(j|0)){bW(d,0,0,0)|0;lJ(f,b);break}Wc(d+12|0)|0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+52>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;bX(d|0,0,20)|0;lJ(f,d);c[a+12>>2]=0;c[a+4>>2]=j;c[a+8>>2]=0;c[a>>2]=b;c[a+20>>2]=0;c[a+24>>2]=342;n=e;n=c[n>>2]|0;i=g;return n|0}}while(0);c[e>>2]=0}}while(0);c[a+4>>2]=2147483647;c[a+8>>2]=0;c[a>>2]=0;c[a+20>>2]=44;c[a+24>>2]=342;n=e;n=c[n>>2]|0;i=g;return n|0}function aW(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;g=i;i=i+8|0;h=g;n=i;i=i+8|0;o=n;p=PJ(b,0)|0;c[g>>2]=p;if((p|0)!=0){i=f;return p|0}p=CK(b,o,4)|0;c[g>>2]=p;if((p|0)!=0){i=f;return p|0}do{if((a[n]|0)==31){if((a[o+1|0]|0)!=-117){break}if((a[o+2|0]|0)!=8){break}n=o+3|0;if((d[n]|0)>31){break}o=DK(b,6)|0;c[g>>2]=o;p=a[n]|0;do{if((p&4)!=0){p=WK(b,h)|0;o=c[g>>2]|0;if((o|0)!=0){p=o;i=f;return p|0}o=DK(b,p&65535)|0;c[g>>2]=o;if((o|0)==0){p=a[n]|0;o=0;break}else{p=o;i=f;return p|0}}}while(0);do{if((p&8)==0){m=o;l=p}else{while(1){o=VK(b,h)|0;p=c[g>>2]|0;if((p|0)!=0){k=p;o=22;break}if(o<<24>>24==0){o=15;break}}if((o|0)==15){m=0;l=a[n]|0;break}else if((o|0)==22){i=f;return k|0}}}while(0);do{if((l&16)==0){e=m;j=l}else{while(1){m=VK(b,h)|0;l=c[g>>2]|0;if((l|0)!=0){k=l;o=22;break}if(m<<24>>24==0){o=19;break}}if((o|0)==19){e=0;j=a[n]|0;break}else if((o|0)==22){i=f;return k|0}}}while(0);if((j&2)==0){p=e;i=f;return p|0}p=DK(b,2)|0;c[g>>2]=p;i=f;return p|0}}while(0);c[g>>2]=3;p=3;i=f;return p|0}function bW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var 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;f=i;g=a+8264|0;l=c[g>>2]|0;do{if(l>>>0>b>>>0){if((PJ(c[a>>2]|0,c[a+68>>2]|0)|0)==0){l=a+12|0;Va(l|0)|0;c[a+16>>2]=0;c[l>>2]=a+72;c[a+28>>2]=0;c[a+24>>2]=a+4168;l=a+8264|0;c[a+8272>>2]=l;c[a+8268>>2]=l;c[g>>2]=0;l=0;break}else{v=0;i=f;return v|0}}}while(0);do{if(l>>>0>>0){s=b-l|0;j=a+8272|0;b=a+8268|0;m=c[b>>2]|0;n=(c[j>>2]|0)-m|0;t=n>>>0>>0?n:s;c[b>>2]=m+t;c[g>>2]=t+l;a:do{if((t|0)!=(s|0)){o=a+12|0;q=a+4168|0;p=a+24|0;r=a+28|0;l=a+16|0;n=a+72|0;m=a+12|0;b:while(1){s=s-t|0;c[b>>2]=q;c[p>>2]=q;c[r>>2]=4096;while(1){if((c[l>>2]|0)==0){t=c[a>>2]|0;u=c[t+20>>2]|0;if((u|0)==0){u=c[t+8>>2]|0;v=(c[t+4>>2]|0)-u|0;v=v>>>0>4096?4096:v;if((v|0)==0){q=0;t=34;break b}$W(n|0,(c[t>>2]|0)+u|0,v|0)|0}else{v=pd[u&63](t,c[t+8>>2]|0,n,4096)|0;if((v|0)==0){q=0;t=34;break b}}u=t+8|0;c[u>>2]=(c[u>>2]|0)+v;c[m>>2]=n;c[l>>2]=v}t=_b(o|0,0)|0;if((t|0)==1){t=17;break}else if((t|0)!=0){q=0;t=34;break b}if((c[r>>2]|0)==0){t=7;break}}if((t|0)==7){h=c[b>>2]|0;k=c[j>>2]|0}else if((t|0)==17){k=c[p>>2]|0;c[j>>2]=k;h=c[b>>2]|0;if((k|0)==(h|0)){q=0;t=34;break}}t=k-h|0;t=t>>>0>>0?t:s;c[b>>2]=h+t;c[g>>2]=t+(c[g>>2]|0);if((s|0)==(t|0)){break a}}if((t|0)==34){i=f;return q|0}}}while(0);if((e|0)==0){q=0}else{break}i=f;return q|0}else{if((e|0)==0){v=0;i=f;return v|0}else{j=a+8272|0;b=a+8268|0;break}}}while(0);p=a+12|0;l=a+4168|0;n=a+24|0;h=a+28|0;m=a+16|0;k=a+72|0;o=a+12|0;q=0;c:while(1){s=c[b>>2]|0;r=(c[j>>2]|0)-s|0;r=r>>>0>>0?r:e;$W(d|0,s|0,r|0)|0;q=r+q|0;c[b>>2]=(c[b>>2]|0)+r;c[g>>2]=r+(c[g>>2]|0);if((e|0)==(r|0)){t=34;break}e=e-r|0;d=d+r|0;c[b>>2]=l;c[n>>2]=l;c[h>>2]=4096;while(1){if((c[m>>2]|0)==0){r=c[a>>2]|0;s=c[r+20>>2]|0;if((s|0)==0){s=c[r+8>>2]|0;t=(c[r+4>>2]|0)-s|0;t=t>>>0>4096?4096:t;if((t|0)==0){t=34;break c}$W(k|0,(c[r>>2]|0)+s|0,t|0)|0}else{t=pd[s&63](r,c[r+8>>2]|0,k,4096)|0;if((t|0)==0){t=34;break c}}v=r+8|0;c[v>>2]=(c[v>>2]|0)+t;c[o>>2]=k;c[m>>2]=t}r=_b(p|0,0)|0;if((r|0)==1){break}else if((r|0)!=0){t=34;break c}if((c[h>>2]|0)==0){continue c}}v=c[n>>2]|0;c[j>>2]=v;if((v|0)==(c[b>>2]|0)){t=34;break}}if((t|0)==34){i=f;return q|0}return 0}function cW(a){a=a|0;var b=0,d=0,e=0;b=i;e=a+12|0;d=c[e>>2]|0;if((d|0)==0){i=b;return}a=c[a+28>>2]|0;Wc(d+12|0)|0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+52>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;bX(d|0,0,20)|0;lJ(a,d);c[e>>2]=0;i=b;return}function dW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;a=bW(c[a+12>>2]|0,b,d,e)|0;i=f;return a|0}function eW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i;e=i;i=i+8|0;a=jJ(a,da(c,b)|0,e)|0;i=d;return a|0}function fW(a,b){a=a|0;b=b|0;var c=0;c=i;lJ(a,b);i=c;return}function gW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;h=i;i=i+8|0;k=h;f=i;i=i+8|0;m=f;j=d+28|0;g=c[j>>2]|0;l=PJ(d,0)|0;do{if((l|0)==0){l=CK(d,k,2)|0;if((l|0)!=0){break}if((a[h]|0)!=31){l=3;break}l=k+1|0;if((a[l]|0)!=-99){l=3;break}c[f>>2]=0;bX(b|0,0,40)|0;n=b+28|0;c[n>>2]=g;m=jJ(g,4292,m)|0;o=c[f>>2]|0;a:do{if((o|0)==0){c[m+4>>2]=b;c[m>>2]=d;c[m+8>>2]=c[n>>2];n=m+4280|0;c[m+4288>>2]=n;c[m+4284>>2]=n;c[n>>2]=0;n=PJ(d,0)|0;do{if((n|0)==0){n=CK(d,k,2)|0;if((n|0)!=0){break}if((a[h]|0)!=31){n=3;break}if((a[l]|0)!=-99){n=3;break}o=m+12|0;bX(o|0,0,172)|0;c[m+176>>2]=d;c[m+180>>2]=c[j>>2];c[m+88>>2]=0;c[m+92>>2]=0;c[m+96>>2]=0;c[m+100>>2]=m+112;c[m+108>>2]=64;c[m+16>>2]=0;c[m+36>>2]=0;c[m+40>>2]=0;a[m+44|0]=0;c[m+48>>2]=0;c[m+104>>2]=0;c[m+64>>2]=9;c[o>>2]=0;c[f>>2]=0;c[b+12>>2]=m;o=0;break a}}while(0);c[f>>2]=n;lJ(g,m);o=c[f>>2]|0;i=e;return o|0}}while(0);c[b+4>>2]=2147483647;c[b+8>>2]=0;c[b>>2]=0;c[b+20>>2]=45;c[b+24>>2]=343;i=e;return o|0}}while(0);c[f>>2]=l;o=l;i=e;return o|0}function hW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;h=c[b+12>>2]|0;b=h+4280|0;m=c[b>>2]|0;do{if(m>>>0>d>>>0){l=m-d|0;k=h+4284|0;j=c[k>>2]|0;if(l>>>0<=(j-(h+184)|0)>>>0){c[k>>2]=j+(0-l);c[b>>2]=d;j=12;break}if((PJ(c[h>>2]|0,0)|0)==0){c[h+16>>2]=0;c[h+36>>2]=0;c[h+40>>2]=0;a[h+44|0]=0;c[h+48>>2]=0;c[h+104>>2]=0;c[h+64>>2]=9;c[h+12>>2]=0;c[h+4288>>2]=b;c[k>>2]=b;c[b>>2]=0;m=0;j=6;break}else{o=0;i=g;return o|0}}else{j=6}}while(0);do{if((j|0)==6){if(m>>>0>=d>>>0){j=12;break}l=d-m|0;k=h+4288|0;d=h+4284|0;n=c[d>>2]|0;o=(c[k>>2]|0)-n|0;o=o>>>0>>0?o:l;c[d>>2]=n+o;c[b>>2]=o+m;a:do{if((o|0)!=(l|0)){m=h+12|0;l=l-o|0;while(1){n=l>>>0<4096?l:4096;if((jW(m,0,n)|0)>>>0>>0){o=0;break}c[b>>2]=(c[b>>2]|0)+n;if((l|0)==(n|0)){break a}else{l=l-n|0}}i=g;return o|0}}while(0);if((f|0)==0){o=0}else{break}i=g;return o|0}}while(0);do{if((j|0)==12){if((f|0)==0){o=0;i=g;return o|0}else{d=h+4284|0;k=h+4288|0;break}}}while(0);j=h+12|0;h=h+184|0;l=c[d>>2]|0;n=c[k>>2]|0;o=0;while(1){m=n-l|0;m=m>>>0>>0?m:f;$W(e+o|0,l|0,m|0)|0;o=m+o|0;c[d>>2]=(c[d>>2]|0)+m;c[b>>2]=(c[b>>2]|0)+m;if((f|0)==(m|0)){j=17;break}c[d>>2]=h;p=jW(j,h,4096)|0;l=c[d>>2]|0;n=l+p|0;c[k>>2]=n;if((p|0)==0){j=17;break}else{f=f-m|0}}if((j|0)==17){i=g;return o|0}return 0}function iW(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;f=b+12|0;e=c[f>>2]|0;if((e|0)==0){i=d;return}b=c[b+28>>2]|0;g=c[e+180>>2]|0;c[e+16>>2]=0;c[e+36>>2]=0;c[e+40>>2]=0;a[e+44|0]=0;c[e+48>>2]=0;c[e+104>>2]=0;c[e+64>>2]=9;c[e+12>>2]=0;h=e+100|0;j=c[h>>2]|0;if((j|0)!=(e+112|0)){lJ(g,j);c[h>>2]=0}lJ(g,c[e+88>>2]|0);bX(e|0,0,184)|0;lJ(b,e);c[f>>2]=0;i=d;return}function jW(e,f,g){e=e|0;f=f|0;g=g|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;k=i;o=i;i=i+8|0;n=o;r=i;i=i+8|0;t=r;m=i;i=i+8|0;p=m;q=i;i=i+8|0;s=q;y=i;i=i+8|0;u=y;l=e+68|0;w=c[l>>2]|0;h=e+64|0;v=c[h>>2]|0;j=e+72|0;x=c[j>>2]|0;if((g|0)==0){H=x;G=w;F=v;J=0;I=h;c[I>>2]=F;I=l;c[I>>2]=G;I=j;c[I>>2]=H;i=k;return J|0}z=c[e>>2]|0;do{if((z|0)==1){z=x;u=0;y=12}else if((z|0)==0){z=e+164|0;if((PJ(c[z>>2]|0,2)|0)!=0){g=0;y=55;break}if((KK(c[z>>2]|0,u,1)|0)!=1){g=0;y=55;break}z=d[y]|0;u=z&31;c[e+40>>2]=u;c[e+44>>2]=z&128;y=1<>2]=y+ -256;if(u>>>0>16){g=0;y=55;break}c[e+52>>2]=9;c[e+56>>2]=z>>>7;c[e+60>>2]=u>>>0>9?256:y+ -255|0;u=kW(e)|0;if((u|0)<0){x=0;g=0;y=55;break}if((f|0)!=0){a[f]=u}if(g>>>0<2){H=0;G=u;F=u;J=1;I=h;c[I>>2]=F;I=l;c[I>>2]=G;I=j;c[I>>2]=H;i=k;return J|0}else{c[e>>2]=1;z=0;w=u;v=u;u=1;y=12;break}}else if((z|0)==2){z=e+92|0;B=e+88|0;u=0;y=39}else{H=x;G=w;F=v;J=0;I=h;c[I>>2]=F;I=l;c[I>>2]=G;I=j;c[I>>2]=H;i=k;return J|0}}while(0);a:while(1){if((y|0)==12){x=kW(e)|0;if((x|0)<0){x=z;g=u;y=55;continue}do{if((x|0)==256){if((c[e+44>>2]|0)==0){x=256;y=17;break}c[e+56>>2]=0;a[e+32|0]=1;x=kW(e)|0;if((x|0)<0){x=z;g=u;y=55;continue a}else{y=16}}else{y=16}}while(0);if((y|0)==16){y=0;if(x>>>0>255){y=17}else{A=x;w=x}}do{if((y|0)==17){if((x+ -256|0)>>>0<(c[e+56>>2]|0)>>>0){F=x}else{y=e+92|0;B=c[y>>2]|0;z=e+96|0;A=c[z>>2]|0;if(B>>>0>=A>>>0){C=c[e+168>>2]|0;B=A+4+(A>>>1)|0;D=e+88|0;E=c[D>>2]|0;if((E|0)==(e+100|0)){c[D>>2]=0;E=0;A=0}c[D>>2]=oJ(C,1,A,B,E,s)|0;if((c[q>>2]|0)!=0){g=u;y=55;continue a}c[z>>2]=B;B=c[y>>2]|0}c[y>>2]=B+1;a[(c[e+88>>2]|0)+B|0]=w;F=v}if(F>>>0<=255){A=x;w=F;break}C=e+76|0;A=e+92|0;z=e+96|0;E=e+80|0;B=e+88|0;D=e+168|0;y=e+100|0;G=c[C>>2]|0;while(1){if((G|0)==0){g=u;y=55;continue a}G=c[A>>2]|0;I=c[z>>2]|0;if(G>>>0>=I>>>0){H=c[D>>2]|0;G=I+4+(I>>>1)|0;J=c[B>>2]|0;if((J|0)==(y|0)){c[B>>2]=0;J=0;I=0}c[B>>2]=oJ(H,1,I,G,J,p)|0;if((c[m>>2]|0)!=0){g=u;y=55;continue a}c[z>>2]=G;G=c[A>>2]|0}J=F+ -256|0;F=a[(c[E>>2]|0)+J|0]|0;c[A>>2]=G+1;a[(c[B>>2]|0)+G|0]=F;G=c[C>>2]|0;J=b[G+(J<<1)>>1]|0;F=J&65535;if((J&65535)<=255){A=x;w=F;break}}}}while(0);z=e+92|0;y=c[z>>2]|0;x=e+96|0;C=c[x>>2]|0;if(y>>>0>=C>>>0){D=c[e+168>>2]|0;y=C+4+(C>>>1)|0;B=e+88|0;E=c[B>>2]|0;if((E|0)==(e+100|0)){c[B>>2]=0;E=0;C=0}c[B>>2]=oJ(D,1,C,y,E,t)|0;if((c[r>>2]|0)!=0){x=A;g=u;y=55;continue}c[x>>2]=y;y=c[z>>2]|0}c[z>>2]=y+1;B=e+88|0;a[(c[B>>2]|0)+y|0]=w;c[e>>2]=2;x=A;y=39;continue}else if((y|0)==39){b:do{if((f|0)==0){y=c[z>>2]|0;while(1){if((y|0)==0){break b}y=y+ -1|0;c[z>>2]=y;u=u+1|0;if((u|0)==(g|0)){y=54;break a}}}else{while(1){y=c[z>>2]|0;if((y|0)==0){break b}J=y+ -1|0;c[z>>2]=J;a[f+u|0]=a[(c[B>>2]|0)+J|0]|0;u=u+1|0;if((u|0)==(g|0)){y=54;break a}}}}while(0);y=e+56|0;z=c[y>>2]|0;if(z>>>0<(c[e+48>>2]|0)>>>0){A=e+84|0;B=c[A>>2]|0;if(z>>>0>>0){A=z;z=e+76|0;B=e+80|0}else{if((B|0)==0){D=512}else{D=(B>>>2)+B|0}z=e+76|0;C=oJ(c[e+168>>2]|0,3,B,D,c[z>>2]|0,n)|0;c[z>>2]=C;if((c[o>>2]|0)!=0){g=u;y=55;continue}I=C+(D<<1)|0;J=e+80|0;c[J>>2]=I;aX(I|0,C+(B<<1)|0,B|0)|0;c[A>>2]=D;A=c[y>>2]|0;B=J}b[(c[z>>2]|0)+(A<<1)>>1]=v;a[(c[B>>2]|0)+(c[y>>2]|0)|0]=w;c[y>>2]=(c[y>>2]|0)+1}c[e>>2]=1;z=x;v=x;y=12;continue}else if((y|0)==55){c[e>>2]=3;y=54;break}}if((y|0)==54){J=h;c[J>>2]=v;J=l;c[J>>2]=w;J=j;c[J>>2]=x;i=k;return g|0}return 0}function kW(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;g=b+52|0;l=c[g>>2]|0;f=b+24|0;m=c[f>>2]|0;h=b+32|0;j=(a[h]|0)==0;do{if(j){if((m|0)>=(c[b+28>>2]|0)){k=4;break}if((c[b+56>>2]|0)>>>0<(c[b+60>>2]|0)>>>0){h=l}else{k=4}}else{k=4}}while(0);do{if((k|0)==4){k=b+60|0;if((c[b+56>>2]|0)>>>0>=(c[k>>2]|0)>>>0){l=l+1|0;c[g>>2]=l;if(l>>>0<(c[b+40>>2]|0)>>>0){m=(1<>2]|0)+1|0}c[k>>2]=m}if(j){h=l}else{c[g>>2]=9;c[k>>2]=256;a[h]=0;h=9}j=b+4|0;if((c[j>>2]|0)!=0){m=-1;i=e;return m|0}m=KK(c[b+164>>2]|0,b+8|0,h)|0;l=b+36|0;c[l>>2]=(c[l>>2]|0)+m;l=c[g>>2]|0;c[j>>2]=m>>>0>>0;c[f>>2]=0;c[b+28>>2]=(m<<3|1)-l;if((m|0)==0){b=-1}else{m=0;break}i=e;return b|0}}while(0);c[f>>2]=m+h;f=m>>3;k=m&7;g=b+8+(f+1)|0;j=(d[b+8+f|0]|0)>>>k;k=8-k|0;l=h-k|0;if(l>>>0>7){l=l+ -8|0;h=k+8|0;b=b+8+(f+2)|0;j=d[g]<>2]=b;c[g+8>>2]=a;c[g+12>>2]=-1;c[g+48>>2]=1;Jd[c[(c[b>>2]|0)+28>>2]&63](b,g,c[d>>2]|0,1);if((c[g+24>>2]|0)!=1){b=0;i=e;return b|0}c[d>>2]=c[g+16>>2];b=1;i=e;return b|0}function tW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;if((c[d+8>>2]|0)!=(b|0)){i=g;return}b=d+16|0;h=c[b>>2]|0;if((h|0)==0){c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;i=g;return}if((h|0)!=(e|0)){h=d+36|0;c[h>>2]=(c[h>>2]|0)+1;c[d+24>>2]=2;a[d+54|0]=1;i=g;return}e=d+24|0;if((c[e>>2]|0)!=2){i=g;return}c[e>>2]=f;i=g;return}function uW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;if((b|0)!=(c[d+8>>2]|0)){h=c[b+8>>2]|0;Jd[c[(c[h>>2]|0)+28>>2]&63](h,d,e,f);i=g;return}b=d+16|0;h=c[b>>2]|0;if((h|0)==0){c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;i=g;return}if((h|0)!=(e|0)){h=d+36|0;c[h>>2]=(c[h>>2]|0)+1;c[d+24>>2]=2;a[d+54|0]=1;i=g;return}e=d+24|0;if((c[e>>2]|0)!=2){i=g;return}c[e>>2]=f;i=g;return}function vW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;m=i;i=i+56|0;g=m;h=c[a>>2]|0;j=a+(c[h+ -8>>2]|0)|0;h=c[h+ -4>>2]|0;c[m>>2]=d;c[g+4>>2]=a;c[g+8>>2]=b;c[g+12>>2]=e;b=g+16|0;m=g+20|0;k=g+24|0;e=g+28|0;a=g+32|0;l=g+40|0;bX(b|0,0,39)|0;if((h|0)==(d|0)){c[g+48>>2]=1;ud[c[(c[h>>2]|0)+20>>2]&7](h,g,j,j,1,0);i=f;return((c[k>>2]|0)==1?j:0)|0}ed[c[(c[h>>2]|0)+24>>2]&3](h,g,j,1,0);d=c[g+36>>2]|0;if((d|0)==1){do{if((c[k>>2]|0)!=1){if((c[l>>2]|0)!=0){m=0;i=f;return m|0}if((c[e>>2]|0)!=1){m=0;i=f;return m|0}if((c[a>>2]|0)==1){break}else{d=0}i=f;return d|0}}while(0);m=c[b>>2]|0;i=f;return m|0}else if((d|0)==0){if((c[l>>2]|0)!=1){m=0;i=f;return m|0}if((c[e>>2]|0)!=1){m=0;i=f;return m|0}m=(c[a>>2]|0)==1?c[m>>2]|0:0;i=f;return m|0}else{m=0;i=f;return m|0}return 0}function wW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){i=h;return}j=d+28|0;if((c[j>>2]|0)==1){i=h;return}c[j>>2]=f;i=h;return}if((b|0)!=(c[d>>2]|0)){l=c[b+8>>2]|0;ed[c[(c[l>>2]|0)+24>>2]&3](l,d,e,f,g);i=h;return}do{if((c[d+16>>2]|0)!=(e|0)){k=d+20|0;if((c[k>>2]|0)==(e|0)){break}c[d+32>>2]=f;f=d+44|0;if((c[f>>2]|0)==4){i=h;return}l=d+52|0;a[l]=0;m=d+53|0;a[m]=0;b=c[b+8>>2]|0;ud[c[(c[b>>2]|0)+20>>2]&7](b,d,e,e,1,g);if((a[m]&1)==0){b=0;j=13}else{if((a[l]&1)==0){b=1;j=13}}a:do{if((j|0)==13){c[k>>2]=e;m=d+40|0;c[m>>2]=(c[m>>2]|0)+1;do{if((c[d+36>>2]|0)==1){if((c[d+24>>2]|0)!=2){j=16;break}a[d+54|0]=1;if(b){break a}}else{j=16}}while(0);if((j|0)==16){if(b){break}}c[f>>2]=4;i=h;return}}while(0);c[f>>2]=3;i=h;return}}while(0);if((f|0)!=1){i=h;return}c[d+32>>2]=1;i=h;return}function xW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=i;if((c[d+8>>2]|0)==(b|0)){if((c[d+4>>2]|0)!=(e|0)){i=g;return}d=d+28|0;if((c[d>>2]|0)==1){i=g;return}c[d>>2]=f;i=g;return}if((c[d>>2]|0)!=(b|0)){i=g;return}do{if((c[d+16>>2]|0)!=(e|0)){b=d+20|0;if((c[b>>2]|0)==(e|0)){break}c[d+32>>2]=f;c[b>>2]=e;b=d+40|0;c[b>>2]=(c[b>>2]|0)+1;do{if((c[d+36>>2]|0)==1){if((c[d+24>>2]|0)!=2){break}a[d+54|0]=1}}while(0);c[d+44>>2]=4;i=g;return}}while(0);if((f|0)!=1){i=g;return}c[d+32>>2]=1;i=g;return}function yW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;if((b|0)!=(c[d+8>>2]|0)){b=c[b+8>>2]|0;ud[c[(c[b>>2]|0)+20>>2]&7](b,d,e,f,g,h);i=j;return}a[d+53|0]=1;if((c[d+4>>2]|0)!=(f|0)){i=j;return}a[d+52|0]=1;b=d+16|0;f=c[b>>2]|0;if((f|0)==0){c[b>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((c[d+48>>2]|0)==1&(g|0)==1)){i=j;return}a[d+54|0]=1;i=j;return}if((f|0)!=(e|0)){h=d+36|0;c[h>>2]=(c[h>>2]|0)+1;a[d+54|0]=1;i=j;return}e=d+24|0;b=c[e>>2]|0;if((b|0)==2){c[e>>2]=g}else{g=b}if(!((c[d+48>>2]|0)==1&(g|0)==1)){i=j;return}a[d+54|0]=1;i=j;return}function zW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=i;if((c[d+8>>2]|0)!=(b|0)){i=h;return}a[d+53|0]=1;if((c[d+4>>2]|0)!=(f|0)){i=h;return}a[d+52|0]=1;f=d+16|0;b=c[f>>2]|0;if((b|0)==0){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((c[d+48>>2]|0)==1&(g|0)==1)){i=h;return}a[d+54|0]=1;i=h;return}if((b|0)!=(e|0)){b=d+36|0;c[b>>2]=(c[b>>2]|0)+1;a[d+54|0]=1;i=h;return}e=d+24|0;f=c[e>>2]|0;if((f|0)==2){c[e>>2]=g}else{g=f}if(!((c[d+48>>2]|0)==1&(g|0)==1)){i=h;return}a[d+54|0]=1;i=h;return}function AW(a){a=a|0;var b=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;b=i;do{if(a>>>0<245){if(a>>>0<11){a=16}else{a=a+11&-8}p=a>>>3;n=c[72822]|0;o=n>>>p;if((o&3|0)!=0){e=(o&1^1)+p|0;d=e<<1;h=291328+(d<<2)|0;d=291328+(d+2<<2)|0;f=c[d>>2]|0;g=f+8|0;j=c[g>>2]|0;do{if((h|0)==(j|0)){c[72822]=n&~(1<>>0<(c[291304>>2]|0)>>>0){tc()}k=j+12|0;if((c[k>>2]|0)==(f|0)){c[k>>2]=h;c[d>>2]=j;break}else{tc()}}}while(0);z=e<<3;c[f+4>>2]=z|3;z=f+(z|4)|0;c[z>>2]=c[z>>2]|1;z=g;i=b;return z|0}if(a>>>0<=(c[291296>>2]|0)>>>0){break}if((o|0)!=0){f=2<>>12&16;f=f>>>d;h=f>>>5&8;f=f>>>h;g=f>>>2&4;f=f>>>g;j=f>>>1&2;f=f>>>j;e=f>>>1&1;e=(h|d|g|j|e)+(f>>>e)|0;f=e<<1;j=291328+(f<<2)|0;f=291328+(f+2<<2)|0;g=c[f>>2]|0;d=g+8|0;h=c[d>>2]|0;do{if((j|0)==(h|0)){c[72822]=n&~(1<>>0<(c[291304>>2]|0)>>>0){tc()}k=h+12|0;if((c[k>>2]|0)==(g|0)){c[k>>2]=j;c[f>>2]=h;break}else{tc()}}}while(0);h=e<<3;e=h-a|0;c[g+4>>2]=a|3;f=g+a|0;c[g+(a|4)>>2]=e|1;c[g+h>>2]=e;h=c[291296>>2]|0;if((h|0)!=0){g=c[291308>>2]|0;k=h>>>3;l=k<<1;h=291328+(l<<2)|0;j=c[72822]|0;k=1<>2]|0;if(j>>>0>=(c[291304>>2]|0)>>>0){v=j;u=k;break}tc()}}while(0);c[u>>2]=g;c[v+12>>2]=g;c[g+8>>2]=v;c[g+12>>2]=h}c[291296>>2]=e;c[291308>>2]=f;z=d;i=b;return z|0}n=c[291292>>2]|0;if((n|0)==0){break}e=(n&0-n)+ -1|0;y=e>>>12&16;e=e>>>y;x=e>>>5&8;e=e>>>x;z=e>>>2&4;e=e>>>z;h=e>>>1&2;e=e>>>h;d=e>>>1&1;d=c[291592+((x|y|z|h|d)+(e>>>d)<<2)>>2]|0;e=(c[d+4>>2]&-8)-a|0;h=d;while(1){g=c[h+16>>2]|0;if((g|0)==0){g=c[h+20>>2]|0;if((g|0)==0){break}}h=(c[g+4>>2]&-8)-a|0;f=h>>>0>>0;e=f?h:e;h=g;d=f?g:d}h=c[291304>>2]|0;if(d>>>0>>0){tc()}f=d+a|0;if(d>>>0>=f>>>0){tc()}g=c[d+24>>2]|0;j=c[d+12>>2]|0;do{if((j|0)==(d|0)){j=d+20|0;k=c[j>>2]|0;if((k|0)==0){j=d+16|0;k=c[j>>2]|0;if((k|0)==0){t=0;break}}while(1){l=k+20|0;m=c[l>>2]|0;if((m|0)!=0){k=m;j=l;continue}m=k+16|0;l=c[m>>2]|0;if((l|0)==0){break}else{j=m;k=l}}if(j>>>0>>0){tc()}else{c[j>>2]=0;t=k;break}}else{k=c[d+8>>2]|0;if(k>>>0>>0){tc()}h=k+12|0;if((c[h>>2]|0)!=(d|0)){tc()}l=j+8|0;if((c[l>>2]|0)==(d|0)){c[h>>2]=j;c[l>>2]=k;t=j;break}else{tc()}}}while(0);a:do{if((g|0)!=0){j=d+28|0;h=291592+(c[j>>2]<<2)|0;do{if((d|0)==(c[h>>2]|0)){c[h>>2]=t;if((t|0)!=0){break}c[291292>>2]=c[291292>>2]&~(1<>2]);break a}else{if(g>>>0<(c[291304>>2]|0)>>>0){tc()}h=g+16|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=t}else{c[g+20>>2]=t}if((t|0)==0){break a}}}while(0);if(t>>>0<(c[291304>>2]|0)>>>0){tc()}c[t+24>>2]=g;g=c[d+16>>2]|0;do{if((g|0)!=0){if(g>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[t+16>>2]=g;c[g+24>>2]=t;break}}}while(0);g=c[d+20>>2]|0;if((g|0)==0){break}if(g>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[t+20>>2]=g;c[g+24>>2]=t;break}}}while(0);if(e>>>0<16){z=e+a|0;c[d+4>>2]=z|3;z=d+(z+4)|0;c[z>>2]=c[z>>2]|1}else{c[d+4>>2]=a|3;c[d+(a|4)>>2]=e|1;c[d+(e+a)>>2]=e;h=c[291296>>2]|0;if((h|0)!=0){g=c[291308>>2]|0;k=h>>>3;l=k<<1;h=291328+(l<<2)|0;j=c[72822]|0;k=1<>2]|0;if(k>>>0>=(c[291304>>2]|0)>>>0){s=k;r=j;break}tc()}}while(0);c[r>>2]=g;c[s+12>>2]=g;c[g+8>>2]=s;c[g+12>>2]=h}c[291296>>2]=e;c[291308>>2]=f}z=d+8|0;i=b;return z|0}else{if(a>>>0>4294967231){a=-1;break}r=a+11|0;a=r&-8;t=c[291292>>2]|0;if((t|0)==0){break}s=0-a|0;r=r>>>8;do{if((r|0)==0){u=0}else{if(a>>>0>16777215){u=31;break}y=(r+1048320|0)>>>16&8;z=r<>>16&4;z=z<>>16&2;u=14-(x|y|u)+(z<>>15)|0;u=a>>>(u+7|0)&1|u<<1}}while(0);x=c[291592+(u<<2)>>2]|0;b:do{if((x|0)==0){v=0;r=0}else{if((u|0)==31){r=0}else{r=25-(u>>>1)|0}v=0;w=a<>2]&-8;z=y-a|0;if(z>>>0>>0){if((y|0)==(a|0)){s=z;v=x;r=x;break b}else{s=z;r=x}}y=c[x+20>>2]|0;x=c[x+16+(w>>>31<<2)>>2]|0;v=(y|0)==0|(y|0)==(x|0)?v:y;if((x|0)==0){break}else{w=w<<1}}}}while(0);if((v|0)==0&(r|0)==0){z=2<>>12&16;z=z>>>w;u=z>>>5&8;z=z>>>u;x=z>>>2&4;z=z>>>x;y=z>>>1&2;z=z>>>y;v=z>>>1&1;v=c[291592+((u|w|x|y|v)+(z>>>v)<<2)>>2]|0}if((v|0)!=0){while(1){u=(c[v+4>>2]&-8)-a|0;t=u>>>0>>0;s=t?u:s;r=t?v:r;t=c[v+16>>2]|0;if((t|0)!=0){v=t;continue}v=c[v+20>>2]|0;if((v|0)==0){break}}}if((r|0)==0){break}if(s>>>0>=((c[291296>>2]|0)-a|0)>>>0){break}f=c[291304>>2]|0;if(r>>>0>>0){tc()}d=r+a|0;if(r>>>0>=d>>>0){tc()}e=c[r+24>>2]|0;g=c[r+12>>2]|0;do{if((g|0)==(r|0)){g=r+20|0;h=c[g>>2]|0;if((h|0)==0){g=r+16|0;h=c[g>>2]|0;if((h|0)==0){q=0;break}}while(1){k=h+20|0;j=c[k>>2]|0;if((j|0)!=0){h=j;g=k;continue}j=h+16|0;k=c[j>>2]|0;if((k|0)==0){break}else{g=j;h=k}}if(g>>>0>>0){tc()}else{c[g>>2]=0;q=h;break}}else{h=c[r+8>>2]|0;if(h>>>0>>0){tc()}j=h+12|0;if((c[j>>2]|0)!=(r|0)){tc()}f=g+8|0;if((c[f>>2]|0)==(r|0)){c[j>>2]=g;c[f>>2]=h;q=g;break}else{tc()}}}while(0);c:do{if((e|0)!=0){g=r+28|0;f=291592+(c[g>>2]<<2)|0;do{if((r|0)==(c[f>>2]|0)){c[f>>2]=q;if((q|0)!=0){break}c[291292>>2]=c[291292>>2]&~(1<>2]);break c}else{if(e>>>0<(c[291304>>2]|0)>>>0){tc()}f=e+16|0;if((c[f>>2]|0)==(r|0)){c[f>>2]=q}else{c[e+20>>2]=q}if((q|0)==0){break c}}}while(0);if(q>>>0<(c[291304>>2]|0)>>>0){tc()}c[q+24>>2]=e;e=c[r+16>>2]|0;do{if((e|0)!=0){if(e>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[q+16>>2]=e;c[e+24>>2]=q;break}}}while(0);e=c[r+20>>2]|0;if((e|0)==0){break}if(e>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[q+20>>2]=e;c[e+24>>2]=q;break}}}while(0);d:do{if(s>>>0<16){z=s+a|0;c[r+4>>2]=z|3;z=r+(z+4)|0;c[z>>2]=c[z>>2]|1}else{c[r+4>>2]=a|3;c[r+(a|4)>>2]=s|1;c[r+(s+a)>>2]=s;f=s>>>3;if(s>>>0<256){h=f<<1;e=291328+(h<<2)|0;g=c[72822]|0;f=1<>2]|0;if(g>>>0>=(c[291304>>2]|0)>>>0){o=g;p=f;break}tc()}}while(0);c[p>>2]=d;c[o+12>>2]=d;c[r+(a+8)>>2]=o;c[r+(a+12)>>2]=e;break}e=s>>>8;do{if((e|0)==0){e=0}else{if(s>>>0>16777215){e=31;break}y=(e+1048320|0)>>>16&8;z=e<>>16&4;z=z<>>16&2;e=14-(x|y|e)+(z<>>15)|0;e=s>>>(e+7|0)&1|e<<1}}while(0);f=291592+(e<<2)|0;c[r+(a+28)>>2]=e;c[r+(a+20)>>2]=0;c[r+(a+16)>>2]=0;h=c[291292>>2]|0;g=1<>2]=h|g;c[f>>2]=d;c[r+(a+24)>>2]=f;c[r+(a+12)>>2]=d;c[r+(a+8)>>2]=d;break}f=c[f>>2]|0;if((e|0)==31){e=0}else{e=25-(e>>>1)|0}e:do{if((c[f+4>>2]&-8|0)==(s|0)){n=f}else{e=s<>>31<<2)|0;h=c[g>>2]|0;if((h|0)==0){break}if((c[h+4>>2]&-8|0)==(s|0)){n=h;break e}else{e=e<<1;f=h}}if(g>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[g>>2]=d;c[r+(a+24)>>2]=f;c[r+(a+12)>>2]=d;c[r+(a+8)>>2]=d;break d}}}while(0);g=n+8|0;f=c[g>>2]|0;e=c[291304>>2]|0;if(n>>>0>>0){tc()}if(f>>>0>>0){tc()}else{c[f+12>>2]=d;c[g>>2]=d;c[r+(a+8)>>2]=f;c[r+(a+12)>>2]=n;c[r+(a+24)>>2]=0;break}}}while(0);z=r+8|0;i=b;return z|0}}while(0);n=c[291296>>2]|0;if(a>>>0<=n>>>0){d=n-a|0;e=c[291308>>2]|0;if(d>>>0>15){c[291308>>2]=e+a;c[291296>>2]=d;c[e+(a+4)>>2]=d|1;c[e+n>>2]=d;c[e+4>>2]=a|3}else{c[291296>>2]=0;c[291308>>2]=0;c[e+4>>2]=n|3;z=e+(n+4)|0;c[z>>2]=c[z>>2]|1}z=e+8|0;i=b;return z|0}n=c[291300>>2]|0;if(a>>>0>>0){y=n-a|0;c[291300>>2]=y;z=c[291312>>2]|0;c[291312>>2]=z+a;c[z+(a+4)>>2]=y|1;c[z+4>>2]=a|3;z=z+8|0;i=b;return z|0}do{if((c[72940]|0)==0){n=bb(30)|0;if((n+ -1&n|0)==0){c[291768>>2]=n;c[291764>>2]=n;c[291772>>2]=-1;c[291776>>2]=-1;c[291780>>2]=0;c[291732>>2]=0;c[72940]=(Tb(0)|0)&-16^1431655768;break}else{tc()}}}while(0);r=a+48|0;t=c[291768>>2]|0;q=a+47|0;s=t+q|0;t=0-t|0;p=s&t;if(p>>>0<=a>>>0){z=0;i=b;return z|0}n=c[291728>>2]|0;do{if((n|0)!=0){y=c[291720>>2]|0;z=y+p|0;if(z>>>0<=y>>>0|z>>>0>n>>>0){d=0}else{break}i=b;return d|0}}while(0);f:do{if((c[291732>>2]&4|0)==0){u=c[291312>>2]|0;g:do{if((u|0)==0){m=182}else{n=291736|0;while(1){v=c[n>>2]|0;if(v>>>0<=u>>>0){o=n+4|0;if((v+(c[o>>2]|0)|0)>>>0>u>>>0){break}}n=c[n+8>>2]|0;if((n|0)==0){m=182;break g}}if((n|0)==0){m=182;break}u=s-(c[291300>>2]|0)&t;if(u>>>0>=2147483647){o=0;break}m=ab(u|0)|0;o=(m|0)==((c[n>>2]|0)+(c[o>>2]|0)|0);s=m;t=u;n=o?m:-1;o=o?u:0;m=191}}while(0);do{if((m|0)==182){n=ab(0)|0;if((n|0)==-1){o=0;break}o=c[291764>>2]|0;s=o+ -1|0;if((s&n|0)==0){o=p}else{o=p-n+(s+n&0-o)|0}s=c[291720>>2]|0;t=s+o|0;if(!(o>>>0>a>>>0&o>>>0<2147483647)){o=0;break}u=c[291728>>2]|0;if((u|0)!=0){if(t>>>0<=s>>>0|t>>>0>u>>>0){o=0;break}}s=ab(o|0)|0;m=(s|0)==(n|0);t=o;n=m?n:-1;o=m?o:0;m=191}}while(0);h:do{if((m|0)==191){m=0-t|0;if((n|0)!=-1){m=202;break f}do{if((s|0)!=-1&t>>>0<2147483647&t>>>0>>0){n=c[291768>>2]|0;n=q-t+n&0-n;if(n>>>0>=2147483647){break}if((ab(n|0)|0)==-1){ab(m|0)|0;break h}else{t=n+t|0;break}}}while(0);if((s|0)!=-1){n=s;o=t;m=202;break f}}}while(0);c[291732>>2]=c[291732>>2]|4;m=199}else{o=0;m=199}}while(0);do{if((m|0)==199){if(p>>>0>=2147483647){break}n=ab(p|0)|0;p=ab(0)|0;if(!((p|0)!=-1&(n|0)!=-1&n>>>0

>>0)){break}q=p-n|0;p=q>>>0>(a+40|0)>>>0;if(p){o=p?q:o;m=202}}}while(0);do{if((m|0)==202){p=(c[291720>>2]|0)+o|0;c[291720>>2]=p;if(p>>>0>(c[291724>>2]|0)>>>0){c[291724>>2]=p}p=c[291312>>2]|0;t=291736|0;i:do{if((p|0)==0){z=c[291304>>2]|0;if((z|0)==0|n>>>0>>0){c[291304>>2]=n}c[291736>>2]=n;c[291740>>2]=o;c[291748>>2]=0;c[291324>>2]=c[72940];c[291320>>2]=-1;d=0;do{z=d<<1;y=291328+(z<<2)|0;c[291328+(z+3<<2)>>2]=y;c[291328+(z+2<<2)>>2]=y;d=d+1|0;}while(d>>>0<32);d=n+8|0;if((d&7|0)==0){d=0}else{d=0-d&7}z=o+ -40-d|0;c[291312>>2]=n+d;c[291300>>2]=z;c[n+(d+4)>>2]=z|1;c[n+(o+ -36)>>2]=40;c[291316>>2]=c[291776>>2]}else{do{q=c[t>>2]|0;r=t+4|0;s=c[r>>2]|0;if((n|0)==(q+s|0)){m=214;break}t=c[t+8>>2]|0;}while((t|0)!=0);do{if((m|0)==214){if((c[t+12>>2]&8|0)!=0){break}if(!(p>>>0>=q>>>0&p>>>0>>0)){break}c[r>>2]=s+o;d=c[291312>>2]|0;e=(c[291300>>2]|0)+o|0;f=d+8|0;if((f&7|0)==0){f=0}else{f=0-f&7}z=e-f|0;c[291312>>2]=d+f;c[291300>>2]=z;c[d+(f+4)>>2]=z|1;c[d+(e+4)>>2]=40;c[291316>>2]=c[291776>>2];break i}}while(0);if(n>>>0<(c[291304>>2]|0)>>>0){c[291304>>2]=n}q=n+o|0;r=291736|0;do{if((c[r>>2]|0)==(q|0)){m=224;break}r=c[r+8>>2]|0;}while((r|0)!=0);do{if((m|0)==224){if((c[r+12>>2]&8|0)!=0){break}c[r>>2]=n;h=r+4|0;c[h>>2]=(c[h>>2]|0)+o;h=n+8|0;if((h&7|0)==0){h=0}else{h=0-h&7}j=n+(o+8)|0;if((j&7|0)==0){p=0}else{p=0-j&7}q=n+(p+o)|0;k=h+a|0;j=n+k|0;m=q-(n+h)-a|0;c[n+(h+4)>>2]=a|3;j:do{if((q|0)==(c[291312>>2]|0)){z=(c[291300>>2]|0)+m|0;c[291300>>2]=z;c[291312>>2]=j;c[n+(k+4)>>2]=z|1}else{if((q|0)==(c[291308>>2]|0)){z=(c[291296>>2]|0)+m|0;c[291296>>2]=z;c[291308>>2]=j;c[n+(k+4)>>2]=z|1;c[n+(z+k)>>2]=z;break}r=o+4|0;t=c[n+(r+p)>>2]|0;if((t&3|0)==1){a=t&-8;s=t>>>3;k:do{if(t>>>0<256){g=c[n+((p|8)+o)>>2]|0;r=c[n+(o+12+p)>>2]|0;t=291328+(s<<1<<2)|0;do{if((g|0)!=(t|0)){if(g>>>0<(c[291304>>2]|0)>>>0){tc()}if((c[g+12>>2]|0)==(q|0)){break}tc()}}while(0);if((r|0)==(g|0)){c[72822]=c[72822]&~(1<>>0<(c[291304>>2]|0)>>>0){tc()}s=r+8|0;if((c[s>>2]|0)==(q|0)){l=s;break}tc()}}while(0);c[g+12>>2]=r;c[l>>2]=g}else{l=c[n+((p|24)+o)>>2]|0;t=c[n+(o+12+p)>>2]|0;do{if((t|0)==(q|0)){u=p|16;s=n+(r+u)|0;t=c[s>>2]|0;if((t|0)==0){s=n+(u+o)|0;t=c[s>>2]|0;if((t|0)==0){g=0;break}}while(1){v=t+20|0;u=c[v>>2]|0;if((u|0)!=0){t=u;s=v;continue}u=t+16|0;v=c[u>>2]|0;if((v|0)==0){break}else{s=u;t=v}}if(s>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[s>>2]=0;g=t;break}}else{v=c[n+((p|8)+o)>>2]|0;if(v>>>0<(c[291304>>2]|0)>>>0){tc()}s=v+12|0;if((c[s>>2]|0)!=(q|0)){tc()}u=t+8|0;if((c[u>>2]|0)==(q|0)){c[s>>2]=t;c[u>>2]=v;g=t;break}else{tc()}}}while(0);if((l|0)==0){break}s=n+(o+28+p)|0;t=291592+(c[s>>2]<<2)|0;do{if((q|0)==(c[t>>2]|0)){c[t>>2]=g;if((g|0)!=0){break}c[291292>>2]=c[291292>>2]&~(1<>2]);break k}else{if(l>>>0<(c[291304>>2]|0)>>>0){tc()}s=l+16|0;if((c[s>>2]|0)==(q|0)){c[s>>2]=g}else{c[l+20>>2]=g}if((g|0)==0){break k}}}while(0);if(g>>>0<(c[291304>>2]|0)>>>0){tc()}c[g+24>>2]=l;q=p|16;l=c[n+(q+o)>>2]|0;do{if((l|0)!=0){if(l>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[g+16>>2]=l;c[l+24>>2]=g;break}}}while(0);l=c[n+(r+q)>>2]|0;if((l|0)==0){break}if(l>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[g+20>>2]=l;c[l+24>>2]=g;break}}}while(0);q=n+((a|p)+o)|0;m=a+m|0}g=q+4|0;c[g>>2]=c[g>>2]&-2;c[n+(k+4)>>2]=m|1;c[n+(m+k)>>2]=m;g=m>>>3;if(m>>>0<256){l=g<<1;d=291328+(l<<2)|0;a=c[72822]|0;g=1<>2]|0;if(l>>>0>=(c[291304>>2]|0)>>>0){f=l;e=g;break}tc()}}while(0);c[e>>2]=j;c[f+12>>2]=j;c[n+(k+8)>>2]=f;c[n+(k+12)>>2]=d;break}e=m>>>8;do{if((e|0)==0){e=0}else{if(m>>>0>16777215){e=31;break}y=(e+1048320|0)>>>16&8;z=e<>>16&4;z=z<>>16&2;e=14-(x|y|e)+(z<>>15)|0;e=m>>>(e+7|0)&1|e<<1}}while(0);l=291592+(e<<2)|0;c[n+(k+28)>>2]=e;c[n+(k+20)>>2]=0;c[n+(k+16)>>2]=0;f=c[291292>>2]|0;g=1<>2]=f|g;c[l>>2]=j;c[n+(k+24)>>2]=l;c[n+(k+12)>>2]=j;c[n+(k+8)>>2]=j;break}g=c[l>>2]|0;if((e|0)==31){e=0}else{e=25-(e>>>1)|0}l:do{if((c[g+4>>2]&-8|0)==(m|0)){d=g}else{e=m<>>31<<2)|0;l=c[f>>2]|0;if((l|0)==0){break}if((c[l+4>>2]&-8|0)==(m|0)){d=l;break l}else{e=e<<1;g=l}}if(f>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[f>>2]=j;c[n+(k+24)>>2]=g;c[n+(k+12)>>2]=j;c[n+(k+8)>>2]=j;break j}}}while(0);f=d+8|0;e=c[f>>2]|0;g=c[291304>>2]|0;if(d>>>0>>0){tc()}if(e>>>0>>0){tc()}else{c[e+12>>2]=j;c[f>>2]=j;c[n+(k+8)>>2]=e;c[n+(k+12)>>2]=d;c[n+(k+24)>>2]=0;break}}}while(0);z=n+(h|8)|0;i=b;return z|0}}while(0);g=291736|0;while(1){e=c[g>>2]|0;if(e>>>0<=p>>>0){f=c[g+4>>2]|0;d=e+f|0;if(d>>>0>p>>>0){break}}g=c[g+8>>2]|0}g=e+(f+ -39)|0;if((g&7|0)==0){g=0}else{g=0-g&7}e=e+(f+ -47+g)|0;e=e>>>0<(p+16|0)>>>0?p:e;f=e+8|0;g=n+8|0;if((g&7|0)==0){g=0}else{g=0-g&7}z=o+ -40-g|0;c[291312>>2]=n+g;c[291300>>2]=z;c[n+(g+4)>>2]=z|1;c[n+(o+ -36)>>2]=40;c[291316>>2]=c[291776>>2];c[e+4>>2]=27;$W(f|0,291736|0,16)|0;c[291736>>2]=n;c[291740>>2]=o;c[291748>>2]=0;c[291744>>2]=f;f=e+28|0;c[f>>2]=7;if((e+32|0)>>>0>>0){while(1){g=f+4|0;c[g>>2]=7;if((f+8|0)>>>0>>0){f=g}else{break}}}if((e|0)==(p|0)){break}d=e-p|0;e=p+(d+4)|0;c[e>>2]=c[e>>2]&-2;c[p+4>>2]=d|1;c[p+d>>2]=d;e=d>>>3;if(d>>>0<256){g=e<<1;d=291328+(g<<2)|0;f=c[72822]|0;e=1<>2]|0;if(e>>>0>=(c[291304>>2]|0)>>>0){k=e;j=f;break}tc()}}while(0);c[j>>2]=p;c[k+12>>2]=p;c[p+8>>2]=k;c[p+12>>2]=d;break}e=d>>>8;do{if((e|0)==0){e=0}else{if(d>>>0>16777215){e=31;break}y=(e+1048320|0)>>>16&8;z=e<>>16&4;z=z<>>16&2;e=14-(x|y|e)+(z<>>15)|0;e=d>>>(e+7|0)&1|e<<1}}while(0);j=291592+(e<<2)|0;c[p+28>>2]=e;c[p+20>>2]=0;c[p+16>>2]=0;f=c[291292>>2]|0;g=1<>2]=f|g;c[j>>2]=p;c[p+24>>2]=j;c[p+12>>2]=p;c[p+8>>2]=p;break}f=c[j>>2]|0;if((e|0)==31){e=0}else{e=25-(e>>>1)|0}m:do{if((c[f+4>>2]&-8|0)==(d|0)){h=f}else{e=d<>>31<<2)|0;g=c[f>>2]|0;if((g|0)==0){break}if((c[g+4>>2]&-8|0)==(d|0)){h=g;break m}else{e=e<<1;j=g}}if(f>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[f>>2]=p;c[p+24>>2]=j;c[p+12>>2]=p;c[p+8>>2]=p;break i}}}while(0);e=h+8|0;d=c[e>>2]|0;f=c[291304>>2]|0;if(h>>>0>>0){tc()}if(d>>>0>>0){tc()}else{c[d+12>>2]=p;c[e>>2]=p;c[p+8>>2]=d;c[p+12>>2]=h;c[p+24>>2]=0;break}}}while(0);d=c[291300>>2]|0;if(d>>>0<=a>>>0){break}y=d-a|0;c[291300>>2]=y;z=c[291312>>2]|0;c[291312>>2]=z+a;c[z+(a+4)>>2]=y|1;c[z+4>>2]=a|3;z=z+8|0;i=b;return z|0}}while(0);c[(Pc()|0)>>2]=12;z=0;i=b;return z|0}function BW(a){a=a|0;var b=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;b=i;if((a|0)==0){i=b;return}q=a+ -8|0;r=c[291304>>2]|0;if(q>>>0>>0){tc()}o=c[a+ -4>>2]|0;m=o&3;if((m|0)==1){tc()}j=o&-8;h=a+(j+ -8)|0;a:do{if((o&1|0)==0){u=c[q>>2]|0;if((m|0)==0){i=b;return}q=-8-u|0;m=a+q|0;o=u+j|0;if(m>>>0>>0){tc()}if((m|0)==(c[291308>>2]|0)){d=a+(j+ -4)|0;if((c[d>>2]&3|0)!=3){d=m;n=o;break}c[291296>>2]=o;c[d>>2]=c[d>>2]&-2;c[a+(q+4)>>2]=o|1;c[h>>2]=o;i=b;return}t=u>>>3;if(u>>>0<256){d=c[a+(q+8)>>2]|0;n=c[a+(q+12)>>2]|0;p=291328+(t<<1<<2)|0;do{if((d|0)!=(p|0)){if(d>>>0>>0){tc()}if((c[d+12>>2]|0)==(m|0)){break}tc()}}while(0);if((n|0)==(d|0)){c[72822]=c[72822]&~(1<>>0>>0){tc()}p=n+8|0;if((c[p>>2]|0)==(m|0)){s=p;break}tc()}}while(0);c[d+12>>2]=n;c[s>>2]=d;d=m;n=o;break}s=c[a+(q+24)>>2]|0;t=c[a+(q+12)>>2]|0;do{if((t|0)==(m|0)){t=a+(q+20)|0;u=c[t>>2]|0;if((u|0)==0){t=a+(q+16)|0;u=c[t>>2]|0;if((u|0)==0){p=0;break}}while(1){v=u+20|0;w=c[v>>2]|0;if((w|0)!=0){u=w;t=v;continue}v=u+16|0;w=c[v>>2]|0;if((w|0)==0){break}else{t=v;u=w}}if(t>>>0>>0){tc()}else{c[t>>2]=0;p=u;break}}else{u=c[a+(q+8)>>2]|0;if(u>>>0>>0){tc()}r=u+12|0;if((c[r>>2]|0)!=(m|0)){tc()}v=t+8|0;if((c[v>>2]|0)==(m|0)){c[r>>2]=t;c[v>>2]=u;p=t;break}else{tc()}}}while(0);if((s|0)==0){d=m;n=o;break}r=a+(q+28)|0;t=291592+(c[r>>2]<<2)|0;do{if((m|0)==(c[t>>2]|0)){c[t>>2]=p;if((p|0)!=0){break}c[291292>>2]=c[291292>>2]&~(1<>2]);d=m;n=o;break a}else{if(s>>>0<(c[291304>>2]|0)>>>0){tc()}r=s+16|0;if((c[r>>2]|0)==(m|0)){c[r>>2]=p}else{c[s+20>>2]=p}if((p|0)==0){d=m;n=o;break a}}}while(0);if(p>>>0<(c[291304>>2]|0)>>>0){tc()}c[p+24>>2]=s;r=c[a+(q+16)>>2]|0;do{if((r|0)!=0){if(r>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[p+16>>2]=r;c[r+24>>2]=p;break}}}while(0);q=c[a+(q+20)>>2]|0;if((q|0)==0){d=m;n=o;break}if(q>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[p+20>>2]=q;c[q+24>>2]=p;d=m;n=o;break}}else{d=q;n=j}}while(0);if(d>>>0>=h>>>0){tc()}m=a+(j+ -4)|0;o=c[m>>2]|0;if((o&1|0)==0){tc()}do{if((o&2|0)==0){if((h|0)==(c[291312>>2]|0)){w=(c[291300>>2]|0)+n|0;c[291300>>2]=w;c[291312>>2]=d;c[d+4>>2]=w|1;if((d|0)!=(c[291308>>2]|0)){i=b;return}c[291308>>2]=0;c[291296>>2]=0;i=b;return}if((h|0)==(c[291308>>2]|0)){w=(c[291296>>2]|0)+n|0;c[291296>>2]=w;c[291308>>2]=d;c[d+4>>2]=w|1;c[d+w>>2]=w;i=b;return}n=(o&-8)+n|0;m=o>>>3;b:do{if(o>>>0<256){k=c[a+j>>2]|0;a=c[a+(j|4)>>2]|0;j=291328+(m<<1<<2)|0;do{if((k|0)!=(j|0)){if(k>>>0<(c[291304>>2]|0)>>>0){tc()}if((c[k+12>>2]|0)==(h|0)){break}tc()}}while(0);if((a|0)==(k|0)){c[72822]=c[72822]&~(1<>>0<(c[291304>>2]|0)>>>0){tc()}j=a+8|0;if((c[j>>2]|0)==(h|0)){l=j;break}tc()}}while(0);c[k+12>>2]=a;c[l>>2]=k}else{l=c[a+(j+16)>>2]|0;o=c[a+(j|4)>>2]|0;do{if((o|0)==(h|0)){o=a+(j+12)|0;m=c[o>>2]|0;if((m|0)==0){o=a+(j+8)|0;m=c[o>>2]|0;if((m|0)==0){k=0;break}}while(1){q=m+20|0;p=c[q>>2]|0;if((p|0)!=0){o=q;m=p;continue}p=m+16|0;q=c[p>>2]|0;if((q|0)==0){break}else{m=q;o=p}}if(o>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[o>>2]=0;k=m;break}}else{p=c[a+j>>2]|0;if(p>>>0<(c[291304>>2]|0)>>>0){tc()}q=p+12|0;if((c[q>>2]|0)!=(h|0)){tc()}m=o+8|0;if((c[m>>2]|0)==(h|0)){c[q>>2]=o;c[m>>2]=p;k=o;break}else{tc()}}}while(0);if((l|0)==0){break}m=a+(j+20)|0;o=291592+(c[m>>2]<<2)|0;do{if((h|0)==(c[o>>2]|0)){c[o>>2]=k;if((k|0)!=0){break}c[291292>>2]=c[291292>>2]&~(1<>2]);break b}else{if(l>>>0<(c[291304>>2]|0)>>>0){tc()}m=l+16|0;if((c[m>>2]|0)==(h|0)){c[m>>2]=k}else{c[l+20>>2]=k}if((k|0)==0){break b}}}while(0);if(k>>>0<(c[291304>>2]|0)>>>0){tc()}c[k+24>>2]=l;h=c[a+(j+8)>>2]|0;do{if((h|0)!=0){if(h>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[k+16>>2]=h;c[h+24>>2]=k;break}}}while(0);h=c[a+(j+12)>>2]|0;if((h|0)==0){break}if(h>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[k+20>>2]=h;c[h+24>>2]=k;break}}}while(0);c[d+4>>2]=n|1;c[d+n>>2]=n;if((d|0)!=(c[291308>>2]|0)){break}c[291296>>2]=n;i=b;return}else{c[m>>2]=o&-2;c[d+4>>2]=n|1;c[d+n>>2]=n}}while(0);h=n>>>3;if(n>>>0<256){j=h<<1;e=291328+(j<<2)|0;a=c[72822]|0;h=1<>2]|0;if(h>>>0>=(c[291304>>2]|0)>>>0){g=h;f=a;break}tc()}}while(0);c[f>>2]=d;c[g+12>>2]=d;c[d+8>>2]=g;c[d+12>>2]=e;i=b;return}f=n>>>8;do{if((f|0)==0){f=0}else{if(n>>>0>16777215){f=31;break}v=(f+1048320|0)>>>16&8;w=f<>>16&4;w=w<>>16&2;f=14-(u|v|f)+(w<>>15)|0;f=n>>>(f+7|0)&1|f<<1}}while(0);g=291592+(f<<2)|0;c[d+28>>2]=f;c[d+20>>2]=0;c[d+16>>2]=0;a=c[291292>>2]|0;h=1<>2]=a|h;c[g>>2]=d;c[d+24>>2]=g;c[d+12>>2]=d;c[d+8>>2]=d}else{g=c[g>>2]|0;if((f|0)==31){f=0}else{f=25-(f>>>1)|0}d:do{if((c[g+4>>2]&-8|0)==(n|0)){e=g}else{f=n<>>31<<2)|0;a=c[h>>2]|0;if((a|0)==0){break}if((c[a+4>>2]&-8|0)==(n|0)){e=a;break d}else{f=f<<1;g=a}}if(h>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[h>>2]=d;c[d+24>>2]=g;c[d+12>>2]=d;c[d+8>>2]=d;break c}}}while(0);g=e+8|0;f=c[g>>2]|0;h=c[291304>>2]|0;if(e>>>0>>0){tc()}if(f>>>0>>0){tc()}else{c[f+12>>2]=d;c[g>>2]=d;c[d+8>>2]=f;c[d+12>>2]=e;c[d+24>>2]=0;break}}}while(0);w=(c[291320>>2]|0)+ -1|0;c[291320>>2]=w;if((w|0)==0){d=291744|0}else{i=b;return}while(1){d=c[d>>2]|0;if((d|0)==0){break}else{d=d+8|0}}c[291320>>2]=-1;i=b;return}function CW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;if((a|0)==0){f=AW(b)|0;i=d;return f|0}if(b>>>0>4294967231){c[(Pc()|0)>>2]=12;f=0;i=d;return f|0}if(b>>>0<11){e=16}else{e=b+11&-8}e=DW(a+ -8|0,e)|0;if((e|0)!=0){f=e+8|0;i=d;return f|0}e=AW(b)|0;if((e|0)==0){f=0;i=d;return f|0}f=c[a+ -4>>2]|0;f=(f&-8)-((f&3|0)==0?8:4)|0;$W(e|0,a|0,(f>>>0>>0?f:b)|0)|0;BW(a);f=e;i=d;return f|0}function DW(a,b){a=a|0;b=b|0;var 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;d=i;e=a+4|0;g=c[e>>2]|0;k=g&-8;f=a+k|0;l=c[291304>>2]|0;if(a>>>0>>0){tc()}n=g&3;if(!((n|0)!=1&a>>>0>>0)){tc()}h=a+(k|4)|0;o=c[h>>2]|0;if((o&1|0)==0){tc()}if((n|0)==0){if(b>>>0<256){q=0;i=d;return q|0}do{if(k>>>0>=(b+4|0)>>>0){if((k-b|0)>>>0>c[291768>>2]<<1>>>0){break}i=d;return a|0}}while(0);q=0;i=d;return q|0}if(k>>>0>=b>>>0){f=k-b|0;if(f>>>0<=15){q=a;i=d;return q|0}c[e>>2]=g&1|b|2;c[a+(b+4)>>2]=f|3;c[h>>2]=c[h>>2]|1;EW(a+b|0,f);q=a;i=d;return q|0}if((f|0)==(c[291312>>2]|0)){f=(c[291300>>2]|0)+k|0;if(f>>>0<=b>>>0){q=0;i=d;return q|0}q=f-b|0;c[e>>2]=g&1|b|2;c[a+(b+4)>>2]=q|1;c[291312>>2]=a+b;c[291300>>2]=q;q=a;i=d;return q|0}if((f|0)==(c[291308>>2]|0)){h=(c[291296>>2]|0)+k|0;if(h>>>0>>0){q=0;i=d;return q|0}f=h-b|0;if(f>>>0>15){c[e>>2]=g&1|b|2;c[a+(b+4)>>2]=f|1;c[a+h>>2]=f;e=a+(h+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[e>>2]=g&1|h|2;e=a+(h+4)|0;c[e>>2]=c[e>>2]|1;e=0;f=0}c[291296>>2]=f;c[291308>>2]=e;q=a;i=d;return q|0}if((o&2|0)!=0){q=0;i=d;return q|0}h=(o&-8)+k|0;if(h>>>0>>0){q=0;i=d;return q|0}g=h-b|0;n=o>>>3;a:do{if(o>>>0<256){j=c[a+(k+8)>>2]|0;k=c[a+(k+12)>>2]|0;o=291328+(n<<1<<2)|0;do{if((j|0)!=(o|0)){if(j>>>0>>0){tc()}if((c[j+12>>2]|0)==(f|0)){break}tc()}}while(0);if((k|0)==(j|0)){c[72822]=c[72822]&~(1<>>0>>0){tc()}l=k+8|0;if((c[l>>2]|0)==(f|0)){m=l;break}tc()}}while(0);c[j+12>>2]=k;c[m>>2]=j}else{m=c[a+(k+24)>>2]|0;o=c[a+(k+12)>>2]|0;do{if((o|0)==(f|0)){n=a+(k+20)|0;o=c[n>>2]|0;if((o|0)==0){n=a+(k+16)|0;o=c[n>>2]|0;if((o|0)==0){j=0;break}}while(1){p=o+20|0;q=c[p>>2]|0;if((q|0)!=0){o=q;n=p;continue}p=o+16|0;q=c[p>>2]|0;if((q|0)==0){break}else{n=p;o=q}}if(n>>>0>>0){tc()}else{c[n>>2]=0;j=o;break}}else{n=c[a+(k+8)>>2]|0;if(n>>>0>>0){tc()}l=n+12|0;if((c[l>>2]|0)!=(f|0)){tc()}p=o+8|0;if((c[p>>2]|0)==(f|0)){c[l>>2]=o;c[p>>2]=n;j=o;break}else{tc()}}}while(0);if((m|0)==0){break}n=a+(k+28)|0;l=291592+(c[n>>2]<<2)|0;do{if((f|0)==(c[l>>2]|0)){c[l>>2]=j;if((j|0)!=0){break}c[291292>>2]=c[291292>>2]&~(1<>2]);break a}else{if(m>>>0<(c[291304>>2]|0)>>>0){tc()}l=m+16|0;if((c[l>>2]|0)==(f|0)){c[l>>2]=j}else{c[m+20>>2]=j}if((j|0)==0){break a}}}while(0);if(j>>>0<(c[291304>>2]|0)>>>0){tc()}c[j+24>>2]=m;f=c[a+(k+16)>>2]|0;do{if((f|0)!=0){if(f>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[j+16>>2]=f;c[f+24>>2]=j;break}}}while(0);f=c[a+(k+20)>>2]|0;if((f|0)==0){break}if(f>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[j+20>>2]=f;c[f+24>>2]=j;break}}}while(0);if(g>>>0<16){c[e>>2]=h|c[e>>2]&1|2;q=a+(h|4)|0;c[q>>2]=c[q>>2]|1;q=a;i=d;return q|0}else{c[e>>2]=c[e>>2]&1|b|2;c[a+(b+4)>>2]=g|3;q=a+(h|4)|0;c[q>>2]=c[q>>2]|1;EW(a+b|0,g);q=a;i=d;return q|0}return 0}function EW(a,b){a=a|0;b=b|0;var 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;d=i;h=a+b|0;l=c[a+4>>2]|0;a:do{if((l&1|0)==0){p=c[a>>2]|0;if((l&3|0)==0){i=d;return}l=a+(0-p)|0;m=p+b|0;q=c[291304>>2]|0;if(l>>>0>>0){tc()}if((l|0)==(c[291308>>2]|0)){e=a+(b+4)|0;if((c[e>>2]&3|0)!=3){e=l;n=m;break}c[291296>>2]=m;c[e>>2]=c[e>>2]&-2;c[a+(4-p)>>2]=m|1;c[h>>2]=m;i=d;return}s=p>>>3;if(p>>>0<256){e=c[a+(8-p)>>2]|0;n=c[a+(12-p)>>2]|0;o=291328+(s<<1<<2)|0;do{if((e|0)!=(o|0)){if(e>>>0>>0){tc()}if((c[e+12>>2]|0)==(l|0)){break}tc()}}while(0);if((n|0)==(e|0)){c[72822]=c[72822]&~(1<>>0>>0){tc()}o=n+8|0;if((c[o>>2]|0)==(l|0)){r=o;break}tc()}}while(0);c[e+12>>2]=n;c[r>>2]=e;e=l;n=m;break}r=c[a+(24-p)>>2]|0;t=c[a+(12-p)>>2]|0;do{if((t|0)==(l|0)){u=16-p|0;s=a+(u+4)|0;t=c[s>>2]|0;if((t|0)==0){s=a+u|0;t=c[s>>2]|0;if((t|0)==0){o=0;break}}while(1){u=t+20|0;v=c[u>>2]|0;if((v|0)!=0){t=v;s=u;continue}u=t+16|0;v=c[u>>2]|0;if((v|0)==0){break}else{s=u;t=v}}if(s>>>0>>0){tc()}else{c[s>>2]=0;o=t;break}}else{s=c[a+(8-p)>>2]|0;if(s>>>0>>0){tc()}u=s+12|0;if((c[u>>2]|0)!=(l|0)){tc()}q=t+8|0;if((c[q>>2]|0)==(l|0)){c[u>>2]=t;c[q>>2]=s;o=t;break}else{tc()}}}while(0);if((r|0)==0){e=l;n=m;break}q=a+(28-p)|0;s=291592+(c[q>>2]<<2)|0;do{if((l|0)==(c[s>>2]|0)){c[s>>2]=o;if((o|0)!=0){break}c[291292>>2]=c[291292>>2]&~(1<>2]);e=l;n=m;break a}else{if(r>>>0<(c[291304>>2]|0)>>>0){tc()}q=r+16|0;if((c[q>>2]|0)==(l|0)){c[q>>2]=o}else{c[r+20>>2]=o}if((o|0)==0){e=l;n=m;break a}}}while(0);if(o>>>0<(c[291304>>2]|0)>>>0){tc()}c[o+24>>2]=r;p=16-p|0;q=c[a+p>>2]|0;do{if((q|0)!=0){if(q>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[o+16>>2]=q;c[q+24>>2]=o;break}}}while(0);p=c[a+(p+4)>>2]|0;if((p|0)==0){e=l;n=m;break}if(p>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[o+20>>2]=p;c[p+24>>2]=o;e=l;n=m;break}}else{e=a;n=b}}while(0);l=c[291304>>2]|0;if(h>>>0>>0){tc()}m=a+(b+4)|0;o=c[m>>2]|0;do{if((o&2|0)==0){if((h|0)==(c[291312>>2]|0)){v=(c[291300>>2]|0)+n|0;c[291300>>2]=v;c[291312>>2]=e;c[e+4>>2]=v|1;if((e|0)!=(c[291308>>2]|0)){i=d;return}c[291308>>2]=0;c[291296>>2]=0;i=d;return}if((h|0)==(c[291308>>2]|0)){v=(c[291296>>2]|0)+n|0;c[291296>>2]=v;c[291308>>2]=e;c[e+4>>2]=v|1;c[e+v>>2]=v;i=d;return}n=(o&-8)+n|0;m=o>>>3;b:do{if(o>>>0<256){j=c[a+(b+8)>>2]|0;a=c[a+(b+12)>>2]|0;b=291328+(m<<1<<2)|0;do{if((j|0)!=(b|0)){if(j>>>0>>0){tc()}if((c[j+12>>2]|0)==(h|0)){break}tc()}}while(0);if((a|0)==(j|0)){c[72822]=c[72822]&~(1<>>0>>0){tc()}b=a+8|0;if((c[b>>2]|0)==(h|0)){k=b;break}tc()}}while(0);c[j+12>>2]=a;c[k>>2]=j}else{k=c[a+(b+24)>>2]|0;m=c[a+(b+12)>>2]|0;do{if((m|0)==(h|0)){o=a+(b+20)|0;m=c[o>>2]|0;if((m|0)==0){o=a+(b+16)|0;m=c[o>>2]|0;if((m|0)==0){j=0;break}}while(1){p=m+20|0;q=c[p>>2]|0;if((q|0)!=0){o=p;m=q;continue}p=m+16|0;q=c[p>>2]|0;if((q|0)==0){break}else{m=q;o=p}}if(o>>>0>>0){tc()}else{c[o>>2]=0;j=m;break}}else{o=c[a+(b+8)>>2]|0;if(o>>>0>>0){tc()}p=o+12|0;if((c[p>>2]|0)!=(h|0)){tc()}l=m+8|0;if((c[l>>2]|0)==(h|0)){c[p>>2]=m;c[l>>2]=o;j=m;break}else{tc()}}}while(0);if((k|0)==0){break}m=a+(b+28)|0;l=291592+(c[m>>2]<<2)|0;do{if((h|0)==(c[l>>2]|0)){c[l>>2]=j;if((j|0)!=0){break}c[291292>>2]=c[291292>>2]&~(1<>2]);break b}else{if(k>>>0<(c[291304>>2]|0)>>>0){tc()}l=k+16|0;if((c[l>>2]|0)==(h|0)){c[l>>2]=j}else{c[k+20>>2]=j}if((j|0)==0){break b}}}while(0);if(j>>>0<(c[291304>>2]|0)>>>0){tc()}c[j+24>>2]=k;h=c[a+(b+16)>>2]|0;do{if((h|0)!=0){if(h>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[j+16>>2]=h;c[h+24>>2]=j;break}}}while(0);h=c[a+(b+20)>>2]|0;if((h|0)==0){break}if(h>>>0<(c[291304>>2]|0)>>>0){tc()}else{c[j+20>>2]=h;c[h+24>>2]=j;break}}}while(0);c[e+4>>2]=n|1;c[e+n>>2]=n;if((e|0)!=(c[291308>>2]|0)){break}c[291296>>2]=n;i=d;return}else{c[m>>2]=o&-2;c[e+4>>2]=n|1;c[e+n>>2]=n}}while(0);a=n>>>3;if(n>>>0<256){b=a<<1;h=291328+(b<<2)|0;j=c[72822]|0;a=1<>2]|0;if(j>>>0>=(c[291304>>2]|0)>>>0){g=j;f=a;break}tc()}}while(0);c[f>>2]=e;c[g+12>>2]=e;c[e+8>>2]=g;c[e+12>>2]=h;i=d;return}f=n>>>8;do{if((f|0)==0){f=0}else{if(n>>>0>16777215){f=31;break}u=(f+1048320|0)>>>16&8;v=f<>>16&4;v=v<>>16&2;f=14-(t|u|f)+(v<>>15)|0;f=n>>>(f+7|0)&1|f<<1}}while(0);g=291592+(f<<2)|0;c[e+28>>2]=f;c[e+20>>2]=0;c[e+16>>2]=0;j=c[291292>>2]|0;h=1<>2]=j|h;c[g>>2]=e;c[e+24>>2]=g;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}h=c[g>>2]|0;if((f|0)==31){f=0}else{f=25-(f>>>1)|0}c:do{if((c[h+4>>2]&-8|0)!=(n|0)){f=n<>>31<<2)|0;h=c[g>>2]|0;if((h|0)==0){break}if((c[h+4>>2]&-8|0)==(n|0)){break c}else{f=f<<1;j=h}}if(g>>>0<(c[291304>>2]|0)>>>0){tc()}c[g>>2]=e;c[e+24>>2]=j;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}}while(0);f=h+8|0;j=c[f>>2]|0;g=c[291304>>2]|0;if(h>>>0>>0){tc()}if(j>>>0>>0){tc()}c[j+12>>2]=e;c[f>>2]=e;c[e+8>>2]=j;c[e+12>>2]=h;c[e+24>>2]=0;i=d;return}function FW(a){a=a|0;var b=0,d=0,e=0;b=i;a=(a|0)==0?1:a;while(1){d=AW(a)|0;if((d|0)!=0){a=6;break}e=291784;d=c[e>>2]|0;c[e>>2]=0+d;if((d|0)==0){a=5;break}Hd[d&1]()}if((a|0)==5){e=cc(4)|0;c[e>>2]=291800;uc(e|0,291848,327)}else if((a|0)==6){i=b;return d|0}return 0}function GW(a){a=a|0;var b=0;b=i;a=FW(a)|0;i=b;return a|0}function HW(a){a=a|0;var b=0;b=i;if((a|0)!=0){BW(a)}i=b;return}function IW(a){a=a|0;var b=0;b=i;HW(a);i=b;return}function JW(a){a=a|0;var b=0;b=i;lb(a|0);HW(a);i=b;return}function KW(a){a=a|0;var b=0;b=i;lb(a|0);i=b;return}function LW(a){a=a|0;i=i;return 291816} - - - -function MW(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0;g=i;r=i;i=i+512|0;k=r;if((e|0)==1){e=53;h=-1074}else if((e|0)==2){e=53;h=-1074}else if((e|0)==0){e=24;h=-149}else{M=0.0;i=g;return+M}n=b+4|0;o=b+100|0;do{j=c[n>>2]|0;if(j>>>0<(c[o>>2]|0)>>>0){c[n>>2]=j+1;F=d[j]|0}else{F=PW(b)|0}}while((xc(F|0)|0)!=0);do{if((F|0)==43|(F|0)==45){j=1-(((F|0)==45)<<1)|0;l=c[n>>2]|0;if(l>>>0<(c[o>>2]|0)>>>0){c[n>>2]=l+1;F=d[l]|0;break}else{F=PW(b)|0;break}}else{j=1}}while(0);l=0;do{if((F|32|0)!=(a[291864+l|0]|0)){break}do{if(l>>>0<7){m=c[n>>2]|0;if(m>>>0<(c[o>>2]|0)>>>0){c[n>>2]=m+1;F=d[m]|0;break}else{F=PW(b)|0;break}}}while(0);l=l+1|0;}while(l>>>0<8);do{if((l|0)==3){q=23}else if((l|0)!=8){p=(f|0)==0;if(!(l>>>0<4|p)){if((l|0)==8){break}else{q=23;break}}a:do{if((l|0)==0){l=0;do{if((F|32|0)!=(a[291880+l|0]|0)){break a}do{if(l>>>0<2){m=c[n>>2]|0;if(m>>>0<(c[o>>2]|0)>>>0){c[n>>2]=m+1;F=d[m]|0;break}else{F=PW(b)|0;break}}}while(0);l=l+1|0;}while(l>>>0<3)}}while(0);if((l|0)==3){e=c[n>>2]|0;if(e>>>0<(c[o>>2]|0)>>>0){c[n>>2]=e+1;e=d[e]|0}else{e=PW(b)|0}if((e|0)==40){e=1}else{if((c[o>>2]|0)==0){M=+w;i=g;return+M}c[n>>2]=(c[n>>2]|0)+ -1;M=+w;i=g;return+M}while(1){h=c[n>>2]|0;if(h>>>0<(c[o>>2]|0)>>>0){c[n>>2]=h+1;h=d[h]|0}else{h=PW(b)|0}if(!((h+ -48|0)>>>0<10|(h+ -65|0)>>>0<26)){if(!((h+ -97|0)>>>0<26|(h|0)==95)){break}}e=e+1|0}if((h|0)==41){M=+w;i=g;return+M}h=(c[o>>2]|0)==0;if(!h){c[n>>2]=(c[n>>2]|0)+ -1}if(p){c[(Pc()|0)>>2]=22;OW(b,0);M=0.0;i=g;return+M}if((e|0)==0|h){M=+w;i=g;return+M}while(1){e=e+ -1|0;c[n>>2]=(c[n>>2]|0)+ -1;if((e|0)==0){s=+w;break}else{}}i=g;return+s}else if((l|0)==0){do{if((F|0)==48){l=c[n>>2]|0;if(l>>>0<(c[o>>2]|0)>>>0){c[n>>2]=l+1;l=d[l]|0}else{l=PW(b)|0}if((l|32|0)!=120){if((c[o>>2]|0)==0){F=48;break}c[n>>2]=(c[n>>2]|0)+ -1;F=48;break}k=c[n>>2]|0;if(k>>>0<(c[o>>2]|0)>>>0){c[n>>2]=k+1;z=d[k]|0;v=0}else{z=PW(b)|0;v=0}while(1){if((z|0)==46){q=70;break}else if((z|0)!=48){m=0;r=0;l=0;k=0;u=0;y=0;K=1.0;t=0;s=0.0;break}k=c[n>>2]|0;if(k>>>0<(c[o>>2]|0)>>>0){c[n>>2]=k+1;z=d[k]|0;v=1;continue}else{z=PW(b)|0;v=1;continue}}b:do{if((q|0)==70){k=c[n>>2]|0;if(k>>>0<(c[o>>2]|0)>>>0){c[n>>2]=k+1;z=d[k]|0}else{z=PW(b)|0}if((z|0)==48){m=-1;r=-1}else{m=0;r=0;l=0;k=0;u=1;y=0;K=1.0;t=0;s=0.0;break}while(1){k=c[n>>2]|0;if(k>>>0<(c[o>>2]|0)>>>0){c[n>>2]=k+1;z=d[k]|0}else{z=PW(b)|0}if((z|0)!=48){l=0;k=0;v=1;u=1;y=0;K=1.0;t=0;s=0.0;break b}J=gX(m|0,r|0,-1,-1)|0;m=J;r=H}}}while(0);c:while(1){B=z+ -48|0;do{if(B>>>0<10){q=84}else{A=z|32;C=(z|0)==46;if(!((A+ -97|0)>>>0<6|C)){break c}if(C){if((u|0)==0){m=l;r=k;u=1;break}else{z=46;break c}}else{B=(z|0)>57?A+ -87|0:B;q=84;break}}}while(0);if((q|0)==84){q=0;do{if((k|0)<0|(k|0)==0&l>>>0<8){L=K;t=B+(t<<4)|0}else{if((k|0)<0|(k|0)==0&l>>>0<14){M=K*.0625;L=M;s=s+M*+(B|0);break}if(!((B|0)!=0&(y|0)==0)){L=K;break}y=1;L=K;s=s+K*.5}}while(0);l=gX(l|0,k|0,1,0)|0;k=H;v=1;K=L}z=c[n>>2]|0;if(z>>>0<(c[o>>2]|0)>>>0){c[n>>2]=z+1;z=d[z]|0;continue}else{z=PW(b)|0;continue}}if((v|0)==0){e=(c[o>>2]|0)==0;if(!e){c[n>>2]=(c[n>>2]|0)+ -1}do{if(p){OW(b,0)}else{if(e){break}e=c[n>>2]|0;c[n>>2]=e+ -1;if((u|0)==0){break}c[n>>2]=e+ -2}}while(0);M=+(j|0)*0.0;i=g;return+M}q=(u|0)==0;m=q?l:m;q=q?k:r;if((k|0)<0|(k|0)==0&l>>>0<8){while(1){t=t<<4;l=gX(l|0,k|0,1,0)|0;k=H;if((k|0)<0|(k|0)==0&l>>>0<8){}else{break}}}do{if((z|32|0)==112){l=NW(b,f)|0;k=H;if(!((l|0)==0&(k|0)==-2147483648)){break}if(p){OW(b,0);M=0.0;i=g;return+M}else{if((c[o>>2]|0)==0){l=0;k=0;break}c[n>>2]=(c[n>>2]|0)+ -1;l=0;k=0;break}}else{if((c[o>>2]|0)==0){l=0;k=0;break}c[n>>2]=(c[n>>2]|0)+ -1;l=0;k=0}}while(0);J=dX(m|0,q|0,2)|0;J=gX(J|0,H|0,-32,-1)|0;k=gX(J|0,H|0,l|0,k|0)|0;l=H;if((t|0)==0){M=+(j|0)*0.0;i=g;return+M}if((l|0)>0|(l|0)==0&k>>>0>(0-h|0)>>>0){c[(Pc()|0)>>2]=34;M=+(j|0)*1.7976931348623157e+308*1.7976931348623157e+308;i=g;return+M}m=h+ -106|0;J=(m|0)<0?-1:0;if((l|0)<(J|0)|(l|0)==(J|0)&k>>>0>>0){c[(Pc()|0)>>2]=34;M=+(j|0)*1.2882297539194267e-231*1.2882297539194267e-231;i=g;return+M}if((t|0)>-1){do{t=t<<1;if(s<.5){K=s}else{K=s+-1.0;t=t|1}s=s+K;k=gX(k|0,l|0,-1,-1)|0;l=H;}while((t|0)>-1)}J=h|0;h=fX(32,0,J|0,((J|0)<0?-1:0)|0)|0;h=gX(k|0,l|0,h|0,H|0)|0;J=H;if(0>(J|0)|0==(J|0)&(e|0)>>>0>h>>>0){e=(h|0)<0?0:h}do{if((e|0)<53){K=+(j|0);L=+Sc(+(+QW(1.0,84-e|0)),+K);if(!((e|0)<32&s!=0.0)){break}J=t&1;t=(J^1)+t|0;s=(J|0)==0?0.0:s}else{K=+(j|0);L=0.0}}while(0);s=K*s+(L+K*+(t>>>0))-L;if(s==0.0){c[(Pc()|0)>>2]=34}M=+RW(s,k);i=g;return+M}}while(0);m=h+e|0;l=0-m|0;A=0;while(1){if((F|0)==46){q=139;break}else if((F|0)!=48){B=0;C=0;v=0;break}t=c[n>>2]|0;if(t>>>0<(c[o>>2]|0)>>>0){c[n>>2]=t+1;F=d[t]|0;A=1;continue}else{F=PW(b)|0;A=1;continue}}d:do{if((q|0)==139){t=c[n>>2]|0;if(t>>>0<(c[o>>2]|0)>>>0){c[n>>2]=t+1;F=d[t]|0}else{F=PW(b)|0}if((F|0)==48){B=-1;C=-1}else{B=0;C=0;v=1;break}while(1){t=c[n>>2]|0;if(t>>>0<(c[o>>2]|0)>>>0){c[n>>2]=t+1;F=d[t]|0}else{F=PW(b)|0}if((F|0)!=48){A=1;v=1;break d}J=gX(B|0,C|0,-1,-1)|0;B=J;C=H}}}while(0);c[r>>2]=0;D=F+ -48|0;E=(F|0)==46;e:do{if(D>>>0<10|E){t=k+496|0;I=0;G=0;z=0;y=0;u=0;while(1){do{if(E){if((v|0)==0){B=I;C=G;v=1}else{t=I;v=G;break e}}else{E=gX(I|0,G|0,1,0)|0;G=H;J=(F|0)!=48;if((y|0)>=125){if(!J){I=E;break}c[t>>2]=c[t>>2]|1;I=E;break}A=k+(y<<2)|0;if((z|0)!=0){D=F+ -48+((c[A>>2]|0)*10|0)|0}c[A>>2]=D;z=z+1|0;D=(z|0)==9;I=E;A=1;z=D?0:z;y=(D&1)+y|0;u=J?E:u}}while(0);D=c[n>>2]|0;if(D>>>0<(c[o>>2]|0)>>>0){c[n>>2]=D+1;F=d[D]|0}else{F=PW(b)|0}D=F+ -48|0;E=(F|0)==46;if(!(D>>>0<10|E)){q=162;break}}}else{I=0;G=0;z=0;y=0;u=0;q=162}}while(0);if((q|0)==162){D=(v|0)==0;t=I;v=G;B=D?I:B;C=D?G:C}A=(A|0)!=0;do{if(A){if((F|32|0)!=101){q=171;break}D=NW(b,f)|0;f=H;do{if((D|0)==0&(f|0)==-2147483648){if(p){OW(b,0);M=0.0;i=g;return+M}else{if((c[o>>2]|0)==0){D=0;f=0;break}c[n>>2]=(c[n>>2]|0)+ -1;D=0;f=0;break}}}while(0);n=gX(D|0,f|0,B|0,C|0)|0;C=H}else{q=171}}while(0);do{if((q|0)==171){if((F|0)<=-1){n=B;break}if((c[o>>2]|0)==0){n=B;break}c[n>>2]=(c[n>>2]|0)+ -1;n=B}}while(0);if(!A){c[(Pc()|0)>>2]=22;OW(b,0);M=0.0;i=g;return+M}b=c[r>>2]|0;if((b|0)==0){M=+(j|0)*0.0;i=g;return+M}do{if((n|0)==(t|0)&(C|0)==(v|0)&((v|0)<0|(v|0)==0&t>>>0<10)){if(e>>>0<=30){if((b>>>e|0)!=0){break}}M=+(j|0)*+(b>>>0);i=g;return+M}}while(0);b=(h|0)/-2|0|0;J=(b|0)<0?-1:0;if((C|0)>(J|0)|(C|0)==(J|0)&n>>>0>b>>>0){c[(Pc()|0)>>2]=34;M=+(j|0)*1.7976931348623157e+308*1.7976931348623157e+308;i=g;return+M}b=h+ -106|0;J=(b|0)<0?-1:0;if((C|0)<(J|0)|(C|0)==(J|0)&n>>>0>>0){c[(Pc()|0)>>2]=34;M=+(j|0)*1.2882297539194267e-231*1.2882297539194267e-231;i=g;return+M}if((z|0)!=0){if((z|0)<9){o=k+(y<<2)|0;b=c[o>>2]|0;do{b=b*10|0;z=z+1|0;}while((z|0)<9);c[o>>2]=b}y=y+1|0}do{if((u|0)<9){if(!((u|0)<=(n|0)&(n|0)<18)){break}if((n|0)==9){M=+(j|0)*+((c[r>>2]|0)>>>0);i=g;return+M}if((n|0)<9){M=+(j|0)*+((c[r>>2]|0)>>>0)/+(c[291896+(8-n<<2)>>2]|0);i=g;return+M}b=e+27+(da(n,-3)|0)|0;o=c[r>>2]|0;if((b|0)<=30){if((o>>>b|0)!=0){break}}M=+(j|0)*+(o>>>0)*+(c[291896+(n+ -10<<2)>>2]|0);i=g;return+M}}while(0);b=(n|0)%9|0;if((b|0)==0){b=0;o=0}else{f=(n|0)>-1?b:b+9|0;o=c[291896+(8-f<<2)>>2]|0;do{if((y|0)==0){b=0;y=0}else{p=1e9/(o|0)|0;b=0;r=0;t=0;while(1){I=k+(t<<2)|0;q=c[I>>2]|0;J=((q>>>0)/(o>>>0)|0)+r|0;c[I>>2]=J;r=da((q>>>0)%(o>>>0)|0,p)|0;q=t+1|0;if((t|0)==(b|0)&(J|0)==0){b=q&127;n=n+ -9|0}if((q|0)==(y|0)){break}else{t=q}}if((r|0)==0){break}c[k+(y<<2)>>2]=r;y=y+1|0}}while(0);o=0;n=9-f+n|0}f:while(1){f=k+(b<<2)|0;if((n|0)<18){do{q=0;f=y+127|0;while(1){f=f&127;p=k+(f<<2)|0;r=dX(c[p>>2]|0,0,29)|0;r=gX(r|0,H|0,q|0,0)|0;q=H;if(q>>>0>0|(q|0)==0&r>>>0>1e9){J=rX(r|0,q|0,1e9,0)|0;r=sX(r|0,q|0,1e9,0)|0;q=J}else{q=0}c[p>>2]=r;p=(f|0)==(b|0);if(!((f|0)!=(y+127&127|0)|p)){y=(r|0)==0?f:y}if(p){break}else{f=f+ -1|0}}o=o+ -29|0;}while((q|0)==0)}else{if((n|0)!=18){break}do{if((c[f>>2]|0)>>>0>=9007199){n=18;break f}q=0;p=y+127|0;while(1){p=p&127;r=k+(p<<2)|0;t=dX(c[r>>2]|0,0,29)|0;t=gX(t|0,H|0,q|0,0)|0;q=H;if(q>>>0>0|(q|0)==0&t>>>0>1e9){J=rX(t|0,q|0,1e9,0)|0;t=sX(t|0,q|0,1e9,0)|0;q=J}else{q=0}c[r>>2]=t;r=(p|0)==(b|0);if(!((p|0)!=(y+127&127|0)|r)){y=(t|0)==0?p:y}if(r){break}else{p=p+ -1|0}}o=o+ -29|0;}while((q|0)==0)}b=b+127&127;if((b|0)==(y|0)){J=y+127&127;y=k+((y+126&127)<<2)|0;c[y>>2]=c[y>>2]|c[k+(J<<2)>>2];y=J}c[k+(b<<2)>>2]=q;n=n+9|0}g:while(1){f=y+1&127;p=k+((y+127&127)<<2)|0;while(1){r=(n|0)==18;q=(n|0)>27?9:1;while(1){t=0;while(1){u=t+b&127;if((u|0)==(y|0)){t=2;break}z=c[k+(u<<2)>>2]|0;v=c[291888+(t<<2)>>2]|0;if(z>>>0>>0){t=2;break}u=t+1|0;if(z>>>0>v>>>0){break}if((u|0)<2){t=u}else{t=u;break}}if((t|0)==2&r){break g}o=q+o|0;if((b|0)==(y|0)){b=y}else{break}}r=(1<>>q;u=b;t=0;do{I=k+(b<<2)|0;J=c[I>>2]|0;z=(J>>>q)+t|0;c[I>>2]=z;t=da(J&r,v)|0;z=(b|0)==(u|0)&(z|0)==0;b=b+1&127;n=z?n+ -9|0:n;u=z?b:u;}while((b|0)!=(y|0));if((t|0)==0){b=u;continue}if((f|0)!=(u|0)){break}c[p>>2]=c[p>>2]|1;b=u}c[k+(y<<2)>>2]=t;b=u;y=f}n=b&127;if((n|0)==(y|0)){c[k+(f+ -1<<2)>>2]=0;y=f}K=+((c[k+(n<<2)>>2]|0)>>>0);n=b+1&127;if((n|0)==(y|0)){y=y+1&127;c[k+(y+ -1<<2)>>2]=0}s=+(j|0);L=s*(K*1.0e9+ +((c[k+(n<<2)>>2]|0)>>>0));j=o+53|0;h=j-h|0;if((h|0)<(e|0)){e=(h|0)<0?0:h;n=1}else{n=0}if((e|0)<53){O=+Sc(+(+QW(1.0,105-e|0)),+L);N=+$b(+L,+(+QW(1.0,53-e|0)));K=O;M=N;L=O+(L-N)}else{K=0.0;M=0.0}f=b+2&127;do{if((f|0)!=(y|0)){k=c[k+(f<<2)>>2]|0;do{if(k>>>0<5e8){if((k|0)==0){if((b+3&127|0)==(y|0)){break}}M=s*.25+M}else{if(k>>>0>5e8){M=s*.75+M;break}if((b+3&127|0)==(y|0)){M=s*.5+M;break}else{M=s*.75+M;break}}}while(0);if((53-e|0)<=1){break}if(+$b(+M,1.0)!=0.0){break}M=M+1.0}}while(0);s=L+M-K;do{if((j&2147483647|0)>(-2-m|0)){if(+S(+s)>=9007199254740992.0){n=(n|0)!=0&(e|0)==(h|0)?0:n;o=o+1|0;s=s*.5}if((o+50|0)<=(l|0)){if(!((n|0)!=0&M!=0.0)){break}}c[(Pc()|0)>>2]=34}}while(0);O=+RW(s,o);i=g;return+O}else{if((c[o>>2]|0)!=0){c[n>>2]=(c[n>>2]|0)+ -1}c[(Pc()|0)>>2]=22;OW(b,0);O=0.0;i=g;return+O}}}while(0);do{if((q|0)==23){e=(c[o>>2]|0)==0;if(!e){c[n>>2]=(c[n>>2]|0)+ -1}if(l>>>0<4|(f|0)==0|e){break}do{c[n>>2]=(c[n>>2]|0)+ -1;l=l+ -1|0;}while(l>>>0>3)}}while(0);O=+(j|0)*+x;i=g;return+O}function NW(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;g=a+4|0;h=c[g>>2]|0;f=a+100|0;if(h>>>0<(c[f>>2]|0)>>>0){c[g>>2]=h+1;k=d[h]|0}else{k=PW(a)|0}do{if((k|0)==43|(k|0)==45){h=(k|0)==45|0;j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;k=d[j]|0}else{k=PW(a)|0}if((k+ -48|0)>>>0<10|(b|0)==0){break}if((c[f>>2]|0)==0){break}c[g>>2]=(c[g>>2]|0)+ -1}else{h=0}}while(0);if((k+ -48|0)>>>0>9){if((c[f>>2]|0)==0){k=0;j=-2147483648;H=j;i=e;return k|0}c[g>>2]=(c[g>>2]|0)+ -1;k=0;j=-2147483648;H=j;i=e;return k|0}else{b=0}while(1){b=k+ -48+b|0;j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;k=d[j]|0}else{k=PW(a)|0}if(!((k+ -48|0)>>>0<10&(b|0)<214748364)){break}b=b*10|0}b=b|0;j=(b|0)<0?-1:0;if((k+ -48|0)>>>0<10){while(1){j=qX(b|0,j|0,10,0)|0;b=H;k=k|0;k=gX(k|0,((k|0)<0?-1:0)|0,-48,-1)|0;b=gX(k|0,H|0,j|0,b|0)|0;j=H;k=c[g>>2]|0;if(k>>>0<(c[f>>2]|0)>>>0){c[g>>2]=k+1;k=d[k]|0}else{k=PW(a)|0}if((k+ -48|0)>>>0<10&((j|0)<21474836|(j|0)==21474836&b>>>0<2061584302)){}else{break}}}if((k+ -48|0)>>>0<10){do{k=c[g>>2]|0;if(k>>>0<(c[f>>2]|0)>>>0){c[g>>2]=k+1;k=d[k]|0}else{k=PW(a)|0}}while((k+ -48|0)>>>0<10)}if((c[f>>2]|0)!=0){c[g>>2]=(c[g>>2]|0)+ -1}a=(h|0)!=0;f=fX(0,0,b|0,j|0)|0;f=a?f:b;k=a?H:j;H=k;i=e;return f|0}function OW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;c[a+104>>2]=b;f=c[a+8>>2]|0;e=c[a+4>>2]|0;g=f-e|0;c[a+108>>2]=g;if((b|0)!=0&(g|0)>(b|0)){c[a+100>>2]=e+b;i=d;return}else{c[a+100>>2]=f;i=d;return}}function PW(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;h=b+104|0;f=c[h>>2]|0;if((f|0)==0){g=3}else{if((c[b+108>>2]|0)<(f|0)){g=3}}do{if((g|0)==3){f=TW(b)|0;if((f|0)<0){break}k=c[h>>2]|0;h=c[b+8>>2]|0;do{if((k|0)==0){g=8}else{j=c[b+4>>2]|0;k=k-(c[b+108>>2]|0)+ -1|0;if((h-j|0)<=(k|0)){g=8;break}c[b+100>>2]=j+k}}while(0);if((g|0)==8){c[b+100>>2]=h}g=c[b+4>>2]|0;if((h|0)!=0){k=b+108|0;c[k>>2]=h+1-g+(c[k>>2]|0)}b=g+ -1|0;if((d[b]|0|0)==(f|0)){k=f;i=e;return k|0}a[b]=f;k=f;i=e;return k|0}}while(0);c[b+100>>2]=0;k=-1;i=e;return k|0}function QW(a,b){a=+a;b=b|0;var d=0,e=0;d=i;do{if((b|0)>1023){a=a*8.98846567431158e+307;e=b+ -1023|0;if((e|0)<=1023){b=e;break}b=b+ -2046|0;b=(b|0)>1023?1023:b;a=a*8.98846567431158e+307}else{if((b|0)>=-1022){break}a=a*1.2882297539194267e-231;e=b+1022|0;if((e|0)>=-1022){b=e;break}b=b+2044|0;b=(b|0)<-1022?-1022:b;a=a*1.2882297539194267e-231}}while(0);b=dX(b+1023|0,0,52)|0;e=H;c[k>>2]=b;c[k+4>>2]=e;a=a*+h[k>>3];i=d;return+a}function RW(a,b){a=+a;b=b|0;var c=0;c=i;a=+QW(a,b);i=c;return+a}function SW(b){b=b|0;var d=0,e=0,f=0;e=i;f=b+74|0;d=a[f]|0;a[f]=d+ -1<<24>>24|d;f=b+20|0;d=b+44|0;if((c[f>>2]|0)>>>0>(c[d>>2]|0)>>>0){sd[c[b+36>>2]&127](b,0,0)|0}c[b+16>>2]=0;c[b+28>>2]=0;c[f>>2]=0;f=c[b>>2]|0;if((f&20|0)==0){f=c[d>>2]|0;c[b+8>>2]=f;c[b+4>>2]=f;f=0;i=e;return f|0}if((f&4|0)==0){f=-1;i=e;return f|0}c[b>>2]=f|32;f=-1;i=e;return f|0}function TW(a){a=a|0;var b=0,e=0,f=0;b=i;e=i;i=i+8|0;f=e;do{if((c[a+8>>2]|0)==0){if((SW(a)|0)==0){break}else{a=-1}i=b;return a|0}}while(0);if((sd[c[a+32>>2]&127](a,f,1)|0)!=1){f=-1;i=b;return f|0}f=d[e]|0;i=b;return f|0}function UW(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0;e=i;h=i;i=i+112|0;f=h;bX(h|0,0,112)|0;h=f+4|0;c[h>>2]=a;g=f+8|0;c[g>>2]=-1;c[f+44>>2]=a;c[f+76>>2]=-1;OW(f,0);d=+MW(f,1,1);f=(c[h>>2]|0)-(c[g>>2]|0)+(c[f+108>>2]|0)|0;if((b|0)==0){i=e;return+d}if((f|0)!=0){a=a+f|0}c[b>>2]=a;i=e;return+d}function VW(){c[72964]=o}function WW(a){a=a|0;if((a|0)<65)return a|0;if((a|0)>90)return a|0;return a-65+97|0}function XW(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;while(e>>>0>>0){f=WW(a[b+e|0]|0)|0;g=WW(a[c+e|0]|0)|0;if((f|0)==(g|0)&(f|0)==0)return 0;if((f|0)==0)return-1;if((g|0)==0)return 1;if((f|0)==(g|0)){e=e+1|0;continue}else{return(f>>>0>g>>>0?1:-1)|0}}return 0}function YW(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;u=u+1|0;c[a>>2]=u;while((e|0)<40){if((c[d+(e<<2)>>2]|0)==0){c[d+(e<<2)>>2]=u;c[d+((e<<2)+4)>>2]=b;c[d+((e<<2)+8)>>2]=0;return 0}e=e+2|0}Hb(116);Hb(111);Hb(111);Hb(32);Hb(109);Hb(97);Hb(110);Hb(121);Hb(32);Hb(115);Hb(101);Hb(116);Hb(106);Hb(109);Hb(112);Hb(115);Hb(32);Hb(105);Hb(110);Hb(32);Hb(97);Hb(32);Hb(102);Hb(117);Hb(110);Hb(99);Hb(116);Hb(105);Hb(111);Hb(110);Hb(32);Hb(99);Hb(97);Hb(108);Hb(108);Hb(44);Hb(32);Hb(98);Hb(117);Hb(105);Hb(108);Hb(100);Hb(32);Hb(119);Hb(105);Hb(116);Hb(104);Hb(32);Hb(97);Hb(32);Hb(104);Hb(105);Hb(103);Hb(104);Hb(101);Hb(114);Hb(32);Hb(118);Hb(97);Hb(108);Hb(117);Hb(101);Hb(32);Hb(102);Hb(111);Hb(114);Hb(32);Hb(77);Hb(65);Hb(88);Hb(95);Hb(83);Hb(69);Hb(84);Hb(74);Hb(77);Hb(80);Hb(83);Hb(10);ea(0);return 0}function ZW(b){b=b|0;var c=0;c=b;while(a[c]|0){c=c+1|0}return c-b|0}function _W(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b>>c;return a>>>c|(b&(1<>c-32|0}function $W(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b|0;if((b&3)==(d&3)){while(b&3){if((e|0)==0)return f|0;a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function aX(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b]=a[c]|0}b=e}else{$W(b,c,d)|0}return b|0}function bX(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;i=b&3;h=d|d<<8|d<<16|d<<24;g=f&~3;if(i){i=b+4-i|0;while((b|0)<(i|0)){a[b]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b]=d;b=b+1|0}return b-e|0}function cX(b,c){b=b|0;c=c|0;var d=0,e=0;d=b+(ZW(b)|0)|0;do{a[d+e|0]=a[c+e|0];e=e+1|0}while(a[c+(e-1)|0]|0);return b|0}function dX(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b<>>32-c;return a<>>0>a>>>0|0)>>>0;return(H=b,a-c>>>0|0)|0}function gX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return(H=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function hX(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;while((e|0)<(d|0)){a[b+e|0]=f?0:a[c+e|0]|0;f=f?1:(a[c+e|0]|0)==0;e=e+1|0}return b|0}function iX(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0,g=0;while((e|0)<(c|0)){g=d[a+e|0]|0;f=d[b+e|0]|0;if((g|0)!=(f|0))return((g|0)>(f|0)?1:-1)|0;e=e+1|0}return 0}function jX(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b>>>c;return a>>>c|(b&(1<>>c-32|0}function kX(a,b){a=a|0;b=b|0;var d=0,e=0;while((d|0)<20){e=c[b+(d<<2)>>2]|0;if((e|0)==0)break;if((e|0)==(a|0)){return c[b+((d<<2)+4)>>2]|0}d=d+2|0}return 0}function lX(b){b=b|0;var c=0;c=a[n+(b>>>24)|0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)|0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)|0]|0;if((c|0)<8)return c+16|0;return(a[n+(b&255)|0]|0)+24|0}function mX(b){b=b|0;var c=0;c=a[m+(b&255)|0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)|0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)|0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)|0]|0)+24|0}function nX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=da(d,f)|0;e=a>>>16;d=(c>>>16)+(da(d,e)|0)|0;b=b>>>16;a=da(b,f)|0;return(H=(d>>>16)+(da(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function oX(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;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;a=fX(e^a,f^b,e,f)|0;b=H;e=g^e;f=h^f;g=fX((tX(a,b,fX(g^c,h^d,g,h)|0,H,0)|0)^e,H^f,e,f)|0;return(H=H,g)|0}function pX(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+8|0;f=g|0;h=b>>31|((b|0)<0?-1:0)<<1;j=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;k=e>>31|((e|0)<0?-1:0)<<1;l=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=fX(h^a,j^b,h,j)|0;b=H;tX(a,b,fX(k^d,l^e,k,l)|0,H,f)|0;k=fX(c[f>>2]^h,c[f+4>>2]^j,h,j)|0;j=H;i=g;return(H=j,k)|0}function qX(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;a=nX(e,f)|0;c=H;return(H=(da(b,f)|0)+(da(d,e)|0)+c|c&0,a|0|0)|0}function rX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=tX(a,b,c,d,0)|0;return(H=H,a)|0}function sX(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;tX(a,b,d,e,f)|0;i=g;return(H=c[f+4>>2]|0,c[f>>2]|0)|0}function tX(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=a;j=b;i=j;k=d;g=e;l=g;if((i|0)==0){d=(f|0)!=0;if((l|0)==0){if(d){c[f>>2]=(h>>>0)%(k>>>0);c[f+4>>2]=0}l=0;m=(h>>>0)/(k>>>0)>>>0;return(H=l,m)|0}else{if(!d){l=0;m=0;return(H=l,m)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;l=0;m=0;return(H=l,m)|0}}m=(l|0)==0;do{if((k|0)==0){if(m){if((f|0)!=0){c[f>>2]=(i>>>0)%(k>>>0);c[f+4>>2]=0}l=0;m=(i>>>0)/(k>>>0)>>>0;return(H=l,m)|0}if((h|0)==0){if((f|0)!=0){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(l>>>0)}k=0;m=(i>>>0)/(l>>>0)>>>0;return(H=k,m)|0}k=l-1|0;if((k&l|0)==0){if((f|0)!=0){c[f>>2]=a|0;c[f+4>>2]=k&i|b&0}k=0;m=i>>>((mX(l|0)|0)>>>0);return(H=k,m)|0}k=(lX(l|0)|0)-(lX(i|0)|0)|0;if(k>>>0<=30){b=k+1|0;m=31-k|0;j=b;a=i<>>(b>>>0);b=i>>>(b>>>0);l=0;i=h<>2]=a|0;c[f+4>>2]=j|b&0;l=0;m=0;return(H=l,m)|0}else{if(!m){k=(lX(l|0)|0)-(lX(i|0)|0)|0;if(k>>>0<=31){l=k+1|0;m=31-k|0;b=k-31>>31;j=l;a=h>>>(l>>>0)&b|i<>>(l>>>0)&b;l=0;i=h<>2]=a|0;c[f+4>>2]=j|b&0;l=0;m=0;return(H=l,m)|0}l=k-1|0;if((l&k|0)!=0){m=(lX(k|0)|0)+33-(lX(i|0)|0)|0;p=64-m|0;k=32-m|0;n=k>>31;o=m-32|0;b=o>>31;j=m;a=k-1>>31&i>>>(o>>>0)|(i<>>(m>>>0))&b;b=b&i>>>(m>>>0);l=h<>>(o>>>0))&n|h<>31;break}if((f|0)!=0){c[f>>2]=l&h;c[f+4>>2]=0}if((k|0)==1){o=j|b&0;p=a|0|0;return(H=o,p)|0}else{p=mX(k|0)|0;o=i>>>(p>>>0)|0;p=i<<32-p|h>>>(p>>>0)|0;return(H=o,p)|0}}}while(0);if((j|0)==0){m=a;d=0;a=0}else{d=d|0|0;g=g|e&0;e=gX(d,g,-1,-1)|0;h=H;k=b;m=a;a=0;while(1){b=l>>>31|i<<1;l=a|l<<1;i=m<<1|i>>>31|0;k=m>>>31|k<<1|0;fX(e,h,i,k)|0;m=H;p=m>>31|((m|0)<0?-1:0)<<1;a=p&1;m=fX(i,k,p&d,(((m|0)<0?-1:0)>>31|((m|0)<0?-1:0)<<1)&g)|0;k=H;j=j-1|0;if((j|0)==0){break}else{i=b}}i=b;b=k;d=0}g=0;if((f|0)!=0){c[f>>2]=m;c[f+4>>2]=b}o=(l|0)>>>31|(i|g)<<1|(g<<1|l>>>31)&0|d;p=(l<<1|0>>>31)&-2|a;return(H=o,p)|0}function uX(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return dd[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function vX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ed[a&3](b|0,c|0,d|0,e|0,f|0)}function wX(a,b){a=a|0;b=b|0;fd[a&511](b|0)}function xX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;return gd[a&3](b|0,c|0,d|0,+e,+f)|0}function yX(a,b,c){a=a|0;b=b|0;c=c|0;hd[a&127](b|0,c|0)}function zX(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 id[a&3](b|0,c|0,d|0,e|0,f|0,g|0)|0}function AX(a,b){a=a|0;b=b|0;return jd[a&511](b|0)|0}function BX(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;kd[a&1](b|0,c|0,+d,+e)}function CX(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;ld[a&3](b|0,+c,+d,e|0,f|0)}function DX(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=k|0;l=l|0;m=m|0;md[a&1](b|0,c|0,+d,+e,+f,+g,+h,+i,j|0,k|0,l|0,m|0)}function EX(a,b,c,d,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=+m;n=+n;return nd[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,+m,+n)|0}function FX(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;od[a&1](b|0,+c,d|0,e|0)}function GX(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return pd[a&63](b|0,c|0,d|0,e|0)|0}function HX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=+g;h=h|0;i=i|0;j=j|0;return qd[a&1](b|0,c|0,+d,+e,+f,+g,h|0,i|0,j|0)|0}function IX(a,b,c,d,e,f,g,h,i,j,k,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;i=i|0;j=j|0;k=k|0;l=l|0;rd[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)}function JX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return sd[a&127](b|0,c|0,d|0)|0}function KX(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;return td[a&1](b|0,c|0,+d,+e,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0,n|0,o|0,p|0)|0}function LX(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;ud[a&7](b|0,c|0,d|0,e|0,f|0,g|0)}function MX(a,b,c,d,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;vd[a&3](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)}function NX(a,b){a=a|0;b=b|0;return+wd[a&1](b|0)}function OX(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return xd[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function PX(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;yd[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function QX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;zd[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function RX(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;Ad[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function SX(a,b,c){a=a|0;b=b|0;c=c|0;return Bd[a&255](b|0,c|0)|0}function TX(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 Cd[a&63](b|0,c|0,d|0,e|0,f|0)|0}function UX(a,b,c){a=a|0;b=b|0;c=c|0;return+Dd[a&3](b|0,c|0)}function VX(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;Ed[a&3](b|0,c|0,+d,+e,+f,+g,+h,+i)}function WX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return Fd[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function XX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Gd[a&255](b|0,c|0,d|0)}function YX(a){a=a|0;Hd[a&1]()}function ZX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;Id[a&3](b|0,c|0,+d)}function _X(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Jd[a&63](b|0,c|0,d|0,e|0)}function $X(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;ea(0);return 0}function aY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(1)}function bY(a){a=a|0;ea(2)}function cY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;ea(3);return 0}function dY(a,b){a=a|0;b=b|0;ea(4)}function eY(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(5);return 0}function fY(a){a=a|0;ea(6);return 0}function gY(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ea(7)}function hY(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;ea(8)}function iY(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=k|0;l=l|0;ea(9)}function jY(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;m=+m;ea(10);return 0}function kY(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ea(11)}function lY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(12);return 0}function mY(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;ea(13);return 0}function nY(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;ea(14)}function oY(a,b,c){a=a|0;b=b|0;c=c|0;ea(15);return 0}function pY(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;ea(16);return 0}function qY(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(17)}function rY(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;ea(18)}function sY(a){a=a|0;ea(19);return 0.0}function tY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ea(20);return 0}function uY(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;ea(21)}function vY(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ea(22)}function wY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ea(23)}function xY(a,b){a=a|0;b=b|0;ea(24);return 0}function yY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(25);return 0}function zY(a,b){a=a|0;b=b|0;ea(26);return 0.0}function AY(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;ea(27)}function BY(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ea(28);return 0}function CY(a,b,c){a=a|0;b=b|0;c=c|0;ea(29)}function DY(){ea(30)}function EY(){Dc()}function FY(a,b,c){a=a|0;b=b|0;c=+c;ea(31)}function GY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(32)} - - - - -// EMSCRIPTEN_END_FUNCS -var dd=[$X,bQ];var ed=[aY,LM,xW,wW];var fd=[bY,Te,Se,tg,sg,Gg,Fg,Jg,Ig,Pg,Og,Sg,hi,WF,Oi,Pi,hj,ij,tj,sj,kj,jj,vj,wj,rm,Fj,Ej,Hj,Ij,Ql,Nj,Mj,Pj,Qj,dm,Vj,Uj,Xj,Yj,km,ak,Pm,Rm,ik,hk,jk,ok,nk,pk,vk,uk,Bk,Fk,Ek,Gk,Kk,Jk,Mk,Lk,Vk,Uk,Xk,$k,Wk,sl,rl,ul,tl,Hl,Gl,Cm,yn,zn,ln,An,Gn,Fn,Xn,Wn,Yp,Xp,fq,eq,sq,rq,uq,jt,kt,lt,mt,sr,rr,nt,ot,pt,qt,Cr,Br,Kr,Jr,Or,Nr,Rr,Qr,Wr,Vr,_r,Zr,bs,as,fs,es,ks,js,us,ts,zs,ys,Cs,Bs,Fs,Es,Js,Is,Ms,Ls,Ps,Os,Ss,Rs,Ws,Vs,$s,_s,Hu,Gu,Iu,iv,hv,Sv,lv,kv,ov,Tv,Uv,qv,sv,rv,Vv,Wv,xv,wv,zv,Dv,Cv,Gv,Fv,Jv,Iv,Kv,Wx,Vx,ey,dy,oy,ny,Iy,Uy,az,hz,pz,wz,Cz,Kz,Jz,Uz,Tz,bA,aA,iA,hA,pA,oA,zA,yA,DA,CA,GA,FA,PA,OA,UA,TA,ZA,YA,cB,bB,jB,iB,TC,SC,YC,XC,_C,ZC,aD,$C,dD,cD,eD,gD,HD,GD,ID,KD,yE,xE,BE,AE,EE,DE,HE,GE,JE,IE,ME,LE,PE,OE,SE,RE,VE,UE,YE,XE,_E,ZE,xF,yF,wG,xG,vG,yG,MG,NG,QG,PG,$G,_G,rH,qH,wH,vH,DH,HH,LH,KH,OH,TH,SH,$H,_H,cI,sI,uI,vI,NI,MI,tL,xL,QL,VL,cM,kM,mM,vM,xM,zM,AM,BM,MM,SM,UM,XM,_M,dN,hN,tN,dO,jP,IP,SP,UP,cQ,dQ,kQ,IQ,aR,dR,fR,mS,pS,rS,tS,dT,gT,iT,kT,yT,BT,DT,FT,WT,tU,MU,RU,eV,hV,jV,lV,sV,wV,nW,qW,oW,pW,rW,KW,JW,rL,IL,KL,IN,DN,vN,mO,rO,yO,vO,UQ,YR,wU,cW,iW,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY,bY];var gd=[cY,Ph,Bi,cY];var hd=[dY,wg,zh,NF,Tg,Ug,Vg,Xg,Yg,Zg,_g,$g,ah,bh,ii,ji,ki,li,ch,eh,fh,gh,hh,mi,ni,oi,ih,qi,ri,si,ti,ui,vi,wi,kh,mh,nh,oh,ph,qh,Ei,Fi,Hi,th,wh,xh,QF,SF,Ki,Ih,Lh,Nh,Kj,Sj,_j,nm,gk,$y,fz,oz,uz,Bz,Hz,Rz,_z,gA,nA,uA,vL,AL,HM,FS,GS,HS,IS,JS,KS,LS,MS,NS,OS,oT,pT,qT,JT,KT,LT,MT,gU,kU,oU,LL,GN,fW,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY,dY];var id=[eY,UN,$P,eY];var jd=[fY,vg,yg,zg,Ag,Bg,Cg,Dg,Eg,Sh,Uh,Vh,Wh,Qh,Rh,Yh,Zh,_h,ai,bi,ci,di,Mi,XF,Mh,lj,Tl,Ul,Vl,Il,Kl,Ll,Yl,Zl,qm,sm,tm,um,vm,wm,Ml,Nl,Ol,Pl,Rl,Wl,_l,$l,am,bm,cm,em,fm,gm,hm,im,jm,lm,mm,Om,ck,dk,Qm,Sm,fk,om,pm,kk,xm,ym,qk,Hm,wk,yk,Ak,Im,Jm,Km,zm,Am,Nk,Lm,al,cl,Mm,vl,xl,Al,Nm,Bm,Dm,Em,wq,xq,et,gt,ht,it,Ou,Ku,Mu,Ju,Pu,xy,yy,gy,zy,ry,qy,Vy,dC,eC,fC,gC,cC,bz,pC,aC,bC,qC,iz,hC,iC,jC,kC,qz,rC,sC,xz,lC,mC,Dz,tC,uC,Lz,vC,Qz,wC,Vz,xC,yC,zC,cA,AC,BC,CC,jA,DC,EC,FC,qA,nC,oC,AA,EA,QA,VA,_A,dB,lB,AD,BD,CD,DD,ED,hD,iD,jD,aE,LD,ND,$E,aF,bF,cF,dF,eF,fF,gF,hF,iF,jF,kF,nF,oF,lF,mF,pF,qF,rF,sF,tF,uF,dI,eI,fI,gI,hI,iI,jI,kI,lI,mI,nI,oI,pI,qI,rI,lM,CM,QM,YM,LN,MN,NN,sN,TN,XN,YN,eO,CP,JQ,$Q,eR,gR,lS,qS,sS,bT,ZS,cT,hT,jT,wT,xT,CT,ET,RT,PT,sU,dV,iV,kV,GV,HV,IV,JV,XV,VV,LW,zt,At,nu,pu,VR,WR,XR,nR,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY,fY];var kd=[gY,uh];var ld=[hY,OF,PF,hY];var md=[iY,rh];var nd=[jY,yi];var od=[kY,Hg];var pd=[lY,Th,Kg,vq,VI,WL,gM,nM,oM,wM,GM,WM,fO,gO,mP,xP,JP,ZP,yP,KQ,LQ,OQ,PQ,YQ,hR,iR,uS,vS,$S,WS,lT,rT,GT,ST,XT,SU,mV,nV,TV,PV,NL,qN,eK,UR,dW,hW,lY,lY,lY,lY,lY,lY,lY,lY,lY,lY,lY,lY,lY,lY,lY,lY,lY,lY];var qd=[mY,sh];var rd=[nY,Xh];var sd=[oY,ug,zi,Ai,Ci,Oh,Di,oj,pj,mj,Xl,lk,rk,Ck,Hk,Sk,ol,Bl,wl,Fm,kD,OD,KG,LG,sH,UI,tK,$L,aM,hM,qM,rM,sM,tM,uM,FM,PM,RM,VM,bO,iO,nP,pP,qP,KP,MP,aQ,AP,eQ,gQ,iQ,lQ,mQ,vP,wP,NQ,XQ,iS,kS,dS,SS,TS,VS,tT,eU,iU,mU,qU,bV,cV,RV,sW,Ve,We,Ch,Bh,Eh,HN,uK,BR,wR,ER,FR,xR,yR,CR,DR,IR,JR,KR,LR,zS,eW,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY,oY];var td=[pY,gi];var ud=[qY,Kh,zW,yW,kO,lO,pO,qO];var vd=[rY,Fh,Gh,rY];var wd=[sY,ft];var xd=[tY,fy,py,tY];var yd=[uY,Hh];var zd=[vY,Ah];var Ad=[wY,Dh];var Bd=[xY,xg,$h,ei,fi,Ji,Qi,gj,Sl,mk,sk,Dk,Ik,Tk,pl,Cl,Gm,Bn,Nu,lD,PD,wF,zG,tI,RI,SI,TI,sL,uL,wL,yL,BL,PL,RL,SL,TL,XL,YL,bM,dM,eM,iM,DM,NM,ZM,$M,aN,bN,cN,eN,fN,gN,iN,jN,VN,WN,SN,$N,cO,AO,BO,CO,DO,EO,FO,GO,HO,IO,JO,KO,LO,MO,NO,OO,PO,QO,RO,SO,TO,UO,VO,WO,XO,YO,ZO,_O,$O,aP,bP,cP,dP,eP,fP,gP,hP,iP,kP,lP,oP,rP,sP,tP,LP,NP,OP,PP,QP,RP,TP,VP,WP,XP,YP,_P,fQ,hQ,jQ,EP,zP,uP,FQ,HQ,VQ,WQ,bR,kR,lR,jS,nS,wS,yS,aT,XS,YS,_S,RS,US,eT,mT,uT,vT,sT,zT,HT,IT,TT,NT,OT,QT,UT,YT,ZT,$T,aU,bU,cU,dU,fU,hU,jU,lU,nU,pU,LU,NU,OU,PU,TU,UU,fV,pV,qV,rV,tV,uV,vV,xV,yV,WV,UV,SV,QV,yh,Dq,Xq,gr,cv,ly,my,HK,JL,lN,oN,wN,ZN,tQ,uQ,oR,rR,BS,AS,nT,aV,zV,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY,xY];var Cd=[yY,fj,Gj,Oj,Wj,bk,vF,dL,eL,fL,gL,hL,iL,jL,kL,lL,UL,sK,fM,jM,EM,JM,KM,GP,HP,DP,nQ,FP,cR,jR,oS,xS,fT,AT,VT,rU,QU,gV,oV,rN,WU,ZU,$U,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY,yY];var Dd=[zY,yH,QI,zY];var Ed=[AY,Wg,vh,AY];var Fd=[BY,xH,OI,PI,TM,BY,BY,BY];var Gd=[CY,Re,Rg,Gi,Ii,RF,TF,UF,VF,Li,Jh,Ni,nj,Jl,xj,Jj,Rj,Zj,ek,zk,zl,Gr,Sr,Xr,cs,gs,qs,vs,Gs,Ts,Xs,Yv,Zv,_v,$v,aw,bw,cw,dw,ew,fw,gw,hw,iw,jw,kw,lw,mw,nw,ow,pw,qw,rw,sw,tw,uw,vw,ww,xw,yw,zw,Aw,Bw,Cw,Dw,Ew,Fw,Gw,Hw,Iw,Jw,Kw,Lw,Mw,Nw,Ow,Pw,Qw,Rw,Sw,Tw,Uw,Vw,Ww,Xw,Yw,Zw,_w,$w,ax,bx,cx,dx,ex,fx,gx,hx,ix,jx,kx,lx,Wy,Yy,_y,cz,dz,ez,jz,lz,nz,rz,sz,tz,yz,zz,Az,Ez,Fz,Gz,Mz,Nz,Pz,Wz,Xz,Zz,dA,eA,fA,kA,lA,mA,rA,sA,tA,QD,IH,MH,PH,UH,aI,zL,pN,aO,hO,GQ,MQ,EN,FN,zN,jO,oO,pR,qR,sR,tR,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY,CY];var Hd=[DY,EY];var Id=[FY,pi,xi,FY];var Jd=[GY,Ri,Si,Ti,Ui,Vi,Wi,Xi,Yi,Zi,_i,$i,aj,bj,cj,dj,Xy,Zy,Sy,_B,$B,kz,mz,Iz,Oz,Sz,Yz,$z,yM,IM,OM,tW,uW,xN,yN,vJ,RQ,MR,NR,OR,PR,QR,RR,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY,GY];return{_saveSetjmp:YW,_memcmp:iX,_strncasecmp:XW,_strcat:cX,_free:BW,_main:_d,_realloc:CW,_i64Add:gX,_memmove:aX,_tolower:WW,_strlen:ZW,_memset:bX,_malloc:AW,_bitshift64Ashr:_W,_memcpy:$W,_strncpy:hX,_bitshift64Lshr:jX,_bitshift64Shl:dX,_i64Subtract:fX,_strcpy:eX,_testSetjmp:kX,runPostSets:VW,stackAlloc:Kd,stackSave:Ld,stackRestore:Md,setThrew:Nd,setTempRet0:Qd,setTempRet1:Rd,setTempRet2:Sd,setTempRet3:Td,setTempRet4:Ud,setTempRet5:Vd,setTempRet6:Wd,setTempRet7:Xd,setTempRet8:Yd,setTempRet9:Zd,dynCall_iiiiiiii:uX,dynCall_viiiii:vX,dynCall_vi:wX,dynCall_iiiidd:xX,dynCall_vii:yX,dynCall_iiiiiii:zX,dynCall_ii:AX,dynCall_viidd:BX,dynCall_viddii:CX,dynCall_viiddddddiiii:DX,dynCall_iiiiiiiiiiiidd:EX,dynCall_vidii:FX,dynCall_iiiii:GX,dynCall_iiiddddiii:HX,dynCall_viiiiiiiiiii:IX,dynCall_iiii:JX,dynCall_iiiddiiiiiiiiiii:KX,dynCall_viiiiii:LX,dynCall_viiiiiiiiiiiii:MX,dynCall_di:NX,dynCall_iiiiiiiiiii:OX,dynCall_viiiiiii:PX,dynCall_viiiiiiiii:QX,dynCall_viiiiiiiiii:RX,dynCall_iii:SX,dynCall_iiiiii:TX,dynCall_dii:UX,dynCall_viidddddd:VX,dynCall_iiiiiiiiii:WX,dynCall_viii:XX,dynCall_v:YX,dynCall_viid:ZX,dynCall_viiii:_X}}) - - -// EMSCRIPTEN_END_ASM -({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "invoke_iiiiiiii": invoke_iiiiiiii, "invoke_viiiii": invoke_viiiii, "invoke_vi": invoke_vi, "invoke_iiiidd": invoke_iiiidd, "invoke_vii": invoke_vii, "invoke_iiiiiii": invoke_iiiiiii, "invoke_ii": invoke_ii, "invoke_viidd": invoke_viidd, "invoke_viddii": invoke_viddii, "invoke_viiddddddiiii": invoke_viiddddddiiii, "invoke_iiiiiiiiiiiidd": invoke_iiiiiiiiiiiidd, "invoke_vidii": invoke_vidii, "invoke_iiiii": invoke_iiiii, "invoke_iiiddddiii": invoke_iiiddddiii, "invoke_viiiiiiiiiii": invoke_viiiiiiiiiii, "invoke_iiii": invoke_iiii, "invoke_iiiddiiiiiiiiiii": invoke_iiiddiiiiiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viiiiiiiiiiiii": invoke_viiiiiiiiiiiii, "invoke_di": invoke_di, "invoke_iiiiiiiiiii": invoke_iiiiiiiiiii, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_viiiiiiiiii": invoke_viiiiiiiiii, "invoke_iii": invoke_iii, "invoke_iiiiii": invoke_iiiiii, "invoke_dii": invoke_dii, "invoke_viidddddd": invoke_viidddddd, "invoke_iiiiiiiiii": invoke_iiiiiiiiii, "invoke_viii": invoke_viii, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_isalnum": _isalnum, "_fabs": _fabs, "_strrchr": _strrchr, "_fread": _fread, "_memchr": _memchr, "_inflateReset": _inflateReset, "__reallyNegative": __reallyNegative, "_fstat": _fstat, "___assert_fail": ___assert_fail, "__ZSt18uncaught_exceptionv": __ZSt18uncaught_exceptionv, "_longjmp": _longjmp, "_fsync": _fsync, "_sbrk": _sbrk, "_sysconf": _sysconf, "_close": _close, "_cos": _cos, "_readdir": _readdir, "_puts": _puts, "_FcPatternBuild": _FcPatternBuild, "_unlink": _unlink, "_write": _write, "_ftell": _ftell, "_rand": _rand, "__ZNSt9exceptionD2Ev": __ZNSt9exceptionD2Ev, "___cxa_does_inherit": ___cxa_does_inherit, "_strstr": _strstr, "_FcPatternDestroy": _FcPatternDestroy, "_qsort": _qsort, "_closedir": _closedir, "_FcPatternGetInteger": _FcPatternGetInteger, "_send": _send, "_pow": _pow, "_atan2": _atan2, "___cxa_is_number_type": ___cxa_is_number_type, "_FcConfigSubstitute": _FcConfigSubstitute, "_fcntl": _fcntl, "___cxa_find_matching_catch": ___cxa_find_matching_catch, "_opendir": _opendir, "_isalpha": _isalpha, "_strtol": _strtol, "___setErrNo": ___setErrNo, "___resumeException": ___resumeException, "_srand": _srand, "_strchr": _strchr, "_ceil": _ceil, "_putchar": _putchar, "___buildEnvironment": ___buildEnvironment, "_localeconv": _localeconv, "_printf": _printf, "_sprintf": _sprintf, "_strtok_r": _strtok_r, "_stat": _stat, "_FcPatternAddInteger": _FcPatternAddInteger, "_getpwnam": _getpwnam, "_read": _read, "_fwrite": _fwrite, "_FcPatternGetString": _FcPatternGetString, "_time": _time, "_pthread_mutex_lock": _pthread_mutex_lock, "_gettimeofday": _gettimeofday, "_munmap": _munmap, "_mmap": _mmap, "_exit": _exit, "_readdir_r": _readdir_r, "_inflate": _inflate, "_fmod": _fmod, "_lseek": _lseek, "_vfprintf": _vfprintf, "___cxa_allocate_exception": ___cxa_allocate_exception, "_asin": _asin, "_atoi": _atoi, "_pwrite": _pwrite, "_open": _open, "_snprintf": _snprintf, "_FcFontSort": _FcFontSort, "_fseek": _fseek, "_pthread_mutex_destroy": _pthread_mutex_destroy, "_isxdigit": _isxdigit, "_fclose": _fclose, "__parseInt": __parseInt, "_log": _log, "_recv": _recv, "_fgetc": _fgetc, "__getFloat": __getFloat, "_fputc": _fputc, "_abort": _abort, "___cxa_throw": ___cxa_throw, "_strncmp": _strncmp, "_inflateInit2_": _inflateInit2_, "_isspace": _isspace, "_fopen": _fopen, "_floor": _floor, "_getgid": _getgid, "_sin": _sin, "_acos": _acos, "___cxa_pure_virtual": ___cxa_pure_virtual, "_ungetc": _ungetc, "_fflush": _fflush, "_fprintf": _fprintf, "_sscanf": _sscanf, "_strdup": _strdup, "__exit": __exit, "_strcspn": _strcspn, "_log10": _log10, "_pthread_mutex_unlock": _pthread_mutex_unlock, "_pread": _pread, "_FcDefaultSubstitute": _FcDefaultSubstitute, "___errno_location": ___errno_location, "_strcmp": _strcmp, "_getpwuid": _getpwuid, "_copysign": _copysign, "_getenv": _getenv, "__scanString": __scanString, "_FcFontSetDestroy": _FcFontSetDestroy, "_inflateEnd": _inflateEnd, "_strerror": _strerror, "_emscripten_longjmp": _emscripten_longjmp, "__formatString": __formatString, "_fputs": _fputs, "_sqrt": _sqrt, "_pthread_mutex_init": _pthread_mutex_init, "_strerror_r": _strerror_r, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "cttz_i8": cttz_i8, "ctlz_i8": ctlz_i8, "NaN": NaN, "Infinity": Infinity, "__ZTISt9exception": __ZTISt9exception, "_stderr": _stderr, "_stdin": _stdin, "_stdout": _stdout }, buffer); -var _saveSetjmp = Module["_saveSetjmp"] = asm["_saveSetjmp"]; -var _memcmp = Module["_memcmp"] = asm["_memcmp"]; -var _strncasecmp = Module["_strncasecmp"] = asm["_strncasecmp"]; -var _strcat = Module["_strcat"] = asm["_strcat"]; -var _free = Module["_free"] = asm["_free"]; -var _main = Module["_main"] = asm["_main"]; -var _realloc = Module["_realloc"] = asm["_realloc"]; -var _i64Add = Module["_i64Add"] = asm["_i64Add"]; -var _memmove = Module["_memmove"] = asm["_memmove"]; -var _tolower = Module["_tolower"] = asm["_tolower"]; -var _strlen = Module["_strlen"] = asm["_strlen"]; -var _memset = Module["_memset"] = asm["_memset"]; -var _malloc = Module["_malloc"] = asm["_malloc"]; -var _bitshift64Ashr = Module["_bitshift64Ashr"] = asm["_bitshift64Ashr"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var _strncpy = Module["_strncpy"] = asm["_strncpy"]; -var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"]; -var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"]; -var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"]; -var _strcpy = Module["_strcpy"] = asm["_strcpy"]; -var _testSetjmp = Module["_testSetjmp"] = asm["_testSetjmp"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; -var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = asm["dynCall_iiiiiiii"]; -var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"]; -var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"]; -var dynCall_iiiidd = Module["dynCall_iiiidd"] = asm["dynCall_iiiidd"]; -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_viidd = Module["dynCall_viidd"] = asm["dynCall_viidd"]; -var dynCall_viddii = Module["dynCall_viddii"] = asm["dynCall_viddii"]; -var dynCall_viiddddddiiii = Module["dynCall_viiddddddiiii"] = asm["dynCall_viiddddddiiii"]; -var dynCall_iiiiiiiiiiiidd = Module["dynCall_iiiiiiiiiiiidd"] = asm["dynCall_iiiiiiiiiiiidd"]; -var dynCall_vidii = Module["dynCall_vidii"] = asm["dynCall_vidii"]; -var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"]; -var dynCall_iiiddddiii = Module["dynCall_iiiddddiii"] = asm["dynCall_iiiddddiii"]; -var dynCall_viiiiiiiiiii = Module["dynCall_viiiiiiiiiii"] = asm["dynCall_viiiiiiiiiii"]; -var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"]; -var dynCall_iiiddiiiiiiiiiii = Module["dynCall_iiiddiiiiiiiiiii"] = asm["dynCall_iiiddiiiiiiiiiii"]; -var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"]; -var dynCall_viiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiii"] = asm["dynCall_viiiiiiiiiiiii"]; -var dynCall_di = Module["dynCall_di"] = asm["dynCall_di"]; -var dynCall_iiiiiiiiiii = Module["dynCall_iiiiiiiiiii"] = asm["dynCall_iiiiiiiiiii"]; -var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = asm["dynCall_viiiiiii"]; -var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = asm["dynCall_viiiiiiiii"]; -var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = asm["dynCall_viiiiiiiiii"]; -var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"]; -var dynCall_iiiiii = Module["dynCall_iiiiii"] = asm["dynCall_iiiiii"]; -var dynCall_dii = Module["dynCall_dii"] = asm["dynCall_dii"]; -var dynCall_viidddddd = Module["dynCall_viidddddd"] = asm["dynCall_viidddddd"]; -var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = asm["dynCall_iiiiiiiiii"]; -var dynCall_viii = Module["dynCall_viii"] = asm["dynCall_viii"]; -var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"]; -var dynCall_viid = Module["dynCall_viid"] = asm["dynCall_viid"]; -var dynCall_viiii = Module["dynCall_viiii"] = asm["dynCall_viiii"]; - -Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; -Runtime.stackSave = function() { return asm['stackSave']() }; -Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; - - -// TODO: strip out parts of this we do not need - -//======= begin closure i64 code ======= - -// Copyright 2009 The Closure Library Authors. All Rights Reserved. -// -// 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 Defines a Long class for representing a 64-bit two's-complement - * integer value, which faithfully simulates the behavior of a Java "long". This - * implementation is derived from LongLib in GWT. - * - */ - -var i64Math = (function() { // Emscripten wrapper - var goog = { math: {} }; - - - /** - * Constructs a 64-bit two's-complement integer, given its low and high 32-bit - * values as *signed* integers. See the from* functions below for more - * convenient ways of constructing Longs. - * - * The internal representation of a long is the two given signed, 32-bit values. - * We use 32-bit pieces because these are the size of integers on which - * Javascript performs bit-operations. For operations like addition and - * multiplication, we split each number into 16-bit pieces, which can easily be - * multiplied within Javascript's floating-point representation without overflow - * or change in sign. - * - * In the algorithms below, we frequently reduce the negative case to the - * positive case by negating the input(s) and then post-processing the result. - * Note that we must ALWAYS check specially whether those values are MIN_VALUE - * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - * a positive number, it overflows back into a negative). Not handling this - * case would often result in infinite recursion. - * - * @param {number} low The low (signed) 32 bits of the long. - * @param {number} high The high (signed) 32 bits of the long. - * @constructor - */ - goog.math.Long = function(low, high) { - /** - * @type {number} - * @private - */ - this.low_ = low | 0; // force into 32 signed bits. - - /** - * @type {number} - * @private - */ - this.high_ = high | 0; // force into 32 signed bits. - }; - - - // NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the - // from* methods on which they depend. - - - /** - * A cache of the Long representations of small integer values. - * @type {!Object} - * @private - */ - goog.math.Long.IntCache_ = {}; - - - /** - * Returns a Long representing the given (32-bit) integer value. - * @param {number} value The 32-bit integer in question. - * @return {!goog.math.Long} The corresponding Long value. - */ - goog.math.Long.fromInt = function(value) { - if (-128 <= value && value < 128) { - var cachedObj = goog.math.Long.IntCache_[value]; - if (cachedObj) { - return cachedObj; - } - } - - var obj = new goog.math.Long(value | 0, value < 0 ? -1 : 0); - if (-128 <= value && value < 128) { - goog.math.Long.IntCache_[value] = obj; - } - return obj; - }; - - - /** - * Returns a Long representing the given value, provided that it is a finite - * number. Otherwise, zero is returned. - * @param {number} value The number in question. - * @return {!goog.math.Long} The corresponding Long value. - */ - goog.math.Long.fromNumber = function(value) { - if (isNaN(value) || !isFinite(value)) { - return goog.math.Long.ZERO; - } else if (value <= -goog.math.Long.TWO_PWR_63_DBL_) { - return goog.math.Long.MIN_VALUE; - } else if (value + 1 >= goog.math.Long.TWO_PWR_63_DBL_) { - return goog.math.Long.MAX_VALUE; - } else if (value < 0) { - return goog.math.Long.fromNumber(-value).negate(); - } else { - return new goog.math.Long( - (value % goog.math.Long.TWO_PWR_32_DBL_) | 0, - (value / goog.math.Long.TWO_PWR_32_DBL_) | 0); - } - }; - - - /** - * Returns a Long representing the 64-bit integer that comes by concatenating - * the given high and low bits. Each is assumed to use 32 bits. - * @param {number} lowBits The low 32-bits. - * @param {number} highBits The high 32-bits. - * @return {!goog.math.Long} The corresponding Long value. - */ - goog.math.Long.fromBits = function(lowBits, highBits) { - return new goog.math.Long(lowBits, highBits); - }; - - - /** - * Returns a Long representation of the given string, written using the given - * radix. - * @param {string} str The textual representation of the Long. - * @param {number=} opt_radix The radix in which the text is written. - * @return {!goog.math.Long} The corresponding Long value. - */ - goog.math.Long.fromString = function(str, opt_radix) { - if (str.length == 0) { - throw Error('number format error: empty string'); - } - - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (str.charAt(0) == '-') { - return goog.math.Long.fromString(str.substring(1), radix).negate(); - } else if (str.indexOf('-') >= 0) { - throw Error('number format error: interior "-" character: ' + str); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 8)); - - var result = goog.math.Long.ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = goog.math.Long.fromNumber(Math.pow(radix, size)); - result = result.multiply(power).add(goog.math.Long.fromNumber(value)); - } else { - result = result.multiply(radixToPower); - result = result.add(goog.math.Long.fromNumber(value)); - } - } - return result; - }; - - - // NOTE: the compiler should inline these constant values below and then remove - // these variables, so there should be no runtime penalty for these. - - - /** - * Number used repeated below in calculations. This must appear before the - * first call to any from* function below. - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_16_DBL_ = 1 << 16; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_24_DBL_ = 1 << 24; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_32_DBL_ = - goog.math.Long.TWO_PWR_16_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_31_DBL_ = - goog.math.Long.TWO_PWR_32_DBL_ / 2; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_48_DBL_ = - goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_64_DBL_ = - goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_32_DBL_; - - - /** - * @type {number} - * @private - */ - goog.math.Long.TWO_PWR_63_DBL_ = - goog.math.Long.TWO_PWR_64_DBL_ / 2; - - - /** @type {!goog.math.Long} */ - goog.math.Long.ZERO = goog.math.Long.fromInt(0); - - - /** @type {!goog.math.Long} */ - goog.math.Long.ONE = goog.math.Long.fromInt(1); - - - /** @type {!goog.math.Long} */ - goog.math.Long.NEG_ONE = goog.math.Long.fromInt(-1); - - - /** @type {!goog.math.Long} */ - goog.math.Long.MAX_VALUE = - goog.math.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); - - - /** @type {!goog.math.Long} */ - goog.math.Long.MIN_VALUE = goog.math.Long.fromBits(0, 0x80000000 | 0); - - - /** - * @type {!goog.math.Long} - * @private - */ - goog.math.Long.TWO_PWR_24_ = goog.math.Long.fromInt(1 << 24); - - - /** @return {number} The value, assuming it is a 32-bit integer. */ - goog.math.Long.prototype.toInt = function() { - return this.low_; - }; - - - /** @return {number} The closest floating-point representation to this value. */ - goog.math.Long.prototype.toNumber = function() { - return this.high_ * goog.math.Long.TWO_PWR_32_DBL_ + - this.getLowBitsUnsigned(); - }; - - - /** - * @param {number=} opt_radix The radix in which the text should be written. - * @return {string} The textual representation of this value. - */ - goog.math.Long.prototype.toString = function(opt_radix) { - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (this.isZero()) { - return '0'; - } - - if (this.isNegative()) { - if (this.equals(goog.math.Long.MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = goog.math.Long.fromNumber(radix); - var div = this.div(radixLong); - var rem = div.multiply(radixLong).subtract(this); - return div.toString(radix) + rem.toInt().toString(radix); - } else { - return '-' + this.negate().toString(radix); - } - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 6)); - - var rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); - var digits = intval.toString(radix); - - rem = remDiv; - if (rem.isZero()) { - return digits + result; - } else { - while (digits.length < 6) { - digits = '0' + digits; - } - result = '' + digits + result; - } - } - }; - - - /** @return {number} The high 32-bits as a signed value. */ - goog.math.Long.prototype.getHighBits = function() { - return this.high_; - }; - - - /** @return {number} The low 32-bits as a signed value. */ - goog.math.Long.prototype.getLowBits = function() { - return this.low_; - }; - - - /** @return {number} The low 32-bits as an unsigned value. */ - goog.math.Long.prototype.getLowBitsUnsigned = function() { - return (this.low_ >= 0) ? - this.low_ : goog.math.Long.TWO_PWR_32_DBL_ + this.low_; - }; - - - /** - * @return {number} Returns the number of bits needed to represent the absolute - * value of this Long. - */ - goog.math.Long.prototype.getNumBitsAbs = function() { - if (this.isNegative()) { - if (this.equals(goog.math.Long.MIN_VALUE)) { - return 64; - } else { - return this.negate().getNumBitsAbs(); - } - } else { - var val = this.high_ != 0 ? this.high_ : this.low_; - for (var bit = 31; bit > 0; bit--) { - if ((val & (1 << bit)) != 0) { - break; - } - } - return this.high_ != 0 ? bit + 33 : bit + 1; - } - }; - - - /** @return {boolean} Whether this value is zero. */ - goog.math.Long.prototype.isZero = function() { - return this.high_ == 0 && this.low_ == 0; - }; - - - /** @return {boolean} Whether this value is negative. */ - goog.math.Long.prototype.isNegative = function() { - return this.high_ < 0; - }; - - - /** @return {boolean} Whether this value is odd. */ - goog.math.Long.prototype.isOdd = function() { - return (this.low_ & 1) == 1; - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long equals the other. - */ - goog.math.Long.prototype.equals = function(other) { - return (this.high_ == other.high_) && (this.low_ == other.low_); - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long does not equal the other. - */ - goog.math.Long.prototype.notEquals = function(other) { - return (this.high_ != other.high_) || (this.low_ != other.low_); - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long is less than the other. - */ - goog.math.Long.prototype.lessThan = function(other) { - return this.compare(other) < 0; - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long is less than or equal to the other. - */ - goog.math.Long.prototype.lessThanOrEqual = function(other) { - return this.compare(other) <= 0; - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long is greater than the other. - */ - goog.math.Long.prototype.greaterThan = function(other) { - return this.compare(other) > 0; - }; - - - /** - * @param {goog.math.Long} other Long to compare against. - * @return {boolean} Whether this Long is greater than or equal to the other. - */ - goog.math.Long.prototype.greaterThanOrEqual = function(other) { - return this.compare(other) >= 0; - }; - - - /** - * Compares this Long with the given one. - * @param {goog.math.Long} other Long to compare against. - * @return {number} 0 if they are the same, 1 if the this is greater, and -1 - * if the given one is greater. - */ - goog.math.Long.prototype.compare = function(other) { - if (this.equals(other)) { - return 0; - } - - var thisNeg = this.isNegative(); - var otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) { - return -1; - } - if (!thisNeg && otherNeg) { - return 1; - } - - // at this point, the signs are the same, so subtraction will not overflow - if (this.subtract(other).isNegative()) { - return -1; - } else { - return 1; - } - }; - - - /** @return {!goog.math.Long} The negation of this value. */ - goog.math.Long.prototype.negate = function() { - if (this.equals(goog.math.Long.MIN_VALUE)) { - return goog.math.Long.MIN_VALUE; - } else { - return this.not().add(goog.math.Long.ONE); - } - }; - - - /** - * Returns the sum of this and the given Long. - * @param {goog.math.Long} other Long to add to this one. - * @return {!goog.math.Long} The sum of this and the given Long. - */ - goog.math.Long.prototype.add = function(other) { - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); - }; - - - /** - * Returns the difference of this and the given Long. - * @param {goog.math.Long} other Long to subtract from this. - * @return {!goog.math.Long} The difference of this and the given Long. - */ - goog.math.Long.prototype.subtract = function(other) { - return this.add(other.negate()); - }; - - - /** - * Returns the product of this and the given long. - * @param {goog.math.Long} other Long to multiply with this. - * @return {!goog.math.Long} The product of this and the other. - */ - goog.math.Long.prototype.multiply = function(other) { - if (this.isZero()) { - return goog.math.Long.ZERO; - } else if (other.isZero()) { - return goog.math.Long.ZERO; - } - - if (this.equals(goog.math.Long.MIN_VALUE)) { - return other.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; - } else if (other.equals(goog.math.Long.MIN_VALUE)) { - return this.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().multiply(other.negate()); - } else { - return this.negate().multiply(other).negate(); - } - } else if (other.isNegative()) { - return this.multiply(other.negate()).negate(); - } - - // If both longs are small, use float multiplication - if (this.lessThan(goog.math.Long.TWO_PWR_24_) && - other.lessThan(goog.math.Long.TWO_PWR_24_)) { - return goog.math.Long.fromNumber(this.toNumber() * other.toNumber()); - } - - // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); - }; - - - /** - * Returns this Long divided by the given one. - * @param {goog.math.Long} other Long by which to divide. - * @return {!goog.math.Long} This Long divided by the given one. - */ - goog.math.Long.prototype.div = function(other) { - if (other.isZero()) { - throw Error('division by zero'); - } else if (this.isZero()) { - return goog.math.Long.ZERO; - } - - if (this.equals(goog.math.Long.MIN_VALUE)) { - if (other.equals(goog.math.Long.ONE) || - other.equals(goog.math.Long.NEG_ONE)) { - return goog.math.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - } else if (other.equals(goog.math.Long.MIN_VALUE)) { - return goog.math.Long.ONE; - } else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shiftRight(1); - var approx = halfThis.div(other).shiftLeft(1); - if (approx.equals(goog.math.Long.ZERO)) { - return other.isNegative() ? goog.math.Long.ONE : goog.math.Long.NEG_ONE; - } else { - var rem = this.subtract(other.multiply(approx)); - var result = approx.add(rem.div(other)); - return result; - } - } - } else if (other.equals(goog.math.Long.MIN_VALUE)) { - return goog.math.Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().div(other.negate()); - } else { - return this.negate().div(other).negate(); - } - } else if (other.isNegative()) { - return this.div(other.negate()).negate(); - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - var res = goog.math.Long.ZERO; - var rem = this; - while (rem.greaterThanOrEqual(other)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - var approxRes = goog.math.Long.fromNumber(approx); - var approxRem = approxRes.multiply(other); - while (approxRem.isNegative() || approxRem.greaterThan(rem)) { - approx -= delta; - approxRes = goog.math.Long.fromNumber(approx); - approxRem = approxRes.multiply(other); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) { - approxRes = goog.math.Long.ONE; - } - - res = res.add(approxRes); - rem = rem.subtract(approxRem); - } - return res; - }; - - - /** - * Returns this Long modulo the given one. - * @param {goog.math.Long} other Long by which to mod. - * @return {!goog.math.Long} This Long modulo the given one. - */ - goog.math.Long.prototype.modulo = function(other) { - return this.subtract(this.div(other).multiply(other)); - }; - - - /** @return {!goog.math.Long} The bitwise-NOT of this value. */ - goog.math.Long.prototype.not = function() { - return goog.math.Long.fromBits(~this.low_, ~this.high_); - }; - - - /** - * Returns the bitwise-AND of this Long and the given one. - * @param {goog.math.Long} other The Long with which to AND. - * @return {!goog.math.Long} The bitwise-AND of this and the other. - */ - goog.math.Long.prototype.and = function(other) { - return goog.math.Long.fromBits(this.low_ & other.low_, - this.high_ & other.high_); - }; - - - /** - * Returns the bitwise-OR of this Long and the given one. - * @param {goog.math.Long} other The Long with which to OR. - * @return {!goog.math.Long} The bitwise-OR of this and the other. - */ - goog.math.Long.prototype.or = function(other) { - return goog.math.Long.fromBits(this.low_ | other.low_, - this.high_ | other.high_); - }; - - - /** - * Returns the bitwise-XOR of this Long and the given one. - * @param {goog.math.Long} other The Long with which to XOR. - * @return {!goog.math.Long} The bitwise-XOR of this and the other. - */ - goog.math.Long.prototype.xor = function(other) { - return goog.math.Long.fromBits(this.low_ ^ other.low_, - this.high_ ^ other.high_); - }; - - - /** - * Returns this Long with bits shifted to the left by the given amount. - * @param {number} numBits The number of bits by which to shift. - * @return {!goog.math.Long} This shifted to the left by the given amount. - */ - goog.math.Long.prototype.shiftLeft = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var low = this.low_; - if (numBits < 32) { - var high = this.high_; - return goog.math.Long.fromBits( - low << numBits, - (high << numBits) | (low >>> (32 - numBits))); - } else { - return goog.math.Long.fromBits(0, low << (numBits - 32)); - } - } - }; - - - /** - * Returns this Long with bits shifted to the right by the given amount. - * @param {number} numBits The number of bits by which to shift. - * @return {!goog.math.Long} This shifted to the right by the given amount. - */ - goog.math.Long.prototype.shiftRight = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return goog.math.Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >> numBits); - } else { - return goog.math.Long.fromBits( - high >> (numBits - 32), - high >= 0 ? 0 : -1); - } - } - }; - - - /** - * Returns this Long with bits shifted to the right by the given amount, with - * the new top bits matching the current sign bit. - * @param {number} numBits The number of bits by which to shift. - * @return {!goog.math.Long} This shifted to the right by the given amount, with - * zeros placed into the new leading bits. - */ - goog.math.Long.prototype.shiftRightUnsigned = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return goog.math.Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >>> numBits); - } else if (numBits == 32) { - return goog.math.Long.fromBits(high, 0); - } else { - return goog.math.Long.fromBits(high >>> (numBits - 32), 0); - } - } - }; - - //======= begin jsbn ======= - - var navigator = { appName: 'Modern Browser' }; // polyfill a little - - // Copyright (c) 2005 Tom Wu - // All Rights Reserved. - // http://www-cs-students.stanford.edu/~tjw/jsbn/ - - /* - * Copyright (c) 2003-2005 Tom Wu - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF - * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * In addition, the following condition applies: - * - * All redistributions must retain an intact copy of this copyright notice - * and disclaimer. - */ - - // Basic JavaScript BN library - subset useful for RSA encryption. - - // Bits per digit - var dbits; - - // JavaScript engine analysis - var canary = 0xdeadbeefcafe; - var j_lm = ((canary&0xffffff)==0xefcafe); - - // (public) Constructor - function BigInteger(a,b,c) { - if(a != null) - if("number" == typeof a) this.fromNumber(a,b,c); - else if(b == null && "string" != typeof a) this.fromString(a,256); - else this.fromString(a,b); - } - - // return new, unset BigInteger - function nbi() { return new BigInteger(null); } - - // am: Compute w_j += (x*this_i), propagate carries, - // c is initial carry, returns final carry. - // c < 3*dvalue, x < 2*dvalue, this_i < dvalue - // We need to select the fastest one that works in this environment. - - // am1: use a single mult and divide to get the high bits, - // max digit bits should be 26 because - // max internal value = 2*dvalue^2-2*dvalue (< 2^53) - function am1(i,x,w,j,c,n) { - while(--n >= 0) { - var v = x*this[i++]+w[j]+c; - c = Math.floor(v/0x4000000); - w[j++] = v&0x3ffffff; - } - return c; - } - // am2 avoids a big mult-and-extract completely. - // Max digit bits should be <= 30 because we do bitwise ops - // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) - function am2(i,x,w,j,c,n) { - var xl = x&0x7fff, xh = x>>15; - while(--n >= 0) { - var l = this[i]&0x7fff; - var h = this[i++]>>15; - var m = xh*l+h*xl; - l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); - c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); - w[j++] = l&0x3fffffff; - } - return c; - } - // Alternately, set max digit bits to 28 since some - // browsers slow down when dealing with 32-bit numbers. - function am3(i,x,w,j,c,n) { - var xl = x&0x3fff, xh = x>>14; - while(--n >= 0) { - var l = this[i]&0x3fff; - var h = this[i++]>>14; - var m = xh*l+h*xl; - l = xl*l+((m&0x3fff)<<14)+w[j]+c; - c = (l>>28)+(m>>14)+xh*h; - w[j++] = l&0xfffffff; - } - return c; - } - if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) { - BigInteger.prototype.am = am2; - dbits = 30; - } - else if(j_lm && (navigator.appName != "Netscape")) { - BigInteger.prototype.am = am1; - dbits = 26; - } - else { // Mozilla/Netscape seems to prefer am3 - BigInteger.prototype.am = am3; - dbits = 28; - } - - BigInteger.prototype.DB = dbits; - BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; - r.t = this.t; - r.s = this.s; - } - - // (protected) set from integer value x, -DV <= x < DV - function bnpFromInt(x) { - this.t = 1; - this.s = (x<0)?-1:0; - if(x > 0) this[0] = x; - else if(x < -1) this[0] = x+DV; - else this.t = 0; - } - - // return bigint initialized to value - function nbv(i) { var r = nbi(); r.fromInt(i); return r; } - - // (protected) set from string and radix - function bnpFromString(s,b) { - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 256) k = 8; // byte array - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else { this.fromRadix(s,b); return; } - this.t = 0; - this.s = 0; - var i = s.length, mi = false, sh = 0; - while(--i >= 0) { - var x = (k==8)?s[i]&0xff:intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-") mi = true; - continue; - } - mi = false; - if(sh == 0) - this[this.t++] = x; - else if(sh+k > this.DB) { - this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); - } - else - this[this.t-1] |= x<= this.DB) sh -= this.DB; - } - if(k == 8 && (s[0]&0x80) != 0) { - this.s = -1; - if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; - } - - // (public) return string representation in given radix - function bnToString(b) { - if(this.s < 0) return "-"+this.negate().toString(b); - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else return this.toRadix(b); - var km = (1< 0) { - if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } - while(i >= 0) { - if(p < k) { - d = (this[i]&((1<>(p+=this.DB-k); - } - else { - d = (this[i]>>(p-=k))&km; - if(p <= 0) { p += this.DB; --i; } - } - if(d > 0) m = true; - if(m) r += int2char(d); - } - } - return m?r:"0"; - } - - // (public) -this - function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } - - // (public) |this| - function bnAbs() { return (this.s<0)?this.negate():this; } - - // (public) return + if this > a, - if this < a, 0 if equal - function bnCompareTo(a) { - var r = this.s-a.s; - if(r != 0) return r; - var i = this.t; - r = i-a.t; - if(r != 0) return (this.s<0)?-r:r; - while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; - return 0; - } - - // returns bit length of the integer x - function nbits(x) { - var r = 1, t; - if((t=x>>>16) != 0) { x = t; r += 16; } - if((t=x>>8) != 0) { x = t; r += 8; } - if((t=x>>4) != 0) { x = t; r += 4; } - if((t=x>>2) != 0) { x = t; r += 2; } - if((t=x>>1) != 0) { x = t; r += 1; } - return r; - } - - // (public) return the number of bits in "this" - function bnBitLength() { - if(this.t <= 0) return 0; - return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); - } - - // (protected) r = this << n*DB - function bnpDLShiftTo(n,r) { - var i; - for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; - for(i = n-1; i >= 0; --i) r[i] = 0; - r.t = this.t+n; - r.s = this.s; - } - - // (protected) r = this >> n*DB - function bnpDRShiftTo(n,r) { - for(var i = n; i < this.t; ++i) r[i-n] = this[i]; - r.t = Math.max(this.t-n,0); - r.s = this.s; - } - - // (protected) r = this << n - function bnpLShiftTo(n,r) { - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<= 0; --i) { - r[i+ds+1] = (this[i]>>cbs)|c; - c = (this[i]&bm)<= 0; --i) r[i] = 0; - r[ds] = c; - r.t = this.t+ds+1; - r.s = this.s; - r.clamp(); - } - - // (protected) r = this >> n - function bnpRShiftTo(n,r) { - r.s = this.s; - var ds = Math.floor(n/this.DB); - if(ds >= this.t) { r.t = 0; return; } - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<>bs; - for(var i = ds+1; i < this.t; ++i) { - r[i-ds-1] |= (this[i]&bm)<>bs; - } - if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; - } - if(a.t < this.t) { - c -= a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c -= a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c -= a.s; - } - r.s = (c<0)?-1:0; - if(c < -1) r[i++] = this.DV+c; - else if(c > 0) r[i++] = c; - r.t = i; - r.clamp(); - } - - // (protected) r = this * a, r != this,a (HAC 14.12) - // "this" should be the larger one if appropriate. - function bnpMultiplyTo(a,r) { - var x = this.abs(), y = a.abs(); - var i = x.t; - r.t = i+y.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); - r.s = 0; - r.clamp(); - if(this.s != a.s) BigInteger.ZERO.subTo(r,r); - } - - // (protected) r = this^2, r != this (HAC 14.16) - function bnpSquareTo(r) { - var x = this.abs(); - var i = r.t = 2*x.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < x.t-1; ++i) { - var c = x.am(i,x[i],r,2*i,0,1); - if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { - r[i+x.t] -= x.DV; - r[i+x.t+1] = 1; - } - } - if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); - r.s = 0; - r.clamp(); - } - - // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) - // r != q, this != m. q or r may be null. - function bnpDivRemTo(m,q,r) { - var pm = m.abs(); - if(pm.t <= 0) return; - var pt = this.abs(); - if(pt.t < pm.t) { - if(q != null) q.fromInt(0); - if(r != null) this.copyTo(r); - return; - } - if(r == null) r = nbi(); - var y = nbi(), ts = this.s, ms = m.s; - var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus - if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } - else { pm.copyTo(y); pt.copyTo(r); } - var ys = y.t; - var y0 = y[ys-1]; - if(y0 == 0) return; - var yt = y0*(1<1)?y[ys-2]>>this.F2:0); - var d1 = this.FV/yt, d2 = (1<= 0) { - r[r.t++] = 1; - r.subTo(t,r); - } - BigInteger.ONE.dlShiftTo(ys,t); - t.subTo(y,y); // "negative" y so we can replace sub with am later - while(y.t < ys) y[y.t++] = 0; - while(--j >= 0) { - // Estimate quotient digit - var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); - if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out - y.dlShiftTo(j,t); - r.subTo(t,r); - while(r[i] < --qd) r.subTo(t,r); - } - } - if(q != null) { - r.drShiftTo(ys,q); - if(ts != ms) BigInteger.ZERO.subTo(q,q); - } - r.t = ys; - r.clamp(); - if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder - if(ts < 0) BigInteger.ZERO.subTo(r,r); - } - - // (public) this mod a - function bnMod(a) { - var r = nbi(); - this.abs().divRemTo(a,null,r); - if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); - return r; - } - - // Modular reduction using "classic" algorithm - function Classic(m) { this.m = m; } - function cConvert(x) { - if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); - else return x; - } - function cRevert(x) { return x; } - function cReduce(x) { x.divRemTo(this.m,null,x); } - function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - Classic.prototype.convert = cConvert; - Classic.prototype.revert = cRevert; - Classic.prototype.reduce = cReduce; - Classic.prototype.mulTo = cMulTo; - Classic.prototype.sqrTo = cSqrTo; - - // (protected) return "-1/this % 2^DB"; useful for Mont. reduction - // justification: - // xy == 1 (mod m) - // xy = 1+km - // xy(2-xy) = (1+km)(1-km) - // x[y(2-xy)] = 1-k^2m^2 - // x[y(2-xy)] == 1 (mod m^2) - // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 - // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. - // JS multiply "overflows" differently from C/C++, so care is needed here. - function bnpInvDigit() { - if(this.t < 1) return 0; - var x = this[0]; - if((x&1) == 0) return 0; - var y = x&3; // y == 1/x mod 2^2 - y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 - y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 - y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 - // last step - calculate inverse mod DV directly; - // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints - y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits - // we really want the negative inverse, and -DV < y < DV - return (y>0)?this.DV-y:-y; - } - - // Montgomery reduction - function Montgomery(m) { - this.m = m; - this.mp = m.invDigit(); - this.mpl = this.mp&0x7fff; - this.mph = this.mp>>15; - this.um = (1<<(m.DB-15))-1; - this.mt2 = 2*m.t; - } - - // xR mod m - function montConvert(x) { - var r = nbi(); - x.abs().dlShiftTo(this.m.t,r); - r.divRemTo(this.m,null,r); - if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); - return r; - } - - // x/R mod m - function montRevert(x) { - var r = nbi(); - x.copyTo(r); - this.reduce(r); - return r; - } - - // x = x/R mod m (HAC 14.32) - function montReduce(x) { - while(x.t <= this.mt2) // pad x so am has enough room later - x[x.t++] = 0; - for(var i = 0; i < this.m.t; ++i) { - // faster way of calculating u0 = x[i]*mp mod DV - var j = x[i]&0x7fff; - var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; - // use am to combine the multiply-shift-add into one call - j = i+this.m.t; - x[j] += this.m.am(0,u0,x,i,0,this.m.t); - // propagate carry - while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } - } - x.clamp(); - x.drShiftTo(this.m.t,x); - if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = "x^2/R mod m"; x != r - function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = "xy/R mod m"; x,y != r - function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Montgomery.prototype.convert = montConvert; - Montgomery.prototype.revert = montRevert; - Montgomery.prototype.reduce = montReduce; - Montgomery.prototype.mulTo = montMulTo; - Montgomery.prototype.sqrTo = montSqrTo; - - // (protected) true iff this is even - function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } - - // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) - function bnpExp(e,z) { - if(e > 0xffffffff || e < 1) return BigInteger.ONE; - var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; - g.copyTo(r); - while(--i >= 0) { - z.sqrTo(r,r2); - if((e&(1< 0) z.mulTo(r2,g,r); - else { var t = r; r = r2; r2 = t; } - } - return z.revert(r); - } - - // (public) this^e % m, 0 <= e < 2^32 - function bnModPowInt(e,m) { - var z; - if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); - return this.exp(e,z); - } - - // protected - BigInteger.prototype.copyTo = bnpCopyTo; - BigInteger.prototype.fromInt = bnpFromInt; - BigInteger.prototype.fromString = bnpFromString; - BigInteger.prototype.clamp = bnpClamp; - BigInteger.prototype.dlShiftTo = bnpDLShiftTo; - BigInteger.prototype.drShiftTo = bnpDRShiftTo; - BigInteger.prototype.lShiftTo = bnpLShiftTo; - BigInteger.prototype.rShiftTo = bnpRShiftTo; - BigInteger.prototype.subTo = bnpSubTo; - BigInteger.prototype.multiplyTo = bnpMultiplyTo; - BigInteger.prototype.squareTo = bnpSquareTo; - BigInteger.prototype.divRemTo = bnpDivRemTo; - BigInteger.prototype.invDigit = bnpInvDigit; - BigInteger.prototype.isEven = bnpIsEven; - BigInteger.prototype.exp = bnpExp; - - // public - BigInteger.prototype.toString = bnToString; - BigInteger.prototype.negate = bnNegate; - BigInteger.prototype.abs = bnAbs; - BigInteger.prototype.compareTo = bnCompareTo; - BigInteger.prototype.bitLength = bnBitLength; - BigInteger.prototype.mod = bnMod; - BigInteger.prototype.modPowInt = bnModPowInt; - - // "constants" - BigInteger.ZERO = nbv(0); - BigInteger.ONE = nbv(1); - - // jsbn2 stuff - - // (protected) convert from radix string - function bnpFromRadix(s,b) { - this.fromInt(0); - if(b == null) b = 10; - var cs = this.chunkSize(b); - var d = Math.pow(b,cs), mi = false, j = 0, w = 0; - for(var i = 0; i < s.length; ++i) { - var x = intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-" && this.signum() == 0) mi = true; - continue; - } - w = b*w+x; - if(++j >= cs) { - this.dMultiply(d); - this.dAddOffset(w,0); - j = 0; - w = 0; - } - } - if(j > 0) { - this.dMultiply(Math.pow(b,j)); - this.dAddOffset(w,0); - } - if(mi) BigInteger.ZERO.subTo(this,this); - } - - // (protected) return x s.t. r^x < DV - function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } - - // (public) 0 if this == 0, 1 if this > 0 - function bnSigNum() { - if(this.s < 0) return -1; - else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; - else return 1; - } - - // (protected) this *= n, this >= 0, 1 < n < DV - function bnpDMultiply(n) { - this[this.t] = this.am(0,n-1,this,0,0,this.t); - ++this.t; - this.clamp(); - } - - // (protected) this += n << w words, this >= 0 - function bnpDAddOffset(n,w) { - if(n == 0) return; - while(this.t <= w) this[this.t++] = 0; - this[w] += n; - while(this[w] >= this.DV) { - this[w] -= this.DV; - if(++w >= this.t) this[this.t++] = 0; - ++this[w]; - } - } - - // (protected) convert to radix string - function bnpToRadix(b) { - if(b == null) b = 10; - if(this.signum() == 0 || b < 2 || b > 36) return "0"; - var cs = this.chunkSize(b); - var a = Math.pow(b,cs); - var d = nbv(a), y = nbi(), z = nbi(), r = ""; - this.divRemTo(d,y,z); - while(y.signum() > 0) { - r = (a+z.intValue()).toString(b).substr(1) + r; - y.divRemTo(d,y,z); - } - return z.intValue().toString(b) + r; - } - - // (public) return value as integer - function bnIntValue() { - if(this.s < 0) { - if(this.t == 1) return this[0]-this.DV; - else if(this.t == 0) return -1; - } - else if(this.t == 1) return this[0]; - else if(this.t == 0) return 0; - // assumes 16 < DB < 32 - return ((this[1]&((1<<(32-this.DB))-1))<>= this.DB; - } - if(a.t < this.t) { - c += a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c += a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += a.s; - } - r.s = (c<0)?-1:0; - if(c > 0) r[i++] = c; - else if(c < -1) r[i++] = this.DV+c; - r.t = i; - r.clamp(); - } - - BigInteger.prototype.fromRadix = bnpFromRadix; - BigInteger.prototype.chunkSize = bnpChunkSize; - BigInteger.prototype.signum = bnSigNum; - BigInteger.prototype.dMultiply = bnpDMultiply; - BigInteger.prototype.dAddOffset = bnpDAddOffset; - BigInteger.prototype.toRadix = bnpToRadix; - BigInteger.prototype.intValue = bnIntValue; - BigInteger.prototype.addTo = bnpAddTo; - - //======= end jsbn ======= - - // Emscripten wrapper - var Wrapper = { - abs: function(l, h) { - var x = new goog.math.Long(l, h); - var ret; - if (x.isNegative()) { - ret = x.negate(); - } else { - ret = x; - } - HEAP32[tempDoublePtr>>2] = ret.low_; - HEAP32[tempDoublePtr+4>>2] = ret.high_; - }, - ensureTemps: function() { - if (Wrapper.ensuredTemps) return; - Wrapper.ensuredTemps = true; - Wrapper.two32 = new BigInteger(); - Wrapper.two32.fromString('4294967296', 10); - Wrapper.two64 = new BigInteger(); - Wrapper.two64.fromString('18446744073709551616', 10); - Wrapper.temp1 = new BigInteger(); - Wrapper.temp2 = new BigInteger(); - }, - lh2bignum: function(l, h) { - var a = new BigInteger(); - a.fromString(h.toString(), 10); - var b = new BigInteger(); - a.multiplyTo(Wrapper.two32, b); - var c = new BigInteger(); - c.fromString(l.toString(), 10); - var d = new BigInteger(); - c.addTo(b, d); - return d; - }, - stringify: function(l, h, unsigned) { - var ret = new goog.math.Long(l, h).toString(); - if (unsigned && ret[0] == '-') { - // unsign slowly using jsbn bignums - Wrapper.ensureTemps(); - var bignum = new BigInteger(); - bignum.fromString(ret, 10); - ret = new BigInteger(); - Wrapper.two64.addTo(bignum, ret); - ret = ret.toString(10); - } - return ret; - }, - fromString: function(str, base, min, max, unsigned) { - Wrapper.ensureTemps(); - var bignum = new BigInteger(); - bignum.fromString(str, base); - var bigmin = new BigInteger(); - bigmin.fromString(min, 10); - var bigmax = new BigInteger(); - bigmax.fromString(max, 10); - if (unsigned && bignum.compareTo(BigInteger.ZERO) < 0) { - var temp = new BigInteger(); - bignum.addTo(Wrapper.two64, temp); - bignum = temp; - } - var error = false; - if (bignum.compareTo(bigmin) < 0) { - bignum = bigmin; - error = true; - } else if (bignum.compareTo(bigmax) > 0) { - bignum = bigmax; - error = true; - } - var ret = goog.math.Long.fromString(bignum.toString()); // min-max checks should have clamped this to a range goog.math.Long can handle well - HEAP32[tempDoublePtr>>2] = ret.low_; - HEAP32[tempDoublePtr+4>>2] = ret.high_; - if (error) throw 'range error'; - } - }; - return Wrapper; -})(); - -//======= end closure i64 code ======= - - - -// === Auto-generated postamble setup entry stuff === - -if (memoryInitializer) { - function applyData(data) { - HEAPU8.set(data, STATIC_BASE); - } - if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { - applyData(Module['readBinary'](memoryInitializer)); - } else { - addRunDependency('memory initializer'); - Browser.asyncLoad(memoryInitializer, function(data) { - applyData(data); - removeRunDependency('memory initializer'); - }, function(data) { - throw 'could not load memory initializer ' + memoryInitializer; - }); - } -} - -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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!Module['calledRun'] && shouldRunNow) run(); - if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - -Module['callMain'] = Module.callMain = function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); - assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); - - args = args || []; - - if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { - Module.printErr('preload time: ' + (Date.now() - preloadStartTime) + ' ms'); - } - - ensureInitRuntime(); - - var argc = args.length+1; - function pad() { - for (var i = 0; i < 4-1; i++) { - argv.push(0); - } - } - var argv = [allocate(intArrayFromString("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; - pad(); - for (var i = 0; i < argc-1; i = i + 1) { - argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); - pad(); - } - argv.push(0); - argv = allocate(argv, 'i32', ALLOC_NORMAL); - - initialStackTop = STACKTOP; - - try { - - var ret = Module['_main'](argc, argv, 0); - - - // if we're not running an evented main loop, it's time to exit - if (!Module['noExitRuntime']) { - exit(ret); - } - } - catch(e) { - if (e instanceof ExitStatus) { - // exit() throws this once it's done to make sure execution - // has been stopped completely - return; - } else if (e == 'SimulateInfiniteLoop') { - // running an evented main loop, don't immediately exit - Module['noExitRuntime'] = true; - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } finally { - calledMain = true; - } -} - - - - -function run(args) { - args = args || Module['arguments']; - - if (preloadStartTime === null) preloadStartTime = Date.now(); - - if (runDependencies > 0) { - Module.printErr('run() called, but dependencies remain, so not running'); - return; - } - - preRun(); - - if (runDependencies > 0) return; // a preRun added a dependency, run will be called later - if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame - - function doRun() { - if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening - Module['calledRun'] = true; - - ensureInitRuntime(); - - preMain(); - - if (Module['_main'] && shouldRunNow) { - Module['callMain'](args); - } - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - if (!ABORT) doRun(); - }, 1); - } else { - doRun(); - } -} -Module['run'] = Module.run = run; - -function exit(status) { - ABORT = true; - EXITSTATUS = status; - STACKTOP = initialStackTop; - - // exit the runtime - exitRuntime(); - - // TODO We should handle this differently based on environment. - // In the browser, the best we can do is throw an exception - // to halt execution, but in node we could process.exit and - // I'd imagine SM shell would have something equivalent. - // This would let us set a proper exit status (which - // would be great for checking test exit statuses). - // https://github.com/kripken/emscripten/issues/1371 - - // throw an exception to halt the current execution - throw new ExitStatus(status); -} -Module['exit'] = Module.exit = exit; - -function abort(text) { - if (text) { - Module.print(text); - Module.printErr(text); - } - - ABORT = true; - EXITSTATUS = 1; - - throw 'abort() at ' + stackTrace(); -} -Module['abort'] = Module.abort = abort; - -// {{PRE_RUN_ADDITIONS}} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -// shouldRunNow refers to calling main(), not run(). -var shouldRunNow = true;//false; -if (Module['noInitialRun']) { - shouldRunNow = false; -} - -run(); -assertEquals(0, EXITSTATUS); diff --git a/implementation-contributed/v8/mjsunit/asm/redundancy1.js b/implementation-contributed/v8/mjsunit/asm/redundancy1.js deleted file mode 100644 index a3e3339bedf..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/redundancy1.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-splitting - -function module(stdlib, foreign, heap) { - "use asm"; - function foo(i) { - i = i|0; - var j = 0; - if ((i | 0) < 0) { - j = i+1|0; - } - if ((i | 0) > 0) { - j = i+1|0; - } - return j | 0; - } - return { foo: foo }; -} - -var foo = module(this, {}, new ArrayBuffer(64*1024)).foo; -assertEquals(0, foo(0)); -assertEquals(0, foo(-1)); -assertEquals(12, foo(11)); diff --git a/implementation-contributed/v8/mjsunit/asm/redundancy2.js b/implementation-contributed/v8/mjsunit/asm/redundancy2.js deleted file mode 100644 index 25e9a778284..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/redundancy2.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-splitting - -function module(stdlib, foreign, heap) { - "use asm"; - function foo(i) { - i = i|0; - var j = 0; - switch (i | 0) { - case 0: - j = i+1|0; - break; - case 1: - j = i+1|0; - break; - default: - j = i; - break; - } - return j | 0; - } - return { foo: foo }; -} - -var foo = module(this, {}, new ArrayBuffer(64*1024)).foo; -assertEquals(2, foo(2)); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-641885.js b/implementation-contributed/v8/mjsunit/asm/regress-641885.js deleted file mode 100644 index 4d0c11b9009..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-641885.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var __f_2 = (function __f_4() { - "use asm"; - function __f_2(i) { - i = i|0; - i = i << -2147483648 >> -1073741824; - return i|0; - } - return { __f_2: __f_2 }; -})().__f_2; diff --git a/implementation-contributed/v8/mjsunit/asm/regress-660813.js b/implementation-contributed/v8/mjsunit/asm/regress-660813.js deleted file mode 100644 index e9bf5797c7f..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-660813.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module() { - "use asm"; - const i = 0xffffffff; - function foo() { - return i; - } -} -Module(); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-669899.js b/implementation-contributed/v8/mjsunit/asm/regress-669899.js deleted file mode 100644 index 7adf45b9112..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-669899.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { -(function () { -})(); -} catch(e) {; } - function __f_113() { - } -(function () { -function __f_89() { - "use asm"; - function __f_63(__v_26, __v_28) { - __v_26 = __v_26|0; - __v_28 = __v_28|0; - } - function __f_21(table_id, fun_id, arg1, arg2) { - table_id = table_id|0; - fun_id = fun_id|0; - arg1 = arg1|0; - arg2 = arg2|0; - } - var __v_17 = []; -} -var module = __f_89(); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-672045.js b/implementation-contributed/v8/mjsunit/asm/regress-672045.js deleted file mode 100644 index c9c9c3b4d06..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-672045.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -function Module(stdlib, env) { - "use asm"; - var x = env.bar|0; - return { foo: function(y) { return eval(1); } }; -} -Module(this, {bar:0}); -assertFalse(%IsAsmWasmCode(Module)); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-674089.js b/implementation-contributed/v8/mjsunit/asm/regress-674089.js deleted file mode 100644 index edba023decb..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-674089.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --lazy-inner-functions - -function outer() { - "use asm"; - function inner() { - switch (1) { - case 0: - break foo; - } - } -} -outer(); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-676573.js b/implementation-contributed/v8/mjsunit/asm/regress-676573.js deleted file mode 100644 index a0a4cf64128..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-676573.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function baz() { - "use asm"; -} -function B(stdlib, env) { - "use asm"; - var x = env.foo | 0; -} -var bar = { - get foo() { - } -}; -bar.__defineGetter__('foo', function() { return baz(); }); -B(this, bar); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-681707.js b/implementation-contributed/v8/mjsunit/asm/regress-681707.js deleted file mode 100644 index 9c352eaf409..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-681707.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm - -var foo = (function(stdlib) { - "use asm"; - var bar = (stdlib[0]); - function foo() { return bar ("lala"); } - return foo; -})(this); - -try { - nop(foo); - foo(); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/asm/regress-718745.js b/implementation-contributed/v8/mjsunit/asm/regress-718745.js deleted file mode 100644 index eb5416808b9..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-718745.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib) { - "use asm"; - var fround = stdlib.Math.fround; - function f(a) { - a = (fround(a)); - } - return { f:f }; -} -Module(this).f(); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-719866.js b/implementation-contributed/v8/mjsunit/asm/regress-719866.js deleted file mode 100644 index da9719e9704..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-719866.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib) { - "use asm"; - function f(a,b,c) { - a = +a; - b = +b; - c = +c; - var r = 0.0; - r = a / b * c; - return +r; - } - return { f:f } -} -var m = Module(this); -assertEquals(16, m.f(32, 4, 2)); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-740325.js b/implementation-contributed/v8/mjsunit/asm/regress-740325.js deleted file mode 100644 index 9377aaeea00..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-740325.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -assertTrue = function assertTrue() { } -assertFalse = function assertFalse() { } - -__v_3 = []; -__v_2 = []; -__v_0 = 0; -__v_2.__defineGetter__(0, function() { - if (__v_0++ > 2) return; - gc(); - __v_3.concat(__v_2); -}); -__v_2[0]; - - -function __f_2() { -} - -(function __f_1() { - print("1..."); - function __f_5(stdlib, imports) { - "use asm"; - var __f_2 = imports.__f_2; - function __f_3(a) { - a = a | 0; - } - return { __f_3:__f_3 }; - } - var __v_2 = __f_5(this, { __f_2:__f_2 }); -; -})(); - -(function __f_10() { - print("2..."); - function __f_5() { - "use asm"; - function __f_3(a) { - } - } - var __v_2 = __f_5(); - assertFalse(); -})(); - -(function __f_11() { - print("3..."); - let m = (function __f_6() { - function __f_5() { - "use asm"; - function __f_3() { - } - return { __f_3:__f_3 }; - } - var __v_2 = __f_5( { __f_2:__f_2 }); - }); - for (var i = 0; i < 30; i++) { - print(" i = " + i); - var x = m(); - for (var j = 0; j < 200; j++) { - try { - __f_5; - } catch (e) { - } - } - x; - } -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-913822.js b/implementation-contributed/v8/mjsunit/asm/regress-913822.js deleted file mode 100644 index d6ee74637a9..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-913822.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestNewlineInCPPComment() { - function Module() { - "use asm" // Crash by comment! - function f() {} - return f - } - Module(); - assertTrue(%IsAsmWasmCode(Module)); -})(); - -(function TestNewlineInCComment() { - function Module() { - "use asm" /* Crash by - comment! */ function f() {} - return f - } - Module(); - assertTrue(%IsAsmWasmCode(Module)); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/regress-920076.js b/implementation-contributed/v8/mjsunit/asm/regress-920076.js deleted file mode 100644 index 754b931cb8b..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/regress-920076.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Module() { - "use asm"; - function f() {} - return f -} -eval("(" + Module.toString().replace(/;/, String.fromCharCode(8233)) + ")();"); -assertFalse(%IsAsmWasmCode(Module)); // Valid asm.js, but we reject Unicode. diff --git a/implementation-contributed/v8/mjsunit/asm/return-types.js b/implementation-contributed/v8/mjsunit/asm/return-types.js deleted file mode 100644 index 7ecdd4267ea..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/return-types.js +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --validate-asm - -(function SuccessReturnTypesMatch() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - if ((a | 0) == 1) return 2.3; - if ((a | 0) == 2) return 4.2; - return 6.5; - } - return { f:f }; - } - var m = Module(this); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(2.3, m.f(1)); - assertEquals(4.2, m.f(2)); - assertEquals(6.5, m.f(3)); -})(); - -(function FailReturnTypesMismatch() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - if ((a | 0) == 1) return 2.3; - if ((a | 0) == 2) return 123; - return 4.2; - } - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(2.3, m.f(1)); - assertEquals(123, m.f(2)); - assertEquals(4.2, m.f(3)); -})(); - -(function FailFallOffNonVoidFunction() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - if ((a | 0) == 1) return 2.3; - if ((a | 0) == 2) return 4.2; - } - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(2.3, m.f(1)); - assertEquals(4.2, m.f(2)); - assertEquals(undefined, m.f(3)); -})(); - -(function FailNonVoidVoidMismatch() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - if ((a | 0) == 1) return 2.3; - if ((a | 0) == 2) return; - } - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(2.3, m.f(1)); - assertEquals(undefined, m.f(2)); - assertEquals(undefined, m.f(3)); -})(); - -(function FailVoidNonVoidMismatch() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - if ((a | 0) == 1) return; - if ((a | 0) == 2) return 2.3; - } - return { f:f }; - } - var m = Module(this); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(undefined, m.f(1)); - assertEquals(2.3, m.f(2)); - assertEquals(undefined, m.f(3)); -})(); - -(function SuccessVoidFunction() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - if ((a | 0) == 1) return; - return; - } - return { f:f }; - } - var m = Module(this); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(undefined, m.f(1)); - assertEquals(undefined, m.f(2)); -})(); - -(function SuccessFallOffVoidFunction() { - function Module(stdlib, imports, heap) { - "use asm"; - function f(a) { - a = a | 0; - if ((a | 0) == 1) return; - } - return { f:f }; - } - var m = Module(this); - assertTrue(%IsAsmWasmCode(Module)); - assertEquals(undefined, m.f(1)); - assertEquals(undefined, m.f(2)); -})(); diff --git a/implementation-contributed/v8/mjsunit/asm/sign-extend.js b/implementation-contributed/v8/mjsunit/asm/sign-extend.js deleted file mode 100644 index 62d8d345a9d..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/sign-extend.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - - -var sext8 = (function Module(stdlib, foreign, heap) { - "use asm"; - function sext8(i) { - i = i|0; - i = i << 24 >> 24; - return i|0; - } - return { sext8: sext8 }; -})(stdlib, foreign, buffer).sext8; - -assertEquals(-128, sext8(128)); -assertEquals(-1, sext8(-1)); -assertEquals(-1, sext8(255)); -assertEquals(0, sext8(0)); -assertEquals(0, sext8(256)); -assertEquals(42, sext8(42)); -assertEquals(127, sext8(127)); - - -var sext16 = (function Module(stdlib, foreign, heap) { - "use asm"; - function sext16(i) { - i = i|0; - i = i << 16 >> 16; - return i|0; - } - return { sext16: sext16 }; -})(stdlib, foreign, buffer).sext16; - -assertEquals(-32768, sext16(32768)); -assertEquals(-1, sext16(-1)); -assertEquals(-1, sext16(65535)); -assertEquals(0, sext16(0)); -assertEquals(0, sext16(65536)); -assertEquals(128, sext16(128)); -assertEquals(32767, sext16(32767)); diff --git a/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-change-heap.js b/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-change-heap.js deleted file mode 100644 index d90a8197413..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-change-heap.js +++ /dev/null @@ -1,18 +0,0 @@ -var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function";var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};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}}))}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 (jsc?)"}}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};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.log(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]}}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,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){assert(args.length==sig.length-1);if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].apply(null,args)}else{assert(sig.length==1);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i0),size)|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success)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};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;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 cwrap,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){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!=="array",'Return type should not be "array".');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)}}Module["setValue"]=setValue;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}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;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=[_malloc,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)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){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)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;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}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;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}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);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)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}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(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){assert(DYNAMICTOP>=TOTAL_MEMORY);assert(TOTAL_MEMORY>4);var OLD_TOTAL_MEMORY=TOTAL_MEMORY;var LIMIT=Math.pow(2,31);if(DYNAMICTOP>=LIMIT)return false;while(TOTAL_MEMORY<=DYNAMICTOP){if(TOTAL_MEMORY=LIMIT)return false;Module.printErr("Warning: Enlarging memory arrays, this is not fast! "+[OLD_TOTAL_MEMORY,TOTAL_MEMORY]);var start=Date.now();try{if(ArrayBuffer.transfer){buffer=ArrayBuffer.transfer(buffer,TOTAL_MEMORY)}else{var oldHEAP8=HEAP8;buffer=new ArrayBuffer(TOTAL_MEMORY)}}catch(e){return false}var success=_emscripten_replace_memory(buffer);if(!success)return false;Module["buffer"]=buffer;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);if(!ArrayBuffer.transfer){HEAP8.set(oldHEAP8)}Module.printErr("enlarged memory arrays from "+OLD_TOTAL_MEMORY+" to "+TOTAL_MEMORY+", took "+(Date.now()-start)+" ms (has ArrayBuffer.transfer? "+!!ArrayBuffer.transfer+")");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 totalMemory=64*1024;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)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;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}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.");chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}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["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"];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_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=="undefined"){runDependencyWatcher=setInterval((function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;Module.printErr("still waiting on run dependencies:")}Module.printErr("dependency: "+dep)}if(shown){Module.printErr("(end of list)")}}),1e4)}}else{Module.printErr("warning: run dependency added without ID")}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{Module.printErr("warning: run dependency removed without ID")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;STATIC_BASE=8;STATICTOP=STATIC_BASE+49568;__ATINIT__.push();allocate([32,0,0,0,88,0,0,0,168,0,0,0,224,0,0,0,0,1,0,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,116,49,40,97,32,73,78,84,69,71,69,82,44,32,98,32,73,78,84,69,71,69,82,44,32,99,32,86,65,82,67,72,65,82,40,49,48,48,41,41,59,0,0,73,78,83,69,82,84,32,73,78,84,79,32,116,49,32,86,65,76,85,69,83,40,49,44,49,51,49,53,51,44,39,116,104,105,114,116,101,101,110,32,116,104,111,117,115,97,110,100,32,111,110,101,32,104,117,110,100,114,101,100,32,102,105,102,116,121,32,116,104,114,101,101,39,41,59,0,0,0,0,0,73,78,83,69,82,84,32,73,78,84,79,32,116,49,32,86,65,76,85,69,83,40,49,44,57,56,55,44,39,115,111,109,101,32,111,116,104,101,114,32,110,117,109,98,101,114,39,41,59,0,0,0,0,0,0,0,83,69,76,69,67,84,32,99,111,117,110,116,40,42,41,32,70,82,79,77,32,116,49,59,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,97,44,32,98,44,32,99,32,70,82,79,77,32,116,49,59],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([114,99,32,61,61,32,83,81,76,73,84,69,95,79,75,0,116,101,115,116,46,99,0,0,116,101,115,116,49,0,0,0,99,111,117,110,116,40,42,41,61,50,97,61,49,98,61,49,51,49,53,51,99,61,116,104,105,114,116,101,101,110,32,116,104,111,117,115,97,110,100,32,111,110,101,32,104,117,110,100,114,101,100,32,102,105,102,116,121,32,116,104,114,101,101,97,61,49,98,61,57,56,55,99,61,115,111,109,101,32,111,116,104,101,114,32,110,117,109,98,101,114,0,0,0,0,0,0,115,116,114,99,109,112,40,98,117,102,102,101,114,44,32,69,88,80,69,67,84,69,68,41,32,61,61,32,48,0,0,0,51,46,56,46,57,0,0,0,83,81,76,73,84,69,95,0,104,191,0,0,120,191,0,0,136,191,0,0,152,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,254,255,255,127,0,0,0,0,128,0,0,0,244,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,208,38,0,0,216,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,224,38,0,0,240,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,248,38,0,0,8,39,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,16,39,0,0,216,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,117,110,105,120,0,0,0,0,7,0,0,0,0,0,0,0,117,110,105,120,45,110,111,110,101,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,117,110,105,120,45,100,111,116,102,105,108,101,0,0,0,0,9,0,0,0,0,0,0,0,117,110,105,120,45,101,120,99,108,0,0,0,0,0,0,0,115,111,117,114,99,101,32,97,110,100,32,100,101,115,116,105,110,97,116,105,111,110,32,109,117,115,116,32,98,101,32,100,105,115,116,105,110,99,116,0,0,0,0,64,0,0,0,0,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,115,116,114,105,110,103,32,111,114,32,98,108,111,98,32,116,111,111,32,98,105,103,0,0,145,0,0,0,54,0,0,0,55,0,0,0,31,1,1,1,70,0,10,1,47,0,0,1,35,1,0,0,16,0,4,0,61,0,0,0,24,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,58,32,37,115,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,116,97,98,108,101,32,119,105,116,104,111,117,116,32,114,111,119,105,100,58,32,37,115,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,101,119,58,32,37,115,0,0,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,34,37,115,34,0,0,0,0,102,111,114,101,105,103,110,32,107,101,121,0,0,0,0,0,105,110,100,101,120,101,100,0,99,97,110,110,111,116,32,111,112,101,110,32,37,115,32,99,111,108,117,109,110,32,102,111,114,32,119,114,105,116,105,110,103,0,0,0,0,0,0,0,37,115,0,0,0,0,0,0,42,63,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,10,10,10,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,64,0,42,42,42,42,42,42,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,3,2,5,0,0,0,1,0,2,3,4,2,2,2,1,1,2,3,4,2,2,2,1,2,2,2,2,2,2,2,1,3,3,2,4,2,2,2,1,4,2,2,2,4,5,2,6,5,5,5,5,5,5,5,6,6,5,5,5,5,5,7,1,7,5,5,5,5,5,5,99,114,101,97,116,101,0,0,116,114,105,103,103,101,114,0,116,101,109,112,0,0,0,0,116,101,109,112,111,114,97,114,121,0,0,0,0,0,0,0,101,110,100,0,0,0,0,0,101,120,112,108,97,105,110,0,50,48,49,53,45,48,52,45,48,56,32,49,50,58,49,54,58,51,51,32,56,97,56,102,102,99,56,54,50,101,57,54,102,53,55,97,97,54,57,56,102,57,51,100,101,49,48,100,101,101,50,56,101,54,57,102,54,101,48,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,3,0,0,0,0,8,0,235,3,0,0,0,0,128,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,109,0,101,0,109,0,111,0,114,0,121,0,0,0,0,0,0,0,108,0,105,0,98,0,114,0,97,0,114,0,121,0,32,0,114,0,111,0,117,0,116,0,105,0,110,0,101,0,32,0,99,0,97,0,108,0,108,0,101,0,100,0,32,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,115,0,101,0,113,0,117,0,101,0,110,0,99,0,101,0,0,0,0,0,0,202,154,59,0,202,154,59,208,7,0,0,232,3,0,0,244,1,0,0,168,97,0,0,127,0,0,0,10,0,0,0,80,195,0,0,231,3,0,0,232,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,78,84,69,71,69,82,0,66,73,78,65,82,89,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,32,99,111,108,117,109,110,58,32,37,115,46,37,115,0,0,0,0,0,57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,56,48,0,0,0,0,0,0,111,110,111,102,102,97,108,115,101,121,101,115,116,114,117,101,102,117,108,108,0,0,0,0,0,1,2,4,9,12,16,0,2,2,3,5,3,4,4,0,1,0,0,0,1,1,2,0,82,69,73,78,68,69,88,69,68,69,83,67,65,80,69,65,67,72,69,67,75,69,89,66,69,70,79,82,69,73,71,78,79,82,69,71,69,88,80,76,65,73,78,83,84,69,65,68,68,65,84,65,66,65,83,69,76,69,67,84,65,66,76,69,70,84,72,69,78,68,69,70,69,82,82,65,66,76,69,76,83,69,88,67,69,80,84,82,65,78,83,65,67,84,73,79,78,65,84,85,82,65,76,84,69,82,65,73,83,69,88,67,76,85,83,73,86,69,88,73,83,84,83,65,86,69,80,79,73,78,84,69,82,83,69,67,84,82,73,71,71,69,82,69,70,69,82,69,78,67,69,83,67,79,78,83,84,82,65,73,78,84,79,70,70,83,69,84,69,77,80,79,82,65,82,89,85,78,73,81,85,69,82,89,87,73,84,72,79,85,84,69,82,69,76,69,65,83,69,65,84,84,65,67,72,65,86,73,78,71,82,79,85,80,68,65,84,69,66,69,71,73,78,78,69,82,69,67,85,82,83,73,86,69,66,69,84,87,69,69,78,79,84,78,85,76,76,73,75,69,67,65,83,67,65,68,69,76,69,84,69,67,65,83,69,67,79,76,76,65,84,69,67,82,69,65,84,69,67,85,82,82,69,78,84,95,68,65,84,69,68,69,84,65,67,72,73,77,77,69,68,73,65,84,69,74,79,73,78,83,69,82,84,77,65,84,67,72,80,76,65,78,65,76,89,90,69,80,82,65,71,77,65,66,79,82,84,86,65,76,85,69,83,86,73,82,84,85,65,76,73,77,73,84,87,72,69,78,87,72,69,82,69,78,65,77,69,65,70,84,69,82,69,80,76,65,67,69,65,78,68,69,70,65,85,76,84,65,85,84,79,73,78,67,82,69,77,69,78,84,67,65,83,84,67,79,76,85,77,78,67,79,77,77,73,84,67,79,78,70,76,73,67,84,67,82,79,83,83,67,85,82,82,69,78,84,95,84,73,77,69,83,84,65,77,80,82,73,77,65,82,89,68,69,70,69,82,82,69,68,73,83,84,73,78,67,84,68,82,79,80,70,65,73,76,70,82,79,77,70,85,76,76,71,76,79,66,89,73,70,73,83,78,85,76,76,79,82,68,69,82,69,83,84,82,73,67,84,82,73,71,72,84,82,79,76,76,66,65,67,75,82,79,87,85,78,73,79,78,85,83,73,78,71,86,65,67,85,85,77,86,73,69,87,73,78,73,84,73,65,76,76,89,0,0,0,0,0,0,0,76,105,117,74,0,45,0,0,82,0,77,0,0,42,12,78,15,0,116,85,54,112,0,19,0,0,121,0,119,115,0,22,93,0,9,0,0,70,71,0,69,6,0,48,90,102,0,118,101,0,0,44,0,103,24,0,17,0,122,53,23,0,5,110,25,96,0,0,124,106,60,123,57,28,55,0,91,0,100,26,0,99,0,0,0,95,92,97,88,109,14,39,108,0,81,0,18,89,111,32,0,120,80,113,62,46,84,0,0,94,40,59,114,0,36,0,0,29,0,86,63,64,0,20,61,0,56,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,13,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,21,0,0,0,0,0,50,0,43,3,47,0,0,0,0,30,0,58,0,38,0,0,0,1,66,0,0,67,0,41,0,0,0,0,0,0,49,65,0,0,0,0,31,52,16,34,10,0,0,0,0,0,0,0,11,72,79,0,8,0,104,98,0,107,0,87,0,75,51,0,27,37,73,83,0,35,68,0,0,0,0,0,0,7,7,5,4,6,4,5,3,6,7,3,6,6,7,7,3,8,2,6,5,4,4,3,10,4,6,11,6,2,7,5,5,9,6,9,9,7,10,10,4,6,2,3,9,4,2,6,5,7,4,5,7,6,6,5,6,5,5,9,7,7,3,2,4,4,7,3,6,4,7,6,12,6,9,4,6,5,4,7,6,5,6,7,5,4,5,6,5,7,3,7,13,2,2,4,6,6,8,5,17,12,7,8,8,2,4,4,4,4,4,2,2,6,5,8,5,8,3,5,5,6,4,9,3,0,0,0,0,0,0,2,0,2,0,8,0,9,0,14,0,16,0,20,0,23,0,25,0,25,0,29,0,33,0,36,0,41,0,46,0,48,0,53,0,54,0,59,0,62,0,65,0,67,0,69,0,78,0,81,0,86,0,91,0,95,0,96,0,101,0,105,0,109,0,117,0,122,0,128,0,136,0,142,0,152,0,159,0,162,0,162,0,165,0,167,0,167,0,171,0,176,0,179,0,184,0,184,0,188,0,192,0,199,0,204,0,209,0,212,0,218,0,221,0,225,0,234,0,240,0,240,0,240,0,243,0,246,0,250,0,251,0,255,0,5,1,9,1,16,1,22,1,34,1,40,1,49,1,51,1,57,1,62,1,64,1,71,1,76,1,81,1,87,1,93,1,98,1,102,1,105,1,111,1,115,1,122,1,124,1,131,1,133,1,135,1,144,1,148,1,154,1,160,1,168,1,173,1,173,1,189,1,196,1,203,1,204,1,211,1,215,1,219,1,223,1,227,1,230,1,232,1,234,1,240,1,244,1,252,1,1,2,9,2,12,2,17,2,22,2,28,2,32,2,37,2,67,28,140,42,84,44,104,53,35,113,46,47,50,2,49,142,41,24,119,16,98,138,11,112,139,117,6,30,107,98,141,57,9,20,13,118,62,105,99,131,55,54,111,21,21,71,103,3,25,66,98,14,34,128,127,110,5,98,58,74,77,19,52,101,50,37,33,109,136,95,17,69,43,8,124,108,51,4,32,56,29,120,65,129,137,130,68,31,59,72,100,106,15,75,38,39,10,40,98,69,69,102,7,121,73,114,45,123,98,50,36,18,76,126,60,98,12,61,115,125,63,64,48,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,82,79,87,73,68,95,0,82,79,87,73,68,0,0,0,79,73,68,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,115,113,108,105,116,101,95,109,97,115,116,101,114,40,10,32,32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116,98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,67,82,69,65,84,69,32,84,69,77,80,32,84,65,66,76,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,40,10,32,32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116,98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,0,0,0,0,0,0,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,0,0,0,0,0,0,115,113,108,105,116,101,95,109,97,115,116,101,114,0,0,0,49,0,0,0,0,0,0,0,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,109,117,115,116,32,117,115,101,32,116,104,101,32,115,97,109,101,32,116,101,120,116,32,101,110,99,111,100,105,110,103,32,97,115,32,109,97,105,110,32,100,97,116,97,98,97,115,101,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,102,105,108,101,32,102,111,114,109,97,116,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,0,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,83,69,76,69,67,84,32,116,98,108,44,105,100,120,44,115,116,97,116,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,0,0,0,0,117,110,111,114,100,101,114,101,100,42,0,0,0,0,0,0,115,122,61,91,48,45,57,93,42,0,0,0,0,0,0,0,110,111,115,107,105,112,115,99,97,110,42,0,0,0,0,0,0,0,2,0,3,0,5,0,6,0,7,0,8,0,9,0,33,0,32,0,30,0,28,0,26,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,114,111,111,116,112,97,103,101,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,40,37,115,41,0,0,37,115,32,45,32,37,115,0,100,97,116,97,98,97,115,101,32,99,111,114,114,117,112,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,0,0,0,109,105,115,117,115,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,0,0,0,78,79,67,65,83,69,0,0,82,84,82,73,77,0,0,0,109,97,105,110,0,0,0,0,10,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,6,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,13,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,8,0,0,0,14,0,0,0,3,0,0,0,4,0,0,0,9,0,0,0,10,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,19,0,0,0,1,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,11,0,0,0,6,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,9,0,0,0,28,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,2,0,0,0,16,0,0,0,29,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,17,0,0,0,1,0,0,0,2,0,0,0,18,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,8,0,0,0,9,0,0,0,12,0,0,0,1,0,0,0,33,0,0,0,19,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,13,0,0,0,14,0,0,0,7,0,0,0,5,0,0,0,20,0,0,0,1,0,0,0,1,0,0,0,21,0,0,0,15,0,0,0,34,0,0,0,16,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,1,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,35,0,0,0,17,0,0,0,10,0,0,0,11,0,0,0,34,0,0,0,12,0,0,0,18,0,0,0,35,0,0,0,36,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,37,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,38,0,0,0,5,0,0,0,6,0,0,0,39,0,0,0,7,0,0,0,40,0,0,0,36,0,0,0,41,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,37,0,0,0,6,0,0,0,42,0,0,0,38,0,0,0,19,0,0,0,39,0,0,0,43,0,0,0,10,0,0,0,44,0,0,0,11,0,0,0,45,0,0,0,46,0,0,0,40,0,0,0,47,0,0,0,48,0,0,0,2,0,0,0,20,0,0,0,49,0,0,0,13,0,0,0,50,0,0,0,5,0,0,0,41,0,0,0,5,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,42,0,0,0,43,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,51,0,0,0,52,0,0,0,44,0,0,0,45,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,46,0,0,0,26,0,0,0,12,0,0,0,47,0,0,0,13,0,0,0,14,0,0,0,57,0,0,0,3,0,0,0,1,0,0,0,58,0,0,0,14,0,0,0,48,0,0,0,59,0,0,0,27,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,49,0,0,0,97,117,116,111,109,97,116,105,99,32,101,120,116,101,110,115,105,111,110,32,108,111,97,100,105,110,103,32,102,97,105,108,101,100,58,32,37,115,0,0,77,65,84,67,72,0,0,0,58,109,101,109,111,114,121,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,60,0,0,0,15,0,0,0,16,0,0,0,28,0,0,0,50,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,112,97,103,101,115,32,102,114,111,109,32,37,115,0,0,0,0,0,0,217,213,5,249,32,161,99,215,99,97,110,110,111,116,32,108,105,109,105,116,32,87,65,76,32,115,105,122,101,58,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,102,114,97,109,101,115,32,102,114,111,109,32,87,65,76,32,102,105,108,101,32,37,115,0,0,0,0,45,106,111,117,114,110,97,108,0,0,0,0,0,0,0,0,45,119,97,108,0,0,0,0,110,111,108,111,99,107,0,0,105,109,109,117,116,97,98,108,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,105,108,101,58,0,0,0,108,111,99,97,108,104,111,115,116,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,117,114,105,32,97,117,116,104,111,114,105,116,121,58,32,37,46,42,115,0,0,0,0,0,118,102,115,0,0,0,0,0,99,97,99,104,101,0,0,0,232,58,0,0,0,0,2,0,240,58,0,0,0,0,4,0,0,0,0,0,0,0,0,0,115,104,97,114,101,100,0,0,112,114,105,118,97,116,101,0,109,111,100,101,0,0,0,0,40,59,0,0,1,0,0,0,48,59,0,0,2,0,0,0,56,59,0,0,6,0,0,0,64,59,0,0,128,0,0,0,0,0,0,0,0,0,0,0,114,111,0,0,0,0,0,0,114,119,0,0,0,0,0,0,114,119,99,0,0,0,0,0,109,101,109,111,114,121,0,0,97,99,99,101,115,115,0,0,110,111,32,115,117,99,104,32,37,115,32,109,111,100,101,58,32,37,115,0,0,0,0,0,37,115,32,109,111,100,101,32,110,111,116,32,97,108,108,111,119,101,100,58,32,37,115,0,110,111,32,115,117,99,104,32,118,102,115,58,32,37,115,0,105,110,118,97,108,105,100,0,65,80,73,32,99,97,108,108,32,119,105,116,104,32,37,115,32,100,97,116,97,98,97,115,101,32,99,111,110,110,101,99,116,105,111,110,32,112,111,105,110,116,101,114,0,0,0,0,117,110,97,98,108,101,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,32,37,115,32,105,110,32,116,104,101,32,114,101,113,117,101,115,116,101,100,32,99,111,110,116,101,120,116,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,0,1,2,3,0,1,0,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,117,115,101,114,45,102,117,110,99,116,105,111,110,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,240,60,0,0,0,61,0,0,0,0,0,0,40,61,0,0,72,61,0,0,104,61,0,0,128,61,0,0,160,61,0,0,176,61,0,0,216,61,0,0,232,61,0,0,248,61,0,0,32,62,0,0,56,62,0,0,88,62,0,0,120,62,0,0,144,62,0,0,168,62,0,0,112,39,0,0,200,62,0,0,224,62,0,0,248,62,0,0,32,63,0,0,64,63,0,0,88,63,0,0,120,63,0,0,160,63,0,0,0,0,0,0,110,111,116,32,97,110,32,101,114,114,111,114,0,0,0,0,83,81,76,32,108,111,103,105,99,32,101,114,114,111,114,32,111,114,32,109,105,115,115,105,110,103,32,100,97,116,97,98,97,115,101,0,0,0,0,0,97,99,99,101,115,115,32,112,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,0,0,0,0,0,0,0,99,97,108,108,98,97,99,107,32,114,101,113,117,101,115,116,101,100,32,113,117,101,114,121,32,97,98,111,114,116,0,0,100,97,116,97,98,97,115,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,97,32,114,101,97,100,111,110,108,121,32,100,97,116,97,98,97,115,101,0,0,0,0,105,110,116,101,114,114,117,112,116,101,100,0,0,0,0,0,100,105,115,107,32,73,47,79,32,101,114,114,111,114,0,0,100,97,116,97,98,97,115,101,32,100,105,115,107,32,105,109,97,103,101,32,105,115,32,109,97,108,102,111,114,109,101,100,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,111,112,101,114,97,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,111,114,32,100,105,115,107,32,105,115,32,102,117,108,108,0,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,32,102,105,108,101,0,0,0,0,108,111,99,107,105,110,103,32,112,114,111,116,111,99,111,108,0,0,0,0,0,0,0,0,116,97,98,108,101,32,99,111,110,116,97,105,110,115,32,110,111,32,100,97,116,97,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,104,97,115,32,99,104,97,110,103,101,100,0,0,0,0,0,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,100,97,116,97,116,121,112,101,32,109,105,115,109,97,116,99,104,0,0,0,0,0,0,0,108,105,98,114,97,114,121,32,114,111,117,116,105,110,101,32,99,97,108,108,101,100,32,111,117,116,32,111,102,32,115,101,113,117,101,110,99,101,0,0,108,97,114,103,101,32,102,105,108,101,32,115,117,112,112,111,114,116,32,105,115,32,100,105,115,97,98,108,101,100,0,0,97,117,116,104,111,114,105,122,97,116,105,111,110,32,100,101,110,105,101,100,0,0,0,0,97,117,120,105,108,105,97,114,121,32,100,97,116,97,98,97,115,101,32,102,111,114,109,97,116,32,101,114,114,111,114,0,98,105,110,100,32,111,114,32,99,111,108,117,109,110,32,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,102,105,108,101,32,105,115,32,101,110,99,114,121,112,116,101,100,32,111,114,32,105,115,32,110,111,116,32,97,32,100,97,116,97,98,97,115,101,0,0,117,110,107,110,111,119,110,32,101,114,114,111,114,0,0,0,97,98,111,114,116,32,100,117,101,32,116,111,32,82,79,76,76,66,65,67,75,0,0,0,117,110,97,98,108,101,32,116,111,32,99,108,111,115,101,32,100,117,101,32,116,111,32,117,110,102,105,110,97,108,105,122,101,100,32,115,116,97,116,101,109,101,110,116,115,32,111,114,32,117,110,102,105,110,105,115,104,101,100,32,98,97,99,107,117,112,115,0,0,0,0,0,1,0,0,0,0,0,0,0,61,0,0,0,8,0,0,0,29,0,0,0,7,0,0,0,62,0,0,0,30,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,63,0,0,0,11,0,0,0,52,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,12,0,0,0,0,0,0,0,102,97,105,108,101,100,32,109,101,109,111,114,121,32,114,101,115,105,122,101,32,37,117,32,116,111,32,37,117,32,98,121,116,101,115,0,0,0,0,0,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,117,32,98,121,116,101,115,32,111,102,32,109,101,109,111,114,121,0,0,0,1,0,1,8,1,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,1,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,2,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,56,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,2,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,56,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,64,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,64,73,0,0,0,0,0,0,0,0,0,0,255,255,33,8,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,0,0,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,1,0,33,16,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,255,255,33,8,1,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,0,0,33,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,1,0,33,16,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,1,0,129,8,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,88,73,0,0,0,0,0,0,0,0,0,0,1,0,65,8,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,96,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,104,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,112,73,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,112,73,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,120,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,128,73,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,136,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,144,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,152,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,152,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,160,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,168,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,255,255,1,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,192,73,0,0,0,0,0,0,0,0,0,0,2,0,1,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,200,73,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,208,73,0,0,0,0,0,0,0,0,0,0,2,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,224,73,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,240,73,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,248,73,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,2,0,33,8,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,16,74,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,24,74,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,40,74,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,64,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,80,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,112,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,144,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,152,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,176,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,184,74,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,200,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,208,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,224,74,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,224,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,14,0,0,0,240,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,15,0,0,0,248,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,16,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,17,0,0,0,8,75,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,17,0,0,0,8,75,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,18,0,0,0,16,75,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,18,0,0,0,16,75,0,0,0,0,0,0,0,0,0,0,2,0,13,8,112,40,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,32,75,0,0,0,0,0,0,0,0,0,0,2,0,5,8,40,75,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,48,75,0,0,0,0,0,0,0,0,0,0,3,0,5,8,40,75,0,0,0,0,0,0,40],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+8464);allocate([48,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,116,114,105,109,0,0,0,114,116,114,105,109,0,0,0,116,114,105,109,0,0,0,0,109,105,110,0,0,0,0,0,109,97,120,0,0,0,0,0,116,121,112,101,111,102,0,0,108,101,110,103,116,104,0,0,105,110,115,116,114,0,0,0,115,117,98,115,116,114,0,0,112,114,105,110,116,102,0,0,117,110,105,99,111,100,101,0,99,104,97,114,0,0,0,0,97,98,115,0,0,0,0,0,114,111,117,110,100,0,0,0,117,112,112,101,114,0,0,0,108,111,119,101,114,0,0,0,99,111,97,108,101,115,99,101,0,0,0,0,0,0,0,0,104,101,120,0,0,0,0,0,105,102,110,117,108,108,0,0,117,110,108,105,107,101,108,121,0,0,0,0,0,0,0,0,108,105,107,101,108,105,104,111,111,100,0,0,0,0,0,0,108,105,107,101,108,121,0,0,114,97,110,100,111,109,0,0,114,97,110,100,111,109,98,108,111,98,0,0,0,0,0,0,110,117,108,108,105,102,0,0,115,113,108,105,116,101,95,118,101,114,115,105,111,110,0,0,115,113,108,105,116,101,95,115,111,117,114,99,101,95,105,100,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,108,111,103,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,117,115,101,100,0,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,103,101,116,0,0,0,0,0,0,0,0,113,117,111,116,101,0,0,0,108,97,115,116,95,105,110,115,101,114,116,95,114,111,119,105,100,0,0,0,0,0,0,0,99,104,97,110,103,101,115,0,116,111,116,97,108,95,99,104,97,110,103,101,115,0,0,0,114,101,112,108,97,99,101,0,122,101,114,111,98,108,111,98,0,0,0,0,0,0,0,0,108,111,97,100,95,101,120,116,101,110,115,105,111,110,0,0,115,117,109,0,0,0,0,0,116,111,116,97,108,0,0,0,97,118,103,0,0,0,0,0,99,111,117,110,116,0,0,0,103,114,111,117,112,95,99,111,110,99,97,116,0,0,0,0,103,108,111,98,0,0,0,0,37,95,0,1,0,0,0,0,108,105,107,101,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,168,75,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,192,75,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,216,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,0,0,0,0,37,115,37,46,42,115,34,37,119,34,0,0,0,0,0,0,37,115,37,115,0,0,0,0,37,46,42,115,34,37,119,34,37,115,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,56,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,72,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,80,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,88,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,104,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,120,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,136,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,160,77,0,0,0,0,0,0,0,0,0,0,106,117,108,105,97,110,100,97,121,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,116,105,109,101,0,0,0,0,100,97,116,101,116,105,109,101,0,0,0,0,0,0,0,0,115,116,114,102,116,105,109,101,0,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,115,116,97,109,112,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,100,97,116,101,0,0,0,0,37,48,50,100,0,0,0,0,37,48,54,46,51,102,0,0,37,48,51,100,0,0,0,0,37,46,49,54,103,0,0,0,37,108,108,100,0,0,0,0,37,48,52,100,0,0,0,0,108,111,99,97,108,116,105,109,101,0,0,0,0,0,0,0,117,110,105,120,101,112,111,99,104,0,0,0,0,0,0,0,117,116,99,0,0,0,0,0,119,101,101,107,100,97,121,32,0,0,0,0,0,0,0,0,115,116,97,114,116,32,111,102,32,0,0,0,0,0,0,0,109,111,110,116,104,0,0,0,121,101,97,114,0,0,0,0,100,97,121,0,0,0,0,0,104,111,117,114,0,0,0,0,109,105,110,117,116,101,0,0,115,101,99,111,110,100,0,0,108,111,99,97,108,32,116,105,109,101,32,117,110,97,118,97,105,108,97,98,108,101,0,0,110,111,119,0,0,0,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,32,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,0,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,0,0,76,73,75,69,32,111,114,32,71,76,79,66,32,112,97,116,116,101,114,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,0,0,0,69,83,67,65,80,69,32,101,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,97,32,115,105,110,103,108,101,32,99,104,97,114,97,99,116,101,114,0,0,0,0,44,0,0,0,0,0,0,0,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,37,33,46,49,53,103,0,0,37,33,46,50,48,101,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,78,85,76,76,0,0,0,0,37,46,42,102,0,0,0,0,105,110,116,101,103,101,114,0,116,101,120,116,0,0,0,0,114,101,97,108,0,0,0,0,98,108,111,98,0,0,0,0,110,117,108,108,0,0,0,0,1,0,0,0,0,0,0,0,152,79,0,0,0,0,0,0,32,0,0,0,0,0,0,0,105,110,116,101,114,114,117,112,116,0,0,0,0,0,0,0,117,110,114,101,99,111,103,110,105,122,101,100,32,116,111,107,101,110,58,32,34,37,84,34,0,0,0,0,0,0,0,0,110,101,97,114,32,34,37,84,34,58,32,115,121,110,116,97,120,32,101,114,114,111,114,0,114,111,119,105,100,0,0,0,117,110,107,110,111,119,110,32,116,97,98,108,101,32,111,112,116,105,111,110,58,32,37,46,42,115,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,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,99,111,109,112,111,117,110,100,32,83,69,76,69,67,84,0,0,0,0,0,0,0,115,101,116,32,108,105,115,116,0,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,111,110,32,102,117,110,99,116,105,111,110,32,37,84,0,0,0,0,0,0,0,8,130,0,0,1,0,0,0,168,51,0,0,1,0,0,0,105,110,100,101,120,0,0,0,113,117,97,108,105,102,105,101,100,32,116,97,98,108,101,32,110,97,109,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,73,78,83,69,82,84,44,32,85,80,68,65,84,69,44,32,97,110,100,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,116,104,101,32,73,78,68,69,88,69,68,32,66,89,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,0,116,104,101,32,78,79,84,32,73,78,68,69,88,69,68,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,144,1,145,2,145,1,146,1,146,3,147,0,147,1,147,3,148,1,149,3,151,0,151,1,151,2,150,0,150,1,150,1,150,1,149,2,149,2,149,2,153,1,153,0,149,2,149,3,149,5,149,2,154,6,156,1,158,0,158,3,157,1,157,0,155,5,155,2,162,0,162,2,160,3,160,1,164,3,165,1,152,1,152,1,152,1,166,0,166,1,168,1,168,4,168,6,169,1,169,2,170,1,170,1,167,2,167,0,173,2,173,2,173,4,173,3,173,3,173,2,173,2,173,3,173,5,173,2,173,4,173,4,173,1,173,2,178,0,178,1,180,0,180,2,182,2,182,3,182,3,182,3,183,2,183,2,183,1,183,1,183,2,181,3,181,2,184,0,184,2,184,2,161,0,161,2,185,3,185,1,186,1,186,0,187,2,187,7,187,5,187,5,187,10,189,0,189,1,176,0,176,3,190,0,190,2,191,1,191,1,191,1,149,4,193,2,193,0,149,8,149,4,149,1,163,2,195,1,195,3,198,1,198,2,198,1,196,9,196,1,207,4,207,5,199,1,199,1,199,0,210,2,210,0,200,3,200,2,200,4,211,2,211,1,211,0,201,0,201,2,213,2,213,0,212,7,212,7,212,7,159,0,159,2,194,2,214,1,214,2,214,3,214,4,216,2,216,0,215,0,215,3,215,2,217,4,217,0,205,0,205,3,220,4,220,2,177,1,177,1,177,0,203,0,203,3,204,0,204,2,206,0,206,2,206,4,206,4,149,6,202,0,202,2,149,8,221,5,221,3,149,6,149,7,222,2,222,1,223,0,223,3,219,3,219,1,175,1,175,3,174,1,175,1,175,1,175,3,175,5,174,1,174,1,175,1,175,3,175,6,175,5,175,4,174,1,175,3,175,3,175,3,175,3,175,3,175,3,175,3,175,3,224,1,224,2,175,3,175,5,175,2,175,3,175,3,175,4,175,2,175,2,175,2,175,2,225,1,225,2,175,5,226,1,226,2,175,5,175,3,175,5,175,4,175,4,175,5,228,5,228,4,229,2,229,0,227,1,227,0,209,1,209,0,208,3,208,1,149,12,230,1,230,0,179,0,179,3,188,5,188,3,231,0,231,2,149,4,149,1,149,2,149,3,149,5,149,6,149,5,149,6,232,1,232,1,232,1,232,1,232,1,171,2,171,1,172,2,149,5,233,11,235,1,235,1,235,2,235,0,236,1,236,1,236,3,237,0,237,3,238,0,238,2,234,3,234,2,240,1,240,3,241,0,241,3,241,2,239,7,239,5,239,5,239,1,175,4,175,6,192,1,192,1,192,1,149,4,149,6,149,3,243,0,243,2,242,1,242,0,149,1,149,3,149,1,149,3,149,6,149,6,244,1,245,0,245,1,149,1,149,4,246,8,247,1,247,3,248,0,248,2,249,1,249,3,250,1,251,0,251,4,251,2,197,0,197,2,197,3,252,6,252,8,0,0,238,0,186,3,213,0,33,1,54,1,234,0,144,0,61,1,147,255,126,1,121,1,47,1,205,1,133,1,122,1,112,1,46,1,38,1,253,0,139,1,37,1,68,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,254,3,244,3,237,3,230,3,195,3,193,3,191,3,189,3,182,3,179,3,162,3,144,3,105,3,93,3,55,3,42,3,3,3,247,2,208,2,196,2,158,2,145,2,107,2,102,2,100,2,98,2,96,2,94,2,92,2,86,2,83,2,81,2,68,2,30,2,28,2,25,2,23,2,21,2,19,2,17,2,15,2,247,1,130,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,95,0,191,1,82,0,78,1,248,1,211,1,147,1,221,1,208,1,147,1,147,1,147,1,147,1,92,3,235,2,232,2,17,3,126,2,126,2,158,3,123,3,132,3,131,3,119,3,76,3,72,3,67,3,80,3,62,3,75,3,61,3,24,3,71,3,58,3,225,2,70,3,27,3,21,3,47,0,222,2,18,2,184,2,9,3,199,2,165,2,221,2,218,2,217,2,216,2,215,2,115,2,192,1,64,0,187,0,25,5,22,5,228,4,10,5,249,4,43,5,42,5,41,5,39,5,38,5,36,5,35,5,34,5,33,5,32,5,31,5,30,5,28,5,27,5,24,5,23,5,21,5,18,5,14,5,12,5,9,5,242,4,240,4,235,4,8,5,7,5,214,4,5,5,1,5,0,5,255,4,254,4,227,4,253,4,252,4,251,4,249,4,244,4,243,4,241,4,239,4,237,4,233,4,224,4,213,4,223,4,222,4,219,4,214,4,216,4,211,4,225,4,210,4,209,4,206,4,196,4,190,4,186,4,201,4,195,4,208,4,207,4,173,4,171,4,203,4,200,4,177,4,184,4,218,4,113,4,212,4,205,4,169,4,157,4,197,4,153,4,172,4,155,4,167,4,166,4,162,4,158,4,194,4,192,4,152,4,138,4,159,4,156,4,136,4,175,4,179,4,109,4,71,4,174,4,170,4,164,4,168,4,147,4,145,4,144,4,149,4,150,4,142,4,135,4,117,4,146,4,134,4,143,4,133,4,108,4,121,4,119,4,100,4,104,4,79,4,78,4,76,4,72,4,126,4,125,4,61,4,101,4,56,4,40,4,96,4,73,4,58,4,54,4,49,4,43,4,85,4,83,4,95,4,93,4,92,4,89,4,87,4,84,4,239,3,232,3,234,3,52,4,51,4,57,4,0,0,0,0,50,1,212,0,176,1,187,3,127,2,191,0,187,3,39,1,47,2,88,0,88,0,88,0,88,0,81,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,185,0,184,0,183,0,123,2,123,2,36,1,94,2,94,2,88,0,88,0,88,0,88,0,171,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,16,0,180,1,85,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,172,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,47,2,84,0,84,0,84,0,83,0,74,1,65,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,123,2,123,2,122,2,121,2,182,0,170,2,38,2,123,1,120,1,119,1,17,0,66,1,94,2,94,2,115,1,198,0,223,1,91,0,118,1,82,0,79,0,165,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,86,2,123,2,123,2,107,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,186,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,82,2,82,2,142,0,72,1,71,1,228,1,249,0,88,1,238,0,123,2,123,2,122,2,121,2,73,2,192,1,14,2,13,2,229,0,132,1,1,0,138,1,194,1,72,2,193,1,123,2,123,2,123,2,123,2,63,1,139,1,94,2,94,2,199,0,157,0,17,1,126,1,12,1,125,1,187,0,123,2,123,2,122,2,121,2,55,1,43,2,10,1,81,2,81,2,10,1,91,1,76,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,222,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,16,1,24,2,122,2,121,2,146,0,98,2,197,0,54,1,63,2,182,0,226,1,15,1,123,1,120,1,119,1,250,1,21,0,122,2,121,2,122,2,121,2,123,2,123,2,118,1,99,2,62,2,36,2,184,1,111,0,51,2,94,2,94,2,122,2,121,2,68,1,223,1,96,2,96,2,96,2,44,1,179,1,61,2,119,0,151,1,210,0,162,0,50,2,115,3,80,2,80,2,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,250,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,108,2,111,0,123,2,123,2,105,1,94,2,94,2,102,1,249,0,93,1,248,0,177,1,243,0,223,1,74,2,122,2,121,2,195,0,99,2,93,0,119,0,221,0,63,2,241,1,22,2,22,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,62,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,77,0,173,1,126,2,61,2,77,2,18,2,240,0,230,0,242,0,105,0,249,0,93,1,248,0,3,2,76,2,208,0,204,1,17,2,52,2,173,0,122,2,121,2,202,3,144,0,174,1,2,0,168,1,228,0,124,1,45,2,94,2,94,2,190,0,153,0,159,0,158,0,2,2,51,0,120,2,119,2,118,2,71,0,24,2,176,1,186,3,196,0,98,2,186,3,102,2,45,0,18,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,5,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,96,2,96,2,96,2,30,2,168,1,146,1,129,1,241,0,250,1,195,1,64,1,211,0,31,2,164,0,180,1,130,1,37,1,195,1,75,2,108,0,240,1,111,0,78,1,135,1,79,2,168,1,102,2,27,0,196,1,197,1,94,2,94,2,72,0,1,1,70,0,3,1,196,1,83,1,86,1,52,2,70,2,68,0,159,1,213,1,72,1,71,1,62,0,102,2,45,0,110,0,137,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,152,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,110,0,243,1,8,2,26,2,146,1,133,1,168,1,110,0,54,2,244,1,81,2,81,2,198,1,82,0,79,0,165,0,168,1,79,2,128,1,52,2,84,1,103,2,188,0,162,0,168,1,94,1,104,2,168,1,102,2,44,0,94,2,94,2,189,1,70,2,44,1,178,1,151,0,19,0,102,2,9,0,56,2,68,2,92,1,103,2,213,1,55,2,102,2,26,0,104,2,102,2,45,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,155,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,67,2,110,0,66,2,9,2,26,1,177,1,142,1,144,1,255,0,230,1,82,0,79,0,165,0,231,1,164,0,82,0,79,0,165,0,232,1,232,1,108,1,131,1,168,1,32,2,32,2,253,1,94,1,106,1,155,0,191,0,94,2,94,2,47,2,130,2,128,2,77,1,82,0,79,0,165,0,49,1,52,2,251,1,56,1,101,1,102,2,45,0,73,1,84,2,83,2,194,0,81,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,20,0,67,1,150,0,7,1,211,0,31,2,165,1,84,2,83,2,102,2,22,0,168,1,193,0,168,1,28,1,168,1,135,1,168,1,253,1,168,1,65,2,168,1,186,0,79,1,168,1,47,2,168,1,57,1,120,0,34,2,94,2,94,2,67,0,102,2,47,0,102,2,50,0,102,2,48,0,102,2,100,0,102,2,99,0,102,2,101,0,64,2,102,2,102,0,102,2,109,0,70,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,168,1,55,1,168,1,73,2,54,0,168,1,4,2,5,2,78,2,102,2,112,0,168,1,72,2,168,1,60,2,168,1,195,0,168,1,59,2,168,1,67,0,168,1,102,2,94,0,102,2,98,0,168,1,102,2,97,0,8,1,94,2,94,2,195,0,102,2,46,0,102,2,96,0,102,2,30,0,102,2,49,0,102,2,115,0,102,2,114,0,162,1,229,0,132,1,102,2,113,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,119,0,168,1,78,2,110,0,116,1,94,2,94,2,195,0,53,0,250,0,102,2,29,0,195,0,216,1,182,1,217,2,190,0,46,1,242,1,14,0,11,2,129,2,2,0,102,2,43,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,101,2,196,3,196,3,98,1,94,2,94,2,164,1,56,1,64,0,102,2,42,0,135,1,99,1,27,1,181,1,45,1,255,0,158,1,154,1,239,1,236,1,102,2,28,0,215,1,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,110,0,110,0,110,0,110,0,94,2,94,2,110,0,254,0,13,0,102,2,41,0,20,2,19,2,27,1,225,1,19,2,201,1,28,1,119,0,49,2,100,1,102,2,40,0,28,1,50,1,89,0,78,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,110,0,168,1,85,1,220,0,43,2,94,2,94,2,95,1,43,2,62,1,102,2,95,0,157,1,255,0,83,0,74,1,28,1,28,1,255,0,128,2,77,1,100,1,255,0,102,2,39,0,50,1,100,1,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,61,1,60,1,141,0,209,1,94,2,94,2,219,0,107,2,207,1,102,2,10,0,161,1,206,1,255,0,189,0,254,1,41,2,95,1,207,0,107,1,161,0,102,2,38,0,59,1,218,0,255,0,255,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,76,0,163,1,255,0,3,0,110,3,205,1,168,1,247,0,75,1,75,1,102,2,37,0,217,0,76,0,163,1,134,1,3,0,216,0,215,0,166,1,4,0,75,1,75,1,168,1,35,2,12,0,168,1,33,2,102,2,36,0,168,1,29,2,166,1,168,1,28,2,168,1,214,0,168,1,152,1,168,1,27,2,147,1,93,2,93,2,237,0,102,2,25,0,119,0,102,2,24,0,76,2,152,1,102,2,45,0,118,0,102,2,35,0,102,2,34,0,102,2,33,0,102,2,23,0,76,2,60,0,223,0,91,2,90,2,1,2,122,1,73,0,74,0,140,0,139,0,168,1,110,0,9,1,75,0,170,1,169,1,59,0,168,1,98,2,73,0,74,0,37,2,146,1,148,1,168,1,117,1,75,0,170,1,169,1,92,2,138,0,98,2,102,2,11,0,136,1,76,0,163,1,181,0,3,0,102,2,32,0,15,1,113,1,75,1,75,1,237,1,102,2,31,0,149,0,96,2,96,2,96,2,95,2,15,0,166,1,109,1,102,2,8,0,137,0,233,1,136,0,190,0,96,2,96,2,96,2,95,2,15,0,229,1,176,0,135,0,7,0,252,0,221,1,152,1,174,0,133,0,175,0,218,1,57,0,56,0,132,0,130,0,119,0,76,0,163,1,76,2,3,0,212,1,245,0,208,1,171,0,75,1,75,1,125,0,123,0,200,1,191,1,122,0,190,1,104,0,80,1,231,0,166,1,166,0,154,0,73,0,74,0,76,1,116,0,175,1,121,0,53,1,75,0,170,1,169,1,222,0,106,0,98,2,52,1,125,2,204,0,152,1,117,2,115,2,116,2,6,0,200,0,172,1,171,1,34,1,203,0,110,2,201,0,76,2,62,0,63,0,33,1,66,0,163,1,143,1,3,0,145,1,32,1,92,0,143,0,75,1,75,1,31,1,96,2,96,2,96,2,95,2,15,0,73,0,74,0,227,0,166,1,69,1,69,0,160,1,75,0,170,1,169,1,100,2,156,1,98,2,192,0,61,0,57,2,209,0,140,1,226,0,22,1,225,0,127,1,152,1,15,2,46,2,20,1,21,2,40,2,16,2,65,1,11,2,114,1,252,1,180,0,76,2,238,1,179,0,110,1,117,0,253,0,13,1,10,2,247,1,96,2,96,2,96,2,95,2,15,0,39,2,246,1,58,0,18,1,12,2,178,0,73,0,74,0,48,1,245,1,112,1,47,1,206,0,75,0,170,1,169,1,235,1,104,1,98,2,213,0,177,0,227,1,131,0,89,1,42,1,41,1,40,1,202,0,38,1,224,1,234,1,210,1,134,0,172,0,129,0,188,1,90,1,214,1,128,0,58,1,203,1,103,0,127,0,126,0,148,0,124,0,167,0,187,1,235,0,96,2,96,2,96,2,95,2,15,0,186,1,183,1,111,2,234,0,43,1,145,0,71,2,35,1,121,1,69,2,160,0,119,0,156,0,14,1,124,2,203,3,169,0,23,1,114,2,8,2,113,2,217,1,112,2,170,0,109,2,106,2,119,0,168,0,55,0,153,1,167,1,25,2,97,2,30,1,29,1,149,1,58,2,48,2,44,2,5,0,52,0,202,1,42,2,147,0,11,1,7,2,248,1,6,2,150,1,6,1,239,0,4,1,0,2,87,1,255,1,2,1,97,1,53,2,0,1,224,0,251,0,103,1,21,1,19,1,220,1,219,1,246,0,96,1,244,0,211,1,199,1,236,0,233,0,232,0,51,1,185,1,25,1,205,0,163,0,141,1,24,1,23,2,249,1,74,1,105,2,203,3,203,3,203,3,203,3,111,1,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,82,1,0,0,0,0,0,0,100,117,112,108,105,99,97,116,101,32,87,73,84,72,32,116,97,98,108,101,32,110,97,109,101,58,32,37,115,0,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,0,0,97,117,116,104,111,114,105,122,101,114,32,109,97,108,102,117,110,99,116,105,111,110,0,0,67,82,69,65,84,69,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,37,84,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,116,97,98,108,101,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,48,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,116,97,98,108,101,39,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,116,111,32,97,32,118,105,101,119,0,0,0,115,113,108,105,116,101,95,97,108,116,101,114,116,97,98,95,37,115,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,97,32,116,101,109,112,111,114,97,114,121,32,100,97,116,97,98,97,115,101,32,102,105,108,101,32,102,111,114,32,115,116,111,114,105,110,103,32,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,115,0,0,0,115,113,108,105,116,101,95,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,108,117,109,110,0,67,97,110,110,111,116,32,97,100,100,32,97,32,85,78,73,81,85,69,32,99,111,108,117,109,110,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,82,69,70,69,82,69,78,67,69,83,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,78,85,76,76,32,100,101,102,97,117,108,116,32,118,97,108,117,101,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,78,79,84,32,78,85,76,76,32,99,111,108,117,109,110,32,119,105,116,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,32,78,85,76,76,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,99,111,110,115,116,97,110,116,32,100,101,102,97,117,108,116,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,117,98,115,116,114,40,115,113,108,44,49,44,37,100,41,32,124,124,32,39,44,32,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,37,100,41,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,32,61,32,37,81,0,0,0,0,116,98,108,95,110,97,109,101,61,37,81,0,0,0,0,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,40,37,115,41,0,110,97,109,101,61,37,81,0,37,115,32,79,82,32,110,97,109,101,61,37,81,0,0,0,45,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,111,116,104,101,114,32,116,97,98,108,101,32,111,114,32,105,110,100,101,120,32,119,105,116,104,32,116,104,105,115,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,118,105,101,119,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,40,115,113,108,44,32,37,81,44,32,37,81,41,32,87,72,69,82,69,32,37,115,59,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,115,113,108,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,32,61,32,39,116,114,105,103,103,101,114,39,32,84,72,69,78,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,69,76,83,69,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,40,115,113,108,44,32,37,81,41,32,69,78,68,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,44,32,110,97,109,101,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,61,39,116,97,98,108,101,39,32,84,72,69,78,32,37,81,32,87,72,69,78,32,110,97,109,101,32,76,73,75,69,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,37,37,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,32,84,72,69,78,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,110,97,109,101,44,37,100,43,49,56,41,32,69,76,83,69,32,110,97,109,101,32,69,78,68,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,67,79,76,76,65,84,69,32,110,111,99,97,115,101,32,65,78,68,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,79,82,32,116,121,112,101,61,39,105,110,100,101,120,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,41,59,0,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,0,85,80,68,65,84,69,32,34,37,119,34,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,115,101,116,32,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,110,97,109,101,32,61,32,37,81,0,0,0,0,0,0,0,85,80,68,65,84,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,37,115,59,0,0,0,0,0,118,105,101,119,32,37,115,32,105,115,32,99,105,114,99,117,108,97,114,108,121,32,100,101,102,105,110,101,100,0,0,0,110,111,32,115,117,99,104,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,58,32,37,115,0,0,3,2,1,0,0,0,0,0,37,115,58,37,100,0,0,0,97,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,72,65,86,73,78,71,0,0,0,0,0,79,82,68,69,82,0,0,0,71,82,79,85,80,0,0,0,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,116,104,101,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,0,37,114,32,79,82,68,69,82,32,66,89,32,116,101,114,109,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,97,110,121,32,99,111,108,117,109,110,32,105,110,32,116,104,101,32,114,101,115,117,108,116,32,115,101,116,0,0,0,0,37,114,32,37,115,32,66,89,32,116,101,114,109,32,111,117,116,32,111,102,32,114,97,110,103,101,32,45,32,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,49,32,97,110,100,32,37,100,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,37,115,32,66,89,32,99,108,97,117,115,101,0,0,69,120,112,114,101,115,115,105,111,110,32,116,114,101,101,32,105,115,32,116,111,111,32,108,97,114,103,101,32,40,109,97,120,105,109,117,109,32,100,101,112,116,104,32,37,100,41,0,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,32,116,111,32,108,105,107,101,108,105,104,111,111,100,40,41,32,109,117,115,116,32,98,101,32,97,32,99,111,110,115,116,97,110,116,32,98,101,116,119,101,101,110,32,48,46,48,32,97,110,100,32,49,46,48,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,58,32,37,115,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,0,110,111,32,115,117,99,104,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,115,117,98,113,117,101,114,105,101,115,0,0,0,0,0,0,112,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,67,72,69,67,75,32,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,112,97,114,116,105,97,108,32,105,110,100,101,120,32,87,72,69,82,69,32,99,108,97,117,115,101,115,0,0,0,0,110,101,119,0,0,0,0,0,111,108,100,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,108,105,97,115,101,100,32,97,103,103,114,101,103,97,116,101,32,37,115,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,0,0,97,109,98,105,103,117,111,117,115,32,99,111,108,117,109,110,32,110,97,109,101,0,0,0,37,115,58,32,37,115,46,37,115,46,37,115,0,0,0,0,37,115,58,32,37,115,46,37,115,0,0,0,0,0,0,0,37,115,58,32,37,115,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,0,0,0,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,115,113,108,105,116,101,95,115,113,95,37,112,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,34,37,115,34,58,32,109,97,120,32,54,53,53,51,53,0,0,42,0,0,0,0,0,0,0,37,115,46,37,115,0,0,0,37,115,46,37,115,46,37,115,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,0,110,111,32,116,97,98,108,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,114,101,115,117,108,116,32,115,101,116,0,0,97,32,78,65,84,85,82,65,76,32,106,111,105,110,32,109,97,121,32,110,111,116,32,104,97,118,101,32,97,110,32,79,78,32,111,114,32,85,83,73,78,71,32,99,108,97,117,115,101,0,0,0,0,0,0,0,99,97,110,110,111,116,32,104,97,118,101,32,98,111,116,104,32,79,78,32,97,110,100,32,85,83,73,78,71,32,99,108,97,117,115,101,115,32,105,110,32,116,104,101,32,115,97,109,101,32,106,111,105,110,0,0,99,97,110,110,111,116,32,106,111,105,110,32,117,115,105,110,103,32,99,111,108,117,109,110,32,37,115,32,45,32,99,111,108,117,109,110,32,110,111,116,32,112,114,101,115,101,110,116,32,105,110,32,98,111,116,104,32,116,97,98,108,101,115,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,115,0,0,0,0,0,0,0,109,117,108,116,105,112,108,101,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,114,101,99,117,114,115,105,118,101,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,99,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110,99,101,58,32,37,115,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,109,117,108,116,105,112,108,101,32,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,115,58,32,37,115,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,32,105,110,32,97,32,115,117,98,113,117,101,114,121,58,32,37,115,0,0,0,110,111,32,115,117,99,104,32,109,111,100,117,108,101,58,32,37,115,0,0,0,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,102,97,105,108,101,100,58,32,37,115,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,100,105,100,32,110,111,116,32,100,101,99,108,97,114,101,32,115,99,104,101,109,97,58,32,37,115,0,0,0,104,105,100,100,101,110,0,0,32,104,105,100,100,101,110,0,111,98,106,101,99,116,32,110,97,109,101,32,114,101,115,101,114,118,101,100,32,102,111,114,32,105,110,116,101,114,110,97,108,32,117,115,101,58,32,37,115,0,0,0,0,0,0,0,99,111,114,114,117,112,116,32,100,97,116,97,98,97,115,101,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,84,0,0,0,0,0,105,100,120,0,0,0,0,0,116,98,108,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,56,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,40,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,66,66,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,0,0,0,0,8,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,116,97,116,95,103,101,116,0,0,0,0,0,0,0,0,37,108,108,117,0,0,0,0,32,37,108,108,117,0,0,0,115,116,97,116,95,112,117,115,104,0,0,0,0,0,0,0,115,116,97,116,95,105,110,105,116,0,0,0,0,0,0,0,72,52,0,0,96,112,0,0,112,112,0,0,0,0,0,0,128,112,0,0,0,0,0,0,116,98,108,44,105,100,120,44,115,116,97,116,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,51,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,52,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,37,115,40,37,115,41,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,37,115,61,37,81,0,0,0,117,110,97,98,108,101,32,116,111,32,105,100,101,110,116,105,102,121,32,116,104,101,32,111,98,106,101,99,116,32,116,111,32,98,101,32,114,101,105,110,100,101,120,101,100,0,0,0,44,32,0,0,0,0,0,0,46,0,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,58,32,37,115,40],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+18712);allocate([41,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,40,41,0,0,0,0,0,0,0,0,82,65,73,83,69,40,41,32,109,97,121,32,111,110,108,121,32,98,101,32,117,115,101,100,32,119,105,116,104,105,110,32,97,32,116,114,105,103,103,101,114,45,112,114,111,103,114,97,109,0,0,0,0,0,0,0,69,88,69,67,85,84,69,32,37,115,37,115,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,0,0,0,0,67,79,82,82,69,76,65,84,69,68,32,0,0,0,0,0,76,73,83,84,0,0,0,0,83,67,65,76,65,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,120,0,0,0,0,0,0,104,101,120,32,108,105,116,101,114,97,108,32,116,111,111,32,98,105,103,58,32,37,115,0,1,0,1,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,32,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,100,101,116,97,99,104,0,0,0,110,111,32,115,117,99,104,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,99,97,110,110,111,116,32,100,101,116,97,99,104,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,68,69,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,108,111,99,107,101,100,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,216,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,97,116,116,97,99,104,0,0,0,116,111,111,32,109,97,110,121,32,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,45,32,109,97,120,32,37,100,0,0,0,0,99,97,110,110,111,116,32,65,84,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,97,108,114,101,97,100,121,32,105,110,32,117,115,101,0,0,0,100,97,116,97,98,97,115,101,32,105,115,32,97,108,114,101,97,100,121,32,97,116,116,97,99,104,101,100,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,0,110,111,32,115,117,99,104,32,116,114,105,103,103,101,114,58,32,37,83,0,0,0,0,0,108,0,246,0,97,0,1,0,47,0,1,2,78,2,247,1,97,0,1,0,47,0,0,2,78,2,247,1,95,0,0,0,9,0,254,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,116,114,105,103,103,101,114,32,109,97,121,32,110,111,116,32,104,97,118,101,32,113,117,97,108,105,102,105,101,100,32,110,97,109,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,115,32,111,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,115,0,0,0,0,0,0,0,0,116,114,105,103,103,101,114,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,32,111,110,32,115,121,115,116,101,109,32,116,97,98,108,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,37,115,32,116,114,105,103,103,101,114,32,111,110,32,118,105,101,119,58,32,37,83,0,0,0,0,66,69,70,79,82,69,0,0,65,70,84,69,82,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,73,78,83,84,69,65,68,32,79,70,32,116,114,105,103,103,101,114,32,111,110,32,116,97,98,108,101,58,32,37,83,0,0,0,37,115,32,37,84,32,99,97,110,110,111,116,32,114,101,102,101,114,101,110,99,101,32,111,98,106,101,99,116,115,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,37,115,32,99,97,110,110,111,116,32,117,115,101,32,118,97,114,105,97,98,108,101,115,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,116,114,105,103,103,101,114,39,44,37,81,44,37,81,44,48,44,39,67,82,69,65,84,69,32,84,82,73,71,71,69,82,32,37,113,39,41,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,110,97,109,101,61,39,37,113,39,0,0,0,0,45,37,84,0,0,0,0,0,114,101,115,117,108,116,0,0,16,126,0,0,0,0,0,0,8,0,0,0,0,121,0,0,1,1,0,0,0,0,0,0,32,126,0,0,2,0,0,0,0,0,16,0,48,126,0,0,3,0,0,0,0,0,0,0,128,120,0,0,4,1,0,0,0,0,0,0,64,126,0,0,2,0,0,0,16,0,0,0,80,126,0,0,5,0,0,0,0,0,0,0,104,126,0,0,2,0,0,0,8,0,0,0,128,126,0,0,6,0,0,0,0,0,0,0,144,126,0,0,7,0,0,0,0,0,0,0,160,126,0,0,2,0,0,0,128,0,0,0,176,126,0,0,0,2,0,0,15,0,0,0,192,126,0,0,9,1,0,0,0,0,0,0,208,126,0,0,10,1,0,0,0,0,0,0,232,126,0,0,2,0,0,0,0,0,0,1,0,127,0,0,2,0,0,0,0,1,0,0,40,124,0,0,11,0,0,0,0,0,0,0,24,127,0,0,12,1,0,0,0,0,0,0,48,127,0,0,13,1,0,0,0,0,0,0,72,127,0,0,2,0,0,0,0,0,8,0,88,127,0,0,0,2,0,0,0,0,0,0,104,127,0,0,2,0,0,0,32,0,0,0,128,127,0,0,2,0,0,0,4,0,0,0,144,127,0,0,2,0,0,0,0,32,0,0,176,127,0,0,14,1,0,0,0,0,0,0,200,127,0,0,15,1,0,0,0,0,0,0,216,127,0,0,16,1,0,0,0,0,0,0,232,127,0,0,15,1,0,0,1,0,0,0,232,122,0,0,17,1,0,0,0,0,0,0,216,120,0,0,18,1,0,0,0,0,0,0,232,120,0,0,19,0,0,0,0,0,0,0,248,127,0,0,2,0,0,0,0,128,0,0,200,120,0,0,21,0,0,0,0,0,0,0,16,128,0,0,22,1,0,0,0,0,0,0,40,121,0,0,23,0,0,0,0,0,0,0,32,128,0,0,22,1,0,0,0,0,0,0,144,120,0,0,24,0,0,0,0,0,0,0,48,128,0,0,2,0,0,0,0,0,0,2,64,128,0,0,17,1,0,0,0,0,0,0,80,128,0,0,2,0,0,0,0,64,0,0,104,128,0,0,2,0,0,0,0,0,4,0,128,128,0,0,2,0,0,0,0,0,2,0,160,128,0,0,0,0,0,0,1,0,0,0,160,120,0,0,25,0,0,0,0,0,0,0,176,128,0,0,2,0,0,0,64,0,0,0,200,128,0,0,26,0,0,0,0,0,0,0,232,124,0,0,27,0,0,0,0,0,0,0,216,128,0,0,28,1,0,0,0,0,0,0,128,121,0,0,29,1,0,0,0,0,0,0,224,128,0,0,30,1,0,0,0,0,0,0,56,121,0,0,31,0,0,0,0,0,0,0,72,121,0,0,32,0,0,0,0,0,0,0,248,124,0,0,33,0,0,0,0,0,0,0,240,128,0,0,0,0,0,0,6,0,0,0,200,124,0,0,34,0,0,0,0,0,0,0,0,129,0,0,35,1,0,0,0,0,0,0,16,129,0,0,2,0,0,0,0,8,1,0,0,0,0,0,4,0,0,0,51,0,1,3,137,1,8,0,25,0,2,0,90,1,2,1,137,1,8,0,25,0,1,0,156,0,0,0,35,1,1,0,0,0,0,0,99,97,99,104,101,95,115,105,122,101,0,0,0,0,0,0,112,97,103,101,95,115,105,122,101,0,0,0,0,0,0,0,115,101,99,117,114,101,95,100,101,108,101,116,101,0,0,0,110,111,114,109,97,108,0,0,101,120,99,108,117,115,105,118,101,0,0,0,0,0,0,0,108,111,99,107,105,110,103,95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108,95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108,95,115,105,122,101,95,108,105,109,105,116,0,0,0,0,0,0,97,117,116,111,95,118,97,99,117,117,109,0,0,0,0,0,4,0,1,0,51,0,1,4,45,1,0,0,24,0,2,0,25,0,1,0,52,0,7,1,109,109,97,112,95,115,105,122,101,0,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,95,100,105,114,101,99,116,111,114,121,0,0,0,0,110,111,116,32,97,32,119,114,105,116,97,98,108,101,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,0,0,0,115,121,110,99,104,114,111,110,111,117,115,0,0,0,0,0,83,97,102,101,116,121,32,108,101,118,101,108,32,109,97,121,32,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,105,110,115,105,100,101,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,99,105,100,0,0,0,0,0,110,97,109,101,0,0,0,0,116,121,112,101,0,0,0,0,110,111,116,110,117,108,108,0,100,102,108,116,95,118,97,108,117,101,0,0,0,0,0,0,112,107,0,0,0,0,0,0,116,97,98,108,101,0,0,0,119,105,100,116,104,0,0,0,104,101,105,103,104,116,0,0,115,101,113,110,111,0,0,0,100,101,115,99,0,0,0,0,99,111,108,108,0,0,0,0,107,101,121,0,0,0,0,0,115,101,113,0,0,0,0,0,117,110,105,113,117,101,0,0,111,114,105,103,105,110,0,0,112,97,114,116,105,97,108,0,99,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,88,122,0,0,96,122,0,0,248,121,0,0,0,0,0,0,102,105,108,101,0,0,0,0,105,100,0,0,0,0,0,0,102,114,111,109,0,0,0,0,116,111,0,0,0,0,0,0,111,110,95,117,112,100,97,116,101,0,0,0,0,0,0,0,111,110,95,100,101,108,101,116,101,0,0,0,0,0,0,0,109,97,116,99,104,0,0,0,78,79,78,69,0,0,0,0,112,97,114,101,110,116,0,0,102,107,105,100,0,0,0,0,138,1,0,0,97,0,3,0,35,3,1,0,0,0,0,0,105,110,116,101,103,114,105,116,121,95,99,104,101,99,107,0,42,42,42,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,32,42,42,42,10,0,78,85,76,76,32,118,97,108,117,101,32,105,110,32,37,115,46,37,115,0,0,0,0,0,114,111,119,32,0,0,0,0,32,109,105,115,115,105,110,103,32,102,114,111,109,32,105,110,100,101,120,32,0,0,0,0,110,111,110,45,117,110,105,113,117,101,32,101,110,116,114,121,32,105,110,32,105,110,100,101,120,32,0,0,0,0,0,0,119,114,111,110,103,32,35,32,111,102,32,101,110,116,114,105,101,115,32,105,110,32,105,110,100,101,120,32,0,0,0,0,111,107,0,0,0,0,0,0,216,123,0,0,1,0,0,0,224,123,0,0,1,0,0,0,232,123,0,0,2,0,0,0,248,123,0,0,3,0,0,0,8,124,0,0,2,0,0,0,16,124,0,0,3,0,0,0,24,124,0,0,0,0,0,0,32,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,84,70,56,0,0,0,0,85,84,70,45,56,0,0,0,85,84,70,45,49,54,108,101,0,0,0,0,0,0,0,0,85,84,70,45,49,54,98,101,0,0,0,0,0,0,0,0,85,84,70,49,54,108,101,0,85,84,70,49,54,98,101,0,85,84,70,45,49,54,0,0,85,84,70,49,54,0,0,0,101,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,101,110,99,111,100,105,110,103,58,32,37,115,0,0,0,0,0,0,0,0,4,0,1,0,25,0,1,0,52,0,0,1,0,0,0,0,4,0,0,0,51,0,1,0,35,1,1,0,0,0,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,0,0,102,117,108,108,0,0,0,0,114,101,115,116,97,114,116,0,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,0,98,117,115,121,0,0,0,0,108,111,103,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,101,100,0,0,0,0,119,97,108,95,97,117,116,111,99,104,101,99,107,112,111,105,110,116,0,0,0,0,0,0,116,105,109,101,111,117,116,0,115,111,102,116,95,104,101,97,112,95,108,105,109,105,116,0,116,104,114,101,97,100,115,0,37,95,0,0,0,0,0,0,102,111,114,101,105,103,110,32,107,101,121,32,109,105,115,109,97,116,99,104,32,45,32,34,37,119,34,32,114,101,102,101,114,101,110,99,105,110,103,32,34,37,119,34,0,0,0,0,83,69,84,32,78,85,76,76,0,0,0,0,0,0,0,0,83,69,84,32,68,69,70,65,85,76,84,0,0,0,0,0,67,65,83,67,65,68,69,0,82,69,83,84,82,73,67,84,0,0,0,0,0,0,0,0,78,79,32,65,67,84,73,79,78,0,0,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,115,116,111,114,97,103,101,32,99,97,110,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,110,111,110,101,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,0,0,0,0,0,240,125,0,0,248,125,0,0,0,126,0,0,152,124,0,0,64,59,0,0,8,126,0,0,100,101,108,101,116,101,0,0,112,101,114,115,105,115,116,0,111,102,102,0,0,0,0,0,119,97,108,0,0,0,0,0,97,112,112,108,105,99,97,116,105,111,110,95,105,100,0,0,97,117,116,111,109,97,116,105,99,95,105,110,100,101,120,0,98,117,115,121,95,116,105,109,101,111,117,116,0,0,0,0,99,97,99,104,101,95,115,112,105,108,108,0,0,0,0,0,99,97,115,101,95,115,101,110,115,105,116,105,118,101,95,108,105,107,101,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,95,102,117,108,108,102,115,121,110,99,0,0,0,0,99,111,108,108,97,116,105,111,110,95,108,105,115,116,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,115,0,99,111,117,110,116,95,99,104,97,110,103,101,115,0,0,0,100,97,116,97,95,118,101,114,115,105,111,110,0,0,0,0,100,97,116,97,98,97,115,101,95,108,105,115,116,0,0,0,100,101,102,97,117,108,116,95,99,97,99,104,101,95,115,105,122,101,0,0,0,0,0,0,100,101,102,101,114,95,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,0,0,101,109,112,116,121,95,114,101,115,117,108,116,95,99,97,108,108,98,97,99,107,115,0,0,102,111,114,101,105,103,110,95,107,101,121,95,99,104,101,99,107,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,95,108,105,115,116,0,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,102,114,101,101,108,105,115,116,95,99,111,117,110,116,0,0,102,117,108,108,95,99,111,108,117,109,110,95,110,97,109,101,115,0,0,0,0,0,0,0,102,117,108,108,102,115,121,110,99,0,0,0,0,0,0,0,105,103,110,111,114,101,95,99,104,101,99,107,95,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,95,118,97,99,117,117,109,0,0,0,0,0,0,105,110,100,101,120,95,105,110,102,111,0,0,0,0,0,0,105,110,100,101,120,95,108,105,115,116,0,0,0,0,0,0,105,110,100,101,120,95,120,105,110,102,111,0,0,0,0,0,108,101,103,97,99,121,95,102,105,108,101,95,102,111,114,109,97,116,0,0,0,0,0,0,109,97,120,95,112,97,103,101,95,99,111,117,110,116,0,0,112,97,103,101,95,99,111,117,110,116,0,0,0,0,0,0,113,117,101,114,121,95,111,110,108,121,0,0,0,0,0,0,113,117,105,99,107,95,99,104,101,99,107,0,0,0,0,0,114,101,97,100,95,117,110,99,111,109,109,105,116,116,101,100,0,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,95,116,114,105,103,103,101,114,115,0,0,0,0,0,0,114,101,118,101,114,115,101,95,117,110,111,114,100,101,114,101,100,95,115,101,108,101,99,116,115,0,0,0,0,0,0,0,115,99,104,101,109,97,95,118,101,114,115,105,111,110,0,0,115,104,111,114,116,95,99,111,108,117,109,110,95,110,97,109,101,115,0,0,0,0,0,0,115,104,114,105,110,107,95,109,101,109,111,114,121,0,0,0,115,116,97,116,115,0,0,0,116,97,98,108,101,95,105,110,102,111,0,0,0,0,0,0,117,115,101,114,95,118,101,114,115,105,111,110,0,0,0,0,119,97,108,95,99,104,101,99,107,112,111,105,110,116,0,0,119,114,105,116,97,98,108,101,95,115,99,104,101,109,97,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,83,0,0,0,0,0,0,0,105,110,100,101,120,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32,85,78,73,81,85,69,32,111,114,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,99,97,110,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,110,97,109,101,61,37,81,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,114,111,111,116,112,97,103,101,61,37,100,32,87,72,69,82,69,32,35,37,100,32,65,78,68,32,114,111,111,116,112,97,103,101,61,35,37,100,0,115,113,108,105,116,101,95,115,116,97,116,37,100,0,0,0,48,0,0,0,0,0,0,0,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,109,117,115,116,32,98,101,32,98,101,116,119,101,101,110,32,63,49,32,97,110,100,32,63,37,100,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,83,81,76,32,118,97,114,105,97,98,108,101,115,0,0,116,97,98,108,101,32,37,83,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,116,97,98,108,101,32,37,83,32,104,97,115,32,37,100,32,99,111,108,117,109,110,115,32,98,117,116,32,37,100,32,118,97,108,117,101,115,32,119,101,114,101,32,115,117,112,112,108,105,101,100,0,0,0,0,0,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,0,114,111,119,115,32,105,110,115,101,114,116,101,100,0,0,0,97,116,32,109,111,115,116,32,37,100,32,116,97,98,108,101,115,32,105,110,32,97,32,106,111,105,110,0,0,0,0,0,65,63,62,64,0,0,0,0,0,0,108,105,65,62,64,63,116,114,113,115,0,0,0,0,9,8,0,0,0,0,0,0,108,105,0,0,0,0,0,0,83,69,65,82,67,72,0,0,83,67,65,78,0,0,0,0,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,32,84,65,66,76,69,32,37,115,0,0,0,0,0,0,0,32,65,83,32,37,115,0,0,80,82,73,77,65,82,89,32,75,69,89,0,0,0,0,0,65,85,84,79,77,65,84,73,67,32,80,65,82,84,73,65,76,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,0,0,0,0,0,0,0,65,85,84,79,77,65,84,73,67,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,0,0,0,0,0,0,0,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,0,32,85,83,73,78,71,32,0,40,114,111,119,105,100,61,63,41,0,0,0,0,0,0,0,40,114,111,119,105,100,62,63,32,65,78,68,32,114,111,119,105,100,60,63,41,0,0,0,40,114,111,119,105,100,62,63,41,0,0,0,0,0,0,0,40,114,111,119,105,100,60,63,41,0,0,0,0,0,0,0,32,85,83,73,78,71,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,32,0,0,0,0,0,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,73,78,68,69,88,32,37,100,58,37,115,0,0,0,0,0,0,32,40,0,0,0,0,0,0,61,0,0,0,0,0,0,0,32,65,78,68,32,0,0,0,65,78,89,40,37,115,41,0,62,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,97,117,116,111,109,97,116,105,99,32,105,110,100,101,120,32,111,110,32,37,115,40,37,115,41,0,0,0,0,0,0,0,97,117,116,111,45,105,110,100,101,120,0,0,0,0,0,0,110,111,32,113,117,101,114,121,32,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,10,10,9,9,8,8,7,7,7,6,6,6,5,5,5,4,4,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,37,115,46,120,66,101,115,116,73,110,100,101,120,40,41,32,109,97,108,102,117,110,99,116,105,111,110,0,0,0,0,0,116,97,98,108,101,32,37,115,58,32,120,66,101,115,116,73,110,100,101,120,32,114,101,116,117,114,110,101,100,32,97,110,32,105,110,118,97,108,105,100,32,112,108,97,110,0,0,0,83,81,0,0,0,0,0,0,45,45,32,84,82,73,71,71,69,82,32,37,115,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,2,0,1,0,1,1,4,36,1,4,5,16,0,2,2,2,2,0,2,2,0,0,32,0,0,4,5,4,4,0,0,1,1,5,5,0,0,0,2,2,16,0,0,0,0,0,0,0,0,0,17,17,17,17,8,17,17,17,17,76,76,2,2,0,5,5,21,21,21,21,21,21,0,76,76,76,76,76,76,76,76,76,76,0,36,2,0,0,0,0,0,2,0,1,1,1,1,8,8,0,2,1,1,1,1,2,0,0,2,2,0,0,0,0,0,0,12,69,21,1,2,2,0,1,8,5,5,5,5,5,0,1,0,0,0,0,0,0,0,1,0,2,2,1,0,0,0,0,16,16,2,16,0,0,0,0,0,1,2,3,4,6,8,8,0,0,0,0,0,0,0,0,176,107,0,0,3,0,0,0,168,107,0,0,3,0,0,0,111,105,100,0,0,0,0,0,70,79,82,69,73,71,78,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,37,115,46,114,111,119,105,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,109,111,100,105,102,105,101,100,0,0,0,0,99,97,110,110,111,116,32,109,111,100,105,102,121,32,37,115,32,98,101,99,97,117,115,101,32,105,116,32,105,115,32,97,32,118,105,101,119,0,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,37,115,0,0,0,0,0,0,114,111,119,115,32,117,112,100,97,116,101,100,0,0,0,0,95,114,111,119,105,100,95,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,37,115,0,0,114,111,119,115,32,100,101,108,101,116,101,100,0,0,0,0,110,97,116,117,114,97,108,101,102,116,111,117,116,101,114,105,103,104,116,102,117,108,108,105,110,110,101,114,99,114,111,115,115,0,0,0,0,0,0,0,0,7,4,6,4,40,10,5,32,14,5,48,19,4,56,23,5,1,28,5,3,0,0,0,117,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,106,111,105,110,32,116,121,112,101,58,32,37,84,32,37,84,37,115,37,84,0,0,0,0,0,82,73,71,72,84,32,97,110,100,32,70,85,76,76,32,79,85,84,69,82,32,74,79,73,78,115,32,97,114,101,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,0,0,97,32,74,79,73,78,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,37,115,0,0,0,0,0,79,78,0,0,0,0,0,0,85,83,73,78,71,0,0,0,68,73,83,84,73,78,67,84,0,0,0,0,0,0,0,0,71,82,79,85,80,32,66,89,0,0,0,0,0,0,0,0,82,73,71,72,84,32,80,65,82,84,32,79,70,32,79,82,68,69,82,32,66,89,0,0,79,82,68,69,82,32,66,89,0,0,0,0,0,0,0,0,99,111,108,117,109,110,37,100,0,0,0,0,0,0,0,0,83,67,65,78,32,84,65,66,76,69,32,37,115,37,115,37,115,0,0,0,0,0,0,0,32,85,83,73,78,71,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,0,0,68,73,83,84,73,78,67,84,32,97,103,103,114,101,103,97,116,101,115,32,109,117,115,116,32,104,97,118,101,32,101,120,97,99,116,108,121,32,111,110,101,32,97,114,103,117,109,101,110,116,0,0,0,0,0,0,85,83,69,32,84,69,77,80,32,66,45,84,82,69,69,32,70,79,82,32,37,115,0,0,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,76,73,77,73,84,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,0,0,0,67,79,77,80,79,85,78,68,32,83,85,66,81,85,69,82,73,69,83,32,37,100,32,65,78,68,32,37,100,32,37,115,40,37,115,41,0,0,0,0,85,83,73,78,71,32,84,69,77,80,32,66,45,84,82,69,69,32,0,0,0,0,0,0,97,108,108,32,86,65,76,85,69,83,32,109,117,115,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,116,101,114,109,115,0,0,0,83,69,76,69,67,84,115,32,116,111,32,116,104,101,32,108,101,102,116,32,97,110,100,32,114,105,103,104,116,32,111,102,32,37,115,32,100,111,32,110,111,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,117,108,116,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,85,78,73,79,78,32,65,76,76,0,0,0,0,0,0,0,73,78,84,69,82,83,69,67,84,0,0,0,0,0,0,0,69,88,67,69,80,84,0,0,85,78,73,79,78,0,0,0,111,110,108,121,32,97,32,115,105,110,103,108,101,32,114,101,115,117,108,116,32,97,108,108,111,119,101,100,32,102,111,114,32,97,32,83,69,76,69,67,84,32,116,104,97,116,32,105,115,32,112,97,114,116,32,111,102,32,97,110,32,101,120,112,114,101,115,115,105,111,110,0,112,97,114,97,109,101,116,101,114,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,118,105,101,119,115,0,0,0,0,0,118,105,101,119,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,117,115,101,32,68,82,79,80,32,84,65,66,76,69,32,116,111,32,100,101,108,101,116,101,32,116,97,98,108,101,32,37,115,0,0,0,0,0,0,0,117,115,101,32,68,82,79,80,32,86,73,69,87,32,116,111,32,100,101,108,101,116,101,32,118,105,101,119,32,37,115,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,87,72,69,82,69,32,110,97,109,101,61,37,81,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,97,110,100,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,102,111,114,101,105,103,110,32,107,101,121,32,111,110,32,37,115,32,115,104,111,117,108,100,32,114,101,102,101,114,101,110,99,101,32,111,110,108,121,32,111,110,101,32,99,111,108,117,109,110,32,111,102,32,116,97,98,108,101,32,37,84,0,0,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,116,104,101,32,114,101,102,101,114,101,110,99,101,100,32,116,97,98,108,101,0,0,0,117,110,107,110,111,119,110,32,99,111,108,117,109,110,32,34,37,115,34,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,101,102,105,110,105,116,105,111,110,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32,84,69,77,80,32,105,110,100,101,120,32,111,110,32,110,111,110,45,84,69,77,80,32,116,97,98,108,101,32,34,37,115,34,0,0,0,0,0,0,0,97,108,116,101,114,116,97,98,95,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,118,105,101,119,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,32,116,97,98,108,101,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,0,105,110,100,101,120,32,37,115,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,37,115,95,37,100,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,99,111,110,102,108,105,99,116,105,110,103,32,79,78,32,67,79,78,70,76,73,67,84,32,99,108,97,117,115,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,0,67,82,69,65,84,69,37,115,32,73,78,68,69,88,32,37,46,42,115,0,0,0,0,0,32,85,78,73,81,85,69,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,105,110,100,101,120,39,44,37,81,44,37,81,44,35,37,100,44,37,81,41,59,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,116,97,98,108,101,32,34,37,115,34,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,112,114,105,109,97,114,121,32,107,101,121,0,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,105,115,32,111,110,108,121,32,97,108,108,111,119,101,100,32,111,110,32,97,110,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,0,100,101,102,97,117,108,116,32,118,97,108,117,101,32,111,102,32,99,111,108,117,109,110,32,91,37,115,93,32,105,115,32,110,111,116,32,99,111,110,115,116,97,110,116,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,111,110,32,37,115,0,0,100,117,112,108,105,99,97,116,101,32,99,111,108,117,109,110,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,87,73,84,72,79,85,84,32,82,79,87,73,68,32,116,97,98,108,101,115,0,0,0,0,0,0,0,80,82,73,77,65,82,89,32,75,69,89,32,109,105,115,115,105,110,103,32,111,110,32,116,97,98,108,101,32,37,115,0,84,65,66,76,69,0,0,0,86,73,69,87,0,0,0,0,67,82,69,65,84,69,32,37,115,32,37,46,42,115,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,37,115,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,35,37,100,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,40,110,97,109,101,44,115,101,113,41,0,0,0,0,0,0,0,116,98,108,95,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,0,0,0,0,0,0,10,32,32,0,0,0,0,0,44,10,32,32,0,0,0,0,10,41,0,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,0,0,0,120,40,0,0,80,144,0,0,88,144,0,0,96,144,0,0,104,144,0,0,0,0,0,0,32,84,69,88,84,0,0,0,32,78,85,77,0,0,0,0,32,73,78,84,0,0,0,0,32,82,69,65,76,0,0,0,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,117,110,113,117,97,108,105,102,105,101,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,32,105,110,100,101,120,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,240,144,0,0,248,144,0,0,0,145,0,0,0,0,0,0,66,69,71,73,78,0,0,0,82,69,76,69,65,83,69,0,82,79,76,76,66,65,67,75,0,0,0,0,0,0,0,0,67,79,77,77,73,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,97,114,115,101,114,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,0,224,3,33,4,75,5,132,4,180,4,180,4,1,0,6,1,237,255,135,0,135,0,8,3,180,4,180,4,180,4,180,4,69,0,69,0,53,0,208,0,27,1,243,2,58,0,213,2,136,2,59,2,238,1,161,1,84,1,7,1,212,0,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,110,3,59,3,161,3,212,3,212,3,46,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,234,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,185,255,209,255,209,255,209,255,209,255,209,255,0,0,29,0,244,255,27,1,27,1,139,0,91,0,136,1,136,1,126,3,160,2,214,2,103,5,170,255,170,255,170,255,88,0,62,1,62,1,99,0,125,1,236,255,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,112,2,108,3,214,2,160,2,60,5,60,5,60,5,60,5,60,5,60,5,170,255,170,255,170,255,49,1,136,0,136,0,142,0,167,0,226,0,154,0,137,0,152,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,80,1,80,1,80,1,27,1,27,1,96,1,27,1,27,1,27,1,27,1,27,1,228,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,245,1,57,2,84,2,84,2,84,2,251,1,241,1,185,1,135,1,97,1,156,0,156,0,89,3,97,1,89,3,223,2,45,3,127,2,203,2,156,0,76,1,203,2,203,2,240,1,163,1,134,2,77,5,160,4,160,4,55,5,55,5,160,4,61,5,236,4,120,4,66,5,66,5,66,5,66,5,160,4,26,5,120,4,61,5,236,4,236,4,120,4,160,4,26,5,182,4,4,5,160,4,160,4,26,5,160,4,26,5,160,4,26,5,238,4,183,4,183,4,183,4,250,4,238,4,183,4,193,4,183,4,250,4,183,4,183,4,161,4,176,4,161,4,176,4,161,4,176,4,160,4,160,4,137,4,238,4,178,4,178,4,238,4,130,4,131,4,123,4,128,4,120,4,217,4,215,4,226,4,226,4,230,4,230,4,230,4,230,4,170,255,170,255,170,255,170,255,170,255,170,255,44,4,48,1,14,2,249,0,152,1,173,255,178,1,44,3,27,0,43,3,39,3,34,3,239,2,77,2,139,2,163,0,131,0,162,2,110,1,194,1,43,1,148,0,23,0,102,0,229,0,235,255,221,4,220,4,198,4,75,4,204,4,148,4,199,4,191,4,189,4,91,4,82,4,99,4,86,4,185,4,81,4,188,4,202,4,74,4,65,4,116,4,115,4,80,4,165,4,154,4,70,4,187,4,181,4,163,4,77,4,47,4,129,4,151,4,122,4,114,4,127,4,67,4,140,4,141,4,139,4,45,4,48,4,124,4,88,4,110,4,103,4,105,4,102,4,68,4,90,4,94,4,64,4,66,4,69,4,63,4,60,4,219,3,55,4,53,4,50,4,41,4,156,3,253,3,246,3,236,3,238,3,51,3,227,2,128,3,87,3,36,3,227,2,228,2,224,2,178,2,142,2,153,2,106,2,70,2,56,2,16,2,42,2,123,1,20,2,223,1,199,1,123,1,176,1,115,1,85,1,28,0,82,1,116,0,245,255,199,255,171,255,7,0,248,255,3,0,0,0,0,0,135,2,196,3,196,3,196,3,110,3,110,3,201,3,196,3,6,3,34,3,34,3,170,3,201,3,201,3,201,3,108,3,201,3,201,3,201,3,196,3,201,3,10,3,40,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,169,3,171,3,48,3,47,3,150,3,21,3,45,3,38,3,42,3,111,3,104,3,105,3,103,3,107,3,112,3,201,3,41,3,73,3,88,3,72,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,82,3,87,3,94,3,86,3,83,3,75,3,74,3,76,3,77,3,201,3,201,3,161,2,227,2,201,3,201,3,78,3,201,3,173,2,79,3,91,3,90,3,89,3,168,2,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,135,2,196,3,201,3,201,3,196,3,196,3,196,3,196,3,196,3,196,3,188,3,10,3,0,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,176,3,174,3,201,3,123,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,141,2,201,3,143,3,6,3,6,3,6,3,8,3,242,2,254,2,143,2,44,3,23,3,23,3,155,3,44,3,155,3,198,2,221,2,195,2,34,3,23,3,106,3,34,3,34,3,7,3,254,2,201,3,181,3,14,3,14,3,173,3,173,3,14,3,53,3,231,2,44,3,238,2,238,2,238,2,238,2,14,3,158,2,44,3,53,3,231,2,231,2,44,3,14,3,158,2,149,3,147,3,14,3,14,3,158,2,14,3,158,2,14,3,158,2,116,3,229,2,229,2,229,2,213,2,116,3,229,2,198,2,229,2,213,2,229,2,229,2,27,3,22,3,27,3,22,3,27,3,22,3,14,3,14,3,201,3,116,3,120,3,120,3,116,3,39,3,28,3,37,3,35,3,44,3,164,2,216,2,151,2,151,2,140,2,140,2,140,2,140,2,193,3,193,3,188,3,200,2,200,2,183,2,201,3,201,3,201,3,201,3,201,3,201,3,175,2,201,3,125,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,60,3,201,3,136,2,183,3,201,3,201,3,180,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,153,3,201,3,201,3,201,3,201,3,201,3,201,3,146,3,145,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,245,2,201,3,201,3,201,3,249,2,201,3,201,3,201,3,201,3,201,3,201,3,36,3,201,3,29,3,201,3,109,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,198,3,201,3,201,3,201,3,197,3,201,3,201,3,201,3,201,3,201,3,62,3,201,3,61,3,65,3,201,3,149,2,201,3,132,2,137,2,192,3,195,3,194,3,191,3,190,3,189,3,184,3,182,3,179,3,178,3,177,3,175,3,172,3,168,3,129,3,127,3,134,3,133,3,132,3,131,3,130,3,128,3,126,3,124,3,50,3,49,3,46,3,43,3,241,2,167,3,122,3,240,2,237,2,236,2,157,2,185,3,152,3,161,3,160,3,159,3,54,3,158,3,157,3,156,3,154,3,151,3,138,3,52,3,51,3,232,2,114,3,113,3,160,2,142,3,141,3,140,3,144,3,148,3,139,3,16,3,239,2,159,2,156,2,163,2,167,2,219,2,220,2,228,2,226,2,225,2,224,2,223,2,222,2,218,2,169,2,174,2,212,2,197,2,196,2,205,2,204,2,210,2,209,2,208,2,207,2,206,2,203,2,202,2,201,2,194,2,193,2,199,2,192,2,215,2,214,2,211,2,191,2,235,2,234,2,233,2,230,2,190,2,189,2,188,2,65,3,187,2,186,2,70,3,69,3,98,3,58,3,243,2,247,2,246,2,250,2,251,2,3,3,2,3,1,3,12,3,13,3,25,3,24,3,56,3,55,3,26,3,11,3,5,3,4,3,20,3,19,3,18,3,17,3,9,3,255,2,31,3,30,3,100,3,15,3,99,3,97,3,166,3,165,3,164,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+28952);allocate([163,3,162,3,102,3,199,3,200,3,119,3,121,3,118,3,33,3,32,3,117,3,101,3,71,3,68,3,178,2,179,2,137,3,136,3,135,3,181,2,180,2,177,2,176,2,95,3,92,3,84,3,96,3,93,3,85,3,81,3,80,3,66,3,64,3,63,3,59,3,67,3,248,2,244,2,57,3,253,2,252,2,185,2,184,2,182,2,166,2,165,2,162,2,155,2,153,2,152,2,154,2,150,2,148,2,147,2,146,2,145,2,144,2,172,2,171,2,170,2,142,2,139,2,138,2,134,2,133,2,131,2,0,0,0,0,19,22,22,23,1,24,26,15,27,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,108,109,110,27,28,23,50,51,80,81,82,83,122,85,86,87,88,89,90,91,92,93,94,95,22,70,23,71,72,73,74,75,76,77,78,79,80,81,82,83,122,85,86,87,88,89,90,91,92,93,94,95,19,97,91,92,93,94,95,26,85,86,87,88,89,90,91,92,93,94,95,27,28,97,98,99,122,211,102,103,104,79,19,50,51,19,122,59,55,113,224,225,226,89,90,91,92,93,94,95,23,27,28,26,71,72,73,74,75,76,77,78,79,80,81,82,83,51,85,86,87,88,89,90,91,92,93,94,95,19,132,133,58,89,90,21,108,109,110,27,28,97,98,33,100,7,8,119,120,22,19,107,42,109,27,28,27,28,95,28,50,51,99,100,101,102,103,104,105,27,28,97,98,107,152,112,132,133,112,65,69,71,72,73,74,75,76,77,78,79,80,81,82,83,11,85,86,87,88,89,90,91,92,93,94,95,19,101,97,97,98,24,101,122,157,12,99,103,112,102,103,104,152,22,97,98,97,98,27,28,113,27,29,91,164,165,124,50,51,97,98,219,59,132,133,134,22,23,45,66,47,212,213,124,140,132,133,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,164,165,27,28,230,50,51,233,108,109,110,70,16,59,23,97,98,26,97,22,66,185,12,187,27,28,71,72,73,74,75,76,77,78,79,80,81,82,83,29,85,86,87,88,89,90,91,92,93,94,95,19,22,148,149,45,23,47,62,154,64,156,108,109,110,37,69,23,163,59,26,26,97,98,144,145,146,147,152,200,52,23,50,51,26,22,89,90,60,210,7,8,9,138,97,22,23,26,101,26,174,175,197,71,72,73,74,75,76,77,78,79,80,81,82,83,16,85,86,87,88,89,90,91,92,93,94,95,19,132,133,134,23,152,208,209,140,152,152,111,195,196,98,70,163,160,152,23,22,164,165,246,207,27,152,174,175,171,172,50,51,137,62,139,64,171,172,222,124,27,138,24,163,89,90,130,174,175,197,163,71,72,73,74,75,76,77,78,79,80,81,82,83,22,85,86,87,88,89,90,91,92,93,94,95,19,197,181,182,23,208,209,152,197,26,189,132,133,232,224,225,226,152,97,91,26,232,116,212,213,152,222,121,152,174,175,50,51,243,97,22,23,22,234,174,175,177,23,239,116,163,177,174,175,121,174,175,71,72,73,74,75,76,77,78,79,80,81,82,83,24,85,86,87,88,89,90,91,92,93,94,95,19,23,197,11,23,227,70,208,220,152,31,224,225,226,35,98,224,225,226,108,109,110,115,152,117,118,27,222,49,123,24,50,51,27,0,1,2,224,225,226,166,124,168,169,239,174,175,170,171,172,22,194,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,22,208,24,23,195,196,170,171,172,174,175,152,26,152,152,152,207,152,97,152,23,152,51,244,152,97,152,247,248,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,23,174,175,174,175,188,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,152,107,152,33,24,152,100,101,27,174,175,152,42,152,23,152,26,152,23,152,26,152,174,175,174,175,152,174,175,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,163,119,120,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,66,152,97,197,23,50,51,26,53,23,174,175,26,23,23,23,26,26,26,36,106,146,147,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,196,119,120,19,50,51,168,169,26,174,175,207,28,152,249,250,152,163,163,163,163,174,175,163,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,197,197,197,197,50,51,197,194,36,174,175,191,192,152,191,192,163,152,66,124,152,174,175,152,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,197,152,100,188,152,50,51,152,152,188,174,175,252,152,94,95,152,152,152,1,2,152,152,174,175,19,152,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,188,188,22,194,50,51,240,173,194,174,175,252,194,152,36,181,28,152,23,219,122,174,175,219,221,152,152,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,20,152,22,23,194,152,240,27,28,174,175,240,19,20,26,22,194,194,38,22,27,28,152,23,22,152,116,174,175,152,23,38,152,23,152,221,152,57,152,23,163,50,51,194,174,175,66,174,175,69,57,174,175,40,174,175,174,175,174,175,174,175,69,22,53,74,75,30,53,89,90,22,22,152,197,23,96,97,98,22,152,101,89,90,91,208,209,152,53,96,97,98,101,22,101,174,175,152,19,20,105,22,174,175,112,19,27,28,20,174,175,24,132,133,134,135,136,38,44,174,175,107,61,54,26,132,133,134,135,136,54,107,22,5,140,1,57,36,111,122,28,79,79,131,123,66,19,20,69,22,1,16,20,125,27,28,123,111,120,23,131,23,16,68,142,38,15,22,89,90,3,167,4,248,251,96,97,98,180,180,101,251,151,6,57,151,13,151,26,25,151,161,202,153,162,153,69,130,128,203,19,20,127,22,126,204,129,22,27,28,205,132,133,134,135,136,89,90,231,38,95,137,179,96,97,98,206,179,101,122,107,159,159,125,231,216,228,107,57,184,217,216,176,217,176,48,106,18,184,158,69,159,158,46,71,237,176,176,176,132,133,134,135,136,217,176,137,216,178,158,89,90,179,176,159,179,159,96,97,98,159,159,101,5,158,202,22,18,10,11,12,13,14,190,238,17,190,158,193,41,159,202,193,159,202,245,193,193,223,190,32,159,34,132,133,134,135,136,159,39,155,43,150,223,177,201,178,177,186,66,199,177,152,253,56,215,152,182,152,202,152,63,152,152,66,67,242,229,152,174,152,152,152,152,152,152,152,199,242,202,152,198,152,152,152,183,192,152,215,152,183,215,183,152,241,214,152,211,152,152,211,211,152,152,241,152,152,152,152,152,152,152,114,152,152,235,152,152,152,174,187,95,174,253,253,253,253,236,253,253,253,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,27,27,27,27,0,27,27,27,0,27,27,27,27,0,0,0,27,0,0,27,0,0,0,27,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,115,113,108,105,116,101,51,95,103,101,116,95,116,97,98,108,101,40,41,32,99,97,108,108,101,100,32,119,105,116,104,32,116,119,111,32,111,114,32,109,111,114,101,32,105,110,99,111,109,112,97,116,105,98,108,101,32,113,117,101,114,105,101,115,0,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,115,116,97,116,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,128,160,0,0,136,160,0,0,144,160,0,0,152,160,0,0,160,160,0,0,168,160,0,0,176,160,0,0,184,160,0,0,192,160,0,0,208,160,0,0,136,122,0,0,216,160,0,0,97,100,100,114,0,0,0,0,111,112,99,111,100,101,0,0,112,49,0,0,0,0,0,0,112,50,0,0,0,0,0,0,112,51,0,0,0,0,0,0,112,52,0,0,0,0,0,0,112,53,0,0,0,0,0,0,99,111,109,109,101,110,116,0,115,101,108,101,99,116,105,100,0,0,0,0,0,0,0,0,111,114,100,101,114,0,0,0,100,101,116,97,105,108,0,0,115,111,0,0,0,0,0,0,115,113,108,105,116,101,51,95,101,120,116,101,110,115,105,111,110,95,105,110,105,116,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,115,104,97,114,101,100,32,108,105,98,114,97,114,121,32,91,37,115,93,0,0,0,0,0,0,108,105,98,0,0,0,0,0,95,105,110,105,116,0,0,0,110,111,32,101,110,116,114,121,32,112,111,105,110,116,32,91,37,115,93,32,105,110,32,115,104,97,114,101,100,32,108,105,98,114,97,114,121,32,91,37,115,93,0,0,0,0,0,0,101,114,114,111,114,32,100,117,114,105,110,103,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,58,32,37,115,0,117,110,111,112,101,110,101,100,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,118,105,101,119,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,97,108,117,101,32,111,102,32,116,121,112,101,32,37,115,0,0,0,0,110,111,32,115,117,99,104,32,114,111,119,105,100,58,32,37,108,108,100,0,0,0,0,0,98,105,110,100,32,111,110,32,97,32,98,117,115,121,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,58,32,91,37,115,93,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,162,0,0,96,162,0,0,104,162,0,0,112,162,0,0,78,79,84,32,78,85,76,76,0,0,0,0,0,0,0,0,85,78,73,81,85,69,0,0,67,72,69,67,75,0,0,0,70,79,82,69,73,71,78,32,75,69,89,0,0,0,0,0,97,98,111,114,116,32,97,116,32,37,100,32,105,110,32,91,37,115,93,58,32,37,115,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,58,32,37,115,0,0,0,0,0,0,0,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,1,2,0,2,2,0,0,0,0,0,0,0,0,1,2,1,1,1,2,1,2,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,110,111,32,115,117,99,104,32,115,97,118,101,112,111,105,110,116,58,32,37,115,0,0,0,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,116,114,97,110,115,97,99,116,105,111,110,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,99,97,110,110,111,116,32,115,116,97,114,116,32,97,32,116,114,97,110,115,97,99,116,105,111,110,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,114,111,108,108,98,97,99,107,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,87,72,69,82,69,32,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,116,111,111,32,109,97,110,121,32,108,101,118,101,108,115,32,111,102,32,116,114,105,103,103,101,114,32,114,101,99,117,114,115,105,111,110,0,0,0,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,37,115,32,119,97,108,32,109,111,100,101,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,105,110,116,111,0,0,0,0,111,117,116,32,111,102,0,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,0,115,116,97,116,101,109,101,110,116,32,97,98,111,114,116,115,32,97,116,32,37,100,58,32,91,37,115,93,32,37,115,0,45,45,32,0,0,0,0,0,39,37,46,42,113,39,0,0,122,101,114,111,98,108,111,98,40,37,100,41,0,0,0,0,120,39,0,0,0,0,0,0,37,48,50,120,0,0,0,0,39,0,0,0,0,0,0,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,65,84,84,65,67,72,32,39,58,109,101,109,111,114,121,58,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,65,84,84,65,67,72,32,39,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,80,82,65,71,77,65,32,118,97,99,117,117,109,95,100,98,46,115,121,110,99,104,114,111,110,111,117,115,61,79,70,70,0,0,0,0,0,0,0,0,66,69,71,73,78,59,0,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,84,65,66,76,69,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,37,39,32,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,50,49,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,37,39,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,68,69,76,69,84,69,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,59,0,0,0,0,0,0,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,83,69,76,69,67,84,32,116,121,112,101,44,32,110,97,109,101,44,32,116,98,108,95,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,32,32,32,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,87,72,69,82,69,32,116,121,112,101,61,39,118,105,101,119,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,32,32,32,32,32,79,82,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,114,111,111,116,112,97,103,101,61,48,41,0,1,1,3,0,5,0,6,0,8,0,0,0,0,0,0,0,77,97,105,110,32,102,114,101,101,108,105,115,116,58,32,0,76,105,115,116,32,111,102,32,116,114,101,101,32,114,111,111,116,115,58,32,0,0,0,0,80,97,103,101,32,37,100,32,105,115,32,110,101,118,101,114,32,117,115,101,100,0,0,0,80,111,105,110,116,101,114,32,109,97,112,32,112,97,103,101,32,37,100,32,105,115,32,114,101,102,101,114,101,110,99,101,100,0,0,0,0,0,0,0,79,117,116,115,116,97,110,100,105,110,103,32,112,97,103,101,32,99,111,117,110,116,32,103,111,101,115,32,102,114,111,109,32,37,100,32,116,111,32,37,100,32,100,117,114,105,110,103,32,116,104,105,115,32,97,110,97,108,121,115,105,115,0,0,10,0,0,0,0,0,0,0,80,97,103,101,32,37,100,58,32,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,103,101,116,32,116,104,101,32,112,97,103,101,46,32,101,114,114,111,114,32,99,111,100,101,61,37,100,0,0,0,98,116,114,101,101,73,110,105,116,80,97,103,101,40,41,32,114,101,116,117,114,110,115,32,101,114,114,111,114,32,99,111,100,101,32,37,100,0,0,0,79,110,32,116,114,101,101,32,112,97,103,101,32,37,100,32,99,101,108,108,32,37,100,58,32,0,0,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,112,114,101,118,105,111,117,115,32,119,97,115,32,37,108,108,100,41,0,0,0,0,0,67,104,105,108,100,32,112,97,103,101,32,100,101,112,116,104,32,100,105,102,102,101,114,115,0,0,0,0,0,0,0,0,79,110,32,112,97,103,101,32,37,100,32,97,116,32,114,105,103,104,116,32,99,104,105,108,100,58,32,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114,32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114,32,116,104,97,110,32,112,97,114,101,110,116,32,109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,67,111,114,114,117,112,116,105,111,110,32,100,101,116,101,99,116,101,100,32,105,110,32,99,101,108,108,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,77,117,108,116,105,112,108,101,32,117,115,101,115,32,102,111,114,32,98,121,116,101,32,37,100,32,111,102,32,112,97,103,101,32,37,100,0,0,0,0,70,114,97,103,109,101,110,116,97,116,105,111,110,32,111,102,32,37,100,32,98,121,116,101,115,32,114,101,112,111,114,116,101,100,32,97,115,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,105,110,118,97,108,105,100,32,112,97,103,101,32,110,117,109,98,101,114,32,37,100,0,0,50,110,100,32,114,101,102,101,114,101,110,99,101,32,116,111,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,112,116,114,109,97,112,32,107,101,121,61,37,100,0,0,0,0,66,97,100,32,112,116,114,32,109,97,112,32,101,110,116,114,121,32,107,101,121,61,37,100,32,101,120,112,101,99,116,101,100,61,40,37,100,44,37,100,41,32,103,111,116,61,40,37,100,44,37,100,41,0,0,0,37,100,32,111,102,32,37,100,32,112,97,103,101,115,32,109,105,115,115,105,110,103,32,102,114,111,109,32,111,118,101,114,102,108,111,119,32,108,105,115,116,32,115,116,97,114,116,105,110,103,32,97,116,32,37,100,0,0,0,0,0,0,0,0,102,97,105,108,101,100,32,116,111,32,103,101,116,32,112,97,103,101,32,37,100,0,0,0,102,114,101,101,108,105,115,116,32,108,101,97,102,32,99,111,117,110,116,32,116,111,111,32,98,105,103,32,111,110,32,112,97,103,101,32,37,100,0,0,83,81,76,105,116,101,32,102,111,114,109,97,116,32,51,0,37,115,45,109,106,88,88,88,88,88,88,57,88,88,122,0,77,74,32,100,101,108,101,116,101,58,32,37,115,0,0,0,77,74,32,99,111,108,108,105,100,101,58,32,37,115,0,0,45,109,106,37,48,54,88,57,37,48,50,88,0,0,0,0,37,46,50,120,0,0,0,0,107,40,37,100,0,0,0,0,110,105,108,0,0,0,0,0,66,0,0,0,0,0,0,0,40,37,46,50,48,115,41,0,37,115,40,37,100,41,0,0,37,100,0,0,0,0,0,0,40,98,108,111,98,41,0,0,118,116,97,98,58,37,112,0,105,110,116,97,114,114,97,121,0,0,0,0,0,0,0,0,112,114,111,103,114,97,109,0,240,52,0,0,176,177,0,0,192,177,0,0,208,177,0,0,224,177,0,0,240,177,0,0,0,178,0,0,16,178,0,0,32,178,0,0,40,178,0,0,48,178,0,0,56,178,0,0,72,178,0,0,88,178,0,0,96,178,0,0,104,178,0,0,112,178,0,0,120,178,0,0,128,178,0,0,136,178,0,0,144,178,0,0,160,178,0,0,176,178,0,0,184,178,0,0,200,178,0,0,208,178,0,0,216,178,0,0,224,178,0,0,232,178,0,0,240,178,0,0,0,179,0,0,8,179,0,0,24,179,0,0,32,179,0,0,40,179,0,0,48,179,0,0,64,179,0,0,72,179,0,0,80,179,0,0,96,179,0,0,112,179,0,0,120,179,0,0,136,179,0,0,144,179,0,0,152,179,0,0,160,179,0,0,168,179,0,0,176,179,0,0,184,179,0,0,200,179,0,0,216,179,0,0,224,179,0,0,240,179,0,0,0,180,0,0,16,180,0,0,32,180,0,0,48,180,0,0,64,180,0,0,80,180,0,0,96,180,0,0,112,180,0,0,128,180,0,0,136,180,0,0,144,180,0,0,152,180,0,0,160,180,0,0,168,180,0,0,176,180,0,0,192,180,0,0,208,180,0,0,216,180,0,0,232,180,0,0,240,180,0,0,248,180,0,0,8,181,0,0,24,181,0,0,32,181,0,0,40,181,0,0,48,181,0,0,56,181,0,0,64,181,0,0,72,181,0,0,80,181,0,0,88,181,0,0,96,181,0,0,112,181,0,0,120,181,0,0,128,181,0,0,144,181,0,0,160,181,0,0,168,181,0,0,184,181,0,0,200,181,0,0,208,181,0,0,224,181,0,0,232,181,0,0,240,181,0,0,248,181,0,0,0,182,0,0,16,182,0,0,32,182,0,0,48,182,0,0,56,182,0,0,64,182,0,0,72,182,0,0,80,182,0,0,88,182,0,0,104,182,0,0,112,182,0,0,120,182,0,0,136,182,0,0,152,182,0,0,168,182,0,0,184,182,0,0,192,182,0,0,200,182,0,0,208,182,0,0,216,182,0,0,224,182,0,0,232,182,0,0,248,182,0,0,8,183,0,0,24,183,0,0,40,183,0,0,56,183,0,0,72,183,0,0,88,183,0,0,104,183,0,0,120,183,0,0,136,183,0,0,152,183,0,0,168,183,0,0,176,183,0,0,184,183,0,0,192,183,0,0,208,183,0,0,224,183,0,0,232,183,0,0,240,183,0,0,248,183,0,0,8,184,0,0,24,184,0,0,40,184,0,0,56,184,0,0,72,184,0,0,80,184,0,0,96,184,0,0,104,184,0,0,112,184,0,0,128,184,0,0,136,184,0,0,144,184,0,0,152,184,0,0,160,184,0,0,176,184,0,0,192,184,0,0,200,184,0,0,208,184,0,0,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,83,97,118,101,112,111,105,110,116,0,0,0,0,0,0,0,65,117,116,111,67,111,109,109,105,116,0,0,0,0,0,0,84,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,83,111,114,116,101,114,78,101,120,116,0,0,0,0,0,0,80,114,101,118,73,102,79,112,101,110,0,0,0,0,0,0,78,101,120,116,73,102,79,112,101,110,0,0,0,0,0,0,80,114,101,118,0,0,0,0,78,101,120,116,0,0,0,0,65,103,103,83,116,101,112,0,67,104,101,99,107,112,111,105,110,116,0,0,0,0,0,0,74,111,117,114,110,97,108,77,111,100,101,0,0,0,0,0,86,97,99,117,117,109,0,0,86,70,105,108,116,101,114,0,86,85,112,100,97,116,101,0,71,111,116,111,0,0,0,0,71,111,115,117,98,0,0,0,82,101,116,117,114,110,0,0,78,111,116,0,0,0,0,0,73,110,105,116,67,111,114,111,117,116,105,110,101,0,0,0,69,110,100,67,111,114,111,117,116,105,110,101,0,0,0,0,89,105,101,108,100,0,0,0,72,97,108,116,73,102,78,117,108,108,0,0,0,0,0,0,72,97,108,116,0,0,0,0,73,110,116,101,103,101,114,0,73,110,116,54,52,0,0,0,83,116,114,105,110,103,0,0,78,117,108,108,0,0,0,0,83,111,102,116,78,117,108,108,0,0,0,0,0,0,0,0,66,108,111,98,0,0,0,0,86,97,114,105,97,98,108,101,0,0,0,0,0,0,0,0,77,111,118,101,0,0,0,0,67,111,112,121,0,0,0,0,83,67,111,112,121,0,0,0,82,101,115,117,108,116,82,111,119,0,0,0,0,0,0,0,67,111,108,108,83,101,113,0,65,100,100,73,109,109,0,0,77,117,115,116,66,101,73,110,116,0,0,0,0,0,0,0,82,101,97,108,65,102,102,105,110,105,116,121,0,0,0,0,67,97,115,116,0,0,0,0,80,101,114,109,117,116,97,116,105,111,110,0,0,0,0,0,67,111,109,112,97,114,101,0,74,117,109,112,0,0,0,0,79,110,99,101,0,0,0,0,73,102,0,0,0,0,0,0,73,102,78,111,116,0,0,0,67,111,108,117,109,110,0,0,65,102,102,105,110,105,116,121,0,0,0,0,0,0,0,0,77,97,107,101,82,101,99,111,114,100,0,0,0,0,0,0,67,111,117,110,116,0,0,0,82,101,97,100,67,111,111,107,105,101,0,0,0,0,0,0,83,101,116,67,111,111,107,105,101,0,0,0,0,0,0,0,82,101,111,112,101,110,73,100,120,0,0,0,0,0,0,0,79,112,101,110,82,101,97,100,0,0,0,0,0,0,0,0,79,112,101,110,87,114,105,116,101,0,0,0,0,0,0,0,79,112,101,110,65,117,116,111,105,110,100,101,120,0,0,0,79,112,101,110,69,112,104,101,109,101,114,97,108,0,0,0,83,111,114,116,101,114,79,112,101,110,0,0,0,0,0,0,83,101,113,117,101,110,99,101,84,101,115,116,0,0,0,0,79,112,101,110,80,115,101,117,100,111,0,0,0,0,0,0,67,108,111,115,101,0,0,0,83,101,101,107,76,84,0,0,83,101,101,107,76,69,0,0,83,101,101,107,71,69,0,0,83,101,101,107,71,84,0,0,83,101,101,107,0,0,0,0,78,111,67,111,110,102,108,105,99,116,0,0,0,0,0,0,78,111,116,70,111,117,110,100,0,0,0,0,0,0,0,0,70,111,117,110,100,0,0,0,78,111,116,69,120,105,115,116,115,0,0,0,0,0,0,0,79,114,0,0,0,0,0,0,65,110,100,0,0,0,0,0,83,101,113,117,101,110,99,101,0,0,0,0,0,0,0,0,78,101,119,82,111,119,105,100,0,0,0,0,0,0,0,0,73,110,115,101,114,116,0,0,73,115,78,117,108,108,0,0,78,111,116,78,117,108,108,0,78,101,0,0,0,0,0,0,69,113,0,0,0,0,0,0,71,116,0,0,0,0,0,0,76,101,0,0,0,0,0,0,76,116,0,0,0,0,0,0,71,101,0,0,0,0,0,0,73,110,115,101,114,116,73,110,116,0,0,0,0,0,0,0,66,105,116,65,110,100,0,0,66,105,116,79,114,0,0,0,83,104,105,102,116,76,101,102,116,0,0,0,0,0,0,0,83,104,105,102,116,82,105,103,104,116,0,0,0,0,0,0,65,100,100,0,0,0,0,0,83,117,98,116,114,97,99,116,0,0,0,0,0,0,0,0,77,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,68,105,118,105,100,101,0,0,82,101,109,97,105,110,100,101,114,0,0,0,0,0,0,0,67,111,110,99,97,116,0,0,68,101,108,101,116,101,0,0,66,105,116,78,111,116,0,0,83,116,114,105,110,103,56,0,82,101,115,101,116,67,111,117,110,116,0,0,0,0,0,0,83,111,114,116,101,114,67,111,109,112,97,114,101,0,0,0,83,111,114,116,101,114,68,97,116,97,0,0,0,0,0,0,82,111,119,75,101,121,0,0,82,111,119,68,97,116,97,0,82,111,119,105,100,0,0,0,78,117,108,108,82,111,119,0,76,97,115,116,0,0,0,0,83,111,114,116,101,114,83,111,114,116,0,0,0,0,0,0,83,111,114,116,0,0,0,0,82,101,119,105,110,100,0,0,83,111,114,116,101,114,73,110,115,101,114,116,0,0,0,0,73,100,120,73,110,115,101,114,116,0,0,0,0,0,0,0,73,100,120,68,101,108,101,116,101,0,0,0,0,0,0,0,73,100,120,82,111,119,105,100,0,0,0,0,0,0,0,0,73,100,120,76,69,0,0,0,73,100,120,71,84,0,0,0,73,100,120,76,84,0,0,0,73,100,120,71,69,0,0,0,68,101,115,116,114,111,121,0,67,108,101,97,114,0,0,0,82,101,115,101,116,83,111,114,116,101,114,0,0,0,0,0,67,114,101,97,116,101,73,110,100,101,120,0,0,0,0,0,67,114,101,97,116,101,84,97,98,108,101,0,0,0,0,0,80,97,114,115,101,83,99,104,101,109,97,0,0,0,0,0,76,111,97,100,65,110,97,108,121,115,105,115,0,0,0,0,68,114,111,112,84,97,98,108,101,0,0,0,0,0,0,0,68,114,111,112,73,110,100,101,120,0,0,0,0,0,0,0,68,114,111,112,84,114,105,103,103,101,114,0,0,0,0,0,73,110,116,101,103,114,105,116,121,67,107,0,0,0,0,0,82,111,119,83,101,116,65,100,100,0,0,0,0,0,0,0,82,111,119,83,101,116,82,101,97,100,0,0,0,0,0,0,82,111,119,83,101,116,84,101,115,116,0,0,0,0,0,0,80,114,111,103,114,97,109,0,80,97,114,97,109,0,0,0,82,101,97,108,0,0,0,0,70,107,67,111,117,110,116,101,114,0,0,0,0,0,0,0,70,107,73,102,90,101,114,111,0,0,0,0,0,0,0,0,77,101,109,77,97,120,0,0,73,102,80,111,115,0,0,0,73,102,78,101,103,0,0,0,73,102,78,111,116,90,101,114,111,0,0,0,0,0,0,0,68,101,99,114,74,117,109,112,90,101,114,111,0,0,0,0,74,117,109,112,90,101,114,111,73,110,99,114,0,0,0,0,65,103,103,70,105,110,97,108,0,0,0,0,0,0,0,0,73,110,99,114,86,97,99,117,117,109,0,0,0,0,0,0,69,120,112,105,114,101,0,0,84,97,98,108,101,76,111,99,107,0,0,0,0,0,0,0,86,66,101,103,105,110,0,0,86,67,114,101,97,116,101,0,86,68,101,115,116,114,111,121,0,0,0,0,0,0,0,0,86,79,112,101,110,0,0,0,86,67,111,108,117,109,110,0,86,78,101,120,116,0,0,0,86,82,101,110,97,109,101,0,80,97,103,101,99,111,117,110,116,0,0,0,0,0,0,0,77,97,120,80,103,99,110,116,0,0,0,0,0,0,0,0,73,110,105,116,0,0,0,0,78,111,111,112,0,0,0,0,69,120,112,108,97,105,110,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,78,85,76,76,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,102,105,110,97,108,105,122,101,100,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,0,0,0,64,32,32,0,0,0,0,0,100,101,115,116,105,110,97,116,105,111,110,32,100,97,116,97,98,97,115,101,32,105,115,32,105,110,32,117,115,101,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,0,0,1,0,0,0,67,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,24,187,0,0,33,0,0,0,0,0,0,0,240,186,0,0,70,0,0,0,0,0,0,0,72,59,0,0,59,0,0,0,0,0,0,0,32,187,0,0,60,0,0,0,0,0,0,0,40,187,0,0,61,0,0,0,0,0,0,0,48,187,0,0,62,0,0,0,0,0,0,0,56,187,0,0,63,0,0,0,0,0,0,0,72,187,0,0,34,0,0,0,0,0,0,0,80,187,0,0,35,0,0,0,0,0,0,0,88,187,0,0,0,0,0,0,0,0,0,0,96,187,0,0,0,0,0,0,0,0,0,0,104,187,0,0,36,0,0,0,0,0,0,0,112,187,0,0,0,0,0,0,0,0,0,0,120,187,0,0,0,0,0,0,0,0,0,0,136,187,0,0,64,0,0,0,0,0,0,0,144,187,0,0,0,0,0,0,0,0,0,0,160,187,0,0,71,0,0,0,0,0,0,0,168,187,0,0,65,0,0,0,0,0,0,0,184,187,0,0,66,0,0,0,0,0,0,0,192,187,0,0,72,0,0,0,0,0,0,0,200,187,0,0,37,0,0,0,0,0,0,0,208,187,0,0,4,0,0,0,0,0,0,0,216,187,0,0,67,0,0,0,0,0,0,0,224,187,0,0,0,0,0,0,0,0,0,0,232,187,0,0,6,0,0,0,0,0,0,0,0,0,0,0,99,108,111,115,101,0,0,0,111,115,95,117,110,105,120,46,99,58,37,100,58,32,40,37,100,41,32,37,115,40,37,115,41,32,45,32,37,115,0,0,111,112,101,110,0,0,0,0,103,101,116,99,119,100,0,0,115,116,97,116,0,0,0,0,102,115,116,97,116,0,0,0,102,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,102,99,110,116,108,0,0,0,114,101,97,100,0,0,0,0,112,114,101,97,100,0,0,0,112,114,101,97,100,54,52,0,119,114,105,116,101,0,0,0,112,119,114,105,116,101,0,0,112,119,114,105,116,101,54,52,0,0,0,0,0,0,0,0,102,99,104,109,111,100,0,0,102,97,108,108,111,99,97,116,101,0,0,0,0,0,0,0,117,110,108,105,110,107,0,0,111,112,101,110,68,105,114,101,99,116,111,114,121,0,0,0,109,107,100,105,114,0,0,0,114,109,100,105,114,0,0,0,102,99,104,111,119,110,0,0,109,109,97,112,0,0,0,0,109,117,110,109,97,112,0,0,109,114,101,109,97,112,0,0,103,101,116,112,97,103,101,115,105,122,101,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,111,112,101,110,32,34,37,115,34,32,97,115,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,37,100,0,0,0,0,0,0,47,100,101,118,47,110,117,108,108,0,0,0,0,0,0,0,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,48,49,50,51,52,53,54,55,56,57,0,0,37,115,47,101,116,105,108,113,115,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,188,0,0,184,188,0,0,200,188,0,0,0,0,0,0,0,0,0,0,47,118,97,114,47,116,109,112,0,0,0,0,0,0,0,0,47,117,115,114,47,116,109,112,0,0,0,0,0,0,0,0,47,116,109,112,0,0,0,0,83,81,76,73,84,69,95,84,77,80,68,73,82,0,0,0,84,77,80,68,73,82,0,0,102,117,108,108,95,102,115,121,110,99,0,0,0,0,0,0,3,0,0,0,73,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,100,101,118,47,117,114,97,110,100,111,109,0,0,0,0,47,37,115,0,0,0,0,0,102,115,121,110,99,0,0,0,112,115,111,119,0,0,0,0,3,0,0,0,74,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,20,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,37,115,46,108,111,99,107,0,99,97,110,110,111,116,32,102,115,116,97,116,32,100,98,32,102,105,108,101,32,37,115,0,102,105,108,101,32,117,110,108,105,110,107,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,0,0,0,109,117,108,116,105,112,108,101,32,108,105,110,107,115,32,116,111,32,102,105,108,101,58,32,37,115,0,0,0,0,0,0,102,105,108,101,32,114,101,110,97,109,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,45,115,104,109,0,0,114,101,97,100,111,110,108,121,95,115,104,109,0,0,0,0,37,0,0,0,0,0,0,0,100,10,1,1,0,0,115,0,4,6,0,0,103,0,1,4,30,0,122,0,4,7,0,0,113,0,4,10,0,0,81,0,4,11,0,0,119,0,4,15,0,0,99,0,0,9,0,0,111,8,0,1,0,2,117,10,0,1,0,0,120,16,0,1,16,1,88,16,0,1,0,4,102,0,1,2,0,0,101,0,1,3,30,0,69,0,1,3,14,0,71,0,1,4,14,0,105,10,1,1,0,0,110,0,0,5,0,0,37,0,0,8,0,0,112,16,0,14,0,1,84,0,2,12,0,0,83,0,2,13,0,0,114,10,3,16,0,0,0,0,0,0,0,0,116,104,115,116,110,100,114,100,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,0,0,0,0,0,0,0,0,45,120,48,0,88,48,0,0,78,97,78,0,0,0,0,0,45,73,110,102,0,0,0,0,43,73,110,102,0,0,0,0,73,110,102,0,0,0,0,0,40,78,85,76,76,41,0,0,68,73,83,65,66,76,69,95,76,70,83,0,0,0,0,0,73,78,84,54,52,95,84,89,80,69,0,0,0,0,0,0,83,89,83,84,69,77,95,77,65,76,76,79,67,0,0,0,84,72,82,69,65,68,83,65,70,69,61,48],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+39192);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}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};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var ___errno_state=0;function ___setErrNo(value){HEAP32[___errno_state>>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{return flags}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),getStreamFromPtr:(function(ptr){return FS.streams[ptr-1]}),getPtrForStream:(function(stream){return stream?stream.fd+1:0}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(lookup.node.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(){return 0})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");HEAP32[_stdin>>2]=FS.getPtrForStream(stdin);assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)this.stack=demangleAll(this.stack)};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;ibuflen-1){return ___setErrNo(ERRNO_CODES.ERANGE)}else{var msg=ERRNO_MESSAGES[errnum];writeAsciiToMemory(msg,strerrbuf);return 0}}else{return ___setErrNo(ERRNO_CODES.EINVAL)}}function _strerror(errnum){if(!_strerror.buffer)_strerror.buffer=_malloc(256);_strerror_r(errnum,_strerror.buffer,256);return _strerror.buffer}var _DtoIHigh=true;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _usleep(useconds){var msec=useconds/1e3;if((ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]){var start=self["performance"]["now"]();while(self["performance"]["now"]()-start>2];path=Pointer_stringify(path);try{var stream=FS.open(path,oflag,mode);return stream.fd}catch(e){FS.handleFSError(e);return-1}}function _getuid(){return 0}function _geteuid(){return _getuid.apply(null,arguments)}function _mknod(path,mode,dev){path=Pointer_stringify(path);switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:___setErrNo(ERRNO_CODES.EINVAL);return-1}try{FS.mknod(path,mode,dev);return 0}catch(e){FS.handleFSError(e);return-1}}function _mkdir(path,mode){path=Pointer_stringify(path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);try{FS.mkdir(path,mode,0);return 0}catch(e){FS.handleFSError(e);return-1}}function _mkport(){throw"TODO"}var SOCKFS={mount:(function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=(function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this});Module["websocket"].emit=(function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}});return FS.createNode(null,"/",16384|511,0)}),createSocket:(function(family,type,protocol){var streaming=type==1;if(protocol){assert(streaming==(protocol==6))}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:FS.modeStringToFlags("r+"),seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock}),getSocket:(function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock}),stream_ops:{poll:(function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)}),ioctl:(function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)}),read:(function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length}),write:(function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)}),close:(function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)})},nextname:(function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current++ +"]"}),websocket_sock_ops:{createPeer:(function(sock,addr,port){var ws;if(typeof addr==="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);var opts=ENVIRONMENT_IS_NODE?{"protocol":subProtocols.toString()}:subProtocols;var WebSocket=ENVIRONMENT_IS_NODE?require("ws"):window["WebSocket"];ws=new WebSocket(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!=="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;if(typeof Browser.vrDevice==="undefined")Browser.vrDevice=null;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);if(vrDevice){canvasContainer.requestFullScreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullScreen()}}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;assert(typeof scrollX!=="undefined"&&typeof scrollY!=="undefined","Unable to retrieve scroll position, mouse positions likely broken.");if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(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)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2]=ret}return ret}function _munmap(start,num){if(!_mmap.mappings)_mmap.mappings={};var info=_mmap.mappings[start];if(!info)return 0;if(num==info.num){_mmap.mappings[start]=null;if(info.allocated){_free(info.malloc)}}return 0}function _stat(path,buf,dontResolveLastLink){path=typeof path!=="string"?Pointer_stringify(path):path;try{var stat=dontResolveLastLink?FS.lstat(path):FS.stat(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}catch(e){if(e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){e.setErrno(ERRNO_CODES.ENOTDIR)}FS.handleFSError(e);return-1}}function _fstat(fildes,buf){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}return _stat(stream.path,buf)}var ___tm_current=allocate(44,"i8",ALLOC_STATIC);var ___tm_timezone=allocate(intArrayFromString("GMT"),"i8",ALLOC_STATIC);var _tzname=allocate(8,"i32*",ALLOC_STATIC);var _daylight=allocate(1,"i32*",ALLOC_STATIC);var _timezone=allocate(1,"i32*",ALLOC_STATIC);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[_timezone>>2]=-(new Date).getTimezoneOffset()*60;var winter=new Date(2e3,0,1);var summer=new Date(2e3,6,1);HEAP32[_daylight>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[_tzname+4>>2]=summerNamePtr}else{HEAP32[_tzname>>2]=summerNamePtr;HEAP32[_tzname+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=(new Date(2e3,6,1)).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=date.getTimezoneOffset()==Math.min(winterOffset,summerOffset)|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[_tzname+(dst?Runtime.QUANTUM_SIZE:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _fcntl(fildes,cmd,varargs,dup2){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}switch(cmd){case 0:var arg=HEAP32[varargs>>2];if(arg<0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var newStream;try{newStream=FS.open(stream.path,stream.flags,0,arg)}catch(e){FS.handleFSError(e);return-1}return newStream.fd;case 1:case 2:return 0;case 3:return stream.flags;case 4:var arg=HEAP32[varargs>>2];stream.flags|=arg;return 0;case 12:case 12:var arg=HEAP32[varargs>>2];var offset=0;HEAP16[arg+offset>>1]=2;return 0;case 13:case 14:case 13:case 14:return 0;case 8:case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:___setErrNo(ERRNO_CODES.EINVAL);return-1}return-1}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _recv(fd,buf,len,flags){var sock=SOCKFS.getSocket(fd);if(!sock){___setErrNo(ERRNO_CODES.EBADF);return-1}return _read(fd,buf,len)}function _pread(fildes,buf,nbyte,offset){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte,offset)}catch(e){FS.handleFSError(e);return-1}}function _read(fildes,buf,nbyte){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte)}catch(e){FS.handleFSError(e);return-1}}var _BDtoIHigh=true;function _getcwd(buf,size){if(size==0){___setErrNo(ERRNO_CODES.EINVAL);return 0}var cwd=FS.cwd();if(size>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),"i8",ALLOC_NORMAL);return _getenv.ret}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _chown(path,owner,group,dontResolveLastLink){if(typeof path!=="string")path=Pointer_stringify(path);try{FS.chown(path,owner,group);return 0}catch(e){FS.handleFSError(e);return-1}}function _fchown(fildes,owner,group){try{FS.fchown(fildes,owner,group);return 0}catch(e){FS.handleFSError(e);return-1}}function _dlclose(handle){if(!DLFCN.loadedLibs[handle]){DLFCN.errorMsg="Tried to dlclose() unopened handle: "+handle;return 1}else{var lib_record=DLFCN.loadedLibs[handle];if(--lib_record.refcount==0){if(lib_record.module.cleanups){lib_record.module.cleanups.forEach((function(cleanup){cleanup()}))}delete DLFCN.loadedLibNames[lib_record.name];delete DLFCN.loadedLibs[handle]}return 0}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function _dlopen(filename,flag){filename=filename===0?"__self__":(ENV["LD_LIBRARY_PATH"]||"/")+Pointer_stringify(filename);abort("need to build with DLOPEN_SUPPORT=1 to get dlopen support in asm.js");if(DLFCN.loadedLibNames[filename]){var handle=DLFCN.loadedLibNames[filename];DLFCN.loadedLibs[handle].refcount++;return handle}if(filename==="__self__"){var handle=-1;var lib_module=Module;var cached_functions=SYMBOL_TABLE}else{var target=FS.findObject(filename);if(!target||target.isFolder||target.isDevice){DLFCN.errorMsg="Could not find dynamic lib: "+filename;return 0}else{FS.forceLoadFile(target);var lib_data=FS.readFile(filename,{encoding:"utf8"})}try{var lib_module=eval(lib_data)(DLFCN.functionTable.length,Module)}catch(e){Module.printErr("Error in loading dynamic library: "+e);DLFCN.errorMsg="Could not evaluate dynamic lib: "+filename;return 0}var handle=1;for(var key in DLFCN.loadedLibs){if(DLFCN.loadedLibs.hasOwnProperty(key))handle++}if(flag&256){for(var ident in lib_module){if(lib_module.hasOwnProperty(ident)){Module[ident]=lib_module[ident]}}}var cached_functions={}}DLFCN.loadedLibs[handle]={refcount:1,name:filename,module:lib_module,cached_functions:cached_functions};DLFCN.loadedLibNames[filename]=handle;return handle}function _fsync(fildes){var stream=FS.getStream(fildes);if(stream){return 0}else{___setErrNo(ERRNO_CODES.EBADF);return-1}}function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}Module["_memmove"]=_memmove;function _dlerror(){if(DLFCN.errorMsg===null){return 0}else{if(DLFCN.error)_free(DLFCN.error);var msgArr=intArrayFromString(DLFCN.errorMsg);DLFCN.error=allocate(msgArr,"i8",ALLOC_NORMAL);DLFCN.errorMsg=null;return DLFCN.error}}function ___errno_location(){return ___errno_state}var _BItoD=true;Module["_bitshift64Lshr"]=_bitshift64Lshr;Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function _mmap(start,num,prot,flags,fd,offset){var MAP_PRIVATE=2;var ptr;var allocated=false;if(!_mmap.mappings)_mmap.mappings={};if(fd==-1){ptr=_malloc(num);if(!ptr)return-1;_memset(ptr,0,num);allocated=true}else{var info=FS.getStream(fd);if(!info)return-1;try{var res=FS.mmap(info,HEAPU8,start,num,offset,prot,flags);ptr=res.ptr;allocated=res.allocated}catch(e){FS.handleFSError(e);return-1}}_mmap.mappings[ptr]={malloc:ptr,num:num,allocated:allocated};return ptr}function _truncate(path,length){if(typeof path!=="string")path=Pointer_stringify(path);try{FS.truncate(path,length);return 0}catch(e){FS.handleFSError(e);return-1}}function _ftruncate(fildes,length){try{FS.ftruncate(fildes,length);return 0}catch(e){FS.handleFSError(e);return-1}}function _utimes(path,times){var time;if(times){var offset=8+0;time=HEAP32[times+offset>>2]*1e3;offset=8+4;time+=HEAP32[times+offset>>2]/1e3}else{time=Date.now()}path=Pointer_stringify(path);try{FS.utime(path,time,time);return 0}catch(e){FS.handleFSError(e);return-1}}FS.staticInit();__ATINIT__.unshift({func:(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()})});__ATMAIN__.push({func:(function(){FS.ignorePermissions=false})});__ATEXIT__.push({func:(function(){FS.quit()})});Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;___errno_state=Runtime.staticAlloc(4);HEAP32[___errno_state>>2]=0;__ATINIT__.unshift({func:(function(){TTY.init()})});__ATEXIT__.push({func:(function(){TTY.shutdown()})});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}__ATINIT__.push({func:(function(){SOCKFS.root=FS.mount(SOCKFS,{},null)})});Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};___buildEnvironment(ENV);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE2147483648)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 mh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0;h=k[a>>2]|0;l=k[a+80>>2]|0;e=a+44|0;do if(!(k[e>>2]|0)){k[h+52>>2]=l;b=k[h+236>>2]|0;if(b){a=b+8|0;if(!(j[a>>1]&9312)){j[a>>1]=1;break}else{Ag(b);break}}}else{f=h+65|0;g=i[f>>0]|0;a=k[3164]|0;if(a)sc[a&3]();d=h+236|0;a=k[d>>2]|0;do if(!a){a=rh(h,40,0)|0;if(!a){k[d>>2]=a;break}else{b=a+0|0;c=b+40|0;do{i[b>>0]=0;b=b+1|0}while((b|0)<(c|0));j[a+8>>1]=1;k[a+32>>2]=h;k[d>>2]=a;c=8;break}}else c=8;while(0);if((c|0)==8)ah(a,k[e>>2]|0,-1,1,-1)|0;a=k[3166]|0;if(a)sc[a&3]();i[f>>0]=g;k[h+52>>2]=l}while(0);return l|0}function nh(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;var h=0,i=0,j=0,l=0,m=0;m=r;r=r+16|0;if((r|0)>=(s|0))ka();h=m;k[f>>2]=0;if(!((Mh(a)|0)==0|(b|0)==0)){h=k[a+20>>2]|0;if((h|0)>0){i=k[a+16>>2]|0;l=0;do{j=k[i+(l<<4)+4>>2]|0;if(j)k[(k[j+4>>2]|0)+4>>2]=k[j>>2];l=l+1|0}while((l|0)!=(h|0))}h=Kn(a,b,c,d,e,f,g)|0;if((h|0)==17){rd(k[f>>2]|0)|0;h=Kn(a,b,c,d,e,f,g)|0}}else{k[h>>2]=105892;k[h+4>>2]=10788;gd(21,13648,h);h=21}r=m;return h|0}function oh(a,b){a=a|0;b=b|0;var c=0,d=0;d=a+68|0;if((j[d>>1]|0)>0){c=b+60|0;b=a+60|0;a=0;do{dm((k[c>>2]|0)+(a*40|0)|0,(k[b>>2]|0)+(a*40|0)|0);a=a+1|0}while((a|0)<(j[d>>1]|0))}return}function ph(a,b){a=a|0;b=b|0;var c=0,d=0;if(b){c=b;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;d=(c-b&1073741823)+1|0;c=rh(a,d,0)|0;if(c)pw(c|0,b|0,d|0)|0;else c=0}else c=0;return c|0}function qh(a,b){a=a|0;b=b|0;var c=0,d=0;d=k[a+8>>2]|0;if((b|0)>=1){kh(d,b)|0;j[d+8>>1]=8192;k[d>>2]=k[a+4>>2];c=d+16|0;a=k[c>>2]|0;if(!a)c=0;else{kw(a|0,0,b|0)|0;c=k[c>>2]|0}}else{c=d+8|0;if(!(j[c>>1]&9312))j[c>>1]=1;else Ag(d);k[d+16>>2]=0;c=0}return c|0}function rh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a:do if(a){f=a+65|0;if(!(i[f>>0]|0)){do if(i[a+250>>0]|0){if(0>>0|(0==(c|0)?(m[a+248>>1]|0)>>>0>>0:0)){d=a+264|0;k[d>>2]=(k[d>>2]|0)+1;break}e=a+272|0;d=k[e>>2]|0;if(!d){d=a+268|0;k[d>>2]=(k[d>>2]|0)+1;break}k[e>>2]=k[d>>2];c=a+252|0;e=k[c>>2]|0;b=e+1|0;k[c>>2]=b;c=a+260|0;k[c>>2]=(k[c>>2]|0)+1;c=a+256|0;if((e|0)>=(k[c>>2]|0))k[c>>2]=b;break a}while(0);d=vg(b,c)|0;if(!d){i[f>>0]=1;d=0}}else d=0}else d=vg(b,c)|0;while(0);return d|0}function sh(a,b){a=a|0;b=b|0;var c=0,d=0;do if(a){c=k[a+20>>2]|0;if((c|0)!=0?((b|0)>-1?(m[a+84>>1]|0|0)>(b|0):0):0){c=c+(b*40|0)|0;break}c=k[a>>2]|0;if((c|0)!=0?(k[c+52>>2]=25,d=k[c+236>>2]|0,(d|0)!=0):0){c=d+8|0;if(!(j[c>>1]&9312)){j[c>>1]=1;c=41496;break}else{Ag(d);c=41496;break}}else c=41496}else c=41496;while(0);return c|0}function th(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=uh(a,b)|0;if(!g)if(!c)g=0;else{b=(k[a+60>>2]|0)+((b+-1|0)*40|0)|0;g=ah(b,c,d,f,e)|0;if((g|0)!=0|f<<24>>24==0)b=g;else b=bm(b,l[(k[a>>2]|0)+62>>0]|0)|0;g=k[a>>2]|0;k[g+52>>2]=b;e=k[g+236>>2]|0;do if(e){d=e+8|0;if(!(j[d>>1]&9312)){j[d>>1]=1;break}else{Ag(e);g=k[a>>2]|0;break}}while(0);g=Tg(g,b)|0}else{d=e;if(!((d|0)==0|(d|0)==-1))hc[e&31](c)}return g|0}function uh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();e=g;do if(!(fh(a)|0)){if((k[a+40>>2]|0)==-1108210269?(k[a+76>>2]|0)<=-1:0){if((b|0)>=1?(j[a+68>>1]|0)>=(b|0):0){f=b+-1|0;e=k[a+60>>2]|0;d=e+(f*40|0)|0;c=e+(f*40|0)+8|0;if(!((j[c>>1]&9312)==0?(k[e+(f*40|0)+24>>2]|0)==0:0))Vg(d);j[c>>1]=1;d=k[a>>2]|0;k[d+52>>2]=0;d=k[d+236>>2]|0;do if(d){c=d+8|0;if(!(j[c>>1]&9312)){j[c>>1]=1;break}else{Ag(d);break}}while(0);e=a+88|0;c=j[e>>1]|0;if(!(c&256)){c=0;break}d=k[a+188>>2]|0;if((b|0)<33){if(!((d&1<>1]=c|8;c=0;break}c=k[a>>2]|0;k[c+52>>2]=25;c=k[c+236>>2]|0;if(!c){c=25;break}d=c+8|0;if(!(j[d>>1]&9312)){j[d>>1]=1;c=25;break}else{Ag(c);c=25;break}}d=k[a>>2]|0;k[d+52>>2]=21;d=k[d+236>>2]|0;do if(d){c=d+8|0;if(!(j[c>>1]&9312)){j[c>>1]=1;break}else{Ag(d);break}}while(0);k[e>>2]=k[a+168>>2];gd(21,41456,e);k[e>>2]=69987;k[e+4>>2]=10788;gd(21,13648,e);c=21}else{k[e>>2]=69979;k[e+4>>2]=10788;gd(21,13648,e);c=21}while(0);r=g;return c|0}function vh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a:do if(!((a|0)==0|(b|0)==0)?(f=j[a+70>>1]|0,f<<16>>16>0):0){d=k[a+64>>2]|0;a=0;while(1){e=k[d+(a<<2)>>2]|0;if(((e|0)!=0?(ew(e,b,c)|0)==0:0)?(i[e+c>>0]|0)==0:0)break;a=a+1|0;if((a|0)>=(f<<16>>16|0)){a=0;break a}}a=a+1|0}else a=0;while(0);return a|0}function wh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h+8|0;f=h;c=i[a+10>>0]|0;d=a+16|0;e=a+12|0;do if(Yl(k[d>>2]|0,g,k[e>>2]|0,c)|0){if(!(Zl(k[d>>2]|0,f,k[e>>2]|0,c)|0)){e=f;d=k[e+4>>2]|0;c=a;k[c>>2]=k[e>>2];k[c+4>>2]=d;c=a+8|0;j[c>>1]=m[c>>1]|0|4;break}p[a>>3]=+p[g>>3];c=a+8|0;j[c>>1]=m[c>>1]|0|8;if(b)im(a)}while(0);r=h;return}function xh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();f=g;if(!(Ln(a)|0)){e=di(k[a>>2]|0,c,d)|0;if(!e){e=(b|0)!=0?41368:41384;if(!d){k[f>>2]=e;k[f+4>>2]=c;yh(a,27680,f)}else{k[f>>2]=e;k[f+4>>2]=d;k[f+8>>2]=c;yh(a,27664,f)}i[a+17>>0]=1;e=0}}else e=0;r=g;return e|0}function yh(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;if((r|0)>=(s|0))ka();f=e;d=k[a>>2]|0;k[f>>2]=c;c=$k(d,b,f)|0;if(!(i[d+68>>0]|0)){b=a+64|0;k[b>>2]=(k[b>>2]|0)+1;b=a+4|0;rg(d,k[b>>2]|0);k[b>>2]=c;k[a+12>>2]=1}else rg(d,c);r=e;return}function zh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;if((r|0)>=(s|0))ka();e=d;k[e>>2]=c;a=$k(a,b,e)|0;r=d;return a|0}function Ah(a){a=a|0;var b=0,c=0,d=0;c=k[a>>2]|0;b=rh(c,208,0)|0;if(!b)b=0;else{kw(b|0,0,208)|0;k[b>>2]=c;c=c+4|0;d=k[c>>2]|0;if(d)k[d+48>>2]=b;k[b+52>>2]=d;k[b+48>>2]=0;k[c>>2]=b;k[b+40>>2]=649915045;k[b+24>>2]=a}return b|0}function Bh(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,j=0;g=a+32|0;f=k[g>>2]|0;if((k[(k[a+24>>2]|0)+84>>2]|0)<=(f|0))if(!(Mn(a)|0)){h=k[g>>2]|0;j=4}else f=1;else{h=f;j=4}if((j|0)==4){k[g>>2]=h+1;g=k[a+4>>2]|0;i[g+(f*20|0)>>0]=b;i[g+(f*20|0)+3>>0]=0;k[g+(f*20|0)+4>>2]=c;k[g+(f*20|0)+8>>2]=d;k[g+(f*20|0)+12>>2]=e;k[g+(f*20|0)+16>>2]=0;i[g+(f*20|0)+1>>0]=0}return f|0}function Ch(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;h=k[a>>2]|0;e=k[a+4>>2]|0;do if((e|0)!=0?(i[h+65>>0]|0)==0:0){if((b|0)<0)b=(k[a+32>>2]|0)+-1|0;g=e+(b*20|0)+1|0;f=e+(b*20|0)+16|0;Nn(h,i[g>>0]|0,k[f>>2]|0);k[f>>2]=0;if((d|0)==-14){k[f>>2]=c;i[g>>0]=-14;break}if(!c){k[f>>2]=0;i[g>>0]=0;break}if((d|0)==-6){k[f>>2]=c;i[g>>0]=-6;break}else if((d|0)==-10){k[f>>2]=c;i[g>>0]=-10;b=c+12|0;k[b>>2]=(k[b>>2]|0)+1;break}else{if((d|0)<0){k[f>>2]=c;i[g>>0]=d;break}if(!d){b=c;while(1)if(!(i[b>>0]|0))break;else b=b+1|0;e=b-c&1073741823}else e=d;a=k[a>>2]|0;b=ow(e|0,((e|0)<0)<<31>>31|0,1,0)|0;b=rh(a,b,L)|0;if(!b)b=0;else{pw(b|0,c|0,e|0)|0;i[b+e>>0]=0}k[f>>2]=b;i[g>>0]=-1;break}}else j=3;while(0);if((j|0)==3?(d|0)!=-10:0)Nn(h,d,c);return}function Dh(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;j=a+32|0;d=k[j>>2]|0;if((d+b|0)>(k[(k[a+24>>2]|0)+84>>2]|0))if(!(Mn(a)|0)){d=k[j>>2]|0;e=4}else d=0;else e=4;if((e|0)==4)if((b|0)>0){g=a+4|0;h=0;while(1){l=i[c+2>>0]|0;e=l<<24>>24;a=h+d|0;f=k[g>>2]|0;i[f+(a*20|0)>>0]=i[c>>0]|0;k[f+(a*20|0)+4>>2]=i[c+1>>0];if(l<<24>>24<0)e=d+~e|0;k[f+(a*20|0)+8>>2]=e;k[f+(a*20|0)+12>>2]=i[c+3>>0];i[f+(a*20|0)+1>>0]=0;k[f+(a*20|0)+16>>2]=0;i[f+(a*20|0)+3>>0]=0;h=h+1|0;if((h|0)==(b|0))break;else c=c+4|0}k[j>>2]=(k[j>>2]|0)+b}return d|0}function Eh(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+32|0;if((k[c>>2]|0)>(b|0)?(d=k[a+4>>2]|0,Nn(k[a>>2]|0,i[d+(b*20|0)+1>>0]|0,k[d+(b*20|0)+16>>2]|0),a=d+(b*20|0)|0,k[a+0>>2]=0,k[a+4>>2]=0,k[a+8>>2]=0,k[a+12>>2]=0,k[a+16>>2]=0,i[a>>0]=-100,((k[c>>2]|0)+-1|0)==(b|0)):0)k[c>>2]=b;return}function Fh(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,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;K=r;r=r+16|0;if((r|0)>=(s|0))ka();e=K;I=k[a>>2]|0;C=k[b+440>>2]|0;c=k[b+72>>2]|0;B=k[b+68>>2]|0;k[e>>2]=k[b+392>>2];A=k[b+80>>2]|0;A=(A|0)==0?1:A;c=B+c|0;g=k[a+4>>2]|0;f=g+((k[a+32>>2]|0)*20|0)|0;g=g+((k[b+84>>2]|0)*20|0)|0;On(a,e);if(!(i[b+20>>0]|0))d=0;else d=((i[b+21>>0]|0)!=0&1)<<5&65535;J=a+88|0;j[J>>1]=j[J>>1]&-33|d;H=b+450|0;E=(i[H>>0]|0)!=0&(c|0)<10?10:c;c=f;kw(f|0,0,g-c|0)|0;j[J>>1]=j[J>>1]&-9;D=a+8|0;v=E*40|0;w=a+60|0;x=C*40|0;y=a+12|0;h=(k[e>>2]<<2)+7&-8;z=a+64|0;m=(C<<2)+7&-8;n=a+56|0;o=(B<<2)+7&-8;p=a+200|0;q=A+7&-8;t=a+172|0;u=I+65|0;f=f+(c&7)|0;while(1){e=k[D>>2]|0;if(!e){d=f+v|0;c=d>>>0>g>>>0;e=c?0:f;f=c?f:d;c=c?v:0}else c=0;k[D>>2]=e;e=k[w>>2]|0;if(!e){L=f+x|0;d=L>>>0>g>>>0;e=d?0:f;f=d?f:L;c=(d?x:0)+c|0}k[w>>2]=e;e=k[y>>2]|0;if(!e){L=f+h|0;d=L>>>0>g>>>0;e=d?0:f;f=d?f:L;c=(d?h:0)+c|0}k[y>>2]=e;e=k[z>>2]|0;if(!e){L=f+m|0;d=L>>>0>g>>>0;e=d?0:f;f=d?f:L;c=(d?m:0)+c|0}k[z>>2]=e;e=k[n>>2]|0;if(!e){L=f+o|0;d=L>>>0>g>>>0;e=d?0:f;f=d?f:L;c=(d?o:0)+c|0}k[n>>2]=e;e=k[p>>2]|0;if(!e){d=(f+q|0)>>>0>g>>>0;e=d?0:f;c=(d?q:0)+c|0}k[p>>2]=e;if(!c)break;d=rh(I,c,((c|0)<0)<<31>>31)|0;if(!d)e=0;else{kw(d|0,0,c|0)|0;e=d}k[t>>2]=e;if(!(i[u>>0]|0)){f=d;g=d+c|0}else break}k[a+36>>2]=B;k[a+196>>2]=A;d=k[w>>2]|0;if((d|0)!=0?(j[a+68>>1]=C,(C|0)>0):0){c=0;do{j[d+(c*40|0)+8>>1]=1;k[d+(c*40|0)+32>>2]=I;c=c+1|0}while((c|0)!=(C|0))}d=k[z>>2]|0;if((d|0)!=0?(F=b+444|0,G=k[F>>2]|0,(G|0)>0):0){j[a+70>>1]=G;C=b+472|0;pw(d|0,k[C>>2]|0,G<<16>>14|0)|0;kw(k[C>>2]|0,0,k[F>>2]<<2|0)|0}d=k[D>>2]|0;if((d|0)!=0?(k[D>>2]=d+-40,k[a+28>>2]=E,(E|0)>=1):0){c=1;while(1){j[d+((c+-1|0)*40|0)+8>>1]=128;k[d+((c+-1|0)*40|0)+32>>2]=I;if((c|0)==(E|0))break;else c=c+1|0}}j[J>>1]=j[J>>1]&-4|l[H>>0]&3;k[a+76>>2]=-1;k[a+80>>2]=0;i[a+86>>0]=2;k[a+40>>2]=-1108210269;k[a+92>>2]=0;k[a+72>>2]=1;i[a+87>>0]=-1;k[a+104>>2]=0;D=a+144|0;k[D>>2]=0;k[D+4>>2]=0;r=K;return}function Gh(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,m=0,n=0;n=r;r=r+16|0;if((r|0)>=(s|0))ka();m=n;h=a+20|0;g=k[h>>2]|0;f=k[g+60>>2]|0;k[f>>2]=b;k[f+4>>2]=c;f=Xd(g)|0;do if((f|0)!=100){e=k[h>>2]|0;if(e){f=rd(e)|0;k[h>>2]=0;e=k[a+24>>2]|0;if(!f){f=m;k[f>>2]=b;k[f+4>>2]=c;f=1;e=zh(e,41432,m)|0;break}else{g=Xe(e)|0;k[m>>2]=g;e=zh(e,10344,m)|0;break}}else e=0}else{f=k[k[g+56>>2]>>2]|0;e=k[a+12>>2]|0;g=k[f+(e<<2)+84>>2]|0;if(g>>>0>=12){k[a+8>>2]=k[f+((j[f+20>>1]|0)+e<<2)+84>>2];k[a+4>>2]=(g+-12|0)>>>1;f=k[f>>2]|0;k[a+16>>2]=f;f=f+72|0;i[f>>0]=l[f>>0]|16;f=0;e=0;break}f=k[a+24>>2]|0;if(!g)e=20352;else e=(g|0)==7?20336:20320;k[m>>2]=e;e=zh(f,41400,m)|0;rd(k[h>>2]|0)|0;k[h>>2]=0;f=1}while(0);k[d>>2]=e;r=n;return f|0}function Hh(a){a=a|0;var b=0;if(a){b=k[a>>2]|0;rg(b,k[a+112>>2]|0);Sk(b,k[a+316>>2]|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;f=i[a+73>>0]|0;do if(!(f<<24>>24))e=4;else{if((f&255)>2?(e=Pn(a)|0,(e|0)!=0):0)break;e=Qm(a,b,c,d,0)|0}while(0);return e|0}function Jh(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,l=0,m=0,n=0,o=0;i=r;r=r+16|0;if((r|0)>=(s|0))ka();g=i;if(!a){k[g>>2]=77646;k[g+4>>2]=10788;gd(21,13648,g);d=21}else{h=k[a+24>>2]|0;g=a+20|0;f=k[g>>2]|0;do if((d|c|0)>=0?(m=ow(d|0,((d|0)<0)<<31>>31|0,c|0,((c|0)<0)<<31>>31|0)|0,o=L,l=k[a+4>>2]|0,n=((l|0)<0)<<31>>31,!((o|0)>(n|0)|(o|0)==(n|0)&m>>>0>l>>>0)):0)if(f){d=uc[e&31](k[a+16>>2]|0,(k[a+8>>2]|0)+d|0,c,b)|0;if((d|0)==4){Sg(f)|0;k[g>>2]=0;d=4;break}else{k[f+80>>2]=d;break}}else d=4;else d=1;while(0);k[h+52>>2]=d;f=k[h+236>>2]|0;do if(f){g=f+8|0;if(!(j[g>>1]&9312)){j[g>>1]=1;break}else{Ag(f);break}}while(0);d=Tg(h,d)|0}r=i;return d|0}function Kh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=a+73|0;e=i[f>>0]|0;if((e&255)>2){e=Pn(a)|0;if(!e){e=i[f>>0]|0;g=4}}else g=4;if((g|0)==4)if(e<<24>>24==1){Qn(k[a+4>>2]|0,k[a+60>>2]|0,a)|0;if(!(i[a+72>>0]&1))e=8;else e=Qm(a,b,c,d,1)|0}else e=4;return e|0}function Lh(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,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+16|0;if((r|0)>=(s|0))ka();w=y+4|0;x=y;k[w>>2]=a;k[x>>2]=b;p=l[c+1>>0]|0;q=l[c>>0]|0;v=i[c+3>>0]|0;u=(d|0)!=0;if(u)t=d;else t=l[c+2>>0]|0;m=v<<24>>24!=0;h=0;a:while(1){while(1){f=Rn(w)|0;if(!f){o=60;break a}if((f|0)==(q|0)){o=7;break a}if((f|0)!=(t|0))break;if(u){o=40;break}b=Rn(x)|0;if(!b){e=0;break a}g=Rn(w)|0;if((g|0)==94){g=Rn(w)|0;e=1}else e=0;if((g|0)==93){g=Rn(w)|0;j=(b|0)==93&1}else j=0;f=(g|0)==0;if((g|0)!=93&(f^1)){f=0;while(1){if(((g|0)==45?(n=i[k[w>>2]>>0]|0,n<<24>>24!=93):0)?n<<24>>24!=0&(f|0)!=0:0){g=b>>>0>>0|b>>>0>(Rn(w)|0)>>>0;a=0;j=g?j:1}else{a=g;j=(b|0)==(g|0)?1:j}g=Rn(w)|0;f=(g|0)==0;if(!((g|0)!=93&(f^1))){g=f;break}else f=a}}else g=f;if(g|(j|0)==(e|0)){e=0;break a}}if((o|0)==40){o=0;f=Rn(w)|0;if(!f){e=0;break}h=k[w>>2]|0}g=Rn(x)|0;if((f|0)==(g|0))continue;if(m&f>>>0<128&g>>>0<128?(i[9328+(f&255)>>0]|0)==(i[9328+(g&255)>>0]|0):0)continue;if((f|0)!=(p|0)){e=0;break}if(!((g|0)!=0?(k[w>>2]|0)!=(h|0):0)){e=0;break}}b:do if((o|0)==7){b=Rn(w)|0;a=(b|0)==(p|0);if((b|0)==(q|0)|a)do{if(a?(Rn(x)|0)==0:0){e=0;break b}b=Rn(w)|0;a=(b|0)==(p|0)}while((b|0)==(q|0)|a);if(b){do if((b|0)==(t|0)){if(u){b=Rn(w)|0;if(!b){e=0;break b}else break}e=k[x>>2]|0;c:do if(!(i[e>>0]|0))e=0;else{a=k[w>>2]|0;while(1){if(Lh(a+-1|0,e,c,0)|0)break;b=e+1|0;k[x>>2]=b;if((l[e>>0]|0)>191?(i[b>>0]&-64)<<24>>24==-128:0){while(1){e=e+2|0;if((i[e>>0]&-64)<<24>>24==-128){o=b;b=e;e=o}else break}k[x>>2]=e}else e=b;if(!(i[e>>0]|0)){e=0;break c}}e=(i[e>>0]|0)!=0}while(0);e=e&1;break b}while(0);if(b>>>0>=129){e=Rn(x)|0;if(!e){e=0;break}a=k[w>>2]|0;while(1){if((e|0)==(b|0)?(Lh(a,k[x>>2]|0,c,d)|0)!=0:0){e=1;break b}e=Rn(x)|0;if(!e){e=0;break b}}}if(!(v<<24>>24)){j=b;h=b}else{h=b&255;j=l[9328+h>>0]|0;h=((l[10368+h>>0]|-33)^32)&b}a=k[x>>2]|0;e=a+1|0;k[x>>2]=e;b=i[a>>0]|0;if(!(b<<24>>24))e=0;else{g=k[w>>2]|0;f=b&255;while(1){if((f|0)==(j|0)|(f|0)==(h|0)?(Lh(g,e,c,d)|0)!=0:0){e=1;break b}b=a+2|0;k[x>>2]=b;a=i[e>>0]|0;if(!(a<<24>>24)){e=0;break}else{o=e;f=a&255;e=b;a=o}}}}else e=1}else if((o|0)==60)e=(i[k[x>>2]>>0]|0)==0&1;while(0);r=y;return e|0}function Mh(a){a=a|0;var b=0,c=0;c=r;r=r+16|0;if((r|0)>=(s|0))ka();b=c;do if(a){a=k[a+76>>2]|0;if((a|0)==-1607883113){a=1;break}else if((a|0)==1266094736|(a|0)==-264537850){k[b>>2]=41352;gd(21,15256,b);a=0;break}else{k[b>>2]=15248;gd(21,15256,b);a=0;break}}else{k[b>>2]=20304;gd(21,15256,b);a=0}while(0);r=c;return a|0}function Nh(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;l=r;r=r+16|0;if((r|0)>=(s|0))ka();g=l;h=l+8|0;k[h>>2]=0;k[e>>2]=0;if((Mh(a)|0)==0|(b|0)==0){k[g>>2]=106003;k[g+4>>2]=10788;gd(21,13648,g);d=21}else{a:do if((c|0)>-1)if((c|0)>0){g=0;do{if((i[b+g>>0]|0)==0?(i[b+(g|1)>>0]|0)==0:0)break a;g=g+2|0}while((g|0)<(c|0))}else g=0;else g=c;while(0);j=Wh(a,b,g)|0;if(j){d=nh(a,j,-1,d,0,e,h)|0;g=k[h>>2]|0;if((g|0)!=0&(f|0)!=0){e=Sn(j,g-j|0)|0;if((e|0)>0){c=0;g=b;do{g=(i[g+1>>0]&-8)<<24>>24==-40?g+4|0:g+2|0;c=c+1|0}while((c|0)!=(e|0))}else g=b;k[f>>2]=b+(g-b)}}else d=0;rg(a,j);d=Tg(a,d)|0}r=l;return d|0}function Oh(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,p=0;p=r;r=r+16|0;if((r|0)>=(s|0))ka();m=p;n=a+12|0;f=k[n>>2]|0;l=(c|0)!=0;e=b<<((f|0)==0&l&1);o=a+20|0;h=a+8|0;g=k[h>>2]|0;if((e+(k[o>>2]|0)|0)>>>0>g>>>0){e=e+(g<<1)|0;k[h>>2]=e;f=k[a>>2]|0;if((Qc()|0)==0?(j=wg(f,e<<2,0)|0,(j|0)!=0):0){k[a>>2]=j;f=k[n>>2]|0;j=5}else j=21}else j=5;a:do if((j|0)==5){e=a+16|0;if(!f){k[e>>2]=b;if((b|0)>0){e=0;do{k[m>>2]=k[d+(e<<2)>>2];f=dd(10344,m)|0;if(!f){j=21;break a}h=k[o>>2]|0;k[o>>2]=h+1;k[(k[a>>2]|0)+(h<<2)>>2]=f;e=e+1|0}while((e|0)<(b|0))}}else if((k[e>>2]|0)!=(b|0)){e=a+4|0;$c(k[e>>2]|0);o=dd(40912,m)|0;k[e>>2]=o;k[a+24>>2]=1;e=1;break}if(l){if((b|0)>0){h=0;do{g=c+(h<<2)|0;e=k[g>>2]|0;if(!e)e=0;else{f=e;while(1)if(!(i[f>>0]|0))break;else f=f+1|0;f=(f-e&1073741823)+1|0;e=Yc(f)|0;if(!e){j=21;break a}pw(e|0,k[g>>2]|0,f|0)|0}m=k[o>>2]|0;k[o>>2]=m+1;k[(k[a>>2]|0)+(m<<2)>>2]=e;h=h+1|0}while((h|0)<(b|0))}k[n>>2]=(k[n>>2]|0)+1;e=0}else e=0}while(0);if((j|0)==21){k[a+24>>2]=7;e=1}r=p;return e|0}function Ph(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,j=0,l=0,m=0;m=r;r=r+16|0;if((r|0)>=(s|0))ka();j=m;if(!b)g=0;else{f=b;while(1)if(!(i[f>>0]|0))break;else f=f+1|0;g=f-b&1073741823}h=a+308|0;f=gn(h,b,j)|0;if((f|0)!=0?(k[f+8>>2]|0)!=0:0){k[j>>2]=114188;k[j+4>>2]=10788;gd(21,13648,j);f=21}else{f=rh(a,g+17|0,0)|0;if((f|0)!=0?(l=f+16|0,pw(l|0,b|0,g+1|0)|0,k[f+4>>2]=l,k[f>>2]=c,k[f+8>>2]=d,k[f+12>>2]=e,l=Nk(h,l,f)|0,(l|0)!=0):0){i[a+65>>0]=1;rg(a,l);f=0}else f=0}f=Tg(a,f)|0;if((f|0)!=0&(e|0)!=0)hc[e&31](d);r=m;return f|0}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,j=0,l=0,m=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+16|0;if((r|0)>=(s|0))ka();x=A;l=A+8|0;y=k[a>>2]|0;h=k[y+92>>2]|0;if(!(k[y+148>>2]|0))k[y+240>>2]=0;z=a+12|0;k[z>>2]=0;n=a+480|0;k[n>>2]=b;t=vg(1612,0)|0;if(t){k[t>>2]=-1;o=y+250|0;p=i[o>>0]|0;if(k[y+276>>2]|0)i[o>>0]=1;q=y+65|0;m=a+504|0;d=a+508|0;j=y+240|0;g=0;f=-1;a:while(1){while(1){if(i[q>>0]|0){v=19;break a}e=b+g|0;if(!(i[e>>0]|0)){v=19;break a}k[m>>2]=e;e=Hn(e,l)|0;k[d>>2]=e;g=e+g|0;if((g|0)>(h|0)){v=12;break a}e=k[l>>2]|0;if((e|0)==1){f=e;v=17;break}else if((e|0)==150){v=16;break a}else if((e|0)!=151){f=e;break}if(k[j>>2]|0){v=15;break a}}if((v|0)==17){v=0;k[n>>2]=b+g};k[x+0>>2]=k[m+0>>2];k[x+4>>2]=k[m+4>>2];Tn(t,f,x,a);f=k[l>>2]|0;if(k[z>>2]|0){v=19;break}}if((v|0)==12){k[z>>2]=18;v=19}else if((v|0)==15){yh(a,20384,x);k[z>>2]=9;v=19}else if((v|0)==16){rg(y,k[c>>2]|0);k[x>>2]=m;d=zh(y,20400,x)|0;k[c>>2]=d;d=1}if((v|0)==19){g=b+g|0;if((i[g>>0]|0)==0?(k[z>>2]|0)==0:0){if((f|0)!=1){k[x+0>>2]=k[m+0>>2];k[x+4>>2]=k[m+4>>2];Tn(t,1,x,a);k[n>>2]=g};k[x+0>>2]=k[m+0>>2];k[x+4>>2]=k[m+4>>2];Tn(t,0,x,a);d=0}else d=0}if((k[t>>2]|0)>-1)do Un(t);while((k[t>>2]|0)>-1);$c(t);i[o>>0]=p;if(!(i[q>>0]|0)){f=k[z>>2]|0;if(!((f|0)==101|(f|0)==0)){u=f;v=29}}else{k[z>>2]=7;u=7;v=29}if((v|0)==29?(w=a+4|0,(k[w>>2]|0)==0):0){if((u|0)!=516){f=u&255;if(f>>>0>26|(f|0)==2)f=16328;else f=k[15488+(f<<2)>>2]|0}else f=16344;k[x>>2]=f;ih(w,y,10344,x)}f=a+4|0;e=k[f>>2]|0;if(e){k[c>>2]=e;c=k[z>>2]|0;k[x>>2]=e;gd(c,10344,x);k[f>>2]=0;d=d+1|0}f=a+8|0;e=k[f>>2]|0;if(((e|0)!=0?(k[a+64>>2]|0)>0:0)?(i[a+18>>0]|0)==0:0){Ul(e);k[f>>2]=0}if(!(i[a+18>>0]|0)){c=a+400|0;rg(y,k[c>>2]|0);k[c>>2]=0;k[a+396>>2]=0}$c(k[a+520>>2]|0);if(!(i[a+451>>0]|0))pg(y,k[a+484>>2]|0);if(i[a+449>>0]|0)Vn(y,k[a+532>>2]|0);og(y,k[a+488>>2]|0);f=k[a+444>>2]|0;g=a+472|0;e=k[g>>2]|0;if((f|0)>0)do{f=f+-1|0;rg(y,k[e+(f<<2)>>2]|0);e=k[g>>2]|0}while((f|0)>0);rg(y,e);f=a+404|0;e=k[f>>2]|0;if(e)do{k[f>>2]=k[e>>2];rg(y,e);e=k[f>>2]|0}while((e|0)!=0);f=a+524|0;e=k[f>>2]|0;if(e)do{k[f>>2]=k[e+72>>2];pg(y,e);e=k[f>>2]|0}while((e|0)!=0);if((d|0)>0?(k[z>>2]|0)==0:0)k[z>>2]=1}else{i[y+65>>0]=1;d=7}r=A;return d|0}function Rh(a){a=a|0;if(a){if(!((j[a+8>>1]&9312)==0?(k[a+24>>2]|0)==0:0))Vg(a);rg(k[a+32>>2]|0,a)}return}function Sh(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;if(!(k[a+252>>2]|0)){n=a+251|0;if(i[n>>0]|0)$c(k[a+276>>2]|0);g=c&-8;e=(g|0)<5?0:g;f=(d|0)<0?0:d;if(!((e|0)==0|(f|0)==0))if(!b){c=k[3164]|0;if(c)sc[c&3]();c=ha(e,f)|0;c=vg(c,((c|0)<0)<<31>>31)|0;d=k[3166]|0;if(d)sc[d&3]();if(!c)c=0;else f=(qc[k[8744+48>>2]&127](c)|0)/(g|0)|0}else c=b;else{e=0;c=0}d=a+276|0;k[d>>2]=c;m=a+272|0;k[m>>2]=0;j[a+248>>1]=e;if(!c){k[d>>2]=a;k[a+280>>2]=a;i[a+250>>0]=0;c=0}else{if((f|0)>0){d=ha(e,f)|0;l=c+(ha(e,f+-1|0)|0)|0;h=0;g=c;while(1){f=f+-1|0;k[g>>2]=h;if((f|0)<=0)break;else{h=g;g=g+e|0}}k[m>>2]=l;c=c+d|0}k[a+280>>2]=c;i[a+250>>0]=1;c=(b|0)==0&1}i[n>>0]=c;c=0}else c=5;return c|0}function Th(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;o=r;r=r+16|0;if((r|0)>=(s|0))ka();n=o;do if(!a)c=0;else{h=a+76|0;l=k[h>>2]|0;if(!((l|0)==1266094736|(l|0)==-1607883113|(l|0)==-264537850)){k[n>>2]=15248;gd(21,15256,n);k[n>>2]=128509;k[n+4>>2]=10788;gd(21,13648,n);c=21;break}j=a+20|0;c=k[j>>2]|0;a:do if((c|0)>0){l=a+16|0;d=k[l>>2]|0;f=0;do{e=k[d+(f<<4)+4>>2]|0;if(e)k[(k[e+4>>2]|0)+4>>2]=k[e>>2];f=f+1|0}while((f|0)!=(c|0));g=0;while(1){c=k[d+(g<<4)+12>>2]|0;if((c|0)!=0?(m=k[c+16>>2]|0,(m|0)!=0):0){c=m;do{d=k[c+8>>2]|0;b:do if(i[d+44>>0]&16){e=d+60|0;while(1){d=k[e>>2]|0;if(!d)break b;f=d+24|0;if((k[d>>2]|0)==(a|0))break;else e=f}k[e>>2]=k[f>>2];Fn(d)}while(0);c=k[c>>2]|0}while((c|0)!=0)}c=g+1|0;if((c|0)>=(k[j>>2]|0))break a;d=k[l>>2]|0;g=c}}while(0);wl(a);Wn(a,68);if((b|0)==0?(Ol(a)|0)!=0:0){zg(a,5,16368,n);c=5;break}k[h>>2]=1691352191;Rg(a);c=0}while(0);r=o;return c|0}function Uh(a,b){a=a|0;b=b|0;if(((b*1e3|0)+1e3|0)>(k[a+492>>2]|0))b=0;else{b=k[a>>2]|0;wc[k[b+60>>2]&127](b,1e6)|0;b=1}return b|0}function Vh(a,b,c,d,e,f,g,h,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;l=l|0;var n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();t=v;do if(b){p=(f|0)!=0;n=(h|0)!=0;if(p)if(n|(g|0)!=0){u=8;break}else{n=0;o=0}else{o=(g|0)!=0;if(!(o|n^1)){u=8;break}}if(!(o&((p|n)^1)|(c|0)<-1|(c|0)>127)){n=b;while(1)if(!(i[n>>0]|0))break;else n=n+1|0;o=n-b&1073741823;if(o>>>0<=255){q=d&2048;n=d&7;if((n|0)!=4){if((n|0)==5){n=Vh(a,b,c,q|1,e,f,g,h,l)|0;if(n)break;n=Vh(a,b,c,q|2,e,f,g,h,l)|0;if(!n)n=3;else break}}else n=2;p=n&255;d=Xh(a,b,o,c,p,0)|0;if(((d|0)!=0?(m[d+2>>1]&3|0)==(n|0):0)?(j[d>>1]|0)==(c|0):0){if(k[a+148>>2]|0){zg(a,5,15424,t);n=5;break}n=k[a+4>>2]|0;if(n)do{t=n+88|0;j[t>>1]=j[t>>1]|8;n=k[n+52>>2]|0}while((n|0)!=0)}n=Xh(a,b,o,c,p,1)|0;if(!n)n=7;else{Sl(a,n);if(l)k[l>>2]=(k[l>>2]|0)+1;k[n+32>>2]=l;l=n+2|0;j[l>>1]=m[l>>1]&3|q;k[n+12>>2]=f;k[n+16>>2]=g;k[n+20>>2]=h;k[n+4>>2]=e;j[n>>1]=c;n=0}}else u=8}else u=8}else u=8;while(0);if((u|0)==8){k[t>>2]=129075;k[t+4>>2]=10788;gd(21,13648,t);n=21}r=v;return n|0}function Wh(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;if((r|0)>=(s|0))ka();f=g;d=f+0|0;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[f+32>>2]=a;ah(f,b,c,2,0)|0;c=f+8|0;b=k[c>>2]|0;if(!((b&2|0)==0|(b&16711680|0)==65536))Gn(f,1)|0;if(!(i[a+65>>0]|0))c=k[f+16>>2]|0;else{if(!((j[c>>1]&9312)==0?(k[f+24>>2]|0)==0:0))Vg(f);k[f+16>>2]=0;c=0}r=g;return c|0}function Xh(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,m=0,n=0,o=0,p=0,q=0;n=((l[9328+(l[b>>0]|0)>>0]|0)+c|0)%23|0;o=a+336|0;h=Wk(o,n,b,c)|0;if(!h){m=0;g=0}else{m=0;g=0;do{q=Xn(h,d,e)|0;p=(q|0)>(m|0);m=p?q:m;g=p?h:g;h=k[h+8>>2]|0}while((h|0)!=0)}do if(!(f<<24>>24)){if((g|0)!=0?(k[a+24>>2]&2097152|0)==0:0){h=0;n=12;break}h=Wk(10840,n,b,c)|0;if(!h){m=0;n=8}else{m=0;do{p=Xn(h,d,e)|0;n=(p|0)>(m|0);m=n?p:m;g=n?h:g;h=k[h+8>>2]|0}while((h|0)!=0);n=8}}else n=8;while(0);do if((n|0)==8){h=f<<24>>24!=0;if(h&(m|0)<6){h=c+37|0;g=rh(a,h,0)|0;if(!g){n=14;break}kw(g|0,0,h|0)|0;h=g+36|0;k[g+24>>2]=h;j[g>>1]=d;j[g+2>>1]=e&255;pw(h|0,b|0,c|0)|0;i[g+(c+36)>>0]=0;sg(o,g);h=1}if(!g)n=14;else n=12}while(0);if((n|0)==12)if((k[g+16>>2]|0)==0?!((k[g+12>>2]|0)!=0|h):0)n=14;if((n|0)==14)g=0;return g|0}function Yh(a,b,c){a=a|0;b=b|0;c=c|0;b=r;r=r+16|0;if((r|0)>=(s|0))ka();c=b;k[c>>2]=k[(k[a+4>>2]|0)+24>>2];c=dd(15304,c)|0;k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,c,-1,1,-1)|0;$c(c);r=b;return}function Zh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)<=(d|0)){d=k[3164]|0;if(d)sc[d&3]();Pf(b,c,0,0,0)|0;d=k[3166]|0;if(d)sc[d&3]()}return 0}function _h(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;a:do if(b){c=b;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;e=c-b&1073741823;d=k[a+20>>2]|0;c=d+-1|0;if((d|0)>0){f=c;d=(k[a+16>>2]|0)+(c<<4)|0;while(1){a=k[d>>2]|0;if(!a)c=0;else{c=a;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;c=c-a&1073741823}if((e|0)==(c|0)?(id(a,b)|0)==0:0){c=f;break a}c=f+-1|0;if((f|0)>0){f=c;d=d+-16|0}else break}}}else c=-1;while(0);return c|0}function $h(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,j=0,m=0,n=0,o=0,p=0,q=0,r=0;q=a+20|0;f=k[q>>2]|0;if((f|0)>0){r=(b|0)==10;o=a+16|0;p=(c|0)==0;m=d;a=f;d=0;n=0;while(1){if((n|0)==(b|0)|r){g=k[(k[o>>2]|0)+(n<<4)+4>>2]|0;if(g){f=k[g+4>>2]|0;k[f+4>>2]=k[g>>2];if(!(i[f+20>>0]|0)){g=k[f>>2]|0;h=k[g+208>>2]|0;if(!h)h=0;else{if(p)f=0;else f=k[g+176>>2]|0;h=Yn(h,c,f,k[g+180>>2]|0,l[g+9>>0]|0,k[g+152>>2]|0,k[g+200>>2]|0,m,e)|0;a=k[q>>2]|0}}else h=6}else h=0;e=(h|0)==5;j=0;g=0;f=a;d=e?1:d;e=e?0:h}else{j=e;g=m;f=a;e=0}n=n+1|0;a=(e|0)==0;if(!((n|0)<(f|0)&a))break;else{m=g;e=j;a=f}}}else{a=1;d=0;e=0}return (a&(d|0)!=0?5:e)|0}function ai(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,t=0,u=0,v=0,w=0;w=r;r=r+32|0;if((r|0)>=(s|0))ka();q=w;t=w+20|0;m=w+16|0;l=w+12|0;h=w+8|0;k[m>>2]=c;k[l>>2]=0;k[h>>2]=0;k[b>>2]=0;e=Qc()|0;do if(!e){if(!(1<<(c&7)&70)){k[q>>2]=130207;k[q+4>>2]=10788;gd(21,13648,q);e=21;break}if((k[2187]|0)!=0&(c&32768|0)==0)g=(c&65536|0)==0?k[2188]|0:1;else g=0;if(!(c&262144)){if(k[2241]|0){c=c|131072;k[m>>2]=c}}else{c=c&-131073;k[m>>2]=c}c=c&-655129;k[m>>2]=c;v=vg(528,0)|0;a:do if(v){kw(v|0,0,528)|0;if(g)k[v+12>>2]=8;k[v+56>>2]=255;k[v+20>>2]=2;n=v+76|0;k[n>>2]=-264537850;o=v+16|0;k[o>>2]=v+456;f=v+88|0;g=11088;e=f+44|0;do{k[f>>2]=k[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(e|0));k[v+132>>2]=0;i[v+63>>0]=1;i[v+67>>0]=-1;f=8920;p=k[f+4>>2]|0;g=v+40|0;k[g>>2]=k[f>>2];k[g+4>>2]=p;k[v+72>>2]=0;k[v+136>>2]=2147483647;k[v+24>>2]=9437264;g=v+428|0;k[g+0>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;p=v+308|0;k[p+0>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;bi(v,11152,1,0,21,0)|0;bi(v,11152,3,0,21,0)|0;bi(v,11152,2,0,21,0)|0;bi(v,13752,1,0,22,0)|0;bi(v,13760,1,1,21,0)|0;p=v+65|0;if(!(i[p>>0]|0)){g=gn(g,11152,q)|0;if(!g)g=0;else g=k[g+8>>2]|0;k[v+8>>2]=g;k[v+48>>2]=c;g=$n(d,a,m,v,l,h)|0;if((g|0)==7)i[p>>0]=1;else if(!g){a=k[l>>2]|0;e=Em(k[v>>2]|0,a,v,(k[o>>2]|0)+4|0,0,k[m>>2]|256)|0;if((e|0)==3082)e=7;else if(!e){c=k[(k[o>>2]|0)+4>>2]|0;k[(k[c+4>>2]|0)+4>>2]=k[c>>2];c=ao(v,c)|0;k[(k[o>>2]|0)+12>>2]=c;if(!(i[p>>0]|0))i[v+62>>0]=i[c+77>>0]|0;c=vg(84,0)|0;if(!c){i[p>>0]=1;c=0}else{f=c+0|0;e=f+84|0;do{i[f>>0]=0;f=f+1|0}while((f|0)<(e|0));g=c+77|0;f=c+8|0;e=f+64|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(e|0));i[g>>0]=1}m=k[o>>2]|0;k[m+28>>2]=c;k[m>>2]=13768;i[m+8>>0]=3;k[m+16>>2]=10728;i[m+24>>0]=1;k[n>>2]=-1607883113;if(i[p>>0]|0){e=v;break}f=v+52|0;k[f>>2]=0;g=v+236|0;c=k[g>>2]|0;do if(c){e=c+8|0;if(!(j[e>>1]&9312)){j[e>>1]=1;break}else{Ag(c);break}}while(0);if((Hf(v,14632,2)|0)==7)i[p>>0]=1;c=Sf(v)|0;do if(!c){c=k[2656]|0;if(c){b:do if((c|0)>0){f=0;while(1){c=k[(k[2658]|0)+(f<<2)>>2]|0;k[t>>2]=0;if(c){e=fc[c&63](v,t,13776)|0;c=k[t>>2]|0;if(e)break}else c=0;$c(c);f=f+1|0;if((f|0)>=(k[2656]|0)){u=40;break b}}k[q>>2]=c;zg(v,e,14592,q);e=k[t>>2]|0}else u=40;while(0);if((u|0)==40){k[t>>2]=0;e=0}$c(e)}if(Sf(v)|0){e=v;break a}}else{k[f>>2]=c;e=k[g>>2]|0;if(e){c=e+8|0;if(!(j[c>>1]&9312)){j[c>>1]=1;break}else{Ag(e);break}}}while(0);Sh(v,0,k[2193]|0,k[2194]|0)|0;k[v+216>>2]=21;k[v+220>>2]=1e3;e=v;break}k[v+52>>2]=e;c=k[v+236>>2]|0;if(!c){e=v;break}e=c+8|0;if(!(j[e>>1]&9312)){j[e>>1]=1;e=v;break}else{Ag(c);e=v;break}}a=k[h>>2]|0;k[q>>2]=a;zg(v,g,(a|0)!=0?10344:0,q);$c(a);a=k[l>>2]|0;e=v}else{a=0;e=v}}else{a=0;e=0}while(0);$c(a);c=Sf(e)|0;if((c|0)==7){Th(e,0)|0;e=0}else if(c)k[v+76>>2]=1266094736;k[b>>2]=e;e=c&255}while(0);r=w;return e|0}function bi(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,m=0,n=0,o=0,p=0,q=0;q=r;r=r+16|0;if((r|0)>=(s|0))ka();g=q;p=c&255;if(!(c<<24>>24==4|c<<24>>24==8))if((p+-1|0)>>>0>2){k[g>>2]=129758;k[g+4>>2]=10788;gd(21,13648,g);g=21}else{o=p;h=4}else{o=2;h=4}do if((h|0)==4){n=o&255;h=bo(a,n,b,0)|0;if((h|0)!=0?(k[h+12>>2]|0)!=0:0){if(k[a+148>>2]|0){zg(a,5,13680,g);g=5;break}c=k[a+4>>2]|0;if(c)do{m=c+88|0;j[m>>1]=j[m>>1]|8;c=k[c+52>>2]|0}while((c|0)!=0);m=h+4|0;if((l[m>>0]&247|0)==(o|0)){c=gn(a+428|0,b,g)|0;if(!c)h=0;else h=k[c+8>>2]|0;g=0;do{if((i[h+(g*20|0)+4>>0]|0)==(i[m>>0]|0)){c=k[h+(g*20|0)+16>>2]|0;if(c)hc[c&31](k[h+(g*20|0)+8>>2]|0);k[h+(g*20|0)+12>>2]=0}g=g+1|0}while((g|0)!=3)}}c=bo(a,n,b,1)|0;if(c){k[c+12>>2]=e;k[c+8>>2]=d;k[c+16>>2]=f;i[c+4>>0]=o|p&8;k[a+52>>2]=0;g=k[a+236>>2]|0;if(g){c=g+8|0;if(!(j[c>>1]&9312)){j[c>>1]=1;g=0;break}else{Ag(g);g=0;break}}else g=0}else g=7}while(0);r=q;return g|0}function ci(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;l=a+24|0;m=k[l>>2]&2;n=a+145|0;i[n>>0]=1;h=a+16|0;f=k[h>>2]|0;i[a+62>>0]=i[(k[f+12>>2]|0)+77>>0]|0;e=a+20|0;d=0;while(1){if((d|0)>=(k[e>>2]|0)){d=f;f=6;break}if(!((d|0)==1?1:(j[(k[f+(d<<4)+12>>2]|0)+78>>1]&1)!=0)?(c=co(a,d,b)|0,(c|0)!=0):0){f=9;break}f=k[h>>2]|0;d=d+1|0}if((f|0)==6)if((j[(k[d+28>>2]|0)+78>>1]&1)==0?(g=co(a,1,b)|0,(g|0)!=0):0){vl(k[(k[h>>2]|0)+28>>2]|0);c=g}else c=0;else if((f|0)==9)Am(a,d);i[n>>0]=0;if(!(c|m))k[l>>2]=k[l>>2]&-3;return c|0}function di(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;l=r;r=r+16|0;if((r|0)>=(s|0))ka();j=l;h=a+20|0;a:do if((k[h>>2]|0)>0){i=(c|0)==0;f=a+16|0;g=0;a=0;do{e=(g|0)<2^g;d=k[f>>2]|0;if(!(!i?(id(c,k[d+(e<<4)>>2]|0)|0)!=0:0)){a=gn((k[d+(e<<4)+12>>2]|0)+8|0,b,j)|0;if(a){a=k[a+8>>2]|0;if(a)break a}else a=0}g=g+1|0}while((g|0)<(k[h>>2]|0))}else a=0;while(0);r=l;return a|0}function ei(a){a=a|0;if((id(a,12936)|0)!=0?(id(a,12944)|0)!=0:0)a=(id(a,12952)|0)==0&1;else a=1;return a|0}function fi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=k[a+20>>2]|0;a:do if((f|0)>0){c=k[a+16>>2]|0;d=(b|0)==0;e=0;while(1){a=k[c+(e<<4)+4>>2]|0;if(a){if(d)break a;if(!(id(b,k[c+(e<<4)>>2]|0)|0))break a}e=e+1|0;if((e|0)>=(f|0)){a=0;break}}}else a=0;while(0);return a|0}function gi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;a:do if(!a)b=0;else{b=b+-1|0;b:do if((k[a>>2]|0)>>>0>4e3){d=a;c=b;while(1){b=d+8|0;e=k[b>>2]|0;if(!e){g=a;break}b=(c>>>0)%(e>>>0)|0;c=d+12+(((c>>>0)/(e>>>0)|0)<<2)|0;a=k[c>>2]|0;if(!a){a=vg(512,0)|0;if(!a){b=a;j=21;break}kw(a|0,0,512)|0;k[a>>2]=e;k[c>>2]=a}if((k[a>>2]|0)>>>0>4e3){d=a;c=b}else break b}if((j|0)==21){k[c>>2]=b;b=7;break a}h=c+1|0;c=(c>>>0)%125|0;f=d+12|0;a=k[d+(c<<2)+12>>2]|0;if(!a){a=k[d+4>>2]|0;if(a>>>0<124){b=d;j=20}}else{do{if((a|0)==(h|0)){b=0;break a}c=c+1|0;c=c>>>0>124?0:c;a=k[d+(c<<2)+12>>2]|0}while((a|0)!=0);a=k[d+4>>2]|0;if(a>>>0<=61){b=d;j=20}}if((j|0)==20){k[d+4>>2]=a+1;k[b+(c<<2)+12>>2]=h;b=0;break a}e=vg(500,0)|0;if(!e){b=7;break a}pw(e|0,f|0,500)|0;kw(f|0,0,500)|0;k[b>>2]=(((k[g>>2]|0)+124|0)>>>0)/125|0;a=0;b=gi(d,h)|0;do{c=k[e+(a<<2)>>2]|0;if(c)b=gi(d,c)|0|b;a=a+1|0}while((a|0)!=125);$c(e);break a}while(0);a=a+12+(b>>>3)|0;i[a>>0]=l[a>>0]|0|1<<(b&7);b=0}while(0);return b|0}function hi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;a:do if(a){d=b+-1|0;while(1){b=k[a+8>>2]|0;if(!b)break;a=k[a+12+(((d>>>0)/(b>>>0)|0)<<2)>>2]|0;if(!a)break a;else d=(d>>>0)%(b>>>0)|0}if((k[a>>2]|0)>>>0<4001){a=a+12+(d>>>3)|0;i[a>>0]=(l[a>>0]|0)&(1<<(d&7)^255);break}h=a+12|0;pw(c|0,h|0,500)|0;kw(h|0,0,500)|0;h=a+4|0;k[h>>2]=0;e=d+1|0;g=0;do{f=c+(g<<2)|0;b=k[f>>2]|0;if(!((b|0)==0|(b|0)==(e|0))){d=((b+-1|0)>>>0)%125|0;k[h>>2]=(k[h>>2]|0)+1;b=a+(d<<2)+12|0;if(k[b>>2]|0)do{b=d+1|0;d=b>>>0>124?0:b;b=a+(d<<2)+12|0}while((k[b>>2]|0)!=0);k[b>>2]=k[f>>2]}g=g+1|0}while((g|0)!=125)}while(0);return}function ii(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if((a|0)!=0?(c=b+-1|0,c>>>0<(k[a>>2]|0)>>>0):0){while(1){b=k[a+8>>2]|0;if(!b)break;a=k[a+12+(((c>>>0)/(b>>>0)|0)<<2)>>2]|0;if(!a){c=0;break a}else c=(c>>>0)%(b>>>0)|0}if((k[a>>2]|0)>>>0<4001){c=((l[a+12+(c>>>3)>>0]|0)&1<<(c&7)|0)!=0&1;break}d=c+1|0;c=(c>>>0)%125|0;b=k[a+(c<<2)+12>>2]|0;if(b)while(1){if((b|0)==(d|0)){c=1;break a}c=((c+1|0)>>>0)%125|0;b=k[a+(c<<2)+12>>2]|0;if(!b){c=0;break}}else c=0}else c=0;while(0);return c|0}function ji(a){a=a|0;var b=0,c=0;if(a){if(k[a+8>>2]|0){b=a+12|0;c=0;do{ji(k[b+(c<<2)>>2]|0);c=c+1|0}while((c|0)!=125)}$c(a)}return}function ki(a,b){a=a|0;b=b|0;var c=0;a:do if((b|0)>=2?(c=i[11824+(((l[9328+(l[a>>0]|0)>>0]|0)<<2^b^(l[9328+(l[a+(b+-1)>>0]|0)>>0]|0)*3|0)%127|0)>>0]|0,c<<24>>24!=0):0){c=c&255;while(1){c=c+-1|0;if((l[12080+c>>0]|0|0)==(b|0)?(Kc(11264+(m[12208+(c<<1)>>1]|0)|0,a,b)|0)==0:0)break;c=i[11952+c>>0]|0;if(!(c<<24>>24)){c=27;break a}else c=c&255}c=l[12456+c>>0]|0}else c=27;while(0);return c|0}function li(a){a=a|0;var b=0,c=0,d=0;k[2174]=a;if((k[2184]|0)>>>0>>0)k[2184]=a;c=k[2264]|0;if((c|0)==0|(k[2235]|0)<(a|0)){b=vg(a,((a|0)<0)<<31>>31)|0;if((k[2186]|0)!=0&(b|0)!=0?(d=qc[k[8744+48>>2]&127](b)|0,d=(k[2170]|0)+d|0,k[2170]=d,d>>>0>(k[2180]|0)>>>0):0)k[2180]=d}else{b=k[2263]|0;k[2263]=k[b>>2];k[2264]=c+-1;a=(k[2169]|0)+1|0;k[2169]=a;if(a>>>0>(k[2179]|0)>>>0)k[2179]=a}return b|0}function mi(a){a=a|0;var b=0;do if(a){if((k[2234]|0)>>>0<=a>>>0&(k[2262]|0)>>>0>a>>>0){k[a>>2]=k[2263];k[2263]=a;k[2264]=(k[2264]|0)+1;k[2169]=(k[2169]|0)+-1;break}if(!(k[2186]|0)){hc[k[8744+40>>2]&31](a);break}else{b=qc[k[8744+48>>2]&127](a)|0;k[2170]=(k[2170]|0)-b;k[2166]=(k[2166]|0)-b;k[2175]=(k[2175]|0)+-1;hc[k[8744+40>>2]&31](a);break}}while(0);return}function ni(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+16|0;if((r|0)>=(s|0))ka();e=g;d=i[a>>0]|0;a:do if(((d&255)+-48|0)>>>0>=10){f=d;d=a;while(1){e=d+1|0;if(!(f<<24>>24))break;f=i[e>>0]|0;d=e}f=d-a&1073741823;d=7-b|0;if((d|0)>0){e=0;while(1){if((l[11248+e>>0]|0|0)==(f|0)?(Kc(11216+(l[11240+e>>0]|0)|0,a,f)|0)==0:0){c=e;break}e=e+1|0;if((e|0)>=(d|0))break a}c=i[11256+c>>0]|0}}else{k[e>>2]=0;In(a,e)|0;c=k[e>>2]&255}while(0);r=g;return c|0}function oi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;c=i[a>>0]|0;do if(c<<24>>24==48){d=i[a+1>>0]|0;if(!(d<<24>>24==88|d<<24>>24==120))if(!a){c=0;j=15;break}else{e=c;c=a;j=12;break}c=i[a+2>>0]|0;if(!(i[10368+(c&255)>>0]&8)){e=48;c=a;j=12}else{e=2;while(1){d=e+1|0;if(c<<24>>24!=48)break;c=i[a+d>>0]|0;e=d}if(!(i[10368+(c&255)>>0]&8)){f=a+e|0;g=0;c=0;d=e}else{g=0;f=0;d=e;while(1){g=nw(g|0,f|0,4)|0;h=L;f=c<<24>>24;g=(0-(f>>>6&1)&9)+f&15|g;d=d+1|0;f=a+d|0;c=i[f>>0]|0;if(!(i[10368+(c&255)>>0]&8)){c=h;break}else f=h}}h=b;k[h>>2]=g;k[h+4>>2]=c;if(!(i[f>>0]|0))c=(d-e|0)<17;else c=0;c=c&1^1}}else{e=c;c=a;j=12}while(0);if((j|0)==12){while(1){d=c+1|0;if(!(e<<24>>24))break;e=i[d>>0]|0;c=d;j=12}c=c-a&1073741823;j=15}if((j|0)==15)c=Zl(a,b,c,1)|0;return c|0}function pi(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,l=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=r;r=r+1264|0;if((r|0)>=(s|0))ka();B=D;A=D+152|0;u=D+742|0;v=D+76|0;p=D+228|0;l=d&-256;q=d&16;z=d&8;t=d&4;h=d&1;w=d&2;if((t|0)!=0?(l|0)==524288|(l|0)==2048|(l|0)==16384:0)y=1;else y=0;x=k[12114]|0;if((x|0)!=(wb()|0)?(x=wb()|0,k[12114]=x,(Qc()|0)==0):0)i[9064]=0;n=c+0|0;o=n+44|0;do{k[n>>2]=0;n=n+4|0}while((n|0)<(o|0));x=(l|0)==256;do if(x){a:do if((wc[k[47552+52>>2]&127](b,B)|0)==0?(f=k[12178]|0,(f|0)!=0):0){l=k[B>>2]|0;n=k[B+72>>2]|0;while(1){if((k[f>>2]|0)==(l|0)?(k[f+4>>2]|0)==(n|0):0)break;f=k[f+32>>2]|0;if(!f){C=18;break a}}l=f+28|0;f=k[l>>2]|0;if(f){while(1){o=l;l=f+8|0;n=f;f=k[l>>2]|0;if((k[n+4>>2]|0)==(d|0)){l=o;break}if(!f){C=18;break a}}k[l>>2]=f;p=k[n>>2]|0;f=n}else C=18}else C=18;while(0);if((C|0)==18){f=Yc(12)|0;if(!f){f=7;break}else p=-1}k[c+28>>2]=f;l=t<<4|w;f=(q|0)!=0;if((p|0)<0){t=f;q=f?l|131200:l;f=b;C=23}else{o=p;f=b;C=36}}else{if(!b){f=eo(514,p)|0;if(!f)f=p;else break}else f=b;C=t<<4|w;q=(q|0)!=0;t=q;q=q?C|131200:C;C=23}while(0);b:do if((C|0)==23){if(!(d&526336)){l=(z|0)==0?0:384;p=0;o=0}else{if(!f)l=0;else{l=f;while(1)if(!(i[l>>0]|0))break;else l=l+1|0;l=l-f&1073741823}do l=l+-1|0;while((i[f+l>>0]|0)!=45);pw(u|0,f|0,l|0)|0;i[u+l>>0]=0;if(wc[k[47552+52>>2]&127](u,v)|0){f=1802;break}l=k[v+12>>2]&511;p=k[v+20>>2]|0;o=k[v+24>>2]|0}n=fo(f,q,l)|0;do if((n|0)<0){v=Mb()|0;if(!(t|((w|0)==0|(k[v>>2]|0)==21))?(g=fo(f,q&131200,l)|0,(g|0)>=0):0){d=d&-8|1;h=1;break}k[B>>2]=31186;k[B+4>>2]=10788;gd(14,14848,B);f=io(14,47896,f,31186)|0;if(!f){f=0;break b}g=c+28|0;C=70;break b}else g=n;while(0);if(!(d&526336)){o=g;C=36}else{fc[k[47552+244>>2]&63](g,p,o)|0;o=g;C=36}}while(0);c:do if((C|0)==36){if(e)k[e>>2]=d;p=c+28|0;g=k[p>>2]|0;if(g){k[g>>2]=o;k[g+4>>2]=d}if(z)qc[k[47552+196>>2]&127](f)|0;f=z<<2;f=(h|0)==0?f:f|2;f=x?f:f|128;f=y?f|8:f;z=f|d&64;k[c+12>>2]=o;k[c+4>>2]=a;k[c+32>>2]=b;g=c+18|0;j[g>>1]=z&255;if(kg((z&64|0)!=0?b:0,48496,1)|0)j[g>>1]=m[g>>1]|16;if(!(dw(k[a+16>>2]|0,1e4)|0))j[g>>1]=m[g>>1]|1;d:do if(!(f&128)){f=wc[k[k[a+20>>2]>>2]&127](b,c)|0;if((f|0)!=48504){if((f|0)!=47472){C=64;break}g=(lw(b|0)|0)+6|0;f=Yc(g)|0;if(f){k[B>>2]=b;fd(g,f,48584,B)|0;k[c+24>>2]=f;k[c+20>>2]=0;f=47472;break}k[c+24>>2]=0;k[c+20>>2]=0;if((o|0)<=-1){g=p;f=7;C=70;break c}go(c,o,30794);g=p;f=7;C=70;break c}do if(!(wc[k[47552+64>>2]&127](k[c+12>>2]|0,A)|0)){f=B;k[f>>2]=0;k[f+4>>2]=0;k[B>>2]=k[A>>2];k[B+4>>2]=k[A+72>>2];f=k[12178]|0;e:do if(!f)C=53;else{while(1){if(!(cw(B,f,8)|0))break;f=k[f+32>>2]|0;if(!f){C=53;break e}}B=f+16|0;k[B>>2]=(k[B>>2]|0)+1}while(0);if((C|0)==53){g=Yc(40)|0;if(!g){f=7;g=c+20|0;break}n=g+0|0;o=n+40|0;do{k[n>>2]=0;n=n+4|0}while((n|0)<(o|0));C=k[B+4>>2]|0;f=g;k[f>>2]=k[B>>2];k[f+4>>2]=C;k[g+16>>2]=1;k[g+32>>2]=k[12178];k[g+36>>2]=0;f=k[12178]|0;if(f)k[f+36>>2]=g;k[12178]=g;f=g}k[c+8>>2]=f;f=48504;C=64;break d}else{f=Mb()|0;f=k[f>>2]|0;g=c+20|0;k[g>>2]=f;f=(f|0)==75?22:10}while(0);go(c,o,30709);k[g>>2]=0;g=p;C=70;break c}else{f=48376;C=64}while(0);if((C|0)==64)k[c+20>>2]=0;k[c>>2]=f;ho(c);f=0}while(0);if((C|0)==70)$c(k[g>>2]|0);r=D;return f|0}function qi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;do if((qc[k[47552+196>>2]&127](b)|0)==-1){a=Mb()|0;if((k[a>>2]|0)==2)a=5898;else a=io(2570,48032,b,31314)|0}else if(c&1){a=wc[k[47552+208>>2]&127](b,d)|0;if((a|0)==14){a=0;break}else if(a)break;if(!(Lb(k[d>>2]|0)|0))a=0;else a=io(1290,48488,b,31329)|0;if(qc[k[47552+16>>2]&127](k[d>>2]|0)|0)io(4106,47856,0,31331)|0}else a=0;while(0);r=e;return a|0}function ri(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+80|0;if((r|0)>=(s|0))ka();e=f;if((c|0)==2)a=4;else if((c|0)==1)a=6;else a=0;a=(wc[k[47552+28>>2]&127](b,a)|0)==0;k[d>>2]=a&1;if((!((c|0)!=0|a^1)?(wc[k[47552+52>>2]&127](b,e)|0)==0:0)?(k[e+36>>2]|0)==0:0)k[d>>2]=0;r=f;return 0}function si(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;if((r|0)>=(s|0))ka();e=f;a=c+-1|0;i[d+a>>0]=0;do if((i[b>>0]|0)!=47)if(!(wc[k[47552+40>>2]&127](d,a)|0)){k[e>>2]=31416;k[e+4>>2]=10788;gd(14,14848,e);a=io(14,47904,b,31416)|0;break}else{a=lw(d|0)|0;k[e>>2]=b;fd(c-a|0,d+a|0,48480,e)|0;a=0;break}else{k[e>>2]=b;fd(c,d,10344,e)|0;a=0}while(0);r=f;return a|0}function ti(a,b){a=a|0;b=b|0;return Ib(b|0,258)|0}function ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;a=ab()|0;if(a){k[d>>2]=a;fd(b,c,10344,d)|0}r=e;return}function vi(a,b,c){a=a|0;b=b|0;c=c|0;return eb(b|0,c|0)|0}function wi(a,b){a=a|0;b=b|0;Jb(b|0)|0;return}function xi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;kw(c|0,0,b|0)|0;a=wb()|0;k[12114]=a;a=fo(48464,0,0)|0;if((a|0)>=0){do{if((fc[k[47552+100>>2]&63](a,c,b)|0)>=0)break;d=Mb()|0}while((k[d>>2]|0)==4);if(qc[k[47552+16>>2]&127](a)|0)io(4106,47856,0,31521)|0}else{Ub(d|0)|0;b=k[d>>2]|0;i[c>>0]=b;i[c+1>>0]=b>>8;i[c+2>>0]=b>>16;i[c+3>>0]=b>>24;b=c+4|0;a=k[12114]|0;i[b>>0]=a;i[b+1>>0]=a>>8;i[b+2>>0]=a>>16;i[b+3>>0]=a>>24;b=8}r=e;return b|0}function yi(a,b){a=a|0;b=b|0;a=(b+999999|0)/1e6|0;Rb(a|0)|0;return a*1e6|0}function zi(a,b){a=a|0;b=b|0;var c=0,d=0;a=r;r=r+16|0;if((r|0)>=(s|0))ka();d=a;c=d;k[c>>2]=0;k[c+4>>2]=0;c=Bi(0,d)|0;p[b>>3]=(+((k[d>>2]|0)>>>0)+4294967296.0*+(k[d+4>>2]|0))/864.0e5;r=a;return c|0}function Ai(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function Bi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;if((r|0)>=(s|0))ka();a=c;if(!(Xb(a|0,0)|0)){e=k[a>>2]|0;e=xw(e|0,((e|0)<0)<<31>>31|0,1e3,0)|0;e=ow(e|0,L|0,1045635584,49096)|0;d=(k[a+4>>2]|0)/1e3|0;d=ow(e|0,L|0,d|0,((d|0)<0)<<31>>31|0)|0;a=b;k[a>>2]=d;k[a+4>>2]=L;a=0}else a=1;r=c;return a|0}function Ci(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:do if(!b){a=0;do{b=k[47560+(a*12|0)>>2]|0;if(b)k[47556+(a*12|0)>>2]=b;a=a+1|0}while((a|0)!=25);b=0}else{a=0;while(1){if(!(dw(b,k[47552+(a*12|0)>>2]|0)|0)){d=a;break}a=a+1|0;if(a>>>0>=25){b=12;break a}}b=47560+(d*12|0)|0;a=k[b>>2]|0;if(!a){a=k[47556+(d*12|0)>>2]|0;k[b>>2]=a}k[47556+(d*12|0)>>2]=(c|0)==0?a:c;b=0}while(0);return b|0}function Di(a,b){a=a|0;b=b|0;var c=0;a=0;while(1){if(!(dw(b,k[47552+(a*12|0)>>2]|0)|0)){c=4;break}a=a+1|0;if(a>>>0>=25){a=0;break}}if((c|0)==4)a=k[47556+(a*12|0)>>2]|0;return a|0}function Ei(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if(!b)a=-1;else{c=0;while(1){a=c+1|0;if(!(dw(b,k[47552+(c*12|0)>>2]|0)|0)){a=c;break a}if((a|0)<24)c=a;else break}}while(0);while(1){a=a+1|0;if((a|0)>=25){a=0;break}if(k[47556+(a*12|0)>>2]|0){d=6;break}}if((d|0)==6)a=k[47552+(a*12|0)>>2]|0;return a|0}function Fi(a,b){a=a|0;b=b|0;return 48504}function Gi(a,b){a=a|0;b=b|0;return 48376}function Hi(a,b){a=a|0;b=b|0;return 47472}function Ii(a){a=a|0;var b=0,c=0;b=k[a+4>>2]|0;if(b)do{c=b;b=k[b>>2]|0;$c(c)}while((b|0)!=0);b=a+0|0;c=b+40|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));k[a>>2]=14696;return 0}function Ji(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=a+24|0;j=l;if(((k[j>>2]|0)!=(d|0)?1:(k[j+4>>2]|0)!=(e|0))|(d|0)==0&(e|0)==0){f=k[a+4>>2]|0;if(!((f|0)==0|((e|0)<0|(e|0)==0&d>>>0<1020))){g=1020;h=0;do{g=ow(g|0,h|0,1020,0)|0;h=L;f=k[f>>2]|0}while(!((f|0)==0|((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0)))}}else f=k[a+32>>2]|0;i=ww(d|0,e|0,1020,0)|0;j=c;g=b;while(1){b=1020-i|0;h=(j|0)<(b|0)?j:b;pw(g|0,f+i+4|0,h|0)|0;j=j-b|0;if((j|0)<=-1)break;f=k[f>>2]|0;if(!((f|0)!=0&(j|0)>0))break;else{i=0;g=g+h|0}}e=ow(c|0,((c|0)<0)<<31>>31|0,d|0,e|0)|0;c=l;k[c>>2]=e;k[c+4>>2]=L;k[a+32>>2]=f;return 0}function Ki(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;a:do if((c|0)>0){h=a+8|0;i=a+16|0;g=a+4|0;d=h;e=k[d>>2]|0;d=k[d+4>>2]|0;while(1){a=k[i>>2]|0;d=ww(e|0,d|0,1020,0)|0;f=1020-d|0;f=(c|0)<(f|0)?c:f;if(!d){e=Yc(1024)|0;if(!e){d=3082;break a}k[e>>2]=0;if(!a){k[g>>2]=e;a=e}else{k[a>>2]=e;a=e}k[i>>2]=a}pw(a+d+4|0,b|0,f|0)|0;c=c-f|0;e=h;e=ow(k[e>>2]|0,k[e+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;d=L;a=h;k[a>>2]=e;k[a+4>>2]=d;if((c|0)<=0){d=0;break}else b=b+f|0}}else d=0;while(0);return d|0}function Li(a,b,c){a=a|0;b=b|0;c=c|0;b=k[a+4>>2]|0;if(b)do{c=b;b=k[b>>2]|0;$c(c)}while((b|0)!=0);c=a+0|0;b=c+40|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(b|0));k[a>>2]=14696;return 0}function Mi(a,b){a=a|0;b=b|0;return 0}function Ni(a,b){a=a|0;b=b|0;var c=0,d=0;d=a+8|0;c=k[d+4>>2]|0;a=b;k[a>>2]=k[d>>2];k[a+4>>2]=c;return 0}function Oi(a){a=a|0;var b=0;a=12584|0;b=a+68|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));if(k[2187]|0){k[3146]=8;k[3159]=8}k[3149]=10;k[3153]=1;return 0}function Pi(a){a=a|0;var b=0;a=12584|0;b=a+68|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Qi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=vg(48,0)|0;if(d){e=d+0|0;f=e+48|0;do{i[e>>0]=0;e=e+1|0}while((e|0)<(f|0));k[d>>2]=12584;k[d+4>>2]=a;k[d+8>>2]=b;c=(c|0)!=0;k[d+12>>2]=c&1;jo(d);if(c){k[d+16>>2]=10;c=k[3148]|0;k[3148]=c+10;k[3149]=(k[3147]|0)+10+(-10-c)}if(!(k[d+40>>2]|0)){Xi(d);d=0}}else d=0;return d|0}function Ri(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(k[a+12>>2]|0){c=k[a>>2]|0;d=a+20|0;f=c+4|0;e=(k[f>>2]|0)+(b-(k[d>>2]|0))|0;k[f>>2]=e;k[c+12>>2]=e+10-(k[c+8>>2]|0);k[d>>2]=b;k[a+24>>2]=((b*9|0)>>>0)/10|0;ko(c)}return}function Si(a){a=a|0;return k[a+36>>2]|0}function Ti(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[(k[a+44>>2]|0)+(((b>>>0)%((k[a+40>>2]|0)>>>0)|0)<<2)>>2]|0;a:do if(d){while(1){if((k[d+8>>2]|0)==(b|0))break;d=k[d+16>>2]|0;if(!d){e=6;break a}}if(!(i[d+12>>0]|0))lo(d)}else e=6;while(0);if((e|0)==6)if(!c)d=0;else d=mo(a,b,c)|0;return d|0}function Ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=k[a>>2]|0;if((c|0)==0?(k[e+16>>2]|0)>>>0<=(k[e+4>>2]|0)>>>0:0){c=e+20|0;d=k[c>>2]|0;if(!d)k[e+24>>2]=b;else{k[d+28>>2]=b;k[b+24>>2]=d}k[c>>2]=b;d=a+32|0;k[d>>2]=(k[d>>2]|0)+1;i[b+12>>0]=0}else{e=k[b+20>>2]|0;c=(k[e+44>>2]|0)+((((k[b+8>>2]|0)>>>0)%((k[e+40>>2]|0)>>>0)|0)<<2)|0;while(1){a=k[c>>2]|0;d=a+16|0;if((a|0)==(b|0))break;else c=d}k[c>>2]=k[d>>2];d=e+36|0;k[d>>2]=(k[d>>2]|0)+-1;no(b)}return}function Vi(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[a+40>>2]|0;g=a+44|0;c=(k[g>>2]|0)+(((c>>>0)%(f>>>0)|0)<<2)|0;while(1){e=k[c>>2]|0;if((e|0)==(b|0))break;else c=e+16|0}e=b+16|0;k[c>>2]=k[e>>2];k[b+8>>2]=d;c=(k[g>>2]|0)+(((d>>>0)%(f>>>0)|0)<<2)|0;k[e>>2]=k[c>>2];k[c>>2]=b;c=a+28|0;if((k[c>>2]|0)>>>0>>0)k[c>>2]=d;return}function Wi(a,b){a=a|0;b=b|0;var c=0;c=a+28|0;if((k[c>>2]|0)>>>0>=b>>>0){oo(a,b);k[c>>2]=b+-1}return}function Xi(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a>>2]|0;oo(a,0);e=b+4|0;d=(k[e>>2]|0)-(k[a+20>>2]|0)|0;k[e>>2]=d;e=b+8|0;c=(k[e>>2]|0)-(k[a+16>>2]|0)|0;k[e>>2]=c;k[b+12>>2]=d+10-c;ko(b);$c(k[a+44>>2]|0);$c(a);return}function Yi(a){a=a|0;var b=0,c=0;if(k[a+12>>2]|0){c=k[a>>2]|0;a=c+4|0;b=k[a>>2]|0;k[a>>2]=0;ko(c);k[a>>2]=b}return}function Zi(a){a=a|0;var b=0,c=0,d=0;d=r;r=r+16|0;if((r|0)>=(s|0))ka();c=d;b=a+7&-8;a=$v(b+8|0)|0;if(!a){k[c>>2]=b;gd(7,16568,c)}else{c=a;k[c>>2]=b;k[c+4>>2]=((b|0)<0)<<31>>31;a=a+8|0}r=d;return a|0}function _i(a){a=a|0;aw(a+-8|0);return}function $i(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();e=f;d=a+-8|0;c=bw(d,b+8|0)|0;if(!c){if(!a)d=0;else d=k[d>>2]|0;k[e>>2]=d;k[e+4>>2]=b;gd(7,16528,e)}else{d=c;k[d>>2]=b;k[d+4>>2]=((b|0)<0)<<31>>31;c=c+8|0}r=f;return c|0}function aj(a){a=a|0;if(!a)a=0;else a=k[a+-8>>2]|0;return a|0}function bj(a){a=a|0;return a+7&-8|0}function cj(a){a=a|0;return 0}function dj(a){a=a|0;return}function ej(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,n=0,o=0,p=0,q=0;e=k[c>>2]|0;do if((-1431655766>>>(m[e+8>>1]&31)&1|0)==0?(d=Xg(e,1)|0,(d|0)!=0):0){e=Yg(k[c>>2]|0,1)|0;if((b|0)!=1){o=Xg(k[c+4>>2]|0,1)|0;if(!o)break;b=i[o>>0]|0;if(b<<24>>24){c=0;f=o;while(1){h=f+1|0;if((b&255)>191){g=f;f=h;while(1){b=i[f>>0]|0;if((b&-64)<<24>>24==-128){n=f;f=g+2|0;g=n}else break}}else{b=i[h>>0]|0;f=h}g=c+1|0;if(!(b<<24>>24)){b=g;break}else c=g}if((c|0)>-1){j=xw(b|0,((b|0)<0)<<31>>31|0,5,0)|0;j=po(a,j,L)|0;if(!j)break;b=j+(b<<2)|0;if(i[o>>0]|0){f=o;c=0;while(1){k[j+(c<<2)>>2]=f;h=f+1|0;if((l[f>>0]|0)>191){g=f;while(1)if((i[h>>0]&-64)<<24>>24==-128){n=h;h=g+2|0;g=n}else break}i[b+c>>0]=h-f;g=c+1|0;if(!(i[h>>0]|0))break;else{f=h;c=g}}if((c|0)>-1){n=g;p=17}}}}}else{b=20360;j=20368;n=1;o=0;p=17}if((p|0)==17){c=k[(k[a+4>>2]|0)+4>>2]|0;a:do if((c&1|0)!=0&(e|0)>0){f=(n|0)>0;do{if(f)g=0;else{p=24;break a}while(1){h=l[b+g>>0]|0;if((e|0)>=(h|0)?(cw(d,k[j+(g<<2)>>2]|0,h)|0)==0:0)break;g=g+1|0;if((g|0)>=(n|0)){p=24;break a}}d=d+h|0;e=e-h|0}while((e|0)>0)}else p=24;while(0);b:do if((p|0)==24)if((c&2|0)!=0&(e|0)>0){h=(n|0)>0;do{if(h)f=0;else break b;while(1){g=l[b+f>>0]|0;if((e|0)>=(g|0)?(q=e-g|0,(cw(d+q|0,k[j+(f<<2)>>2]|0,g)|0)==0):0){e=q;break}f=f+1|0;if((f|0)>=(n|0))break b}}while((e|0)>0)}while(0);if(o)$c(j)}$g(a,d,e,1,-1)}while(0);return}function fj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=((k[(k[a+4>>2]|0)+4>>2]|0)!=0)<<31>>31;g=k[(k[(k[a+12>>2]|0)+4>>2]|0)+(((k[a+16>>2]|0)+-1|0)*20|0)+16>>2]|0;d=k[c>>2]|0;a:do if(!(-1431655766>>>((m[d+8>>1]|0)&31)&1)){if((b|0)>1){f=1;d=0;do{e=k[c+(f<<2)>>2]|0;if(-1431655766>>>((m[e+8>>1]|0)&31)&1)break a;e=((mm(k[c+(d<<2)>>2]|0,e,g)|0)^h|0)>-1;d=e?f:d;f=f+1|0}while((f|0)<(b|0));d=k[c+(d<<2)>>2]|0}dh(k[a>>2]|0,d)|0}while(0);return}function gj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=k[c>>2]|0;b=k[a+8>>2]|0;if(!(j[b+8>>1]&8192))b=qh(a,40)|0;else b=k[b+16>>2]|0;do if(b){d=(j[b+8>>1]|0)!=0;if(-1431655766>>>(m[(k[c>>2]|0)+8>>1]&31)&1){if(!d)break;i[a+24>>0]=1;break}if(!d){k[b+32>>2]=k[(k[a>>2]|0)+32>>2];dh(b,e)|0;break}d=(k[(k[a+4>>2]|0)+4>>2]|0)!=0;c=mm(b,e,k[(k[(k[a+12>>2]|0)+4>>2]|0)+(((k[a+16>>2]|0)+-1|0)*20|0)+16>>2]|0)|0;if(!(d&(c|0)<0)?!((c|0)>0&(d^1)):0){i[a+24>>0]=1;break}dh(b,e)|0}while(0);return}function hj(a){a=a|0;var b=0,c=0,d=0;b=k[a+8>>2]|0;if(!(j[b+8>>1]&8192))b=qh(a,0)|0;else b=k[b+16>>2]|0;do if(b){c=b+8|0;if(!((j[c>>1]|0)!=0?(dh(k[a>>2]|0,b)|0,(j[c>>1]&9312)!=0):0))d=7;if((d|0)==7?(k[b+24>>2]|0)==0:0)break;Vg(b)}while(0);return}function ij(a,b,c){a=a|0;b=b|0;c=c|0;b=l[10064+((m[(k[c>>2]|0)+8>>1]|0)&31)>>0]|0;if((b|0)==1)b=20320;else if((b|0)==4)b=20344;else if((b|0)==3)b=20328;else if((b|0)==2)b=20336;else b=20352;$g(a,b,-1,1,0);return}function jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;b=k[c>>2]|0;c=l[10064+((m[b+8>>1]|0)&31)>>0]|0;do if((c|0)==3){d=Xg(b,1)|0;if(d){b=i[d>>0]|0;if(!(b<<24>>24)){e=0;d=0}else{c=b;b=0;do{b=b+1|0;f=d+1|0;if((c&255)>191){e=d;d=f;while(1){c=i[d>>0]|0;if((c&-64)<<24>>24==-128){c=d;d=e+2|0;e=c}else break}}else{c=i[f>>0]|0;d=f}}while(c<<24>>24!=0);e=b;d=((b|0)<0)<<31>>31}b=k[a>>2]|0;c=b+8|0;if(!(j[c>>1]&9312)){k[b>>2]=e;k[b+4>>2]=d;j[c>>1]=4;break}else{ch(b,e,d);break}}}else if((c|0)==2|(c|0)==1|(c|0)==4){e=Yg(b,1)|0;d=k[a>>2]|0;b=((e|0)<0)<<31>>31;c=d+8|0;if(!(j[c>>1]&9312)){k[d>>2]=e;k[d+4>>2]=b;j[c>>1]=4;break}else{ch(d,e,b);break}}else{c=k[a>>2]|0;b=c+8|0;if(!(j[b>>1]&9312)){j[b>>1]=1;break}else{Ag(c);break}}while(0);return}function kj(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;d=k[c>>2]|0;e=j[d+8>>1]|0;f=c+4|0;b=j[(k[f>>2]|0)+8>>1]|0;do if(!((-1431655766>>>(b&31)|-1431655766>>>(e&31))&1)){g=Yg(d,1)|0;l=Yg(k[f>>2]|0,1)|0;c=k[c>>2]|0;if(!((b|e)&15)){b=ud(c)|0;c=0;h=ud(k[f>>2]|0)|0}else{b=Xg(c,1)|0;c=1;h=Xg(k[f>>2]|0,1)|0}a:do if((l|0)>(g|0)){b=1;d=1}else{d=1;e=g;while(1){if(!(cw(b,h,l)|0)){b=0;break a}d=d+1|0;f=(c|0)==0;do{e=e+-1|0;b=b+1|0;if(f){c=0;break}}while((i[b>>0]&-64)<<24>>24==-128);if((l|0)>(e|0)){b=1;break}}}while(0);e=k[a>>2]|0;c=b?0:d;b=b?0:((d|0)<0)<<31>>31;d=e+8|0;if(!(j[d>>1]&9312)){k[e>>2]=c;k[e+4>>2]=b;j[d>>1]=4;break}else{ch(e,c,b);break}}while(0);return}function lj(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,n=0,o=0,p=0,q=0;d=k[c+4>>2]|0;do if(!(-1431655766>>>((m[d+8>>1]|0)&31)&1)){o=(b|0)==3;if(o?(-1431655766>>>((m[(k[c+8>>2]|0)+8>>1]|0)&31)&1|0)!=0:0)break;q=j[(k[c>>2]|0)+8>>1]|0;g=_g(d)|0;h=((g|0)<0)<<31>>31;q=(q&15)==0;e=k[c>>2]|0;if(q){e=Yg(e,1)|0;f=ud(k[c>>2]|0)|0;if(!f)break;else p=e}else{f=Xg(e,1)|0;if(!f)break;if((g|0)<0?(l=i[f>>0]|0,l<<24>>24!=0):0){e=0;d=f;do{n=d+1|0;if((l&255)>191){b=d;d=n;while(1){l=i[d>>0]|0;if((l&-64)<<24>>24==-128){p=d;d=b+2|0;b=p}else break}}else{l=i[n>>0]|0;d=n}e=e+1|0}while(l<<24>>24!=0);p=e}else p=0}if(o){n=_g(k[c+8>>2]|0)|0;b=((n|0)<0)<<31>>31;o=(n|0)<0;d=iw(0,0,n|0,b|0)|0;d=o?d:n;b=o?L:b;n=n>>>31}else{b=k[(k[(k[a>>2]|0)+32>>2]|0)+88>>2]|0;d=b;b=((b|0)<0)<<31>>31;n=0}do if((g|0)<0){g=ow(p|0,((p|0)<0)<<31>>31|0,g|0,h|0)|0;h=L;if((h|0)<0){d=ow(d|0,b|0,g|0,h|0)|0;b=L;o=(b|0)<0;g=0;h=0;d=o?0:d;b=o?0:b}}else if((g|0)>0){g=ow(g|0,h|0,-1,-1)|0;h=L;break}else{o=((b|0)>0|(b|0)==0&d>>>0>0)<<31>>31;d=ow(o|0,((o|0)<0)<<31>>31|0,d|0,b|0)|0;b=L;break}while(0);if(!n){l=g;n=h}else{l=iw(g|0,h|0,d|0,b|0)|0;n=L;o=(n|0)<0;l=o?0:l;n=o?0:n;d=o?g:d;b=o?h:b}if(q){o=ow(d|0,b|0,l|0,n|0)|0;h=L;e=((p|0)<0)<<31>>31;if((h|0)>(e|0)|(h|0)==(e|0)&o>>>0>p>>>0){d=iw(p|0,e|0,l|0,n|0)|0;b=L;p=(b|0)<0;d=p?0:d;b=p?0:b}Gd(a,f+l|0,d,b,-1);break}e=i[f>>0]|0;if(((l|0)!=0|(n|0)!=0)&e<<24>>24!=0)do{h=f+1|0;if((e&255)>191){g=f;f=h;while(1){e=i[f>>0]|0;if((e&-64)<<24>>24==-128){p=f;f=g+2|0;g=p}else break}}else{e=i[h>>0]|0;f=h}l=ow(l|0,n|0,-1,-1)|0;n=L}while(((l|0)!=0|(n|0)!=0)&e<<24>>24!=0);if(e<<24>>24!=0&((d|0)!=0|(b|0)!=0)){l=b;b=f;do{g=b+1|0;if((e&255)>191)while(1){e=i[g>>0]|0;if((e&-64)<<24>>24==-128){p=g;g=b+2|0;b=p}else{b=g;break}}else{e=i[g>>0]|0;b=g}d=ow(d|0,l|0,-1,-1)|0;l=L}while(e<<24>>24!=0&((d|0)!=0|(l|0)!=0))}else b=f;p=b-f|0;Od(a,f,p,((p|0)<0)<<31>>31,-1,1)}while(0);return}function mj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=r;r=r+48|0;if((r|0)>=(s|0))ka();f=h;g=h+32|0;e=h+4|0;if((b|0)>0?(d=Xg(k[c>>2]|0,1)|0,(d|0)!=0):0){k[g>>2]=b+-1;k[g+4>>2]=0;k[g+8>>2]=c+4;k[e+0>>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]=1e9;i[e+24>>0]=1;i[e+25>>0]=0;k[e>>2]=k[(k[a>>2]|0)+32>>2];k[f>>2]=g;Jn(e,2,d,f);d=k[e+12>>2]|0;$g(a,yg(e)|0,d,1,75)}r=h;return}function nj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();b=e;c=Xg(k[c>>2]|0,1)|0;k[b>>2]=c;do if((c|0)!=0?(i[c>>0]|0)!=0:0){d=Rn(b)|0;b=k[a>>2]|0;a=((d|0)<0)<<31>>31;c=b+8|0;if(!(j[c>>1]&9312)){k[b>>2]=d;k[b+4>>2]=a;j[c>>1]=4;break}else{ch(b,d,a);break}}while(0);r=e;return}function oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=Yc(b<<2|1)|0;if(!g)Wd(a);else{if((b|0)>0){f=0;d=g;do{e=_g(k[c+(f<<2)>>2]|0)|0;h=L;e=h>>>0>0|(h|0)==0&e>>>0>1114111?65533:e&2097151;do if(e>>>0>=128){if(e>>>0<2048){i[d>>0]=e>>>6&31|192;i[d+1>>0]=e&63|128;d=d+2|0;break}if(e>>>0<65536){i[d>>0]=e>>>12&15|224;i[d+1>>0]=e>>>6&63|128;i[d+2>>0]=e&63|128;d=d+3|0;break}else{i[d>>0]=e>>>18|240;i[d+1>>0]=e>>>12&63|128;i[d+2>>0]=e>>>6&63|128;i[d+3>>0]=e&63|128;d=d+4|0;break}}else{i[d>>0]=e;d=d+1|0}while(0);f=f+1|0}while((f|0)!=(b|0))}else d=g;d=d-g|0;Od(a,g,d,((d|0)<0)<<31>>31,1,1)}return}function pj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0;b=k[c>>2]|0;c=l[10064+((m[b+8>>1]|0)&31)>>0]|0;a:do if((c|0)==5){c=k[a>>2]|0;b=c+8|0;if(!(j[b>>1]&9312)){j[b>>1]=1;break}else{Ag(c);break}}else if((c|0)==1){b=_g(b)|0;e=L;do if((e|0)<0)if((b|0)==0&(e|0)==-2147483648){k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,20248,-1,1,-1)|0;break a}else{b=iw(0,0,b|0,e|0)|0;f=L;break}else f=e;while(0);c=k[a>>2]|0;e=c+8|0;if(!(j[e>>1]&9312)){k[c>>2]=b;k[c+4>>2]=f;j[e>>1]=4;break}else{ch(c,b,f);break}}else{d=+Zg(b);if(d<0.0)d=-d;bh(k[a>>2]|0,d)}while(0);return}function qj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;if((r|0)>=(s|0))ka();h=l+8|0;j=l;if((b|0)==2){b=k[c+4>>2]|0;if(!(-1431655766>>>(m[b+8>>1]&31)&1)){g=_g(b)|0;g=(g|0)>30?30:g;g=(g|0)<0?0:g;f=4}}else{g=0;f=4}a:do if((f|0)==4?(e=k[c>>2]|0,(-1431655766>>>(m[e+8>>1]&31)&1|0)==0):0){d=+Zg(e);p[j>>3]=d;b=(g|0)==0;do if(b&d>=0.0&d<9223372036854775808.0){d=d+.5;d=+(~~d>>>0>>>0)+4294967296.0*+((+W(d)>=1.0?(d>0.0?~~+ia(+V(d/4294967296.0),4294967295.0)>>>0:~~+ga((d-+(~~d>>>0))/4294967296.0)>>>0):0)|0);p[j>>3]=d}else{if(b&d<0.0&d>-9223372036854775808.0){d=.5-d;d=-(+(~~d>>>0>>>0)+4294967296.0*+((+W(d)>=1.0?(d>0.0?~~+ia(+V(d/4294967296.0),4294967295.0)>>>0:~~+ga((d-+(~~d>>>0))/4294967296.0)>>>0):0)|0));p[j>>3]=d;break}k[h>>2]=g;b=h+4|0;p[t>>3]=d;k[b>>2]=k[t>>2];k[b+4>>2]=k[t+4>>2];b=dd(20312,h)|0;if(!b){Wd(a);break a}else e=b;while(1)if(!(i[e>>0]|0))break;else e=e+1|0;Yl(b,j,e-b&1073741823,1)|0;$c(b);d=+p[j>>3]}while(0);bh(k[a>>2]|0,d)}while(0);r=l;return}function rj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Xg(k[c>>2]|0,1)|0;b=Yg(k[c>>2]|0,1)|0;if((d|0)!=0?(e=ow(b|0,((b|0)<0)<<31>>31|0,1,0)|0,e=po(a,e,L)|0,(e|0)!=0):0){if((b|0)>0){c=0;do{f=l[d+c>>0]|0;i[e+c>>0]=((l[10368+f>>0]|0|223)^32)&f;c=c+1|0}while((c|0)!=(b|0))}$g(a,e,b,1,1)}return}function sj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Xg(k[c>>2]|0,1)|0;b=Yg(k[c>>2]|0,1)|0;if((d|0)!=0?(e=ow(b|0,((b|0)<0)<<31>>31|0,1,0)|0,e=po(a,e,L)|0,(e|0)!=0):0){if((b|0)>0){c=0;do{i[e+c>>0]=i[9328+(l[d+c>>0]|0)>>0]|0;c=c+1|0}while((c|0)!=(b|0))}$g(a,e,b,1,1)}return}function tj(a,b,c){a=a|0;b=b|0;c=c|0;$g(a,8632,-1,1,0);return}function uj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;b=ud(k[c>>2]|0)|0;f=Yg(k[c>>2]|0,1)|0;g=nw(f|0,((f|0)<0)<<31>>31|0,1)|0;g=po(a,g|1,L)|0;if(g){if((f|0)>0){d=f<<1;e=0;c=g;while(1){h=l[b>>0]|0;i[c>>0]=i[20288+(h>>>4)>>0]|0;i[c+1>>0]=i[20288+(h&15)>>0]|0;e=e+1|0;if((e|0)==(f|0))break;else{b=b+1|0;c=c+2|0}}c=g+d|0}else c=g;i[c>>0]=0;$g(a,g,f<<1,1,1)}return}function vj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();b=f;hd(8,b);d=b;c=k[d>>2]|0;d=k[d+4>>2]|0;if((d|0)<0){e=iw(0,0,c|0,d&2147483647|0)|0;d=L;k[b>>2]=e;k[b+4>>2]=d}else e=c;c=k[a>>2]|0;b=c+8|0;if(!(j[b>>1]&9312)){k[c>>2]=e;k[c+4>>2]=d;j[b>>1]=4}else ch(c,e,d);r=f;return}function wj(a,b,c){a=a|0;b=b|0;c=c|0;c=_g(k[c>>2]|0)|0;c=(c|0)<1?1:c;b=po(a,c,((c|0)<0)<<31>>31)|0;if(b){hd(c,b);$g(a,b,c,0,1)}return}function xj(a,b,c){a=a|0;b=b|0;c=c|0;if(mm(k[c>>2]|0,k[c+4>>2]|0,k[(k[(k[a+12>>2]|0)+4>>2]|0)+(((k[a+16>>2]|0)+-1|0)*20|0)+16>>2]|0)|0)dh(k[a>>2]|0,k[c>>2]|0)|0;return}function yj(a,b,c){a=a|0;b=b|0;c=c|0;$g(a,10768,-1,1,0);return}function zj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;b=r;r=r+16|0;if((r|0)>=(s|0))ka();a=b;d=_g(k[c>>2]|0)|0;c=Xg(k[c+4>>2]|0,1)|0;k[a>>2]=c;gd(d,10344,a);r=b;return}function Aj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;b=Xg(k[c>>2]|0,1)|0;do if(b){d=Jc(b)|0;c=k[a>>2]|0;b=((d|0)<0)<<31>>31;a=c+8|0;if(!(j[a>>1]&9312)){k[c>>2]=d;k[c+4>>2]=b;j[a>>1]=4;break}else{ch(c,d,b);break}}while(0);return}function Bj(a,b,c){a=a|0;b=b|0;c=c|0;b=_g(k[c>>2]|0)|0;if(b>>>0<4)b=k[8648+(b<<2)>>2]|0;else b=0;$g(a,b,-1,1,0);return}function Cj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,g=0,h=0,j=0,n=0,o=0;o=r;r=r+80|0;if((r|0)>=(s|0))ka();b=o+8|0;d=o;h=o+16|0;g=k[c>>2]|0;f=l[10064+(m[g+8>>1]&31)>>0]|0;if((f|0)==1)dh(k[a>>2]|0,g)|0;else if((f|0)==4){g=ud(g)|0;b=Yg(k[c>>2]|0,1)|0;d=nw(b|0,((b|0)<0)<<31>>31|0,1)|0;d=ow(d|0,L|0,4,0)|0;d=po(a,d,L)|0;if(d){if((b|0)>0){f=0;do{c=g+f|0;h=f<<1;i[d+(h+2)>>0]=i[20288+((l[c>>0]|0)>>>4)>>0]|0;i[d+(h+3)>>0]=i[20288+(l[c>>0]&15)>>0]|0;f=f+1|0}while((f|0)!=(b|0))}b=b<<1;i[d+(b+2)>>0]=39;i[d+(b+3)>>0]=0;i[d>>0]=88;i[d+1>>0]=39;$g(a,d,-1,1,-1);$c(d)}}else if((f|0)==3){n=Xg(g,1)|0;if(n){b=0;d=0;f=0;while(1){g=i[n+f>>0]|0;if(g<<24>>24==39){g=ow(b|0,d|0,1,0)|0;d=L}else if(!(g<<24>>24)){g=d;break}else g=b;b=g;f=f+1|0}j=ow(b|0,g|0,3,0)|0;j=ow(j|0,L|0,f|0,((f|0)<0)<<31>>31|0)|0;j=po(a,j,L)|0;if(j){i[j>>0]=39;d=i[n>>0]|0;b=j+1|0;if(!(d<<24>>24))f=2;else{h=n;f=2;g=0;c=1;do{i[b>>0]=d;if((i[h>>0]|0)==39){i[j+f>>0]=39;c=c+2|0}else c=f;g=g+1|0;h=n+g|0;d=i[h>>0]|0;f=c+1|0;b=j+c|0}while(d<<24>>24!=0)}i[b>>0]=39;i[j+f>>0]=0;$g(a,j,f,1,1)}}}else if((f|0)==2){e=+Zg(g);p[t>>3]=e;k[b>>2]=k[t>>2];k[b+4>>2]=k[t+4>>2];fd(50,h,20272,b)|0;Yl(h,d,20,1)|0;if(e!=+p[d>>3]){p[t>>3]=e;k[b>>2]=k[t>>2];k[b+4>>2]=k[t+4>>2];fd(50,h,20280,b)|0}$g(a,h,-1,1,-1)}else $g(a,20304,4,1,0);r=o;return}function Dj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=k[a>>2]|0;d=(k[a+32>>2]|0)+32|0;b=k[d>>2]|0;d=k[d+4>>2]|0;c=a+8|0;if(!(j[c>>1]&9312)){k[a>>2]=b;k[a+4>>2]=d;j[c>>1]=4}else ch(a,b,d);return}function Ej(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=k[a>>2]|0;c=k[(k[a+32>>2]|0)+80>>2]|0;b=((c|0)<0)<<31>>31;d=a+8|0;if(!(j[d>>1]&9312)){k[a>>2]=c;k[a+4>>2]=b;j[d>>1]=4}else ch(a,c,b);return}function Fj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=k[a>>2]|0;c=k[(k[a+32>>2]|0)+84>>2]|0;b=((c|0)<0)<<31>>31;d=a+8|0;if(!(j[d>>1]&9312)){k[a>>2]=c;k[a+4>>2]=b;j[d>>1]=4}else ch(a,c,b);return}function Gj(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,v=0,w=0;t=Xg(k[c>>2]|0,1)|0;a:do if((t|0)!=0?(u=Yg(k[c>>2]|0,1)|0,e=c+4|0,s=Xg(k[e>>2]|0,1)|0,(s|0)!=0):0){if(!(i[s>>0]|0)){dh(k[a>>2]|0,k[c>>2]|0)|0;break}q=Yg(k[e>>2]|0,1)|0;e=c+8|0;p=Xg(k[e>>2]|0,1)|0;if((p|0)!=0?(r=Yg(k[e>>2]|0,1)|0,f=u+1|0,g=((f|0)<0)<<31>>31,d=po(a,f,g)|0,(d|0)!=0):0){l=u-q|0;b:do if((l|0)>=0){m=r-q|0;n=((m|0)<0)<<31>>31;o=q+-1|0;c=0;j=0;while(1){e=t+c|0;b=i[e>>0]|0;if(b<<24>>24==(i[s>>0]|0)?(cw(e,s,q)|0)==0:0){b=k[a>>2]|0;h=k[b+32>>2]|0;f=ow(f|0,g|0,m|0,n|0)|0;g=L;e=ow(f|0,g|0,-1,-1)|0;w=L;h=k[h+88>>2]|0;v=((h|0)<0)<<31>>31;if((w|0)>(v|0)|(w|0)==(v|0)&e>>>0>h>>>0){e=13;break}h=ad(d,f)|0;if(!h){e=15;break}pw(h+j|0,p|0,r|0)|0;e=o+c|0;b=j+r|0;d=h}else{i[d+j>>0]=b;e=c;b=j+1|0}c=e+1|0;if((e|0)<(l|0))j=b;else break b}if((e|0)==13){k[a+20>>2]=18;i[a+25>>0]=1;ah(b,10096,-1,1,0)|0;$c(d);break a}else if((e|0)==15){Wd(a);$c(d);break a}}else{c=0;b=0}while(0);m=u-c|0;pw(d+b|0,t+c|0,m|0)|0;m=b+m|0;i[d+m>>0]=0;$g(a,d,m,1,1)}}while(0);return}function Hj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[(k[a>>2]|0)+32>>2]|0;b=_g(k[c>>2]|0)|0;e=L;c=k[d+88>>2]|0;d=((c|0)<0)<<31>>31;if((e|0)>(d|0)|(e|0)==(d|0)&b>>>0>c>>>0){k[a+20>>2]=18;i[a+25>>0]=1;ah(k[a>>2]|0,10096,-1,1,0)|0}else eh(k[a>>2]|0,b);return}function Ij(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+16|0;if((r|0)>=(s|0))ka();f=g;d=Xg(k[c>>2]|0,1)|0;e=k[(k[a>>2]|0)+32>>2]|0;k[f>>2]=0;if((b|0)==2)b=Xg(k[c+4>>2]|0,1)|0;else b=0;if((d|0)!=0?(Ye(e,d,b,f)|0)!=0:0){b=k[f>>2]|0;k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,b,-1,1,-1)|0;$c(k[f>>2]|0)}r=g;return}function Jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0,l=0,m=0,n=0;b=k[a+8>>2]|0;if(!(j[b+8>>1]&8192))d=qh(a,32)|0;else d=k[b+16>>2]|0;a=Me(k[c>>2]|0)|0;do if((d|0)!=0&(a|0)!=5){b=d+16|0;e=b;e=ow(k[e>>2]|0,k[e+4>>2]|0,1,0)|0;k[b>>2]=e;k[b+4>>2]=L;b=k[c>>2]|0;if((a|0)!=1){h=+Zg(b);p[d>>3]=h+ +p[d>>3];i[d+25>>0]=1;break}e=_g(b)|0;f=L;p[d>>3]=+p[d>>3]+(+(e>>>0)+4294967296.0*+(f|0));g=d+24|0;if(!((i[g>>0]|i[d+25>>0])<<24>>24)){d=d+8|0;a=d;c=k[a>>2]|0;a=k[a+4>>2]|0;if((f|0)>-1|(f|0)==-1&e>>>0>4294967295){b=iw(-1,2147483647,c|0,a|0)|0;l=L;if(((a|0)>0|(a|0)==0&c>>>0>0)&((l|0)<(f|0)|(l|0)==(f|0)&b>>>0>>0))b=12;else b=11}else if((a|0)<0?(l=iw(1,-2147483648,c|0,a|0)|0,n=L,b=ow(e|0,f|0,1,0)|0,m=L,(n|0)>(m|0)|(n|0)==(m|0)&l>>>0>b>>>0):0)b=12;else b=11;if((b|0)==11){a=ow(c|0,a|0,e|0,f|0)|0;b=d;k[b>>2]=a;k[b+4>>2]=L;break}else if((b|0)==12){i[g>>0]=1;break}}}while(0);return}function Kj(a){a=a|0;var b=0,c=0,d=0;b=k[a+8>>2]|0;if(!(j[b+8>>1]&8192))b=qh(a,0)|0;else b=k[b+16>>2]|0;do if((b|0)!=0?(c=b+16|0,d=k[c+4>>2]|0,(d|0)>0|(d|0)==0&(k[c>>2]|0)>>>0>0):0){if(i[b+24>>0]|0){k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,20248,-1,1,-1)|0;break}if(i[b+25>>0]|0){bh(k[a>>2]|0,+p[b>>3]);break}d=b+8|0;c=k[d>>2]|0;d=k[d+4>>2]|0;b=k[a>>2]|0;a=b+8|0;if(!(j[a>>1]&9312)){k[b>>2]=c;k[b+4>>2]=d;j[a>>1]=4;break}else{ch(b,c,d);break}}while(0);return}function Lj(a){a=a|0;var b=0,c=0.0;b=k[a+8>>2]|0;if(!(j[b+8>>1]&8192))b=qh(a,0)|0;else b=k[b+16>>2]|0;if(!b)c=0.0;else c=+p[b>>3];bh(k[a>>2]|0,c);return}function Mj(a){a=a|0;var b=0,c=0,d=0;b=k[a+8>>2]|0;if(!(j[b+8>>1]&8192))b=qh(a,0)|0;else b=k[b+16>>2]|0;if((b|0)!=0?(d=b+16|0,c=k[d>>2]|0,d=k[d+4>>2]|0,(d|0)>0|(d|0)==0&c>>>0>0):0)bh(k[a>>2]|0,+p[b>>3]/(+(c>>>0)+4294967296.0*+(d|0)));return}function Nj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a+8>>2]|0;if(!(j[d+8>>1]&8192))d=qh(a,8)|0;else d=k[d+16>>2]|0;if(!b){if(d)e=7}else if((d|0)!=0?(1431655765>>>((m[(k[c>>2]|0)+8>>1]|0)&31)&1|0)!=0:0)e=7;if((e|0)==7){a=d;a=ow(k[a>>2]|0,k[a+4>>2]|0,1,0)|0;k[d>>2]=a;k[d+4>>2]=L}return}function Oj(a){a=a|0;var b=0,c=0,d=0;b=k[a+8>>2]|0;if(!(j[b+8>>1]&8192))b=qh(a,0)|0;else b=k[b+16>>2]|0;if(!b){c=0;d=0}else{d=b;c=k[d>>2]|0;d=k[d+4>>2]|0}b=k[a>>2]|0;a=b+8|0;if(!(j[a>>1]&9312)){k[b>>2]=c;k[b+4>>2]=d;j[a>>1]=4}else ch(b,c,d);return}function Pj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!(-1431655766>>>(m[(k[c>>2]|0)+8>>1]&31)&1)){d=k[a+8>>2]|0;if(!(j[d+8>>1]&8192))e=qh(a,28)|0;else e=k[d+16>>2]|0;if(e){a=k[(k[a>>2]|0)+32>>2]|0;f=e+24|0;d=(i[f>>0]|0)==0;i[f>>0]=2;k[e+20>>2]=k[a+88>>2];do if(!d){if((b|0)==2){b=c+4|0;d=Xg(k[b>>2]|0,1)|0;b=Yg(k[b>>2]|0,1)|0;if(!b)break}else{b=1;d=20240}Xk(e,d,b)}while(0);d=Xg(k[c>>2]|0,1)|0;b=Yg(k[c>>2]|0,1)|0;if(d)Xk(e,d,b)}}return}function Qj(a){a=a|0;var b=0,c=0;b=k[a+8>>2]|0;if(!(j[b+8>>1]&8192))b=qh(a,0)|0;else b=k[b+16>>2]|0;do if(b){c=i[b+25>>0]|0;if(c<<24>>24==2){k[a+20>>2]=18;i[a+25>>0]=1;ah(k[a>>2]|0,10096,-1,1,0)|0;break}else if(c<<24>>24==1){Wd(a);break}else{$g(a,yg(b)|0,-1,1,1);break}}while(0);return}function Rj(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;g=r;r=r+16|0;if((r|0)>=(s|0))ka();e=g;h=k[(k[a>>2]|0)+32>>2]|0;d=Xg(k[c>>2]|0,1)|0;f=Xg(k[c+4>>2]|0,1)|0;l=Yg(k[c>>2]|0,1)|0;a:do if((l|0)<=(k[h+120>>2]|0)){do if((b|0)==3){c=Xg(k[c+8>>2]|0,1)|0;k[e>>2]=c;if(!c)break a;if((Sn(c,-1)|0)==1){c=Rn(e)|0;break}else{k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,20192,-1,1,-1)|0;break a}}else c=0;while(0);if((f|0)!=0&(d|0)!=0){b=Lh(d,f,k[(k[a+4>>2]|0)+4>>2]|0,c)|0;d=k[a>>2]|0;e=((b|0)<0)<<31>>31;c=d+8|0;if(!(j[c>>1]&9312)){k[d>>2]=b;k[d+4>>2]=e;j[c>>1]=4;break}else{ch(d,b,e);break}}}else{k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,20152,-1,1,-1)|0}while(0);r=g;return}function Sj(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;n=r;r=r+32|0;if((r|0)>=(s|0))ka();m=n;g=n+16|0;l=Xg(k[c>>2]|0,1)|0;h=Xg(k[c+4>>2]|0,1)|0;j=k[(k[a>>2]|0)+32>>2]|0;a:do if((l|0)!=0?(i[l>>0]|0)!=0:0){b=0;c=l;b:while(1){e=b;d=c;while(1){d=d+e|0;f=Hn(d,g)|0;e=k[g>>2]|0;if((e|0)==151)e=f;else if((e|0)==22|(e|0)==125)break b;else{c=d;b=f;break}}if(!(i[c>>0]|0))break a}k[m>>2]=c-l;k[m+4>>2]=l;k[m+8>>2]=h;k[m+12>>2]=c+b;$g(a,zh(j,19464,m)|0,-1,1,75)}while(0);r=n;return}function Tj(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;p=r;r=r+32|0;if((r|0)>=(s|0))ka();o=p;j=p+16|0;n=Xg(k[c>>2]|0,1)|0;l=Xg(k[c+4>>2]|0,1)|0;m=k[(k[a>>2]|0)+32>>2]|0;a:do if((n|0)!=0?(i[n>>0]|0)!=0:0){h=3;b=0;c=n;while(1){e=b;d=c;do{d=d+e|0;e=Hn(d,j)|0;f=k[j>>2]|0}while((f|0)==151);g=e;e=(f|0)==122|(f|0)==107?0:h+1|0;if((e|0)==2)if((f|0)==5|(f|0)==46|(f|0)==137)break;else c=2;else c=e;if(!(i[d>>0]|0))break a;else{h=c;b=g;c=d}}k[o>>2]=c-n;k[o+4>>2]=n;k[o+8>>2]=l;k[o+12>>2]=c+b;$g(a,zh(m,19464,o)|0,-1,1,75)}while(0);r=p;return}function Uj(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;p=r;r=r+32|0;if((r|0)>=(s|0))ka();o=p;m=p+16|0;n=k[(k[a>>2]|0)+32>>2]|0;d=Xg(k[c>>2]|0,1)|0;l=Xg(k[c+4>>2]|0,1)|0;j=Xg(k[c+8>>2]|0,1)|0;if(!((d|0)==0|(l|0)==0)){a:do if(!(i[d>>0]|0))b=0;else{e=d;b=0;do{c=Hn(e,m)|0;if((k[m>>2]|0)==105){g=e;while(1){e=g+c|0;f=Hn(e,m)|0;if((k[m>>2]|0)==151){c=f;g=e}else break}if(!e)break a;h=ow(f|0,((f|0)<0)<<31>>31|0,1,0)|0;h=rh(n,h,L)|0;if(!h)break a;pw(h|0,e|0,f|0)|0;i[h+f>>0]=0;qo(h);if(!(id(l,h)|0)){k[o>>2]=(b|0)!=0?b:10360;k[o+4>>2]=e-d;k[o+8>>2]=d;k[o+12>>2]=j;q=zh(n,19440,o)|0;rg(n,b);d=g+(f+c)|0;b=q}rg(n,h);c=f}e=e+c|0}while((i[e>>0]|0)!=0)}while(0);k[o>>2]=(b|0)!=0?b:10360;k[o+4>>2]=d;$g(a,zh(n,19456,o)|0,-1,1,75);rg(n,b)}r=p;return}function Vj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+48|0;if((r|0)>=(s|0))ka();d=e;if(!(ro(a,b,c,d)|0)){so(d);b=d;bh(k[a>>2]|0,(+((k[b>>2]|0)>>>0)+4294967296.0*+(k[b+4>>2]|0))/864.0e5)}r=e;return}function Wj(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+160|0;if((r|0)>=(s|0))ka();d=g+48|0;e=g;f=g+60|0;if(!(ro(a,b,c,e)|0)){to(e);c=k[e+12>>2]|0;b=k[e+16>>2]|0;k[d>>2]=k[e+8>>2];k[d+4>>2]=c;k[d+8>>2]=b;fd(100,f,20136,d)|0;$g(a,f,-1,1,-1)}r=g;return}function Xj(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+160|0;if((r|0)>=(s|0))ka();d=g+48|0;e=g;f=g+60|0;if(!(ro(a,b,c,e)|0)){uo(e);c=k[e+24>>2]|0;b=~~+p[e+32>>3];k[d>>2]=k[e+20>>2];k[d+4>>2]=c;k[d+8>>2]=b;fd(100,f,20120,d)|0;$g(a,f,-1,1,-1)}r=g;return}function Yj(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;g=r;r=r+176|0;if((r|0)>=(s|0))ka();d=g+48|0;e=g;f=g+72|0;if(!(ro(a,b,c,e)|0)){to(e);uo(e);j=k[e+12>>2]|0;i=k[e+16>>2]|0;h=k[e+20>>2]|0;c=k[e+24>>2]|0;b=~~+p[e+32>>3];k[d>>2]=k[e+8>>2];k[d+4>>2]=j;k[d+8>>2]=i;k[d+12>>2]=h;k[d+16>>2]=c;k[d+20>>2]=b;fd(100,f,20088,d)|0;$g(a,f,-1,1,-1)}r=g;return}function Zj(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,q=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0;C=r;r=r+208|0;if((r|0)>=(s|0))ka();y=C+96|0;z=C+48|0;B=C+104|0;A=C;a:do if(((b|0)!=0?(x=Xg(k[c>>2]|0,1)|0,(x|0)!=0):0)?(ro(a,b+-1|0,c+4|0,z)|0)==0:0){g=k[a>>2]|0;f=k[g+32>>2]|0;c=1;b=0;e=0;b:while(1){d=i[x+e>>0]|0;c:do if(d<<24>>24==37){d=e+1|0;switch(i[x+d>>0]|0){case 87:case 83:case 77:case 109:case 72:case 100:{c=ow(c|0,b|0,1,0)|0;b=L;break c}case 102:{c=ow(c|0,b|0,8,0)|0;b=L;break c}case 106:{c=ow(c|0,b|0,3,0)|0;b=L;break c}case 89:{c=ow(c|0,b|0,8,0)|0;b=L;break c}case 74:case 115:{c=ow(c|0,b|0,50,0)|0;b=L;break c}case 37:case 119:break c;default:break a}}else if(!(d<<24>>24))break b;else d=e;while(0);c=ow(c|0,b|0,1,0)|0;b=L;e=d+1|0}if(!(b>>>0<0|(b|0)==0&c>>>0<100)){w=k[f+88>>2]|0;v=((w|0)<0)<<31>>31;if(b>>>0>v>>>0|(b|0)==(v|0)&c>>>0>w>>>0){k[a+20>>2]=18;i[a+25>>0]=1;ah(g,10096,-1,1,0)|0;break}b=jw(0,c|0,32)|0;b=rh(f,b,L)|0;if(!b){Wd(a);break}else w=b}else w=B;so(z);to(z);uo(z);h=z+16|0;j=z+32|0;l=z+20|0;m=A+42|0;n=A+12|0;o=A+16|0;q=z+12|0;u=z+24|0;v=z+8|0;f=0;b=0;d:while(1){g=i[x+f>>0]|0;e:do if(g<<24>>24==37){f=f+1|0;c=x+f|0;do switch(i[c>>0]|0){case 106:case 87:{g=A+0|0;e=z+0|0;d=g+48|0;do{k[g>>2]=k[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(d|0));i[m>>0]=0;k[n>>2]=1;k[o>>2]=1;so(A);g=z;d=A;D=k[d>>2]|0;d=k[d+4>>2]|0;g=ow(k[g>>2]|0,k[g+4>>2]|0,432e5,0)|0;e=L;d=vw(iw(g|0,e|0,D|0,d|0)|0,L|0,864e5,0)|0;if((i[c>>0]|0)==87){c=vw(g|0,e|0,864e5,0)|0;c=ww(c|0,L|0,7,0)|0;k[y>>2]=(d+7-c|0)/7|0;fd(3,w+b|0,19888,y)|0;b=b+2|0;break e}else{k[y>>2]=d+1;fd(4,w+b|0,19904,y)|0;b=b+3|0;break e}}case 102:{E=+p[j>>3];e=w+b|0;p[t>>3]=E>59.999?59.999:E;k[y>>2]=k[t>>2];k[y+4>>2]=k[t+4>>2];fd(7,e,19896,y)|0;if(!e)g=0;else{g=e;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;g=g-e&1073741823}b=g+b|0;break e}case 100:{k[y>>2]=k[h>>2];fd(3,w+b|0,19888,y)|0;b=b+2|0;break e}case 83:{k[y>>2]=~~+p[j>>3];fd(3,w+b|0,19888,y)|0;b=b+2|0;break e}case 119:{c=z;c=ow(k[c>>2]|0,k[c+4>>2]|0,1296e5,0)|0;c=vw(c|0,L|0,864e5,0)|0;c=ww(c|0,L|0,7,0)|0;i[w+b>>0]=c+48;b=b+1|0;break e}case 89:{e=w+b|0;k[y>>2]=k[v>>2];fd(5,e,19928,y)|0;if(!e)g=0;else{g=e;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;g=g-e&1073741823}b=g+b|0;break e}case 72:{k[y>>2]=k[l>>2];fd(3,w+b|0,19888,y)|0;b=b+2|0;break e}case 109:{k[y>>2]=k[q>>2];fd(3,w+b|0,19888,y)|0;b=b+2|0;break e}case 77:{k[y>>2]=k[u>>2];fd(3,w+b|0,19888,y)|0;b=b+2|0;break e}case 74:{e=w+b|0;c=z;p[t>>3]=(+((k[c>>2]|0)>>>0)+4294967296.0*+(k[c+4>>2]|0))/864.0e5;k[y>>2]=k[t>>2];k[y+4>>2]=k[t+4>>2];fd(20,e,19912,y)|0;if(!e)g=0;else{g=e;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;g=g-e&1073741823}b=g+b|0;break e}case 115:{e=w+b|0;d=z;d=vw(k[d>>2]|0,k[d+4>>2]|0,1e3,0)|0;d=ow(d|0,L|0,-413362496,-50)|0;c=y;k[c>>2]=d;k[c+4>>2]=L;fd(30,e,19920,y)|0;if(!e)g=0;else{g=e;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;g=g-e&1073741823}b=g+b|0;break e}default:{i[w+b>>0]=37;b=b+1|0;break e}}while(0)}else if(!(g<<24>>24))break d;else{i[w+b>>0]=g;b=b+1|0}while(0);f=f+1|0}i[w+b>>0]=0;$g(a,w,-1,1,(w|0)==(B|0)?-1:75)}while(0);r=C;return}function _j(a,b,c){a=a|0;b=b|0;c=c|0;Xj(a,0,0);return}function $j(a,b,c){a=a|0;b=b|0;c=c|0;Yj(a,0,0);return}function ak(a,b,c){a=a|0;b=b|0;c=c|0;Wj(a,0,0);return}function bk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=_g(k[c>>2]|0)|0;g=f+1&-2;d=_g(k[c+4>>2]|0)|0;e=(g<<3)+56|0;c=k[(k[a>>2]|0)+32>>2]|0;b=rh(c,e,((e|0)<0)<<31>>31)|0;if(!b)Wd(a);else{kw(b|0,0,e|0)|0;k[b+52>>2]=c;k[b>>2]=0;k[b+8>>2]=f;k[b+12>>2]=d;c=b+56|0;k[b+24>>2]=c;k[b+20>>2]=c+(g<<2);$g(a,b,56,0,20)}return}function ck(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=ud(k[c>>2]|0)|0;e=_g(k[c+4>>2]|0)|0;if(!(k[f>>2]|0)){a=f+8|0;if((k[a>>2]|0)>0){b=k[f+20>>2]|0;c=0;do{k[b+(c<<2)>>2]=1;c=c+1|0}while((c|0)<(k[a>>2]|0))}}else{if((e|0)>0){a=k[f+20>>2]|0;c=0;do{b=a+(c<<2)|0;k[b>>2]=(k[b>>2]|0)+1;c=c+1|0}while((c|0)!=(e|0))}a=f+8|0;if((e|0)<(k[a>>2]|0)){b=k[f+24>>2]|0;d=k[f+20>>2]|0;c=e;do{e=b+(c<<2)|0;k[e>>2]=(k[e>>2]|0)+1;k[d+(c<<2)>>2]=1;c=c+1|0}while((c|0)<(k[a>>2]|0))}}k[f>>2]=(k[f>>2]|0)+1;return}function dk(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;if((r|0)>=(s|0))ka();j=l;f=ud(k[c>>2]|0)|0;g=f+12|0;c=((k[g>>2]|0)*25|0)+25|0;h=vg(c,((c|0)<0)<<31>>31)|0;if(!h)Wd(a);else{kw(h|0,0,c|0)|0;c=j;k[c>>2]=k[f>>2];k[c+4>>2]=0;fd(24,h,28696,j)|0;c=h;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;if((k[g>>2]|0)>0){d=f+24|0;e=0;b=h+(c-h&1073741823)|0;while(1){m=(k[(k[d>>2]|0)+(e<<2)>>2]|0)+1|0;c=k[f>>2]|0;n=ow(m|0,0,-1,-1)|0;c=ow(n|0,L|0,c|0,0)|0;m=yw(c|0,L|0,m|0,0)|0;c=j;k[c>>2]=m;k[c+4>>2]=L;fd(24,b,28704,j)|0;if(!b)c=0;else{c=b;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;c=c-b&1073741823}e=e+1|0;if((e|0)>=(k[g>>2]|0))break;else b=b+c|0}}$g(a,h,-1,1,1)}r=l;return}function ek(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;l=r;r=r+144|0;if((r|0)>=(s|0))ka();h=l;j=l+8|0;f=Xg(k[c>>2]|0,1)|0;g=k[(k[a>>2]|0)+32>>2]|0;f=(f|0)==0?10360:f;e=k[g+20>>2]|0;a:do if((e|0)>0){b=k[g+16>>2]|0;c=0;do{d=b+(c<<4)|0;if((k[b+(c<<4)+4>>2]|0)!=0?(id(k[d>>2]|0,f)|0)==0:0)break a;c=c+1|0}while((c|0)<(e|0))}else{c=0;d=0}while(0);do if((c|0)<(e|0)){if((c|0)<2){k[h>>2]=f;fd(128,j,29256,h)|0;m=16;break}if(!(i[g+63>>0]|0)){fd(128,j,29288,h)|0;m=16;break}c=d+4|0;b=k[c>>2]|0;if((i[b+8>>0]|0)==0?(k[b+16>>2]|0)==0:0){Rl(b);k[c>>2]=0;k[d+12>>2]=0;Jg(g);break}k[h>>2]=f;fd(128,j,29336,h)|0;m=16}else{k[h>>2]=f;fd(128,j,29232,h)|0;m=16}while(0);if((m|0)==16){k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,j,-1,1,-1)|0}r=l;return}function fk(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,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+32|0;if((r|0)>=(s|0))ka();v=z;g=z+20|0;b=z+16|0;f=z+12|0;y=z+8|0;h=z+4|0;x=k[(k[a>>2]|0)+32>>2]|0;k[g>>2]=0;k[b>>2]=0;k[y>>2]=0;u=Xg(k[c>>2]|0,1)|0;o=Xg(k[c+4>>2]|0,1)|0;u=(u|0)==0?10360:u;o=(o|0)==0?10360:o;t=x+20|0;d=k[t>>2]|0;e=k[x+116>>2]|0;a:do if((d|0)<(e+2|0)){if(!(i[x+63>>0]|0)){d=zh(x,29456,v)|0;k[y>>2]=d;b=0;w=42;break}p=x+16|0;e=k[p>>2]|0;b:do if((d|0)>0){c=0;while(1){if(!(id(k[e+(c<<4)>>2]|0,o)|0))break;c=c+1|0;if((c|0)>=(d|0))break b}k[v>>2]=o;d=zh(x,29504,v)|0;k[y>>2]=d;b=0;w=42;break a}while(0);if((e|0)!=(x+456|0)){e=wo(x,e,(d<<4)+16|0,0)|0;if(!e)break;else n=e}else{e=rh(x,48,0)|0;if(!e)break;n=k[p>>2]|0;k[e+0>>2]=k[n+0>>2];k[e+4>>2]=k[n+4>>2];k[e+8>>2]=k[n+8>>2];k[e+12>>2]=k[n+12>>2];k[e+16>>2]=k[n+16>>2];k[e+20>>2]=k[n+20>>2];k[e+24>>2]=k[n+24>>2];k[e+28>>2]=k[n+28>>2];n=e}k[p>>2]=n;j=k[t>>2]|0;l=n+(j<<4)|0;k[l+0>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[f>>2]=k[x+48>>2];e=$n(k[(k[x>>2]|0)+16>>2]|0,u,f,h,g,b)|0;if((e|0)==7)i[x+65>>0]=1;else if(!e){e=k[f>>2]|256;k[f>>2]=e;g=k[g>>2]|0;f=n+(j<<4)+4|0;e=Em(k[h>>2]|0,g,x,f,0,e)|0;$c(g);k[t>>2]=(k[t>>2]|0)+1;if(!e){e=ao(x,k[f>>2]|0)|0;k[n+(j<<4)+12>>2]=e;if(e)if((i[e+76>>0]|0)!=0?(i[e+77>>0]|0)!=(i[x+62>>0]|0):0){e=zh(x,13232,v)|0;k[y>>2]=e;e=1}else e=0;else e=7;b=k[f>>2]|0;c=k[b+4>>2]|0;k[c+4>>2]=k[b>>2];c=k[c>>2]|0;d=i[x+66>>0]|0;do if(!(i[c+12>>0]|0)){h=k[c+208>>2]|0;if((h|0)!=0?(i[h+43>>0]|0)==2:0)break;i[c+4>>0]=d}while(0);c=k[(k[p>>2]|0)+4>>2]|0;if(!c)c=0;else{h=k[c+4>>2]|0;k[h+4>>2]=k[c>>2];c=(m[h+22>>1]|0)>>>2&1}xo(b,c)|0;yo(k[f>>2]|0,k[x+24>>2]&28|3)}else if((e|0)==19){e=zh(x,29536,v)|0;k[y>>2]=e;e=1}i[n+(j<<4)+8>>0]=3;b=ph(x,o)|0;k[l>>2]=b;b=(e|0)==0&(b|0)==0?7:e;if(!b){c=k[t>>2]|0;if((c|0)>0){d=k[p>>2]|0;e=0;do{b=k[d+(e<<4)+4>>2]|0;if(b)k[(k[b+4>>2]|0)+4>>2]=k[b>>2];e=e+1|0}while((e|0)!=(c|0))}b=ci(x,y)|0;if(!b)break}d=(k[t>>2]|0)+-1|0;c=k[(k[p>>2]|0)+(d<<4)+4>>2]|0;if(c){Rl(c);n=k[p>>2]|0;k[n+(d<<4)+4>>2]=0;k[n+(d<<4)+12>>2]=0}Jg(x);k[t>>2]=d;if((b|0)==7|(b|0)==3082){i[x+65>>0]=1;rg(x,k[y>>2]|0);d=zh(x,15776,v)|0;k[y>>2]=d;w=42;break}d=k[y>>2]|0;if(d){w=43;break}k[v>>2]=u;d=zh(x,29568,v)|0;k[y>>2]=d;w=42;break}n=k[b>>2]|0;k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,n,-1,1,-1)|0;$c(n)}else{k[v>>2]=e;d=zh(x,29416,v)|0;k[y>>2]=d;b=0;w=42}while(0);if((w|0)==42)if(!d){q=b;w=44}else w=43;if((w|0)==43){k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,d,-1,1,-1)|0;rg(x,k[y>>2]|0);q=b;w=44}if((w|0)==44?(q|0)!=0:0)Ud(a,q);r=z;return}function gk(a){a=a|0;if(a){nk(a,0)|0;$c(k[a+24>>2]|0);zo(a)}return 0}function hk(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=a+12|0;f=c&131071;j=b;h=e;i=0;a:while(1){while(1){e=hb(k[l>>2]|0,d|0,0)|0;if(!((e|0)==(d|0)&(((e|0)<0)<<31>>31|0)==(h|0))){d=4;break a}g=fc[k[47552+100>>2]&63](k[l>>2]|0,j,f)|0;if((f|0)==(g|0)){e=i;d=13;break a}if((g|0)>=0){e=g;break}e=Mb()|0;e=k[e>>2]|0;if((e|0)!=4){f=g;d=10;break a}}if((e|0)<=0){f=0;e=i;d=13;break}g=ow(e|0,((e|0)<0)<<31>>31|0,d|0,h|0)|0;f=f-e|0;j=j+e|0;h=L;d=g;i=e+i|0}do if((d|0)==4)if((e|0)==-1){e=Mb()|0;k[a+20>>2]=k[e>>2];e=-1;break}else{k[a+20>>2]=0;e=-1;break}else if((d|0)==10){k[a+20>>2]=e;e=0;d=13}while(0);if((d|0)==13)e=e+f|0;if((e|0)!=(c|0))if((e|0)<0)e=266;else{k[a+20>>2]=0;kw(b+e|0,0,c-e|0)|0;e=522}else e=0;return e|0}function ik(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;a:do if((c|0)>0){g=a+12|0;h=a+20|0;f=c;while(1){c=Ao(k[g>>2]|0,d,e,b,f,h)|0;if((c|0)<=0)break;f=f-c|0;d=ow(c|0,((c|0)<0)<<31>>31|0,d|0,e|0)|0;if((f|0)<=0){c=0;break a}else{b=b+c|0;e=L}}if((c|0)<0?(k[h>>2]|0)!=28:0){c=778;break}k[a+20>>2]=0;c=13}else c=0;while(0);return c|0}function jk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a+40>>2]|0;if((d|0)>0){e=((d|0)<0)<<31>>31;c=ow(b|0,c|0,-1,-1)|0;c=ow(c|0,L|0,d|0,e|0)|0;b=L;d=ww(c|0,b|0,d|0,e|0)|0;d=iw(c|0,b|0,d|0,L|0)|0}else d=b;c=k[a+12>>2]|0;while(1){b=wc[k[47552+76>>2]&127](c,d)|0;if((b|0)>=0){d=6;break}b=Mb()|0;if((k[b>>2]|0)!=4){d=8;break}}if((d|0)==6)if(!b)b=0;else{b=Mb()|0;d=8}if((d|0)==8){k[a+20>>2]=k[b>>2];b=io(1546,47928,k[a+32>>2]|0,29004)|0}return b|0}function kk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();d=f;if(!(Lb(k[a+12>>2]|0)|0)){e=a+18|0;if(!(j[e>>1]&8))b=0;else{b=wc[k[47552+208>>2]&127](k[a+32>>2]|0,d)|0;c=k[d>>2]|0;if((b|0)==0&(c|0)>-1){Lb(c|0)|0;go(a,k[d>>2]|0,28974);b=0}else b=(b|0)==14?0:b;j[e>>1]=(m[e>>1]|0)&65527}}else{b=Mb()|0;k[a+20>>2]=k[b>>2];b=io(1034,48360,k[a+32>>2]|0,28960)|0}r=f;return b|0}function lk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=r;r=r+80|0;if((r|0)>=(s|0))ka();c=d;if(!(wc[k[47552+64>>2]&127](k[a+12>>2]|0,c)|0)){a=k[c+36>>2]|0;e=(a|0)==1;c=b;k[c>>2]=e?0:a;k[c+4>>2]=e?0:((a|0)<0)<<31>>31;c=0}else{c=Mb()|0;k[a+20>>2]=k[c>>2];c=1802}r=d;return c|0}function mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=k[a+24>>2]|0;e=a+16|0;a:do if(!(i[e>>0]|0)){c=wc[k[47552+220>>2]&127](d,511)|0;if((c|0)>=0){i[e>>0]=b;break}d=Mb()|0;d=k[d>>2]|0;switch(d|0){case 1:{c=3;break}case 13:case 37:case 4:case 16:case 110:case 11:case 17:{c=5;break a}default:c=3850}k[a+20>>2]=d}else{i[e>>0]=b;bb(d|0,0)|0;c=0}while(0);return c|0}function nk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=k[a+24>>2]|0;e=a+16|0;a:do if((l[e>>0]|0|0)==(b|0))c=0;else{if((b|0)==1){i[e>>0]=1;c=0;break}do if((qc[k[47552+232>>2]&127](d)|0)<0){c=Mb()|0;b=k[c>>2]|0;if((b|0)==20){if((qc[k[47552+196>>2]&127](d)|0)>=0)break;b=k[c>>2]|0}d=(b|0)!=2;c=d?2058:0;if(!d)break a;k[a+20>>2]=b;break a}while(0);i[e>>0]=0;c=0}while(0);return c|0}function ok(a,b){a=a|0;b=b|0;if((l[a+16>>0]|0)>1)a=1;else a=(wc[k[47552+28>>2]&127](k[a+24>>2]|0,0)|0)==0&1;k[b>>2]=a;return 0}function pk(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;j=r;r=r+80|0;if((r|0)>=(s|0))ka();e=j;a:do switch(b|0){case 1:{k[c>>2]=l[a+16>>0];d=0;break}case 10:{Bo(a,4,c);d=0;break}case 13:{Bo(a,16,c);d=0;break}case 20:{d=Co(a)|0;k[c>>2]=d;d=0;break}case 24:{d=0;break}case 16:{d=a+4|0;b=Yc(k[(k[d>>2]|0)+8>>2]|0)|0;if(!b)d=0;else{eo(k[(k[d>>2]|0)+8>>2]|0,b)|0;k[c>>2]=b;d=0}break}case 5:{b=c;c=k[b>>2]|0;b=k[b+4>>2]|0;d=a+40|0;if((k[d>>2]|0)>0){i=a+12|0;if(!(wc[k[47552+64>>2]&127](k[i>>2]|0,e)|0)){d=k[d>>2]|0;g=((d|0)<0)<<31>>31;c=ow(c|0,b|0,-1,-1)|0;c=ow(c|0,L|0,d|0,g|0)|0;h=L;g=ww(c|0,h|0,d|0,g|0)|0;g=iw(c|0,h|0,g|0,L|0)|0;h=L;c=k[e+36>>2]|0;d=((c|0)<0)<<31>>31;do if((h|0)>(d|0)|(h|0)==(d|0)&g>>>0>c>>>0){f=k[e+40>>2]|0;b=c+-1+(f<<1)|0;b=b+~((b|0)%(f|0)|0)|0;c=((b|0)<0)<<31>>31;d=a+20|0;if((c|0)<(h|0)|(c|0)==(h|0)&b>>>0>>0){e=((f|0)<0)<<31>>31;do{a=(Ao(k[i>>2]|0,b,c,10360,1,d)|0)==1;b=ow(b|0,c|0,f|0,e|0)|0;c=L;if(!a){d=778;break a}}while((c|0)<(h|0)|(c|0)==(h|0)&b>>>0>>0);b=ww(g|0,h|0,f|0,e|0)|0;if((b|0)==0&(L|0)==0)break}b=ow(g|0,h|0,-1,-1)|0;if((Ao(k[i>>2]|0,b,L,10360,1,d)|0)!=1){d=778;break a}}while(0);d=0}else d=1802}else d=0;break}case 6:{k[a+40>>2]=k[c>>2];d=0;break}case 12:{k[e>>2]=k[(k[a+4>>2]|0)+16>>2];d=dd(10344,e)|0;k[c>>2]=d;d=0;break}case 4:{k[c>>2]=k[a+20>>2];d=0;break}default:d=12}while(0);r=j;return d|0}function qk(a){a=a|0;return 4096}function rk(a){a=a|0;return (j[a+18>>1]&16)<<8|0}function sk(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,l=0;i=k[a+36>>2]|0;f=k[i>>2]|0;l=(1<>2]|0;f=(g|0)==0;if(d&4){if(f)d=0;else{d=0;f=g;do{if(l&(m[f+12>>1]|0)){e=5;break a}d=j[f+10>>1]|d;f=k[f+4>>2]|0}while((f|0)!=0)}if((l&(d&65535)|0)==0?(h=Do(a,0,b+120|0,c)|0,(h|0)!=0):0){e=h;break}e=i+10|0;j[e>>1]=m[e>>1]|0|l;e=0;break}if(!f){e=l&65535;d=g;do{if((m[d+12>>1]|0)&e){e=5;break a}if((m[d+10>>1]|0)&e){e=5;break a}d=k[d+4>>2]|0}while((d|0)!=0)}e=Do(a,1,b+120|0,c)|0;if(!e){e=i+12|0;j[e>>1]=m[e>>1]|0|l;e=0}}else{f=k[f+32>>2]|0;if(!f)d=0;else{d=0;do{if((f|0)!=(i|0))d=j[f+10>>1]|d;f=k[f+4>>2]|0}while((f|0)!=0)}if((d&65535&l|0)==0?(e=Do(a,2,b+120|0,c)|0,(e|0)!=0):0)break;d=(l|-65536)^65535;e=i+12|0;j[e>>1]=(m[e>>1]|0)&d;e=i+10|0;j[e>>1]=(m[e>>1]|0)&d;e=0}while(0);return e|0}function tk(a){a=a|0;return}function uk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;e=a+36|0;f=k[e>>2]|0;if(f){g=k[f>>2]|0;c=g+32|0;while(1){d=k[c>>2]|0;if((d|0)==(f|0))break;else c=d+4|0}k[c>>2]=k[f+4>>2];$c(f);k[e>>2]=0;d=g+28|0;c=(k[d>>2]|0)+-1|0;k[d>>2]=c;if(!c){if((b|0)!=0?(k[g+12>>2]|0)>-1:0)qc[k[47552+196>>2]&127](k[g+8>>2]|0)|0;Eo(a)}}return 0}function vk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=0;return 0}function wk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function xk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;if((r|0)>=(s|0))ka();e=d;k[e>>2]=c;b=vb(a|0,b|0,e|0)|0;r=d;return b|0}function yk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=r;r=r+528|0;if((r|0)>=(s|0))ka();d=g;e=g+8|0;k[d>>2]=a;fd(512,e,10344,d)|0;a=lw(e|0)|0;a:do if((a|0)>1)while(1){c=a+-1|0;if((i[e+a>>0]|0)==47)break a;if((c|0)>1)a=c;else{a=c;break}}while(0);if((a|0)>0){i[e+a>>0]=0;a=fo(e,0,0)|0;k[b>>2]=a;if((a|0)>-1)a=0;else f=7}else{k[b>>2]=-1;f=7}if((f|0)==7){k[d>>2]=28919;k[d+4>>2]=10788;gd(14,14848,d);a=io(14,47896,e,28919)|0}r=g;return a|0}function zk(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Pb()|0))a=Vb(a|0,b|0,c|0)|0;else a=0;return a|0}function Ak(){return Bb(30)|0}function Bk(a){a=a|0;zo(a);return 0}function Ck(a,b){a=a|0;b=b|0;return 0}function Dk(a,b){a=a|0;b=b|0;return 0}function Ek(a,b){a=a|0;b=b|0;k[b>>2]=0;return 0}function Fk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;ho(a);Hk(a,0)|0;e=k[a+8>>2]|0;if(e){if(k[e+24>>2]|0){b=a+28|0;d=k[b>>2]|0;c=e+28|0;k[d+8>>2]=k[c>>2];k[c>>2]=d;k[a+12>>2]=-1;k[b>>2]=0}c=e+16|0;b=(k[c>>2]|0)+-1|0;k[c>>2]=b;if(!b){Fo(a);f=e+36|0;b=k[f>>2]|0;c=e+32|0;d=k[c>>2]|0;if(!b)k[12178]=d;else k[b+32>>2]=d;b=k[c>>2]|0;if(b)k[b+36>>2]=k[f>>2];$c(e)}}zo(a);return 0}function Gk(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=r;r=r+16|0;if((r|0)>=(s|0))ka();h=o;m=a+16|0;c=i[m>>0]|0;a:do if((c&255|0)<(b|0)){g=k[a+8>>2]|0;n=g+12|0;d=i[n>>0]|0;if(c<<24>>24!=d<<24>>24?(d&255)>2|(b|0)>1:0){c=5;break}e=(b|0)==1;do if(e)if((d+-1&255)<2){i[m>>0]=1;c=g+8|0;k[c>>2]=(k[c>>2]|0)+1;c=g+24|0;k[c>>2]=(k[c>>2]|0)+1;c=0;break a}else{d=h+8|0;k[d>>2]=1;j[h+2>>1]=0;l=10;break}else{d=h+8|0;k[d>>2]=1;j[h+2>>1]=0;if((b|0)==4)if((c&255)<3)l=10;else{f=d;l=14}else{e=d;l=24}}while(0);if((l|0)==10){j[h>>1]=e&1^1;k[h+4>>2]=k[2514];if(!(Go(a,h)|0)){f=d;l=14}else{d=Mb()|0;d=k[d>>2]|0;switch(d|0){case 13:case 37:case 4:case 16:case 110:case 11:{c=5;break a}case 1:{c=3;break}default:c=3850}k[a+20>>2]=d;break}}b:do if((l|0)==14)if(e){e=h+4|0;k[e>>2]=(k[2514]|0)+2;k[f>>2]=510;c:do if(!(Go(a,h)|0)){c=0;d=0}else{d=Mb()|0;d=k[d>>2]|0;switch(d|0){case 1:{c=3;d=1;break c}case 13:case 37:case 4:case 16:case 110:case 11:{c=5;break c}default:{c=3850;break c}}}while(0);k[e>>2]=k[2514];k[f>>2]=1;j[h>>1]=2;do if((Go(a,h)|0)!=0&(c|0)==0){d=Mb()|0;c=2058;d=k[d>>2]|0}else{if((c|0)==5){c=5;break a}else if(c)break;i[m>>0]=1;h=g+24|0;k[h>>2]=(k[h>>2]|0)+1;k[g+8>>2]=1;break b}while(0);k[a+20>>2]=d;break a}else{e=f;l=24}while(0);do if((l|0)==24){f=(b|0)==4;if(f)if((k[g+8>>2]|0)>1)c=5;else{j[h>>1]=1;d=k[2514]|0;l=29}else{j[h>>1]=1;d=k[2514]|0;if((b|0)==2){k[h+4>>2]=d+1;d=1;l=30}else l=29}if((l|0)==29){k[h+4>>2]=d+2;d=510;l=30}if((l|0)==30){k[e>>2]=d;if(!(Go(a,h)|0))break;d=Mb()|0;d=k[d>>2]|0;switch(d|0){case 13:case 37:case 4:case 16:case 110:case 11:{c=5;break}case 1:{c=3;l=33;break}default:{c=3850;l=33}}if((l|0)==33)k[a+20>>2]=d;if(!f)break a}i[m>>0]=3;i[n>>0]=3;break a}while(0);c=b&255;i[m>>0]=c;i[n>>0]=c;c=0}else c=0;while(0);r=o;return c|0}function Hk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;l=r;r=r+16|0;if((r|0)>=(s|0))ka();f=l;g=a+16|0;c=i[g>>0]|0;a:do if((c&255|0)>(b|0)){h=k[a+8>>2]|0;do if((c&255)>1){if((b|0)==1){j[f>>1]=0;e=f+2|0;j[e>>1]=0;c=f+4|0;k[c>>2]=(k[2514]|0)+2;d=f+8|0;k[d>>2]=510;if(Go(a,f)|0){c=Mb()|0;k[a+20>>2]=k[c>>2];c=2314;break a}}else{d=f+8|0;e=f+2|0;c=f+4|0}j[f>>1]=2;j[e>>1]=0;k[c>>2]=k[2514];k[d>>2]=2;if(!(Go(a,f)|0)){i[h+12>>0]=1;break}else{c=Mb()|0;k[a+20>>2]=k[c>>2];c=2058;break a}}while(0);if(!b){d=h+8|0;c=(k[d>>2]|0)+-1|0;k[d>>2]=c;do if(!c){j[f>>1]=2;j[f+2>>1]=0;k[f+8>>2]=0;k[f+4>>2]=0;if(!(Go(a,f)|0)){i[h+12>>0]=0;c=0;break}else{c=Mb()|0;k[a+20>>2]=k[c>>2];i[h+12>>0]=0;i[g>>0]=0;c=2058;break}}else c=0;while(0);e=h+24|0;d=(k[e>>2]|0)+-1|0;k[e>>2]=d;if(!d)Fo(a);if(c)break}i[g>>0]=b;c=0}else c=0;while(0);r=l;return c|0}function Ik(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=r;r=r+32|0;if((r|0)>=(s|0))ka();e=g;f=g+8|0;d=k[a+8>>2]|0;h=(l[d+12>>0]|0)>1;c=h&1;do if(!h)if(!(i[d+13>>0]|0)){j[f+2>>1]=0;k[f+4>>2]=(k[2514]|0)+1;k[f+8>>2]=1;j[f>>1]=1;h=k[11910]|0;d=k[a+12>>2]|0;k[e>>2]=f;if(!(fc[h&63](d,12,e)|0)){d=0;c=(j[f>>1]|0)==2?c:1;break}else{d=Mb()|0;k[a+20>>2]=k[d>>2];d=3594;break}}else{d=0;c=0}else{d=0;c=1}while(0);k[b>>2]=c;r=g;return d|0}function Jk(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,l=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+160|0;if((r|0)>=(s|0))ka();y=A;t=A+76|0;g=mc[k[47552+292>>2]&7]()|0;if((g|0)<32768)z=1;else z=(g|0)/32768|0;w=a+36|0;g=k[w>>2]|0;a:do if(!g){g=Yc(16)|0;if(!g)f=7;else{k[g+0>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;q=a+8|0;o=k[q>>2]|0;f=k[o+20>>2]|0;b:do if(!f){p=a+32|0;h=k[p>>2]|0;if((wc[k[47552+64>>2]&127](k[a+12>>2]|0,t)|0)!=0?(i[o+13>>0]|0)==0:0)f=1802;else x=8;c:do if((x|0)==8){f=lw(h|0)|0;l=f+42|0;u=Yc(l)|0;if(u){kw(u|0,0,l|0)|0;n=u+36|0;k[u+8>>2]=n;k[y>>2]=h;fd(f+6|0,n,48720,y)|0;f=u+12|0;k[f>>2]=-1;q=k[q>>2]|0;k[q+20>>2]=u;k[u>>2]=q;k[u+4>>2]=8;if(i[o+13>>0]|0){f=u;break b}if(!(kg(k[p>>2]|0,48728,0)|0))l=66;else{i[u+22>>0]=1;l=0}h=fo(n,l,k[t+12>>2]&511)|0;k[f>>2]=h;if((h|0)<0){k[y>>2]=29706;k[y+4>>2]=10788;gd(14,14848,y);f=io(14,47896,n,29706)|0;break}fc[k[47552+244>>2]&63](h,k[t+20>>2]|0,k[t+24>>2]|0)|0;do if(!(Do(a,1,128,1)|0)){f=k[f>>2]|0;do{h=wc[k[47552+76>>2]&127](f,0)|0;if((h|0)>=0){v=h;x=18;break}t=Mb()|0}while((k[t>>2]|0)==4);if((x|0)==18?(v|0)==0:0)break;f=io(4618,47928,n,29722)|0;if(f)break c}while(0);f=Do(a,0,128,1)|0;if(!f){f=u;break b}}else f=7}while(0);Eo(a);$c(g);if(f)break a;g=k[w>>2]|0;x=24;break a}while(0);k[g>>2]=f;x=f+28|0;k[x>>2]=(k[x>>2]|0)+1;k[a+36>>2]=g;x=f+32|0;k[g+4>>2]=k[x>>2];k[x>>2]=g;x=24}}else x=24;while(0);if((x|0)==24){u=k[g>>2]|0;w=z+b|0;w=w-((w|0)%(z|0)|0)|0;t=u+20|0;d:do if((m[t>>1]|0)<(w|0)){f=ha(w,c)|0;k[u+16>>2]=c;v=u+12|0;g=k[v>>2]|0;e:do if((g|0)>-1){if(wc[k[47552+64>>2]&127](g,y)|0){g=4874;break d}g=k[y+36>>2]|0;if((g|0)<(f|0)){if(!d){g=0;break d}g=(g|0)/4096|0;f=(f|0)/4096|0;if((g|0)<(f|0)){while(1){q=g<<12|4095;g=g+1|0;if((Ao(k[v>>2]|0,q,((q|0)<0)<<31>>31,10360,1,0)|0)!=1)break;if((g|0)>=(f|0))break e}g=io(4874,47976,k[u+8>>2]|0,29853)|0;break d}}}while(0);q=u+24|0;g=ad(k[q>>2]|0,w<<2)|0;if(g){k[q>>2]=g;g=m[t>>1]|0;if((g|0)<(w|0)){n=ha(z,c)|0;o=u+22|0;p=(z|0)>0;while(1){f=k[v>>2]|0;if((f|0)>-1){g=ha(g,c)|0;g=pc[k[47552+256>>2]&7](0,n,(i[o>>0]|0)!=0?1:3,1,f,g)|0;if((g|0)==(-1|0))break}else{g=Yc(c)|0;if(!g){g=7;break d}kw(g|0,0,c|0)|0}h=j[t>>1]|0;if(p){f=h&65535;l=0;do{a=g+(ha(l,c)|0)|0;k[(k[q>>2]|0)+(f+l<<2)>>2]=a;l=l+1|0}while((l|0)!=(z|0))}g=(h&65535)+z|0;j[t>>1]=g;g=g&65535;if((g|0)>=(w|0)){g=0;break d}}g=io(5386,48080,k[u+8>>2]|0,29880)|0}else g=0}else g=3082}else g=0;while(0);if((m[t>>1]|0)>(b|0))f=k[(k[u+24>>2]|0)+(b<<2)>>2]|0;else f=0;k[e>>2]=f;f=(i[u+22>>0]|0)!=0&(g|0)==0?8:g}r=A;return f|0}function Kk(a,b){a=a|0;b=b|0;var c=0;if(b)do{c=b;b=k[b+32>>2]|0;Lk(a,k[c+20>>2]|0);Sk(a,k[c+24>>2]|0);Rk(a,k[c+8>>2]|0,1);Mk(a,k[c+28>>2]|0);rg(a,c)}while((b|0)!=0);return}function Lk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(b){e=b+4|0;do if(!(k[e>>2]&16384)){Lk(a,k[b+12>>2]|0);Lk(a,k[b+16>>2]|0);c=k[e>>2]|0;if(c&65536){rg(a,k[b+8>>2]|0);c=k[e>>2]|0}d=b+20|0;if(!(c&2048)){Sk(a,k[d>>2]|0);break}else{Rk(a,k[d>>2]|0,1);break}}while(0);if(!(k[e>>2]&32768))rg(a,b)}return}function Mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(b){e=b+4|0;c=k[b>>2]|0;if((k[e>>2]|0)>0){d=0;do{rg(a,k[c+(d<<3)>>2]|0);d=d+1|0;c=k[b>>2]|0}while((d|0)<(k[e>>2]|0))}rg(a,c);rg(a,b)}return}function Nk(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;o=r;r=r+16|0;if((r|0)>=(s|0))ka();n=o;h=gn(a,b,n)|0;do if(!h)if(c){m=vg(16,0)|0;if(!m)d=c;else{k[m+12>>2]=b;k[m+8>>2]=c;j=a+4|0;f=(k[j>>2]|0)+1|0;k[j>>2]=f;if((f>>>0>9?(e=k[a>>2]|0,f>>>0>e<<1>>>0):0)?(g=f<<4>>>0>1024?128:f<<1,(g|0)!=(e|0)):0){d=k[3164]|0;if(d)sc[d&3]();j=vg(g<<3,0)|0;d=k[3166]|0;if(d)sc[d&3]();if(j){h=a+12|0;$c(k[h>>2]|0);k[h>>2]=j;h=(qc[k[8744+48>>2]&127](j)|0)>>>3;k[a>>2]=h;kw(j|0,0,h<<3|0)|0;c=a+8|0;f=k[c>>2]|0;k[c>>2]=0;if(f)do{g=k[f+12>>2]|0;e=i[g>>0]|0;if(!(e<<24>>24))e=0;else{c=e;e=0;do{g=g+1|0;e=e<<3^e^(l[9328+(c&255)>>0]|0);c=i[g>>0]|0}while(c<<24>>24!=0)}c=f;f=k[f>>2]|0;Ho(a,j+(((e>>>0)%(h>>>0)|0)<<3)|0,c)}while((f|0)!=0);d=i[b>>0]|0;if(!(d<<24>>24))d=0;else{f=d;d=0;do{b=b+1|0;d=d<<3^d^(l[9328+(f&255)>>0]|0);f=i[b>>0]|0}while(f<<24>>24!=0)}k[n>>2]=(d>>>0)%((k[a>>2]|0)>>>0)|0}}d=k[a+12>>2]|0;if(!d)d=0;else d=d+(k[n>>2]<<3)|0;Ho(a,d,m);d=0}}else d=0;else{f=h+8|0;d=k[f>>2]|0;if(c){k[f>>2]=c;k[h+12>>2]=b;break}g=k[n>>2]|0;f=k[h+4>>2]|0;e=k[h>>2]|0;if(!f)k[a+8>>2]=e;else{k[f>>2]=e;e=k[h>>2]|0}if(e)k[e+4>>2]=f;b=k[a+12>>2]|0;if(b){f=b+(g<<3)+4|0;if((k[f>>2]|0)==(h|0))k[f>>2]=e;n=b+(g<<3)|0;k[n>>2]=(k[n>>2]|0)+-1}$c(h);m=a+4|0;n=(k[m>>2]|0)+-1|0;k[m>>2]=n;if(!n)Tl(a)}while(0);r=o;return d|0}function Ok(a,b){a=a|0;b=b|0;Lk(a,k[b+36>>2]|0);rg(a,k[b+16>>2]|0);if(i[b+51>>0]&16)rg(a,k[b+32>>2]|0);rg(a,b);return}function Pk(a,b){a=a|0;b=b|0;var c=0;if(b){c=k[b+28>>2]|0;Lk(a,k[c+20>>2]|0);Sk(a,k[c+24>>2]|0);Rk(a,k[c+8>>2]|0,1);Lk(a,k[b+12>>2]|0);rg(a,b)}return}function Qk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=b+4|0;c=k[e>>2]|0;if(c){b=b+38|0;if((j[b>>1]|0)>0){d=0;while(1){rg(a,k[c>>2]|0);Lk(a,k[c+4>>2]|0);rg(a,k[c+8>>2]|0);rg(a,k[c+12>>2]|0);rg(a,k[c+16>>2]|0);d=d+1|0;if((d|0)>=(j[b>>1]|0))break;else c=c+24|0}c=k[e>>2]|0}rg(a,c)}return}function Rk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b){d=(c|0)==0;c=b;while(1){b=c;c=k[c+52>>2]|0;Sk(a,k[b>>2]|0);Io(a,k[b+32>>2]|0);Lk(a,k[b+36>>2]|0);Sk(a,k[b+40>>2]|0);Lk(a,k[b+44>>2]|0);Sk(a,k[b+48>>2]|0);Lk(a,k[b+60>>2]|0);Lk(a,k[b+64>>2]|0);Vn(a,k[b+68>>2]|0);if(!d)rg(a,b);if(!c)break;else d=0}}return}function Sk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(b){c=b+4|0;if((k[b>>2]|0)>0){d=0;e=k[c>>2]|0;while(1){Lk(a,k[e>>2]|0);rg(a,k[e+4>>2]|0);rg(a,k[e+8>>2]|0);d=d+1|0;if((d|0)>=(k[b>>2]|0))break;else e=e+20|0}}rg(a,k[c>>2]|0);rg(a,b)}return}function Tk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=b+60|0;c=k[g>>2]|0;k[g>>2]=0;a:do if(!c)b=0;else{b=0;do{while(1){e=k[c>>2]|0;d=c+24|0;f=c;c=k[d>>2]|0;if((e|0)==(a|0)){b=f;break}e=e+332|0;k[d>>2]=k[e>>2];k[e>>2]=f;if(!c)break a}k[g>>2]=b;k[d>>2]=0}while((c|0)!=0)}while(0);return b|0}function Uk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)!=0?(d=b+(c*20|0)|0,(c|0)>0):0){c=b;do{Nn(a,i[c+1>>0]|0,k[c+16>>2]|0);c=c+20|0}while(c>>>0>>0)}rg(a,b);return}function Vk(a,b){a=a|0;b=b|0;do if(!a)b=qc[k[8744+48>>2]&127](b)|0;else{if((k[a+276>>2]|0)>>>0<=b>>>0?(k[a+280>>2]|0)>>>0>b>>>0:0){b=m[a+248>>1]|0;break}b=qc[k[8744+48>>2]&127](b)|0}while(0);a=k[a+520>>2]|0;k[a>>2]=(k[a>>2]|0)+b;return}function Wk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=k[a+(b<<2)>>2]|0;a:do if(!a)a=0;else while(1){b=k[a+24>>2]|0;if((Kc(b,c,d)|0)==0?(i[b+d>>0]|0)==0:0)break a;a=k[a+28>>2]|0;if(!a){a=0;break}}while(0);return a|0}function Xk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=a+12|0;e=k[d>>2]|0;f=e+c|0;if((f|0)<(k[a+16>>2]|0)){k[d>>2]=f;pw((k[a+8>>2]|0)+e|0,b|0,c|0)|0}else Jo(a,b,c);return}function Yk(a){a=a|0;var b=0,c=0;c=a+4|0;b=k[c>>2]|0;if((k[a>>2]|0)>(b|0)){k[c>>2]=b+1;c=_g(k[(k[a+8>>2]|0)+(b<<2)>>2]|0)|0;b=L}else{b=0;c=0}L=b;return c|0}function Zk(a){a=a|0;var b=0,c=0;b=a+4|0;c=k[b>>2]|0;if((k[a>>2]|0)>(c|0)){k[b>>2]=c+1;b=Xg(k[(k[a+8>>2]|0)+(c<<2)>>2]|0,1)|0}else b=0;return b|0}function _k(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;e=a+12|0;g=k[e>>2]|0;g=ow(g|0,((g|0)<0)<<31>>31|0,b|0,((b|0)<0)<<31>>31|0)|0;j=L;f=k[a+16>>2]|0;h=((f|0)<0)<<31>>31;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){if((b|0)>0)d=4}else{b=Ko(a,b)|0;if((b|0)>=1)d=4}if((d|0)==4){a=a+8|0;do{b=b+-1|0;d=k[e>>2]|0;k[e>>2]=d+1;i[(k[a>>2]|0)+d>>0]=c}while((b|0)>0)}return}function $k(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+112|0;if((r|0)>=(s|0))ka();g=d+28|0;f=d;e=k[a+88>>2]|0;k[f+4>>2]=g;k[f+8>>2]=g;k[f+12>>2]=0;k[f+16>>2]=70;k[f+20>>2]=e;i[f+24>>0]=1;e=f+25|0;i[e>>0]=0;k[f>>2]=a;xg(f,1,b,c);c=yg(f)|0;if((i[e>>0]|0)==1)i[a+65>>0]=1;r=d;return c|0}function al(a){a=a|0;return qc[k[8744+48>>2]&127](a)|0}function bl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+80|0;if((r|0)>=(s|0))ka();h=i+40|0;e=i;if((b|0)!=0?(d=k[b+20>>2]|0,(d|0)!=0):0){k[h+0>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;k[h+24>>2]=0;f=e+0|0;g=f+40|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));j[e+8>>1]=1;c=a+32|0;k[e+32>>2]=k[c>>2];k[h>>2]=e;k[h+8>>2]=a;k[h+4>>2]=b;hc[d&31](h);if((k[a+24>>2]|0)>0)rg(k[c>>2]|0,k[a+20>>2]|0);f=a+0|0;c=e+0|0;g=f+40|0;do{k[f>>2]=k[c>>2];f=f+4|0;c=c+4|0}while((f|0)<(g|0));c=k[h+20>>2]|0}else c=0;r=i;return c|0}function cl(a){a=a|0;var b=0,c=0,d=0;b=k[a>>2]|0;if(b){c=a+4|0;do{d=b;b=k[b>>2]|0;rg(k[c>>2]|0,d)}while((b|0)!=0)}k[a>>2]=0;j[a+24>>1]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+20>>2]=0;j[a+26>>1]=1;return}function dl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();f=g;e=g+4|0;b=k[a>>2]|0;c=b+16|0;do if((k[(k[c>>2]|0)+20>>2]|0)==0?(i[a+450>>0]|0)==0:0){d=Em(k[b>>2]|0,0,b,e,0,542)|0;if(d){yh(a,25496,f);k[a+12>>2]=d;b=1;break}d=k[e>>2]|0;k[(k[c>>2]|0)+20>>2]=d;if((Cg(d,k[b+72>>2]|0,-1,0)|0)==7){i[b+65>>0]=1;b=1}else b=0}else b=0;while(0);r=g;return b|0}function el(a){a=a|0;var b=0;do if(a)if((k[3157]|0)>>>0<=a>>>0&(k[3158]|0)>>>0>a>>>0){k[2167]=(k[2167]|0)+-1;k[a>>2]=k[3160];k[3160]=a;a=(k[3161]|0)+1|0;k[3161]=a;k[3162]=(a|0)<(k[3156]|0)&1;break}else{b=qc[k[8744+48>>2]&127](a)|0;k[2168]=(k[2168]|0)-b;$c(a);break}while(0);return}function fl(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=0,o=0,p=0;o=r;r=r+16|0;if((r|0)>=(s|0))ka();l=o;h=k[b>>2]|0;if((i[a+15>>0]|0)!=0?(k[a+24>>2]|0)!=0:0)n=12;else n=3;do if((n|0)==3){g=a+204|0;if(((h|0)!=0?(k[(k[g>>2]|0)+12>>2]|0)==0:0)?(m=a+152|0,(h|0)!=(k[m>>2]|0)):0){p=l;k[p>>2]=0;k[p+4>>2]=0;if(((i[a+16>>0]|0)!=0?(e=k[a+60>>2]|0,d=k[e>>2]|0,(d|0)!=0):0)?(f=wc[k[d+24>>2]&127](e,l)|0,(f|0)!=0):0){d=0;c=f}else{d=Lo(h)|0;if(d){Cn(a);e=Mo(k[g>>2]|0,h)|0;if(!e){n=a+200|0;el(k[n>>2]|0);k[n>>2]=d;n=l;l=k[n>>2]|0;n=k[n+4>>2]|0;g=ow(h|0,0,-1,-1)|0;n=ow(g|0,L|0,l|0,n|0)|0;n=vw(n|0,L|0,h|0,0)|0;k[a+24>>2]=n;k[m>>2]=h;n=12;break}else c=e}else{d=0;c=7}}el(d);k[b>>2]=k[m>>2]}else n=12}while(0);if((n|0)==12){k[b>>2]=k[a+152>>2];d=a+142|0;if((c|0)<0)c=j[d>>1]|0;j[d>>1]=c;c=0}r=o;return c|0}function gl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=k[a+4>>2]|0;a:do if(i[a+9>>0]|0){if((k[e+76>>2]|0)!=(a|0)?(j[e+22>>1]&32)!=0:0){d=262;break}d=k[e+72>>2]|0;if(d){while(1){if(((k[d>>2]|0)!=(a|0)?(k[d+4>>2]|0)==(b|0):0)?(i[d+8>>0]|0)!=c<<24>>24:0)break;d=k[d+12>>2]|0;if(!d){d=0;break a}}if(c<<24>>24==2){d=e+22|0;j[d>>1]=m[d>>1]|64;d=262}else d=262}else d=0}else d=0;while(0);return d|0}function hl(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,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;if((r|0)>=(s|0))ka();E=F;B=F+28|0;A=F+24|0;h=F+20|0;p=F+48|0;t=F+16|0;u=F+12|0;y=F+8|0;z=F+32|0;if(!((i[a+15>>0]|0)!=0?(b=k[a+40>>2]|0,(b|0)!=0):0))D=3;do if((D|0)==3){C=a+208|0;c=k[C>>2]|0;a:do if(!c){x=a+16|0;do if(!(i[x>>0]|0)){e=a+176|0;d=a+180|0;while(1){b=kl(a,1)|0;if(!b)break;else if((b|0)!=5)break a;if(!(qc[k[e>>2]&127](k[d>>2]|0)|0)){b=5;break a}}q=a+17|0;if((l[q>>0]|0)<2){c=k[a>>2]|0;k[E>>2]=1;f=a+64|0;g=(k[k[f>>2]>>2]|0)!=0;if(g){e=1;b=0}else{b=uc[k[c+32>>2]&31](c,k[a+172>>2]|0,0,E)|0;e=(k[E>>2]|0)!=0}b:do if((b|0)==0&e){k[B>>2]=0;d=a+60|0;b=k[d>>2]|0;b=wc[k[(k[b>>2]|0)+36>>2]&127](b,B)|0;if(!(k[B>>2]|b)){b=No(a,A)|0;if(!b){if((k[A>>2]|0)!=0|g){do if(!g){k[h>>2]=2049;b=yc[k[c+24>>2]&31](c,k[a+172>>2]|0,k[f>>2]|0,2049,h)|0;if(!b)break;else if((b|0)!=14){e=0;break b}e=1;b=0;break b}while(0);i[p>>0]=0;b=k[f>>2]|0;b=yc[k[(k[b>>2]|0)+8>>2]&31](b,p,1,0,0)|0;b=(b|0)==522?0:b;if(!g?(n=k[f>>2]|0,o=k[n>>2]|0,(o|0)!=0):0){qc[k[o+4>>2]&127](n)|0;k[n>>2]=0}e=(i[p>>0]|0)!=0&1;break}e=k[3164]|0;if(e)sc[e&3]();do if(((kl(a,2)|0)==0?(fc[k[c+28>>2]&63](c,k[a+172>>2]|0,0)|0,(i[a+4>>0]|0)==0):0)?(j=k[d>>2]|0,m=k[j>>2]|0,(m|0)!=0):0){if(!(i[a+13>>0]|0))wc[k[m+32>>2]&127](j,1)|0;if((i[q>>0]|0)==5)break;i[q>>0]=1}while(0);e=k[3166]|0;if(!e){e=0;b=0}else{sc[e&3]();e=0;b=0}}else e=0}else e=0}else e=0;while(0);if(b)break a;if(e)D=35}else D=35;do if((D|0)==35){if(i[a+14>>0]|0){b=776;break a}b=kl(a,4)|0;if(b)break a;c=a+64|0;if(!(k[k[c>>2]>>2]|0)){e=k[a>>2]|0;d=a+172|0;b=uc[k[e+32>>2]&31](e,k[d>>2]|0,0,t)|0;if((b|0)==0&(k[t>>2]|0)!=0){k[u>>2]=0;b=yc[k[e+24>>2]&31](e,k[d>>2]|0,k[c>>2]|0,2050,u)|0;if(!b)if(k[u>>2]&1){k[E>>2]=46645;k[E+4>>2]=10788;gd(14,14848,E);e=k[c>>2]|0;d=k[e>>2]|0;if(!d)b=14;else{qc[k[d+4>>2]&127](e)|0;k[e>>2]=0;b=14}}else b=0}}else b=0;if(!(k[k[c>>2]>>2]|0))if((i[a+4>>0]|0)==0?(v=k[a+60>>2]|0,w=k[v>>2]|0,(w|0)!=0):0){if(!(i[a+13>>0]|0))wc[k[w+32>>2]&127](v,1)|0;if((i[q>>0]|0)!=5){i[q>>0]=1;D=52}else D=52}else D=52;else{b=Oo(a)|0;if(!b){b=Po(a,1)|0;i[x>>0]=0;D=52}}if((D|0)==52)if(!b)break;B=b&255;if(!((B|0)==10|(B|0)==13))break a;k[a+40>>2]=b;i[x>>0]=6;break a}while(0);e=a+12|0;if((i[e>>0]|0)==0?(i[a+23>>0]|0)!=0:0){k[y>>2]=0;b=No(a,y)|0;if(b)break a;if(k[y>>2]|0){b=k[a+60>>2]|0;b=yc[k[(k[b>>2]|0)+8>>2]&31](b,z,16,24,0)|0;if(!((b|0)==0|(b|0)==522))break a}else{d=z+0|0;c=d+16|0;do{i[d>>0]=0;d=d+1|0}while((d|0)<(c|0))}if(cw(a+104|0,z,16)|0)Cn(a)}if(!(i[e>>0]|0)){b=No(a,A)|0;if(!b){d=k[a>>2]|0;c=k[a+212>>2]|0;if(!(k[A>>2]|0)){b=fc[k[d+28>>2]&63](d,c,0)|0;k[B>>2]=0;if((b|0)!=5898)D=68}else{b=uc[k[d+32>>2]&31](d,c,0,B)|0;D=68}if((D|0)==68){if(b)break;if(k[B>>2]|0){b=jl(a,0)|0;break}}b=a+5|0;if((i[b>>0]|0)==5){i[b>>0]=0;b=0}else b=0}}else b=0}else b=0;while(0);c=k[C>>2]|0;if(!c)D=78;else D=74}else D=74;while(0);if((D|0)==74){k[E>>2]=0;Qo(c);c=k[C>>2]|0;d=0;do{d=d+1|0;b=Ro(c,E,0,d)|0}while((b|0)==-1);if(!(k[E>>2]|b))D=78;else{Cn(a);D=78}}if((D|0)==78){if((i[a+16>>0]|0)==0&(b|0)==0)b=No(a,a+24|0)|0;if(!b){i[a+16>>0]=1;b=0;break}}So(a)}while(0);r=F;return b|0}function il(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;if((r|0)>=(s|0))ka();e=f;d=Eg(k[a>>2]|0,b,e,d)|0;if(!d){e=k[e>>2]|0;d=k[e+8>>2]|0;k[d+56>>2]=k[e+4>>2];k[d+68>>2]=e;k[d+52>>2]=a;k[d+72>>2]=b;i[d+6>>0]=(b|0)==1?100:0;k[c>>2]=d;d=0}r=f;return d|0}function jl(a,b){a=a|0;b=b|0;var c=0,d=0;do if((i[a+12>>0]|0)==0?(k[a+208>>2]|0)==0:0){b=k[k[a+60>>2]>>2]|0;if(!(i[a+4>>0]|0)){if((k[b>>2]|0)<=1){b=14;break}if(!(k[b+52>>2]|0)){b=14;break}}b=k[a+64>>2]|0;c=k[b>>2]|0;if(c){qc[k[c+4>>2]&127](b)|0;k[b>>2]=0}b=un(a)|0;if(!b){i[a+5>>0]=5;i[a+16>>0]=0;b=0}}else d=10;while(0);if((d|0)==10){k[b>>2]=1;b=0}return b|0}function kl(a,b){a=a|0;b=b|0;var c=0,d=0;d=a+17|0;c=i[d>>0]|0;do if((c&255|0)<(b|0)|c<<24>>24==5){if(!(i[a+13>>0]|0)){c=k[a+60>>2]|0;c=wc[k[(k[c>>2]|0)+28>>2]&127](c,b)|0;if(c)break;c=i[d>>0]|0}if(c<<24>>24!=5|(b|0)==4){i[d>>0]=b;c=0}else c=0}else c=0;while(0);return c|0}function ll(a){a=a|0;var b=0,c=0,d=0;b=k[a+4>>2]|0;a=k[b+444>>2]|0;if((a|0)!=0?(d=b+452|0,c=k[d>>2]|0,(c|0)>=0):0){a=wc[a&127](k[b+448>>2]|0,c)|0;if(!a)b=-1;else b=(k[d>>2]|0)+1|0;k[d>>2]=b}else a=0;return a|0}function ml(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;n=a+96|0;c=k[n>>2]|0;a:do if((c|0)<(b|0)?(i[a+6>>0]|0)!=0:0){d=a+92|0;q=wg(k[d>>2]|0,b*48|0,0)|0;if(!q)c=7;else{kw(q+(c*48|0)|0,0,(b-c|0)*48|0)|0;k[d>>2]=q;g=a+24|0;h=a+64|0;j=a+148|0;l=a+52|0;m=a+208|0;f=a+72|0;while(1){e=k[g>>2]|0;a=q+(c*48|0)|0;k[q+(c*48|0)+20>>2]=e;if((k[k[h>>2]>>2]|0)!=0?(p=f,o=k[p>>2]|0,p=k[p+4>>2]|0,(p|0)>0|(p|0)==0&o>>>0>0):0){k[a>>2]=o;k[a+4>>2]=p}else{k[a>>2]=k[j>>2];k[a+4>>2]=0}k[q+(c*48|0)+24>>2]=k[l>>2];d=vg(512,0)|0;if(!d)break;kw(d|0,0,512)|0;k[d>>2]=e;k[q+(c*48|0)+16>>2]=d;d=k[m>>2]|0;if(d){k[q+(c*48|0)+28>>2]=k[d+68>>2];k[q+(c*48|0)+32>>2]=k[d+76>>2];k[q+(c*48|0)+36>>2]=k[d+80>>2];k[q+(c*48|0)+40>>2]=k[d+104>>2]}c=c+1|0;k[n>>2]=c;if((c|0)>=(b|0)){c=0;break a}}k[q+(c*48|0)+16>>2]=d;c=7}}else c=0;while(0);return c|0}function nl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;do if(c){d=k[c+4>>2]|0;if(!(k[d>>2]|0)){d=To(a,b,c)|0;break}c=d+26|0;e=j[c>>1]|0;if(!(e<<16>>16)){f=a+12|0;k[f>>2]=(k[f>>2]|0)+1}j[c>>1]=e+1<<16>>16;if((b|0)==1)k[a+44>>2]=d}else d=0;while(0);return d|0}function ol(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+96|0;c=k[g>>2]|0;if((c|0)>0){f=a+92|0;e=0;a=0;do{d=k[f>>2]|0;if((k[d+(e*48|0)+20>>2]|0)>>>0>=b>>>0){a=gi(k[d+(e*48|0)+16>>2]|0,b)|0|a;c=k[g>>2]|0}e=e+1|0}while((e|0)<(c|0))}else a=0;return a|0}function pl(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,l=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+32|0;if((r|0)>=(s|0))ka();w=y;q=y+16|0;t=y+12|0;v=y+8|0;o=k[a+68>>2]|0;a:do if((o|0)!=0?(j[a+40>>1]|0)!=0:0){p=b*383&8191;u=(o+33|0)>>>12;b:while(1){d=Uo(a,u,q,t,v)|0;if(d)break a;d=(k[q>>2]|0)+(p<<1)|0;if(!(j[d>>1]|0))d=0;else{i=k[v>>2]|0;l=k[q>>2]|0;n=k[t>>2]|0;f=d;g=p;d=0;h=8192;while(1){e=(m[f>>1]|0)+i|0;if(e>>>0<=o>>>0)d=(k[n+(m[f>>1]<<2)>>2]|0)==(b|0)?e:d;if(!h){x=11;break b}g=g+1&8191;f=l+(g<<1)|0;if(!(j[f>>1]|0))break;else h=h+-1|0}}if((u|0)>0&(d|0)==0)u=u+-1|0;else{x=14;break}}if((x|0)==11){k[w>>2]=51262;k[w+4>>2]=10788;gd(11,13600,w);d=11;break}else if((x|0)==14){k[c>>2]=d;d=0;break}}else x=3;while(0);if((x|0)==3){k[c>>2]=0;d=0}r=y;return d|0}function ql(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=k[a+16>>2]|0;f=k[a+20>>2]|0;c=k[e+152>>2]|0;a=a+4|0;d=k[a>>2]|0;if(!b){b=xw(f+-1|0,0,c|0,((c|0)<0)<<31>>31|0)|0;g=k[e+60>>2]|0;b=yc[k[(k[g>>2]|0)+8>>2]&31](g,d,c,b,L)|0;b=(b|0)==522?0:b}else{h=k[e+208>>2]|0;g=m[h+66>>1]|0;g=g<<16&65536|g&65024;b=xw(g|24|0,0,b+-1|0,0)|0;b=ow(b|0,L|0,56,0)|0;h=k[h+8>>2]|0;b=yc[k[(k[h>>2]|0)+8>>2]&31](h,d,(g|0)<(c|0)?g:c,b,L)|0}do if((f|0)==1)if(!b){d=e+104|0;c=(k[a>>2]|0)+24|0;a=d+16|0;do{i[d>>0]=i[c>>0]|0;d=d+1|0;c=c+1|0}while((d|0)<(a|0));break}else{d=e+104|0;a=d+16|0;do{i[d>>0]=255;d=d+1|0}while((d|0)<(a|0));break}while(0);return b|0}function rl(a){a=a|0;var b=0,c=0;if(j[a+24>>1]&2)Vo(a,1);b=k[a+28>>2]|0;c=b+12|0;k[c>>2]=(k[c>>2]|0)+-1;if((k[a+20>>2]|0)==1)k[b+44>>2]=0;rc[k[8744+136>>2]&63](k[b+40>>2]|0,k[a>>2]|0,1);return}function sl(a){a=a|0;var b=0;b=i[a+16>>0]|0;do if(!(b<<24>>24==0|b<<24>>24==6)){if((b&255)<=1){if(i[a+4>>0]|0)break;Hl(a,0,0)|0;break}b=k[3164]|0;if(b)sc[b&3]();Ml(a)|0;b=k[3166]|0;if(b)sc[b&3]()}while(0);So(a);return}function tl(a){a=a|0;var b=0,c=0;c=a+26|0;b=(j[c>>1]|0)+-1<<16>>16;j[c>>1]=b;do if(!(b<<16>>16)){b=k[a+28>>2]|0;c=b+12|0;k[c>>2]=(k[c>>2]|0)+-1;if(j[a+24>>1]&2){if(!(k[a+36>>2]|0))break;Vo(a,3);break}if(i[b+28>>0]|0){if((k[a+20>>2]|0)==1)k[b+44>>2]=0;rc[k[8744+136>>2]&63](k[b+40>>2]|0,k[a>>2]|0,0)}}while(0);return}function ul(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=k[a+56>>2]|0;g=k[a+52>>2]|0;c=l[a+6>>0]|0;d=f+c|0;e=g+36|0;if(j[g+22>>1]&4)kw(d|0,0,(k[e>>2]|0)-c|0)|0;i[d>>0]=b;d=c+(b>>>1&4^12)|0;h=f+(c+1)|0;i[h>>0]=0;i[h+1>>0]=0;i[h+2>>0]=0;i[h+3>>0]=0;i[f+(c+7)>>0]=0;i[f+(c+5)>>0]=(k[e>>2]|0)>>>8;i[f+(c+6)>>0]=k[e>>2];j[a+16>>1]=(k[e>>2]|0)-d;Wo(a,b)|0;j[a+14>>1]=d;k[a+60>>2]=f+(k[e>>2]|0);k[a+64>>2]=f+(d&65535);i[a+1>>0]=0;j[a+20>>1]=(k[g+32>>2]|0)+65535;j[a+18>>1]=0;i[a>>0]=1;return}function vl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+32|0;if((r|0)>=(s|0))ka();e=f+16|0;d=f;b=a+8|0;k[e+0>>2]=k[b+0>>2];k[e+4>>2]=k[b+4>>2];k[e+8>>2]=k[b+8>>2];k[e+12>>2]=k[b+12>>2];c=a+40|0;k[d+0>>2]=k[c+0>>2];k[d+4>>2]=k[c+4>>2];k[d+8>>2]=k[c+8>>2];k[d+12>>2]=k[c+12>>2];k[c+0>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;Tl(a+24|0);c=k[d+8>>2]|0;if(c)do{og(0,k[c+8>>2]|0);c=k[c>>2]|0}while((c|0)!=0);Tl(d);k[b+0>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;b=k[e+8>>2]|0;if(b)do{pg(0,k[b+8>>2]|0);b=k[b>>2]|0}while((b|0)!=0);Tl(e);Tl(a+56|0);k[a+72>>2]=0;b=a+78|0;c=j[b>>1]|0;if(c&1){d=a+4|0;k[d>>2]=(k[d>>2]|0)+1;j[b>>1]=c&65534}r=f;return}function wl(a){a=a|0;var b=0,c=0;c=a+332|0;b=k[c>>2]|0;k[c>>2]=0;if(b){a=k[a+4>>2]|0;if(a)do{c=a+88|0;j[c>>1]=j[c>>1]|8;a=k[a+52>>2]|0}while((a|0)!=0);do{a=b;b=k[b+24>>2]|0;Fn(a)}while((b|0)!=0)}return}function xl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=a+20|0;b=k[f>>2]|0;i=a+16|0;c=k[i>>2]|0;if((b|0)>2){e=2;d=2;do{b=c+(e<<4)|0;if(!(k[c+(e<<4)+4>>2]|0)){rg(a,k[b>>2]|0);k[b>>2]=0}else{if((d|0)<(e|0)){c=c+(d<<4)|0;k[c+0>>2]=k[b+0>>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]}d=d+1|0}e=e+1|0;b=k[f>>2]|0;c=k[i>>2]|0}while((e|0)<(b|0))}else d=2;kw(c+(d<<4)|0,0,b-d<<4|0)|0;k[f>>2]=d;if((d|0)<3?(g=k[i>>2]|0,h=a+456|0,(g|0)!=(h|0)):0){k[h+0>>2]=k[g+0>>2];k[h+4>>2]=k[g+4>>2];k[h+8>>2]=k[g+8>>2];k[h+12>>2]=k[g+12>>2];k[h+16>>2]=k[g+16>>2];k[h+20>>2]=k[g+20>>2];k[h+24>>2]=k[g+24>>2];k[h+28>>2]=k[g+28>>2];rg(a,g);k[i>>2]=h}return}function yl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();q=v;n=k[a+16>>2]|0;p=n+152|0;d=((k[n+148>>2]|0)>>>0)/((k[p>>2]|0)>>>0)|0;u=n+20|0;i[u>>0]=l[u>>0]|0|4;h=a+20|0;e=k[h>>2]|0;a=e+-1&0-d;t=a+1|0;c=~a;b=k[n+24>>2]|0;if(e>>>0<=b>>>0){if((a+d|0)>>>0>b>>>0)d=b+1+c|0}else d=e+1+c|0;a:do if((d|0)>0){g=n+56|0;o=n+204|0;f=0;a=0;while(1){c=f+t|0;if((c|0)!=(e|0)?(ii(k[g>>2]|0,c)|0)!=0:0){e=fc[k[8744+132>>2]&63](k[(k[o>>2]|0)+40>>2]|0,c,0)|0;c=nl(k[o>>2]|0,c,e)|0;k[q>>2]=c;if(!c)b=0;else{a=(j[c+24>>1]&4)==0?a:1;Gg(c);b=0}}else if((c|0)==(((k[2514]|0)/(k[p>>2]|0)|0)+1|0))b=0;else{b=Eg(n,c,q,0)|0;if(b)break a;e=k[q>>2]|0;b=zl(e)|0;a=(j[e+24>>1]&4)==0?a:1;Gg(e)}f=f+1|0;c=(b|0)==0;if(!((f|0)<(d|0)&c))break;e=k[h>>2]|0}if(c&(a|0)!=0){a=0;do{n=a+t|0;b=fc[k[8744+132>>2]&63](k[(k[o>>2]|0)+40>>2]|0,n,0)|0;b=nl(k[o>>2]|0,n,b)|0;if(b){n=b+24|0;j[n>>1]=m[n>>1]|0|4;Gg(b)}a=a+1|0}while((a|0)!=(d|0));b=0}}else b=0;while(0);i[u>>0]=(l[u>>0]|0)&251;r=v;return b|0}function zl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=r;r=r+16|0;if((r|0)>=(s|0))ka();z=B+4|0;o=B;A=k[a+16>>2]|0;u=A+16|0;a:do if((i[u>>0]|0)==2){n=k[A>>2]|0;d=k[A+40>>2]|0;if(!d){do if((k[A+208>>2]|0)==0?(g=A+5|0,(i[g>>0]|0)!=2):0){h=A+24|0;d=k[h>>2]|0;c=vg(512,0)|0;if(!c){k[A+56>>2]=0;b=7;break a}kw(c|0,0,512)|0;k[c>>2]=d;p=A+56|0;k[p>>2]=c;e=A+64|0;f=k[e>>2]|0;do if(!(k[f>>2]|0)){if((i[g>>0]|0)==4){d=f+0|0;c=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(c|0));k[f>>2]=14696;t=17;break}c=i[A+12>>0]|0;k[o>>2]=0;if((c<<24>>24==0?(k[h>>2]|0)!=0:0)?(b=k[A+60>>2]|0,b=fc[k[(k[b>>2]|0)+40>>2]&63](b,20,o)|0,(b|0)!=12):0){d=(b|0)==0;if(d&(k[o>>2]|0)!=0){b=1032;break}if(d)t=15}else t=15;if((t|0)==15)b=yc[k[n+24>>2]&31](n,k[A+172>>2]|0,k[e>>2]|0,c<<24>>24!=0?4110:2054,0)|0;if(!b)t=17}else t=17;while(0);if((t|0)==17){k[A+44>>2]=0;b=A+72|0;i[A+19>>0]=0;k[b+0>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;b=Xo(A)|0;if(!b)break}ji(k[p>>2]|0);k[p>>2]=0;if(!b){t=20;break a}else break a}while(0);i[u>>0]=3;t=20}else b=d}else t=20;while(0);b:do if((t|0)==20){Yo(a);v=A+56|0;w=a+20|0;f=k[w>>2]|0;do if(!(ii(k[v>>2]|0,f)|0))if(!(k[A+208>>2]|0)){if(f>>>0<=(k[A+28>>2]|0)>>>0?(y=A+64|0,x=k[y>>2]|0,(k[x>>2]|0)!=0):0){t=A+72|0;g=t;p=k[g>>2]|0;g=k[g+4>>2]|0;q=k[a+4>>2]|0;d=k[A+48>>2]|0;u=A+152|0;e=(k[u>>2]|0)+-200|0;if((e|0)>0)do{d=(l[q+e>>0]|0)+d|0;e=e+-200|0}while((e|0)>0);o=a+24|0;j[o>>1]=m[o>>1]|4;i[z>>0]=f>>>24;o=z+1|0;i[o>>0]=f>>>16;n=z+2|0;i[n>>0]=f>>>8;h=z+3|0;i[h>>0]=f;b=yc[k[(k[x>>2]|0)+12>>2]&31](x,z,4,p,g)|0;if(b)break b;f=k[y>>2]|0;b=k[u>>2]|0;c=ow(p|0,g|0,4,0)|0;e=L;b=yc[k[(k[f>>2]|0)+12>>2]&31](f,q,b,c,e)|0;if(b)break b;p=k[y>>2]|0;b=k[u>>2]|0;b=ow(c|0,e|0,b|0,((b|0)<0)<<31>>31|0)|0;i[z>>0]=d>>>24;i[o>>0]=d>>>16;i[n>>0]=d>>>8;i[h>>0]=d;b=yc[k[(k[p>>2]|0)+12>>2]&31](p,z,4,b,L)|0;if(b)break b;b=(k[u>>2]|0)+8|0;p=t;p=ow(b|0,((b|0)<0)<<31>>31|0,k[p>>2]|0,k[p+4>>2]|0)|0;b=t;k[b>>2]=p;k[b+4>>2]=L;b=A+44|0;k[b>>2]=(k[b>>2]|0)+1;b=gi(k[v>>2]|0,k[w>>2]|0)|0;b=ol(A,k[w>>2]|0)|0|b;if(!b){t=34;break}else break b}if((i[u>>0]|0)!=4){t=a+24|0;j[t>>1]=m[t>>1]|4;t=34}else t=34}else t=34;else if((k[A+96>>2]|0)!=0?(Zo(a)|0)!=0:0)t=34;else b=0;while(0);if((t|0)==34)if((k[A+96>>2]|0)>0?(Zo(a)|0)!=0:0)b=_o(a)|0;else b=0;d=A+24|0;c=k[w>>2]|0;if((k[d>>2]|0)>>>0>>0)k[d>>2]=c}while(0);r=B;return b|0}function Al(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+128|0;if((r|0)>=(s|0))ka();h=i;d=k[a>>2]|0;c=(d|0)==0;if(!c){b=d;do{a=b;b=k[b+32>>2]|0;k[a+12>>2]=b}while((b|0)!=0);b=h+0|0;a=b+128|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(a|0));if(c)a=0;else{f=h+124|0;do{b=d+12|0;a=d;d=k[b>>2]|0;k[b>>2]=0;b=0;do{e=h+(b<<2)|0;c=k[e>>2]|0;if(!c){c=e;g=8;break}a=$o(c,a)|0;k[e>>2]=0;b=b+1|0}while((b|0)<31);if((g|0)==8){g=0;k[c>>2]=a}if((b|0)==31){a=$o(k[f>>2]|0,a)|0;k[f>>2]=a}}while((d|0)!=0);a=k[h>>2]|0}}else{b=h+0|0;a=b+128|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(a|0));a=0}b=1;do{a=$o(a,k[h+(b<<2)>>2]|0)|0;b=b+1|0}while((b|0)!=32);r=i;return a|0}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,m=0,n=0,o=0,p=0,q=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;I=r;r=r+80|0;if((r|0)>=(s|0))ka();n=I+32|0;o=I+28|0;z=I;q=I+40|0;G=I+24|0;k[G>>2]=b;w=(d|0)==0;if(!w){k[G>>2]=b;if(!b){b=0;h=0}else{h=0;g=G;do{x=(k[b+20>>2]|0)>>>0>c>>>0;D=b+12|0;h=h+(x&1^1)|0;g=x?g:D;b=k[D>>2]|0;k[g>>2]=b}while((b|0)!=0);b=k[G>>2]|0}}else h=1;D=a+192|0;k[D>>2]=(k[D>>2]|0)+h;if((k[b+20>>2]|0)==1)Dl(b);E=k[a+208>>2]|0;F=k[a+152>>2]|0;p=i[a+10>>0]|0;x=p&255;f=E+40|0;if(!(j[f>>1]|0)){do if(k[(k[k[E+32>>2]>>2]|0)+96>>2]|0){hd(4,n);g=E+43|0;if(!(i[g>>0]|0)){h=k[E+4>>2]|0;h=uc[k[(k[h>>2]|0)+56>>2]&31](h,4,4,10)|0;if((h|0)==5){h=g;y=14;break}else if(h)break}ap(E,k[n>>2]|0);if(!(i[g>>0]|0)){h=k[E+4>>2]|0;uc[k[(k[h>>2]|0)+56>>2]&31](h,4,4,9)|0;h=g;y=14}else{h=g;y=14}}else{h=E+43|0;y=14}while(0);if((y|0)==14){if(!(i[h>>0]|0)){D=k[E+4>>2]|0;uc[k[(k[D>>2]|0)+56>>2]&31](D,3,1,5)|0}j[f>>1]=-1;g=0;do{g=g+1|0;h=Ro(E,o,1,g)|0}while((h|0)==-1)}if(h)e=h;else y=19}else y=19;a:do if((y|0)==19){D=E+68|0;o=k[D>>2]|0;if(!o){i[q>>0]=55;i[q+1>>0]=127;i[q+2>>0]=6;i[q+3>>0]=-126;i[q+4>>0]=0;i[q+5>>0]=45;i[q+6>>0]=-30;i[q+7>>0]=24;i[q+8>>0]=F>>>24;i[q+9>>0]=F>>>16;i[q+10>>0]=F>>>8;i[q+11>>0]=F;v=k[E+104>>2]|0;i[q+12>>0]=v>>>24;i[q+13>>0]=v>>>16;i[q+14>>0]=v>>>8;i[q+15>>0]=v;if(!v)hd(8,E+84|0);f=E+84|0;h=f;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;f=f+4|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;n=q+16|0;g=n;i[g>>0]=h;i[g+1>>0]=h>>8;i[g+2>>0]=h>>16;i[g+3>>0]=h>>24;n=n+4|0;i[n>>0]=f;i[n+1>>0]=f>>8;i[n+2>>0]=f>>16;i[n+3>>0]=f>>24;n=q+24|0;f=q;g=0;h=0;do{g=g+h+(k[f>>2]|0)|0;h=g+h+(k[f+4>>2]|0)|0;f=f+8|0}while(f>>>0>>0);i[n>>0]=g>>>24;i[q+25>>0]=g>>>16;i[q+26>>0]=g>>>8;i[q+27>>0]=g;i[q+28>>0]=h>>>24;i[q+29>>0]=h>>>16;i[q+30>>0]=h>>>8;i[q+31>>0]=h;k[E+36>>2]=F;i[E+65>>0]=0;k[E+76>>2]=g;k[E+80>>2]=h;i[E+47>>0]=1;g=E+8|0;h=k[g>>2]|0;h=yc[k[(k[h>>2]|0)+12>>2]&31](h,q,32,0,0)|0;if(h){e=h;break}if((i[E+48>>0]|0)!=0&p<<24>>24!=0?(e=k[g>>2]|0,e=wc[k[(k[e>>2]|0)+20>>2]&127](e,x&19)|0,(e|0)!=0):0)break}else g=E+8|0;k[z>>2]=E;q=k[g>>2]|0;k[z+4>>2]=q;t=z+8|0;u=t;k[u>>2]=0;k[u+4>>2]=0;k[z+16>>2]=x;k[z+20>>2]=F;u=F+24|0;v=((u|0)<0)<<31>>31;h=xw(o|0,0,u|0,v|0)|0;h=ow(h|0,L|0,32,0)|0;e=L;if(!b){f=h;p=0}else{m=e;f=o;p=b;while(1){o=f+1|0;if(w)f=0;else f=(k[p+12>>2]|0)==0?c:0;e=bp(z,p,f,h,m)|0;if(e)break a;h=ow(h|0,m|0,u|0,v|0)|0;e=L;n=k[p+12>>2]|0;if(!n){f=h;break}else{m=e;f=o;p=n}}}w=(d|0)!=0;do if(!((x&32|0)==0|w^1)){if(!(i[E+49>>0]|0)){g=0;e=wc[k[(k[q>>2]|0)+20>>2]&127](q,x&19)|0;break}h=k[g>>2]|0;g=k[(k[h>>2]|0)+44>>2]|0;if(g){h=qc[g&127](h)|0;if((h|0)<32){g=512;h=0}else y=37}else{h=4096;y=37}if((y|0)==37){y=(h|0)>65536;g=y?65536:h;h=y?0:((h|0)<0)<<31>>31}y=ow(f|0,e|0,-1,-1)|0;y=ow(y|0,L|0,g|0,h|0)|0;n=L;m=ww(y|0,n|0,g|0,h|0)|0;m=iw(y|0,n|0,m|0,L|0)|0;n=L;y=t;k[y>>2]=m;k[y+4>>2]=n;if((e|0)<(n|0)|(e|0)==(n|0)&f>>>0>>0){h=e;g=0;while(1){e=bp(z,p,c,f,h)|0;if(e)break a;f=ow(f|0,h|0,u|0,v|0)|0;h=L;g=g+1|0;if(!((h|0)<(n|0)|(h|0)==(n|0)&f>>>0>>0)){e=0;break}}}else{g=0;e=0}}else{g=0;e=0}while(0);if((w?(A=E+47|0,(i[A>>0]|0)!=0):0)?(C=E+16|0,B=k[C>>2]|0,C=k[C+4>>2]|0,(C|0)>-1|(C|0)==-1&B>>>0>4294967295):0){d=xw(g+o|0,0,u|0,v|0)|0;d=ow(d|0,L|0,32,0)|0;z=L;y=(z|0)>(C|0)|(z|0)==(C|0)&d>>>0>B>>>0;cp(E,y?d:B,y?z:C);i[A>>0]=0}f=k[D>>2]|0;if((b|0)!=0&(e|0)==0)do{f=f+1|0;e=dp(E,f,k[b+20>>2]|0)|0;b=k[b+12>>2]|0}while((b|0)!=0&(e|0)==0);b=(e|0)==0;if(b&(g|0)>0){h=p+20|0;do{f=f+1|0;g=g+-1|0;e=dp(E,f,k[h>>2]|0)|0;b=(e|0)==0}while(b&(g|0)>0)}if(b){j[E+66>>1]=F&65280|F>>>16;k[D>>2]=f;if(w){D=E+60|0;k[D>>2]=(k[D>>2]|0)+1;k[E+72>>2]=c;ep(E);k[E+12>>2]=f}}else if(e)break;f=a+88|0;e=k[f>>2]|0;if((e|0)!=0?(H=k[G>>2]|0,(H|0)!=0):0){b=e;e=H;while(1){fp(b,k[e+20>>2]|0,k[e+4>>2]|0);e=k[e+12>>2]|0;if(!e){e=0;break a}b=k[f>>2]|0}}else e=0}while(0);r=I;return e|0}function Cl(a){a=a|0;var b=0,c=0;b=a+24|0;if(((j[b>>1]&2)!=0?(Vo(a,1),j[b>>1]=m[b>>1]&65529,(j[a+26>>1]|0)==0):0)?(c=k[a+28>>2]|0,(i[c+28>>0]|0)!=0):0){if((k[a+20>>2]|0)==1)k[c+44>>2]=0;rc[k[8744+136>>2]&63](k[c+40>>2]|0,k[a>>2]|0,0)}return}function Dl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=k[a+16>>2]|0;c=((l[c+105>>0]|0)<<16|(l[c+104>>0]|0)<<24|(l[c+106>>0]|0)<<8|(l[c+107>>0]|0))+1|0;a=a+4|0;b=k[a>>2]|0;f=c>>>24&255;i[b+24>>0]=f;e=c>>>16&255;i[b+25>>0]=e;d=c>>>8&255;i[b+26>>0]=d;c=c&255;i[b+27>>0]=c;b=k[a>>2]|0;i[b+92>>0]=f;i[b+93>>0]=e;i[b+94>>0]=d;i[b+95>>0]=c;a=k[a>>2]|0;i[a+96>>0]=0;i[a+97>>0]=45;i[a+98>>0]=-26;i[a+99>>0]=9;return}function El(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+32|0;if((r|0)>=(s|0))ka();h=v+16|0;q=v;e=gp(a)|0;a:do if(!e){do if(!(i[a+7>>0]|0)){u=a+64|0;if((k[k[u>>2]>>2]|0)!=0?(i[a+5>>0]|0)!=4:0){g=k[a+60>>2]|0;g=qc[k[(k[g>>2]|0)+48>>2]&127](g)|0;t=(g&512|0)==0;if(t){d=q;k[d>>2]=-117058087;k[d+4>>2]=-681336544;d=k[a+44>>2]|0;i[q+8>>0]=d>>>24;i[q+9>>0]=d>>>16;i[q+10>>0]=d>>>8;i[q+11>>0]=d;d=a+72|0;e=k[d>>2]|0;d=k[d+4>>2]|0;if((e|0)==0&(d|0)==0){e=0;d=0}else{d=ow(e|0,d|0,-1,-1)|0;e=k[a+148>>2]|0;d=vw(d|0,L|0,e|0,0)|0;d=ow(d|0,L|0,1,0)|0;e=xw(d|0,L|0,e|0,0)|0;d=L}f=k[u>>2]|0;f=yc[k[(k[f>>2]|0)+8>>2]&31](f,h,8,e,d)|0;if(!f){if(!(cw(h,14808,8)|0)){n=k[u>>2]|0;n=yc[k[(k[n>>2]|0)+12>>2]&31](n,14976,1,e,d)|0;o=12}}else{n=f;o=12}if((o|0)==12?!((n|0)==0|(n|0)==522):0){c=n;break a}d=g&1024;if((i[a+8>>0]|0)!=0&(d|0)==0?(p=k[u>>2]|0,p=wc[k[(k[p>>2]|0)+20>>2]&127](p,l[a+11>>0]|0)|0,(p|0)!=0):0){c=p;break a}p=k[u>>2]|0;e=a+80|0;e=yc[k[(k[p>>2]|0)+12>>2]&31](p,q,12,k[e>>2]|0,k[e+4>>2]|0)|0;if(e){c=e;break a}}else d=g&1024;if((d|0)==0?(q=k[u>>2]|0,c=i[a+11>>0]|0,c=wc[k[(k[q>>2]|0)+20>>2]&127](q,(c<<24>>24==3?16:0)|c&255)|0,(c|0)!=0):0)break a;o=a+72|0;p=k[o+4>>2]|0;q=a+80|0;k[q>>2]=k[o>>2];k[q+4>>2]=p;if((b|0)==0|t^1)break;k[a+44>>2]=0;c=Xo(a)|0;if(!c)break;else break a}o=a+72|0;p=k[o+4>>2]|0;q=a+80|0;k[q>>2]=k[o>>2];k[q+4>>2]=p}while(0);d=k[a+204>>2]|0;c=k[d>>2]|0;if(c)do{q=c+24|0;j[q>>1]=m[q>>1]&65531;c=k[c+32>>2]|0}while((c|0)!=0);k[d+8>>2]=k[d+4>>2];i[a+16>>0]=4;c=0}else c=e;while(0);r=v;return c|0}function Fl(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,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();g=v;u=a+60|0;d=k[u>>2]|0;if(!((k[d>>2]|0)==0?(c=k[a>>2]|0,c=yc[k[c+24>>2]&31](c,0,d,k[a+144>>2]&556897|30,0)|0,(c|0)!=0):0)){d=a+36|0;c=k[d>>2]|0;e=a+24|0;f=k[e>>2]|0;do if(c>>>0>>0){if((k[b+12>>2]|0)==0?(k[b+20>>2]|0)>>>0<=c>>>0:0)break;l=k[a+152>>2]|0;l=xw(f|0,0,l|0,((l|0)<0)<<31>>31|0)|0;m=g;k[m>>2]=l;k[m+4>>2]=L;m=k[u>>2]|0;fc[k[(k[m>>2]|0)+40>>2]&63](m,5,g)|0;k[d>>2]=k[e>>2]}while(0);if(!b)c=0;else{n=a+24|0;o=a+152|0;p=a+104|0;q=a+32|0;t=a+192|0;m=a+88|0;do{l=k[b+20>>2]|0;if(l>>>0<=(k[n>>2]|0)>>>0?(j[b+24>>1]&32)==0:0){g=k[o>>2]|0;a=xw(g|0,((g|0)<0)<<31>>31|0,l+-1|0,0)|0;f=L;e=(l|0)==1;if(e){Dl(b);g=k[o>>2]|0}h=b+4|0;d=k[h>>2]|0;c=k[u>>2]|0;c=yc[k[(k[c>>2]|0)+12>>2]&31](c,d,g,a,f)|0;if(e){a=p+0|0;g=d+24|0;f=a+16|0;do{i[a>>0]=i[g>>0]|0;a=a+1|0;g=g+1|0}while((a|0)<(f|0))}if(l>>>0>(k[q>>2]|0)>>>0)k[q>>2]=l;k[t>>2]=(k[t>>2]|0)+1;fp(k[m>>2]|0,l,k[h>>2]|0)}else c=0;b=k[b+12>>2]|0}while((c|0)==0&(b|0)!=0)}}r=v;return c|0}function Gl(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;o=r;r=r+16|0;if((r|0)>=(s|0))ka();j=o;l=a+60|0;d=k[l>>2]|0;e=k[d>>2]|0;do if((e|0)!=0?((i[a+16>>0]|0)+-1&255)>2:0){m=k[a+152>>2]|0;e=wc[k[e+24>>2]&127](d,j)|0;f=((m|0)<0)<<31>>31;g=xw(m|0,f|0,b|0,0)|0;h=L;if(!e){d=j;e=k[d>>2]|0;d=k[d+4>>2]|0;if((e|0)==(g|0)&(d|0)==(h|0))c=0;else{if(!((d|0)>(h|0)|(d|0)==(h|0)&e>>>0>g>>>0)){j=ow(e|0,d|0,m|0,f|0)|0;e=L;if(!((e|0)>(h|0)|(e|0)==(h|0)&j>>>0>g>>>0)){n=k[a+200>>2]|0;kw(n|0,0,m|0)|0;l=k[l>>2]|0;c=iw(g|0,h|0,m|0,f|0)|0;c=yc[k[(k[l>>2]|0)+12>>2]&31](l,n,m,c,L)|0;n=9}}else{c=k[l>>2]|0;c=fc[k[(k[c>>2]|0)+16>>2]&63](c,g,h)|0;n=9}if((n|0)==9?(c|0)!=0:0)break;k[a+32>>2]=b;c=0}}else c=e}else c=0;while(0);r=o;return c|0} -function cs(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,n=0,o=0,q=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+16|0;if((r|0)>=(s|0))ka();u=x;v=x+8|0;k[v>>2]=0;a:do if(!b){k[e>>2]=0;f=0}else{g=i[b>>0]|0;if(g<<24>>24==-98)do{b=k[b+12>>2]|0;g=i[b>>0]|0}while(g<<24>>24==-98);if(g<<24>>24==-97)n=l[b+38>>0]|0;else n=g&255;if((n|0)==157){b=k[b+12>>2]|0;n=i[b>>0]|0;if((n&-2)<<24>>24==-124){h=-1;g=-1;t=n&255;n=26016;w=12}else w=30}else if((n|0)==38){h=ar(k[b+8>>2]|0,0)|0;f=cs(a,k[b+12>>2]|0,c,h,e)|0;g=k[e>>2]|0;if(!g)break;lm(g,h,1);km(k[e>>2]|0,d,1);break}else{h=1;g=0;t=n;n=10360;w=12}b:do if((w|0)==12){c:do switch(t|0){case 97:case 132:case 133:{f=rh(a,40,0)|0;if(!f){k[v>>2]=f;break c}o=f+0|0;q=o+40|0;do{i[o>>0]=0;o=o+1|0}while((o|0)<(q|0));j[f+8>>1]=1;k[f+32>>2]=a;k[v>>2]=f;do if(!(k[b+4>>2]&1024)){h=k[b+8>>2]|0;k[u>>2]=n;k[u+4>>2]=h;h=zh(a,19456,u)|0;if(!h)break c;if(f)ah(f,h,-1,1,75)|0}else{n=k[b+8>>2]|0;n=xw(n|0,((n|0)<0)<<31>>31|0,h|0,g|0)|0;h=L;b=f+8|0;if(!(j[b>>1]&9312)){v=f;k[v>>2]=n;k[v+4>>2]=h;j[b>>1]=4;break}else{ch(f,n,h);break}}while(0);if((t&-2|0)==132&d<<24>>24==65)km(f,67,1);else km(f,d,1);g=f+8|0;b=m[g>>1]|0;if(b&12)j[g>>1]=b&65533;if(c<<24>>24==1){g=f;f=0;break b}g=f;f=bm(f,c&255)|0;break b}case 101:{f=rh(a,40,0)|0;if(!f){k[v>>2]=f;break c}else{o=f+0|0;q=o+40|0;do{i[o>>0]=0;o=o+1|0}while((o|0)<(q|0));j[f+8>>1]=1;k[f+32>>2]=a;k[v>>2]=f;g=f;f=0;break b}}case 157:{b=k[b+12>>2]|0;w=30;break b}case 134:{f=rh(a,40,0)|0;if(!f){k[v>>2]=f;break c}o=f+0|0;q=o+40|0;do{i[o>>0]=0;o=o+1|0}while((o|0)<(q|0));j[f+8>>1]=1;k[f+32>>2]=a;k[v>>2]=f;g=(k[b+8>>2]|0)+2|0;b=g;while(1)if(!(i[b>>0]|0))break;else b=b+1|0;v=(b-g&1073741823)+-1|0;ah(f,bu(a,g,v)|0,(v|0)/2|0,0,75)|0;g=f;f=0;break b}default:{g=0;f=0;break b}}while(0);i[a+65>>0]=1;rg(a,0);Rh(f);f=7;break a}while(0);if((w|0)==30){u=(cs(a,b,c,d,v)|0)==0;g=k[v>>2]|0;if(u&(g|0)!=0){tp(g);h=g+8|0;b=j[h>>1]|0;do if(!(b&8)){n=g;f=k[n>>2]|0;n=k[n+4>>2]|0;if((f|0)==0&(n|0)==-2147483648){p[g>>3]=9223372036854775808.0;j[h>>1]=b&48640|8;break}else{u=iw(0,0,f|0,n|0)|0;v=g;k[v>>2]=u;k[v+4>>2]=L;break}}else p[g>>3]=-+p[g>>3];while(0);km(g,d,c);f=0}else f=0}k[e>>2]=g}while(0);r=x;return f|0}function ds(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;do if((b|0)!=0?(e=a+19|0,f=i[e>>0]|0,(f&255)<8):0){d=0;c=a+116|0;while(1){if((k[c+12>>2]|0)==(b|0)){d=5;break}d=d+1|0;if((d|0)>=10){d=7;break}else c=c+20|0}if((d|0)==5){i[c+6>>0]=1;break}else if((d|0)==7){i[e>>0]=f+1<<24>>24;k[a+((f&255)<<2)+24>>2]=b;break}}while(0);return}function es(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;m=r;r=r+32|0;if((r|0)>=(s|0))ka();l=m;c=a+484|0;h=k[c>>2]|0;j=k[a>>2]|0;do if((h|0)!=0?(gs(a),k[a+512>>2]=0,(k[h+52>>2]|0)>=1):0){if(i[j+145>>0]|0)if(!(Nk((k[h+68>>2]|0)+8|0,k[h>>2]|0,h)|0)){k[c>>2]=0;break}else{i[j+65>>0]=1;break}if(b)k[a+500>>2]=(k[b>>2]|0)-(k[a+496>>2]|0)+(k[b+4>>2]|0);k[l>>2]=a+496;g=zh(j,25256,l)|0;b=k[h+68>>2]|0;a:do if(b){d=k[j+20>>2]|0;if((d|0)>0){e=k[j+16>>2]|0;f=0;while(1){c=f+1|0;if((k[e+(f<<4)+12>>2]|0)==(b|0)){c=f;break a}if((c|0)<(d|0))f=c;else break}}else c=0}else c=-1e6;while(0);e=k[h>>2]|0;f=k[a+384>>2]|0;k[l>>2]=k[(k[j+16>>2]|0)+(c<<4)>>2];k[l+4>>2]=(c|0)==1?13184:13208;k[l+8>>2]=e;k[l+12>>2]=e;k[l+16>>2]=g;k[l+20>>2]=f;Gr(a,25280,l);rg(j,g);g=Tq(a)|0;Ir(a,c);Bh(g,144,0,0,0)|0;k[l>>2]=k[h>>2];Nr(g,c,zh(j,25368,l)|0);a=a+72|0;l=(k[a>>2]|0)+1|0;k[a>>2]=l;a=k[h>>2]|0;Ch(g,Bh(g,97,0,l,0)|0,a,0);Bh(g,147,c,l,0)|0}while(0);r=m;return}function fs(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+52|0;h=k[g>>2]|0;d=h+1|0;k[g>>2]=d;f=(h<<2)+8|0;e=b+56|0;f=wo(a,k[e>>2]|0,f,((f|0)<0)<<31>>31)|0;if(!f){if((h|0)>0){b=0;do{rg(a,k[(k[e>>2]|0)+(b<<2)>>2]|0);b=b+1|0}while((b|0)!=(h|0))}rg(a,c);rg(a,k[e>>2]|0);k[g>>2]=0}else{k[f+(h<<2)>>2]=c;k[f+(d<<2)>>2]=0}k[e>>2]=f;return}function gs(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+512>>2]|0;if((b|0)!=0?(e=k[a+484>>2]|0,(e|0)!=0):0){c=k[a+516>>2]|0;d=k[a>>2]|0;a=ow(c|0,((c|0)<0)<<31>>31|0,1,0)|0;a=rh(d,a,L)|0;if(!a)a=0;else{pw(a|0,b|0,c|0)|0;i[a+c>>0]=0}fs(d,e,a)}return}function hs(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,j=0,l=0,m=0;m=r;r=r+16|0;if((r|0)>=(s|0))ka();h=m;j=k[a>>2]|0;l=$q(j,c)|0;g=(b|0)!=0;if((l|0)!=0&g?(f=k[b>>2]|0,(f|0)>0):0){c=f;f=0;do{if(!(id(l,k[b+(f<<4)+8>>2]|0)|0)){k[h>>2]=l;yh(a,25184,h);c=k[b>>2]|0}f=f+1|0}while((f|0)<(c|0))}if(g){f=(k[b>>2]<<4)+24|0;f=wo(j,b,f,((f|0)<0)<<31>>31)|0;if(!f)c=10;else{b=f;c=11}}else{c=rh(j,24,0)|0;if(!c)c=10;else{f=c+0|0;b=f+24|0;do{i[f>>0]=0;f=f+1|0}while((f|0)<(b|0));b=c;c=11}}if((c|0)==10){Sk(j,d);Rk(j,e,1);rg(j,l)}else if((c|0)==11){j=b+8|0;k[j+(k[b>>2]<<4)+8>>2]=e;e=k[b>>2]|0;k[j+(e<<4)+4>>2]=d;k[j+(e<<4)>>2]=l;k[j+(e<<4)+12>>2]=0;k[b>>2]=e+1}r=m;return b|0}function is(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+96|0;if((r|0)>=(s|0))ka();h=j+48|0;c=j;d=k[k[a+32>>2]>>2]|0;e=h+0|0;f=d+0|0;g=e+48|0;do{i[e>>0]=i[f>>0]|0;e=e+1|0;f=f+1|0}while((e|0)<(g|0));if((i[a+43>>0]|0)!=2){e=k[a+4>>2]|0;hc[k[(k[e>>2]|0)+60>>2]&31](e)}e=c+0|0;f=d+48|0;g=e+48|0;do{i[e>>0]=i[f>>0]|0;e=e+1|0;f=f+1|0}while((e|0)<(g|0));if((cw(h,c,48)|0)==0?(i[h+12>>0]|0)!=0:0){f=h+40|0;g=h;d=0;c=0;do{d=d+c+(k[g>>2]|0)|0;c=d+c+(k[g+4>>2]|0)|0;g=g+8|0}while(g>>>0>>0);if((d|0)==(k[f>>2]|0)?(c|0)==(k[h+44>>2]|0):0){c=a+52|0;if(!(cw(c,h,48)|0))c=0;else{k[b>>2]=1;e=c+0|0;f=h+0|0;g=e+48|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));c=m[a+66>>1]|0;k[a+36>>2]=c<<16&65536|c&65024;c=0}}else c=1}else c=1;r=j;return c|0}function js(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;if((r|0)>=(s|0))ka();e=f;b=yc[k[(k[a>>2]|0)+8>>2]&31](a,e,4,b,c)|0;if(!b)k[d>>2]=(l[e+1>>0]|0)<<16|(l[e>>0]|0)<<24|(l[e+2>>0]|0)<<8|(l[e+3>>0]|0);r=f;return b|0}function ks(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(b>>>0<0|(b|0)==0&a>>>0<8)if(b>>>0<0|(b|0)==0&a>>>0<2)a=0;else{c=40;do{c=(c&65535)+65526|0;a=nw(a|0,b|0,1)|0;b=L}while(b>>>0<0|(b|0)==0&a>>>0<8);c=c&65535;e=11}else{if(b>>>0>0|(b|0)==0&a>>>0>255){d=b;c=40;while(1){c=(c&65535)+40|0;e=rw(a|0,d|0,4)|0;b=L;if(d>>>0>0|(d|0)==0&a>>>0>4095){a=e;d=b}else{a=e;break}}c=c&65535}else c=40;if(b>>>0>0|(b|0)==0&a>>>0>15){while(1){c=(c&65535)+10&65535;d=rw(a|0,b|0,1)|0;if(b>>>0>0|(b|0)==0&a>>>0>31){a=d;b=L}else{a=d;break}}e=11}else e=11}if((e|0)==11)a=(c&65535)+65526+(m[13496+((a&7)<<1)>>1]|0)&65535;return a|0}function ls(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,j=0,l=0;j=k[a+408>>2]|0;j=(j|0)==0?a:j;g=j+396|0;f=k[g>>2]|0;h=k[j+400>>2]|0;a:do if((f|0)>0){a=0;while(1){if((k[h+(a<<4)>>2]|0)==(b|0)?(k[h+(a<<4)+4>>2]|0)==(c|0):0)break;a=a+1|0;if((a|0)>=(f|0)){l=8;break a}}a=h+(a<<4)+8|0;if(!(i[a>>0]|0))f=d<<24>>24!=0&1;else f=1;i[a>>0]=f}else l=8;while(0);do if((l|0)==8){a=(f<<4)+16|0;a=$l(k[j>>2]|0,h,a,((a|0)<0)<<31>>31)|0;k[j+400>>2]=a;if(!a){k[g>>2]=0;i[(k[j>>2]|0)+65>>0]=1;break}else{f=k[g>>2]|0;k[g>>2]=f+1;k[a+(f<<4)>>2]=b;k[a+(f<<4)+4>>2]=c;i[a+(f<<4)+8>>0]=d;k[a+(f<<4)+12>>2]=e;break}}while(0);return}function ms(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;e=j[b+48>>1]|0;h=e&65535;d=m[b+46>>1]|0;l=a+64|0;if(!(k[l>>2]|0)){c=k[a>>2]|0;if(!(i[b+51>>0]&8))g=Ws(c,h,0)|0;else g=Ws(c,d,h-d|0)|0;if(g){if(e<<16>>16){f=b+32|0;b=b+28|0;d=g+16|0;c=0;do{e=k[(k[f>>2]|0)+(c<<2)>>2]|0;if(!(dw(e,11152)|0))e=0;else e=hr(a,e)|0;k[g+(c<<2)+20>>2]=e;i[(k[d>>2]|0)+c>>0]=i[(k[b>>2]|0)+c>>0]|0;c=c+1|0}while((c|0)<(h|0))}c=(k[l>>2]|0)==0;if(!c){c=(k[g>>2]|0)+-1|0;k[g>>2]=c;if(!c){$c(g);c=0}else c=0}else c=c?g:0}else c=0}else c=0;return c|0}function ns(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,n=0,o=0,p=0,q=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+112|0;if((r|0)>=(s|0))ka();A=F;C=F+100|0;D=F+96|0;g=F+48|0;B=k[a+8>>2]|0;k[C>>2]=0;k[D>>2]=0;z=k[a>>2]|0;a:do if(!B)c=0;else{b:do if(!b)E=16;else{o=i[b>>0]|0;n=o&255;do switch(n|0){case 77:case 76:{Bh(B,25,1,c,0)|0;d=Bh(B,n,eu(a,k[b+12>>2]|0,C)|0,0,0)|0;Bh(B,25,0,c,0)|0;e=k[B+32>>2]|0;if(e>>>0>d>>>0)k[(k[B+4>>2]|0)+(d*20|0)+8>>2]=e;k[(k[B+24>>2]|0)+88>>2]=e+-1;break b}case 135:{e=b+32|0;Bh(B,31,j[e>>1]|0,c,0)|0;if(!(i[(k[b+8>>2]|0)+1>>0]|0))break b;Ch(B,-1,k[(k[a+472>>2]|0)+((j[e>>1]|0)+-1<<2)>>2]|0,-2);break b}case 148:case 73:{y=b+12|0;A=eu(a,k[y>>2]|0,C)|0;z=b+16|0;B=eu(a,k[z>>2]|0,D)|0;fu(a,k[y>>2]|0,k[z>>2]|0,o<<24>>24==73?79:78,A,B,c,160);break b}case 133:{du(B,k[b+8>>2]|0,0,c);break b}case 154:break;case 101:{E=16;break b}case 74:{o=k[b+12>>2]|0;h=k[(k[b+20>>2]|0)+4>>2]|0;d=k[h>>2]|0;l=eu(a,o,C)|0;n=eu(a,d,D)|0;g=a+19|0;e=i[g>>0]|0;if(e<<24>>24){A=e+-1<<24>>24;i[g>>0]=A;f=k[a+((A&255)<<2)+24>>2]|0;if(!(A<<24>>24))E=103;else{A=e+-2<<24>>24;i[g>>0]=A;g=k[a+((A&255)<<2)+24>>2]|0}}else{E=a+72|0;f=(k[E>>2]|0)+1|0;k[E>>2]=f;E=103}if((E|0)==103){A=a+72|0;g=(k[A>>2]|0)+1|0;k[A>>2]=g}fu(a,o,d,83,l,n,f,32);A=k[h+20>>2]|0;ds(a,k[D>>2]|0);fu(a,o,A,81,l,eu(a,A,D)|0,g,32);Bh(B,72,f,g,c)|0;ds(a,f);ds(a,g);break b}case 132:{cu(a,b,0,c);break b}case 79:case 78:case 83:case 80:case 81:case 82:{y=b+12|0;A=eu(a,k[y>>2]|0,C)|0;z=b+16|0;B=eu(a,k[z>>2]|0,D)|0;fu(a,k[y>>2]|0,k[z>>2]|0,n,A,B,c,32);break b}case 19:case 96:{Bh(B,n,eu(a,k[b+12>>2]|0,C)|0,c,0)|0;break b}case 158:case 95:{c=ns(a,k[b+12>>2]|0,c)|0;break b}case 62:{d=k[b+44>>2]|0;e=b+32|0;Bh(B,132,(ha((j[d+38>>1]|0)+1|0,k[b+28>>2]|0)|0)+((j[e>>1]|0)+1)|0,c,0)|0;e=j[e>>1]|0;if(e<<16>>16<=-1)break b;if((i[(k[d+4>>2]|0)+((e<<16>>16)*24|0)+21>>0]|0)!=69)break b;Bh(B,39,c,0,0)|0;break b}case 24:{c=ns(a,k[b+12>>2]|0,c)|0;break b}case 155:{e=k[b+40>>2]|0;if(!e){k[A>>2]=k[b+8>>2];yh(a,28936,A);break b}else{c=k[(k[e+40>>2]|0)+(j[b+34>>1]<<4)+8>>2]|0;break b}}case 94:case 88:case 87:case 92:case 86:case 85:case 93:case 90:case 91:case 89:case 71:case 72:{A=eu(a,k[b+12>>2]|0,C)|0;Bh(B,n,eu(a,k[b+16>>2]|0,D)|0,A,c)|0;break b}case 157:{e=b+12|0;d=k[e>>2]|0;f=i[d>>0]|0;if(f<<24>>24==-124){cu(a,d,1,c);break b}else if(f<<24>>24==-123){du(B,k[d+8>>2]|0,1,c);break b}else{i[g>>0]=-124;k[g+4>>2]=17408;k[g+8>>2]=0;A=eu(a,g,C)|0;Bh(B,90,eu(a,k[e>>2]|0,D)|0,A,c)|0;break b}}case 119:case 20:{c=ju(a,b,0,0)|0;break b}case 75:{A=Cs(B)|0;h=Cs(B)|0;Bh(B,28,0,c,0)|0;ku(a,b,A,h);Bh(B,25,1,c,0)|0;e=B+24|0;d=k[e>>2]|0;f=~A;if((A|0)<0?(l=k[d+112>>2]|0,(l|0)!=0):0)k[l+(f<<2)>>2]=k[B+32>>2];g=B+32|0;k[d+88>>2]=(k[g>>2]|0)+-1;Bh(B,37,c,0,0)|0;f=k[e>>2]|0;e=~h;if((h|0)<0?(p=k[f+112>>2]|0,(p|0)!=0):0)k[p+(e<<2)>>2]=k[g>>2];k[f+88>>2]=(k[g>>2]|0)+-1;break b}case 156:{d=k[b+40>>2]|0;e=j[b+34>>1]|0;f=k[d+28>>2]|0;if(!(i[d>>0]|0)){c=k[f+(e*24|0)+16>>2]|0;break b}if(i[d+1>>0]|0){Bh(B,47,k[d+8>>2]|0,k[f+(e*24|0)+12>>2]|0,c)|0;break b}break}case 38:{e=ns(a,k[b+12>>2]|0,c)|0;if((e|0)!=(c|0))Bh(B,34,e,c,0)|0;Bh(B,40,c,(ar(k[b+8>>2]|0,0)|0)<<24>>24,0)|0;it(a,c,1);break b}case 153:{l=i[z+62>>0]|0;x=b+4|0;if((k[x>>2]&16384|0)==0?(h=k[b+20>>2]|0,(h|0)!=0):0){y=k[h>>2]|0;v=1;w=h}else{y=0;v=0;w=0}o=k[b+8>>2]|0;if(!o)n=0;else{n=o;while(1)if(!(i[n>>0]|0))break;else n=n+1|0;n=n-o&1073741823}g=Xh(z,o,n,y,l,0)|0;if((g|0)!=0?(k[g+12>>2]|0)!=0:0){u=g+2|0;h=m[u>>1]|0;if(h&512){g=Cs(B)|0;f=w+4|0;Wq(a,k[k[f>>2]>>2]|0,c);if((y|0)>1){e=a+100|0;d=1;do{Bh(B,77,c,g,0)|0;it(a,c,1);k[e>>2]=(k[e>>2]|0)+1;Wq(a,k[(k[f>>2]|0)+(d*20|0)>>2]|0,c);gu(a);d=d+1|0}while((d|0)!=(y|0))}f=k[B+24>>2]|0;e=~g;if((g|0)<0?(t=k[f+112>>2]|0,(t|0)!=0):0)k[t+(e<<2)>>2]=k[B+32>>2];k[f+88>>2]=(k[B+32>>2]|0)+-1;break b}if(h&1024){Wq(a,k[k[w+4>>2]>>2]|0,c);break b}t=(y|0)>0;if(t){n=w+4|0;l=A+20|0;h=A+4|0;e=A+24|0;o=0;d=0;f=0;do{if((d|0)<32?(b=k[(k[n>>2]|0)+(d*20|0)>>2]|0,k[A+0>>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[l>>0]=1,k[A>>2]=78,k[h>>2]=79,k[e>>2]=0,ws(A,b)|0,(i[l>>0]|0)!=0):0)o=o|1<>1]&32)==0|(f|0)!=0))f=hu(a,k[(k[n>>2]|0)+(d*20|0)>>2]|0)|0;d=d+1|0}while((d|0)!=(y|0));p=o}else{p=0;f=0}if(v){do if(!p){n=a+60|0;o=k[n>>2]|0;l=a+56|0;h=k[l>>2]|0;if((h|0)<(y|0)){A=a+72|0;o=k[A>>2]|0;k[A>>2]=o+y;o=o+1|0;break}else{k[n>>2]=o+y;k[l>>2]=h-y;break}}else{A=a+72|0;o=k[A>>2]|0;k[A>>2]=o+y;o=o+1|0}while(0);h=j[u>>1]|0;if((h&192)!=0?(q=k[k[w+4>>2]>>2]|0,A=i[q>>0]|0,A<<24>>24==-100|A<<24>>24==-102):0)i[q+38>>0]=h&192;A=a+100|0;k[A>>2]=(k[A>>2]|0)+1;gt(a,w,o,3);gu(a)}else o=0;if((y|0)>1?(k[x>>2]&128|0)!=0:0)g=iu(z,g,y,k[(k[w+4>>2]|0)+20>>2]|0)|0;else if(t)g=iu(z,g,y,k[k[w+4>>2]>>2]|0)|0;if(j[g+2>>1]&32){if(!f)f=k[z+8>>2]|0;Ch(B,Bh(B,36,0,0,0)|0,f,-4)}Ch(B,Bh(B,1,p,o,c)|0,g,-5);f=k[B+4>>2]|0;if(f)i[f+(((k[B+32>>2]|0)+-1|0)*20|0)+3>>0]=y;if(!((y|0)!=0&(p|0)==0))break b;it(a,o,y);e=a+56|0;if((k[e>>2]|0)>=(y|0))break b;k[e>>2]=y;k[a+60>>2]=o;break b}k[A>>2]=n;k[A+4>>2]=o;yh(a,28968,A);break b}case 159:{c=k[b+28>>2]|0;break b}case 134:{d=(k[b+8>>2]|0)+2|0;e=d;while(1)if(!(i[e>>0]|0))break;else e=e+1|0;z=(e-d&1073741823)+-1|0;A=bu(k[B>>2]|0,d,z)|0;Ch(B,Bh(B,30,(z|0)/2|0,c,0)|0,A,-1);break b}case 57:{if(!(k[a+412>>2]|0)){yh(a,29e3,A);c=0;break a}f=i[b+1>>0]|0;if(f<<24>>24!=2){d=k[b+8>>2]|0;if(f<<24>>24==4){Ch(B,Bh(B,24,0,4,0)|0,d,0);break b}}else{d=k[a+408>>2]|0;i[((d|0)==0?a:d)+21>>0]=1;d=k[b+8>>2]|0}Es(a,1811,f<<24>>24,d,0,0);break b}case 97:{A=k[b+8>>2]|0;Ch(B,Bh(B,97,0,c,0)|0,A,0);break b}default:{u=k[b+20>>2]|0;q=u+4|0;t=k[q>>2]|0;u=k[u>>2]|0;v=Cs(B)|0;o=k[b+12>>2]|0;b=(o|0)!=0;if(b){n=g+0|0;l=o+0|0;h=n+48|0;do{k[n>>2]=k[l>>2];n=n+4|0;l=l+4|0}while((n|0)<(h|0));o=eu(a,o,C)|0;i[g+38>>0]=i[g>>0]|0;i[g>>0]=-97;k[g+28>>2]=o;o=g+4|0;k[o>>2]=k[o>>2]&-4097;i[A>>0]=79;k[A+12>>2]=g;k[C>>2]=0;o=A}else o=0;p=u+-1|0;if((p|0)>0){d=a+100|0;h=A+16|0;g=B+24|0;f=B+32|0;e=0;n=o;while(1){k[d>>2]=(k[d>>2]|0)+1;o=k[t+(e*20|0)>>2]|0;if(b){k[h>>2]=o;o=n}A=Cs(B)|0;lt(a,o,A,16);Wq(a,k[t+((e|1)*20|0)>>2]|0,c);Bh(B,16,0,v,0)|0;gu(a);n=k[g>>2]|0;l=~A;if((A|0)<0?(w=k[n+112>>2]|0,(w|0)!=0):0)k[w+(l<<2)>>2]=k[f>>2];k[n+88>>2]=(k[f>>2]|0)+-1;e=e+2|0;if((e|0)>=(p|0))break;else n=o}}if(!(u&1))Bh(B,28,0,c,0)|0;else{A=a+100|0;k[A>>2]=(k[A>>2]|0)+1;Wq(a,k[(k[q>>2]|0)+(p*20|0)>>2]|0,c);gu(a)}f=k[B+24>>2]|0;e=~v;if((v|0)<0?(x=k[f+112>>2]|0,(x|0)!=0):0)k[x+(e<<2)>>2]=k[B+32>>2];k[f+88>>2]=(k[B+32>>2]|0)+-1;break b}}while(0);d=k[b+28>>2]|0;do if((d|0)<0){d=k[a+92>>2]|0;if((d|0)>0){c=(j[b+32>>1]|0)+d|0;break b}else{d=k[a+96>>2]|0;break}}while(0);c=ht(a,k[b+44>>2]|0,j[b+32>>1]|0,d,c,i[b+38>>0]|0)|0}while(0);if((E|0)==16)Bh(B,28,0,c,0)|0;ds(a,k[C>>2]|0);ds(a,k[D>>2]|0)}while(0);r=F;return c|0}function os(a,b){a=a|0;b=b|0;var c=0;c=Tq(a)|0;ls(a,b,1,1,(b|0)==1?13184:13208);Ch(c,Bh(c,55,0,1,b)|0,5,-14);b=a+68|0;if(!(k[b>>2]|0))k[b>>2]=1;return}function ps(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=b+48|0;if((m[d>>1]|0|0)<(c|0)){e=c*7|0;a=rh(a,e,((e|0)<0)<<31>>31)|0;if(!a)a=7;else{kw(a|0,0,e|0)|0;f=b+32|0;pw(a|0,k[f>>2]|0,(m[d>>1]|0)<<2|0)|0;k[f>>2]=a;f=a+(c<<2)|0;e=b+4|0;pw(f|0,k[e>>2]|0,(m[d>>1]|0)<<1|0)|0;k[e>>2]=f;e=a+(c*6|0)|0;a=b+28|0;pw(e|0,k[a>>2]|0,m[d>>1]|0|0)|0;k[a>>2]=e;j[d>>1]=c;a=b+51|0;i[a>>0]=i[a>>0]|16;a=0}}else a=0;return a|0}function qs(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,n=0;n=r;r=r+32|0;if((r|0)>=(s|0))ka();f=n;l=n+4|0;do if(!b)c=0;else{g=k[a>>2]|0;i=b+24|0;e=g+460|0;d=(k[e>>2]|0)+(k[i>>2]|0)|0;c=k[(k[g>>2]|0)+100>>2]|0;if((c|0)<(d|0)){k[f>>2]=c;yh(g,27152,f);c=1;break}k[e>>2]=d;f=a+28|0;e=m[f>>1]|0;h=e&4098;j[f>>1]=e&61437;k[l+0>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[l+16>>2]=0;k[l+20>>2]=0;k[l>>2]=82;k[l+4>>2]=83;e=l+12|0;k[e>>2]=g;k[l+24>>2]=a;ws(l,b)|0;l=(k[a>>2]|0)+460|0;k[l>>2]=(k[l>>2]|0)-(k[i>>2]|0);if(!((k[a+24>>2]|0)<=0?(k[(k[e>>2]|0)+64>>2]|0)<=0:0)){l=b+4|0;k[l>>2]=k[l>>2]|8}e=j[f>>1]|0;d=b+4|0;c=k[d>>2]|0;if(e&2){c=c|2;k[d>>2]=c}j[f>>1]=e&65535|h;c=c>>>3&1}while(0);r=n;return c|0}function rs(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=k[(k[a+12>>2]|0)+4>>2]|0;c=j[a+48>>1]|0;if(!(c<<16>>16)){b=0;c=0}else{g=k[a+4>>2]|0;d=c&65535;e=0;b=0;do{c=j[g+(e<<1)>>1]|0;if(c<<16>>16<0)c=1;else c=l[f+((c<<16>>16)*24|0)+22>>0]|0;b=c+b|0;e=e+1|0}while((e|0)<(d|0));b=b<<2;c=0}b=ks(b,c)|0;j[a+44>>1]=b;return}function ss(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=k[a>>2]|0;d=g+24|0;f=k[d>>2]|0;k[d>>2]=f&-97|64;Is(a,b,0);if(!(k[a+64>>2]|0)){while(1){c=k[b+52>>2]|0;if(!c){e=b;break}else b=c}k[d>>2]=f;b=rh(g,76,0)|0;if(b){c=b+0|0;d=c+76|0;do{i[c>>0]=0;c=c+1|0}while((c|0)<(d|0));j[b+40>>1]=1;k[b>>2]=0;j[b+28>>1]=200;nu(a,k[e>>2]|0,b+38|0,b+4|0);ou(a,b,e);j[b+36>>1]=-1;if(i[g+65>>0]|0){pg(g,b);b=0}}else b=0}else b=0;return b|0}function ts(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;d=k[b>>2]|0;e=i[c>>0]|0;a:do if(!(e<<24>>24)){g=0;f=0}else{g=e;h=0;while(1){f=h+1|0;if(!(g<<24>>24==95?1:(i[10368+(g&255)>>0]&6)!=0)){f=h;break a}g=i[c+f>>0]|0;if(!(g<<24>>24)){g=0;break}else h=f}}while(0);if((((e&255)+-48|0)>>>0>=10?(ki(c,f)|0)==27:0)?!((f|0)==0|g<<24>>24!=0):0)j=0;else{i[a+d>>0]=34;j=1;e=i[c>>0]|0;d=d+1|0}if(e<<24>>24){f=c;h=0;do{g=d+1|0;i[a+d>>0]=e;if((i[f>>0]|0)==34){i[a+g>>0]=34;d=d+2|0}else d=g;h=h+1|0;f=c+h|0;e=i[f>>0]|0}while(e<<24>>24!=0)}if(j){i[a+d>>0]=34;d=d+1|0}i[a+d>>0]=0;k[b>>2]=d;return}function us(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+20|0;d=i[c>>0]|0;if(d<<24>>24==2?(k[b+4>>2]&1|0)!=0:0){i[c>>0]=0;c=2}else e=4;a:do if((e|0)==4)switch(l[b>>0]|0|0){case 135:if(d<<24>>24==4){i[c>>0]=0;c=2;break a}else if(d<<24>>24==5){i[b>>0]=101;c=0;break a}else{c=0;break a}case 153:{if((d&255)>3){c=0;break a}if(k[b+4>>2]&524288){c=0;break a}i[c>>0]=0;c=2;break a}case 156:case 155:case 154:case 27:{if(d<<24>>24==3?(k[b+28>>2]|0)==(k[a+24>>2]|0):0){c=0;break a}i[c>>0]=0;c=2;break a}default:{c=0;break a}}while(0);return c|0}function vs(a,b){a=a|0;b=b|0;i[a+20>>0]=0;return 2}function ws(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if(!b)b=0;else{c=wc[k[a>>2]&127](a,b)|0;do if((c|0)==0?(d=b+4|0,(k[d>>2]&16384|0)==0):0){if(ws(a,k[b+12>>2]|0)|0){b=2;break a}if(ws(a,k[b+16>>2]|0)|0){b=2;break a}b=b+20|0;if(!(k[d>>2]&2048))if(!(qu(a,k[b>>2]|0)|0))break;else{b=2;break a}else if(!(pu(a,k[b>>2]|0)|0))break;else{b=2;break a}}while(0);b=c&2}while(0);return b|0}function xs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;do if(b){if(c){if((ru(b)|0)==0?(ru(c)|0)==0:0){d=rh(a,48,0)|0;if(d){e=d+0|0;f=e+48|0;do{i[e>>0]=0;e=e+1|0}while((e|0)<(f|0));i[d>>0]=72;j[d+34>>1]=-1;k[d+24>>2]=1}ys(a,d,b,c);b=d;break}Lk(a,b);Lk(a,c);b=sr(a,132,20616,0)|0}}else b=c;while(0);return b|0}function ys(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!b){Lk(a,c);Lk(a,d)}else{if(d){k[b+16>>2]=d;a=b+4|0;k[a>>2]=k[a>>2]|k[d+4>>2]&2097408}if(c){k[b+12>>2]=c;a=b+4|0;k[a>>2]=k[a>>2]|k[c+4>>2]&2097408}Nt(b)}return}function zs(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,l=0;f=b<<16>>16;h=(f<<2)+63&-8;i=f<<1;l=i+2|0;g=(f+7+i+l&-8)+h|0;e=g+c|0;c=rh(a,e,((e|0)<0)<<31>>31)|0;if(c){kw(c|0,0,e|0)|0;k[c+32>>2]=c+56;k[c+8>>2]=c+h;e=h+l|0;k[c+4>>2]=c+e;k[c+28>>2]=c+(e+i);j[c+48>>1]=b;j[c+46>>1]=f+65535;k[d>>2]=c+g}return c|0}function As(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,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;if((r|0)>=(s|0))ka();t=z;n=k[b+12>>2]|0;l=a+68|0;w=k[l>>2]|0;y=w+1|0;k[l>>2]=w+2;j=k[a>>2]|0;g=k[b+24>>2]|0;a:do if(g){e=k[j+20>>2]|0;if((e|0)>0){d=k[j+16>>2]|0;h=0;while(1){f=h+1|0;if((k[d+(h<<4)+12>>2]|0)==(g|0)){f=h;break a}if((f|0)<(e|0))h=f;else break}}else f=0}else f=-1e6;while(0);if((Xq(a,27,k[b>>2]|0,0,k[(k[j+16>>2]|0)+(f<<4)>>2]|0)|0)==0?(ls(a,f,k[n+32>>2]|0,1,k[n>>2]|0),x=Tq(a)|0,(x|0)!=0):0){if((c|0)>-1)o=c;else o=k[b+40>>2]|0;u=ms(a,b)|0;v=k[l>>2]|0;k[l>>2]=v+1;q=b+46|0;e=m[q>>1]|0;if(u)k[u>>2]=(k[u>>2]|0)+1;Ch(x,Bh(x,58,v,0,e)|0,u,-6);Vq(a,w,f,n,54);j=Bh(x,108,w,0,0)|0;e=a+19|0;d=i[e>>0]|0;if(!(d<<24>>24)){n=a+72|0;p=(k[n>>2]|0)+1|0;k[n>>2]=p}else{p=d+-1<<24>>24;i[e>>0]=p;p=k[a+((p&255)<<2)+24>>2]|0}Ut(a,b,w,p,0,t,0,0)|0;Bh(x,109,v,p,0)|0;Vt(a,k[t>>2]|0);Bh(x,9,w,j+1|0,0)|0;n=x+32|0;h=k[n>>2]|0;if(h>>>0>j>>>0)k[(k[x+4>>2]|0)+(j*20|0)+8>>2]=h;g=x+24|0;k[(k[g>>2]|0)+88>>2]=h+-1;if((c|0)<0)Bh(x,118,o,f,0)|0;Ch(x,Bh(x,55,y,o,f)|0,u,-6);l=x+4|0;e=k[l>>2]|0;if(e)i[e+(((k[n>>2]|0)+-1|0)*20|0)+3>>0]=(c>>31)+4&252|1;j=Bh(x,106,v,0,0)|0;e=k[n>>2]|0;if((i[b+50>>0]|0)!=0&(u|0)!=0){h=e+3|0;Bh(x,16,0,h,0)|0;e=k[n>>2]|0;o=m[q>>1]|0;Ch(x,Bh(x,99,v,h,p)|0,o,-14);su(a,2,b)}Bh(x,100,v,p,y)|0;Bh(x,110,y,p,1)|0;d=k[l>>2]|0;if(d)i[d+(((k[n>>2]|0)+-1|0)*20|0)+3>>0]=16;ds(a,p);Bh(x,5,v,e,0)|0;d=k[n>>2]|0;if(d>>>0>j>>>0)k[(k[l>>2]|0)+(j*20|0)+8>>2]=d;k[(k[g>>2]|0)+88>>2]=d+-1;Bh(x,61,w,0,0)|0;Bh(x,61,y,0,0)|0;Bh(x,61,v,0,0)|0}r=z;return}function Bs(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,m=0,n=0,o=0,p=0;p=r;r=r+16|0;if((r|0)>=(s|0))ka();o=p;n=k[a>>2]|0;if(!c){c=bo(n,b,d,0)|0;if(!c)h=4;else h=3}else h=3;if((h|0)==3)if(!(k[c+12>>2]|0))h=4;else h=14;if((h|0)==4){f=b&255;e=n+224|0;if(k[e>>2]|0){g=ph(n,d)|0;if(g){vc[k[e>>2]&15](k[n+232>>2]|0,n,f,g);rg(n,g);h=7}}else h=7;if((h|0)==7?(m=n+228|0,(k[m>>2]|0)!=0):0){e=rh(n,40,0)|0;if(!e)e=0;else{g=e+0|0;f=g+40|0;do{i[g>>0]=0;g=g+1|0}while((g|0)<(f|0));j[e+8>>1]=1;k[e+32>>2]=n;ah(e,d,-1,1,0)|0}c=Xg(e,2)|0;if(c)vc[k[m>>2]&15](k[n+232>>2]|0,n,l[n+62>>0]|0,c);Rh(e)}c=bo(n,b,d,0)|0;if(!c)h=19;else h=14}a:do if((h|0)==14)if(!(k[c+12>>2]|0)){f=k[c>>2]|0;g=0;while(1){e=bo(n,i[26816+g>>0]|0,f,0)|0;g=g+1|0;if(k[e+12>>2]|0)break;if((g|0)>=3){h=19;break a}}k[c+0>>2]=k[e+0>>2];k[c+4>>2]=k[e+4>>2];k[c+8>>2]=k[e+8>>2];k[c+12>>2]=k[e+12>>2];k[c+16>>2]=0}while(0);if((h|0)==19){k[o>>2]=d;yh(a,26784,o);c=0}r=p;return c|0}function Cs(a){a=a|0;var b=0,c=0;a=k[a+24>>2]|0;c=a+108|0;b=k[c>>2]|0;k[c>>2]=b+1;if(!(b+-1&b)){c=a+112|0;a=$l(k[a>>2]|0,k[c>>2]|0,b<<3|4,0)|0;k[c>>2]=a}else a=k[a+112>>2]|0;if(a)k[a+(b<<2)>>2]=-1;return ~b|0}function Ds(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;if(b){d=k[b>>2]|0;if((d|0)>0){e=(d*72|0)+8|0;d=e;e=((e|0)<0)<<31>>31}else{d=80;e=0}d=rh(a,d,e)|0;if(d){e=k[b>>2]|0;k[d+4>>2]=e;k[d>>2]=e;if((k[b>>2]|0)>0){e=d+8|0;g=0;do{k[e+(g*72|0)>>2]=k[b+(g*72|0)+8>>2];h=ph(a,k[b+(g*72|0)+12>>2]|0)|0;k[e+(g*72|0)+4>>2]=h;h=ph(a,k[b+(g*72|0)+16>>2]|0)|0;k[e+(g*72|0)+8>>2]=h;h=ph(a,k[b+(g*72|0)+20>>2]|0)|0;k[e+(g*72|0)+12>>2]=h;i[e+(g*72|0)+36>>0]=i[b+(g*72|0)+44>>0]|0;k[e+(g*72|0)+40>>2]=k[b+(g*72|0)+48>>2];k[e+(g*72|0)+24>>2]=k[b+(g*72|0)+32>>2];k[e+(g*72|0)+28>>2]=k[b+(g*72|0)+36>>2];h=b+(g*72|0)+45|0;f=e+(g*72|0)+37|0;l=i[f>>0]&-3|i[h>>0]&2;i[f>>0]=l;l=l&-5|i[h>>0]&4;i[f>>0]=l;i[f>>0]=l&-9|i[h>>0]&8;l=ph(a,k[b+(g*72|0)+72>>2]|0)|0;k[e+(g*72|0)+64>>2]=l;i[f>>0]=i[f>>0]&-2|i[h>>0]&1;k[e+(g*72|0)+68>>2]=k[b+(g*72|0)+76>>2];f=k[b+(g*72|0)+24>>2]|0;k[e+(g*72|0)+16>>2]=f;if(f){f=f+40|0;j[f>>1]=(j[f>>1]|0)+1<<16>>16}l=lr(a,k[b+(g*72|0)+28>>2]|0,c)|0;k[e+(g*72|0)+20>>2]=l;l=Rr(a,k[b+(g*72|0)+52>>2]|0,c,0)|0;k[e+(g*72|0)+44>>2]=l;l=Sr(a,k[b+(g*72|0)+56>>2]|0)|0;k[e+(g*72|0)+48>>2]=l;l=b+(g*72|0)+64|0;h=k[l+4>>2]|0;f=e+(g*72|0)+56|0;k[f>>2]=k[l>>2];k[f+4>>2]=h;g=g+1|0}while((g|0)<(k[b>>2]|0))}}else d=0}else d=0;return d|0}function Es(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;g=Tq(a)|0;if((c|0)==2){j=k[a+408>>2]|0;i[((j|0)==0?a:j)+21>>0]=1}Ch(g,Bh(g,24,b,c,0)|0,d,e<<24>>24);if(f<<24>>24!=0?(h=k[g+4>>2]|0,(h|0)!=0):0)i[h+(((k[g+32>>2]|0)+-1|0)*20|0)+3>>0]=f;return}function Fs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=k[(k[(k[a>>2]|0)+16>>2]|0)+28>>2]|0;do if(!(i[a+438>>0]|0)){f=k[b+68>>2]|0;if((c|0)!=(f|0)?(d=k[c+48>>2]|0,(d|0)!=0):0){e=b+64|0;c=0;while(1){a=k[d+8>>2]|0;if((k[a+24>>2]|0)==(f|0)?(id(k[a+4>>2]|0,k[b>>2]|0)|0)==0:0){if(!c)c=k[e>>2]|0;k[a+32>>2]=c}else a=c;d=k[d>>2]|0;if(!d)break;else c=a}if(a)break}a=k[b+64>>2]|0}else a=0;while(0);return a|0}function Gs(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=k[b+32>>2]|0;j=b+8|0;h=b+68|0;e=0;while(1){f=(e|0)==0;b=f|(i|0)<(e|0)?i:0;c=k[j>>2]|0;if(!c)g=b;else{do{d=k[c+40>>2]|0;b=(f|(d|0)<(e|0))&(d|0)>(b|0)?d:b;c=k[c+20>>2]|0}while((c|0)!=0);g=b}if(!g)break;b=k[a>>2]|0;e=k[h>>2]|0;a:do if(e){f=k[b+20>>2]|0;if((f|0)>0){c=k[b+16>>2]|0;d=0;while(1){b=d+1|0;if((k[c+(d<<4)+12>>2]|0)==(e|0)){b=d;break a}if((b|0)<(f|0))d=b;else break}}else b=0}else b=-1e6;while(0);Jr(a,g,b);e=g}return}function Hs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;a:do if((b|0)!=0?(c=k[b>>2]|0,(c|0)>0):0){g=a+68|0;e=0;f=b+8|0;while(1){d=f+40|0;if((k[d>>2]|0)>-1)break a;h=k[g>>2]|0;k[g>>2]=h+1;k[d>>2]=h;d=k[f+20>>2]|0;if(d){Hs(a,k[d+32>>2]|0);c=k[b>>2]|0}e=e+1|0;if((e|0)>=(c|0))break;else f=f+72|0}}while(0);return}function Is(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;l=r;r=r+32|0;if((r|0)>=(s|0))ka();h=l;if(((b|0)!=0?(g=(k[a>>2]|0)+65|0,(i[g>>0]|0)==0):0)?(e=b+6|0,d=j[e>>1]|0,(d&32)==0):0){k[h+0>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;k[h+24>>2]=0;k[h>>2]=84;k[h+12>>2]=a;f=h+4|0;if(i[a+22>>0]|0){k[f>>2]=85;pu(h,b)|0;d=j[e>>1]|0}k[f>>2]=86;if(!(d&256))k[h+8>>2]=9;pu(h,b)|0;d=a+64|0;if((((k[d>>2]|0)==0?(i[g>>0]|0)==0:0)?(k[h+0>>2]=0,k[h+4>>2]=0,k[h+8>>2]=0,k[h+12>>2]=0,k[h+16>>2]=0,k[h+20>>2]=0,k[h>>2]=82,k[h+4>>2]=83,k[h+12>>2]=a,k[h+24>>2]=c,pu(h,b)|0,(k[d>>2]|0)==0):0)?(i[g>>0]|0)==0:0){k[h+0>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;k[h+24>>2]=0;k[h+8>>2]=10;k[h>>2]=84;k[h+12>>2]=a;pu(h,b)|0}}r=l;return}function Js(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if(a)do{c=k[a+36>>2]|0;if((c|0)!=0?(g=k[c+24>>2]|0,(g|0)>(k[b>>2]|0)):0)k[b>>2]=g;c=k[a+44>>2]|0;if((c|0)!=0?(d=k[c+24>>2]|0,(d|0)>(k[b>>2]|0)):0)k[b>>2]=d;c=k[a+60>>2]|0;if((c|0)!=0?(e=k[c+24>>2]|0,(e|0)>(k[b>>2]|0)):0)k[b>>2]=e;c=k[a+64>>2]|0;if((c|0)!=0?(f=k[c+24>>2]|0,(f|0)>(k[b>>2]|0)):0)k[b>>2]=f;yu(k[a>>2]|0,b);yu(k[a+40>>2]|0,b);yu(k[a+48>>2]|0,b);a=k[a+52>>2]|0}while((a|0)!=0);return}function Ks(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;e=k[b>>2]|0;f=e+c|0;if(f>>>0>(k[b+4>>2]|0)>>>0){g=wo(a,b,(f*72|0)+8|0,0)|0;if(g){do if(!a)b=qc[k[8744+48>>2]&127](g)|0;else{if((k[a+276>>2]|0)>>>0<=g>>>0?(k[a+280>>2]|0)>>>0>g>>>0:0){b=m[a+248>>1]|0;break}b=qc[k[8744+48>>2]&127](g)|0}while(0);k[g+4>>2]=(((b+-80|0)>>>0)/72|0)+1;b=g;e=k[g>>2]|0;h=10}}else h=10;if((h|0)==10){if((e|0)>(d|0)){do{e=e+-1|0;f=b+((e+c|0)*72|0)+8|0;a=b+(e*72|0)+8|0;g=f+72|0;do{k[f>>2]=k[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(g|0))}while((e|0)>(d|0));e=k[b>>2]|0}k[b>>2]=e+c;kw(b+(d*72|0)+8|0,0,c*72|0)|0;e=d+c|0;if((c|0)>0)do{k[b+(d*72|0)+48>>2]=-1;d=d+1|0}while((d|0)<(e|0))}return b|0}function Ls(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;if((b|0)!=0?(k[b>>2]|0)>0:0){e=b+4|0;f=k[e>>2]|0;g=0;do{h=Ms(a,k[f+(g*20|0)>>2]|0,c,d)|0;f=k[e>>2]|0;k[f+(g*20|0)>>2]=h;g=g+1|0}while((g|0)<(k[b>>2]|0))}return}function Ms(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;do if(b){if((i[b>>0]|0)==-102?(k[b+28>>2]|0)==(c|0):0){e=j[b+32>>1]|0;if(e<<16>>16<0){i[b>>0]=101;break}else{e=Rr(a,k[(k[d+4>>2]|0)+((e<<16>>16)*20|0)>>2]|0,0,0)|0;Lk(a,b);b=e;break}}e=b+12|0;f=Ms(a,k[e>>2]|0,c,d)|0;k[e>>2]=f;e=b+16|0;f=Ms(a,k[e>>2]|0,c,d)|0;k[e>>2]=f;e=b+20|0;if(!(k[b+4>>2]&2048)){Ls(a,k[e>>2]|0,c,d);break}else{zu(a,k[e>>2]|0,c,d);break}}else b=0;while(0);return b|0}function Ns(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=k[k[b>>2]>>2]|0;d=b;f=1;while(1){b=k[d+52>>2]|0;if(!b){e=5;break}if((k[k[b>>2]>>2]|0)==(e|0)){d=b;f=f+1|0}else{e=3;break}}a:do if((e|0)==3){Os(a,b);b=1}else if((e|0)==5)if(!d)b=0;else{g=((f|0)<0)<<31>>31;e=0;while(1){h=d+52|0;k[h>>2]=0;b=nr(a,d,c)|0;k[h>>2]=e;if(b)break a;b=d+24|0;k[b>>2]=f;k[b+4>>2]=g;b=k[d+56>>2]|0;if(!b){b=0;break a}d=b;e=k[b+52>>2]|0}}while(0);return b|0}function Os(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+16|0;if((r|0)>=(s|0))ka();c=d;if(!(j[b+6>>1]&128)){b=l[b+4>>0]|0;if((b|0)==116)b=35320;else if((b|0)==118)b=35336;else if((b|0)==117)b=35352;else b=35360;k[c>>2]=b;yh(a,35232,c)}else yh(a,35184,c);r=d;return}function Ps(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,n=0,o=0,p=0,q=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;E=r;r=r+32|0;if((r|0)>=(s|0))ka();v=E;e=k[b+32>>2]|0;h=k[k[b>>2]>>2]|0;q=k[a+8>>2]|0;t=b+52|0;u=k[t>>2]|0;if(!(Xq(a,33,0,0,0)|0)){w=Cs(q)|0;Ts(a,b,w);x=b+60|0;y=k[x>>2]|0;z=b+64|0;A=k[z>>2]|0;B=b+8|0;n=k[B>>2]|0;C=b+12|0;o=k[C>>2]|0;k[z>>2]=0;k[x>>2]=0;k[C>>2]=0;k[B>>2]=0;B=b+48|0;C=k[B>>2]|0;f=k[e>>2]|0;a:do if((f|0)>0){g=0;while(1){if(i[e+(g*72|0)+45>>0]&8)break;g=g+1|0;if((g|0)>=(f|0)){l=0;break a}}l=k[e+(g*72|0)+48>>2]|0}else l=0;while(0);g=a+68|0;e=k[g>>2]|0;f=e+1|0;k[g>>2]=f;d=(C|0)!=0;if((i[b+4>>0]|0)==115){k[g>>2]=e+2;g=d?8:6}else{g=d?7:5;f=0}i[v>>0]=g;k[v+4>>2]=e;i[v+1>>0]=0;k[v+8>>2]=0;k[v+12>>2]=0;F=a+72|0;g=(k[F>>2]|0)+1|0;k[F>>2]=g;Bh(q,60,l,g,h)|0;if(d){h=Au(a,b)|0;Ch(q,Bh(q,57,e,(k[C>>2]|0)+2|0,0)|0,h,-6);k[v+16>>2]=C}else Bh(q,57,e,h,0)|0;if(f){f=Bh(q,57,f,0,0)|0;k[b+16>>2]=f;f=b+6|0;j[f>>1]=m[f>>1]|8}k[B>>2]=0;h=u+56|0;k[h>>2]=0;f=nr(a,u,v)|0;k[h>>2]=b;if(!f){h=Bh(q,108,e,w,0)|0;Bh(q,104,l,0,0)|0;if(d)Bh(q,47,e,(k[C>>2]|0)+1|0,g)|0;else Bh(q,102,e,g,0)|0;Bh(q,95,e,0,0)|0;f=Cs(q)|0;nt(q,o,f);Us(a,b,k[b>>2]|0,l,0,0,c,f,w);if(n)Bh(q,140,n,w,0)|0;d=q+24|0;g=k[d>>2]|0;e=~f;if((f|0)<0?(p=k[g+112>>2]|0,(p|0)!=0):0)k[p+(e<<2)>>2]=k[q+32>>2];f=q+32|0;k[g+88>>2]=(k[f>>2]|0)+-1;k[t>>2]=0;nr(a,b,v)|0;k[t>>2]=u;Bh(q,16,0,h,0)|0;d=k[d>>2]|0;e=~w;if((w|0)<0?(D=k[d+112>>2]|0,(D|0)!=0):0)k[D+(e<<2)>>2]=k[f>>2];k[d+88>>2]=(k[f>>2]|0)+-1}Sk(k[a>>2]|0,k[B>>2]|0);k[B>>2]=C;k[x>>2]=y;k[z>>2]=A}r=E;return}function Qs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=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,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=r;r=r+48|0;if((r|0)>=(s|0))ka();p=X+40|0;I=X+20|0;J=X;T=k[a>>2]|0;Q=k[a+8>>2]|0;S=Cs(Q)|0;P=Cs(Q)|0;U=b+4|0;K=i[U>>0]|0;V=b+52|0;W=k[V>>2]|0;t=b+48|0;f=k[t>>2]|0;e=k[f>>2]|0;N=K<<24>>24==116;a:do if(!N?(n=T+65|0,(i[n>>0]|0)==0):0){g=p+4|0;o=1;while(1){if((o|0)>(k[k[b>>2]>>2]|0)){M=e;q=14;break a}b:do if((e|0)>0){d=0;h=k[f+4>>2]|0;while(1){if((m[h+16>>1]|0)==(o|0))break b;d=d+1|0;if((d|0)<(e|0))h=h+20|0;else break}}else d=0;while(0);if((d|0)==(e|0)){k[p>>2]=0;k[g>>2]=0;d=sr(T,132,p,0)|0;if(!d){d=7;break a}F=d+4|0;k[F>>2]=k[F>>2]|1024;k[d+8>>2]=o;f=qr(a,f,d)|0;if(!f)f=0;else{j[(k[f+4>>2]|0)+(e*20|0)+16>>1]=o;e=e+1|0}}if(!(i[n>>0]|0))o=o+1|0;else{M=e;q=14;break}}}else{M=e;q=14}while(0);if((q|0)==14){H=rh(T,M<<2,0)|0;if(!H)F=0;else{if((M|0)>0){e=0;d=k[f+4>>2]|0;while(1){k[H+(e<<2)>>2]=(m[d+16>>1]|0)+-1;e=e+1|0;if((e|0)==(M|0))break;else d=d+20|0}}F=Au(a,b)|0}k[t>>2]=f;E=Ur(k[a>>2]|0,f,0)|0;n=W+48|0;k[n>>2]=E;if(!N){f=k[k[b>>2]>>2]|0;e=a+72|0;E=k[e>>2]|0;h=E+1|0;k[e>>2]=f+1+E;Bh(Q,25,0,h,0)|0;e=Ws(T,f,1)|0;if(e){if((f|0)>0){d=e+16|0;g=0;do{E=Xs(a,b,g)|0;k[e+(g<<2)+20>>2]=E;i[(k[d>>2]|0)+g>>0]=0;g=g+1|0}while((g|0)!=(f|0))}}else e=0}else{e=0;h=0}k[V>>2]=0;G=W+56|0;k[G>>2]=0;Bu(a,b,k[t>>2]|0,26880)|0;if(!(k[W+52>>2]|0))Bu(a,W,k[n>>2]|0,26880)|0;Ts(a,b,S);g=b+8|0;f=k[g>>2]|0;n=a+72|0;if((f|0)!=0&N){q=k[n>>2]|0;o=q+1|0;q=q+2|0;k[n>>2]=q;E=k[b+12>>2]|0;Bh(Q,33,(E|0)==0?f:E+1|0,o,0)|0;Bh(Q,33,o,q,0)|0}else{o=0;q=0}w=b+60|0;Lk(T,k[w>>2]|0);k[w>>2]=0;w=b+64|0;Lk(T,k[w>>2]|0);k[w>>2]=0;w=k[n>>2]|0;x=w+1|0;y=w+2|0;u=w+3|0;w=w+4|0;k[n>>2]=w;i[I>>0]=13;k[I+4>>2]=x;i[I+1>>0]=0;A=I+8|0;k[A>>2]=0;k[I+12>>2]=0;i[J>>0]=13;k[J+4>>2]=y;i[J+1>>0]=0;B=J+8|0;k[B>>2]=0;k[J+12>>2]=0;D=Q+32|0;p=Bh(Q,20,x,0,(k[D>>2]|0)+1|0)|0;k[W+8>>2]=o;n=a+468|0;E=k[n>>2]|0;nr(a,W,I)|0;Bh(Q,21,x,0,0)|0;o=k[D>>2]|0;if(o>>>0>p>>>0)k[(k[Q+4>>2]|0)+(p*20|0)+8>>2]=o;z=Q+24|0;k[(k[z>>2]|0)+88>>2]=o+-1;v=Bh(Q,20,y,0,o+1|0)|0;d=k[g>>2]|0;f=b+12|0;t=k[f>>2]|0;k[g>>2]=q;k[f>>2]=0;C=k[n>>2]|0;nr(a,b,J)|0;k[g>>2]=d;k[f>>2]=t;Bh(Q,21,y,0,0)|0;f=Cu(a,b,I,c,u,h,e,S)|0;t=(K+-115&255)<2;if(t)d=Cu(a,b,J,c,w,h,e,S)|0;else d=0;if((e|0)!=0?(g=(k[e>>2]|0)+-1|0,k[e>>2]=g,(g|0)==0):0)$c(e);h=K<<24>>24==118;if((K+-117&255)<2){q=S;e=S}else{q=Bh(Q,17,w,d,0)|0;e=Bh(Q,22,y,S,0)|0;Bh(Q,16,0,q,0)|0;n=W+24|0;g=b+24|0;o=g;n=ow(k[o>>2]|0,k[o+4>>2]|0,k[n>>2]|0,k[n+4>>2]|0)|0;k[g>>2]=n;k[g+4>>2]=L}if(h){p=b+24|0;g=p;I=k[g+4>>2]|0;n=W+24|0;o=k[n>>2]|0;n=k[n+4>>2]|0;if(I>>>0>n>>>0|((I|0)==(n|0)?(k[g>>2]|0)>>>0>o>>>0:0)){g=p;k[g>>2]=o;k[g+4>>2]=n;g=q}else g=q}else{g=Bh(Q,17,u,f,0)|0;Bh(Q,22,x,S,0)|0;Bh(Q,16,0,g,0)|0}p=Bh(Q,17,u,f,0)|0;Bh(Q,22,x,q,0)|0;Bh(Q,16,0,P,0)|0;do if(!N)if(h){q=p;p=p+1|0;break}else{q=Bh(Q,22,x,q,0)|0;Bh(Q,16,0,P,0)|0;break}else q=p;while(0);o=k[D>>2]|0;if(t)Bh(Q,17,w,d,0)|0;Bh(Q,22,y,g,0)|0;Bh(Q,16,0,P,0)|0;n=k[D>>2]|0;if(n>>>0>v>>>0)k[(k[Q+4>>2]|0)+(v*20|0)+8>>2]=n;k[(k[z>>2]|0)+88>>2]=n+-1;Bh(Q,22,x,e,0)|0;Bh(Q,22,y,g,0)|0;g=k[z>>2]|0;f=~P;if((P|0)<0?(O=k[g+112>>2]|0,(O|0)!=0):0)k[O+(f<<2)>>2]=k[D>>2];k[g+88>>2]=(k[D>>2]|0)+-1;Ch(Q,Bh(Q,41,0,0,0)|0,H,-15);Ch(Q,Bh(Q,42,k[A>>2]|0,k[B>>2]|0,M)|0,F,-6);e=k[Q+4>>2]|0;if(e)i[e+(((k[D>>2]|0)+-1|0)*20|0)+3>>0]=1;Bh(Q,43,p,q,o)|0;e=k[z>>2]|0;d=~S;if((S|0)<0?(R=k[e+112>>2]|0,(R|0)!=0):0)k[R+(d<<2)>>2]=k[D>>2];k[e+88>>2]=(k[D>>2]|0)+-1;if((i[c>>0]|0)==9){d=W;while(1){e=k[d+52>>2]|0;if(!e)break;else d=e}Ss(a,0,k[d>>2]|0)}d=k[V>>2]|0;if(d)Rk(T,d,1);k[V>>2]=W;k[G>>2]=b;Vs(a,l[U>>0]|0,E,C,0);d=0}r=X;return d|0}function Rs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;do if(!(k[a+4>>2]&1024)){c=l[a>>0]|0;if((c|0)==158){c=Rs(k[a+12>>2]|0,b)|0;break}else if((c|0)!=157){c=0;break}if(!(Rs(k[a+12>>2]|0,d)|0))c=0;else{k[b>>2]=0-(k[d>>2]|0);c=1}}else{k[b>>2]=k[a+8>>2];c=1}while(0);r=e;return c|0}function Ss(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=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+32|0;if((r|0)>=(s|0))ka();z=A;y=a+8|0;v=k[y>>2]|0;w=k[a>>2]|0;if(((i[a+450>>0]|0)==0?(f=a+16|0,!((i[f>>0]|0)!=0|(v|0)==0)):0)?(i[w+65>>0]|0)==0:0){i[f>>0]=1;f=k[w+24>>2]|0;u=(f&32|0)==0;nq(v,k[c>>2]|0);e=k[c>>2]|0;if((e|0)>0){t=c+4|0;q=(b|0)==0;n=(f&96|0)==0;o=(b|0)!=0;p=0;do{m=k[t>>2]|0;e=k[m+(p*20|0)>>2]|0;do if(e){f=k[m+(p*20|0)+4>>2]|0;if(f){oq(v,p,0,f,-1);break}f=i[e>>0]|0;if(f<<24>>24==-102){if(q)x=25}else if(!(f<<24>>24==-100&o))x=25;if((x|0)==25){x=0;f=k[m+(p*20|0)+8>>2]|0;if(!f){k[z>>2]=p+1;f=zh(w,34880,z)|0}else f=ph(w,f)|0;oq(v,p,0,f,75);break}l=j[e+32>>1]|0;f=l<<16>>16;h=k[b>>2]|0;a:do if((h|0)>0){d=k[e+28>>2]|0;g=0;while(1){e=g+1|0;if((k[b+(g*72|0)+48>>2]|0)==(d|0)){e=g;break a}if((e|0)<(h|0))g=e;else break}}else e=0;while(0);e=k[b+(e*72|0)+24>>2]|0;if(l<<16>>16<0)f=j[e+36>>1]|0;if((f|0)<0)f=20456;else f=k[(k[e+4>>2]|0)+(f*24|0)>>2]|0;if(n){oq(v,p,0,ph(w,k[m+(p*20|0)+8>>2]|0)|0,75);break}if(u){oq(v,p,0,f,-1);break}else{k[z>>2]=k[e>>2];k[z+4>>2]=f;oq(v,p,0,zh(w,27824,z)|0,75);break}}while(0);p=p+1|0;e=k[c>>2]|0}while((p|0)<(e|0))}f=k[y>>2]|0;k[z+4>>2]=b;k[z>>2]=a;if((e|0)>0){d=c+4|0;e=0;do{oq(f,e,1,Du(z,k[(k[d>>2]|0)+(e*20|0)>>2]|0,0)|0,-1);e=e+1|0}while((e|0)<(k[c>>2]|0))}}r=A;return}function Ts(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=r;r=r+16|0;if((r|0)>=(s|0))ka();e=m;g=b+8|0;if((k[g>>2]|0)==0?(ft(a),f=b+60|0,(k[f>>2]|0)!=0):0){i=a+72|0;j=(k[i>>2]|0)+1|0;k[i>>2]=j;k[g>>2]=j;l=Tq(a)|0;do if(Rs(k[f>>2]|0,e)|0){e=k[e>>2]|0;Bh(l,25,e,j,0)|0;if(!e){Bh(l,16,0,c,0)|0;break}if((e|0)>-1?(d=b+24|0,c=d,g=k[c+4>>2]|0,h=((e|0)<0)<<31>>31,g>>>0>h>>>0|((g|0)==(h|0)?(k[c>>2]|0)>>>0>e>>>0:0)):0){c=d;k[c>>2]=e;k[c+4>>2]=h}}else{Wq(a,k[f>>2]|0,j);Bh(l,38,j,0,0)|0;Bh(l,46,j,c,0)|0}while(0);e=k[b+64>>2]|0;if(e){h=k[i>>2]|0;c=h+1|0;k[b+12>>2]=c;k[i>>2]=h+2;Wq(a,e,c);Bh(l,38,c,0,0)|0;e=Bh(l,137,c,0,0)|0;Bh(l,25,0,c,0)|0;f=l+32|0;d=k[f>>2]|0;if(d>>>0>e>>>0)k[(k[l+4>>2]|0)+(e*20|0)+8>>2]=d;g=l+24|0;k[(k[g>>2]|0)+88>>2]=d+-1;d=h+2|0;Bh(l,89,j,c,d)|0;e=Bh(l,137,j,0,0)|0;Bh(l,25,-1,d,0)|0;d=k[f>>2]|0;if(d>>>0>e>>>0)k[(k[l+4>>2]|0)+(e*20|0)+8>>2]=d;k[(k[g>>2]|0)+88>>2]=d+-1}}r=m;return}function Us(a,b,c,d,e,f,g,h,j){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;var 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;F=k[a+8>>2]|0;A=i[g>>0]|0;u=A&255;w=g+4|0;D=k[w>>2]|0;if(!f)n=0;else n=l[f+1>>0]|0;if(!e)E=0;else E=(k[e>>2]|0)==0?0:e;z=(E|0)!=0;v=(n|0)!=0;if(!(z|v))nt(F,k[b+12>>2]|0,h);B=k[c>>2]|0;q=g+8|0;e=k[q>>2]|0;if(e){p=a+72|0;o=k[p>>2]|0;if((e+B|0)>(o|0)){k[p>>2]=o+B;C=e;x=0}else{C=e;x=0}}else{if(z){o=((i[E+24>>0]&1^1)&255)+(k[k[E>>2]>>2]|0)|0;C=a+72|0;p=o+(k[C>>2]|0)|0;k[C>>2]=p}else{p=k[a+72>>2]|0;o=0}C=p+1|0;k[q>>2]=C;k[a+72>>2]=p+B;x=o}k[g+12>>2]=B;do if((d|0)>-1){if((B|0)>0){p=0;do{Bh(F,47,d,p,p+C|0)|0;p=p+1|0}while((p|0)!=(B|0))}}else{if(A<<24>>24==9)o=1;else if(A<<24>>24==3)break;else o=A<<24>>24==13&1;gt(a,c,C,o)}while(0);if(v){o=l[f+1>>0]|0;if((o|0)==1)Eh(F,k[f+8>>2]|0);else if((o|0)==2){o=a+72|0;d=k[o>>2]|0;t=d+1|0;k[o>>2]=d+B;o=f+8|0;Eh(F,k[o>>2]|0);o=k[o>>2]|0;if((o|0)<0)o=(k[F+32>>2]|0)+-1|0;if(!(i[(k[F>>2]|0)+65>>0]|0))o=(k[F+4>>2]|0)+(o*20|0)|0;else o=29120;i[o>>0]=28;k[o+4>>2]=1;k[o+8>>2]=t;d=F+32|0;e=(k[d>>2]|0)+B|0;if((B|0)>0){p=c+4|0;o=B+-1|0;q=F+4|0;s=0;do{v=hu(a,k[(k[p>>2]|0)+(s*20|0)>>2]|0)|0;f=s+C|0;n=s+t|0;if((s|0)<(o|0))Bh(F,78,f,e,n)|0;else Bh(F,79,f,h,n)|0;Ch(F,-1,v,-4);r=k[q>>2]|0;if(r)i[r+(((k[d>>2]|0)+-1|0)*20|0)+3>>0]=-128;s=s+1|0}while((s|0)!=(B|0))}else o=B+-1|0;Bh(F,33,C,t,o)|0}else Eu(a,k[f+4>>2]|0,h,B,C);if(!E)nt(F,k[b+12>>2]|0,h)}a:do switch(u|0){case 12:case 14:case 6:case 5:{p=x+1|0;o=a+60|0;e=k[o>>2]|0;q=a+56|0;n=k[q>>2]|0;if((n|0)<(p|0)){y=a+72|0;e=k[y>>2]|0;k[y>>2]=e+p;e=e+1|0}else{k[o>>2]=e+p;k[q>>2]=n-p}n=e+x|0;Bh(F,49,C,B,n)|0;if(A<<24>>24==6){C=D+1|0;Ch(F,Bh(F,69,C,(k[F+32>>2]|0)+4|0,e)|0,0,-14);Bh(F,110,C,e,0)|0}if(z)Fu(a,E,b,n,1,x);else{n=a+19|0;f=i[n>>0]|0;if(!(f<<24>>24)){C=a+72|0;f=(k[C>>2]|0)+1|0;k[C>>2]=f}else{f=f+-1<<24>>24;i[n>>0]=f;f=k[a+((f&255)<<2)+24>>2]|0}Bh(F,74,D,f,0)|0;Bh(F,75,D,e,f)|0;n=k[F+4>>2]|0;if(n)i[n+(((k[F+32>>2]|0)+-1|0)*20|0)+3>>0]=8;ds(a,f)}it(a,e,p);if((k[q>>2]|0)<(p|0)){k[q>>2]=p;k[o>>2]=e;y=94}else y=94;break}case 11:{e=g+1|0;B=Gu(k[k[c+4>>2]>>2]|0,i[e>>0]|0)|0;i[e>>0]=B;if(z){Fu(a,E,b,C,1,x);break a}f=a+19|0;n=i[f>>0]|0;if(!(n<<24>>24)){B=a+72|0;f=(k[B>>2]|0)+1|0;k[B>>2]=f}else{B=n+-1<<24>>24;i[f>>0]=B;f=k[a+((B&255)<<2)+24>>2]|0}Ch(F,Bh(F,49,C,1,f)|0,e,1);it(a,C,1);Bh(F,110,D,f,0)|0;ds(a,f);y=94;break}case 2:{Bh(F,111,D,C,B)|0;y=94;break}case 3:{Bh(F,25,1,D,0)|0;y=94;break}case 10:{if(z)Fu(a,E,b,C,1,x);else y=95;break}case 9:case 13:{if(z){Fu(a,E,b,C,B,x);break a}if(A<<24>>24==13){Bh(F,22,k[w>>2]|0,0,0)|0;y=95;break a}else{Bh(F,35,C,B,0)|0;it(a,C,B);y=94;break a}}case 1:{n=a+19|0;f=i[n>>0]|0;if(!(f<<24>>24)){A=a+72|0;f=(k[A>>2]|0)+1|0;k[A>>2]=f}else{f=f+-1<<24>>24;i[n>>0]=f;f=k[a+((f&255)<<2)+24>>2]|0}Bh(F,49,C,B,f)|0;Bh(F,110,D,f,0)|0;ds(a,f);y=94;break}case 7:case 8:{r=k[g+16>>2]|0;d=k[r>>2]|0;n=a+19|0;f=i[n>>0]|0;if(!(f<<24>>24)){z=a+72|0;s=(k[z>>2]|0)+1|0;k[z>>2]=s}else{s=f+-1<<24>>24;i[n>>0]=s;s=k[a+((s&255)<<2)+24>>2]|0}t=d+2|0;u=a+60|0;e=k[u>>2]|0;v=a+56|0;n=k[v>>2]|0;if((n|0)<(t|0)){z=a+72|0;e=k[z>>2]|0;k[z>>2]=e+t;e=e+1|0}else{k[u>>2]=e+t;k[v>>2]=n-t}q=e+d|0;o=q+1|0;if(A<<24>>24==8){n=D+1|0;f=Bh(F,69,n,0,C)|0;Ch(F,f,B,-14);Bh(F,49,C,B,o)|0;Bh(F,110,n,o,0)|0;n=k[F+4>>2]|0;if(!n)p=f;else{i[n+(((k[F+32>>2]|0)+-1|0)*20|0)+3>>0]=16;p=f}}else{Bh(F,49,C,B,o)|0;p=0}if((d|0)>0){o=r+4|0;n=C+-1|0;f=0;do{Bh(F,34,n+(m[(k[o>>2]|0)+(f*20|0)+16>>1]|0)|0,f+e|0,0)|0;f=f+1|0}while((f|0)!=(d|0))}Bh(F,73,D,q,0)|0;Bh(F,49,e,t,s)|0;Bh(F,110,D,s,0)|0;if(p){n=k[F+32>>2]|0;if(n>>>0>p>>>0)k[(k[F+4>>2]|0)+(p*20|0)+8>>2]=n;k[(k[F+24>>2]|0)+88>>2]=n+-1}ds(a,s);it(a,e,t);if((k[v>>2]|0)<(t|0)){k[v>>2]=t;k[u>>2]=e;y=94}else y=94;break}default:y=94}while(0);if((y|0)==94?(E|0)==0:0)y=95;if((y|0)==95?(G=k[b+8>>2]|0,(G|0)!=0):0)Bh(F,140,G,j,0)|0;return}function Vs(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,j=0,l=0;l=r;r=r+16|0;if((r|0)>=(s|0))ka();j=l;if((i[a+450>>0]|0)==2){g=k[a+8>>2]|0;h=k[a>>2]|0;f=(e|0)!=0?35160:10360;if((b|0)==117)e=35352;else if((b|0)==116)e=35320;else if((b|0)==118)e=35336;else e=35360;k[j>>2]=c;k[j+4>>2]=d;k[j+8>>2]=f;k[j+12>>2]=e;e=zh(h,35120,j)|0;Ch(g,Bh(g,157,k[a+464>>2]|0,0,0)|0,e,-1)}r=l;return}function Ws(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=c+b|0;e=(d*5|0)+24|0;f=vg(e,0)|0;if(!f)i[a+65>>0]=1;else{kw(f|0,0,e|0)|0;k[f+16>>2]=f+20+(d<<2);j[f+6>>1]=b;j[f+8>>1]=c;i[f+4>>0]=i[a+62>>0]|0;k[f+12>>2]=a;k[f>>2]=1}return f|0}function Xs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=k[b+52>>2]|0;if(!((e|0)!=0?(d=Xs(a,e,c)|0,(d|0)!=0):0)){d=k[b>>2]|0;if((k[d>>2]|0)>(c|0))d=hu(a,k[(k[d+4>>2]|0)+(c*20|0)>>2]|0)|0;else d=0}return d|0}function Ys(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=(a|0)==0;d=(b|0)==0;a:do if(!(e&d))if(!(e|d)?(f=k[a>>2]|0,(f|0)==(k[b>>2]|0)):0)if((f|0)>0){a=k[a+4>>2]|0;d=k[b+4>>2]|0;e=0;while(1){if((i[a+(e*20|0)+12>>0]|0)!=(i[d+(e*20|0)+12>>0]|0)){d=1;break a}if(Hu(k[a+(e*20|0)>>2]|0,k[d+(e*20|0)>>2]|0,c)|0){d=1;break a}e=e+1|0;if((e|0)>=(f|0)){d=0;break}}}else d=0;else d=1;else d=0;while(0);return d|0}function Zs(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;e=k[a>>2]|0;l=k[b>>2]|0;j=Ws(e,l-c|0,d+1|0)|0;if((j|0)!=0&(l|0)>(c|0)){f=e+8|0;g=j+16|0;h=c;d=(k[b+4>>2]|0)+(c*20|0)|0;while(1){e=hu(a,k[d>>2]|0)|0;if(!e)e=k[f>>2]|0;b=h-c|0;k[j+(b<<2)+20>>2]=e;i[(k[g>>2]|0)+b>>0]=i[d+12>>0]|0;h=h+1|0;if((h|0)==(l|0))break;else d=d+20|0}}return j|0}function _s(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;var h=0,n=0,o=0,p=0,q=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,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,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,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;Ma=r;r=r+64|0;if((r|0)>=(s|0))ka();Ka=Ma;La=Ma+48|0;Ja=Ma+52|0;Y=Ma+28|0;Ha=a+8|0;da=k[Ha>>2]|0;Ia=k[a>>2]|0;k[Y+0>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[Y+16>>2]=0;if(!d)P=0;else P=(k[d>>2]|0)>63?0:d;Z=Y+8|0;k[Z>>2]=P;_=Ia+60|0;if(j[_>>1]&32)f=f&64511;d=k[b>>2]|0;a:do if((d|0)<=64){H=f&65535;K=(H&64|0)!=0;U=K?1:d;u=(U*80|0)+743&-16;h=u+72|0;d=rh(Ia,h,0)|0;Ga=(d|0)==0;if(!Ga)kw(d|0,0,h|0)|0;xa=Ia+65|0;if(i[xa>>0]|0){rg(Ia,d);d=0;break}ba=d+60|0;ca=d+64|0;k[ca>>2]=-1;k[ba>>2]=-1;ya=d+41|0;i[ya>>0]=U;k[d>>2]=a;za=d+4|0;k[za>>2]=b;$=d+8|0;k[$>>2]=P;k[d+12>>2]=e;Ba=Cs(da)|0;Aa=d+48|0;k[Aa>>2]=Ba;o=d+52|0;k[o>>2]=Ba;Ba=d+34|0;j[Ba>>1]=f;Ca=a+424|0;Da=d+56|0;k[Da>>2]=k[Ca>>2];Ea=d+68|0;k[Y>>2]=d;Fa=d+328|0;X=Y+4|0;k[X>>2]=Fa;S=Y+12|0;k[S>>2]=d+u;k[d+(u+48)>>2]=d+(u+56);j[d+(u+40)>>1]=0;j[d+(u+44)>>1]=3;k[d+(u+36)>>2]=0;k[Ea>>2]=0;k[Fa>>2]=d;k[d+332>>2]=0;va=d+340|0;k[va>>2]=0;k[d+344>>2]=8;wa=d+348|0;k[wa>>2]=d+352;Iu(Fa,c,72);y=(U|0)==0;if((k[d+340>>2]|0)>0){x=Ka+20|0;w=Ka+4|0;h=Ka+24|0;c=Fa;n=0;do{if(!y){c=k[(k[c+20>>2]|0)+(n*48|0)>>2]|0;k[Ka+0>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[Ka+16>>2]=0;k[Ka+20>>2]=0;i[x>>0]=2;k[Ka>>2]=78;k[w>>2]=79;k[h>>2]=0;ws(Ka,c)|0;c=k[X>>2]|0;if(i[x>>0]|0)ua=15}else ua=15;if((ua|0)==15){ua=0;lt(a,k[(k[c+20>>2]|0)+(n*48|0)>>2]|0,k[o>>2]|0,16);c=k[X>>2]|0;aa=(k[c+20>>2]|0)+(n*48|0)+20|0;j[aa>>1]=m[aa>>1]|4}n=n+1|0}while((n|0)<(k[c+12>>2]|0))}if(y){if(P)i[d+36>>0]=k[P>>2];if(H&1024)i[d+40>>0]=1}if((k[b>>2]|0)>0){u=0;do{O=k[b+(u*72|0)+48>>2]|0;aa=k[Ea>>2]|0;k[Ea>>2]=aa+1;k[Ea+(aa<<2)+4>>2]=O;u=u+1|0}while((u|0)<(k[b>>2]|0))}p=k[va>>2]|0;if((p|0)>0)do{p=p+-1|0;Ju(Fa,p)}while((p|0)>0);b:do if(!(i[xa>>0]|0)){aa=(H&1024|0)==0;c:do if(!aa){d:do if((k[b>>2]|0)==1){G=k[b+48>>2]|0;n=k[b+24>>2]|0;x=k[e>>2]|0;e:do if((x|0)>0){w=k[e+4>>2]|0;h=0;while(1){c=k[w+(h*20|0)>>2]|0;f:do if(!c)c=0;else while(1){y=k[c+4>>2]|0;if(!(y&4096))break f;if(!(y&262144))c=c+12|0;else c=k[(k[c+20>>2]|0)+4>>2]|0;c=k[c>>2]|0;if(!c){c=0;break}}while(0);do if((i[c>>0]|0)==-102){if((k[c+28>>2]|0)!=(G|0))break;if((j[c+32>>1]|0)<0)break e}while(0);h=h+1|0;if((h|0)>=(x|0)){ua=41;break}}}else ua=41;while(0);g:do if((ua|0)==41){c=k[n+8>>2]|0;if(!c)break d;o=e+4|0;n=n+4|0;while(1){if(i[c+50>>0]|0){C=c+46|0;h:do if(!(j[C>>1]|0))y=0;else{E=c+4|0;D=c+32|0;y=0;do{B=j[(k[E>>2]|0)+(y<<1)>>1]|0;if(!(Ku(Fa,G,B,-1,-1,2,c)|0)){h=k[(k[D>>2]|0)+(y<<2)>>2]|0;if((k[e>>2]|0)>0)x=0;else break h;i:while(1){z=k[(k[o>>2]|0)+(x*20|0)>>2]|0;j:do if(!z)w=0;else{w=z;while(1){A=k[w+4>>2]|0;if(!(A&4096))break j;if(!(A&262144))w=w+12|0;else w=k[(k[w+20>>2]|0)+4>>2]|0;w=k[w>>2]|0;if(!w){w=0;break}}}while(0);do if((i[w>>0]|0)==-102){if((j[w+32>>1]|0)!=(j[(k[E>>2]|0)+(y<<1)>>1]|0))break;if((k[w+28>>2]|0)!=(G|0))break;w=hu(a,z)|0;if(!w)break;if(!(id(k[w>>2]|0,h)|0))break i}while(0);x=x+1|0;if((x|0)>=(k[e>>2]|0))break h}if((x|0)<0)break h;if(!(i[(k[n>>2]|0)+(B*24|0)+20>>0]|0))break h}y=y+1|0}while((y|0)<(m[C>>1]|0))}while(0);if((y|0)==(m[C>>1]|0))break g}c=k[c+20>>2]|0;if(!c)break d}}while(0);i[d+40>>0]=1;break c}while(0);if(!P){j[Ba>>1]=m[Ba>>1]|512;k[$>>2]=e}}while(0);k:do if((((U|0)==1?(W=k[Y>>2]|0,V=W+34|0,(j[V>>1]&32)==0):0)?(R=k[W+4>>2]|0,N=k[R+24>>2]|0,(i[N+44>>0]&16)==0):0)?(k[R+72>>2]|0)==0:0){P=k[R+48>>2]|0;z=W+328|0;O=k[S>>2]|0;G=O+36|0;k[G>>2]=0;j[O+42>>1]=0;v=Ku(z,P,-1,0,0,2,0)|0;l:do if(!v){x=k[N+8>>2]|0;m:do if(x){A=O+48|0;n:while(1){do if(i[x+50>>0]|0){if(k[x+36>>2]|0)break;w=x+46|0;c=j[w>>1]|0;if((c&65535)>3)break;o=x+4|0;o:do if(!(c<<16>>16)){c=0;y=0}else{y=0;while(1){c=Ku(z,P,j[(k[o>>2]|0)+(y<<1)>>1]|0,0,0,2,x)|0;if(!c)break;k[(k[A>>2]|0)+(y<<2)>>2]=c;y=y+1|0;c=j[w>>1]|0;if((y|0)>=(c&65535|0))break o}c=j[w>>1]|0}while(0);if((y|0)==(c&65535|0)){A=y;break n}}while(0);x=k[x+20>>2]|0;if(!x)break m}k[G>>2]=4609;if(!(i[x+51>>0]&32)){n=R+64|0;h=k[n>>2]|0;n=k[n+4>>2]|0;w=0;v=0;c=m[x+48>>1]|0;p:while(1){y=c;while(1){c=y+-1|0;if((y|0)<=0)break p;y=j[(k[o>>2]|0)+(c<<1)>>1]|0;if((y&65535)<63)break;else y=c}Y=nw(1,0,y<<16>>16|0)|0;w=Y|w;v=L|v}if((h&~w|0)==0&(n&~v|0)==0)ua=91}else ua=91;if((ua|0)==91)k[G>>2]=4673;Y=A&65535;j[O+40>>1]=Y;j[O+24>>1]=Y;k[O+28>>2]=x;j[O+20>>1]=39;break l}while(0);if(!(k[G>>2]|0)){ua=103;break k}}else{k[G>>2]=4353;k[k[O+48>>2]>>2]=v;j[O+40>>1]=1;j[O+24>>1]=1;j[O+20>>1]=33}while(0);j[O+22>>1]=1;k[W+800>>2]=O;o=k[W+68>>2]|0;q:do if((o|0)>0){p=0;while(1){if((k[W+(p<<2)+72>>2]|0)==(P|0))break;p=p+1|0;if((p|0)>=(o|0)){p=0;o=0;break q}}p=nw(1,0,p|0)|0;o=L}else{p=0;o=0}while(0);n=O+8|0;k[n>>2]=p;k[n+4>>2]=o;k[W+740>>2]=P;j[W+32>>1]=1;n=k[W+8>>2]|0;if(n)i[W+36>>0]=k[n>>2];if(!(j[V>>1]&1024)){ua=120;break}i[W+40>>0]=1;ua=120}else ua=103;while(0);if((ua|0)==103){C=k[Y>>2]|0;c=k[C+4>>2]|0;D=k[k[C>>2]>>2]|0;W=i[C+41>>0]|0;E=W&255;w=k[S>>2]|0;k[w+48>>2]=w+56;j[w+40>>1]=0;j[w+44>>1]=3;k[w+36>>2]=0;h=D+65|0;r:do if(W<<24>>24){n=w+16|0;o=C+68|0;p=w+8|0;q=0;t=0;u=0;v=0;B=0;A=c+8|0;z=0;while(1){i[n>>0]=B;y=k[A+40>>2]|0;x=k[o>>2]|0;s:do if((x|0)>0){c=0;while(1){if((k[C+(c<<2)+72>>2]|0)==(y|0))break;c=c+1|0;if((c|0)>=(x|0)){c=0;y=0;break s}}c=nw(1,0,c|0)|0;y=L}else{c=0;y=0}while(0);W=p;k[W>>2]=c;k[W+4>>2]=y;W=z;z=i[A+36>>0]|0;W=((z|W)&10)==0;t=W?t:q;v=W?v:u;if(!(i[(k[A+16>>2]|0)+44>>0]&16))c=Mu(Y,t,v)|0;else c=Lu(Y,t,v)|0;if(c)break;W=Nu(Y,t,v)|0;c=p;if(W)break;if(i[h>>0]|0)break r;B=B+1|0;if((B|0)>=(E|0))break r;else{q=k[c>>2]|q;u=k[c+4>>2]|u;A=A+72|0}}Ou(D,w);break b}while(0);Ou(D,w);Pu(d,0);if(i[xa>>0]|0)break;if(k[$>>2]|0){Pu(d,(m[d+32>>1]|0)+1&65535);if(!(i[xa>>0]|0))ua=120;else break}else ua=121}if((ua|0)==120?(k[$>>2]|0)==0:0)ua=121;if((ua|0)==121?(k[Ia+24>>2]&131072|0)!=0:0){$=d+24|0;k[$>>2]=-1;k[$+4>>2]=-1}if((k[a+64>>2]|0)==0?(i[xa>>0]|0)==0:0){u=i[ya>>0]|0;t:do if((u&255)>1&(e|0)!=0?(j[_>>1]&1024)==0:0){n=Qu(Ea,e)|0;o=L;h=k[Z>>2]|0;if(h){$=Qu(Ea,h)|0;n=$|n;o=L|o}y=d+736|0;c=k[za>>2]|0;x=k[X>>2]|0;w=x+20|0;x=x+12|0;v=u;h=U;do{p=k[y+(((v&255)+-1|0)*80|0)+64>>2]|0;if(!(i[c+((l[p+16>>0]|0)*72|0)+44>>0]&8))break t;if(aa?(k[p+36>>2]&4096|0)==0:0)break t;t=p+8|0;q=k[t>>2]|0;t=k[t+4>>2]|0;if(!((q&n|0)==0&(t&o|0)==0))break t;p=k[w>>2]|0;$=k[x>>2]|0;u=p+($*48|0)|0;if(($|0)>0)do{$=p+40|0;if(!((q&k[$>>2]|0)==0?(t&k[$+4>>2]|0)==0:0)?(k[(k[p>>2]|0)+4>>2]&1|0)==0:0)break t;p=p+48|0}while(p>>>0>>0);v=v+-1<<24>>24;i[ya>>0]=v;h=h+-1|0}while((v&255)>1)}else h=U;while(0);aa=(k[d>>2]|0)+424|0;k[aa>>2]=(k[aa>>2]|0)+(j[d+32>>1]|0);do if((H&4|0)!=0?(T=(k[d+800>>2]|0)+36|0,Q=k[T>>2]|0,(Q&4096|0)!=0):0){i[d+38>>0]=1;if(i[(k[b+24>>2]|0)+44>>0]&32)break;k[T>>2]=Q&-65}while(0);ta=d+736|0;P=(h|0)>0;if(P){M=H&16;N=d+38|0;O=da+32|0;I=K^1;K=(g|0)==0|I;J=a+68|0;G=54-(H>>>12&1)|0;F=da+4|0;B=Ia+20|0;z=Ia+16|0;q=0;H=ta;while(1){A=l[H+44>>0]|0;C=b+(A*72|0)+24|0;o=k[C>>2]|0;c=k[o+68>>2]|0;u:do if(!c)w=-1e6;else{y=k[B>>2]|0;if((y|0)<=0){w=0;break}x=k[z>>2]|0;n=0;while(1){w=n+1|0;if((k[x+(n<<4)+12>>2]|0)==(c|0)){w=n;break u}if((w|0)<(y|0))n=w;else break}}while(0);E=k[H+64>>2]|0;D=o+44|0;c=l[D>>0]|0;do if(!(c&2)){if(k[o+12>>2]|0)break;y=k[E+36>>2]|0;if(y&1024){v=k[o+60>>2]|0;v:do if(!v)v=0;else while(1){if((k[v>>2]|0)==(Ia|0))break v;v=k[v+24>>2]|0;if(!v){v=0;break}}while(0);Ch(da,Bh(da,149,k[b+(A*72|0)+48>>2]|0,0,0)|0,v,-10);break}if(c&16)break;if(y&64|M){ls(a,w,k[o+32>>2]|0,0,k[o>>2]|0);break}x=b+(A*72|0)+48|0;if(!(i[N>>0]|0))c=54;else{k[ba>>2]=k[x>>2];c=55}Vq(a,k[x>>2]|0,w,o,c);if(i[N>>0]|0)break;if((j[o+38>>1]|0)>=64)break;if(i[D>>0]&32)break;x=b+(A*72|0)+64|0;v=k[x>>2]|0;x=k[x+4>>2]|0;if((v|0)==0&(x|0)==0)u=0;else{u=0;do{v=rw(v|0,x|0,1)|0;x=L;u=u+1|0}while(!((v|0)==0&(x|0)==0))}Ch(da,(k[O>>2]|0)+-1|0,u,-14)}while(0);y=E+36|0;w:do if(k[y>>2]&512){c=k[E+28>>2]|0;do if(i[D>>0]&32){if((i[c+51>>0]&3)!=2|I)break;k[H+8>>2]=k[H+4>>2];break w}while(0);do if(!(i[N>>0]|0)){if(!K){u=g;t=G;break}u=k[J>>2]|0;k[J>>2]=u+1;t=54}else{t=k[(k[C>>2]|0)+8>>2]|0;if((t|0)==0|(t|0)==(c|0))u=g;else{u=g;do{u=u+1|0;t=k[t+20>>2]|0}while(!((t|0)==0|(t|0)==(c|0)))}k[ca>>2]=u;t=55}while(0);k[H+8>>2]=u;Bh(da,t,u,k[c+40>>2]|0,w)|0;aa=k[Ha>>2]|0;Ch(aa,-1,ms(a,c)|0,-6);aa=k[y>>2]|0;if(!((aa&15|0)!=0&(aa&32770|0)==0))break;if(j[Ba>>1]&1)break;p=k[F>>2]|0;if(!p)break;i[p+(((k[O>>2]|0)+-1|0)*20|0)+3>>0]=2}while(0);if((w|0)>-1)Fr(a,w);q=q+1|0;if((q|0)==(h|0))break;else H=H+80|0}ca=(i[xa>>0]|0)==0;k[d+44>>2]=k[O>>2];if(!ca)break}else{O=da+32|0;k[d+44>>2]=k[O>>2]}if(!P)break a;ga=d+24|0;ha=d+36|0;ia=d+39|0;ja=a+80|0;la=a+68|0;ma=a+100|0;na=a+19|0;oa=a+72|0;pa=Ka+20|0;qa=Ka+4|0;ra=Ka+24|0;o=-1;n=-1;sa=0;while(1){V=ta+(sa*80|0)|0;c=ta+(sa*80|0)+64|0;X=ta+(sa*80|0)+44|0;if(k[(k[c>>2]|0)+36>>2]&16384){G=l[X>>0]|0;R=b+(G*72|0)+8|0;W=k[Ha>>2]|0;v=Tq(a)|0;Y=k[ja>>2]|0;k[ja>>2]=Y+1;Y=Bh(v,44,Y,0,0)|0;v=k[b+(G*72|0)+24>>2]|0;ca=k[va>>2]|0;y=k[wa>>2]|0;Q=y+(ca*48|0)|0;I=k[c>>2]|0;x:do if((ca|0)>0){w=b+(G*72|0)+48|0;q=v+4|0;t=I+48|0;C=0;z=0;x=0;p=0;B=0;while(1){A=k[y>>2]|0;ca=I;do if((k[ca>>2]|0)==0&(k[ca+4>>2]|0)==0){if(j[y+20>>1]&2)break;if(k[A+4>>2]&1)break;ca=k[w>>2]|0;k[Ka+0>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[Ka+16>>2]=0;k[Ka+20>>2]=0;i[pa>>0]=3;k[Ka>>2]=78;k[qa>>2]=79;k[ra>>2]=ca;ws(Ka,A)|0;if(!(i[pa>>0]|0))break;ca=k[a>>2]|0;p=xs(ca,p,Rr(ca,A,0,0)|0)|0}while(0);do if(!(Ru(y,R,o,n)|0)){E=C;A=z;c=x}else{A=k[y+12>>2]|0;if((A|0)>63){E=0;D=-2147483648}else{E=nw(1,0,A|0)|0;D=L}if(!(B<<24>>24)){B=k[(k[q>>2]|0)+(A*24|0)>>2]|0;k[Ka>>2]=k[v>>2];k[Ka+4>>2]=B;gd(284,33960,Ka);B=1}if(!((E&C|0)==0&(D&z|0)==0)){E=C;A=z;c=x;break}c=x+1|0;if(Su(k[a>>2]|0,I,c)|0)break x;k[(k[t>>2]|0)+(x<<2)>>2]=y;E=E|C;A=D|z}while(0);y=y+48|0;if(y>>>0>=Q>>>0){y=E;ua=207;break}else{C=E;z=A;x=c}}}else{A=0;y=0;c=0;p=0;ua=207}while(0);do if((ua|0)==207){ua=0;q=c&65535;j[I+40>>1]=q;j[I+24>>1]=q;q=I+36|0;k[q>>2]=16961;H=b+(G*72|0)+64|0;J=H;D=k[J+4>>2]|0;J=k[J>>2]&~y;M=D&((A|-2147483648)^2147483647);u=v+38|0;N=j[u>>1]|0;E=N<<16>>16;N=N<<16>>16>63?63:E;P=(N|0)>0;if(P){A=0;do{ca=nw(1,0,A|0)|0;c=(((ca&J|0)!=0|(L&M|0)!=0)&1)+c|0;A=A+1|0}while((A|0)!=(N|0))}if((D|0)<0)c=c+-63+E|0;K=c+1|0;F=zs(k[a>>2]|0,K&65535,0,La)|0;if(!F)break;k[I+28>>2]=F;k[F>>2]=33992;k[F+12>>2]=v;A=k[wa>>2]|0;if(A>>>0>>0){c=F+4|0;y=F+32|0;D=0;E=0;x=0;do{do if(Ru(A,R,o,n)|0){C=k[A+12>>2]|0;if((C|0)>63){B=0;z=-2147483648}else{B=nw(1,0,C|0)|0;z=L}if(!((B&D|0)==0&(z&E|0)==0))break;ca=k[A>>2]|0;j[(k[c>>2]|0)+(x<<1)>>1]=C;C=Tu(a,k[ca+12>>2]|0,k[ca+16>>2]|0)|0;if(!C)C=11152;else C=k[C>>2]|0;k[(k[y>>2]|0)+(x<<2)>>2]=C;D=B|D;E=z|E;x=x+1|0}while(0);A=A+48|0}while(A>>>0>>0)}else x=0;if(P){A=F+4|0;z=F+32|0;c=0;do{ca=nw(1,0,c|0)|0;if(!((ca&J|0)==0&(L&M|0)==0)){j[(k[A>>2]|0)+(x<<1)>>1]=c;k[(k[z>>2]|0)+(x<<2)>>2]=11152;x=x+1|0}c=c+1|0}while((c|0)!=(N|0))}do if((k[H+4>>2]|0)<0){if((j[u>>1]|0)<=63)break;c=F+4|0;y=F+32|0;w=63;do{j[(k[c>>2]|0)+(x<<1)>>1]=w;k[(k[y>>2]|0)+(x<<2)>>2]=11152;x=x+1|0;w=w+1|0}while((w|0)<(j[u>>1]|0))}while(0);j[(k[F+4>>2]|0)+(x<<1)>>1]=-1;k[(k[F+32>>2]|0)+(x<<2)>>2]=11152;A=k[la>>2]|0;k[la>>2]=A+1;y=ta+(sa*80|0)+8|0;k[y>>2]=A;Bh(W,56,A,K,0)|0;A=k[Ha>>2]|0;Ch(A,-1,ms(a,F)|0,-6);k[ma>>2]=(k[ma>>2]|0)+1;A=ta+(sa*80|0)+4|0;t=Bh(W,108,k[A>>2]|0,0,0)|0;x=(p|0)!=0;if(x){w=Cs(W)|0;lt(a,p,w,16);k[q>>2]=k[q>>2]|131072}else w=0;c=i[na>>0]|0;if(!(c<<24>>24)){q=(k[oa>>2]|0)+1|0;k[oa>>2]=q}else{q=c+-1<<24>>24;i[na>>0]=q;q=k[a+((q&255)<<2)+24>>2]|0}Ut(a,F,k[A>>2]|0,q,0,0,0,0)|0;Bh(W,110,k[y>>2]|0,q,0)|0;z=W+4|0;c=k[z>>2]|0;if(c)i[c+(((k[W+32>>2]|0)+-1|0)*20|0)+3>>0]=16;if(x){y=k[W+24>>2]|0;x=~w;do if((w|0)<0){c=k[y+112>>2]|0;if(!c)break;k[c+(x<<2)>>2]=k[W+32>>2]}while(0);k[y+88>>2]=(k[W+32>>2]|0)+-1}Bh(W,9,k[A>>2]|0,t+1|0,0)|0;c=k[z>>2]|0;y=k[W+32>>2]|0;if(c)i[c+((y+-1|0)*20|0)+3>>0]=3;if(y>>>0>t>>>0)k[c+(t*20|0)+8>>2]=y;c=W+24|0;k[(k[c>>2]|0)+88>>2]=y+-1;ds(a,q);gu(a);u=k[W+32>>2]|0;if(u>>>0>Y>>>0)k[(k[z>>2]|0)+(Y*20|0)+8>>2]=u;k[(k[c>>2]|0)+88>>2]=u+-1}while(0);Lk(k[a>>2]|0,p);if(i[xa>>0]|0)break b}Uu(a,b,V,sa,l[X>>0]|0,f);k[ta+(sa*80|0)+32>>2]=k[O>>2];fa=k[d>>2]|0;K=fa+8|0;ba=k[K>>2]|0;da=k[fa>>2]|0;p=d+(sa*80|0)+736|0;J=k[d+(sa*80|0)+800>>2]|0;$=d+(sa*80|0)+780|0;G=l[$>>0]|0;E=k[za>>2]|0;N=E+(G*72|0)+8|0;g=k[E+(G*72|0)+48>>2]|0;y=k[Ea>>2]|0;y:do if((y|0)>0){c=0;while(1){if((k[Ea+(c<<2)+4>>2]|0)==(g|0))break;c=c+1|0;if((c|0)>=(y|0)){c=-1;y=-1;break y}}c=nw(1,0,c|0)|0;c=~c;y=~L}else{c=-1;y=-1}while(0);ea=d+(sa*80|0)+808|0;M=ea;k[M>>2]=c&o;k[M+4>>2]=y&n;M=ga;M=rw(k[M>>2]|0,k[M+4>>2]|0,sa|0)|0;_=M&1;T=J+36|0;if(!(k[T>>2]&64))v=0;else v=(j[Ba>>1]&32)==0;F=Cs(ba)|0;P=d+(sa*80|0)+752|0;k[P>>2]=F;aa=d+(sa*80|0)+748|0;k[aa>>2]=F;ca=Cs(ba)|0;k[d+(sa*80|0)+760>>2]=ca;do if(i[$>>0]|0){if(!(i[E+(G*72|0)+44>>0]&8))break;Z=fa+72|0;e=(k[Z>>2]|0)+1|0;k[Z>>2]=e;k[p>>2]=e;Bh(ba,25,0,e,0)|0}while(0);A=i[E+(G*72|0)+45>>0]|0;z:do if(!(A&4)){C=k[T>>2]|0;if(C&1024){q=j[J+40>>1]|0;t=q&65535;v=fa+100|0;k[v>>2]=(k[v>>2]|0)+1;v=t+2|0;F=fa+60|0;c=k[F>>2]|0;G=fa+56|0;y=k[G>>2]|0;if((y|0)<(v|0)){$=fa+72|0;u=k[$>>2]|0;k[$>>2]=u+v;u=u+1|0}else{k[F>>2]=c+v;k[G>>2]=y-v;u=c}c=k[aa>>2]|0;B=q<<16>>16==0;if(!B){D=u+2|0;C=J+48|0;E=0;do{A=D+E|0;z=k[(k[C>>2]|0)+(E<<2)>>2]|0;do if(z)if(!(j[z+18>>1]&1)){Wq(fa,k[(k[z>>2]|0)+16>>2]|0,A);break}else{Vu(fa,z,p,E,_,A)|0;c=k[P>>2]|0;break}while(0);E=E+1|0}while((E|0)<(t|0))}Bh(ba,25,k[J+24>>2]|0,u,0)|0;Bh(ba,25,t,u+1|0,0)|0;_=k[J+32>>2]|0;aa=J+28|0;$=(i[aa>>0]|0)!=0?-11:-2;Ch(ba,Bh(ba,14,g,c,u)|0,_,$);i[aa>>0]=0;if(!B){w=J+30|0;x=J+48|0;c=(q&65535)>1?0-t|0:-1;c=c>>>0>4294967280?0-c|0:16;y=0;do{if(m[w>>1]&1<>2]|0)+(y<<2)>>2]|0);y=y+1|0}while((y|0)!=(c|0))}i[d+(sa*80|0)+781>>0]=-105;k[d+(sa*80|0)+784>>2]=g;k[d+(sa*80|0)+788>>2]=k[ba+32>>2];it(fa,u,v);if((k[G>>2]|0)<(v|0)){k[G>>2]=v;k[F>>2]=u}gu(fa);ua=459;break}if(!((C&256|0)==0|(C&5|0)==0)){v=k[k[J+48>>2]>>2]|0;aa=fa+72|0;x=(k[aa>>2]|0)+1|0;k[aa>>2]=x;v=Vu(fa,v,p,0,_,x)|0;if((v|0)!=(x|0))ds(fa,x);ua=k[P>>2]|0;Bh(ba,38,v,ua,0)|0;Bh(ba,70,g,ua,v)|0;it(fa,v,1);Xu(fa,g,-1,v);i[d+(sa*80|0)+781>>0]=-100;ua=459;break}if((C&258|0)==258){if(!(C&32)){c=0;x=0}else{c=1;x=k[k[J+48>>2]>>2]|0}if(!(C&16))c=0;else c=k[(k[J+48>>2]|0)+(c<<2)>>2]|0;y=(_|0)!=0;w=y?x:c;c=y?c:x;if(!c)Bh(ba,y?105:108,g,F,0)|0;else{$=k[c>>2]|0;aa=eu(fa,k[$+16>>2]|0,Ka)|0;Bh(ba,l[33536+((l[$>>0]|0)+-80)>>0]|0,g,F,aa)|0;it(fa,aa,1);ds(fa,k[Ka>>2]|0);Wu(p,c)}if(!w){c=0;y=156}else{aa=k[w>>2]|0;$=fa+72|0;c=(k[$>>2]|0)+1|0;k[$>>2]=c;Wq(fa,k[aa+16>>2]|0,c);aa=i[aa>>0]|0;if(aa<<24>>24==80|aa<<24>>24==82)y=_<<1^83;else y=_<<1|80;Wu(p,w)}x=ba+32|0;aa=k[x>>2]|0;i[d+(sa*80|0)+781>>0]=_^9;k[d+(sa*80|0)+784>>2]=g;k[d+(sa*80|0)+788>>2]=aa;if((y|0)==156){ua=459;break}aa=fa+72|0;u=(k[aa>>2]|0)+1|0;k[aa>>2]=u;Bh(ba,103,g,u,0)|0;Xu(fa,g,-1,u);Bh(ba,y,c,F,u)|0;u=k[ba+4>>2]|0;if(!u){ua=459;break}i[u+(((k[x>>2]|0)+-1|0)*20|0)+3>>0]=83;ua=459;break}if(C&512){K=j[J+24>>1]|0;i[Ja>>0]=0;S=k[J+28>>2]|0;U=k[d+(sa*80|0)+744>>2]|0;do if(!(j[Ba>>1]&1)){D=0;A=0}else{if((i[ha>>0]|0)<=0){D=0;A=0;break}A=(m[S+46>>1]|0)>(K&65535);D=A&1;A=A&1}while(0);c=K&65535;if(!(C&32)){E=c;G=0}else{E=c+1|0;A=1;G=k[(k[J+48>>2]|0)+(c<<2)>>2]|0}do if(!(C&16))z=0;else{z=k[(k[J+48>>2]|0)+(E<<2)>>2]|0;if(j[z+20>>1]&256){$=fa+72|0;aa=(k[$>>2]|0)+1|0;k[$>>2]=aa;k[d+(sa*80|0)+772>>2]=aa;Bh(ba,25,(i[(k[S+28>>2]|0)+c>>0]|0)==1^_,aa,0)|0;k[d+(sa*80|0)+776>>2]=k[ba+32>>2]}if(G){A=1;break}A=j[(k[S+4>>2]|0)+(c<<1)>>1]|0;if(A<<16>>16<=-1){A=1;break}D=(i[(k[(k[S+12>>2]|0)+4>>2]|0)+((A<<16>>16)*24|0)+20>>0]|0)==0?1:D;A=1}while(0);I=Yu(fa,p,_,A,La)|0;H=k[La>>2]|0;F=(H|0)==0;if(!F)i[Ja>>0]=i[H+c>>0]|0;J=k[P>>2]|0;B=j[S+46>>1]|0;if((K&65535)<(B&65535)?!((i[(k[S+28>>2]|0)+c>>0]|0)==0^((M&1|0)!=0|0!=0)):0)ua=318;else if((_|0)!=0?B<<16>>16==K<<16>>16:0)ua=318;else{N=D;D=0;M=z;P=G}if((ua|0)==318){N=0;M=G;P=z}z=(P|0)!=0;if(z)B=(j[P+18>>1]&40)!=0;else B=1;C=B&1;G=(M|0)!=0;if(G)E=(j[M+18>>1]&40)!=0;else E=1;A=E&1;E=(z|K<<16>>16!=0)&1;do if(z){y=k[(k[P>>2]|0)+16>>2]|0;z=I+c|0;Wq(fa,y,z);if(j[P+20>>1]&256){if(!(i[(k[ba>>2]|0)+65>>0]|0))B=(k[ba+4>>2]|0)+(((k[ba+32>>2]|0)+-1|0)*20|0)|0;else B=29120;k[B+12>>2]=k[d+(sa*80|0)+772>>2];i[B+3>>0]=1}if(Zu(y)|0)Bh(ba,76,z,J,0)|0;do if(!F){B=H+c|0;if((Gu(y,i[B>>0]|0)|0)<<24>>24==65){i[B>>0]=65;z=65}else z=i[B>>0]|0;if(!(_u(y,z)|0))break;i[B>>0]=65}while(0);B=c+1|0}else{if(!(N<<24>>24)){B=c;break}Bh(ba,28,0,I+c|0,0)|0;B=c+1|0;C=0;E=1}while(0);$u(fa,I,B-(N&255)|0,H);Ch(ba,Bh(ba,l[33544+(E<<2|_|C<<1)>>0]|0,U,J,I)|0,B,-14);do if(G){y=k[(k[M>>2]|0)+16>>2]|0;x=I+c|0;it(fa,x,1);Wq(fa,y,x);if(j[M+20>>1]&256){if(!(i[(k[ba>>2]|0)+65>>0]|0))z=(k[ba+4>>2]|0)+(((k[ba+32>>2]|0)+-1|0)*20|0)|0;else z=29120;k[z+12>>2]=k[d+(sa*80|0)+772>>2];i[z+3>>0]=1}if(Zu(y)|0)Bh(ba,76,x,J,0)|0;do if((Gu(y,i[Ja>>0]|0)|0)<<24>>24!=65){if(_u(y,i[Ja>>0]|0)|0)break;$u(fa,x,1,Ja)}while(0);c=c+1|0}else{if(!(D<<24>>24))break;Bh(ba,28,0,I+c|0,0)|0;A=0;c=c+1|0}while(0);rg(da,H);k[d+(sa*80|0)+788>>2]=k[ba+32>>2];if(c)Ch(ba,Bh(ba,l[33552+(A|_<<1)>>0]|0,U,J,I)|0,c,-14);Wu(p,P);Wu(p,M);do if(!v){c=k[S+12>>2]|0;if(!(i[c+44>>0]&32)){$=fa+72|0;aa=(k[$>>2]|0)+1|0;k[$>>2]=aa;Bh(ba,112,U,aa,0)|0;Xu(fa,g,-1,aa);Bh(ba,66,g,aa,0)|0;break}if((g|0)==(U|0))break;c=k[c+8>>2]|0;A:do if(!c)A=0;else while(1){if((i[c+51>>0]&3)==2){A=c;break A}c=k[c+20>>2]|0;if(!c){A=0;break}}while(0);E=A+46|0;t=j[E>>1]|0;c=t&65535;y=fa+60|0;x=k[y>>2]|0;w=fa+56|0;q=k[w>>2]|0;if((q|0)<(c|0)){aa=fa+72|0;x=k[aa>>2]|0;k[aa>>2]=x+c;x=x+1|0}else{k[y>>2]=x+c;k[w>>2]=q-c}if(t<<16>>16){q=A+4|0;t=S+48|0;w=S+4|0;B=0;do{A=j[(k[q>>2]|0)+(B<<1)>>1]|0;c=j[t>>1]|0;B:do if(!(c<<16>>16))c=-1;else{z=k[w>>2]|0;y=c&65535;c=0;while(1){if((j[z+(c<<1)>>1]|0)==A<<16>>16)break B;c=c+1|0;if((c|0)>=(y|0)){c=-1;break}}}while(0);Bh(ba,47,U,c<<16>>16,B+x|0)|0;B=B+1|0;c=m[E>>1]|0}while((B|0)<(c|0))}Ch(ba,Bh(ba,68,g,ca,x)|0,c,-14)}while(0);x=k[T>>2]|0;do if(!(x&4096)){w=d+(sa*80|0)+781|0;if(!_){i[w>>0]=9;break}else{i[w>>0]=8;break}}else i[d+(sa*80|0)+781>>0]=-100;while(0);k[d+(sa*80|0)+784>>2]=U;i[d+(sa*80|0)+782>>0]=x>>>16&1;if(x&15){ua=459;break}i[d+(sa*80|0)+783>>0]=1;ua=459;break}if(!(C&8192))if(!(A&8)){i[d+(sa*80|0)+781>>0]=i[33560+_>>0]|0;k[d+(sa*80|0)+784>>2]=g;ua=(Bh(ba,l[33568+_>>0]|0,g,F,0)|0)+1|0;k[d+(sa*80|0)+788>>2]=ua;i[d+(sa*80|0)+783>>0]=1;ua=459;break}else{i[d+(sa*80|0)+781>>0]=-100;ua=459;break}F=fa+68|0;Z=k[F>>2]|0;k[F>>2]=Z+1;X=fa+72|0;Y=(k[X>>2]|0)+1|0;k[X>>2]=Y;_=Cs(ba)|0;W=k[E+(G*72|0)+24>>2]|0;e=k[k[J+48>>2]>>2]|0;P=k[e+12>>2]|0;i[d+(sa*80|0)+781>>0]=18;k[d+(sa*80|0)+784>>2]=Y;A=i[ya>>0]|0;do if((A&255)>1){E=(A&255)-sa|0;C=E+-1|0;B=rh(da,(C*72|0)+80|0,0)|0;if(!B)break z;A=E&255;k[B+4>>2]=A;k[B>>2]=A;A=B+8|0;G=A+0|0;z=N+0|0;c=G+72|0;do{k[G>>2]=k[z>>2];G=G+4|0;z=z+4|0}while((G|0)<(c|0));D=k[za>>2]|0;if((E|0)<2){V=B;break}else E=1;while(1){G=A+(E*72|0)+0|0;z=D+((l[d+((E+sa|0)*80|0)+780>>0]|0)*72|0)+8|0;c=G+72|0;do{k[G>>2]=k[z>>2];G=G+4|0;z=z+4|0}while((G|0)<(c|0));if((E|0)<(C|0))E=E+1|0;else{V=B;break}}}else V=k[za>>2]|0;while(0);if(!(j[Ba>>1]&8)){if(!(i[W+44>>0]&32)){A=(k[X>>2]|0)+1|0;k[X>>2]=A;Bh(ba,28,0,A,0)|0}else{A=k[W+8>>2]|0;C:do if(!A)A=0;else while(1){if((i[A+51>>0]&3)==2)break C;A=k[A+20>>2]|0;if(!A){A=0;break}}while(0);U=k[F>>2]|0;k[F>>2]=U+1;Bh(ba,57,U,m[A+46>>1]|0,0)|0;T=k[K>>2]|0;Ch(T,-1,ms(fa,A)|0,-6);A=U}T=(k[X>>2]|0)+1|0;k[X>>2]=T}else{T=0;A=0}U=Bh(ba,25,0,Y,0)|0;z=k[va>>2]|0;do if((z|0)>1){B=0;E=0;do{D=k[wa>>2]|0;S=D+(B*48|0)|0;C=k[S>>2]|0;do if((S|0)!=(e|0)){if(k[C+4>>2]&1)break;if(j[D+(B*48|0)+20>>1]&2)break;if(!(j[D+(B*48|0)+18>>1]&4095))break;E=xs(da,E,Rr(da,C,0,0)|0)|0;z=k[va>>2]|0}while(0);B=B+1|0}while((B|0)<(z|0));z=E;if(!z){S=0;break}S=cr(fa,72,0,z,0)|0}else S=0;while(0);R=P+12|0;do if((k[R>>2]|0)>0){u=P+20|0;t=(S|0)==0;q=W+44|0;w=ba+32|0;x=ba+4|0;z=ba+24|0;B=W+8|0;C=fa+60|0;D=fa+56|0;E=S+12|0;Q=0;y=0;c=0;v=240;while(1){G=k[u>>2]|0;if((k[G+(Q*48|0)+8>>2]|0)!=(g|0)?(j[G+(Q*48|0)+18>>1]&512)==0:0)G=v;else ua=407;do if((ua|0)==407){ua=0;G=k[G+(Q*48|0)>>2]|0;do if(!t){if(k[G+4>>2]&1)break;k[E>>2]=G;G=S}while(0);H=_s(fa,V,G,0,0,v,Z)|0;if(!H){G=v;break}Uu(fa,V,H+736|0,sa,l[$>>0]|0,0);do if(!(j[Ba>>1]&8)){K=(Q|0)==((k[R>>2]|0)+-1|0)?-1:Q;do if(!(i[q>>0]&32)){F=Bh(ba,130,A,0,ht(fa,W,-1,g,T,0)|0)|0;Ch(ba,F,K,-14)}else{G=k[B>>2]|0;D:do if(!G)G=0;else while(1){if((i[G+51>>0]&3)==2)break D;G=k[G+20>>2]|0;if(!G){G=0;break}}while(0);M=j[G+46>>1]|0;I=M&65535;P=k[C>>2]|0;N=k[D>>2]|0;if((N|0)<(I|0)){J=k[X>>2]|0;k[X>>2]=J+I;J=J+1|0}else{k[C>>2]=P+I;k[D>>2]=N-I;J=P}if(M<<16>>16){N=G+4|0;P=0;do{ht(fa,W,j[(k[N>>2]|0)+(P<<1)>>1]|0,g,P+J|0,0)|0;P=P+1|0}while((P|0)<(I|0))}P=(K|0)!=0;if(P){F=Bh(ba,69,A,0,J)|0;Ch(ba,F,I,-14);if((K|0)>-1)ua=426}else{F=0;ua=426}do if((ua|0)==426){ua=0;Bh(ba,49,J,I,T)|0;Bh(ba,110,A,T,0)|0;if(!P)break;K=k[x>>2]|0;if(!K)break;i[K+(((k[w>>2]|0)+-1|0)*20|0)+3>>0]=16}while(0);it(fa,J,I);if((k[D>>2]|0)>=(I|0))break;k[D>>2]=I;k[C>>2]=J}while(0);Bh(ba,17,Y,_,0)|0;if(!F)break;G=k[w>>2]|0;if(G>>>0>F>>>0)k[(k[x>>2]|0)+(F*20|0)+8>>2]=G;k[(k[z>>2]|0)+88>>2]=G+-1}else Bh(ba,17,Y,_,0)|0;while(0);c=(i[H+39>>0]|0)==0?c:1;G=k[H+800>>2]|0;do if(!(k[G+36>>2]&512)){y=0;G=v}else{if((Q|0)!=0?(k[G+28>>2]|0)!=(y|0):0){y=0;G=v;break}y=k[G+28>>2]|0;if((i[q>>0]&32)!=0?(i[y+51>>0]&3)==2:0){y=0;G=v;break}G=(v&65535|4096)&65535}while(0);at(H)}while(0);Q=Q+1|0;if((Q|0)>=(k[R>>2]|0))break;else v=G}k[d+(sa*80|0)+792>>2]=y;if(!y){q=c;break}k[d+(sa*80|0)+744>>2]=Z;q=c}else{k[d+(sa*80|0)+792>>2]=0;q=0}while(0);if(S){k[S+12>>2]=0;Lk(da,S)}w=ba+32|0;c=k[w>>2]|0;if(c>>>0>U>>>0)k[(k[ba+4>>2]|0)+(U*20|0)+4>>2]=c;Bh(ba,16,0,k[aa>>2]|0,0)|0;y=k[ba+24>>2]|0;x=~_;do if((_|0)<0){c=k[y+112>>2]|0;if(!c)break;k[c+(x<<2)>>2]=k[w>>2]}while(0);k[y+88>>2]=(k[w>>2]|0)+-1;if((l[ya>>0]|0)>1)rg(da,V);if(q){ua=459;break}Wu(p,e);ua=459}else{ua=k[E+(G*72|0)+36>>2]|0;Bh(ba,20,ua,0,k[E+(G*72|0)+32>>2]|0)|0;ua=Bh(ba,22,ua,F,0)|0;k[d+(sa*80|0)+788>>2]=ua;i[d+(sa*80|0)+781>>0]=16;ua=459}while(0);if((ua|0)==459){ua=0;c=k[va>>2]|0;do if((c|0)>0){u=d+(sa*80|0)+772|0;v=ba+32|0;z=ba+4|0;A=ba+24|0;t=k[wa>>2]|0;while(1){q=t+20|0;y=j[q>>1]|0;do if(!(y&6)){aa=t+40|0;$=ea;if(!((k[$>>2]&k[aa>>2]|0)==0?(k[$+4>>2]&k[aa+4>>2]|0)==0:0)){i[ia>>0]=1;break}x=k[t>>2]|0;if((k[p>>2]|0)!=0?(k[x+4>>2]&1|0)==0:0)break;do if(!(y&512))lt(fa,x,ca,16);else{w=Bh(ba,46,k[u>>2]|0,0,0)|0;lt(fa,x,ca,16);if(!w)break;y=k[v>>2]|0;if(y>>>0>w>>>0)k[(k[z>>2]|0)+(w*20|0)+8>>2]=y;k[(k[A>>2]|0)+88>>2]=y+-1}while(0);j[q>>1]=m[q>>1]|4}while(0);c=c+-1|0;if((c|0)<=0)break;else t=t+48|0}u=k[va>>2]|0;if((u|0)<=0){ua=475;break}w=k[wa>>2]|0;while(1){do if(!(j[w+20>>1]&6)){if((j[w+18>>1]|0)!=1026)break;if((k[w+8>>2]|0)!=(g|0))break;if(k[p>>2]|0)break;y=k[w>>2]|0;c=Ku(Fa,g,k[w+12>>2]|0,o,n,3,0)|0;if(!c)break;if(j[c+20>>1]&4)break;x=rh(da,48,0)|0;if(!x)break;G=x+0|0;z=(k[c>>2]|0)+0|0;c=G+48|0;do{k[G>>2]=k[z>>2];G=G+4|0;z=z+4|0}while((G|0)<(c|0));k[x+12>>2]=k[y+12>>2];lt(fa,x,ca,16);rg(da,x)}while(0);u=u+-1|0;if((u|0)<=0)break;else w=w+48|0}}else ua=475;while(0);if((ua|0)==475)ua=0;p=k[p>>2]|0;do if(p){k[d+(sa*80|0)+764>>2]=k[ba+32>>2];Bh(ba,25,1,p,0)|0;ft(fa);p=k[va>>2]|0;if((p|0)<=0)break;u=0;t=k[wa>>2]|0;while(1){o=t+20|0;do if(!(j[o>>1]&6)){ba=t+40|0;aa=ea;if(!((k[aa>>2]&k[ba>>2]|0)==0?(k[aa+4>>2]&k[ba+4>>2]|0)==0:0))break;lt(fa,k[t>>2]|0,ca,16);j[o>>1]=m[o>>1]|4;p=k[va>>2]|0}while(0);u=u+1|0;if((u|0)>=(p|0))break;else t=t+48|0}}while(0);n=ea;o=k[n>>2]|0;n=k[n+4>>2]|0}k[Aa>>2]=k[ta+(sa*80|0)+24>>2];sa=sa+1|0;if((sa|0)>=(h|0))break a}}}while(0);if(Ga)d=0;else{k[Ca>>2]=k[Da>>2];av(Ia,d);d=0}}else{k[Ka>>2]=64;yh(a,33504,Ka);d=0}while(0);r=Ma;return d|0}function $s(a){a=a|0;var b=0,c=0,d=0,e=0;e=a<<16>>16;do if(a<<16>>16>=10){a=(e|0)%10|0;b=((a|0)<0)<<31>>31;if(a>>>0>4){c=ow(a|0,b|0,-2,-1)|0;d=L}else{c=((a|0)!=0)<<31>>31;c=ow(c|0,((c|0)<0)<<31>>31|0,a|0,b|0)|0;d=L}b=((e|0)/10|0)<<16;a=b>>16;if((b|0)<=131072){b=ow(c|0,d|0,8,0)|0;a=rw(b|0,L|0,3-a|0)|0;b=L;break}if((b|0)>3932160){b=2147483647;a=-1}else{b=ow(c|0,d|0,8,0)|0;a=nw(b|0,L|0,a+-3|0)|0;b=L}}else{b=0;a=1}while(0);L=b;return a|0}function at(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=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;C=k[a>>2]|0;D=k[C+8>>2]|0;F=k[a+4>>2]|0;G=k[C>>2]|0;ft(C);H=a+41|0;c=i[H>>0]|0;if(!(c<<24>>24))b=D+24|0;else{b=D+24|0;p=D+32|0;r=D+4|0;o=c&255;do{o=o+-1|0;e=k[a+(o*80|0)+800>>2]|0;A=k[a+(o*80|0)+760>>2]|0;c=k[b>>2]|0;d=~A;if((A|0)<0?(s=k[c+112>>2]|0,(s|0)!=0):0)k[s+(d<<2)>>2]=k[p>>2];k[c+88>>2]=(k[p>>2]|0)+-1;B=a+(o*80|0)+781|0;d=i[B>>0]|0;if(d<<24>>24!=-100?(Bh(D,d&255,k[a+(o*80|0)+784>>2]|0,k[a+(o*80|0)+788>>2]|0,l[a+(o*80|0)+782>>0]|0)|0,u=k[r>>2]|0,(u|0)!=0):0)i[u+(((k[p>>2]|0)+-1|0)*20|0)+3>>0]=i[a+(o*80|0)+783>>0]|0;t=e+36|0;if((k[t>>2]&2048|0)!=0?(v=a+(o*80|0)+792|0,w=k[v>>2]|0,(w|0)>0):0){A=k[a+(o*80|0)+752>>2]|0;g=k[b>>2]|0;d=~A;if((A|0)<0?(x=k[g+112>>2]|0,(x|0)!=0):0){k[x+(d<<2)>>2]=k[p>>2];h=k[v>>2]|0;f=k[p>>2]|0;k[g+88>>2]=f+-1;c=a+(o*80|0)+796|0;if((h|0)>0)I=16}else{f=k[p>>2]|0;k[g+88>>2]=f+-1;c=a+(o*80|0)+796|0;h=w;I=16}if((I|0)==16){I=0;d=g;n=h;m=(k[c>>2]|0)+((h+-1|0)*12|0)|0;while(1){h=m+4|0;g=k[h>>2]|0;e=g+1|0;if(f>>>0>e>>>0)k[(k[r>>2]|0)+(e*20|0)+8>>2]=f;k[d+88>>2]=f+-1;Bh(D,l[m+8>>0]|0,k[m>>2]|0,g,0)|0;h=(k[h>>2]|0)+-1|0;f=k[p>>2]|0;if(f>>>0>h>>>0)k[(k[r>>2]|0)+(h*20|0)+8>>2]=f;d=k[b>>2]|0;k[d+88>>2]=f+-1;n=n+-1|0;if((n|0)<=0)break;else m=m+-12|0}}rg(G,k[c>>2]|0)}A=k[a+(o*80|0)+748>>2]|0;e=k[b>>2]|0;d=~A;if((A|0)<0?(q=k[e+112>>2]|0,(q|0)!=0):0)k[q+(d<<2)>>2]=k[p>>2];d=k[p>>2]|0;k[e+88>>2]=d+-1;e=a+(o*80|0)+756|0;c=k[e>>2]|0;if(c){Bh(D,16,0,c,0)|0;e=k[e>>2]|0;d=k[p>>2]|0;if(d>>>0>e>>>0)k[(k[r>>2]|0)+(e*20|0)+8>>2]=d;f=d+-1|0;c=(k[b>>2]|0)+88|0;k[c>>2]=f;e=e+-2|0;if(d>>>0>e>>>0)k[(k[r>>2]|0)+(e*20|0)+8>>2]=d;k[c>>2]=f}e=k[a+(o*80|0)+776>>2]|0;if(e){if(!(i[(k[D>>2]|0)+65>>0]|0))d=(k[r>>2]|0)+((((e|0)<1?d:e)+-1|0)*20|0)|0;else d=29120;Bh(D,(k[d+4>>2]|0)==0?141:140,k[a+(o*80|0)+772>>2]|0,e,0)|0}c=k[a+(o*80|0)+736>>2]|0;if(c){f=Bh(D,137,c,0,0)|0;c=k[t>>2]|0;if(!(c&64)){Bh(D,104,k[F+(o*72|0)+48>>2]|0,0,0)|0;c=k[t>>2]|0}if(c&512)Bh(D,104,k[a+(o*80|0)+744>>2]|0,0,0)|0;c=k[a+(o*80|0)+764>>2]|0;if((i[B>>0]|0)==18)Bh(D,17,k[a+(o*80|0)+784>>2]|0,c,0)|0;else Bh(D,16,0,c,0)|0;c=k[p>>2]|0;if(c>>>0>f>>>0)k[(k[r>>2]|0)+(f*20|0)+8>>2]=c;k[(k[b>>2]|0)+88>>2]=c+-1}}while((o|0)>0)}A=k[a+52>>2]|0;c=k[b>>2]|0;b=~A;if((A|0)<0?(y=k[c+112>>2]|0,(y|0)!=0):0)k[y+(b<<2)>>2]=k[D+32>>2];B=D+32|0;k[c+88>>2]=(k[B>>2]|0)+-1;if(i[H>>0]|0){u=a+34|0;v=a+38|0;w=a+64|0;x=G+65|0;y=D+4|0;z=0;A=a+736|0;while(1){e=l[A+44>>0]|0;f=k[F+(e*72|0)+24>>2]|0;d=k[A+64>>2]|0;if((i[F+(e*72|0)+45>>0]&4)!=0?(i[x>>0]|0)==0:0){g=k[B>>2]|0;d=k[A+32>>2]|0;if(!(i[(k[D>>2]|0)+65>>0]|0))c=(k[y>>2]|0)+(((d|0)<0?g+-1|0:d)*20|0)|0;else c=29120;if((d|0)<(g|0)){h=k[A+4>>2]|0;f=F+(e*72|0)+40|0;e=c;while(1){c=e+4|0;do if((k[c>>2]|0)==(h|0)){b=i[e>>0]|0;if(b<<24>>24==47){i[e>>0]=33;s=e+8|0;k[c>>2]=(k[f>>2]|0)+(k[s>>2]|0);t=e+12|0;k[s>>2]=k[t>>2];k[t>>2]=0;break}else if(b<<24>>24==103){i[e>>0]=28;k[c>>2]=0;k[e+12>>2]=0;break}else break}while(0);d=d+1|0;if((d|0)==(g|0))break;else e=e+20|0}}}else I=64;do if((I|0)==64){I=0;t=f+44|0;if(((i[t>>0]&2)==0?(k[f+12>>2]|0)==0:0)?(j[u>>1]&16)==0:0){c=k[d+36>>2]|0;if((i[v>>0]|0)==0&(c&64|0)==0)Bh(D,61,k[F+(e*72|0)+48>>2]|0,0,0)|0;if((c&17152|0)==512?(E=k[A+8>>2]|0,(E|0)!=(k[w>>2]|0)):0)Bh(D,61,E,0,0)|0}c=k[d+36>>2]|0;if(!(c&576)){if(!(c&8192))break;c=A+56|0}else c=d+28|0;d=k[c>>2]|0;if((d|0)!=0?(i[x>>0]|0)==0:0){r=k[B>>2]|0;h=k[A+32>>2]|0;if(!(i[(k[D>>2]|0)+65>>0]|0))g=(k[y>>2]|0)+(((h|0)<0?r+-1|0:h)*20|0)|0;else g=29120;if((h|0)<(r|0)){s=d+48|0;p=d+4|0;q=A+8|0;o=f+8|0;b=k[A+4>>2]|0;c=g;while(1){d=c+4|0;a:do if((k[d>>2]|0)==(b|0)){g=i[c>>0]|0;if(g<<24>>24==103){k[d>>2]=k[q>>2];i[c>>0]=112;break}else if(g<<24>>24!=47)break;e=c+8|0;g=k[e>>2]|0;if(i[t>>0]&32){f=o;while(1){f=k[f>>2]|0;if((i[f+51>>0]&3)==2)break;else f=f+20|0}g=j[(k[f+4>>2]|0)+(g<<1)>>1]|0}n=g&65535;g=j[s>>1]|0;if(g<<16>>16){f=k[p>>2]|0;m=g&65535;g=0;while(1){if((j[f+(g<<1)>>1]|0)==n<<16>>16)break;g=g+1|0;if((g|0)>=(m|0))break a}if((g&65535)<<16>>16>-1){k[e>>2]=g<<16>>16;k[d>>2]=k[q>>2]}}}while(0);h=h+1|0;if((h|0)==(r|0))break;else c=c+20|0}}}}while(0);z=z+1|0;if((z|0)>=(l[H>>0]|0))break;else A=A+80|0}}k[C+424>>2]=k[a+56>>2];av(G,a);return}function bt(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)!=0?(k[b>>2]|0)>0:0){c=0;d=k[b+4>>2]|0;while(1){bv(a,k[d>>2]|0);c=c+1|0;if((c|0)>=(k[b>>2]|0))break;else d=d+20|0}}return}function ct(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,t=0,u=0;u=r;r=r+16|0;if((r|0)>=(s|0))ka();p=u;d=k[a+24>>2]|0;q=k[d>>2]|0;g=k[d+4>>2]|0;t=k[d+12>>2]|0;c=l[b>>0]|0;a:do if((c|0)==154|(c|0)==156)if((g|0)!=0?(f=k[g>>2]|0,(f|0)>0):0){n=b+28|0;m=k[n>>2]|0;c=0;d=g+8|0;while(1){if((m|0)==(k[d+40>>2]|0))break;c=c+1|0;if((c|0)>=(f|0)){a=1;break a}else d=d+72|0}h=t+28|0;e=t+32|0;d=k[e>>2]|0;b:do if((d|0)>0){g=b+32|0;a=0;f=k[h>>2]|0;while(1){if((k[f+4>>2]|0)==(m|0)?(k[f+8>>2]|0)==(j[g>>1]|0):0)break b;a=a+1|0;if((a|0)<(d|0))f=f+24|0;else break}}else a=0;while(0);c:do if((a|0)>=(d|0)){d=Mt(k[q>>2]|0,k[h>>2]|0,24,e,p)|0;k[h>>2]=d;a=k[p>>2]|0;if((a|0)>-1){k[d+(a*24|0)>>2]=k[b+44>>2];e=k[n>>2]|0;k[d+(a*24|0)+4>>2]=e;f=j[b+32>>1]|0;k[d+(a*24|0)+8>>2]=f<<16>>16;n=q+72|0;g=(k[n>>2]|0)+1|0;k[n>>2]=g;k[d+(a*24|0)+16>>2]=g;g=d+(a*24|0)+12|0;k[g>>2]=-1;k[d+(a*24|0)+20>>2]=b;d=k[t+24>>2]|0;d:do if((d|0)!=0?(o=k[d>>2]|0,(o|0)>0):0){c=0;d=k[d+4>>2]|0;while(1){n=k[d>>2]|0;if(((i[n>>0]|0)==-102?(k[n+28>>2]|0)==(e|0):0)?(j[n+32>>1]|0)==f<<16>>16:0)break;c=c+1|0;if((c|0)>=(o|0))break d;else d=d+20|0}k[g>>2]=c;if((c|0)>=0)break c}while(0);n=t+12|0;o=k[n>>2]|0;k[n>>2]=o+1;k[g>>2]=o}}while(0);k[b+40>>2]=t;i[b>>0]=-100;j[b+34>>1]=a;a=1}else a=1;else if(((c|0)==155?(j[d+28>>1]&8)==0:0)?(k[a+16>>2]|0)==(l[b+38>>0]|0):0){f=t+40|0;g=t+44|0;c=k[g>>2]|0;e:do if((c|0)>0){a=0;d=k[f>>2]|0;while(1){if(!(Hu(k[d>>2]|0,b,-1)|0))break e;a=a+1|0;if((a|0)<(c|0))d=d+16|0;else break}}else a=0;while(0);do if((a|0)>=(c|0)){e=k[q>>2]|0;h=i[e+62>>0]|0;e=Mt(e,k[f>>2]|0,16,g,p)|0;k[f>>2]=e;a=k[p>>2]|0;if((a|0)>-1){k[e+(a<<4)>>2]=b;f=q+72|0;g=(k[f>>2]|0)+1|0;k[f>>2]=g;k[e+(a<<4)+8>>2]=g;g=k[q>>2]|0;f=k[b+8>>2]|0;if(!f)c=0;else{d=f;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;c=d-f&1073741823}d=k[b+20>>2]|0;if(!d)d=0;else d=k[d>>2]|0;o=Xh(g,f,c,d,h,0)|0;k[e+(a<<4)+4>>2]=o;if(!(k[b+4>>2]&16)){k[e+(a<<4)+12>>2]=-1;break}else{n=q+68|0;o=k[n>>2]|0;k[n>>2]=o+1;k[e+(a<<4)+12>>2]=o;break}}}while(0);j[b+34>>1]=a;k[b+40>>2]=t;a=1}else a=0;while(0);r=u;return a|0}function dt(a,b){a=a|0;b=b|0;return 0}function et(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=r;r=r+16|0;if((r|0)>=(s|0))ka();c=d;if((i[a+450>>0]|0)==2){e=k[a+8>>2]|0;f=k[a>>2]|0;k[c>>2]=b;c=zh(f,35e3,c)|0;Ch(e,Bh(e,157,k[a+464>>2]|0,0,0)|0,c,-1)}r=d;return}function ft(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=a+19|0;g=0;h=a+116|0;while(1){c=h+12|0;d=k[c>>2]|0;if(d){e=h+6|0;if(i[e>>0]|0){f=i[b>>0]|0;if((f&255)<8){i[b>>0]=f+1<<24>>24;k[a+((f&255)<<2)+24>>2]=d}i[e>>0]=0}k[c>>2]=0}g=g+1|0;if((g|0)==10)break;else h=h+20|0}return}function gt(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,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+32|0;if((r|0)>=(s|0))ka();x=z;e=d&255;o=34-(e&1)|0;t=k[b>>2]|0;if(!(i[a+23>>0]|0))d=e&253;if((t|0)>0){f=(d&2)==0;g=a+8|0;h=(o|0)==33;j=x+20|0;l=x+4|0;m=x+24|0;n=0;b=k[b+4>>2]|0;while(1){e=k[b>>2]|0;if(!f?(k[x+0>>2]=0,k[x+4>>2]=0,k[x+8>>2]=0,k[x+12>>2]=0,k[x+16>>2]=0,k[x+20>>2]=0,i[j>>0]=1,k[x>>2]=78,k[l>>2]=79,k[m>>2]=0,ws(x,e)|0,(i[j>>0]|0)!=0):0)Lt(a,e,n+c|0,0);else y=8;do if((y|0)==8?(y=0,p=n+c|0,q=ns(a,e,p)|0,(q|0)!=(p|0)):0){d=k[g>>2]|0;if(h){if(!(i[(k[d>>2]|0)+65>>0]|0))e=(k[d+4>>2]|0)+(((k[d+32>>2]|0)+-1|0)*20|0)|0;else e=29120;if(((i[e>>0]|0)==33?(u=e+12|0,v=k[u>>2]|0,((k[e+4>>2]|0)+1+v|0)==(q|0)):0)?(w=v+1|0,(w+(k[e+8>>2]|0)|0)==(p|0)):0){k[u>>2]=w;break}}Bh(d,o,q,p,0)|0}while(0);n=n+1|0;if((n|0)==(t|0))break;else b=b+20|0}}r=z;return}function ht(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,l=0,m=0,n=0;n=k[a+8>>2]|0;g=a+116|0;m=0;h=g;while(1){l=k[h+12>>2]|0;if(((l|0)>0?(k[h>>2]|0)==(d|0):0)?(j[h+4>>1]|0)==(c|0):0){e=l;m=5;break}m=m+1|0;if((m|0)>=10){m=10;break}else h=h+20|0}do if((m|0)==5){n=a+104|0;f=k[n>>2]|0;k[n>>2]=f+1;k[h+16>>2]=f;h=0;while(1){if((k[g+12>>2]|0)==(e|0))i[g+6>>0]=0;h=h+1|0;if((h|0)==10)break;else g=g+20|0}}else if((m|0)==10){st(n,b,d,c,e);if(!(f<<24>>24)){Xu(a,d,c,e);break}g=k[n+4>>2]|0;if(g)i[g+(((k[n+32>>2]|0)+-1|0)*20|0)+3>>0]=f}while(0);return e|0}function it(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;c=b+-1+c|0;e=a+19|0;j=0;l=a+116|0;while(1){f=l+12|0;g=k[f>>2]|0;if(!((g|0)<(b|0)|(g|0)>(c|0))){h=l+6|0;if(i[h>>0]|0){d=i[e>>0]|0;if((d&255)<8){i[e>>0]=d+1<<24>>24;k[a+((d&255)<<2)+24>>2]=g}i[h>>0]=0}k[f>>2]=0}j=j+1|0;if((j|0)==10)break;else l=l+20|0}return}function jt(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,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=k[a+8>>2]|0;i[b>>0]=1;s=b+44|0;if((k[s>>2]|0)>0){t=A+4|0;v=a+56|0;w=a+60|0;o=A+24|0;p=A+32|0;q=b+36|0;r=a+72|0;x=0;y=k[b+40>>2]|0;c=0;while(1){h=k[(k[y>>2]|0)+20>>2]|0;if(!h){d=0;f=0}else{d=k[h>>2]|0;f=k[w>>2]|0;e=k[v>>2]|0;if((e|0)<(d|0)){f=k[r>>2]|0;k[r>>2]=f+d;f=f+1|0}else{k[w>>2]=f+d;k[v>>2]=e-d}gt(a,h,f,1)}e=y+12|0;if((k[e>>2]|0)>-1){n=Cs(A)|0;Eu(a,k[e>>2]|0,n,1,f)}else n=0;m=y+4|0;e=k[m>>2]|0;if(j[e+2>>1]&32){if((d|0)>0){l=0;h=k[h+4>>2]|0;while(1){e=hu(a,k[h>>2]|0)|0;l=l+1|0;g=(e|0)!=0;if(!((l|0)<(d|0)&(g^1)))break;else h=h+20|0}if(!g)z=15}else z=15;if((z|0)==15){z=0;e=k[(k[a>>2]|0)+8>>2]|0}if(!c)if(!(k[q>>2]|0))c=0;else{c=(k[r>>2]|0)+1|0;k[r>>2]=c}Ch(A,Bh(A,36,c,0,0)|0,e,-4);e=k[m>>2]|0}Ch(A,Bh(A,10,0,f,k[y+8>>2]|0)|0,e,-5);e=k[t>>2]|0;if(e)i[e+(((k[p>>2]|0)+-1|0)*20|0)+3>>0]=d;it(a,f,d);it(a,f,d);if((k[v>>2]|0)<(d|0)){k[v>>2]=d;k[w>>2]=f}if(n){f=k[o>>2]|0;e=~n;if((n|0)<0?(u=k[f+112>>2]|0,(u|0)!=0):0)k[u+(e<<2)>>2]=k[p>>2];k[f+88>>2]=(k[p>>2]|0)+-1;ft(a)}x=x+1|0;if((x|0)>=(k[s>>2]|0))break;else y=y+16|0}if(c)f=Bh(A,45,c,0,0)|0;else f=0}else f=0;ft(a);c=b+36|0;if((k[c>>2]|0)>0){d=0;e=k[b+28>>2]|0;while(1){Wq(a,k[e+20>>2]|0,k[e+16>>2]|0);d=d+1|0;if((d|0)>=(k[c>>2]|0))break;else e=e+24|0}}i[b>>0]=0;ft(a);if(f){c=k[A+32>>2]|0;if(c>>>0>f>>>0)k[(k[A+4>>2]|0)+(f*20|0)+8>>2]=c;k[(k[A+24>>2]|0)+88>>2]=c+-1}return}function kt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=k[a+8>>2]|0;d=b+44|0;if((k[d>>2]|0)>0){e=0;b=k[b+40>>2]|0;while(1){a=k[(k[b>>2]|0)+20>>2]|0;if(!a)a=0;else a=k[a>>2]|0;f=k[b+4>>2]|0;Ch(c,Bh(c,142,k[b+8>>2]|0,a,0)|0,f,-5);e=e+1|0;if((e|0)>=(k[d>>2]|0))break;else b=b+16|0}}return}function lt(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;n=r;r=r+16|0;if((r|0)>=(s|0))ka();j=n+4|0;m=n;h=k[a+8>>2]|0;k[j>>2]=0;k[m>>2]=0;if(!((h|0)==0|(b|0)==0)){o=l[b>>0]|0;e=o^1;a:do switch(o|0){case 19:{cv(a,k[b+12>>2]|0,c,d);break}case 77:case 76:{Bh(h,e,eu(a,k[b+12>>2]|0,j)|0,c,0)|0;break}case 148:case 73:{d=b+12|0;g=eu(a,k[d>>2]|0,j)|0;f=b+16|0;h=eu(a,k[f>>2]|0,m)|0;fu(a,k[d>>2]|0,k[f>>2]|0,(i[b>>0]|0)==73?78:79,g,h,c,128);break}case 79:case 78:case 83:case 80:case 81:case 82:{o=b+12|0;g=eu(a,k[o>>2]|0,j)|0;f=b+16|0;h=eu(a,k[f>>2]|0,m)|0;fu(a,k[o>>2]|0,k[f>>2]|0,e,g,h,c,d);break}case 75:{if(d){ku(a,b,c,c);break a}f=Cs(h)|0;ku(a,b,c,f);e=k[h+24>>2]|0;c=~f;if((f|0)<0?(g=k[e+112>>2]|0,(g|0)!=0):0)k[g+(c<<2)>>2]=k[h+32>>2];k[e+88>>2]=(k[h+32>>2]|0)+-1;break}case 71:{g=Cs(h)|0;cv(a,k[b+12>>2]|0,g,d^16);e=a+100|0;k[e>>2]=(k[e>>2]|0)+1;lt(a,k[b+16>>2]|0,c,d);c=k[h+24>>2]|0;e=~g;if((g|0)<0?(f=k[c+112>>2]|0,(f|0)!=0):0)k[f+(e<<2)>>2]=k[h+32>>2];k[c+88>>2]=(k[h+32>>2]|0)+-1;gu(a);break}case 72:{lt(a,k[b+12>>2]|0,c,d);h=a+100|0;k[h>>2]=(k[h>>2]|0)+1;lt(a,k[b+16>>2]|0,c,d);gu(a);break}case 74:{dv(a,b,c,0,d);break}default:{if(ru(b)|0){Bh(h,16,0,c,0)|0;break a}if(!(ev(b)|0))Bh(h,46,eu(a,b,j)|0,c,(d|0)!=0&1)|0}}while(0);ds(a,k[j>>2]|0);ds(a,k[m>>2]|0)}r=n;return}function mt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;if((r|0)>=(s|0))ka();h=i;e=k[a+8>>2]|0;f=b+44|0;if((k[f>>2]|0)!=(0-(k[b+32>>2]|0)|0)?(Bh(e,28,0,k[b+16>>2]|0,k[b+20>>2]|0)|0,(k[f>>2]|0)>0):0){g=0;d=k[b+40>>2]|0;while(1){b=d+12|0;do if((k[b>>2]|0)>-1){c=k[(k[d>>2]|0)+20>>2]|0;if((c|0)!=0?(k[c>>2]|0)==1:0){c=Zs(a,c,0,0)|0;Ch(e,Bh(e,57,k[b>>2]|0,0,0)|0,c,-6);break}yh(a,34944,h);k[b>>2]=-1}while(0);g=g+1|0;if((g|0)>=(k[f>>2]|0))break;else d=d+16|0}}r=i;return}function nt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)>0){d=Bh(a,138,b,0,-1)|0;Bh(a,16,0,c,0)|0;b=k[a+32>>2]|0;if(b>>>0>d>>>0)k[(k[a+4>>2]|0)+(d*20|0)+8>>2]=b;k[(k[a+24>>2]|0)+88>>2]=b+-1}return}function ot(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if((k[(k[a>>2]|0)+24>>2]&8388608|0)!=0?(f=Fs(a,b)|0,(f|0)!=0):0){a=0;b=f;do{if((l[b+8>>0]|0|0)==(c|0)?(fv(k[b+16>>2]|0,d)|0)!=0:0)a=l[b+9>>0]|0|a;b=k[b+32>>2]|0}while((b|0)!=0)}else{a=0;f=0}if(e)k[e>>2]=a;return ((a|0)!=0?f:0)|0}function pt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h;f=i[b+44>>0]|0;if(f&16){e=k[a>>2]|0;d=b+60|0;while(1){d=k[d>>2]|0;if((k[d>>2]|0)==(e|0))break;else d=d+24|0}if(!(k[(k[k[d+4>>2]>>2]|0)+52>>2]|0))e=8;else e=5}else e=5;do if((e|0)==5){if(((f&1)!=0?(k[(k[a>>2]|0)+24>>2]&2048|0)==0:0)?(i[a+18>>0]|0)==0:0){e=8;break}if((c|0)==0?(k[b+12>>2]|0)!=0:0){k[g>>2]=k[b>>2];yh(a,34456,g);d=1}else d=0}while(0);if((e|0)==8){k[g>>2]=k[b>>2];yh(a,34424,g);d=1}r=h;return d|0}function qt(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;n=r;r=r+32|0;if((r|0)>=(s|0))ka();m=n;l=k[a>>2]|0;f=k[b+68>>2]|0;a:do if(f){e=k[l+20>>2]|0;if((e|0)>0){h=k[l+16>>2]|0;j=0;while(1){g=j+1|0;if((k[h+(j<<4)+12>>2]|0)==(f|0)){g=j;break a}if((g|0)<(e|0))j=g;else break}}else g=0}else g=-1e6;while(0);e=Rr(l,c,0,0)|0;f=ur(l,0,0,0)|0;if(f){c=ph(l,k[b>>2]|0)|0;k[f+16>>2]=c;c=ph(l,k[(k[l+16>>2]|0)+(g<<4)>>2]|0)|0;k[f+12>>2]=c}c=pr(a,0,f,e,0,0,0,0,0,0)|0;i[m>>0]=12;k[m+4>>2]=d;i[m+1>>0]=0;k[m+8>>2]=0;k[m+12>>2]=0;nr(a,c,m)|0;Rk(l,c,1);r=n;return}function rt(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,l=0,m=0,n=0;n=r;r=r+16|0;if((r|0)>=(s|0))ka();m=n+4|0;f=n;a:do if(k[(k[a>>2]|0)+24>>2]&524288){if(!c){d=gn((k[b+68>>2]|0)+56|0,k[b>>2]|0,f)|0;if((d|0)!=0?(k[d+8>>2]|0)!=0:0)e=1;else e=(k[b+16>>2]|0)!=0;e=e&1;break}a=k[b+16>>2]|0;if(a){i=b+36|0;l=(d|0)!=0;do{f=k[a+20>>2]|0;if((f|0)>0){h=0;do{g=k[a+(h<<3)+36>>2]|0;if((k[c+(g<<2)>>2]|0)>-1){e=1;break a}h=h+1|0;if((g|0)==(j[i>>1]|0)&l){e=1;break a}}while((h|0)<(f|0))}a=k[a+4>>2]|0}while((a|0)!=0)}f=gn((k[b+68>>2]|0)+56|0,k[b>>2]|0,m)|0;if((f|0)!=0?(e=k[f+8>>2]|0,(e|0)!=0):0)while(1){if(gv(b,e,c,d)|0){e=1;break a}e=k[e+12>>2]|0;if(!e){e=0;break}}else e=0}else e=0;while(0);r=n;return e|0}function st(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;if((d|0)>=0?(j[b+36>>1]|0)!=(d|0):0){f=l[b+44>>0]|0;n=(f&16|0)!=0?150:47;if(!(f&32))f=d;else{f=k[b+8>>2]|0;a:do if(!f)f=0;else while(1){if((i[f+51>>0]&3)==2)break a;f=k[f+20>>2]|0;if(!f){f=0;break}}while(0);m=d&65535;g=j[f+48>>1]|0;b:do if(!(g<<16>>16))f=-1;else{h=k[f+4>>2]|0;g=g&65535;f=0;while(1){if((j[h+(f<<1)>>1]|0)==m<<16>>16)break b;f=f+1|0;if((f|0)>=(g|0)){f=-1;break}}}while(0);f=f<<16>>16}Bh(a,n,c,f,e)|0}else Bh(a,103,c,e,0)|0;if((d|0)>-1)St(a,b,d,e);return}function tt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=b+16|0;c=k[f>>2]|0;do if(!c){d=k[b+12>>2]|0;c=k[a>>2]|0;e=b+48|0;a=vg((m[e>>1]|0)+1|0,0)|0;k[f>>2]=a;if(!a){i[c+65>>0]=1;c=0;break}if(!(j[e>>1]|0))c=0;else{b=b+4|0;d=d+4|0;c=0;do{a=j[(k[b>>2]|0)+(c<<1)>>1]|0;if(a<<16>>16<0)a=68;else a=i[(k[d>>2]|0)+((a<<16>>16)*24|0)+21>>0]|0;i[(k[f>>2]|0)+c>>0]=a;c=c+1|0}while((c|0)<(m[e>>1]|0));a=k[f>>2]|0}i[a+c>>0]=0;c=k[f>>2]|0}while(0);return c|0}function ut(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b+44|0;if(!(i[r>>0]&16)){j=k[a>>2]|0;m=k[b+68>>2]|0;a:do if(m){n=k[j+20>>2]|0;if((n|0)>0){j=k[j+16>>2]|0;l=0;while(1){h=l+1|0;if((k[j+(l<<4)+12>>2]|0)==(m|0))break a;if((h|0)<(n|0))l=h;else{l=h;break}}}else l=0}else l=-1e6;while(0);q=Tq(a)|0;if((d|0)<0)d=k[a+68>>2]|0;j=d+1|0;p=(f|0)!=0;if(p)k[f>>2]=d;do if(!(i[r>>0]&32)){if((e|0)!=0?(i[e>>0]|0)==0:0){o=15;break}Vq(a,d,l,b,c)}else o=15;while(0);if((o|0)==15)ls(a,l,k[b+32>>2]|0,(c|0)==55&1,k[b>>2]|0);if(g)k[g>>2]=j;d=k[b+8>>2]|0;if(!d)h=0;else{m=(e|0)==0;b=a+8|0;n=j;h=0;while(1){j=n+1|0;if((i[d+51>>0]&3)==2?(i[r>>0]&32)!=0&p:0)k[f>>2]=n;h=h+1|0;if(!(!m?(i[e+h>>0]|0)==0:0)){Bh(q,c,n,k[d+40>>2]|0,l)|0;o=k[b>>2]|0;Ch(o,-1,ms(a,d)|0,-6)}d=k[d+20>>2]|0;if(!d)break;else n=j}}d=a+68|0;if((j|0)>(k[d>>2]|0))k[d>>2]=j}else h=0;return h|0}function vt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=k[a+408>>2]|0;f=(f|0)==0?a:f;e=f+452|0;a=k[e>>2]|0;c=k[f+520>>2]|0;a:do if((a|0)>0){d=0;while(1){if((k[c+(d<<2)>>2]|0)==(b|0))break a;d=d+1|0;if((d|0)>=(a|0)){g=4;break}}}else g=4;while(0);do if((g|0)==4){a=ad(c,(a<<2)+4|0)|0;if(!a){i[(k[f>>2]|0)+65>>0]=1;break}else{k[f+520>>2]=a;c=k[e>>2]|0;k[e>>2]=c+1;k[a+(c<<2)>>2]=b;break}}while(0);return}function wt(a,b,c,d,e,f,g,h,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=k[a+8>>2]|0;x=Cs(w)|0;u=(i[b+44>>0]&32)>>>4^70;if(!(m<<24>>24))Ch(w,Bh(w,u,d,x,f)|0,g<<16>>16,-14);if((rt(a,b,0,0)|0)!=0|(c|0)!=0){q=l&255;r=At(a,c,0,0,3,b,q)|0;r=zt(a,b)|0|r;o=a+72|0;n=k[o>>2]|0;m=n+1|0;s=b+38|0;k[o>>2]=m+(j[s>>1]|0);Bh(w,33,f,m,0)|0;o=j[s>>1]|0;if(o<<16>>16>0){t=(r|0)==-1;p=n+2|0;n=0;do{if(!t){if((n|0)<32?(1<>1]|0}n=n+1|0}while((n|0)<(o<<16>>16|0))}t=w+32|0;s=k[t>>2]|0;Ct(a,c,109,0,1,b,m,q,x);if((s|0)<(k[t>>2]|0))Ch(w,Bh(w,u,d,x,f)|0,g<<16>>16,-14);Et(a,b,m,0,0,0)}else m=0;if((k[b+12>>2]|0)==0?(Ft(a,b,d,e,0),Bh(w,95,d,h<<24>>24!=0&1,0)|0,h<<24>>24!=0):0)Ch(w,-1,k[b>>2]|0,0);Ht(a,b,0,m,0,0);Ct(a,c,109,0,2,b,m,l&255,x);n=k[w+24>>2]|0;m=~x;if((x|0)<0?(y=k[n+112>>2]|0,(y|0)!=0):0)k[y+(m<<2)>>2]=k[w+32>>2];k[n+88>>2]=(k[w+32>>2]|0)+-1;return}function xt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;h=k[a+8>>2]|0;b=k[a+404>>2]|0;if(b){l=(k[a>>2]|0)+16|0;m=a+19|0;n=a+72|0;o=h+32|0;p=h+4|0;j=h+24|0;do{d=k[b+8>>2]|0;e=k[l>>2]|0;g=k[b+12>>2]|0;c=i[m>>0]|0;if(!(c<<24>>24)){f=(k[n>>2]|0)+1|0;k[n>>2]=f}else{f=c+-1<<24>>24;i[m>>0]=f;f=k[a+((f&255)<<2)+24>>2]|0}Vq(a,0,d,k[(k[e+(d<<4)+12>>2]|0)+72>>2]|0,55);e=g+1|0;d=Bh(h,77,e,0,0)|0;Bh(h,74,0,e,0)|0;c=k[o>>2]|0;if(c>>>0>d>>>0)k[(k[p>>2]|0)+(d*20|0)+8>>2]=c;k[(k[j>>2]|0)+88>>2]=c+-1;Bh(h,49,g+-1|0,2,f)|0;Bh(h,75,0,f,e)|0;c=k[p>>2]|0;if(c)i[c+(((k[o>>2]|0)+-1|0)*20|0)+3>>0]=8;Bh(h,61,0,0,0)|0;ds(a,f);b=k[b>>2]|0}while((b|0)!=0)}return}function yt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();e=f;k[e>>2]=c;if(!c)d=0;else{d=c;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;d=d-c&1073741823}k[e+4>>2]=d;d=sr(a,b,e,0)|0;r=f;return d|0}function zt(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;m=r;r=r+16|0;if((r|0)>=(s|0))ka();g=m+4|0;l=m;if(k[(k[a>>2]|0)+24>>2]&524288){d=k[b+16>>2]|0;if(!d)c=0;else{c=0;do{e=k[d+20>>2]|0;if((e|0)>0){f=0;do{n=k[d+(f<<3)+36>>2]|0;c=((n|0)>31?-1:1<>2]|0}while((d|0)!=0)}d=gn((k[b+68>>2]|0)+56|0,k[b>>2]|0,g)|0;if((d|0)!=0?(h=k[d+8>>2]|0,(h|0)!=0):0)do{k[l>>2]=0;Rt(a,b,h,l,0)|0;d=k[l>>2]|0;if((d|0)!=0?(i=j[d+46>>1]|0,i<<16>>16!=0):0){g=i&65535;f=k[d+4>>2]|0;e=0;do{d=j[f+(e<<1)>>1]|0;if(d<<16>>16>31)d=-1;else d=1<<(d<<16>>16);c=d|c;e=e+1|0}while((e|0)<(g|0))}h=k[h+12>>2]|0}while((h|0)!=0)}else c=0;r=m;return c|0}function At(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;var h=0,i=0,j=0;i=(c|0)!=0?110:109;if(!b)h=0;else{h=0;do{if((((l[b+8>>0]|0|0)==(i|0)?((l[b+9>>0]|0)&e|0)!=0:0)?(fv(k[b+16>>2]|0,c)|0)!=0:0)?(j=hv(a,b,f,g)|0,(j|0)!=0):0)h=k[j+(d<<2)+16>>2]|h;b=k[b+32>>2]|0}while((b|0)!=0)}return h|0}function Bt(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;l=b+20|0;d=k[l>>2]|0;do if(!d){f=k[a>>2]|0;h=b+38|0;e=(j[h>>1]|0)+1|0;e=vg(e,((e|0)<0)<<31>>31)|0;if(!e){i[f+65>>0]=1;break}if((j[h>>1]|0)>0){f=b+4|0;d=0;do{i[e+d>>0]=i[(k[f>>2]|0)+(d*24|0)+21>>0]|0;d=d+1|0}while((d|0)<(j[h>>1]|0))}else d=0;do{i[e+d>>0]=0;if((d|0)<=0)break;d=d+-1|0}while((i[e+d>>0]|0)==65);k[l>>2]=e;g=10}else{e=d;g=10}while(0);do if((g|0)==10){d=e;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;d=d-e&1073741823;if(d)if(!c){Ch(a,-1,e,d);break}else{Ch(a,Bh(a,48,c,d,0)|0,e,d);break}}while(0);return}function Ct(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;if(b)do{if(((l[b+8>>0]|0|0)==(c|0)?(l[b+9>>0]|0|0)==(e|0):0)?(fv(k[b+16>>2]|0,d)|0)!=0:0)iv(a,b,f,g,h,i);b=k[b+32>>2]|0}while((b|0)!=0);return}function Dt(a,b,c,d,e,f,g,h,l,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;l=l|0;n=n|0;o=o|0;var p=0,q=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,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0;la=r;r=r+16|0;if((r|0)>=(s|0))ka();I=la;ea=(g|0)!=0;N=k[a>>2]|0;ja=Tq(a)|0;A=j[b+38>>1]|0;ha=b+44|0;if(!(i[ha>>0]&32)){da=1;ca=0}else{u=b+8|0;while(1){u=k[u>>2]|0;if((i[u+51>>0]&3)==2)break;else u=u+20|0}da=m[u+46>>1]|0;ca=u}if(A<<16>>16>0){w=b+36|0;v=b+4|0;u=l<<24>>24==10;t=a+408|0;q=f+1|0;B=ja+4|0;C=ja+32|0;D=ja+24|0;E=l&255;y=A<<16>>16;x=0;do{a:do if((x|0)!=(j[w>>1]|0)?(F=k[v>>2]|0,G=i[F+(x*24|0)+20>>0]|0,H=G&255,G<<24>>24!=0):0){if(u)if(G<<24>>24==10)ia=14;else{A=H;ia=11}else{A=E;ia=11}do if((ia|0)==11){ia=0;if((A|0)==5)A=(k[F+(x*24|0)+4>>2]|0)==0?2:5;if((A|0)==2){ia=14;break}else if((A|0)==3|(A|0)==1)break;else if((A|0)==4){Bh(ja,76,q+x|0,n,0)|0;break a}z=q+x|0;A=Bh(ja,77,z,0,0)|0;Wq(a,k[(k[v>>2]|0)+(x*24|0)+4>>2]|0,z);z=k[C>>2]|0;if(z>>>0>A>>>0)k[(k[B>>2]|0)+(A*20|0)+8>>2]=z;k[(k[D>>2]|0)+88>>2]=z+-1;break a}while(0);if((ia|0)==14){ia=0;A=k[t>>2]|0;i[((A|0)==0?a:A)+21>>0]=1;A=2}ba=k[F+(x*24|0)>>2]|0;k[I>>2]=k[b>>2];k[I+4>>2]=ba;ba=zh(N,27824,I)|0;Ch(ja,Bh(ja,23,1299,A,q+x|0)|0,ba,-1);A=k[B>>2]|0;if(A)i[A+(((k[C>>2]|0)+-1|0)*20|0)+3>>0]=1}while(0);x=x+1|0}while((x|0)!=(y|0))}x=k[b+24>>2]|0;if(((x|0)!=0?(k[N+24>>2]&8192|0)==0:0)?(k[a+92>>2]=f+1,(k[x>>2]|0)>0):0){w=x+4|0;q=ja+24|0;y=ja+32|0;A=0;u=l<<24>>24==10?2:l&255;while(1){z=Cs(ja)|0;cv(a,k[(k[w>>2]|0)+(A*20|0)>>2]|0,z,16);if((u|0)==4){Bh(ja,16,0,n,0)|0;t=4}else{v=k[(k[w>>2]|0)+(A*20|0)+4>>2]|0;if(!v)v=k[b>>2]|0;t=(u|0)==5?2:u;Es(a,275,t,v,0,3)}v=k[q>>2]|0;u=~z;if((z|0)<0?(J=k[v+112>>2]|0,(J|0)!=0):0)k[J+(u<<2)>>2]=k[y>>2];k[v+88>>2]=(k[y>>2]|0)+-1;A=A+1|0;if((A|0)>=(k[x>>2]|0))break;else u=t}}if(h<<24>>24!=0&(ca|0)==0){w=Cs(ja)|0;q=i[b+45>>0]|0;if(l<<24>>24==10)q=q<<24>>24==10?2:q&255;else q=l&255;if(ea?(Bh(ja,79,f,w,g)|0,K=k[ja+4>>2]|0,(K|0)!=0):0)i[K+(((k[ja+32>>2]|0)+-1|0)*20|0)+3>>0]=-112;b:do if(!((q|0)!=5|l<<24>>24==5)?(p=k[b+8>>2]|0,(p|0)!=0):0){while(1){if(((i[p+50>>0]|0)+-3&255)<2)break;p=k[p+20>>2]|0;if(!p){x=0;break b}}x=Bh(ja,16,0,0,0)|0}else x=0;while(0);Bh(ja,70,d,w,f)|0;c:do switch(q|0){case 4:{Bh(ja,16,0,n,0)|0;q=0;break}case 5:{if((k[N+24>>2]&262144|0)!=0?(L=ot(a,b,109,0,0)|0,(L|0)!=0):0)q=L;else if(!(rt(a,b,0,0)|0)){if(!(k[b+8>>2]|0)){q=1;break c}q=k[a+408>>2]|0;i[((q|0)==0?a:q)+20>>0]=1;Ft(a,b,d,e,0);q=1;break c}else q=0;ba=k[a+408>>2]|0;i[((ba|0)==0?a:ba)+20>>0]=1;wt(a,b,q,d,e,f,1,0,5,1);q=1;break}case 3:case 2:case 1:{ia=49;break}default:{q=2;ia=49}}while(0);if((ia|0)==49){Kt(a,q,b);q=0}v=ja+24|0;u=k[v>>2]|0;t=~w;if((w|0)<0?(M=k[u+112>>2]|0,(M|0)!=0):0)k[M+(t<<2)>>2]=k[ja+32>>2];p=ja+32|0;k[u+88>>2]=(k[p>>2]|0)+-1;if(!x){t=0;x=0}else{t=Bh(ja,16,0,0,0)|0;p=k[p>>2]|0;if(p>>>0>x>>>0)k[(k[ja+4>>2]|0)+(x*20|0)+8>>2]=p;k[(k[v>>2]|0)+88>>2]=p+-1}}else{t=0;x=0;q=0}A=k[b+8>>2]|0;if(A){_=f+1|0;$=a+60|0;aa=a+56|0;ba=a+72|0;Q=h<<24>>24==0;R=ja+24|0;S=ja+32|0;T=l<<24>>24==10;U=ja+4|0;V=ca+46|0;W=ca+32|0;X=ca+4|0;Y=g+1|0;Z=a+408|0;O=N+24|0;P=da&65535;w=l&255;v=b+36|0;u=a+92|0;E=0;p=0;z=-1;while(1){L=c+(p<<2)|0;do if(k[L>>2]|0){if(!(E<<24>>24)){Bt(ja,b,_);E=1}M=p+e|0;l=Cs(ja)|0;K=A+36|0;if(k[K>>2]|0){Bh(ja,28,0,k[L>>2]|0,0)|0;k[u>>2]=_;lt(a,k[K>>2]|0,l,16);k[u>>2]=0}N=A+48|0;F=j[N>>1]|0;I=F&65535;H=k[$>>2]|0;G=k[aa>>2]|0;if((G|0)<(I|0)){h=k[ba>>2]|0;k[ba>>2]=h+I;h=h+1|0}else{k[$>>2]=H+I;k[aa>>2]=G-I;h=H}if(!(F<<16>>16))J=z;else{J=A+4|0;G=0;do{y=j[(k[J>>2]|0)+(G<<1)>>1]|0;I=y<<16>>16;if(y<<16>>16>=0?y<<16>>16!=(j[v>>1]|0):0){H=G+h|0;I=_+I|0;ia=81}else{I=G+h|0;if((z|0)!=(I|0)){H=I;z=(k[K>>2]|0)==0?I:-1;I=f;ia=81}}if((ia|0)==81){ia=0;Bh(ja,34,I,H,0)|0;F=j[N>>1]|0}G=G+1|0;I=F&65535}while((G|0)<(I|0));J=z}Bh(ja,49,h,I,k[L>>2]|0)|0;it(a,h,m[N>>1]|0);K=(ca|0)==(A|0);if(ea&K&Q){z=k[R>>2]|0;y=~l;if((l|0)<0?(fa=k[z+112>>2]|0,(fa|0)!=0):0)k[fa+(y<<2)>>2]=k[S>>2];k[z+88>>2]=(k[S>>2]|0)+-1;z=J;break}D=i[A+50>>0]|0;C=D&255;if(!(D<<24>>24)){z=m[N>>1]|0;it(a,h,z);if((k[aa>>2]|0)<(z|0)){k[aa>>2]=z;k[$>>2]=h}z=k[R>>2]|0;y=~l;if((l|0)<0?(ga=k[z+112>>2]|0,(ga|0)!=0):0)k[ga+(y<<2)>>2]=k[S>>2];k[z+88>>2]=(k[S>>2]|0)+-1;z=J;break}if(T)L=D<<24>>24==10?2:C;else L=w;z=m[A+46>>1]|0;Ch(ja,Bh(ja,67,M,l,h)|0,z,-14);do if(!K){I=k[$>>2]|0;H=k[aa>>2]|0;if((H|0)<(da|0)){I=k[ba>>2]|0;k[ba>>2]=I+da;I=I+1|0;break}else{k[$>>2]=I+da;k[aa>>2]=H-da;break}}else I=h;while(0);do if(ea|(L|0)==5){if(!(i[ha>>0]&32)){Bh(ja,112,M,I,0)|0;if(!ea)break;Bh(ja,79,I,l,g)|0;D=k[U>>2]|0;if(!D)break;i[D+(((k[S>>2]|0)+-1|0)*20|0)+3>>0]=-112;break}do if(!K){if(!(j[V>>1]|0))break;C=A+4|0;B=0;do{F=j[(k[X>>2]|0)+(B<<1)>>1]|0;H=j[N>>1]|0;d:do if(!(H<<16>>16))H=-1;else{D=k[C>>2]|0;G=H&65535;H=0;while(1){if((j[D+(H<<1)>>1]|0)==F<<16>>16)break d;H=H+1|0;if((H|0)>=(G|0)){H=-1;break}}}while(0);Bh(ja,47,M,H<<16>>16,B+I|0)|0;B=B+1|0}while((B|0)<(m[V>>1]|0))}while(0);if(!ea)break;C=(i[A+51>>0]&3)==2?h:I;H=j[V>>1]|0;if(!(H<<16>>16))break;G=(H&65535)+(k[S>>2]|0)|0;F=0;D=78;do{H=hr(a,k[(k[W>>2]|0)+(F<<2)>>2]|0)|0;z=(F|0)==((m[V>>1]|0)+-1|0);G=z?l:G;D=z?79:D;Ch(ja,Bh(ja,D,Y+(j[(k[X>>2]|0)+(F<<1)>>1]|0)|0,G,F+C|0)|0,H,-4);H=k[U>>2]|0;if(H)i[H+(((k[S>>2]|0)+-1|0)*20|0)+3>>0]=-112;F=F+1|0}while((F|0)<(m[V>>1]|0))}while(0);if((L|0)==3|(L|0)==2|(L|0)==1)su(a,L,A);else if((L|0)==4)Bh(ja,16,0,n,0)|0;else{z=k[Z>>2]|0;i[((z|0)==0?a:z)+20>>0]=1;if(!(k[O>>2]&262144))D=0;else D=ot(a,b,109,0,0)|0;wt(a,b,D,d,e,I,P,0,5,K&1);q=1}H=k[R>>2]|0;G=~l;do if((l|0)<0){D=k[H+112>>2]|0;if(!D)break;k[D+(G<<2)>>2]=k[S>>2]}while(0);k[H+88>>2]=(k[S>>2]|0)+-1;z=m[N>>1]|0;it(a,h,z);if((k[aa>>2]|0)<(z|0)){k[aa>>2]=z;k[$>>2]=h}if((I|0)==(h|0)){z=J;break}it(a,I,da);if((k[aa>>2]|0)>=(da|0)){z=J;break}k[aa>>2]=da;k[$>>2]=I;z=J}while(0);A=k[A+20>>2]|0;if(!A)break;else p=p+1|0}}if(x){Bh(ja,16,0,x+1|0,0)|0;p=k[ja+32>>2]|0;if(p>>>0>t>>>0)k[(k[ja+4>>2]|0)+(t*20|0)+8>>2]=p;k[(k[ja+24>>2]|0)+88>>2]=p+-1}k[o>>2]=q;r=la;return}function Et(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,m=0,n=0,o=0,p=0,q=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+32|0;if((r|0)>=(s|0))ka();Q=Z+20|0;O=Z+16|0;M=Z+12|0;N=Z+8|0;X=Z+4|0;W=Z;S=k[a>>2]|0;L=a+438|0;R=i[L>>0]|0;V=S+24|0;a:do if(k[V>>2]&524288){P=b+68|0;g=k[P>>2]|0;b:do if(g){m=k[S+20>>2]|0;if((m|0)>0){h=k[S+16>>2]|0;p=0;while(1){o=p+1|0;if((k[h+(p<<4)+12>>2]|0)==(g|0)){o=p;break b}if((o|0)<(m|0))p=o;else break}}else o=0}else o=-1e6;while(0);K=k[(k[S+16>>2]|0)+(o<<4)>>2]|0;x=k[b+16>>2]|0;if(!x)h=b;else{z=(e|0)==0;A=R<<24>>24==0;B=S+65|0;C=c+1|0;D=a+68|0;E=(c|0)==0;F=(d|0)==0;G=a+408|0;H=b+36|0;I=S+284|0;J=(f|0)!=0;y=x;do{k[O>>2]=0;k[M>>2]=0;c:do if(!z){x=k[y+8>>2]|0;if(id(k[b>>2]|0,x)|0){w=k[y+20>>2]|0;if((w|0)>0){h=0;do{g=k[y+(h<<3)+36>>2]|0;if((k[e+(g<<2)>>2]|0)>-1){Y=17;break c}h=h+1|0;if((g|0)==(j[H>>1]|0)&J){Y=17;break c}}while((h|0)<(w|0))}}else Y=17}else{x=k[y+8>>2]|0;Y=17}while(0);do if((Y|0)==17){Y=0;if(!(i[L>>0]|0))v=xh(a,0,x,K)|0;else v=di(S,x,K)|0;x=(v|0)==0;if(!x?(Rt(a,v,y,O,M)|0)==0:0){x=k[M>>2]|0;if(!x){k[N>>2]=k[y+36>>2];x=N}h=y+20|0;if((k[h>>2]|0)>0){t=k[O>>2]|0;m=(t|0)==0;p=v+36|0;q=v+4|0;t=t+4|0;g=0;u=0;do{w=x+(u<<2)|0;if((k[w>>2]|0)==(j[H>>1]|0))k[w>>2]=-1;if(k[I>>2]|0){if(m)w=p;else w=(k[t>>2]|0)+(u<<1)|0;g=(jv(a,k[v>>2]|0,k[(k[q>>2]|0)+((j[w>>1]|0)*24|0)>>2]|0,o)|0)==2&1}u=u+1|0}while((u|0)<(k[h>>2]|0));w=v}else{w=v;g=0}ls(a,o,k[v+32>>2]|0,0,k[w>>2]|0);k[D>>2]=(k[D>>2]|0)+1;if(!E)kv(a,o,v,k[O>>2]|0,y,x,c,-1,g);d:do if(!F){w=k[G>>2]|0;w=k[((w|0)==0?a:w)+528>>2]|0;do if(w){w=k[w>>2]|0;if((w|0)==(k[y+28>>2]|0)?(i[y+25>>0]|0)==7:0)break d;if((w|0)!=(k[y+32>>2]|0))break;if((i[y+26>>0]|0)==7)break d}while(0);kv(a,o,v,k[O>>2]|0,y,x,d,1,g)}while(0);rg(S,k[M>>2]|0);break}if(A)break a;if(i[B>>0]|0)break a;if(x){x=Tq(a)|0;w=y+20|0;h=k[w>>2]|0;g=(k[x+32>>2]|0)+1+h|0;if((h|0)>0){h=0;do{Bh(x,76,C+(k[y+(h<<3)+36>>2]|0)|0,g,0)|0;h=h+1|0}while((h|0)<(k[w>>2]|0))}Bh(x,134,l[y+24>>0]|0,-1,0)|0}}while(0);y=k[y+4>>2]|0}while((y|0)!=0);h=b;g=k[P>>2]|0}g=gn(g+56|0,k[h>>2]|0,Q)|0;if((g|0)!=0?(n=k[g+8>>2]|0,T=S+65|0,(n|0)!=0):0){p=(e|0)!=0;q=a+408|0;t=a+20|0;u=a+68|0;v=(d|0)==0;w=(c|0)==0;x=p&1;o=R<<24>>24==0;do{k[X>>2]=0;k[W>>2]=0;if(!(p?(gv(b,n,e,f)|0)==0:0))Y=57;do if((Y|0)==57){Y=0;h=n+24|0;if((((i[h>>0]|0)==0?(k[V>>2]&16777216|0)==0:0)?(k[q>>2]|0)==0:0)?(i[t>>0]|0)==0:0)break;if(Rt(a,b,n,X,W)|0){if(o)break a;if(!(i[T>>0]|0))break;else break a}g=ur(S,0,0,0)|0;if(g){H=k[n>>2]|0;k[g+24>>2]=H;m=g+16|0;k[m>>2]=k[H>>2];H=H+40|0;j[H>>1]=(j[H>>1]|0)+1<<16>>16;H=k[u>>2]|0;k[u>>2]=H+1;k[g+48>>2]=H;if(!v)lv(a,g,b,k[X>>2]|0,n,k[W>>2]|0,d,-1);if((!w?(U=i[n+x+25>>0]|0,lv(a,g,b,k[X>>2]|0,n,k[W>>2]|0,c,1),(i[h>>0]|0)==0):0)?!(U<<24>>24==7|U<<24>>24==9):0){H=k[q>>2]|0;i[((H|0)==0?a:H)+21>>0]=1}k[m>>2]=0;Io(S,g)}rg(S,k[W>>2]|0)}while(0);n=k[n+12>>2]|0}while((n|0)!=0)}}while(0);r=Z;return}function Ft(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,j=0,l=0,n=0,o=0,p=0,q=0;q=r;r=r+16|0;if((r|0)>=(s|0))ka();p=q;o=k[a+8>>2]|0;g=k[b+8>>2]|0;a:do if(i[b+44>>0]&32){if(g){f=g;while(1){if((i[f+51>>0]&3)==2){n=5;break a}f=k[f+20>>2]|0;if(!f){f=0;n=5;break}}}}else{f=0;n=5}while(0);if((n|0)==5?(g|0)!=0:0){j=(e|0)==0;l=0;b=0;h=-1;while(1){if(j){if((g|0)!=(f|0))n=10}else if(!((g|0)==(f|0)?1:(k[e+(l<<2)>>2]|0)==0))n=10;if((n|0)==10){n=0;h=Ut(a,g,c,0,1,p,b,h)|0;Bh(o,111,l+d|0,h,m[((i[g+51>>0]&8)==0?g+48|0:g+46|0)>>1]|0)|0;Vt(a,k[p>>2]|0);b=g}g=k[g+20>>2]|0;if(!g)break;else l=l+1|0}}r=q;return}function Gt(a,b,c,d,e,f,g,h,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;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=Tq(a)|0;q=k[b+8>>2]|0;if(!q){n=b+44|0;p=0}else{r=(l|0)!=0;n=b+44|0;s=r?17:1;t=w+4|0;u=w+32|0;p=0;v=0;m=q;while(1){o=f+(v<<2)|0;q=k[o>>2]|0;do if(q){if(k[m+36>>2]|0){Bh(w,76,q,(k[u>>2]|0)+2|0,0)|0;q=k[o>>2]|0}Bh(w,110,v+d|0,q,0)|0;if((i[m+51>>0]&3)==2){q=(i[n>>0]&32)!=0;if(q|r)p=q?s:16;else{p=1;break}}else if(r)p=16;else{p=1;break}q=k[t>>2]|0;if(!q)p=1;else{i[q+(((k[u>>2]|0)+-1|0)*20|0)+3>>0]=p;p=1}}while(0);m=k[m+20>>2]|0;if(!m)break;else v=v+1|0}}if(!(i[n>>0]&32)){o=e+1|0;n=a+19|0;m=i[n>>0]|0;if(!(m<<24>>24)){f=a+72|0;q=(k[f>>2]|0)+1|0;k[f>>2]=q}else{q=m+-1<<24>>24;i[n>>0]=q;q=k[a+((q&255)<<2)+24>>2]|0}n=b+38|0;Bh(w,49,o,j[n>>1]|0,q)|0;if(!(p<<24>>24))Bt(w,b,0);it(a,o,j[n>>1]|0);o=a+18|0;if(!(i[o>>0]|0))m=(g|0)!=0?5:3;else m=0;if(h)m=(m&255|8)&255;if(!l)n=m;else n=(m&255|16)&255;Bh(w,75,c,q,e)|0;if(!(i[o>>0]|0))Ch(w,-1,k[b>>2]|0,0);m=k[w+4>>2]|0;if(m)i[m+(((k[w+32>>2]|0)+-1|0)*20|0)+3>>0]=n}return}function Ht(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,l=0,m=0,n=0,o=0,p=0,q=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;Y=r;r=r+64|0;if((r|0)>=(s|0))ka();R=Y+52|0;Q=Y+48|0;V=Y+8|0;U=Y;T=Y+40|0;W=Y+32|0;S=Y+24|0;if(((k[(k[a>>2]|0)+24>>2]&524288|0)!=0?(P=b+68|0,g=gn((k[P>>2]|0)+56|0,k[b>>2]|0,Y+16|0)|0,(g|0)!=0):0)?(h=k[g+8>>2]|0,(h|0)!=0):0){O=(e|0)==0;H=(c|0)!=0;I=H&1;J=W+4|0;K=T+4|0;L=b+4|0;M=S+4|0;N=H?110:109;do{if(!(!O?(gv(b,h,e,f)|0)==0:0)){E=k[a>>2]|0;D=i[h+I+25>>0]|0;F=D&255;G=h+(I<<2)+28|0;c=k[G>>2]|0;do if(!(D<<24>>24==0|(c|0)!=0)){k[R>>2]=0;k[Q>>2]=0;if(!(Rt(a,b,h,R,Q)|0)){p=h+20|0;if((k[p>>2]|0)>0){x=34352;w=k[x>>2]|0;x=k[x+4>>2]|0;z=34360;y=k[z>>2]|0;z=k[z+4>>2]|0;A=h+36|0;C=D<<24>>24!=6&(D<<24>>24!=9|H);B=0;m=0;g=0;l=0;do{c=V;k[c>>2]=w;k[c+4>>2]=x;c=U;k[c>>2]=y;k[c+4>>2]=z;c=k[Q>>2]|0;if(!c)c=A;else c=c+(B<<2)|0;o=k[c>>2]|0;q=k[R>>2]|0;if(!q)u=34368;else u=k[(k[L>>2]|0)+((j[(k[q+4>>2]|0)+(B<<1)>>1]|0)*24|0)>>2]|0;k[W>>2]=u;c=k[(k[(k[h>>2]|0)+4>>2]|0)+(o*24|0)>>2]|0;k[T>>2]=c;if(!u)t=0;else{v=u;while(1)if(!(i[v>>0]|0))break;else v=v+1|0;t=v-u&1073741823}k[J>>2]=t;if(!c)n=0;else{u=c;while(1)if(!(i[u>>0]|0))break;else u=u+1|0;n=u-c&1073741823}k[K>>2]=n;v=cr(a,27,0,0,V)|0;v=cr(a,122,v,cr(a,27,0,0,W)|0,0)|0;l=xs(E,l,cr(a,79,v,cr(a,27,0,0,T)|0,0)|0)|0;if(H){u=cr(a,27,0,0,V)|0;u=cr(a,122,u,cr(a,27,0,0,W)|0,0)|0;v=cr(a,27,0,0,U)|0;g=xs(E,g,cr(a,73,u,cr(a,122,v,cr(a,27,0,0,W)|0,0)|0,0)|0)|0}if(C){do if(D<<24>>24==9){c=cr(a,27,0,0,U)|0;c=cr(a,122,c,cr(a,27,0,0,W)|0,0)|0}else if(D<<24>>24==8){c=k[(k[(k[h>>2]|0)+4>>2]|0)+(o*24|0)+4>>2]|0;if(!c){c=cr(a,101,0,0,0)|0;break}else{c=Rr(E,c,0,0)|0;break}}else c=cr(a,101,0,0,0)|0;while(0);m=qr(a,m,c)|0;rr(a,m,T,0)}B=B+1|0}while((B|0)<(k[p>>2]|0));c=h}else{c=h;m=0;g=0;l=0}rg(E,k[Q>>2]|0);v=k[k[c>>2]>>2]|0;if(!v)n=0;else{c=v;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;n=c-v&1073741823}if(D<<24>>24==6){k[S>>2]=v;k[M>>2]=n;c=yt(E,57,34376)|0;if(c)i[c+1>>0]=2;u=qr(a,0,c)|0;u=pr(a,u,ur(E,0,S,0)|0,l,0,0,0,0,0,0)|0;t=0}else{u=0;t=l}o=E+250|0;p=i[o>>0]|0;i[o>>0]=0;c=n+77|0;q=rh(E,c,0)|0;if(q){kw(q|0,0,c|0)|0;l=q+36|0;k[q+28>>2]=l;D=q+76|0;k[q+48>>2]=D;k[q+52>>2]=n;pw(D|0,v|0,n|0)|0;D=Rr(E,t,1,0)|0;k[q+56>>2]=D;D=Ur(E,m,1)|0;k[q+60>>2]=D;D=lr(E,u,1)|0;k[q+44>>2]=D;if(!g){c=q;g=0}else{g=cr(a,19,g,0,0)|0;c=Rr(E,g,1,0)|0;k[q+12>>2]=c;c=q}}else{c=0;l=0}i[o>>0]=p;Lk(E,t);Lk(E,g);Sk(E,m);Rk(E,u,1);if((i[E+65>>0]|0)==1){Pk(E,c);c=0;break}if((F|0)==6)i[l>>0]=119;else if((F|0)==9?!H:0)i[l>>0]=109;else X=49;if((X|0)==49){X=0;i[l>>0]=110}k[l+4>>2]=c;F=k[P>>2]|0;k[q+20>>2]=F;k[q+24>>2]=F;k[G>>2]=c;i[q+8>>0]=N}else c=0}while(0);if(c)iv(a,c,b,d,2,0)}h=k[h+12>>2]|0}while((h|0)!=0)}r=Y;return}function It(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;c=j[a+46>>1]|0;a:do if(c<<16>>16==(j[b+46>>1]|0)?(i[a+50>>0]|0)==(i[b+50>>0]|0):0){if(c<<16>>16){d=k[b+4>>2]|0;e=k[a+4>>2]|0;f=b+28|0;g=a+28|0;h=b+32|0;l=a+32|0;p=0;do{if((j[d+(p<<1)>>1]|0)!=(j[e+(p<<1)>>1]|0)){c=0;break a}if((i[(k[f>>2]|0)+p>>0]|0)!=(i[(k[g>>2]|0)+p>>0]|0)){c=0;break a}m=k[(k[h>>2]|0)+(p<<2)>>2]|0;n=k[(k[l>>2]|0)+(p<<2)>>2]|0;o=(n|0)==0;if(!m){if(!o){c=0;break a}}else{if(o){c=0;break a}if(id(m,n)|0){c=0;break a}}p=p+1|0}while((p|0)<(c&65535|0))}c=(Hu(k[b+36>>2]|0,k[a+36>>2]|0,-1)|0)==0&1}else c=0;while(0);return c|0}function Jt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;do if(!(i[c+44>>0]&8))d=0;else{f=k[a+408>>2]|0;f=(f|0)==0?a:f;e=f+404|0;d=k[e>>2]|0;a:do if(!d)g=5;else while(1){if((k[d+4>>2]|0)==(c|0))break a;d=k[d>>2]|0;if(!d){g=5;break}}while(0);if((g|0)==5){d=rh(k[a>>2]|0,16,0)|0;if(!d){d=0;break}k[d>>2]=k[e>>2];k[e>>2]=d;k[d+4>>2]=c;k[d+8>>2]=b;a=f+72|0;e=k[a>>2]|0;k[d+12>>2]=e+2;k[a>>2]=e+3}d=k[d+12>>2]|0}while(0);return d|0}function Kt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h;e=j[c+36>>1]|0;f=k[a>>2]|0;d=k[c>>2]|0;if(e<<16>>16>-1){e=k[(k[c+4>>2]|0)+((e<<16>>16)*24|0)>>2]|0;k[g>>2]=d;k[g+4>>2]=e;e=1555;d=zh(f,27824,g)|0}else{k[g>>2]=d;e=2579;d=zh(f,34408,g)|0}Es(a,e,b,d,-1,2);r=h;return}function Lt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a+316|0;f=k[e>>2]|0;b=qr(a,f,Rr(k[a>>2]|0,b,0,0)|0)|0;if(b){a=(k[b>>2]|0)+-1|0;f=k[b+4>>2]|0;k[f+(a*20|0)+16>>2]=c;a=f+(a*20|0)+13|0;i[a>>0]=i[a>>0]&-5|d<<2&4}k[e>>2]=b;return}function Mt(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;f=k[d>>2]|0;if(!(f+-1&f)){h=ha((f|0)==0?1:f<<1,c)|0;a=wo(a,b,h,((h|0)<0)<<31>>31)|0;if(!a){k[e>>2]=-1;a=b}else g=4}else{a=b;g=4}if((g|0)==4){kw(a+(ha(f,c)|0)|0,0,c|0)|0;k[e>>2]=f;k[d>>2]=(k[d>>2]|0)+1}return a|0}function Nt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h;k[g>>2]=0;b=k[a+12>>2]|0;if((b|0)!=0?(c=k[b+24>>2]|0,(c|0)>0):0){k[g>>2]=c;b=c}else b=0;c=k[a+16>>2]|0;if((c|0)!=0?(d=k[c+24>>2]|0,(d|0)>(b|0)):0)k[g>>2]=d;e=a+4|0;b=a+20|0;if(!(k[e>>2]&2048)){c=k[b>>2]|0;if(c){yu(c,g);b=k[b>>2]|0;if((b|0)!=0?(f=k[b>>2]|0,(f|0)>0):0){d=k[b+4>>2]|0;c=0;b=0;do{b=k[(k[d+(c*20|0)>>2]|0)+4>>2]|b;c=c+1|0}while((c|0)!=(f|0));b=b&2097408}else b=0;k[e>>2]=k[e>>2]|b}}else Js(k[b>>2]|0,g);k[a+24>>2]=(k[g>>2]|0)+1;r=h;return}function Ot(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Tq(a)|0;g=a+72|0;f=(k[g>>2]|0)+1|0;k[g>>2]=f;a=rh(k[a>>2]|0,8,0)|0;if(a){g=a;k[g>>2]=c;k[g+4>>2]=d}Ch(e,Bh(e,26,0,f,0)|0,a,-13);nq(e,1);if(!(i[(k[e>>2]|0)+65>>0]|0))ah(k[e+16>>2]|0,b,-1,1,0)|0;Bh(e,35,f,1,0)|0;return}function Pt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();e=f;b=k[a>>2]|0;c=b+16|0;d=k[(k[c>>2]|0)+20>>2]|0;do if(!d)b=0;else{if((i[b+63>>0]|0)!=0?(i[d+8>>0]|0)==0:0){Rl(d);k[(k[c>>2]|0)+20>>2]=0;Jg(b);b=0;break}yh(a,32128,e);b=1}while(0);r=f;return b|0}function Qt(a){a=a|0;var b=0,c=0,d=0;if((i[a+63>>0]|0)!=0?(b=k[a+20>>2]|0,(b|0)>0):0){d=a+24|0;c=k[a+16>>2]|0;while(1){b=b+-1|0;a=k[c+4>>2]|0;if(a)yo(a,k[d>>2]&28|l[c+8>>0]);if((b|0)<=0)break;else c=c+16|0}}return}function Rt(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,l=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;if((r|0)>=(s|0))ka();w=z;x=k[c+20>>2]|0;g=k[c+40>>2]|0;if((x|0)==1){q=j[b+36>>1]|0;f=q<<16>>16;if(q<<16>>16>-1)if((g|0)!=0?(id(k[(k[b+4>>2]|0)+(f*24|0)>>2]|0,g)|0)!=0:0){v=0;y=8}else e=0;else{v=0;y=8}}else if(e){f=rh(k[a>>2]|0,x<<2,0)|0;if(!f)e=1;else{k[e>>2]=f;v=f;y=8}}else{v=0;y=8}a:do if((y|0)==8){e=k[b+8>>2]|0;b:do if(e){q=(g|0)==0;u=(x|0)>0;p=b+4|0;t=(v|0)==0;c:while(1){do if((m[e+46>>1]|0)==(x|0)?(i[e+50>>0]|0)!=0:0){if(q)if((i[e+51>>0]&3)==2){y=16;break c}else break;d:do if(u){h=k[e+4>>2]|0;l=k[p>>2]|0;n=k[e+32>>2]|0;o=0;while(1){b=j[h+(o<<1)>>1]|0;g=k[l+(b*24|0)+16>>2]|0;if(id(k[n+(o<<2)>>2]|0,(g|0)!=0?g:11152)|0){g=o;break d}g=k[l+(b*24|0)>>2]|0;f=0;while(1){b=f+1|0;if(!(id(k[c+(f<<3)+40>>2]|0,g)|0)){b=f;y=23;break}if((b|0)<(x|0))f=b;else break}if((y|0)==23){y=0;if(!t)k[v+(o<<2)>>2]=k[c+(b<<3)+36>>2]}g=o+1|0;if((b|0)==(x|0)){g=o;break d}if((g|0)<(x|0))o=g;else break}}else g=0;while(0);if((g|0)==(x|0))break c}while(0);e=k[e+20>>2]|0;if(!e)break b}if((y|0)==16)if(!(t|u^1)){f=0;do{k[v+(f<<2)>>2]=k[c+(f<<3)+36>>2];f=f+1|0}while((f|0)!=(x|0))}k[d>>2]=e;e=0;break a}while(0);if(!(i[a+438>>0]|0)){q=k[c+8>>2]|0;k[w>>2]=k[k[c>>2]>>2];k[w+4>>2]=q;yh(a,32008,w)}rg(k[a>>2]|0,v);e=1}while(0);r=z;return e|0}function St(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;g=r;r=r+16|0;if((r|0)>=(s|0))ka();f=g;if(!(k[b+12>>2]|0)){k[f>>2]=0;h=k[a>>2]|0;e=b+4|0;b=k[e>>2]|0;cs(h,k[b+(c*24|0)+4>>2]|0,i[h+62>>0]|0,i[b+(c*24|0)+21>>0]|0,f)|0;b=k[f>>2]|0;if(b)Ch(a,-1,b,-8);if((i[(k[e>>2]|0)+(c*24|0)+21>>0]|0)==69)Bh(a,39,d,0,0)|0}r=g;return}function Tt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!b)d=0;else{d=b;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;d=d-b&1073741823}d=Xh(a,b,d,2,1,0)|0;if(d){d=d+2|0;j[d>>1]=m[d>>1]|c&255}return}function Ut(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=k[a+8>>2]|0;r=k[b+12>>2]|0;do if(f){l=b+36|0;if(!(k[l>>2]|0)){k[f>>2]=0;break}else{p=Cs(q)|0;k[f>>2]=p;k[a+96>>2]=c;p=a+100|0;k[p>>2]=(k[p>>2]|0)+1;lt(a,k[l>>2]|0,k[f>>2]|0,16);break}}while(0);if((e|0)!=0?(i[b+51>>0]&8)!=0:0)l=b+46|0;else l=b+48|0;l=j[l>>1]|0;n=l&65535;o=a+60|0;e=k[o>>2]|0;p=a+56|0;f=k[p>>2]|0;if((f|0)<(n|0)){e=a+72|0;m=k[e>>2]|0;k[e>>2]=m+n;m=m+1|0}else{k[o>>2]=e+n;k[p>>2]=f-n;m=e}do if(!g)e=0;else{if((m|0)==(h|0)?(k[g+36>>2]|0)==0:0){e=g;break}e=0}while(0);if(l<<16>>16){g=(e|0)==0;h=b+4|0;f=e+4|0;l=0;do{if(!g){e=j[(k[h>>2]|0)+(l<<1)>>1]|0;if((j[(k[f>>2]|0)+(l<<1)>>1]|0)!=e<<16>>16)s=21}else{e=j[(k[h>>2]|0)+(l<<1)>>1]|0;s=21}if((s|0)==21){s=0;st(q,r,c,e<<16>>16,l+m|0);Uq(q,39)|0}l=l+1|0}while((l|0)<(n|0))}if(d)Bh(q,49,m,n,d)|0;it(a,m,n);if((k[p>>2]|0)<(n|0)){k[p>>2]=n;k[o>>2]=m}return m|0}function Vt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(b){c=k[a+8>>2]|0;d=k[c+24>>2]|0;e=~b;if((b|0)<0?(f=k[d+112>>2]|0,(f|0)!=0):0)k[f+(e<<2)>>2]=k[c+32>>2];k[d+88>>2]=(k[c+32>>2]|0)+-1;gu(a)}return}function Wt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();e=f;c=k[b+16>>2]|0;a:do if((c|0)!=0?(d=k[b+64>>2]|0,(d|0)!=0):0){c=k[c+8>>2]|0;b:do if(c){while(1){if(!(id(k[c>>2]|0,d)|0))break;c=k[c+20>>2]|0;if(!c)break b}k[b+68>>2]=c;c=0;break a}while(0);k[e>>2]=d;k[e+4>>2]=0;yh(a,28104,e);i[a+17>>0]=1;c=1}else c=0;while(0);r=f;return c|0}function Xt(a,b){a=a|0;b=b|0;var c=0,d=0;if(a){c=Yt(a,b)|0;if(b&1){d=Xt(k[a+12>>2]|0,b)|0;return d+c+(Xt(k[a+16>>2]|0,b)|0)|0}}else c=0;return c|0} -function Yt(a,b){a=a|0;b=b|0;var c=0;if(b&1)if(!(k[a+12>>2]|0))b=(k[a+20>>2]|0)==0?12:28;else b=28;else b=48;if((k[a+4>>2]&1024|0)==0?(c=k[a+8>>2]|0,(c|0)!=0):0){a=c;while(1)if(!(i[a>>0]|0))break;else a=a+1|0;b=(b|1)+(a-c&1073741823)|0}return b+7&-8|0}function Zt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=k[a>>2]|0;g=d+20|0;c=k[g>>2]|0;if((c|0)>0){f=0;e=k[d+16>>2]|0;while(1){d=k[(k[e+12>>2]|0)+16>>2]|0;if(d){c=d;do{_t(a,k[c+8>>2]|0,b);c=k[c>>2]|0}while((c|0)!=0);c=k[g>>2]|0}f=f+1|0;if((f|0)>=(c|0))break;else e=e+16|0}}return}function _t(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,l=0,m=0,n=0;d=k[b+8>>2]|0;if(d){m=(c|0)==0;i=b+68|0;l=a+408|0;do{a:do if(!m){g=d+32|0;b=j[d+48>>1]|0;if(b<<16>>16){f=k[d+4>>2]|0;b=b&65535;e=0;do{if((j[f+(e<<1)>>1]|0)>-1?(id(k[(k[g>>2]|0)+(e<<2)>>2]|0,c)|0)==0:0){n=9;break a}e=e+1|0}while((e|0)<(b|0))}}else n=9;while(0);if((n|0)==9){n=0;b=k[a>>2]|0;e=k[i>>2]|0;b:do if(e){h=k[b+20>>2]|0;if((h|0)>0){f=k[b+16>>2]|0;g=0;while(1){b=g+1|0;if((k[f+(g<<4)+12>>2]|0)==(e|0)){b=g;break b}if((b|0)<(h|0))g=b;else break}}else b=0}else b=-1e6;while(0);h=k[l>>2]|0;Fr(a,b);h=((h|0)==0?a:h)+328|0;k[h>>2]=k[h>>2]|1<>2]|0}while((d|0)!=0)}return}function $t(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=k[(k[(k[a>>2]|0)+16>>2]|0)+(b<<4)+12>>2]|0;f=k[a+408>>2]|0;Fr(a,b);f=((f|0)==0?a:f)+328|0;k[f>>2]=k[f>>2]|1<>2]|0;k[f>>2]=d+3;mv(a,b,d,0,0);e=(k[a+72>>2]|0)+1|0;f=k[f>>2]|0;c=k[c+16>>2]|0;if(c)do{nv(a,k[c+8>>2]|0,0,d,e,f);c=k[c>>2]|0}while((c|0)!=0);ov(a,b);return}function au(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a>>2]|0;g=k[b+68>>2]|0;a:do if(g){h=k[d+20>>2]|0;if((h|0)>0){e=k[d+16>>2]|0;d=0;while(1){f=d+1|0;if((k[e+(d<<4)+12>>2]|0)==(g|0)){f=d;break a}if((f|0)<(h|0))d=f;else break}}else f=0}else f=-1e6;while(0);d=k[a+408>>2]|0;Fr(a,f);d=((d|0)==0?a:d)+328|0;k[d>>2]=k[d>>2]|1<>2]|0;k[d>>2]=e+3;if(!c)mv(a,f,e,k[b>>2]|0,28544);else mv(a,f,e,k[c>>2]|0,28536);nv(a,b,c,e,(k[a+72>>2]|0)+1|0,k[d>>2]|0);ov(a,f);return}function bu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=((c|0)/2|0)+1|0;e=rh(a,e,((e|0)<0)<<31>>31)|0;a=c+-1|0;if(e){if((a|0)>0){d=0;do{f=i[b+d>>0]|0;g=i[b+(d|1)>>0]|0;i[e+((d|0)/2|0)>>0]=(0-(g>>>6&1)&9)+g&15|(0-(f>>>6&1)&9)+f<<4;d=d+2|0}while((d|0)<(a|0));a=(c&-2|0)/2|0}else a=0;i[e+a>>0]=0}return e|0}function cu(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;j=r;r=r+16|0;if((r|0)>=(s|0))ka();f=j+8|0;h=j;g=k[a+8>>2]|0;e=b+8|0;do if(!(k[b+4>>2]&1024)){e=k[e>>2]|0;b=oi(e,h)|0;if((b|0)!=0?!((b|0)==2&(c|0)!=0):0)if(!(Kc(e,29144,2)|0)){k[f>>2]=e;yh(a,29152,f);break}else{du(g,e,c,d);break}if(c){if((b|0)==2){b=0;e=-2147483648}else{b=h;b=iw(0,0,k[b>>2]|0,k[b+4>>2]|0)|0;e=L}c=h;k[c>>2]=b;k[c+4>>2]=e}b=rh(k[g>>2]|0,8,0)|0;if(b){c=h;f=k[c>>2]|0;c=k[c+4>>2]|0;e=b;a=e;i[a>>0]=f;i[a+1>>0]=f>>8;i[a+2>>0]=f>>16;i[a+3>>0]=f>>24;e=e+4|0;i[e>>0]=c;i[e+1>>0]=c>>8;i[e+2>>0]=c>>16;i[e+3>>0]=c>>24}Ch(g,Bh(g,26,0,d,0)|0,b,-13)}else{b=k[e>>2]|0;Bh(g,25,(c|0)==0?b:0-b|0,d,0)|0}while(0);r=j;return}function du(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;g=r;r=r+16|0;if((r|0)>=(s|0))ka();f=g;if(b){e=b;while(1)if(!(i[e>>0]|0))break;else e=e+1|0;Yl(b,f,e-b&1073741823,1)|0;if(c)p[f>>3]=-+p[f>>3];e=rh(k[a>>2]|0,8,0)|0;if(e){b=f;h=k[b>>2]|0;b=k[b+4>>2]|0;c=e;f=c;i[f>>0]=h;i[f+1>>0]=h>>8;i[f+2>>0]=h>>16;i[f+3>>0]=h>>24;c=c+4|0;i[c>>0]=b;i[c+1>>0]=b>>8;i[c+2>>0]=b>>16;i[c+3>>0]=b>>24}Ch(a,Bh(a,133,0,d,0)|0,e,-12)}r=g;return}function eu(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;if((r|0)>=(s|0))ka();e=j;a:do if(!b)g=0;else while(1){d=k[b+4>>2]|0;if(!(d&4096)){g=b;break a}if(!(d&262144))b=b+12|0;else b=k[(k[b+20>>2]|0)+4>>2]|0;b=k[b>>2]|0;if(!b){g=0;break}}while(0);b:do if(((i[a+23>>0]|0)!=0?(i[g>>0]|0)!=-97:0)?(k[e+0>>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,d=e+20|0,i[d>>0]=2,k[e>>2]=78,k[e+4>>2]=79,k[e+24>>2]=0,ws(e,g)|0,(i[d>>0]|0)!=0):0){d=k[a+316>>2]|0;k[c>>2]=0;c:do if((d|0)!=0?(f=k[d>>2]|0,(f|0)>0):0){b=f;d=k[d+4>>2]|0;while(1){if((i[d+13>>0]&4)!=0?(Hu(k[d>>2]|0,g,-1)|0)==0:0)break;b=b+-1|0;if((b|0)<=0)break c;else d=d+20|0}d=k[d+16>>2]|0;break b}while(0);b=a+72|0;d=(k[b>>2]|0)+1|0;k[b>>2]=d;Lt(a,g,d,1)}else h=18;while(0);do if((h|0)==18){b=a+19|0;d=i[b>>0]|0;if(!(d<<24>>24)){b=a+72|0;d=(k[b>>2]|0)+1|0;k[b>>2]=d}else{d=d+-1<<24>>24;i[b>>0]=d;d=k[a+((d&255)<<2)+24>>2]|0}b=ns(a,g,d)|0;if((b|0)==(d|0)){k[c>>2]=d;break}else{ds(a,d);k[c>>2]=0;d=b;break}}while(0);r=j;return d|0}function fu(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0;l=Tu(a,b,c)|0;j=Gu(b,pv(c)|0)|0;c=a+8|0;b=k[c>>2]|0;Ch(b,Bh(b,d,f,g,e)|0,l,-4);c=k[c>>2]|0;b=k[c+4>>2]|0;if(b)i[b+(((k[c+32>>2]|0)+-1|0)*20|0)+3>>0]=j&255|h;return}function gu(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0;b=a+100|0;k[b>>2]=(k[b>>2]|0)+-1;e=a+19|0;h=0;j=a+116|0;while(1){f=j+12|0;g=k[f>>2]|0;if((g|0)!=0?(k[j+8>>2]|0)>(k[b>>2]|0):0){c=j+6|0;if(i[c>>0]|0){d=i[e>>0]|0;if((d&255)<8){i[e>>0]=d+1<<24>>24;k[a+((d&255)<<2)+24>>2]=g}i[c>>0]=0}k[f>>2]=0}h=h+1|0;if((h|0)==10)break;else j=j+20|0}return}function hu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=k[a>>2]|0;a:do if(b){b:while(1){d=k[b+4>>2]|0;if(d&512){b=0;h=21;break a}switch(i[b>>0]|0){case 62:case -102:case -100:{h=8;break}case 38:case -98:{b=k[b+12>>2]|0;break}case 95:{h=7;break b}case -97:{if((i[b+38>>0]|0)==95){h=7;break b}else h=8;break}default:h=11}if((h|0)==8){c=k[b+44>>2]|0;if(!c)h=11;else{h=9;break}}c:do if((h|0)==11){h=0;if(!(d&256)){b=0;h=21;break a}c=k[b+12>>2]|0;if((c|0)!=0?(k[c+4>>2]&256|0)!=0:0){b=c;continue b}e=k[b+16>>2]|0;c=k[b+20>>2]|0;if((c|0)!=0&(d&2048|0)==0?(f=k[c>>2]|0,(f|0)>0):0){c=k[c+4>>2]|0;d=0;while(1){b=k[c+(d*20|0)>>2]|0;d=d+1|0;if(k[b+4>>2]&256)break c;if((d|0)>=(f|0)){b=e;break}}}else b=e}while(0);if(!b){b=0;h=21;break a}}if((h|0)==7)b=Bs(a,i[g+62>>0]|0,0,k[b+8>>2]|0)|0;else if((h|0)==9){b=j[b+32>>1]|0;if(b<<16>>16<=-1){b=0;h=21;break}b=bo(g,i[g+62>>0]|0,k[(k[c+4>>2]|0)+((b<<16>>16)*24|0)+16>>2]|0,0)|0}if(b)if(!(Bs(a,i[(k[a>>2]|0)+62>>0]|0,b,k[b>>2]|0)|0))b=0;else h=21;else{b=0;h=21}}else{b=0;h=21}while(0);return b|0}function iu(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,n=0,o=0,p=0;p=r;r=r+16|0;if((r|0)>=(s|0))ka();o=p+4|0;n=p;k[o>>2]=0;k[n>>2]=0;if((((d|0)!=0?(i[d>>0]|0)==-102:0)?(g=k[d+44>>2]|0,(g|0)!=0):0)?(i[g+44>>0]&16)!=0:0){d=g+60|0;while(1){d=k[d>>2]|0;if((k[d>>2]|0)==(a|0))break;else d=d+24|0}f=k[d+8>>2]|0;e=(k[f>>2]|0)+72|0;if((k[e>>2]|0)!=0?(l=b+24|0,h=ph(a,k[l>>2]|0)|0,(h|0)!=0):0){g=i[h>>0]|0;if(g<<24>>24){d=h;do{i[d>>0]=i[9328+(g&255)>>0]|0;d=d+1|0;g=i[d>>0]|0}while(g<<24>>24!=0)}c=yc[k[e>>2]&31](f,c,h,o,n)|0;rg(a,h);if(c){d=k[l>>2]|0;if(!d){d=37;f=0}else{f=d;while(1)if(!(i[f>>0]|0))break;else f=f+1|0;d=(f-d&1073741823)+37|0;f=0}e=rh(a,d,f)|0;if(e){kw(e|0,0,d|0)|0;g=e+0|0;f=b+0|0;d=g+36|0;do{k[g>>2]=k[f>>2];g=g+4|0;f=f+4|0}while((g|0)<(d|0));g=e+36|0;k[e+24>>2]=g;d=k[l>>2]|0;if(!d)f=1;else{f=d;while(1)if(!(i[f>>0]|0))break;else f=f+1|0;f=(f-d&1073741823)+1|0}pw(g|0,d|0,f|0)|0;k[e+12>>2]=k[o>>2];k[e+4>>2]=k[n>>2];n=e+2|0;j[n>>1]=m[n>>1]|16}else e=b}else e=b}else e=b}else e=b;r=p;return e|0}function ju(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,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+80|0;if((r|0)>=(s|0))ka();x=z;v=z+72|0;m=z+52|0;w=z+48|0;l=z+28|0;y=Tq(a)|0;a:do if(!y)e=0;else{e=a+100|0;k[e>>2]=(k[e>>2]|0)+1;e=b+4|0;if(!(k[e>>2]&32)){o=Tq(a)|0;j=a+80|0;f=k[j>>2]|0;k[j>>2]=f+1;f=Bh(o,44,f,0,0)|0}else f=-1;if((i[a+450>>0]|0)==2){h=k[a>>2]|0;j=(i[b>>0]|0)==75?29104:29112;o=k[a+468>>2]|0;k[x>>2]=(f|0)>-1?10360:29088;k[x+4>>2]=j;k[x+8>>2]=o;h=zh(h,29056,x)|0;Ch(y,Bh(y,157,k[a+464>>2]|0,0,0)|0,h,-1);h=b}else h=b;j=i[h>>0]|0;b:do if(j<<24>>24==75){l=b+12|0;g=pv(k[l>>2]|0)|0;i[v>>0]=g;q=a+68|0;t=k[q>>2]|0;k[q>>2]=t+1;q=b+28|0;k[q>>2]=t;p=(d|0)!=0;t=Bh(y,57,t,p&1^1,0)|0;if(p)u=0;else u=Ws(k[a>>2]|0,1,1)|0;j=b+20|0;do if(!(k[e>>2]&2048)){j=k[j>>2]|0;if(j){if(!(g<<24>>24))i[v>>0]=65;if(u){o=hu(a,k[l>>2]|0)|0;k[u+20>>2]=o}d=a+19|0;g=i[d>>0]|0;if(g<<24>>24){o=g+-1<<24>>24;i[d>>0]=o;h=k[a+((o&255)<<2)+24>>2]|0;if(!(o<<24>>24))n=24;else{o=g+-2<<24>>24;i[d>>0]=o;o=k[a+((o&255)<<2)+24>>2]|0}}else{n=a+72|0;h=(k[n>>2]|0)+1|0;k[n>>2]=h;n=24}if((n|0)==24){n=a+72|0;o=(k[n>>2]|0)+1|0;k[n>>2]=o}if(p)Bh(y,28,0,o,0)|0;l=k[j>>2]|0;if((l|0)>0){g=x+20|0;e=x+4|0;n=x+24|0;m=y+32|0;d=k[j+4>>2]|0;while(1){j=k[d>>2]|0;do if((f|0)>-1){k[x+0>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[x+16>>2]=0;k[x+20>>2]=0;i[g>>0]=1;k[x>>2]=78;k[e>>2]=79;k[n>>2]=0;ws(x,j)|0;if(i[g>>0]|0)break;Eh(y,f);f=-1}while(0);do if(p)if(!(Rs(j,w)|0)){j=ns(a,j,h)|0;Bh(y,38,j,(k[m>>2]|0)+2|0,0)|0;Bh(y,75,k[q>>2]|0,o,j)|0;break}else{Bh(y,84,k[q>>2]|0,o,k[w>>2]|0)|0;break}else{j=ns(a,j,h)|0;Ch(y,Bh(y,49,j,1,o)|0,v,1);it(a,j,1);Bh(y,110,k[q>>2]|0,o,0)|0}while(0);l=l+-1|0;if((l|0)<=0)break;else d=d+20|0}}ds(a,h);ds(a,o)}if(!u){g=f;e=0;break b}}else{h=k[j>>2]|0;o=k[q>>2]|0;i[m>>0]=11;k[m+4>>2]=o;k[m+8>>2]=0;k[m+12>>2]=0;i[m+1>>0]=g;k[h+8>>2]=0;if(!(nr(a,h,m)|0)){o=Tu(a,k[l>>2]|0,k[k[(k[h>>2]|0)+4>>2]>>2]|0)|0;k[u+20>>2]=o;break}if(!u){e=0;break a}o=(k[u>>2]|0)+-1|0;k[u>>2]=o;if(o){e=0;break a}$c(u);e=0;break a}while(0);Ch(y,t,u,-6);g=f;e=0}else{g=k[b+20>>2]|0;h=a+72|0;e=(k[h>>2]|0)+1|0;k[h>>2]=e;i[l>>0]=0;h=l+4|0;k[h>>2]=e;i[l+1>>0]=0;d=l+8|0;k[d>>2]=0;k[l+12>>2]=0;if(j<<24>>24==119){i[l>>0]=10;k[d>>2]=e;Bh(y,28,0,e,0)|0}else{i[l>>0]=3;Bh(y,25,0,e,0)|0}o=g+60|0;Lk(k[a>>2]|0,k[o>>2]|0);n=cr(a,132,0,0,20624)|0;k[o>>2]=n;k[g+8>>2]=0;if(nr(a,g,l)|0){e=0;break a}g=f;e=k[h>>2]|0}while(0);if(c)qv(y,k[b+28>>2]|0,c);if((g|0)>-1){f=k[y+32>>2]|0;if(f>>>0>g>>>0)k[(k[y+4>>2]|0)+(g*20|0)+8>>2]=f;k[(k[y+24>>2]|0)+88>>2]=f+-1}gu(a)}while(0);r=z;return e|0}function ku(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,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+16|0;if((r|0)>=(s|0))ka();h=y+4|0;v=y+8|0;t=y;k[h>>2]=0;x=k[a+8>>2]|0;e=(c|0)==(d|0);g=rv(a,b,3,e?0:h)|0;j=sv(b)|0;i[v>>0]=j;j=a+100|0;k[j>>2]=(k[j>>2]|0)+1;j=a+19|0;f=i[j>>0]|0;if(!(f<<24>>24)){p=a+72|0;w=(k[p>>2]|0)+1|0;k[p>>2]=w}else{w=f+-1<<24>>24;i[j>>0]=w;w=k[a+((w&255)<<2)+24>>2]|0}f=b+12|0;Wq(a,k[f>>2]|0,w);do if((g|0)==5){p=k[b+20>>2]|0;n=hu(a,k[f>>2]|0)|0;q=Cs(x)|0;o=(d|0)!=(c|0);if(o){f=i[j>>0]|0;if(!(f<<24>>24)){m=a+72|0;f=(k[m>>2]|0)+1|0;k[m>>2]=f}else{f=f+-1<<24>>24;i[j>>0]=f;f=k[a+((f&255)<<2)+24>>2]|0}Bh(x,85,w,w,f)|0;m=f}else m=0;if((k[p>>2]|0)>0){j=p+4|0;h=(m|0)==0;g=x+4|0;f=x+32|0;e=0;do{b=eu(a,k[(k[j>>2]|0)+(e*20|0)>>2]|0,t)|0;if(!h?(Zu(k[(k[j>>2]|0)+(e*20|0)>>2]|0)|0)!=0:0)Bh(x,85,m,b,m)|0;if((e|0)<((k[p>>2]|0)+-1|0)|o){Ch(x,Bh(x,79,w,q,b)|0,n,-4);b=k[g>>2]|0;if(b)i[b+(((k[f>>2]|0)+-1|0)*20|0)+3>>0]=i[v>>0]|0}else{Ch(x,Bh(x,78,w,c,b)|0,n,-4);b=k[g>>2]|0;if(b)i[b+(((k[f>>2]|0)+-1|0)*20|0)+3>>0]=l[v>>0]|0|16}ds(a,k[t>>2]|0);e=e+1|0}while((e|0)<(k[p>>2]|0))}if(m){Bh(x,76,m,d,0)|0;Bh(x,16,0,c,0)|0}f=k[x+24>>2]|0;e=~q;if((q|0)<0?(u=k[f+112>>2]|0,(u|0)!=0):0)k[u+(e<<2)>>2]=k[x+32>>2];k[f+88>>2]=(k[x+32>>2]|0)+-1;ds(a,m)}else{do if(Zu(k[f>>2]|0)|0){if(e){Bh(x,76,w,c,0)|0;break}f=Bh(x,77,w,0,0)|0;Bh(x,108,k[b+28>>2]|0,c,0)|0;Bh(x,16,0,d,0)|0;e=k[x+32>>2]|0;if(e>>>0>f>>>0)k[(k[x+4>>2]|0)+(f*20|0)+8>>2]=e;k[(k[x+24>>2]|0)+88>>2]=e+-1}while(0);if((g|0)==1){Bh(x,38,w,c,0)|0;Bh(x,70,k[b+28>>2]|0,c,w)|0;break}Ch(x,Bh(x,48,w,1,0)|0,v,1);e=k[b+28>>2]|0;if(!(k[h>>2]|0)){Ch(x,Bh(x,68,e,c,w)|0,1,-14);break}f=Bh(x,69,e,0,w)|0;Ch(x,f,1,-14);Bh(x,76,k[h>>2]|0,d,0)|0;Bh(x,16,0,c,0)|0;e=k[x+32>>2]|0;if(e>>>0>f>>>0)k[(k[x+4>>2]|0)+(f*20|0)+8>>2]=e;k[(k[x+24>>2]|0)+88>>2]=e+-1}while(0);ds(a,w);gu(a);r=y;return}function lu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0,n=0,o=0,q=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+48|0;if((r|0)>=(s|0))ka();B=C;z=C+28|0;c=k[a+24>>2]|0;A=k[c>>2]|0;x=b+4|0;f=k[x>>2]|0;a:do if(!(f&4)){k[x>>2]=f|4;switch(l[b>>0]|0){case 153:{w=b+20|0;t=k[w>>2]|0;if(!t)e=0;else e=k[t>>2]|0;f=i[(k[A>>2]|0)+62>>0]|0;y=c+28|0;if(j[y>>1]&16){k[B>>2]=27200;yh(A,27512,B)}u=k[b+8>>2]|0;if(!u)o=0;else{g=u;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;o=g-u&1073741823}d=Xh(k[A>>2]|0,u,o,e,f,0)|0;do if(!d){if(Xh(k[A>>2]|0,u,o,-2,f,0)|0){k[B>>2]=o;k[B+4>>2]=u;yh(A,27392,B);u=c+24|0;k[u>>2]=(k[u>>2]|0)+1;break}if(!(i[(k[A>>2]|0)+145>>0]|0)){k[B>>2]=o;k[B+4>>2]=u;yh(A,27368,B);u=c+24|0;k[u>>2]=(k[u>>2]|0)+1}}else{n=(k[d+12>>2]|0)==0;v=d+2|0;do if(j[v>>1]&1024){k[x>>2]=k[x>>2]|266240;if((e|0)!=2){k[b+28>>2]=(i[k[d+24>>2]>>0]|0)==117?8388608:125829120;break}g=k[(k[t+4>>2]|0)+20>>2]|0;p[B>>3]=-1.0;if((i[g>>0]|0)==-123){f=k[g+8>>2]|0;if(!f)g=0;else{g=f;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;g=g-f&1073741823}Yl(f,B,g,1)|0;h=+p[B>>3];if(!(h>1.0)){g=~~(h*134217728.0);k[b+28>>2]=g;if((g|0)>=0)break}else q=22}else q=22;if((q|0)==22)k[b+28>>2]=-1;yh(A,27216,B);q=c+24|0;k[q>>2]=(k[q>>2]|0)+1}while(0);g=d+24|0;f=Xq(A,31,0,k[g>>2]|0,0)|0;if(!f){if(j[v>>1]&2048)k[x>>2]=k[x>>2]|524288;if(!n)break;g=j[y>>1]|0;if(!(g&1)){k[B>>2]=o;k[B+4>>2]=u;yh(A,27328,B);u=c+24|0;k[u>>2]=(k[u>>2]|0)+1;break}j[y>>1]=g&65534;qu(a,t)|0;i[b>>0]=-101;f=b+38|0;i[f>>0]=0;b:do if(c){e=B+24|0;d=z+4|0;g=z+8|0;while(1){u=k[c+4>>2]|0;k[B+0>>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>>2]=87;k[e>>2]=z;k[z>>2]=u;k[d>>2]=0;k[g>>2]=0;qu(B,k[w>>2]|0)|0;if((k[d>>2]|0)>0)break;if(!(k[g>>2]|0))break;i[f>>0]=(i[f>>0]|0)+1<<24>>24;c=k[c+16>>2]|0;if(!c)break b}u=c+28|0;j[u>>1]=m[v>>1]&4096|m[u>>1]|2}while(0);j[y>>1]=m[y>>1]|1;c=1;break a}else if((f|0)==1){k[B>>2]=k[g>>2];yh(A,27288,B);u=c+24|0;k[u>>2]=(k[u>>2]|0)+1}i[b>>0]=101;c=1;break a}while(0);qu(a,t)|0;c=1;break a}case 135:{d=c+28|0;c=j[d>>1]|0;if(c&4){k[B>>2]=27456;yh(A,27472,B);c=j[d>>1]|0}if(c&16){k[B>>2]=27456;yh(A,27512,B)}break}case 75:case 20:case 119:{if(f&2048){g=c+20|0;d=k[g>>2]|0;e=c+28|0;f=j[e>>1]|0;if(f&4){k[B>>2]=27440;yh(A,27472,B);f=j[e>>1]|0}if(f&16){k[B>>2]=27440;yh(A,27512,B)}pu(a,k[b+20>>2]|0)|0;if((d|0)!=(k[g>>2]|0))k[x>>2]=k[x>>2]|32}break}case 27:{c=tv(A,0,0,k[b+8>>2]|0,c,b)|0;break a}case 122:{d=k[b+16>>2]|0;if((i[d>>0]|0)==27){f=d;d=b;e=0}else{f=k[d+16>>2]|0;e=k[(k[b+12>>2]|0)+8>>2]|0}c=tv(A,e,k[(k[d+12>>2]|0)+8>>2]|0,k[f+8>>2]|0,c,b)|0;break a}default:{}}if(!(k[A+64>>2]|0))c=(i[(k[A>>2]|0)+65>>0]|0)!=0?2:0;else c=2}else c=1;while(0);r=C;return c|0}function mu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=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;M=r;r=r+80|0;if((r|0)>=(s|0))ka();L=M;J=M+64|0;E=M+32|0;g=j[b+6>>1]|0;d=g&65535;a:do if(!(d&2)){D=k[a+24>>2]|0;K=k[a+12>>2]|0;a=k[K>>2]|0;if(!(d&16)){Is(K,b,D);if(k[K+64>>2]|0){c=2;break}c=(i[a+65>>0]|0)!=0?2:1;break}F=b+52|0;c=(k[F>>2]|0)!=0;G=(b|0)==0;b:do if(!G){d=E+28|0;l=E+4|0;A=E+16|0;B=E+8|0;w=a+65|0;v=K+492|0;u=(D|0)==0;t=L+4|0;q=L+12|0;p=L+24|0;o=K+64|0;x=b;c:while(1){y=x+6|0;j[y>>1]=g&65535|2;k[E+0>>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;k[E+24>>2]=0;k[E+28>>2]=0;k[E>>2]=K;if(qs(E,k[x+60>>2]|0)|0){c=2;break a}if(qs(E,k[x+64>>2]|0)|0){c=2;break a}g=k[x+32>>2]|0;if(j[y>>1]&8192){z=x+48|0;k[(k[g+28>>2]|0)+48>>2]=k[z>>2];k[z>>2]=0}z=x+32|0;if((k[g>>2]|0)>0){n=0;do{e=k[g+(n*72|0)+28>>2]|0;if(e){a=k[v>>2]|0;if(u)h=0;else{h=0;f=D;do{h=(k[f+20>>2]|0)+h|0;f=k[f+16>>2]|0}while((f|0)!=0)}f=k[g+(n*72|0)+16>>2]|0;if(f)k[v>>2]=f;k[L+0>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[L+16>>2]=0;k[L+20>>2]=0;k[L>>2]=82;k[t>>2]=83;k[q>>2]=K;k[p>>2]=D;pu(L,e)|0;k[v>>2]=a;if(k[o>>2]|0){c=2;break a}if(i[w>>0]|0){c=2;break a}if(!u){f=D;do{h=h-(k[f+20>>2]|0)|0;f=k[f+16>>2]|0}while((f|0)!=0)}g=g+(n*72|0)+45|0;i[g>>0]=i[g>>0]&-3|((h|0)!=0&1)<<1&255;g=k[z>>2]|0}n=n+1|0}while((n|0)<(k[g>>2]|0))}j[d>>1]=1;k[l>>2]=g;k[A>>2]=D;h=k[x>>2]|0;if((k[h>>2]|0)>0){g=h+4|0;f=0;do{if(qs(E,k[(k[g>>2]|0)+(f*20|0)>>2]|0)|0){c=2;break a}f=f+1|0}while((f|0)<(k[h>>2]|0))}e=k[x+40>>2]|0;g=(e|0)!=0;h=j[d>>1]|0;if(!g?(C=h&65535,(C&2|0)==0):0)j[d>>1]=C&65534;else j[y>>1]=h&4096|m[y>>1]|4;h=k[x+44>>2]|0;if(!((h|0)==0|g)){H=32;break}k[B>>2]=k[x>>2];if(qs(E,h)|0){c=2;break a}if(qs(E,k[x+36>>2]|0)|0){c=2;break a}k[A>>2]=0;j[d>>1]=m[d>>1]|1;if(j[y>>1]&8192){z=(k[(k[z>>2]|0)+28>>2]|0)+48|0;k[x+48>>2]=k[z>>2];k[z>>2]=0}if(!c?(vv(E,x,k[x+48>>2]|0,26880)|0)!=0:0){c=2;break a}if(i[w>>0]|0){c=2;break a}do if(g){if(vv(E,x,e,26888)|0){c=2;break a}if(i[w>>0]|0){c=2;break a}f=k[e>>2]|0;if((f|0)<=0)break;h=0;g=k[e+4>>2]|0;while(1){if(k[(k[g>>2]|0)+4>>2]&2){H=46;break c}h=h+1|0;if((h|0)>=(f|0))break;else g=g+20|0}}while(0);f=k[x+52>>2]|0;if(!f)break b;x=f;g=j[f+6>>1]|0}if((H|0)==32){yh(K,26832,L);c=2;break a}else if((H|0)==46){yh(K,26896,L);c=2;break a}}while(0);if(c?(I=k[b+48>>2]|0,(I|0)!=0):0){C=k[K>>2]|0;d=k[I>>2]|0;if((d|0)>(k[C+96>>2]|0)){yh(K,26960,L);c=2;break}if((d|0)>0){a=I+4|0;c=0;do{d=(k[a>>2]|0)+(c*20|0)+13|0;i[d>>0]=i[d>>0]&-2;c=c+1|0;d=k[I>>2]|0}while((c|0)<(d|0))}k[b+56>>2]=0;c=k[F>>2]|0;if(!c)if(G)a=I+4|0;else H=60;else while(1){k[c+56>>2]=b;b=k[c+52>>2]|0;if(!b){b=c;H=60;break}else{B=c;c=b;b=B}}d:do if((H|0)==60){a=I+4|0;u=C+65|0;v=L+4|0;w=L+8|0;x=L+28|0;y=L+24|0;z=L+4|0;t=b;e:while(1){q=k[t>>2]|0;if((d|0)<=0)break d;o=t+32|0;c=0;n=0;p=k[a>>2]|0;while(1){k[J>>2]=-1;l=p+13|0;do if(!(i[l>>0]&1)){d=k[p>>2]|0;f:do if(!d)d=0;else while(1){b=k[d+4>>2]|0;if(!(b&4096))break f;if(!(b&262144))d=d+12|0;else d=k[(k[d+20>>2]|0)+4>>2]|0;d=k[d>>2]|0;if(!d){d=0;break}}while(0);if(!(Rs(d,J)|0)){b=wv(q,d)|0;k[J>>2]=b;if(!b){h=Rr(C,d,0,0)|0;if(!(i[u>>0]|0)){e=k[t>>2]|0;k[L+0>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[L+16>>2]=0;k[L+20>>2]=0;k[L+24>>2]=0;k[L+28>>2]=0;k[L>>2]=K;k[v>>2]=k[o>>2];k[w>>2]=e;j[x>>1]=1;k[y>>2]=0;A=(k[K>>2]|0)+68|0;b=i[A>>0]|0;i[A>>0]=1;B=qs(L,h)|0;i[A>>0]=b;g:do if(!B){g=e+4|0;f=k[e>>2]|0;e=0;while(1){if((e|0)>=(f|0)){b=0;break g}b=e+1|0;if((Hu(k[(k[g>>2]|0)+(e*20|0)>>2]|0,h,-1)|0)<2)break;else e=b}}else b=0;while(0);k[J>>2]=b}else b=0;Lk(C,h)}if((b|0)<=0){b=1;break}}else{e=k[J>>2]|0;b=k[q>>2]|0;if((e|0)<1|(e|0)>(b|0))break e;else b=e}k[L>>2]=0;k[z>>2]=0;e=sr(C,132,L,0)|0;if(!e){c=2;break a}f=e+4|0;k[f>>2]=k[f>>2]|1024;k[e+8>>2]=b;f=k[p>>2]|0;if((f|0)==(d|0))k[p>>2]=e;else k[f+12>>2]=e;Lk(C,d);j[p+16>>1]=b;i[l>>0]=i[l>>0]|1;b=n}else b=n;while(0);c=c+1|0;d=k[I>>2]|0;if((c|0)>=(d|0))break;else{n=b;p=p+20|0}}t=k[t+56>>2]|0;if(!((t|0)!=0&(b|0)!=0))break d}k[L>>2]=c+1;k[L+4>>2]=26880;k[L+8>>2]=b;yh(K,27064,L);c=2;break a}while(0);b=0;while(1){if((b|0)>=(d|0)){c=1;break a}c=b+1|0;if(!(i[(k[a>>2]|0)+(b*20|0)+13>>0]&1))break;else b=c}k[L>>2]=c;yh(K,27e3,L);c=2}else c=1}else c=1;while(0);r=M;return c|0}function nu(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,m=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;if((r|0)>=(s|0))ka();w=z;x=k[a>>2]|0;a:do if(b){q=k[b>>2]|0;a=q*24|0;e=rh(x,a,0)|0;if(e)kw(e|0,0,a|0)|0;j[c>>1]=q;k[d>>2]=e;if((q|0)>0){o=b+4|0;t=x+65|0;a=0;p=e;while(1){m=k[o>>2]|0;b=k[m+(a*20|0)>>2]|0;b:do if(!b)b=0;else while(1){f=k[b+4>>2]|0;if(!(f&4096))break b;if(!(f&262144))b=b+12|0;else b=k[(k[b+20>>2]|0)+4>>2]|0;b=k[b>>2]|0;if(!b){b=0;break}}while(0);f=k[m+(a*20|0)+4>>2]|0;do if(!f){while(1){f=i[b>>0]|0;if(f<<24>>24==-102){v=b;y=18;break}else if(f<<24>>24==27){y=24;break}else if(f<<24>>24!=122)break;b=k[b+16>>2]|0}if((y|0)==24){y=0;k[w>>2]=k[b+8>>2];b=zh(x,10344,w)|0;break}if((y|0)==18?(y=0,u=k[v+44>>2]|0,(u|0)!=0):0){b=j[v+32>>1]|0;if(b<<16>>16<0)b=j[u+36>>1]|0;else b=b<<16>>16;if((b|0)>-1)b=k[(k[u+4>>2]|0)+(b*24|0)>>2]|0;else b=20456;k[w>>2]=b;b=zh(x,10344,w)|0;break}k[w>>2]=k[m+(a*20|0)+8>>2];b=zh(x,10344,w)|0}else b=ph(x,f)|0;while(0);if(i[t>>0]|0)break;if(!b){h=0;b=0}else{f=b;while(1)if(!(i[f>>0]|0))break;else f=f+1|0;h=f-b&1073741823}c:do if((a|0)>0){f=0;m=0;n=h;while(1){if(!(id(k[e+(m*24|0)>>2]|0,b)|0)){g=n;while(1){h=g+-1|0;if((h|0)<=1)break;if(((l[b+h>>0]|0)+-48|0)>>>0<10)g=h;else break}if((g|0)>0)g=(i[b+h>>0]|0)==58?h:n;else g=n;i[b+g>>0]=0;f=f+1|0;k[w>>2]=b;k[w+4>>2]=f;h=zh(x,26824,w)|0;rg(x,b);if(!h){b=0;break c}else{m=-1;b=h}}else g=n;m=m+1|0;if((m|0)>=(a|0))break;else n=g}}while(0);k[p>>2]=b;a=a+1|0;if((a|0)<(q|0))p=p+24|0;else{b=t;break a}}rg(x,b);b=t}else y=6}else{j[c>>1]=0;k[d>>2]=0;e=0;y=6}while(0);if((y|0)==6){b=x+65|0;a=0}if(i[b>>0]|0){if((a|0)>0){b=0;do{rg(x,k[e+(b*24|0)>>2]|0);b=b+1|0}while((b|0)!=(a|0))}rg(x,e);k[d>>2]=0;j[c>>1]=0}r=z;return}function ou(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=0,o=0,p=0,q=0,t=0;p=r;r=r+32|0;if((r|0)>=(s|0))ka();o=p;n=k[a>>2]|0;if(!(i[n+65>>0]|0)){k[o+0>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[o+16>>2]=0;k[o+20>>2]=0;k[o+24>>2]=0;k[o+28>>2]=0;k[o+4>>2]=k[c+32>>2];g=k[(k[c>>2]|0)+4>>2]|0;f=b+38|0;if((j[f>>1]|0)>0){c=0;d=0;h=0;m=k[b+4>>2]|0;while(1){e=k[g+(h*20|0)>>2]|0;q=m+22|0;t=ph(n,Du(o,e,q)|0)|0;k[m+12>>2]=t;c=ow(l[q>>0]|0,0,c|0,d|0)|0;d=L;q=pv(e)|0;i[m+21>>0]=q<<24>>24==0?65:q;e=hu(a,e)|0;if(e){e=ph(n,k[e>>2]|0)|0;k[m+16>>2]=e}h=h+1|0;if((h|0)>=(j[f>>1]|0))break;else m=m+24|0}d=nw(c|0,d|0,2)|0;c=L}else{d=0;c=0}o=ks(d,c)|0;j[b+42>>1]=o}r=p;return}function pu(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;do if(!b)c=0;else{f=a+4|0;d=k[f>>2]|0;if((d|0)==0?(k[a+8>>2]|0)==0:0){c=0;break}i=a+16|0;k[i>>2]=(k[i>>2]|0)+1;g=a+8|0;a:while(1){if((d|0)!=0?(c=wc[d&127](a,b)|0,(c|0)!=0):0){j=24;break}if(qu(a,k[b>>2]|0)|0){j=19;break}if(ws(a,k[b+36>>2]|0)|0){j=19;break}if(qu(a,k[b+40>>2]|0)|0){j=19;break}if(ws(a,k[b+44>>2]|0)|0){j=19;break}if(qu(a,k[b+48>>2]|0)|0){j=19;break}if(ws(a,k[b+60>>2]|0)|0){j=19;break}if(ws(a,k[b+64>>2]|0)|0){j=19;break}d=k[b+32>>2]|0;if((d|0)!=0?(h=k[d>>2]|0,(h|0)>0):0){e=h;d=d+8|0;while(1){if(pu(a,k[d+20>>2]|0)|0){j=19;break a}e=e+-1|0;if((e|0)<=0)break;else d=d+72|0}}d=k[g>>2]|0;if(d)oc[d&15](a,b);b=k[b+52>>2]|0;if(!b){c=0;break}d=k[f>>2]|0}if((j|0)==19){k[i>>2]=(k[i>>2]|0)+-1;c=2;break}else if((j|0)==24)c=c&2;k[i>>2]=(k[i>>2]|0)+-1}while(0);return c|0}function qu(a,b){a=a|0;b=b|0;var c=0;a:do if((b|0)!=0?(c=k[b>>2]|0,(c|0)>0):0){b=k[b+4>>2]|0;while(1){if(ws(a,k[b>>2]|0)|0){c=2;break a}c=c+-1|0;if((c|0)<=0){c=0;break}else b=b+20|0}}else c=0;while(0);return c|0}function ru(a){a=a|0;var b=0,c=0;c=r;r=r+16|0;if((r|0)>=(s|0))ka();b=c;k[b>>2]=0;if((k[a+4>>2]&1|0)==0?(Rs(a,b)|0)!=0:0)a=(k[b>>2]|0)==0&1;else a=0;r=c;return a|0}function su(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,n=0,o=0,p=0,q=0;q=r;r=r+32|0;if((r|0)>=(s|0))ka();o=q;f=k[c+12>>2]|0;k[o+0>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[o+16>>2]=0;k[o+20>>2]=200;i[o+24>>0]=1;i[o+25>>0]=0;k[o>>2]=k[a>>2];l=c+46|0;if(j[l>>1]|0){n=c+4|0;g=f+4|0;p=0;do{h=k[(k[g>>2]|0)+((j[(k[n>>2]|0)+(p<<1)>>1]|0)*24|0)>>2]|0;if(p)Xk(o,28920,2);e=k[f>>2]|0;if(!e)d=0;else{d=e;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;d=d-e&1073741823}Xk(o,e,d);Xk(o,28928,1);if(!h)d=0;else{d=h;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;d=d-h&1073741823}Xk(o,h,d);p=p+1|0}while((p|0)<(m[l>>1]|0))}p=yg(o)|0;Es(a,(i[c+51>>0]&3)==2?1555:2067,b,p,-1,2);r=q;return}function tu(a,b){a=a|0;b=b|0;return 0}function uu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0;p=r;r=r+16|0;if((r|0)>=(s|0))ka();o=p+8|0;l=p;n=b+52|0;a:do if((k[n>>2]|0)!=0?(d=k[b+48>>2]|0,!((d|0)==0|(b|0)==0)):0){c=b;while(1){h=i[c+4>>0]|0;if(!(h<<24>>24==119|h<<24>>24==116))break;c=k[c+52>>2]|0;if(!c){c=0;break a}}e=k[d+4>>2]|0;c=k[d>>2]|0;while(1){d=c+-1|0;if((c|0)<=0){c=0;break a}if(!(k[(k[e+(d*20|0)>>2]|0)+4>>2]&256))c=d;else break}if((c|0)>=1){c=k[a+12>>2]|0;f=k[c>>2]|0;a=rh(f,72,0)|0;if(a){g=a+0|0;h=g+72|0;do{i[g>>0]=0;g=g+1|0}while((g|0)<(h|0));e=l;k[e>>2]=0;k[e+4>>2]=0;e=or(c,0,0,0,l,a,0,0)|0;if(e){g=a+0|0;d=b+0|0;h=g+72|0;do{k[g>>2]=k[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(h|0));k[b+32>>2]=e;k[o>>2]=0;k[o+4>>2]=0;c=qr(c,0,sr(f,116,o,0)|0)|0;k[b>>2]=c;i[b+4>>0]=119;k[b+36>>2]=0;k[a+40>>2]=0;k[a+44>>2]=0;k[a+48>>2]=0;k[n>>2]=0;k[b+56>>2]=0;c=b+6|0;j[c>>1]=(m[c>>1]|0)&57279|8192;k[(k[a+52>>2]|0)+56>>2]=a;k[a+60>>2]=0;k[a+64>>2]=0;c=0}else c=2}else c=2}else c=0}else c=0;while(0);r=p;return c|0}function vu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=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;X=r;r=r+32|0;if((r|0)>=(s|0))ka();W=X;T=X+16|0;G=a+12|0;V=k[G>>2]|0;U=k[V>>2]|0;R=b+6|0;g=m[R>>1]|0;j[R>>1]=g|16;S=U+65|0;a:do if(!(i[S>>0]|0)){F=b+32|0;P=k[F>>2]|0;if((P|0)!=0&(g&16|0)==0){Q=k[b>>2]|0;if((k[a+8>>2]|0)==9){g=b;while(1){f=k[g+56>>2]|0;if(!f)break;else g=f}g=k[g+68>>2]|0;if(g){C=V+532|0;k[g+4>>2]=k[C>>2];k[C>>2]=g;i[V+449>>0]=0}}Hs(V,P);O=P+8|0;g=k[P>>2]|0;b:do if((g|0)>0){B=0;v=O;c:while(1){if(!(i[v+37>>0]&8)){C=v+16|0;c=k[G>>2]|0;if(k[C>>2]|0){d=c;N=10;break}q=k[c>>2]|0;f=c+532|0;h=k[f>>2]|0;d:do if((k[v+4>>2]|0)==0?(E=k[v+8>>2]|0,!((E|0)==0|(h|0)==0)):0){e:while(1){n=k[h>>2]|0;if((n|0)>0){e=0;do{g=h+(e<<4)+8|0;d=k[g>>2]|0;if(!(id(E,d)|0)){z=e;break e}e=e+1|0}while((e|0)<(n|0))}h=k[h+4>>2]|0;if(!h){N=46;break d}}w=h+(z<<4)+20|0;n=k[w>>2]|0;if(n){b=n;N=21;break c}y=rh(q,76,0)|0;if(!y){b=C;N=23;break c}o=y+0|0;n=o+76|0;do{i[o>>0]=0;o=o+1|0}while((o|0)<(n|0));k[C>>2]=y;t=y+40|0;j[t>>1]=1;A=ph(q,k[g>>2]|0)|0;k[y>>2]=A;j[y+36>>1]=-1;j[y+28>>1]=200;A=y+44|0;i[A>>0]=l[A>>0]|2;A=lr(q,k[h+(z<<4)+16>>2]|0,0)|0;k[v+20>>2]=A;if(i[q+65>>0]|0){b=2;break a}x=((i[A+4>>0]|0)+-115&255)<2;if(x?(u=k[A+32>>2]|0,D=k[u>>2]|0,(D|0)>0):0){n=A+6|0;o=D;q=0;do{do if(!(k[u+(q*72|0)+12>>2]|0)){p=k[u+(q*72|0)+16>>2]|0;if(!p)break;if(id(p,k[g>>2]|0)|0)break;k[u+(q*72|0)+24>>2]=y;o=u+(q*72|0)+45|0;i[o>>0]=i[o>>0]|8;j[t>>1]=(j[t>>1]|0)+1<<16>>16;j[n>>1]=m[n>>1]|2048;o=k[u>>2]|0}while(0);q=q+1|0}while((q|0)<(o|0))}if((m[t>>1]|0)>2){b=g;N=34;break c}k[w>>2]=28176;e=k[f>>2]|0;k[f>>2]=h;if(x)n=k[A+52>>2]|0;else n=A;pu(a,n)|0;n=A;while(1){d=k[n+52>>2]|0;if(!d)break;else n=d}d=k[n>>2]|0;n=k[h+(z<<4)+12>>2]|0;do if(n){if(!d)break;p=k[d>>2]|0;d=k[n>>2]|0;if((p|0)!=(d|0)){b=p;N=42;break c}}else n=d;while(0);nu(c,n,y+38|0,y+4|0);if(x){k[w>>2]=(j[A+6>>1]&2048)==0?28280:28240;pu(a,A)|0}k[w>>2]=0;k[f>>2]=e;if(!(k[C>>2]|0))N=46}else N=46;while(0);do if((N|0)==46){N=0;if(!(k[v+8>>2]|0)){h=k[v+20>>2]|0;if(pu(a,h)|0){b=2;break a}f=rh(U,76,0)|0;if(!f){b=C;N=49;break c}o=f+0|0;n=o+76|0;do{i[o>>0]=0;o=o+1|0}while((o|0)<(n|0));k[C>>2]=f;j[f+40>>1]=1;k[W>>2]=f;C=zh(U,27760,W)|0;k[f>>2]=C;while(1){g=k[h+52>>2]|0;if(!g)break;else h=g}nu(V,k[h>>2]|0,f+38|0,f+4|0);j[f+36>>1]=-1;j[f+28>>1]=200;C=f+44|0;i[C>>0]=l[C>>0]|2;break}c=Zr(V,0,v)|0;k[C>>2]=c;if(!c){b=2;break a}h=c+40|0;g=j[h>>1]|0;if(g<<16>>16==-1){b=C;N=55;break c}j[h>>1]=g+1<<16>>16;h=c+12|0;if((k[h>>2]|0)==0?(i[c+44>>0]&16)==0:0)break;if(mr(V,c)|0){b=2;break a}C=lr(U,k[h>>2]|0,0)|0;k[v+20>>2]=C;pu(a,C)|0}while(0);if(Wt(V,v)|0){b=2;break a}g=k[P>>2]|0}B=B+1|0;if((B|0)>=(g|0))break b;else v=v+72|0}if((N|0)==10){while(1){c=k[b+56>>2]|0;if(!c)break;else b=c}b=k[b+68>>2]|0;if(!b){b=1;break a}k[d+532>>2]=k[b+4>>2];b=1;break a}else if((N|0)==21){k[W>>2]=d;yh(c,b,W);b=2;break a}else if((N|0)==23){k[b>>2]=0;b=2;break a}else if((N|0)==34){k[W>>2]=k[b>>2];yh(c,28128,W);b=2;break a}else if((N|0)==42){k[W>>2]=k[g>>2];k[W+4>>2]=b;k[W+8>>2]=d;yh(c,28200,W);k[f>>2]=e;b=2;break a}else if((N|0)==49){k[b>>2]=0;b=2;break a}else if((N|0)==55){k[W>>2]=k[c>>2];yh(V,27776,W);k[b>>2]=0;b=2;break a}}while(0);if(!(i[S>>0]|0)){v=k[F>>2]|0;f:do if(((k[v>>2]|0)+-1|0)>0){w=b+36|0;y=0;z=v+8|0;A=v+80|0;g:while(1){x=k[A+16>>2]|0;if(!((k[z+16>>2]|0)==0|(x|0)==0)){D=l[A+36>>0]|0;u=D&32;q=(u|0)==0;u=u>>>5;t=A+44|0;if(D&4){if(k[t>>2]|0){N=73;break}g=A+48|0;if(k[g>>2]|0){N=73;break}d=x+38|0;h=j[d>>1]|0;if(h<<16>>16>0){c=x+4|0;p=y+1|0;o=0;do{f=k[(k[c>>2]|0)+(o*24|0)>>2]|0;e=0;do{n=xv(k[v+(e*72|0)+24>>2]|0,f)|0;if((n|0)>-1){h=e;N=77;break}e=e+1|0}while((e|0)<(p|0));if((N|0)==77){N=0;yv(V,v,h,n,p,o,u,w);h=j[d>>1]|0}o=o+1|0}while((o|0)<(h<<16>>16|0))}}else g=A+48|0;h=k[t>>2]|0;if(h){if(k[g>>2]|0){N=81;break}if(!q){zv(h,k[A+40>>2]|0);h=k[t>>2]|0}D=xs(k[V>>2]|0,k[w>>2]|0,h)|0;k[w>>2]=D;k[t>>2]=0}f=k[g>>2]|0;if((f|0)!=0?(M=f+4|0,(k[M>>2]|0)>0):0){e=y+1|0;n=0;do{c=k[(k[f>>2]|0)+(n<<3)>>2]|0;d=xv(x,c)|0;if((d|0)<0){N=91;break g}else h=0;while(1){g=xv(k[v+(h*72|0)+24>>2]|0,c)|0;if((g|0)>-1)break;h=h+1|0;if((h|0)>=(e|0)){N=91;break g}}yv(V,v,h,g,e,d,u,w);n=n+1|0}while((n|0)<(k[M>>2]|0))}}y=y+1|0;if((y|0)>=((k[v>>2]|0)+-1|0))break f;else{z=z+72|0;A=A+72|0}}if((N|0)==73){k[W>>2]=0;yh(V,27928,W);b=2;break a}else if((N|0)==81){yh(V,27984,W);b=2;break a}else if((N|0)==91){k[W>>2]=c;yh(V,28040,W);b=2;break a}}while(0);c=k[Q>>2]|0;h=(c|0)>0;h:do if(h){d=k[Q+4>>2]|0;g=0;do{f=k[d+(g*20|0)>>2]|0;e=i[f>>0]|0;if(e<<24>>24==122){if((i[k[f+16>>2]>>0]|0)==116)break h}else if(e<<24>>24==116)break h;g=g+1|0}while((g|0)<(c|0))}else g=0;while(0);if((g|0)<(c|0)){M=k[Q+4>>2]|0;g=k[(k[V>>2]|0)+24>>2]|0;if(!(g&32))L=0;else L=(g&64|0)==0;if(h){H=U+20|0;I=U+16|0;J=T+4|0;K=0;c=0;do{f=M+(K*20|0)|0;h=k[f>>2]|0;g=i[h>>0]|0;if(g<<24>>24==116){a=0;N=110}else if(g<<24>>24==122?(i[k[h+16>>2]>>0]|0)==116:0){a=k[(k[h+12>>2]|0)+8>>2]|0;N=110}else N=106;do if((N|0)==106){c=qr(V,c,h)|0;if(c){C=M+(K*20|0)+4|0;B=(k[c>>2]|0)+-1|0;A=k[c+4>>2]|0;k[A+(B*20|0)+4>>2]=k[C>>2];D=M+(K*20|0)+8|0;k[A+(B*20|0)+8>>2]=k[D>>2];k[C>>2]=0;k[D>>2]=0}k[f>>2]=0}else if((N|0)==110){if((k[P>>2]|0)>0){D=(a|0)==0;E=(a|0)!=0;F=0;G=O;g=0;while(1){q=k[G+16>>2]|0;f=k[G+20>>2]|0;h=k[G+12>>2]|0;if(!h)h=k[q>>2]|0;if(i[S>>0]|0)break;if((f|0)!=0?(j[f+6>>1]&512)!=0:0){C=0;N=125}else N=117;do if((N|0)==117){N=0;if(!D?(id(a,h)|0)!=0:0)break;n=k[q+68>>2]|0;if(!n){f=0;C=27816;N=125;break}e=k[H>>2]|0;o=k[I>>2]|0;if((e|0)>0){d=0;while(1){f=d+1|0;if((k[o+(d<<4)+12>>2]|0)==(n|0)){f=d;break}if((f|0)<(e|0))d=f;else break}if((f|0)>-1)e=f;else{f=0;C=27816;N=125;break}}else e=0;f=0;C=k[o+(e<<4)>>2]|0;N=125}while(0);do if((N|0)==125){N=0;B=q+38|0;t=j[B>>1]|0;if(t<<16>>16<=0)break;x=q+4|0;w=(f|0)!=0;o=E&w;y=(F|0)>0;p=y&D;v=G+36|0;y=y^1;u=G+48|0;n=(C|0)==0;z=0;do{q=k[x>>2]|0;d=k[q+(z*24|0)>>2]|0;if(!(o?(Av(k[(k[(k[f>>2]|0)+4>>2]|0)+(z*20|0)+8>>2]|0,0,a,0)|0)==0:0))N=129;i:do if((N|0)==129){N=0;if(i[q+(z*24|0)+23>>0]&2)break;if(p){if(!((i[v>>0]&4)==0|y)){q=0;do{if((xv(k[P+(q*72|0)+24>>2]|0,d)|0)>-1){g=1;break i}q=q+1|0}while((q|0)<(F|0))}if((Bv(k[u>>2]|0,d)|0)>-1){g=1;break}}t=yt(U,27,d)|0;if(!L?(k[P>>2]|0)<=1:0){e=d;A=0}else N=137;do if((N|0)==137){N=0;t=cr(V,122,yt(U,27,h)|0,t,0)|0;if(!n)t=cr(V,122,yt(U,27,C)|0,t,0)|0;if(!L){e=d;A=0;break}k[W>>2]=h;k[W+4>>2]=d;A=zh(U,27824,W)|0;e=A}while(0);c=qr(V,c,t)|0;k[T>>2]=e;if(!e)t=0;else{t=e;while(1)if(!(i[t>>0]|0))break;else t=t+1|0;t=t-e&1073741823}k[J>>2]=t;rr(V,c,T,0);do if(c){if(!(j[R>>1]&512))break;q=(k[c>>2]|0)+-1|0;d=k[c+4>>2]|0;if(w)t=ph(U,k[(k[(k[f>>2]|0)+4>>2]|0)+(z*20|0)+8>>2]|0)|0;else{k[W>>2]=C;k[W+4>>2]=h;k[W+8>>2]=e;t=zh(U,27832,W)|0}k[d+(q*20|0)+8>>2]=t;t=d+(q*20|0)+13|0;i[t>>0]=i[t>>0]|2}while(0);rg(U,A);t=j[B>>1]|0;g=1}while(0);z=z+1|0}while((z|0)<(t<<16>>16|0))}while(0);F=F+1|0;if((F|0)>=(k[P>>2]|0))break;else G=G+72|0}if(g)break}if(!a){yh(V,27872,W);break}else{k[W>>2]=a;yh(V,27848,W);break}}while(0);K=K+1|0}while((K|0)<(k[Q>>2]|0))}else c=0;Sk(U,Q);k[b>>2]=c}else c=k[b>>2]|0;if((c|0)!=0?(k[c>>2]|0)>(k[U+96>>2]|0):0){yh(V,27896,W);b=0}else b=0}else b=2}else b=1}else b=2;while(0);r=X;return b|0}function wu(a,b){a=a|0;b=b|0;var c=0;c=k[a+12>>2]|0;while(1){a=k[b+56>>2]|0;if(!a)break;else b=a}b=k[b+68>>2]|0;if(b)k[c+532>>2]=k[b+4>>2];return}function xu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=b+6|0;e=m[d>>1]|0;if((e&32|0)==0?(j[d>>1]=e|32,h=k[a+12>>2]|0,f=k[b+32>>2]|0,c=k[f>>2]|0,(c|0)>0):0){b=0;d=f+8|0;while(1){a=k[d+16>>2]|0;if(((a|0)!=0?(i[a+44>>0]&2)!=0:0)?(g=k[d+20>>2]|0,(g|0)!=0):0){c=g;while(1){e=k[c+52>>2]|0;if(!e)break;else c=e}ou(h,a,c);c=k[f>>2]|0}b=b+1|0;if((b|0)>=(c|0))break;else d=d+72|0}}return}function yu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((a|0)!=0?(c=k[a>>2]|0,(c|0)>0):0){f=k[a+4>>2]|0;e=0;do{d=k[f+(e*20|0)>>2]|0;if((d|0)!=0?(g=k[d+24>>2]|0,(g|0)>(k[b>>2]|0)):0){k[b>>2]=g;c=k[a>>2]|0}e=e+1|0}while((e|0)<(c|0))}return}function zu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(((b|0)!=0?(Ls(a,k[b>>2]|0,c,d),Ls(a,k[b+40>>2]|0,c,d),Ls(a,k[b+48>>2]|0,c,d),f=b+44|0,g=Ms(a,k[f>>2]|0,c,d)|0,k[f>>2]=g,f=b+36|0,g=Ms(a,k[f>>2]|0,c,d)|0,k[f>>2]=g,zu(a,k[b+52>>2]|0,c,d),f=k[b+32>>2]|0,(f|0)!=0):0)?(e=k[f>>2]|0,(e|0)>0):0){b=e;e=f+8|0;while(1){zu(a,k[e+20>>2]|0,c,d);b=b+-1|0;if((b|0)<=0)break;else e=e+72|0}}return}function Au(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;c=k[b+48>>2]|0;j=k[c>>2]|0;d=k[a>>2]|0;l=Ws(d,j+1|0,1)|0;if((l|0)!=0&(j|0)>0){h=c+4|0;f=d+8|0;e=l+16|0;g=0;do{d=k[h>>2]|0;c=k[d+(g*20|0)>>2]|0;if(!(k[c+4>>2]&256)){d=Xs(a,b,(m[d+(g*20|0)+16>>1]|0)+-1|0)|0;if(!d)d=k[f>>2]|0;c=Cv(a,c,k[d>>2]|0)|0;k[(k[h>>2]|0)+(g*20|0)>>2]=c}else d=hu(a,c)|0;k[l+(g<<2)+20>>2]=d;i[(k[e>>2]|0)+g>>0]=i[(k[h>>2]|0)+(g*20|0)+12>>0]|0;g=g+1|0}while((g|0)!=(j|0))}return l|0}function Bu(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;m=r;r=r+16|0;if((r|0)>=(s|0))ka();l=m;e=k[a>>2]|0;a:do if((c|0)!=0?(i[e+65>>0]|0)==0:0){f=k[c>>2]|0;if((f|0)>(k[e+96>>2]|0)){k[l>>2]=d;yh(a,27120,l);b=1;break}h=k[b>>2]|0;if((f|0)>0){e=f;b=0;g=k[c+4>>2]|0;while(1){f=j[g+16>>1]|0;if(f<<16>>16){f=f&65535;e=k[h>>2]|0;if((f|0)>(e|0))break;Dv(a,h,f+-1|0,k[g>>2]|0,d,0);e=k[c>>2]|0}b=b+1|0;if((b|0)>=(e|0)){b=0;break a}else g=g+20|0}k[l>>2]=b+1;k[l+4>>2]=d;k[l+8>>2]=e;yh(a,27064,l);b=1}else b=0}else b=0;while(0);r=m;return b|0}function Cu(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=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;t=a+8|0;u=k[t>>2]|0;w=u+32|0;j=k[w>>2]|0;x=Cs(u)|0;if(f){n=Bh(u,46,f,0,0)|0;m=c+8|0;p=k[m>>2]|0;r=f+1|0;o=c+12|0;q=k[o>>2]|0;if(g)k[g>>2]=(k[g>>2]|0)+1;p=Bh(u,42,p,r,q)|0;Ch(u,p,g,-6);p=p+2|0;Bh(u,43,p,x,p)|0;p=k[w>>2]|0;if(p>>>0>n>>>0)k[(k[u+4>>2]|0)+(n*20|0)+8>>2]=p;k[(k[u+24>>2]|0)+88>>2]=p+-1;Bh(u,33,k[m>>2]|0,r,(k[o>>2]|0)+-1|0)|0;Bh(u,25,1,f,0)|0}if(!(i[(k[a>>2]|0)+65>>0]|0)){nt(u,k[b+12>>2]|0,x);switch(l[d>>0]|0){case 11:{o=d+1|0;n=Gu(k[k[(k[b>>2]|0)+4>>2]>>2]|0,i[o>>0]|0)|0;i[o>>0]=n;n=a+19|0;m=i[n>>0]|0;if(!(m<<24>>24)){s=a+72|0;n=(k[s>>2]|0)+1|0;k[s>>2]=n}else{s=m+-1<<24>>24;i[n>>0]=s;n=k[a+((s&255)<<2)+24>>2]|0}s=c+8|0;Ch(u,Bh(u,49,k[s>>2]|0,1,n)|0,o,1);it(a,k[s>>2]|0,1);Bh(u,110,k[d+4>>2]|0,n,0)|0;ds(a,n);break}case 13:{q=d+8|0;n=k[q>>2]|0;if(!n){n=k[c+12>>2]|0;o=a+60|0;m=k[o>>2]|0;g=a+56|0;p=k[g>>2]|0;if((p|0)<(n|0)){s=a+72|0;m=k[s>>2]|0;k[s>>2]=m+n;m=m+1|0}else{k[o>>2]=m+n;k[g>>2]=p-n}k[q>>2]=m;k[d+12>>2]=n}else{m=n;n=k[d+12>>2]|0}s=k[c+8>>2]|0;Bh(k[t>>2]|0,32,s,m,n)|0;it(a,s,n);Bh(u,22,k[d+4>>2]|0,0,0)|0;break}case 12:case 14:{m=a+19|0;o=i[m>>0]|0;if(o<<24>>24){f=o+-1<<24>>24;i[m>>0]=f;n=k[a+((f&255)<<2)+24>>2]|0;if(!(f<<24>>24))s=12;else{o=o+-2<<24>>24;i[m>>0]=o;o=k[a+((o&255)<<2)+24>>2]|0;m=n}}else{s=a+72|0;n=(k[s>>2]|0)+1|0;k[s>>2]=n;s=12}if((s|0)==12){m=a+72|0;o=(k[m>>2]|0)+1|0;k[m>>2]=o;m=n}Bh(u,49,k[c+8>>2]|0,k[c+12>>2]|0,m)|0;n=d+4|0;Bh(u,74,k[n>>2]|0,o,0)|0;Bh(u,75,k[n>>2]|0,m,o)|0;n=k[u+4>>2]|0;if(n)i[n+(((k[w>>2]|0)+-1|0)*20|0)+3>>0]=8;ds(a,o);ds(a,m);break}case 10:{s=k[c+8>>2]|0;Bh(k[t>>2]|0,32,s,k[d+4>>2]|0,1)|0;it(a,s,1);break}default:{f=c+8|0;s=c+12|0;Bh(u,35,k[f>>2]|0,k[s>>2]|0,0)|0;it(a,k[f>>2]|0,k[s>>2]|0)}}m=k[b+8>>2]|0;if(m)Bh(u,140,m,h,0)|0;m=k[u+24>>2]|0;n=~x;if((x|0)<0?(v=k[m+112>>2]|0,(v|0)!=0):0)k[v+(n<<2)>>2]=k[w>>2];k[m+88>>2]=(k[w>>2]|0)+-1;Bh(u,18,e,0,0)|0}else j=0;return j|0}function Du(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=0,o=0,p=0,q=0;q=r;r=r+80|0;if((r|0)>=(s|0))ka();p=q+64|0;o=q+32|0;f=q;i[p>>0]=1;if((b|0)!=0?(k[a+4>>2]|0)!=0:0){e=l[b>>0]|0;a:do if((e|0)==119){o=k[b+20>>2]|0;d=k[k[(k[o>>2]|0)+4>>2]>>2]|0;k[f+4>>2]=k[o+32>>2];k[f+16>>2]=a;k[f>>2]=k[a>>2];d=Du(f,d,p)|0}else if((e|0)==154|(e|0)==156?(n=j[b+32>>1]|0,d=n<<16>>16,(a|0)!=0):0){m=b+28|0;b:while(1){while(1){h=k[a+4>>2]|0;g=k[h>>2]|0;c:do if((g|0)>0){b=k[m>>2]|0;e=0;while(1){f=e+1|0;if((k[h+(e*72|0)+48>>2]|0)==(b|0)){f=e;break c}if((f|0)<(g|0))e=f;else break}}else f=0;while(0);if((f|0)>=(g|0))break;g=k[h+(f*72|0)+24>>2]|0;b=k[h+(f*72|0)+28>>2]|0;f=(g|0)==0;if(!((a|0)!=0&f))break b}a=k[a+16>>2]|0;if(!a){d=0;break a}}if(!f){if(b){if(n<<16>>16<=-1){d=0;break}e=k[b>>2]|0;if((d|0)>=(k[e>>2]|0)){d=0;break}d=k[(k[e+4>>2]|0)+(d*20|0)>>2]|0;k[o+4>>2]=k[b+32>>2];k[o+16>>2]=a;k[o>>2]=k[a>>2];d=Du(o,d,p)|0;break}if(k[g+68>>2]|0){if(n<<16>>16<0)d=j[g+36>>1]|0;if((d|0)<0)d=11144;else{n=k[g+4>>2]|0;o=k[n+(d*24|0)+12>>2]|0;i[p>>0]=i[n+(d*24|0)+22>>0]|0;d=o}}else d=0}else d=0}else d=0;while(0);if(c)i[c>>0]=i[p>>0]|0}else d=0;r=q;return d|0}function Eu(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=k[a+8>>2]|0;f=a+19|0;g=i[f>>0]|0;if(!(g<<24>>24)){g=a+72|0;f=(k[g>>2]|0)+1|0;k[g>>2]=f}else{g=g+-1<<24>>24;i[f>>0]=g;f=k[a+((g&255)<<2)+24>>2]|0}Ch(h,Bh(h,69,b,c,e)|0,d,-14);Bh(h,49,e,d,f)|0;Bh(h,110,b,f,0)|0;ds(a,f);return}function Fu(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,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;u=a+8|0;z=k[u>>2]|0;y=b+24|0;h=i[y>>0]&1;n=h<<24>>24==0;h=(h^1)&255;g=k[b>>2]|0;o=k[g>>2]|0;p=o+e+h|0;s=a+72|0;l=k[s>>2]|0;x=l+1|0;k[s>>2]=x;v=b+4|0;q=k[v>>2]|0;f=(f|0)==0;if(f){k[s>>2]=x+p;t=l+2|0}else t=d-o-h|0;gt(a,g,t,1);if(n)Bh(z,73,k[b+8>>2]|0,t+o|0,0)|0;if(f){Bh(k[u>>2]|0,32,d,h+o+t|0,e)|0;it(a,d,e)}Bh(z,49,t+q|0,p-q|0,x)|0;if((q|0)>0){g=k[s>>2]|0;e=g+1|0;f=k[v>>2]|0;k[s>>2]=f+g;if(n)d=Bh(z,46,t+o|0,0,0)|0;else d=Bh(z,59,k[b+8>>2]|0,0,0)|0;Bh(z,42,e,t,k[v>>2]|0)|0;l=k[b+20>>2]|0;if((l|0)<0)l=(k[z+32>>2]|0)+-1|0;if(!(i[(k[z>>2]|0)+65>>0]|0))l=(k[z+4>>2]|0)+(l*20|0)|0;else l=29120;if(!(i[(k[a>>2]|0)+65>>0]|0)){k[l+8>>2]=p-f;l=l+16|0;f=k[l>>2]|0;kw(k[f+16>>2]|0,0,m[f+6>>1]|0)|0;Ch(z,-1,f,-6);f=Zs(a,k[b>>2]|0,q,(m[f+8>>1]|0)+-1|0)|0;k[l>>2]=f;l=z+32|0;f=k[l>>2]|0;j=f+1|0;Bh(z,43,j,0,j)|0;j=Cs(z)|0;k[b+16>>2]=j;h=(k[s>>2]|0)+1|0;k[s>>2]=h;k[b+12>>2]=h;Bh(z,17,h,j,0)|0;j=b+8|0;Bh(z,119,k[j>>2]|0,0,0)|0;h=k[l>>2]|0;if(h>>>0>d>>>0)k[(k[z+4>>2]|0)+(d*20|0)+8>>2]=h;g=z+24|0;k[(k[g>>2]|0)+88>>2]=h+-1;h=k[v>>2]|0;Bh(k[u>>2]|0,32,t,e,h)|0;it(a,t,h);h=k[l>>2]|0;if(h>>>0>f>>>0)k[(k[z+4>>2]|0)+(f*20|0)+8>>2]=h;k[(k[g>>2]|0)+88>>2]=h+-1;r=23}}else{j=b+8|0;r=23}if((r|0)==23?(Bh(z,110-(i[y>>0]&1)|0,k[j>>2]|0,x,0)|0,w=k[c+8>>2]|0,(w|0)!=0):0){h=k[c+12>>2]|0;h=Bh(z,139,(h|0)==0?w:h+1|0,0,-1)|0;Bh(z,105,k[j>>2]|0,0,0)|0;Bh(z,95,k[j>>2]|0,0,0)|0;g=k[z+32>>2]|0;if(g>>>0>h>>>0)k[(k[z+4>>2]|0)+(h*20|0)+8>>2]=g;k[(k[z+24>>2]|0)+88>>2]=g+-1}return}function Gu(a,b){a=a|0;b=b|0;a=pv(a)|0;if(!(a<<24>>24==0|b<<24>>24==0))return (a<<24>>24>66|b<<24>>24>66?67:65)|0;if(!((a|b)<<24>>24))a=65;else a=(b&255)+(a&255)&255;return a|0}function Hu(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;do if(!((a|0)==0|(b|0)==0)){g=k[a+4>>2]|0;h=k[b+4>>2]|0;l=h|g;if(l&1024){if((g&1024&h|0)!=0?(k[a+8>>2]|0)==(k[b+8>>2]|0):0){d=0;break}d=2;break}d=i[a>>0]|0;e=i[b>>0]|0;if(d<<24>>24!=e<<24>>24){if(d<<24>>24==95?(Hu(k[a+12>>2]|0,b,c)|0)<2:0){d=1;break}if(e<<24>>24==95?(Hu(a,k[b+12>>2]|0,c)|0)<2:0){d=1;break}d=2;break}if((!(d<<24>>24==-100|d<<24>>24==-102)?(f=k[a+8>>2]|0,(f|0)!=0):0)?(dw(f,k[b+8>>2]|0)|0)!=0:0){d=d<<24>>24==95?1:2;break}if(!((h^g)&16)){if(!(l&16384)){if(l&2048){d=2;break}if(Hu(k[a+12>>2]|0,k[b+12>>2]|0,c)|0){d=2;break}if(Hu(k[a+16>>2]|0,k[b+16>>2]|0,c)|0){d=2;break}if(Ys(k[a+20>>2]|0,k[b+20>>2]|0,c)|0){d=2;break}if(!(l&8192)){if((j[a+32>>1]|0)!=(j[b+32>>1]|0)){d=2;break}e=k[a+28>>2]|0;d=k[b+28>>2]|0;if((e|0)!=(d|0)?(e|0)!=(c|0)|(d|0)>-1:0){d=2;break}}}d=0}else d=2}else d=(b|0)==(a|0)?0:2;while(0);return d|0}function Iu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=a+8|0;i[d>>0]=c;a:do if(b){while(1){if((i[b>>0]|0)!=c<<24>>24)break;Iu(a,k[b+12>>2]|0,c);b=k[b+16>>2]|0;i[d>>0]=c;if(!b)break a}Ev(a,b,0)|0}while(0);return}function Ju(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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,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;C=k[a>>2]|0;Q=k[C>>2]|0;S=k[Q>>2]|0;K=S+65|0;do if(!(i[K>>0]|0)){T=a+20|0;f=k[T>>2]|0;c=f+(b*48|0)|0;_=C+68|0;R=k[c>>2]|0;s=R+12|0;g=k[s>>2]|0;x=Fv(_,g)|0;w=L;e=i[R>>0]|0;u=e&255;do if(e<<24>>24==75){h=R+20|0;if(!(k[R+4>>2]&2048)){d=Qu(_,k[h>>2]|0)|0;t=L;P=f+(b*48|0)+32|0;k[P>>2]=d;k[P+4>>2]=t;break}else{d=Gv(_,k[h>>2]|0)|0;t=L;P=f+(b*48|0)+32|0;k[P>>2]=d;k[P+4>>2]=t;break}}else if(e<<24>>24==76){d=f+(b*48|0)+32|0;k[d>>2]=0;k[d+4>>2]=0;d=0;t=0}else{d=Fv(_,k[R+16>>2]|0)|0;t=L;P=f+(b*48|0)+32|0;k[P>>2]=d;k[P+4>>2]=t}while(0);q=Fv(_,R)|0;h=L;N=R+4|0;if(!(k[N>>2]&1)){O=0;P=0;v=h}else{o=j[R+36>>1]|0;n=k[_>>2]|0;a:do if((n|0)>0){p=0;while(1){if((k[C+(p<<2)+72>>2]|0)==(o|0))break;p=p+1|0;if((p|0)>=(n|0)){p=0;o=0;break a}}p=nw(1,0,p|0)|0;o=L}else{p=0;o=0}while(0);O=ow(p|0,o|0,-1,-1)|0;P=L;q=p|q;v=o|h}r=f+(b*48|0)+40|0;k[r>>2]=q;k[r+4>>2]=v;r=f+(b*48|0)+8|0;k[r>>2]=-1;k[f+(b*48|0)+4>>2]=-1;z=f+(b*48|0)+18|0;j[z>>1]=0;p=u+-75|0;if(p>>>0<9?(499>>>(p&511)&1)!=0:0){b:do if(!g)g=0;else while(1){p=k[g+4>>2]|0;if(!(p&4096))break b;if(!(p&262144))n=g+12|0;else n=k[(k[g+20>>2]|0)+4>>2]|0;g=k[n>>2]|0;if(!g){g=0;break}}while(0);p=k[R+16>>2]|0;c:do if(!p)p=0;else while(1){o=k[p+4>>2]|0;if(!(o&4096))break c;if(!(o&262144))p=p+12|0;else p=k[(k[p+20>>2]|0)+4>>2]|0;p=k[p>>2]|0;if(!p){p=0;break}}while(0);t=(d&x|0)==0&(t&w|0)==0?4095:1024;if((i[g>>0]|0)==-102){h=k[g+28>>2]|0;k[r>>2]=h;k[f+(b*48|0)+12>>2]=j[g+32>>1];if((u|0)==76)n=128;else if((u|0)==75)n=1;else n=2<>1]=n&t}else h=-1;if((p|0)!=0?(i[p>>0]|0)==-102:0){if((h|0)>-1){g=Rr(S,R,0,0)|0;if(i[K>>0]|0){Lk(S,g);break}h=Ev(a,g,3)|0;if(!h)break;n=k[T>>2]|0;f=n+(h*48|0)|0;k[n+(h*48|0)+4>>2]=b;j[n+(h*48|0)+16>>1]=j[n+(b*48|0)+16>>1]|0;c=n+(b*48|0)+22|0;i[c>>0]=(i[c>>0]|0)+1<<24>>24;c=n+(b*48|0)|0;p=n+(b*48|0)+20|0;j[p>>1]=m[p>>1]|8;if(((i[R>>0]|0)==79?(k[N>>2]&1|0)==0:0)?(j[S+60>>1]&512)==0:0){s=n+(b*48|0)+18|0;j[s>>1]=m[s>>1]|1024;s=1024}else s=0}else{s=0;g=R;f=c}e=g+16|0;o=(k[e>>2]|0)+4|0;n=k[o>>2]|0;h=n&256;d=g+12|0;p=k[d>>2]|0;do if((h|0)==(k[p+4>>2]&256|0)){if(h){k[o>>2]=n&-257;break}p=(hu(Q,p)|0)==0;n=k[d>>2]|0;if(p)p=n;else{p=n+4|0;k[p>>2]=k[p>>2]|256;p=n}}while(0);n=k[e>>2]|0;k[e>>2]=p;k[d>>2]=n;h=i[g>>0]|0;if((h&255)>79){h=((h&255)+176^2)+80&255;i[g>>0]=h}g=k[n+4>>2]|0;if(g&4096)do{if(!(g&262144))n=n+12|0;else n=k[(k[n+20>>2]|0)+4>>2]|0;n=k[n>>2]|0;g=k[n+4>>2]|0}while((g&4096|0)!=0);k[f+8>>2]=k[n+28>>2];k[f+12>>2]=j[n+32>>1];g=f+32|0;k[g>>2]=O|x;k[g+4>>2]=P|w;g=f+40|0;k[g>>2]=q;k[g+4>>2]=v;g=h&255;if((g|0)==76)g=128;else if((g|0)==75)g=1;else g=2<>1]=g+s&(t&65535)}}else G=59;do if((G|0)==59){if(e<<24>>24==74){if((i[a+8>>0]|0)!=72)break;h=(k[R+20>>2]|0)+4|0;d=R+36|0;e=0;while(1){q=l[34144+e>>0]|0;g=Rr(S,g,0,0)|0;g=cr(Q,q,g,Rr(S,k[(k[h>>2]|0)+(e*20|0)>>2]|0,0,0)|0,0)|0;if(g){q=g+4|0;k[q>>2]=k[q>>2]|k[N>>2]&1;j[g+36>>1]=j[d>>1]|0}q=Ev(a,g,3)|0;Ju(a,q);f=k[T>>2]|0;k[f+(q*48|0)+4>>2]=b;j[f+(q*48|0)+16>>1]=j[f+(b*48|0)+16>>1]|0;q=f+(b*48|0)+22|0;i[q>>0]=(i[q>>0]|0)+1<<24>>24;e=e+1|0;if((e|0)==2)break;g=k[s>>2]|0}c=f+(b*48|0)|0;break}else if(e<<24>>24!=71)break;x=rh(S,416,0)|0;d:do if(x){kw(x|0,0,416)|0;k[f+(b*48|0)+12>>2]=x;A=f+(b*48|0)+20|0;j[A>>1]=m[A>>1]|16;k[x>>2]=C;k[x+4>>2]=0;A=x+12|0;k[A>>2]=0;k[x+16>>2]=8;B=x+20|0;k[B>>2]=x+24;Iu(x,R,71);h=k[A>>2]|0;if((h|0)>0)do{h=h+-1|0;Ju(x,h)}while((h|0)>0);if(!(i[K>>0]|0)){p=k[A>>2]|0;if((p|0)>0){w=C+68|0;v=-1;u=-1;d=-1;c=-1;t=k[B>>2]|0;while(1){p=p+-1|0;o=t+18|0;s=j[o>>1]|0;if(!(s&255)){g=rh(S,408,0)|0;if(!g){h=v;n=u;d=0;c=0}else{k[t+12>>2]=g;n=t+20|0;j[n>>1]=m[n>>1]|32;j[o>>1]=512;k[g>>2]=k[a>>2];n=g+4|0;k[n>>2]=0;h=g+12|0;k[h>>2]=0;k[g+16>>2]=8;q=g+20|0;k[q>>2]=g+24;Iu(g,k[t>>2]|0,72);o=k[h>>2]|0;if((o|0)>0)do{o=o+-1|0;Ju(g,o)}while((o|0)>0);k[n>>2]=a;if((i[K>>0]|0)==0?(y=k[h>>2]|0,(y|0)>0):0){o=0;n=0;c=0;r=k[q>>2]|0;while(1){h=(l[k[r>>2]>>0]|0)+-75|0;do if(h>>>0<9){if(!(499>>>(h&511)&1))break;g=k[r+8>>2]|0;e=k[w>>2]|0;e:do if((e|0)>0){h=0;while(1){if((k[C+(h<<2)+72>>2]|0)==(g|0))break;h=h+1|0;if((h|0)>=(e|0)){h=0;g=0;break e}}h=nw(1,0,h|0)|0;g=L}else{h=0;g=0}while(0);o=h|o;n=g|n}while(0);c=c+1|0;if((c|0)>=(y|0))break;else r=r+48|0}}else{o=0;n=0}h=o&v;n=n&u;d=0;c=0}}else{n=j[t+20>>1]|0;if(!(n&8)){q=k[t+8>>2]|0;g=k[w>>2]|0;h=(g|0)>0;f:do if(h){o=0;while(1){if((k[C+(o<<2)+72>>2]|0)==(q|0))break;o=o+1|0;if((o|0)>=(g|0)){e=0;r=0;break f}}e=nw(1,0,o|0)|0;r=L}else{e=0;r=0}while(0);if(!(n&2)){o=e;q=r}else{q=k[(k[B>>2]|0)+((k[t+4>>2]|0)*48|0)+8>>2]|0;g:do if(h){o=0;while(1){if((k[C+(o<<2)+72>>2]|0)==(q|0))break;o=o+1|0;if((o|0)>=(g|0)){o=0;q=0;break g}}o=nw(1,0,o|0)|0;q=L}else{o=0;q=0}while(0);o=o|e;q=q|r}g=(s&2)==0;h=o&v;n=q&u;d=g?0:o&d;c=g?0:q&c}else{h=v;n=u}}o=(h|0)!=0|(n|0)!=0;if(!((p|0)>0&o))break;else{v=h;u=n;t=t+48|0}}q=x+408|0;k[q>>2]=h;k[q+4>>2]=n;j[z>>1]=(h|0)==0&(n|0)==0?0:256;if(o)G=104}else{d=x+408|0;k[d>>2]=-1;k[d+4>>2]=-1;j[z>>1]=256;d=-1;c=-1;G=104}h:do if((G|0)==104)if((k[A>>2]|0)==2){g=k[B>>2]|0;h=0;i:while(1){e=h+1|0;if((j[g+18>>1]|0)!=512)if(!h)o=g;else break h;else{n=k[g+12>>2]|0;if((k[n+12>>2]|0)<=(h|0))break h;o=(k[n+20>>2]|0)+(h*48|0)|0}if(!o)break h;else p=0;while(1){if((j[g+66>>1]|0)==512){n=k[g+60>>2]|0;if((k[n+12>>2]|0)<=(p|0)){h=e;continue i}n=(k[n+20>>2]|0)+(p*48|0)|0;if(!n){h=e;continue i}}else if(!p)n=g+48|0;else{h=e;continue i}Hv(a,o,n);g=k[B>>2]|0;p=p+1|0}}}while(0);if(!((d|0)==0&(c|0)==0)){r=C+68|0;q=-1;s=0;while(1){n=k[A>>2]|0;if((n|0)<=0)break d;p=k[B>>2]|0;while(1){e=n;n=n+-1|0;g=p+20|0;j[g>>1]=m[g>>1]&65471;g=k[p+8>>2]|0;if((g|0)!=(q|0)){h=k[r>>2]|0;j:do if((h|0)>0){o=0;while(1){if((k[C+(o<<2)+72>>2]|0)==(g|0))break;o=o+1|0;if((o|0)>=(h|0)){o=0;h=0;break j}}o=nw(1,0,o|0)|0;h=L}else{o=0;h=0}while(0);if(!((o&d|0)==0&(h&c|0)==0)){o=e;break}}if((n|0)<=0)break d;else p=p+48|0}h=k[p+12>>2]|0;if((o|0)<1)break d;else o=g;while(1){if((o|0)==(g|0)){if((k[p+12>>2]|0)!=(h|0)){n=g;h=1;break}q=pv(k[(k[p>>2]|0)+16>>2]|0)|0;if(!(q<<24>>24==0|q<<24>>24==(pv(k[(k[p>>2]|0)+12>>2]|0)|0)<<24>>24)){n=g;h=1;break}q=p+20|0;j[q>>1]=m[q>>1]|64}else{q=p+20|0;j[q>>1]=m[q>>1]&65471}if((n|0)<=0){n=g;h=0;break}o=k[p+56>>2]|0;n=n+-1|0;p=p+48|0}s=s+1|0;if(!((s|0)<2&h))break;else q=n}if(!h){g=k[A>>2]|0;if((g|0)>0){h=0;d=0;e=k[B>>2]|0;while(1){g=g+-1|0;if(j[e+20>>1]&64){h=Rr(S,k[(k[e>>2]|0)+16>>2]|0,0,0)|0;d=qr(k[C>>2]|0,d,h)|0;h=k[(k[e>>2]|0)+12>>2]|0}if((g|0)<=0){g=h;break}else e=e+48|0}}else{g=0;d=0}e=cr(Q,75,Rr(S,g,0,0)|0,0,0)|0;if(!e)Sk(S,d);else{q=e+4|0;k[q>>2]=k[q>>2]|k[N>>2]&1;j[e+36>>1]=j[R+36>>1]|0;k[e+20>>2]=d;q=Ev(a,e,3)|0;Ju(a,q);f=k[T>>2]|0;k[f+(q*48|0)+4>>2]=b;j[f+(q*48|0)+16>>1]=j[f+(b*48|0)+16>>1]|0;q=f+(b*48|0)+22|0;i[q>>0]=(i[q>>0]|0)+1<<24>>24}j[f+(b*48|0)+18>>1]=2048}}}}else k[f+(b*48|0)+12>>2]=0;while(0);c=(k[T>>2]|0)+(b*48|0)|0}while(0);k:do if((i[a+8>>0]|0)==72){u=k[Q>>2]|0;if((i[R>>0]|0)==-103){t=R+20|0;q=k[t>>2]|0;if((q|0)!=0?(k[q>>2]|0)==2:0){h=k[R+8>>2]|0;if(!h)g=0;else{g=h;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;g=g-h&1073741823}g=Xh(u,h,g,2,1,0)|0;if(((((g|0)!=0?(D=j[g+2>>1]|0,(D&4)!=0):0)?(J=k[g+4>>2]|0,H=i[J>>0]|0,I=i[J+1>>0]|0,J=i[J+2>>0]|0,M=(D&65535)>>>3&1,E=(k[t>>2]|0)+4|0,F=k[(k[E>>2]|0)+20>>2]|0,(i[F>>0]|0)==-102):0)?(pv(F)|0)<<24>>24==66:0)?(i[(k[F+44>>2]|0)+44>>0]&16)==0:0){f=k[k[E>>2]>>2]|0;l:do if(!f)f=0;else while(1){e=k[f+4>>2]|0;if(!(e&4096))break l;if(!(e&262144))f=f+12|0;else f=k[(k[f+20>>2]|0)+4>>2]|0;f=k[f>>2]|0;if(!f){f=0;break}}while(0);e=i[f>>0]|0;r=e<<24>>24==-121;do if(r){g=k[Q+476>>2]|0;o=j[f+32>>1]|0;p=o<<16>>16;do if(!g){d=0;h=0}else{G=p+-1|0;F=k[g+60>>2]|0;d=F+(G*40|0)|0;if(j[F+(G*40|0)+8>>1]&1){d=0;h=0;break}h=k[g>>2]|0;n=rh(h,40,0)|0;if(!n){d=0;h=0;break}g=n+0|0;e=g+40|0;do{i[g>>0]=0;g=g+1|0}while((g|0)<(e|0));G=n+8|0;j[G>>1]=1;k[n+32>>2]=h;dh(n,d)|0;if((j[G>>1]&15)!=2){d=n;h=0;break}d=n;h=Xg(n,1)|0}while(0);g=k[Q+8>>2]|0;if(o<<16>>16>32){k[g+188>>2]=-1;q=h;G=177;break}else{q=g+188|0;k[q>>2]=k[q>>2]|1<>24==97){d=0;q=k[f+8>>2]|0;G=177}else d=0;while(0);do if((G|0)==177)if(q){h=0;while(1){G=i[q+h>>0]|0;e=G<<24>>24==H<<24>>24;g=h+1|0;if(G<<24>>24!=J<<24>>24&((G<<24>>24==0|e|G<<24>>24==I<<24>>24)^1))h=g;else break}if(h){if((i[q+(h+-1)>>0]|0)==-1)break;if(e)g=(i[q+g>>0]|0)==0;else g=0;n=g&1;s=yt(u,97,q)|0;if(s)i[(k[s+8>>2]|0)+h>>0]=0;do if(r){h=k[Q+8>>2]|0;e=j[f+32>>1]|0;if(e<<16>>16>32)k[h+188>>2]=-1;else{J=h+188|0;k[J>>2]=k[J>>2]|1<<(e<<16>>16)+-1}if(!g){n=0;break}if(!(i[(k[f+8>>2]|0)+1>>0]|0))break;e=Q+19|0;g=i[e>>0]|0;if(!(g<<24>>24)){J=Q+72|0;e=(k[J>>2]|0)+1|0;k[J>>2]=e}else{J=g+-1<<24>>24;i[e>>0]=J;e=k[Q+((J&255)<<2)+24>>2]|0}ns(Q,f,e)|0;f=k[h+32>>2]|0;if(f>>>0>0)k[(k[h+4>>2]|0)+((f+-1|0)*20|0)+12>>2]=0;ds(Q,e)}while(0);Rh(d);if(!q){G=217;break k}o=k[(k[(k[t>>2]|0)+4>>2]|0)+20>>2]|0;h=Rr(S,s,0,0)|0;p=M<<16>>16!=0;do if(!p){if(i[(k[Q>>2]|0)+65>>0]|0)break;d=c+20|0;j[d>>1]=m[d>>1]|1024;d=s+8|0;g=k[d>>2]|0;f=i[g>>0]|0;if(!(f<<24>>24))break;c=h+8|0;e=0;do{J=f&255;i[g>>0]=((l[10368+J>>0]|223)^32)&J;i[(k[c>>2]|0)+e>>0]=i[9328+J>>0]|0;e=e+1|0;g=(k[d>>2]|0)+e|0;f=i[g>>0]|0}while(f<<24>>24!=0)}while(0);if(!(i[K>>0]|0)){f=k[h+8>>2]|0;if(!f)e=-1;else{e=f;while(1)if(!(i[e>>0]|0))break;else e=e+1|0;e=(e-f&1073741823)+-1|0}f=f+e|0;e=i[f>>0]|0;if(p)d=n;else{d=e<<24>>24==64?0:n;e=i[9328+(e&255)>>0]|0}i[f>>0]=(e&255)+1;g=d}else g=n;d=M<<16>>16==0?13752:11152;e=cr(Q,83,Cv(Q,Rr(S,o,0,0)|0,d)|0,s,0)|0;if(e){M=e+4|0;k[M>>2]=k[M>>2]|k[N>>2]&1;j[e+36>>1]=j[R+36>>1]|0}f=Ev(a,e,259)|0;Ju(a,f);d=cr(Q,82,Cv(Q,Rr(S,o,0,0)|0,d)|0,h,0)|0;if(d){M=d+4|0;k[M>>2]=k[M>>2]|k[N>>2]&1;j[d+36>>1]=j[R+36>>1]|0}d=Ev(a,d,259)|0;Ju(a,d);e=k[T>>2]|0;c=e+(b*48|0)|0;if(!g){G=217;break k}k[e+(f*48|0)+4>>2]=b;N=e+(b*48|0)+16|0;j[e+(f*48|0)+16>>1]=j[N>>1]|0;G=e+(b*48|0)+22|0;i[G>>0]=(i[G>>0]|0)+1<<24>>24;k[e+(d*48|0)+4>>2]=b;j[e+(d*48|0)+16>>1]=j[N>>1]|0;i[G>>0]=(i[G>>0]|0)+1<<24>>24;G=217;break k}}while(0);Rh(d);G=217}else G=217}else G=217}}else G=217;while(0);if((G|0)==217)if(((((i[R>>0]|0)==-103?(id(k[R+8>>2]|0,31416)|0)==0:0)?(U=k[R+20>>2]|0,(k[U>>2]|0)==2):0)?(V=k[U+4>>2]|0,W=k[V+20>>2]|0,(i[W>>0]|0)==-102):0)?(X=k[V>>2]|0,Y=Fv(_,X)|0,Z=L,_=Fv(_,W)|0,(_&Y|0)==0&(L&Z|0)==0):0){_=Ev(a,cr(Q,51,0,Rr(S,X,0,0)|0,0)|0,3)|0;c=k[T>>2]|0;X=c+(_*48|0)+32|0;k[X>>2]=Y;k[X+4>>2]=Z;k[c+(_*48|0)+8>>2]=k[W+28>>2];k[c+(_*48|0)+12>>2]=j[W+32>>1];j[c+(_*48|0)+18>>1]=64;k[c+(_*48|0)+4>>2]=b;j[c+(_*48|0)+16>>1]=j[c+(b*48|0)+16>>1]|0;Y=c+(b*48|0)+22|0;i[Y>>0]=(i[Y>>0]|0)+1<<24>>24;Y=c+(b*48|0)+20|0;j[Y>>1]=m[Y>>1]|8;Y=c+(b*48|0)+40|0;Z=k[Y+4>>2]|0;_=c+(_*48|0)+40|0;k[_>>2]=k[Y>>2];k[_+4>>2]=Z;c=c+(b*48|0)|0}b=c+32|0;Z=b;_=k[Z+4>>2]|P;k[b>>2]=k[Z>>2]|O;k[b+4>>2]=_}while(0);return}function Ku(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;var h=0,i=0;i=r;r=r+112|0;if((r|0)>=(s|0))ka();h=i;f=Iv(h,a,b,c,f,g)|0;a:do if(!f)f=0;else{g=f;f=0;do{b=g+32|0;c=k[b>>2]|0;b=k[b+4>>2]|0;if((c&d|0)==0&(b&e|0)==0){if((c|0)==0&(b|0)==0?(j[g+18>>1]&2)!=0:0){f=g;break a}f=(f|0)==0?g:f}g=Jv(h)|0}while((g|0)!=0)}while(0);r=i;return f|0}function Lu(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=0,o=0,q=0,u=0,v=0,w=0.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,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ha=0,ja=0,la=0,ma=0;la=r;r=r+16|0;if((r|0)>=(s|0))ka();fa=la;v=k[a>>2]|0;da=k[v>>2]|0;ha=k[da>>2]|0;ca=k[a+4>>2]|0;ea=k[a+12>>2]|0;u=l[ea+16>>0]|0;v=k[v+4>>2]|0;aa=k[v+(u*72|0)+24>>2]|0;x=k[a+8>>2]|0;ba=ca+20|0;ca=ca+12|0;d=k[ca>>2]|0;if((d|0)>0){f=k[v+(u*72|0)+48>>2]|0;g=0;e=0;h=k[ba>>2]|0;while(1){if((k[h+8>>2]|0)==(f|0))e=((j[h+18>>1]&-1153)<<16>>16!=0&1)+e|0;g=g+1|0;if((g|0)==(d|0))break;else h=h+48|0}}else e=0;if(!x)q=0;else{n=k[x>>2]|0;a:do if((n|0)>0){h=k[x+4>>2]|0;g=v+(u*72|0)+48|0;m=0;while(1){f=k[h+(m*20|0)>>2]|0;if((i[f>>0]|0)!=-102){d=m;break a}d=m+1|0;if((k[f+28>>2]|0)!=(k[g>>2]|0)){d=m;break a}if((d|0)<(n|0))m=d;else break}}else d=0;while(0);q=(d|0)==(n|0)?n:0}d=(e*20|0)+56+(q<<3)|0;$=rh(ha,d,0)|0;do if(!$){yh(da,15776,fa);d=7}else{kw($|0,0,d|0)|0;d=$+56|0;o=d+(e*12|0)|0;k[$>>2]=e;Y=$+8|0;k[Y>>2]=q;Z=$+4|0;k[Z>>2]=d;k[$+12>>2]=o;_=$+16|0;k[_>>2]=o+(q<<3);f=k[ca>>2]|0;if((f|0)>0){m=k[v+(u*72|0)+48>>2]|0;h=0;n=0;g=k[ba>>2]|0;while(1){if((k[g+8>>2]|0)==(m|0)?(y=j[g+18>>1]|0,(y&-1153)<<16>>16!=0):0){k[d+(n*12|0)>>2]=k[g+12>>2];k[d+(n*12|0)+8>>2]=h;i[d+(n*12|0)+4>>0]=(y&255)==1?2:y&255;n=n+1|0}h=h+1|0;if((h|0)==(f|0))break;else g=g+48|0}}if((q|0)>0){d=k[x+4>>2]|0;e=0;do{k[o+(e<<3)>>2]=j[(k[d+(e*20|0)>>2]|0)+32>>1];i[o+(e<<3)+4>>0]=i[d+(e*20|0)+12>>0]|0;e=e+1|0}while((e|0)!=(q|0))}A=ea;k[A>>2]=0;k[A+4>>2]=0;A=ea+18|0;j[A>>1]=0;k[ea+36>>2]=1024;B=ea+40|0;j[B>>1]=0;C=ea+28|0;i[C>>0]=0;D=k[_>>2]|0;E=k[$>>2]|0;if(Su(ha,ea,E)|0){rg(ha,$);d=7;break}U=$+28|0;X=$+24|0;F=$+20|0;G=$+32|0;H=$+40|0;I=$+48|0;J=aa+60|0;K=da+64|0;M=(E|0)>0;N=ea+30|0;O=ea+24|0;P=ea+32|0;Q=ea+29|0;R=ea+20|0;S=ea+22|0;T=ea+48|0;v=0;y=0;x=0;b:while(1){if(!((y|0)!=0|(v&1|0)==0))if((v|0)>2){d=0;break}else z=v+1|0;else z=v;if((x|0)==0&(z|0)>1){d=0;break}h=k[$>>2]|0;if((h|0)>0){e=k[ba>>2]|0;f=0;g=k[Z>>2]|0;while(1){v=k[g+8>>2]|0;if((z|0)==2)i[g+5>>0]=j[e+(v*48|0)+18>>1]&1^1;else if((z|0)==1){u=e+(v*48|0)+32|0;i[g+5>>0]=(k[u>>2]|0)==0&(k[u+4>>2]|0)==0&1}else if(!z){d=g+5|0;i[d>>0]=0;u=(j[e+(v*48|0)+18>>1]&1)==0;y=u?y:1;v=e+(v*48|0)+32|0;v=(k[v>>2]|0)!=0|(k[v+4>>2]|0)!=0;if(v|u^1)x=v?1:x;else i[d>>0]=1}else i[g+5>>0]=1;f=f+1|0;if((f|0)>=(h|0)){u=y;break}else g=g+12|0}}else u=y;kw(D|0,0,h<<3|0)|0;if(k[U>>2]|0)$c(k[X>>2]|0);k[F+0>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;p[H>>3]=5.e+98;d=I;k[d>>2]=25;k[d+4>>2]=0;d=k[da>>2]|0;v=J;while(1){v=k[v>>2]|0;if((k[v>>2]|0)==(d|0))break;else v=v+24|0}y=k[v+8>>2]|0;v=wc[k[(k[y>>2]|0)+12>>2]&127](y,$)|0;do if((v|0)==7)i[(k[da>>2]|0)+65>>0]=1;else if(v){d=k[y+8>>2]|0;if(d){k[fa>>2]=d;yh(da,10344,fa);break}if((v|0)!=516){v=v&255;if(v>>>0>26|(v|0)==2)v=16328;else v=k[15488+(v<<2)>>2]|0}else v=16344;k[fa>>2]=v;yh(da,10344,fa)}while(0);v=y+8|0;$c(k[v>>2]|0);k[v>>2]=0;v=k[$>>2]|0;if((v|0)>0){d=0;do{if((i[(k[Z>>2]|0)+(d*12|0)+5>>0]|0)==0?(k[(k[_>>2]|0)+(d<<3)>>2]|0)>0:0){k[fa>>2]=k[aa>>2];yh(da,34096,fa);v=k[$>>2]|0}d=d+1|0}while((d|0)<(v|0))}d=k[K>>2]|0;if(d)break;y=k[Z>>2]|0;q=ea;k[q>>2]=b;k[q+4>>2]=c;c:do if(M){v=0;do{k[(k[T>>2]|0)+(v<<2)>>2]=0;v=v+1|0}while((v|0)!=(E|0));j[N>>1]=0;if(M){f=b;e=c;d=0;q=0;v=-1;while(1){h=k[D+(q<<3)>>2]|0;m=h+-1|0;do if((h|0)>0){n=k[y+8>>2]|0;if((h|0)>(E|0)|(n|0)<0){ja=65;break b}if((n|0)>=(k[ca>>2]|0)){ja=65;break b}g=(k[T>>2]|0)+(m<<2)|0;if(k[g>>2]|0){ja=65;break b}o=k[ba>>2]|0;ma=o+(n*48|0)+32|0;f=f|k[ma>>2];e=e|k[ma+4>>2];ma=ea;k[ma>>2]=f;k[ma+4>>2]=e;k[g>>2]=o+(n*48|0);v=(m|0)>(v|0)?m:v;do if((h|0)<17){if(!(i[D+(q<<3)+4>>0]|0))break;d=(d&65535|1<>1]=d}while(0);if(!(j[o+(n*48|0)+18>>1]&1))break;if(!(i[D+(q<<3)+4>>0]|0))break c;k[G>>2]=0}while(0);q=q+1|0;if((q|0)>=(E|0)){ja=73;break}else y=y+12|0}}else{v=-1;ja=73}}else{j[N>>1]=0;v=-1;ja=73}while(0);if((ja|0)==73){ja=0;j[B>>1]=v+1;k[O>>2]=k[F>>2];i[C>>0]=k[U>>2];k[U>>2]=0;k[P>>2]=k[X>>2];if(!(k[G>>2]|0))v=0;else v=k[Y>>2]&255;i[Q>>0]=v;j[A>>1]=0;w=+p[H>>3];p[t>>3]=w;v=k[t>>2]|0;d=k[t+4>>2]|0;do if(!(w<=1.0))if(!(w<=2.0e9)){v=rw(v|0,d|0,52)|0;v=ow(v|0,L|0,64514,0)|0;v=(v<<16>>16)*10&65535;break}else{v=ks(~~w>>>0,+W(w)>=1.0?(w>0.0?~~+ia(+V(w/4294967296.0),4294967295.0)>>>0:~~+ga((w-+(~~w>>>0))/4294967296.0)>>>0):0)|0;break}else v=0;while(0);j[R>>1]=v;q=I;q=ks(k[q>>2]|0,k[q+4>>2]|0)|0;j[S>>1]=q;Kv(a,ea)|0;if(i[C>>0]|0){$c(k[P>>2]|0);i[C>>0]=0}}v=z+1|0;if((v|0)>=4){d=0;break}else y=u}if((ja|0)==65){k[fa>>2]=k[aa>>2];yh(da,34064,fa);d=1}if(k[U>>2]|0)$c(k[X>>2]|0);rg(ha,$)}while(0);r=la;return d|0}function Mu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=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,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;ca=r;r=r+64|0;if((r|0)>=(s|0))ka();n=ca;h=ca+56|0;g=ca+52|0;j[g>>1]=-1;$=k[a+12>>2]|0;aa=k[a>>2]|0;F=k[aa+4>>2]|0;G=l[$+16>>0]|0;W=F+(G*72|0)+8|0;f=F+(G*72|0)+24|0;H=k[f>>2]|0;X=k[a+4>>2]|0;Y=F+(G*72|0)+76|0;d=k[Y>>2]|0;do if(!d){if(i[H+44>>0]&32){n=k[H+8>>2]|0;break}d=n+0|0;e=d+52|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));j[n+46>>1]=1;j[n+48>>1]=1;k[n+4>>2]=g;k[n+8>>2]=h;i[n+50>>0]=5;k[n+12>>2]=H;j[n+44>>1]=j[H+42>>1]|0;j[h>>1]=j[H+28>>1]|0;j[h+2>>1]=0;if(!(i[F+(G*72|0)+45>>0]&1))k[n+20>>2]=k[(k[f>>2]|0)+8>>2]}else n=d;while(0);h=j[H+28>>1]|0;if(h<<16>>16<11)B=0;else{B=h<<16>>16;B=((ks(B,((B|0)<0)<<31>>31)|0)&65535)+65503&65535}if(((((((k[a+16>>2]|0)==0?(j[aa+34>>1]&128)==0:0)?(k[(k[k[aa>>2]>>2]|0)+24>>2]&1048576|0)!=0:0)?(k[Y>>2]|0)==0:0)?(o=i[F+(G*72|0)+45>>0]|0,(o&5)==0):0)?(E=H+44|0,(o&10|i[E>>0]&32)<<24>>24==0):0)?(C=k[X+20>>2]|0,V=k[X+12>>2]|0,D=C+(V*48|0)|0,(V|0)>0):0){v=$+8|0;w=$+24|0;x=$+42|0;y=$+28|0;z=$+40|0;A=$+48|0;p=(B&65535)+(h&65535)|0;g=p+4&65535;f=$+18|0;e=H+12|0;p=p+28&65535;q=$+22|0;t=$+20|0;u=$+36|0;h=C;do{o=h+32|0;V=o;U=v;if(((k[U>>2]&k[V>>2]|0)==0?(k[U+4>>2]&k[V+4>>2]|0)==0:0)?(Ru(h,W,0,0)|0)!=0:0){j[w>>1]=1;j[x>>1]=0;k[y>>2]=0;j[z>>1]=1;k[k[A>>2]>>2]=h;j[f>>1]=g;if((k[e>>2]|0)==0?(i[E>>0]&2)==0:0)j[f>>1]=p;j[q>>1]=43;U=Lv(B,43)|0;j[t>>1]=U;k[u>>2]=16384;U=o;V=k[U+4>>2]|c;d=$;k[d>>2]=k[U>>2]|b;k[d+4>>2]=V;d=Kv(a,$)|0}else d=0;h=h+48|0}while((d|0)==0&h>>>0>>0)}else d=0;V=$+36|0;a:do if((d|0)==0&(n|0)!=0){M=$+24|0;N=$+42|0;O=$+40|0;P=$+17|0;Q=$+18|0;R=$+22|0;S=$+28|0;T=F+(G*72|0)+48|0;U=$+20|0;J=F+(G*72|0)+64|0;K=H+42|0;t=H+44|0;q=aa+34|0;p=X+12|0;F=X+20|0;I=1;while(1){u=k[n+36>>2]|0;v=k[T>>2]|0;b:do if(u){d=k[p>>2]|0;if((d|0)>0){f=0;g=k[F>>2]|0;while(1){e=k[g>>2]|0;if(Mv(e,u,v)|0){if(!(k[e+4>>2]&1)){ba=32;break b}if((j[e+36>>1]|0)==(v|0)){ba=32;break b}}f=f+1|0;if((f|0)>=(d|0)){d=0;break}else g=g+48|0}}else d=0}else ba=32;while(0);if((ba|0)==32){ba=0;G=j[k[n+8>>2]>>1]|0;j[M>>1]=0;j[N>>1]=0;j[O>>1]=0;i[P>>0]=0;j[Q>>1]=0;H=$;k[H>>2]=b;k[H+4>>2]=c;j[R>>1]=G;k[S>>2]=n;H=n+51|0;w=i[H>>0]|0;c:do if(((w&4)==0?(Z=k[(k[a>>2]|0)+8>>2]|0,(Z|0)!=0):0)?(_=k[Z>>2]|0,(_|0)>0):0){E=k[Z+4>>2]|0;D=n+46|0;y=n+4|0;x=0;while(1){B=k[E+(x*20|0)>>2]|0;d:do if(!B)B=0;else while(1){A=k[B+4>>2]|0;if(!(A&4096))break d;if(!(A&262144))B=B+12|0;else B=k[(k[B+20>>2]|0)+4>>2]|0;B=k[B>>2]|0;if(!B){B=0;break}}while(0);if((i[B>>0]|0)!=-102){x=0;break c}if((k[B+28>>2]|0)==(v|0)){A=j[B+32>>1]|0;if(A<<16>>16<0){x=1;break c}B=j[D>>1]|0;if(B<<16>>16){z=k[y>>2]|0;B=B&65535;C=0;do{if(A<<16>>16==(j[z+(C<<1)>>1]|0)){x=1;break c}C=C+1|0}while((C|0)<(B|0))}}x=x+1|0;if((x|0)>=(_|0)){x=0;break}}}else x=0;while(0);do if((k[n+40>>2]|0)<1){k[V>>2]=256;i[P>>0]=(x|0)!=0?I&255:0;j[U>>1]=(G&65535)+16;Nv(X,$,G);d=Kv(a,$)|0;j[R>>1]=G;if(d)break a}else{if(!(w&32)){D=J;E=k[D>>2]|0;D=k[D+4>>2]|0;C=n+4|0;B=0;A=0;z=m[n+48>>1]|0;e:while(1){y=z;while(1){z=y+-1|0;if((y|0)<=0)break e;y=j[(k[C>>2]|0)+(z<<1)>>1]|0;if((y&65535)<63)break;else y=z}o=nw(1,0,y<<16>>16|0)|0;B=o|B;A=L|A}o=E&~B;u=D&~A;B=o;A=u;u=(o|0)==0&(u|0)==0?576:512}else{B=0;A=0;u=576}k[V>>2]=u;o=(x|0)!=0;if(!o?(i[t>>0]&32)==0:0){if(!((B|0)==0&(A|0)==0))break;if(i[H>>0]&4)break;if((j[n+44>>1]|0)>=(j[K>>1]|0))break;if(!((j[q>>1]&4)==0&(k[2190]|0)!=0))break;if(j[(k[k[aa>>2]>>2]|0)+60>>1]&64)break}i[P>>0]=o?I&255:0;h=G<<16>>16;o=h+1+(((j[n+44>>1]|0)*15|0)/(j[K>>1]|0)|0)&65535;if(!((B|0)==0&(A|0)==0))o=Lv(o,h+16&65535)|0;j[U>>1]=o;Nv(X,$,G);d=Kv(a,$)|0;j[R>>1]=G;if(d)break a}while(0);d=Ov(a,W,n,0)|0;if(k[Y>>2]|0)break a}n=k[n+20>>2]|0;if(!((d|0)==0&(n|0)!=0))break;else I=I+1|0}}while(0);r=ca;return d|0}function Nu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=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;$=r;r=r+608|0;if((r|0)>=(s|0))ka();Z=$+168|0;X=$+576|0;Y=$+112|0;V=$+56|0;W=$;d=k[a>>2]|0;S=k[a+4>>2]|0;h=k[S+20>>2]|0;g=k[S+12>>2]|0;U=h+(g*48|0)|0;R=k[a+12>>2]|0;e=Y+0|0;f=e+56|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=k[d+4>>2]|0;e=l[R+16>>0]|0;Q=k[f+(e*72|0)+48>>2]|0;a:do if((g|0)>0){A=R+8|0;B=X+8|0;C=X+16|0;D=R+40|0;E=R+48|0;F=R+36|0;G=R+18|0;H=R+17|0;I=R+24|0;J=R+20|0;K=R+22|0;L=Z+4|0;M=Z+8|0;N=Z+12|0;O=Z+20|0;P=X+4|0;w=f+(e*72|0)+24|0;x=W+8|0;y=Y+8|0;z=V+8|0;while(1){b:do if((j[h+18>>1]&256)!=0?(T=k[h+12>>2]|0,t=T+408|0,q=A,!((k[q>>2]&k[t>>2]|0)==0?(k[q+4>>2]&k[t+4>>2]|0)==0:0)):0){g=T+20|0;v=(k[g>>2]|0)+((k[T+12>>2]|0)*48|0)|0;k[X+0>>2]=k[a+0>>2];k[X+4>>2]=k[a+4>>2];k[X+8>>2]=k[a+8>>2];k[X+12>>2]=k[a+12>>2];k[B>>2]=0;k[C>>2]=V;g=k[g>>2]|0;c:do if(g>>>0>>0){e=1;d=0;d:while(1){if(!(j[g+18>>1]&512))if((k[g+8>>2]|0)==(Q|0)){k[Z>>2]=k[S>>2];k[L>>2]=S;i[M>>0]=72;k[N>>2]=1;k[O>>2]=g;f=Z;_=10}else f=e;else{f=k[g+12>>2]|0;_=10}do if((_|0)==10){_=0;k[P>>2]=f;j[V>>1]=0;if(!(i[(k[w>>2]|0)+44>>0]&16))d=Mu(X,b,c)|0;else d=Lu(X,b,c)|0;if(!d)d=Nu(X,b,c)|0;f=j[V>>1]|0;if(!(f<<16>>16))break d;if(e){j[Y>>1]=f;pw(y|0,z|0,(f&65535)<<4|0)|0;f=0;break}t=j[Y>>1]|0;j[W>>1]=t;u=t&65535;pw(x|0,y|0,u<<4|0)|0;j[Y>>1]=0;if(!(t<<16>>16))f=0;else{t=0;do{if(!(f<<16>>16))f=0;else{n=W+(t<<4)+8|0;e=k[n>>2]|0;n=k[n+4>>2]|0;o=j[W+(t<<4)+16>>1]|0;p=j[W+(t<<4)+18>>1]|0;q=0;do{aa=V+(q<<4)+8|0;ba=k[aa>>2]|e;aa=k[aa+4>>2]|n;f=Lv(o,j[V+(q<<4)+16>>1]|0)|0;Pv(Y,ba,aa,f,Lv(p,j[V+(q<<4)+18>>1]|0)|0);q=q+1|0;f=j[V>>1]|0}while((q|0)<(f&65535|0))}t=t+1|0}while((t|0)<(u|0));f=0}}while(0);g=g+48|0;if(g>>>0>=v>>>0)break c;else e=f}j[Y>>1]=0}else d=0;while(0);j[D>>1]=1;k[k[E>>2]>>2]=h;k[F>>2]=8192;j[G>>1]=0;i[H>>0]=0;k[I+0>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;if(d)break a;g=m[Y>>1]|0;f=0;while(1){if((f|0)>=(g|0))break b;j[J>>1]=(m[Y+(f<<4)+16>>1]|0)+1;j[K>>1]=j[Y+(f<<4)+18>>1]|0;q=Y+(f<<4)+8|0;t=k[q+4>>2]|0;d=R;k[d>>2]=k[q>>2];k[d+4>>2]=t;d=Kv(a,R)|0;if(!d)f=f+1|0;else break a}}while(0);h=h+48|0;if(h>>>0>=U>>>0){d=0;break}}}else d=0;while(0);r=$;return d|0}function Ou(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=b+48|0;d=k[c>>2]|0;e=b+56|0;if((d|0)!=(e|0))rg(a,d);Qv(a,b);k[c>>2]=e;j[b+40>>1]=0;j[b+44>>1]=3;k[b+36>>2]=0;return}function Pu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=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,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,la=0;la=r;r=r+32|0;if((r|0)>=(s|0))ka();aa=la+24|0;Z=la+16|0;da=la+8|0;ja=la;$=k[a>>2]|0;fa=k[$>>2]|0;l=i[a+41>>0]|0;ga=l&255;if((l&255)<2)V=1;else V=l<<24>>24==2?5:10;ia=a+8|0;f=k[ia>>2]|0;ba=b<<16>>16==0;if((f|0)==0|ba)U=0;else U=k[f>>2]|0;g=U<<1;ea=g+(ha((ga<<3)+64|0,V)|0)|0;ea=rh(fa,ea,((ea|0)<0)<<31>>31)|0;do if(ea){f=ea+(V<<5)|0;k[f+0>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[f+16>>2]=0;k[f+20>>2]=0;k[f+24>>2]=0;k[f+28>>2]=0;c=V<<1;h=ha(V,-2)|0;h=ea+((ha((((h|0)>-1?h:1073741823)+(V<<1)<<2)+4|0,ga)|0)+(V<<6))|0;e=c;d=ea;c=ea+(c<<5)|0;while(1){k[d+24>>2]=c;e=e+-1|0;if((e|0)<=0)break;else{d=d+32|0;c=c+(ga<<2)|0}}e=(U|0)!=0;if(e)kw(h|0,0,g|0)|0;else h=0;T=k[$+424>>2]|0;j[ea+(V<<5)+16>>1]=T>>>0<48?T&65535:48;if(e)i[ea+(V<<5)+22>>0]=l<<24>>24!=0?-1:U&255;T=l<<24>>24==0;if(!T){P=a+16|0;Q=a+34|0;R=b<<16>>16<11;S=(b&65535)+16|0;M=b<<16>>16;N=((M|0)<0)<<31>>31;O=V>>>0>1;c=ea;L=0;g=0;l=0;b=0;d=1;while(1){if((d|0)>0){G=L&65535;H=L<<2;I=c+18|0;J=c+16|0;K=0;e=0;F=f;while(1){n=k[P>>2]|0;if(n){A=F+22|0;B=F+16|0;C=F+20|0;D=F+24|0;E=F+8|0;z=e;while(1){p=i[A>>0]|0;q=Z;k[q>>2]=0;k[q+4>>2]=0;q=n;e=F;o=k[e>>2]|0;e=k[e+4>>2]|0;a:do if(((k[q>>2]&~o|0)==0?(k[q+4>>2]&~e|0)==0:0)?(W=n+8|0,Y=W,X=k[Y>>2]|0,Y=k[Y+4>>2]|0,(X&o|0)==0&(Y&e|0)==0):0){v=m[B>>1]|0;x=Lv(j[n+18>>1]|0,v+(m[n+20>>1]|0)&65535)|0;x=Lv(x,j[C>>1]|0)|0;v=(m[n+22>>1]|0)+v|0;y=v&65535;u=X|o;q=Y|e;if(p<<24>>24<0)w=Rv(a,k[ia>>2]|0,F,j[Q>>1]|0,G,n,Z)|0;else{e=E;o=k[e+4>>2]|0;w=Z;k[w>>2]=k[e>>2];k[w+4>>2]=o;w=p}p=w<<24>>24;if(w<<24>>24>-1&(U|0)>(p|0)){t=h+(p<<1)|0;o=j[t>>1]|0;if(!(o<<16>>16)){p=((U-p|0)*100|0)/(U|0)|0;p=(ks(p,((p|0)<0)<<31>>31)|0)&65535;if(R)e=0;else e=((ks(M,N)|0)&65535)+65503&65535;p=S+(((p<<16)+-4325376|0)>>>16)+e|0;if(j[Q>>1]&1024)p=(p&65535)+16|0;o=p&65535;j[t>>1]=o}t=Lv(x,o)|0}else t=x;b:do if((z|0)>0){p=0;o=c;while(1){e=o;if(((k[e>>2]|0)==(u|0)?(k[e+4>>2]|0)==(q|0):0)?(i[o+22>>0]^w)<<24>>24>-1:0)break;p=p+1|0;if((p|0)>=(z|0)){_=35;break b}else o=o+32|0}e=j[o+18>>1]|0;if(e<<16>>16>16){e=z;break a}if(e<<16>>16!=t<<16>>16){e=z;break}if((j[o+16>>1]|0)>(v<<16>>16|0))e=z;else{e=z;break a}}else _=35;while(0);if((_|0)==35){_=0;o=(z|0)<(V|0);if(!o){if(t<<16>>16>g<<16>>16){e=z;break}if(!(t<<16>>16!=g<<16>>16?1:x<<16>>16>16)){e=z;break}}e=(o&1)+z|0;o=c+((o?z:l)<<5)|0}p=F;v=W;q=k[v+4>>2]|k[p+4>>2];u=o;k[u>>2]=k[v>>2]|k[p>>2];k[u+4>>2]=q;u=Z;q=k[u+4>>2]|0;p=o+8|0;k[p>>2]=k[u>>2];k[p+4>>2]=q;j[o+16>>1]=y;j[o+18>>1]=t;j[o+20>>1]=x;i[o+22>>0]=w;o=o+24|0;pw(k[o>>2]|0,k[D>>2]|0,H|0)|0;k[(k[o>>2]|0)+(L<<2)>>2]=n;if((e|0)<(V|0))break;g=j[I>>1]|0;b=j[J>>1]|0;if(O){q=c;t=1;p=g;l=0;o=b}else{l=0;break}while(1){g=j[q+50>>1]|0;do if(g<<16>>16<=p<<16>>16){if(g<<16>>16!=p<<16>>16){g=p;b=o;break}b=j[q+52>>1]|0;if(b<<16>>16>o<<16>>16)_=48;else{g=p;b=o}}else{b=j[q+52>>1]|0;_=48}while(0);q=q+32|0;if((_|0)==48){_=0;l=t}t=t+1|0;if((t|0)>=(V|0))break;else{p=g;o=b}}}else e=z;while(0);n=k[n+52>>2]|0;if(!n)break;else z=e}}K=K+1|0;if((K|0)==(d|0)){d=e;break}else F=F+32|0}}else d=0;L=L+1|0;if((L|0)>=(ga|0))break;else{K=c;c=f;f=K}}if(!d){yh($,34008,aa);rg(fa,ea);break}if((d|0)>1){e=1;f=c;do{if((j[f+18>>1]|0)>(j[c+(e<<5)+18>>1]|0))f=c+(e<<5)|0;e=e+1|0}while((e|0)!=(d|0))}else f=c;if(!T){d=a+4|0;e=k[f+24>>2]|0;c=0;do{_=k[e+(c<<2)>>2]|0;k[a+(c*80|0)+800>>2]=_;_=i[_+16>>0]|0;i[a+(c*80|0)+780>>0]=_;k[a+(c*80|0)+740>>2]=k[(k[d>>2]|0)+((_&255)*72|0)+48>>2];c=c+1|0}while((c|0)<(ga|0))}}d=a+34|0;if(((j[d>>1]&1536)==1024?(ca=a+40|0,!((i[ca>>0]|0)!=0|ba)):0)?(_=a+12|0,Z=ga+-1|0,Z=(Rv(a,k[_>>2]|0,f,512,Z&65535,k[(k[f+24>>2]|0)+(Z<<2)>>2]|0,da)|0)<<24>>24,(Z|0)==(k[k[_>>2]>>2]|0)):0)i[ca>>0]=2;e=k[ia>>2]|0;if(e){c=j[d>>1]|0;d=i[f+22>>0]|0;if(c&512){if((d<<24>>24|0)==(k[e>>2]|0))i[a+40>>0]=2}else{i[a+36>>0]=d<<24>>24<0?0:d;Y=f+8|0;Z=k[Y+4>>2]|0;_=a+24|0;k[_>>2]=k[Y>>2];k[_+4>>2]=Z}if(((c&2048)!=0?(i[a+36>>0]|0)==(k[e>>2]|0):0)?(_=ja,k[_>>2]=0,k[_+4>>2]=0,_=ga+-1|0,_=(Rv(a,e,f,0,_&65535,k[(k[f+24>>2]|0)+(_<<2)>>2]|0,ja)|0)<<24>>24,(_|0)==(k[k[ia>>2]>>2]|0)):0){i[a+37>>0]=1;Y=ja;Z=k[Y+4>>2]|0;_=a+24|0;k[_>>2]=k[Y>>2];k[_+4>>2]=Z}}j[a+32>>1]=j[f+16>>1]|0;rg(fa,ea)}while(0);r=la;return}function Qu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((b|0)!=0?(f=k[b>>2]|0,(f|0)>0):0){d=k[b+4>>2]|0;c=0;b=0;e=0;do{g=Fv(a,k[d+(e*20|0)>>2]|0)|0;c=g|c;b=L|b;e=e+1|0}while((e|0)<(f|0))}else{b=0;c=0}L=b;return c|0}function Ru(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;do if((((k[a+8>>2]|0)==(k[b+40>>2]|0)?(j[a+18>>1]&2)!=0:0)?(f=a+32|0,(k[f>>2]&c|0)==0?(k[f+4>>2]&d|0)==0:0):0)?(e=k[a+12>>2]|0,(e|0)>=0):0){c=i[(k[(k[b+16>>2]|0)+4>>2]|0)+(e*24|0)+21>>0]|0;d=(sv(k[a>>2]|0)|0)<<24>>24;if((d|0)==66){d=c<<24>>24==66&1;break}else if((d|0)==65){d=1;break}else{d=c<<24>>24>66&1;break}}else d=0;while(0);return d|0}function Su(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=b+44|0;if((m[g>>1]|0|0)<(c|0)){d=c+7&-8;e=rh(a,d<<2,0)|0;if(!e)c=7;else{f=b+48|0;pw(e|0,k[f>>2]|0,(m[g>>1]|0)<<2|0)|0;c=k[f>>2]|0;if((c|0)!=(b+56|0))rg(a,c);k[f>>2]=e;j[g>>1]=d;c=0}}else c=0;return c|0}function Tu(a,b,c){a=a|0;b=b|0;c=c|0;do if(!(k[b+4>>2]&256)){if((c|0)!=0?(k[c+4>>2]&256|0)!=0:0){b=hu(a,c)|0;break}b=hu(a,b)|0;if(!b)b=hu(a,c)|0}else b=hu(a,b)|0;while(0);return b|0}function Uu(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,m=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+144|0;if((r|0)>=(s|0))ka();t=y;x=y+8|0;m=y+36|0;if(((i[a+450>>0]|0)==2?(o=l[c+44>>0]|0,w=k[a+8>>2]|0,h=k[a>>2]|0,v=k[a+464>>2]|0,q=k[c+64>>2]|0,u=q+36|0,p=k[u>>2]|0,(p&8192|0)==0):0)?(g=f&65535,(g&64|0)==0):0){f=p&48;do if(!f){if((p&1024|0)==0?(j[q+24>>1]|0)!=0:0){n=1;break}n=(g&3|0)!=0}else n=1;while(0);k[x+4>>2]=m;k[x+8>>2]=m;k[x+12>>2]=0;k[x+16>>2]=100;k[x+20>>2]=1e9;i[x+24>>0]=1;i[x+25>>0]=0;k[x>>2]=h;a=n?33576:33584;c=a;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;Xk(x,a,c-a&1073741823);if(!(k[b+(o*72|0)+28>>2]|0)){k[t>>2]=k[b+(o*72|0)+16>>2];Jn(x,0,33608,t)}else{k[t>>2]=l[b+(o*72|0)+46>>0];Jn(x,0,33592,t)}a=k[b+(o*72|0)+20>>2]|0;if(a){k[t>>2]=a;Jn(x,0,33624,t)}do if(!(p&1280)){g=q+28|0;c=k[g>>2]|0;f=b+(o*72|0)+24|0;if((i[(k[f>>2]|0)+44>>0]&32)!=0?(i[c+51>>0]&3)==2:0)if(n)a=33632;else break;else if(!(p&131072))if(!(p&16384))a=(p&64|0)==0?33744:33720;else a=33688;else a=33648;Xk(x,33760,7);k[t>>2]=k[c>>2];Jn(x,0,a,t);p=j[q+24>>1]|0;n=k[(k[f>>2]|0)+4>>2]|0;m=k[(k[g>>2]|0)+4>>2]|0;c=p&65535;if(!(p<<16>>16)){if(!(k[u>>2]&48))break;Xk(x,33904,2);g=0}else{f=j[q+42>>1]|0;Xk(x,33904,2);f=f&65535;g=0;do{a=j[m+(g<<1)>>1]|0;if(a<<16>>16<0)a=20456;else a=k[n+((a<<16>>16)*24|0)>>2]|0;if((g|0)<(f|0)){if(g)Xk(x,33920,5);k[t>>2]=a;Jn(x,0,33928,t)}else Sv(x,g,a,33912);g=g+1|0}while((g|0)<(c|0));g=c>>>0>1?c:1}f=k[u>>2]|0;if(!(f&32))a=g;else{f=j[m+(g<<1)>>1]|0;if(f<<16>>16<0)f=20456;else f=k[n+((f<<16>>16)*24|0)>>2]|0;Sv(x,g,f,33936);f=k[u>>2]|0;a=g+1|0}if(f&16){g=j[m+(g<<1)>>1]|0;if(g<<16>>16<0)g=20456;else g=k[n+((g<<16>>16)*24|0)>>2]|0;Sv(x,a,g,33944)}Xk(x,33952,1)}else{if((p&256|0)==0|(p&15|0)==0){if(!(p&1024))break;p=k[q+32>>2]|0;k[t>>2]=k[q+24>>2];k[t+4>>2]=p;Jn(x,0,33872,t);break}if(!(p&5))if((f|0)==48)f=33784;else f=(p&32|0)==0?33824:33808;else f=33768;Xk(x,33840,27);g=f;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;Xk(x,f,g-f&1073741823)}while(0);p=yg(x)|0;Ch(w,Bh(w,157,v,d,e)|0,p,-1)}r=y;return}function Vu(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;l=k[b>>2]|0;n=k[a+8>>2]|0;g=i[l>>0]|0;do if(g<<24>>24==76)Bh(n,28,0,f,0)|0;else if(g<<24>>24==79)f=ns(a,k[l+16>>2]|0,f)|0;else{h=k[c+64>>2]|0;g=h+36|0;if(((k[g>>2]&1024|0)==0?(j=k[h+28>>2]|0,(j|0)!=0):0)?(i[(k[j+28>>2]|0)+d>>0]|0)!=0:0)e=(e|0)==0&1;m=rv(a,l,4,0)|0;if((m|0)==4)e=(e|0)==0&1;l=k[l+28>>2]|0;d=(e|0)!=0;Bh(n,d?105:108,l,0,0)|0;k[g>>2]=k[g>>2]|2048;j=c+56|0;g=k[j>>2]|0;if(!g){g=Cs(n)|0;k[c+16>>2]=g;g=k[j>>2]|0}h=g+1|0;k[j>>2]=h;g=c+60|0;h=$l(k[a>>2]|0,k[g>>2]|0,h*12|0,0)|0;k[g>>2]=h;if(!h){k[j>>2]=0;break}g=(k[j>>2]|0)+-1|0;k[h+(g*12|0)>>2]=l;if((m|0)==1)e=Bh(n,103,l,f,0)|0;else e=Bh(n,47,l,0,f)|0;k[h+(g*12|0)+4>>2]=e;i[h+(g*12|0)+8>>0]=d?6:7;Bh(n,76,f,0,0)|0}while(0);Wu(c,b);return f|0}function Wu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;a:do if(b){f=a+72|0;e=0;while(1){c=b+20|0;d=j[c>>1]|0;if(d&4)break a;if((k[a>>2]|0)!=0?(k[(k[b>>2]|0)+4>>2]&1|0)==0:0)break a;g=f;h=b+40|0;if(!((k[h>>2]&k[g>>2]|0)==0?(k[h+4>>2]&k[g+4>>2]|0)==0:0))break a;d=d&65535;j[c>>1]=d|((e|0)==0|(d&1024|0)==0?4:512);d=k[b+4>>2]|0;if((d|0)<0)break a;b=k[(k[b+24>>2]|0)+20>>2]|0;g=b+(d*48|0)+22|0;c=(i[g>>0]|0)+-1<<24>>24;i[g>>0]=c;if(c<<24>>24)break a;b=b+(d*48|0)|0;if(!b)break;else e=e+1|0}}while(0);return}function Xu(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;do if(!(j[(k[a>>2]|0)+60>>1]&2)){h=a+116|0;g=0;e=h;while(1){f=e+12|0;if(!(k[f>>2]|0)){n=4;break}g=g+1|0;if((g|0)>=10){l=0;e=-1;m=2147483647;break}else e=e+20|0}if((n|0)==4){k[e+8>>2]=k[a+100>>2];k[e>>2]=b;j[e+4>>1]=c;k[f>>2]=d;i[e+6>>0]=0;d=a+104|0;b=k[d>>2]|0;k[d>>2]=b+1;k[e+16>>2]=b;break}while(1){g=k[h+16>>2]|0;f=(g|0)<(m|0);e=f?l:e;l=l+1|0;if((l|0)==10)break;else{m=f?g:m;h=h+20|0}}if((e|0)>-1){k[a+(e*20|0)+124>>2]=k[a+100>>2];k[a+(e*20|0)+116>>2]=b;j[a+(e*20|0)+120>>1]=c;k[a+(e*20|0)+128>>2]=d;i[a+(e*20|0)+122>>0]=0;d=a+104|0;b=k[d>>2]|0;k[d>>2]=b+1;k[a+(e*20|0)+132>>2]=b}}while(0);return}function Yu(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=k[a+8>>2]|0;m=k[b+64>>2]|0;n=j[m+24>>1]|0;p=j[m+42>>1]|0;t=k[m+28>>2]|0;q=a+72|0;l=k[q>>2]|0;f=l+1|0;s=n&65535;o=s+d|0;k[q>>2]=l+o;q=k[a>>2]|0;t=ph(q,tt(r,t)|0)|0;q=(t|0)!=0;if(!q)i[(k[a>>2]|0)+65>>0]=1;if(p<<16>>16){d=k[b+8>>2]|0;g=(c|0)!=0;Bh(r,g?105:108,d,0,0)|0;h=Bh(r,16,0,0,0)|0;l=p&65535;g=Bh(r,g?62:65,d,0,f)|0;Ch(r,g,l,-14);k[b+20>>2]=g;g=k[r+32>>2]|0;if(g>>>0>h>>>0)k[(k[r+4>>2]|0)+(h*20|0)+8>>2]=g;k[(k[r+24>>2]|0)+88>>2]=g+-1;h=0;do{Bh(r,47,d,h,h+f|0)|0;h=h+1|0}while((h|0)<(l|0))}if((p&65535)<(n&65535)){m=m+48|0;l=b+12|0;n=(o|0)==1;o=p&65535;h=f;while(1){g=k[(k[m>>2]|0)+(o<<2)>>2]|0;d=o+h|0;f=Vu(a,g,b,o,c,d)|0;do if((f|0)!=(d|0))if(n){ds(a,h);break}else{Bh(r,34,f,d,0)|0;f=h;break}else f=h;while(0);if(!(j[g+18>>1]&129)){d=k[(k[g>>2]|0)+16>>2]|0;if(Zu(d)|0)Bh(r,76,f+o|0,k[l>>2]|0,0)|0;if(q){g=t+o|0;if((Gu(d,i[g>>0]|0)|0)<<24>>24==65){i[g>>0]=65;h=65}else h=i[g>>0]|0;if(_u(d,h)|0)i[g>>0]=65}}o=o+1|0;if((o|0)>=(s|0))break;else h=f}}k[e>>2]=t;return f|0}function Zu(a){a=a|0;var b=0;b=i[a>>0]|0;if((b+99&255)<2)do{a=k[a+12>>2]|0;b=i[a>>0]|0}while((b+99&255)<2);if(b<<24>>24==-97)b=i[a+38>>0]|0;switch(b&255|0){case 134:case 133:case 97:case 132:{a=0;break}case 154:{if(!(k[a+4>>2]&1048576)){b=j[a+32>>1]|0;if(b<<16>>16>-1)a=(i[(k[(k[a+44>>2]|0)+4>>2]|0)+((b<<16>>16)*24|0)+20>>0]|0)==0;else a=0}else a=1;a=a&1;break}default:a=1}return a|0}function _u(a,b){a=a|0;b=b|0;var c=0;a:do if(b<<24>>24==65)a=1;else{c=i[a>>0]|0;if((c+99&255)<2)do{a=k[a+12>>2]|0;c=i[a>>0]|0}while((c+99&255)<2);if(c<<24>>24==-97)c=i[a+38>>0]|0;switch(c&255|0){case 133:{a=(b<<24>>24==69|b<<24>>24==67)&1;break a}case 134:{a=1;break a}case 132:{a=(b+-67&255)<2&1;break a}case 154:{if((j[a+32>>1]|0)<0)a=(b+-67&255)<2;else a=0;a=a&1;break a}case 97:{a=b<<24>>24==66&1;break a}default:{a=0;break a}}}while(0);return a|0}function $u(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[a+8>>2]|0;do if(d){a:do if((c|0)>0)while(1){if((i[d>>0]|0)!=65){e=d;break a}c=c+-1|0;b=b+1|0;d=d+1|0;if((c|0)<=0){e=d;break}}else e=d;while(0);while(1){if((c|0)<=1){g=8;break}d=c+-1|0;if((i[e+d>>0]|0)==65)c=d;else break}if((g|0)==8)if((c|0)<=0)break;Bh(f,48,b,c,0)|0;Ch(f,-1,e,c);it(a,b,c)}while(0);return}function av(a,b){a=a|0;b=b|0;var c=0,d=0;if(b){Tv(b+328|0);d=b+16|0;c=k[d>>2]|0;if(c)do{k[d>>2]=k[c+52>>2];Ou(a,c);rg(a,c);c=k[d>>2]|0}while((c|0)!=0);rg(a,b)}return}function bv(a,b){a=a|0;b=b|0;var c=0,d=0;c=r;r=r+32|0;if((r|0)>=(s|0))ka();d=c;k[d+0>>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>>2]=80;k[d+4>>2]=81;k[d+24>>2]=a;ws(d,b)|0;r=c;return}function cv(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;n=r;r=r+16|0;if((r|0)>=(s|0))ka();l=n+4|0;m=n;j=k[a+8>>2]|0;k[l>>2]=0;k[m>>2]=0;if(!((j|0)==0|(b|0)==0)){f=i[b>>0]|0;e=f&255;a:do switch(e|0){case 74:{dv(a,b,c,1,d);break}case 77:case 76:{Bh(j,e,eu(a,k[b+12>>2]|0,l)|0,c,0)|0;break}case 79:case 78:case 83:case 80:case 81:case 82:{f=b+12|0;h=eu(a,k[f>>2]|0,l)|0;g=b+16|0;j=eu(a,k[g>>2]|0,m)|0;fu(a,k[f>>2]|0,k[g>>2]|0,e,h,j,c,d);break}case 72:{h=Cs(j)|0;lt(a,k[b+12>>2]|0,h,d^16);e=a+100|0;k[e>>2]=(k[e>>2]|0)+1;cv(a,k[b+16>>2]|0,c,d);e=k[j+24>>2]|0;f=~h;if((h|0)<0?(g=k[e+112>>2]|0,(g|0)!=0):0)k[g+(f<<2)>>2]=k[j+32>>2];k[e+88>>2]=(k[j+32>>2]|0)+-1;gu(a);break}case 71:{cv(a,k[b+12>>2]|0,c,d);j=a+100|0;k[j>>2]=(k[j>>2]|0)+1;cv(a,k[b+16>>2]|0,c,d);gu(a);break}case 19:{lt(a,k[b+12>>2]|0,c,d);break}case 148:case 73:{d=b+12|0;h=eu(a,k[d>>2]|0,l)|0;g=b+16|0;j=eu(a,k[g>>2]|0,m)|0;fu(a,k[d>>2]|0,k[g>>2]|0,f<<24>>24==73?79:78,h,j,c,128);break}case 75:{g=Cs(j)|0;ku(a,b,g,(d|0)!=0?c:g);Bh(j,16,0,c,0)|0;f=k[j+24>>2]|0;e=~g;if((g|0)<0?(h=k[f+112>>2]|0,(h|0)!=0):0)k[h+(e<<2)>>2]=k[j+32>>2];k[f+88>>2]=(k[j+32>>2]|0)+-1;break}default:{if(ev(b)|0){Bh(j,16,0,c,0)|0;break a}if(!(ru(b)|0))Bh(j,45,eu(a,b,l)|0,c,(d|0)!=0&1)|0}}while(0);ds(a,k[l>>2]|0);ds(a,k[m>>2]|0)}r=n;return}function dv(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,j=0,l=0,m=0,n=0,o=0,p=0;n=r;r=r+208|0;if((r|0)>=(s|0))ka();h=n+152|0;f=n+104|0;g=n+56|0;j=n+8|0;l=n;k[l>>2]=0;m=j+0|0;o=(k[b+12>>2]|0)+0|0;p=m+48|0;do{k[m>>2]=k[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));i[h>>0]=72;k[h+12>>2]=f;k[h+16>>2]=g;i[f>>0]=83;k[f+12>>2]=j;b=k[(k[b+20>>2]|0)+4>>2]|0;k[f+16>>2]=k[b>>2];i[g>>0]=81;k[g+12>>2]=j;k[g+16>>2]=k[b+20>>2];b=eu(a,j,l)|0;i[j+38>>0]=i[j>>0]|0;i[j>>0]=-97;k[j+28>>2]=b;b=j+4|0;k[b>>2]=k[b>>2]&-4097;if(!d)lt(a,h,c,e);else cv(a,h,c,e);ds(a,k[l>>2]|0);r=n;return}function ev(a){a=a|0;var b=0,c=0;c=r;r=r+16|0;if((r|0)>=(s|0))ka();b=c;k[b>>2]=0;if((k[a+4>>2]&1|0)==0?(Rs(a,b)|0)!=0:0)a=(k[b>>2]|0)!=0&1;else a=0;r=c;return a|0}function fv(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if(!((a|0)==0|(b|0)==0)){d=k[b>>2]|0;if((d|0)>0){b=k[b+4>>2]|0;c=0;while(1){if((Bv(a,k[b+(c*20|0)+4>>2]|0)|0)>-1){b=1;break a}c=c+1|0;if((c|0)>=(d|0)){b=0;break}}}else b=0}else b=1;while(0);return b|0}function gv(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;m=k[b+20>>2]|0;a:do if((m|0)>0){n=j[a+38>>1]|0;o=n<<16>>16>0;p=a+4|0;l=a+36|0;f=(d|0)!=0;g=0;while(1){d=k[b+(g<<3)+40>>2]|0;if(o){a=(d|0)==0;h=0;do{if(!((k[c+(h<<2)>>2]|0)<=-1?!((h|0)==(j[l>>1]|0)&f):0))q=7;do if((q|0)==7){q=0;e=k[p>>2]|0;if(a)if(!(i[e+(h*24|0)+23>>0]&1))break;else{a=1;break a}else if(!(id(k[e+(h*24|0)>>2]|0,d)|0)){a=1;break a}else break}while(0);h=h+1|0}while((h|0)<(n<<16>>16|0))}g=g+1|0;if((g|0)>=(m|0)){a=0;break}}}else a=0;while(0);return a|0}function hv(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,p=0,q=0,t=0,u=0,v=0;v=r;r=r+48|0;if((r|0)>=(s|0))ka();j=v;o=v+8|0;u=k[a+408>>2]|0;u=(u|0)==0?a:u;h=u+528|0;e=k[h>>2]|0;a:do if(!e)g=5;else while(1){if((k[e>>2]|0)==(b|0)?(k[e+12>>2]|0)==(d|0):0)break a;e=k[e+4>>2]|0;if(!e){g=5;break}}while(0);do if((g|0)==5){q=k[a>>2]|0;e=rh(q,24,0)|0;if(e){g=e+0|0;f=g+24|0;do{i[g>>0]=0;g=g+1|0}while((g|0)<(f|0));k[e+4>>2]=k[h>>2];k[h>>2]=e;p=rh(q,28,0)|0;if(!p){k[e+8>>2]=0;e=0;break}g=p+0|0;f=g+24|0;do{i[g>>0]=0;g=g+1|0}while((g|0)<(f|0));k[e+8>>2]=p;l=(k[u+8>>2]|0)+192|0;k[p+24>>2]=k[l>>2];k[l>>2]=p;k[e>>2]=b;k[e+12>>2]=d;l=e+16|0;k[l>>2]=-1;m=e+20|0;k[m>>2]=-1;n=rh(q,536,0)|0;if(n){kw(n|0,0,536)|0;k[o+0>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[o+16>>2]=0;k[o+20>>2]=0;k[o+24>>2]=0;k[o+28>>2]=0;k[o>>2]=n;k[n>>2]=q;k[n+412>>2]=c;k[n+408>>2]=u;k[n+492>>2]=k[b>>2];i[n+436>>0]=i[b+8>>0]|0;k[n+424>>2]=k[a+424>>2];c=Tq(n)|0;if(c){k[j>>2]=k[b>>2];Ch(c,-1,zh(q,34152,j)|0,-1);g=k[b+12>>2]|0;if(!g)h=0;else{f=Rr(q,g,0,0)|0;if((qs(o,f)|0)==0?(i[q+65>>0]|0)==0:0){g=Cs(c)|0;lt(n,f,g,16)}else g=0;Lk(q,f);h=g}Uv(n,k[b+28>>2]|0,d);if(h){g=k[c+24>>2]|0;f=~h;if((h|0)<0?(t=k[g+112>>2]|0,(t|0)!=0):0)k[t+(f<<2)>>2]=k[c+32>>2];k[g+88>>2]=(k[c+32>>2]|0)+-1}Bh(c,24,0,0,0)|0;f=a+64|0;g=k[n+4>>2]|0;if(!(k[f>>2]|0)){k[a+4>>2]=g;k[f>>2]=k[n+64>>2]}else rg(k[n>>2]|0,g);if(!(i[q+65>>0]|0)){j=c+4|0;o=k[j>>2]|0;On(c,u+392|0);k[p+4>>2]=k[c+32>>2];k[j>>2]=0;k[p>>2]=o}k[p+8>>2]=k[n+72>>2];k[p+12>>2]=k[n+68>>2];k[p+16>>2]=k[n+80>>2];k[p+20>>2]=b;k[l>>2]=k[n+428>>2];k[m>>2]=k[n+432>>2];Ul(c)}Hh(n);rg(q,n)}else e=0}else e=0}while(0);r=v;return e|0}function iv(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=Tq(a)|0;c=hv(a,b,c,e)|0;if(c){if(!(k[b>>2]|0))e=0;else e=((k[(k[a>>2]|0)+24>>2]|0)>>>18&1^1)&255;a=a+72|0;b=(k[a>>2]|0)+1|0;k[a>>2]=b;Bh(g,131,d,f,b)|0;Ch(g,-1,k[c+8>>2]|0,-18);c=k[g+4>>2]|0;if(c)i[c+(((k[g+32>>2]|0)+-1|0)*20|0)+3>>0]=e}return}function jv(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;i=r;r=r+16|0;if((r|0)>=(s|0))ka();h=i;e=k[a>>2]|0;g=k[(k[e+16>>2]|0)+(d<<4)>>2]|0;f=pc[k[e+284>>2]&7](k[e+288>>2]|0,20,b,c,g,k[a+492>>2]|0)|0;if((f|0)==1){if((d|0)!=0?1:(k[e+20>>2]|0)>2){k[h>>2]=g;k[h+4>>2]=b;k[h+8>>2]=c;yh(a,27688,h)}else{k[h>>2]=b;k[h+4>>2]=c;yh(a,27728,h)}k[a+12>>2]=23}else if(!((f|0)==0|(f|0)==2)){yh(a,25232,h);k[a+12>>2]=1}r=i;return f|0}function kv(a,b,c,d,e,f,g,h,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;m=m|0;var 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=Tq(a)|0;A=(k[a+68>>2]|0)+-1|0;B=Cs(y)|0;if((h|0)<0)Bh(y,135,l[e+24>>0]|0,B,0)|0;n=e+20|0;o=k[n>>2]|0;if((o|0)>0){q=g+1|0;p=0;do{Bh(y,76,q+(k[f+(p<<2)>>2]|0)|0,B,0)|0;p=p+1|0;o=k[n>>2]|0}while((p|0)<(o|0))}do if(!m){if(!d){o=a+19|0;n=i[o>>0]|0;if(!(n<<24>>24)){d=a+72|0;q=(k[d>>2]|0)+1|0;k[d>>2]=q}else{q=n+-1<<24>>24;i[o>>0]=q;q=k[a+((q&255)<<2)+24>>2]|0}Bh(y,34,g+1+(k[f>>2]|0)|0,q,0)|0;p=Bh(y,38,q,0,0)|0;if(((h|0)==1?(k[e>>2]|0)==(c|0):0)?(Bh(y,79,g,B,q)|0,r=k[y+4>>2]|0,(r|0)!=0):0)i[r+(((k[y+32>>2]|0)+-1|0)*20|0)+3>>0]=-112;Vq(a,A,b,c,54);Bh(y,70,A,0,q)|0;Bh(y,16,0,B,0)|0;n=k[y+32>>2]|0;if(n>>>0>1)k[(k[y+4>>2]|0)+((n+-2|0)*20|0)+8>>2]=n;m=n+-1|0;o=(k[y+24>>2]|0)+88|0;k[o>>2]=m;if(n>>>0>p>>>0)k[(k[y+4>>2]|0)+(p*20|0)+8>>2]=n;k[o>>2]=m;ds(a,q);break}w=a+60|0;q=k[w>>2]|0;x=a+56|0;p=k[x>>2]|0;if((p|0)<(o|0)){v=a+72|0;q=k[v>>2]|0;k[v>>2]=q+o;q=q+1|0}else{k[w>>2]=q+o;k[x>>2]=p-o}p=a+19|0;n=i[p>>0]|0;if(!(n<<24>>24)){m=a+72|0;v=(k[m>>2]|0)+1|0;k[m>>2]=v}else{v=n+-1<<24>>24;i[p>>0]=v;v=k[a+((v&255)<<2)+24>>2]|0}Bh(y,54,A,k[d+40>>2]|0,b)|0;m=k[a+8>>2]|0;Ch(m,-1,ms(a,d)|0,-6);m=(o|0)>0;if(m){p=g+1|0;n=0;do{Bh(y,33,p+(k[f+(n<<2)>>2]|0)|0,n+q|0,0)|0;n=n+1|0}while((n|0)!=(o|0))}if((h|0)==1?(k[e>>2]|0)==(c|0):0){t=y+32|0;u=o+1+(k[t>>2]|0)|0;if(m){b=g+1|0;s=d+4|0;p=c+36|0;n=y+4|0;r=0;do{m=j[(k[s>>2]|0)+(r<<1)>>1]|0;Bh(y,78,b+(k[f+(r<<2)>>2]|0)|0,u,(m<<16>>16==(j[p>>1]|0)?0:(m<<16>>16)+1|0)+g|0)|0;m=k[n>>2]|0;if(m)i[m+(((k[t>>2]|0)+-1|0)*20|0)+3>>0]=16;r=r+1|0}while((r|0)!=(o|0))}Bh(y,16,0,B,0)|0}g=tt(y,d)|0;Ch(y,Bh(y,49,q,o,v)|0,g,o);Ch(y,Bh(y,69,A,B,v)|0,0,-14);ds(a,v);it(a,q,o);if((k[x>>2]|0)<(o|0)){k[x>>2]=o;k[w>>2]=q}}while(0);n=i[e+24>>0]|0;m=n<<24>>24==0;if(((m?(k[(k[a>>2]|0)+24>>2]&16777216|0)==0:0)?(k[a+408>>2]|0)==0:0)?(i[a+20>>0]|0)==0:0)Es(a,787,2,0,-2,4);else{if(!((h|0)<1|m^1)){e=k[a+408>>2]|0;i[((e|0)==0?a:e)+21>>0]=1}Bh(y,134,n&255,h,0)|0}m=k[y+24>>2]|0;n=~B;if((B|0)<0?(z=k[m+112>>2]|0,(z|0)!=0):0)k[z+(n<<2)>>2]=k[y+32>>2];k[m+88>>2]=(k[y+32>>2]|0)+-1;Bh(y,61,A,0,0)|0;return}function lv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=r;r=r+48|0;if((r|0)>=(s|0))ka();y=D+32|0;z=D;A=k[a>>2]|0;B=Tq(a)|0;if((h|0)<0)C=Bh(B,135,l[e+24>>0]|0,0,0)|0;else C=0;x=e+20|0;if((k[x>>2]|0)>0){w=(d|0)==0;v=(f|0)==0;u=e+36|0;t=d+4|0;q=0;n=0;do{if(w)p=-1;else p=j[(k[t>>2]|0)+(q<<1)>>1]|0;o=Vv(a,c,g,p)|0;if(v)p=u;else p=f+(q<<2)|0;n=xs(A,n,cr(a,79,o,yt(A,27,k[(k[(k[e>>2]|0)+4>>2]|0)+((k[p>>2]<<16>>16)*24|0)>>2]|0)|0,0)|0)|0;q=q+1|0}while((q|0)<(k[x>>2]|0));p=e}else{p=e;n=0}if((h|0)>0?(k[p>>2]|0)==(c|0):0){if(!(i[c+44>>0]&32)){f=k[a>>2]|0;k[y>>2]=0;k[y+4>>2]=0;f=sr(f,159,y,0)|0;if(!f)f=0;else{k[f+28>>2]=g;i[f+1>>0]=68}p=k[b+48>>2]|0;k[y>>2]=0;k[y+4>>2]=0;o=sr(A,154,y,0)|0;if(o){k[o+44>>2]=c;k[o+28>>2]=p;j[o+32>>1]=-1}f=cr(a,78,f,o,0)|0}else{p=c+8|0;while(1){p=k[p>>2]|0;if((i[p+51>>0]&3)==2)break;p=p+20|0}x=p+46|0;if(!(j[x>>1]|0))f=0;else{t=d+4|0;u=b+48|0;v=y+4|0;w=0;f=0;do{p=j[(k[t>>2]|0)+(w<<1)>>1]|0;o=Vv(a,c,g,p)|0;q=k[u>>2]|0;k[y>>2]=0;k[v>>2]=0;d=sr(A,154,y,0)|0;if(d){k[d+44>>2]=c;k[d+28>>2]=q;j[d+32>>1]=p}f=xs(A,f,cr(a,79,o,d,0)|0)|0;w=w+1|0}while((w|0)<(m[x>>1]|0))}f=cr(a,19,f,0,0)|0}n=xs(A,n,f)|0};k[z+0>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[z+16>>2]=0;k[z+20>>2]=0;k[z+24>>2]=0;k[z+28>>2]=0;k[z+4>>2]=b;k[z>>2]=a;qs(z,n)|0;f=_s(a,b,n,0,0,0,0)|0;Bh(B,134,l[e+24>>0]|0,h,0)|0;if(f)at(f);Lk(A,n);if(C){f=k[B+32>>2]|0;if(f>>>0>C>>>0)k[(k[B+4>>2]|0)+(C*20|0)+8>>2]=f;k[(k[B+24>>2]|0)+88>>2]=f+-1}r=D;return}function mv(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,j=0,l=0,m=0,n=0,o=0,p=0,q=0,t=0,u=0;u=r;r=r+32|0;if((r|0)>=(s|0))ka();p=u;n=u+16|0;t=u+28|0;g=k[a>>2]|0;q=Tq(a)|0;if(q){j=(k[g+16>>2]|0)+(b<<4)|0;l=a+388|0;m=(d|0)==0;o=0;a:while(1){h=k[28744+(o<<3)>>2]|0;f=di(g,h,k[j>>2]|0)|0;do if(!f){if(!o){k[p>>2]=k[j>>2];k[p+4>>2]=h;k[p+8>>2]=28768;Gr(a,28816,p);k[n>>2]=k[l>>2];i[t>>0]=4;o=o+1|0;continue a}}else{f=k[f+32>>2]|0;k[n+(o<<2)>>2]=f;i[t+o>>0]=0;ls(a,b,f,1,h);if(m){Bh(q,118,f,b,0)|0;break}else{k[p>>2]=k[j>>2];k[p+4>>2]=h;k[p+8>>2]=e;k[p+12>>2]=d;Gr(a,28840,p);break}}while(0);o=o+1|0;if((o|0)==3)break}Ch(q,Bh(q,55,c,k[n>>2]|0,b)|0,3,-14);f=k[q+4>>2]|0;if(f)i[f+(((k[q+32>>2]|0)+-1|0)*20|0)+3>>0]=i[t>>0]|0}r=u;return}function nv(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,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,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;D=k[a>>2]|0;E=e+1|0;F=e+2|0;J=e+3|0;K=e+4|0;L=e+5|0;I=e+6|0;G=e+7|0;H=a+72|0;M=k[H>>2]|0;k[H>>2]=(M|0)>(G|0)?M:G;M=Tq(a)|0;if((!((M|0)==0|(b|0)==0)?(p=b+32|0,(k[p>>2]|0)!=0):0)?(q=k[b>>2]|0,(Kc(q,25568,7)|0)!=0):0){l=k[b+68>>2]|0;a:do if(l){h=k[D+20>>2]|0;if((h|0)>0){g=k[D+16>>2]|0;o=0;while(1){n=o+1|0;if((k[g+(o<<4)+12>>2]|0)==(l|0)){n=o;break a}if((n|0)<(h|0))o=n;else break}}else n=0}else n=-1e6;while(0);if(!(Xq(a,28,q,0,k[(k[D+16>>2]|0)+(n<<4)>>2]|0)|0)){ls(a,n,k[p>>2]|0,0,k[b>>2]|0);w=f+1|0;C=f+2|0;q=a+68|0;B=k[q>>2]|0;k[q>>2]=(B|0)>(C|0)?B:C;Vq(a,f,n,b,54);q=k[b>>2]|0;Ch(M,Bh(M,97,0,K,0)|0,q,0);q=k[b+8>>2]|0;C=(c|0)==0;if(!q)l=1;else{x=b+44|0;y=a+8|0;z=M+4|0;A=M+32|0;B=M+24|0;l=1;do{do if(C|(q|0)==(c|0)){l=(k[q+36>>2]|0)==0?0:l;p=i[q+51>>0]|0;if(!((i[x>>0]&32)!=0&(p&3)==2)){g=m[q+48>>1]|0;o=k[q>>2]|0;h=q+46|0;if(!(p&8)){s=h;r=g;p=g}else{s=h;r=g;p=m[h>>1]|0}}else{s=q+46|0;p=m[s>>1]|0;r=p;o=k[b>>2]|0}u=p+-1|0;Ch(M,Bh(M,97,0,L,0)|0,o,0);v=k[H>>2]|0;p=u+G|0;k[H>>2]=(v|0)>(p|0)?v:p;Bh(M,54,w,k[q+40>>2]|0,n)|0;p=k[y>>2]|0;Ch(p,-1,ms(a,q)|0,-6);Bh(M,25,r,F,0)|0;Bh(M,25,m[s>>1]|0,J,0)|0;Bh(M,1,0,F,E)|0;Ch(M,-1,28552,-5);p=k[z>>2]|0;if(p)i[p+(((k[A>>2]|0)+-1|0)*20|0)+3>>0]=2;v=Bh(M,108,w,0,0)|0;Bh(M,25,0,F,0)|0;o=k[A>>2]|0;if((u|0)>0){r=Cs(M)|0;t=rh(D,u<<2,0)|0;if(!t)break;Bh(M,16,0,0,0)|0;o=k[A>>2]|0;if(((u|0)==1?(j[s>>1]|0)==1:0)?(i[q+50>>0]|0)!=0:0)Bh(M,77,G,r,0)|0;p=q+32|0;g=0;do{s=hr(a,k[(k[p>>2]|0)+(g<<2)>>2]|0)|0;Bh(M,25,g,F,0)|0;Bh(M,47,w,g,J)|0;h=Bh(M,78,J,0,g+G|0)|0;Ch(M,h,s,-4);k[t+(g<<2)>>2]=h;h=k[z>>2]|0;if(h)i[h+(((k[A>>2]|0)+-1|0)*20|0)+3>>0]=-128;g=g+1|0}while((g|0)!=(u|0));Bh(M,25,u,F,0)|0;Bh(M,16,0,r,0)|0;p=o+-1|0;h=k[A>>2]|0;if(h>>>0>p>>>0)k[(k[z>>2]|0)+(p*20|0)+8>>2]=h;k[(k[B>>2]|0)+88>>2]=h+-1;p=0;while(1){g=k[t+(p<<2)>>2]|0;if(h>>>0>g>>>0)k[(k[z>>2]|0)+(g*20|0)+8>>2]=h;k[(k[B>>2]|0)+88>>2]=h+-1;Bh(M,47,w,p,p+G|0)|0;p=p+1|0;if((p|0)==(u|0))break;h=k[A>>2]|0}h=k[B>>2]|0;g=~r;do if((r|0)<0){p=k[h+112>>2]|0;if(!p)break;k[p+(g<<2)>>2]=k[A>>2]}while(0);k[h+88>>2]=(k[A>>2]|0)+-1;rg(D,t)}Bh(M,1,1,E,J)|0;Ch(M,-1,28592,-5);p=k[z>>2]|0;if(p)i[p+(((k[A>>2]|0)+-1|0)*20|0)+3>>0]=2;Bh(M,9,w,o,0)|0;Bh(M,1,0,E,I)|0;Ch(M,-1,28640,-5);p=k[z>>2]|0;if(p)i[p+(((k[A>>2]|0)+-1|0)*20|0)+3>>0]=1;Ch(M,Bh(M,49,K,3,J)|0,28632,0);Bh(M,74,d,e,0)|0;Bh(M,75,d,J,e)|0;o=k[z>>2]|0;p=k[A>>2]|0;if(o)i[o+((p+-1|0)*20|0)+3>>0]=8;if(p>>>0>v>>>0)k[o+(v*20|0)+8>>2]=p;k[(k[B>>2]|0)+88>>2]=p+-1}while(0);q=k[q+20>>2]|0}while((q|0)!=0)}if(!(l<<24>>24==0|C^1)){Bh(M,50,f,I,0)|0;l=Bh(M,46,I,0,0)|0;Bh(M,28,0,L,0)|0;Ch(M,Bh(M,49,K,3,J)|0,28632,0);Bh(M,74,d,e,0)|0;Bh(M,75,d,J,e)|0;h=k[M+4>>2]|0;g=k[M+32>>2]|0;if(h)i[h+((g+-1|0)*20|0)+3>>0]=8;if(g>>>0>l>>>0)k[h+(l*20|0)+8>>2]=g;k[(k[M+24>>2]|0)+88>>2]=g+-1}}}return}function ov(a,b){a=a|0;b=b|0;a=Tq(a)|0;if(a)Bh(a,123,b,0,0)|0;return}function pv(a){a=a|0;var b=0,c=0,d=0;a:while(1){b=k[a+4>>2]|0;do if(b&4096)if(!(b&262144)){a=a+12|0;break}else{a=k[(k[a+20>>2]|0)+4>>2]|0;break}else{if(b&512){a=0;break a}switch(i[a>>0]|0){case -102:case -100:case -97:{d=11;break a}case 38:{d=10;break a}case 119:break;default:{d=14;break a}}a=k[(k[k[a+20>>2]>>2]|0)+4>>2]|0}while(0);a=k[a>>2]|0}if((d|0)==10)a=ar(k[a+8>>2]|0,0)|0;else if((d|0)==11){c=k[a+44>>2]|0;if(c){b=j[a+32>>1]|0;if(b<<16>>16<0)a=68;else a=i[(k[c+4>>2]|0)+((b<<16>>16)*24|0)+21>>0]|0}else d=14}if((d|0)==14)a=i[a+1>>0]|0;return a|0}function qv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;Bh(a,25,0,c,0)|0;d=Bh(a,108,b,0,0)|0;Bh(a,47,b,0,c)|0;b=k[a+4>>2]|0;c=k[a+32>>2]|0;if(b)i[b+((c+-1|0)*20|0)+3>>0]=-128;if(c>>>0>d>>>0)k[b+(d*20|0)+8>>2]=c;k[(k[a+24>>2]|0)+88>>2]=c+-1;return}function rv(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,m=0,n=0,o=0,p=0,q=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;E=r;r=r+32|0;if((r|0)>=(s|0))ka();z=E;C=a+68|0;D=k[C>>2]|0;k[C>>2]=D+1;C=Tq(a)|0;A=(c&4|0)!=0;B=b+4|0;a:do if((((((((((((k[B>>2]&2048|0)!=0?(h=k[b+20>>2]|0,!((k[a+64>>2]|0)!=0|(h|0)==0)):0)?(k[h+52>>2]|0)==0:0)?(j[h+6>>1]&5)==0:0)?(k[h+60>>2]|0)==0:0)?(k[h+36>>2]|0)==0:0)?(g=k[h+32>>2]|0,(k[g>>2]|0)==1):0)?(k[g+28>>2]|0)==0:0)?(t=k[g+24>>2]|0,(t|0)!=0):0)?(i[t+44>>0]&16)==0:0)?(f=k[h>>2]|0,(k[f>>2]|0)==1):0)?(n=k[k[f+4>>2]>>2]|0,(i[n>>0]|0)==-102):0){x=k[a>>2]|0;y=j[n+32>>1]|0;m=k[t+68>>2]|0;b:do if(m){g=k[x+20>>2]|0;if((g|0)>0){f=k[x+16>>2]|0;e=0;while(1){h=e+1|0;if((k[f+(e<<4)+12>>2]|0)==(m|0)){h=e;break b}if((h|0)<(g|0))e=h;else break}}else h=0}else h=-1e6;while(0);v=h<<16>>16;Fr(a,v);ls(a,v,k[t+32>>2]|0,0,k[t>>2]|0);w=y<<16>>16;if(y<<16>>16<0){e=Tq(a)|0;d=a+80|0;f=k[d>>2]|0;k[d>>2]=f+1;f=Bh(e,44,f,0,0)|0;Vq(a,D,v,t,54);e=k[C+32>>2]|0;if(e>>>0>f>>>0)k[(k[C+4>>2]|0)+(f*20|0)+8>>2]=e;k[(k[C+24>>2]|0)+88>>2]=e+-1;e=1;m=49;break}e=Tu(a,k[b+12>>2]|0,n)|0;u=t+4|0;m=i[(k[u>>2]|0)+(w*24|0)+21>>0]|0;h=(sv(b)|0)<<24>>24;if((h|0)==65)h=1;else if((h|0)==66)h=m<<24>>24==66&1;else h=m<<24>>24>66&1;m=k[t+8>>2]|0;if((m|0)!=0&(h|0)!=0){n=x+62|0;h=a+80|0;g=a+8|0;f=(d|0)==0;o=C+32|0;q=C+4|0;t=C+24|0;p=a+72|0;c:while(1){do if((j[k[m+4>>2]>>1]|0)==y<<16>>16?(bo(x,i[n>>0]|0,k[k[m+32>>2]>>2]|0,0)|0)==(e|0):0){if(!A)break c;if((j[m+46>>1]|0)!=1)break;if(i[m+50>>0]|0)break c}while(0);m=k[m+20>>2]|0;if(!m){m=38;break a}}B=Tq(a)|0;e=k[h>>2]|0;k[h>>2]=e+1;h=Bh(B,44,e,0,0)|0;Bh(C,54,D,k[m+40>>2]|0,v)|0;e=k[g>>2]|0;Ch(e,-1,ms(a,m)|0,-6);e=(l[k[m+28>>2]>>0]|0)+3|0;if(!f?(i[(k[u>>2]|0)+(w*24|0)+20>>0]|0)==0:0){B=(k[p>>2]|0)+1|0;k[p>>2]=B;k[d>>2]=B;qv(C,D,B)}f=k[o>>2]|0;if(f>>>0>h>>>0)k[(k[q>>2]|0)+(h*20|0)+8>>2]=f;k[(k[t>>2]|0)+88>>2]=f+-1;m=49}else m=38}else m=38;while(0);do if((m|0)==38){if((c&1|0)!=0?(k[B>>2]&2048|0)==0:0){c=b+12|0;y=k[c>>2]|0;k[c>>2]=0;k[z+0>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[z+16>>2]=0;k[z+20>>2]=0;C=z+20|0;i[C>>0]=1;k[z>>2]=78;k[z+4>>2]=79;k[z+24>>2]=0;ws(z,b)|0;C=i[C>>0]|0;k[c>>2]=y;if(!(C<<24>>24)){e=5;m=49;break}if((k[k[b+20>>2]>>2]|0)<3){e=5;m=49;break}}g=a+424|0;h=k[g>>2]|0;if(A){k[g>>2]=0;if((j[(k[b+12>>2]|0)+32>>1]|0)<0){e=((k[B>>2]|0)>>>11&1)+1|0;f=0}else{e=2;f=0}}else if(!d){e=2;f=0}else{e=a+72|0;f=(k[e>>2]|0)+1|0;k[e>>2]=f;k[d>>2]=f;e=2}ju(a,b,f,(e|0)==1&1)|0;k[g>>2]=h}while(0);if((m|0)==49)k[b+28>>2]=D;r=E;return e|0}function sv(a){a=a|0;var b=0,c=0;b=pv(k[a+12>>2]|0)|0;c=k[a+16>>2]|0;do if(!c)if(!(k[a+4>>2]&2048))return (b<<24>>24==0?65:b)|0;else{b=Gu(k[k[(k[k[a+20>>2]>>2]|0)+4>>2]>>2]|0,b)|0;break}else b=Gu(c,b)|0;while(0);return b|0}function tv(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,l=0,m=0,n=0,o=0,p=0,q=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,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+16|0;if((r|0)>=(s|0))ka();W=Z;U=k[a>>2]|0;X=f+28|0;k[X>>2]=-1;T=f+44|0;k[T>>2]=0;a:do if((b|0)!=0?(j[e+28>>1]&20)==0:0){o=k[U+20>>2]|0;if((o|0)>0){m=k[U+16>>2]|0;n=0;while(1){if(!(id(k[m+(n<<4)>>2]|0,b)|0))break;n=n+1|0;if((n|0)>=(o|0)){S=b;b=0;break a}}S=b;b=k[m+(n<<4)+12>>2]|0}else{S=b;b=0}}else{S=0;b=0}while(0);Q=(S|0)==0;N=Q&(c|0)!=0;h=a+412|0;I=a+436|0;J=f+1|0;Y=f+32|0;K=a+428|0;M=a+432|0;R=(c|0)==0;P=f+4|0;g=e;p=0;l=0;o=0;n=0;b:while(1){H=(g|0)!=0;m=g+4|0;G=g+8|0;q=0;t=p;while(1){p=(q|0)==0;if(!(H&p)){V=82;break b}q=k[m>>2]|0;if(q){F=k[q>>2]|0;if((F|0)>0){p=0;E=0;D=q+8|0;while(1){C=k[D+16>>2]|0;u=k[D+20>>2]|0;if((u|0)!=0?(j[u+6>>1]&512)!=0:0){u=k[u>>2]|0;A=k[u>>2]|0;if((A|0)>0){B=k[u+4>>2]|0;u=0;w=0;do{if(Av(k[B+(w*20|0)+8>>2]|0,d,c,S)|0){j[Y>>1]=w;p=p+1|0;t=2;u=1;n=D}w=w+1|0}while((w|0)<(A|0))}else u=0;if(!((u|0)!=0|R)){v=t;V=21}}else{v=t;V=21}c:do if((V|0)==21){V=0;if(!Q?(k[C+68>>2]|0)!=(b|0):0){t=v;break}if(!R){u=k[D+12>>2]|0;if(!u)u=k[C>>2]|0;if(id(u,c)|0){t=v;break}}t=v+1|0;n=(v|0)==0?D:n;u=j[C+38>>1]|0;if(u<<16>>16>0){q=(p|0)==1;x=D+36|0;y=D+48|0;A=0;B=k[C+4>>2]|0;d:while(1){e:do if(!(id(k[B>>2]|0,d)|0)){if(!q){n=A;break d}if(!(i[x>>0]&4)){w=k[y>>2]|0;if(!w){n=A;break d}z=k[w+4>>2]|0;if((z|0)<=0){n=A;break d}w=k[w>>2]|0;v=0;while(1){if(!(id(k[w+(v<<3)>>2]|0,d)|0))break e;v=v+1|0;if((v|0)>=(z|0)){n=A;break d}}}}while(0);A=A+1|0;if((A|0)>=(u<<16>>16|0))break c;else B=B+24|0}j[Y>>1]=(n|0)==(j[C+36>>1]|0)?-1:n&65535;p=p+1|0;n=D}}while(0);E=E+1|0;if((E|0)>=(F|0))break;else D=D+72|0}}else p=0;if(!n)B=0;else{k[X>>2]=k[n+40>>2];q=k[n+16>>2]|0;k[T>>2]=q;if(i[n+36>>0]&8)k[P>>2]=k[P>>2]|1048576;B=n;b=k[q+68>>2]|0}}else{p=0;B=n}do if(N&(t|0)==0)if(k[h>>2]|0){q=i[I>>0]|0;if(q<<24>>24!=109)if(id(27560,c)|0)if(q<<24>>24==108){v=p;t=0;w=l;break}else V=49;else w=1;else V=49;if((V|0)==49){V=0;if(!(id(27568,c)|0))w=0;else{v=p;t=0;w=l;break}}k[X>>2]=w;v=k[h>>2]|0;if(v){b=k[v+68>>2]|0;u=j[v+38>>1]|0;f:do if(u<<16>>16>0){q=0;t=k[v+4>>2]|0;while(1){if(!(id(k[t>>2]|0,d)|0))break;q=q+1|0;if((q|0)<(u<<16>>16|0))t=t+24|0;else break f}q=(q|0)==(j[v+36>>1]|0)?-1:q}else q=0;while(0);n=u<<16>>16;if((q|0)>=(n|0)?(ei(d)|0)!=0:0)t=(i[v+44>>0]&32)==0?-1:q;else t=q;if((t|0)<(n|0)){p=p+1|0;do if((t|0)>=0){q=(t|0)>31?-1:1<>2]=k[K>>2]|q;break}else{k[M>>2]=k[M>>2]|q;break}}else i[J>>0]=68;while(0);j[Y>>1]=t;k[T>>2]=v;t=1;l=1;V=66}else{t=1;V=66}}else{v=p;t=0;w=l}}else{v=p;t=0;w=l}else V=66;while(0);if((V|0)==66){V=0;if((p|0)==0&(t|0)==1&(B|0)!=0)if((ei(d)|0)!=0?(i[(k[B+16>>2]|0)+44>>0]&32)==0:0){j[Y>>1]=-1;i[J>>0]=68;q=1;n=B;continue}else{v=0;w=l}else{v=p;w=l}}p=k[G>>2]|0;u=(v|0)==0;if((p|0)!=0&R&u?(O=k[p>>2]|0,(O|0)>0):0){l=k[p+4>>2]|0;n=0;do{q=k[l+(n*20|0)+4>>2]|0;if((q|0)!=0?(id(q,d)|0)==0:0){V=75;break b}n=n+1|0}while((n|0)<(O|0))}if(u){q=t;l=w;n=B;break}else{q=v;l=w;n=B}}g=k[g+16>>2]|0;p=q;o=o+1|0}do if((V|0)==75){if((j[g+28>>1]&1)==0?(k[(k[l+(n*20|0)>>2]|0)+4>>2]&2|0)!=0:0){k[W>>2]=q;yh(a,27576,W);e=2;break}Dv(a,p,n,f,10360,o);if((i[f>>0]|0)==24)V=115;else V=96}else if((V|0)==82){if(p&R?(k[P>>2]&64|0)!=0:0){i[f>>0]=97;k[T>>2]=0;e=1;break}q=(q|0)==1;if(!q){p=p?27608:27624;do if(Q)if(R){k[W>>2]=p;k[W+4>>2]=d;yh(a,27680,W);break}else{k[W>>2]=p;k[W+4>>2]=c;k[W+8>>2]=d;yh(a,27664,W);break}else{k[W>>2]=p;k[W+4>>2]=S;k[W+8>>2]=c;k[W+12>>2]=d;yh(a,27648,W)}while(0);i[a+17>>0]=1;E=e+24|0;k[E>>2]=(k[E>>2]|0)+1}o=j[Y>>1]|0;if(o<<16>>16>-1&(n|0)!=0){B=o<<16>>16>63;C=nw(1,0,o<<16>>16|0)|0;E=n+56|0;A=E;D=k[A+4>>2]|(B?-2147483648:L);k[E>>2]=k[A>>2]|(B?0:C);k[E+4>>2]=D}E=f+12|0;Lk(U,k[E>>2]|0);k[E>>2]=0;E=f+16|0;Lk(U,k[E>>2]|0);k[E>>2]=0;i[f>>0]=(l|0)!=0?62:-102;if(q)V=96;else e=2}while(0);g:do if((V|0)==96){p=k[m>>2]|0;l=k[a>>2]|0;if(!((k[l+284>>2]|0)==0|(b|0)==0)){o=k[l+20>>2]|0;if((o|0)>0){m=k[l+16>>2]|0;n=0;while(1){l=n+1|0;if((k[m+(n<<4)+12>>2]|0)==(b|0)){l=n;break}if((l|0)<(o|0))n=l;else break}if((l|0)<0){V=115;break}else b=l}else b=0;if((i[f>>0]|0)!=62){m=k[p>>2]|0;if((m|0)<=0){V=115;break}h=k[X>>2]|0;l=0;while(1){if((h|0)==(k[p+(l*72|0)+48>>2]|0))break;l=l+1|0;if((l|0)>=(m|0)){V=115;break g}}h=p+(l*72|0)+24|0}m=k[h>>2]|0;h=j[Y>>1]|0;l=h<<16>>16;if(m){if(h<<16>>16<=-1){h=j[m+36>>1]|0;if(h<<16>>16>-1)h=k[(k[m+4>>2]|0)+((h<<16>>16)*24|0)>>2]|0;else h=12944}else h=k[(k[m+4>>2]|0)+(l*24|0)>>2]|0;if((jv(a,k[m>>2]|0,h,b)|0)==2){i[f>>0]=101;V=115}else V=115}else V=115}else V=115}while(0);if((V|0)==115){E=e+20|0;k[E>>2]=(k[E>>2]|0)+1;if((g|0)==(e|0))e=1;else{do{e=k[e+16>>2]|0;E=e+20|0;k[E>>2]=(k[E>>2]|0)+1}while((e|0)!=(g|0));e=1}}r=Z;return e|0}function uv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=i[b>>0]|0;a:do if(c<<24>>24==-100|c<<24>>24==-102){c=k[a+24>>2]|0;d=k[c>>2]|0;b:do if((d|0)!=0?(e=k[d>>2]|0,(e|0)>0):0){a=k[b+28>>2]|0;b=0;while(1){if((a|0)==(k[d+(b*72|0)+48>>2]|0))break;b=b+1|0;if((b|0)>=(e|0))break b}a=c+4|0;k[a>>2]=(k[a>>2]|0)+1;break a}while(0);a=c+8|0;k[a>>2]=(k[a>>2]|0)+1}while(0);return 0}function vv(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,t=0,u=0,v=0,w=0,x=0;w=r;r=r+16|0;if((r|0)>=(s|0))ka();v=w;o=w+12|0;a:do if(!c)e=0;else{t=k[k[b>>2]>>2]|0;u=k[a>>2]|0;b:do if((k[c>>2]|0)>0){e=0;p=k[c+4>>2]|0;c:while(1){m=k[p>>2]|0;d:do if(!m)f=0;else{f=m;while(1){g=k[f+4>>2]|0;if(!(g&4096))break d;if(!(g&262144))f=f+12|0;else f=k[(k[f+20>>2]|0)+4>>2]|0;f=k[f>>2]|0;if(!f){f=0;break}}}while(0);if((i[d>>0]|0)!=71?(n=wv(k[b>>2]|0,f)|0,k[o>>2]=n,(n|0)>0):0)j[p+16>>1]=n;else q=13;do if((q|0)==13){q=0;if(Rs(f,o)|0){f=k[o>>2]|0;if((f+-1|0)>>>0>65534)break c;j[p+16>>1]=f;break}h=p+16|0;j[h>>1]=0;if(qs(a,m)|0){e=1;break a}g=k[b>>2]|0;l=k[g>>2]|0;if((l|0)>0){g=k[g+4>>2]|0;f=0;do{x=f;f=f+1|0;if(!(Hu(m,k[g+(x*20|0)>>2]|0,-1)|0))j[h>>1]=f}while((f|0)<(l|0))}}while(0);e=e+1|0;if((e|0)>=(k[c>>2]|0))break b;else p=p+20|0}k[v>>2]=e+1;k[v+4>>2]=d;k[v+8>>2]=t;yh(u,27064,v);e=1;break a}while(0);e=Bu(u,b,c,d)|0}while(0);r=w;return e|0}function wv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;a:do if((i[b>>0]|0)==27?(d=k[b+8>>2]|0,e=k[a>>2]|0,(e|0)>0):0){a=k[a+4>>2]|0;b=0;while(1){c=k[a+(b*20|0)+4>>2]|0;if((c|0)!=0?(id(c,d)|0)==0:0)break;b=b+1|0;if((b|0)>=(e|0)){b=0;break a}}b=b+1|0}else b=0;while(0);return b|0}function xv(a,b){a=a|0;b=b|0;var c=0,d=0;c=j[a+38>>1]|0;a:do if(c<<16>>16>0){d=k[a+4>>2]|0;c=c<<16>>16;a=0;while(1){if(!(id(k[d+(a*24|0)>>2]|0,b)|0))break a;a=a+1|0;if((a|0)>=(c|0)){a=-1;break}}}else a=-1;while(0);return a|0}function yv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=k[a>>2]|0;c=Wv(i,b,c,d)|0;d=Wv(i,b,e,f)|0;f=cr(a,79,c,d,0)|0;if((f|0)!=0&(g|0)!=0){c=f+4|0;k[c>>2]=k[c>>2]|1;j[f+36>>1]=k[d+28>>2]}f=xs(i,k[h>>2]|0,f)|0;k[h>>2]=f;return}function zv(a,b){a=a|0;b=b|0;var c=0,d=0;if(a){c=b&65535;do{d=a+4|0;k[d>>2]=k[d>>2]|1;j[a+36>>1]=c;zv(k[a+12>>2]|0,b);a=k[a+16>>2]|0}while((a|0)!=0)}return}function Av(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;e=0;while(1){f=i[a+e>>0]|0;if(f<<24>>24==46|f<<24>>24==0)break;e=e+1|0}if(d)if((Kc(a,d,e)|0)==0?(i[d+e>>0]|0)==0:0)g=7;else e=0;else g=7;do if((g|0)==7){d=e+1|0;g=a+d|0;f=0;while(1){h=i[a+(f+d)>>0]|0;if(h<<24>>24==46|h<<24>>24==0)break;f=f+1|0}if(c){if(Kc(g,c,f)|0){e=0;break}if(i[c+f>>0]|0){e=0;break}}if((b|0)!=0?(id(a+(e+2+f)|0,b)|0)!=0:0){e=0;break}e=1}while(0);return e|0}function Bv(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if((a|0)!=0?(d=k[a+4>>2]|0,(d|0)>0):0){c=k[a>>2]|0;a=0;while(1){if(!(id(k[c+(a<<3)>>2]|0,b)|0))break a;a=a+1|0;if((a|0)>=(d|0)){a=-1;break}}}else a=-1;while(0);return a|0}function Cv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();e=f;k[e>>2]=c;if(!c)d=0;else{d=c;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;d=d-c&1073741823}k[e+4>>2]=d;d=Ar(a,b,e,0)|0;r=f;return d|0}function Dv(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,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+32|0;if((r|0)>=(s|0))ka();m=q;h=b+4|0;l=k[(k[h>>2]|0)+(c*20|0)>>2]|0;n=k[a>>2]|0;g=Rr(n,l,0,0)|0;do if(g){if((i[l>>0]|0)!=-102?(i[e>>0]|0)!=71:0){if((f|0)>0){k[m+0>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[m+16>>2]=0;k[m+20>>2]=0;k[m>>2]=88;k[m+24>>2]=f;ws(m,g)|0}g=cr(a,24,g,0,0)|0;if(!g)break;b=g+4|0;k[b>>2]=k[b>>2]|4096;b=(k[h>>2]|0)+(c*20|0)+18|0;f=j[b>>1]|0;if(!(f<<16>>16)){c=a+456|0;f=(k[c>>2]|0)+1|0;k[c>>2]=f;f=f&65535;j[b>>1]=f}k[g+28>>2]=f&65535}if((i[d>>0]|0)==95)g=Cv(a,g,k[d+8>>2]|0)|0;b=d+4|0;k[b>>2]=k[b>>2]|32768;Lk(n,d);f=d+0|0;h=g+0|0;l=f+48|0;do{k[f>>2]=k[h>>2];f=f+4|0;h=h+4|0}while((f|0)<(l|0));if((k[b>>2]&1024|0)==0?(o=d+8|0,p=k[o>>2]|0,(p|0)!=0):0){a=ph(n,p)|0;k[o>>2]=a;k[b>>2]=k[b>>2]|65536}rg(n,g)}while(0);r=q;return}function Ev(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,l=0,n=0;n=a+12|0;d=k[n>>2]|0;h=a+16|0;f=k[h>>2]|0;l=a+20|0;do if((d|0)<(f|0))i=15;else{d=k[l>>2]|0;g=k[k[k[a>>2]>>2]>>2]|0;e=rh(g,f*96|0,0)|0;k[l>>2]=e;if(!e){if(c&1)Lk(g,b);k[l>>2]=d;d=0;break}pw(e|0,d|0,(k[n>>2]|0)*48|0)|0;if((d|0)!=(a+24|0))rg(g,d);e=k[l>>2]|0;do if(!g)e=qc[k[8744+48>>2]&127](e)|0;else{if((k[g+276>>2]|0)>>>0<=e>>>0?(k[g+280>>2]|0)>>>0>e>>>0:0){e=m[g+248>>1]|0;break}e=qc[k[8744+48>>2]&127](e)|0}while(0);i=(e>>>0)/48|0;k[h>>2]=i;d=k[n>>2]|0;kw((k[l>>2]|0)+(d*48|0)|0,0,(i-d|0)*48|0)|0;d=k[n>>2]|0;i=15}while(0);if((i|0)==15){k[n>>2]=d+1;f=k[l>>2]|0;a:do if(!b){j[f+(d*48|0)+16>>1]=1;b=0}else{if(!(k[b+4>>2]&262144))e=1;else{e=k[b+28>>2]|0;e=((ks(e,((e|0)<0)<<31>>31)|0)&65535)+65266&65535}j[f+(d*48|0)+16>>1]=e;while(1){e=k[b+4>>2]|0;if(!(e&4096))break a;if(!(e&262144))b=b+12|0;else b=k[(k[b+20>>2]|0)+4>>2]|0;b=k[b>>2]|0;if(!b){b=0;break}}}while(0);k[f+(d*48|0)>>2]=b;j[f+(d*48|0)+20>>1]=c;k[f+(d*48|0)+24>>2]=a;k[f+(d*48|0)+4>>2]=-1}return d|0}function Fv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;a:do if(b)if((i[b>>0]|0)==-102){b=k[b+28>>2]|0;d=k[a>>2]|0;if((d|0)>0)c=0;else{d=0;c=0;break}while(1){if((k[a+(c<<2)+4>>2]|0)==(b|0))break;c=c+1|0;if((c|0)>=(d|0)){d=0;c=0;break a}}c=nw(1,0,c|0)|0;d=L;break}else{e=Fv(a,k[b+16>>2]|0)|0;c=L;f=Fv(a,k[b+12>>2]|0)|0;c=L|c;d=b+20|0;if(!(k[b+4>>2]&2048)){b=Qu(a,k[d>>2]|0)|0;d=L}else{b=Gv(a,k[d>>2]|0)|0;d=L}d=c|d;c=f|e|b;break}else{d=0;c=0}while(0);L=d;return c|0}function Gv(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;if(!b){b=0;c=0}else{f=b;c=0;b=0;do{e=k[f+32>>2]|0;l=Qu(a,k[f>>2]|0)|0;b=L|b;j=Qu(a,k[f+40>>2]|0)|0;b=b|L;i=Qu(a,k[f+48>>2]|0)|0;b=b|L;h=Fv(a,k[f+36>>2]|0)|0;b=b|L;d=Fv(a,k[f+44>>2]|0)|0;c=l|c|j|i|h|d;b=b|L;if((e|0)!=0?(g=k[e>>2]|0,(g|0)>0):0){d=0;do{i=Gv(a,k[e+(d*72|0)+28>>2]|0)|0;b=L|b;j=Fv(a,k[e+(d*72|0)+52>>2]|0)|0;c=i|c|j;b=b|L;d=d+1|0}while((d|0)<(g|0))}f=k[f+52>>2]|0}while((f|0)!=0)}L=b;return c|0}function Hv(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;l=j[b+18>>1]|0;h=j[c+18>>1]|0;e=h|l;if(((!((l&62)==0|(h&62)==0)?(d=e&65535,(d&26|0)==(d|0)|(d&38|0)==(d|0)):0)?(g=k[b>>2]|0,f=k[c>>2]|0,(Hu(k[g+12>>2]|0,k[f+12>>2]|0,-1)|0)==0):0)?(Hu(k[g+16>>2]|0,k[f+16>>2]|0,-1)|0)==0:0){if(d+65535&d)e=(d&24|0)==0?32:8;f=Rr(k[k[k[a>>2]>>2]>>2]|0,g,0,0)|0;if(f){e=e&65535;d=79;while(1)if((e|0)==(2<>0]=d;Ju(a,Ev(a,f,3)|0)}}return}function Iv(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,l=0,n=0;k[a>>2]=b;k[a+4>>2]=b;a:do if((f|0)!=0&(d|0)>-1){i[a+12>>0]=i[(k[(k[f+12>>2]|0)+4>>2]|0)+(d*24|0)+21>>0]|0;g=k[f+4>>2]|0;if((j[g>>1]|0)==(d|0))b=0;else{h=m[f+48>>1]|0;l=0;while(1){b=l+1|0;if((l|0)>(h|0)){b=0;break a}if((j[g+(b<<1)>>1]|0)==(d|0))break;else l=b}}k[a+8>>2]=k[(k[f+32>>2]|0)+(b<<2)>>2];n=8}else{i[a+12>>0]=0;k[a+8>>2]=0;n=8}while(0);if((n|0)==8){k[a+16>>2]=e;k[a+20>>2]=0;k[a+24>>2]=c;k[a+28>>2]=d;i[a+13>>0]=2;i[a+14>>0]=2;b=Jv(a)|0}return b|0} -function Yn(a,b,c,d,e,f,g,h,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;l=l|0;var n=0,o=0,p=0,q=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,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;aa=r;r=r+160|0;if((r|0)>=(s|0))ka();O=aa+16|0;J=aa+152|0;M=aa+48|0;I=aa+40|0;N=aa+36|0;K=aa+32|0;R=aa+8|0;Q=aa;W=aa+28|0;_=aa+24|0;k[_>>2]=0;do if(!(i[a+46>>0]|0)){$=a+43|0;if((i[$>>0]|0)==0?(n=k[a+4>>2]|0,n=uc[k[(k[n>>2]|0)+56>>2]&31](n,1,1,10)|0,(n|0)!=0):0)break;Z=a+45|0;i[Z>>0]=1;a:do if(!b){t=0;X=11}else{p=a+4|0;n=(c|0)!=0;while(1){if(i[$>>0]|0)break;t=k[p>>2]|0;t=uc[k[(k[t>>2]|0)+56>>2]&31](t,0,1,10)|0;if(!(n&(t|0)==5)){X=9;break}if(!(qc[c&127](d)|0)){t=0;c=0;X=11;break a}}if((X|0)==9)if((t|0)==5){t=0;c=0;X=11;break}else if(t){Y=b;break}i[a+44>>0]=1;t=b;X=11}while(0);if((X|0)==11){Y=t;t=sq(a,_)|0}do if(!t){V=a+68|0;t=j[a+66>>1]|0;if((k[V>>2]|0)!=0?(U=t&65535,(U<<16&65536|U&65024|0)!=(f|0)):0){k[O>>2]=51863;k[O+4>>2]=10788;gd(11,13600,O);o=11;break}S=t&65535;S=S<<16&65536|S&65024;U=a+32|0;T=(k[k[U>>2]>>2]|0)+96|0;w=k[V>>2]|0;b:do if((k[T>>2]|0)>>>0>>0){G=(w+33|0)>>>12;H=G+1|0;f=w<<1;v=f+28+(G*20|0)|0;n=Yc(v)|0;c:do if(!n){t=7;n=0}else{kw(n|0,0,v|0)|0;v=n+4|0;k[v>>2]=H;f=Yc(w>>>0>4096?8192:f)|0;do if(f){F=n+8|0;u=0;while(1){t=Uo(a,u,I,K,N)|0;if(t){X=21;break}E=(k[K>>2]|0)+4|0;k[K>>2]=E;if((u|0)==(G|0)){D=k[N>>2]|0;t=D;D=w-D|0}else{t=k[N>>2]|0;D=(k[I>>2]|0)-E>>2}p=F+((k[v>>2]|0)*20|0)|0;C=p+(t<<1)|0;B=t+1|0;k[N>>2]=B;if((D|0)>0){y=0;do{j[p+(y+t<<1)>>1]=y;y=y+1|0}while((y|0)!=(D|0));k[O>>2]=0;k[J>>2]=0;z=M+0|0;y=z+104|0;do{k[z>>2]=0;z=z+4|0}while((z|0)<(y|0));A=0;do{k[O>>2]=1;z=p+(A+t<<1)|0;k[J>>2]=z;if(!(A&1)){x=1;y=0}else{y=0;do{tq(E,k[M+(y<<3)+4>>2]|0,k[M+(y<<3)>>2]|0,J,O,f);y=y+1|0}while((1<>2]|0;z=k[J>>2]|0}k[M+(y<<3)+4>>2]=z;k[M+(y<<3)>>2]=x;A=A+1|0}while((A|0)!=(D|0));y=y+1|0;if((y|0)<13)X=34}else{k[O>>2]=0;k[J>>2]=0;z=M+0|0;y=z+104|0;do{k[z>>2]=0;z=z+4|0}while((z|0)<(y|0));y=1;X=34}if((X|0)==34){while(1){X=0;if(1<>2]|0,k[M+(y<<3)>>2]|0,J,O,f);y=y+1|0;if((y|0)==13)break;else X=34}x=k[O>>2]|0}k[F+(u*20|0)+16>>2]=B;k[F+(u*20|0)+12>>2]=x;k[F+(u*20|0)+4>>2]=C;k[F+(u*20|0)+8>>2]=E;u=u+1|0;if((u|0)>=(H|0)){X=39;break}}if((X|0)==21){$c(f);break}else if((X|0)==39){$c(f);t=0;break c}}else{$c(0);t=7}while(0);$c(n)}while(0);if(!t){O=a+72|0;N=k[O>>2]|0;M=a+4|0;x=1;w=k[V>>2]|0;t=0;while(1){f=T+(x<<2)+4|0;p=k[f>>2]|0;d:do if(w>>>0>p>>>0){v=x+3|0;u=(c|0)!=0;while(1){if(i[$>>0]|0)break;t=k[M>>2]|0;t=uc[k[(k[t>>2]|0)+56>>2]&31](t,v,1,10)|0;if(!(u&(t|0)==5)){X=49;break}if(!(qc[c&127](d)|0)){c=0;t=5;break d}}if((X|0)==49){X=0;if((t|0)==5){c=0;t=5;break}else if(t){o=t;X=100;break b}}k[f>>2]=(x|0)==1?w:-1;if(!(i[$>>0]|0)){p=k[M>>2]|0;uc[k[(k[p>>2]|0)+56>>2]&31](p,v,1,9)|0;p=w;t=0}else{p=w;t=0}}else p=w;while(0);x=x+1|0;if((x|0)>=5){H=p;break}else w=p}e:do if((k[T>>2]|0)>>>0>>0){t=(c|0)!=0;while(1){if(i[$>>0]|0)break;p=k[M>>2]|0;p=uc[k[(k[p>>2]|0)+56>>2]&31](p,3,1,10)|0;if(!(t&(p|0)==5)){q=p;X=58;break}if(!(qc[c&127](d)|0)){q=5;break e}}if((X|0)==58?(q|0)!=0:0)break;E=k[T>>2]|0;F=(e|0)!=0;if(F?(P=k[a+8>>2]|0,P=wc[k[(k[P>>2]|0)+20>>2]&127](P,e)|0,(P|0)!=0):0)q=P;else X=61;f:do if((X|0)==61){P=xw(N|0,0,S|0,0)|0;q=Q;k[q>>2]=P;k[q+4>>2]=L;q=k[M>>2]|0;q=wc[k[(k[q>>2]|0)+24>>2]&127](q,R)|0;if(!q){P=R;J=k[P+4>>2]|0;R=Q;K=k[R+4>>2]|0;if((J|0)<(K|0)|((J|0)==(K|0)?(k[P>>2]|0)>>>0<(k[R>>2]|0)>>>0:0)){R=k[M>>2]|0;fc[k[(k[R>>2]|0)+40>>2]&63](R,5,Q)|0}B=n+4|0;C=S|24;D=a+8|0;t=k[B>>2]|0;g:do if((t|0)>0){q=0;while(1){A=k[n>>2]|0;z=-1;h:while(1){i:while(1){t=t+-1|0;x=n+(t*20|0)+8|0;f=k[x>>2]|0;p=k[n+(t*20|0)+20>>2]|0;j:do if((f|0)<(p|0)){w=k[n+(t*20|0)+12>>2]|0;y=k[n+(t*20|0)+16>>2]|0;while(1){u=m[w+(f<<1)>>1]|0;v=k[y+(u<<2)>>2]|0;if(v>>>0>A>>>0)break;f=f+1|0;k[x>>2]=f;if((f|0)>=(p|0))break j}if(v>>>0>>0)break i}while(0);if((t|0)<=0){f=q;t=z;break h}}q=(k[n+(t*20|0)+24>>2]|0)+u|0;if((t|0)>0)z=v;else{f=q;t=v;break}}k[n>>2]=t;if((t|0)==-1)break g;if(!(f>>>0<=E>>>0|f>>>0>H>>>0|t>>>0>N>>>0)){q=xw(f+-1|0,0,C|0,0)|0;q=ow(q|0,L|0,56,0)|0;R=k[D>>2]|0;q=yc[k[(k[R>>2]|0)+8>>2]&31](R,g,S,q,L)|0;if(q)break f;q=xw(t+-1|0,0,S|0,0)|0;R=k[M>>2]|0;q=yc[k[(k[R>>2]|0)+12>>2]&31](R,g,S,q,L)|0;if(q)break f}t=k[B>>2]|0;if((t|0)<=0){X=66;break}else q=f}}else X=66;while(0);if((X|0)==66)k[n>>2]=-1;if((H|0)==(k[(k[k[U>>2]>>2]|0)+16>>2]|0)){q=xw(k[O>>2]|0,0,S|0,0)|0;X=k[M>>2]|0;q=fc[k[(k[X>>2]|0)+16>>2]&63](X,q,L)|0;if((q|0)==0&F){q=k[M>>2]|0;q=wc[k[(k[q>>2]|0)+20>>2]&127](q,e)|0}if(q)break}k[T>>2]=H;q=0}}while(0);if(!(i[$>>0]|0)){X=k[M>>2]|0;uc[k[(k[X>>2]|0)+56>>2]&31](X,3,1,9)|0}}else q=t;while(0);q=(q|0)==5?0:q;X=88}else o=t}else{n=0;q=0;X=88}while(0);k:do if((X|0)==88)if((q|0)==0&(Y|0)!=0)if((k[T>>2]|0)>>>0>=(k[V>>2]|0)>>>0)if((Y|0)>1){hd(4,W);t=a+4|0;p=(c|0)!=0;while(1){if(i[$>>0]|0)break;q=k[t>>2]|0;q=uc[k[(k[q>>2]|0)+56>>2]&31](q,4,4,10)|0;if(!(p&(q|0)==5)){o=q;X=95;break}if(!(qc[c&127](d)|0)){o=5;X=100;break k}}if((X|0)==95?(o|0)!=0:0){X=100;break}if((Y|0)==3){ap(a,k[W>>2]|0);o=k[a+8>>2]|0;o=fc[k[(k[o>>2]|0)+16>>2]&63](o,0,0)|0}else o=0;if(!(i[$>>0]|0)){X=k[t>>2]|0;uc[k[(k[X>>2]|0)+56>>2]&31](X,4,4,9)|0;X=100}else X=100}else{o=0;X=100}else{o=5;X=100}else{o=q;X=100}while(0);if((X|0)==100)$c(n);if((o|0)==0|(o|0)==5){if(h)k[h>>2]=k[V>>2];if(l)k[l>>2]=k[(k[k[U>>2]>>2]|0)+96>>2]}}else o=t;while(0);if(k[_>>2]|0){z=a+52|0;y=z+48|0;do{k[z>>2]=0;z=z+4|0}while((z|0)<(y|0))}n=a+44|0;if(i[n>>0]|0){if(!(i[$>>0]|0)){_=k[a+4>>2]|0;uc[k[(k[_>>2]|0)+56>>2]&31](_,0,1,9)|0}i[n>>0]=0;i[a+47>>0]=0}if(!(i[$>>0]|0)){$=k[a+4>>2]|0;uc[k[(k[$>>2]|0)+56>>2]&31]($,1,1,9)|0}i[Z>>0]=0;n=(o|0)!=0|(Y|0)==(b|0)?o:5}else n=8;while(0);r=aa;return n|0}function Zn(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=(b|0)<(d|0)?b:d;f=cw(c,e,g)|0;a:do if(!f){b:do if(a){f=b-g|0;while(1){if((f|0)<=0)break;f=f+-1|0;if((i[c+(f+g)>>0]|0)!=32)break b}if(!f){f=d-g|0;while(1){if((f|0)<=0)break;f=f+-1|0;if((i[e+(f+g)>>0]|0)!=32)break b}if(!f){f=0;break a}}}while(0);f=b-d|0}while(0);return f|0}function _n(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=Kc(c,e,(b|0)<(d|0)?b:d)|0;return ((a|0)==0?b-d|0:a)|0}function $n(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,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+16|0;if((r|0)>=(s|0))ka();w=y;n=k[c>>2]|0;a:do if(b){l=b;while(1)if(!(i[l>>0]|0))break;else l=l+1|0;m=l-b&1073741823;if((k[2189]|n&64|0)!=0&m>>>0>4?(cw(b,14984,5)|0)==0:0){l=m+2|0;j=n|64;if(m){n=0;do{l=((i[b+n>>0]|0)==38&1)+l|0;n=n+1|0}while((n|0)<(m|0))}h=Yc(l)|0;if(h){do if((i[b+5>>0]|0)==47?(i[b+6>>0]|0)==47:0){l=7;while(1){q=i[b+l>>0]|0;if(q<<24>>24==0|q<<24>>24==47)break;l=l+1|0}if((l|0)==7){l=0;n=7;g=0;break}else if((l|0)==16){g=b+7|0;if(!(cw(14992,g,9)|0)){l=0;n=16;g=0;break}}else g=b+7|0;k[w>>2]=l+-7;k[w+4>>2]=g;g=dd(15008,w)|0;k[f>>2]=g;g=1;x=74;break a}else{l=0;n=5;g=0}while(0);b:while(1){u=h+(g+-1)|0;c:while(1){d:while(1){m=i[b+n>>0]|0;if(m<<24>>24==35|m<<24>>24==0)break b;o=n+1|0;if((m<<24>>24==37?(v=i[b+o>>0]|0,(i[10368+(v&255)>>0]&8)!=0):0)?(t=i[b+(n+2)>>0]|0,(i[10368+(t&255)>>0]&8)!=0):0){m=v;o=t;break}if(!l){n=o;x=38;break c}else if((l|0)==2){n=o;x=39;break c}else if((l|0)!=1){n=o;break c}if(!(m<<24>>24==38|m<<24>>24==61)){l=1;n=o;break c}if(!(i[u>>0]|0))n=o;else{n=o;x=36;break c}while(1){q=i[b+n>>0]|0;if(q<<24>>24==35|q<<24>>24==0)continue d;if((i[b+(n+-1)>>0]|0)==38)continue d;else n=n+1|0}}m=m<<24>>24;n=n+3|0;q=o<<24>>24;m=(0-(q>>>6&1)&9)+q&15|(0-(m>>>6&1)&9)+m<<4&240;if(m){x=30;break}o=(l|0)==0;while(1){m=i[b+n>>0]|0;if(m<<24>>24==35|m<<24>>24==0)continue c;if(o&m<<24>>24==63){l=0;continue c}if((l|0)==1){if(m<<24>>24==38|m<<24>>24==61){l=1;continue c}}else if((l|0)==2?m<<24>>24==38:0){l=2;continue c}n=n+1|0}}if((x|0)==30){x=0;m=m&255}else if((x|0)==36){x=0;if(m<<24>>24==38){i[h+g>>0]=0;m=0;l=1;g=g+1|0}else{m=0;l=2}}else if((x|0)==38){x=0;if(m<<24>>24==63)x=40;else l=0}else if((x|0)==39){x=0;if(m<<24>>24==38)x=40;else l=2}if((x|0)==40){x=0;m=0;l=1}i[h+g>>0]=m;g=g+1|0}if((l|0)==1){i[h+g>>0]=0;g=g+1|0}i[h+g>>0]=0;i[h+(g+1)>>0]=0;g=h;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;g=(g-h&1073741823)+1|0;l=i[h+g>>0]|0;if(l<<24>>24){v=h+g|0;e:while(1){m=v;while(1){g=m+1|0;if(!(l<<24>>24)){l=m;break}l=i[g>>0]|0;m=g}u=l-v&1073741823;l=v+(u+1)|0;m=l;while(1)if(!(i[m>>0]|0))break;else m=m+1|0;t=m-l&1073741823;if((u|0)==3){g=(cw(15040,v,3)|0)==0;g=g?l:a}else if((u|0)==5)if(!(cw(15048,v,5)|0)){b=15056;p=393216;q=-393217;g=15048;x=58}else g=a;else if((u|0)==4?(cw(15096,v,4)|0)==0:0){b=15104;p=j&135;q=-136;g=15176;x=58}else g=a;if((x|0)==58){x=0;n=k[b>>2]|0;if(!n){x=65;break}else m=0;while(1){o=n;while(1)if(!(i[o>>0]|0))break;else o=o+1|0;if((t|0)==(o-n&1073741823|0)?(cw(l,n,t)|0)==0:0){n=m;break}m=m+1|0;n=k[b+(m<<3)>>2]|0;if(!n){x=65;break e}}n=k[b+(n<<3)+4>>2]|0;if(!n){x=65;break}if((n&-129|0)>(p|0)){x=67;break}j=n|q&j;g=a}v=v+(u+2+t)|0;l=i[v>>0]|0;if(!(l<<24>>24)){x=72;break a}else a=g}if((x|0)==65){k[w>>2]=g;k[w+4>>2]=l;g=dd(15184,w)|0;k[f>>2]=g;g=1;x=74;break}else if((x|0)==67){k[w>>2]=g;k[w+4>>2]=l;g=dd(15208,w)|0;k[f>>2]=g;g=3;x=74;break}}else{g=a;x=72}}else g=7}else{j=m;x=70}}else{j=0;x=70}while(0);if((x|0)==70){h=Yc(j+2|0)|0;if(!h)g=7;else{pw(h|0,b|0,j|0)|0;i[h+j>>0]=0;i[h+(j+1)>>0]=0;j=n&-65;g=a;x=72}}if((x|0)==72){q=Pc(g)|0;k[d>>2]=q;if(!q){k[w>>2]=g;g=dd(15232,w)|0;k[f>>2]=g;g=1;x=74}else{g=0;x=75}}if((x|0)==74){$c(h);h=0;x=75}if((x|0)==75){k[c>>2]=j;k[e>>2]=h}r=y;return g|0}function ao(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;do if(!b){b=vg(84,0)|0;if(!b)c=8;else{a=b+0|0;e=a+84|0;do{i[a>>0]=0;a=a+1|0}while((a|0)<(e|0));c=9}}else{d=k[b+4>>2]|0;k[d+4>>2]=k[b>>2];c=d+48|0;b=k[c>>2]|0;if(!b){b=vg(84,0)|0;if(!b){k[c>>2]=0;k[d+52>>2]=22;c=8;break}else{a=b+0|0;e=a+84|0;do{i[a>>0]=0;a=a+1|0}while((a|0)<(e|0));k[c>>2]=b;k[d+52>>2]=22;c=9;break}}else c=9}while(0);if((c|0)==8){i[a+65>>0]=1;b=0}else if((c|0)==9)if(!(i[b+76>>0]|0)){c=b+77|0;a=b+8|0;e=a+64|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(e|0));i[c>>0]=1}return b|0}function bo(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;j=r;r=r+16|0;if((r|0)>=(s|0))ka();if(c){g=a+428|0;f=gn(g,c,j)|0;if(!f)e=0;else e=k[f+8>>2]|0;if((e|0)==0&(d|0)!=0){f=c;while(1)if(!(i[f>>0]|0))break;else f=f+1|0;f=f-c&1073741823;d=f+61|0;e=rh(a,d,0)|0;if(e){kw(e|0,0,d|0)|0;d=e+60|0;k[e>>2]=d;i[e+4>>0]=1;k[e+20>>2]=d;i[e+24>>0]=2;k[e+40>>2]=d;i[e+44>>0]=3;pw(d|0,c|0,f|0)|0;i[e+(f+60)>>0]=0;f=Nk(g,k[e>>2]|0,e)|0;if(!f)h=10;else{i[a+65>>0]=1;rg(a,f);e=0}}else e=0}else h=10}else{e=k[a+8>>2]|0;h=10}if((h|0)==10)if(!e)e=0;else e=e+(((b&255)+-1|0)*20|0)|0;r=j;return e|0}function co(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+64|0;if((r|0)>=(s|0))ka();y=A;f=A+48|0;o=A+24|0;v=A+8|0;g=(b|0)==1;t=g?13184:13208;k[f>>2]=t;k[f+4>>2]=13224;k[f+8>>2]=g?13064:12960;k[f+12>>2]=0;k[v>>2]=a;k[v+8>>2]=b;u=v+12|0;k[u>>2]=0;k[v+4>>2]=c;en(v,3,f,0)|0;f=k[u>>2]|0;a:do if(!f){w=a+16|0;f=di(a,t,k[(k[w>>2]|0)+(b<<4)>>2]|0)|0;if(f){q=f+44|0;i[q>>0]=l[q>>0]|1}e=k[w>>2]|0;x=e+(b<<4)+4|0;f=k[x>>2]|0;if(!f){if(!g){d=0;break}d=(k[e+28>>2]|0)+78|0;j[d>>1]=m[d>>1]|1;d=0;break}k[(k[f+4>>2]|0)+4>>2]=k[f>>2];do if(!(i[f+8>>0]|0)){f=Dg(f,0)|0;if((f|0)==516)d=16344;else if(!f){f=k[x>>2]|0;q=1;break}else z=10;if((z|0)==10){d=f&255;if(d>>>0>26|(d|0)==2)d=16328;else d=k[15488+(d<<2)>>2]|0}k[y>>2]=d;ih(c,a,10344,y);d=f;z=38;break a}else q=0;while(0);Bm(f,1,o);p=o+4|0;Bm(k[x>>2]|0,2,p);h=o+8|0;Bm(k[x>>2]|0,3,h);Bm(k[x>>2]|0,4,o+12|0);g=o+16|0;Bm(k[x>>2]|0,5,g);n=e+(b<<4)+12|0;f=k[n>>2]|0;k[f>>2]=k[o>>2];e=k[g>>2]|0;do if(e){if(!b){g=e&3;g=(g|0)==0?1:g&255;i[a+62>>0]=g;z=19;break}g=i[a+62>>0]|0;if((e|0)==(g&255|0))z=19;else{ih(c,a,13232,y);d=1}}else{g=(k[(k[w>>2]|0)+(b<<4)+12>>2]|0)+78|0;j[g>>1]=m[g>>1]|4;g=i[a+62>>0]|0;z=19}while(0);do if((z|0)==19){i[f+77>>0]=g;g=f+80|0;if(!(k[g>>2]|0)){f=k[h>>2]|0;if((f|0)<=-1)f=(f|0)==-2147483648?2147483647:0-f|0;f=(f|0)==0?2e3:f;k[g>>2]=f;uq(k[x>>2]|0,f);f=k[n>>2]|0}e=k[p>>2]|0;g=e&255;f=f+76|0;if(g<<24>>24){i[f>>0]=g;if((g&255)>4){ih(c,a,13304,y);d=1;break}}else i[f>>0]=1;if((b|0)==0&(e|0)>3){p=a+24|0;k[p>>2]=k[p>>2]&-32769}k[y>>2]=k[(k[w>>2]|0)+(b<<4)>>2];k[y+4>>2]=t;f=zh(a,13328,y)|0;t=a+284|0;p=k[t>>2]|0;k[t>>2]=0;e=Ve(a,f,22,v,0)|0;k[t>>2]=p;e=(e|0)==0?k[u>>2]|0:e;rg(a,f);f=(e|0)==0;if(f)fn(a,b)|0;if(!(i[a+65>>0]|0)){if(!f){d=e;z=34}}else{Jg(a);d=7;z=34}if((z|0)==34?(k[a+24>>2]&65536|0)==0:0)break;d=(k[(k[w>>2]|0)+(b<<4)+12>>2]|0)+78|0;j[d>>1]=m[d>>1]|1;d=0}while(0);if(!q)z=38;else{zn(k[x>>2]|0)|0;z=38}}else{d=f;z=38}while(0);if((z|0)==38)if((d|0)==7|(d|0)==3082)i[a+65>>0]=1;r=A;return d|0}function eo(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;m=r;r=r+80|0;if((r|0)>=(s|0))ka();j=m;k[12066]=k[2708];if(!(k[12067]|0)){c=Qb(48336)|0;k[12067]=c}if(!(k[12068]|0)){c=Qb(48352)|0;k[12068]=c}d=j+12|0;e=0;c=0;do{if((((c|0)!=0?(wc[k[47552+52>>2]&127](c,j)|0)==0:0)?(k[d>>2]&61440|0)==16384:0)?(wc[k[47552+28>>2]&127](c,7)|0)==0:0)break;c=k[48264+(e<<2)>>2]|0;e=e+1|0}while(e>>>0<7);h=(c|0)==0?28928:c;if(((lw(h|0)|0)+25|0)>>>0>>0){a=a+-18|0;do{k[j>>2]=h;fd(a,b,48248,j)|0;d=lw(b|0)|0;c=b+d|0;hd(15,c);g=b+(d+15)|0;f=0;e=d;while(1){i[c>>0]=i[48184+(((l[c>>0]|0)%62|0)&255)>>0]|0;f=f+1|0;e=e+1|0;if((f|0)==15)break;else c=b+e|0}i[g>>0]=0;i[b+(d+16)>>0]=0}while((wc[k[47552+28>>2]&127](b,0)|0)==0);c=0}else c=1;r=m;return c|0}function fo(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=r;r=r+80|0;if((r|0)>=(s|0))ka();h=j;g=(c|0)!=0;e=g?c:420;f=b|524288;while(1){d=fc[k[47552+4>>2]&63](a,f,e)|0;if((d|0)<0){l=Mb()|0;if((k[l>>2]|0)==4)continue;else break}if((d|0)>2){i=6;break}qc[k[47552+16>>2]&127](d)|0;k[h>>2]=a;k[h+4>>2]=d;gd(28,48120,h);if((fc[k[47552+4>>2]&63](48168,b,c)|0)<0){d=-1;break}}if((i|0)==6)if(((g?(wc[k[47552+64>>2]&127](d,h)|0)==0:0)?(k[h+36>>2]|0)==0:0)?(k[h+12>>2]&511|0)!=(c|0):0)wc[k[47552+172>>2]&127](d,c)|0;r=j;return d|0}function go(a,b,c){a=a|0;b=b|0;c=c|0;if(qc[k[47552+16>>2]&127](b)|0){if(!a)b=0;else b=k[a+32>>2]|0;io(4106,47856,b,c)|0}return}function ho(a){a=a|0;var b=0,c=0,d=0,e=0;e=r;r=r+80|0;if((r|0)>=(s|0))ka();d=e;b=e+4|0;c=a+18|0;do if(!(j[c>>1]&256)){if(wc[k[47552+64>>2]&127](k[a+12>>2]|0,b)|0){k[d>>2]=k[a+32>>2];gd(28,48592,d);j[c>>1]=m[c>>1]|0|256;break}b=k[b+16>>2]|0;if(!b){if(!(j[c>>1]&32)){k[d>>2]=k[a+32>>2];gd(28,48616,d);j[c>>1]=m[c>>1]|0|256;break}}else if(b>>>0>1){k[d>>2]=k[a+32>>2];gd(28,48648,d);j[c>>1]=m[c>>1]|0|256;break}if(Co(a)|0){k[d>>2]=k[a+32>>2];gd(28,48680,d);j[c>>1]=m[c>>1]|0|256}}while(0);r=e;return}function io(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;e=r;r=r+32|0;if((r|0)>=(s|0))ka();f=e;h=Mb()|0;h=k[h>>2]|0;g=Wb(h|0)|0;k[f>>2]=d;k[f+4>>2]=h;k[f+8>>2]=b;k[f+12>>2]=(c|0)==0?10360:c;k[f+16>>2]=g;gd(a,47864,f);r=e;return a|0}function jo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+40|0;c=k[h>>2]|0;g=c<<1;g=g>>>0<256?256:g;if((c|0)!=0?(b=k[3164]|0,(b|0)!=0):0)sc[b&3]();b=g<<2;f=vg(b,0)|0;c=(f|0)==0;if(!c)kw(f|0,0,b|0)|0;if((k[h>>2]|0)!=0?(d=k[3166]|0,(d|0)!=0):0)sc[d&3]();if(!c){d=k[h>>2]|0;e=a+44|0;b=k[e>>2]|0;if(d){a=0;do{c=k[b+(a<<2)>>2]|0;if(c){do{j=c+16|0;i=c;c=k[j>>2]|0;b=f+((((k[i+8>>2]|0)>>>0)%(g>>>0)|0)<<2)|0;k[j>>2]=k[b>>2];k[b>>2]=i}while((c|0)!=0);b=k[e>>2]|0}a=a+1|0}while(a>>>0>>0)}$c(b);k[e>>2]=f;k[h>>2]=g}return}function ko(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;f=a+24|0;g=a+16|0;c=a+4|0;a:do if((k[g>>2]|0)>>>0>(k[c>>2]|0)>>>0)do{d=k[f>>2]|0;if(!d)break a;lo(d);e=k[d+20>>2]|0;b=(k[e+44>>2]|0)+((((k[d+8>>2]|0)>>>0)%((k[e+40>>2]|0)>>>0)|0)<<2)|0;while(1){h=k[b>>2]|0;a=h+16|0;if((h|0)==(d|0))break;else b=a}k[b>>2]=k[a>>2];a=e+36|0;k[a>>2]=(k[a>>2]|0)+-1;no(d)}while((k[g>>2]|0)>>>0>(k[c>>2]|0)>>>0);while(0);return}function lo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=k[a+20>>2]|0;d=k[c>>2]|0;e=a+28|0;f=k[e>>2]|0;g=a+24|0;b=k[g>>2]|0;if(!f)k[d+20>>2]=b;else{k[f+24>>2]=b;b=k[g>>2]|0}if(!b)k[d+24>>2]=f;else k[b+28>>2]=f;k[g>>2]=0;k[e>>2]=0;i[a+12>>0]=1;b=c+32|0;k[b>>2]=(k[b>>2]|0)+-1;return}function mo(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;j=k[a>>2]|0;q=a+36|0;g=k[q>>2]|0;e=k[a+32>>2]|0;f=g-e|0;o=(c|0)==1;if(o)if(f>>>0<(k[j+12>>2]|0)>>>0?f>>>0<(k[a+24>>2]|0)>>>0:0){if((k[3155]|0)!=0?((k[a+8>>2]|0)+(k[a+4>>2]|0)|0)<=(k[3154]|0):0)c=12648|0;else c=9060|0;if(!((k[c>>2]|0)!=0&e>>>0>>0))n=8;else d=0}else d=0;else n=8;do if((n|0)==8){m=a+40|0;if(g>>>0>=(k[m>>2]|0)>>>0)jo(a);h=a+12|0;do if((k[h>>2]|0)!=0?(d=k[j+24>>2]|0,(d|0)!=0):0){if(((k[q>>2]|0)+1|0)>>>0<(k[a+20>>2]|0)>>>0?(k[j+16>>2]|0)>>>0<(k[j+4>>2]|0)>>>0:0){if((k[3155]|0)!=0?((k[a+8>>2]|0)+(k[a+4>>2]|0)|0)<=(k[3154]|0):0)c=12648|0;else c=9060|0;if(!(k[c>>2]|0)){n=23;break}}c=d+20|0;e=k[c>>2]|0;f=(k[e+44>>2]|0)+((((k[d+8>>2]|0)>>>0)%((k[e+40>>2]|0)>>>0)|0)<<2)|0;while(1){r=k[f>>2]|0;g=r+16|0;if((r|0)==(d|0))break;else f=g}k[f>>2]=k[g>>2];g=e+36|0;k[g>>2]=(k[g>>2]|0)+-1;lo(d);c=k[c>>2]|0;if(((k[c+8>>2]|0)+(k[c+4>>2]|0)|0)==((k[a+8>>2]|0)+(k[a+4>>2]|0)|0)){l=j+16|0;k[l>>2]=(k[h>>2]|0)-(k[c+12>>2]|0)+(k[l>>2]|0);break}else{no(d);n=23;break}}else n=23;while(0);if((n|0)==23){if(o?(l=k[3164]|0,(l|0)!=0):0)sc[l&3]();c=a+4|0;e=Lo((k[c>>2]|0)+32+(k[a+8>>2]|0)|0)|0;c=k[c>>2]|0;d=e+c|0;if(e){k[d>>2]=e;k[e+(c+4)>>2]=e+(c+32);if(k[h>>2]|0){n=(k[a>>2]|0)+16|0;k[n>>2]=(k[n>>2]|0)+1}}else d=0;if(o?(p=k[3166]|0,(p|0)!=0):0)sc[p&3]();if(!d){d=0;break}}e=(b>>>0)%((k[m>>2]|0)>>>0)|0;k[q>>2]=(k[q>>2]|0)+1;k[d+8>>2]=b;n=a+44|0;k[d+16>>2]=k[(k[n>>2]|0)+(e<<2)>>2];k[d+20>>2]=a;k[d+28>>2]=0;k[d+24>>2]=0;i[d+12>>0]=1;k[k[d+4>>2]>>2]=0;k[(k[n>>2]|0)+(e<<2)>>2]=d;e=a+28|0;if((k[e>>2]|0)>>>0>>0)k[e>>2]=b}while(0);return d|0}function no(a){a=a|0;var b=0;if((a|0)!=0?(b=k[a+20>>2]|0,el(k[a>>2]|0),(k[b+12>>2]|0)!=0):0){b=(k[b>>2]|0)+16|0;k[b>>2]=(k[b>>2]|0)+-1}return}function oo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=a+40|0;if(k[f>>2]|0){g=a+44|0;d=a+36|0;e=0;do{c=(k[g>>2]|0)+(e<<2)|0;a=k[c>>2]|0;a:do if(a)do{while(1){if((k[a+8>>2]|0)>>>0>>0)break;k[d>>2]=(k[d>>2]|0)+-1;k[c>>2]=k[a+16>>2];if(!(i[a+12>>0]|0))lo(a);no(a);a=k[c>>2]|0;if(!a)break a}c=a+16|0;a=k[c>>2]|0}while((a|0)!=0);while(0);e=e+1|0}while(e>>>0<(k[f>>2]|0)>>>0)}return}function po(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=k[a>>2]|0;e=k[(k[d+32>>2]|0)+88>>2]|0;f=((e|0)<0)<<31>>31;if(!((f|0)<(c|0)|(f|0)==(c|0)&e>>>0>>0)){b=vg(b,c)|0;if(!b){Wd(a);b=0}}else{k[a+20>>2]=18;i[a+25>>0]=1;ah(d,10096,-1,1,0)|0;b=0}return b|0}function qo(a){a=a|0;var b=0,c=0,d=0,e=0;do if(a){b=i[a>>0]|0;c=b<<24>>24;if((c|0)==91)e=93;else if((c|0)==96|(c|0)==34|(c|0)==39)e=b;else break;c=1;d=0;while(1){b=i[a+c>>0]|0;if(b<<24>>24==e<<24>>24){c=c+1|0;b=a+d|0;if((i[a+c>>0]|0)!=e<<24>>24)break;i[b>>0]=e}else i[a+d>>0]=b;c=c+1|0;d=d+1|0}i[b>>0]=0}while(0);return}function ro(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,n=0,o=0,q=0.0,t=0.0,u=0.0,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,M=0,N=0,O=0,P=0,Q=0,R=0;Q=r;r=r+176|0;if((r|0)>=(s|0))ka();N=Q+64|0;n=Q+132|0;j=Q+128|0;h=Q+124|0;o=Q+56|0;K=Q+48|0;O=Q+136|0;M=Q;g=d+0|0;f=g+48|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(f|0));a:do if(b){e=k[c>>2]|0;b:do if(((l[10064+(m[e+8>>1]&31)>>0]|0)+-1|0)>>>0>=2){g=Xg(e,1)|0;if(!g){e=1;break a}f=(i[g>>0]|0)==45;e=f?g+1|0:g;k[N>>2]=4;k[N+4>>2]=0;k[N+8>>2]=9999;k[N+12>>2]=45;k[N+16>>2]=n;k[N+20>>2]=2;k[N+24>>2]=1;k[N+28>>2]=12;k[N+32>>2]=45;k[N+36>>2]=j;k[N+40>>2]=2;k[N+44>>2]=1;k[N+48>>2]=31;k[N+52>>2]=0;k[N+56>>2]=h;do if((wq(e,N)|0)==3){e=e+10|0;while(1){H=i[e>>0]|0;if(H<<24>>24==84?1:(i[10368+(H&255)>>0]&1)!=0)e=e+1|0;else break}if(xq(e,d)|0){if(i[e>>0]|0)break;i[d+41>>0]=0}i[d+42>>0]=0;i[d+40>>0]=1;H=k[n>>2]|0;k[d+8>>2]=f?0-H|0:H;k[d+12>>2]=k[j>>2];k[d+16>>2]=k[h>>2];if(!(i[d+43>>0]|0))break b;so(d);break b}while(0);if(xq(g,d)|0){if(!(id(g,20080)|0))if(!(vq(a,d)|0))break;else{e=1;break a}else e=g;while(1)if(!(i[e>>0]|0))break;else e=e+1|0;if(!(Yl(g,o,e-g&1073741823,1)|0)){e=1;break a}q=+p[o>>3]*864.0e5+.5;G=+W(q)>=1.0?(q>0.0?~~+ia(+V(q/4294967296.0),4294967295.0)>>>0:~~+ga((q-+(~~q>>>0))/4294967296.0)>>>0):0;H=d;k[H>>2]=~~q>>>0;k[H+4>>2]=G;i[d+42>>0]=1}}else{q=+Zg(e)*864.0e5+.5;G=+W(q)>=1.0?(q>0.0?~~+ia(+V(q/4294967296.0),4294967295.0)>>>0:~~+ga((q-+(~~q>>>0))/4294967296.0)>>>0):0;H=d;k[H>>2]=~~q>>>0;k[H+4>>2]=G;i[d+42>>0]=1}while(0);if((b|0)>1){e=d+40|0;v=d+41|0;w=d+43|0;x=d+42|0;y=O+8|0;z=y;A=O+9|0;B=d+24|0;C=d+20|0;D=d+32|0;E=d+16|0;F=d+12|0;G=O+1|0;H=d+8|0;I=1;while(1){j=Xg(k[c+(I<<2)>>2]|0,1)|0;if(!j){e=1;break a}k[N>>2]=1;o=0;do{n=i[j+o>>0]|0;if(!(n<<24>>24))break;i[O+o>>0]=i[9328+(n&255)>>0]|0;o=o+1|0}while((o|0)<29);i[O+o>>0]=0;c:do switch(i[O>>0]|0){case 108:{if(!(dw(O,19936)|0)){so(d);f=yq(d,a,N)|0;P=d;f=ow(k[P>>2]|0,k[P+4>>2]|0,f|0,L|0)|0;P=d;k[P>>2]=f;k[P+4>>2]=L;i[e>>0]=0;i[v>>0]=0;i[w>>0]=0;P=82}else P=82;break}case 117:{if((dw(O,19952)|0)==0?(i[x>>0]|0)!=0:0){f=d;f=ow(k[f>>2]|0,k[f+4>>2]|0,43200,0)|0;f=vw(f|0,L|0,86400,0)|0;f=ow(f|0,L|0,1045635584,49096)|0;o=d;k[o>>2]=f;k[o+4>>2]=L;i[e>>0]=0;i[v>>0]=0;i[w>>0]=0;k[N>>2]=0;o=0;break c}if(!(dw(O,19968)|0)){so(d);n=yq(d,a,N)|0;j=L;o=k[N>>2]|0;if(!o){f=d;f=iw(k[f>>2]|0,k[f+4>>2]|0,n|0,j|0)|0;P=d;k[P>>2]=f;k[P+4>>2]=L;i[e>>0]=0;i[v>>0]=0;i[w>>0]=0;P=yq(d,a,N)|0;P=iw(n|0,j|0,P|0,L|0)|0;f=d;f=ow(P|0,L|0,k[f>>2]|0,k[f+4>>2]|0)|0;P=d;k[P>>2]=f;k[P+4>>2]=L;P=82}}else P=82;break}case 115:{if(!(ew(O,19992,9)|0)){to(d);i[v>>0]=1;k[B>>2]=0;k[C>>2]=0;p[D>>3]=0.0;i[w>>0]=0;i[x>>0]=0;if(!(dw(A,20008)|0)){k[E>>2]=1;k[N>>2]=0;o=0;break c}if(!(dw(A,20016)|0)){to(d);k[F>>2]=1;k[E>>2]=1;k[N>>2]=0;o=0;break c}if(!(dw(A,20024)|0)){k[N>>2]=0;o=0}else P=82}else P=82;break}case 119:{if(!(ew(O,19976,8)|0)){o=y;while(1)if(!(i[o>>0]|0))break;else o=o+1|0;if((Yl(y,K,o-z&1073741823,1)|0)!=0?(q=+p[K>>3],J=~~q,+(J|0)==q&(J|0)>-1&q<7.0):0){to(d);uo(d);i[w>>0]=0;i[x>>0]=0;so(d);f=d;o=k[f>>2]|0;f=k[f+4>>2]|0;j=ow(o|0,f|0,1296e5,0)|0;j=vw(j|0,L|0,864e5,0)|0;j=ww(j|0,L|0,7,0)|0;g=L;R=((J|0)<0)<<31>>31;h=(g|0)>(R|0)|(g|0)==(R|0)&j>>>0>J>>>0;n=ow(j|0,g|0,-7,-1)|0;g=iw(J|0,R|0,(h?n:j)|0,(h?L:g)|0)|0;g=xw(g|0,L|0,864e5,0)|0;f=ow(g|0,L|0,o|0,f|0)|0;o=d;k[o>>2]=f;k[o+4>>2]=L;i[e>>0]=0;i[v>>0]=0;i[w>>0]=0;k[N>>2]=0;o=0}else P=82}else P=82;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 45:case 43:{j=1;while(1){o=O+j|0;n=i[o>>0]|0;if(n<<24>>24==58|n<<24>>24==0){n=o;break}if(!(i[10368+(n&255)>>0]&1))j=j+1|0;else{n=o;break}}if(!(Yl(O,K,j,1)|0)){k[N>>2]=1;o=1;break c}o=i[n>>0]|0;if(o<<24>>24==58){o=((l[O>>0]|0)+-48|0)>>>0<10?O:G;g=M+0|0;f=g+48|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(f|0));if(xq(o,M)|0){P=82;break c}so(M);o=M;o=ow(k[o>>2]|0,k[o+4>>2]|0,-432e5,-1)|0;o=ww(o|0,L|0,864e5,0)|0;n=L;f=M;k[f>>2]=o;k[f+4>>2]=n;if((i[O>>0]|0)==45){o=iw(0,0,o|0,n|0)|0;n=L;f=M;k[f>>2]=o;k[f+4>>2]=n}so(d);i[e>>0]=0;i[v>>0]=0;i[w>>0]=0;f=d;f=ow(k[f>>2]|0,k[f+4>>2]|0,o|0,n|0)|0;o=d;k[o>>2]=f;k[o+4>>2]=L;k[N>>2]=0;o=0;break c}if(i[10368+(o&255)>>0]&1){n=O+(j+1)|0;while(1){o=i[n>>0]|0;if(!(i[10368+(o&255)>>0]&1))break;else n=n+1|0}}if(!(o<<24>>24))o=n;else{o=n;do o=o+1|0;while((i[o>>0]|0)!=0)}o=o-n&1073741823;if((o+-3|0)>>>0>7)P=82;else{j=o+-1|0;h=n+j|0;if((i[h>>0]|0)==115){i[h>>0]=0;o=j}so(d);k[N>>2]=0;t=+p[K>>3];u=t<0.0?-.5:.5;do if((o|0)==6){if(!(dw(n,20040)|0)){q=t*6.0e4+u;g=+W(q)>=1.0?(q>0.0?~~+ia(+V(q/4294967296.0),4294967295.0)>>>0:~~+ga((q-+(~~q>>>0))/4294967296.0)>>>0):0;f=d;g=ow(k[f>>2]|0,k[f+4>>2]|0,~~q>>>0|0,g|0)|0;f=d;k[f>>2]=g;k[f+4>>2]=L;break}if(!(dw(n,20048)|0)){q=t*1.0e3+u;g=+W(q)>=1.0?(q>0.0?~~+ia(+V(q/4294967296.0),4294967295.0)>>>0:~~+ga((q-+(~~q>>>0))/4294967296.0)>>>0):0;f=d;g=ow(k[f>>2]|0,k[f+4>>2]|0,~~q>>>0|0,g|0)|0;f=d;k[f>>2]=g;k[f+4>>2]=L}else P=80}else if((o|0)==5)if(!(dw(n,20008)|0)){to(d);uo(d);f=~~t;g=(k[F>>2]|0)+f|0;h=(((g|0)>0?-1:-12)+g|0)/12|0;k[H>>2]=(k[H>>2]|0)+h;g=(ha(h,-12)|0)+g|0;k[F>>2]=g;i[x>>0]=0;so(d);q=+(f|0);if(q!=t){q=u+(t-q)*30.0*864.0e5;g=+W(q)>=1.0?(q>0.0?~~+ia(+V(q/4294967296.0),4294967295.0)>>>0:~~+ga((q-+(~~q>>>0))/4294967296.0)>>>0):0;f=d;g=ow(k[f>>2]|0,k[f+4>>2]|0,~~q>>>0|0,g|0)|0;f=d;k[f>>2]=g;k[f+4>>2]=L}}else P=80;else if((o|0)==3)if(!(dw(n,20024)|0)){q=t*864.0e5+u;g=+W(q)>=1.0?(q>0.0?~~+ia(+V(q/4294967296.0),4294967295.0)>>>0:~~+ga((q-+(~~q>>>0))/4294967296.0)>>>0):0;f=d;g=ow(k[f>>2]|0,k[f+4>>2]|0,~~q>>>0|0,g|0)|0;f=d;k[f>>2]=g;k[f+4>>2]=L}else P=80;else if((o|0)==4){if(!(dw(n,20032)|0)){q=t*36.0e5+u;g=+W(q)>=1.0?(q>0.0?~~+ia(+V(q/4294967296.0),4294967295.0)>>>0:~~+ga((q-+(~~q>>>0))/4294967296.0)>>>0):0;f=d;g=ow(k[f>>2]|0,k[f+4>>2]|0,~~q>>>0|0,g|0)|0;f=d;k[f>>2]=g;k[f+4>>2]=L;break}if(!(dw(n,20016)|0)){f=~~t;to(d);uo(d);k[H>>2]=(k[H>>2]|0)+f;i[x>>0]=0;so(d);q=+(f|0);if(q!=t){q=u+(t-q)*365.0*864.0e5;g=+W(q)>=1.0?(q>0.0?~~+ia(+V(q/4294967296.0),4294967295.0)>>>0:~~+ga((q-+(~~q>>>0))/4294967296.0)>>>0):0;f=d;g=ow(k[f>>2]|0,k[f+4>>2]|0,~~q>>>0|0,g|0)|0;f=d;k[f>>2]=g;k[f+4>>2]=L}}else P=80}else P=80;while(0);if((P|0)==80)k[N>>2]=1;i[e>>0]=0;i[v>>0]=0;i[w>>0]=0;P=82}break}default:P=82}while(0);if((P|0)==82){P=0;o=k[N>>2]|0}I=I+1|0;if(o){e=1;break a}if((I|0)>=(b|0)){e=0;break a}}}else e=0}else e=vq(a,d)|0;while(0);r=Q;return e|0}function so(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0.0;f=a+42|0;if(!(i[f>>0]|0)){g=a+40|0;if(i[g>>0]|0){c=k[a+8>>2]|0;b=k[a+12>>2]|0;d=k[a+16>>2]|0;if((b|0)<3)e=4}else{d=1;b=1;c=2e3;e=4}if((e|0)==4){b=b+12|0;c=c+-1|0}m=(+(d+2+((c|0)/-100|0)+((c|0)/400|0)+(((c*36525|0)+172251900|0)/100|0)+(((b*306001|0)+306001|0)/1e4|0)|0)+-1524.5)*864.0e5;c=~~m>>>0;d=+W(m)>=1.0?(m>0.0?~~+ia(+V(m/4294967296.0),4294967295.0)>>>0:~~+ga((m-+(~~m>>>0))/4294967296.0)>>>0):0;b=a;k[b>>2]=c;k[b+4>>2]=d;i[f>>0]=1;b=a+41|0;if((i[b>>0]|0)!=0?(h=ha(k[a+20>>2]|0,36e5)|0,h=((k[a+24>>2]|0)*6e4|0)+h|0,m=+p[a+32>>3]*1.0e3,j=ow(~~m>>>0|0,(+W(m)>=1.0?(m>0.0?~~+ia(+V(m/4294967296.0),4294967295.0)>>>0:~~+ga((m-+(~~m>>>0))/4294967296.0)>>>0):0)|0,c|0,d|0)|0,h=ow(j|0,L|0,h|0,((h|0)<0)<<31>>31|0)|0,j=L,l=a,k[l>>2]=h,k[l+4>>2]=j,l=a+43|0,(i[l>>0]|0)!=0):0){d=(k[a+28>>2]|0)*6e4|0;d=iw(h|0,j|0,d|0,((d|0)<0)<<31>>31|0)|0;c=a;k[c>>2]=d;k[c+4>>2]=L;i[g>>0]=0;i[b>>0]=0;i[l>>0]=0}}return}function to(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=a+40|0;if(!(i[e>>0]|0)){if(!(i[a+42>>0]|0)){b=2e3;c=1;d=1}else{b=a;b=ow(k[b>>2]|0,k[b+4>>2]|0,432e5,0)|0;b=vw(b|0,L|0,864e5,0)|0;f=~~((+(b|0)+-1867216.25)/36524.25);f=b+1525+f+((f|0)/-4|0)|0;b=~~((+(f|0)+-122.1)/365.25);f=f-((b*36525|0)/100|0)|0;d=~~(+(f|0)/30.6001);c=((d|0)<14?-1:-13)+d|0;b=((c|0)>2?-4716:-4715)+b|0;d=f-~~(+(d|0)*30.6001)|0}k[a+16>>2]=d;k[a+12>>2]=c;k[a+8>>2]=b;i[e>>0]=1}return}function uo(a){a=a|0;var b=0,c=0.0,d=0,e=0,f=0;b=a+41|0;if(!(i[b>>0]|0)){so(a);f=a;f=ow(k[f>>2]|0,k[f+4>>2]|0,432e5,0)|0;f=ww(f|0,L|0,864e5,0)|0;c=+(f|0)/1.0e3;f=~~c;e=(f|0)/3600|0;k[a+20>>2]=e;e=(ha(e,-3600)|0)+f|0;d=(e|0)/60|0;k[a+24>>2]=d;c=c-+(f|0)+ +(e+(ha(d,-60)|0)|0);p[a+32>>3]=c;i[b>>0]=1}return}function vo(a){a=a|0;rg(k[a+52>>2]|0,a);return}function wo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=a+65|0;do if(!(i[f>>0]|0)){if(!b){e=rh(a,c,d)|0;break}if((k[a+276>>2]|0)>>>0<=b>>>0?(k[a+280>>2]|0)>>>0>b>>>0:0){f=a+248|0;if(!(0>>0|(0==(d|0)?(m[f>>1]|0)>>>0>>0:0))){e=b;break}e=rh(a,c,d)|0;if(!e){e=0;break}pw(e|0,b|0,m[f>>1]|0)|0;rg(a,b);break}if((Qc()|0)==0?(e=wg(b,c,d)|0,(e|0)!=0):0)break;i[f>>0]=1;e=0}else e=0;while(0);return e|0}function xo(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a)a=0;else{d=k[a+4>>2]|0;k[d+4>>2]=k[a>>2];d=d+22|0;a=j[d>>1]|0;if((b|0)>-1){c=a&65535;a=c&65531;j[d>>1]=a;if(b){a=(c|4)&65535;j[d>>1]=a}}a=(a&65535)>>>2&1}return a|0}function yo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=k[a+4>>2]|0;k[e+4>>2]=k[a>>2];e=k[e>>2]|0;c=b&3;if((c|0)!=1){d=i[e+12>>0]|0;a=e+7|0;i[a>>0]=d<<24>>24!=0&1;if((c|0)==3)d=d<<24>>24==0&1;else d=0}else{a=e+7|0;i[a>>0]=1;d=0}i[e+8>>0]=d;do if(!(i[a>>0]|0)){if(b&4){i[e+11>>0]=3;i[e+9>>0]=3;a=3;break}i[e+11>>0]=2;a=e+9|0;if(!(b&8)){i[a>>0]=2;a=2;break}else{i[a>>0]=3;a=2;break}}else{i[e+11>>0]=0;i[e+9>>0]=0;a=0}while(0);if(d<<24>>24)a=(a&255|32)&255;i[e+10>>0]=a;a=e+20|0;c=l[a>>0]|0;i[a>>0]=(b&16|0)==0?c|1:c&254;return}function zo(a){a=a|0;var b=0,c=0;c=a+12|0;b=k[c>>2]|0;if((b|0)>-1){go(a,b,27311);k[c>>2]=-1}$c(k[a+28>>2]|0);b=a+0|0;c=b+44|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));return}function Ao(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;h=e&131071;while(1){g=hb(a|0,b|0,0)|0;if(!((g|0)==(b|0)&(((g|0)<0)<<31>>31|0)==(c|0))){i=3;break}g=fc[k[47552+136>>2]&63](a,d,h)|0;if((g|0)>=0)break;e=Mb()|0;e=k[e>>2]|0;if((e|0)!=4){i=9;break}}if((i|0)==3)if(!f)g=-1;else{if((g|0)==-1){g=Mb()|0;g=k[g>>2]|0}else g=0;k[f>>2]=g;g=-1}else if((i|0)==9)if(f)k[f>>2]=e;return g|0}function Bo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[c>>2]|0;do if((d|0)>=0){b=b&255;if(!d){c=a+18|0;j[c>>1]=(m[c>>1]|0)&(b^65535);break}else{c=a+18|0;j[c>>1]=m[c>>1]|0|b;break}}else k[c>>2]=((m[a+18>>1]|0)&(b&255)|0)!=0&1;while(0);return}function Co(a){a=a|0;var b=0,c=0,d=0;d=r;r=r+80|0;if((r|0)>=(s|0))ka();c=d;b=a+8|0;if(k[b>>2]|0)if(!(wc[k[47552+52>>2]&127](k[a+32>>2]|0,c)|0))b=(k[c+72>>2]|0)!=(k[(k[b>>2]|0)+4>>2]|0);else b=1;else b=0;r=d;return b&1|0}function Do(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;h=r;r=r+32|0;if((r|0)>=(s|0))ka();g=h;f=h+8|0;e=(k[(k[a+8>>2]|0)+20>>2]|0)+12|0;if((k[e>>2]|0)>-1){k[f+0>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;j[f>>1]=b;j[f+2>>1]=0;k[f+4>>2]=c;k[f+8>>2]=d;b=a+18|0;d=((j[b>>1]&512)>>>9)+13|0;c=k[11910]|0;e=k[e>>2]|0;k[g>>2]=f;e=(fc[c&63](e,d,g)|0)!=-1;j[b>>1]=(m[b>>1]|0)&65023;e=e?0:5}else e=0;r=h;return e|0}function Eo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;h=k[(k[a+8>>2]|0)+20>>2]|0;if((h|0)!=0?(k[h+28>>2]|0)==0:0){b=mc[k[47552+292>>2]&7]()|0;if((b|0)<32768)d=1;else d=(b|0)/32768|0;e=h+20|0;if(!(j[e>>1]|0)){c=h+12|0;b=h+24|0}else{c=h+12|0;b=h+24|0;f=h+16|0;g=0;do{if((k[c>>2]|0)>-1)wc[k[47552+268>>2]&127](k[(k[b>>2]|0)+(g<<2)>>2]|0,k[f>>2]|0)|0;else $c(k[(k[b>>2]|0)+(g<<2)>>2]|0);g=g+d|0}while((g|0)<(m[e>>1]|0))}$c(k[b>>2]|0);b=k[c>>2]|0;if((b|0)>-1){go(a,b,29591);k[c>>2]=-1}k[(k[h>>2]|0)+20>>2]=0;$c(h)}return}function Fo(a){a=a|0;var b=0,c=0,d=0;c=(k[a+8>>2]|0)+28|0;b=k[c>>2]|0;if(b)do{d=b;b=k[b+8>>2]|0;go(a,k[d>>2]|0,26573);$c(d)}while((b|0)!=0);k[c>>2]=0;return}function Go(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=r;r=r+32|0;if((r|0)>=(s|0))ka();e=g;d=g+8|0;f=k[a+8>>2]|0;c=j[a+18>>1]|0;if(!(c&1))if((i[f+13>>0]|0)!=0&(c&2)==0)c=4;else c=7;else if(!(c&2))c=4;else c=7;if((c|0)==4){c=f+13|0;if(!(i[c>>0]|0)){j[d+2>>1]=0;k[d+4>>2]=(k[2514]|0)+2;k[d+8>>2]=510;j[d>>1]=1;h=k[11910]|0;b=k[a+12>>2]|0;k[e>>2]=d;b=fc[h&63](b,13,e)|0;if((b|0)>=0){i[c>>0]=1;c=f+24|0;k[c>>2]=(k[c>>2]|0)+1}}else b=0}else if((c|0)==7){d=k[11910]|0;c=k[a+12>>2]|0;k[e>>2]=b;b=fc[d&63](c,13,e)|0}r=g;return b|0}function Ho(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;do if(b){e=k[b>>2]|0;if(!e){k[b>>2]=1;k[b+4>>2]=c;f=9;break}g=b+4|0;d=k[g>>2]|0;k[b>>2]=e+1;k[g>>2]=c;if(d){k[c>>2]=d;d=d+4|0;k[c+4>>2]=k[d>>2];e=k[d>>2]|0;if(!e)k[a+8>>2]=c;else k[e>>2]=c;k[d>>2]=c}else f=9}else f=9;while(0);if((f|0)==9){d=a+8|0;e=k[d>>2]|0;k[c>>2]=e;if(e)k[e+4>>2]=c;k[c+4>>2]=0;k[d>>2]=c}return}function Io(a,b){a=a|0;b=b|0;var c=0,d=0;if(b){if((k[b>>2]|0)>0){c=0;d=b+8|0;while(1){rg(a,k[d+4>>2]|0);rg(a,k[d+8>>2]|0);rg(a,k[d+12>>2]|0);rg(a,k[d+64>>2]|0);pg(a,k[d+16>>2]|0);Rk(a,k[d+20>>2]|0,1);Lk(a,k[d+44>>2]|0);Mk(a,k[d+48>>2]|0);c=c+1|0;if((c|0)>=(k[b>>2]|0))break;else d=d+72|0}}rg(a,b)}return}function Jo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;c=Ko(a,c)|0;if((c|0)>0){d=a+12|0;pw((k[a+8>>2]|0)+(k[d>>2]|0)|0,b|0,c|0)|0;k[d>>2]=(k[d>>2]|0)+c}return}function Ko(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,n=0,o=0,p=0,q=0,r=0;f=a+25|0;do if(!(i[f>>0]|0)){d=i[a+24>>0]|0;if(!(d<<24>>24)){c=a+16|0;b=(k[c>>2]|0)+-1-(k[a+12>>2]|0)|0;i[f>>0]=2;k[c>>2]=0;break}g=a+8|0;e=k[g>>2]|0;e=(e|0)==(k[a+4>>2]|0)?0:e;h=a+12|0;o=k[h>>2]|0;c=((o|0)<0)<<31>>31;r=b+1|0;r=ow(o|0,c|0,r|0,((r|0)<0)<<31>>31|0)|0;p=L;c=ow(r|0,p|0,o|0,c|0)|0;o=L;l=k[a+20>>2]|0;n=((l|0)<0)<<31>>31;q=(o|0)>(n|0)|(o|0)==(n|0)&c>>>0>l>>>0;c=q?r:c;o=q?p:o;if((o|0)>(n|0)|(o|0)==(n|0)&c>>>0>l>>>0){mn(a);i[f>>0]=2;k[a+16>>2]=0;b=0;break}l=a+16|0;k[l>>2]=c;if(d<<24>>24==1)d=wo(k[a>>2]|0,e,c,((c|0)<0)<<31>>31)|0;else d=ad(e,c)|0;if(!d){mn(a);i[f>>0]=1;k[l>>2]=0;b=0;break}if((e|0)==0?(j=k[h>>2]|0,(j|0)>0):0)pw(d|0,k[g>>2]|0,j|0)|0;k[g>>2]=d;c=k[a>>2]|0;do if(!c)c=qc[k[8744+48>>2]&127](d)|0;else{if((k[c+276>>2]|0)>>>0<=d>>>0?(k[c+280>>2]|0)>>>0>d>>>0:0){c=m[c+248>>1]|0;break}c=qc[k[8744+48>>2]&127](d)|0}while(0);k[l>>2]=c}else b=0;while(0);return b|0}function Lo(a){a=a|0;var b=0,c=0;if((k[3154]|0)>=(a|0)?(b=k[3160]|0,(b|0)!=0):0){k[3160]=k[b>>2];c=k[3161]|0;k[3161]=c+-1;k[3162]=(c|0)<=(k[3156]|0)&1;k[2173]=a;if((k[2183]|0)>>>0>>0)k[2183]=a;c=(k[2167]|0)+1|0;k[2167]=c;if(c>>>0>(k[2177]|0)>>>0)k[2177]=c}else{b=vg(a,((a|0)<0)<<31>>31)|0;if(b){c=qc[k[8744+48>>2]&127](b)|0;k[2173]=a;if((k[2183]|0)>>>0>>0)k[2183]=a;c=(k[2168]|0)+c|0;k[2168]=c;if(c>>>0>(k[2178]|0)>>>0)k[2178]=c}else b=0}return b|0}function Mo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=a+20|0;if(k[f>>2]|0){d=a+24|0;g=fc[k[8744+120>>2]&63](b,(k[d>>2]|0)+40|0,l[a+28>>0]|0)|0;if(!g)c=7;else{e=k[2217]|0;c=k[a+16>>2]|0;if((c|0)<=-1){h=xw(c|0,((c|0)<0)<<31>>31|0,-1024,-1)|0;c=(k[d>>2]|0)+(k[f>>2]|0)|0;c=vw(h|0,L|0,c|0,((c|0)<0)<<31>>31|0)|0}oc[e&15](g,c);c=a+40|0;d=k[c>>2]|0;if(d)hc[k[8744+148>>2]&31](d);k[c>>2]=g;k[a+44>>2]=0;k[f>>2]=b;c=0}}else c=0;return c|0}function No(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();e=g;d=k[a+208>>2]|0;if(((d|0)!=0?(j[d+40>>1]|0)>-1:0)?(c=k[d+72>>2]|0,(c|0)!=0):0){d=c;f=8}else f=4;do if((f|0)==4){d=e;k[d>>2]=0;k[d+4>>2]=0;d=k[a+60>>2]|0;c=k[d>>2]|0;if(!c){c=-1;d=-1}else{c=wc[k[c+24>>2]&127](d,e)|0;if(c)break;c=e;c=ow(k[c>>2]|0,k[c+4>>2]|0,-1,-1)|0;d=L}e=k[a+152>>2]|0;f=((e|0)<0)<<31>>31;d=ow(c|0,d|0,e|0,f|0)|0;d=vw(d|0,L|0,e|0,f|0)|0;f=8}while(0);if((f|0)==8){c=a+156|0;if(d>>>0>(k[c>>2]|0)>>>0)k[c>>2]=d;k[b>>2]=d;c=0}r=g;return c|0}function Oo(a){a=a|0;var b=0,c=0;c=a+64|0;if(!((i[a+7>>0]|0)==0?(b=k[c>>2]|0,b=wc[k[(k[b>>2]|0)+20>>2]&127](b,2)|0,(b|0)!=0):0)){b=k[c>>2]|0;b=wc[k[(k[b>>2]|0)+24>>2]&127](b,a+80|0)|0}return b|0}function Po(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,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+48|0;if((r|0)>=(s|0))ka();D=F+16|0;C=F+8|0;B=F+36|0;w=F;v=F+32|0;u=F+28|0;A=F+24|0;e=k[a>>2]|0;k[u>>2]=0;k[A>>2]=1;y=a+64|0;c=k[y>>2]|0;c=wc[k[(k[c>>2]|0)+24>>2]&127](c,w)|0;a:do if(!c){x=a+200|0;d=k[x>>2]|0;c=zq(k[y>>2]|0,d,(k[(k[a>>2]|0)+8>>2]|0)+1|0)|0;if(!c){if(!(i[d>>0]|0))c=0;else c=uc[k[e+32>>2]&31](e,d,0,A)|0;b:do if((c|0)==0&(k[A>>2]|0)!=0){t=a+72|0;p=t;k[p>>2]=0;k[p+4>>2]=0;p=a+148|0;g=a+152|0;l=a+80|0;n=a+24|0;d=0;q=b;c:while(1){do{c=w;c=Aq(a,b,k[c>>2]|0,k[c+4>>2]|0,v,u)|0;if((c|0)==101)break c;else if(c){E=27;break b}e=k[v>>2]|0;if((e|0)==-1){o=w;o=iw(k[o>>2]|0,k[o+4>>2]|0,k[p>>2]|0,0)|0;e=(k[g>>2]|0)+8|0;e=vw(o|0,L|0,e|0,((e|0)<0)<<31>>31|0)|0;k[v>>2]=e}if(!(e|b)){f=l;h=k[p>>2]|0;f=ow(h|0,0,k[f>>2]|0,k[f+4>>2]|0)|0;m=L;j=t;o=k[j>>2]|0;j=k[j+4>>2]|0;if((f|0)==(o|0)&(m|0)==(j|0)){j=w;j=iw(k[j>>2]|0,k[j+4>>2]|0,f|0,m|0)|0;e=(k[g>>2]|0)+8|0;e=vw(j|0,L|0,e|0,((e|0)<0)<<31>>31|0)|0;k[v>>2]=e;j=m}else f=o}else{f=t;h=k[p>>2]|0;j=k[f+4>>2]|0;f=k[f>>2]|0}if((f|0)==(h|0)&(j|0)==0){f=k[u>>2]|0;c=Gl(a,f)|0;if(c){E=25;break a}k[n>>2]=f}}while((e|0)==0);c=q;f=0;while(1){if(c)Cn(a);c=Bq(a,t,0,1,0)|0;if((c|0)==101)break;else if((c|0)==522)break c;else if(c){E=27;break b}d=d+1|0;f=f+1|0;if(f>>>0>>0)c=0;else{q=0;continue c}}c=w;o=k[c+4>>2]|0;q=t;k[q>>2]=k[c>>2];k[q+4>>2]=o;q=0}i[a+18>>0]=i[a+12>>0]|0;u=d}else{d=0;E=27}while(0);if((E|0)==27){i[a+18>>0]=i[a+12>>0]|0;if(!c)u=d;else break}t=k[x>>2]|0;c=zq(k[y>>2]|0,t,(k[(k[a>>2]|0)+8>>2]|0)+1|0)|0;if(!c){if(((i[a+16>>0]|0)+-1&255)>2?(z=Ng(a,0)|0,(z|0)!=0):0){d=u;c=z;break}c=Hl(a,(i[t>>0]|0)!=0&1,0)|0;if(!c)if((i[t>>0]|0)!=0&(k[A>>2]|0)!=0){p=k[a>>2]|0;d=p+4|0;c=k[d>>2]<<1;q=vg(c,((c|0)<0)<<31>>31)|0;if(!q){d=u;c=7}else{kw(q|0,0,c|0)|0;n=q+(k[d>>2]|0)|0;o=p+24|0;c=yc[k[o>>2]&31](p,t,q,16385,0)|0;d:do if(!c){c=wc[k[(k[q>>2]|0)+24>>2]&127](q,C)|0;if(!c){l=(k[p+8>>2]|0)+1|0;d=C;d=ow(k[d>>2]|0,k[d+4>>2]|0,1,0)|0;d=ow(d|0,L|0,l|0,((l|0)<0)<<31>>31|0)|0;d=vg(d,L)|0;if(d){m=C;c=k[m>>2]|0;m=ow(c|0,k[m+4>>2]|0,1,0)|0;m=d+m|0;c=yc[k[(k[q>>2]|0)+8>>2]&31](q,d,c,0,0)|0;if(!c){i[d+(k[C>>2]|0)>>0]=0;g=d;A=C;z=k[A+4>>2]|0;if((z|0)>0|(z|0)==0&(k[A>>2]|0)>>>0>0){h=p+32|0;f=g;j=d;do{c=uc[k[h>>2]&31](p,j,0,B)|0;if(c){E=55;break d}do if(k[B>>2]|0){c=yc[k[o>>2]&31](p,j,n,2049,0)|0;if(c){E=55;break d}c=zq(n,m,l)|0;e=k[n>>2]|0;if(e){qc[k[e+4>>2]&127](n)|0;k[n>>2]=0}if(c){E=55;break d}if(!(i[m>>0]|0))break;if(!(dw(m,t)|0)){c=0;E=55;break d}}while(0);if(!j)e=1;else{e=j;while(1)if(!(i[e>>0]|0))break;else e=e+1|0;e=(e-f&1073741823)+1|0}j=j+e|0;f=j;z=f-g|0;x=((z|0)<0)<<31>>31;A=C;y=k[A+4>>2]|0}while((x|0)<(y|0)|((x|0)==(y|0)?z>>>0<(k[A>>2]|0)>>>0:0))}c=k[q>>2]|0;if(c){qc[k[c+4>>2]&127](q)|0;k[q>>2]=0}c=fc[k[p+28>>2]&63](p,t,0)|0;$c(d)}else E=55}else{c=7;d=0;E=55}}else{d=0;E=55}}else{d=0;E=55}while(0);if((E|0)==55)$c(d);d=k[q>>2]|0;if(d){qc[k[d+4>>2]&127](q)|0;k[q>>2]=0}$c(q);d=u}}else{d=u;c=0}else d=u}else d=u}else{d=0;E=25}}else{d=0;E=25}while(0);if((E|0)==25)i[a+18>>0]=i[a+12>>0]|0;if((b|0)!=0&(d|0)!=0){B=k[a+172>>2]|0;k[D>>2]=d;k[D+4>>2]=B;gd(539,14776,D)}Bp(a);r=F;return c|0}function Qo(a){a=a|0;var b=0,c=0;b=a+44|0;if(i[b>>0]|0){if(!(i[a+43>>0]|0)){c=k[a+4>>2]|0;uc[k[(k[c>>2]|0)+56>>2]&31](c,0,1,9)|0}i[b>>0]=0;i[a+47>>0]=0}b=a+40|0;c=j[b>>1]|0;if(c<<16>>16>-1){if(!(i[a+43>>0]|0)){a=k[a+4>>2]|0;uc[k[(k[a>>2]|0)+56>>2]&31](a,(c<<16>>16)+3|0,1,5)|0}j[b>>1]=-1}return}function Ro(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;if((d|0)>5)if((d|0)>100)c=15;else{if((d|0)>9){d=d+-9|0;d=ha(d*39|0,d)|0}else d=1;e=k[a>>2]|0;wc[k[e+60>>2]&127](e,d)|0;e=6}else e=6;a:do if((e|0)==6){do if(!c){c=sq(a,b)|0;do if((c|0)==5){if(!(k[k[a+32>>2]>>2]|0)){c=-1;break a}b=a+43|0;if(i[b>>0]|0){c=-1;break a}d=a+4|0;c=k[d>>2]|0;c=uc[k[(k[c>>2]|0)+56>>2]&31](c,2,1,6)|0;if((c|0)==5){c=261;break a}else if(c)break;if(i[b>>0]|0){c=-1;break a}c=k[d>>2]|0;uc[k[(k[c>>2]|0)+56>>2]&31](c,2,1,5)|0;c=-1;break a}while(0);if(c)break a;d=a+32|0;g=(k[k[d>>2]>>2]|0)+96|0;b=a+52|0;if((k[g>>2]|0)==(k[a+68>>2]|0)){f=a+43|0;e=i[f>>0]|0;if(!(e<<24>>24)){c=k[a+4>>2]|0;c=uc[k[(k[c>>2]|0)+56>>2]&31](c,3,1,6)|0;e=i[f>>0]|0}else c=0;if(e<<24>>24!=2){n=k[a+4>>2]|0;hc[k[(k[n>>2]|0)+60>>2]&31](n)}if((c|0)==5){n=d;d=5;break}else if(c)break a;if(!(cw(k[k[d>>2]>>2]|0,b,48)|0)){j[a+40>>1]=0;c=0;break a}if(i[f>>0]|0){c=-1;break a}c=k[a+4>>2]|0;uc[k[(k[c>>2]|0)+56>>2]&31](c,3,1,5)|0;c=-1;break a}else{n=d;d=0}}else{g=a+32|0;n=g;g=(k[k[g>>2]>>2]|0)+96|0;d=0}while(0);m=a+68|0;b=k[g+8>>2]|0;f=b>>>0>(k[m>>2]|0)>>>0;b=f?0:b;f=f&1^1;e=k[g+12>>2]|0;if(b>>>0<=e>>>0){l=e>>>0>(k[m>>2]|0)>>>0;f=l?f:2;b=l?b:e}e=k[g+16>>2]|0;if(b>>>0<=e>>>0){l=e>>>0>(k[m>>2]|0)>>>0;f=l?f:3;b=l?b:e}e=k[g+20>>2]|0;if(b>>>0<=e>>>0){l=e>>>0>(k[m>>2]|0)>>>0;f=l?f:4;b=l?b:e}b:do if((i[a+46>>0]&2)==0?((f|0)==0?1:b>>>0<(k[m>>2]|0)>>>0):0){l=a+43|0;h=a+4|0;e=1;while(1){d=e+3|0;if(i[l>>0]|0){f=e;break}c=k[h>>2]|0;c=uc[k[(k[c>>2]|0)+56>>2]&31](c,d,1,10)|0;if(!c){f=e;break}else if((c|0)!=5)break a;e=e+1|0;if((e|0)>=5){d=5;break b}}e=k[m>>2]|0;k[g+(f<<2)+4>>2]=e;if(!(i[l>>0]|0)){b=k[h>>2]|0;uc[k[(k[b>>2]|0)+56>>2]&31](b,d,1,9)|0;b=e;d=0}else{b=e;d=0}}while(0);if(!f){c=(d|0)==5?-1:520;break}d=f+3|0;c=a+43|0;e=i[c>>0]|0;do if(!(e<<24>>24)){e=k[a+4>>2]|0;e=uc[k[(k[e>>2]|0)+56>>2]&31](e,d,1,6)|0;if(!e){e=i[c>>0]|0;break}else{c=(e|0)==5?-1:e;break a}}while(0);if(e<<24>>24!=2){m=k[a+4>>2]|0;hc[k[(k[m>>2]|0)+60>>2]&31](m)}if((k[g+(f<<2)+4>>2]|0)==(b|0)?(cw(k[k[n>>2]>>2]|0,a+52|0,48)|0)==0:0){j[a+40>>1]=f;c=0;break}if(!(i[c>>0]|0)){c=k[a+4>>2]|0;uc[k[(k[c>>2]|0)+56>>2]&31](c,d,1,5)|0;c=-1}else c=-1}while(0);return c|0}function So(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=a+56|0;ji(k[c>>2]|0);k[c>>2]=0;hp(a);c=k[a+208>>2]|0;if(!c){if(!(i[a+4>>0]|0)){d=a+60|0;c=k[d>>2]|0;b=k[c>>2]|0;if(!(((b|0)!=0?((qc[k[b+48>>2]&127](c)|0)&2048|0)!=0:0)?(i[a+5>>0]&5)==1:0))g=7;if((g|0)==7?(e=k[a+64>>2]|0,f=k[e>>2]|0,(f|0)!=0):0){qc[k[f+4>>2]&127](e)|0;k[e>>2]=0}b=k[d>>2]|0;c=k[b>>2]|0;if(c){if(!(i[a+13>>0]|0))b=wc[k[c+32>>2]&127](b,0)|0;else b=0;c=a+17|0;if((i[c>>0]|0)!=5)i[c>>0]=0;if((b|0)!=0?(i[a+16>>0]|0)==6:0)i[c>>0]=5}i[a+18>>0]=0;i[a+16>>0]=0}}else{Qo(c);i[a+16>>0]=0}b=a+40|0;if(k[b>>2]|0){Cn(a);i[a+18>>0]=i[a+12>>0]|0;i[a+16>>0]=0;k[b>>2]=0}b=a+72|0;i[a+19>>0]=0;k[b+0>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;return}function To(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=k[c+4>>2]|0;e=d+0|0;f=e+40|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));k[d>>2]=c;k[d+4>>2]=k[c>>2];e=d+40|0;k[d+8>>2]=e;kw(e|0,0,k[a+24>>2]|0)|0;k[d+28>>2]=a;k[d+20>>2]=b;return nl(a,b,c)|0}function Uo(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;i=r;r=r+16|0;if((r|0)>=(s|0))ka();f=i;g=Cq(a,b,f)|0;if(!g){h=k[f>>2]|0;if(!b){a=h+136|0;k[f>>2]=a;f=a;a=0}else{f=h;a=(b<<12)+-34|0}k[d>>2]=f+-4;k[c>>2]=h+16384;k[e>>2]=a}r=i;return g|0}function Vo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=k[a+28>>2]|0;g=b&255;if(g&1){c=h+8|0;if((k[c>>2]|0)==(a|0)){b=a;do{b=k[b+36>>2]|0;if(!b){b=0;break}}while((j[b+24>>1]&4)!=0);k[c>>2]=b}b=a+32|0;d=k[b>>2]|0;e=(d|0)==0;f=a+36|0;c=k[f>>2]|0;if(e)k[h+4>>2]=c;else k[d+36>>2]=c;c=k[f>>2]|0;if(!c){k[h>>2]=d;if(e?(i[h+28>>0]|0)!=0:0)i[h+29>>0]=2}else k[c+32>>2]=d;k[b>>2]=0;k[f>>2]=0}if(g&2){b=k[h>>2]|0;k[a+32>>2]=b;if(!b){k[h+4>>2]=a;if(i[h+28>>0]|0)i[h+29>>0]=1}else k[b+36>>2]=a;k[h>>2]=a;b=h+8|0;if((k[b>>2]|0)==0?(j[a+24>>1]&4)==0:0)k[b>>2]=a}return}function Wo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();e=g;c=b>>>3;d=c&255;i[a+5>>0]=d;b=b&-9;i[a+7>>0]=4-(c<<2);c=k[a+52>>2]|0;if((b|0)==2){i[a+2>>0]=0;i[a+3>>0]=0;i[a+4>>0]=0;j[a+10>>1]=j[c+24>>1]|0;j[a+12>>1]=j[c+26>>1]|0;f=5}else if((b|0)==5){i[a+2>>0]=1;i[a+3>>0]=d;i[a+4>>0]=d<<24>>24==0&1;j[a+10>>1]=j[c+28>>1]|0;j[a+12>>1]=j[c+30>>1]|0;f=5}else{k[e>>2]=54521;k[e+4>>2]=10788;gd(11,13600,e);b=11}if((f|0)==5){i[a+8>>0]=i[c+21>>0]|0;b=0}r=g;return b|0}function Xo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;l=k[a+200>>2]|0;h=a+152|0;j=k[h>>2]|0;m=a+148|0;g=k[m>>2]|0;j=j>>>0>g>>>0?g:j;e=k[a+96>>2]|0;if((e|0)>0){d=k[a+92>>2]|0;c=a+72|0;f=0;do{b=d+(f*48|0)+8|0;n=b;if((k[n>>2]|0)==0&(k[n+4>>2]|0)==0){o=c;n=k[o+4>>2]|0;k[b>>2]=k[o>>2];k[b+4>>2]=n}f=f+1|0}while((f|0)<(e|0));f=c}else f=a+72|0;c=f;d=k[c>>2]|0;c=k[c+4>>2]|0;if((d|0)==0&(c|0)==0){d=0;c=0}else{d=ow(d|0,c|0,-1,-1)|0;d=vw(d|0,L|0,g|0,0)|0;d=ow(d|0,L|0,1,0)|0;d=xw(d|0,L|0,g|0,0)|0;c=L}g=f;k[g>>2]=d;k[g+4>>2]=c;g=a+80|0;k[g>>2]=d;k[g+4>>2]=c;if(((i[a+7>>0]|0)==0?(i[a+5>>0]|0)!=4:0)?(g=k[a+60>>2]|0,((qc[k[(k[g>>2]|0)+48>>2]&127](g)|0)&512|0)==0):0){d=l+0|0;c=d+12|0;do{i[d>>0]=0;d=d+1|0}while((d|0)<(c|0))}else{g=l;e=g;i[e>>0]=-117058087;i[e+1>>0]=-117058087>>8;i[e+2>>0]=-117058087>>16;i[e+3>>0]=-117058087>>24;g=g+4|0;i[g>>0]=-681336544;i[g+1>>0]=-681336544>>8;i[g+2>>0]=-681336544>>16;i[g+3>>0]=-681336544>>24;g=l+8|0;i[g>>0]=-1;i[g+1>>0]=-1>>8;i[g+2>>0]=-1>>16;i[g+3>>0]=-1>>24}c=a+48|0;hd(4,c);c=k[c>>2]|0;i[l+12>>0]=c>>>24;i[l+13>>0]=c>>>16;i[l+14>>0]=c>>>8;i[l+15>>0]=c;c=k[a+28>>2]|0;i[l+16>>0]=c>>>24;i[l+17>>0]=c>>>16;i[l+18>>0]=c>>>8;i[l+19>>0]=c;c=k[m>>2]|0;i[l+20>>0]=c>>>24;i[l+21>>0]=c>>>16;i[l+22>>0]=c>>>8;i[l+23>>0]=c;c=k[h>>2]|0;i[l+24>>0]=c>>>24;i[l+25>>0]=c>>>16;i[l+26>>0]=c>>>8;i[l+27>>0]=c;kw(l+28|0,0,j+-28|0)|0;c=a+64|0;d=0;while(1){if(d>>>0>=(k[m>>2]|0)>>>0){b=0;break}h=k[c>>2]|0;b=f;b=yc[k[(k[h>>2]|0)+12>>2]&31](h,l,j,k[b>>2]|0,k[b+4>>2]|0)|0;h=f;h=ow(k[h>>2]|0,k[h+4>>2]|0,j|0,0)|0;a=f;k[a>>2]=h;k[a+4>>2]=L;if(!b)d=d+j|0;else break}return b|0}function Yo(a){a=a|0;var b=0,c=0,d=0;b=a+24|0;d=m[b>>1]|0;c=d&65503;j[b>>1]=c;if(!(d&2)){j[b>>1]=c|2;Vo(a,2)}return}function Zo(a){a=a|0;var b=0,c=0,d=0;b=k[a+16>>2]|0;c=k[a+20>>2]|0;d=k[b+96>>2]|0;a:do if((d|0)>0){b=k[b+92>>2]|0;a=0;while(1){if((k[b+(a*48|0)+20>>2]|0)>>>0>=c>>>0?(ii(k[b+(a*48|0)+16>>2]|0,c)|0)==0:0){a=1;break a}a=a+1|0;if((a|0)>=(d|0)){a=0;break}}}else a=0;while(0);return a|0}function _o(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;if((r|0)>=(s|0))ka();j=o;m=k[a+16>>2]|0;c=i[m+5>>0]|0;a:do if(c<<24>>24!=2){l=m+68|0;d=k[l>>2]|0;do if(!(k[d>>2]|0)){if(c<<24>>24!=4?(i[m+21>>0]|0)==0:0){b=k[m>>2]|0;b=yc[k[b+24>>2]&31](b,0,d,8222,0)|0;if(!b)break;else break a}c=d+0|0;b=c+40|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(b|0));k[d>>2]=14696}while(0);d=k[a+4>>2]|0;h=m+52|0;e=m+152|0;f=(k[e>>2]|0)+4|0;f=xw(f|0,((f|0)<0)<<31>>31|0,k[h>>2]|0,0)|0;g=L;b=k[l>>2]|0;c=a+20|0;a=k[c>>2]|0;i[j>>0]=a>>>24;i[j+1>>0]=a>>>16;i[j+2>>0]=a>>>8;i[j+3>>0]=a;b=yc[k[(k[b>>2]|0)+12>>2]&31](b,j,4,f,g)|0;if(!b){j=k[l>>2]|0;l=k[e>>2]|0;b=ow(f|0,g|0,4,0)|0;b=yc[k[(k[j>>2]|0)+12>>2]&31](j,d,l,b,L)|0;if(!b){b=h;n=10}}}else{c=a+20|0;b=m+52|0;n=10}while(0);if((n|0)==10){k[b>>2]=(k[b>>2]|0)+1;b=ol(m,k[c>>2]|0)|0}r=o;return b|0}function $o(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=r;r=r+48|0;if((r|0)>=(s|0))ka();f=g;c=(a|0)!=0;a:do if(c&(b|0)!=0){c=f;while(1){e=k[b+20>>2]|0;d=a;a=c;while(1){a=a+12|0;if((k[d+20>>2]|0)>>>0>=e>>>0)break;k[a>>2]=d;a=k[d+12>>2]|0;if(!a){c=b;a=d;d=8;break a}else{c=d;d=a;a=c}}k[a>>2]=b;e=k[b+12>>2]|0;c=(d|0)!=0;if(c&(e|0)!=0){c=b;a=d;b=e}else{a=d;d=6;break}}}else{e=b;b=f;d=6}while(0);if((d|0)==6)if(c)k[b+12>>2]=a;else{c=e;a=b;d=8}do if((d|0)==8){a=a+12|0;if(!c){k[a>>2]=0;break}else{k[a>>2]=c;break}}while(0);r=g;return k[f+12>>2]|0}function ap(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=k[k[a+32>>2]>>2]|0;h=a+84|0;g=a+104|0;k[g>>2]=(k[g>>2]|0)+1;k[a+68>>2]=0;g=h+1|0;f=h+2|0;d=h+3|0;e=((l[g>>0]|0)<<16|(l[h>>0]|0)<<24|(l[f>>0]|0)<<8|(l[d>>0]|0))+1|0;i[h>>0]=e>>>24;i[g>>0]=e>>>16;i[f>>0]=e>>>8;i[d>>0]=e;k[a+88>>2]=b;ep(a);k[c+96>>2]=0;k[c+104>>2]=0;k[c+108>>2]=-1;k[c+112>>2]=-1;k[c+116>>2]=-1;return}function bp(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,j=0,m=0,n=0,o=0;g=r;r=r+32|0;if((r|0)>=(s|0))ka();h=g;f=k[b+4>>2]|0;j=k[a>>2]|0;m=k[b+20>>2]|0;b=j+76|0;i[h>>0]=m>>>24;i[h+1>>0]=m>>>16;i[h+2>>0]=m>>>8;i[h+3>>0]=m;i[h+4>>0]=c>>>24;i[h+5>>0]=c>>>16;i[h+6>>0]=c>>>8;i[h+7>>0]=c;m=j+84|0;o=m;o=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+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;c=h+8|0;n=c;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;c=c+4|0;i[c>>0]=m;i[c+1>>0]=m>>8;i[c+2>>0]=m>>16;i[c+3>>0]=m>>24;c=(i[j+65>>0]|0)==0&1;Dq(c,h,8,b,b);Dq(c,f,k[j+36>>2]|0,b,b);c=k[b>>2]|0;i[h+16>>0]=c>>>24;i[h+17>>0]=c>>>16;i[h+18>>0]=c>>>8;i[h+19>>0]=c;c=k[j+80>>2]|0;i[h+20>>0]=c>>>24;i[h+21>>0]=c>>>16;i[h+22>>0]=c>>>8;i[h+23>>0]=c;c=Eq(a,h,24,d,e)|0;if(!c){m=k[a+20>>2]|0;c=ow(d|0,e|0,24,0)|0;c=Eq(a,f,m,c,L)|0}r=g;return c|0}function cp(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=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h+8|0;f=h;e=k[3164]|0;if(e)sc[e&3]();d=a+8|0;e=k[d>>2]|0;e=wc[k[(k[e>>2]|0)+24>>2]&127](e,f)|0;i=k[f+4>>2]|0;if((e|0)==0&((i|0)>(c|0)|((i|0)==(c|0)?(k[f>>2]|0)>>>0>b>>>0:0))){e=k[d>>2]|0;e=fc[k[(k[e>>2]|0)+16>>2]&63](e,b,c)|0}d=k[3166]|0;if(d)sc[d&3]();if(e){k[g>>2]=k[a+100>>2];gd(e,14816,g)}r=h;return}function dp(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,l=0;l=r;r=r+32|0;if((r|0)>=(s|0))ka();g=l;e=l+16|0;i=l+12|0;h=l+8|0;k[e>>2]=0;k[i>>2]=0;k[h>>2]=0;d=Uo(a,(b+33|0)>>>12,h,i,e)|0;a:do if(!d){f=b-(k[e>>2]|0)|0;if((f|0)==1){d=k[i>>2]|0;b=d+4|0;kw(b|0,0,(k[h>>2]|0)+16384-b|0)|0}else d=k[i>>2]|0;if(k[d+(f<<2)>>2]|0)Fq(a);d=c*383&8191;b:do if(j[(k[h>>2]|0)+(d<<1)>>1]|0){b=k[h>>2]|0;e=f;while(1){if(!e)break;d=d+1&8191;if(!(j[b+(d<<1)>>1]|0))break b;else e=e+-1|0}k[g>>2]=49852;k[g+4>>2]=10788;gd(11,13600,g);d=11;break a}while(0);k[(k[i>>2]|0)+(f<<2)>>2]=c;j[(k[h>>2]|0)+(d<<1)>>1]=f;d=0}while(0);r=l;return d|0}function ep(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=k[k[a+32>>2]>>2]|0;j=a+52|0;i[a+64>>0]=1;k[j>>2]=3007e3;g=a+92|0;e=3007e3;f=j;d=0;b=0;while(1){d=d+b+e|0;c=f+8|0;b=d+b+(k[f+4>>2]|0)|0;if(c>>>0>=g>>>0)break;e=k[c>>2]|0;f=c}k[g>>2]=d;k[a+96>>2]=b;b=h+48|0;c=j+0|0;d=b+48|0;do{i[b>>0]=i[c>>0]|0;b=b+1|0;c=c+1|0}while((b|0)<(d|0));if((i[a+43>>0]|0)!=2){b=k[a+4>>2]|0;hc[k[(k[b>>2]|0)+60>>2]&31](b)}b=h+0|0;c=j+0|0;d=b+48|0;do{i[b>>0]=i[c>>0]|0;b=b+1|0;c=c+1|0}while((b|0)<(d|0));return}function fp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(a)do{d=a+28|0;f=k[d>>2]|0;if(((f>>>0<7?(30>>>(f&127)&1)==0:0)?(k[a+16>>2]|0)>>>0>b>>>0:0)?(e=Fg(a,b,c,1)|0,(e|0)!=0):0)k[d>>2]=e;a=k[a+44>>2]|0}while((a|0)!=0);return}function gp(a){a=a|0;var b=0,c=0,d=0;a:do if(!(k[a+208>>2]|0)){c=a+176|0;d=a+180|0;while(1){b=kl(a,4)|0;if((b|0)!=5)break a;if(!(qc[k[c>>2]&127](k[d>>2]|0)|0)){b=5;break}}}else b=0;while(0);return b|0}function hp(a){a=a|0;var b=0,c=0,d=0,e=0;d=a+96|0;if((k[d>>2]|0)>0){b=a+92|0;c=0;do{ji(k[(k[b>>2]|0)+(c*48|0)+16>>2]|0);c=c+1|0}while((c|0)<(k[d>>2]|0))}c=k[a+68>>2]|0;b=k[c>>2]|0;if(!(i[a+4>>0]|0)){if(b)e=7}else if((b|0)==14696){b=14696;e=7}if((e|0)==7){qc[k[b+4>>2]&127](c)|0;k[c>>2]=0}b=a+92|0;$c(k[b>>2]|0);k[b>>2]=0;k[d>>2]=0;k[a+52>>2]=0;return}function ip(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=a+40|0;if(k[e>>2]|0){c=k[a>>2]|0;if(c)do{d=c;c=k[c+32>>2]|0;if((k[d+20>>2]|0)>>>0>b>>>0)Cl(d)}while((c|0)!=0);if(!b){b=k[a+44>>2]|0;if(!b)b=0;else{kw(k[b+4>>2]|0,0,k[a+20>>2]|0)|0;b=1}}oc[k[8744+144>>2]&15](k[e>>2]|0,b+1|0)}return}function jp(a,b){a=a|0;b=b|0;var c=0,d=0;do if(!b){c=a+43|0;if(!(i[c>>0]|0))c=0;else{i[c>>0]=0;d=k[a+4>>2]|0;if(!(uc[k[(k[d>>2]|0)+56>>2]&31](d,(j[a+40>>1]|0)+3|0,1,6)|0))c=(i[c>>0]|0)==0;else{i[c>>0]=1;c=0}c=c&1}}else{c=a+43|0;d=(i[c>>0]|0)==0;if((b|0)<=0){c=d&1;break}if(d){d=k[a+4>>2]|0;uc[k[(k[d>>2]|0)+56>>2]&31](d,(j[a+40>>1]|0)+3|0,1,5)|0}i[c>>0]=1;c=1}while(0);return c|0}function kp(a){a=a|0;var b=0,c=0,d=0,e=0;c=a+73|0;if((i[c>>0]|0)==2)i[c>>0]=1;else k[a+68>>2]=0;b=a+48|0;pm(a,b);do if(!(i[(k[a+120>>2]|0)+2>>0]|0)){d=b;d=vg(k[d>>2]|0,k[d+4>>2]|0)|0;if(d){b=Qm(a,0,k[b>>2]|0,d,0)|0;if(!b){k[a+56>>2]=d;e=9;break}else{$c(d);break}}else b=7}else e=9;while(0);if((e|0)==9){lp(a);i[c>>0]=3;b=0}c=a+72|0;i[c>>0]=l[c>>0]&251;return b|0}function lp(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+76|0;if((j[b>>1]|0)>=0){e=0;while(1){c=a+(e<<2)+120|0;d=k[c>>2]|0;if(d)Gg(k[d+68>>2]|0);k[c>>2]=0;if((e|0)<(j[b>>1]|0))e=e+1|0;else break}}j[b>>1]=-1;return}function mp(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;m=r;r=r+16|0;if((r|0)>=(s|0))ka();j=m;f=m+8|0;if(b>>>0<2)h=0;else{h=b+-2|0;h=h-((h>>>0)%(((((k[a+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;h=((h+1|0)==(((k[2514]|0)>>>0)/((k[a+32>>2]|0)>>>0)|0|0)?3:2)+h|0}e=Eg(k[a>>2]|0,h,f,0)|0;do if(!e){f=k[f>>2]|0;g=k[f+4>>2]|0;e=(b-h|0)*5|0;a=e+-5|0;if((a|0)<0){if(f)Gg(f);k[j>>2]=53912;k[j+4>>2]=10788;gd(11,13600,j);e=11;break}i[c>>0]=i[g+a>>0]|0;if(d)k[d>>2]=(l[g+(e+-3)>>0]|0)<<16|(l[g+(e+-4)>>0]|0)<<24|(l[g+(e+-2)>>0]|0)<<8|(l[g+(e+-1)>>0]|0);if(f)Gg(f);if(((i[c>>0]|0)+-1&255)>4){k[j>>2]=53920;k[j+4>>2]=10788;gd(11,13600,j);e=11}else e=0}while(0);r=m;return e|0}function np(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,o=0,p=0,q=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;K=r;r=r+32|0;if((r|0)>=(s|0))ka();J=K;I=K+16|0;n=K+20|0;H=K+12|0;o=K+8|0;k[I>>2]=0;q=a+12|0;m=k[q>>2]|0;p=a+44|0;F=k[p>>2]|0;G=m+56|0;h=k[G>>2]|0;h=l[h+37>>0]<<16|l[h+36>>0]<<24|l[h+38>>0]<<8|l[h+39>>0];do if(h>>>0>>0){if(!h){e=(i[a+19>>0]|0)==0&1;m=Lg(k[m+68>>2]|0)|0;if(m){f=m;break}n=k[p>>2]|0;h=n+1|0;k[p>>2]=h;g=a+32|0;m=k[g>>2]|0;if((n|0)==(((k[2514]|0)>>>0)/(m>>>0)|0|0)){h=n+2|0;k[p>>2]=h}if(i[a+17>>0]|0){if(h>>>0<2)n=0;else{n=h+-2|0;n=n-((n>>>0)%(((((k[a+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;n=((n+1|0)==(((k[2514]|0)>>>0)/(m>>>0)|0|0)?3:2)+n|0}if((n|0)==(h|0)){k[o>>2]=0;n=il(a,h,o,e)|0;if(n){f=n;break}F=k[o>>2]|0;n=F+68|0;m=Lg(k[n>>2]|0)|0;if(F)Gg(k[n>>2]|0);if(m){f=m;break}n=k[p>>2]|0;h=n+1|0;k[p>>2]=h;if((n|0)==(((k[2514]|0)>>>0)/((k[g>>2]|0)>>>0)|0|0)){h=n+2|0;k[p>>2]=h}}}g=k[(k[q>>2]|0)+56>>2]|0;i[g+28>>0]=h>>>24;i[g+29>>0]=h>>>16;i[g+30>>0]=h>>>8;i[g+31>>0]=h;g=k[p>>2]|0;k[c>>2]=g;g=il(a,g,b,e)|0;if(g){f=g;break}g=Lg(k[(k[b>>2]|0)+68>>2]|0)|0;if(g){f=k[b>>2]|0;if(!f){f=g;A=98}else{Gg(k[f+68>>2]|0);f=g;A=92}}}else{if(e<<24>>24==2)n=1;else if(e<<24>>24==1?F>>>0>=d>>>0:0){f=mp(a,d,n,0)|0;if(f)break;n=(i[n>>0]|0)==2&1}else n=0;f=Lg(k[m+68>>2]|0)|0;if(f)break;C=k[G>>2]|0;D=h+-1|0;i[C+36>>0]=D>>>24;i[C+37>>0]=D>>>16;i[C+38>>0]=D>>>8;i[C+39>>0]=D;C=a+36|0;D=(d|0)==0;E=a+60|0;B=e<<24>>24==2;g=0;a:while(1){t=(g|0)!=0;if(t){q=k[g+56>>2]|0;q=l[q+1>>0]<<16|l[q>>0]<<24|l[q+2>>0]<<8|l[q+3>>0]}else{q=k[G>>2]|0;q=l[q+33>>0]<<16|l[q+32>>0]<<24|l[q+34>>0]<<8|l[q+35>>0]}if(q>>>0>F>>>0){A=15;break}f=il(a,q,I,0)|0;if(f){A=17;break}h=k[I>>2]|0;u=h+56|0;y=k[u>>2]|0;z=y+4|0;v=y+5|0;w=y+6|0;x=y+7|0;A=l[v>>0]<<16|l[z>>0]<<24|l[w>>0]<<8|l[x>>0];o=n<<24>>24!=0;do if((A|0)!=0|o){if(A>>>0>(((k[C>>2]|0)>>>2)+-2|0)>>>0){f=h;A=22;break a}if(n<<24>>24!=0?(q|0)==(d|0)|q>>>0>>0&B:0){k[c>>2]=q;k[b>>2]=h;f=Lg(k[h+68>>2]|0)|0;if(f){A=88;break a}do if(!A){if(!t){A=(k[G>>2]|0)+32|0;z=k[u>>2]|0;z=l[z>>0]|l[z+1>>0]<<8|l[z+2>>0]<<16|l[z+3>>0]<<24;i[A>>0]=z;i[A+1>>0]=z>>8;i[A+2>>0]=z>>16;i[A+3>>0]=z>>24;break}f=Lg(k[g+68>>2]|0)|0;if(f){A=88;break a}A=k[g+56>>2]|0;z=k[u>>2]|0;z=l[z>>0]|l[z+1>>0]<<8|l[z+2>>0]<<16|l[z+3>>0]<<24;i[A>>0]=z;i[A+1>>0]=z>>8;i[A+2>>0]=z>>16;i[A+3>>0]=z>>24}else{q=k[u>>2]|0;o=i[q+8>>0]|0;e=i[q+9>>0]|0;p=i[q+10>>0]|0;q=i[q+11>>0]|0;n=(e&255)<<16|(o&255)<<24|(p&255)<<8|q&255;if(n>>>0>F>>>0){f=h;A=32;break a}f=il(a,n,H,0)|0;if(f){A=88;break a}n=k[H>>2]|0;m=n+68|0;f=Lg(k[m>>2]|0)|0;if(f){A=35;break a}z=n+56|0;y=k[z>>2]|0;x=k[u>>2]|0;x=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;i[y>>0]=x;i[y+1>>0]=x>>8;i[y+2>>0]=x>>16;i[y+3>>0]=x>>24;y=k[z>>2]|0;A=A+-1|0;i[y+4>>0]=A>>>24;i[y+5>>0]=A>>>16;i[y+6>>0]=A>>>8;i[y+7>>0]=A;pw((k[z>>2]|0)+8|0,(k[u>>2]|0)+12|0,A<<2|0)|0;if(n)Gg(k[m>>2]|0);if(!t){A=k[G>>2]|0;i[A+32>>0]=o;i[A+33>>0]=e;i[A+34>>0]=p;i[A+35>>0]=q;break}f=Lg(k[g+68>>2]|0)|0;if(f){A=88;break a}A=k[g+56>>2]|0;i[A>>0]=o;i[A+1>>0]=e;i[A+2>>0]=p;i[A+3>>0]=q}while(0);k[I>>2]=0;h=0;f=0;n=0;break}if(A){b:do if(!D){if(B){e=0;while(1){u=e<<2;if((l[y+(u+9)>>0]<<16|l[y+(u+8)>>0]<<24|l[y+(u+10)>>0]<<8|l[y+(u+11)>>0])>>>0<=d>>>0)break b;e=e+1|0;if(e>>>0>=A>>>0){e=0;break b}}}m=(l[y+9>>0]<<16|l[y+8>>0]<<24|l[y+10>>0]<<8|l[y+11>>0])-d|0;if((m|0)<=-1)m=(m|0)==-2147483648?2147483647:0-m|0;if(A>>>0>1){e=0;p=1;while(1){f=p<<2;f=(l[y+(f+9)>>0]<<16|l[y+(f+8)>>0]<<24|l[y+(f+10)>>0]<<8|l[y+(f+11)>>0])-d|0;if((f|0)<=-1)f=(f|0)==-2147483648?2147483647:0-f|0;q=(f|0)<(m|0);e=q?p:e;p=p+1|0;if((p|0)==(A|0))break;else m=q?f:m}}else e=0}else e=0;while(0);m=e<<2;q=y+(m+8)|0;m=l[y+(m+9)>>0]<<16|l[q>>0]<<24|l[y+(m+10)>>0]<<8|l[y+(m+11)>>0];if(m>>>0>F>>>0){f=h;A=56;break a}if((m|0)==(d|0)|o^1|m>>>0>>0&B){k[c>>2]=m;f=Lg(k[h+68>>2]|0)|0;if(f){A=88;break a}n=A+-1|0;if(e>>>0>>0){A=y+((A<<2)+4)|0;A=l[A>>0]|l[A+1>>0]<<8|l[A+2>>0]<<16|l[A+3>>0]<<24;i[q>>0]=A;i[q+1>>0]=A>>8;i[q+2>>0]=A>>16;i[q+3>>0]=A>>24}i[z>>0]=n>>>24;i[v>>0]=n>>>16;i[w>>0]=n>>>8;i[x>>0]=n;m=k[c>>2]|0;n=k[E>>2]|0;do if(!n)n=0;else{if((k[n>>2]|0)>>>0>>0){n=1;break}n=(ii(n,m)|0)!=0}while(0);f=il(a,m,b,n&1^1)|0;if(f){n=0;break}f=Lg(k[(k[b>>2]|0)+68>>2]|0)|0;if(!f){f=0;n=0;break}n=k[b>>2]|0;if(!n){n=0;break}Gg(k[n+68>>2]|0);n=0}else f=0}else f=0}else{f=Lg(k[h+68>>2]|0)|0;if(f){A=89;break a}k[c>>2]=q;f=(k[G>>2]|0)+32|0;n=k[u>>2]|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[f>>0]=n;i[f+1>>0]=n>>8;i[f+2>>0]=n>>16;i[f+3>>0]=n>>24;k[b>>2]=h;k[I>>2]=0;h=0;f=0;n=0}while(0);if(g)Gg(k[g+68>>2]|0);if(!(n<<24>>24)){g=0;A=88;break}else g=h}if((A|0)==15){k[J>>2]=58314;k[J+4>>2]=10788;gd(11,13600,J);f=11;A=17}else if((A|0)==22){k[J>>2]=58343;k[J+4>>2]=10788;gd(11,13600,J);h=f;f=11;A=88}else if((A|0)==32){k[J>>2]=58377;k[J+4>>2]=10788;gd(11,13600,J);h=f;f=11;A=88}else if((A|0)==35)if(!n)A=88;else{Gg(k[m>>2]|0);A=88}else if((A|0)==56){k[J>>2]=58442;k[J+4>>2]=10788;gd(11,13600,J);h=f;f=11;A=88}if((A|0)==17)k[I>>2]=0;else if((A|0)==88)if(h)A=89;if((A|0)==89)Gg(k[h+68>>2]|0);if(!g)A=92;else{Gg(k[g+68>>2]|0);A=92}}if((A|0)==92?(f|0)!=0:0)A=98;if((A|0)==98){k[b>>2]=0;break}f=k[b>>2]|0;g=k[f+68>>2]|0;if((j[g+26>>1]|0)<=1){i[f>>0]=0;f=0;break}if(f)Gg(g);k[b>>2]=0;k[J>>2]=58541;k[J+4>>2]=10788;gd(11,13600,J);f=11}else{k[J>>2]=58259;k[J+4>>2]=10788;gd(11,13600,J);f=11}while(0);r=K;return f|0}function op(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,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+16|0;if((r|0)>=(s|0))ka();t=y+12|0;q=y+8|0;x=y;d=k[a+40>>2]|0;a:do if(!d){f=a+96|0;e=k[f>>2]|0;if((e|0)>(c|0)){d=(b|0)==1;c=(d&1^1)+c|0;if((c|0)<(e|0)){b=a+92|0;e=c;do{ji(k[(k[b>>2]|0)+(e*48|0)+16>>2]|0);e=e+1|0}while((e|0)<(k[f>>2]|0))}k[f>>2]=c;if(d){if(c){d=0;break}d=k[a+68>>2]|0;e=k[d>>2]|0;if(!e){d=0;break}if((e|0)==14696)d=Li(d,0,0)|0;else d=0;k[a+52>>2]=0;break}p=a+208|0;if((k[p>>2]|0)==0?(k[k[a+64>>2]>>2]|0)==0:0){d=0;break}if(!c)u=0;else u=(k[a+92>>2]|0)+((c+-1|0)*48|0)|0;o=(u|0)!=0;d=u+20|0;if(o){b=k[d>>2]|0;e=vg(512,0)|0;if(!e){d=7;break}kw(e|0,0,512)|0;k[e>>2]=b;w=e}else w=0;f=a+28|0;c=a+24|0;k[c>>2]=k[(o?d:f)>>2];i[a+18>>0]=i[a+12>>0]|0;b:do if(o){f=a+72|0;c=f;g=k[c>>2]|0;c=k[c+4>>2]|0;if(!(k[p>>2]|0)){e=u+8|0;h=k[e>>2]|0;e=k[e+4>>2]|0;b=(h|0)==0&(e|0)==0;h=b?g:h;e=b?c:e;b=u;d=k[b>>2]|0;b=k[b+4>>2]|0;m=f;k[m>>2]=d;k[m+4>>2]=b;if((b|0)<(e|0)|(b|0)==(e|0)&d>>>0>>0)while(1){d=Bq(a,f,w,1,1)|0;if(d){l=g;j=c;break b}b=f;d=k[b>>2]|0;b=k[b+4>>2]|0;if(!((b|0)<(e|0)|(b|0)==(e|0)&d>>>0>>0)){v=39;break}}else v=39}else v=38}else{n=k[p>>2]|0;if(!n){f=a+72|0;c=f;g=k[c>>2]|0;c=k[c+4>>2]|0;v=38;break}k[c>>2]=k[f>>2];if(i[n+44>>0]|0){g=n+68|0;j=k[g>>2]|0;h=n+32|0;c=k[h>>2]|0;e=n+52|0;d=(k[c>>2]|0)+0|0;b=e+48|0;do{i[e>>0]=i[d>>0]|0;e=e+1|0;d=d+1|0}while((e|0)<(b|0));e=k[g>>2]|0;d=e+1|0;if(d>>>0>j>>>0)d=0;else{f=d;while(1){e=e+34|0;d=e>>>12;if(!d)e=(k[c>>2]|0)+(e<<2)|0;else e=(k[c+(d<<2)>>2]|0)+((e&4095)<<2)|0;d=Gq(a,k[e>>2]|0)|0;e=f+1|0;if((d|0)!=0|e>>>0>j>>>0)break;m=f;c=k[h>>2]|0;f=e;e=m}e=k[g>>2]|0}if((j|0)!=(e|0))Fq(n)}else d=0;e=Al(k[a+204>>2]|0)|0;if(!((e|0)!=0&(d|0)==0))break a;while(1){d=e;e=k[e+12>>2]|0;d=Gq(a,k[d+20>>2]|0)|0;if(!((e|0)!=0&(d|0)==0))break a}}while(0);if((v|0)==38){b=f;k[b>>2]=0;k[b+4>>2]=0;b=0;d=0;v=39}c:do if((v|0)==39){l=a+80|0;m=a+148|0;n=a+152|0;if((b|0)<(c|0)|(b|0)==(c|0)&d>>>0>>0)while(1){k[t>>2]=0;d=Aq(a,0,g,c,t,q)|0;b=k[t>>2]|0;if(!b){b=l;b=ow(k[m>>2]|0,0,k[b>>2]|0,k[b+4>>2]|0)|0;e=L;j=f;if((b|0)==(k[j>>2]|0)?(e|0)==(k[j+4>>2]|0):0){v=iw(g|0,c|0,b|0,e|0)|0;b=(k[n>>2]|0)+8|0;b=vw(v|0,L|0,b|0,((b|0)<0)<<31>>31|0)|0;k[t>>2]=b;v=46}else v=40}else v=46;d:do if((v|0)==46){v=0;if((d|0)==0&(b|0)!=0){j=0;while(1){e=f;h=k[e>>2]|0;e=k[e+4>>2]|0;if(!((e|0)<(c|0)|(e|0)==(c|0)&h>>>0>>0)){b=h;break d}d=Bq(a,f,w,1,1)|0;j=j+1|0;if(!((d|0)==0&j>>>0>>0)){v=40;break}}}else v=40}while(0);if((v|0)==40){v=0;if(d){l=g;j=c;break c}b=f;e=k[b+4>>2]|0;b=k[b>>2]|0}if(!((e|0)<(c|0)|(e|0)==(c|0)&b>>>0>>0)){l=g;j=c;d=0;break}}else{l=g;j=c;d=0}}while(0);e:do if(!o){ji(w);if(d)break a}else{h=u+24|0;e=k[h>>2]|0;m=(k[a+152>>2]|0)+4|0;m=xw(m|0,((m|0)<0)<<31>>31|0,e|0,0)|0;g=x;k[g>>2]=m;k[g+4>>2]=L;g=k[p>>2]|0;if(!g){if(!d)v=57}else{c=u+28|0;b=u+40|0;d=g+104|0;if((k[b>>2]|0)==(k[d>>2]|0))b=k[c>>2]|0;else{k[c>>2]=0;k[b>>2]=k[d>>2];b=0}c=g+68|0;if(b>>>0<(k[c>>2]|0)>>>0){k[c>>2]=b;k[g+76>>2]=k[u+32>>2];k[g+80>>2]=k[u+36>>2];Fq(g);e=k[h>>2]|0;v=57}else v=57}f:do if((v|0)==57){b=a+52|0;while(1){if(e>>>0>=(k[b>>2]|0)>>>0)break;d=Bq(a,x,w,0,1)|0;if(!d)e=e+1|0;else break f}ji(w);break e}while(0);ji(w);break a}while(0);d=f;k[d>>2]=l;k[d+4>>2]=j;d=0}else d=0}while(0);r=y;return d|0}function pp(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){f=k[a+4>>2]|0;k[(k[b+4>>2]|0)+4>>2]=k[b>>2];d=a+56|0;$c(k[d>>2]|0);k[d>>2]=0;i[a+73>>0]=0;d=k[a+12>>2]|0;c=a+8|0;b=k[c>>2]|0;if(!d)k[f+8>>2]=b;else{k[d+8>>2]=b;b=k[c>>2]|0}if(b)k[b+12>>2]=d;e=a+76|0;b=j[e>>1]|0;if(b<<16>>16>=0){c=0;while(1){d=k[a+(c<<2)+120>>2]|0;if(d){Gg(k[d+68>>2]|0);b=j[e>>1]|0}if((c|0)<(b<<16>>16|0))c=c+1|0;else break}}if((i[f+20>>0]|0)==0?(g=f+12|0,h=k[g>>2]|0,(h|0)!=0):0){k[g>>2]=0;Gg(k[h+68>>2]|0)}$c(k[a+20>>2]|0)}return}function qp(a){a=a|0;var b=0,c=0,d=0,e=0;e=k[a+200>>2]|0;b=k[3164]|0;if(b)sc[b&3]();c=k[a+136>>2]|0;if(c)do{b=c;c=k[c+12>>2]|0;$c(b)}while((c|0)!=0);i[a+4>>0]=0;b=a+208|0;wn(k[b>>2]|0,l[a+9>>0]|0,k[a+152>>2]|0,e)|0;k[b>>2]=0;Cn(a);if(!(i[a+15>>0]|0)){if((k[k[a+64>>2]>>2]|0)!=0?(d=Oo(a)|0,b=d&255,(b|0)==10|(b|0)==13):0){k[a+40>>2]=d;i[a+16>>0]=6}sl(a)}else So(a);b=k[3166]|0;if(b)sc[b&3]();b=k[a+64>>2]|0;c=k[b>>2]|0;if(c){qc[k[c+4>>2]&127](b)|0;k[b>>2]=0}c=k[a+60>>2]|0;b=k[c>>2]|0;if(b){qc[k[b+4>>2]&127](c)|0;k[c>>2]=0}el(e);hc[k[8744+148>>2]&31](k[(k[a+204>>2]|0)+40>>2]|0);$c(a);return}function rp(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;f=k[a+4>>2]|0;g=vg(f,((f|0)<0)<<31>>31)|0;do if(g){kw(g|0,0,f|0)|0;f=yc[k[a+24>>2]&31](a,b,g,d&556927,e)|0;if(!f){k[c>>2]=g;f=0;break}else{$c(g);break}}else f=7;while(0);return f|0}function sp(a){a=a|0;var b=0,c=0,d=0;b=a+16|0;c=a+12|0;d=a+10|0;if(!(Yl(k[b>>2]|0,a,k[c>>2]|0,i[d>>0]|0)|0))b=0;else{b=(Zl(k[b>>2]|0,a,k[c>>2]|0,i[d>>0]|0)|0)==0;b=b?4:8}return b|0}function tp(a){a=a|0;var b=0,c=0,d=0.0;c=a+8|0;b=j[c>>1]|0;do if(!(b&13))if(!(Zl(k[a+16>>2]|0,a,k[a+12>>2]|0,i[a+10>>0]|0)|0)){b=((m[c>>1]|0)&48640|4)&65535;j[c>>1]=b;break}else{d=+Zg(a);p[a>>3]=d;j[c>>1]=(m[c>>1]|0)&48640|8;im(a);b=j[c>>1]|0;break}while(0);j[c>>1]=b&65517;return}function up(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,t=0;t=r;r=r+80|0;if((r|0)>=(s|0))ka();p=t+40|0;q=t;e=c+4|0;if((i[a+10>>0]|0)!=(i[e>>0]|0)){o=k[a+32>>2]|0;l=p+8|0;j[l>>1]=1;k[p+32>>2]=o;m=p+24|0;k[m>>2]=0;n=q+8|0;j[n>>1]=1;k[q+32>>2]=o;o=q+24|0;k[o>>2]=0;cm(p,a,4096);cm(q,b,4096);a=Xg(p,i[e>>0]|0)|0;h=(a|0)==0;if(h)g=0;else g=k[p+12>>2]|0;e=Xg(q,i[e>>0]|0)|0;f=(e|0)==0;if(f)b=0;else b=k[q+12>>2]|0;a=yc[k[c+12>>2]&31](k[c+8>>2]|0,g,a,b,e)|0;if(!((j[l>>1]&9312)==0&(k[m>>2]|0)==0))Vg(p);if(!((j[n>>1]&9312)==0&(k[o>>2]|0)==0))Vg(q);if((h|f)&(d|0)!=0)i[d>>0]=7}else a=yc[k[c+12>>2]&31](k[c+8>>2]|0,k[a+12>>2]|0,k[a+16>>2]|0,k[b+12>>2]|0,k[b+16>>2]|0)|0;r=t;return a|0}function vp(a,b){a=a|0;b=b|0;var c=0,d=0;d=k[a+12>>2]|0;c=k[b+12>>2]|0;a=cw(k[a+16>>2]|0,k[b+16>>2]|0,(d|0)>(c|0)?c:d)|0;return ((a|0)==0?d-c|0:a)|0}function wp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h;do if(!(i[a+3>>0]|0)){if(i[a+4>>0]|0){e=((xp(b+4|0,c)|0)&255)+4&65535;j[c+20>>1]=e;e=c+8|0;k[e+0>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;break}f=l[a+7>>0]|0;e=b+f|0;d=i[e>>0]|0;if(d<<24>>24>-1){e=d&255;k[g>>2]=e;d=1}else{d=rm(e,g)|0;e=k[g>>2]|0}g=c;k[g>>2]=e;k[g+4>>2]=0;f=(d&255)+f|0;d=12}else{d=i[b>>0]|0;if(d<<24>>24>-1){e=d&255;k[g>>2]=e;d=1}else{d=rm(b,g)|0;e=k[g>>2]|0}f=d&255;f=((xp(b+f|0,c)|0)&255)+f|0;d=12}while(0);do if((d|0)==12){k[c+12>>2]=e;k[c+8>>2]=b+f;d=m[a+10>>1]|0;if(e>>>0>d>>>0){g=j[a+12>>1]|0;b=g&65535;e=(((e-b|0)>>>0)%(((k[(k[a+52>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+b|0;d=(e|0)>(d|0)?g:e&65535;j[c+16>>1]=d;d=f+(d&65535)|0;j[c+18>>1]=d;j[c+20>>1]=d+4;break}else{d=e+f|0;j[c+20>>1]=(d&65532)>>>0<4?4:d&65535;j[c+16>>1]=e;j[c+18>>1]=0;break}}while(0);r=h;return}function xp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=i[a>>0]|0;d=c&255;do if(d&128){c=l[a+1>>0]|0;if(!(c&128)){e=b;k[e>>2]=c|d<<7&16256;k[e+4>>2]=0;c=2;break}e=l[a+2>>0]|0;d=(e|d<<14)&2080895;if(!(e&128)){e=b;k[e>>2]=d|c<<7&16256;k[e+4>>2]=0;c=3;break}e=l[a+3>>0]|0;c=(e|c<<14)&2080895;if(!(e&128)){e=b;k[e>>2]=c|d<<7;k[e+4>>2]=0;c=4;break}h=l[a+4>>0]|0;e=h|d<<14;if(!(h&128)){f=b;k[f>>2]=e|c<<7;k[f+4>>2]=d>>>18;c=5;break}g=c|d<<7;d=l[a+5>>0]|0;f=d|c<<14;if(!(d&128)){c=b;k[c>>2]=f|e<<7&266354560;k[c+4>>2]=g>>>18;c=6;break}c=l[a+6>>0]|0;d=c|e<<14;if(!(c&128)){c=b;k[c>>2]=d&-266354561|f<<7&266354560;k[c+4>>2]=g>>>11;c=7;break}c=d&2080895;e=l[a+7>>0]|0;d=e|f<<14;if(!(e&128)){e=b;k[e>>2]=d&-266354561|c<<7;k[e+4>>2]=g>>>4;c=8;break}else{e=b;k[e>>2]=d<<8&532709120|c<<15|(l[a+8>>0]|0);k[e+4>>2]=h>>>3&15|g<<4;c=9;break}}else{d=b;k[d>>2]=c&255;k[d+4>>2]=0;c=1}while(0);return c|0}function yp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();e=g+8|0;f=g;d=(l[a+1>>0]|0)<<16|(l[a>>0]|0)<<24|(l[a+2>>0]|0)<<8|(l[a+3>>0]|0);a=(l[a+5>>0]|0)<<16|(l[a+4>>0]|0)<<24|(l[a+6>>0]|0)<<8|(l[a+7>>0]|0);h=c;k[h>>2]=a;k[h+4>>2]=d;if((b|0)==6)a=4;else{k[t>>2]=a;k[t+4>>2]=d;p[e>>3]=+p[t>>3];p[f>>3]=+p[e>>3];a=+p[e>>3]!=+p[f>>3]?1:8}j[c+8>>1]=a;r=g;return}function zp(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+16|0;if((r|0)>=(s|0))ka();f=g;if(!(c>>>0>16777215|(c|0)==16777215&b>>>0>4294967295)){d=b;e=0;while(1){b=e+1|0;i[f+e>>0]=d|128;d=rw(d|0,c|0,7)|0;c=L;if((d|0)==0&(c|0)==0){c=e;break}else e=b}i[f>>0]=(l[f>>0]|0)&127;if((c|0)>-1){d=0;while(1){i[a+d>>0]=i[f+c>>0]|0;if((c|0)>0){d=d+1|0;c=c+-1|0}else break}}}else{i[a+8>>0]=b;b=rw(b|0,c|0,8)|0;d=L;c=7;while(1){i[a+c>>0]=b|128;b=rw(b|0,d|0,7)|0;if((c|0)<=0){b=9;break}else{d=L;c=c+-1|0}}}r=g;return b|0}function Ap(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();f=g;if((k[a+44>>2]|0)>>>0>=b>>>0){d=il(a,b,c,d)|0;if(!d){d=k[c>>2]|0;if((i[d>>0]|0)==0?(e=eq(d)|0,(e|0)!=0):0){d=k[c>>2]|0;if(d)Gg(k[d+68>>2]|0)}else e=0}else e=d}else{k[f>>2]=54788;k[f+4>>2]=10788;gd(11,13600,f);e=11}r=g;return e|0}function Bp(a){a=a|0;var b=0,c=0,d=0;if((i[a+12>>0]|0)==0?(b=a+60|0,c=k[b>>2]|0,((qc[k[(k[c>>2]|0)+48>>2]&127](c)|0)&4096|0)==0):0){b=k[b>>2]|0;c=k[(k[b>>2]|0)+44>>2]|0;if(c){b=qc[c&127](b)|0;if((b|0)<32)b=512;else d=6}else{b=4096;d=6}if((d|0)==6)b=(b|0)>65536?65536:b;k[a+148>>2]=b}else k[a+148>>2]=512;return}function Cp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=a+40|0;do if(!(k[g>>2]|0)){f=i[a+20>>0]|0;if(f<<24>>24){if(f&3){c=0;break}if(j[b+24>>1]&4){c=0;break}}k[b+12>>2]=0;do if(!(k[a+208>>2]|0)){if(!((j[b+24>>1]&4)==0?(i[a+16>>0]|0)!=3:0))h=11;if((h|0)==11?(d=El(a,1)|0,(d|0)!=0):0){c=d;break}if(((k[b+20>>2]|0)>>>0>(k[a+24>>2]|0)>>>0?(Zo(b)|0)!=0:0)?(e=_o(b)|0,(e|0)!=0):0){c=e;break}c=Fl(a,b)|0;h=16}else{if((Zo(b)|0)!=0?(c=_o(b)|0,(c|0)!=0):0)break;c=Bl(a,b,0,0)|0;h=16}while(0);if((h|0)==16)if(!c){Cl(b);c=0;break}d=c&255;if((d|0)==10|(d|0)==13){k[g>>2]=c;i[a+16>>0]=6}}else c=0;while(0);return c|0}function Dp(a){a=a|0;var b=0;b=k[a+8>>2]|0;if((i[b>>0]|0)!=0?(i[b>>0]=0,(j[a+26>>1]|0)>1):0)eq(b)|0;return}function Ep(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,j=0,m=0;m=r;r=r+16|0;if((r|0)>=(s|0))ka();j=m;h=m+8|0;do if(!(k[e>>2]|0)){if(!b){k[j>>2]=53856;k[j+4>>2]=10788;gd(11,13600,j);k[e>>2]=11;break}if(b>>>0<2)f=0;else{f=b+-2|0;f=f-((f>>>0)%(((((k[a+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;f=((f+1|0)==(((k[2514]|0)>>>0)/((k[a+32>>2]|0)>>>0)|0|0)?3:2)+f|0}g=Eg(k[a>>2]|0,f,h,0)|0;if(g){k[e>>2]=g;break}b=(b-f|0)*5|0;g=b+-5|0;do if((g|0)>=0){f=k[h>>2]|0;a=k[f+4>>2]|0;g=a+g|0;if((i[g>>0]|0)==c<<24>>24?(l[a+(b+-3)>>0]<<16|l[a+(b+-4)>>0]<<24|l[a+(b+-2)>>0]<<8|l[a+(b+-1)>>0]|0)==(d|0):0)break;h=Lg(f)|0;k[e>>2]=h;if(!h){i[g>>0]=c;i[a+(b+-4)>>0]=d>>>24;i[a+(b+-3)>>0]=d>>>16;i[a+(b+-2)>>0]=d>>>8;i[a+(b+-1)>>0]=d}}else{k[j>>2]=53867;k[j+4>>2]=10788;gd(11,13600,j);k[e>>2]=11;f=k[h>>2]|0}while(0);if(f)Gg(f)}while(0);r=m;return}function Fp(a,b,c){a=a|0;b=b|0;c=c|0;return Pm(a,b,c,0)|0}function Gp(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;f=l[b>>0]&63;d=b+f|0;h=k[c+8>>2]|0;g=k[h>>2]|0;h=k[h+4>>2]|0;switch(l[b+1>>0]|0){case 5:{e=i[d>>0]<<8|l[b+(f+1)>>0];d=l[b+(f+3)>>0]<<16|l[b+(f+2)>>0]<<24|l[b+(f+4)>>0]<<8|l[b+(f+5)>>0];j=11;break}case 6:{e=l[b+(f+1)>>0]<<16|l[d>>0]<<24|l[b+(f+2)>>0]<<8|l[b+(f+3)>>0];d=l[b+(f+5)>>0]<<16|l[b+(f+4)>>0]<<24|l[b+(f+6)>>0]<<8|l[b+(f+7)>>0];j=11;break}case 9:{e=0;d=1;j=11;break}case 2:{d=i[d>>0]<<8|l[b+(f+1)>>0];e=((d|0)<0)<<31>>31;j=11;break}case 7:case 0:{d=Pm(a,b,c,0)|0;break}case 4:{d=l[b+(f+1)>>0]<<16|l[d>>0]<<24|l[b+(f+2)>>0]<<8|l[b+(f+3)>>0];e=((d|0)<0)<<31>>31;j=11;break}case 3:{d=l[b+(f+1)>>0]<<8|i[d>>0]<<16|l[b+(f+2)>>0];e=((d|0)<0)<<31>>31;j=11;break}case 8:{e=0;d=0;j=11;break}case 1:{d=i[d>>0]|0;e=((d|0)<0)<<31>>31;j=11;break}default:d=Pm(a,b,c,0)|0}do if((j|0)==11){if((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0){d=k[c+12>>2]|0;break}if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){d=k[c+16>>2]|0;break}if((m[c+4>>1]|0)>1){d=Pm(a,b,c,1)|0;break}else{d=i[c+6>>0]|0;break}}while(0);return d|0}function Hp(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+16|0;if((r|0)>=(s|0))ka();h=j;f=j+8|0;d=b+1|0;e=i[d>>0]|0;if(e<<24>>24>-1){d=e&255;k[f>>2]=d}else{rm(d,f)|0;d=k[f>>2]|0}do if((d|0)>=12){if(!(d&1)){d=k[c+16>>2]|0;break}f=l[b>>0]|0;g=(d+-12|0)/2|0;if((f+g|0)>(a|0)){k[h>>2]=68550;k[h+4>>2]=10788;gd(11,13600,h);i[c+7>>0]=11;d=0;break}d=k[c+8>>2]|0;e=k[d+12>>2]|0;d=cw(b+f|0,k[d+16>>2]|0,(g|0)>(e|0)?e:g)|0;if(d)if((d|0)>0){d=k[c+16>>2]|0;break}else{d=k[c+12>>2]|0;break}if((g|0)==(e|0))if((m[c+4>>1]|0)>1){d=Pm(a,b,c,1)|0;break}else{d=i[c+6>>0]|0;break}else if((g-e|0)>0){d=k[c+16>>2]|0;break}else{d=k[c+12>>2]|0;break}}else d=k[c+12>>2]|0;while(0);r=j;return d|0}function Ip(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0;h=a+73|0;c=i[h>>0]|0;do if(c<<24>>24!=1){if((c&255)>2){c=Pn(a)|0;if(c)break;c=i[h>>0]|0}if(!(c<<24>>24)){k[b>>2]=1;c=0;break}c=a+68|0;d=k[c>>2]|0;if((d|0)!=0?(i[h>>0]=1,k[c>>2]=0,(d|0)>0):0)c=0;else n=9}else n=9;while(0);do if((n|0)==9){g=a+76|0;c=j[g>>1]|0;d=k[a+(c<<2)+120>>2]|0;c=a+(c<<1)+78|0;e=(j[c>>1]|0)+1<<16>>16;j[c>>1]=e;c=(i[d+5>>0]|0)!=0;if((e&65535)<(m[d+18>>1]|0)){if(c){c=0;break}c=_m(a)|0;break}if(!c){c=l[d+6>>0]|0;d=k[d+56>>2]|0;c=wm(a,l[d+(c+9)>>0]<<16|l[d+(c+8)>>0]<<24|l[d+(c+10)>>0]<<8|l[d+(c+11)>>0])|0;if(c)break;c=_m(a)|0;break}e=a+44|0;f=a+72|0;d=j[g>>1]|0;do{if(!(d<<16>>16)){n=15;break}c=k[a+(d<<16>>16<<2)+120>>2]|0;if(c){Gg(k[c+68>>2]|0);d=j[g>>1]|0}d=d+-1<<16>>16;j[g>>1]=d;j[e>>1]=0;i[f>>0]=l[f>>0]&249;o=d<<16>>16;c=k[a+(o<<2)+120>>2]|0}while((m[a+(o<<1)+78>>1]|0)>=(m[c+18>>1]|0));if((n|0)==15){k[b>>2]=1;i[h>>0]=0;c=0;break}if(!(i[c+2>>0]|0))c=0;else c=Im(a,b)|0}while(0);return c|0}function Jp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0;p=a+73|0;c=i[p>>0]|0;do if(c<<24>>24!=1){if((c&255)>2){c=Pn(a)|0;if(c)break;c=i[p>>0]|0}if(!(c<<24>>24)){k[b>>2]=1;c=0;break}c=a+68|0;d=k[c>>2]|0;if((d|0)!=0?(i[p>>0]=1,k[c>>2]=0,(d|0)<0):0)c=0;else e=9}else e=9;while(0);a:do if((e|0)==9){o=a+76|0;f=j[o>>1]|0;g=f<<16>>16;e=k[a+(g<<2)+120>>2]|0;d=a+(g<<1)+78|0;c=j[d>>1]|0;if(!(i[e+5>>0]|0)){b=k[e+56>>2]|0;c=(c&65535)<<1;p=k[e+64>>2]|0;c=(l[p+c>>0]<<8|l[p+(c|1)>>0])&m[e+20>>1];c=wm(a,l[b+(c+1)>>0]<<16|l[b+c>>0]<<24|l[b+(c+2)>>0]<<8|l[b+(c+3)>>0])|0;if(c)break;c=Kp(a)|0;break}b:do if(!(c<<16>>16)){h=a+44|0;n=a+72|0;e=g;while(1){if(!(f<<16>>16))break;d=k[a+(e<<2)+120>>2]|0;if(!d)d=f;else{Gg(k[d+68>>2]|0);d=j[o>>1]|0}f=d+-1<<16>>16;j[o>>1]=f;j[h>>1]=0;i[n>>0]=l[n>>0]&249;e=f<<16>>16;d=a+(e<<1)+78|0;c=j[d>>1]|0;if(c<<16>>16)break b}i[p>>0]=0;k[b>>2]=1;c=0;break a}while(0);j[d>>1]=c+-1<<16>>16;p=k[a+(j[o>>1]<<2)+120>>2]|0;if((i[p+2>>0]|0)!=0?(i[p+5>>0]|0)==0:0)c=Jm(a,b)|0;else c=0}while(0);return c|0}function Kp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=a+76|0;do{c=j[d>>1]|0;b=k[a+(c<<2)+120>>2]|0;if(i[b+5>>0]|0){e=4;break}f=l[b+6>>0]|0;g=k[b+56>>2]|0;f=l[g+(f+9)>>0]<<16|l[g+(f+8)>>0]<<24|l[g+(f+10)>>0]<<8|l[g+(f+11)>>0];j[a+(c<<1)+78>>1]=j[b+18>>1]|0;b=wm(a,f)|0}while((b|0)==0);if((e|0)==4){j[a+(c<<1)+78>>1]=(m[b+18>>1]|0)+65535;b=0}return b|0}function Lp(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,l=0,m=0;m=r;r=r+224|0;if((r|0)>=(s|0))ka();i=m;g=m+8|0;k[g>>2]=0;do if(b){h=a+16|0;l=Km(k[h>>2]|0,m+16|0,200,g)|0;if(l){Lm(k[h>>2]|0,c,b,l);if(!(j[l+4>>1]|0)){rg(k[(k[h>>2]|0)+12>>2]|0,k[g>>2]|0);k[i>>2]=53713;k[i+4>>2]=10788;gd(11,13600,i);g=11;break}h=k[g>>2]|0;g=Hm(a,l,c,d,e,f)|0;if(h)rg(k[(k[a+16>>2]|0)+12>>2]|0,h)}else g=7}else g=Hm(a,0,c,d,e,f)|0;while(0);r=m;return g|0}function Mp(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,n=0,o=0,p=0,q=0;q=r;r=r+48|0;if((r|0)>=(s|0))ka();p=q+24|0;d=q;n=q+36|0;o=q+32|0;h=k[a+52>>2]|0;wp(a,b,d);j[c>>1]=j[d+20>>1]|0;c=j[d+18>>1]|0;a:do if(c<<16>>16){e=c&65535;f=b+(e+3)|0;if(f>>>0>((k[a+56>>2]|0)+(m[a+20>>1]|0)|0)>>>0){k[p>>2]=58720;k[p+4>>2]=10788;gd(11,13600,p);c=11;break}c=(k[h+36>>2]|0)+-4|0;c=(((k[d+12>>2]|0)+-1+c-(m[d+16>>1]|0)|0)>>>0)/(c>>>0)|0;if(c){g=h+44|0;a=c;e=l[b+(e+1)>>0]<<16|l[b+e>>0]<<24|l[b+(e+2)>>0]<<8|l[f>>0];while(1){a=a+-1|0;k[n>>2]=0;k[o>>2]=0;if(e>>>0<2)break;if(e>>>0>(k[g>>2]|0)>>>0)break;b=(a|0)==0;if(!b){c=Rp(h,e,o,n)|0;if(c)break a;c=k[o>>2]|0;if(c)f=13;else f=12}else f=12;if((f|0)==12){c=bq(h,e)|0;k[o>>2]=c;if(!c){c=0;f=15}else f=13}if((f|0)==13){f=0;if((j[(k[c+68>>2]|0)+26>>1]|0)==1)f=15;else{k[p>>2]=58754;k[p+4>>2]=10788;gd(11,13600,p);c=11}}if((f|0)==15)c=bn(h,c,e)|0;d=k[o>>2]|0;if((d|0)!=0?(i=k[d+68>>2]|0,(i|0)!=0):0)Gg(i);if(c)break a;if(b){c=0;break a}else e=k[n>>2]|0}k[p>>2]=58734;k[p+4>>2]=10788;gd(11,13600,p);c=11}else c=0}else c=0;while(0);r=q;return c|0}function Np(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,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0;w=r;r=r+16|0;if((r|0)>=(s|0))ka();f=w;do if(!(k[d>>2]|0)){q=k[a+56>>2]|0;t=b<<1;u=k[a+64>>2]|0;v=u+t|0;e=(l[v>>0]|0)<<8|(l[u+(t|1)>>0]|0);g=a+6|0;h=l[g>>0]|0;n=q+(h+5)|0;o=q+(h+6)|0;if(e>>>0>=((l[n>>0]|0)<<8|(l[o>>0]|0))>>>0?(p=a+52|0,(e+c|0)>>>0<=(k[(k[p>>2]|0)+36>>2]|0)>>>0):0){c=Hq(a,e&65535,c&65535)|0;if(c){k[d>>2]=c;break}c=a+18|0;e=(j[c>>1]|0)+-1<<16>>16;j[c>>1]=e;if(!(e<<16>>16)){d=q+(h+1)|0;i[d>>0]=0;i[d+1>>0]=0;i[d+2>>0]=0;i[d+3>>0]=0;i[q+(h+7)>>0]=0;i[n>>0]=(k[(k[p>>2]|0)+36>>2]|0)>>>8;i[o>>0]=k[(k[p>>2]|0)+36>>2];j[a+16>>1]=(k[(k[p>>2]|0)+36>>2]|0)+65528-(l[g>>0]|0)-(l[a+7>>0]|0);break}else{qw(v|0,u+(t+2)|0,(e&65535)-b<<1|0)|0;i[q+(h+3)>>0]=(m[c>>1]|0)>>>8;i[q+(h+4)>>0]=j[c>>1];q=a+16|0;j[q>>1]=(m[q>>1]|0)+2;break}}k[f>>2]=58991;k[f+4>>2]=10788;gd(11,13600,f);k[d>>2]=11}while(0);r=w;return}function Op(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;var h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=r;r=r+16|0;if((r|0)>=(s|0))ka();n=D;z=D+12|0;v=D+8|0;a:do if(!(k[g>>2]|0)){h=a+1|0;if((i[h>>0]|0)==0?(B=d+2|0,C=a+16|0,(B|0)<=(m[C>>1]|0)):0){e=Lg(k[a+68>>2]|0)|0;if(e){k[g>>2]=e;break}w=k[a+56>>2]|0;o=m[a+14>>1]|0;x=a+18|0;y=m[x>>1]<<1;q=b<<1;t=o+q|0;u=a+6|0;e=l[u>>0]|0;k[z>>2]=0;b=y+o|0;o=w+(e+5)|0;p=w+(e+6)|0;h=((l[o>>0]<<8|l[p>>0])+65535&65535)+1|0;b:do if((b|0)>(h|0)){k[n>>2]=54326;k[n+4>>2]=10788;gd(11,13600,n);e=11}else{n=b+2|0;do if((n|0)<=(h|0)){if((i[w+(e+1)>>0]|0)==0?(i[w+(e+2)>>0]|0)==0:0){A=20;break}k[v>>2]=0;b=Iq(a,d,z,v)|0;e=k[z>>2]|0;if(e)break b;if(!(k[v>>2]|0))if(!b)A=20;else h=b-w|0;else A=21}else A=20;while(0);if((A|0)==20)if((n+d|0)>(h|0))A=21;else A=23;if((A|0)==21){e=Jq(a)|0;k[z>>2]=e;if(e)break;h=((l[o>>0]<<8|l[p>>0])+65535&65535)+1|0;A=23}if((A|0)==23){h=h-d|0;i[o>>0]=h>>>8;i[p>>0]=h}j[x>>1]=(j[x>>1]|0)+1<<16>>16;j[C>>1]=(m[C>>1]|0)-B;e=w+h|0;pw(e|0,c|0,d|0)|0;if(f){i[e>>0]=f>>>24;i[w+(h+1)>>0]=f>>>16;i[w+(h+2)>>0]=f>>>8;i[w+(h+3)>>0]=f}f=w+t|0;qw(w+(t+2)|0,f|0,y-q|0)|0;i[f>>0]=h>>>8;i[w+(t+1)>>0]=h;i[w+((l[u>>0]|0)+3)>>0]=(m[x>>1]|0)>>>8;i[w+((l[u>>0]|0)+4)>>0]=j[x>>1];if(!(i[(k[a+52>>2]|0)+17>>0]|0))break a;Kq(a,c,g);break a}while(0);k[g>>2]=e;break}if(!e)e=c;else pw(e|0,c|0,d|0)|0;if(f){i[e>>0]=f>>>24;i[e+1>>0]=f>>>16;i[e+2>>0]=f>>>8;i[e+3>>0]=f}g=i[h>>0]|0;i[h>>0]=g+1<<24>>24;g=g&255;k[a+(g<<2)+32>>2]=e;j[a+(g<<1)+22>>1]=b}while(0);r=D;return}function Pp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=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,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=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,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=r;r=r+240|0;if((r|0)>=(s|0))ka();Na=Oa+24|0;Ka=Oa+200|0;Aa=Oa+188|0;za=Oa+168|0;ya=Oa+160|0;Ba=Oa+136|0;Ca=Oa+116|0;Ma=Oa+96|0;Ha=Oa+92|0;xa=Oa+229|0;wa=Oa+72|0;va=Oa+52|0;ua=Oa+206|0;Ga=Oa+48|0;Da=Oa;Fa=Oa+44|0;Ja=Oa+40|0;Ia=Oa+36|0;Ea=Oa+32|0;La=Oa+204|0;ta=Oa+216|0;da=a+4|0;ma=(k[(k[da>>2]|0)+36>>2]<<1>>>0)/3|0;na=a+76|0;qa=a+74|0;ra=ta+4|0;sa=ta;ea=a+124|0;ja=a+78|0;la=a+80|0;e=j[na>>1]|0;ca=0;while(1){f=e<<16>>16;g=k[a+(f<<2)+120>>2]|0;h=g+1|0;c=(i[h>>0]|0)==0;if(!(e<<16>>16)){if(c){c=ca;b=0;break}k[Ka>>2]=0;k[Aa>>2]=0;d=k[g+52>>2]|0;b=Lg(k[g+68>>2]|0)|0;k[Na>>2]=b;do if(!b){c=g+72|0;e=np(d,Ka,Aa,k[c>>2]|0,0)|0;k[Na>>2]=e;e=k[Ka>>2]|0;Lq(g,e,Na);if(i[d+17>>0]|0)Ep(d,k[Aa>>2]|0,5,k[c>>2]|0,Na);b=k[Na>>2]|0;if(!b){pw(e+22|0,g+22|0,l[h>>0]<<1|0)|0;pw(e+32|0,g+32|0,l[h>>0]<<2|0)|0;i[e+1>>0]=i[h>>0]|0;ul(g,l[k[e+56>>2]>>0]&247);b=l[g+6>>0]|0;$=k[g+56>>2]|0;_=k[Aa>>2]|0;i[$+(b+8)>>0]=_>>>24;i[$+(b+9)>>0]=_>>>16;i[$+(b+10)>>0]=_>>>8;i[$+(b+11)>>0]=_;k[ea>>2]=e;b=0;break}k[ea>>2]=0;if(e)Gg(k[e+68>>2]|0)}else k[ea>>2]=0;while(0);if(b){c=ca;break}j[na>>1]=1;j[ja>>1]=0;j[la>>1]=0;e=k[ea>>2]|0;d=e+1|0;if(!(i[d>>0]|0)){c=1;f=1;ba=15}else{n=1;f=1;h=d}}else if(c){c=e;e=g;d=h;ba=15}else{n=e;e=g}if((ba|0)==15){ba=0;if((m[e+16>>1]|0)>>>0>ma>>>0){n=c;h=d}else{c=ca;b=0;break}}d=f+-1|0;aa=k[a+(d<<2)+120>>2]|0;d=j[a+(d<<1)+78>>1]|0;o=d&65535;b=Lg(k[aa+68>>2]|0)|0;do if(!b){if(((((i[e+3>>0]|0)!=0?(i[h>>0]|0)==1:0)?(fa=j[e+22>>1]|0,ga=e+18|0,fa<<16>>16==(j[ga>>1]|0)):0)?(ha=aa+72|0,(k[ha>>2]|0)!=1):0)?(ia=aa+18|0,(j[ia>>1]|0)==d<<16>>16):0){d=k[e+52>>2]|0;if(!(fa<<16>>16)){k[Na>>2]=59423;k[Na+4>>2]=10788;gd(11,13600,Na);c=ca;b=11;break}$=np(d,Fa,Ia,0,0)|0;k[Ja>>2]=$;if(!$){c=k[e+32>>2]|0;k[Ea>>2]=c;b=Qp(e,c)|0;j[La>>1]=b;f=k[Fa>>2]|0;ul(f,13);Mq(f,1,Ea,La);j[f+16>>1]=65534-(b&65535)+(k[d+36>>2]|0)-(m[f+14>>1]|0);if((i[d+17>>0]|0)!=0?(Ep(d,k[Ia>>2]|0,5,k[ha>>2]|0,Ja),(b&65535)>(m[f+12>>1]|0)):0)Kq(f,c,Ja);$=k[e+56>>2]|0;d=m[ga>>1]<<1;c=k[e+64>>2]|0;d=(l[c+(d+-2)>>0]<<8|l[c+(d+-1)>>0])&m[e+20>>1];c=$+d|0;k[Ea>>2]=c;d=$+(d+9)|0;while(1){b=c+1|0;if((i[c>>0]|0)<0&b>>>0>>0)c=b;else break}k[Ea>>2]=b;d=c+10|0;f=ra;while(1){k[Ea>>2]=b+1;$=i[b>>0]|0;c=f+1|0;i[f>>0]=$;b=k[Ea>>2]|0;if(!($<<24>>24<0&b>>>0>>0))break;else f=c}Op(aa,m[ia>>1]|0,ta,c-sa|0,0,k[e+72>>2]|0,Ja);c=l[aa+6>>0]|0;$=k[aa+56>>2]|0;_=k[Ia>>2]|0;i[$+(c+8)>>0]=_>>>24;i[$+(c+9)>>0]=_>>>16;i[$+(c+10)>>0]=_>>>8;i[$+(c+11)>>0]=_;c=k[Fa>>2]|0;if(c)Gg(k[c+68>>2]|0)}c=ca;b=k[Ja>>2]|0;break}c=Lo(k[(k[da>>2]|0)+32>>2]|0)|0;X=n<<16>>16==1;g=l[qa>>0]|0;K=g&1;k[Ka>>2]=0;i[xa+0>>0]=0;i[xa+1>>0]=0;i[xa+2>>0]=0;i[xa+3>>0]=0;i[xa+4>>0]=0;Z=k[aa+52>>2]|0;if(!c)b=7;else{B=aa+1|0;n=l[B>>0]|0;Y=aa+18|0;b=m[Y>>1]|0;f=b+n|0;if((f|0)<2){_=f;T=0}else{do if(d<<16>>16)if((f|0)==(o|0)){g=(g|-2)+o|0;break}else{g=o+-1|0;break}else g=0;while(0);_=2-K|0;T=g}$=_+1|0;g=T-n+_|0;A=aa+56|0;n=k[A>>2]|0;if((g|0)==(b|0))o=(l[aa+6>>0]|0)+8|0;else{o=g<<1;W=k[aa+64>>2]|0;o=(l[W+o>>0]<<8|l[W+(o|1)>>0])&m[aa+20>>1]}Q=n+o|0;O=n+(o+1)|0;P=n+(o+2)|0;D=n+(o+3)|0;W=l[O>>0]<<16|l[Q>>0]<<24|l[P>>0]<<8|l[D>>0];k[Ha>>2]=W;o=Aa+(_<<2)|0;W=Ap(Z,W,o,0)|0;k[Ka>>2]=W;a:do if(!W){t=aa+22|0;w=aa+32|0;x=aa+20|0;y=aa+64|0;z=Z+22|0;N=Z+36|0;u=_;n=0;while(1){d=k[o>>2]|0;n=n+1+(m[d+18>>1]|0)+(l[d+1>>0]|0)|0;d=u+-1|0;if(!u)break;v=d+T|0;o=i[B>>0]|0;if((v|0)==(m[t>>1]|0))if(!(o<<24>>24)){o=0;ba=52}else{W=k[w>>2]|0;k[ya+(d<<2)>>2]=W;g=l[W+1>>0]<<16|l[W>>0]<<24|l[W+2>>0]<<8|l[W+3>>0];k[Ha>>2]=g;W=(Qp(aa,W)|0)&65535;k[Ma+(d<<2)>>2]=W;i[B>>0]=0}else ba=52;if((ba|0)==52){ba=0;g=k[A>>2]|0;p=v-(o&255)<<1;f=k[y>>2]|0;p=(l[f+p>>0]<<8|l[f+(p|1)>>0])&m[x>>1];f=g+p|0;b=ya+(d<<2)|0;k[b>>2]=f;g=l[g+(p+1)>>0]<<16|l[f>>0]<<24|l[g+(p+2)>>0]<<8|l[g+(p+3)>>0];k[Ha>>2]=g;q=(Qp(aa,f)|0)&65535;k[Ma+(d<<2)>>2]=q;if(j[z>>1]&4){if((q+p|0)>(k[N>>2]|0)){d=u;ba=54;break}pw(c+p|0,f|0,q|0)|0;k[b>>2]=c+(f-(k[A>>2]|0));o=i[B>>0]|0}Np(aa,v-(o&255)|0,q,Ka)}o=Aa+(d<<2)|0;W=Ap(Z,g,o,0)|0;k[Ka>>2]=W;if(W){ba=47;break a}else u=d}if((ba|0)==54){ba=0;k[Na>>2]=59766;k[Na+4>>2]=10788;gd(11,13600,Na);k[Ka>>2]=11;kw(Aa|0,0,d<<2|0)|0;f=0;g=0;break}o=n+3&-4;W=li((k[Z+32>>2]|0)+(o*6|0)|0)|0;if(!W){k[Ka>>2]=7;f=W;g=0;break}U=W+(o<<2)|0;G=U+(o<<1)|0;J=k[Aa>>2]|0;R=l[J+5>>0]<<2;V=R&65535;S=i[J+3>>0]|0;C=S&255;if((_|0)>-1){F=S<<24>>24!=0;H=J;g=0;I=0;n=0;while(1){E=m[H+18>>1]|0;M=i[H+1>>0]|0;A=M&255;B=A+E|0;if(!(M<<24>>24)){b=k[H+56>>2]|0;if((B|0)>0){v=m[H+20>>1]|0;u=m[H+14>>1]|0;t=0;q=n;while(1){M=(t<<1)+u|0;M=b+((l[b+M>>0]<<8|l[b+(M+1)>>0])&v)|0;k[W+(q<<2)>>2]=M;M=Qp(H,M)|0;j[U+(q<<1)>>1]=M;t=t+1|0;if((t|0)==(E|0))break;else q=q+1|0}n=E+n|0}}else if((B|0)>0){w=H+56|0;u=H+20|0;t=H+64|0;q=0;b=n;while(1){v=q;z=A;b:while(1){while(1){x=z+-1|0;if((z|0)<=0){ba=72;break b}z=m[H+(x<<1)+22>>1]|0;if((z|0)>(v|0))z=x;else{y=z;z=x;break}}if((y|0)==(v|0)){ba=71;break}else v=v+-1|0}if((ba|0)==71){ba=0;v=k[H+(z<<2)+32>>2]|0}else if((ba|0)==72){ba=0;v=v<<1;M=k[t>>2]|0;v=(k[w>>2]|0)+((l[M+v>>0]<<8|l[M+(v|1)>>0])&m[u>>1])|0}k[W+(b<<2)>>2]=v;M=Qp(H,v)|0;j[U+(b<<1)>>1]=M;q=q+1|0;if((q|0)==(B|0))break;else b=b+1|0}n=E+n+A|0}k[Ca+(g<<2)>>2]=n;if((g|0)>=(_|0)|F)o=I;else{d=k[Ma+(g<<2)>>2]|0;p=U+(n<<1)|0;j[p>>1]=d;d=d&65535;o=d+I|0;pw(G+I|0,k[ya+(g<<2)>>2]|0,d|0)|0;d=W+(n<<2)|0;k[d>>2]=G+(I+R);f=(m[p>>1]|0)-R|0;j[p>>1]=f;do if(!(i[H+5>>0]|0)){M=k[d>>2]|0;L=(k[H+56>>2]|0)+8|0;L=l[L>>0]|l[L+1>>0]<<8|l[L+2>>0]<<16|l[L+3>>0]<<24;i[M>>0]=L;i[M+1>>0]=L>>8;i[M+2>>0]=L>>16;i[M+3>>0]=L>>24}else{if((f&65532)>>>0>=4)break;i[G+o>>0]=0;j[p>>1]=4;o=o+1|0}while(0);n=n+1|0}g=g+1|0;if((g|0)>=($|0))break;H=k[Aa+(g<<2)>>2]|0;I=o}o=R+-12+(k[N>>2]|0)|0;if((n|0)>0){p=F<<31>>31;f=0;d=0;g=0;do{b=g+2+(m[U+(f<<1)>>1]|0)|0;if((b|0)>(o|0)){k[Ma+(d<<2)>>2]=g;k[Ba+(d<<2)>>2]=f;if((d|0)>3){ba=91;break}else{f=f+p|0;d=d+1|0;g=0}}else g=b;f=f+1|0}while((f|0)<(n|0));if((ba|0)==91){ba=0;k[Na>>2]=59904;k[Na+4>>2]=10788;gd(11,13600,Na);k[Ka>>2]=11;f=W;g=0;break}k[Ma+(d<<2)>>2]=g;k[Ba+(d<<2)>>2]=n;if((d|0)>0){B=(K|0)==0;f=d;do{q=Ma+(f<<2)|0;f=f+-1|0;b=Ma+(f<<2)|0;t=Ba+(f<<2)|0;x=k[t>>2]|0;A=k[b>>2]|0;p=g;while(1){w=x+-1|0;v=x-C|0;if(p){if(!B){g=A;break}y=j[U+(v<<1)>>1]|0;z=p+2|0;v=j[U+(w<<1)>>1]|0;u=A+-2|0;if(((y&65535)+z|0)>(u-(v&65535)|0)){g=A;break}}else{u=A+-2|0;z=2;y=j[U+(v<<1)>>1]|0;v=j[U+(w<<1)>>1]|0}k[t>>2]=w;x=w;A=u-(v&65535)|0;p=(y&65535)+z|0}k[q>>2]=p;k[b>>2]=g}while((f|0)>0);I=1;M=o;L=n}else{I=1;M=o;L=n}}else ba=93}else{o=R+-12+(k[N>>2]|0)|0;n=0;ba=93}if((ba|0)==93){ba=0;k[Ma>>2]=0;k[Ba>>2]=n;I=0;M=o;d=0;L=n}if((k[J+72>>2]|0)>>>0<2){k[Na>>2]=59963;k[Na+4>>2]=10788;gd(11,13600,Na);k[Ka>>2]=11;f=W;g=0;break}E=l[k[J+56>>2]>>0]|0;if((d|0)>-1){q=(K|0)!=0;b=Z+17|0;f=aa+72|0;u=0;g=0;while(1){do if((u|0)<($|0)){J=Aa+(u<<2)|0;K=k[J>>2]|0;k[za+(u<<2)>>2]=K;k[Ga>>2]=K;k[J>>2]=0;K=Lg(k[K+68>>2]|0)|0;k[Ka>>2]=K;g=g+1|0;if(K){f=W;break a}}else{K=np(Z,Ga,Ha,q?1:k[Ha>>2]|0,0)|0;k[Ka>>2]=K;if(K){f=W;break a}o=k[Ga>>2]|0;ul(o,E);k[za+(u<<2)>>2]=o;g=g+1|0;k[Ca+(u<<2)>>2]=L;if(!(i[b>>0]|0))break;Ep(Z,k[o+72>>2]|0,5,k[f>>2]|0,Ka);if(k[Ka>>2]|0){f=W;break a}}while(0);if((u|0)<(d|0))u=u+1|0;else break}if((g|0)>0){n=0;c:do{K=k[za+(n<<2)>>2]|0;o=k[K+72>>2]|0;k[wa+(n<<2)>>2]=o;k[va+(n<<2)>>2]=o;j[ua+(n<<1)>>1]=j[(k[K+68>>2]|0)+24>>1]|0;if((n|0)>0){f=0;do{if((k[wa+(f<<2)>>2]|0)==(o|0)){ba=118;break c}f=f+1|0}while((f|0)<(n|0))}n=n+1|0}while((n|0)<(g|0));if((ba|0)==118){ba=0;k[Na>>2]=60018;k[Na+4>>2]=10788;gd(11,13600,Na);k[Ka>>2]=11;f=W;break}p=(g|0)>1;f=Z+44|0;d=0;do{if(p){n=0;o=1;do{n=(k[va+(o<<2)>>2]|0)>>>0<(k[va+(n<<2)>>2]|0)>>>0?o:n;o=o+1|0}while((o|0)!=(g|0))}else n=0;K=va+(n<<2)|0;o=k[K>>2]|0;k[K>>2]=-1;if((n|0)!=(d|0)){if((n|0)>(d|0)){J=k[(k[za+(n<<2)>>2]|0)+68>>2]|0;K=n+1+(k[f>>2]|0)|0;j[J+24>>1]=0;cq(J,K)}K=k[za+(d<<2)>>2]|0;J=k[K+68>>2]|0;j[J+24>>1]=j[ua+(n<<1)>>1]|0;cq(J,o);k[K+72>>2]=o}d=d+1|0}while((d|0)!=(g|0));k[Ha>>2]=o;K=0}else K=1}else{K=1;g=0}H=g+-1|0;o=k[za+(H<<2)>>2]|0;J=k[o+72>>2]|0;i[Q>>0]=J>>>24;i[O>>0]=J>>>16;i[P>>0]=J>>>8;i[D>>0]=J;if(!((E&8|0)!=0|($|0)==(g|0))){Q=(k[o+56>>2]|0)+8|0;P=(k[(k[((g|0)>($|0)?za:Aa)+(_<<2)>>2]|0)+56>>2]|0)+8|0;P=l[P>>0]|l[P+1>>0]<<8|l[P+2>>0]<<16|l[P+3>>0]<<24;i[Q>>0]=P;i[Q+1>>0]=P>>8;i[Q+2>>0]=P>>16;i[Q+3>>0]=P>>24}J=Z+17|0;if((i[J>>0]|0)!=0?(oa=k[za>>2]|0,pa=k[N>>2]|0,I):0){A=S<<24>>24==0;y=A&1;x=V<<16>>16==0;v=k[oa+56>>2]|0;u=(m[oa+18>>1]|0)+(l[oa+1>>0]|0)|0;w=0;t=0;n=0;p=oa;while(1){z=k[W+(w<<2)>>2]|0;if((w|0)==(u|0)){n=n+1|0;if((n|0)<(g|0))o=za+(n<<2)|0;else o=Aa+(n<<2)|0;u=k[o>>2]|0;v=k[u+56>>2]|0;u=w+y+(m[u+18>>1]|0)+(l[u+1>>0]|0)|0}if((w|0)==(k[Ba+(t<<2)>>2]|0)){o=t+1|0;p=k[za+(o<<2)>>2]|0;if(!A)ba=142}else{o=t;ba=142}do if((ba|0)==142){ba=0;if((n|0)<(g|0)?(z>>>0>=v>>>0?(k[p+72>>2]|0)==(k[wa+(n<<2)>>2]|0):0)&z>>>0<(v+pa|0)>>>0:0)break;if(x)Ep(Z,l[z+1>>0]<<16|l[z>>0]<<24|l[z+2>>0]<<8|l[z+3>>0],5,k[p+72>>2]|0,Ka);if((m[U+(w<<1)>>1]|0)<=(m[p+12>>1]|0))break;Kq(p,z,Ka)}while(0);w=w+1|0;if((w|0)==(L|0))break;else t=o}}if((H|0)>0){q=S<<24>>24==0;u=0;v=0;while(1){t=k[za+(u<<2)>>2]|0;n=k[Ba+(u<<2)>>2]|0;f=k[W+(n<<2)>>2]|0;d=j[U+(n<<1)>>1]|0;o=(d&65535)+R|0;p=c+v|0;do if(!(i[t+5>>0]|0)){n=(k[t+56>>2]|0)+8|0;Q=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;i[n>>0]=Q;i[n+1>>0]=Q>>8;i[n+2>>0]=Q>>16;i[n+3>>0]=Q>>24;n=p}else{if(!q){wp(t,k[W+(n+-1<<2)>>2]|0,Da);o=Da;f=p;n=0;o=(um(c+(v+4)|0,k[o>>2]|0,k[o+4>>2]|0)|0)+4|0;break}b=f+-4|0;if(d<<16>>16!=4){f=b;n=p;break}f=b;n=p;o=(Qp(aa,b)|0)&65535}while(0);Op(aa,u+T|0,f,o,n,k[t+72>>2]|0,Ka);if(k[Ka>>2]|0){f=W;break a}u=u+1|0;if((u|0)>=(H|0))break;else v=o+v|0}}o=1-g|0;if((o|0)<(g|0)){I=k[Ba>>2]|0;H=S<<24>>24==0&1;do{F=(o|0)<0?0-o|0:o;G=xa+F|0;do if(!(i[G>>0]|0)){if((o|0)<=-1?(T=F+-1|0,(k[Ca+(T<<2)>>2]|0)<(k[Ba+(T<<2)>>2]|0)):0)break;if(!F){E=0;f=0;D=I}else{n=F+-1|0;if((F|0)<($|0))f=(k[Ca+(n<<2)>>2]|0)+H|0;else f=L;D=(k[Ba+(n<<2)>>2]|0)+H|0;E=D;D=(k[Ba+(F<<2)>>2]|0)-D|0}B=k[za+(F<<2)>>2]|0;q=k[B+56>>2]|0;b=l[B+6>>0]|0;d=B+64|0;n=(k[d>>2]|0)+(D<<1)|0;p=B+18|0;v=m[p>>1]|0;C=B+1|0;u=v+f+(l[C>>0]|0)|0;t=D+E|0;if((f|0)<(E|0)){T=Nq(B,E-f|0,W+(f<<2)|0,U+(f<<1)|0)|0;S=k[d>>2]|0;qw(S|0,S+(T<<1)|0,v<<1|0)|0;v=v-T|0}if((u|0)>(t|0))v=v-(Nq(B,u-t|0,W+(t<<2)|0,U+(t<<1)|0)|0)|0;x=q+(b+5)|0;w=q+(b+6)|0;T=q+(((l[x>>0]<<8|l[w>>0])+65535&65535)+1)|0;k[Na>>2]=T;d:do if(T>>>0>>0)ba=181;else{if((E|0)<(f|0)){u=f-E|0;u=(u|0)>(D|0)?D:u;T=k[d>>2]|0;qw(T+(u<<1)|0,T|0,v<<1|0)|0;if(Oq(B,n,Na,T,u,W+(E<<2)|0,U+(E<<1)|0)|0){ba=181;break}v=v+u|0}u=i[C>>0]|0;if(u<<24>>24){A=0;do{z=(m[B+(A<<1)+22>>1]|0)+f|0;y=z-E|0;if((y|0)>-1&(y|0)<(D|0)){S=y<<1;R=k[d>>2]|0;T=R+S|0;qw(R+(S+2)|0,T|0,v-y<<1|0)|0;if(Oq(B,n,Na,T,1,W+(z<<2)|0,U+(z<<1)|0)|0){ba=181;break d}u=i[C>>0]|0;v=v+1|0}A=A+1|0}while((A|0)<(u&255|0))}T=v+E|0;if(Oq(B,n,Na,(k[d>>2]|0)+(v<<1)|0,D-v|0,W+(T<<2)|0,U+(T<<1)|0)|0){ba=181;break}T=D&65535;j[p>>1]=T;i[C>>0]=0;i[q+(b+3)>>0]=(T&65535)>>>8;i[q+(b+4)>>0]=j[p>>1];T=(k[Na>>2]|0)-q|0;i[x>>0]=T>>>8;i[w>>0]=T}while(0);if((ba|0)==181){ba=0;Mq(B,D,W+(E<<2)|0,U+(E<<1)|0)}i[G>>0]=1;j[B+16>>1]=M-(k[Ma+(F<<2)>>2]|0)}while(0);o=o+1|0}while((o|0)!=(g|0))}do if(X){if(j[Y>>1]|0){ba=191;break}f=k[za>>2]|0;if((l[aa+6>>0]|0)>>>0>(m[f+16>>1]|0)>>>0){ba=191;break}Z=Jq(f)|0;k[Ka>>2]=Z;Lq(f,aa,Ka);if(k[Ka>>2]|0)break;Z=bn(k[f+52>>2]|0,f,k[f+72>>2]|0)|0;k[Ka>>2]=Z}else ba=191;while(0);do if((ba|0)==191){ba=0;if((i[J>>0]|0)==0|V<<16>>16!=0|K)break;else f=0;do{Y=k[za+(f<<2)>>2]|0;X=k[Y+56>>2]|0;Ep(Z,l[X+9>>0]<<16|l[X+8>>0]<<24|l[X+10>>0]<<8|l[X+11>>0],5,k[Y+72>>2]|0,Ka);f=f+1|0}while((f|0)!=(g|0))}while(0);if((g|0)>=($|0)){f=W;break}f=k[Ka>>2]|0;b=g;do{d=k[Aa+(b<<2)>>2]|0;if(!f){f=bn(k[d+52>>2]|0,d,k[d+72>>2]|0)|0;k[Ka>>2]=f}b=b+1|0}while((b|0)!=($|0));f=W}else{d=_;ba=47}while(0);if((ba|0)==47){ba=0;kw(Aa|0,0,(d<<2)+4|0)|0;f=0;g=0}mi(f);if((_|0)>-1){d=0;do{f=k[Aa+(d<<2)>>2]|0;if(f)Gg(k[f+68>>2]|0);d=d+1|0}while((d|0)<($|0))}if((g|0)>0){d=0;do{b=k[za+(d<<2)>>2]|0;if(b)Gg(k[b+68>>2]|0);d=d+1|0}while((d|0)!=(g|0))}b=k[Ka>>2]|0}if(ca)el(ca)}else c=ca;while(0);i[h>>0]=0;if(e)Gg(k[e+68>>2]|0);e=(j[na>>1]|0)+-1<<16>>16;j[na>>1]=e;if(b)break;else ca=c}if(c)el(c);r=Oa;return b|0}function Qp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=l[a+7>>0]|0;d=b+c|0;do if(!(i[a+4>>0]|0)){f=i[d>>0]|0;e=f&255;if(f<<24>>24<0){f=b+(c+9)|0;c=e&127;do{d=d+1|0;e=i[d>>0]|0;c=e&127|c<<7}while(e<<24>>24<0&d>>>0>>0)}else c=e;e=d+1|0;if(i[a+2>>0]|0){g=d+10|0;f=e;while(1){e=d+2|0;if((i[f>>0]|0)<0&e>>>0>>0){d=f;f=e}else break}}d=m[a+10>>1]|0;if(c>>>0>d>>>0){f=m[a+12>>1]|0;c=(((c-f|0)>>>0)%(((k[(k[a+52>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+f|0;c=(e-b&65535)+4+(c>>>0>d>>>0?f:c)|0;break}else{c=e-b+c|0;c=c>>>0<4?4:c;break}}else{e=b+(c+9)|0;while(1){c=d+1|0;if((i[d>>0]|0)<0&c>>>0>>0)d=c;else break}c=c-b|0}while(0);return c&65535|0}function Rp(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;q=r;r=r+16|0;if((r|0)>=(s|0))ka();o=q+4|0;n=q;m=q+8|0;k[o>>2]=0;if(i[a+17>>0]|0){e=((k[2514]|0)>>>0)/((k[a+32>>2]|0)>>>0)|0;h=a+36|0;j=b;while(1){g=j+1|0;if(g>>>0<2)f=0;else{f=j+-1|0;f=f-((f>>>0)%(((((k[h>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;f=((f+1|0)==(e|0)?3:2)+f|0}if((f|0)==(g|0)|(j|0)==(e|0))j=g;else break}if(g>>>0<=(k[a+44>>2]|0)>>>0){j=mp(a,g,m,n)|0;h=(j|0)==0;f=h&(i[m>>0]|0)==4&(k[n>>2]|0)==(b|0);g=f?g:0;if(f|h^1){e=0;f=f?101:j}else p=8}else{g=0;p=8}}else{g=0;p=8}if((p|0)==8){f=il(a,b,o,(c|0)==0?2:0)|0;e=k[o>>2]|0;if(!f){g=k[e+56>>2]|0;g=l[g+1>>0]<<16|l[g>>0]<<24|l[g+2>>0]<<8|l[g+3>>0];f=0}}k[d>>2]=g;if(!c){if(e)Gg(k[e+68>>2]|0)}else k[c>>2]=e;r=q;return ((f|0)==101?0:f)|0}function Sp(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;h=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h;k[g>>2]=0;e=(b|0)!=0;a:do if(c)if(e){e=g;while(1){f=c+8|0;while(1){if(($p(a,b+8|0,k[b>>2]|0,f,k[c>>2]|0)|0)>=1)break;k[e>>2]=b;e=b+4|0;b=k[e>>2]|0;if(!b){b=0;f=0;break a}else f=0}k[e>>2]=c;e=c+4|0;c=k[e>>2]|0;if(!c){c=0;f=1;break a}if(!b){b=0;f=0;break}}}else{f=e;e=g}else{c=0;f=e;e=g}while(0);k[e>>2]=f?b:c;k[d>>2]=k[g>>2];r=h;return}function Tp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();e=f+8|0;d=f;c=k[2252]|0;if((c|0)!=0?(qc[c&127](202)|0)!=0:0)c=3338;else{c=rp(k[a>>2]|0,0,b,4126,e)|0;k[e>>2]=c;if(!c){c=d;k[c>>2]=0;k[c+4>>2]=0;c=k[b>>2]|0;fc[k[(k[c>>2]|0)+40>>2]&63](c,18,d)|0;c=k[e>>2]|0}}r=f;return c|0}function Up(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;f=b+0|0;g=f+40|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=((c|0)<0)<<31>>31;g=vg(c,f)|0;k[b+4>>2]=g;if(!g)k[b>>2]=7;else{g=ww(d|0,e|0,c|0,f|0)|0;k[b+12>>2]=g;k[b+16>>2]=g;g=iw(d|0,e|0,g|0,((g|0)<0)<<31>>31|0)|0;f=b+24|0;k[f>>2]=g;k[f+4>>2]=L;k[b+8>>2]=c;k[b+32>>2]=a}return}function Vp(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;a:do if((c|0)>0){e=a+8|0;g=a+16|0;h=a+4|0;i=a+32|0;j=a+12|0;l=a+24|0;m=c;do{if(k[a>>2]|0)break a;f=k[g>>2]|0;d=(k[e>>2]|0)-f|0;d=(m|0)>(d|0)?d:m;pw((k[h>>2]|0)+f|0,b+(c-m)|0,d|0)|0;f=(k[g>>2]|0)+d|0;k[g>>2]=f;if((f|0)==(k[e>>2]|0)){q=k[i>>2]|0;o=k[j>>2]|0;p=(k[h>>2]|0)+o|0;n=l;n=ow(k[n>>2]|0,k[n+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;n=yc[k[(k[q>>2]|0)+12>>2]&31](q,p,f-o|0,n,L)|0;k[a>>2]=n;k[g>>2]=0;k[j>>2]=0;n=k[e>>2]|0;f=l;n=ow(k[f>>2]|0,k[f+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;f=l;k[f>>2]=n;k[f+4>>2]=L}m=m-d|0}while((m|0)>0)}while(0);return}function Wp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=a+4|0;if(((k[a>>2]|0)==0?(d=k[e>>2]|0,(d|0)!=0):0)?(c=k[a+16>>2]|0,f=k[a+12>>2]|0,(c|0)>(f|0)):0){h=k[a+32>>2]|0;g=a+24|0;g=ow(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;c=yc[k[(k[h>>2]|0)+12>>2]&31](h,d+f|0,c-f|0,g,L)|0;k[a>>2]=c}d=a+24|0;c=k[a+16>>2]|0;d=ow(c|0,((c|0)<0)<<31>>31|0,k[d>>2]|0,k[d+4>>2]|0)|0;c=b;k[c>>2]=d;k[c+4>>2]=L;$c(k[e>>2]|0);e=k[a>>2]|0;c=a+0|0;d=c+40|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));return e|0}function Xp(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;f=k[2252]|0;if((f|0)!=0?(qc[f&127](201)|0)!=0:0)f=266;else{g=b+44|0;if(k[g>>2]|0)k[g>>2]=0;n=b;k[n>>2]=d;k[n+4>>2]=e;n=c+8|0;l=k[n>>2]|0;n=k[n+4>>2]|0;i=b+8|0;j=i;k[j>>2]=l;k[j+4>>2]=n;c=k[c>>2]|0;j=b+24|0;k[j>>2]=c;a=a+8|0;f=k[a>>2]|0;h=k[(k[f+24>>2]|0)+136>>2]|0;m=((h|0)<0)<<31>>31;if(!((n|0)>(m|0)|(n|0)==(m|0)&l>>>0>h>>>0)?(k[k[c>>2]>>2]|0)>2:0){k[g>>2]=0;f=k[a>>2]|0}h=k[f+12>>2]|0;c=((h|0)<0)<<31>>31;e=ww(d|0,e|0,h|0,c|0)|0;a=b+36|0;f=k[a>>2]|0;if(!f){f=vg(h,c)|0;k[a>>2]=f;k[b+40>>2]=h;d=f;f=(f|0)==0?7:0}else{d=f;f=0}if((f|0)==0&(e|0)!=0){f=h-e|0;h=b;g=k[h>>2]|0;h=k[h+4>>2]|0;b=ow(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;l=L;c=i;a=k[c>>2]|0;c=k[c+4>>2]|0;if((l|0)>(c|0)|(l|0)==(c|0)&b>>>0>a>>>0)f=iw(a|0,c|0,g|0,h|0)|0;j=k[j>>2]|0;f=yc[k[(k[j>>2]|0)+8>>2]&31](j,d+e|0,f,g,h)|0}}return f|0}function Yp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=r;r=r+32|0;if((r|0)>=(s|0))ka();g=h+8|0;f=h;d=k[a+44>>2]|0;c=a;e=k[c>>2]|0;a:do if(!d){d=k[a+40>>2]|0;c=ww(e|0,k[c+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;if((c|0)!=0&(d-c|0)>8){d=(xp((k[a+36>>2]|0)+c|0,b)|0)&255;c=a;d=ow(k[c>>2]|0,k[c+4>>2]|0,d|0,0)|0;c=a;k[c>>2]=d;k[c+4>>2]=L;c=0;break}else d=0;while(1){c=Pq(a,1,f)|0;if(c)break a;c=i[k[f>>2]>>0]|0;i[g+(d&15)>>0]=c;if(c<<24>>24<0)d=d+1|0;else break}xp(g,b)|0;c=0}else{d=(xp(d+e|0,b)|0)&255;c=a;d=ow(k[c>>2]|0,k[c+4>>2]|0,d|0,0)|0;c=a;k[c>>2]=d;k[c+4>>2]=L;c=0}while(0);r=h;return c|0}function Zp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=r;r=r+16|0;if((r|0)>=(s|0))ka();f=h;c=f;k[c>>2]=0;k[c+4>>2]=0;c=a;e=k[c+4>>2]|0;b=a+8|0;d=k[b+4>>2]|0;do if((e|0)<(d|0)|((e|0)==(d|0)?(k[c>>2]|0)>>>0<(k[b>>2]|0)>>>0:0))g=9;else{c=k[a+48>>2]|0;if(c){b=Qq(c)|0;i=c+32|0;e=c+48|0;k[i+0>>2]=k[e+0>>2];k[i+4>>2]=k[e+4>>2];k[i+8>>2]=k[e+8>>2];k[i+12>>2]=k[e+12>>2];i=c+40|0;e=c+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;if((k[i>>2]|0)==(d|0)?(k[i+4>>2]|0)==(e|0):0)k[c+20>>2]=1;if(!b)if(!(k[c+20>>2]|0)){b=Xp(k[c>>2]|0,a,c+32|0,d,e)|0;if(!b){g=9;break}else break}else b=0}else b=0;_p(a)}while(0);if((g|0)==9){b=Yp(a,f)|0;if(!b){b=k[f>>2]|0;k[a+20>>2]=b;b=Pq(a,b,a+32|0)|0}}r=h;return b|0}function _p(a){a=a|0;var b=0;$c(k[a+28>>2]|0);$c(k[a+36>>2]|0);Xm(k[a+48>>2]|0);a=a+0|0;b=a+56|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function $p(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=k[a+12>>2]|0;if(d)Lm(k[(k[a+8>>2]|0)+28>>2]|0,e,d,f);return Pm(c,b,f,0)|0}function aq(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,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0;w=r;r=r+16|0;if((r|0)>=(s|0))ka();f=w;e=w+8|0;q=w+12|0;do if((k[a+44>>2]|0)>>>0>=b>>>0){b=Ap(a,b,e,0)|0;if(!b){u=k[e>>2]|0;t=u+9|0;a:do if(!(i[t>>0]|0)){i[t>>0]=1;o=l[u+6>>0]|0;h=u+18|0;e=j[h>>1]|0;if(!(e<<16>>16)){e=e&65535;b=u+5|0}else{g=0;while(1){f=k[u+56>>2]|0;e=g<<1;b=k[u+64>>2]|0;e=(l[b+e>>0]<<8|l[b+(e|1)>>0])&m[u+20>>1];b=f+e|0;n=u+5|0;if((i[n>>0]|0)==0?(p=aq(a,l[f+(e+1)>>0]<<16|l[b>>0]<<24|l[f+(e+2)>>0]<<8|l[f+(e+3)>>0],1,d)|0,(p|0)!=0):0){b=p;v=21;break a}b=Mp(u,b,q)|0;g=g+1|0;if(b){v=21;break a}e=m[h>>1]|0;if((g|0)>=(e|0)){b=n;break}}}if(!(i[b>>0]|0)){b=k[u+56>>2]|0;b=aq(a,l[b+(o+9)>>0]<<16|l[b+(o+8)>>0]<<24|l[b+(o+10)>>0]<<8|l[b+(o+11)>>0],1,d)|0;if(!b)v=16}else if(!d)v=16;else{k[d>>2]=(k[d>>2]|0)+e;v=16}if((v|0)==16){if(c){b=bn(k[u+52>>2]|0,u,k[u+72>>2]|0)|0;v=21;break}b=Lg(k[u+68>>2]|0)|0;if(!b){ul(u,l[(k[u+56>>2]|0)+o>>0]|8);b=0;v=21;break}}i[t>>0]=0}else{k[f>>2]=60971;k[f+4>>2]=10788;gd(11,13600,f);b=11;v=21}while(0);if((v|0)==21){i[t>>0]=0;if(!u)break}Gg(k[u+68>>2]|0)}}else{k[f>>2]=60966;k[f+4>>2]=10788;gd(11,13600,f);b=11}while(0);r=w;return b|0}function bq(a,b){a=a|0;b=b|0;var c=0,d=0;d=(k[a>>2]|0)+204|0;c=fc[k[8744+132>>2]&63](k[(k[d>>2]|0)+40>>2]|0,b,0)|0;c=nl(k[d>>2]|0,b,c)|0;if(!c)c=0;else{d=k[c+8>>2]|0;k[d+56>>2]=k[c+4>>2];k[d+68>>2]=c;k[d+52>>2]=a;k[d+72>>2]=b;i[d+6>>0]=(b|0)==1?100:0;c=d}return c|0}function cq(a,b){a=a|0;b=b|0;var c=0;c=a+20|0;vc[k[8744+140>>2]&15](k[(k[a+28>>2]|0)+40>>2]|0,k[a>>2]|0,k[c>>2]|0,b);k[c>>2]=b;if((j[a+24>>1]&6)==6)Vo(a,3);return}function dq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();u=v;p=k[a+52>>2]|0;q=i[a>>0]|0;t=k[a+72>>2]|0;o=eq(a)|0;k[u>>2]=o;if(!o){o=j[a+18>>1]|0;n=o&65535;if(!(o<<16>>16))b=a+5|0;else{c=a+56|0;d=a+20|0;e=a+64|0;b=a+5|0;o=0;do{f=k[c>>2]|0;g=o<<1;h=k[e>>2]|0;g=(l[h+g>>0]<<8|l[h+(g|1)>>0])&m[d>>1];h=f+g|0;Kq(a,h,u);if(!(i[b>>0]|0))Ep(p,l[f+(g+1)>>0]<<16|l[h>>0]<<24|l[f+(g+2)>>0]<<8|l[f+(g+3)>>0],5,t,u);o=o+1|0}while((o|0)<(n|0))}if(!(i[b>>0]|0)){o=l[a+6>>0]|0;n=k[a+56>>2]|0;Ep(p,l[n+(o+9)>>0]<<16|l[n+(o+8)>>0]<<24|l[n+(o+10)>>0]<<8|l[n+(o+11)>>0],5,t,u)}}i[a>>0]=q;r=v;return k[u>>2]|0}function eq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();u=v;a:do if(!(i[a>>0]|0)){b=k[a+52>>2]|0;p=k[a+56>>2]|0;f=l[a+6>>0]|0;if(Wo(a,l[p+f>>0]|0)|0){k[u>>2]=54562;k[u+4>>2]=10788;gd(11,13600,u);b=11;break}h=k[b+32>>2]|0;j[a+20>>1]=h+65535;i[a+1>>0]=0;o=k[b+36>>2]|0;b=f+8+(l[a+7>>0]|0)|0;j[a+14>>1]=b;k[a+60>>2]=p+o;b=b&65535;k[a+64>>2]=p+b;e=i[p+(f+5)>>0]|0;d=i[p+(f+6)>>0]|0;c=l[p+(f+3)>>0]<<8|l[p+(f+4)>>0];j[a+18>>1]=c;if(c>>>0>(((h+-8|0)>>>0)/6|0)>>>0){k[u>>2]=54579;k[u+4>>2]=10788;gd(11,13600,u);b=11;break}h=(c<<1)+b|0;g=o+-4|0;c=l[p+(f+1)>>0]<<8|l[p+(f+2)>>0];b=(((e&255)<<8|d&255)+65535&65535)+1+(l[p+(f+7)>>0]|0)|0;do if(c){while(1){if((c|0)<(h|0)|(c|0)>(g|0)){t=8;break}d=l[p+c>>0]<<8|l[p+(c+1)>>0];e=l[p+(c+2)>>0]<<8|l[p+(c+3)>>0];c=e+c|0;if(!d){m=e;n=c;q=b;t=12;break}if((d|0)<=(c+3|0)|(c|0)>(o|0))break;c=d;b=e+b|0}if((t|0)==8){k[u>>2]=54634;k[u+4>>2]=10788;gd(11,13600,u);b=11;break a}if((t|0)==12?(n|0)<=(o|0):0){b=m+q|0;break}k[u>>2]=54641;k[u+4>>2]=10788;gd(11,13600,u);b=11;break a}while(0);if((b|0)>(o|0)){k[u>>2]=54655;k[u+4>>2]=10788;gd(11,13600,u);b=11;break}else{j[a+16>>1]=b-h;i[a>>0]=1;b=0;break}}else b=0;while(0);r=v;return b|0}function fq(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;h=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h;d=k[a>>2]|0;e=d+65|0;if(!(i[e>>0]|0)){if((k[d+24>>2]&65536|0)==0?(f=a+4|0,j=k[f>>2]|0,k[g>>2]=(b|0)==0?13552:b,ih(j,d,13560,g),(c|0)!=0):0){b=k[k[f>>2]>>2]|0;k[g>>2]=b;k[g+4>>2]=c;d=Rq(d,b,0,g)|0;k[k[f>>2]>>2]=d}if(!(i[e>>0]|0)){k[g>>2]=105209;k[g+4>>2]=10788;gd(11,13600,g);d=11}else d=7}else d=7;k[a+12>>2]=d;r=h;return}function gq(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=r;r=r+16|0;if((r|0)>=(s|0))ka();l=m;j=a+20|0;a:do if((k[j>>2]|0)>0){g=a+16|0;h=(c|0)==0;i=0;a=0;do{e=(i|0)<2^i;f=k[g>>2]|0;d=k[f+(e<<4)+12>>2]|0;if(!(!h?(id(c,k[f+(e<<4)>>2]|0)|0)!=0:0)){a=gn(d+24|0,b,l)|0;if(a){a=k[a+8>>2]|0;if(a)break a}else a=0}i=i+1|0}while((i|0)<(k[j>>2]|0))}else a=0;while(0);r=m;return a|0}function hq(a){a=a|0;var b=0,c=0,d=0,e=0;e=k[a+8>>2]|0;d=a+46|0;c=j[d>>1]|0;c=(c&65535)>5?5:c&65535;b=j[(k[a+12>>2]|0)+28>>1]|0;j[e>>1]=b<<16>>16<33?33:b;pw(e+2|0,13512,c<<1|0)|0;b=m[d>>1]|0;if(c>>>0>>0)do{c=c+1|0;j[e+(c<<1)>>1]=23;b=m[d>>1]|0}while((c|0)<(b|0));if(i[a+50>>0]|0)j[e+(b<<1)>>1]=0;return}function iq(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,n=0,o=0;n=r;r=r+64|0;if((r|0)>=(s|0))ka();h=n;a:do if((((c|0)!=0?(f=k[c>>2]|0,(f|0)!=0):0)?(l=c+8|0,(k[l>>2]|0)!=0):0)?(e=a+4|0,o=di(k[a>>2]|0,f,k[e>>2]|0)|0,(o|0)!=0):0){d=k[c+4>>2]|0;b:do if(!d)g=11;else{if(!(id(k[c>>2]|0,d)|0)){e=k[o+8>>2]|0;if(!e){g=11;break}while(1){f=i[e+51>>0]|0;if((f&3)==2)break;e=k[e+20>>2]|0;if(!e){g=11;break b}}d=k[l>>2]|0;b=e}else{b=gq(k[a>>2]|0,d,k[e>>2]|0)|0;e=k[l>>2]|0;if(!b)break;f=i[b+51>>0]|0;d=e}l=(m[b+46>>1]|0)+1|0;i[b+51>>0]=f&-5;e=b+8|0;Sq(d,l,k[e>>2]|0,b);if(k[b+36>>2]|0)break a;j[o+28>>1]=j[k[e>>2]>>1]|0;break a}while(0);if((g|0)==11)e=k[l>>2]|0;l=o+42|0;g=h+44|0;j[g>>1]=j[l>>1]|0;Sq(e,1,o+28|0,h);j[l>>1]=j[g>>1]|0}while(0);r=n;return 0}function jq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();f=g;do if(b){if((k[a+12>>2]|0)>>>0>>0){k[f>>2]=b;ln(a,44408,f);c=1;break}d=(k[a+8>>2]|0)+(b>>>3)|0;e=l[d>>0]|0;c=1<<(b&7);if(!(e&c)){i[d>>0]=e|c;c=0;break}else{k[f>>2]=b;ln(a,44432,f);c=1;break}}else c=1;while(0);r=g;return c|0}function kq(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;do if(c){if((b|0)==1){b=c+8|0;k[a>>2]=k[b>>2];k[b>>2]=0;k[c+12>>2]=0;break}b=b+-1|0;c=kq(a,b)|0;d=k[a>>2]|0;if(d){k[d+12>>2]=c;c=d+8|0;k[a>>2]=k[c>>2];b=kq(a,b)|0;k[c>>2]=b;return d|0}}else c=0;while(0);return c|0}function lq(a,b){a=a|0;b=b|0;var c=0;if((i[a+43>>0]|0)==2){c=a+24|0;if((k[c>>2]|0)>0){b=a+32|0;a=0;do{$c(k[(k[b>>2]|0)+(a<<2)>>2]|0);k[(k[b>>2]|0)+(a<<2)>>2]=0;a=a+1|0}while((a|0)<(k[c>>2]|0))}}else{a=k[a+4>>2]|0;wc[k[(k[a>>2]|0)+64>>2]&127](a,b)|0}return}function mq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=r;r=r+16|0;if((r|0)>=(s|0))ka();b=Sg(b)|0;if(b)ih(c,a,Xe(a)|0,d);r=d;return b|0}function nq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a>>2]|0;d=a+16|0;e=a+84|0;hh(k[d>>2]|0,(m[e>>1]|0)<<1);rg(c,k[d>>2]|0);j[e>>1]=b;e=b*80|0;c=rh(c,e,0)|0;if(c){kw(c|0,0,e|0)|0;k[d>>2]=c;if((b|0)>0){e=k[a>>2]|0;d=b<<1;while(1){d=d+-1|0;j[c+8>>1]=1;k[c+32>>2]=e;if((d|0)<=0)break;else c=c+40|0}}}else k[d>>2]=0;return}function oq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(!(i[(k[a>>2]|0)+65>>0]|0)){b=(ha(m[a+84>>1]|0,c)|0)+b|0;ah((k[a+16>>2]|0)+(b*40|0)|0,d,-1,1,e)|0}return}function pq(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;h=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h;f=k[a>>2]|0;e=f+1|0;k[a>>2]=e;if((f|0)>98){c=a+8|0;e=k[c>>2]|0;k[a>>2]=f;do Un(a);while((k[a>>2]|0)>-1);yh(e,37160,g);k[c>>2]=e}else{j[a+(e<<4)+12>>1]=b;i[a+(e<<4)+14>>0]=c;c=a+(e<<4)+16|0;k[c+0>>2]=k[d+0>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2]}r=h;return}function qq(a,b,c){a=a|0;b=b|0;c=c|0;a=k[a+8>>2]|0;switch(b&255|0){case 236:{Mk(k[a>>2]|0,k[c+4>>2]|0);break}case 243:case 238:case 229:case 227:case 216:case 204:case 202:{Lk(k[a>>2]|0,k[c>>2]|0);break}case 213:case 212:case 201:case 194:{Io(k[a>>2]|0,k[c>>2]|0);break}case 207:case 196:case 195:case 163:{Rk(k[a>>2]|0,k[c>>2]|0,1);break}case 223:case 219:case 217:{Mk(k[a>>2]|0,k[c>>2]|0);break}case 175:case 174:{Lk(k[a>>2]|0,k[c>>2]|0);break}case 239:case 234:{Kk(k[a>>2]|0,k[c>>2]|0);break}case 252:case 197:{Vn(k[a>>2]|0,k[c>>2]|0);break}case 228:case 221:case 220:case 210:case 209:case 208:case 205:case 203:case 200:case 188:case 179:{Sk(k[a>>2]|0,k[c>>2]|0);break}default:{}}return} -function Hl(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;o=r;r=r+16|0;if((r|0)>=(s|0))ka();j=o;n=a+16|0;if((l[n>>0]|0)<2?(l[a+17>>0]|0)<2:0)d=0;else{hp(a);m=a+64|0;g=k[m>>2]|0;e=k[g>>2]|0;do if(!e)e=0;else{if((e|0)==14696){Li(g,0,0)|0;k[g>>2]=0;e=0;break}f=i[a+5>>0]|0;if(f<<24>>24==3){f=a+72|0;j=f;if(!((k[j>>2]|0)==0&(k[j+4>>2]|0)==0)){e=fc[k[e+16>>2]&63](g,0,0)|0;if(!e)if(!(i[a+8>>0]|0))e=0;else{e=k[m>>2]|0;e=wc[k[(k[e>>2]|0)+20>>2]&127](e,l[a+11>>0]|0)|0}}else e=0;m=f;k[m>>2]=0;k[m+4>>2]=0;break}else if(f<<24>>24!=1?(i[a+4>>0]|0)==0|f<<24>>24==5:0){m=(i[a+12>>0]|0)==0;qc[k[e+4>>2]&127](g)|0;k[g>>2]=0;if(!m){e=0;break}e=k[a>>2]|0;e=fc[k[e+28>>2]&63](e,k[a+172>>2]|0,0)|0;break}h=a+72|0;f=h;if(!((k[f>>2]|0)==0&(k[f+4>>2]|0)==0)){d=a+160|0;f=k[d>>2]|0;d=k[d+4>>2]|0;if((b|0)!=0|(f|0)==0&(d|0)==0)e=fc[k[e+16>>2]&63](g,0,0)|0;else e=yc[k[e+12>>2]&31](g,14664,28,0,0)|0;if(!e){if(!(i[a+7>>0]|0)){e=k[m>>2]|0;e=wc[k[(k[e>>2]|0)+20>>2]&127](e,l[a+11>>0]|16)|0}else e=0;if((e|0)==0&((d|0)>0|(d|0)==0&f>>>0>0)){e=k[m>>2]|0;e=wc[k[(k[e>>2]|0)+24>>2]&127](e,j)|0;g=k[j+4>>2]|0;if((e|0)==0&((g|0)>(d|0)|((g|0)==(d|0)?(k[j>>2]|0)>>>0>f>>>0:0))){e=k[m>>2]|0;e=fc[k[(k[e>>2]|0)+16>>2]&63](e,f,d)|0}}}}else e=0;m=h;k[m>>2]=0;k[m+4>>2]=0}while(0);f=a+56|0;ji(k[f>>2]|0);k[f>>2]=0;k[a+44>>2]=0;f=a+204|0;d=k[f>>2]|0;b=k[d>>2]|0;if(b){do{Cl(b);b=k[d>>2]|0}while((b|0)!=0);d=k[f>>2]|0}f=a+24|0;ip(d,k[f>>2]|0);g=a+208|0;d=k[g>>2]|0;if(!d){if((e|0)==0&(c|0)!=0){d=k[f>>2]|0;if((k[a+32>>2]|0)>>>0>d>>>0)e=Gl(a,d)|0;else e=0}}else{b=d+44|0;if(i[b>>0]|0){if(!(i[d+43>>0]|0)){m=k[d+4>>2]|0;uc[k[(k[m>>2]|0)+56>>2]&31](m,0,1,9)|0}i[b>>0]=0;i[d+47>>0]=0}}if((e|0)==0&(c|0)!=0){d=k[a+60>>2]|0;e=k[d>>2]|0;if(!e)f=0;else{f=fc[k[e+40>>2]&63](d,22,0)|0;f=(f|0)==12?0:f}}else f=e;do if(!(i[a+4>>0]|0)){d=k[g>>2]|0;if((d|0)!=0?(jp(d,0)|0)==0:0){d=0;break}e=k[a+60>>2]|0;d=k[e>>2]|0;if(d){if(!(i[a+13>>0]|0))d=wc[k[d+32>>2]&127](e,1)|0;else d=0;e=a+17|0;if((i[e>>0]|0)!=5)i[e>>0]=1}else d=0;i[a+18>>0]=0}else d=0;while(0);i[n>>0]=1;i[a+19>>0]=0;d=(f|0)==0?d:f}r=o;return d|0}function Il(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0;f=k[a+4>>2]|0;c=k[a>>2]|0;i[f+19>>0]=0;g=a+8|0;do if(i[g>>0]|0){if((k[c+152>>2]|0)>1){c=f+76|0;if((k[c>>2]|0)==(a|0)?(k[c>>2]=0,b=f+22|0,j[b>>1]=m[b>>1]&65439,b=k[f+72>>2]|0,(b|0)!=0):0)do{i[b+8>>0]=1;b=k[b+12>>2]|0}while((b|0)!=0);i[g>>0]=1;break}c=f+72|0;b=k[c>>2]|0;a:do if(b)do while(1){d=b+12|0;e=k[d>>2]|0;if((k[b>>2]|0)!=(a|0)){c=d;b=e;break}k[c>>2]=e;if((k[b+4>>2]|0)==1)b=e;else{$c(b);b=k[c>>2]|0}if(!b)break a}while((b|0)!=0);while(0);b=f+76|0;if((k[b>>2]|0)!=(a|0)){b=k[f+40>>2]|0;if((b|0)==2){e=f+22|0;j[e>>1]=m[e>>1]&65471;k[f+40>>2]=1;e=20;break}}else{k[b>>2]=0;b=f+22|0;j[b>>1]=m[b>>1]&65439;b=k[f+40>>2]|0}b=b+-1|0;k[f+40>>2]=b;if(!b){i[f+20>>0]=0;e=20}else e=20}else e=20;while(0);if(((e|0)==20?(i[g>>0]=0,(i[f+20>>0]|0)==0):0)?(h=f+12|0,l=k[h>>2]|0,(l|0)!=0):0){k[h>>2]=0;Gg(k[l+68>>2]|0)}return}function Jl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=((k[a+36>>2]|0)>>>0)/5|0;if(b>>>0<2){d=0;f=k[a+32>>2]|0;h=k[2514]|0}else{d=b+-2|0;d=d-((d>>>0)%((g+1|0)>>>0)|0)|0;h=k[2514]|0;f=k[a+32>>2]|0;d=((d+1|0)==((h>>>0)/(f>>>0)|0|0)?3:2)+d|0}d=b-c-(((c-b+g+d|0)>>>0)/(g>>>0)|0)|0;e=a+32|0;a=((h>>>0)/(f>>>0)|0)+1|0;c=((h>>>0)/(f>>>0)|0)+1|0;a=((a>>>0>>0&d>>>0>>0)<<31>>31)+d|0;while(1){if(a>>>0<2)d=0;else{d=a+-2|0;d=d-((d>>>0)%((g+1|0)>>>0)|0)|0;d=((d+1|0)==((h>>>0)/((k[e>>2]|0)>>>0)|0|0)?3:2)+d|0}if(!((d|0)==(a|0)|(a|0)==(c|0)))break;a=a+-1|0}return a|0}function Kl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=(b|0)==0;d=a;a:while(1){do if((d|0)!=(c|0)){if(!e?(k[d+60>>2]|0)!=(b|0):0)break;if(((i[d+73>>0]|0)+-1&255)<2){a=kp(d)|0;if(!a)break;else break a}else{lp(d);break}}while(0);d=k[d+8>>2]|0;if(!d){a=0;break}}return a|0}function Ll(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,t=0,u=0,v=0;v=r;r=r+48|0;if((r|0)>=(s|0))ka();f=v;h=v+32|0;q=v+28|0;g=v+24|0;m=v+20|0;o=v+16|0;t=v+12|0;p=v+8|0;if(c>>>0<2)j=0;else{j=c+-2|0;j=j-((j>>>0)%(((((k[a+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;j=((j+1|0)==(((k[2514]|0)>>>0)/((k[a+32>>2]|0)>>>0)|0|0)?3:2)+j|0}do if((j|0)!=(c|0)?((((k[2514]|0)>>>0)/((k[a+32>>2]|0)>>>0)|0)+1|0)!=(c|0):0){n=k[(k[a+12>>2]|0)+56>>2]|0;if((l[n+37>>0]|0)<<16|(l[n+36>>0]|0)<<24|(l[n+38>>0]|0)<<8|(l[n+39>>0]|0)){e=mp(a,c,h,q)|0;if(!e){n=i[h>>0]|0;if(n<<24>>24==2){if(d){e=0;break}e=np(a,m,g,c,1)|0;if(e)break;f=k[m>>2]|0;if(!f){u=24;break}Gg(k[f+68>>2]|0);u=24;break}else if(n<<24>>24!=1){e=il(a,c,t,0)|0;if(e)break;f=(d|0)==0;h=f?2:0;f=f?b:0;g=(d|0)!=0;do{e=np(a,p,o,f,h)|0;if(e){u=16;break}j=k[p>>2]|0;if(j)Gg(k[j+68>>2]|0);j=k[o>>2]|0}while(g&j>>>0>b>>>0);if((u|0)==16){f=k[t>>2]|0;if(!f)break;Gg(k[f+68>>2]|0);break}h=k[t>>2]|0;e=cn(a,h,n,k[q>>2]|0,j,d)|0;if(h)Gg(k[h+68>>2]|0);if(!e){u=24;break}else break}else{k[f>>2]=56228;k[f+4>>2]=10788;gd(11,13600,f);e=11;break}}}else e=101}else u=24;while(0);if((u|0)==24)if(!d){g=((k[2514]|0)>>>0)/((k[a+32>>2]|0)>>>0)|0;h=g+1|0;j=a+36|0;f=c;while(1){e=f+-1|0;if((e|0)==(h|0)){f=e;continue}if(e>>>0<2)f=0;else{f=f+-3|0;f=f-((f>>>0)%(((((k[j>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;f=((f+1|0)==(g|0)?3:2)+f|0}if((f|0)==(e|0))f=e;else break}i[a+19>>0]=1;k[a+44>>2]=e;e=0}else e=0;r=v;return e|0}function Ml(a){a=a|0;var b=0,c=0,d=0;d=a+16|0;c=i[d>>0]|0;a:do if(c<<24>>24!=6)if((c&255)>=2){do if(!(k[a+208>>2]|0)){if(!(c<<24>>24==2?1:(k[k[a+64>>2]>>2]|0)==0)){b=Po(a,0)|0;break}b=Hl(a,0,0)|0;if((i[a+15>>0]|0)==0&(c&255)>2){k[a+40>>2]=4;i[d>>0]=6;break a}}else{b=op(a,2,-1)|0;c=Hl(a,l[a+19>>0]|0,0)|0;b=(b|0)==0?c:b}while(0);c=b&255;if((c|0)==10|(c|0)==13){k[a+40>>2]=b;i[d>>0]=6}}else b=0;else b=k[a+40>>2]|0;while(0);return b|0}function Nl(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;a:do if((a|0)!=0?(e=k[a+4>>2]|0,k[e+4>>2]=k[a>>2],e=k[e+8>>2]|0,(e|0)!=0):0){l=(c|0)==0;while(1){if(!l?(i[e+72>>0]&1)==0:0){if(((i[e+73>>0]|0)+-1&255)<2?(d=kp(e)|0,(d|0)!=0):0)break}else{c=e+56|0;$c(k[c>>2]|0);k[c>>2]=0;i[e+73>>0]=4;k[e+68>>2]=b}c=e+76|0;if((j[c>>1]|0)>=0){h=0;while(1){f=e+(h<<2)+120|0;g=k[f>>2]|0;if(g)Gg(k[g+68>>2]|0);k[f>>2]=0;if((h|0)<(j[c>>1]|0))h=h+1|0;else break}}e=k[e+8>>2]|0;if(!e)break a}Nl(a,d,0)|0;return d|0}while(0);return 0}function Ol(a){a=a|0;var b=0,c=0,d=0;a:do if(!(k[a+4>>2]|0)){c=k[a+20>>2]|0;if((c|0)>0){a=k[a+16>>2]|0;b=0;while(1){d=k[a+(b<<4)+4>>2]|0;if((d|0)!=0?(k[d+16>>2]|0)!=0:0){a=1;break a}b=b+1|0;if((b|0)>=(c|0)){a=0;break}}}else a=0}else a=1;while(0);return a|0}function Pl(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;c=k[3164]|0;if(c)sc[c&3]();l=a+20|0;g=k[l>>2]|0;f=(g|0)>0;if(f){c=k[a+16>>2]|0;e=0;do{d=k[c+(e<<4)+4>>2]|0;if(d)k[(k[d+4>>2]|0)+4>>2]=k[d>>2];e=e+1|0}while((e|0)!=(g|0))}m=a+24|0;if(!(k[m>>2]&2))c=1;else c=(i[a+145>>0]|0)!=0;if(f){h=a+16|0;c=c&1;f=g;g=0;e=0;while(1){d=k[(k[h>>2]|0)+(g<<4)+4>>2]|0;if(!d)d=f;else{e=(i[d+8>>0]|0)==2?1:e;Qg(d,b,c);d=k[l>>2]|0}g=g+1|0;if((g|0)>=(d|0))break;else f=d}}else e=0;Wn(a,68);c=k[3166]|0;if(c)sc[c&3]();c=k[m>>2]|0;if((c&2|0)!=0?(i[a+145>>0]|0)==0:0){c=k[a+4>>2]|0;if(c)do{d=c+88|0;j[d>>1]=j[d>>1]|8;c=k[c+52>>2]|0}while((c|0)!=0);Jg(a);c=k[m>>2]|0}d=a+504|0;k[d+0>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[m>>2]=c&-16777217;c=k[a+204>>2]|0;do if(c){if((e|0)==0?(i[a+63>>0]|0)!=0:0)break;hc[c&31](k[a+200>>2]|0)}while(0);return}function Ql(a){a=a|0;var b=0,c=0;c=a+488|0;b=k[c>>2]|0;if(b)do{k[c>>2]=k[b+24>>2];rg(a,b);b=k[c>>2]|0}while((b|0)!=0);k[a+496>>2]=0;k[a+500>>2]=0;i[a+70>>0]=0;return}function Rl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=k[a+4>>2]|0;k[f+4>>2]=k[a>>2];c=k[f+8>>2]|0;if(c)do{b=c;c=k[c+8>>2]|0;if((k[b>>2]|0)==(a|0))pp(b)}while((c|0)!=0);Qg(a,0,0);a:do if(i[a+9>>0]|0){c=f+64|0;b=k[c>>2]|0;k[c>>2]=b+-1;if((b|0)<2){b=k[3664]|0;if((b|0)==(f|0)){k[3664]=k[f+68>>2];d=12;break}else c=b;do{if(!c){d=12;break a}b=c+68|0;c=k[b>>2]|0}while((c|0)!=(f|0));k[b>>2]=k[f+68>>2];d=12}}else d=12;while(0);if((d|0)==12){qp(k[f>>2]|0);b=k[f+52>>2]|0;c=f+48|0;if((b|0)!=0?(e=k[c>>2]|0,(e|0)!=0):0)hc[b&31](e);b=k[c>>2]|0;if(b)$c(b);b=f+80|0;c=k[b>>2]|0;if(c){c=c+-4|0;k[b>>2]=c;el(c);k[b>>2]=0}$c(f)}c=k[a+28>>2]|0;b=a+24|0;if(c)k[c+24>>2]=k[b>>2];b=k[b>>2]|0;if(b)k[b+28>>2]=c;$c(a);return}function Sl(a,b){a=a|0;b=b|0;var c=0;b=k[b+32>>2]|0;if((b|0)!=0?(c=(k[b>>2]|0)+-1|0,k[b>>2]=c,(c|0)==0):0){hc[k[b+4>>2]&31](k[b+8>>2]|0);rg(a,b)}return}function Tl(a){a=a|0;var b=0,c=0;c=a+8|0;b=k[c>>2]|0;k[c>>2]=0;c=a+12|0;$c(k[c>>2]|0);k[c>>2]=0;k[a>>2]=0;if(b)do{c=b;b=k[b>>2]|0;$c(c)}while((b|0)!=0);k[a+4>>2]=0;return}function Ul(a){a=a|0;var b=0,c=0,d=0,e=0;if(a){d=k[a>>2]|0;qg(d,a);e=k[a+48>>2]|0;c=a+52|0;b=k[c>>2]|0;if(!e)k[d+4>>2]=b;else{k[e+52>>2]=b;b=k[c>>2]|0}if(b)k[b+48>>2]=e;k[a+40>>2]=-1241070648;k[a>>2]=0;rg(d,a)}return}function Vl(a){a=a|0;var b=0;i[a+65>>0]=0;k[a+52>>2]=7;a=k[a+236>>2]|0;do if(a){b=a+8|0;if(!(j[b>>1]&9312)){j[b>>1]=1;break}else{Ag(a);break}}while(0);return}function Wl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=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;E=r;r=r+32|0;if((r|0)>=(s|0))ka();u=E;x=E+16|0;o=E+12|0;p=E+8|0;D=k[a>>2]|0;if(i[D+65>>0]|0)k[a+80>>2]=7;c=k[a+200>>2]|0;if(c)kw(c|0,0,k[a+196>>2]|0)|0;e=a+176|0;c=k[e>>2]|0;if(c){while(1){d=k[c+4>>2]|0;if(!d)break;else c=d}am(c)|0;k[e>>2]=0;k[a+184>>2]=0}l=a+56|0;c=k[l>>2]|0;a:do if((c|0)!=0?(n=a+36|0,b=k[n>>2]|0,(b|0)>0):0){e=0;while(1){d=k[c+(e<<2)>>2]|0;if(!d)d=b;else{Gm(a,d);k[(k[l>>2]|0)+(e<<2)>>2]=0;d=k[n>>2]|0}e=e+1|0;if((e|0)>=(d|0))break a;c=k[l>>2]|0;b=d}}while(0);c=k[a+8>>2]|0;if(c)hh(c+40|0,k[a+28>>2]|0);n=a+180|0;c=k[n>>2]|0;if(c)do{k[n>>2]=k[c+4>>2];l=c+80|0;b=c+60|0;d=k[b>>2]|0;g=l+(d*40|0)|0;h=c+64|0;if((k[h>>2]|0)>0){e=0;do{Gm(k[c>>2]|0,k[g+(e<<2)>>2]|0);e=e+1|0}while((e|0)<(k[h>>2]|0));d=k[b>>2]|0}hh(l,d);rg(k[k[c>>2]>>2]|0,c);c=k[n>>2]|0}while((c|0)!=0);if(k[a+204>>2]|0)jm(a,-1,0);B=a+40|0;b:do if((k[B>>2]|0)==-1108210269){z=a+76|0;if((k[z>>2]|0)>-1){A=a+88|0;h=j[A>>1]|0;if(h&128){y=a+80|0;e=k[y>>2]|0;g=e&255;d=g+-7|0;do if(d>>>0<7?(f=(77>>>(d&127)&1)!=0,f):0)if((h&64)==0|(g|0)!=9){if((g|0)==7|(g|0)==13?(h&32)!=0:0){b=2;break}Pl(D,516);Ql(D);i[D+63>>0]=1;k[a+92>>2]=0;e=k[y>>2]|0;b=0}else{f=1;b=0}else{f=0;b=0}while(0);if((e|0)==0?(w=a+144|0,v=k[w+4>>2]|0,(v|0)>0|(v|0)==0&(k[w>>2]|0)>>>0>0):0){w=k[a>>2]|0;k[y>>2]=787;i[a+86>>0]=2;ih(a+44|0,w,34376,u)}g=D+304|0;if((k[g>>2]|0)>0?(k[D+328>>2]|0)==0:0)C=141;else if((i[D+63>>0]|0)!=0?(k[D+156>>2]|0)==(((m[A>>1]|0)>>>6&1^1)&65535|0):0){do if(!(k[y>>2]|0))C=41;else{if(!((i[a+86>>0]|0)!=3|f)){C=41;break}Pl(D,0);k[a+92>>2]=0}while(0);c:do if((C|0)==41){d:do if(ym(a,1)|0)if(!(j[A>>1]&64))c=787;else{b=1;break b}else{f=D+328|0;d=k[f>>2]|0;k[f>>2]=0;e=k[g>>2]|0;e:do if((e|0)>0){h=0;f:while(1){n=k[(k[d+(h<<2)>>2]|0)+8>>2]|0;do if(n){l=k[(k[n>>2]|0)+60>>2]|0;if(!l)break;c=qc[l&127](n)|0;Rm(a,n);if(c)break f;e=k[g>>2]|0}while(0);h=h+1|0;if((h|0)>=(e|0)){C=50;break e}}k[f>>2]=d;C=135}else C=50;while(0);g:do if((C|0)==50){k[f>>2]=d;v=D+20|0;w=D+16|0;l=0;e=0;h=0;h:while(1){g=k[v>>2]|0;if((l|0)>=(g|0)){d=e;break}f=k[w>>2]|0;n=l;while(1){l=k[f+(n<<4)+4>>2]|0;if((l|0)!=0?(i[l+8>>0]|0)==2:0)break;n=n+1|0;if((n|0)>=(g|0)){d=e;break h}}c=k[l+4>>2]|0;k[c+4>>2]=k[l>>2];c=gp(k[c>>2]|0)|0;if(!c){l=n+1|0;e=((n|0)!=1&1)+e|0;h=1}else{C=135;break g}}do if(h){f=k[D+196>>2]|0;if(!f)break;if(qc[f&127](k[D+192>>2]|0)|0){c=531;break d}}while(0);e=k[(k[w>>2]|0)+4>>2]|0;h=k[k[e+4>>2]>>2]|0;g=(i[h+15>>0]|0)==0;if(g){n=k[h+168>>2]|0;if(n)C=62}else{n=10360;C=62}do if((C|0)==62){l=n;while(1)if(!(i[l>>0]|0))break;else l=l+1|0;if((l-n&1073741823|0)==0|(d|0)<2)break;t=k[D>>2]|0;if(g){f=k[h+168>>2]|0;k[x>>2]=0;if(!f){n=0;f=0}else C=80}else{k[x>>2]=0;f=10360;C=80}if((C|0)==80){h=f;while(1)if(!(i[h>>0]|0))break;else h=h+1|0;n=h-f&1073741823}k[u>>2]=f;q=zh(D,44696,u)|0;if(!q){c=7;break d}n=q+n|0;l=t+32|0;h=0;i:while(1){do if(h){if((h|0)>100){C=87;break i}if((h|0)!=1)break;k[u>>2]=q;gd(13,44728,u)}while(0);hd(4,p);c=k[p>>2]|0;k[u>>2]=c>>>8;k[u+4>>2]=c&255;fd(13,n,44744,u)|0;c=uc[k[l>>2]&31](t,q,0,o)|0;g=(c|0)==0;if(g&(k[o>>2]|0)!=0)h=h+1|0;else{C=91;break}}if((C|0)==87){k[u>>2]=q;gd(13,44712,u);fc[k[t+28>>2]&63](t,q,0)|0;C=92}else if((C|0)==91)if(g)C=92;do if((C|0)==92){c=rp(t,q,x,16406,0)|0;if(c)break;f=k[v>>2]|0;j:do if((f|0)>0){o=0;l=0;p=0;h=0;k:while(1){n=k[(k[w>>2]|0)+(p<<4)+4>>2]|0;do if(!n)n=o;else{if((i[n+8>>0]|0)!=2){n=o;break}g=k[n+4>>2]|0;e=k[g>>2]|0;d=k[e+172>>2]|0;if(!d){n=o;break}if(!h){k[g+4>>2]=k[n>>2];h=(i[e+7>>0]|0)==0&1}e=k[x>>2]|0;n=d;while(1)if(!(i[n>>0]|0))break;else n=n+1|0;g=d;c=yc[k[(k[e>>2]|0)+12>>2]&31](e,d,(n-g&1073741823)+1|0,o,l)|0;n=d;while(1)if(!(i[n>>0]|0))break;else n=n+1|0;if(c){f=e;C=106;break k}n=ow((n-g&1073741823)+1|0,0,o|0,l|0)|0;f=k[v>>2]|0;l=L}while(0);p=p+1|0;if((p|0)>=(f|0))break;else o=n}if((C|0)==106){d=k[f>>2]|0;if(d){qc[k[d+4>>2]&127](e)|0;k[f>>2]=0}$c(e);fc[k[t+28>>2]&63](t,q,0)|0;rg(D,q);C=135;break g}do if(!h)h=0;else{g=k[x>>2]|0;if((qc[k[(k[g>>2]|0)+48>>2]&127](g)|0)&1024)break;c=wc[k[(k[g>>2]|0)+20>>2]&127](g,2)|0;if(!c)break;d=k[g>>2]|0;if(d){qc[k[d+4>>2]&127](g)|0;k[g>>2]=0}$c(g);fc[k[t+28>>2]&63](t,q,0)|0;rg(D,q);C=135;break g}while(0);e=k[v>>2]|0;if((e|0)>0)n=0;else{n=1;c=0;break}while(1){g=k[(k[w>>2]|0)+(n<<4)+4>>2]|0;if(g){c=Pg(g,q)|0;if(c){n=0;break j}e=k[v>>2]|0}n=n+1|0;if((n|0)>=(e|0)){n=1;c=0;break}}}else{n=1;h=0;c=0}while(0);g=k[x>>2]|0;f=k[g>>2]|0;if(f){qc[k[f+4>>2]&127](g)|0;k[g>>2]=0}$c(g);if(!n){rg(D,q);C=135;break g}c=fc[k[t+28>>2]&63](t,q,h)|0;rg(D,q);if(c){C=135;break g}c=k[3164]|0;if(c)sc[c&3]();c=k[v>>2]|0;if((c|0)>0){e=0;do{d=k[(k[w>>2]|0)+(e<<4)+4>>2]|0;if(d){Og(d,1)|0;c=k[v>>2]|0}e=e+1|0}while((e|0)<(c|0))}c=k[3166]|0;if(c)sc[c&3]();Wn(D,64);break g}while(0);rg(D,q);C=135;break g}while(0);c=k[v>>2]|0;do if((c|0)>0){d=1;while(1){if(e){c=Pg(e,0)|0;if(c){C=135;break g}c=k[v>>2]|0}if((d|0)>=(c|0))break;e=k[(k[w>>2]|0)+(d<<4)+4>>2]|0;d=d+1|0}if((c|0)>0)e=0;else break;do{d=k[(k[w>>2]|0)+(e<<4)+4>>2]|0;if(d){c=Og(d,0)|0;if(c){C=135;break g}c=k[v>>2]|0}e=e+1|0}while((e|0)<(c|0))}while(0);Wn(D,64)}while(0);do if((C|0)==135){if(!c)break;else if((c|0)!=5)break d;if(!(j[A>>1]&64)){c=5;break d}else{b=5;break b}}while(0);x=D+504|0;C=D+24|0;k[x+0>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[C>>2]=k[C>>2]&-16777219;break c}while(0);k[y>>2]=c;Pl(D,0);k[a+92>>2]=0}while(0);k[D+500>>2]=0;C=146}else C=141;do if((C|0)==141)if(!b)if(k[y>>2]|0){c=i[a+86>>0]|0;if(c<<24>>24==2){b=2;C=147;break}else if(c<<24>>24==3){b=1;C=147;break}else{Pl(D,516);Ql(D);i[D+63>>0]=1;k[a+92>>2]=0;C=146;break}}else{b=1;C=147}else C=147;while(0);if((C|0)==146)if(!b)b=0;else C=147;if((C|0)==147){c=em(a,b)|0;if(c){C=k[y>>2]|0;if((C|0)==0|(C&255|0)==19){k[y>>2]=c;C=a+44|0;rg(D,k[C>>2]|0);k[C>>2]=0}Pl(D,516);Ql(D);i[D+63>>0]=1;k[a+92>>2]=0}}if(j[A>>1]&4){if((b|0)==2){k[D+80>>2]=0;b=a+92|0}else{b=a+92|0;y=k[b>>2]|0;k[D+80>>2]=y;C=D+84|0;k[C>>2]=(k[C>>2]|0)+y}k[b>>2]=0}}if((k[z>>2]|0)>-1){b=D+148|0;k[b>>2]=(k[b>>2]|0)+-1;b=j[A>>1]|0;if(!(b&64)){b=D+156|0;k[b>>2]=(k[b>>2]|0)+-1;b=j[A>>1]|0}if(b&128){C=D+152|0;k[C>>2]=(k[C>>2]|0)+-1}}}k[B>>2]=1369188723;b=a+80|0;if(!(i[(k[a>>2]|0)+65>>0]|0)){b=(k[b>>2]|0)==5?5:0;break}else{k[b>>2]=7;b=0;break}}else b=0;while(0);r=E;return b|0}function Xl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=a+8|0;d=m[e>>1]|0;do if(d&18){j[e>>1]=d|2;if(d&16384)Wg(a)|0;c=a+10|0;b=b&255;d=b&247;if((l[c>>0]|0|0)!=(d|0))bm(a,d)|0;if(((b&8|0)!=0?(k[a+16>>2]&1|0)!=0:0)?(_l(a)|0)!=0:0){c=0;break}if((j[e>>1]&514)==2){fm(a)|0;f=12}else f=12}else{gm(a,b,0)|0;d=b&247;c=a+10|0;f=12}while(0);if((f|0)==12)if((l[c>>0]|0|0)==(d|0))c=k[a+16>>2]|0;else c=0;return c|0}function Yl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0,h=0.0,j=0,k=0,m=0,n=0,o=0,q=0,r=0,s=0;p[b>>3]=0.0;g=d&255;if(d<<24>>24==1){d=a;e=c;o=1;s=0}else{e=3-g|0;a:do if((e|0)<(c|0))while(1){d=e+2|0;if(i[a+e>>0]|0){c=1;break a}if((d|0)<(c|0))e=d;else{c=0;e=d;break}}else c=0;while(0);d=a+(g&1)|0;e=g+-3+e|0;o=2;s=c}r=a+e|0;b:do if(d>>>0>>0){while(1){e=i[d>>0]|0;if(!(i[10368+(e&255)>>0]&1))break;d=d+o|0;if(d>>>0>=r>>>0){d=0;break b}}if(e<<24>>24==45){d=d+o|0;q=-1}else if(e<<24>>24==43){d=d+o|0;q=1}else q=1;c:do if(d>>>0>>0){e=0;do{if((i[d>>0]|0)!=48)break c;d=d+o|0;e=e+1|0}while(d>>>0>>0)}else e=0;while(0);d:do if(d>>>0>>0){a=0;g=0;while(1){c=i[d>>0]|0;if(!(((c&255)+-48|0)>>>0<10&((a|0)<214748364|(a|0)==214748364&g>>>0<3435973835))){j=a;break d}g=xw(g|0,a|0,10,0)|0;a=(c<<24>>24)+-48|0;g=ow(a|0,((a|0)<0)<<31>>31|0,g|0,L|0)|0;a=L;d=d+o|0;e=e+1|0;if(d>>>0>=r>>>0){j=a;break}}}else{g=0;j=0}while(0);e:do if(d>>>0>>0){c=0;while(1){a=i[d>>0]|0;if(((a&255)+-48|0)>>>0>=10){k=c;break}d=d+o|0;e=e+1|0;a=c+1|0;if(d>>>0>>0)c=a;else{m=j;k=a;a=0;j=1;c=1;break e}}f:do if(a<<24>>24==46){c=d+o|0;g:do if(c>>>0>>0){m=c;while(1){a=i[m>>0]|0;if(!(((a&255)+-48|0)>>>0<10&((j|0)<214748364|(j|0)==214748364&g>>>0<3435973835))){c=m;m=j;break g}g=xw(g|0,j|0,10,0)|0;j=(a<<24>>24)+-48|0;g=ow(j|0,((j|0)<0)<<31>>31|0,g|0,L|0)|0;j=L;e=e+1|0;a=k+-1|0;c=d+(o<<1)|0;if(c>>>0>>0){d=m;m=c;k=a}else{d=m;m=j;k=a;break}}}else m=j;while(0);if(c>>>0>>0){j=o<<1;while(1){if(((l[c>>0]|0)+-48|0)>>>0>=10)break f;a=d+j|0;e=e+1|0;if(a>>>0>>0){d=c;c=a}else{c=a;break}}}}else{c=d;m=j}while(0);if(c>>>0>>0){n=i[c>>0]|0;h:do if(n<<24>>24==69|n<<24>>24==101){d=c+o|0;if(d>>>0>=r>>>0){a=0;j=0;c=1;break e}a=i[d>>0]|0;if(a<<24>>24==45){d=c+(o<<1)|0;n=-1}else if(a<<24>>24==43){d=c+(o<<1)|0;n=1}else n=1;if(d>>>0>>0){c=0;j=0}else{a=0;j=0;c=n;break e}while(1){a=i[d>>0]|0;if(((a&255)+-48|0)>>>0>=10){a=c;c=n;break h}if((c|0)<1e4)a=(c*10|0)+-48+(a<<24>>24)|0;else a=1e4;d=d+o|0;if(d>>>0>>0){c=a;j=1}else{j=1;c=n;break}}}else{d=c;a=0;j=1;c=1}while(0);if((e|0)!=0&(j|0)!=0&d>>>0>>0)do{if(!(i[10368+(l[d>>0]|0)>>0]&1))break e;d=d+o|0}while(d>>>0>>0)}else{d=c;a=0;j=1;c=1}}else{m=j;k=0;a=0;j=1;c=1}while(0);a=(ha(a,c)|0)+k|0;n=(a|0)<0;c=n?0-a|0:a;do if((g|0)==0&(m|0)==0)if((q|0)<0)f=(e|0)!=0?-0.0:0.0;else f=0.0;else{if((a>>31|1|0)>0)if(((m|0)<214748364|(m|0)==214748364&g>>>0<3435973836)&(c|0)>0){a=m;do{c=c+-1|0;g=xw(g|0,a|0,10,0)|0;a=L}while(((a|0)<214748364|(a|0)==214748364&g>>>0<3435973836)&(c|0)>0)}else a=m;else{k=ww(g|0,m|0,10,0)|0;if((k|0)==0&(L|0)==0&(c|0)>0){a=m;do{c=c+-1|0;g=vw(g|0,a|0,10,0)|0;a=L;m=ww(g|0,a|0,10,0)|0}while((m|0)==0&(L|0)==0&(c|0)>0)}else a=m}m=(q|0)<0;k=iw(0,0,g|0,a|0)|0;k=m?k:g;m=m?L:a;if(!c){f=+(k>>>0)+4294967296.0*+(m|0);break}if((c+-308|0)>>>0<34){if(!((c|0)%308|0))h=1.0;else{f=1.0;do{f=f*10.0;c=c+-1|0}while(((c|0)%308|0|0)!=0);h=f}f=+(k>>>0)+4294967296.0*+(m|0);if(n){f=f/h/1.e+308;break}else{f=f*h*1.e+308;break}}if((c|0)>341){f=+(k>>>0)+4294967296.0*+(m|0);if(n){f=f*0.0;break}else{f=f*B;break}}if(!((c|0)%22|0)){g=c;f=1.0}else{g=c;f=1.0;do{f=f*10.0;g=g+-1|0}while(((g|0)%22|0|0)!=0)}if((g|0)>0){do{f=f*1.0e22;g=g+-22|0}while((g|0)>0);h=f}else h=f;f=+(k>>>0)+4294967296.0*+(m|0);if(n){f=f/h;break}else{f=f*h;break}}while(0);p[b>>3]=f;d=d>>>0>=r>>>0&(e|0)>0&(j|0)!=0&(s|0)==0&1}else d=0;while(0);return d|0}function Zl(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,p=0;g=d&255;if(d<<24>>24==1){e=a;f=c;n=1;c=0}else{f=3-g|0;a:do if((f|0)<(c|0))while(1){d=f+2|0;if(i[a+f>>0]|0){c=1;break a}if((d|0)<(c|0))f=d;else{c=0;f=d;break}}else c=0;while(0);e=a+(g&1)|0;f=g+-3+f|0;n=2}j=a+f|0;b:do if(e>>>0>>0){while(1){f=i[e>>0]|0;if(!(i[10368+(f&255)>>0]&1))break;e=e+n|0;if(e>>>0>=j>>>0){l=0;break b}}if(f<<24>>24==45){e=e+n|0;l=1;break}else if(f<<24>>24==43){e=e+n|0;l=0;break}else{l=0;break}}else l=0;while(0);c:do if(e>>>0>>0){f=e;while(1){if((i[f>>0]|0)!=48){m=f;break c}f=f+n|0;if(f>>>0>=j>>>0){m=f;break}}}else m=e;while(0);do if(m>>>0>>0){a=m;h=0;g=0;f=0;while(1){d=i[a>>0]|0;if((d+-48&255)>=10){a=0;j=g;break}g=xw(h|0,g|0,10,0)|0;h=d<<24>>24;g=ow(g|0,L|0,-48,-1)|0;h=ow(g|0,L|0,h|0,((h|0)<0)<<31>>31|0)|0;g=L;f=f+n|0;a=m+f|0;if(a>>>0>=j>>>0){a=1;j=g;break}}g=d<<24>>24;d=(l|0)!=0;if((j|0)>=0)if(d){d=j;p=22;break}else{d=j;p=23;break}else{h=b;k[h>>2]=d?0:-1;k[h+4>>2]=d?-2147483648:2147483647;h=d?0:2;break}}else if(!l){a=1;h=0;d=0;g=0;f=0;p=23}else{a=1;h=0;d=0;g=0;f=0;p=22}while(0);if((p|0)==22){l=iw(0,0,h|0,d|0)|0;h=b;k[h>>2]=l;k[h+4>>2]=L;h=0}else if((p|0)==23){l=b;k[l>>2]=h;k[l+4>>2]=d;h=2}if(((g|0)==0|a?!((f|0)==0&(e|0)==(m|0)):0)?(o=n*19|0,!((f|0)>(o|0)|(c|0)!=0)):0)if((f|0)>=(o|0)){f=0;do{e=m+(ha(f,n)|0)|0;e=i[e>>0]|0;c=i[11192+f>>0]|0;f=f+1|0;d=e<<24>>24==c<<24>>24}while(d&(f|0)<18);if(d)e=(i[m+(n*18|0)>>0]|0)+-56|0;else e=((e<<24>>24)-(c<<24>>24)|0)*10|0;if((e|0)>=0)return ((e|0)>0?1:h)|0;else e=0}else e=0;else e=1;return e|0}function _l(a){a=a|0;var b=0,c=0;c=a+8|0;b=j[c>>1]|0;if(b&16384){Wg(a)|0;b=j[c>>1]|0}do if(b&18){if((k[a+24>>2]|0)!=0?(k[a+16>>2]|0)==(k[a+20>>2]|0):0){b=0;break}b=a+12|0;if(!(jh(a,(k[b>>2]|0)+2|0,1)|0)){a=a+16|0;i[(k[a>>2]|0)+(k[b>>2]|0)>>0]=0;i[(k[a>>2]|0)+((k[b>>2]|0)+1)>>0]=0;j[c>>1]=m[c>>1]|0|512;b=0}else b=7}else b=0;while(0);return b|0}function $l(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=wo(a,b,c,d)|0;if(!c)rg(a,b);return c|0}function am(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=k[a>>2]|0;k[c+200>>2]=k[a+20>>2];k[c+196>>2]=k[a+56>>2];k[c+4>>2]=k[a+8>>2];k[c+32>>2]=k[a+48>>2];k[c+8>>2]=k[a+16>>2];k[c+28>>2]=k[a+52>>2];k[c+56>>2]=k[a+24>>2];k[c+36>>2]=k[a+40>>2];f=a+32|0;e=k[f+4>>2]|0;b=k[c>>2]|0;d=b+32|0;k[d>>2]=k[f>>2];k[d+4>>2]=e;k[c+92>>2]=k[a+68>>2];k[b+80>>2]=k[a+72>>2];return k[a+44>>2]|0}function bm(a,b){a=a|0;b=b|0;if((j[a+8>>1]&2)!=0?(l[a+10>>0]|0|0)!=(b|0):0)b=Gn(a,b&255)|0;else b=0;return b|0}function cm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=a+8|0;if(j[d>>1]&9312)Ag(a);k[a+0>>2]=k[b+0>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2];k[a+12>>2]=k[b+12>>2];k[a+16>>2]=k[b+16>>2];if(!(j[b+8>>1]&2048))j[d>>1]=(m[d>>1]|0)&58367|c;return}function dm(a,b){a=a|0;b=b|0;var c=0,d=0;if(!((j[a+8>>1]&9312)==0?(k[a+24>>2]|0)==0:0))Vg(a);a=a+0|0;c=b+0|0;d=a+40|0;do{k[a>>2]=k[c>>2];a=a+4|0;c=c+4|0}while((a|0)<(d|0));j[b+8>>1]=1;k[b+24>>2]=0;return}function em(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;p=k[a>>2]|0;m=p+500|0;e=k[m>>2]|0;do if((e|0)!=0?(n=a+104|0,d=k[n>>2]|0,(d|0)!=0):0){o=d+-1|0;j=p+20|0;d=k[j>>2]|0;if((d|0)>0){h=p+16|0;i=(b|0)==2;f=d;g=0;d=0;do{e=k[(k[h>>2]|0)+(g<<4)+4>>2]|0;if(e){if(i?(l=zm(e,2,o)|0,(l|0)!=0):0)e=l;else e=zm(e,1,o)|0;f=k[j>>2]|0;d=(d|0)==0?e:d}g=g+1|0}while((g|0)<(f|0));k[m>>2]=(k[m>>2]|0)+-1;k[n>>2]=0;if(!d)d=13;else{c=d;d=16}}else{k[m>>2]=e+-1;k[n>>2]=0;d=13}do if((d|0)==13){if((b|0)==2?(c=xm(p,2,o)|0,(c|0)!=0):0)break;c=xm(p,1,o)|0;d=16}while(0);if((d|0)==16)if((b|0)!=2)break;m=a+152|0;l=k[m+4>>2]|0;j=p+504|0;k[j>>2]=k[m>>2];k[j+4>>2]=l;j=a+160|0;l=k[j+4>>2]|0;m=p+512|0;k[m>>2]=k[j>>2];k[m+4>>2]=l}else c=0;while(0);return c|0}function fm(a){a=a|0;var b=0,c=0;b=a+12|0;if(!(jh(a,(k[b>>2]|0)+2|0,1)|0)){c=a+16|0;i[(k[c>>2]|0)+(k[b>>2]|0)>>0]=0;i[(k[c>>2]|0)+((k[b>>2]|0)+1)>>0]=0;b=a+8|0;j[b>>1]=m[b>>1]|0|512;b=0}else b=7;return b|0}function gm(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,n=0,o=0;l=r;r=r+16|0;if((r|0)>=(s|0))ka();g=l;h=a+8|0;e=j[h>>1]|0;if(!(kh(a,32)|0)){d=a+16|0;f=k[d>>2]|0;if(!(e&4)){p[t>>3]=+p[a>>3];k[g>>2]=k[t>>2];k[g+4>>2]=k[t+4>>2];fd(32,f,20272,g)|0}else{o=a;n=k[o+4>>2]|0;e=g;k[e>>2]=k[o>>2];k[e+4>>2]=n;fd(32,f,19920,g)|0}e=k[d>>2]|0;if(!e)d=0;else{d=e;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;d=d-e&1073741823}k[a+12>>2]=d;i[a+10>>0]=1;d=m[h>>1]|514;j[h>>1]=c<<24>>24==0?d:d&65523;bm(a,b&255)|0;d=0}else d=7;r=l;return d|0}function hm(a){a=a|0;var b=0,c=0;b=m[a+8>>1]|0;c=b&12;if(!c)if(!(b&18))b=0;else b=sp(a)|0;else b=c&65535;return b|0}function im(a){a=a|0;var b=0.0,c=0,d=0,e=0,f=0;b=+p[a>>3];if(!(b<=-9223372036854775808.0)&!(b>=9223372036854775808.0)?(c=~~b>>>0,d=+W(b)>=1.0?(b>0.0?~~+ia(+V(b/4294967296.0),4294967295.0)>>>0:~~+ga((b-+(~~b>>>0))/4294967296.0)>>>0):0,e=ow(c|0,d|0,1,-2147483648)|0,f=L,!(b!=+(c>>>0)+4294967296.0*+(d|0)|(f>>>0<0|(f|0)==0&e>>>0<2))):0){e=a;k[e>>2]=c;k[e+4>>2]=d;c=a+8|0;j[c>>1]=(m[c>>1]|0)&48640|4}return}function jm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=a+204|0;d=k[e>>2]|0;a:do if(d){g=(b|0)<0;do{while(1){if(!g){if((k[d>>2]|0)!=(b|0))break;f=k[d+4>>2]|0;if((f|0)<=31?(1<>2]|0;if(f)hc[f&31](k[d+8>>2]|0);k[e>>2]=k[d+16>>2];rg(k[a>>2]|0,d);d=k[e>>2]|0;if(!d)break a}e=d+16|0;d=k[e>>2]|0}while((d|0)!=0)}while(0);return}function km(a,b,c){a=a|0;b=b|0;c=c|0;do if(b<<24>>24>66){b=m[a+8>>1]|0;if(!(b&4)){if(b&8){im(a);break}if(b&2)wh(a,1)}}else if(b<<24>>24==66?(b=m[a+8>>1]|0,!((b&2|0)!=0|(b&12|0)==0)):0)gm(a,c,1)|0;while(0);return}function lm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0.0;f=a+8|0;d=j[f>>1]|0;e=d&65535;do if(!(e&1)){b=b&255;if((b|0)==69){g=+Zg(a);p[a>>3]=g;j[f>>1]=(m[f>>1]|0)&48640|8;break}else if((b|0)==65){if(e&16){j[f>>1]=e&65040;break}if(!((e&2|0)!=0|(e&12|0)==0)){gm(a,c,1)|0;d=j[f>>1]|0}j[f>>1]=d&48640|16;break}else if((b|0)==67){tp(a);break}else if((b|0)==68){b=_g(a)|0;d=a;k[d>>2]=b;k[d+4>>2]=L;j[f>>1]=(m[f>>1]|0)&48640|4;break}else{b=e>>>3&2|e;d=b&65535;j[f>>1]=d;if(!((b&2|0)!=0|(e&12|0)==0)){gm(a,c,1)|0;d=j[f>>1]|0}j[f>>1]=d&49123;break}}while(0);return}function mm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,g=0.0,h=0,i=0,l=0;i=j[a+8>>1]|0;h=i&65535;f=j[b+8>>1]|0;l=f&65535;d=(f|i)&65535;do if(!(d&1)){if(!(d&12)){if(d&2){if(!(h&2)){d=1;break}if(!(l&2)){d=-1;break}if(c){d=up(a,b,c,0)|0;break}}d=vp(a,b)|0;break}if((i&4&f)<<16>>16){i=a;h=k[i>>2]|0;i=k[i+4>>2]|0;f=b;d=k[f>>2]|0;f=k[f+4>>2]|0;if((i|0)<(f|0)|(i|0)==(f|0)&h>>>0>>0){d=-1;break}d=((i|0)>(f|0)|(i|0)==(f|0)&h>>>0>d>>>0)&1;break}if(!(h&8)){if(!(h&4)){d=1;break}d=a;g=+((k[d>>2]|0)>>>0)+4294967296.0*+(k[d+4>>2]|0)}else g=+p[a>>3];if(!(l&8)){if(!(l&4)){d=-1;break}d=b;e=+((k[d>>2]|0)>>>0)+4294967296.0*+(k[d+4>>2]|0)}else e=+p[b>>3];if(ge&1}else d=(l&1)-(h&1)|0;while(0);return d|0}function nm(a){a=a|0;var b=0,c=0,d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;c=e+8|0;b=a+48|0;b=Hm(k[a>>2]|0,0,k[b>>2]|0,k[b+4>>2]|0,0,c)|0;do if(!b)if(!(k[c>>2]|0)){i[a+26>>0]=0;k[a+60>>2]=0;b=0;break}else{k[d>>2]=67421;k[d+4>>2]=10788;gd(11,13600,d);b=11;break}while(0);r=e;return b|0}function om(a){a=a|0;var b=0,c=0,d=0;c=k[a>>2]|0;d=c+73|0;b=i[d>>0]|0;do if((b&255)>2){b=Pn(c)|0;if(!b){b=i[d>>0]|0;d=5;break}else{k[a+60>>2]=0;d=6;break}}else d=5;while(0);if((d|0)==5){k[a+60>>2]=0;if(b<<24>>24==1)b=0;else{b=0;d=6}}if((d|0)==6)i[a+25>>0]=1;return b|0}function pm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a+24|0;if(!(j[a+44>>1]|0)){e=j[a+76>>1]|0;d=k[a+(e<<2)+120>>2]|0;e=m[a+(e<<1)+78>>1]<<1;f=k[d+64>>2]|0;wp(d,(k[d+56>>2]|0)+((l[f+e>>0]<<8|l[f+(e|1)>>0])&m[d+20>>1])|0,c);a=a+72|0;i[a>>0]=l[a>>0]|2}d=c;a=k[d+4>>2]|0;c=b;k[c>>2]=k[d>>2];k[c+4>>2]=a;return}function qm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(!(j[a+44>>1]|0)){d=j[a+76>>1]|0;c=k[a+(d<<2)+120>>2]|0;d=m[a+(d<<1)+78>>1]<<1;e=k[c+64>>2]|0;wp(c,(k[c+56>>2]|0)+((l[e+d>>0]<<8|l[e+(d|1)>>0])&m[c+20>>1])|0,a+24|0);c=a+72|0;i[c>>0]=l[c>>0]|2}k[b>>2]=k[a+36>>2];return}function rm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();f=g;c=l[a>>0]|0;e=l[a+1>>0]|0;do if(e&128){d=l[a+2>>0]|0;if(!(d&128)){k[b>>2]=(d|c<<14)&2080895|e<<7&16256;c=3;break}else{c=xp(a,f)|0;e=f;d=k[e>>2]|0;k[b>>2]=((d|0)==(d|0)?0==(k[e+4>>2]|0):0)?d:-1;break}}else{k[b>>2]=c<<7&16256|e;c=2}while(0);r=g;return c|0}function sm(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;f=(d|0)==0;do if((c+b|0)>>>0>(m[a+40>>1]|0)>>>0){h=e+8|0;j[h>>1]=1;d=kh(e,c+2|0)|0;if(!d){g=e+16|0;d=k[g>>2]|0;if(f)d=Ih(a,b,c,d)|0;else d=Qm(a,b,c,d,0)|0;if(!d){i[(k[g>>2]|0)+c>>0]=0;i[(k[g>>2]|0)+(c+1)>>0]=0;j[h>>1]=528;k[e+12>>2]=c;d=0;break}if((j[h>>1]&9312)==0?(k[e+24>>2]|0)==0:0)break;Vg(e)}}else{k[e+16>>2]=(k[a+32>>2]|0)+b;j[e+8>>1]=4112;k[e+12>>2]=c;d=0}while(0);return d|0}function tm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(b|0){case 9:case 8:{a=c;k[a>>2]=b+-8;k[a+4>>2]=0;j[c+8>>1]=4;a=0;break}case 4:{b=l[a+1>>0]<<16|i[a>>0]<<24|l[a+2>>0]<<8|l[a+3>>0];a=c;k[a>>2]=b;k[a+4>>2]=((b|0)<0)<<31>>31;j[c+8>>1]=4;a=4;break}case 1:{b=i[a>>0]|0;a=c;k[a>>2]=b;k[a+4>>2]=((b|0)<0)<<31>>31;j[c+8>>1]=4;a=1;break}case 3:{b=l[a+1>>0]<<8|i[a>>0]<<16|l[a+2>>0];a=c;k[a>>2]=b;k[a+4>>2]=((b|0)<0)<<31>>31;j[c+8>>1]=4;a=3;break}case 2:{b=i[a>>0]<<8|l[a+1>>0];a=c;k[a>>2]=b;k[a+4>>2]=((b|0)<0)<<31>>31;j[c+8>>1]=4;a=2;break}case 5:{d=i[a>>0]<<8|l[a+1>>0];b=c;k[b>>2]=l[a+3>>0]<<16|l[a+2>>0]<<24|l[a+4>>0]<<8|l[a+5>>0];k[b+4>>2]=d;j[c+8>>1]=4;a=6;break}case 7:case 6:{yp(a,b,c);a=8;break}case 0:case 11:case 10:{j[c+8>>1]=1;a=0;break}default:{k[c+16>>2]=a;a=(b+-12|0)>>>1;k[c+12>>2]=a;j[c+8>>1]=j[34328+((b&1)<<1)>>1]|0}}return a|0}function um(a,b,c){a=a|0;b=b|0;c=c|0;do if(!(c>>>0<0|(c|0)==0&b>>>0<128))if(c>>>0<0|(c|0)==0&b>>>0<16384){c=rw(b|0,c|0,7)|0;i[a>>0]=c|128;i[a+1>>0]=b&127;b=2;break}else{b=zp(a,b,c)|0;break}else{i[a>>0]=b&127;b=1}while(0);return b|0}function vm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();f=g;e=a+73|0;b=i[e>>0]|0;do if((b&255)>2)if(b<<24>>24==4){b=k[a+68>>2]|0;break}else{c=a+56|0;$c(k[c>>2]|0);k[c>>2]=0;i[e>>0]=0;c=5;break}else c=5;while(0);a:do if((c|0)==5){d=a+76|0;b=j[d>>1]|0;do if(b<<16>>16<=-1){b=k[a+60>>2]|0;if(!b){i[e>>0]=0;b=0;break a}c=a+120|0;b=Ap(k[(k[a>>2]|0)+4>>2]|0,b,c,(i[a+72>>0]&1)<<1^2)|0;if(!b){j[d>>1]=0;b=c;break}else{i[e>>0]=0;break a}}else{if(b<<16>>16)do{c=b+-1<<16>>16;j[d>>1]=c;b=k[a+(b<<16>>16<<2)+120>>2]|0;if(!b)b=c;else{Gg(k[b+68>>2]|0);b=j[d>>1]|0}}while(b<<16>>16!=0);b=a+120|0}while(0);b=k[b>>2]|0;if((i[b>>0]|0)!=0?((k[a+16>>2]|0)==0|0)==(l[b+2>>0]|0):0){j[a+78>>1]=0;j[a+44>>1]=0;c=a+72|0;i[c>>0]=l[c>>0]&241;if(j[b+18>>1]|0){i[e>>0]=1;b=0;break}if(i[b+5>>0]|0){i[e>>0]=0;b=0;break}if((k[b+72>>2]|0)==1){c=l[b+6>>0]|0;b=k[b+56>>2]|0;b=l[b+(c+9)>>0]<<16|l[b+(c+8)>>0]<<24|l[b+(c+10)>>0]<<8|l[b+(c+11)>>0];i[e>>0]=1;b=wm(a,b)|0;break}else{k[f>>2]=57629;k[f+4>>2]=10788;gd(11,13600,f);b=11;break}}k[f>>2]=57618;k[f+4>>2]=10788;gd(11,13600,f);b=11}while(0);r=g;return b|0}function wm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;if((r|0)>=(s|0))ka();g=h;f=h+8|0;c=a+76|0;e=j[c>>1]|0;d=e<<16>>16;do if(e<<16>>16<=18){e=a+72|0;b=Ap(k[a+4>>2]|0,b,f,(i[e>>0]&1)<<1^2)|0;if(!b){b=k[f>>2]|0;f=d+1|0;k[a+(f<<2)+120>>2]=b;j[a+(f<<1)+78>>1]=0;j[c>>1]=(j[c>>1]|0)+1<<16>>16;j[a+44>>1]=0;i[e>>0]=l[e>>0]&249;if((j[b+18>>1]|0)!=0?(i[b+2>>0]|0)==(i[(k[a+(d<<2)+120>>2]|0)+2>>0]|0):0){b=0;break}k[g>>2]=57499;k[g+4>>2]=10788;gd(11,13600,g);b=11}}else{k[g>>2]=57487;k[g+4>>2]=10788;gd(11,13600,g);b=11}while(0);r=h;return b|0}function xm(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=a+328|0;a:do if(!(k[i>>2]|0))a=0;else{f=a+304|0;g=c+1|0;h=0;while(1){if((h|0)>=(k[f>>2]|0)){a=0;break a}e=k[(k[i>>2]|0)+(h<<2)>>2]|0;a=k[k[e+4>>2]>>2]|0;d=k[e+8>>2]|0;if((d|0)!=0?(k[a>>2]|0)>1:0){if((b|0)==2)a=k[a+88>>2]|0;else if(!b){a=k[a+80>>2]|0;k[e+20>>2]=g}else a=k[a+84>>2]|0;if((a|0)!=0?(k[e+20>>2]|0)>(c|0):0){a=wc[a&127](d,c)|0;if(!a){h=h+1|0;continue}else break a}}h=h+1|0}}while(0);return a|0}function ym(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();d=f;c=k[a>>2]|0;if(!b){b=a+144|0;g=k[b+4>>2]|0;if((g|0)>0|(g|0)==0&(k[b>>2]|0)>>>0>0)e=4;else c=0}else{b=c+504|0;g=c+512|0;b=ow(k[g>>2]|0,k[g+4>>2]|0,k[b>>2]|0,k[b+4>>2]|0)|0;g=L;if((g|0)>0|(g|0)==0&b>>>0>0)e=4;else c=0}if((e|0)==4){k[a+80>>2]=787;i[a+86>>0]=2;ih(a+44|0,c,34376,d);c=1}r=f;return c|0}function zm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((a|0)!=0?(i[a+8>>0]|0)==2:0){d=k[a+4>>2]|0;k[d+4>>2]=k[a>>2];b=op(k[d>>2]|0,b,c)|0;if(!b){if((c|0)<0?(j[d+22>>1]&8)!=0:0)k[d+44>>2]=0;b=Hg(d)|0;a=k[(k[d+12>>2]|0)+56>>2]|0;k[d+44>>2]=l[a+29>>0]<<16|l[a+28>>0]<<24|l[a+30>>0]<<8|l[a+31>>0]}}else b=0;return b|0}function Am(a,b){a=a|0;b=b|0;a=a+16|0;vl(k[(k[a>>2]|0)+(b<<4)+12>>2]|0);if((b|0)!=1)vl(k[(k[a>>2]|0)+28>>2]|0);return}function Bm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+4>>2]|0;k[d+4>>2]=k[a>>2];if((b|0)==15)d=(k[a+20>>2]|0)+(k[(k[d>>2]|0)+100>>2]|0)|0;else{b=b<<2;d=k[(k[d+12>>2]|0)+56>>2]|0;d=(l[d+(b+37)>>0]|0)<<16|(l[d+(b+36)>>0]|0)<<24|(l[d+(b+38)>>0]|0)<<8|(l[d+(b+39)>>0]|0)}k[c>>2]=d;return}function Cm(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,l=0,m=0,n=0;h=(k[a+28>>2]|0)-b|0;f=k[a+8>>2]|0;n=(c<<3)+88|0;m=(e|0)!=0;l=a+56|0;g=k[(k[l>>2]|0)+(b<<2)>>2]|0;if(g){Gm(a,g);k[(k[l>>2]|0)+(b<<2)>>2]=0}if(!(kh(f+(h*40|0)|0,(m?200:0)+n|0)|0)){h=f+(h*40|0)+16|0;e=k[h>>2]|0;k[(k[l>>2]|0)+(b<<2)>>2]=e;f=e+0|0;g=f+88|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));i[e+24>>0]=d;j[e+20>>1]=c;k[e+80>>2]=e+84+(c<<2);if(m){f=(k[h>>2]|0)+n|0;k[e>>2]=f;f=f+0|0;g=f+76|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0))}}else e=0;return e|0}function Dm(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,l=0;h=k[a+4>>2]|0;k[h+4>>2]=k[a>>2];if(c)if(!(j[h+22>>1]&1)){g=h+80|0;if(!(k[g>>2]|0)){f=Lo(k[h+32>>2]|0)|0;k[g>>2]=f;if(!f)f=7;else{l=f;f=l;i[f>>0]=0;i[f+1>>0]=0;i[f+2>>0]=0;i[f+3>>0]=0;l=l+4|0;i[l>>0]=0;i[l+1>>0]=0;i[l+2>>0]=0;i[l+3>>0]=0;k[g>>2]=(k[g>>2]|0)+4;l=6}}else l=6}else f=8;else l=6;if((l|0)==6){if((b|0)==1)b=(k[h+44>>2]|0)!=0&1;k[e+60>>2]=b;j[e+76>>1]=-1;k[e+16>>2]=d;k[e>>2]=a;k[e+4>>2]=h;i[e+72>>0]=c;f=h+8|0;b=k[f>>2]|0;k[e+8>>2]=b;if(b)k[b+12>>2]=e;k[f>>2]=e;i[e+73>>0]=0;f=0}return f|0}function Em(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,n=0,o=0,p=0,q=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;P=r;r=r+128|0;if((r|0)>=(s|0))ka();A=P;H=P+12|0;E=P+8|0;M=P+16|0;K=(b|0)==0;if(!K){h=(i[b>>0]|0)==0;if(dw(b,14640)|0)if(h)G=4;else{h=0;G=5}else L=1}else G=4;if((G|0)==4)if((i[c+64>>0]|0)==2){L=1;h=1}else{h=1;G=5}if((G|0)==5)L=(f&128|0)!=0;J=L?e|2:e;if((f&256|0)!=0&(L|h))f=f&-769|512;O=vg(48,0)|0;a:do if(O){u=O+0|0;t=u+48|0;do{i[u>>0]=0;u=u+1|0}while((u|0)<(t|0));k[O>>2]=c;k[O+32>>2]=O;k[O+36>>2]=1;b:do if(!h?!(L&(f&64|0)==0|(f&131072|0)==0):0){if(K)h=1;else{h=b;while(1)if(!(i[h>>0]|0))break;else h=h+1|0;h=(h-b&1073741823)+1|0}e=(k[a+8>>2]|0)+1|0;p=(e|0)>(h|0)?e:h;p=vg(p,((p|0)<0)<<31>>31)|0;o=O+9|0;i[o>>0]=1;if(!p){$c(O);g=7;break a}if(!L){i[p>>0]=0;h=uc[k[a+36>>2]&31](a,b,e,p)|0;if(h){$c(p);$c(O);g=h;break a}}else pw(p|0,b|0,h|0)|0;h=k[3664]|0;c:do if(h){while(1){e=k[h>>2]|0;if((dw(p,k[e+168>>2]|0)|0)==0?(k[e>>2]|0)==(a|0):0)break;h=k[h+68>>2]|0;if(!h)break c}e=k[c+20>>2]|0;d:do if((e|0)>0){n=k[c+16>>2]|0;while(1){e=e+-1|0;D=k[n+(e<<4)+4>>2]|0;if((D|0)!=0?(k[D+4>>2]|0)==(h|0):0)break;if((e|0)<=0)break d}$c(p);$c(O);g=19;break a}while(0);k[O+4>>2]=h;D=h+64|0;k[D>>2]=(k[D>>2]|0)+1;$c(p);if(!h){G=32;break b}if(!(i[o>>0]|0))break b;else{G=105;break b}}while(0);$c(p);G=32}else G=32;while(0);e:do if((G|0)==32){I=vg(84,0)|0;if(I){u=I+0|0;t=u+84|0;do{i[u>>0]=0;u=u+1|0}while((u|0)<(t|0));C=J&1;D=(C|0)==0;k[H>>2]=1024;B=a+4|0;h=k[B>>2]|0;if((h|0)>40)e=h+7&-8;else e=40;k[I>>2]=0;do if(!(J&2))if(!K)if(i[b>>0]|0){v=a+8|0;o=(k[v>>2]|0)+1|0;x=o<<1;x=vg(x,((x|0)<0)<<31>>31)|0;if(!x)g=7;else{i[x>>0]=0;h=uc[k[a+36>>2]&31](a,b,o,x)|0;o=x;while(1)if(!(i[o>>0]|0))break;else o=o+1|0;u=o-x&1073741823;p=b;while(1)if(!(i[p>>0]|0))break;else p=p+1|0;t=(p-b&1073741823)+1|0;p=i[b+t>>0]|0;t=b+t|0;if(!(p<<24>>24))o=t;else{o=t;do{if(!(p<<24>>24))p=o;else{p=o;do p=p+1|0;while((i[p>>0]|0)!=0)}p=p-o&1073741823;n=o+(p+1)|0;q=n;while(1)if(!(i[q>>0]|0))break;else q=q+1|0;o=o+(p+2+(q-n&1073741823))|0;p=i[o>>0]|0}while(p<<24>>24!=0)}if(!h){if((u+8|0)<=(k[v>>2]|0)){w=1;A=0;v=u;u=o+1-t|0;p=x;G=58;break}k[A>>2]=46171;k[A+4>>2]=10788;gd(14,14848,A);h=14}$c(x);G=89}}else{w=1;A=0;v=0;u=0;p=0;t=0;G=58}else{b=0;w=0;A=0;v=0;u=0;p=0;t=0;G=58}else if(!K)if(i[b>>0]|0){p=ph(0,b)|0;if(!p)g=7;else{h=p;while(1)if(!(i[h>>0]|0))break;else h=h+1|0;b=0;w=0;A=1;v=h-p&1073741823;u=0;t=0;G=58}}else{w=1;A=1;v=0;u=0;p=0;t=0;G=58}else{b=0;w=0;A=1;v=0;u=0;p=0;t=0;G=58}while(0);do if((G|0)==58){o=(e<<1)+17+(v*3|0)+u+((k[B>>2]|0)+271&-8)|0;z=vg(o,0)|0;if(!z){if(!p){g=7;break}$c(p);g=7;break}kw(z|0,0,o|0)|0;x=z+204|0;k[x>>2]=z+216;y=z+60|0;k[y>>2]=z+264;q=(k[B>>2]|0)+271&-8;k[z+68>>2]=z+q;q=q+e|0;k[z+64>>2]=z+q;q=q+e|0;o=z+q|0;h=z+168|0;k[h>>2]=o;if(p){n=v+1|0;e=z+172|0;k[e>>2]=z+(u+n+q);pw(o|0,p|0,v|0)|0;if(u)pw((k[h>>2]|0)+n|0,t|0,u|0)|0;pw(k[e>>2]|0,p|0,v|0)|0;u=(k[e>>2]|0)+v+0|0;q=14928;t=u+10|0;do{i[u>>0]=i[q>>0]|0;u=u+1|0;q=q+1|0}while((u|0)<(t|0));e=(k[e>>2]|0)+(v+9)|0;B=z+212|0;k[B>>2]=e;pw(e|0,p|0,v|0)|0;B=(k[B>>2]|0)+v|0;i[B+0>>0]=i[14944]|0;i[B+1>>0]=i[14945]|0;i[B+2>>0]=i[14946]|0;i[B+3>>0]=i[14947]|0;i[B+4>>0]=i[14948]|0;$c(p)}k[z>>2]=a;k[z+144>>2]=f;do if(w?(i[b>>0]|0)!=0:0){k[E>>2]=0;h=yc[k[a+24>>2]&31](a,k[h>>2]|0,k[y>>2]|0,f&556927,E)|0;n=k[E>>2]&1;if(!h){h=k[y>>2]|0;h=qc[k[(k[h>>2]|0)+48>>2]&127](h)|0;do if((n|0)==0?(Bp(z),F=k[z+148>>2]|0,F>>>0>1024):0)if(F>>>0>8192){k[H>>2]=8192;break}else{k[H>>2]=F;break}while(0);E=(kg(b,14952,0)|0)&255;i[z+13>>0]=E;if((h&8192|0)==0?(kg(b,14960,0)|0)==0:0){q=0;G=77;break}h=f|1;G=76}}else{h=f;G=76}while(0);if((G|0)==76){i[z+16>>0]=1;i[z+17>>0]=4;i[z+13>>0]=1;n=h&1;q=1;G=77}if((G|0)==77){h=fl(z,H,-1)|0;if(!h){e=k[H>>2]|0;p=(A|0)==0;f=A^1;o=p?75:0;h=k[x>>2]|0;u=h+0|0;t=u+48|0;do{k[u>>2]=0;u=u+4|0}while((u|0)<(t|0));k[h+20>>2]=1;k[h+24>>2]=80;i[h+28>>0]=f;i[h+29>>0]=2;k[h+32>>2]=o;k[h+36>>2]=z;k[h+16>>2]=100;h=Mo(h,e)|0;if(!h){i[z+6>>0]=C^1;k[z+156>>2]=1073741823;i[z+12>>0]=q;i[z+4>>0]=q;i[z+18>>0]=q;i[z+15>>0]=A;i[z+14>>0]=n;i[z+7>>0]=q;if(!(q<<24>>24)){i[z+8>>0]=1;i[z+11>>0]=2;i[z+10>>0]=34;i[z+9>>0]=2}j[z+140>>1]=80;E=z+160|0;k[E>>2]=-1;k[E+4>>2]=-1;Bp(z);do if(D){if(p)break;i[z+5>>0]=4}else i[z+5>>0]=2;while(0);k[z+196>>2]=21;k[I>>2]=z;G=90;break}}}e=k[y>>2]|0;f=k[e>>2]|0;if(f){qc[k[f+4>>2]&127](e)|0;k[e>>2]=0}el(k[z+200>>2]|0);$c(z);G=89}while(0);if((G|0)==89)if(!h)G=90;else g=h;do if((G|0)==90){h=k[I>>2]|0;E=c+40|0;t=k[E+4>>2]|0;u=h+128|0;k[u>>2]=k[E>>2];k[u+4>>2]=t;u=M+0|0;t=u+100|0;do{i[u>>0]=0;u=u+1|0}while((u|0)<(t|0));h=k[h+60>>2]|0;e=k[h>>2]|0;if((e|0)!=0?(g=yc[k[e+8>>2]&31](h,M,100,0,0)|0,!((g|0)==0|(g|0)==522)):0)break;i[I+16>>0]=J;k[I+4>>2]=c;h=k[I>>2]|0;e=h+176|0;k[e>>2]=76;k[h+180>>2]=I;f=k[h+60>>2]|0;g=k[f>>2]|0;if(!g)e=h;else{fc[k[g+40>>2]&63](f,15,e)|0;e=k[I>>2]|0}k[O+4>>2]=I;k[I+8>>2]=0;k[I+12>>2]=0;if(i[e+14>>0]|0){E=I+22|0;j[E>>1]=m[E>>1]|1}E=l[M+17>>0]<<16|l[M+16>>0]<<8;f=I+32|0;k[f>>2]=E;if((E+-512|0)>>>0<=65024?(E+16777215&E|0)==0:0){h=i[M+20>>0]|0;E=I+22|0;j[E>>1]=m[E>>1]|2;i[I+17>>0]=(l[M+53>>0]<<16|l[M+52>>0]<<24|l[M+54>>0]<<8|l[M+55>>0]|0)!=0&1;i[I+18>>0]=(l[M+65>>0]<<16|l[M+64>>0]<<24|l[M+66>>0]<<8|l[M+67>>0]|0)!=0&1}else{k[f>>2]=0;if(K|L)h=0;else{i[I+17>>0]=0;i[I+18>>0]=0;h=0}}h=h&255;g=fl(e,f,h)|0;if(!g){k[I+36>>2]=(k[f>>2]|0)-h;if(!(i[O+9>>0]|0))break e;k[I+64>>2]=1;k[I+68>>2]=k[3664];k[3664]=I;G=105;break e}}while(0);if(I){f=k[I>>2]|0;if(!f)f=I;else{qp(f);f=I}}else f=0}else{f=0;g=7}$c(f);$c(O);k[d>>2]=0;break a}while(0);f:do if((G|0)==105?(N=k[c+20>>2]|0,(N|0)>0):0){f=k[c+16>>2]|0;e=0;while(1){g=k[f+(e<<4)+4>>2]|0;if((g|0)!=0?(i[g+9>>0]|0)!=0:0){e=g;break}e=e+1|0;if((e|0)>=(N|0))break f}while(1){g=e+28|0;f=k[g>>2]|0;if(!f){f=e;break}else e=f}h=k[O+4>>2]|0;if(h>>>0<(k[f+4>>2]|0)>>>0){k[O+24>>2]=f;k[O+28>>2]=0;k[g>>2]=O;break}while(1){g=f+24|0;e=k[g>>2]|0;if(!e){G=113;break}if((k[e+4>>2]|0)>>>0>>0)f=e;else{G=115;break}}if((G|0)==113){k[O+24>>2]=0;k[O+28>>2]=f}else if((G|0)==115){k[O+24>>2]=e;k[O+28>>2]=f;k[e+28>>2]=O}k[g>>2]=O}while(0);k[d>>2]=O;g=k[O+4>>2]|0;k[g+4>>2]=k[O>>2];if(!(k[g+48>>2]|0)){g=k[(k[g>>2]|0)+204>>2]|0;k[g+16>>2]=2e3;oc[k[8744+124>>2]&15](k[g+40>>2]|0,2e3);g=0}else g=0}else g=7;while(0);r=P;return g|0}function Fm(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,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+48|0;if((r|0)>=(s|0))ka();p=y;v=y+28|0;w=y+24|0;u=y+20|0;j=y+16|0;n=y+12|0;o=y+32|0;q=y+8|0;e=k[a>>2]|0;t=k[a+4>>2]|0;d=t+4|0;k[d>>2]=e;a:do if(!(i[t+17>>0]|0)){d=np(t,v,w,1,0)|0;k[u>>2]=d;if(!d){e=k[v>>2]|0;x=39}}else{m=t+8|0;f=k[m>>2]|0;if(f)do{h=f+72|0;i[h>>0]=l[h>>0]&251;f=k[f+8>>2]|0}while((f|0)!=0);k[d>>2]=e;h=k[(k[t+12>>2]|0)+56>>2]|0;h=l[h+53>>0]<<16|l[h+52>>0]<<24|l[h+54>>0]<<8|l[h+55>>0];k[w>>2]=h;e=((k[2514]|0)>>>0)/((k[t+32>>2]|0)>>>0)|0;d=t+36|0;while(1){g=h+1|0;if(g>>>0<2)f=0;else{f=h+-1|0;f=f-((f>>>0)%(((((k[d>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;f=((f+1|0)==(e|0)?3:2)+f|0}if((g|0)==(f|0)|(h|0)==(e|0))h=g;else break}k[w>>2]=g;d=np(t,n,j,g,1)|0;k[u>>2]=d;if(!d){h=k[j>>2]|0;do if((h|0)==(g|0)){e=k[n>>2]|0;k[v>>2]=e}else{i[o>>0]=0;k[q>>2]=0;f=k[m>>2]|0;b:do if(!f)d=0;else{while(1){if(f)break;f=k[2]|0;if(!f){d=0;break b}}d=Kl(f,0,0)|0}while(0);k[u>>2]=d;f=k[n>>2]|0;if(f)Gg(k[f+68>>2]|0);if(d)break a;d=il(t,g,v,0)|0;k[u>>2]=d;if(d)break a;d=mp(t,g,o,q)|0;k[u>>2]=d;f=i[o>>0]|0;if((f+-1&255)>=2){e=k[v>>2]|0;if(!d){d=cn(t,e,f,k[q>>2]|0,h,0)|0;k[u>>2]=d;if(e)Gg(k[e+68>>2]|0);if(d)break a;d=il(t,g,v,0)|0;k[u>>2]=d;if(d)break a;e=k[v>>2]|0;f=e+68|0;d=Lg(k[f>>2]|0)|0;k[u>>2]=d;if(!d)break;if(!e)break a;Gg(k[f>>2]|0);break a}}else{k[p>>2]=60876;k[p+4>>2]=10788;gd(11,13600,p);k[u>>2]=11;d=11;e=k[v>>2]|0}if(!e)break a;Gg(k[e+68>>2]|0);break a}while(0);Ep(t,g,1,0,u);d=k[u>>2]|0;if(d){if(!e)break;Gg(k[e+68>>2]|0);break}d=Ig(a,4,g)|0;k[u>>2]=d;if(d){if(e)Gg(k[e+68>>2]|0)}else x=39}}while(0);if((x|0)==39){ul(e,(c&1|0)==0?10:13);d=k[(k[v>>2]|0)+68>>2]|0;if(d)Gg(d);k[b>>2]=k[w>>2];d=0}r=y;return d|0}function Gm(a,b){a=a|0;b=b|0;var c=0,d=0;do if(b){a=k[a>>2]|0;c=b+56|0;d=k[c>>2]|0;if(d){dn(a,d);$c(k[d+40>>2]|0);rg(a,d);k[c>>2]=0}a=k[b+4>>2]|0;if(a){Rl(a);break}a=k[b>>2]|0;if(a){pp(a);break}a=k[b+32>>2]|0;if(a){d=k[a>>2]|0;c=k[d>>2]|0;d=d+4|0;k[d>>2]=(k[d>>2]|0)+-1;qc[k[c+28>>2]&127](a)|0}}while(0);return}function Hm(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,n=0,o=0,p=0,q=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;N=r;r=r+16|0;if((r|0)>=(s|0))ka();L=N+8|0;K=N;o=a+73|0;do if(((i[o>>0]|0)==1?(n=l[a+72>>0]|0,(n&2|0)!=0):0)?(i[(k[a+120>>2]|0)+2>>0]|0)!=0:0){g=a+24|0;h=k[g>>2]|0;g=k[g+4>>2]|0;if((h|0)==(c|0)&(g|0)==(d|0)){k[f>>2]=0;g=0;break}if((n&8|0)!=0&((g|0)<(d|0)|(g|0)==(d|0)&h>>>0>>0)){k[f>>2]=-1;g=0}else M=8}else M=8;while(0);do if((M|0)==8){if(!b)G=0;else{h=k[b>>2]|0;if(((m[h+8>>1]|0)+(m[h+6>>1]|0)|0)<14){g=m[(k[b+8>>2]|0)+8>>1]|0;H=(i[k[h+16>>2]>>0]|0)==0;k[b+12>>2]=H?-1:1;k[b+16>>2]=H?1:-1;if(!(g&4))if((g&25|0)==0?(k[h+20>>2]|0)==0:0)h=39;else M=13;else h=38}else M=13;if((M|0)==13)h=40;i[b+7>>0]=0;G=h}g=vm(a)|0;if(!g){if(!(i[o>>0]|0)){k[f>>2]=-1;g=0;break}H=a+76|0;C=1-e|0;D=(G|0)==0;I=a+72|0;E=a+24|0;F=a+24|0;a:do{e=j[H>>1]|0;A=k[a+(e<<2)+120>>2]|0;B=A+18|0;n=(m[B>>1]|0)+-1|0;h=n>>C;j[a+(e<<1)+78>>1]=h;e=A+56|0;x=A+20|0;y=A+64|0;z=A+7|0;b:do if(D){q=A+3|0;p=A+60|0;o=0;t=n;while(1){n=h<<1;w=k[y>>2]|0;n=(k[e>>2]|0)+(((l[w+n>>0]<<8|l[w+(n|1)>>0])&m[x>>1])+(l[z>>0]|0))|0;c:do if(i[q>>0]|0)while(1){w=n;n=n+1|0;if((i[w>>0]|0)>=0)break c;if(n>>>0>=(k[p>>2]|0)>>>0){M=25;break a}}while(0);xp(n,K)|0;g=K;n=k[g>>2]|0;g=k[g+4>>2]|0;if((g|0)<(d|0)|(g|0)==(d|0)&n>>>0>>0){o=h+1|0;if((h|0)<(t|0))n=t;else{g=-1;M=49;break b}}else{if(!((g|0)>(d|0)|(g|0)==(d|0)&n>>>0>c>>>0)){o=g;break}n=h+-1|0;if((o|0)>(n|0)){g=1;M=49;break b}}h=n+o>>1;t=n}i[I>>0]=l[I>>0]|2;z=E;k[z>>2]=n;k[z+4>>2]=o;j[a+(j[H>>1]<<1)+78>>1]=h;if(i[A+5>>0]|0){M=31;break a}}else{u=A+8|0;v=A+10|0;w=h;o=0;while(1){g=k[e>>2]|0;q=w<<1;h=k[y>>2]|0;q=(l[h+q>>0]<<8|l[h+(q|1)>>0])&m[x>>1];h=q+(l[z>>0]|0)|0;O=i[g+h>>0]|0;t=O&255;p=g+(h+1)|0;do if((O&255)>(l[u>>0]|0)){p=l[p>>0]|0;if((p&128|0)==0?(J=p+(t<<7&16256)|0,(J|0)<=(m[v>>1]|0)):0){g=fc[G&63](J,g+(h+2)|0,b)|0;break}wp(A,g+q|0,F);p=k[F>>2]|0;h=vg(p,((p|0)<0)<<31>>31)|0;if(!h){g=7;break a}j[a+(j[H>>1]<<1)+78>>1]=w;g=Qm(a,0,p,h,2)|0;if(g){M=40;break a}g=fc[G&63](p,h,b)|0;$c(h)}else g=fc[G&63](t,p,b)|0;while(0);if((g|0)<0)o=w+1|0;else{if((g|0)<=0){h=w;M=46;break a}n=w+-1|0}if((o|0)>(n|0)){h=w;M=49;break b}w=n+o>>1}}while(0);if((M|0)==49){M=0;if(i[A+5>>0]|0){M=51;break}e=A+56|0;h=o}o=k[e>>2]|0;if((h|0)<(m[B>>1]|0)){n=h<<1;B=k[A+64>>2]|0;n=(l[B+n>>0]<<8|l[B+(n|1)>>0])&m[A+20>>1];n=l[o+(n+1)>>0]<<16|l[o+n>>0]<<24|l[o+(n+2)>>0]<<8|l[o+(n+3)>>0]}else{n=l[A+6>>0]|0;n=l[o+(n+9)>>0]<<16|l[o+(n+8)>>0]<<24|l[o+(n+10)>>0]<<8|l[o+(n+11)>>0]}j[a+(j[H>>1]<<1)+78>>1]=h;g=wm(a,n)|0}while((g|0)==0);if((M|0)==25){k[L>>2]=57865;k[L+4>>2]=10788;gd(11,13600,L);g=11;break}else if((M|0)==31){k[f>>2]=0;g=0}else if((M|0)==40)$c(h);else if((M|0)==46){k[f>>2]=0;j[a+(j[H>>1]<<1)+78>>1]=h;g=(i[b+7>>0]|0)==0?0:11}else if((M|0)==51){j[a+(j[H>>1]<<1)+78>>1]=h;k[f>>2]=g;g=0}j[a+44>>1]=0;i[I>>0]=l[I>>0]&249}}while(0);r=N;return g|0}function Im(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;j[a+44>>1]=0;c=a+72|0;i[c>>0]=l[c>>0]&249;k[b>>2]=0;do if((i[a+73>>0]|0)==1){c=a+76|0;f=j[c>>1]|0;d=k[a+(f<<2)+120>>2]|0;f=a+(f<<1)+78|0;e=(j[f>>1]|0)+1<<16>>16;j[f>>1]=e;if((e&65535)>=(m[d+18>>1]|0)){c=a+(j[c>>1]<<1)+78|0;j[c>>1]=(j[c>>1]|0)+-1<<16>>16;c=Ip(a,b)|0;break}if(!(i[d+5>>0]|0))c=_m(a)|0;else c=0}else c=Ip(a,b)|0;while(0);return c|0}function Jm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;k[b>>2]=0;f=a+72|0;i[f>>0]=l[f>>0]&241;j[a+44>>1]=0;if(((i[a+73>>0]|0)==1?(c=j[a+76>>1]|0,d=a+(c<<1)+78|0,e=j[d>>1]|0,e<<16>>16!=0):0)?(i[(k[a+(c<<2)+120>>2]|0)+5>>0]|0)!=0:0){j[d>>1]=e+-1<<16>>16;c=0}else c=Jp(a,b)|0;return c|0}function Km(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;g=0-b&7;h=a+6|0;f=j[h>>1]|0;e=((f&65535)*40|0)+64|0;if((e|0)>(g+c|0)){e=rh(k[a+12>>2]|0,e,0)|0;k[d>>2]=e;if(!e)e=0;else{f=j[h>>1]|0;i=5}}else{k[d>>2]=0;e=b+g|0;i=5}if((i|0)==5){k[e+8>>2]=e+24;k[e>>2]=a;j[e+4>>1]=(f&65535)+1}return e|0}function Lm(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,n=0,o=0,p=0,q=0,t=0,u=0;u=r;r=r+16|0;if((r|0)>=(s|0))ka();t=u+4|0;q=u;g=k[d+8>>2]|0;i[d+6>>0]=0;e=i[c>>0]|0;if(e<<24>>24>-1){e=e&255;k[t>>2]=e;f=1}else{f=rm(c,t)|0;e=k[t>>2]|0}p=a+4|0;n=a+12|0;o=d+4|0;a=e;l=e;h=f&255;e=0;while(1){if(h>>>0>=a>>>0|(l|0)>(b|0))break;d=c+h|0;a=i[d>>0]|0;if(a<<24>>24>-1){k[q>>2]=a&255;d=1}else d=rm(d,q)|0;i[g+10>>0]=i[p>>0]|0;k[g+32>>2]=k[n>>2];k[g+24>>2]=0;f=tm(c+l|0,k[q>>2]|0,g)|0;e=e+1<<16>>16;if((e&65535)>=(m[o>>1]|0))break;a=k[t>>2]|0;l=f+l|0;h=(d&255)+h|0;g=g+40|0}j[o>>1]=e;r=u;return}function Mm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=a+73|0;if((i[d>>0]|0)==1?(i[a+72>>0]&8)!=0:0)c=0;else e=3;do if((e|0)==3){c=vm(a)|0;if(!c){if(!(i[d>>0]|0)){k[b>>2]=1;c=0;break}k[b>>2]=0;c=Kp(a)|0;b=a+72|0;d=l[b>>0]|0;if(!c){i[b>>0]=d|8;c=0;break}else{i[b>>0]=d&247;break}}}while(0);return c|0}function Nm(a,b,c,d,e,f,g,h,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;n=n|0;var o=0,p=0,q=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;K=r;r=r+32|0;if((r|0)>=(s|0))ka();u=K;A=K+24|0;B=K+20|0;z=K+16|0;J=K+12|0;G=K+8|0;H=K+28|0;k[G>>2]=n;p=(k[a>>2]|0)+4|0;t=k[p>>2]|0;I=a+73|0;do if((i[I>>0]|0)!=4){q=Qn(t,k[a+60>>2]|0,a)|0;k[J>>2]=q;if(!q){if(!(k[a+16>>2]|0)){q=k[(k[p>>2]|0)+8>>2]|0;if(q)do{if((i[q+72>>0]&16)!=0?(D=q+24|0,(k[D>>2]|0)==(c|0)?(k[D+4>>2]|0)==(d|0):0):0)i[q+73>>0]=0;q=k[q+8>>2]|0}while((q|0)!=0);if((i[a+72>>0]&2)!=0&((d|0)>0|(d|0)==0&c>>>0>0)?(D=a+24|0,x=k[D>>2]|0,D=k[D+4>>2]|0,y=ow(c|0,d|0,-1,-1)|0,(x|0)==(y|0)&(D|0)==(L|0)):0)k[G>>2]=-1;else C=13}else C=13;if(((C|0)==13?(n|0)==0:0)?(o=Lp(a,b,c,d,h,G)|0,k[J>>2]=o,(o|0)!=0):0)break;E=a+76|0;F=k[a+(j[E>>1]<<2)+120>>2]|0;D=k[t+80>>2]|0;k[B>>2]=0;h=F+52|0;y=k[h>>2]|0;k[z>>2]=0;q=l[F+7>>0]|0;t=g+f|0;if(i[F+3>>0]|0){if(t>>>0<128){i[D+q>>0]=t;p=1}else p=(um(D+q|0,t,((t|0)<0)<<31>>31)|0)&255;q=p+q|0}n=(um(D+q|0,c,d)|0)+q|0;do if(!(i[F+2>>0]|0))if((d|0)>0|(d|0)==0&c>>>0>2147483647|(b|0)==0){k[u>>2]=58825;k[u+4>>2]=10788;gd(11,13600,u);o=11;q=0;break}else{x=f;t=c;f=c;g=b;C=24;break}else{x=0;g=e;C=24}while(0);do if((C|0)==24){q=m[F+10>>1]|0;if((t|0)>(q|0)){p=m[F+12>>1]|0;h=(((t-p|0)>>>0)%(((k[(k[h>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+p|0;h=(h|0)>(q|0)?p:h;p=h+n|0;q=p+4|0;p=D+p|0}else{q=t+n|0;q=(q|0)<4?4:q;p=D;h=t}if((t|0)>0){c=y+17|0;v=y+36|0;w=y+32|0;b=f;u=D+n|0;d=p;n=0;f=h;while(1){if(!f){u=k[z>>2]|0;if(!(i[c>>0]|0))p=u;else{o=((k[2514]|0)>>>0)/((k[w>>2]|0)>>>0)|0;f=u;while(1){p=f+1|0;if(p>>>0<2)h=0;else{h=f+-1|0;h=h-((h>>>0)%(((((k[v>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;h=((h+1|0)==(o|0)?3:2)+h|0}if((h|0)==(p|0)|(f|0)==(o|0))f=p;else break}k[z>>2]=p}o=np(y,B,z,p,0)|0;k[A>>2]=o;p=(o|0)==0;if((i[c>>0]|0)!=0&p){p=k[z>>2]|0;Ep(y,p,(u|0)!=0?4:3,u,A);o=k[A>>2]|0;if(o){h=n;C=38;break}}else{if(!p)break;p=k[z>>2]|0}i[d>>0]=p>>>24;i[d+1>>0]=p>>>16;i[d+2>>0]=p>>>8;i[d+3>>0]=p;if(n)Gg(k[n+68>>2]|0);o=k[B>>2]|0;u=o+56|0;d=k[u>>2]|0;i[d>>0]=0;i[d+1>>0]=0;i[d+2>>0]=0;i[d+3>>0]=0;u=(k[u>>2]|0)+4|0;f=(k[v>>2]|0)+-4|0}else o=n;p=(t|0)>(f|0)?f:t;if((b|0)>0){p=(p|0)>(b|0)?b:p;pw(u|0,g|0,p|0)|0}else kw(u|0,0,p|0)|0;t=t-p|0;h=(b|0)==(p|0);if((t|0)<=0){C=51;break}else{b=h?x:b-p|0;u=u+p|0;g=h?e:g+p|0;n=o;f=f-p|0}}if((C|0)==38){n=k[B>>2]|0;if(!n)n=h;else{Gg(k[n+68>>2]|0);n=h}}else if((C|0)==51){if(!o){o=0;break}Gg(k[o+68>>2]|0);o=0;break}if(n)Gg(k[n+68>>2]|0)}else o=0}while(0);k[J>>2]=o;if(!o){o=a+(j[E>>1]<<1)+78|0;h=j[o>>1]|0;p=h&65535;n=k[G>>2]|0;if(!n){o=Lg(k[F+68>>2]|0)|0;k[J>>2]=o;if(o)break;o=p<<1;C=k[F+64>>2]|0;o=(k[F+56>>2]|0)+((l[C+o>>0]<<8|l[C+(o|1)>>0])&m[F+20>>1])|0;if(!(i[F+5>>0]|0)){C=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[D>>0]=C;i[D+1>>0]=C>>8;i[D+2>>0]=C>>16;i[D+3>>0]=C>>24}o=Mp(F,o,H)|0;k[J>>2]=o;Np(F,p,m[H>>1]|0,J);o=k[J>>2]|0;if(!o)o=p;else break}else if((n|0)<0?(j[F+18>>1]|0)!=0:0){C=h+1<<16>>16;j[o>>1]=C;o=C&65535}else o=p;Op(F,o,D,q,0,0,J);j[a+44>>1]=0;o=k[J>>2]|0;if(!o)if(!(i[F+1>>0]|0))o=0;else{o=a+72|0;i[o>>0]=l[o>>0]&253;o=Pp(a)|0;k[J>>2]=o;i[(k[a+(j[E>>1]<<2)+120>>2]|0)+1>>0]=0;i[I>>0]=0}}}else o=q}else o=k[a+68>>2]|0;while(0);r=K;return o|0}function Om(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;if((r|0)>=(s|0))ka();y=z+4|0;n=z+8|0;d=z;e=(k[a>>2]|0)+4|0;q=k[e>>2]|0;w=a+76|0;x=j[w>>1]|0;u=x<<16>>16;h=j[a+(u<<1)+78>>1]|0;v=h&65535;o=k[a+(u<<2)+120>>2]|0;do if((h&65535)<(m[o+18>>1]|0)?(i[a+73>>0]|0)==1:0){h=v<<1;t=k[o+64>>2]|0;h=(k[o+56>>2]|0)+((l[t+h>>0]<<8|l[t+(h|1)>>0])&m[o+20>>1])|0;t=o+5|0;if((i[t>>0]|0)==0?(k[d>>2]=0,b=Jm(a,d)|0,k[y>>2]=b,(b|0)!=0):0)break;b=Qn(q,k[a+60>>2]|0,a)|0;k[y>>2]=b;if(!b){if((k[a+16>>2]|0)==0?(g=a+24|0,f=k[g>>2]|0,g=k[g+4>>2]|0,c=k[(k[e>>2]|0)+8>>2]|0,(c|0)!=0):0)do{if((i[c+72>>0]&16)!=0?(e=c+24|0,(k[e>>2]|0)==(f|0)?(k[e+4>>2]|0)==(g|0):0):0)i[c+73>>0]=0;c=k[c+8>>2]|0}while((c|0)!=0);b=Lg(k[o+68>>2]|0)|0;k[y>>2]=b;if(!b){b=Mp(o,h,n)|0;k[y>>2]=b;Np(o,v,m[n>>1]|0,y);b=k[y>>2]|0;if(!b){if((i[t>>0]|0)==0?(h=k[a+(j[w>>1]<<2)+120>>2]|0,g=k[(k[a+(u+1<<2)+120>>2]|0)+72>>2]|0,d=k[h+56>>2]|0,n=h+18|0,e=m[n>>1]<<1,p=k[h+64>>2]|0,e=(l[p+(e+-2)>>0]<<8|l[p+(e+-1)>>0])&m[h+20>>1],p=(Qp(h,d+e|0)|0)&65535,f=k[q+80>>2]|0,c=Lg(k[h+68>>2]|0)|0,k[y>>2]=c,Op(o,v,d+(e+-4)|0,p+4|0,f,g,y),Np(h,(m[n>>1]|0)+-1|0,p,y),p=k[y>>2]|0,(p|0)!=0):0){b=p;break}b=Pp(a)|0;k[y>>2]=b;if(!b){b=j[w>>1]|0;if(b<<16>>16>x<<16>>16){do{c=b+-1<<16>>16;j[w>>1]=c;b=k[a+(b<<16>>16<<2)+120>>2]|0;if(!b)b=c;else{Gg(k[b+68>>2]|0);b=j[w>>1]|0}}while(b<<16>>16>x<<16>>16);b=Pp(a)|0;k[y>>2]=b;if(b)break}vm(a)|0;b=0}}}}}else b=1;while(0);r=z;return b|0}function Pm(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,n=0.0,o=0.0,q=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;K=r;r=r+64|0;if((r|0)>=(s|0))ka();I=K+40|0;h=K+56|0;G=K;f=K+52|0;H=K+48|0;q=k[c+8>>2]|0;J=k[c>>2]|0;do if(!d){d=i[b>>0]|0;if(d<<24>>24>-1){d=d&255;k[h>>2]=d;e=1}else{e=rm(b,h)|0;d=k[h>>2]|0}if(d>>>0>a>>>0){k[I>>2]=68267;k[I+4>>2]=10788;gd(11,13600,I);i[c+7>>0]=11;e=0;break}else{F=d;h=d;d=0;f=e&255;g=15;break}}else{d=b+1|0;e=i[d>>0]|0;if(e<<24>>24>-1){d=e&255;k[f>>2]=d;g=1}else{g=rm(d,f)|0;d=k[f>>2]|0}e=l[b>>0]|0;k[h>>2]=e;if(d>>>0>11)d=(d+-12|0)>>>1;else d=l[34336+d>>0]|0;F=e;h=d+e|0;d=1;f=(g&255)+1|0;q=q+40|0;g=15}while(0);do if((g|0)==15){w=G+12|0;x=J+4|0;y=G+10|0;z=J+12|0;A=G+32|0;B=G+8|0;C=G+16|0;E=c+7|0;D=c+4|0;v=h;u=f;a:while(1){f=m[q+8>>1]|0;do if(!(f&4)){if(f&8){g=i[b+u>>0]|0;h=g&255;k[H>>2]=h;if((g&255)>11){e=1;g=62;break a}if(!(g<<24>>24)){e=-1;g=62;break a}n=+p[q>>3];tm(b+v|0,h,G)|0;if(g<<24>>24==7)o=+p[G>>3];else{e=G;o=+((k[e>>2]|0)>>>0)+4294967296.0*+(k[e+4>>2]|0)}if(on){e=1;g=62;break a}else break}do if(!(f&2)){g=b+u|0;t=i[g>>0]|0;h=t&255;if(!(f&16)){k[H>>2]=h;e=t<<24>>24!=0&1;break}if(t<<24>>24>-1)k[H>>2]=h;else{rm(g,H)|0;h=k[H>>2]|0}if(!(h>>>0>11&(h&1|0)==0)){e=-1;g=62;break a}t=(h+-12|0)>>>1;if((t+v|0)>>>0>a>>>0){g=57;break a}g=k[q+12>>2]|0;e=cw(b+v|0,k[q+16>>2]|0,(t|0)<(g|0)?t:g)|0;if(e){g=62;break a}e=t-g|0}else{h=b+u|0;g=i[h>>0]|0;if(g<<24>>24>-1){h=g&255;k[H>>2]=h}else{rm(h,H)|0;h=k[H>>2]|0}if(h>>>0<12){e=-1;g=62;break a}if(!(h&1)){e=1;g=62;break a}f=(h+-12|0)>>>1;k[w>>2]=f;if((f+v|0)>>>0>a>>>0){g=46;break a}g=k[J+(d<<2)+20>>2]|0;if(g){i[y>>0]=i[x>>0]|0;k[A>>2]=k[z>>2];j[B>>1]=2;k[C>>2]=b+v;e=up(G,q,g,E)|0;break}t=k[q+12>>2]|0;e=cw(b+v|0,k[q+16>>2]|0,(f|0)<(t|0)?f:t)|0;if(e){g=62;break a}e=f-t|0}while(0);if(e){g=62;break a}}else{g=i[b+u>>0]|0;h=g&255;k[H>>2]=h;if((g&255)>11){e=1;g=62;break a}if(g<<24>>24==7){e=q;n=+((k[e>>2]|0)>>>0)+4294967296.0*+(k[e+4>>2]|0);tm(b+v|0,h,G)|0;o=+p[G>>3];if(on){e=1;g=62;break a}else break}else if(!(g<<24>>24)){e=-1;g=62;break a}g=b+v|0;switch(h|0){case 3:{t=l[b+(v+1)>>0]<<8|i[g>>0]<<16|l[b+(v+2)>>0];e=((t|0)<0)<<31>>31;break}case 1:case 0:{t=i[g>>0]|0;e=((t|0)<0)<<31>>31;break}case 5:{e=i[g>>0]<<8|l[b+(v+1)>>0];t=l[b+(v+3)>>0]<<16|l[b+(v+2)>>0]<<24|l[b+(v+4)>>0]<<8|l[b+(v+5)>>0];break}case 4:{t=l[b+(v+1)>>0]<<16|l[g>>0]<<24|l[b+(v+2)>>0]<<8|l[b+(v+3)>>0];e=((t|0)<0)<<31>>31;break}case 6:{e=l[b+(v+1)>>0]<<16|l[g>>0]<<24|l[b+(v+2)>>0]<<8|l[b+(v+3)>>0];t=l[b+(v+5)>>0]<<16|l[b+(v+4)>>0]<<24|l[b+(v+6)>>0]<<8|l[b+(v+7)>>0];break}case 2:{t=i[g>>0]<<8|l[b+(v+1)>>0];e=((t|0)<0)<<31>>31;break}default:{e=0;t=h+-8|0}}f=q;g=k[f>>2]|0;f=k[f+4>>2]|0;if((e|0)<(f|0)|(e|0)==(f|0)&t>>>0>>0){e=-1;g=62;break a}if((e|0)>(f|0)|(e|0)==(f|0)&t>>>0>g>>>0){e=1;g=62;break a}}while(0);d=d+1|0;q=q+40|0;if(h>>>0>11)f=(h+-12|0)>>>1;else f=l[34336+h>>0]|0;t=h;g=0;h=0;do{h=h+1|0;t=rw(t|0,g|0,7)|0;g=L}while(((t|0)!=0|(g|0)!=0)&(h|0)<9);v=f+v|0;u=h+u|0;if(u>>>0>=F>>>0){g=70;break}if(v>>>0>a>>>0?1:(d|0)>=(m[D>>1]|0)){g=70;break}}if((g|0)==46){k[I>>2]=68346;k[I+4>>2]=10788;gd(11,13600,I);i[E>>0]=11;e=0;break}else if((g|0)==57){k[I>>2]=68375;k[I+4>>2]=10788;gd(11,13600,I);i[E>>0]=11;e=0;break}else if((g|0)==62){e=(i[(k[J+16>>2]|0)+d>>0]|0)==0?e:0-e|0;break}else if((g|0)==70){e=i[c+6>>0]|0;break}}while(0);r=K;return e|0}function Qm(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,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=r;r=r+16|0;if((r|0)>=(s|0))ka();A=B;y=B+12|0;z=B+8|0;f=j[a+76>>1]|0;h=k[a+(f<<2)+120>>2]|0;x=k[a+4>>2]|0;if(!(j[a+44>>1]|0)){q=h+56|0;f=m[a+(f<<1)+78>>1]<<1;p=k[h+64>>2]|0;wp(h,(k[q>>2]|0)+((l[p+f>>0]<<8|l[p+(f|1)>>0])&m[h+20>>1])|0,a+24|0);f=a+72|0;i[f>>0]=l[f>>0]|2;f=q}else f=h+56|0;q=k[a+32>>2]|0;o=a+40|0;g=m[o>>1]|0;p=x+36|0;if((q+g|0)>>>0<=((k[f>>2]|0)+(k[p>>2]|0)|0)>>>0){if(g>>>0>b>>>0){n=(c+b|0)>>>0>g>>>0?g-b|0:c;g=q+b|0;if(e&1){f=Lg(k[h+68>>2]|0)|0;if(!f){pw(g|0,d|0,n|0)|0;f=0}}else{pw(d|0,g|0,n|0)|0;f=0}d=d+n|0;t=0;c=c-n|0}else{t=b-g|0;f=0}a:do if((f|0)==0&(c|0)!=0){f=k[p>>2]|0;w=f+-4|0;g=m[o>>1]|0;o=l[q+(g+1)>>0]<<16|l[q+g>>0]<<24|l[q+(g+2)>>0]<<8|l[q+(g+3)>>0];k[y>>2]=o;q=a+72|0;do if((e|0)!=2?(i[q>>0]&4)==0:0){f=((f+-5+(k[a+36>>2]|0)-g|0)>>>0)/(w>>>0)|0;b=a+64|0;if((f|0)>(k[b>>2]|0)){h=a+20|0;g=wg(k[h>>2]|0,f<<3,0)|0;if(!g){f=7;break}k[b>>2]=f<<1;k[h>>2]=g}kw(k[a+20>>2]|0,0,f<<2|0)|0;i[q>>0]=l[q>>0]|4;f=0}else f=0;while(0);b=i[q>>0]|0;if((b&4)!=0?(v=(t>>>0)/(w>>>0)|0,u=k[(k[a+20>>2]|0)+(v<<2)>>2]|0,(u|0)!=0):0){k[y>>2]=u;n=(t>>>0)%(w>>>0)|0;h=u;o=v}else{n=t;h=o;o=0}if((f|0)==0&(h|0)!=0){u=e&1;v=u<<1^2;u=(u|0)==0;e=a+20|0;while(1){if(b&4)k[(k[e>>2]|0)+(o<<2)>>2]=h;if(n>>>0>>0){p=(n+c|0)>>>0>w>>>0?w-n|0:c;f=Eg(k[x>>2]|0,h,z,v)|0;if(!f){b=k[z>>2]|0;g=k[b+4>>2]|0;h=l[g+1>>0]<<16|l[g>>0]<<24|l[g+2>>0]<<8|l[g+3>>0];k[y>>2]=h;g=g+(n+4)|0;if(!u){f=Lg(b)|0;if(!f){pw(g|0,d|0,p|0)|0;f=0}}else{pw(d|0,g|0,p|0)|0;f=0}if(!b)n=0;else{Gg(b);n=0}}c=c-p|0;d=d+p|0;o=o+1|0}else{b=o+1|0;f=k[(k[e>>2]|0)+(b<<2)>>2]|0;if(!f){f=Rp(x,h,0,y)|0;h=k[y>>2]|0}else{k[y>>2]=f;h=f;f=0}n=n-w|0;o=b}if(!((f|0)==0&(c|0)!=0&(h|0)!=0))break a;b=i[q>>0]|0}}}while(0);if((f|0)==0&(c|0)!=0){k[A>>2]=57357;k[A+4>>2]=10788;gd(11,13600,A);f=11}}else{k[A>>2]=57202;k[A+4>>2]=10788;gd(11,13600,A);f=11}r=B;return f|0}function Rm(a,b){a=a|0;b=b|0;var c=0,d=0;d=k[a>>2]|0;c=a+44|0;rg(d,k[c>>2]|0);a=b+8|0;b=ph(d,k[a>>2]|0)|0;k[c>>2]=b;$c(k[a>>2]|0);k[a>>2]=0;return}function Sm(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;p=r;r=r+16|0;if((r|0)>=(s|0))ka();e=p+4|0;n=p;o=a+12|0;if(!(k[o>>2]|0)){d=a+8|0;c=Km(k[(k[d>>2]|0)+28>>2]|0,0,0,e)|0;k[o>>2]=c;if(!(k[e>>2]|0))c=7;else{j[c+4>>1]=j[(k[(k[d>>2]|0)+28>>2]|0)+6>>1]|0;i[c+7>>0]=0;f=4}}else f=4;if((f|0)==4){m=vg(256,0)|0;if(!m)c=7;else{kw(m|0,0,256)|0;c=k[b>>2]|0;k[n>>2]=c;if(c){h=b+4|0;while(1){d=k[h>>2]|0;if(d)if((c|0)==(d|0))g=0;else g=d+(k[c+4>>2]|0)|0;else g=k[c+4>>2]|0;k[c+4>>2]=0;f=k[m>>2]|0;e=k[n>>2]|0;if(!f)f=m;else{d=m;c=0;do{Sp(a,e,f,n);k[d>>2]=0;c=c+1|0;d=m+(c<<2)|0;f=k[d>>2]|0;e=k[n>>2]|0}while((f|0)!=0);f=d}k[f>>2]=e;k[n>>2]=g;if(!g)break;else c=g}}k[n>>2]=0;c=0;d=0;do{Sp(a,c,k[m+(d<<2)>>2]|0,n);d=d+1|0;c=k[n>>2]|0}while((d|0)!=64);k[b>>2]=c;$c(m);c=l[(k[o>>2]|0)+7>>0]|0}}r=p;return c|0}function Tm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+64|0;if((r|0)>=(s|0))ka();j=m+40|0;l=m;i[a+56>>0]=1;e=a+64|0;h=a+36|0;g=a+72|0;f=k[(k[g>>2]|0)+24>>2]|0;d=l+0|0;c=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(c|0));d=a+96|0;if(!((k[d>>2]|0)==0?(b=Tp(f,d)|0,(b|0)!=0):0)){b=Sm(e,h)|0;if(!b){e=a+104|0;b=e;Up(k[d>>2]|0,l,k[(k[g>>2]|0)+12>>2]|0,k[b>>2]|0,k[b+4>>2]|0);b=a+92|0;k[b>>2]=(k[b>>2]|0)+1;b=k[a+44>>2]|0;Vp(l,j,um(j,b,((b|0)<0)<<31>>31)|0);b=k[h>>2]|0;if(b){d=a+40|0;do{c=b;b=k[b+4>>2]|0;a=k[c>>2]|0;Vp(l,j,um(j,a,((a|0)<0)<<31>>31)|0);Vp(l,c+8|0,k[c>>2]|0);if(!(k[d>>2]|0))$c(c)}while((b|0)!=0)}k[h>>2]=0;b=Wp(l,e)|0}}r=m;return b|0}function Um(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;p=r;r=r+16|0;if((r|0)>=(s|0))ka();n=p;f=c;h=k[f>>2]|0;f=k[f+4>>2]|0;o=Vm(b)|0;k[d>>2]=o;g=(o|0)==0;e=g?7:0;g=g^1;if((b|0)>0&g){m=o+12|0;l=a+32|0;j=0;do{g=k[m>>2]|0;i=g+(j*56|0)|0;e=Xp(a,i,l,h,f)|0;if(!e){e=Yp(i,n)|0;f=i;h=n;f=ow(k[h>>2]|0,k[h+4>>2]|0,k[f>>2]|0,k[f+4>>2]|0)|0;h=g+(j*56|0)+8|0;g=h;k[g>>2]=f;k[g+4>>2]=L;if(!e)e=Zp(i)|0}else h=g+(j*56|0)+8|0;f=h;h=k[f>>2]|0;f=k[f+4>>2]|0;j=j+1|0;g=(e|0)==0}while((j|0)<(b|0)&g)}if(!g){Ym(o);k[d>>2]=0}b=c;k[b>>2]=h;k[b+4>>2]=f;r=p;return e|0}function Vm(a){a=a|0;var b=0,c=0;b=2;while(1)if((b|0)<(a|0))b=b<<1;else{c=b;break}b=k[2252]|0;if((b|0)!=0?(qc[b&127](100)|0)!=0:0)b=0;else{a=(c*60|0)+16|0;b=vg(a,((a|0)<0)<<31>>31)|0;if(!b)b=0;else{kw(b|0,0,a|0)|0;k[b>>2]=c;k[b+4>>2]=0;a=b+16|0;k[b+12>>2]=a;k[b+8>>2]=a+(c*56|0)}}return b|0}function Wm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=k[2252]|0;if((d|0)!=0?(qc[d&127](100)|0)!=0:0){d=0;g=6}else g=3;do if((g|0)==3){d=vg(64,0)|0;if(!d){g=6;break}else{e=d+0|0;f=e+64|0;do{i[e>>0]=0;e=e+1|0}while((e|0)<(f|0));k[c>>2]=d;k[d+4>>2]=b;k[d>>2]=a;f=k[a+8>>2]|0;e=(k[f+8>>2]|0)+9|0;f=(k[f+4>>2]|0)/2|0;f=(e|0)>(f|0)?e:f;k[d+16>>2]=f;d=a+56|0;e=d;e=ow(f|0,((f|0)<0)<<31>>31|0,k[e>>2]|0,k[e+4>>2]|0)|0;k[d>>2]=e;k[d+4>>2]=L;d=0;break}}while(0);if((g|0)==6){k[c>>2]=d;Ym(b);d=7}return d|0}function Xm(a){a=a|0;if(a){Ym(k[a+4>>2]|0);$c(a)}return}function Ym(a){a=a|0;var b=0,c=0;if((a|0)!=0?(k[a>>2]|0)>0:0){b=a+12|0;c=0;do{_p((k[b>>2]|0)+(c*56|0)|0);c=c+1|0}while((c|0)<(k[a>>2]|0))}$c(a);return}function Zm(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;n=k[b>>2]|0;r=b+4|0;k[r>>2]=a;a:do if((n|0)>0){o=b+12|0;p=0;do{j=k[o>>2]|0;h=j+(p*56|0)|0;j=k[j+(p*56|0)+48>>2]|0;if(j){m=k[j>>2]|0;g=k[(k[m+8>>2]|0)+24>>2]|0;c=Zm(m,k[j+4>>2]|0)|0;if(c)break a;i=k[j+16>>2]|0;e=m+48|0;f=k[e>>2]|0;d=m+56|0;if(!f){c=Tp(g,e)|0;g=d;k[g>>2]=0;k[g+4>>2]=0;if(c)break a;f=k[e>>2]|0;e=0;d=0}else{e=k[d>>2]|0;d=k[d+4>>2]|0}k[j+48>>2]=f;j=j+8|0;k[j>>2]=e;k[j+4>>2]=d;j=ow(e|0,d|0,i|0,((i|0)<0)<<31>>31|0)|0;c=m+56|0;k[c>>2]=j;k[c+4>>2]=L;c=Zp(h)|0;if(c)break a}p=p+1|0}while((p|0)<(n|0));c=k[b>>2]|0;q=12}else{c=n;q=12}while(0);if((q|0)==12){d=c+-1|0;b:do if((d|0)>0){h=b+12|0;i=b+8|0;f=c;e=c;g=d;while(1){c=(f|0)/2|0;if((e|0)>(c|0)){e=g-c<<1;c=e;e=e|1}else{e=g<<1;n=k[i>>2]|0;c=k[n+(e<<2)>>2]|0;e=k[n+((e|1)<<2)>>2]|0}d=k[h>>2]|0;if(k[d+(c*56|0)+24>>2]|0){if(k[d+(e*56|0)+24>>2]|0){n=($p(k[r>>2]|0,k[d+(c*56|0)+32>>2]|0,k[d+(c*56|0)+20>>2]|0,k[d+(e*56|0)+32>>2]|0,k[d+(e*56|0)+20>>2]|0)|0)<1;c=n?c:e}}else c=e;k[(k[i>>2]|0)+(g<<2)>>2]=c;c=g+-1|0;if((c|0)<=0)break b;e=g;f=k[b>>2]|0;g=c}}while(0);c=l[(k[a+12>>2]|0)+7>>0]|0}return c|0}function _m(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=a+76|0;do{b=j[d>>1]|0;c=k[a+(b<<2)+120>>2]|0;if(i[c+5>>0]|0){b=0;break}e=k[c+56>>2]|0;b=m[a+(b<<1)+78>>1]<<1;f=k[c+64>>2]|0;b=(l[f+b>>0]<<8|l[f+(b|1)>>0])&m[c+20>>1];b=wm(a,l[e+(b+1)>>0]<<16|l[e+b>>0]<<24|l[e+(b+2)>>0]<<8|l[e+(b+3)>>0])|0}while((b|0)==0);return b|0}function $m(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,u=0;q=a+8|0;e=k[(k[q>>2]|0)+4>>2]|0;u=k[a+4>>2]|0;s=a+12|0;c=Zp((k[s>>2]|0)+(e*56|0)|0)|0;if(!c){c=k[s>>2]|0;d=e|1;a=(k[a>>2]|0)+e|0;a:do if((a|0)>1){m=c;n=a;g=k[c+(d*56|0)+32>>2]|0;o=c+((e&65534)*56|0)|0;e=c+(d*56|0)|0;while(1){p=o+24|0;h=o;i=o+32|0;j=o+20|0;c=m;f=n;a=g;while(1){d=f;f=(f|0)/2|0;if(!(k[p>>2]|0)){g=a;break}if(((k[e+24>>2]|0)!=0?(r=$p(u,k[i>>2]|0,k[j>>2]|0,a,k[e+20>>2]|0)|0,(r|0)>=0):0)?!((r|0)==0&o>>>0>>0):0){t=10;break}g=k[s>>2]|0;a=k[q>>2]|0;k[a+(f<<2)>>2]=(h-g|0)/56|0;e=k[a+((f^1)<<2)>>2]|0;if((d|0)<=3){c=g;break a}else{c=g;a=k[g+(e*56|0)+32>>2]|0;e=g+(e*56|0)|0}}if((t|0)==10){t=0;c=k[s>>2]|0;g=(k[p>>2]|0)==0?a:0}a=k[q>>2]|0;k[a+(f<<2)>>2]=(e-c|0)/56|0;if((d|0)>3){m=c;n=f;o=c+((k[a+((f^1)<<2)>>2]|0)*56|0)|0}else break}}else a=k[q>>2]|0;while(0);k[b>>2]=(k[c+((k[a+4>>2]|0)*56|0)+24>>2]|0)==0&1;c=l[(k[u+12>>2]|0)+7>>0]|0}return c|0}function an(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+4|0;e=k[d>>2]|0;k[e+4>>2]=k[a>>2];a=Qn(e,b,0)|0;if(!a){a=k[(k[d>>2]|0)+8>>2]|0;if(a)do{if(i[a+72>>0]&16)i[a+73>>0]=0;a=k[a+8>>2]|0}while((a|0)!=0);a=aq(e,b,0,c)|0}return a|0}function bn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=r;r=r+32|0;if((r|0)>=(s|0))ka();o=z;y=z+16|0;x=z+12|0;w=z+8|0;k[y>>2]=0;f=k[a+12>>2]|0;if(!b){b=bq(a,c)|0;k[x>>2]=b}else{k[x>>2]=b;p=(k[b+68>>2]|0)+26|0;j[p>>1]=(j[p>>1]|0)+1<<16>>16}e=Lg(k[f+68>>2]|0)|0;k[w>>2]=e;do if(!e){p=f+56|0;n=k[p>>2]|0;A=n+36|0;e=n+37|0;f=n+38|0;n=n+39|0;g=l[e>>0]<<16|l[A>>0]<<24|l[f>>0]<<8|l[n>>0];h=g+1|0;i[A>>0]=h>>>24;i[e>>0]=h>>>16;i[f>>0]=h>>>8;i[n>>0]=h;n=a+22|0;if(j[n>>1]&4){if(!b){f=il(a,c,x,0)|0;k[w>>2]=f;if(f){d=f;break}b=k[x>>2]|0}f=Lg(k[b+68>>2]|0)|0;k[w>>2]=f;if(f){d=f;break}kw(k[b+56>>2]|0,0,k[(k[b+52>>2]|0)+32>>2]|0)|0}if((i[a+17>>0]|0)!=0?(Ep(a,c,2,0,w),d=k[w>>2]|0,(d|0)!=0):0)break;if(g){e=k[p>>2]|0;e=l[e+33>>0]<<16|l[e+32>>0]<<24|l[e+34>>0]<<8|l[e+35>>0];d=il(a,e,y,0)|0;k[w>>2]=d;if(d)break;d=k[y>>2]|0;h=d+56|0;g=k[h>>2]|0;g=l[g+5>>0]<<16|l[g+4>>0]<<24|l[g+6>>0]<<8|l[g+7>>0];f=(k[a+36>>2]|0)>>>2;if(g>>>0>(f+-2|0)>>>0){k[o>>2]=58627;k[o+4>>2]=10788;gd(11,13600,o);k[w>>2]=11;d=11;break}if(g>>>0<(f+-8|0)>>>0){d=Lg(k[d+68>>2]|0)|0;k[w>>2]=d;if(d)break;p=k[h>>2]|0;o=g+1|0;i[p+4>>0]=o>>>24;i[p+5>>0]=o>>>16;i[p+6>>0]=o>>>8;i[p+7>>0]=o;p=g<<2;o=k[h>>2]|0;i[o+(p+8)>>0]=c>>>24;i[o+(p+9)>>0]=c>>>16;i[o+(p+10)>>0]=c>>>8;i[o+(p+11)>>0]=c;if((((b|0)!=0?(j[n>>1]&4)==0:0)?(q=k[b+68>>2]|0,t=q+24|0,u=m[t>>1]|0,(u&2|0)!=0):0)?(k[(k[q+16>>2]|0)+96>>2]|0)==0:0)j[t>>1]=u|32;e=a+60|0;d=k[e>>2]|0;do if(!d){b=k[a+44>>2]|0;d=vg(512,0)|0;if(!d){k[e>>2]=0;d=7;break}else{kw(d|0,0,512)|0;k[d>>2]=b;k[e>>2]=d;v=28;break}}else v=28;while(0);if((v|0)==28)if((k[d>>2]|0)>>>0>>0)d=0;else d=gi(d,c)|0;k[w>>2]=d;break}}else e=0;if(!b){d=il(a,c,x,0)|0;k[w>>2]=d;if(d)break;b=k[x>>2]|0}d=Lg(k[b+68>>2]|0)|0;k[w>>2]=d;if(!d){d=b+56|0;q=k[d>>2]|0;i[q>>0]=e>>>24;i[q+1>>0]=e>>>16;i[q+2>>0]=e>>>8;i[q+3>>0]=e;d=(k[d>>2]|0)+4|0;i[d>>0]=0;i[d+1>>0]=0;i[d+2>>0]=0;i[d+3>>0]=0;d=k[p>>2]|0;i[d+32>>0]=c>>>24;i[d+33>>0]=c>>>16;i[d+34>>0]=c>>>8;i[d+35>>0]=c;d=0}}else d=e;while(0);b=k[x>>2]|0;if(b){i[b>>0]=0;Gg(k[b+68>>2]|0)}b=k[y>>2]|0;if(b)Gg(k[b+68>>2]|0);r=z;return d|0}function cn(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,n=0,o=0,p=0,q=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;P=r;r=r+48|0;if((r|0)>=(s|0))ka();M=P+24|0;D=P;w=P+36|0;N=P+32|0;t=b+72|0;L=k[t>>2]|0;u=k[a>>2]|0;p=k[b+68>>2]|0;q=u+15|0;if((i[q>>0]|0)!=0?(g=Lg(p)|0,(g|0)!=0):0)O=20;else O=3;a:do if((O|0)==3){h=p+24|0;o=j[h>>1]|0;if((o&2)!=0?(Zo(p)|0)!=0:0){g=_o(p)|0;if(g){O=20;break}o=j[h>>1]|0}if((o&4)==0|(f|0)!=0)n=0;else n=k[p+20>>2]|0;j[h>>1]=o&65531;A=u+204|0;f=fc[k[8744+132>>2]&63](k[(k[A>>2]|0)+40>>2]|0,e,0)|0;f=nl(k[A>>2]|0,e,f)|0;do if(f){j[h>>1]=m[h>>1]|m[f+24>>1]&4;if(!(i[q>>0]|0)){rl(f);break}else{cq(f,(k[u+24>>2]|0)+1|0);break}}while(0);o=k[p+20>>2]|0;cq(p,e);Yo(p);if(i[q>>0]|0){cq(f,o);Gg(f)}do if(n){g=Eg(u,n,M,0)|0;if(!g){A=k[M>>2]|0;z=A+24|0;j[z>>1]=m[z>>1]|4;Yo(A);Gg(A);break}if(n>>>0>(k[u+28>>2]|0)>>>0){O=20;break a}hi(k[u+56>>2]|0,n,k[u+200>>2]|0);O=20;break a}while(0);k[N>>2]=0;k[t>>2]=e;if(c<<24>>24==1|c<<24>>24==5){g=dq(b)|0;k[N>>2]=g;if(!g)O=25;else break}else{f=k[b+56>>2]|0;f=l[f+1>>0]<<16|l[f>>0]<<24|l[f+2>>0]<<8|l[f+3>>0];if(f){Ep(a,f,4,e,N);g=k[N>>2]|0;if(!g)O=25;else break}}if((O|0)==25?c<<24>>24==1:0){g=0;break}g=il(a,d,w,0)|0;k[N>>2]=g;if(!g){z=k[w>>2]|0;A=z+68|0;g=Lg(k[A>>2]|0)|0;k[N>>2]=g;if(g){if(!z)break;Gg(k[A>>2]|0);break}b:do if(c<<24>>24==4){g=k[z+56>>2]|0;h=g+1|0;n=g+2|0;f=g+3|0;if((l[h>>0]<<16|l[g>>0]<<24|l[n>>0]<<8|l[f>>0]|0)==(L|0)){i[g>>0]=e>>>24;i[h>>0]=e>>>16;i[n>>0]=e>>>8;i[f>>0]=e;g=0;break}else{k[M>>2]=56060;k[M+4>>2]=10788;gd(11,13600,M);g=11;break}}else{x=i[z>>0]|0;eq(z)|0;w=j[z+18>>1]|0;y=w&65535;c:do if(w<<16>>16){b=z+56|0;u=z+20|0;p=z+64|0;v=c<<24>>24==3;w=D+18|0;f=0;while(1){t=k[b>>2]|0;q=f<<1;o=k[p>>2]|0;q=(l[o+q>>0]<<8|l[o+(q|1)>>0])&m[u>>1];o=t+q|0;if(v){wp(z,o,D);o=j[w>>1]|0;if((o<<16>>16!=0?(B=(o&65535)+q|0,C=t+(B+3)|0,C>>>0<=((k[b>>2]|0)+(m[u>>1]|0)|0)>>>0):0)?(E=t+B|0,F=t+(B+1)|0,G=t+(B+2)|0,(l[F>>0]<<16|l[E>>0]<<24|l[G>>0]<<8|l[C>>0]|0)==(L|0)):0){o=C;g=E;h=F;n=G;O=40;break}}else{g=t+(q+1)|0;h=t+(q+2)|0;n=t+(q+3)|0;if((l[g>>0]<<16|l[o>>0]<<24|l[h>>0]<<8|l[n>>0]|0)==(L|0)){O=42;break}}f=f+1|0;if((f|0)>=(y|0))break c}if((O|0)==40){i[g>>0]=e>>>24;i[h>>0]=e>>>16;i[n>>0]=e>>>8;i[o>>0]=e;break}else if((O|0)==42){i[o>>0]=e>>>24;i[g>>0]=e>>>16;i[h>>0]=e>>>8;i[n>>0]=e;break}}else f=0;while(0);do if((f|0)==(y|0)){if(c<<24>>24==5?(K=l[z+6>>0]|0,G=k[z+56>>2]|0,H=G+(K+8)|0,I=G+(K+9)|0,J=G+(K+10)|0,K=G+(K+11)|0,(l[I>>0]<<16|l[H>>0]<<24|l[J>>0]<<8|l[K>>0]|0)==(L|0)):0){i[H>>0]=e>>>24;i[I>>0]=e>>>16;i[J>>0]=e>>>8;i[K>>0]=e;break}k[M>>2]=56094;k[M+4>>2]=10788;gd(11,13600,M);g=11;break b}while(0);i[z>>0]=x;g=0}while(0);k[N>>2]=g;if(z)Gg(k[A>>2]|0);if(!g){Ep(a,e,c,d,N);g=k[N>>2]|0}}}while(0);if((O|0)==20)k[N>>2]=g;r=P;return g|0}function dn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=b+20|0;Ym(k[g>>2]|0);k[g>>2]=0;g=b+59|0;if(i[g>>0]|0){h=0;do{d=b+(h<<6)+76|0;rg(a,k[d>>2]|0);k[d>>2]=0;d=b+(h<<6)+80|0;e=k[d>>2]|0;if(e)do{f=e;e=k[e+4>>2]|0;if(f)$c(f)}while((e|0)!=0);k[d>>2]=0;e=b+(h<<6)+96|0;d=k[e>>2]|0;if(d){f=k[d>>2]|0;if(f){qc[k[f+4>>2]&127](d)|0;k[d>>2]=0}$c(d);k[e>>2]=0;d=b+(h<<6)+104|0;k[d>>2]=0;k[d+4>>2]=0}f=b+(h<<6)+112|0;e=k[f>>2]|0;if(e){d=k[e>>2]|0;if(d){qc[k[d+4>>2]&127](e)|0;k[e>>2]=0}$c(e);k[f>>2]=0;d=b+(h<<6)+120|0;k[d>>2]=0;k[d+4>>2]=0}h=h+1|0}while((h|0)<(l[g>>0]|0))}e=b+36|0;if((k[b+40>>2]|0)==0?(c=k[e>>2]|0,(c|0)!=0):0)do{d=c;c=k[c+4>>2]|0;if(d)$c(d)}while((c|0)!=0);k[e>>2]=0;k[b+44>>2]=0;i[b+56>>0]=0;k[b+48>>2]=0;k[b+8>>2]=0;c=b+32|0;rg(a,k[c>>2]|0);k[c>>2]=0;return}function en(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,n=0,o=0,p=0,q=0;p=r;r=r+16|0;if((r|0)>=(s|0))ka();e=p+4|0;l=p;n=k[a>>2]|0;g=k[a+8>>2]|0;h=k[n+16>>2]|0;f=(k[h+(g<<4)+12>>2]|0)+78|0;j[f>>1]=m[f>>1]&65531;f=n+65|0;do if(!(i[f>>0]|0))if(c){o=c+4|0;b=k[o>>2]|0;if(!b){fq(a,k[c>>2]|0,0);d=0;break}d=c+8|0;q=k[d>>2]|0;if((q|0)!=0?(i[q>>0]|0)!=0:0){h=n+144|0;i[h>>0]=g;k[e>>2]=0;In(b,e)|0;b=k[d>>2]|0;k[n+140>>2]=k[e>>2];o=n+146|0;i[o>>0]=0;nh(n,b,-1,0,0,l,0)|0;b=k[n+52>>2]|0;i[h>>0]=0;do if((b|0)!=0?(i[o>>0]|0)==0:0){k[a+12>>2]=b;if((b|0)==7){i[f>>0]=1;break}else if((b|0)==9)break;if((b&255|0)!=6){o=k[c>>2]|0;fq(a,o,Xe(n)|0)}}while(0);rd(k[l>>2]|0)|0;d=0;break}b=k[c>>2]|0;if(!b){fq(a,0,0);d=0;break}b=gq(n,b,k[h+(g<<4)>>2]|0)|0;if((b|0)!=0?(In(k[o>>2]|0,b+40|0)|0)==0:0){fq(a,k[c>>2]|0,13528);d=0}else d=0}else d=0;else{fq(a,k[c>>2]|0,0);d=1}while(0);r=p;return d|0}function fn(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;if((r|0)>=(s|0))ka();g=j;h=j+8|0;f=a+16|0;d=k[f>>2]|0;e=k[(k[d+(b<<4)+12>>2]|0)+32>>2]|0;if(e){d=e;do{hq(k[d+8>>2]|0);d=k[d>>2]|0}while((d|0)!=0);d=k[f>>2]|0}k[h>>2]=a;d=k[d+(b<<4)>>2]|0;k[h+4>>2]=d;do if(!(di(a,13384,d)|0))c=1;else{k[g>>2]=d;d=zh(a,13400,g)|0;if((d|0)!=0?(c=Ve(a,d,23,h,0)|0,rg(a,d),(c|0)!=7):0)break;i[a+65>>0]=1;c=7}while(0);r=j;return c|0}function gn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=k[a+12>>2]|0;if(!g){e=a+4|0;d=a+8|0;f=0}else{e=i[b>>0]|0;if(!(e<<24>>24))e=0;else{d=b;f=e;e=0;do{d=d+1|0;e=e<<3^e^(l[9328+(f&255)>>0]|0);f=i[d>>0]|0}while(f<<24>>24!=0)}f=(e>>>0)%((k[a>>2]|0)>>>0)|0;e=g+(f<<3)|0;d=g+(f<<3)+4|0}e=k[e>>2]|0;d=k[d>>2]|0;k[c>>2]=f;a:do if(!e)d=0;else while(1){e=e+-1|0;if(!(id(k[d+12>>2]|0,b)|0))break a;if(!e){d=0;break}else d=k[d>>2]|0}while(0);return d|0}function hn(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,t=0,u=0;u=r;r=r+16|0;if((r|0)>=(s|0))ka();t=u;q=u+12|0;a:do if((d|0)>0){o=a+16|0;p=a+4|0;n=(b|0)==0;e=c;b=d;while(1){h=b+-1|0;if(!(k[o>>2]|0))break a;if((e|0)<1){e=b;b=5;break}if(jq(a,e)|0)break a;if(Eg(k[p>>2]|0,e,q,0)|0){b=8;break}j=k[q>>2]|0;m=k[j+4>>2]|0;do if(n)if((h|0)>0?(i[(k[a>>2]|0)+17>>0]|0)!=0:0){jn(a,l[m+1>>0]<<16|l[m>>0]<<24|l[m+2>>0]<<8|l[m+3>>0],4,e);b=h}else b=h;else{g=l[m+5>>0]<<16|l[m+4>>0]<<24|l[m+6>>0]<<8|l[m+7>>0];f=k[a>>2]|0;if(i[f+17>>0]|0){jn(a,e,2,0);f=k[a>>2]|0}if((g|0)>(((k[f+36>>2]|0)/4|0)+-2|0)){k[t>>2]=e;ln(a,44640,t);b=b+-2|0;break}b:do if((g|0)>0){b=0;while(1){e=b<<2;e=l[m+(e+9)>>0]<<16|l[m+(e+8)>>0]<<24|l[m+(e+10)>>0]<<8|l[m+(e+11)>>0];if(i[f+17>>0]|0)jn(a,e,2,0);jq(a,e)|0;b=b+1|0;if((b|0)==(g|0))break b;f=k[a>>2]|0}}while(0);b=h-g|0}while(0);e=l[m+1>>0]<<16|l[m>>0]<<24|l[m+2>>0]<<8|l[m+3>>0];if(j)Gg(j);if((b|0)<=0)break a}if((b|0)==5){k[t>>2]=e;k[t+4>>2]=d;k[t+8>>2]=c;ln(a,44552,t);break}else if((b|0)==8){k[t>>2]=e;ln(a,44616,t);break}}while(0);r=u;return}function jn(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;l=r;r=r+32|0;if((r|0)>=(s|0))ka();h=l;f=l+24|0;g=l+20|0;e=mp(k[a>>2]|0,b,f,g)|0;if((e|0)==7|(e|0)==3082){k[a+24>>2]=1;j=3}else if(!e){f=i[f>>0]|0;e=k[g>>2]|0;if(!((e|0)==(d|0)?f<<24>>24==c<<24>>24:0)){k[h>>2]=b;k[h+4>>2]=c&255;k[h+8>>2]=d;k[h+12>>2]=f&255;k[h+16>>2]=e;ln(a,44496,h)}}else j=3;if((j|0)==3){k[h>>2]=b;ln(a,44464,h)}r=l;return}function kn(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,n=0,o=0,p=0,q=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+64|0;if((r|0)>=(s|0))ka();S=Z+40|0;h=Z+56|0;N=Z+32|0;O=Z+24|0;K=Z;X=N;k[X>>2]=0;k[X+4>>2]=0;X=O;k[X>>2]=0;k[X+4>>2]=0;X=a+28|0;Y=k[X>>2]|0;T=a+32|0;U=k[T>>2]|0;V=a+36|0;W=k[V>>2]|0;P=k[a>>2]|0;J=P+36|0;Q=k[J>>2]|0;if((b|0)!=0?(jq(a,b)|0)==0:0){k[X>>2]=43768;k[T>>2]=b;n=il(P,b,h,0)|0;do if(!n){R=k[h>>2]|0;i[R>>0]=0;n=eq(R)|0;if(n){k[S>>2]=n;ln(a,43824,S);if(!R){e=-1;break}Gg(k[R+68>>2]|0);e=-1;break}w=a+16|0;L=R+18|0;n=j[L>>1]|0;a:do if(!(n<<16>>16)){o=R+5|0;n=0;e=0}else{x=R+56|0;y=R+20|0;z=R+64|0;A=K+12|0;B=R+2|0;C=K+16|0;D=Q+-5|0;E=Q+-4|0;F=P+17|0;G=R+5|0;t=0;u=0;while(1){if(!(k[w>>2]|0)){o=G;e=t;break a}k[X>>2]=43864;k[T>>2]=b;k[V>>2]=u;h=k[x>>2]|0;n=u<<1;o=k[z>>2]|0;n=(l[o+n>>0]<<8|l[o+(n|1)>>0])&m[y>>1];o=h+n|0;wp(R,o,K);p=k[A>>2]|0;if(i[B>>0]|0){e=K;v=k[e>>2]|0;e=k[e+4>>2]|0;if(u){g=O;f=k[g>>2]|0;g=k[g+4>>2]|0;if(!((e|0)>(g|0)|(e|0)==(g|0)&v>>>0>f>>>0)){q=S;k[q>>2]=v;k[q+4>>2]=e;q=S+8|0;k[q>>2]=f;k[q+4>>2]=g;ln(a,43896,S)}}else{f=O;k[f>>2]=v;k[f+4>>2]=e;f=N;k[f>>2]=v;k[f+4>>2]=e}f=O;k[f>>2]=v;k[f+4>>2]=e}v=k[C>>2]|0;e=v&65535;if(p>>>0>e>>>0?(H=(v>>>16)+n|0,I=h+H|0,I>>>0<=((k[x>>2]|0)+(k[J>>2]|0)|0)>>>0):0){v=l[h+(H+1)>>0]<<16|l[I>>0]<<24|l[h+(H+2)>>0]<<8|l[h+(H+3)>>0];if(i[F>>0]|0)jn(a,v,3,b);hn(a,0,v,((D+p-e|0)>>>0)/(E>>>0)|0)}if(!(i[G>>0]|0)){q=l[h+(n+1)>>0]<<16|l[o>>0]<<24|l[h+(n+2)>>0]<<8|l[h+(n+3)>>0];if(i[F>>0]|0)jn(a,q,5,b);e=kn(a,q,N,(u|0)==0?0:O)|0;if(!((u|0)<1|(e|0)==(t|0)))ln(a,43944,S)}else e=t;u=u+1|0;n=j[L>>1]|0;if((u|0)>=(n&65535|0)){o=G;break}else t=e}}while(0);if(!(i[o>>0]|0)){h=l[R+6>>0]|0;G=k[R+56>>2]|0;h=l[G+(h+9)>>0]<<16|l[G+(h+8)>>0]<<24|l[G+(h+10)>>0]<<8|l[G+(h+11)>>0];k[X>>2]=43976;k[T>>2]=b;if(i[P+17>>0]|0){jn(a,h,5,b);n=j[L>>1]|0}kn(a,h,0,n<<16>>16!=0?O:0)|0;G=i[o>>0]|0;k[X>>2]=43768;k[T>>2]=b;if(G<<24>>24)M=34}else{k[X>>2]=43768;k[T>>2]=b;M=34}do if((M|0)==34?(i[R+2>>0]|0)!=0:0){h=(d|0)!=0;if(!c){if(!h)break;h=N;n=k[h>>2]|0;h=k[h+4>>2]|0;f=d;g=k[f>>2]|0;f=k[f+4>>2]|0;if((h|0)>(f|0)|(h|0)==(f|0)&n>>>0>g>>>0)break;G=S;k[G>>2]=n;k[G+4>>2]=h;G=S+8|0;k[G>>2]=g;k[G+4>>2]=f;ln(a,44200,S);break}if(!h){n=O;h=k[n>>2]|0;n=k[n+4>>2]|0;f=c;g=k[f>>2]|0;f=k[f+4>>2]|0;if(!((n|0)>(f|0)|(n|0)==(f|0)&h>>>0>g>>>0))break;G=S;k[G>>2]=h;k[G+4>>2]=n;G=S+8|0;k[G>>2]=g;k[G+4>>2]=f;ln(a,44008,S);break}h=N;n=k[h>>2]|0;h=k[h+4>>2]|0;f=c;g=k[f>>2]|0;f=k[f+4>>2]|0;if(!((h|0)>(f|0)|(h|0)==(f|0)&n>>>0>g>>>0)){G=S;k[G>>2]=n;k[G+4>>2]=h;G=S+8|0;k[G>>2]=g;k[G+4>>2]=f;ln(a,44072,S)}g=O;f=k[g>>2]|0;g=k[g+4>>2]|0;h=d;n=k[h>>2]|0;h=k[h+4>>2]|0;if((g|0)>(h|0)|(g|0)==(h|0)&f>>>0>n>>>0){G=S;k[G>>2]=f;k[G+4>>2]=g;g=S+8|0;k[g>>2]=n;k[g+4>>2]=h;ln(a,44136,S);g=O;f=k[g>>2]|0;g=k[g+4>>2]|0}G=c;k[G>>2]=f;k[G+4>>2]=g}while(0);t=k[R+56>>2]|0;u=l[R+6>>0]|0;v=Lo(k[P+32>>2]|0)|0;k[X>>2]=0;if(v){q=((l[t+(u+5)>>0]<<8|l[t+(u+6)>>0])+65535&65535)+1|0;kw(v+q|0,0,Q-q|0)|0;kw(v|0,1,q|0)|0;q=l[t+(u+3)>>0]<<8|l[t+(u+4)>>0];g=u+12-(l[o>>0]<<2)|0;if(q){f=Q+-4|0;p=0;do{o=g+(p<<1)|0;o=l[t+o>>0]<<8|l[t+(o+1)>>0];if((o|0)>(f|0))h=65536;else h=(Qp(R,t+o|0)|0)&65535;n=h+o|0;if((n|0)<=(Q|0)){if(h)do{n=n+-1|0;G=v+n|0;i[G>>0]=(i[G>>0]|0)+1<<24>>24}while((n|0)>(o|0))}else{k[X>>2]=0;k[S>>2]=p;k[S+4>>2]=b;ln(a,44264,S)}p=p+1|0}while((p|0)<(q|0))}f=l[t+(u+1)>>0]<<8|l[t+(u+2)>>0];if(f)do{g=l[t+(f+2)>>0]<<8|l[t+(f+3)>>0];if(g){g=g+f|0;do{g=g+-1|0;G=v+g|0;i[G>>0]=(i[G>>0]|0)+1<<24>>24}while((g|0)>(f|0))}f=l[t+f>>0]<<8|l[t+(f+1)>>0]}while((f|0)!=0);b:do if((Q|0)>0){g=0;f=0;while(1){h=i[v+f>>0]|0;if(h<<24>>24){if(h<<24>>24>1)break}else g=g+1|0;f=f+1|0;if((f|0)>=(Q|0))break b}k[S>>2]=f;k[S+4>>2]=b;ln(a,44312,S)}else g=0;while(0);f=l[t+(u+7)>>0]|0;if((g|0)!=(f|0)){k[S>>2]=g;k[S+4>>2]=f;k[S+8>>2]=b;ln(a,44352,S)}}else k[a+24>>2]=1;el(v);if(R)Gg(k[R+68>>2]|0)}else{k[S>>2]=n;ln(a,43784,S);e=-1}while(0);k[X>>2]=Y;k[T>>2]=U;k[V>>2]=W;e=e+1|0}else e=0;r=Z;return e|0}function ln(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+224|0;if((r|0)>=(s|0))ka();f=j;g=j+8|0;h=j+24|0;d=a+16|0;e=k[d>>2]|0;if(e){k[d>>2]=e+-1;d=a+20|0;k[d>>2]=(k[d>>2]|0)+1;k[g>>2]=c;c=a+40|0;if(k[a+52>>2]|0)Xk(c,43760,1);d=k[a+28>>2]|0;if(d){e=k[a+36>>2]|0;k[f>>2]=k[a+32>>2];k[f+4>>2]=e;fd(200,h,d,f)|0;d=h;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;Xk(c,h,d-h&1073741823)}xg(c,1,b,g);if((i[a+65>>0]|0)==1)k[a+24>>2]=1}r=j;return}function mn(a){a=a|0;var b=0,c=0;b=a+8|0;c=k[b>>2]|0;do if((c|0)!=(k[a+4>>2]|0))if((i[a+24>>0]|0)==1){rg(k[a>>2]|0,c);break}else{$c(c);break}while(0);k[b>>2]=0;return}function nn(a){a=a|0;var b=0,c=0,d=0,e=0;c=k[a+32>>2]|0;e=a+8|0;if(!((j[e>>1]&9312)==0?(k[a+24>>2]|0)==0:0))Vg(a);b=rh(c,64,0)|0;d=a+20|0;k[d>>2]=b;if(!(i[c+65>>0]|0)){do if(!c)b=qc[k[8744+48>>2]&127](b)|0;else{if((k[c+276>>2]|0)>>>0<=b>>>0?(k[c+280>>2]|0)>>>0>b>>>0:0){b=m[c+248>>1]|0;break}b=qc[k[8744+48>>2]&127](b)|0}while(0);k[a+24>>2]=b;d=k[d>>2]|0;k[d>>2]=0;k[d+4>>2]=c;k[d+8>>2]=0;k[d+12>>2]=0;k[d+20>>2]=0;k[d+16>>2]=d+32;j[d+24>>1]=(b+1048544|0)>>>4;j[d+26>>1]=1;k[d+28>>2]=0;k[a>>2]=d;j[e>>1]=32}else{j[e>>1]=1;k[a+24>>2]=0}return}function on(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;f=tn(a)|0;if(f){g=f;k[g>>2]=b;k[g+4>>2]=c;k[f+8>>2]=0;g=a+12|0;e=k[g>>2]|0;if(!e)k[a+8>>2]=f;else{a=a+26|0;d=m[a>>1]|0;if((d&1|0)!=0?(h=e,i=k[h+4>>2]|0,!((i|0)<(c|0)|((i|0)==(c|0)?(k[h>>2]|0)>>>0>>0:0))):0)j[a>>1]=d&65534;k[e+8>>2]=f}k[g>>2]=f}return}function pn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=r;r=r+160|0;if((r|0)>=(s|0))ka();f=g;kw(f|0,0,160)|0;a:do if(!a){a=0;b=0}else{b=0;while(1){c=a+8|0;e=k[c>>2]|0;k[c>>2]=0;if(!b)b=f;else{c=b;b=f;d=0;do{a=rn(c,a)|0;k[b>>2]=0;d=d+1|0;b=f+(d<<2)|0;c=k[b>>2]|0}while((c|0)!=0)}k[b>>2]=a;if(!e){a=0;b=0;break a}a=e;b=k[f>>2]|0}}while(0);do{a=rn(a,k[f+(b<<2)>>2]|0)|0;b=b+1|0}while((b|0)!=40);r=g;return a|0}function qn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();d=f;e=k[a+12>>2]|0;if(!e)k[b>>2]=a;else{qn(e,b,d);k[(k[d>>2]|0)+8>>2]=a}d=a+8|0;e=k[d>>2]|0;if(!e)k[c>>2]=a;else qn(e,d,c);r=f;return}function rn(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;j=r;r=r+16|0;if((r|0)>=(s|0))ka();i=j;c=(a|0)!=0;a:do if(c&(b|0)!=0){d=a;a=i;while(1){g=d;f=k[g>>2]|0;g=k[g+4>>2]|0;while(1){e=b;c=k[e>>2]|0;e=k[e+4>>2]|0;if((g|0)<(e|0)|(g|0)==(e|0)&f>>>0>>0){h=4;break}if(!((e|0)<(g|0)|(e|0)==(g|0)&c>>>0>>0))break;k[a+8>>2]=b;c=k[b+8>>2]|0;if(!c){e=0;c=1;break a}else{a=b;b=c}}if((h|0)==4){h=0;k[a+8>>2]=d;a=d}d=k[d+8>>2]|0;c=(d|0)!=0;if(!(c&(b|0)!=0)){e=b;b=a;break}}}else{e=b;d=a;b=i}while(0);k[b+8>>2]=c?d:e;r=j;return k[i+8>>2]|0}function sn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;c=a+8|0;b=k[c>>2]|0;k[d>>2]=b;k[c>>2]=0;k[a+12>>2]=0;if(!b)b=a;else{c=1;while(1){f=b+8|0;k[d>>2]=k[f>>2];k[b+12>>2]=a;a=kq(d,c)|0;k[f>>2]=a;a=k[d>>2]|0;if(!a)break;else{f=b;b=a;c=c+1|0;a=f}}}r=e;return b|0}function tn(a){a=a|0;var b=0,c=0,d=0,e=0;d=a+24|0;b=j[d>>1]|0;if(!(b<<16>>16)){b=rh(k[a+4>>2]|0,1016,0)|0;if(!b)b=0;else{k[b>>2]=k[a>>2];k[a>>2]=b;b=b+8|0;k[a+16>>2]=b;j[d>>1]=63;c=62;e=5}}else{c=b+-1<<16>>16;b=k[a+16>>2]|0;e=5}if((e|0)==5){j[d>>1]=c;k[a+16>>2]=b+16}return b|0}function un(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+16|0;if((r|0)>=(s|0))ka();n=o;d=a+4|0;if(i[d>>0]|0){b=vn(a)|0;if(!b){h=i[d>>0]|0;c=4}}else{h=0;c=4}do if((c|0)==4){e=k[a>>2]|0;l=k[a+60>>2]|0;f=k[a+212>>2]|0;b=a+160|0;c=k[b>>2]|0;b=k[b+4>>2]|0;g=a+208|0;k[g>>2]=0;d=(k[e+4>>2]|0)+112|0;m=vg(d,0)|0;if(!m)b=7;else{kw(m|0,0,d|0)|0;k[m>>2]=e;p=m+112|0;d=m+8|0;k[d>>2]=p;k[m+4>>2]=l;j[m+40>>1]=-1;a=m+16|0;k[a>>2]=c;k[a+4>>2]=b;k[m+100>>2]=f;a=m+48|0;i[a>>0]=1;c=m+49|0;i[c>>0]=1;i[m+43>>0]=h<<24>>24!=0?2:0;k[n>>2]=524294;b=yc[k[e+24>>2]&31](e,f,p,524294,n)|0;if(b){lq(m,0);c=k[d>>2]|0;d=k[c>>2]|0;if(d){qc[k[d+4>>2]&127](c)|0;k[c>>2]=0}$c(m);break}if(k[n>>2]&1)i[m+46>>0]=1;d=qc[k[(k[l>>2]|0)+48>>2]&127](l)|0;if(d&1024)i[a>>0]=0;if(d&4096)i[c>>0]=0;k[g>>2]=m;b=0}}while(0);r=o;return b|0}function vn(a){a=a|0;var b=0,c=0,d=0;d=kl(a,4)|0;if((d|0)!=0?(b=k[a+60>>2]|0,c=k[b>>2]|0,(c|0)!=0):0){if(!(i[a+13>>0]|0))wc[k[c+32>>2]&127](b,1)|0;b=a+17|0;if((i[b>>0]|0)!=5)i[b>>0]=1}return d|0}function wn(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;j=r;r=r+16|0;if((r|0)>=(s|0))ka();h=j;if(!a)e=0;else{g=a+4|0;e=k[g>>2]|0;e=wc[k[(k[e>>2]|0)+28>>2]&127](e,4)|0;if(!e){f=a+43|0;if(!(i[f>>0]|0))i[f>>0]=1;e=Yn(a,0,0,0,b,c,d,0,0)|0;if(!e){k[h>>2]=-1;e=k[g>>2]|0;fc[k[(k[e>>2]|0)+40>>2]&63](e,10,h)|0;if((k[h>>2]|0)==1){e=a+16|0;b=k[e+4>>2]|0;if((b|0)>-1|(b|0)==-1&(k[e>>2]|0)>>>0>4294967295){cp(a,0,0);c=0;e=0}else{c=0;e=0}}else{c=1;e=0}}else c=0}else c=0;lq(a,c);b=k[a+8>>2]|0;f=k[b>>2]|0;if(f){qc[k[f+4>>2]&127](b)|0;k[b>>2]=0}if(c){b=k[3164]|0;if(b)sc[b&3]();b=k[a>>2]|0;fc[k[b+28>>2]&63](b,k[a+100>>2]|0,0)|0;b=k[3166]|0;if(b)sc[b&3]()}$c(k[a+32>>2]|0);$c(a)}r=j;return e|0}function xn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=a+5|0;d=i[h>>0]|0;if(!((i[a+15>>0]|0)!=0?!((b|0)==2|(b|0)==4):0))e=3;do if(((e|0)==3?(c=d&255,(c|0)!=(b|0)):0)?(i[h>>0]=b,(i[a+4>>0]|0)==0&(c&5|0)==1&(b&1|0)==0):0){c=k[a+64>>2]|0;d=k[c>>2]|0;if(d){qc[k[d+4>>2]&127](c)|0;k[c>>2]=0}g=a+17|0;if((l[g>>0]|0)>1){c=k[a>>2]|0;fc[k[c+28>>2]&63](c,k[a+172>>2]|0,0)|0;break}d=a+16|0;c=i[d>>0]|0;f=c<<24>>24==0;if(f){b=hl(a)|0;e=i[d>>0]|0}else{e=c;b=0}if(e<<24>>24==1)b=kl(a,2)|0;if((b|0)==0?(d=k[a>>2]|0,fc[k[d+28>>2]&63](d,k[a+172>>2]|0,0)|0,c<<24>>24==1):0){d=k[a+60>>2]|0;c=k[d>>2]|0;if(!c)break;if(!(i[a+13>>0]|0))wc[k[c+32>>2]&127](d,1)|0;if((i[g>>0]|0)==5)break;i[g>>0]=1;break}if(f)So(a)}while(0);return l[h>>0]|0}function yn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();e=f;d=f+4|0;do if(c)if(!(nh(a,c,-1,0,0,d,0)|0)){d=k[d>>2]|0;Xd(d)|0;a=mq(a,d,b)|0;break}else{ih(b,a,Xe(a)|0,e);a=Sf(a)|0;break}else a=7;while(0);r=f;return a|0}function zn(a){a=a|0;var b=0;k[(k[a+4>>2]|0)+4>>2]=k[a>>2];b=Pg(a,0)|0;if(!b)b=Og(a,0)|0;return b|0}function An(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a+4>>2]|0;k[c+4>>2]=k[a>>2];a=b&255;if(j[c+22>>1]&2){b=c+17|0;if(((a|0)!=0|0)==(l[b>>0]|0|0))d=4;else b=8}else{b=c+17|0;d=4}if((d|0)==4){i[b>>0]=(a|0)!=0&1;i[c+18>>0]=(a|0)==2&1;b=0}return b|0}function Bn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();d=f;c=nh(a,c,-1,0,0,d,0)|0;do if(!c){d=k[d>>2]|0;while(1){if((Xd(d)|0)!=100){e=6;break}c=yn(a,b,ke(d,0)|0)|0;if(c){e=5;break}}if((e|0)==5){mq(a,d,b)|0;break}else if((e|0)==6){c=mq(a,d,b)|0;break}}while(0);r=f;return c|0}function Cn(a){a=a|0;var b=0;b=a+100|0;k[b>>2]=(k[b>>2]|0)+1;b=k[a+88>>2]|0;if(b)do{k[b+16>>2]=1;b=k[b+44>>2]|0}while((b|0)!=0);ip(k[a+204>>2]|0,0);return}function Dn(a){a=a|0;var b=0,c=0,d=0;d=a+304|0;b=k[d>>2]|0;if(!((b|0)%5|0)){b=(b<<2)+20|0;c=a+328|0;b=wo(a,k[c>>2]|0,b,((b|0)<0)<<31>>31)|0;if(!b)b=7;else{a=b+(k[d>>2]<<2)|0;k[a+0>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[c>>2]=b;b=0}}else b=0;return b|0}function En(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,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;if((r|0)>=(s|0))ka();w=z;p=z+8|0;u=z+4|0;f=b+56|0;q=k[f>>2]|0;t=k[b+52>>2]|0;k[u>>2]=0;k[w>>2]=k[b>>2];y=zh(a,10344,w)|0;do if(!y)f=7;else{v=rh(a,28,0)|0;if(!v){rg(a,y);f=7;break}n=v+0|0;m=n+28|0;do{i[n>>0]=0;n=n+1|0}while((n|0)<(m|0));k[v>>2]=a;k[v+4>>2]=c;o=k[b+68>>2]|0;a:do if(o){n=k[a+20>>2]|0;if((n|0)>0){h=k[a+16>>2]|0;g=0;while(1){m=g+1|0;if((k[h+(g<<4)+12>>2]|0)==(o|0)){m=g;break a}if((m|0)<(n|0))g=m;else break}}else m=0}else m=-1e6;while(0);k[(k[f>>2]|0)+4>>2]=k[(k[a+16>>2]|0)+(m<<4)>>2];n=p+4|0;k[n>>2]=b;k[p>>2]=v;o=a+324|0;h=k[o>>2]|0;k[o>>2]=p;m=v+8|0;f=pc[d&7](a,k[c+8>>2]|0,t,q,m,u)|0;k[o>>2]=h;do if((f|0)==7){i[a+65>>0]=1;x=11}else if(!f){h=k[m>>2]|0;if(h){k[h+0>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[k[m>>2]>>2]=k[c>>2];k[v+12>>2]=1;if(k[n>>2]|0){k[w>>2]=k[b>>2];f=zh(a,28376,w)|0;k[e>>2]=f;Fn(v);f=1;break}u=b+60|0;k[v+24>>2]=k[u>>2];k[u>>2]=v;u=b+38|0;f=j[u>>1]|0;if(f<<16>>16>0){t=b+4|0;g=k[t>>2]|0;d=0;while(1){p=k[g+(d*24|0)+12>>2]|0;if(p){h=p;while(1)if(!(i[h>>0]|0))break;else h=h+1|0;m=h-p|0;o=m&1073741823;if((Kc(28424,p,6)|0)==0?(q=i[p+6>>0]|0,q<<24>>24==32|q<<24>>24==0):0)h=0;else x=24;b:do if((x|0)==24){x=0;if(!o)h=0;else{h=0;while(1){if((Kc(28432,p+h|0,7)|0)==0?(q=i[p+(h+7)>>0]|0,q<<24>>24==32|q<<24>>24==0):0)break;h=h+1|0;if((h|0)>=(o|0))break b}h=h+1|0}}while(0);if((h|0)<(o|0)){n=(i[p+(h+6)>>0]|0)!=0|6;g=h+n|0;if((g|0)<=(o|0)){m=(m&1073741823)+1-n|0;f=g;g=h;while(1){i[p+g>>0]=i[p+f>>0]|0;g=g+1|0;if((g|0)==(m|0))break;else f=g+n|0}}if((i[p+h>>0]|0)==0&(h|0)>0)i[p+(h+-1)>>0]=0;g=k[t>>2]|0;f=g+(d*24|0)+23|0;i[f>>0]=l[f>>0]|2;f=j[u>>1]|0}}d=d+1|0;if((d|0)>=(f<<16>>16|0)){f=0;break}}}else f=0}else f=0}else x=11;while(0);if((x|0)==11){g=k[u>>2]|0;if(!g){k[w>>2]=y;d=zh(a,28344,w)|0;k[e>>2]=d}else{k[w>>2]=g;d=zh(a,10344,w)|0;k[e>>2]=d;$c(k[u>>2]|0)}rg(a,v)}rg(a,y)}while(0);r=z;return f|0}function Fn(a){a=a|0;var b=0,c=0,d=0;b=k[a>>2]|0;d=a+12|0;c=(k[d>>2]|0)+-1|0;k[d>>2]=c;if(!c){c=k[a+8>>2]|0;if(c)qc[k[(k[c>>2]|0)+16>>2]&127](c)|0;rg(b,a)}return}function Gn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,r=0,s=0;s=a+10|0;d=b<<24>>24==1;if((i[s>>0]|0)==1|d){o=a+12|0;c=k[o>>2]|0;if(d){d=c&-2;k[o>>2]=d;g=d;d=d<<1|1}else{g=c;d=(c<<1)+2|0}p=a+16|0;c=k[p>>2]|0;n=c+g|0;q=a+32|0;r=rh(k[q>>2]|0,d,((d|0)<0)<<31>>31)|0;if(!r)c=7;else{d=i[s>>0]|0;if(d<<24>>24==2)if((g|0)>0){d=r;do{e=l[c>>0]|0;g=c+2|0;h=l[c+1>>0]<<8;f=h|e;if((h&63488|0)==55296&g>>>0>>0){f=(f<<10&983040)+65536|e<<10&64512|l[g>>0]|l[c+3>>0]<<8&768;c=c+4|0}else c=g;do if(f>>>0>=128){if(f>>>0<2048){i[d>>0]=f>>>6&31|192;i[d+1>>0]=f&63|128;d=d+2|0;break}if(f>>>0<65536){i[d>>0]=f>>>12&15|224;i[d+1>>0]=f>>>6&63|128;i[d+2>>0]=f&63|128;d=d+3|0;break}else{i[d>>0]=f>>>18&7|240;i[d+1>>0]=f>>>12&63|128;i[d+2>>0]=f>>>6&63|128;i[d+3>>0]=f&63|128;d=d+4|0;break}}else{i[d>>0]=f;d=d+1|0}while(0)}while(c>>>0>>0);h=55}else{d=r;h=55}else if(d<<24>>24!=1)if((g|0)>0){d=r;do{h=l[c>>0]<<8;g=c+2|0;f=l[c+1>>0]|0;e=h|f;if((h&63488|0)==55296&g>>>0>>0){e=(e<<10&983040)+65536|f<<10&64512|l[c+3>>0]|l[g>>0]<<8&768;c=c+4|0}else c=g;do if(e>>>0>=128){if(e>>>0<2048){i[d>>0]=e>>>6&31|192;i[d+1>>0]=e&63|128;d=d+2|0;break}if(e>>>0<65536){i[d>>0]=e>>>12&15|224;i[d+1>>0]=e>>>6&63|128;i[d+2>>0]=e&63|128;d=d+3|0;break}else{i[d>>0]=e>>>18&7|240;i[d+1>>0]=e>>>12&63|128;i[d+2>>0]=e>>>6&63|128;i[d+3>>0]=e&63|128;d=d+4|0;break}}else{i[d>>0]=e;d=d+1|0}while(0)}while(c>>>0>>0);h=55}else{d=r;h=55}else{d=(g|0)>0;if(b<<24>>24==2)if(d){d=r;g=c;while(1){c=g+1|0;e=i[g>>0]|0;f=e&255;if((e&255)>191){f=l[15360+(f+-192)>>0]|0;a:do if((c|0)==(n|0))c=n;else while(1){e=i[c>>0]|0;if((e&-64)<<24>>24!=-128)break a;g=g+2|0;f=e&63|f<<6;if((g|0)==(n|0)){c=n;break}else{e=c;c=g;g=e}}while(0);if(!(f>>>0<128|(f&-2048|0)==55296|(f&-2|0)==65534))if(f>>>0<65536)h=22;else{g=f+-65536|0;i[d>>0]=g>>>10&192|f>>>10&63;i[d+1>>0]=g>>>18&3|216;i[d+2>>0]=f;i[d+3>>0]=f>>>8&3|220;d=d+4|0}else{f=65533;h=22}}else h=22;if((h|0)==22){h=0;i[d>>0]=f;i[d+1>>0]=f>>>8;d=d+2|0}if(c>>>0>>0)g=c;else break}}else d=r;else if(d){d=r;do{g=c+1|0;f=i[c>>0]|0;e=f&255;if((f&255)>191){e=l[15360+(e+-192)>>0]|0;b:do if((g|0)==(n|0))c=n;else{f=c;c=g;while(1){g=i[c>>0]|0;if((g&-64)<<24>>24!=-128)break b;f=f+2|0;e=g&63|e<<6;if((f|0)==(n|0)){c=n;break}else{g=c;c=f;f=g}}}while(0);if(!(e>>>0<128|(e&-2048|0)==55296|(e&-2|0)==65534))if(e>>>0<65536)h=31;else{g=e+-65536|0;i[d>>0]=g>>>18&3|216;i[d+1>>0]=g>>>10&192|e>>>10&63;i[d+2>>0]=e>>>8&3|220;i[d+3>>0]=e;d=d+4|0}else{e=65533;h=31}}else{c=g;h=31}if((h|0)==31){h=0;i[d>>0]=e>>>8;i[d+1>>0]=e;d=d+2|0}}while(c>>>0>>0)}else d=r;k[o>>2]=d-r;i[d>>0]=0;d=d+1|0}if((h|0)==55)k[o>>2]=d-r;i[d>>0]=0;d=a+8|0;o=j[d>>1]|0;c=o&65535;if(!((o&9312)==0?(k[a+24>>2]|0)==0:0))Vg(a);j[d>>1]=c&29|514;i[s>>0]=b;k[p>>2]=r;k[a+20>>2]=r;c=k[q>>2]|0;do if(!c)c=qc[k[8744+48>>2]&127](r)|0;else{if((k[c+276>>2]|0)>>>0<=r>>>0?(k[c+280>>2]|0)>>>0>r>>>0:0){c=m[c+248>>1]|0;break}c=qc[k[8744+48>>2]&127](r)|0}while(0);k[a+24>>2]=c;c=0}}else if(!(_l(a)|0)){c=k[a+16>>2]|0;q=k[a+12>>2]&-2;d=c+q|0;if((q|0)>0)do{p=i[c>>0]|0;q=c+1|0;i[c>>0]=i[q>>0]|0;c=c+2|0;i[q>>0]=p}while(c>>>0>>0);i[s>>0]=b;c=0}else c=7;return c|0}function Hn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=i[a>>0]|0;d=f&255;a:do switch(d|0){case 41:{k[b>>2]=23;c=1;break}case 58:case 35:case 64:case 36:{k[b>>2]=135;d=i[a+1>>0]|0;if(d<<24>>24){c=1;f=0;while(1){if(!(i[10368+(d&255)>>0]&70)){if(d<<24>>24==40&(f|0)>0){d=f;g=78;break}if(d<<24>>24!=58){d=f;break}d=c+1|0;if((i[a+d>>0]|0)==58)c=d;else{d=f;break}}else f=f+1|0;c=c+1|0;d=i[a+c>>0]|0;if(!(d<<24>>24)){d=f;break}}do if((g|0)==78){e=c;while(1){c=e+1|0;f=i[a+c>>0]|0;if(!(f<<24>>24))break;if(f<<24>>24!=41?(i[10368+(f&255)>>0]&1)==0:0)e=c;else{g=81;break}}if((g|0)==81)if(f<<24>>24==41){c=e+2|0;break}k[b>>2]=150}while(0);if(d)break a}else c=1;k[b>>2]=150;break}case 61:{k[b>>2]=79;c=(i[a+1>>0]|0)==61?2:1;break}case 60:{c=i[a+1>>0]|0;if(c<<24>>24==61){k[b>>2]=81;c=2;break a}else if(c<<24>>24==62){k[b>>2]=78;c=2;break a}else if(c<<24>>24==60){k[b>>2]=87;c=2;break a}else{k[b>>2]=82;c=1;break a}}case 43:{k[b>>2]=89;c=1;break}case 42:{k[b>>2]=91;c=1;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{g=51;break}case 46:{if(((l[a+1>>0]|0)+-48|0)>>>0<10)g=51;else{k[b>>2]=122;c=1}break}case 124:if((i[a+1>>0]|0)==124){k[b>>2]=94;c=2;break a}else{k[b>>2]=86;c=1;break a}case 59:{k[b>>2]=1;c=1;break}case 47:{if((i[a+1>>0]|0)==42?(c=i[a+2>>0]|0,c<<24>>24!=0):0){c=c&255;d=3;while(1){f=i[a+d>>0]|0;if((c|0)==42&f<<24>>24==47){c=42;break}c=f&255;if(!(f<<24>>24))break;else d=d+1|0}k[b>>2]=151;c=((c|0)!=0&1)+d|0;break a}k[b>>2]=92;c=1;break}case 44:{k[b>>2]=26;c=1;break}case 88:case 120:{if((i[a+1>>0]|0)==39){k[b>>2]=134;c=2;while(1){d=i[a+c>>0]|0;if(!(i[10368+(d&255)>>0]&8))break;else c=c+1|0}if(d<<24>>24==39&(c&1|0)==0)d=1;else{k[b>>2]=150;while(1){d=i[a+c>>0]|0;if(d<<24>>24==39|d<<24>>24==0)break;c=c+1|0}d=d<<24>>24!=0}c=(d&1)+c|0}else g=98;break}case 33:if((i[a+1>>0]|0)==61){k[b>>2]=78;c=2;break a}else{k[b>>2]=150;c=2;break a}case 37:{k[b>>2]=93;c=1;break}case 63:{k[b>>2]=135;c=1;while(1)if(((l[a+c>>0]|0)+-48|0)>>>0<10)c=c+1|0;else break;break}case 38:{k[b>>2]=85;c=1;break}case 126:{k[b>>2]=96;c=1;break}case 34:case 39:case 96:{d=i[a+1>>0]|0;b:do if(d<<24>>24){c=1;while(1){if(d<<24>>24==f<<24>>24){c=c+1|0;if((i[a+c>>0]|0)!=f<<24>>24)break}c=c+1|0;d=i[a+c>>0]|0;if(!(d<<24>>24))break b}if(f<<24>>24==39){k[b>>2]=97;break a}else{k[b>>2]=27;break a}}else c=1;while(0);k[b>>2]=150;break}case 62:{c=i[a+1>>0]|0;if(c<<24>>24==62){k[b>>2]=88;c=2;break a}else if(c<<24>>24==61){k[b>>2]=83;c=2;break a}else{k[b>>2]=80;c=1;break a}}case 91:{c=1;while(1){d=i[a+c>>0]|0;if(!(d<<24>>24)){d=d&255;break}c=c+1|0;if(d<<24>>24==93){d=93;break}}k[b>>2]=(d|0)==93?27:150;break}case 13:case 12:case 10:case 9:case 32:{c=1;while(1)if(!(i[10368+(l[a+c>>0]|0)>>0]&1))break;else c=c+1|0;k[b>>2]=151;break}case 40:{k[b>>2]=22;c=1;break}case 45:{if((i[a+1>>0]|0)==45)c=2;else{k[b>>2]=90;c=1;break a}while(1){d=i[a+c>>0]|0;if(d<<24>>24==0|d<<24>>24==10)break;c=c+1|0}k[b>>2]=151;break}default:g=98}while(0);c:do if((g|0)==51){k[b>>2]=132;c=i[a>>0]|0;if(c<<24>>24==48){d=i[a+1>>0]|0;if(d<<24>>24==88|d<<24>>24==120)if(!(i[10368+(l[a+2>>0]|0)>>0]&8))e=0;else{c=3;while(1)if(!(i[10368+(l[a+c>>0]|0)>>0]&8))break c;else c=c+1|0}else{c=48;e=0}}else e=0;while(1){d=e+1|0;if(((c&255)+-48|0)>>>0>=10){d=e;break}c=i[a+d>>0]|0;e=d}if(c<<24>>24==46){c=d;do{c=c+1|0;d=a+c|0}while(((l[d>>0]|0)+-48|0)>>>0<10);k[b>>2]=133;e=i[d>>0]|0;f=c}else{e=c;f=d}do if(e<<24>>24==69|e<<24>>24==101){d=i[a+(f+1)>>0]|0;if(((d&255)+-48|0)>>>0>=10){if(!(d<<24>>24==45|d<<24>>24==43)){d=e;c=f;break}c=f+2|0;if(((l[a+c>>0]|0)+-48|0)>>>0>=10){d=e;c=f;break}}else c=f+2|0;while(1){d=a+c|0;if(((l[d>>0]|0)+-48|0)>>>0<10)c=c+1|0;else break}k[b>>2]=133;d=i[d>>0]|0}else{d=e;c=f}while(0);if(i[10368+(d&255)>>0]&70)do{k[b>>2]=150;c=c+1|0}while((i[10368+(l[a+c>>0]|0)>>0]&70)!=0)}else if((g|0)==98){if(!(i[10368+d>>0]&70)){k[b>>2]=150;c=1;break}else c=1;while(1)if(!(i[10368+(l[a+c>>0]|0)>>0]&70))break;else c=c+1|0;d=ki(a,c)|0;k[b>>2]=d}while(0);return c|0}function In(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=i[a>>0]|0;if(d<<24>>24==43){a=a+1|0;g=0;h=13}else if(d<<24>>24==45){a=a+1|0;g=1;h=13}else if((d<<24>>24==48?(d=i[a+1>>0]|0,d<<24>>24==88|d<<24>>24==120):0)?(e=a+2|0,c=i[e>>0]|0,(i[10368+(c&255)>>0]&8)!=0):0){while(1){d=e+1|0;if(c<<24>>24!=48)break;e=d;c=i[d>>0]|0}if(!(i[10368+(c&255)>>0]&8)){c=0;d=0}else{f=c;a=0;d=0;do{c=f<<24>>24;d=(0-(c>>>6&1)&9)+c&15|d<<4;a=a+1|0;f=i[e+a>>0]|0;c=(i[10368+(f&255)>>0]&8)==0}while((a|0)<8&(c^1));c=c^1}if((d|0)<0|c)c=0;else{k[b>>2]=d;c=1}}else{g=0;h=13}a:do if((h|0)==13){c=0;d=0;f=0;while(1){e=(i[a+f>>0]|0)+-48|0;if(e>>>0>=10)break;d=xw(c|0,d|0,10,0)|0;c=ow(e|0,((e|0)<0)<<31>>31|0,d|0,L|0)|0;f=f+1|0;if((f|0)>=11){c=0;break a}else d=L}e=iw(c|0,d|0,g|0,0)|0;a=L;if((a|0)>0|(a|0)==0&e>>>0>2147483647)c=0;else{if(g)c=iw(0,0,c|0,d|0)|0;k[b>>2]=c;c=1}}while(0);return c|0}function Jn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();f=e;k[f>>2]=d;xg(a,b,c,f);r=e;return}function Kn(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;var h=0,m=0,n=0,o=0,p=0,q=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;E=r;r=r+16|0;if((r|0)>=(s|0))ka();C=E;A=E+4|0;k[A>>2]=0;D=rh(a,536,0)|0;a:do if(D){kw(D|0,0,536)|0;k[D+476>>2]=e;p=a+20|0;e=k[p>>2]|0;b:do if((e|0)>0){q=a+16|0;n=0;while(1){o=k[(k[q>>2]|0)+(n<<4)+4>>2]|0;if(o){k[(k[o+4>>2]|0)+4>>2]=k[o>>2];h=gl(o,1,1)|0;if(h)break;e=k[p>>2]|0}n=n+1|0;if((n|0)>=(e|0))break b}k[C>>2]=k[(k[q>>2]|0)+(n<<4)>>2];zg(a,h,40984,C);n=D;break a}while(0);wl(a);k[D>>2]=a;k[D+424>>2]=0;do if((c|0)>-1){if((c|0)!=0?(i[b+(c+-1)>>0]|0)==0:0){B=21;break}if((k[a+92>>2]|0)<(c|0)){zg(a,18,41016,C);if(!a){n=D;h=18;break a}if(!(i[a+65>>0]|0)){n=D;h=k[a+56>>2]&18;break a}else{Vl(a);n=D;h=7;break a}}else{if((b|0)!=0?(m=ow(c|0,((c|0)<0)<<31>>31|0,1,0)|0,m=rh(a,m,L)|0,(m|0)!=0):0){pw(m|0,b|0,c|0)|0;i[m+c>>0]=0;Qh(D,m,A)|0;rg(a,m);h=D+480|0;k[h>>2]=b+((k[h>>2]|0)-m);break}k[D+480>>2]=b+c;break}}else B=21;while(0);if((B|0)==21)Qh(D,b,A)|0;q=a+65|0;e=D+12|0;if(!(i[q>>0]|0)){n=D+12|0;if((k[e>>2]|0)==101)k[n>>2]=0}else{k[e>>2]=7;n=D+12|0}c:do if((i[D+17>>0]|0)!=0?(t=k[D>>2]|0,u=t+20|0,(k[u>>2]|0)>0):0){m=t+16|0;p=0;while(1){e=k[m>>2]|0;h=k[e+(p<<4)+4>>2]|0;if(h){if(!(i[h+8>>0]|0)){e=Dg(h,0)|0;if((e|0)==7|(e|0)==3082)break;else if(e)break c;e=k[m>>2]|0;o=1}else o=0;c=k[h+4>>2]|0;k[c+4>>2]=k[h>>2];c=k[(k[c+12>>2]|0)+56>>2]|0;if((l[c+41>>0]<<16|l[c+40>>0]<<24|l[c+42>>0]<<8|l[c+43>>0]|0)!=(k[k[e+(p<<4)+12>>2]>>2]|0)){Am(t,p);k[n>>2]=17}if(o)zn(h)|0}p=p+1|0;if((p|0)>=(k[u>>2]|0))break c}i[t+65>>0]=1}while(0);if(i[q>>0]|0)k[n>>2]=7;if(g)k[g>>2]=k[D+480>>2];h=k[n>>2]|0;o=(h|0)==0;do if(o?(w=D+8|0,v=k[w>>2]|0,(v|0)!=0):0){n=i[D+450>>0]|0;if(n<<24>>24==2){nq(v,4);m=8;e=12}else if(!(n<<24>>24))break;else{nq(v,8);m=0;e=8}n=m;do{oq(k[w>>2]|0,n-m|0,0,k[41040+(n<<2)>>2]|0,0);n=n+1|0}while((n|0)<(e|0))}while(0);m=D+8|0;if((i[a+145>>0]|0)==0?(z=k[m>>2]|0,x=(k[D+480>>2]|0)-b|0,(z|0)!=0):0){if((b|0)!=0?(w=k[z>>2]|0,y=ow(x|0,((x|0)<0)<<31>>31|0,1,0)|0,y=rh(w,y,L)|0,(y|0)!=0):0){pw(y|0,b|0,x|0)|0;i[y+x>>0]=0;n=y}else n=0;k[z+168>>2]=n;z=z+88|0;j[z>>1]=j[z>>1]&-257|(d&65535)<<8&256}n=k[m>>2]|0;do if(!n)B=60;else{if(o?(i[q>>0]|0)==0:0){B=60;break}Sg(n)|0}while(0);if((B|0)==60)k[f>>2]=n;m=k[A>>2]|0;do if(!m){k[a+52>>2]=h;m=k[a+236>>2]|0;if(m){n=m+8|0;if(!(j[n>>1]&9312)){j[n>>1]=1;break}else{Ag(m);break}}}else{k[C>>2]=m;zg(a,h,10344,C);rg(a,m)}while(0);m=D+528|0;n=k[m>>2]|0;if(!n)n=D;else{do{k[m>>2]=k[n+4>>2];rg(a,n);n=k[m>>2]|0}while((n|0)!=0);n=D}}else{n=0;h=7}while(0);Hh(n);rg(a,D);C=Tg(a,h)|0;r=E;return C|0}function Ln(a){a=a|0;var b=0,c=0;c=k[a>>2]|0;if((i[c+145>>0]|0)==0?(b=ci(c,a+4|0)|0,(b|0)!=0):0){k[a+12>>2]=b;c=a+64|0;k[c>>2]=(k[c>>2]|0)+1}else b=0;return b|0}function Mn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=k[a+24>>2]|0;f=d+84|0;b=k[f>>2]|0;if(!b){b=1020;c=0}else{b=b*40|0;c=0}e=a+4|0;a=wo(k[d>>2]|0,k[e>>2]|0,b,c)|0;c=(a|0)!=0;if(c){b=k[d>>2]|0;do if(!b)b=qc[k[8744+48>>2]&127](a)|0;else{if((k[b+276>>2]|0)>>>0<=a>>>0?(k[b+280>>2]|0)>>>0>a>>>0:0){b=m[b+248>>1]|0;break}b=qc[k[8744+48>>2]&127](a)|0}while(0);k[f>>2]=(b>>>0)/20|0;k[e>>2]=a}return (c?0:7)|0}function Nn(a,b,c){a=a|0;b=b|0;c=c|0;a:do if(c)switch(b|0){case -11:{if(k[a+520>>2]|0)break a;$c(c);break a}case -5:{if(!(j[c+2>>1]&16))break a;rg(a,c);break a}case -10:{if(k[a+520>>2]|0)break a;Fn(c);break a}case -15:case -1:case -13:case -12:{rg(a,c);break a}case -8:{if(!(k[a+520>>2]|0)){Rh(c);break a}if(k[c+24>>2]|0)rg(a,k[c+20>>2]|0);rg(a,c);break a}case -6:{if(k[a+520>>2]|0)break a;a=(k[c>>2]|0)+-1|0;k[c>>2]=a;if(a)break a;$c(c);break a}default:break a}while(0);return}function On(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,r=0;c=k[b>>2]|0;p=k[a+24>>2]|0;q=p+112|0;g=k[q>>2]|0;n=a+88|0;j[n>>1]=j[n>>1]&-193|64;d=k[a+32>>2]|0;a:do if((d|0)>0){f=k[a+4>>2]|0;while(1){d=d+-1|0;e=l[f>>0]|0;switch(e|0){case 4:{if(!(k[f+8>>2]|0))o=7;else{j[n>>1]=j[n>>1]&-65;o=7}break}case 14:{r=k[f+-16>>2]|0;c=(r|0)>(c|0)?r:c;break}case 2:case 3:{o=7;break}case 5:case 7:case 9:{k[f+16>>2]=76;i[f+1>>0]=-19;break}case 12:case 13:case 11:{j[n>>1]=j[n>>1]&-193|128;break}case 6:case 8:{k[f+16>>2]=77;i[f+1>>0]=-19;break}case 15:{r=k[f+8>>2]|0;c=(r|0)>(c|0)?r:c;break}case 10:case 1:{r=l[f+3>>0]|0;c=(r|0)>(c|0)?r:c;break}default:{}}if((o|0)==7){o=0;j[n>>1]=j[n>>1]|128}e=i[34168+e>>0]|0;i[f+2>>0]=e;if((e&1)!=0?(h=f+8|0,m=k[h>>2]|0,(m|0)<0):0)k[h>>2]=k[g+(~m<<2)>>2];if((d|0)<=0)break a;else f=f+20|0}}while(0);rg(k[a>>2]|0,k[q>>2]|0);k[q>>2]=0;k[p+108>>2]=0;k[b>>2]=c;return}function Pn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();e=f;c=a+73|0;if((i[c>>0]|0)!=4){i[c>>0]=0;d=a+56|0;b=a+48|0;b=Lp(a,k[d>>2]|0,k[b>>2]|0,k[b+4>>2]|0,0,e)|0;if(!b){$c(k[d>>2]|0);k[d>>2]=0;d=a+68|0;b=k[d>>2]|k[e>>2];k[d>>2]=b;if((b|0)!=0?(i[c>>0]|0)==1:0){i[c>>0]=2;b=0}else b=0}}else b=k[a+68>>2]|0;r=f;return b|0}function Qn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=k[a+8>>2]|0;a:do if(!a)a=0;else{d=(b|0)==0;while(1){if((a|0)!=(c|0)){if(d)break;if((k[a+60>>2]|0)==(b|0))break}a=k[a+8>>2]|0;if(!a){a=0;break a}}a=Kl(a,b,c)|0}while(0);return a|0}function Rn(a){a=a|0;var b=0,c=0,d=0,e=0;c=k[a>>2]|0;d=c+1|0;k[a>>2]=d;e=i[c>>0]|0;b=e&255;if((e&255)<=191)return b|0;b=l[15360+(b+-192)>>0]|0;if((i[d>>0]&-64)<<24>>24==-128)while(1){c=c+2|0;k[a>>2]=c;b=(l[d>>0]|0)&63|b<<6;if((i[c>>0]&-64)<<24>>24==-128){e=d;d=c;c=e}else break}return (b>>>0<128|(b&-2048|0)==55296|(b&-2|0)==65534?65533:b)|0}function Sn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((b|0)>-1)f=a+b|0;else f=-1;b=i[a>>0]|0;if(b<<24>>24!=0&f>>>0>a>>>0){c=b;b=0;do{e=a+1|0;if((c&255)>191){d=a;a=e;while(1){c=i[a>>0]|0;if((c&-64)<<24>>24==-128){c=a;a=d+2|0;d=c}else break}}else{c=i[e>>0]|0;a=e}b=b+1|0}while(c<<24>>24!=0&a>>>0>>0)}else b=0;return b|0}function Tn(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,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+48|0;if((r|0)>=(s|0))ka();t=x+32|0;u=x+16|0;v=x;e=k[a>>2]|0;if((e|0)<0){k[a>>2]=0;k[a+4>>2]=-1;j[a+12>>1]=0;i[a+14>>0]=0;e=0}n=c;l=k[n+4>>2]|0;o=v;k[o>>2]=k[n>>2];k[o+4>>2]=l;o=a+8|0;k[o>>2]=d;l=b&255;n=(b|0)==254;do{h=j[a+(e<<4)+12>>1]|0;d=h&65535;c=37184+(d<<1)|0;a:do if((h&65535)>429)w=6;else{h=l;while(1){g=j[c>>1]|0;f=g<<16>>16;if(g<<16>>16==-86){w=6;break a}g=h&255;e=f+g|0;if(e>>>0<=1496?(i[39336+e>>0]|0)==h<<24>>24:0){w=16;break}if(!(h<<24>>24))break;if((h&255)>=70){p=f;w=12;break}h=i[40840+g>>0]|0;if(!(h<<24>>24)){p=f;w=12;break}}if((w|0)==16){w=0;e=m[22184+(e<<1)>>1]|0;break}if(((w|0)==12?(w=0,q=p+70|0,(q|0)>-1):0)?(i[39336+q>>0]|0)==70:0){e=m[22184+(q<<1)>>1]|0;break}e=m[38048+(d<<1)>>1]|0}while(0);if((w|0)==6){w=0;e=m[38048+(d<<1)>>1]|0}if(e>>>0<642){w=18;break}if(e>>>0>=969){w=20;break}rq(a,e+-642|0);if(n)break;e=k[a>>2]|0}while((e|0)>-1);if((w|0)==18){pq(a,e,b,v);p=a+4|0;k[p>>2]=(k[p>>2]|0)+-1}else if((w|0)==20){k[u+0>>2]=k[v+0>>2];k[u+4>>2]=k[v+4>>2];k[u+8>>2]=k[v+8>>2];p=k[o>>2]|0;k[t>>2]=u;yh(p,20432,t);k[o>>2]=p;qq(a,l,v)}r=x;return}function Un(a){a=a|0;var b=0;b=k[a>>2]|0;if((b|0)>=0){qq(a,i[a+(b<<4)+14>>0]|0,a+(b<<4)+16|0);k[a>>2]=(k[a>>2]|0)+-1}return}function Vn(a,b){a=a|0;b=b|0;var c=0;if(b){if((k[b>>2]|0)>0){c=0;do{Sk(a,k[b+(c<<4)+12>>2]|0);Rk(a,k[b+(c<<4)+16>>2]|0,1);rg(a,k[b+(c<<4)+8>>2]|0);c=c+1|0}while((c|0)<(k[b>>2]|0))}rg(a,b)}return}function Wn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=a+328|0;c=k[g>>2]|0;if(c){h=a+304|0;if((k[h>>2]|0)>0){e=0;do{d=k[c+(e<<2)>>2]|0;c=k[d+8>>2]|0;if((c|0)!=0?(f=k[(k[c>>2]|0)+b>>2]|0,(f|0)!=0):0)qc[f&127](c)|0;k[d+20>>2]=0;Fn(d);e=e+1|0;c=k[g>>2]|0}while((e|0)<(k[h>>2]|0))}rg(a,c);k[h>>2]=0;k[g>>2]=0}return}function Xn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;do if((b|0)==-2)if(!(k[a+12>>2]|0))b=(k[a+16>>2]|0)==0?0:6;else b=6;else{e=j[a>>1]|0;d=e<<16>>16;if(!((d|0)!=(b|0)&e<<16>>16>-1)){e=(d|0)==(b|0)?4:1;d=c&255;b=m[a+2>>1]|0;if((d|0)==(b&3|0)){b=e|2;break}else return ((b&d)>>>1&1)+e|0}else b=0}while(0);return b|0} -function zc(a){a=a|0;var b=0;b=r;r=r+a|0;r=r+15&-16;if((r|0)>=(s|0))ka();return b|0}function Ac(){return r|0}function Bc(a){a=a|0;r=a}function Cc(a,b){a=a|0;b=b|0;if(!w){w=a;x=b}}function Dc(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0]}function Ec(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0];i[t+4>>0]=i[a+4>>0];i[t+5>>0]=i[a+5>>0];i[t+6>>0]=i[a+6>>0];i[t+7>>0]=i[a+7>>0]}function Fc(a){a=a|0;L=a}function Gc(){return L|0}function Hc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();c=f+4|0;d=f;e=0;a:while(1){k[c>>2]=0;k[d>>2]=0;i[280]=0;if(Wf(14640,c)|0){b=4;break}b=k[c>>2]|0;a=0;do{if(Ve(b,k[8+(a<<2)>>2]|0,17,0,d)|0){b=7;break a}a=a+1|0;b=k[c>>2]|0}while((a|0)!=5);yf(b)|0;if(dw(280,8504)|0){b=9;break}e=e+1|0;if((e|0)>=3){b=11;break}}if((b|0)==4)nb(8472,8488,47,8496);else if((b|0)==7)nb(8472,8488,50,8496);else if((b|0)==9)nb(8600,8488,53,8496);else if((b|0)==11){r=f;return 0}return 0}function Ic(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((b|0)>0)while(1){b=b+-1|0;mw(280,k[d>>2]|0)|0;a=280+(lw(280)|0)|0;i[a>>0]=61;i[a+1>>0]=0;a=k[c>>2]|0;mw(280,((a|0)==0?20304:a)|0)|0;if((b|0)<=0)break;else{c=c+4|0;d=d+4|0}}return 0}function Jc(a){a=a|0;var b=0,c=0,d=0;d=(Kc(a,8640,7)|0)==0;d=d?a+7|0:a;if(!d)a=0;else{a=d;while(1)if(!(i[a>>0]|0))break;else a=a+1|0;a=a-d&1073741823}c=0;while(1){b=k[8648+(c<<2)>>2]|0;if((Kc(d,b,a)|0)==0?(i[10368+(l[b+a>>0]|0)>>0]&70)==0:0){a=1;break}c=c+1|0;if((c|0)>=4){a=0;break}}return a|0}function Kc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:do if(a)if(b)if((c|0)>0){d=a;while(1){a=i[d>>0]|0;if(!(a<<24>>24))break;if((i[9328+(a&255)>>0]|0)!=(i[9328+(l[b>>0]|0)>>0]|0))break;c=c+-1|0;if((c|0)<=0){c=0;break a}else{d=d+1|0;b=b+1|0}}if((c|0)>=1)c=(l[9328+(a&255)>>0]|0)-(l[9328+(l[b>>0]|0)>>0]|0)|0;else c=0}else c=0;else c=1;else c=((b|0)!=0)<<31>>31;while(0);return c|0}function Lc(a){a=a|0;if(a>>>0<4)a=k[8648+(a<<2)>>2]|0;else a=0;return a|0}function Mc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();e=g;if(a>>>0<=9){f=k[8664+(a<<2)>>2]|0;e=b;k[e>>2]=f;k[e+4>>2]=0;e=8704+(a<<2)|0;a=c;k[a>>2]=k[e>>2];k[a+4>>2]=0;if(!d)e=0;else{k[e>>2]=f;e=0}}else{k[e>>2]=15033;k[e+4>>2]=10788;gd(21,13648,e);e=21}r=g;return e|0}function Nc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();e=g+8|0;f=g;a=Mc(a,e,f,d)|0;if(!a){k[b>>2]=k[e>>2];k[c>>2]=k[f>>2]}r=g;return a|0}function Oc(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,n=0;n=r;r=r+16|0;if((r|0)>=(s|0))ka();j=n+4|0;h=n;switch(b|0){case 2:{k[j>>2]=0;l=a+20|0;e=k[l>>2]|0;f=(e|0)>0;if(f){h=k[a+16>>2]|0;g=0;do{b=k[h+(g<<4)+4>>2]|0;if(b)k[(k[b+4>>2]|0)+4>>2]=k[b>>2];g=g+1|0}while((g|0)!=(e|0));g=a+520|0;k[g>>2]=j;if(f){i=a+16|0;f=0;do{b=k[(k[i>>2]|0)+(f<<4)+12>>2]|0;if(b){h=qc[k[8744+52>>2]&127](16)|0;h=ha((k[b+44>>2]|0)+(k[b+12>>2]|0)+(k[b+28>>2]|0)+(k[b+60>>2]|0)|0,h)|0;k[j>>2]=h+(k[j>>2]|0);h=qc[k[8744+48>>2]&127](k[b+20>>2]|0)|0;k[j>>2]=(k[j>>2]|0)+h;h=qc[k[8744+48>>2]&127](k[b+52>>2]|0)|0;k[j>>2]=(k[j>>2]|0)+h;h=qc[k[8744+48>>2]&127](k[b+36>>2]|0)|0;k[j>>2]=(k[j>>2]|0)+h;h=qc[k[8744+48>>2]&127](k[b+68>>2]|0)|0;k[j>>2]=(k[j>>2]|0)+h;h=k[b+48>>2]|0;if(h)do{og(a,k[h+8>>2]|0);h=k[h>>2]|0}while((h|0)!=0);h=k[b+16>>2]|0;if(h)do{pg(a,k[h+8>>2]|0);h=k[h>>2]|0}while((h|0)!=0);e=k[l>>2]|0}f=f+1|0}while((f|0)<(e|0));f=k[j>>2]|0}else f=0}else{g=a+520|0;k[g>>2]=j;f=0}k[g>>2]=0;k[d>>2]=0;k[c>>2]=f;f=0;break}case 9:case 8:case 7:{l=a+20|0;h=k[l>>2]|0;if((h|0)>0){j=k[a+16>>2]|0;i=b+-7|0;g=(e|0)==0;f=0;b=h;e=0;while(1){h=k[j+(e<<4)+4>>2]|0;if(h){h=(k[k[h+4>>2]>>2]|0)+(i<<2)+184|0;f=(k[h>>2]|0)+f|0;if(g)h=b;else{k[h>>2]=0;h=k[l>>2]|0}}else h=b;e=e+1|0;if((e|0)>=(h|0))break;else b=h}}else f=0;k[d>>2]=0;k[c>>2]=f;f=0;break}case 0:{g=a+252|0;k[c>>2]=k[g>>2];f=a+256|0;k[d>>2]=k[f>>2];if(!e)f=0;else{k[f>>2]=k[g>>2];f=0}break}case 6:case 5:case 4:{k[c>>2]=0;f=a+(b+-4<<2)+260|0;k[d>>2]=k[f>>2];if(!e)f=0;else{k[f>>2]=0;f=0}break}case 1:{i=a+20|0;g=k[i>>2]|0;e=(g|0)>0;if(e){f=k[a+16>>2]|0;h=0;do{b=k[f+(h<<4)+4>>2]|0;if(b)k[(k[b+4>>2]|0)+4>>2]=k[b>>2];h=h+1|0}while((h|0)!=(g|0));if(e){b=a+16|0;h=0;f=0;while(1){e=k[(k[b>>2]|0)+(h<<4)+4>>2]|0;if(!e)e=g;else{l=k[k[e+4>>2]>>2]|0;a=l+152|0;j=(k[a>>2]|0)+60+(m[l+140>>1]|0)|0;j=ha(qc[k[8744+128>>2]&127](k[(k[l+204>>2]|0)+40>>2]|0)|0,j)|0;l=qc[k[8744+48>>2]&127](l)|0;e=k[i>>2]|0;f=j+f+l+(k[a>>2]|0)|0}h=h+1|0;if((h|0)>=(e|0))break;else g=e}}else f=0}else f=0;k[c>>2]=f;k[d>>2]=0;f=0;break}case 3:{k[h>>2]=0;e=a+520|0;k[e>>2]=h;g=k[a+4>>2]|0;if(!g)f=0;else{do{qg(a,g);rg(a,g);g=k[g+52>>2]|0}while((g|0)!=0);f=k[h>>2]|0}k[e>>2]=0;k[d>>2]=0;k[c>>2]=f;f=0;break}case 10:{k[d>>2]=0;l=a+512|0;j=k[l+4>>2]|0;if((j|0)>0|(j|0)==0&(k[l>>2]|0)>>>0>0)f=1;else{f=a+504|0;a=k[f+4>>2]|0;f=(a|0)>0|(a|0)==0&(k[f>>2]|0)>>>0>0}k[c>>2]=f&1;f=0;break}default:f=1}r=n;return f|0}function Pc(a){a=a|0;var b=0;a:do if(!(Qc()|0)){b=k[2254]|0;if(!((b|0)==0|(a|0)==0))while(1){if(!(dw(a,k[b+16>>2]|0)|0))break a;b=k[b+12>>2]|0;if(!b){b=0;break}}}else b=0;while(0);return b|0}function Qc(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=r;r=r+16|0;if((r|0)>=(s|0))ka();h=j;do if(!(k[2243]|0)){k[2245]=1;if(!(k[2246]|0)){if(!(k[2195]|0)){k[h>>2]=16496;rf(4,h)|0}b=9024|0;c=b+40|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));if(k[2187]|0)k[2256]=8;g=k[2234]|0;c=k[2235]|0;b=k[2236]|0;if((g|0)!=0&(c|0)>99&(b|0)>0){f=c&-8;k[2235]=f;k[2263]=g;k[2264]=b;e=b+-1|0;if((e|0)>0){b=g+(ha(c>>>3,(b<<3)+-8|0)|0)|0;d=0;c=g;do{a=c;c=c+f|0;k[a>>2]=c;d=d+1|0}while((d|0)!=(e|0))}else b=g;k[b>>2]=0;k[2262]=b+4}else{k[2262]=0;k[2234]=0;k[2235]=0;k[2236]=0}if((k[2237]|0)==0|(k[2238]|0)<512|(k[2239]|0)<1){k[2237]=0;k[2238]=0;k[2239]=0}a=qc[k[8744+56>>2]&127](k[2202]|0)|0;if(a){b=9024|0;c=b+40|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));break}}k[2246]=1;if(!(k[2249]|0))k[2249]=8;a=(k[2248]|0)+1|0;k[2248]=a;if(!(k[2244]|k[2243])){k[2244]=1;b=10840|0;c=b+92|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));b=0;do{sg(10840,16608+(b*36|0)|0);b=b+1|0}while((b|0)!=59);b=0;do{sg(10840,19480+(b*36|0)|0);b=b+1|0}while((b|0)!=8);sg(10840,19256);sg(10840,19292|0);sg(10840,19328|0);if(!(k[2247]|0)){a=k[2214]|0;if(!a){k[h>>2]=16440;rf(18,h)|0;a=k[2214]|0}a=qc[a&127](k[2213]|0)|0;if(!a)i=28}else i=28;if((i|0)==28){k[2247]=1;a=Yc(10)|0;if(!a)a=7;else{$c(a);Rc(9584,1)|0;Rc(9672|0,0)|0;Rc(9760|0,0)|0;Rc(9848|0,0)|0;a=k[2237]|0;b=k[2238]|0;c=k[2239]|0;if(k[3153]|0){h=b&-8;k[3154]=h;k[3161]=c;k[3155]=c;if((c|0)<=90){k[3156]=((c|0)/10|0)+1;k[3157]=a;k[3160]=0;k[3162]=0;if(c)i=33}else{k[3156]=10;k[3157]=a;k[3160]=0;k[3162]=0;i=33}if((i|0)==33){e=b>>>3;f=c<<3;g=ha(e<<3,c+-1|0)|0;b=a;d=0;while(1){c=c+-1|0;k[b>>2]=d;if(!c)break;else{d=b;b=b+h|0}}b=a+(ha(f,e)|0)|0;k[3160]=a+g;a=b}k[3158]=a}k[2243]=1;a=0}}k[2244]=0;b=k[2248]|0}else{b=a;a=0}k[2248]=b+-1;if((b|0)<2)k[2249]=0}else a=0;while(0);r=j;return a|0}function Rc(a,b){a=a|0;b=b|0;var c=0;c=Qc()|0;do if(!c){tg(a);c=k[2254]|0;if((b|0)!=0|(c|0)==0){k[a+12>>2]=c;k[2254]=a;c=0;break}else{k[a+12>>2]=k[c+12>>2];k[(k[2254]|0)+12>>2]=a;c=0;break}}while(0);return c|0}function Sc(a){a=a|0;tg(a);return 0}function Tc(a){a=a|0;return 0}function Uc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;do if(!(Qc()|0)){d=9032|0;c=k[d>>2]|0;d=k[d+4>>2]|0;if((b|0)>=0)if((b|0)>0|(b|0)==0&a>>>0>0){k[2260]=9;k[2261]=0;e=9032|0;k[e>>2]=a;k[e+4>>2]=b;k[2265]=(0>(b|0)|0==(b|0)&(k[2166]|0)>>>0>=a>>>0)&1;break}else{k[2265]=0;k[2258]=0;k[2259]=0;k[2260]=0;k[2261]=0;break}}else{d=-1;c=-1}while(0);L=d;return c|0}function Vc(){var a=0;a=k[2166]|0;L=((a|0)<0)<<31>>31;return a|0}function Wc(a){a=a|0;var b=0;b=(a|0)<0;Uc(b?0:a,b?0:((a|0)<0)<<31>>31)|0;return}function Xc(a){a=a|0;var b=0;b=k[2176]|0;if(a)k[2176]=k[2166];L=((b|0)<0)<<31>>31;return b|0}function Yc(a){a=a|0;if((Qc()|0)!=0|(a|0)<1)a=0;else a=vg(a,((a|0)<0)<<31>>31)|0;return a|0}function Zc(a,b){a=a|0;b=b|0;if(!(Qc()|0))a=vg(a,b)|0;else a=0;return a|0}function _c(a){a=a|0;a=qc[k[8744+48>>2]&127](a)|0;L=((a|0)<0)<<31>>31;return a|0}function $c(a){a=a|0;var b=0;do if(a)if(!(k[2186]|0)){hc[k[8744+40>>2]&31](a);break}else{b=qc[k[8744+48>>2]&127](a)|0;k[2166]=(k[2166]|0)-b;k[2175]=(k[2175]|0)+-1;hc[k[8744+40>>2]&31](a);break}while(0);return}function ad(a,b){a=a|0;b=b|0;var c=0;if(!(Qc()|0)){c=(b|0)<0;b=wg(a,c?0:b,c?0:((b|0)<0)<<31>>31)|0}else b=0;return b|0}function bd(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Qc()|0))b=wg(a,b,c)|0;else b=0;return b|0}function cd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=r;r=r+112|0;if((r|0)>=(s|0))ka();d=e+28|0;c=e;if(!(Qc()|0)){k[c+4>>2]=d;k[c+8>>2]=d;k[c>>2]=0;k[c+12>>2]=0;k[c+16>>2]=70;k[c+20>>2]=1e9;i[c+25>>0]=0;i[c+24>>0]=2;xg(c,0,a,b);c=yg(c)|0}else c=0;r=e;return c|0}function dd(a,b){a=a|0;b=b|0;var c=0,d=0;d=r;r=r+16|0;if((r|0)>=(s|0))ka();c=d;if(!(Qc()|0)){k[c>>2]=b;c=cd(a,c)|0}else c=0;r=d;return c|0}function ed(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+32|0;if((r|0)>=(s|0))ka();e=f;if((a|0)>=1){k[e+4>>2]=b;k[e+8>>2]=b;k[e>>2]=0;k[e+12>>2]=0;k[e+16>>2]=a;k[e+20>>2]=0;i[e+25>>0]=0;i[e+24>>0]=0;xg(e,0,c,d);b=yg(e)|0}r=f;return b|0}function fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();f=e;k[f>>2]=d;a=ed(a,b,c,f)|0;r=e;return a|0}function gd(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+256|0;if((r|0)>=(s|0))ka();d=g+16|0;f=g+44|0;e=g;if(k[2250]|0){k[e>>2]=c;k[d+4>>2]=f;k[d+8>>2]=f;k[d>>2]=0;k[d+12>>2]=0;k[d+16>>2]=210;k[d+20>>2]=0;i[d+25>>0]=0;i[d+24>>0]=0;xg(d,0,b,e);c=k[2250]|0;e=k[2251]|0;d=yg(d)|0;rc[c&63](e,a,d)}r=g;return}function hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+256|0;if((r|0)>=(s|0))ka();d=e;do if(!(Qc()|0)){if((a|0)<1|(b|0)==0){i[9064]=0;break}if(!(i[9064]|0)){i[9066]=0;i[9065]=0;c=(Qc()|0)==0;c=c?k[2254]|0:0;fc[k[c+56>>2]&63](c,256,d)|0;c=0;do{i[9067+c>>0]=c;c=c+1|0}while((c|0)!=256);c=0;do{f=9067+c|0;h=(l[d+c>>0]|0)+(l[f>>0]|0)+(l[9066]|0)|0;i[9066]=h;h=9067+(h&255)|0;g=i[h>>0]|0;i[h>>0]=i[f>>0]|0;i[f>>0]=g;c=c+1|0}while((c|0)!=256);i[9064]=1}while(1){f=(i[9065]|0)+1<<24>>24;i[9065]=f;f=9067+(f&255)|0;d=i[f>>0]|0;c=d&255;g=(l[9066]|0)+c|0;i[9066]=g;i[f>>0]=i[9067+(g&255)>>0]|0;i[9067+(l[9066]|0)>>0]=d;i[b>>0]=i[9067+((l[9067+(l[9065]|0)>>0]|0)+c&255)>>0]|0;a=a+-1|0;if(!a)break;else b=b+1|0}}while(0);r=e;return}function id(a,b){a=a|0;b=b|0;var c=0;if(a)if(!b)b=1;else{c=i[a>>0]|0;a:do if(!(c<<24>>24))c=0;else while(1){if((i[9328+(c&255)>>0]|0)!=(i[9328+(l[b>>0]|0)>>0]|0))break a;a=a+1|0;b=b+1|0;c=i[a>>0]|0;if(!(c<<24>>24)){c=0;break}}while(0);b=(l[9328+(c&255)>>0]|0)-(l[9328+(l[b>>0]|0)>>0]|0)|0}else b=((b|0)!=0)<<31>>31;return b|0}function jd(a){a=a|0;k[2241]=a;return 0}function kd(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;m=r;r=r+16|0;if((r|0)>=(s|0))ka();l=m;a:do if((c|0)==(a|0)){zg(c,1,10016,l);e=0}else{e=vg(48,0)|0;if(!e){k[a+52>>2]=7;e=k[a+236>>2]|0;if(!e){e=0;break}f=e+8|0;if(!(j[f>>1]&9312)){j[f>>1]=1;e=0;break}else{Ag(e);e=0;break}}g=e+0|0;f=g+48|0;do{i[g>>0]=0;g=g+1|0}while((g|0)<(f|0));g=Bg(a,c,d)|0;h=e+24|0;k[h>>2]=g;g=Bg(a,a,b)|0;d=e+4|0;k[d>>2]=g;k[e>>2]=a;k[e+20>>2]=c;k[e+16>>2]=1;k[e+40>>2]=0;f=k[h>>2]|0;do if(!((f|0)==0|(g|0)==0)?(Cg(g,k[(k[f+4>>2]|0)+32>>2]|0,-1,0)|0)!=7:0)if(!(i[(k[d>>2]|0)+8>>0]|0)){f=(k[h>>2]|0)+16|0;k[f>>2]=(k[f>>2]|0)+1;break a}else{zg(a,1,47416,l);break}while(0);$c(e);e=0}while(0);r=m;return e|0}function ld(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,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=r;r=r+32|0;if((r|0)>=(s|0))ka();z=D;n=D+16|0;q=D+12|0;w=D+8|0;B=a+24|0;d=k[B>>2]|0;e=k[d+4>>2]|0;k[e+4>>2]=k[d>>2];C=a+28|0;c=k[C>>2]|0;if(c>>>0<7?(30>>>(c&127)&1)==0:0){v=k[e>>2]|0;A=a+4|0;c=k[A>>2]|0;y=k[k[c+4>>2]>>2]|0;if((k[a>>2]|0)!=0?(i[e+20>>0]|0)==2:0){x=0;d=5}else t=5;do if((t|0)==5){e=a+12|0;if(!(k[e>>2]|0)){d=Dg(c,2)|0;if(d){x=0;break}k[e>>2]=1;x=k[A>>2]|0;d=k[x+4>>2]|0;k[d+4>>2]=k[x>>2];d=k[(k[d+12>>2]|0)+56>>2]|0;k[a+8>>2]=l[d+41>>0]<<16|l[d+40>>0]<<24|l[d+42>>0]<<8|l[d+43>>0];d=k[B>>2]|0}if(!(i[d+8>>0]|0)){x=1;d=Dg(d,0)|0}else{x=0;d=0}}while(0);g=k[(k[B>>2]|0)+4>>2]|0;u=k[g+32>>2]|0;m=k[(k[A>>2]|0)+4>>2]|0;p=k[m+32>>2]|0;m=(i[(k[m>>2]|0)+5>>0]|0)==5;c=(u|0)==(p|0)|(d|0)==0&m^1?d:8;g=k[g+44>>2]|0;e=(b|0)<0;a:do if(b){d=a+16|0;h=k[d>>2]|0;j=0;do{if(!(h>>>0<=g>>>0&(c|0)==0))break a;if((h|0)!=((((k[2514]|0)>>>0)/((k[(k[(k[B>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){c=Eg(v,h,n,2)|0;if(!c){f=k[n>>2]|0;c=Fg(a,h,k[f+4>>2]|0,0)|0;if(f)Gg(f)}}else c=0;h=(k[d>>2]|0)+1|0;k[d>>2]=h;j=j+1|0}while(e|(j|0)<(b|0))}while(0);if(!c){k[a+36>>2]=g;c=k[a+16>>2]|0;k[a+32>>2]=g+1-c;if(c>>>0<=g>>>0){c=a+40|0;if(!(k[c>>2]|0)){A=(k[k[(k[B>>2]|0)+4>>2]>>2]|0)+88|0;k[a+44>>2]=k[A>>2];k[A>>2]=a;k[c>>2]=1;c=0}else c=0}else t=22}else if((c|0)==101)t=22;do if((t|0)==22){if(!g){d=k[A>>2]|0;c=k[d+4>>2]|0;k[c+4>>2]=k[d>>2];k[c+44>>2]=0;c=Hg(c)|0;if((c|0)==0|(c|0)==101)g=1;else break}c=Ig(k[A>>2]|0,1,(k[a+8>>2]|0)+1|0)|0;if(!c){d=k[a>>2]|0;if(d)Jg(d);if(m?(o=Kg(k[A>>2]|0,2)|0,(o|0)!=0):0){c=o;break}if((u|0)<(p|0)){d=(p|0)/(u|0)|0;d=(g+-1+d|0)/(d|0)|0;e=k[2514]|0;f=k[(k[(k[A>>2]|0)+4>>2]|0)+32>>2]|0;d=(((d|0)==(((e>>>0)/(f>>>0)|0)+1|0))<<31>>31)+d|0;a=((u|0)<0)<<31>>31;o=xw(g|0,((g|0)<0)<<31>>31|0,u|0,a|0)|0;m=L;b=k[y+60>>2]|0;j=k[y+24>>2]|0;b:do if(d>>>0<=j>>>0){c=0;while(1){if((d|0)!=(((e>>>0)/(f>>>0)|0)+1|0)){c=Eg(y,d,q,0)|0;if(c)break b;e=k[q>>2]|0;c=Lg(e)|0;if(e)Gg(e)}d=d+1|0;e=(c|0)==0;if(d>>>0>j>>>0|e^1)break;f=k[(k[(k[A>>2]|0)+4>>2]|0)+32>>2]|0;e=k[2514]|0}if(e)t=38}else t=38;while(0);if((t|0)==38)c=Mg(y,0,1)|0;e=k[2514]|0;g=e+p|0;h=((g|0)<0)<<31>>31;f=(h|0)<(m|0)|(h|0)==(m|0)&g>>>0>>0;g=f?g:o;h=f?h:m;e=e+u|0;f=((e|0)<0)<<31>>31;d=(c|0)==0;if(d&((f|0)<(h|0)|(f|0)==(h|0)&e>>>0>>0))do{k[w>>2]=0;c=vw(e|0,f|0,u|0,a|0)|0;c=ow(c|0,L|0,1,0)|0;c=Eg(v,c,w,0)|0;d=k[w>>2]|0;if(!c)c=yc[k[(k[b>>2]|0)+12>>2]&31](b,k[d+4>>2]|0,u,e,f)|0;if(d)Gg(d);e=ow(e|0,f|0,u|0,a|0)|0;f=L;d=(c|0)==0}while(d&((f|0)<(h|0)|(f|0)==(h|0)&e>>>0>>0));if(!d)break;c=wc[k[(k[b>>2]|0)+24>>2]&127](b,z)|0;w=k[z+4>>2]|0;if((c|0)==0&((w|0)>(m|0)|((w|0)==(m|0)?(k[z>>2]|0)>>>0>o>>>0:0)))c=fc[k[(k[b>>2]|0)+16>>2]&63](b,o,m)|0;if(c)break;c=Ng(y,0)|0}else{c=ha((u|0)/(p|0)|0,g)|0;k[y+24>>2]=c;c=Mg(y,0,0)|0}if(!c){c=Og(k[A>>2]|0,0)|0;c=(c|0)==0?101:c}}}while(0);if(x){Pg(k[B>>2]|0,0)|0;Og(k[B>>2]|0,0)|0}c=(c|0)==3082?7:c;k[C>>2]=c}r=D;return c|0}function md(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;if(!a)b=0;else{f=k[a+20>>2]|0;c=k[a+24>>2]|0;b=k[c+4>>2]|0;k[b+4>>2]=k[c>>2];if(k[a>>2]|0){c=c+16|0;k[c>>2]=(k[c>>2]|0)+-1}if(k[a+40>>2]|0){b=(k[b>>2]|0)+88|0;while(1){c=k[b>>2]|0;if((c|0)==(a|0))break;else b=c+44|0}k[b>>2]=k[a+44>>2]}Qg(k[a+4>>2]|0,0,0);b=k[a+28>>2]|0;b=(b|0)==101?0:b;c=k[a>>2]|0;if(c){k[c+52>>2]=b;d=k[c+236>>2]|0;do if(d){e=d+8|0;if(!(j[e>>1]&9312)){j[e>>1]=1;break}else{Ag(d);c=k[a>>2]|0;break}}while(0);Rg(c);if(k[a>>2]|0)$c(a)}Rg(f)}return b|0}function nd(a){a=a|0;return k[a+32>>2]|0}function od(a){a=a|0;return k[a+36>>2]|0}function pd(a){a=a|0;if((a|0)!=0?(j[a+88>>1]&256)!=0:0)a=k[a+168>>2]|0;else a=0;return a|0}function qd(a){a=a|0;if(!a)a=1;else a=(j[a+88>>1]&8)!=0;return a&1|0}function rd(a){a=a|0;var b=0,c=0,d=0;d=r;r=r+16|0;if((r|0)>=(s|0))ka();c=d;do if(a){b=k[a>>2]|0;if(!b){gd(21,47360,c);k[c>>2]=68910;k[c+4>>2]=10788;gd(21,13648,c);b=21;break}else{a=Tg(b,Sg(a)|0)|0;Rg(b);b=a;break}}else b=0;while(0);r=d;return b|0}function sd(a){a=a|0;var b=0,c=0;if(!a)a=0;else{b=Ug(a)|0;k[a+76>>2]=-1;k[a+80>>2]=0;i[a+86>>0]=2;k[a+40>>2]=-1108210269;k[a+92>>2]=0;k[a+72>>2]=1;i[a+87>>0]=-1;k[a+104>>2]=0;c=a+144|0;k[c>>2]=0;k[c+4>>2]=0;a=Tg(k[a>>2]|0,b)|0}return a|0}function td(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=a+68|0;c=j[f>>1]|0;if(c<<16>>16>0){g=a+60|0;b=k[g>>2]|0;e=0;do{d=b+(e*40|0)|0;if(!((j[b+(e*40|0)+8>>1]&9312)==0?(k[b+(e*40|0)+24>>2]|0)==0:0)){Vg(d);b=k[g>>2]|0;c=j[f>>1]|0}j[b+(e*40|0)+8>>1]=1;e=e+1|0}while((e|0)<(c<<16>>16|0))}b=a+88|0;c=j[b>>1]|0;if((c&256)!=0?(k[a+188>>2]|0)!=0:0)j[b>>1]=c|8;return 0}function ud(a){a=a|0;var b=0;b=a+8|0;if(j[b>>1]&18){Wg(a)|0;j[b>>1]=m[b>>1]|0|16;if(!(k[a+12>>2]|0))b=0;else b=k[a+16>>2]|0}else b=Xg(a,1)|0;return b|0}function vd(a){a=a|0;return Xg(a,1)|0}function wd(a){a=a|0;return Yg(a,1)|0}function xd(a){a=a|0;return Yg(a,2)|0}function yd(a){a=a|0;return +(+Zg(a))}function zd(a){a=a|0;a=_g(a)|0;return a|0}function Ad(a){a=a|0;a=_g(a)|0;return a|0}function Bd(a){a=a|0;return Xg(a,2)|0}function Cd(a){a=a|0;return Xg(a,3)|0}function Dd(a){a=a|0;return Xg(a,2)|0}function Ed(a){a=a|0;return l[10064+((m[a+8>>1]|0)&31)>>0]|0|0}function Fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$g(a,b,c,0,d);return}function Gd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(d>>>0>0|(d|0)==0&c>>>0>2147483647){c=e;if(!((c|0)==0|(c|0)==-1))hc[e&31](b);if(a){k[a+20>>2]=18;i[a+25>>0]=1;ah(k[a>>2]|0,10096,-1,1,0)|0}}else $g(a,b,c,0,e);return}function Hd(a,b){a=a|0;b=+b;bh(k[a>>2]|0,b);return}function Id(a,b,c){a=a|0;b=b|0;c=c|0;k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,b,c,1,-1)|0;return}function Jd(a,b,c){a=a|0;b=b|0;c=c|0;k[a+20>>2]=1;i[a+25>>0]=1;ah(k[a>>2]|0,b,c,2,-1)|0;return}function Kd(a,b){a=a|0;b=b|0;var c=0,d=0;a=k[a>>2]|0;c=((b|0)<0)<<31>>31;d=a+8|0;if(!(j[d>>1]&9312)){k[a>>2]=b;k[a+4>>2]=c;j[d>>1]=4}else ch(a,b,c);return}function Ld(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=k[a>>2]|0;d=a+8|0;if(!(j[d>>1]&9312)){k[a>>2]=b;k[a+4>>2]=c;j[d>>1]=4}else ch(a,b,c);return}function Md(a){a=a|0;var b=0;a=k[a>>2]|0;b=a+8|0;if(!(j[b>>1]&9312))j[b>>1]=1;else Ag(a);return}function Nd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$g(a,b,c,1,d);return}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;if(d>>>0>0|(d|0)==0&c>>>0>2147483647){c=e;if(!((c|0)==0|(c|0)==-1))hc[e&31](b);if(a){k[a+20>>2]=18;i[a+25>>0]=1;ah(k[a>>2]|0,10096,-1,1,0)|0}}else $g(a,b,c,f<<24>>24==4?2:f,e);return}function Pd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$g(a,b,c,2,d);return}function Qd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$g(a,b,c,3,d);return}function Rd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$g(a,b,c,2,d);return}function Sd(a,b){a=a|0;b=b|0;dh(k[a>>2]|0,b)|0;return}function Td(a,b){a=a|0;b=b|0;eh(k[a>>2]|0,b);return}function Ud(a,b){a=a|0;b=b|0;var c=0;k[a+20>>2]=b;i[a+25>>0]=1;c=k[a>>2]|0;if(j[c+8>>1]&1){if((b|0)!=516){a=b&255;if(a>>>0>26|(a|0)==2)a=16328;else a=k[15488+(a<<2)>>2]|0}else a=16344;ah(c,a,-1,1,0)|0}return}function Vd(a){a=a|0;k[a+20>>2]=18;i[a+25>>0]=1;ah(k[a>>2]|0,10096,-1,1,0)|0;return}function Wd(a){a=a|0;var b=0,c=0;b=k[a>>2]|0;c=b+8|0;if(!(j[c>>1]&9312))j[c>>1]=1;else{Ag(b);b=k[a>>2]|0}k[a+20>>2]=7;i[a+25>>0]=1;i[(k[b+32>>2]|0)+65>>0]=1;return}function Xd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,q=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,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=r;r=r+224|0;if((r|0)>=(s|0))ka();R=W+8|0;Q=W;if(!(fh(a)|0)){V=k[a>>2]|0;I=a+88|0;j[I>>1]=j[I>>1]&-513;N=a+40|0;O=a+76|0;P=a+128|0;U=a+80|0;z=a+168|0;A=a+8|0;B=a+20|0;C=a+32|0;D=a+4|0;E=a+84|0;T=a+44|0;F=(a|0)==0;G=a+52|0;H=a+48|0;y=0;while(1){if((k[N>>2]|0)!=-1108210269)sd(a)|0;x=k[a>>2]|0;if(i[x+65>>0]|0){S=7;break}c=k[O>>2]|0;do if((c|0)<1){if(j[I>>1]&8){k[U>>2]=17;c=1;break}if((c|0)<0){c=x+148|0;if(!(k[c>>2]|0))k[x+240>>2]=0;if((k[x+184>>2]|0)!=0?(i[x+145>>0]|0)==0:0)gh(k[x>>2]|0,P)|0;k[c>>2]=(k[c>>2]|0)+1;c=j[I>>1]|0;if(!(c&64)){c=x+156|0;k[c>>2]=(k[c>>2]|0)+1;c=j[I>>1]|0}if(c&128){w=x+152|0;k[w>>2]=(k[w>>2]|0)+1}k[O>>2]=0;S=22}else S=22}else S=22;while(0);if((S|0)==22){S=0;do if(!(j[I>>1]&3)){w=x+160|0;k[w>>2]=(k[w>>2]|0)+1;c=lh(a)|0;k[w>>2]=(k[w>>2]|0)+-1;if((c|0)==100)c=100;else S=101}else{g=k[a>>2]|0;v=k[A>>2]|0;u=v+40|0;hh(u,8);k[B>>2]=0;if((k[U>>2]|0)==7){i[g+65>>0]=1;c=1;S=101;break}e=k[C>>2]|0;h=j[I>>1]&3;if(h<<16>>16==1){f=k[A>>2]|0;n=f+360|0;if(j[f+368>>1]&16){o=(k[f+372>>2]|0)>>>2;d=k[f+376>>2]|0;if(!o){q=d;f=e;b=0}else{c=0;f=e;do{f=(k[(k[d+(c<<2)>>2]|0)+4>>2]|0)+f|0;c=c+1|0}while((c|0)<(o|0));q=d;b=o}}else{q=0;f=e;b=0}}else{q=0;f=e;b=0;n=0}e=h<<16>>16==2;d=k[O>>2]|0;while(1){c=d+1|0;if((d|0)>=(f|0)){S=33;break}if(!e)break;if((i[(k[D>>2]|0)+(d*20|0)>>0]|0)==-99)break;else d=c}if((S|0)==33){k[O>>2]=c;k[U>>2]=0;c=101;S=101;break}k[O>>2]=c;if(k[g+240>>2]|0){k[U>>2]=9;k[R>>2]=15832;ih(T,g,10344,R);c=1;S=101;break}f=k[C>>2]|0;if((d|0)<(f|0)){c=d;w=(k[D>>2]|0)+(d*20|0)|0}else{d=d-f|0;f=k[q>>2]|0;e=k[f+4>>2]|0;if((d|0)<(e|0))e=d;else{f=d;c=0;while(1){d=f-e|0;c=c+1|0;f=k[q+(c<<2)>>2]|0;e=k[f+4>>2]|0;if((d|0)<(e|0)){e=d;break}else f=d}}c=e;w=(k[f>>2]|0)+(e*20|0)|0}if((j[I>>1]&3)==1){j[v+48>>1]=4;e=u;k[e>>2]=c;k[e+4>>2]=((c|0)<0)<<31>>31;j[v+88>>1]=2562;e=k[44856+(l[w>>0]<<2)>>2]|0;k[v+96>>2]=e;f=e;while(1)if(!(i[f>>0]|0))break;else f=f+1|0;o=v+80|0;k[v+92>>2]=f-e&1073741823;i[v+90>>0]=1;if((i[w+1>>0]|0)==-18){c=(b<<2)+4|0;a:do if(!b)f=0;else{e=k[w+16>>2]|0;d=0;while(1){f=d+1|0;if((k[q+(d<<2)>>2]|0)==(e|0)){f=d;break a}if((f|0)<(b|0))d=f;else break}}while(0);if((f|0)==(b|0)?(jh(n,c,(b|0)!=0&1)|0)==0:0){k[(k[n+16>>2]|0)+(b<<2)>>2]=k[w+16>>2];v=n+8|0;j[v>>1]=m[v>>1]|16;k[n+12>>2]=c;v=o}else v=o}else v=o}j[v+48>>1]=4;u=k[w+4>>2]|0;q=v+40|0;k[q>>2]=u;k[q+4>>2]=((u|0)<0)<<31>>31;j[v+88>>1]=4;q=k[w+8>>2]|0;u=v+80|0;k[u>>2]=q;k[u+4>>2]=((q|0)<0)<<31>>31;j[v+128>>1]=4;u=k[w+12>>2]|0;q=v+120|0;k[q>>2]=u;k[q+4>>2]=((u|0)<0)<<31>>31;q=v+160|0;if(!(kh(q,32)|0)){j[v+168>>1]=514;u=v+176|0;b=k[u>>2]|0;b:do switch(i[w+1>>0]|0){case -6:{g=k[w+16>>2]|0;c=g+6|0;k[R>>2]=m[c>>1];fd(32,b,44768,R)|0;if(!b)f=0;else{f=b;while(1)if(!(i[f>>0]|0))break;else f=f+1|0;f=f-b&1073741823}c:do if(j[c>>1]|0){h=g+16|0;n=0;while(1){e=k[g+(n<<2)+20>>2]|0;if(e){e=k[e>>2]|0;if(!e){d=0;e=0}else S=61}else{e=44776;S=61}do if((S|0)==61){S=0;o=e;while(1)if(!(i[o>>0]|0))break;else o=o+1|0;d=o-e&1073741823;if((d|0)!=6)break;o=(cw(e,11152,6)|0)==0;d=o?1:6;e=o?44784:e}while(0);if((d+f|0)>26)break;o=f+1|0;i[b+f>>0]=44;if(i[(k[h>>2]|0)+n>>0]|0){i[b+o>>0]=45;o=f+2|0}pw(b+o|0,e|0,d+1|0)|0;f=o+d|0;n=n+1|0;if((n|0)>=(m[c>>1]|0))break c}c=b+f|0;i[c>>0]=44;i[c+1>>0]=46;i[c+2>>0]=46;i[c+3>>0]=46}while(0);i[b+f>>0]=41;i[b+(f+1)>>0]=0;e=b;break}case -15:{fd(32,b,44832,R)|0;e=b;break}case -18:{fd(32,b,44848,R)|0;e=b;break}case -4:{k[R>>2]=k[k[w+16>>2]>>2];fd(32,b,44792,R)|0;e=b;break}case -5:{c=k[w+16>>2]|0;e=j[c>>1]|0;k[R>>2]=k[c+24>>2];k[R+4>>2]=e;fd(32,b,44800,R)|0;e=b;break}case -13:{d=k[w+16>>2]|0;c=k[d+4>>2]|0;e=R;k[e>>2]=k[d>>2];k[e+4>>2]=c;fd(32,b,19920,R)|0;e=b;break}case -14:{k[R>>2]=k[w+16>>2];fd(32,b,44808,R)|0;e=b;break}case -12:{p[t>>3]=+p[k[w+16>>2]>>3];k[R>>2]=k[t>>2];k[R+4>>2]=k[t+4>>2];fd(32,b,19912,R)|0;e=b;break}case -8:{f=k[w+16>>2]|0;e=m[f+8>>1]|0;if(e&2){e=k[f+16>>2]|0;break b}if(e&4){d=f;c=k[d+4>>2]|0;e=R;k[e>>2]=k[d>>2];k[e+4>>2]=c;fd(32,b,19920,R)|0;e=b;break b}if(e&8){p[t>>3]=+p[f>>3];k[R>>2]=k[t>>2];k[R+4>>2]=k[t+4>>2];fd(32,b,19912,R)|0;e=b;break b}if(!(e&1))e=44816;else{fd(32,b,20304,R)|0;e=b}break}case -19:{i[b>>0]=0;e=b;break}case -10:{k[R>>2]=k[(k[w+16>>2]|0)+8>>2];fd(32,b,44824,R)|0;e=b;break}default:{f=k[w+16>>2]|0;if(!f){i[b>>0]=0;e=b}else e=f}}while(0);if((e|0)==(k[u>>2]|0)){if(!e)c=0;else{f=e;while(1)if(!(i[f>>0]|0))break;else f=f+1|0;c=f-e&1073741823}k[v+172>>2]=c;i[v+170>>0]=1}else ah(q,e,-1,1,0)|0;c=j[I>>1]|0;if((c&3)==1){if(kh(v+200|0,4)|0){c=1;S=101;break}j[v+208>>1]=514;k[v+212>>2]=2;c=k[v+216>>2]|0;k[R>>2]=l[w+3>>0];fd(3,c,44760,R)|0;i[v+210>>0]=1;j[v+248>>1]=1;c=j[I>>1]|0}j[E>>1]=12-((c&3)<<2);k[B>>2]=(k[A>>2]|0)+40;k[U>>2]=0;c=100}else{c=1;S=101}}while(0);if((S|0)==101){S=0;b=x+184|0;if(((k[b>>2]|0)!=0?(i[x+145>>0]|0)==0:0)?(k[z>>2]|0)!=0:0){gh(k[x>>2]|0,Q)|0;b=k[b>>2]|0;u=k[x+188>>2]|0;v=k[z>>2]|0;d=Q;w=P;w=iw(k[d>>2]|0,k[d+4>>2]|0,k[w>>2]|0,k[w+4>>2]|0)|0;w=xw(w|0,L|0,1e6,0)|0;vc[b&15](u,v,w,L)}if((c|0)==101){g=x+20|0;f=k[g>>2]|0;if((f|0)>0){h=x+16|0;n=x+216|0;o=x+220|0;b=0;c=0;do{e=k[h>>2]|0;d=k[e+(b<<4)+4>>2]|0;if(((d|0)!=0?(J=k[d+4>>2]|0,k[J+4>>2]=k[d>>2],J=k[(k[J>>2]|0)+208>>2]|0,(J|0)!=0):0)?(M=J+12|0,K=k[M>>2]|0,k[M>>2]=0,M=k[n>>2]|0,(M|0)!=0&(K|0)>0&(c|0)==0):0){c=uc[M&31](k[o>>2]|0,x,k[e+(b<<4)>>2]|0,K)|0;f=k[g>>2]|0}b=b+1|0}while((b|0)<(f|0))}else c=0;k[U>>2]=c;c=(c|0)==0?101:1}}k[x+52>>2]=c;if((Tg(k[a>>2]|0,k[U>>2]|0)|0)==7)k[U>>2]=7}if((j[I>>1]&256)!=0&(c|0)!=100&(c|0)!=101)c=mh(a)|0;b=k[x+56>>2]&c;if((b|0)!=17)break;f=y+1|0;if((y|0)>=50){b=17;break}d=k[O>>2]|0;if(!F?(j[I>>1]&256)!=0:0)c=k[z>>2]|0;else c=0;e=k[a>>2]|0;b=nh(e,c,-1,0,a,Q,0)|0;if((b|0)==7){b=e;S=124;break}else if(b){S=127;break}y=k[Q>>2]|0;pw(R|0,y|0,208)|0;pw(y|0,a|0,208)|0;pw(a|0,R|0,208)|0;w=y+52|0;x=k[w>>2]|0;k[w>>2]=k[G>>2];k[G>>2]=x;x=y+48|0;w=k[x>>2]|0;k[x>>2]=k[H>>2];k[H>>2]=w;w=y+168|0;x=k[w>>2]|0;k[w>>2]=k[z>>2];k[z>>2]=x;j[I>>1]=j[I>>1]&-257|j[y+88>>1]&256;oh(y,a);k[y+80>>2]=0;Sg(y)|0;sd(a)|0;if((d|0)<=-1){y=f;continue}j[I>>1]=j[I>>1]|512;y=f}if((S|0)==7){k[U>>2]=7;b=7}else if((S|0)==124){i[b+65>>0]=1;b=7;S=127}do if((S|0)==127){c=Xg(k[V+236>>2]|0,1)|0;rg(V,k[T>>2]|0);if(!(i[V+65>>0]|0)){F=ph(V,c)|0;k[T>>2]=F;k[U>>2]=b;break}else{k[T>>2]=0;k[U>>2]=7;b=7;break}}while(0);b=Tg(V,b)|0}else{k[R>>2]=69408;k[R+4>>2]=10788;gd(21,13648,R);b=21}r=W;return b|0}function Yd(a){a=a|0;return k[(k[a+4>>2]|0)+4>>2]|0}function Zd(a){a=a|0;return k[(k[a>>2]|0)+32>>2]|0}function _d(a,b){a=a|0;b=b|0;var c=0;c=k[a+8>>2]|0;if(!(j[c+8>>1]&8192))c=qh(a,b)|0;else c=k[c+16>>2]|0;return c|0}function $d(a,b){a=a|0;b=b|0;var c=0;c=k[(k[a+12>>2]|0)+204>>2]|0;a:do if(!c)c=0;else{a=k[a+16>>2]|0;while(1){if((k[c>>2]|0)==(a|0)?(k[c+4>>2]|0)==(b|0):0)break;c=k[c+16>>2]|0;if(!c){c=0;break a}}c=k[c+8>>2]|0}while(0);return c|0}function ae(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;f=k[a+12>>2]|0;do if((b|0)<0)j=14;else{h=f+204|0;e=k[h>>2]|0;a:do if(e){g=k[a+16>>2]|0;while(1){if((k[e>>2]|0)==(g|0)?(k[e+4>>2]|0)==(b|0):0)break;e=k[e+16>>2]|0;if(!e){j=8;break a}}if(e){f=k[e+12>>2]|0;if(f)hc[f&31](k[e+8>>2]|0)}else j=8}else j=8;while(0);if((j|0)==8){e=rh(k[f>>2]|0,20,0)|0;if(!e){j=14;break}f=e+0|0;g=f+16|0;do{i[f>>0]=0;f=f+1|0}while((f|0)<(g|0));k[e>>2]=k[a+16>>2];k[e+4>>2]=b;k[e+16>>2]=k[h>>2];k[h>>2]=e;f=a+25|0;if(!(i[f>>0]|0)){k[a+20>>2]=0;i[f>>0]=1}}k[e+8>>2]=c;k[e+12>>2]=d}while(0);if((j|0)==14?(d|0)!=0:0)hc[d&31](c);return}function be(a){a=a|0;return k[(k[a+8>>2]|0)+12>>2]|0}function ce(a){a=a|0;if(!a)a=0;else a=m[a+84>>1]|0;return a|0}function de(a){a=a|0;if((a|0)!=0?(k[a+20>>2]|0)!=0:0)a=m[a+84>>1]|0;else a=0;return a|0}function ee(a,b){a=a|0;b=b|0;var c=0;b=ud(sh(a,b)|0)|0;if(a){c=a+80|0;a=Tg(k[a>>2]|0,k[c>>2]|0)|0;k[c>>2]=a}return b|0}function fe(a,b){a=a|0;b=b|0;var c=0;b=Yg(sh(a,b)|0,1)|0;if(a){c=a+80|0;a=Tg(k[a>>2]|0,k[c>>2]|0)|0;k[c>>2]=a}return b|0}function ge(a,b){a=a|0;b=b|0;var c=0;b=Yg(sh(a,b)|0,2)|0;if(a){c=a+80|0;a=Tg(k[a>>2]|0,k[c>>2]|0)|0;k[c>>2]=a}return b|0}function he(a,b){a=a|0;b=b|0;var c=0.0;c=+Zg(sh(a,b)|0);if(a){b=a+80|0;a=Tg(k[a>>2]|0,k[b>>2]|0)|0;k[b>>2]=a}return +c}function ie(a,b){a=a|0;b=b|0;var c=0;b=_g(sh(a,b)|0)|0;if(a){c=a+80|0;a=Tg(k[a>>2]|0,k[c>>2]|0)|0;k[c>>2]=a}return b|0}function je(a,b){a=a|0;b=b|0;var c=0,d=0;b=_g(sh(a,b)|0)|0;c=L;if(a){d=a+80|0;a=Tg(k[a>>2]|0,k[d>>2]|0)|0;k[d>>2]=a}L=c;return b|0}function ke(a,b){a=a|0;b=b|0;var c=0;b=Xg(sh(a,b)|0,1)|0;if(a){c=a+80|0;a=Tg(k[a>>2]|0,k[c>>2]|0)|0;k[c>>2]=a}return b|0}function le(a,b){a=a|0;b=b|0;var c=0,d=0;b=sh(a,b)|0;c=b+8|0;d=m[c>>1]|0;if(d&2048)j[c>>1]=d&59391|4096;if(a){c=a+80|0;d=Tg(k[a>>2]|0,k[c>>2]|0)|0;k[c>>2]=d}return b|0}function me(a,b){a=a|0;b=b|0;var c=0;b=Xg(sh(a,b)|0,2)|0;if(a){c=a+80|0;a=Tg(k[a>>2]|0,k[c>>2]|0)|0;k[c>>2]=a}return b|0}function ne(a,b){a=a|0;b=b|0;var c=0;b=(sh(a,b)|0)+8|0;b=l[10064+((m[b>>1]|0)&31)>>0]|0;if(a){c=a+80|0;a=Tg(k[a>>2]|0,k[c>>2]|0)|0;k[c>>2]=a}return b|0}function oe(a,b){a=a|0;b=b|0;var c=0,d=0;d=k[a>>2]|0;if(!a)c=0;else c=m[a+84>>1]|0;if((c|0)>(b|0)&(b|0)>-1){b=Xg((k[a+16>>2]|0)+(b*40|0)|0,1)|0;c=d+65|0;if(i[c>>0]|0){i[c>>0]=0;b=0}}else b=0;return b|0}function pe(a,b){a=a|0;b=b|0;var c=0,d=0;d=k[a>>2]|0;if(!a)c=0;else c=m[a+84>>1]|0;if((c|0)>(b|0)&(b|0)>-1){b=Xg((k[a+16>>2]|0)+(b*40|0)|0,2)|0;c=d+65|0;if(i[c>>0]|0){i[c>>0]=0;b=0}}else b=0;return b|0}function qe(a,b){a=a|0;b=b|0;var c=0,d=0;d=k[a>>2]|0;if(!a)c=0;else c=m[a+84>>1]|0;if((c|0)>(b|0)&(b|0)>-1){b=Xg((k[a+16>>2]|0)+((c+b|0)*40|0)|0,1)|0;c=d+65|0;if(i[c>>0]|0){i[c>>0]=0;b=0}}else b=0;return b|0}function re(a,b){a=a|0;b=b|0;var c=0,d=0;d=k[a>>2]|0;if(!a)c=0;else c=m[a+84>>1]|0;if((c|0)>(b|0)&(b|0)>-1){b=Xg((k[a+16>>2]|0)+((c+b|0)*40|0)|0,2)|0;c=d+65|0;if(i[c>>0]|0){i[c>>0]=0;b=0}}else b=0;return b|0}function se(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return th(a,b,c,d,e,0)|0}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;if(e>>>0>0|(e|0)==0&d>>>0>2147483647){d=f;if((d|0)==0|(d|0)==-1)d=18;else{hc[f&31](c);d=18}}else d=th(a,b,c,d,f,0)|0;return d|0}function ue(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=uh(a,b)|0;if(!d)bh((k[a+60>>2]|0)+((b+-1|0)*40|0)|0,c);return d|0}function ve(a,b,c){a=a|0;b=b|0;c=c|0;return we(a,b,c,((c|0)<0)<<31>>31)|0}function we(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=uh(a,b)|0;do if(!e){b=b+-1|0;f=k[a+60>>2]|0;a=f+(b*40|0)|0;b=f+(b*40|0)+8|0;if(!(j[b>>1]&9312)){k[a>>2]=c;k[a+4>>2]=d;j[b>>1]=4;break}else{ch(a,c,d);break}}while(0);return e|0}function xe(a,b){a=a|0;b=b|0;return uh(a,b)|0}function ye(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return th(a,b,c,d,e,1)|0}function ze(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;if(e>>>0>0|(e|0)==0&d>>>0>2147483647){d=f;if((d|0)==0|(d|0)==-1)d=18;else{hc[f&31](c);d=18}}else d=th(a,b,c,d,f,g<<24>>24==4?2:g)|0;return d|0}function Ae(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return th(a,b,c,d,e,2)|0}function Be(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=j[c+8>>1]|0;e=l[10064+(d&31)>>0]|0;do if((e|0)==3)d=th(a,b,k[c+16>>2]|0,k[c+12>>2]|0,-1,i[c+10>>0]|0)|0;else if((e|0)==2)d=ue(a,b,+p[c>>3])|0;else if((e|0)==4)if(!(d&16384)){d=th(a,b,k[c+16>>2]|0,k[c+12>>2]|0,-1,0)|0;break}else{d=Ce(a,b,k[c>>2]|0)|0;break}else if((e|0)==1){d=c;d=we(a,b,k[d>>2]|0,k[d+4>>2]|0)|0}else d=uh(a,b)|0;while(0);return d|0}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=uh(a,b)|0;if(!d)eh((k[a+60>>2]|0)+((b+-1|0)*40|0)|0,c);return d|0}function De(a){a=a|0;if(!a)a=0;else a=j[a+68>>1]|0;return a|0}function Ee(a,b){a=a|0;b=b|0;if(!((a|0)==0|(b|0)<1)?(j[a+70>>1]|0)>=(b|0):0)b=k[(k[a+64>>2]|0)+(b+-1<<2)>>2]|0;else b=0;return b|0}function Fe(a,b){a=a|0;b=b|0;var c=0;if(!b)c=0;else{c=b;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;c=c-b&1073741823}return vh(a,b,c)|0}function Ge(a,b){a=a|0;b=b|0;var c=0,d=0;if((j[a+68>>1]|0)==(j[b+68>>1]|0)){d=b+88|0;c=j[d>>1]|0;if((c&256)!=0?(k[b+188>>2]|0)!=0:0)j[d>>1]=c|8;c=a+88|0;d=j[c>>1]|0;if((d&256)!=0?(k[a+188>>2]|0)!=0:0)j[c>>1]=d|8;oh(a,b);c=0}else c=1;return c|0}function He(a){a=a|0;if(!a)a=0;else a=k[a>>2]|0;return a|0}function Ie(a){a=a|0;if(!a)a=1;else a=(m[a+88>>1]|0)>>>6&1;return a|0}function Je(a){a=a|0;if((a|0)!=0?(k[a+76>>2]|0)>-1:0)a=(k[a+40>>2]|0)==-1108210269;else a=0;return a&1|0}function Ke(a,b){a=a|0;b=b|0;if(!b)a=a+4|0;else a=b+52|0;return k[a>>2]|0}function Le(a,b,c){a=a|0;b=b|0;c=c|0;a=a+(b<<2)+108|0;b=k[a>>2]|0;if(c)k[a>>2]=0;return b|0}function Me(a){a=a|0;var b=0,c=0,d=0;c=a+8|0;d=m[c>>1]|0;b=l[10064+(d&31)>>0]|0;if((d&15|0)==2){wh(a,0);b=l[10064+((m[c>>1]|0)&31)>>0]|0}return b|0}function Ne(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var l=0,m=0,n=0,o=0,p=0,q=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;R=r;r=r+16|0;if((r|0)>=(s|0))ka();P=R;Q=R+4|0;k[Q>>2]=0;k[h>>2]=0;K=(g|0)!=0;L=K&1;N=rh(a,28,0)|0;do if(N){g=N+0|0;n=g+28|0;do{i[g>>0]=0;g=g+1|0}while((g|0)<(n|0));n=rh(a,536,0)|0;if(n){H=a+20|0;I=a+16|0;y=a+24|0;g=N+20|0;z=N+12|0;A=N+24|0;B=a+65|0;C=L^3;D=L|2;E=n+440|0;F=n+72|0;G=n+68|0;m=0;J=1;l=0;while(1){kw(n|0,0,536)|0;k[n>>2]=a;rg(a,m);k[Q>>2]=0;m=k[H>>2]|0;if((m|0)>0){o=k[I>>2]|0;q=0;do{p=k[o+(q<<4)+4>>2]|0;if(p)k[(k[p+4>>2]|0)+4>>2]=k[p>>2];q=q+1|0}while((q|0)!=(m|0))}x=xh(n,0,c,b)|0;if(!x)break;m=i[x+44>>0]|0;if(m&16){O=11;break}if(m&32){O=13;break}if(k[x+12>>2]|0){O=17;break}w=x+38|0;t=j[w>>1]|0;a:do if(t<<16>>16>0){q=k[x+4>>2]|0;p=t<<16>>16;m=0;while(1){o=m+1|0;if(!(id(k[q+(m*24|0)>>2]|0,d)|0)){o=m;break a}if((o|0)<(p|0))m=o;else break}}else o=0;while(0);if((o|0)==(t<<16>>16|0)){O=23;break}if(K){if((k[y>>2]&524288|0)!=0?(M=k[x+16>>2]|0,(M|0)!=0):0){u=M;m=0;do{t=k[u+20>>2]|0;if((t|0)>0){q=0;do{m=(k[u+(q<<3)+36>>2]|0)==(o|0)?10280:m;q=q+1|0}while((q|0)<(t|0))}u=k[u+4>>2]|0}while((u|0)!=0)}else m=0;q=k[x+8>>2]|0;if(q)do{p=j[q+46>>1]|0;if(p<<16>>16){v=k[q+4>>2]|0;t=p&65535;u=0;do{m=(j[v+(u<<1)>>1]|0)==(o|0)?10296:m;u=u+1|0}while((u|0)<(t|0))}q=k[q+20>>2]|0}while((q|0)!=0);if(m){O=36;break}}v=Ah(n)|0;k[g>>2]=v;if(v){u=k[x+68>>2]|0;b:do if(u){t=k[H>>2]|0;if((t|0)>0){q=k[I>>2]|0;m=0;while(1){p=m+1|0;if((k[q+(m<<4)+12>>2]|0)==(u|0)){p=m;break b}if((p|0)<(t|0))m=p;else break}}else p=0}else p=-1e6;while(0);m=k[u+4>>2]|0;Ch(v,Bh(v,4,p,L,k[u>>2]|0)|0,m,-14);m=v+4|0;q=k[m>>2]|0;t=v+32|0;if(q)i[q+(((k[t>>2]|0)+-1|0)*20|0)+3>>0]=1;Dh(v,10,10120)|0;q=v+96|0;k[q>>2]=k[q>>2]|1<>2]|0)>>>0>1){u=k[m>>2]|0;k[u+24>>2]=p;q=x+32|0;k[u+28>>2]=k[q>>2];k[(k[m>>2]|0)+32>>2]=L}else q=x+32|0;Ch(v,1,k[x>>2]|0,0);Eh(v,C);if((k[t>>2]|0)>>>0>D>>>0){k[(k[m>>2]|0)+(D*20|0)+8>>2]=k[q>>2];k[(k[m>>2]|0)+(D*20|0)+12>>2]=p}Ch(v,D,(j[w>>1]|0)+1|0,-14);if((k[t>>2]|0)>>>0>6)k[(k[m>>2]|0)+128>>2]=j[w>>1];if(!(i[B>>0]|0)){k[E>>2]=1;k[F>>2]=1;k[G>>2]=1;Fh(v,n)}}k[N>>2]=L;k[z>>2]=o;k[A>>2]=a;if(i[B>>0]|0){O=57;break}we(k[g>>2]|0,1,e,f)|0;l=Gh(N,e,f,Q)|0;if(!((J|0)<50&(l|0)==17)){O=57;break}m=k[Q>>2]|0;J=J+1|0;l=17}if((O|0)==11){k[P>>2]=c;yh(n,10160,P)}else if((O|0)==13){k[P>>2]=c;yh(n,10192,P)}else if((O|0)==17){k[P>>2]=c;yh(n,10232,P)}else if((O|0)==23){rg(a,0);k[P>>2]=d;l=zh(a,10256,P)|0;k[Q>>2]=l;l=1;O=62;break}else if((O|0)==36){rg(a,0);k[P>>2]=m;l=zh(a,10304,P)|0;k[Q>>2]=l;l=1;O=62;break}else if((O|0)==57)if(!l){l=1;m=n;O=58;break}else{m=n;O=61;break}m=n+4|0;if(!(k[m>>2]|0)){l=1;O=62}else{rg(a,0);k[Q>>2]=k[m>>2];k[m>>2]=0;l=1;O=62}}else{l=1;m=n;O=58}}else{l=0;m=0;O=58}while(0);do if((O|0)==58)if(i[a+65>>0]|0)if(l){l=0;O=61;break}else{l=0;O=64;break}else{k[h>>2]=N;l=0;break}while(0);if((O|0)==61){g=N+20|0;n=m;O=62}if((O|0)==62){m=k[g>>2]|0;if(!m){m=n;O=64}else{Sg(m)|0;m=n;O=64}}if((O|0)==64)rg(a,N);H=k[Q>>2]|0;k[P>>2]=H;zg(a,l,(H|0)!=0?10344:0,P);rg(a,H);Hh(m);rg(a,m);H=Tg(a,l)|0;r=R;return H|0}function Oe(a){a=a|0;var b=0,c=0;if(!a)a=0;else{c=k[a+24>>2]|0;b=rd(k[a+20>>2]|0)|0;rg(c,a);a=b}return a|0}function Pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jh(a,b,c,d,18)|0}function Qe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jh(a,b,c,d,19)|0}function Re(a){a=a|0;if((a|0)!=0?(k[a+20>>2]|0)!=0:0)a=k[a+4>>2]|0;else a=0;return a|0}function Se(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+16|0;if((r|0)>=(s|0))ka();d=g;e=g+8|0;if(!a){k[d>>2]=77720;k[d+4>>2]=10788;gd(21,13648,d);b=21}else{f=k[a+24>>2]|0;if(k[a+20>>2]|0){b=Gh(a,b,c,e)|0;if(!b)b=0;else{c=k[e>>2]|0;k[d>>2]=c;zg(f,b,(c|0)!=0?10344:0,d);rg(f,c)}}else b=4;b=Tg(f,b)|0}r=g;return b|0}function Te(a,b,c){a=a|0;b=b|0;c=c|0;k[a+284>>2]=b;k[a+288>>2]=c;a=k[a+4>>2]|0;if(a)do{c=a+88|0;j[c>>1]=j[c>>1]|8;a=k[a+52>>2]|0}while((a|0)!=0);return 0}function Ue(a,b){a=a|0;b=b|0;return (Lh(a,b,10352,0)|0)==0|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,m=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=r;r=r+16|0;if((r|0)>=(s|0))ka();g=B;x=B+12|0;y=B+8|0;k[y>>2]=0;do if(Mh(a)|0){f=(b|0)==0?10360:b;z=a+52|0;k[z>>2]=0;A=a+236|0;g=k[A>>2]|0;do if(g){b=g+8|0;if(!(j[b>>1]&9312)){j[b>>1]=1;break}else{Ag(g);break}}while(0);u=(c|0)==0;v=a+24|0;g=0;a:while(1){do{if(g){h=39;break a}if(!(i[f>>0]|0)){g=0;h=39;break a}k[y>>2]=0;g=nh(a,f,-1,1,0,y,x)|0}while((g|0)!=0);f=k[y>>2]|0;if(!f){f=k[x>>2]|0;g=0;continue}t=j[f+84>>1]|0;p=t&65535;q=p<<3|1;t=t<<16>>16==0;b=0;h=0;m=0;b:do{g=Xd(f)|0;do if(!u){n=(g|0)==100;if(!n){if((g|0)!=101|(m|0)!=0)break b;if(!(k[v>>2]&256)){m=0;break}}if(!m){b=rh(a,q,0)|0;if(!b){b=0;h=40;break a}kw(b|0,0,q|0)|0;if(t)o=1;else{m=0;do{o=oe(f,m)|0;k[b+(m<<2)>>2]=o;m=m+1|0}while((m|0)<(p|0));o=1}}else o=m;c:do if(n){h=b+(p<<2)|0;if(!t){m=0;while(1){n=ke(f,m)|0;k[b+(m+p<<2)>>2]=n;if((n|0)==0?(w=k[y>>2]|0,(ne(w,m)|0)!=5):0){g=w;h=27;break a}m=m+1|0;if((m|0)>=(p|0))break c;f=k[y>>2]|0}}}while(0);if(!(uc[c&31](d,p,h,b)|0))m=o;else{f=b;h=31;break a}}while(0);f=k[y>>2]|0}while((g|0)==100);g=Sg(f)|0;k[y>>2]=0;f=k[x>>2]|0;while(1)if(!(i[10368+(l[f>>0]|0)>>0]&1))break;else f=f+1|0;rg(a,b)}do if((h|0)==27){i[a+65>>0]=1;f=g;g=100;h=40}else if((h|0)==31){Sg(k[y>>2]|0)|0;k[y>>2]=0;k[z>>2]=4;g=k[A>>2]|0;if(g){b=g+8|0;if(!(j[b>>1]&9312)){j[b>>1]=1;b=f;g=4;break}else{Ag(g);b=f;g=4;break}}else{b=f;g=4}}else if((h|0)==39){f=k[y>>2]|0;b=0;h=40}while(0);if((h|0)==40)if(f)Sg(f)|0;rg(a,b);f=Tg(a,g)|0;b=(e|0)!=0;if(!((f|0)!=0&b)){if(!b)break;k[e>>2]=0;break}b=Xe(a)|0;if(!b)b=1;else{g=b;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;b=(g-b&1073741823)+1|0}g=vg(b,((b|0)<0)<<31>>31)|0;k[e>>2]=g;if(g){pw(g|0,Xe(a)|0,b|0)|0;break}k[z>>2]=7;f=k[A>>2]|0;if(f){b=f+8|0;if(!(j[b>>1]&9312)){j[b>>1]=1;f=7;break}else{Ag(f);f=7;break}}else f=7}else{k[g>>2]=101334;k[g+4>>2]=10788;gd(21,13648,g);f=21}while(0);r=B;return f|0}function We(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return nh(a,b,c,1,0,d,e)|0}function Xe(a){a=a|0;var b=0,c=0,d=0;c=r;r=r+16|0;if((r|0)>=(s|0))ka();b=c;do if(a){d=k[a+76>>2]|0;if(!((d|0)==1266094736|(d|0)==-1607883113|(d|0)==-264537850)){k[b>>2]=15248;gd(21,15256,b);k[b>>2]=129635;k[b+4>>2]=10788;gd(21,13648,b);b=16120;break}if(!(i[a+65>>0]|0)){b=Xg(k[a+236>>2]|0,1)|0;if(!b){b=k[a+52>>2]|0;if((b|0)!=516){b=b&255;if(b>>>0>26|(b|0)==2)b=16328;else b=k[15488+(b<<2)>>2]|0}else b=16344}}else b=15776}else b=15776;while(0);r=c;return b|0}function Ye(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,p=0,q=0,t=0,u=0;u=r;r=r+16|0;if((r|0)>=(s|0))ka();q=u;t=u+8|0;p=k[a>>2]|0;k[t>>2]=0;j=(b|0)==0;if(j)e=0;else{h=b;while(1)if(!(i[h>>0]|0))break;else h=h+1|0;e=h-b&1073741823}n=e+300|0;m=(d|0)!=0;if(m)k[d>>2]=0;do if(!(k[a+24>>2]&4194304))if(m){e=dd(25216,q)|0;k[d>>2]=e;e=1}else e=1;else{l=(c|0)!=0?c:41192;g=p+40|0;h=wc[k[g>>2]&127](p,b)|0;if(!h){k[q>>2]=b;k[q+4>>2]=41184;f=dd(27824,q)|0;if(!f){e=7;break}h=wc[k[g>>2]&127](p,f)|0;$c(f);if(!h){if(!m){e=1;break}h=Yc(n)|0;k[t>>2]=h;k[d>>2]=h;if(!h){e=1;break}k[q>>2]=b;fd(n,h,41216,q)|0;rc[k[p+44>>2]&63](p,e+299|0,h);e=1;break}else o=h}else o=h;e=p+48|0;h=fc[k[e>>2]&63](p,o,l)|0;if((h|0)==0&(c|0)==0){if(j)h=0;else{h=b;while(1)if(!(i[h>>0]|0))break;else h=h+1|0;h=h-b&1073741823}c=Yc(h+30|0)|0;if(!c){oc[k[p+52>>2]&15](p,o);e=7;break}l=c;j=l;i[j>>0]=115;i[j+1>>0]=113;i[j+2>>0]=108;i[j+3>>0]=105;l=l+4|0;i[l>>0]=116;i[l+1>>0]=101;i[l+2>>0]=51;i[l+3>>0]=95;while(1){g=h+-1|0;if((h|0)<=0)break;if((i[b+g>>0]|0)==47)break;else h=g}f=(Kc(b+h|0,41256,3)|0)==0;g=8;f=f?h+3|0:h;while(1){h=i[b+f>>0]|0;if(h<<24>>24==0|h<<24>>24==46){h=g;break}if(!(i[10368+(h&255)>>0]&2))h=g;else{i[c+g>>0]=i[9328+(h<<24>>24)>>0]|0;h=g+1|0}g=h;f=f+1|0}h=c+h|0;i[h+0>>0]=i[41264]|0;i[h+1>>0]=i[41265]|0;i[h+2>>0]=i[41266]|0;i[h+3>>0]=i[41267]|0;i[h+4>>0]=i[41268]|0;i[h+5>>0]=i[41269]|0;h=fc[k[e>>2]&63](p,o,c)|0;e=c;f=c}else{e=0;f=l}if(!h){if(m){if(!f)h=0;else{h=f;while(1)if(!(i[h>>0]|0))break;else h=h+1|0;h=h-f&1073741823}h=h+n|0;g=Yc(h)|0;k[t>>2]=g;k[d>>2]=g;if(g){k[q>>2]=f;k[q+4>>2]=b;fd(h,g,41272,q)|0;rc[k[p+44>>2]&63](p,h+-1|0,g)}}oc[k[p+52>>2]&15](p,o);$c(e);e=1;break}$c(e);if(fc[h&63](a,t,13776)|0){if(m){k[q>>2]=k[t>>2];n=dd(41320,q)|0;k[d>>2]=n}$c(k[t>>2]|0);oc[k[p+52>>2]&15](p,o);e=1;break}g=a+168|0;e=(k[g>>2]<<2)+4|0;h=rh(a,e,0)|0;if(!h)e=7;else{kw(h|0,0,e|0)|0;e=k[g>>2]|0;f=a+172|0;if((e|0)>0)pw(h|0,k[f>>2]|0,e<<2|0)|0;rg(a,k[f>>2]|0);k[f>>2]=h;e=k[g>>2]|0;k[g>>2]=e+1;k[h+(e<<2)>>2]=o;e=0}}while(0);o=Tg(a,e)|0;r=u;return o|0}function Ze(a){a=a|0;var b=0,c=0,d=0,e=0;b=Qc()|0;if(!b){e=k[2656]|0;a:do if((e|0)>0){c=k[2658]|0;d=0;while(1){b=d+1|0;if((k[c+(d<<2)>>2]|0)==(a|0)){b=d;break a}if((b|0)<(e|0))d=b;else break}}else b=0;while(0);if((b|0)==(e|0)){b=ad(k[2658]|0,(e<<2)+4|0)|0;if(!b)b=7;else{k[2658]=b;c=k[2656]|0;k[b+(c<<2)>>2]=a;k[2656]=c+1;b=0}}else b=0}return b|0}function _e(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=k[2656]|0;e=k[2658]|0;c=d;while(1){if((c|0)<=0){b=0;break}c=c+-1|0;b=e+(c<<2)|0;if((k[b>>2]|0)==(a|0)){f=4;break}}if((f|0)==4){c=d+-1|0;k[2656]=c;k[b>>2]=k[e+(c<<2)>>2];b=1}return b|0}function $e(){if(!(Qc()|0)){$c(k[2658]|0);k[2658]=0;k[2656]=0}return}function af(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return nh(a,b,c,0,0,d,e)|0}function bf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Nh(a,b,c,0,d,e)|0}function cf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Nh(a,b,c,1,d,e)|0}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,p=0,q=0,t=0,u=0,v=0;v=r;r=r+32|0;if((r|0)>=(s|0))ka();l=v;o=v+4|0;k[c>>2]=0;p=(e|0)!=0;if(p)k[e>>2]=0;q=(d|0)!=0;if(q)k[d>>2]=0;i=(f|0)!=0;if(i)k[f>>2]=0;j=o+4|0;k[j>>2]=0;t=o+12|0;k[t>>2]=0;u=o+16|0;k[u>>2]=0;h=o+20|0;k[h>>2]=1;m=o+8|0;k[m>>2]=20;n=o+24|0;k[n>>2]=0;g=Yc(80)|0;k[o>>2]=g;a:do if(g){k[g>>2]=0;b=Ve(a,b,20,o,f)|0;k[k[o>>2]>>2]=k[h>>2];if((b&255|0)==4){ef((k[o>>2]|0)+4|0);b=k[j>>2]|0;if(b){if(i){$c(k[f>>2]|0);k[l>>2]=k[j>>2];b=dd(10344,l)|0;k[f>>2]=b;b=k[j>>2]|0}$c(b)}b=k[n>>2]|0;k[a+52>>2]=b;break}$c(k[j>>2]|0);if(b){ef((k[o>>2]|0)+4|0);break}g=k[h>>2]|0;b=k[o>>2]|0;do if((k[m>>2]|0)>>>0>g>>>0){b=ad(b,g<<2)|0;if(!b){ef((k[o>>2]|0)+4|0);k[a+52>>2]=7;b=7;break a}else{k[o>>2]=b;break}}while(0);k[c>>2]=b+4;if(p)k[e>>2]=k[u>>2];if(q){k[d>>2]=k[t>>2];b=0}else b=0}else{k[a+52>>2]=7;b=7}while(0);r=v;return b|0}function ef(a){a=a|0;var b=0,c=0,d=0,e=0;if(a){b=a+-4|0;d=k[b>>2]|0;c=d;if((d|0)>1){e=1;do{d=k[a+(e+-1<<2)>>2]|0;if(d)$c(d);e=e+1|0}while((e|0)<(c|0))}$c(b)}return}function ff(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ph(a,b,c,d,0)|0}function gf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Ph(a,b,c,d,e)|0}function hf(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;n=r;r=r+16|0;if((r|0)>=(s|0))ka();m=n;d=n+8|0;k[d>>2]=0;e=a+324|0;c=k[e>>2]|0;if((c|0)!=0?(h=k[c+4>>2]|0,(h|0)!=0):0){l=rh(a,536,0)|0;if(!l)b=7;else{kw(l|0,0,536)|0;f=l+451|0;i[f>>0]=1;k[l>>2]=a;k[l+424>>2]=1;if(((((Qh(l,b,d)|0)==0?(g=k[l+484>>2]|0,(g|0)!=0):0)?(i[a+65>>0]|0)==0:0)?(k[g+12>>2]|0)==0:0)?(i[g+44>>0]&16)==0:0){c=h+4|0;if(!(k[c>>2]|0)){m=g+4|0;k[c>>2]=k[m>>2];g=g+38|0;j[h+38>>1]=j[g>>1]|0;j[g>>1]=0;k[m>>2]=0}k[(k[e>>2]|0)+4>>2]=0;b=0}else{b=k[d>>2]|0;k[m>>2]=b;zg(a,1,(b|0)!=0?10344:0,m);rg(a,b);b=1}i[f>>0]=0;c=k[l+8>>2]|0;if(c)Sg(c)|0;pg(a,k[l+484>>2]|0);Hh(l);rg(a,l)}b=Tg(a,b)|0}else{k[a+52>>2]=21;c=k[a+236>>2]|0;do if(c){b=c+8|0;if(!(j[b>>1]&9312)){j[b>>1]=1;break}else{Ag(c);break}}while(0);k[m>>2]=114865;k[m+4>>2]=10788;gd(21,13648,m);b=21}r=n;return b|0}function jf(a){a=a|0;return l[10640+((l[a+69>>0]|0)+-1)>>0]|0|0}function kf(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+32|0;if((r|0)>=(s|0))ka();e=g;d=g+8|0;k[d>>2]=c;do if((b|0)==1){b=k[a+324>>2]|0;if(!b){k[e>>2]=115248;k[e+4>>2]=10788;gd(21,13648,e);f=6;break}else{a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;i[(k[b>>2]|0)+16>>0]=c;b=0;break}}else{k[e>>2]=115256;k[e+4>>2]=10788;gd(21,13648,e);f=6}while(0);do if((f|0)==6){k[a+52>>2]=21;b=k[a+236>>2]|0;if(b){c=b+8|0;if(!(j[c>>1]&9312)){j[c>>1]=1;b=21;break}else{Ag(b);b=21;break}}else b=21}while(0);r=g;return b|0}function lf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=i[a>>0]|0;a:do if(b<<24>>24){e=b;b=0;b:while(1){d=e<<24>>24;switch(d|0){case 45:{if((i[a+1>>0]|0)==45){c=e;while(1){d=c<<24>>24==0;e=a+1|0;if(!(c<<24>>24!=10&(d^1)))break;a=e;c=i[e>>0]|0}if(d){f=13;break b}else c=1}else c=2;break}case 91:{do{a=a+1|0;d=i[a>>0]|0;c=d<<24>>24==0}while(d<<24>>24!=93&(c^1));if(c){b=0;break a}else c=2;break}case 12:case 10:case 9:case 13:case 32:{c=1;break}case 39:case 34:case 96:{do{a=a+1|0;d=i[a>>0]|0;c=d<<24>>24==0}while(d<<24>>24!=e<<24>>24&(c^1));if(c){b=0;break a}else c=2;break}case 47:{if((i[a+1>>0]|0)==42){a=a+2|0;while(1){c=i[a>>0]|0;if(c<<24>>24==42){a=a+1|0;if((i[a>>0]|0)==47){c=1;break}else continue}else if(!(c<<24>>24)){b=0;break a}else{a=a+1|0;continue}}}else c=2;break}case 59:{c=0;break}default:if(!(i[10368+(e&255)>>0]&70))c=2;else{c=1;while(1)if(!(i[10368+(l[a+c>>0]|0)>>0]&70)){e=c;break}else c=c+1|0;c:do switch(d|0){case 67:case 99:{if((e|0)==6?(Kc(a,10712,6)|0)==0:0){c=4;break c}c=2;break}case 84:case 116:{if((e|0)==7){if(!(Kc(a,10720,7)|0)){c=6;break c}}else if((e|0)==4){if(!(Kc(a,10728,4)|0)){c=5;break c}}else if((e|0)==9?(Kc(a,10736,9)|0)==0:0){c=5;break c}c=2;break}case 69:case 101:{if((e|0)==3){if(!(Kc(a,10752,3)|0)){c=7;break c}}else if((e|0)==7?(Kc(a,10760,7)|0)==0:0){c=3;break c}c=2;break}default:c=2}while(0);a=a+(e+-1)|0}}b=i[(c&255)+(10648+((b&255)<<3))>>0]|0;a=a+1|0;e=i[a>>0]|0;if(!(e<<24>>24)){f=35;break}}if((f|0)==13){b=b<<24>>24==1&1;break}else if((f|0)==35){b=b<<24>>24==1;f=36;break}}else{b=0;f=36}while(0);if((f|0)==36)b=b&1;return b|0}function mf(a){a=a|0;var b=0,c=0,d=0;b=Qc()|0;if(!b){c=vg(40,0)|0;if(c){b=c+0|0;d=b+40|0;do{i[b>>0]=0;b=b+1|0}while((b|0)<(d|0));j[c+8>>1]=1;k[c+32>>2]=0;ah(c,a,-1,2,0)|0}b=Xg(c,1)|0;if(!b)b=7;else b=(lf(b)|0)&255;Rh(c)}return b|0}function nf(){return 8632}function of(){return 10768}function pf(){return 3008009}function qf(){return 0}function rf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=r;r=r+32|0;if((r|0)>=(s|0))ka();c=e;d=e+8|0;if(!(k[2243]|0)){k[d>>2]=b;do switch(a|0){case 5:{if(!(k[2195]|0)){k[c>>2]=16496;rf(4,c)|0}a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[c+0>>2]=k[2195];k[c+4>>2]=k[2196];k[c+8>>2]=k[2197];k[c+12>>2]=k[2198];k[c+16>>2]=k[2199];k[c+20>>2]=k[2200];k[c+24>>2]=k[2201];k[c+28>>2]=k[2202];c=0;break}case 17:{a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2189]=c;c=0;break}case 20:{a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2190]=c;c=0;break}case 19:{if(!(k[2214]|0)){k[c>>2]=16440;rf(18,c)|0}a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;c=c+0|0;a=8848|0;d=c+52|0;do{k[c>>2]=k[a>>2];c=c+4|0;a=a+4|0}while((c|0)<(d|0));c=0;break}case 16:{c=k[d>>2]|0;a=k[c>>2]|0;k[d>>2]=c+4;k[2250]=a;a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2251]=c;c=0;break}case 13:{c=k[d>>2]|0;a=k[c>>2]|0;k[d>>2]=c+4;k[2193]=a;a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2194]=c;c=0;break}case 7:{a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2237]=c;c=k[d>>2]|0;a=k[c>>2]|0;k[d>>2]=c+4;k[2238]=a;a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2239]=c;c=0;break}case 24:{a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[c>>2]=152;c=0;break}case 15:{c=1;break}case 4:{a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2195]=k[c+0>>2];k[2196]=k[c+4>>2];k[2197]=k[c+8>>2];k[2198]=k[c+12>>2];k[2199]=k[c+16>>2];k[2200]=k[c+20>>2];k[2201]=k[c+24>>2];k[2202]=k[c+28>>2];c=0;break}case 18:{c=k[d>>2]|0;a=k[c>>2]|0;k[d>>2]=c+4;c=8848|0;a=a+0|0;d=c+52|0;do{k[c>>2]=k[a>>2];c=c+4|0;a=a+4|0}while((c|0)<(d|0));c=0;break}case 6:{a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2234]=c;c=k[d>>2]|0;a=k[c>>2]|0;k[d>>2]=c+4;k[2235]=a;a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2236]=c;c=0;break}case 9:{a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2186]=c;c=0;break}case 22:{k[d>>2]=(k[d>>2]|0)+8;k[d>>2]=(k[d>>2]|0)+8;k[2230]=0;k[2231]=0;k[2232]=0;k[2233]=0;c=0;break}case 25:{a=k[d>>2]|0;c=k[a>>2]|0;k[d>>2]=a+4;k[2242]=c;c=0;break}case 14:{c=0;break}default:c=1}while(0)}else{k[c>>2]=127883;k[c+4>>2]=10788;gd(21,13648,c);c=21}r=e;return c|0}function sf(a){a=a|0;return k[a+12>>2]|0}function tf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=a+20|0;b=k[g>>2]|0;e=(b|0)>0;if(e){d=k[a+16>>2]|0;f=0;do{c=k[d+(f<<4)+4>>2]|0;if(c)k[(k[c+4>>2]|0)+4>>2]=k[c>>2];f=f+1|0}while((f|0)!=(b|0));if(e){e=a+16|0;d=0;do{c=k[(k[e>>2]|0)+(d<<4)+4>>2]|0;if(c){hc[k[8744+152>>2]&31](k[(k[(k[k[c+4>>2]>>2]|0)+204>>2]|0)+40>>2]|0);b=k[g>>2]|0}d=d+1|0}while((d|0)<(b|0))}}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;h=r;r=r+16|0;if((r|0)>=(s|0))ka();f=h;k[f>>2]=c;a:do if((b|0)!=1001){c=0;while(1){if((k[10936+(c<<3)>>2]|0)==(b|0))break;c=c+1|0;if(c>>>0>=2){d=1;break a}}e=k[f>>2]|0;b=k[e>>2]|0;k[f>>2]=e+4;e=k[f>>2]|0;g=k[e>>2]|0;k[f>>2]=e+4;f=a+24|0;e=k[f>>2]|0;if((b|0)<=0)if(!b){b=e&~k[10940+(c<<3)>>2];k[f>>2]=b}else b=e;else{b=k[10940+(c<<3)>>2]|e;k[f>>2]=b}if((e|0)!=(b|0)?(d=k[a+4>>2]|0,(d|0)!=0):0)do{b=d+88|0;j[b>>1]=j[b>>1]|8;d=k[d+52>>2]|0}while((d|0)!=0);if(!g)d=0;else{k[g>>2]=(k[10940+(c<<3)>>2]&k[f>>2]|0)!=0&1;d=0}}else{e=k[f>>2]|0;b=k[e>>2]|0;k[f>>2]=e+4;e=k[f>>2]|0;c=k[e>>2]|0;k[f>>2]=e+4;e=k[f>>2]|0;d=k[e>>2]|0;k[f>>2]=e+4;d=Sh(a,b,c,d)|0}while(0);r=h;return d|0}function vf(a){a=a|0;a=a+32|0;L=k[a+4>>2]|0;return k[a>>2]|0}function wf(a){a=a|0;return k[a+80>>2]|0}function xf(a){a=a|0;return k[a+84>>2]|0}function yf(a){a=a|0;return Th(a,0)|0}function zf(a){a=a|0;return Th(a,1)|0}function Af(a,b,c){a=a|0;b=b|0;c=c|0;k[a+444>>2]=b;k[a+448>>2]=c;k[a+452>>2]=0;k[a+492>>2]=0;return 0}function Bf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=(b|0)>0;k[a+292>>2]=e?c:0;k[a+300>>2]=e?b:0;k[a+296>>2]=e?d:0;return}function Cf(a,b){a=a|0;b=b|0;var c=0;c=(b|0)>0;k[a+444>>2]=c?74:0;k[a+448>>2]=c?a:0;k[a+452>>2]=0;k[a+492>>2]=c?b:0;return 0}function Df(a){a=a|0;k[a+240>>2]=1;return}function Ef(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Tg(a,Vh(a,b,c,d,e,f,g,h,0)|0)|0}function Ff(a,b,c,d,e,f,g,h,j){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;var l=0,m=0,n=0;do if(j){l=rh(a,12,0)|0;if(!l){hc[j&31](e);d=1;break}m=l;n=m;i[n>>0]=0;i[n+1>>0]=0;i[n+2>>0]=0;i[n+3>>0]=0;m=m+4|0;i[m>>0]=0;i[m+1>>0]=0;i[m+2>>0]=0;i[m+3>>0]=0;k[l+4>>2]=j;k[l+8>>2]=e;d=Vh(a,b,c,d,e,f,g,h,l)|0;if(!(k[l>>2]|0)){hc[j&31](e);rg(a,l)}}else d=Vh(a,b,c,d,e,f,g,h,0)|0;while(0);return Tg(a,d)|0}function Gf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;b=Wh(a,b,-1)|0;d=Vh(a,b,c,d,e,f,g,h,0)|0;rg(a,b);return Tg(a,d)|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!b)d=0;else{d=b;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;d=d-b&1073741823}if(!(Xh(a,b,d,c,1,0)|0))d=Vh(a,b,c,1,0,57,0,0,0)|0;else d=0;return Tg(a,d)|0}function If(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+180|0;d=k[e>>2]|0;k[a+176>>2]=b;k[e>>2]=c;return d|0}function Jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+188|0;d=k[e>>2]|0;k[a+184>>2]=b;k[e>>2]=c;return d|0}function Kf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+192|0;d=k[e>>2]|0;k[a+196>>2]=b;k[e>>2]=c;return d|0}function Lf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+208|0;d=k[e>>2]|0;k[a+212>>2]=b;k[e>>2]=c;return d|0}function Mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+200|0;d=k[e>>2]|0;k[a+204>>2]=b;k[e>>2]=c;return d|0}function Nf(a,b){a=a|0;b=b|0;var c=0;if((b|0)>0)c=21;else{b=0;c=0}k[a+216>>2]=c;k[a+220>>2]=b;return 0}function Of(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+220|0;d=k[e>>2]|0;k[a+216>>2]=b;k[e>>2]=c;return d|0}function Pf(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,l=0;l=r;r=r+16|0;if((r|0)>=(s|0))ka();f=l;if(d)k[d>>2]=-1;if(e)k[e>>2]=-1;if(c>>>0>3)b=21;else{if((b|0)!=0?(i[b>>0]|0)!=0:0){g=_h(a,b)|0;if((g|0)<0){k[f>>2]=b;zg(a,1,10952,f);b=1}else h=10}else{g=10;h=10}do if((h|0)==10){k[a+452>>2]=0;b=$h(a,g,c,d,e)|0;k[a+52>>2]=b;f=k[a+236>>2]|0;if(f){g=f+8|0;if(!(j[g>>1]&9312)){j[g>>1]=1;break}else{Ag(f);break}}}while(0);b=Tg(a,b)|0}r=l;return b|0}function Qf(a,b){a=a|0;b=b|0;return Pf(a,b,0,0,0)|0}function Rf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();e=g;do if(a){b=k[a+76>>2]|0;if(!((b|0)==1266094736|(b|0)==-1607883113|(b|0)==-264537850)){k[e>>2]=15248;gd(21,15256,e);b=11008;break}f=a+65|0;if(!(i[f>>0]|0)){d=a+236|0;b=Xg(k[d>>2]|0,2)|0;if(!b){c=k[a+52>>2]|0;if((c|0)!=516){b=c&255;if(b>>>0>26|(b|0)==2)b=16328;else b=k[15488+(b<<2)>>2]|0}else b=16344;zg(a,c,b,e);b=Xg(k[d>>2]|0,2)|0}i[f>>0]=0}else b=10976}else b=10976;while(0);r=g;return b|0}function Sf(a){a=a|0;var b=0,c=0,d=0;c=r;r=r+16|0;if((r|0)>=(s|0))ka();b=c;do if(a){d=k[a+76>>2]|0;if(!((d|0)==1266094736|(d|0)==-1607883113|(d|0)==-264537850)){k[b>>2]=15248;gd(21,15256,b);k[b>>2]=129704;k[b+4>>2]=10788;gd(21,13648,b);a=21;break}if(!(i[a+65>>0]|0))a=k[a+56>>2]&k[a+52>>2];else a=7}else a=7;while(0);r=c;return a|0}function Tf(a){a=a|0;var b=0,c=0,d=0;c=r;r=r+16|0;if((r|0)>=(s|0))ka();b=c;do if(a){d=k[a+76>>2]|0;if(!((d|0)==1266094736|(d|0)==-1607883113|(d|0)==-264537850)){k[b>>2]=15248;gd(21,15256,b);k[b>>2]=129713;k[b+4>>2]=10788;gd(21,13648,b);a=21;break}if(!(i[a+65>>0]|0))a=k[a+52>>2]|0;else a=7}else a=7;while(0);r=c;return a|0}function Uf(a){a=a|0;if((a|0)!=516){a=a&255;if(a>>>0>26|(a|0)==2)a=16328;else a=k[15488+(a<<2)>>2]|0}else a=16344;return a|0}function Vf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b>>>0<=11){d=a+(b<<2)+88|0;a=k[d>>2]|0;if((c|0)>-1){b=k[11088+(b<<2)>>2]|0;k[d>>2]=(b|0)<(c|0)?b:c}}else a=-1;return a|0}function Wf(a,b){a=a|0;b=b|0;return ai(a,b,6,0)|0}function Xf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ai(a,b,c,d)|0}function Yf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[b>>2]=0;c=Qc()|0;if(!c){e=vg(40,0)|0;if(e){a=(a|0)==0?11136:a;c=e+0|0;d=c+40|0;do{i[c>>0]=0;c=c+1|0}while((c|0)<(d|0));j[e+8>>1]=1;k[e+32>>2]=0;ah(e,a,-1,2,0)|0}a=Xg(e,1)|0;if(a){c=ai(a,b,6,0)|0;if(!c){c=k[b>>2]|0;a=k[(k[c+16>>2]|0)+12>>2]|0;if(!(j[a+78>>1]&1)){i[c+62>>0]=2;i[a+77>>0]=2;c=0}else c=0}}else c=7;Rh(e);c=c&255}return c|0}function Zf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Tg(a,bi(a,b,c&255,d,e,0)|0)|0}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;return Tg(a,bi(a,b,c&255,d,e,f)|0)|0}function $f(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Wh(a,b,-1)|0;if(!b)b=0;else{c=bi(a,b,c&255,d,e,0)|0;rg(a,b);b=c}return Tg(a,b)|0}function ag(a,b,c){a=a|0;b=b|0;c=c|0;k[a+224>>2]=c;k[a+228>>2]=0;k[a+232>>2]=b;return 0}function bg(a,b,c){a=a|0;b=b|0;c=c|0;k[a+224>>2]=0;k[a+228>>2]=c;k[a+232>>2]=b;return 0}function cg(a){a=a|0;return l[a+63>>0]|0|0}function dg(){return}function eg(a,b,c,d,e,f,g,h,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;l=l|0;var m=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;if((r|0)>=(s|0))ka();x=z;y=z+8|0;k[y>>2]=0;n=k[a+20>>2]|0;if((n|0)>0){m=k[a+16>>2]|0;p=0;do{o=k[m+(p<<4)+4>>2]|0;if(o)k[(k[o+4>>2]|0)+4>>2]=k[o>>2];p=p+1|0}while((p|0)!=(n|0))}m=ci(a,y)|0;w=(m|0)!=0;a:do if((!w?(u=di(a,c,b)|0,(u|0)!=0):0)?(k[u+12>>2]|0)==0:0){do if(d){t=j[u+38>>1]|0;b:do if(t<<16>>16>0){b=k[u+4>>2]|0;n=t<<16>>16;q=0;while(1){o=b+(q*24|0)|0;p=q+1|0;if(!(id(k[o>>2]|0,d)|0)){p=q;break b}if((p|0)<(n|0))q=p;else break}}else{p=0;o=0}while(0);if((p|0)==(t<<16>>16|0)){if(i[u+44>>0]&32){b=0;t=0;u=0;o=0;q=0;p=0;break a}if(!(ei(d)|0)){b=0;t=0;u=0;o=0;q=0;p=0;break a}v=j[u+36>>1]|0;n=v<<16>>16;if(v<<16>>16<=-1){b=0;q=0;n=1;v=0;p=11144;break}p=n;o=(k[u+4>>2]|0)+(n*24|0)|0}if(o){if((j[u+36>>1]|0)==(p|0))n=(i[u+44>>0]&8)!=0;else n=0;b=n&1;q=(i[o+20>>0]|0)!=0&1;n=i[o+23>>0]&1;v=k[o+16>>2]|0;p=k[o+12>>2]|0}else{b=0;q=0;n=1;v=0;p=11144}}else{b=0;q=0;n=1;v=0;p=11144}while(0);t=q;o=n;q=(v|0)==0?11152:v}else{b=0;t=0;u=0;o=0;q=0;p=0}while(0);if(e)k[e>>2]=p;if(f)k[f>>2]=q;if(g)k[g>>2]=t;if(h)k[h>>2]=o;if(l)k[l>>2]=b;n=k[y>>2]|0;if(!(w|(u|0)!=0)){rg(a,n);k[x>>2]=c;k[x+4>>2]=d;n=zh(a,11160,x)|0;k[y>>2]=n;m=1}k[x>>2]=n;zg(a,m,(n|0)!=0?10344:0,x);rg(a,k[y>>2]|0);w=Tg(a,m)|0;r=z;return w|0}function fg(a){a=a|0;var b=0;if((Qc()|0)==0?(b=k[2254]|0,(b|0)!=0):0)a=(wc[k[b+60>>2]&127](b,a*1e3|0)|0)/1e3|0;else a=0;return a|0}function gg(a,b){a=a|0;b=b|0;k[a+56>>2]=(b|0)!=0?-1:255;return 0}function hg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=fi(a,b)|0;do if(b){a=k[b+4>>2]|0;k[a+4>>2]=k[b>>2];a=k[(k[a>>2]|0)+60>>2]|0;if((c|0)==7){k[d>>2]=a;b=0;break}b=k[a>>2]|0;if(!b)b=12;else b=fc[k[b+40>>2]&63](a,c,d)|0}else b=1;while(0);return b|0}function ig(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;o=r;r=r+32|0;if((r|0)>=(s|0))ka();n=o+24|0;d=o+8|0;c=o;k[d>>2]=b;do switch(a|0){case 8:{m=k[d>>2]|0;h=k[m>>2]|0;k[d>>2]=m+4;m=k[d>>2]|0;e=k[m>>2]|0;k[d>>2]=m+4;m=vg(512,0)|0;c=(m|0)==0;if(!c){kw(m|0,0,512)|0;k[m>>2]=h}a=((h+7|0)/8|0)+1|0;g=vg(a,((a|0)<0)<<31>>31)|0;b=(g|0)==0;if(!b)kw(g|0,0,a|0)|0;f=Yc(512)|0;a:do if(!(c|b|(f|0)==0)){d=0;while(1){c=k[e+(d<<2)>>2]|0;if((c|0)==5|(c|0)==2|(c|0)==1){b=e+(d+2<<2)|0;p=k[b>>2]|0;a=p+-1|0;k[n>>2]=a;k[b>>2]=(k[e+(d+3<<2)>>2]|0)+p;b=4}else if(!c)break;else{hd(4,n);a=k[n>>2]|0;b=2}q=e+((d|1)<<2)|0;p=(k[q>>2]|0)+-1|0;k[q>>2]=p;d=((p|0)>0?0:b)+d|0;a=(a&2147483647|0)%(h|0)|0;k[n>>2]=a;a=a+1|0;b=1<<(a&7);if(!(c&1)){a=g+(a>>>3)|0;i[a>>0]=l[a>>0]&(b^255);hi(m,(k[n>>2]|0)+1|0,f);continue}a=g+(a>>>3)|0;i[a>>0]=l[a>>0]|b;if((c|0)==5)continue;if(gi(m,(k[n>>2]|0)+1|0)|0){c=-1;break a}}e=ii(m,h+1|0)|0;a=ii(m,0)|0;a=e-h+a+(k[m>>2]|0)|0;k[n>>2]=1;if((h|0)<1)c=a;else{b=1;while(1){e=(l[g+(b>>3)>>0]&1<<(b&7)|0)!=0&1;c=b;b=b+1|0;if((e|0)!=(ii(m,c)|0))break a;k[n>>2]=b;if((c|0)>=(h|0)){c=a;break}}}}else c=-1;while(0);$c(f);$c(g);ji(m);break}case 11:{c=k[2514]|0;n=k[d>>2]|0;b=k[n>>2]|0;k[d>>2]=n+4;if(b)k[2514]=b;break}case 12:{k[c>>2]=0;c=k[c>>2]|0;break}case 13:{n=k[d>>2]|0;c=k[n>>2]|0;k[d>>2]=n+4;break}case 22:{c=10;break}case 5:{pw(12672,9064,259)|0;c=0;break}case 6:{pw(9064,12672,259)|0;c=0;break}case 7:{if(!(Qc()|0)){i[9064]=0;c=0}else c=0;break}case 14:{m=k[d>>2]|0;n=k[m>>2]|0;k[d>>2]=m+4;m=k[d>>2]|0;c=k[m>>2]|0;k[d>>2]=m+4;Cg(k[(k[n+16>>2]|0)+4>>2]|0,0,c,0)|0;c=0;break}case 15:{m=k[d>>2]|0;c=k[m>>2]|0;k[d>>2]=m+4;m=k[d>>2]|0;n=k[m>>2]|0;k[d>>2]=m+4;j[c+60>>1]=n;c=0;break}case 16:{n=k[d>>2]|0;a=k[n>>2]|0;k[d>>2]=n+4;if(!a)c=0;else{c=a;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;c=c-a&1073741823}c=(ki(a,c)|0)!=27;c=c?124:0;break}case 24:{m=k[d>>2]|0;c=k[m>>2]|0;k[d>>2]=m+4;m=k[d>>2]|0;n=k[m>>2]|0;k[d>>2]=m+4;k[c+136>>2]=n;c=0;break}case 23:{c=(k[2243]|0)==0&1;break}case 25:{h=k[d>>2]|0;c=k[h>>2]|0;k[d>>2]=h+4;h=k[d>>2]|0;m=k[h>>2]|0;k[d>>2]=h+4;m=(_h(c,m)|0)&255;i[c+144>>0]=m;m=k[d>>2]|0;h=k[m>>2]|0;k[d>>2]=m+4;h=h&255;i[c+147>>0]=h;m=c+145|0;i[m>>0]=h;h=k[d>>2]|0;n=k[h>>2]|0;k[d>>2]=h+4;k[c+140>>2]=n;if((i[m>>0]|0)==0&(n|0)>0){Jg(c);c=0}else c=0;break}case 17:{n=k[d>>2]|0;b=k[n>>2]|0;k[d>>2]=n+4;n=k[d>>2]|0;c=k[n>>2]|0;k[d>>2]=n+4;n=k[d>>2]|0;a=k[n>>2]|0;k[d>>2]=n+4;if(b){n=li(b)|0;k[c>>2]=n}mi(a);c=0;break}case 18:{n=k[d>>2]|0;c=k[n>>2]|0;k[d>>2]=n+4;k[2253]=c;c=0;break}case 20:{n=k[d>>2]|0;c=k[n>>2]|0;k[d>>2]=n+4;k[2192]=c;c=0;break}case 9:{n=k[d>>2]|0;c=k[n>>2]|0;k[d>>2]=n+4;k[2252]=c;if(!c)c=0;else c=qc[c&127](0)|0;break}case 10:{m=k[d>>2]|0;n=k[m>>2]|0;k[d>>2]=m+4;m=k[d>>2]|0;c=k[m>>2]|0;k[d>>2]=m+4;k[3164]=n;k[3166]=c;c=0;break}default:c=0}while(0);r=o;return c|0}function jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;a:do if(!((a|0)==0|(b|0)==0)){c=a;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;d=(c-a&1073741823)+1|0;c=i[a+d>>0]|0;if(c<<24>>24){f=a+d|0;while(1){e=dw(f,b)|0;d=f;while(1){a=d+1|0;if(!(c<<24>>24))break;c=i[a>>0]|0;d=a}a=d-f&1073741823;c=f+(a+1)|0;if(!e)break a;else d=c;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;f=f+(a+2+(d-c&1073741823))|0;c=i[f>>0]|0;if(!(c<<24>>24)){c=0;break}}}else c=0}else c=0;while(0);return c|0}function kg(a,b,c){a=a|0;b=b|0;c=c|0;a=jg(a,b)|0;b=(c|0)!=0;if(a)b=(ni(a,1,b&1)|0)<<24>>24!=0;return b&1|0}function lg(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;if((r|0)>=(s|0))ka();e=f;a=jg(a,b)|0;if(!a){L=d;r=f;return c|0}else{b=(oi(a,e)|0)==0;a=e;L=b?k[a+4>>2]|0:d;r=f;return (b?k[a>>2]|0:c)|0}return 0}function mg(a,b){a=a|0;b=b|0;a=fi(a,b)|0;if(a){a=k[k[a+4>>2]>>2]|0;if(!(i[a+15>>0]|0))a=k[a+168>>2]|0;else a=10360}else a=0;return a|0}function ng(a,b){a=a|0;b=b|0;a=fi(a,b)|0;if(!a)a=-1;else a=j[(k[a+4>>2]|0)+22>>1]&1;return a|0}function og(a,b){a=a|0;b=b|0;if(b){Kk(a,k[b+28>>2]|0);rg(a,k[b>>2]|0);rg(a,k[b+4>>2]|0);Lk(a,k[b+12>>2]|0);Mk(a,k[b+16>>2]|0);rg(a,b)}return}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,l=0;do if(b){f=(a|0)!=0;if(!(f?(k[a+520>>2]|0)!=0:0))c=4;if((c|0)==4?(d=b+40|0,c=(j[d>>1]|0)+-1<<16>>16,j[d>>1]=c,c<<16>>16!=0):0)break;c=k[b+8>>2]|0;if(c){e=a+520|0;do{d=c;c=k[c+20>>2]|0;if(!(f?(k[e>>2]|0)!=0:0))Nk((k[d+24>>2]|0)+24|0,k[d>>2]|0,0)|0;Ok(a,d)}while((c|0)!=0)}c=k[b+16>>2]|0;if(c){h=(a|0)==0;i=b+68|0;l=a+520|0;do{if(!(!h?(k[l>>2]|0)!=0:0)){d=c+16|0;g=k[d>>2]|0;f=c+12|0;e=k[f>>2]|0;if(!g)Nk((k[i>>2]|0)+56|0,k[((e|0)==0?c:e)+8>>2]|0,e)|0;else k[g+12>>2]=e;f=k[f>>2]|0;if(f)k[f+16>>2]=k[d>>2]}Pk(a,k[c+28>>2]|0);Pk(a,k[c+32>>2]|0);d=c;c=k[c+4>>2]|0;rg(a,d)}while((c|0)!=0)}Qk(a,b);rg(a,k[b>>2]|0);rg(a,k[b+20>>2]|0);Rk(a,k[b+12>>2]|0,1);Sk(a,k[b+24>>2]|0);if(!((a|0)!=0?(k[a+520>>2]|0)!=0:0))Tk(0,b)|0;f=b+56|0;c=k[f>>2]|0;if(c){g=b+52|0;d=k[g>>2]|0;if((d|0)>0){e=0;do{if((e|0)!=1){rg(a,k[(k[f>>2]|0)+(e<<2)>>2]|0);d=k[g>>2]|0}e=e+1|0}while((e|0)<(d|0));c=k[f>>2]|0}rg(a,c)}rg(a,b)}while(0);return}function qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;hh(k[b+60>>2]|0,j[b+68>>1]|0);e=b+16|0;hh(k[e>>2]|0,m[b+84>>1]<<1);c=k[b+192>>2]|0;if(c)do{d=c;c=k[c+24>>2]|0;Uk(a,k[d>>2]|0,k[d+4>>2]|0);rg(a,d)}while((c|0)!=0);c=j[b+70>>1]|0;if(c<<16>>16>0){d=b+64|0;c=c<<16>>16;do{c=c+-1|0;rg(a,k[(k[d>>2]|0)+(c<<2)>>2]|0)}while((c|0)>0)}Uk(a,k[b+4>>2]|0,k[b+32>>2]|0);rg(a,k[e>>2]|0);rg(a,k[b+168>>2]|0);rg(a,k[b+172>>2]|0);return}function rg(a,b){a=a|0;b=b|0;var c=0;do if(b){if(a){if(k[a+520>>2]|0){Vk(a,b);break}if((k[a+276>>2]|0)>>>0<=b>>>0?(k[a+280>>2]|0)>>>0>b>>>0:0){c=a+272|0;k[b>>2]=k[c>>2];k[c>>2]=b;a=a+252|0;k[a>>2]=(k[a>>2]|0)+-1;break}}$c(b)}while(0);return}function sg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=k[b+24>>2]|0;if(!e)c=0;else{c=e;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;c=c-e&1073741823}d=(((l[9328+(l[e>>0]|0)>>0]|0)+c|0)>>>0)%23|0;c=Wk(a,d,e,c)|0;if(!c){k[b+8>>2]=0;c=a+(d<<2)|0;k[b+28>>2]=k[c>>2];k[c>>2]=b}else{c=c+8|0;k[b+8>>2]=k[c>>2];k[c>>2]=b}return}function tg(a){a=a|0;var b=0,c=0;do if(a){b=k[2254]|0;if((b|0)==(a|0)){k[2254]=k[a+12>>2];break}if(b){do{c=b+12|0;b=k[c>>2]|0}while((b|0)!=(a|0)&(b|0)!=0);if((b|0)==(a|0))k[c>>2]=k[a+12>>2]}}while(0);return}function ug(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function vg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;b=ow(a|0,b|0,-1,-1)|0;c=L;do if(!(c>>>0>0|(c|0)==0&b>>>0>2147483390)){if(!(k[2186]|0)){b=qc[k[8744+36>>2]&127](a)|0;break}c=qc[k[8744+52>>2]&127](a)|0;k[2171]=a;if((k[2181]|0)>>>0>>0)k[2181]=a;a=k[2260]|0;do if(a){b=k[2166]|0;d=9032|0;d=iw(k[d>>2]|0,k[d+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0;e=L;if(0<(e|0)|0==(e|0)&b>>>0>>0){k[2265]=0;break}else{k[2265]=1;d=k[2261]|0;k[2260]=0;vc[a&15](d,b,0,c);k[2260]=a;k[2261]=d;break}}while(0);b=qc[k[8744+36>>2]&127](c)|0;if(b){a=qc[k[8744+48>>2]&127](b)|0;a=(k[2166]|0)+a|0;k[2166]=a;if(a>>>0>(k[2176]|0)>>>0)k[2176]=a;a=(k[2175]|0)+1|0;k[2175]=a;if(a>>>0>(k[2185]|0)>>>0)k[2185]=a}else b=0}else b=0;while(0);return b|0}function wg(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;do if(a){if((b|0)==0&(c|0)==0){$c(a);d=0;break}if(!(c>>>0>0|(c|0)==0&b>>>0>2147483391)){g=qc[k[8744+48>>2]&127](a)|0;f=qc[k[8744+52>>2]&127](b)|0;if((f|0)!=(g|0)){if(!(k[2186]|0)){d=wc[k[8744+44>>2]&127](a,f)|0;break}k[2171]=b;if((k[2181]|0)>>>0>>0)k[2181]=b;c=f-g|0;d=k[2166]|0;h=9032|0;h=iw(k[h>>2]|0,k[h+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0;i=L;if(!(0<(i|0)|0==(i|0)&d>>>0>>0)?(e=k[2260]|0,(e|0)!=0):0){h=k[2261]|0;k[2260]=0;vc[e&15](h,d,0,c);k[2260]=e;k[2261]=h}d=wc[k[8744+44>>2]&127](a,f)|0;c=k[2260]|0;if((d|0)==0&(c|0)!=0){e=k[2166]|0;d=k[2261]|0;k[2260]=0;vc[c&15](d,e,0,b);k[2260]=c;k[2261]=d;d=wc[k[8744+44>>2]&127](a,f)|0}if(d){c=(qc[k[8744+48>>2]&127](d)|0)-g|0;c=(k[2166]|0)+c|0;k[2166]=c;if(c>>>0>(k[2176]|0)>>>0)k[2176]=c}else d=0}else d=a}else d=0}else d=vg(b,c)|0;while(0);return d|0}function xg(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.0,n=0.0,o=0,q=0.0,u=0.0,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,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;Y=r;r=r+96|0;if((r|0)>=(s|0))ka();W=Y+8|0;X=Y;V=Y+16|0;if(!b){e=0;f=0;Q=0}else{e=b&2;if(!e)f=0;else{F=k[d>>2]|0;f=k[F>>2]|0;k[d>>2]=F+4}e=e&255;Q=(b&1|0)!=0}P=e<<24>>24==0;M=e<<24>>24!=0;N=f+4|0;O=f+8|0;K=a+12|0;e=0;a:while(1){b=i[c>>0]|0;if(b<<24>>24==37){b=c;c=e}else if(b<<24>>24){b=c;do{b=b+1|0;F=i[b>>0]|0}while(!(F<<24>>24==37|F<<24>>24==0));Xk(a,c,b-c|0);if(!(i[b>>0]|0))break}else break;e=b+1|0;g=i[e>>0]|0;if(!(g<<24>>24)){R=10;break}h=g<<24>>24;o=0;j=0;v=0;g=0;x=0;y=0;b:while(1){switch(h|0){case 45:{w=j;g=1;break}case 32:{w=j;v=1;break}case 35:{o=1;w=j;break}case 33:{w=1;break}case 48:{w=j;y=1;break}case 43:{w=j;x=1;break}default:{z=o;w=j;break b}}j=b+2|0;F=i[j>>0]|0;h=F<<24>>24;if(!(F<<24>>24)){e=j;z=o;break}else{b=e;e=j;j=w}}if((h|0)!=42)if((h+-48|0)>>>0<10){j=0;do{j=h+-48+(j*10|0)|0;e=e+1|0;h=i[e>>0]|0}while((h+-48|0)>>>0<10);J=g;I=j&2147483647}else{J=g;I=0}else{if(P){F=k[d>>2]|0;j=k[F>>2]|0;k[d>>2]=F+4}else j=Yk(f)|0;if((j|0)<0){g=1;j=(j|0)==-2147483648?0:0-j|0}h=e+1|0;e=h;h=i[h>>0]|0;J=g;I=j}do if((h|0)==46){j=e+1|0;g=i[j>>0]|0;if(g<<24>>24!=42){h=g<<24>>24;if((g+-48&255)<10)g=0;else{e=j;C=0;break}while(1){g=h+-48+(g*10|0)|0;e=e+2|0;F=i[e>>0]|0;h=F<<24>>24;if((F+-48&255)<10){F=j;j=e;e=F}else break}C=g&2147483647;break}if(P){F=k[d>>2]|0;j=k[F>>2]|0;k[d>>2]=F+4}else j=Yk(f)|0;e=e+2|0;h=i[e>>0]|0;if((j|0)<0)C=(j|0)==-2147483648?-1:0-j|0;else C=j}else C=-1;while(0);do if((h|0)==108){j=e+1|0;h=i[j>>0]|0;if(h<<24>>24==108){h=e+2|0;e=h;h=i[h>>0]|0;j=1;break}else{e=j;h=h<<24>>24;j=0;break}}else j=0;while(0);o=0;while(1){g=48752+(o*6|0)|0;if((h|0)==(i[g>>0]|0)){h=g;g=o;R=46;break}o=o+1|0;if((o|0)>=23){H=48752;F=0;break}}if((R|0)==46){R=0;if(!(Q|g>>>0<20))break;H=h;F=i[48755+(g*6|0)>>0]|0}c:do switch(F&255|0){case 14:{j=0;R=50;break}case 1:case 16:{R=50;break}case 13:{j=k[d>>2]|0;b=k[j>>2]|0;k[d>>2]=j+4;j=k[d>>2]|0;h=k[j>>2]|0;k[d>>2]=j+4;j=k[b+(h*72|0)+12>>2]|0;if(j){g=j;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;Xk(a,j,g-j&1073741823);Xk(a,28928,1)}g=k[b+(h*72|0)+16>>2]|0;if(!g)b=0;else{b=g;while(1)if(!(i[b>>0]|0))break;else b=b+1|0;b=b-g&1073741823}Xk(a,g,b);v=c;h=0;b=0;j=0;break}case 4:case 3:case 2:{do if(!P){j=k[N>>2]|0;if((k[f>>2]|0)>(j|0)){k[N>>2]=j+1;m=+Zg(k[(k[O>>2]|0)+(j<<2)>>2]|0);R=92;break}else{j=(C|0)<0?6:C;m=0.0;R=94;break}}else{R=k[d>>2]|0;k[t>>2]=k[R>>2];k[t+4>>2]=k[R+4>>2];m=+p[t>>3];k[d>>2]=R+8;R=92}while(0);if((R|0)==92){R=0;j=(C|0)<0?6:C;if(m<0.0){m=-m;G=45}else R=94}if((R|0)==94){R=0;if(!(x<<24>>24))G=v<<24>>24==0?0:32;else G=43}C=F<<24>>24==4;g=((C&(j|0)>0)<<31>>31)+j|0;j=g&4095;if(!j)n=.5;else{n=.5;do{j=j+-1|0;n=n*.1}while((j|0)>0)}B=F<<24>>24==2;if(B)m=m+n;p[W>>3]=m;p[X>>3]=+p[W>>3];if(+p[W>>3]!=+p[X>>3]){v=48960;h=3;b=I;j=0}else{if(m>0.0){o=0;q=1.0;while(1){u=q*1.e+100;if(m>=u&(o|0)<351){o=o+100|0;q=u}else break}while(1){u=q*1.e+64;if(m>=u&(o|0)<351){o=o+64|0;q=u}else break}while(1){u=q*1.0e8;if(m>=u&(o|0)<351){o=o+8|0;q=u}else break}while(1){u=q*10.0;if((o|0)<351&m>=u){o=o+1|0;q=u}else break}m=m/q;if(m<1.0e-08)do{m=m*1.0e8;o=o+-8|0}while(m<1.0e-08);if(m<1.0)do{m=m*10.0;o=o+-1|0}while(m<1.0);if((o|0)>350){if(G<<24>>24==43)g=48976;else if(G<<24>>24==45)g=48968;else g=48984;c=g;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;v=g;h=c-g&1073741823;b=I;j=0;break c}}else o=0;if(!B){m=n+m;if(!(m>=10.0))E=o;else{m=m*.1;E=o+1|0}}else E=o;if(C){j=(E|0)<-4|(g|0)<(E|0);C=z<<24>>24==0&1;g=g-(j?0:E)|0;j=j?3:2}else{C=w;j=F}D=j<<24>>24==3;c=D?0:E;o=(c|0)>0;j=ow(g|0,((g|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;o=ow(j|0,L|0,(o?c:0)|0,(o?((c|0)<0)<<31>>31:0)|0)|0;j=L;if((j|0)>0|(j|0)==0&o>>>0>55){o=ow(o|0,j|0,15,0)|0;o=vg(o,L)|0;if(!o){R=124;break a}else{v=o;F=o}}else{v=V;F=0}o=((w&255)*10|0)+16|0;A=(w|z)&255|(g|0)>0;if(!(G<<24>>24))B=v;else{i[v>>0]=G;B=v+1|0}if((c|0)<0){i[B>>0]=48;b=2;j=B+1|0;x=c}else{z=~c;z=(z|0)>-1?z:-1;x=-2-z|0;z=c+z|0;h=B;while(1){if((o|0)<1)b=48;else{j=~~m;b=j+48&255;m=(m-+(j|0))*10.0;o=o+-1|0}i[h>>0]=b;if((c|0)>0){h=h+1|0;c=c+-1|0}else break}b=z+3|0;j=B+(z+2)|0}h=(A|0)==0;if(!h){i[j>>0]=46;j=B+b|0}if((x+1|0)<0){kw(j|0,48,~x|0)|0;j=j+~x|0;g=g+1+x|0}if((g|0)>0){b=j;c=g;while(1){c=c+-1|0;if((o|0)<1)x=48;else{B=~~m;x=B+48&255;m=(m-+(B|0))*10.0;o=o+-1|0}i[b>>0]=x;if((c|0)<=0)break;else b=b+1|0}j=j+g|0}d:do if(!(C<<24>>24==0|h)){h=j;while(1){j=h+-1|0;g=i[j>>0]|0;if(g<<24>>24==46)break;else if(g<<24>>24!=48){j=h;break d}i[j>>0]=0;h=j}if(!(w<<24>>24)){i[j>>0]=0;break}else{i[h>>0]=48;j=h+1|0;break}}while(0);if(D){h=j+1|0;i[j>>0]=i[48912+(l[H+4>>0]|0)>>0]|0;g=j+2|0;if((E|0)<0){i[h>>0]=45;h=0-E|0}else{i[h>>0]=43;h=E}if((h|0)>99){i[g>>0]=((h|0)/100|0)+48;c=4;b=5;g=j+3|0;h=(h|0)%100|0}else{c=3;b=4}i[g>>0]=((h|0)/10|0)+48;i[j+c>>0]=((h|0)%10|0)+48;j=j+b|0}i[j>>0]=0;b=v;h=j-b|0;if(!(J<<24>>24==0&y<<24>>24!=0&(I|0)>(h|0))){b=I;j=F;break c}g=I-h|0;if((h|0)>=0){c=I;while(1){i[v+c>>0]=i[v+(c-g)>>0]|0;if((c|0)>(g|0))c=c+-1|0;else break}}if((I|0)==(h|0)){h=I;b=I;j=F;break c}kw(v+(G<<24>>24!=0&1)|0,48,I+b-j|0)|0;h=I;b=I;j=F}break}case 5:{if(P){h=k[K>>2]|0;b=k[d>>2]|0;v=k[b>>2]|0;k[d>>2]=b+4;k[v>>2]=h;v=c;h=0;b=0;j=0}else{v=c;h=0;b=0;j=0}break}case 8:{i[V>>0]=37;v=V;h=1;b=I;j=0;break}case 9:{if(!P){b=Zk(f)|0;if(!b)j=0;else j=i[b>>0]|0}else{F=k[d>>2]|0;j=k[F>>2]|0;k[d>>2]=F+4}if((C|0)>1){g=C+-1|0;b=I-g|0;if(!((b|0)<2|J<<24>>24!=0)){_k(a,b+-1|0,32);b=0}c=j&255;_k(a,g,c)}else{c=j&255;b=I}i[V>>0]=c;v=V;h=1;j=0;break}case 7:case 6:{if(M)g=Zk(f)|0;else{E=k[d>>2]|0;g=k[E>>2]|0;k[d>>2]=E+4}if(!g){c=10360;j=0}else{c=g;j=F<<24>>24!=7|M?0:g}if((C|0)>-1){if((C|0)>0)g=0;else{v=c;h=0;b=I;break c}while(1){h=g+1|0;if(!(i[c+g>>0]|0)){v=c;h=g;b=I;break c}if((h|0)<(C|0))g=h;else{v=c;b=I;break}}}else{if(!c){v=0;h=0;b=I;break c}else g=c;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;v=c;h=g-c&1073741823;b=I;break c}break}case 15:case 11:case 10:{z=F<<24>>24==15?34:39;if(P){E=k[d>>2]|0;j=k[E>>2]|0;k[d>>2]=E+4}else j=Zk(f)|0;v=(j|0)==0;if(v)j=F<<24>>24==11?20304:48992;e:do if(!C){y=0;h=0}else{o=z&255;g=0;b=C;h=0;while(1){c=i[j+g>>0]|0;if(!(c<<24>>24)){y=g;break e}h=((c<<24>>24|0)==(o|0)&1)+h|0;g=g+1|0;b=b+-1|0;if(!b){y=g;break}}}while(0);w=F<<24>>24==11&(v^1);g=((w&1)<<1|1)+y+h|0;if((g|0)>70){h=vg(g,((g|0)<0)<<31>>31)|0;if(!h){R=197;break a}else{v=h;x=h}}else{v=V;x=0}if(w){i[v>>0]=z;g=1}else g=0;if((y|0)>0){o=z&255;b=0;do{h=i[j+b>>0]|0;c=g+1|0;i[v+g>>0]=h;if((h<<24>>24|0)==(o|0)){i[v+c>>0]=h;g=g+2|0}else g=c;b=b+1|0}while((b|0)!=(y|0))}if(w){i[v+g>>0]=z;g=g+1|0}i[v+g>>0]=0;h=g;b=I;j=x;break}case 12:{F=k[d>>2]|0;b=k[F>>2]|0;k[d>>2]=F+4;if((b|0)!=0?(U=k[b+4>>2]|0,(U|0)!=0):0){Xk(a,k[b>>2]|0,U);v=c;h=0;b=0;j=0}else{v=c;h=0;b=0;j=0}break}default:break a}while(0);if((R|0)==50){R=0;do if(!(i[H+2>>0]&1)){if(M){c=Yk(f)|0;o=L;B=0;break}if(!(j<<24>>24)){o=k[d>>2]|0;c=k[o>>2]|0;k[d>>2]=o+4;o=0;B=0;break}else{B=k[d>>2]|0;o=B;c=k[o>>2]|0;o=k[o+4>>2]|0;k[d>>2]=B+8;B=0;break}}else{do if(!M)if(!(j<<24>>24)){h=k[d>>2]|0;j=k[h>>2]|0;k[d>>2]=h+4;h=((j|0)<0)<<31>>31;break}else{E=k[d>>2]|0;h=E;j=k[h>>2]|0;h=k[h+4>>2]|0;k[d>>2]=E+8;break}else{j=Yk(f)|0;h=L}while(0);if((h|0)<0){c=iw(0,0,j|0,h|0)|0;o=L;B=45;break}if(!(x<<24>>24)){c=j;o=h;B=v<<24>>24==0?0:32}else{c=j;o=h;B=43}}while(0);A=(c|0)==0&(o|0)==0;if(!(y<<24>>24))x=C;else{x=I-(B<<24>>24!=0&1)|0;x=(C|0)<(x|0)?x:C}if((x|0)>=60){j=x+10|0;h=vg(j,((j|0)<0)<<31>>31)|0;if(!h){R=69;break}else{b=j;j=h;g=h}}else{b=70;j=0;g=V}y=g+(b+-1)|0;if(F<<24>>24==16){h=zw(c|0,o|0,10,0)|0;if(!(h>>>0<=3?(F=yw(c|0,o|0,10,0)|0,F=zw(F|0,L|0,10,0)|0,!((F|0)==1&(L|0)==0)):0))h=0;F=h<<1;i[g+(b+-2)>>0]=i[48896+(F|1)>>0]|0;h=g+(b+-3)|0;i[h>>0]=i[48896+F>>0]|0}else h=y;b=l[H+4>>0]|0;v=l[H+1>>0]|0;while(1){F=zw(c|0,o|0,v|0,0)|0;g=h+-1|0;i[g>>0]=i[48912+(F+b)>>0]|0;c=yw(c|0,o|0,v|0,0)|0;o=L;if((c|0)==0&(o|0)==0)break;else h=g}c=x-y+g|0;if((c|0)>0){b=h;h=g;while(1){g=b+-2|0;i[g>>0]=48;c=c+-1|0;if((c|0)<=0)break;else{b=h;h=g}}}if(B<<24>>24){g=h+-2|0;i[g>>0]=B}if((!(A|z<<24>>24==0)?(S=i[H+5>>0]|0,S<<24>>24!=0):0)?(T=48952+(S&255)|0,!(S<<24>>24==3|S<<24>>24==6)):0){c=i[T>>0]|0;h=T;do{g=g+-1|0;i[g>>0]=c;h=h+1|0;c=i[h>>0]|0}while(c<<24>>24!=0)}v=g;h=y-g|0;b=I}g=b-h|0;c=(g|0)<1;if(!(c|J<<24>>24!=0))_k(a,g,32);Xk(a,v,h);if(!(c|J<<24>>24==0))_k(a,g,32);if(j)$c(j);c=e+1|0;e=v}if((R|0)==10)Xk(a,48744,1);else if((R|0)==69){i[a+25>>0]=1;k[a+16>>2]=0}else if((R|0)==124){i[a+25>>0]=1;k[a+16>>2]=0}else if((R|0)==197){i[a+25>>0]=1;k[a+16>>2]=0}r=Y;return}function yg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=a+8|0;b=k[d>>2]|0;do if(((b|0)!=0?(f=a+12|0,i[b+(k[f>>2]|0)>>0]=0,c=i[a+24>>0]|0,c<<24>>24!=0):0)?(e=a+4|0,(k[d>>2]|0)==(k[e>>2]|0)):0){if(c<<24>>24==1){b=(k[f>>2]|0)+1|0;b=rh(k[a>>2]|0,b,((b|0)<0)<<31>>31)|0}else b=Yc((k[f>>2]|0)+1|0)|0;k[d>>2]=b;if(!b){i[a+25>>0]=1;k[a+16>>2]=0;break}else{pw(b|0,k[e>>2]|0,(k[f>>2]|0)+1|0)|0;break}}while(0);return k[d>>2]|0}function zg(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;l=r;r=r+16|0;if((r|0)>=(s|0))ka();h=l;e=a+52|0;k[e>>2]=b;a:do if(!c){k[e>>2]=b;b=k[a+236>>2]|0;if(b){e=b+8|0;if(!(j[e>>1]&9312)){j[e>>1]=1;break}else{Ag(b);break}}}else{g=a+236|0;do if(!(k[g>>2]|0)){e=rh(a,40,0)|0;if(!e){k[g>>2]=e;break a}else{b=e+0|0;f=b+40|0;do{i[b>>0]=0;b=b+1|0}while((b|0)<(f|0));j[e+8>>1]=1;k[e+32>>2]=a;k[g>>2]=e;break}}while(0);k[h>>2]=d;e=$k(a,c,h)|0;b=k[g>>2]|0;if(b)ah(b,e,-1,1,75)|0}while(0);r=l;return}function Ag(a){a=a|0;var b=0,c=0;c=a+8|0;b=j[c>>1]|0;if(b&8192){bl(a,k[a>>2]|0)|0;b=j[c>>1]|0}b=b&65535;do if(!(b&1024)){if(b&32){cl(k[a>>2]|0);break}if(b&64){a=k[a>>2]|0;b=(k[a>>2]|0)+180|0;k[a+4>>2]=k[b>>2];k[b>>2]=a}}else hc[k[a+36>>2]&31](k[a+16>>2]|0);while(0);j[c>>1]=1;return}function Bg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;if((r|0)>=(s|0))ka();f=h;d=_h(b,c)|0;do if((d|0)==1){e=rh(a,536,0)|0;if(!e){zg(a,7,15776,f);d=0;break}kw(e|0,0,536)|0;k[e>>2]=b;if(!(dl(e)|0)){rg(a,k[e+4>>2]|0);Hh(e);rg(a,e);g=7;break}else{b=k[e+12>>2]|0;d=e+4|0;k[f>>2]=k[d>>2];zg(a,b,10344,f);rg(a,k[d>>2]|0);Hh(e);rg(a,e);d=0;break}}else g=7;while(0);do if((g|0)==7)if((d|0)<0){k[f>>2]=c;zg(a,1,47448,f);d=0;break}else{d=k[(k[b+16>>2]|0)+(d<<4)+4>>2]|0;break}while(0);r=h;return d|0}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,h=0;h=k[a+4>>2]|0;k[h+4>>2]=k[a>>2];g=h+22|0;if(!(j[g>>1]&2)){if((c|0)<0)c=(k[h+32>>2]|0)-(k[h+36>>2]|0)|0;if(((b+-512|0)>>>0<65025?(b+-1&b|0)==0:0)?(k[h+32>>2]=b,e=h+80|0,f=k[e>>2]|0,(f|0)!=0):0){a=f+-4|0;k[e>>2]=a;el(a);k[e>>2]=0}e=h+32|0;a=fl(k[h>>2]|0,e,c)|0;k[h+36>>2]=(k[e>>2]|0)-(c&65535);if(d)j[g>>1]=m[g>>1]|0|2}else a=8;return a|0}function Dg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=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+16|0;if((r|0)>=(s|0))ka();K=Q;J=Q+12|0;I=Q+8|0;O=k[a+4>>2]|0;F=O+4|0;k[F>>2]=k[a>>2];L=a+8|0;e=i[L>>0]|0;do if(e<<24>>24!=2?(M=(b|0)!=0,e<<24>>24!=1|M):0){N=O+22|0;e=j[N>>1]|0;if(!((e&1)!=0&M)){if(M)if((i[O+20>>0]|0)!=2&(e&64)==0)P=8;else P=7;else if(!(e&64))P=8;else P=7;a:do if((P|0)==7){c=k[O+76>>2]|0;P=12}else if(((P|0)==8?(b|0)>1:0)?(d=k[O+72>>2]|0,(d|0)!=0):0)do{e=k[d>>2]|0;if((e|0)!=(a|0)){c=e;P=12;break a}d=k[d+12>>2]|0}while((d|0)!=0);while(0);if((P|0)==12?(k[c>>2]|0)!=0:0){c=262;break}c=gl(a,1,1)|0;if(!c){e=m[N>>1]|0;j[N>>1]=e&65527;H=O+44|0;if(!(k[H>>2]|0))j[N>>1]=e|8;B=O+12|0;p=O+32|0;q=O+36|0;t=O+17|0;u=O+18|0;v=O+80|0;w=O+24|0;x=O+26|0;y=O+28|0;z=O+30|0;A=O+21|0;C=O+20|0;D=(b|0)>1;c=0;b:while(1){c:do if(!(k[B>>2]|0)){c=hl(k[O>>2]|0)|0;if(!c){c=il(O,1,J,0)|0;if(!c){o=k[J>>2]|0;g=k[o+56>>2]|0;e=l[g+29>>0]<<16|l[g+28>>0]<<24|l[g+30>>0]<<8|l[g+31>>0];f=k[O>>2]|0;h=k[f+24>>2]|0;if((e|0)!=0?(cw(g+24|0,g+92|0,4)|0)==0:0)n=e;else n=h;d:do if((n|0)>0){e:do if(!(cw(g,44680,16)|0)){if((l[g+18>>0]|0)>2)j[N>>1]=m[N>>1]|1;e=i[g+19>>0]|0;if((e&255)<=2){do if(e<<24>>24==2){if(j[N>>1]&16)break;k[I>>2]=0;c=jl(f,I)|0;if(c){P=48;break e}if(k[I>>2]|0)break;if(!o){c=0;continue b}Gg(k[o+68>>2]|0);c=0;continue b}while(0);if(cw(g+21|0,47408,3)|0){c=26;P=48;break}d=l[g+17>>0]<<16|l[g+16>>0]<<8;if((d+16777215&d|0)!=0|d>>>0>65536|d>>>0<257){c=26;P=48;break}f=l[g+20>>0]|0;e=d-f|0;if((d|0)==(k[p>>2]|0)){if((n|0)>(h|0)?(k[(k[F>>2]|0)+24>>2]&65536|0)==0:0){k[K>>2]=55672;k[K+4>>2]=10788;gd(11,13600,K);c=11;P=48;break}if(e>>>0<480){c=26;P=48;break}k[p>>2]=d;k[q>>2]=e;i[t>>0]=(l[g+53>>0]<<16|l[g+52>>0]<<24|l[g+54>>0]<<8|l[g+55>>0]|0)!=0&1;i[u>>0]=(l[g+65>>0]<<16|l[g+64>>0]<<24|l[g+66>>0]<<8|l[g+67>>0]|0)!=0&1;break d}if(o)Gg(k[o+68>>2]|0);k[q>>2]=e;k[p>>2]=d;e=k[v>>2]|0;if(e){c=e+-4|0;k[v>>2]=c;el(c);k[v>>2]=0}c=fl(k[O>>2]|0,p,f)|0}else{c=26;P=48}}else{c=26;P=48}while(0);if((P|0)==48){P=0;if(o)Gg(k[o+68>>2]|0);k[B>>2]=0}if(!c){c=0;continue b}else{P=77;break c}}else e=k[q>>2]|0;while(0);c=((((e<<6)+-768|0)>>>0)/255|0)+65513|0;d=c&65535;j[w>>1]=d;f=((((e<<5)+-384|0)>>>0)/255|0)+65513&65535;j[x>>1]=f;j[y>>1]=e+65501;j[z>>1]=f;i[A>>0]=(d&65535)>127?127:c&255;k[B>>2]=o;k[H>>2]=n;c=0;continue b}else e=0}else e=0}else{f:do if((c|0)==0&M){if(j[N>>1]&1){c=8;P=77;break c}n=k[O>>2]|0;c=k[n+40>>2]|0;g:do if(!c){i[n+21>>0]=(i[(k[a>>2]|0)+64>>0]|0)==2&1;o=n+16|0;if((i[o>>0]|0)==1){f=n+208|0;e=k[f>>2]|0;do if(!e){c=kl(n,2)|0;h:do if((c|0)==0&D){e=n+176|0;d=n+180|0;while(1){c=kl(n,4)|0;if((c|0)!=5)break h;if(!(qc[k[e>>2]&127](k[d>>2]|0)|0)){c=5;break g}}}while(0);if(c)break g}else{do if(i[n+4>>0]|0){if(i[e+43>>0]|0)break;c=kl(n,4)|0;if(c)break g;e=k[f>>2]|0;d=e+43|0;if(!(i[d>>0]|0)){c=k[e+4>>2]|0;uc[k[(k[c>>2]|0)+56>>2]&31](c,(j[e+40>>1]|0)+3|0,1,5)|0;e=k[f>>2]|0}i[d>>0]=1}while(0);if(i[e+46>>0]|0){c=8;break g}d=e+43|0;if((i[d>>0]|0)==0?(E=k[e+4>>2]|0,E=uc[k[(k[E>>2]|0)+56>>2]&31](E,0,1,10)|0,(E|0)!=0):0){c=E;break g}c=e+44|0;i[c>>0]=1;if(!(cw(e+52|0,k[k[e+32>>2]>>2]|0,48)|0))break;if(!(i[d>>0]|0)){d=k[e+4>>2]|0;uc[k[(k[d>>2]|0)+56>>2]&31](d,0,1,9)|0}i[c>>0]=0;c=517;break g}while(0);i[o>>0]=2;c=k[n+24>>2]|0;k[n+36>>2]=c;k[n+32>>2]=c;k[n+28>>2]=c;c=n+72|0;k[c>>2]=0;k[c+4>>2]=0}c=Hg(O)|0;break f}while(0);e=(c|0)==0;break c}while(0);if(!c){c=0;break b}else e=0}while(0);if((P|0)==77){P=0;e=(c|0)==0}if((i[C>>0]|0)==0?(G=k[B>>2]|0,(G|0)!=0):0){k[B>>2]=0;Gg(k[G+68>>2]|0)}if((c&255|0)!=5){P=86;break}if(i[C>>0]|0){P=86;break}if(!(ll(O)|0)){P=86;break}}if((P|0)==86)if(!e){P=96;break}if((i[L>>0]|0)==0?(E=O+40|0,k[E>>2]=(k[E>>2]|0)+1,(i[a+9>>0]|0)!=0):0){i[a+40>>0]=1;E=O+72|0;k[a+44>>2]=k[E>>2];k[E>>2]=a+32}e=M?2:1;i[L>>0]=e;if((e&255)>(l[C>>0]|0))i[C>>0]=e;if(M){e=k[B>>2]|0;k[O+76>>2]=a;d=m[N>>1]|0;j[N>>1]=D?d|32:d&65503;d=e+56|0;E=k[d>>2]|0;if((k[H>>2]|0)!=(l[E+29>>0]<<16|l[E+28>>0]<<24|l[E+30>>0]<<8|l[E+31>>0]|0)){c=Lg(k[e+68>>2]|0)|0;if(!c){c=k[d>>2]|0;P=k[H>>2]|0;i[c+28>>0]=P>>>24;i[c+29>>0]=P>>>16;i[c+30>>0]=P>>>8;i[c+31>>0]=P;c=0;P=96}}else P=96}}}else c=8}else{c=0;P=96}while(0);if((P|0)==96)if((c|0)==0&(b|0)!=0)c=ml(k[O>>2]|0,k[(k[a>>2]|0)+496>>2]|0)|0;r=Q;return c|0}function Eg(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,m=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();p=v;t=v+8|0;k[t>>2]=0;o=d&1;a:do if(!b){k[p>>2]=46865;k[p+4>>2]=10788;gd(11,13600,p);e=11}else{i[a+23>>0]=1;d=k[a+40>>2]|0;do if(!d){n=a+204|0;d=k[n>>2]|0;d=fc[k[8744+132>>2]&63](k[d+40>>2]|0,b,l[d+29>>0]&3)|0;if(!d){g=k[n>>2]|0;if((i[g+29>>0]|0)!=2){f=g+8|0;d=k[f>>2]|0;b:do if(!d)u=11;else{while(1){if((j[d+26>>1]|0)==0?(j[d+24>>1]&4)==0:0)break;d=k[d+36>>2]|0;if(!d){u=11;break b}}k[f>>2]=d;m=d;u=14}while(0);c:do if((u|0)==11?(k[f>>2]=0,h=k[g+4>>2]|0,(h|0)!=0):0){d=h;do{if(!(j[d+26>>1]|0)){m=d;u=14;break c}d=k[d+36>>2]|0}while((d|0)!=0)}while(0);if((u|0)==14?(e=wc[k[g+32>>2]&127](k[g+36>>2]|0,m)|0,!((e|0)==0|(e|0)==5)):0)break;e=fc[k[8744+132>>2]&63](k[g+40>>2]|0,b,2)|0;if(!e){e=7;break}}else e=0}else e=d;g=nl(k[n>>2]|0,b,e)|0;k[c>>2]=g;if(!g)e=7;else{d=g+16|0;e=(o|0)!=0;if(!((k[d>>2]|0)==0|e)){e=a+184|0;k[e>>2]=(k[e>>2]|0)+1;e=0;break a}k[d>>2]=a;do if((b|0)>=0?(q=a+152|0,(((k[2514]|0)/(k[q>>2]|0)|0)+1|0)!=(b|0)):0){if(((i[a+15>>0]|0)==0?!((k[a+24>>2]|0)>>>0>>0|e):0)?(k[k[a+60>>2]>>2]|0)!=0:0){e=k[a+208>>2]|0;if(!e)e=0;else{e=pl(e,b,t)|0;if(e)break;e=k[t>>2]|0}q=a+188|0;k[q>>2]=(k[q>>2]|0)+1;e=ql(g,e)|0;if(!e){e=0;break a}else break}if((k[a+156>>2]|0)>>>0>>0)e=13;else{if(e){e=k[3164]|0;if(e)sc[e&3]();if((k[a+28>>2]|0)>>>0>=b>>>0)gi(k[a+56>>2]|0,b)|0;ol(a,b)|0;e=k[3166]|0;if(e)sc[e&3]()}kw(k[g+4>>2]|0,0,k[q>>2]|0)|0;e=0;break a}}else u=21;while(0);if((u|0)==21){k[p>>2]=46945;k[p+4>>2]=10788;gd(11,13600,p);e=11}rl(g)}}else e=d;while(0);if((k[a+120>>2]|0)==0?(k[(k[a+204>>2]|0)+12>>2]|0)==0:0)sl(a);k[c>>2]=0}while(0);r=v;return e|0}function Fg(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,p=0,q=0,t=0,u=0,v=0,w=0,x=0;w=r;r=r+16|0;if((r|0)>=(s|0))ka();v=w;t=a+4|0;n=k[(k[t>>2]|0)+4>>2]|0;u=k[n>>2]|0;q=a+24|0;m=k[(k[(k[q>>2]|0)+4>>2]|0)+32>>2]|0;n=k[n+32>>2]|0;o=(m|0)<(n|0)?m:n;p=((m|0)<0)<<31>>31;j=xw(m|0,p|0,b|0,0)|0;l=L;if((m|0)==(n|0))a=0;else a=(i[u+15>>0]|0)==0?0:8;a:do if((a|0)==0&(m|0)>0){b=iw(j|0,l|0,m|0,p|0)|0;h=((n|0)<0)<<31>>31;g=(d|0)==0;f=L;a=n;while(1){k[v>>2]=0;d=vw(b|0,f|0,n|0,h|0)|0;if((d|0)!=(((k[2514]|0)>>>0)/(a>>>0)|0|0)){a=Eg(u,d+1|0,v,0)|0;e=k[v>>2]|0;if(!a){a=Lg(e)|0;if(!a){x=ww(b|0,f|0,m|0,p|0)|0;d=k[e+4>>2]|0;a=ww(b|0,f|0,n|0,h|0)|0;pw(d+a|0,c+x|0,o|0)|0;i[k[e+8>>2]>>0]=0;if((b|0)==0&(f|0)==0&g){x=k[(k[(k[q>>2]|0)+4>>2]|0)+44>>2]|0;i[d+(a+28)>>0]=x>>>24;i[d+(a+29)>>0]=x>>>16;i[d+(a+30)>>0]=x>>>8;i[d+(a+31)>>0]=x;a=0}else a=0}}if(e)Gg(e)}else a=0;b=ow(b|0,f|0,n|0,h|0)|0;d=L;if(!((a|0)==0&((d|0)<(l|0)|(d|0)==(l|0)&b>>>0>>0)))break a;f=d;a=k[(k[(k[t>>2]|0)+4>>2]|0)+32>>2]|0}}while(0);r=w;return a|0}function Gg(a){a=a|0;var b=0,c=0,d=0;b=k[a+16>>2]|0;if(!(j[a+24>>1]&64)){tl(a);a=k[b+120>>2]|0}else{d=b+120|0;c=(k[d>>2]|0)+-1|0;k[d>>2]=c;d=b+136|0;k[a+12>>2]=k[d>>2];k[d>>2]=a;a=c}if((a|0)==0?(k[(k[b+204>>2]|0)+12>>2]|0)==0:0)sl(b);return}function Hg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=a+44|0;if(!(k[e>>2]|0)){f=k[a+12>>2]|0;g=k[f+56>>2]|0;b=Lg(k[f+68>>2]|0)|0;if(!b){b=g+0|0;c=44680|0;d=b+16|0;do{i[b>>0]=i[c>>0]|0;b=b+1|0;c=c+1|0}while((b|0)<(d|0));b=a+32|0;i[g+16>>0]=(k[b>>2]|0)>>>8;i[g+17>>0]=(k[b>>2]|0)>>>16;i[g+18>>0]=1;i[g+19>>0]=1;i[g+20>>0]=(k[b>>2]|0)-(k[a+36>>2]|0);i[g+21>>0]=64;i[g+22>>0]=32;i[g+23>>0]=32;b=g+24|0;d=b+76|0;do{i[b>>0]=0;b=b+1|0}while((b|0)<(d|0));ul(f,13);b=a+22|0;j[b>>1]=m[b>>1]|0|2;b=i[a+17>>0]|0;i[g+52>>0]=0;i[g+53>>0]=0;i[g+54>>0]=0;i[g+55>>0]=b;b=i[a+18>>0]|0;i[g+64>>0]=0;i[g+65>>0]=0;i[g+66>>0]=0;i[g+67>>0]=b;k[e>>2]=1;i[g+31>>0]=1;b=0}}else b=0;return b|0}function Ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=k[a+4>>2]|0;k[e+4>>2]=k[a>>2];a=k[e+12>>2]|0;d=k[a+56>>2]|0;a=Lg(k[a+68>>2]|0)|0;if((a|0)==0?(g=b<<2,i[d+(g+36)>>0]=c>>>24,i[d+(g+37)>>0]=c>>>16,i[d+(g+38)>>0]=c>>>8,f=c&255,i[d+(g+39)>>0]=f,(b|0)==7):0)i[e+18>>0]=f;return a|0}function Jg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=a+20|0;b=k[g>>2]|0;c=(b|0)>0;if(c){d=k[a+16>>2]|0;f=0;do{e=k[d+(f<<4)+4>>2]|0;if(e)k[(k[e+4>>2]|0)+4>>2]=k[e>>2];f=f+1|0}while((f|0)!=(b|0));if(c){f=a+16|0;e=0;do{c=k[(k[f>>2]|0)+(e<<4)+12>>2]|0;if(c){vl(c);b=k[g>>2]|0}e=e+1|0}while((e|0)<(b|0))}}b=a+24|0;k[b>>2]=k[b>>2]&-3;wl(a);xl(a);return}function Kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=k[a+4>>2]|0;g=d+22|0;c=m[g>>1]|0;j[g>>1]=(b|0)==1?c|16:c&65519;c=Dg(a,0)|0;do if(!c){d=d+12|0;e=k[(k[d>>2]|0)+56>>2]|0;f=e+18|0;c=i[f>>0]|0;b=b&255;if(c<<24>>24==b<<24>>24?(i[e+19>>0]|0)==c<<24>>24:0){c=0;break}c=Dg(a,2)|0;if(!c){c=Lg(k[(k[d>>2]|0)+68>>2]|0)|0;if(!c){i[f>>0]=b;i[e+19>>0]=b;c=0}}}while(0);j[g>>1]=m[g>>1]&65519;return c|0}function Lg(a){a=a|0;var b=0;b=k[a+16>>2]|0;if((k[b+148>>2]|0)>>>0>(k[b+152>>2]|0)>>>0)a=yl(a)|0;else a=zl(a)|0;return a|0}function Mg(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,t=0,u=0,v=0,w=0,x=0,y=0;x=r;r=r+32|0;if((r|0)>=(s|0))ka();q=x+16|0;t=x;e=x+12|0;h=x+8|0;f=k[a+40>>2]|0;a:do if(!f){w=a+16|0;if((l[w>>0]|0)>=3){b:do if(!(i[a+15>>0]|0)){if(k[a+208>>2]|0){g=a+204|0;e=Al(k[g>>2]|0)|0;k[h>>2]=0;if(!e){d=Eg(a,1,h,0)|0;e=k[h>>2]|0;k[e+12>>2]=0;if(e){f=e;v=9}}else{f=0;v=9}if((v|0)==9){d=Bl(a,e,k[a+24>>2]|0,1)|0;if(f)Gg(f)}if(d)break a;e=k[g>>2]|0;d=k[e>>2]|0;if(!d)break;while(1){Cl(d);d=k[e>>2]|0;if(!d)break b}}f=a+18|0;if((i[f>>0]|0)==0?(k[a+24>>2]|0)!=0:0){g=Eg(a,1,e,0)|0;e=k[e>>2]|0;if(!g){g=Lg(e)|0;if(!g){Dl(e);i[f>>0]=1;g=0}}if(e)Gg(e);if(g){d=g;break a}}if(((b|0)!=0?(i[a+5>>0]|0)!=4:0)?(u=a+64|0,j=k[u>>2]|0,(k[j>>2]|0)!=0):0){i[a+19>>0]=1;f=i[b>>0]|0;if(!(f<<24>>24)){g=0;e=0}else{g=0;e=0;do{g=(f<<24>>24)+g|0;e=e+1|0;f=i[b+e>>0]|0}while(f<<24>>24!=0)}p=a+72|0;h=p;f=k[h>>2]|0;h=k[h+4>>2]|0;if(i[a+8>>0]|0){if((f|0)==0&(h|0)==0){f=0;h=0}else{h=ow(f|0,h|0,-1,-1)|0;f=k[a+148>>2]|0;h=vw(h|0,L|0,f|0,0)|0;h=ow(h|0,L|0,1,0)|0;f=xw(h|0,L|0,f|0,0)|0;h=L}o=p;k[o>>2]=f;k[o+4>>2]=h}y=((k[2514]|0)/(k[a+152>>2]|0)|0)+1|0;i[q>>0]=y>>>24;m=q+1|0;i[m>>0]=y>>>16;n=q+2|0;i[n>>0]=y>>>8;o=q+3|0;i[o>>0]=y;j=yc[k[(k[j>>2]|0)+12>>2]&31](j,q,4,f,h)|0;if(j){d=j;break a}y=k[u>>2]|0;j=ow(f|0,h|0,4,0)|0;h=L;f=yc[k[(k[y>>2]|0)+12>>2]&31](y,b,e,j,h)|0;if(f){d=f;break a}y=k[u>>2]|0;h=ow(j|0,h|0,e|0,((e|0)<0)<<31>>31|0)|0;f=L;i[q>>0]=e>>>24;i[m>>0]=e>>>16;i[n>>0]=e>>>8;i[o>>0]=e;j=yc[k[(k[y>>2]|0)+12>>2]&31](y,q,4,h,f)|0;if(j){d=j;break a}y=k[u>>2]|0;j=ow(h|0,f|0,4,0)|0;i[q>>0]=g>>>24;i[m>>0]=g>>>16;i[n>>0]=g>>>8;i[o>>0]=g;g=yc[k[(k[y>>2]|0)+12>>2]&31](y,q,4,j,L)|0;if(g){d=g;break a}o=k[u>>2]|0;f=ow(h|0,f|0,8,0)|0;f=yc[k[(k[o>>2]|0)+12>>2]&31](o,14808,8,f,L)|0;if(f){d=f;break a}o=e+20|0;f=p;o=ow(k[f>>2]|0,k[f+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;f=p;k[f>>2]=o;k[f+4>>2]=L;f=k[u>>2]|0;f=wc[k[(k[f>>2]|0)+24>>2]&127](f,t)|0;if(f){d=f;break a}o=t;n=k[o+4>>2]|0;f=p;e=k[f>>2]|0;f=k[f+4>>2]|0;if((n|0)>(f|0)|((n|0)==(f|0)?(k[o>>2]|0)>>>0>e>>>0:0)?(d=k[u>>2]|0,d=fc[k[(k[d>>2]|0)+16>>2]&63](d,e,f)|0,(d|0)!=0):0)break a}d=El(a,0)|0;if(d)break a;e=a+204|0;d=Fl(a,Al(k[e>>2]|0)|0)|0;if(d)break a;d=k[e>>2]|0;e=k[d>>2]|0;if(e)do{Cl(e);e=k[d>>2]|0}while((e|0)!=0);e=k[a+24>>2]|0;if(e>>>0>(k[a+32>>2]|0)>>>0){d=Gl(a,e-((e|0)==(((k[2514]|0)/(k[a+152>>2]|0)|0)+1|0)&1)|0)|0;if(!(d|c))v=46}else if(!c)v=46;else break;if((v|0)==46)d=Ng(a,b)|0;if(d)break a}else{d=k[a+88>>2]|0;if(d)do{k[d+16>>2]=1;d=k[d+44>>2]|0}while((d|0)!=0)}while(0);if(!(k[a+208>>2]|0)){i[w>>0]=5;d=0}else d=0}else d=0}else d=f;while(0);r=x;return d|0}function Ng(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=a+60|0;e=k[d>>2]|0;f=k[e>>2]|0;if(!((f|0)!=0?(c=fc[k[f+40>>2]&63](e,21,b)|0,!((c|0)==0|(c|0)==12)):0))if(!(i[a+7>>0]|0)){c=k[d>>2]|0;c=wc[k[(k[c>>2]|0)+20>>2]&127](c,l[a+11>>0]|0)|0}else c=0;return c|0}function Og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=i[a+8>>0]|0;do if(!(d<<24>>24))c=0;else{h=k[a+4>>2]|0;k[h+4>>2]=k[a>>2];if(d<<24>>24==2){e=k[h>>2]|0;f=e+40|0;d=k[f>>2]|0;do if(!d){d=e+16|0;if(((i[d>>0]|0)==2?(i[e+4>>0]|0)!=0:0)?(i[e+5>>0]|0)==1:0){i[d>>0]=1;break}c=e+100|0;k[c>>2]=(k[c>>2]|0)+1;c=Hl(e,l[e+19>>0]|0,1)|0;e=c&255;if((e|0)==10|(e|0)==13){k[f>>2]=c;i[d>>0]=6;g=10}else g=10}else{c=d;g=10}while(0);if((g|0)==10?(c|0)!=0&(b|0)==0:0)break;c=a+20|0;k[c>>2]=(k[c>>2]|0)+-1;i[h+20>>0]=1;c=h+60|0;ji(k[c>>2]|0);k[c>>2]=0}Il(a);c=0}while(0);return c|0}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,m=0,n=0,o=0;o=r;r=r+16|0;if((r|0)>=(s|0))ka();e=o;a:do if((i[a+8>>0]|0)==2){n=k[a+4>>2]|0;k[n+4>>2]=k[a>>2];do if(i[n+17>>0]|0){m=k[n>>2]|0;c=n+8|0;a=k[c>>2]|0;if(a)do{j=a+72|0;i[j>>0]=l[j>>0]&251;a=k[a+8>>2]|0}while((a|0)!=0);if(!(i[n+18>>0]|0)){j=n+44|0;d=k[j>>2]|0;if(d>>>0<2)a=0;else{a=d+-2|0;a=a-((a>>>0)%(((((k[n+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;a=((a+1|0)==(((k[2514]|0)>>>0)/((k[n+32>>2]|0)>>>0)|0|0)?3:2)+a|0}if((a|0)!=(d|0)?(d|0)!=((((k[2514]|0)>>>0)/((k[n+32>>2]|0)>>>0)|0)+1|0):0){f=n+12|0;g=k[(k[f>>2]|0)+56>>2]|0;g=l[g+37>>0]<<16|l[g+36>>0]<<24|l[g+38>>0]<<8|l[g+39>>0];h=Jl(n,d,g)|0;if(h>>>0>d>>>0){k[e>>2]=56396;k[e+4>>2]=10788;gd(11,13600,e);a=11;break a}b:do if(h>>>0>>0){a=k[c>>2]|0;c:do if(a){while(1){if(a)break;a=k[2]|0;if(!a)break c}a=Kl(a,0,0)|0;if(a){c=0;break b}}while(0);do{a=Ll(n,h,d,1)|0;d=d+-1|0;c=(a|0)==0}while(d>>>0>h>>>0&c)}else{c=1;a=0}while(0);if(((a|0)==101|c)&(g|0)!=0){a=Lg(k[(k[f>>2]|0)+68>>2]|0)|0;g=(k[(k[f>>2]|0)+56>>2]|0)+32|0;i[g>>0]=0;i[g+1>>0]=0;i[g+2>>0]=0;i[g+3>>0]=0;g=(k[(k[f>>2]|0)+56>>2]|0)+36|0;i[g>>0]=0;i[g+1>>0]=0;i[g+2>>0]=0;i[g+3>>0]=0;g=k[(k[f>>2]|0)+56>>2]|0;i[g+28>>0]=h>>>24;i[g+29>>0]=h>>>16;i[g+30>>0]=h>>>8;i[g+31>>0]=h;i[n+19>>0]=1;k[j>>2]=h}if(!a)break;Ml(m)|0;break a}k[e>>2]=56391;k[e+4>>2]=10788;gd(11,13600,e);a=11;break a}}while(0);a=k[n>>2]|0;if(i[n+19>>0]|0)k[a+24>>2]=k[n+44>>2];a=Mg(a,b,0)|0}else a=0;while(0);r=o;return a|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;h=r;r=r+16|0;if((r|0)>=(s|0))ka();e=h;g=k[a+4>>2]|0;k[g+4>>2]=k[a>>2];a:do if(!b){b=k[g+8>>2]|0;if(b){while(1){if(b)break;b=k[2]|0;if(!b)break a}b=Kl(b,0,0)|0;d=(b|0)==0;if(!d){d=d?c:0;f=6}}}else{d=c;f=6}while(0);if((f|0)==6)Nl(a,b,d)|0;if((i[a+8>>0]|0)==2){Ml(k[g>>2]|0)|0;if(!(il(g,1,e,0)|0)){b=k[e>>2]|0;d=k[b+56>>2]|0;d=l[d+29>>0]<<16|l[d+28>>0]<<24|l[d+30>>0]<<8|l[d+31>>0];if(!d)d=k[(k[g>>2]|0)+24>>2]|0;k[g+44>>2]=d;if(b)Gg(k[b+68>>2]|0)}i[g+20>>0]=1;d=g+60|0;ji(k[d>>2]|0);k[d>>2]=0}Il(a);r=h;return}function Rg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=a+76|0;if((k[g>>2]|0)==1691352191?(Ol(a)|0)==0:0){Pl(a,0);Ql(a);f=a+20|0;h=a+16|0;b=k[h>>2]|0;if((k[f>>2]|0)>0){e=0;do{d=b+(e<<4)+4|0;c=k[d>>2]|0;if((c|0)!=0?(Rl(c),k[d>>2]=0,(e|0)!=1):0)k[b+(e<<4)+12>>2]=0;e=e+1|0;b=k[h>>2]|0}while((e|0)<(k[f>>2]|0))}b=k[b+28>>2]|0;if(b)vl(b);wl(a);xl(a);e=0;do{b=k[a+(e<<2)+336>>2]|0;if(b)do{d=b;b=k[b+28>>2]|0;if(d)do{Sl(a,d);c=d;d=k[d+8>>2]|0;rg(a,c)}while((d|0)!=0)}while((b|0)!=0);e=e+1|0}while((e|0)!=23);c=a+428|0;b=k[a+436>>2]|0;if(b)do{e=k[b+8>>2]|0;d=k[e+16>>2]|0;if(d)hc[d&31](k[e+8>>2]|0);d=k[e+36>>2]|0;if(d)hc[d&31](k[e+28>>2]|0);d=k[e+56>>2]|0;if(d)hc[d&31](k[e+48>>2]|0);rg(a,e);b=k[b>>2]|0}while((b|0)!=0);Tl(c);e=a+308|0;b=k[a+316>>2]|0;if(b)do{d=k[b+8>>2]|0;c=k[d+12>>2]|0;if(c)hc[c&31](k[d+8>>2]|0);rg(a,d);b=k[b>>2]|0}while((b|0)!=0);Tl(e);k[a+52>>2]=0;c=a+236|0;b=k[c>>2]|0;do if(b){d=b+8|0;if(!(j[d>>1]&9312)){j[d>>1]=1;break}else{Ag(b);b=k[c>>2]|0;break}}else b=0;while(0);Rh(b);d=a+168|0;if((k[d>>2]|0)>0){b=a+172|0;c=0;do{e=k[a>>2]|0;oc[k[e+52>>2]&15](e,k[(k[b>>2]|0)+(c<<2)>>2]|0);c=c+1|0}while((c|0)<(k[d>>2]|0))}else b=a+172|0;rg(a,k[b>>2]|0);k[g>>2]=-1254786768;rg(a,k[(k[h>>2]|0)+28>>2]|0);k[g>>2]=-1623446221;if(i[a+251>>0]|0)$c(k[a+276>>2]|0);$c(a)}return}function Sg(a){a=a|0;var b=0;b=k[a+40>>2]|0;if((b|0)==1369188723|(b|0)==-1108210269)b=Ug(a)|0;else b=0;Ul(a);return b|0}function Tg(a,b){a=a|0;b=b|0;do if(a)if((i[a+65>>0]|0)!=0|(b|0)==3082){Vl(a);a=7;break}else{a=k[a+56>>2]&b;break}else a=b&255;while(0);return a|0}function Ug(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();c=e;d=k[a>>2]|0;Wl(a)|0;if((k[a+76>>2]|0)>-1){mh(a)|0;b=a+44|0;rg(d,k[b>>2]|0);k[b>>2]=0;b=a+88|0;c=j[b>>1]|0;if(c&16)j[b>>1]=c|8}else{b=k[a+80>>2]|0;if((b|0)!=0?(j[a+88>>1]&8)!=0:0){f=a+44|0;g=k[f>>2]|0;k[c>>2]=g;zg(d,b,(g|0)!=0?10344:0,c);rg(d,k[f>>2]|0);k[f>>2]=0}}b=a+44|0;rg(k[a>>2]|0,k[b>>2]|0);k[b>>2]=0;k[a+20>>2]=0;b=a+136|0;k[b>>2]=0;k[b+4>>2]=0;k[a+40>>2]=649915045;r=e;return k[d+56>>2]&k[a+80>>2]|0}function Vg(a){a=a|0;var b=0;if(j[a+8>>1]&9312)Ag(a);b=a+24|0;if(k[b>>2]|0){rg(k[a+32>>2]|0,k[a+20>>2]|0);k[b>>2]=0}k[a+16>>2]=0;return}function Wg(a){a=a|0;var b=0,c=0,d=0;b=a+8|0;if(j[b>>1]&16384){c=a+12|0;d=(k[a>>2]|0)+(k[c>>2]|0)|0;if(!(jh(a,(d|0)<1?1:d,1)|0)){kw((k[a+16>>2]|0)+(k[c>>2]|0)|0,0,k[a>>2]|0)|0;k[c>>2]=(k[c>>2]|0)+(k[a>>2]|0);j[b>>1]=(m[b>>1]|0)&48639;b=0}else b=7}else b=0;return b|0}function Xg(a,b){a=a|0;b=b|0;var c=0;do if(a){c=j[a+8>>1]|0;if((c&514)==514?(i[a+10>>0]|0)==b<<24>>24:0){c=k[a+16>>2]|0;break}if(!(c&1))c=Xl(a,b)|0;else c=0}else c=0;while(0);return c|0}function Yg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;d=j[c>>1]|0;if(!(d&16))if(!(Xg(a,b)|0))c=0;else{d=j[c>>1]|0;e=4}else e=4;if((e|0)==4){c=k[a+12>>2]|0;if(d&16384)c=(k[a>>2]|0)+c|0}return c|0}function Zg(a){a=a|0;var b=0.0,c=0,d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;c=m[a+8>>1]|0;do if(!(c&8)){if(c&4){c=a;b=+((k[c>>2]|0)>>>0)+4294967296.0*+(k[c+4>>2]|0);break}if(!(c&18))b=0.0;else{p[d>>3]=0.0;Yl(k[a+16>>2]|0,d,k[a+12>>2]|0,i[a+10>>0]|0)|0;b=+p[d>>3]}}else b=+p[a>>3];while(0);r=e;return +b}function _g(a){a=a|0;var b=0.0,c=0,d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;c=m[a+8>>1]|0;do if(!(c&4)){if(!(c&8)){if(!(c&18)){a=0;c=0;break}c=d;k[c>>2]=0;k[c+4>>2]=0;Zl(k[a+16>>2]|0,d,k[a+12>>2]|0,i[a+10>>0]|0)|0;c=d;a=k[c+4>>2]|0;c=k[c>>2]|0;break}b=+p[a>>3];if(!(b<=-9223372036854775808.0))if(!(b>=9223372036854775808.0)){a=+W(b)>=1.0?(b>0.0?~~+ia(+V(b/4294967296.0),4294967295.0)>>>0:~~+ga((b-+(~~b>>>0))/4294967296.0)>>>0):0;c=~~b>>>0}else{a=2147483647;c=-1}else{a=-2147483648;c=0}}else{c=a;a=k[c+4>>2]|0;c=k[c>>2]|0}while(0);L=a;r=e;return c|0}function $g(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if((ah(k[a>>2]|0,b,c,d,e)|0)==18){k[a+20>>2]=18;i[a+25>>0]=1;ah(k[a>>2]|0,10096,-1,1,0)|0}return}function ah(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,l=0,n=0,o=0,p=0,q=0,r=0;a:do if(!b){f=a+8|0;if(!(j[f>>1]&9312)){j[f>>1]=1;f=0;break}else{Ag(a);f=0;break}}else{o=a+32|0;f=k[o>>2]|0;if(!f)r=1e9;else r=k[f+88>>2]|0;q=d<<24>>24==0;n=q?16:2;if((c|0)<0){b:do if(d<<24>>24!=1)if((r|0)<0)g=0;else{c=0;while(1){g=c+2|0;if(!((i[b+(c|1)>>0]|i[b+c>>0])<<24>>24)){g=c;break b}if((g|0)>(r|0))break;else c=g}}else{g=b;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;g=g-b&1073741823;g=(g|0)>(r|0)?r+1|0:g}while(0);p=g;l=(n&65535|512)&65535}else{p=c;l=n}do if((e|0)==(-1|0)){if(!(l&512))f=p;else f=p+(d<<24>>24==1?1:2)|0;if((p|0)>(r|0)){f=18;break a}if(kh(a,(f|0)>32?f:32)|0){f=7;break a}pw(k[a+16>>2]|0,b|0,f|0)|0;n=a+8|0;f=l}else{c=(e|0)==75;h=a+8|0;if(!((j[h>>1]&9312)==0?(k[a+24>>2]|0)==0:0))Vg(a);k[a+16>>2]=b;if(!c){k[a+36>>2]=e;n=h;f=(l&65535|((e|0)==0?2048:1024))&65535;break}k[a+20>>2]=b;f=k[o>>2]|0;do if(!f)f=qc[k[8744+48>>2]&127](b)|0;else{if((k[f+276>>2]|0)>>>0<=b>>>0?(k[f+280>>2]|0)>>>0>b>>>0:0){f=m[f+248>>1]|0;break}f=qc[k[8744+48>>2]&127](b)|0}while(0);k[a+24>>2]=f;n=h;f=l}while(0);l=a+12|0;k[l>>2]=p;j[n>>1]=f;b=q?1:d;h=a+10|0;i[h>>0]=b;do if(b<<24>>24!=1&(p|0)>1){c=a+16|0;g=k[c>>2]|0;f=i[g>>0]|0;g=i[g+1>>0]|0;if(!(f<<24>>24==-1&g<<24>>24==-2))if(g<<24>>24!=-1|f<<24>>24!=-2)break;else f=3;else f=2;if(_l(a)|0){f=7;break a}b=(k[l>>2]|0)+-2|0;k[l>>2]=b;e=k[c>>2]|0;qw(e|0,e+2|0,b|0)|0;i[(k[c>>2]|0)+(k[l>>2]|0)>>0]=0;i[(k[c>>2]|0)+((k[l>>2]|0)+1)>>0]=0;j[n>>1]=m[n>>1]|512;i[h>>0]=f}while(0);f=(p|0)>(r|0)?18:0}while(0);return f|0}function bh(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();d=f+8|0;e=f;c=a+8|0;if(!(j[c>>1]&9312))j[c>>1]=1;else Ag(a);p[d>>3]=b;p[e>>3]=+p[d>>3];if(!(+p[d>>3]!=+p[e>>3])){p[a>>3]=b;j[c>>1]=8}r=f;return}function ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=a+8|0;if(!(j[d>>1]&9312))j[d>>1]=1;else Ag(a);k[a>>2]=b;k[a+4>>2]=c;j[d>>1]=4;return}function dh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;if(j[c>>1]&9312)Ag(a);k[a+0>>2]=k[b+0>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2];k[a+12>>2]=k[b+12>>2];k[a+16>>2]=k[b+16>>2];e=m[c>>1]|0;d=e&64511;j[c>>1]=d;if((e&18|0)!=0?(j[b+8>>1]&2048)==0:0){j[c>>1]=d|4096;c=_l(a)|0}else c=0;return c|0}function eh(a,b){a=a|0;b=b|0;var c=0;c=a+8|0;if(!((j[c>>1]&9312)==0?(k[a+24>>2]|0)==0:0))Vg(a);j[c>>1]=16400;k[a+12>>2]=0;k[a>>2]=(b|0)<0?0:b;i[a+10>>0]=1;k[a+16>>2]=0;return}function fh(a){a=a|0;var b=0,c=0;c=r;r=r+16|0;if((r|0)>=(s|0))ka();b=c;if(a)if(!(k[a>>2]|0)){gd(21,47360,b);a=1}else a=0;else{gd(21,47320,b);a=1}r=c;return a|0}function gh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;if((k[a>>2]|0)>1?(c=k[a+72>>2]|0,(c|0)!=0):0)c=wc[c&127](a,b)|0;else{c=wc[k[a+64>>2]&127](a,d)|0;f=+p[d>>3]*864.0e5;a=+W(f)>=1.0?(f>0.0?~~+ia(+V(f/4294967296.0),4294967295.0)>>>0:~~+ga((f-+(~~f>>>0))/4294967296.0)>>>0):0;k[b>>2]=~~f>>>0;k[b+4>>2]=a}r=e;return c|0}function hh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;a:do if((a|0)!=0&(b|0)!=0){f=a+(b*40|0)|0;g=k[a+32>>2]|0;d=g+65|0;e=i[d>>0]|0;if(k[g+520>>2]|0){b=a;while(1){if(k[b+24>>2]|0)rg(g,k[b+20>>2]|0);b=b+40|0;if(b>>>0>=f>>>0)break a}}do{b=a+8|0;if(!(j[b>>1]&9312)){c=a+24|0;if(k[c>>2]|0){rg(g,k[a+20>>2]|0);k[c>>2]=0}}else Vg(a);j[b>>1]=128;a=a+40|0}while(a>>>0>>0);i[d>>0]=e}while(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;e=r;r=r+16|0;if((r|0)>=(s|0))ka();f=e;k[f>>2]=d;d=$k(b,c,f)|0;rg(b,k[a>>2]|0);k[a>>2]=d;r=e;return}function jh(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,l=0,n=0,o=0;i=a+24|0;d=k[i>>2]|0;do if((d|0)<(b|0)){h=(b|0)<32?32:b;b=(d|0)>0;if((c|0)!=0&b?(e=a+16|0,f=k[e>>2]|0,g=a+20|0,(f|0)==(k[g>>2]|0)):0){d=$l(k[a+32>>2]|0,f,h,((h|0)<0)<<31>>31)|0;k[g>>2]=d;k[e>>2]=d;c=0}else{d=a+32|0;if(b){b=a+20|0;rg(k[d>>2]|0,k[b>>2]|0)}else b=a+20|0;d=rh(k[d>>2]|0,h,((h|0)<0)<<31>>31)|0;k[b>>2]=d}if(!d){c=a+8|0;if(!(j[c>>1]&9312))j[c>>1]=1;else Ag(a);k[a+16>>2]=0;k[i>>2]=0;c=7;break}b=k[a+32>>2]|0;do if(!b)b=qc[k[8744+48>>2]&127](d)|0;else{if((k[b+276>>2]|0)>>>0<=d>>>0?(k[b+280>>2]|0)>>>0>d>>>0:0){b=m[b+248>>1]|0;break}b=qc[k[8744+48>>2]&127](d)|0}while(0);k[i>>2]=b;o=21}else o=21;while(0);if((o|0)==21){if(((c|0)!=0?(l=k[a+16>>2]|0,(l|0)!=0):0)?(n=k[a+20>>2]|0,(l|0)!=(n|0)):0)pw(n|0,l|0,k[a+12>>2]|0)|0;b=a+8|0;c=j[b>>1]|0;if(!(c&1024))d=a+16|0;else{d=a+16|0;hc[k[a+36>>2]&31](k[d>>2]|0);c=j[b>>1]|0}k[d>>2]=k[a+20>>2];j[b>>1]=c&58367;c=0}return c|0}function kh(a,b){a=a|0;b=b|0;if((k[a+24>>2]|0)<(b|0))a=jh(a,b,0)|0;else{k[a+16>>2]=k[a+20>>2];a=a+8|0;j[a>>1]=(m[a>>1]|0)&13;a=0}return a|0} -function rq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=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,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;da=r;r=r+192|0;if((r|0)>=(s|0))ka();_=da+48|0;Y=da+24|0;X=da+160|0;E=da+156|0;P=da+152|0;H=da+148|0;S=da+144|0;K=da+140|0;D=da+16|0;ba=da;v=da+128|0;u=da+116|0;w=da+96|0;e=da+88|0;ca=a+8|0;$=k[ca>>2]|0;aa=k[a>>2]|0;k[ba+0>>2]=k[9286];k[ba+4>>2]=k[9287];k[ba+8>>2]=k[9288];a:do switch(b|0){case 8:{v=k[$>>2]|0;z=v+65|0;if(((i[z>>0]|0)==0?(i[$+18>>0]|0)==0:0)?(V=$+64|0,(k[V>>2]|0)==0):0){y=Tq($)|0;if(y){do{}while((Uq(y,61)|0)!=0);Bh(y,24,0,0,0)|0;do if(!(i[z>>0]|0)){h=$+332|0;q=k[h>>2]|0;if((q|0)==0?(k[$+316>>2]|0)==0:0)break;n=y+32|0;o=k[n>>2]|0;if(o)k[(k[y+4>>2]|0)+8>>2]=o;k[(k[y+24>>2]|0)+88>>2]=o+-1;t=v+20|0;b:do if((k[t>>2]|0)>0){c=y+96|0;d=$+328|0;e=v+16|0;f=v+145|0;g=y+4|0;p=0;while(1){u=1<>2]=k[c>>2]|u,_=k[(k[(k[e>>2]|0)+(p<<4)+12>>2]|0)+4>>2]|0,Ch(y,Bh(y,4,p,(k[d>>2]&u|0)!=0&1,k[$+(p<<2)+336>>2]|0)|0,_,-14),(i[f>>0]|0)==0):0)?(J=k[g>>2]|0,(J|0)!=0):0)i[J+(((k[n>>2]|0)+-1|0)*20|0)+3>>0]=1;p=p+1|0;if((p|0)>=(k[t>>2]|0))break b;q=k[h>>2]|0}}while(0);n=$+452|0;if((k[n>>2]|0)>0){h=$+520|0;g=0;do{o=k[(k[(k[h>>2]|0)+(g<<2)>>2]|0)+60>>2]|0;c:do if(!o)o=0;else while(1){if((k[o>>2]|0)==(v|0))break c;o=k[o+24>>2]|0;if(!o){o=0;break}}while(0);Ch(y,Bh(y,146,0,0,0)|0,o,-10);g=g+1|0}while((g|0)<(k[n>>2]|0))}k[n>>2]=0;n=Tq($)|0;h=$+396|0;if((k[h>>2]|0)>0){g=$+400|0;f=0;do{Y=k[g>>2]|0;_=k[Y+(f<<4)+12>>2]|0;Ch(n,Bh(n,145,k[Y+(f<<4)>>2]|0,k[Y+(f<<4)+4>>2]|0,l[Y+(f<<4)+8>>0]|0)|0,_,-2);f=f+1|0}while((f|0)<(k[h>>2]|0))}d=k[$+8>>2]|0;o=k[$+404>>2]|0;if(o){c=(k[$>>2]|0)+16|0;p=d+32|0;q=d+4|0;do{h=k[o+8>>2]|0;n=k[o+12>>2]|0;Vq($,0,h,k[(k[(k[c>>2]|0)+(h<<4)+12>>2]|0)+72>>2]|0,54);h=n+1|0;Bh(d,28,0,n,h)|0;g=k[p>>2]|0;e=n+-1|0;f=k[k[o+4>>2]>>2]|0;Ch(d,Bh(d,97,0,e,0)|0,f,0);f=g+9|0;Bh(d,108,0,f,0)|0;Bh(d,47,0,0,n)|0;Bh(d,78,e,g+7|0,n)|0;e=k[q>>2]|0;if(e)i[e+(((k[p>>2]|0)+-1|0)*20|0)+3>>0]=16;Bh(d,103,0,h,0)|0;Bh(d,47,0,1,n)|0;Bh(d,16,0,f,0)|0;Bh(d,9,0,g+2|0,0)|0;Bh(d,25,0,n,0)|0;Bh(d,61,0,0,0)|0;o=k[o>>2]|0}while((o|0)!=0)}n=k[$+316>>2]|0;if((n|0)!=0?(i[$+23>>0]=0,(k[n>>2]|0)>0):0){h=n+4|0;g=0;do{_=k[h>>2]|0;Wq($,k[_+(g*20|0)>>2]|0,k[_+(g*20|0)+16>>2]|0);g=g+1|0}while((g|0)<(k[n>>2]|0))}Bh(y,16,0,1,0)|0}while(0);if((k[V>>2]|0)==0?(i[z>>0]|0)==0:0){if((k[$+404>>2]|0)!=0?(W=$+68|0,(k[W>>2]|0)==0):0)k[W>>2]=1;Fh(y,$);k[$+12>>2]=101;i[$+16>>0]=0}else Z=48}else Z=48;if((Z|0)==48)k[$+12>>2]=1;k[$+68>>2]=0;k[$+72>>2]=0;k[$+76>>2]=0;k[$+440>>2]=0;k[$+332>>2]=0}break}case 33:{_=a+(aa<<4)+16|0;_q($,0,0,0,k[_>>2]|0);Rk(k[$>>2]|0,k[_>>2]|0,1);break}case 35:{e=k[a+(aa<<4)+20>>2]|0;d=k[a+(aa<<4)+16>>2]|0;if((e|0)==5?(Kc(d,20456,5)|0)==0:0){i[ba>>0]=32;break a}i[ba>>0]=0;k[_>>2]=e;k[_+4>>2]=d;yh($,20464,_);break}case 26:{Zq($,a+(aa+-1<<4)+16|0,a+(aa<<4)+16|0,k[a+(aa+-4<<4)+16>>2]|0,0,0,k[a+(aa+-2<<4)+16>>2]|0);break}case 221:case 218:case 108:case 97:case 85:case 83:case 81:case 68:case 31:case 28:{k[ba>>2]=0;break}case 27:{i[(k[$>>2]|0)+250>>0]=0;Z=a+(aa<<4)+16|0;_=k[Z+4>>2]|0;$=ba;k[$>>2]=k[Z>>2];k[$+4>>2]=_;break}case 222:case 219:case 107:case 84:case 69:case 30:case 29:{k[ba>>2]=1;break}case 32:{_q($,a+(aa+-2<<4)+16|0,a+(aa+-1<<4)+16|0,i[a+(aa<<4)+16>>0]|0,0);break}case 34:{i[ba>>0]=0;break}case 62:{dr($,0,k[a+(aa+-1<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0,k[a+(aa+-2<<4)+16>>2]|0);break}case 63:{er($,0,0,0,0,k[a+(aa<<4)+16>>2]|0,0,0,0,0)|0;break}case 70:{k[ba>>2]=0;break}case 71:{k[ba>>2]=k[a+(aa+-1<<4)+16>>2]&~k[a+(aa<<4)+20>>2]|k[a+(aa<<4)+16>>2];break}case 73:case 72:{k[ba>>2]=0;k[ba+4>>2]=0;break}case 74:{k[ba>>2]=k[a+(aa<<4)+16>>2];k[ba+4>>2]=255;break}case 76:{k[ba>>2]=7;break}case 75:{k[ba>>2]=k[a+(aa<<4)+16>>2]<<8;k[ba+4>>2]=65280;break}case 6:{i[$+450>>0]=1;k[$+440>>2]=0;break}case 5:{i[$+450>>0]=0;k[$+440>>2]=0;break}case 9:{e=k[a+(aa+-1<<4)+16>>2]|0;d=k[$>>2]|0;if((Xq($,22,37104,0,0)|0)==0?(B=Tq($)|0,(B|0)!=0):0){if((e|0)!=7?(C=d+20|0,(k[C>>2]|0)>0):0){e=(e|0)==9?2:1;d=B+96|0;g=0;do{Bh(B,4,g,e,0)|0;k[d>>2]=k[d>>2]|1<>2]|0))}Bh(B,3,0,0,0)|0}break}case 46:{$=k[a+(aa+-3<<4)+16>>2]|0;k[ba>>2]=$;k[ba+4>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0)-$;break}case 279:case 263:case 262:case 261:case 260:case 259:case 258:case 257:case 256:case 247:case 150:case 141:case 131:case 130:case 48:case 45:case 42:case 41:case 40:{Z=a+(aa<<4)+16|0;_=k[Z+4>>2]|0;$=ba;k[$>>2]=k[Z>>2];k[$+4>>2]=_;break}case 44:{e=a+(aa<<4)+16|0;d=k[$+484>>2]|0;if((d|0)!=0?(F=j[d+38>>1]|0,F<<16>>16>=1):0){_=(F<<16>>16)+-1|0;Z=k[d+4>>2]|0;$=$q(k[$>>2]|0,e)|0;k[Z+(_*24|0)+12>>2]=$;$=ar($,Z+(_*24|0)+22|0)|0;i[Z+(_*24|0)+21>>0]=$}break}case 58:{_=cr($,157,k[a+(aa<<4)+16>>2]|0,0,0)|0;k[v>>2]=_;k[v+4>>2]=k[a+(aa+-1<<4)+16>>2];k[v+8>>2]=k[a+(aa<<4)+24>>2];br($,v);break}case 59:{_=a+(aa<<4)+16|0;Z=cr($,97,0,0,_)|0;k[u>>2]=Z;_=k[_>>2]|0;k[u+4>>2]=_;k[u+8>>2]=_+(k[a+(aa<<4)+20>>2]|0);br($,u);break}case 61:{d=k[a+(aa<<4)+16>>2]|0;e=k[$+484>>2]|0;if((e|0)!=0?(q=j[e+38>>1]|0,q<<16>>16>=1):0)i[(k[e+4>>2]|0)+(((q<<16>>16)+-1|0)*24|0)+20>>0]=d;break}case 7:{i[$+450>>0]=2;k[$+440>>2]=0;break}case 13:{k[ba>>2]=7;break}case 117:case 115:case 16:case 15:case 14:{k[ba>>2]=l[a+(aa<<4)+14>>0];break}case 18:case 17:{if((Xq($,22,37136,0,0)|0)==0?(y=Tq($)|0,(y|0)!=0):0)Bh(y,3,1,0,0)|0;break}case 38:{_=k[a+(aa+-2<<4)+16>>2]|0;k[ba>>2]=_;k[ba+4>>2]=(k[$+504>>2]|0)-_+(k[$+508>>2]|0);break}case 39:{u=a+(aa<<4)+16|0;q=k[$>>2]|0;d=k[$+484>>2]|0;d:do if(d){t=d+38|0;if((j[t>>1]|0)>=(k[q+96>>2]|0)){k[_>>2]=k[d>>2];yh($,36528,_);break}p=$q(q,u)|0;if(p){n=j[t>>1]|0;c=n<<16>>16;e:do if(n<<16>>16>0){o=i[9328+(l[p>>0]|0)>>0]|0;g=k[d+4>>2]|0;h=p+1|0;e=0;while(1){f=k[g+(e*24|0)>>2]|0;if(o<<24>>24==(i[9328+(l[f>>0]|0)>>0]|0)?(id(h,f+1|0)|0)==0:0)break;e=e+1|0;if((e|0)>=(c|0))break e}k[_>>2]=p;yh($,36552,_);rg(q,p);break d}else g=k[d+4>>2]|0;while(0);h=d+4|0;do if(!(c&7)){g=wo(q,g,(c*24|0)+192|0,0)|0;if(!g){rg(q,p);break d}else{k[h>>2]=g;n=j[t>>1]|0;break}}while(0);_=n<<16>>16;Z=g+(_*24|0)|0;k[Z+0>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[Z+16>>2]=0;k[Z+20>>2]=0;k[Z>>2]=p;i[g+(_*24|0)+21>>0]=65;i[g+(_*24|0)+22>>0]=1;j[t>>1]=(j[t>>1]|0)+1<<16>>16}}while(0);Y=u;Z=k[Y+4>>2]|0;_=ba;k[_>>2]=k[Y>>2];k[_+4>>2]=Z;k[$+324>>2]=0;break}case 47:{$=k[a+(aa+-5<<4)+16>>2]|0;k[ba>>2]=$;k[ba+4>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0)-$;break}case 49:{$=k[a+(aa+-1<<4)+16>>2]|0;k[ba>>2]=$;k[ba+4>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0)-$;break}case 92:case 54:{Z=a+(aa<<4)+16|0;_=k[Z+4>>2]|0;$=$+320|0;k[$>>2]=k[Z>>2];k[$+4>>2]=_;break}case 57:case 55:{br($,a+(aa<<4)+16|0);break}case 64:{fr($,k[a+(aa+-1<<4)+16>>2]|0);break}case 65:{gr($,0,a+(aa+-2<<4)+16|0,k[a+(aa+-1<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0);break}case 66:{d=k[a+(aa<<4)+16>>2]|0;e=k[$+484>>2]|0;if((e|0)!=0?(p=k[e+16>>2]|0,(p|0)!=0):0)i[p+24>>0]=d;break}case 67:{g=k[$+484>>2]|0;if((g|0)!=0?(A=(j[g+38>>1]|0)+-1|0,h=k[$>>2]|0,f=$q(h,a+(aa<<4)+16|0)|0,(f|0)!=0):0){if(!(hr($,f)|0)){rg(h,f);break a}n=g+4|0;rg(h,k[(k[n>>2]|0)+(A*24|0)+16>>2]|0);k[(k[n>>2]|0)+(A*24|0)+16>>2]=f;e=k[g+8>>2]|0;if(e)do{if((j[k[e+4>>2]>>1]|0)==(A|0))k[k[e+32>>2]>>2]=k[(k[n>>2]|0)+(A*24|0)+16>>2];e=k[e+20>>2]|0}while((e|0)!=0)}break}case 56:{br($,a+(aa+-1<<4)+16|0);break}case 226:{e=aa+-1|0;d=a+(e<<4)+16|0;h=a+(aa<<4)+16|0;g=ur(k[$>>2]|0,0,d,h)|0;n=aa+-3|0;f=cr($,75,k[a+(n<<4)+16>>2]|0,0,0)|0;k[ba>>2]=f;if(!f){Io(k[$>>2]|0,g);g=0}else{g=pr($,0,g,0,0,0,0,0,0,0)|0;k[f+20>>2]=g;g=k[ba>>2]|0;_=g+4|0;k[_>>2]=k[_>>2]|2099200;Dr($,g)}if(k[a+(aa+-2<<4)+16>>2]|0){$=cr($,19,g,0,0)|0;k[ba>>2]=$}k[ba+4>>2]=k[a+(n<<4)+20>>2];c=k[h>>2]|0;if(!c)c=(k[d>>2]|0)+(k[a+(e<<4)+20>>2]|0)|0;else c=c+(k[a+(aa<<4)+20>>2]|0)|0;k[ba+8>>2]=c;break}case 225:{e=aa+-4|0;c=cr($,75,k[a+(e<<4)+16>>2]|0,0,0)|0;k[ba>>2]=c;if(!c){Rk(k[$>>2]|0,k[a+(aa+-1<<4)+16>>2]|0,1);c=0}else{k[c+20>>2]=k[a+(aa+-1<<4)+16>>2];c=k[ba>>2]|0;_=c+4|0;k[_>>2]=k[_>>2]|2099200;Dr($,c)}if(k[a+(aa+-3<<4)+16>>2]|0){$=cr($,19,c,0,0)|0;k[ba>>2]=$}k[ba+4>>2]=k[a+(e<<4)+20>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 227:{c=cr($,20,0,0,0)|0;k[ba>>2]=c;if(!c)Rk(k[$>>2]|0,k[a+(aa+-1<<4)+16>>2]|0,1);else{k[c+20>>2]=k[a+(aa+-1<<4)+16>>2];_=c+4|0;k[_>>2]=k[_>>2]|2099200;Dr($,c)}k[ba+4>>2]=k[a+(aa+-3<<4)+16>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 228:{d=cr($,136,k[a+(aa+-3<<4)+16>>2]|0,0,0)|0;k[ba>>2]=d;if(!d){Sk(k[$>>2]|0,k[a+(aa+-2<<4)+16>>2]|0);Lk(k[$>>2]|0,k[a+(aa+-1<<4)+16>>2]|0)}else{e=k[a+(aa+-1<<4)+16>>2]|0;c=k[a+(aa+-2<<4)+16>>2]|0;if(e)c=qr($,c,e)|0;k[d+20>>2]=c;Dr($,k[ba>>2]|0)}k[ba+4>>2]=k[a+(aa+-4<<4)+16>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 291:case 240:{k[ba>>2]=2;break}case 241:{k[ba>>2]=0;break}case 239:{er($,a+(aa+-7<<4)+16|0,a+(aa+-6<<4)+16|0,ur(k[$>>2]|0,0,a+(aa+-4<<4)+16|0,0)|0,k[a+(aa+-2<<4)+16>>2]|0,k[a+(aa+-10<<4)+16>>2]|0,a+(aa+-11<<4)+16|0,k[a+(aa<<4)+16>>2]|0,0,k[a+(aa+-8<<4)+16>>2]|0)|0;break}case 229:{$=qr($,qr($,k[a+(aa+-4<<4)+16>>2]|0,k[a+(aa+-2<<4)+16>>2]|0)|0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=$;break}case 230:{$=qr($,qr($,0,k[a+(aa+-2<<4)+16>>2]|0)|0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=$;break}case 237:{$=qr($,k[a+(aa+-2<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=$;break}case 238:{$=qr($,0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=$;break}case 245:{c=qr($,0,Ar($,0,a+(aa+-1<<4)+16|0,1)|0)|0;k[ba>>2]=c;rr($,c,a+(aa+-2<<4)+16|0,1);if(c){if((k[c>>2]|0)>(k[(k[$>>2]|0)+96>>2]|0)){k[_>>2]=20632;yh($,34544,_)}i[(k[c+4>>2]|0)+(((k[c>>2]|0)+-1|0)*20|0)+12>>0]=k[a+(aa<<4)+16>>2]}break}case 244:{c=Ar($,0,a+(aa+-1<<4)+16|0,1)|0;c=qr($,k[a+(aa+-4<<4)+16>>2]|0,c)|0;k[ba>>2]=c;rr($,c,a+(aa+-2<<4)+16|0,1);if(c){if((k[c>>2]|0)>(k[(k[$>>2]|0)+96>>2]|0)){k[_>>2]=20632;yh($,34544,_)}i[(k[c+4>>2]|0)+(((k[c>>2]|0)+-1|0)*20|0)+12>>0]=k[a+(aa<<4)+16>>2]}break}case 248:{q=k[a+(aa<<4)+16>>2]|0;n=k[a+(aa+-1<<4)+16>>2]|0;p=k[$>>2]|0;do if((i[p+65>>0]|0)==0?(Ln($)|0)==0:0){h=q+12|0;d=gq(p,k[q+16>>2]|0,k[h>>2]|0)|0;if(!d){if(!n){k[_>>2]=q;k[_+4>>2]=0;yh($,33056,_)}else Er($,k[h>>2]|0);i[$+17>>0]=1;break}if(i[d+51>>0]&3){k[_>>2]=0;yh($,33080,_);break}n=k[d+24>>2]|0;f:do if(n){h=k[p+20>>2]|0;if((h|0)>0){g=k[p+16>>2]|0;o=0;while(1){f=o+1|0;if((k[g+(o<<4)+12>>2]|0)==(n|0)){f=o;break f}if((f|0)<(h|0))o=f;else break}}else f=0}else f=-1e6;while(0);n=k[d+12>>2]|0;h=p+16|0;g=k[(k[h>>2]|0)+(f<<4)>>2]|0;e=(f|0)==1?13184:13208;if(((Xq($,9,e,0,g)|0)==0?(Xq($,(f|0)==0?10:12,k[d>>2]|0,k[n>>2]|0,g)|0)==0:0)?(G=Tq($)|0,(G|0)!=0):0){Z=k[$+408>>2]|0;Z=(Z|0)==0?$:Z;Fr($,f);Y=Z+328|0;k[Y>>2]=k[Y>>2]|1<>0]=l[Z>>0]|1;Z=k[d>>2]|0;k[_>>2]=k[(k[h>>2]|0)+(f<<4)>>2];k[_+4>>2]=e;k[_+8>>2]=Z;Gr($,33160,_);Hr($,f,28536,k[d>>2]|0);Ir($,f);Jr($,k[d+40>>2]|0,f);$=k[d>>2]|0;Ch(G,Bh(G,125,f,0,0)|0,$,0)}}while(0);Io(p,q);break}case 246:{k[ba>>2]=0;k[ba+4>>2]=0;break}case 250:case 249:{c=Tq($)|0;if(c){Bh(c,13,0,0,0)|0;$=c+96|0;k[$>>2]=k[$>>2]|1}break}case 251:{Kr($,a+(aa+-1<<4)+16|0,a+(aa<<4)+16|0,0,0);break}case 252:{Kr($,a+(aa+-3<<4)+16|0,a+(aa+-2<<4)+16|0,a+(aa<<4)+16|0,0);break}case 253:{Kr($,a+(aa+-4<<4)+16|0,a+(aa+-3<<4)+16|0,a+(aa+-1<<4)+16|0,0);break}case 254:{Kr($,a+(aa+-3<<4)+16|0,a+(aa+-2<<4)+16|0,a+(aa<<4)+16|0,1);break}case 255:{Kr($,a+(aa+-4<<4)+16|0,a+(aa+-3<<4)+16|0,a+(aa+-1<<4)+16|0,1);break}case 264:{c=k[a+(aa+-3<<4)+16>>2]|0;e=(k[a+(aa<<4)+16>>2]|0)-c+(k[a+(aa<<4)+20>>2]|0)|0;d=k[a+(aa+-1<<4)+16>>2]|0;Z=$+488|0;w=k[Z>>2]|0;x=k[$>>2]|0;k[Z>>2]=0;g:do if((k[$+64>>2]|0)==0&(w|0)!=0){v=k[w>>2]|0;f=w+20|0;q=k[f>>2]|0;h:do if(q){p=k[x+20>>2]|0;if((p|0)>0){n=k[x+16>>2]|0;g=0;while(1){h=g+1|0;if((k[n+(g<<4)+12>>2]|0)==(q|0))break h;if((h|0)<(p|0))g=h;else{g=h;break}}}else g=0}else g=-1e6;while(0);k[w+28>>2]=d;u=(d|0)==0;if(!u){n=d;do{k[n+4>>2]=w;n=k[n+32>>2]|0}while((n|0)!=0)}k[X>>2]=v;if(!v)n=0;else{n=v;while(1)if(!(i[n>>0]|0))break;else n=n+1|0;n=n-v&1073741823}k[X+4>>2]=n;k[Y>>2]=$;t=x+16|0;q=k[t>>2]|0;k[Y+12>>2]=k[q+(g<<4)>>2];k[Y+4>>2]=k[q+(g<<4)+12>>2];k[Y+16>>2]=10720;k[Y+20>>2]=X;q=(g|0)==1;k[Y+8>>2]=q&1;if(!u)do{if(kr(Y,k[d+8>>2]|0)|0){d=0;e=w;break g}if(Lr(Y,k[d+20>>2]|0)|0){d=0;e=w;break g}if(Mr(Y,k[d+24>>2]|0)|0){d=0;e=w;break g}d=k[d+32>>2]|0}while((d|0)!=0);if(!(Lr(Y,k[w+12>>2]|0)|0)){n=x+145|0;if(!(i[n>>0]|0)){h=Tq($)|0;if(!h){d=0;e=w;break}Z=k[$+408>>2]|0;Fr($,g);Z=((Z|0)==0?$:Z)+328|0;k[Z>>2]=k[Z>>2]|1<>0]=0}else o=0;Z=k[w+4>>2]|0;k[_>>2]=k[(k[t>>2]|0)+(g<<4)>>2];k[_+4>>2]=q?13184:13208;k[_+8>>2]=v;k[_+12>>2]=Z;k[_+16>>2]=o;Gr($,30008,_);rg(x,o);Ir($,g);k[_>>2]=v;Nr(h,g,zh(x,30072,_)|0);if(!(i[n>>0]|0)){d=0;e=w;break}}e=Nk((k[(k[t>>2]|0)+(g<<4)+12>>2]|0)+40|0,v,w)|0;if(e){i[x+65>>0]=1;d=0;break}d=k[f>>2]|0;if((d|0)==(k[w+24>>2]|0)){d=gn(d+8|0,k[w+4>>2]|0,_)|0;if(!d)d=0;else d=k[d+8>>2]|0;d=d+64|0;k[w+32>>2]=k[d>>2];k[d>>2]=w;d=0}else d=0}else{d=0;e=w}}else e=w;while(0);og(x,e);Kk(x,d);break}case 265:{A=a+(aa+-7<<4)+16|0;z=aa+-6|0;B=a+(z<<4)+16|0;h=k[a+(aa+-5<<4)+16>>2]|0;C=aa+-4|0;y=k[a+(C<<4)+16>>2]|0;C=k[a+(C<<4)+20>>2]|0;D=k[a+(aa+-2<<4)+16>>2]|0;E=k[a+(aa<<4)+16>>2]|0;d=k[a+(aa+-8<<4)+16>>2]|0;F=k[$>>2]|0;w=(k[a+(aa+-10<<4)+16>>2]|0)!=0;do if(w)if(!(k[a+(z<<4)+20>>2]|0)){k[Y>>2]=A;if(!D){n=0;o=0;break}else{q=1;Z=483;break}}else{yh($,29664,_);n=0;o=0;break}else{q=jr($,A,B,Y)|0;if((q|0)>-1&(D|0)!=0)Z=483;else{n=0;o=0}}while(0);do if((Z|0)==483){c=F+65|0;if(!(i[c>>0]|0)){u=F+145|0;if((i[u>>0]|0)!=0&(q|0)!=1){Z=D+12|0;rg(F,k[Z>>2]|0);k[Z>>2]=0}t=Or($,D)|0;if((i[u>>0]|0)==0?((t|0)!=0?(k[a+(z<<4)+20>>2]|0)==0:0):0)q=(k[t+68>>2]|0)==(k[(k[F+16>>2]|0)+28>>2]|0)?1:q;if((i[c>>0]|0)==0?(O=k[Y>>2]|0,Z=k[$>>2]|0,k[X>>2]=$,Z=k[Z+16>>2]|0,k[X+12>>2]=k[Z+(q<<4)>>2],k[X+4>>2]=k[Z+(q<<4)+12>>2],k[X+16>>2]=10720,k[X+20>>2]=O,k[X+8>>2]=(q|0)==1&1,(Pr(X,D)|0)==0):0){u=Or($,D)|0;if(!u){if((i[F+144>>0]|0)!=1){n=0;o=0;break}i[F+146>>0]=1;n=0;o=0;break}if(i[u+44>>0]&16){yh($,29712,_);n=0;o=0;break}o=$q(F,O)|0;if(o)if(!(Qr($,o)|0)){x=F+16|0;Z=gn((k[(k[x>>2]|0)+(q<<4)+12>>2]|0)+40|0,o,P)|0;if((Z|0)!=0?(k[Z+8>>2]|0)!=0:0)if(!d){k[_>>2]=O;yh($,29760,_);n=0;break}else{Fr($,q);n=0;break}v=k[u>>2]|0;if(!(Kc(v,25568,7)|0)){yh($,29792,_);n=$+64|0;k[n>>2]=(k[n>>2]|0)+1;n=0;break}p=k[u+12>>2]|0;if((p|0)!=0&(h|0)!=49){k[_>>2]=(h|0)==35?29872:29880;k[_+4>>2]=D;k[_+8>>2]=0;yh($,29832,_);n=0;break}g=(h|0)==49;if((p|0)==0&g){k[_>>2]=D;k[_+4>>2]=0;yh($,29888,_);n=0;break}f=u+68|0;u=k[f>>2]|0;i:do if(u){t=k[F+20>>2]|0;if((t|0)>0){d=k[x>>2]|0;e=0;while(1){c=e+1|0;if((k[d+(e<<4)+12>>2]|0)==(u|0)){c=e;break i}if((c|0)<(t|0))e=c;else break}}else c=0}else c=-1e6;while(0);u=k[x>>2]|0;d=k[u+(c<<4)>>2]|0;if(w)t=k[u+16>>2]|0;else t=d;u=(c|0)==1;if((Xq($,u|w?5:7,o,v,t)|0)==0?(Xq($,18,u?13184:13208,0,d)|0)==0:0){n=rh(F,36,0)|0;if(!n){n=0;break}v=n+0|0;d=v+36|0;do{i[v>>0]=0;v=v+1|0}while((v|0)<(d|0));k[n>>2]=o;o=ph(F,k[D+16>>2]|0)|0;k[n+4>>2]=o;k[n+20>>2]=k[(k[x>>2]|0)+(q<<4)+12>>2];k[n+24>>2]=k[f>>2];i[n+8>>0]=y;i[n+9>>0]=g|(h|0)==35?1:2;o=Rr(F,E,1,0)|0;k[n+12>>2]=o;o=Sr(F,C)|0;k[n+16>>2]=o;k[$+488>>2]=n;o=0}else n=0}else n=0;else{n=0;o=0}}else{n=0;o=0}}else{n=0;o=0}}while(0);rg(F,o);Io(F,D);Mk(F,C);Lk(F,E);if(!(k[$+488>>2]|0))og(F,n);if(!(k[a+(z<<4)+20>>2]|0)){Z=A;_=k[Z+4>>2]|0;$=ba;k[$>>2]=k[Z>>2];k[$+4>>2]=_;break a}else{Z=B;_=k[Z+4>>2]|0;$=ba;k[$>>2]=k[Z>>2];k[$+4>>2]=_;break a}}case 269:case 266:{k[ba>>2]=35;break}case 267:{k[ba>>2]=31;break}case 268:{k[ba>>2]=49;break}case 284:{e=k[$>>2]|0;d=k[a+(aa+-1<<4)+16>>2]|0;c=k[a+(aa<<4)+16>>2]|0;f=i[a+(aa+-5<<4)+16>>0]|0;g=Tr(e,110,a+(aa+-4<<4)+16|0)|0;if(g){$=Ur(e,d,1)|0;k[g+24>>2]=$;$=Rr(e,c,1,0)|0;k[g+20>>2]=$;i[g+1>>0]=f}Sk(e,d);Lk(e,c);k[ba>>2]=g;break}case 271:case 270:{k[ba>>2]=l[a+(aa<<4)+14>>0];k[ba+4>>2]=0;break}case 272:{k[ba>>2]=110;k[ba+4>>2]=k[a+(aa<<4)+16>>2];break}case 296:case 275:{k[ba>>2]=0;break}case 297:case 276:{k[ba>>2]=k[a+(aa<<4)+16>>2];break}case 277:{_=a+(aa+-1<<4)+16|0;$=a+(aa+-2<<4)+16|0;k[(k[(k[$>>2]|0)+36>>2]|0)+32>>2]=k[_>>2];k[(k[$>>2]|0)+36>>2]=k[_>>2];k[ba>>2]=k[$>>2];break}case 278:{$=a+(aa+-1<<4)+16|0;_=k[$>>2]|0;k[_+36>>2]=_;k[ba>>2]=k[$>>2];break}case 282:{yh($,20736,_);break}case 280:{X=a+(aa<<4)+16|0;Y=k[X+4>>2]|0;Z=ba;k[Z>>2]=k[X>>2];k[Z+4>>2]=Y;yh($,20640,_);break}case 283:{yh($,20824,_);break}case 286:{c=k[$>>2]|0;d=k[a+(aa<<4)+16>>2]|0;e=Tr(c,109,a+(aa+-2<<4)+16|0)|0;if(e){$=Rr(c,d,1,0)|0;k[e+20>>2]=$;i[e+1>>0]=10}Lk(c,d);k[ba>>2]=e;break}case 287:{e=k[$>>2]|0;g=k[a+(aa<<4)+16>>2]|0;c=rh(e,40,0)|0;if(!c){Rk(e,g,1);c=0}else{v=c+0|0;d=v+40|0;do{i[v>>0]=0;v=v+1|0}while((v|0)<(d|0));i[c>>0]=119;k[c+8>>2]=g;i[c+1>>0]=10}k[ba>>2]=c;break}case 285:{g=k[$>>2]|0;f=k[a+(aa+-1<<4)+16>>2]|0;e=k[a+(aa<<4)+16>>2]|0;d=i[a+(aa+-4<<4)+16>>0]|0;c=Tr(g,108,a+(aa+-2<<4)+16|0)|0;if(!c)Mk(g,f);else{$=lr(g,e,1)|0;k[c+8>>2]=$;k[c+28>>2]=f;i[c+1>>0]=d}Rk(g,e,1);k[ba>>2]=c;break}case 288:{c=cr($,57,0,0,0)|0;k[ba>>2]=c;if(c)i[c+1>>0]=4;k[ba+4>>2]=k[a+(aa+-3<<4)+16>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 289:{c=cr($,57,0,0,a+(aa+-1<<4)+16|0)|0;k[ba>>2]=c;if(c)i[c+1>>0]=k[a+(aa+-3<<4)+16>>2];k[ba+4>>2]=k[a+(aa+-5<<4)+16>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 290:{k[ba>>2]=1;break}case 292:{k[ba>>2]=3;break}case 293:{d=k[a+(aa<<4)+16>>2]|0;c=k[a+(aa+-1<<4)+16>>2]|0;t=k[$>>2]|0;do if((i[t+65>>0]|0)==0?(Ln($)|0)==0:0){u=k[d+12>>2]|0;q=k[d+16>>2]|0;p=t+20|0;if((k[p>>2]|0)>0){g=(u|0)==0;f=t+16|0;e=0;n=0;do{h=(e|0)<2^e;o=k[f>>2]|0;if(!(!g?(id(k[o+(h<<4)>>2]|0,u)|0)!=0:0)){o=gn((k[o+(h<<4)+12>>2]|0)+40|0,q,H)|0;if(o){n=k[o+8>>2]|0;if(n)break}else n=0}e=e+1|0}while((e|0)<(k[p>>2]|0));if(n){Vr($,n);break}}if(!c){k[_>>2]=d;k[_+4>>2]=0;yh($,29600,_)}else Er($,u);i[$+17>>0]=1}while(0);Io(t,d);break}case 294:{_=k[a+(aa+-3<<4)+16>>2]|0;Wr($,24,29360,_,_,k[a+(aa+-1<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0);break}case 303:{Yr($,a+(aa+-1<<4)+16|0,a+(aa<<4)+16|0);break}case 304:{w=k[a+(aa+-3<<4)+16>>2]|0;u=a+(aa<<4)+16|0;v=k[$>>2]|0;d=v+24|0;e=k[d>>2]|0;do if((i[v+65>>0]|0)==0?(U=Zr($,0,w+8|0)|0,(U|0)!=0):0){o=k[$>>2]|0;x=U+68|0;q=k[x>>2]|0;j:do if(q){p=k[o+20>>2]|0;if((p|0)>0){o=k[o+16>>2]|0;h=0;while(1){n=h+1|0;if((k[o+(h<<4)+12>>2]|0)==(q|0)){n=h;break j}if((n|0)<(p|0))h=n;else break}}else n=0}else n=-1e6;while(0);c=k[(k[v+16>>2]|0)+(n<<4)>>2]|0;k[d>>2]=k[d>>2]|2097152;g=$q(v,u)|0;if(g){if((di(v,g,c)|0)==0?(gq(v,g,c)|0)==0:0){if(_r($,k[U>>2]|0)|0)break;if(Qr($,g)|0)break;o=k[U>>2]|0;if(k[U+12>>2]|0){k[_>>2]=o;yh($,26088,_);break}if(Xq($,26,c,o,0)|0)break;if(mr($,U)|0)break;if(!(i[U+44>>0]&16))f=0;else{o=k[U+60>>2]|0;k:do if(!o)o=0;else while(1){if((k[o>>2]|0)==(v|0))break k;o=k[o+24>>2]|0;if(!o){o=0;break}}while(0);f=(k[(k[k[o+8>>2]>>2]|0)+76>>2]|0)==0?0:o}o=Tq($)|0;if(!o)break;Z=(f|0)!=0;h=$+408|0;Y=k[h>>2]|0;Y=(Y|0)==0?$:Y;Fr($,n);X=Y+328|0;k[X>>2]=k[X>>2]|1<>0]=l[Y>>0]|Z&1;Ir($,n);if(Z){Y=$+72|0;Z=(k[Y>>2]|0)+1|0;k[Y>>2]=Z;Ch(o,Bh(o,97,0,Z,0)|0,g,0);Ch(o,Bh(o,152,Z,0,0)|0,f,-10);Z=k[h>>2]|0;i[((Z|0)==0?$:Z)+21>>0]=1}u=k[U>>2]|0;t=Sn(u,-1)|0;do if((k[d>>2]&524288|0)!=0?(Q=gn((k[x>>2]|0)+56|0,u,S)|0,(Q|0)!=0):0){o=k[Q+8>>2]|0;if(!o)break;h=o;o=0;do{o=$r(k[$>>2]|0,o,k[k[h>>2]>>2]|0)|0;h=k[h+12>>2]|0}while((h|0)!=0);if(!o)break;k[_>>2]=c;k[_+4>>2]=(n|0)==1?13184:13208;k[_+8>>2]=u;k[_+12>>2]=g;k[_+16>>2]=o;Gr($,26120,_);rg(v,o)}while(0);k[_>>2]=c;k[_+4>>2]=(n|0)==1?13184:13208;k[_+8>>2]=g;k[_+12>>2]=g;k[_+16>>2]=g;k[_+20>>2]=g;k[_+24>>2]=g;k[_+28>>2]=t;k[_+32>>2]=u;Gr($,26192,_);if(di(v,26576,c)|0){Z=k[U>>2]|0;k[_>>2]=c;k[_+4>>2]=g;k[_+8>>2]=Z;Gr($,26592,_)}n=as($,U)|0;if(n){k[_>>2]=g;k[_+4>>2]=g;k[_+8>>2]=n;Gr($,26656,_);rg(v,n)}do if(k[d>>2]&524288){n=gn((k[x>>2]|0)+56|0,k[U>>2]|0,_)|0;if(!n)break;n=k[n+8>>2]|0;if(!n)break;do{h=k[n>>2]|0;if((h|0)!=(U|0))bs($,h,k[h>>2]|0);n=k[n+12>>2]|0}while((n|0)!=0)}while(0);bs($,U,g);break}k[_>>2]=g;yh($,26024,_)}else g=0}else g=0;while(0);Io(v,w);rg(v,g);k[d>>2]=e;break}case 295:{_=k[a+(aa<<4)+16>>2]|0;Wr($,25,29176,_,0,0,_);break}case 300:{Xr($,0,0);break}case 302:{Yr($,0,0);break}case 301:{Xr($,a+(aa+-1<<4)+16|0,a+(aa<<4)+16|0);break}case 305:{v=k[$>>2]|0;if((k[$+64>>2]|0)==0?(I=v+65|0,(i[I>>0]|0)==0):0){e=k[$+484>>2]|0;o=k[e+68>>2]|0;l:do if(o){n=k[v+20>>2]|0;if((n|0)>0){h=k[v+16>>2]|0;f=0;while(1){g=f+1|0;if((k[h+(f<<4)+12>>2]|0)==(o|0)){x=f;break l}if((g|0)<(n|0))f=g;else{x=g;break}}}else x=0}else x=-1e6;while(0);c=k[(k[v+16>>2]|0)+(x<<4)>>2]|0;d=(k[e>>2]|0)+16|0;p=(j[e+38>>1]|0)+-1|0;n=k[e+4>>2]|0;o=k[n+(p*24|0)+4>>2]|0;w=di(v,d,c)|0;if(!(Xq($,26,c,k[w>>2]|0,0)|0)){if(!o)q=0;else q=(i[o>>0]|0)==101?0:o;if(i[n+(p*24|0)+23>>0]&1){yh($,25608,_);break a}if(k[e+8>>2]|0){yh($,25640,_);break a}u=v+24|0;if((k[u>>2]&524288|0)!=0?(k[e+16>>2]|0)!=0&(q|0)!=0:0){yh($,25672,_);break a}t=(q|0)!=0;if(!((i[n+(p*24|0)+20>>0]|0)==0|t)){yh($,25736,_);break a}do if(t){k[K>>2]=0;if(cs(v,q,1,65,K)|0){i[I>>0]=1;break a}o=k[K>>2]|0;if(!o){yh($,25792,_);break a}else{Rh(o);break}}while(0);o=k[a+(aa<<4)+16>>2]|0;n=a+(aa<<4)+20|0;h=k[n>>2]|0;if((o|0)!=0?(R=ow(h|0,0,1,0)|0,R=rh(v,R,L)|0,(R|0)!=0):0){pw(R|0,o|0,h|0)|0;i[R+h>>0]=0;o=(k[n>>2]|0)+-1|0;n=k[u>>2]|0;m:do if((o|0)>0){o=R+o|0;do{Y=i[o>>0]|0;if(Y<<24>>24!=59?(i[10368+(Y&255)>>0]&1)==0:0)break m;i[o>>0]=0;o=o+-1|0}while(o>>>0>R>>>0)}while(0);k[u>>2]=k[u>>2]|2097152;Y=k[e+48>>2]|0;k[_>>2]=c;k[_+4>>2]=(x|0)==1?13184:13208;k[_+8>>2]=Y;k[_+12>>2]=R;k[_+16>>2]=Y+1;k[_+20>>2]=d;Gr($,25840,_);rg(v,R);k[u>>2]=n}o=t?3:2;q=Tq($)|0;if(q){n=$+19|0;g=i[n>>0]|0;do if(g<<24>>24){_=g+-1<<24>>24;i[n>>0]=_;h=k[$+((_&255)<<2)+24>>2]|0;if(!(_<<24>>24)){n=k[$+72>>2]|0;Z=663;break}else{d=g+-2<<24>>24;i[n>>0]=d;d=k[$+((d&255)<<2)+24>>2]|0;break}}else{h=$+72|0;n=(k[h>>2]|0)+1|0;k[h>>2]=n;h=n;Z=663}while(0);if((Z|0)==663){d=n+1|0;k[$+72>>2]=d}Bh(q,51,x,h,2)|0;f=q+96|0;k[f>>2]=k[f>>2]|1<>2]|0;n=q+32|0;if(g)i[g+(((k[n>>2]|0)+-1|0)*20|0)+3>>0]=-112;Bh(q,52,x,2,d)|0;n=k[n>>2]|0;if(n>>>0>f>>>0)k[(k[e>>2]|0)+(f*20|0)+8>>2]=n;k[(k[q+24>>2]|0)+88>>2]=n+-1;ds($,h);ds($,d)}bs($,w,k[w>>2]|0)}}break}case 306:{t=k[$>>2]|0;i[t+250>>0]=0;c=k[a+(aa<<4)+16>>2]|0;u=t+65|0;do if((i[u>>0]|0)==0?(N=Zr($,0,c+8|0)|0,(N|0)!=0):0){if(i[N+44>>0]&16){yh($,25400,_);break}if(k[N+12>>2]|0){yh($,25440,_);break}if(!(_r($,k[N>>2]|0)|0)){n=k[N+68>>2]|0;n:do if(n){h=k[t+20>>2]|0;if((h|0)>0){g=k[t+16>>2]|0;o=0;while(1){f=o+1|0;if((k[g+(o<<4)+12>>2]|0)==(n|0)){f=o;break n}if((f|0)<(h|0))o=f;else break}}else f=0}else f=-1e6;while(0);q=rh(t,76,0)|0;if(q){v=q+0|0;d=v+76|0;do{i[v>>0]=0;v=v+1|0}while((v|0)<(d|0));k[$+484>>2]=q;h=q+40|0;j[h>>1]=1;o=j[N+38>>1]|0;g=q+38|0;j[g>>1]=o;o=((((o<<16>>16)+-1|0)/8|0)*192|0)+192|0;n=rh(t,o,0)|0;if(n)kw(n|0,0,o|0)|0;o=q+4|0;k[o>>2]=n;k[_>>2]=k[N>>2];_=zh(t,25472,_)|0;k[q>>2]=_;n=k[o>>2]|0;if((n|0)==0|(_|0)==0){i[u>>0]=1;break}pw(n|0,k[N+4>>2]|0,(j[g>>1]|0)*24|0)|0;if((j[g>>1]|0)>0){n=0;do{_=k[o>>2]|0;Z=_+(n*24|0)|0;Y=ph(t,k[Z>>2]|0)|0;k[Z>>2]=Y;_=_+(n*24|0)+4|0;n=n+1|0;k[_+0>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0}while((n|0)<(j[g>>1]|0))}k[q+68>>2]=k[(k[t+16>>2]|0)+(f<<4)+12>>2];k[q+48>>2]=k[N+48>>2];j[h>>1]=1;_=k[$+408>>2]|0;Fr($,f);_=((_|0)==0?$:_)+328|0;k[_>>2]=k[_>>2]|1<>2]|0);o=k[$+484>>2]|0;if(o){c=k[$>>2]|0;n=k[o+68>>2]|0;o:do if(n){h=k[c+20>>2]|0;if((h|0)>0){f=k[c+16>>2]|0;e=0;while(1){g=e+1|0;if((k[f+(e<<4)+12>>2]|0)==(n|0)){g=e;break o}if((g|0)<(h|0))e=g;else break}}else g=0}else g=-1e6;while(0);e=o+44|0;i[e>>0]=l[e>>0]|16;k[o+52>>2]=0;fs(c,o,$q(c,d)|0);fs(c,o,0);fs(c,o,ph(c,k[o>>2]|0)|0);k[$+500>>2]=(k[d>>2]|0)+(k[a+(aa<<4)+20>>2]|0)-(k[$+496>>2]|0);e=k[o+56>>2]|0;if(e)Xq($,29,k[o>>2]|0,k[e>>2]|0,k[(k[(k[$>>2]|0)+16>>2]|0)+(g<<4)>>2]|0)|0}break}case 322:{k[ba>>2]=0;break}case 324:case 323:{k[ba>>2]=k[a+(aa<<4)+16>>2];break}case 325:{$=hs($,0,a+(aa+-5<<4)+16|0,k[a+(aa+-4<<4)+16>>2]|0,k[a+(aa+-1<<4)+16>>2]|0)|0;k[ba>>2]=$;break}case 326:{$=hs($,k[a+(aa+-7<<4)+16>>2]|0,a+(aa+-5<<4)+16|0,k[a+(aa+-4<<4)+16>>2]|0,k[a+(aa+-1<<4)+16>>2]|0)|0;k[ba>>2]=$;break}case 314:{gs($);k[$+512>>2]=0;k[$+516>>2]=0;break}case 318:case 317:case 316:{e=$+512|0;d=k[e>>2]|0;c=k[a+(aa<<4)+16>>2]|0;if(!d){k[e>>2]=c;c=k[a+(aa<<4)+20>>2]|0}else c=c+(k[a+(aa<<4)+20>>2]|0)-d|0;k[$+516>>2]=c;break}case 77:{k[ba>>2]=8;break}case 78:{k[ba>>2]=9;break}case 79:{k[ba>>2]=6;break}case 80:{k[ba>>2]=0;break}case 103:case 100:case 98:case 82:{k[ba>>2]=k[a+(aa<<4)+16>>2];break}case 86:{k[ba+4>>2]=0;k[ba>>2]=0;break}case 87:{Z=a+(aa+-1<<4)+16|0;_=k[Z+4>>2]|0;$=ba;k[$>>2]=k[Z>>2];k[$+4>>2]=_;break}case 90:{k[$+324>>2]=0;break}case 99:{k[ba>>2]=10;break}case 101:{i[ba>>0]=10;break}case 102:{i[ba>>0]=k[a+(aa<<4)+16>>2];break}case 104:{k[ba>>2]=4;break}case 105:{k[ba>>2]=5;break}case 106:{ir($,k[a+(aa<<4)+16>>2]|0,0,k[a+(aa+-1<<4)+16>>2]|0);break}case 93:{dr($,k[a+(aa+-3<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0,k[a+(aa+-2<<4)+16>>2]|0,0);break}case 94:{er($,0,0,0,k[a+(aa+-2<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0,0,0,0,0)|0;break}case 95:{fr($,k[a+(aa+-2<<4)+16>>2]|0);break}case 96:{gr($,k[a+(aa+-6<<4)+16>>2]|0,a+(aa+-3<<4)+16|0,k[a+(aa+-2<<4)+16>>2]|0,k[a+(aa+-1<<4)+16>>2]|0);d=k[a+(aa<<4)+16>>2]|0;e=k[$+484>>2]|0;if((e|0)!=0?(g=k[e+16>>2]|0,(g|0)!=0):0)i[g+24>>0]=d;break}case 109:{c=aa+-7|0;h=a+(aa+-3<<4)+16|0;g=a+(aa+-2<<4)+16|0;u=k[a+(aa<<4)+16>>2]|0;o=k[a+(aa+-6<<4)+16>>2]|0;n=k[a+(aa+-4<<4)+16>>2]|0;k[E>>2]=0;t=k[$>>2]|0;if((k[$+440>>2]|0)>0){yh($,35440,_);Rk(t,u,1);break a}Zq($,h,g,o,1,0,n);e=k[$+484>>2]|0;if((e|0)!=0?(k[$+64>>2]|0)==0:0){jr($,h,g,E)|0;o=k[e+68>>2]|0;p:do if(o){h=k[t+20>>2]|0;if((h|0)>0){g=k[t+16>>2]|0;f=0;while(1){n=f+1|0;if((k[g+(f<<4)+12>>2]|0)==(o|0)){n=f;break p}if((n|0)<(h|0))f=n;else break}}else n=0}else n=-1e6;while(0);_=k[E>>2]|0;Z=k[$>>2]|0;k[X>>2]=$;Z=k[Z+16>>2]|0;k[X+12>>2]=k[Z+(n<<4)>>2];k[X+4>>2]=k[Z+(n<<4)+12>>2];k[X+16>>2]=35480;k[X+20>>2]=_;k[X+8>>2]=(n|0)==1&1;if(kr(X,u)|0){Rk(t,u,1);break a}_=lr(t,u,1)|0;k[e+12>>2]=_;Rk(t,u,1);if(i[t+65>>0]|0)break a;if(!(i[t+145>>0]|0))mr($,e)|0;g=$+504|0;f=k[g>>2]|0;g=k[g+4>>2]|0;_=Y;k[_>>2]=f;k[_+4>>2]=g;_=i[f>>0]|0;if(!(_<<24>>24==59|_<<24>>24==0)){f=f+g|0;k[Y>>2]=f}h=Y+4|0;k[h>>2]=0;n=k[a+(c<<4)+16>>2]|0;g=f-n|0;do{_=g;g=g+-1|0;e=n+g|0;if((_|0)<=0)break}while((i[10368+(l[e>>0]|0)>>0]&1)!=0);k[Y>>2]=e;k[h>>2]=1;_q($,0,Y,0,0);break a}Rk(t,u,1);break}case 110:{ir($,k[a+(aa<<4)+16>>2]|0,1,k[a+(aa+-1<<4)+16>>2]|0);break}case 111:{k[w+0>>2]=k[5124];k[w+4>>2]=k[5125];k[w+8>>2]=k[5126];k[w+12>>2]=k[5127];k[w+16>>2]=k[5128];_=a+(aa<<4)+16|0;nr($,k[_>>2]|0,w)|0;Rk(k[$>>2]|0,k[_>>2]|0,1);break}case 112:{o=k[a+(aa<<4)+16>>2]|0;do if(o){k[o+68>>2]=k[a+(aa+-1<<4)+16>>2];e=k[o+52>>2]|0;if(e){f=128;g=1;h=o;n=0;while(1){k[h+56>>2]=n;Y=h+6|0;Z=m[Y>>1]|64;j[Y>>1]=Z;f=Z&f;if(!e)break;Z=e;e=k[e+52>>2]|0;g=g+1|0;n=h;h=Z}if(f){$=o+6|0;j[$>>1]=m[$>>1]|256;break}Z=k[(k[$>>2]|0)+104>>2]|0;if((Z|0)>0&(g|0)>(Z|0))yh($,20520,_)}}else Vn(k[$>>2]|0,k[a+(aa+-1<<4)+16>>2]|0);while(0);k[ba>>2]=o;break}case 119:case 113:{k[ba>>2]=k[a+(aa<<4)+16>>2];break}case 114:{c=k[a+(aa<<4)+16>>2]|0;do if(c){if(k[c+52>>2]|0){k[e+4>>2]=0;c=pr($,0,or($,0,0,0,e,c,0,0)|0,0,0,0,0,0,0,0)|0;if(!c){Z=192;break}}_=k[a+(aa+-1<<4)+16>>2]|0;i[c+4>>0]=_;k[c+52>>2]=k[a+(aa+-2<<4)+16>>2];if((_|0)!=116)i[$+22>>0]=1}else Z=192;while(0);if((Z|0)==192){Rk(k[$>>2]|0,k[a+(aa+-2<<4)+16>>2]|0,1);c=0}k[ba>>2]=c;break}case 116:{k[ba>>2]=116;break}case 169:{c=k[a+(aa+-5<<4)+16>>2]|0;if(c){_=$+532|0;k[c+4>>2]=k[_>>2];k[_>>2]=c;i[$+449>>0]=1}_=a+(aa+-2<<4)+16|0;tr($,k[_>>2]|0,a+(aa+-1<<4)+16|0);wr($,k[_>>2]|0,k[a+(aa<<4)+16>>2]|0);break}case 172:{e=k[a+(aa+-7<<4)+16>>2]|0;if(e){Z=$+532|0;k[e+4>>2]=k[Z>>2];k[Z>>2]=e;i[$+449>>0]=1}f=a+(aa+-4<<4)+16|0;tr($,k[f>>2]|0,a+(aa+-3<<4)+16|0);g=a+(aa+-1<<4)+16|0;e=k[g>>2]|0;if(e){if((k[e>>2]|0)>(k[(k[$>>2]|0)+96>>2]|0)){k[_>>2]=20560;yh($,34544,_);e=k[g>>2]|0}}else e=0;xr($,k[f>>2]|0,e,k[a+(aa<<4)+16>>2]|0,l[a+(aa+-5<<4)+16>>0]|0);break}case 176:{c=k[a+(aa+-6<<4)+16>>2]|0;if(c){_=$+532|0;k[c+4>>2]=k[_>>2];k[_>>2]=c;i[$+449>>0]=1}yr($,k[a+(aa+-3<<4)+16>>2]|0,0,k[a+(aa+-2<<4)+16>>2]|0,l[a+(aa+-5<<4)+16>>0]|0);break}case 173:{_=qr($,k[a+(aa+-4<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=_;rr($,_,a+(aa+-2<<4)+16|0,1);break}case 174:{_=qr($,0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=_;rr($,_,a+(aa+-2<<4)+16|0,1);break}case 175:{c=k[a+(aa+-5<<4)+16>>2]|0;if(c){_=$+532|0;k[c+4>>2]=k[_>>2];k[_>>2]=c;i[$+449>>0]=1}yr($,k[a+(aa+-2<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0,k[a+(aa+-1<<4)+16>>2]|0,l[a+(aa+-4<<4)+16>>0]|0);break}case 181:{$=zr(k[$>>2]|0,k[a+(aa+-2<<4)+16>>2]|0,a+(aa<<4)+16|0)|0;k[ba>>2]=$;break}case 182:{$=zr(k[$>>2]|0,0,a+(aa<<4)+16|0)|0;k[ba>>2]=$;break}case 183:{$=a+(aa<<4)+16|0;k[ba+0>>2]=k[$+0>>2];k[ba+4>>2]=k[$+4>>2];k[ba+8>>2]=k[$+8>>2];break}case 177:{i[ba>>0]=i[a+(aa<<4)+16>>0]|0;break}case 178:{i[ba>>0]=5;break}case 184:{k[ba>>2]=k[a+(aa+-1<<4)+16>>2];k[ba+4>>2]=k[a+(aa+-2<<4)+16>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 191:case 190:case 185:{_=a+(aa<<4)+16|0;$=cr($,l[a+(aa<<4)+14>>0]|0,0,0,_)|0;k[ba>>2]=$;$=k[_>>2]|0;k[ba+4>>2]=$;k[ba+8>>2]=$+(k[a+(aa<<4)+20>>2]|0);break}case 187:case 186:{_=a+(aa<<4)+16|0;$=cr($,27,0,0,_)|0;k[ba>>2]=$;$=k[_>>2]|0;k[ba+4>>2]=$;k[ba+8>>2]=$+(k[a+(aa<<4)+20>>2]|0);break}case 188:{Z=a+(aa+-2<<4)+16|0;_=a+(aa<<4)+16|0;$=cr($,122,cr($,27,0,0,Z)|0,cr($,27,0,0,_)|0,0)|0;k[ba>>2]=$;k[ba+4>>2]=k[Z>>2];k[ba+8>>2]=(k[_>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 189:{Z=a+(aa+-4<<4)+16|0;_=a+(aa<<4)+16|0;$=cr($,122,cr($,27,0,0,Z)|0,cr($,122,cr($,27,0,0,a+(aa+-2<<4)+16|0)|0,cr($,27,0,0,_)|0,0)|0,0)|0;k[ba>>2]=$;k[ba+4>>2]=k[Z>>2];k[ba+8>>2]=(k[_>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 192:{u=a+(aa<<4)+16|0;t=a+(aa<<4)+20|0;do if(((k[t>>2]|0)>>>0>1?(z=k[u>>2]|0,(i[z>>0]|0)==35):0)?((l[z+1>>0]|0)+-48|0)>>>0<10:0){if(!(i[$+18>>0]|0)){k[_>>2]=u;yh($,20432,_);k[ba>>2]=0;break}h=cr($,159,0,0,u)|0;k[ba>>2]=h;if(h)In((k[u>>2]|0)+1|0,h+28|0)|0}else Z=298;while(0);q:do if((Z|0)==298?(M=cr($,135,0,0,u)|0,k[ba>>2]=M,T=k[u>>2]|0,k[ba+4>>2]=T,k[ba+8>>2]=T+(k[t>>2]|0),T=k[$>>2]|0,(M|0)!=0):0){w=k[M+8>>2]|0;h=w+1|0;do if(i[h>>0]|0){v=(w|0)==0;if(v)x=0;else{o=w;while(1)if(!(i[o>>0]|0))break;else o=o+1|0;x=o-w&1073741823}r:do if((i[w>>0]|0)==63){Y=Zl(h,D,x+-1|0,1)|0;f=D;g=k[f>>2]|0;f=k[f+4>>2]|0;o=g&65535;j[M+32>>1]=o;h=k[T+124>>2]|0;Z=((h|0)<0)<<31>>31;if((f|0)<0|(f|0)==0&g>>>0<1|(Y|0)!=0|((f|0)>(Z|0)|(f|0)==(Z|0)&g>>>0>h>>>0)){k[_>>2]=h;yh($,33296,_);o=0}h=$+440|0;Z=k[h>>2]|0;Y=((Z|0)<0)<<31>>31;if((f|0)>(Y|0)|(f|0)==(Y|0)&g>>>0>Z>>>0)k[h>>2]=g}else{h=k[$+444>>2]|0;s:do if((h|0)>0){g=k[$+472>>2]|0;o=0;e=0;while(1){f=k[g+(o<<2)>>2]|0;if((f|0)!=0?(dw(f,w)|0)==0:0)break;e=e+1<<16>>16;o=e<<16>>16;if((o|0)>=(h|0)){Z=315;break s}}o=o+1&65535;h=M+32|0;j[h>>1]=o;if(o<<16>>16)break r}else Z=315;while(0);if((Z|0)==315)h=M+32|0;Z=$+440|0;o=(k[Z>>2]|0)+1|0;k[Z>>2]=o;o=o&65535;j[h>>1]=o}while(0);f=o<<16>>16;if(o<<16>>16>0){o=$+444|0;if((f|0)>(k[o>>2]|0)){h=$+472|0;g=wo(T,k[h>>2]|0,f<<2,0)|0;if(!g)break q;k[h>>2]=g;Z=k[o>>2]|0;kw(g+(Z<<2)|0,0,f-Z<<2|0)|0;k[o>>2]=f}if((i[w>>0]|0)==63){h=f+-1|0;if(!(k[(k[$+472>>2]|0)+(h<<2)>>2]|0))o=0;else break}else{o=f+-1|0;h=o;o=k[(k[$+472>>2]|0)+(o<<2)>>2]|0}g=$+472|0;rg(T,o);if(!v?(n=ow(x|0,0,1,0)|0,n=rh(T,n,L)|0,(n|0)!=0):0){pw(n|0,w|0,x|0)|0;i[n+x>>0]=0}else n=0;k[(k[g>>2]|0)+(h<<2)>>2]=n}}else{Y=$+440|0;Z=(k[Y>>2]|0)+1|0;k[Y>>2]=Z;j[M+32>>1]=Z}while(0);if((k[$+64>>2]|0)==0?(k[$+440>>2]|0)>(k[T+124>>2]|0):0)yh($,33344,_)}while(0);$=k[u>>2]|0;k[ba+4>>2]=$;k[ba+8>>2]=$+(k[t>>2]|0);break}case 196:{_=a+(aa+-3<<4)+16|0;$=Br($,0,_)|0;k[ba>>2]=$;k[ba+4>>2]=k[_>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 197:{_=a+(aa<<4)+16|0;$=Br($,0,_)|0;k[ba>>2]=$;$=k[_>>2]|0;k[ba+4>>2]=$;k[ba+8>>2]=$+(k[a+(aa<<4)+20>>2]|0);break}case 193:{Z=aa+-2|0;_=a+(aa<<4)+16|0;$=Ar($,k[a+(Z<<4)+16>>2]|0,_,1)|0;k[ba>>2]=$;k[ba+4>>2]=k[a+(Z<<4)+20>>2];k[ba+8>>2]=(k[_>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 194:{$=cr($,38,k[a+(aa+-3<<4)+16>>2]|0,0,a+(aa+-1<<4)+16|0)|0;k[ba>>2]=$;k[ba+4>>2]=k[a+(aa+-5<<4)+16>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 195:{e=a+(aa+-1<<4)+16|0;c=k[e>>2]|0;if(c){if((k[c>>2]|0)>(k[(k[$>>2]|0)+112>>2]|0)){k[_>>2]=a+(aa+-4<<4)+16;yh($,20576,_);c=k[e>>2]|0}}else c=0;_=a+(aa+-4<<4)+16|0;c=Br($,c,_)|0;k[ba>>2]=c;k[ba+4>>2]=k[_>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);if(!((c|0)==0?1:(j[a+(aa+-2<<4)+16>>1]|0)==0)){$=c+4|0;k[$>>2]=k[$>>2]|16}break}case 205:case 204:case 203:case 202:case 201:case 200:case 199:case 198:{_=aa+-2|0;$=cr($,l[a+(aa+-1<<4)+14>>0]|0,k[a+(_<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0,0)|0;k[ba>>2]=$;k[ba+4>>2]=k[a+(_<<4)+20>>2];k[ba+8>>2]=k[a+(aa<<4)+24>>2];break}case 206:{Z=a+(aa<<4)+16|0;_=k[Z+4>>2]|0;$=ba;k[$>>2]=k[Z>>2];k[$+4>>2]=_;k[ba+8>>2]=0;break}case 207:{Z=a+(aa<<4)+16|0;_=k[Z+4>>2]|0;$=ba;k[$>>2]=k[Z>>2];k[$+4>>2]=_;k[ba+8>>2]=1;break}case 208:{e=aa+-2|0;_=aa+-1|0;c=Br($,qr($,qr($,0,k[a+(aa<<4)+16>>2]|0)|0,k[a+(e<<4)+16>>2]|0)|0,a+(_<<4)+16|0)|0;k[ba>>2]=c;if(k[a+(_<<4)+24>>2]|0){c=cr($,19,c,0,0)|0;k[ba>>2]=c}k[ba+4>>2]=k[a+(e<<4)+20>>2];k[ba+8>>2]=k[a+(aa<<4)+24>>2];if(c){$=c+4|0;k[$>>2]=k[$>>2]|128}break}case 210:{_=aa+-1|0;$=cr($,l[a+(aa<<4)+14>>0]|0,k[a+(_<<4)+16>>2]|0,0,0)|0;k[ba>>2]=$;k[ba+4>>2]=k[a+(_<<4)+20>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 209:{e=aa+-4|0;_=aa+-3|0;c=Br($,qr($,qr($,qr($,0,k[a+(aa+-2<<4)+16>>2]|0)|0,k[a+(e<<4)+16>>2]|0)|0,k[a+(aa<<4)+16>>2]|0)|0,a+(_<<4)+16|0)|0;k[ba>>2]=c;if(k[a+(_<<4)+24>>2]|0){c=cr($,19,c,0,0)|0;k[ba>>2]=c}k[ba+4>>2]=k[a+(e<<4)+20>>2];k[ba+8>>2]=k[a+(aa<<4)+24>>2];if(c){$=c+4|0;k[$>>2]=k[$>>2]|128}break}case 223:{e=a+(aa+-1<<4)+16|0;c=k[e>>2]|0;do if(c){if((k[c>>2]|0)==1){_=k[c+4>>2]|0;c=k[_>>2]|0;k[_>>2]=0;Sk(k[$>>2]|0,k[e>>2]|0);if(c){_=c+4|0;k[_>>2]=k[_>>2]&-769|512}$=cr($,(k[a+(aa+-3<<4)+16>>2]|0)!=0?78:79,k[a+(aa+-4<<4)+16>>2]|0,c,0)|0;k[ba>>2]=$;break}c=cr($,75,k[a+(aa+-4<<4)+16>>2]|0,0,0)|0;k[ba>>2]=c;if(!c){Sk(k[$>>2]|0,k[e>>2]|0);c=0}else{k[c+20>>2]=k[e>>2];c=k[ba>>2]|0;Dr($,c)}if(k[a+(aa+-3<<4)+16>>2]|0){$=cr($,19,c,0,0)|0;k[ba>>2]=$}}else{_=cr($,132,0,0,20616+(k[a+(aa+-3<<4)+16>>2]<<3)|0)|0;k[ba>>2]=_;Lk(k[$>>2]|0,k[a+(aa+-4<<4)+16>>2]|0)}while(0);k[ba+4>>2]=k[a+(aa+-4<<4)+20>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 211:{_=aa+-2|0;$=cr($,77,k[a+(_<<4)+16>>2]|0,0,0)|0;k[ba>>2]=$;k[ba+4>>2]=k[a+(_<<4)+20>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 212:{Y=aa+-2|0;Z=a+(aa<<4)+16|0;_=cr($,73,k[a+(Y<<4)+16>>2]|0,k[Z>>2]|0,0)|0;k[ba>>2]=_;k[ba+4>>2]=k[a+(Y<<4)+20>>2];k[ba+8>>2]=k[a+(aa<<4)+24>>2];Cr($,k[Z>>2]|0,_,76);break}case 213:{Y=aa+-3|0;Z=a+(aa<<4)+16|0;_=cr($,148,k[a+(Y<<4)+16>>2]|0,k[Z>>2]|0,0)|0;k[ba>>2]=_;k[ba+4>>2]=k[a+(Y<<4)+20>>2];k[ba+8>>2]=k[a+(aa<<4)+24>>2];Cr($,k[Z>>2]|0,_,77);break}case 215:case 214:{_=aa+-1|0;$=cr($,l[a+(_<<4)+14>>0]|0,k[a+(aa<<4)+16>>2]|0,0,0)|0;k[ba>>2]=$;k[ba+4>>2]=k[a+(_<<4)+16>>2];k[ba+8>>2]=k[a+(aa<<4)+24>>2];break}case 216:{$=cr($,157,k[a+(aa<<4)+16>>2]|0,0,0)|0;k[ba>>2]=$;k[ba+4>>2]=k[a+(aa+-1<<4)+16>>2];k[ba+8>>2]=k[a+(aa<<4)+24>>2];break}case 217:{$=cr($,158,k[a+(aa<<4)+16>>2]|0,0,0)|0;k[ba>>2]=$;k[ba+4>>2]=k[a+(aa+-1<<4)+16>>2];k[ba+8>>2]=k[a+(aa<<4)+24>>2];break}case 220:{d=qr($,qr($,0,k[a+(aa+-2<<4)+16>>2]|0)|0,k[a+(aa<<4)+16>>2]|0)|0;e=aa+-4|0;c=cr($,74,k[a+(e<<4)+16>>2]|0,0,0)|0;k[ba>>2]=c;if(!c)Sk(k[$>>2]|0,d);else k[c+20>>2]=d;if(k[a+(aa+-3<<4)+16>>2]|0){$=cr($,19,k[ba>>2]|0,0,0)|0;k[ba>>2]=$}k[ba+4>>2]=k[a+(e<<4)+20>>2];k[ba+8>>2]=k[a+(aa<<4)+24>>2];break}case 224:{c=cr($,119,0,0,0)|0;k[ba>>2]=c;if(!c)Rk(k[$>>2]|0,k[a+(aa+-1<<4)+16>>2]|0,1);else{k[c+20>>2]=k[a+(aa+-1<<4)+16>>2];_=k[ba>>2]|0;Z=_+4|0;k[Z>>2]=k[Z>>2]|2099200;Dr($,_)}k[ba+4>>2]=k[a+(aa+-2<<4)+16>>2];k[ba+8>>2]=(k[a+(aa<<4)+16>>2]|0)+(k[a+(aa<<4)+20>>2]|0);break}case 118:{$=pr($,k[a+(aa+-6<<4)+16>>2]|0,k[a+(aa+-5<<4)+16>>2]|0,k[a+(aa+-4<<4)+16>>2]|0,k[a+(aa+-3<<4)+16>>2]|0,k[a+(aa+-2<<4)+16>>2]|0,k[a+(aa+-1<<4)+16>>2]|0,j[a+(aa+-7<<4)+16>>1]|0,k[a+(aa<<4)+16>>2]|0,k[a+(aa<<4)+20>>2]|0)|0;k[ba>>2]=$;break}case 120:{$=pr($,k[a+(aa+-1<<4)+16>>2]|0,0,0,0,0,0,128,0,0)|0;k[ba>>2]=$;break}case 121:{c=pr($,k[a+(aa+-1<<4)+16>>2]|0,0,0,0,0,0,128,0,0)|0;if(!c){k[ba>>2]=k[a+(aa+-4<<4)+16>>2];break a}else{i[c+4>>0]=116;k[c+52>>2]=k[a+(aa+-4<<4)+16>>2];k[ba>>2]=c;break a}}case 122:{j[ba>>1]=1;break}case 124:case 123:{j[ba>>1]=0;break}case 243:case 125:{k[ba>>2]=k[a+(aa+-1<<4)+16>>2];break}case 242:case 236:case 161:case 154:case 126:{k[ba>>2]=0;break}case 127:{e=aa+-1|0;g=qr($,k[a+(aa+-2<<4)+16>>2]|0,k[a+(e<<4)+16>>2]|0)|0;k[ba>>2]=g;if(k[a+(aa<<4)+20>>2]|0)rr($,g,a+(aa<<4)+16|0,1);n=k[$>>2]|0;if(g){h=(k[g+4>>2]|0)+(((k[g>>2]|0)+-1|0)*20|0)+8|0;rg(n,k[h>>2]|0);f=k[a+(e<<4)+20>>2]|0;g=(k[a+(e<<4)+24>>2]|0)-f|0;if((f|0)!=0?(c=ow(g|0,((g|0)<0)<<31>>31|0,1,0)|0,c=rh(n,c,L)|0,(c|0)!=0):0){pw(c|0,f|0,g|0)|0;i[c+g>>0]=0}else c=0;k[h>>2]=c}break}case 133:{e=rh(k[$>>2]|0,80,0)|0;if(e){v=e+0|0;d=v+80|0;do{i[v>>0]=0;v=v+1|0}while((v|0)<(d|0))}k[ba>>2]=e;break}case 134:{g=k[a+(aa<<4)+16>>2]|0;k[ba>>2]=g;if(g){e=k[g>>2]|0;d=e+-1|0;if((d|0)>0)while(1){i[g+(d*72|0)+44>>0]=i[g+((e+-2|0)*72|0)+44>>0]|0;e=d+-1|0;if((e|0)>0){$=d;d=e;e=$}else break}i[g+44>>0]=0}break}case 128:{Z=k[$>>2]|0;k[_>>2]=0;k[_+4>>2]=0;_=sr(Z,116,_,0)|0;$=qr($,k[a+(aa+-1<<4)+16>>2]|0,_)|0;k[ba>>2]=$;break}case 132:{k[ba+4>>2]=0;break}case 129:{_=cr($,116,0,0,a+(aa<<4)+16|0)|0;_=cr($,122,cr($,27,0,0,a+(aa+-2<<4)+16|0)|0,_,0)|0;$=qr($,k[a+(aa+-3<<4)+16>>2]|0,_)|0;k[ba>>2]=$;break}case 136:{k[ba>>2]=0;break}case 137:{_=or($,k[a+(aa+-6<<4)+16>>2]|0,a+(aa+-5<<4)+16|0,a+(aa+-4<<4)+16|0,a+(aa+-3<<4)+16|0,0,k[a+(aa+-1<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=_;tr($,_,a+(aa+-2<<4)+16|0);break}case 135:{c=k[a+(aa+-1<<4)+16>>2]|0;k[ba>>2]=c;if((c|0)!=0?(t=k[c>>2]|0,(t|0)>0):0)i[c+((t+-1|0)*72|0)+44>>0]=k[a+(aa<<4)+16>>2];break}case 138:{$=or($,k[a+(aa+-6<<4)+16>>2]|0,0,0,a+(aa+-2<<4)+16|0,k[a+(aa+-4<<4)+16>>2]|0,k[a+(aa+-1<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=$;break}case 139:{e=a+(aa+-6<<4)+16|0;g=k[e>>2]|0;if((((g|0)==0?(k[a+(aa+-2<<4)+20>>2]|0)==0:0)?(k[a+(aa+-1<<4)+16>>2]|0)==0:0)?(k[a+(aa<<4)+16>>2]|0)==0:0){k[ba>>2]=k[a+(aa+-4<<4)+16>>2];break a}n=a+(aa+-4<<4)+16|0;d=k[n>>2]|0;h=k[d>>2]|0;if((h|0)==1){e=or($,g,0,0,a+(aa+-2<<4)+16|0,0,k[a+(aa+-1<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=e;if(e){X=(k[e>>2]|0)+-1|0;_=k[n>>2]|0;Z=_+16|0;k[e+(X*72|0)+16>>2]=k[Z>>2];Y=_+12|0;k[e+(X*72|0)+12>>2]=k[Y>>2];_=_+28|0;k[e+(X*72|0)+28>>2]=k[_>>2];k[Y>>2]=0;k[Z>>2]=0;k[_>>2]=0}Io(k[$>>2]|0,k[n>>2]|0);break a}if(d){f=h+-1|0;if((f|0)>0){g=h;while(1){i[d+(f*72|0)+44>>0]=i[d+((g+-2|0)*72|0)+44>>0]|0;g=f+-1|0;if((g|0)>0){_=f;f=g;g=_}else break}}i[d+44>>0]=0}_=pr($,0,d,0,0,0,0,512,0,0)|0;$=or($,k[e>>2]|0,0,0,a+(aa+-2<<4)+16|0,_,k[a+(aa+-1<<4)+16>>2]|0,k[a+(aa<<4)+16>>2]|0)|0;k[ba>>2]=$;break}case 149:case 140:{k[ba>>2]=0;k[ba+4>>2]=0;break}case 144:{$=vr($,a+(aa+-1<<4)+16|0,0,0)|0;k[ba>>2]=$;break}case 145:{$=vr($,a+(aa+-2<<4)+16|0,a+(aa+-1<<4)+16|0,0)|0;k[ba>>2]=$;break}case 146:{$=vr($,a+(aa+-3<<4)+16|0,a+(aa+-2<<4)+16|0,a+(aa+-1<<4)+16|0)|0;k[ba>>2]=$;break}case 233:case 231:case 171:case 164:case 147:{k[ba>>2]=k[a+(aa<<4)+16>>2];break}case 234:case 232:case 170:case 163:case 148:{k[ba>>2]=0;break}case 151:{k[ba>>2]=0;k[ba+4>>2]=1;break}case 143:{k[ba>>2]=1;break}case 142:{$=ur(k[$>>2]|0,0,a+(aa+-1<<4)+16|0,a+(aa<<4)+16|0)|0;k[ba>>2]=$;break}case 235:case 162:case 155:{k[ba>>2]=k[a+(aa<<4)+16>>2];break}case 156:{c=qr($,k[a+(aa+-3<<4)+16>>2]|0,k[a+(aa+-1<<4)+16>>2]|0)|0;k[ba>>2]=c;if(c)i[(k[c+4>>2]|0)+(((k[c>>2]|0)+-1|0)*20|0)+12>>0]=k[a+(aa<<4)+16>>2];break}case 157:{c=qr($,0,k[a+(aa+-1<<4)+16>>2]|0)|0;k[ba>>2]=c;if((c|0)!=0?(d=k[c+4>>2]|0,(d|0)!=0):0)i[d+12>>0]=k[a+(aa<<4)+16>>2];break}case 179:case 153:{k[ba>>2]=0;break}case 180:case 152:{k[ba>>2]=k[a+(aa+-1<<4)+16>>2];break}case 160:case 158:{k[ba>>2]=0;break}case 159:{k[ba>>2]=1;break}case 165:{k[ba>>2]=0;k[ba+4>>2]=0;break}case 166:{k[ba>>2]=k[a+(aa<<4)+16>>2];k[ba+4>>2]=0;break}case 167:{k[ba>>2]=k[a+(aa+-2<<4)+16>>2];k[ba+4>>2]=k[a+(aa<<4)+16>>2];break}case 168:{k[ba+4>>2]=k[a+(aa+-2<<4)+16>>2];k[ba>>2]=k[a+(aa<<4)+16>>2];break}case 19:{if((Xq($,22,37120,0,0)|0)==0?(x=Tq($)|0,(x|0)!=0):0)Bh(x,3,1,1,0)|0;break}case 22:{Yq($,0,a+(aa<<4)+16|0);break}case 23:{Yq($,1,a+(aa<<4)+16|0);break}case 24:{Yq($,2,a+(aa<<4)+16|0);break}default:{}}while(0);c=i[20912+(b<<1)>>0]|0;h=c&255;g=i[20913+(b<<1)>>0]|0;f=g&255;n=(k[a>>2]|0)-f|0;k[a>>2]=n;e=j[22184+((j[21568+(m[a+(aa-f<<4)+12>>1]<<1)>>1]|0)+h<<1)>>1]|0;d=e&65535;do if((e&65535)<642)if(!(g<<24>>24)){pq(a,d,h,ba);break}else{k[a>>2]=n+1;aa=1-f+aa|0;j[a+(aa<<4)+12>>1]=e;i[a+(aa<<4)+14>>0]=c;aa=a+(aa<<4)+16|0;k[aa+0>>2]=k[ba+0>>2];k[aa+4>>2]=k[ba+4>>2];k[aa+8>>2]=k[ba+8>>2];break}else{c=k[ca>>2]|0;if((n|0)>-1)do Un(a);while((k[a>>2]|0)>-1);k[ca>>2]=c}while(0);r=da;return}function sq(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,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,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;aa=r;r=r+64|0;if((r|0)>=(s|0))ka();$=aa+8|0;W=aa;h=aa+24|0;d=aa+16|0;f=Cq(a,0,d)|0;do if(!f){if(k[d>>2]|0){f=is(a,b)|0;if(!f)c=0;else e=4}else{f=1;e=4}if((e|0)==4){_=a+43|0;e=(i[_>>0]|0)==0;do if(!(i[a+46>>0]&2)){if(e?(g=a+4|0,Z=k[g>>2]|0,fc[k[(k[Z>>2]|0)+40>>2]&63](Z,24,0)|0,g=k[g>>2]|0,g=uc[k[(k[g>>2]|0)+56>>2]&31](g,0,1,10)|0,(g|0)!=0):0){d=f;c=g;break}Z=a+44|0;i[Z>>0]=1;e=Cq(a,0,d)|0;if(!e){d=is(a,b)|0;if(!d){d=0;c=0}else{Y=l[a+45>>0]|0;X=Y+1|0;Y=7-Y|0;if(!((i[_>>0]|0)==0?(c=k[a+4>>2]|0,c=uc[k[(k[c>>2]|0)+56>>2]&31](c,X,Y,10)|0,(c|0)!=0):0)){f=a+52|0;e=f+48|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(e|0));Q=a+8|0;c=k[Q>>2]|0;c=wc[k[(k[c>>2]|0)+24>>2]&127](c,W)|0;a:do if(!c){R=W;P=k[R+4>>2]|0;b:do if((P|0)>0|(P|0)==0&(k[R>>2]|0)>>>0>32){c=k[Q>>2]|0;c=yc[k[(k[c>>2]|0)+8>>2]&31](c,h,32,0,0)|0;if(c)break a;g=l[h+3>>0]|0;e=l[h+9>>0]<<16|l[h+8>>0]<<24;c=l[h+10>>0]<<8;f=e|c|l[h+11>>0];if(((l[h+1>>0]<<16|l[h>>0]<<24|l[h+2>>0]<<8|g&254|0)==931071618?!((f+-1&f|0)!=0|(f|0)>65536|(f|0)<512):0)?(R=g&1,S=a+65|0,i[S>>0]=R,T=a+36|0,k[T>>2]=f,k[a+104>>2]=l[h+13>>0]<<16|l[h+12>>0]<<24|l[h+14>>0]<<8|l[h+15>>0],U=a+84|0,P=h+16|0,N=P,N=l[N>>0]|l[N+1>>0]<<8|l[N+2>>0]<<16|l[N+3>>0]<<24,P=P+4|0,P=l[P>>0]|l[P+1>>0]<<8|l[P+2>>0]<<16|l[P+3>>0]<<24,V=U,O=V,i[O>>0]=N,i[O+1>>0]=N>>8,i[O+2>>0]=N>>16,i[O+3>>0]=N>>24,V=V+4|0,i[V>>0]=P,i[V+1>>0]=P>>8,i[V+2>>0]=P>>16,i[V+3>>0]=P>>24,V=a+76|0,Dq(R^1,h,24,0,V),(k[V>>2]|0)==(l[h+25>>0]<<16|l[h+24>>0]<<24|l[h+26>>0]<<8|l[h+27>>0]|0)):0){P=a+80|0;if((k[P>>2]|0)!=(l[h+29>>0]<<16|l[h+28>>0]<<24|l[h+30>>0]<<8|l[h+31>>0]|0)){f=0;c=0;break}if((l[h+5>>0]<<16|l[h+4>>0]<<24|l[h+6>>0]<<8|l[h+7>>0]|0)!=3007e3){k[$>>2]=49983;k[$+4>>2]=10788;gd(14,14848,$);c=14;break a}t=f+24|0;R=Yc(t)|0;if(!R){c=7;break a}u=R+24|0;v=((t|0)<0)<<31>>31;h=ow(t|0,v|0,32,0)|0;g=L;O=W;N=k[O+4>>2]|0;c:do if(!((g|0)>(N|0)|((g|0)==(N|0)?h>>>0>(k[O>>2]|0)>>>0:0))){w=R+8|0;x=R+1|0;y=R+2|0;z=R+3|0;A=R+16|0;B=R+17|0;C=R+18|0;D=R+19|0;E=R+20|0;F=R+21|0;G=R+22|0;H=R+23|0;I=R+4|0;J=R+5|0;K=R+6|0;M=R+7|0;N=a+68|0;O=a+72|0;p=(e>>>16|c)&65535;q=a+66|0;m=32;e=0;f=0;n=0;o=1;while(1){c=k[Q>>2]|0;c=yc[k[(k[c>>2]|0)+8>>2]&31](c,R,t,m,e)|0;if(c){e=36;break}if(cw(U,w,8)|0){c=n;e=37;break}e=l[x>>0]<<16|l[R>>0]<<24|l[y>>0]<<8|l[z>>0];if(!e){c=n;e=37;break}m=(i[S>>0]|0)==0&1;Dq(m,R,8,V,V);Dq(m,u,k[T>>2]|0,V,V);if((k[V>>2]|0)!=(l[B>>0]<<16|l[A>>0]<<24|l[C>>0]<<8|l[D>>0]|0)){c=n;e=37;break}if((k[P>>2]|0)!=(l[F>>0]<<16|l[E>>0]<<24|l[G>>0]<<8|l[H>>0]|0)){c=n;break c}m=l[J>>0]<<16|l[I>>0]<<24|l[K>>0]<<8|l[M>>0];c=dp(a,o,e)|0;if(c){e=36;break}if(!m)c=n;else{k[N>>2]=o;k[O>>2]=m;j[q>>1]=p;f=k[V>>2]|0;c=k[P>>2]|0}e=ow(h|0,g|0,t|0,v|0)|0;m=L;n=W;ba=k[n+4>>2]|0;if((m|0)>(ba|0)|((m|0)==(ba|0)?e>>>0>(k[n>>2]|0)>>>0:0))break c;else{ca=g;ba=h;h=e;g=m;n=c;o=o+1|0;e=ca;m=ba}}if((e|0)==36){$c(R);break a}else if((e|0)==37){$c(R);break b}}else{f=0;c=0}while(0);$c(R)}else{f=0;c=0}}else{f=0;c=0}while(0);k[a+76>>2]=f;k[a+80>>2]=c;ep(a);e=k[k[a+32>>2]>>2]|0;k[e+96>>2]=0;k[e+100>>2]=0;c=e+104|0;k[c>>2]=-1;k[e+108>>2]=-1;k[e+112>>2]=-1;k[e+116>>2]=-1;e=a+68|0;f=k[e>>2]|0;if(f)k[c>>2]=f;if(!(k[a+72>>2]|0))c=0;else{c=k[a+100>>2]|0;k[$>>2]=k[e>>2];k[$+4>>2]=c;gd(283,14888,$);c=0}}while(0);if(!(i[_>>0]|0)){W=k[a+4>>2]|0;uc[k[(k[W>>2]|0)+56>>2]&31](W,X,Y,9)|0}}k[b>>2]=1}}else{d=f;c=e}i[Z>>0]=0;if(!(i[_>>0]|0)){_=k[a+4>>2]|0;uc[k[(k[_>>2]|0)+56>>2]&31](_,0,1,9)|0}}else if(e){d=a+4|0;c=k[d>>2]|0;c=uc[k[(k[c>>2]|0)+56>>2]&31](c,0,1,6)|0;if(!c)if(!(i[_>>0]|0)){d=k[d>>2]|0;uc[k[(k[d>>2]|0)+56>>2]&31](d,0,1,5)|0;d=f;c=264}else{d=f;c=264}else d=f}else{d=f;c=264}while(0);if(d)break}if((k[a+52>>2]|0)!=3007e3){k[$>>2]=50909;k[$+4>>2]=10788;gd(14,14848,$);c=14}}else c=f;while(0);r=aa;return c|0}function tq(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,l=0,n=0,o=0,p=0,q=0,r=0,s=0;p=k[e>>2]|0;q=k[d>>2]|0;h=(p|0)>0;g=(c|0)>0;if(h|g){n=g;i=0;o=0;l=0;while(1){do if(n){g=b+(i<<1)|0;if(h?(r=q+(l<<1)|0,(k[a+((m[g>>1]|0)<<2)>>2]|0)>>>0>=(k[a+((m[r>>1]|0)<<2)>>2]|0)>>>0):0){h=r;s=7;break}i=i+1|0;h=g}else{h=q+(l<<1)|0;s=7}while(0);if((s|0)==7){s=0;l=l+1|0}n=j[h>>1]|0;h=k[a+((n&65535)<<2)>>2]|0;g=o+1|0;j[f+(o<<1)>>1]=n;if((i|0)<(c|0))i=((k[a+((m[b+(i<<1)>>1]|0)<<2)>>2]|0)==(h|0)&1)+i|0;h=(l|0)<(p|0);n=(i|0)<(c|0);if(!(h|n))break;else o=g}}else g=0;k[d>>2]=b;k[e>>2]=g;pw(b|0,f|0,g<<1|0)|0;return}function uq(a,b){a=a|0;b=b|0;var c=0,d=0;d=k[a+4>>2]|0;k[d+4>>2]=k[a>>2];a=k[(k[d>>2]|0)+204>>2]|0;k[a+16>>2]=b;d=k[2217]|0;c=k[a+40>>2]|0;if((b|0)>-1)a=b;else{b=xw(b|0,((b|0)<0)<<31>>31|0,-1024,-1)|0;a=(k[a+24>>2]|0)+(k[a+20>>2]|0)|0;a=vw(b|0,L|0,a|0,((a|0)<0)<<31>>31|0)|0}oc[d&15](c,a);return}function vq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=(k[a+12>>2]|0)+136|0;c=e;d=k[c>>2]|0;c=k[c+4>>2]|0;do if((d|0)==0&(c|0)==0)if(!(gh(k[k[(k[a>>2]|0)+32>>2]>>2]|0,e)|0)){c=e;d=k[c>>2]|0;c=k[c+4>>2]|0;f=5;break}else{c=e;k[c>>2]=0;k[c+4>>2]=0;c=b;k[c>>2]=0;k[c+4>>2]=0;c=1;break}else f=5;while(0);if((f|0)==5){e=b;k[e>>2]=d;k[e+4>>2]=c;if((c|0)>0|(c|0)==0&d>>>0>0){i[b+42>>0]=1;c=0}else c=1}return c|0}function wq(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+16|0;if((r|0)>=(s|0))ka();l=n;k[l>>2]=b;b=a;a=0;a:while(1){f=k[l>>2]|0;e=k[f>>2]|0;k[l>>2]=f+4;f=k[l>>2]|0;g=k[f>>2]|0;k[l>>2]=f+4;f=k[l>>2]|0;h=k[f>>2]|0;k[l>>2]=f+4;f=k[l>>2]|0;j=k[f>>2]|0;k[l>>2]=f+4;f=k[l>>2]|0;c=k[f>>2]|0;k[l>>2]=f+4;if(!e){d=b;b=0}else{d=b;b=0;do{e=e+-1|0;f=i[d>>0]|0;if(((f&255)+-48|0)>>>0>=10)break a;b=(b*10|0)+-48+(f<<24>>24)|0;d=d+1|0}while((e|0)!=0)}if((b|0)<(g|0)|(b|0)>(h|0))break;if(!j){m=9;break}if((j|0)!=(i[d>>0]|0))break;k[c>>2]=b;b=d+1|0;a=a+1|0}if((m|0)==9){k[c>>2]=b;a=a+1|0}r=n;return a|0}function xq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0,g=0,h=0.0,j=0,m=0,n=0,o=0,q=0,t=0,u=0;u=r;r=r+64|0;if((r|0)>=(s|0))ka();q=u;n=u+56|0;o=u+52|0;c=u+48|0;j=u+44|0;m=u+40|0;k[q>>2]=2;k[q+4>>2]=0;k[q+8>>2]=24;k[q+12>>2]=58;k[q+16>>2]=c;k[q+20>>2]=2;k[q+24>>2]=0;k[q+28>>2]=59;k[q+32>>2]=0;k[q+36>>2]=j;do if((wq(a,q)|0)==2){g=a+5|0;if((i[g>>0]|0)==58){k[q>>2]=2;k[q+4>>2]=0;k[q+8>>2]=59;k[q+12>>2]=0;k[q+16>>2]=m;if((wq(a+6|0,q)|0)!=1){c=1;break}g=a+8|0;if((i[g>>0]|0)==46?(d=a+9|0,e=i[d>>0]|0,((e&255)+-48|0)>>>0<10):0){h=0.0;f=1.0;do{h=h*10.0+ +(e<<24>>24)+-48.0;f=f*10.0;d=d+1|0;e=i[d>>0]|0}while(((e&255)+-48|0)>>>0<10);f=h/f}else{d=g;f=0.0}}else{k[m>>2]=0;d=g;f=0.0}i[b+42>>0]=0;i[b+41>>0]=1;k[b+20>>2]=k[c>>2];k[b+24>>2]=k[j>>2];p[b+32>>3]=f+ +(k[m>>2]|0);while(1){c=d+1|0;if(!(i[10368+(l[d>>0]|0)>>0]&1)){g=d;break}else d=c}a=b+28|0;k[a>>2]=0;d=i[g>>0]|0;if(d<<24>>24==45){e=-1;t=14}else if(d<<24>>24!=43)if((d&-33)<<24>>24==90){e=0;t=16}else c=0;else{e=1;t=14}if((t|0)==14){k[q>>2]=2;k[q+4>>2]=0;k[q+8>>2]=14;k[q+12>>2]=58;k[q+16>>2]=n;k[q+20>>2]=2;k[q+24>>2]=0;k[q+28>>2]=59;k[q+32>>2]=0;k[q+36>>2]=o;if((wq(c,q)|0)!=2){c=1;break}e=ha(((k[n>>2]|0)*60|0)+(k[o>>2]|0)|0,e)|0;k[a>>2]=e;c=g+6|0;t=16}if((t|0)==16)while(1){d=i[c>>0]|0;if(!(i[10368+(d&255)>>0]&1)){c=e;break}else c=c+1|0}if(!(d<<24>>24)){i[b+43>>0]=(c|0)!=0&1;c=0}else c=1}else c=1;while(0);r=u;return c|0}function yq(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.0,m=0;j=r;r=r+112|0;if((r|0)>=(s|0))ka();f=j+48|0;h=j;g=j+96|0;d=f+0|0;a=a+0|0;e=d+48|0;do{k[d>>2]=k[a>>2];d=d+4|0;a=a+4|0}while((d|0)<(e|0));to(f);uo(f);e=f+8|0;if(((k[e>>2]|0)+-1971|0)>>>0>66){k[e>>2]=2e3;k[f+12>>2]=1;k[f+16>>2]=1;k[f+20>>2]=0;k[f+24>>2]=0;p[f+32>>3]=0.0}else{d=f+32|0;p[d>>3]=+(~~(+p[d>>3]+.5)|0)}k[f+28>>2]=0;i[f+42>>0]=0;so(f);a=f;d=k[a>>2]|0;a=k[a+4>>2]|0;e=vw(d|0,a|0,1e3,0)|0;e=ow(e|0,L|0,-413362496,0)|0;k[g>>2]=e;e=_b(g|0)|0;e=(k[2253]|0)!=0?0:e;if(!e){k[b+20>>2]=1;i[b+25>>0]=1;ah(k[b>>2]|0,20056,-1,1,-1)|0;k[c>>2]=1;d=0;e=0}else{f=k[e+4>>2]|0;g=k[e+8>>2]|0;b=k[e+12>>2]|0;m=(k[e+16>>2]|0)+1|0;l=+(k[e>>2]|0);k[h+8>>2]=(k[e+20>>2]|0)+1900;k[h+12>>2]=m;k[h+16>>2]=b;k[h+20>>2]=g;k[h+24>>2]=f;p[h+32>>3]=l;i[h+40>>0]=1;i[h+41>>0]=1;i[h+42>>0]=0;i[h+43>>0]=0;so(h);k[c>>2]=0;e=h;e=iw(k[e>>2]|0,k[e+4>>2]|0,d|0,a|0)|0;d=L}L=d;r=j;return e|0}function zq(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;n=r;r=r+32|0;if((r|0)>=(s|0))ka();m=n+12|0;h=n;l=n+8|0;g=n+16|0;i[b>>0]=0;d=wc[k[(k[a>>2]|0)+24>>2]&127](a,h)|0;f=h;e=k[f>>2]|0;f=k[f+4>>2]|0;if(!((d|0)!=0|((f|0)<0|(f|0)==0&e>>>0<16))){d=ow(e|0,f|0,-16,-1)|0;d=js(a,d,L,m)|0;if(!d){j=k[m>>2]|0;if(!(j>>>0>=c>>>0|(j|0)==0)){d=h;d=ow(k[d>>2]|0,k[d+4>>2]|0,-12,-1)|0;d=js(a,d,L,l)|0;if(!d){d=h;d=ow(k[d>>2]|0,k[d+4>>2]|0,-8,-1)|0;d=yc[k[(k[a>>2]|0)+8>>2]&31](a,g,8,d,L)|0;if(!d)if(!(cw(g,14808,8)|0)){d=h;d=ow(k[d>>2]|0,k[d+4>>2]|0,-16,-1)|0;d=iw(d|0,L|0,j|0,0)|0;d=yc[k[(k[a>>2]|0)+8>>2]&31](a,b,j,d,L)|0;if(!d){e=k[l>>2]|0;f=0;while(1){c=i[b+f>>0]|0;d=e-c|0;f=f+1|0;if(f>>>0>=j>>>0)break;else e=d}k[l>>2]=d;if((e|0)==(c|0))d=j;else{k[m>>2]=0;d=0}i[b+d>>0]=0;d=0}}else d=0}}else d=0}}r=n;return d|0}function Aq(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;q=r;r=r+16|0;if((r|0)>=(s|0))ka();i=q+8|0;o=q+4|0;m=q;p=a+72|0;g=p;h=k[g>>2]|0;g=k[g+4>>2]|0;if((h|0)==0&(g|0)==0){j=0;l=0;h=k[a+148>>2]|0}else{j=ow(h|0,g|0,-1,-1)|0;h=k[a+148>>2]|0;j=vw(j|0,L|0,h|0,0)|0;j=ow(j|0,L|0,1,0)|0;j=xw(j|0,L|0,h|0,0)|0;l=L}n=p;k[n>>2]=j;k[n+4>>2]=l;n=a+148|0;h=ow(h|0,0,j|0,l|0)|0;g=L;do if(!((g|0)>(d|0)|(g|0)==(d|0)&h>>>0>c>>>0)){if((b|0)==0?(b=a+80|0,(j|0)==(k[b>>2]|0)?(l|0)==(k[b+4>>2]|0):0):0)c=a+64|0;else{h=a+64|0;d=k[h>>2]|0;d=yc[k[(k[d>>2]|0)+8>>2]&31](d,i,8,j,l)|0;if(d)break;if(!(cw(i,14808,8)|0))c=h;else{d=101;break}}i=k[c>>2]|0;d=ow(j|0,l|0,8,0)|0;d=js(i,d,L,e)|0;if(!d){e=k[c>>2]|0;d=ow(j|0,l|0,12,0)|0;d=js(e,d,L,a+48|0)|0;if(!d){e=k[c>>2]|0;d=ow(j|0,l|0,16,0)|0;d=js(e,d,L,f)|0;if(!d){g=p;h=k[g>>2]|0;g=k[g+4>>2]|0;if((h|0)==0&(g|0)==0){f=k[c>>2]|0;d=ow(j|0,l|0,20,0)|0;d=js(f,d,L,m)|0;if(d)break;f=k[c>>2]|0;d=ow(j|0,l|0,24,0)|0;d=js(f,d,L,o)|0;if(d)break;c=k[o>>2]|0;if(!c){g=k[a+152>>2]|0;k[o>>2]=g}else g=c;c=k[m>>2]|0;if(g>>>0<512|c>>>0<32|g>>>0>65536|c>>>0>65536){d=101;break}if(g+-1&g){d=101;break}if(c+-1&c){d=101;break}d=fl(a,o,-1)|0;k[n>>2]=c;g=p;h=k[g>>2]|0;g=k[g+4>>2]|0}else{c=k[n>>2]|0;d=0}j=ow(h|0,g|0,c|0,0)|0;l=p;k[l>>2]=j;k[l+4>>2]=L}}}}else d=101;while(0);r=q;return d|0}function Bq(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,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=r;r=r+16|0;if((r|0)>=(s|0))ka();v=A+8|0;h=A+4|0;p=A;y=k[a+200>>2]|0;z=(d|0)!=0;g=k[(z?a+64|0:a+68|0)>>2]|0;o=b;o=js(g,k[o>>2]|0,k[o+4>>2]|0,h)|0;do if(!o){x=a+152|0;u=k[x>>2]|0;o=b;o=ow(k[o>>2]|0,k[o+4>>2]|0,4,0)|0;o=yc[k[(k[g>>2]|0)+8>>2]&31](g,y,u,o,L)|0;if(!o){B=k[x>>2]|0;n=(d<<2)+4+B|0;o=b;o=ow(n|0,((n|0)<0)<<31>>31|0,k[o>>2]|0,k[o+4>>2]|0)|0;n=L;u=b;k[u>>2]=o;k[u+4>>2]=n;u=k[h>>2]|0;if((u|0)!=0?(u|0)!=(((k[2514]|0)/(B|0)|0)+1|0):0)if(u>>>0<=(k[a+24>>2]|0)>>>0?(ii(c,u)|0)==0:0){if(z){o=ow(o|0,n|0,-4,-1)|0;o=js(g,o,L,p)|0;if(o){f=o;break}if(!e){o=k[a+48>>2]|0;n=(k[x>>2]|0)+-200|0;if((n|0)>0)do{o=(l[y+n>>0]|0)+o|0;n=n+-200|0}while((n|0)>0);if((o|0)!=(k[p>>2]|0)){f=101;break}}}if((c|0)!=0?(f=gi(c,u)|0,(f|0)!=0):0)break;p=(u|0)==1;if(p?(q=a+142|0,t=i[y+20>>0]|0,(j[q>>1]|0)!=(t&255|0)):0)j[q>>1]=t&255;if(!(k[a+208>>2]|0)){t=a+204|0;o=fc[k[8744+132>>2]&63](k[(k[t>>2]|0)+40>>2]|0,u,0)|0;o=nl(k[t>>2]|0,u,o)|0}else o=0;k[v>>2]=o;if(z)if(!(i[a+7>>0]|0)){t=b;c=k[t+4>>2]|0;n=a+80|0;q=k[n+4>>2]|0;n=(c|0)<(q|0)|((c|0)==(q|0)?(k[t>>2]|0)>>>0<=(k[n>>2]|0)>>>0:0)}else n=1;else if(!o)n=1;else n=(j[o+24>>1]&4)==0;h=k[a+60>>2]|0;g=k[h>>2]|0;do if(g){f=i[a+16>>0]|0;if((f&255)>3){if(!n){w=33;break}}else if(!(f<<24>>24==0&n)){w=33;break}n=k[x>>2]|0;f=xw(n|0,((n|0)<0)<<31>>31|0,u+-1|0,0)|0;f=yc[k[g+12>>2]&31](h,y,n,f,L)|0;n=a+32|0;if(u>>>0>(k[n>>2]|0)>>>0)k[n>>2]=u;n=k[a+88>>2]|0;if(n)fp(n,u,y)}else w=33;while(0);if((w|0)==33)if((d|0)==0&(o|0)==0){t=a+20|0;i[t>>0]=l[t>>0]|2;f=Eg(a,u,v,1)|0;i[t>>0]=l[t>>0]&253;if(f)break;o=k[v>>2]|0;f=o+24|0;j[f>>1]=m[f>>1]&65527;Yo(o);f=0}else f=0;if(o){h=k[o+4>>2]|0;pw(h|0,y|0,k[x>>2]|0)|0;hc[k[a+196>>2]&31](o);do if(z){if((e|0)!=0?(t=b,c=k[t+4>>2]|0,u=a+80|0,q=k[u+4>>2]|0,(c|0)>(q|0)|((c|0)==(q|0)?(k[t>>2]|0)>>>0>(k[u>>2]|0)>>>0:0)):0)break;Cl(o)}while(0);if(p){n=a+104|0;g=h+24|0;h=n+16|0;do{i[n>>0]=i[g>>0]|0;n=n+1|0;g=g+1|0}while((n|0)<(h|0))}tl(o)}}else f=0;else f=101}else f=o}else f=o;while(0);r=A;return f|0}function Cq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=a+24|0;if((k[d>>2]|0)<=(b|0)){f=b+1|0;g=a+32|0;e=ad(k[g>>2]|0,f<<2)|0;if(!e){d=7;e=0}else{h=k[d>>2]|0;kw(e+(h<<2)|0,0,f-h<<2|0)|0;k[g>>2]=e;k[d>>2]=f;h=5}}else{e=k[a+32>>2]|0;h=5}if((h|0)==5){g=a+32|0;e=e+(b<<2)|0;do if(!(k[e>>2]|0)){if((i[a+43>>0]|0)!=2){d=k[a+4>>2]|0;d=yc[k[(k[d>>2]|0)+52>>2]&31](d,b,32768,l[a+44>>0]|0,e)|0;if((d|0)!=8)break;d=a+46|0;i[d>>0]=l[d>>0]|2;d=0;break}d=vg(32768,0)|0;if(d)kw(d|0,0,32768)|0;k[(k[g>>2]|0)+(b<<2)>>2]=d;d=(k[(k[g>>2]|0)+(b<<2)>>2]|0)==0?7:0}else d=0;while(0);e=k[(k[g>>2]|0)+(b<<2)>>2]|0}k[c>>2]=e;return d|0}function Dq(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=b+c|0;if(!d){f=0;c=0}else{f=k[d>>2]|0;c=k[d+4>>2]|0}if(!a)do{f=f+c+(sw(k[b>>2]|0)|0)|0;c=f+c+(sw(k[b+4>>2]|0)|0)|0;b=b+8|0}while(b>>>0>>0);else do{f=f+c+(k[b>>2]|0)|0;c=f+c+(k[b+4>>2]|0)|0;b=b+8|0}while(b>>>0>>0);k[e>>2]=f;k[e+4>>2]=c;return}function Eq(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=a+8|0;f=k[g>>2]|0;g=k[g+4>>2]|0;if((g|0)>(e|0)|(g|0)==(e|0)&f>>>0>d>>>0?(h=ow(c|0,((c|0)<0)<<31>>31|0,d|0,e|0)|0,j=L,!((j|0)<(g|0)|(j|0)==(g|0)&h>>>0>>0)):0){h=iw(f|0,g|0,d|0,e|0)|0;g=a+4|0;f=k[g>>2]|0;f=yc[k[(k[f>>2]|0)+12>>2]&31](f,b,h,d,e)|0;if(!f){d=ow(h|0,((h|0)<0)<<31>>31|0,d|0,e|0)|0;e=L;f=k[g>>2]|0;f=wc[k[(k[f>>2]|0)+20>>2]&127](f,k[a+16>>2]&19)|0;if(!((h|0)==(c|0)|(f|0)!=0)){c=c-h|0;g=b+h|0;f=e;i=5}}}else{g=b;f=e;i=5}if((i|0)==5){e=k[a+4>>2]|0;f=yc[k[(k[e>>2]|0)+12>>2]&31](e,g,c,d,f)|0}return f|0}function Fq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();e=g+8|0;f=g+4|0;d=g;k[e>>2]=0;k[f>>2]=0;k[d>>2]=0;c=a+68|0;b=k[c>>2]|0;if(b){Uo(a,(b+33|0)>>>12,e,f,d)|0;d=(k[c>>2]|0)-(k[d>>2]|0)|0;a=k[e>>2]|0;c=0;do{b=a+(c<<1)|0;if((m[b>>1]|0|0)>(d|0))j[b>>1]=0;c=c+1|0}while((c|0)!=8192);b=(k[f>>2]|0)+(d+1<<2)|0;kw(b|0,0,a-b|0)|0}r=g;return}function Gq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();c=e;f=a+204|0;d=fc[k[8744+132>>2]&63](k[(k[f>>2]|0)+40>>2]|0,b,0)|0;d=nl(k[f>>2]|0,b,d)|0;do if(!d)c=0;else{if((j[d+26>>1]|0)==1){rl(d);c=0;break}k[c>>2]=0;b=pl(k[a+208>>2]|0,k[d+20>>2]|0,c)|0;if(!b){b=ql(d,k[c>>2]|0)|0;if(!b){hc[k[a+196>>2]&31](d);b=0}}Gg(d);c=b}while(0);b=k[a+88>>2]|0;if(b)do{k[b+16>>2]=1;b=k[b+44>>2]|0}while((b|0)!=0);r=e;return c|0}function Hq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=r;r=r+16|0;if((r|0)>=(s|0))ka();C=D;z=k[a+52>>2]|0;o=(k[z+36>>2]|0)+-4|0;v=b&65535;A=c&65535;u=A+v|0;B=k[a+56>>2]|0;if(j[z+22>>1]&4)kw(B+v|0,0,A|0)|0;y=l[a+6>>0]|0;z=y+1|0;g=z&65535;x=z&65535;if((i[B+(x+1)>>0]|0)==0?(i[B+x>>0]|0)==0:0){q=c&255;o=(c&65535)>>>8&255;p=u;n=0;h=0;x=23}else{q=g;x=6}a:do if((x|0)==6){while(1){x=0;f=q&65535;h=i[B+(f+1)>>0]|0;e=h&255;p=l[B+f>>0]<<8|e;g=q;q=p&65535;if(!(p>>>0>>0&(p|0)!=0)){n=h;t=p;break}if(p>>>0<(f+4|0)>>>0){x=8;break}else x=6}if((x|0)==8){k[C>>2]=54420;k[C+4>>2]=10788;gd(11,13600,C);d=11;break}if(t>>>0>o>>>0){k[C>>2]=54423;k[C+4>>2]=10788;gd(11,13600,C);d=11;break}d=c&255;o=(c&65535)>>>8&255;h=(q&65535)>>>8&255;do if((t+-1|0)>>>0<(u+3|0)>>>0)if(u>>>0>t>>>0){k[C>>2]=54434;k[C+4>>2]=10788;gd(11,13600,C);d=11;break a}else{p=(l[B+(t+2)>>0]<<8|l[B+(t+3)>>0])+t|0;o=p-v|0;q=o&255;o=(o&65535)>>>8&255;n=i[B+(t+1)>>0]|0;h=i[B+t>>0]|0;d=e-u&255;break}else{q=d;p=u;d=0}while(0);do if(f>>>0>z>>>0?(w=(l[B+(f+2)>>0]<<8|l[B+(f+3)>>0])+f|0,(w+3|0)>=(v|0)):0)if((v|0)<(w|0)){k[C>>2]=54447;k[C+4>>2]=10788;gd(11,13600,C);d=11;break a}else{o=p-f|0;b=g;q=o&255;o=(o&65535)>>>8&255;d=(d&255)+v-w&255;break}while(0);f=B+(y+7)|0;e=i[f>>0]|0;if((e&255)<(d&255)){k[C>>2]=54453;k[C+4>>2]=10788;gd(11,13600,C);d=11;break}else{i[f>>0]=(e&255)-(d&255);x=23;break}}while(0);b:do if((x|0)==23){d=b&65535;e=B+(y+5)|0;f=B+(y+6)|0;do if((d|0)==(l[e>>0]<<8|l[f>>0]|0))if((g&65535|0)==(z|0)){i[B+z>>0]=h;i[B+(y+2)>>0]=n;i[e>>0]=p>>>8;i[f>>0]=p;break}else{k[C>>2]=54460;k[C+4>>2]=10788;gd(11,13600,C);d=11;break b}else{C=g&65535;i[B+C>>0]=(b&65535)>>>8;i[B+(C+1)>>0]=b;i[B+d>>0]=h;i[B+(d+1)>>0]=n;i[B+(d+2)>>0]=o;i[B+(d+3)>>0]=q}while(0);d=a+16|0;j[d>>1]=(m[d>>1]|0)+A;d=0}while(0);r=D;return d|0}function Iq(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,t=0,u=0;u=r;r=r+16|0;if((r|0)>=(s|0))ka();p=u;o=l[a+6>>0]|0;t=k[a+56>>2]|0;n=k[(k[a+52>>2]|0)+36>>2]|0;g=n+-4|0;a=o+1|0;while(1){h=t+a|0;j=(l[h>>0]|0)<<8|(l[t+(a+1)>>0]|0);if(!j){a=0;break}if((j|0)>(g|0)|(j|0)<(a+4|0)){q=4;break}e=t+(j+2)|0;f=t+(j+3)|0;a=(l[e>>0]|0)<<8|(l[f>>0]|0);if((a|0)<(b|0))a=j;else{m=e;g=j;q=6;break}}a:do if((q|0)==4){k[p>>2]=54252;k[p+4>>2]=10788;gd(11,13600,p);k[c>>2]=11;a=0}else if((q|0)==6){e=a-b|0;do if((e|0)>=4)if((a+g|0)>(n|0)){k[p>>2]=54275;k[p+4>>2]=10788;gd(11,13600,p);k[c>>2]=11;a=0;break a}else{i[m>>0]=e>>>8;i[f>>0]=e;break}else{a=t+(o+7)|0;if((l[a>>0]|0)<=59){o=t+g|0;o=l[o>>0]|l[o+1>>0]<<8;i[h>>0]=o;i[h+1>>0]=o>>8;i[a>>0]=(l[a>>0]|0)+e;break}if(!d){a=0;break a}k[d>>2]=1;a=0;break a}while(0);a=t+(e+g)|0}while(0);r=u;return a|0}function Jq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=r;r=r+16|0;if((r|0)>=(s|0))ka();B=D;y=k[a+56>>2]|0;A=l[a+6>>0]|0;u=m[a+14>>1]|0;v=j[a+18>>1]|0;o=v&65535;p=a+52|0;q=k[(k[p>>2]|0)+36>>2]|0;z=(o<<1)+u|0;t=q+-4|0;w=y+(A+5)|0;x=y+(A+6)|0;a:do if(v<<16>>16){n=q;v=0;c=y;d=0;while(1){f=(v<<1)+u|0;e=y+f|0;f=y+(f+1)|0;g=(l[e>>0]|0)<<8|(l[f>>0]|0);if((g|0)<(z|0)|(g|0)>(t|0)){C=3;break}h=(Qp(a,c+g|0)|0)&65535;b=n-h|0;if((b|0)<(z|0)|(h+g|0)>(q|0)){C=5;break}i[e>>0]=b>>>8;i[f>>0]=b;if(!d)if((b|0)==(g|0))d=0;else{d=k[(k[k[p>>2]>>2]|0)+200>>2]|0;c=(l[w>>0]|0)<<8|(l[x>>0]|0);pw(d+c|0,y+c|0,n-c|0)|0;c=d;C=9}else C=9;if((C|0)==9){C=0;pw(y+b|0,c+g|0,h|0)|0}v=v+1|0;if((v|0)>=(o|0)){C=11;break a}else n=b}if((C|0)==3){k[B>>2]=54184;k[B+4>>2]=10788;gd(11,13600,B);b=11;break}else if((C|0)==5){k[B>>2]=54196;k[B+4>>2]=10788;gd(11,13600,B);b=11;break}}else{b=q;C=11}while(0);if((C|0)==11){i[w>>0]=b>>>8;i[x>>0]=b;i[y+(A+1)>>0]=0;i[y+(A+2)>>0]=0;i[y+(A+7)>>0]=0;C=b-z|0;kw(y+z|0,0,C|0)|0;if((C|0)==(m[a+16>>1]|0|0))b=0;else{k[B>>2]=54221;k[B+4>>2]=10788;gd(11,13600,B);b=11}}r=D;return b|0}function Kq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=r;r=r+32|0;if((r|0)>=(s|0))ka();e=f;if((k[c>>2]|0)==0?(wp(a,b,e),d=j[e+18>>1]|0,d<<16>>16!=0):0){d=d&65535;Ep(k[a+52>>2]|0,(l[b+(d+1)>>0]|0)<<16|(l[b+d>>0]|0)<<24|(l[b+(d+2)>>0]|0)<<8|(l[b+(d+3)>>0]|0),3,k[a+72>>2]|0,c)}r=f;return}function Lq(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(!(k[c>>2]|0)){d=k[a+52>>2]|0;f=k[a+56>>2]|0;h=k[b+56>>2]|0;e=l[a+6>>0]|0;g=(k[b+72>>2]|0)==1?100:0;j=l[f+(e+5)>>0]<<8|l[f+(e+6)>>0];pw(h+j|0,f+j|0,(k[d+36>>2]|0)-j|0)|0;pw(h+g|0,f+e|0,(m[a+18>>1]<<1)+(m[a+14>>1]|0)|0)|0;i[b>>0]=0;a=eq(b)|0;if(a){k[c>>2]=a;break}if(i[d+17>>0]|0){a=dq(b)|0;k[c>>2]=a}}while(0);return}function Mq(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,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=l[a+6>>0]|0;t=k[a+56>>2]|0;h=k[a+52>>2]|0;o=k[h+36>>2]|0;n=t+o|0;e=k[a+64>>2]|0;h=k[(k[h>>2]|0)+200>>2]|0;p=t+(q+5)|0;r=t+(q+6)|0;s=(l[p>>0]|0)<<8|(l[r>>0]|0);pw(h+s|0,t+s|0,o-s|0)|0;s=t;if((b|0)>0){o=0;g=e;e=n;while(1){f=k[c+(o<<2)>>2]|0;if(f>>>0>t>>>0&f>>>0>>0)f=h+(f-s)|0;u=m[d+(o<<1)>>1]|0;e=e+(0-u)|0;pw(e|0,f|0,u|0)|0;f=e-s|0;i[g>>0]=f>>>8;i[g+1>>0]=f;o=o+1|0;if((o|0)==(b|0))break;else g=g+2|0}}else e=n;d=a+18|0;j[d>>1]=b;i[a+1>>0]=0;i[t+(q+1)>>0]=0;i[t+(q+2)>>0]=0;i[t+(q+3)>>0]=(m[d>>1]|0)>>>8;i[t+(q+4)>>0]=j[d>>1];d=e-s|0;i[p>>0]=d>>>8;i[r>>0]=d;i[t+(q+7)>>0]=0;return}function Nq(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,n=0,o=0,p=0,q=0,r=0;r=k[a+56>>2]|0;p=r+(k[(k[a+52>>2]|0)+36>>2]|0)|0;n=r+((l[a+6>>0]|0)+8+(l[a+7>>0]|0))|0;a:do if((b|0)>0){o=r;q=0;e=0;i=0;j=0;while(1){g=k[c+(q<<2)>>2]|0;if(g>>>0>=n>>>0&g>>>0

>>0){f=m[d+(q<<1)>>1]|0;h=g+f|0;if((i|0)!=(h|0)){if(i)Hq(a,i-o&65535,j&65535)|0;if(h>>>0>p>>>0){e=0;break a}}else f=f+j|0;e=e+1|0}else{g=i;f=j}q=q+1|0;if((q|0)>=(b|0))break;else{i=g;j=f}}if(g)Hq(a,g-r&65535,f&65535)|0}else e=0;while(0);return e|0}function Oq(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;var h=0,j=0,l=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();t=v;j=k[a+56>>2]|0;h=k[c>>2]|0;if(!(i[j+1>>0]|0))q=(i[j+2>>0]|0)!=0;else q=1;a:do if((e|0)>0){o=0;while(1){n=m[g+(o<<1)>>1]|0;if(q?(p=Iq(a,n,t,0)|0,(p|0)!=0):0)l=p;else{l=h+(0-n)|0;if(l>>>0>>0){h=1;break a}else h=l}pw(l|0,k[f+(o<<2)>>2]|0,n|0)|0;n=l-j|0;i[d>>0]=n>>>8;i[d+1>>0]=n;o=o+1|0;if((o|0)>=(e|0)){u=9;break}else d=d+2|0}}else u=9;while(0);if((u|0)==9){k[c>>2]=h;h=0}r=v;return h|0}function Pq(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;m=r;r=r+16|0;if((r|0)>=(s|0))ka();l=m;d=k[a+44>>2]|0;g=a;e=k[g>>2]|0;g=k[g+4>>2]|0;a:do if(!d){j=a+40|0;d=k[j>>2]|0;f=((d|0)<0)<<31>>31;i=ww(e|0,g|0,d|0,f|0)|0;if(!i){h=a+8|0;h=iw(k[h>>2]|0,k[h+4>>2]|0,e|0,g|0)|0;n=L;o=k[a+24>>2]|0;d=yc[k[(k[o>>2]|0)+8>>2]&31](o,k[a+36>>2]|0,(n|0)>(f|0)|(n|0)==(f|0)&h>>>0>d>>>0?d:h,e,g)|0;if(d)break;d=k[j>>2]|0}h=d-i|0;if((h|0)>=(b|0)){k[c>>2]=(k[a+36>>2]|0)+i;d=a;b=ow(k[d>>2]|0,k[d+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;d=a;k[d>>2]=b;k[d+4>>2]=L;d=0;break}d=a+16|0;e=k[d>>2]|0;if((e|0)<(b|0)){e=e<<1;e=(e|0)<128?128:e;while(1)if((e|0)<(b|0))e=e<<1;else{g=e;break}f=a+28|0;e=wg(k[f>>2]|0,g,((g|0)<0)<<31>>31)|0;if(!e){d=7;break}k[d>>2]=g;k[f>>2]=e}else e=k[a+28>>2]|0;g=a+28|0;pw(e|0,(k[a+36>>2]|0)+i|0,h|0)|0;i=a;i=ow(k[i>>2]|0,k[i+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0;d=a;k[d>>2]=i;k[d+4>>2]=L;d=b-h|0;if((d|0)>0){f=d;do{e=k[j>>2]|0;e=(f|0)>(e|0)?e:f;d=Pq(a,e,l)|0;if(d)break a;pw((k[g>>2]|0)+(b-f)|0,k[l>>2]|0,e|0)|0;f=f-e|0}while((f|0)>0)}k[c>>2]=k[g>>2];d=0}else{k[c>>2]=d+e;b=ow(e|0,g|0,b|0,((b|0)<0)<<31>>31|0)|0;d=a;k[d>>2]=b;k[d+4>>2]=L;d=0}while(0);r=m;return d|0}function Qq(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,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+64|0;if((r|0)>=(s|0))ka();w=z+44|0;y=z;x=z+40|0;u=a+8|0;t=k[u>>2]|0;u=k[u+4>>2]|0;v=a+4|0;n=k[v>>2]|0;Up(k[a+48>>2]|0,y,k[(k[(k[a>>2]|0)+8>>2]|0)+12>>2]|0,t,u);m=n+8|0;n=n+12|0;o=y+24|0;p=y+16|0;q=a+16|0;while(1){e=k[(k[m>>2]|0)+4>>2]|0;f=k[n>>2]|0;g=k[f+(e*56|0)+20>>2]|0;if(!(k[f+(e*56|0)+24>>2]|0)){c=1;b=0;break}i=o;h=k[i>>2]|0;i=k[i+4>>2]|0;j=k[p>>2]|0;l=((g|0)<0)<<31>>31;b=g;d=l;c=0;do{c=c+1|0;b=rw(b|0,d|0,7)|0;d=L}while(((b|0)!=0|(d|0)!=0)&(c|0)<9);h=ow(h|0,i|0,g|0,l|0)|0;h=ow(h|0,L|0,j|0,((j|0)<0)<<31>>31|0)|0;c=ow(h|0,L|0,c|0,((c|0)<0)<<31>>31|0)|0;h=L;b=k[q>>2]|0;b=ow(b|0,((b|0)<0)<<31>>31|0,t|0,u|0)|0;d=L;if((h|0)>(d|0)|(h|0)==(d|0)&c>>>0>b>>>0){c=1;b=0;break}Vp(y,w,um(w,g,l)|0);Vp(y,k[f+(e*56|0)+32>>2]|0,g);b=$m(k[v>>2]|0,x)|0;if(b){c=0;break}}y=Wp(y,a+56|0)|0;r=z;return (c?y:b)|0}function Rq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;c=r;r=r+16|0;if((r|0)>=(s|0))ka();e=c;k[e>>2]=d;d=$k(a,13592,e)|0;rg(a,b);r=c;return d|0}function Sq(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;l=r;r=r+16|0;if((r|0)>=(s|0))ka();h=l;e=i[a>>0]|0;if(e<<24>>24!=0&(b|0)>0){g=0;do{if((e+-48&255)<10){f=0;do{f=(f*10|0)+-48+(e<<24>>24)|0;a=a+1|0;e=i[a>>0]|0}while((e+-48&255)<10);e=0}else{f=0;e=0}e=ks(f,e)|0;j[c+(g<<1)>>1]=e;a=(i[a>>0]|0)==32?a+1|0:a;g=g+1|0;e=i[a>>0]|0}while(e<<24>>24!=0&(g|0)<(b|0))}g=d+51|0;i[g>>0]=i[g>>0]&-69;a:do if(i[a>>0]|0){c=d+44|0;b:while(1){do if(!(Lh(13448,a,10352,0)|0)){if(Lh(13464,a,10352,0)|0){k[h>>2]=0;In(a+3|0,h)|0;e=k[h>>2]|0;e=ks(e,((e|0)<0)<<31>>31)|0;j[c>>1]=e;break}if(Lh(13480,a,10352,0)|0)i[g>>0]=i[g>>0]|64}else i[g>>0]=i[g>>0]|4;while(0);while(1){e=i[a>>0]|0;if(e<<24>>24==32|e<<24>>24==0)break;a=a+1|0}while(1){f=a+1|0;if(!(e<<24>>24))break a;else if(e<<24>>24!=32)continue b;e=i[f>>0]|0;a=f}}}while(0);r=l;return}function Tq(a){a=a|0;var b=0,c=0;c=a+8|0;b=k[c>>2]|0;if(!b){b=Ah(a)|0;k[c>>2]=b;if(b)Bh(b,155,0,0,0)|0;if((k[a+408>>2]|0)==0?(j[(k[a>>2]|0)+60>>1]&8)==0:0)i[a+23>>0]=1}return b|0}function Uq(a,b){a=a|0;b=b|0;var c=0;c=(k[a+32>>2]|0)+-1|0;if((c|0)>(k[(k[a+24>>2]|0)+88>>2]|0)?(i[(k[a+4>>2]|0)+(c*20|0)>>0]|0)==b<<24>>24:0){Eh(a,c);c=1}else c=0;return c|0}function Vq(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=Tq(a)|0;f=d+32|0;ls(a,c,k[f>>2]|0,(e|0)==55&1,k[d>>2]|0);if(!(i[d+44>>0]&32)){d=j[d+38>>1]|0;Ch(g,Bh(g,e,b,k[f>>2]|0,c)|0,d,-14)}else{f=k[d+8>>2]|0;a:do if(!f)f=0;else while(1){if((i[f+51>>0]&3)==2)break a;f=k[f+20>>2]|0;if(!f){f=0;break}}while(0);Bh(g,e,b,k[f+40>>2]|0,c)|0;d=k[a+8>>2]|0;Ch(d,-1,ms(a,f)|0,-6)}return}function Wq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if((b|0)!=0?(i[b>>0]|0)==-97:0)Bh(k[a+8>>2]|0,33,k[b+28>>2]|0,c,0)|0;else f=4;if(((f|0)==4?(e=ns(a,b,c)|0,(e|0)!=(c|0)):0)?(d=k[a+8>>2]|0,(d|0)!=0):0)Bh(d,34,e,c,0)|0;return}function Xq(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,j=0;j=r;r=r+16|0;if((r|0)>=(s|0))ka();h=j;f=k[a>>2]|0;do if(((i[f+145>>0]|0)==0?(i[a+451>>0]|0)==0:0)?(g=k[f+284>>2]|0,(g|0)!=0):0){f=pc[g&7](k[f+288>>2]|0,b,c,d,e,k[a+492>>2]|0)|0;if((f|0)==0|(f|0)==2)break;else if((f|0)==1){yh(a,25216,h);k[a+12>>2]=23;f=1;break}else{yh(a,25232,h);k[a+12>>2]=1;f=1;break}}else f=0;while(0);r=j;return f|0}function Yq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;c=$q(k[a>>2]|0,c)|0;do if(c){d=Tq(a)|0;if((d|0)!=0?(Xq(a,32,k[37088+(b<<2)>>2]|0,c,0)|0)==0:0){Ch(d,Bh(d,2,b,0,0)|0,c,-1);break}rg(k[a>>2]|0,c)}while(0);return}function Zq(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;var h=0,m=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();p=v;n=v+4|0;u=k[a>>2]|0;b=jr(a,b,c,n)|0;a:do if((b|0)>=0){o=(d|0)!=0;if(o?(k[c+4>>2]|0)!=0&(b|0)!=1:0){yh(a,36976,p);break}t=o?1:b;c=k[n>>2]|0;o=c;b=k[o+4>>2]|0;n=a+496|0;k[n>>2]=k[o>>2];k[n+4>>2]=b;n=$q(u,c)|0;if(n){b:do if((Qr(a,n)|0)==0?(m=(i[u+144>>0]|0)==1?1:d,q=u+16|0,h=k[(k[q>>2]|0)+(t<<4)>>2]|0,(Xq(a,18,(m|0)==1?13184:13208,0,h)|0)==0):0){d=(m|0)!=0;if(!e)b=d?4:2;else b=d?6:8;o=(f|0)!=0;if(!o?(Xq(a,b,n,0,h)|0)!=0:0)break;do if(!(i[a+451>>0]|0)){d=k[(k[q>>2]|0)+(t<<4)>>2]|0;if(Ln(a)|0)break b;if(!(di(u,n,d)|0)){if(!(gq(u,n,d)|0))break;k[p>>2]=n;yh(a,37048,p);break b}if(!g){k[p>>2]=c;yh(a,37024,p);break b}else{Fr(a,t);break b}}while(0);m=rh(u,76,0)|0;if(!m){i[u+65>>0]=1;k[a+12>>2]=7;q=a+64|0;k[q>>2]=(k[q>>2]|0)+1;break}h=m+0|0;d=h+76|0;do{i[h>>0]=0;h=h+1|0}while((h|0)<(d|0));k[m>>2]=n;j[m+36>>1]=-1;h=k[(k[q>>2]|0)+(t<<4)+12>>2]|0;k[m+68>>2]=h;j[m+40>>1]=1;j[m+28>>1]=200;k[a+484>>2]=m;if((i[a+18>>0]|0)==0?(dw(n,26576)|0)==0:0)k[h+72>>2]=m;if(i[u+145>>0]|0)break a;c=Tq(a)|0;if(!c)break a;q=k[a+408>>2]|0;Fr(a,t);h=1<>2]=k[q>>2]|h;if(o)Bh(c,146,0,0,0)|0;m=a+72|0;b=k[m>>2]|0;n=b+1|0;k[a+384>>2]=n;o=b+2|0;k[a+388>>2]=o;b=b+3|0;k[m>>2]=b;Bh(c,51,t,b,2)|0;m=c+96|0;k[m>>2]=k[m>>2]|h;m=Bh(c,45,b,0,0)|0;Bh(c,25,(k[u+24>>2]&32768|0)!=0?1:4,b,0)|0;Bh(c,52,t,2,b)|0;Bh(c,25,l[u+62>>0]|0,b,0)|0;Bh(c,52,t,5,b)|0;d=c+32|0;h=k[d>>2]|0;if(h>>>0>m>>>0)k[(k[c+4>>2]|0)+(m*20|0)+8>>2]=h;k[(k[c+24>>2]|0)+88>>2]=h+-1;if(!(f|e)){q=Bh(c,121,t,o,0)|0;k[a+416>>2]=q}else Bh(c,25,0,o,0)|0;os(a,t);Bh(c,74,0,n,0)|0;Bh(c,28,0,b,0)|0;Bh(c,75,0,b,n)|0;h=k[c+4>>2]|0;if(h)i[h+(((k[d>>2]|0)+-1|0)*20|0)+3>>0]=8;Bh(c,61,0,0,0)|0;break a}while(0);rg(u,n)}}while(0);r=v;return}function _q(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,n=0,o=0,p=0,q=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;O=r;r=r+176|0;if((r|0)>=(s|0))ka();J=O+80|0;G=O+168|0;D=O;E=O+136|0;F=O+112|0;K=k[a>>2]|0;a:do if((!((c|0)==0&(e|0)==0)?(L=K+65|0,(i[L>>0]|0)==0):0)?(M=a+484|0,N=k[M>>2]|0,(N|0)!=0):0){I=K+145|0;if(i[I>>0]|0)k[N+32>>2]=k[K+140>>2];b:do if(d&32){n=N+44|0;h=l[n>>0]|0;if(h&8){yh(a,36584,J);break a}if(!(h&4)){k[J>>2]=k[N>>2];yh(a,36640,J);break}i[n>>0]=h|32;o=k[a+8>>2]|0;n=k[a+416>>2]|0;if(n){if((n|0)<0)n=(k[o+32>>2]|0)+-1|0;if(!(i[(k[o>>2]|0)+65>>0]|0))n=(k[o+4>>2]|0)+(n*20|0)|0;else n=29120;i[n>>0]=120}n=k[a+420>>2]|0;if(n){if((n|0)<0)n=(k[o+32>>2]|0)+-1|0;if(!(i[(k[o>>2]|0)+65>>0]|0))h=(k[o+4>>2]|0)+(n*20|0)|0;else h=29120;i[h>>0]=16}h=N+36|0;if((j[h>>1]|0)>-1){n=qr(a,0,0)|0;if(!n)break;z=ph(k[a>>2]|0,k[(k[N+4>>2]|0)+((j[h>>1]|0)*24|0)>>2]|0)|0;A=k[n+4>>2]|0;k[A+4>>2]=z;i[A+12>>0]=i[a+448>>0]|0;n=er(a,0,0,0,n,l[N+45>>0]|0,0,0,0,0)|0;if(!n)break;u=n+51|0;i[u>>0]=i[u>>0]&-4|2;j[h>>1]=-1;u=j[n+46>>1]|0}else{n=k[N+8>>2]|0;c:do if(!n)n=0;else while(1){if((i[n+51>>0]&3)==2)break c;n=k[n+20>>2]|0;if(!n){n=0;break}}while(0);v=n+46|0;o=j[v>>1]|0;if((o&65535)>1){t=k[n+4>>2]|0;q=n+48|0;u=1;h=1;do{f=j[t+(u<<1)>>1]|0;p=h;g=t;while(1){if((p|0)<=0){C=36;break}if((j[g>>1]|0)==f<<16>>16){C=35;break}else{p=p+-1|0;g=g+2|0}}if((C|0)==35){C=0;j[q>>1]=(j[q>>1]|0)+-1<<16>>16}else if((C|0)==36){C=0;j[t+(h<<1)>>1]=f;o=j[v>>1]|0;h=h+1|0}u=u+1|0}while((u|0)<(o&65535|0))}else h=1;u=h&65535;j[v>>1]=u}p=n+51|0;o=i[p>>0]|32;i[p>>0]=o;A=u&65535;if(!(i[K+147>>0]|0)){if(u<<16>>16){o=k[n+4>>2]|0;h=k[N+4>>2]|0;g=0;do{i[h+((j[o+(g<<1)>>1]|0)*24|0)+20>>0]=1;g=g+1|0}while((g|0)<(A|0));o=i[p>>0]|0}i[p>>0]=o|8}k[n+40>>2]=k[N+32>>2];p=k[N+8>>2]|0;if(p){x=u<<16>>16==0;y=n+4|0;z=n+32|0;do{d:do if((i[p+51>>0]&3)!=2){do if(x)o=j[p+46>>1]|0;else{q=k[p+4>>2]|0;o=j[p+46>>1]|0;g=o&65535;f=k[y>>2]|0;w=0;h=0;do{t=j[f+(w<<1)>>1]|0;v=g;u=q;while(1){if((v|0)<=0){u=1;break}if((j[u>>1]|0)==t<<16>>16){u=0;break}else{v=v+-1|0;u=u+2|0}}h=u+h|0;w=w+1|0}while((w|0)<(A|0));g=p+46|0;if(!h)break;if(ps(K,p,(o&65535)+h|0)|0)break b;if(x)break d;t=j[g>>1]|0;w=p+4|0;f=p+32|0;v=t;u=0;t=t&65535;while(1){o=k[w>>2]|0;h=j[(k[y>>2]|0)+(u<<1)>>1]|0;v=v&65535;q=o;while(1){if((v|0)<=0){C=63;break}if((j[q>>1]|0)==h<<16>>16)break;else{v=v+-1|0;q=q+2|0}}if((C|0)==63){C=0;j[o+(t<<1)>>1]=h;k[(k[f>>2]|0)+(t<<2)>>2]=k[(k[z>>2]|0)+(u<<2)>>2];t=t+1|0}u=u+1|0;if((u|0)>=(A|0))break d;v=j[g>>1]|0}}while(0);j[p+48>>1]=o}while(0);p=k[p+20>>2]|0}while((p|0)!=0)}v=N+38|0;o=j[v>>1]|0;h=o<<16>>16;if((A|0)>=(h|0)){j[n+48>>1]=o;break}if((ps(K,n,h)|0)==0?(B=j[v>>1]|0,B<<16>>16>0):0){q=n+4|0;u=n+32|0;o=B;t=0;n=A;do{g=k[q>>2]|0;p=n;h=g;while(1){if((p|0)<=0){C=74;break}if((j[h>>1]|0)==(t|0))break;else{p=p+-1|0;h=h+2|0}}if((C|0)==74){C=0;j[g+(n<<1)>>1]=t;k[(k[u>>2]|0)+(n<<2)>>2]=11152;o=j[v>>1]|0;n=n+1|0}t=t+1|0}while((t|0)<(o<<16>>16|0))}}while(0);C=N+68|0;n=k[C>>2]|0;e:do if(n){h=k[K+20>>2]|0;if((h|0)>0){g=k[K+16>>2]|0;o=0;while(1){f=o+1|0;if((k[g+(o<<4)+12>>2]|0)==(n|0))break e;if((f|0)<(h|0))o=f;else{o=f;break}}}else o=0}else o=-1e6;while(0);g=k[N+24>>2]|0;f:do if(g){k[E+0>>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;k[E+24>>2]=0;k[E+28>>2]=0;n=D+0|0;h=n+80|0;do{k[n>>2]=0;n=n+4|0}while((n|0)<(h|0));k[D>>2]=1;k[D+16>>2]=k[N>>2];k[D+24>>2]=N;k[D+48>>2]=-1;k[E>>2]=a;k[E+4>>2]=D;j[E+28>>1]=4;n=g+4|0;if((k[g>>2]|0)>0){h=0;do{if(qs(E,k[(k[n>>2]|0)+(h*20|0)>>2]|0)|0)break f;h=h+1|0}while((h|0)<(k[g>>2]|0))}}while(0);A=N+38|0;f=j[A>>1]|0;if(f<<16>>16>0){n=f<<16>>16;h=k[N+4>>2]|0;g=0;while(1){g=(l[h+22>>0]|0)+g|0;n=n+-1|0;if((n|0)<=0)break;else h=h+24|0}}else g=0;g=ks(((m[N+36>>1]|0)>>>15&65535)+g<<2,0)|0;j[N+42>>1]=g;g=k[N+8>>2]|0;if(g)do{rs(g);g=k[g+20>>2]|0}while((g|0)!=0);if(!(i[I>>0]|0)){B=Tq(a)|0;if(!B)break;Bh(B,61,0,0,0)|0;y=(k[N+12>>2]|0)==0;h=y?36672:36680;y=y?31232:35480;do if(!e){g=d<<24>>24==0?c:a+504|0;e=k[g>>2]|0;n=k[a+496>>2]|0;f=e-n|0;if((i[e>>0]|0)!=59)f=(k[g+4>>2]|0)+f|0;k[J>>2]=h;k[J+4>>2]=f;k[J+8>>2]=n;n=a+388|0;f=N;h=zh(K,36688,J)|0}else{n=a+388|0;Bh(B,55,1,k[n>>2]|0,o)|0;h=k[B+4>>2]|0;if(h)i[h+(((k[B+32>>2]|0)+-1|0)*20|0)+3>>0]=4;k[a+68>>2]=2;i[F>>0]=14;k[F+4>>2]=1;i[F+1>>0]=0;k[F+8>>2]=0;k[F+12>>2]=0;nr(a,e,F)|0;Bh(B,61,1,0,0)|0;if(!(k[a+64>>2]|0)){f=ss(a,e)|0;if(!f)break a;F=f+38|0;j[A>>1]=j[F>>1]|0;e=f+4|0;k[N+4>>2]=k[e>>2];j[F>>1]=0;k[e>>2]=0;pg(K,f)}z=N+4|0;w=j[A>>1]|0;if(w<<16>>16>0){q=w<<16>>16;t=0;h=0;u=k[z>>2]|0;while(1){f=k[u>>2]|0;g=0;while(1){p=i[f>>0]|0;if(p<<24>>24==34)g=g+1|0;else if(!(p<<24>>24))break;f=f+1|0;g=g+1|0}h=h+7+g|0;t=t+1|0;if((t|0)==(q|0))break;else u=u+24|0}p=h+2|0}else p=2;f=k[N>>2]|0;h=0;while(1){g=i[f>>0]|0;if(!(g<<24>>24))break;else if(g<<24>>24==34)h=h+1|0;f=f+1|0;h=h+1|0}u=h+p|0;x=(u|0)<50;p=x?10360:36880;v=x?20240:36888;x=x?33952:36896;u=((w<<16>>16)*6|0)+35+u|0;h=vg(u,((u|0)<0)<<31>>31)|0;if(!h){i[L>>0]=1;f=N;h=0;break}fd(u,h,36904,J)|0;g=h;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;k[G>>2]=g-h&1073741823;ts(h,G,k[N>>2]|0);f=k[G>>2]|0;q=f+1|0;k[G>>2]=q;i[h+f>>0]=40;f=u-q|0;g=h+q|0;if((j[A>>1]|0)>0){w=0;t=k[z>>2]|0;while(1){fd(f,g,p,J)|0;g=h+q|0;if(!g)g=0;else{p=g;while(1)if(!(i[p>>0]|0))break;else p=p+1|0;g=p-g&1073741823}k[G>>2]=g+q;ts(h,G,k[t>>2]|0);g=k[36920+((i[t+21>>0]|0)+-65<<2)>>2]|0;p=g;while(1)if(!(i[p>>0]|0))break;else p=p+1|0;q=p-g&1073741823;p=k[G>>2]|0;pw(h+p|0,g|0,q|0)|0;q=p+q|0;k[G>>2]=q;p=w+1|0;f=u-q|0;g=h+q|0;if((p|0)<(j[A>>1]|0)){w=p;t=t+24|0;p=v}else break}}k[J>>2]=x;fd(f,g,10344,J)|0;f=N}while(0);g=K+16|0;d=k[f>>2]|0;F=k[n>>2]|0;e=k[a+384>>2]|0;k[J>>2]=k[(k[g>>2]|0)+(o<<4)>>2];k[J+4>>2]=(o|0)==1?13184:13208;k[J+8>>2]=y;k[J+12>>2]=d;k[J+16>>2]=d;k[J+20>>2]=F;k[J+24>>2]=h;k[J+28>>2]=e;Gr(a,36704,J);rg(K,h);Ir(a,o);if((i[N+44>>0]&8)!=0?(H=k[g>>2]|0,(k[(k[H+(o<<4)+12>>2]|0)+72>>2]|0)==0):0){k[J>>2]=k[H+(o<<4)>>2];Gr(a,36792,J)}k[J>>2]=k[f>>2];Nr(B,o,zh(K,36840,J)|0);if(!(i[I>>0]|0))break}else f=N;if(Nk((k[C>>2]|0)+8|0,k[f>>2]|0,N)|0){i[L>>0]=1;break}k[M>>2]=0;e=K+24|0;k[e>>2]=k[e>>2]|2;if(!(k[N+12>>2]|0)){e=k[a+496>>2]|0;e=(Sn(e,(k[((k[b>>2]|0)==0?c:b)>>2]|0)-e|0)|0)+13|0;k[N+48>>2]=e}}while(0);r=O;return}function $q(a,b){a=a|0;b=b|0;var c=0,d=0;if(!b)c=0;else{d=k[b>>2]|0;b=k[b+4>>2]|0;if((d|0)!=0?(c=ow(b|0,0,1,0)|0,c=rh(a,c,L)|0,(c|0)!=0):0){pw(c|0,d|0,b|0)|0;i[c+b>>0]=0}else c=0;qo(c)}return c|0}function ar(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;j=r;r=r+16|0;if((r|0)>=(s|0))ka();h=j;a:do if(a){d=i[a>>0]|0;b:do if(!(d<<24>>24)){c=67;d=0}else{f=d;c=67;e=0;d=0;do{e=l[9328+(f&255)>>0]|0|e<<8;a=a+1|0;if((e|0)==1651273570)if(c<<24>>24==69|c<<24>>24==67){m=i[a>>0]|0;f=m;c=65;e=1651273570;d=m<<24>>24==40?a:d}else g=14;else if((e|0)==1718382433)if(c<<24>>24==67){c=69;e=1718382433;g=5}else g=13;else if((e|0)==1667785074){c=66;e=1667785074;d=a;g=5}else if((e|0)==1952807028){c=66;g=5}else if((e|0)==1685026146)if(c<<24>>24==67){c=69;e=1685026146;g=5}else g=13;else if((e|0)==1919246700)if(c<<24>>24==67){c=69;e=1919246700;g=5}else g=14;else if((e|0)!=1668050786)if((e&16777215|0)==6909556){c=68;break b}else g=5;else{c=66;g=5}if((g|0)==13)g=5;else if((g|0)==14)g=5;if((g|0)==5){g=0;f=i[a>>0]|0}}while(f<<24>>24!=0)}while(0);if((b|0)!=0?(i[b>>0]=1,c<<24>>24<67):0){if(!d){i[b>>0]=5;break}a=i[d>>0]|0;if(a<<24>>24){while(1){if(((a&255)+-48|0)>>>0<10)break;d=d+1|0;a=i[d>>0]|0;if(!(a<<24>>24))break a}k[h>>2]=0;In(d,h)|0;d=((k[h>>2]|0)/4|0)+1|0;d=(d|0)>255?255:d;k[h>>2]=d;i[b>>0]=d}}}else c=67;while(0);r=j;return c|0}function br(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;m=r;r=r+32|0;if((r|0)>=(s|0))ka();g=m;h=k[a>>2]|0;e=k[a+484>>2]|0;do if(e){d=(j[e+38>>1]|0)+-1|0;f=k[e+4>>2]|0;n=k[b>>2]|0;o=(l[h+145>>0]|0)+4|0;k[g+0>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;e=g+20|0;i[e>>0]=o;k[g>>2]=78;k[g+4>>2]=79;k[g+24>>2]=0;ws(g,n)|0;if(!(i[e>>0]|0)){k[g>>2]=k[f+(d*24|0)>>2];yh(a,36480,g);break}e=f+(d*24|0)+4|0;Lk(h,k[e>>2]|0);n=Rr(h,k[b>>2]|0,1,0)|0;k[e>>2]=n;f=f+(d*24|0)+8|0;rg(h,k[f>>2]|0);d=k[b+4>>2]|0;e=(k[b+8>>2]|0)-d|0;if((d|0)!=0?(c=ow(e|0,((e|0)<0)<<31>>31|0,1,0)|0,c=rh(h,c,L)|0,(c|0)!=0):0){pw(c|0,d|0,e|0)|0;i[c+e>>0]=0}else c=0;k[f>>2]=c}while(0);Lk(h,k[b>>2]|0);r=m;return}function cr(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+16|0;if((r|0)>=(s|0))ka();g=h;if((b|0)==72&(c|0)!=0&(d|0)!=0?(k[a+64>>2]|0)==0:0)b=xs(k[a>>2]|0,c,d)|0;else{b=sr(k[a>>2]|0,b,e,1)|0;ys(k[a>>2]|0,b,c,d)}if((b|0)!=0?(f=k[(k[a>>2]|0)+100>>2]|0,(f|0)<(k[b+24>>2]|0)):0){k[g>>2]=f;yh(a,27152,g)}r=h;return b|0}function dr(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,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+16|0;if((r|0)>=(s|0))ka();z=A;x=k[a+484>>2]|0;do if((x|0)!=0?(i[a+451>>0]|0)==0:0){y=x+44|0;g=l[y>>0]|0;if(g&4){k[z>>2]=k[x>>2];yh(a,36376,z);break}v=g|4;i[y>>0]=v;w=(b|0)==0;if(w){g=(j[x+38>>1]|0)+-1|0;t=k[x+4>>2]|0;f=t+(g*24|0)+23|0;i[f>>0]=l[f>>0]|1;f=g;h=1;g=k[t+(g*24|0)+12>>2]|0}else{u=k[b>>2]|0;if((u|0)>0){p=b+4|0;q=x+4|0;o=j[x+38>>1]|0;t=0;g=0;do{a:do if(o<<16>>16>0){m=k[(k[p>>2]|0)+(t*20|0)+4>>2]|0;n=k[q>>2]|0;h=0;while(1){f=h+1|0;if(!(id(m,k[n+(h*24|0)>>2]|0)|0))break;if((f|0)<(o<<16>>16|0))h=f;else break a}f=n+(h*24|0)+23|0;i[f>>0]=l[f>>0]|1;f=h;g=k[n+(h*24|0)+12>>2]|0}else f=0;while(0);t=t+1|0}while((t|0)!=(u|0))}else{f=-1;g=0}h=(u|0)==1}if(h&(g|0)!=0?(id(g,11144)|0|e|0)==0:0){j[x+36>>1]=f;i[x+45>>0]=c;i[y>>0]=v|d<<3;if(w){b=0;break}i[a+448>>0]=i[(k[b+4>>2]|0)+12>>0]|0;break}if(d){yh(a,36424,z);break}g=k[a+8>>2]|0;f=(g|0)!=0;if(f){t=Bh(g,156,0,0,0)|0;k[a+420>>2]=t}b=er(a,0,0,0,b,c,0,0,e,0)|0;if((b|0)!=0?(t=b+51|0,i[t>>0]=i[t>>0]&-4|2,f):0){b=k[a+420>>2]|0;f=k[g+32>>2]|0;if(f>>>0>b>>>0)k[(k[g+4>>2]|0)+(b*20|0)+8>>2]=f;k[(k[g+24>>2]|0)+88>>2]=f+-1;b=0}else b=0}while(0);Sk(k[a>>2]|0,b);r=A;return}function er(a,b,c,d,e,f,g,h,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;n=n|0;o=o|0;var p=0,q=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;V=r;r=r+144|0;if((r|0)>=(s|0))ka();S=V;B=V+112|0;u=V+88|0;Q=V+84|0;K=V+80|0;U=k[a>>2]|0;k[Q>>2]=0;k[K>>2]=0;P=U+65|0;a:do if(((i[P>>0]|0)==0?(i[a+451>>0]|0)==0:0)?(Ln(a)|0)==0:0){R=(d|0)!=0;b:do if(R){b=jr(a,b,c,Q)|0;if((b|0)<0){p=0;c=0;break a}if((i[U+145>>0]|0)==0?(p=Or(a,d)|0,(k[c+4>>2]|0)==0&(p|0)!=0):0)b=(k[p+68>>2]|0)==(k[(k[U+16>>2]|0)+28>>2]|0)?1:b;c=k[Q>>2]|0;p=k[a>>2]|0;k[u>>2]=a;p=k[p+16>>2]|0;k[u+12>>2]=k[p+(b<<4)>>2];k[u+4>>2]=k[p+(b<<4)+12>>2];k[u+16>>2]=20632;k[u+20>>2]=c;p=(b|0)==1;k[u+8>>2]=p&1;Pr(u,d)|0;t=Zr(a,0,d+8|0)|0;if(!t){p=0;c=0;break a}if(p?(k[(k[U+16>>2]|0)+28>>2]|0)!=(k[t+68>>2]|0):0){k[S>>2]=k[t>>2];yh(a,35920,S);p=0;c=0;break a}if((i[t+44>>0]&32)!=0?(q=k[t+8>>2]|0,(q|0)!=0):0){p=q;while(1){if((i[p+51>>0]&3)==2){q=b;J=p;u=t;break b}p=k[p+20>>2]|0;if(!p){q=b;J=0;u=t;break}}}else{q=b;J=0;u=t}}else{u=k[a+484>>2]|0;if(!u){p=0;c=0;break a}b=k[u+68>>2]|0;if(b){p=k[U+20>>2]|0;if((p|0)>0){c=k[U+16>>2]|0;t=0;while(1){q=t+1|0;if((k[c+(t<<4)+12>>2]|0)==(b|0)){c=0;q=t;J=0;break b}if((q|0)<(p|0))t=q;else{c=0;J=0;break}}}else{c=0;q=0;J=0}}else{c=0;q=-1e6;J=0}}while(0);O=U+16|0;C=k[O>>2]|0;b=C+(q<<4)|0;x=k[u>>2]|0;if(((Kc(x,25568,7)|0)==0?(i[U+145>>0]|0)==0:0)?(Kc(x+7|0,35976,9)|0)!=0:0){k[S>>2]=x;yh(a,35992,S);p=0;c=0;break}if(k[u+12>>2]|0){yh(a,36024,S);p=0;c=0;break}N=u+44|0;if(i[N>>0]&16){yh(a,36056,S);p=0;c=0;break}D=(c|0)==0;if(!D){c=$q(U,c)|0;if(!c){p=0;c=0;break}if(Qr(a,c)|0){p=0;break}if((i[U+145>>0]|0)==0?(di(U,c,0)|0)!=0:0){k[S>>2]=c;yh(a,36096,S);p=0;break}if(gq(U,c,k[b>>2]|0)|0)if(!o){k[S>>2]=c;yh(a,36136,S);p=0;break}else{Fr(a,q);p=0;break}else t=c}else{p=k[u+8>>2]|0;if(!p)t=1;else{t=1;do{t=t+1|0;p=k[p+20>>2]|0}while((p|0)!=0)}k[S>>2]=x;k[S+4>>2]=t;t=zh(U,36160,S)|0;if(!t){p=0;c=0;break}}b=k[b>>2]|0;p=(q|0)==1;L=p?13184:13208;if((Xq(a,18,L,0,b)|0)==0?(Xq(a,p?3:1,t,k[u>>2]|0,b)|0)==0:0){if(!e){e=qr(a,0,0)|0;if(!e){e=0;p=0;c=t;break}F=ph(k[a>>2]|0,k[(k[u+4>>2]|0)+(((j[u+38>>1]|0)+-1|0)*24|0)>>2]|0)|0;G=k[e+4>>2]|0;k[G+4>>2]=F;i[G+12>>0]=n}A=k[e>>2]|0;if((A|0)>0){x=k[e+4>>2]|0;v=0;b=0;do{p=k[x+(v*20|0)>>2]|0;if(p){c=k[p+8>>2]|0;if(!c)p=1;else{p=c;while(1)if(!(i[p>>0]|0))break;else p=p+1|0;p=(p-c&1073741823)+1|0}b=p+b|0}v=v+1|0}while((v|0)<(A|0));c=b}else c=0;if(!t)p=0;else{b=t;while(1)if(!(i[b>>0]|0))break;else b=b+1|0;p=b-t&1073741823}F=(J|0)!=0;if(F)b=m[J+46>>1]|0;else b=1;M=zs(U,A+b&65535,c+1+p|0,K)|0;c:do if(!(i[P>>0]|0)){E=k[K>>2]|0;k[M>>2]=E;I=p+1|0;z=E+I|0;k[K>>2]=z;pw(E|0,t|0,I|0)|0;k[M+12>>2]=u;I=M+50|0;i[I>>0]=f;E=M+51|0;i[E>>0]=i[E>>0]&-12|((f|0)!=0&1)<<3&255|D&1;H=M+24|0;k[H>>2]=k[(k[O>>2]|0)+(q<<4)+12>>2];b=k[e>>2]|0;G=M+46|0;j[G>>1]=b;if(h){k[B+0>>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;x=S+0|0;c=x+80|0;do{k[x>>2]=0;x=x+4|0}while((x|0)<(c|0));k[S>>2]=1;k[S+16>>2]=k[u>>2];k[S+24>>2]=u;k[S+48>>2]=-1;k[B>>2]=a;k[B+4>>2]=S;j[B+28>>1]=16;qs(B,h)|0;k[M+36>>2]=h;b=k[e>>2]|0}w=(l[(k[C+(q<<4)+12>>2]|0)+76>>0]|0)>3;d:do if((b|0)>0){D=u+4|0;C=u+38|0;B=M+4|0;h=U+145|0;b=M+32|0;v=M+28|0;c=0;n=k[e+4>>2]|0;while(1){p=k[n+4>>2]|0;x=j[C>>1]|0;e:do if(x<<16>>16>0){A=0;y=k[D>>2]|0;while(1){if(!(id(p,k[y>>2]|0)|0)){o=A;break e}A=A+1|0;if((A|0)<(x<<16>>16|0))y=y+24|0;else{o=A;break}}}else o=0;while(0);if((o|0)>=(x<<16>>16|0))break;j[(k[B>>2]|0)+(c<<1)>>1]=o;A=k[n>>2]|0;if(!A){A=k[(k[D>>2]|0)+(o*24|0)+16>>2]|0;A=(A|0)!=0?A:11152}else{y=k[A+8>>2]|0;if(!y)A=1;else{A=y;while(1)if(!(i[A>>0]|0))break;else A=A+1|0;A=(A-y&1073741823)+1|0}pw(z|0,y|0,A|0)|0;y=k[K>>2]|0;z=y+A|0;k[K>>2]=z;A=y}if((i[h>>0]|0)==0?(hr(a,A)|0)==0:0){c=0;p=0;T=134;break c}k[(k[b>>2]|0)+(c<<2)>>2]=A;i[(k[v>>2]|0)+c>>0]=w?i[n+12>>0]|0:0;if(!(i[(k[D>>2]|0)+(o*24|0)+20>>0]|0))i[E>>0]=i[E>>0]&-9;c=c+1|0;if((c|0)<(k[e>>2]|0))n=n+20|0;else break d}k[S>>2]=k[u>>2];k[S+4>>2]=p;yh(a,36184,S);i[a+17>>0]=1;c=0;p=0;T=134;break c}else c=0;while(0);do if(F){w=J+46|0;x=j[w>>1]|0;if(!(x<<16>>16))break;B=J+4|0;C=M+4|0;D=M+48|0;n=J+32|0;o=M+32|0;b=J+28|0;v=M+28|0;h=0;do{y=j[(k[B>>2]|0)+(h<<1)>>1]|0;p=k[C>>2]|0;A=m[G>>1]|0;z=p;while(1){if((A|0)<=0){T=92;break}if((j[z>>1]|0)==y<<16>>16){T=91;break}else{A=A+-1|0;z=z+2|0}}if((T|0)==91){T=0;j[D>>1]=(j[D>>1]|0)+-1<<16>>16}else if((T|0)==92){T=0;j[p+(c<<1)>>1]=y;k[(k[o>>2]|0)+(c<<2)>>2]=k[(k[n>>2]|0)+(h<<2)>>2];i[(k[v>>2]|0)+c>>0]=i[(k[b>>2]|0)+h>>0]|0;x=j[w>>1]|0;c=c+1|0}h=h+1|0}while((h|0)<(x&65535|0))}else{j[(k[M+4>>2]|0)+(c<<1)>>1]=-1;k[(k[M+32>>2]|0)+(c<<2)>>2]=11152}while(0);hq(M);h=a+484|0;b=k[h>>2]|0;if(!b){rs(M);b=k[h>>2]|0}f:do if((u|0)==(b|0)){p=k[u+8>>2]|0;if(!p)break;y=j[G>>1]|0;z=M+4|0;A=M+32|0;while(1){if((j[p+46>>1]|0)==y<<16>>16){g:do if(!(y<<16>>16)){h=0;b=0}else{v=k[p+4>>2]|0;w=k[z>>2]|0;x=p+32|0;b=0;while(1){if((j[v+(b<<1)>>1]|0)!=(j[w+(b<<1)>>1]|0)){h=y;break g}h=k[(k[x>>2]|0)+(b<<2)>>2]|0;c=k[(k[A>>2]|0)+(b<<2)>>2]|0;if((h|0)!=(c|0)?(id(h,c)|0)!=0:0){h=y;break g}b=b+1|0;if((b|0)>=(y&65535|0)){h=y;break}}}while(0);if((b|0)==(h&65535|0))break}p=k[p+20>>2]|0;if(!p)break f}b=p+50|0;c=i[b>>0]|0;h=i[I>>0]|0;if(c<<24>>24==h<<24>>24){c=0;break c}if(!(c<<24>>24==10|h<<24>>24==10)){k[S>>2]=0;yh(a,36216,S);c=i[b>>0]|0}if(c<<24>>24!=10){c=0;T=134;break c}i[b>>0]=i[I>>0]|0;c=0;break c}while(0);c=U+145|0;do if(!(i[c>>0]|0)){if(k[a+64>>2]|0){T=126;break}if(!((i[N>>0]&32)==0|R)){T=126;break}p=a+72|0;h=(k[p>>2]|0)+1|0;k[p>>2]=h;p=Tq(a)|0;if(!p){c=0;p=0;T=134;break c}G=k[a+408>>2]|0;G=(G|0)==0?a:G;Fr(a,q);F=G+328|0;k[F>>2]=k[F>>2]|1<>0]=l[G>>0]|1;Bh(p,120,q,h,0)|0;if(!g)b=0;else{b=k[k[Q>>2]>>2]|0;G=(k[a+504>>2]|0)-b+(k[a+508>>2]|0)|0;F=G+-1|0;G=(i[b+F>>0]|0)==59?F:G;k[S>>2]=(f|0)==0?10360:36288;k[S+4>>2]=G;k[S+8>>2]=b;b=zh(U,36264,S)|0}F=k[M>>2]|0;G=k[u>>2]|0;k[S>>2]=k[(k[O>>2]|0)+(q<<4)>>2];k[S+4>>2]=L;k[S+8>>2]=F;k[S+12>>2]=G;k[S+16>>2]=h;k[S+20>>2]=b;Gr(a,36296,S);rg(U,b);if(!R)break;As(a,M,h);Ir(a,q);k[S>>2]=k[M>>2];Nr(p,q,zh(U,36344,S)|0);Bh(p,144,0,0,0)|0;T=126}else{if(Nk((k[H>>2]|0)+24|0,k[M>>2]|0,M)|0){i[P>>0]=1;c=0;p=0;T=134;break c}G=U+24|0;k[G>>2]=k[G>>2]|2;if(!R)break;k[M+40>>2]=k[U+140>>2];T=126}while(0);if((T|0)==126?!((i[c>>0]|0)!=0|(d|0)==0):0){c=0;p=0;T=134;break}c=k[u+8>>2]|0;do if((f|0)==5){if(!c){c=0;break}if((i[c+50>>0]|0)==5)break;do{p=c+20|0;c=k[p>>2]|0;if(!c){c=0;break}}while((i[c+50>>0]|0)!=5);k[M+20>>2]=c;k[p>>2]=M;h=0;p=M;c=t;break a}while(0);k[M+20>>2]=c;k[u+8>>2]=M;h=0;p=M;c=t;break a}else{c=h;p=0;T=134}while(0);if((T|0)==134)if(!M){h=c;c=t;break}Ok(U,M);h=c;c=t}else{p=0;c=t}}else{p=0;c=0}while(0);Lk(U,h);Sk(U,e);Io(U,d);rg(U,c);r=V;return p|0}function fr(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a+484>>2]|0;d=k[a>>2]|0;if(((c|0)!=0?(i[a+451>>0]|0)==0:0)?(j[(k[(k[(k[d+16>>2]|0)+(l[d+144>>0]<<4)+4>>2]|0)+4>>2]|0)+22>>1]&1)==0:0){d=c+24|0;c=qr(a,k[d>>2]|0,b)|0;k[d>>2]=c;if(k[a+324>>2]|0)rr(a,c,a+320|0,1)}else Lk(d,b);return}function gr(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,l=0,m=0,n=0,o=0,p=0,q=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;if((r|0)>=(s|0))ka();z=C;B=k[a>>2]|0;A=k[a+484>>2]|0;a:do if((A|0)!=0?(i[a+451>>0]|0)==0:0){w=(b|0)==0;do if(w){y=j[A+38>>1]|0;g=(y<<16>>16)+-1|0;if(y<<16>>16<1){f=0;break a}if(d)if((k[d>>2]|0)==1){g=1;f=13}else{k[z>>2]=k[(k[A+4>>2]|0)+(g*24|0)>>2];k[z+4>>2]=c;yh(a,35712,z);f=0;break a}else{g=1;f=12}}else{if(!d){g=k[b>>2]|0;f=12;break}g=k[d>>2]|0;if((g|0)==(k[b>>2]|0))f=13;else{yh(a,35776,z);f=0;break a}}while(0);if((f|0)==12){h=c+4|0;n=h;t=0;h=(g<<3)+37+(k[h>>2]|0)|0;y=g}else if((f|0)==13){n=c+4|0;h=(g<<3)+37+(k[n>>2]|0)|0;o=k[d>>2]|0;if((o|0)>0){p=k[d+4>>2]|0;q=0;do{m=k[p+(q*20|0)+4>>2]|0;if(!m)f=1;else{l=m;while(1)if(!(i[l>>0]|0))break;else l=l+1|0;f=(l-m&1073741823)+1|0}h=f+h|0;q=q+1|0}while((q|0)<(o|0));t=1;y=g}else{t=1;y=g}}f=rh(B,h,((h|0)<0)<<31>>31)|0;if(f){kw(f|0,0,h|0)|0;k[f>>2]=A;x=A+16|0;k[f+4>>2]=k[x>>2];u=f+36|0;l=u+(y<<3)|0;v=f+8|0;k[v>>2]=l;pw(l|0,k[c>>2]|0,k[n>>2]|0)|0;i[l+(k[n>>2]|0)>>0]=0;qo(l);l=l+((k[n>>2]|0)+1)|0;k[f+20>>2]=y;b:do if(!w){if((y|0)>0){h=A+4|0;c=b+4|0;m=j[A+38>>1]|0;g=0;while(1){c:do if(m<<16>>16>0){q=k[h>>2]|0;p=k[(k[c>>2]|0)+(g*20|0)+4>>2]|0;o=0;while(1){n=o+1|0;if(!(id(k[q+(o*24|0)>>2]|0,p)|0)){n=o;break}if((n|0)<(m<<16>>16|0))o=n;else break c}k[u+(g<<3)>>2]=n}else n=0;while(0);if((n|0)>=(m<<16>>16|0))break;g=g+1|0;if((g|0)>=(y|0))break b}k[z>>2]=k[(k[c>>2]|0)+(g*20|0)+4>>2];yh(a,35872,z);break a}}else k[u>>2]=(j[A+38>>1]|0)+-1;while(0);if(t&(y|0)>0){m=d+4|0;n=0;while(1){h=k[(k[m>>2]|0)+(n*20|0)+4>>2]|0;if(!h)g=0;else{g=h;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;g=g-h&1073741823}k[u+(n<<3)+4>>2]=l;pw(l|0,h|0,g|0)|0;i[l+g>>0]=0;n=n+1|0;if((n|0)==(y|0))break;else l=l+(g+1)|0}}i[f+24>>0]=0;i[f+25>>0]=e;i[f+26>>0]=e>>>8;g=Nk((k[A+68>>2]|0)+56|0,k[v>>2]|0,f)|0;if((g|0)==(f|0)){i[B+65>>0]=1;break}if(g){k[f+12>>2]=g;k[g+16>>2]=f}k[x>>2]=f;f=0}else f=0}else f=0;while(0);rg(B,f);Sk(B,b);Sk(B,d);r=C;return}function hr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a>>2]|0;d=i[c+62>>0]|0;e=i[c+145>>0]|0;c=bo(c,d,b,e&255)|0;do if(!(e<<24>>24)){if((c|0)!=0?(k[c+12>>2]|0)!=0:0)break;c=Bs(a,d,c,b)|0}while(0);return c|0}function ir(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,m=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+16|0;if((r|0)>=(s|0))ka();w=y;q=y+12|0;x=k[a>>2]|0;do if(!(i[x+65>>0]|0)){d=(d|0)!=0;if(d){p=x+68|0;i[p>>0]=(i[p>>0]|0)+1<<24>>24;v=Zr(a,c,b+8|0)|0;i[p>>0]=(i[p>>0]|0)+-1<<24>>24}else v=Zr(a,c,b+8|0)|0;if(!v){if(!d)break;Er(a,k[b+12>>2]|0);break}n=v+68|0;f=k[n>>2]|0;a:do if(f){d=k[x+20>>2]|0;if((d|0)>0){e=k[x+16>>2]|0;h=0;while(1){g=h+1|0;if((k[e+(h<<4)+12>>2]|0)==(f|0)){g=h;break a}if((g|0)<(d|0))h=g;else break}}else g=0}else g=-1e6;while(0);t=v+44|0;if((i[t>>0]&16)!=0?(mr(a,v)|0)!=0:0)break;h=(g|0)==1;u=h?13184:13208;d=k[(k[x+16>>2]|0)+(g<<4)>>2]|0;if(!(Xq(a,9,u,0,d)|0)){e=(c|0)!=0;do if(e){f=h?15:17;h=0}else{if(!(i[t>>0]&16)){f=h?13:11;h=0;break}h=v+60|0;while(1){h=k[h>>2]|0;if((k[h>>2]|0)==(x|0))break;else h=h+24|0}f=30;h=k[(k[h+4>>2]|0)+4>>2]|0}while(0);if((Xq(a,f,k[v>>2]|0,h,d)|0)==0?(Xq(a,9,k[v>>2]|0,0,d)|0)==0:0){h=k[v>>2]|0;if((Kc(h,25568,7)|0)==0?(Kc(h,35488,11)|0)!=0:0){k[w>>2]=h;yh(a,35504,w);break}d=v+12|0;f=(k[d>>2]|0)==0;if(e){if(f){k[w>>2]=h;yh(a,35536,w);break}}else if(!f){k[w>>2]=h;yh(a,35576,w);break}if(Tq(a)|0){o=a+408|0;f=k[o>>2]|0;f=(f|0)==0?a:f;Fr(a,g);p=1<>2]=k[e>>2]|p;f=f+20|0;i[f>>0]=l[f>>0]|1;Hr(a,g,28544,k[v>>2]|0);f=k[a>>2]|0;e=f+24|0;b:do if(((k[e>>2]&524288|0)!=0?(i[t>>0]&16)==0:0)?(k[d>>2]|0)==0:0){m=Tq(a)|0;q=gn((k[n>>2]|0)+56|0,k[v>>2]|0,q)|0;if((q|0)!=0?(k[q+8>>2]|0)!=0:0)h=0;else{h=k[v+16>>2]|0;if(!h)break;while(1){if(i[h+24>>0]|0)break;if(k[e>>2]&16777216)break;h=k[h+4>>2]|0;if(!h)break b}h=Cs(m)|0;Bh(m,135,1,h,0)|0}q=a+438|0;i[q>>0]=1;wr(a,Ds(f,b,0)|0,0);i[q>>0]=0;if(!(k[e>>2]&16777216)){Bh(m,135,0,(k[m+32>>2]|0)+2|0,0)|0;Es(a,787,2,0,-2,4)}if(h){f=k[m+24>>2]|0;d=~h;do if((h|0)<0){h=k[f+112>>2]|0;if(!h)break;k[h+(d<<2)>>2]=k[m+32>>2]}while(0);k[f+88>>2]=(k[m+32>>2]|0)+-1}}while(0);m=k[a>>2]|0;n=m+16|0;f=k[n>>2]|0;d=Tq(a)|0;q=k[o>>2]|0;q=(q|0)==0?a:q;Fr(a,g);o=q+328|0;k[o>>2]=k[o>>2]|p;q=q+20|0;i[q>>0]=l[q>>0]|1;if(i[t>>0]&16)Bh(d,146,0,0,0)|0;h=Fs(a,v)|0;if(h)do{Vr(a,h);h=k[h+32>>2]|0}while((h|0)!=0);f=f+(g<<4)|0;if(i[t>>0]&8){q=k[v>>2]|0;k[w>>2]=k[f>>2];k[w+4>>2]=q;Gr(a,35608,w)}q=k[v>>2]|0;k[w>>2]=k[f>>2];k[w+4>>2]=u;k[w+8>>2]=q;Gr(a,35656,w);if((c|0)==0?(i[t>>0]&16)==0:0)Gs(a,v);if(i[t>>0]&16){q=k[v>>2]|0;Ch(d,Bh(d,148,g,0,0)|0,q,0)}e=k[v>>2]|0;Ch(d,Bh(d,124,g,0,0)|0,e,0);Ir(a,g);d=k[(k[n>>2]|0)+(g<<4)+12>>2]|0;e=j[d+78>>1]|0;if(e&2){f=k[d+16>>2]|0;if(f){e=f;do{d=k[e+8>>2]|0;if(k[d+12>>2]|0){Qk(m,d);k[d+4>>2]=0;j[d+38>>1]=0}e=k[e>>2]|0}while((e|0)!=0);e=k[(k[n>>2]|0)+(g<<4)+12>>2]|0;d=e;e=j[e+78>>1]|0}j[d+78>>1]=e&65533}}}}}while(0);Io(x,b);r=y;return}function jr(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;h=r;r=r+16|0;if((r|0)>=(s|0))ka();f=h;e=k[a>>2]|0;do if((c|0)!=0?(k[c+4>>2]|0)!=0:0){if(i[e+145>>0]|0){yh(a,28488,f);c=a+64|0;k[c>>2]=(k[c>>2]|0)+1;c=-1;break}k[d>>2]=c;d=$q(e,b)|0;c=_h(e,d)|0;rg(e,d);if((c|0)<0){k[f>>2]=b;yh(a,28512,f);c=a+64|0;k[c>>2]=(k[c>>2]|0)+1;c=-1}}else g=7;while(0);if((g|0)==7){c=l[e+144>>0]|0;k[d>>2]=b}r=h;return c|0}function kr(a,b){a=a|0;b=b|0;a:do if(!b)b=0;else while(1){if(Mr(a,k[b>>2]|0)|0){b=1;break a}if(Pr(a,k[b+32>>2]|0)|0){b=1;break a}if(Lr(a,k[b+36>>2]|0)|0){b=1;break a}if(Mr(a,k[b+40>>2]|0)|0){b=1;break a}if(Lr(a,k[b+44>>2]|0)|0){b=1;break a}if(Mr(a,k[b+48>>2]|0)|0){b=1;break a}if(Lr(a,k[b+60>>2]|0)|0){b=1;break a}if(Lr(a,k[b+64>>2]|0)|0){b=1;break a}b=k[b+52>>2]|0;if(!b){b=0;break}}while(0);return b|0}function lr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if((b|0)!=0?(d=rh(a,72,0)|0,(d|0)!=0):0){f=Ur(a,k[b>>2]|0,c)|0;k[d>>2]=f;f=Ds(a,k[b+32>>2]|0,c)|0;k[d+32>>2]=f;f=Rr(a,k[b+36>>2]|0,c,0)|0;k[d+36>>2]=f;f=Ur(a,k[b+40>>2]|0,c)|0;k[d+40>>2]=f;f=Rr(a,k[b+44>>2]|0,c,0)|0;k[d+44>>2]=f;f=Ur(a,k[b+48>>2]|0,c)|0;k[d+48>>2]=f;i[d+4>>0]=i[b+4>>0]|0;f=lr(a,k[b+52>>2]|0,c)|0;k[d+52>>2]=f;if(f)k[f+56>>2]=d;k[d+56>>2]=0;h=Rr(a,k[b+60>>2]|0,c,0)|0;k[d+60>>2]=h;h=Rr(a,k[b+64>>2]|0,c,0)|0;k[d+64>>2]=h;k[d+8>>2]=0;k[d+12>>2]=0;j[d+6>>1]=(m[b+6>>1]|0)&65527;k[d+16>>2]=-1;k[d+20>>2]=-1;h=b+24|0;f=k[h+4>>2]|0;c=d+24|0;k[c>>2]=k[h>>2];k[c+4>>2]=f;c=k[b+68>>2]|0;if((c|0)!=0?(g=k[c>>2]<<4|8,e=rh(a,g,((g|0)<0)<<31>>31)|0,(e|0)!=0):0){kw(e|0,0,g|0)|0;k[e>>2]=k[c>>2];if((k[c>>2]|0)>0){b=e+8|0;f=0;do{g=lr(a,k[c+(f<<4)+16>>2]|0,0)|0;k[b+(f<<4)+8>>2]=g;g=Ur(a,k[c+(f<<4)+12>>2]|0,0)|0;k[b+(f<<4)+4>>2]=g;g=ph(a,k[c+(f<<4)+8>>2]|0)|0;k[b+(f<<4)>>2]=g;f=f+1|0}while((f|0)<(k[c>>2]|0))}}else e=0;k[d+68>>2]=e}else d=0;return d|0}function mr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,t=0;t=r;r=r+16|0;if((r|0)>=(s|0))ka();n=t;e=t+8|0;g=t+4|0;q=k[a>>2]|0;h=b+44|0;d=i[h>>0]|0;a:do if(!(d&16))o=11;else{c=k[b+60>>2]|0;if(c)do{if((k[c>>2]|0)==(q|0)){o=11;break a}c=k[c+24>>2]|0}while((c|0)!=0);c=b+56|0;d=gn(q+308|0,k[k[c>>2]>>2]|0,e)|0;if((d|0)!=0?(f=k[d+8>>2]|0,(f|0)!=0):0){k[g>>2]=0;f=(En(q,b,f,k[(k[f>>2]|0)+8>>2]|0,g)|0)==0;d=k[g>>2]|0;if(f){rg(q,d);d=i[h>>0]|0;o=11;break}else{k[n>>2]=d;yh(a,10344,n);rg(q,d);c=1;break}}k[n>>2]=k[k[c>>2]>>2];yh(a,28320,n);c=1}while(0);do if((o|0)==11)if((d&16)==0?(p=b+38|0,l=j[p>>1]|0,l<<16>>16<=0):0){if(l<<16>>16<0){k[n>>2]=k[b>>2];yh(a,26752,n);c=1;break}d=lr(q,k[b+12>>2]|0,0)|0;if(!d)c=1;else{l=q+250|0;h=i[l>>0]|0;o=a+68|0;n=k[o>>2]|0;Hs(a,k[d+32>>2]|0);j[p>>1]=-1;i[l>>0]=0;g=q+284|0;f=k[g>>2]|0;k[g>>2]=0;c=ss(a,d)|0;k[g>>2]=f;i[l>>0]=h;k[o>>2]=n;if(!c){j[p>>1]=0;c=1}else{a=c+38|0;j[p>>1]=j[a>>1]|0;o=c+4|0;k[b+4>>2]=k[o>>2];j[a>>1]=0;k[o>>2]=0;pg(q,c);c=(k[b+68>>2]|0)+78|0;j[c>>1]=m[c>>1]|0|2;c=0}Rk(q,d,1)}}else c=0;while(0);r=t;return c|0} -function nr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=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,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,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=r;r=r+240|0;if((r|0)>=(s|0))ka();oa=za;pa=za+220|0;ga=za+216|0;ea=za+196|0;fa=za+176|0;ra=za+164|0;sa=za+136|0;va=za+88|0;ca=za+64|0;ia=za+32|0;xa=a+464|0;ya=k[xa>>2]|0;la=a+468|0;ua=k[la>>2]|0;k[la>>2]=ua+1;k[xa>>2]=ua;ua=k[a>>2]|0;a:do if((((b|0)!=0?(ma=ua+65|0,(i[ma>>0]|0)==0):0)?(d=a+64|0,(k[d>>2]|0)==0):0)?(Xq(a,21,0,0,0)|0)==0:0){A=va+0|0;z=A+48|0;do{k[A>>2]=0;A=A+4|0}while((A|0)<(z|0));ha=b+48|0;if((l[c>>0]|0)<9){Sk(ua,k[ha>>2]|0);k[ha>>2]=0;ba=b+6|0;j[ba>>1]=m[ba>>1]&65534}Is(a,b,0);k[sa+0>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;k[sa+16>>2]=0;k[sa+20>>2]=0;k[sa+24>>2]=0;k[sa>>2]=k[ha>>2];ja=b+32|0;u=k[ja>>2]|0;t=k[b>>2]|0;b:do if(((k[d>>2]|0)==0?(i[ma>>0]|0)==0:0)?(qa=b+6|0,w=(m[qa>>1]|0)>>>2&1,ta=Tq(a)|0,(ta|0)!=0):0){if((k[t>>2]|0)>1?(i[c>>0]&-2)<<24>>24==10:0){yh(a,35368,oa);wa=444;break}na=b+52|0;t=k[na>>2]|0;c:do if(!t){h=a+460|0;g=a+492|0;f=b+36|0;e=a+408|0;d=b+60|0;Q=b+64|0;R=b+4|0;S=ua+60|0;T=ta+32|0;U=a+72|0;V=ca+4|0;W=ca+1|0;X=ca+8|0;Y=ca+12|0;Z=ta+4|0;_=ta+24|0;$=a+19|0;aa=a+56|0;ba=a+80|0;P=0;v=w;while(1){if((P|0)>=(k[u>>2]|0)){D=f;N=0;w=v;R=u;break c}J=k[u+(P*72|0)+28>>2]|0;do if(!J)w=P;else{M=u+(P*72|0)+32|0;x=k[M>>2]|0;if(x){if(i[u+(P*72|0)+45>>0]&4){w=P;break}Bh(ta,17,k[u+(P*72|0)+36>>2]|0,x,0)|0;w=P;break}k[oa>>2]=0;Js(b,oa);k[h>>2]=(k[h>>2]|0)+(k[oa>>2]|0);q=j[J+6>>1]&4;N=k[g>>2]|0;p=k[a>>2]|0;d:do if(!(j[p+60>>1]&1)){H=k[ja>>2]|0;o=k[H+(P*72|0)+48>>2]|0;G=H+(P*72|0)+28|0;K=k[G>>2]|0;n=q<<16>>16!=0;do if(n){if(v){wa=120;break d}if((k[H>>2]|0)>1){wa=120;break d}O=k[f>>2]|0;if((O|0)!=0?(k[O+4>>2]&2097152|0)!=0:0){wa=120;break d}D=k[b>>2]|0;do if(D){B=k[D>>2]|0;if((B|0)<=0)break;E=k[D+4>>2]|0;D=0;C=0;do{C=k[(k[E+(D*20|0)>>2]|0)+4>>2]|C;D=D+1|0}while((D|0)!=(B|0));if(C&2097152){wa=120;break d}}while(0);D=k[ha>>2]|0;if(!D)break;B=k[D>>2]|0;if((B|0)<=0)break;E=k[D+4>>2]|0;D=0;C=0;do{C=k[(k[E+(D*20|0)>>2]|0)+4>>2]|C;D=D+1|0}while((D|0)!=(B|0));if(C&2097152){wa=120;break d}}while(0);E=k[K+32>>2]|0;D=(k[K+60>>2]|0)==0;if(!D?(k[d>>2]|0)!=0:0){wa=120;break}if(k[K+64>>2]|0){wa=120;break}B=j[qa>>1]|0;C=(B&64)==0;if(!(C|D)){wa=120;break}if(!(k[E>>2]|0)){wa=120;break}A=j[K+6>>1]|0;if(A&1){wa=120;break}E=D|C^1;if(!E?(k[H>>2]|0)>1|(v|0)!=0:0){wa=120;break}D=B&1;if(D<<16>>16!=0&n){wa=120;break}y=k[ha>>2]|0;z=(y|0)==0;if(!z?(k[K+48>>2]|0)!=0:0){wa=120;break}F=(v|0)!=0;if(F?(k[K+48>>2]|0)!=0:0){wa=120;break}if(E){if(A&6144){wa=120;break}}else if(!((k[f>>2]|0)==0&D<<16>>16==0&(A&6144)==0)){wa=120;break}if((B&2048)!=0?(k[K+52>>2]|0)!=0:0){wa=120;break}O=H+(P*72|0)+44|0;if(i[O>>0]&32){wa=120;break}B=K+52|0;E=k[B>>2]|0;do if(E){if(!(D<<16>>16==0&(((k[K+48>>2]|0)!=0|F)^1))){wa=120;break d}if((k[H>>2]|0)!=1){wa=120;break d}e:do if(K){if(!(A&5))C=K;else{wa=120;break d}while(1){D=(E|0)==0;if(!D?(i[C+4>>0]|0)!=116:0){wa=120;break d}if((k[k[C+32>>2]>>2]|0)<1){wa=120;break d}if((k[k[K>>2]>>2]|0)!=(k[k[C>>2]>>2]|0)){wa=120;break d}if(D)break e;if(j[E+6>>1]&5){wa=120;break d}C=E;E=k[E+52>>2]|0}}while(0);if(z)break;C=k[y>>2]|0;if((C|0)<=0)break;E=k[y+4>>2]|0;D=0;do{if(!(j[E+(D*20|0)+16>>1]|0)){wa=120;break d}D=D+1|0}while((D|0)<(C|0))}while(0);x=H+(P*72|0)+16|0;k[g>>2]=k[x>>2];Xq(a,21,0,0,0)|0;k[g>>2]=N;E=k[B>>2]|0;f:do if(!E)wa=81;else{y=p+65|0;B=k[ha>>2]|0;A=k[d>>2]|0;z=k[Q>>2]|0;C=k[na>>2]|0;while(1){k[ha>>2]=0;k[ja>>2]=0;k[na>>2]=0;k[d>>2]=0;k[Q>>2]=0;D=lr(p,b,0)|0;k[Q>>2]=z;k[d>>2]=A;k[ha>>2]=B;k[ja>>2]=H;i[R>>0]=116;if(!D)D=C;else{k[D+52>>2]=C;if(C)k[C+56>>2]=D;k[D+56>>2]=b}k[na>>2]=D;if(i[y>>0]|0)break f;E=k[E+52>>2]|0;if(!E){wa=81;break}else C=D}}while(0);if((wa|0)==81){wa=0;I=k[G>>2]|0;B=H+(P*72|0)+12|0;rg(p,k[B>>2]|0);rg(p,k[x>>2]|0);C=H+(P*72|0)+20|0;rg(p,k[C>>2]|0);k[B>>2]=0;k[x>>2]=0;k[C>>2]=0;k[G>>2]=0;C=H+(P*72|0)+24|0;B=k[C>>2]|0;if(B){A=B+40|0;z=j[A>>1]|0;if(z<<16>>16==1){N=k[e>>2]|0;N=((N|0)==0?a:N)+524|0;k[B+72>>2]=k[N>>2];k[N>>2]=B}else j[A>>1]=z+-1<<16>>16;k[C>>2]=0}N=P+1|0;M=p+65|0;K=b;J=I;while(1){y=k[J+32>>2]|0;x=k[y>>2]|0;D=K+32|0;E=k[D>>2]|0;if(!E){E=ur(p,0,0,0)|0;k[D>>2]=E;if(!E)break;else w=0}else w=i[O>>0]|0;if((x|0)>1){E=Ks(p,E,x+-1|0,N)|0;k[D>>2]=E;if(i[M>>0]|0)break}if((x|0)>0){C=0;do{A=C+P|0;Mk(p,k[E+(A*72|0)+56>>2]|0);D=y+(C*72|0)+8|0;A=E+(A*72|0)+8|0;B=D+0|0;z=A+72|0;do{k[A>>2]=k[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(z|0));A=D+0|0;z=A+72|0;do{k[A>>2]=0;A=A+4|0}while((A|0)<(z|0));C=C+1|0}while((C|0)!=(x|0))}i[E+(P*72|0)+44>>0]=w;D=k[K>>2]|0;E=k[D>>2]|0;if((E|0)>0){A=D+4|0;C=k[A>>2]|0;B=0;do{if(!(k[C+(B*20|0)+4>>2]|0)){E=ph(p,k[C+(B*20|0)+8>>2]|0)|0;qo(E);C=k[A>>2]|0;k[C+(B*20|0)+4>>2]=E;E=k[D>>2]|0}B=B+1|0}while((B|0)<(E|0));D=k[K>>2]|0}Ls(p,D,o,k[J>>2]|0);if(F){Ls(p,k[K+40>>2]|0,o,k[J>>2]|0);H=K+44|0;G=Ms(p,k[H>>2]|0,o,k[J>>2]|0)|0;k[H>>2]=G}E=J+48|0;D=k[E>>2]|0;do if(!D){D=k[K+48>>2]|0;if(!D)break;Ls(p,D,o,k[J>>2]|0)}else{C=k[D>>2]|0;if((C|0)>0){B=k[D+4>>2]|0;A=0;do{j[B+(A*20|0)+16>>1]=0;A=A+1|0}while((A|0)!=(C|0))}k[K+48>>2]=D;k[E>>2]=0}while(0);D=k[J+36>>2]|0;if(!D)C=0;else C=Rr(p,D,0,0)|0;E=K+36|0;D=k[E>>2]|0;if(n){H=K+44|0;k[H>>2]=D;k[E>>2]=C;G=Ms(p,D,o,k[J>>2]|0)|0;k[H>>2]=G;G=xs(p,G,Rr(p,k[J+44>>2]|0,0,0)|0)|0;k[H>>2]=G;H=Ur(p,k[J+40>>2]|0,0)|0;k[K+40>>2]=H}else{H=Ms(p,D,o,k[J>>2]|0)|0;k[E>>2]=H;H=xs(p,H,C)|0;k[E>>2]=H}D=K+6|0;j[D>>1]=m[D>>1]|m[J+6>>1]&1;D=J+60|0;C=k[D>>2]|0;if(C){k[K+60>>2]=C;k[D>>2]=0}K=k[K+52>>2]|0;if(!K)break;else J=k[J+52>>2]|0}Rk(p,I,1)}if(!(q<<16>>16)){w=-1;break}j[qa>>1]=m[qa>>1]|4;w=-1;v=1}else wa=120;while(0);g:do if((wa|0)==120){wa=0;do if((k[u>>2]|0)==1){if(j[S>>1]&256)break;A=k[T>>2]|0;O=A+1|0;N=(k[U>>2]|0)+1|0;k[U>>2]=N;w=u+(P*72|0)+36|0;k[w>>2]=N;Bh(ta,20,N,0,O)|0;k[M>>2]=O;O=k[w>>2]|0;i[ca>>0]=13;k[V>>2]=O;i[W>>0]=0;k[X>>2]=0;k[Y>>2]=0;i[u+(P*72|0)+46>>0]=k[la>>2];nr(a,J,ca)|0;O=J+24|0;O=ks(k[O>>2]|0,k[O+4>>2]|0)|0;j[(k[u+(P*72|0)+24>>2]|0)+28>>1]=O;O=u+(P*72|0)+45|0;i[O>>0]=i[O>>0]|4;k[u+(P*72|0)+40>>2]=k[X>>2];Bh(ta,21,k[w>>2]|0,0,0)|0;w=k[T>>2]|0;if(w>>>0>A>>>0)k[(k[Z>>2]|0)+(A*20|0)+8>>2]=w;k[(k[_>>2]|0)+88>>2]=w+-1;i[$>>0]=0;k[aa>>2]=0;w=P;break g}while(0);z=(k[U>>2]|0)+1|0;k[U>>2]=z;B=u+(P*72|0)+36|0;k[B>>2]=z;z=Bh(ta,25,0,z,0)|0;k[M>>2]=z+1;if(!(i[u+(P*72|0)+45>>0]&2)){O=Tq(a)|0;A=k[ba>>2]|0;k[ba>>2]=A+1;A=Bh(O,44,A,0,0)|0}else A=0;O=k[u+(P*72|0)+48>>2]|0;i[ca>>0]=12;k[V>>2]=O;i[W>>0]=0;k[X>>2]=0;k[Y>>2]=0;i[u+(P*72|0)+46>>0]=k[la>>2];nr(a,J,ca)|0;O=J+24|0;O=ks(k[O>>2]|0,k[O+4>>2]|0)|0;j[(k[u+(P*72|0)+24>>2]|0)+28>>1]=O;if(A){x=k[T>>2]|0;if(x>>>0>A>>>0)k[(k[Z>>2]|0)+(A*20|0)+8>>2]=x;k[(k[_>>2]|0)+88>>2]=x+-1}w=Bh(ta,18,k[B>>2]|0,0,0)|0;if((k[T>>2]|0)>>>0>z>>>0)k[(k[Z>>2]|0)+(z*20|0)+4>>2]=w;i[$>>0]=0;k[aa>>2]=0;w=P}while(0);if(i[ma>>0]|0){wa=444;break b}k[oa>>2]=0;Js(b,oa);k[h>>2]=(k[h>>2]|0)-(k[oa>>2]|0);u=k[ja>>2]|0;if((l[c>>0]|0)<9)break;k[sa>>2]=k[ha>>2]}while(0);t=k[na>>2]|0;if(!t)P=w+1|0;else{D=f;N=t;w=v;R=u;break}}}else{D=b+36|0;N=t;R=u}while(0);Q=k[b>>2]|0;y=k[D>>2]|0;e=b+40|0;t=k[e>>2]|0;E=b+44|0;ca=k[E>>2]|0;f=j[qa>>1]|0;i[ra>>0]=f&1;if(N){K=k[a>>2]|0;k[pa+0>>2]=k[c+0>>2];k[pa+4>>2]=k[c+4>>2];k[pa+8>>2]=k[c+8>>2];k[pa+12>>2]=k[c+12>>2];k[pa+16>>2]=k[c+16>>2];h:do if(!(k[N+48>>2]|0)){u=N+60|0;if(k[u>>2]|0){d=l[b+4>>0]|0;if((d|0)==118)d=35336;else if((d|0)==117)d=35352;else if((d|0)==116)d=35320;else d=35360;k[oa>>2]=d;yh(a,35072,oa);f=0;d=1;wa=227;break}O=Tq(a)|0;o=i[pa>>0]|0;if(o<<24>>24==12){Bh(O,57,k[pa+4>>2]|0,k[k[b>>2]>>2]|0,0)|0;o=k[O+4>>2]|0;if(o)i[o+(((k[O+32>>2]|0)+-1|0)*20|0)+3>>0]=8;i[pa>>0]=14;o=14}n=m[qa>>1]|0;if(n&256){f=0;d=Ns(a,b,pa)|0;wa=227;break}if((k[k[b>>2]>>2]|0)!=(k[k[N>>2]>>2]|0)){Os(a,b);f=0;d=1;wa=227;break}do if(!(n&2048)){if(k[ha>>2]|0){d=Qs(a,b,c)|0;break h}M=b+4|0;n=l[M>>0]|0;if((n|0)==116){q=b+8|0;o=N+8|0;k[o>>2]=k[q>>2];p=b+12|0;n=N+12|0;k[n>>2]=k[p>>2];aa=b+60|0;k[u>>2]=k[aa>>2];ba=b+64|0;k[N+64>>2]=k[ba>>2];g=k[la>>2]|0;d=nr(a,N,pa)|0;k[aa>>2]=0;k[ba>>2]=0;if(d){f=0;wa=227;break h}k[na>>2]=0;o=k[o>>2]|0;k[q>>2]=o;k[p>>2]=k[n>>2];if(!o)t=0;else t=Bh(O,46,o,0,0)|0;e=k[la>>2]|0;d=nr(a,b,pa)|0;f=k[na>>2]|0;k[na>>2]=N;ba=N+24|0;h=b+24|0;o=h;ba=ow(k[o>>2]|0,k[o+4>>2]|0,k[ba>>2]|0,k[ba+4>>2]|0)|0;o=h;k[o>>2]=ba;k[o+4>>2]=L;o=k[u>>2]|0;do if(o){ba=(Rs(o,ga)|0)!=0;o=k[ga>>2]|0;if(!(ba&(o|0)>0))break;ba=h;aa=k[ba+4>>2]|0;n=((o|0)<0)<<31>>31;if(!(aa>>>0>n>>>0|((aa|0)==(n|0)?(k[ba>>2]|0)>>>0>o>>>0:0)))break;ba=h;k[ba>>2]=o;k[ba+4>>2]=n}while(0);if(!t){t=M;q=g;o=e;break}h=k[O+32>>2]|0;if(h>>>0>t>>>0)k[(k[O+4>>2]|0)+(t*20|0)+8>>2]=h;k[(k[O+24>>2]|0)+88>>2]=h+-1;t=M;q=g;o=e;break}else if((n|0)==115|(n|0)==117){if(o<<24>>24==1)n=k[pa+4>>2]|0;else{h=a+68|0;n=k[h>>2]|0;k[h>>2]=n+1;h=Bh(O,57,n,0,0)|0;k[b+16>>2]=h;h=b;while(1){o=k[h+56>>2]|0;if(!o)break;else h=o}ba=h+6|0;j[ba>>1]=m[ba>>1]|8}i[ea>>0]=1;k[ea+4>>2]=n;i[ea+1>>0]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;v=k[la>>2]|0;d=nr(a,N,ea)|0;if(d){f=0;wa=227;break h}u=(i[M>>0]|0)==117?2:1;k[na>>2]=0;q=b+60|0;p=k[q>>2]|0;k[q>>2]=0;o=b+64|0;h=k[o>>2]|0;k[o>>2]=0;i[ea>>0]=u;u=k[la>>2]|0;d=nr(a,b,ea)|0;Sk(K,k[ha>>2]|0);f=k[na>>2]|0;k[na>>2]=N;k[ha>>2]=0;if((i[M>>0]|0)==115){aa=N+24|0;ba=b+24|0;$=ba;aa=ow(k[$>>2]|0,k[$+4>>2]|0,k[aa>>2]|0,k[aa+4>>2]|0)|0;k[ba>>2]=aa;k[ba+4>>2]=L}Lk(K,k[q>>2]|0);k[q>>2]=p;k[o>>2]=h;k[b+8>>2]=0;k[b+12>>2]=0;h=i[pa>>0]|0;if(h<<24>>24==9){h=b;while(1){g=k[h+52>>2]|0;if(!g)break;else h=g}Ss(a,0,k[h>>2]|0)}else if(h<<24>>24==1){t=M;q=v;o=u;break}e=Cs(O)|0;ba=Cs(O)|0;Ts(a,b,e);Bh(O,108,n,e,0)|0;t=O+32|0;q=k[t>>2]|0;Us(a,b,k[b>>2]|0,n,0,0,pa,ba,e);p=O+24|0;o=k[p>>2]|0;h=~ba;do if((ba|0)<0){g=k[o+112>>2]|0;if(!g)break;k[g+(h<<2)>>2]=k[t>>2]}while(0);k[o+88>>2]=(k[t>>2]|0)+-1;Bh(O,9,n,q,0)|0;h=k[p>>2]|0;g=~e;do if((e|0)<0){o=k[h+112>>2]|0;if(!o)break;k[o+(g<<2)>>2]=k[t>>2]}while(0);k[h+88>>2]=(k[t>>2]|0)+-1;Bh(O,61,n,0,0)|0;t=M;q=v;o=u;break}else{h=a+68|0;x=k[h>>2]|0;k[h>>2]=x+2;h=Bh(O,57,x,0,0)|0;k[b+16>>2]=h;h=b;while(1){g=k[h+56>>2]|0;if(!g)break;else h=g}v=x+1|0;q=h+6|0;j[q>>1]=m[q>>1]|8;i[fa>>0]=1;q=fa+4|0;k[q>>2]=x;i[fa+1>>0]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;u=k[la>>2]|0;d=nr(a,N,fa)|0;if(d){f=0;wa=227;break h}t=Bh(O,57,v,0,0)|0;k[b+20>>2]=t;k[na>>2]=0;t=b+60|0;e=k[t>>2]|0;k[t>>2]=0;g=b+64|0;h=k[g>>2]|0;k[g>>2]=0;k[q>>2]=v;w=k[la>>2]|0;d=nr(a,b,fa)|0;f=k[na>>2]|0;k[na>>2]=N;o=b+24|0;ba=o;aa=k[ba+4>>2]|0;p=N+24|0;q=k[p>>2]|0;p=k[p+4>>2]|0;if(aa>>>0>p>>>0|((aa|0)==(p|0)?(k[ba>>2]|0)>>>0>q>>>0:0)){ba=o;k[ba>>2]=q;k[ba+4>>2]=p}Lk(K,k[t>>2]|0);k[t>>2]=e;k[g>>2]=h;if((i[pa>>0]|0)==9){o=b;while(1){n=k[o+52>>2]|0;if(!n)break;else o=n}Ss(a,0,k[o>>2]|0)}g=Cs(O)|0;t=Cs(O)|0;Ts(a,b,g);Bh(O,108,x,g,0)|0;o=a+19|0;n=i[o>>0]|0;if(!(n<<24>>24)){ba=a+72|0;o=(k[ba>>2]|0)+1|0;k[ba>>2]=o}else{ba=n+-1<<24>>24;i[o>>0]=ba;o=k[a+((ba&255)<<2)+24>>2]|0}e=Bh(O,101,x,o,0)|0;Ch(O,Bh(O,68,v,t,o)|0,0,-14);ds(a,o);Us(a,b,k[b>>2]|0,x,0,0,pa,t,g);o=O+24|0;n=k[o>>2]|0;p=~t;do if((t|0)<0){q=k[n+112>>2]|0;if(!q)break;k[q+(p<<2)>>2]=k[O+32>>2]}while(0);q=O+32|0;k[n+88>>2]=(k[q>>2]|0)+-1;Bh(O,9,x,e,0)|0;n=k[o>>2]|0;h=~g;do if((g|0)<0){o=k[n+112>>2]|0;if(!o)break;k[o+(h<<2)>>2]=k[q>>2]}while(0);k[n+88>>2]=(k[q>>2]|0)+-1;Bh(O,61,v,0,0)|0;Bh(O,61,x,0,0)|0;t=M;q=u;o=w;break}}else{Ps(a,b,pa);t=b+4|0;q=0;o=0;f=0;d=0}while(0);ba=i[t>>0]|0;Vs(a,ba&255,q,o,ba<<24>>24!=116&1);if(!(j[qa>>1]&8)){wa=227;break}p=k[k[b>>2]>>2]|0;q=Ws(K,p,1)|0;if(!q){d=7;wa=227;break}if((p|0)>0){e=K+8|0;g=q+20|0;h=0;while(1){ba=Xs(a,b,h)|0;k[g>>2]=ba;if(!ba)k[g>>2]=k[e>>2];h=h+1|0;if((h|0)==(p|0))break;else g=g+4|0}}n=O+32|0;o=O+4|0;do{e=0;do{h=b+(e<<2)+16|0;g=k[h>>2]|0;if((g|0)<0)break;if((k[n>>2]|0)>>>0>g>>>0)k[(k[o>>2]|0)+(g*20|0)+8>>2]=p;k[q>>2]=(k[q>>2]|0)+1;Ch(O,g,q,-6);k[h>>2]=-1;e=e+1|0}while((e|0)<2);b=k[b+52>>2]|0}while((b|0)!=0);ba=(k[q>>2]|0)+-1|0;k[q>>2]=ba;if(ba){wa=227;break}$c(q);wa=227}else{d=l[b+4>>0]|0;if((d|0)==118)d=35336;else if((d|0)==117)d=35352;else if((d|0)==116)d=35320;else d=35360;k[oa>>2]=d;yh(a,35024,oa);f=0;d=1;wa=227}while(0);if((wa|0)==227){k[c+8>>2]=k[pa+8>>2];k[c+12>>2]=k[pa+12>>2];Rk(K,f,1)}k[xa>>2]=ya;break a}if((f&5)==1){d=k[sa>>2]|0;if(!(Ys(d,Q,-1)|0)){j[qa>>1]=f&65534;t=Ur(ua,Q,0)|0;k[e>>2]=t;wa=232}}else wa=232;if((wa|0)==232)d=k[sa>>2]|0;if(!d)d=-1;else{ba=Zs(a,d,0,k[Q>>2]|0)|0;aa=a+68|0;d=k[aa>>2]|0;k[aa>>2]=d+1;k[sa+8>>2]=d;d=Bh(ta,57,d,(k[k[sa>>2]>>2]|0)+1+(k[Q>>2]|0)|0,0)|0;Ch(ta,d,ba,-6)}O=sa+20|0;k[O>>2]=d;if((i[c>>0]|0)==12)Bh(ta,57,k[c+4>>2]|0,k[Q>>2]|0,0)|0;na=Cs(ta)|0;v=b+24|0;ba=v;k[ba>>2]=-1;k[ba+4>>2]=2147483647;Ts(a,b,na);if((k[b+8>>2]|0)==0?(da=k[O>>2]|0,(da|0)>-1):0){if(!(i[(k[ta>>2]|0)+65>>0]|0))d=(k[ta+4>>2]|0)+(da*20|0)|0;else d=29120;i[d>>0]=58;ba=sa+24|0;i[ba>>0]=l[ba>>0]|1}if(!(j[qa>>1]&1))i[ra+1>>0]=0;else{ba=a+68|0;d=k[ba>>2]|0;k[ba>>2]=d+1;k[ra+4>>2]=d;ba=Zs(a,k[b>>2]|0,0,0)|0;d=Bh(ta,57,d,0,0)|0;Ch(ta,d,ba,-6);k[ra+8>>2]=d;d=k[ta+4>>2]|0;if(d)i[d+(((k[ta+32>>2]|0)+-1|0)*20|0)+3>>0]=8;i[ra+1>>0]=3}if((w|0)==0&(t|0)==0){q=_s(a,R,y,k[sa>>2]|0,k[b>>2]|0,(i[ra>>0]|0)!=0?1024:0,0)|0;if(!q){wa=444;break}o=$s(j[q+32>>1]|0)|0;n=L;ba=v;aa=k[ba+4>>2]|0;if(n>>>0>>0|((n|0)==(aa|0)?o>>>0<(k[ba>>2]|0)>>>0:0)){ba=v;k[ba>>2]=o;k[ba+4>>2]=n}do if(i[ra>>0]|0){o=i[q+40>>0]|0;if(!(o<<24>>24))break;i[ra+1>>0]=o}while(0);o=k[sa>>2]|0;do if(!o)wa=257;else{ba=i[q+36>>0]|0;k[sa+4>>2]=ba;if((ba|0)!=(k[o>>2]|0))break;k[sa>>2]=0;wa=257}while(0);do if((wa|0)==257){h=k[O>>2]|0;if((h|0)<=-1)break;Eh(ta,h)}while(0);Us(a,b,Q,-1,sa,ra,c,k[q+48>>2]|0,k[q+52>>2]|0);at(q)}else{w=(t|0)!=0;do if(w){e=k[b>>2]|0;d=k[e>>2]|0;if((d|0)>0){e=k[e+4>>2]|0;while(1){j[e+18>>1]=0;d=d+-1|0;if((d|0)<=0)break;else e=e+20|0}}d=k[t>>2]|0;if((d|0)>0){e=k[t+4>>2]|0;while(1){j[e+18>>1]=0;d=d+-1|0;if((d|0)<=0)break;else e=e+20|0}}ba=v;aa=k[ba+4>>2]|0;if(!(aa>>>0>0|(aa|0)==0&(k[ba>>2]|0)>>>0>100))break;ba=v;k[ba>>2]=100;k[ba+4>>2]=0}else{ba=v;k[ba>>2]=1;k[ba+4>>2]=0}while(0);M=(Ys(t,k[sa>>2]|0,-1)|0)==0;P=Cs(ta)|0;k[ia+0>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[ia+16>>2]=0;k[ia+20>>2]=0;k[ia+24>>2]=0;k[ia+28>>2]=0;k[ia>>2]=a;k[ia+4>>2]=R;k[ia+12>>2]=va;G=a+72|0;k[va+16>>2]=(k[G>>2]|0)+1;if(w)d=k[t>>2]|0;else d=0;v=va+12|0;k[v>>2]=d;k[va+24>>2]=t;bt(ia,Q);bt(ia,k[sa>>2]|0);if(ca){k[oa+0>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[oa+16>>2]=0;k[oa+20>>2]=0;k[oa>>2]=80;k[oa+4>>2]=81;k[oa+24>>2]=ia;ws(oa,ca)|0}x=va+32|0;k[va+36>>2]=k[x>>2];h=va+44|0;d=k[h>>2]|0;if((d|0)>0){u=ia+28|0;e=va+40|0;f=j[u>>1]|0;g=0;do{j[u>>1]=f&65535|8;bt(ia,k[(k[(k[e>>2]|0)+(g<<4)>>2]|0)+20>>2]|0);f=m[u>>1]&65527;j[u>>1]=f;g=g+1|0;d=k[h>>2]|0}while((g|0)<(d|0))}k[va+20>>2]=k[G>>2];if(i[ma>>0]|0){wa=444;break}if(w){E=a+68|0;D=k[E>>2]|0;k[E>>2]=D+1;q=va+4|0;k[q>>2]=D;D=Zs(a,t,0,k[x>>2]|0)|0;p=Bh(ta,58,k[q>>2]|0,k[v>>2]|0,0)|0;Ch(ta,p,D,-6);J=k[G>>2]|0;I=J+1|0;F=J+2|0;J=J+3|0;k[G>>2]=J;H=Cs(ta)|0;N=(k[G>>2]|0)+1|0;k[G>>2]=N;K=Cs(ta)|0;o=k[G>>2]|0;h=o+1|0;ba=k[t>>2]|0;aa=ba+o|0;n=aa+1|0;k[G>>2]=aa+ba;Bh(ta,25,0,F,0)|0;Bh(ta,25,0,I,0)|0;Bh(ta,28,0,h,(k[t>>2]|0)+o|0)|0;Bh(ta,17,N,K,0)|0;o=_s(a,R,y,t,0,M?2304:256,0)|0;if(!o){wa=444;break}if((i[o+36>>0]|0)==(k[t>>2]|0)){u=0;d=0;v=0}else{if(!(i[ra>>0]|0))d=34824;else d=(j[qa>>1]&1)==0?34808:34824;et(a,d);A=k[t>>2]|0;d=k[x>>2]|0;if((d|0)>0){e=k[va+28>>2]|0;f=0;v=A;u=A;do{if((k[e+(f*24|0)+12>>2]|0)>=(v|0)){v=v+1|0;u=u+1|0}f=f+1|0}while((f|0)<(d|0));C=u}else C=A;B=a+60|0;u=k[B>>2]|0;y=a+56|0;d=k[y>>2]|0;if((d|0)<(C|0)){z=k[G>>2]|0;k[G>>2]=z+C;z=z+1|0}else{k[B>>2]=u+C;k[y>>2]=d-C;z=u}ft(a);gt(a,t,z,0);v=k[x>>2]|0;if((v|0)>0){f=va+28|0;w=0;u=A;do{d=k[f>>2]|0;if((k[d+(w*24|0)+12>>2]|0)>=(u|0)){e=u+z|0;v=ht(a,k[d+(w*24|0)>>2]|0,k[d+(w*24|0)+8>>2]|0,k[d+(w*24|0)+4>>2]|0,e,0)|0;if((e|0)!=(v|0))Bh(ta,34,v,e,0)|0;v=k[x>>2]|0;u=u+1|0}w=w+1|0}while((w|0)<(v|0))}v=a+19|0;u=i[v>>0]|0;if(!(u<<24>>24)){u=(k[G>>2]|0)+1|0;k[G>>2]=u}else{u=u+-1<<24>>24;i[v>>0]=u;u=k[a+((u&255)<<2)+24>>2]|0}Bh(ta,49,z,C,u)|0;Bh(ta,109,k[q>>2]|0,u,0)|0;ds(a,u);it(a,z,C);if((k[y>>2]|0)<(C|0)){k[y>>2]=C;k[B>>2]=z}at(o);e=k[E>>2]|0;k[E>>2]=e+1;k[va+8>>2]=e;d=i[v>>0]|0;if(!(d<<24>>24)){d=(k[G>>2]|0)+1|0;k[G>>2]=d}else{d=d+-1<<24>>24;i[v>>0]=d;d=k[a+((d&255)<<2)+24>>2]|0}Bh(ta,60,e,d,C)|0;Bh(ta,106,k[q>>2]|0,P,0)|0;i[va+1>>0]=1;ft(a);u=1;v=e}do if(M){if(j[ua+60>>1]&4)break;if((u|0)==0?(i[o+37>>0]|0)==0:0)break;k[sa>>2]=0;Eh(ta,k[O>>2]|0)}while(0);x=ta+32|0;g=k[x>>2]|0;ft(a);u=(u|0)!=0;if(u)Bh(ta,100,k[q>>2]|0,d,v)|0;d=k[t>>2]|0;if((d|0)>0){e=t+4|0;f=0;do{if(u)Bh(ta,47,v,f,f+n|0)|0;else{i[va>>0]=1;Wq(a,k[(k[e>>2]|0)+(f*20|0)>>2]|0,f+n|0)}f=f+1|0;d=k[t>>2]|0}while((f|0)<(d|0))}if(D)k[D>>2]=(k[D>>2]|0)+1;Ch(ta,Bh(ta,42,h,n,d)|0,D,-6);d=k[x>>2]|0;ba=d+1|0;Bh(ta,43,ba,0,ba)|0;t=k[t>>2]|0;Bh(k[a+8>>2]|0,32,n,h,t)|0;it(a,n,t);Bh(ta,17,J,H,0)|0;Bh(ta,137,F,P,0)|0;Bh(ta,17,N,K,0)|0;t=k[x>>2]|0;if(t>>>0>d>>>0)k[(k[ta+4>>2]|0)+(d*20|0)+8>>2]=t;h=ta+24|0;k[(k[h>>2]|0)+88>>2]=t+-1;jt(a,va);Bh(ta,25,1,I,0)|0;if(u)Bh(ta,5,k[q>>2]|0,g,0)|0;else{at(o);Eh(ta,p)}Bh(ta,17,J,H,0)|0;Bh(ta,16,0,P,0)|0;f=k[x>>2]|0;Bh(ta,25,1,F,0)|0;Bh(ta,18,J,0,0)|0;d=k[h>>2]|0;e=~H;do if((H|0)<0){t=k[d+112>>2]|0;if(!t)break;k[t+(e<<2)>>2]=k[x>>2]}while(0);q=k[x>>2]|0;k[d+88>>2]=q+-1;Bh(ta,137,I,q+2|0,0)|0;Bh(ta,18,J,0,0)|0;kt(a,va);q=q+1|0;lt(a,ca,q,16);Us(a,b,k[b>>2]|0,-1,sa,ra,c,q,f);Bh(ta,18,J,0,0)|0;q=k[h>>2]|0;p=~K;do if((K|0)<0){o=k[q+112>>2]|0;if(!o)break;k[o+(p<<2)>>2]=k[x>>2]}while(0);k[q+88>>2]=(k[x>>2]|0)+-1;mt(a,va);Bh(ta,18,N,0,0)|0}else{do if(!(k[D>>2]|0)){p=k[b>>2]|0;if((k[p>>2]|0)!=1){wa=372;break}q=k[ja>>2]|0;if((k[q>>2]|0)!=1){wa=372;break}if(k[q+28>>2]|0){wa=372;break}x=k[q+24>>2]|0;q=k[k[p+4>>2]>>2]|0;w=x+44|0;if(i[w>>0]&16){wa=372;break}if((i[q>>0]|0)!=-101|(d|0)==0){wa=372;break}v=va+40|0;if(!(j[(k[(k[v>>2]|0)+4>>2]|0)+2>>1]&256)){wa=372;break}if((x|0)==0?1:(k[q+4>>2]&16|0)!=0){wa=372;break}q=k[a>>2]|0;d=k[x+68>>2]|0;i:do if(!d)p=-1e6;else{e=k[q+20>>2]|0;if((e|0)<=0){p=0;break}q=k[q+16>>2]|0;t=0;while(1){p=t+1|0;if((k[q+(t<<4)+12>>2]|0)==(d|0)){p=t;break i}if((p|0)<(e|0))t=p;else break}}while(0);t=a+68|0;g=k[t>>2]|0;k[t>>2]=g+1;t=x+32|0;d=k[t>>2]|0;Fr(a,p);ls(a,p,k[t>>2]|0,0,k[x>>2]|0);t=k[x+8>>2]|0;j:do if(!(i[w>>0]&32)){q=0;wa=351}else{if(!t){e=1;f=0;t=0;break}else q=t;while(1){if((i[q+51>>0]&3)==2){wa=351;break j}q=k[q+20>>2]|0;if(!q){q=0;wa=351;break}}}while(0);do if((wa|0)==351){if(t){f=x+42|0;e=t;do{do if(!(i[e+51>>0]&4)){t=j[e+44>>1]|0;if(t<<16>>16>=(j[f>>1]|0))break;if(k[e+36>>2]|0)break;if((q|0)!=0?t<<16>>16>=(j[q+44>>1]|0):0)break;q=e}while(0);e=k[e+20>>2]|0}while((e|0)!=0)}if(!q){e=1;f=0;t=0;break}d=k[q+40>>2]|0;e=0;f=q;t=ms(a,q)|0}while(0);Ch(ta,Bh(ta,54,g,d,p)|0,1,-14);if(t)Ch(ta,-1,t,-6);Bh(ta,50,g,k[(k[v>>2]|0)+8>>2]|0,0)|0;Bh(ta,61,g,0,0)|0;if((i[a+450>>0]|0)!=2){o=0;break}do if(e){q=k[x>>2]|0;p=10360;n=10360;o=k[a>>2]|0}else{if(i[w>>0]&32){ba=(i[f+51>>0]&3)!=2;o=k[a>>2]|0;q=k[x>>2]|0;p=ba?34920:10360;if(!ba){n=10360;break}}else{p=34920;q=k[x>>2]|0;o=k[a>>2]|0}n=k[f>>2]|0}while(0);k[oa>>2]=q;k[oa+4>>2]=p;k[oa+8>>2]=n;o=zh(o,34896,oa)|0;ba=k[a+8>>2]|0;Ch(ba,Bh(ba,157,k[xa>>2]|0,0,0)|0,o,-1);o=0}else wa=372;while(0);if((wa|0)==372){do if((k[E>>2]|0)==0&(d|0)==1){o=k[k[va+40>>2]>>2]|0;q=k[o+20>>2]|0;if(!q){o=0;n=0;break}if((k[q>>2]|0)!=1){o=0;n=0;break}if((i[k[k[q+4>>2]>>2]>>0]|0)!=-100){o=0;n=0;break}o=k[o+8>>2]|0;if(id(o,18760)|0)if(!(id(o,18768)|0))n=2;else{o=0;n=0;break}else n=1;o=Ur(ua,q,0)|0;if(!o){o=0;break}if(i[ma>>0]|0)break;ba=k[o+4>>2]|0;i[ba+12>>0]=n<<24>>24!=1&1;i[k[ba>>2]>>0]=-102}else{o=0;n=0}while(0);mt(a,va);n=_s(a,R,y,o,0,n&255,0)|0;if(!n){Sk(ua,o);wa=444;break}jt(a,va);if((i[n+36>>0]|0)>0)Bh(ta,16,0,k[n+52>>2]|0,0)|0;at(n);kt(a,va)}k[sa>>2]=0;lt(a,ca,P,16);Us(a,b,k[b>>2]|0,-1,0,0,c,P,P);Sk(ua,o);h=ta+24|0}o=k[h>>2]|0;n=~P;do if((P|0)<0){h=k[o+112>>2]|0;if(!h)break;k[h+(n<<2)>>2]=k[ta+32>>2]}while(0);k[o+88>>2]=(k[ta+32>>2]|0)+-1}if((i[ra+1>>0]|0)==3)et(a,34808);if(k[sa>>2]|0){u=sa+4|0;et(a,(k[u>>2]|0)>0?34840:34864);x=k[Q>>2]|0;q=a+8|0;D=k[q>>2]|0;E=Cs(D)|0;C=Cs(D)|0;g=k[sa>>2]|0;f=i[c>>0]|0;y=f&255;z=c+4|0;A=k[z>>2]|0;v=sa+16|0;t=k[v>>2]|0;if(t){Bh(D,17,k[sa+12>>2]|0,t,0)|0;Bh(D,16,0,E,0)|0;ba=k[v>>2]|0;t=k[D+24>>2]|0;d=~ba;do if((ba|0)<0){e=k[t+112>>2]|0;if(!e)break;k[e+(d<<2)>>2]=k[D+32>>2]}while(0);k[t+88>>2]=(k[D+32>>2]|0)+-1}B=k[sa+8>>2]|0;o=f<<24>>24==9;k:do if((f&-5)<<24>>24==9){n=x;p=k[c+8>>2]|0;d=0}else{t=a+19|0;d=i[t>>0]|0;do if(d<<24>>24){ba=d+-1<<24>>24;i[t>>0]=ba;e=k[a+((ba&255)<<2)+24>>2]|0;if(!(ba<<24>>24)){d=e;t=k[a+72>>2]|0;break}else{p=d+-2<<24>>24;i[t>>0]=p;n=1;p=k[a+((p&255)<<2)+24>>2]|0;d=e;break k}}else{d=a+72|0;t=(k[d>>2]|0)+1|0;k[d>>2]=t;d=t}while(0);p=t+1|0;k[a+72>>2]=p;n=1}while(0);h=(k[g>>2]|0)-(k[u>>2]|0)|0;w=sa+24|0;if(!(i[w>>0]&1)){t=Bh(D,107,B,E,0)|0;nt(D,k[b+12>>2]|0,C);e=1;f=B}else{ba=a+72|0;f=(k[ba>>2]|0)+1|0;k[ba>>2]=f;ba=a+68|0;g=k[ba>>2]|0;k[ba>>2]=g+1;if(!(k[v>>2]|0))e=0;else{ba=Tq(a)|0;aa=a+80|0;e=k[aa>>2]|0;k[aa>>2]=e+1;e=Bh(ba,44,e,0,0)|0}Bh(D,60,g,f,n+1+h|0)|0;if(e){t=k[D+32>>2]|0;if(t>>>0>e>>>0)k[(k[D+4>>2]|0)+(e*20|0)+8>>2]=t;k[(k[D+24>>2]|0)+88>>2]=t+-1}t=Bh(D,106,B,E,0)|0;nt(D,k[b+12>>2]|0,C);Bh(D,100,B,f,g)|0;e=0;f=g}u=t+1|0;if((n|0)>0){t=e+h|0;e=0;do{Bh(D,47,f,t+e|0,e+p|0)|0;e=e+1|0}while((e|0)!=(n|0))}do if((y|0)==12|(y|0)==14){Bh(D,74,A,d,0)|0;Bh(D,75,A,p,d)|0;o=k[D+4>>2]|0;if(!o)break;i[o+(((k[D+32>>2]|0)+-1|0)*20|0)+3>>0]=8}else if((y|0)==11){Ch(D,Bh(D,49,p,1,d)|0,c+1|0,1);it(a,p,1);Bh(D,110,A,d,0)|0}else if((y|0)!=10)if(o){ba=c+8|0;Bh(D,35,k[ba>>2]|0,x,0)|0;it(a,k[ba>>2]|0,x);break}else{Bh(D,22,k[z>>2]|0,0,0)|0;break}else{Bh(k[q>>2]|0,32,p,A,1)|0;it(a,p,1)}while(0);if(d){ds(a,p);ds(a,d)}n=D+24|0;p=k[n>>2]|0;q=~C;do if((C|0)<0){o=k[p+112>>2]|0;if(!o)break;k[o+(q<<2)>>2]=k[D+32>>2]}while(0);q=D+32|0;k[p+88>>2]=(k[q>>2]|0)+-1;if(!(i[w>>0]&1))Bh(D,9,B,u,0)|0;else Bh(D,5,B,u,0)|0;h=k[sa+12>>2]|0;if(h)Bh(D,18,h,0,0)|0;h=k[n>>2]|0;g=~E;do if((E|0)<0){f=k[h+112>>2]|0;if(!f)break;k[f+(g<<2)>>2]=k[q>>2]}while(0);k[h+88>>2]=(k[q>>2]|0)+-1}e=k[ta+24>>2]|0;f=~na;do if((na|0)<0){d=k[e+112>>2]|0;if(!d)break;k[d+(f<<2)>>2]=k[ta+32>>2]}while(0);k[e+88>>2]=(k[ta+32>>2]|0)+-1;k[xa>>2]=ya;if((i[c>>0]|0)!=9){d=0;break}Ss(a,R,Q);d=0}else wa=444;while(0);if((wa|0)==444){k[xa>>2]=ya;d=1}rg(ua,k[va+28>>2]|0);rg(ua,k[va+40>>2]|0)}else d=1;while(0);r=za;return d|0}function or(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;if((r|0)>=(s|0))ka();j=o;m=k[a>>2]|0;if((b|0)==0?(i=(g|0)!=0,i|(h|0)!=0):0){k[j>>2]=i?34792:34800;yh(a,34752,j);n=9}else{b=ur(m,b,c,d)|0;if((b|0)!=0?(l=k[b>>2]|0,(l|0)!=0):0){i=l+-1|0;if(k[e+4>>2]|0){e=$q(m,e)|0;k[b+(i*72|0)+20>>2]=e}k[b+(i*72|0)+28>>2]=f;k[b+(i*72|0)+52>>2]=g;k[b+(i*72|0)+56>>2]=h}else n=9}if((n|0)==9){Lk(m,g);Mk(m,h);Rk(m,f,1);b=0}r=o;return b|0}function pr(a,b,c,d,e,f,g,h,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+80|0;if((r|0)>=(s|0))ka();o=v+72|0;u=v;t=k[a>>2]|0;n=rh(t,72,0)|0;if(!n){p=u+0|0;q=p+72|0;do{k[p>>2]=0;p=p+4|0}while((p|0)<(q|0));n=u}else{p=n+0|0;q=p+72|0;do{i[p>>0]=0;p=p+1|0}while((p|0)<(q|0))}if(!b){k[o>>2]=0;k[o+4>>2]=0;b=qr(a,0,sr(t,116,o,0)|0)|0}k[n>>2]=b;if(!c){c=rh(t,80,0)|0;if(c){p=c+0|0;q=p+80|0;do{i[p>>0]=0;p=p+1|0}while((p|0)<(q|0))}}k[n+32>>2]=c;k[n+36>>2]=d;k[n+40>>2]=e;k[n+44>>2]=f;k[n+48>>2]=g;j[n+6>>1]=h;i[n+4>>0]=119;k[n+60>>2]=l;k[n+64>>2]=m;k[n+16>>2]=-1;k[n+20>>2]=-1;if(i[t+65>>0]|0){Rk(t,n,(n|0)!=(u|0)&1);n=0}r=v;return n|0}function qr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=k[a>>2]|0;if(!b){b=rh(e,8,0)|0;if(b){a=b;d=a;i[d>>0]=0;i[d+1>>0]=0;i[d+2>>0]=0;i[d+3>>0]=0;a=a+4|0;i[a>>0]=0;i[a+1>>0]=0;i[a+2>>0]=0;i[a+3>>0]=0;a=rh(e,20,0)|0;k[b+4>>2]=a;if(!a)d=8;else d=7}else{b=0;d=8}}else{a=k[b>>2]|0;if(!(a+-1&a)){d=b+4|0;a=wo(e,k[d>>2]|0,a*40|0,0)|0;if(!a)d=8;else{k[d>>2]=a;d=7}}else d=7}if((d|0)==7){a=k[b>>2]|0;k[b>>2]=a+1;a=(k[b+4>>2]|0)+(a*20|0)|0;k[a+0>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a>>2]=c}else if((d|0)==8){Lk(e,c);Sk(e,b);b=0}return b|0}function rr(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;do if(b){h=(k[b>>2]|0)+-1|0;e=k[b+4>>2]|0;f=k[c>>2]|0;b=k[c+4>>2]|0;if((f|0)!=0?(c=k[a>>2]|0,g=ow(b|0,0,1,0)|0,g=rh(c,g,L)|0,(g|0)!=0):0){pw(g|0,f|0,b|0)|0;i[g+b>>0]=0;k[e+(h*20|0)+4>>2]=g;if(!d)break;qo(g);break}k[e+(h*20|0)+4>>2]=0}while(0);return}function sr(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;o=r;r=r+16|0;if((r|0)>=(s|0))ka();h=o;k[h>>2]=0;f=(c|0)!=0;do if(f){if(((b|0)==132?(e=k[c>>2]|0,(e|0)!=0):0)?(In(e,h)|0)!=0:0){m=0;break}m=(k[c+4>>2]|0)+1|0}else m=0;while(0);g=m+48|0;l=rh(a,g,0)|0;if(l){kw(l|0,0,g|0)|0;i[l>>0]=b;j[l+34>>1]=-1;do if(f){if(!m){d=l+4|0;k[d>>2]=k[d>>2]|1024;k[l+8>>2]=k[h>>2];break}e=l+48|0;g=l+8|0;k[g>>2]=e;f=c+4|0;a=k[f>>2]|0;if(!a)e=48;else{pw(e|0,k[c>>2]|0,a|0)|0;e=(k[f>>2]|0)+48|0}i[l+e>>0]=0;if(((d|0)!=0&(m|0)>2?(d=i[k[c>>2]>>0]|0,n=d<<24>>24==34,d<<24>>24==34|d<<24>>24==39|d<<24>>24==91|d<<24>>24==96):0)?(qo(k[g>>2]|0),n):0){d=l+4|0;k[d>>2]=k[d>>2]|64}}while(0);k[l+24>>2]=1}r=o;return l|0}function tr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;do if((b|0)!=0?(d=k[b>>2]|0,(d|0)>0):0){d=d+-1|0;if((k[c+4>>2]|0)==1?(k[c>>2]|0)==0:0){d=b+(d*72|0)+45|0;i[d>>0]=i[d>>0]|1;break}c=$q(k[a>>2]|0,c)|0;k[b+(d*72|0)+72>>2]=c}while(0);return}function ur(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(!b){b=rh(a,80,0)|0;if(!b)b=0;else{f=b+0|0;e=f+80|0;do{i[f>>0]=0;f=f+1|0}while((f|0)<(e|0));k[b+4>>2]=1;f=4}}else f=4;do if((f|0)==4){b=Ks(a,b,1,k[b>>2]|0)|0;if(i[a+65>>0]|0){Io(a,b);b=0;break}f=(k[b>>2]|0)+-1|0;if(!d)e=0;else e=(k[d>>2]|0)==0?0:d;d=(e|0)==0;e=$q(a,d?c:e)|0;k[b+(f*72|0)+16>>2]=e;e=$q(a,d?0:c)|0;k[b+(f*72|0)+12>>2]=e}while(0);return b|0}function vr(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,m=0,n=0,o=0;o=r;r=r+32|0;if((r|0)>=(s|0))ka();m=o;i=o+16|0;k[i>>2]=b;k[i+4>>2]=c;k[i+8>>2]=d;h=b;j=1;e=0;a:while(1){if(!h)break;g=k[h+4>>2]|0;f=0;while(1){if((g|0)==(l[34625+(f*3|0)>>0]|0|0)?(Kc(k[h>>2]|0,34584+(l[34624+(f*3|0)>>0]|0)|0,g)|0)==0:0)break;f=f+1|0;if((f|0)>=7){n=10;break a}}e=l[34626+(f*3|0)>>0]|0|e;if((f|0)>6){n=10;break}if((j|0)>=3)break;h=k[i+(j<<2)>>2]|0;j=j+1|0}if((n|0)==10)e=e|64;if((e&33|0)!=33&(e&64|0)==0){if(!((e&32|0)==0|(e&24|0)==8)){yh(a,34696,m);e=1}}else{k[m>>2]=b;k[m+4>>2]=c;k[m+8>>2]=(d|0)==0?20377|0:20376;k[m+12>>2]=d;yh(a,34648,m);e=1}r=o;return e|0}function wr(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=0,o=0,p=0,q=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+48|0;if((r|0)>=(s|0))ka();N=Q+36|0;O=Q+32|0;m=Q;k[N>>2]=0;k[O>>2]=0;P=k[a>>2]|0;if(((((k[a+64>>2]|0)==0?(i[P+65>>0]|0)==0:0)?(E=Or(a,b)|0,(E|0)!=0):0)?(D=ot(a,E,109,0,0)|0,M=(k[E+12>>2]|0)!=0,(mr(a,E)|0)==0):0)?(o=(D|0)!=0,(pt(a,E,o&1)|0)==0):0){f=k[E+68>>2]|0;a:do if(f){e=k[P+20>>2]|0;if((e|0)>0){d=k[P+16>>2]|0;h=0;while(1){g=h+1|0;if((k[d+(h<<4)+12>>2]|0)==(f|0)){g=h;break a}if((g|0)<(e|0))h=g;else break}}else g=0}else g=-1e6;while(0);d=Xq(a,9,k[E>>2]|0,0,k[(k[P+16>>2]|0)+(g<<4)>>2]|0)|0;if((d|0)!=1){n=a+68|0;z=k[n>>2]|0;p=z+1|0;k[n>>2]=p;k[b+48>>2]=z;F=E+8|0;f=k[F>>2]|0;if(!f)h=0;else{e=p;h=0;do{e=e+1|0;k[n>>2]=e;h=h+1|0;f=k[f+20>>2]|0}while((f|0)!=0)}if(M){K=a+492|0;L=k[K>>2]|0;k[K>>2]=k[E>>2];K=a}else{K=0;L=0}I=Tq(a)|0;b:do if(I){J=a+18|0;if(!(i[J>>0]|0)){B=I+88|0;j[B>>1]=j[B>>1]|4}A=a+408|0;B=k[A>>2]|0;B=(B|0)==0?a:B;Fr(a,g);y=B+328|0;k[y>>2]=k[y>>2]|1<>0]=l[B>>0]|1;if(M){qt(a,E,c,z);k[O>>2]=z;k[N>>2]=z};k[m+0>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[m+16>>2]=0;k[m+20>>2]=0;k[m+24>>2]=0;k[m+28>>2]=0;k[m>>2]=a;k[m+4>>2]=b;if(!(qs(m,c)|0)){G=P+24|0;if(!(k[G>>2]&128))H=-1;else{B=a+72|0;H=(k[B>>2]|0)+1|0;k[B>>2]=H;Bh(I,25,0,H,0)|0}B=E+44|0;do if((!((c|0)!=0|(d|0)!=0|o)?(i[B>>0]&16)==0:0)?(rt(a,E,0,0)|0)==0:0){f=E+32|0;ls(a,g,k[f>>2]|0,1,k[E>>2]|0);if(!(i[B>>0]&32)){E=k[E>>2]|0;Ch(I,Bh(I,118,k[f>>2]|0,g,H)|0,E,-2)}d=k[F>>2]|0;if(!d){d=0;break}do{Bh(I,118,k[d+40>>2]|0,g,0)|0;d=k[d+20>>2]|0}while((d|0)!=0);d=0}else C=31;while(0);do if((C|0)==31){if(!(i[B>>0]&32)){q=a+72|0;w=(k[q>>2]|0)+1|0;k[q>>2]=w;Bh(I,28,0,w,0)|0;q=0;x=0;d=0;u=1;g=0}else{g=k[F>>2]|0;c:do if(!g)g=0;else while(1){if((i[g+51>>0]&3)==2)break c;g=k[g+20>>2]|0;if(!g){g=0;break}}while(0);u=j[g+46>>1]|0;x=a+72|0;d=k[x>>2]|0;q=u<<16>>16;k[x>>2]=d+q;x=k[n>>2]|0;k[n>>2]=x+1;q=Bh(I,57,x,q,0)|0;w=k[a+8>>2]|0;Ch(w,-1,ms(a,g)|0,-6);d=d+1|0;w=0}t=_s(a,b,c,0,0,12,p)|0;if(!t){d=0;break b}p=t+60|0;o=k[p>>2]|0;p=k[p+4>>2]|0;v=i[t+38>>0]|0;if(k[G>>2]&128)Bh(I,37,H,1,0)|0;y=(g|0)!=0;do if(y){if(u<<16>>16<=0){e=d;break}m=g+4|0;f=u<<16>>16;n=0;do{st(I,E,z,j[(k[m>>2]|0)+(n<<1)>>1]|0,n+d|0);n=n+1|0}while((n|0)!=(f|0));e=d}else{f=a+72|0;e=ht(a,E,-1,z,(k[f>>2]|0)+1|0,0)|0;if((e|0)<=(k[f>>2]|0))break;k[f>>2]=e}while(0);m=v<<24>>24!=0;do if(!m)if(y){f=a+72|0;e=(k[f>>2]|0)+1|0;k[f>>2]=e;f=u<<16>>16;n=tt(I,g)|0;Ch(I,Bh(I,49,d,f,e)|0,n,f);Bh(I,110,x,e,0)|0;d=0;f=0;n=0;C=59;break}else{Bh(I,128,w,e,0)|0;at(t);d=0;p=0;g=1;break}else{d=h+2|0;d=rh(P,d,((d|0)<0)<<31>>31)|0;if(!d){at(t);d=0;break b}C=h+1|0;kw(d|0,1,C|0)|0;i[d+C>>0]=0;if((o|0)>-1)i[d+(o-z)>>0]=0;if((p|0)>-1)i[d+(p-z)>>0]=0;if(q)Eh(I,q);f=Bh(I,16,0,0,0)|0;n=u;C=59}while(0);do if((C|0)==59){at(t);if(!m){p=0;g=n;break}g=Cs(I)|0;Bh(I,16,0,g,0)|0;h=k[I+32>>2]|0;if(h>>>0>f>>>0)k[(k[I+4>>2]|0)+(f*20|0)+8>>2]=h;k[(k[I+24>>2]|0)+88>>2]=h+-1;p=g;g=n}while(0);if(!M)ut(a,E,55,z,d,N,O)|0;do if(!m)if(y){f=Bh(I,108,x,0,0)|0;Bh(I,101,x,e,0)|0;break}else{f=Bh(I,129,w,0,e)|0;break}else{h=k[N>>2]|0;if(!(i[d+(h-z)>>0]|0)){f=0;break}Ch(I,Bh(I,68,h,p,e)|0,g<<16>>16,-14);f=0}while(0);if(!(i[B>>0]&16))wt(a,E,D,k[N>>2]|0,k[O>>2]|0,e,g,(i[J>>0]|0)==0&1,10,v);else{h=k[E+60>>2]|0;d:do if(!h)h=0;else while(1){if((k[h>>2]|0)==(P|0))break d;h=k[h+24>>2]|0;if(!h){h=0;break}}while(0);vt(a,E);Ch(I,Bh(I,15,0,1,e)|0,h,-10);h=k[I+4>>2]|0;if(h)i[h+(((k[I+32>>2]|0)+-1|0)*20|0)+3>>0]=2;E=k[A>>2]|0;i[((E|0)==0?a:E)+21>>0]=1}do if(!m)if(y){Bh(I,9,x,f+1|0,0)|0;h=k[I+32>>2]|0;if(h>>>0>f>>>0)k[(k[I+4>>2]|0)+(f*20|0)+8>>2]=h;k[(k[I+24>>2]|0)+88>>2]=h+-1;break}else{Bh(I,16,0,f,0)|0;h=k[I+32>>2]|0;if(h>>>0>f>>>0)k[(k[I+4>>2]|0)+(f*20|0)+8>>2]=h;k[(k[I+24>>2]|0)+88>>2]=h+-1;break}else{g=k[I+24>>2]|0;f=~p;do if((p|0)<0){h=k[g+112>>2]|0;if(!h)break;k[h+(f<<2)>>2]=k[I+32>>2]}while(0);k[g+88>>2]=(k[I+32>>2]|0)+-1}while(0);if(M)break;if(i[B>>0]&16)break;if(!y)Bh(I,61,k[N>>2]|0,0,0)|0;e=k[F>>2]|0;if(!e)break;else f=0;while(1){Bh(I,61,(k[O>>2]|0)+f|0,0,0)|0;e=k[e+20>>2]|0;if(!e)break;else f=f+1|0}}while(0);if((i[J>>0]|0)==0?(k[a+412>>2]|0)==0:0)xt(a);if((k[G>>2]&128|0)!=0?(i[J>>0]|0)==0:0){if(k[a+412>>2]|0)break;Bh(I,35,H,1,0)|0;nq(I,1);if(i[(k[I>>2]|0)+65>>0]|0)break;ah(k[I+16>>2]|0,34568,-1,1,0)|0}}else d=0}else d=0;while(0);if(K)k[K+492>>2]=L}else d=0}else d=0;Io(P,b);Lk(P,c);rg(P,d);r=Q;return}function xr(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,o=0,p=0,q=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,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;ia=r;r=r+64|0;if((r|0)>=(s|0))ka();Q=ia;V=ia+32|0;ba=ia+24|0;da=ia+20|0;ha=k[a>>2]|0;a:do if(((k[a+64>>2]|0)==0?(i[ha+65>>0]|0)==0:0)?(ga=Or(a,b)|0,(ga|0)!=0):0){g=k[a>>2]|0;m=k[ga+68>>2]|0;b:do if(m){n=k[g+20>>2]|0;if((n|0)>0){g=k[g+16>>2]|0;h=0;while(1){f=h+1|0;if((k[g+(h<<4)+12>>2]|0)==(m|0))break b;if((f|0)<(n|0))h=f;else{h=f;break}}}else h=0}else h=-1e6;while(0);ca=ot(a,ga,110,c,ba)|0;$=(k[ga+12>>2]|0)!=0;if((mr(a,ga)|0)==0?(pt(a,ga,k[ba>>2]|0)|0)==0:0){X=a+68|0;Y=k[X>>2]|0;ea=Y+1|0;k[X>>2]=ea;m=b+48|0;k[m>>2]=Y;H=ga+44|0;p=k[ga+8>>2]|0;c:do if(!(i[H>>0]&32)){n=0;_=16}else{if(!p){t=ga+8|0;n=0;o=Y;q=0;break}else n=p;while(1){if((i[n+51>>0]&3)==2){_=16;break c}n=k[n+20>>2]|0;if(!n){n=0;_=16;break}}}while(0);if((_|0)==16){t=ga+8|0;if(!p){o=Y;q=0}else{f=(n|0)!=0;g=ea;o=Y;q=0;do{if((i[p+51>>0]&3)==2&f){k[m>>2]=g;o=g}g=g+1|0;k[X>>2]=g;q=q+1|0;p=k[p+20>>2]|0}while((p|0)!=0)}}fa=ga+38|0;f=rh(ha,q+2+((j[fa>>1]|0)+q<<2)|0,0)|0;if(f){F=j[fa>>1]|0;Z=f+(F<<2)|0;aa=f+(F+q<<2)|0;W=q+1|0;kw(aa|0,1,W|0)|0;i[aa+W>>0]=0;q=j[fa>>1]|0;if(q<<16>>16>0)kw(f|0,-1,(q<<16>>16>1?q<<16>>16<<2:4)|0)|0;k[V+0>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[V+16>>2]=0;k[V+20>>2]=0;k[V+24>>2]=0;k[V+28>>2]=0;k[V>>2]=a;k[V+4>>2]=b;d:do if((k[c>>2]|0)>0){B=c+4|0;A=ga+4|0;z=ha+16|0;C=(n|0)==0;D=ga+36|0;v=0;u=0;E=0;g=0;while(1){if(qs(V,k[(k[B>>2]|0)+(E*20|0)>>2]|0)|0)break a;x=j[fa>>1]|0;e:do if(x<<16>>16>0){q=k[A>>2]|0;y=k[B>>2]|0;m=k[y+(E*20|0)+4>>2]|0;p=0;while(1){w=p+1|0;if(!(id(k[q+(p*24|0)>>2]|0,m)|0))break;if((w|0)<(x<<16>>16|0))p=w;else{p=w;m=g;break e}}if((p|0)!=(j[D>>1]|0)){if(!C)v=(i[q+(p*24|0)+23>>0]&1)==0?v:1}else{u=1;g=k[y+(E*20|0)>>2]|0}k[f+(p<<2)>>2]=E;m=g}else{p=0;m=g}while(0);if((p|0)<(x<<16>>16|0)){g=k[ga>>2]|0;if((p|0)<0)q=12944;else q=k[(k[A>>2]|0)+(p*24|0)>>2]|0}else{m=k[B>>2]|0;g=k[m+(E*20|0)+4>>2]|0;if(!C)break;if(!(ei(g)|0))break;g=k[ga>>2]|0;q=12944;u=1;p=-1;m=k[m+(E*20|0)>>2]|0}g=Xq(a,23,g,q,k[(k[z>>2]|0)+(h<<4)>>2]|0)|0;if((g|0)==1)break a;else if((g|0)==2)k[f+(p<<2)>>2]=-1;E=E+1|0;if((E|0)>=(k[c>>2]|0)){O=m;break d}else g=m}k[Q>>2]=g;yh(a,34496,Q);i[a+17>>0]=1;break a}else{v=0;u=0;O=0}while(0);U=(v&255)+(u&255)|0;R=U&255;z=b+64|0;k[z>>2]=0;k[z+4>>2]=0;U=U&255;z=rt(a,ga,f,U)|0;g=k[t>>2]|0;if(g){w=(z|U|0)==0;x=a+72|0;y=0;while(1){f:do if(w?!((k[g+36>>2]|0)!=0|(g|0)==(n|0)):0){m=j[g+46>>1]|0;if(!(m<<16>>16))_=56;else{p=k[g+4>>2]|0;q=0;while(1){if((k[f+(j[p+(q<<1)>>1]<<2)>>2]|0)>-1){_=54;break f}q=q+1|0;if((q|0)>=(m&65535|0)){_=56;break}}}}else _=54;while(0);if((_|0)==54){_=0;m=(k[x>>2]|0)+1|0;k[x>>2]=m;if(!m)_=56;else p=y+1|0}if((_|0)==56){_=0;p=y+1|0;i[aa+p>>0]=0;m=0}k[f+(y+F<<2)>>2]=m;g=k[g+20>>2]|0;if(!g)break;else y=p}}S=Tq(a)|0;if(S){T=a+18|0;if(!(i[T>>0]|0)){P=S+88|0;j[P>>1]=j[P>>1]|4}E=a+408|0;P=k[E>>2]|0;P=(P|0)==0?a:P;Fr(a,h);N=P+328|0;k[N>>2]=k[N>>2]|1<>0]=l[P>>0]|1;if(i[H>>0]&16){u=k[a+8>>2]|0;v=k[a>>2]|0;g=k[ga+60>>2]|0;g:do if(!g)g=0;else while(1){if((k[g>>2]|0)==(v|0))break g;g=k[g+24>>2]|0;if(!g){g=0;break}}while(0);h=qr(a,0,yt(v,27,34536)|0)|0;t=(O|0)!=0;if(t)h=qr(a,h,Rr(v,O,0,0)|0)|0;if((j[fa>>1]|0)>0){m=c+4|0;o=ga+4|0;p=0;do{n=k[f+(p<<2)>>2]|0;if((n|0)>-1)n=Rr(v,k[(k[m>>2]|0)+(n*20|0)>>2]|0,0,0)|0;else n=yt(v,27,k[(k[o>>2]|0)+(p*24|0)>>2]|0)|0;h=qr(a,h,n)|0;p=p+1|0}while((p|0)<(j[fa>>1]|0))}o=pr(a,h,b,d,0,0,0,0,0,0)|0;q=k[X>>2]|0;k[X>>2]=q+1;b=t&1;Bh(u,57,q,(j[fa>>1]|0)+(t?2:1)|0,0)|0;p=u+4|0;d=k[p>>2]|0;if(d)i[d+(((k[u+32>>2]|0)+-1|0)*20|0)+3>>0]=8;i[Q>>0]=14;k[Q+4>>2]=q;i[Q+1>>0]=0;k[Q+8>>2]=0;k[Q+12>>2]=0;nr(a,o,Q)|0;d=a+72|0;n=k[d>>2]|0;h=n+1|0;aa=n+2|0;k[d>>2]=(j[fa>>1]|0)+aa;d=Bh(u,108,q,0,0)|0;Bh(u,47,q,0,h)|0;Bh(u,47,q,b,aa)|0;if((j[fa>>1]|0)>0){n=n+3|0;m=0;do{aa=m;m=m+1|0;Bh(u,47,q,m+b|0,n+aa|0)|0}while((m|0)<(j[fa>>1]|0))}vt(a,ga);Ch(u,Bh(u,15,0,(j[fa>>1]|0)+2|0,h)|0,g,-10);g=k[p>>2]|0;if(!g)g=u+32|0;else{aa=u+32|0;i[g+(((k[aa>>2]|0)+-1|0)*20|0)+3>>0]=(e|0)==10?2:e&255;g=aa}aa=k[E>>2]|0;i[((aa|0)==0?a:aa)+21>>0]=1;Bh(u,9,q,d+1|0,0)|0;g=k[g>>2]|0;if(g>>>0>d>>>0)k[(k[p>>2]|0)+(d*20|0)+8>>2]=g;k[(k[u+24>>2]|0)+88>>2]=g+-1;Bh(u,61,q,0,0)|0;Rk(v,o,1);d=0;b=0;break}E=a+72|0;g=k[E>>2]|0;D=g+1|0;N=g+2|0;k[E>>2]=N;F=v<<24>>24!=0;G=(ca|0)!=0;M=(z|0)!=0;if(F|G|M){h=(j[fa>>1]|0)+N|0;k[E>>2]=h;I=g+3|0}else{h=N;I=0}K=(U|0)!=0;if(K|G|M){L=h+1|0;k[E>>2]=L;h=L}else L=N;J=h+1|0;k[E>>2]=(j[fa>>1]|0)+h;if($){P=a+492|0;Q=k[P>>2]|0;k[P>>2]=k[ga>>2];qt(a,ga,d,o);P=a}else{P=0;Q=0}do if(!(qs(V,d)|0)){if(!(i[H>>0]&32)){Bh(S,28,0,D,N)|0;v=_s(a,b,d,0,0,4,ea)|0;if(!v)break;x=v+60|0;g=k[x>>2]|0;x=k[x+4>>2]|0;y=i[v+38>>0]|0;Bh(S,103,o,N,0)|0;if(!(y<<24>>24))Bh(S,128,D,N,0)|0;at(v);A=0;z=0;w=y&255;B=0}else{y=j[n+46>>1]|0;p=k[E>>2]|0;v=p+1|0;z=y<<16>>16;p=z+1+p|0;k[E>>2]=p;A=k[X>>2]|0;k[X>>2]=A+1;Bh(S,28,0,v,0)|0;h=Bh(S,57,A,z,0)|0;q=k[a+8>>2]|0;Ch(q,-1,ms(a,n)|0,-6);q=_s(a,b,d,0,0,4,ea)|0;if(!q)break;x=q+60|0;g=k[x>>2]|0;x=k[x+4>>2]|0;m=i[q+38>>0]|0;B=m&255;if(y<<16>>16>0){y=n+4|0;w=0;do{st(S,ga,o,j[(k[y>>2]|0)+(w<<1)>>1]|0,w+v|0);w=w+1|0}while((w|0)!=(z|0))}if(!(m<<24>>24)){y=tt(S,n)|0;Ch(S,Bh(S,49,v,z,p)|0,y,z);Bh(S,110,A,p,0)|0;y=0;v=p}else{Eh(S,h);y=z}at(q);z=y;w=B;B=v}H=ha+24|0;do if(!(k[H>>2]&128))q=0;else{if(k[a+412>>2]|0){q=0;break}q=(k[E>>2]|0)+1|0;k[E>>2]=q;Bh(S,25,0,q,0)|0}while(0);p=Cs(S)|0;if(!$){h:do if((e|0)==5)kw(aa|0,1,W|0)|0;else{y=k[t>>2]|0;if(!y)break;while(1){if((i[y+50>>0]|0)==5)break;y=k[y+20>>2]|0;if(!y)break h}kw(aa|0,1,W|0)|0}while(0);do if(w){if((g|0)>-1)i[aa+(g-Y)>>0]=0;if((x|0)<=-1)break;i[aa+(x-Y)>>0]=0}while(0);ut(a,ga,55,Y,aa,0,0)|0}E=(w|0)!=0;do if(!E)if(!n){D=Bh(S,129,D,p,N)|0;Bh(S,70,o,D,N)|0;C=0;break}else{D=Cs(S)|0;Bh(S,108,A,p,0)|0;C=Bh(S,101,A,B,0)|0;Ch(S,Bh(S,68,o,D,B)|0,0,-14);break}else{if(!((i[aa+(o-Y)>>0]|0)==0|$))Ch(S,Bh(S,68,o,p,B)|0,z,-14);Bh(S,76,(n|0)!=0?B:N,p,0)|0;C=0;D=p}while(0);u=u<<24>>24==0;if(!u){Wq(a,O,L);Bh(S,38,L,0,0)|0}do if(F|M|G){if(M)v=zt(a,ga)|0;else v=0;y=At(a,ca,c,0,3,ga,e)|0|v;if((j[fa>>1]|0)>0){x=(y|0)==-1;w=ga+4|0;v=0;do{do if(x)_=138;else{if((v|0)<32?(1<>2]|0)+(v*24|0)+23>>0]&1){_=138;break}Bh(S,28,0,v+I|0,0)|0}while(0);if((_|0)==138){_=0;st(S,ga,o,v,v+I|0)}v=v+1|0}while((v|0)<(j[fa>>1]|0))}if(!(u&(n|0)==0))break;Bh(S,33,N,L,0)|0}while(0);v=At(a,ca,c,1,1,ga,e)|0;if((j[fa>>1]|0)>0){u=ga+36|0;g=c+4|0;m=0;do{i:do if((m|0)==(j[u>>1]|0))Bh(S,28,0,m+J|0,0)|0;else{h=k[f+(m<<2)>>2]|0;if((h|0)>-1){Wq(a,k[(k[g>>2]|0)+(h*20|0)>>2]|0,m+J|0);break}do if(!((k[ba>>2]&1|0)==0|(m|0)>31)){if(1<>1]|0))}do if(k[ba>>2]&1){Bt(S,ga,J);Ct(a,ca,110,c,1,ga,N,e,D);if(!n)Bh(S,70,o,D,N)|0;else Ch(S,Bh(S,68,o,D,B)|0,z,-14);g=j[fa>>1]|0;if(g<<16>>16<=0)break;u=ga+36|0;v=0;do{do if((k[f+(v<<2)>>2]|0)<0){if((v|0)==(j[u>>1]|0))break;st(S,ga,o,v,v+J|0);g=j[fa>>1]|0}while(0);v=v+1|0}while((v|0)<(g<<16>>16|0))}while(0);do if(!$){k[da>>2]=0;Dt(a,ga,Z,o,ea,L,N,R,e&255,D,da);if(M)Et(a,ga,N,0,f,U);g=(k[da>>2]|U|0)==0;do if(!g)if(!n){h=Bh(S,70,o,0,N)|0;break}else{h=Bh(S,68,o,0,B)|0;Ch(S,h,z,-14);break}else h=0;while(0);Ft(a,ga,o,ea,Z);if(M|(K|(n|0)!=0))Bh(S,95,o,0,0)|0;if(!g){g=k[S+32>>2]|0;if(g>>>0>h>>>0)k[(k[S+4>>2]|0)+(h*20|0)+8>>2]=g;k[(k[S+24>>2]|0)+88>>2]=g+-1}if(M){Et(a,ga,0,L,f,U);Gt(a,ga,o,ea,L,Z,1,0,0);Ht(a,ga,c,N,f,U);break}else{Gt(a,ga,o,ea,L,Z,1,0,0);break}}while(0);do if(k[H>>2]&128){if(k[a+412>>2]|0)break;Bh(S,37,q,1,0)|0}while(0);Ct(a,ca,110,c,2,ga,N,e,D);do if(!E){if(!n){Bh(S,16,0,D,0)|0;break}m=k[S+24>>2]|0;h=~D;do if((D|0)<0){n=k[m+112>>2]|0;if(!n)break;k[n+(h<<2)>>2]=k[S+32>>2]}while(0);k[m+88>>2]=(k[S+32>>2]|0)+-1;Bh(S,9,A,C,0)|0}while(0);m=k[S+24>>2]|0;h=~p;do if((p|0)<0){n=k[m+112>>2]|0;if(!n)break;k[n+(h<<2)>>2]=k[S+32>>2]}while(0);k[m+88>>2]=(k[S+32>>2]|0)+-1;h=k[t>>2]|0;if(h){m=0;do{n=m;m=m+1|0;if(i[aa+m>>0]|0)Bh(S,61,n+ea|0,0,0)|0;h=k[h+20>>2]|0}while((h|0)!=0)}if((o|0)<(ea|0))Bh(S,61,o,0,0)|0;do if(!(i[T>>0]|0)){if(k[a+412>>2]|0)break;xt(a)}while(0);if(!(k[H>>2]&128))break;if(k[a+412>>2]|0)break;if(i[T>>0]|0)break;Bh(S,35,q,1,0)|0;nq(S,1);if(i[(k[S>>2]|0)+65>>0]|0)break;ah(k[S+16>>2]|0,34520,-1,1,0)|0}while(0);if(P)k[P+492>>2]=Q}}}else f=0}else f=0;while(0);rg(ha,f);Io(ha,b);Sk(ha,c);Lk(ha,d);r=ia;return}function yr(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,o=0,p=0,q=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,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0;la=r;r=r+96|0;if((r|0)>=(s|0))ka();$=la;fa=la+92|0;ha=la+88|0;I=la+68|0;V=la+64|0;L=la+32|0;_=la+28|0;k[fa>>2]=0;k[ha>>2]=0;ja=k[a>>2]|0;k[I+0>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[I+16>>2]=0;a:do if((k[a+64>>2]|0)==0?(K=ja+65|0,(i[K>>0]|0)==0):0){if(c)if((j[c+6>>1]&128)!=0?(k[c+52>>2]|0)==0:0){f=k[c>>2]|0;k[c>>2]=0;Rk(ja,c,1);c=0}else f=0;else{c=0;f=0}if((k[b+16>>2]|0)!=0?(ga=Or(a,b)|0,(ga|0)!=0):0){p=k[ga+68>>2]|0;b:do if(p){o=k[ja+20>>2]|0;if((o|0)>0){n=k[ja+16>>2]|0;h=0;while(1){m=h+1|0;if((k[n+(h<<4)+12>>2]|0)==(p|0)){m=h;break b}if((m|0)<(o|0))h=m;else break}}else m=0}else m=-1e6;while(0);if((((Xq(a,18,k[ga>>2]|0,0,k[(k[ja+16>>2]|0)+(m<<4)>>2]|0)|0)==0?(ca=ga+44|0,W=(l[ca>>0]|0)>>>5&1,ba=ot(a,ga,108,0,V)|0,da=(k[ga+12>>2]|0)!=0,(mr(a,ga)|0)==0):0)?(pt(a,ga,k[V>>2]|0)|0)==0:0)?(ia=Tq(a)|0,(ia|0)!=0):0){ea=a+18|0;if(!(i[ea>>0]|0)){aa=ia+88|0;j[aa>>1]=j[aa>>1]|4}aa=(c|0)!=0;Z=a+408|0;Y=k[Z>>2]|0;Y=(Y|0)==0?a:Y;Fr(a,m);U=Y+328|0;k[U>>2]=k[U>>2]|1<>0]=l[Y>>0]|(aa|(ba|0)!=0)&1;Y=(d|0)==0;c:do if((((!((c|0)==0|Y^1)?(k[a+532>>2]|0)==0:0)?(k[c+68>>2]|0)==0:0)?(Fs(a,ga)|0)==0:0)?(i[ca>>0]&16)==0:0){if((e|0)==10){if((j[ga+36>>1]|0)>-1)p=l[ga+45>>0]|0;else p=10;v=(p|0)==10?2:p}else v=e;o=k[c+32>>2]|0;if((k[o>>2]|0)==1){if(k[o+28>>2]|0){X=117;break}if(k[c+36>>2]|0){X=117;break}if(k[c+48>>2]|0){X=117;break}if(k[c+40>>2]|0){X=117;break}if(k[c+60>>2]|0){X=117;break}if(k[c+52>>2]|0){X=117;break}if(j[c+6>>1]&1){X=117;break}p=k[c>>2]|0;if((k[p>>2]|0)!=1){X=117;break}if((i[k[k[p+4>>2]>>2]>>0]|0)!=116){X=117;break}u=Zr(a,0,o+8|0)|0;if((u|0)==0|(u|0)==(ga|0)){X=117;break}y=u+44|0;U=l[y>>0]|0;if(!((U&16|0)==0?(((l[ca>>0]|0)>>>5&1^1)&255|0)==(U>>>5&1^1|0):0)){X=117;break}if(k[u+12>>2]|0){X=117;break}q=j[ga+38>>1]|0;if(q<<16>>16!=(j[u+38>>1]|0)){X=117;break}x=ga+36|0;if((j[x>>1]|0)!=(j[u+36>>1]|0)){X=117;break}if(q<<16>>16>0){h=k[ga+4>>2]|0;g=k[u+4>>2]|0;t=0;do{if((i[h+(t*24|0)+21>>0]|0)!=(i[g+(t*24|0)+21>>0]|0)){X=117;break c}p=k[h+(t*24|0)+16>>2]|0;o=k[g+(t*24|0)+16>>2]|0;n=(o|0)==0;if(!p){if(!n){X=117;break c}}else{if(n){X=117;break c}if(id(p,o)|0){X=117;break c}}if((i[h+(t*24|0)+20>>0]|0)!=0?(i[g+(t*24|0)+20>>0]|0)==0:0){X=117;break c}do if((t|0)>0){p=k[h+(t*24|0)+8>>2]|0;o=(p|0)==0;n=k[g+(t*24|0)+8>>2]|0;if(o^(n|0)==0){X=117;break c}if(o)break;if(dw(p,n)|0){X=117;break c}}while(0);t=t+1|0}while((t|0)<(q<<16>>16|0))}B=ga+8|0;p=k[B>>2]|0;if(!p)o=0;else{q=k[u+8>>2]|0;if(!q){X=117;break}else o=0;do{o=(i[p+50>>0]|0)==0?o:1;n=q;while(1){if(It(p,n)|0)break;n=k[n+20>>2]|0;if(!n){X=117;break c}}if(!n){X=117;break c}p=k[p+20>>2]|0}while((p|0)!=0)}p=k[ga+24>>2]|0;if((p|0)!=0?(Ys(k[u+24>>2]|0,p,-1)|0)!=0:0){X=117;break}n=k[a>>2]|0;p=k[n+24>>2]|0;if(!(p&524288)){if(p&128){X=117;break}}else if(!((k[ga+16>>2]|0)==0&(p&128|0)==0)){X=117;break}g=k[u+68>>2]|0;d:do if(!g)n=-1e6;else{q=k[n+20>>2]|0;if((q|0)<=0){n=0;break}p=k[n+16>>2]|0;h=0;while(1){n=h+1|0;if((k[p+(h<<4)+12>>2]|0)==(g|0)){n=h;break d}if((n|0)<(q|0))h=n;else break}}while(0);A=Tq(a)|0;Fr(a,n);w=a+68|0;C=k[w>>2]|0;z=C+1|0;k[w>>2]=C+2;w=Jt(a,m,ga)|0;q=a+19|0;h=i[q>>0]|0;do if(!(h<<24>>24)){X=a+72|0;p=(k[X>>2]|0)+1|0;k[X>>2]=p;X=78}else{U=h+-1<<24>>24;i[q>>0]=U;p=k[a+((U&255)<<2)+24>>2]|0;if(!(U<<24>>24)){X=78;break}D=h+-2<<24>>24;i[q>>0]=D;E=p;D=k[a+((D&255)<<2)+24>>2]|0}while(0);if((X|0)==78){E=a+72|0;D=(k[E>>2]|0)+1|0;k[E>>2]=D;E=p}Vq(a,z,m,ga,55);if((j[x>>1]|0)<0)if((k[B>>2]|0)!=0|(o|0)!=0|(v+-1|0)>>>0>1)X=83;else F=0;else if((o|0)!=0|(v+-1|0)>>>0>1)X=83;else F=0;if((X|0)==83){t=Bh(A,108,z,0,0)|0;q=Bh(A,16,0,0,0)|0;p=k[A+32>>2]|0;if(p>>>0>t>>>0)k[(k[A+4>>2]|0)+(t*20|0)+8>>2]=p;k[(k[A+24>>2]|0)+88>>2]=p+-1;F=q}if(!(i[y>>0]&32)){Vq(a,C,n,u,54);o=Bh(A,108,C,0,0)|0;do if((j[x>>1]|0)<=-1)if(!(k[B>>2]|0)){p=Bh(A,74,z,D,0)|0;break}else{p=Bh(A,103,C,D,0)|0;break}else{p=Bh(A,103,C,D,0)|0;t=Bh(A,70,z,0,D)|0;Kt(a,v,ga);q=k[A+32>>2]|0;if(q>>>0>t>>>0)k[(k[A+4>>2]|0)+(t*20|0)+8>>2]=q;k[(k[A+24>>2]|0)+88>>2]=q+-1;if((w|0)<=0)break;Bh(k[a+8>>2]|0,136,w,D,0)|0}while(0);Bh(A,102,C,E,0)|0;Bh(A,75,z,E,D)|0;q=k[A+4>>2]|0;if(q)i[q+(((k[A+32>>2]|0)+-1|0)*20|0)+3>>0]=11;Ch(A,-1,k[ga>>2]|0,0);Bh(A,9,C,p,0)|0;Bh(A,61,C,0,0)|0;Bh(A,61,z,0,0)|0}else{ls(a,m,k[ga+32>>2]|0,1,k[ga>>2]|0);ls(a,n,k[u+32>>2]|0,0,k[u>>2]|0);o=0}t=k[B>>2]|0;if(t){h=u+8|0;g=a+8|0;u=A+4|0;v=A+32|0;w=A+24|0;p=t;do{t=h;while(1){t=k[t>>2]|0;if(It(p,t)|0)break;t=t+20|0}Bh(A,54,C,k[t+40>>2]|0,n)|0;U=k[g>>2]|0;Ch(U,-1,ms(a,t)|0,-6);Bh(A,55,z,k[p+40>>2]|0,m)|0;t=k[g>>2]|0;Ch(t,-1,ms(a,p)|0,-6);t=k[u>>2]|0;if(t)i[t+(((k[v>>2]|0)+-1|0)*20|0)+3>>0]=1;t=Bh(A,108,C,0,0)|0;Bh(A,101,C,E,0)|0;Bh(A,110,z,E,1)|0;Bh(A,9,C,t+1|0,0)|0;q=k[v>>2]|0;if(q>>>0>t>>>0)k[(k[u>>2]|0)+(t*20|0)+8>>2]=q;k[(k[w>>2]|0)+88>>2]=q+-1;Bh(A,61,C,0,0)|0;Bh(A,61,z,0,0)|0;p=k[p+20>>2]|0}while((p|0)!=0)}if(o){p=k[A+32>>2]|0;if(p>>>0>o>>>0)k[(k[A+4>>2]|0)+(o*20|0)+8>>2]=p;k[(k[A+24>>2]|0)+88>>2]=p+-1}ds(a,D);ds(a,E);if(!F){g=0;h=0;break}Bh(A,24,0,0,0)|0;p=k[A+32>>2]|0;if(p>>>0>F>>>0)k[(k[A+4>>2]|0)+(F*20|0)+8>>2]=p;k[(k[A+24>>2]|0)+88>>2]=p+-1;Bh(A,61,z,0,0)|0;X=117}else X=117}else X=117;while(0);do if((X|0)==117){P=Jt(a,m,ga)|0;O=a+72|0;o=k[O>>2]|0;T=o+1|0;U=ga+38|0;F=j[U>>1]|0;E=F<<16>>16;p=T+E|0;k[O>>2]=p;if(!(i[ca>>0]&16))S=T;else{p=p+1|0;k[O>>2]=p;S=o+2|0}Q=S+1|0;R=(d|0)!=0;e:do if(R?(M=k[d+4>>2]|0,N=(M|0)>0,N):0){q=k[d>>2]|0;o=0;do{k[q+(o<<3)+4>>2]=-1;o=o+1|0}while((o|0)<(M|0));if(N){A=W<<24>>24!=0;z=ga+4|0;y=ga+36|0;o=1;x=0;q=-1;while(1){f:do if(F<<16>>16>0){w=k[d>>2]|0;n=k[w+(x<<3)>>2]|0;h=k[z>>2]|0;g=0;while(1){t=g+1|0;if(!(id(n,k[h+(g*24|0)>>2]|0)|0)){t=g;break}if((t|0)<(E|0))g=t;else break f}k[w+(x<<3)+4>>2]=t;o=(x|0)==(t|0)?o:0;q=(t|0)==(j[y>>1]|0)?x:q}else t=0;while(0);if((t|0)>=(E|0)){g=k[(k[d>>2]|0)+(x<<3)>>2]|0;if((ei(g)|0)==0|A)break;else{o=0;t=x}}else t=q;x=x+1|0;if((x|0)>=(M|0)){B=t;break e}else q=t}k[$>>2]=b;k[$+4>>2]=0;k[$+8>>2]=g;yh(a,33368,$);i[a+17>>0]=1;g=0;break a}else{o=1;B=-1}}else{o=1;B=-1}while(0);g:do if(!aa){k[L+0>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[L+16>>2]=0;k[L+20>>2]=0;k[L+24>>2]=0;k[L+28>>2]=0;k[L>>2]=a;if(f){n=k[f>>2]|0;if((n|0)>0){p=f+4|0;o=0;while(1){if(qs(L,k[(k[p>>2]|0)+(o*20|0)>>2]|0)|0){c=0;g=0;break a}o=o+1|0;if((o|0)>=(n|0)){p=0;o=-1;m=0;X=169;break}}}else{M=B;L=0;N=-1;w=0}}else{M=B;n=0;L=0;N=-1;w=0}}else{p=p+1|0;k[O>>2]=p;D=ia+32|0;q=k[D>>2]|0;Bh(ia,20,p,0,q+1|0)|0;i[I>>0]=13;E=I+4|0;k[E>>2]=p;i[I+1>>0]=0;C=I+8|0;k[C>>2]=o<<24>>24!=0?Q:0;k[I+12>>2]=j[U>>1];N=nr(a,c,I)|0;C=k[C>>2]|0;if(N){g=0;break a}if(i[K>>0]|0){g=0;break a}Bh(ia,21,p,0,0)|0;p=k[D>>2]|0;if(p>>>0>q>>>0)k[(k[ia+4>>2]|0)+(q*20|0)+8>>2]=p;F=ia+24|0;k[(k[F>>2]|0)+88>>2]=p+-1;n=k[k[c>>2]>>2]|0;h:do if(!ba){t=Tq(a)|0;o=k[t+32>>2]|0;i:do if(!(i[ca>>0]&16))q=0;else{p=k[a>>2]|0;q=k[ga+60>>2]|0;if(!q){q=0;break}while(1){if((k[q>>2]|0)==(p|0))break i;q=k[q+24>>2]|0;if(!q){q=0;break}}}while(0);if((o|0)<=1){p=C;o=0;m=0;X=169;break g}h=(i[(k[t>>2]|0)+65>>0]|0)==0;w=t+4|0;v=ga+32|0;u=ga+8|0;g=1;while(1){if(h)t=(k[w>>2]|0)+(g*20|0)|0;else t=29120;p=i[t>>0]|0;do if(p<<24>>24==54){if((k[t+12>>2]|0)!=(m|0))break;p=k[t+8>>2]|0;if((p|0)==(k[v>>2]|0))break h;t=k[u>>2]|0;if(!t)break;do{if((p|0)==(k[t+40>>2]|0))break h;t=k[t+20>>2]|0}while((t|0)!=0)}else if(p<<24>>24==-107?(k[t+16>>2]|0)==(q|0):0)break h;while(0);g=g+1|0;if((g|0)>=(o|0)){p=C;o=0;m=0;X=169;break g}}}while(0);q=a+68|0;t=k[q>>2]|0;k[q>>2]=t+1;q=a+19|0;o=i[q>>0]|0;do if(!(o<<24>>24)){p=(k[O>>2]|0)+1|0;k[O>>2]=p;X=159}else{N=o+-1<<24>>24;i[q>>0]=N;p=k[a+((N&255)<<2)+24>>2]|0;if(!(N<<24>>24)){X=159;break}N=o+-2<<24>>24;i[q>>0]=N;q=k[a+((N&255)<<2)+24>>2]|0}while(0);if((X|0)==159){q=(k[O>>2]|0)+1|0;k[O>>2]=q}Bh(ia,57,t,n,0)|0;m=Bh(ia,22,k[E>>2]|0,0,0)|0;Bh(ia,49,C,n,p)|0;Bh(ia,74,t,q,0)|0;Bh(ia,75,t,p,q)|0;Bh(ia,16,0,m,0)|0;o=k[D>>2]|0;if(o>>>0>m>>>0)k[(k[ia+4>>2]|0)+(m*20|0)+8>>2]=o;k[(k[F>>2]|0)+88>>2]=o+-1;ds(a,p);ds(a,q);p=C;o=t;m=1;X=169}while(0);if((X|0)==169)if(Y&(n|0)>0){M=j[ga+36>>1]|0;L=p;N=o;w=m}else{M=B;L=p;N=o;w=m}if((i[ca>>0]&16)!=0?(J=j[U>>1]|0,J<<16>>16>0):0){q=k[ga+4>>2]|0;o=J<<16>>16;m=0;p=0;do{p=((l[q+(m*24|0)+23>>0]|0)>>>1&1)+p|0;m=m+1|0}while((m|0)<(o|0))}else p=0;do if(Y&(n|0)!=0){p=(j[U>>1]|0)-p|0;if((n|0)==(p|0))break;k[$>>2]=b;k[$+4>>2]=0;k[$+8>>2]=p;k[$+12>>2]=n;yh(a,33400,$);g=0;break a}while(0);do if(R){p=k[d+4>>2]|0;if((n|0)==(p|0))break;k[$>>2]=n;k[$+4>>2]=p;yh(a,33456,$);g=0;break a}while(0);H=ja+24|0;if(!(k[H>>2]&128))h=0;else{h=(k[O>>2]|0)+1|0;k[O>>2]=h;Bh(ia,25,0,h,0)|0}do if(da)g=0;else{p=ut(a,ga,55,-1,0,fa,ha)|0;g=rh(ja,(p<<2)+4|0,0)|0;if(!g)break a;if((p|0)>0)o=0;else break;do{K=(k[O>>2]|0)+1|0;k[O>>2]=K;k[g+(o<<2)>>2]=K;o=o+1|0}while((o|0)!=(p|0))}while(0);J=w<<24>>24!=0;do if(J){K=Bh(ia,108,N,0,0)|0;I=k[ia+32>>2]|0}else{if(!aa){I=0;K=0;break}K=Bh(ia,22,k[I+4>>2]|0,0,0)|0;I=K}while(0);G=Cs(ia)|0;do if(k[V>>2]&1){t=(j[U>>1]|0)+1|0;E=a+60|0;q=k[E>>2]|0;D=a+56|0;p=k[D>>2]|0;if((p|0)<(t|0)){F=k[O>>2]|0;k[O>>2]=F+t;F=F+1|0}else{k[E>>2]=t+q;k[D>>2]=p-t;F=q}if((M|0)<0)Bh(ia,25,-1,F,0)|0;else{if(J)Bh(ia,47,N,M,F)|0;else Wq(a,k[(k[f+4>>2]|0)+(M*20|0)>>2]|0,F);t=Bh(ia,77,F,0,0)|0;Bh(ia,25,-1,F,0)|0;q=k[ia+32>>2]|0;if(q>>>0>t>>>0)k[(k[ia+4>>2]|0)+(t*20|0)+8>>2]=q;k[(k[ia+24>>2]|0)+88>>2]=q+-1;Bh(ia,38,F,0,0)|0}q=j[U>>1]|0;if(q<<16>>16>0){A=J|(f|0)!=0;o=d+4|0;p=F+1|0;t=f+4|0;x=a+8|0;y=ga+4|0;z=0;do{j:do if(Y)w=z;else{v=k[o>>2]|0;if((v|0)<=0){w=0;break}u=k[d>>2]|0;m=0;while(1){w=m+1|0;if((k[u+(m<<3)+4>>2]|0)==(z|0)){w=m;break j}if((w|0)<(v|0))m=w;else break}}while(0);do if(A){if(R?(w|0)>=(k[o>>2]|0):0){X=213;break}if(J){Bh(ia,47,N,w,p+z|0)|0;break}else{V=k[(k[t>>2]|0)+(w*20|0)>>2]|0;m=p+z|0;u=k[x>>2]|0;Wq(a,V,m);q=(k[O>>2]|0)+1|0;k[O>>2]=q;Bh(u,33,m,q,0)|0;i[V+38>>0]=i[V>>0]|0;i[V>>0]=-97;k[V+28>>2]=q;V=V+4|0;k[V>>2]=k[V>>2]&-4097;break}}else X=213;while(0);if((X|0)==213){X=0;Wq(a,k[(k[y>>2]|0)+(z*24|0)+4>>2]|0,p+z|0)}z=z+1|0;q=j[U>>1]|0}while((z|0)<(q<<16>>16|0))}if(!da){Bt(ia,ga,F+1|0);q=j[U>>1]|0}Ct(a,ba,108,0,1,ga,F+-1-(q<<16>>16)|0,e,G);q=(j[U>>1]|0)+1|0;it(a,F,q);if((k[D>>2]|0)>=(q|0))break;k[D>>2]=q;k[E>>2]=F}while(0);do if(!da){if(i[ca>>0]&16)Bh(ia,28,0,T,0)|0;k:do if((M|0)<=-1)if(!((i[ca>>0]&16|W)<<24>>24)){Bh(ia,74,k[fa>>2]|0,S,P)|0;F=1;break}else{Bh(ia,28,0,S,0)|0;F=0;break}else{do if(J)Bh(ia,47,N,M,S)|0;else{if(aa){Bh(ia,33,M+L|0,S,0)|0;break}Wq(a,k[(k[f+4>>2]|0)+(M*20|0)>>2]|0,S);if(!(i[(k[ia>>2]|0)+65>>0]|0)){p=(k[ia+4>>2]|0)+(((k[ia+32>>2]|0)+-1|0)*20|0)|0;if(!p)break}else p=29120;if((i[p>>0]|0)!=28)break;if(i[ca>>0]&16)break;i[p>>0]=74;k[p+4>>2]=k[fa>>2];k[p+8>>2]=S;k[p+12>>2]=P;F=1;break k}while(0);if(!(i[ca>>0]&16)){p=Bh(ia,77,S,0,0)|0;Bh(ia,74,k[fa>>2]|0,S,P)|0;o=k[ia+32>>2]|0;if(o>>>0>p>>>0)k[(k[ia+4>>2]|0)+(p*20|0)+8>>2]=o;k[(k[ia+24>>2]|0)+88>>2]=o+-1}else Bh(ia,76,S,(k[ia+32>>2]|0)+2|0,0)|0;Bh(ia,38,S,0,0)|0;F=0}while(0);if((P|0)>0)Bh(k[a+8>>2]|0,136,P,S,0)|0;if((j[U>>1]|0)>0){D=ga+36|0;E=ga+4|0;z=(n|0)==0;y=d+4|0;x=(L|0)==(Q|0);n=f+4|0;o=a+23|0;p=$+20|0;q=$+4|0;B=$+24|0;C=0;t=0;do{A=C+Q|0;l:do if((C|0)==(j[D>>1]|0))Bh(ia,29,A,0,0)|0;else{m:do if(Y)if(!(i[(k[E>>2]|0)+(C*24|0)+23>>0]&2)){w=C-t|0;X=258;break}else{t=t+1|0;break}else{v=k[y>>2]|0;if((v|0)<=0){w=0;X=258;break}u=k[d>>2]|0;m=0;while(1){w=m+1|0;if((k[u+(m<<3)+4>>2]|0)==(C|0)){w=m;X=258;break m}if((w|0)<(v|0))m=w;else{X=258;break}}}while(0);do if((X|0)==258){X=0;if((w|0)<0|z)break;if(R?(w|0)>=(k[y>>2]|0):0)break;if(J){Bh(ia,47,N,w,A)|0;break l}if(!aa){Wq(a,k[(k[n>>2]|0)+(w*20|0)>>2]|0,A);break l}if(x)break l;Bh(ia,34,w+L|0,A,0)|0;break l}while(0);w=k[(k[E>>2]|0)+(C*24|0)+4>>2]|0;do if(i[o>>0]|0){k[$+0>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;k[$+12>>2]=0;k[$+16>>2]=0;k[$+20>>2]=0;i[p>>0]=1;k[$>>2]=78;k[q>>2]=79;k[B>>2]=0;ws($,w)|0;if(!(i[p>>0]|0))break;Lt(a,w,A,0);break l}while(0);Wq(a,w,A)}while(0);C=C+1|0}while((C|0)<(j[U>>1]|0))}if(!(i[ca>>0]&16)){Dt(a,ga,g,k[fa>>2]|0,k[ha>>2]|0,T,0,M>>>31&255^1,e&255,G,_);Et(a,ga,0,T,0,0);Gt(a,ga,k[fa>>2]|0,k[ha>>2]|0,T,g,0,F,(k[_>>2]|0)==0&1);break}p=k[ga+60>>2]|0;n:do if(!p)p=0;else while(1){if((k[p>>2]|0)==(ja|0))break n;p=k[p+24>>2]|0;if(!p){p=0;break}}while(0);vt(a,ga);Ch(ia,Bh(ia,15,1,(j[U>>1]|0)+2|0,T)|0,p,-10);o=k[ia+4>>2]|0;if(o)i[o+(((k[ia+32>>2]|0)+-1|0)*20|0)+3>>0]=(e|0)==10?2:e&255;$=k[Z>>2]|0;i[(($|0)==0?a:$)+21>>0]=1}while(0);if(k[H>>2]&128)Bh(ia,37,h,1,0)|0;if(ba)Ct(a,ba,108,0,2,ga,S+-1-(j[U>>1]|0)|0,e,G);p=ia+24|0;o=k[p>>2]|0;m=~G;do if((G|0)<0){n=k[o+112>>2]|0;if(!n)break;k[n+(m<<2)>>2]=k[ia+32>>2]}while(0);n=ia+32|0;k[o+88>>2]=(k[n>>2]|0)+-1;do if(J){Bh(ia,9,N,I,0)|0;n=k[n>>2]|0;if(n>>>0>K>>>0)k[(k[ia+4>>2]|0)+(K*20|0)+8>>2]=n;k[(k[p>>2]|0)+88>>2]=n+-1;Bh(ia,61,N,0,0)|0}else{if(!aa)break;Bh(ia,16,0,I,0)|0;n=k[n>>2]|0;if(n>>>0>K>>>0)k[(k[ia+4>>2]|0)+(K*20|0)+8>>2]=n;k[(k[p>>2]|0)+88>>2]=n+-1}while(0);if((i[ca>>0]&16)!=0|da)break;m=k[fa>>2]|0;if((m|0)<(k[ha>>2]|0))Bh(ia,61,m,0,0)|0;m=k[ga+8>>2]|0;if(!m)break;else n=0;while(1){Bh(ia,61,(k[ha>>2]|0)+n|0,0,0)|0;m=k[m+20>>2]|0;if(!m)break;else n=n+1|0}}while(0);if((i[ea>>0]|0)==0?(k[a+412>>2]|0)==0:0)xt(a);if((((k[ja+24>>2]&128|0)!=0?(i[ea>>0]|0)==0:0)?(k[a+412>>2]|0)==0:0)?(Bh(ia,35,h,1,0)|0,nq(ia,1),(i[(k[ia>>2]|0)+65>>0]|0)==0):0)ah(k[ia+16>>2]|0,33488,-1,1,0)|0}else g=0}else g=0}else{g=0;f=0}while(0);Io(ja,b);Sk(ja,f);Rk(ja,c,1);Mk(ja,d);rg(ja,g);r=la;return}function zr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();d=f;if(!b){b=rh(a,8,0)|0;if(!b)b=0;else{e=b;g=e;i[g>>0]=0;i[g+1>>0]=0;i[g+2>>0]=0;i[g+3>>0]=0;e=e+4|0;i[e>>0]=0;i[e+1>>0]=0;i[e+2>>0]=0;i[e+3>>0]=0;e=4}}else e=4;do if((e|0)==4){e=Mt(a,k[b>>2]|0,8,b+4|0,d)|0;k[b>>2]=e;d=k[d>>2]|0;if((d|0)<0){Mk(a,b);b=0;break}else{a=$q(a,c)|0;k[(k[b>>2]|0)+(d<<3)>>2]=a;break}}while(0);r=f;return b|0}function Ar(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((k[c+4>>2]|0)!=0?(e=sr(k[a>>2]|0,95,c,d)|0,(e|0)!=0):0){k[e+12>>2]=b;b=e+4|0;k[b>>2]=k[b>>2]|4352;b=e}return b|0}function Br(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a>>2]|0;c=sr(d,153,c,1)|0;if(!c){Sk(d,b);c=0}else{k[c+20>>2]=b;Dr(a,c)}return c|0}function Cr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=k[a>>2]|0;if((b|0)!=0&(c|0)!=0?(i[b>>0]|0)==101:0){i[c>>0]=d;d=c+16|0;Lk(a,k[d>>2]|0);k[d>>2]=0}return}function Dr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;if((k[a+64>>2]|0)==0?(Nt(b),c=k[(k[a>>2]|0)+100>>2]|0,(c|0)<(k[b+24>>2]|0)):0){k[d>>2]=c;yh(a,27152,d)}r=e;return}function Er(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=k[a>>2]|0;h=c+20|0;d=k[h>>2]|0;if((d|0)>0){f=c+16|0;g=(b|0)==0;c=d;e=0;do{d=k[f>>2]|0;do if(k[d+(e<<4)+4>>2]|0){if(!g?(id(b,k[d+(e<<4)>>2]|0)|0)!=0:0)break;Fr(a,e);c=k[h>>2]|0}while(0);e=e+1|0}while((e|0)<(c|0))}return}function Fr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=k[a+408>>2]|0;e=(e|0)==0?a:e;a=e+332|0;c=k[a>>2]|0;d=1<>2]|0,k[a>>2]=c|d,k[e+(b<<2)+336>>2]=k[k[(k[f+16>>2]|0)+(b<<4)+12>>2]>>2],(b|0)==1):0)dl(e)|0;return}function Gr(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+128|0;if((r|0)>=(s|0))ka();d=m+8|0;l=m;j=m+24|0;k[l>>2]=0;g=k[a>>2]|0;if((k[a+64>>2]|0)==0?(k[d>>2]=c,h=$k(g,b,d)|0,(h|0)!=0):0){b=a+18|0;i[b>>0]=(i[b>>0]|0)+1<<24>>24;c=a+440|0;d=j+0|0;e=c+0|0;f=d+96|0;do{i[d>>0]=i[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));d=c+0|0;f=d+96|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));Qh(a,h,l)|0;rg(g,k[l>>2]|0);rg(g,h);d=c+0|0;e=j+0|0;f=d+96|0;do{i[d>>0]=i[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));i[b>>0]=(i[b>>0]|0)+-1<<24>>24}r=m;return}function Hr(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;h=r;r=r+48|0;if((r|0)>=(s|0))ka();f=h;g=h+16|0;b=k[(k[(k[a>>2]|0)+16>>2]|0)+(b<<4)>>2]|0;e=1;do{k[f>>2]=e;fd(24,g,33272,f)|0;if(di(k[a>>2]|0,g,b)|0){k[f>>2]=b;k[f+4>>2]=g;k[f+8>>2]=c;k[f+12>>2]=d;Gr(a,28840,f)}e=e+1|0}while((e|0)!=5);r=h;return}function Ir(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+19|0;d=i[c>>0]|0;if(!(d<<24>>24)){d=a+72|0;c=(k[d>>2]|0)+1|0;k[d>>2]=c}else{d=d+-1<<24>>24;i[c>>0]=d;c=k[a+((d&255)<<2)+24>>2]|0}d=k[a+8>>2]|0;Bh(d,25,(k[k[(k[(k[a>>2]|0)+16>>2]|0)+(b<<4)+12>>2]>>2]|0)+1|0,c,0)|0;Bh(d,52,b,1,c)|0;ds(a,c);return}function Jr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=r;r=r+32|0;if((r|0)>=(s|0))ka();g=h;f=Tq(a)|0;d=a+19|0;e=i[d>>0]|0;if(!(e<<24>>24)){e=a+72|0;d=(k[e>>2]|0)+1|0;k[e>>2]=d}else{e=e+-1<<24>>24;i[d>>0]=e;d=k[a+((e&255)<<2)+24>>2]|0}Bh(f,117,b,d,c)|0;e=k[a+408>>2]|0;i[((e|0)==0?a:e)+21>>0]=1;k[g>>2]=k[(k[(k[a>>2]|0)+16>>2]|0)+(c<<4)>>2];k[g+4>>2]=(c|0)==1?13184:13208;k[g+8>>2]=b;k[g+12>>2]=d;k[g+16>>2]=d;Gr(a,33216,g);ds(a,d);r=h;return}function Kr(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,n=0,o=0,p=0,q=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;U=r;r=r+96|0;if((r|0)>=(s|0))ka();D=U+24|0;t=U+80|0;g=U+64|0;x=U+16|0;o=U+60|0;p=U+56|0;L=U+52|0;K=U+48|0;w=U+44|0;A=U+40|0;B=U+36|0;C=U+32|0;u=U+8|0;n=U;T=k[a>>2]|0;Q=Tq(a)|0;do if((Q|0)!=0?(P=Q+88|0,j[P>>1]=j[P>>1]|16,P=a+72|0,k[P>>2]=2,N=jr(a,b,c,t)|0,(N|0)>=0):0){O=T+16|0;z=k[O>>2]|0;if((N|0)==1?(dl(a)|0)!=0:0)break;S=$q(T,k[t>>2]|0)|0;if(S){if(!e)R=$q(T,d)|0;else{k[D>>2]=d;R=zh(T,30104,D)|0}y=c+4|0;if(!(k[y>>2]|0))I=0;else I=k[z+(N<<4)>>2]|0;a:do if(!(Xq(a,19,S,R,I)|0)){k[g>>2]=0;k[g+4>>2]=S;k[g+8>>2]=R;k[g+12>>2]=0;h=T+452|0;k[h>>2]=0;b=hg(T,I,14,g)|0;if((b|0)==12){t=0;g=56;b:while(1){while(1){e=(t+g|0)/2|0;b=k[30120+(e*12|0)>>2]|0;d=id(S,b)|0;if(!d){t=e;break b}if((d|0)<0){b=e;break}if((e|0)<(g|0))t=e+1|0;else break a}b=b+-1|0;if((t|0)>(b|0))break a;else g=b}if((i[30125+(t*12|0)>>0]&1)!=0?(Ln(a)|0)!=0:0)break;do switch(l[30124+(t*12|0)>>0]|0){case 1:{d=k[z+(N<<4)+4>>2]|0;if(!R){f=k[d+4>>2]|0;k[f+4>>2]=k[d>>2];if(!(i[f+17>>0]|0)){f=0;e=0}else{e=(i[f+18>>0]|0)==0;f=e?1:2;e=e?0:0}Ot(a,30976,f,e);break a}if(id(R,32192)|0)if(id(R,31880)|0)if(!(id(R,32200)|0))f=2;else{k[D>>2]=0;In(R,D)|0;f=k[D>>2]|0;f=f>>>0<3?f&255:0}else f=1;else f=0;i[T+67>>0]=f;h=f+-1|0;if(!((An(d,f)|0)==0&h>>>0<2))break a;e=Dh(Q,6,30992)|0;g=k[Q+32>>2]|0;if(g>>>0>e>>>0)k[(k[Q+4>>2]|0)+(e*20|0)+4>>2]=N;d=e+1|0;if(g>>>0>d>>>0)k[(k[Q+4>>2]|0)+(d*20|0)+4>>2]=N;d=e+2|0;f=e+4|0;if(g>>>0>d>>>0)k[(k[Q+4>>2]|0)+(d*20|0)+8>>2]=f;if(g>>>0>f>>>0)k[(k[Q+4>>2]|0)+(f*20|0)+4>>2]=h;f=e+5|0;if(g>>>0>f>>>0)k[(k[Q+4>>2]|0)+(f*20|0)+4>>2]=N;D=Q+96|0;k[D>>2]=k[D>>2]|1<>2]|0)+80>>2]|0;Ot(a,30848,D,((D|0)<0)<<31>>31);break a}else{k[D>>2]=0;In(R,D)|0;D=k[D>>2]|0;k[(k[z+(N<<4)+12>>2]|0)+80>>2]=D;uq(k[z+(N<<4)+4>>2]|0,D);break a}case 23:{Ot(a,31016,0,0);break a}case 31:{if(!R){Ot(a,31032,l[T+64>>0]|0,0);break a}e=i[R>>0]|0;if((e+-48&255)>=3)if(!(id(R,31352)|0))e=1;else{e=(id(R,15168)|0)==0;e=e?2:0}else e=(e<<24>>24)+-48|0;f=(k[a>>2]|0)+64|0;if((l[f>>0]|0)==(e|0))break a;if(Pt(a)|0)break a;i[f>>0]=e;break a}case 32:{if(!R){if(!(k[2708]|0))break a;nq(Q,1);if(!(i[(k[Q>>2]|0)+65>>0]|0))ah(k[Q+16>>2]|0,31048,-1,1,0)|0;D=k[2708]|0;Ch(Q,Bh(Q,97,0,1,0)|0,D,0);Bh(Q,35,1,1,0)|0;break a}if((i[R>>0]|0)!=0?(C=k[T>>2]|0,C=(uc[k[C+32>>2]&31](C,R,1,p)|0)!=0,C|(k[p>>2]|0)==0):0){yh(a,31072,D);break a}if((l[T+64>>0]|0)<2)Pt(a)|0;$c(k[2708]|0);if(!(i[R>>0]|0)){k[2708]=0;break a}else{k[D>>2]=R;D=dd(10344,D)|0;k[2708]=D;break a}}case 14:{if(!((R|0)!=0?(D=(In(R,o)|0)==0,f=k[o>>2]|0,!(D|(f|0)<1)):0)){k[o>>2]=2147483647;f=2147483647}e=k[a+408>>2]|0;Fr(a,N);e=((e|0)==0?a:e)+328|0;k[e>>2]=k[e>>2]|1<>2]|0;if(e>>>0>f>>>0)k[(k[Q+4>>2]|0)+(f*20|0)+8>>2]=e;k[(k[Q+24>>2]|0)+88>>2]=e+-1;break a}case 18:{nq(Q,1);if(!(i[(k[Q>>2]|0)+65>>0]|0))ah(k[Q+16>>2]|0,30936,-1,1,0)|0;c:do if(R){d=R;while(1)if(!(i[d>>0]|0))break;else d=d+1|0;f=d-R&1073741823;d=0;while(1){if(!(Kc(R,k[32216+(d<<2)>>2]|0,f)|0))break;d=d+1|0;if((d|0)==6){M=91;break c}}if((d|0)!=-1)g=N;else M=91}else M=91;while(0);if((M|0)==91)if(!(k[y>>2]|0)){k[y>>2]=1;d=-1;g=0}else{d=-1;g=N}f=k[T+20>>2]|0;if((f|0)>0){e=Q+96|0;do{f=f+-1|0;do if(k[(k[O>>2]|0)+(f<<4)+4>>2]|0){if((f|0)!=(g|0)?(k[y>>2]|0)!=0:0)break;k[e>>2]=k[e>>2]|1<0)}Bh(Q,35,1,1,0)|0;break a}case 22:{Fr(a,N);d=(k[P>>2]|0)+1|0;k[P>>2]=d;if((i[S>>0]&-33)<<24>>24==80)Bh(Q,153,N,d,0)|0;else{k[D>>2]=0;if(R){In(R,D)|0;f=k[D>>2]|0;if((f|0)<=-1)f=(f|0)==-2147483648?2147483647:0-f|0}else f=0;Bh(Q,154,N,d,f)|0}Bh(Q,35,d,1,0)|0;nq(Q,1);if(i[(k[Q>>2]|0)+65>>0]|0)break a;ah(k[Q+16>>2]|0,S,-1,1,-1)|0;break a}case 25:{e=k[z+(N<<4)+4>>2]|0;if(R){f=(ni(R,1,0)|0)<<24>>24!=0&1;if((k[y>>2]|0)==0?(v=T+20|0,(k[v>>2]|0)>0):0){d=0;do{xo(k[(k[O>>2]|0)+(d<<4)+4>>2]|0,f)|0;d=d+1|0}while((d|0)<(k[v>>2]|0))}}else f=-1;D=xo(e,f)|0;Ot(a,30880,D,((D|0)<0)<<31>>31);break a}case 24:{e=k[z+(N<<4)+4>>2]|0;if(R){k[D>>2]=0;In(R,D)|0;D=k[D>>2]|0;k[T+72>>2]=D;if((Cg(e,D,-1,0)|0)!=7)break a;i[T+65>>0]=1;break a}if(!e){e=0;f=0}else{f=k[(k[e+4>>2]|0)+32>>2]|0;e=f;f=((f|0)<0)<<31>>31}Ot(a,30864,e,f);break a}case 29:{if(!R){D=(l[z+(N<<4)+8>>0]|0)+-1|0;Ot(a,31104,D,((D|0)<0)<<31>>31);break a}if(!(i[T+63>>0]|0)){yh(a,31120,D);break a}else{D=((ni(R,0,1)|0)&255)+1&255;i[z+(N<<4)+8>>0]=D;Qt(T);break a}}case 30:{if(!R)break a;c=di(T,R,I)|0;if(!c)break a;d=k[c+8>>2]|0;d:do if(!d)d=0;else while(1){if((i[d+51>>0]&3)==2)break d;d=k[d+20>>2]|0;if(!d){d=0;break}}while(0);nq(Q,6);k[P>>2]=6;Fr(a,N);do if((((i[(k[Q>>2]|0)+65>>0]|0)==0?(ah(k[Q+16>>2]|0,31176,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)?(ah((k[Q+16>>2]|0)+40|0,31184,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)?(ah((k[Q+16>>2]|0)+80|0,31192,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0){ah((k[Q+16>>2]|0)+120|0,31200,-1,1,0)|0;if(i[(k[Q>>2]|0)+65>>0]|0)break;ah((k[Q+16>>2]|0)+160|0,31208,-1,1,0)|0;if(i[(k[Q>>2]|0)+65>>0]|0)break;ah((k[Q+16>>2]|0)+200|0,31224,-1,1,0)|0}while(0);mr(a,c)|0;o=c+38|0;f=j[o>>1]|0;if(f<<16>>16<=0)break a;p=(d|0)==0;e=d+4|0;t=0;h=0;b=k[c+4>>2]|0;while(1){n=b+23|0;if(!(i[n>>0]&2)){Bh(Q,25,t-h|0,1,0)|0;g=k[b>>2]|0;Ch(Q,Bh(Q,97,0,2,0)|0,g,0);g=k[b+12>>2]|0;Ch(Q,Bh(Q,97,0,3,0)|0,(g|0)==0?10360:g,0);Bh(Q,25,(i[b+20>>0]|0)!=0&1,4,0)|0;g=k[b+8>>2]|0;if(!g)Bh(Q,28,0,5,0)|0;else Ch(Q,Bh(Q,97,0,5,0)|0,g,0);d=i[n>>0]&1;e:do if(d<<24>>24==0|p)g=(d^1)&255^1;else{g=j[o>>1]|0;if(g<<16>>16<1){g=1;break}f=k[e>>2]|0;n=g<<16>>16;d=1;while(1){g=d+1|0;if((j[f+(d+-1<<1)>>1]|0)==(t|0)){g=d;break e}if((d|0)<(n|0))d=g;else break}}while(0);Bh(Q,25,g,6,0)|0;Bh(Q,35,1,6,0)|0;f=j[o>>1]|0}else h=h+1|0;t=t+1|0;if((t|0)>=(f<<16>>16|0))break;else b=b+24|0}break}case 19:{d=k[k[(k[z+(N<<4)+4>>2]|0)+4>>2]>>2]|0;D=x;k[D>>2]=-2;k[D+4>>2]=-1;if(R){oi(R,x)|0;f=x;e=k[f>>2]|0;f=k[f+4>>2]|0;if((f|0)<-1|(f|0)==-1&e>>>0<4294967295){e=x;k[e>>2]=-1;k[e+4>>2]=-1;e=-1;f=-1}D=d+160|0;k[D>>2]=e;k[D+4>>2]=f;d=k[d+208>>2]|0;if(d){D=d+16|0;k[D>>2]=e;k[D+4>>2]=f}}else{f=d+160|0;e=k[f>>2]|0;f=k[f+4>>2]|0}D=x;k[D>>2]=e;k[D+4>>2]=f;Ot(a,30952,e,f);break a}case 28:{g=Tq(a)|0;nq(g,4);k[P>>2]=4;Fr(a,N);if((((i[(k[g>>2]|0)+65>>0]|0)==0?(ah(k[g+16>>2]|0,31232,-1,1,0)|0,(i[(k[g>>2]|0)+65>>0]|0)==0):0)?(ah((k[g+16>>2]|0)+40|0,20632,-1,1,0)|0,(i[(k[g>>2]|0)+65>>0]|0)==0):0)?(ah((k[g+16>>2]|0)+80|0,31240,-1,1,0)|0,(i[(k[g>>2]|0)+65>>0]|0)==0):0)ah((k[g+16>>2]|0)+120|0,31248,-1,1,0)|0;e=k[(k[z+(N<<4)+12>>2]|0)+16>>2]|0;if(!e)break a;do{f=k[e+8>>2]|0;D=k[f>>2]|0;Ch(g,Bh(g,97,0,1,0)|0,D,0);Bh(g,28,0,2,0)|0;D=$s(j[f+42>>1]|0)|0;Bh(g,25,D,3,0)|0;D=$s(j[f+28>>1]|0)|0;Bh(g,25,D,4,0)|0;Bh(g,35,1,4,0)|0;f=k[f+8>>2]|0;if(f)do{D=k[f>>2]|0;Ch(g,Bh(g,97,0,2,0)|0,D,0);D=$s(j[f+44>>1]|0)|0;Bh(g,25,D,3,0)|0;D=$s(j[k[f+8>>2]>>1]|0)|0;Bh(g,25,D,4,0)|0;Bh(g,35,1,4,0)|0;f=k[f+20>>2]|0}while((f|0)!=0);e=k[e>>2]|0}while((e|0)!=0);break}case 15:{if(!R)break a;n=gq(T,R,I)|0;if(!n)break a;t=(k[30128+(t*12|0)>>2]|0)==0;o=n+46|0;D=t?3:6;h=j[(t?o:n+48|0)>>1]|0;p=h&65535;k[P>>2]=D;g=k[n+12>>2]|0;nq(Q,D);Fr(a,N);if(((i[(k[Q>>2]|0)+65>>0]|0)==0?(ah(k[Q+16>>2]|0,31256,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)?(ah((k[Q+16>>2]|0)+40|0,31176,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)ah((k[Q+16>>2]|0)+80|0,31184,-1,1,0)|0;if(((!t?(i[(k[Q>>2]|0)+65>>0]|0)==0:0)?(ah((k[Q+16>>2]|0)+120|0,31264,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)?(ah((k[Q+16>>2]|0)+160|0,31272,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)ah((k[Q+16>>2]|0)+200|0,31280,-1,1,0)|0;if(!(h<<16>>16))break a;f=n+4|0;e=n+28|0;d=n+32|0;n=g+4|0;g=0;do{D=j[(k[f>>2]|0)+(g<<1)>>1]|0;Bh(Q,25,g,1,0)|0;h=D<<16>>16;Bh(Q,25,h,2,0)|0;if(D<<16>>16<0)Bh(Q,28,0,3,0)|0;else{D=k[(k[n>>2]|0)+(h*24|0)>>2]|0;Ch(Q,Bh(Q,97,0,3,0)|0,D,0)}if(!t){Bh(Q,25,l[(k[e>>2]|0)+g>>0]|0,4,0)|0;D=k[(k[d>>2]|0)+(g<<2)>>2]|0;Ch(Q,Bh(Q,97,0,5,0)|0,D,0);Bh(Q,25,(g|0)<(m[o>>1]|0)&1,6,0)|0}Bh(Q,35,1,k[P>>2]|0,0)|0;g=g+1|0}while((g|0)<(p|0));break}case 5:{if(!R)break a;D=(ni(R,1,0)|0)<<24>>24!=0;C=D?32e3:19240;Vh(T,19248,2,1,C,40,0,0,0)|0;Vh(T,19248,3,1,C,40,0,0,0)|0;Vh(T,19232,2,1,10352,40,0,0,0)|0;Tt(T,19232,12);Tt(T,19248,D?12:4);break a}case 17:{b=i[S>>0]|0;x=(k[c>>2]|0)==0?-1:N;k[P>>2]=6;nq(Q,1);if(!(i[(k[Q>>2]|0)+65>>0]|0))ah(k[Q+16>>2]|0,31464,-1,1,0)|0;k[w>>2]=100;if(R){In(R,w)|0;n=k[w>>2]|0;if((n|0)<1){k[w>>2]=100;n=100}}else n=100;Bh(Q,25,n,1,0)|0;J=T+20|0;t=k[J>>2]|0;if((t|0)>0){I=(x|0)<0;f=Q+32|0;F=Q+4|0;E=Q+24|0;K=(b&-33)<<24>>24==81;L=0;do{if(I|(L|0)==(x|0)){Fr(a,L);t=Bh(Q,137,1,0,0)|0;Bh(Q,24,0,0,0)|0;e=k[f>>2]|0;if(e>>>0>t>>>0)k[(k[F>>2]|0)+(t*20|0)+8>>2]=e;k[(k[E>>2]|0)+88>>2]=e+-1;d=(k[(k[O>>2]|0)+(L<<4)+12>>2]|0)+16|0;t=k[d>>2]|0;if(!t)b=0;else{b=0;do{e=k[t+8>>2]|0;if(!(i[e+44>>0]&32)){Bh(Q,25,k[e+32>>2]|0,b+2|0,0)|0;b=b+1|0}e=k[e+8>>2]|0;if(e)do{Bh(Q,25,k[e+40>>2]|0,b+2|0,0)|0;b=b+1|0;e=k[e+20>>2]|0}while((e|0)!=0);t=k[t>>2]|0}while((t|0)!=0)}z=k[P>>2]|0;t=b+8|0;k[P>>2]=(z|0)>(t|0)?z:t;Bh(Q,127,2,b,1)|0;t=k[F>>2]|0;if(t)i[t+(((k[f>>2]|0)+-1|0)*20|0)+3>>0]=L;b=Bh(Q,76,2,0,0)|0;k[D>>2]=k[(k[O>>2]|0)+(L<<4)>>2];t=zh(T,31480,D)|0;Ch(Q,Bh(Q,97,0,3,0)|0,t,-1);Bh(Q,32,2,4,1)|0;Bh(Q,94,4,3,2)|0;Bh(Q,35,2,1,0)|0;t=k[f>>2]|0;if(t>>>0>b>>>0)k[(k[F>>2]|0)+(b*20|0)+8>>2]=t;k[(k[E>>2]|0)+88>>2]=t+-1;t=k[d>>2]|0;if(!((t|0)==0|K))do{u=k[t+8>>2]|0;G=u+8|0;b=k[G>>2]|0;do if(b){f:do if(!(i[u+44>>0]&32))b=0;else while(1){if((i[b+51>>0]&3)==2)break f;b=k[b+20>>2]|0;if(!b){b=0;break}}while(0);e=Bh(Q,137,1,0,0)|0;Bh(Q,24,0,0,0)|0;d=k[f>>2]|0;if(d>>>0>e>>>0)k[(k[F>>2]|0)+(e*20|0)+8>>2]=d;k[(k[E>>2]|0)+88>>2]=d+-1;ft(a);ut(a,u,54,1,0,A,B)|0;Bh(Q,25,0,7,0)|0;d=k[G>>2]|0;if(!d)e=8;else{e=0;while(1){Bh(Q,25,0,e+8|0,0)|0;d=k[d+20>>2]|0;if(!d)break;else e=e+1|0}e=e+9|0}H=k[P>>2]|0;k[P>>2]=(H|0)>(e|0)?H:e;Bh(Q,108,k[A>>2]|0,0,0)|0;H=Bh(Q,37,7,1,0)|0;p=u+38|0;e=j[p>>1]|0;if(e<<16>>16>0){c=u+36|0;q=u+4|0;o=0;do{do if((o|0)!=(j[c>>1]|0)){if(!(i[(k[q>>2]|0)+(o*24|0)+20>>0]|0))break;st(Q,u,k[A>>2]|0,o,3);e=k[F>>2]|0;if(e)i[e+(((k[f>>2]|0)+-1|0)*20|0)+3>>0]=-128;e=Bh(Q,77,3,0,0)|0;Bh(Q,37,1,-1,0)|0;g=k[(k[q>>2]|0)+(o*24|0)>>2]|0;k[D>>2]=k[u>>2];k[D+4>>2]=g;g=zh(T,31504,D)|0;Ch(Q,Bh(Q,97,0,3,0)|0,g,-1);Bh(Q,35,3,1,0)|0;g=Bh(Q,137,1,0,0)|0;Bh(Q,24,0,0,0)|0;h=k[f>>2]|0;if(h>>>0>e>>>0)k[(k[F>>2]|0)+(e*20|0)+8>>2]=h;e=h+-1|0;d=(k[E>>2]|0)+88|0;k[d>>2]=e;if(h>>>0>g>>>0)k[(k[F>>2]|0)+(g*20|0)+8>>2]=h;k[d>>2]=e;e=j[p>>1]|0}while(0);o=o+1|0}while((o|0)<(e<<16>>16|0))}e=k[G>>2]|0;if(e){w=u+4|0;v=0;h=0;d=-1;while(1){g=Cs(Q)|0;if((b|0)!=(e|0)){d=Ut(a,e,k[A>>2]|0,0,0,C,h,d)|0;Bh(Q,37,v+8|0,1,0)|0;u=m[e+48>>1]|0;g=Bh(Q,69,(k[B>>2]|0)+v|0,g,d)|0;Ch(Q,g,u,-14);Bh(Q,37,1,-1,0)|0;Ch(Q,Bh(Q,97,0,3,0)|0,31528,-2);Bh(Q,94,7,3,3)|0;Ch(Q,Bh(Q,97,0,4,0)|0,31536,-2);Bh(Q,94,4,3,3)|0;u=k[e>>2]|0;q=Bh(Q,97,0,4,0)|0;Ch(Q,q,u,0);Bh(Q,94,4,3,3)|0;Bh(Q,35,3,1,0)|0;u=Bh(Q,137,1,0,0)|0;Bh(Q,24,0,0,0)|0;h=k[f>>2]|0;if(h>>>0>g>>>0)k[(k[F>>2]|0)+(g*20|0)+8>>2]=h;g=k[E>>2]|0;k[g+88>>2]=h+-1;if(i[e+50>>0]|0){c=Cs(Q)|0;p=e+46|0;g=j[p>>1]|0;if(g<<16>>16){o=e+4|0;h=0;do{if(!(i[(k[w>>2]|0)+((j[(k[o>>2]|0)+(h<<1)>>1]|0)*24|0)+20>>0]|0)){Bh(Q,76,h+d|0,c,0)|0;g=j[p>>1]|0}h=h+1|0}while((h|0)<(g&65535|0))}g=Bh(Q,9,(k[B>>2]|0)+v|0,0,0)|0;Bh(Q,16,0,c,0)|0;h=k[f>>2]|0;if(h>>>0>g>>>0)k[(k[F>>2]|0)+(g*20|0)+8>>2]=h;k[(k[E>>2]|0)+88>>2]=h+-1;g=m[p>>1]|0;Ch(Q,Bh(Q,114,(k[B>>2]|0)+v|0,c,d)|0,g,-14);Bh(Q,37,1,-1,0)|0;Ch(Q,Bh(Q,97,0,3,0)|0,31560,-2);Bh(Q,16,0,q,0)|0;g=k[E>>2]|0;o=~c;do if((c|0)<0){h=k[g+112>>2]|0;if(!h)break;k[h+(o<<2)>>2]=k[f>>2]}while(0);h=k[f>>2]|0;k[g+88>>2]=h+-1}if(h>>>0>u>>>0)k[(k[F>>2]|0)+(u*20|0)+8>>2]=h;k[g+88>>2]=h+-1;Vt(a,k[C>>2]|0);h=e}e=k[e+20>>2]|0;if(!e)break;else v=v+1|0}}Bh(Q,9,k[A>>2]|0,H,0)|0;e=H+-1|0;d=k[f>>2]|0;if(d>>>0>e>>>0)k[(k[F>>2]|0)+(e*20|0)+8>>2]=d;k[(k[E>>2]|0)+88>>2]=d+-1;Ch(Q,Bh(Q,97,0,2,0)|0,31592,-2);e=k[G>>2]|0;if(!e)break;else g=0;while(1){if((b|0)!=(e|0)){d=k[f>>2]|0;Bh(Q,137,1,d+2|0,0)|0;Bh(Q,24,0,0,0)|0;Bh(Q,50,(k[B>>2]|0)+g|0,3,0)|0;Bh(Q,79,g+8|0,d+8|0,3)|0;d=k[F>>2]|0;if(d)i[d+(((k[f>>2]|0)+-1|0)*20|0)+3>>0]=-112;Bh(Q,37,1,-1,0)|0;z=k[e>>2]|0;Ch(Q,Bh(Q,97,0,3,0)|0,z,0);Bh(Q,94,3,2,7)|0;Bh(Q,35,7,1,0)|0}e=k[e+20>>2]|0;if(!e)break;else g=g+1|0}}while(0);t=k[t>>2]|0}while((t|0)!=0);t=k[J>>2]|0}L=L+1|0}while((L|0)<(t|0))}else f=Q+32|0;e=Dh(Q,3,31448)|0;f=k[f>>2]|0;if(f>>>0>e>>>0){k[(k[Q+4>>2]|0)+(e*20|0)+12>>2]=0-n;k[(k[Q+4>>2]|0)+(e*20|0)+8>>2]=f}k[(k[Q+24>>2]|0)+88>>2]=f+-1;Ch(Q,e+1|0,31624,-2);break a}case 21:{do if(R){if(id(R,30904)|0)if(!(id(R,30896)|0))d=0;else{M=66;break}else d=1;if(!(k[y>>2]|0)){n=k[T+20>>2]|0;if((n|0)>2){g=k[O>>2]|0;f=d&255;h=2;do{e=k[k[(k[g+(h<<4)+4>>2]|0)+4>>2]>>2]|0;do if(!(i[e+12>>0]|0)){D=k[e+208>>2]|0;if((D|0)!=0?(i[D+43>>0]|0)==2:0)break;i[e+4>>0]=f}while(0);h=h+1|0}while((h|0)<(n|0))}else f=d&255;i[T+66>>0]=f;M=74}else M=74}else M=66;while(0);if((M|0)==66)if(!(k[y>>2]|0))e=T+66|0;else{d=-1;M=74}if((M|0)==74){f=k[k[(k[z+(N<<4)+4>>2]|0)+4>>2]>>2]|0;do if((d|0)>-1?(i[f+12>>0]|0)==0:0){D=k[f+208>>2]|0;if((D|0)!=0?(i[D+43>>0]|0)==2:0)break;i[f+4>>0]=d}while(0);e=f+4|0}e=(i[e>>0]|0)==1?30904:30896;nq(Q,1);if(!(i[(k[Q>>2]|0)+65>>0]|0))ah(k[Q+16>>2]|0,30920,-1,1,0)|0;Ch(Q,Bh(Q,97,0,1,0)|0,e,0);Bh(Q,35,1,1,0)|0;break a}case 9:{nq(Q,3);k[P>>2]=3;if(((i[(k[Q>>2]|0)+65>>0]|0)==0?(ah(k[Q+16>>2]|0,31288,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)?(ah((k[Q+16>>2]|0)+40|0,31184,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)ah((k[Q+16>>2]|0)+80|0,31352,-1,1,0)|0;e=T+20|0;f=k[e>>2]|0;if((f|0)>0)g=0;else break a;do{if(k[(k[O>>2]|0)+(g<<4)+4>>2]|0){Bh(Q,25,g,1,0)|0;d=k[(k[O>>2]|0)+(g<<4)>>2]|0;Ch(Q,Bh(Q,97,0,2,0)|0,d,0);d=k[k[(k[(k[O>>2]|0)+(g<<4)+4>>2]|0)+4>>2]>>2]|0;if(!(i[d+15>>0]|0))d=k[d+168>>2]|0;else d=10360;Ch(Q,Bh(Q,97,0,3,0)|0,d,0);Bh(Q,35,1,3,0)|0;f=k[e>>2]|0}g=g+1|0}while((g|0)<(f|0));break}case 6:{nq(Q,2);k[P>>2]=2;if((i[(k[Q>>2]|0)+65>>0]|0)==0?(ah(k[Q+16>>2]|0,31288,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)ah((k[Q+16>>2]|0)+40|0,31184,-1,1,0)|0;f=k[T+436>>2]|0;if(!f)break a;else e=0;while(1){D=k[f+8>>2]|0;Bh(Q,25,e,1,0)|0;D=k[D>>2]|0;Ch(Q,Bh(Q,97,0,2,0)|0,D,0);Bh(Q,35,1,2,0)|0;f=k[f>>2]|0;if(!f)break;else e=e+1|0}break}case 13:{if(!R)break a;d=di(T,R,I)|0;if(!d)break a;b=Tq(a)|0;g=k[d+16>>2]|0;if(!g)break a;nq(b,8);k[P>>2]=8;Fr(a,N);do if((((i[(k[b>>2]|0)+65>>0]|0)==0?(ah(k[b+16>>2]|0,31360,-1,1,0)|0,(i[(k[b>>2]|0)+65>>0]|0)==0):0)?(ah((k[b+16>>2]|0)+40|0,31288,-1,1,0)|0,(i[(k[b>>2]|0)+65>>0]|0)==0):0)?(ah((k[b+16>>2]|0)+80|0,31232,-1,1,0)|0,(i[(k[b>>2]|0)+65>>0]|0)==0):0){ah((k[b+16>>2]|0)+120|0,31368,-1,1,0)|0;if(i[(k[b>>2]|0)+65>>0]|0)break;ah((k[b+16>>2]|0)+160|0,31376,-1,1,0)|0;if(i[(k[b>>2]|0)+65>>0]|0)break;ah((k[b+16>>2]|0)+200|0,31384,-1,1,0)|0;if(i[(k[b>>2]|0)+65>>0]|0)break;ah((k[b+16>>2]|0)+240|0,31400,-1,1,0)|0;if(i[(k[b>>2]|0)+65>>0]|0)break;ah((k[b+16>>2]|0)+280|0,31416,-1,1,0)|0}while(0);q=d+4|0;t=0;while(1){d=g+20|0;if((k[d>>2]|0)>0){f=g+25|0;e=g+26|0;o=g+8|0;c=0;do{p=k[g+(c<<3)+40>>2]|0;n=l[f>>0]|0;if((n|0)==8)h=32072;else if((n|0)==9)h=32088;else if((n|0)==6)h=32096;else if((n|0)==7)h=32056;else h=32112;n=l[e>>0]|0;if((n|0)==8)n=32072;else if((n|0)==9)n=32088;else if((n|0)==6)n=32096;else if((n|0)==7)n=32056;else n=32112;Bh(b,25,t,1,0)|0;Bh(b,25,c,2,0)|0;D=k[o>>2]|0;Ch(b,Bh(b,97,0,3,0)|0,D,0);D=k[(k[q>>2]|0)+((k[g+(c<<3)+36>>2]|0)*24|0)>>2]|0;Ch(b,Bh(b,97,0,4,0)|0,D,0);Ch(b,Bh(b,(p|0)!=0?97:28,0,5,0)|0,p,0);Ch(b,Bh(b,97,0,6,0)|0,n,0);Ch(b,Bh(b,97,0,7,0)|0,h,0);Ch(b,Bh(b,97,0,8,0)|0,31424,0);Bh(b,35,1,8,0)|0;c=c+1|0}while((c|0)<(k[d>>2]|0))}g=k[g+4>>2]|0;if(!g)break;else t=t+1|0}break}case 12:{b=k[P>>2]|0;E=b+1|0;F=b+5|0;G=b+6|0;k[P>>2]=G;H=Tq(a)|0;nq(H,4);if((((i[(k[H>>2]|0)+65>>0]|0)==0?(ah(k[H+16>>2]|0,31232,-1,1,0)|0,(i[(k[H>>2]|0)+65>>0]|0)==0):0)?(ah((k[H+16>>2]|0)+40|0,20456,-1,1,0)|0,(i[(k[H>>2]|0)+65>>0]|0)==0):0)?(ah((k[H+16>>2]|0)+80|0,31432,-1,1,0)|0,(i[(k[H>>2]|0)+65>>0]|0)==0):0)ah((k[H+16>>2]|0)+120|0,31440,-1,1,0)|0;Fr(a,N);t=k[(k[(k[O>>2]|0)+(N<<4)+12>>2]|0)+16>>2]|0;if(!t)break a;p=(R|0)==0;c=a+68|0;q=H+32|0;A=H+4|0;B=H+24|0;C=b+2|0;D=b+3|0;x=b+4|0;o=a+8|0;while(1){if(p){y=k[t>>2]|0;z=k[t+8>>2]|0}else{y=0;z=xh(a,0,R,I)|0}if((z|0)!=0?(J=z+16|0,(k[J>>2]|0)!=0):0){ls(a,N,k[z+32>>2]|0,0,k[z>>2]|0);b=(j[z+38>>1]|0)+G|0;if((b|0)>(k[P>>2]|0))k[P>>2]=b;Vq(a,0,N,z,54);t=k[z>>2]|0;Ch(H,Bh(H,97,0,E,0)|0,t,0);t=k[J>>2]|0;if(!t)b=1;else{b=1;do{e=di(T,k[t+8>>2]|0,I)|0;do if(e){k[L>>2]=0;ls(a,N,k[e+32>>2]|0,0,k[e>>2]|0);if(Rt(a,e,t,L,0)|0)break a;f=k[L>>2]|0;if(!f){Vq(a,b,N,e,54);break}else{Bh(H,54,b,k[f+40>>2]|0,N)|0;w=k[o>>2]|0;Ch(w,-1,ms(a,f)|0,-6);break}}while(0);b=b+1|0;t=k[t+4>>2]|0}while((t|0)!=0)}if((k[c>>2]|0)<(b|0))k[c>>2]=b;n=Bh(H,108,0,0,0)|0;b=k[J>>2]|0;if(b){w=z+36|0;v=1;while(1){u=b+8|0;t=di(T,k[u>>2]|0,I)|0;k[L>>2]=0;k[K>>2]=0;h=(t|0)!=0;do if(h){Rt(a,t,b,L,K)|0;e=k[L>>2]|0;f=Cs(H)|0;if(!(h&(e|0)==0)){t=f;M=306;break}t=k[b+36>>2]|0;if((t|0)==(j[w>>1]|0))Bh(H,103,0,G,0)|0;else{Bh(H,47,0,t,G)|0;St(H,z,t,G);Bh(H,76,G,f,0)|0;Bh(H,38,G,(k[q>>2]|0)+3|0,0)|0}Bh(H,70,v,0,G)|0;Bh(H,16,0,f,0)|0;t=k[q>>2]|0;if(t>>>0>1)k[(k[A>>2]|0)+((t+-2|0)*20|0)+8>>2]=t;k[(k[B>>2]|0)+88>>2]=t+-1;t=f}else{t=Cs(H)|0;e=0;M=306}while(0);do if((M|0)==306){M=0;g=b+20|0;f=k[g>>2]|0;if((f|0)>0){d=0;do{f=k[K>>2]|0;if(!f)f=b+(d<<3)+36|0;else f=f+(d<<2)|0;O=d+G|0;st(H,z,0,k[f>>2]|0,O);Bh(H,76,O,t,0)|0;d=d+1|0;f=k[g>>2]|0}while((d|0)<(f|0))}if(!h)break;d=tt(H,e)|0;e=k[g>>2]|0;Ch(H,Bh(H,49,G,f,F)|0,d,e);Ch(H,Bh(H,69,v,t,F)|0,0,-14)}while(0);Bh(H,103,0,C,0)|0;e=k[u>>2]|0;Ch(H,Bh(H,97,0,D,0)|0,e,0);Bh(H,25,v+-1|0,x,0)|0;Bh(H,35,E,4,0)|0;e=k[B>>2]|0;f=~t;do if((t|0)<0){t=k[e+112>>2]|0;if(!t)break;k[t+(f<<2)>>2]=k[q>>2]}while(0);k[e+88>>2]=(k[q>>2]|0)+-1;rg(T,k[K>>2]|0);b=k[b+4>>2]|0;if(!b)break;else v=v+1|0}}Bh(H,9,0,n+1|0,0)|0;b=k[q>>2]|0;if(b>>>0>n>>>0)k[(k[A>>2]|0)+(n*20|0)+8>>2]=b;k[(k[B>>2]|0)+88>>2]=b+-1}if(!y)break;else t=y}break}case 11:{if(!R){if(Ln(a)|0)break a;nq(Q,1);if(!(i[(k[Q>>2]|0)+65>>0]|0))ah(k[Q+16>>2]|0,31784,-1,1,0)|0;Bh(Q,97,0,1,0)|0;Ch(Q,-1,k[31632+(l[(k[a>>2]|0)+62>>0]<<3)>>2]|0,-2);Bh(Q,35,1,1,0)|0;break a}d=k[(k[O>>2]|0)+12>>2]|0;if((j[d+78>>1]&5)==1)break a;else{f=31632;e=31704}do{if(!(id(R,e)|0)){q=f;M=415;break}f=f+8|0;e=k[f>>2]|0}while((e|0)!=0);if((M|0)==415?(C=i[q+4>>0]|0,C=C<<24>>24==0?2:C,i[T+62>>0]=C,i[d+77>>0]=C,(k[q>>2]|0)!=0):0)break a;k[D>>2]=R;yh(a,31800,D);break a}case 0:{n=k[30128+(t*12|0)>>2]|0;C=Q+96|0;k[C>>2]=k[C>>2]|1<>2]|0)>>>0>f>>>0)k[(k[Q+4>>2]|0)+(f*20|0)+4>>2]=N;e=f+1|0;k[D>>2]=0;In(R,D)|0;d=k[d>>2]|0;if(d>>>0>e>>>0)k[(k[Q+4>>2]|0)+(e*20|0)+4>>2]=k[D>>2];f=f+2|0;if(d>>>0<=f>>>0)break a;k[(k[Q+4>>2]|0)+(f*20|0)+4>>2]=N;k[(k[Q+4>>2]|0)+(f*20|0)+8>>2]=n;break a}f=Dh(Q,3,31848)|0;d=k[Q+32>>2]|0;if(d>>>0>f>>>0)k[(k[Q+4>>2]|0)+(f*20|0)+4>>2]=N;f=f+1|0;if(d>>>0>f>>>0){k[(k[Q+4>>2]|0)+(f*20|0)+4>>2]=N;k[(k[Q+4>>2]|0)+(f*20|0)+12>>2]=n}nq(Q,1);if(i[(k[Q>>2]|0)+65>>0]|0)break a;ah(k[Q+16>>2]|0,S,-1,1,-1)|0;break a}case 7:{nq(Q,1);k[P>>2]=1;if(!(i[(k[Q>>2]|0)+65>>0]|0)){ah(k[Q+16>>2]|0,31864,-1,1,0)|0;e=0}else e=0;do{D=k[8648+(e<<2)>>2]|0;e=e+1|0;Ch(Q,Bh(Q,97,0,1,0)|0,D,0);Bh(Q,35,1,1,0)|0}while((e|0)!=4);break}case 35:{f=(k[c>>2]|0)!=0?N:10;if(R)if(id(R,31880)|0)if(!(id(R,31888)|0))e=2;else{e=(id(R,31896)|0)==0;e=e?3:0}else e=1;else e=0;nq(Q,3);k[P>>2]=3;if(((i[(k[Q>>2]|0)+65>>0]|0)==0?(ah(k[Q+16>>2]|0,31912,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)?(ah((k[Q+16>>2]|0)+40|0,31920,-1,1,0)|0,(i[(k[Q>>2]|0)+65>>0]|0)==0):0)ah((k[Q+16>>2]|0)+80|0,31928,-1,1,0)|0;Bh(Q,11,f,e,1)|0;Bh(Q,35,1,3,0)|0;break a}case 26:{tf(T)|0;break a}case 34:{if(!R)e=k[T+216>>2]|0;else{k[D>>2]=0;In(R,D)|0;e=k[D>>2]|0;if((e|0)>0)f=21;else{e=0;f=0}k[T+216>>2]=f;k[T+220>>2]=e;e=f}if((e|0)==21){e=k[T+220>>2]|0;f=e;e=((e|0)<0)<<31>>31}else{f=0;e=0}Ot(a,31944,f,e);break a}case 27:{if((R|0)!=0?(oi(R,u)|0)==0:0){D=u;Uc(k[D>>2]|0,k[D+4>>2]|0)|0}C=(Qc()|0)==0;D=9032;Ot(a,31976,C?k[D>>2]|0:-1,C?k[D+4>>2]|0:-1);break a}case 33:{if((R|0)!=0?(B=(oi(R,n)|0)==0,D=n,C=k[D+4>>2]|0,B&((C|0)>-1|(C|0)==-1&(k[D>>2]|0)>>>0>4294967295)):0)k[T+132>>2]=0;D=k[T+132>>2]|0;Ot(a,31992,D,((D|0)<0)<<31>>31);break a}case 16:{if(!R)break a;d=di(T,R,I)|0;if(!d)break a;g=Tq(a)|0;nq(g,5);k[P>>2]=5;Fr(a,N);if(((((i[(k[g>>2]|0)+65>>0]|0)==0?(ah(k[g+16>>2]|0,31288,-1,1,0)|0,(i[(k[g>>2]|0)+65>>0]|0)==0):0)?(ah((k[g+16>>2]|0)+40|0,31184,-1,1,0)|0,(i[(k[g>>2]|0)+65>>0]|0)==0):0)?(ah((k[g+16>>2]|0)+80|0,31296,-1,1,0)|0,(i[(k[g>>2]|0)+65>>0]|0)==0):0)?(ah((k[g+16>>2]|0)+120|0,31304,-1,1,0)|0,(i[(k[g>>2]|0)+65>>0]|0)==0):0)ah((k[g+16>>2]|0)+160|0,31312,-1,1,0)|0;f=k[d+8>>2]|0;if(!f)break a;else e=0;while(1){Bh(g,25,e,1,0)|0;D=k[f>>2]|0;Ch(g,Bh(g,97,0,2,0)|0,D,0);Bh(g,25,(i[f+50>>0]|0)!=0&1,3,0)|0;D=k[31336+((i[f+51>>0]&3)<<2)>>2]|0;Ch(g,Bh(g,97,0,4,0)|0,D,0);Bh(g,25,(k[f+36>>2]|0)!=0&1,5,0)|0;Bh(g,35,1,5,0)|0;f=k[f+20>>2]|0;if(!f)break;else e=e+1|0}break}case 10:{g=1<>2]=k[C>>2]|g;if(R){k[D>>2]=0;In(R,D)|0;d=k[D>>2]|0;if((d|0)<=-1)d=(d|0)==-2147483648?2147483647:0-d|0;D=k[a+408>>2]|0;Fr(a,N);D=((D|0)==0?a:D)+328|0;k[D>>2]=k[D>>2]|g;Bh(Q,25,d,1,0)|0;Bh(Q,52,N,3,1)|0;k[(k[z+(N<<4)+12>>2]|0)+80>>2]=d;uq(k[z+(N<<4)+4>>2]|0,d);break a}nq(Q,1);if(!(i[(k[Q>>2]|0)+65>>0]|0))ah(k[Q+16>>2]|0,30848,-1,1,0)|0;k[P>>2]=(k[P>>2]|0)+2;d=Dh(Q,9,30808)|0;e=k[Q+32>>2]|0;if(e>>>0>d>>>0)k[(k[Q+4>>2]|0)+(d*20|0)+4>>2]=N;f=d+1|0;if(e>>>0>f>>>0)k[(k[Q+4>>2]|0)+(f*20|0)+4>>2]=N;f=d+6|0;if(e>>>0<=f>>>0)break a;k[(k[Q+4>>2]|0)+(f*20|0)+4>>2]=2e3;break a}case 2:{if(!R){Ot(a,b,(k[30128+(t*12|0)>>2]&k[T+24>>2]|0)!=0&1,0);break a}e=k[30128+(t*12|0)>>2]|0;e=(i[T+63>>0]|0)==0?e&-524289:e;if(!((ni(R,1,0)|0)<<24>>24)){D=T+24|0;k[D>>2]=k[D>>2]&~e;if((e|0)==16777216){D=T+512|0;k[D>>2]=0;k[D+4>>2]=0}}else{D=T+24|0;k[D>>2]=k[D>>2]|e}Bh(Q,144,0,0,0)|0;Qt(T);break a}default:{if(!R)e=k[T+492>>2]|0;else{k[D>>2]=0;In(R,D)|0;e=k[D>>2]|0;D=(e|0)>0;e=D?e:0;k[T+444>>2]=D?74:0;k[T+448>>2]=D?T:0;k[h>>2]=0;k[T+492>>2]=e}Ot(a,31968,e,((e|0)<0)<<31>>31);break a}}while(0)}else if(!b){d=k[g>>2]|0;if(!d)break;f=(k[P>>2]|0)+1|0;k[P>>2]=f;Ch(Q,Bh(Q,97,0,f,0)|0,d,0);nq(Q,1);if(!(i[(k[Q>>2]|0)+65>>0]|0))ah(k[Q+16>>2]|0,30112,-1,1,0)|0;Bh(Q,35,f,1,0)|0;$c(k[g>>2]|0);break}else{d=k[g>>2]|0;if(d){k[D>>2]=d;yh(a,10344,D);$c(k[g>>2]|0)}D=a+64|0;k[D>>2]=(k[D>>2]|0)+1;k[a+12>>2]=b;break}}while(0);rg(T,S);rg(T,R)}}while(0);r=U;return}function Lr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=r;r=r+16|0;if((r|0)>=(s|0))ka();e=f;a:do if(!b)b=0;else{d=b;while(1){if((i[d>>0]|0)==-121){b=k[a>>2]|0;if(!(i[(k[b>>2]|0)+145>>0]|0))break;i[d>>0]=101}b=k[d+4>>2]|0;if(b&16384){b=0;break a}c=d+20|0;if(!(b&2048)){if(Mr(a,k[c>>2]|0)|0){b=1;break a}}else if(kr(a,k[c>>2]|0)|0){b=1;break a}if(Lr(a,k[d+16>>2]|0)|0){b=1;break a}d=k[d+12>>2]|0;if(!d){b=0;break a}}k[e>>2]=k[a+16>>2];yh(b,29984,e);b=1}while(0);r=f;return b|0}function Mr(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if((b|0)!=0?(k[b>>2]|0)>0:0){c=0;d=k[b+4>>2]|0;while(1){if(Lr(a,k[d>>2]|0)|0){c=1;break a}c=c+1|0;if((c|0)>=(k[b>>2]|0)){c=0;break}else d=d+20|0}}else c=0;while(0);return c|0}function Nr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;Ch(a,Bh(a,122,b,0,0)|0,c,-1);c=k[(k[a>>2]|0)+20>>2]|0;if((c|0)>0){d=a+96|0;b=k[d>>2]|0;a=0;do{b=b|1<>2]=b}return}function Or(a,b){a=a|0;b=b|0;var c=0,d=0;c=b+8|0;d=Zr(a,0,c)|0;b=b+24|0;pg(k[a>>2]|0,k[b>>2]|0);k[b>>2]=d;if(d){b=d+40|0;j[b>>1]=(j[b>>1]|0)+1<<16>>16}c=(Wt(a,c)|0)==0;return (c?d:0)|0}function Pr(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;if((r|0)>=(s|0))ka();j=l;a:do if((b|0)!=0?(e=k[a+12>>2]|0,(k[b>>2]|0)>0):0){f=a+8|0;g=a+4|0;h=0;i=b+8|0;while(1){if(!(k[f>>2]|0)){d=i+4|0;c=k[d>>2]|0;if((c|0)!=0?(id(c,e)|0)!=0:0)break;rg(k[k[a>>2]>>2]|0,c);k[d>>2]=0;k[i>>2]=k[g>>2]}if(kr(a,k[i+20>>2]|0)|0){c=1;break a}if(Lr(a,k[i+44>>2]|0)|0){c=1;break a}h=h+1|0;if((h|0)>=(k[b>>2]|0)){c=0;break a}else i=i+72|0}b=k[a>>2]|0;i=k[a+20>>2]|0;k[j>>2]=k[a+16>>2];k[j+4>>2]=i;k[j+8>>2]=c;yh(b,29936,j);c=1}else c=0;while(0);r=l;return c|0}function Qr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=r;r=r+16|0;if((r|0)>=(s|0))ka();c=d;e=k[a>>2]|0;if((((i[e+145>>0]|0)==0?(i[a+18>>0]|0)==0:0)?(k[e+24>>2]&2048|0)==0:0)?(Kc(b,25568,7)|0)==0:0){k[c>>2]=b;yh(a,28440,c);a=1}else a=0;r=d;return a|0}function Rr(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,p=0,q=0,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();u=v;do if(b){p=c&1;t=(d|0)!=0;if(t){e=k[d>>2]|0;n=32768}else{e=Xt(b,c)|0;e=rh(a,e,((e|0)<0)<<31>>31)|0;n=0}k[u>>2]=e;if(e){h=(p|0)==0;if(!h)if(!(k[b+12>>2]|0))m=(k[b+20>>2]|0)==0?16396:8220;else m=8220;else m=48;o=m&60;q=b+4|0;j=k[q>>2]|0;if((j&1024|0)==0?(f=k[b+8>>2]|0,(f|0)!=0):0){g=f;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;l=(g-f&1073741823)+1|0}else l=0;if(h){if(!(j&16384))g=(j&8192|0)==0?48:28;else g=12;pw(e|0,b|0,g|0)|0;kw(e+g|0,0,48-g|0)|0}else pw(e|0,b|0,o|0)|0;j=e+4|0;f=m&24576|n|k[j>>2]&-122881;k[j>>2]=f;if(l){f=e+o|0;k[e+8>>2]=f;pw(f|0,k[b+8>>2]|0,l|0)|0;f=k[j>>2]|0}g=k[q>>2]|0;do if(!((f|g)&16384)){f=b+20|0;if(!(g&2048)){p=Ur(a,k[f>>2]|0,p)|0;k[e+20>>2]=p;break}else{p=lr(a,k[f>>2]|0,p)|0;k[e+20>>2]=p;break}}while(0);f=k[j>>2]|0;if(!(f&24576)){if(k[q>>2]&16384)break;p=Rr(a,k[b+12>>2]|0,0,0)|0;k[e+12>>2]=p;p=Rr(a,k[b+16>>2]|0,0,0)|0;k[e+16>>2]=p;break}p=Yt(b,c)|0;k[u>>2]=(k[u>>2]|0)+p;if(f&8192){p=Rr(a,k[b+12>>2]|0,1,u)|0;k[e+12>>2]=p;p=Rr(a,k[b+16>>2]|0,1,u)|0;k[e+16>>2]=p}if(t)k[d>>2]=k[u>>2]}}else e=0;while(0);r=v;return e|0}function Sr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;a:do if((b|0)!=0?(c=rh(a,8,0)|0,(c|0)!=0):0){f=b+4|0;k[c+4>>2]=k[f>>2];d=rh(a,k[f>>2]<<3,0)|0;k[c>>2]=d;if(!d){rg(a,c);c=0;break}if((k[f>>2]|0)>0){e=0;while(1){g=k[b>>2]|0;h=ph(a,k[g+(e<<3)>>2]|0)|0;k[d+(e<<3)>>2]=h;k[d+(e<<3)+4>>2]=k[g+(e<<3)+4>>2];e=e+1|0;if((e|0)>=(k[f>>2]|0))break a;d=k[c>>2]|0}}}else c=0;while(0);return c|0}function Tr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=c+4|0;e=(k[d>>2]|0)+40|0;a=rh(a,e,0)|0;if(a){kw(a|0,0,e|0)|0;e=a+40|0;pw(e|0,k[c>>2]|0,k[d>>2]|0)|0;k[a+12>>2]=e;k[a+16>>2]=k[d>>2];i[a>>0]=b}return a|0}function Ur(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|0)!=0?(d=rh(a,8,0)|0,(d|0)!=0):0){e=k[b>>2]|0;k[d>>2]=e;if(!(c&1)){f=k[b>>2]|0;e=1;while(1)if((e|0)<(f|0))e=e<<1;else break}e=rh(a,e*20|0,0)|0;k[d+4>>2]=e;if(!e){rg(a,d);d=0;break}if((k[b>>2]|0)>0){g=0;f=k[b+4>>2]|0;while(1){h=Rr(a,k[f>>2]|0,c,0)|0;k[e>>2]=h;h=ph(a,k[f+4>>2]|0)|0;k[e+4>>2]=h;h=ph(a,k[f+8>>2]|0)|0;k[e+8>>2]=h;i[e+12>>0]=i[f+12>>0]|0;h=e+13|0;j=i[h>>0]|0;i[h>>0]=j&-2;i[h>>0]=i[f+13>>0]&2|j&-4;k[e+16>>2]=k[f+16>>2];g=g+1|0;if((g|0)>=(k[b>>2]|0))break;else{e=e+20|0;f=f+20|0}}}}else d=0;while(0);return d|0}function Vr(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;m=r;r=r+16|0;if((r|0)>=(s|0))ka();h=m;i=k[a>>2]|0;e=k[b+20>>2]|0;a:do if(e){d=k[i+20>>2]|0;if((d|0)>0){c=k[i+16>>2]|0;g=0;while(1){f=g+1|0;if((k[c+(g<<4)+12>>2]|0)==(e|0)){f=g;break a}if((f|0)<(d|0))g=f;else break}}else f=0}else f=-1e6;while(0);c=gn((k[b+24>>2]|0)+8|0,k[b+4>>2]|0,h)|0;if(!c)e=0;else e=k[c+8>>2]|0;c=k[(k[i+16>>2]|0)+(f<<4)>>2]|0;d=(f|0)==1;if((((Xq(a,d?14:16,k[b>>2]|0,k[e>>2]|0,c)|0)==0?(Xq(a,9,d?13184:13208,0,c)|0)==0:0)?(j=Tq(a)|0,(j|0)!=0):0)?(l=k[a+408>>2]|0,Fr(a,f),l=((l|0)==0?a:l)+328|0,k[l>>2]=k[l>>2]|1<>2]|0,0),Ch(j,l+4|0,10720,-2),Ir(a,f),Bh(j,61,0,0,0)|0,l=k[b>>2]|0,Ch(j,Bh(j,126,f,0,0)|0,l,0),l=a+72|0,(k[l>>2]|0)<3):0)k[l>>2]=3;r=m;return}function Wr(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;var h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+32|0;if((r|0)>=(s|0))ka();h=q;o=k[a>>2]|0;k[h+0>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;k[h+24>>2]=0;k[h+28>>2]=0;k[h>>2]=a;do if(e)if((i[e>>0]|0)!=27)if(!(qs(h,e)|0)){p=5;break}else{p=13;break}else{i[e>>0]=97;p=5;break}else p=5;while(0);a:do if((p|0)==5){do if(f)if((i[f>>0]|0)!=27)if(!(qs(h,f)|0))break;else{p=13;break a}else{i[f>>0]=97;break}while(0);do if(g)if((i[g>>0]|0)!=27)if(!(qs(h,g)|0))break;else{p=13;break a}else{i[g>>0]=97;break}while(0);if(d){if((i[d>>0]|0)==97)d=k[d+8>>2]|0;else d=0;if(Xq(a,b,d,0,0)|0)break}n=Tq(a)|0;h=a+60|0;d=k[h>>2]|0;l=a+56|0;m=k[l>>2]|0;if((m|0)<4){m=a+72|0;d=k[m>>2]|0;k[m>>2]=d+4;d=d+1|0}else{k[h>>2]=d+4;k[l>>2]=m+-4}Wq(a,e,d);Wq(a,f,d+1|0);Wq(a,g,d+2|0);if(n){d=d+3|0;Bh(n,1,0,d-(j[c>>1]|0)|0,d)|0;d=k[n+4>>2]|0;if(d)i[d+(((k[n+32>>2]|0)+-1|0)*20|0)+3>>0]=j[c>>1];Ch(n,-1,c,-5);Bh(n,144,(b|0)==24&1,0,0)|0}}while(0);if((p|0)==13){c=a+64|0;k[c>>2]=(k[c>>2]|0)+1}Lk(o,e);Lk(o,f);Lk(o,g);r=q;return}function Xr(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+16|0;if((r|0)>=(s|0))ka();h=j;e=j+4|0;f=k[a>>2]|0;a:do if(!(Ln(a)|0)){if(!b){Zt(a,0);break}if(!((c|0)!=0?(k[c>>2]|0)!=0:0))d=6;do if((d|0)==6){d=$q(k[a>>2]|0,b)|0;if(!d)break a;if(!(bo(f,i[f+62>>0]|0,d,0)|0)){rg(f,d);break}else{Zt(a,d);rg(f,d);break a}}while(0);b=jr(a,b,c,e)|0;if((b|0)>=0?(g=$q(f,k[e>>2]|0)|0,(g|0)!=0):0){c=k[(k[f+16>>2]|0)+(b<<4)>>2]|0;d=di(f,g,c)|0;if(d){_t(a,d,0);rg(f,g);break}c=gq(f,g,c)|0;rg(f,g);if(!c){yh(a,28872,h);break}else{d=k[a+408>>2]|0;Fr(a,b);d=((d|0)==0?a:d)+328|0;k[d>>2]=k[d>>2]|1<=(s|0))ka();e=g;f=k[a>>2]|0;if(!(Ln(a)|0)){do if(!b){b=f+20|0;d=k[b>>2]|0;if((d|0)>0){c=0;do{if((c|0)!=1){$t(a,c);d=k[b>>2]|0}c=c+1|0}while((c|0)<(d|0))}}else{if(k[c+4>>2]|0){d=jr(a,b,c,e)|0;if((d|0)<=-1)break;d=k[(k[f+16>>2]|0)+(d<<4)>>2]|0;b=$q(f,k[e>>2]|0)|0;if(!b)break;c=gq(f,b,d)|0;if(!c){d=xh(a,0,b,d)|0;if(d)au(a,d,0)}else au(a,k[c+12>>2]|0,c);rg(f,b);break}c=$q(f,b)|0;d=_h(f,c)|0;rg(f,c);if((d|0)>-1){$t(a,d);break}c=$q(f,b)|0;if(c){d=gq(f,c,0)|0;if(!d){d=xh(a,0,c,0)|0;if(d)au(a,d,0)}else au(a,k[d+12>>2]|0,d);rg(f,c)}}while(0);d=Tq(a)|0;if(d)Bh(d,144,0,0,0)|0}r=g;return}function Zr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=k[c>>2]|0;if(!e)d=c+4|0;else{h=k[a>>2]|0;f=k[h+20>>2]|0;h=k[h+16>>2]|0;a:do if((f|0)>0){g=0;while(1){d=g+1|0;if((k[h+(g<<4)+12>>2]|0)==(e|0)){d=g;break a}if((d|0)<(f|0))g=d;else break}}else d=0;while(0);d=h+(d<<4)|0}return xh(a,b,k[c+8>>2]|0,k[d>>2]|0)|0}function _r(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;if(b){c=b;while(1)if(!(i[c>>0]|0))break;else c=c+1|0;if((c-b&1073741823)>>>0>6?(Kc(b,25568,7)|0)==0:0){k[d>>2]=b;yh(a,25576,d);c=1}else c=0}else c=0;r=e;return c|0}function $r(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;if((r|0)>=(s|0))ka();d=e;if(!b){k[d>>2]=c;a=zh(a,25992,d)|0}else{k[d>>2]=b;k[d+4>>2]=c;d=zh(a,26e3,d)|0;rg(a,b);a=d}r=e;return a|0}function as(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=r;r=r+16|0;if((r|0)>=(s|0))ka();f=g;d=k[a>>2]|0;e=k[(k[d+16>>2]|0)+28>>2]|0;if((k[b+68>>2]|0)!=(e|0)?(c=Fs(a,b)|0,(c|0)!=0):0){b=c;c=0;do{if((k[b+20>>2]|0)==(e|0))c=$r(d,c,k[b>>2]|0)|0;b=k[b+32>>2]|0}while((b|0)!=0);if(c){b=k[a>>2]|0;k[f>>2]=c;b=zh(b,25968,f)|0;rg(k[a>>2]|0,c);c=b}else c=0}else c=0;r=g;return c|0}function bs(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;o=r;r=r+16|0;if((r|0)>=(s|0))ka();l=o;m=Tq(a)|0;if(m){d=k[a>>2]|0;g=k[b+68>>2]|0;a:do if(g){h=k[d+20>>2]|0;if((h|0)>0){e=k[d+16>>2]|0;f=0;while(1){d=f+1|0;if((k[e+(f<<4)+12>>2]|0)==(g|0))break a;if((d|0)<(h|0))f=d;else{f=d;break}}}else f=0}else f=-1e6;while(0);d=Fs(a,b)|0;if(d)do{e=k[a>>2]|0;i=k[d+20>>2]|0;b:do if(i){j=k[e+20>>2]|0;if((j|0)>0){h=k[e+16>>2]|0;g=0;while(1){e=g+1|0;if((k[h+(g<<4)+12>>2]|0)==(i|0)){e=g;break b}if((e|0)<(j|0))g=e;else break}}else e=0}else e=-1e6;while(0);j=k[d>>2]|0;Ch(m,Bh(m,126,e,0,0)|0,j,0);d=k[d+32>>2]|0}while((d|0)!=0);d=k[b>>2]|0;Ch(m,Bh(m,124,f,0,0)|0,d,0);d=k[a>>2]|0;k[l>>2]=c;d=zh(d,25952,l)|0;if((d|0)!=0?(Nr(m,f,d),n=as(a,b)|0,(n|0)!=0):0)Nr(m,1,n)}r=o;return} -function lh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,q=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ja=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,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,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,pc=0,sc=0,tc=0,vc=0,xc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,jd=0,kd=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0;ke=r;r=r+1040|0;if((r|0)>=(s|0))ka();ge=ke+400|0;Qc=ke+792|0;ad=ke+392|0;Yc=ke+788|0;Pd=ke+320|0;ed=ke+784|0;kd=ke+780|0;nd=ke+280|0;Kd=ke+680|0;Xc=ke+240|0;Nd=ke+200|0;Wc=ke+676|0;Tc=ke+672|0;Ld=ke+160|0;Rc=ke+644|0;qd=ke+152|0;Gd=ke+112|0;cd=ke+640|0;Id=ke+636|0;Uc=ke+632|0;rd=ke+628|0;xd=ke+624|0;td=ke+604|0;yd=ke+600|0;jd=ke+596|0;ud=ke+576|0;Pc=ke+840|0;zd=ke+572|0;Md=ke+104|0;Ad=ke+568|0;Zc=ke+564|0;_c=ke+96|0;Od=ke+88|0;Bd=ke+560|0;Cd=ke+556|0;Dd=ke+552|0;vd=ke+532|0;wd=ke+512|0;bd=ke+508|0;sd=ke+504|0;Vc=ke+488|0;Jd=ke+48|0;Sc=ke+456|0;Oc=ke+444|0;Hd=ke+8|0;pd=ke+440|0;Fd=ke+412|0;Ed=ke;tc=a+4|0;f=k[tc>>2]|0;he=k[a>>2]|0;Gc=i[he+62>>0]|0;Kc=a+8|0;v=k[Kc>>2]|0;je=he+32|0;c=je;d=k[c>>2]|0;c=k[c+4>>2]|0;ie=a+80|0;a:do if((k[ie>>2]|0)==7){u=he+65|0;v=a+44|0;e=d;b=0;g=0;d=0;ee=1317}else{k[ie>>2]=0;$d=a+136|0;k[$d>>2]=0;k[$d+4>>2]=0;$d=a+20|0;k[$d>>2]=0;k[he+452>>2]=0;zc=he+240|0;b:do if(!(k[zc>>2]|0)){Zd=he+292|0;if(k[Zd>>2]|0){e=k[a+124>>2]|0;b=he+300|0;u=k[b>>2]|0;if(!e)sc=b;else{sc=b;u=(e>>>0)%(u>>>0)|0}}else{sc=he+300|0;u=0}de=a+76|0;ce=he+65|0;Vd=he+296|0;pb=a+176|0;qb=a+184|0;rb=a+92|0;sb=he+80|0;tb=he+84|0;ub=Gc&255;vb=Gc<<24>>24==1;wb=he+88|0;xb=a+60|0;Wd=a+144|0;be=a+86|0;fe=a+44|0;yb=a+12|0;zb=Rc+4|0;Ab=Rc+16|0;Bb=Rc+12|0;Cb=Rc+25|0;Db=Rc+20|0;Eb=a+200|0;Fb=a+56|0;Xd=a+72|0;Gb=Gd+16|0;Hb=Gd+8|0;Ib=Gd+24|0;Jb=a+87|0;Yd=he+156|0;Kb=he+500|0;Lb=he+496|0;ae=he+63|0;Mb=he+488|0;Nb=he+504|0;Ob=he+512|0;Pb=he+70|0;Qb=he+24|0;Rb=he+20|0;Td=he+16|0;Sb=he+4|0;Ud=a+88|0;Tb=a+104|0;Ub=a+152|0;Vb=a+160|0;Wb=he+152|0;Xb=he+64|0;Yb=td+4|0;Zb=td+6|0;_b=td+8|0;$b=ud+4|0;ac=ud+8|0;bc=he+212|0;cc=he+208|0;dc=a+116|0;ec=vd+4|0;hc=vd+6|0;ic=vd+8|0;jc=Xc+8|0;kc=Xc+32|0;lc=Xc+24|0;mc=Xc+16|0;nc=Xc+12|0;pc=wd+4|0;T=wd+6|0;U=wd+8|0;X=nd+8|0;Y=nd+32|0;Z=nd+24|0;_=nd+12|0;$=nd+16|0;aa=he+164|0;ba=Vc+8|0;ca=Vc+4|0;da=he+145|0;ea=Vc+12|0;fa=Pd+4|0;ja=Pd+12|0;la=Pd+16|0;ma=Pd+20|0;na=Pd+24|0;oa=Pd+28|0;pa=Pd+8|0;qa=Pd+40|0;ra=Pd+44|0;sa=Pd+48|0;ta=Pd+52|0;ua=Pd+56|0;va=Pd+60|0;wa=Pd+64|0;xa=Pd+65|0;ya=he+128|0;za=a+28|0;Aa=a+36|0;Ba=a+32|0;Ca=a+196|0;Da=Sc+4|0;Ea=Sc+8|0;Fa=Jd+8|0;Ga=Jd+32|0;Ha=Jd+24|0;Ia=Sc+20|0;Ja=Sc+12|0;Ka=Sc+16|0;La=Sc+24|0;Ma=Oc+8|0;Na=Oc+4|0;Oa=he+148|0;Pa=he+176|0;Qa=he+72|0;Ra=he+67|0;Sa=Qc+20|0;Ta=Qc+24|0;Ua=Qc+4|0;Va=Qc+16|0;Wa=he+304|0;Xa=he+328|0;Ya=Hd+32|0;Za=Hd+8|0;_a=Hd+24|0;$a=he+308|0;ab=Fd+20|0;bb=he+69|0;_d=a+168|0;cb=nd+4|0;db=nd+8|0;eb=nd+12|0;fb=nd+16|0;gb=nd+20|0;hb=nd+24|0;ib=nd+25|0;jb=he+180|0;kb=Ld+32|0;lb=Ld+8|0;mb=Ld+12|0;nb=Ld+16|0;ob=Ld+24|0;R=0;S=0;b=0;n=0;g=k[de>>2]|0;q=0;c:while(1){e=d;d:while(1){if(i[ce>>0]|0){u=ce;v=fe;d=q;ee=1317;break a}d=b+1|0;if(!(i[f+(g*20|0)+2>>0]&2))I=n;else{n=k[f+(g*20|0)+8>>2]|0;b=v+(n*40|0)|0;n=v+(n*40|0)+8|0;if(j[n>>1]&9312)Ag(b);j[n>>1]=4;I=b}z=f+(g*20|0)|0;F=i[z>>0]|0;n=F&255;e:do switch(n|0){case 20:{b=d;d=e;ee=24;break d}case 21:{b=d;d=e;n=I;ee=25;break d}case 22:{b=d;d=e;n=I;ee=26;break d}case 23:{b=d;d=e;n=I;e=g;ee=27;break d}case 24:{b=d;d=e;n=I;e=g;ee=28;break d}case 29:{b=d;d=e;e=g;ee=65;break d}case 30:{b=d;d=e;n=I;e=g;ee=66;break d}case 28:{b=d;d=e;n=I;e=g;ee=60;break d}case 32:{b=d;d=e;e=g;ee=72;break d}case 17:{b=d;d=e;n=I;ee=22;break d}case 18:{b=d;d=e;n=I;ee=23;break d}case 25:{b=d;d=e;n=I;e=g;ee=44;break d}case 26:{b=d;d=e;n=I;e=g;ee=45;break d}case 133:{b=d;d=e;n=I;e=g;ee=46;break d}case 97:{i[z>>0]=27;z=f+(g*20|0)+16|0;o=k[z>>2]|0;if(!o)b=0;else{b=o;while(1)if(!(i[b>>0]|0))break;else b=b+1|0;b=b-o&1073741823}w=f+(g*20|0)+4|0;k[w>>2]=b;if(vb)n=0;else{n=ah(I,o,-1,1,0)|0;if((n|0)==18){b=d;d=e;h=q;ee=1316;break c}if(bm(I,ub)|0){u=ce;v=fe;b=d;d=q;ee=1317;break a}k[I+24>>2]=0;b=I+8|0;j[b>>1]=m[b>>1]|2048;b=f+(g*20|0)+1|0;if((i[b>>0]|0)==-1)rg(he,k[z>>2]|0);i[b>>0]=-1;o=k[I+16>>2]|0;k[z>>2]=o;b=k[I+12>>2]|0;k[w>>2]=b}if((b|0)>(k[wb>>2]|0)){b=d;d=e;h=q;ee=1316;break c}else ee=57;break}case 31:{b=d;d=e;n=I;e=g;ee=67;break d}case 34:{b=d;d=e;e=g;ee=79;break d}case 35:{b=d;d=e;h=q;ee=80;break c}case 33:{b=d;d=e;ee=74;break d}case 94:{b=d;d=e;ee=94;break d}case 93:case 92:case 91:case 90:case 89:{b=d;N=z;d=e;e=g;ee=112;break d}case 27:{o=k[f+(g*20|0)+16>>2]|0;b=k[f+(g*20|0)+4>>2]|0;n=0;ee=57;break}case 16:{g=(k[f+(g*20|0)+8>>2]|0)+-1|0;n=0;ee=19;break}case 36:{b=d;d=e;F=I;e=g;ee=166;break d}case 1:{Q=i[f+(g*20|0)+3>>0]|0;z=Q&255;x=k[yb>>2]|0;b=v+((k[f+(g*20|0)+12>>2]|0)*40|0)|0;k[Rc>>2]=b;if(Q<<24>>24){w=0;b=v+((k[f+(g*20|0)+8>>2]|0)*40|0)|0;while(1){k[x+(w<<2)>>2]=b;if((j[b+8>>1]&4096)!=0?(_l(b)|0)!=0:0){u=ce;v=fe;b=d;d=q;ee=1317;break a}w=w+1|0;if((w|0)>=(z|0))break;else b=b+40|0}b=k[Rc>>2]|0}Q=k[f+(g*20|0)+16>>2]|0;k[zb>>2]=Q;k[Ab>>2]=g;k[Bb>>2]=a;P=b+8|0;j[P>>1]=m[P>>1]&48640|1;i[Cb>>0]=0;P=je;k[P>>2]=e;k[P+4>>2]=c;rc[k[Q+12>>2]&63](Rc,z,x);c=je;e=k[c>>2]|0;c=k[c+4>>2]|0;if(!(i[Cb>>0]|0))b=0;else{if(!(k[Db>>2]|0))b=0;else{b=Xg(k[Rc>>2]|0,1)|0;k[ge>>2]=b;ih(fe,he,10344,ge);b=k[Db>>2]|0}jm(a,g,k[f+(g*20|0)+4>>2]|0)}bm(k[Rc>>2]|0,ub)|0;o=k[Rc>>2]|0;w=m[o+8>>1]|0;if(w&18){n=k[o+12>>2]|0;if(w&16384)n=(k[o>>2]|0)+n|0;if((n|0)>(k[(k[o+32>>2]|0)+88>>2]|0)){b=d;d=e;h=q;ee=1316;break c}else{z=I;P=g;n=b}}else{z=I;P=g;n=b}break}case 88:case 87:case 86:case 85:{b=d;D=z;d=e;e=g;ee=184;break d}case 39:{b=d;d=e;F=I;e=g;ee=208;break d}case 37:{b=d;d=e;n=I;e=g;ee=202;break d}case 38:{b=d;d=e;F=I;e=g;ee=203;break d}case 83:case 80:case 81:case 82:case 78:case 79:{b=d;E=F;d=e;n=I;ee=213;break d}case 40:{Q=k[f+(g*20|0)+4>>2]|0;b=v+(Q*40|0)|0;if(!(j[v+(Q*40|0)+8>>1]&16384))n=0;else n=Wg(b)|0;lm(b,k[f+(g*20|0)+8>>2]&255,Gc);z=I;P=g;break}case 41:{b=d;d=e;n=I;e=g;ee=248;break d}case 42:{b=d;d=e;n=I;e=g;ee=249;break d}case 43:{b=d;d=e;n=I;ee=256;break d}case 71:case 72:{b=d;d=e;e=g;ee=261;break d}case 76:{b=d;d=e;n=I;e=g;ee=286;break d}case 19:{b=d;d=e;e=g;ee=268;break d}case 96:{b=d;d=e;e=g;ee=273;break d}case 44:{b=d;d=e;n=I;e=g;ee=278;break d}case 46:case 45:{b=d;d=e;n=I;e=g;ee=281;break d}case 77:{b=d;d=e;n=I;e=g;ee=288;break d}case 47:{b=d;d=e;n=I;ee=290;break d}case 48:{b=d;d=e;n=I;e=g;ee=368;break d}case 49:{b=d;d=e;ee=371;break d}case 50:{B=k[k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]>>2]|0;f:do if(k[B+60>>2]|0){b=vm(B)|0;if(!b){J=B+76|0;H=B+44|0;w=B+72|0;o=0;n=0;g:while(1){z=j[J>>1]|0;F=k[B+(z<<16>>16<<2)+120>>2]|0;if(!(i[F+5>>0]|0)){if(!(i[F+2>>0]|0)){o=ow(m[F+18>>1]|0,0,o|0,n|0)|0;n=L}}else{o=ow(m[F+18>>1]|0,0,o|0,n|0)|0;n=L;while(1){if(!(z<<16>>16))break g;if(F){Gg(k[F+68>>2]|0);z=j[J>>1]|0}z=z+-1<<16>>16;j[J>>1]=z;j[H>>1]=0;i[w>>0]=l[w>>0]&249;F=z<<16>>16;x=B+(F<<1)+78|0;E=j[x>>1]|0;F=k[B+(F<<2)+120>>2]|0;if((E&65535)<(m[F+18>>1]|0)){z=E;break}}j[x>>1]=z+1<<16>>16;F=j[J>>1]|0;z=F;F=k[B+(F<<16>>16<<2)+120>>2]|0}z=j[B+(z<<16>>16<<1)+78>>1]|0;x=k[F+56>>2]|0;if(z<<16>>16==(j[F+18>>1]|0)){b=l[F+6>>0]|0;b=wm(B,l[x+(b+9)>>0]<<16|l[x+(b+8)>>0]<<24|l[x+(b+10)>>0]<<8|l[x+(b+11)>>0])|0}else{b=(z&65535)<<1;Q=k[F+64>>2]|0;b=(l[Q+b>>0]<<8|l[Q+(b|1)>>0])&m[F+20>>1];b=wm(B,l[x+(b+1)>>0]<<16|l[x+b>>0]<<24|l[x+(b+2)>>0]<<8|l[x+(b+3)>>0])|0}if(b){o=0;n=0;break f}}b=vm(B)|0}else{o=0;n=0}}else{b=0;o=0;n=0}while(0);z=I;k[z>>2]=o;k[z+4>>2]=n;z=I;P=g;n=b;break}case 2:{M=k[f+(g*20|0)+4>>2]|0;o=k[f+(g*20|0)+16>>2]|0;if(!M){b=d;d=e;n=I;e=g;ee=446;break d}w=k[Mb>>2]|0;if(!w){f=o;b=d;d=e;h=q;ee=460;break c}else b=0;while(1){if(!(id(k[w>>2]|0,o)|0)){F=b;break}w=k[w+24>>2]|0;if(!w){f=o;b=d;d=e;h=q;ee=460;break c}else b=b+1|0}J=(M|0)==1;if((k[Yd>>2]|0)>0&J){b=d;d=e;h=q;ee=462;break c}H=w+24|0;if(!(k[H>>2]|0)){x=(i[Pb>>0]|0)!=0;if(x&J){b=ym(a,1)|0;if(b)break a;i[ae>>0]=1;if((Wl(a)|0)==5){b=g;ee=467;break c}i[Pb>>0]=0;x=1;n=k[ie>>2]|0}else ee=469}else{x=0;ee=469}if((ee|0)==469){ee=0;o=(k[Lb>>2]|0)-F+-1|0;if((M|0)==2){z=(k[Qb>>2]|0)>>>1&1;if((k[Rb>>2]|0)>0){F=z^1;E=0;while(1){D=Nl(k[(k[Td>>2]|0)+(E<<4)+4>>2]|0,516,F)|0;E=E+1|0;if(D){b=d;d=e;h=D;ee=1318;break c}b=k[Rb>>2]|0;if((E|0)>=(b|0)){ee=475;break}}}}else{b=k[Rb>>2]|0;z=0;ee=475}if((ee|0)==475){ee=0;if((b|0)>0){B=0;do{F=zm(k[(k[Td>>2]|0)+(B<<4)+4>>2]|0,M,o)|0;B=B+1|0;if(F){b=d;d=e;h=F;ee=1318;break c}}while((B|0)<(k[Rb>>2]|0))}}if(!z){F=o;n=0}else{z=k[Sb>>2]|0;if(z)do{Q=z+88|0;j[Q>>1]=j[Q>>1]|8;z=k[z+52>>2]|0}while((z|0)!=0);Jg(he);k[Qb>>2]=k[Qb>>2]|2;F=o;n=0}}z=k[Mb>>2]|0;if((z|0)!=(w|0))do{k[Mb>>2]=k[z+24>>2];rg(he,z);k[Lb>>2]=(k[Lb>>2]|0)+-1;z=k[Mb>>2]|0}while((z|0)!=(w|0));if(J){k[Mb>>2]=k[H>>2];rg(he,w);if(x){z=I;P=g;break e}else{b=d;z=M;d=e;x=F;n=I;e=g;ee=486;break d}}else{Q=w+8|0;P=k[Q+4>>2]|0;O=Nb;k[O>>2]=k[Q>>2];k[O+4>>2]=P;O=w+16|0;P=k[O+4>>2]|0;Q=Ob;k[Q>>2]=k[O>>2];k[Q+4>>2]=P;if(x){z=I;P=g;break e}else{z=M;b=d;d=e;x=F;n=I;e=g;ee=488;break d}}}case 3:{h=q;ee=489;break c}case 4:{w=f+(g*20|0)+8|0;b=k[w>>2]|0;if((b|0)!=0?(k[Qb>>2]&33554432|0)!=0:0){b=d;d=e;h=8;ee=1318;break c}E=f+(g*20|0)+4|0;F=k[(k[Td>>2]|0)+(k[E>>2]<<4)+4>>2]|0;if(!F){n=0;w=0;b=0}else{z=Dg(F,b)|0;if((z|0)==5){b=g;ee=508;break c}else if(z){b=d;d=e;h=z;ee=1318;break c}do if((k[w>>2]|0)!=0?(j[Ud>>1]&32)!=0:0){if((i[ae>>0]|0)!=0?(k[Wb>>2]|0)<=1:0){b=0;break}b=k[Tb>>2]|0;if(!b){b=(k[Kb>>2]|0)+1|0;k[Kb>>2]=b;b=(k[Lb>>2]|0)+b|0;k[Tb>>2]=b}b=xm(he,0,b+-1|0)|0;if(!b){b=k[Tb>>2]|0;Q=k[F+4>>2]|0;k[Q+4>>2]=k[F>>2];b=ml(k[Q>>2]|0,b)|0}Q=Nb;P=k[Q+4>>2]|0;O=Ub;k[O>>2]=k[Q>>2];k[O+4>>2]=P;O=Ob;P=k[O+4>>2]|0;Q=Vb;k[Q>>2]=k[O>>2];k[Q+4>>2]=P}else b=0;while(0);n=k[F+4>>2]|0;k[n+4>>2]=k[F>>2];n=k[(k[n+12>>2]|0)+56>>2]|0;n=l[n+41>>0]<<16|l[n+40>>0]<<24|l[n+42>>0]<<8|l[n+43>>0];w=k[(k[(k[Td>>2]|0)+(k[E>>2]<<4)+12>>2]|0)+4>>2]|0}if(i[f+(g*20|0)+3>>0]|0){if((n|0)!=(k[f+(g*20|0)+12>>2]|0)){b=d;f=E;d=e;h=q;ee=522;break c}if((w|0)!=(k[f+(g*20|0)+16>>2]|0)){b=d;f=E;d=e;h=q;ee=522;break c}else{z=I;P=g;n=b}}else{z=I;P=g;n=b}break}case 53:{b=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;if((b|0)!=0?(k[b+28>>2]|0)==(k[f+(g*20|0)+8>>2]|0):0){w=f+(g*20|0)+3|0;n=0;ee=548}else ee=536;break}case 51:{b=d;d=e;n=I;e=g;ee=525;break d}case 52:{x=f+(g*20|0)+4|0;w=k[x>>2]|0;b=k[Td>>2]|0;z=k[f+(g*20|0)+12>>2]|0;o=v+(z*40|0)|0;n=_g(o)|0;Q=o;k[Q>>2]=n;k[Q+4>>2]=L;z=v+(z*40|0)+8|0;j[z>>1]=m[z>>1]&48640|4;z=f+(g*20|0)+8|0;n=Ig(k[b+(w<<4)+4>>2]|0,k[z>>2]|0,n)|0;z=k[z>>2]|0;if((z|0)==1){k[k[b+(w<<4)+12>>2]>>2]=k[o>>2];k[Qb>>2]=k[Qb>>2]|2}else if((z|0)==2)i[(k[b+(w<<4)+12>>2]|0)+76>>0]=k[o>>2];if((k[x>>2]|0)==1){b=k[Sb>>2]|0;if(b)do{Q=b+88|0;j[Q>>1]=j[Q>>1]|8;b=k[b+52>>2]|0}while((b|0)!=0);j[Ud>>1]=j[Ud>>1]&-9;z=I;P=g}else{z=I;P=g}break}case 55:case 54:{ee=536;break}case 57:case 56:{w=Cm(a,k[f+(g*20|0)+4>>2]|0,k[f+(g*20|0)+8>>2]|0,-1,1)|0;if(!w){u=ce;v=fe;b=d;d=q;ee=1317;break a}i[w+25>>0]=1;F=w+27|0;i[F>>0]=i[F>>0]|1;b=w+4|0;E=f+(g*20|0)+3|0;n=Em(k[he>>2]|0,0,he,b,l[E>>0]|5,1054)|0;do if(!n){n=Dg(k[b>>2]|0,1)|0;if(!n){x=k[f+(g*20|0)+16>>2]|0;z=k[b>>2]|0;if(!x){n=Dm(z,1,1,0,k[w>>2]|0)|0;i[F>>0]=i[F>>0]|4;break}n=Fm(z,rd,l[E>>0]|2)|0;if(!n){k[w+8>>2]=x;n=Dm(k[b>>2]|0,k[rd>>2]|0,1,x,k[w>>2]|0)|0}i[F>>0]=i[F>>0]&-5}}while(0);i[F>>0]=((i[E>>0]|0)!=8&1)<<3&255|i[F>>0]&-9;z=I;P=g;break}case 58:{b=d;d=e;ee=558;break d}case 60:{b=d;d=e;n=I;ee=568;break d}case 61:{b=d;d=e;n=I;e=g;ee=570;break d}case 59:{b=d;d=e;n=I;e=g;ee=566;break d}case 65:case 64:case 63:case 62:{b=d;w=n;d=e;n=I;e=g;ee=571;break d}case 66:{b=d;d=e;n=I;e=g;ee=596;break d}case 69:case 68:case 67:{b=d;H=z;d=e;n=I;ee=597;break d}case 73:{b=d;d=e;n=I;e=g;ee=624;break d}case 70:{Q=k[f+(g*20|0)+12>>2]|0;b=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;n=k[b>>2]|0;k[zd>>2]=0;Q=v+(Q*40|0)|0;P=k[Q>>2]|0;Q=k[Q+4>>2]|0;n=Hm(n,0,P,Q,0,zd)|0;o=b+48|0;k[o>>2]=P;k[o+4>>2]=Q;i[b+25>>0]=0;k[b+60>>2]=0;i[b+26>>0]=0;o=k[zd>>2]|0;if(o)g=(k[f+(g*20|0)+8>>2]|0)+-1|0;k[b+12>>2]=o;z=I;P=g;break}case 74:{J=Md;k[J>>2]=0;k[J+4>>2]=0;k[Ad>>2]=0;J=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;b=k[J>>2]|0;if(!b){n=0;o=0;b=0}else{o=J+27|0;do if(!(i[o>>0]&2)){z=Mm(b,Ad)|0;if(z){b=d;d=e;h=z;ee=1318;break c}if(k[Ad>>2]|0){Q=Md;k[Q>>2]=1;k[Q+4>>2]=0;break}pm(k[J>>2]|0,Md);n=Md;b=k[n>>2]|0;n=k[n+4>>2]|0;if((b|0)==-1&(n|0)==2147483647){i[o>>0]=i[o>>0]|2;break}else{P=ow(b|0,n|0,1,0)|0;Q=Md;k[Q>>2]=P;k[Q+4>>2]=L;break}}while(0);F=k[f+(g*20|0)+12>>2]|0;if(F){b=k[pb>>2]|0;if(!b)z=v;else{while(1){w=k[b+4>>2]|0;if(!w)break;else b=w}z=k[b+16>>2]|0}E=z+(F*40|0)|0;x=_g(E)|0;b=L;Q=E;k[Q>>2]=x;k[Q+4>>2]=b;Q=z+(F*40|0)+8|0;j[Q>>1]=m[Q>>1]&48640|4;if((x|0)==-1&(b|0)==2147483647){b=d;d=e;h=13;ee=1318;break c}if(i[o>>0]&2){b=d;d=e;h=13;ee=1318;break c}w=Md;n=k[w>>2]|0;w=k[w+4>>2]|0;z=ow(x|0,b|0,1,0)|0;x=L;if((w|0)<(x|0)|(w|0)==(x|0)&n>>>0>>0){w=Md;k[w>>2]=z;k[w+4>>2]=x;w=x}else z=n;Q=E;k[Q>>2]=z;k[Q+4>>2]=w}h:do if(!(i[o>>0]&2))b=0;else{n=0;while(1){hd(8,Md);Q=Md;Q=ow(k[Q>>2]|0,k[Q+4>>2]&1073741823|0,1,0)|0;b=L;P=Md;k[P>>2]=Q;k[P+4>>2]=b;b=Hm(k[J>>2]|0,0,Q,b,0,Ad)|0;if(k[Ad>>2]|b)break h;n=n+1|0;if((n|0)>=100){b=d;d=e;h=13;ee=1318;break c}}}while(0);i[J+26>>0]=0;k[J+60>>2]=0;o=Md;n=k[o>>2]|0;o=k[o+4>>2]|0}z=I;k[z>>2]=n;k[z+4>>2]=o;z=I;P=g;n=b;break}case 84:case 75:{b=d;z=F;d=e;n=I;e=g;ee=647;break d}case 95:{b=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;n=Om(k[b>>2]|0)|0;k[b+60>>2]=0;if((((n|0)==0?(Dc=k[bc>>2]|0,(Dc|0)!=0):0)?(Ec=k[f+(g*20|0)+16>>2]|0,(Ec|0)!=0):0)?(i[b+27>>0]&4)!=0:0){Q=b+48|0;gc[Dc&1](k[cc>>2]|0,9,k[(k[Td>>2]|0)+(i[b+24>>0]<<4)>>2]|0,Ec,k[Q>>2]|0,k[Q+4>>2]|0)}if(!(k[f+(g*20|0)+8>>2]&1)){z=I;P=g}else{k[rb>>2]=(k[rb>>2]|0)+1;z=I;P=g}break}case 98:{b=d;d=e;n=I;e=g;ee=671;break d}case 99:{b=d;d=e;n=I;e=g;ee=672;break d}case 100:{n=k[f+(g*20|0)+8>>2]|0;z=v+(n*40|0)|0;b=k[(k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0)+56>>2]|0;if(!(i[b+56>>0]|0)){w=k[b+36>>2]|0;b=w;w=w+8|0}else{Q=k[b+20>>2]|0;w=k[(k[Q+8>>2]|0)+4>>2]|0;Q=k[Q+12>>2]|0;b=Q+(w*56|0)+20|0;w=k[Q+(w*56|0)+32>>2]|0}b=k[b>>2]|0;if(!(kh(z,b)|0)){k[v+(n*40|0)+12>>2]=b;Q=v+(n*40|0)+8|0;j[Q>>1]=m[Q>>1]&48640|16;pw(k[v+(n*40|0)+16>>2]|0,w|0,b|0)|0;n=0}else n=7;k[(k[(k[Fb>>2]|0)+(k[f+(g*20|0)+12>>2]<<2)>>2]|0)+60>>2]=0;P=g;break}case 102:case 101:{o=k[f+(g*20|0)+8>>2]|0;F=v+(o*40|0)|0;x=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;z=k[x>>2]|0;x=x+27|0;if(i[x>>0]&4){qm(z,Zc);b=k[Zc>>2]|0;if(b>>>0>(k[wb>>2]|0)>>>0){b=d;d=e;h=q;ee=1316;break c}}else{pm(z,_c);O=_c;b=k[O>>2]|0;O=k[O+4>>2]|0;Q=k[wb>>2]|0;P=((Q|0)<0)<<31>>31;if((O|0)>(P|0)|(O|0)==(P|0)&b>>>0>Q>>>0){b=d;d=e;h=q;ee=1316;break c}k[Zc>>2]=b}if(kh(F,b>>>0>32?b:32)|0){u=ce;v=fe;b=d;d=q;ee=1317;break a}k[v+(o*40|0)+12>>2]=b;w=v+(o*40|0)+8|0;j[w>>1]=m[w>>1]&48640|16;w=k[Zc>>2]|0;b=k[v+(o*40|0)+16>>2]|0;if(!(i[x>>0]&4))n=Qm(z,0,w,b,0)|0;else n=Ih(z,0,w,b)|0;i[v+(o*40|0)+10>>0]=1;z=F;P=g;break}case 103:{n=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;o=n+25|0;if(i[o>>0]|0){b=d;d=e;n=I;e=g;ee=700;break d}do if(!(i[n+26>>0]|0)){b=k[n+32>>2]|0;if(b){Q=k[b>>2]|0;n=wc[k[(k[Q>>2]|0)+48>>2]&127](b,Od)|0;Rm(a,Q);break}if((i[(k[n>>2]|0)+73>>0]|0)!=1){z=om(n)|0;if(z){b=d;d=e;h=z;ee=1318;break c}if(i[o>>0]|0){b=d;d=e;n=I;e=g;ee=708;break d}}pm(k[n>>2]|0,Od);n=0}else{P=n+48|0;Q=k[P+4>>2]|0;n=Od;k[n>>2]=k[P>>2];k[n+4>>2]=Q;n=0}while(0);Q=Od;P=k[Q+4>>2]|0;z=I;k[z>>2]=k[Q>>2];k[z+4>>2]=P;z=I;P=g;break}case 108:{ee=715;break}case 104:{b=d;d=e;n=I;e=g;ee=711;break d}case 107:case 106:{k[dc>>2]=(k[dc>>2]|0)+1;ee=715;break}case 105:{P=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;n=k[P>>2]|0;k[Bd>>2]=0;n=Mm(n,Bd)|0;Q=k[Bd>>2]|0;i[P+25>>0]=Q;i[P+26>>0]=0;k[P+60>>2]=0;P=k[f+(g*20|0)+8>>2]|0;z=I;P=(P|0)>0&(Q|0)!=0?P+-1|0:g;break}case 7:case 6:{if(!(k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0)){b=d;d=e;O=v;w=f;P=R;Q=S;n=I;e=g;break d}else ee=765;break}case 5:{b=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;k[Cd>>2]=0;w=k[b+56>>2]|0;if(i[w+56>>0]|0){n=$m(k[w+20>>2]|0,Cd)|0;ee=766;break e}n=w+36|0;o=k[n>>2]|0;Q=o+4|0;k[n>>2]=k[Q>>2];k[Q>>2]=0;if(!((k[w+40>>2]|0)!=0|(o|0)==0))rg(he,o);k[Cd>>2]=(k[n>>2]|0)==0&1;n=0;ee=766;break}case 9:case 8:{ee=765;break}case 110:case 109:{x=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;O=k[f+(g*20|0)+8>>2]|0;b=k[x>>2]|0;z=f+(g*20|0)+3|0;if(i[z>>0]&1)k[rb>>2]=(k[rb>>2]|0)+1;if((j[v+(O*40|0)+8>>1]&16384)!=0?(Rd=Wg(v+(O*40|0)|0)|0,(Rd|0)!=0):0){b=d;d=e;f=Rd;h=q;ee=1309;break c}B=k[x+56>>2]|0;P=v+(O*40|0)+12|0;N=k[P>>2]|0;if(!B){if(!(i[z>>0]&16))w=0;else w=k[x+12>>2]|0;n=Nm(b,k[v+(O*40|0)+16>>2]|0,N,((N|0)<0)<<31>>31,10360,0,0,k[f+(g*20|0)+12>>2]|0,w)|0;k[x+60>>2]=0;z=I;P=g;break e}z=N;w=((N|0)<0)<<31>>31;x=0;do{x=x+1|0;z=rw(z|0,w|0,7)|0;w=L}while(((z|0)!=0|(w|0)!=0)&(x|0)<9);o=N+8|0;E=x+N|0;J=B+4|0;x=k[J>>2]|0;do if(!x)n=0;else{if(!(k[B+40>>2]|0)){z=B+44|0;Q=k[z>>2]|0;if((Q|0)<=(x|0)?!((k[2265]|0)!=0?(Q|0)>(k[B>>2]|0):0):0){n=0;break}}else{Q=k[B+48>>2]|0;if(!((Q|0)!=0&(Q+o|0)>(x|0))){n=0;break}z=B+44|0}n=Tm(B)|0;k[z>>2]=0;k[B+48>>2]=0}while(0);z=B+36|0;F=B+44|0;k[F>>2]=(k[F>>2]|0)+E;F=B+8|0;if((E|0)>(k[F>>2]|0))k[F>>2]=E;H=B+40|0;F=k[H>>2]|0;if(!F){w=vg(o,((o|0)<0)<<31>>31)|0;if(!w){b=d;d=e;f=7;h=q;ee=1309;break c}k[w+4>>2]=k[z>>2]}else{w=B+48|0;E=k[w>>2]|0;o=E+o|0;b=B+52|0;D=k[b>>2]|0;if((o|0)>(D|0)){E=D;do E=E<<1;while((E|0)<(o|0));Q=k[J>>2]|0;E=(E|0)>(Q|0)?Q:E;E=(E|0)<(o|0)?o:E;F=wg(F,E,((E|0)<0)<<31>>31)|0;if(!F){b=d;d=e;f=7;h=q;ee=1309;break c}x=F+((k[z>>2]|0)-(k[H>>2]|0))|0;k[z>>2]=x;k[H>>2]=F;k[b>>2]=E;E=k[w>>2]|0}else x=k[z>>2]|0;k[w>>2]=E+(N+15&-8);k[F+(E+4)>>2]=x-F;w=F+E|0}pw(w+8|0,k[v+(O*40|0)+16>>2]|0,k[P>>2]|0)|0;k[w>>2]=k[P>>2];k[z>>2]=w;z=I;P=g;break}case 112:{b=d;d=e;e=g;ee=801;break d}case 111:{w=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;b=k[w>>2]|0;k[vd>>2]=k[w+8>>2];j[ec>>1]=k[f+(g*20|0)+12>>2];i[hc>>0]=0;k[ic>>2]=v+((k[f+(g*20|0)+8>>2]|0)*40|0);n=Hm(b,vd,0,0,0,Dd)|0;if(!(k[Dd>>2]|n))n=Om(b)|0;k[w+60>>2]=0;z=I;P=g;break}case 116:case 115:case 114:case 113:{w=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;k[wd>>2]=k[w+8>>2];j[pc>>1]=k[f+(g*20|0)+16>>2];i[T>>0]=((F&255)<115)<<31>>31;k[U>>2]=v+((k[f+(g*20|0)+12>>2]|0)*40|0);Q=Pd;k[Q>>2]=0;k[Q+4>>2]=0;pm(k[w>>2]|0,Pd);Q=Pd;b=k[Q>>2]|0;Q=ow(b|0,k[Q+4>>2]|0,-1,-1)|0;P=L;if(!(P>>>0>0|(P|0)==0&Q>>>0>2147483646)){j[X>>1]=0;k[Y>>2]=he;k[Z>>2]=0;b=sm(k[w>>2]|0,0,b,1,nd)|0;if(!b){n=Pm(k[_>>2]|0,k[$>>2]|0,wd,0)|0;if((j[X>>1]&9312)==0&(k[Z>>2]|0)==0)b=0;else{Vg(nd);b=0}}else n=0}else{k[ge>>2]=68730;k[ge+4>>2]=10788;gd(11,13600,ge);b=11;n=0}if((((i[z>>0]&1)==0?n+1|0:0-n|0)|0)>0){z=I;P=(k[f+(g*20|0)+8>>2]|0)+-1|0;n=b}else{z=I;P=g;n=b}break}case 117:{M=I+8|0;j[M>>1]=1;if((k[Wb>>2]|0)>((k[aa>>2]|0)+1|0)){b=d;d=e;h=q;ee=832;break c}K=k[f+(g*20|0)+12>>2]|0;J=k[(k[Td>>2]|0)+(K<<4)+4>>2]|0;N=f+(g*20|0)+4|0;E=k[N>>2]|0;z=J+4|0;o=k[z>>2]|0;k[o+4>>2]=k[J>>2];k[ge>>2]=0;do if(!(k[o+8>>2]|0)){n=il(o,E,ge,0)|0;if(!n){n=an(J,E,0)|0;if(n){w=k[ge>>2]|0;if(!w){x=0;break}Gg(k[w+68>>2]|0);x=0;break}if(E>>>0<=1){w=k[ge>>2]|0;ul(w,9);if(!w){n=0;x=0;break}Gg(k[w+68>>2]|0);n=0;x=0;break}if(!(i[o+17>>0]|0)){w=k[ge>>2]|0;n=bn(k[w+52>>2]|0,w,k[w+72>>2]|0)|0;if(!w){x=0;break}Gg(k[w+68>>2]|0);x=0;break}F=k[z>>2]|0;k[F+4>>2]=k[J>>2];F=k[(k[F+12>>2]|0)+56>>2]|0;F=l[F+53>>0]<<16|l[F+52>>0]<<24|l[F+54>>0]<<8|l[F+55>>0];z=k[ge>>2]|0;if((F|0)==(E|0)){n=bn(k[z+52>>2]|0,z,k[z+72>>2]|0)|0;if(z)Gg(k[z+68>>2]|0);if(!n)x=0;else{x=0;break}}else{if(z)Gg(k[z+68>>2]|0);n=il(o,F,Pd,0)|0;if(n){x=0;break}z=k[Pd>>2]|0;n=cn(o,z,1,0,E,0)|0;if(z)Gg(k[z+68>>2]|0);if(n){x=0;break}k[Pd>>2]=0;n=il(o,F,Pd,0)|0;z=k[Pd>>2]|0;if(n){if(!z){x=0;break}}else n=bn(k[z+52>>2]|0,z,k[z+72>>2]|0)|0;Gg(k[z+68>>2]|0);if(!n)x=F;else{x=0;break}}D=((k[2514]|0)>>>0)/((k[o+32>>2]|0)>>>0)|0;C=D+1|0;E=o+36|0;while(1){z=F+-1|0;if((z|0)==(C|0)){F=z;continue}if(z>>>0<2)B=0;else{B=F+-3|0;B=B-((B>>>0)%(((((k[E>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;B=((B+1|0)==(D|0)?3:2)+B|0}if((B|0)==(z|0))F=z;else break}n=Ig(J,4,z)|0}else x=0}else{n=262;x=0}while(0);j[M>>1]=4;Q=I;k[Q>>2]=x;k[Q+4>>2]=((x|0)<0)<<31>>31;if((n|0)==0&(x|0)!=0){b=d;J=K;z=N;d=e;n=I;e=g;ee=865;break d}else{z=I;P=g}break}case 118:{k[bd>>2]=0;b=f+(g*20|0)+12|0;n=an(k[(k[Td>>2]|0)+(k[f+(g*20|0)+8>>2]<<4)+4>>2]|0,k[f+(g*20|0)+4>>2]|0,(k[b>>2]|0)!=0?bd:0)|0;b=k[b>>2]|0;if((b|0)!=0?(Fc=k[bd>>2]|0,k[rb>>2]=(k[rb>>2]|0)+Fc,(b|0)>0):0){z=v+(b*40|0)|0;P=z;P=ow(k[P>>2]|0,k[P+4>>2]|0,Fc|0,((Fc|0)<0)<<31>>31|0)|0;k[z>>2]=P;k[z+4>>2]=L;z=I;P=g}else{z=I;P=g}break}case 121:case 120:{k[sd>>2]=0;n=Fm(k[(k[Td>>2]|0)+(k[f+(g*20|0)+4>>2]<<4)+4>>2]|0,sd,F<<24>>24==121?1:2)|0;P=k[sd>>2]|0;z=I;k[z>>2]=P;k[z+4>>2]=((P|0)<0)<<31>>31;z=I;P=g;break}case 119:{b=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;n=k[b+56>>2]|0;if(n){b=d;d=e;F=I;e=g;ee=878;break d}n=k[b>>2]|0;z=I;P=g;n=an(k[n>>2]|0,k[n+60>>2]|0,0)|0;break}case 123:{z=I;P=g;n=fn(he,k[f+(g*20|0)+4>>2]|0)|0;break}case 124:{b=d;d=e;n=I;e=g;ee=886;break d}case 122:{b=d;d=e;F=I;e=g;ee=881;break d}case 126:{b=d;d=e;n=I;e=g;ee=895;break d}case 125:{b=d;d=e;F=I;e=g;ee=887;break d}case 127:{b=d;d=e;n=I;ee=903;break d}case 128:{b=d;d=e;F=I;ee=947;break d}case 129:{o=k[f+(g*20|0)+4>>2]|0;n=v+(o*40|0)|0;o=v+(o*40|0)+8|0;b=j[o>>1]|0;do if(b&32){B=k[n>>2]|0;b=B+26|0;w=j[b>>1]|0;if(!(w&2)){if(!(w&1)){w=B+8|0;Q=pn(k[w>>2]|0)|0;k[w>>2]=Q;w=j[b>>1]|0}j[b>>1]=w&65535|2}z=B+8|0;x=k[z>>2]|0;if(!x){b=j[o>>1]|0;break}o=x;w=k[o>>2]|0;o=k[o+4>>2]|0;Q=k[x+8>>2]|0;k[z>>2]=Q;if(!Q)cl(B);n=k[f+(g*20|0)+12>>2]|0;b=v+(n*40|0)|0;n=v+(n*40|0)+8|0;if(!(j[n>>1]&9312)){ee=b;k[ee>>2]=w;k[ee+4>>2]=o;j[n>>1]=4;n=0;ee=19;break e}else{ch(b,w,o);n=0;ee=19;break e}}while(0);if(!(b&9312))j[o>>1]=1;else Ag(n);g=(k[f+(g*20|0)+8>>2]|0)+-1|0;n=0;ee=19;break}case 130:{b=d;d=e;n=I;ee=966;break d}case 131:{b=d;d=e;n=I;e=g;ee=993;break d}case 132:{b=d;d=e;n=I;e=g;ee=1009;break d}case 134:{b=d;d=e;F=I;e=g;ee=1010;break d}case 135:{b=d;d=e;n=I;e=g;ee=1015;break d}case 136:{b=d;d=e;e=g;ee=1022;break d}case 137:{b=d;d=e;n=I;e=g;ee=1028;break d}case 138:{b=d;d=e;n=I;e=g;ee=1030;break d}case 139:{b=d;d=e;F=I;e=g;ee=1032;break d}case 140:{b=d;d=e;n=I;e=g;ee=1034;break d}case 141:{b=d;d=e;n=I;e=g;ee=1036;break d}case 10:{Q=i[f+(g*20|0)+3>>0]|0;w=Q&255;b=k[yb>>2]|0;if(Q<<24>>24){n=0;o=v+((k[f+(g*20|0)+8>>2]|0)*40|0)|0;while(1){k[b+(n<<2)>>2]=o;n=n+1|0;if((n|0)>=(w|0))break;else o=o+40|0}}Q=k[f+(g*20|0)+16>>2]|0;k[Da>>2]=Q;P=k[f+(g*20|0)+12>>2]|0;k[Ea>>2]=v+(P*40|0);P=v+(P*40|0)+12|0;k[P>>2]=(k[P>>2]|0)+1;j[Fa>>1]=1;k[Ga>>2]=he;k[Ha>>2]=0;k[Sc>>2]=Jd;k[Ia>>2]=0;k[Ja>>2]=a;k[Ka>>2]=g;i[La>>0]=0;rc[k[Q+16>>2]&63](Sc,w,b);if(!(k[Ia>>2]|0))n=0;else{n=Xg(Jd,1)|0;k[ge>>2]=n;ih(fe,he,10344,ge);n=k[Ia>>2]|0}do if((i[La>>0]|0)!=0?(Jc=k[f+((g+-1|0)*20|0)+4>>2]|0,(Jc|0)!=0):0){b=v+(Jc*40|0)|0;o=v+(Jc*40|0)+8|0;if(!(j[o>>1]&9312)){Q=b;k[Q>>2]=1;k[Q+4>>2]=0;j[o>>1]=4;break}else{ch(b,1,0);break}}while(0);if((j[Fa>>1]&9312)==0&(k[Ha>>2]|0)==0){z=I;P=g}else{Vg(Jd);z=I;P=g}break}case 11:{k[Oc>>2]=0;k[Ma>>2]=-1;k[Na>>2]=-1;b=$h(he,k[f+(g*20|0)+4>>2]|0,k[f+(g*20|0)+8>>2]|0,Na,Ma)|0;if((b|0)==5){k[Oc>>2]=1;b=0}n=0;o=v+((k[f+(g*20|0)+12>>2]|0)*40|0)|0;while(1){z=k[Oc+(n<<2)>>2]|0;x=((z|0)<0)<<31>>31;w=o+8|0;if(!(j[w>>1]&9312)){Q=o;k[Q>>2]=z;k[Q+4>>2]=x;j[w>>1]=4}else ch(o,z,x);n=n+1|0;if((n|0)==3){z=I;P=g;n=b;break}else o=o+40|0}break}case 142:{z=k[f+(g*20|0)+4>>2]|0;w=v+(z*40|0)|0;n=bl(w,k[f+(g*20|0)+16>>2]|0)|0;if(n){Q=Xg(w,1)|0;k[ge>>2]=Q;ih(fe,he,10344,ge)}bm(w,ub)|0;o=m[v+(z*40|0)+8>>1]|0;if(o&18){b=k[v+(z*40|0)+12>>2]|0;if(o&16384)b=(k[w>>2]|0)+b|0;if((b|0)>(k[(k[v+(z*40|0)+32>>2]|0)+88>>2]|0)){b=d;d=e;h=q;ee=1316;break c}else{z=I;P=g}}else{z=I;P=g}break}case 12:{b=k[f+(g*20|0)+12>>2]|0;I=k[(k[Td>>2]|0)+(k[f+(g*20|0)+4>>2]<<4)+4>>2]|0;H=k[k[I+4>>2]>>2]|0;F=i[H+5>>0]|0;w=F&255;b=(b|0)==-1?w:b;do if((l[H+16>>0]|0)>2)b=w;else if((k[k[H+64>>2]>>2]|0)!=0?(Q=H+72|0,P=k[Q+4>>2]|0,(P|0)>0|(P|0)==0&(k[Q>>2]|0)>>>0>0):0){b=w;break}while(0);if(!(i[H+15>>0]|0))x=k[H+168>>2]|0;else x=10360;o=(b|0)==5;if(o)if(x){z=x;while(1)if(!(i[z>>0]|0))break;else z=z+1|0;if(z-x&1073741823){z=k[k[H+60>>2]>>2]|0;if(!(i[H+4>>0]|0))if((k[z>>2]|0)>1?!((k[z+52>>2]|0)==0|(b|0)==(w|0)):0)ee=1077;else{b=w;n=0}else ee=1076}else{b=w;n=0}}else{b=w;n=0}else ee=1076;if((ee|0)==1076){ee=0;if((b|0)==(w|0)){b=w;n=0}else ee=1077}do if((ee|0)==1077){ee=0;z=F<<24>>24==5;if(z|o){if(!(i[ae>>0]|0)){b=d;f=o;d=e;h=q;ee=1080;break c}if((k[Wb>>2]|0)>1){b=d;f=o;d=e;h=q;ee=1080;break c}if(!z){if(F<<24>>24==4)xn(H,2)|0}else{F=H+208|0;if(!(k[F>>2]|0)){k[Wc>>2]=0;n=kl(H,1)|0;if(n)break;n=k[H>>2]|0;n=uc[k[n+32>>2]&31](n,k[H+212>>2]|0,0,Wc)|0;if((n|0)==0&(k[Wc>>2]|0)!=0)n=un(H)|0;if(n)break;if(k[F>>2]|0)ee=1088}else ee=1088;if((ee|0)==1088){ee=0;n=vn(H)|0;if(n)break;n=wn(k[F>>2]|0,l[H+9>>0]|0,k[H+152>>2]|0,k[H+200>>2]|0)|0;k[F>>2]=0;if(n)break}xn(H,b)|0}n=Kg(I,o?2:1)|0}else n=0}while(0);b=xn(H,(n|0)==0?b:w)|0;z=k[f+(g*20|0)+8>>2]|0;F=v+(z*40|0)|0;j[v+(z*40|0)+8>>1]=2562;if((b|0)==6){k[v+(z*40|0)+16>>2]=0;b=0}else{b=k[32216+(b<<2)>>2]|0;k[v+(z*40|0)+16>>2]=b;w=b;while(1)if(!(i[w>>0]|0))break;else w=w+1|0;b=w-b&1073741823}k[v+(z*40|0)+12>>2]=b;i[v+(z*40|0)+10>>0]=1;bm(F,ub)|0;z=F;P=g;break}case 13:{if(!(i[ae>>0]|0)){b=d;d=e;h=q;ee=1101;break c}if((k[Oa>>2]|0)>1){b=d;d=e;h=q;ee=1103;break c}O=k[Qb>>2]|0;K=k[sb>>2]|0;o=k[tb>>2]|0;b=k[Pa>>2]|0;k[Qb>>2]=O&-2762753|2107392;k[Pa>>2]=0;H=k[(k[Td>>2]|0)+4>>2]|0;N=H+4|0;E=i[(k[k[N>>2]>>2]|0)+15>>0]|0;Q=k[Rb>>2]|0;n=yn(he,fe,(i[Xb>>0]|0)==2?42432:42464)|0;F=k[Rb>>2]|0;if((F|0)>(Q|0))w=(k[Td>>2]|0)+(F+-1<<4)|0;else w=0;i:do if(!n){M=k[(k[Td>>2]|0)+(F+-1<<4)+4>>2]|0;zn(M)|0;P=k[N>>2]|0;k[P+4>>2]=k[H>>2];P=(k[P+32>>2]|0)-(k[P+36>>2]|0)|0;n=yn(he,fe,42488)|0;if(!n){n=yn(he,fe,42528)|0;if(!n){n=Dg(H,2)|0;if(!n){F=k[N>>2]|0;if((i[(k[F>>2]|0)+5>>0]|0)==5)k[Qa>>2]=0;if(!(Cg(M,k[F+32>>2]|0,P,0)|0)){if(E<<24>>24==0?(Cg(M,k[Qa>>2]|0,P,0)|0)!=0:0){n=7;break}if(i[ce>>0]|0){n=7;break}F=i[Ra>>0]|0;do if(F<<24>>24>-1)F=F<<24>>24;else{F=k[N>>2]|0;k[F+4>>2]=k[H>>2];if(!(i[F+17>>0]|0)){F=0;break}F=(i[F+18>>0]|0)==0?1:2}while(0);An(M,F)|0;n=Bn(he,fe,42536)|0;if(n)break;n=Bn(he,fe,42688)|0;if(n)break;n=Bn(he,fe,42792)|0;if(n)break;n=Bn(he,fe,42912)|0;if(n)break;n=Bn(he,fe,43112)|0;if(n)break;n=Bn(he,fe,43232)|0;if(n)break;n=yn(he,fe,43392)|0;if(!n)F=0;else break;do{n=l[43576+F>>0]|0;Bm(H,n,Yc);n=Ig(M,n,(l[43576+(F|1)>>0]|0)+(k[Yc>>2]|0)|0)|0;F=F+2|0;if(n)break i}while((F|0)<10);D=k[N>>2]|0;k[D+4>>2]=k[H>>2];F=k[M>>2]|0;J=M+4|0;E=k[J>>2]|0;k[E+4>>2]=F;D=k[(k[D>>2]|0)+60>>2]|0;C=k[D>>2]|0;if(C){Q=k[E+32>>2]|0;Q=xw(k[E+44>>2]|0,0,Q|0,((Q|0)<0)<<31>>31|0)|0;n=ad;k[n>>2]=Q;k[n+4>>2]=L;n=fc[k[C+40>>2]&63](D,11,ad)|0;n=(n|0)==12?0:n;if(n)break;F=k[M>>2]|0}Q=Qc+0|0;C=Q+48|0;do{k[Q>>2]=0;Q=Q+4|0}while((Q|0)<(C|0));k[Sa>>2]=F;k[Ta>>2]=M;k[Ua>>2]=H;k[Va>>2]=1;ld(Qc,2147483647)|0;n=md(Qc)|0;if(n){z=k[k[(k[Ua>>2]|0)+4>>2]>>2]|0;if(i[z+15>>0]|0)break;if(i[z+12>>0]|0)break;Cn(z);break}n=(k[N>>2]|0)+22|0;j[n>>1]=m[n>>1]&65533;n=zn(M)|0;if(n)break;F=k[J>>2]|0;k[F+4>>2]=k[M>>2];if(!(i[F+17>>0]|0))B=0;else B=(i[F+18>>0]|0)==0?1:2;An(H,B)|0;n=Cg(H,k[(k[J>>2]|0)+32>>2]|0,P,1)|0}else n=7}}}}while(0);k[Qb>>2]=O;k[sb>>2]=K;k[tb>>2]=o;k[Pa>>2]=b;Cg(H,-1,-1,1)|0;i[ae>>0]=1;if(w){Q=w+4|0;Rl(k[Q>>2]|0);k[Q>>2]=0;k[w+12>>2]=0}Jg(he);z=I;P=g;break}case 143:{Q=k[(k[Td>>2]|0)+(k[f+(g*20|0)+4>>2]<<4)+4>>2]|0;E=k[Q+4>>2]|0;k[E+4>>2]=k[Q>>2];if(!(i[E+17>>0]|0)){b=d;d=e;n=I;ee=1157;break d}B=E+44|0;D=k[B>>2]|0;x=E+12|0;z=k[(k[x>>2]|0)+56>>2]|0;z=l[z+37>>0]<<16|l[z+36>>0]<<24|l[z+38>>0]<<8|l[z+39>>0];C=Jl(E,D,z)|0;if(D>>>0>>0){b=d;d=e;h=q;ee=1145;break c}if(!z){b=d;d=e;n=I;ee=1157;break d}F=E+8|0;w=k[F>>2]|0;do if(w){z=w;do{if(z){ee=1150;break}z=k[2]|0}while((z|0)!=0);if((ee|0)==1150){ee=0;n=Kl(z,0,0)|0;if(n)break;w=k[F>>2]|0}if(w){do{Q=w+72|0;i[Q>>0]=l[Q>>0]&251;w=k[w+8>>2]|0}while((w|0)!=0);ee=1154}else ee=1154}else ee=1154;while(0);if((ee|0)==1154){ee=0;n=Ll(E,C,D,0)|0;if(!n){n=Lg(k[(k[x>>2]|0)+68>>2]|0)|0;Q=k[(k[x>>2]|0)+56>>2]|0;P=k[B>>2]|0;i[Q+28>>0]=P>>>24;i[Q+29>>0]=P>>>16;i[Q+30>>0]=P>>>8;i[Q+31>>0]=P}}if((n|0)==101){b=d;d=e;n=I;ee=1157;break d}else{z=I;P=g}break}case 145:{b=k[f+(g*20|0)+12>>2]|0;if((b&255|0)==0?(k[Qb>>2]&16384|0)!=0:0){b=d;d=e;O=v;w=f;P=R;Q=S;n=I;e=g;break d}z=k[(k[Td>>2]|0)+(k[f+(g*20|0)+4>>2]<<4)+4>>2]|0;x=k[f+(g*20|0)+8>>2]|0;if(!(i[z+9>>0]|0)){b=d;d=e;O=v;w=f;P=R;Q=S;n=I;e=g;break d}w=b+1&255;o=z+4|0;k[(k[o>>2]|0)+4>>2]=k[z>>2];n=gl(z,x,w)|0;if(!n){b=d;d=e;n=I;e=g;ee=1166;break d}if((n&255|0)!=6){b=d;d=e;f=n;h=q;ee=1309;break c}k[ge>>2]=k[f+(g*20|0)+16>>2];ih(fe,he,42224,ge);z=I;P=g;break}case 144:{b=d;d=e;n=I;e=g;ee=1158;break d}case 146:{F=k[f+(g*20|0)+16>>2]|0;n=k[Wa>>2]|0;w=(n|0)>0;if(w?(k[Xa>>2]|0)==0:0){n=6;ee=1188}else ee=1179;j:do if((ee|0)==1179){ee=0;if(!F){b=d;d=e;O=v;w=f;P=R;Q=S;n=I;e=g;break d}b=F+8|0;o=(k[k[b>>2]>>2]|0)+56|0;if(k[o>>2]|0){if(w){z=k[Xa>>2]|0;x=0;do{if((k[z+(x<<2)>>2]|0)==(F|0)){n=0;ee=1188;break j}x=x+1|0}while((x|0)<(n|0))}n=Dn(he)|0;if(!n){n=qc[k[o>>2]&127](k[b>>2]|0)|0;if(!n){n=k[Wa>>2]|0;k[Wa>>2]=n+1;k[(k[Xa>>2]|0)+(n<<2)>>2]=F;n=F+12|0;k[n>>2]=(k[n>>2]|0)+1;n=0}}else ee=1188}else n=0}while(0);if((ee|0)==1188){ee=0;if(!F){z=I;P=g;break e}b=F+8|0}Rm(a,k[b>>2]|0);z=I;P=g;break}case 147:{Q=Hd+0|0;C=Q+40|0;do{k[Q>>2]=0;Q=Q+4|0}while((Q|0)<(C|0));k[Ya>>2]=he;b=dh(Hd,v+((k[f+(g*20|0)+8>>2]|0)*40|0)|0)|0;n=Xg(Hd,1)|0;k:do if(n){w=di(he,n,k[(k[Td>>2]|0)+(k[f+(g*20|0)+4>>2]<<4)>>2]|0)|0;b=k[k[w+56>>2]>>2]|0;n=gn($a,b,Tc)|0;if((n|0)!=0?(Lc=k[n+8>>2]|0,(Lc|0)!=0):0){b=En(he,w,Lc,k[(k[Lc>>2]|0)+4>>2]|0,fe)|0;if(b)break;w=w+60|0;b=k[w>>2]|0;if(!b){b=0;break}while(1){if((k[b>>2]|0)==(he|0))break;b=k[b+24>>2]|0;if(!b){b=0;break k}}b=Dn(he)|0;if(b)break;b=k[w>>2]|0;l:do if(!b)b=0;else while(1){if((k[b>>2]|0)==(he|0))break l;b=k[b+24>>2]|0;if(!b){b=0;break}}while(0);Q=k[Wa>>2]|0;k[Wa>>2]=Q+1;k[(k[Xa>>2]|0)+(Q<<2)>>2]=b;b=b+12|0;k[b>>2]=(k[b>>2]|0)+1;b=0;break}k[ge>>2]=b;b=zh(he,28320,ge)|0;k[fe>>2]=b;b=1}while(0);if((j[Za>>1]&9312)==0&(k[_a>>2]|0)==0){z=I;P=g;n=b}else{Vg(Hd);z=I;P=g;n=b}break}case 148:{k[aa>>2]=(k[aa>>2]|0)+1;b=di(he,k[f+(g*20|0)+16>>2]|0,k[(k[Td>>2]|0)+(k[f+(g*20|0)+4>>2]<<4)>>2]|0)|0;m:do if((b|0)!=0?(Mc=b+60|0,Nc=k[Mc>>2]|0,(Nc|0)!=0):0){n=Nc;do{if((k[(k[n+8>>2]|0)+4>>2]|0)>0){n=6;break m}n=k[n+24>>2]|0}while((n|0)!=0);b=Tk(he,b)|0;o=b+8|0;n=qc[k[(k[k[b+4>>2]>>2]|0)+20>>2]&127](k[o>>2]|0)|0;if(!n){k[o>>2]=0;k[Mc>>2]=0;Fn(b);n=0}}else n=0;while(0);k[aa>>2]=(k[aa>>2]|0)+-1;z=I;P=g;break}case 149:{b=d;d=e;n=I;e=g;ee=1213;break d}case 150:{b=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;z=k[f+(g*20|0)+12>>2]|0;x=v+(z*40|0)|0;if(i[b+25>>0]|0){b=d;d=e;n=I;e=g;ee=1226;break d}Q=b+32|0;n=k[k[Q>>2]>>2]|0;P=k[n>>2]|0;k[Fd+0>>2]=0;k[Fd+4>>2]=0;k[Fd+8>>2]=0;k[Fd+12>>2]=0;k[Fd+16>>2]=0;k[Fd+20>>2]=0;k[Fd+24>>2]=0;k[Fd>>2]=x;w=v+(z*40|0)+8|0;j[w>>1]=m[w>>1]&48640|1;Q=fc[k[P+44>>2]&63](k[Q>>2]|0,Fd,k[f+(g*20|0)+8>>2]|0)|0;Rm(a,n);n=k[ab>>2]|0;n=(n|0)==0?Q:n;bm(x,ub)|0;w=m[w>>1]|0;if(w&18){b=k[v+(z*40|0)+12>>2]|0;if(w&16384)b=(k[x>>2]|0)+b|0;if((b|0)>(k[(k[v+(z*40|0)+32>>2]|0)+88>>2]|0)){b=d;d=e;h=q;ee=1316;break c}else{z=I;P=g}}else{z=I;P=g}break}case 14:{x=k[f+(g*20|0)+12>>2]|0;z=x+1|0;C=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;F=k[C+32>>2]|0;E=k[F>>2]|0;D=k[E>>2]|0;B=k[v+(z*40|0)>>2]|0;x=k[v+(x*40|0)>>2]|0;w=k[yb>>2]|0;if((B|0)>0){b=0;do{Q=b;b=b+1|0;k[w+(Q<<2)>>2]=v+((b+z|0)*40|0)}while((b|0)!=(B|0))}n=yc[k[D+32>>2]&31](F,x,k[f+(g*20|0)+16>>2]|0,B,w)|0;Rm(a,E);if((n|0)==0?(qc[k[D+40>>2]&127](F)|0)!=0:0)g=(k[f+(g*20|0)+8>>2]|0)+-1|0;i[C+25>>0]=0;z=I;P=g;break}case 151:{b=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;if(i[b+25>>0]|0){b=d;d=e;O=v;w=f;P=R;Q=S;n=I;e=g;break d}b=b+32|0;o=k[b>>2]|0;Q=k[o>>2]|0;n=k[Q>>2]|0;o=qc[k[n+36>>2]&127](o)|0;Rm(a,Q);if((o|0)==0?(qc[k[n+40>>2]&127](k[b>>2]|0)|0)!=0:0){n=0;ee=19;break e}g=(k[f+(g*20|0)+8>>2]|0)+-1|0;n=o;ee=19;break}case 15:{C=f+(g*20|0)+16|0;b=k[(k[C>>2]|0)+8>>2]|0;if(!b){b=d;d=e;f=6;h=q;ee=1309;break c}w=k[b>>2]|0;if(!w){b=d;d=e;f=6;h=q;ee=1309;break c}E=k[f+(g*20|0)+8>>2]|0;B=w+52|0;z=k[B>>2]|0;if(!z){b=d;d=e;O=v;w=f;P=R;Q=S;n=I;e=g;break d}D=i[bb>>0]|0;F=k[yb>>2]|0;if((E|0)>0){z=0;x=v+((k[f+(g*20|0)+12>>2]|0)*40|0)|0;while(1){k[F+(z<<2)>>2]=x;z=z+1|0;if((z|0)==(E|0))break;else x=x+40|0}z=k[B>>2]|0}x=f+(g*20|0)+3|0;i[bb>>0]=i[x>>0]|0;n=uc[z&31](b,E,F,Ed)|0;i[bb>>0]=D;Rm(a,b);if(!n){if(k[f+(g*20|0)+4>>2]|0){c=Ed;e=k[c>>2]|0;c=k[c+4>>2]|0;Q=je;k[Q>>2]=e;k[Q+4>>2]=c}}else if((n&255|0)==19?(i[(k[C>>2]|0)+16>>0]|0)!=0:0){b=i[x>>0]|0;if(b<<24>>24==5)b=2;else if(b<<24>>24==4){b=d;d=e;O=v;w=f;P=R;Q=S;n=I;e=g;break d}i[be>>0]=b;z=I;P=g;break e}k[rb>>2]=(k[rb>>2]|0)+1;z=I;P=g;break}case 152:{b=k[(k[f+(g*20|0)+16>>2]|0)+8>>2]|0;n=k[f+(g*20|0)+4>>2]|0;o=v+(n*40|0)|0;if(((j[v+(n*40|0)+8>>1]&2)!=0?(i[v+(n*40|0)+10>>0]|0)!=1:0)?(Sd=Gn(o,1)|0,(Sd|0)!=0):0){b=d;d=e;f=Sd;h=q;ee=1309;break c}n=wc[k[(k[b>>2]|0)+76>>2]&127](b,k[v+(n*40|0)+16>>2]|0)|0;Rm(a,b);j[Ud>>1]=j[Ud>>1]&-9;z=I;P=g;break}case 153:{b=d;d=e;n=I;e=g;ee=1257;break d}case 155:{b=d;d=e;ee=1264;break d}case 154:{b=d;d=e;F=I;e=g;ee=1258;break d}default:{b=d;d=e;O=v;w=f;P=R;Q=S;n=I;e=g;break d}}while(0);n:do if((ee|0)==57){ee=0;w=I+8|0;j[w>>1]=2562;k[I+16>>2]=o;k[I+12>>2]=b;i[I+10>>0]=Gc;if((i[f+(g*20|0)+3>>0]|0)!=0?(Q=v+((k[f+(g*20|0)+12>>2]|0)*40|0)|0,!((k[Q>>2]|0)==0&(k[Q+4>>2]|0)==0)):0){j[w>>1]=2576;z=I;P=g}else{z=I;P=g}}else if((ee|0)==536){if(j[Ud>>1]&8){b=d;d=e;f=516;h=q;ee=1309;break c}z=k[f+(g*20|0)+8>>2]|0;E=k[f+(g*20|0)+12>>2]|0;b=k[Td>>2]|0;D=k[b+(E<<4)+4>>2]|0;if(F<<24>>24==55){b=i[(k[b+(E<<4)+12>>2]|0)+76>>0]|0;if((b&255)<(l[Jb>>0]|0)){i[Jb>>0]=b;F=1}else F=1}else F=0;w=f+(g*20|0)+3|0;if(i[w>>0]&4){Q=v+(z*40|0)|0;b=_g(Q)|0;k[Q>>2]=b;k[Q+4>>2]=L;Q=v+(z*40|0)+8|0;j[Q>>1]=m[Q>>1]&48640|4;if((b|0)<2){b=d;d=e;f=q;ee=542;break c}else B=b}else B=z;n=f+(g*20|0)+1|0;z=i[n>>0]|0;if(z<<24>>24==-6){x=k[f+(g*20|0)+16>>2]|0;z=(m[x+8>>1]|0)+(m[x+6>>1]|0)|0}else if(z<<24>>24==-14){z=k[f+(g*20|0)+16>>2]|0;x=0}else{z=0;x=0}b=Cm(a,k[f+(g*20|0)+4>>2]|0,z,E,1)|0;if(!b){u=ce;v=fe;b=d;d=q;ee=1317;break a}i[b+25>>0]=1;Q=b+27|0;i[Q>>0]=i[Q>>0]|8;k[b+28>>2]=B;ee=Dm(D,B,F,x,k[b>>2]|0)|0;k[b+8>>2]=x;i[Q>>0]=((i[n>>0]|0)!=-6&1)<<2&255|i[Q>>0]&-5;n=ee;ee=548}else if((ee|0)==715){ee=0;G=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;x=k[G+56>>2]|0;do if(!x){n=k[G>>2]|0;b=vm(n)|0;if(!b)if(!(i[n+73>>0]|0)){w=1;b=0}else{w=0;b=_m(n)|0}else w=1;i[G+26>>0]=0;k[G+60>>2]=0;i[G+25>>0]=w;if(!w){z=I;P=g;n=b;break n}}else{do if(!(i[x+56>>0]|0)){b=x+36|0;if(!(k[b>>2]|0)){b=0;ee=756}else{b=Sm(x+64|0,b)|0;ee=755}}else{b=Tm(x)|0;if(!b){Q=x+59|0;o:do if(!(i[Q>>0]|0)){n=0;b=0}else{H=0;w=0;p:while(1){P=x+(H<<6)+64|0;k[ge>>2]=0;O=x+(H<<6)+92|0;z=k[O>>2]|0;F=((z|0)<0)<<31>>31;do if((z|0)>16){E=16;D=0;B=0;while(1){E=nw(E|0,D|0,4)|0;D=L;C=B+1|0;if(!((D|0)<(F|0)|(D|0)==(F|0)&E>>>0>>0)){D=B;break}else B=C}N=Pd;k[N>>2]=0;k[N+4>>2]=0;if((z|0)<17){ee=726;break}n=Vm(16)|0;k[ge>>2]=n;F=(n|0)==0;E=k[O>>2]|0;if(!((E|0)>0&(F^1))){b=F?7:0;break}K=(D|0)>0;N=0;M=0;do{k[nd>>2]=0;b=E-N|0;b=Um(P,(b|0)<16?b:16,Pd,nd)|0;if(b){ee=747;break p}b=Wm(P,k[nd>>2]|0,kd)|0;do if(K){E=1;F=1;do{F=F<<4;E=E+1|0}while((E|0)!=(C|0));if(!b){J=1;E=n}else{F=k[kd>>2]|0;ee=743;break}while(1){o=(k[E+12>>2]|0)+((((M|0)/(F|0)|0|0)%16|0)*56|0)+48|0;E=k[o>>2]|0;if(!E){E=Vm(16)|0;if(!E){b=7;ee=738;break}b=Wm(P,E,o)|0;if(b){ee=738;break}E=k[o>>2]|0}E=k[E+4>>2]|0;J=J+1|0;if((J|0)>=(C|0)){ee=740;break}else F=(F|0)/16|0}if((ee|0)==738){F=k[kd>>2]|0;ee=743;break}else if((ee|0)==740){F=k[kd>>2]|0;ee=742;break}}else{F=k[kd>>2]|0;if(!b){E=n;ee=742}else ee=743}while(0);if((ee|0)==742){ee=0;k[(k[E+12>>2]|0)+(((M|0)%16|0)*56|0)+48>>2]=F;b=0}else if((ee|0)==743){ee=0;Xm(F)}M=M+1|0;N=N+16|0;E=k[O>>2]|0}while((N|0)<(E|0)&(b|0)==0)}else{ee=Pd;k[ee>>2]=0;k[ee+4>>2]=0;ee=726}while(0);if((ee|0)==726){ee=0;b=Um(P,z,Pd,ge)|0;n=k[ge>>2]|0}H=H+1|0;if(b){ee=746;break}if((H|0)>=(l[Q>>0]|0)){b=0;break o}else w=n}if((ee|0)==746)Ym(n);else if((ee|0)==747)Ym(n);Ym(w);n=0}while(0);if(!b){b=Zm(x+64|0,n)|0;k[x+20>>2]=n;if(!b){b=0;ee=755;break}else n=0}Ym(n);ee=755}else ee=756}while(0);if((ee|0)==755){ee=0;i[G+25>>0]=0;z=I;P=g;n=b;break n}else if((ee|0)==756){ee=0;i[G+25>>0]=1;break}}while(0);z=I;P=(k[f+(g*20|0)+8>>2]|0)+-1|0;n=b}else if((ee|0)==765){n=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;k[Cd>>2]=k[f+(g*20|0)+12>>2];b=n;n=wc[k[f+(g*20|0)+16>>2]&127](k[n>>2]|0,Cd)|0;ee=766}while(0);do if((ee|0)==548){ee=0;i[(k[b>>2]|0)+74>>0]=l[w>>0]&3;z=I;P=g}else if((ee|0)==766){k[b+60>>2]=0;b=b+25|0;if(!(k[Cd>>2]|0)){i[b>>0]=0;ee=(k[f+(g*20|0)+8>>2]|0)+-1|0;g=a+(l[f+(g*20|0)+3>>0]<<2)+108|0;k[g>>2]=(k[g>>2]|0)+1;g=ee;ee=19;break}else{i[b>>0]=1;ee=19;break}}while(0);if((ee|0)==19){ee=0;if(k[zc>>2]|0){h=fe;b=d;d=q;break b}b=k[Zd>>2]|0;if(!((b|0)==0|d>>>0>>0)){u=k[sc>>2]|0;if(!(qc[b&127](k[Vd>>2]|0)|0)){u=u+d-((d>>>0)%(u>>>0)|0)|0;z=I;P=g}else{b=d;f=9;d=q;ee=1311;break a}}else{z=I;P=g}}g=P+1|0;if(!n){b=d;n=z}else{b=d;f=n;d=q;ee=1311;break a}}q:switch(ee|0){case 22:{ee=0;O=k[f+(g*20|0)+4>>2]|0;j[v+(O*40|0)+8>>1]=4;O=v+(O*40|0)|0;k[O>>2]=g;k[O+4>>2]=((g|0)<0)<<31>>31;O=v;w=f;P=R;Q=S;e=(k[f+(g*20|0)+8>>2]|0)+-1|0;break}case 23:{ee=0;O=k[f+(g*20|0)+4>>2]|0;e=k[v+(O*40|0)>>2]|0;j[v+(O*40|0)+8>>1]=128;O=v;w=f;P=R;Q=S;break}case 24:{ee=0;e=k[f+(g*20|0)+4>>2]|0;n=v+(e*40|0)|0;w=(k[f+(g*20|0)+12>>2]|0)+-1|0;O=n;k[O>>2]=w;k[O+4>>2]=((w|0)<0)<<31>>31;j[v+(e*40|0)+8>>1]=4;e=k[f+(g*20|0)+8>>2]|0;O=v;w=f;P=R;Q=S;e=(e|0)==0?g:e+-1|0;break}case 25:{ee=0;O=k[f+(g*20|0)+4>>2]|0;e=(k[f+((k[v+(O*40|0)>>2]|0)*20|0)+8>>2]|0)+-1|0;j[v+(O*40|0)+8>>1]=128;O=v;w=f;P=R;Q=S;break}case 26:{ee=0;O=k[f+(g*20|0)+4>>2]|0;j[v+(O*40|0)+8>>1]=4;O=v+(O*40|0)|0;e=k[O>>2]|0;k[O>>2]=g;k[O+4>>2]=((g|0)<0)<<31>>31;O=v;w=f;P=R;Q=S;break}case 27:{ee=0;if(!(j[v+((k[f+(e*20|0)+12>>2]|0)*40|0)+8>>1]&1)){O=v;w=f;P=R;Q=S}else ee=28;break}case 44:{ee=0;w=k[f+(e*20|0)+4>>2]|0;O=n;k[O>>2]=w;k[O+4>>2]=((w|0)<0)<<31>>31;O=v;w=f;P=R;Q=S;break}case 45:{ee=0;P=k[f+(e*20|0)+16>>2]|0;w=k[P+4>>2]|0;O=n;k[O>>2]=k[P>>2];k[O+4>>2]=w;O=v;w=f;P=R;Q=S;break}case 46:{ee=0;j[n+8>>1]=8;p[n>>3]=+p[k[f+(e*20|0)+16>>2]>>3];O=v;w=f;P=R;Q=S;break}case 60:{ee=0;F=(k[f+(e*20|0)+12>>2]|0)-(k[f+(e*20|0)+8>>2]|0)|0;w=(k[f+(e*20|0)+4>>2]|0)!=0?257:1;j[n+8>>1]=w;if((F|0)>0){o=F;x=n;do{g=x+48|0;x=x+40|0;if(!(j[g>>1]&9312))j[g>>1]=1;else Ag(x);j[g>>1]=w;o=o+-1|0}while((o|0)>0);O=v;w=f;P=R;Q=S;n=n+(F*40|0)|0}else{O=v;w=f;P=R;Q=S}break}case 65:{ee=0;n=k[f+(e*20|0)+4>>2]|0;O=v+(n*40|0)+8|0;j[O>>1]=m[O>>1]&65406|1;O=v;w=f;P=R;Q=S;n=v+(n*40|0)|0;break}case 66:{ee=0;ah(n,k[f+(e*20|0)+16>>2]|0,k[f+(e*20|0)+4>>2]|0,0,0)|0;i[n+10>>0]=Gc;O=v;w=f;P=R;Q=S;break}case 67:{ee=0;z=(k[f+(e*20|0)+4>>2]|0)+-1|0;x=k[xb>>2]|0;o=x+(z*40|0)|0;g=m[x+(z*40|0)+8>>1]|0;if(g&18){w=k[x+(z*40|0)+12>>2]|0;if(g&16384)w=(k[o>>2]|0)+w|0;if((w|0)>(k[(k[x+(z*40|0)+32>>2]|0)+88>>2]|0)){g=e;h=q;ee=1316;break c}}cm(n,o,2048);O=v;w=f;P=R;Q=S;break}case 72:{ee=0;g=k[f+(e*20|0)+12>>2]|0;o=k[f+(e*20|0)+8>>2]|0;F=g+o|0;n=v+((k[f+(e*20|0)+4>>2]|0)*40|0)|0;o=v+(o*40|0)|0;while(1){dm(o,n);g=g+-1|0;if(!g)break;else{n=n+40|0;o=o+40|0}}O=v;w=f;P=R;Q=S;n=v+(F*40|0)|0;break}case 74:{ee=0;e=k[f+(g*20|0)+12>>2]|0;n=v+((k[f+(g*20|0)+4>>2]|0)*40|0)|0;F=v+((k[f+(g*20|0)+8>>2]|0)*40|0)|0;while(1){cm(F,n,4096);if((j[F+8>>1]&4096)!=0?(_l(F)|0)!=0:0){u=ce;v=fe;e=d;d=q;ee=1317;break a}if(!e){O=v;w=f;P=R;Q=S;n=F;e=g;break q}e=e+-1|0;n=n+40|0;F=F+40|0}}case 79:{ee=0;n=v+((k[f+(e*20|0)+8>>2]|0)*40|0)|0;cm(n,v+((k[f+(e*20|0)+4>>2]|0)*40|0)|0,4096);O=v;w=f;P=R;Q=S;break}case 94:{ee=0;G=k[f+(g*20|0)+4>>2]|0;F=v+(G*40|0)|0;H=k[f+(g*20|0)+8>>2]|0;E=v+(H*40|0)|0;I=k[f+(g*20|0)+12>>2]|0;n=v+(I*40|0)|0;D=v+(G*40|0)+8|0;B=j[D>>1]|0;C=v+(H*40|0)+8|0;z=j[C>>1]|0;if((z|B)&1){e=v+(I*40|0)+8|0;if(!(j[e>>1]&9312)){j[e>>1]=1;O=v;w=f;P=R;Q=S;e=g;break}else{Ag(n);O=v;w=f;P=R;Q=S;e=g;break}}if(B&16384){if(Wg(F)|0){u=ce;v=fe;e=d;d=q;ee=1317;break a}z=j[C>>1]|0}if((z&16384)!=0?(Wg(E)|0)!=0:0){u=ce;v=fe;e=d;d=q;ee=1317;break a}if((j[D>>1]&18)==0?(gm(F,Gc,0)|0)!=0:0){u=ce;v=fe;e=d;d=q;ee=1317;break a}if((j[C>>1]&18)==0?(gm(E,Gc,0)|0)!=0:0){u=ce;v=fe;e=d;d=q;ee=1317;break a}B=v+(G*40|0)+12|0;x=v+(H*40|0)+12|0;w=(k[x>>2]|0)+(k[B>>2]|0)|0;if((w|0)>(k[wb>>2]|0)){h=q;ee=1316;break c}e=(I|0)==(H|0);if(jh(n,w+2|0,e&1)|0){u=ce;v=fe;e=d;d=q;ee=1317;break a}o=v+(I*40|0)+8|0;j[o>>1]=m[o>>1]&48640|2;z=v+(I*40|0)+16|0;if(!e)pw(k[z>>2]|0,k[v+(H*40|0)+16>>2]|0,k[x>>2]|0)|0;pw((k[z>>2]|0)+(k[x>>2]|0)|0,k[v+(G*40|0)+16>>2]|0,k[B>>2]|0)|0;i[(k[z>>2]|0)+w>>0]=0;i[(k[z>>2]|0)+(w+1)>>0]=0;j[o>>1]=m[o>>1]|512;k[v+(I*40|0)+12>>2]=w;i[v+(I*40|0)+10>>0]=Gc;O=v;w=f;P=R;Q=S;e=g;break}case 112:{ee=0;J=k[f+(e*20|0)+4>>2]|0;K=v+(J*40|0)|0;O=hm(K)|0;I=k[f+(e*20|0)+8>>2]|0;M=v+(I*40|0)|0;P=hm(M)|0;Q=k[f+(e*20|0)+12>>2]|0;n=v+(Q*40|0)|0;r:do if(!((j[v+(I*40|0)+8>>1]|j[v+(J*40|0)+8>>1])&1)){s:do if(!((O&4&P)<<16>>16))I=0;else{g=K;z=k[g>>2]|0;g=k[g+4>>2]|0;C=M;w=k[C>>2]|0;C=k[C+4>>2]|0;F=l[N>>0]|0;t:do if((F|0)==89){if((g|0)>-1|(g|0)==-1&z>>>0>4294967295){J=iw(-1,2147483647,w|0,C|0)|0;I=L;if(((C|0)>0|(C|0)==0&w>>>0>0)&((I|0)<(g|0)|(I|0)==(g|0)&J>>>0>>0)){I=1;break s}}else if((C|0)<0?(I=iw(1,-2147483648,w|0,C|0)|0,H=L,J=ow(z|0,g|0,1,0)|0,o=L,(H|0)>(o|0)|(H|0)==(o|0)&I>>>0>J>>>0):0){I=1;break s}w=ow(w|0,C|0,z|0,g|0)|0;g=L}else if((F|0)==91){I=vw(w|0,C|0,0,1)|0;o=L;E=ww(w|0,C|0,0,1)|0;F=L;H=vw(z|0,g|0,0,1)|0;x=L;G=ww(z|0,g|0,0,1)|0;J=L;D=ow(w|0,C|0,-1,0)|0;le=L;B=ow(z|0,g|0,-1,0)|0;me=L;B=me>>>0<1|(me|0)==1&B>>>0<4294967295;do if(le>>>0<1|(le|0)==1&D>>>0<4294967295)if(B){w=xw(w|0,C|0,z|0,g|0)|0;g=L;break t}else{D=xw(H|0,x|0,E|0,F|0)|0;C=L;break}else{if(!B){I=1;break s}D=xw(G|0,J|0,I|0,o|0)|0;C=L}while(0);I=ow(D|0,C|0,-2147483648,0)|0;o=L;if(o>>>0>0|(o|0)==0&I>>>0>4294967295){I=1;break s}F=xw(G|0,J|0,E|0,F|0)|0;E=L;if((E|0)>-1|(E|0)==-1&F>>>0>4294967295){J=iw(-1,2147483647,0,D|0)|0;I=L;if(((C|0)>0|(C|0)==0&D>>>0>0)&((I|0)<(E|0)|(I|0)==(E|0)&J>>>0>>0)){I=1;break s}}else if((C|0)<0?(I=iw(1,-2147483648,0,D|0)|0,g=L,J=ow(F|0,E|0,1,0)|0,o=L,(g|0)>(o|0)|(g|0)==(o|0)&I>>>0>J>>>0):0){I=1;break s}w=ow(0,D|0,F|0,E|0)|0;g=L}else if((F|0)==90){if((z|0)==0&(g|0)==-2147483648){if((C|0)>-1|(C|0)==-1&w>>>0>4294967295){I=1;break s}g=C^-2147483648;break}if((g|0)<0|(g|0)==0&z>>>0<1){J=iw(0,0,z|0,g|0)|0;o=L;I=iw(-1,2147483647,w|0,C|0)|0;H=L;if(((C|0)>0|(C|0)==0&w>>>0>0)&((H|0)<(o|0)|(H|0)==(o|0)&I>>>0>>0)){I=1;break s}}else if((C|0)<0?(I=iw(1,-2147483648,w|0,C|0)|0,H=L,J=iw(1,0,z|0,g|0)|0,o=L,(H|0)>(o|0)|(H|0)==(o|0)&I>>>0>J>>>0):0){I=1;break s}w=iw(w|0,C|0,z|0,g|0)|0;g=L}else if((F|0)==92){if((z|0)==0&(g|0)==0)break r;if((z|0)==-1&(g|0)==-1&((w|0)==0&(C|0)==-2147483648)){I=1;break s}w=vw(w|0,C|0,z|0,g|0)|0;g=L}else{if((z|0)==-1){if((g|0)==-1){z=1;g=0}}else if((z|0)==0?(g|0)==0:0)break r;w=ww(w|0,C|0,z|0,g|0)|0;g=L}while(0);O=n;k[O>>2]=w;k[O+4>>2]=g;O=v+(Q*40|0)+8|0;j[O>>1]=m[O>>1]&48640|4;O=v;w=f;P=R;Q=S;break q}while(0);A=+Zg(K);y=+Zg(M);z=l[N>>0]|0;if((z|0)==89)y=A+y;else if((z|0)==90)y=y-A;else if((z|0)==91)y=A*y;else if((z|0)==92){if(A==0.0)break;y=y/A}else{B=~~A>>>0;z=+W(A)>=1.0?(A>0.0?~~+ia(+V(A/4294967296.0),4294967295.0)>>>0:~~+ga((A-+(~~A>>>0))/4294967296.0)>>>0):0;E=~~y>>>0;F=+W(y)>=1.0?(y>0.0?~~+ia(+V(y/4294967296.0),4294967295.0)>>>0:~~+ga((y-+(~~y>>>0))/4294967296.0)>>>0):0;if(!B){if(!z)break}else if((B|0)==-1?(z|0)==-1:0){B=1;z=0}N=ww(E|0,F|0,B|0,z|0)|0;y=+(N>>>0)+4294967296.0*+(L|0)}p[ge>>3]=y;p[Pd>>3]=+p[ge>>3];if(!(+p[ge>>3]!=+p[Pd>>3])){p[n>>3]=y;Q=v+(Q*40|0)+8|0;j[Q>>1]=m[Q>>1]&48640|8;if(((P|O)&8)!=0|I<<24>>24!=0){O=v;w=f;P=R;Q=S;break q}im(n);O=v;w=f;P=R;Q=S;break q}}while(0);g=v+(Q*40|0)+8|0;if(!(j[g>>1]&9312)){j[g>>1]=1;O=v;w=f;P=R;Q=S;break}else{Ag(n);O=v;w=f;P=R;Q=S;break}}case 166:{ee=0;g=k[f+(e*20|0)+4>>2]|0;if(g){n=v+(g*40|0)|0;g=v+(g*40|0)+8|0;if(!(j[g>>1]&9312)){O=n;k[O>>2]=0;k[O+4>>2]=0;j[g>>1]=4;O=v;w=f;P=R;Q=S;n=F;break}else{ch(n,0,0);O=v;w=f;P=R;Q=S;n=F;break}}else{O=v;w=f;P=R;Q=S;n=F}break}case 184:{ee=0;z=k[f+(e*20|0)+4>>2]|0;w=k[f+(e*20|0)+8>>2]|0;o=k[f+(e*20|0)+12>>2]|0;n=v+(o*40|0)|0;if((j[v+(w*40|0)+8>>1]|j[v+(z*40|0)+8>>1])&1){g=v+(o*40|0)+8|0;if(!(j[g>>1]&9312)){j[g>>1]=1;O=v;w=f;P=R;Q=S;break}else{Ag(n);O=v;w=f;P=R;Q=S;break}}x=_g(v+(w*40|0)|0)|0;I=L;F=_g(v+(z*40|0)|0)|0;E=L;w=i[D>>0]|0;z=w&255;do if(w<<24>>24==86){x=F|x;g=E|I}else if(w<<24>>24!=85)if(!((F|0)==0&(E|0)==0)){if((E|0)<0){w=175-z&255;z=iw(0,0,F|0,E|0)|0;if((E|0)>-1|(E|0)==-1&F>>>0>4294967232){E=L;ee=194}}else{z=F;ee=194}if((ee|0)==194){ee=0;if(!((E|0)>0|(E|0)==0&z>>>0>63)){if(w<<24>>24==87){x=nw(x|0,I|0,z|0)|0;g=L;break}x=rw(x|0,I|0,z|0)|0;g=L;if((I|0)>=0)break;Q=iw(64,0,z|0,E|0)|0;Q=nw(-1,-1,Q|0)|0;x=Q|x;g=L|g;break}}if((I|0)>-1|(I|0)==-1&x>>>0>4294967295){x=0;g=0}else{g=(w<<24>>24!=87)<<31>>31;x=g;g=((g|0)<0)<<31>>31}}else g=I;else{x=F&x;g=E&I}while(0);O=n;k[O>>2]=x;k[O+4>>2]=g;O=v+(o*40|0)+8|0;j[O>>1]=m[O>>1]&48640|4;O=v;w=f;P=R;Q=S;break}case 202:{ee=0;w=k[f+(e*20|0)+4>>2]|0;O=v+(w*40|0)|0;P=_g(O)|0;w=v+(w*40|0)+8|0;j[w>>1]=m[w>>1]&48640|4;w=k[f+(e*20|0)+8>>2]|0;w=ow(P|0,L|0,w|0,((w|0)<0)<<31>>31|0)|0;k[O>>2]=w;k[O+4>>2]=L;O=v;w=f;P=R;Q=S;break}case 203:{ee=0;n=k[f+(e*20|0)+4>>2]|0;w=v+(n*40|0)+8|0;g=j[w>>1]|0;if(!(g&4)){km(v+(n*40|0)|0,67,Gc);g=j[w>>1]|0;if(!(g&4)){B=k[f+(e*20|0)+8>>2]|0;if(!B){g=e;h=20;ee=1318;break c}O=v;w=f;P=R;Q=S;n=F;e=B+-1|0;break}}j[w>>1]=g&48640|4;O=v;w=f;P=R;Q=S;n=F;break}case 208:{ee=0;g=k[f+(e*20|0)+4>>2]|0;n=v+(g*40|0)+8|0;if(!(j[n>>1]&4)){O=v;w=f;P=R;Q=S;n=F}else{O=v+(g*40|0)|0;y=+Zg(O);p[O>>3]=y;j[n>>1]=m[n>>1]&48640|8;O=v;w=f;P=R;Q=S;n=F}break}case 213:{ee=0;K=k[f+(g*20|0)+4>>2]|0;I=v+(K*40|0)|0;G=k[f+(g*20|0)+12>>2]|0;o=v+(G*40|0)|0;K=v+(K*40|0)+8|0;H=j[K>>1]|0;G=v+(G*40|0)+8|0;J=j[G>>1]|0;D=H&65535;w=J&65535;C=f+(g*20|0)+3|0;F=l[C>>0]|0;do if(!((J|H)&1)){F=F&71;if(F>>>0>66){if((D&14|0)==2){wh(I,0);x=j[G>>1]|0}else x=J;if((x&14)==2){wh(o,0);F=H;B=J}else{F=H;B=J}}else if((F|0)==66){if((D&2|0)!=0|(D&12|0)==0){E=J;F=H}else{gm(I,Gc,1)|0;E=j[G>>1]|0;F=(m[K>>1]&65024|D&511)&65535}Q=E&65535;if((Q&2|0)!=0|(Q&12|0)==0)B=J;else{gm(o,Gc,1)|0;B=(m[G>>1]&65024|w&511)&65535}}else{F=H;B=J}if(j[K>>1]&16384){Wg(I)|0;F=F&49151}if(j[G>>1]&16384){Wg(o)|0;B=B&49151}if(i[ce>>0]|0){u=ce;v=fe;e=d;d=q;ee=1317;break a}Q=mm(o,I,k[f+(g*20|0)+16>>2]|0)|0;E=i[z>>0]|0;e=g;z=Q}else{if(F&128){F=H;B=J;e=g;z=(H&1&J)<<16>>16!=0&(w&256|0)==0&1^1;break}if(F&32){n=k[f+(g*20|0)+8>>2]|0;O=v+(n*40|0)+8|0;j[O>>1]=m[O>>1]&48640|1;O=v;w=f;P=R;Q=S;n=v+(n*40|0)|0;e=g;break q}if(!(F&16)){O=v;w=f;P=R;Q=S;e=g;break q}O=v;w=f;P=R;Q=S;e=(k[f+(g*20|0)+8>>2]|0)+-1|0;break q}while(0);switch(E&255|0){case 79:{z=(z|0)==0&1;break}case 78:{z=(z|0)!=0&1;break}case 82:{z=z>>>31;break}case 81:{z=(z|0)<1&1;break}case 80:{z=(z|0)>0&1;break}default:z=z>>>31^1}if(!(i[C>>0]&32)){if(z)e=(k[f+(e*20|0)+8>>2]|0)+-1|0}else{Q=k[f+(e*20|0)+8>>2]|0;n=v+(Q*40|0)|0;Q=v+(Q*40|0)+8|0;j[Q>>1]=m[Q>>1]&48640|4;Q=n;k[Q>>2]=z;k[Q+4>>2]=0}j[K>>1]=F;j[G>>1]=B;O=v;w=f;P=R;Q=S;break}case 248:{ee=0;O=v;w=f;P=k[f+(e*20|0)+16>>2]|0;Q=S;break}case 249:{ee=0;o=(i[f+(e*20|0)+3>>0]&1)==0?0:R;C=k[f+(e*20|0)+12>>2]|0;D=k[f+(e*20|0)+16>>2]|0;E=k[f+(e*20|0)+4>>2]|0;F=k[f+(e*20|0)+8>>2]|0;if((C|0)>0){w=(o|0)==0;g=D+16|0;B=0;while(1){if(w)x=B;else x=k[o+(B<<2)>>2]|0;z=i[(k[g>>2]|0)+B>>0]|0;x=mm(v+((x+E|0)*40|0)|0,v+((x+F|0)*40|0)|0,k[D+(B<<2)+20>>2]|0)|0;B=B+1|0;if(x)break;if((B|0)>=(C|0)){O=v;w=f;P=0;Q=0;break q}}O=v;w=f;P=0;Q=z<<24>>24==0?x:0-x|0}else{O=v;w=f;P=0;Q=S}break}case 256:{ee=0;if((S|0)<0){O=v;w=f;P=R;Q=S;e=(k[f+(g*20|0)+4>>2]|0)+-1|0;break}if(!S){O=v;w=f;P=R;Q=0;e=(k[f+(g*20|0)+8>>2]|0)+-1|0;break}else{O=v;w=f;P=R;Q=S;e=(k[f+(g*20|0)+12>>2]|0)+-1|0;break}}case 261:{ee=0;g=k[f+(e*20|0)+4>>2]|0;if(!(j[v+(g*40|0)+8>>1]&1)){n=_g(v+(g*40|0)|0)|0;n=(n|0)!=0|(L|0)!=0?3:0}else n=6;g=k[f+(e*20|0)+8>>2]|0;if(!(j[v+(g*40|0)+8>>1]&1)){g=_g(v+(g*40|0)|0)|0;g=((g|0)!=0|(L|0)!=0)&1}else g=2;g=i[((i[z>>0]|0)==72?41680:41696)+(g+n)>>0]|0;n=k[f+(e*20|0)+12>>2]|0;F=v+(n*40|0)|0;if(g<<24>>24==2){O=v+(n*40|0)+8|0;j[O>>1]=m[O>>1]&48640|1;O=v;w=f;P=R;Q=S;n=F;break}else{O=F;k[O>>2]=g&255;k[O+4>>2]=0;O=v+(n*40|0)+8|0;j[O>>1]=m[O>>1]&48640|4;O=v;w=f;P=R;Q=S;n=F;break}}case 268:{ee=0;g=k[f+(e*20|0)+4>>2]|0;n=k[f+(e*20|0)+8>>2]|0;F=v+(n*40|0)|0;n=v+(n*40|0)+8|0;if(!(j[n>>1]&9312))j[n>>1]=1;else Ag(F);if(!(j[v+(g*40|0)+8>>1]&1)){j[n>>1]=4;w=_g(v+(g*40|0)|0)|0;O=F;k[O>>2]=(w|0)==0&(L|0)==0&1;k[O+4>>2]=0;O=v;w=f;P=R;Q=S;n=F}else{O=v;w=f;P=R;Q=S;n=F}break}case 273:{ee=0;g=k[f+(e*20|0)+4>>2]|0;n=k[f+(e*20|0)+8>>2]|0;F=v+(n*40|0)|0;n=v+(n*40|0)+8|0;if(!(j[n>>1]&9312))j[n>>1]=1;else Ag(F);if(!(j[v+(g*40|0)+8>>1]&1)){j[n>>1]=4;w=_g(v+(g*40|0)|0)|0;O=F;k[O>>2]=~w;k[O+4>>2]=~L;O=v;w=f;P=R;Q=S;n=F}else{O=v;w=f;P=R;Q=S;n=F}break}case 278:{ee=0;g=(k[Eb>>2]|0)+(k[f+(e*20|0)+4>>2]|0)|0;if(!(i[g>>0]|0)){i[g>>0]=1;O=v;w=f;P=R;Q=S;break}else{O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0;break}}case 281:{ee=0;g=k[f+(e*20|0)+4>>2]|0;if(!(j[v+(g*40|0)+8>>1]&1)){g=+Zg(v+(g*40|0)|0)!=0.0;g=(g^(i[z>>0]|0)==46)&1}else g=k[f+(e*20|0)+12>>2]|0;if(!g){O=v;w=f;P=R;Q=S}else{O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}break}case 286:{ee=0;if(!(j[v+((k[f+(e*20|0)+4>>2]|0)*40|0)+8>>1]&1)){O=v;w=f;P=R;Q=S}else{O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}break}case 288:{ee=0;if(!(j[v+((k[f+(e*20|0)+4>>2]|0)*40|0)+8>>1]&1)){O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}else{O=v;w=f;P=R;Q=S}break}case 290:{ee=0;P=k[f+(g*20|0)+8>>2]|0;x=k[f+(g*20|0)+12>>2]|0;B=v+(x*40|0)|0;O=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;H=k[O+80>>2]|0;w=k[O>>2]|0;if(!(i[O+26>>0]|0)){if((w|0)!=0?(i[w+73>>0]|0)!=1:0){Qd=om(O)|0;ee=295}}else{Qd=nm(O)|0;ee=295}if((ee|0)==295?(ee=0,(Qd|0)!=0):0){h=Qd;ee=1318;break c}I=O+60|0;z=k[Xd>>2]|0;u:do if((k[I>>2]|0)==(z|0)){z=j[O+22>>1]|0;if((z&65535|0)>(P|0))ee=350;else{E=O+72|0;ee=318}}else{do if(i[O+25>>0]|0){if(!w){F=k[O+16>>2]|0;C=k[v+(F*40|0)+12>>2]|0;k[O+68>>2]=C;k[O+64>>2]=C;F=k[v+(F*40|0)+16>>2]|0;o=O+76|0;k[o>>2]=F;break}e=v+(x*40|0)+8|0;if(!(j[e>>1]&9312)){j[e>>1]=1;break u}else{Ag(B);break u}}else{if(!(i[O+27>>0]&4)){pm(w,qd);E=m[w+40>>1]|0;F=k[w+32>>2]|0;k[O+76>>2]=F;z=k[qd>>2]|0;k[O+64>>2]=z}else{z=O+64|0;qm(w,z);E=m[w+40>>1]|0;F=k[w+32>>2]|0;k[O+76>>2]=F;z=k[z>>2]|0}k[O+68>>2]=z>>>0>E>>>0?E:z;if(z>>>0>(k[wb>>2]|0)>>>0){h=q;ee=1316;break c}o=O+76|0;z=k[Xd>>2]|0;C=E}while(0);k[I>>2]=z;z=i[F>>0]|0;if(z<<24>>24>-1){D=z&255;k[cd>>2]=D;F=1}else{F=rm(F,cd)|0;D=k[cd>>2]|0}E=O+72|0;k[E>>2]=F&255;j[O+22>>1]=0;k[H>>2]=D;if(D>>>0>98307){h=q;ee=313;break c}if(D>>>0>(k[O+64>>2]|0)>>>0){h=q;ee=313;break c}if(C>>>0>>0){k[o>>2]=0;k[O+68>>2]=0;z=0;ee=318}else{z=0;ee=318}}while(0);do if((ee|0)==318){ee=0;F=k[E>>2]|0;D=k[H>>2]|0;if(F>>>0>>0){N=O+76|0;C=k[N>>2]|0;if(!C){Q=Gd+0|0;C=Q+40|0;do{k[Q>>2]=0;Q=Q+4|0}while((Q|0)<(C|0));F=sm(w,0,k[H>>2]|0,((l[O+27>>0]|0)>>>2&1^1)&255,Gd)|0;if(F){f=F;h=q;ee=1309;break c}z=O+22|0;M=z;z=j[z>>1]|0;F=k[E>>2]|0;D=k[H>>2]|0;K=k[Gb>>2]|0}else{M=O+22|0;K=C}o=z&65535;J=k[H+(o<<2)>>2]|0;k[cd>>2]=J;e=K+D|0;F=K+F|0;while(1){C=i[F>>0]|0;if(C<<24>>24>-1){I=C&255;k[Id>>2]=I;F=F+1|0}else{F=F+((rm(F,Id)|0)&255)|0;I=k[Id>>2]|0}k[O+(o<<2)+84>>2]=I;if(I>>>0>11)C=(I+-12|0)>>>1;else C=l[34336+I>>0]|0;I=J+C|0;k[cd>>2]=I;if(I>>>0>>0){F=I;C=o;ee=331;break}C=o+1|0;k[H+(C<<2)>>2]=I;if((o|0)<(P|0)&F>>>0>>0){J=I;o=C}else break}if((ee|0)==331){ee=0;I=F;F=K+(D+1)|0}j[M>>1]=C;k[E>>2]=F-K;if(!(k[N>>2]|0)){if(!((j[Hb>>1]&9312)==0&(k[Ib>>2]|0)==0))Vg(Gd);j[Hb>>1]=1}if(F>>>0>=e>>>0){if(F>>>0>e>>>0){h=q;ee=343;break c}if((I|0)==(k[O+64>>2]|0))z=I;else{h=q;ee=343;break c}}else z=k[O+64>>2]|0;if(I>>>0>z>>>0){h=q;ee=343;break c}z=j[M>>1]|0}if((z&65535|0)<=(P|0)){if((i[f+(g*20|0)+1>>0]|0)==-8){cm(B,k[f+(g*20|0)+16>>2]|0,2048);e=v+(x*40|0)+8|0;break}e=v+(x*40|0)+8|0;if(!(j[e>>1]&9312)){j[e>>1]=1;break}else{Ag(B);break}}else ee=350}while(0);if((ee|0)==350){ee=0;e=v+(x*40|0)+8|0;if(j[e>>1]&9312)Ag(B);F=k[O+(P<<2)+84>>2]|0;k[Id>>2]=F;do if((k[O+68>>2]|0)>>>0<(k[H+(P+1<<2)>>2]|0)>>>0){Q=i[f+(g*20|0)+3>>0]|0;if(!((Q&255)>63?F>>>0>11&(F&1|0)==0|Q<<24>>24<0:0)){if(F>>>0>11)z=(F+-12|0)>>>1;else z=l[34336+F>>0]|0;if(z){z=sm(w,k[H+(P<<2)>>2]|0,z,((l[O+27>>0]|0)>>>2&1^1)&255,B)|0;if(z){f=z;h=q;ee=1309;break c}tm(k[v+(x*40|0)+16>>2]|0,F,B)|0;j[e>>1]=m[e>>1]&61439;break}}tm(F>>>0<14?qd:0,F,B)|0}else tm((k[O+76>>2]|0)+(k[H+(P<<2)>>2]|0)|0,F,B)|0;while(0);i[v+(x*40|0)+10>>0]=Gc}w=m[e>>1]|0;if((w&4096|0)!=0?(vc=v+(x*40|0)+16|0,xc=k[vc>>2]|0,(xc|0)!=0):0){o=k[v+(x*40|0)+12>>2]|0;if(kh(B,o+2|0)|0){u=ce;v=fe;e=d;d=q;ee=1317;break a}pw(k[vc>>2]|0,xc|0,o|0)|0;i[(k[vc>>2]|0)+o>>0]=0;i[(k[vc>>2]|0)+(o+1)>>0]=0;j[e>>1]=w&18|512;O=v;w=f;P=R;Q=S;e=g}else{O=v;w=f;P=R;Q=S;e=g}break}case 368:{ee=0;o=k[f+(e*20|0)+16>>2]|0;g=i[o>>0]|0;if(!(g<<24>>24)){O=v;w=f;P=R;Q=S}else{w=v+((k[f+(e*20|0)+4>>2]|0)*40|0)|0;while(1){o=o+1|0;km(w,g,Gc);g=i[o>>0]|0;if(!(g<<24>>24)){O=v;w=f;P=R;Q=S;break}else w=w+40|0}}break}case 371:{ee=0;P=k[f+(g*20|0)+4>>2]|0;z=k[f+(g*20|0)+16>>2]|0;Q=v+(P*40|0)|0;P=v+((P+-1+(k[f+(g*20|0)+8>>2]|0)|0)*40|0)|0;x=i[Jb>>0]|0;O=k[f+(g*20|0)+12>>2]|0;n=v+(O*40|0)|0;if(z){w=i[z>>0]|0;e=Q;while(1){z=z+1|0;km(e,w,Gc);w=i[z>>0]|0;if(!(w<<24>>24))break;else e=e+40|0}}K=(x&255)>3;I=0;o=0;M=0;e=0;H=P;while(1){J=j[H+8>>1]|0;E=J&65535;v:do if(!(E&1)){do if(!(E&4)){if(E&8){F=7;ee=388;break v}F=k[H+12>>2]|0;if(E&16384)F=(k[H>>2]|0)+F|0;F=(F<<1)+12|E>>>1&1}else{E=H;F=k[E>>2]|0;E=k[E+4>>2]|0;D=jw(F|0,E|0,63)|0;D=D^F;C=L^E;if(C>>>0<0|(C|0)==0&D>>>0<128){if(!((F&1|0)==(F|0)&0==(E|0)&K)){F=1;ee=388;break v}F=D+8|0;break}if(C>>>0<0|(C|0)==0&D>>>0<32768){F=2;ee=388;break v}if(C>>>0<0|(C|0)==0&D>>>0<8388608){F=3;ee=388;break v}if(C>>>0<0|(C|0)==0&D>>>0<2147483648){F=4;ee=388;break v}F=C>>>0<32768|(C|0)==32768&D>>>0<0?5:6;ee=388;break v}while(0);k[H+28>>2]=F;if(F>>>0>11){E=F;F=(F+-12|0)>>>1}else ee=391}else{F=0;ee=388}while(0);if((ee|0)==388){k[H+28>>2]=F;ee=391}if((ee|0)==391){ee=0;E=F;F=l[34336+F>>0]|0}do if(J&16384)if((I|0)==0&(o|0)==0){J=k[H>>2]|0;F=F-J|0;J=J+e|0;break}else{Wg(H)|0;J=e;break}else J=e;while(0);I=ow(F|0,((F|0)<0)<<31>>31|0,I|0,o|0)|0;o=L;if(E>>>0<128)F=1;else{D=0;F=0;do{F=F+1|0;E=rw(E|0,D|0,7)|0;D=L}while(((E|0)!=0|(D|0)!=0)&(F|0)<9)}F=F+M|0;H=H+-40|0;if(H>>>0>>0){C=F;break}else{M=F;e=J}}if((C|0)<127)E=C+1|0;else{E=C;D=((C|0)<0)<<31>>31;F=0;do{F=F+1|0;E=rw(E|0,D|0,7)|0;D=L}while(((E|0)!=0|(D|0)!=0)&(F|0)<9);C=F+C|0;E=C;D=((C|0)<0)<<31>>31;z=0;do{z=z+1|0;E=rw(E|0,D|0,7)|0;D=L}while(((E|0)!=0|(D|0)!=0)&(z|0)<9);E=((F|0)<(z|0)&1)+C|0}F=((E|0)<0)<<31>>31;e=ow(E|0,F|0,I|0,o|0)|0;K=L;N=k[wb>>2]|0;M=((N|0)<0)<<31>>31;if((K|0)>(M|0)|(K|0)==(M|0)&e>>>0>N>>>0){h=q;ee=1316;break c}if(kh(n,e)|0){u=ce;v=fe;e=d;d=q;ee=1317;break a}H=k[v+(O*40|0)+16>>2]|0;if(E>>>0<128){i[H>>0]=E;o=1;I=Q}else{o=(um(H,E,F)|0)&255;I=Q}while(1){D=k[I+28>>2]|0;if(D>>>0<128){i[H+o>>0]=D;F=1}else F=(um(H+o|0,D,0)|0)&255;o=F+o|0;F=H+E|0;if(!(D>>>0<8&(D|0)!=0))if(D>>>0>11){z=k[I+12>>2]|0;pw(F|0,k[I+16>>2]|0,z|0)|0}else z=0;else{F=I;if(D>>>0>11)z=(D+-12|0)>>>1;else z=l[34336+D>>0]|0;C=k[F>>2]|0;F=k[F+4>>2]|0;D=z;while(1){D=D+-1|0;i[H+(D+E)>>0]=C;C=rw(C|0,F|0,8)|0;if(!D)break;else F=L}}I=I+40|0;if(I>>>0>P>>>0)break;else E=z+E|0}k[v+(O*40|0)+12>>2]=e;e=v+(O*40|0)+8|0;j[e>>1]=16;if(J){k[n>>2]=J;j[e>>1]=16400}i[v+(O*40|0)+10>>0]=1;O=v;w=f;P=R;Q=S;e=g;break}case 446:{ee=0;if((k[Yd>>2]|0)>0){h=q;ee=447;break c}if(!o)w=0;else{g=o;while(1)if(!(i[g>>0]|0))break;else g=g+1|0;w=g-o&1073741823}z=xm(he,0,(k[Lb>>2]|0)+(k[Kb>>2]|0)|0)|0;if(z){g=e;h=z;ee=1318;break c}g=rh(he,w+33|0,0)|0;if(!g){O=v;w=f;P=R;Q=S}else{Q=g+32|0;k[g>>2]=Q;pw(Q|0,o|0,w+1|0)|0;if(!(i[ae>>0]|0))k[Lb>>2]=(k[Lb>>2]|0)+1;else{i[ae>>0]=0;i[Pb>>0]=1}k[g+24>>2]=k[Mb>>2];k[Mb>>2]=g;O=Nb;w=k[O+4>>2]|0;P=g+8|0;k[P>>2]=k[O>>2];k[P+4>>2]=w;P=Ob;w=k[P+4>>2]|0;O=g+16|0;k[O>>2]=k[P>>2];k[O+4>>2]=w;O=v;w=f;P=R;Q=S}break}case 486:{k[Lb>>2]=(k[Lb>>2]|0)+-1;ee=488;break}case 525:{ee=0;Bm(k[(k[Td>>2]|0)+(k[f+(e*20|0)+4>>2]<<4)+4>>2]|0,k[f+(e*20|0)+12>>2]|0,Uc);w=k[Uc>>2]|0;O=n;k[O>>2]=w;k[O+4>>2]=((w|0)<0)<<31>>31;O=v;w=f;P=R;Q=S;break}case 558:{ee=0;n=Cm(a,k[f+(g*20|0)+4>>2]|0,k[f+(g*20|0)+8>>2]|0,-1,1)|0;if(!n){u=ce;v=fe;e=d;d=q;ee=1317;break a}w=k[f+(g*20|0)+16>>2]|0;z=n+8|0;k[z>>2]=w;x=k[f+(g*20|0)+12>>2]|0;w=m[w+6>>1]<<2;e=w+148|0;o=rh(he,e,0)|0;if(!o){f=n;h=q;ee=560;break c}kw(o|0,0,e|0)|0;k[n+56>>2]=o;Q=o+128|0;k[o+28>>2]=Q;pw(Q|0,k[z>>2]|0,w+20|0)|0;k[o+140>>2]=0;if(x)j[o+134>>1]=x;e=k[Td>>2]|0;n=k[(k[(k[e+4>>2]|0)+4>>2]|0)+32>>2]|0;k[o+12>>2]=n;i[o+59>>0]=1;i[o+57>>0]=0;k[o+24>>2]=he;k[o+72>>2]=o;if(((i[Xb>>0]|0)!=2?(Ac=k[2242]|0,Q=ha(Ac,n)|0,k[o>>2]=Q,Q=k[(k[e+12>>2]|0)+80>>2]|0,Q=(Q|0)<(Ac|0)?Ac:Q,Ac=((n|0)<0)<<31>>31,Q=xw(Q|0,((Q|0)<0)<<31>>31|0,n|0,Ac|0)|0,P=L,k[o+4>>2]=(P|0)<0|(P|0)==0&Q>>>0<536870912?Q:536870912,(k[2234]|0)==0):0)?(k[o+52>>2]=n,Q=vg(n,Ac)|0,k[o+40>>2]=Q,(Q|0)==0):0){f=7;h=q;ee=1309;break c}else{O=v;w=f;P=R;Q=S;n=I;e=g}break}case 566:{ee=0;O=(k[(k[Fb>>2]|0)+(k[f+(e*20|0)+4>>2]<<2)>>2]|0)+40|0;Q=O;P=k[Q>>2]|0;Q=k[Q+4>>2]|0;N=ow(P|0,Q|0,1,0)|0;k[O>>2]=N;k[O+4>>2]=L;if((P|0)==0&(Q|0)==0){O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}else{O=v;w=f;P=R;Q=S}break}case 568:{ee=0;e=Cm(a,k[f+(g*20|0)+4>>2]|0,k[f+(g*20|0)+12>>2]|0,-1,0)|0;if(!e){u=ce;v=fe;e=d;d=q;ee=1317;break a}i[e+25>>0]=1;k[e+16>>2]=k[f+(g*20|0)+8>>2];O=e+27|0;i[O>>0]=i[O>>0]|4;O=v;w=f;P=R;Q=S;e=g;break}case 570:{ee=0;O=f+(e*20|0)+4|0;Gm(a,k[(k[Fb>>2]|0)+(k[O>>2]<<2)>>2]|0);k[(k[Fb>>2]|0)+(k[O>>2]<<2)>>2]=0;O=v;w=f;P=R;Q=S;break}case 571:{ee=0;I=k[(k[Fb>>2]|0)+(k[f+(e*20|0)+4>>2]<<2)>>2]|0;i[I+25>>0]=0;if(!(i[I+27>>0]&4)){Q=k[f+(e*20|0)+16>>2]|0;k[td>>2]=k[I+8>>2];j[Yb>>1]=Q;i[Zb>>0]=(w<<1&2^2)+255;Q=k[f+(e*20|0)+12>>2]|0;g=v+(Q*40|0)|0;k[_b>>2]=g;if(j[v+(Q*40|0)+8>>1]&16384)Wg(g)|0;z=Hm(k[I>>2]|0,td,0,0,0,xd)|0;if(z){g=e;h=z;ee=1318;break c}}else{z=k[f+(e*20|0)+12>>2]|0;x=v+(z*40|0)|0;z=v+(z*40|0)+8|0;if((j[z>>1]&14)==2)wh(x,0);F=_g(x)|0;E=L;z=m[z>>1]|0;do if(!(z&4)){if(!(z&8)){O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0;break q}y=+p[x>>3];A=+(F>>>0)+4294967296.0*+(E|0);if(y>31)+w|0;break}else{w=(y>A&(w&1|0)==0&1)+w|0;break}}while(0);z=Hm(k[I>>2]|0,0,F,E,0,xd)|0;Q=I+48|0;k[Q>>2]=F;k[Q+4>>2]=E;if(z){g=e;h=z;ee=1318;break c}}i[I+26>>0]=0;k[I+60>>2]=0;g=k[xd>>2]|0;do if((w|0)>63){if((g|0)>=0?!((g|0)==0&(w|0)==65):0){k[xd>>2]=0;O=v;w=f;P=R;Q=S;break q}k[xd>>2]=0;o=Im(k[I>>2]|0,xd)|0;if(!o)ee=593;else{g=e;h=o;ee=1318;break c}}else{if((g|0)<=0?!((g|0)==0&(w|0)==62):0){g=(i[(k[I>>2]|0)+73>>0]|0)!=1&1;k[xd>>2]=g;break}k[xd>>2]=0;o=Jm(k[I>>2]|0,xd)|0;if(!o)ee=593;else{g=e;h=o;ee=1318;break c}}while(0);if((ee|0)==593){ee=0;g=k[xd>>2]|0}if(!g){O=v;w=f;P=R;Q=S}else{O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}break}case 596:{ee=0;O=k[(k[Fb>>2]|0)+(k[f+(e*20|0)+4>>2]<<2)>>2]|0;i[O+25>>0]=0;P=_g(v+((k[f+(e*20|0)+8>>2]|0)*40|0)|0)|0;w=O+48|0;k[w>>2]=P;k[w+4>>2]=L;i[O+26>>0]=1;O=v;w=f;P=R;Q=S;break}case 597:{ee=0;J=k[(k[Fb>>2]|0)+(k[f+(g*20|0)+4>>2]<<2)>>2]|0;w=k[f+(g*20|0)+12>>2]|0;F=v+(w*40|0)|0;k[jd>>2]=0;o=f+(g*20|0)+16|0;z=k[o>>2]|0;e=J+8|0;x=k[e>>2]|0;w:do if((z|0)>0){k[ud>>2]=x;z=z&65535;j[$b>>1]=z;k[ac>>2]=F;if(!(z<<16>>16))w=ud;else{w=F;x=0;while(1){if(j[w+(x*40|0)+8>>1]&16384){Wg(w+(x*40|0)|0)|0;z=j[$b>>1]|0}x=x+1|0;if((x|0)>=(z&65535|0)){w=ud;break w}w=k[ac>>2]|0}}}else{z=Km(x,Pc,191,jd)|0;if(!z){u=ce;v=fe;e=d;d=q;ee=1317;break a}if(j[v+(w*40|0)+8>>1]&16384)Wg(F)|0;Lm(k[e>>2]|0,k[v+(w*40|0)+12>>2]|0,k[v+(w*40|0)+16>>2]|0,z);w=z}while(0);i[w+6>>0]=0;x:do if((i[H>>0]|0)==67?(Bc=j[w+4>>1]|0,Bc<<16>>16!=0):0){z=k[w+8>>2]|0;x=0;while(1){if(j[z+(x*40|0)+8>>1]&1)break;x=x+1|0;if((x|0)>=(Bc&65535|0)){I=g;e=g;break x}}I=g;e=(k[f+(g*20|0)+8>>2]|0)+-1|0}else{I=g;e=g}while(0);z=Hm(k[J>>2]|0,w,0,0,0,yd)|0;if(!(k[o>>2]|0))rg(he,k[jd>>2]|0);if(z){g=e;f=z;h=q;ee=1309;break c}g=k[yd>>2]|0;k[J+12>>2]=g;g=(g|0)==0;i[J+25>>0]=g&1^1;i[J+26>>0]=0;k[J+60>>2]=0;if((i[H>>0]|0)==69){if(!g){O=v;w=f;P=R;Q=S;break}O=v;w=f;P=R;Q=S;e=(k[f+(I*20|0)+8>>2]|0)+-1|0;break}else{if(g){O=v;w=f;P=R;Q=S;break}O=v;w=f;P=R;Q=S;e=(k[f+(I*20|0)+8>>2]|0)+-1|0;break}}case 624:{ee=0;O=(k[(k[Fb>>2]|0)+(k[f+(e*20|0)+4>>2]<<2)>>2]|0)+40|0;w=O;P=k[w>>2]|0;w=k[w+4>>2]|0;Q=ow(P|0,w|0,1,0)|0;k[O>>2]=Q;k[O+4>>2]=L;O=n;k[O>>2]=P;k[O+4>>2]=w;O=v;w=f;P=R;Q=S;break}case 647:{ee=0;E=k[f+(e*20|0)+8>>2]|0;g=k[(k[Fb>>2]|0)+(k[f+(e*20|0)+4>>2]<<2)>>2]|0;w=k[f+(e*20|0)+12>>2]|0;if(z<<24>>24==75){C=v+(w*40|0)|0;B=k[C>>2]|0;C=k[C+4>>2]|0}else{B=w;C=((w|0)<0)<<31>>31}D=f+(e*20|0)+3|0;F=i[D>>0]|0;if(F&1)k[rb>>2]=(k[rb>>2]|0)+1;if(F&2){d=je;k[d>>2]=B;k[d+4>>2]=C;d=B;c=C}z=j[v+(E*40|0)+8>>1]|0;if(z&1){k[v+(E*40|0)+16>>2]=0;k[v+(E*40|0)+12>>2]=0}if(!(F&16))x=0;else x=k[g+12>>2]|0;if(!(z&16384))z=0;else z=k[v+(E*40|0)>>2]|0;z=Nm(k[g>>2]|0,0,B,C,k[v+(E*40|0)+16>>2]|0,k[v+(E*40|0)+12>>2]|0,z,(F&255)>>>3&1,x)|0;i[g+26>>0]=0;k[g+60>>2]=0;if(z){g=e;f=z;h=q;ee=1309;break c}w=k[bc>>2]|0;if((w|0)!=0?(Cc=k[f+(e*20|0)+16>>2]|0,(Cc|0)!=0):0){gc[w&1](k[cc>>2]|0,(i[D>>0]&4)!=0?23:18,k[(k[Td>>2]|0)+(i[g+24>>0]<<4)>>2]|0,Cc,B,C);O=v;w=f;P=R;Q=S}else{O=v;w=f;P=R;Q=S}break}case 671:{ee=0;O=k[rb>>2]|0;k[sb>>2]=O;k[tb>>2]=(k[tb>>2]|0)+O;k[rb>>2]=0;O=v;w=f;P=R;Q=S;break}case 672:{ee=0;F=k[(k[Fb>>2]|0)+(k[f+(e*20|0)+4>>2]<<2)>>2]|0;E=k[f+(e*20|0)+12>>2]|0;D=k[f+(e*20|0)+16>>2]|0;w=k[F+56>>2]|0;x=w+32|0;z=k[x>>2]|0;F=k[F+8>>2]|0;if(!z){z=Km(F,0,0,ed)|0;k[x>>2]=z;if(!z){g=e;f=7;h=q;ee=1309;break c}j[z+4>>1]=D}if(!(i[w+56>>0]|0)){w=k[w+36>>2]|0;x=w;w=w+8|0}else{Q=k[w+20>>2]|0;w=k[(k[Q+8>>2]|0)+4>>2]|0;Q=k[Q+12>>2]|0;x=Q+(w*56|0)+20|0;w=k[Q+(w*56|0)+32>>2]|0}Lm(F,k[x>>2]|0,w,z);y:do if((D|0)>0){w=k[z+8>>2]|0;g=0;while(1){if(j[w+(g*40|0)+8>>1]&1)break y;g=g+1|0;if((g|0)>=(D|0)){ee=682;break}}}else ee=682;while(0);if((ee|0)==682){ee=0;if(!(Pm(k[v+(E*40|0)+12>>2]|0,k[v+(E*40|0)+16>>2]|0,z,0)|0)){O=v;w=f;P=R;Q=S;break}}O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0;break}case 700:{ee=0;j[n+8>>1]=1;O=v;w=f;P=R;Q=S;break}case 708:{ee=0;j[n+8>>1]=1;O=v;w=f;P=R;Q=S;break}case 711:{ee=0;g=k[(k[Fb>>2]|0)+(k[f+(e*20|0)+4>>2]<<2)>>2]|0;i[g+25>>0]=1;k[g+60>>2]=0;g=k[g>>2]|0;if(!g){O=v;w=f;P=R;Q=S}else{O=g+56|0;$c(k[O>>2]|0);k[O>>2]=0;i[g+73>>0]=0;O=v;w=f;P=R;Q=S}break}case 801:{ee=0;g=k[(k[Fb>>2]|0)+(k[f+(e*20|0)+4>>2]<<2)>>2]|0;n=k[g>>2]|0;o=I+8|0;j[o>>1]=1;if((i[n+73>>0]|0)!=1?(h=om(g)|0,(h|0)!=0):0){g=e;ee=1318;break c}if(!(i[g+25>>0]|0)){g=Pd;k[g>>2]=0;k[g+4>>2]=0;pm(n,Pd);j[jc>>1]=0;k[kc>>2]=he;k[lc>>2]=0;g=sm(n,0,k[Pd>>2]|0,1,Xc)|0;do if(!g){g=k[mc>>2]|0;n=i[g>>0]|0;if(n<<24>>24>-1){z=n&255;k[nd>>2]=z}else{rm(g,nd)|0;z=k[nd>>2]|0}if(!(z>>>0<3?1:(z|0)>(k[nc>>2]|0))){w=(k[mc>>2]|0)+(z+-1)|0;g=i[w>>0]|0;if(g<<24>>24>-1){g=g&255;k[Kd>>2]=g}else{rm(w,Kd)|0;g=k[Kd>>2]|0}if(!((g+-1|0)>>>0>8|(g|0)==7)){if(g>>>0>11)w=(g+-12|0)>>>1;else w=l[34336+g>>0]|0;n=k[nc>>2]|0;if(n>>>0>=(w+z|0)>>>0){tm((k[mc>>2]|0)+(n-w)|0,g,Nd)|0;g=Nd;w=k[g>>2]|0;g=k[g+4>>2]|0;if((j[jc>>1]&9312)==0&(k[lc>>2]|0)==0){B=0;break}Vg(Xc);B=0;break}}}if(!((j[jc>>1]&9312)==0&(k[lc>>2]|0)==0))Vg(Xc);k[ge>>2]=68698;k[ge+4>>2]=10788;gd(11,13600,ge);B=11;w=0;g=0}else{B=g;w=0;g=0}while(0);if(B){g=e;h=B;ee=1318;break c}O=I;k[O>>2]=w;k[O+4>>2]=g;j[o>>1]=4;O=v;w=f;P=R;Q=S;n=I}else{O=v;w=f;P=R;Q=S;n=I}break}case 865:{ee=0;o=k[z>>2]|0;z=k[(k[Td>>2]|0)+(J<<4)+12>>2]|0;w=k[z+16>>2]|0;if(w)do{g=(k[w+8>>2]|0)+32|0;if((k[g>>2]|0)==(x|0))k[g>>2]=o;w=k[w>>2]|0}while((w|0)!=0);g=k[z+32>>2]|0;if(g)do{w=(k[g+8>>2]|0)+40|0;if((k[w>>2]|0)==(x|0))k[w>>2]=o;g=k[g>>2]|0}while((g|0)!=0);O=v;w=f;P=R;Q=S;q=J+1&255;break}case 878:{ee=0;dn(he,n);O=v;w=f;P=R;Q=S;n=F;break}case 881:{ee=0;Q=k[f+(e*20|0)+4>>2]|0;k[Vc>>2]=he;k[ba>>2]=Q;k[ca>>2]=fe;n=k[f+(e*20|0)+16>>2]|0;k[ge>>2]=k[(k[Td>>2]|0)+(Q<<4)>>2];k[ge+4>>2]=(Q|0)==1?13184:13208;k[ge+8>>2]=n;n=zh(he,42048,ge)|0;if(!n){g=e;h=q;ee=882;break c}i[da>>0]=1;k[ea>>2]=0;g=Ve(he,n,22,Vc,0)|0;g=(g|0)==0?k[ea>>2]|0:g;rg(he,n);i[da>>0]=0;if(!g){O=v;w=f;P=R;Q=S;n=F}else{f=g;g=e;h=q;ee=884;break c}break}case 886:{ee=0;pg(he,Nk((k[(k[Td>>2]|0)+(k[f+(e*20|0)+4>>2]<<4)+12>>2]|0)+8|0,k[f+(e*20|0)+16>>2]|0,0)|0);k[Qb>>2]=k[Qb>>2]|2;O=v;w=f;P=R;Q=S;break}case 887:{ee=0;z=Nk((k[(k[Td>>2]|0)+(k[f+(e*20|0)+4>>2]<<4)+12>>2]|0)+24|0,k[f+(e*20|0)+16>>2]|0,0)|0;if(z){g=(k[z+12>>2]|0)+8|0;n=k[g>>2]|0;z:do if((n|0)==(z|0))k[g>>2]=k[z+20>>2];else{do{if(!n)break z;g=n+20|0;n=k[g>>2]|0}while((n|0)!=(z|0));k[g>>2]=k[z+20>>2]}while(0);Ok(he,z)}k[Qb>>2]=k[Qb>>2]|2;O=v;w=f;P=R;Q=S;n=F;break}case 895:{ee=0;z=Nk((k[(k[Td>>2]|0)+(k[f+(e*20|0)+4>>2]<<4)+12>>2]|0)+40|0,k[f+(e*20|0)+16>>2]|0,0)|0;if(!z){O=v;w=f;P=R;Q=S}else{g=k[z+20>>2]|0;if((g|0)==(k[z+24>>2]|0)){g=gn(g+8|0,k[z+4>>2]|0,ge)|0;if(!g)g=0;else g=k[g+8>>2]|0;o=g+64|0;while(1){Q=k[o>>2]|0;g=Q+32|0;if((Q|0)==(z|0))break;else o=g}k[o>>2]=k[g>>2]}og(he,z);k[Qb>>2]=k[Qb>>2]|2;O=v;w=f;P=R;Q=S}break}case 903:{ee=0;J=k[f+(g*20|0)+8>>2]|0;e=rh(he,(J<<2)+4|0,0)|0;if(!e){u=ce;v=fe;e=d;d=q;ee=1317;break a}x=k[f+(g*20|0)+12>>2]|0;H=k[f+(g*20|0)+4>>2]|0;G=v+(H*40|0)|0;if((J|0)>0){z=0;do{Q=_g(v+((z+H|0)*40|0)|0)|0;k[e+(z<<2)>>2]=Q;z=z+1|0}while((z|0)!=(J|0));z=J}else z=0;k[e+(z<<2)>>2]=0;E=k[(k[Td>>2]|0)+(l[f+(g*20|0)+3>>0]<<4)+4>>2]|0;N=v+(x*40|0)|0;Q=k[N>>2]|0;M=k[E+4>>2]|0;k[M+4>>2]=k[E>>2];E=k[M>>2]|0;o=k[(k[E+204>>2]|0)+12>>2]|0;k[Pd>>2]=M;k[fa>>2]=E;E=k[M+44>>2]|0;k[ja>>2]=E;k[la>>2]=Q;k[ma+0>>2]=0;k[ma+4>>2]=0;k[ma+8>>2]=0;k[ma+12>>2]=0;k[ma+16>>2]=0;do if(!E){x=0;z=0}else{F=(E>>>3)+1|0;D=vg(F,0)|0;if(!D){k[pa>>2]=0;x=0;z=1;break}kw(D|0,0,F|0)|0;k[pa>>2]=D;K=M+32|0;F=(((k[2514]|0)>>>0)/((k[K>>2]|0)>>>0)|0)+1|0;if(F>>>0<=E>>>0){Q=D+(F>>>3)|0;i[Q>>0]=l[Q>>0]|1<<(F&7)}k[ra>>2]=Kd;k[sa>>2]=Kd;k[qa>>2]=0;k[ta>>2]=0;k[ua>>2]=100;k[va>>2]=1e9;i[xa>>0]=0;i[wa>>0]=2;k[oa>>2]=43592;z=k[(k[M+12>>2]|0)+56>>2]|0;hn(Pd,1,l[z+33>>0]<<16|l[z+32>>0]<<24|l[z+34>>0]<<8|l[z+35>>0],l[z+37>>0]<<16|l[z+36>>0]<<24|l[z+38>>0]<<8|l[z+39>>0]);k[oa>>2]=0;z=k[la>>2]|0;if(!((J|0)<1|(z|0)==0)){C=M+17|0;D=0;do{E=e+(D<<2)|0;F=k[E>>2]|0;if(F){if((i[C>>0]|0)!=0&(F|0)>1){jn(Pd,F,1,0);F=k[E>>2]|0}k[oa>>2]=43608;kn(Pd,F,0,0)|0;k[oa>>2]=0;z=k[la>>2]|0}D=D+1|0}while(!((D|0)>=(J|0)|(z|0)==0))}if(!((k[ja>>2]|0)==0|(z|0)==0)){B=M+17|0;z=M+36|0;I=1;do{D=I>>>3;F=i[(k[pa>>2]|0)+D>>0]|0;C=1<<(I&7);do if(!(F&255&C)){if(I>>>0<2)E=0;else{E=I+-2|0;E=E-((E>>>0)%(((((k[z>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;E=((E+1|0)==(((k[2514]|0)>>>0)/((k[K>>2]|0)>>>0)|0|0)?3:2)+E|0}if((E|0)==(I|0)?(i[B>>0]|0)!=0:0)break;k[ge>>2]=I;ln(Pd,43632,ge);F=i[(k[pa>>2]|0)+D>>0]|0}while(0);do if(F&255&C){if(I>>>0<2)F=0;else{F=I+-2|0;F=F-((F>>>0)%(((((k[z>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;F=((F+1|0)==(((k[2514]|0)>>>0)/((k[K>>2]|0)>>>0)|0|0)?3:2)+F|0}if((F|0)!=(I|0))break;if(!(i[B>>0]|0))break;k[ge>>2]=I;ln(Pd,43656,ge)}while(0);I=I+1|0}while(!((k[la>>2]|0)==0?1:I>>>0>(k[ja>>2]|0)>>>0))}z=k[(k[(k[M>>2]|0)+204>>2]|0)+12>>2]|0;if((o|0)!=(z|0)){k[ge>>2]=o;k[ge+4>>2]=z;ln(Pd,43696,ge)}$c(k[pa>>2]|0);if(k[na>>2]|0){mn(qa);x=0;z=(k[ma>>2]|0)+1|0;break}z=k[ma>>2]|0;if(!z)mn(qa);x=yg(qa)|0}while(0);rg(he,e);Q=N;Q=iw(k[Q>>2]|0,k[Q+4>>2]|0,z|0,((z|0)<0)<<31>>31|0)|0;w=N;k[w>>2]=Q;k[w+4>>2]=L;w=v+(H*40|0)+8|0;if(!(j[w>>1]&9312))j[w>>1]=1;else Ag(G);if(z){if(!x){u=ce;v=fe;e=d;d=q;ee=1317;break a}ah(G,x,-1,1,1)|0}bm(G,ub)|0;O=v;w=f;P=R;Q=S;e=g;break}case 947:{ee=0;o=k[f+(g*20|0)+4>>2]|0;e=v+(o*40|0)|0;n=k[f+(g*20|0)+8>>2]|0;o=v+(o*40|0)+8|0;if((j[o>>1]&32)==0?(nn(e),(j[o>>1]&32)==0):0){u=ce;v=fe;e=d;d=q;ee=1317;break a}O=v+(n*40|0)|0;on(k[e>>2]|0,k[O>>2]|0,k[O+4>>2]|0);O=v;w=f;P=R;Q=S;n=F;e=g;break}case 966:{ee=0;w=k[f+(g*20|0)+4>>2]|0;N=v+(w*40|0)|0;M=v+((k[f+(g*20|0)+12>>2]|0)*40|0)|0;K=k[f+(g*20|0)+16>>2]|0;w=v+(w*40|0)+8|0;if((j[w>>1]&32)==0?(nn(N),(j[w>>1]&32)==0):0){u=ce;v=fe;e=d;d=q;ee=1317;break a}if(K){I=k[N>>2]|0;G=M;J=k[G>>2]|0;G=k[G+4>>2]|0;o=I+28|0;if((k[o>>2]|0)!=(K|0)){e=I+8|0;F=k[e>>2]|0;if(F){E=I+20|0;H=I+26|0;if(!(j[H>>1]&1))F=pn(F)|0;D=k[E>>2]|0;A:do if(!D){dd=F;od=E;ee=978}else{while(1){E=D+12|0;C=k[E>>2]|0;if(!C)break;B=D+8|0;qn(C,ge,Pd);k[E>>2]=0;F=rn(k[ge>>2]|0,F)|0;D=k[B>>2]|0;if(!D){dd=F;od=B;ee=978;break A}}Q=sn(F)|0;k[E>>2]=Q}while(0);if((ee|0)==978?(ee=0,Hc=tn(I)|0,k[od>>2]=Hc,(Hc|0)!=0):0){Q=Hc;k[Q>>2]=0;k[Q+4>>2]=0;k[Hc+8>>2]=0;Q=sn(dd)|0;k[Hc+12>>2]=Q}k[e>>2]=0;k[I+12>>2]=0;j[H>>1]=m[H>>1]|1}k[o>>2]=K}z=k[I+20>>2]|0;B:do if(z){C:while(1){x=k[z+12>>2]|0;if(x)do{w=x;B=k[w>>2]|0;w=k[w+4>>2]|0;if((w|0)<(G|0)|(w|0)==(G|0)&B>>>0>>0)x=x+8|0;else{if(!((w|0)>(G|0)|(w|0)==(G|0)&B>>>0>J>>>0))break C;x=x+12|0}x=k[x>>2]|0}while((x|0)!=0);z=k[z+8>>2]|0;if(!z)break B}O=v;w=f;P=R;Q=S;e=(k[f+(g*20|0)+8>>2]|0)+-1|0;break q}while(0);if((K|0)>-1)z=M;else{O=v;w=f;P=R;Q=S;e=g;break}}else z=M;O=z;on(k[N>>2]|0,k[O>>2]|0,k[O+4>>2]|0);O=v;w=f;P=R;Q=S;e=g;break}case 993:{ee=0;o=k[f+(e*20|0)+16>>2]|0;E=k[f+(e*20|0)+12>>2]|0;I=v+(E*40|0)|0;if((i[f+(e*20|0)+3>>0]|0)!=0?(Ic=k[o+20>>2]|0,fd=k[pb>>2]|0,(fd|0)!=0):0){w=fd;while(1){if((k[w+28>>2]|0)==(Ic|0)){O=v;w=f;P=R;Q=S;break q}w=k[w+4>>2]|0;if(!w){g=e;break}}}else g=e;e=k[qb>>2]|0;if((e|0)>=(k[ya>>2]|0)){h=q;ee=998;break c}B=v+(E*40|0)+8|0;if(!(j[B>>1]&64)){z=o+12|0;x=k[z>>2]|0;w=x+(k[o+8>>2]|0)|0;f=o+16|0;x=(x<<2)+80+(k[f>>2]|0)+(w*40|0)|0;F=rh(he,x,((x|0)<0)<<31>>31)|0;if(!F){u=ce;v=fe;e=d;d=q;ee=1317;break a}kw(F|0,0,x|0)|0;if(!((j[B>>1]&9312)==0?(k[v+(E*40|0)+24>>2]|0)==0:0))Vg(I);j[B>>1]=64;k[I>>2]=F;k[F>>2]=a;k[F+60>>2]=w;k[F+64>>2]=k[z>>2];k[F+44>>2]=g;k[F+16>>2]=k[Kc>>2];k[F+52>>2]=k[za>>2];k[F+24>>2]=k[Fb>>2];k[F+40>>2]=k[Aa>>2];k[F+8>>2]=k[tc>>2];k[F+48>>2]=k[Ba>>2];k[F+28>>2]=k[o+20>>2];k[F+20>>2]=k[Eb>>2];k[F+56>>2]=k[Ca>>2];v=F+80|0;e=v+(w*40|0)|0;if((v|0)!=(e|0))do{j[v+8>>1]=128;k[v+32>>2]=he;v=v+40|0}while((v|0)!=(e|0));e=k[qb>>2]|0;v=F}else{f=o+16|0;v=k[I>>2]|0}k[qb>>2]=e+1;k[v+4>>2]=k[pb>>2];O=v+32|0;k[O>>2]=d;k[O+4>>2]=c;k[v+68>>2]=k[rb>>2];k[v+72>>2]=k[(k[a>>2]|0)+80>>2];k[rb>>2]=0;k[pb>>2]=v;O=v+40|0;k[Kc>>2]=O;P=k[v+60>>2]|0;k[za>>2]=P;Q=k[v+64>>2]&65535;k[Aa>>2]=Q;P=O+((P+1|0)*40|0)|0;k[Fb>>2]=P;w=k[o>>2]|0;k[tc>>2]=w;k[Ba>>2]=k[o+4>>2];Q=P+(Q<<2)|0;k[Eb>>2]=Q;P=k[f>>2]|0;k[Ca>>2]=P;kw(Q|0,0,P|0)|0;P=R;Q=S;e=-1;break}case 1009:{ee=0;O=k[pb>>2]|0;cm(n,(k[O+16>>2]|0)+(((k[(k[O+8>>2]|0)+((k[O+44>>2]|0)*20|0)+4>>2]|0)+(k[f+(e*20|0)+4>>2]|0)|0)*40|0)|0,4096);O=v;w=f;P=R;Q=S;break}case 1010:{ee=0;if(k[Qb>>2]&16777216){w=k[f+(e*20|0)+8>>2]|0;O=Ob;w=ow(k[O>>2]|0,k[O+4>>2]|0,w|0,((w|0)<0)<<31>>31|0)|0;O=Ob;k[O>>2]=w;k[O+4>>2]=L;O=v;w=f;P=R;Q=S;n=F;break}g=k[f+(e*20|0)+8>>2]|0;n=((g|0)<0)<<31>>31;if(!(k[f+(e*20|0)+4>>2]|0)){w=Wd;w=ow(k[w>>2]|0,k[w+4>>2]|0,g|0,n|0)|0;O=Wd;k[O>>2]=w;k[O+4>>2]=L;O=v;w=f;P=R;Q=S;n=F;break}else{w=Nb;w=ow(k[w>>2]|0,k[w+4>>2]|0,g|0,n|0)|0;O=Nb;k[O>>2]=w;k[O+4>>2]=L;O=v;w=f;P=R;Q=S;n=F;break}}case 1015:{ee=0;if(!(k[f+(e*20|0)+4>>2]|0)){Q=Wd;if(!((k[Q>>2]|0)==0&(k[Q+4>>2]|0)==0)){O=v;w=f;P=R;Q=S;break}Q=Ob;if(!((k[Q>>2]|0)==0&(k[Q+4>>2]|0)==0)){O=v;w=f;P=R;Q=S;break}O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0;break}else{Q=Nb;if(!((k[Q>>2]|0)==0&(k[Q+4>>2]|0)==0)){O=v;w=f;P=R;Q=S;break}Q=Ob;if(!((k[Q>>2]|0)==0&(k[Q+4>>2]|0)==0)){O=v;w=f;P=R;Q=S;break}O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0;break}}case 1022:{ee=0;g=k[pb>>2]|0;if(!g)o=v+((k[f+(e*20|0)+4>>2]|0)*40|0)|0;else{while(1){n=k[g+4>>2]|0;if(!n)break;else g=n}o=(k[g+16>>2]|0)+((k[f+(e*20|0)+4>>2]|0)*40|0)|0}P=_g(o)|0;Q=o;k[Q>>2]=P;k[Q+4>>2]=L;Q=o+8|0;j[Q>>1]=m[Q>>1]&48640|4;Q=k[f+(e*20|0)+8>>2]|0;P=v+(Q*40|0)|0;g=_g(P)|0;n=L;k[P>>2]=g;k[P+4>>2]=n;Q=v+(Q*40|0)+8|0;j[Q>>1]=m[Q>>1]&48640|4;Q=o;P=k[Q+4>>2]|0;if((P|0)<(n|0)|((P|0)==(n|0)?(k[Q>>2]|0)>>>0>>0:0)){O=o;k[O>>2]=g;k[O+4>>2]=n;O=v;w=f;P=R;Q=S;n=I}else{O=v;w=f;P=R;Q=S;n=I}break}case 1028:{ee=0;Q=v+((k[f+(e*20|0)+4>>2]|0)*40|0)|0;P=k[Q+4>>2]|0;if((P|0)>0|(P|0)==0&(k[Q>>2]|0)>>>0>0){O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}else{O=v;w=f;P=R;Q=S}break}case 1030:{ee=0;O=k[f+(e*20|0)+12>>2]|0;P=v+((k[f+(e*20|0)+4>>2]|0)*40|0)|0;Q=P;O=ow(k[Q>>2]|0,k[Q+4>>2]|0,O|0,((O|0)<0)<<31>>31|0)|0;Q=L;k[P>>2]=O;k[P+4>>2]=Q;if((Q|0)<0){O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}else{O=v;w=f;P=R;Q=S}break}case 1032:{ee=0;g=v+((k[f+(e*20|0)+4>>2]|0)*40|0)|0;o=g;n=k[o>>2]|0;o=k[o+4>>2]|0;if((n|0)==0&(o|0)==0){O=v;w=f;P=R;Q=S;n=F}else{w=k[f+(e*20|0)+12>>2]|0;w=ow(w|0,((w|0)<0)<<31>>31|0,n|0,o|0)|0;O=g;k[O>>2]=w;k[O+4>>2]=L;O=v;w=f;P=R;Q=S;n=F;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}break}case 1034:{ee=0;O=v+((k[f+(e*20|0)+4>>2]|0)*40|0)|0;P=O;P=ow(k[P>>2]|0,k[P+4>>2]|0,-1,-1)|0;Q=L;k[O>>2]=P;k[O+4>>2]=Q;if((P|0)==0&(Q|0)==0){O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}else{O=v;w=f;P=R;Q=S}break}case 1036:{ee=0;O=v+((k[f+(e*20|0)+4>>2]|0)*40|0)|0;Q=O;P=k[Q>>2]|0;Q=k[Q+4>>2]|0;N=ow(P|0,Q|0,1,0)|0;k[O>>2]=N;k[O+4>>2]=L;if((P|0)==0&(Q|0)==0){O=v;w=f;P=R;Q=S;e=(k[f+(e*20|0)+8>>2]|0)+-1|0}else{O=v;w=f;P=R;Q=S}break}case 1157:{ee=0;O=v;w=f;P=R;Q=S;e=(k[f+(g*20|0)+8>>2]|0)+-1|0;break}case 1158:{ee=0;if(k[f+(e*20|0)+4>>2]|0){j[Ud>>1]=j[Ud>>1]|8;O=v;w=f;P=R;Q=S;break}g=k[Sb>>2]|0;if(!g){O=v;w=f;P=R;Q=S}else{do{Q=g+88|0;j[Q>>1]=j[Q>>1]|8;g=k[g+52>>2]|0}while((g|0)!=0);O=v;w=f;P=R;Q=S}break}case 1166:{ee=0;F=(k[o>>2]|0)+72|0;g=k[F>>2]|0;D:do if(g){while(1){if((k[g+4>>2]|0)==(x|0)?(k[g>>2]|0)==(z|0):0)break;g=k[g+12>>2]|0;if(!g){ee=1171;break D}}if(!g)ee=1171}else ee=1171;while(0);if((ee|0)==1171){ee=0;g=vg(16,0)|0;if(!g){g=e;f=7;h=q;ee=1309;break c}Q=g+0|0;C=Q+12|0;do{i[Q>>0]=0;Q=Q+1|0}while((Q|0)<(C|0));k[g+4>>2]=x;k[g>>2]=z;k[g+12>>2]=k[F>>2];k[F>>2]=g}g=g+8|0;if((l[g>>0]|0)<(w&255)){i[g>>0]=w;O=v;w=f;P=R;Q=S}else{O=v;w=f;P=R;Q=S}break}case 1213:{ee=0;k[pd>>2]=0;w=k[(k[f+(e*20|0)+16>>2]|0)+8>>2]|0;if(!w){g=e;f=6;h=q;ee=1309;break c}o=k[w>>2]|0;if(!o){g=e;f=6;h=q;ee=1309;break c}z=wc[k[o+24>>2]&127](w,pd)|0;Rm(a,w);if(z){g=e;f=z;h=q;ee=1309;break c}k[k[pd>>2]>>2]=w;g=Cm(a,k[f+(e*20|0)+4>>2]|0,0,-1,0)|0;if(!g){i[ce>>0]=1;qc[k[o+28>>2]&127](k[pd>>2]|0)|0;O=v;w=f;P=R;Q=S;break}else{k[g+32>>2]=k[pd>>2];O=w+4|0;k[O>>2]=(k[O>>2]|0)+1;O=v;w=f;P=R;Q=S;break}}case 1226:{ee=0;g=v+(z*40|0)+8|0;if(!(j[g>>1]&9312)){j[g>>1]=1;O=v;w=f;P=R;Q=S;break}else{Ag(x);O=v;w=f;P=R;Q=S;break}}case 1257:{ee=0;O=n;k[O>>2]=k[(k[(k[(k[Td>>2]|0)+(k[f+(e*20|0)+4>>2]<<4)+4>>2]|0)+4>>2]|0)+44>>2];k[O+4>>2]=0;O=v;w=f;P=R;Q=S;break}case 1258:{ee=0;w=k[(k[Td>>2]|0)+(k[f+(e*20|0)+4>>2]<<4)+4>>2]|0;g=k[f+(e*20|0)+12>>2]|0;n=k[w+4>>2]|0;if(!g)g=0;else{Q=k[n+44>>2]|0;g=Q>>>0>>0?g:Q}k[n+4>>2]=k[w>>2];n=(k[n>>2]|0)+156|0;if((g|0)>0)k[n>>2]=g;else g=k[n>>2]|0;O=F;k[O>>2]=g;k[O+4>>2]=((g|0)<0)<<31>>31;O=v;w=f;P=R;Q=S;n=F;break}case 1264:{ee=0;e=k[f+(g*20|0)+8>>2]|0;e=(e|0)==0?g:e+-1|0;if((k[Pa>>2]|0)!=0?(j[Ud>>1]&512)==0:0){g=k[f+(g*20|0)+16>>2]|0;if(!g){g=k[_d>>2]|0;if(!g){O=v;w=f;P=R;Q=S;n=I;break}}k[Pd>>2]=0;n=k[a>>2]|0;z=k[n+88>>2]|0;k[cb>>2]=Kd;k[db>>2]=Kd;k[eb>>2]=0;k[fb>>2]=100;k[gb>>2]=z;i[hb>>0]=1;i[ib>>0]=0;k[nd>>2]=n;z=i[g>>0]|0;w=z<<24>>24==0;E:do if((k[n+160>>2]|0)>1){if(!w){w=z;while(1){n=g;do{n=n+1|0;if(w<<24>>24==10)break;w=i[n>>0]|0}while(w<<24>>24!=0);Xk(nd,42288,3);Xk(nd,g,n-g|0);w=i[n>>0]|0;if(!(w<<24>>24))break;else g=n}}}else if(!w){o=n+62|0;w=z;J=1;do{F:do if(!(w<<24>>24)){x=0;w=0}else{z=g;w=0;while(1){x=Hn(z,ge)|0;if((k[ge>>2]|0)==135)break F;w=x+w|0;z=z+x|0;if(!(i[z>>0]|0)){x=0;break}}}while(0);Xk(nd,g,w);z=g+w|0;if(!x)break E;do if((i[z>>0]|0)==63)if((x|0)>1){In(g+(w+1)|0,Pd)|0;z=k[Pd>>2]|0;break}else{k[Pd>>2]=J;z=J;break}else{z=vh(a,z,x)|0;k[Pd>>2]=z}while(0);g=g+(w+x)|0;J=z+1|0;F=z+-1|0;E=k[xb>>2]|0;z=E+(F*40|0)|0;x=m[E+(F*40|0)+8>>1]|0;do if(!(x&1)){if(x&4){O=z;P=k[O+4>>2]|0;Q=ge;k[Q>>2]=k[O>>2];k[Q+4>>2]=P;Jn(nd,0,19920,ge);break}if(x&8){p[t>>3]=+p[z>>3];k[ge>>2]=k[t>>2];k[ge+4>>2]=k[t+4>>2];Jn(nd,0,20272,ge);break}if(!(x&2)){if(x&16384){k[ge>>2]=k[z>>2];Jn(nd,0,42304,ge);break}Xk(nd,42320,2);B=k[E+(F*40|0)+12>>2]|0;if((B|0)>0){z=E+(F*40|0)+16|0;x=0;do{k[ge>>2]=l[(k[z>>2]|0)+x>>0];Jn(nd,0,42328,ge);x=x+1|0}while((x|0)!=(B|0))}Xk(nd,42336,1);break}else{B=i[o>>0]|0;if(B<<24>>24==1){Q=k[E+(F*40|0)+16>>2]|0;k[ge>>2]=k[E+(F*40|0)+12>>2];k[ge+4>>2]=Q;Jn(nd,0,42296,ge);break}Q=Ld+0|0;C=Q+40|0;do{k[Q>>2]=0;Q=Q+4|0}while((Q|0)<(C|0));k[kb>>2]=n;ah(Ld,k[E+(F*40|0)+16>>2]|0,k[E+(F*40|0)+12>>2]|0,B,0)|0;Q=k[lb>>2]|0;if(!((Q&2|0)==0|(Q&16711680|0)==65536))Gn(Ld,1)|0;Q=k[nb>>2]|0;k[ge>>2]=k[mb>>2];k[ge+4>>2]=Q;Jn(nd,0,42296,ge);if((j[lb>>1]&9312)==0&(k[ob>>2]|0)==0)break;Vg(Ld);break}}else Xk(nd,20304,4);while(0);w=i[g>>0]|0}while(w<<24>>24!=0)}while(0);O=yg(nd)|0;oc[k[Pa>>2]&15](k[jb>>2]|0,O);rg(he,O);O=v;w=f;P=R;Q=S;n=I}else{O=v;w=f;P=R;Q=S;n=I}break}}if((ee|0)==28){ee=0;v=f+(e*20|0)+4|0;g=k[v>>2]|0;if(g){u=v;ee=34;break}v=k[pb>>2]|0;if(!v){ee=30;break}k[pb>>2]=k[v+4>>2];k[qb>>2]=(k[qb>>2]|0)+-1;c=k[rb>>2]|0;k[sb>>2]=c;k[tb>>2]=(k[tb>>2]|0)+c;v=am(v)|0;c=je;w=k[tc>>2]|0;if((k[f+(e*20|0)+8>>2]|0)==4)e=(k[w+(v*20|0)+8>>2]|0)+-1|0;else e=v;d=k[c>>2]|0;c=k[c+4>>2]|0;O=k[Kc>>2]|0;P=R;Q=S}else if((ee|0)==488){ee=0;w=xm(he,z,x)|0;if(!w){O=v;w=f;P=R;Q=S}else{g=e;h=w;ee=1318;break}}v=O;f=w;R=P;S=Q;g=e+1|0}switch(ee|0){case 30:{k[ie>>2]=g;i[be>>0]=k[f+(e*20|0)+8>>2];k[de>>2]=e;ee=41;break}case 34:{k[ie>>2]=g;i[be>>0]=k[f+(e*20|0)+8>>2];k[de>>2]=e;g=i[f+(e*20|0)+3>>0]|0;if(!(g<<24>>24)){f=k[f+(e*20|0)+16>>2]|0;if(!f){f=0;ee=39}else{k[ge>>2]=f;ih(fe,he,10344,ge)}}else{h=k[41536+((g&255)+-1<<2)>>2]|0;g=k[f+(e*20|0)+16>>2]|0;if(!g){f=h;ee=39}else{k[ge>>2]=h;k[ge+4>>2]=g;ih(fe,he,41624,ge)}}if((ee|0)==39){k[ge>>2]=f;ih(fe,he,41656,ge)}ee=k[u>>2]|0;kd=k[_d>>2]|0;nd=k[fe>>2]|0;k[ge>>2]=e;k[ge+4>>2]=kd;k[ge+8>>2]=nd;gd(ee,41600,ge);ee=41;break}case 80:{q=k[Zd>>2]|0;if(!((q|0)==0|b>>>0>>0)?(qc[q&127](k[Vd>>2]|0)|0)!=0:0){e=d;f=9;d=h;ee=1311;break a}nd=Wd;kd=k[nd+4>>2]|0;if((kd|0)>0|(kd|0)==0&(k[nd>>2]|0)>>>0>0){f=k[a>>2]|0;k[ie>>2]=787;i[be>>0]=2;ih(fe,f,34376,ge);f=1;ee=1309;break}q=em(a,1)|0;if(!q){k[Xd>>2]=(k[Xd>>2]|0)+2|1;u=k[f+(g*20|0)+4>>2]|0;k[$d>>2]=v+(u*40|0);e=f+(g*20|0)+8|0;if((k[e>>2]|0)>0){q=0;do{n=q+u|0;o=v+(n*40|0)|0;n=v+(n*40|0)+8|0;f=j[n>>1]|0;if(f&4096){if(_l(o)|0){u=ce;v=fe;e=d;d=h;ee=1317;break a}f=j[n>>1]|0}if((f&514)==2)fm(o)|0;q=q+1|0}while((q|0)<(k[e>>2]|0))}if(i[ce>>0]|0){u=ce;v=fe;e=d;d=h;ee=1317;break a}k[de>>2]=g+1;e=d;d=b;b=100;break a}else{f=q;ee=1309}break}case 313:{k[ge>>2]=73058;k[ge+4>>2]=10788;gd(11,13600,ge);f=11;ee=1309;break}case 343:{k[ge>>2]=73142;k[ge+4>>2]=10788;gd(11,13600,ge);f=11;ee=1309;break}case 447:{ih(fe,he,41712,ge);g=e;f=5;ee=1309;break}case 460:{k[ge>>2]=f;ih(fe,he,41768,ge);f=1;ee=1309;break}case 462:{ih(fe,he,41792,ge);f=5;ee=1309;break}case 467:{k[de>>2]=b;i[ae>>0]=0;k[ie>>2]=5;b=5;break a}case 489:{n=k[f+(g*20|0)+4>>2]|0;f=k[f+(g*20|0)+8>>2]|0;b=(n|0)!=0;if(b){f=(f|0)!=0;if(!(f|(i[ae>>0]|0)!=0))if((k[Yd>>2]|0)>0){ih(fe,he,41848,ge);b=d;d=e;f=5;ee=1309;break}else f=0}else f=(f|0)!=0;if((n|0)==(l[ae>>0]|0)){if(b)b=f?41952:42e3;else b=41904;ih(fe,he,b,ge);b=d;d=e;f=1;ee=1309;break}if(!f){b=ym(a,1)|0;if(b)break a;i[ae>>0]=n;if((Wl(a)|0)==5){k[de>>2]=g;i[ae>>0]=1-n;k[ie>>2]=5;b=5;break a}}else{Pl(he,516);i[ae>>0]=1}Ql(he);b=(k[ie>>2]|0)==0?101:1;break a}case 508:{k[de>>2]=b;k[ie>>2]=5;b=5;break a}case 522:{rg(he,k[fe>>2]|0);nd=ph(he,16040)|0;k[fe>>2]=nd;f=k[f>>2]|0;if((k[k[(k[Td>>2]|0)+(f<<4)+12>>2]>>2]|0)!=(n|0))Am(he,f);j[Ud>>1]=j[Ud>>1]|8;f=17;ee=1309;break}case 542:{k[ge>>2]=73997;k[ge+4>>2]=10788;gd(11,13600,ge);h=11;q=f;ee=1318;break}case 560:{k[f+56>>2]=0;f=7;ee=1309;break}case 832:{i[be>>0]=2;f=6;ee=1309;break}case 882:{Jg(he);u=ce;v=fe;e=d;d=h;ee=1317;break a}case 884:{Jg(he);if((f|0)==7){u=ce;v=fe;e=d;d=h;ee=1317;break a}else ee=1309;break}case 998:{ih(fe,he,42112,ge);f=1;ee=1309;break}case 1080:{k[ge>>2]=f?42208:42216;ih(fe,he,42152,ge);f=1;ee=1309;break}case 1101:{ih(fe,he,42344,ge);f=1;ee=1309;break}case 1103:{ih(fe,he,42384,ge);f=1;ee=1309;break}case 1145:{k[ge>>2]=56343;k[ge+4>>2]=10788;gd(11,13600,ge);f=11;ee=1309;break}case 1316:{ih(fe,he,10096,ge);e=d;f=18;d=h;ee=1311;break a}}if((ee|0)==41)if((Wl(a)|0)==5){k[ie>>2]=5;e=d;d=b;b=5;break a}else{e=d;d=b;b=(k[ie>>2]|0)!=0?1:101;break a}else if((ee|0)==1309){e=d;g=g+1|0;d=h;ee=1311;break a}else if((ee|0)==1318){h=(i[ce>>0]|0)==0?h:7;if((h|0)==3082){e=d;f=3082;d=q;ee=1311;break a}else if((h|0)!=516){e=h&255;if(e>>>0>26|(e|0)==2)f=16328;else f=k[15488+(e<<2)>>2]|0}else f=16344;k[ge>>2]=f;ih(fe,he,10344,ge);e=d;f=h;d=q;ee=1311;break a}}else{h=a+44|0;e=d;b=0;g=0;d=0}while(0);k[ie>>2]=9;k[ge>>2]=15832;ih(h,he,10344,ge);f=9;ee=1311}while(0);if((ee|0)==1317){i[u>>0]=1;ih(v,he,15776,ge);f=7;ee=1311}if((ee|0)==1311){k[ie>>2]=f;kd=k[a+168>>2]|0;nd=k[a+44>>2]|0;k[ge>>2]=g;k[ge+4>>2]=kd;k[ge+8>>2]=nd;gd(f,42256,ge);Wl(a)|0;if((f|0)==3082)i[he+65>>0]=1;if(!(d<<24>>24)){d=b;b=1}else{Am(he,(d&255)+-1|0);d=b;b=1}}nd=je;k[nd>>2]=e;k[nd+4>>2]=c;nd=a+124|0;k[nd>>2]=(k[nd>>2]|0)+d;r=ke;return b|0} -function Jv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=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;A=a+20|0;r=a+14|0;b=i[r>>0]|0;w=a+13|0;c=i[w>>0]|0;a:do if((b&255)>(c&255))b=0;else{y=a+4|0;z=a+16|0;s=a+8|0;t=a+12|0;u=a+24|0;v=a+28|0;e=b&255;f=k[y>>2]|0;d=k[A>>2]|0;b:while(1){q=k[a+(e+-2<<2)+24>>2]|0;p=k[a+(e+-1<<2)+24>>2]|0;if(f){while(1){o=f+12|0;if((d|0)<(k[o>>2]|0)){c=d;b=(k[f+20>>2]|0)+(d*48|0)|0;while(1){do if((k[b+8>>2]|0)==(q|0)?(k[b+12>>2]|0)==(p|0):0){if((l[r>>0]|0)>=3?(k[(k[b>>2]|0)+4>>2]&1|0)!=0:0)break;n=b+18|0;d=j[n>>1]|0;if((d&1024)!=0?(x=i[w>>0]|0,(x&255)<22):0){e=k[(k[b>>2]|0)+16>>2]|0;c:do if(!e)e=0;else while(1){g=k[e+4>>2]|0;if(!(g&4096))break c;if(!(g&262144))e=e+12|0;else e=k[(k[e+20>>2]|0)+4>>2]|0;e=k[e>>2]|0;if(!e){e=0;break}}while(0);d:do if(!(x<<24>>24)){m=0;g=0}else{h=k[e+28>>2]|0;m=e+32|0;g=0;while(1){if((k[a+(g<<2)+24>>2]|0)==(h|0)?(k[a+((g|1)<<2)+24>>2]|0)==(j[m>>1]|0):0){m=x;break d}g=g+2|0;if((g|0)>=(x&255|0)){m=x;break}}}while(0);if((g|0)==(m&255|0)){k[a+(g<<2)+24>>2]=k[e+28>>2];k[a+((g|1)<<2)+24>>2]=j[e+32>>1];i[w>>0]=(l[w>>0]|0)+2}}e=d&65535;if(e&k[z>>2]){if((k[s>>2]|0)!=0&(e&128|0)==0){h=k[k[f>>2]>>2]|0;g=k[b>>2]|0;e=i[t>>0]|0;d=(sv(g)|0)<<24>>24;if((d|0)==66){if(e<<24>>24!=66)break}else if((d|0)!=65?e<<24>>24<=66:0)break;d=Tu(h,k[g+12>>2]|0,k[g+16>>2]|0)|0;if(!d)d=k[(k[h>>2]|0)+8>>2]|0;if(id(k[d>>2]|0,k[s>>2]|0)|0)break;d=j[n>>1]|0}if(!(d&2))break b;d=k[(k[b>>2]|0)+16>>2]|0;if((i[d>>0]|0)!=-102)break b;if((k[d+28>>2]|0)!=(k[u>>2]|0))break b;if((j[d+32>>1]|0)!=(k[v>>2]|0))break b}}while(0);c=c+1|0;if((c|0)>=(k[o>>2]|0))break;else b=b+48|0}c=k[y>>2]|0}else c=f;f=k[c+4>>2]|0;k[y>>2]=f;if(!f)break;else d=0}b=i[r>>0]|0;c=i[w>>0]|0}f=k[a>>2]|0;k[y>>2]=f;d=(b&255)+2|0;b=d&255;i[r>>0]=b;if((b&255)>(c&255)){b=0;break a}else{e=d&255;d=0}}k[A>>2]=c+1}while(0);return b|0}function Kv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0;c=k[a>>2]|0;h=k[k[c>>2]>>2]|0;a=k[a+16>>2]|0;a:do if(!a){c=c+16|0;e=k[c>>2]|0;g=b+36|0;if((k[g>>2]&512|0)!=0&(e|0)!=0){a=b+20|0;f=b+22|0;d=i[b+16>>0]|0;do{do if((i[e+16>>0]|0)==d<<24>>24?(k[e+36>>2]&512|0)!=0:0){if(Yv(e,b)|0){j[a>>1]=j[e+20>>1]|0;j[f>>1]=(m[e+22>>1]|0)+65535;break}if(Yv(b,e)|0){j[a>>1]=j[e+20>>1]|0;j[f>>1]=(m[e+22>>1]|0)+1}}while(0);e=k[e+52>>2]|0}while((e|0)!=0)}a=Zv(c,b)|0;if(a){c=k[a>>2]|0;b:do if(c){a=c+52|0;if(k[a>>2]|0)do{a=Zv(a,b)|0;if(!a)break b;d=k[a>>2]|0;if(!d)break b;k[a>>2]=k[d+52>>2];Ou(h,d);rg(h,d)}while((k[a>>2]|0)!=0)}else{c=rh(h,72,0)|0;k[a>>2]=c;if(!c){a=7;break a}k[c+48>>2]=c+56;j[c+40>>1]=0;j[c+44>>1]=3;k[c+36>>2]=0;k[c+52>>2]=0}while(0);Qv(h,c);do if(!(Su(h,c,m[b+40>>1]|0)|0)){d=c+0|0;a=b+0|0;e=d+44|0;do{k[d>>2]=k[a>>2];d=d+4|0;a=a+4|0}while((d|0)<(e|0));pw(k[c+48>>2]|0,k[b+48>>2]|0,m[c+40>>1]<<2|0)|0;a=k[g>>2]|0;if(a&1024){i[b+28>>0]=0;break}if(a&16384)k[b+28>>2]=0}else{a=c+24|0;k[a+0>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0}while(0);if(((k[c+36>>2]&1024|0)==0?(l=c+28|0,n=k[l>>2]|0,(n|0)!=0):0)?(k[n+40>>2]|0)==0:0){k[l>>2]=0;a=0}else a=0}else a=0}else{c=b;Pv(a,k[c>>2]|0,k[c+4>>2]|0,j[b+20>>1]|0,j[b+22>>1]|0);a=0}while(0);return a|0}function Lv(a,b){a=a|0;b=b|0;var c=0,d=0;c=a<<16>>16;d=b<<16>>16;do if(a<<16>>16>16)if((d|0)<=(c+49|0))if((d|0)>(c+31|0)){a=d+1&65535;break}else{a=(l[34032+(d-c)>>0]|0)+d&65535;break}else a=b;else if((c|0)<=(d+49|0))if((c|0)>(d+31|0)){a=c+1&65535;break}else{a=(l[34032+(c-d)>>0]|0)+c&65535;break}while(0);return a|0}function Mv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;do if(!(Hu(a,b,c)|0))d=1;else{d=i[b>>0]|0;if(d<<24>>24==71){if(Mv(a,k[b+12>>2]|0,c)|0){d=1;break}if(Mv(a,k[b+16>>2]|0,c)|0){d=1;break}if(d<<24>>24==77)e=6}else if(d<<24>>24==77)e=6;if(((e|0)==6?(Hu(k[a+12>>2]|0,k[b+12>>2]|0,c)|0)==0:0)?(d=i[a>>0]|0,!(d<<24>>24==73|d<<24>>24==76)):0){d=1;break}d=0}while(0);return d|0}function Nv(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,l=0,n=0,o=0,p=0,q=0,t=0,u=0,v=0;v=r;r=r+16|0;if((r|0)>=(s|0))ka();u=v;q=b;t=b+8|0;d=t;p=~(k[d>>2]|k[q>>2]);q=~(k[d+4>>2]|k[q+4>>2]);d=k[a+12>>2]|0;n=a+20|0;a:do if((d|0)>0){o=b+40|0;a=b+22|0;l=b+48|0;b=0;i=k[n>>2]|0;while(1){if(j[i+20>>1]&2)break a;h=i+40|0;g=k[h>>2]|0;h=k[h+4>>2]|0;f=t;b:do if(((k[f>>2]&g|0)!=0?1:(k[f+4>>2]&h|0)!=0)&((g&p|0)==0&(h&q|0)==0)){e=j[o>>1]|0;c:do if(e<<16>>16){h=k[l>>2]|0;g=e&65535;while(1){e=g;g=g+-1|0;f=k[h+(g<<2)>>2]|0;if(f){if((f|0)==(i|0))break;f=k[f+4>>2]|0;if((f|0)>-1?((k[n>>2]|0)+(f*48|0)|0)==(i|0):0)break}if((g|0)<=0)break c}if((e|0)>=1)break b}while(0);e=j[i+16>>1]|0;if(e<<16>>16<1){j[a>>1]=(m[a>>1]|0)+(e&65535);break}j[a>>1]=(j[a>>1]|0)+-1<<16>>16;if(j[i+18>>1]&2){g=(Rs(k[(k[i>>2]|0)+16>>2]|0,u)|0)!=0;h=k[u>>2]|0;h=g&(h|0)>-2&(h|0)<2?10:20;k[u>>2]=h;b=(b<<16>>16|0)<(h|0)?h&65535:b}}while(0);d=d+-1|0;if((d|0)<=0)break;else i=i+48|0}}else{a=b+22|0;b=0}while(0);b=(c<<16>>16)-(b<<16>>16)|0;if((j[a>>1]|0)>(b|0))j[a>>1]=b;r=v;return}function Ov(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,n=0,o=0,p=0,q=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,da=0;da=r;r=r+112|0;if((r|0)>=(s|0))ka();O=da;S=k[k[k[a>>2]>>2]>>2]|0;ba=k[a+12>>2]|0;if(!(i[S+65>>0]|0)){ca=ba+36|0;if(!(k[ca>>2]&32))if((k[c+40>>2]|0)<1)e=63;else e=(i[b+36>>0]&8)<<4^191;else e=24;T=c+51|0;$=ba+24|0;f=j[(k[c+4>>2]|0)+(m[$>>1]<<1)>>1]|0;K=f<<16>>16;L=a+4|0;e=Iv(O,k[L>>2]|0,k[b+40>>2]|0,K,(i[T>>0]&4)==0?e:e&131,c)|0;U=j[$>>1]|0;V=ba+42|0;Q=j[V>>1]|0;W=ba+40|0;R=j[W>>1]|0;X=k[ca>>2]|0;N=ba;M=k[N>>2]|0;N=k[N+4>>2]|0;Y=ba+22|0;Z=j[Y>>1]|0;j[ba+18>>1]=0;_=c+8|0;A=j[k[_>>2]>>1]|0;if(A<<16>>16<11)z=0;else{z=A<<16>>16;z=((ks(z,((z|0)<0)<<31>>31)|0)&65535)+65503&65535}a:do if(!e)e=0;else{B=f<<16>>16<0;C=b+16|0;D=ba+8|0;E=(R&65535)+1|0;F=ba+48|0;G=d<<16>>16==0;H=c+46|0;t=f<<16>>16>-1;u=c+50|0;v=c+44|0;w=ba+20|0;x=d<<16>>16;y=c+48|0;l=0;p=e;n=0;while(1){f=j[p+18>>1]|0;o=f&65535;if(f<<16>>16==128)if(!B?(i[(k[(k[C>>2]|0)+4>>2]|0)+(K*24|0)+20>>0]|0)==0:0)P=12;else{g=l;f=n;e=0}else P=12;if((P|0)==12){P=0;g=p+32|0;q=g;h=D;if(((k[h>>2]&k[q>>2]|0)==0?(k[h+4>>2]&k[q+4>>2]|0)==0:0)?(I=p+20|0,!((j[I>>1]&256)!=0&f<<16>>16==16)):0){k[ca>>2]=X;j[$>>1]=U;j[W>>1]=R;if(Su(S,ba,E)|0){e=0;break a}e=j[W>>1]|0;h=e+1<<16>>16;j[W>>1]=h;k[(k[F>>2]|0)+((e&65535)<<2)>>2]=p;e=g;f=D;g=(k[e+4>>2]|N)&~k[f+4>>2];q=ba;k[q>>2]=(k[e>>2]|M)&~k[f>>2];k[q+4>>2]=g;b:do if(!(o&1)){if(o&2){e=k[ca>>2]|0;f=e|1;k[ca>>2]=f;do if(!B){if(!G){q=0;break b}if((m[$>>1]|0)!=((m[H>>1]|0)+-1|0)){q=0;break b}if(!t)break;if(i[u>>0]|0)break;f=e|65537;k[ca>>2]=f;q=0;break b}while(0);f=e|4097;k[ca>>2]=f;q=0;break}if(o&128){f=k[ca>>2]|8;k[ca>>2]=f;q=0;break}e=k[ca>>2]|0;if(!(o&36)){f=e|18;k[ca>>2]=f;if(!(e&32)){q=0;l=0;n=p;break}q=0;l=k[(k[F>>2]|0)+((h&65535)+-2<<2)>>2]|0;n=p;break}f=e|34;k[ca>>2]=f;if(!(j[I>>1]&256)){q=0;l=p;n=0}else{e=p+48|0;if(Su(S,ba,(h&65535)+1|0)|0){e=0;break a}f=j[W>>1]|0;j[W>>1]=f+1<<16>>16;k[(k[F>>2]|0)+((f&65535)<<2)>>2]=e;f=k[ca>>2]|16;k[ca>>2]=f;q=0;l=p;n=e}}else{e=k[p>>2]|0;f=k[ca>>2]|4;k[ca>>2]=f;if(!(k[e+4>>2]&2048)){e=k[e+20>>2]|0;if((e|0)!=0?(J=k[e>>2]|0,(J|0)!=0):0)q=(ks(J,((J|0)<0)<<31>>31)|0)<<16>>16;else q=0}else q=46}while(0);do if(!(f&2)){e=(j[$>>1]|0)+1<<16>>16;j[$>>1]=e;e=e&65535;g=j[p+16>>1]|0;if(g<<16>>16<1&t){h=(g&65535)-q+(m[Y>>1]|0)&65535;j[Y>>1]=h;break}g=k[_>>2]|0;g=(m[Y>>1]|0)+((m[g+(e<<1)>>1]|0)-(m[g+(e+-1<<1)>>1]|0))|0;e=g&65535;j[Y>>1]=e;if(!(o&128))h=e;else{h=g+10&65535;j[Y>>1]=h}}else{e=j[Y>>1]|0;h=e<<16>>16;do if(l){g=j[l+16>>1]|0;if(g<<16>>16<1){e=(g&65535)+(e&65535)&65535;break}else{e=(e&65535)+65516&65535;break}}while(0);do if(n){g=j[n+16>>1]|0;if(g<<16>>16<1){e=(g&65535)+(e&65535)&65535;break}else{e=(e&65535)+65516&65535;break}}while(0);g=(l|0)!=0;do if(g?(j[l+16>>1]|0)>0&(n|0)!=0:0){if((j[n+16>>1]|0)<=0)break;e=(e&65535)+65516&65535}while(0);h=(((n|0)!=0)<<31>>31)+(g<<31>>31)+h|0;p=e<<16>>16<10?10:e<<16>>16;h=((p|0)<(h|0)?p:h)&65535;j[Y>>1]=h}while(0);e=h&65535;g=Lv(z,e+1+(((j[v>>1]|0)*15|0)/(j[(k[C>>2]|0)+42>>1]|0)|0)&65535)|0;if(!(f&320))g=Lv(g,e+16&65535)|0;f=q+x|0;j[w>>1]=(g&65535)+f;j[Y>>1]=e+f;Nv(k[L>>2]|0,ba,A);e=Kv(a,ba)|0;q=k[ca>>2]|0;j[Y>>1]=(q&2|0)==0?h:Z;if((q&16|0)==0?(m[$>>1]|0)<(m[y>>1]|0):0)Ov(a,b,c,f&65535)|0;j[Y>>1]=Z;g=l;f=n}else{g=l;f=n;e=0}}p=Jv(O)|0;if(!((e|0)==0&(p|0)!=0))break;else{l=g;n=f}}}while(0);f=ba;k[f>>2]=M;k[f+4>>2]=N;j[$>>1]=U;j[V>>1]=Q;k[ca>>2]=X;j[Y>>1]=Z;j[W>>1]=R;f=U&65535;if(((U<<16>>16==Q<<16>>16?(aa=f+1|0,aa>>>0<(m[c+46>>1]|0)>>>0):0)?(i[T>>0]&64)==0:0)?(j[(k[_>>2]|0)+(aa<<1)>>1]|0)>41:0){e=Su(S,ba,(R&65535)+1|0)|0;if(!e){j[$>>1]=(j[$>>1]|0)+1<<16>>16;j[V>>1]=(j[V>>1]|0)+1<<16>>16;e=j[W>>1]|0;j[W>>1]=e+1<<16>>16;k[(k[ba+48>>2]|0)+((e&65535)<<2)>>2]=0;k[ca>>2]=k[ca>>2]|32768;e=k[_>>2]|0;e=(m[e+(f<<1)>>1]|0)-(m[e+(aa<<1)>>1]|0)|0;j[Y>>1]=(m[Y>>1]|0)-e;Ov(a,b,c,(((e<<16)+327680|0)>>>16)+(d&65535)&65535)|0;j[Y>>1]=Z;j[$>>1]=U;j[V>>1]=U;k[ca>>2]=X;e=0}}}else e=7;r=da;return e|0}function Pv(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,l=0,m=0,n=0,o=0,p=0;l=j[a>>1]|0;f=a+8|0;a:do if(l<<16>>16){h=l;i=f;while(1){g=j[i+8>>1]|0;if(g<<16>>16>=d<<16>>16?(p=i,(k[p>>2]&b|0)==(b|0)?(k[p+4>>2]&c|0)==(c|0):0):0){n=i;o=14;break a}if(g<<16>>16<=d<<16>>16?(g=i,p=k[g>>2]|0,g=k[g+4>>2]|0,(p&b|0)==(p|0)&(g&c|0)==(g|0)):0)break a;h=h+-1<<16>>16;if(!(h<<16>>16))break;else i=i+16|0}if((l&65535)>=3){g=j[a+16>>1]|0;i=1;do{if(g<<16>>16>(j[a+(i<<4)+16>>1]|0))f=a+(i<<4)+8|0;i=i+1|0;g=j[f+8>>1]|0}while((i&65535)<(l&65535));if(g<<16>>16>d<<16>>16){n=f;o=14}}else o=9}else o=9;while(0);if((o|0)==9){n=l&65535;j[a>>1]=l+1<<16>>16;j[a+(n<<4)+18>>1]=e;n=a+(n<<4)+8|0;o=14}if((o|0)==14?(m=n,k[m>>2]=b,k[m+4>>2]=c,j[n+8>>1]=d,m=n+10|0,(j[m>>1]|0)>e<<16>>16):0)j[m>>1]=e;return}function Qv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=k[b+36>>2]|0;do if(c&17408){if((c&1024|0)!=0?(f=b+28|0,(i[f>>0]|0)!=0):0){c=b+32|0;$c(k[c>>2]|0);i[f>>0]=0;k[c>>2]=0;break}if((c&16384|0)!=0?(d=b+28|0,e=k[d>>2]|0,(e|0)!=0):0){rg(a,k[e+16>>2]|0);rg(a,k[d>>2]|0);k[d>>2]=0}}while(0);return}function Rv(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;var h=0,n=0,o=0,p=0,q=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,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,la=0,ma=0,na=0,oa=0,pa=0,qa=0;qa=r;r=r+32|0;if((r|0)>=(s|0))ka();la=qa;n=k[k[a>>2]>>2]|0;ja=e&65535;if(e<<16>>16!=0?(j[n+60>>1]&128)!=0:0)h=0;else ma=3;a:do if((ma|0)==3){pa=k[b>>2]|0;h=pa&65535;if(h>>>0<=63){na=nw(1,0,h|0)|0;na=ow(na|0,L|0,-1,-1)|0;oa=L;b:do if((na|0)==0&(oa|0)==0){b=0;c=0;n=1}else{da=c+24|0;ea=a+4|0;fa=(h|0)==0;ba=b+4|0;ca=(d&768)==0;aa=n+8|0;T=(d&256)==0;U=a+68|0;V=la+20|0;W=la+4|0;Z=la+24|0;_=a+328|0;X=0;Y=0;b=0;c=0;d=0;o=0;$=0;n=1;e=0;while(1){if(($|0)>0){R=e+8|0;S=k[R>>2]|d;o=k[R+4>>2]|o}else S=d;if(($|0)<(ja|0))e=k[(k[da>>2]|0)+($<<2)>>2]|0;else e=f;y=e+36|0;d=k[y>>2]|0;if(d&1024)break;R=k[(k[ea>>2]|0)+((l[e+16>>0]|0)*72|0)+48>>2]|0;if(!fa){d=~S;q=~o;v=0;do{x=nw(1,0,v|0)|0;w=L;c:do if((x&b|0)==0&(w&c|0)==0){p=k[(k[ba>>2]|0)+(v*20|0)>>2]|0;u=k[p+4>>2]|0;if(u&4096)do{if(!(u&262144))p=p+12|0;else p=k[(k[p+20>>2]|0)+4>>2]|0;p=k[p>>2]|0;u=k[p+4>>2]|0}while((u&4096|0)!=0);if(((i[p>>0]|0)==-102?(k[p+28>>2]|0)==(R|0):0)?(ga=p+32|0,ha=Ku(_,R,j[ga>>1]|0,d,q,130,0)|0,(ha|0)!=0):0){do if(j[ha+18>>1]&2){if((j[ga>>1]|0)<=-1)break;p=hu(k[a>>2]|0,k[(k[ba>>2]|0)+(v*20|0)>>2]|0)|0;if(!p)p=k[aa>>2]|0;u=k[p>>2]|0;t=hu(k[a>>2]|0,k[ha>>2]|0)|0;if(!t)t=k[aa>>2]|0;if(id(u,k[t>>2]|0)|0)break c}while(0);b=x|b;c=w|c}}while(0);v=v+1|0}while((v|0)<(h|0));d=k[y>>2]|0}do if(!(d&4096)){if(!(d&256)){p=k[e+28>>2]|0;if(!p){h=0;break a}if(i[p+51>>0]&4){h=0;break a}d=j[p+48>>1]|0;n=(i[p+50>>0]|0)!=0&1;if(!(d<<16>>16)){ma=71;break}else{P=d&65535;Q=j[p+46>>1]|0}}else{P=1;Q=0;p=0}F=e+24|0;G=e+42|0;H=e+48|0;I=(p|0)==0;J=p+32|0;K=nw(1,0,$|0)|0;M=L;N=p+4|0;O=p+28|0;E=p+12|0;d=0;p=0;x=0;D=0;d:while(1){w=(p|0)<(m[F>>1]|0);if((w?(j[G>>1]|0)==0:0)?(ia=m[(k[(k[H>>2]|0)+(p<<2)>>2]|0)+18>>1]|0,(ia&130|0)!=0):0){n=(ia&128|0)==0?n:0;w=D}else{if(!I){u=j[(k[N>>2]|0)+(p<<1)>>1]|0;t=i[(k[O>>2]|0)+p>>0]|0;q=k[E>>2]|0;u=u<<16>>16==(j[q+36>>1]|0)?-1:u<<16>>16;v=(u|0)>-1;if(n<<24>>24!=0&v)if(w){v=1;C=u}else{v=1;C=u;n=(i[(k[q+4>>2]|0)+(u*24|0)+20>>0]|0)==0?0:n}else C=u}else{v=0;C=-1;t=0}if(fa){ma=68;break}else{w=1;B=0}e:while(1){z=nw(1,0,B|0)|0;A=L;do if((z&b|0)==0&(A&c|0)==0){q=k[(k[ba>>2]|0)+(B*20|0)>>2]|0;u=k[q+4>>2]|0;if(!(u&4096))y=q;else{y=q;do{if(!(u&262144))u=y+12|0;else u=k[(k[y+20>>2]|0)+4>>2]|0;y=k[u>>2]|0;u=k[y+4>>2]|0}while((u&4096|0)!=0)}w=ca?0:w;if((i[y>>0]|0)!=-102)break;if((k[y+28>>2]|0)!=(R|0))break;if((j[y+32>>1]|0)!=(C|0))break;if(!v){y=z;v=A;w=B;break e}u=hu(k[a>>2]|0,q)|0;if(!u)u=k[aa>>2]|0;if(!(id(k[u>>2]|0,k[(k[J>>2]|0)+(p<<2)>>2]|0)|0)){y=z;v=A;w=B;break e}}while(0);B=B+1|0;if(!(w<<24>>24!=0&(B|0)<(h|0))){ma=68;break d}}do if(T){if(D<<24>>24)if((t^x)<<24>>24==(i[(k[ba>>2]|0)+(w*20|0)+12>>0]|0)){w=D;break}else{ma=68;break d}q=i[(k[ba>>2]|0)+(w*20|0)+12>>0]|0;x=q^t;if(t<<24>>24==q<<24>>24){w=1;break}q=g;t=k[q+4>>2]|M;w=g;k[w>>2]=k[q>>2]|K;k[w+4>>2]=t;w=1}else w=D;while(0);b=y|b;c=v|c;d=(C|0)<0?1:d}p=p+1|0;if((p|0)>=(P|0))break;else D=w}if((ma|0)==68){ma=0;n=(p|0)==0|(p|0)<(Q&65535|0)?0:n}if(!(d<<24>>24))ma=71;else n=1}else ma=71;while(0);if((ma|0)==71){ma=0;if(!(n<<24>>24)){n=0;break b}}R=e+8|0;X=k[R>>2]|X;Y=k[R+4>>2]|Y;if(!fa){w=~X;x=~Y;v=0;do{p=nw(1,0,v|0)|0;u=L;do if((p&b|0)==0&(u&c|0)==0){d=k[(k[ba>>2]|0)+(v*20|0)>>2]|0;q=Fv(U,d)|0;t=L;if((q|0)==0&(t|0)==0?(k[la+0>>2]=0,k[la+4>>2]=0,k[la+8>>2]=0,k[la+12>>2]=0,k[la+16>>2]=0,k[la+20>>2]=0,i[V>>0]=1,k[la>>2]=78,k[W>>2]=79,k[Z>>2]=0,ws(la,d)|0,(i[V>>0]|0)==0):0)break;R=(q&w|0)==0&(t&x|0)==0;b=(R?p:0)|b;c=(R?u:0)|c}while(0);v=v+1|0}while((v|0)<(h|0))}if(c>>>0>oa>>>0|(c|0)==(oa|0)&b>>>0>=na>>>0|n<<24>>24==0|($|0)>=(ja|0))break b;else{d=S;$=$+1|0}}ca=(i[e+29>>0]|0)==0;b=ca?b:na;c=ca?c:oa}while(0);if((b|0)==(na|0)&(c|0)==(oa|0)){h=pa&255;break}if(!(n<<24>>24)){do{h=h+-1|0;if((h|0)<=0){h=0;break a}ba=nw(1,0,h|0)|0;ba=ow(ba|0,L|0,-1,-1)|0;ca=L}while(!((ba&b|0)==(ba|0)&(ca&c|0)==(ca|0)));h=h&255}else h=-1}else h=0}while(0);r=qa;return h|0}function Sv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(b)Xk(a,33920,5);if(!c)b=0;else{b=c;while(1)if(!(i[b>>0]|0))break;else b=b+1|0;b=b-c&1073741823}Xk(a,c,b);Xk(a,d,1);Xk(a,13552,1);return}function Tv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=k[k[k[a>>2]>>2]>>2]|0;b=k[a+12>>2]|0;e=a+20|0;if((b|0)>0){f=k[e>>2]|0;while(1){b=b+-1|0;d=f+20|0;c=j[d>>1]|0;if(c&1){Lk(g,k[f>>2]|0);c=j[d>>1]|0}c=c&65535;if(!(c&16)){if(c&32){c=k[f+12>>2]|0;Tv(c);rg(g,c)}}else{c=k[f+12>>2]|0;Tv(c);rg(g,c)}if((b|0)<=0)break;else f=f+48|0}}b=k[e>>2]|0;if((b|0)!=(a+24|0))rg(g,b);return}function Uv(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,t=0,u=0;q=r;r=r+32|0;if((r|0)>=(s|0))ka();p=q;e=k[a+8>>2]|0;f=k[a>>2]|0;if(b){g=(c|0)==10;h=a+437|0;j=p+4|0;m=p+1|0;n=p+8|0;o=p+12|0;d=c&255;do{if(g)c=i[b+1>>0]|0;else c=d;i[h>>0]=c;c=l[b>>0]|0;if((c|0)==108){u=_v(a,b)|0;t=lr(f,k[b+8>>2]|0,0)|0;c=Sr(f,k[b+28>>2]|0)|0;yr(a,u,t,c,l[h>>0]|0)}else if((c|0)==110){u=_v(a,b)|0;t=Ur(f,k[b+24>>2]|0,0)|0;c=Rr(f,k[b+20>>2]|0,0,0)|0;xr(a,u,t,c,l[h>>0]|0)}else if((c|0)==109){c=_v(a,b)|0;wr(a,c,Rr(f,k[b+20>>2]|0,0,0)|0)}else{c=lr(f,k[b+8>>2]|0,0)|0;i[p>>0]=4;k[j>>2]=0;i[m>>0]=0;k[n>>2]=0;k[o>>2]=0;nr(a,c,p)|0;Rk(f,c,1)}if((i[b>>0]|0)!=119)Bh(e,98,0,0,0)|0;b=k[b+32>>2]|0}while((b|0)!=0)}r=q;return}function Vv(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;h=r;r=r+16|0;if((r|0)>=(s|0))ka();e=h;g=k[a>>2]|0;k[e>>2]=0;k[e+4>>2]=0;e=sr(g,159,e,0)|0;do if(!e)e=0;else{f=d<<16>>16;if(d<<16>>16>-1?(j[b+36>>1]|0)!=d<<16>>16:0){d=k[b+4>>2]|0;k[e+28>>2]=c+1+f;i[e+1>>0]=i[d+(f*24|0)+21>>0]|0;f=k[d+(f*24|0)+16>>2]|0;if(!f)f=k[k[g+8>>2]>>2]|0;e=Cv(a,e,f)|0;break}k[e+28>>2]=c;i[e+1>>0]=68}while(0);r=h;return e|0}function Wv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a=rh(a,48,0)|0;if(a){e=a+0|0;f=e+44|0;do{i[e>>0]=0;e=e+1|0}while((e|0)<(f|0));i[a>>0]=-102;j[a+34>>1]=-1;k[a+24>>2]=1;e=k[b+(c*72|0)+24>>2]|0;k[a+44>>2]=e;k[a+28>>2]=k[b+(c*72|0)+48>>2];if((j[e+36>>1]|0)==(d|0))j[a+32>>1]=-1;else{j[a+32>>1]=d;g=(d|0)>63;d=nw(1,0,d|0)|0;e=b+(c*72|0)+64|0;c=e;f=k[c+4>>2]|(g?-2147483648:L);k[e>>2]=k[c>>2]|(g?0:d);k[e+4>>2]=f}e=a+4|0;k[e>>2]=k[e>>2]|4}return a|0}function Xv(a,b){a=a|0;b=b|0;if((i[b>>0]|0)==-101){b=b+38|0;i[b>>0]=(l[b>>0]|0)+(k[a+24>>2]|0)}return 0}function Yv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=j[a+40>>1]|0;f=c&65535;e=j[a+42>>1]|0;h=m[b+40>>1]|0;d=j[b+42>>1]|0;a:do if(!((d&65535)>(e&65535)?1:(f-(e&65535)|0)>=(h-(d&65535)|0))){d=j[a+20>>1]|0;e=j[b+20>>1]|0;if(d<<16>>16>=e<<16>>16){if(d<<16>>16>e<<16>>16){c=0;break}if((j[a+22>>1]|0)>(j[b+22>>1]|0)){c=0;break}}if(!(c<<16>>16))c=1;else{g=k[a+48>>2]|0;b=b+48|0;a=f;while(1){a=a+-1|0;e=k[g+(a<<2)>>2]|0;if(e){c=h;while(1){d=c+-1|0;if((c|0)<=0){c=0;break a}if((k[(k[b>>2]|0)+(d<<2)>>2]|0)==(e|0))break;else c=d}if((c|0)<1){c=0;break a}}if((a|0)<=0){c=1;break}}}}else c=0;while(0);return c|0}function Zv(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,r=0,s=0;c=k[a>>2]|0;a:do if(c){h=i[b+16>>0]|0;l=b+17|0;m=b+18|0;n=b+20|0;o=b+22|0;p=b+42|0;q=b+36|0;do{if((i[c+16>>0]|0)==h<<24>>24?(i[c+17>>0]|0)==(i[l>>0]|0):0){if((((k[c+36>>2]&16384|0)!=0?(j[p>>1]|0)==0:0)?(k[q>>2]&513|0)==513:0)?(f=c,g=b,e=k[g>>2]|0,g=k[g+4>>2]|0,(e&k[f>>2]|0)==(e|0)?(g&k[f+4>>2]|0)==(g|0):0):0)break a;r=c;s=k[r>>2]|0;r=k[r+4>>2]|0;e=b;d=k[e>>2]|0;e=k[e+4>>2]|0;f=d&s;g=e&r;if((((f|0)==(s|0)&(g|0)==(r|0)?(j[c+18>>1]|0)<=(j[m>>1]|0):0)?(j[c+20>>1]|0)<=(j[n>>1]|0):0)?(j[c+22>>1]|0)<=(j[o>>1]|0):0){a=0;break a}if(((f|0)==(d|0)&(g|0)==(e|0)?(j[c+20>>1]|0)>=(j[n>>1]|0):0)?(j[c+22>>1]|0)>=(j[o>>1]|0):0)break a}a=c+52|0;c=k[a>>2]|0}while((c|0)!=0)}while(0);return a|0}function _v(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=ur(k[a>>2]|0,0,b+12|0,0)|0;do if(g){f=k[a>>2]|0;e=k[(k[b+4>>2]|0)+20>>2]|0;a:do if(e){d=k[f+20>>2]|0;if((d|0)>0){b=k[f+16>>2]|0;c=0;while(1){a=c+1|0;if((k[b+(c<<4)+12>>2]|0)==(e|0)){a=c;c=7;break a}if((a|0)<(d|0))c=a;else{c=7;break}}}else a=0}else{a=-1e6;c=7}while(0);if((c|0)==7)if(!((a|0)==0|(a|0)>1))break;a=ph(f,k[(k[f+16>>2]|0)+(a<<4)>>2]|0)|0;k[g+(((k[g>>2]|0)+-1|0)*72|0)+12>>2]=a}while(0);return g|0}function $v(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,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,O=0,P=0,Q=0;do if(a>>>0<245){if(a>>>0<11)p=16;else p=a+11&-8;a=p>>>3;l=k[12266]|0;h=l>>>a;if(h&3){d=(h&1^1)+a|0;e=d<<1;b=49104+(e<<2)|0;e=49104+(e+2<<2)|0;f=k[e>>2]|0;g=f+8|0;h=k[g>>2]|0;do if((b|0)!=(h|0)){if(h>>>0<(k[12270]|0)>>>0)Tb();c=h+12|0;if((k[c>>2]|0)==(f|0)){k[c>>2]=b;k[e>>2]=h;break}else Tb()}else k[12266]=l&~(1<>2]=w|3;w=f+(w|4)|0;k[w>>2]=k[w>>2]|1;w=g;return w|0}j=k[12268]|0;if(p>>>0>j>>>0){if(h){e=2<>>12&16;e=e>>>a;d=e>>>5&8;e=e>>>d;c=e>>>2&4;e=e>>>c;f=e>>>1&2;e=e>>>f;g=e>>>1&1;g=(d|a|c|f|g)+(e>>>g)|0;e=g<<1;f=49104+(e<<2)|0;e=49104+(e+2<<2)|0;c=k[e>>2]|0;a=c+8|0;d=k[a>>2]|0;do if((f|0)!=(d|0)){if(d>>>0<(k[12270]|0)>>>0)Tb();h=d+12|0;if((k[h>>2]|0)==(c|0)){k[h>>2]=f;k[e>>2]=d;m=k[12268]|0;break}else Tb()}else{k[12266]=l&~(1<>2]=p|3;i=c+p|0;k[c+(p|4)>>2]=b|1;k[c+w>>2]=b;if(m){d=k[12271]|0;f=m>>>3;h=f<<1;e=49104+(h<<2)|0;g=k[12266]|0;f=1<>2]|0;if(h>>>0<(k[12270]|0)>>>0)Tb();else{n=g;o=h}}else{k[12266]=g|f;n=49104+(h+2<<2)|0;o=e}k[n>>2]=d;k[o+12>>2]=d;k[d+8>>2]=o;k[d+12>>2]=e}k[12268]=b;k[12271]=i;w=a;return w|0}a=k[12267]|0;if(a){g=(a&0-a)+-1|0;v=g>>>12&16;g=g>>>v;u=g>>>5&8;g=g>>>u;w=g>>>2&4;g=g>>>w;h=g>>>1&2;g=g>>>h;f=g>>>1&1;f=k[49368+((u|v|w|h|f)+(g>>>f)<<2)>>2]|0;g=(k[f+4>>2]&-8)-p|0;h=f;while(1){c=k[h+16>>2]|0;if(!c){c=k[h+20>>2]|0;if(!c){l=g;j=f;break}}h=(k[c+4>>2]&-8)-p|0;w=h>>>0>>0;g=w?h:g;h=c;f=w?c:f}a=k[12270]|0;if(j>>>0>>0)Tb();b=j+p|0;if(j>>>0>=b>>>0)Tb();i=k[j+24>>2]|0;f=k[j+12>>2]|0;do if((f|0)==(j|0)){g=j+20|0;h=k[g>>2]|0;if(!h){g=j+16|0;h=k[g>>2]|0;if(!h){d=0;break}}while(1){f=h+20|0;e=k[f>>2]|0;if(e){h=e;g=f;continue}f=h+16|0;e=k[f>>2]|0;if(!e)break;else{h=e;g=f}}if(g>>>0>>0)Tb();else{k[g>>2]=0;d=h;break}}else{e=k[j+8>>2]|0;if(e>>>0>>0)Tb();h=e+12|0;if((k[h>>2]|0)!=(j|0))Tb();g=f+8|0;if((k[g>>2]|0)==(j|0)){k[h>>2]=f;k[g>>2]=e;d=f;break}else Tb()}while(0);do if(i){h=k[j+28>>2]|0;g=49368+(h<<2)|0;if((j|0)==(k[g>>2]|0)){k[g>>2]=d;if(!d){k[12267]=k[12267]&~(1<>>0<(k[12270]|0)>>>0)Tb();h=i+16|0;if((k[h>>2]|0)==(j|0))k[h>>2]=d;else k[i+20>>2]=d;if(!d)break}g=k[12270]|0;if(d>>>0>>0)Tb();k[d+24>>2]=i;h=k[j+16>>2]|0;do if(h)if(h>>>0>>0)Tb();else{k[d+16>>2]=h;k[h+24>>2]=d;break}while(0);h=k[j+20>>2]|0;if(h)if(h>>>0<(k[12270]|0)>>>0)Tb();else{k[d+20>>2]=h;k[h+24>>2]=d;break}}while(0);if(l>>>0<16){w=l+p|0;k[j+4>>2]=w|3;w=j+(w+4)|0;k[w>>2]=k[w>>2]|1}else{k[j+4>>2]=p|3;k[j+(p|4)>>2]=l|1;k[j+(l+p)>>2]=l;c=k[12268]|0;if(c){d=k[12271]|0;f=c>>>3;h=f<<1;e=49104+(h<<2)|0;g=k[12266]|0;f=1<>2]|0;if(g>>>0<(k[12270]|0)>>>0)Tb();else{q=h;r=g}}else{k[12266]=g|f;q=49104+(h+2<<2)|0;r=e}k[q>>2]=d;k[r+12>>2]=d;k[d+8>>2]=r;k[d+12>>2]=e}k[12268]=l;k[12271]=b}w=j+8|0;return w|0}else r=p}else r=p}else if(a>>>0<=4294967231){a=a+11|0;r=a&-8;j=k[12267]|0;if(j){g=0-r|0;a=a>>>8;if(a)if(r>>>0>16777215)c=31;else{p=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;c=14-(o|p|c)+(q<>>15)|0;c=r>>>(c+7|0)&1|c<<1}else c=0;e=k[49368+(c<<2)>>2]|0;a:do if(!e){a=0;h=0}else{if((c|0)==31)h=0;else h=25-(c>>>1)|0;l=g;a=0;b=r<>2]&-8;g=d-r|0;if(g>>>0>>0)if((d|0)==(r|0)){a=e;h=e;break a}else h=e;else g=l;q=k[e+20>>2]|0;e=k[e+(b>>>31<<2)+16>>2]|0;a=(q|0)==0|(q|0)==(e|0)?a:q;if(!e)break;else{l=g;b=b<<1}}}while(0);if((a|0)==0&(h|0)==0){a=2<>>12&16;q=q>>>n;m=q>>>5&8;q=q>>>m;o=q>>>2&4;q=q>>>o;p=q>>>1&2;q=q>>>p;a=q>>>1&1;a=k[49368+((m|n|o|p|a)+(q>>>a)<<2)>>2]|0}if(!a){o=g;p=h}else while(1){q=(k[a+4>>2]&-8)-r|0;e=q>>>0>>0;g=e?q:g;h=e?a:h;e=k[a+16>>2]|0;if(e){a=e;continue}a=k[a+20>>2]|0;if(!a){o=g;p=h;break}}if((p|0)!=0?o>>>0<((k[12268]|0)-r|0)>>>0:0){a=k[12270]|0;if(p>>>0>>0)Tb();m=p+r|0;if(p>>>0>=m>>>0)Tb();i=k[p+24>>2]|0;f=k[p+12>>2]|0;do if((f|0)==(p|0)){g=p+20|0;h=k[g>>2]|0;if(!h){g=p+16|0;h=k[g>>2]|0;if(!h){t=0;break}}while(1){f=h+20|0;e=k[f>>2]|0;if(e){h=e;g=f;continue}f=h+16|0;e=k[f>>2]|0;if(!e)break;else{h=e;g=f}}if(g>>>0>>0)Tb();else{k[g>>2]=0;t=h;break}}else{e=k[p+8>>2]|0;if(e>>>0>>0)Tb();h=e+12|0;if((k[h>>2]|0)!=(p|0))Tb();g=f+8|0;if((k[g>>2]|0)==(p|0)){k[h>>2]=f;k[g>>2]=e;t=f;break}else Tb()}while(0);do if(i){h=k[p+28>>2]|0;g=49368+(h<<2)|0;if((p|0)==(k[g>>2]|0)){k[g>>2]=t;if(!t){k[12267]=k[12267]&~(1<>>0<(k[12270]|0)>>>0)Tb();h=i+16|0;if((k[h>>2]|0)==(p|0))k[h>>2]=t;else k[i+20>>2]=t;if(!t)break}g=k[12270]|0;if(t>>>0>>0)Tb();k[t+24>>2]=i;h=k[p+16>>2]|0;do if(h)if(h>>>0>>0)Tb();else{k[t+16>>2]=h;k[h+24>>2]=t;break}while(0);h=k[p+20>>2]|0;if(h)if(h>>>0<(k[12270]|0)>>>0)Tb();else{k[t+20>>2]=h;k[h+24>>2]=t;break}}while(0);b:do if(o>>>0>=16){k[p+4>>2]=r|3;k[p+(r|4)>>2]=o|1;k[p+(o+r)>>2]=o;h=o>>>3;if(o>>>0<256){g=h<<1;e=49104+(g<<2)|0;f=k[12266]|0;h=1<>2]|0;if(g>>>0>=(k[12270]|0)>>>0){u=h;v=g;break}Tb()}while(0);k[u>>2]=m;k[v+12>>2]=m;k[p+(r+8)>>2]=v;k[p+(r+12)>>2]=e;break}c=o>>>8;if(c)if(o>>>0>16777215)e=31;else{v=(c+1048320|0)>>>16&8;w=c<>>16&4;w=w<>>16&2;e=14-(u|v|e)+(w<>>15)|0;e=o>>>(e+7|0)&1|e<<1}else e=0;h=49368+(e<<2)|0;k[p+(r+28)>>2]=e;k[p+(r+20)>>2]=0;k[p+(r+16)>>2]=0;g=k[12267]|0;f=1<>2]=m;k[p+(r+24)>>2]=h;k[p+(r+12)>>2]=m;k[p+(r+8)>>2]=m;break}c=k[h>>2]|0;if((e|0)==31)b=0;else b=25-(e>>>1)|0;c:do if((k[c+4>>2]&-8|0)!=(o|0)){g=o<>>31<<2)+16|0;h=k[b>>2]|0;if(!h)break;if((k[h+4>>2]&-8|0)==(o|0)){B=h;break c}else{g=g<<1;c=h}}if(b>>>0<(k[12270]|0)>>>0)Tb();else{k[b>>2]=m;k[p+(r+24)>>2]=c;k[p+(r+12)>>2]=m;k[p+(r+8)>>2]=m;break b}}else B=c;while(0);c=B+8|0;b=k[c>>2]|0;w=k[12270]|0;if(B>>>0>=w>>>0&b>>>0>=w>>>0){k[b+12>>2]=m;k[c>>2]=m;k[p+(r+8)>>2]=b;k[p+(r+12)>>2]=B;k[p+(r+24)>>2]=0;break}else Tb()}else{w=o+r|0;k[p+4>>2]=w|3;w=p+(w+4)|0;k[w>>2]=k[w>>2]|1}while(0);w=p+8|0;return w|0}}}else r=-1;while(0);a=k[12268]|0;if(a>>>0>=r>>>0){b=a-r|0;c=k[12271]|0;if(b>>>0>15){k[12271]=c+r;k[12268]=b;k[c+(r+4)>>2]=b|1;k[c+a>>2]=b;k[c+4>>2]=r|3}else{k[12268]=0;k[12271]=0;k[c+4>>2]=a|3;w=c+(a+4)|0;k[w>>2]=k[w>>2]|1}w=c+8|0;return w|0}a=k[12269]|0;if(a>>>0>r>>>0){v=a-r|0;k[12269]=v;w=k[12272]|0;k[12272]=w+r;k[w+(r+4)>>2]=v|1;k[w+4>>2]=r|3;w=w+8|0;return w|0}do if(!(k[12384]|0)){a=Bb(30)|0;if(!(a+-1&a)){k[12386]=a;k[12385]=a;k[12387]=-1;k[12388]=-1;k[12389]=0;k[12377]=0;v=(Ub(0)|0)&-16^1431655768;k[12384]=v;break}else Tb()}while(0);l=r+48|0;b=k[12386]|0;j=r+47|0;c=b+j|0;b=0-b|0;m=c&b;if(m>>>0<=r>>>0){w=0;return w|0}a=k[12376]|0;if((a|0)!=0?(u=k[12374]|0,v=u+m|0,v>>>0<=u>>>0|v>>>0>a>>>0):0){w=0;return w|0}d:do if(!(k[12377]&4)){a=k[12272]|0;e:do if(a){e=49512|0;while(1){h=k[e>>2]|0;if(h>>>0<=a>>>0?(s=e+4|0,(h+(k[s>>2]|0)|0)>>>0>a>>>0):0){d=e;g=s;a=e;break}e=k[e+8>>2]|0;if(!e){G=181;break e}}if(a){a=c-(k[12269]|0)&b;if(a>>>0<2147483647){h=xb(a|0)|0;if((h|0)==((k[d>>2]|0)+(k[g>>2]|0)|0))G=190;else G=191}else a=0}else G=181}else G=181;while(0);do if((G|0)==181){h=xb(0)|0;if((h|0)!=(-1|0)){a=h;g=k[12385]|0;e=g+-1|0;if(!(e&a))a=m;else a=m-a+(e+a&0-g)|0;g=k[12374]|0;e=g+a|0;if(a>>>0>r>>>0&a>>>0<2147483647){v=k[12376]|0;if((v|0)!=0?e>>>0<=g>>>0|e>>>0>v>>>0:0){a=0;break}g=xb(a|0)|0;if((g|0)==(h|0))G=190;else{h=g;G=191}}else a=0}else a=0}while(0);f:do if((G|0)==190){if((h|0)!=(-1|0)){x=h;G=201;break d}}else if((G|0)==191){g=0-a|0;do if((h|0)!=(-1|0)&a>>>0<2147483647&l>>>0>a>>>0?(w=k[12386]|0,w=j-a+w&0-w,w>>>0<2147483647):0)if((xb(w|0)|0)==(-1|0)){xb(g|0)|0;a=0;break f}else{a=w+a|0;break}while(0);if((h|0)==(-1|0))a=0;else{x=h;G=201;break d}}while(0);k[12377]=k[12377]|4;G=198}else{a=0;G=198}while(0);if((((G|0)==198?m>>>0<2147483647:0)?(x=xb(m|0)|0,y=xb(0)|0,(x|0)!=(-1|0)&(y|0)!=(-1|0)&x>>>0>>0):0)?(z=y-x|0,A=z>>>0>(r+40|0)>>>0,A):0){a=A?z:a;G=201}if((G|0)==201){h=(k[12374]|0)+a|0;k[12374]=h;if(h>>>0>(k[12375]|0)>>>0)k[12375]=h;l=k[12272]|0;g:do if(l){d=49512|0;do{h=k[d>>2]|0;g=d+4|0;e=k[g>>2]|0;if((x|0)==(h+e|0)){C=h;D=g;E=e;F=d;G=213;break}d=k[d+8>>2]|0}while((d|0)!=0);if(((G|0)==213?(k[F+12>>2]&8|0)==0:0)?l>>>0>=C>>>0&l>>>0>>0:0){k[D>>2]=E+a;b=(k[12269]|0)+a|0;c=l+8|0;if(!(c&7))c=0;else c=0-c&7;w=b-c|0;k[12272]=l+c;k[12269]=w;k[l+(c+4)>>2]=w|1;k[l+(b+4)>>2]=40;k[12273]=k[12388];break}h=k[12270]|0;if(x>>>0>>0){k[12270]=x;j=x}else j=h;h=x+a|0;g=49512|0;do{if((k[g>>2]|0)==(h|0)){H=g;I=g;G=223;break}g=k[g+8>>2]|0}while((g|0)!=0);if((G|0)==223?(k[I+12>>2]&8|0)==0:0){k[H>>2]=x;h=I+4|0;k[h>>2]=(k[h>>2]|0)+a;h=x+8|0;if(!(h&7))p=0;else p=0-h&7;h=x+(a+8)|0;if(!(h&7))c=0;else c=0-h&7;h=x+(c+a)|0;o=p+r|0;n=x+o|0;m=h-(x+p)-r|0;k[x+(p+4)>>2]=r|3;h:do if((h|0)!=(l|0)){if((h|0)==(k[12271]|0)){w=(k[12268]|0)+m|0;k[12268]=w;k[12271]=n;k[x+(o+4)>>2]=w|1;k[x+(w+o)>>2]=w;break}l=a+4|0;i=k[x+(l+c)>>2]|0;if((i&3|0)==1){b=i&-8;e=i>>>3;i:do if(i>>>0>=256){d=k[x+((c|24)+a)>>2]|0;f=k[x+(a+12+c)>>2]|0;do if((f|0)==(h|0)){f=c|16;g=x+(l+f)|0;i=k[g>>2]|0;if(!i){g=x+(f+a)|0;i=k[g>>2]|0;if(!i){N=0;break}}while(1){f=i+20|0;e=k[f>>2]|0;if(e){i=e;g=f;continue}f=i+16|0;e=k[f>>2]|0;if(!e)break;else{i=e;g=f}}if(g>>>0>>0)Tb();else{k[g>>2]=0;N=i;break}}else{e=k[x+((c|8)+a)>>2]|0;if(e>>>0>>0)Tb();i=e+12|0;if((k[i>>2]|0)!=(h|0))Tb();g=f+8|0;if((k[g>>2]|0)==(h|0)){k[i>>2]=f;k[g>>2]=e;N=f;break}else Tb()}while(0);if(!d)break;i=k[x+(a+28+c)>>2]|0;g=49368+(i<<2)|0;do if((h|0)!=(k[g>>2]|0)){if(d>>>0<(k[12270]|0)>>>0)Tb();i=d+16|0;if((k[i>>2]|0)==(h|0))k[i>>2]=N;else k[d+20>>2]=N;if(!N)break i}else{k[g>>2]=N;if(N)break;k[12267]=k[12267]&~(1<>>0>>0)Tb();k[N+24>>2]=d;i=c|16;h=k[x+(i+a)>>2]|0;do if(h)if(h>>>0>>0)Tb();else{k[N+16>>2]=h;k[h+24>>2]=N;break}while(0);h=k[x+(l+i)>>2]|0;if(!h)break;if(h>>>0<(k[12270]|0)>>>0)Tb();else{k[N+20>>2]=h;k[h+24>>2]=N;break}}else{g=k[x+((c|8)+a)>>2]|0;f=k[x+(a+12+c)>>2]|0;i=49104+(e<<1<<2)|0;do if((g|0)!=(i|0)){if(g>>>0>>0)Tb();if((k[g+12>>2]|0)==(h|0))break;Tb()}while(0);if((f|0)==(g|0)){k[12266]=k[12266]&~(1<>>0>>0)Tb();i=f+8|0;if((k[i>>2]|0)==(h|0)){J=i;break}Tb()}while(0);k[g+12>>2]=f;k[J>>2]=g}while(0);h=x+((b|c)+a)|0;i=b+m|0}else i=m;h=h+4|0;k[h>>2]=k[h>>2]&-2;k[x+(o+4)>>2]=i|1;k[x+(i+o)>>2]=i;h=i>>>3;if(i>>>0<256){g=h<<1;e=49104+(g<<2)|0;f=k[12266]|0;h=1<>2]|0;if(g>>>0>=(k[12270]|0)>>>0){O=h;P=g;break}Tb()}while(0);k[O>>2]=n;k[P+12>>2]=n;k[x+(o+8)>>2]=P;k[x+(o+12)>>2]=e;break}c=i>>>8;do if(!c)e=0;else{if(i>>>0>16777215){e=31;break}v=(c+1048320|0)>>>16&8;w=c<>>16&4;w=w<>>16&2;e=14-(u|v|e)+(w<>>15)|0;e=i>>>(e+7|0)&1|e<<1}while(0);h=49368+(e<<2)|0;k[x+(o+28)>>2]=e;k[x+(o+20)>>2]=0;k[x+(o+16)>>2]=0;g=k[12267]|0;f=1<>2]=n;k[x+(o+24)>>2]=h;k[x+(o+12)>>2]=n;k[x+(o+8)>>2]=n;break}c=k[h>>2]|0;if((e|0)==31)h=0;else h=25-(e>>>1)|0;j:do if((k[c+4>>2]&-8|0)!=(i|0)){g=i<>>31<<2)+16|0;h=k[b>>2]|0;if(!h)break;if((k[h+4>>2]&-8|0)==(i|0)){Q=h;break j}else{g=g<<1;c=h}}if(b>>>0<(k[12270]|0)>>>0)Tb();else{k[b>>2]=n;k[x+(o+24)>>2]=c;k[x+(o+12)>>2]=n;k[x+(o+8)>>2]=n;break h}}else Q=c;while(0);c=Q+8|0;b=k[c>>2]|0;w=k[12270]|0;if(Q>>>0>=w>>>0&b>>>0>=w>>>0){k[b+12>>2]=n;k[c>>2]=n;k[x+(o+8)>>2]=b;k[x+(o+12)>>2]=Q;k[x+(o+24)>>2]=0;break}else Tb()}else{w=(k[12269]|0)+m|0;k[12269]=w;k[12272]=n;k[x+(o+4)>>2]=w|1}while(0);w=x+(p|8)|0;return w|0}g=49512|0;while(1){h=k[g>>2]|0;if(h>>>0<=l>>>0?(f=k[g+4>>2]|0,i=h+f|0,i>>>0>l>>>0):0)break;g=k[g+8>>2]|0}g=h+(f+-39)|0;if(!(g&7))g=0;else g=0-g&7;f=h+(f+-47+g)|0;f=f>>>0<(l+16|0)>>>0?l:f;g=f+8|0;h=x+8|0;if(!(h&7))h=0;else h=0-h&7;w=a+-40-h|0;k[12272]=x+h;k[12269]=w;k[x+(h+4)>>2]=w|1;k[x+(a+-36)>>2]=40;k[12273]=k[12388];k[f+4>>2]=27;k[g+0>>2]=k[12378];k[g+4>>2]=k[12379];k[g+8>>2]=k[12380];k[g+12>>2]=k[12381];k[12378]=x;k[12379]=a;k[12381]=0;k[12380]=g;h=f+28|0;k[h>>2]=7;if((f+32|0)>>>0>>0)do{w=h;h=h+4|0;k[h>>2]=7}while((w+8|0)>>>0>>0);if((f|0)!=(l|0)){i=f-l|0;h=l+(i+4)|0;k[h>>2]=k[h>>2]&-2;k[l+4>>2]=i|1;k[l+i>>2]=i;h=i>>>3;if(i>>>0<256){g=h<<1;e=49104+(g<<2)|0;f=k[12266]|0;h=1<>2]|0;if(b>>>0>=(k[12270]|0)>>>0){K=c;L=b;break}Tb()}while(0);k[K>>2]=l;k[L+12>>2]=l;k[l+8>>2]=L;k[l+12>>2]=e;break}c=i>>>8;if(c)if(i>>>0>16777215)h=31;else{v=(c+1048320|0)>>>16&8;w=c<>>16&4;w=w<>>16&2;h=14-(u|v|h)+(w<>>15)|0;h=i>>>(h+7|0)&1|h<<1}else h=0;c=49368+(h<<2)|0;k[l+28>>2]=h;k[l+20>>2]=0;k[l+16>>2]=0;b=k[12267]|0;d=1<>2]=l;k[l+24>>2]=c;k[l+12>>2]=l;k[l+8>>2]=l;break}c=k[c>>2]|0;if((h|0)==31)b=0;else b=25-(h>>>1)|0;k:do if((k[c+4>>2]&-8|0)!=(i|0)){h=i<>>31<<2)+16|0;d=k[b>>2]|0;if(!d)break;if((k[d+4>>2]&-8|0)==(i|0)){M=d;break k}else{h=h<<1;c=d}}if(b>>>0<(k[12270]|0)>>>0)Tb();else{k[b>>2]=l;k[l+24>>2]=c;k[l+12>>2]=l;k[l+8>>2]=l;break g}}else M=c;while(0);c=M+8|0;b=k[c>>2]|0;w=k[12270]|0;if(M>>>0>=w>>>0&b>>>0>=w>>>0){k[b+12>>2]=l;k[c>>2]=l;k[l+8>>2]=b;k[l+12>>2]=M;k[l+24>>2]=0;break}else Tb()}}else{w=k[12270]|0;if((w|0)==0|x>>>0>>0)k[12270]=x;k[12378]=x;k[12379]=a;k[12381]=0;k[12275]=k[12384];k[12274]=-1;c=0;do{w=c<<1;v=49104+(w<<2)|0;k[49104+(w+3<<2)>>2]=v;k[49104+(w+2<<2)>>2]=v;c=c+1|0}while((c|0)!=32);c=x+8|0;if(!(c&7))c=0;else c=0-c&7;w=a+-40-c|0;k[12272]=x+c;k[12269]=w;k[x+(c+4)>>2]=w|1;k[x+(a+-36)>>2]=40;k[12273]=k[12388]}while(0);b=k[12269]|0;if(b>>>0>r>>>0){v=b-r|0;k[12269]=v;w=k[12272]|0;k[12272]=w+r;k[w+(r+4)>>2]=v|1;k[w+4>>2]=r|3;w=w+8|0;return w|0}}w=Mb()|0;k[w>>2]=12;w=0;return w|0}function aw(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,r=0,s=0,t=0,u=0;if(!a)return;f=a+-8|0;g=k[12270]|0;if(f>>>0>>0)Tb();e=k[a+-4>>2]|0;d=e&3;if((d|0)==1)Tb();o=e&-8;q=a+(o+-8)|0;do if(!(e&1)){f=k[f>>2]|0;if(!d)return;h=-8-f|0;l=a+h|0;m=f+o|0;if(l>>>0>>0)Tb();if((l|0)==(k[12271]|0)){f=a+(o+-4)|0;e=k[f>>2]|0;if((e&3|0)!=3){u=l;j=m;break}k[12268]=m;k[f>>2]=e&-2;k[a+(h+4)>>2]=m|1;k[q>>2]=m;return}c=f>>>3;if(f>>>0<256){d=k[a+(h+8)>>2]|0;e=k[a+(h+12)>>2]|0;f=49104+(c<<1<<2)|0;if((d|0)!=(f|0)){if(d>>>0>>0)Tb();if((k[d+12>>2]|0)!=(l|0))Tb()}if((e|0)==(d|0)){k[12266]=k[12266]&~(1<>>0>>0)Tb();f=e+8|0;if((k[f>>2]|0)==(l|0))b=f;else Tb()}else b=e+8|0;k[d+12>>2]=e;k[b>>2]=d;u=l;j=m;break}b=k[a+(h+24)>>2]|0;d=k[a+(h+12)>>2]|0;do if((d|0)==(l|0)){e=a+(h+20)|0;f=k[e>>2]|0;if(!f){e=a+(h+16)|0;f=k[e>>2]|0;if(!f){i=0;break}}while(1){d=f+20|0;c=k[d>>2]|0;if(c){f=c;e=d;continue}d=f+16|0;c=k[d>>2]|0;if(!c)break;else{f=c;e=d}}if(e>>>0>>0)Tb();else{k[e>>2]=0;i=f;break}}else{c=k[a+(h+8)>>2]|0;if(c>>>0>>0)Tb();f=c+12|0;if((k[f>>2]|0)!=(l|0))Tb();e=d+8|0;if((k[e>>2]|0)==(l|0)){k[f>>2]=d;k[e>>2]=c;i=d;break}else Tb()}while(0);if(b){f=k[a+(h+28)>>2]|0;e=49368+(f<<2)|0;if((l|0)==(k[e>>2]|0)){k[e>>2]=i;if(!i){k[12267]=k[12267]&~(1<>>0<(k[12270]|0)>>>0)Tb();f=b+16|0;if((k[f>>2]|0)==(l|0))k[f>>2]=i;else k[b+20>>2]=i;if(!i){u=l;j=m;break}}e=k[12270]|0;if(i>>>0>>0)Tb();k[i+24>>2]=b;f=k[a+(h+16)>>2]|0;do if(f)if(f>>>0>>0)Tb();else{k[i+16>>2]=f;k[f+24>>2]=i;break}while(0);f=k[a+(h+20)>>2]|0;if(f)if(f>>>0<(k[12270]|0)>>>0)Tb();else{k[i+20>>2]=f;k[f+24>>2]=i;u=l;j=m;break}else{u=l;j=m}}else{u=l;j=m}}else{u=f;j=o}while(0);if(u>>>0>=q>>>0)Tb();f=a+(o+-4)|0;e=k[f>>2]|0;if(!(e&1))Tb();if(!(e&2)){if((q|0)==(k[12272]|0)){l=(k[12269]|0)+j|0;k[12269]=l;k[12272]=u;k[u+4>>2]=l|1;if((u|0)!=(k[12271]|0))return;k[12271]=0;k[12268]=0;return}if((q|0)==(k[12271]|0)){l=(k[12268]|0)+j|0;k[12268]=l;k[12271]=u;k[u+4>>2]=l|1;k[u+l>>2]=l;return}g=(e&-8)+j|0;b=e>>>3;do if(e>>>0>=256){b=k[a+(o+16)>>2]|0;f=k[a+(o|4)>>2]|0;do if((f|0)==(q|0)){e=a+(o+12)|0;f=k[e>>2]|0;if(!f){e=a+(o+8)|0;f=k[e>>2]|0;if(!f){p=0;break}}while(1){d=f+20|0;c=k[d>>2]|0;if(c){f=c;e=d;continue}d=f+16|0;c=k[d>>2]|0;if(!c)break;else{f=c;e=d}}if(e>>>0<(k[12270]|0)>>>0)Tb();else{k[e>>2]=0;p=f;break}}else{e=k[a+o>>2]|0;if(e>>>0<(k[12270]|0)>>>0)Tb();d=e+12|0;if((k[d>>2]|0)!=(q|0))Tb();c=f+8|0;if((k[c>>2]|0)==(q|0)){k[d>>2]=f;k[c>>2]=e;p=f;break}else Tb()}while(0);if(b){f=k[a+(o+20)>>2]|0;e=49368+(f<<2)|0;if((q|0)==(k[e>>2]|0)){k[e>>2]=p;if(!p){k[12267]=k[12267]&~(1<>>0<(k[12270]|0)>>>0)Tb();f=b+16|0;if((k[f>>2]|0)==(q|0))k[f>>2]=p;else k[b+20>>2]=p;if(!p)break}f=k[12270]|0;if(p>>>0>>0)Tb();k[p+24>>2]=b;e=k[a+(o+8)>>2]|0;do if(e)if(e>>>0>>0)Tb();else{k[p+16>>2]=e;k[e+24>>2]=p;break}while(0);c=k[a+(o+12)>>2]|0;if(c)if(c>>>0<(k[12270]|0)>>>0)Tb();else{k[p+20>>2]=c;k[c+24>>2]=p;break}}}else{c=k[a+o>>2]|0;d=k[a+(o|4)>>2]|0;f=49104+(b<<1<<2)|0;if((c|0)!=(f|0)){if(c>>>0<(k[12270]|0)>>>0)Tb();if((k[c+12>>2]|0)!=(q|0))Tb()}if((d|0)==(c|0)){k[12266]=k[12266]&~(1<>>0<(k[12270]|0)>>>0)Tb();e=d+8|0;if((k[e>>2]|0)==(q|0))n=e;else Tb()}else n=d+8|0;k[c+12>>2]=d;k[n>>2]=c}while(0);k[u+4>>2]=g|1;k[u+g>>2]=g;if((u|0)==(k[12271]|0)){k[12268]=g;return}else f=g}else{k[f>>2]=e&-2;k[u+4>>2]=j|1;k[u+j>>2]=j;f=j}e=f>>>3;if(f>>>0<256){d=e<<1;f=49104+(d<<2)|0;b=k[12266]|0;c=1<>2]|0;if(b>>>0<(k[12270]|0)>>>0)Tb();else{r=c;s=b}}else{k[12266]=b|c;r=49104+(d+2<<2)|0;s=f}k[r>>2]=u;k[s+12>>2]=u;k[u+8>>2]=s;k[u+12>>2]=f;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{j=(b+1048320|0)>>>16&8;l=b<>>16&4;l=l<>>16&2;e=14-(i|j|e)+(l<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;c=49368+(e<<2)|0;k[u+28>>2]=e;k[u+20>>2]=0;k[u+16>>2]=0;b=k[12267]|0;d=1<>2]|0;if((e|0)==31)b=0;else b=25-(e>>>1)|0;b:do if((k[c+4>>2]&-8|0)!=(f|0)){e=f<>>31<<2)+16|0;d=k[b>>2]|0;if(!d)break;if((k[d+4>>2]&-8|0)==(f|0)){t=d;break b}else{e=e<<1;c=d}}if(b>>>0<(k[12270]|0)>>>0)Tb();else{k[b>>2]=u;k[u+24>>2]=c;k[u+12>>2]=u;k[u+8>>2]=u;break a}}else t=c;while(0);b=t+8|0;c=k[b>>2]|0;l=k[12270]|0;if(t>>>0>=l>>>0&c>>>0>=l>>>0){k[c+12>>2]=u;k[b>>2]=u;k[u+8>>2]=c;k[u+12>>2]=t;k[u+24>>2]=0;break}else Tb()}else{k[12267]=b|d;k[c>>2]=u;k[u+24>>2]=c;k[u+12>>2]=u;k[u+8>>2]=u}while(0);l=(k[12274]|0)+-1|0;k[12274]=l;if(!l)b=49520|0;else return;while(1){b=k[b>>2]|0;if(!b)break;else b=b+8|0}k[12274]=-1;return}function bw(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a){c=$v(b)|0;return c|0}if(b>>>0>4294967231){c=Mb()|0;k[c>>2]=12;c=0;return c|0}if(b>>>0<11)c=16;else c=b+11&-8;c=fw(a+-8|0,c)|0;if(c){c=c+8|0;return c|0}c=$v(b)|0;if(!c){c=0;return c|0}d=k[a+-4>>2]|0;d=(d&-8)-((d&3|0)==0?8:4)|0;pw(c|0,a|0,(d>>>0>>0?d:b)|0)|0;aw(a);return c|0}function cw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!c){a=0;return a|0}else{e=c;d=a}while(1){c=i[d>>0]|0;a=i[b>>0]|0;if(c<<24>>24!=a<<24>>24)break;e=e+-1|0;if(!e){a=0;f=5;break}else{d=d+1|0;b=b+1|0}}if((f|0)==5)return a|0;a=(c&255)-(a&255)|0;return a|0}function dw(a,b){a=a|0;b=b|0;var c=0,d=0;d=i[a>>0]|0;c=i[b>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=c<<24>>24)b=d;else{do{a=a+1|0;b=b+1|0;d=i[a>>0]|0;c=i[b>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=c<<24>>24));b=d}return (b&255)-(c&255)|0}function ew(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(!c){b=0;return b|0}d=i[a>>0]|0;a:do if(!(d<<24>>24))d=0;else while(1){c=c+-1|0;e=i[b>>0]|0;if(!(e<<24>>24!=0&(c|0)!=0&d<<24>>24==e<<24>>24))break a;a=a+1|0;b=b+1|0;d=i[a>>0]|0;if(!(d<<24>>24)){d=0;break}}while(0);b=(d&255)-(l[b>>0]|0)|0;return b|0}function fw(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=a+4|0;p=k[o>>2]|0;i=p&-8;l=a+i|0;h=k[12270]|0;d=p&3;if(!((d|0)!=1&a>>>0>=h>>>0&a>>>0>>0))Tb();c=a+(i|4)|0;f=k[c>>2]|0;if(!(f&1))Tb();if(!d){if(b>>>0<256){m=0;return m|0}if(i>>>0>=(b+4|0)>>>0?(i-b|0)>>>0<=k[12386]<<1>>>0:0){m=a;return m|0}m=0;return m|0}if(i>>>0>=b>>>0){d=i-b|0;if(d>>>0<=15){m=a;return m|0}k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=d|3;k[c>>2]=k[c>>2]|1;gw(a+b|0,d);m=a;return m|0}if((l|0)==(k[12272]|0)){d=(k[12269]|0)+i|0;if(d>>>0<=b>>>0){m=0;return m|0}m=d-b|0;k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=m|1;k[12272]=a+b;k[12269]=m;m=a;return m|0}if((l|0)==(k[12271]|0)){d=(k[12268]|0)+i|0;if(d>>>0>>0){m=0;return m|0}c=d-b|0;if(c>>>0>15){k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=c|1;k[a+d>>2]=c;d=a+(d+4)|0;k[d>>2]=k[d>>2]&-2;d=a+b|0}else{k[o>>2]=p&1|d|2;d=a+(d+4)|0;k[d>>2]=k[d>>2]|1;d=0;c=0}k[12268]=c;k[12271]=d;m=a;return m|0}if(f&2){m=0;return m|0}m=(f&-8)+i|0;if(m>>>0>>0){m=0;return m|0}n=m-b|0;e=f>>>3;do if(f>>>0>=256){g=k[a+(i+24)>>2]|0;f=k[a+(i+12)>>2]|0;do if((f|0)==(l|0)){c=a+(i+20)|0;d=k[c>>2]|0;if(!d){c=a+(i+16)|0;d=k[c>>2]|0;if(!d){j=0;break}}while(1){e=d+20|0;f=k[e>>2]|0;if(f){d=f;c=e;continue}f=d+16|0;e=k[f>>2]|0;if(!e)break;else{d=e;c=f}}if(c>>>0>>0)Tb();else{k[c>>2]=0;j=d;break}}else{e=k[a+(i+8)>>2]|0;if(e>>>0>>0)Tb();d=e+12|0;if((k[d>>2]|0)!=(l|0))Tb();c=f+8|0;if((k[c>>2]|0)==(l|0)){k[d>>2]=f;k[c>>2]=e;j=f;break}else Tb()}while(0);if(g){d=k[a+(i+28)>>2]|0;c=49368+(d<<2)|0;if((l|0)==(k[c>>2]|0)){k[c>>2]=j;if(!j){k[12267]=k[12267]&~(1<>>0<(k[12270]|0)>>>0)Tb();d=g+16|0;if((k[d>>2]|0)==(l|0))k[d>>2]=j;else k[g+20>>2]=j;if(!j)break}c=k[12270]|0;if(j>>>0>>0)Tb();k[j+24>>2]=g;d=k[a+(i+16)>>2]|0;do if(d)if(d>>>0>>0)Tb();else{k[j+16>>2]=d;k[d+24>>2]=j;break}while(0);d=k[a+(i+20)>>2]|0;if(d)if(d>>>0<(k[12270]|0)>>>0)Tb();else{k[j+20>>2]=d;k[d+24>>2]=j;break}}}else{f=k[a+(i+8)>>2]|0;c=k[a+(i+12)>>2]|0;d=49104+(e<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Tb();if((k[f+12>>2]|0)!=(l|0))Tb()}if((c|0)==(f|0)){k[12266]=k[12266]&~(1<>>0>>0)Tb();d=c+8|0;if((k[d>>2]|0)==(l|0))g=d;else Tb()}else g=c+8|0;k[f+12>>2]=c;k[g>>2]=f}while(0);if(n>>>0<16){k[o>>2]=m|p&1|2;m=a+(m|4)|0;k[m>>2]=k[m>>2]|1;m=a;return m|0}else{k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=n|3;m=a+(m|4)|0;k[m>>2]=k[m>>2]|1;gw(a+b|0,n);m=a;return m|0}return 0}function gw(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,r=0,s=0,t=0;q=a+b|0;g=k[a+4>>2]|0;do if(!(g&1)){i=k[a>>2]|0;if(!(g&3))return;n=a+(0-i)|0;m=i+b|0;h=k[12270]|0;if(n>>>0>>0)Tb();if((n|0)==(k[12271]|0)){f=a+(b+4)|0;g=k[f>>2]|0;if((g&3|0)!=3){t=n;l=m;break}k[12268]=m;k[f>>2]=g&-2;k[a+(4-i)>>2]=m|1;k[q>>2]=m;return}d=i>>>3;if(i>>>0<256){e=k[a+(8-i)>>2]|0;f=k[a+(12-i)>>2]|0;g=49104+(d<<1<<2)|0;if((e|0)!=(g|0)){if(e>>>0>>0)Tb();if((k[e+12>>2]|0)!=(n|0))Tb()}if((f|0)==(e|0)){k[12266]=k[12266]&~(1<>>0>>0)Tb();g=f+8|0;if((k[g>>2]|0)==(n|0))c=g;else Tb()}else c=f+8|0;k[e+12>>2]=f;k[c>>2]=e;t=n;l=m;break}c=k[a+(24-i)>>2]|0;e=k[a+(12-i)>>2]|0;do if((e|0)==(n|0)){e=16-i|0;f=a+(e+4)|0;g=k[f>>2]|0;if(!g){f=a+e|0;g=k[f>>2]|0;if(!g){j=0;break}}while(1){e=g+20|0;d=k[e>>2]|0;if(d){g=d;f=e;continue}e=g+16|0;d=k[e>>2]|0;if(!d)break;else{g=d;f=e}}if(f>>>0>>0)Tb();else{k[f>>2]=0;j=g;break}}else{d=k[a+(8-i)>>2]|0;if(d>>>0>>0)Tb();g=d+12|0;if((k[g>>2]|0)!=(n|0))Tb();f=e+8|0;if((k[f>>2]|0)==(n|0)){k[g>>2]=e;k[f>>2]=d;j=e;break}else Tb()}while(0);if(c){g=k[a+(28-i)>>2]|0;f=49368+(g<<2)|0;if((n|0)==(k[f>>2]|0)){k[f>>2]=j;if(!j){k[12267]=k[12267]&~(1<>>0<(k[12270]|0)>>>0)Tb();g=c+16|0;if((k[g>>2]|0)==(n|0))k[g>>2]=j;else k[c+20>>2]=j;if(!j){t=n;l=m;break}}e=k[12270]|0;if(j>>>0>>0)Tb();k[j+24>>2]=c;g=16-i|0;f=k[a+g>>2]|0;do if(f)if(f>>>0>>0)Tb();else{k[j+16>>2]=f;k[f+24>>2]=j;break}while(0);g=k[a+(g+4)>>2]|0;if(g)if(g>>>0<(k[12270]|0)>>>0)Tb();else{k[j+20>>2]=g;k[g+24>>2]=j;t=n;l=m;break}else{t=n;l=m}}else{t=n;l=m}}else{t=a;l=b}while(0);h=k[12270]|0;if(q>>>0>>0)Tb();g=a+(b+4)|0;f=k[g>>2]|0;if(!(f&2)){if((q|0)==(k[12272]|0)){m=(k[12269]|0)+l|0;k[12269]=m;k[12272]=t;k[t+4>>2]=m|1;if((t|0)!=(k[12271]|0))return;k[12271]=0;k[12268]=0;return}if((q|0)==(k[12271]|0)){m=(k[12268]|0)+l|0;k[12268]=m;k[12271]=t;k[t+4>>2]=m|1;k[t+m>>2]=m;return}i=(f&-8)+l|0;c=f>>>3;do if(f>>>0>=256){c=k[a+(b+24)>>2]|0;e=k[a+(b+12)>>2]|0;do if((e|0)==(q|0)){f=a+(b+20)|0;g=k[f>>2]|0;if(!g){f=a+(b+16)|0;g=k[f>>2]|0;if(!g){p=0;break}}while(1){e=g+20|0;d=k[e>>2]|0;if(d){g=d;f=e;continue}e=g+16|0;d=k[e>>2]|0;if(!d)break;else{g=d;f=e}}if(f>>>0>>0)Tb();else{k[f>>2]=0;p=g;break}}else{d=k[a+(b+8)>>2]|0;if(d>>>0>>0)Tb();g=d+12|0;if((k[g>>2]|0)!=(q|0))Tb();f=e+8|0;if((k[f>>2]|0)==(q|0)){k[g>>2]=e;k[f>>2]=d;p=e;break}else Tb()}while(0);if(c){g=k[a+(b+28)>>2]|0;f=49368+(g<<2)|0;if((q|0)==(k[f>>2]|0)){k[f>>2]=p;if(!p){k[12267]=k[12267]&~(1<>>0<(k[12270]|0)>>>0)Tb();f=c+16|0;if((k[f>>2]|0)==(q|0))k[f>>2]=p;else k[c+20>>2]=p;if(!p)break}e=k[12270]|0;if(p>>>0>>0)Tb();k[p+24>>2]=c;f=k[a+(b+16)>>2]|0;do if(f)if(f>>>0>>0)Tb();else{k[p+16>>2]=f;k[f+24>>2]=p;break}while(0);e=k[a+(b+20)>>2]|0;if(e)if(e>>>0<(k[12270]|0)>>>0)Tb();else{k[p+20>>2]=e;k[e+24>>2]=p;break}}}else{d=k[a+(b+8)>>2]|0;e=k[a+(b+12)>>2]|0;g=49104+(c<<1<<2)|0;if((d|0)!=(g|0)){if(d>>>0>>0)Tb();if((k[d+12>>2]|0)!=(q|0))Tb()}if((e|0)==(d|0)){k[12266]=k[12266]&~(1<>>0>>0)Tb();f=e+8|0;if((k[f>>2]|0)==(q|0))o=f;else Tb()}else o=e+8|0;k[d+12>>2]=e;k[o>>2]=d}while(0);k[t+4>>2]=i|1;k[t+i>>2]=i;if((t|0)==(k[12271]|0)){k[12268]=i;return}else g=i}else{k[g>>2]=f&-2;k[t+4>>2]=l|1;k[t+l>>2]=l;g=l}f=g>>>3;if(g>>>0<256){d=f<<1;g=49104+(d<<2)|0;c=k[12266]|0;e=1<>2]|0;if(d>>>0<(k[12270]|0)>>>0)Tb();else{r=e;s=d}}else{k[12266]=c|e;r=49104+(d+2<<2)|0;s=g}k[r>>2]=t;k[s+12>>2]=t;k[t+8>>2]=s;k[t+12>>2]=g;return}c=g>>>8;if(c)if(g>>>0>16777215)f=31;else{l=(c+1048320|0)>>>16&8;m=c<>>16&4;m=m<>>16&2;f=14-(j|l|f)+(m<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;e=49368+(f<<2)|0;k[t+28>>2]=f;k[t+20>>2]=0;k[t+16>>2]=0;d=k[12267]|0;c=1<>2]=t;k[t+24>>2]=e;k[t+12>>2]=t;k[t+8>>2]=t;return}c=k[e>>2]|0;if((f|0)==31)d=0;else d=25-(f>>>1)|0;a:do if((k[c+4>>2]&-8|0)!=(g|0)){f=g<>>31<<2)+16|0;e=k[d>>2]|0;if(!e)break;if((k[e+4>>2]&-8|0)==(g|0)){c=e;break a}else{f=f<<1;c=e}}if(d>>>0<(k[12270]|0)>>>0)Tb();k[d>>2]=t;k[t+24>>2]=c;k[t+12>>2]=t;k[t+8>>2]=t;return}while(0);d=c+8|0;e=k[d>>2]|0;m=k[12270]|0;if(!(c>>>0>=m>>>0&e>>>0>=m>>>0))Tb();k[e+12>>2]=t;k[d>>2]=t;k[t+8>>2]=e;k[t+12>>2]=c;k[t+24>>2]=0;return}function hw(){}function iw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=b-d-(c>>>0>a>>>0|0)>>>0;return (L=b,a-c>>>0|0)|0}function jw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b>>c;return a>>>c|(b&(1<>c-32|0}function kw(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 lw(a){a=a|0;var b=0;b=a;while(i[b>>0]|0)b=b+1|0;return b-a|0}function mw(a,b){a=a|0;b=b|0;var c=0,d=0;d=a+(lw(a)|0)|0;do{i[d+c>>0]=i[b+c>>0];c=c+1|0}while(i[b+(c-1)>>0]|0);return a|0}function nw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b<>>32-c;return a<>>0;return (L=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function pw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return zb(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 qw(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 pw(a,b,c)|0;return a|0}function rw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b>>>c;return a>>>c|(b&(1<>>c-32|0}function sw(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function tw(a){a=a|0;var b=0;b=i[v+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[v+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[v+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[v+(a>>>24)>>0]|0)+24|0}function uw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=ha(d,f)|0;e=a>>>16;d=(c>>>16)+(ha(d,e)|0)|0;b=b>>>16;a=ha(b,f)|0;return (L=(d>>>16)+(ha(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function vw(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=iw(j^a,i^b,j,i)|0;g=L;b=f^j;a=e^i;a=iw((Aw(h,g,iw(f^c,e^d,f,e)|0,L,0)|0)^b,L^a,b,a)|0;return a|0}function ww(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;e=r;r=r+8|0;h=e|0;g=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;j=d>>31|((d|0)<0?-1:0)<<1;i=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;b=iw(g^a,f^b,g,f)|0;a=L;Aw(b,a,iw(j^c,i^d,j,i)|0,L,h)|0;a=iw(k[h>>2]^g,k[h+4>>2]^f,g,f)|0;b=L;r=e;return (L=b,a)|0}function xw(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;a=uw(e,f)|0;c=L;return (L=(ha(b,f)|0)+(ha(d,e)|0)+c|c&0,a|0|0)|0}function yw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=Aw(a,b,c,d,0)|0;return a|0}function zw(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+8|0;e=f|0;Aw(a,b,c,d,e)|0;r=f;return (L=k[e+4>>2]|0,k[e>>2]|0)|0}function Aw(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;n=a;l=b;m=l;j=c;o=d;h=o;if(!m){f=(e|0)!=0;if(!h){if(f){k[e>>2]=(n>>>0)%(j>>>0);k[e+4>>2]=0}l=0;m=(n>>>0)/(j>>>0)>>>0;return (L=l,m)|0}else{if(!f){l=0;m=0;return (L=l,m)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;l=0;m=0;return (L=l,m)|0}}i=(h|0)==0;do if(j){if(!i){g=(ja(h|0)|0)-(ja(m|0)|0)|0;if(g>>>0<=31){f=g+1|0;l=31-g|0;j=g-31>>31;h=f;i=n>>>(f>>>0)&j|m<>>(f>>>0)&j;f=0;g=n<>2]=a|0;k[e+4>>2]=l|b&0;l=0;m=0;return (L=l,m)|0}i=j-1|0;if(i&j){g=(ja(j|0)|0)+33-(ja(m|0)|0)|0;p=64-g|0;l=32-g|0;a=l>>31;b=g-32|0;j=b>>31;h=g;i=l-1>>31&m>>>(b>>>0)|(m<>>(g>>>0))&j;j=j&m>>>(g>>>0);f=n<>>(b>>>0))&a|n<>31;break}if(e){k[e>>2]=i&n;k[e+4>>2]=0}if((j|0)==1){l=l|b&0;m=a|0|0;return (L=l,m)|0}else{a=tw(j|0)|0;l=m>>>(a>>>0)|0;m=m<<32-a|n>>>(a>>>0)|0;return (L=l,m)|0}}else{if(i){if(e){k[e>>2]=(m>>>0)%(j>>>0);k[e+4>>2]=0}l=0;m=(m>>>0)/(j>>>0)>>>0;return (L=l,m)|0}if(!n){if(e){k[e>>2]=0;k[e+4>>2]=(m>>>0)%(h>>>0)}l=0;m=(m>>>0)/(h>>>0)>>>0;return (L=l,m)|0}i=h-1|0;if(!(i&h)){if(e){k[e>>2]=a|0;k[e+4>>2]=i&m|b&0}l=0;m=m>>>((tw(h|0)|0)>>>0);return (L=l,m)|0}g=(ja(h|0)|0)-(ja(m|0)|0)|0;if(g>>>0<=30){j=g+1|0;g=31-g|0;h=j;i=m<>>(j>>>0);j=m>>>(j>>>0);f=0;g=n<>2]=a|0;k[e+4>>2]=l|b&0;l=0;m=0;return (L=l,m)|0}while(0);if(!h){l=g;h=0;g=0}else{m=c|0|0;l=o|d&0;b=ow(m,l,-1,-1)|0;a=L;c=g;g=0;do{p=c;c=f>>>31|c<<1;f=g|f<<1;p=i<<1|p>>>31|0;o=i>>>31|j<<1|0;iw(b,a,p,o)|0;n=L;d=n>>31|((n|0)<0?-1:0)<<1;g=d&1;i=iw(p,o,d&m,(((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1)&l)|0;j=L;h=h-1|0}while((h|0)!=0);l=c;h=0}c=0;if(e){k[e>>2]=i;k[e+4>>2]=j}l=(f|0)>>>31|(l|c)<<1|(c<<1|f>>>31)&0|h;m=(f<<1|0>>>31)&-2|g;return (L=l,m)|0}function Bw(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ec[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function Cw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return fc[a&63](b|0,c|0,d|0)|0}function Dw(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;gc[a&1](b|0,c|0,d|0,e|0,f|0,g|0)}function Ew(a,b){a=a|0;b=b|0;hc[a&31](b|0)}function Fw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ic[a&1](b|0,c|0,d|0,e|0,f|0)}function Gw(a,b,c){a=a|0;b=b|0;c=c|0;return +jc[a&1](b|0,c|0)}function Hw(a,b,c){a=a|0;b=b|0;c=+c;kc[a&1](b|0,+c)}function Iw(a,b){a=a|0;b=b|0;return +lc[a&1](b|0)}function Jw(a){a=a|0;return mc[a&7]()|0}function Kw(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return nc[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function Lw(a,b,c){a=a|0;b=b|0;c=c|0;oc[a&15](b|0,c|0)}function Mw(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 pc[a&7](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Nw(a,b){a=a|0;b=b|0;return qc[a&127](b|0)|0}function Ow(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rc[a&63](b|0,c|0,d|0)}function Pw(a){a=a|0;sc[a&3]()}function Qw(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return tc[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function Rw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return uc[a&31](b|0,c|0,d|0,e|0)|0}function Sw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;vc[a&15](b|0,c|0,d|0,e|0)}function Tw(a,b,c){a=a|0;b=b|0;c=c|0;return wc[a&127](b|0,c|0)|0}function Uw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return xc[a&1](b|0,c|0,+d)|0}function Vw(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 yc[a&31](b|0,c|0,d|0,e|0,f|0)|0}function Ww(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;ma(0);return 0}function Xw(a,b,c){a=a|0;b=b|0;c=c|0;na(1);return 0}function Yw(a,b,c){a=a|0;b=b|0;c=c|0;return yb(a|0,b|0,c|0)|0}function Zw(a,b,c){a=a|0;b=b|0;c=c|0;return bc(a|0,b|0,c|0)|0}function _w(a,b,c){a=a|0;b=b|0;c=c|0;return Kb(a|0,b|0,c|0)|0}function $w(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(2)}function ax(a){a=a|0;pa(3)}function bx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;qa(4)}function cx(a,b){a=a|0;b=b|0;ra(5);return 0.0}function dx(a,b){a=a|0;b=+b;sa(6)}function ex(a){a=a|0;ta(7);return 0.0}function fx(){ua(8);return 0}function gx(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;va(9);return 0}function hx(a,b){a=a|0;b=b|0;wa(10)}function ix(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;xa(11);return 0}function jx(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 Zb(a|0,b|0,c|0,d|0,e|0,f|0)|0}function kx(a){a=a|0;ya(12);return 0}function lx(a){a=a|0;return ac(a|0)|0}function mx(a){a=a|0;return Ab(a|0)|0}function nx(a){a=a|0;return mb(a|0)|0}function ox(a,b,c){a=a|0;b=b|0;c=c|0;za(13)}function px(){Aa(14)}function qx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Ba(15);return 0}function rx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(16);return 0}function sx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Da(17)}function tx(a,b){a=a|0;b=b|0;Ea(18);return 0}function ux(a,b){a=a|0;b=b|0;return jb(a|0,b|0)|0}function vx(a,b){a=a|0;b=b|0;return $b(a|0,b|0)|0}function wx(a,b){a=a|0;b=b|0;return Nb(a|0,b|0)|0}function xx(a,b){a=a|0;b=b|0;return kb(a|0,b|0)|0}function yx(a,b){a=a|0;b=b|0;return Eb(a|0,b|0)|0}function zx(a,b){a=a|0;b=b|0;return Cb(a|0,b|0)|0}function Ax(a,b){a=a|0;b=b|0;return Fb(a|0,b|0)|0}function Bx(a,b){a=a|0;b=b|0;return Yb(a|0,b|0)|0}function Cx(a,b,c){a=a|0;b=b|0;c=+c;Fa(19);return 0}function Dx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Ga(20);return 0} -// EMSCRIPTEN_END_FUNCS -var ec=[Ww,ze];var fc=[Xw,qi,vi,xi,Ai,Ci,ve,Be,Af,ag,bg,Kf,Jf,Mf,Te,If,Lf,Hf,Ce,Vf,uf,Le,Kc,Of,Se,kf,kg,bd,Li,Qi,Ti,jk,pk,xk,Yw,Zw,_w,zk,Gp,Hp,Fp,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw];var gc=[$w,Od];var hc=[ax,$c,ef,Df,Md,Wd,Vd,Wc,Pi,Xi,Yi,_i,dj,hj,Kj,Lj,Mj,Oj,Qj,tk,vo,Dp,vl,ax,ax,ax,ax,ax,ax,ax,ax,ax];var ic=[bx,Gd];var jc=[cx,he];var kc=[dx,Hd];var lc=[ex,yd];var mc=[fx,nf,pf,Vc,qf,of,Ak,fx];var nc=[gx,eg,Ff,gx];var oc=[hx,wi,Kd,Sd,Td,Ud,hd,Ri,Wi,wu,xu,hx,hx,hx,hx,hx];var pc=[ix,df,_f,te,jx,ix,ix,ix];var qc=[kx,be,De,wf,yf,ce,lf,mf,de,He,jd,Sf,Xe,Rf,qd,rd,cg,vf,Yc,sd,Xd,xf,Yd,ud,wd,xd,zd,Ad,Me,vd,Bd,Cd,Dd,Ed,td,Re,Oe,Xc,Tc,fg,Pc,Sc,Zd,pd,md,od,nd,Lc,Jc,sf,Tf,jf,zf,tf,Uf,Je,Ie,Ze,_e,_c,Ii,Oi,Si,Zi,aj,bj,cj,gk,qk,rk,lx,mx,nx,Bk,Fk,al,ll,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx];var rc=[ox,ui,Id,Jd,Ld,gd,Ui,ej,fj,gj,ij,jj,kj,lj,mj,nj,oj,pj,qj,rj,sj,tj,uj,vj,wj,xj,yj,zj,Aj,Bj,Cj,Dj,Ej,Fj,Gj,Hj,Ij,Jj,Nj,Pj,Rj,Sj,Tj,Uj,Vj,Wj,Xj,Yj,Zj,_j,$j,ak,bk,ck,dk,ek,fk,Yh,ox,ox,ox,ox,ox,ox];var sc=[px,dg,$e,px];var tc=[qx,Ef,Gf,Ne];var uc=[rx,ri,si,we,ff,fd,Pe,Qe,hg,Xf,Nc,kd,lg,ed,Ye,sk,wk,Ic,Ih,Kh,Oh,Zh,en,iq,rx,rx,rx,rx,rx,rx,rx,rx];var vc=[sx,Bf,Fd,Nd,Pd,Qd,Rd,ae,Vi,ug,sx,sx,sx,sx,sx,sx];var wc=[tx,ti,yi,zi,Bi,Di,Ei,Fi,Gi,Hi,_d,xe,Fe,Ee,Cf,ee,fe,ge,qe,re,ie,je,oe,pe,ke,me,ne,le,hf,$d,dd,Wf,Yf,ad,Ge,cd,Rc,ig,gg,Ke,ld,Uc,Nf,Qf,mg,ng,id,jg,Zc,Ue,Mi,Ni,$i,kk,lk,mk,nk,ok,uk,ux,vx,wx,xx,yx,zx,yk,Ax,Bx,Ck,Dk,Ek,Gk,Hk,Ik,Uh,Cp,Im,Jm,us,vs,ct,dt,lu,mu,tu,uu,vu,uv,Xv,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx];var xc=[Cx,ue];var yc=[Dx,pi,se,ye,Ae,Zf,$f,Ve,af,bf,We,cf,gf,Oc,Pf,Ji,Ki,hk,ik,vk,Jk,Zn,_n,Dx,Dx,Dx,Dx,Dx,Dx,Dx,Dx,Dx];return{_i64Subtract:iw,_strcat:mw,_free:aw,_main:Hc,_realloc:bw,_i64Add:ow,_memmove:qw,_bitshift64Ashr:jw,_strlen:lw,_memset:kw,_malloc:$v,_memcpy:pw,_bitshift64Lshr:rw,_llvm_bswap_i32:sw,_bitshift64Shl:nw,runPostSets:hw,_emscripten_replace_memory:_emscripten_replace_memory,stackAlloc:zc,stackSave:Ac,stackRestore:Bc,setThrew:Cc,setTempRet0:Fc,getTempRet0:Gc,dynCall_iiiiiiii:Bw,dynCall_iiii:Cw,dynCall_viiiiii:Dw,dynCall_vi:Ew,dynCall_viiiii:Fw,dynCall_dii:Gw,dynCall_vid:Hw,dynCall_di:Iw,dynCall_i:Jw,dynCall_iiiiiiiiii:Kw,dynCall_vii:Lw,dynCall_iiiiiii:Mw,dynCall_ii:Nw,dynCall_viii:Ow,dynCall_v:Pw,dynCall_iiiiiiiii:Qw,dynCall_iiiii:Rw,dynCall_viiii:Sw,dynCall_iii:Tw,dynCall_iiid:Uw,dynCall_iiiiii:Vw}}) -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var real__i64Subtract=asm["_i64Subtract"];asm["_i64Subtract"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Subtract.apply(null,arguments)});var real__strcat=asm["_strcat"];asm["_strcat"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__strcat.apply(null,arguments)});var real__main=asm["_main"];asm["_main"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__main.apply(null,arguments)});var real__realloc=asm["_realloc"];asm["_realloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__realloc.apply(null,arguments)});var real__i64Add=asm["_i64Add"];asm["_i64Add"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Add.apply(null,arguments)});var real__memmove=asm["_memmove"];asm["_memmove"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__memmove.apply(null,arguments)});var real__bitshift64Ashr=asm["_bitshift64Ashr"];asm["_bitshift64Ashr"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Ashr.apply(null,arguments)});var real__strlen=asm["_strlen"];asm["_strlen"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__strlen.apply(null,arguments)});var real__bitshift64Lshr=asm["_bitshift64Lshr"];asm["_bitshift64Lshr"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Lshr.apply(null,arguments)});var real__llvm_bswap_i32=asm["_llvm_bswap_i32"];asm["_llvm_bswap_i32"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__llvm_bswap_i32.apply(null,arguments)});var real__bitshift64Shl=asm["_bitshift64Shl"];asm["_bitshift64Shl"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Shl.apply(null,arguments)});var real_runPostSets=asm["runPostSets"];asm["runPostSets"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_runPostSets.apply(null,arguments)});var real__emscripten_replace_memory=asm["_emscripten_replace_memory"];asm["_emscripten_replace_memory"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__emscripten_replace_memory.apply(null,arguments)});var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _strcat=Module["_strcat"]=asm["_strcat"];var _free=Module["_free"]=asm["_free"];var _main=Module["_main"]=asm["_main"];var _realloc=Module["_realloc"]=asm["_realloc"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memmove=Module["_memmove"]=asm["_memmove"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _strlen=Module["_strlen"]=asm["_strlen"];var _memset=Module["_memset"]=asm["_memset"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=asm["dynCall_iiiiiiiiii"];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_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiid=Module["dynCall_iiid"]=asm["dynCall_iiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=(function(){var goog={math:{}};goog.math.Long=(function(low,high){this.low_=low|0;this.high_=high|0});goog.math.Long.IntCache_={};goog.math.Long.fromInt=(function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj){return cachedObj}}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128){goog.math.Long.IntCache_[value]=obj}return obj});goog.math.Long.fromNumber=(function(value){if(isNaN(value)||!isFinite(value)){return goog.math.Long.ZERO}else if(value<=-goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MIN_VALUE}else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MAX_VALUE}else if(value<0){return goog.math.Long.fromNumber(-value).negate()}else{return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)}});goog.math.Long.fromBits=(function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)});goog.math.Long.fromString=(function(str,opt_radix){if(str.length==0){throw Error("number format error: empty string")}var radix=opt_radix||10;if(radix<2||36=0){throw Error('number format error: interior "-" character: '+str)}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_});goog.math.Long.prototype.getNumBitsAbs=(function(){if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){return 64}else{return this.negate().getNumBitsAbs()}}else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--){if((val&1<0});goog.math.Long.prototype.greaterThanOrEqual=(function(other){return this.compare(other)>=0});goog.math.Long.prototype.compare=(function(other){if(this.equals(other)){return 0}var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg){return-1}if(!thisNeg&&otherNeg){return 1}if(this.subtract(other).isNegative()){return-1}else{return 1}});goog.math.Long.prototype.negate=(function(){if(this.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.MIN_VALUE}else{return this.not().add(goog.math.Long.ONE)}});goog.math.Long.prototype.add=(function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.subtract=(function(other){return this.add(other.negate())});goog.math.Long.prototype.multiply=(function(other){if(this.isZero()){return goog.math.Long.ZERO}else if(other.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}else if(other.equals(goog.math.Long.MIN_VALUE)){return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().multiply(other.negate())}else{return this.negate().multiply(other).negate()}}else if(other.isNegative()){return this.multiply(other.negate()).negate()}if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_)){return goog.math.Long.fromNumber(this.toNumber()*other.toNumber())}var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.div=(function(other){if(other.isZero()){throw Error("division by zero")}else if(this.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE)){return goog.math.Long.MIN_VALUE}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ONE}else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO)){return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE}else{var rem=this.subtract(other.multiply(approx));var result=approx.add(rem.div(other));return result}}}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().div(other.negate())}else{return this.negate().div(other).negate()}}else if(other.isNegative()){return this.div(other.negate()).negate()}var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero()){approxRes=goog.math.Long.ONE}res=res.add(approxRes);rem=rem.subtract(approxRem)}return res});goog.math.Long.prototype.modulo=(function(other){return this.subtract(this.div(other).multiply(other))});goog.math.Long.prototype.not=(function(){return goog.math.Long.fromBits(~this.low_,~this.high_)});goog.math.Long.prototype.and=(function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)});goog.math.Long.prototype.or=(function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)});goog.math.Long.prototype.xor=(function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)});goog.math.Long.prototype.shiftLeft=(function(numBits){numBits&=63;if(numBits==0){return this}else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<>>32-numBits)}else{return goog.math.Long.fromBits(0,low<>>numBits|high<<32-numBits,high>>numBits)}else{return goog.math.Long.fromBits(high>>numBits-32,high>=0?0:-1)}}});goog.math.Long.prototype.shiftRightUnsigned=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32){return goog.math.Long.fromBits(high,0)}else{return goog.math.Long.fromBits(high>>>numBits-32,0)}}});var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<>this.DB-sh}else this[this.t-1]|=x<=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<0){if(p>p)>0){m=true;r=int2char(d)}while(i>=0){if(p>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<>bs;for(var i=ds+1;i>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i=0)r[i]=0;for(i=0;i=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<1?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&1<0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:(function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative()){ret=x.negate()}else{ret=x}HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_}),ensureTemps:(function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=new BigInteger}),lh2bignum:(function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d}),stringify:(function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret}),fromString:(function(str,base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error"})};return Wrapper})();if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");function applyMemoryInitializer(data){if(data.byteLength)data=new Uint8Array(data);for(var i=0;i0){Module.printErr("run() called, but dependencies remain, so not running");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(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}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){if(Module["noExitRuntime"]){Module.printErr("exit("+status+") called, but noExitRuntime, so not exiting (you can use emscripten_force_exit, if you want to force a true shutdown)");return}ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status);if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}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="";var output="abort("+what+") at "+stackTrace()+extra;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() diff --git a/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-pointer-masking.js b/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-pointer-masking.js deleted file mode 100644 index 3020183f67b..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-pointer-masking.js +++ /dev/null @@ -1,18 +0,0 @@ -var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function";var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};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}}))}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 (jsc?)"}}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};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.log(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]}}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,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){assert(args.length==sig.length-1);if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].apply(null,args)}else{assert(sig.length==1);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i0),size)|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success)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};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;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 cwrap,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){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!=="array",'Return type should not be "array".');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)}}Module["setValue"]=setValue;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}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;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=[_malloc,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)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){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)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;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}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;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}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);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)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}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(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;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)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;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}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.");chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}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["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"];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_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=="undefined"){runDependencyWatcher=setInterval((function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;Module.printErr("still waiting on run dependencies:")}Module.printErr("dependency: "+dep)}if(shown){Module.printErr("(end of list)")}}),1e4)}}else{Module.printErr("warning: run dependency added without ID")}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{Module.printErr("warning: run dependency removed without ID")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;STATIC_BASE=8;STATICTOP=STATIC_BASE+49568;__ATINIT__.push();allocate([32,0,0,0,88,0,0,0,168,0,0,0,224,0,0,0,0,1,0,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,116,49,40,97,32,73,78,84,69,71,69,82,44,32,98,32,73,78,84,69,71,69,82,44,32,99,32,86,65,82,67,72,65,82,40,49,48,48,41,41,59,0,0,73,78,83,69,82,84,32,73,78,84,79,32,116,49,32,86,65,76,85,69,83,40,49,44,49,51,49,53,51,44,39,116,104,105,114,116,101,101,110,32,116,104,111,117,115,97,110,100,32,111,110,101,32,104,117,110,100,114,101,100,32,102,105,102,116,121,32,116,104,114,101,101,39,41,59,0,0,0,0,0,73,78,83,69,82,84,32,73,78,84,79,32,116,49,32,86,65,76,85,69,83,40,49,44,57,56,55,44,39,115,111,109,101,32,111,116,104,101,114,32,110,117,109,98,101,114,39,41,59,0,0,0,0,0,0,0,83,69,76,69,67,84,32,99,111,117,110,116,40,42,41,32,70,82,79,77,32,116,49,59,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,97,44,32,98,44,32,99,32,70,82,79,77,32,116,49,59],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([114,99,32,61,61,32,83,81,76,73,84,69,95,79,75,0,116,101,115,116,46,99,0,0,116,101,115,116,49,0,0,0,99,111,117,110,116,40,42,41,61,50,97,61,49,98,61,49,51,49,53,51,99,61,116,104,105,114,116,101,101,110,32,116,104,111,117,115,97,110,100,32,111,110,101,32,104,117,110,100,114,101,100,32,102,105,102,116,121,32,116,104,114,101,101,97,61,49,98,61,57,56,55,99,61,115,111,109,101,32,111,116,104,101,114,32,110,117,109,98,101,114,0,0,0,0,0,0,115,116,114,99,109,112,40,98,117,102,102,101,114,44,32,69,88,80,69,67,84,69,68,41,32,61,61,32,48,0,0,0,51,46,56,46,57,0,0,0,83,81,76,73,84,69,95,0,104,191,0,0,120,191,0,0,136,191,0,0,152,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,254,255,255,127,0,0,0,0,128,0,0,0,244,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,208,38,0,0,216,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,224,38,0,0,240,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,248,38,0,0,8,39,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,16,39,0,0,216,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,117,110,105,120,0,0,0,0,7,0,0,0,0,0,0,0,117,110,105,120,45,110,111,110,101,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,117,110,105,120,45,100,111,116,102,105,108,101,0,0,0,0,9,0,0,0,0,0,0,0,117,110,105,120,45,101,120,99,108,0,0,0,0,0,0,0,115,111,117,114,99,101,32,97,110,100,32,100,101,115,116,105,110,97,116,105,111,110,32,109,117,115,116,32,98,101,32,100,105,115,116,105,110,99,116,0,0,0,0,64,0,0,0,0,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,115,116,114,105,110,103,32,111,114,32,98,108,111,98,32,116,111,111,32,98,105,103,0,0,145,0,0,0,54,0,0,0,55,0,0,0,31,1,1,1,70,0,10,1,47,0,0,1,35,1,0,0,16,0,4,0,61,0,0,0,24,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,58,32,37,115,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,116,97,98,108,101,32,119,105,116,104,111,117,116,32,114,111,119,105,100,58,32,37,115,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,101,119,58,32,37,115,0,0,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,34,37,115,34,0,0,0,0,102,111,114,101,105,103,110,32,107,101,121,0,0,0,0,0,105,110,100,101,120,101,100,0,99,97,110,110,111,116,32,111,112,101,110,32,37,115,32,99,111,108,117,109,110,32,102,111,114,32,119,114,105,116,105,110,103,0,0,0,0,0,0,0,37,115,0,0,0,0,0,0,42,63,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,10,10,10,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,64,0,42,42,42,42,42,42,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,3,2,5,0,0,0,1,0,2,3,4,2,2,2,1,1,2,3,4,2,2,2,1,2,2,2,2,2,2,2,1,3,3,2,4,2,2,2,1,4,2,2,2,4,5,2,6,5,5,5,5,5,5,5,6,6,5,5,5,5,5,7,1,7,5,5,5,5,5,5,99,114,101,97,116,101,0,0,116,114,105,103,103,101,114,0,116,101,109,112,0,0,0,0,116,101,109,112,111,114,97,114,121,0,0,0,0,0,0,0,101,110,100,0,0,0,0,0,101,120,112,108,97,105,110,0,50,48,49,53,45,48,52,45,48,56,32,49,50,58,49,54,58,51,51,32,56,97,56,102,102,99,56,54,50,101,57,54,102,53,55,97,97,54,57,56,102,57,51,100,101,49,48,100,101,101,50,56,101,54,57,102,54,101,48,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,3,0,0,0,0,8,0,235,3,0,0,0,0,128,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,109,0,101,0,109,0,111,0,114,0,121,0,0,0,0,0,0,0,108,0,105,0,98,0,114,0,97,0,114,0,121,0,32,0,114,0,111,0,117,0,116,0,105,0,110,0,101,0,32,0,99,0,97,0,108,0,108,0,101,0,100,0,32,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,115,0,101,0,113,0,117,0,101,0,110,0,99,0,101,0,0,0,0,0,0,202,154,59,0,202,154,59,208,7,0,0,232,3,0,0,244,1,0,0,168,97,0,0,127,0,0,0,10,0,0,0,80,195,0,0,231,3,0,0,232,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,78,84,69,71,69,82,0,66,73,78,65,82,89,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,32,99,111,108,117,109,110,58,32,37,115,46,37,115,0,0,0,0,0,57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,56,48,0,0,0,0,0,0,111,110,111,102,102,97,108,115,101,121,101,115,116,114,117,101,102,117,108,108,0,0,0,0,0,1,2,4,9,12,16,0,2,2,3,5,3,4,4,0,1,0,0,0,1,1,2,0,82,69,73,78,68,69,88,69,68,69,83,67,65,80,69,65,67,72,69,67,75,69,89,66,69,70,79,82,69,73,71,78,79,82,69,71,69,88,80,76,65,73,78,83,84,69,65,68,68,65,84,65,66,65,83,69,76,69,67,84,65,66,76,69,70,84,72,69,78,68,69,70,69,82,82,65,66,76,69,76,83,69,88,67,69,80,84,82,65,78,83,65,67,84,73,79,78,65,84,85,82,65,76,84,69,82,65,73,83,69,88,67,76,85,83,73,86,69,88,73,83,84,83,65,86,69,80,79,73,78,84,69,82,83,69,67,84,82,73,71,71,69,82,69,70,69,82,69,78,67,69,83,67,79,78,83,84,82,65,73,78,84,79,70,70,83,69,84,69,77,80,79,82,65,82,89,85,78,73,81,85,69,82,89,87,73,84,72,79,85,84,69,82,69,76,69,65,83,69,65,84,84,65,67,72,65,86,73,78,71,82,79,85,80,68,65,84,69,66,69,71,73,78,78,69,82,69,67,85,82,83,73,86,69,66,69,84,87,69,69,78,79,84,78,85,76,76,73,75,69,67,65,83,67,65,68,69,76,69,84,69,67,65,83,69,67,79,76,76,65,84,69,67,82,69,65,84,69,67,85,82,82,69,78,84,95,68,65,84,69,68,69,84,65,67,72,73,77,77,69,68,73,65,84,69,74,79,73,78,83,69,82,84,77,65,84,67,72,80,76,65,78,65,76,89,90,69,80,82,65,71,77,65,66,79,82,84,86,65,76,85,69,83,86,73,82,84,85,65,76,73,77,73,84,87,72,69,78,87,72,69,82,69,78,65,77,69,65,70,84,69,82,69,80,76,65,67,69,65,78,68,69,70,65,85,76,84,65,85,84,79,73,78,67,82,69,77,69,78,84,67,65,83,84,67,79,76,85,77,78,67,79,77,77,73,84,67,79,78,70,76,73,67,84,67,82,79,83,83,67,85,82,82,69,78,84,95,84,73,77,69,83,84,65,77,80,82,73,77,65,82,89,68,69,70,69,82,82,69,68,73,83,84,73,78,67,84,68,82,79,80,70,65,73,76,70,82,79,77,70,85,76,76,71,76,79,66,89,73,70,73,83,78,85,76,76,79,82,68,69,82,69,83,84,82,73,67,84,82,73,71,72,84,82,79,76,76,66,65,67,75,82,79,87,85,78,73,79,78,85,83,73,78,71,86,65,67,85,85,77,86,73,69,87,73,78,73,84,73,65,76,76,89,0,0,0,0,0,0,0,76,105,117,74,0,45,0,0,82,0,77,0,0,42,12,78,15,0,116,85,54,112,0,19,0,0,121,0,119,115,0,22,93,0,9,0,0,70,71,0,69,6,0,48,90,102,0,118,101,0,0,44,0,103,24,0,17,0,122,53,23,0,5,110,25,96,0,0,124,106,60,123,57,28,55,0,91,0,100,26,0,99,0,0,0,95,92,97,88,109,14,39,108,0,81,0,18,89,111,32,0,120,80,113,62,46,84,0,0,94,40,59,114,0,36,0,0,29,0,86,63,64,0,20,61,0,56,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,13,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,21,0,0,0,0,0,50,0,43,3,47,0,0,0,0,30,0,58,0,38,0,0,0,1,66,0,0,67,0,41,0,0,0,0,0,0,49,65,0,0,0,0,31,52,16,34,10,0,0,0,0,0,0,0,11,72,79,0,8,0,104,98,0,107,0,87,0,75,51,0,27,37,73,83,0,35,68,0,0,0,0,0,0,7,7,5,4,6,4,5,3,6,7,3,6,6,7,7,3,8,2,6,5,4,4,3,10,4,6,11,6,2,7,5,5,9,6,9,9,7,10,10,4,6,2,3,9,4,2,6,5,7,4,5,7,6,6,5,6,5,5,9,7,7,3,2,4,4,7,3,6,4,7,6,12,6,9,4,6,5,4,7,6,5,6,7,5,4,5,6,5,7,3,7,13,2,2,4,6,6,8,5,17,12,7,8,8,2,4,4,4,4,4,2,2,6,5,8,5,8,3,5,5,6,4,9,3,0,0,0,0,0,0,2,0,2,0,8,0,9,0,14,0,16,0,20,0,23,0,25,0,25,0,29,0,33,0,36,0,41,0,46,0,48,0,53,0,54,0,59,0,62,0,65,0,67,0,69,0,78,0,81,0,86,0,91,0,95,0,96,0,101,0,105,0,109,0,117,0,122,0,128,0,136,0,142,0,152,0,159,0,162,0,162,0,165,0,167,0,167,0,171,0,176,0,179,0,184,0,184,0,188,0,192,0,199,0,204,0,209,0,212,0,218,0,221,0,225,0,234,0,240,0,240,0,240,0,243,0,246,0,250,0,251,0,255,0,5,1,9,1,16,1,22,1,34,1,40,1,49,1,51,1,57,1,62,1,64,1,71,1,76,1,81,1,87,1,93,1,98,1,102,1,105,1,111,1,115,1,122,1,124,1,131,1,133,1,135,1,144,1,148,1,154,1,160,1,168,1,173,1,173,1,189,1,196,1,203,1,204,1,211,1,215,1,219,1,223,1,227,1,230,1,232,1,234,1,240,1,244,1,252,1,1,2,9,2,12,2,17,2,22,2,28,2,32,2,37,2,67,28,140,42,84,44,104,53,35,113,46,47,50,2,49,142,41,24,119,16,98,138,11,112,139,117,6,30,107,98,141,57,9,20,13,118,62,105,99,131,55,54,111,21,21,71,103,3,25,66,98,14,34,128,127,110,5,98,58,74,77,19,52,101,50,37,33,109,136,95,17,69,43,8,124,108,51,4,32,56,29,120,65,129,137,130,68,31,59,72,100,106,15,75,38,39,10,40,98,69,69,102,7,121,73,114,45,123,98,50,36,18,76,126,60,98,12,61,115,125,63,64,48,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,82,79,87,73,68,95,0,82,79,87,73,68,0,0,0,79,73,68,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,115,113,108,105,116,101,95,109,97,115,116,101,114,40,10,32,32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116,98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,67,82,69,65,84,69,32,84,69,77,80,32,84,65,66,76,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,40,10,32,32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116,98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,0,0,0,0,0,0,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,0,0,0,0,0,0,115,113,108,105,116,101,95,109,97,115,116,101,114,0,0,0,49,0,0,0,0,0,0,0,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,109,117,115,116,32,117,115,101,32,116,104,101,32,115,97,109,101,32,116,101,120,116,32,101,110,99,111,100,105,110,103,32,97,115,32,109,97,105,110,32,100,97,116,97,98,97,115,101,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,102,105,108,101,32,102,111,114,109,97,116,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,0,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,83,69,76,69,67,84,32,116,98,108,44,105,100,120,44,115,116,97,116,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,0,0,0,0,117,110,111,114,100,101,114,101,100,42,0,0,0,0,0,0,115,122,61,91,48,45,57,93,42,0,0,0,0,0,0,0,110,111,115,107,105,112,115,99,97,110,42,0,0,0,0,0,0,0,2,0,3,0,5,0,6,0,7,0,8,0,9,0,33,0,32,0,30,0,28,0,26,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,114,111,111,116,112,97,103,101,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,40,37,115,41,0,0,37,115,32,45,32,37,115,0,100,97,116,97,98,97,115,101,32,99,111,114,114,117,112,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,0,0,0,109,105,115,117,115,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,0,0,0,78,79,67,65,83,69,0,0,82,84,82,73,77,0,0,0,109,97,105,110,0,0,0,0,10,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,6,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,13,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,8,0,0,0,14,0,0,0,3,0,0,0,4,0,0,0,9,0,0,0,10,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,19,0,0,0,1,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,11,0,0,0,6,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,9,0,0,0,28,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,2,0,0,0,16,0,0,0,29,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,17,0,0,0,1,0,0,0,2,0,0,0,18,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,8,0,0,0,9,0,0,0,12,0,0,0,1,0,0,0,33,0,0,0,19,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,13,0,0,0,14,0,0,0,7,0,0,0,5,0,0,0,20,0,0,0,1,0,0,0,1,0,0,0,21,0,0,0,15,0,0,0,34,0,0,0,16,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,1,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,35,0,0,0,17,0,0,0,10,0,0,0,11,0,0,0,34,0,0,0,12,0,0,0,18,0,0,0,35,0,0,0,36,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,37,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,38,0,0,0,5,0,0,0,6,0,0,0,39,0,0,0,7,0,0,0,40,0,0,0,36,0,0,0,41,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,37,0,0,0,6,0,0,0,42,0,0,0,38,0,0,0,19,0,0,0,39,0,0,0,43,0,0,0,10,0,0,0,44,0,0,0,11,0,0,0,45,0,0,0,46,0,0,0,40,0,0,0,47,0,0,0,48,0,0,0,2,0,0,0,20,0,0,0,49,0,0,0,13,0,0,0,50,0,0,0,5,0,0,0,41,0,0,0,5,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,42,0,0,0,43,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,51,0,0,0,52,0,0,0,44,0,0,0,45,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,46,0,0,0,26,0,0,0,12,0,0,0,47,0,0,0,13,0,0,0,14,0,0,0,57,0,0,0,3,0,0,0,1,0,0,0,58,0,0,0,14,0,0,0,48,0,0,0,59,0,0,0,27,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,49,0,0,0,97,117,116,111,109,97,116,105,99,32,101,120,116,101,110,115,105,111,110,32,108,111,97,100,105,110,103,32,102,97,105,108,101,100,58,32,37,115,0,0,77,65,84,67,72,0,0,0,58,109,101,109,111,114,121,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,60,0,0,0,15,0,0,0,16,0,0,0,28,0,0,0,50,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,112,97,103,101,115,32,102,114,111,109,32,37,115,0,0,0,0,0,0,217,213,5,249,32,161,99,215,99,97,110,110,111,116,32,108,105,109,105,116,32,87,65,76,32,115,105,122,101,58,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,102,114,97,109,101,115,32,102,114,111,109,32,87,65,76,32,102,105,108,101,32,37,115,0,0,0,0,45,106,111,117,114,110,97,108,0,0,0,0,0,0,0,0,45,119,97,108,0,0,0,0,110,111,108,111,99,107,0,0,105,109,109,117,116,97,98,108,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,105,108,101,58,0,0,0,108,111,99,97,108,104,111,115,116,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,117,114,105,32,97,117,116,104,111,114,105,116,121,58,32,37,46,42,115,0,0,0,0,0,118,102,115,0,0,0,0,0,99,97,99,104,101,0,0,0,232,58,0,0,0,0,2,0,240,58,0,0,0,0,4,0,0,0,0,0,0,0,0,0,115,104,97,114,101,100,0,0,112,114,105,118,97,116,101,0,109,111,100,101,0,0,0,0,40,59,0,0,1,0,0,0,48,59,0,0,2,0,0,0,56,59,0,0,6,0,0,0,64,59,0,0,128,0,0,0,0,0,0,0,0,0,0,0,114,111,0,0,0,0,0,0,114,119,0,0,0,0,0,0,114,119,99,0,0,0,0,0,109,101,109,111,114,121,0,0,97,99,99,101,115,115,0,0,110,111,32,115,117,99,104,32,37,115,32,109,111,100,101,58,32,37,115,0,0,0,0,0,37,115,32,109,111,100,101,32,110,111,116,32,97,108,108,111,119,101,100,58,32,37,115,0,110,111,32,115,117,99,104,32,118,102,115,58,32,37,115,0,105,110,118,97,108,105,100,0,65,80,73,32,99,97,108,108,32,119,105,116,104,32,37,115,32,100,97,116,97,98,97,115,101,32,99,111,110,110,101,99,116,105,111,110,32,112,111,105,110,116,101,114,0,0,0,0,117,110,97,98,108,101,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,32,37,115,32,105,110,32,116,104,101,32,114,101,113,117,101,115,116,101,100,32,99,111,110,116,101,120,116,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,0,1,2,3,0,1,0,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,117,115,101,114,45,102,117,110,99,116,105,111,110,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,240,60,0,0,0,61,0,0,0,0,0,0,40,61,0,0,72,61,0,0,104,61,0,0,128,61,0,0,160,61,0,0,176,61,0,0,216,61,0,0,232,61,0,0,248,61,0,0,32,62,0,0,56,62,0,0,88,62,0,0,120,62,0,0,144,62,0,0,168,62,0,0,112,39,0,0,200,62,0,0,224,62,0,0,248,62,0,0,32,63,0,0,64,63,0,0,88,63,0,0,120,63,0,0,160,63,0,0,0,0,0,0,110,111,116,32,97,110,32,101,114,114,111,114,0,0,0,0,83,81,76,32,108,111,103,105,99,32,101,114,114,111,114,32,111,114,32,109,105,115,115,105,110,103,32,100,97,116,97,98,97,115,101,0,0,0,0,0,97,99,99,101,115,115,32,112,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,0,0,0,0,0,0,0,99,97,108,108,98,97,99,107,32,114,101,113,117,101,115,116,101,100,32,113,117,101,114,121,32,97,98,111,114,116,0,0,100,97,116,97,98,97,115,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,97,32,114,101,97,100,111,110,108,121,32,100,97,116,97,98,97,115,101,0,0,0,0,105,110,116,101,114,114,117,112,116,101,100,0,0,0,0,0,100,105,115,107,32,73,47,79,32,101,114,114,111,114,0,0,100,97,116,97,98,97,115,101,32,100,105,115,107,32,105,109,97,103,101,32,105,115,32,109,97,108,102,111,114,109,101,100,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,111,112,101,114,97,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,111,114,32,100,105,115,107,32,105,115,32,102,117,108,108,0,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,32,102,105,108,101,0,0,0,0,108,111,99,107,105,110,103,32,112,114,111,116,111,99,111,108,0,0,0,0,0,0,0,0,116,97,98,108,101,32,99,111,110,116,97,105,110,115,32,110,111,32,100,97,116,97,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,104,97,115,32,99,104,97,110,103,101,100,0,0,0,0,0,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,100,97,116,97,116,121,112,101,32,109,105,115,109,97,116,99,104,0,0,0,0,0,0,0,108,105,98,114,97,114,121,32,114,111,117,116,105,110,101,32,99,97,108,108,101,100,32,111,117,116,32,111,102,32,115,101,113,117,101,110,99,101,0,0,108,97,114,103,101,32,102,105,108,101,32,115,117,112,112,111,114,116,32,105,115,32,100,105,115,97,98,108,101,100,0,0,97,117,116,104,111,114,105,122,97,116,105,111,110,32,100,101,110,105,101,100,0,0,0,0,97,117,120,105,108,105,97,114,121,32,100,97,116,97,98,97,115,101,32,102,111,114,109,97,116,32,101,114,114,111,114,0,98,105,110,100,32,111,114,32,99,111,108,117,109,110,32,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,102,105,108,101,32,105,115,32,101,110,99,114,121,112,116,101,100,32,111,114,32,105,115,32,110,111,116,32,97,32,100,97,116,97,98,97,115,101,0,0,117,110,107,110,111,119,110,32,101,114,114,111,114,0,0,0,97,98,111,114,116,32,100,117,101,32,116,111,32,82,79,76,76,66,65,67,75,0,0,0,117,110,97,98,108,101,32,116,111,32,99,108,111,115,101,32,100,117,101,32,116,111,32,117,110,102,105,110,97,108,105,122,101,100,32,115,116,97,116,101,109,101,110,116,115,32,111,114,32,117,110,102,105,110,105,115,104,101,100,32,98,97,99,107,117,112,115,0,0,0,0,0,1,0,0,0,0,0,0,0,61,0,0,0,8,0,0,0,29,0,0,0,7,0,0,0,62,0,0,0,30,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,63,0,0,0,11,0,0,0,52,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,12,0,0,0,0,0,0,0,102,97,105,108,101,100,32,109,101,109,111,114,121,32,114,101,115,105,122,101,32,37,117,32,116,111,32,37,117,32,98,121,116,101,115,0,0,0,0,0,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,117,32,98,121,116,101,115,32,111,102,32,109,101,109,111,114,121,0,0,0,1,0,1,8,1,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,1,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,2,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,56,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,2,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,56,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,64,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,64,73,0,0,0,0,0,0,0,0,0,0,255,255,33,8,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,0,0,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,1,0,33,16,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,255,255,33,8,1,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,0,0,33,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,1,0,33,16,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,1,0,129,8,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,88,73,0,0,0,0,0,0,0,0,0,0,1,0,65,8,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,96,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,104,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,112,73,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,112,73,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,120,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,128,73,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,136,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,144,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,152,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,152,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,160,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,168,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,255,255,1,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,192,73,0,0,0,0,0,0,0,0,0,0,2,0,1,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,200,73,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,208,73,0,0,0,0,0,0,0,0,0,0,2,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,224,73,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,240,73,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,248,73,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,2,0,33,8,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,16,74,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,24,74,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,40,74,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,64,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,80,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,112,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,144,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,152,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,176,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,184,74,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,200,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,208,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,224,74,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,224,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,14,0,0,0,240,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,15,0,0,0,248,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,16,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,17,0,0,0,8,75,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,17,0,0,0,8,75,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,18,0,0,0,16,75,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,18,0,0,0,16,75,0,0,0,0,0,0,0,0,0,0,2,0,13,8,112,40,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,32,75,0,0,0,0,0,0,0,0,0,0,2,0,5,8,40,75,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,48,75,0,0,0,0,0,0,0,0,0,0,3,0,5,8,40,75,0,0,0,0,0,0,40],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+8464);allocate([48,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,116,114,105,109,0,0,0,114,116,114,105,109,0,0,0,116,114,105,109,0,0,0,0,109,105,110,0,0,0,0,0,109,97,120,0,0,0,0,0,116,121,112,101,111,102,0,0,108,101,110,103,116,104,0,0,105,110,115,116,114,0,0,0,115,117,98,115,116,114,0,0,112,114,105,110,116,102,0,0,117,110,105,99,111,100,101,0,99,104,97,114,0,0,0,0,97,98,115,0,0,0,0,0,114,111,117,110,100,0,0,0,117,112,112,101,114,0,0,0,108,111,119,101,114,0,0,0,99,111,97,108,101,115,99,101,0,0,0,0,0,0,0,0,104,101,120,0,0,0,0,0,105,102,110,117,108,108,0,0,117,110,108,105,107,101,108,121,0,0,0,0,0,0,0,0,108,105,107,101,108,105,104,111,111,100,0,0,0,0,0,0,108,105,107,101,108,121,0,0,114,97,110,100,111,109,0,0,114,97,110,100,111,109,98,108,111,98,0,0,0,0,0,0,110,117,108,108,105,102,0,0,115,113,108,105,116,101,95,118,101,114,115,105,111,110,0,0,115,113,108,105,116,101,95,115,111,117,114,99,101,95,105,100,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,108,111,103,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,117,115,101,100,0,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,103,101,116,0,0,0,0,0,0,0,0,113,117,111,116,101,0,0,0,108,97,115,116,95,105,110,115,101,114,116,95,114,111,119,105,100,0,0,0,0,0,0,0,99,104,97,110,103,101,115,0,116,111,116,97,108,95,99,104,97,110,103,101,115,0,0,0,114,101,112,108,97,99,101,0,122,101,114,111,98,108,111,98,0,0,0,0,0,0,0,0,108,111,97,100,95,101,120,116,101,110,115,105,111,110,0,0,115,117,109,0,0,0,0,0,116,111,116,97,108,0,0,0,97,118,103,0,0,0,0,0,99,111,117,110,116,0,0,0,103,114,111,117,112,95,99,111,110,99,97,116,0,0,0,0,103,108,111,98,0,0,0,0,37,95,0,1,0,0,0,0,108,105,107,101,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,168,75,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,192,75,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,216,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,0,0,0,0,37,115,37,46,42,115,34,37,119,34,0,0,0,0,0,0,37,115,37,115,0,0,0,0,37,46,42,115,34,37,119,34,37,115,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,56,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,72,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,80,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,88,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,104,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,120,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,136,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,160,77,0,0,0,0,0,0,0,0,0,0,106,117,108,105,97,110,100,97,121,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,116,105,109,101,0,0,0,0,100,97,116,101,116,105,109,101,0,0,0,0,0,0,0,0,115,116,114,102,116,105,109,101,0,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,115,116,97,109,112,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,100,97,116,101,0,0,0,0,37,48,50,100,0,0,0,0,37,48,54,46,51,102,0,0,37,48,51,100,0,0,0,0,37,46,49,54,103,0,0,0,37,108,108,100,0,0,0,0,37,48,52,100,0,0,0,0,108,111,99,97,108,116,105,109,101,0,0,0,0,0,0,0,117,110,105,120,101,112,111,99,104,0,0,0,0,0,0,0,117,116,99,0,0,0,0,0,119,101,101,107,100,97,121,32,0,0,0,0,0,0,0,0,115,116,97,114,116,32,111,102,32,0,0,0,0,0,0,0,109,111,110,116,104,0,0,0,121,101,97,114,0,0,0,0,100,97,121,0,0,0,0,0,104,111,117,114,0,0,0,0,109,105,110,117,116,101,0,0,115,101,99,111,110,100,0,0,108,111,99,97,108,32,116,105,109,101,32,117,110,97,118,97,105,108,97,98,108,101,0,0,110,111,119,0,0,0,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,32,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,0,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,0,0,76,73,75,69,32,111,114,32,71,76,79,66,32,112,97,116,116,101,114,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,0,0,0,69,83,67,65,80,69,32,101,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,97,32,115,105,110,103,108,101,32,99,104,97,114,97,99,116,101,114,0,0,0,0,44,0,0,0,0,0,0,0,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,37,33,46,49,53,103,0,0,37,33,46,50,48,101,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,78,85,76,76,0,0,0,0,37,46,42,102,0,0,0,0,105,110,116,101,103,101,114,0,116,101,120,116,0,0,0,0,114,101,97,108,0,0,0,0,98,108,111,98,0,0,0,0,110,117,108,108,0,0,0,0,1,0,0,0,0,0,0,0,152,79,0,0,0,0,0,0,32,0,0,0,0,0,0,0,105,110,116,101,114,114,117,112,116,0,0,0,0,0,0,0,117,110,114,101,99,111,103,110,105,122,101,100,32,116,111,107,101,110,58,32,34,37,84,34,0,0,0,0,0,0,0,0,110,101,97,114,32,34,37,84,34,58,32,115,121,110,116,97,120,32,101,114,114,111,114,0,114,111,119,105,100,0,0,0,117,110,107,110,111,119,110,32,116,97,98,108,101,32,111,112,116,105,111,110,58,32,37,46,42,115,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,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,99,111,109,112,111,117,110,100,32,83,69,76,69,67,84,0,0,0,0,0,0,0,115,101,116,32,108,105,115,116,0,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,111,110,32,102,117,110,99,116,105,111,110,32,37,84,0,0,0,0,0,0,0,8,130,0,0,1,0,0,0,168,51,0,0,1,0,0,0,105,110,100,101,120,0,0,0,113,117,97,108,105,102,105,101,100,32,116,97,98,108,101,32,110,97,109,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,73,78,83,69,82,84,44,32,85,80,68,65,84,69,44,32,97,110,100,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,116,104,101,32,73,78,68,69,88,69,68,32,66,89,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,0,116,104,101,32,78,79,84,32,73,78,68,69,88,69,68,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,144,1,145,2,145,1,146,1,146,3,147,0,147,1,147,3,148,1,149,3,151,0,151,1,151,2,150,0,150,1,150,1,150,1,149,2,149,2,149,2,153,1,153,0,149,2,149,3,149,5,149,2,154,6,156,1,158,0,158,3,157,1,157,0,155,5,155,2,162,0,162,2,160,3,160,1,164,3,165,1,152,1,152,1,152,1,166,0,166,1,168,1,168,4,168,6,169,1,169,2,170,1,170,1,167,2,167,0,173,2,173,2,173,4,173,3,173,3,173,2,173,2,173,3,173,5,173,2,173,4,173,4,173,1,173,2,178,0,178,1,180,0,180,2,182,2,182,3,182,3,182,3,183,2,183,2,183,1,183,1,183,2,181,3,181,2,184,0,184,2,184,2,161,0,161,2,185,3,185,1,186,1,186,0,187,2,187,7,187,5,187,5,187,10,189,0,189,1,176,0,176,3,190,0,190,2,191,1,191,1,191,1,149,4,193,2,193,0,149,8,149,4,149,1,163,2,195,1,195,3,198,1,198,2,198,1,196,9,196,1,207,4,207,5,199,1,199,1,199,0,210,2,210,0,200,3,200,2,200,4,211,2,211,1,211,0,201,0,201,2,213,2,213,0,212,7,212,7,212,7,159,0,159,2,194,2,214,1,214,2,214,3,214,4,216,2,216,0,215,0,215,3,215,2,217,4,217,0,205,0,205,3,220,4,220,2,177,1,177,1,177,0,203,0,203,3,204,0,204,2,206,0,206,2,206,4,206,4,149,6,202,0,202,2,149,8,221,5,221,3,149,6,149,7,222,2,222,1,223,0,223,3,219,3,219,1,175,1,175,3,174,1,175,1,175,1,175,3,175,5,174,1,174,1,175,1,175,3,175,6,175,5,175,4,174,1,175,3,175,3,175,3,175,3,175,3,175,3,175,3,175,3,224,1,224,2,175,3,175,5,175,2,175,3,175,3,175,4,175,2,175,2,175,2,175,2,225,1,225,2,175,5,226,1,226,2,175,5,175,3,175,5,175,4,175,4,175,5,228,5,228,4,229,2,229,0,227,1,227,0,209,1,209,0,208,3,208,1,149,12,230,1,230,0,179,0,179,3,188,5,188,3,231,0,231,2,149,4,149,1,149,2,149,3,149,5,149,6,149,5,149,6,232,1,232,1,232,1,232,1,232,1,171,2,171,1,172,2,149,5,233,11,235,1,235,1,235,2,235,0,236,1,236,1,236,3,237,0,237,3,238,0,238,2,234,3,234,2,240,1,240,3,241,0,241,3,241,2,239,7,239,5,239,5,239,1,175,4,175,6,192,1,192,1,192,1,149,4,149,6,149,3,243,0,243,2,242,1,242,0,149,1,149,3,149,1,149,3,149,6,149,6,244,1,245,0,245,1,149,1,149,4,246,8,247,1,247,3,248,0,248,2,249,1,249,3,250,1,251,0,251,4,251,2,197,0,197,2,197,3,252,6,252,8,0,0,238,0,186,3,213,0,33,1,54,1,234,0,144,0,61,1,147,255,126,1,121,1,47,1,205,1,133,1,122,1,112,1,46,1,38,1,253,0,139,1,37,1,68,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,254,3,244,3,237,3,230,3,195,3,193,3,191,3,189,3,182,3,179,3,162,3,144,3,105,3,93,3,55,3,42,3,3,3,247,2,208,2,196,2,158,2,145,2,107,2,102,2,100,2,98,2,96,2,94,2,92,2,86,2,83,2,81,2,68,2,30,2,28,2,25,2,23,2,21,2,19,2,17,2,15,2,247,1,130,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,95,0,191,1,82,0,78,1,248,1,211,1,147,1,221,1,208,1,147,1,147,1,147,1,147,1,92,3,235,2,232,2,17,3,126,2,126,2,158,3,123,3,132,3,131,3,119,3,76,3,72,3,67,3,80,3,62,3,75,3,61,3,24,3,71,3,58,3,225,2,70,3,27,3,21,3,47,0,222,2,18,2,184,2,9,3,199,2,165,2,221,2,218,2,217,2,216,2,215,2,115,2,192,1,64,0,187,0,25,5,22,5,228,4,10,5,249,4,43,5,42,5,41,5,39,5,38,5,36,5,35,5,34,5,33,5,32,5,31,5,30,5,28,5,27,5,24,5,23,5,21,5,18,5,14,5,12,5,9,5,242,4,240,4,235,4,8,5,7,5,214,4,5,5,1,5,0,5,255,4,254,4,227,4,253,4,252,4,251,4,249,4,244,4,243,4,241,4,239,4,237,4,233,4,224,4,213,4,223,4,222,4,219,4,214,4,216,4,211,4,225,4,210,4,209,4,206,4,196,4,190,4,186,4,201,4,195,4,208,4,207,4,173,4,171,4,203,4,200,4,177,4,184,4,218,4,113,4,212,4,205,4,169,4,157,4,197,4,153,4,172,4,155,4,167,4,166,4,162,4,158,4,194,4,192,4,152,4,138,4,159,4,156,4,136,4,175,4,179,4,109,4,71,4,174,4,170,4,164,4,168,4,147,4,145,4,144,4,149,4,150,4,142,4,135,4,117,4,146,4,134,4,143,4,133,4,108,4,121,4,119,4,100,4,104,4,79,4,78,4,76,4,72,4,126,4,125,4,61,4,101,4,56,4,40,4,96,4,73,4,58,4,54,4,49,4,43,4,85,4,83,4,95,4,93,4,92,4,89,4,87,4,84,4,239,3,232,3,234,3,52,4,51,4,57,4,0,0,0,0,50,1,212,0,176,1,187,3,127,2,191,0,187,3,39,1,47,2,88,0,88,0,88,0,88,0,81,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,185,0,184,0,183,0,123,2,123,2,36,1,94,2,94,2,88,0,88,0,88,0,88,0,171,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,16,0,180,1,85,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,172,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,47,2,84,0,84,0,84,0,83,0,74,1,65,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,123,2,123,2,122,2,121,2,182,0,170,2,38,2,123,1,120,1,119,1,17,0,66,1,94,2,94,2,115,1,198,0,223,1,91,0,118,1,82,0,79,0,165,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,86,2,123,2,123,2,107,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,186,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,82,2,82,2,142,0,72,1,71,1,228,1,249,0,88,1,238,0,123,2,123,2,122,2,121,2,73,2,192,1,14,2,13,2,229,0,132,1,1,0,138,1,194,1,72,2,193,1,123,2,123,2,123,2,123,2,63,1,139,1,94,2,94,2,199,0,157,0,17,1,126,1,12,1,125,1,187,0,123,2,123,2,122,2,121,2,55,1,43,2,10,1,81,2,81,2,10,1,91,1,76,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,222,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,16,1,24,2,122,2,121,2,146,0,98,2,197,0,54,1,63,2,182,0,226,1,15,1,123,1,120,1,119,1,250,1,21,0,122,2,121,2,122,2,121,2,123,2,123,2,118,1,99,2,62,2,36,2,184,1,111,0,51,2,94,2,94,2,122,2,121,2,68,1,223,1,96,2,96,2,96,2,44,1,179,1,61,2,119,0,151,1,210,0,162,0,50,2,115,3,80,2,80,2,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,250,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,108,2,111,0,123,2,123,2,105,1,94,2,94,2,102,1,249,0,93,1,248,0,177,1,243,0,223,1,74,2,122,2,121,2,195,0,99,2,93,0,119,0,221,0,63,2,241,1,22,2,22,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,62,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,77,0,173,1,126,2,61,2,77,2,18,2,240,0,230,0,242,0,105,0,249,0,93,1,248,0,3,2,76,2,208,0,204,1,17,2,52,2,173,0,122,2,121,2,202,3,144,0,174,1,2,0,168,1,228,0,124,1,45,2,94,2,94,2,190,0,153,0,159,0,158,0,2,2,51,0,120,2,119,2,118,2,71,0,24,2,176,1,186,3,196,0,98,2,186,3,102,2,45,0,18,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,5,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,96,2,96,2,96,2,30,2,168,1,146,1,129,1,241,0,250,1,195,1,64,1,211,0,31,2,164,0,180,1,130,1,37,1,195,1,75,2,108,0,240,1,111,0,78,1,135,1,79,2,168,1,102,2,27,0,196,1,197,1,94,2,94,2,72,0,1,1,70,0,3,1,196,1,83,1,86,1,52,2,70,2,68,0,159,1,213,1,72,1,71,1,62,0,102,2,45,0,110,0,137,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,152,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,110,0,243,1,8,2,26,2,146,1,133,1,168,1,110,0,54,2,244,1,81,2,81,2,198,1,82,0,79,0,165,0,168,1,79,2,128,1,52,2,84,1,103,2,188,0,162,0,168,1,94,1,104,2,168,1,102,2,44,0,94,2,94,2,189,1,70,2,44,1,178,1,151,0,19,0,102,2,9,0,56,2,68,2,92,1,103,2,213,1,55,2,102,2,26,0,104,2,102,2,45,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,155,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,67,2,110,0,66,2,9,2,26,1,177,1,142,1,144,1,255,0,230,1,82,0,79,0,165,0,231,1,164,0,82,0,79,0,165,0,232,1,232,1,108,1,131,1,168,1,32,2,32,2,253,1,94,1,106,1,155,0,191,0,94,2,94,2,47,2,130,2,128,2,77,1,82,0,79,0,165,0,49,1,52,2,251,1,56,1,101,1,102,2,45,0,73,1,84,2,83,2,194,0,81,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,20,0,67,1,150,0,7,1,211,0,31,2,165,1,84,2,83,2,102,2,22,0,168,1,193,0,168,1,28,1,168,1,135,1,168,1,253,1,168,1,65,2,168,1,186,0,79,1,168,1,47,2,168,1,57,1,120,0,34,2,94,2,94,2,67,0,102,2,47,0,102,2,50,0,102,2,48,0,102,2,100,0,102,2,99,0,102,2,101,0,64,2,102,2,102,0,102,2,109,0,70,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,168,1,55,1,168,1,73,2,54,0,168,1,4,2,5,2,78,2,102,2,112,0,168,1,72,2,168,1,60,2,168,1,195,0,168,1,59,2,168,1,67,0,168,1,102,2,94,0,102,2,98,0,168,1,102,2,97,0,8,1,94,2,94,2,195,0,102,2,46,0,102,2,96,0,102,2,30,0,102,2,49,0,102,2,115,0,102,2,114,0,162,1,229,0,132,1,102,2,113,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,119,0,168,1,78,2,110,0,116,1,94,2,94,2,195,0,53,0,250,0,102,2,29,0,195,0,216,1,182,1,217,2,190,0,46,1,242,1,14,0,11,2,129,2,2,0,102,2,43,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,101,2,196,3,196,3,98,1,94,2,94,2,164,1,56,1,64,0,102,2,42,0,135,1,99,1,27,1,181,1,45,1,255,0,158,1,154,1,239,1,236,1,102,2,28,0,215,1,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,110,0,110,0,110,0,110,0,94,2,94,2,110,0,254,0,13,0,102,2,41,0,20,2,19,2,27,1,225,1,19,2,201,1,28,1,119,0,49,2,100,1,102,2,40,0,28,1,50,1,89,0,78,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,110,0,168,1,85,1,220,0,43,2,94,2,94,2,95,1,43,2,62,1,102,2,95,0,157,1,255,0,83,0,74,1,28,1,28,1,255,0,128,2,77,1,100,1,255,0,102,2,39,0,50,1,100,1,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,61,1,60,1,141,0,209,1,94,2,94,2,219,0,107,2,207,1,102,2,10,0,161,1,206,1,255,0,189,0,254,1,41,2,95,1,207,0,107,1,161,0,102,2,38,0,59,1,218,0,255,0,255,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,76,0,163,1,255,0,3,0,110,3,205,1,168,1,247,0,75,1,75,1,102,2,37,0,217,0,76,0,163,1,134,1,3,0,216,0,215,0,166,1,4,0,75,1,75,1,168,1,35,2,12,0,168,1,33,2,102,2,36,0,168,1,29,2,166,1,168,1,28,2,168,1,214,0,168,1,152,1,168,1,27,2,147,1,93,2,93,2,237,0,102,2,25,0,119,0,102,2,24,0,76,2,152,1,102,2,45,0,118,0,102,2,35,0,102,2,34,0,102,2,33,0,102,2,23,0,76,2,60,0,223,0,91,2,90,2,1,2,122,1,73,0,74,0,140,0,139,0,168,1,110,0,9,1,75,0,170,1,169,1,59,0,168,1,98,2,73,0,74,0,37,2,146,1,148,1,168,1,117,1,75,0,170,1,169,1,92,2,138,0,98,2,102,2,11,0,136,1,76,0,163,1,181,0,3,0,102,2,32,0,15,1,113,1,75,1,75,1,237,1,102,2,31,0,149,0,96,2,96,2,96,2,95,2,15,0,166,1,109,1,102,2,8,0,137,0,233,1,136,0,190,0,96,2,96,2,96,2,95,2,15,0,229,1,176,0,135,0,7,0,252,0,221,1,152,1,174,0,133,0,175,0,218,1,57,0,56,0,132,0,130,0,119,0,76,0,163,1,76,2,3,0,212,1,245,0,208,1,171,0,75,1,75,1,125,0,123,0,200,1,191,1,122,0,190,1,104,0,80,1,231,0,166,1,166,0,154,0,73,0,74,0,76,1,116,0,175,1,121,0,53,1,75,0,170,1,169,1,222,0,106,0,98,2,52,1,125,2,204,0,152,1,117,2,115,2,116,2,6,0,200,0,172,1,171,1,34,1,203,0,110,2,201,0,76,2,62,0,63,0,33,1,66,0,163,1,143,1,3,0,145,1,32,1,92,0,143,0,75,1,75,1,31,1,96,2,96,2,96,2,95,2,15,0,73,0,74,0,227,0,166,1,69,1,69,0,160,1,75,0,170,1,169,1,100,2,156,1,98,2,192,0,61,0,57,2,209,0,140,1,226,0,22,1,225,0,127,1,152,1,15,2,46,2,20,1,21,2,40,2,16,2,65,1,11,2,114,1,252,1,180,0,76,2,238,1,179,0,110,1,117,0,253,0,13,1,10,2,247,1,96,2,96,2,96,2,95,2,15,0,39,2,246,1,58,0,18,1,12,2,178,0,73,0,74,0,48,1,245,1,112,1,47,1,206,0,75,0,170,1,169,1,235,1,104,1,98,2,213,0,177,0,227,1,131,0,89,1,42,1,41,1,40,1,202,0,38,1,224,1,234,1,210,1,134,0,172,0,129,0,188,1,90,1,214,1,128,0,58,1,203,1,103,0,127,0,126,0,148,0,124,0,167,0,187,1,235,0,96,2,96,2,96,2,95,2,15,0,186,1,183,1,111,2,234,0,43,1,145,0,71,2,35,1,121,1,69,2,160,0,119,0,156,0,14,1,124,2,203,3,169,0,23,1,114,2,8,2,113,2,217,1,112,2,170,0,109,2,106,2,119,0,168,0,55,0,153,1,167,1,25,2,97,2,30,1,29,1,149,1,58,2,48,2,44,2,5,0,52,0,202,1,42,2,147,0,11,1,7,2,248,1,6,2,150,1,6,1,239,0,4,1,0,2,87,1,255,1,2,1,97,1,53,2,0,1,224,0,251,0,103,1,21,1,19,1,220,1,219,1,246,0,96,1,244,0,211,1,199,1,236,0,233,0,232,0,51,1,185,1,25,1,205,0,163,0,141,1,24,1,23,2,249,1,74,1,105,2,203,3,203,3,203,3,203,3,111,1,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,82,1,0,0,0,0,0,0,100,117,112,108,105,99,97,116,101,32,87,73,84,72,32,116,97,98,108,101,32,110,97,109,101,58,32,37,115,0,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,0,0,97,117,116,104,111,114,105,122,101,114,32,109,97,108,102,117,110,99,116,105,111,110,0,0,67,82,69,65,84,69,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,37,84,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,116,97,98,108,101,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,48,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,116,97,98,108,101,39,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,116,111,32,97,32,118,105,101,119,0,0,0,115,113,108,105,116,101,95,97,108,116,101,114,116,97,98,95,37,115,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,97,32,116,101,109,112,111,114,97,114,121,32,100,97,116,97,98,97,115,101,32,102,105,108,101,32,102,111,114,32,115,116,111,114,105,110,103,32,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,115,0,0,0,115,113,108,105,116,101,95,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,108,117,109,110,0,67,97,110,110,111,116,32,97,100,100,32,97,32,85,78,73,81,85,69,32,99,111,108,117,109,110,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,82,69,70,69,82,69,78,67,69,83,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,78,85,76,76,32,100,101,102,97,117,108,116,32,118,97,108,117,101,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,78,79,84,32,78,85,76,76,32,99,111,108,117,109,110,32,119,105,116,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,32,78,85,76,76,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,99,111,110,115,116,97,110,116,32,100,101,102,97,117,108,116,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,117,98,115,116,114,40,115,113,108,44,49,44,37,100,41,32,124,124,32,39,44,32,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,37,100,41,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,32,61,32,37,81,0,0,0,0,116,98,108,95,110,97,109,101,61,37,81,0,0,0,0,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,40,37,115,41,0,110,97,109,101,61,37,81,0,37,115,32,79,82,32,110,97,109,101,61,37,81,0,0,0,45,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,111,116,104,101,114,32,116,97,98,108,101,32,111,114,32,105,110,100,101,120,32,119,105,116,104,32,116,104,105,115,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,118,105,101,119,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,40,115,113,108,44,32,37,81,44,32,37,81,41,32,87,72,69,82,69,32,37,115,59,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,115,113,108,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,32,61,32,39,116,114,105,103,103,101,114,39,32,84,72,69,78,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,69,76,83,69,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,40,115,113,108,44,32,37,81,41,32,69,78,68,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,44,32,110,97,109,101,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,61,39,116,97,98,108,101,39,32,84,72,69,78,32,37,81,32,87,72,69,78,32,110,97,109,101,32,76,73,75,69,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,37,37,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,32,84,72,69,78,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,110,97,109,101,44,37,100,43,49,56,41,32,69,76,83,69,32,110,97,109,101,32,69,78,68,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,67,79,76,76,65,84,69,32,110,111,99,97,115,101,32,65,78,68,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,79,82,32,116,121,112,101,61,39,105,110,100,101,120,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,41,59,0,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,0,85,80,68,65,84,69,32,34,37,119,34,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,115,101,116,32,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,110,97,109,101,32,61,32,37,81,0,0,0,0,0,0,0,85,80,68,65,84,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,37,115,59,0,0,0,0,0,118,105,101,119,32,37,115,32,105,115,32,99,105,114,99,117,108,97,114,108,121,32,100,101,102,105,110,101,100,0,0,0,110,111,32,115,117,99,104,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,58,32,37,115,0,0,3,2,1,0,0,0,0,0,37,115,58,37,100,0,0,0,97,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,72,65,86,73,78,71,0,0,0,0,0,79,82,68,69,82,0,0,0,71,82,79,85,80,0,0,0,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,116,104,101,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,0,37,114,32,79,82,68,69,82,32,66,89,32,116,101,114,109,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,97,110,121,32,99,111,108,117,109,110,32,105,110,32,116,104,101,32,114,101,115,117,108,116,32,115,101,116,0,0,0,0,37,114,32,37,115,32,66,89,32,116,101,114,109,32,111,117,116,32,111,102,32,114,97,110,103,101,32,45,32,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,49,32,97,110,100,32,37,100,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,37,115,32,66,89,32,99,108,97,117,115,101,0,0,69,120,112,114,101,115,115,105,111,110,32,116,114,101,101,32,105,115,32,116,111,111,32,108,97,114,103,101,32,40,109,97,120,105,109,117,109,32,100,101,112,116,104,32,37,100,41,0,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,32,116,111,32,108,105,107,101,108,105,104,111,111,100,40,41,32,109,117,115,116,32,98,101,32,97,32,99,111,110,115,116,97,110,116,32,98,101,116,119,101,101,110,32,48,46,48,32,97,110,100,32,49,46,48,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,58,32,37,115,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,0,110,111,32,115,117,99,104,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,115,117,98,113,117,101,114,105,101,115,0,0,0,0,0,0,112,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,67,72,69,67,75,32,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,112,97,114,116,105,97,108,32,105,110,100,101,120,32,87,72,69,82,69,32,99,108,97,117,115,101,115,0,0,0,0,110,101,119,0,0,0,0,0,111,108,100,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,108,105,97,115,101,100,32,97,103,103,114,101,103,97,116,101,32,37,115,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,0,0,97,109,98,105,103,117,111,117,115,32,99,111,108,117,109,110,32,110,97,109,101,0,0,0,37,115,58,32,37,115,46,37,115,46,37,115,0,0,0,0,37,115,58,32,37,115,46,37,115,0,0,0,0,0,0,0,37,115,58,32,37,115,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,0,0,0,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,115,113,108,105,116,101,95,115,113,95,37,112,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,34,37,115,34,58,32,109,97,120,32,54,53,53,51,53,0,0,42,0,0,0,0,0,0,0,37,115,46,37,115,0,0,0,37,115,46,37,115,46,37,115,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,0,110,111,32,116,97,98,108,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,114,101,115,117,108,116,32,115,101,116,0,0,97,32,78,65,84,85,82,65,76,32,106,111,105,110,32,109,97,121,32,110,111,116,32,104,97,118,101,32,97,110,32,79,78,32,111,114,32,85,83,73,78,71,32,99,108,97,117,115,101,0,0,0,0,0,0,0,99,97,110,110,111,116,32,104,97,118,101,32,98,111,116,104,32,79,78,32,97,110,100,32,85,83,73,78,71,32,99,108,97,117,115,101,115,32,105,110,32,116,104,101,32,115,97,109,101,32,106,111,105,110,0,0,99,97,110,110,111,116,32,106,111,105,110,32,117,115,105,110,103,32,99,111,108,117,109,110,32,37,115,32,45,32,99,111,108,117,109,110,32,110,111,116,32,112,114,101,115,101,110,116,32,105,110,32,98,111,116,104,32,116,97,98,108,101,115,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,115,0,0,0,0,0,0,0,109,117,108,116,105,112,108,101,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,114,101,99,117,114,115,105,118,101,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,99,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110,99,101,58,32,37,115,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,109,117,108,116,105,112,108,101,32,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,115,58,32,37,115,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,32,105,110,32,97,32,115,117,98,113,117,101,114,121,58,32,37,115,0,0,0,110,111,32,115,117,99,104,32,109,111,100,117,108,101,58,32,37,115,0,0,0,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,102,97,105,108,101,100,58,32,37,115,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,100,105,100,32,110,111,116,32,100,101,99,108,97,114,101,32,115,99,104,101,109,97,58,32,37,115,0,0,0,104,105,100,100,101,110,0,0,32,104,105,100,100,101,110,0,111,98,106,101,99,116,32,110,97,109,101,32,114,101,115,101,114,118,101,100,32,102,111,114,32,105,110,116,101,114,110,97,108,32,117,115,101,58,32,37,115,0,0,0,0,0,0,0,99,111,114,114,117,112,116,32,100,97,116,97,98,97,115,101,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,84,0,0,0,0,0,105,100,120,0,0,0,0,0,116,98,108,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,56,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,40,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,66,66,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,0,0,0,0,8,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,116,97,116,95,103,101,116,0,0,0,0,0,0,0,0,37,108,108,117,0,0,0,0,32,37,108,108,117,0,0,0,115,116,97,116,95,112,117,115,104,0,0,0,0,0,0,0,115,116,97,116,95,105,110,105,116,0,0,0,0,0,0,0,72,52,0,0,96,112,0,0,112,112,0,0,0,0,0,0,128,112,0,0,0,0,0,0,116,98,108,44,105,100,120,44,115,116,97,116,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,51,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,52,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,37,115,40,37,115,41,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,37,115,61,37,81,0,0,0,117,110,97,98,108,101,32,116,111,32,105,100,101,110,116,105,102,121,32,116,104,101,32,111,98,106,101,99,116,32,116,111,32,98,101,32,114,101,105,110,100,101,120,101,100,0,0,0,44,32,0,0,0,0,0,0,46,0,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,58,32,37,115,40],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+18712);allocate([41,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,40,41,0,0,0,0,0,0,0,0,82,65,73,83,69,40,41,32,109,97,121,32,111,110,108,121,32,98,101,32,117,115,101,100,32,119,105,116,104,105,110,32,97,32,116,114,105,103,103,101,114,45,112,114,111,103,114,97,109,0,0,0,0,0,0,0,69,88,69,67,85,84,69,32,37,115,37,115,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,0,0,0,0,67,79,82,82,69,76,65,84,69,68,32,0,0,0,0,0,76,73,83,84,0,0,0,0,83,67,65,76,65,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,120,0,0,0,0,0,0,104,101,120,32,108,105,116,101,114,97,108,32,116,111,111,32,98,105,103,58,32,37,115,0,1,0,1,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,32,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,100,101,116,97,99,104,0,0,0,110,111,32,115,117,99,104,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,99,97,110,110,111,116,32,100,101,116,97,99,104,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,68,69,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,108,111,99,107,101,100,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,216,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,97,116,116,97,99,104,0,0,0,116,111,111,32,109,97,110,121,32,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,45,32,109,97,120,32,37,100,0,0,0,0,99,97,110,110,111,116,32,65,84,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,97,108,114,101,97,100,121,32,105,110,32,117,115,101,0,0,0,100,97,116,97,98,97,115,101,32,105,115,32,97,108,114,101,97,100,121,32,97,116,116,97,99,104,101,100,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,0,110,111,32,115,117,99,104,32,116,114,105,103,103,101,114,58,32,37,83,0,0,0,0,0,108,0,246,0,97,0,1,0,47,0,1,2,78,2,247,1,97,0,1,0,47,0,0,2,78,2,247,1,95,0,0,0,9,0,254,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,116,114,105,103,103,101,114,32,109,97,121,32,110,111,116,32,104,97,118,101,32,113,117,97,108,105,102,105,101,100,32,110,97,109,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,115,32,111,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,115,0,0,0,0,0,0,0,0,116,114,105,103,103,101,114,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,32,111,110,32,115,121,115,116,101,109,32,116,97,98,108,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,37,115,32,116,114,105,103,103,101,114,32,111,110,32,118,105,101,119,58,32,37,83,0,0,0,0,66,69,70,79,82,69,0,0,65,70,84,69,82,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,73,78,83,84,69,65,68,32,79,70,32,116,114,105,103,103,101,114,32,111,110,32,116,97,98,108,101,58,32,37,83,0,0,0,37,115,32,37,84,32,99,97,110,110,111,116,32,114,101,102,101,114,101,110,99,101,32,111,98,106,101,99,116,115,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,37,115,32,99,97,110,110,111,116,32,117,115,101,32,118,97,114,105,97,98,108,101,115,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,116,114,105,103,103,101,114,39,44,37,81,44,37,81,44,48,44,39,67,82,69,65,84,69,32,84,82,73,71,71,69,82,32,37,113,39,41,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,110,97,109,101,61,39,37,113,39,0,0,0,0,45,37,84,0,0,0,0,0,114,101,115,117,108,116,0,0,16,126,0,0,0,0,0,0,8,0,0,0,0,121,0,0,1,1,0,0,0,0,0,0,32,126,0,0,2,0,0,0,0,0,16,0,48,126,0,0,3,0,0,0,0,0,0,0,128,120,0,0,4,1,0,0,0,0,0,0,64,126,0,0,2,0,0,0,16,0,0,0,80,126,0,0,5,0,0,0,0,0,0,0,104,126,0,0,2,0,0,0,8,0,0,0,128,126,0,0,6,0,0,0,0,0,0,0,144,126,0,0,7,0,0,0,0,0,0,0,160,126,0,0,2,0,0,0,128,0,0,0,176,126,0,0,0,2,0,0,15,0,0,0,192,126,0,0,9,1,0,0,0,0,0,0,208,126,0,0,10,1,0,0,0,0,0,0,232,126,0,0,2,0,0,0,0,0,0,1,0,127,0,0,2,0,0,0,0,1,0,0,40,124,0,0,11,0,0,0,0,0,0,0,24,127,0,0,12,1,0,0,0,0,0,0,48,127,0,0,13,1,0,0,0,0,0,0,72,127,0,0,2,0,0,0,0,0,8,0,88,127,0,0,0,2,0,0,0,0,0,0,104,127,0,0,2,0,0,0,32,0,0,0,128,127,0,0,2,0,0,0,4,0,0,0,144,127,0,0,2,0,0,0,0,32,0,0,176,127,0,0,14,1,0,0,0,0,0,0,200,127,0,0,15,1,0,0,0,0,0,0,216,127,0,0,16,1,0,0,0,0,0,0,232,127,0,0,15,1,0,0,1,0,0,0,232,122,0,0,17,1,0,0,0,0,0,0,216,120,0,0,18,1,0,0,0,0,0,0,232,120,0,0,19,0,0,0,0,0,0,0,248,127,0,0,2,0,0,0,0,128,0,0,200,120,0,0,21,0,0,0,0,0,0,0,16,128,0,0,22,1,0,0,0,0,0,0,40,121,0,0,23,0,0,0,0,0,0,0,32,128,0,0,22,1,0,0,0,0,0,0,144,120,0,0,24,0,0,0,0,0,0,0,48,128,0,0,2,0,0,0,0,0,0,2,64,128,0,0,17,1,0,0,0,0,0,0,80,128,0,0,2,0,0,0,0,64,0,0,104,128,0,0,2,0,0,0,0,0,4,0,128,128,0,0,2,0,0,0,0,0,2,0,160,128,0,0,0,0,0,0,1,0,0,0,160,120,0,0,25,0,0,0,0,0,0,0,176,128,0,0,2,0,0,0,64,0,0,0,200,128,0,0,26,0,0,0,0,0,0,0,232,124,0,0,27,0,0,0,0,0,0,0,216,128,0,0,28,1,0,0,0,0,0,0,128,121,0,0,29,1,0,0,0,0,0,0,224,128,0,0,30,1,0,0,0,0,0,0,56,121,0,0,31,0,0,0,0,0,0,0,72,121,0,0,32,0,0,0,0,0,0,0,248,124,0,0,33,0,0,0,0,0,0,0,240,128,0,0,0,0,0,0,6,0,0,0,200,124,0,0,34,0,0,0,0,0,0,0,0,129,0,0,35,1,0,0,0,0,0,0,16,129,0,0,2,0,0,0,0,8,1,0,0,0,0,0,4,0,0,0,51,0,1,3,137,1,8,0,25,0,2,0,90,1,2,1,137,1,8,0,25,0,1,0,156,0,0,0,35,1,1,0,0,0,0,0,99,97,99,104,101,95,115,105,122,101,0,0,0,0,0,0,112,97,103,101,95,115,105,122,101,0,0,0,0,0,0,0,115,101,99,117,114,101,95,100,101,108,101,116,101,0,0,0,110,111,114,109,97,108,0,0,101,120,99,108,117,115,105,118,101,0,0,0,0,0,0,0,108,111,99,107,105,110,103,95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108,95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108,95,115,105,122,101,95,108,105,109,105,116,0,0,0,0,0,0,97,117,116,111,95,118,97,99,117,117,109,0,0,0,0,0,4,0,1,0,51,0,1,4,45,1,0,0,24,0,2,0,25,0,1,0,52,0,7,1,109,109,97,112,95,115,105,122,101,0,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,95,100,105,114,101,99,116,111,114,121,0,0,0,0,110,111,116,32,97,32,119,114,105,116,97,98,108,101,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,0,0,0,115,121,110,99,104,114,111,110,111,117,115,0,0,0,0,0,83,97,102,101,116,121,32,108,101,118,101,108,32,109,97,121,32,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,105,110,115,105,100,101,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,99,105,100,0,0,0,0,0,110,97,109,101,0,0,0,0,116,121,112,101,0,0,0,0,110,111,116,110,117,108,108,0,100,102,108,116,95,118,97,108,117,101,0,0,0,0,0,0,112,107,0,0,0,0,0,0,116,97,98,108,101,0,0,0,119,105,100,116,104,0,0,0,104,101,105,103,104,116,0,0,115,101,113,110,111,0,0,0,100,101,115,99,0,0,0,0,99,111,108,108,0,0,0,0,107,101,121,0,0,0,0,0,115,101,113,0,0,0,0,0,117,110,105,113,117,101,0,0,111,114,105,103,105,110,0,0,112,97,114,116,105,97,108,0,99,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,88,122,0,0,96,122,0,0,248,121,0,0,0,0,0,0,102,105,108,101,0,0,0,0,105,100,0,0,0,0,0,0,102,114,111,109,0,0,0,0,116,111,0,0,0,0,0,0,111,110,95,117,112,100,97,116,101,0,0,0,0,0,0,0,111,110,95,100,101,108,101,116,101,0,0,0,0,0,0,0,109,97,116,99,104,0,0,0,78,79,78,69,0,0,0,0,112,97,114,101,110,116,0,0,102,107,105,100,0,0,0,0,138,1,0,0,97,0,3,0,35,3,1,0,0,0,0,0,105,110,116,101,103,114,105,116,121,95,99,104,101,99,107,0,42,42,42,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,32,42,42,42,10,0,78,85,76,76,32,118,97,108,117,101,32,105,110,32,37,115,46,37,115,0,0,0,0,0,114,111,119,32,0,0,0,0,32,109,105,115,115,105,110,103,32,102,114,111,109,32,105,110,100,101,120,32,0,0,0,0,110,111,110,45,117,110,105,113,117,101,32,101,110,116,114,121,32,105,110,32,105,110,100,101,120,32,0,0,0,0,0,0,119,114,111,110,103,32,35,32,111,102,32,101,110,116,114,105,101,115,32,105,110,32,105,110,100,101,120,32,0,0,0,0,111,107,0,0,0,0,0,0,216,123,0,0,1,0,0,0,224,123,0,0,1,0,0,0,232,123,0,0,2,0,0,0,248,123,0,0,3,0,0,0,8,124,0,0,2,0,0,0,16,124,0,0,3,0,0,0,24,124,0,0,0,0,0,0,32,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,84,70,56,0,0,0,0,85,84,70,45,56,0,0,0,85,84,70,45,49,54,108,101,0,0,0,0,0,0,0,0,85,84,70,45,49,54,98,101,0,0,0,0,0,0,0,0,85,84,70,49,54,108,101,0,85,84,70,49,54,98,101,0,85,84,70,45,49,54,0,0,85,84,70,49,54,0,0,0,101,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,101,110,99,111,100,105,110,103,58,32,37,115,0,0,0,0,0,0,0,0,4,0,1,0,25,0,1,0,52,0,0,1,0,0,0,0,4,0,0,0,51,0,1,0,35,1,1,0,0,0,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,0,0,102,117,108,108,0,0,0,0,114,101,115,116,97,114,116,0,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,0,98,117,115,121,0,0,0,0,108,111,103,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,101,100,0,0,0,0,119,97,108,95,97,117,116,111,99,104,101,99,107,112,111,105,110,116,0,0,0,0,0,0,116,105,109,101,111,117,116,0,115,111,102,116,95,104,101,97,112,95,108,105,109,105,116,0,116,104,114,101,97,100,115,0,37,95,0,0,0,0,0,0,102,111,114,101,105,103,110,32,107,101,121,32,109,105,115,109,97,116,99,104,32,45,32,34,37,119,34,32,114,101,102,101,114,101,110,99,105,110,103,32,34,37,119,34,0,0,0,0,83,69,84,32,78,85,76,76,0,0,0,0,0,0,0,0,83,69,84,32,68,69,70,65,85,76,84,0,0,0,0,0,67,65,83,67,65,68,69,0,82,69,83,84,82,73,67,84,0,0,0,0,0,0,0,0,78,79,32,65,67,84,73,79,78,0,0,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,115,116,111,114,97,103,101,32,99,97,110,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,110,111,110,101,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,0,0,0,0,0,240,125,0,0,248,125,0,0,0,126,0,0,152,124,0,0,64,59,0,0,8,126,0,0,100,101,108,101,116,101,0,0,112,101,114,115,105,115,116,0,111,102,102,0,0,0,0,0,119,97,108,0,0,0,0,0,97,112,112,108,105,99,97,116,105,111,110,95,105,100,0,0,97,117,116,111,109,97,116,105,99,95,105,110,100,101,120,0,98,117,115,121,95,116,105,109,101,111,117,116,0,0,0,0,99,97,99,104,101,95,115,112,105,108,108,0,0,0,0,0,99,97,115,101,95,115,101,110,115,105,116,105,118,101,95,108,105,107,101,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,95,102,117,108,108,102,115,121,110,99,0,0,0,0,99,111,108,108,97,116,105,111,110,95,108,105,115,116,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,115,0,99,111,117,110,116,95,99,104,97,110,103,101,115,0,0,0,100,97,116,97,95,118,101,114,115,105,111,110,0,0,0,0,100,97,116,97,98,97,115,101,95,108,105,115,116,0,0,0,100,101,102,97,117,108,116,95,99,97,99,104,101,95,115,105,122,101,0,0,0,0,0,0,100,101,102,101,114,95,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,0,0,101,109,112,116,121,95,114,101,115,117,108,116,95,99,97,108,108,98,97,99,107,115,0,0,102,111,114,101,105,103,110,95,107,101,121,95,99,104,101,99,107,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,95,108,105,115,116,0,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,102,114,101,101,108,105,115,116,95,99,111,117,110,116,0,0,102,117,108,108,95,99,111,108,117,109,110,95,110,97,109,101,115,0,0,0,0,0,0,0,102,117,108,108,102,115,121,110,99,0,0,0,0,0,0,0,105,103,110,111,114,101,95,99,104,101,99,107,95,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,95,118,97,99,117,117,109,0,0,0,0,0,0,105,110,100,101,120,95,105,110,102,111,0,0,0,0,0,0,105,110,100,101,120,95,108,105,115,116,0,0,0,0,0,0,105,110,100,101,120,95,120,105,110,102,111,0,0,0,0,0,108,101,103,97,99,121,95,102,105,108,101,95,102,111,114,109,97,116,0,0,0,0,0,0,109,97,120,95,112,97,103,101,95,99,111,117,110,116,0,0,112,97,103,101,95,99,111,117,110,116,0,0,0,0,0,0,113,117,101,114,121,95,111,110,108,121,0,0,0,0,0,0,113,117,105,99,107,95,99,104,101,99,107,0,0,0,0,0,114,101,97,100,95,117,110,99,111,109,109,105,116,116,101,100,0,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,95,116,114,105,103,103,101,114,115,0,0,0,0,0,0,114,101,118,101,114,115,101,95,117,110,111,114,100,101,114,101,100,95,115,101,108,101,99,116,115,0,0,0,0,0,0,0,115,99,104,101,109,97,95,118,101,114,115,105,111,110,0,0,115,104,111,114,116,95,99,111,108,117,109,110,95,110,97,109,101,115,0,0,0,0,0,0,115,104,114,105,110,107,95,109,101,109,111,114,121,0,0,0,115,116,97,116,115,0,0,0,116,97,98,108,101,95,105,110,102,111,0,0,0,0,0,0,117,115,101,114,95,118,101,114,115,105,111,110,0,0,0,0,119,97,108,95,99,104,101,99,107,112,111,105,110,116,0,0,119,114,105,116,97,98,108,101,95,115,99,104,101,109,97,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,83,0,0,0,0,0,0,0,105,110,100,101,120,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32,85,78,73,81,85,69,32,111,114,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,99,97,110,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,110,97,109,101,61,37,81,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,114,111,111,116,112,97,103,101,61,37,100,32,87,72,69,82,69,32,35,37,100,32,65,78,68,32,114,111,111,116,112,97,103,101,61,35,37,100,0,115,113,108,105,116,101,95,115,116,97,116,37,100,0,0,0,48,0,0,0,0,0,0,0,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,109,117,115,116,32,98,101,32,98,101,116,119,101,101,110,32,63,49,32,97,110,100,32,63,37,100,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,83,81,76,32,118,97,114,105,97,98,108,101,115,0,0,116,97,98,108,101,32,37,83,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,116,97,98,108,101,32,37,83,32,104,97,115,32,37,100,32,99,111,108,117,109,110,115,32,98,117,116,32,37,100,32,118,97,108,117,101,115,32,119,101,114,101,32,115,117,112,112,108,105,101,100,0,0,0,0,0,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,0,114,111,119,115,32,105,110,115,101,114,116,101,100,0,0,0,97,116,32,109,111,115,116,32,37,100,32,116,97,98,108,101,115,32,105,110,32,97,32,106,111,105,110,0,0,0,0,0,65,63,62,64,0,0,0,0,0,0,108,105,65,62,64,63,116,114,113,115,0,0,0,0,9,8,0,0,0,0,0,0,108,105,0,0,0,0,0,0,83,69,65,82,67,72,0,0,83,67,65,78,0,0,0,0,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,32,84,65,66,76,69,32,37,115,0,0,0,0,0,0,0,32,65,83,32,37,115,0,0,80,82,73,77,65,82,89,32,75,69,89,0,0,0,0,0,65,85,84,79,77,65,84,73,67,32,80,65,82,84,73,65,76,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,0,0,0,0,0,0,0,65,85,84,79,77,65,84,73,67,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,0,0,0,0,0,0,0,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,0,32,85,83,73,78,71,32,0,40,114,111,119,105,100,61,63,41,0,0,0,0,0,0,0,40,114,111,119,105,100,62,63,32,65,78,68,32,114,111,119,105,100,60,63,41,0,0,0,40,114,111,119,105,100,62,63,41,0,0,0,0,0,0,0,40,114,111,119,105,100,60,63,41,0,0,0,0,0,0,0,32,85,83,73,78,71,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,32,0,0,0,0,0,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,73,78,68,69,88,32,37,100,58,37,115,0,0,0,0,0,0,32,40,0,0,0,0,0,0,61,0,0,0,0,0,0,0,32,65,78,68,32,0,0,0,65,78,89,40,37,115,41,0,62,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,97,117,116,111,109,97,116,105,99,32,105,110,100,101,120,32,111,110,32,37,115,40,37,115,41,0,0,0,0,0,0,0,97,117,116,111,45,105,110,100,101,120,0,0,0,0,0,0,110,111,32,113,117,101,114,121,32,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,10,10,9,9,8,8,7,7,7,6,6,6,5,5,5,4,4,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,37,115,46,120,66,101,115,116,73,110,100,101,120,40,41,32,109,97,108,102,117,110,99,116,105,111,110,0,0,0,0,0,116,97,98,108,101,32,37,115,58,32,120,66,101,115,116,73,110,100,101,120,32,114,101,116,117,114,110,101,100,32,97,110,32,105,110,118,97,108,105,100,32,112,108,97,110,0,0,0,83,81,0,0,0,0,0,0,45,45,32,84,82,73,71,71,69,82,32,37,115,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,2,0,1,0,1,1,4,36,1,4,5,16,0,2,2,2,2,0,2,2,0,0,32,0,0,4,5,4,4,0,0,1,1,5,5,0,0,0,2,2,16,0,0,0,0,0,0,0,0,0,17,17,17,17,8,17,17,17,17,76,76,2,2,0,5,5,21,21,21,21,21,21,0,76,76,76,76,76,76,76,76,76,76,0,36,2,0,0,0,0,0,2,0,1,1,1,1,8,8,0,2,1,1,1,1,2,0,0,2,2,0,0,0,0,0,0,12,69,21,1,2,2,0,1,8,5,5,5,5,5,0,1,0,0,0,0,0,0,0,1,0,2,2,1,0,0,0,0,16,16,2,16,0,0,0,0,0,1,2,3,4,6,8,8,0,0,0,0,0,0,0,0,176,107,0,0,3,0,0,0,168,107,0,0,3,0,0,0,111,105,100,0,0,0,0,0,70,79,82,69,73,71,78,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,37,115,46,114,111,119,105,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,109,111,100,105,102,105,101,100,0,0,0,0,99,97,110,110,111,116,32,109,111,100,105,102,121,32,37,115,32,98,101,99,97,117,115,101,32,105,116,32,105,115,32,97,32,118,105,101,119,0,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,37,115,0,0,0,0,0,0,114,111,119,115,32,117,112,100,97,116,101,100,0,0,0,0,95,114,111,119,105,100,95,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,37,115,0,0,114,111,119,115,32,100,101,108,101,116,101,100,0,0,0,0,110,97,116,117,114,97,108,101,102,116,111,117,116,101,114,105,103,104,116,102,117,108,108,105,110,110,101,114,99,114,111,115,115,0,0,0,0,0,0,0,0,7,4,6,4,40,10,5,32,14,5,48,19,4,56,23,5,1,28,5,3,0,0,0,117,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,106,111,105,110,32,116,121,112,101,58,32,37,84,32,37,84,37,115,37,84,0,0,0,0,0,82,73,71,72,84,32,97,110,100,32,70,85,76,76,32,79,85,84,69,82,32,74,79,73,78,115,32,97,114,101,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,0,0,97,32,74,79,73,78,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,37,115,0,0,0,0,0,79,78,0,0,0,0,0,0,85,83,73,78,71,0,0,0,68,73,83,84,73,78,67,84,0,0,0,0,0,0,0,0,71,82,79,85,80,32,66,89,0,0,0,0,0,0,0,0,82,73,71,72,84,32,80,65,82,84,32,79,70,32,79,82,68,69,82,32,66,89,0,0,79,82,68,69,82,32,66,89,0,0,0,0,0,0,0,0,99,111,108,117,109,110,37,100,0,0,0,0,0,0,0,0,83,67,65,78,32,84,65,66,76,69,32,37,115,37,115,37,115,0,0,0,0,0,0,0,32,85,83,73,78,71,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,0,0,68,73,83,84,73,78,67,84,32,97,103,103,114,101,103,97,116,101,115,32,109,117,115,116,32,104,97,118,101,32,101,120,97,99,116,108,121,32,111,110,101,32,97,114,103,117,109,101,110,116,0,0,0,0,0,0,85,83,69,32,84,69,77,80,32,66,45,84,82,69,69,32,70,79,82,32,37,115,0,0,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,76,73,77,73,84,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,0,0,0,67,79,77,80,79,85,78,68,32,83,85,66,81,85,69,82,73,69,83,32,37,100,32,65,78,68,32,37,100,32,37,115,40,37,115,41,0,0,0,0,85,83,73,78,71,32,84,69,77,80,32,66,45,84,82,69,69,32,0,0,0,0,0,0,97,108,108,32,86,65,76,85,69,83,32,109,117,115,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,116,101,114,109,115,0,0,0,83,69,76,69,67,84,115,32,116,111,32,116,104,101,32,108,101,102,116,32,97,110,100,32,114,105,103,104,116,32,111,102,32,37,115,32,100,111,32,110,111,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,117,108,116,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,85,78,73,79,78,32,65,76,76,0,0,0,0,0,0,0,73,78,84,69,82,83,69,67,84,0,0,0,0,0,0,0,69,88,67,69,80,84,0,0,85,78,73,79,78,0,0,0,111,110,108,121,32,97,32,115,105,110,103,108,101,32,114,101,115,117,108,116,32,97,108,108,111,119,101,100,32,102,111,114,32,97,32,83,69,76,69,67,84,32,116,104,97,116,32,105,115,32,112,97,114,116,32,111,102,32,97,110,32,101,120,112,114,101,115,115,105,111,110,0,112,97,114,97,109,101,116,101,114,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,118,105,101,119,115,0,0,0,0,0,118,105,101,119,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,117,115,101,32,68,82,79,80,32,84,65,66,76,69,32,116,111,32,100,101,108,101,116,101,32,116,97,98,108,101,32,37,115,0,0,0,0,0,0,0,117,115,101,32,68,82,79,80,32,86,73,69,87,32,116,111,32,100,101,108,101,116,101,32,118,105,101,119,32,37,115,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,87,72,69,82,69,32,110,97,109,101,61,37,81,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,97,110,100,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,102,111,114,101,105,103,110,32,107,101,121,32,111,110,32,37,115,32,115,104,111,117,108,100,32,114,101,102,101,114,101,110,99,101,32,111,110,108,121,32,111,110,101,32,99,111,108,117,109,110,32,111,102,32,116,97,98,108,101,32,37,84,0,0,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,116,104,101,32,114,101,102,101,114,101,110,99,101,100,32,116,97,98,108,101,0,0,0,117,110,107,110,111,119,110,32,99,111,108,117,109,110,32,34,37,115,34,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,101,102,105,110,105,116,105,111,110,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32,84,69,77,80,32,105,110,100,101,120,32,111,110,32,110,111,110,45,84,69,77,80,32,116,97,98,108,101,32,34,37,115,34,0,0,0,0,0,0,0,97,108,116,101,114,116,97,98,95,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,118,105,101,119,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,32,116,97,98,108,101,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,0,105,110,100,101,120,32,37,115,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,37,115,95,37,100,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,99,111,110,102,108,105,99,116,105,110,103,32,79,78,32,67,79,78,70,76,73,67,84,32,99,108,97,117,115,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,0,67,82,69,65,84,69,37,115,32,73,78,68,69,88,32,37,46,42,115,0,0,0,0,0,32,85,78,73,81,85,69,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,105,110,100,101,120,39,44,37,81,44,37,81,44,35,37,100,44,37,81,41,59,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,116,97,98,108,101,32,34,37,115,34,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,112,114,105,109,97,114,121,32,107,101,121,0,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,105,115,32,111,110,108,121,32,97,108,108,111,119,101,100,32,111,110,32,97,110,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,0,100,101,102,97,117,108,116,32,118,97,108,117,101,32,111,102,32,99,111,108,117,109,110,32,91,37,115,93,32,105,115,32,110,111,116,32,99,111,110,115,116,97,110,116,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,111,110,32,37,115,0,0,100,117,112,108,105,99,97,116,101,32,99,111,108,117,109,110,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,87,73,84,72,79,85,84,32,82,79,87,73,68,32,116,97,98,108,101,115,0,0,0,0,0,0,0,80,82,73,77,65,82,89,32,75,69,89,32,109,105,115,115,105,110,103,32,111,110,32,116,97,98,108,101,32,37,115,0,84,65,66,76,69,0,0,0,86,73,69,87,0,0,0,0,67,82,69,65,84,69,32,37,115,32,37,46,42,115,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,37,115,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,35,37,100,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,40,110,97,109,101,44,115,101,113,41,0,0,0,0,0,0,0,116,98,108,95,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,0,0,0,0,0,0,10,32,32,0,0,0,0,0,44,10,32,32,0,0,0,0,10,41,0,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,0,0,0,120,40,0,0,80,144,0,0,88,144,0,0,96,144,0,0,104,144,0,0,0,0,0,0,32,84,69,88,84,0,0,0,32,78,85,77,0,0,0,0,32,73,78,84,0,0,0,0,32,82,69,65,76,0,0,0,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,117,110,113,117,97,108,105,102,105,101,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,32,105,110,100,101,120,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,240,144,0,0,248,144,0,0,0,145,0,0,0,0,0,0,66,69,71,73,78,0,0,0,82,69,76,69,65,83,69,0,82,79,76,76,66,65,67,75,0,0,0,0,0,0,0,0,67,79,77,77,73,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,97,114,115,101,114,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,0,224,3,33,4,75,5,132,4,180,4,180,4,1,0,6,1,237,255,135,0,135,0,8,3,180,4,180,4,180,4,180,4,69,0,69,0,53,0,208,0,27,1,243,2,58,0,213,2,136,2,59,2,238,1,161,1,84,1,7,1,212,0,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,110,3,59,3,161,3,212,3,212,3,46,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,234,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,185,255,209,255,209,255,209,255,209,255,209,255,0,0,29,0,244,255,27,1,27,1,139,0,91,0,136,1,136,1,126,3,160,2,214,2,103,5,170,255,170,255,170,255,88,0,62,1,62,1,99,0,125,1,236,255,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,112,2,108,3,214,2,160,2,60,5,60,5,60,5,60,5,60,5,60,5,170,255,170,255,170,255,49,1,136,0,136,0,142,0,167,0,226,0,154,0,137,0,152,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,80,1,80,1,80,1,27,1,27,1,96,1,27,1,27,1,27,1,27,1,27,1,228,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,245,1,57,2,84,2,84,2,84,2,251,1,241,1,185,1,135,1,97,1,156,0,156,0,89,3,97,1,89,3,223,2,45,3,127,2,203,2,156,0,76,1,203,2,203,2,240,1,163,1,134,2,77,5,160,4,160,4,55,5,55,5,160,4,61,5,236,4,120,4,66,5,66,5,66,5,66,5,160,4,26,5,120,4,61,5,236,4,236,4,120,4,160,4,26,5,182,4,4,5,160,4,160,4,26,5,160,4,26,5,160,4,26,5,238,4,183,4,183,4,183,4,250,4,238,4,183,4,193,4,183,4,250,4,183,4,183,4,161,4,176,4,161,4,176,4,161,4,176,4,160,4,160,4,137,4,238,4,178,4,178,4,238,4,130,4,131,4,123,4,128,4,120,4,217,4,215,4,226,4,226,4,230,4,230,4,230,4,230,4,170,255,170,255,170,255,170,255,170,255,170,255,44,4,48,1,14,2,249,0,152,1,173,255,178,1,44,3,27,0,43,3,39,3,34,3,239,2,77,2,139,2,163,0,131,0,162,2,110,1,194,1,43,1,148,0,23,0,102,0,229,0,235,255,221,4,220,4,198,4,75,4,204,4,148,4,199,4,191,4,189,4,91,4,82,4,99,4,86,4,185,4,81,4,188,4,202,4,74,4,65,4,116,4,115,4,80,4,165,4,154,4,70,4,187,4,181,4,163,4,77,4,47,4,129,4,151,4,122,4,114,4,127,4,67,4,140,4,141,4,139,4,45,4,48,4,124,4,88,4,110,4,103,4,105,4,102,4,68,4,90,4,94,4,64,4,66,4,69,4,63,4,60,4,219,3,55,4,53,4,50,4,41,4,156,3,253,3,246,3,236,3,238,3,51,3,227,2,128,3,87,3,36,3,227,2,228,2,224,2,178,2,142,2,153,2,106,2,70,2,56,2,16,2,42,2,123,1,20,2,223,1,199,1,123,1,176,1,115,1,85,1,28,0,82,1,116,0,245,255,199,255,171,255,7,0,248,255,3,0,0,0,0,0,135,2,196,3,196,3,196,3,110,3,110,3,201,3,196,3,6,3,34,3,34,3,170,3,201,3,201,3,201,3,108,3,201,3,201,3,201,3,196,3,201,3,10,3,40,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,169,3,171,3,48,3,47,3,150,3,21,3,45,3,38,3,42,3,111,3,104,3,105,3,103,3,107,3,112,3,201,3,41,3,73,3,88,3,72,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,82,3,87,3,94,3,86,3,83,3,75,3,74,3,76,3,77,3,201,3,201,3,161,2,227,2,201,3,201,3,78,3,201,3,173,2,79,3,91,3,90,3,89,3,168,2,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,135,2,196,3,201,3,201,3,196,3,196,3,196,3,196,3,196,3,196,3,188,3,10,3,0,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,176,3,174,3,201,3,123,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,141,2,201,3,143,3,6,3,6,3,6,3,8,3,242,2,254,2,143,2,44,3,23,3,23,3,155,3,44,3,155,3,198,2,221,2,195,2,34,3,23,3,106,3,34,3,34,3,7,3,254,2,201,3,181,3,14,3,14,3,173,3,173,3,14,3,53,3,231,2,44,3,238,2,238,2,238,2,238,2,14,3,158,2,44,3,53,3,231,2,231,2,44,3,14,3,158,2,149,3,147,3,14,3,14,3,158,2,14,3,158,2,14,3,158,2,116,3,229,2,229,2,229,2,213,2,116,3,229,2,198,2,229,2,213,2,229,2,229,2,27,3,22,3,27,3,22,3,27,3,22,3,14,3,14,3,201,3,116,3,120,3,120,3,116,3,39,3,28,3,37,3,35,3,44,3,164,2,216,2,151,2,151,2,140,2,140,2,140,2,140,2,193,3,193,3,188,3,200,2,200,2,183,2,201,3,201,3,201,3,201,3,201,3,201,3,175,2,201,3,125,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,60,3,201,3,136,2,183,3,201,3,201,3,180,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,153,3,201,3,201,3,201,3,201,3,201,3,201,3,146,3,145,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,245,2,201,3,201,3,201,3,249,2,201,3,201,3,201,3,201,3,201,3,201,3,36,3,201,3,29,3,201,3,109,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,198,3,201,3,201,3,201,3,197,3,201,3,201,3,201,3,201,3,201,3,62,3,201,3,61,3,65,3,201,3,149,2,201,3,132,2,137,2,192,3,195,3,194,3,191,3,190,3,189,3,184,3,182,3,179,3,178,3,177,3,175,3,172,3,168,3,129,3,127,3,134,3,133,3,132,3,131,3,130,3,128,3,126,3,124,3,50,3,49,3,46,3,43,3,241,2,167,3,122,3,240,2,237,2,236,2,157,2,185,3,152,3,161,3,160,3,159,3,54,3,158,3,157,3,156,3,154,3,151,3,138,3,52,3,51,3,232,2,114,3,113,3,160,2,142,3,141,3,140,3,144,3,148,3,139,3,16,3,239,2,159,2,156,2,163,2,167,2,219,2,220,2,228,2,226,2,225,2,224,2,223,2,222,2,218,2,169,2,174,2,212,2,197,2,196,2,205,2,204,2,210,2,209,2,208,2,207,2,206,2,203,2,202,2,201,2,194,2,193,2,199,2,192,2,215,2,214,2,211,2,191,2,235,2,234,2,233,2,230,2,190,2,189,2,188,2,65,3,187,2,186,2,70,3,69,3,98,3,58,3,243,2,247,2,246,2,250,2,251,2,3,3,2,3,1,3,12,3,13,3,25,3,24,3,56,3,55,3,26,3,11,3,5,3,4,3,20,3,19,3,18,3,17,3,9,3,255,2,31,3,30,3,100,3,15,3,99,3,97,3,166,3,165,3,164,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+28952);allocate([163,3,162,3,102,3,199,3,200,3,119,3,121,3,118,3,33,3,32,3,117,3,101,3,71,3,68,3,178,2,179,2,137,3,136,3,135,3,181,2,180,2,177,2,176,2,95,3,92,3,84,3,96,3,93,3,85,3,81,3,80,3,66,3,64,3,63,3,59,3,67,3,248,2,244,2,57,3,253,2,252,2,185,2,184,2,182,2,166,2,165,2,162,2,155,2,153,2,152,2,154,2,150,2,148,2,147,2,146,2,145,2,144,2,172,2,171,2,170,2,142,2,139,2,138,2,134,2,133,2,131,2,0,0,0,0,19,22,22,23,1,24,26,15,27,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,108,109,110,27,28,23,50,51,80,81,82,83,122,85,86,87,88,89,90,91,92,93,94,95,22,70,23,71,72,73,74,75,76,77,78,79,80,81,82,83,122,85,86,87,88,89,90,91,92,93,94,95,19,97,91,92,93,94,95,26,85,86,87,88,89,90,91,92,93,94,95,27,28,97,98,99,122,211,102,103,104,79,19,50,51,19,122,59,55,113,224,225,226,89,90,91,92,93,94,95,23,27,28,26,71,72,73,74,75,76,77,78,79,80,81,82,83,51,85,86,87,88,89,90,91,92,93,94,95,19,132,133,58,89,90,21,108,109,110,27,28,97,98,33,100,7,8,119,120,22,19,107,42,109,27,28,27,28,95,28,50,51,99,100,101,102,103,104,105,27,28,97,98,107,152,112,132,133,112,65,69,71,72,73,74,75,76,77,78,79,80,81,82,83,11,85,86,87,88,89,90,91,92,93,94,95,19,101,97,97,98,24,101,122,157,12,99,103,112,102,103,104,152,22,97,98,97,98,27,28,113,27,29,91,164,165,124,50,51,97,98,219,59,132,133,134,22,23,45,66,47,212,213,124,140,132,133,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,164,165,27,28,230,50,51,233,108,109,110,70,16,59,23,97,98,26,97,22,66,185,12,187,27,28,71,72,73,74,75,76,77,78,79,80,81,82,83,29,85,86,87,88,89,90,91,92,93,94,95,19,22,148,149,45,23,47,62,154,64,156,108,109,110,37,69,23,163,59,26,26,97,98,144,145,146,147,152,200,52,23,50,51,26,22,89,90,60,210,7,8,9,138,97,22,23,26,101,26,174,175,197,71,72,73,74,75,76,77,78,79,80,81,82,83,16,85,86,87,88,89,90,91,92,93,94,95,19,132,133,134,23,152,208,209,140,152,152,111,195,196,98,70,163,160,152,23,22,164,165,246,207,27,152,174,175,171,172,50,51,137,62,139,64,171,172,222,124,27,138,24,163,89,90,130,174,175,197,163,71,72,73,74,75,76,77,78,79,80,81,82,83,22,85,86,87,88,89,90,91,92,93,94,95,19,197,181,182,23,208,209,152,197,26,189,132,133,232,224,225,226,152,97,91,26,232,116,212,213,152,222,121,152,174,175,50,51,243,97,22,23,22,234,174,175,177,23,239,116,163,177,174,175,121,174,175,71,72,73,74,75,76,77,78,79,80,81,82,83,24,85,86,87,88,89,90,91,92,93,94,95,19,23,197,11,23,227,70,208,220,152,31,224,225,226,35,98,224,225,226,108,109,110,115,152,117,118,27,222,49,123,24,50,51,27,0,1,2,224,225,226,166,124,168,169,239,174,175,170,171,172,22,194,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,22,208,24,23,195,196,170,171,172,174,175,152,26,152,152,152,207,152,97,152,23,152,51,244,152,97,152,247,248,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,23,174,175,174,175,188,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,152,107,152,33,24,152,100,101,27,174,175,152,42,152,23,152,26,152,23,152,26,152,174,175,174,175,152,174,175,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,163,119,120,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,66,152,97,197,23,50,51,26,53,23,174,175,26,23,23,23,26,26,26,36,106,146,147,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,196,119,120,19,50,51,168,169,26,174,175,207,28,152,249,250,152,163,163,163,163,174,175,163,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,197,197,197,197,50,51,197,194,36,174,175,191,192,152,191,192,163,152,66,124,152,174,175,152,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,197,152,100,188,152,50,51,152,152,188,174,175,252,152,94,95,152,152,152,1,2,152,152,174,175,19,152,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,188,188,22,194,50,51,240,173,194,174,175,252,194,152,36,181,28,152,23,219,122,174,175,219,221,152,152,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,20,152,22,23,194,152,240,27,28,174,175,240,19,20,26,22,194,194,38,22,27,28,152,23,22,152,116,174,175,152,23,38,152,23,152,221,152,57,152,23,163,50,51,194,174,175,66,174,175,69,57,174,175,40,174,175,174,175,174,175,174,175,69,22,53,74,75,30,53,89,90,22,22,152,197,23,96,97,98,22,152,101,89,90,91,208,209,152,53,96,97,98,101,22,101,174,175,152,19,20,105,22,174,175,112,19,27,28,20,174,175,24,132,133,134,135,136,38,44,174,175,107,61,54,26,132,133,134,135,136,54,107,22,5,140,1,57,36,111,122,28,79,79,131,123,66,19,20,69,22,1,16,20,125,27,28,123,111,120,23,131,23,16,68,142,38,15,22,89,90,3,167,4,248,251,96,97,98,180,180,101,251,151,6,57,151,13,151,26,25,151,161,202,153,162,153,69,130,128,203,19,20,127,22,126,204,129,22,27,28,205,132,133,134,135,136,89,90,231,38,95,137,179,96,97,98,206,179,101,122,107,159,159,125,231,216,228,107,57,184,217,216,176,217,176,48,106,18,184,158,69,159,158,46,71,237,176,176,176,132,133,134,135,136,217,176,137,216,178,158,89,90,179,176,159,179,159,96,97,98,159,159,101,5,158,202,22,18,10,11,12,13,14,190,238,17,190,158,193,41,159,202,193,159,202,245,193,193,223,190,32,159,34,132,133,134,135,136,159,39,155,43,150,223,177,201,178,177,186,66,199,177,152,253,56,215,152,182,152,202,152,63,152,152,66,67,242,229,152,174,152,152,152,152,152,152,152,199,242,202,152,198,152,152,152,183,192,152,215,152,183,215,183,152,241,214,152,211,152,152,211,211,152,152,241,152,152,152,152,152,152,152,114,152,152,235,152,152,152,174,187,95,174,253,253,253,253,236,253,253,253,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,27,27,27,27,0,27,27,27,0,27,27,27,27,0,0,0,27,0,0,27,0,0,0,27,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,115,113,108,105,116,101,51,95,103,101,116,95,116,97,98,108,101,40,41,32,99,97,108,108,101,100,32,119,105,116,104,32,116,119,111,32,111,114,32,109,111,114,101,32,105,110,99,111,109,112,97,116,105,98,108,101,32,113,117,101,114,105,101,115,0,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,115,116,97,116,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,128,160,0,0,136,160,0,0,144,160,0,0,152,160,0,0,160,160,0,0,168,160,0,0,176,160,0,0,184,160,0,0,192,160,0,0,208,160,0,0,136,122,0,0,216,160,0,0,97,100,100,114,0,0,0,0,111,112,99,111,100,101,0,0,112,49,0,0,0,0,0,0,112,50,0,0,0,0,0,0,112,51,0,0,0,0,0,0,112,52,0,0,0,0,0,0,112,53,0,0,0,0,0,0,99,111,109,109,101,110,116,0,115,101,108,101,99,116,105,100,0,0,0,0,0,0,0,0,111,114,100,101,114,0,0,0,100,101,116,97,105,108,0,0,115,111,0,0,0,0,0,0,115,113,108,105,116,101,51,95,101,120,116,101,110,115,105,111,110,95,105,110,105,116,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,115,104,97,114,101,100,32,108,105,98,114,97,114,121,32,91,37,115,93,0,0,0,0,0,0,108,105,98,0,0,0,0,0,95,105,110,105,116,0,0,0,110,111,32,101,110,116,114,121,32,112,111,105,110,116,32,91,37,115,93,32,105,110,32,115,104,97,114,101,100,32,108,105,98,114,97,114,121,32,91,37,115,93,0,0,0,0,0,0,101,114,114,111,114,32,100,117,114,105,110,103,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,58,32,37,115,0,117,110,111,112,101,110,101,100,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,118,105,101,119,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,97,108,117,101,32,111,102,32,116,121,112,101,32,37,115,0,0,0,0,110,111,32,115,117,99,104,32,114,111,119,105,100,58,32,37,108,108,100,0,0,0,0,0,98,105,110,100,32,111,110,32,97,32,98,117,115,121,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,58,32,91,37,115,93,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,162,0,0,96,162,0,0,104,162,0,0,112,162,0,0,78,79,84,32,78,85,76,76,0,0,0,0,0,0,0,0,85,78,73,81,85,69,0,0,67,72,69,67,75,0,0,0,70,79,82,69,73,71,78,32,75,69,89,0,0,0,0,0,97,98,111,114,116,32,97,116,32,37,100,32,105,110,32,91,37,115,93,58,32,37,115,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,58,32,37,115,0,0,0,0,0,0,0,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,1,2,0,2,2,0,0,0,0,0,0,0,0,1,2,1,1,1,2,1,2,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,110,111,32,115,117,99,104,32,115,97,118,101,112,111,105,110,116,58,32,37,115,0,0,0,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,116,114,97,110,115,97,99,116,105,111,110,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,99,97,110,110,111,116,32,115,116,97,114,116,32,97,32,116,114,97,110,115,97,99,116,105,111,110,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,114,111,108,108,98,97,99,107,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,87,72,69,82,69,32,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,116,111,111,32,109,97,110,121,32,108,101,118,101,108,115,32,111,102,32,116,114,105,103,103,101,114,32,114,101,99,117,114,115,105,111,110,0,0,0,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,37,115,32,119,97,108,32,109,111,100,101,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,105,110,116,111,0,0,0,0,111,117,116,32,111,102,0,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,0,115,116,97,116,101,109,101,110,116,32,97,98,111,114,116,115,32,97,116,32,37,100,58,32,91,37,115,93,32,37,115,0,45,45,32,0,0,0,0,0,39,37,46,42,113,39,0,0,122,101,114,111,98,108,111,98,40,37,100,41,0,0,0,0,120,39,0,0,0,0,0,0,37,48,50,120,0,0,0,0,39,0,0,0,0,0,0,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,65,84,84,65,67,72,32,39,58,109,101,109,111,114,121,58,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,65,84,84,65,67,72,32,39,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,80,82,65,71,77,65,32,118,97,99,117,117,109,95,100,98,46,115,121,110,99,104,114,111,110,111,117,115,61,79,70,70,0,0,0,0,0,0,0,0,66,69,71,73,78,59,0,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,84,65,66,76,69,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,37,39,32,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,50,49,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,37,39,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,68,69,76,69,84,69,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,59,0,0,0,0,0,0,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,83,69,76,69,67,84,32,116,121,112,101,44,32,110,97,109,101,44,32,116,98,108,95,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,32,32,32,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,87,72,69,82,69,32,116,121,112,101,61,39,118,105,101,119,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,32,32,32,32,32,79,82,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,114,111,111,116,112,97,103,101,61,48,41,0,1,1,3,0,5,0,6,0,8,0,0,0,0,0,0,0,77,97,105,110,32,102,114,101,101,108,105,115,116,58,32,0,76,105,115,116,32,111,102,32,116,114,101,101,32,114,111,111,116,115,58,32,0,0,0,0,80,97,103,101,32,37,100,32,105,115,32,110,101,118,101,114,32,117,115,101,100,0,0,0,80,111,105,110,116,101,114,32,109,97,112,32,112,97,103,101,32,37,100,32,105,115,32,114,101,102,101,114,101,110,99,101,100,0,0,0,0,0,0,0,79,117,116,115,116,97,110,100,105,110,103,32,112,97,103,101,32,99,111,117,110,116,32,103,111,101,115,32,102,114,111,109,32,37,100,32,116,111,32,37,100,32,100,117,114,105,110,103,32,116,104,105,115,32,97,110,97,108,121,115,105,115,0,0,10,0,0,0,0,0,0,0,80,97,103,101,32,37,100,58,32,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,103,101,116,32,116,104,101,32,112,97,103,101,46,32,101,114,114,111,114,32,99,111,100,101,61,37,100,0,0,0,98,116,114,101,101,73,110,105,116,80,97,103,101,40,41,32,114,101,116,117,114,110,115,32,101,114,114,111,114,32,99,111,100,101,32,37,100,0,0,0,79,110,32,116,114,101,101,32,112,97,103,101,32,37,100,32,99,101,108,108,32,37,100,58,32,0,0,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,112,114,101,118,105,111,117,115,32,119,97,115,32,37,108,108,100,41,0,0,0,0,0,67,104,105,108,100,32,112,97,103,101,32,100,101,112,116,104,32,100,105,102,102,101,114,115,0,0,0,0,0,0,0,0,79,110,32,112,97,103,101,32,37,100,32,97,116,32,114,105,103,104,116,32,99,104,105,108,100,58,32,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114,32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114,32,116,104,97,110,32,112,97,114,101,110,116,32,109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,67,111,114,114,117,112,116,105,111,110,32,100,101,116,101,99,116,101,100,32,105,110,32,99,101,108,108,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,77,117,108,116,105,112,108,101,32,117,115,101,115,32,102,111,114,32,98,121,116,101,32,37,100,32,111,102,32,112,97,103,101,32,37,100,0,0,0,0,70,114,97,103,109,101,110,116,97,116,105,111,110,32,111,102,32,37,100,32,98,121,116,101,115,32,114,101,112,111,114,116,101,100,32,97,115,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,105,110,118,97,108,105,100,32,112,97,103,101,32,110,117,109,98,101,114,32,37,100,0,0,50,110,100,32,114,101,102,101,114,101,110,99,101,32,116,111,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,112,116,114,109,97,112,32,107,101,121,61,37,100,0,0,0,0,66,97,100,32,112,116,114,32,109,97,112,32,101,110,116,114,121,32,107,101,121,61,37,100,32,101,120,112,101,99,116,101,100,61,40,37,100,44,37,100,41,32,103,111,116,61,40,37,100,44,37,100,41,0,0,0,37,100,32,111,102,32,37,100,32,112,97,103,101,115,32,109,105,115,115,105,110,103,32,102,114,111,109,32,111,118,101,114,102,108,111,119,32,108,105,115,116,32,115,116,97,114,116,105,110,103,32,97,116,32,37,100,0,0,0,0,0,0,0,0,102,97,105,108,101,100,32,116,111,32,103,101,116,32,112,97,103,101,32,37,100,0,0,0,102,114,101,101,108,105,115,116,32,108,101,97,102,32,99,111,117,110,116,32,116,111,111,32,98,105,103,32,111,110,32,112,97,103,101,32,37,100,0,0,83,81,76,105,116,101,32,102,111,114,109,97,116,32,51,0,37,115,45,109,106,88,88,88,88,88,88,57,88,88,122,0,77,74,32,100,101,108,101,116,101,58,32,37,115,0,0,0,77,74,32,99,111,108,108,105,100,101,58,32,37,115,0,0,45,109,106,37,48,54,88,57,37,48,50,88,0,0,0,0,37,46,50,120,0,0,0,0,107,40,37,100,0,0,0,0,110,105,108,0,0,0,0,0,66,0,0,0,0,0,0,0,40,37,46,50,48,115,41,0,37,115,40,37,100,41,0,0,37,100,0,0,0,0,0,0,40,98,108,111,98,41,0,0,118,116,97,98,58,37,112,0,105,110,116,97,114,114,97,121,0,0,0,0,0,0,0,0,112,114,111,103,114,97,109,0,240,52,0,0,176,177,0,0,192,177,0,0,208,177,0,0,224,177,0,0,240,177,0,0,0,178,0,0,16,178,0,0,32,178,0,0,40,178,0,0,48,178,0,0,56,178,0,0,72,178,0,0,88,178,0,0,96,178,0,0,104,178,0,0,112,178,0,0,120,178,0,0,128,178,0,0,136,178,0,0,144,178,0,0,160,178,0,0,176,178,0,0,184,178,0,0,200,178,0,0,208,178,0,0,216,178,0,0,224,178,0,0,232,178,0,0,240,178,0,0,0,179,0,0,8,179,0,0,24,179,0,0,32,179,0,0,40,179,0,0,48,179,0,0,64,179,0,0,72,179,0,0,80,179,0,0,96,179,0,0,112,179,0,0,120,179,0,0,136,179,0,0,144,179,0,0,152,179,0,0,160,179,0,0,168,179,0,0,176,179,0,0,184,179,0,0,200,179,0,0,216,179,0,0,224,179,0,0,240,179,0,0,0,180,0,0,16,180,0,0,32,180,0,0,48,180,0,0,64,180,0,0,80,180,0,0,96,180,0,0,112,180,0,0,128,180,0,0,136,180,0,0,144,180,0,0,152,180,0,0,160,180,0,0,168,180,0,0,176,180,0,0,192,180,0,0,208,180,0,0,216,180,0,0,232,180,0,0,240,180,0,0,248,180,0,0,8,181,0,0,24,181,0,0,32,181,0,0,40,181,0,0,48,181,0,0,56,181,0,0,64,181,0,0,72,181,0,0,80,181,0,0,88,181,0,0,96,181,0,0,112,181,0,0,120,181,0,0,128,181,0,0,144,181,0,0,160,181,0,0,168,181,0,0,184,181,0,0,200,181,0,0,208,181,0,0,224,181,0,0,232,181,0,0,240,181,0,0,248,181,0,0,0,182,0,0,16,182,0,0,32,182,0,0,48,182,0,0,56,182,0,0,64,182,0,0,72,182,0,0,80,182,0,0,88,182,0,0,104,182,0,0,112,182,0,0,120,182,0,0,136,182,0,0,152,182,0,0,168,182,0,0,184,182,0,0,192,182,0,0,200,182,0,0,208,182,0,0,216,182,0,0,224,182,0,0,232,182,0,0,248,182,0,0,8,183,0,0,24,183,0,0,40,183,0,0,56,183,0,0,72,183,0,0,88,183,0,0,104,183,0,0,120,183,0,0,136,183,0,0,152,183,0,0,168,183,0,0,176,183,0,0,184,183,0,0,192,183,0,0,208,183,0,0,224,183,0,0,232,183,0,0,240,183,0,0,248,183,0,0,8,184,0,0,24,184,0,0,40,184,0,0,56,184,0,0,72,184,0,0,80,184,0,0,96,184,0,0,104,184,0,0,112,184,0,0,128,184,0,0,136,184,0,0,144,184,0,0,152,184,0,0,160,184,0,0,176,184,0,0,192,184,0,0,200,184,0,0,208,184,0,0,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,83,97,118,101,112,111,105,110,116,0,0,0,0,0,0,0,65,117,116,111,67,111,109,109,105,116,0,0,0,0,0,0,84,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,83,111,114,116,101,114,78,101,120,116,0,0,0,0,0,0,80,114,101,118,73,102,79,112,101,110,0,0,0,0,0,0,78,101,120,116,73,102,79,112,101,110,0,0,0,0,0,0,80,114,101,118,0,0,0,0,78,101,120,116,0,0,0,0,65,103,103,83,116,101,112,0,67,104,101,99,107,112,111,105,110,116,0,0,0,0,0,0,74,111,117,114,110,97,108,77,111,100,101,0,0,0,0,0,86,97,99,117,117,109,0,0,86,70,105,108,116,101,114,0,86,85,112,100,97,116,101,0,71,111,116,111,0,0,0,0,71,111,115,117,98,0,0,0,82,101,116,117,114,110,0,0,78,111,116,0,0,0,0,0,73,110,105,116,67,111,114,111,117,116,105,110,101,0,0,0,69,110,100,67,111,114,111,117,116,105,110,101,0,0,0,0,89,105,101,108,100,0,0,0,72,97,108,116,73,102,78,117,108,108,0,0,0,0,0,0,72,97,108,116,0,0,0,0,73,110,116,101,103,101,114,0,73,110,116,54,52,0,0,0,83,116,114,105,110,103,0,0,78,117,108,108,0,0,0,0,83,111,102,116,78,117,108,108,0,0,0,0,0,0,0,0,66,108,111,98,0,0,0,0,86,97,114,105,97,98,108,101,0,0,0,0,0,0,0,0,77,111,118,101,0,0,0,0,67,111,112,121,0,0,0,0,83,67,111,112,121,0,0,0,82,101,115,117,108,116,82,111,119,0,0,0,0,0,0,0,67,111,108,108,83,101,113,0,65,100,100,73,109,109,0,0,77,117,115,116,66,101,73,110,116,0,0,0,0,0,0,0,82,101,97,108,65,102,102,105,110,105,116,121,0,0,0,0,67,97,115,116,0,0,0,0,80,101,114,109,117,116,97,116,105,111,110,0,0,0,0,0,67,111,109,112,97,114,101,0,74,117,109,112,0,0,0,0,79,110,99,101,0,0,0,0,73,102,0,0,0,0,0,0,73,102,78,111,116,0,0,0,67,111,108,117,109,110,0,0,65,102,102,105,110,105,116,121,0,0,0,0,0,0,0,0,77,97,107,101,82,101,99,111,114,100,0,0,0,0,0,0,67,111,117,110,116,0,0,0,82,101,97,100,67,111,111,107,105,101,0,0,0,0,0,0,83,101,116,67,111,111,107,105,101,0,0,0,0,0,0,0,82,101,111,112,101,110,73,100,120,0,0,0,0,0,0,0,79,112,101,110,82,101,97,100,0,0,0,0,0,0,0,0,79,112,101,110,87,114,105,116,101,0,0,0,0,0,0,0,79,112,101,110,65,117,116,111,105,110,100,101,120,0,0,0,79,112,101,110,69,112,104,101,109,101,114,97,108,0,0,0,83,111,114,116,101,114,79,112,101,110,0,0,0,0,0,0,83,101,113,117,101,110,99,101,84,101,115,116,0,0,0,0,79,112,101,110,80,115,101,117,100,111,0,0,0,0,0,0,67,108,111,115,101,0,0,0,83,101,101,107,76,84,0,0,83,101,101,107,76,69,0,0,83,101,101,107,71,69,0,0,83,101,101,107,71,84,0,0,83,101,101,107,0,0,0,0,78,111,67,111,110,102,108,105,99,116,0,0,0,0,0,0,78,111,116,70,111,117,110,100,0,0,0,0,0,0,0,0,70,111,117,110,100,0,0,0,78,111,116,69,120,105,115,116,115,0,0,0,0,0,0,0,79,114,0,0,0,0,0,0,65,110,100,0,0,0,0,0,83,101,113,117,101,110,99,101,0,0,0,0,0,0,0,0,78,101,119,82,111,119,105,100,0,0,0,0,0,0,0,0,73,110,115,101,114,116,0,0,73,115,78,117,108,108,0,0,78,111,116,78,117,108,108,0,78,101,0,0,0,0,0,0,69,113,0,0,0,0,0,0,71,116,0,0,0,0,0,0,76,101,0,0,0,0,0,0,76,116,0,0,0,0,0,0,71,101,0,0,0,0,0,0,73,110,115,101,114,116,73,110,116,0,0,0,0,0,0,0,66,105,116,65,110,100,0,0,66,105,116,79,114,0,0,0,83,104,105,102,116,76,101,102,116,0,0,0,0,0,0,0,83,104,105,102,116,82,105,103,104,116,0,0,0,0,0,0,65,100,100,0,0,0,0,0,83,117,98,116,114,97,99,116,0,0,0,0,0,0,0,0,77,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,68,105,118,105,100,101,0,0,82,101,109,97,105,110,100,101,114,0,0,0,0,0,0,0,67,111,110,99,97,116,0,0,68,101,108,101,116,101,0,0,66,105,116,78,111,116,0,0,83,116,114,105,110,103,56,0,82,101,115,101,116,67,111,117,110,116,0,0,0,0,0,0,83,111,114,116,101,114,67,111,109,112,97,114,101,0,0,0,83,111,114,116,101,114,68,97,116,97,0,0,0,0,0,0,82,111,119,75,101,121,0,0,82,111,119,68,97,116,97,0,82,111,119,105,100,0,0,0,78,117,108,108,82,111,119,0,76,97,115,116,0,0,0,0,83,111,114,116,101,114,83,111,114,116,0,0,0,0,0,0,83,111,114,116,0,0,0,0,82,101,119,105,110,100,0,0,83,111,114,116,101,114,73,110,115,101,114,116,0,0,0,0,73,100,120,73,110,115,101,114,116,0,0,0,0,0,0,0,73,100,120,68,101,108,101,116,101,0,0,0,0,0,0,0,73,100,120,82,111,119,105,100,0,0,0,0,0,0,0,0,73,100,120,76,69,0,0,0,73,100,120,71,84,0,0,0,73,100,120,76,84,0,0,0,73,100,120,71,69,0,0,0,68,101,115,116,114,111,121,0,67,108,101,97,114,0,0,0,82,101,115,101,116,83,111,114,116,101,114,0,0,0,0,0,67,114,101,97,116,101,73,110,100,101,120,0,0,0,0,0,67,114,101,97,116,101,84,97,98,108,101,0,0,0,0,0,80,97,114,115,101,83,99,104,101,109,97,0,0,0,0,0,76,111,97,100,65,110,97,108,121,115,105,115,0,0,0,0,68,114,111,112,84,97,98,108,101,0,0,0,0,0,0,0,68,114,111,112,73,110,100,101,120,0,0,0,0,0,0,0,68,114,111,112,84,114,105,103,103,101,114,0,0,0,0,0,73,110,116,101,103,114,105,116,121,67,107,0,0,0,0,0,82,111,119,83,101,116,65,100,100,0,0,0,0,0,0,0,82,111,119,83,101,116,82,101,97,100,0,0,0,0,0,0,82,111,119,83,101,116,84,101,115,116,0,0,0,0,0,0,80,114,111,103,114,97,109,0,80,97,114,97,109,0,0,0,82,101,97,108,0,0,0,0,70,107,67,111,117,110,116,101,114,0,0,0,0,0,0,0,70,107,73,102,90,101,114,111,0,0,0,0,0,0,0,0,77,101,109,77,97,120,0,0,73,102,80,111,115,0,0,0,73,102,78,101,103,0,0,0,73,102,78,111,116,90,101,114,111,0,0,0,0,0,0,0,68,101,99,114,74,117,109,112,90,101,114,111,0,0,0,0,74,117,109,112,90,101,114,111,73,110,99,114,0,0,0,0,65,103,103,70,105,110,97,108,0,0,0,0,0,0,0,0,73,110,99,114,86,97,99,117,117,109,0,0,0,0,0,0,69,120,112,105,114,101,0,0,84,97,98,108,101,76,111,99,107,0,0,0,0,0,0,0,86,66,101,103,105,110,0,0,86,67,114,101,97,116,101,0,86,68,101,115,116,114,111,121,0,0,0,0,0,0,0,0,86,79,112,101,110,0,0,0,86,67,111,108,117,109,110,0,86,78,101,120,116,0,0,0,86,82,101,110,97,109,101,0,80,97,103,101,99,111,117,110,116,0,0,0,0,0,0,0,77,97,120,80,103,99,110,116,0,0,0,0,0,0,0,0,73,110,105,116,0,0,0,0,78,111,111,112,0,0,0,0,69,120,112,108,97,105,110,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,78,85,76,76,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,102,105,110,97,108,105,122,101,100,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,0,0,0,64,32,32,0,0,0,0,0,100,101,115,116,105,110,97,116,105,111,110,32,100,97,116,97,98,97,115,101,32,105,115,32,105,110,32,117,115,101,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,0,0,1,0,0,0,67,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,24,187,0,0,33,0,0,0,0,0,0,0,240,186,0,0,70,0,0,0,0,0,0,0,72,59,0,0,59,0,0,0,0,0,0,0,32,187,0,0,60,0,0,0,0,0,0,0,40,187,0,0,61,0,0,0,0,0,0,0,48,187,0,0,62,0,0,0,0,0,0,0,56,187,0,0,63,0,0,0,0,0,0,0,72,187,0,0,34,0,0,0,0,0,0,0,80,187,0,0,35,0,0,0,0,0,0,0,88,187,0,0,0,0,0,0,0,0,0,0,96,187,0,0,0,0,0,0,0,0,0,0,104,187,0,0,36,0,0,0,0,0,0,0,112,187,0,0,0,0,0,0,0,0,0,0,120,187,0,0,0,0,0,0,0,0,0,0,136,187,0,0,64,0,0,0,0,0,0,0,144,187,0,0,0,0,0,0,0,0,0,0,160,187,0,0,71,0,0,0,0,0,0,0,168,187,0,0,65,0,0,0,0,0,0,0,184,187,0,0,66,0,0,0,0,0,0,0,192,187,0,0,72,0,0,0,0,0,0,0,200,187,0,0,37,0,0,0,0,0,0,0,208,187,0,0,4,0,0,0,0,0,0,0,216,187,0,0,67,0,0,0,0,0,0,0,224,187,0,0,0,0,0,0,0,0,0,0,232,187,0,0,6,0,0,0,0,0,0,0,0,0,0,0,99,108,111,115,101,0,0,0,111,115,95,117,110,105,120,46,99,58,37,100,58,32,40,37,100,41,32,37,115,40,37,115,41,32,45,32,37,115,0,0,111,112,101,110,0,0,0,0,103,101,116,99,119,100,0,0,115,116,97,116,0,0,0,0,102,115,116,97,116,0,0,0,102,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,102,99,110,116,108,0,0,0,114,101,97,100,0,0,0,0,112,114,101,97,100,0,0,0,112,114,101,97,100,54,52,0,119,114,105,116,101,0,0,0,112,119,114,105,116,101,0,0,112,119,114,105,116,101,54,52,0,0,0,0,0,0,0,0,102,99,104,109,111,100,0,0,102,97,108,108,111,99,97,116,101,0,0,0,0,0,0,0,117,110,108,105,110,107,0,0,111,112,101,110,68,105,114,101,99,116,111,114,121,0,0,0,109,107,100,105,114,0,0,0,114,109,100,105,114,0,0,0,102,99,104,111,119,110,0,0,109,109,97,112,0,0,0,0,109,117,110,109,97,112,0,0,109,114,101,109,97,112,0,0,103,101,116,112,97,103,101,115,105,122,101,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,111,112,101,110,32,34,37,115,34,32,97,115,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,37,100,0,0,0,0,0,0,47,100,101,118,47,110,117,108,108,0,0,0,0,0,0,0,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,48,49,50,51,52,53,54,55,56,57,0,0,37,115,47,101,116,105,108,113,115,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,188,0,0,184,188,0,0,200,188,0,0,0,0,0,0,0,0,0,0,47,118,97,114,47,116,109,112,0,0,0,0,0,0,0,0,47,117,115,114,47,116,109,112,0,0,0,0,0,0,0,0,47,116,109,112,0,0,0,0,83,81,76,73,84,69,95,84,77,80,68,73,82,0,0,0,84,77,80,68,73,82,0,0,102,117,108,108,95,102,115,121,110,99,0,0,0,0,0,0,3,0,0,0,73,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,100,101,118,47,117,114,97,110,100,111,109,0,0,0,0,47,37,115,0,0,0,0,0,102,115,121,110,99,0,0,0,112,115,111,119,0,0,0,0,3,0,0,0,74,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,20,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,37,115,46,108,111,99,107,0,99,97,110,110,111,116,32,102,115,116,97,116,32,100,98,32,102,105,108,101,32,37,115,0,102,105,108,101,32,117,110,108,105,110,107,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,0,0,0,109,117,108,116,105,112,108,101,32,108,105,110,107,115,32,116,111,32,102,105,108,101,58,32,37,115,0,0,0,0,0,0,102,105,108,101,32,114,101,110,97,109,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,45,115,104,109,0,0,114,101,97,100,111,110,108,121,95,115,104,109,0,0,0,0,37,0,0,0,0,0,0,0,100,10,1,1,0,0,115,0,4,6,0,0,103,0,1,4,30,0,122,0,4,7,0,0,113,0,4,10,0,0,81,0,4,11,0,0,119,0,4,15,0,0,99,0,0,9,0,0,111,8,0,1,0,2,117,10,0,1,0,0,120,16,0,1,16,1,88,16,0,1,0,4,102,0,1,2,0,0,101,0,1,3,30,0,69,0,1,3,14,0,71,0,1,4,14,0,105,10,1,1,0,0,110,0,0,5,0,0,37,0,0,8,0,0,112,16,0,14,0,1,84,0,2,12,0,0,83,0,2,13,0,0,114,10,3,16,0,0,0,0,0,0,0,0,116,104,115,116,110,100,114,100,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,0,0,0,0,0,0,0,0,45,120,48,0,88,48,0,0,78,97,78,0,0,0,0,0,45,73,110,102,0,0,0,0,43,73,110,102,0,0,0,0,73,110,102,0,0,0,0,0,40,78,85,76,76,41,0,0,68,73,83,65,66,76,69,95,76,70,83,0,0,0,0,0,73,78,84,54,52,95,84,89,80,69,0,0,0,0,0,0,83,89,83,84,69,77,95,77,65,76,76,79,67,0,0,0,84,72,82,69,65,68,83,65,70,69,61,48],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+39192);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}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};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var ___errno_state=0;function ___setErrNo(value){HEAP32[___errno_state>>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{return flags}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),getStreamFromPtr:(function(ptr){return FS.streams[ptr-1]}),getPtrForStream:(function(stream){return stream?stream.fd+1:0}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(lookup.node.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(){return 0})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");HEAP32[_stdin>>2]=FS.getPtrForStream(stdin);assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)this.stack=demangleAll(this.stack)};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;ibuflen-1){return ___setErrNo(ERRNO_CODES.ERANGE)}else{var msg=ERRNO_MESSAGES[errnum];writeAsciiToMemory(msg,strerrbuf);return 0}}else{return ___setErrNo(ERRNO_CODES.EINVAL)}}function _strerror(errnum){if(!_strerror.buffer)_strerror.buffer=_malloc(256);_strerror_r(errnum,_strerror.buffer,256);return _strerror.buffer}var _DtoIHigh=true;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _usleep(useconds){var msec=useconds/1e3;if((ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]){var start=self["performance"]["now"]();while(self["performance"]["now"]()-start>2];path=Pointer_stringify(path);try{var stream=FS.open(path,oflag,mode);return stream.fd}catch(e){FS.handleFSError(e);return-1}}function _getuid(){return 0}function _geteuid(){return _getuid.apply(null,arguments)}function _mknod(path,mode,dev){path=Pointer_stringify(path);switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:___setErrNo(ERRNO_CODES.EINVAL);return-1}try{FS.mknod(path,mode,dev);return 0}catch(e){FS.handleFSError(e);return-1}}function _mkdir(path,mode){path=Pointer_stringify(path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);try{FS.mkdir(path,mode,0);return 0}catch(e){FS.handleFSError(e);return-1}}function _mkport(){throw"TODO"}var SOCKFS={mount:(function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=(function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this});Module["websocket"].emit=(function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}});return FS.createNode(null,"/",16384|511,0)}),createSocket:(function(family,type,protocol){var streaming=type==1;if(protocol){assert(streaming==(protocol==6))}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:FS.modeStringToFlags("r+"),seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock}),getSocket:(function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock}),stream_ops:{poll:(function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)}),ioctl:(function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)}),read:(function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length}),write:(function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)}),close:(function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)})},nextname:(function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current++ +"]"}),websocket_sock_ops:{createPeer:(function(sock,addr,port){var ws;if(typeof addr==="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);var opts=ENVIRONMENT_IS_NODE?{"protocol":subProtocols.toString()}:subProtocols;var WebSocket=ENVIRONMENT_IS_NODE?require("ws"):window["WebSocket"];ws=new WebSocket(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!=="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;if(typeof Browser.vrDevice==="undefined")Browser.vrDevice=null;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);if(vrDevice){canvasContainer.requestFullScreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullScreen()}}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;assert(typeof scrollX!=="undefined"&&typeof scrollY!=="undefined","Unable to retrieve scroll position, mouse positions likely broken.");if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(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)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2]=ret}return ret}function _munmap(start,num){if(!_mmap.mappings)_mmap.mappings={};var info=_mmap.mappings[start];if(!info)return 0;if(num==info.num){_mmap.mappings[start]=null;if(info.allocated){_free(info.malloc)}}return 0}function _stat(path,buf,dontResolveLastLink){path=typeof path!=="string"?Pointer_stringify(path):path;try{var stat=dontResolveLastLink?FS.lstat(path):FS.stat(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}catch(e){if(e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){e.setErrno(ERRNO_CODES.ENOTDIR)}FS.handleFSError(e);return-1}}function _fstat(fildes,buf){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}return _stat(stream.path,buf)}var ___tm_current=allocate(44,"i8",ALLOC_STATIC);var ___tm_timezone=allocate(intArrayFromString("GMT"),"i8",ALLOC_STATIC);var _tzname=allocate(8,"i32*",ALLOC_STATIC);var _daylight=allocate(1,"i32*",ALLOC_STATIC);var _timezone=allocate(1,"i32*",ALLOC_STATIC);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[_timezone>>2]=-(new Date).getTimezoneOffset()*60;var winter=new Date(2e3,0,1);var summer=new Date(2e3,6,1);HEAP32[_daylight>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[_tzname+4>>2]=summerNamePtr}else{HEAP32[_tzname>>2]=summerNamePtr;HEAP32[_tzname+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=(new Date(2e3,6,1)).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=date.getTimezoneOffset()==Math.min(winterOffset,summerOffset)|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[_tzname+(dst?Runtime.QUANTUM_SIZE:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _fcntl(fildes,cmd,varargs,dup2){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}switch(cmd){case 0:var arg=HEAP32[varargs>>2];if(arg<0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var newStream;try{newStream=FS.open(stream.path,stream.flags,0,arg)}catch(e){FS.handleFSError(e);return-1}return newStream.fd;case 1:case 2:return 0;case 3:return stream.flags;case 4:var arg=HEAP32[varargs>>2];stream.flags|=arg;return 0;case 12:case 12:var arg=HEAP32[varargs>>2];var offset=0;HEAP16[arg+offset>>1]=2;return 0;case 13:case 14:case 13:case 14:return 0;case 8:case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:___setErrNo(ERRNO_CODES.EINVAL);return-1}return-1}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _recv(fd,buf,len,flags){var sock=SOCKFS.getSocket(fd);if(!sock){___setErrNo(ERRNO_CODES.EBADF);return-1}return _read(fd,buf,len)}function _pread(fildes,buf,nbyte,offset){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte,offset)}catch(e){FS.handleFSError(e);return-1}}function _read(fildes,buf,nbyte){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte)}catch(e){FS.handleFSError(e);return-1}}var _BDtoIHigh=true;function _getcwd(buf,size){if(size==0){___setErrNo(ERRNO_CODES.EINVAL);return 0}var cwd=FS.cwd();if(size>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),"i8",ALLOC_NORMAL);return _getenv.ret}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _chown(path,owner,group,dontResolveLastLink){if(typeof path!=="string")path=Pointer_stringify(path);try{FS.chown(path,owner,group);return 0}catch(e){FS.handleFSError(e);return-1}}function _fchown(fildes,owner,group){try{FS.fchown(fildes,owner,group);return 0}catch(e){FS.handleFSError(e);return-1}}function _dlclose(handle){if(!DLFCN.loadedLibs[handle]){DLFCN.errorMsg="Tried to dlclose() unopened handle: "+handle;return 1}else{var lib_record=DLFCN.loadedLibs[handle];if(--lib_record.refcount==0){if(lib_record.module.cleanups){lib_record.module.cleanups.forEach((function(cleanup){cleanup()}))}delete DLFCN.loadedLibNames[lib_record.name];delete DLFCN.loadedLibs[handle]}return 0}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function _dlopen(filename,flag){filename=filename===0?"__self__":(ENV["LD_LIBRARY_PATH"]||"/")+Pointer_stringify(filename);abort("need to build with DLOPEN_SUPPORT=1 to get dlopen support in asm.js");if(DLFCN.loadedLibNames[filename]){var handle=DLFCN.loadedLibNames[filename];DLFCN.loadedLibs[handle].refcount++;return handle}if(filename==="__self__"){var handle=-1;var lib_module=Module;var cached_functions=SYMBOL_TABLE}else{var target=FS.findObject(filename);if(!target||target.isFolder||target.isDevice){DLFCN.errorMsg="Could not find dynamic lib: "+filename;return 0}else{FS.forceLoadFile(target);var lib_data=FS.readFile(filename,{encoding:"utf8"})}try{var lib_module=eval(lib_data)(DLFCN.functionTable.length,Module)}catch(e){Module.printErr("Error in loading dynamic library: "+e);DLFCN.errorMsg="Could not evaluate dynamic lib: "+filename;return 0}var handle=1;for(var key in DLFCN.loadedLibs){if(DLFCN.loadedLibs.hasOwnProperty(key))handle++}if(flag&256){for(var ident in lib_module){if(lib_module.hasOwnProperty(ident)){Module[ident]=lib_module[ident]}}}var cached_functions={}}DLFCN.loadedLibs[handle]={refcount:1,name:filename,module:lib_module,cached_functions:cached_functions};DLFCN.loadedLibNames[filename]=handle;return handle}function _fsync(fildes){var stream=FS.getStream(fildes);if(stream){return 0}else{___setErrNo(ERRNO_CODES.EBADF);return-1}}function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}Module["_memmove"]=_memmove;function _dlerror(){if(DLFCN.errorMsg===null){return 0}else{if(DLFCN.error)_free(DLFCN.error);var msgArr=intArrayFromString(DLFCN.errorMsg);DLFCN.error=allocate(msgArr,"i8",ALLOC_NORMAL);DLFCN.errorMsg=null;return DLFCN.error}}function ___errno_location(){return ___errno_state}var _BItoD=true;Module["_bitshift64Lshr"]=_bitshift64Lshr;Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function _mmap(start,num,prot,flags,fd,offset){var MAP_PRIVATE=2;var ptr;var allocated=false;if(!_mmap.mappings)_mmap.mappings={};if(fd==-1){ptr=_malloc(num);if(!ptr)return-1;_memset(ptr,0,num);allocated=true}else{var info=FS.getStream(fd);if(!info)return-1;try{var res=FS.mmap(info,HEAPU8,start,num,offset,prot,flags);ptr=res.ptr;allocated=res.allocated}catch(e){FS.handleFSError(e);return-1}}_mmap.mappings[ptr]={malloc:ptr,num:num,allocated:allocated};return ptr}function _truncate(path,length){if(typeof path!=="string")path=Pointer_stringify(path);try{FS.truncate(path,length);return 0}catch(e){FS.handleFSError(e);return-1}}function _ftruncate(fildes,length){try{FS.ftruncate(fildes,length);return 0}catch(e){FS.handleFSError(e);return-1}}function _utimes(path,times){var time;if(times){var offset=8+0;time=HEAP32[times+offset>>2]*1e3;offset=8+4;time+=HEAP32[times+offset>>2]/1e3}else{time=Date.now()}path=Pointer_stringify(path);try{FS.utime(path,time,time);return 0}catch(e){FS.handleFSError(e);return-1}}FS.staticInit();__ATINIT__.unshift({func:(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()})});__ATMAIN__.push({func:(function(){FS.ignorePermissions=false})});__ATEXIT__.push({func:(function(){FS.quit()})});Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;___errno_state=Runtime.staticAlloc(4);HEAP32[___errno_state>>2]=0;__ATINIT__.unshift({func:(function(){TTY.init()})});__ATEXIT__.push({func:(function(){TTY.shutdown()})});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}__ATINIT__.push({func:(function(){SOCKFS.root=FS.mount(SOCKFS,{},null)})});Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};___buildEnvironment(ENV);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]|0;l=c[(d&p)+80>>2]|0;h=d+44|0;do if(!(c[(h&p)>>2]|0)){c[(k&p)+52>>2]=l;e=c[(k&p)+236>>2]|0;if(e){d=e+8|0;if(!(b[(d&o)>>1]&9312)){b[(d&o)>>1]=1;break}else{vg(e);break}}}else{i=k+65|0;j=a[(i&n)>>0]|0;d=c[3164]|0;if(d)nc[d&3]();g=k+236|0;d=c[(g&p)>>2]|0;do if(!d){d=mh(k,40,0)|0;if(!d){c[(g&p)>>2]=d;break}else{e=d+0|0;f=e+40|0;do{a[(e&n)>>0]=0;e=e+1|0}while((e|0)<(f|0));b[(d&o)+8>>1]=1;c[(d&p)+32>>2]=k;c[(g&p)>>2]=d;f=8;break}}else f=8;while(0);if((f|0)==8)Xg(d,c[(h&p)>>2]|0,-1,1,-1)|0;d=c[3166]|0;if(d)nc[d&3]();a[(i&n)>>0]=j;c[(k&p)+52>>2]=l}while(0);return l|0}function ih(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))fa();k=o;c[(g&p)>>2]=0;if(!((Hh(a)|0)==0|(b|0)==0)){k=c[(a&p)+20>>2]|0;if((k|0)>0){l=c[(a&p)+16>>2]|0;n=0;do{m=c[(l+(n<<4)&p)+4>>2]|0;if(m)c[((c[(m&p)+4>>2]|0)&p)+4>>2]=c[(m&p)>>2];n=n+1|0}while((n|0)!=(k|0))}k=Fn(a,b,d,e,f,g,h)|0;if((k|0)==17){md(c[(g&p)>>2]|0)|0;k=Fn(a,b,d,e,f,g,h)|0}}else{c[(k&p)>>2]=105892;c[(k&p)+4>>2]=10788;bd(21,13648,k);k=21}i=o;return k|0}function jh(a,d){a=a|0;d=d|0;var e=0,f=0;f=a+68|0;if((b[(f&o)>>1]|0)>0){e=d+60|0;d=a+60|0;a=0;do{_l((c[(e&p)>>2]|0)+(a*40|0)|0,(c[(d&p)>>2]|0)+(a*40|0)|0);a=a+1|0}while((a|0)<(b[(f&o)>>1]|0))}return}function kh(b,c){b=b|0;c=c|0;var d=0,e=0;if(c){d=c;while(1)if(!(a[(d&n)>>0]|0))break;else d=d+1|0;e=(d-c&1073741823)+1|0;d=mh(b,e,0)|0;if(d)kw(d|0,c|0,e|0)|0;else d=0}else d=0;return d|0}function lh(a,d){a=a|0;d=d|0;var e=0,f=0;f=c[(a&p)+8>>2]|0;if((d|0)>=1){fh(f,d)|0;b[(f&o)+8>>1]=8192;c[(f&p)>>2]=c[(a&p)+4>>2];e=f+16|0;a=c[(e&p)>>2]|0;if(!a)e=0;else{fw(a|0,0,d|0)|0;e=c[(e&p)>>2]|0}}else{e=f+8|0;if(!(b[(e&o)>>1]&9312))b[(e&o)>>1]=1;else vg(f);c[(f&p)+16>>2]=0;e=0}return e|0}function mh(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0;a:do if(b){i=b+65|0;if(!(a[(i&n)>>0]|0)){do if(a[(b&n)+250>>0]|0){if(0>>0|(0==(f|0)?(e[(b&o)+248>>1]|0)>>>0>>0:0)){g=b+264|0;c[(g&p)>>2]=(c[(g&p)>>2]|0)+1;break}h=b+272|0;g=c[(h&p)>>2]|0;if(!g){g=b+268|0;c[(g&p)>>2]=(c[(g&p)>>2]|0)+1;break}c[(h&p)>>2]=c[(g&p)>>2];f=b+252|0;h=c[(f&p)>>2]|0;d=h+1|0;c[(f&p)>>2]=d;f=b+260|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;f=b+256|0;if((h|0)>=(c[(f&p)>>2]|0))c[(f&p)>>2]=d;break a}while(0);g=qg(d,f)|0;if(!g){a[(i&n)>>0]=1;g=0}}else g=0}else g=qg(d,f)|0;while(0);return g|0}function nh(a,d){a=a|0;d=d|0;var f=0,g=0;do if(a){f=c[(a&p)+20>>2]|0;if((f|0)!=0?((d|0)>-1?(e[(a&o)+84>>1]|0|0)>(d|0):0):0){f=f+(d*40|0)|0;break}f=c[(a&p)>>2]|0;if((f|0)!=0?(c[(f&p)+52>>2]=25,g=c[(f&p)+236>>2]|0,(g|0)!=0):0){f=g+8|0;if(!(b[(f&o)>>1]&9312)){b[(f&o)>>1]=1;f=41496;break}else{vg(g);f=41496;break}}else f=41496}else f=41496;while(0);return f|0}function oh(a,e,f,g,h,i){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;j=ph(a,e)|0;if(!j)if(!f)j=0;else{e=(c[(a&p)+60>>2]|0)+((e+-1|0)*40|0)|0;j=Xg(e,f,g,i,h)|0;if((j|0)!=0|i<<24>>24==0)e=j;else e=Yl(e,d[((c[(a&p)>>2]|0)&n)+62>>0]|0)|0;j=c[(a&p)>>2]|0;c[(j&p)+52>>2]=e;h=c[(j&p)+236>>2]|0;do if(h){g=h+8|0;if(!(b[(g&o)>>1]&9312)){b[(g&o)>>1]=1;break}else{vg(h);j=c[(a&p)>>2]|0;break}}while(0);j=Og(j,e)|0}else{g=h;if(!((g|0)==0|(g|0)==-1))cc[h&31](f)}return j|0}function ph(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();g=k;do if(!(ah(a)|0)){if((c[(a&p)+40>>2]|0)==-1108210269?(c[(a&p)+76>>2]|0)<=-1:0){if((d|0)>=1?(b[(a&o)+68>>1]|0)>=(d|0):0){h=d+-1|0;g=c[(a&p)+60>>2]|0;f=g+(h*40|0)|0;e=g+(h*40|0)+8|0;if(!((b[(e&o)>>1]&9312)==0?(c[(g+(h*40|0)&p)+24>>2]|0)==0:0))Qg(f);b[(e&o)>>1]=1;f=c[(a&p)>>2]|0;c[(f&p)+52>>2]=0;f=c[(f&p)+236>>2]|0;do if(f){e=f+8|0;if(!(b[(e&o)>>1]&9312)){b[(e&o)>>1]=1;break}else{vg(f);break}}while(0);g=a+88|0;e=b[(g&o)>>1]|0;if(!(e&256)){e=0;break}f=c[(a&p)+188>>2]|0;if((d|0)<33){if(!((f&1<>1]=e|8;e=0;break}e=c[(a&p)>>2]|0;c[(e&p)+52>>2]=25;e=c[(e&p)+236>>2]|0;if(!e){e=25;break}f=e+8|0;if(!(b[(f&o)>>1]&9312)){b[(f&o)>>1]=1;e=25;break}else{vg(e);e=25;break}}f=c[(a&p)>>2]|0;c[(f&p)+52>>2]=21;f=c[(f&p)+236>>2]|0;do if(f){e=f+8|0;if(!(b[(e&o)>>1]&9312)){b[(e&o)>>1]=1;break}else{vg(f);break}}while(0);c[(g&p)>>2]=c[(a&p)+168>>2];bd(21,41456,g);c[(g&p)>>2]=69987;c[(g&p)+4>>2]=10788;bd(21,13648,g);e=21}else{c[(g&p)>>2]=69979;c[(g&p)+4>>2]=10788;bd(21,13648,g);e=21}while(0);i=k;return e|0}function qh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do if(!((d|0)==0|(e|0)==0)?(i=b[(d&o)+70>>1]|0,i<<16>>16>0):0){g=c[(d&p)+64>>2]|0;d=0;while(1){h=c[(g+(d<<2)&p)>>2]|0;if(((h|0)!=0?($v(h,e,f)|0)==0:0)?(a[(h+f&n)>>0]|0)==0:0)break;d=d+1|0;if((d|0)>=(i<<16>>16|0)){d=0;break a}}d=d+1|0}else d=0;while(0);return d|0}function rh(d,f){d=d|0;f=f|0;var g=0,k=0,l=0,m=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();r=s+8|0;m=s;g=a[(d&n)+10>>0]|0;k=d+16|0;l=d+12|0;do if(Tl(c[(k&p)>>2]|0,r,c[(l&p)>>2]|0,g)|0){if(!(Ul(c[(k&p)>>2]|0,m,c[(l&p)>>2]|0,g)|0)){l=m;k=c[(l&p)+4>>2]|0;g=d;c[(g&p)>>2]=c[(l&p)>>2];c[(g&p)+4>>2]=k;g=d+8|0;b[(g&o)>>1]=e[(g&o)>>1]|0|4;break}h[(d&q)>>3]=+h[(r&q)>>3];g=d+8|0;b[(g&o)>>1]=e[(g&o)>>1]|0|8;if(f)dm(d)}while(0);i=s;return}function sh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;if(!(Gn(b)|0)){g=_h(c[(b&p)>>2]|0,e,f)|0;if(!g){g=(d|0)!=0?41368:41384;if(!f){c[(h&p)>>2]=g;c[(h&p)+4>>2]=e;th(b,27680,h)}else{c[(h&p)>>2]=g;c[(h&p)+4>>2]=f;c[(h&p)+8>>2]=e;th(b,27664,h)}a[(b&n)+17>>0]=1;g=0}}else g=0;i=k;return g|0}function th(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();h=g;f=c[(b&p)>>2]|0;c[(h&p)>>2]=e;e=Wk(f,d,h)|0;if(!(a[(f&n)+68>>0]|0)){d=b+64|0;c[(d&p)>>2]=(c[(d&p)>>2]|0)+1;d=b+4|0;mg(f,c[(d&p)>>2]|0);c[(d&p)>>2]=e;c[(b&p)+12>>2]=1}else mg(f,e);i=g;return}function uh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))fa();f=e;c[(f&p)>>2]=d;a=Wk(a,b,f)|0;i=e;return a|0}function vh(a){a=a|0;var b=0,d=0,e=0;d=c[(a&p)>>2]|0;b=mh(d,208,0)|0;if(!b)b=0;else{fw(b|0,0,208)|0;c[(b&p)>>2]=d;d=d+4|0;e=c[(d&p)>>2]|0;if(e)c[(e&p)+48>>2]=b;c[(b&p)+52>>2]=e;c[(b&p)+48>>2]=0;c[(d&p)>>2]=b;c[(b&p)+40>>2]=649915045;c[(b&p)+24>>2]=a}return b|0}function wh(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;i=b+32|0;h=c[(i&p)>>2]|0;if((c[((c[(b&p)+24>>2]|0)&p)+84>>2]|0)<=(h|0))if(!(Hn(b)|0)){j=c[(i&p)>>2]|0;k=4}else h=1;else{j=h;k=4}if((k|0)==4){c[(i&p)>>2]=j+1;i=c[(b&p)+4>>2]|0;a[(i+(h*20|0)&n)>>0]=d;a[(i+(h*20|0)&n)+3>>0]=0;c[(i+(h*20|0)&p)+4>>2]=e;c[(i+(h*20|0)&p)+8>>2]=f;c[(i+(h*20|0)&p)+12>>2]=g;c[(i+(h*20|0)&p)+16>>2]=0;a[(i+(h*20|0)&n)+1>>0]=0}return h|0}function xh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=c[(b&p)>>2]|0;g=c[(b&p)+4>>2]|0;do if((g|0)!=0?(a[(j&n)+65>>0]|0)==0:0){if((d|0)<0)d=(c[(b&p)+32>>2]|0)+-1|0;i=g+(d*20|0)+1|0;h=g+(d*20|0)+16|0;In(j,a[(i&n)>>0]|0,c[(h&p)>>2]|0);c[(h&p)>>2]=0;if((f|0)==-14){c[(h&p)>>2]=e;a[(i&n)>>0]=-14;break}if(!e){c[(h&p)>>2]=0;a[(i&n)>>0]=0;break}if((f|0)==-6){c[(h&p)>>2]=e;a[(i&n)>>0]=-6;break}else if((f|0)==-10){c[(h&p)>>2]=e;a[(i&n)>>0]=-10;d=e+12|0;c[(d&p)>>2]=(c[(d&p)>>2]|0)+1;break}else{if((f|0)<0){c[(h&p)>>2]=e;a[(i&n)>>0]=f;break}if(!f){d=e;while(1)if(!(a[(d&n)>>0]|0))break;else d=d+1|0;g=d-e&1073741823}else g=f;b=c[(b&p)>>2]|0;d=jw(g|0,((g|0)<0)<<31>>31|0,1,0)|0;d=mh(b,d,G)|0;if(!d)d=0;else{kw(d|0,e|0,g|0)|0;a[(d+g&n)>>0]=0}c[(h&p)>>2]=d;a[(i&n)>>0]=-1;break}}else k=3;while(0);if((k|0)==3?(f|0)!=-10:0)In(j,f,e);return}function yh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=b+32|0;f=c[(k&p)>>2]|0;if((f+d|0)>(c[((c[(b&p)+24>>2]|0)&p)+84>>2]|0))if(!(Hn(b)|0)){f=c[(k&p)>>2]|0;g=4}else f=0;else g=4;if((g|0)==4)if((d|0)>0){i=b+4|0;j=0;while(1){l=a[(e&n)+2>>0]|0;g=l<<24>>24;b=j+f|0;h=c[(i&p)>>2]|0;a[(h+(b*20|0)&n)>>0]=a[(e&n)>>0]|0;c[(h+(b*20|0)&p)+4>>2]=a[(e&n)+1>>0];if(l<<24>>24<0)g=f+~g|0;c[(h+(b*20|0)&p)+8>>2]=g;c[(h+(b*20|0)&p)+12>>2]=a[(e&n)+3>>0];a[(h+(b*20|0)&n)+1>>0]=0;c[(h+(b*20|0)&p)+16>>2]=0;a[(h+(b*20|0)&n)+3>>0]=0;j=j+1|0;if((j|0)==(d|0))break;else e=e+4|0}c[(k&p)>>2]=(c[(k&p)>>2]|0)+d}return f|0}function zh(b,d){b=b|0;d=d|0;var e=0,f=0;e=b+32|0;if((c[(e&p)>>2]|0)>(d|0)?(f=c[(b&p)+4>>2]|0,In(c[(b&p)>>2]|0,a[(f+(d*20|0)&n)+1>>0]|0,c[(f+(d*20|0)&p)+16>>2]|0),b=f+(d*20|0)|0,c[(b&p)>>2]=0,c[(b&p)+4>>2]=0,c[(b&p)+8>>2]=0,c[(b&p)+12>>2]=0,c[(b&p)+16>>2]=0,a[(b&n)>>0]=-100,((c[(e&p)>>2]|0)+-1|0)==(d|0)):0)c[(e&p)>>2]=d;return}function Ah(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=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,O=0;N=i;i=i+16|0;if((i|0)>=(j|0))fa();k=N;L=c[(e&p)>>2]|0;F=c[(f&p)+440>>2]|0;g=c[(f&p)+72>>2]|0;E=c[(f&p)+68>>2]|0;c[(k&p)>>2]=c[(f&p)+392>>2];D=c[(f&p)+80>>2]|0;D=(D|0)==0?1:D;g=E+g|0;m=c[(e&p)+4>>2]|0;l=m+((c[(e&p)+32>>2]|0)*20|0)|0;m=m+((c[(f&p)+84>>2]|0)*20|0)|0;Jn(e,k);if(!(a[(f&n)+20>>0]|0))h=0;else h=((a[(f&n)+21>>0]|0)!=0&1)<<5&65535;M=e+88|0;b[(M&o)>>1]=b[(M&o)>>1]&-33|h;K=f+450|0;H=(a[(K&n)>>0]|0)!=0&(g|0)<10?10:g;g=l;fw(l|0,0,m-g|0)|0;b[(M&o)>>1]=b[(M&o)>>1]&-9;G=e+8|0;y=H*40|0;z=e+60|0;A=F*40|0;B=e+12|0;q=(c[(k&p)>>2]<<2)+7&-8;C=e+64|0;r=(F<<2)+7&-8;s=e+56|0;t=(E<<2)+7&-8;u=e+200|0;v=D+7&-8;w=e+172|0;x=L+65|0;l=l+(g&7)|0;while(1){k=c[(G&p)>>2]|0;if(!k){h=l+y|0;g=h>>>0>m>>>0;k=g?0:l;l=g?l:h;g=g?y:0}else g=0;c[(G&p)>>2]=k;k=c[(z&p)>>2]|0;if(!k){O=l+A|0;h=O>>>0>m>>>0;k=h?0:l;l=h?l:O;g=(h?A:0)+g|0}c[(z&p)>>2]=k;k=c[(B&p)>>2]|0;if(!k){O=l+q|0;h=O>>>0>m>>>0;k=h?0:l;l=h?l:O;g=(h?q:0)+g|0}c[(B&p)>>2]=k;k=c[(C&p)>>2]|0;if(!k){O=l+r|0;h=O>>>0>m>>>0;k=h?0:l;l=h?l:O;g=(h?r:0)+g|0}c[(C&p)>>2]=k;k=c[(s&p)>>2]|0;if(!k){O=l+t|0;h=O>>>0>m>>>0;k=h?0:l;l=h?l:O;g=(h?t:0)+g|0}c[(s&p)>>2]=k;k=c[(u&p)>>2]|0;if(!k){h=(l+v|0)>>>0>m>>>0;k=h?0:l;g=(h?v:0)+g|0}c[(u&p)>>2]=k;if(!g)break;h=mh(L,g,((g|0)<0)<<31>>31)|0;if(!h)k=0;else{fw(h|0,0,g|0)|0;k=h}c[(w&p)>>2]=k;if(!(a[(x&n)>>0]|0)){l=h;m=h+g|0}else break}c[(e&p)+36>>2]=E;c[(e&p)+196>>2]=D;h=c[(z&p)>>2]|0;if((h|0)!=0?(b[(e&o)+68>>1]=F,(F|0)>0):0){g=0;do{b[(h+(g*40|0)&o)+8>>1]=1;c[(h+(g*40|0)&p)+32>>2]=L;g=g+1|0}while((g|0)!=(F|0))}h=c[(C&p)>>2]|0;if((h|0)!=0?(I=f+444|0,J=c[(I&p)>>2]|0,(J|0)>0):0){b[(e&o)+70>>1]=J;F=f+472|0;kw(h|0,c[(F&p)>>2]|0,J<<16>>14|0)|0;fw(c[(F&p)>>2]|0,0,c[(I&p)>>2]<<2|0)|0}h=c[(G&p)>>2]|0;if((h|0)!=0?(c[(G&p)>>2]=h+-40,c[(e&p)+28>>2]=H,(H|0)>=1):0){g=1;while(1){b[(h+((g+-1|0)*40|0)&o)+8>>1]=128;c[(h+((g+-1|0)*40|0)&p)+32>>2]=L;if((g|0)==(H|0))break;else g=g+1|0}}b[(M&o)>>1]=b[(M&o)>>1]&-4|d[(K&n)>>0]&3;c[(e&p)+76>>2]=-1;c[(e&p)+80>>2]=0;a[(e&n)+86>>0]=2;c[(e&p)+40>>2]=-1108210269;c[(e&p)+92>>2]=0;c[(e&p)+72>>2]=1;a[(e&n)+87>>0]=-1;c[(e&p)+104>>2]=0;G=e+144|0;c[(G&p)>>2]=0;c[(G&p)+4>>2]=0;i=N;return}function Bh(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();r=s;q=e+20|0;m=c[(q&p)>>2]|0;l=c[(m&p)+60>>2]|0;c[(l&p)>>2]=f;c[(l&p)+4>>2]=g;l=Sd(m)|0;do if((l|0)!=100){k=c[(q&p)>>2]|0;if(k){l=md(k)|0;c[(q&p)>>2]=0;k=c[(e&p)+24>>2]|0;if(!l){l=r;c[(l&p)>>2]=f;c[(l&p)+4>>2]=g;l=1;k=uh(k,41432,r)|0;break}else{c[(r&p)>>2]=Se(k)|0;k=uh(k,10344,r)|0;break}}else k=0}else{l=c[(c[(m&p)+56>>2]&p)>>2]|0;k=c[(e&p)+12>>2]|0;m=c[(l+(k<<2)&p)+84>>2]|0;if(m>>>0>=12){c[(e&p)+8>>2]=c[(l+((b[(l&o)+20>>1]|0)+k<<2)&p)+84>>2];c[(e&p)+4>>2]=(m+-12|0)>>>1;l=c[(l&p)>>2]|0;c[(e&p)+16>>2]=l;l=l+72|0;a[(l&n)>>0]=d[(l&n)>>0]|16;l=0;k=0;break}l=c[(e&p)+24>>2]|0;if(!m)k=20352;else k=(m|0)==7?20336:20320;c[(r&p)>>2]=k;k=uh(l,41400,r)|0;md(c[(q&p)>>2]|0)|0;c[(q&p)>>2]=0;l=1}while(0);c[(h&p)>>2]=k;i=s;return l|0}function Ch(a){a=a|0;var b=0;if(a){b=c[(a&p)>>2]|0;mg(b,c[(a&p)+112>>2]|0);Nk(b,c[(a&p)+316>>2]|0)}return}function Dh(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a[(b&n)+73>>0]|0;do if(!(g<<24>>24))f=4;else{if((g&255)>2?(f=Kn(b)|0,(f|0)!=0):0)break;f=Lm(b,c,d,e,0)|0}while(0);return f|0}function Eh(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,q=0,r=0,s=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();k=m;if(!a){c[(k&p)>>2]=77646;c[(k&p)+4>>2]=10788;bd(21,13648,k);f=21}else{l=c[(a&p)+24>>2]|0;k=a+20|0;h=c[(k&p)>>2]|0;do if((f|e|0)>=0?(q=jw(f|0,((f|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0,s=G,n=c[(a&p)+4>>2]|0,r=((n|0)<0)<<31>>31,!((s|0)>(r|0)|(s|0)==(r|0)&q>>>0>n>>>0)):0)if(h){f=pc[g&31](c[(a&p)+16>>2]|0,(c[(a&p)+8>>2]|0)+f|0,e,d)|0;if((f|0)==4){Ng(h)|0;c[(k&p)>>2]=0;f=4;break}else{c[(h&p)+80>>2]=f;break}}else f=4;else f=1;while(0);c[(l&p)+52>>2]=f;h=c[(l&p)+236>>2]|0;do if(h){k=h+8|0;if(!(b[(k&o)>>1]&9312)){b[(k&o)>>1]=1;break}else{vg(h);break}}while(0);f=Og(l,f)|0}i=m;return f|0}function Fh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=b+73|0;g=a[(h&n)>>0]|0;if((g&255)>2){g=Kn(b)|0;if(!g){g=a[(h&n)>>0]|0;i=4}}else i=4;if((i|0)==4)if(g<<24>>24==1){Ln(c[(b&p)+4>>2]|0,c[(b&p)+60>>2]|0,b)|0;if(!(a[(b&n)+72>>0]&1))g=8;else g=Lm(b,d,e,f,1)|0}else g=4;return g|0}function Gh(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;if((i|0)>=(j|0))fa();y=A+4|0;z=A;c[(y&p)>>2]=b;c[(z&p)>>2]=e;t=d[(f&n)+1>>0]|0;u=d[(f&n)>>0]|0;x=a[(f&n)+3>>0]|0;w=(g|0)!=0;if(w)v=g;else v=d[(f&n)+2>>0]|0;q=x<<24>>24!=0;m=0;a:while(1){while(1){k=Mn(y)|0;if(!k){s=60;break a}if((k|0)==(u|0)){s=7;break a}if((k|0)!=(v|0))break;if(w){s=40;break}e=Mn(z)|0;if(!e){h=0;break a}l=Mn(y)|0;if((l|0)==94){l=Mn(y)|0;h=1}else h=0;if((l|0)==93){l=Mn(y)|0;o=(e|0)==93&1}else o=0;k=(l|0)==0;if((l|0)!=93&(k^1)){k=0;while(1){if(((l|0)==45?(r=a[(c[(y&p)>>2]&n)>>0]|0,r<<24>>24!=93):0)?r<<24>>24!=0&(k|0)!=0:0){l=e>>>0>>0|e>>>0>(Mn(y)|0)>>>0;b=0;o=l?o:1}else{b=l;o=(e|0)==(l|0)?1:o}l=Mn(y)|0;k=(l|0)==0;if(!((l|0)!=93&(k^1))){l=k;break}else k=b}}else l=k;if(l|(o|0)==(h|0)){h=0;break a}}if((s|0)==40){s=0;k=Mn(y)|0;if(!k){h=0;break}m=c[(y&p)>>2]|0}l=Mn(z)|0;if((k|0)==(l|0))continue;if(q&k>>>0<128&l>>>0<128?(a[(k&255&n)+9328>>0]|0)==(a[(l&255&n)+9328>>0]|0):0)continue;if((k|0)!=(t|0)){h=0;break}if(!((l|0)!=0?(c[(y&p)>>2]|0)!=(m|0):0)){h=0;break}}b:do if((s|0)==7){e=Mn(y)|0;b=(e|0)==(t|0);if((e|0)==(u|0)|b)do{if(b?(Mn(z)|0)==0:0){h=0;break b}e=Mn(y)|0;b=(e|0)==(t|0)}while((e|0)==(u|0)|b);if(e){do if((e|0)==(v|0)){if(w){e=Mn(y)|0;if(!e){h=0;break b}else break}h=c[(z&p)>>2]|0;c:do if(!(a[(h&n)>>0]|0))h=0;else{b=c[(y&p)>>2]|0;while(1){if(Gh(b+-1|0,h,f,0)|0)break;e=h+1|0;c[(z&p)>>2]=e;if((d[(h&n)>>0]|0)>191?(a[(e&n)>>0]&-64)<<24>>24==-128:0){while(1){h=h+2|0;if((a[(h&n)>>0]&-64)<<24>>24==-128){s=e;e=h;h=s}else break}c[(z&p)>>2]=h}else h=e;if(!(a[(h&n)>>0]|0)){h=0;break c}}h=(a[(h&n)>>0]|0)!=0}while(0);h=h&1;break b}while(0);if(e>>>0>=129){h=Mn(z)|0;if(!h){h=0;break}b=c[(y&p)>>2]|0;while(1){if((h|0)==(e|0)?(Gh(b,c[(z&p)>>2]|0,f,g)|0)!=0:0){h=1;break b}h=Mn(z)|0;if(!h){h=0;break b}}}if(!(x<<24>>24)){o=e;m=e}else{m=e&255;o=d[(m&n)+9328>>0]|0;m=((d[(m&n)+10368>>0]|-33)^32)&e}b=c[(z&p)>>2]|0;h=b+1|0;c[(z&p)>>2]=h;e=a[(b&n)>>0]|0;if(!(e<<24>>24))h=0;else{l=c[(y&p)>>2]|0;k=e&255;while(1){if((k|0)==(o|0)|(k|0)==(m|0)?(Gh(l,h,f,g)|0)!=0:0){h=1;break b}e=b+2|0;c[(z&p)>>2]=e;b=a[(h&n)>>0]|0;if(!(b<<24>>24)){h=0;break}else{s=h;k=b&255;h=e;b=s}}}}else h=1}else if((s|0)==60)h=(a[(c[(z&p)>>2]&n)>>0]|0)==0&1;while(0);i=A;return h|0}function Hh(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))fa();b=d;do if(a){a=c[(a&p)+76>>2]|0;if((a|0)==1266094736|(a|0)==-264537850){c[(b&p)>>2]=41352;bd(21,15256,b);a=0;break}else if((a|0)==-1607883113){a=1;break}else{c[(b&p)>>2]=15248;bd(21,15256,b);a=0;break}}else{c[(b&p)>>2]=20304;bd(21,15256,b);a=0}while(0);i=d;return a|0}function Ih(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))fa();k=o;l=o+8|0;c[(l&p)>>2]=0;c[(g&p)>>2]=0;if((Hh(b)|0)==0|(d|0)==0){c[(k&p)>>2]=106003;c[(k&p)+4>>2]=10788;bd(21,13648,k);f=21}else{a:do if((e|0)>-1)if((e|0)>0){k=0;do{if((a[(d+k&n)>>0]|0)==0?(a[(d+(k|1)&n)>>0]|0)==0:0)break a;k=k+2|0}while((k|0)<(e|0))}else k=0;else k=e;while(0);m=Rh(b,d,k)|0;if(m){f=ih(b,m,-1,f,0,g,l)|0;k=c[(l&p)>>2]|0;if((k|0)!=0&(h|0)!=0){g=Nn(m,k-m|0)|0;if((g|0)>0){e=0;k=d;do{k=(a[(k&n)+1>>0]&-8)<<24>>24==-40?k+4|0:k+2|0;e=e+1|0}while((e|0)!=(g|0))}else k=d;c[(h&p)>>2]=d+(k-d)}}else f=0;mg(b,m);f=Og(b,f)|0}i=o;return f|0}function Jh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))fa();q=t;r=b+12|0;h=c[(r&p)>>2]|0;o=(e|0)!=0;g=d<<((h|0)==0&o&1);s=b+20|0;l=b+8|0;k=c[(l&p)>>2]|0;if((g+(c[(s&p)>>2]|0)|0)>>>0>k>>>0){g=g+(k<<1)|0;c[(l&p)>>2]=g;h=c[(b&p)>>2]|0;if((Lc()|0)==0?(m=rg(h,g<<2,0)|0,(m|0)!=0):0){c[(b&p)>>2]=m;h=c[(r&p)>>2]|0;m=5}else m=21}else m=5;a:do if((m|0)==5){g=b+16|0;if(!h){c[(g&p)>>2]=d;if((d|0)>0){g=0;do{c[(q&p)>>2]=c[(f+(g<<2)&p)>>2];h=_c(10344,q)|0;if(!h){m=21;break a}l=c[(s&p)>>2]|0;c[(s&p)>>2]=l+1;c[((c[(b&p)>>2]|0)+(l<<2)&p)>>2]=h;g=g+1|0}while((g|0)<(d|0))}}else if((c[(g&p)>>2]|0)!=(d|0)){g=b+4|0;Wc(c[(g&p)>>2]|0);c[(g&p)>>2]=_c(40912,q)|0;c[(b&p)+24>>2]=1;g=1;break}if(o){if((d|0)>0){l=0;do{k=e+(l<<2)|0;g=c[(k&p)>>2]|0;if(!g)g=0;else{h=g;while(1)if(!(a[(h&n)>>0]|0))break;else h=h+1|0;h=(h-g&1073741823)+1|0;g=Tc(h)|0;if(!g){m=21;break a}kw(g|0,c[(k&p)>>2]|0,h|0)|0}q=c[(s&p)>>2]|0;c[(s&p)>>2]=q+1;c[((c[(b&p)>>2]|0)+(q<<2)&p)>>2]=g;l=l+1|0}while((l|0)<(d|0))}c[(r&p)>>2]=(c[(r&p)>>2]|0)+1;g=0}else g=0}while(0);if((m|0)==21){c[(b&p)+24>>2]=7;g=1}i=t;return g|0}function Kh(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();m=q;if(!d)k=0;else{h=d;while(1)if(!(a[(h&n)>>0]|0))break;else h=h+1|0;k=h-d&1073741823}l=b+308|0;h=bn(l,d,m)|0;if((h|0)!=0?(c[(h&p)+8>>2]|0)!=0:0){c[(m&p)>>2]=114188;c[(m&p)+4>>2]=10788;bd(21,13648,m);h=21}else{h=mh(b,k+17|0,0)|0;if((h|0)!=0?(o=h+16|0,kw(o|0,d|0,k+1|0)|0,c[(h&p)+4>>2]=o,c[(h&p)>>2]=e,c[(h&p)+8>>2]=f,c[(h&p)+12>>2]=g,o=Ik(l,o,h)|0,(o|0)!=0):0){a[(b&n)+65>>0]=1;mg(b,o);h=0}else h=0}h=Og(b,h)|0;if((h|0)!=0&(g|0)!=0)cc[g&31](f);i=q;return h|0}function Lh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=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;C=i;i=i+16|0;if((i|0)>=(j|0))fa();z=C;o=C+8|0;A=c[(b&p)>>2]|0;l=c[(A&p)+92>>2]|0;if(!(c[(A&p)+148>>2]|0))c[(A&p)+240>>2]=0;B=b+12|0;c[(B&p)>>2]=0;r=b+480|0;c[(r&p)>>2]=d;v=qg(1612,0)|0;if(v){c[(v&p)>>2]=-1;s=A+250|0;t=a[(s&n)>>0]|0;if(c[(A&p)+276>>2]|0)a[(s&n)>>0]=1;u=A+65|0;q=b+504|0;f=b+508|0;m=A+240|0;k=0;h=-1;a:while(1){while(1){if(a[(u&n)>>0]|0){x=19;break a}g=d+k|0;if(!(a[(g&n)>>0]|0)){x=19;break a}c[(q&p)>>2]=g;g=Cn(g,o)|0;c[(f&p)>>2]=g;k=g+k|0;if((k|0)>(l|0)){x=12;break a}g=c[(o&p)>>2]|0;if((g|0)==150){x=16;break a}else if((g|0)==1){h=g;x=17;break}else if((g|0)!=151){h=g;break}if(c[(m&p)>>2]|0){x=15;break a}}if((x|0)==17){x=0;c[(r&p)>>2]=d+k};c[(z&p)>>2]=c[(q&p)>>2];c[(z&p)+4>>2]=c[(q&p)+4>>2];On(v,h,z,b);h=c[(o&p)>>2]|0;if(c[(B&p)>>2]|0){x=19;break}}if((x|0)==12){c[(B&p)>>2]=18;x=19}else if((x|0)==15){th(b,20384,z);c[(B&p)>>2]=9;x=19}else if((x|0)==16){mg(A,c[(e&p)>>2]|0);c[(z&p)>>2]=q;c[(e&p)>>2]=uh(A,20400,z)|0;f=1}if((x|0)==19){k=d+k|0;if((a[(k&n)>>0]|0)==0?(c[(B&p)>>2]|0)==0:0){if((h|0)!=1){c[(z&p)>>2]=c[(q&p)>>2];c[(z&p)+4>>2]=c[(q&p)+4>>2];On(v,1,z,b);c[(r&p)>>2]=k};c[(z&p)>>2]=c[(q&p)>>2];c[(z&p)+4>>2]=c[(q&p)+4>>2];On(v,0,z,b);f=0}else f=0}if((c[(v&p)>>2]|0)>-1)do Pn(v);while((c[(v&p)>>2]|0)>-1);Wc(v);a[(s&n)>>0]=t;if(!(a[(u&n)>>0]|0)){h=c[(B&p)>>2]|0;if(!((h|0)==101|(h|0)==0)){w=h;x=29}}else{c[(B&p)>>2]=7;w=7;x=29}if((x|0)==29?(y=b+4|0,(c[(y&p)>>2]|0)==0):0){if((w|0)!=516){h=w&255;if(h>>>0>26|(h|0)==2)h=16328;else h=c[(h<<2&p)+15488>>2]|0}else h=16344;c[(z&p)>>2]=h;dh(y,A,10344,z)}h=b+4|0;g=c[(h&p)>>2]|0;if(g){c[(e&p)>>2]=g;e=c[(B&p)>>2]|0;c[(z&p)>>2]=g;bd(e,10344,z);c[(h&p)>>2]=0;f=f+1|0}h=b+8|0;g=c[(h&p)>>2]|0;if(((g|0)!=0?(c[(b&p)+64>>2]|0)>0:0)?(a[(b&n)+18>>0]|0)==0:0){Pl(g);c[(h&p)>>2]=0}if(!(a[(b&n)+18>>0]|0)){e=b+400|0;mg(A,c[(e&p)>>2]|0);c[(e&p)>>2]=0;c[(b&p)+396>>2]=0}Wc(c[(b&p)+520>>2]|0);if(!(a[(b&n)+451>>0]|0))kg(A,c[(b&p)+484>>2]|0);if(a[(b&n)+449>>0]|0)Qn(A,c[(b&p)+532>>2]|0);jg(A,c[(b&p)+488>>2]|0);h=c[(b&p)+444>>2]|0;k=b+472|0;g=c[(k&p)>>2]|0;if((h|0)>0)do{h=h+-1|0;mg(A,c[(g+(h<<2)&p)>>2]|0);g=c[(k&p)>>2]|0}while((h|0)>0);mg(A,g);h=b+404|0;g=c[(h&p)>>2]|0;if(g)do{c[(h&p)>>2]=c[(g&p)>>2];mg(A,g);g=c[(h&p)>>2]|0}while((g|0)!=0);h=b+524|0;g=c[(h&p)>>2]|0;if(g)do{c[(h&p)>>2]=c[(g&p)+72>>2];kg(A,g);g=c[(h&p)>>2]|0}while((g|0)!=0);if((f|0)>0?(c[(B&p)>>2]|0)==0:0)c[(B&p)>>2]=1}else{a[(A&n)+65>>0]=1;f=7}i=C;return f|0}function Mh(a){a=a|0;if(a){if(!((b[(a&o)+8>>1]&9312)==0?(c[(a&p)+24>>2]|0)==0:0))Qg(a);mg(c[(a&p)+32>>2]|0,a)}return}function Nh(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0;if(!(c[(d&p)+252>>2]|0)){q=d+251|0;if(a[(q&n)>>0]|0)Wc(c[(d&p)+276>>2]|0);j=f&-8;h=(j|0)<5?0:j;i=(g|0)<0?0:g;if(!((h|0)==0|(i|0)==0))if(!e){f=c[3164]|0;if(f)nc[f&3]();f=ca(h,i)|0;f=qg(f,((f|0)<0)<<31>>31)|0;g=c[3166]|0;if(g)nc[g&3]();if(!f)f=0;else i=(lc[c[8792>>2]&127](f)|0)/(j|0)|0}else f=e;else{h=0;f=0}g=d+276|0;c[(g&p)>>2]=f;m=d+272|0;c[(m&p)>>2]=0;b[(d&o)+248>>1]=h;if(!f){c[(g&p)>>2]=d;c[(d&p)+280>>2]=d;a[(d&n)+250>>0]=0;f=0}else{if((i|0)>0){g=ca(h,i)|0;l=f+(ca(h,i+-1|0)|0)|0;k=0;j=f;while(1){i=i+-1|0;c[(j&p)>>2]=k;if((i|0)<=0)break;else{k=j;j=j+h|0}}c[(m&p)>>2]=l;f=f+g|0}c[(d&p)+280>>2]=f;a[(d&n)+250>>0]=1;f=(e|0)==0&1}a[(q&n)>>0]=f;f=0}else f=5;return f|0}function Oh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();r=s;do if(!b)e=0;else{l=b+76|0;o=c[(l&p)>>2]|0;if(!((o|0)==1266094736|(o|0)==-1607883113|(o|0)==-264537850)){c[(r&p)>>2]=15248;bd(21,15256,r);c[(r&p)>>2]=128509;c[(r&p)+4>>2]=10788;bd(21,13648,r);e=21;break}m=b+20|0;e=c[(m&p)>>2]|0;a:do if((e|0)>0){o=b+16|0;f=c[(o&p)>>2]|0;h=0;do{g=c[(f+(h<<4)&p)+4>>2]|0;if(g)c[((c[(g&p)+4>>2]|0)&p)+4>>2]=c[(g&p)>>2];h=h+1|0}while((h|0)!=(e|0));k=0;while(1){e=c[(f+(k<<4)&p)+12>>2]|0;if((e|0)!=0?(q=c[(e&p)+16>>2]|0,(q|0)!=0):0){e=q;do{f=c[(e&p)+8>>2]|0;b:do if(a[(f&n)+44>>0]&16){g=f+60|0;while(1){f=c[(g&p)>>2]|0;if(!f)break b;h=f+24|0;if((c[(f&p)>>2]|0)==(b|0))break;else g=h}c[(g&p)>>2]=c[(h&p)>>2];An(f)}while(0);e=c[(e&p)>>2]|0}while((e|0)!=0)}e=k+1|0;if((e|0)>=(c[(m&p)>>2]|0))break a;f=c[(o&p)>>2]|0;k=e}}while(0);rl(b);Rn(b,68);if((d|0)==0?(Jl(b)|0)!=0:0){ug(b,5,16368,r);e=5;break}c[(l&p)>>2]=1691352191;Mg(b);e=0}while(0);i=s;return e|0}function Ph(a,b){a=a|0;b=b|0;if(((b*1e3|0)+1e3|0)>(c[(a&p)+492>>2]|0))b=0;else{b=c[(a&p)>>2]|0;rc[c[(b&p)+60>>2]&127](b,1e6)|0;b=1}return b|0}function Qh(d,f,g,h,k,l,m,q,r){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;if((i|0)>=(j|0))fa();w=y;do if(f){u=(l|0)!=0;s=(q|0)!=0;if(u)if(s|(m|0)!=0){x=8;break}else{s=0;t=0}else{t=(m|0)!=0;if(!(t|s^1)){x=8;break}}if(!(t&((u|s)^1)|(g|0)<-1|(g|0)>127)){s=f;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;t=s-f&1073741823;if(t>>>0<=255){v=h&2048;s=h&7;if((s|0)!=4){if((s|0)==5){s=Qh(d,f,g,v|1,k,l,m,q,r)|0;if(s)break;s=Qh(d,f,g,v|2,k,l,m,q,r)|0;if(!s)s=3;else break}}else s=2;u=s&255;h=Sh(d,f,t,g,u,0)|0;if(((h|0)!=0?(e[(h&o)+2>>1]&3|0)==(s|0):0)?(b[(h&o)>>1]|0)==(g|0):0){if(c[(d&p)+148>>2]|0){ug(d,5,15424,w);s=5;break}s=c[(d&p)+4>>2]|0;if(s)do{w=s+88|0;b[(w&o)>>1]=b[(w&o)>>1]|8;s=c[(s&p)+52>>2]|0}while((s|0)!=0)}s=Sh(d,f,t,g,u,1)|0;if(!s)s=7;else{Nl(d,s);if(r)c[(r&p)>>2]=(c[(r&p)>>2]|0)+1;c[(s&p)+32>>2]=r;r=s+2|0;b[(r&o)>>1]=e[(r&o)>>1]&3|v;c[(s&p)+12>>2]=l;c[(s&p)+16>>2]=m;c[(s&p)+20>>2]=q;c[(s&p)+4>>2]=k;b[(s&o)>>1]=g;s=0}}else x=8}else x=8}else x=8;while(0);if((x|0)==8){c[(w&p)>>2]=129075;c[(w&p)+4>>2]=10788;bd(21,13648,w);s=21}i=y;return s|0}function Rh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;l=i;i=i+48|0;if((i|0)>=(j|0))fa();k=l;g=k+0|0;h=g+40|0;do{c[(g&p)>>2]=0;g=g+4|0}while((g|0)<(h|0));c[(k&p)+32>>2]=d;Xg(k,e,f,2,0)|0;f=k+8|0;e=c[(f&p)>>2]|0;if(!((e&2|0)==0|(e&16711680|0)==65536))Bn(k,1)|0;if(!(a[(d&n)+65>>0]|0))f=c[(k&p)+16>>2]|0;else{if(!((b[(f&o)>>1]&9312)==0?(c[(k&p)+24>>2]|0)==0:0))Qg(k);c[(k&p)+16>>2]=0;f=0}i=l;return f|0}function Sh(e,f,g,h,i,j){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,q=0,r=0,s=0,t=0;q=((d[((d[(f&n)>>0]|0)&n)+9328>>0]|0)+g|0)%23|0;r=e+336|0;l=Rk(r,q,f,g)|0;if(!l){m=0;k=0}else{m=0;k=0;do{t=Sn(l,h,i)|0;s=(t|0)>(m|0);m=s?t:m;k=s?l:k;l=c[(l&p)+8>>2]|0}while((l|0)!=0)}do if(!(j<<24>>24)){if((k|0)!=0?(c[(e&p)+24>>2]&2097152|0)==0:0){l=0;q=12;break}l=Rk(10840,q,f,g)|0;if(!l){m=0;q=8}else{m=0;do{s=Sn(l,h,i)|0;q=(s|0)>(m|0);m=q?s:m;k=q?l:k;l=c[(l&p)+8>>2]|0}while((l|0)!=0);q=8}}else q=8;while(0);do if((q|0)==8){l=j<<24>>24!=0;if(l&(m|0)<6){l=g+37|0;k=mh(e,l,0)|0;if(!k){q=14;break}fw(k|0,0,l|0)|0;l=k+36|0;c[(k&p)+24>>2]=l;b[(k&o)>>1]=h;b[(k&o)+2>>1]=i&255;kw(l|0,f|0,g|0)|0;a[(k+g&n)+36>>0]=0;ng(r,k);l=1}if(!k)q=14;else q=12}while(0);if((q|0)==12)if((c[(k&p)+16>>2]|0)==0?!((c[(k&p)+12>>2]|0)!=0|l):0)q=14;if((q|0)==14)k=0;return k|0}function Th(b,d,e){b=b|0;d=d|0;e=e|0;d=i;i=i+16|0;if((i|0)>=(j|0))fa();e=d;c[(e&p)>>2]=c[((c[(b&p)+4>>2]|0)&p)+24>>2];e=_c(15304,e)|0;c[(b&p)+20>>2]=1;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,e,-1,1,-1)|0;Wc(e);i=d;return}function Uh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)<=(e|0)){e=c[3164]|0;if(e)nc[e&3]();Kf(b,d,0,0,0)|0;e=c[3166]|0;if(e)nc[e&3]()}return 0}function Vh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if(d){e=d;while(1)if(!(a[(e&n)>>0]|0))break;else e=e+1|0;g=e-d&1073741823;f=c[(b&p)+20>>2]|0;e=f+-1|0;if((f|0)>0){h=e;f=(c[(b&p)+16>>2]|0)+(e<<4)|0;while(1){b=c[(f&p)>>2]|0;if(!b)e=0;else{e=b;while(1)if(!(a[(e&n)>>0]|0))break;else e=e+1|0;e=e-b&1073741823}if((g|0)==(e|0)?(dd(b,d)|0)==0:0){e=h;break a}e=h+-1|0;if((h|0)>0){h=e;f=f+-16|0}else break}}}else e=-1;while(0);return e|0}function Wh(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0;s=b+20|0;i=c[(s&p)>>2]|0;if((i|0)>0){t=(e|0)==10;q=b+16|0;r=(f|0)==0;m=g;b=i;g=0;o=0;while(1){if((o|0)==(e|0)|t){j=c[((c[(q&p)>>2]|0)+(o<<4)&p)+4>>2]|0;if(j){i=c[(j&p)+4>>2]|0;c[(i&p)+4>>2]=c[(j&p)>>2];if(!(a[(i&n)+20>>0]|0)){j=c[(i&p)>>2]|0;k=c[(j&p)+208>>2]|0;if(!k)k=0;else{if(r)i=0;else i=c[(j&p)+176>>2]|0;k=Tn(k,f,i,c[(j&p)+180>>2]|0,d[(j&n)+9>>0]|0,c[(j&p)+152>>2]|0,c[(j&p)+200>>2]|0,m,h)|0;b=c[(s&p)>>2]|0}}else k=6}else k=0;h=(k|0)==5;l=0;j=0;i=b;g=h?1:g;h=h?0:k}else{l=h;j=m;i=b;h=0}o=o+1|0;b=(h|0)==0;if(!((o|0)<(i|0)&b))break;else{m=j;h=l;b=i}}}else{b=1;g=0;h=0}return (b&(g|0)!=0?5:h)|0}function Xh(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+32|0;if((i|0)>=(j|0))fa();v=z;w=z+20|0;r=z+16|0;q=z+12|0;m=z+8|0;c[(r&p)>>2]=f;c[(q&p)>>2]=0;c[(m&p)>>2]=0;c[(e&p)>>2]=0;h=Lc()|0;do if(!h){if(!(1<<(f&7)&70)){c[(v&p)>>2]=130207;c[(v&p)+4>>2]=10788;bd(21,13648,v);h=21;break}if((c[2187]|0)!=0&(f&32768|0)==0)l=(f&65536|0)==0?c[2188]|0:1;else l=0;if(!(f&262144)){if(c[2241]|0){f=f|131072;c[(r&p)>>2]=f}}else{f=f&-131073;c[(r&p)>>2]=f}f=f&-655129;c[(r&p)>>2]=f;y=qg(528,0)|0;a:do if(y){fw(y|0,0,528)|0;if(l)c[(y&p)+12>>2]=8;c[(y&p)+56>>2]=255;c[(y&p)+20>>2]=2;s=y+76|0;c[(s&p)>>2]=-264537850;t=y+16|0;c[(t&p)>>2]=y+456;k=y+88|0;l=11088;h=k+44|0;do{c[(k&p)>>2]=c[(l&p)>>2];k=k+4|0;l=l+4|0}while((k|0)<(h|0));c[(y&p)+132>>2]=0;a[(y&n)+63>>0]=1;a[(y&n)+67>>0]=-1;k=8920;u=c[(k&p)+4>>2]|0;l=y+40|0;c[(l&p)>>2]=c[(k&p)>>2];c[(l&p)+4>>2]=u;c[(y&p)+72>>2]=0;c[(y&p)+136>>2]=2147483647;c[(y&p)+24>>2]=9437264;l=y+428|0;c[(l&p)>>2]=0;c[(l&p)+4>>2]=0;c[(l&p)+8>>2]=0;c[(l&p)+12>>2]=0;u=y+308|0;c[(u&p)>>2]=0;c[(u&p)+4>>2]=0;c[(u&p)+8>>2]=0;c[(u&p)+12>>2]=0;Yh(y,11152,1,0,21,0)|0;Yh(y,11152,3,0,21,0)|0;Yh(y,11152,2,0,21,0)|0;Yh(y,13752,1,0,22,0)|0;Yh(y,13760,1,1,21,0)|0;u=y+65|0;if(!(a[(u&n)>>0]|0)){l=bn(l,11152,v)|0;if(!l)l=0;else l=c[(l&p)+8>>2]|0;c[(y&p)+8>>2]=l;c[(y&p)+48>>2]=f;l=Wn(g,d,r,y,q,m)|0;if((l|0)==7)a[(u&n)>>0]=1;else if(!l){d=c[(q&p)>>2]|0;h=zm(c[(y&p)>>2]|0,d,y,(c[(t&p)>>2]|0)+4|0,0,c[(r&p)>>2]|256)|0;if(!h){f=c[((c[(t&p)>>2]|0)&p)+4>>2]|0;c[((c[(f&p)+4>>2]|0)&p)+4>>2]=c[(f&p)>>2];f=Xn(y,f)|0;c[((c[(t&p)>>2]|0)&p)+12>>2]=f;if(!(a[(u&n)>>0]|0))a[(y&n)+62>>0]=a[(f&n)+77>>0]|0;f=qg(84,0)|0;if(!f){a[(u&n)>>0]=1;f=0}else{k=f+0|0;h=k+84|0;do{a[(k&n)>>0]=0;k=k+1|0}while((k|0)<(h|0));l=f+77|0;k=f+8|0;h=k+64|0;do{c[(k&p)>>2]=0;k=k+4|0}while((k|0)<(h|0));a[(l&n)>>0]=1}r=c[(t&p)>>2]|0;c[(r&p)+28>>2]=f;c[(r&p)>>2]=13768;a[(r&n)+8>>0]=3;c[(r&p)+16>>2]=10728;a[(r&n)+24>>0]=1;c[(s&p)>>2]=-1607883113;if(a[(u&n)>>0]|0){h=y;break}k=y+52|0;c[(k&p)>>2]=0;l=y+236|0;f=c[(l&p)>>2]|0;do if(f){h=f+8|0;if(!(b[(h&o)>>1]&9312)){b[(h&o)>>1]=1;break}else{vg(f);break}}while(0);if((Cf(y,14632,2)|0)==7)a[(u&n)>>0]=1;f=Nf(y)|0;do if(!f){f=c[2656]|0;if(f){b:do if((f|0)>0){k=0;while(1){f=c[((c[2658]|0)+(k<<2)&p)>>2]|0;c[(w&p)>>2]=0;if(f){h=ac[f&63](y,w,13776)|0;f=c[(w&p)>>2]|0;if(h)break}else f=0;Wc(f);k=k+1|0;if((k|0)>=(c[2656]|0)){x=40;break b}}c[(v&p)>>2]=f;ug(y,h,14592,v);h=c[(w&p)>>2]|0}else x=40;while(0);if((x|0)==40){c[(w&p)>>2]=0;h=0}Wc(h)}if(Nf(y)|0){h=y;break a}}else{c[(k&p)>>2]=f;h=c[(l&p)>>2]|0;if(h){f=h+8|0;if(!(b[(f&o)>>1]&9312)){b[(f&o)>>1]=1;break}else{vg(h);break}}}while(0);Nh(y,0,c[2193]|0,c[2194]|0)|0;c[(y&p)+216>>2]=21;c[(y&p)+220>>2]=1e3;h=y;break}else if((h|0)==3082)h=7;c[(y&p)+52>>2]=h;f=c[(y&p)+236>>2]|0;if(!f){h=y;break}h=f+8|0;if(!(b[(h&o)>>1]&9312)){b[(h&o)>>1]=1;h=y;break}else{vg(f);h=y;break}}d=c[(m&p)>>2]|0;c[(v&p)>>2]=d;ug(y,l,(d|0)!=0?10344:0,v);Wc(d);d=c[(q&p)>>2]|0;h=y}else{d=0;h=y}}else{d=0;h=0}while(0);Wc(d);f=Nf(h)|0;if((f|0)==7){Oh(h,0)|0;h=0}else if(f)c[(y&p)+76>>2]=1266094736;c[(e&p)>>2]=h;h=f&255}while(0);i=z;return h|0}function Yh(e,f,g,h,k,l){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))fa();m=v;u=g&255;if(!(g<<24>>24==4|g<<24>>24==8))if((u+-1|0)>>>0>2){c[(m&p)>>2]=129758;c[(m&p)+4>>2]=10788;bd(21,13648,m);m=21}else{t=u;q=4}else{t=2;q=4}do if((q|0)==4){s=t&255;q=Yn(e,s,f,0)|0;if((q|0)!=0?(c[(q&p)+12>>2]|0)!=0:0){if(c[(e&p)+148>>2]|0){ug(e,5,13680,m);m=5;break}g=c[(e&p)+4>>2]|0;if(g)do{r=g+88|0;b[(r&o)>>1]=b[(r&o)>>1]|8;g=c[(g&p)+52>>2]|0}while((g|0)!=0);r=q+4|0;if((d[(r&n)>>0]&247|0)==(t|0)){g=bn(e+428|0,f,m)|0;if(!g)q=0;else q=c[(g&p)+8>>2]|0;m=0;do{if((a[(q+(m*20|0)&n)+4>>0]|0)==(a[(r&n)>>0]|0)){g=c[(q+(m*20|0)&p)+16>>2]|0;if(g)cc[g&31](c[(q+(m*20|0)&p)+8>>2]|0);c[(q+(m*20|0)&p)+12>>2]=0}m=m+1|0}while((m|0)!=3)}}g=Yn(e,s,f,1)|0;if(g){c[(g&p)+12>>2]=k;c[(g&p)+8>>2]=h;c[(g&p)+16>>2]=l;a[(g&n)+4>>0]=t|u&8;c[(e&p)+52>>2]=0;m=c[(e&p)+236>>2]|0;if(m){g=m+8|0;if(!(b[(g&o)>>1]&9312)){b[(g&o)>>1]=1;m=0;break}else{vg(m);m=0;break}}else m=0}else m=7}while(0);i=v;return m|0}function Zh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,q=0;l=d+24|0;m=c[(l&p)>>2]&2;q=d+145|0;a[(q&n)>>0]=1;k=d+16|0;i=c[(k&p)>>2]|0;a[(d&n)+62>>0]=a[((c[(i&p)+12>>2]|0)&n)+77>>0]|0;h=d+20|0;g=0;while(1){if((g|0)>=(c[(h&p)>>2]|0)){g=i;i=6;break}if(!((g|0)==1?1:(b[((c[(i+(g<<4)&p)+12>>2]|0)&o)+78>>1]&1)!=0)?(f=Zn(d,g,e)|0,(f|0)!=0):0){i=9;break}i=c[(k&p)>>2]|0;g=g+1|0}if((i|0)==6)if((b[((c[(g&p)+28>>2]|0)&o)+78>>1]&1)==0?(j=Zn(d,1,e)|0,(j|0)!=0):0){ql(c[((c[(k&p)>>2]|0)&p)+28>>2]|0);f=j}else f=0;else if((i|0)==9)vm(d,g);a[(q&n)>>0]=0;if(!(f|m))c[(l&p)>>2]=c[(l&p)>>2]&-3;return f|0}function _h(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))fa();m=n;k=a+20|0;a:do if((c[(k&p)>>2]|0)>0){l=(d|0)==0;g=a+16|0;h=0;a=0;do{f=(h|0)<2^h;e=c[(g&p)>>2]|0;if(!(!l?(dd(d,c[(e+(f<<4)&p)>>2]|0)|0)!=0:0)){a=bn((c[(e+(f<<4)&p)+12>>2]|0)+8|0,b,m)|0;if(a){a=c[(a&p)+8>>2]|0;if(a)break a}else a=0}h=h+1|0}while((h|0)<(c[(k&p)>>2]|0))}else a=0;while(0);i=n;return a|0}function $h(a){a=a|0;if((dd(a,12936)|0)!=0?(dd(a,12944)|0)!=0:0)a=(dd(a,12952)|0)==0&1;else a=1;return a|0}function ai(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=c[(a&p)+20>>2]|0;a:do if((g|0)>0){d=c[(a&p)+16>>2]|0;e=(b|0)==0;f=0;while(1){a=c[(d+(f<<4)&p)+4>>2]|0;if(a){if(e)break a;if(!(dd(b,c[(d+(f<<4)&p)>>2]|0)|0))break a}f=f+1|0;if((f|0)>=(g|0)){a=0;break}}}else a=0;while(0);return a|0}function bi(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:do if(!b)e=0;else{e=e+-1|0;b:do if((c[(b&p)>>2]|0)>>>0>4e3){g=b;f=e;while(1){e=g+8|0;h=c[(e&p)>>2]|0;if(!h){j=b;break}e=(f>>>0)%(h>>>0)|0;f=g+12+(((f>>>0)/(h>>>0)|0)<<2)|0;b=c[(f&p)>>2]|0;if(!b){b=qg(512,0)|0;if(!b){e=b;l=21;break}fw(b|0,0,512)|0;c[(b&p)>>2]=h;c[(f&p)>>2]=b}if((c[(b&p)>>2]|0)>>>0>4e3){g=b;f=e}else break b}if((l|0)==21){c[(f&p)>>2]=e;e=7;break a}k=f+1|0;f=(f>>>0)%125|0;i=g+12|0;b=c[(g+(f<<2)&p)+12>>2]|0;if(!b){b=c[(g&p)+4>>2]|0;if(b>>>0<124){e=g;l=20}}else{do{if((b|0)==(k|0)){e=0;break a}f=f+1|0;f=f>>>0>124?0:f;b=c[(g+(f<<2)&p)+12>>2]|0}while((b|0)!=0);b=c[(g&p)+4>>2]|0;if(b>>>0<=61){e=g;l=20}}if((l|0)==20){c[(g&p)+4>>2]=b+1;c[(e+(f<<2)&p)+12>>2]=k;e=0;break a}h=qg(500,0)|0;if(!h){e=7;break a}kw(h|0,i|0,500)|0;fw(i|0,0,500)|0;c[(e&p)>>2]=(((c[(j&p)>>2]|0)+124|0)>>>0)/125|0;b=0;e=bi(g,k)|0;do{f=c[(h+(b<<2)&p)>>2]|0;if(f)e=bi(g,f)|0|e;b=b+1|0}while((b|0)!=125);Wc(h);break a}while(0);b=b+12+(e>>>3)|0;a[(b&n)>>0]=d[(b&n)>>0]|0|1<<(e&7);e=0}while(0);return e|0}function ci(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;a:do if(b){g=e+-1|0;while(1){e=c[(b&p)+8>>2]|0;if(!e)break;b=c[(b+(((g>>>0)/(e>>>0)|0)<<2)&p)+12>>2]|0;if(!b)break a;else g=(g>>>0)%(e>>>0)|0}if((c[(b&p)>>2]|0)>>>0<4001){b=b+12+(g>>>3)|0;a[(b&n)>>0]=(d[(b&n)>>0]|0)&(1<<(g&7)^255);break}k=b+12|0;kw(f|0,k|0,500)|0;fw(k|0,0,500)|0;k=b+4|0;c[(k&p)>>2]=0;h=g+1|0;j=0;do{i=f+(j<<2)|0;e=c[(i&p)>>2]|0;if(!((e|0)==0|(e|0)==(h|0))){g=((e+-1|0)>>>0)%125|0;c[(k&p)>>2]=(c[(k&p)>>2]|0)+1;e=b+(g<<2)+12|0;if(c[(e&p)>>2]|0)do{e=g+1|0;g=e>>>0>124?0:e;e=b+(g<<2)+12|0}while((c[(e&p)>>2]|0)!=0);c[(e&p)>>2]=c[(i&p)>>2]}j=j+1|0}while((j|0)!=125)}while(0);return}function di(a,b){a=a|0;b=b|0;var e=0,f=0;a:do if((a|0)!=0?(e=b+-1|0,e>>>0<(c[(a&p)>>2]|0)>>>0):0){while(1){b=c[(a&p)+8>>2]|0;if(!b)break;a=c[(a+(((e>>>0)/(b>>>0)|0)<<2)&p)+12>>2]|0;if(!a){e=0;break a}else e=(e>>>0)%(b>>>0)|0}if((c[(a&p)>>2]|0)>>>0<4001){e=((d[(a+(e>>>3)&n)+12>>0]|0)&1<<(e&7)|0)!=0&1;break}f=e+1|0;e=(e>>>0)%125|0;b=c[(a+(e<<2)&p)+12>>2]|0;if(b)while(1){if((b|0)==(f|0)){e=1;break a}e=((e+1|0)>>>0)%125|0;b=c[(a+(e<<2)&p)+12>>2]|0;if(!b){e=0;break}}else e=0}else e=0;while(0);return e|0}function ei(a){a=a|0;var b=0,d=0;if(a){if(c[(a&p)+8>>2]|0){b=a+12|0;d=0;do{ei(c[(b+(d<<2)&p)>>2]|0);d=d+1|0}while((d|0)!=125)}Wc(a)}return}function fi(b,c){b=b|0;c=c|0;var f=0;a:do if((c|0)>=2?(f=a[((((d[((d[(b&n)>>0]|0)&n)+9328>>0]|0)<<2^c^(d[((d[(b+c+-1&n)>>0]|0)&n)+9328>>0]|0)*3|0)%127|0)&n)+11824>>0]|0,f<<24>>24!=0):0){f=f&255;while(1){f=f+-1|0;if((d[(f&n)+12080>>0]|0|0)==(c|0)?(Fc(11264+(e[(f<<1&o)+12208>>1]|0)|0,b,c)|0)==0:0)break;f=a[(f&n)+11952>>0]|0;if(!(f<<24>>24)){f=27;break a}else f=f&255}f=d[(f&n)+12456>>0]|0}else f=27;while(0);return f|0}function gi(a){a=a|0;var b=0,d=0,e=0;c[2174]=a;if((c[2184]|0)>>>0>>0)c[2184]=a;d=c[2264]|0;if((d|0)==0|(c[2235]|0)<(a|0)){b=qg(a,((a|0)<0)<<31>>31)|0;if((c[2186]|0)!=0&(b|0)!=0?(e=lc[c[8792>>2]&127](b)|0,e=(c[2170]|0)+e|0,c[2170]=e,e>>>0>(c[2180]|0)>>>0):0)c[2180]=e}else{b=c[2263]|0;c[2263]=c[(b&p)>>2];c[2264]=d+-1;a=(c[2169]|0)+1|0;c[2169]=a;if(a>>>0>(c[2179]|0)>>>0)c[2179]=a}return b|0}function hi(a){a=a|0;var b=0;do if(a){if((c[2234]|0)>>>0<=a>>>0&(c[2262]|0)>>>0>a>>>0){c[(a&p)>>2]=c[2263];c[2263]=a;c[2264]=(c[2264]|0)+1;c[2169]=(c[2169]|0)+-1;break}if(!(c[2186]|0)){cc[c[8784>>2]&31](a);break}else{b=lc[c[8792>>2]&127](a)|0;c[2170]=(c[2170]|0)-b;c[2166]=(c[2166]|0)-b;c[2175]=(c[2175]|0)+-1;cc[c[8784>>2]&31](a);break}}while(0);return}function ii(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();h=l;g=a[(b&n)>>0]|0;a:do if(((g&255)+-48|0)>>>0>=10){k=g;g=b;while(1){h=g+1|0;if(!(k<<24>>24))break;k=a[(h&n)>>0]|0;g=h}k=g-b&1073741823;g=7-e|0;if((g|0)>0){h=0;while(1){if((d[(h&n)+11248>>0]|0|0)==(k|0)?(Fc(11216+(d[(h&n)+11240>>0]|0)|0,b,k)|0)==0:0){f=h;break}h=h+1|0;if((h|0)>=(g|0))break a}f=a[(f&n)+11256>>0]|0}}else{c[(h&p)>>2]=0;Dn(b,h)|0;f=c[(h&p)>>2]&255}while(0);i=l;return f|0}function ji(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=a[(b&n)>>0]|0;do if(e<<24>>24==48){f=a[(b&n)+1>>0]|0;if(!(f<<24>>24==88|f<<24>>24==120))if(!b){e=0;k=15;break}else{g=e;e=b;k=12;break}e=a[(b&n)+2>>0]|0;if(!(a[(e&255&n)+10368>>0]&8)){g=48;e=b;k=12}else{g=2;while(1){f=g+1|0;if(e<<24>>24!=48)break;e=a[(b+f&n)>>0]|0;g=f}if(!(a[(e&255&n)+10368>>0]&8)){h=b+g|0;i=0;e=0;f=g}else{i=0;h=0;f=g;while(1){i=iw(i|0,h|0,4)|0;j=G;h=e<<24>>24;i=(0-(h>>>6&1)&9)+h&15|i;f=f+1|0;h=b+f|0;e=a[(h&n)>>0]|0;if(!(a[(e&255&n)+10368>>0]&8)){e=j;break}else h=j}}j=d;c[(j&p)>>2]=i;c[(j&p)+4>>2]=e;if(!(a[(h&n)>>0]|0))e=(f-g|0)<17;else e=0;e=e&1^1}}else{g=e;e=b;k=12}while(0);if((k|0)==12){while(1){f=e+1|0;if(!(g<<24>>24))break;g=a[(f&n)>>0]|0;e=f;k=12}e=e-b&1073741823;k=15}if((k|0)==15)e=Ul(b,d,e,1)|0;return e|0}function ki(d,f,g,h,k){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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;G=i;i=i+1264|0;if((i|0)>=(j|0))fa();E=G;D=G+152|0;x=G+742|0;y=G+76|0;u=G+228|0;r=h&-256;v=h&16;C=h&8;w=h&4;q=h&1;z=h&2;if((w|0)!=0?(r|0)==524288|(r|0)==2048|(r|0)==16384:0)B=1;else B=0;A=c[12114]|0;if((A|0)!=(rb()|0)?(c[12114]=rb()|0,(Lc()|0)==0):0)a[9064]=0;s=g+0|0;t=s+44|0;do{c[(s&p)>>2]=0;s=s+4|0}while((s|0)<(t|0));A=(r|0)==256;do if(A){a:do if((rc[c[47604>>2]&127](f,E)|0)==0?(l=c[12178]|0,(l|0)!=0):0){r=c[(E&p)>>2]|0;s=c[(E&p)+72>>2]|0;while(1){if((c[(l&p)>>2]|0)==(r|0)?(c[(l&p)+4>>2]|0)==(s|0):0)break;l=c[(l&p)+32>>2]|0;if(!l){F=18;break a}}r=l+28|0;l=c[(r&p)>>2]|0;if(l){while(1){t=r;r=l+8|0;s=l;l=c[(r&p)>>2]|0;if((c[(s&p)+4>>2]|0)==(h|0)){r=t;break}if(!l){F=18;break a}}c[(r&p)>>2]=l;u=c[(s&p)>>2]|0;l=s}else F=18}else F=18;while(0);if((F|0)==18){l=Tc(12)|0;if(!l){l=7;break}else u=-1}c[(g&p)+28>>2]=l;r=w<<4|z;l=(v|0)!=0;if((u|0)<0){w=l;v=l?r|131200:r;l=f;F=23}else{t=u;l=f;F=36}}else{if(!f){l=_n(514,u)|0;if(!l)l=u;else break}else l=f;F=w<<4|z;v=(v|0)!=0;w=v;v=v?F|131200:F;F=23}while(0);b:do if((F|0)==23){if(!(h&526336)){r=(C|0)==0?0:384;u=0;t=0}else{if(!l)r=0;else{r=l;while(1)if(!(a[(r&n)>>0]|0))break;else r=r+1|0;r=r-l&1073741823}do r=r+-1|0;while((a[(l+r&n)>>0]|0)!=45);kw(x|0,l|0,r|0)|0;a[(x+r&n)>>0]=0;if(rc[c[47604>>2]&127](x,y)|0){l=1802;break}r=c[(y&p)+12>>2]&511;u=c[(y&p)+20>>2]|0;t=c[(y&p)+24>>2]|0}s=$n(l,v,r)|0;do if((s|0)<0){if(!(w|((z|0)==0|(c[((Hb()|0)&p)>>2]|0)==21))?(m=$n(l,v&131200,r)|0,(m|0)>=0):0){h=h&-8|1;q=1;break}c[(E&p)>>2]=31186;c[(E&p)+4>>2]=10788;bd(14,14848,E);l=co(14,47896,l,31186)|0;if(!l){l=0;break b}m=g+28|0;F=70;break b}else m=s;while(0);if(!(h&526336)){t=m;F=36}else{ac[c[47796>>2]&63](m,u,t)|0;t=m;F=36}}while(0);c:do if((F|0)==36){if(k)c[(k&p)>>2]=h;u=g+28|0;m=c[(u&p)>>2]|0;if(m){c[(m&p)>>2]=t;c[(m&p)+4>>2]=h}if(C)lc[c[47748>>2]&127](l)|0;l=C<<2;l=(q|0)==0?l:l|2;l=A?l:l|128;l=B?l|8:l;C=l|h&64;c[(g&p)+12>>2]=t;c[(g&p)+4>>2]=d;c[(g&p)+32>>2]=f;m=g+18|0;b[(m&o)>>1]=C&255;if(fg((C&64|0)!=0?f:0,48496,1)|0)b[(m&o)>>1]=e[(m&o)>>1]|16;if(!(_v(c[(d&p)+16>>2]|0,1e4)|0))b[(m&o)>>1]=e[(m&o)>>1]|1;d:do if(!(l&128)){l=rc[c[(c[(d&p)+20>>2]&p)>>2]&127](f,g)|0;if((l|0)!=48504){if((l|0)!=47472){F=64;break}m=(gw(f|0)|0)+6|0;l=Tc(m)|0;if(l){c[(E&p)>>2]=f;ad(m,l,48584,E)|0;c[(g&p)+24>>2]=l;c[(g&p)+20>>2]=0;l=47472;break}c[(g&p)+24>>2]=0;c[(g&p)+20>>2]=0;if((t|0)<=-1){m=u;l=7;F=70;break c}ao(g,t,30794);m=u;l=7;F=70;break c}do if(!(rc[c[47616>>2]&127](c[(g&p)+12>>2]|0,D)|0)){l=E;c[(l&p)>>2]=0;c[(l&p)+4>>2]=0;c[(E&p)>>2]=c[(D&p)>>2];c[(E&p)+4>>2]=c[(D&p)+72>>2];l=c[12178]|0;e:do if(!l)F=53;else{while(1){if(!(Zv(E,l,8)|0))break;l=c[(l&p)+32>>2]|0;if(!l){F=53;break e}}E=l+16|0;c[(E&p)>>2]=(c[(E&p)>>2]|0)+1}while(0);if((F|0)==53){m=Tc(40)|0;if(!m){l=7;m=g+20|0;break}s=m+0|0;t=s+40|0;do{c[(s&p)>>2]=0;s=s+4|0}while((s|0)<(t|0));F=c[(E&p)+4>>2]|0;l=m;c[(l&p)>>2]=c[(E&p)>>2];c[(l&p)+4>>2]=F;c[(m&p)+16>>2]=1;c[(m&p)+32>>2]=c[12178];c[(m&p)+36>>2]=0;l=c[12178]|0;if(l)c[(l&p)+36>>2]=m;c[12178]=m;l=m}c[(g&p)+8>>2]=l;l=48504;F=64;break d}else{l=c[((Hb()|0)&p)>>2]|0;m=g+20|0;c[(m&p)>>2]=l;l=(l|0)==75?22:10}while(0);ao(g,t,30709);c[(m&p)>>2]=0;m=u;F=70;break c}else{l=48376;F=64}while(0);if((F|0)==64)c[(g&p)+20>>2]=0;c[(g&p)>>2]=l;bo(g);l=0}while(0);if((F|0)==70)Wc(c[(m&p)>>2]|0);i=G;return l|0}function li(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();e=f;do if((lc[c[47748>>2]&127](b)|0)==-1)if((c[((Hb()|0)&p)>>2]|0)==2)a=5898;else a=co(2570,48032,b,31314)|0;else if(d&1){a=rc[c[47760>>2]&127](b,e)|0;if((a|0)==14){a=0;break}else if(a)break;if(!(Gb(c[(e&p)>>2]|0)|0))a=0;else a=co(1290,48488,b,31329)|0;if(lc[c[47568>>2]&127](c[(e&p)>>2]|0)|0)co(4106,47856,0,31331)|0}else a=0;while(0);i=f;return a|0}function mi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+80|0;if((i|0)>=(j|0))fa();f=g;if((d|0)==2)a=4;else if((d|0)==1)a=6;else a=0;a=(rc[c[47580>>2]&127](b,a)|0)==0;c[(e&p)>>2]=a&1;if((!((d|0)!=0|a^1)?(rc[c[47604>>2]&127](b,f)|0)==0:0)?(c[(f&p)+36>>2]|0)==0:0)c[(e&p)>>2]=0;i=g;return 0}function ni(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;b=e+-1|0;a[(f+b&n)>>0]=0;do if((a[(d&n)>>0]|0)!=47)if(!(rc[c[47592>>2]&127](f,b)|0)){c[(g&p)>>2]=31416;c[(g&p)+4>>2]=10788;bd(14,14848,g);b=co(14,47904,d,31416)|0;break}else{b=gw(f|0)|0;c[(g&p)>>2]=d;ad(e-b|0,f+b|0,48480,g)|0;b=0;break}else{c[(g&p)>>2]=d;ad(e,f,10344,g)|0;b=0}while(0);i=h;return b|0}function oi(a,b){a=a|0;b=b|0;return Db(b|0,258)|0}function pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();e=f;a=Xa()|0;if(a){c[(e&p)>>2]=a;ad(b,d,10344,e)|0}i=f;return}function qi(a,b,c){a=a|0;b=b|0;c=c|0;return $a(b|0,c|0)|0}function ri(a,b){a=a|0;b=b|0;Eb(b|0)|0;return}function si(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();f=g;fw(e|0,0,d|0)|0;c[12114]=rb()|0;b=$n(48464,0,0)|0;if((b|0)>=0){do if((ac[c[47652>>2]&63](b,e,d)|0)>=0)break;while((c[((Hb()|0)&p)>>2]|0)==4);if(lc[c[47568>>2]&127](b)|0)co(4106,47856,0,31521)|0}else{Pb(f|0)|0;d=c[(f&p)>>2]|0;a[(e&n)>>0]=d;a[(e&n)+1>>0]=d>>8;a[(e&n)+2>>0]=d>>16;a[(e&n)+3>>0]=d>>24;d=e+4|0;b=c[12114]|0;a[(d&n)>>0]=b;a[(d&n)+1>>0]=b>>8;a[(d&n)+2>>0]=b>>16;a[(d&n)+3>>0]=b>>24;d=8}i=g;return d|0}function ti(a,b){a=a|0;b=b|0;a=(b+999999|0)/1e6|0;Mb(a|0)|0;return a*1e6|0}function ui(a,b){a=a|0;b=b|0;var d=0,e=0;a=i;i=i+16|0;if((i|0)>=(j|0))fa();e=a;d=e;c[(d&p)>>2]=0;c[(d&p)+4>>2]=0;d=wi(0,e)|0;h[(b&q)>>3]=(+((c[(e&p)>>2]|0)>>>0)+4294967296.0*+(c[(e&p)+4>>2]|0))/864.0e5;i=a;return d|0}function vi(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function wi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;if((i|0)>=(j|0))fa();a=d;if(!(Sb(a|0,0)|0)){f=c[(a&p)>>2]|0;f=sw(f|0,((f|0)<0)<<31>>31|0,1e3,0)|0;f=jw(f|0,G|0,1045635584,49096)|0;e=(c[(a&p)+4>>2]|0)/1e3|0;e=jw(f|0,G|0,e|0,((e|0)<0)<<31>>31|0)|0;a=b;c[(a&p)>>2]=e;c[(a&p)+4>>2]=G;a=0}else a=1;i=d;return a|0}function xi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(!b){a=0;do{b=c[((a*12|0)&p)+47560>>2]|0;if(b)c[((a*12|0)&p)+47556>>2]=b;a=a+1|0}while((a|0)!=25);b=0}else{a=0;while(1){if(!(_v(b,c[((a*12|0)&p)+47552>>2]|0)|0)){e=a;break}a=a+1|0;if(a>>>0>=25){b=12;break a}}b=47560+(e*12|0)|0;a=c[(b&p)>>2]|0;if(!a){a=c[((e*12|0)&p)+47556>>2]|0;c[(b&p)>>2]=a}c[((e*12|0)&p)+47556>>2]=(d|0)==0?a:d;b=0}while(0);return b|0}function yi(a,b){a=a|0;b=b|0;var d=0;a=0;while(1){if(!(_v(b,c[((a*12|0)&p)+47552>>2]|0)|0)){d=4;break}a=a+1|0;if(a>>>0>=25){a=0;break}}if((d|0)==4)a=c[((a*12|0)&p)+47556>>2]|0;return a|0}function zi(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if(!b)a=-1;else{d=0;while(1){a=d+1|0;if(!(_v(b,c[((d*12|0)&p)+47552>>2]|0)|0)){a=d;break a}if((a|0)<24)d=a;else break}}while(0);while(1){a=a+1|0;if((a|0)>=25){a=0;break}if(c[((a*12|0)&p)+47556>>2]|0){e=6;break}}if((e|0)==6)a=c[((a*12|0)&p)+47552>>2]|0;return a|0}function Ai(a,b){a=a|0;b=b|0;return 48504}function Bi(a,b){a=a|0;b=b|0;return 48376}function Ci(a,b){a=a|0;b=b|0;return 47472}function Di(a){a=a|0;var b=0,d=0;b=c[(a&p)+4>>2]|0;if(b)do{d=b;b=c[(b&p)>>2]|0;Wc(d)}while((b|0)!=0);b=a+0|0;d=b+40|0;do{c[(b&p)>>2]=0;b=b+4|0}while((b|0)<(d|0));c[(a&p)>>2]=14696;return 0}function Ei(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=a+24|0;k=l;if(((c[(k&p)>>2]|0)!=(e|0)?1:(c[(k&p)+4>>2]|0)!=(f|0))|(e|0)==0&(f|0)==0){g=c[(a&p)+4>>2]|0;if(!((g|0)==0|((f|0)<0|(f|0)==0&e>>>0<1020))){h=1020;i=0;do{h=jw(h|0,i|0,1020,0)|0;i=G;g=c[(g&p)>>2]|0}while(!((g|0)==0|((i|0)>(f|0)|(i|0)==(f|0)&h>>>0>e>>>0)))}}else g=c[(a&p)+32>>2]|0;j=rw(e|0,f|0,1020,0)|0;k=d;h=b;while(1){b=1020-j|0;i=(k|0)<(b|0)?k:b;kw(h|0,g+j+4|0,i|0)|0;k=k-b|0;if((k|0)<=-1)break;g=c[(g&p)>>2]|0;if(!((g|0)!=0&(k|0)>0))break;else{j=0;h=h+i|0}}f=jw(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0;d=l;c[(d&p)>>2]=f;c[(d&p)+4>>2]=G;c[(a&p)+32>>2]=g;return 0}function Fi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a:do if((d|0)>0){i=a+8|0;j=a+16|0;h=a+4|0;e=i;f=c[(e&p)>>2]|0;e=c[(e&p)+4>>2]|0;while(1){a=c[(j&p)>>2]|0;e=rw(f|0,e|0,1020,0)|0;g=1020-e|0;g=(d|0)<(g|0)?d:g;if(!e){f=Tc(1024)|0;if(!f){e=3082;break a}c[(f&p)>>2]=0;if(!a){c[(h&p)>>2]=f;a=f}else{c[(a&p)>>2]=f;a=f}c[(j&p)>>2]=a}kw(a+e+4|0,b|0,g|0)|0;d=d-g|0;f=i;f=jw(c[(f&p)>>2]|0,c[(f&p)+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;e=G;a=i;c[(a&p)>>2]=f;c[(a&p)+4>>2]=e;if((d|0)<=0){e=0;break}else b=b+g|0}}else e=0;while(0);return e|0}function Gi(a,b,d){a=a|0;b=b|0;d=d|0;b=c[(a&p)+4>>2]|0;if(b)do{d=b;b=c[(b&p)>>2]|0;Wc(d)}while((b|0)!=0);d=a+0|0;b=d+40|0;do{c[(d&p)>>2]=0;d=d+4|0}while((d|0)<(b|0));c[(a&p)>>2]=14696;return 0}function Hi(a,b){a=a|0;b=b|0;return 0}function Ii(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+8|0;d=c[(e&p)+4>>2]|0;a=b;c[(a&p)>>2]=c[(e&p)>>2];c[(a&p)+4>>2]=d;return 0}function Ji(a){a=a|0;var b=0;a=12584|0;b=a+68|0;do{c[(a&p)>>2]=0;a=a+4|0}while((a|0)<(b|0));if(c[2187]|0){c[3146]=8;c[3159]=8}c[3149]=10;c[3153]=1;return 0}function Ki(a){a=a|0;var b=0;a=12584|0;b=a+68|0;do{c[(a&p)>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Li(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=qg(48,0)|0;if(f){g=f+0|0;h=g+48|0;do{a[(g&n)>>0]=0;g=g+1|0}while((g|0)<(h|0));c[(f&p)>>2]=12584;c[(f&p)+4>>2]=b;c[(f&p)+8>>2]=d;e=(e|0)!=0;c[(f&p)+12>>2]=e&1;eo(f);if(e){c[(f&p)+16>>2]=10;e=c[3148]|0;c[3148]=e+10;c[3149]=(c[3147]|0)+10+(-10-e)}if(!(c[(f&p)+40>>2]|0)){Si(f);f=0}}else f=0;return f|0}function Mi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(c[(a&p)+12>>2]|0){d=c[(a&p)>>2]|0;e=a+20|0;g=d+4|0;f=(c[(g&p)>>2]|0)+(b-(c[(e&p)>>2]|0))|0;c[(g&p)>>2]=f;c[(d&p)+12>>2]=f+10-(c[(d&p)+8>>2]|0);c[(e&p)>>2]=b;c[(a&p)+24>>2]=((b*9|0)>>>0)/10|0;fo(d)}return}function Ni(a){a=a|0;return c[(a&p)+36>>2]|0}function Oi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[((c[(b&p)+44>>2]|0)+(((d>>>0)%((c[(b&p)+40>>2]|0)>>>0)|0)<<2)&p)>>2]|0;a:do if(f){while(1){if((c[(f&p)+8>>2]|0)==(d|0))break;f=c[(f&p)+16>>2]|0;if(!f){g=6;break a}}if(!(a[(f&n)+12>>0]|0))go(f)}else g=6;while(0);if((g|0)==6)if(!e)f=0;else f=ho(b,d,e)|0;return f|0}function Pi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[(b&p)>>2]|0;if((e|0)==0?(c[(g&p)+16>>2]|0)>>>0<=(c[(g&p)+4>>2]|0)>>>0:0){e=g+20|0;f=c[(e&p)>>2]|0;if(!f)c[(g&p)+24>>2]=d;else{c[(f&p)+28>>2]=d;c[(d&p)+24>>2]=f}c[(e&p)>>2]=d;f=b+32|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;a[(d&n)+12>>0]=0}else{g=c[(d&p)+20>>2]|0;e=(c[(g&p)+44>>2]|0)+((((c[(d&p)+8>>2]|0)>>>0)%((c[(g&p)+40>>2]|0)>>>0)|0)<<2)|0;while(1){b=c[(e&p)>>2]|0;f=b+16|0;if((b|0)==(d|0))break;else e=f}c[(e&p)>>2]=c[(f&p)>>2];f=g+36|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+-1;io(d)}return}function Qi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=c[(a&p)+40>>2]|0;h=a+44|0;d=(c[(h&p)>>2]|0)+(((d>>>0)%(g>>>0)|0)<<2)|0;while(1){f=c[(d&p)>>2]|0;if((f|0)==(b|0))break;else d=f+16|0}f=b+16|0;c[(d&p)>>2]=c[(f&p)>>2];c[(b&p)+8>>2]=e;d=(c[(h&p)>>2]|0)+(((e>>>0)%(g>>>0)|0)<<2)|0;c[(f&p)>>2]=c[(d&p)>>2];c[(d&p)>>2]=b;d=a+28|0;if((c[(d&p)>>2]|0)>>>0>>0)c[(d&p)>>2]=e;return}function Ri(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;if((c[(d&p)>>2]|0)>>>0>=b>>>0){jo(a,b);c[(d&p)>>2]=b+-1}return}function Si(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[(a&p)>>2]|0;jo(a,0);f=b+4|0;e=(c[(f&p)>>2]|0)-(c[(a&p)+20>>2]|0)|0;c[(f&p)>>2]=e;f=b+8|0;d=(c[(f&p)>>2]|0)-(c[(a&p)+16>>2]|0)|0;c[(f&p)>>2]=d;c[(b&p)+12>>2]=e+10-d;fo(b);Wc(c[(a&p)+44>>2]|0);Wc(a);return}function Ti(a){a=a|0;var b=0,d=0;if(c[(a&p)+12>>2]|0){d=c[(a&p)>>2]|0;a=d+4|0;b=c[(a&p)>>2]|0;c[(a&p)>>2]=0;fo(d);c[(a&p)>>2]=b}return}function Ui(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))fa();d=e;b=a+7&-8;a=Wv(b+8|0)|0;if(!a){c[(d&p)>>2]=b;bd(7,16568,d)}else{d=a;c[(d&p)>>2]=b;c[(d&p)+4>>2]=((b|0)<0)<<31>>31;a=a+8|0}i=e;return a|0}function Vi(a){a=a|0;Xv(a+-8|0);return}function Wi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();f=g;e=a+-8|0;d=Yv(e,b+8|0)|0;if(!d){if(!a)e=0;else e=c[(e&p)>>2]|0;c[(f&p)>>2]=e;c[(f&p)+4>>2]=b;bd(7,16528,f)}else{e=d;c[(e&p)>>2]=b;c[(e&p)+4>>2]=((b|0)<0)<<31>>31;d=d+8|0}i=g;return d|0}function Xi(a){a=a|0;if(!a)a=0;else a=c[(a+-8&p)>>2]|0;return a|0}function Yi(a){a=a|0;return a+7&-8|0}function Zi(a){a=a|0;return 0}function _i(a){a=a|0;return}function $i(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0;i=c[(g&p)>>2]|0;do if((-1431655766>>>(e[(i&o)+8>>1]&31)&1|0)==0?(h=Sg(i,1)|0,(h|0)!=0):0){i=Tg(c[(g&p)>>2]|0,1)|0;if((f|0)!=1){r=Sg(c[(g&p)+4>>2]|0,1)|0;if(!r)break;f=a[(r&n)>>0]|0;if(f<<24>>24){g=0;j=r;while(1){l=j+1|0;if((f&255)>191){k=j;j=l;while(1){f=a[(j&n)>>0]|0;if((f&-64)<<24>>24==-128){q=j;j=k+2|0;k=q}else break}}else{f=a[(l&n)>>0]|0;j=l}k=g+1|0;if(!(f<<24>>24)){f=k;break}else g=k}if((g|0)>-1){m=sw(f|0,((f|0)<0)<<31>>31|0,5,0)|0;m=ko(b,m,G)|0;if(!m)break;f=m+(f<<2)|0;if(a[(r&n)>>0]|0){j=r;g=0;while(1){c[(m+(g<<2)&p)>>2]=j;l=j+1|0;if((d[(j&n)>>0]|0)>191){k=j;while(1)if((a[(l&n)>>0]&-64)<<24>>24==-128){q=l;l=k+2|0;k=q}else break}a[(f+g&n)>>0]=l-j;k=g+1|0;if(!(a[(l&n)>>0]|0))break;else{j=l;g=k}}if((g|0)>-1){q=k;s=17}}}}}else{f=20360;m=20368;q=1;r=0;s=17}if((s|0)==17){g=c[((c[(b&p)+4>>2]|0)&p)+4>>2]|0;a:do if((g&1|0)!=0&(i|0)>0){j=(q|0)>0;do{if(j)k=0;else{s=24;break a}while(1){l=d[(f+k&n)>>0]|0;if((i|0)>=(l|0)?(Zv(h,c[(m+(k<<2)&p)>>2]|0,l)|0)==0:0)break;k=k+1|0;if((k|0)>=(q|0)){s=24;break a}}h=h+l|0;i=i-l|0}while((i|0)>0)}else s=24;while(0);b:do if((s|0)==24)if((g&2|0)!=0&(i|0)>0){l=(q|0)>0;do{if(l)j=0;else break b;while(1){k=d[(f+j&n)>>0]|0;if((i|0)>=(k|0)?(t=i-k|0,(Zv(h+t|0,c[(m+(j<<2)&p)>>2]|0,k)|0)==0):0){i=t;break}j=j+1|0;if((j|0)>=(q|0))break b}}while((i|0)>0)}while(0);if(r)Wc(m)}Wg(b,h,i,1,-1)}while(0);return}function aj(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=((c[((c[(a&p)+4>>2]|0)&p)+4>>2]|0)!=0)<<31>>31;i=c[((c[((c[(a&p)+12>>2]|0)&p)+4>>2]|0)+(((c[(a&p)+16>>2]|0)+-1|0)*20|0)&p)+16>>2]|0;f=c[(d&p)>>2]|0;a:do if(!(-1431655766>>>((e[(f&o)+8>>1]|0)&31)&1)){if((b|0)>1){h=1;f=0;do{g=c[(d+(h<<2)&p)>>2]|0;if(-1431655766>>>((e[(g&o)+8>>1]|0)&31)&1)break a;g=((hm(c[(d+(f<<2)&p)>>2]|0,g,i)|0)^j|0)>-1;f=g?h:f;h=h+1|0}while((h|0)<(b|0));f=c[(d+(f<<2)&p)>>2]|0}_g(c[(a&p)>>2]|0,f)|0}while(0);return}function bj(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0;i=c[(g&p)>>2]|0;f=c[(d&p)+8>>2]|0;if(!(b[(f&o)+8>>1]&8192))f=lh(d,40)|0;else f=c[(f&p)+16>>2]|0;do if(f){h=(b[(f&o)+8>>1]|0)!=0;if(-1431655766>>>(e[((c[(g&p)>>2]|0)&o)+8>>1]&31)&1){if(!h)break;a[(d&n)+24>>0]=1;break}if(!h){c[(f&p)+32>>2]=c[((c[(d&p)>>2]|0)&p)+32>>2];_g(f,i)|0;break}h=(c[((c[(d&p)+4>>2]|0)&p)+4>>2]|0)!=0;g=hm(f,i,c[((c[((c[(d&p)+12>>2]|0)&p)+4>>2]|0)+(((c[(d&p)+16>>2]|0)+-1|0)*20|0)&p)+16>>2]|0)|0;if(!(h&(g|0)<0)?!((g|0)>0&(h^1)):0){a[(d&n)+24>>0]=1;break}_g(f,i)|0}while(0);return}function cj(a){a=a|0;var d=0,e=0,f=0;d=c[(a&p)+8>>2]|0;if(!(b[(d&o)+8>>1]&8192))d=lh(a,0)|0;else d=c[(d&p)+16>>2]|0;do if(d){e=d+8|0;if(!((b[(e&o)>>1]|0)!=0?(_g(c[(a&p)>>2]|0,d)|0,(b[(e&o)>>1]&9312)!=0):0))f=7;if((f|0)==7?(c[(d&p)+24>>2]|0)==0:0)break;Qg(d)}while(0);return}function dj(a,b,f){a=a|0;b=b|0;f=f|0;b=d[((e[((c[(f&p)>>2]|0)&o)+8>>1]|0)&31&n)+10064>>0]|0;if((b|0)==3)b=20328;else if((b|0)==4)b=20344;else if((b|0)==2)b=20336;else if((b|0)==1)b=20320;else b=20352;Wg(a,b,-1,1,0);return}function ej(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;g=c[(h&p)>>2]|0;h=d[((e[(g&o)+8>>1]|0)&31&n)+10064>>0]|0;do if((h|0)==3){i=Sg(g,1)|0;if(i){g=a[(i&n)>>0]|0;if(!(g<<24>>24)){j=0;i=0}else{h=g;g=0;do{g=g+1|0;k=i+1|0;if((h&255)>191){j=i;i=k;while(1){h=a[(i&n)>>0]|0;if((h&-64)<<24>>24==-128){h=i;i=j+2|0;j=h}else break}}else{h=a[(k&n)>>0]|0;i=k}}while(h<<24>>24!=0);j=g;i=((g|0)<0)<<31>>31}g=c[(f&p)>>2]|0;h=g+8|0;if(!(b[(h&o)>>1]&9312)){c[(g&p)>>2]=j;c[(g&p)+4>>2]=i;b[(h&o)>>1]=4;break}else{Zg(g,j,i);break}}}else if((h|0)==2|(h|0)==1|(h|0)==4){j=Tg(g,1)|0;i=c[(f&p)>>2]|0;g=((j|0)<0)<<31>>31;h=i+8|0;if(!(b[(h&o)>>1]&9312)){c[(i&p)>>2]=j;c[(i&p)+4>>2]=g;b[(h&o)>>1]=4;break}else{Zg(i,j,g);break}}else{h=c[(f&p)>>2]|0;g=h+8|0;if(!(b[(g&o)>>1]&9312)){b[(g&o)>>1]=1;break}else{vg(h);break}}while(0);return}function fj(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=c[(f&p)>>2]|0;h=b[(g&o)+8>>1]|0;i=f+4|0;e=b[((c[(i&p)>>2]|0)&o)+8>>1]|0;do if(!((-1431655766>>>(e&31)|-1431655766>>>(h&31))&1)){j=Tg(g,1)|0;l=Tg(c[(i&p)>>2]|0,1)|0;f=c[(f&p)>>2]|0;if(!((e|h)&15)){e=pd(f)|0;f=0;k=pd(c[(i&p)>>2]|0)|0}else{e=Sg(f,1)|0;f=1;k=Sg(c[(i&p)>>2]|0,1)|0}a:do if((l|0)>(j|0)){e=1;g=1}else{g=1;h=j;while(1){if(!(Zv(e,k,l)|0)){e=0;break a}g=g+1|0;i=(f|0)==0;do{h=h+-1|0;e=e+1|0;if(i){f=0;break}}while((a[(e&n)>>0]&-64)<<24>>24==-128);if((l|0)>(h|0)){e=1;break}}}while(0);h=c[(d&p)>>2]|0;f=e?0:g;e=e?0:((g|0)<0)<<31>>31;g=h+8|0;if(!(b[(g&o)>>1]&9312)){c[(h&p)>>2]=f;c[(h&p)+4>>2]=e;b[(g&o)>>1]=4;break}else{Zg(h,f,e);break}}while(0);return}function gj(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0;h=c[(g&p)+4>>2]|0;do if(!(-1431655766>>>((e[(h&o)+8>>1]|0)&31)&1)){r=(f|0)==3;if(r?(-1431655766>>>((e[((c[(g&p)+8>>2]|0)&o)+8>>1]|0)&31)&1|0)!=0:0)break;t=b[((c[(g&p)>>2]|0)&o)+8>>1]|0;k=Vg(h)|0;l=((k|0)<0)<<31>>31;t=(t&15)==0;i=c[(g&p)>>2]|0;if(t){i=Tg(i,1)|0;j=pd(c[(g&p)>>2]|0)|0;if(!j)break;else s=i}else{j=Sg(i,1)|0;if(!j)break;if((k|0)<0?(m=a[(j&n)>>0]|0,m<<24>>24!=0):0){i=0;h=j;do{q=h+1|0;if((m&255)>191){f=h;h=q;while(1){m=a[(h&n)>>0]|0;if((m&-64)<<24>>24==-128){s=h;h=f+2|0;f=s}else break}}else{m=a[(q&n)>>0]|0;h=q}i=i+1|0}while(m<<24>>24!=0);s=i}else s=0}if(r){q=Vg(c[(g&p)+8>>2]|0)|0;f=((q|0)<0)<<31>>31;r=(q|0)<0;h=dw(0,0,q|0,f|0)|0;h=r?h:q;f=r?G:f;q=q>>>31}else{f=c[((c[((c[(d&p)>>2]|0)&p)+32>>2]|0)&p)+88>>2]|0;h=f;f=((f|0)<0)<<31>>31;q=0}do if((k|0)<0){k=jw(s|0,((s|0)<0)<<31>>31|0,k|0,l|0)|0;l=G;if((l|0)<0){h=jw(h|0,f|0,k|0,l|0)|0;f=G;r=(f|0)<0;k=0;l=0;h=r?0:h;f=r?0:f}}else if((k|0)>0){k=jw(k|0,l|0,-1,-1)|0;l=G;break}else{r=((f|0)>0|(f|0)==0&h>>>0>0)<<31>>31;h=jw(r|0,((r|0)<0)<<31>>31|0,h|0,f|0)|0;f=G;break}while(0);if(!q){m=k;q=l}else{m=dw(k|0,l|0,h|0,f|0)|0;q=G;r=(q|0)<0;m=r?0:m;q=r?0:q;h=r?k:h;f=r?l:f}if(t){r=jw(h|0,f|0,m|0,q|0)|0;l=G;i=((s|0)<0)<<31>>31;if((l|0)>(i|0)|(l|0)==(i|0)&r>>>0>s>>>0){h=dw(s|0,i|0,m|0,q|0)|0;f=G;s=(f|0)<0;h=s?0:h;f=s?0:f}Bd(d,j+m|0,h,f,-1);break}i=a[(j&n)>>0]|0;if(((m|0)!=0|(q|0)!=0)&i<<24>>24!=0)do{l=j+1|0;if((i&255)>191){k=j;j=l;while(1){i=a[(j&n)>>0]|0;if((i&-64)<<24>>24==-128){s=j;j=k+2|0;k=s}else break}}else{i=a[(l&n)>>0]|0;j=l}m=jw(m|0,q|0,-1,-1)|0;q=G}while(((m|0)!=0|(q|0)!=0)&i<<24>>24!=0);if(i<<24>>24!=0&((h|0)!=0|(f|0)!=0)){m=f;f=j;do{k=f+1|0;if((i&255)>191)while(1){i=a[(k&n)>>0]|0;if((i&-64)<<24>>24==-128){s=k;k=f+2|0;f=s}else{f=k;break}}else{i=a[(k&n)>>0]|0;f=k}h=jw(h|0,m|0,-1,-1)|0;m=G}while(i<<24>>24!=0&((h|0)!=0|(m|0)!=0))}else f=j;s=f-j|0;Jd(d,j,s,((s|0)<0)<<31>>31,-1,1)}while(0);return}function hj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+48|0;if((i|0)>=(j|0))fa();h=l;k=l+32|0;g=l+4|0;if((d|0)>0?(f=Sg(c[(e&p)>>2]|0,1)|0,(f|0)!=0):0){c[(k&p)>>2]=d+-1;c[(k&p)+4>>2]=0;c[(k&p)+8>>2]=e+4;c[(g&p)>>2]=0;c[(g&p)+4>>2]=0;c[(g&p)+8>>2]=0;c[(g&p)+12>>2]=0;c[(g&p)+16>>2]=0;c[(g&p)+20>>2]=1e9;a[(g&n)+24>>0]=1;a[(g&n)+25>>0]=0;c[(g&p)>>2]=c[((c[(b&p)>>2]|0)&p)+32>>2];c[(h&p)>>2]=k;En(g,2,f,h);f=c[(g&p)+12>>2]|0;Wg(b,tg(g)|0,f,1,75)}i=l;return}function ij(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();e=h;f=Sg(c[(f&p)>>2]|0,1)|0;c[(e&p)>>2]=f;do if((f|0)!=0?(a[(f&n)>>0]|0)!=0:0){g=Mn(e)|0;e=c[(d&p)>>2]|0;d=((g|0)<0)<<31>>31;f=e+8|0;if(!(b[(f&o)>>1]&9312)){c[(e&p)>>2]=g;c[(e&p)+4>>2]=d;b[(f&o)>>1]=4;break}else{Zg(e,g,d);break}}while(0);i=h;return}function jj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=Tc(d<<2|1)|0;if(!i)Rd(b);else{if((d|0)>0){h=0;f=i;do{g=Vg(c[(e+(h<<2)&p)>>2]|0)|0;j=G;g=j>>>0>0|(j|0)==0&g>>>0>1114111?65533:g&2097151;do if(g>>>0>=128){if(g>>>0<2048){a[(f&n)>>0]=g>>>6&31|192;a[(f&n)+1>>0]=g&63|128;f=f+2|0;break}if(g>>>0<65536){a[(f&n)>>0]=g>>>12&15|224;a[(f&n)+1>>0]=g>>>6&63|128;a[(f&n)+2>>0]=g&63|128;f=f+3|0;break}else{a[(f&n)>>0]=g>>>18|240;a[(f&n)+1>>0]=g>>>12&63|128;a[(f&n)+2>>0]=g>>>6&63|128;a[(f&n)+3>>0]=g&63|128;f=f+4|0;break}}else{a[(f&n)>>0]=g;f=f+1|0}while(0);h=h+1|0}while((h|0)!=(d|0))}else f=i;f=f-i|0;Jd(b,i,f,((f|0)<0)<<31>>31,1,1)}return}function kj(f,g,h){f=f|0;g=g|0;h=h|0;var i=0.0,j=0,k=0;g=c[(h&p)>>2]|0;h=d[((e[(g&o)+8>>1]|0)&31&n)+10064>>0]|0;a:do if((h|0)==1){g=Vg(g)|0;j=G;do if((j|0)<0)if((g|0)==0&(j|0)==-2147483648){c[(f&p)+20>>2]=1;a[(f&n)+25>>0]=1;Xg(c[(f&p)>>2]|0,20248,-1,1,-1)|0;break a}else{g=dw(0,0,g|0,j|0)|0;k=G;break}else k=j;while(0);h=c[(f&p)>>2]|0;j=h+8|0;if(!(b[(j&o)>>1]&9312)){c[(h&p)>>2]=g;c[(h&p)+4>>2]=k;b[(j&o)>>1]=4;break}else{Zg(h,g,k);break}}else if((h|0)==5){h=c[(f&p)>>2]|0;g=h+8|0;if(!(b[(g&o)>>1]&9312)){b[(g&o)>>1]=1;break}else{vg(h);break}}else{i=+Ug(g);if(i<0.0)i=-i;Yg(c[(f&p)>>2]|0,i)}while(0);return}function lj(b,d,f){b=b|0;d=d|0;f=f|0;var g=0.0,l=0,m=0,r=0,s=0,t=0,u=0;u=i;i=i+32|0;if((i|0)>=(j|0))fa();s=u+8|0;t=u;if((d|0)==2){d=c[(f&p)+4>>2]|0;if(!(-1431655766>>>(e[(d&o)+8>>1]&31)&1)){r=Vg(d)|0;r=(r|0)>30?30:r;r=(r|0)<0?0:r;m=4}}else{r=0;m=4}a:do if((m|0)==4?(l=c[(f&p)>>2]|0,(-1431655766>>>(e[(l&o)+8>>1]&31)&1|0)==0):0){g=+Ug(l);h[(t&q)>>3]=g;d=(r|0)==0;do if(d&g>=0.0&g<9223372036854775808.0){g=g+.5;g=+(~~g>>>0>>>0)+4294967296.0*+((+R(g)>=1.0?(g>0.0?~~+da(+Q(g/4294967296.0),4294967295.0)>>>0:~~+ba((g-+(~~g>>>0))/4294967296.0)>>>0):0)|0);h[(t&q)>>3]=g}else{if(d&g<0.0&g>-9223372036854775808.0){g=.5-g;g=-(+(~~g>>>0>>>0)+4294967296.0*+((+R(g)>=1.0?(g>0.0?~~+da(+Q(g/4294967296.0),4294967295.0)>>>0:~~+ba((g-+(~~g>>>0))/4294967296.0)>>>0):0)|0));h[(t&q)>>3]=g;break}c[(s&p)>>2]=r;d=s+4|0;h[(k&q)>>3]=g;c[(d&p)>>2]=c[(k&p)>>2];c[(d&p)+4>>2]=c[(k&p)+4>>2];d=_c(20312,s)|0;if(!d){Rd(b);break a}else l=d;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;Tl(d,t,l-d&1073741823,1)|0;Wc(d);g=+h[(t&q)>>3]}while(0);Yg(c[(b&p)>>2]|0,g)}while(0);i=u;return}function mj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=Sg(c[(f&p)>>2]|0,1)|0;e=Tg(c[(f&p)>>2]|0,1)|0;if((g|0)!=0?(h=jw(e|0,((e|0)<0)<<31>>31|0,1,0)|0,h=ko(b,h,G)|0,(h|0)!=0):0){if((e|0)>0){f=0;do{i=d[(g+f&n)>>0]|0;a[(h+f&n)>>0]=((d[(i&n)+10368>>0]|0|223)^32)&i;f=f+1|0}while((f|0)!=(e|0))}Wg(b,h,e,1,1)}return}function nj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=Sg(c[(f&p)>>2]|0,1)|0;e=Tg(c[(f&p)>>2]|0,1)|0;if((g|0)!=0?(h=jw(e|0,((e|0)<0)<<31>>31|0,1,0)|0,h=ko(b,h,G)|0,(h|0)!=0):0){if((e|0)>0){f=0;do{a[(h+f&n)>>0]=a[((d[(g+f&n)>>0]|0)&n)+9328>>0]|0;f=f+1|0}while((f|0)!=(e|0))}Wg(b,h,e,1,1)}return}function oj(a,b,c){a=a|0;b=b|0;c=c|0;Wg(a,8632,-1,1,0);return}function pj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;e=pd(c[(f&p)>>2]|0)|0;i=Tg(c[(f&p)>>2]|0,1)|0;j=iw(i|0,((i|0)<0)<<31>>31|0,1)|0;j=ko(b,j|1,G)|0;if(j){if((i|0)>0){g=i<<1;h=0;f=j;while(1){k=d[(e&n)>>0]|0;a[(f&n)>>0]=a[(k>>>4&n)+20288>>0]|0;a[(f&n)+1>>0]=a[(k&15&n)+20288>>0]|0;h=h+1|0;if((h|0)==(i|0))break;else{e=e+1|0;f=f+2|0}}f=j+g|0}else f=j;a[(f&n)>>0]=0;Wg(b,j,i<<1,1,1)}return}function qj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();d=h;cd(8,d);f=d;e=c[(f&p)>>2]|0;f=c[(f&p)+4>>2]|0;if((f|0)<0){g=dw(0,0,e|0,f&2147483647|0)|0;f=G;c[(d&p)>>2]=g;c[(d&p)+4>>2]=f}else g=e;e=c[(a&p)>>2]|0;d=e+8|0;if(!(b[(d&o)>>1]&9312)){c[(e&p)>>2]=g;c[(e&p)+4>>2]=f;b[(d&o)>>1]=4}else Zg(e,g,f);i=h;return}function rj(a,b,d){a=a|0;b=b|0;d=d|0;d=Vg(c[(d&p)>>2]|0)|0;d=(d|0)<1?1:d;b=ko(a,d,((d|0)<0)<<31>>31)|0;if(b){cd(d,b);Wg(a,b,d,0,1)}return}function sj(a,b,d){a=a|0;b=b|0;d=d|0;if(hm(c[(d&p)>>2]|0,c[(d&p)+4>>2]|0,c[((c[((c[(a&p)+12>>2]|0)&p)+4>>2]|0)+(((c[(a&p)+16>>2]|0)+-1|0)*20|0)&p)+16>>2]|0)|0)_g(c[(a&p)>>2]|0,c[(d&p)>>2]|0)|0;return}function tj(a,b,c){a=a|0;b=b|0;c=c|0;Wg(a,10768,-1,1,0);return}function uj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=i;i=i+16|0;if((i|0)>=(j|0))fa();a=b;e=Vg(c[(d&p)>>2]|0)|0;c[(a&p)>>2]=Sg(c[(d&p)+4>>2]|0,1)|0;bd(e,10344,a);i=b;return}function vj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=Sg(c[(e&p)>>2]|0,1)|0;do if(d){f=Ec(d)|0;e=c[(a&p)>>2]|0;d=((f|0)<0)<<31>>31;a=e+8|0;if(!(b[(a&o)>>1]&9312)){c[(e&p)>>2]=f;c[(e&p)+4>>2]=d;b[(a&o)>>1]=4;break}else{Zg(e,f,d);break}}while(0);return}function wj(a,b,d){a=a|0;b=b|0;d=d|0;b=Vg(c[(d&p)>>2]|0)|0;if(b>>>0<4)b=c[(b<<2&p)+8648>>2]|0;else b=0;Wg(a,b,-1,1,0);return}function xj(b,f,g){b=b|0;f=f|0;g=g|0;var l=0,m=0.0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+80|0;if((i|0)>=(j|0))fa();f=w+8|0;l=w;t=w+16|0;s=c[(g&p)>>2]|0;r=d[(e[(s&o)+8>>1]&31&n)+10064>>0]|0;if((r|0)==4){s=pd(s)|0;f=Tg(c[(g&p)>>2]|0,1)|0;l=iw(f|0,((f|0)<0)<<31>>31|0,1)|0;l=jw(l|0,G|0,4,0)|0;l=ko(b,l,G)|0;if(l){if((f|0)>0){r=0;do{g=s+r|0;t=r<<1;a[(l+t&n)+2>>0]=a[((d[(g&n)>>0]|0)>>>4&n)+20288>>0]|0;a[(l+t&n)+3>>0]=a[(d[(g&n)>>0]&15&n)+20288>>0]|0;r=r+1|0}while((r|0)!=(f|0))}f=f<<1;a[(l+f&n)+2>>0]=39;a[(l+f&n)+3>>0]=0;a[(l&n)>>0]=88;a[(l&n)+1>>0]=39;Wg(b,l,-1,1,-1);Wc(l)}}else if((r|0)==1)_g(c[(b&p)>>2]|0,s)|0;else if((r|0)==2){m=+Ug(s);h[(k&q)>>3]=m;c[(f&p)>>2]=c[(k&p)>>2];c[(f&p)+4>>2]=c[(k&p)+4>>2];ad(50,t,20272,f)|0;Tl(t,l,20,1)|0;if(m!=+h[(l&q)>>3]){h[(k&q)>>3]=m;c[(f&p)>>2]=c[(k&p)>>2];c[(f&p)+4>>2]=c[(k&p)+4>>2];ad(50,t,20280,f)|0}Wg(b,t,-1,1,-1)}else if((r|0)==3){v=Sg(s,1)|0;if(v){f=0;l=0;r=0;while(1){s=a[(v+r&n)>>0]|0;if(s<<24>>24==39){s=jw(f|0,l|0,1,0)|0;l=G}else if(!(s<<24>>24)){s=l;break}else s=f;f=s;r=r+1|0}u=jw(f|0,s|0,3,0)|0;u=jw(u|0,G|0,r|0,((r|0)<0)<<31>>31|0)|0;u=ko(b,u,G)|0;if(u){a[(u&n)>>0]=39;l=a[(v&n)>>0]|0;f=u+1|0;if(!(l<<24>>24))r=2;else{t=v;r=2;s=0;g=1;do{a[(f&n)>>0]=l;if((a[(t&n)>>0]|0)==39){a[(u+r&n)>>0]=39;g=g+2|0}else g=r;s=s+1|0;t=v+s|0;l=a[(t&n)>>0]|0;r=g+1|0;f=u+g|0}while(l<<24>>24!=0)}a[(f&n)>>0]=39;a[(u+r&n)>>0]=0;Wg(b,u,r,1,1)}}}else Wg(b,20304,4,1,0);i=w;return}function yj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[(a&p)>>2]|0;f=(c[(a&p)+32>>2]|0)+32|0;d=c[(f&p)>>2]|0;f=c[(f&p)+4>>2]|0;e=a+8|0;if(!(b[(e&o)>>1]&9312)){c[(a&p)>>2]=d;c[(a&p)+4>>2]=f;b[(e&o)>>1]=4}else Zg(a,d,f);return}function zj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[(a&p)>>2]|0;e=c[((c[(a&p)+32>>2]|0)&p)+80>>2]|0;d=((e|0)<0)<<31>>31;f=a+8|0;if(!(b[(f&o)>>1]&9312)){c[(a&p)>>2]=e;c[(a&p)+4>>2]=d;b[(f&o)>>1]=4}else Zg(a,e,d);return}function Aj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[(a&p)>>2]|0;e=c[((c[(a&p)+32>>2]|0)&p)+84>>2]|0;d=((e|0)<0)<<31>>31;f=a+8|0;if(!(b[(f&o)>>1]&9312)){c[(a&p)>>2]=e;c[(a&p)+4>>2]=d;b[(f&o)>>1]=4}else Zg(a,e,d);return}function Bj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;v=Sg(c[(e&p)>>2]|0,1)|0;a:do if((v|0)!=0?(w=Tg(c[(e&p)>>2]|0,1)|0,g=e+4|0,u=Sg(c[(g&p)>>2]|0,1)|0,(u|0)!=0):0){if(!(a[(u&n)>>0]|0)){_g(c[(b&p)>>2]|0,c[(e&p)>>2]|0)|0;break}s=Tg(c[(g&p)>>2]|0,1)|0;g=e+8|0;r=Sg(c[(g&p)>>2]|0,1)|0;if((r|0)!=0?(t=Tg(c[(g&p)>>2]|0,1)|0,h=w+1|0,i=((h|0)<0)<<31>>31,f=ko(b,h,i)|0,(f|0)!=0):0){l=w-s|0;b:do if((l|0)>=0){m=t-s|0;o=((m|0)<0)<<31>>31;q=s+-1|0;e=0;k=0;while(1){g=v+e|0;d=a[(g&n)>>0]|0;if(d<<24>>24==(a[(u&n)>>0]|0)?(Zv(g,u,s)|0)==0:0){d=c[(b&p)>>2]|0;j=c[(d&p)+32>>2]|0;h=jw(h|0,i|0,m|0,o|0)|0;i=G;g=jw(h|0,i|0,-1,-1)|0;y=G;j=c[(j&p)+88>>2]|0;x=((j|0)<0)<<31>>31;if((y|0)>(x|0)|(y|0)==(x|0)&g>>>0>j>>>0){g=13;break}j=Xc(f,h)|0;if(!j){g=15;break}kw(j+k|0,r|0,t|0)|0;g=q+e|0;d=k+t|0;f=j}else{a[(f+k&n)>>0]=d;g=e;d=k+1|0}e=g+1|0;if((g|0)<(l|0))k=d;else break b}if((g|0)==13){c[(b&p)+20>>2]=18;a[(b&n)+25>>0]=1;Xg(d,10096,-1,1,0)|0;Wc(f);break a}else if((g|0)==15){Rd(b);Wc(f);break a}}else{e=0;d=0}while(0);m=w-e|0;kw(f+d|0,v+e|0,m|0)|0;m=d+m|0;a[(f+m&n)>>0]=0;Wg(b,f,m,1,1)}}while(0);return}function Cj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[((c[(b&p)>>2]|0)&p)+32>>2]|0;d=Vg(c[(e&p)>>2]|0)|0;g=G;e=c[(f&p)+88>>2]|0;f=((e|0)<0)<<31>>31;if((g|0)>(f|0)|(g|0)==(f|0)&d>>>0>e>>>0){c[(b&p)+20>>2]=18;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,10096,-1,1,0)|0}else $g(c[(b&p)>>2]|0,d);return}function Dj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;f=Sg(c[(e&p)>>2]|0,1)|0;g=c[((c[(b&p)>>2]|0)&p)+32>>2]|0;c[(h&p)>>2]=0;if((d|0)==2)d=Sg(c[(e&p)+4>>2]|0,1)|0;else d=0;if((f|0)!=0?(Te(g,f,d,h)|0)!=0:0){d=c[(h&p)>>2]|0;c[(b&p)+20>>2]=1;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,d,-1,1,-1)|0;Wc(c[(h&p)>>2]|0)}i=k;return}function Ej(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0.0,m=0,r=0,s=0;e=c[(d&p)+8>>2]|0;if(!(b[(e&o)+8>>1]&8192))g=lh(d,32)|0;else g=c[(e&p)+16>>2]|0;d=He(c[(f&p)>>2]|0)|0;do if((g|0)!=0&(d|0)!=5){e=g+16|0;i=e;i=jw(c[(i&p)>>2]|0,c[(i&p)+4>>2]|0,1,0)|0;c[(e&p)>>2]=i;c[(e&p)+4>>2]=G;e=c[(f&p)>>2]|0;if((d|0)!=1){l=+Ug(e);h[(g&q)>>3]=l+ +h[(g&q)>>3];a[(g&n)+25>>0]=1;break}i=Vg(e)|0;j=G;h[(g&q)>>3]=+h[(g&q)>>3]+(+(i>>>0)+4294967296.0*+(j|0));k=g+24|0;if(!((a[(k&n)>>0]|a[(g&n)+25>>0])<<24>>24)){g=g+8|0;d=g;f=c[(d&p)>>2]|0;d=c[(d&p)+4>>2]|0;if((j|0)>-1|(j|0)==-1&i>>>0>4294967295){e=dw(-1,2147483647,f|0,d|0)|0;m=G;if(((d|0)>0|(d|0)==0&f>>>0>0)&((m|0)<(j|0)|(m|0)==(j|0)&e>>>0>>0))e=12;else e=11}else if((d|0)<0?(m=dw(1,-2147483648,f|0,d|0)|0,s=G,e=jw(i|0,j|0,1,0)|0,r=G,(s|0)>(r|0)|(s|0)==(r|0)&m>>>0>e>>>0):0)e=12;else e=11;if((e|0)==11){d=jw(f|0,d|0,i|0,j|0)|0;e=g;c[(e&p)>>2]=d;c[(e&p)+4>>2]=G;break}else if((e|0)==12){a[(k&n)>>0]=1;break}}}while(0);return}function Fj(d){d=d|0;var e=0,f=0,g=0;e=c[(d&p)+8>>2]|0;if(!(b[(e&o)+8>>1]&8192))e=lh(d,0)|0;else e=c[(e&p)+16>>2]|0;do if((e|0)!=0?(f=e+16|0,g=c[(f&p)+4>>2]|0,(g|0)>0|(g|0)==0&(c[(f&p)>>2]|0)>>>0>0):0){if(a[(e&n)+24>>0]|0){c[(d&p)+20>>2]=1;a[(d&n)+25>>0]=1;Xg(c[(d&p)>>2]|0,20248,-1,1,-1)|0;break}if(a[(e&n)+25>>0]|0){Yg(c[(d&p)>>2]|0,+h[(e&q)>>3]);break}g=e+8|0;f=c[(g&p)>>2]|0;g=c[(g&p)+4>>2]|0;e=c[(d&p)>>2]|0;d=e+8|0;if(!(b[(d&o)>>1]&9312)){c[(e&p)>>2]=f;c[(e&p)+4>>2]=g;b[(d&o)>>1]=4;break}else{Zg(e,f,g);break}}while(0);return}function Gj(a){a=a|0;var d=0,e=0.0;d=c[(a&p)+8>>2]|0;if(!(b[(d&o)+8>>1]&8192))d=lh(a,0)|0;else d=c[(d&p)+16>>2]|0;if(!d)e=0.0;else e=+h[(d&q)>>3];Yg(c[(a&p)>>2]|0,e);return}function Hj(a){a=a|0;var d=0,e=0,f=0;d=c[(a&p)+8>>2]|0;if(!(b[(d&o)+8>>1]&8192))d=lh(a,0)|0;else d=c[(d&p)+16>>2]|0;if((d|0)!=0?(f=d+16|0,e=c[(f&p)>>2]|0,f=c[(f&p)+4>>2]|0,(f|0)>0|(f|0)==0&e>>>0>0):0)Yg(c[(a&p)>>2]|0,+h[(d&q)>>3]/(+(e>>>0)+4294967296.0*+(f|0)));return}function Ij(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;g=c[(a&p)+8>>2]|0;if(!(b[(g&o)+8>>1]&8192))g=lh(a,8)|0;else g=c[(g&p)+16>>2]|0;if(!d){if(g)h=7}else if((g|0)!=0?(1431655765>>>((e[((c[(f&p)>>2]|0)&o)+8>>1]|0)&31)&1|0)!=0:0)h=7;if((h|0)==7){a=g;a=jw(c[(a&p)>>2]|0,c[(a&p)+4>>2]|0,1,0)|0;c[(g&p)>>2]=a;c[(g&p)+4>>2]=G}return}function Jj(a){a=a|0;var d=0,e=0,f=0;d=c[(a&p)+8>>2]|0;if(!(b[(d&o)+8>>1]&8192))d=lh(a,0)|0;else d=c[(d&p)+16>>2]|0;if(!d){e=0;f=0}else{f=d;e=c[(f&p)>>2]|0;f=c[(f&p)+4>>2]|0}d=c[(a&p)>>2]|0;a=d+8|0;if(!(b[(a&o)>>1]&9312)){c[(d&p)>>2]=e;c[(d&p)+4>>2]=f;b[(a&o)>>1]=4}else Zg(d,e,f);return}function Kj(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0;if(!(-1431655766>>>(e[((c[(g&p)>>2]|0)&o)+8>>1]&31)&1)){h=c[(d&p)+8>>2]|0;if(!(b[(h&o)+8>>1]&8192))i=lh(d,28)|0;else i=c[(h&p)+16>>2]|0;if(i){d=c[((c[(d&p)>>2]|0)&p)+32>>2]|0;j=i+24|0;h=(a[(j&n)>>0]|0)==0;a[(j&n)>>0]=2;c[(i&p)+20>>2]=c[(d&p)+88>>2];do if(!h){if((f|0)==2){f=g+4|0;h=Sg(c[(f&p)>>2]|0,1)|0;f=Tg(c[(f&p)>>2]|0,1)|0;if(!f)break}else{f=1;h=20240}Sk(i,h,f)}while(0);h=Sg(c[(g&p)>>2]|0,1)|0;f=Tg(c[(g&p)>>2]|0,1)|0;if(h)Sk(i,h,f)}}return}function Lj(d){d=d|0;var e=0,f=0;e=c[(d&p)+8>>2]|0;if(!(b[(e&o)+8>>1]&8192))e=lh(d,0)|0;else e=c[(e&p)+16>>2]|0;do if(e){f=a[(e&n)+25>>0]|0;if(f<<24>>24==1){Rd(d);break}else if(f<<24>>24==2){c[(d&p)+20>>2]=18;a[(d&n)+25>>0]=1;Xg(c[(d&p)>>2]|0,10096,-1,1,0)|0;break}else{Wg(d,tg(e)|0,-1,1,1);break}}while(0);return}function Mj(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();h=l;m=c[((c[(d&p)>>2]|0)&p)+32>>2]|0;g=Sg(c[(f&p)>>2]|0,1)|0;k=Sg(c[(f&p)+4>>2]|0,1)|0;q=Tg(c[(f&p)>>2]|0,1)|0;a:do if((q|0)<=(c[(m&p)+120>>2]|0)){do if((e|0)==3){f=Sg(c[(f&p)+8>>2]|0,1)|0;c[(h&p)>>2]=f;if(!f)break a;if((Nn(f,-1)|0)==1){f=Mn(h)|0;break}else{c[(d&p)+20>>2]=1;a[(d&n)+25>>0]=1;Xg(c[(d&p)>>2]|0,20192,-1,1,-1)|0;break a}}else f=0;while(0);if((k|0)!=0&(g|0)!=0){e=Gh(g,k,c[((c[(d&p)+4>>2]|0)&p)+4>>2]|0,f)|0;g=c[(d&p)>>2]|0;h=((e|0)<0)<<31>>31;f=g+8|0;if(!(b[(f&o)>>1]&9312)){c[(g&p)>>2]=e;c[(g&p)+4>>2]=h;b[(f&o)>>1]=4;break}else{Zg(g,e,h);break}}}else{c[(d&p)+20>>2]=1;a[(d&n)+25>>0]=1;Xg(c[(d&p)>>2]|0,20152,-1,1,-1)|0}while(0);i=l;return}function Nj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0;r=i;i=i+32|0;if((i|0)>=(j|0))fa();q=r;k=r+16|0;o=Sg(c[(e&p)>>2]|0,1)|0;l=Sg(c[(e&p)+4>>2]|0,1)|0;m=c[((c[(b&p)>>2]|0)&p)+32>>2]|0;a:do if((o|0)!=0?(a[(o&n)>>0]|0)!=0:0){d=0;e=o;b:while(1){g=d;f=e;while(1){f=f+g|0;h=Cn(f,k)|0;g=c[(k&p)>>2]|0;if((g|0)==22|(g|0)==125)break b;else if((g|0)==151)g=h;else{e=f;d=h;break}}if(!(a[(e&n)>>0]|0))break a}c[(q&p)>>2]=e-o;c[(q&p)+4>>2]=o;c[(q&p)+8>>2]=l;c[(q&p)+12>>2]=e+d;Wg(b,uh(m,19464,q)|0,-1,1,75)}while(0);i=r;return}function Oj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0;t=i;i=i+32|0;if((i|0)>=(j|0))fa();s=t;m=t+16|0;r=Sg(c[(e&p)>>2]|0,1)|0;o=Sg(c[(e&p)+4>>2]|0,1)|0;q=c[((c[(b&p)>>2]|0)&p)+32>>2]|0;a:do if((r|0)!=0?(a[(r&n)>>0]|0)!=0:0){l=3;d=0;e=r;while(1){g=d;f=e;do{f=f+g|0;g=Cn(f,m)|0;h=c[(m&p)>>2]|0}while((h|0)==151);k=g;g=(h|0)==122|(h|0)==107?0:l+1|0;if((g|0)==2)if((h|0)==5|(h|0)==46|(h|0)==137)break;else e=2;else e=g;if(!(a[(f&n)>>0]|0))break a;else{l=e;d=k;e=f}}c[(s&p)>>2]=e-r;c[(s&p)+4>>2]=r;c[(s&p)+8>>2]=o;c[(s&p)+12>>2]=e+d;Wg(b,uh(q,19464,s)|0,-1,1,75)}while(0);i=t;return}function Pj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+32|0;if((i|0)>=(j|0))fa();s=t;q=t+16|0;r=c[((c[(b&p)>>2]|0)&p)+32>>2]|0;f=Sg(c[(e&p)>>2]|0,1)|0;o=Sg(c[(e&p)+4>>2]|0,1)|0;m=Sg(c[(e&p)+8>>2]|0,1)|0;if(!((f|0)==0|(o|0)==0)){a:do if(!(a[(f&n)>>0]|0))d=0;else{g=f;d=0;do{e=Cn(g,q)|0;if((c[(q&p)>>2]|0)==105){k=g;while(1){g=k+e|0;h=Cn(g,q)|0;if((c[(q&p)>>2]|0)==151){e=h;k=g}else break}if(!g)break a;l=jw(h|0,((h|0)<0)<<31>>31|0,1,0)|0;l=mh(r,l,G)|0;if(!l)break a;kw(l|0,g|0,h|0)|0;a[(l+h&n)>>0]=0;lo(l);if(!(dd(o,l)|0)){c[(s&p)>>2]=(d|0)!=0?d:10360;c[(s&p)+4>>2]=g-f;c[(s&p)+8>>2]=f;c[(s&p)+12>>2]=m;u=uh(r,19440,s)|0;mg(r,d);f=k+(h+e)|0;d=u}mg(r,l);e=h}g=g+e|0}while((a[(g&n)>>0]|0)!=0)}while(0);c[(s&p)>>2]=(d|0)!=0?d:10360;c[(s&p)+4>>2]=f;Wg(b,uh(r,19456,s)|0,-1,1,75);mg(r,d)}i=t;return}function Qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+48|0;if((i|0)>=(j|0))fa();e=f;if(!(mo(a,b,d,e)|0)){no(e);b=e;Yg(c[(a&p)>>2]|0,(+((c[(b&p)>>2]|0)>>>0)+4294967296.0*+(c[(b&p)+4>>2]|0))/864.0e5)}i=f;return}function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+160|0;if((i|0)>=(j|0))fa();e=h+48|0;f=h;g=h+60|0;if(!(mo(a,b,d,f)|0)){oo(f);d=c[(f&p)+12>>2]|0;b=c[(f&p)+16>>2]|0;c[(e&p)>>2]=c[(f&p)+8>>2];c[(e&p)+4>>2]=d;c[(e&p)+8>>2]=b;ad(100,g,20136,e)|0;Wg(a,g,-1,1,-1)}i=h;return}function Sj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,k=0;k=i;i=i+160|0;if((i|0)>=(j|0))fa();e=k+48|0;f=k;g=k+60|0;if(!(mo(a,b,d,f)|0)){po(f);d=c[(f&p)+24>>2]|0;b=~~+h[(f&q)+32>>3];c[(e&p)>>2]=c[(f&p)+20>>2];c[(e&p)+4>>2]=d;c[(e&p)+8>>2]=b;ad(100,g,20120,e)|0;Wg(a,g,-1,1,-1)}i=k;return}function Tj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,k=0,l=0,m=0,n=0;k=i;i=i+176|0;if((i|0)>=(j|0))fa();e=k+48|0;f=k;g=k+72|0;if(!(mo(a,b,d,f)|0)){oo(f);po(f);n=c[(f&p)+12>>2]|0;m=c[(f&p)+16>>2]|0;l=c[(f&p)+20>>2]|0;d=c[(f&p)+24>>2]|0;b=~~+h[(f&q)+32>>3];c[(e&p)>>2]=c[(f&p)+8>>2];c[(e&p)+4>>2]=n;c[(e&p)+8>>2]=m;c[(e&p)+12>>2]=l;c[(e&p)+16>>2]=d;c[(e&p)+20>>2]=b;ad(100,g,20088,e)|0;Wg(a,g,-1,1,-1)}i=k;return}function Uj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,l=0,m=0,o=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,H=0,I=0.0;F=i;i=i+208|0;if((i|0)>=(j|0))fa();B=F+96|0;C=F+48|0;E=F+104|0;D=F;a:do if(((d|0)!=0?(A=Sg(c[(e&p)>>2]|0,1)|0,(A|0)!=0):0)?(mo(b,d+-1|0,e+4|0,C)|0)==0:0){m=c[(b&p)>>2]|0;l=c[(m&p)+32>>2]|0;e=1;d=0;g=0;b:while(1){f=a[(A+g&n)>>0]|0;c:do if(f<<24>>24==37){f=g+1|0;switch(a[(A+f&n)>>0]|0){case 87:case 83:case 77:case 109:case 72:case 100:{e=jw(e|0,d|0,1,0)|0;d=G;break c}case 102:{e=jw(e|0,d|0,8,0)|0;d=G;break c}case 106:{e=jw(e|0,d|0,3,0)|0;d=G;break c}case 89:{e=jw(e|0,d|0,8,0)|0;d=G;break c}case 74:case 115:{e=jw(e|0,d|0,50,0)|0;d=G;break c}case 37:case 119:break c;default:break a}}else if(!(f<<24>>24))break b;else f=g;while(0);e=jw(e|0,d|0,1,0)|0;d=G;g=f+1|0}if(!(d>>>0<0|(d|0)==0&e>>>0<100)){z=c[(l&p)+88>>2]|0;y=((z|0)<0)<<31>>31;if(d>>>0>y>>>0|(d|0)==(y|0)&e>>>0>z>>>0){c[(b&p)+20>>2]=18;a[(b&n)+25>>0]=1;Xg(m,10096,-1,1,0)|0;break}d=ew(0,e|0,32)|0;d=mh(l,d,G)|0;if(!d){Rd(b);break}else z=d}else z=E;no(C);oo(C);po(C);o=C+16|0;r=C+32|0;s=C+20|0;t=D+42|0;u=D+12|0;v=D+16|0;w=C+12|0;x=C+24|0;y=C+8|0;l=0;d=0;d:while(1){m=a[(A+l&n)>>0]|0;e:do if(!(m<<24>>24))break d;else if(m<<24>>24==37){l=l+1|0;e=A+l|0;do switch(a[(e&n)>>0]|0){case 109:{c[(B&p)>>2]=c[(w&p)>>2];ad(3,z+d|0,19888,B)|0;d=d+2|0;break e}case 77:{c[(B&p)>>2]=c[(x&p)>>2];ad(3,z+d|0,19888,B)|0;d=d+2|0;break e}case 100:{c[(B&p)>>2]=c[(o&p)>>2];ad(3,z+d|0,19888,B)|0;d=d+2|0;break e}case 106:case 87:{m=D+0|0;g=C+0|0;f=m+48|0;do{c[(m&p)>>2]=c[(g&p)>>2];m=m+4|0;g=g+4|0}while((m|0)<(f|0));a[(t&n)>>0]=0;c[(u&p)>>2]=1;c[(v&p)>>2]=1;no(D);m=C;f=D;H=c[(f&p)>>2]|0;f=c[(f&p)+4>>2]|0;m=jw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,432e5,0)|0;g=G;f=qw(dw(m|0,g|0,H|0,f|0)|0,G|0,864e5,0)|0;if((a[(e&n)>>0]|0)==87){e=qw(m|0,g|0,864e5,0)|0;e=rw(e|0,G|0,7,0)|0;c[(B&p)>>2]=(f+7-e|0)/7|0;ad(3,z+d|0,19888,B)|0;d=d+2|0;break e}else{c[(B&p)>>2]=f+1;ad(4,z+d|0,19904,B)|0;d=d+3|0;break e}}case 72:{c[(B&p)>>2]=c[(s&p)>>2];ad(3,z+d|0,19888,B)|0;d=d+2|0;break e}case 115:{g=z+d|0;f=C;e=B;c[(e&p)>>2]=jw(qw(c[(f&p)>>2]|0,c[(f&p)+4>>2]|0,1e3,0)|0,G|0,-413362496,-50)|0;c[(e&p)+4>>2]=G;ad(30,g,19920,B)|0;if(!g)m=0;else{m=g;while(1)if(!(a[(m&n)>>0]|0))break;else m=m+1|0;m=m-g&1073741823}d=m+d|0;break e}case 119:{e=C;e=jw(c[(e&p)>>2]|0,c[(e&p)+4>>2]|0,1296e5,0)|0;e=qw(e|0,G|0,864e5,0)|0;e=rw(e|0,G|0,7,0)|0;a[(z+d&n)>>0]=e+48;d=d+1|0;break e}case 89:{g=z+d|0;c[(B&p)>>2]=c[(y&p)>>2];ad(5,g,19928,B)|0;if(!g)m=0;else{m=g;while(1)if(!(a[(m&n)>>0]|0))break;else m=m+1|0;m=m-g&1073741823}d=m+d|0;break e}case 102:{I=+h[(r&q)>>3];g=z+d|0;h[(k&q)>>3]=I>59.999?59.999:I;c[(B&p)>>2]=c[(k&p)>>2];c[(B&p)+4>>2]=c[(k&p)+4>>2];ad(7,g,19896,B)|0;if(!g)m=0;else{m=g;while(1)if(!(a[(m&n)>>0]|0))break;else m=m+1|0;m=m-g&1073741823}d=m+d|0;break e}case 74:{g=z+d|0;e=C;h[(k&q)>>3]=(+((c[(e&p)>>2]|0)>>>0)+4294967296.0*+(c[(e&p)+4>>2]|0))/864.0e5;c[(B&p)>>2]=c[(k&p)>>2];c[(B&p)+4>>2]=c[(k&p)+4>>2];ad(20,g,19912,B)|0;if(!g)m=0;else{m=g;while(1)if(!(a[(m&n)>>0]|0))break;else m=m+1|0;m=m-g&1073741823}d=m+d|0;break e}case 83:{c[(B&p)>>2]=~~+h[(r&q)>>3];ad(3,z+d|0,19888,B)|0;d=d+2|0;break e}default:{a[(z+d&n)>>0]=37;d=d+1|0;break e}}while(0)}else{a[(z+d&n)>>0]=m;d=d+1|0}while(0);l=l+1|0}a[(z+d&n)>>0]=0;Wg(b,z,-1,1,(z|0)==(E|0)?-1:75)}while(0);i=F;return}function Vj(a,b,c){a=a|0;b=b|0;c=c|0;Sj(a,0,0);return}function Wj(a,b,c){a=a|0;b=b|0;c=c|0;Tj(a,0,0);return}function Xj(a,b,c){a=a|0;b=b|0;c=c|0;Rj(a,0,0);return}function Yj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=Vg(c[(d&p)>>2]|0)|0;h=g+1&-2;e=Vg(c[(d&p)+4>>2]|0)|0;f=(h<<3)+56|0;d=c[((c[(a&p)>>2]|0)&p)+32>>2]|0;b=mh(d,f,((f|0)<0)<<31>>31)|0;if(!b)Rd(a);else{fw(b|0,0,f|0)|0;c[(b&p)+52>>2]=d;c[(b&p)>>2]=0;c[(b&p)+8>>2]=g;c[(b&p)+12>>2]=e;d=b+56|0;c[(b&p)+24>>2]=d;c[(b&p)+20>>2]=d+(h<<2);Wg(a,b,56,0,20)}return}function Zj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=pd(c[(d&p)>>2]|0)|0;f=Vg(c[(d&p)+4>>2]|0)|0;if(!(c[(g&p)>>2]|0)){a=g+8|0;if((c[(a&p)>>2]|0)>0){b=c[(g&p)+20>>2]|0;d=0;do{c[(b+(d<<2)&p)>>2]=1;d=d+1|0}while((d|0)<(c[(a&p)>>2]|0))}}else{if((f|0)>0){a=c[(g&p)+20>>2]|0;d=0;do{b=a+(d<<2)|0;c[(b&p)>>2]=(c[(b&p)>>2]|0)+1;d=d+1|0}while((d|0)!=(f|0))}a=g+8|0;if((f|0)<(c[(a&p)>>2]|0)){b=c[(g&p)+24>>2]|0;e=c[(g&p)+20>>2]|0;d=f;do{f=b+(d<<2)|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;c[(e+(d<<2)&p)>>2]=1;d=d+1|0}while((d|0)<(c[(a&p)>>2]|0))}}c[(g&p)>>2]=(c[(g&p)>>2]|0)+1;return}function _j(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0;o=i;i=i+16|0;if((i|0)>=(j|0))fa();m=o;h=pd(c[(e&p)>>2]|0)|0;k=h+12|0;e=((c[(k&p)>>2]|0)*25|0)+25|0;l=qg(e,((e|0)<0)<<31>>31)|0;if(!l)Rd(b);else{fw(l|0,0,e|0)|0;e=m;c[(e&p)>>2]=c[(h&p)>>2];c[(e&p)+4>>2]=0;ad(24,l,28696,m)|0;e=l;while(1)if(!(a[(e&n)>>0]|0))break;else e=e+1|0;if((c[(k&p)>>2]|0)>0){f=h+24|0;g=0;d=l+(e-l&1073741823)|0;while(1){q=(c[((c[(f&p)>>2]|0)+(g<<2)&p)>>2]|0)+1|0;e=c[(h&p)>>2]|0;r=jw(q|0,0,-1,-1)|0;e=jw(r|0,G|0,e|0,0)|0;q=tw(e|0,G|0,q|0,0)|0;e=m;c[(e&p)>>2]=q;c[(e&p)+4>>2]=G;ad(24,d,28704,m)|0;if(!d)e=0;else{e=d;while(1)if(!(a[(e&n)>>0]|0))break;else e=e+1|0;e=e-d&1073741823}g=g+1|0;if((g|0)>=(c[(k&p)>>2]|0))break;else d=d+e|0}}Wg(b,l,-1,1,1)}i=o;return}function $j(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0;o=i;i=i+144|0;if((i|0)>=(j|0))fa();l=o;m=o+8|0;h=Sg(c[(e&p)>>2]|0,1)|0;k=c[((c[(b&p)>>2]|0)&p)+32>>2]|0;h=(h|0)==0?10360:h;g=c[(k&p)+20>>2]|0;a:do if((g|0)>0){d=c[(k&p)+16>>2]|0;e=0;do{f=d+(e<<4)|0;if((c[(d+(e<<4)&p)+4>>2]|0)!=0?(dd(c[(f&p)>>2]|0,h)|0)==0:0)break a;e=e+1|0}while((e|0)<(g|0))}else{e=0;f=0}while(0);do if((e|0)<(g|0)){if((e|0)<2){c[(l&p)>>2]=h;ad(128,m,29256,l)|0;q=16;break}if(!(a[(k&n)+63>>0]|0)){ad(128,m,29288,l)|0;q=16;break}e=f+4|0;d=c[(e&p)>>2]|0;if((a[(d&n)+8>>0]|0)==0?(c[(d&p)+16>>2]|0)==0:0){Ml(d);c[(e&p)>>2]=0;c[(f&p)+12>>2]=0;Eg(k);break}c[(l&p)>>2]=h;ad(128,m,29336,l)|0;q=16}else{c[(l&p)>>2]=h;ad(128,m,29232,l)|0;q=16}while(0);if((q|0)==16){c[(b&p)+20>>2]=1;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,m,-1,1,-1)|0}i=o;return}function ak(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=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;C=i;i=i+32|0;if((i|0)>=(j|0))fa();y=C;l=C+20|0;d=C+16|0;k=C+12|0;B=C+8|0;m=C+4|0;A=c[((c[(b&p)>>2]|0)&p)+32>>2]|0;c[(l&p)>>2]=0;c[(d&p)>>2]=0;c[(B&p)>>2]=0;x=Sg(c[(f&p)>>2]|0,1)|0;t=Sg(c[(f&p)+4>>2]|0,1)|0;x=(x|0)==0?10360:x;t=(t|0)==0?10360:t;w=A+20|0;g=c[(w&p)>>2]|0;h=c[(A&p)+116>>2]|0;a:do if((g|0)<(h+2|0)){if(!(a[(A&n)+63>>0]|0)){g=uh(A,29456,y)|0;c[(B&p)>>2]=g;d=0;z=42;break}u=A+16|0;h=c[(u&p)>>2]|0;b:do if((g|0)>0){f=0;while(1){if(!(dd(c[(h+(f<<4)&p)>>2]|0,t)|0))break;f=f+1|0;if((f|0)>=(g|0))break b}c[(y&p)>>2]=t;g=uh(A,29504,y)|0;c[(B&p)>>2]=g;d=0;z=42;break a}while(0);if((h|0)!=(A+456|0)){h=ro(A,h,(g<<4)+16|0,0)|0;if(!h)break;else s=h}else{h=mh(A,48,0)|0;if(!h)break;s=c[(u&p)>>2]|0;c[(h&p)>>2]=c[(s&p)>>2];c[(h&p)+4>>2]=c[(s&p)+4>>2];c[(h&p)+8>>2]=c[(s&p)+8>>2];c[(h&p)+12>>2]=c[(s&p)+12>>2];c[(h&p)+16>>2]=c[(s&p)+16>>2];c[(h&p)+20>>2]=c[(s&p)+20>>2];c[(h&p)+24>>2]=c[(s&p)+24>>2];c[(h&p)+28>>2]=c[(s&p)+28>>2];s=h}c[(u&p)>>2]=s;q=c[(w&p)>>2]|0;r=s+(q<<4)|0;c[(r&p)>>2]=0;c[(r&p)+4>>2]=0;c[(r&p)+8>>2]=0;c[(r&p)+12>>2]=0;c[(k&p)>>2]=c[(A&p)+48>>2];h=Wn(c[((c[(A&p)>>2]|0)&p)+16>>2]|0,x,k,m,l,d)|0;if(!h){h=c[(k&p)>>2]|256;c[(k&p)>>2]=h;l=c[(l&p)>>2]|0;k=s+(q<<4)+4|0;h=zm(c[(m&p)>>2]|0,l,A,k,0,h)|0;Wc(l);c[(w&p)>>2]=(c[(w&p)>>2]|0)+1;if((h|0)==19){c[(B&p)>>2]=uh(A,29536,y)|0;h=1}else if(!h){h=Xn(A,c[(k&p)>>2]|0)|0;c[(s+(q<<4)&p)+12>>2]=h;if(h)if((a[(h&n)+76>>0]|0)!=0?(a[(h&n)+77>>0]|0)!=(a[(A&n)+62>>0]|0):0){c[(B&p)>>2]=uh(A,13232,y)|0;h=1}else h=0;else h=7;d=c[(k&p)>>2]|0;f=c[(d&p)+4>>2]|0;c[(f&p)+4>>2]=c[(d&p)>>2];f=c[(f&p)>>2]|0;g=a[(A&n)+66>>0]|0;do if(!(a[(f&n)+12>>0]|0)){m=c[(f&p)+208>>2]|0;if((m|0)!=0?(a[(m&n)+43>>0]|0)==2:0)break;a[(f&n)+4>>0]=g}while(0);f=c[((c[(u&p)>>2]|0)&p)+4>>2]|0;if(!f)f=0;else{m=c[(f&p)+4>>2]|0;c[(m&p)+4>>2]=c[(f&p)>>2];f=(e[(m&o)+22>>1]|0)>>>2&1}so(d,f)|0;to(c[(k&p)>>2]|0,c[(A&p)+24>>2]&28|3)}a[(s+(q<<4)&n)+8>>0]=3;d=kh(A,t)|0;c[(r&p)>>2]=d;d=(h|0)==0&(d|0)==0?7:h;if(!d){f=c[(w&p)>>2]|0;if((f|0)>0){g=c[(u&p)>>2]|0;h=0;do{d=c[(g+(h<<4)&p)+4>>2]|0;if(d)c[((c[(d&p)+4>>2]|0)&p)+4>>2]=c[(d&p)>>2];h=h+1|0}while((h|0)!=(f|0))}d=Zh(A,B)|0;if(!d)break}g=(c[(w&p)>>2]|0)+-1|0;f=c[((c[(u&p)>>2]|0)+(g<<4)&p)+4>>2]|0;if(f){Ml(f);s=c[(u&p)>>2]|0;c[(s+(g<<4)&p)+4>>2]=0;c[(s+(g<<4)&p)+12>>2]=0}Eg(A);c[(w&p)>>2]=g;if((d|0)==7|(d|0)==3082){a[(A&n)+65>>0]=1;mg(A,c[(B&p)>>2]|0);g=uh(A,15776,y)|0;c[(B&p)>>2]=g;z=42;break}g=c[(B&p)>>2]|0;if(g){z=43;break}c[(y&p)>>2]=x;g=uh(A,29568,y)|0;c[(B&p)>>2]=g;z=42;break}else if((h|0)==7)a[(A&n)+65>>0]=1;s=c[(d&p)>>2]|0;c[(b&p)+20>>2]=1;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,s,-1,1,-1)|0;Wc(s)}else{c[(y&p)>>2]=h;g=uh(A,29416,y)|0;c[(B&p)>>2]=g;d=0;z=42}while(0);if((z|0)==42)if(!g){v=d;z=44}else z=43;if((z|0)==43){c[(b&p)+20>>2]=1;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,g,-1,1,-1)|0;mg(A,c[(B&p)>>2]|0);v=d;z=44}if((z|0)==44?(v|0)!=0:0)Pd(b,v);i=C;return}function bk(a){a=a|0;if(a){ik(a,0)|0;Wc(c[(a&p)+24>>2]|0);uo(a)}return 0}function ck(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=a+12|0;g=d&131071;k=b;i=f;j=0;a:while(1){while(1){f=cb(c[(l&p)>>2]|0,e|0,0)|0;if(!((f|0)==(e|0)&(((f|0)<0)<<31>>31|0)==(i|0))){e=4;break a}h=ac[c[47652>>2]&63](c[(l&p)>>2]|0,k,g)|0;if((g|0)==(h|0)){f=j;e=13;break a}if((h|0)>=0){f=h;break}f=c[((Hb()|0)&p)>>2]|0;if((f|0)!=4){g=h;e=10;break a}}if((f|0)<=0){g=0;f=j;e=13;break}h=jw(f|0,((f|0)<0)<<31>>31|0,e|0,i|0)|0;g=g-f|0;k=k+f|0;i=G;e=h;j=f+j|0}do if((e|0)==4)if((f|0)==-1){c[(a&p)+20>>2]=c[((Hb()|0)&p)>>2];f=-1;break}else{c[(a&p)+20>>2]=0;f=-1;break}else if((e|0)==10){c[(a&p)+20>>2]=f;f=0;e=13}while(0);if((e|0)==13)f=f+g|0;if((f|0)!=(d|0))if((f|0)<0)f=266;else{c[(a&p)+20>>2]=0;fw(b+f|0,0,d-f|0)|0;f=522}else f=0;return f|0}function dk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do if((d|0)>0){h=a+12|0;i=a+20|0;g=d;while(1){d=vo(c[(h&p)>>2]|0,e,f,b,g,i)|0;if((d|0)<=0)break;g=g-d|0;e=jw(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0;if((g|0)<=0){d=0;break a}else{b=b+d|0;f=G}}if((d|0)<0?(c[(i&p)>>2]|0)!=28:0){d=778;break}c[(a&p)+20>>2]=0;d=13}else d=0;while(0);return d|0}function ek(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[(a&p)+40>>2]|0;if((e|0)>0){f=((e|0)<0)<<31>>31;d=jw(b|0,d|0,-1,-1)|0;d=jw(d|0,G|0,e|0,f|0)|0;b=G;e=rw(d|0,b|0,e|0,f|0)|0;e=dw(d|0,b|0,e|0,G|0)|0}else e=b;d=c[(a&p)+12>>2]|0;while(1){b=rc[c[47628>>2]&127](d,e)|0;if((b|0)>=0){e=6;break}b=Hb()|0;if((c[(b&p)>>2]|0)!=4){e=8;break}}if((e|0)==6)if(!b)b=0;else{b=Hb()|0;e=8}if((e|0)==8){c[(a&p)+20>>2]=c[(b&p)>>2];b=co(1546,47928,c[(a&p)+32>>2]|0,29004)|0}return b|0}function fk(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();g=k;if(!(Gb(c[(a&p)+12>>2]|0)|0)){h=a+18|0;if(!(b[(h&o)>>1]&8))d=0;else{d=rc[c[47760>>2]&127](c[(a&p)+32>>2]|0,g)|0;f=c[(g&p)>>2]|0;if((d|0)==0&(f|0)>-1){Gb(f|0)|0;ao(a,c[(g&p)>>2]|0,28974);d=0}else d=(d|0)==14?0:d;b[(h&o)>>1]=(e[(h&o)>>1]|0)&65527}}else{c[(a&p)+20>>2]=c[((Hb()|0)&p)>>2];d=co(1034,48360,c[(a&p)+32>>2]|0,28960)|0}i=k;return d|0}function gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+80|0;if((i|0)>=(j|0))fa();d=e;if(!(rc[c[47616>>2]&127](c[(a&p)+12>>2]|0,d)|0)){a=c[(d&p)+36>>2]|0;f=(a|0)==1;d=b;c[(d&p)>>2]=f?0:a;c[(d&p)+4>>2]=f?0:((a|0)<0)<<31>>31;d=0}else{c[(a&p)+20>>2]=c[((Hb()|0)&p)>>2];d=1802}i=e;return d|0}function hk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[(b&p)+24>>2]|0;g=b+16|0;a:do if(!(a[(g&n)>>0]|0)){e=rc[c[47772>>2]&127](f,511)|0;if((e|0)>=0){a[(g&n)>>0]=d;break}f=c[((Hb()|0)&p)>>2]|0;switch(f|0){case 13:case 37:case 4:case 16:case 110:case 11:case 17:{e=5;break a}case 1:{e=3;break}default:e=3850}c[(b&p)+20>>2]=f}else{a[(g&n)>>0]=d;Ya(f|0,0)|0;e=0}while(0);return e|0}function ik(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;g=c[(b&p)+24>>2]|0;h=b+16|0;a:do if((d[(h&n)>>0]|0|0)==(e|0))f=0;else{if((e|0)==1){a[(h&n)>>0]=1;f=0;break}do if((lc[c[47784>>2]&127](g)|0)<0){f=Hb()|0;e=c[(f&p)>>2]|0;if((e|0)==20){if((lc[c[47748>>2]&127](g)|0)>=0)break;e=c[(f&p)>>2]|0}g=(e|0)!=2;f=g?2058:0;if(!g)break a;c[(b&p)+20>>2]=e;break a}while(0);a[(h&n)>>0]=0;f=0}while(0);return f|0}function jk(a,b){a=a|0;b=b|0;if((d[(a&n)+16>>0]|0)>1)a=1;else a=(rc[c[47580>>2]&127](c[(a&p)+24>>2]|0,0)|0)==0&1;c[(b&p)>>2]=a;return 0}function kk(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0;o=i;i=i+80|0;if((i|0)>=(j|0))fa();g=o;a:do switch(b|0){case 16:{f=a+4|0;b=Tc(c[((c[(f&p)>>2]|0)&p)+8>>2]|0)|0;if(!b)f=0;else{_n(c[((c[(f&p)>>2]|0)&p)+8>>2]|0,b)|0;c[(e&p)>>2]=b;f=0}break}case 4:{c[(e&p)>>2]=c[(a&p)+20>>2];f=0;break}case 6:{c[(a&p)+40>>2]=c[(e&p)>>2];f=0;break}case 5:{b=e;e=c[(b&p)>>2]|0;b=c[(b&p)+4>>2]|0;f=a+40|0;if((c[(f&p)>>2]|0)>0){m=a+12|0;if(!(rc[c[47616>>2]&127](c[(m&p)>>2]|0,g)|0)){f=c[(f&p)>>2]|0;k=((f|0)<0)<<31>>31;e=jw(e|0,b|0,-1,-1)|0;e=jw(e|0,G|0,f|0,k|0)|0;l=G;k=rw(e|0,l|0,f|0,k|0)|0;k=dw(e|0,l|0,k|0,G|0)|0;l=G;e=c[(g&p)+36>>2]|0;f=((e|0)<0)<<31>>31;do if((l|0)>(f|0)|(l|0)==(f|0)&k>>>0>e>>>0){h=c[(g&p)+40>>2]|0;b=e+-1+(h<<1)|0;b=b+~((b|0)%(h|0)|0)|0;e=((b|0)<0)<<31>>31;f=a+20|0;if((e|0)<(l|0)|(e|0)==(l|0)&b>>>0>>0){g=((h|0)<0)<<31>>31;do{a=(vo(c[(m&p)>>2]|0,b,e,10360,1,f)|0)==1;b=jw(b|0,e|0,h|0,g|0)|0;e=G;if(!a){f=778;break a}}while((e|0)<(l|0)|(e|0)==(l|0)&b>>>0>>0);b=rw(k|0,l|0,h|0,g|0)|0;if((b|0)==0&(G|0)==0)break}b=jw(k|0,l|0,-1,-1)|0;if((vo(c[(m&p)>>2]|0,b,G,10360,1,f)|0)!=1){f=778;break a}}while(0);f=0}else f=1802}else f=0;break}case 1:{c[(e&p)>>2]=d[(a&n)+16>>0];f=0;break}case 20:{c[(e&p)>>2]=xo(a)|0;f=0;break}case 24:{f=0;break}case 10:{wo(a,4,e);f=0;break}case 13:{wo(a,16,e);f=0;break}case 12:{c[(g&p)>>2]=c[((c[(a&p)+4>>2]|0)&p)+16>>2];c[(e&p)>>2]=_c(10344,g)|0;f=0;break}default:f=12}while(0);i=o;return f|0}function lk(a){a=a|0;return 4096}function mk(a){a=a|0;return (b[(a&o)+18>>1]&16)<<8|0}function nk(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;l=c[(a&p)+36>>2]|0;i=c[(l&p)>>2]|0;m=(1<>2]|0;i=(j|0)==0;if(g&4){if(i)g=0;else{g=0;i=j;do{if(m&(e[(i&o)+12>>1]|0)){h=5;break a}g=b[(i&o)+10>>1]|g;i=c[(i&p)+4>>2]|0}while((i|0)!=0)}if((m&(g&65535)|0)==0?(k=yo(a,0,d+120|0,f)|0,(k|0)!=0):0){h=k;break}h=l+10|0;b[(h&o)>>1]=e[(h&o)>>1]|0|m;h=0;break}if(!i){h=m&65535;g=j;do{if((e[(g&o)+12>>1]|0)&h){h=5;break a}if((e[(g&o)+10>>1]|0)&h){h=5;break a}g=c[(g&p)+4>>2]|0}while((g|0)!=0)}h=yo(a,1,d+120|0,f)|0;if(!h){h=l+12|0;b[(h&o)>>1]=e[(h&o)>>1]|0|m;h=0}}else{i=c[(i&p)+32>>2]|0;if(!i)g=0;else{g=0;do{if((i|0)!=(l|0))g=b[(i&o)+10>>1]|g;i=c[(i&p)+4>>2]|0}while((i|0)!=0)}if((g&65535&m|0)==0?(h=yo(a,2,d+120|0,f)|0,(h|0)!=0):0)break;g=(m|-65536)^65535;h=l+12|0;b[(h&o)>>1]=(e[(h&o)>>1]|0)&g;h=l+10|0;b[(h&o)>>1]=(e[(h&o)>>1]|0)&g;h=0}while(0);return h|0}function ok(a){a=a|0;return}function pk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+36|0;g=c[(f&p)>>2]|0;if(g){h=c[(g&p)>>2]|0;d=h+32|0;while(1){e=c[(d&p)>>2]|0;if((e|0)==(g|0))break;else d=e+4|0}c[(d&p)>>2]=c[(g&p)+4>>2];Wc(g);c[(f&p)>>2]=0;e=h+28|0;d=(c[(e&p)>>2]|0)+-1|0;c[(e&p)>>2]=d;if(!d){if((b|0)!=0?(c[(h&p)+12>>2]|0)>-1:0)lc[c[47748>>2]&127](c[(h&p)+8>>2]|0)|0;zo(a)}}return 0}function qk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[(f&p)>>2]=0;return 0}function rk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function sk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))fa();f=e;c[(f&p)>>2]=d;b=qb(a|0,b|0,f|0)|0;i=e;return b|0}function tk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+528|0;if((i|0)>=(j|0))fa();f=k;g=k+8|0;c[(f&p)>>2]=b;ad(512,g,10344,f)|0;b=gw(g|0)|0;a:do if((b|0)>1)while(1){e=b+-1|0;if((a[(g+b&n)>>0]|0)==47)break a;if((e|0)>1)b=e;else{b=e;break}}while(0);if((b|0)>0){a[(g+b&n)>>0]=0;b=$n(g,0,0)|0;c[(d&p)>>2]=b;if((b|0)>-1)b=0;else h=7}else{c[(d&p)>>2]=-1;h=7}if((h|0)==7){c[(f&p)>>2]=28919;c[(f&p)+4>>2]=10788;bd(14,14848,f);b=co(14,47896,g,28919)|0}i=k;return b|0}function uk(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Kb()|0))a=Qb(a|0,b|0,c|0)|0;else a=0;return a|0}function vk(){return wb(30)|0}function wk(a){a=a|0;uo(a);return 0}function xk(a,b){a=a|0;b=b|0;return 0}function yk(a,b){a=a|0;b=b|0;return 0}function zk(a,b){a=a|0;b=b|0;c[(b&p)>>2]=0;return 0}function Ak(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;bo(a);Ck(a,0)|0;f=c[(a&p)+8>>2]|0;if(f){if(c[(f&p)+24>>2]|0){b=a+28|0;e=c[(b&p)>>2]|0;d=f+28|0;c[(e&p)+8>>2]=c[(d&p)>>2];c[(d&p)>>2]=e;c[(a&p)+12>>2]=-1;c[(b&p)>>2]=0}d=f+16|0;b=(c[(d&p)>>2]|0)+-1|0;c[(d&p)>>2]=b;if(!b){Ao(a);g=f+36|0;b=c[(g&p)>>2]|0;d=f+32|0;e=c[(d&p)>>2]|0;if(!b)c[12178]=e;else c[(b&p)+32>>2]=e;b=c[(d&p)>>2]|0;if(b)c[(b&p)+36>>2]=c[(g&p)>>2];Wc(f)}}uo(a);return 0}function Bk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))fa();m=t;r=d+16|0;f=a[(r&n)>>0]|0;a:do if((f&255|0)<(e|0)){l=c[(d&p)+8>>2]|0;s=l+12|0;g=a[(s&n)>>0]|0;if(f<<24>>24!=g<<24>>24?(g&255)>2|(e|0)>1:0){f=5;break}h=(e|0)==1;do if(h)if((g+-1&255)<2){a[(r&n)>>0]=1;f=l+8|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;f=l+24|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;f=0;break a}else{g=m+8|0;c[(g&p)>>2]=1;b[(m&o)+2>>1]=0;q=10;break}else{g=m+8|0;c[(g&p)>>2]=1;b[(m&o)+2>>1]=0;if((e|0)==4)if((f&255)<3)q=10;else{k=g;q=14}else{h=g;q=24}}while(0);if((q|0)==10){b[(m&o)>>1]=h&1^1;c[(m&p)+4>>2]=c[2514];if(!(Bo(d,m)|0)){k=g;q=14}else{g=c[((Hb()|0)&p)>>2]|0;switch(g|0){case 1:{f=3;break}case 13:case 37:case 4:case 16:case 110:case 11:{f=5;break a}default:f=3850}c[(d&p)+20>>2]=g;break}}b:do if((q|0)==14)if(h){h=m+4|0;c[(h&p)>>2]=(c[2514]|0)+2;c[(k&p)>>2]=510;c:do if(!(Bo(d,m)|0)){f=0;g=0}else{g=c[((Hb()|0)&p)>>2]|0;switch(g|0){case 1:{f=3;g=1;break c}case 13:case 37:case 4:case 16:case 110:case 11:{f=5;break c}default:{f=3850;break c}}}while(0);c[(h&p)>>2]=c[2514];c[(k&p)>>2]=1;b[(m&o)>>1]=2;do if((Bo(d,m)|0)!=0&(f|0)==0){f=2058;g=c[((Hb()|0)&p)>>2]|0}else{if((f|0)==5){f=5;break a}else if(f)break;a[(r&n)>>0]=1;m=l+24|0;c[(m&p)>>2]=(c[(m&p)>>2]|0)+1;c[(l&p)+8>>2]=1;break b}while(0);c[(d&p)+20>>2]=g;break a}else{h=k;q=24}while(0);do if((q|0)==24){k=(e|0)==4;if(k)if((c[(l&p)+8>>2]|0)>1)f=5;else{b[(m&o)>>1]=1;g=c[2514]|0;q=29}else{b[(m&o)>>1]=1;g=c[2514]|0;if((e|0)==2){c[(m&p)+4>>2]=g+1;g=1;q=30}else q=29}if((q|0)==29){c[(m&p)+4>>2]=g+2;g=510;q=30}if((q|0)==30){c[(h&p)>>2]=g;if(!(Bo(d,m)|0))break;g=c[((Hb()|0)&p)>>2]|0;switch(g|0){case 1:{f=3;q=33;break}case 13:case 37:case 4:case 16:case 110:case 11:{f=5;break}default:{f=3850;q=33}}if((q|0)==33)c[(d&p)+20>>2]=g;if(!k)break a}a[(r&n)>>0]=3;a[(s&n)>>0]=3;break a}while(0);f=e&255;a[(r&n)>>0]=f;a[(s&n)>>0]=f;f=0}else f=0;while(0);i=t;return f|0}function Ck(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();k=q;l=d+16|0;f=a[(l&n)>>0]|0;a:do if((f&255|0)>(e|0)){m=c[(d&p)+8>>2]|0;do if((f&255)>1){if((e|0)==1){b[(k&o)>>1]=0;h=k+2|0;b[(h&o)>>1]=0;f=k+4|0;c[(f&p)>>2]=(c[2514]|0)+2;g=k+8|0;c[(g&p)>>2]=510;if(Bo(d,k)|0){c[(d&p)+20>>2]=c[((Hb()|0)&p)>>2];f=2314;break a}}else{g=k+8|0;h=k+2|0;f=k+4|0}b[(k&o)>>1]=2;b[(h&o)>>1]=0;c[(f&p)>>2]=c[2514];c[(g&p)>>2]=2;if(!(Bo(d,k)|0)){a[(m&n)+12>>0]=1;break}else{c[(d&p)+20>>2]=c[((Hb()|0)&p)>>2];f=2058;break a}}while(0);if(!e){g=m+8|0;f=(c[(g&p)>>2]|0)+-1|0;c[(g&p)>>2]=f;do if(!f){b[(k&o)>>1]=2;b[(k&o)+2>>1]=0;c[(k&p)+8>>2]=0;c[(k&p)+4>>2]=0;if(!(Bo(d,k)|0)){a[(m&n)+12>>0]=0;f=0;break}else{c[(d&p)+20>>2]=c[((Hb()|0)&p)>>2];a[(m&n)+12>>0]=0;a[(l&n)>>0]=0;f=2058;break}}else f=0;while(0);h=m+24|0;g=(c[(h&p)>>2]|0)+-1|0;c[(h&p)>>2]=g;if(!g)Ao(d);if(f)break}a[(l&n)>>0]=e;f=0}else f=0;while(0);i=q;return f|0}function Dk(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0;m=i;i=i+32|0;if((i|0)>=(j|0))fa();k=m;l=m+8|0;h=c[(e&p)+8>>2]|0;q=(d[(h&n)+12>>0]|0)>1;g=q&1;do if(!q)if(!(a[(h&n)+13>>0]|0)){b[(l&o)+2>>1]=0;c[(l&p)+4>>2]=(c[2514]|0)+1;c[(l&p)+8>>2]=1;b[(l&o)>>1]=1;q=c[11910]|0;h=c[(e&p)+12>>2]|0;c[(k&p)>>2]=l;if(!(ac[q&63](h,12,k)|0)){h=0;g=(b[(l&o)>>1]|0)==2?g:1;break}else{c[(e&p)+20>>2]=c[((Hb()|0)&p)>>2];h=3594;break}}else{h=0;g=0}else{h=0;g=1}while(0);c[(f&p)>>2]=g;i=m;return h|0}function Ek(d,f,g,h,k){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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;D=i;i=i+160|0;if((i|0)>=(j|0))fa();B=D;w=D+76|0;m=hc[c[47844>>2]&7]()|0;if((m|0)<32768)C=1;else C=(m|0)/32768|0;z=d+36|0;m=c[(z&p)>>2]|0;a:do if(!m){m=Tc(16)|0;if(!m)l=7;else{c[(m&p)>>2]=0;c[(m&p)+4>>2]=0;c[(m&p)+8>>2]=0;c[(m&p)+12>>2]=0;v=d+8|0;t=c[(v&p)>>2]|0;l=c[(t&p)+20>>2]|0;b:do if(!l){u=d+32|0;q=c[(u&p)>>2]|0;if((rc[c[47616>>2]&127](c[(d&p)+12>>2]|0,w)|0)!=0?(a[(t&n)+13>>0]|0)==0:0)l=1802;else A=8;c:do if((A|0)==8){l=gw(q|0)|0;r=l+42|0;x=Tc(r)|0;if(x){fw(x|0,0,r|0)|0;s=x+36|0;c[(x&p)+8>>2]=s;c[(B&p)>>2]=q;ad(l+6|0,s,48720,B)|0;l=x+12|0;c[(l&p)>>2]=-1;v=c[(v&p)>>2]|0;c[(v&p)+20>>2]=x;c[(x&p)>>2]=v;c[(x&p)+4>>2]=8;if(a[(t&n)+13>>0]|0){l=x;break b}if(!(fg(c[(u&p)>>2]|0,48728,0)|0))r=66;else{a[(x&n)+22>>0]=1;r=0}q=$n(s,r,c[(w&p)+12>>2]&511)|0;c[(l&p)>>2]=q;if((q|0)<0){c[(B&p)>>2]=29706;c[(B&p)+4>>2]=10788;bd(14,14848,B);l=co(14,47896,s,29706)|0;break}ac[c[47796>>2]&63](q,c[(w&p)+20>>2]|0,c[(w&p)+24>>2]|0)|0;do if(!(yo(d,1,128,1)|0)){l=c[(l&p)>>2]|0;do{q=rc[c[47628>>2]&127](l,0)|0;if((q|0)>=0){y=q;A=18;break}}while((c[((Hb()|0)&p)>>2]|0)==4);if((A|0)==18?(y|0)==0:0)break;l=co(4618,47928,s,29722)|0;if(l)break c}while(0);l=yo(d,0,128,1)|0;if(!l){l=x;break b}}else l=7}while(0);zo(d);Wc(m);if(l)break a;m=c[(z&p)>>2]|0;A=24;break a}while(0);c[(m&p)>>2]=l;A=l+28|0;c[(A&p)>>2]=(c[(A&p)>>2]|0)+1;c[(d&p)+36>>2]=m;A=l+32|0;c[(m&p)+4>>2]=c[(A&p)>>2];c[(A&p)>>2]=m;A=24}}else A=24;while(0);if((A|0)==24){x=c[(m&p)>>2]|0;z=C+f|0;z=z-((z|0)%(C|0)|0)|0;w=x+20|0;d:do if((e[(w&o)>>1]|0)<(z|0)){l=ca(z,g)|0;c[(x&p)+16>>2]=g;y=x+12|0;m=c[(y&p)>>2]|0;e:do if((m|0)>-1){if(rc[c[47616>>2]&127](m,B)|0){m=4874;break d}m=c[(B&p)+36>>2]|0;if((m|0)<(l|0)){if(!h){m=0;break d}m=(m|0)/4096|0;l=(l|0)/4096|0;if((m|0)<(l|0)){while(1){v=m<<12|4095;m=m+1|0;if((vo(c[(y&p)>>2]|0,v,((v|0)<0)<<31>>31,10360,1,0)|0)!=1)break;if((m|0)>=(l|0))break e}m=co(4874,47976,c[(x&p)+8>>2]|0,29853)|0;break d}}}while(0);v=x+24|0;m=Xc(c[(v&p)>>2]|0,z<<2)|0;if(m){c[(v&p)>>2]=m;m=e[(w&o)>>1]|0;if((m|0)<(z|0)){s=ca(C,g)|0;t=x+22|0;u=(C|0)>0;while(1){l=c[(y&p)>>2]|0;if((l|0)>-1){m=ca(m,g)|0;m=kc[c[47808>>2]&7](0,s,(a[(t&n)>>0]|0)!=0?1:3,1,l,m)|0;if((m|0)==(-1|0))break}else{m=Tc(g)|0;if(!m){m=7;break d}fw(m|0,0,g|0)|0}q=b[(w&o)>>1]|0;if(u){l=q&65535;r=0;do{d=m+(ca(r,g)|0)|0;c[((c[(v&p)>>2]|0)+(l+r<<2)&p)>>2]=d;r=r+1|0}while((r|0)!=(C|0))}m=(q&65535)+C|0;b[(w&o)>>1]=m;m=m&65535;if((m|0)>=(z|0)){m=0;break d}}m=co(5386,48080,c[(x&p)+8>>2]|0,29880)|0}else m=0}else m=3082}else m=0;while(0);if((e[(w&o)>>1]|0)>(f|0))l=c[((c[(x&p)+24>>2]|0)+(f<<2)&p)>>2]|0;else l=0;c[(k&p)>>2]=l;l=(a[(x&n)+22>>0]|0)!=0&(m|0)==0?8:m}i=D;return l|0}function Fk(a,b){a=a|0;b=b|0;var d=0;if(b)do{d=b;b=c[(b&p)+32>>2]|0;Gk(a,c[(d&p)+20>>2]|0);Nk(a,c[(d&p)+24>>2]|0);Mk(a,c[(d&p)+8>>2]|0,1);Hk(a,c[(d&p)+28>>2]|0);mg(a,d)}while((b|0)!=0);return}function Gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(b){f=b+4|0;do if(!(c[(f&p)>>2]&16384)){Gk(a,c[(b&p)+12>>2]|0);Gk(a,c[(b&p)+16>>2]|0);d=c[(f&p)>>2]|0;if(d&65536){mg(a,c[(b&p)+8>>2]|0);d=c[(f&p)>>2]|0}e=b+20|0;if(!(d&2048)){Nk(a,c[(e&p)>>2]|0);break}else{Mk(a,c[(e&p)>>2]|0,1);break}}while(0);if(!(c[(f&p)>>2]&32768))mg(a,b)}return}function Hk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(b){f=b+4|0;d=c[(b&p)>>2]|0;if((c[(f&p)>>2]|0)>0){e=0;do{mg(a,c[(d+(e<<3)&p)>>2]|0);e=e+1|0;d=c[(b&p)>>2]|0}while((e|0)<(c[(f&p)>>2]|0))}mg(a,d);mg(a,b)}return}function Ik(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();r=s;m=bn(b,e,r)|0;do if(!m)if(f){q=qg(16,0)|0;if(!q)g=f;else{c[(q&p)+12>>2]=e;c[(q&p)+8>>2]=f;o=b+4|0;k=(c[(o&p)>>2]|0)+1|0;c[(o&p)>>2]=k;if((k>>>0>9?(h=c[(b&p)>>2]|0,k>>>0>h<<1>>>0):0)?(l=k<<4>>>0>1024?128:k<<1,(l|0)!=(h|0)):0){g=c[3164]|0;if(g)nc[g&3]();o=qg(l<<3,0)|0;g=c[3166]|0;if(g)nc[g&3]();if(o){m=b+12|0;Wc(c[(m&p)>>2]|0);c[(m&p)>>2]=o;m=(lc[c[8792>>2]&127](o)|0)>>>3;c[(b&p)>>2]=m;fw(o|0,0,m<<3|0)|0;f=b+8|0;k=c[(f&p)>>2]|0;c[(f&p)>>2]=0;if(k)do{l=c[(k&p)+12>>2]|0;h=a[(l&n)>>0]|0;if(!(h<<24>>24))h=0;else{f=h;h=0;do{l=l+1|0;h=h<<3^h^(d[(f&255&n)+9328>>0]|0);f=a[(l&n)>>0]|0}while(f<<24>>24!=0)}f=k;k=c[(k&p)>>2]|0;Co(b,o+(((h>>>0)%(m>>>0)|0)<<3)|0,f)}while((k|0)!=0);g=a[(e&n)>>0]|0;if(!(g<<24>>24))g=0;else{k=g;g=0;do{e=e+1|0;g=g<<3^g^(d[(k&255&n)+9328>>0]|0);k=a[(e&n)>>0]|0}while(k<<24>>24!=0)}c[(r&p)>>2]=(g>>>0)%((c[(b&p)>>2]|0)>>>0)|0}}g=c[(b&p)+12>>2]|0;if(!g)g=0;else g=g+(c[(r&p)>>2]<<3)|0;Co(b,g,q);g=0}}else g=0;else{k=m+8|0;g=c[(k&p)>>2]|0;if(f){c[(k&p)>>2]=f;c[(m&p)+12>>2]=e;break}l=c[(r&p)>>2]|0;k=c[(m&p)+4>>2]|0;h=c[(m&p)>>2]|0;if(!k)c[(b&p)+8>>2]=h;else{c[(k&p)>>2]=h;h=c[(m&p)>>2]|0}if(h)c[(h&p)+4>>2]=k;e=c[(b&p)+12>>2]|0;if(e){k=e+(l<<3)+4|0;if((c[(k&p)>>2]|0)==(m|0))c[(k&p)>>2]=h;r=e+(l<<3)|0;c[(r&p)>>2]=(c[(r&p)>>2]|0)+-1}Wc(m);q=b+4|0;r=(c[(q&p)>>2]|0)+-1|0;c[(q&p)>>2]=r;if(!r)Ol(b)}while(0);i=s;return g|0}function Jk(b,d){b=b|0;d=d|0;Gk(b,c[(d&p)+36>>2]|0);mg(b,c[(d&p)+16>>2]|0);if(a[(d&n)+51>>0]&16)mg(b,c[(d&p)+32>>2]|0);mg(b,d);return}function Kk(a,b){a=a|0;b=b|0;var d=0;if(b){d=c[(b&p)+28>>2]|0;Gk(a,c[(d&p)+20>>2]|0);Nk(a,c[(d&p)+24>>2]|0);Mk(a,c[(d&p)+8>>2]|0,1);Gk(a,c[(b&p)+12>>2]|0);mg(a,b)}return}function Lk(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;e=c[(g&p)>>2]|0;if(e){d=d+38|0;if((b[(d&o)>>1]|0)>0){f=0;while(1){mg(a,c[(e&p)>>2]|0);Gk(a,c[(e&p)+4>>2]|0);mg(a,c[(e&p)+8>>2]|0);mg(a,c[(e&p)+12>>2]|0);mg(a,c[(e&p)+16>>2]|0);f=f+1|0;if((f|0)>=(b[(d&o)>>1]|0))break;else e=e+24|0}e=c[(g&p)>>2]|0}mg(a,e)}return}function Mk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=(d|0)==0;d=b;while(1){b=d;d=c[(d&p)+52>>2]|0;Nk(a,c[(b&p)>>2]|0);Do(a,c[(b&p)+32>>2]|0);Gk(a,c[(b&p)+36>>2]|0);Nk(a,c[(b&p)+40>>2]|0);Gk(a,c[(b&p)+44>>2]|0);Nk(a,c[(b&p)+48>>2]|0);Gk(a,c[(b&p)+60>>2]|0);Gk(a,c[(b&p)+64>>2]|0);Qn(a,c[(b&p)+68>>2]|0);if(!e)mg(a,b);if(!d)break;else e=0}}return}function Nk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(b){d=b+4|0;if((c[(b&p)>>2]|0)>0){e=0;f=c[(d&p)>>2]|0;while(1){Gk(a,c[(f&p)>>2]|0);mg(a,c[(f&p)+4>>2]|0);mg(a,c[(f&p)+8>>2]|0);e=e+1|0;if((e|0)>=(c[(b&p)>>2]|0))break;else f=f+20|0}}mg(a,c[(d&p)>>2]|0);mg(a,b)}return}function Ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+60|0;d=c[(h&p)>>2]|0;c[(h&p)>>2]=0;a:do if(!d)b=0;else{b=0;do{while(1){f=c[(d&p)>>2]|0;e=d+24|0;g=d;d=c[(e&p)>>2]|0;if((f|0)==(a|0)){b=g;break}f=f+332|0;c[(e&p)>>2]=c[(f&p)>>2];c[(f&p)>>2]=g;if(!d)break a}c[(h&p)>>2]=b;c[(e&p)>>2]=0}while((d|0)!=0)}while(0);return b|0}function Pk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((d|0)!=0?(f=d+(e*20|0)|0,(e|0)>0):0){e=d;do{In(b,a[(e&n)+1>>0]|0,c[(e&p)+16>>2]|0);e=e+20|0}while(e>>>0>>0)}mg(b,d);return}function Qk(a,b){a=a|0;b=b|0;do if(!a)b=lc[c[8792>>2]&127](b)|0;else{if((c[(a&p)+276>>2]|0)>>>0<=b>>>0?(c[(a&p)+280>>2]|0)>>>0>b>>>0:0){b=e[(a&o)+248>>1]|0;break}b=lc[c[8792>>2]&127](b)|0}while(0);a=c[(a&p)+520>>2]|0;c[(a&p)>>2]=(c[(a&p)>>2]|0)+b;return}function Rk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;b=c[(b+(d<<2)&p)>>2]|0;a:do if(!b)b=0;else while(1){d=c[(b&p)+24>>2]|0;if((Fc(d,e,f)|0)==0?(a[(d+f&n)>>0]|0)==0:0)break a;b=c[(b&p)+28>>2]|0;if(!b){b=0;break}}while(0);return b|0}function Sk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+12|0;f=c[(e&p)>>2]|0;g=f+d|0;if((g|0)<(c[(a&p)+16>>2]|0)){c[(e&p)>>2]=g;kw((c[(a&p)+8>>2]|0)+f|0,b|0,d|0)|0}else Eo(a,b,d);return}function Tk(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[(d&p)>>2]|0;if((c[(a&p)>>2]|0)>(b|0)){c[(d&p)>>2]=b+1;d=Vg(c[((c[(a&p)+8>>2]|0)+(b<<2)&p)>>2]|0)|0;b=G}else{b=0;d=0}G=b;return d|0}function Uk(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[(b&p)>>2]|0;if((c[(a&p)>>2]|0)>(d|0)){c[(b&p)>>2]=d+1;b=Sg(c[((c[(a&p)+8>>2]|0)+(d<<2)&p)>>2]|0,1)|0}else b=0;return b|0}function Vk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=b+12|0;i=c[(g&p)>>2]|0;i=jw(i|0,((i|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;k=G;h=c[(b&p)+16>>2]|0;j=((h|0)<0)<<31>>31;if((k|0)<(j|0)|(k|0)==(j|0)&i>>>0>>0){if((d|0)>0)f=4}else{d=Fo(b,d)|0;if((d|0)>=1)f=4}if((f|0)==4){b=b+8|0;do{d=d+-1|0;f=c[(g&p)>>2]|0;c[(g&p)>>2]=f+1;a[((c[(b&p)>>2]|0)+f&n)>>0]=e}while((d|0)>0)}return}function Wk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;f=i;i=i+112|0;if((i|0)>=(j|0))fa();k=f+28|0;h=f;g=c[(b&p)+88>>2]|0;c[(h&p)+4>>2]=k;c[(h&p)+8>>2]=k;c[(h&p)+12>>2]=0;c[(h&p)+16>>2]=70;c[(h&p)+20>>2]=g;a[(h&n)+24>>0]=1;g=h+25|0;a[(g&n)>>0]=0;c[(h&p)>>2]=b;sg(h,1,d,e);e=tg(h)|0;if((a[(g&n)>>0]|0)==1)a[(b&n)+65>>0]=1;i=f;return e|0}function Xk(a){a=a|0;return lc[c[8792>>2]&127](a)|0}function Yk(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+80|0;if((i|0)>=(j|0))fa();l=m+40|0;g=m;if((d|0)!=0?(f=c[(d&p)+20>>2]|0,(f|0)!=0):0){c[(l&p)>>2]=0;c[(l&p)+4>>2]=0;c[(l&p)+8>>2]=0;c[(l&p)+12>>2]=0;c[(l&p)+16>>2]=0;c[(l&p)+20>>2]=0;c[(l&p)+24>>2]=0;h=g+0|0;k=h+40|0;do{c[(h&p)>>2]=0;h=h+4|0}while((h|0)<(k|0));b[(g&o)+8>>1]=1;e=a+32|0;c[(g&p)+32>>2]=c[(e&p)>>2];c[(l&p)>>2]=g;c[(l&p)+8>>2]=a;c[(l&p)+4>>2]=d;cc[f&31](l);if((c[(a&p)+24>>2]|0)>0)mg(c[(e&p)>>2]|0,c[(a&p)+20>>2]|0);h=a+0|0;e=g+0|0;k=h+40|0;do{c[(h&p)>>2]=c[(e&p)>>2];h=h+4|0;e=e+4|0}while((h|0)<(k|0));e=c[(l&p)+20>>2]|0}else e=0;i=m;return e|0}function Zk(a){a=a|0;var d=0,e=0,f=0;d=c[(a&p)>>2]|0;if(d){e=a+4|0;do{f=d;d=c[(d&p)>>2]|0;mg(c[(e&p)>>2]|0,f)}while((d|0)!=0)}c[(a&p)>>2]=0;b[(a&o)+24>>1]=0;c[(a&p)+8>>2]=0;c[(a&p)+12>>2]=0;c[(a&p)+20>>2]=0;b[(a&o)+26>>1]=1;return}function _k(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;g=k+4|0;d=c[(b&p)>>2]|0;e=d+16|0;do if((c[((c[(e&p)>>2]|0)&p)+20>>2]|0)==0?(a[(b&n)+450>>0]|0)==0:0){f=zm(c[(d&p)>>2]|0,0,d,g,0,542)|0;if(f){th(b,25496,h);c[(b&p)+12>>2]=f;d=1;break}f=c[(g&p)>>2]|0;c[((c[(e&p)>>2]|0)&p)+20>>2]=f;if((xg(f,c[(d&p)+72>>2]|0,-1,0)|0)==7){a[(d&n)+65>>0]=1;d=1}else d=0}else d=0;while(0);i=k;return d|0}function $k(a){a=a|0;var b=0;do if(a)if((c[3157]|0)>>>0<=a>>>0&(c[3158]|0)>>>0>a>>>0){c[2167]=(c[2167]|0)+-1;c[(a&p)>>2]=c[3160];c[3160]=a;a=(c[3161]|0)+1|0;c[3161]=a;c[3162]=(a|0)<(c[3156]|0)&1;break}else{b=lc[c[8792>>2]&127](a)|0;c[2168]=(c[2168]|0)-b;Wc(a);break}while(0);return}function al(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;if((i|0)>=(j|0))fa();q=t;m=c[(e&p)>>2]|0;if((a[(d&n)+15>>0]|0)!=0?(c[(d&p)+24>>2]|0)!=0:0)s=12;else s=3;do if((s|0)==3){l=d+204|0;if(((m|0)!=0?(c[((c[(l&p)>>2]|0)&p)+12>>2]|0)==0:0)?(r=d+152|0,(m|0)!=(c[(r&p)>>2]|0)):0){u=q;c[(u&p)>>2]=0;c[(u&p)+4>>2]=0;if(((a[(d&n)+16>>0]|0)!=0?(h=c[(d&p)+60>>2]|0,g=c[(h&p)>>2]|0,(g|0)!=0):0)?(k=rc[c[(g&p)+24>>2]&127](h,q)|0,(k|0)!=0):0){g=0;f=k}else{g=Go(m)|0;if(g){xn(d);h=Ho(c[(l&p)>>2]|0,m)|0;if(!h){s=d+200|0;$k(c[(s&p)>>2]|0);c[(s&p)>>2]=g;s=q;q=c[(s&p)>>2]|0;s=c[(s&p)+4>>2]|0;l=jw(m|0,0,-1,-1)|0;s=jw(l|0,G|0,q|0,s|0)|0;s=qw(s|0,G|0,m|0,0)|0;c[(d&p)+24>>2]=s;c[(r&p)>>2]=m;s=12;break}else f=h}else{g=0;f=7}}$k(g);c[(e&p)>>2]=c[(r&p)>>2]}else s=12}while(0);if((s|0)==12){c[(e&p)>>2]=c[(d&p)+152>>2];g=d+142|0;if((f|0)<0)f=b[(g&o)>>1]|0;b[(g&o)>>1]=f;f=0}i=t;return f|0}function bl(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0;i=c[(d&p)+4>>2]|0;a:do if(a[(d&n)+9>>0]|0){if((c[(i&p)+76>>2]|0)!=(d|0)?(b[(i&o)+22>>1]&32)!=0:0){h=262;break}h=c[(i&p)+72>>2]|0;if(h){while(1){if(((c[(h&p)>>2]|0)!=(d|0)?(c[(h&p)+4>>2]|0)==(f|0):0)?(a[(h&n)+8>>0]|0)!=g<<24>>24:0)break;h=c[(h&p)+12>>2]|0;if(!h){h=0;break a}}if(g<<24>>24==2){h=i+22|0;b[(h&o)>>1]=e[(h&o)>>1]|64;h=262}else h=262}else h=0}else h=0;while(0);return h|0}function cl(b){b=b|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,o=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;H=i;i=i+64|0;if((i|0)>=(j|0))fa();G=H;D=H+28|0;C=H+24|0;m=H+20|0;t=H+48|0;v=H+16|0;w=H+12|0;A=H+8|0;B=H+32|0;if(!((a[(b&n)+15>>0]|0)!=0?(e=c[(b&p)+40>>2]|0,(e|0)!=0):0))F=3;do if((F|0)==3){E=b+208|0;f=c[(E&p)>>2]|0;a:do if(!f){z=b+16|0;do if(!(a[(z&n)>>0]|0)){h=b+176|0;g=b+180|0;while(1){e=fl(b,1)|0;if(!e)break;else if((e|0)!=5)break a;if(!(lc[c[(h&p)>>2]&127](c[(g&p)>>2]|0)|0)){e=5;break a}}u=b+17|0;if((d[(u&n)>>0]|0)<2){f=c[(b&p)>>2]|0;c[(G&p)>>2]=1;k=b+64|0;l=(c[(c[(k&p)>>2]&p)>>2]|0)!=0;if(l){h=1;e=0}else{e=pc[c[(f&p)+32>>2]&31](f,c[(b&p)+172>>2]|0,0,G)|0;h=(c[(G&p)>>2]|0)!=0}b:do if((e|0)==0&h){c[(D&p)>>2]=0;g=b+60|0;e=c[(g&p)>>2]|0;e=rc[c[((c[(e&p)>>2]|0)&p)+36>>2]&127](e,D)|0;if(!(c[(D&p)>>2]|e)){e=Io(b,C)|0;if(!e){if((c[(C&p)>>2]|0)!=0|l){do if(!l){c[(m&p)>>2]=2049;e=tc[c[(f&p)+24>>2]&31](f,c[(b&p)+172>>2]|0,c[(k&p)>>2]|0,2049,m)|0;if(!e)break;else if((e|0)!=14){h=0;break b}h=1;e=0;break b}while(0);a[(t&n)>>0]=0;e=c[(k&p)>>2]|0;e=tc[c[((c[(e&p)>>2]|0)&p)+8>>2]&31](e,t,1,0,0)|0;e=(e|0)==522?0:e;if(!l?(r=c[(k&p)>>2]|0,s=c[(r&p)>>2]|0,(s|0)!=0):0){lc[c[(s&p)+4>>2]&127](r)|0;c[(r&p)>>2]=0}h=(a[(t&n)>>0]|0)!=0&1;break}h=c[3164]|0;if(h)nc[h&3]();do if(((fl(b,2)|0)==0?(ac[c[(f&p)+28>>2]&63](f,c[(b&p)+172>>2]|0,0)|0,(a[(b&n)+4>>0]|0)==0):0)?(o=c[(g&p)>>2]|0,q=c[(o&p)>>2]|0,(q|0)!=0):0){if(!(a[(b&n)+13>>0]|0))rc[c[(q&p)+32>>2]&127](o,1)|0;if((a[(u&n)>>0]|0)==5)break;a[(u&n)>>0]=1}while(0);h=c[3166]|0;if(!h){h=0;e=0}else{nc[h&3]();h=0;e=0}}else h=0}else h=0}else h=0;while(0);if(e)break a;if(h)F=35}else F=35;do if((F|0)==35){if(a[(b&n)+14>>0]|0){e=776;break a}e=fl(b,4)|0;if(e)break a;f=b+64|0;if(!(c[(c[(f&p)>>2]&p)>>2]|0)){h=c[(b&p)>>2]|0;g=b+172|0;e=pc[c[(h&p)+32>>2]&31](h,c[(g&p)>>2]|0,0,v)|0;if((e|0)==0&(c[(v&p)>>2]|0)!=0){c[(w&p)>>2]=0;e=tc[c[(h&p)+24>>2]&31](h,c[(g&p)>>2]|0,c[(f&p)>>2]|0,2050,w)|0;if(!e)if(c[(w&p)>>2]&1){c[(G&p)>>2]=46645;c[(G&p)+4>>2]=10788;bd(14,14848,G);h=c[(f&p)>>2]|0;g=c[(h&p)>>2]|0;if(!g)e=14;else{lc[c[(g&p)+4>>2]&127](h)|0;c[(h&p)>>2]=0;e=14}}else e=0}}else e=0;if(!(c[(c[(f&p)>>2]&p)>>2]|0))if((a[(b&n)+4>>0]|0)==0?(x=c[(b&p)+60>>2]|0,y=c[(x&p)>>2]|0,(y|0)!=0):0){if(!(a[(b&n)+13>>0]|0))rc[c[(y&p)+32>>2]&127](x,1)|0;if((a[(u&n)>>0]|0)!=5){a[(u&n)>>0]=1;F=52}else F=52}else F=52;else{e=Jo(b)|0;if(!e){e=Ko(b,1)|0;a[(z&n)>>0]=0;F=52}}if((F|0)==52)if(!e)break;D=e&255;if(!((D|0)==10|(D|0)==13))break a;c[(b&p)+40>>2]=e;a[(z&n)>>0]=6;break a}while(0);h=b+12|0;if((a[(h&n)>>0]|0)==0?(a[(b&n)+23>>0]|0)!=0:0){c[(A&p)>>2]=0;e=Io(b,A)|0;if(e)break a;if(c[(A&p)>>2]|0){e=c[(b&p)+60>>2]|0;e=tc[c[((c[(e&p)>>2]|0)&p)+8>>2]&31](e,B,16,24,0)|0;if(!((e|0)==0|(e|0)==522))break a}else{g=B+0|0;f=g+16|0;do{a[(g&n)>>0]=0;g=g+1|0}while((g|0)<(f|0))}if(Zv(b+104|0,B,16)|0)xn(b)}if(!(a[(h&n)>>0]|0)){e=Io(b,C)|0;if(!e){g=c[(b&p)>>2]|0;f=c[(b&p)+212>>2]|0;if(!(c[(C&p)>>2]|0)){e=ac[c[(g&p)+28>>2]&63](g,f,0)|0;c[(D&p)>>2]=0;if((e|0)!=5898)F=68}else{e=pc[c[(g&p)+32>>2]&31](g,f,0,D)|0;F=68}if((F|0)==68){if(e)break;if(c[(D&p)>>2]|0){e=el(b,0)|0;break}}e=b+5|0;if((a[(e&n)>>0]|0)==5){a[(e&n)>>0]=0;e=0}else e=0}}else e=0}else e=0;while(0);f=c[(E&p)>>2]|0;if(!f)F=78;else F=74}else F=74;while(0);if((F|0)==74){c[(G&p)>>2]=0;Lo(f);f=c[(E&p)>>2]|0;g=0;do{g=g+1|0;e=Mo(f,G,0,g)|0}while((e|0)==-1);if(!(c[(G&p)>>2]|e))F=78;else{xn(b);F=78}}if((F|0)==78){if((a[(b&n)+16>>0]|0)==0&(e|0)==0)e=Io(b,b+24|0)|0;if(!e){a[(b&n)+16>>0]=1;e=0;break}}No(b)}while(0);i=H;return e|0}function dl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;f=zg(c[(b&p)>>2]|0,d,g,f)|0;if(!f){g=c[(g&p)>>2]|0;f=c[(g&p)+8>>2]|0;c[(f&p)+56>>2]=c[(g&p)+4>>2];c[(f&p)+68>>2]=g;c[(f&p)+52>>2]=b;c[(f&p)+72>>2]=d;a[(f&n)+6>>0]=(d|0)==1?100:0;c[(e&p)>>2]=f;f=0}i=h;return f|0}function el(b,d){b=b|0;d=d|0;var e=0,f=0;do if((a[(b&n)+12>>0]|0)==0?(c[(b&p)+208>>2]|0)==0:0){d=c[(c[(b&p)+60>>2]&p)>>2]|0;if(!(a[(b&n)+4>>0]|0)){if((c[(d&p)>>2]|0)<=1){d=14;break}if(!(c[(d&p)+52>>2]|0)){d=14;break}}d=c[(b&p)+64>>2]|0;e=c[(d&p)>>2]|0;if(e){lc[c[(e&p)+4>>2]&127](d)|0;c[(d&p)>>2]=0}d=pn(b)|0;if(!d){a[(b&n)+5>>0]=5;a[(b&n)+16>>0]=0;d=0}}else f=10;while(0);if((f|0)==10){c[(d&p)>>2]=1;d=0}return d|0}function fl(b,d){b=b|0;d=d|0;var e=0,f=0;f=b+17|0;e=a[(f&n)>>0]|0;do if((e&255|0)<(d|0)|e<<24>>24==5){if(!(a[(b&n)+13>>0]|0)){e=c[(b&p)+60>>2]|0;e=rc[c[((c[(e&p)>>2]|0)&p)+28>>2]&127](e,d)|0;if(e)break;e=a[(f&n)>>0]|0}if(e<<24>>24!=5|(d|0)==4){a[(f&n)>>0]=d;e=0}else e=0}else e=0;while(0);return e|0}function gl(a){a=a|0;var b=0,d=0,e=0;b=c[(a&p)+4>>2]|0;a=c[(b&p)+444>>2]|0;if((a|0)!=0?(e=b+452|0,d=c[(e&p)>>2]|0,(d|0)>=0):0){a=rc[a&127](c[(b&p)+448>>2]|0,d)|0;if(!a)b=-1;else b=(c[(e&p)>>2]|0)+1|0;c[(e&p)>>2]=b}else a=0;return a|0}function hl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0;o=b+96|0;e=c[(o&p)>>2]|0;a:do if((e|0)<(d|0)?(a[(b&n)+6>>0]|0)!=0:0){f=b+92|0;s=rg(c[(f&p)>>2]|0,d*48|0,0)|0;if(!s)e=7;else{fw(s+(e*48|0)|0,0,(d-e|0)*48|0)|0;c[(f&p)>>2]=s;i=b+24|0;j=b+64|0;k=b+148|0;l=b+52|0;m=b+208|0;h=b+72|0;while(1){g=c[(i&p)>>2]|0;b=s+(e*48|0)|0;c[(s+(e*48|0)&p)+20>>2]=g;if((c[(c[(j&p)>>2]&p)>>2]|0)!=0?(r=h,q=c[(r&p)>>2]|0,r=c[(r&p)+4>>2]|0,(r|0)>0|(r|0)==0&q>>>0>0):0){c[(b&p)>>2]=q;c[(b&p)+4>>2]=r}else{c[(b&p)>>2]=c[(k&p)>>2];c[(b&p)+4>>2]=0}c[(s+(e*48|0)&p)+24>>2]=c[(l&p)>>2];f=qg(512,0)|0;if(!f)break;fw(f|0,0,512)|0;c[(f&p)>>2]=g;c[(s+(e*48|0)&p)+16>>2]=f;f=c[(m&p)>>2]|0;if(f){c[(s+(e*48|0)&p)+28>>2]=c[(f&p)+68>>2];c[(s+(e*48|0)&p)+32>>2]=c[(f&p)+76>>2];c[(s+(e*48|0)&p)+36>>2]=c[(f&p)+80>>2];c[(s+(e*48|0)&p)+40>>2]=c[(f&p)+104>>2]}e=e+1|0;c[(o&p)>>2]=e;if((e|0)>=(d|0)){e=0;break a}}c[(s+(e*48|0)&p)+16>>2]=f;e=7}}else e=0;while(0);return e|0}function il(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;do if(e){f=c[(e&p)+4>>2]|0;if(!(c[(f&p)>>2]|0)){f=Oo(a,d,e)|0;break}e=f+26|0;g=b[(e&o)>>1]|0;if(!(g<<16>>16)){h=a+12|0;c[(h&p)>>2]=(c[(h&p)>>2]|0)+1}b[(e&o)>>1]=g+1<<16>>16;if((d|0)==1)c[(a&p)+44>>2]=f}else f=0;while(0);return f|0}function jl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=a+96|0;d=c[(h&p)>>2]|0;if((d|0)>0){g=a+92|0;f=0;a=0;do{e=c[(g&p)>>2]|0;if((c[(e+(f*48|0)&p)+20>>2]|0)>>>0>=b>>>0){a=bi(c[(e+(f*48|0)&p)+16>>2]|0,b)|0|a;d=c[(h&p)>>2]|0}f=f+1|0}while((f|0)<(d|0))}else a=0;return a|0}function kl(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+32|0;if((i|0)>=(j|0))fa();y=A;u=A+16|0;v=A+12|0;x=A+8|0;s=c[(a&p)+68>>2]|0;a:do if((s|0)!=0?(b[(a&o)+40>>1]|0)!=0:0){t=d*383&8191;w=(s+33|0)>>>12;b:while(1){g=Po(a,w,u,v,x)|0;if(g)break a;g=(c[(u&p)>>2]|0)+(t<<1)|0;if(!(b[(g&o)>>1]|0))g=0;else{n=c[(x&p)>>2]|0;q=c[(u&p)>>2]|0;r=c[(v&p)>>2]|0;k=g;l=t;g=0;m=8192;while(1){h=(e[(k&o)>>1]|0)+n|0;if(h>>>0<=s>>>0)g=(c[(r+(e[(k&o)>>1]<<2)&p)>>2]|0)==(d|0)?h:g;if(!m){z=11;break b}l=l+1&8191;k=q+(l<<1)|0;if(!(b[(k&o)>>1]|0))break;else m=m+-1|0}}if((w|0)>0&(g|0)==0)w=w+-1|0;else{z=14;break}}if((z|0)==11){c[(y&p)>>2]=51262;c[(y&p)+4>>2]=10788;bd(11,13600,y);g=11;break}else if((z|0)==14){c[(f&p)>>2]=g;g=0;break}}else z=3;while(0);if((z|0)==3){c[(f&p)>>2]=0;g=0}i=A;return g|0}function ll(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=c[(b&p)+16>>2]|0;i=c[(b&p)+20>>2]|0;f=c[(h&p)+152>>2]|0;b=b+4|0;g=c[(b&p)>>2]|0;if(!d){d=sw(i+-1|0,0,f|0,((f|0)<0)<<31>>31|0)|0;j=c[(h&p)+60>>2]|0;d=tc[c[((c[(j&p)>>2]|0)&p)+8>>2]&31](j,g,f,d,G)|0;d=(d|0)==522?0:d}else{k=c[(h&p)+208>>2]|0;j=e[(k&o)+66>>1]|0;j=j<<16&65536|j&65024;d=sw(j|24|0,0,d+-1|0,0)|0;d=jw(d|0,G|0,56,0)|0;k=c[(k&p)+8>>2]|0;d=tc[c[((c[(k&p)>>2]|0)&p)+8>>2]&31](k,g,(j|0)<(f|0)?j:f,d,G)|0}do if((i|0)==1)if(!d){g=h+104|0;f=(c[(b&p)>>2]|0)+24|0;b=g+16|0;do{a[(g&n)>>0]=a[(f&n)>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(b|0));break}else{g=h+104|0;b=g+16|0;do{a[(g&n)>>0]=255;g=g+1|0}while((g|0)<(b|0));break}while(0);return d|0}function ml(a){a=a|0;var d=0,e=0;if(b[(a&o)+24>>1]&2)Qo(a,1);d=c[(a&p)+28>>2]|0;e=d+12|0;c[(e&p)>>2]=(c[(e&p)>>2]|0)+-1;if((c[(a&p)+20>>2]|0)==1)c[(d&p)+44>>2]=0;mc[c[8880>>2]&63](c[(d&p)+40>>2]|0,c[(a&p)>>2]|0,1);return}function nl(b){b=b|0;var d=0;d=a[(b&n)+16>>0]|0;do if(!(d<<24>>24==0|d<<24>>24==6)){if((d&255)<=1){if(a[(b&n)+4>>0]|0)break;Cl(b,0,0)|0;break}d=c[3164]|0;if(d)nc[d&3]();Hl(b)|0;d=c[3166]|0;if(d)nc[d&3]()}while(0);No(b);return}function ol(d){d=d|0;var e=0,f=0;f=d+26|0;e=(b[(f&o)>>1]|0)+-1<<16>>16;b[(f&o)>>1]=e;do if(!(e<<16>>16)){e=c[(d&p)+28>>2]|0;f=e+12|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+-1;if(b[(d&o)+24>>1]&2){if(!(c[(d&p)+36>>2]|0))break;Qo(d,3);break}if(a[(e&n)+28>>0]|0){if((c[(d&p)+20>>2]|0)==1)c[(e&p)+44>>2]=0;mc[c[8880>>2]&63](c[(e&p)+40>>2]|0,c[(d&p)>>2]|0,0)}}while(0);return}function pl(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=c[(e&p)+56>>2]|0;k=c[(e&p)+52>>2]|0;g=d[(e&n)+6>>0]|0;h=j+g|0;i=k+36|0;if(b[(k&o)+22>>1]&4)fw(h|0,0,(c[(i&p)>>2]|0)-g|0)|0;a[(h&n)>>0]=f;h=g+(f>>>1&4^12)|0;l=j+(g+1)|0;a[(l&n)>>0]=0;a[(l&n)+1>>0]=0;a[(l&n)+2>>0]=0;a[(l&n)+3>>0]=0;a[(j+g&n)+7>>0]=0;a[(j+g&n)+5>>0]=(c[(i&p)>>2]|0)>>>8;a[(j+g&n)+6>>0]=c[(i&p)>>2];b[(e&o)+16>>1]=(c[(i&p)>>2]|0)-h;Ro(e,f)|0;b[(e&o)+14>>1]=h;c[(e&p)+60>>2]=j+(c[(i&p)>>2]|0);c[(e&p)+64>>2]=j+(h&65535);a[(e&n)+1>>0]=0;b[(e&o)+20>>1]=(c[(k&p)+32>>2]|0)+65535;b[(e&o)+18>>1]=0;a[(e&n)>>0]=1;return}function ql(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;if((i|0)>=(j|0))fa();g=h+16|0;f=h;d=a+8|0;c[(g&p)>>2]=c[(d&p)>>2];c[(g&p)+4>>2]=c[(d&p)+4>>2];c[(g&p)+8>>2]=c[(d&p)+8>>2];c[(g&p)+12>>2]=c[(d&p)+12>>2];e=a+40|0;c[(f&p)>>2]=c[(e&p)>>2];c[(f&p)+4>>2]=c[(e&p)+4>>2];c[(f&p)+8>>2]=c[(e&p)+8>>2];c[(f&p)+12>>2]=c[(e&p)+12>>2];c[(e&p)>>2]=0;c[(e&p)+4>>2]=0;c[(e&p)+8>>2]=0;c[(e&p)+12>>2]=0;Ol(a+24|0);e=c[(f&p)+8>>2]|0;if(e)do{jg(0,c[(e&p)+8>>2]|0);e=c[(e&p)>>2]|0}while((e|0)!=0);Ol(f);c[(d&p)>>2]=0;c[(d&p)+4>>2]=0;c[(d&p)+8>>2]=0;c[(d&p)+12>>2]=0;d=c[(g&p)+8>>2]|0;if(d)do{kg(0,c[(d&p)+8>>2]|0);d=c[(d&p)>>2]|0}while((d|0)!=0);Ol(g);Ol(a+56|0);c[(a&p)+72>>2]=0;d=a+78|0;e=b[(d&o)>>1]|0;if(e&1){f=a+4|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;b[(d&o)>>1]=e&65534}i=h;return}function rl(a){a=a|0;var d=0,e=0;e=a+332|0;d=c[(e&p)>>2]|0;c[(e&p)>>2]=0;if(d){a=c[(a&p)+4>>2]|0;if(a)do{e=a+88|0;b[(e&o)>>1]=b[(e&o)>>1]|8;a=c[(a&p)+52>>2]|0}while((a|0)!=0);do{a=d;d=c[(d&p)+24>>2]|0;An(a)}while((d|0)!=0)}return}function sl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=a+20|0;b=c[(g&p)>>2]|0;j=a+16|0;d=c[(j&p)>>2]|0;if((b|0)>2){f=2;e=2;do{b=d+(f<<4)|0;if(!(c[(d+(f<<4)&p)+4>>2]|0)){mg(a,c[(b&p)>>2]|0);c[(b&p)>>2]=0}else{if((e|0)<(f|0)){d=d+(e<<4)|0;c[(d&p)>>2]=c[(b&p)>>2];c[(d&p)+4>>2]=c[(b&p)+4>>2];c[(d&p)+8>>2]=c[(b&p)+8>>2];c[(d&p)+12>>2]=c[(b&p)+12>>2]}e=e+1|0}f=f+1|0;b=c[(g&p)>>2]|0;d=c[(j&p)>>2]|0}while((f|0)<(b|0))}else e=2;fw(d+(e<<4)|0,0,b-e<<4|0)|0;c[(g&p)>>2]=e;if((e|0)<3?(h=c[(j&p)>>2]|0,i=a+456|0,(h|0)!=(i|0)):0){c[(i&p)>>2]=c[(h&p)>>2];c[(i&p)+4>>2]=c[(h&p)+4>>2];c[(i&p)+8>>2]=c[(h&p)+8>>2];c[(i&p)+12>>2]=c[(h&p)+12>>2];c[(i&p)+16>>2]=c[(h&p)+16>>2];c[(i&p)+20>>2]=c[(h&p)+20>>2];c[(i&p)+24>>2]=c[(h&p)+24>>2];c[(i&p)+28>>2]=c[(h&p)+28>>2];mg(a,h);c[(j&p)>>2]=i}return}function tl(f){f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;if((i|0)>=(j|0))fa();v=y;s=c[(f&p)+16>>2]|0;u=s+152|0;k=((c[(s&p)+148>>2]|0)>>>0)/((c[(u&p)>>2]|0)>>>0)|0;x=s+20|0;a[(x&n)>>0]=d[(x&n)>>0]|0|4;r=f+20|0;l=c[(r&p)>>2]|0;f=l+-1&0-k;w=f+1|0;h=~f;g=c[(s&p)+24>>2]|0;if(l>>>0<=g>>>0){if((f+k|0)>>>0>g>>>0)k=g+1+h|0}else k=l+1+h|0;a:do if((k|0)>0){q=s+56|0;t=s+204|0;m=0;f=0;while(1){h=m+w|0;if((h|0)!=(l|0)?(di(c[(q&p)>>2]|0,h)|0)!=0:0){l=ac[c[8876>>2]&63](c[((c[(t&p)>>2]|0)&p)+40>>2]|0,h,0)|0;h=il(c[(t&p)>>2]|0,h,l)|0;c[(v&p)>>2]=h;if(!h)g=0;else{f=(b[(h&o)+24>>1]&4)==0?f:1;Bg(h);g=0}}else if((h|0)==(((c[2514]|0)/(c[(u&p)>>2]|0)|0)+1|0))g=0;else{g=zg(s,h,v,0)|0;if(g)break a;l=c[(v&p)>>2]|0;g=ul(l)|0;f=(b[(l&o)+24>>1]&4)==0?f:1;Bg(l)}m=m+1|0;h=(g|0)==0;if(!((m|0)<(k|0)&h))break;l=c[(r&p)>>2]|0}if(h&(f|0)!=0){f=0;do{s=f+w|0;g=ac[c[8876>>2]&63](c[((c[(t&p)>>2]|0)&p)+40>>2]|0,s,0)|0;g=il(c[(t&p)>>2]|0,s,g)|0;if(g){s=g+24|0;b[(s&o)>>1]=e[(s&o)>>1]|0|4;Bg(g)}f=f+1|0}while((f|0)!=(k|0));g=0}}else g=0;while(0);a[(x&n)>>0]=(d[(x&n)>>0]|0)&251;i=y;return g|0}function ul(f){f=f|0;var g=0,h=0,k=0,l=0,m=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;E=i;i=i+16|0;if((i|0)>=(j|0))fa();C=E+4|0;t=E;D=c[(f&p)+16>>2]|0;x=D+16|0;a:do if((a[(x&n)>>0]|0)==2){s=c[(D&p)>>2]|0;k=c[(D&p)+40>>2]|0;if(!k){do if((c[(D&p)+208>>2]|0)==0?(q=D+5|0,(a[(q&n)>>0]|0)!=2):0){r=D+24|0;k=c[(r&p)>>2]|0;h=qg(512,0)|0;if(!h){c[(D&p)+56>>2]=0;g=7;break a}fw(h|0,0,512)|0;c[(h&p)>>2]=k;u=D+56|0;c[(u&p)>>2]=h;l=D+64|0;m=c[(l&p)>>2]|0;do if(!(c[(m&p)>>2]|0)){if((a[(q&n)>>0]|0)==4){k=m+0|0;h=k+40|0;do{c[(k&p)>>2]=0;k=k+4|0}while((k|0)<(h|0));c[(m&p)>>2]=14696;w=17;break}h=a[(D&n)+12>>0]|0;c[(t&p)>>2]=0;if((h<<24>>24==0?(c[(r&p)>>2]|0)!=0:0)?(g=c[(D&p)+60>>2]|0,g=ac[c[((c[(g&p)>>2]|0)&p)+40>>2]&63](g,20,t)|0,(g|0)!=12):0){k=(g|0)==0;if(k&(c[(t&p)>>2]|0)!=0){g=1032;break}if(k)w=15}else w=15;if((w|0)==15)g=tc[c[(s&p)+24>>2]&31](s,c[(D&p)+172>>2]|0,c[(l&p)>>2]|0,h<<24>>24!=0?4110:2054,0)|0;if(!g)w=17}else w=17;while(0);if((w|0)==17){c[(D&p)+44>>2]=0;g=D+72|0;a[(D&n)+19>>0]=0;c[(g&p)>>2]=0;c[(g&p)+4>>2]=0;c[(g&p)+8>>2]=0;c[(g&p)+12>>2]=0;g=So(D)|0;if(!g)break}ei(c[(u&p)>>2]|0);c[(u&p)>>2]=0;if(!g){w=20;break a}else break a}while(0);a[(x&n)>>0]=3;w=20}else g=k}else w=20;while(0);b:do if((w|0)==20){To(f);y=D+56|0;z=f+20|0;m=c[(z&p)>>2]|0;do if(!(di(c[(y&p)>>2]|0,m)|0))if(!(c[(D&p)+208>>2]|0)){if(m>>>0<=(c[(D&p)+28>>2]|0)>>>0?(B=D+64|0,A=c[(B&p)>>2]|0,(c[(A&p)>>2]|0)!=0):0){w=D+72|0;q=w;u=c[(q&p)>>2]|0;q=c[(q&p)+4>>2]|0;v=c[(f&p)+4>>2]|0;k=c[(D&p)+48>>2]|0;x=D+152|0;l=(c[(x&p)>>2]|0)+-200|0;if((l|0)>0)do{k=(d[(v+l&n)>>0]|0)+k|0;l=l+-200|0}while((l|0)>0);t=f+24|0;b[(t&o)>>1]=e[(t&o)>>1]|4;a[(C&n)>>0]=m>>>24;t=C+1|0;a[(t&n)>>0]=m>>>16;s=C+2|0;a[(s&n)>>0]=m>>>8;r=C+3|0;a[(r&n)>>0]=m;g=tc[c[((c[(A&p)>>2]|0)&p)+12>>2]&31](A,C,4,u,q)|0;if(g)break b;m=c[(B&p)>>2]|0;g=c[(x&p)>>2]|0;h=jw(u|0,q|0,4,0)|0;l=G;g=tc[c[((c[(m&p)>>2]|0)&p)+12>>2]&31](m,v,g,h,l)|0;if(g)break b;u=c[(B&p)>>2]|0;g=c[(x&p)>>2]|0;g=jw(h|0,l|0,g|0,((g|0)<0)<<31>>31|0)|0;a[(C&n)>>0]=k>>>24;a[(t&n)>>0]=k>>>16;a[(s&n)>>0]=k>>>8;a[(r&n)>>0]=k;g=tc[c[((c[(u&p)>>2]|0)&p)+12>>2]&31](u,C,4,g,G)|0;if(g)break b;g=(c[(x&p)>>2]|0)+8|0;u=w;u=jw(g|0,((g|0)<0)<<31>>31|0,c[(u&p)>>2]|0,c[(u&p)+4>>2]|0)|0;g=w;c[(g&p)>>2]=u;c[(g&p)+4>>2]=G;g=D+44|0;c[(g&p)>>2]=(c[(g&p)>>2]|0)+1;g=bi(c[(y&p)>>2]|0,c[(z&p)>>2]|0)|0;g=jl(D,c[(z&p)>>2]|0)|0|g;if(!g){w=34;break}else break b}if((a[(x&n)>>0]|0)!=4){w=f+24|0;b[(w&o)>>1]=e[(w&o)>>1]|4;w=34}else w=34}else w=34;else if((c[(D&p)+96>>2]|0)!=0?(Uo(f)|0)!=0:0)w=34;else g=0;while(0);if((w|0)==34)if((c[(D&p)+96>>2]|0)>0?(Uo(f)|0)!=0:0)g=Vo(f)|0;else g=0;k=D+24|0;h=c[(z&p)>>2]|0;if((c[(k&p)>>2]|0)>>>0>>0)c[(k&p)>>2]=h}while(0);i=E;return g|0}function vl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+128|0;if((i|0)>=(j|0))fa();k=l;e=c[(a&p)>>2]|0;d=(e|0)==0;if(!d){b=e;do{a=b;b=c[(b&p)+32>>2]|0;c[(a&p)+12>>2]=b}while((b|0)!=0);b=k+0|0;a=b+128|0;do{c[(b&p)>>2]=0;b=b+4|0}while((b|0)<(a|0));if(d)a=0;else{g=k+124|0;do{b=e+12|0;a=e;e=c[(b&p)>>2]|0;c[(b&p)>>2]=0;b=0;do{f=k+(b<<2)|0;d=c[(f&p)>>2]|0;if(!d){d=f;h=8;break}a=Wo(d,a)|0;c[(f&p)>>2]=0;b=b+1|0}while((b|0)<31);if((h|0)==8){h=0;c[(d&p)>>2]=a}if((b|0)==31)c[(g&p)>>2]=Wo(c[(g&p)>>2]|0,a)|0}while((e|0)!=0);a=c[(k&p)>>2]|0}}else{b=k+0|0;a=b+128|0;do{c[(b&p)>>2]=0;b=b+4|0}while((b|0)<(a|0));a=0}b=1;do{a=Wo(a,c[(k+(b<<2)&p)>>2]|0)|0;b=b+1|0}while((b|0)!=32);i=l;return a|0}function wl(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+80|0;if((i|0)>=(j|0))fa();s=M+32|0;t=M+28|0;C=M;v=M+40|0;K=M+24|0;c[(K&p)>>2]=f;z=(h|0)==0;if(!z){c[(K&p)>>2]=f;if(!f){f=0;q=0}else{q=0;m=K;do{A=(c[(f&p)+20>>2]|0)>>>0>g>>>0;H=f+12|0;q=q+(A&1^1)|0;m=A?m:H;f=c[(H&p)>>2]|0;c[(m&p)>>2]=f}while((f|0)!=0);f=c[(K&p)>>2]|0}}else q=1;H=e+192|0;c[(H&p)>>2]=(c[(H&p)>>2]|0)+q;if((c[(f&p)+20>>2]|0)==1)yl(f);I=c[(e&p)+208>>2]|0;J=c[(e&p)+152>>2]|0;u=a[(e&n)+10>>0]|0;A=u&255;m=I+40|0;if(!(b[(m&o)>>1]|0)){do if(c[((c[(c[(I&p)+32>>2]&p)>>2]|0)&p)+96>>2]|0){cd(4,s);q=I+43|0;if(!(a[(q&n)>>0]|0)){k=c[(I&p)+4>>2]|0;k=pc[c[((c[(k&p)>>2]|0)&p)+56>>2]&31](k,4,4,10)|0;if((k|0)==5){B=14;break}else if(k)break}Xo(I,c[(s&p)>>2]|0);if(!(a[(q&n)>>0]|0)){B=c[(I&p)+4>>2]|0;pc[c[((c[(B&p)>>2]|0)&p)+56>>2]&31](B,4,4,9)|0;B=14}else B=14}else{q=I+43|0;B=14}while(0);if((B|0)==14){if(!(a[(q&n)>>0]|0)){H=c[(I&p)+4>>2]|0;pc[c[((c[(H&p)>>2]|0)&p)+56>>2]&31](H,3,1,5)|0}b[(m&o)>>1]=-1;q=0;do{q=q+1|0;k=Mo(I,t,1,q)|0}while((k|0)==-1)}if(!k)B=19}else B=19;a:do if((B|0)==19){H=I+68|0;t=c[(H&p)>>2]|0;if(!t){a[(v&n)>>0]=55;a[(v&n)+1>>0]=127;a[(v&n)+2>>0]=6;a[(v&n)+3>>0]=-126;a[(v&n)+4>>0]=0;a[(v&n)+5>>0]=45;a[(v&n)+6>>0]=-30;a[(v&n)+7>>0]=24;a[(v&n)+8>>0]=J>>>24;a[(v&n)+9>>0]=J>>>16;a[(v&n)+10>>0]=J>>>8;a[(v&n)+11>>0]=J;y=c[(I&p)+104>>2]|0;a[(v&n)+12>>0]=y>>>24;a[(v&n)+13>>0]=y>>>16;a[(v&n)+14>>0]=y>>>8;a[(v&n)+15>>0]=y;if(!y)cd(8,I+84|0);l=I+84|0;q=l;q=d[(q&n)>>0]|d[(q&n)+1>>0]<<8|d[(q&n)+2>>0]<<16|d[(q&n)+3>>0]<<24;l=l+4|0;l=d[(l&n)>>0]|d[(l&n)+1>>0]<<8|d[(l&n)+2>>0]<<16|d[(l&n)+3>>0]<<24;s=v+16|0;m=s;a[(m&n)>>0]=q;a[(m&n)+1>>0]=q>>8;a[(m&n)+2>>0]=q>>16;a[(m&n)+3>>0]=q>>24;s=s+4|0;a[(s&n)>>0]=l;a[(s&n)+1>>0]=l>>8;a[(s&n)+2>>0]=l>>16;a[(s&n)+3>>0]=l>>24;s=v+24|0;l=v;m=0;q=0;do{m=m+q+(c[(l&p)>>2]|0)|0;q=m+q+(c[(l&p)+4>>2]|0)|0;l=l+8|0}while(l>>>0>>0);a[(s&n)>>0]=m>>>24;a[(v&n)+25>>0]=m>>>16;a[(v&n)+26>>0]=m>>>8;a[(v&n)+27>>0]=m;a[(v&n)+28>>0]=q>>>24;a[(v&n)+29>>0]=q>>>16;a[(v&n)+30>>0]=q>>>8;a[(v&n)+31>>0]=q;c[(I&p)+36>>2]=J;a[(I&n)+65>>0]=0;c[(I&p)+76>>2]=m;c[(I&p)+80>>2]=q;a[(I&n)+47>>0]=1;q=I+8|0;k=c[(q&p)>>2]|0;k=tc[c[((c[(k&p)>>2]|0)&p)+12>>2]&31](k,v,32,0,0)|0;if(k)break;if((a[(I&n)+48>>0]|0)!=0&u<<24>>24!=0?(r=c[(q&p)>>2]|0,r=rc[c[((c[(r&p)>>2]|0)&p)+20>>2]&127](r,A&19)|0,(r|0)!=0):0){k=r;break}}else q=I+8|0;c[(C&p)>>2]=I;v=c[(q&p)>>2]|0;c[(C&p)+4>>2]=v;w=C+8|0;x=w;c[(x&p)>>2]=0;c[(x&p)+4>>2]=0;c[(C&p)+16>>2]=A;c[(C&p)+20>>2]=J;x=J+24|0;y=((x|0)<0)<<31>>31;m=sw(t|0,0,x|0,y|0)|0;m=jw(m|0,G|0,32,0)|0;k=G;if(!f){l=m;u=0}else{r=k;l=t;u=f;while(1){t=l+1|0;if(z)l=0;else l=(c[(u&p)+12>>2]|0)==0?g:0;k=Yo(C,u,l,m,r)|0;if(k)break a;m=jw(m|0,r|0,x|0,y|0)|0;k=G;s=c[(u&p)+12>>2]|0;if(!s){l=m;break}else{r=k;l=t;u=s}}}z=(h|0)!=0;do if(!((A&32|0)==0|z^1)){if(!(a[(I&n)+49>>0]|0)){m=0;k=rc[c[((c[(v&p)>>2]|0)&p)+20>>2]&127](v,A&19)|0;break}q=c[(q&p)>>2]|0;m=c[((c[(q&p)>>2]|0)&p)+44>>2]|0;if(m){q=lc[m&127](q)|0;if((q|0)<32){m=512;q=0}else B=37}else{q=4096;B=37}if((B|0)==37){B=(q|0)>65536;m=B?65536:q;q=B?0:((q|0)<0)<<31>>31}B=jw(l|0,k|0,-1,-1)|0;B=jw(B|0,G|0,m|0,q|0)|0;s=G;r=rw(B|0,s|0,m|0,q|0)|0;r=dw(B|0,s|0,r|0,G|0)|0;s=G;B=w;c[(B&p)>>2]=r;c[(B&p)+4>>2]=s;if((k|0)<(s|0)|(k|0)==(s|0)&l>>>0>>0){q=k;m=0;while(1){k=Yo(C,u,g,l,q)|0;if(k)break a;l=jw(l|0,q|0,x|0,y|0)|0;q=G;m=m+1|0;if(!((q|0)<(s|0)|(q|0)==(s|0)&l>>>0>>0)){k=0;break}}}else{m=0;k=0}}else{m=0;k=0}while(0);if((z?(D=I+47|0,(a[(D&n)>>0]|0)!=0):0)?(F=I+16|0,E=c[(F&p)>>2]|0,F=c[(F&p)+4>>2]|0,(F|0)>-1|(F|0)==-1&E>>>0>4294967295):0){h=sw(m+t|0,0,x|0,y|0)|0;h=jw(h|0,G|0,32,0)|0;C=G;B=(C|0)>(F|0)|(C|0)==(F|0)&h>>>0>E>>>0;Zo(I,B?h:E,B?C:F);a[(D&n)>>0]=0}l=c[(H&p)>>2]|0;if((f|0)!=0&(k|0)==0)do{l=l+1|0;k=_o(I,l,c[(f&p)+20>>2]|0)|0;f=c[(f&p)+12>>2]|0}while((f|0)!=0&(k|0)==0);f=(k|0)==0;if(f&(m|0)>0){q=u+20|0;do{l=l+1|0;m=m+-1|0;k=_o(I,l,c[(q&p)>>2]|0)|0;f=(k|0)==0}while(f&(m|0)>0)}if(f){b[(I&o)+66>>1]=J&65280|J>>>16;c[(H&p)>>2]=l;if(z){H=I+60|0;c[(H&p)>>2]=(c[(H&p)>>2]|0)+1;c[(I&p)+72>>2]=g;$o(I);c[(I&p)+12>>2]=l}}else if(k)break;l=e+88|0;k=c[(l&p)>>2]|0;if((k|0)!=0?(L=c[(K&p)>>2]|0,(L|0)!=0):0){f=k;k=L;while(1){ap(f,c[(k&p)+20>>2]|0,c[(k&p)+4>>2]|0);k=c[(k&p)+12>>2]|0;if(!k){k=0;break a}f=c[(l&p)>>2]|0}}else k=0}while(0);i=M;return k|0}function xl(d){d=d|0;var f=0,g=0;f=d+24|0;if(((b[(f&o)>>1]&2)!=0?(Qo(d,1),b[(f&o)>>1]=e[(f&o)>>1]&65529,(b[(d&o)+26>>1]|0)==0):0)?(g=c[(d&p)+28>>2]|0,(a[(g&n)+28>>0]|0)!=0):0){if((c[(d&p)+20>>2]|0)==1)c[(g&p)+44>>2]=0;mc[c[8880>>2]&63](c[(g&p)+40>>2]|0,c[(d&p)>>2]|0,0)}return}function yl(b){b=b|0;var e=0,f=0,g=0,h=0,i=0;f=c[(b&p)+16>>2]|0;f=((d[(f&n)+105>>0]|0)<<16|(d[(f&n)+104>>0]|0)<<24|(d[(f&n)+106>>0]|0)<<8|(d[(f&n)+107>>0]|0))+1|0;b=b+4|0;e=c[(b&p)>>2]|0;i=f>>>24&255;a[(e&n)+24>>0]=i;h=f>>>16&255;a[(e&n)+25>>0]=h;g=f>>>8&255;a[(e&n)+26>>0]=g;f=f&255;a[(e&n)+27>>0]=f;e=c[(b&p)>>2]|0;a[(e&n)+92>>0]=i;a[(e&n)+93>>0]=h;a[(e&n)+94>>0]=g;a[(e&n)+95>>0]=f;b=c[(b&p)>>2]|0;a[(b&n)+96>>0]=0;a[(b&n)+97>>0]=45;a[(b&n)+98>>0]=-26;a[(b&n)+99>>0]=9;return}function zl(f,g){f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+32|0;if((i|0)>=(j|0))fa();r=y+16|0;u=y;k=bp(f)|0;a:do if(!k){do if(!(a[(f&n)+7>>0]|0)){w=f+64|0;if((c[(c[(w&p)>>2]&p)>>2]|0)!=0?(a[(f&n)+5>>0]|0)!=4:0){q=c[(f&p)+60>>2]|0;q=lc[c[((c[(q&p)>>2]|0)&p)+48>>2]&127](q)|0;v=(q&512|0)==0;if(v){l=u;c[(l&p)>>2]=-117058087;c[(l&p)+4>>2]=-681336544;l=c[(f&p)+44>>2]|0;a[(u&n)+8>>0]=l>>>24;a[(u&n)+9>>0]=l>>>16;a[(u&n)+10>>0]=l>>>8;a[(u&n)+11>>0]=l;l=f+72|0;k=c[(l&p)>>2]|0;l=c[(l&p)+4>>2]|0;if((k|0)==0&(l|0)==0){l=0;k=0}else{k=jw(k|0,l|0,-1,-1)|0;l=c[(f&p)+148>>2]|0;k=qw(k|0,G|0,l|0,0)|0;k=jw(k|0,G|0,1,0)|0;l=sw(k|0,G|0,l|0,0)|0;k=G}m=c[(w&p)>>2]|0;m=tc[c[((c[(m&p)>>2]|0)&p)+8>>2]&31](m,r,8,l,k)|0;if(!m){if(!(Zv(r,14808,8)|0)){s=c[(w&p)>>2]|0;s=tc[c[((c[(s&p)>>2]|0)&p)+12>>2]&31](s,14976,1,l,k)|0;t=12}}else{s=m;t=12}if((t|0)==12?!((s|0)==0|(s|0)==522):0){h=s;break a}k=q&1024;if((a[(f&n)+8>>0]|0)!=0&(k|0)==0?(h=c[(w&p)>>2]|0,h=rc[c[((c[(h&p)>>2]|0)&p)+20>>2]&127](h,d[(f&n)+11>>0]|0)|0,(h|0)!=0):0)break a;t=c[(w&p)>>2]|0;h=f+80|0;h=tc[c[((c[(t&p)>>2]|0)&p)+12>>2]&31](t,u,12,c[(h&p)>>2]|0,c[(h&p)+4>>2]|0)|0;if(h)break a}else k=q&1024;if((k|0)==0?(u=c[(w&p)>>2]|0,x=a[(f&n)+11>>0]|0,x=rc[c[((c[(u&p)>>2]|0)&p)+20>>2]&127](u,(x<<24>>24==3?16:0)|x&255)|0,(x|0)!=0):0){h=x;break a}s=f+72|0;t=c[(s&p)+4>>2]|0;u=f+80|0;c[(u&p)>>2]=c[(s&p)>>2];c[(u&p)+4>>2]=t;if((g|0)==0|v^1)break;c[(f&p)+44>>2]=0;h=So(f)|0;if(!h)break;else break a}t=f+72|0;u=c[(t&p)+4>>2]|0;v=f+80|0;c[(v&p)>>2]=c[(t&p)>>2];c[(v&p)+4>>2]=u}while(0);k=c[(f&p)+204>>2]|0;h=c[(k&p)>>2]|0;if(h)do{v=h+24|0;b[(v&o)>>1]=e[(v&o)>>1]&65531;h=c[(h&p)+32>>2]|0}while((h|0)!=0);c[(k&p)+8>>2]=c[(k&p)+4>>2];a[(f&n)+16>>0]=4;h=0}else h=k;while(0);i=y;return h|0}function Al(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;if((i|0)>=(j|0))fa();l=y;x=d+60|0;g=c[(x&p)>>2]|0;if(!((c[(g&p)>>2]|0)==0?(f=c[(d&p)>>2]|0,f=tc[c[(f&p)+24>>2]&31](f,0,g,c[(d&p)+144>>2]&556897|30,0)|0,(f|0)!=0):0)){g=d+36|0;f=c[(g&p)>>2]|0;h=d+24|0;k=c[(h&p)>>2]|0;do if(f>>>0>>0){if((c[(e&p)+12>>2]|0)==0?(c[(e&p)+20>>2]|0)>>>0<=f>>>0:0)break;q=c[(d&p)+152>>2]|0;q=sw(k|0,0,q|0,((q|0)<0)<<31>>31|0)|0;r=l;c[(r&p)>>2]=q;c[(r&p)+4>>2]=G;r=c[(x&p)>>2]|0;ac[c[((c[(r&p)>>2]|0)&p)+40>>2]&63](r,5,l)|0;c[(g&p)>>2]=c[(h&p)>>2]}while(0);if(!e)f=0;else{s=d+24|0;t=d+152|0;u=d+104|0;v=d+32|0;w=d+192|0;r=d+88|0;do{q=c[(e&p)+20>>2]|0;if(q>>>0<=(c[(s&p)>>2]|0)>>>0?(b[(e&o)+24>>1]&32)==0:0){l=c[(t&p)>>2]|0;d=sw(l|0,((l|0)<0)<<31>>31|0,q+-1|0,0)|0;k=G;h=(q|0)==1;if(h){yl(e);l=c[(t&p)>>2]|0}m=e+4|0;g=c[(m&p)>>2]|0;f=c[(x&p)>>2]|0;f=tc[c[((c[(f&p)>>2]|0)&p)+12>>2]&31](f,g,l,d,k)|0;if(h){d=u+0|0;l=g+24|0;k=d+16|0;do{a[(d&n)>>0]=a[(l&n)>>0]|0;d=d+1|0;l=l+1|0}while((d|0)<(k|0))}if(q>>>0>(c[(v&p)>>2]|0)>>>0)c[(v&p)>>2]=q;c[(w&p)>>2]=(c[(w&p)>>2]|0)+1;ap(c[(r&p)>>2]|0,q,c[(m&p)>>2]|0)}else f=0;e=c[(e&p)+12>>2]|0}while((f|0)==0&(e|0)!=0)}}i=y;return f|0}function Bl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();m=s;o=b+60|0;f=c[(o&p)>>2]|0;g=c[(f&p)>>2]|0;do if((g|0)!=0?((a[(b&n)+16>>0]|0)+-1&255)>2:0){q=c[(b&p)+152>>2]|0;g=rc[c[(g&p)+24>>2]&127](f,m)|0;h=((q|0)<0)<<31>>31;k=sw(q|0,h|0,d|0,0)|0;l=G;if(!g){f=m;g=c[(f&p)>>2]|0;f=c[(f&p)+4>>2]|0;if((g|0)==(k|0)&(f|0)==(l|0))e=0;else{if(!((f|0)>(l|0)|(f|0)==(l|0)&g>>>0>k>>>0)){m=jw(g|0,f|0,q|0,h|0)|0;g=G;if(!((g|0)>(l|0)|(g|0)==(l|0)&m>>>0>k>>>0)){r=c[(b&p)+200>>2]|0;fw(r|0,0,q|0)|0;o=c[(o&p)>>2]|0;e=dw(k|0,l|0,q|0,h|0)|0;e=tc[c[((c[(o&p)>>2]|0)&p)+12>>2]&31](o,r,q,e,G)|0;r=9}}else{e=c[(o&p)>>2]|0;e=ac[c[((c[(e&p)>>2]|0)&p)+16>>2]&63](e,k,l)|0;r=9}if((r|0)==9?(e|0)!=0:0)break;c[(b&p)+32>>2]=d;e=0}}else e=g}else e=0;while(0);i=s;return e|0} -function Zr(f,g,k,l,m){f=f|0;g=g|0;k=k|0;l=l|0;m=m|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;if((i|0)>=(j|0))fa();y=B;z=B+8|0;c[(z&p)>>2]=0;a:do if(!g){c[(m&p)>>2]=0;r=0}else{s=a[(g&n)>>0]|0;if(s<<24>>24==-98)do{g=c[(g&p)+12>>2]|0;s=a[(g&n)>>0]|0}while(s<<24>>24==-98);if(s<<24>>24==-97)u=d[(g&n)+38>>0]|0;else u=s&255;if((u|0)==38){t=Xq(c[(g&p)+8>>2]|0,0)|0;r=Zr(f,c[(g&p)+12>>2]|0,k,t,m)|0;s=c[(m&p)>>2]|0;if(!s)break;gm(s,t,1);fm(c[(m&p)>>2]|0,l,1);break}else if((u|0)==157){g=c[(g&p)+12>>2]|0;u=a[(g&n)>>0]|0;if((u&-2)<<24>>24==-124){t=-1;s=-1;x=u&255;u=26016;A=12}else A=30}else{t=1;s=0;x=u;u=10360;A=12}b:do if((A|0)==12){c:do switch(x|0){case 157:{g=c[(g&p)+12>>2]|0;A=30;break b}case 97:case 132:case 133:{r=mh(f,40,0)|0;if(!r){c[(z&p)>>2]=r;break c}v=r+0|0;w=v+40|0;do{a[(v&n)>>0]=0;v=v+1|0}while((v|0)<(w|0));b[(r&o)+8>>1]=1;c[(r&p)+32>>2]=f;c[(z&p)>>2]=r;do if(!(c[(g&p)+4>>2]&1024)){t=c[(g&p)+8>>2]|0;c[(y&p)>>2]=u;c[(y&p)+4>>2]=t;t=uh(f,19456,y)|0;if(!t)break c;if(r)Xg(r,t,-1,1,75)|0}else{u=c[(g&p)+8>>2]|0;u=sw(u|0,((u|0)<0)<<31>>31|0,t|0,s|0)|0;t=G;g=r+8|0;if(!(b[(g&o)>>1]&9312)){z=r;c[(z&p)>>2]=u;c[(z&p)+4>>2]=t;b[(g&o)>>1]=4;break}else{Zg(r,u,t);break}}while(0);if((x&-2|0)==132&l<<24>>24==65)fm(r,67,1);else fm(r,l,1);s=r+8|0;g=e[(s&o)>>1]|0;if(g&12)b[(s&o)>>1]=g&65533;if(k<<24>>24==1){s=r;r=0;break b}s=r;r=Yl(r,k&255)|0;break b}case 101:{r=mh(f,40,0)|0;if(!r){c[(z&p)>>2]=r;break c}else{v=r+0|0;w=v+40|0;do{a[(v&n)>>0]=0;v=v+1|0}while((v|0)<(w|0));b[(r&o)+8>>1]=1;c[(r&p)+32>>2]=f;c[(z&p)>>2]=r;s=r;r=0;break b}}case 134:{r=mh(f,40,0)|0;if(!r){c[(z&p)>>2]=r;break c}v=r+0|0;w=v+40|0;do{a[(v&n)>>0]=0;v=v+1|0}while((v|0)<(w|0));b[(r&o)+8>>1]=1;c[(r&p)+32>>2]=f;c[(z&p)>>2]=r;s=(c[(g&p)+8>>2]|0)+2|0;g=s;while(1)if(!(a[(g&n)>>0]|0))break;else g=g+1|0;z=(g-s&1073741823)+-1|0;Xg(r,Yt(f,s,z)|0,(z|0)/2|0,0,75)|0;s=r;r=0;break b}default:{s=0;r=0;break b}}while(0);a[(f&n)+65>>0]=1;mg(f,0);Mh(r);r=7;break a}while(0);if((A|0)==30){y=(Zr(f,g,k,l,z)|0)==0;s=c[(z&p)>>2]|0;if(y&(s|0)!=0){op(s);t=s+8|0;g=b[(t&o)>>1]|0;do if(!(g&8)){u=s;r=c[(u&p)>>2]|0;u=c[(u&p)+4>>2]|0;if((r|0)==0&(u|0)==-2147483648){h[(s&q)>>3]=9223372036854775808.0;b[(t&o)>>1]=g&48640|8;break}else{y=dw(0,0,r|0,u|0)|0;z=s;c[(z&p)>>2]=y;c[(z&p)+4>>2]=G;break}}else h[(s&q)>>3]=-+h[(s&q)>>3];while(0);fm(s,l,k);r=0}else r=0}c[(m&p)>>2]=s}while(0);i=B;return r|0}function _r(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;do if((d|0)!=0?(g=b+19|0,h=a[(g&n)>>0]|0,(h&255)<8):0){f=0;e=b+116|0;while(1){if((c[(e&p)+12>>2]|0)==(d|0)){f=5;break}f=f+1|0;if((f|0)>=10){f=7;break}else e=e+20|0}if((f|0)==5){a[(e&n)+6>>0]=1;break}else if((f|0)==7){a[(g&n)>>0]=h+1<<24>>24;c[(b+((h&255)<<2)&p)+24>>2]=d;break}}while(0);return}function $r(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0;q=i;i=i+32|0;if((i|0)>=(j|0))fa();o=q;e=b+484|0;l=c[(e&p)>>2]|0;m=c[(b&p)>>2]|0;do if((l|0)!=0?(bs(b),c[(b&p)+512>>2]=0,(c[(l&p)+52>>2]|0)>=1):0){if(a[(m&n)+145>>0]|0)if(!(Ik((c[(l&p)+68>>2]|0)+8|0,c[(l&p)>>2]|0,l)|0)){c[(e&p)>>2]=0;break}else{a[(m&n)+65>>0]=1;break}if(d)c[(b&p)+500>>2]=(c[(d&p)>>2]|0)-(c[(b&p)+496>>2]|0)+(c[(d&p)+4>>2]|0);c[(o&p)>>2]=b+496;k=uh(m,25256,o)|0;d=c[(l&p)+68>>2]|0;a:do if(d){f=c[(m&p)+20>>2]|0;if((f|0)>0){g=c[(m&p)+16>>2]|0;h=0;while(1){e=h+1|0;if((c[(g+(h<<4)&p)+12>>2]|0)==(d|0)){e=h;break a}if((e|0)<(f|0))h=e;else break}}else e=0}else e=-1e6;while(0);g=c[(l&p)>>2]|0;h=c[(b&p)+384>>2]|0;c[(o&p)>>2]=c[((c[(m&p)+16>>2]|0)+(e<<4)&p)>>2];c[(o&p)+4>>2]=(e|0)==1?13184:13208;c[(o&p)+8>>2]=g;c[(o&p)+12>>2]=g;c[(o&p)+16>>2]=k;c[(o&p)+20>>2]=h;Br(b,25280,o);mg(m,k);k=Oq(b)|0;Dr(b,e);wh(k,144,0,0,0)|0;c[(o&p)>>2]=c[(l&p)>>2];Ir(k,e,uh(m,25368,o)|0);b=b+72|0;o=(c[(b&p)>>2]|0)+1|0;c[(b&p)>>2]=o;b=c[(l&p)>>2]|0;xh(k,wh(k,97,0,o,0)|0,b,0);wh(k,147,e,o,0)|0}while(0);i=q;return}function as(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=b+52|0;i=c[(h&p)>>2]|0;e=i+1|0;c[(h&p)>>2]=e;g=(i<<2)+8|0;f=b+56|0;g=ro(a,c[(f&p)>>2]|0,g,((g|0)<0)<<31>>31)|0;if(!g){if((i|0)>0){b=0;do{mg(a,c[((c[(f&p)>>2]|0)+(b<<2)&p)>>2]|0);b=b+1|0}while((b|0)!=(i|0))}mg(a,d);mg(a,c[(f&p)>>2]|0);c[(h&p)>>2]=0}else{c[(g+(i<<2)&p)>>2]=d;c[(g+(e<<2)&p)>>2]=0}c[(f&p)>>2]=g;return}function bs(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[(b&p)+512>>2]|0;if((d|0)!=0?(g=c[(b&p)+484>>2]|0,(g|0)!=0):0){e=c[(b&p)+516>>2]|0;f=c[(b&p)>>2]|0;b=jw(e|0,((e|0)<0)<<31>>31|0,1,0)|0;b=mh(f,b,G)|0;if(!b)b=0;else{kw(b|0,d|0,e|0)|0;a[(b+e&n)>>0]=0}as(f,g,b)}return}function cs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();l=q;m=c[(b&p)>>2]|0;o=Wq(m,e)|0;k=(d|0)!=0;if((o|0)!=0&k?(h=c[(d&p)>>2]|0,(h|0)>0):0){e=h;h=0;do{if(!(dd(o,c[(d+(h<<4)&p)+8>>2]|0)|0)){c[(l&p)>>2]=o;th(b,25184,l);e=c[(d&p)>>2]|0}h=h+1|0}while((h|0)<(e|0))}if(k){h=(c[(d&p)>>2]<<4)+24|0;h=ro(m,d,h,((h|0)<0)<<31>>31)|0;if(!h)e=10;else{d=h;e=11}}else{e=mh(m,24,0)|0;if(!e)e=10;else{h=e+0|0;d=h+24|0;do{a[(h&n)>>0]=0;h=h+1|0}while((h|0)<(d|0));d=e;e=11}}if((e|0)==10){Nk(m,f);Mk(m,g,1);mg(m,o)}else if((e|0)==11){m=d+8|0;c[(m+(c[(d&p)>>2]<<4)&p)+8>>2]=g;g=c[(d&p)>>2]|0;c[(m+(g<<4)&p)+4>>2]=f;c[(m+(g<<4)&p)>>2]=o;c[(m+(g<<4)&p)+12>>2]=0;c[(d&p)>>2]=g+1}i=q;return d|0}function ds(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,k=0,l=0,m=0,q=0;q=i;i=i+96|0;if((i|0)>=(j|0))fa();m=q+48|0;f=q;g=c[(c[(b&p)+32>>2]&p)>>2]|0;h=m+0|0;k=g+0|0;l=h+48|0;do{a[(h&n)>>0]=a[(k&n)>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));if((a[(b&n)+43>>0]|0)!=2){h=c[(b&p)+4>>2]|0;cc[c[((c[(h&p)>>2]|0)&p)+60>>2]&31](h)}h=f+0|0;k=g+48|0;l=h+48|0;do{a[(h&n)>>0]=a[(k&n)>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));if((Zv(m,f,48)|0)==0?(a[(m&n)+12>>0]|0)!=0:0){k=m+40|0;l=m;g=0;f=0;do{g=g+f+(c[(l&p)>>2]|0)|0;f=g+f+(c[(l&p)+4>>2]|0)|0;l=l+8|0}while(l>>>0>>0);if((g|0)==(c[(k&p)>>2]|0)?(f|0)==(c[(m&p)+44>>2]|0):0){f=b+52|0;if(!(Zv(f,m,48)|0))f=0;else{c[(d&p)>>2]=1;h=f+0|0;k=m+0|0;l=h+48|0;do{c[(h&p)>>2]=c[(k&p)>>2];h=h+4|0;k=k+4|0}while((h|0)<(l|0));f=e[(b&o)+66>>1]|0;c[(b&p)+36>>2]=f<<16&65536|f&65024;f=0}}else f=1}else f=1;i=q;return f|0}function es(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;b=tc[c[((c[(a&p)>>2]|0)&p)+8>>2]&31](a,g,4,b,e)|0;if(!b)c[(f&p)>>2]=(d[(g&n)+1>>0]|0)<<16|(d[(g&n)>>0]|0)<<24|(d[(g&n)+2>>0]|0)<<8|(d[(g&n)+3>>0]|0);i=h;return b|0}function fs(a,b){a=a|0;b=b|0;var c=0,d=0,f=0;if(b>>>0<0|(b|0)==0&a>>>0<8)if(b>>>0<0|(b|0)==0&a>>>0<2)a=0;else{c=40;do{c=(c&65535)+65526|0;a=iw(a|0,b|0,1)|0;b=G}while(b>>>0<0|(b|0)==0&a>>>0<8);c=c&65535;f=11}else{if(b>>>0>0|(b|0)==0&a>>>0>255){d=b;c=40;while(1){c=(c&65535)+40|0;f=mw(a|0,d|0,4)|0;b=G;if(d>>>0>0|(d|0)==0&a>>>0>4095){a=f;d=b}else{a=f;break}}c=c&65535}else c=40;if(b>>>0>0|(b|0)==0&a>>>0>15){while(1){c=(c&65535)+10&65535;d=mw(a|0,b|0,1)|0;if(b>>>0>0|(b|0)==0&a>>>0>31){a=d;b=G}else{a=d;break}}f=11}else f=11}if((f|0)==11)a=(c&65535)+65526+(e[((a&7)<<1&o)+13496>>1]|0)&65535;return a|0}function gs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=c[(b&p)+408>>2]|0;k=(k|0)==0?b:k;i=k+396|0;h=c[(i&p)>>2]|0;j=c[(k&p)+400>>2]|0;a:do if((h|0)>0){b=0;while(1){if((c[(j+(b<<4)&p)>>2]|0)==(d|0)?(c[(j+(b<<4)&p)+4>>2]|0)==(e|0):0)break;b=b+1|0;if((b|0)>=(h|0)){l=8;break a}}b=j+(b<<4)+8|0;if(!(a[(b&n)>>0]|0))h=f<<24>>24!=0&1;else h=1;a[(b&n)>>0]=h}else l=8;while(0);do if((l|0)==8){b=(h<<4)+16|0;b=Wl(c[(k&p)>>2]|0,j,b,((b|0)<0)<<31>>31)|0;c[(k&p)+400>>2]=b;if(!b){c[(i&p)>>2]=0;a[((c[(k&p)>>2]|0)&n)+65>>0]=1;break}else{h=c[(i&p)>>2]|0;c[(i&p)>>2]=h+1;c[(b+(h<<4)&p)>>2]=d;c[(b+(h<<4)&p)+4>>2]=e;a[(b+(h<<4)&n)+8>>0]=f;c[(b+(h<<4)&p)+12>>2]=g;break}}while(0);return}function hs(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=b[(f&o)+48>>1]|0;l=i&65535;h=e[(f&o)+46>>1]|0;m=d+64|0;if(!(c[(m&p)>>2]|0)){g=c[(d&p)>>2]|0;if(!(a[(f&n)+51>>0]&8))k=Rs(g,l,0)|0;else k=Rs(g,h,l-h|0)|0;if(k){if(i<<16>>16){j=f+32|0;f=f+28|0;h=k+16|0;g=0;do{i=c[((c[(j&p)>>2]|0)+(g<<2)&p)>>2]|0;if(!(_v(i,11152)|0))i=0;else i=cr(d,i)|0;c[(k+(g<<2)&p)+20>>2]=i;a[((c[(h&p)>>2]|0)+g&n)>>0]=a[((c[(f&p)>>2]|0)+g&n)>>0]|0;g=g+1|0}while((g|0)<(l|0))}g=(c[(m&p)>>2]|0)==0;if(!g){g=(c[(k&p)>>2]|0)+-1|0;c[(k&p)>>2]=g;if(!g){Wc(k);g=0}else g=0}else g=g?k:0}else g=0}else g=0;return g|0}function is(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=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;I=i;i=i+112|0;if((i|0)>=(j|0))fa();D=I;F=I+100|0;G=I+96|0;m=I+48|0;E=c[(d&p)+8>>2]|0;c[(F&p)>>2]=0;c[(G&p)>>2]=0;C=c[(d&p)>>2]|0;a:do if(!E)g=0;else{b:do if(!f)H=16;else{t=a[(f&n)>>0]|0;s=t&255;do switch(s|0){case 94:case 88:case 87:case 92:case 86:case 85:case 93:case 90:case 91:case 89:case 71:case 72:{D=$t(d,c[(f&p)+12>>2]|0,F)|0;wh(E,s,$t(d,c[(f&p)+16>>2]|0,G)|0,D,g)|0;break b}case 156:{h=c[(f&p)+40>>2]|0;k=b[(f&o)+34>>1]|0;l=c[(h&p)+28>>2]|0;if(!(a[(h&n)>>0]|0)){g=c[(l+(k*24|0)&p)+16>>2]|0;break b}if(a[(h&n)+1>>0]|0){wh(E,47,c[(h&p)+8>>2]|0,c[(l+(k*24|0)&p)+12>>2]|0,g)|0;break b}break}case 79:case 78:case 83:case 80:case 81:case 82:{B=f+12|0;D=$t(d,c[(B&p)>>2]|0,F)|0;C=f+16|0;E=$t(d,c[(C&p)>>2]|0,G)|0;au(d,c[(B&p)>>2]|0,c[(C&p)>>2]|0,s,D,E,g,32);break b}case 133:{_t(E,c[(f&p)+8>>2]|0,0,g);break b}case 97:{D=c[(f&p)+8>>2]|0;xh(E,wh(E,97,0,g,0)|0,D,0);break b}case 158:case 95:{g=is(d,c[(f&p)+12>>2]|0,g)|0;break b}case 38:{k=is(d,c[(f&p)+12>>2]|0,g)|0;if((k|0)!=(g|0))wh(E,34,k,g,0)|0;wh(E,40,g,(Xq(c[(f&p)+8>>2]|0,0)|0)<<24>>24,0)|0;dt(d,g,1);break b}case 119:case 20:{g=eu(d,f,0,0)|0;break b}case 75:{D=xs(E)|0;q=xs(E)|0;wh(E,28,0,g,0)|0;fu(d,f,D,q);wh(E,25,1,g,0)|0;k=E+24|0;h=c[(k&p)>>2]|0;l=~D;if((D|0)<0?(r=c[(h&p)+112>>2]|0,(r|0)!=0):0)c[(r+(l<<2)&p)>>2]=c[(E&p)+32>>2];m=E+32|0;c[(h&p)+88>>2]=(c[(m&p)>>2]|0)+-1;wh(E,37,g,0,0)|0;l=c[(k&p)>>2]|0;k=~q;if((q|0)<0?(u=c[(l&p)+112>>2]|0,(u|0)!=0):0)c[(u+(k<<2)&p)>>2]=c[(m&p)>>2];c[(l&p)+88>>2]=(c[(m&p)>>2]|0)+-1;break b}case 155:{k=c[(f&p)+40>>2]|0;if(!k){c[(D&p)>>2]=c[(f&p)+8>>2];th(d,28936,D);break b}else{g=c[((c[(k&p)+40>>2]|0)+(b[(f&o)+34>>1]<<4)&p)+8>>2]|0;break b}}case 19:case 96:{wh(E,s,$t(d,c[(f&p)+12>>2]|0,F)|0,g,0)|0;break b}case 77:case 76:{wh(E,25,1,g,0)|0;h=wh(E,s,$t(d,c[(f&p)+12>>2]|0,F)|0,0,0)|0;wh(E,25,0,g,0)|0;k=c[(E&p)+32>>2]|0;if(k>>>0>h>>>0)c[((c[(E&p)+4>>2]|0)+(h*20|0)&p)+8>>2]=k;c[((c[(E&p)+24>>2]|0)&p)+88>>2]=k+-1;break b}case 157:{k=f+12|0;h=c[(k&p)>>2]|0;l=a[(h&n)>>0]|0;if(l<<24>>24==-124){Zt(d,h,1,g);break b}else if(l<<24>>24==-123){_t(E,c[(h&p)+8>>2]|0,1,g);break b}else{a[(m&n)>>0]=-124;c[(m&p)+4>>2]=17408;c[(m&p)+8>>2]=0;D=$t(d,m,F)|0;wh(E,90,$t(d,c[(k&p)>>2]|0,G)|0,D,g)|0;break b}}case 57:{if(!(c[(d&p)+412>>2]|0)){th(d,29e3,D);g=0;break a}l=a[(f&n)+1>>0]|0;if(l<<24>>24!=2){h=c[(f&p)+8>>2]|0;if(l<<24>>24==4){xh(E,wh(E,24,0,4,0)|0,h,0);break b}}else{h=c[(d&p)+408>>2]|0;a[(((h|0)==0?d:h)&n)+21>>0]=1;h=c[(f&p)+8>>2]|0}zs(d,1811,l<<24>>24,h,0,0);break b}case 148:case 73:{B=f+12|0;D=$t(d,c[(B&p)>>2]|0,F)|0;C=f+16|0;E=$t(d,c[(C&p)>>2]|0,G)|0;au(d,c[(B&p)>>2]|0,c[(C&p)>>2]|0,t<<24>>24==73?79:78,D,E,g,160);break b}case 135:{k=f+32|0;wh(E,31,b[(k&o)>>1]|0,g,0)|0;if(!(a[((c[(f&p)+8>>2]|0)&n)+1>>0]|0))break b;xh(E,-1,c[((c[(d&p)+472>>2]|0)+((b[(k&o)>>1]|0)+-1<<2)&p)>>2]|0,-2);break b}case 154:break;case 153:{r=a[(C&n)+62>>0]|0;A=f+4|0;if((c[(A&p)>>2]&16384|0)==0?(q=c[(f&p)+20>>2]|0,(q|0)!=0):0){B=c[(q&p)>>2]|0;y=1;z=q}else{B=0;y=0;z=0}t=c[(f&p)+8>>2]|0;if(!t)s=0;else{s=t;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;s=s-t&1073741823}m=Sh(C,t,s,B,r,0)|0;if((m|0)!=0?(c[(m&p)+12>>2]|0)!=0:0){x=m+2|0;q=e[(x&o)>>1]|0;if(q&512){m=xs(E)|0;l=z+4|0;Rq(d,c[(c[(l&p)>>2]&p)>>2]|0,g);if((B|0)>1){k=d+100|0;h=1;do{wh(E,77,g,m,0)|0;dt(d,g,1);c[(k&p)>>2]=(c[(k&p)>>2]|0)+1;Rq(d,c[((c[(l&p)>>2]|0)+(h*20|0)&p)>>2]|0,g);bu(d);h=h+1|0}while((h|0)!=(B|0))}l=c[(E&p)+24>>2]|0;k=~m;if((m|0)<0?(w=c[(l&p)+112>>2]|0,(w|0)!=0):0)c[(w+(k<<2)&p)>>2]=c[(E&p)+32>>2];c[(l&p)+88>>2]=(c[(E&p)+32>>2]|0)+-1;break b}if(q&1024){Rq(d,c[(c[(z&p)+4>>2]&p)>>2]|0,g);break b}w=(B|0)>0;if(w){s=z+4|0;r=D+20|0;q=D+4|0;k=D+24|0;t=0;h=0;l=0;do{if((h|0)<32?(f=c[((c[(s&p)>>2]|0)+(h*20|0)&p)>>2]|0,c[(D&p)>>2]=0,c[(D&p)+4>>2]=0,c[(D&p)+8>>2]=0,c[(D&p)+12>>2]=0,c[(D&p)+16>>2]=0,c[(D&p)+20>>2]=0,a[(r&n)>>0]=1,c[(D&p)>>2]=78,c[(q&p)>>2]=79,c[(k&p)>>2]=0,rs(D,f)|0,(a[(r&n)>>0]|0)!=0):0)t=t|1<>1]&32)==0|(l|0)!=0))l=cu(d,c[((c[(s&p)>>2]|0)+(h*20|0)&p)>>2]|0)|0;h=h+1|0}while((h|0)!=(B|0));u=t}else{u=0;l=0}if(y){do if(!u){s=d+60|0;t=c[(s&p)>>2]|0;r=d+56|0;q=c[(r&p)>>2]|0;if((q|0)<(B|0)){D=d+72|0;t=c[(D&p)>>2]|0;c[(D&p)>>2]=t+B;t=t+1|0;break}else{c[(s&p)>>2]=t+B;c[(r&p)>>2]=q-B;break}}else{D=d+72|0;t=c[(D&p)>>2]|0;c[(D&p)>>2]=t+B;t=t+1|0}while(0);q=b[(x&o)>>1]|0;if((q&192)!=0?(v=c[(c[(z&p)+4>>2]&p)>>2]|0,D=a[(v&n)>>0]|0,D<<24>>24==-100|D<<24>>24==-102):0)a[(v&n)+38>>0]=q&192;D=d+100|0;c[(D&p)>>2]=(c[(D&p)>>2]|0)+1;bt(d,z,t,3);bu(d)}else t=0;if((B|0)>1?(c[(A&p)>>2]&128|0)!=0:0)m=du(C,m,B,c[((c[(z&p)+4>>2]|0)&p)+20>>2]|0)|0;else if(w)m=du(C,m,B,c[(c[(z&p)+4>>2]&p)>>2]|0)|0;if(b[(m&o)+2>>1]&32){if(!l)l=c[(C&p)+8>>2]|0;xh(E,wh(E,36,0,0,0)|0,l,-4)}xh(E,wh(E,1,u,t,g)|0,m,-5);l=c[(E&p)+4>>2]|0;if(l)a[(l+(((c[(E&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=B;if(!((B|0)!=0&(u|0)==0))break b;dt(d,t,B);k=d+56|0;if((c[(k&p)>>2]|0)>=(B|0))break b;c[(k&p)>>2]=B;c[(d&p)+60>>2]=t;break b}c[(D&p)>>2]=s;c[(D&p)+4>>2]=t;th(d,28968,D);break b}case 101:{H=16;break b}case 24:{g=is(d,c[(f&p)+12>>2]|0,g)|0;break b}case 74:{t=c[(f&p)+12>>2]|0;q=c[((c[(f&p)+20>>2]|0)&p)+4>>2]|0;h=c[(q&p)>>2]|0;r=$t(d,t,F)|0;s=$t(d,h,G)|0;m=d+19|0;k=a[(m&n)>>0]|0;if(k<<24>>24){D=k+-1<<24>>24;a[(m&n)>>0]=D;l=c[(d+((D&255)<<2)&p)+24>>2]|0;if(!(D<<24>>24))H=103;else{D=k+-2<<24>>24;a[(m&n)>>0]=D;m=c[(d+((D&255)<<2)&p)+24>>2]|0}}else{H=d+72|0;l=(c[(H&p)>>2]|0)+1|0;c[(H&p)>>2]=l;H=103}if((H|0)==103){D=d+72|0;m=(c[(D&p)>>2]|0)+1|0;c[(D&p)>>2]=m}au(d,t,h,83,r,s,l,32);D=c[(q&p)+20>>2]|0;_r(d,c[(G&p)>>2]|0);au(d,t,D,81,r,$t(d,D,G)|0,m,32);wh(E,72,l,m,g)|0;_r(d,l);_r(d,m);break b}case 159:{g=c[(f&p)+28>>2]|0;break b}case 132:{Zt(d,f,0,g);break b}case 134:{h=(c[(f&p)+8>>2]|0)+2|0;k=h;while(1)if(!(a[(k&n)>>0]|0))break;else k=k+1|0;C=(k-h&1073741823)+-1|0;D=Yt(c[(E&p)>>2]|0,h,C)|0;xh(E,wh(E,30,(C|0)/2|0,g,0)|0,D,-1);break b}case 62:{h=c[(f&p)+44>>2]|0;D=ca((b[(h&o)+38>>1]|0)+1|0,c[(f&p)+28>>2]|0)|0;k=f+32|0;wh(E,132,(b[(k&o)>>1]|0)+1+D|0,g,0)|0;k=b[(k&o)>>1]|0;if(k<<16>>16<=-1)break b;if((a[((c[(h&p)+4>>2]|0)+((k<<16>>16)*24|0)&n)+21>>0]|0)!=69)break b;wh(E,39,g,0,0)|0;break b}default:{x=c[(f&p)+20>>2]|0;v=x+4|0;w=c[(v&p)>>2]|0;x=c[(x&p)>>2]|0;y=xs(E)|0;t=c[(f&p)+12>>2]|0;f=(t|0)!=0;if(f){s=m+0|0;r=t+0|0;q=s+48|0;do{c[(s&p)>>2]=c[(r&p)>>2];s=s+4|0;r=r+4|0}while((s|0)<(q|0));t=$t(d,t,F)|0;a[(m&n)+38>>0]=a[(m&n)>>0]|0;a[(m&n)>>0]=-97;c[(m&p)+28>>2]=t;t=m+4|0;c[(t&p)>>2]=c[(t&p)>>2]&-4097;a[(D&n)>>0]=79;c[(D&p)+12>>2]=m;c[(F&p)>>2]=0;t=D}else t=0;u=x+-1|0;if((u|0)>0){h=d+100|0;q=D+16|0;m=E+24|0;l=E+32|0;k=0;s=t;while(1){c[(h&p)>>2]=(c[(h&p)>>2]|0)+1;t=c[(w+(k*20|0)&p)>>2]|0;if(f){c[(q&p)>>2]=t;t=s}D=xs(E)|0;gt(d,t,D,16);Rq(d,c[(w+((k|1)*20|0)&p)>>2]|0,g);wh(E,16,0,y,0)|0;bu(d);s=c[(m&p)>>2]|0;r=~D;if((D|0)<0?(z=c[(s&p)+112>>2]|0,(z|0)!=0):0)c[(z+(r<<2)&p)>>2]=c[(l&p)>>2];c[(s&p)+88>>2]=(c[(l&p)>>2]|0)+-1;k=k+2|0;if((k|0)>=(u|0))break;else s=t}}if(!(x&1))wh(E,28,0,g,0)|0;else{D=d+100|0;c[(D&p)>>2]=(c[(D&p)>>2]|0)+1;Rq(d,c[((c[(v&p)>>2]|0)+(u*20|0)&p)>>2]|0,g);bu(d)}l=c[(E&p)+24>>2]|0;k=~y;if((y|0)<0?(A=c[(l&p)+112>>2]|0,(A|0)!=0):0)c[(A+(k<<2)&p)>>2]=c[(E&p)+32>>2];c[(l&p)+88>>2]=(c[(E&p)+32>>2]|0)+-1;break b}}while(0);h=c[(f&p)+28>>2]|0;do if((h|0)<0){h=c[(d&p)+92>>2]|0;if((h|0)>0){g=(b[(f&o)+32>>1]|0)+h|0;break b}else{h=c[(d&p)+96>>2]|0;break}}while(0);g=ct(d,c[(f&p)+44>>2]|0,b[(f&o)+32>>1]|0,h,g,a[(f&n)+38>>0]|0)|0}while(0);if((H|0)==16)wh(E,28,0,g,0)|0;_r(d,c[(F&p)>>2]|0);_r(d,c[(G&p)>>2]|0)}while(0);i=I;return g|0}function js(a,b){a=a|0;b=b|0;var d=0;d=Oq(a)|0;gs(a,b,1,1,(b|0)==1?13184:13208);xh(d,wh(d,55,0,1,b)|0,5,-14);b=a+68|0;if(!(c[(b&p)>>2]|0))c[(b&p)>>2]=1;return}function ks(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=f+48|0;if((e[(h&o)>>1]|0|0)<(g|0)){i=g*7|0;d=mh(d,i,((i|0)<0)<<31>>31)|0;if(!d)d=7;else{fw(d|0,0,i|0)|0;j=f+32|0;kw(d|0,c[(j&p)>>2]|0,(e[(h&o)>>1]|0)<<2|0)|0;c[(j&p)>>2]=d;j=d+(g<<2)|0;i=f+4|0;kw(j|0,c[(i&p)>>2]|0,(e[(h&o)>>1]|0)<<1|0)|0;c[(i&p)>>2]=j;i=d+(g*6|0)|0;d=f+28|0;kw(i|0,c[(d&p)>>2]|0,e[(h&o)>>1]|0|0)|0;c[(d&p)>>2]=i;b[(h&o)>>1]=g;d=f+51|0;a[(d&n)>>0]=a[(d&n)>>0]|16;d=0}}else d=0;return d|0}function ls(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,q=0,r=0;r=i;i=i+32|0;if((i|0)>=(j|0))fa();k=r;q=r+4|0;do if(!d)f=0;else{l=c[(a&p)>>2]|0;n=d+24|0;h=l+460|0;g=(c[(h&p)>>2]|0)+(c[(n&p)>>2]|0)|0;f=c[((c[(l&p)>>2]|0)&p)+100>>2]|0;if((f|0)<(g|0)){c[(k&p)>>2]=f;th(l,27152,k);f=1;break}c[(h&p)>>2]=g;k=a+28|0;h=e[(k&o)>>1]|0;m=h&4098;b[(k&o)>>1]=h&61437;c[(q&p)>>2]=0;c[(q&p)+4>>2]=0;c[(q&p)+8>>2]=0;c[(q&p)+12>>2]=0;c[(q&p)+16>>2]=0;c[(q&p)+20>>2]=0;c[(q&p)>>2]=82;c[(q&p)+4>>2]=83;h=q+12|0;c[(h&p)>>2]=l;c[(q&p)+24>>2]=a;rs(q,d)|0;q=(c[(a&p)>>2]|0)+460|0;c[(q&p)>>2]=(c[(q&p)>>2]|0)-(c[(n&p)>>2]|0);if(!((c[(a&p)+24>>2]|0)<=0?(c[((c[(h&p)>>2]|0)&p)+64>>2]|0)<=0:0)){q=d+4|0;c[(q&p)>>2]=c[(q&p)>>2]|8}h=b[(k&o)>>1]|0;g=d+4|0;f=c[(g&p)>>2]|0;if(h&2){f=f|2;c[(g&p)>>2]=f}b[(k&o)>>1]=h&65535|m;f=f>>>3&1}while(0);i=r;return f|0}function ms(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[((c[(a&p)+12>>2]|0)&p)+4>>2]|0;f=b[(a&o)+48>>1]|0;if(!(f<<16>>16)){e=0;f=0}else{j=c[(a&p)+4>>2]|0;g=f&65535;h=0;e=0;do{f=b[(j+(h<<1)&o)>>1]|0;if(f<<16>>16<0)f=1;else f=d[(i+((f<<16>>16)*24|0)&n)+22>>0]|0;e=f+e|0;h=h+1|0}while((h|0)<(g|0));e=e<<2;f=0}b[(a&o)+44>>1]=fs(e,f)|0;return}function ns(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[(d&p)>>2]|0;g=j+24|0;i=c[(g&p)>>2]|0;c[(g&p)>>2]=i&-97|64;Ds(d,e,0);if(!(c[(d&p)+64>>2]|0)){while(1){f=c[(e&p)+52>>2]|0;if(!f){h=e;break}else e=f}c[(g&p)>>2]=i;e=mh(j,76,0)|0;if(e){f=e+0|0;g=f+76|0;do{a[(f&n)>>0]=0;f=f+1|0}while((f|0)<(g|0));b[(e&o)+40>>1]=1;c[(e&p)>>2]=0;b[(e&o)+28>>1]=200;iu(d,c[(h&p)>>2]|0,e+38|0,e+4|0);ju(d,e,h);b[(e&o)+36>>1]=-1;if(a[(j&n)+65>>0]|0){kg(j,e);e=0}}else e=0}else e=0;return e|0}function os(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[(d&p)>>2]|0;g=a[(e&n)>>0]|0;a:do if(!(g<<24>>24)){i=0;h=0}else{i=g;j=0;while(1){h=j+1|0;if(!(i<<24>>24==95?1:(a[(i&255&n)+10368>>0]&6)!=0)){h=j;break a}i=a[(e+h&n)>>0]|0;if(!(i<<24>>24)){i=0;break}else j=h}}while(0);if((((g&255)+-48|0)>>>0>=10?(fi(e,h)|0)==27:0)?!((h|0)==0|i<<24>>24!=0):0)k=0;else{a[(b+f&n)>>0]=34;k=1;g=a[(e&n)>>0]|0;f=f+1|0}if(g<<24>>24){h=e;j=0;do{i=f+1|0;a[(b+f&n)>>0]=g;if((a[(h&n)>>0]|0)==34){a[(b+i&n)>>0]=34;f=f+2|0}else f=i;j=j+1|0;h=e+j|0;g=a[(h&n)>>0]|0}while(g<<24>>24!=0)}if(k){a[(b+f&n)>>0]=34;f=f+1|0}a[(b+f&n)>>0]=0;c[(d&p)>>2]=f;return}function ps(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=b+20|0;g=a[(f&n)>>0]|0;if(g<<24>>24==2?(c[(e&p)+4>>2]&1|0)!=0:0){a[(f&n)>>0]=0;f=2}else h=4;a:do if((h|0)==4)switch(d[(e&n)>>0]|0|0){case 153:{if((g&255)>3){f=0;break a}if(c[(e&p)+4>>2]&524288){f=0;break a}a[(f&n)>>0]=0;f=2;break a}case 135:if(g<<24>>24==4){a[(f&n)>>0]=0;f=2;break a}else if(g<<24>>24==5){a[(e&n)>>0]=101;f=0;break a}else{f=0;break a}case 156:case 155:case 154:case 27:{if(g<<24>>24==3?(c[(e&p)+28>>2]|0)==(c[(b&p)+24>>2]|0):0){f=0;break a}a[(f&n)>>0]=0;f=2;break a}default:{f=0;break a}}while(0);return f|0}function qs(b,c){b=b|0;c=c|0;a[(b&n)+20>>0]=0;return 2}function rs(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if(!b)b=0;else{d=rc[c[(a&p)>>2]&127](a,b)|0;do if((d|0)==0?(e=b+4|0,(c[(e&p)>>2]&16384|0)==0):0){if(rs(a,c[(b&p)+12>>2]|0)|0){b=2;break a}if(rs(a,c[(b&p)+16>>2]|0)|0){b=2;break a}b=b+20|0;if(!(c[(e&p)>>2]&2048))if(!(lu(a,c[(b&p)>>2]|0)|0))break;else{b=2;break a}else if(!(ku(a,c[(b&p)>>2]|0)|0))break;else{b=2;break a}}while(0);b=d&2}while(0);return b|0}function ss(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;do if(e)if(!f)g=e;else{if((mu(e)|0)==0?(mu(f)|0)==0:0){g=mh(d,48,0)|0;if(g){h=g+0|0;i=h+48|0;do{a[(h&n)>>0]=0;h=h+1|0}while((h|0)<(i|0));a[(g&n)>>0]=72;b[(g&o)+34>>1]=-1;c[(g&p)+24>>2]=1}ts(d,g,e,f);break}Gk(d,e);Gk(d,f);g=nr(d,132,20616,0)|0}else g=f;while(0);return g|0}function ts(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(!b){Gk(a,d);Gk(a,e)}else{if(e){c[(b&p)+16>>2]=e;a=b+4|0;c[(a&p)>>2]=c[(a&p)>>2]|c[(e&p)+4>>2]&2097408}if(d){c[(b&p)+12>>2]=d;a=b+4|0;c[(a&p)>>2]=c[(a&p)>>2]|c[(d&p)+4>>2]&2097408}It(b)}return}function us(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;h=d<<16>>16;j=(h<<2)+63&-8;k=h<<1;l=k+2|0;i=(h+7+k+l&-8)+j|0;g=i+e|0;e=mh(a,g,((g|0)<0)<<31>>31)|0;if(e){fw(e|0,0,g|0)|0;c[(e&p)+32>>2]=e+56;c[(e&p)+8>>2]=e+j;g=j+l|0;c[(e&p)+4>>2]=e+g;c[(e&p)+28>>2]=e+(g+k);b[(e&o)+48>>1]=d;b[(e&o)+46>>1]=h+65535;c[(f&p)>>2]=e+i}return e|0}function vs(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=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;C=i;i=i+16|0;if((i|0)>=(j|0))fa();w=C;s=c[(d&p)+12>>2]|0;r=b+68|0;z=c[(r&p)>>2]|0;B=z+1|0;c[(r&p)>>2]=z+2;q=c[(b&p)>>2]|0;l=c[(d&p)+24>>2]|0;a:do if(l){h=c[(q&p)+20>>2]|0;if((h|0)>0){g=c[(q&p)+16>>2]|0;m=0;while(1){k=m+1|0;if((c[(g+(m<<4)&p)+12>>2]|0)==(l|0)){k=m;break a}if((k|0)<(h|0))m=k;else break}}else k=0}else k=-1e6;while(0);if((Sq(b,27,c[(d&p)>>2]|0,0,c[((c[(q&p)+16>>2]|0)+(k<<4)&p)>>2]|0)|0)==0?(gs(b,k,c[(s&p)+32>>2]|0,1,c[(s&p)>>2]|0),A=Oq(b)|0,(A|0)!=0):0){if((f|0)>-1)t=f;else t=c[(d&p)+40>>2]|0;x=hs(b,d)|0;y=c[(r&p)>>2]|0;c[(r&p)>>2]=y+1;v=d+46|0;h=e[(v&o)>>1]|0;if(x)c[(x&p)>>2]=(c[(x&p)>>2]|0)+1;xh(A,wh(A,58,y,0,h)|0,x,-6);Qq(b,z,k,s,54);q=wh(A,108,z,0,0)|0;h=b+19|0;g=a[(h&n)>>0]|0;if(!(g<<24>>24)){s=b+72|0;u=(c[(s&p)>>2]|0)+1|0;c[(s&p)>>2]=u}else{u=g+-1<<24>>24;a[(h&n)>>0]=u;u=c[(b+((u&255)<<2)&p)+24>>2]|0}Pt(b,d,z,u,0,w,0,0)|0;wh(A,109,y,u,0)|0;Qt(b,c[(w&p)>>2]|0);wh(A,9,z,q+1|0,0)|0;s=A+32|0;m=c[(s&p)>>2]|0;if(m>>>0>q>>>0)c[((c[(A&p)+4>>2]|0)+(q*20|0)&p)+8>>2]=m;l=A+24|0;c[((c[(l&p)>>2]|0)&p)+88>>2]=m+-1;if((f|0)<0)wh(A,118,t,k,0)|0;xh(A,wh(A,55,B,t,k)|0,x,-6);r=A+4|0;h=c[(r&p)>>2]|0;if(h)a[(h+(((c[(s&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=(f>>31)+4&252|1;q=wh(A,106,y,0,0)|0;h=c[(s&p)>>2]|0;if((a[(d&n)+50>>0]|0)!=0&(x|0)!=0){m=h+3|0;wh(A,16,0,m,0)|0;h=c[(s&p)>>2]|0;t=e[(v&o)>>1]|0;xh(A,wh(A,99,y,m,u)|0,t,-14);nu(b,2,d)}wh(A,100,y,u,B)|0;wh(A,110,B,u,1)|0;g=c[(r&p)>>2]|0;if(g)a[(g+(((c[(s&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=16;_r(b,u);wh(A,5,y,h,0)|0;g=c[(s&p)>>2]|0;if(g>>>0>q>>>0)c[((c[(r&p)>>2]|0)+(q*20|0)&p)+8>>2]=g;c[((c[(l&p)>>2]|0)&p)+88>>2]=g+-1;wh(A,61,z,0,0)|0;wh(A,61,B,0,0)|0;wh(A,61,y,0,0)|0}i=C;return}function ws(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))fa();t=u;s=c[(e&p)>>2]|0;if(!g){g=Yn(s,f,h,0)|0;if(!g)q=4;else q=3}else q=3;if((q|0)==3)if(!(c[(g&p)+12>>2]|0))q=4;else q=14;if((q|0)==4){l=f&255;k=s+224|0;if(c[(k&p)>>2]|0){m=kh(s,h)|0;if(m){qc[c[(k&p)>>2]&15](c[(s&p)+232>>2]|0,s,l,m);mg(s,m);q=7}}else q=7;if((q|0)==7?(r=s+228|0,(c[(r&p)>>2]|0)!=0):0){k=mh(s,40,0)|0;if(!k)k=0;else{m=k+0|0;l=m+40|0;do{a[(m&n)>>0]=0;m=m+1|0}while((m|0)<(l|0));b[(k&o)+8>>1]=1;c[(k&p)+32>>2]=s;Xg(k,h,-1,1,0)|0}g=Sg(k,2)|0;if(g)qc[c[(r&p)>>2]&15](c[(s&p)+232>>2]|0,s,d[(s&n)+62>>0]|0,g);Mh(k)}g=Yn(s,f,h,0)|0;if(!g)q=19;else q=14}a:do if((q|0)==14)if(!(c[(g&p)+12>>2]|0)){l=c[(g&p)>>2]|0;m=0;while(1){k=Yn(s,a[(m&n)+26816>>0]|0,l,0)|0;m=m+1|0;if(c[(k&p)+12>>2]|0)break;if((m|0)>=3){q=19;break a}}c[(g&p)>>2]=c[(k&p)>>2];c[(g&p)+4>>2]=c[(k&p)+4>>2];c[(g&p)+8>>2]=c[(k&p)+8>>2];c[(g&p)+12>>2]=c[(k&p)+12>>2];c[(g&p)+16>>2]=0}while(0);if((q|0)==19){c[(t&p)>>2]=h;th(e,26784,t);g=0}i=u;return g|0}function xs(a){a=a|0;var b=0,d=0;a=c[(a&p)+24>>2]|0;d=a+108|0;b=c[(d&p)>>2]|0;c[(d&p)>>2]=b+1;if(!(b+-1&b)){d=a+112|0;a=Wl(c[(a&p)>>2]|0,c[(d&p)>>2]|0,b<<3|4,0)|0;c[(d&p)>>2]=a}else a=c[(a&p)+112>>2]|0;if(a)c[(a+(b<<2)&p)>>2]=-1;return ~b|0}function ys(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;if(e){g=c[(e&p)>>2]|0;if((g|0)>0){h=(g*72|0)+8|0;g=h;h=((h|0)<0)<<31>>31}else{g=80;h=0}g=mh(d,g,h)|0;if(g){h=c[(e&p)>>2]|0;c[(g&p)+4>>2]=h;c[(g&p)>>2]=h;if((c[(e&p)>>2]|0)>0){h=g+8|0;j=0;do{c[(h+(j*72|0)&p)>>2]=c[(e+(j*72|0)&p)+8>>2];c[(h+(j*72|0)&p)+4>>2]=kh(d,c[(e+(j*72|0)&p)+12>>2]|0)|0;c[(h+(j*72|0)&p)+8>>2]=kh(d,c[(e+(j*72|0)&p)+16>>2]|0)|0;c[(h+(j*72|0)&p)+12>>2]=kh(d,c[(e+(j*72|0)&p)+20>>2]|0)|0;a[(h+(j*72|0)&n)+36>>0]=a[(e+(j*72|0)&n)+44>>0]|0;c[(h+(j*72|0)&p)+40>>2]=c[(e+(j*72|0)&p)+48>>2];c[(h+(j*72|0)&p)+24>>2]=c[(e+(j*72|0)&p)+32>>2];c[(h+(j*72|0)&p)+28>>2]=c[(e+(j*72|0)&p)+36>>2];k=e+(j*72|0)+45|0;i=h+(j*72|0)+37|0;l=a[(i&n)>>0]&-3|a[(k&n)>>0]&2;a[(i&n)>>0]=l;l=l&-5|a[(k&n)>>0]&4;a[(i&n)>>0]=l;a[(i&n)>>0]=l&-9|a[(k&n)>>0]&8;c[(h+(j*72|0)&p)+64>>2]=kh(d,c[(e+(j*72|0)&p)+72>>2]|0)|0;a[(i&n)>>0]=a[(i&n)>>0]&-2|a[(k&n)>>0]&1;c[(h+(j*72|0)&p)+68>>2]=c[(e+(j*72|0)&p)+76>>2];i=c[(e+(j*72|0)&p)+24>>2]|0;c[(h+(j*72|0)&p)+16>>2]=i;if(i){i=i+40|0;b[(i&o)>>1]=(b[(i&o)>>1]|0)+1<<16>>16}c[(h+(j*72|0)&p)+20>>2]=gr(d,c[(e+(j*72|0)&p)+28>>2]|0,f)|0;c[(h+(j*72|0)&p)+44>>2]=Mr(d,c[(e+(j*72|0)&p)+52>>2]|0,f,0)|0;c[(h+(j*72|0)&p)+48>>2]=Nr(d,c[(e+(j*72|0)&p)+56>>2]|0)|0;l=e+(j*72|0)+64|0;k=c[(l&p)+4>>2]|0;i=h+(j*72|0)+56|0;c[(i&p)>>2]=c[(l&p)>>2];c[(i&p)+4>>2]=k;j=j+1|0}while((j|0)<(c[(e&p)>>2]|0))}}else g=0}else g=0;return g|0}function zs(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;i=Oq(b)|0;if((e|0)==2){k=c[(b&p)+408>>2]|0;a[(((k|0)==0?b:k)&n)+21>>0]=1}xh(i,wh(i,24,d,e,0)|0,f,g<<24>>24);if(h<<24>>24!=0?(j=c[(i&p)+4>>2]|0,(j|0)!=0):0)a[(j+(((c[(i&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=h;return}function As(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[((c[((c[(b&p)>>2]|0)&p)+16>>2]|0)&p)+28>>2]|0;do if(!(a[(b&n)+438>>0]|0)){h=c[(d&p)+68>>2]|0;if((e|0)!=(h|0)?(f=c[(e&p)+48>>2]|0,(f|0)!=0):0){g=d+64|0;e=0;while(1){b=c[(f&p)+8>>2]|0;if((c[(b&p)+24>>2]|0)==(h|0)?(dd(c[(b&p)+4>>2]|0,c[(d&p)>>2]|0)|0)==0:0){if(!e)e=c[(g&p)>>2]|0;c[(b&p)+32>>2]=e}else b=e;f=c[(f&p)>>2]|0;if(!f)break;else e=b}if(b)break}b=c[(d&p)+64>>2]|0}else b=0;while(0);return b|0}function Bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=c[(b&p)+32>>2]|0;k=b+8|0;i=b+68|0;f=0;while(1){g=(f|0)==0;b=g|(j|0)<(f|0)?j:0;d=c[(k&p)>>2]|0;if(!d)h=b;else{do{e=c[(d&p)+40>>2]|0;b=(g|(e|0)<(f|0))&(e|0)>(b|0)?e:b;d=c[(d&p)+20>>2]|0}while((d|0)!=0);h=b}if(!h)break;b=c[(a&p)>>2]|0;f=c[(i&p)>>2]|0;a:do if(f){g=c[(b&p)+20>>2]|0;if((g|0)>0){d=c[(b&p)+16>>2]|0;e=0;while(1){b=e+1|0;if((c[(d+(e<<4)&p)+12>>2]|0)==(f|0)){b=e;break a}if((b|0)<(g|0))e=b;else break}}else b=0}else b=-1e6;while(0);Er(a,h,b);f=h}return}function Cs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a:do if((b|0)!=0?(d=c[(b&p)>>2]|0,(d|0)>0):0){h=a+68|0;f=0;g=b+8|0;while(1){e=g+40|0;if((c[(e&p)>>2]|0)>-1)break a;i=c[(h&p)>>2]|0;c[(h&p)>>2]=i+1;c[(e&p)>>2]=i;e=c[(g&p)+20>>2]|0;if(e){Cs(a,c[(e&p)+32>>2]|0);d=c[(b&p)>>2]|0}f=f+1|0;if((f|0)>=(d|0))break;else g=g+72|0}}while(0);return}function Ds(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0;q=i;i=i+32|0;if((i|0)>=(j|0))fa();m=q;if(((e|0)!=0?(l=(c[(d&p)>>2]|0)+65|0,(a[(l&n)>>0]|0)==0):0)?(h=e+6|0,g=b[(h&o)>>1]|0,(g&32)==0):0){c[(m&p)>>2]=0;c[(m&p)+4>>2]=0;c[(m&p)+8>>2]=0;c[(m&p)+12>>2]=0;c[(m&p)+16>>2]=0;c[(m&p)+20>>2]=0;c[(m&p)+24>>2]=0;c[(m&p)>>2]=84;c[(m&p)+12>>2]=d;k=m+4|0;if(a[(d&n)+22>>0]|0){c[(k&p)>>2]=85;ku(m,e)|0;g=b[(h&o)>>1]|0}c[(k&p)>>2]=86;if(!(g&256))c[(m&p)+8>>2]=9;ku(m,e)|0;g=d+64|0;if((((c[(g&p)>>2]|0)==0?(a[(l&n)>>0]|0)==0:0)?(c[(m&p)>>2]=0,c[(m&p)+4>>2]=0,c[(m&p)+8>>2]=0,c[(m&p)+12>>2]=0,c[(m&p)+16>>2]=0,c[(m&p)+20>>2]=0,c[(m&p)>>2]=82,c[(m&p)+4>>2]=83,c[(m&p)+12>>2]=d,c[(m&p)+24>>2]=f,ku(m,e)|0,(c[(g&p)>>2]|0)==0):0)?(a[(l&n)>>0]|0)==0:0){c[(m&p)>>2]=0;c[(m&p)+4>>2]=0;c[(m&p)+8>>2]=0;c[(m&p)+12>>2]=0;c[(m&p)+16>>2]=0;c[(m&p)+20>>2]=0;c[(m&p)+24>>2]=0;c[(m&p)+8>>2]=10;c[(m&p)>>2]=84;c[(m&p)+12>>2]=d;ku(m,e)|0}}i=q;return}function Es(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if(a)do{d=c[(a&p)+36>>2]|0;if((d|0)!=0?(h=c[(d&p)+24>>2]|0,(h|0)>(c[(b&p)>>2]|0)):0)c[(b&p)>>2]=h;d=c[(a&p)+44>>2]|0;if((d|0)!=0?(e=c[(d&p)+24>>2]|0,(e|0)>(c[(b&p)>>2]|0)):0)c[(b&p)>>2]=e;d=c[(a&p)+60>>2]|0;if((d|0)!=0?(f=c[(d&p)+24>>2]|0,(f|0)>(c[(b&p)>>2]|0)):0)c[(b&p)>>2]=f;d=c[(a&p)+64>>2]|0;if((d|0)!=0?(g=c[(d&p)+24>>2]|0,(g|0)>(c[(b&p)>>2]|0)):0)c[(b&p)>>2]=g;tu(c[(a&p)>>2]|0,b);tu(c[(a&p)+40>>2]|0,b);tu(c[(a&p)+48>>2]|0,b);a=c[(a&p)+52>>2]|0}while((a|0)!=0);return}function Fs(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=c[(b&p)>>2]|0;h=g+d|0;if(h>>>0>(c[(b&p)+4>>2]|0)>>>0){i=ro(a,b,(h*72|0)+8|0,0)|0;if(i){do if(!a)b=lc[c[8792>>2]&127](i)|0;else{if((c[(a&p)+276>>2]|0)>>>0<=i>>>0?(c[(a&p)+280>>2]|0)>>>0>i>>>0:0){b=e[(a&o)+248>>1]|0;break}b=lc[c[8792>>2]&127](i)|0}while(0);c[(i&p)+4>>2]=(((b+-80|0)>>>0)/72|0)+1;b=i;g=c[(i&p)>>2]|0;j=10}}else j=10;if((j|0)==10){if((g|0)>(f|0)){do{g=g+-1|0;h=b+((g+d|0)*72|0)+8|0;a=b+(g*72|0)+8|0;i=h+72|0;do{c[(h&p)>>2]=c[(a&p)>>2];h=h+4|0;a=a+4|0}while((h|0)<(i|0))}while((g|0)>(f|0));g=c[(b&p)>>2]|0}c[(b&p)>>2]=g+d;fw(b+(f*72|0)+8|0,0,d*72|0)|0;g=f+d|0;if((d|0)>0)do{c[(b+(f*72|0)&p)+48>>2]=-1;f=f+1|0}while((f|0)<(g|0))}return b|0}function Gs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((b|0)!=0?(c[(b&p)>>2]|0)>0:0){f=b+4|0;g=c[(f&p)>>2]|0;h=0;do{i=Hs(a,c[(g+(h*20|0)&p)>>2]|0,d,e)|0;g=c[(f&p)>>2]|0;c[(g+(h*20|0)&p)>>2]=i;h=h+1|0}while((h|0)<(c[(b&p)>>2]|0))}return}function Hs(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do if(e){if((a[(e&n)>>0]|0)==-102?(c[(e&p)+28>>2]|0)==(f|0):0){h=b[(e&o)+32>>1]|0;if(h<<16>>16<0){a[(e&n)>>0]=101;break}else{h=Mr(d,c[((c[(g&p)+4>>2]|0)+((h<<16>>16)*20|0)&p)>>2]|0,0,0)|0;Gk(d,e);e=h;break}}h=e+12|0;c[(h&p)>>2]=Hs(d,c[(h&p)>>2]|0,f,g)|0;h=e+16|0;c[(h&p)>>2]=Hs(d,c[(h&p)>>2]|0,f,g)|0;h=e+20|0;if(!(c[(e&p)+4>>2]&2048)){Gs(d,c[(h&p)>>2]|0,f,g);break}else{uu(d,c[(h&p)>>2]|0,f,g);break}}else e=0;while(0);return e|0}function Is(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[(c[(b&p)>>2]&p)>>2]|0;e=b;g=1;while(1){b=c[(e&p)+52>>2]|0;if(!b){f=5;break}if((c[(c[(b&p)>>2]&p)>>2]|0)==(f|0)){e=b;g=g+1|0}else{f=3;break}}a:do if((f|0)==3){Js(a,b);b=1}else if((f|0)==5)if(!e)b=0;else{h=((g|0)<0)<<31>>31;f=0;while(1){i=e+52|0;c[(i&p)>>2]=0;b=ir(a,e,d)|0;c[(i&p)>>2]=f;if(b)break a;b=e+24|0;c[(b&p)>>2]=g;c[(b&p)+4>>2]=h;b=c[(e&p)+56>>2]|0;if(!b){b=0;break a}e=b;f=c[(b&p)+52>>2]|0}}while(0);return b|0}function Js(a,e){a=a|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();f=g;if(!(b[(e&o)+6>>1]&128)){e=d[(e&n)+4>>0]|0;if((e|0)==118)e=35336;else if((e|0)==116)e=35320;else if((e|0)==117)e=35352;else e=35360;c[(f&p)>>2]=e;th(a,35232,f)}else th(a,35184,f);i=g;return}function Ks(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=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;H=i;i=i+32|0;if((i|0)>=(j|0))fa();y=H;k=c[(f&p)+32>>2]|0;q=c[(c[(f&p)>>2]&p)>>2]|0;v=c[(d&p)+8>>2]|0;w=f+52|0;x=c[(w&p)>>2]|0;if(!(Sq(d,33,0,0,0)|0)){z=xs(v)|0;Os(d,f,z);A=f+60|0;B=c[(A&p)>>2]|0;C=f+64|0;D=c[(C&p)>>2]|0;E=f+8|0;s=c[(E&p)>>2]|0;F=f+12|0;t=c[(F&p)>>2]|0;c[(C&p)>>2]=0;c[(A&p)>>2]=0;c[(F&p)>>2]=0;c[(E&p)>>2]=0;E=f+48|0;F=c[(E&p)>>2]|0;l=c[(k&p)>>2]|0;a:do if((l|0)>0){m=0;while(1){if(a[(k+(m*72|0)&n)+45>>0]&8)break;m=m+1|0;if((m|0)>=(l|0)){r=0;break a}}r=c[(k+(m*72|0)&p)+48>>2]|0}else r=0;while(0);m=d+68|0;k=c[(m&p)>>2]|0;l=k+1|0;c[(m&p)>>2]=l;h=(F|0)!=0;if((a[(f&n)+4>>0]|0)==115){c[(m&p)>>2]=k+2;m=h?8:6}else{m=h?7:5;l=0}a[(y&n)>>0]=m;c[(y&p)+4>>2]=k;a[(y&n)+1>>0]=0;c[(y&p)+8>>2]=0;c[(y&p)+12>>2]=0;I=d+72|0;m=(c[(I&p)>>2]|0)+1|0;c[(I&p)>>2]=m;wh(v,60,r,m,q)|0;if(h){q=vu(d,f)|0;xh(v,wh(v,57,k,(c[(F&p)>>2]|0)+2|0,0)|0,q,-6);c[(y&p)+16>>2]=F}else wh(v,57,k,q,0)|0;if(l){c[(f&p)+16>>2]=wh(v,57,l,0,0)|0;l=f+6|0;b[(l&o)>>1]=e[(l&o)>>1]|8}c[(E&p)>>2]=0;q=x+56|0;c[(q&p)>>2]=0;l=ir(d,x,y)|0;c[(q&p)>>2]=f;if(!l){q=wh(v,108,k,z,0)|0;wh(v,104,r,0,0)|0;if(h)wh(v,47,k,(c[(F&p)>>2]|0)+1|0,m)|0;else wh(v,102,k,m,0)|0;wh(v,95,k,0,0)|0;l=xs(v)|0;it(v,t,l);Ps(d,f,c[(f&p)>>2]|0,r,0,0,g,l,z);if(s)wh(v,140,s,z,0)|0;h=v+24|0;m=c[(h&p)>>2]|0;k=~l;if((l|0)<0?(u=c[(m&p)+112>>2]|0,(u|0)!=0):0)c[(u+(k<<2)&p)>>2]=c[(v&p)+32>>2];l=v+32|0;c[(m&p)+88>>2]=(c[(l&p)>>2]|0)+-1;c[(w&p)>>2]=0;ir(d,f,y)|0;c[(w&p)>>2]=x;wh(v,16,0,q,0)|0;h=c[(h&p)>>2]|0;k=~z;if((z|0)<0?(G=c[(h&p)+112>>2]|0,(G|0)!=0):0)c[(G+(k<<2)&p)>>2]=c[(l&p)>>2];c[(h&p)+88>>2]=(c[(l&p)>>2]|0)+-1}Nk(c[(d&p)>>2]|0,c[(E&p)>>2]|0);c[(E&p)>>2]=F;c[(A&p)>>2]=B;c[(C&p)>>2]=D}i=H;return}function Ls(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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,H=0,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;$=i;i=i+48|0;if((i|0)>=(j|0))fa();u=$+40|0;N=$+20|0;O=$;X=c[(f&p)>>2]|0;U=c[(f&p)+8>>2]|0;W=xs(U)|0;T=xs(U)|0;Y=g+4|0;P=a[(Y&n)>>0]|0;Z=g+52|0;_=c[(Z&p)>>2]|0;w=g+48|0;m=c[(w&p)>>2]|0;l=c[(m&p)>>2]|0;R=P<<24>>24==116;a:do if(!R?(s=X+65|0,(a[(s&n)>>0]|0)==0):0){q=u+4|0;t=1;while(1){if((t|0)>(c[(c[(g&p)>>2]&p)>>2]|0)){Q=l;v=14;break a}b:do if((l|0)>0){k=0;r=c[(m&p)+4>>2]|0;while(1){if((e[(r&o)+16>>1]|0)==(t|0))break b;k=k+1|0;if((k|0)<(l|0))r=r+20|0;else break}}else k=0;while(0);if((k|0)==(l|0)){c[(u&p)>>2]=0;c[(q&p)>>2]=0;k=nr(X,132,u,0)|0;if(!k){k=7;break a}J=k+4|0;c[(J&p)>>2]=c[(J&p)>>2]|1024;c[(k&p)+8>>2]=t;k=lr(f,m,k)|0;if(!k)k=0;else{b[((c[(k&p)+4>>2]|0)+(l*20|0)&o)+16>>1]=t;l=l+1|0}}else k=m;if(!(a[(s&n)>>0]|0)){t=t+1|0;m=k}else{Q=l;m=k;v=14;break}}}else{Q=l;v=14}while(0);if((v|0)==14){M=mh(X,Q<<2,0)|0;if(!M)K=0;else{if((Q|0)>0){l=0;k=c[(m&p)+4>>2]|0;while(1){c[(M+(l<<2)&p)>>2]=(e[(k&o)+16>>1]|0)+-1;l=l+1|0;if((l|0)==(Q|0))break;else k=k+20|0}}K=vu(f,g)|0}c[(w&p)>>2]=m;s=_+48|0;c[(s&p)>>2]=Pr(c[(f&p)>>2]|0,m,0)|0;if(!R){m=c[(c[(g&p)>>2]&p)>>2]|0;l=f+72|0;J=c[(l&p)>>2]|0;r=J+1|0;c[(l&p)>>2]=m+1+J;wh(U,25,0,r,0)|0;l=Rs(X,m,1)|0;if(l)if((m|0)>0){k=l+16|0;q=0;do{c[(l+(q<<2)&p)+20>>2]=Ss(f,g,q)|0;a[((c[(k&p)>>2]|0)+q&n)>>0]=0;q=q+1|0}while((q|0)!=(m|0));x=l}else x=l;else x=0}else{x=0;r=0}c[(Z&p)>>2]=0;L=_+56|0;c[(L&p)>>2]=0;wu(f,g,c[(w&p)>>2]|0,26880)|0;if(!(c[(_&p)+52>>2]|0))wu(f,_,c[(s&p)>>2]|0,26880)|0;Os(f,g,W);q=g+8|0;l=c[(q&p)>>2]|0;s=f+72|0;if((l|0)!=0&R){v=c[(s&p)>>2]|0;t=v+1|0;v=v+2|0;c[(s&p)>>2]=v;J=c[(g&p)+12>>2]|0;wh(U,33,(J|0)==0?l:J+1|0,t,0)|0;wh(U,33,t,v,0)|0}else{t=0;v=0}A=g+60|0;Gk(X,c[(A&p)>>2]|0);c[(A&p)>>2]=0;A=g+64|0;Gk(X,c[(A&p)>>2]|0);c[(A&p)>>2]=0;A=c[(s&p)>>2]|0;B=A+1|0;C=A+2|0;y=A+3|0;A=A+4|0;c[(s&p)>>2]=A;a[(N&n)>>0]=13;c[(N&p)+4>>2]=B;a[(N&n)+1>>0]=0;E=N+8|0;c[(E&p)>>2]=0;c[(N&p)+12>>2]=0;a[(O&n)>>0]=13;c[(O&p)+4>>2]=C;a[(O&n)+1>>0]=0;F=O+8|0;c[(F&p)>>2]=0;c[(O&p)+12>>2]=0;I=U+32|0;u=wh(U,20,B,0,(c[(I&p)>>2]|0)+1|0)|0;c[(_&p)+8>>2]=t;s=f+468|0;J=c[(s&p)>>2]|0;ir(f,_,N)|0;wh(U,21,B,0,0)|0;t=c[(I&p)>>2]|0;if(t>>>0>u>>>0)c[((c[(U&p)+4>>2]|0)+(u*20|0)&p)+8>>2]=t;D=U+24|0;c[((c[(D&p)>>2]|0)&p)+88>>2]=t+-1;z=wh(U,20,C,0,t+1|0)|0;k=c[(q&p)>>2]|0;m=g+12|0;w=c[(m&p)>>2]|0;c[(q&p)>>2]=v;c[(m&p)>>2]=0;H=c[(s&p)>>2]|0;ir(f,g,O)|0;c[(q&p)>>2]=k;c[(m&p)>>2]=w;wh(U,21,C,0,0)|0;m=xu(f,g,N,h,y,r,x,W)|0;w=(P+-115&255)<2;if(w)k=xu(f,g,O,h,A,r,x,W)|0;else k=0;if((x|0)!=0?(l=(c[(x&p)>>2]|0)+-1|0,c[(x&p)>>2]=l,(l|0)==0):0)Wc(x);r=P<<24>>24==118;if((P+-117&255)<2){v=W;l=W}else{v=wh(U,17,A,k,0)|0;l=wh(U,22,C,W,0)|0;wh(U,16,0,v,0)|0;q=_+24|0;x=g+24|0;s=x;q=jw(c[(s&p)>>2]|0,c[(s&p)+4>>2]|0,c[(q&p)>>2]|0,c[(q&p)+4>>2]|0)|0;c[(x&p)>>2]=q;c[(x&p)+4>>2]=G}if(r){u=g+24|0;x=u;q=c[(x&p)+4>>2]|0;s=_+24|0;t=c[(s&p)>>2]|0;s=c[(s&p)+4>>2]|0;if(q>>>0>s>>>0|((q|0)==(s|0)?(c[(x&p)>>2]|0)>>>0>t>>>0:0)){q=u;c[(q&p)>>2]=t;c[(q&p)+4>>2]=s;q=v}else q=v}else{q=wh(U,17,y,m,0)|0;wh(U,22,B,W,0)|0;wh(U,16,0,q,0)|0}u=wh(U,17,y,m,0)|0;wh(U,22,B,v,0)|0;wh(U,16,0,T,0)|0;do if(!R)if(r){v=u;u=u+1|0;break}else{v=wh(U,22,B,v,0)|0;wh(U,16,0,T,0)|0;break}else v=u;while(0);t=c[(I&p)>>2]|0;if(w)wh(U,17,A,k,0)|0;wh(U,22,C,q,0)|0;wh(U,16,0,T,0)|0;s=c[(I&p)>>2]|0;if(s>>>0>z>>>0)c[((c[(U&p)+4>>2]|0)+(z*20|0)&p)+8>>2]=s;c[((c[(D&p)>>2]|0)&p)+88>>2]=s+-1;wh(U,22,B,l,0)|0;wh(U,22,C,q,0)|0;q=c[(D&p)>>2]|0;m=~T;if((T|0)<0?(S=c[(q&p)+112>>2]|0,(S|0)!=0):0)c[(S+(m<<2)&p)>>2]=c[(I&p)>>2];c[(q&p)+88>>2]=(c[(I&p)>>2]|0)+-1;xh(U,wh(U,41,0,0,0)|0,M,-15);xh(U,wh(U,42,c[(E&p)>>2]|0,c[(F&p)>>2]|0,Q)|0,K,-6);l=c[(U&p)+4>>2]|0;if(l)a[(l+(((c[(I&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=1;wh(U,43,u,v,t)|0;l=c[(D&p)>>2]|0;k=~W;if((W|0)<0?(V=c[(l&p)+112>>2]|0,(V|0)!=0):0)c[(V+(k<<2)&p)>>2]=c[(I&p)>>2];c[(l&p)+88>>2]=(c[(I&p)>>2]|0)+-1;if((a[(h&n)>>0]|0)==9){k=_;while(1){l=c[(k&p)+52>>2]|0;if(!l)break;else k=l}Ns(f,0,c[(k&p)>>2]|0)}k=c[(Z&p)>>2]|0;if(k)Mk(X,k,1);c[(Z&p)>>2]=_;c[(L&p)>>2]=g;Qs(f,d[(Y&n)>>0]|0,J,H,0);k=0}i=$;return k|0}function Ms(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();f=g;do if(!(c[(a&p)+4>>2]&1024)){e=d[(a&n)>>0]|0;if((e|0)==158){e=Ms(c[(a&p)+12>>2]|0,b)|0;break}else if((e|0)!=157){e=0;break}if(!(Ms(c[(a&p)+12>>2]|0,f)|0))e=0;else{c[(b&p)>>2]=0-(c[(f&p)>>2]|0);e=1}}else{c[(b&p)>>2]=c[(a&p)+8>>2];e=1}while(0);i=g;return e|0}function Ns(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=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;D=i;i=i+32|0;if((i|0)>=(j|0))fa();C=D;B=d+8|0;y=c[(B&p)>>2]|0;z=c[(d&p)>>2]|0;if(((a[(d&n)+450>>0]|0)==0?(k=d+16|0,!((a[(k&n)>>0]|0)!=0|(y|0)==0)):0)?(a[(z&n)+65>>0]|0)==0:0){a[(k&n)>>0]=1;k=c[(z&p)+24>>2]|0;x=(k&32|0)==0;iq(y,c[(f&p)>>2]|0);h=c[(f&p)>>2]|0;if((h|0)>0){w=f+4|0;v=(e|0)==0;s=(k&96|0)==0;t=(e|0)!=0;u=0;do{r=c[(w&p)>>2]|0;h=c[(r+(u*20|0)&p)>>2]|0;do if(h){k=c[(r+(u*20|0)&p)+4>>2]|0;if(k){jq(y,u,0,k,-1);break}k=a[(h&n)>>0]|0;if(k<<24>>24==-102){if(v)A=25}else if(!(k<<24>>24==-100&t))A=25;if((A|0)==25){A=0;k=c[(r+(u*20|0)&p)+8>>2]|0;if(!k){c[(C&p)>>2]=u+1;k=uh(z,34880,C)|0}else k=kh(z,k)|0;jq(y,u,0,k,75);break}q=b[(h&o)+32>>1]|0;k=q<<16>>16;m=c[(e&p)>>2]|0;a:do if((m|0)>0){g=c[(h&p)+28>>2]|0;l=0;while(1){h=l+1|0;if((c[(e+(l*72|0)&p)+48>>2]|0)==(g|0)){h=l;break a}if((h|0)<(m|0))l=h;else break}}else h=0;while(0);h=c[(e+(h*72|0)&p)+24>>2]|0;if(q<<16>>16<0)k=b[(h&o)+36>>1]|0;if((k|0)<0)k=20456;else k=c[((c[(h&p)+4>>2]|0)+(k*24|0)&p)>>2]|0;if(s){jq(y,u,0,kh(z,c[(r+(u*20|0)&p)+8>>2]|0)|0,75);break}if(x){jq(y,u,0,k,-1);break}else{c[(C&p)>>2]=c[(h&p)>>2];c[(C&p)+4>>2]=k;jq(y,u,0,uh(z,27824,C)|0,75);break}}while(0);u=u+1|0;h=c[(f&p)>>2]|0}while((u|0)<(h|0))}k=c[(B&p)>>2]|0;c[(C&p)+4>>2]=e;c[(C&p)>>2]=d;if((h|0)>0){g=f+4|0;h=0;do{jq(k,h,1,yu(C,c[((c[(g&p)>>2]|0)+(h*20|0)&p)>>2]|0,0)|0,-1);h=h+1|0}while((h|0)<(c[(f&p)>>2]|0))}}i=D;return}function Os(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))fa();f=o;h=b+8|0;if((c[(h&p)>>2]|0)==0?(at(a),g=b+60|0,(c[(g&p)>>2]|0)!=0):0){l=a+72|0;m=(c[(l&p)>>2]|0)+1|0;c[(l&p)>>2]=m;c[(h&p)>>2]=m;n=Oq(a)|0;do if(Ms(c[(g&p)>>2]|0,f)|0){f=c[(f&p)>>2]|0;wh(n,25,f,m,0)|0;if(!f){wh(n,16,0,d,0)|0;break}if((f|0)>-1?(e=b+24|0,d=e,h=c[(d&p)+4>>2]|0,k=((f|0)<0)<<31>>31,h>>>0>k>>>0|((h|0)==(k|0)?(c[(d&p)>>2]|0)>>>0>f>>>0:0)):0){d=e;c[(d&p)>>2]=f;c[(d&p)+4>>2]=k}}else{Rq(a,c[(g&p)>>2]|0,m);wh(n,38,m,0,0)|0;wh(n,46,m,d,0)|0}while(0);f=c[(b&p)+64>>2]|0;if(f){k=c[(l&p)>>2]|0;d=k+1|0;c[(b&p)+12>>2]=d;c[(l&p)>>2]=k+2;Rq(a,f,d);wh(n,38,d,0,0)|0;f=wh(n,137,d,0,0)|0;wh(n,25,0,d,0)|0;g=n+32|0;e=c[(g&p)>>2]|0;if(e>>>0>f>>>0)c[((c[(n&p)+4>>2]|0)+(f*20|0)&p)+8>>2]=e;h=n+24|0;c[((c[(h&p)>>2]|0)&p)+88>>2]=e+-1;e=k+2|0;wh(n,89,m,d,e)|0;f=wh(n,137,m,0,0)|0;wh(n,25,-1,e,0)|0;e=c[(g&p)>>2]|0;if(e>>>0>f>>>0)c[((c[(n&p)+4>>2]|0)+(f*20|0)&p)+8>>2]=e;c[((c[(h&p)>>2]|0)&p)+88>>2]=e+-1}}i=o;return}function Ps(b,f,g,h,i,j,k,l,m){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var 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;I=c[(b&p)+8>>2]|0;D=a[(k&n)>>0]|0;x=D&255;z=k+4|0;G=c[(z&p)>>2]|0;if(!j)q=0;else q=d[(j&n)+1>>0]|0;if(!i)H=0;else H=(c[(i&p)>>2]|0)==0?0:i;C=(H|0)!=0;y=(q|0)!=0;if(!(C|y))it(I,c[(f&p)+12>>2]|0,l);E=c[(g&p)>>2]|0;t=k+8|0;i=c[(t&p)>>2]|0;if(i){s=b+72|0;r=c[(s&p)>>2]|0;if((i+E|0)>(r|0)){c[(s&p)>>2]=r+E;F=i;A=0}else{F=i;A=0}}else{if(C){r=((a[(H&n)+24>>0]&1^1)&255)+(c[(c[(H&p)>>2]&p)>>2]|0)|0;F=b+72|0;s=r+(c[(F&p)>>2]|0)|0;c[(F&p)>>2]=s}else{s=c[(b&p)+72>>2]|0;r=0}F=s+1|0;c[(t&p)>>2]=F;c[(b&p)+72>>2]=s+E;A=r}c[(k&p)+12>>2]=E;do if((h|0)>-1){if((E|0)>0){s=0;do{wh(I,47,h,s,s+F|0)|0;s=s+1|0}while((s|0)!=(E|0))}}else{if(D<<24>>24==9)r=1;else if(D<<24>>24==3)break;else r=D<<24>>24==13&1;bt(b,g,F,r)}while(0);if(y){r=d[(j&n)+1>>0]|0;if((r|0)==1)zh(I,c[(j&p)+8>>2]|0);else if((r|0)==2){r=b+72|0;h=c[(r&p)>>2]|0;w=h+1|0;c[(r&p)>>2]=h+E;r=j+8|0;zh(I,c[(r&p)>>2]|0);r=c[(r&p)>>2]|0;if((r|0)<0)r=(c[(I&p)+32>>2]|0)+-1|0;if(!(a[((c[(I&p)>>2]|0)&n)+65>>0]|0))r=(c[(I&p)+4>>2]|0)+(r*20|0)|0;else r=29120;a[(r&n)>>0]=28;c[(r&p)+4>>2]=1;c[(r&p)+8>>2]=w;h=I+32|0;i=(c[(h&p)>>2]|0)+E|0;if((E|0)>0){s=g+4|0;r=E+-1|0;t=I+4|0;v=0;do{y=cu(b,c[((c[(s&p)>>2]|0)+(v*20|0)&p)>>2]|0)|0;j=v+F|0;q=v+w|0;if((v|0)<(r|0))wh(I,78,j,i,q)|0;else wh(I,79,j,l,q)|0;xh(I,-1,y,-4);u=c[(t&p)>>2]|0;if(u)a[(u+(((c[(h&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=-128;v=v+1|0}while((v|0)!=(E|0))}else r=E+-1|0;wh(I,33,F,w,r)|0}else zu(b,c[(j&p)+4>>2]|0,l,E,F);if(!H)it(I,c[(f&p)+12>>2]|0,l)}a:do switch(x|0){case 11:{i=k+1|0;a[(i&n)>>0]=Bu(c[(c[(g&p)+4>>2]&p)>>2]|0,a[(i&n)>>0]|0)|0;if(C){Au(b,H,f,F,1,A);break a}j=b+19|0;q=a[(j&n)>>0]|0;if(!(q<<24>>24)){E=b+72|0;j=(c[(E&p)>>2]|0)+1|0;c[(E&p)>>2]=j}else{E=q+-1<<24>>24;a[(j&n)>>0]=E;j=c[(b+((E&255)<<2)&p)+24>>2]|0}xh(I,wh(I,49,F,1,j)|0,i,1);dt(b,F,1);wh(I,110,G,j,0)|0;_r(b,j);B=94;break}case 3:{wh(I,25,1,G,0)|0;B=94;break}case 10:{if(C)Au(b,H,f,F,1,A);else B=95;break}case 2:{wh(I,111,G,F,E)|0;B=94;break}case 12:case 14:case 6:case 5:{s=A+1|0;r=b+60|0;i=c[(r&p)>>2]|0;t=b+56|0;q=c[(t&p)>>2]|0;if((q|0)<(s|0)){B=b+72|0;i=c[(B&p)>>2]|0;c[(B&p)>>2]=i+s;i=i+1|0}else{c[(r&p)>>2]=i+s;c[(t&p)>>2]=q-s}q=i+A|0;wh(I,49,F,E,q)|0;if(D<<24>>24==6){F=G+1|0;xh(I,wh(I,69,F,(c[(I&p)+32>>2]|0)+4|0,i)|0,0,-14);wh(I,110,F,i,0)|0}if(C)Au(b,H,f,q,1,A);else{q=b+19|0;j=a[(q&n)>>0]|0;if(!(j<<24>>24)){F=b+72|0;j=(c[(F&p)>>2]|0)+1|0;c[(F&p)>>2]=j}else{j=j+-1<<24>>24;a[(q&n)>>0]=j;j=c[(b+((j&255)<<2)&p)+24>>2]|0}wh(I,74,G,j,0)|0;wh(I,75,G,i,j)|0;q=c[(I&p)+4>>2]|0;if(q)a[(q+(((c[(I&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=8;_r(b,j)}dt(b,i,s);if((c[(t&p)>>2]|0)<(s|0)){c[(t&p)>>2]=s;c[(r&p)>>2]=i;B=94}else B=94;break}case 1:{q=b+19|0;j=a[(q&n)>>0]|0;if(!(j<<24>>24)){D=b+72|0;j=(c[(D&p)>>2]|0)+1|0;c[(D&p)>>2]=j}else{j=j+-1<<24>>24;a[(q&n)>>0]=j;j=c[(b+((j&255)<<2)&p)+24>>2]|0}wh(I,49,F,E,j)|0;wh(I,110,G,j,0)|0;_r(b,j);B=94;break}case 9:case 13:{if(C){Au(b,H,f,F,E,A);break a}if(D<<24>>24==13){wh(I,22,c[(z&p)>>2]|0,0,0)|0;B=95;break a}else{wh(I,35,F,E,0)|0;dt(b,F,E);B=94;break a}}case 7:case 8:{u=c[(k&p)+16>>2]|0;h=c[(u&p)>>2]|0;q=b+19|0;j=a[(q&n)>>0]|0;if(!(j<<24>>24)){C=b+72|0;v=(c[(C&p)>>2]|0)+1|0;c[(C&p)>>2]=v}else{v=j+-1<<24>>24;a[(q&n)>>0]=v;v=c[(b+((v&255)<<2)&p)+24>>2]|0}w=h+2|0;x=b+60|0;i=c[(x&p)>>2]|0;y=b+56|0;q=c[(y&p)>>2]|0;if((q|0)<(w|0)){C=b+72|0;i=c[(C&p)>>2]|0;c[(C&p)>>2]=i+w;i=i+1|0}else{c[(x&p)>>2]=i+w;c[(y&p)>>2]=q-w}t=i+h|0;r=t+1|0;if(D<<24>>24==8){q=G+1|0;j=wh(I,69,q,0,F)|0;xh(I,j,E,-14);wh(I,49,F,E,r)|0;wh(I,110,q,r,0)|0;q=c[(I&p)+4>>2]|0;if(!q)s=j;else{a[(q+(((c[(I&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=16;s=j}}else{wh(I,49,F,E,r)|0;s=0}if((h|0)>0){r=u+4|0;q=F+-1|0;j=0;do{wh(I,34,q+(e[((c[(r&p)>>2]|0)+(j*20|0)&o)+16>>1]|0)|0,j+i|0,0)|0;j=j+1|0}while((j|0)!=(h|0))}wh(I,73,G,t,0)|0;wh(I,49,i,w,v)|0;wh(I,110,G,v,0)|0;if(s){q=c[(I&p)+32>>2]|0;if(q>>>0>s>>>0)c[((c[(I&p)+4>>2]|0)+(s*20|0)&p)+8>>2]=q;c[((c[(I&p)+24>>2]|0)&p)+88>>2]=q+-1}_r(b,v);dt(b,i,w);if((c[(y&p)>>2]|0)<(w|0)){c[(y&p)>>2]=w;c[(x&p)>>2]=i;B=94}else B=94;break}default:B=94}while(0);if((B|0)==94?(H|0)==0:0)B=95;if((B|0)==95?(J=c[(f&p)+8>>2]|0,(J|0)!=0):0)wh(I,140,J,m,0)|0;return}function Qs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))fa();m=o;if((a[(b&n)+450>>0]|0)==2){k=c[(b&p)+8>>2]|0;l=c[(b&p)>>2]|0;h=(g|0)!=0?35160:10360;if((d|0)==118)g=35336;else if((d|0)==116)g=35320;else if((d|0)==117)g=35352;else g=35360;c[(m&p)>>2]=e;c[(m&p)+4>>2]=f;c[(m&p)+8>>2]=h;c[(m&p)+12>>2]=g;g=uh(l,35120,m)|0;xh(k,wh(k,157,c[(b&p)+464>>2]|0,0,0)|0,g,-1)}i=o;return}function Rs(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=f+e|0;h=(g*5|0)+24|0;i=qg(h,0)|0;if(!i)a[(d&n)+65>>0]=1;else{fw(i|0,0,h|0)|0;c[(i&p)+16>>2]=i+20+(g<<2);b[(i&o)+6>>1]=e;b[(i&o)+8>>1]=f;a[(i&n)+4>>0]=a[(d&n)+62>>0]|0;c[(i&p)+12>>2]=d;c[(i&p)>>2]=1}return i|0}function Ss(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=c[(b&p)+52>>2]|0;if(!((f|0)!=0?(e=Ss(a,f,d)|0,(e|0)!=0):0)){e=c[(b&p)>>2]|0;if((c[(e&p)>>2]|0)>(d|0))e=cu(a,c[((c[(e&p)+4>>2]|0)+(d*20|0)&p)>>2]|0)|0;else e=0}return e|0}function Ts(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=(b|0)==0;f=(d|0)==0;a:do if(!(g&f))if(!(g|f)?(h=c[(b&p)>>2]|0,(h|0)==(c[(d&p)>>2]|0)):0)if((h|0)>0){b=c[(b&p)+4>>2]|0;f=c[(d&p)+4>>2]|0;g=0;while(1){if((a[(b+(g*20|0)&n)+12>>0]|0)!=(a[(f+(g*20|0)&n)+12>>0]|0)){f=1;break a}if(Cu(c[(b+(g*20|0)&p)>>2]|0,c[(f+(g*20|0)&p)>>2]|0,e)|0){f=1;break a}g=g+1|0;if((g|0)>=(h|0)){f=0;break}}}else f=0;else f=1;else f=0;while(0);return f|0}function Us(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=c[(b&p)>>2]|0;l=c[(d&p)>>2]|0;k=Rs(g,l-e|0,f+1|0)|0;if((k|0)!=0&(l|0)>(e|0)){h=g+8|0;i=k+16|0;j=e;f=(c[(d&p)+4>>2]|0)+(e*20|0)|0;while(1){g=cu(b,c[(f&p)>>2]|0)|0;if(!g)g=c[(h&p)>>2]|0;d=j-e|0;c[(k+(d<<2)&p)+20>>2]=g;a[((c[(i&p)>>2]|0)+d&n)>>0]=a[(f&n)+12>>0]|0;j=j+1|0;if((j|0)==(l|0))break;else f=f+20|0}}return k|0}function Vs(f,g,h,k,l,m,q){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;var 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,H=0,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,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,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=i;i=i+64|0;if((i|0)>=(j|0))fa();Na=Pa;Oa=Pa+48|0;Ma=Pa+52|0;$=Pa+28|0;Ka=f+8|0;ha=c[(Ka&p)>>2]|0;La=c[(f&p)>>2]|0;c[($&p)>>2]=0;c[($&p)+4>>2]=0;c[($&p)+8>>2]=0;c[($&p)+12>>2]=0;c[($&p)+16>>2]=0;if(!k)S=0;else S=(c[(k&p)>>2]|0)>63?0:k;aa=$+8|0;c[(aa&p)>>2]=S;ba=La+60|0;if(b[(ba&o)>>1]&32)m=m&64511;k=c[(g&p)>>2]|0;a:do if((k|0)<=64){L=m&65535;O=(L&64|0)!=0;X=O?1:k;x=(X*80|0)+743&-16;r=x+72|0;k=mh(La,r,0)|0;Ja=(k|0)==0;if(!Ja)fw(k|0,0,r|0)|0;Aa=La+65|0;if(a[(Aa&n)>>0]|0){mg(La,k);k=0;break}ea=k+60|0;ga=k+64|0;c[(ga&p)>>2]=-1;c[(ea&p)>>2]=-1;Ba=k+41|0;a[(Ba&n)>>0]=X;c[(k&p)>>2]=f;Ca=k+4|0;c[(Ca&p)>>2]=g;ca=k+8|0;c[(ca&p)>>2]=S;c[(k&p)+12>>2]=l;Ea=xs(ha)|0;Da=k+48|0;c[(Da&p)>>2]=Ea;t=k+52|0;c[(t&p)>>2]=Ea;Ea=k+34|0;b[(Ea&o)>>1]=m;Fa=f+424|0;Ga=k+56|0;c[(Ga&p)>>2]=c[(Fa&p)>>2];Ha=k+68|0;c[($&p)>>2]=k;Ia=k+328|0;_=$+4|0;c[(_&p)>>2]=Ia;V=$+12|0;c[(V&p)>>2]=k+x;c[(k+x&p)+48>>2]=k+(x+56);b[(k+x&o)+40>>1]=0;b[(k+x&o)+44>>1]=3;c[(k+x&p)+36>>2]=0;c[(Ha&p)>>2]=0;c[(Ia&p)>>2]=k;c[(k&p)+332>>2]=0;ya=k+340|0;c[(ya&p)>>2]=0;c[(k&p)+344>>2]=8;za=k+348|0;c[(za&p)>>2]=k+352;Du(Ia,h,72);B=(X|0)==0;if((c[(k&p)+340>>2]|0)>0){A=Na+20|0;z=Na+4|0;r=Na+24|0;h=Ia;s=0;do{if(!B){h=c[((c[(h&p)+20>>2]|0)+(s*48|0)&p)>>2]|0;c[(Na&p)>>2]=0;c[(Na&p)+4>>2]=0;c[(Na&p)+8>>2]=0;c[(Na&p)+12>>2]=0;c[(Na&p)+16>>2]=0;c[(Na&p)+20>>2]=0;a[(A&n)>>0]=2;c[(Na&p)>>2]=78;c[(z&p)>>2]=79;c[(r&p)>>2]=0;rs(Na,h)|0;h=c[(_&p)>>2]|0;if(a[(A&n)>>0]|0)xa=15}else xa=15;if((xa|0)==15){xa=0;gt(f,c[((c[(h&p)+20>>2]|0)+(s*48|0)&p)>>2]|0,c[(t&p)>>2]|0,16);h=c[(_&p)>>2]|0;da=(c[(h&p)+20>>2]|0)+(s*48|0)+20|0;b[(da&o)>>1]=e[(da&o)>>1]|4}s=s+1|0}while((s|0)<(c[(h&p)+12>>2]|0))}if(B){if(S)a[(k&n)+36>>0]=c[(S&p)>>2];if(L&1024)a[(k&n)+40>>0]=1}if((c[(g&p)>>2]|0)>0){x=0;do{R=c[(g+(x*72|0)&p)+48>>2]|0;da=c[(Ha&p)>>2]|0;c[(Ha&p)>>2]=da+1;c[(Ha+(da<<2)&p)+4>>2]=R;x=x+1|0}while((x|0)<(c[(g&p)>>2]|0))}u=c[(ya&p)>>2]|0;if((u|0)>0)do{u=u+-1|0;Eu(Ia,u)}while((u|0)>0);b:do if(!(a[(Aa&n)>>0]|0)){da=(L&1024|0)==0;c:do if(!da){d:do if((c[(g&p)>>2]|0)==1){K=c[(g&p)+48>>2]|0;s=c[(g&p)+24>>2]|0;A=c[(l&p)>>2]|0;e:do if((A|0)>0){z=c[(l&p)+4>>2]|0;r=0;while(1){h=c[(z+(r*20|0)&p)>>2]|0;f:do if(!h)h=0;else while(1){B=c[(h&p)+4>>2]|0;if(!(B&4096))break f;if(!(B&262144))h=h+12|0;else h=c[((c[(h&p)+20>>2]|0)&p)+4>>2]|0;h=c[(h&p)>>2]|0;if(!h){h=0;break}}while(0);do if((a[(h&n)>>0]|0)==-102){if((c[(h&p)+28>>2]|0)!=(K|0))break;if((b[(h&o)+32>>1]|0)<0)break e}while(0);r=r+1|0;if((r|0)>=(A|0)){xa=41;break}}}else xa=41;while(0);g:do if((xa|0)==41){h=c[(s&p)+8>>2]|0;if(!h)break d;t=l+4|0;s=s+4|0;while(1){if(a[(h&n)+50>>0]|0){F=h+46|0;h:do if(!(b[(F&o)>>1]|0))B=0;else{I=h+4|0;H=h+32|0;B=0;do{E=b[((c[(I&p)>>2]|0)+(B<<1)&o)>>1]|0;if(!(Fu(Ia,K,E,-1,-1,2,h)|0)){r=c[((c[(H&p)>>2]|0)+(B<<2)&p)>>2]|0;if((c[(l&p)>>2]|0)>0)A=0;else break h;i:while(1){C=c[((c[(t&p)>>2]|0)+(A*20|0)&p)>>2]|0;j:do if(!C)z=0;else{z=C;while(1){D=c[(z&p)+4>>2]|0;if(!(D&4096))break j;if(!(D&262144))z=z+12|0;else z=c[((c[(z&p)+20>>2]|0)&p)+4>>2]|0;z=c[(z&p)>>2]|0;if(!z){z=0;break}}}while(0);do if((a[(z&n)>>0]|0)==-102){if((b[(z&o)+32>>1]|0)!=(b[((c[(I&p)>>2]|0)+(B<<1)&o)>>1]|0))break;if((c[(z&p)+28>>2]|0)!=(K|0))break;z=cu(f,C)|0;if(!z)break;if(!(dd(c[(z&p)>>2]|0,r)|0))break i}while(0);A=A+1|0;if((A|0)>=(c[(l&p)>>2]|0))break h}if((A|0)<0)break h;if(!(a[((c[(s&p)>>2]|0)+(E*24|0)&n)+20>>0]|0))break h}B=B+1|0}while((B|0)<(e[(F&o)>>1]|0))}while(0);if((B|0)==(e[(F&o)>>1]|0))break g}h=c[(h&p)+20>>2]|0;if(!h)break d}}while(0);a[(k&n)+40>>0]=1;break c}while(0);if(!S){b[(Ea&o)>>1]=e[(Ea&o)>>1]|512;c[(ca&p)>>2]=l}}while(0);k:do if((((X|0)==1?(Z=c[($&p)>>2]|0,Y=Z+34|0,(b[(Y&o)>>1]&32)==0):0)?(U=c[(Z&p)+4>>2]|0,Q=c[(U&p)+24>>2]|0,(a[(Q&n)+44>>0]&16)==0):0)?(c[(U&p)+72>>2]|0)==0:0){S=c[(U&p)+48>>2]|0;C=Z+328|0;R=c[(V&p)>>2]|0;K=R+36|0;c[(K&p)>>2]=0;b[(R&o)+42>>1]=0;y=Fu(C,S,-1,0,0,2,0)|0;l:do if(!y){A=c[(Q&p)+8>>2]|0;m:do if(A){D=R+48|0;n:while(1){do if(a[(A&n)+50>>0]|0){if(c[(A&p)+36>>2]|0)break;z=A+46|0;h=b[(z&o)>>1]|0;if((h&65535)>3)break;t=A+4|0;o:do if(!(h<<16>>16)){h=0;B=0}else{B=0;while(1){h=Fu(C,S,b[((c[(t&p)>>2]|0)+(B<<1)&o)>>1]|0,0,0,2,A)|0;if(!h)break;c[((c[(D&p)>>2]|0)+(B<<2)&p)>>2]=h;B=B+1|0;h=b[(z&o)>>1]|0;if((B|0)>=(h&65535|0))break o}h=b[(z&o)>>1]|0}while(0);if((B|0)==(h&65535|0)){D=B;break n}}while(0);A=c[(A&p)+20>>2]|0;if(!A)break m}c[(K&p)>>2]=4609;if(!(a[(A&n)+51>>0]&32)){s=U+64|0;r=c[(s&p)>>2]|0;s=c[(s&p)+4>>2]|0;z=0;y=0;h=e[(A&o)+48>>1]|0;p:while(1){B=h;while(1){h=B+-1|0;if((B|0)<=0)break p;B=b[((c[(t&p)>>2]|0)+(h<<1)&o)>>1]|0;if((B&65535)<63)break;else B=h}$=iw(1,0,B<<16>>16|0)|0;z=$|z;y=G|y}if((r&~z|0)==0&(s&~y|0)==0)xa=91}else xa=91;if((xa|0)==91)c[(K&p)>>2]=4673;$=D&65535;b[(R&o)+40>>1]=$;b[(R&o)+24>>1]=$;c[(R&p)+28>>2]=A;b[(R&o)+20>>1]=39;break l}while(0);if(!(c[(K&p)>>2]|0)){xa=103;break k}}else{c[(K&p)>>2]=4353;c[(c[(R&p)+48>>2]&p)>>2]=y;b[(R&o)+40>>1]=1;b[(R&o)+24>>1]=1;b[(R&o)+20>>1]=33}while(0);b[(R&o)+22>>1]=1;c[(Z&p)+800>>2]=R;t=c[(Z&p)+68>>2]|0;q:do if((t|0)>0){u=0;while(1){if((c[(Z+(u<<2)&p)+72>>2]|0)==(S|0))break;u=u+1|0;if((u|0)>=(t|0)){u=0;t=0;break q}}u=iw(1,0,u|0)|0;t=G}else{u=0;t=0}while(0);s=R+8|0;c[(s&p)>>2]=u;c[(s&p)+4>>2]=t;c[(Z&p)+740>>2]=S;b[(Z&o)+32>>1]=1;s=c[(Z&p)+8>>2]|0;if(s)a[(Z&n)+36>>0]=c[(s&p)>>2];if(!(b[(Y&o)>>1]&1024)){xa=120;break}a[(Z&n)+40>>0]=1;xa=120}else xa=103;while(0);if((xa|0)==103){F=c[($&p)>>2]|0;h=c[(F&p)+4>>2]|0;H=c[(c[(F&p)>>2]&p)>>2]|0;Z=a[(F&n)+41>>0]|0;I=Z&255;z=c[(V&p)>>2]|0;c[(z&p)+48>>2]=z+56;b[(z&o)+40>>1]=0;b[(z&o)+44>>1]=3;c[(z&p)+36>>2]=0;r=H+65|0;r:do if(Z<<24>>24){s=z+16|0;t=F+68|0;u=z+8|0;v=0;w=0;x=0;y=0;E=0;D=h+8|0;C=0;while(1){a[(s&n)>>0]=E;B=c[(D&p)+40>>2]|0;A=c[(t&p)>>2]|0;s:do if((A|0)>0){h=0;while(1){if((c[(F+(h<<2)&p)+72>>2]|0)==(B|0))break;h=h+1|0;if((h|0)>=(A|0)){h=0;B=0;break s}}h=iw(1,0,h|0)|0;B=G}else{h=0;B=0}while(0);Z=u;c[(Z&p)>>2]=h;c[(Z&p)+4>>2]=B;Z=C;C=a[(D&n)+36>>0]|0;Z=((C|Z)&10)==0;w=Z?w:v;y=Z?y:x;if(!(a[((c[(D&p)+16>>2]|0)&n)+44>>0]&16))h=Hu($,w,y)|0;else h=Gu($,w,y)|0;if(h)break;Z=Iu($,w,y)|0;h=u;if(Z)break;if(a[(r&n)>>0]|0)break r;E=E+1|0;if((E|0)>=(I|0))break r;else{v=c[(h&p)>>2]|v;x=c[(h&p)+4>>2]|x;D=D+72|0}}Ju(H,z);break b}while(0);Ju(H,z);Ku(k,0);if(a[(Aa&n)>>0]|0)break;if(c[(ca&p)>>2]|0){Ku(k,(e[(k&o)+32>>1]|0)+1&65535);if(!(a[(Aa&n)>>0]|0))xa=120;else break}else xa=121}if((xa|0)==120?(c[(ca&p)>>2]|0)==0:0)xa=121;if((xa|0)==121?(c[(La&p)+24>>2]&131072|0)!=0:0){ca=k+24|0;c[(ca&p)>>2]=-1;c[(ca&p)+4>>2]=-1}if((c[(f&p)+64>>2]|0)==0?(a[(Aa&n)>>0]|0)==0:0){x=a[(Ba&n)>>0]|0;t:do if((x&255)>1&(l|0)!=0?(b[(ba&o)>>1]&1024)==0:0){s=Lu(Ha,l)|0;t=G;r=c[(aa&p)>>2]|0;if(r){ca=Lu(Ha,r)|0;s=ca|s;t=G|t}B=k+736|0;h=c[(Ca&p)>>2]|0;A=c[(_&p)>>2]|0;z=A+20|0;A=A+12|0;y=x;r=X;do{u=c[(B+(((y&255)+-1|0)*80|0)&p)+64>>2]|0;if(!(a[(h+((d[(u&n)+16>>0]|0)*72|0)&n)+44>>0]&8))break t;if(da?(c[(u&p)+36>>2]&4096|0)==0:0)break t;w=u+8|0;v=c[(w&p)>>2]|0;w=c[(w&p)+4>>2]|0;if(!((v&s|0)==0&(w&t|0)==0))break t;u=c[(z&p)>>2]|0;ca=c[(A&p)>>2]|0;x=u+(ca*48|0)|0;if((ca|0)>0)do{ca=u+40|0;if(!((v&c[(ca&p)>>2]|0)==0?(w&c[(ca&p)+4>>2]|0)==0:0)?(c[((c[(u&p)>>2]|0)&p)+4>>2]&1|0)==0:0)break t;u=u+48|0}while(u>>>0>>0);y=y+-1<<24>>24;a[(Ba&n)>>0]=y;r=r+-1|0}while((y&255)>1)}else r=X;while(0);da=(c[(k&p)>>2]|0)+424|0;c[(da&p)>>2]=(c[(da&p)>>2]|0)+(b[(k&o)+32>>1]|0);do if((L&4|0)!=0?(W=(c[(k&p)+800>>2]|0)+36|0,T=c[(W&p)>>2]|0,(T&4096|0)!=0):0){a[(k&n)+38>>0]=1;if(a[((c[(g&p)+24>>2]|0)&n)+44>>0]&32)break;c[(W&p)>>2]=T&-65}while(0);wa=k+736|0;S=(r|0)>0;if(S){P=L&16;Q=k+38|0;R=ha+32|0;M=O^1;O=(q|0)==0|M;N=f+68|0;K=54-(L>>>12&1)|0;J=ha+4|0;E=La+20|0;C=La+16|0;v=0;L=wa;while(1){D=d[(L&n)+44>>0]|0;F=g+(D*72|0)+24|0;t=c[(F&p)>>2]|0;h=c[(t&p)+68>>2]|0;u:do if(!h)z=-1e6;else{B=c[(E&p)>>2]|0;if((B|0)<=0){z=0;break}A=c[(C&p)>>2]|0;s=0;while(1){z=s+1|0;if((c[(A+(s<<4)&p)+12>>2]|0)==(h|0)){z=s;break u}if((z|0)<(B|0))s=z;else break}}while(0);I=c[(L&p)+64>>2]|0;H=t+44|0;h=d[(H&n)>>0]|0;do if(!(h&2)){if(c[(t&p)+12>>2]|0)break;B=c[(I&p)+36>>2]|0;if(B&1024){y=c[(t&p)+60>>2]|0;v:do if(!y)y=0;else while(1){if((c[(y&p)>>2]|0)==(La|0))break v;y=c[(y&p)+24>>2]|0;if(!y){y=0;break}}while(0);xh(ha,wh(ha,149,c[(g+(D*72|0)&p)+48>>2]|0,0,0)|0,y,-10);break}if(h&16)break;if(B&64|P){gs(f,z,c[(t&p)+32>>2]|0,0,c[(t&p)>>2]|0);break}A=g+(D*72|0)+48|0;if(!(a[(Q&n)>>0]|0))h=54;else{c[(ea&p)>>2]=c[(A&p)>>2];h=55}Qq(f,c[(A&p)>>2]|0,z,t,h);if(a[(Q&n)>>0]|0)break;if((b[(t&o)+38>>1]|0)>=64)break;if(a[(H&n)>>0]&32)break;A=g+(D*72|0)+64|0;y=c[(A&p)>>2]|0;A=c[(A&p)+4>>2]|0;if((y|0)==0&(A|0)==0)x=0;else{x=0;do{y=mw(y|0,A|0,1)|0;A=G;x=x+1|0}while(!((y|0)==0&(A|0)==0))}xh(ha,(c[(R&p)>>2]|0)+-1|0,x,-14)}while(0);B=I+36|0;w:do if(c[(B&p)>>2]&512){h=c[(I&p)+28>>2]|0;do if(a[(H&n)>>0]&32){if((a[(h&n)+51>>0]&3)!=2|M)break;c[(L&p)+8>>2]=c[(L&p)+4>>2];break w}while(0);do if(!(a[(Q&n)>>0]|0)){if(!O){x=q;w=K;break}x=c[(N&p)>>2]|0;c[(N&p)>>2]=x+1;w=54}else{w=c[((c[(F&p)>>2]|0)&p)+8>>2]|0;if((w|0)==0|(w|0)==(h|0))x=q;else{x=q;do{x=x+1|0;w=c[(w&p)+20>>2]|0}while(!((w|0)==0|(w|0)==(h|0)))}c[(ga&p)>>2]=x;w=55}while(0);c[(L&p)+8>>2]=x;wh(ha,w,x,c[(h&p)+40>>2]|0,z)|0;da=c[(Ka&p)>>2]|0;xh(da,-1,hs(f,h)|0,-6);da=c[(B&p)>>2]|0;if(!((da&15|0)!=0&(da&32770|0)==0))break;if(b[(Ea&o)>>1]&1)break;u=c[(J&p)>>2]|0;if(!u)break;a[(u+(((c[(R&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=2}while(0);if((z|0)>-1)Ar(f,z);v=v+1|0;if((v|0)==(r|0))break;else L=L+80|0}ga=(a[(Aa&n)>>0]|0)==0;c[(k&p)+44>>2]=c[(R&p)>>2];if(!ga)break}else{R=ha+32|0;c[(k&p)+44>>2]=c[(R&p)>>2]}if(!S)break a;ka=k+24|0;la=k+36|0;ma=k+39|0;na=f+80|0;oa=f+68|0;pa=f+100|0;qa=f+19|0;ra=f+72|0;sa=Na+20|0;ta=Na+4|0;ua=Na+24|0;t=-1;s=-1;va=0;while(1){Y=wa+(va*80|0)|0;h=wa+(va*80|0)+64|0;_=wa+(va*80|0)+44|0;if(c[((c[(h&p)>>2]|0)&p)+36>>2]&16384){K=d[(_&n)>>0]|0;U=g+(K*72|0)+8|0;Z=c[(Ka&p)>>2]|0;y=Oq(f)|0;$=c[(na&p)>>2]|0;c[(na&p)>>2]=$+1;$=wh(y,44,$,0,0)|0;y=c[(g+(K*72|0)&p)+24>>2]|0;ga=c[(ya&p)>>2]|0;B=c[(za&p)>>2]|0;T=B+(ga*48|0)|0;M=c[(h&p)>>2]|0;x:do if((ga|0)>0){z=g+(K*72|0)+48|0;v=y+4|0;w=M+48|0;F=0;C=0;A=0;u=0;E=0;while(1){D=c[(B&p)>>2]|0;ga=M;do if((c[(ga&p)>>2]|0)==0&(c[(ga&p)+4>>2]|0)==0){if(b[(B&o)+20>>1]&2)break;if(c[(D&p)+4>>2]&1)break;ga=c[(z&p)>>2]|0;c[(Na&p)>>2]=0;c[(Na&p)+4>>2]=0;c[(Na&p)+8>>2]=0;c[(Na&p)+12>>2]=0;c[(Na&p)+16>>2]=0;c[(Na&p)+20>>2]=0;a[(sa&n)>>0]=3;c[(Na&p)>>2]=78;c[(ta&p)>>2]=79;c[(ua&p)>>2]=ga;rs(Na,D)|0;if(!(a[(sa&n)>>0]|0))break;ga=c[(f&p)>>2]|0;u=ss(ga,u,Mr(ga,D,0,0)|0)|0}while(0);do if(!(Mu(B,U,t,s)|0)){I=F;D=C;h=A}else{D=c[(B&p)+12>>2]|0;if((D|0)>63){I=0;H=-2147483648}else{I=iw(1,0,D|0)|0;H=G}if(!(E<<24>>24)){E=c[((c[(v&p)>>2]|0)+(D*24|0)&p)>>2]|0;c[(Na&p)>>2]=c[(y&p)>>2];c[(Na&p)+4>>2]=E;bd(284,33960,Na);E=1}if(!((I&F|0)==0&(H&C|0)==0)){I=F;D=C;h=A;break}h=A+1|0;if(Nu(c[(f&p)>>2]|0,M,h)|0)break x;c[((c[(w&p)>>2]|0)+(A<<2)&p)>>2]=B;I=I|F;D=H|C}while(0);B=B+48|0;if(B>>>0>=T>>>0){B=I;xa=207;break}else{F=I;C=D;A=h}}}else{D=0;B=0;h=0;u=0;xa=207}while(0);do if((xa|0)==207){xa=0;v=h&65535;b[(M&o)+40>>1]=v;b[(M&o)+24>>1]=v;v=M+36|0;c[(v&p)>>2]=16961;L=g+(K*72|0)+64|0;N=L;H=c[(N&p)+4>>2]|0;N=c[(N&p)>>2]&~B;P=H&((D|-2147483648)^2147483647);x=y+38|0;Q=b[(x&o)>>1]|0;I=Q<<16>>16;Q=Q<<16>>16>63?63:I;S=(Q|0)>0;if(S){D=0;do{ga=iw(1,0,D|0)|0;h=(((ga&N|0)!=0|(G&P|0)!=0)&1)+h|0;D=D+1|0}while((D|0)!=(Q|0))}if((H|0)<0)h=h+-63+I|0;O=h+1|0;J=us(c[(f&p)>>2]|0,O&65535,0,Oa)|0;if(!J)break;c[(M&p)+28>>2]=J;c[(J&p)>>2]=33992;c[(J&p)+12>>2]=y;D=c[(za&p)>>2]|0;if(D>>>0>>0){h=J+4|0;B=J+32|0;H=0;I=0;A=0;do{do if(Mu(D,U,t,s)|0){F=c[(D&p)+12>>2]|0;if((F|0)>63){E=0;C=-2147483648}else{E=iw(1,0,F|0)|0;C=G}if(!((E&H|0)==0&(C&I|0)==0))break;ga=c[(D&p)>>2]|0;b[((c[(h&p)>>2]|0)+(A<<1)&o)>>1]=F;F=Ou(f,c[(ga&p)+12>>2]|0,c[(ga&p)+16>>2]|0)|0;if(!F)F=11152;else F=c[(F&p)>>2]|0;c[((c[(B&p)>>2]|0)+(A<<2)&p)>>2]=F;H=E|H;I=C|I;A=A+1|0}while(0);D=D+48|0}while(D>>>0>>0)}else A=0;if(S){D=J+4|0;C=J+32|0;h=0;do{ga=iw(1,0,h|0)|0;if(!((ga&N|0)==0&(G&P|0)==0)){b[((c[(D&p)>>2]|0)+(A<<1)&o)>>1]=h;c[((c[(C&p)>>2]|0)+(A<<2)&p)>>2]=11152;A=A+1|0}h=h+1|0}while((h|0)!=(Q|0))}do if((c[(L&p)+4>>2]|0)<0){if((b[(x&o)>>1]|0)<=63)break;h=J+4|0;B=J+32|0;z=63;do{b[((c[(h&p)>>2]|0)+(A<<1)&o)>>1]=z;c[((c[(B&p)>>2]|0)+(A<<2)&p)>>2]=11152;A=A+1|0;z=z+1|0}while((z|0)<(b[(x&o)>>1]|0))}while(0);b[((c[(J&p)+4>>2]|0)+(A<<1)&o)>>1]=-1;c[((c[(J&p)+32>>2]|0)+(A<<2)&p)>>2]=11152;D=c[(oa&p)>>2]|0;c[(oa&p)>>2]=D+1;B=wa+(va*80|0)+8|0;c[(B&p)>>2]=D;wh(Z,56,D,O,0)|0;D=c[(Ka&p)>>2]|0;xh(D,-1,hs(f,J)|0,-6);c[(pa&p)>>2]=(c[(pa&p)>>2]|0)+1;D=wa+(va*80|0)+4|0;w=wh(Z,108,c[(D&p)>>2]|0,0,0)|0;A=(u|0)!=0;if(A){z=xs(Z)|0;gt(f,u,z,16);c[(v&p)>>2]=c[(v&p)>>2]|131072}else z=0;h=a[(qa&n)>>0]|0;if(!(h<<24>>24)){v=(c[(ra&p)>>2]|0)+1|0;c[(ra&p)>>2]=v}else{v=h+-1<<24>>24;a[(qa&n)>>0]=v;v=c[(f+((v&255)<<2)&p)+24>>2]|0}Pt(f,J,c[(D&p)>>2]|0,v,0,0,0,0)|0;wh(Z,110,c[(B&p)>>2]|0,v,0)|0;C=Z+4|0;h=c[(C&p)>>2]|0;if(h)a[(h+(((c[(Z&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=16;if(A){B=c[(Z&p)+24>>2]|0;A=~z;do if((z|0)<0){h=c[(B&p)+112>>2]|0;if(!h)break;c[(h+(A<<2)&p)>>2]=c[(Z&p)+32>>2]}while(0);c[(B&p)+88>>2]=(c[(Z&p)+32>>2]|0)+-1}wh(Z,9,c[(D&p)>>2]|0,w+1|0,0)|0;h=c[(C&p)>>2]|0;B=c[(Z&p)+32>>2]|0;if(h)a[(h+((B+-1|0)*20|0)&n)+3>>0]=3;if(B>>>0>w>>>0)c[(h+(w*20|0)&p)+8>>2]=B;h=Z+24|0;c[((c[(h&p)>>2]|0)&p)+88>>2]=B+-1;_r(f,v);bu(f);x=c[(Z&p)+32>>2]|0;if(x>>>0>$>>>0)c[((c[(C&p)>>2]|0)+($*20|0)&p)+8>>2]=x;c[((c[(h&p)>>2]|0)&p)+88>>2]=x+-1}while(0);Gk(c[(f&p)>>2]|0,u);if(a[(Aa&n)>>0]|0)break b}Pu(f,g,Y,va,d[(_&n)>>0]|0,m);c[(wa+(va*80|0)&p)+32>>2]=c[(R&p)>>2];ja=c[(k&p)>>2]|0;O=ja+8|0;ea=c[(O&p)>>2]|0;ha=c[(ja&p)>>2]|0;u=k+(va*80|0)+736|0;N=c[(k+(va*80|0)&p)+800>>2]|0;ca=k+(va*80|0)+780|0;K=d[(ca&n)>>0]|0;I=c[(Ca&p)>>2]|0;Q=I+(K*72|0)+8|0;q=c[(I+(K*72|0)&p)+48>>2]|0;B=c[(Ha&p)>>2]|0;y:do if((B|0)>0){h=0;while(1){if((c[(Ha+(h<<2)&p)+4>>2]|0)==(q|0))break;h=h+1|0;if((h|0)>=(B|0)){h=-1;B=-1;break y}}h=iw(1,0,h|0)|0;h=~h;B=~G}else{h=-1;B=-1}while(0);ia=k+(va*80|0)+808|0;P=ia;c[(P&p)>>2]=h&t;c[(P&p)+4>>2]=B&s;P=ka;P=mw(c[(P&p)>>2]|0,c[(P&p)+4>>2]|0,va|0)|0;ba=P&1;W=N+36|0;if(!(c[(W&p)>>2]&64))y=0;else y=(b[(Ea&o)>>1]&32)==0;J=xs(ea)|0;S=k+(va*80|0)+752|0;c[(S&p)>>2]=J;da=k+(va*80|0)+748|0;c[(da&p)>>2]=J;ga=xs(ea)|0;c[(k+(va*80|0)&p)+760>>2]=ga;do if(a[(ca&n)>>0]|0){if(!(a[(I+(K*72|0)&n)+44>>0]&8))break;aa=ja+72|0;l=(c[(aa&p)>>2]|0)+1|0;c[(aa&p)>>2]=l;c[(u&p)>>2]=l;wh(ea,25,0,l,0)|0}while(0);D=a[(I+(K*72|0)&n)+45>>0]|0;z:do if(!(D&4)){F=c[(W&p)>>2]|0;if(F&1024){v=b[(N&o)+40>>1]|0;w=v&65535;y=ja+100|0;c[(y&p)>>2]=(c[(y&p)>>2]|0)+1;y=w+2|0;J=ja+60|0;h=c[(J&p)>>2]|0;K=ja+56|0;B=c[(K&p)>>2]|0;if((B|0)<(y|0)){ca=ja+72|0;x=c[(ca&p)>>2]|0;c[(ca&p)>>2]=x+y;x=x+1|0}else{c[(J&p)>>2]=h+y;c[(K&p)>>2]=B-y;x=h}h=c[(da&p)>>2]|0;E=v<<16>>16==0;if(!E){H=x+2|0;F=N+48|0;I=0;do{D=H+I|0;C=c[((c[(F&p)>>2]|0)+(I<<2)&p)>>2]|0;do if(C)if(!(b[(C&o)+18>>1]&1)){Rq(ja,c[((c[(C&p)>>2]|0)&p)+16>>2]|0,D);break}else{Qu(ja,C,u,I,ba,D)|0;h=c[(S&p)>>2]|0;break}while(0);I=I+1|0}while((I|0)<(w|0))}wh(ea,25,c[(N&p)+24>>2]|0,x,0)|0;wh(ea,25,w,x+1|0,0)|0;ba=c[(N&p)+32>>2]|0;da=N+28|0;ca=(a[(da&n)>>0]|0)!=0?-11:-2;xh(ea,wh(ea,14,q,h,x)|0,ba,ca);a[(da&n)>>0]=0;if(!E){z=N+30|0;A=N+48|0;h=(v&65535)>1?0-w|0:-1;h=h>>>0>4294967280?0-h|0:16;B=0;do{if(e[(z&o)>>1]&1<>2]|0)+(B<<2)&p)>>2]|0);B=B+1|0}while((B|0)!=(h|0))}a[(k+(va*80|0)&n)+781>>0]=-105;c[(k+(va*80|0)&p)+784>>2]=q;c[(k+(va*80|0)&p)+788>>2]=c[(ea&p)+32>>2];dt(ja,x,y);if((c[(K&p)>>2]|0)<(y|0)){c[(K&p)>>2]=y;c[(J&p)>>2]=x}bu(ja);xa=459;break}if(!((F&256|0)==0|(F&5|0)==0)){y=c[(c[(N&p)+48>>2]&p)>>2]|0;da=ja+72|0;A=(c[(da&p)>>2]|0)+1|0;c[(da&p)>>2]=A;y=Qu(ja,y,u,0,ba,A)|0;if((y|0)!=(A|0))_r(ja,A);xa=c[(S&p)>>2]|0;wh(ea,38,y,xa,0)|0;wh(ea,70,q,xa,y)|0;dt(ja,y,1);Su(ja,q,-1,y);a[(k+(va*80|0)&n)+781>>0]=-100;xa=459;break}if((F&258|0)==258){if(!(F&32)){h=0;A=0}else{h=1;A=c[(c[(N&p)+48>>2]&p)>>2]|0}if(!(F&16))h=0;else h=c[((c[(N&p)+48>>2]|0)+(h<<2)&p)>>2]|0;B=(ba|0)!=0;z=B?A:h;h=B?h:A;if(!h)wh(ea,B?105:108,q,J,0)|0;else{ca=c[(h&p)>>2]|0;da=$t(ja,c[(ca&p)+16>>2]|0,Na)|0;wh(ea,d[((d[(ca&n)>>0]|0)+-80&n)+33536>>0]|0,q,J,da)|0;dt(ja,da,1);_r(ja,c[(Na&p)>>2]|0);Ru(u,h)}if(!z){h=0;B=156}else{da=c[(z&p)>>2]|0;ca=ja+72|0;h=(c[(ca&p)>>2]|0)+1|0;c[(ca&p)>>2]=h;Rq(ja,c[(da&p)+16>>2]|0,h);da=a[(da&n)>>0]|0;if(da<<24>>24==80|da<<24>>24==82)B=ba<<1^83;else B=ba<<1|80;Ru(u,z)}A=ea+32|0;da=c[(A&p)>>2]|0;a[(k+(va*80|0)&n)+781>>0]=ba^9;c[(k+(va*80|0)&p)+784>>2]=q;c[(k+(va*80|0)&p)+788>>2]=da;if((B|0)==156){xa=459;break}da=ja+72|0;x=(c[(da&p)>>2]|0)+1|0;c[(da&p)>>2]=x;wh(ea,103,q,x,0)|0;Su(ja,q,-1,x);wh(ea,B,h,J,x)|0;x=c[(ea&p)+4>>2]|0;if(!x){xa=459;break}a[(x+(((c[(A&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=83;xa=459;break}if(F&512){O=b[(N&o)+24>>1]|0;a[(Ma&n)>>0]=0;V=c[(N&p)+28>>2]|0;X=c[(k+(va*80|0)&p)+744>>2]|0;do if(!(b[(Ea&o)>>1]&1)){H=0;D=0}else{if((a[(la&n)>>0]|0)<=0){H=0;D=0;break}D=(e[(V&o)+46>>1]|0)>(O&65535);H=D&1;D=D&1}while(0);h=O&65535;if(!(F&32)){I=h;K=0}else{I=h+1|0;D=1;K=c[((c[(N&p)+48>>2]|0)+(h<<2)&p)>>2]|0}do if(!(F&16))C=0;else{C=c[((c[(N&p)+48>>2]|0)+(I<<2)&p)>>2]|0;if(b[(C&o)+20>>1]&256){ca=ja+72|0;da=(c[(ca&p)>>2]|0)+1|0;c[(ca&p)>>2]=da;c[(k+(va*80|0)&p)+772>>2]=da;wh(ea,25,(a[((c[(V&p)+28>>2]|0)+h&n)>>0]|0)==1^ba,da,0)|0;c[(k+(va*80|0)&p)+776>>2]=c[(ea&p)+32>>2]}if(K){D=1;break}D=b[((c[(V&p)+4>>2]|0)+(h<<1)&o)>>1]|0;if(D<<16>>16<=-1){D=1;break}H=(a[((c[((c[(V&p)+12>>2]|0)&p)+4>>2]|0)+((D<<16>>16)*24|0)&n)+20>>0]|0)==0?1:H;D=1}while(0);M=Tu(ja,u,ba,D,Oa)|0;L=c[(Oa&p)>>2]|0;J=(L|0)==0;if(!J)a[(Ma&n)>>0]=a[(L+h&n)>>0]|0;N=c[(S&p)>>2]|0;E=b[(V&o)+46>>1]|0;if((O&65535)<(E&65535)?!((a[((c[(V&p)+28>>2]|0)+h&n)>>0]|0)==0^((P&1|0)!=0|0!=0)):0)xa=318;else if((ba|0)!=0?E<<16>>16==O<<16>>16:0)xa=318;else{Q=H;H=0;P=C;S=K}if((xa|0)==318){Q=0;P=K;S=C}C=(S|0)!=0;if(C)E=(b[(S&o)+18>>1]&40)!=0;else E=1;F=E&1;K=(P|0)!=0;if(K)I=(b[(P&o)+18>>1]&40)!=0;else I=1;D=I&1;I=(C|O<<16>>16!=0)&1;do if(C){B=c[((c[(S&p)>>2]|0)&p)+16>>2]|0;C=M+h|0;Rq(ja,B,C);if(b[(S&o)+20>>1]&256){if(!(a[((c[(ea&p)>>2]|0)&n)+65>>0]|0))E=(c[(ea&p)+4>>2]|0)+(((c[(ea&p)+32>>2]|0)+-1|0)*20|0)|0;else E=29120;c[(E&p)+12>>2]=c[(k+(va*80|0)&p)+772>>2];a[(E&n)+3>>0]=1}if(Uu(B)|0)wh(ea,76,C,N,0)|0;do if(!J){E=L+h|0;if((Bu(B,a[(E&n)>>0]|0)|0)<<24>>24==65){a[(E&n)>>0]=65;C=65}else C=a[(E&n)>>0]|0;if(!(Vu(B,C)|0))break;a[(E&n)>>0]=65}while(0);E=h+1|0}else{if(!(Q<<24>>24)){E=h;break}wh(ea,28,0,M+h|0,0)|0;E=h+1|0;F=0;I=1}while(0);Wu(ja,M,E-(Q&255)|0,L);xh(ea,wh(ea,d[((I<<2|ba|F<<1)&n)+33544>>0]|0,X,N,M)|0,E,-14);do if(K){B=c[((c[(P&p)>>2]|0)&p)+16>>2]|0;A=M+h|0;dt(ja,A,1);Rq(ja,B,A);if(b[(P&o)+20>>1]&256){if(!(a[((c[(ea&p)>>2]|0)&n)+65>>0]|0))C=(c[(ea&p)+4>>2]|0)+(((c[(ea&p)+32>>2]|0)+-1|0)*20|0)|0;else C=29120;c[(C&p)+12>>2]=c[(k+(va*80|0)&p)+772>>2];a[(C&n)+3>>0]=1}if(Uu(B)|0)wh(ea,76,A,N,0)|0;do if((Bu(B,a[(Ma&n)>>0]|0)|0)<<24>>24!=65){if(Vu(B,a[(Ma&n)>>0]|0)|0)break;Wu(ja,A,1,Ma)}while(0);h=h+1|0}else{if(!(H<<24>>24))break;wh(ea,28,0,M+h|0,0)|0;D=0;h=h+1|0}while(0);mg(ha,L);c[(k+(va*80|0)&p)+788>>2]=c[(ea&p)+32>>2];if(h)xh(ea,wh(ea,d[((D|ba<<1)&n)+33552>>0]|0,X,N,M)|0,h,-14);Ru(u,S);Ru(u,P);do if(!y){h=c[(V&p)+12>>2]|0;if(!(a[(h&n)+44>>0]&32)){ca=ja+72|0;da=(c[(ca&p)>>2]|0)+1|0;c[(ca&p)>>2]=da;wh(ea,112,X,da,0)|0;Su(ja,q,-1,da);wh(ea,66,q,da,0)|0;break}if((q|0)==(X|0))break;h=c[(h&p)+8>>2]|0;A:do if(!h)D=0;else while(1){if((a[(h&n)+51>>0]&3)==2){D=h;break A}h=c[(h&p)+20>>2]|0;if(!h){D=0;break}}while(0);I=D+46|0;w=b[(I&o)>>1]|0;h=w&65535;B=ja+60|0;A=c[(B&p)>>2]|0;z=ja+56|0;v=c[(z&p)>>2]|0;if((v|0)<(h|0)){da=ja+72|0;A=c[(da&p)>>2]|0;c[(da&p)>>2]=A+h;A=A+1|0}else{c[(B&p)>>2]=A+h;c[(z&p)>>2]=v-h}if(w<<16>>16){v=D+4|0;w=V+48|0;z=V+4|0;E=0;do{D=b[((c[(v&p)>>2]|0)+(E<<1)&o)>>1]|0;h=b[(w&o)>>1]|0;B:do if(!(h<<16>>16))h=-1;else{C=c[(z&p)>>2]|0;B=h&65535;h=0;while(1){if((b[(C+(h<<1)&o)>>1]|0)==D<<16>>16)break B;h=h+1|0;if((h|0)>=(B|0)){h=-1;break}}}while(0);wh(ea,47,X,h<<16>>16,E+A|0)|0;E=E+1|0;h=e[(I&o)>>1]|0}while((E|0)<(h|0))}xh(ea,wh(ea,68,q,ga,A)|0,h,-14)}while(0);A=c[(W&p)>>2]|0;do if(!(A&4096)){z=k+(va*80|0)+781|0;if(!ba){a[(z&n)>>0]=9;break}else{a[(z&n)>>0]=8;break}}else a[(k+(va*80|0)&n)+781>>0]=-100;while(0);c[(k+(va*80|0)&p)+784>>2]=X;a[(k+(va*80|0)&n)+782>>0]=A>>>16&1;if(A&15){xa=459;break}a[(k+(va*80|0)&n)+783>>0]=1;xa=459;break}if(!(F&8192))if(!(D&8)){a[(k+(va*80|0)&n)+781>>0]=a[(ba&n)+33560>>0]|0;c[(k+(va*80|0)&p)+784>>2]=q;c[(k+(va*80|0)&p)+788>>2]=(wh(ea,d[(ba&n)+33568>>0]|0,q,J,0)|0)+1;a[(k+(va*80|0)&n)+783>>0]=1;xa=459;break}else{a[(k+(va*80|0)&n)+781>>0]=-100;xa=459;break}J=ja+68|0;aa=c[(J&p)>>2]|0;c[(J&p)>>2]=aa+1;_=ja+72|0;$=(c[(_&p)>>2]|0)+1|0;c[(_&p)>>2]=$;ba=xs(ea)|0;Z=c[(I+(K*72|0)&p)+24>>2]|0;l=c[(c[(N&p)+48>>2]&p)>>2]|0;S=c[(l&p)+12>>2]|0;a[(k+(va*80|0)&n)+781>>0]=18;c[(k+(va*80|0)&p)+784>>2]=$;D=a[(Ba&n)>>0]|0;do if((D&255)>1){I=(D&255)-va|0;F=I+-1|0;E=mh(ha,(F*72|0)+80|0,0)|0;if(!E)break z;D=I&255;c[(E&p)+4>>2]=D;c[(E&p)>>2]=D;D=E+8|0;K=D+0|0;C=Q+0|0;h=K+72|0;do{c[(K&p)>>2]=c[(C&p)>>2];K=K+4|0;C=C+4|0}while((K|0)<(h|0));H=c[(Ca&p)>>2]|0;if((I|0)<2){Y=E;break}else I=1;while(1){K=D+(I*72|0)+0|0;C=H+((d[(k+((I+va|0)*80|0)&n)+780>>0]|0)*72|0)+8|0;h=K+72|0;do{c[(K&p)>>2]=c[(C&p)>>2];K=K+4|0;C=C+4|0}while((K|0)<(h|0));if((I|0)<(F|0))I=I+1|0;else{Y=E;break}}}else Y=c[(Ca&p)>>2]|0;while(0);if(!(b[(Ea&o)>>1]&8)){if(!(a[(Z&n)+44>>0]&32)){D=(c[(_&p)>>2]|0)+1|0;c[(_&p)>>2]=D;wh(ea,28,0,D,0)|0}else{D=c[(Z&p)+8>>2]|0;C:do if(!D)D=0;else while(1){if((a[(D&n)+51>>0]&3)==2)break C;D=c[(D&p)+20>>2]|0;if(!D){D=0;break}}while(0);X=c[(J&p)>>2]|0;c[(J&p)>>2]=X+1;wh(ea,57,X,e[(D&o)+46>>1]|0,0)|0;W=c[(O&p)>>2]|0;xh(W,-1,hs(ja,D)|0,-6);D=X}W=(c[(_&p)>>2]|0)+1|0;c[(_&p)>>2]=W}else{W=0;D=0}X=wh(ea,25,0,$,0)|0;C=c[(ya&p)>>2]|0;do if((C|0)>1){E=0;I=0;do{H=c[(za&p)>>2]|0;V=H+(E*48|0)|0;F=c[(V&p)>>2]|0;do if((V|0)!=(l|0)){if(c[(F&p)+4>>2]&1)break;if(b[(H+(E*48|0)&o)+20>>1]&2)break;if(!(b[(H+(E*48|0)&o)+18>>1]&4095))break;I=ss(ha,I,Mr(ha,F,0,0)|0)|0;C=c[(ya&p)>>2]|0}while(0);E=E+1|0}while((E|0)<(C|0));C=I;if(!C){V=0;break}V=Zq(ja,72,0,C,0)|0}else V=0;while(0);U=S+12|0;do if((c[(U&p)>>2]|0)>0){x=S+20|0;w=(V|0)==0;v=Z+44|0;z=ea+32|0;A=ea+4|0;C=ea+24|0;E=Z+8|0;F=ja+60|0;H=ja+56|0;I=V+12|0;T=0;B=0;h=0;y=240;while(1){K=c[(x&p)>>2]|0;if((c[(K+(T*48|0)&p)+8>>2]|0)!=(q|0)?(b[(K+(T*48|0)&o)+18>>1]&512)==0:0)K=y;else xa=407;do if((xa|0)==407){xa=0;K=c[(K+(T*48|0)&p)>>2]|0;do if(!w){if(c[(K&p)+4>>2]&1)break;c[(I&p)>>2]=K;K=V}while(0);L=Vs(ja,Y,K,0,0,y,aa)|0;if(!L){K=y;break}Pu(ja,Y,L+736|0,va,d[(ca&n)>>0]|0,0);do if(!(b[(Ea&o)>>1]&8)){O=(T|0)==((c[(U&p)>>2]|0)+-1|0)?-1:T;do if(!(a[(v&n)>>0]&32)){J=wh(ea,130,D,0,ct(ja,Z,-1,q,W,0)|0)|0;xh(ea,J,O,-14)}else{K=c[(E&p)>>2]|0;D:do if(!K)K=0;else while(1){if((a[(K&n)+51>>0]&3)==2)break D;K=c[(K&p)+20>>2]|0;if(!K){K=0;break}}while(0);P=b[(K&o)+46>>1]|0;M=P&65535;S=c[(F&p)>>2]|0;Q=c[(H&p)>>2]|0;if((Q|0)<(M|0)){N=c[(_&p)>>2]|0;c[(_&p)>>2]=N+M;N=N+1|0}else{c[(F&p)>>2]=S+M;c[(H&p)>>2]=Q-M;N=S}if(P<<16>>16){Q=K+4|0;S=0;do{ct(ja,Z,b[((c[(Q&p)>>2]|0)+(S<<1)&o)>>1]|0,q,S+N|0,0)|0;S=S+1|0}while((S|0)<(M|0))}S=(O|0)!=0;if(S){J=wh(ea,69,D,0,N)|0;xh(ea,J,M,-14);if((O|0)>-1)xa=426}else{J=0;xa=426}do if((xa|0)==426){xa=0;wh(ea,49,N,M,W)|0;wh(ea,110,D,W,0)|0;if(!S)break;O=c[(A&p)>>2]|0;if(!O)break;a[(O+(((c[(z&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=16}while(0);dt(ja,N,M);if((c[(H&p)>>2]|0)>=(M|0))break;c[(H&p)>>2]=M;c[(F&p)>>2]=N}while(0);wh(ea,17,$,ba,0)|0;if(!J)break;K=c[(z&p)>>2]|0;if(K>>>0>J>>>0)c[((c[(A&p)>>2]|0)+(J*20|0)&p)+8>>2]=K;c[((c[(C&p)>>2]|0)&p)+88>>2]=K+-1}else wh(ea,17,$,ba,0)|0;while(0);h=(a[(L&n)+39>>0]|0)==0?h:1;K=c[(L&p)+800>>2]|0;do if(!(c[(K&p)+36>>2]&512)){B=0;K=y}else{if((T|0)!=0?(c[(K&p)+28>>2]|0)!=(B|0):0){B=0;K=y;break}B=c[(K&p)+28>>2]|0;if((a[(v&n)>>0]&32)!=0?(a[(B&n)+51>>0]&3)==2:0){B=0;K=y;break}K=(y&65535|4096)&65535}while(0);Xs(L)}while(0);T=T+1|0;if((T|0)>=(c[(U&p)>>2]|0))break;else y=K}c[(k+(va*80|0)&p)+792>>2]=B;if(!B){v=h;break}c[(k+(va*80|0)&p)+744>>2]=aa;v=h}else{c[(k+(va*80|0)&p)+792>>2]=0;v=0}while(0);if(V){c[(V&p)+12>>2]=0;Gk(ha,V)}z=ea+32|0;h=c[(z&p)>>2]|0;if(h>>>0>X>>>0)c[((c[(ea&p)+4>>2]|0)+(X*20|0)&p)+4>>2]=h;wh(ea,16,0,c[(da&p)>>2]|0,0)|0;B=c[(ea&p)+24>>2]|0;A=~ba;do if((ba|0)<0){h=c[(B&p)+112>>2]|0;if(!h)break;c[(h+(A<<2)&p)>>2]=c[(z&p)>>2]}while(0);c[(B&p)+88>>2]=(c[(z&p)>>2]|0)+-1;if((d[(Ba&n)>>0]|0)>1)mg(ha,Y);if(v){xa=459;break}Ru(u,l);xa=459}else{xa=c[(I+(K*72|0)&p)+36>>2]|0;wh(ea,20,xa,0,c[(I+(K*72|0)&p)+32>>2]|0)|0;c[(k+(va*80|0)&p)+788>>2]=wh(ea,22,xa,J,0)|0;a[(k+(va*80|0)&n)+781>>0]=16;xa=459}while(0);if((xa|0)==459){xa=0;h=c[(ya&p)>>2]|0;do if((h|0)>0){x=k+(va*80|0)+772|0;y=ea+32|0;C=ea+4|0;D=ea+24|0;w=c[(za&p)>>2]|0;while(1){v=w+20|0;B=b[(v&o)>>1]|0;do if(!(B&6)){da=w+40|0;ca=ia;if(!((c[(ca&p)>>2]&c[(da&p)>>2]|0)==0?(c[(ca&p)+4>>2]&c[(da&p)+4>>2]|0)==0:0)){a[(ma&n)>>0]=1;break}A=c[(w&p)>>2]|0;if((c[(u&p)>>2]|0)!=0?(c[(A&p)+4>>2]&1|0)==0:0)break;do if(!(B&512))gt(ja,A,ga,16);else{z=wh(ea,46,c[(x&p)>>2]|0,0,0)|0;gt(ja,A,ga,16);if(!z)break;B=c[(y&p)>>2]|0;if(B>>>0>z>>>0)c[((c[(C&p)>>2]|0)+(z*20|0)&p)+8>>2]=B;c[((c[(D&p)>>2]|0)&p)+88>>2]=B+-1}while(0);b[(v&o)>>1]=e[(v&o)>>1]|4}while(0);h=h+-1|0;if((h|0)<=0)break;else w=w+48|0}x=c[(ya&p)>>2]|0;if((x|0)<=0){xa=475;break}z=c[(za&p)>>2]|0;while(1){do if(!(b[(z&o)+20>>1]&6)){if((b[(z&o)+18>>1]|0)!=1026)break;if((c[(z&p)+8>>2]|0)!=(q|0))break;if(c[(u&p)>>2]|0)break;B=c[(z&p)>>2]|0;h=Fu(Ia,q,c[(z&p)+12>>2]|0,t,s,3,0)|0;if(!h)break;if(b[(h&o)+20>>1]&4)break;A=mh(ha,48,0)|0;if(!A)break;K=A+0|0;C=(c[(h&p)>>2]|0)+0|0;h=K+48|0;do{c[(K&p)>>2]=c[(C&p)>>2];K=K+4|0;C=C+4|0}while((K|0)<(h|0));c[(A&p)+12>>2]=c[(B&p)+12>>2];gt(ja,A,ga,16);mg(ha,A)}while(0);x=x+-1|0;if((x|0)<=0)break;else z=z+48|0}}else xa=475;while(0);if((xa|0)==475)xa=0;u=c[(u&p)>>2]|0;do if(u){c[(k+(va*80|0)&p)+764>>2]=c[(ea&p)+32>>2];wh(ea,25,1,u,0)|0;at(ja);u=c[(ya&p)>>2]|0;if((u|0)<=0)break;x=0;w=c[(za&p)>>2]|0;while(1){t=w+20|0;do if(!(b[(t&o)>>1]&6)){ea=w+40|0;da=ia;if(!((c[(da&p)>>2]&c[(ea&p)>>2]|0)==0?(c[(da&p)+4>>2]&c[(ea&p)+4>>2]|0)==0:0))break;gt(ja,c[(w&p)>>2]|0,ga,16);b[(t&o)>>1]=e[(t&o)>>1]|4;u=c[(ya&p)>>2]|0}while(0);x=x+1|0;if((x|0)>=(u|0))break;else w=w+48|0}}while(0);s=ia;t=c[(s&p)>>2]|0;s=c[(s&p)+4>>2]|0}c[(Da&p)>>2]=c[(wa+(va*80|0)&p)+24>>2];va=va+1|0;if((va|0)>=(r|0))break a}}}while(0);if(Ja)k=0;else{c[(Fa&p)>>2]=c[(Ga&p)>>2];Xu(La,k);k=0}}else{c[(Na&p)>>2]=64;th(f,33504,Na);k=0}while(0);i=Pa;return k|0}function Ws(a){a=a|0;var b=0,c=0,d=0,e=0;e=a<<16>>16;do if(a<<16>>16>=10){a=(e|0)%10|0;b=((a|0)<0)<<31>>31;if(a>>>0>4){c=jw(a|0,b|0,-2,-1)|0;d=G}else{c=((a|0)!=0)<<31>>31;c=jw(c|0,((c|0)<0)<<31>>31|0,a|0,b|0)|0;d=G}b=((e|0)/10|0)<<16;a=b>>16;if((b|0)<=131072){b=jw(c|0,d|0,8,0)|0;a=mw(b|0,G|0,3-a|0)|0;b=G;break}if((b|0)>3932160){b=2147483647;a=-1}else{b=jw(c|0,d|0,8,0)|0;a=iw(b|0,G|0,a+-3|0)|0;b=G}}else{b=0;a=1}while(0);G=b;return a|0}function Xs(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=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;F=c[(e&p)>>2]|0;G=c[(F&p)+8>>2]|0;I=c[(e&p)+4>>2]|0;J=c[(F&p)>>2]|0;at(F);K=e+41|0;g=a[(K&n)>>0]|0;if(!(g<<24>>24))f=G+24|0;else{f=G+24|0;s=G+32|0;u=G+4|0;r=g&255;do{r=r+-1|0;i=c[(e+(r*80|0)&p)+800>>2]|0;D=c[(e+(r*80|0)&p)+760>>2]|0;g=c[(f&p)>>2]|0;h=~D;if((D|0)<0?(v=c[(g&p)+112>>2]|0,(v|0)!=0):0)c[(v+(h<<2)&p)>>2]=c[(s&p)>>2];c[(g&p)+88>>2]=(c[(s&p)>>2]|0)+-1;E=e+(r*80|0)+781|0;h=a[(E&n)>>0]|0;if(h<<24>>24!=-100?(wh(G,h&255,c[(e+(r*80|0)&p)+784>>2]|0,c[(e+(r*80|0)&p)+788>>2]|0,d[(e+(r*80|0)&n)+782>>0]|0)|0,x=c[(u&p)>>2]|0,(x|0)!=0):0)a[(x+(((c[(s&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=a[(e+(r*80|0)&n)+783>>0]|0;w=i+36|0;if((c[(w&p)>>2]&2048|0)!=0?(y=e+(r*80|0)+792|0,z=c[(y&p)>>2]|0,(z|0)>0):0){D=c[(e+(r*80|0)&p)+752>>2]|0;k=c[(f&p)>>2]|0;h=~D;if((D|0)<0?(A=c[(k&p)+112>>2]|0,(A|0)!=0):0){c[(A+(h<<2)&p)>>2]=c[(s&p)>>2];l=c[(y&p)>>2]|0;j=c[(s&p)>>2]|0;c[(k&p)+88>>2]=j+-1;g=e+(r*80|0)+796|0;if((l|0)>0)L=16}else{j=c[(s&p)>>2]|0;c[(k&p)+88>>2]=j+-1;g=e+(r*80|0)+796|0;l=z;L=16}if((L|0)==16){L=0;h=k;q=l;m=(c[(g&p)>>2]|0)+((l+-1|0)*12|0)|0;while(1){l=m+4|0;k=c[(l&p)>>2]|0;i=k+1|0;if(j>>>0>i>>>0)c[((c[(u&p)>>2]|0)+(i*20|0)&p)+8>>2]=j;c[(h&p)+88>>2]=j+-1;wh(G,d[(m&n)+8>>0]|0,c[(m&p)>>2]|0,k,0)|0;l=(c[(l&p)>>2]|0)+-1|0;j=c[(s&p)>>2]|0;if(j>>>0>l>>>0)c[((c[(u&p)>>2]|0)+(l*20|0)&p)+8>>2]=j;h=c[(f&p)>>2]|0;c[(h&p)+88>>2]=j+-1;q=q+-1|0;if((q|0)<=0)break;else m=m+-12|0}}mg(J,c[(g&p)>>2]|0)}D=c[(e+(r*80|0)&p)+748>>2]|0;i=c[(f&p)>>2]|0;h=~D;if((D|0)<0?(t=c[(i&p)+112>>2]|0,(t|0)!=0):0)c[(t+(h<<2)&p)>>2]=c[(s&p)>>2];h=c[(s&p)>>2]|0;c[(i&p)+88>>2]=h+-1;i=e+(r*80|0)+756|0;g=c[(i&p)>>2]|0;if(g){wh(G,16,0,g,0)|0;i=c[(i&p)>>2]|0;h=c[(s&p)>>2]|0;if(h>>>0>i>>>0)c[((c[(u&p)>>2]|0)+(i*20|0)&p)+8>>2]=h;j=h+-1|0;g=(c[(f&p)>>2]|0)+88|0;c[(g&p)>>2]=j;i=i+-2|0;if(h>>>0>i>>>0)c[((c[(u&p)>>2]|0)+(i*20|0)&p)+8>>2]=h;c[(g&p)>>2]=j}i=c[(e+(r*80|0)&p)+776>>2]|0;if(i){if(!(a[((c[(G&p)>>2]|0)&n)+65>>0]|0))h=(c[(u&p)>>2]|0)+((((i|0)<1?h:i)+-1|0)*20|0)|0;else h=29120;wh(G,(c[(h&p)+4>>2]|0)==0?141:140,c[(e+(r*80|0)&p)+772>>2]|0,i,0)|0}g=c[(e+(r*80|0)&p)+736>>2]|0;if(g){j=wh(G,137,g,0,0)|0;g=c[(w&p)>>2]|0;if(!(g&64)){wh(G,104,c[(I+(r*72|0)&p)+48>>2]|0,0,0)|0;g=c[(w&p)>>2]|0}if(g&512)wh(G,104,c[(e+(r*80|0)&p)+744>>2]|0,0,0)|0;g=c[(e+(r*80|0)&p)+764>>2]|0;if((a[(E&n)>>0]|0)==18)wh(G,17,c[(e+(r*80|0)&p)+784>>2]|0,g,0)|0;else wh(G,16,0,g,0)|0;g=c[(s&p)>>2]|0;if(g>>>0>j>>>0)c[((c[(u&p)>>2]|0)+(j*20|0)&p)+8>>2]=g;c[((c[(f&p)>>2]|0)&p)+88>>2]=g+-1}}while((r|0)>0)}D=c[(e&p)+52>>2]|0;g=c[(f&p)>>2]|0;f=~D;if((D|0)<0?(B=c[(g&p)+112>>2]|0,(B|0)!=0):0)c[(B+(f<<2)&p)>>2]=c[(G&p)+32>>2];E=G+32|0;c[(g&p)+88>>2]=(c[(E&p)>>2]|0)+-1;if(a[(K&n)>>0]|0){x=e+34|0;y=e+38|0;z=e+64|0;A=J+65|0;B=G+4|0;C=0;D=e+736|0;while(1){i=d[(D&n)+44>>0]|0;j=c[(I+(i*72|0)&p)+24>>2]|0;h=c[(D&p)+64>>2]|0;if((a[(I+(i*72|0)&n)+45>>0]&4)!=0?(a[(A&n)>>0]|0)==0:0){k=c[(E&p)>>2]|0;h=c[(D&p)+32>>2]|0;if(!(a[((c[(G&p)>>2]|0)&n)+65>>0]|0))g=(c[(B&p)>>2]|0)+(((h|0)<0?k+-1|0:h)*20|0)|0;else g=29120;if((h|0)<(k|0)){l=c[(D&p)+4>>2]|0;j=I+(i*72|0)+40|0;i=g;while(1){g=i+4|0;do if((c[(g&p)>>2]|0)==(l|0)){f=a[(i&n)>>0]|0;if(f<<24>>24==103){a[(i&n)>>0]=28;c[(g&p)>>2]=0;c[(i&p)+12>>2]=0;break}else if(f<<24>>24==47){a[(i&n)>>0]=33;v=i+8|0;c[(g&p)>>2]=(c[(j&p)>>2]|0)+(c[(v&p)>>2]|0);w=i+12|0;c[(v&p)>>2]=c[(w&p)>>2];c[(w&p)>>2]=0;break}else break}while(0);h=h+1|0;if((h|0)==(k|0))break;else i=i+20|0}}}else L=64;do if((L|0)==64){L=0;w=j+44|0;if(((a[(w&n)>>0]&2)==0?(c[(j&p)+12>>2]|0)==0:0)?(b[(x&o)>>1]&16)==0:0){g=c[(h&p)+36>>2]|0;if((a[(y&n)>>0]|0)==0&(g&64|0)==0)wh(G,61,c[(I+(i*72|0)&p)+48>>2]|0,0,0)|0;if((g&17152|0)==512?(H=c[(D&p)+8>>2]|0,(H|0)!=(c[(z&p)>>2]|0)):0)wh(G,61,H,0,0)|0}g=c[(h&p)+36>>2]|0;if(!(g&576)){if(!(g&8192))break;g=D+56|0}else g=h+28|0;h=c[(g&p)>>2]|0;if((h|0)!=0?(a[(A&n)>>0]|0)==0:0){u=c[(E&p)>>2]|0;l=c[(D&p)+32>>2]|0;if(!(a[((c[(G&p)>>2]|0)&n)+65>>0]|0))k=(c[(B&p)>>2]|0)+(((l|0)<0?u+-1|0:l)*20|0)|0;else k=29120;if((l|0)<(u|0)){v=h+48|0;s=h+4|0;t=D+8|0;r=j+8|0;f=c[(D&p)+4>>2]|0;g=k;while(1){h=g+4|0;a:do if((c[(h&p)>>2]|0)==(f|0)){k=a[(g&n)>>0]|0;if(k<<24>>24==103){c[(h&p)>>2]=c[(t&p)>>2];a[(g&n)>>0]=112;break}else if(k<<24>>24!=47)break;i=g+8|0;k=c[(i&p)>>2]|0;if(a[(w&n)>>0]&32){j=r;while(1){j=c[(j&p)>>2]|0;if((a[(j&n)+51>>0]&3)==2)break;else j=j+20|0}k=b[((c[(j&p)+4>>2]|0)+(k<<1)&o)>>1]|0}q=k&65535;k=b[(v&o)>>1]|0;if(k<<16>>16){j=c[(s&p)>>2]|0;m=k&65535;k=0;while(1){if((b[(j+(k<<1)&o)>>1]|0)==q<<16>>16)break;k=k+1|0;if((k|0)>=(m|0))break a}if((k&65535)<<16>>16>-1){c[(i&p)>>2]=k<<16>>16;c[(h&p)>>2]=c[(t&p)>>2]}}}while(0);l=l+1|0;if((l|0)==(u|0))break;else g=g+20|0}}}}while(0);C=C+1|0;if((C|0)>=(d[(K&n)>>0]|0))break;else D=D+80|0}}c[(F&p)+424>>2]=c[(e&p)+56>>2];Xu(J,e);return}function Ys(a,b){a=a|0;b=b|0;var d=0,e=0;if((b|0)!=0?(c[(b&p)>>2]|0)>0:0){d=0;e=c[(b&p)+4>>2]|0;while(1){Yu(a,c[(e&p)>>2]|0);d=d+1|0;if((d|0)>=(c[(b&p)>>2]|0))break;else e=e+20|0}}return}function Zs(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;if((i|0)>=(j|0))fa();u=x;h=c[(e&p)+24>>2]|0;v=c[(h&p)>>2]|0;m=c[(h&p)+4>>2]|0;w=c[(h&p)+12>>2]|0;g=d[(f&n)>>0]|0;a:do if((g|0)==154|(g|0)==156)if((m|0)!=0?(l=c[(m&p)>>2]|0,(l|0)>0):0){s=f+28|0;r=c[(s&p)>>2]|0;g=0;h=m+8|0;while(1){if((r|0)==(c[(h&p)+40>>2]|0))break;g=g+1|0;if((g|0)>=(l|0)){e=1;break a}else h=h+72|0}q=w+28|0;k=w+32|0;h=c[(k&p)>>2]|0;b:do if((h|0)>0){m=f+32|0;e=0;l=c[(q&p)>>2]|0;while(1){if((c[(l&p)+4>>2]|0)==(r|0)?(c[(l&p)+8>>2]|0)==(b[(m&o)>>1]|0):0)break b;e=e+1|0;if((e|0)<(h|0))l=l+24|0;else break}}else e=0;while(0);c:do if((e|0)>=(h|0)){h=Ht(c[(v&p)>>2]|0,c[(q&p)>>2]|0,24,k,u)|0;c[(q&p)>>2]=h;e=c[(u&p)>>2]|0;if((e|0)>-1){c[(h+(e*24|0)&p)>>2]=c[(f&p)+44>>2];k=c[(s&p)>>2]|0;c[(h+(e*24|0)&p)+4>>2]=k;l=b[(f&o)+32>>1]|0;c[(h+(e*24|0)&p)+8>>2]=l<<16>>16;s=v+72|0;m=(c[(s&p)>>2]|0)+1|0;c[(s&p)>>2]=m;c[(h+(e*24|0)&p)+16>>2]=m;m=h+(e*24|0)+12|0;c[(m&p)>>2]=-1;c[(h+(e*24|0)&p)+20>>2]=f;h=c[(w&p)+24>>2]|0;d:do if((h|0)!=0?(t=c[(h&p)>>2]|0,(t|0)>0):0){g=0;h=c[(h&p)+4>>2]|0;while(1){s=c[(h&p)>>2]|0;if(((a[(s&n)>>0]|0)==-102?(c[(s&p)+28>>2]|0)==(k|0):0)?(b[(s&o)+32>>1]|0)==l<<16>>16:0)break;g=g+1|0;if((g|0)>=(t|0))break d;else h=h+20|0}c[(m&p)>>2]=g;if((g|0)>=0)break c}while(0);s=w+12|0;t=c[(s&p)>>2]|0;c[(s&p)>>2]=t+1;c[(m&p)>>2]=t}}while(0);c[(f&p)+40>>2]=w;a[(f&n)>>0]=-100;b[(f&o)+34>>1]=e;e=1}else e=1;else if(((g|0)==155?(b[(h&o)+28>>1]&8)==0:0)?(c[(e&p)+16>>2]|0)==(d[(f&n)+38>>0]|0):0){l=w+40|0;m=w+44|0;g=c[(m&p)>>2]|0;e:do if((g|0)>0){e=0;h=c[(l&p)>>2]|0;while(1){if(!(Cu(c[(h&p)>>2]|0,f,-1)|0))break e;e=e+1|0;if((e|0)<(g|0))h=h+16|0;else break}}else e=0;while(0);do if((e|0)>=(g|0)){k=c[(v&p)>>2]|0;q=a[(k&n)+62>>0]|0;k=Ht(k,c[(l&p)>>2]|0,16,m,u)|0;c[(l&p)>>2]=k;e=c[(u&p)>>2]|0;if((e|0)>-1){c[(k+(e<<4)&p)>>2]=f;l=v+72|0;m=(c[(l&p)>>2]|0)+1|0;c[(l&p)>>2]=m;c[(k+(e<<4)&p)+8>>2]=m;m=c[(v&p)>>2]|0;l=c[(f&p)+8>>2]|0;if(!l)g=0;else{h=l;while(1)if(!(a[(h&n)>>0]|0))break;else h=h+1|0;g=h-l&1073741823}h=c[(f&p)+20>>2]|0;if(!h)h=0;else h=c[(h&p)>>2]|0;c[(k+(e<<4)&p)+4>>2]=Sh(m,l,g,h,q,0)|0;if(!(c[(f&p)+4>>2]&16)){c[(k+(e<<4)&p)+12>>2]=-1;break}else{s=v+68|0;t=c[(s&p)>>2]|0;c[(s&p)>>2]=t+1;c[(k+(e<<4)&p)+12>>2]=t;break}}}while(0);b[(f&o)+34>>1]=e;c[(f&p)+40>>2]=w;e=1}else e=0;while(0);i=x;return e|0}function _s(a,b){a=a|0;b=b|0;return 0}function $s(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();e=f;if((a[(b&n)+450>>0]|0)==2){g=c[(b&p)+8>>2]|0;h=c[(b&p)>>2]|0;c[(e&p)>>2]=d;e=uh(h,35e3,e)|0;xh(g,wh(g,157,c[(b&p)+464>>2]|0,0,0)|0,e,-1)}i=f;return}function at(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=b+19|0;i=0;j=b+116|0;while(1){e=j+12|0;f=c[(e&p)>>2]|0;if(f){g=j+6|0;if(a[(g&n)>>0]|0){h=a[(d&n)>>0]|0;if((h&255)<8){a[(d&n)>>0]=h+1<<24>>24;c[(b+((h&255)<<2)&p)+24>>2]=f}a[(g&n)>>0]=0}c[(e&p)>>2]=0}i=i+1|0;if((i|0)==10)break;else j=j+20|0}return}function bt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=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;B=i;i=i+32|0;if((i|0)>=(j|0))fa();z=B;g=f&255;s=34-(g&1)|0;v=c[(d&p)>>2]|0;if(!(a[(b&n)+23>>0]|0))f=g&253;if((v|0)>0){h=(f&2)==0;k=b+8|0;l=(s|0)==33;m=z+20|0;o=z+4|0;q=z+24|0;r=0;d=c[(d&p)+4>>2]|0;while(1){g=c[(d&p)>>2]|0;if(!h?(c[(z&p)>>2]=0,c[(z&p)+4>>2]=0,c[(z&p)+8>>2]=0,c[(z&p)+12>>2]=0,c[(z&p)+16>>2]=0,c[(z&p)+20>>2]=0,a[(m&n)>>0]=1,c[(z&p)>>2]=78,c[(o&p)>>2]=79,c[(q&p)>>2]=0,rs(z,g)|0,(a[(m&n)>>0]|0)!=0):0)Gt(b,g,r+e|0,0);else A=8;do if((A|0)==8?(A=0,t=r+e|0,u=is(b,g,t)|0,(u|0)!=(t|0)):0){f=c[(k&p)>>2]|0;if(l){if(!(a[((c[(f&p)>>2]|0)&n)+65>>0]|0))g=(c[(f&p)+4>>2]|0)+(((c[(f&p)+32>>2]|0)+-1|0)*20|0)|0;else g=29120;if(((a[(g&n)>>0]|0)==33?(w=g+12|0,x=c[(w&p)>>2]|0,((c[(g&p)+4>>2]|0)+1+x|0)==(u|0)):0)?(y=x+1|0,(y+(c[(g&p)+8>>2]|0)|0)==(t|0)):0){c[(w&p)>>2]=y;break}}wh(f,s,u,t,0)|0}while(0);r=r+1|0;if((r|0)==(v|0))break;else d=d+20|0}}i=B;return}function ct(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,q=0;q=c[(d&p)+8>>2]|0;j=d+116|0;m=0;k=j;while(1){l=c[(k&p)+12>>2]|0;if(((l|0)>0?(c[(k&p)>>2]|0)==(g|0):0)?(b[(k&o)+4>>1]|0)==(f|0):0){h=l;m=5;break}m=m+1|0;if((m|0)>=10){m=10;break}else k=k+20|0}do if((m|0)==5){q=d+104|0;i=c[(q&p)>>2]|0;c[(q&p)>>2]=i+1;c[(k&p)+16>>2]=i;k=0;while(1){if((c[(j&p)+12>>2]|0)==(h|0))a[(j&n)+6>>0]=0;k=k+1|0;if((k|0)==10)break;else j=j+20|0}}else if((m|0)==10){nt(q,e,g,f,h);if(!(i<<24>>24)){Su(d,g,f,h);break}j=c[(q&p)+4>>2]|0;if(j)a[(j+(((c[(q&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=i}while(0);return h|0}function dt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=d+-1+e|0;g=b+19|0;k=0;l=b+116|0;while(1){h=l+12|0;i=c[(h&p)>>2]|0;if(!((i|0)<(d|0)|(i|0)>(e|0))){j=l+6|0;if(a[(j&n)>>0]|0){f=a[(g&n)>>0]|0;if((f&255)<8){a[(g&n)>>0]=f+1<<24>>24;c[(b+((f&255)<<2)&p)+24>>2]=i}a[(j&n)>>0]=0}c[(h&p)>>2]=0}k=k+1|0;if((k|0)==10)break;else l=l+20|0}return}function et(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=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;D=c[(d&p)+8>>2]|0;a[(e&n)>>0]=1;v=e+44|0;if((c[(v&p)>>2]|0)>0){w=D+4|0;y=d+56|0;z=d+60|0;r=D+24|0;s=D+32|0;t=e+36|0;u=d+72|0;A=0;B=c[(e&p)+40>>2]|0;f=0;while(1){k=c[((c[(B&p)>>2]|0)&p)+20>>2]|0;if(!k){g=0;i=0}else{g=c[(k&p)>>2]|0;i=c[(z&p)>>2]|0;h=c[(y&p)>>2]|0;if((h|0)<(g|0)){i=c[(u&p)>>2]|0;c[(u&p)>>2]=i+g;i=i+1|0}else{c[(z&p)>>2]=i+g;c[(y&p)>>2]=h-g}bt(d,k,i,1)}h=B+12|0;if((c[(h&p)>>2]|0)>-1){q=xs(D)|0;zu(d,c[(h&p)>>2]|0,q,1,i)}else q=0;m=B+4|0;h=c[(m&p)>>2]|0;if(b[(h&o)+2>>1]&32){if((g|0)>0){l=0;k=c[(k&p)+4>>2]|0;while(1){h=cu(d,c[(k&p)>>2]|0)|0;l=l+1|0;j=(h|0)!=0;if(!((l|0)<(g|0)&(j^1)))break;else k=k+20|0}if(!j)C=15}else C=15;if((C|0)==15){C=0;h=c[((c[(d&p)>>2]|0)&p)+8>>2]|0}if(!f)if(!(c[(t&p)>>2]|0))f=0;else{f=(c[(u&p)>>2]|0)+1|0;c[(u&p)>>2]=f}xh(D,wh(D,36,f,0,0)|0,h,-4);h=c[(m&p)>>2]|0}xh(D,wh(D,10,0,i,c[(B&p)+8>>2]|0)|0,h,-5);h=c[(w&p)>>2]|0;if(h)a[(h+(((c[(s&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=g;dt(d,i,g);dt(d,i,g);if((c[(y&p)>>2]|0)<(g|0)){c[(y&p)>>2]=g;c[(z&p)>>2]=i}if(q){i=c[(r&p)>>2]|0;h=~q;if((q|0)<0?(x=c[(i&p)+112>>2]|0,(x|0)!=0):0)c[(x+(h<<2)&p)>>2]=c[(s&p)>>2];c[(i&p)+88>>2]=(c[(s&p)>>2]|0)+-1;at(d)}A=A+1|0;if((A|0)>=(c[(v&p)>>2]|0))break;else B=B+16|0}if(f)i=wh(D,45,f,0,0)|0;else i=0}else i=0;at(d);f=e+36|0;if((c[(f&p)>>2]|0)>0){g=0;h=c[(e&p)+28>>2]|0;while(1){Rq(d,c[(h&p)+20>>2]|0,c[(h&p)+16>>2]|0);g=g+1|0;if((g|0)>=(c[(f&p)>>2]|0))break;else h=h+24|0}}a[(e&n)>>0]=0;at(d);if(i){f=c[(D&p)+32>>2]|0;if(f>>>0>i>>>0)c[((c[(D&p)+4>>2]|0)+(i*20|0)&p)+8>>2]=f;c[((c[(D&p)+24>>2]|0)&p)+88>>2]=f+-1}return}function ft(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=c[(a&p)+8>>2]|0;e=b+44|0;if((c[(e&p)>>2]|0)>0){f=0;b=c[(b&p)+40>>2]|0;while(1){a=c[((c[(b&p)>>2]|0)&p)+20>>2]|0;if(!a)a=0;else a=c[(a&p)>>2]|0;g=c[(b&p)+4>>2]|0;xh(d,wh(d,142,c[(b&p)+8>>2]|0,a,0)|0,g,-5);f=f+1|0;if((f|0)>=(c[(e&p)>>2]|0))break;else b=b+16|0}}return}function gt(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();o=r+4|0;q=r;m=c[(b&p)+8>>2]|0;c[(o&p)>>2]=0;c[(q&p)>>2]=0;if(!((m|0)==0|(e|0)==0)){s=d[(e&n)>>0]|0;h=s^1;a:do switch(s|0){case 75:{if(g){fu(b,e,f,f);break a}k=xs(m)|0;fu(b,e,f,k);h=c[(m&p)+24>>2]|0;f=~k;if((k|0)<0?(l=c[(h&p)+112>>2]|0,(l|0)!=0):0)c[(l+(f<<2)&p)>>2]=c[(m&p)+32>>2];c[(h&p)+88>>2]=(c[(m&p)+32>>2]|0)+-1;break}case 71:{l=xs(m)|0;Zu(b,c[(e&p)+12>>2]|0,l,g^16);h=b+100|0;c[(h&p)>>2]=(c[(h&p)>>2]|0)+1;gt(b,c[(e&p)+16>>2]|0,f,g);f=c[(m&p)+24>>2]|0;h=~l;if((l|0)<0?(k=c[(f&p)+112>>2]|0,(k|0)!=0):0)c[(k+(h<<2)&p)>>2]=c[(m&p)+32>>2];c[(f&p)+88>>2]=(c[(m&p)+32>>2]|0)+-1;bu(b);break}case 72:{gt(b,c[(e&p)+12>>2]|0,f,g);m=b+100|0;c[(m&p)>>2]=(c[(m&p)>>2]|0)+1;gt(b,c[(e&p)+16>>2]|0,f,g);bu(b);break}case 79:case 78:case 83:case 80:case 81:case 82:{s=e+12|0;l=$t(b,c[(s&p)>>2]|0,o)|0;k=e+16|0;m=$t(b,c[(k&p)>>2]|0,q)|0;au(b,c[(s&p)>>2]|0,c[(k&p)>>2]|0,h,l,m,f,g);break}case 148:case 73:{g=e+12|0;l=$t(b,c[(g&p)>>2]|0,o)|0;k=e+16|0;m=$t(b,c[(k&p)>>2]|0,q)|0;au(b,c[(g&p)>>2]|0,c[(k&p)>>2]|0,(a[(e&n)>>0]|0)==73?78:79,l,m,f,128);break}case 19:{Zu(b,c[(e&p)+12>>2]|0,f,g);break}case 77:case 76:{wh(m,h,$t(b,c[(e&p)+12>>2]|0,o)|0,f,0)|0;break}case 74:{_u(b,e,f,0,g);break}default:{if(mu(e)|0){wh(m,16,0,f,0)|0;break a}if(!($u(e)|0))wh(m,46,$t(b,e,o)|0,f,(g|0)!=0&1)|0}}while(0);_r(b,c[(o&p)>>2]|0);_r(b,c[(q&p)>>2]|0)}i=r;return}function ht(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();k=l;f=c[(a&p)+8>>2]|0;g=b+44|0;if((c[(g&p)>>2]|0)!=(0-(c[(b&p)+32>>2]|0)|0)?(wh(f,28,0,c[(b&p)+16>>2]|0,c[(b&p)+20>>2]|0)|0,(c[(g&p)>>2]|0)>0):0){h=0;e=c[(b&p)+40>>2]|0;while(1){b=e+12|0;do if((c[(b&p)>>2]|0)>-1){d=c[((c[(e&p)>>2]|0)&p)+20>>2]|0;if((d|0)!=0?(c[(d&p)>>2]|0)==1:0){d=Us(a,d,0,0)|0;xh(f,wh(f,57,c[(b&p)>>2]|0,0,0)|0,d,-6);break}th(a,34944,k);c[(b&p)>>2]=-1}while(0);h=h+1|0;if((h|0)>=(c[(g&p)>>2]|0))break;else e=e+16|0}}i=l;return}function it(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)>0){e=wh(a,138,b,0,-1)|0;wh(a,16,0,d,0)|0;b=c[(a&p)+32>>2]|0;if(b>>>0>e>>>0)c[((c[(a&p)+4>>2]|0)+(e*20|0)&p)+8>>2]=b;c[((c[(a&p)+24>>2]|0)&p)+88>>2]=b+-1}return}function jt(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0;if((c[((c[(a&p)>>2]|0)&p)+24>>2]&8388608|0)!=0?(h=As(a,b)|0,(h|0)!=0):0){a=0;b=h;do{if((d[(b&n)+8>>0]|0|0)==(e|0)?(av(c[(b&p)+16>>2]|0,f)|0)!=0:0)a=d[(b&n)+9>>0]|0|a;b=c[(b&p)+32>>2]|0}while((b|0)!=0)}else{a=0;h=0}if(g)c[(g&p)>>2]=a;return ((a|0)!=0?h:0)|0}function kt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();k=l;h=a[(d&n)+44>>0]|0;if(h&16){g=c[(b&p)>>2]|0;f=d+60|0;while(1){f=c[(f&p)>>2]|0;if((c[(f&p)>>2]|0)==(g|0))break;else f=f+24|0}if(!(c[((c[(c[(f&p)+4>>2]&p)>>2]|0)&p)+52>>2]|0))g=8;else g=5}else g=5;do if((g|0)==5){if(((h&1)!=0?(c[((c[(b&p)>>2]|0)&p)+24>>2]&2048|0)==0:0)?(a[(b&n)+18>>0]|0)==0:0){g=8;break}if((e|0)==0?(c[(d&p)+12>>2]|0)!=0:0){c[(k&p)>>2]=c[(d&p)>>2];th(b,34456,k);f=1}else f=0}while(0);if((g|0)==8){c[(k&p)>>2]=c[(d&p)>>2];th(b,34424,k);f=1}i=l;return f|0}function lt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0;r=i;i=i+32|0;if((i|0)>=(j|0))fa();q=r;o=c[(b&p)>>2]|0;h=c[(d&p)+68>>2]|0;a:do if(h){g=c[(o&p)+20>>2]|0;if((g|0)>0){l=c[(o&p)+16>>2]|0;m=0;while(1){k=m+1|0;if((c[(l+(m<<4)&p)+12>>2]|0)==(h|0)){k=m;break a}if((k|0)<(g|0))m=k;else break}}else k=0}else k=-1e6;while(0);g=Mr(o,e,0,0)|0;h=pr(o,0,0,0)|0;if(h){c[(h&p)+16>>2]=kh(o,c[(d&p)>>2]|0)|0;c[(h&p)+12>>2]=kh(o,c[((c[(o&p)+16>>2]|0)+(k<<4)&p)>>2]|0)|0}e=kr(b,0,h,g,0,0,0,0,0,0)|0;a[(q&n)>>0]=12;c[(q&p)+4>>2]=f;a[(q&n)+1>>0]=0;c[(q&p)+8>>2]=0;c[(q&p)+12>>2]=0;ir(b,e,q)|0;Mk(o,e,1);i=r;return}function mt(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();q=r+4|0;h=r;a:do if(c[((c[(a&p)>>2]|0)&p)+24>>2]&524288){if(!e){f=bn((c[(d&p)+68>>2]|0)+56|0,c[(d&p)>>2]|0,h)|0;if((f|0)!=0?(c[(f&p)+8>>2]|0)!=0:0)g=1;else g=(c[(d&p)+16>>2]|0)!=0;g=g&1;break}a=c[(d&p)+16>>2]|0;if(a){m=d+36|0;n=(f|0)!=0;do{h=c[(a&p)+20>>2]|0;if((h|0)>0){l=0;do{k=c[(a+(l<<3)&p)+36>>2]|0;if((c[(e+(k<<2)&p)>>2]|0)>-1){g=1;break a}l=l+1|0;if((k|0)==(b[(m&o)>>1]|0)&n){g=1;break a}}while((l|0)<(h|0))}a=c[(a&p)+4>>2]|0}while((a|0)!=0)}h=bn((c[(d&p)+68>>2]|0)+56|0,c[(d&p)>>2]|0,q)|0;if((h|0)!=0?(g=c[(h&p)+8>>2]|0,(g|0)!=0):0)while(1){if(bv(d,g,e,f)|0){g=1;break a}g=c[(g&p)+12>>2]|0;if(!g){g=0;break}}else g=0}else g=0;while(0);i=r;return g|0}function nt(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,q=0;if((h|0)>=0?(b[(f&o)+36>>1]|0)!=(h|0):0){j=d[(f&n)+44>>0]|0;q=(j&16|0)!=0?150:47;if(!(j&32))j=h;else{j=c[(f&p)+8>>2]|0;a:do if(!j)j=0;else while(1){if((a[(j&n)+51>>0]&3)==2)break a;j=c[(j&p)+20>>2]|0;if(!j){j=0;break}}while(0);m=h&65535;k=b[(j&o)+48>>1]|0;b:do if(!(k<<16>>16))j=-1;else{l=c[(j&p)+4>>2]|0;k=k&65535;j=0;while(1){if((b[(l+(j<<1)&o)>>1]|0)==m<<16>>16)break b;j=j+1|0;if((j|0)>=(k|0)){j=-1;break}}}while(0);j=j<<16>>16}wh(e,q,g,j,i)|0}else wh(e,103,g,i,0)|0;if((h|0)>-1)Nt(e,f,h,i);return}function ot(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=f+16|0;g=c[(j&p)>>2]|0;do if(!g){h=c[(f&p)+12>>2]|0;g=c[(d&p)>>2]|0;i=f+48|0;d=qg((e[(i&o)>>1]|0)+1|0,0)|0;c[(j&p)>>2]=d;if(!d){a[(g&n)+65>>0]=1;g=0;break}if(!(b[(i&o)>>1]|0))g=0;else{f=f+4|0;h=h+4|0;g=0;do{d=b[((c[(f&p)>>2]|0)+(g<<1)&o)>>1]|0;if(d<<16>>16<0)d=68;else d=a[((c[(h&p)>>2]|0)+((d<<16>>16)*24|0)&n)+21>>0]|0;a[((c[(j&p)>>2]|0)+g&n)>>0]=d;g=g+1|0}while((g|0)<(e[(i&o)>>1]|0));d=c[(j&p)>>2]|0}a[(d+g&n)>>0]=0;g=c[(j&p)>>2]|0}while(0);return g|0}function pt(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0;t=d+44|0;if(!(a[(t&n)>>0]&16)){k=c[(b&p)>>2]|0;m=c[(d&p)+68>>2]|0;a:do if(m){o=c[(k&p)+20>>2]|0;if((o|0)>0){k=c[(k&p)+16>>2]|0;l=0;while(1){j=l+1|0;if((c[(k+(l<<4)&p)+12>>2]|0)==(m|0))break a;if((j|0)<(o|0))l=j;else{l=j;break}}}else l=0}else l=-1e6;while(0);s=Oq(b)|0;if((f|0)<0)f=c[(b&p)+68>>2]|0;k=f+1|0;r=(h|0)!=0;if(r)c[(h&p)>>2]=f;do if(!(a[(t&n)>>0]&32)){if((g|0)!=0?(a[(g&n)>>0]|0)==0:0){q=15;break}Qq(b,f,l,d,e)}else q=15;while(0);if((q|0)==15)gs(b,l,c[(d&p)+32>>2]|0,(e|0)==55&1,c[(d&p)>>2]|0);if(i)c[(i&p)>>2]=k;f=c[(d&p)+8>>2]|0;if(!f)j=0;else{m=(g|0)==0;d=b+8|0;o=k;j=0;while(1){k=o+1|0;if((a[(f&n)+51>>0]&3)==2?(a[(t&n)>>0]&32)!=0&r:0)c[(h&p)>>2]=o;j=j+1|0;if(!(!m?(a[(g+j&n)>>0]|0)==0:0)){wh(s,e,o,c[(f&p)+40>>2]|0,l)|0;q=c[(d&p)>>2]|0;xh(q,-1,hs(b,f)|0,-6)}f=c[(f&p)+20>>2]|0;if(!f)break;else o=k}}f=b+68|0;if((k|0)>(c[(f&p)>>2]|0))c[(f&p)>>2]=k}else j=0;return j|0}function qt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[(b&p)+408>>2]|0;h=(h|0)==0?b:h;g=h+452|0;b=c[(g&p)>>2]|0;e=c[(h&p)+520>>2]|0;a:do if((b|0)>0){f=0;while(1){if((c[(e+(f<<2)&p)>>2]|0)==(d|0))break a;f=f+1|0;if((f|0)>=(b|0)){i=4;break}}}else i=4;while(0);do if((i|0)==4){b=Xc(e,(b<<2)+4|0)|0;if(!b){a[((c[(h&p)>>2]|0)&n)+65>>0]=1;break}else{c[(h&p)+520>>2]=b;e=c[(g&p)>>2]|0;c[(g&p)>>2]=e+1;c[(b+(e<<2)&p)>>2]=d;break}}while(0);return}function rt(d,e,f,g,h,i,j,k,l,m){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;z=c[(d&p)+8>>2]|0;A=xs(z)|0;x=(a[(e&n)+44>>0]&32)>>>4^70;if(!(m<<24>>24))xh(z,wh(z,x,g,A,i)|0,j<<16>>16,-14);if((mt(d,e,0,0)|0)!=0|(f|0)!=0){t=l&255;u=vt(d,f,0,0,3,e,t)|0;u=ut(d,e)|0|u;r=d+72|0;q=c[(r&p)>>2]|0;m=q+1|0;v=e+38|0;c[(r&p)>>2]=m+(b[(v&o)>>1]|0);wh(z,33,i,m,0)|0;r=b[(v&o)>>1]|0;if(r<<16>>16>0){w=(u|0)==-1;s=q+2|0;q=0;do{if(!w){if((q|0)<32?(1<>1]|0}q=q+1|0}while((q|0)<(r<<16>>16|0))}w=z+32|0;v=c[(w&p)>>2]|0;xt(d,f,109,0,1,e,m,t,A);if((v|0)<(c[(w&p)>>2]|0))xh(z,wh(z,x,g,A,i)|0,j<<16>>16,-14);zt(d,e,m,0,0,0)}else m=0;if((c[(e&p)+12>>2]|0)==0?(At(d,e,g,h,0),wh(z,95,g,k<<24>>24!=0&1,0)|0,k<<24>>24!=0):0)xh(z,-1,c[(e&p)>>2]|0,0);Ct(d,e,0,m,0,0);xt(d,f,109,0,2,e,m,l&255,A);q=c[(z&p)+24>>2]|0;m=~A;if((A|0)<0?(B=c[(q&p)+112>>2]|0,(B|0)!=0):0)c[(B+(m<<2)&p)>>2]=c[(z&p)+32>>2];c[(q&p)+88>>2]=(c[(z&p)+32>>2]|0)+-1;return}function st(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,q=0,r=0;j=c[(b&p)+8>>2]|0;d=c[(b&p)+404>>2]|0;if(d){l=(c[(b&p)>>2]|0)+16|0;m=b+19|0;o=b+72|0;q=j+32|0;r=j+4|0;k=j+24|0;do{f=c[(d&p)+8>>2]|0;g=c[(l&p)>>2]|0;i=c[(d&p)+12>>2]|0;e=a[(m&n)>>0]|0;if(!(e<<24>>24)){h=(c[(o&p)>>2]|0)+1|0;c[(o&p)>>2]=h}else{h=e+-1<<24>>24;a[(m&n)>>0]=h;h=c[(b+((h&255)<<2)&p)+24>>2]|0}Qq(b,0,f,c[((c[(g+(f<<4)&p)+12>>2]|0)&p)+72>>2]|0,55);g=i+1|0;f=wh(j,77,g,0,0)|0;wh(j,74,0,g,0)|0;e=c[(q&p)>>2]|0;if(e>>>0>f>>>0)c[((c[(r&p)>>2]|0)+(f*20|0)&p)+8>>2]=e;c[((c[(k&p)>>2]|0)&p)+88>>2]=e+-1;wh(j,49,i+-1|0,2,h)|0;wh(j,75,0,h,g)|0;e=c[(r&p)>>2]|0;if(e)a[(e+(((c[(q&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=8;wh(j,61,0,0,0)|0;_r(b,h);d=c[(d&p)>>2]|0}while((d|0)!=0)}return}function tt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;c[(g&p)>>2]=e;if(!e)f=0;else{f=e;while(1)if(!(a[(f&n)>>0]|0))break;else f=f+1|0;f=f-e&1073741823}c[(g&p)+4>>2]=f;f=nr(b,d,g,0)|0;i=h;return f|0}function ut(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,q=0,r=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();k=q+4|0;n=q;if(c[((c[(a&p)>>2]|0)&p)+24>>2]&524288){f=c[(d&p)+16>>2]|0;if(!f)e=0;else{e=0;do{g=c[(f&p)+20>>2]|0;if((g|0)>0){h=0;do{r=c[(f+(h<<3)&p)+36>>2]|0;e=((r|0)>31?-1:1<>2]|0}while((f|0)!=0)}f=bn((c[(d&p)+68>>2]|0)+56|0,c[(d&p)>>2]|0,k)|0;if((f|0)!=0?(l=c[(f&p)+8>>2]|0,(l|0)!=0):0)do{c[(n&p)>>2]=0;Mt(a,d,l,n,0)|0;f=c[(n&p)>>2]|0;if((f|0)!=0?(m=b[(f&o)+46>>1]|0,m<<16>>16!=0):0){k=m&65535;h=c[(f&p)+4>>2]|0;g=0;do{f=b[(h+(g<<1)&o)>>1]|0;if(f<<16>>16>31)f=-1;else f=1<<(f<<16>>16);e=f|e;g=g+1|0}while((g|0)<(k|0))}l=c[(l&p)+12>>2]|0}while((l|0)!=0)}else e=0;i=q;return e|0}function vt(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;k=(e|0)!=0?110:109;if(!b)j=0;else{j=0;do{if((((d[(b&n)+8>>0]|0|0)==(k|0)?((d[(b&n)+9>>0]|0)&g|0)!=0:0)?(av(c[(b&p)+16>>2]|0,e)|0)!=0:0)?(l=cv(a,b,h,i)|0,(l|0)!=0):0)j=c[(l+(f<<2)&p)+16>>2]|j;b=c[(b&p)+32>>2]|0}while((b|0)!=0)}return j|0}function wt(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=e+20|0;g=c[(l&p)>>2]|0;do if(!g){i=c[(d&p)>>2]|0;k=e+38|0;h=(b[(k&o)>>1]|0)+1|0;h=qg(h,((h|0)<0)<<31>>31)|0;if(!h){a[(i&n)+65>>0]=1;break}if((b[(k&o)>>1]|0)>0){i=e+4|0;g=0;do{a[(h+g&n)>>0]=a[((c[(i&p)>>2]|0)+(g*24|0)&n)+21>>0]|0;g=g+1|0}while((g|0)<(b[(k&o)>>1]|0))}else g=0;do{a[(h+g&n)>>0]=0;if((g|0)<=0)break;g=g+-1|0}while((a[(h+g&n)>>0]|0)==65);c[(l&p)>>2]=h;j=10}else{h=g;j=10}while(0);do if((j|0)==10){g=h;while(1)if(!(a[(g&n)>>0]|0))break;else g=g+1|0;g=g-h&1073741823;if(g)if(!f){xh(d,-1,h,g);break}else{xh(d,wh(d,48,f,g,0)|0,h,g);break}}while(0);return}function xt(a,b,e,f,g,h,i,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;if(b)do{if(((d[(b&n)+8>>0]|0|0)==(e|0)?(d[(b&n)+9>>0]|0|0)==(g|0):0)?(av(c[(b&p)+16>>2]|0,f)|0)!=0:0)dv(a,b,h,i,j,k);b=c[(b&p)+32>>2]|0}while((b|0)!=0);return}function yt(d,f,g,h,k,l,m,q,r,s,t){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;r=r|0;s=s|0;t=t|0;var 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,da=0,ea=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;oa=i;i=i+16|0;if((i|0)>=(j|0))fa();L=oa;ia=(m|0)!=0;Q=c[(d&p)>>2]|0;na=Oq(d)|0;D=b[(f&o)+38>>1]|0;la=f+44|0;if(!(a[(la&n)>>0]&32)){ha=1;ga=0}else{x=f+8|0;while(1){x=c[(x&p)>>2]|0;if((a[(x&n)+51>>0]&3)==2)break;else x=x+20|0}ha=e[(x&o)+46>>1]|0;ga=x}if(D<<16>>16>0){z=f+36|0;y=f+4|0;x=r<<24>>24==10;w=d+408|0;v=l+1|0;E=na+4|0;F=na+32|0;G=na+24|0;H=r&255;B=D<<16>>16;A=0;do{a:do if((A|0)!=(b[(z&o)>>1]|0)?(I=c[(y&p)>>2]|0,J=a[(I+(A*24|0)&n)+20>>0]|0,K=J&255,J<<24>>24!=0):0){if(x)if(J<<24>>24==10)ma=14;else{D=K;ma=11}else{D=H;ma=11}do if((ma|0)==11){ma=0;if((D|0)==5)D=(c[(I+(A*24|0)&p)+4>>2]|0)==0?2:5;if((D|0)==2){ma=14;break}else if((D|0)==3|(D|0)==1)break;else if((D|0)==4){wh(na,76,v+A|0,s,0)|0;break a}C=v+A|0;D=wh(na,77,C,0,0)|0;Rq(d,c[((c[(y&p)>>2]|0)+(A*24|0)&p)+4>>2]|0,C);C=c[(F&p)>>2]|0;if(C>>>0>D>>>0)c[((c[(E&p)>>2]|0)+(D*20|0)&p)+8>>2]=C;c[((c[(G&p)>>2]|0)&p)+88>>2]=C+-1;break a}while(0);if((ma|0)==14){ma=0;D=c[(w&p)>>2]|0;a[(((D|0)==0?d:D)&n)+21>>0]=1;D=2}ea=c[(I+(A*24|0)&p)>>2]|0;c[(L&p)>>2]=c[(f&p)>>2];c[(L&p)+4>>2]=ea;ea=uh(Q,27824,L)|0;xh(na,wh(na,23,1299,D,v+A|0)|0,ea,-1);D=c[(E&p)>>2]|0;if(D)a[(D+(((c[(F&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=1}while(0);A=A+1|0}while((A|0)!=(B|0))}A=c[(f&p)+24>>2]|0;if(((A|0)!=0?(c[(Q&p)+24>>2]&8192|0)==0:0)?(c[(d&p)+92>>2]=l+1,(c[(A&p)>>2]|0)>0):0){z=A+4|0;v=na+24|0;B=na+32|0;D=0;x=r<<24>>24==10?2:r&255;while(1){C=xs(na)|0;Zu(d,c[((c[(z&p)>>2]|0)+(D*20|0)&p)>>2]|0,C,16);if((x|0)==4){wh(na,16,0,s,0)|0;w=4}else{y=c[((c[(z&p)>>2]|0)+(D*20|0)&p)+4>>2]|0;if(!y)y=c[(f&p)>>2]|0;w=(x|0)==5?2:x;zs(d,275,w,y,0,3)}y=c[(v&p)>>2]|0;x=~C;if((C|0)<0?(M=c[(y&p)+112>>2]|0,(M|0)!=0):0)c[(M+(x<<2)&p)>>2]=c[(B&p)>>2];c[(y&p)+88>>2]=(c[(B&p)>>2]|0)+-1;D=D+1|0;if((D|0)>=(c[(A&p)>>2]|0))break;else x=w}}if(q<<24>>24!=0&(ga|0)==0){z=xs(na)|0;v=a[(f&n)+45>>0]|0;if(r<<24>>24==10)v=v<<24>>24==10?2:v&255;else v=r&255;if(ia?(wh(na,79,l,z,m)|0,N=c[(na&p)+4>>2]|0,(N|0)!=0):0)a[(N+(((c[(na&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=-112;b:do if(!((v|0)!=5|r<<24>>24==5)?(u=c[(f&p)+8>>2]|0,(u|0)!=0):0){while(1){if(((a[(u&n)+50>>0]|0)+-3&255)<2)break;u=c[(u&p)+20>>2]|0;if(!u){A=0;break b}}A=wh(na,16,0,0,0)|0}else A=0;while(0);wh(na,70,h,z,l)|0;c:do switch(v|0){case 4:{wh(na,16,0,s,0)|0;v=0;break}case 3:case 2:case 1:{ma=49;break}case 5:{if((c[(Q&p)+24>>2]&262144|0)!=0?(O=jt(d,f,109,0,0)|0,(O|0)!=0):0)v=O;else if(!(mt(d,f,0,0)|0)){if(!(c[(f&p)+8>>2]|0)){v=1;break c}v=c[(d&p)+408>>2]|0;a[(((v|0)==0?d:v)&n)+20>>0]=1;At(d,f,h,k,0);v=1;break c}else v=0;ea=c[(d&p)+408>>2]|0;a[(((ea|0)==0?d:ea)&n)+20>>0]=1;rt(d,f,v,h,k,l,1,0,5,1);v=1;break}default:{v=2;ma=49}}while(0);if((ma|0)==49){Ft(d,v,f);v=0}y=na+24|0;x=c[(y&p)>>2]|0;w=~z;if((z|0)<0?(P=c[(x&p)+112>>2]|0,(P|0)!=0):0)c[(P+(w<<2)&p)>>2]=c[(na&p)+32>>2];u=na+32|0;c[(x&p)+88>>2]=(c[(u&p)>>2]|0)+-1;if(!A){w=0;A=0}else{w=wh(na,16,0,0,0)|0;u=c[(u&p)>>2]|0;if(u>>>0>A>>>0)c[((c[(na&p)+4>>2]|0)+(A*20|0)&p)+8>>2]=u;c[((c[(y&p)>>2]|0)&p)+88>>2]=u+-1}}else{w=0;A=0;v=0}D=c[(f&p)+8>>2]|0;if(D){ba=l+1|0;ca=d+60|0;da=d+56|0;ea=d+72|0;T=q<<24>>24==0;U=na+24|0;V=na+32|0;W=r<<24>>24==10;X=na+4|0;Y=ga+46|0;Z=ga+32|0;_=ga+4|0;$=m+1|0;aa=d+408|0;R=Q+24|0;S=ha&65535;z=r&255;y=f+36|0;x=d+92|0;H=0;u=0;C=-1;while(1){O=g+(u<<2)|0;do if(c[(O&p)>>2]|0){if(!(H<<24>>24)){wt(na,f,ba);H=1}P=u+k|0;r=xs(na)|0;N=D+36|0;if(c[(N&p)>>2]|0){wh(na,28,0,c[(O&p)>>2]|0,0)|0;c[(x&p)>>2]=ba;gt(d,c[(N&p)>>2]|0,r,16);c[(x&p)>>2]=0}Q=D+48|0;I=b[(Q&o)>>1]|0;L=I&65535;K=c[(ca&p)>>2]|0;J=c[(da&p)>>2]|0;if((J|0)<(L|0)){q=c[(ea&p)>>2]|0;c[(ea&p)>>2]=q+L;q=q+1|0}else{c[(ca&p)>>2]=K+L;c[(da&p)>>2]=J-L;q=K}if(!(I<<16>>16))M=C;else{M=D+4|0;J=0;do{B=b[((c[(M&p)>>2]|0)+(J<<1)&o)>>1]|0;L=B<<16>>16;if(B<<16>>16>=0?B<<16>>16!=(b[(y&o)>>1]|0):0){K=J+q|0;L=ba+L|0;ma=81}else{L=J+q|0;if((C|0)!=(L|0)){K=L;C=(c[(N&p)>>2]|0)==0?L:-1;L=l;ma=81}}if((ma|0)==81){ma=0;wh(na,34,L,K,0)|0;I=b[(Q&o)>>1]|0}J=J+1|0;L=I&65535}while((J|0)<(L|0));M=C}wh(na,49,q,L,c[(O&p)>>2]|0)|0;dt(d,q,e[(Q&o)>>1]|0);N=(ga|0)==(D|0);if(ia&N&T){C=c[(U&p)>>2]|0;B=~r;if((r|0)<0?(ja=c[(C&p)+112>>2]|0,(ja|0)!=0):0)c[(ja+(B<<2)&p)>>2]=c[(V&p)>>2];c[(C&p)+88>>2]=(c[(V&p)>>2]|0)+-1;C=M;break}G=a[(D&n)+50>>0]|0;F=G&255;if(!(G<<24>>24)){C=e[(Q&o)>>1]|0;dt(d,q,C);if((c[(da&p)>>2]|0)<(C|0)){c[(da&p)>>2]=C;c[(ca&p)>>2]=q}C=c[(U&p)>>2]|0;B=~r;if((r|0)<0?(ka=c[(C&p)+112>>2]|0,(ka|0)!=0):0)c[(ka+(B<<2)&p)>>2]=c[(V&p)>>2];c[(C&p)+88>>2]=(c[(V&p)>>2]|0)+-1;C=M;break}if(W)O=G<<24>>24==10?2:F;else O=z;C=e[(D&o)+46>>1]|0;xh(na,wh(na,67,P,r,q)|0,C,-14);do if(!N){L=c[(ca&p)>>2]|0;K=c[(da&p)>>2]|0;if((K|0)<(ha|0)){L=c[(ea&p)>>2]|0;c[(ea&p)>>2]=L+ha;L=L+1|0;break}else{c[(ca&p)>>2]=L+ha;c[(da&p)>>2]=K-ha;break}}else L=q;while(0);do if(ia|(O|0)==5){if(!(a[(la&n)>>0]&32)){wh(na,112,P,L,0)|0;if(!ia)break;wh(na,79,L,r,m)|0;G=c[(X&p)>>2]|0;if(!G)break;a[(G+(((c[(V&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=-112;break}do if(!N){if(!(b[(Y&o)>>1]|0))break;F=D+4|0;E=0;do{I=b[((c[(_&p)>>2]|0)+(E<<1)&o)>>1]|0;K=b[(Q&o)>>1]|0;d:do if(!(K<<16>>16))K=-1;else{G=c[(F&p)>>2]|0;J=K&65535;K=0;while(1){if((b[(G+(K<<1)&o)>>1]|0)==I<<16>>16)break d;K=K+1|0;if((K|0)>=(J|0)){K=-1;break}}}while(0);wh(na,47,P,K<<16>>16,E+L|0)|0;E=E+1|0}while((E|0)<(e[(Y&o)>>1]|0))}while(0);if(!ia)break;F=(a[(D&n)+51>>0]&3)==2?q:L;K=b[(Y&o)>>1]|0;if(!(K<<16>>16))break;J=(K&65535)+(c[(V&p)>>2]|0)|0;I=0;G=78;do{K=cr(d,c[((c[(Z&p)>>2]|0)+(I<<2)&p)>>2]|0)|0;C=(I|0)==((e[(Y&o)>>1]|0)+-1|0);J=C?r:J;G=C?79:G;xh(na,wh(na,G,$+(b[((c[(_&p)>>2]|0)+(I<<1)&o)>>1]|0)|0,J,I+F|0)|0,K,-4);K=c[(X&p)>>2]|0;if(K)a[(K+(((c[(V&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=-112;I=I+1|0}while((I|0)<(e[(Y&o)>>1]|0))}while(0);if((O|0)==3|(O|0)==2|(O|0)==1)nu(d,O,D);else if((O|0)==4)wh(na,16,0,s,0)|0;else{C=c[(aa&p)>>2]|0;a[(((C|0)==0?d:C)&n)+20>>0]=1;if(!(c[(R&p)>>2]&262144))G=0;else G=jt(d,f,109,0,0)|0;rt(d,f,G,h,k,L,S,0,5,N&1);v=1}K=c[(U&p)>>2]|0;J=~r;do if((r|0)<0){G=c[(K&p)+112>>2]|0;if(!G)break;c[(G+(J<<2)&p)>>2]=c[(V&p)>>2]}while(0);c[(K&p)+88>>2]=(c[(V&p)>>2]|0)+-1;C=e[(Q&o)>>1]|0;dt(d,q,C);if((c[(da&p)>>2]|0)<(C|0)){c[(da&p)>>2]=C;c[(ca&p)>>2]=q}if((L|0)==(q|0)){C=M;break}dt(d,L,ha);if((c[(da&p)>>2]|0)>=(ha|0)){C=M;break}c[(da&p)>>2]=ha;c[(ca&p)>>2]=L;C=M}while(0);D=c[(D&p)+20>>2]|0;if(!D)break;else u=u+1|0}}if(A){wh(na,16,0,A+1|0,0)|0;u=c[(na&p)+32>>2]|0;if(u>>>0>w>>>0)c[((c[(na&p)+4>>2]|0)+(w*20|0)&p)+8>>2]=u;c[((c[(na&p)+24>>2]|0)&p)+88>>2]=u+-1}c[(t&p)>>2]=v;i=oa;return}function zt(e,f,g,h,k,l){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=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,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;aa=i;i=i+32|0;if((i|0)>=(j|0))fa();T=aa+20|0;R=aa+16|0;P=aa+12|0;Q=aa+8|0;_=aa+4|0;Z=aa;V=c[(e&p)>>2]|0;O=e+438|0;U=a[(O&n)>>0]|0;Y=V+24|0;a:do if(c[(Y&p)>>2]&524288){S=f+68|0;m=c[(S&p)>>2]|0;b:do if(m){r=c[(V&p)+20>>2]|0;if((r|0)>0){q=c[(V&p)+16>>2]|0;u=0;while(1){t=u+1|0;if((c[(q+(u<<4)&p)+12>>2]|0)==(m|0)){t=u;break b}if((t|0)<(r|0))u=t;else break}}else t=0}else t=-1e6;while(0);N=c[((c[(V&p)+16>>2]|0)+(t<<4)&p)>>2]|0;A=c[(f&p)+16>>2]|0;if(!A)q=f;else{C=(k|0)==0;D=U<<24>>24==0;E=V+65|0;F=g+1|0;G=e+68|0;H=(g|0)==0;I=(h|0)==0;J=e+408|0;K=f+36|0;L=V+284|0;M=(l|0)!=0;B=A;do{c[(R&p)>>2]=0;c[(P&p)>>2]=0;c:do if(!C){A=c[(B&p)+8>>2]|0;if(dd(c[(f&p)>>2]|0,A)|0){z=c[(B&p)+20>>2]|0;if((z|0)>0){q=0;do{m=c[(B+(q<<3)&p)+36>>2]|0;if((c[(k+(m<<2)&p)>>2]|0)>-1){$=17;break c}q=q+1|0;if((m|0)==(b[(K&o)>>1]|0)&M){$=17;break c}}while((q|0)<(z|0))}}else $=17}else{A=c[(B&p)+8>>2]|0;$=17}while(0);do if(($|0)==17){$=0;if(!(a[(O&n)>>0]|0))y=sh(e,0,A,N)|0;else y=_h(V,A,N)|0;A=(y|0)==0;if(!A?(Mt(e,y,B,R,P)|0)==0:0){A=c[(P&p)>>2]|0;if(!A){c[(Q&p)>>2]=c[(B&p)+36>>2];A=Q}q=B+20|0;if((c[(q&p)>>2]|0)>0){w=c[(R&p)>>2]|0;r=(w|0)==0;u=y+36|0;v=y+4|0;w=w+4|0;m=0;x=0;do{z=A+(x<<2)|0;if((c[(z&p)>>2]|0)==(b[(K&o)>>1]|0))c[(z&p)>>2]=-1;if(c[(L&p)>>2]|0){if(r)z=u;else z=(c[(w&p)>>2]|0)+(x<<1)|0;m=(ev(e,c[(y&p)>>2]|0,c[((c[(v&p)>>2]|0)+((b[(z&o)>>1]|0)*24|0)&p)>>2]|0,t)|0)==2&1}x=x+1|0}while((x|0)<(c[(q&p)>>2]|0));z=y}else{z=y;m=0}gs(e,t,c[(y&p)+32>>2]|0,0,c[(z&p)>>2]|0);c[(G&p)>>2]=(c[(G&p)>>2]|0)+1;if(!H)fv(e,t,y,c[(R&p)>>2]|0,B,A,g,-1,m);d:do if(!I){z=c[(J&p)>>2]|0;z=c[(((z|0)==0?e:z)&p)+528>>2]|0;do if(z){z=c[(z&p)>>2]|0;if((z|0)==(c[(B&p)+28>>2]|0)?(a[(B&n)+25>>0]|0)==7:0)break d;if((z|0)!=(c[(B&p)+32>>2]|0))break;if((a[(B&n)+26>>0]|0)==7)break d}while(0);fv(e,t,y,c[(R&p)>>2]|0,B,A,h,1,m)}while(0);mg(V,c[(P&p)>>2]|0);break}if(D)break a;if(a[(E&n)>>0]|0)break a;if(A){A=Oq(e)|0;z=B+20|0;q=c[(z&p)>>2]|0;m=(c[(A&p)+32>>2]|0)+1+q|0;if((q|0)>0){q=0;do{wh(A,76,F+(c[(B+(q<<3)&p)+36>>2]|0)|0,m,0)|0;q=q+1|0}while((q|0)<(c[(z&p)>>2]|0))}wh(A,134,d[(B&n)+24>>0]|0,-1,0)|0}}while(0);B=c[(B&p)+4>>2]|0}while((B|0)!=0);q=f;m=c[(S&p)>>2]|0}m=bn(m+56|0,c[(q&p)>>2]|0,T)|0;if((m|0)!=0?(s=c[(m&p)+8>>2]|0,W=V+65|0,(s|0)!=0):0){u=(k|0)!=0;v=e+408|0;w=e+20|0;x=e+68|0;y=(h|0)==0;z=(g|0)==0;A=u&1;t=U<<24>>24==0;do{c[(_&p)>>2]=0;c[(Z&p)>>2]=0;if(!(u?(bv(f,s,k,l)|0)==0:0))$=57;do if(($|0)==57){$=0;q=s+24|0;if((((a[(q&n)>>0]|0)==0?(c[(Y&p)>>2]&16777216|0)==0:0)?(c[(v&p)>>2]|0)==0:0)?(a[(w&n)>>0]|0)==0:0)break;if(Mt(e,f,s,_,Z)|0){if(t)break a;if(!(a[(W&n)>>0]|0))break;else break a}m=pr(V,0,0,0)|0;if(m){K=c[(s&p)>>2]|0;c[(m&p)+24>>2]=K;r=m+16|0;c[(r&p)>>2]=c[(K&p)>>2];K=K+40|0;b[(K&o)>>1]=(b[(K&o)>>1]|0)+1<<16>>16;K=c[(x&p)>>2]|0;c[(x&p)>>2]=K+1;c[(m&p)+48>>2]=K;if(!y)gv(e,m,f,c[(_&p)>>2]|0,s,c[(Z&p)>>2]|0,h,-1);if((!z?(X=a[(s+A&n)+25>>0]|0,gv(e,m,f,c[(_&p)>>2]|0,s,c[(Z&p)>>2]|0,g,1),(a[(q&n)>>0]|0)==0):0)?!(X<<24>>24==7|X<<24>>24==9):0){K=c[(v&p)>>2]|0;a[(((K|0)==0?e:K)&n)+21>>0]=1}c[(r&p)>>2]=0;Do(V,m)}mg(V,c[(Z&p)>>2]|0)}while(0);s=c[(s&p)+12>>2]|0}while((s|0)!=0)}}while(0);i=aa;return}function At(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))fa();u=v;t=c[(b&p)+8>>2]|0;l=c[(d&p)+8>>2]|0;a:do if(a[(d&n)+44>>0]&32){if(l){k=l;while(1){if((a[(k&n)+51>>0]&3)==2){s=5;break a}k=c[(k&p)+20>>2]|0;if(!k){k=0;s=5;break}}}}else{k=0;s=5}while(0);if((s|0)==5?(l|0)!=0:0){q=(h|0)==0;r=0;d=0;m=-1;while(1){if(q){if((l|0)!=(k|0))s=10}else if(!((l|0)==(k|0)?1:(c[(h+(r<<2)&p)>>2]|0)==0))s=10;if((s|0)==10){s=0;m=Pt(b,l,f,0,1,u,d,m)|0;wh(t,111,r+g|0,m,e[(((a[(l&n)+51>>0]&8)==0?l+48|0:l+46|0)&o)>>1]|0)|0;Qt(b,c[(u&p)>>2]|0);d=l}l=c[(l&p)+20>>2]|0;if(!l)break;else r=r+1|0}}i=v;return}function Bt(d,e,f,g,h,i,j,k,l){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=Oq(d)|0;t=c[(e&p)+8>>2]|0;if(!t){q=e+44|0;s=0}else{u=(l|0)!=0;q=e+44|0;v=u?17:1;w=z+4|0;x=z+32|0;s=0;y=0;m=t;while(1){r=i+(y<<2)|0;t=c[(r&p)>>2]|0;do if(t){if(c[(m&p)+36>>2]|0){wh(z,76,t,(c[(x&p)>>2]|0)+2|0,0)|0;t=c[(r&p)>>2]|0}wh(z,110,y+g|0,t,0)|0;if((a[(m&n)+51>>0]&3)==2){t=(a[(q&n)>>0]&32)!=0;if(t|u)s=t?v:16;else{s=1;break}}else if(u)s=16;else{s=1;break}t=c[(w&p)>>2]|0;if(!t)s=1;else{a[(t+(((c[(x&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=s;s=1}}while(0);m=c[(m&p)+20>>2]|0;if(!m)break;else y=y+1|0}}if(!(a[(q&n)>>0]&32)){r=h+1|0;q=d+19|0;m=a[(q&n)>>0]|0;if(!(m<<24>>24)){i=d+72|0;t=(c[(i&p)>>2]|0)+1|0;c[(i&p)>>2]=t}else{t=m+-1<<24>>24;a[(q&n)>>0]=t;t=c[(d+((t&255)<<2)&p)+24>>2]|0}q=e+38|0;wh(z,49,r,b[(q&o)>>1]|0,t)|0;if(!(s<<24>>24))wt(z,e,0);dt(d,r,b[(q&o)>>1]|0);r=d+18|0;if(!(a[(r&n)>>0]|0))m=(j|0)!=0?5:3;else m=0;if(k)m=(m&255|8)&255;if(!l)q=m;else q=(m&255|16)&255;wh(z,75,f,t,h)|0;if(!(a[(r&n)>>0]|0))xh(z,-1,c[(e&p)>>2]|0,0);m=c[(z&p)+4>>2]|0;if(m)a[(m+(((c[(z&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=q}return}function Ct(d,e,f,g,h,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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,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;$=i;i=i+64|0;if((i|0)>=(j|0))fa();U=$+52|0;T=$+48|0;Y=$+8|0;X=$;W=$+40|0;Z=$+32|0;V=$+24|0;if(((c[((c[(d&p)>>2]|0)&p)+24>>2]&524288|0)!=0?(S=e+68|0,l=bn((c[(S&p)>>2]|0)+56|0,c[(e&p)>>2]|0,$+16|0)|0,(l|0)!=0):0)?(m=c[(l&p)+8>>2]|0,(m|0)!=0):0){R=(h|0)==0;K=(f|0)!=0;L=K&1;M=Z+4|0;N=W+4|0;O=e+4|0;P=V+4|0;Q=K?110:109;do{if(!(!R?(bv(e,m,h,k)|0)==0:0)){H=c[(d&p)>>2]|0;G=a[(m+L&n)+25>>0]|0;I=G&255;J=m+(L<<2)+28|0;f=c[(J&p)>>2]|0;do if(!(G<<24>>24==0|(f|0)!=0)){c[(U&p)>>2]=0;c[(T&p)>>2]=0;if(!(Mt(d,e,m,U,T)|0)){u=m+20|0;if((c[(u&p)>>2]|0)>0){A=34352;z=c[(A&p)>>2]|0;A=c[(A&p)+4>>2]|0;C=34360;B=c[(C&p)>>2]|0;C=c[(C&p)+4>>2]|0;D=m+36|0;F=G<<24>>24!=6&(G<<24>>24!=9|K);E=0;r=0;l=0;q=0;do{f=Y;c[(f&p)>>2]=z;c[(f&p)+4>>2]=A;f=X;c[(f&p)>>2]=B;c[(f&p)+4>>2]=C;f=c[(T&p)>>2]|0;if(!f)f=D;else f=f+(E<<2)|0;t=c[(f&p)>>2]|0;v=c[(U&p)>>2]|0;if(!v)x=34368;else x=c[((c[(O&p)>>2]|0)+((b[((c[(v&p)+4>>2]|0)+(E<<1)&o)>>1]|0)*24|0)&p)>>2]|0;c[(Z&p)>>2]=x;f=c[((c[((c[(m&p)>>2]|0)&p)+4>>2]|0)+(t*24|0)&p)>>2]|0;c[(W&p)>>2]=f;if(!x)w=0;else{y=x;while(1)if(!(a[(y&n)>>0]|0))break;else y=y+1|0;w=y-x&1073741823}c[(M&p)>>2]=w;if(!f)s=0;else{x=f;while(1)if(!(a[(x&n)>>0]|0))break;else x=x+1|0;s=x-f&1073741823}c[(N&p)>>2]=s;y=Zq(d,27,0,0,Y)|0;y=Zq(d,122,y,Zq(d,27,0,0,Z)|0,0)|0;q=ss(H,q,Zq(d,79,y,Zq(d,27,0,0,W)|0,0)|0)|0;if(K){x=Zq(d,27,0,0,Y)|0;x=Zq(d,122,x,Zq(d,27,0,0,Z)|0,0)|0;y=Zq(d,27,0,0,X)|0;l=ss(H,l,Zq(d,73,x,Zq(d,122,y,Zq(d,27,0,0,Z)|0,0)|0,0)|0)|0}if(F){do if(G<<24>>24==8){f=c[((c[((c[(m&p)>>2]|0)&p)+4>>2]|0)+(t*24|0)&p)+4>>2]|0;if(!f){f=Zq(d,101,0,0,0)|0;break}else{f=Mr(H,f,0,0)|0;break}}else if(G<<24>>24==9){f=Zq(d,27,0,0,X)|0;f=Zq(d,122,f,Zq(d,27,0,0,Z)|0,0)|0}else f=Zq(d,101,0,0,0)|0;while(0);r=lr(d,r,f)|0;mr(d,r,W,0)}E=E+1|0}while((E|0)<(c[(u&p)>>2]|0));f=m}else{f=m;r=0;l=0;q=0}mg(H,c[(T&p)>>2]|0);y=c[(c[(f&p)>>2]&p)>>2]|0;if(!y)s=0;else{f=y;while(1)if(!(a[(f&n)>>0]|0))break;else f=f+1|0;s=f-y&1073741823}if(G<<24>>24==6){c[(V&p)>>2]=y;c[(P&p)>>2]=s;f=tt(H,57,34376)|0;if(f)a[(f&n)+1>>0]=2;x=lr(d,0,f)|0;x=kr(d,x,pr(H,0,V,0)|0,q,0,0,0,0,0,0)|0;w=0}else{x=0;w=q}t=H+250|0;u=a[(t&n)>>0]|0;a[(t&n)>>0]=0;f=s+77|0;v=mh(H,f,0)|0;if(v){fw(v|0,0,f|0)|0;q=v+36|0;c[(v&p)+28>>2]=q;G=v+76|0;c[(v&p)+48>>2]=G;c[(v&p)+52>>2]=s;kw(G|0,y|0,s|0)|0;c[(v&p)+56>>2]=Mr(H,w,1,0)|0;c[(v&p)+60>>2]=Pr(H,r,1)|0;c[(v&p)+44>>2]=gr(H,x,1)|0;if(!l){f=v;l=0}else{l=Zq(d,19,l,0,0)|0;c[(v&p)+12>>2]=Mr(H,l,1,0)|0;f=v}}else{f=0;q=0}a[(t&n)>>0]=u;Gk(H,w);Gk(H,l);Nk(H,r);Mk(H,x,1);if((a[(H&n)+65>>0]|0)==1){Kk(H,f);f=0;break}if((I|0)==6)a[(q&n)>>0]=119;else if((I|0)==9?!K:0)a[(q&n)>>0]=109;else _=49;if((_|0)==49){_=0;a[(q&n)>>0]=110}c[(q&p)+4>>2]=f;I=c[(S&p)>>2]|0;c[(v&p)+20>>2]=I;c[(v&p)+24>>2]=I;c[(J&p)>>2]=f;a[(v&n)+8>>0]=Q}else f=0}while(0);if(f)dv(d,f,e,g,2,0)}m=c[(m&p)+12>>2]|0}while((m|0)!=0)}i=$;return}function Dt(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0;f=b[(d&o)+46>>1]|0;a:do if(f<<16>>16==(b[(e&o)+46>>1]|0)?(a[(d&n)+50>>0]|0)==(a[(e&n)+50>>0]|0):0){if(f<<16>>16){g=c[(e&p)+4>>2]|0;h=c[(d&p)+4>>2]|0;i=e+28|0;j=d+28|0;k=e+32|0;l=d+32|0;s=0;do{if((b[(g+(s<<1)&o)>>1]|0)!=(b[(h+(s<<1)&o)>>1]|0)){f=0;break a}if((a[((c[(i&p)>>2]|0)+s&n)>>0]|0)!=(a[((c[(j&p)>>2]|0)+s&n)>>0]|0)){f=0;break a}m=c[((c[(k&p)>>2]|0)+(s<<2)&p)>>2]|0;q=c[((c[(l&p)>>2]|0)+(s<<2)&p)>>2]|0;r=(q|0)==0;if(!m){if(!r){f=0;break a}}else{if(r){f=0;break a}if(dd(m,q)|0){f=0;break a}}s=s+1|0}while((s|0)<(f&65535|0))}f=(Cu(c[(e&p)+36>>2]|0,c[(d&p)+36>>2]|0,-1)|0)==0&1}else f=0;while(0);return f|0}function Et(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!(a[(e&n)+44>>0]&8))f=0;else{h=c[(b&p)+408>>2]|0;h=(h|0)==0?b:h;g=h+404|0;f=c[(g&p)>>2]|0;a:do if(!f)i=5;else while(1){if((c[(f&p)+4>>2]|0)==(e|0))break a;f=c[(f&p)>>2]|0;if(!f){i=5;break}}while(0);if((i|0)==5){f=mh(c[(b&p)>>2]|0,16,0)|0;if(!f){f=0;break}c[(f&p)>>2]=c[(g&p)>>2];c[(g&p)>>2]=f;c[(f&p)+4>>2]=e;c[(f&p)+8>>2]=d;b=h+72|0;g=c[(b&p)>>2]|0;c[(f&p)+12>>2]=g+2;c[(b&p)>>2]=g+3}f=c[(f&p)+12>>2]|0}while(0);return f|0}function Ft(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();k=l;g=b[(e&o)+36>>1]|0;h=c[(a&p)>>2]|0;f=c[(e&p)>>2]|0;if(g<<16>>16>-1){g=c[((c[(e&p)+4>>2]|0)+((g<<16>>16)*24|0)&p)>>2]|0;c[(k&p)>>2]=f;c[(k&p)+4>>2]=g;g=1555;f=uh(h,27824,k)|0}else{c[(k&p)>>2]=f;g=2579;f=uh(h,34408,k)|0}zs(a,g,d,f,-1,2);i=l;return}function Gt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=b+316|0;h=c[(g&p)>>2]|0;d=lr(b,h,Mr(c[(b&p)>>2]|0,d,0,0)|0)|0;if(d){b=(c[(d&p)>>2]|0)+-1|0;h=c[(d&p)+4>>2]|0;c[(h+(b*20|0)&p)+16>>2]=e;b=h+(b*20|0)+13|0;a[(b&n)>>0]=a[(b&n)>>0]&-5|f<<2&4}c[(g&p)>>2]=d;return}function Ht(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[(e&p)>>2]|0;if(!(g+-1&g)){i=ca((g|0)==0?1:g<<1,d)|0;a=ro(a,b,i,((i|0)<0)<<31>>31)|0;if(!a){c[(f&p)>>2]=-1;a=b}else h=4}else{a=b;h=4}if((h|0)==4){fw(a+(ca(g,d)|0)|0,0,d|0)|0;c[(f&p)>>2]=g;c[(e&p)>>2]=(c[(e&p)>>2]|0)+1}return a|0}function It(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;c[(h&p)>>2]=0;b=c[(a&p)+12>>2]|0;if((b|0)!=0?(d=c[(b&p)+24>>2]|0,(d|0)>0):0){c[(h&p)>>2]=d;b=d}else b=0;d=c[(a&p)+16>>2]|0;if((d|0)!=0?(e=c[(d&p)+24>>2]|0,(e|0)>(b|0)):0)c[(h&p)>>2]=e;f=a+4|0;b=a+20|0;if(!(c[(f&p)>>2]&2048)){d=c[(b&p)>>2]|0;if(d){tu(d,h);b=c[(b&p)>>2]|0;if((b|0)!=0?(g=c[(b&p)>>2]|0,(g|0)>0):0){e=c[(b&p)+4>>2]|0;d=0;b=0;do{b=c[((c[(e+(d*20|0)&p)>>2]|0)&p)+4>>2]|b;d=d+1|0}while((d|0)!=(g|0));b=b&2097408}else b=0;c[(f&p)>>2]=c[(f&p)>>2]|b}}else Es(c[(b&p)>>2]|0,h);c[(a&p)+24>>2]=(c[(h&p)>>2]|0)+1;i=k;return}function Jt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=Oq(b)|0;i=b+72|0;h=(c[(i&p)>>2]|0)+1|0;c[(i&p)>>2]=h;b=mh(c[(b&p)>>2]|0,8,0)|0;if(b){i=b;c[(i&p)>>2]=e;c[(i&p)+4>>2]=f}xh(g,wh(g,26,0,h,0)|0,b,-13);iq(g,1);if(!(a[((c[(g&p)>>2]|0)&n)+65>>0]|0))Xg(c[(g&p)+16>>2]|0,d,-1,1,0)|0;wh(g,35,h,1,0)|0;return}function Kt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;d=c[(b&p)>>2]|0;e=d+16|0;f=c[((c[(e&p)>>2]|0)&p)+20>>2]|0;do if(!f)d=0;else{if((a[(d&n)+63>>0]|0)!=0?(a[(f&n)+8>>0]|0)==0:0){Ml(f);c[((c[(e&p)>>2]|0)&p)+20>>2]=0;Eg(d);d=0;break}th(b,32128,g);d=1}while(0);i=h;return d|0}function Lt(b){b=b|0;var e=0,f=0,g=0;if((a[(b&n)+63>>0]|0)!=0?(e=c[(b&p)+20>>2]|0,(e|0)>0):0){g=b+24|0;f=c[(b&p)+16>>2]|0;while(1){e=e+-1|0;b=c[(f&p)+4>>2]|0;if(b)to(b,c[(g&p)>>2]&28|d[(f&n)+8>>0]);if((e|0)<=0)break;else f=f+16|0}}return}function Mt(d,f,g,h,k){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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;C=i;i=i+16|0;if((i|0)>=(j|0))fa();z=C;A=c[(g&p)+20>>2]|0;m=c[(g&p)+40>>2]|0;if((A|0)==1){v=b[(f&o)+36>>1]|0;l=v<<16>>16;if(v<<16>>16>-1)if((m|0)!=0?(dd(c[((c[(f&p)+4>>2]|0)+(l*24|0)&p)>>2]|0,m)|0)!=0:0){y=0;B=8}else k=0;else{y=0;B=8}}else if(k){l=mh(c[(d&p)>>2]|0,A<<2,0)|0;if(!l)k=1;else{c[(k&p)>>2]=l;y=l;B=8}}else{y=0;B=8}a:do if((B|0)==8){k=c[(f&p)+8>>2]|0;b:do if(k){v=(m|0)==0;x=(A|0)>0;u=f+4|0;w=(y|0)==0;c:while(1){do if((e[(k&o)+46>>1]|0)==(A|0)?(a[(k&n)+50>>0]|0)!=0:0){if(v)if((a[(k&n)+51>>0]&3)==2){B=16;break c}else break;d:do if(x){q=c[(k&p)+4>>2]|0;r=c[(u&p)>>2]|0;s=c[(k&p)+32>>2]|0;t=0;while(1){f=b[(q+(t<<1)&o)>>1]|0;m=c[(r+(f*24|0)&p)+16>>2]|0;if(dd(c[(s+(t<<2)&p)>>2]|0,(m|0)!=0?m:11152)|0){m=t;break d}m=c[(r+(f*24|0)&p)>>2]|0;l=0;while(1){f=l+1|0;if(!(dd(c[(g+(l<<3)&p)+40>>2]|0,m)|0)){f=l;B=23;break}if((f|0)<(A|0))l=f;else break}if((B|0)==23){B=0;if(!w)c[(y+(t<<2)&p)>>2]=c[(g+(f<<3)&p)+36>>2]}m=t+1|0;if((f|0)==(A|0)){m=t;break d}if((m|0)<(A|0))t=m;else break}}else m=0;while(0);if((m|0)==(A|0))break c}while(0);k=c[(k&p)+20>>2]|0;if(!k)break b}if((B|0)==16)if(!(w|x^1)){l=0;do{c[(y+(l<<2)&p)>>2]=c[(g+(l<<3)&p)+36>>2];l=l+1|0}while((l|0)!=(A|0))}c[(h&p)>>2]=k;k=0;break a}while(0);if(!(a[(d&n)+438>>0]|0)){v=c[(g&p)+8>>2]|0;c[(z&p)>>2]=c[(c[(g&p)>>2]&p)>>2];c[(z&p)+4>>2]=v;th(d,32008,z)}mg(c[(d&p)>>2]|0,y);k=1}while(0);i=C;return k|0}function Nt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;if(!(c[(d&p)+12>>2]|0)){c[(h&p)>>2]=0;l=c[(b&p)>>2]|0;g=d+4|0;d=c[(g&p)>>2]|0;Zr(l,c[(d+(e*24|0)&p)+4>>2]|0,a[(l&n)+62>>0]|0,a[(d+(e*24|0)&n)+21>>0]|0,h)|0;d=c[(h&p)>>2]|0;if(d)xh(b,-1,d,-8);if((a[((c[(g&p)>>2]|0)+(e*24|0)&n)+21>>0]|0)==69)wh(b,39,f,0,0)|0}i=k;return}function Ot(c,d,f){c=c|0;d=d|0;f=f|0;var g=0;if(!d)g=0;else{g=d;while(1)if(!(a[(g&n)>>0]|0))break;else g=g+1|0;g=g-d&1073741823}g=Sh(c,d,g,2,1,0)|0;if(g){g=g+2|0;b[(g&o)>>1]=e[(g&o)>>1]|f&255}return}function Pt(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;t=c[(d&p)+8>>2]|0;u=c[(e&p)+12>>2]|0;do if(i){l=e+36|0;if(!(c[(l&p)>>2]|0)){c[(i&p)>>2]=0;break}else{c[(i&p)>>2]=xs(t)|0;c[(d&p)+96>>2]=f;s=d+100|0;c[(s&p)>>2]=(c[(s&p)>>2]|0)+1;gt(d,c[(l&p)>>2]|0,c[(i&p)>>2]|0,16);break}}while(0);if((h|0)!=0?(a[(e&n)+51>>0]&8)!=0:0)l=e+46|0;else l=e+48|0;l=b[(l&o)>>1]|0;q=l&65535;r=d+60|0;h=c[(r&p)>>2]|0;s=d+56|0;i=c[(s&p)>>2]|0;if((i|0)<(q|0)){h=d+72|0;m=c[(h&p)>>2]|0;c[(h&p)>>2]=m+q;m=m+1|0}else{c[(r&p)>>2]=h+q;c[(s&p)>>2]=i-q;m=h}do if(!j)h=0;else{if((m|0)==(k|0)?(c[(j&p)+36>>2]|0)==0:0){h=j;break}h=0}while(0);if(l<<16>>16){j=(h|0)==0;k=e+4|0;i=h+4|0;l=0;do{if(!j){h=b[((c[(k&p)>>2]|0)+(l<<1)&o)>>1]|0;if((b[((c[(i&p)>>2]|0)+(l<<1)&o)>>1]|0)!=h<<16>>16)v=21}else{h=b[((c[(k&p)>>2]|0)+(l<<1)&o)>>1]|0;v=21}if((v|0)==21){v=0;nt(t,u,f,h<<16>>16,l+m|0);Pq(t,39)|0}l=l+1|0}while((l|0)<(q|0))}if(g)wh(t,49,m,q,g)|0;dt(d,m,q);if((c[(s&p)>>2]|0)<(q|0)){c[(s&p)>>2]=q;c[(r&p)>>2]=m}return m|0}function Qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(b){d=c[(a&p)+8>>2]|0;e=c[(d&p)+24>>2]|0;f=~b;if((b|0)<0?(g=c[(e&p)+112>>2]|0,(g|0)!=0):0)c[(g+(f<<2)&p)>>2]=c[(d&p)+32>>2];c[(e&p)+88>>2]=(c[(d&p)+32>>2]|0)+-1;bu(a)}return}function Rt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;e=c[(d&p)+16>>2]|0;a:do if((e|0)!=0?(f=c[(d&p)+64>>2]|0,(f|0)!=0):0){e=c[(e&p)+8>>2]|0;b:do if(e){while(1){if(!(dd(c[(e&p)>>2]|0,f)|0))break;e=c[(e&p)+20>>2]|0;if(!e)break b}c[(d&p)+68>>2]=e;e=0;break a}while(0);c[(g&p)>>2]=f;c[(g&p)+4>>2]=0;th(b,28104,g);a[(b&n)+17>>0]=1;e=1}else e=0;while(0);i=h;return e|0}function St(a,b){a=a|0;b=b|0;var d=0,e=0;if(a){d=Tt(a,b)|0;if(b&1){e=St(c[(a&p)+12>>2]|0,b)|0;return e+d+(St(c[(a&p)+16>>2]|0,b)|0)|0}}else d=0;return d|0} -function Tt(b,d){b=b|0;d=d|0;var e=0;if(d&1)if(!(c[(b&p)+12>>2]|0))d=(c[(b&p)+20>>2]|0)==0?12:28;else d=28;else d=48;if((c[(b&p)+4>>2]&1024|0)==0?(e=c[(b&p)+8>>2]|0,(e|0)!=0):0){b=e;while(1)if(!(a[(b&n)>>0]|0))break;else b=b+1|0;d=(d|1)+(b-e&1073741823)|0}return d+7&-8|0}function Ut(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[(a&p)>>2]|0;h=e+20|0;d=c[(h&p)>>2]|0;if((d|0)>0){g=0;f=c[(e&p)+16>>2]|0;while(1){e=c[((c[(f&p)+12>>2]|0)&p)+16>>2]|0;if(e){d=e;do{Vt(a,c[(d&p)+8>>2]|0,b);d=c[(d&p)>>2]|0}while((d|0)!=0);d=c[(h&p)>>2]|0}g=g+1|0;if((g|0)>=(d|0))break;else f=f+16|0}}return}function Vt(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=c[(d&p)+8>>2]|0;if(f){m=(e|0)==0;k=d+68|0;l=a+408|0;do{a:do if(!m){i=f+32|0;d=b[(f&o)+48>>1]|0;if(d<<16>>16){h=c[(f&p)+4>>2]|0;d=d&65535;g=0;do{if((b[(h+(g<<1)&o)>>1]|0)>-1?(dd(c[((c[(i&p)>>2]|0)+(g<<2)&p)>>2]|0,e)|0)==0:0){n=9;break a}g=g+1|0}while((g|0)<(d|0))}}else n=9;while(0);if((n|0)==9){n=0;d=c[(a&p)>>2]|0;g=c[(k&p)>>2]|0;b:do if(g){j=c[(d&p)+20>>2]|0;if((j|0)>0){h=c[(d&p)+16>>2]|0;i=0;while(1){d=i+1|0;if((c[(h+(i<<4)&p)+12>>2]|0)==(g|0)){d=i;break b}if((d|0)<(j|0))i=d;else break}}else d=0}else d=-1e6;while(0);j=c[(l&p)>>2]|0;Ar(a,d);j=((j|0)==0?a:j)+328|0;c[(j&p)>>2]=c[(j&p)>>2]|1<>2]|0}while((f|0)!=0)}return}function Wt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=c[((c[((c[(a&p)>>2]|0)&p)+16>>2]|0)+(b<<4)&p)+12>>2]|0;g=c[(a&p)+408>>2]|0;Ar(a,b);g=((g|0)==0?a:g)+328|0;c[(g&p)>>2]=c[(g&p)>>2]|1<>2]|0;c[(g&p)>>2]=e+3;hv(a,b,e,0,0);f=(c[(a&p)+72>>2]|0)+1|0;g=c[(g&p)>>2]|0;d=c[(d&p)+16>>2]|0;if(d)do{iv(a,c[(d&p)+8>>2]|0,0,e,f,g);d=c[(d&p)>>2]|0}while((d|0)!=0);jv(a,b);return}function Xt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[(a&p)>>2]|0;h=c[(b&p)+68>>2]|0;a:do if(h){i=c[(e&p)+20>>2]|0;if((i|0)>0){f=c[(e&p)+16>>2]|0;e=0;while(1){g=e+1|0;if((c[(f+(e<<4)&p)+12>>2]|0)==(h|0)){g=e;break a}if((g|0)<(i|0))e=g;else break}}else g=0}else g=-1e6;while(0);e=c[(a&p)+408>>2]|0;Ar(a,g);e=((e|0)==0?a:e)+328|0;c[(e&p)>>2]=c[(e&p)>>2]|1<>2]|0;c[(e&p)>>2]=f+3;if(!d)hv(a,g,f,c[(b&p)>>2]|0,28544);else hv(a,g,f,c[(d&p)>>2]|0,28536);iv(a,b,d,f,(c[(a&p)+72>>2]|0)+1|0,c[(e&p)>>2]|0);jv(a,g);return}function Yt(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=((d|0)/2|0)+1|0;f=mh(b,f,((f|0)<0)<<31>>31)|0;b=d+-1|0;if(f){if((b|0)>0){e=0;do{g=a[(c+e&n)>>0]|0;h=a[(c+(e|1)&n)>>0]|0;a[(f+((e|0)/2|0)&n)>>0]=(0-(h>>>6&1)&9)+h&15|(0-(g>>>6&1)&9)+g<<4;e=e+2|0}while((e|0)<(b|0));b=(d&-2|0)/2|0}else b=0;a[(f+b&n)>>0]=0}return f|0}function Zt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();h=m+8|0;l=m;k=c[(b&p)+8>>2]|0;g=d+8|0;do if(!(c[(d&p)+4>>2]&1024)){g=c[(g&p)>>2]|0;d=ji(g,l)|0;if((d|0)!=0?!((d|0)==2&(e|0)!=0):0)if(!(Fc(g,29144,2)|0)){c[(h&p)>>2]=g;th(b,29152,h);break}else{_t(k,g,e,f);break}if(e){if((d|0)==2){d=0;g=-2147483648}else{d=l;d=dw(0,0,c[(d&p)>>2]|0,c[(d&p)+4>>2]|0)|0;g=G}e=l;c[(e&p)>>2]=d;c[(e&p)+4>>2]=g}d=mh(c[(k&p)>>2]|0,8,0)|0;if(d){e=l;h=c[(e&p)>>2]|0;e=c[(e&p)+4>>2]|0;g=d;b=g;a[(b&n)>>0]=h;a[(b&n)+1>>0]=h>>8;a[(b&n)+2>>0]=h>>16;a[(b&n)+3>>0]=h>>24;g=g+4|0;a[(g&n)>>0]=e;a[(g&n)+1>>0]=e>>8;a[(g&n)+2>>0]=e>>16;a[(g&n)+3>>0]=e>>24}xh(k,wh(k,26,0,f,0)|0,d,-13)}else{d=c[(g&p)>>2]|0;wh(k,25,(e|0)==0?d:0-d|0,f,0)|0}while(0);i=m;return}function _t(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,k=0,l=0,m=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();k=l;if(d){g=d;while(1)if(!(a[(g&n)>>0]|0))break;else g=g+1|0;Tl(d,k,g-d&1073741823,1)|0;if(e)h[(k&q)>>3]=-+h[(k&q)>>3];g=mh(c[(b&p)>>2]|0,8,0)|0;if(g){d=k;m=c[(d&p)>>2]|0;d=c[(d&p)+4>>2]|0;e=g;k=e;a[(k&n)>>0]=m;a[(k&n)+1>>0]=m>>8;a[(k&n)+2>>0]=m>>16;a[(k&n)+3>>0]=m>>24;e=e+4|0;a[(e&n)>>0]=d;a[(e&n)+1>>0]=d>>8;a[(e&n)+2>>0]=d>>16;a[(e&n)+3>>0]=d>>24}xh(b,wh(b,133,0,f,0)|0,g,-12)}i=l;return}function $t(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+32|0;if((i|0)>=(j|0))fa();g=m;a:do if(!d)k=0;else while(1){f=c[(d&p)+4>>2]|0;if(!(f&4096)){k=d;break a}if(!(f&262144))d=d+12|0;else d=c[((c[(d&p)+20>>2]|0)&p)+4>>2]|0;d=c[(d&p)>>2]|0;if(!d){k=0;break}}while(0);b:do if(((a[(b&n)+23>>0]|0)!=0?(a[(k&n)>>0]|0)!=-97:0)?(c[(g&p)>>2]=0,c[(g&p)+4>>2]=0,c[(g&p)+8>>2]=0,c[(g&p)+12>>2]=0,c[(g&p)+16>>2]=0,c[(g&p)+20>>2]=0,f=g+20|0,a[(f&n)>>0]=2,c[(g&p)>>2]=78,c[(g&p)+4>>2]=79,c[(g&p)+24>>2]=0,rs(g,k)|0,(a[(f&n)>>0]|0)!=0):0){f=c[(b&p)+316>>2]|0;c[(e&p)>>2]=0;c:do if((f|0)!=0?(h=c[(f&p)>>2]|0,(h|0)>0):0){d=h;f=c[(f&p)+4>>2]|0;while(1){if((a[(f&n)+13>>0]&4)!=0?(Cu(c[(f&p)>>2]|0,k,-1)|0)==0:0)break;d=d+-1|0;if((d|0)<=0)break c;else f=f+20|0}f=c[(f&p)+16>>2]|0;break b}while(0);d=b+72|0;f=(c[(d&p)>>2]|0)+1|0;c[(d&p)>>2]=f;Gt(b,k,f,1)}else l=18;while(0);do if((l|0)==18){d=b+19|0;f=a[(d&n)>>0]|0;if(!(f<<24>>24)){d=b+72|0;f=(c[(d&p)>>2]|0)+1|0;c[(d&p)>>2]=f}else{f=f+-1<<24>>24;a[(d&n)>>0]=f;f=c[(b+((f&255)<<2)&p)+24>>2]|0}d=is(b,k,f)|0;if((d|0)==(f|0)){c[(e&p)>>2]=f;break}else{_r(b,f);c[(e&p)>>2]=0;f=d;break}}while(0);i=m;return f|0}function au(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;l=Ou(b,d,e)|0;k=Bu(d,kv(e)|0)|0;e=b+8|0;d=c[(e&p)>>2]|0;xh(d,wh(d,f,h,i,g)|0,l,-4);e=c[(e&p)>>2]|0;d=c[(e&p)+4>>2]|0;if(d)a[(d+(((c[(e&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=k&255|j;return}function bu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=b+100|0;c[(d&p)>>2]=(c[(d&p)>>2]|0)+-1;g=b+19|0;j=0;k=b+116|0;while(1){h=k+12|0;i=c[(h&p)>>2]|0;if((i|0)!=0?(c[(k&p)+8>>2]|0)>(c[(d&p)>>2]|0):0){e=k+6|0;if(a[(e&n)>>0]|0){f=a[(g&n)>>0]|0;if((f&255)<8){a[(g&n)>>0]=f+1<<24>>24;c[(b+((f&255)<<2)&p)+24>>2]=i}a[(e&n)>>0]=0}c[(h&p)>>2]=0}j=j+1|0;if((j|0)==10)break;else k=k+20|0}return}function cu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[(d&p)>>2]|0;a:do if(e){b:while(1){g=c[(e&p)+4>>2]|0;if(g&512){e=0;k=21;break a}switch(a[(e&n)>>0]|0){case 38:case -98:{e=c[(e&p)+12>>2]|0;break}case -97:{if((a[(e&n)+38>>0]|0)==95){k=7;break b}else k=8;break}case 95:{k=7;break b}case 62:case -102:case -100:{k=8;break}default:k=11}if((k|0)==8){f=c[(e&p)+44>>2]|0;if(!f)k=11;else{k=9;break}}c:do if((k|0)==11){k=0;if(!(g&256)){e=0;k=21;break a}f=c[(e&p)+12>>2]|0;if((f|0)!=0?(c[(f&p)+4>>2]&256|0)!=0:0){e=f;continue b}h=c[(e&p)+16>>2]|0;f=c[(e&p)+20>>2]|0;if((f|0)!=0&(g&2048|0)==0?(i=c[(f&p)>>2]|0,(i|0)>0):0){f=c[(f&p)+4>>2]|0;g=0;while(1){e=c[(f+(g*20|0)&p)>>2]|0;g=g+1|0;if(c[(e&p)+4>>2]&256)break c;if((g|0)>=(i|0)){e=h;break}}}else e=h}while(0);if(!e){e=0;k=21;break a}}if((k|0)==7)e=ws(d,a[(j&n)+62>>0]|0,0,c[(e&p)+8>>2]|0)|0;else if((k|0)==9){e=b[(e&o)+32>>1]|0;if(e<<16>>16<=-1){e=0;k=21;break}e=Yn(j,a[(j&n)+62>>0]|0,c[((c[(f&p)+4>>2]|0)+((e<<16>>16)*24|0)&p)+16>>2]|0,0)|0}if(e)if(!(ws(d,a[((c[(d&p)>>2]|0)&n)+62>>0]|0,e,c[(e&p)>>2]|0)|0))e=0;else k=21;else{e=0;k=21}}else{e=0;k=21}while(0);return e|0}function du(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))fa();t=u+4|0;s=u;c[(t&p)>>2]=0;c[(s&p)>>2]=0;if((((h|0)!=0?(a[(h&n)>>0]|0)==-102:0)?(m=c[(h&p)+44>>2]|0,(m|0)!=0):0)?(a[(m&n)+44>>0]&16)!=0:0){h=m+60|0;while(1){h=c[(h&p)>>2]|0;if((c[(h&p)>>2]|0)==(d|0))break;else h=h+24|0}l=c[(h&p)+8>>2]|0;k=(c[(l&p)>>2]|0)+72|0;if((c[(k&p)>>2]|0)!=0?(r=f+24|0,q=kh(d,c[(r&p)>>2]|0)|0,(q|0)!=0):0){m=a[(q&n)>>0]|0;if(m<<24>>24){h=q;do{a[(h&n)>>0]=a[(m&255&n)+9328>>0]|0;h=h+1|0;m=a[(h&n)>>0]|0}while(m<<24>>24!=0)}g=tc[c[(k&p)>>2]&31](l,g,q,t,s)|0;mg(d,q);if(g){h=c[(r&p)>>2]|0;if(!h){h=37;l=0}else{l=h;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;h=(l-h&1073741823)+37|0;l=0}k=mh(d,h,l)|0;if(k){fw(k|0,0,h|0)|0;m=k+0|0;l=f+0|0;h=m+36|0;do{c[(m&p)>>2]=c[(l&p)>>2];m=m+4|0;l=l+4|0}while((m|0)<(h|0));m=k+36|0;c[(k&p)+24>>2]=m;h=c[(r&p)>>2]|0;if(!h)l=1;else{l=h;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;l=(l-h&1073741823)+1|0}kw(m|0,h|0,l|0)|0;c[(k&p)+12>>2]=c[(t&p)>>2];c[(k&p)+4>>2]=c[(s&p)>>2];s=k+2|0;b[(s&o)>>1]=e[(s&o)>>1]|16}else k=f}else k=f}else k=f}else k=f;i=u;return k|0}function eu(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=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;B=i;i=i+80|0;if((i|0)>=(j|0))fa();z=B;x=B+72|0;q=B+52|0;y=B+48|0;o=B+28|0;A=Oq(b)|0;a:do if(!A)g=0;else{g=b+100|0;c[(g&p)>>2]=(c[(g&p)>>2]|0)+1;g=d+4|0;if(!(c[(g&p)>>2]&32)){s=Oq(b)|0;m=b+80|0;h=c[(m&p)>>2]|0;c[(m&p)>>2]=h+1;h=wh(s,44,h,0,0)|0}else h=-1;if((a[(b&n)+450>>0]|0)==2){l=c[(b&p)>>2]|0;m=(a[(d&n)>>0]|0)==75?29104:29112;s=c[(b&p)+468>>2]|0;c[(z&p)>>2]=(h|0)>-1?10360:29088;c[(z&p)+4>>2]=m;c[(z&p)+8>>2]=s;l=uh(l,29056,z)|0;xh(A,wh(A,157,c[(b&p)+464>>2]|0,0,0)|0,l,-1);l=d}else l=d;m=a[(l&n)>>0]|0;b:do if(m<<24>>24==75){o=d+12|0;k=kv(c[(o&p)>>2]|0)|0;a[(x&n)>>0]=k;u=b+68|0;v=c[(u&p)>>2]|0;c[(u&p)>>2]=v+1;u=d+28|0;c[(u&p)>>2]=v;t=(f|0)!=0;v=wh(A,57,v,t&1^1,0)|0;if(t)w=0;else w=Rs(c[(b&p)>>2]|0,1,1)|0;m=d+20|0;do if(!(c[(g&p)>>2]&2048)){m=c[(m&p)>>2]|0;if(m){if(!(k<<24>>24))a[(x&n)>>0]=65;if(w)c[(w&p)+20>>2]=cu(b,c[(o&p)>>2]|0)|0;f=b+19|0;k=a[(f&n)>>0]|0;if(k<<24>>24){s=k+-1<<24>>24;a[(f&n)>>0]=s;l=c[(b+((s&255)<<2)&p)+24>>2]|0;if(!(s<<24>>24))r=24;else{s=k+-2<<24>>24;a[(f&n)>>0]=s;s=c[(b+((s&255)<<2)&p)+24>>2]|0}}else{r=b+72|0;l=(c[(r&p)>>2]|0)+1|0;c[(r&p)>>2]=l;r=24}if((r|0)==24){r=b+72|0;s=(c[(r&p)>>2]|0)+1|0;c[(r&p)>>2]=s}if(t)wh(A,28,0,s,0)|0;o=c[(m&p)>>2]|0;if((o|0)>0){k=z+20|0;g=z+4|0;r=z+24|0;q=A+32|0;f=c[(m&p)+4>>2]|0;while(1){m=c[(f&p)>>2]|0;do if((h|0)>-1){c[(z&p)>>2]=0;c[(z&p)+4>>2]=0;c[(z&p)+8>>2]=0;c[(z&p)+12>>2]=0;c[(z&p)+16>>2]=0;c[(z&p)+20>>2]=0;a[(k&n)>>0]=1;c[(z&p)>>2]=78;c[(g&p)>>2]=79;c[(r&p)>>2]=0;rs(z,m)|0;if(a[(k&n)>>0]|0)break;zh(A,h);h=-1}while(0);do if(t)if(!(Ms(m,y)|0)){m=is(b,m,l)|0;wh(A,38,m,(c[(q&p)>>2]|0)+2|0,0)|0;wh(A,75,c[(u&p)>>2]|0,s,m)|0;break}else{wh(A,84,c[(u&p)>>2]|0,s,c[(y&p)>>2]|0)|0;break}else{m=is(b,m,l)|0;xh(A,wh(A,49,m,1,s)|0,x,1);dt(b,m,1);wh(A,110,c[(u&p)>>2]|0,s,0)|0}while(0);o=o+-1|0;if((o|0)<=0)break;else f=f+20|0}}_r(b,l);_r(b,s)}if(!w){k=h;g=0;break b}}else{l=c[(m&p)>>2]|0;s=c[(u&p)>>2]|0;a[(q&n)>>0]=11;c[(q&p)+4>>2]=s;c[(q&p)+8>>2]=0;c[(q&p)+12>>2]=0;a[(q&n)+1>>0]=k;c[(l&p)+8>>2]=0;if(!(ir(b,l,q)|0)){c[(w&p)+20>>2]=Ou(b,c[(o&p)>>2]|0,c[(c[((c[(l&p)>>2]|0)&p)+4>>2]&p)>>2]|0)|0;break}if(!w){g=0;break a}s=(c[(w&p)>>2]|0)+-1|0;c[(w&p)>>2]=s;if(s){g=0;break a}Wc(w);g=0;break a}while(0);xh(A,v,w,-6);k=h;g=0}else{k=c[(d&p)+20>>2]|0;l=b+72|0;g=(c[(l&p)>>2]|0)+1|0;c[(l&p)>>2]=g;a[(o&n)>>0]=0;l=o+4|0;c[(l&p)>>2]=g;a[(o&n)+1>>0]=0;f=o+8|0;c[(f&p)>>2]=0;c[(o&p)+12>>2]=0;if(m<<24>>24==119){a[(o&n)>>0]=10;c[(f&p)>>2]=g;wh(A,28,0,g,0)|0}else{a[(o&n)>>0]=3;wh(A,25,0,g,0)|0}s=k+60|0;Gk(c[(b&p)>>2]|0,c[(s&p)>>2]|0);c[(s&p)>>2]=Zq(b,132,0,0,20624)|0;c[(k&p)+8>>2]=0;if(ir(b,k,o)|0){g=0;break a}k=h;g=c[(l&p)>>2]|0}while(0);if(e)lv(A,c[(d&p)+28>>2]|0,e);if((k|0)>-1){h=c[(A&p)+32>>2]|0;if(h>>>0>k>>>0)c[((c[(A&p)+4>>2]|0)+(k*20|0)&p)+8>>2]=h;c[((c[(A&p)+24>>2]|0)&p)+88>>2]=h+-1}bu(b)}while(0);i=B;return g|0}function fu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;if((i|0)>=(j|0))fa();m=A+4|0;x=A+8|0;v=A;c[(m&p)>>2]=0;z=c[(b&p)+8>>2]|0;h=(f|0)==(g|0);l=mv(b,e,3,h?0:m)|0;a[(x&n)>>0]=nv(e)|0;o=b+100|0;c[(o&p)>>2]=(c[(o&p)>>2]|0)+1;o=b+19|0;k=a[(o&n)>>0]|0;if(!(k<<24>>24)){t=b+72|0;y=(c[(t&p)>>2]|0)+1|0;c[(t&p)>>2]=y}else{y=k+-1<<24>>24;a[(o&n)>>0]=y;y=c[(b+((y&255)<<2)&p)+24>>2]|0}k=e+12|0;Rq(b,c[(k&p)>>2]|0,y);do if((l|0)==5){t=c[(e&p)+20>>2]|0;r=cu(b,c[(k&p)>>2]|0)|0;u=xs(z)|0;s=(g|0)!=(f|0);if(s){k=a[(o&n)>>0]|0;if(!(k<<24>>24)){q=b+72|0;k=(c[(q&p)>>2]|0)+1|0;c[(q&p)>>2]=k}else{k=k+-1<<24>>24;a[(o&n)>>0]=k;k=c[(b+((k&255)<<2)&p)+24>>2]|0}wh(z,85,y,y,k)|0;q=k}else q=0;if((c[(t&p)>>2]|0)>0){o=t+4|0;m=(q|0)==0;l=z+4|0;k=z+32|0;h=0;do{e=$t(b,c[((c[(o&p)>>2]|0)+(h*20|0)&p)>>2]|0,v)|0;if(!m?(Uu(c[((c[(o&p)>>2]|0)+(h*20|0)&p)>>2]|0)|0)!=0:0)wh(z,85,q,e,q)|0;if((h|0)<((c[(t&p)>>2]|0)+-1|0)|s){xh(z,wh(z,79,y,u,e)|0,r,-4);e=c[(l&p)>>2]|0;if(e)a[(e+(((c[(k&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=a[(x&n)>>0]|0}else{xh(z,wh(z,78,y,f,e)|0,r,-4);e=c[(l&p)>>2]|0;if(e)a[(e+(((c[(k&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=d[(x&n)>>0]|0|16}_r(b,c[(v&p)>>2]|0);h=h+1|0}while((h|0)<(c[(t&p)>>2]|0))}if(q){wh(z,76,q,g,0)|0;wh(z,16,0,f,0)|0}k=c[(z&p)+24>>2]|0;h=~u;if((u|0)<0?(w=c[(k&p)+112>>2]|0,(w|0)!=0):0)c[(w+(h<<2)&p)>>2]=c[(z&p)+32>>2];c[(k&p)+88>>2]=(c[(z&p)+32>>2]|0)+-1;_r(b,q)}else{do if(Uu(c[(k&p)>>2]|0)|0){if(h){wh(z,76,y,f,0)|0;break}k=wh(z,77,y,0,0)|0;wh(z,108,c[(e&p)+28>>2]|0,f,0)|0;wh(z,16,0,g,0)|0;h=c[(z&p)+32>>2]|0;if(h>>>0>k>>>0)c[((c[(z&p)+4>>2]|0)+(k*20|0)&p)+8>>2]=h;c[((c[(z&p)+24>>2]|0)&p)+88>>2]=h+-1}while(0);if((l|0)==1){wh(z,38,y,f,0)|0;wh(z,70,c[(e&p)+28>>2]|0,f,y)|0;break}xh(z,wh(z,48,y,1,0)|0,x,1);h=c[(e&p)+28>>2]|0;if(!(c[(m&p)>>2]|0)){xh(z,wh(z,68,h,f,y)|0,1,-14);break}k=wh(z,69,h,0,y)|0;xh(z,k,1,-14);wh(z,76,c[(m&p)>>2]|0,g,0)|0;wh(z,16,0,f,0)|0;h=c[(z&p)+32>>2]|0;if(h>>>0>k>>>0)c[((c[(z&p)+4>>2]|0)+(k*20|0)&p)+8>>2]=h;c[((c[(z&p)+24>>2]|0)&p)+88>>2]=h+-1}while(0);_r(b,y);bu(b);i=A;return}function gu(f,g){f=f|0;g=g|0;var k=0,l=0,m=0,r=0,s=0,t=0.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;G=i;i=i+48|0;if((i|0)>=(j|0))fa();F=G;D=G+28|0;k=c[(f&p)+24>>2]|0;E=c[(k&p)>>2]|0;B=g+4|0;r=c[(B&p)>>2]|0;a:do if(!(r&4)){c[(B&p)>>2]=r|4;switch(d[(g&n)>>0]|0){case 122:{l=c[(g&p)+16>>2]|0;if((a[(l&n)>>0]|0)==27){r=l;l=g;m=0}else{r=c[(l&p)+16>>2]|0;m=c[((c[(g&p)+12>>2]|0)&p)+8>>2]|0}k=ov(E,m,c[((c[(l&p)+12>>2]|0)&p)+8>>2]|0,c[(r&p)+8>>2]|0,k,g)|0;break a}case 153:{A=g+20|0;x=c[(A&p)>>2]|0;if(!x)m=0;else m=c[(x&p)>>2]|0;r=a[((c[(E&p)>>2]|0)&n)+62>>0]|0;C=k+28|0;if(b[(C&o)>>1]&16){c[(F&p)>>2]=27200;th(E,27512,F)}y=c[(g&p)+8>>2]|0;if(!y)v=0;else{s=y;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;v=s-y&1073741823}l=Sh(c[(E&p)>>2]|0,y,v,m,r,0)|0;do if(!l){if(Sh(c[(E&p)>>2]|0,y,v,-2,r,0)|0){c[(F&p)>>2]=v;c[(F&p)+4>>2]=y;th(E,27392,F);y=k+24|0;c[(y&p)>>2]=(c[(y&p)>>2]|0)+1;break}if(!(a[((c[(E&p)>>2]|0)&n)+145>>0]|0)){c[(F&p)>>2]=v;c[(F&p)+4>>2]=y;th(E,27368,F);y=k+24|0;c[(y&p)>>2]=(c[(y&p)>>2]|0)+1}}else{u=(c[(l&p)+12>>2]|0)==0;z=l+2|0;do if(b[(z&o)>>1]&1024){c[(B&p)>>2]=c[(B&p)>>2]|266240;if((m|0)!=2){c[(g&p)+28>>2]=(a[(c[(l&p)+24>>2]&n)>>0]|0)==117?8388608:125829120;break}s=c[((c[(x&p)+4>>2]|0)&p)+20>>2]|0;h[(F&q)>>3]=-1.0;if((a[(s&n)>>0]|0)==-123){r=c[(s&p)+8>>2]|0;if(!r)s=0;else{s=r;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;s=s-r&1073741823}Tl(r,F,s,1)|0;t=+h[(F&q)>>3];if(!(t>1.0)){s=~~(t*134217728.0);c[(g&p)+28>>2]=s;if((s|0)>=0)break}else w=22}else w=22;if((w|0)==22)c[(g&p)+28>>2]=-1;th(E,27216,F);w=k+24|0;c[(w&p)>>2]=(c[(w&p)>>2]|0)+1}while(0);s=l+24|0;r=Sq(E,31,0,c[(s&p)>>2]|0,0)|0;if(!r){if(b[(z&o)>>1]&2048)c[(B&p)>>2]=c[(B&p)>>2]|524288;if(!u)break;s=b[(C&o)>>1]|0;if(!(s&1)){c[(F&p)>>2]=v;c[(F&p)+4>>2]=y;th(E,27328,F);y=k+24|0;c[(y&p)>>2]=(c[(y&p)>>2]|0)+1;break}b[(C&o)>>1]=s&65534;lu(f,x)|0;a[(g&n)>>0]=-101;r=g+38|0;a[(r&n)>>0]=0;b:do if(k){m=F+24|0;l=D+4|0;s=D+8|0;while(1){y=c[(k&p)+4>>2]|0;c[(F&p)>>2]=0;c[(F&p)+4>>2]=0;c[(F&p)+8>>2]=0;c[(F&p)+12>>2]=0;c[(F&p)+16>>2]=0;c[(F&p)+20>>2]=0;c[(F&p)>>2]=87;c[(m&p)>>2]=D;c[(D&p)>>2]=y;c[(l&p)>>2]=0;c[(s&p)>>2]=0;lu(F,c[(A&p)>>2]|0)|0;if((c[(l&p)>>2]|0)>0)break;if(!(c[(s&p)>>2]|0))break;a[(r&n)>>0]=(a[(r&n)>>0]|0)+1<<24>>24;k=c[(k&p)+16>>2]|0;if(!k)break b}y=k+28|0;b[(y&o)>>1]=e[(z&o)>>1]&4096|e[(y&o)>>1]|2}while(0);b[(C&o)>>1]=e[(C&o)>>1]|1;k=1;break a}else if((r|0)==1){c[(F&p)>>2]=c[(s&p)>>2];th(E,27288,F);y=k+24|0;c[(y&p)>>2]=(c[(y&p)>>2]|0)+1}a[(g&n)>>0]=101;k=1;break a}while(0);lu(f,x)|0;k=1;break a}case 135:{l=k+28|0;k=b[(l&o)>>1]|0;if(k&4){c[(F&p)>>2]=27456;th(E,27472,F);k=b[(l&o)>>1]|0}if(k&16){c[(F&p)>>2]=27456;th(E,27512,F)}break}case 27:{k=ov(E,0,0,c[(g&p)+8>>2]|0,k,g)|0;break a}case 75:case 20:case 119:{if(r&2048){s=k+20|0;l=c[(s&p)>>2]|0;m=k+28|0;r=b[(m&o)>>1]|0;if(r&4){c[(F&p)>>2]=27440;th(E,27472,F);r=b[(m&o)>>1]|0}if(r&16){c[(F&p)>>2]=27440;th(E,27512,F)}ku(f,c[(g&p)+20>>2]|0)|0;if((l|0)!=(c[(s&p)>>2]|0))c[(B&p)>>2]=c[(B&p)>>2]|32}break}default:{}}if(!(c[(E&p)+64>>2]|0))k=(a[((c[(E&p)>>2]|0)&n)+65>>0]|0)!=0?2:0;else k=2}else k=1;while(0);i=G;return k|0}function hu(d,f){d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=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,O=0,P=0;P=i;i=i+80|0;if((i|0)>=(j|0))fa();O=P;M=P+64|0;H=P+32|0;m=b[(f&o)+6>>1]|0;h=m&65535;a:do if(!(h&2)){G=c[(d&p)+24>>2]|0;N=c[(d&p)+12>>2]|0;d=c[(N&p)>>2]|0;if(!(h&16)){Ds(N,f,G);if(c[(N&p)+64>>2]|0){g=2;break}g=(a[(d&n)+65>>0]|0)!=0?2:1;break}I=f+52|0;g=(c[(I&p)>>2]|0)!=0;J=(f|0)==0;b:do if(!J){h=H+28|0;r=H+4|0;D=H+16|0;E=H+8|0;z=d+65|0;y=N+492|0;x=(G|0)==0;w=O+4|0;v=O+12|0;u=O+24|0;t=N+64|0;A=f;c:while(1){B=A+6|0;b[(B&o)>>1]=m&65535|2;c[(H&p)>>2]=0;c[(H&p)+4>>2]=0;c[(H&p)+8>>2]=0;c[(H&p)+12>>2]=0;c[(H&p)+16>>2]=0;c[(H&p)+20>>2]=0;c[(H&p)+24>>2]=0;c[(H&p)+28>>2]=0;c[(H&p)>>2]=N;if(ls(H,c[(A&p)+60>>2]|0)|0){g=2;break a}if(ls(H,c[(A&p)+64>>2]|0)|0){g=2;break a}m=c[(A&p)+32>>2]|0;if(b[(B&o)>>1]&8192){C=A+48|0;c[((c[(m&p)+28>>2]|0)&p)+48>>2]=c[(C&p)>>2];c[(C&p)>>2]=0}C=A+32|0;if((c[(m&p)>>2]|0)>0){s=0;do{k=c[(m+(s*72|0)&p)+28>>2]|0;if(k){d=c[(y&p)>>2]|0;if(x)q=0;else{q=0;l=G;do{q=(c[(l&p)+20>>2]|0)+q|0;l=c[(l&p)+16>>2]|0}while((l|0)!=0)}l=c[(m+(s*72|0)&p)+16>>2]|0;if(l)c[(y&p)>>2]=l;c[(O&p)>>2]=0;c[(O&p)+4>>2]=0;c[(O&p)+8>>2]=0;c[(O&p)+12>>2]=0;c[(O&p)+16>>2]=0;c[(O&p)+20>>2]=0;c[(O&p)>>2]=82;c[(w&p)>>2]=83;c[(v&p)>>2]=N;c[(u&p)>>2]=G;ku(O,k)|0;c[(y&p)>>2]=d;if(c[(t&p)>>2]|0){g=2;break a}if(a[(z&n)>>0]|0){g=2;break a}if(!x){l=G;do{q=q-(c[(l&p)+20>>2]|0)|0;l=c[(l&p)+16>>2]|0}while((l|0)!=0)}m=m+(s*72|0)+45|0;a[(m&n)>>0]=a[(m&n)>>0]&-3|((q|0)!=0&1)<<1&255;m=c[(C&p)>>2]|0}s=s+1|0}while((s|0)<(c[(m&p)>>2]|0))}b[(h&o)>>1]=1;c[(r&p)>>2]=m;c[(D&p)>>2]=G;q=c[(A&p)>>2]|0;if((c[(q&p)>>2]|0)>0){m=q+4|0;l=0;do{if(ls(H,c[((c[(m&p)>>2]|0)+(l*20|0)&p)>>2]|0)|0){g=2;break a}l=l+1|0}while((l|0)<(c[(q&p)>>2]|0))}k=c[(A&p)+40>>2]|0;m=(k|0)!=0;q=b[(h&o)>>1]|0;if(!m?(F=q&65535,(F&2|0)==0):0)b[(h&o)>>1]=F&65534;else b[(B&o)>>1]=q&4096|e[(B&o)>>1]|4;q=c[(A&p)+44>>2]|0;if(!((q|0)==0|m)){K=32;break}c[(E&p)>>2]=c[(A&p)>>2];if(ls(H,q)|0){g=2;break a}if(ls(H,c[(A&p)+36>>2]|0)|0){g=2;break a}c[(D&p)>>2]=0;b[(h&o)>>1]=e[(h&o)>>1]|1;if(b[(B&o)>>1]&8192){C=(c[((c[(C&p)>>2]|0)&p)+28>>2]|0)+48|0;c[(A&p)+48>>2]=c[(C&p)>>2];c[(C&p)>>2]=0}if(!g?(qv(H,A,c[(A&p)+48>>2]|0,26880)|0)!=0:0){g=2;break a}if(a[(z&n)>>0]|0){g=2;break a}do if(m){if(qv(H,A,k,26888)|0){g=2;break a}if(a[(z&n)>>0]|0){g=2;break a}l=c[(k&p)>>2]|0;if((l|0)<=0)break;q=0;m=c[(k&p)+4>>2]|0;while(1){if(c[((c[(m&p)>>2]|0)&p)+4>>2]&2){K=46;break c}q=q+1|0;if((q|0)>=(l|0))break;else m=m+20|0}}while(0);l=c[(A&p)+52>>2]|0;if(!l)break b;A=l;m=b[(l&o)+6>>1]|0}if((K|0)==32){th(N,26832,O);g=2;break a}else if((K|0)==46){th(N,26896,O);g=2;break a}}while(0);if(g?(L=c[(f&p)+48>>2]|0,(L|0)!=0):0){F=c[(N&p)>>2]|0;h=c[(L&p)>>2]|0;if((h|0)>(c[(F&p)+96>>2]|0)){th(N,26960,O);g=2;break}if((h|0)>0){d=L+4|0;g=0;do{h=(c[(d&p)>>2]|0)+(g*20|0)+13|0;a[(h&n)>>0]=a[(h&n)>>0]&-2;g=g+1|0;h=c[(L&p)>>2]|0}while((g|0)<(h|0))}c[(f&p)+56>>2]=0;g=c[(I&p)>>2]|0;if(!g)if(J)d=L+4|0;else K=60;else while(1){c[(g&p)+56>>2]=f;f=c[(g&p)+52>>2]|0;if(!f){f=g;K=60;break}else{E=g;g=f;f=E}}d:do if((K|0)==60){d=L+4|0;x=F+65|0;y=O+4|0;z=O+8|0;A=O+28|0;B=O+24|0;C=O+4|0;w=f;e:while(1){v=c[(w&p)>>2]|0;if((h|0)<=0)break d;t=w+32|0;g=0;s=0;u=c[(d&p)>>2]|0;while(1){c[(M&p)>>2]=-1;r=u+13|0;do if(!(a[(r&n)>>0]&1)){h=c[(u&p)>>2]|0;f:do if(!h)h=0;else while(1){f=c[(h&p)+4>>2]|0;if(!(f&4096))break f;if(!(f&262144))h=h+12|0;else h=c[((c[(h&p)+20>>2]|0)&p)+4>>2]|0;h=c[(h&p)>>2]|0;if(!h){h=0;break}}while(0);if(!(Ms(h,M)|0)){f=rv(v,h)|0;c[(M&p)>>2]=f;if(!f){q=Mr(F,h,0,0)|0;if(!(a[(x&n)>>0]|0)){k=c[(w&p)>>2]|0;c[(O&p)>>2]=0;c[(O&p)+4>>2]=0;c[(O&p)+8>>2]=0;c[(O&p)+12>>2]=0;c[(O&p)+16>>2]=0;c[(O&p)+20>>2]=0;c[(O&p)+24>>2]=0;c[(O&p)+28>>2]=0;c[(O&p)>>2]=N;c[(y&p)>>2]=c[(t&p)>>2];c[(z&p)>>2]=k;b[(A&o)>>1]=1;c[(B&p)>>2]=0;D=(c[(N&p)>>2]|0)+68|0;f=a[(D&n)>>0]|0;a[(D&n)>>0]=1;E=ls(O,q)|0;a[(D&n)>>0]=f;g:do if(!E){m=k+4|0;l=c[(k&p)>>2]|0;k=0;while(1){if((k|0)>=(l|0)){f=0;break g}f=k+1|0;if((Cu(c[((c[(m&p)>>2]|0)+(k*20|0)&p)>>2]|0,q,-1)|0)<2)break;else k=f}}else f=0;while(0);c[(M&p)>>2]=f}else f=0;Gk(F,q)}if((f|0)<=0){f=1;break}}else{k=c[(M&p)>>2]|0;f=c[(v&p)>>2]|0;if((k|0)<1|(k|0)>(f|0))break e;else f=k}c[(O&p)>>2]=0;c[(C&p)>>2]=0;k=nr(F,132,O,0)|0;if(!k){g=2;break a}l=k+4|0;c[(l&p)>>2]=c[(l&p)>>2]|1024;c[(k&p)+8>>2]=f;l=c[(u&p)>>2]|0;if((l|0)==(h|0))c[(u&p)>>2]=k;else c[(l&p)+12>>2]=k;Gk(F,h);b[(u&o)+16>>1]=f;a[(r&n)>>0]=a[(r&n)>>0]|1;f=s}else f=s;while(0);g=g+1|0;h=c[(L&p)>>2]|0;if((g|0)>=(h|0))break;else{s=f;u=u+20|0}}w=c[(w&p)+56>>2]|0;if(!((w|0)!=0&(f|0)!=0))break d}c[(O&p)>>2]=g+1;c[(O&p)+4>>2]=26880;c[(O&p)+8>>2]=f;th(N,27064,O);g=2;break a}while(0);f=0;while(1){if((f|0)>=(h|0)){g=1;break a}g=f+1|0;if(!(a[((c[(d&p)>>2]|0)+(f*20|0)&n)+13>>0]&1))break;else f=g}c[(O&p)>>2]=g;th(N,27e3,O);g=2}else g=1}else g=1;while(0);i=P;return g|0}function iu(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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;C=i;i=i+16|0;if((i|0)>=(j|0))fa();z=C;A=c[(e&p)>>2]|0;a:do if(f){v=c[(f&p)>>2]|0;e=v*24|0;k=mh(A,e,0)|0;if(k)fw(k|0,0,e|0)|0;b[(g&o)>>1]=v;c[(h&p)>>2]=k;if((v|0)>0){t=f+4|0;w=A+65|0;e=0;u=k;while(1){r=c[(t&p)>>2]|0;f=c[(r+(e*20|0)&p)>>2]|0;b:do if(!f)f=0;else while(1){l=c[(f&p)+4>>2]|0;if(!(l&4096))break b;if(!(l&262144))f=f+12|0;else f=c[((c[(f&p)+20>>2]|0)&p)+4>>2]|0;f=c[(f&p)>>2]|0;if(!f){f=0;break}}while(0);l=c[(r+(e*20|0)&p)+4>>2]|0;do if(!l){while(1){l=a[(f&n)>>0]|0;if(l<<24>>24==27){B=24;break}else if(l<<24>>24==-102){y=f;B=18;break}else if(l<<24>>24!=122)break;f=c[(f&p)+16>>2]|0}if((B|0)==24){B=0;c[(z&p)>>2]=c[(f&p)+8>>2];f=uh(A,10344,z)|0;break}if((B|0)==18?(B=0,x=c[(y&p)+44>>2]|0,(x|0)!=0):0){f=b[(y&o)+32>>1]|0;if(f<<16>>16<0)f=b[(x&o)+36>>1]|0;else f=f<<16>>16;if((f|0)>-1)f=c[((c[(x&p)+4>>2]|0)+(f*24|0)&p)>>2]|0;else f=20456;c[(z&p)>>2]=f;f=uh(A,10344,z)|0;break}c[(z&p)>>2]=c[(r+(e*20|0)&p)+8>>2];f=uh(A,10344,z)|0}else f=kh(A,l)|0;while(0);if(a[(w&n)>>0]|0)break;if(!f){q=0;f=0}else{l=f;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;q=l-f&1073741823}c:do if((e|0)>0){l=0;r=0;s=q;while(1){if(!(dd(c[(k+(r*24|0)&p)>>2]|0,f)|0)){m=s;while(1){q=m+-1|0;if((q|0)<=1)break;if(((d[(f+q&n)>>0]|0)+-48|0)>>>0<10)m=q;else break}if((m|0)>0)m=(a[(f+q&n)>>0]|0)==58?q:s;else m=s;a[(f+m&n)>>0]=0;l=l+1|0;c[(z&p)>>2]=f;c[(z&p)+4>>2]=l;q=uh(A,26824,z)|0;mg(A,f);if(!q){f=0;break c}else{r=-1;f=q}}else m=s;r=r+1|0;if((r|0)>=(e|0))break;else s=m}}while(0);c[(u&p)>>2]=f;e=e+1|0;if((e|0)<(v|0))u=u+24|0;else{f=w;break a}}mg(A,f);f=w}else B=6}else{b[(g&o)>>1]=0;c[(h&p)>>2]=0;k=0;B=6}while(0);if((B|0)==6){f=A+65|0;e=0}if(a[(f&n)>>0]|0){if((e|0)>0){f=0;do{mg(A,c[(k+(f*24|0)&p)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}mg(A,k);c[(h&p)>>2]=0;b[(g&o)>>1]=0}i=C;return}function ju(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+32|0;if((i|0)>=(j|0))fa();t=u;s=c[(e&p)>>2]|0;if(!(a[(s&n)+65>>0]|0)){c[(t&p)>>2]=0;c[(t&p)+4>>2]=0;c[(t&p)+8>>2]=0;c[(t&p)+12>>2]=0;c[(t&p)+16>>2]=0;c[(t&p)+20>>2]=0;c[(t&p)+24>>2]=0;c[(t&p)+28>>2]=0;c[(t&p)+4>>2]=c[(g&p)+32>>2];m=c[((c[(g&p)>>2]|0)&p)+4>>2]|0;l=f+38|0;if((b[(l&o)>>1]|0)>0){g=0;h=0;q=0;r=c[(f&p)+4>>2]|0;while(1){k=c[(m+(q*20|0)&p)>>2]|0;v=r+22|0;c[(r&p)+12>>2]=kh(s,yu(t,k,v)|0)|0;g=jw(d[(v&n)>>0]|0,0,g|0,h|0)|0;h=G;v=kv(k)|0;a[(r&n)+21>>0]=v<<24>>24==0?65:v;k=cu(e,k)|0;if(k)c[(r&p)+16>>2]=kh(s,c[(k&p)>>2]|0)|0;q=q+1|0;if((q|0)>=(b[(l&o)>>1]|0))break;else r=r+24|0}h=iw(g|0,h|0,2)|0;g=G}else{h=0;g=0}b[(f&o)+42>>1]=fs(h,g)|0}i=u;return}function ku(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;do if(!b)d=0;else{g=a+4|0;e=c[(g&p)>>2]|0;if((e|0)==0?(c[(a&p)+8>>2]|0)==0:0){d=0;break}j=a+16|0;c[(j&p)>>2]=(c[(j&p)>>2]|0)+1;h=a+8|0;a:while(1){if((e|0)!=0?(d=rc[e&127](a,b)|0,(d|0)!=0):0){k=24;break}if(lu(a,c[(b&p)>>2]|0)|0){k=19;break}if(rs(a,c[(b&p)+36>>2]|0)|0){k=19;break}if(lu(a,c[(b&p)+40>>2]|0)|0){k=19;break}if(rs(a,c[(b&p)+44>>2]|0)|0){k=19;break}if(lu(a,c[(b&p)+48>>2]|0)|0){k=19;break}if(rs(a,c[(b&p)+60>>2]|0)|0){k=19;break}if(rs(a,c[(b&p)+64>>2]|0)|0){k=19;break}e=c[(b&p)+32>>2]|0;if((e|0)!=0?(i=c[(e&p)>>2]|0,(i|0)>0):0){f=i;e=e+8|0;while(1){if(ku(a,c[(e&p)+20>>2]|0)|0){k=19;break a}f=f+-1|0;if((f|0)<=0)break;else e=e+72|0}}e=c[(h&p)>>2]|0;if(e)jc[e&15](a,b);b=c[(b&p)+52>>2]|0;if(!b){d=0;break}e=c[(g&p)>>2]|0}if((k|0)==19){c[(j&p)>>2]=(c[(j&p)>>2]|0)+-1;d=2;break}else if((k|0)==24)d=d&2;c[(j&p)>>2]=(c[(j&p)>>2]|0)+-1}while(0);return d|0}function lu(a,b){a=a|0;b=b|0;var d=0;a:do if((b|0)!=0?(d=c[(b&p)>>2]|0,(d|0)>0):0){b=c[(b&p)+4>>2]|0;while(1){if(rs(a,c[(b&p)>>2]|0)|0){d=2;break a}d=d+-1|0;if((d|0)<=0){d=0;break}else b=b+20|0}}else d=0;while(0);return d|0}function mu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))fa();b=d;c[(b&p)>>2]=0;if((c[(a&p)+4>>2]&1|0)==0?(Ms(a,b)|0)!=0:0)a=(c[(b&p)>>2]|0)==0&1;else a=0;i=d;return a|0}function nu(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+32|0;if((i|0)>=(j|0))fa();t=v;l=c[(g&p)+12>>2]|0;c[(t&p)>>2]=0;c[(t&p)+4>>2]=0;c[(t&p)+8>>2]=0;c[(t&p)+12>>2]=0;c[(t&p)+16>>2]=0;c[(t&p)+20>>2]=200;a[(t&n)+24>>0]=1;a[(t&n)+25>>0]=0;c[(t&p)>>2]=c[(d&p)>>2];r=g+46|0;if(b[(r&o)>>1]|0){s=g+4|0;m=l+4|0;u=0;do{q=c[((c[(m&p)>>2]|0)+((b[((c[(s&p)>>2]|0)+(u<<1)&o)>>1]|0)*24|0)&p)>>2]|0;if(u)Sk(t,28920,2);k=c[(l&p)>>2]|0;if(!k)h=0;else{h=k;while(1)if(!(a[(h&n)>>0]|0))break;else h=h+1|0;h=h-k&1073741823}Sk(t,k,h);Sk(t,28928,1);if(!q)h=0;else{h=q;while(1)if(!(a[(h&n)>>0]|0))break;else h=h+1|0;h=h-q&1073741823}Sk(t,q,h);u=u+1|0}while((u|0)<(e[(r&o)>>1]|0))}u=tg(t)|0;zs(d,(a[(g&n)+51>>0]&3)==2?1555:2067,f,u,-1,2);i=v;return}function ou(a,b){a=a|0;b=b|0;return 0}function pu(d,f){d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))fa();t=u+8|0;r=u;s=f+52|0;a:do if((c[(s&p)>>2]|0)!=0?(h=c[(f&p)+48>>2]|0,!((h|0)==0|(f|0)==0)):0){g=f;while(1){q=a[(g&n)+4>>0]|0;if(!(q<<24>>24==119|q<<24>>24==116))break;g=c[(g&p)+52>>2]|0;if(!g){g=0;break a}}k=c[(h&p)+4>>2]|0;g=c[(h&p)>>2]|0;while(1){h=g+-1|0;if((g|0)<=0){g=0;break a}if(!(c[((c[(k+(h*20|0)&p)>>2]|0)&p)+4>>2]&256))g=h;else break}if((g|0)>=1){g=c[(d&p)+12>>2]|0;l=c[(g&p)>>2]|0;d=mh(l,72,0)|0;if(d){m=d+0|0;q=m+72|0;do{a[(m&n)>>0]=0;m=m+1|0}while((m|0)<(q|0));k=r;c[(k&p)>>2]=0;c[(k&p)+4>>2]=0;k=jr(g,0,0,0,r,d,0,0)|0;if(k){m=d+0|0;h=f+0|0;q=m+72|0;do{c[(m&p)>>2]=c[(h&p)>>2];m=m+4|0;h=h+4|0}while((m|0)<(q|0));c[(f&p)+32>>2]=k;c[(t&p)>>2]=0;c[(t&p)+4>>2]=0;c[(f&p)>>2]=lr(g,0,nr(l,116,t,0)|0)|0;a[(f&n)+4>>0]=119;c[(f&p)+36>>2]=0;c[(d&p)+40>>2]=0;c[(d&p)+44>>2]=0;c[(d&p)+48>>2]=0;c[(s&p)>>2]=0;c[(f&p)+56>>2]=0;g=f+6|0;b[(g&o)>>1]=(e[(g&o)>>1]|0)&57279|8192;c[((c[(d&p)+52>>2]|0)&p)+56>>2]=d;c[(d&p)+60>>2]=0;c[(d&p)+64>>2]=0;g=0}else g=2}else g=2}else g=0}else g=0;while(0);i=u;return g|0}function qu(f,g){f=f|0;g=g|0;var h=0,k=0,l=0,m=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,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;_=i;i=i+32|0;if((i|0)>=(j|0))fa();Z=_;W=_+16|0;J=f+12|0;Y=c[(J&p)>>2]|0;X=c[(Y&p)>>2]|0;U=g+6|0;q=e[(U&o)>>1]|0;b[(U&o)>>1]=q|16;V=X+65|0;a:do if(!(a[(V&n)>>0]|0)){I=g+32|0;S=c[(I&p)>>2]|0;if((S|0)!=0&(q&16|0)==0){T=c[(g&p)>>2]|0;if((c[(f&p)+8>>2]|0)==9){q=g;while(1){m=c[(q&p)+56>>2]|0;if(!m)break;else q=m}q=c[(q&p)+68>>2]|0;if(q){F=Y+532|0;c[(q&p)+4>>2]=c[(F&p)>>2];c[(F&p)>>2]=q;a[(Y&n)+449>>0]=0}}Cs(Y,S);R=S+8|0;q=c[(S&p)>>2]|0;b:do if((q|0)>0){E=0;y=R;c:while(1){if(!(a[(y&n)+37>>0]&8)){F=y+16|0;h=c[(J&p)>>2]|0;if(c[(F&p)>>2]|0){k=h;Q=10;break}v=c[(h&p)>>2]|0;m=h+532|0;r=c[(m&p)>>2]|0;d:do if((c[(y&p)+4>>2]|0)==0?(H=c[(y&p)+8>>2]|0,!((H|0)==0|(r|0)==0)):0){e:while(1){s=c[(r&p)>>2]|0;if((s|0)>0){l=0;do{q=r+(l<<4)+8|0;k=c[(q&p)>>2]|0;if(!(dd(H,k)|0)){C=l;break e}l=l+1|0}while((l|0)<(s|0))}r=c[(r&p)+4>>2]|0;if(!r){Q=46;break d}}z=r+(C<<4)+20|0;s=c[(z&p)>>2]|0;if(s){g=s;Q=21;break c}B=mh(v,76,0)|0;if(!B){g=F;Q=23;break c}t=B+0|0;s=t+76|0;do{a[(t&n)>>0]=0;t=t+1|0}while((t|0)<(s|0));c[(F&p)>>2]=B;w=B+40|0;b[(w&o)>>1]=1;c[(B&p)>>2]=kh(v,c[(q&p)>>2]|0)|0;b[(B&o)+36>>1]=-1;b[(B&o)+28>>1]=200;D=B+44|0;a[(D&n)>>0]=d[(D&n)>>0]|2;D=gr(v,c[(r+(C<<4)&p)+16>>2]|0,0)|0;c[(y&p)+20>>2]=D;if(a[(v&n)+65>>0]|0){g=2;break a}A=((a[(D&n)+4>>0]|0)+-115&255)<2;if(A?(x=c[(D&p)+32>>2]|0,G=c[(x&p)>>2]|0,(G|0)>0):0){s=D+6|0;t=G;v=0;do{do if(!(c[(x+(v*72|0)&p)+12>>2]|0)){u=c[(x+(v*72|0)&p)+16>>2]|0;if(!u)break;if(dd(u,c[(q&p)>>2]|0)|0)break;c[(x+(v*72|0)&p)+24>>2]=B;t=x+(v*72|0)+45|0;a[(t&n)>>0]=a[(t&n)>>0]|8;b[(w&o)>>1]=(b[(w&o)>>1]|0)+1<<16>>16;b[(s&o)>>1]=e[(s&o)>>1]|2048;t=c[(x&p)>>2]|0}while(0);v=v+1|0}while((v|0)<(t|0))}if((e[(w&o)>>1]|0)>2){g=q;Q=34;break c}c[(z&p)>>2]=28176;l=c[(m&p)>>2]|0;c[(m&p)>>2]=r;if(A)s=c[(D&p)+52>>2]|0;else s=D;ku(f,s)|0;s=D;while(1){k=c[(s&p)+52>>2]|0;if(!k)break;else s=k}k=c[(s&p)>>2]|0;s=c[(r+(C<<4)&p)+12>>2]|0;do if(s){if(!k)break;u=c[(k&p)>>2]|0;k=c[(s&p)>>2]|0;if((u|0)!=(k|0)){g=u;Q=42;break c}}else s=k;while(0);iu(h,s,B+38|0,B+4|0);if(A){c[(z&p)>>2]=(b[(D&o)+6>>1]&2048)==0?28280:28240;ku(f,D)|0}c[(z&p)>>2]=0;c[(m&p)>>2]=l;if(!(c[(F&p)>>2]|0))Q=46}else Q=46;while(0);do if((Q|0)==46){Q=0;if(!(c[(y&p)+8>>2]|0)){r=c[(y&p)+20>>2]|0;if(ku(f,r)|0){g=2;break a}m=mh(X,76,0)|0;if(!m){g=F;Q=49;break c}t=m+0|0;s=t+76|0;do{a[(t&n)>>0]=0;t=t+1|0}while((t|0)<(s|0));c[(F&p)>>2]=m;b[(m&o)+40>>1]=1;c[(Z&p)>>2]=m;c[(m&p)>>2]=uh(X,27760,Z)|0;while(1){q=c[(r&p)+52>>2]|0;if(!q)break;else r=q}iu(Y,c[(r&p)>>2]|0,m+38|0,m+4|0);b[(m&o)+36>>1]=-1;b[(m&o)+28>>1]=200;F=m+44|0;a[(F&n)>>0]=d[(F&n)>>0]|2;break}h=Ur(Y,0,y)|0;c[(F&p)>>2]=h;if(!h){g=2;break a}r=h+40|0;q=b[(r&o)>>1]|0;if(q<<16>>16==-1){g=F;Q=55;break c}b[(r&o)>>1]=q+1<<16>>16;r=h+12|0;if((c[(r&p)>>2]|0)==0?(a[(h&n)+44>>0]&16)==0:0)break;if(hr(Y,h)|0){g=2;break a}F=gr(X,c[(r&p)>>2]|0,0)|0;c[(y&p)+20>>2]=F;ku(f,F)|0}while(0);if(Rt(Y,y)|0){g=2;break a}q=c[(S&p)>>2]|0}E=E+1|0;if((E|0)>=(q|0))break b;else y=y+72|0}if((Q|0)==10){while(1){h=c[(g&p)+56>>2]|0;if(!h)break;else g=h}g=c[(g&p)+68>>2]|0;if(!g){g=1;break a}c[(k&p)+532>>2]=c[(g&p)+4>>2];g=1;break a}else if((Q|0)==21){c[(Z&p)>>2]=k;th(h,g,Z);g=2;break a}else if((Q|0)==23){c[(g&p)>>2]=0;g=2;break a}else if((Q|0)==34){c[(Z&p)>>2]=c[(g&p)>>2];th(h,28128,Z);g=2;break a}else if((Q|0)==42){c[(Z&p)>>2]=c[(q&p)>>2];c[(Z&p)+4>>2]=g;c[(Z&p)+8>>2]=k;th(h,28200,Z);c[(m&p)>>2]=l;g=2;break a}else if((Q|0)==49){c[(g&p)>>2]=0;g=2;break a}else if((Q|0)==55){c[(Z&p)>>2]=c[(h&p)>>2];th(Y,27776,Z);c[(g&p)>>2]=0;g=2;break a}}while(0);if(!(a[(V&n)>>0]|0)){y=c[(I&p)>>2]|0;f:do if(((c[(y&p)>>2]|0)+-1|0)>0){z=g+36|0;B=0;C=y+8|0;D=y+80|0;g:while(1){A=c[(D&p)+16>>2]|0;if(!((c[(C&p)+16>>2]|0)==0|(A|0)==0)){G=d[(D&n)+36>>0]|0;x=G&32;v=(x|0)==0;x=x>>>5;w=D+44|0;if(G&4){if(c[(w&p)>>2]|0){Q=73;break}q=D+48|0;if(c[(q&p)>>2]|0){Q=73;break}k=A+38|0;r=b[(k&o)>>1]|0;if(r<<16>>16>0){h=A+4|0;u=B+1|0;t=0;do{m=c[((c[(h&p)>>2]|0)+(t*24|0)&p)>>2]|0;l=0;do{s=sv(c[(y+(l*72|0)&p)+24>>2]|0,m)|0;if((s|0)>-1){r=l;Q=77;break}l=l+1|0}while((l|0)<(u|0));if((Q|0)==77){Q=0;tv(Y,y,r,s,u,t,x,z);r=b[(k&o)>>1]|0}t=t+1|0}while((t|0)<(r<<16>>16|0))}}else q=D+48|0;r=c[(w&p)>>2]|0;if(r){if(c[(q&p)>>2]|0){Q=81;break}if(!v){uv(r,c[(D&p)+40>>2]|0);r=c[(w&p)>>2]|0}c[(z&p)>>2]=ss(c[(Y&p)>>2]|0,c[(z&p)>>2]|0,r)|0;c[(w&p)>>2]=0}m=c[(q&p)>>2]|0;if((m|0)!=0?(P=m+4|0,(c[(P&p)>>2]|0)>0):0){l=B+1|0;s=0;do{h=c[((c[(m&p)>>2]|0)+(s<<3)&p)>>2]|0;k=sv(A,h)|0;if((k|0)<0){Q=91;break g}else r=0;while(1){q=sv(c[(y+(r*72|0)&p)+24>>2]|0,h)|0;if((q|0)>-1)break;r=r+1|0;if((r|0)>=(l|0)){Q=91;break g}}tv(Y,y,r,q,l,k,x,z);s=s+1|0}while((s|0)<(c[(P&p)>>2]|0))}}B=B+1|0;if((B|0)>=((c[(y&p)>>2]|0)+-1|0))break f;else{C=C+72|0;D=D+72|0}}if((Q|0)==73){c[(Z&p)>>2]=0;th(Y,27928,Z);g=2;break a}else if((Q|0)==81){th(Y,27984,Z);g=2;break a}else if((Q|0)==91){c[(Z&p)>>2]=h;th(Y,28040,Z);g=2;break a}}while(0);h=c[(T&p)>>2]|0;r=(h|0)>0;h:do if(r){k=c[(T&p)+4>>2]|0;q=0;do{m=c[(k+(q*20|0)&p)>>2]|0;l=a[(m&n)>>0]|0;if(l<<24>>24==122){if((a[(c[(m&p)+16>>2]&n)>>0]|0)==116)break h}else if(l<<24>>24==116)break h;q=q+1|0}while((q|0)<(h|0))}else q=0;while(0);if((q|0)<(h|0)){P=c[(T&p)+4>>2]|0;q=c[((c[(Y&p)>>2]|0)&p)+24>>2]|0;if(!(q&32))O=0;else O=(q&64|0)==0;if(r){K=X+20|0;L=X+16|0;M=W+4|0;N=0;h=0;do{m=P+(N*20|0)|0;r=c[(m&p)>>2]|0;q=a[(r&n)>>0]|0;if(q<<24>>24==116){f=0;Q=110}else if(q<<24>>24==122?(a[(c[(r&p)+16>>2]&n)>>0]|0)==116:0){f=c[((c[(r&p)+12>>2]|0)&p)+8>>2]|0;Q=110}else Q=106;do if((Q|0)==106){h=lr(Y,h,r)|0;if(h){F=P+(N*20|0)+4|0;E=(c[(h&p)>>2]|0)+-1|0;D=c[(h&p)+4>>2]|0;c[(D+(E*20|0)&p)+4>>2]=c[(F&p)>>2];G=P+(N*20|0)+8|0;c[(D+(E*20|0)&p)+8>>2]=c[(G&p)>>2];c[(F&p)>>2]=0;c[(G&p)>>2]=0}c[(m&p)>>2]=0}else if((Q|0)==110){if((c[(S&p)>>2]|0)>0){G=(f|0)==0;H=(f|0)!=0;I=0;J=R;q=0;while(1){v=c[(J&p)+16>>2]|0;m=c[(J&p)+20>>2]|0;r=c[(J&p)+12>>2]|0;if(!r)r=c[(v&p)>>2]|0;if(a[(V&n)>>0]|0)break;if((m|0)!=0?(b[(m&o)+6>>1]&512)!=0:0){F=0;Q=125}else Q=117;do if((Q|0)==117){Q=0;if(!G?(dd(f,r)|0)!=0:0)break;s=c[(v&p)+68>>2]|0;if(!s){m=0;F=27816;Q=125;break}l=c[(K&p)>>2]|0;t=c[(L&p)>>2]|0;if((l|0)>0){k=0;while(1){m=k+1|0;if((c[(t+(k<<4)&p)+12>>2]|0)==(s|0)){m=k;break}if((m|0)<(l|0))k=m;else break}if((m|0)>-1)l=m;else{m=0;F=27816;Q=125;break}}else l=0;m=0;F=c[(t+(l<<4)&p)>>2]|0;Q=125}while(0);do if((Q|0)==125){Q=0;E=v+38|0;w=b[(E&o)>>1]|0;if(w<<16>>16<=0)break;A=v+4|0;z=(m|0)!=0;t=H&z;B=(I|0)>0;u=B&G;y=J+36|0;B=B^1;x=J+48|0;s=(F|0)==0;C=0;do{v=c[(A&p)>>2]|0;k=c[(v+(C*24|0)&p)>>2]|0;if(!(t?(vv(c[((c[((c[(m&p)>>2]|0)&p)+4>>2]|0)+(C*20|0)&p)+8>>2]|0,0,f,0)|0)==0:0))Q=129;i:do if((Q|0)==129){Q=0;if(a[(v+(C*24|0)&n)+23>>0]&2)break;if(u){if(!((a[(y&n)>>0]&4)==0|B)){v=0;do{if((sv(c[(S+(v*72|0)&p)+24>>2]|0,k)|0)>-1){q=1;break i}v=v+1|0}while((v|0)<(I|0))}if((wv(c[(x&p)>>2]|0,k)|0)>-1){q=1;break}}w=tt(X,27,k)|0;if(!O?(c[(S&p)>>2]|0)<=1:0){l=k;D=0}else Q=137;do if((Q|0)==137){Q=0;w=Zq(Y,122,tt(X,27,r)|0,w,0)|0;if(!s)w=Zq(Y,122,tt(X,27,F)|0,w,0)|0;if(!O){l=k;D=0;break}c[(Z&p)>>2]=r;c[(Z&p)+4>>2]=k;D=uh(X,27824,Z)|0;l=D}while(0);h=lr(Y,h,w)|0;c[(W&p)>>2]=l;if(!l)w=0;else{w=l;while(1)if(!(a[(w&n)>>0]|0))break;else w=w+1|0;w=w-l&1073741823}c[(M&p)>>2]=w;mr(Y,h,W,0);do if(h){if(!(b[(U&o)>>1]&512))break;v=(c[(h&p)>>2]|0)+-1|0;k=c[(h&p)+4>>2]|0;if(z)w=kh(X,c[((c[((c[(m&p)>>2]|0)&p)+4>>2]|0)+(C*20|0)&p)+8>>2]|0)|0;else{c[(Z&p)>>2]=F;c[(Z&p)+4>>2]=r;c[(Z&p)+8>>2]=l;w=uh(X,27832,Z)|0}c[(k+(v*20|0)&p)+8>>2]=w;w=k+(v*20|0)+13|0;a[(w&n)>>0]=a[(w&n)>>0]|2}while(0);mg(X,D);w=b[(E&o)>>1]|0;q=1}while(0);C=C+1|0}while((C|0)<(w<<16>>16|0))}while(0);I=I+1|0;if((I|0)>=(c[(S&p)>>2]|0))break;else J=J+72|0}if(q)break}if(!f){th(Y,27872,Z);break}else{c[(Z&p)>>2]=f;th(Y,27848,Z);break}}while(0);N=N+1|0}while((N|0)<(c[(T&p)>>2]|0))}else h=0;Nk(X,T);c[(g&p)>>2]=h}else h=c[(g&p)>>2]|0;if((h|0)!=0?(c[(h&p)>>2]|0)>(c[(X&p)+96>>2]|0):0){th(Y,27896,Z);g=0}else g=0}else g=2}else g=1}else g=2;while(0);i=_;return g|0}function ru(a,b){a=a|0;b=b|0;var d=0;d=c[(a&p)+12>>2]|0;while(1){a=c[(b&p)+56>>2]|0;if(!a)break;else b=a}b=c[(b&p)+68>>2]|0;if(b)c[(d&p)+532>>2]=c[(b&p)+4>>2];return}function su(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;h=f+6|0;i=e[(h&o)>>1]|0;if((i&32|0)==0?(b[(h&o)>>1]=i|32,l=c[(d&p)+12>>2]|0,j=c[(f&p)+32>>2]|0,g=c[(j&p)>>2]|0,(g|0)>0):0){f=0;h=j+8|0;while(1){d=c[(h&p)+16>>2]|0;if(((d|0)!=0?(a[(d&n)+44>>0]&2)!=0:0)?(k=c[(h&p)+20>>2]|0,(k|0)!=0):0){g=k;while(1){i=c[(g&p)+52>>2]|0;if(!i)break;else g=i}ju(l,d,g);g=c[(j&p)>>2]|0}f=f+1|0;if((f|0)>=(g|0))break;else h=h+72|0}}return}function tu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)!=0?(d=c[(a&p)>>2]|0,(d|0)>0):0){g=c[(a&p)+4>>2]|0;f=0;do{e=c[(g+(f*20|0)&p)>>2]|0;if((e|0)!=0?(h=c[(e&p)+24>>2]|0,(h|0)>(c[(b&p)>>2]|0)):0){c[(b&p)>>2]=h;d=c[(a&p)>>2]|0}f=f+1|0}while((f|0)<(d|0))}return}function uu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if(((b|0)!=0?(Gs(a,c[(b&p)>>2]|0,d,e),Gs(a,c[(b&p)+40>>2]|0,d,e),Gs(a,c[(b&p)+48>>2]|0,d,e),g=b+44|0,c[(g&p)>>2]=Hs(a,c[(g&p)>>2]|0,d,e)|0,g=b+36|0,c[(g&p)>>2]=Hs(a,c[(g&p)>>2]|0,d,e)|0,uu(a,c[(b&p)+52>>2]|0,d,e),g=c[(b&p)+32>>2]|0,(g|0)!=0):0)?(f=c[(g&p)>>2]|0,(f|0)>0):0){b=f;f=g+8|0;while(1){uu(a,c[(f&p)+20>>2]|0,d,e);b=b+-1|0;if((b|0)<=0)break;else f=f+72|0}}return}function vu(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[(d&p)+48>>2]|0;l=c[(f&p)>>2]|0;g=c[(b&p)>>2]|0;m=Rs(g,l+1|0,1)|0;if((m|0)!=0&(l|0)>0){k=f+4|0;i=g+8|0;h=m+16|0;j=0;do{g=c[(k&p)>>2]|0;f=c[(g+(j*20|0)&p)>>2]|0;if(!(c[(f&p)+4>>2]&256)){g=Ss(b,d,(e[(g+(j*20|0)&o)+16>>1]|0)+-1|0)|0;if(!g)g=c[(i&p)>>2]|0;f=xv(b,f,c[(g&p)>>2]|0)|0;c[((c[(k&p)>>2]|0)+(j*20|0)&p)>>2]=f}else g=cu(b,f)|0;c[(m+(j<<2)&p)+20>>2]=g;a[((c[(h&p)>>2]|0)+j&n)>>0]=a[((c[(k&p)>>2]|0)+(j*20|0)&n)+12>>0]|0;j=j+1|0}while((j|0)!=(l|0))}return m|0}function wu(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();q=r;h=c[(d&p)>>2]|0;a:do if((f|0)!=0?(a[(h&n)+65>>0]|0)==0:0){k=c[(f&p)>>2]|0;if((k|0)>(c[(h&p)+96>>2]|0)){c[(q&p)>>2]=g;th(d,27120,q);e=1;break}m=c[(e&p)>>2]|0;if((k|0)>0){h=k;e=0;l=c[(f&p)+4>>2]|0;while(1){k=b[(l&o)+16>>1]|0;if(k<<16>>16){k=k&65535;h=c[(m&p)>>2]|0;if((k|0)>(h|0))break;yv(d,m,k+-1|0,c[(l&p)>>2]|0,g,0);h=c[(f&p)>>2]|0}e=e+1|0;if((e|0)>=(h|0)){e=0;break a}else l=l+20|0}c[(q&p)>>2]=e+1;c[(q&p)+4>>2]=g;c[(q&p)+8>>2]=h;th(d,27064,q);e=1}else e=0}else e=0;while(0);i=r;return e|0}function xu(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;v=b+8|0;w=c[(v&p)>>2]|0;y=w+32|0;l=c[(y&p)>>2]|0;z=xs(w)|0;if(i){o=wh(w,46,i,0,0)|0;m=f+8|0;r=c[(m&p)>>2]|0;t=i+1|0;q=f+12|0;s=c[(q&p)>>2]|0;if(j)c[(j&p)>>2]=(c[(j&p)>>2]|0)+1;r=wh(w,42,r,t,s)|0;xh(w,r,j,-6);r=r+2|0;wh(w,43,r,z,r)|0;r=c[(y&p)>>2]|0;if(r>>>0>o>>>0)c[((c[(w&p)+4>>2]|0)+(o*20|0)&p)+8>>2]=r;c[((c[(w&p)+24>>2]|0)&p)+88>>2]=r+-1;wh(w,33,c[(m&p)>>2]|0,t,(c[(q&p)>>2]|0)+-1|0)|0;wh(w,25,1,i,0)|0}if(!(a[((c[(b&p)>>2]|0)&n)+65>>0]|0)){it(w,c[(e&p)+12>>2]|0,z);switch(d[(g&n)>>0]|0){case 11:{q=g+1|0;a[(q&n)>>0]=Bu(c[(c[((c[(e&p)>>2]|0)&p)+4>>2]&p)>>2]|0,a[(q&n)>>0]|0)|0;o=b+19|0;m=a[(o&n)>>0]|0;if(!(m<<24>>24)){u=b+72|0;o=(c[(u&p)>>2]|0)+1|0;c[(u&p)>>2]=o}else{u=m+-1<<24>>24;a[(o&n)>>0]=u;o=c[(b+((u&255)<<2)&p)+24>>2]|0}u=f+8|0;xh(w,wh(w,49,c[(u&p)>>2]|0,1,o)|0,q,1);dt(b,c[(u&p)>>2]|0,1);wh(w,110,c[(g&p)+4>>2]|0,o,0)|0;_r(b,o);break}case 12:case 14:{m=b+19|0;q=a[(m&n)>>0]|0;if(q<<24>>24){i=q+-1<<24>>24;a[(m&n)>>0]=i;o=c[(b+((i&255)<<2)&p)+24>>2]|0;if(!(i<<24>>24))u=12;else{q=q+-2<<24>>24;a[(m&n)>>0]=q;q=c[(b+((q&255)<<2)&p)+24>>2]|0;m=o}}else{u=b+72|0;o=(c[(u&p)>>2]|0)+1|0;c[(u&p)>>2]=o;u=12}if((u|0)==12){m=b+72|0;q=(c[(m&p)>>2]|0)+1|0;c[(m&p)>>2]=q;m=o}wh(w,49,c[(f&p)+8>>2]|0,c[(f&p)+12>>2]|0,m)|0;o=g+4|0;wh(w,74,c[(o&p)>>2]|0,q,0)|0;wh(w,75,c[(o&p)>>2]|0,m,q)|0;o=c[(w&p)+4>>2]|0;if(o)a[(o+(((c[(y&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=8;_r(b,q);_r(b,m);break}case 13:{s=g+8|0;o=c[(s&p)>>2]|0;if(!o){o=c[(f&p)+12>>2]|0;q=b+60|0;m=c[(q&p)>>2]|0;j=b+56|0;r=c[(j&p)>>2]|0;if((r|0)<(o|0)){u=b+72|0;m=c[(u&p)>>2]|0;c[(u&p)>>2]=m+o;m=m+1|0}else{c[(q&p)>>2]=m+o;c[(j&p)>>2]=r-o}c[(s&p)>>2]=m;c[(g&p)+12>>2]=o}else{m=o;o=c[(g&p)+12>>2]|0}u=c[(f&p)+8>>2]|0;wh(c[(v&p)>>2]|0,32,u,m,o)|0;dt(b,u,o);wh(w,22,c[(g&p)+4>>2]|0,0,0)|0;break}case 10:{u=c[(f&p)+8>>2]|0;wh(c[(v&p)>>2]|0,32,u,c[(g&p)+4>>2]|0,1)|0;dt(b,u,1);break}default:{i=f+8|0;u=f+12|0;wh(w,35,c[(i&p)>>2]|0,c[(u&p)>>2]|0,0)|0;dt(b,c[(i&p)>>2]|0,c[(u&p)>>2]|0)}}m=c[(e&p)+8>>2]|0;if(m)wh(w,140,m,k,0)|0;m=c[(w&p)+24>>2]|0;o=~z;if((z|0)<0?(x=c[(m&p)+112>>2]|0,(x|0)!=0):0)c[(x+(o<<2)&p)>>2]=c[(y&p)>>2];c[(m&p)+88>>2]=(c[(y&p)>>2]|0)+-1;wh(w,18,h,0,0)|0}else l=0;return l|0}function yu(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+80|0;if((i|0)>=(j|0))fa();u=v+64|0;t=v+32|0;h=v;a[(u&n)>>0]=1;if((f|0)!=0?(c[(e&p)+4>>2]|0)!=0:0){k=d[(f&n)>>0]|0;a:do if((k|0)==154|(k|0)==156){s=b[(f&o)+32>>1]|0;h=s<<16>>16;if(e){r=f+28|0;b:while(1){while(1){q=c[(e&p)+4>>2]|0;m=c[(q&p)>>2]|0;c:do if((m|0)>0){f=c[(r&p)>>2]|0;k=0;while(1){l=k+1|0;if((c[(q+(k*72|0)&p)+48>>2]|0)==(f|0)){l=k;break c}if((l|0)<(m|0))k=l;else break}}else l=0;while(0);if((l|0)>=(m|0))break;m=c[(q+(l*72|0)&p)+24>>2]|0;l=c[(q+(l*72|0)&p)+28>>2]|0;f=(m|0)==0;if(!((e|0)!=0&f))break b}e=c[(e&p)+16>>2]|0;if(!e){h=0;break a}}if(!f){if(l){if(s<<16>>16<=-1){h=0;break}k=c[(l&p)>>2]|0;if((h|0)>=(c[(k&p)>>2]|0)){h=0;break}h=c[((c[(k&p)+4>>2]|0)+(h*20|0)&p)>>2]|0;c[(t&p)+4>>2]=c[(l&p)+32>>2];c[(t&p)+16>>2]=e;c[(t&p)>>2]=c[(e&p)>>2];h=yu(t,h,u)|0;break}if(c[(m&p)+68>>2]|0){if(s<<16>>16<0)h=b[(m&o)+36>>1]|0;if((h|0)<0)h=11144;else{s=c[(m&p)+4>>2]|0;t=c[(s+(h*24|0)&p)+12>>2]|0;a[(u&n)>>0]=a[(s+(h*24|0)&n)+22>>0]|0;h=t}}else h=0}else h=0}else h=0}else if((k|0)==119){s=c[(f&p)+20>>2]|0;t=c[(c[((c[(s&p)>>2]|0)&p)+4>>2]&p)>>2]|0;c[(h&p)+4>>2]=c[(s&p)+32>>2];c[(h&p)+16>>2]=e;c[(h&p)>>2]=c[(e&p)>>2];h=yu(h,t,u)|0}else h=0;while(0);if(g)a[(g&n)>>0]=a[(u&n)>>0]|0}else h=0;i=v;return h|0}function zu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=c[(b&p)+8>>2]|0;h=b+19|0;i=a[(h&n)>>0]|0;if(!(i<<24>>24)){i=b+72|0;h=(c[(i&p)>>2]|0)+1|0;c[(i&p)>>2]=h}else{i=i+-1<<24>>24;a[(h&n)>>0]=i;h=c[(b+((i&255)<<2)&p)+24>>2]|0}xh(j,wh(j,69,d,e,g)|0,f,-14);wh(j,49,g,f,h)|0;wh(j,110,d,h,0)|0;_r(b,h);return}function Au(b,d,f,g,h,i){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=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=b+8|0;C=c[(x&p)>>2]|0;B=d+24|0;k=a[(B&n)>>0]&1;q=k<<24>>24==0;k=(k^1)&255;j=c[(d&p)>>2]|0;r=c[(j&p)>>2]|0;s=r+h+k|0;v=b+72|0;m=c[(v&p)>>2]|0;A=m+1|0;c[(v&p)>>2]=A;y=d+4|0;t=c[(y&p)>>2]|0;i=(i|0)==0;if(i){c[(v&p)>>2]=A+s;w=m+2|0}else w=g-r-k|0;bt(b,j,w,1);if(q)wh(C,73,c[(d&p)+8>>2]|0,w+r|0,0)|0;if(i){wh(c[(x&p)>>2]|0,32,g,k+r+w|0,h)|0;dt(b,g,h)}wh(C,49,w+t|0,s-t|0,A)|0;if((t|0)>0){j=c[(v&p)>>2]|0;h=j+1|0;i=c[(y&p)>>2]|0;c[(v&p)>>2]=i+j;if(q)g=wh(C,46,w+r|0,0,0)|0;else g=wh(C,59,c[(d&p)+8>>2]|0,0,0)|0;wh(C,42,h,w,c[(y&p)>>2]|0)|0;m=c[(d&p)+20>>2]|0;if((m|0)<0)m=(c[(C&p)+32>>2]|0)+-1|0;if(!(a[((c[(C&p)>>2]|0)&n)+65>>0]|0))m=(c[(C&p)+4>>2]|0)+(m*20|0)|0;else m=29120;if(!(a[((c[(b&p)>>2]|0)&n)+65>>0]|0)){c[(m&p)+8>>2]=s-i;m=m+16|0;i=c[(m&p)>>2]|0;fw(c[(i&p)+16>>2]|0,0,e[(i&o)+6>>1]|0)|0;xh(C,-1,i,-6);c[(m&p)>>2]=Us(b,c[(d&p)>>2]|0,t,(e[(i&o)+8>>1]|0)+-1|0)|0;m=C+32|0;i=c[(m&p)>>2]|0;l=i+1|0;wh(C,43,l,0,l)|0;l=xs(C)|0;c[(d&p)+16>>2]=l;k=(c[(v&p)>>2]|0)+1|0;c[(v&p)>>2]=k;c[(d&p)+12>>2]=k;wh(C,17,k,l,0)|0;l=d+8|0;wh(C,119,c[(l&p)>>2]|0,0,0)|0;k=c[(m&p)>>2]|0;if(k>>>0>g>>>0)c[((c[(C&p)+4>>2]|0)+(g*20|0)&p)+8>>2]=k;j=C+24|0;c[((c[(j&p)>>2]|0)&p)+88>>2]=k+-1;k=c[(y&p)>>2]|0;wh(c[(x&p)>>2]|0,32,w,h,k)|0;dt(b,w,k);k=c[(m&p)>>2]|0;if(k>>>0>i>>>0)c[((c[(C&p)+4>>2]|0)+(i*20|0)&p)+8>>2]=k;c[((c[(j&p)>>2]|0)&p)+88>>2]=k+-1;u=23}}else{l=d+8|0;u=23}if((u|0)==23?(wh(C,110-(a[(B&n)>>0]&1)|0,c[(l&p)>>2]|0,A,0)|0,z=c[(f&p)+8>>2]|0,(z|0)!=0):0){k=c[(f&p)+12>>2]|0;k=wh(C,139,(k|0)==0?z:k+1|0,0,-1)|0;wh(C,105,c[(l&p)>>2]|0,0,0)|0;wh(C,95,c[(l&p)>>2]|0,0,0)|0;j=c[(C&p)+32>>2]|0;if(j>>>0>k>>>0)c[((c[(C&p)+4>>2]|0)+(k*20|0)&p)+8>>2]=j;c[((c[(C&p)+24>>2]|0)&p)+88>>2]=j+-1}return}function Bu(a,b){a=a|0;b=b|0;a=kv(a)|0;if(!(a<<24>>24==0|b<<24>>24==0))return (a<<24>>24>66|b<<24>>24>66?67:65)|0;if(!((a|b)<<24>>24))a=65;else a=(b&255)+(a&255)&255;return a|0}function Cu(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;do if(!((d|0)==0|(e|0)==0)){j=c[(d&p)+4>>2]|0;k=c[(e&p)+4>>2]|0;l=k|j;if(l&1024){if((j&1024&k|0)!=0?(c[(d&p)+8>>2]|0)==(c[(e&p)+8>>2]|0):0){g=0;break}g=2;break}g=a[(d&n)>>0]|0;h=a[(e&n)>>0]|0;if(g<<24>>24!=h<<24>>24){if(g<<24>>24==95?(Cu(c[(d&p)+12>>2]|0,e,f)|0)<2:0){g=1;break}if(h<<24>>24==95?(Cu(d,c[(e&p)+12>>2]|0,f)|0)<2:0){g=1;break}g=2;break}if((!(g<<24>>24==-100|g<<24>>24==-102)?(i=c[(d&p)+8>>2]|0,(i|0)!=0):0)?(_v(i,c[(e&p)+8>>2]|0)|0)!=0:0){g=g<<24>>24==95?1:2;break}if(!((k^j)&16)){if(!(l&16384)){if(l&2048){g=2;break}if(Cu(c[(d&p)+12>>2]|0,c[(e&p)+12>>2]|0,f)|0){g=2;break}if(Cu(c[(d&p)+16>>2]|0,c[(e&p)+16>>2]|0,f)|0){g=2;break}if(Ts(c[(d&p)+20>>2]|0,c[(e&p)+20>>2]|0,f)|0){g=2;break}if(!(l&8192)){if((b[(d&o)+32>>1]|0)!=(b[(e&o)+32>>1]|0)){g=2;break}h=c[(d&p)+28>>2]|0;g=c[(e&p)+28>>2]|0;if((h|0)!=(g|0)?(h|0)!=(f|0)|(g|0)>-1:0){g=2;break}}}g=0}else g=2}else g=(e|0)==(d|0)?0:2;while(0);return g|0}function Du(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b+8|0;a[(f&n)>>0]=e;a:do if(d){while(1){if((a[(d&n)>>0]|0)!=e<<24>>24)break;Du(b,c[(d&p)+12>>2]|0,e);d=c[(d&p)+16>>2]|0;a[(f&n)>>0]=e;if(!d)break a}zv(b,d,0)|0}while(0);return}function Eu(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=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,H=0,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;F=c[(f&p)>>2]|0;T=c[(F&p)>>2]|0;V=c[(T&p)>>2]|0;O=V+65|0;do if(!(a[(O&n)>>0]|0)){W=f+20|0;k=c[(W&p)>>2]|0;h=k+(g*48|0)|0;ba=F+68|0;U=c[(h&p)>>2]|0;v=U+12|0;l=c[(v&p)>>2]|0;A=Av(ba,l)|0;z=G;j=a[(U&n)>>0]|0;x=j&255;do if(j<<24>>24==75){m=U+20|0;if(!(c[(U&p)+4>>2]&2048)){i=Lu(ba,c[(m&p)>>2]|0)|0;w=G;S=k+(g*48|0)+32|0;c[(S&p)>>2]=i;c[(S&p)+4>>2]=w;break}else{i=Bv(ba,c[(m&p)>>2]|0)|0;w=G;S=k+(g*48|0)+32|0;c[(S&p)>>2]=i;c[(S&p)+4>>2]=w;break}}else if(j<<24>>24==76){i=k+(g*48|0)+32|0;c[(i&p)>>2]=0;c[(i&p)+4>>2]=0;i=0;w=0}else{i=Av(ba,c[(U&p)+16>>2]|0)|0;w=G;S=k+(g*48|0)+32|0;c[(S&p)>>2]=i;c[(S&p)+4>>2]=w}while(0);t=Av(ba,U)|0;m=G;Q=U+4|0;if(!(c[(Q&p)>>2]&1)){R=0;S=0;y=m}else{r=b[(U&o)+36>>1]|0;q=c[(ba&p)>>2]|0;a:do if((q|0)>0){s=0;while(1){if((c[(F+(s<<2)&p)+72>>2]|0)==(r|0))break;s=s+1|0;if((s|0)>=(q|0)){s=0;r=0;break a}}s=iw(1,0,s|0)|0;r=G}else{s=0;r=0}while(0);R=jw(s|0,r|0,-1,-1)|0;S=G;t=s|t;y=r|m}u=k+(g*48|0)+40|0;c[(u&p)>>2]=t;c[(u&p)+4>>2]=y;u=k+(g*48|0)+8|0;c[(u&p)>>2]=-1;c[(k+(g*48|0)&p)+4>>2]=-1;C=k+(g*48|0)+18|0;b[(C&o)>>1]=0;s=x+-75|0;if(s>>>0<9?(499>>>(s&511)&1)!=0:0){b:do if(!l)l=0;else while(1){s=c[(l&p)+4>>2]|0;if(!(s&4096))break b;if(!(s&262144))q=l+12|0;else q=c[((c[(l&p)+20>>2]|0)&p)+4>>2]|0;l=c[(q&p)>>2]|0;if(!l){l=0;break}}while(0);s=c[(U&p)+16>>2]|0;c:do if(!s)s=0;else while(1){r=c[(s&p)+4>>2]|0;if(!(r&4096))break c;if(!(r&262144))s=s+12|0;else s=c[((c[(s&p)+20>>2]|0)&p)+4>>2]|0;s=c[(s&p)>>2]|0;if(!s){s=0;break}}while(0);w=(i&A|0)==0&(w&z|0)==0?4095:1024;if((a[(l&n)>>0]|0)==-102){m=c[(l&p)+28>>2]|0;c[(u&p)>>2]=m;c[(k+(g*48|0)&p)+12>>2]=b[(l&o)+32>>1];if((x|0)==75)q=1;else if((x|0)==76)q=128;else q=2<>1]=q&w}else m=-1;if((s|0)!=0?(a[(s&n)>>0]|0)==-102:0){if((m|0)>-1){l=Mr(V,U,0,0)|0;if(a[(O&n)>>0]|0){Gk(V,l);break}m=zv(f,l,3)|0;if(!m)break;q=c[(W&p)>>2]|0;k=q+(m*48|0)|0;c[(q+(m*48|0)&p)+4>>2]=g;b[(q+(m*48|0)&o)+16>>1]=b[(q+(g*48|0)&o)+16>>1]|0;h=q+(g*48|0)+22|0;a[(h&n)>>0]=(a[(h&n)>>0]|0)+1<<24>>24;h=q+(g*48|0)|0;s=q+(g*48|0)+20|0;b[(s&o)>>1]=e[(s&o)>>1]|8;if(((a[(U&n)>>0]|0)==79?(c[(Q&p)>>2]&1|0)==0:0)?(b[(V&o)+60>>1]&512)==0:0){v=q+(g*48|0)+18|0;b[(v&o)>>1]=e[(v&o)>>1]|1024;v=1024}else v=0}else{v=0;l=U;k=h}j=l+16|0;r=(c[(j&p)>>2]|0)+4|0;q=c[(r&p)>>2]|0;m=q&256;i=l+12|0;s=c[(i&p)>>2]|0;do if((m|0)==(c[(s&p)+4>>2]&256|0)){if(m){c[(r&p)>>2]=q&-257;break}s=(cu(T,s)|0)==0;q=c[(i&p)>>2]|0;if(s)s=q;else{s=q+4|0;c[(s&p)>>2]=c[(s&p)>>2]|256;s=q}}while(0);q=c[(j&p)>>2]|0;c[(j&p)>>2]=s;c[(i&p)>>2]=q;m=a[(l&n)>>0]|0;if((m&255)>79){m=((m&255)+176^2)+80&255;a[(l&n)>>0]=m}l=c[(q&p)+4>>2]|0;if(l&4096)do{if(!(l&262144))q=q+12|0;else q=c[((c[(q&p)+20>>2]|0)&p)+4>>2]|0;q=c[(q&p)>>2]|0;l=c[(q&p)+4>>2]|0}while((l&4096|0)!=0);c[(k&p)+8>>2]=c[(q&p)+28>>2];c[(k&p)+12>>2]=b[(q&o)+32>>1];l=k+32|0;c[(l&p)>>2]=R|A;c[(l&p)+4>>2]=S|z;l=k+40|0;c[(l&p)>>2]=t;c[(l&p)+4>>2]=y;l=m&255;if((l|0)==76)l=128;else if((l|0)==75)l=1;else l=2<>1]=l+v&(w&65535)}}else K=59;do if((K|0)==59){if(j<<24>>24==74){if((a[(f&n)+8>>0]|0)!=72)break;m=(c[(U&p)+20>>2]|0)+4|0;i=U+36|0;j=0;while(1){t=d[(j&n)+34144>>0]|0;l=Mr(V,l,0,0)|0;l=Zq(T,t,l,Mr(V,c[((c[(m&p)>>2]|0)+(j*20|0)&p)>>2]|0,0,0)|0,0)|0;if(l){t=l+4|0;c[(t&p)>>2]=c[(t&p)>>2]|c[(Q&p)>>2]&1;b[(l&o)+36>>1]=b[(i&o)>>1]|0}t=zv(f,l,3)|0;Eu(f,t);k=c[(W&p)>>2]|0;c[(k+(t*48|0)&p)+4>>2]=g;b[(k+(t*48|0)&o)+16>>1]=b[(k+(g*48|0)&o)+16>>1]|0;t=k+(g*48|0)+22|0;a[(t&n)>>0]=(a[(t&n)>>0]|0)+1<<24>>24;j=j+1|0;if((j|0)==2)break;l=c[(v&p)>>2]|0}h=k+(g*48|0)|0;break}else if(j<<24>>24!=71)break;A=mh(V,416,0)|0;d:do if(A){fw(A|0,0,416)|0;c[(k+(g*48|0)&p)+12>>2]=A;D=k+(g*48|0)+20|0;b[(D&o)>>1]=e[(D&o)>>1]|16;c[(A&p)>>2]=F;c[(A&p)+4>>2]=0;D=A+12|0;c[(D&p)>>2]=0;c[(A&p)+16>>2]=8;E=A+20|0;c[(E&p)>>2]=A+24;Du(A,U,71);m=c[(D&p)>>2]|0;if((m|0)>0)do{m=m+-1|0;Eu(A,m)}while((m|0)>0);if(!(a[(O&n)>>0]|0)){s=c[(D&p)>>2]|0;if((s|0)>0){z=F+68|0;y=-1;x=-1;i=-1;h=-1;w=c[(E&p)>>2]|0;while(1){s=s+-1|0;r=w+18|0;v=b[(r&o)>>1]|0;if(!(v&255)){l=mh(V,408,0)|0;if(!l){m=y;q=x;i=0;h=0}else{c[(w&p)+12>>2]=l;q=w+20|0;b[(q&o)>>1]=e[(q&o)>>1]|32;b[(r&o)>>1]=512;c[(l&p)>>2]=c[(f&p)>>2];q=l+4|0;c[(q&p)>>2]=0;m=l+12|0;c[(m&p)>>2]=0;c[(l&p)+16>>2]=8;t=l+20|0;c[(t&p)>>2]=l+24;Du(l,c[(w&p)>>2]|0,72);r=c[(m&p)>>2]|0;if((r|0)>0)do{r=r+-1|0;Eu(l,r)}while((r|0)>0);c[(q&p)>>2]=f;if((a[(O&n)>>0]|0)==0?(B=c[(m&p)>>2]|0,(B|0)>0):0){r=0;q=0;h=0;u=c[(t&p)>>2]|0;while(1){m=(d[(c[(u&p)>>2]&n)>>0]|0)+-75|0;do if(m>>>0<9){if(!(499>>>(m&511)&1))break;l=c[(u&p)+8>>2]|0;j=c[(z&p)>>2]|0;e:do if((j|0)>0){m=0;while(1){if((c[(F+(m<<2)&p)+72>>2]|0)==(l|0))break;m=m+1|0;if((m|0)>=(j|0)){m=0;l=0;break e}}m=iw(1,0,m|0)|0;l=G}else{m=0;l=0}while(0);r=m|r;q=l|q}while(0);h=h+1|0;if((h|0)>=(B|0))break;else u=u+48|0}}else{r=0;q=0}m=r&y;q=q&x;i=0;h=0}}else{q=b[(w&o)+20>>1]|0;if(!(q&8)){t=c[(w&p)+8>>2]|0;l=c[(z&p)>>2]|0;m=(l|0)>0;f:do if(m){r=0;while(1){if((c[(F+(r<<2)&p)+72>>2]|0)==(t|0))break;r=r+1|0;if((r|0)>=(l|0)){j=0;u=0;break f}}j=iw(1,0,r|0)|0;u=G}else{j=0;u=0}while(0);if(!(q&2)){r=j;t=u}else{t=c[((c[(E&p)>>2]|0)+((c[(w&p)+4>>2]|0)*48|0)&p)+8>>2]|0;g:do if(m){r=0;while(1){if((c[(F+(r<<2)&p)+72>>2]|0)==(t|0))break;r=r+1|0;if((r|0)>=(l|0)){r=0;t=0;break g}}r=iw(1,0,r|0)|0;t=G}else{r=0;t=0}while(0);r=r|j;t=t|u}l=(v&2)==0;m=r&y;q=t&x;i=l?0:r&i;h=l?0:t&h}else{m=y;q=x}}r=(m|0)!=0|(q|0)!=0;if(!((s|0)>0&r))break;else{y=m;x=q;w=w+48|0}}t=A+408|0;c[(t&p)>>2]=m;c[(t&p)+4>>2]=q;b[(C&o)>>1]=(m|0)==0&(q|0)==0?0:256;if(r)K=104}else{i=A+408|0;c[(i&p)>>2]=-1;c[(i&p)+4>>2]=-1;b[(C&o)>>1]=256;i=-1;h=-1;K=104}h:do if((K|0)==104)if((c[(D&p)>>2]|0)==2){l=c[(E&p)>>2]|0;m=0;i:while(1){j=m+1|0;if((b[(l&o)+18>>1]|0)!=512)if(!m)r=l;else break h;else{q=c[(l&p)+12>>2]|0;if((c[(q&p)+12>>2]|0)<=(m|0))break h;r=(c[(q&p)+20>>2]|0)+(m*48|0)|0}if(!r)break h;else s=0;while(1){if((b[(l&o)+66>>1]|0)==512){q=c[(l&p)+60>>2]|0;if((c[(q&p)+12>>2]|0)<=(s|0)){m=j;continue i}q=(c[(q&p)+20>>2]|0)+(s*48|0)|0;if(!q){m=j;continue i}}else if(!s)q=l+48|0;else{m=j;continue i}Cv(f,r,q);l=c[(E&p)>>2]|0;s=s+1|0}}}while(0);if(!((i|0)==0&(h|0)==0)){u=F+68|0;t=-1;v=0;while(1){q=c[(D&p)>>2]|0;if((q|0)<=0)break d;s=c[(E&p)>>2]|0;while(1){j=q;q=q+-1|0;l=s+20|0;b[(l&o)>>1]=e[(l&o)>>1]&65471;l=c[(s&p)+8>>2]|0;if((l|0)!=(t|0)){m=c[(u&p)>>2]|0;j:do if((m|0)>0){r=0;while(1){if((c[(F+(r<<2)&p)+72>>2]|0)==(l|0))break;r=r+1|0;if((r|0)>=(m|0)){r=0;m=0;break j}}r=iw(1,0,r|0)|0;m=G}else{r=0;m=0}while(0);if(!((r&i|0)==0&(m&h|0)==0)){r=j;break}}if((q|0)<=0)break d;else s=s+48|0}m=c[(s&p)+12>>2]|0;if((r|0)<1)break d;else r=l;while(1){if((r|0)==(l|0)){if((c[(s&p)+12>>2]|0)!=(m|0)){q=l;m=1;break}t=kv(c[((c[(s&p)>>2]|0)&p)+16>>2]|0)|0;if(!(t<<24>>24==0|t<<24>>24==(kv(c[((c[(s&p)>>2]|0)&p)+12>>2]|0)|0)<<24>>24)){q=l;m=1;break}t=s+20|0;b[(t&o)>>1]=e[(t&o)>>1]|64}else{t=s+20|0;b[(t&o)>>1]=e[(t&o)>>1]&65471}if((q|0)<=0){q=l;m=0;break}r=c[(s&p)+56>>2]|0;q=q+-1|0;s=s+48|0}v=v+1|0;if(!((v|0)<2&m))break;else t=q}if(!m){l=c[(D&p)>>2]|0;if((l|0)>0){m=0;i=0;j=c[(E&p)>>2]|0;while(1){l=l+-1|0;if(b[(j&o)+20>>1]&64){m=Mr(V,c[((c[(j&p)>>2]|0)&p)+16>>2]|0,0,0)|0;i=lr(c[(F&p)>>2]|0,i,m)|0;m=c[((c[(j&p)>>2]|0)&p)+12>>2]|0}if((l|0)<=0){l=m;break}else j=j+48|0}}else{l=0;i=0}j=Zq(T,75,Mr(V,l,0,0)|0,0,0)|0;if(!j)Nk(V,i);else{t=j+4|0;c[(t&p)>>2]=c[(t&p)>>2]|c[(Q&p)>>2]&1;b[(j&o)+36>>1]=b[(U&o)+36>>1]|0;c[(j&p)+20>>2]=i;t=zv(f,j,3)|0;Eu(f,t);k=c[(W&p)>>2]|0;c[(k+(t*48|0)&p)+4>>2]=g;b[(k+(t*48|0)&o)+16>>1]=b[(k+(g*48|0)&o)+16>>1]|0;t=k+(g*48|0)+22|0;a[(t&n)>>0]=(a[(t&n)>>0]|0)+1<<24>>24}b[(k+(g*48|0)&o)+18>>1]=2048}}}}else c[(k+(g*48|0)&p)+12>>2]=0;while(0);h=(c[(W&p)>>2]|0)+(g*48|0)|0}while(0);k:do if((a[(f&n)+8>>0]|0)==72){x=c[(T&p)>>2]|0;if((a[(U&n)>>0]|0)==-103){w=U+20|0;t=c[(w&p)>>2]|0;if((t|0)!=0?(c[(t&p)>>2]|0)==2:0){m=c[(U&p)+8>>2]|0;if(!m)l=0;else{l=m;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;l=l-m&1073741823}l=Sh(x,m,l,2,1,0)|0;if(((((l|0)!=0?(H=b[(l&o)+2>>1]|0,(H&4)!=0):0)?(N=c[(l&p)+4>>2]|0,L=a[(N&n)>>0]|0,M=a[(N&n)+1>>0]|0,N=a[(N&n)+2>>0]|0,P=(H&65535)>>>3&1,I=(c[(w&p)>>2]|0)+4|0,J=c[((c[(I&p)>>2]|0)&p)+20>>2]|0,(a[(J&n)>>0]|0)==-102):0)?(kv(J)|0)<<24>>24==66:0)?(a[((c[(J&p)+44>>2]|0)&n)+44>>0]&16)==0:0){k=c[(c[(I&p)>>2]&p)>>2]|0;l:do if(!k)k=0;else while(1){j=c[(k&p)+4>>2]|0;if(!(j&4096))break l;if(!(j&262144))k=k+12|0;else k=c[((c[(k&p)+20>>2]|0)&p)+4>>2]|0;k=c[(k&p)>>2]|0;if(!k){k=0;break}}while(0);j=a[(k&n)>>0]|0;u=j<<24>>24==-121;do if(u){l=c[(T&p)+476>>2]|0;r=b[(k&o)+32>>1]|0;s=r<<16>>16;do if(!l){i=0;m=0}else{K=s+-1|0;J=c[(l&p)+60>>2]|0;i=J+(K*40|0)|0;if(b[(J+(K*40|0)&o)+8>>1]&1){i=0;m=0;break}m=c[(l&p)>>2]|0;q=mh(m,40,0)|0;if(!q){i=0;m=0;break}l=q+0|0;j=l+40|0;do{a[(l&n)>>0]=0;l=l+1|0}while((l|0)<(j|0));K=q+8|0;b[(K&o)>>1]=1;c[(q&p)+32>>2]=m;_g(q,i)|0;if((b[(K&o)>>1]&15)!=2){i=q;m=0;break}i=q;m=Sg(q,1)|0}while(0);l=c[(T&p)+8>>2]|0;if(r<<16>>16>32){c[(l&p)+188>>2]=-1;t=m;K=177;break}else{t=l+188|0;c[(t&p)>>2]=c[(t&p)>>2]|1<>24==97){i=0;t=c[(k&p)+8>>2]|0;K=177}else i=0;while(0);do if((K|0)==177)if(t){m=0;while(1){K=a[(t+m&n)>>0]|0;j=K<<24>>24==L<<24>>24;l=m+1|0;if(K<<24>>24!=N<<24>>24&((K<<24>>24==0|j|K<<24>>24==M<<24>>24)^1))m=l;else break}if(m){if((a[(t+m+-1&n)>>0]|0)==-1)break;if(j)l=(a[(t+l&n)>>0]|0)==0;else l=0;q=l&1;v=tt(x,97,t)|0;if(v)a[((c[(v&p)+8>>2]|0)+m&n)>>0]=0;do if(u){m=c[(T&p)+8>>2]|0;j=b[(k&o)+32>>1]|0;if(j<<16>>16>32)c[(m&p)+188>>2]=-1;else{N=m+188|0;c[(N&p)>>2]=c[(N&p)>>2]|1<<(j<<16>>16)+-1}if(!l){q=0;break}if(!(a[((c[(k&p)+8>>2]|0)&n)+1>>0]|0))break;j=T+19|0;l=a[(j&n)>>0]|0;if(!(l<<24>>24)){N=T+72|0;j=(c[(N&p)>>2]|0)+1|0;c[(N&p)>>2]=j}else{N=l+-1<<24>>24;a[(j&n)>>0]=N;j=c[(T+((N&255)<<2)&p)+24>>2]|0}is(T,k,j)|0;k=c[(m&p)+32>>2]|0;if(k>>>0>0)c[((c[(m&p)+4>>2]|0)+((k+-1|0)*20|0)&p)+12>>2]=0;_r(T,j)}while(0);Mh(i);if(!t){K=217;break k}r=c[((c[((c[(w&p)>>2]|0)&p)+4>>2]|0)&p)+20>>2]|0;m=Mr(V,v,0,0)|0;s=P<<16>>16!=0;do if(!s){if(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)break;i=h+20|0;b[(i&o)>>1]=e[(i&o)>>1]|1024;i=v+8|0;l=c[(i&p)>>2]|0;k=a[(l&n)>>0]|0;if(!(k<<24>>24))break;h=m+8|0;j=0;do{N=k&255;a[(l&n)>>0]=((d[(N&n)+10368>>0]|223)^32)&N;a[((c[(h&p)>>2]|0)+j&n)>>0]=a[(N&n)+9328>>0]|0;j=j+1|0;l=(c[(i&p)>>2]|0)+j|0;k=a[(l&n)>>0]|0}while(k<<24>>24!=0)}while(0);if(!(a[(O&n)>>0]|0)){k=c[(m&p)+8>>2]|0;if(!k)j=-1;else{j=k;while(1)if(!(a[(j&n)>>0]|0))break;else j=j+1|0;j=(j-k&1073741823)+-1|0}k=k+j|0;j=a[(k&n)>>0]|0;if(s)i=q;else{i=j<<24>>24==64?0:q;j=a[(j&255&n)+9328>>0]|0}a[(k&n)>>0]=(j&255)+1;l=i}else l=q;i=P<<16>>16==0?13752:11152;j=Zq(T,83,xv(T,Mr(V,r,0,0)|0,i)|0,v,0)|0;if(j){P=j+4|0;c[(P&p)>>2]=c[(P&p)>>2]|c[(Q&p)>>2]&1;b[(j&o)+36>>1]=b[(U&o)+36>>1]|0}k=zv(f,j,259)|0;Eu(f,k);i=Zq(T,82,xv(T,Mr(V,r,0,0)|0,i)|0,m,0)|0;if(i){P=i+4|0;c[(P&p)>>2]=c[(P&p)>>2]|c[(Q&p)>>2]&1;b[(i&o)+36>>1]=b[(U&o)+36>>1]|0}i=zv(f,i,259)|0;Eu(f,i);j=c[(W&p)>>2]|0;h=j+(g*48|0)|0;if(!l){K=217;break k}c[(j+(k*48|0)&p)+4>>2]=g;Q=j+(g*48|0)+16|0;b[(j+(k*48|0)&o)+16>>1]=b[(Q&o)>>1]|0;K=j+(g*48|0)+22|0;a[(K&n)>>0]=(a[(K&n)>>0]|0)+1<<24>>24;c[(j+(i*48|0)&p)+4>>2]=g;b[(j+(i*48|0)&o)+16>>1]=b[(Q&o)>>1]|0;a[(K&n)>>0]=(a[(K&n)>>0]|0)+1<<24>>24;K=217;break k}}while(0);Mh(i);K=217}else K=217}else K=217}}else K=217;while(0);if((K|0)==217)if(((((a[(U&n)>>0]|0)==-103?(dd(c[(U&p)+8>>2]|0,31416)|0)==0:0)?(X=c[(U&p)+20>>2]|0,(c[(X&p)>>2]|0)==2):0)?(Y=c[(X&p)+4>>2]|0,Z=c[(Y&p)+20>>2]|0,(a[(Z&n)>>0]|0)==-102):0)?(_=c[(Y&p)>>2]|0,$=Av(ba,_)|0,aa=G,ba=Av(ba,Z)|0,(ba&$|0)==0&(G&aa|0)==0):0){ba=zv(f,Zq(T,51,0,Mr(V,_,0,0)|0,0)|0,3)|0;h=c[(W&p)>>2]|0;_=h+(ba*48|0)+32|0;c[(_&p)>>2]=$;c[(_&p)+4>>2]=aa;c[(h+(ba*48|0)&p)+8>>2]=c[(Z&p)+28>>2];c[(h+(ba*48|0)&p)+12>>2]=b[(Z&o)+32>>1];b[(h+(ba*48|0)&o)+18>>1]=64;c[(h+(ba*48|0)&p)+4>>2]=g;b[(h+(ba*48|0)&o)+16>>1]=b[(h+(g*48|0)&o)+16>>1]|0;$=h+(g*48|0)+22|0;a[($&n)>>0]=(a[($&n)>>0]|0)+1<<24>>24;$=h+(g*48|0)+20|0;b[($&o)>>1]=e[($&o)>>1]|8;$=h+(g*48|0)+40|0;aa=c[($&p)+4>>2]|0;ba=h+(ba*48|0)+40|0;c[(ba&p)>>2]=c[($&p)>>2];c[(ba&p)+4>>2]=aa;h=h+(g*48|0)|0}g=h+32|0;aa=g;ba=c[(aa&p)+4>>2]|S;c[(g&p)>>2]=c[(aa&p)>>2]|R;c[(g&p)+4>>2]=ba}while(0);return}function Fu(a,d,e,f,g,h,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0;m=i;i=i+112|0;if((i|0)>=(j|0))fa();l=m;h=Dv(l,a,d,e,h,k)|0;a:do if(!h)h=0;else{k=h;h=0;do{d=k+32|0;e=c[(d&p)>>2]|0;d=c[(d&p)+4>>2]|0;if((e&f|0)==0&(d&g|0)==0){if((e|0)==0&(d|0)==0?(b[(k&o)+18>>1]&2)!=0:0){h=k;break a}h=(h|0)==0?k:h}k=Ev(l)|0}while((k|0)!=0)}while(0);i=m;return h|0}function Gu(e,f,g){e=e|0;f=f|0;g=g|0;var l=0,m=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ca=0,ea=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0;pa=i;i=i+16|0;if((i|0)>=(j|0))fa();ma=pa;z=c[(e&p)>>2]|0;ka=c[(z&p)>>2]|0;na=c[(ka&p)>>2]|0;ja=c[(e&p)+4>>2]|0;la=c[(e&p)+12>>2]|0;y=d[(la&n)+16>>0]|0;z=c[(z&p)+4>>2]|0;ha=c[(z+(y*72|0)&p)+24>>2]|0;B=c[(e&p)+8>>2]|0;ia=ja+20|0;ja=ja+12|0;l=c[(ja&p)>>2]|0;if((l|0)>0){r=c[(z+(y*72|0)&p)+48>>2]|0;s=0;m=0;t=c[(ia&p)>>2]|0;while(1){if((c[(t&p)+8>>2]|0)==(r|0))m=((b[(t&o)+18>>1]&-1153)<<16>>16!=0&1)+m|0;s=s+1|0;if((s|0)==(l|0))break;else t=t+48|0}}else m=0;if(!B)x=0;else{v=c[(B&p)>>2]|0;a:do if((v|0)>0){t=c[(B&p)+4>>2]|0;s=z+(y*72|0)+48|0;u=0;while(1){r=c[(t+(u*20|0)&p)>>2]|0;if((a[(r&n)>>0]|0)!=-102){l=u;break a}l=u+1|0;if((c[(r&p)+28>>2]|0)!=(c[(s&p)>>2]|0)){l=u;break a}if((l|0)<(v|0))u=l;else break}}else l=0;while(0);x=(l|0)==(v|0)?v:0}l=(m*20|0)+56+(x<<3)|0;ga=mh(na,l,0)|0;do if(!ga){th(ka,15776,ma);l=7}else{fw(ga|0,0,l|0)|0;l=ga+56|0;w=l+(m*12|0)|0;c[(ga&p)>>2]=m;aa=ga+8|0;c[(aa&p)>>2]=x;ca=ga+4|0;c[(ca&p)>>2]=l;c[(ga&p)+12>>2]=w;ea=ga+16|0;c[(ea&p)>>2]=w+(x<<3);r=c[(ja&p)>>2]|0;if((r|0)>0){u=c[(z+(y*72|0)&p)+48>>2]|0;t=0;v=0;s=c[(ia&p)>>2]|0;while(1){if((c[(s&p)+8>>2]|0)==(u|0)?(C=b[(s&o)+18>>1]|0,(C&-1153)<<16>>16!=0):0){c[(l+(v*12|0)&p)>>2]=c[(s&p)+12>>2];c[(l+(v*12|0)&p)+8>>2]=t;a[(l+(v*12|0)&n)+4>>0]=(C&255)==1?2:C&255;v=v+1|0}t=t+1|0;if((t|0)==(r|0))break;else s=s+48|0}}if((x|0)>0){l=c[(B&p)+4>>2]|0;m=0;do{c[(w+(m<<3)&p)>>2]=b[((c[(l+(m*20|0)&p)>>2]|0)&o)+32>>1];a[(w+(m<<3)&n)+4>>0]=a[(l+(m*20|0)&n)+12>>0]|0;m=m+1|0}while((m|0)!=(x|0))}E=la;c[(E&p)>>2]=0;c[(E&p)+4>>2]=0;E=la+18|0;b[(E&o)>>1]=0;c[(la&p)+36>>2]=1024;F=la+40|0;b[(F&o)>>1]=0;H=la+28|0;a[(H&n)>>0]=0;I=c[(ea&p)>>2]|0;J=c[(ga&p)>>2]|0;if(Nu(na,la,J)|0){mg(na,ga);l=7;break}_=ga+28|0;$=ga+24|0;K=ga+20|0;L=ga+32|0;M=ga+40|0;N=ga+48|0;O=ha+60|0;P=ka+64|0;S=(J|0)>0;T=la+30|0;U=la+24|0;V=la+32|0;W=la+29|0;X=la+20|0;Y=la+22|0;Z=la+48|0;z=0;C=0;B=0;b:while(1){if(!((C|0)!=0|(z&1|0)==0))if((z|0)>2){l=0;break}else D=z+1|0;else D=z;if((B|0)==0&(D|0)>1){l=0;break}t=c[(ga&p)>>2]|0;if((t|0)>0){m=c[(ia&p)>>2]|0;r=0;s=c[(ca&p)>>2]|0;while(1){z=c[(s&p)+8>>2]|0;if((D|0)==2)a[(s&n)+5>>0]=b[(m+(z*48|0)&o)+18>>1]&1^1;else if(!D){l=s+5|0;a[(l&n)>>0]=0;y=(b[(m+(z*48|0)&o)+18>>1]&1)==0;C=y?C:1;z=m+(z*48|0)+32|0;z=(c[(z&p)>>2]|0)!=0|(c[(z&p)+4>>2]|0)!=0;if(z|y^1)B=z?1:B;else a[(l&n)>>0]=1}else if((D|0)==1){y=m+(z*48|0)+32|0;a[(s&n)+5>>0]=(c[(y&p)>>2]|0)==0&(c[(y&p)+4>>2]|0)==0&1}else a[(s&n)+5>>0]=1;r=r+1|0;if((r|0)>=(t|0)){y=C;break}else s=s+12|0}}else y=C;fw(I|0,0,t<<3|0)|0;if(c[(_&p)>>2]|0)Wc(c[($&p)>>2]|0);c[(K&p)>>2]=0;c[(K&p)+4>>2]=0;c[(K&p)+8>>2]=0;c[(K&p)+12>>2]=0;h[(M&q)>>3]=5.e+98;l=N;c[(l&p)>>2]=25;c[(l&p)+4>>2]=0;l=c[(ka&p)>>2]|0;z=O;while(1){z=c[(z&p)>>2]|0;if((c[(z&p)>>2]|0)==(l|0))break;else z=z+24|0}C=c[(z&p)+8>>2]|0;z=rc[c[((c[(C&p)>>2]|0)&p)+12>>2]&127](C,ga)|0;do if((z|0)==7)a[((c[(ka&p)>>2]|0)&n)+65>>0]=1;else if(z){l=c[(C&p)+8>>2]|0;if(l){c[(ma&p)>>2]=l;th(ka,10344,ma);break}if((z|0)!=516){z=z&255;if(z>>>0>26|(z|0)==2)z=16328;else z=c[(z<<2&p)+15488>>2]|0}else z=16344;c[(ma&p)>>2]=z;th(ka,10344,ma)}while(0);z=C+8|0;Wc(c[(z&p)>>2]|0);c[(z&p)>>2]=0;z=c[(ga&p)>>2]|0;if((z|0)>0){l=0;do{if((a[((c[(ca&p)>>2]|0)+(l*12|0)&n)+5>>0]|0)==0?(c[((c[(ea&p)>>2]|0)+(l<<3)&p)>>2]|0)>0:0){c[(ma&p)>>2]=c[(ha&p)>>2];th(ka,34096,ma);z=c[(ga&p)>>2]|0}l=l+1|0}while((l|0)<(z|0))}l=c[(P&p)>>2]|0;if(l)break;C=c[(ca&p)>>2]|0;x=la;c[(x&p)>>2]=f;c[(x&p)+4>>2]=g;c:do if(S){z=0;do{c[((c[(Z&p)>>2]|0)+(z<<2)&p)>>2]=0;z=z+1|0}while((z|0)!=(J|0));b[(T&o)>>1]=0;if(S){r=f;m=g;l=0;x=0;z=-1;while(1){t=c[(I+(x<<3)&p)>>2]|0;u=t+-1|0;do if((t|0)>0){v=c[(C&p)+8>>2]|0;if((t|0)>(J|0)|(v|0)<0){oa=65;break b}if((v|0)>=(c[(ja&p)>>2]|0)){oa=65;break b}s=(c[(Z&p)>>2]|0)+(u<<2)|0;if(c[(s&p)>>2]|0){oa=65;break b}w=c[(ia&p)>>2]|0;qa=w+(v*48|0)+32|0;r=r|c[(qa&p)>>2];m=m|c[(qa&p)+4>>2];qa=la;c[(qa&p)>>2]=r;c[(qa&p)+4>>2]=m;c[(s&p)>>2]=w+(v*48|0);z=(u|0)>(z|0)?u:z;do if((t|0)<17){if(!(a[(I+(x<<3)&n)+4>>0]|0))break;l=(l&65535|1<>1]=l}while(0);if(!(b[(w+(v*48|0)&o)+18>>1]&1))break;if(!(a[(I+(x<<3)&n)+4>>0]|0))break c;c[(L&p)>>2]=0}while(0);x=x+1|0;if((x|0)>=(J|0)){oa=73;break}else C=C+12|0}}else{z=-1;oa=73}}else{b[(T&o)>>1]=0;z=-1;oa=73}while(0);if((oa|0)==73){oa=0;b[(F&o)>>1]=z+1;c[(U&p)>>2]=c[(K&p)>>2];a[(H&n)>>0]=c[(_&p)>>2];c[(_&p)>>2]=0;c[(V&p)>>2]=c[($&p)>>2];if(!(c[(L&p)>>2]|0))z=0;else z=c[(aa&p)>>2]&255;a[(W&n)>>0]=z;b[(E&o)>>1]=0;A=+h[(M&q)>>3];h[(k&q)>>3]=A;z=c[(k&p)>>2]|0;l=c[(k&p)+4>>2]|0;do if(!(A<=1.0))if(!(A<=2.0e9)){z=mw(z|0,l|0,52)|0;z=jw(z|0,G|0,64514,0)|0;z=(z<<16>>16)*10&65535;break}else{z=fs(~~A>>>0,+R(A)>=1.0?(A>0.0?~~+da(+Q(A/4294967296.0),4294967295.0)>>>0:~~+ba((A-+(~~A>>>0))/4294967296.0)>>>0):0)|0;break}else z=0;while(0);b[(X&o)>>1]=z;x=N;b[(Y&o)>>1]=fs(c[(x&p)>>2]|0,c[(x&p)+4>>2]|0)|0;Fv(e,la)|0;if(a[(H&n)>>0]|0){Wc(c[(V&p)>>2]|0);a[(H&n)>>0]=0}}z=D+1|0;if((z|0)>=4){l=0;break}else C=y}if((oa|0)==65){c[(ma&p)>>2]=c[(ha&p)>>2];th(ka,34064,ma);l=1}if(c[(_&p)>>2]|0)Wc(c[($&p)>>2]|0);mg(na,ga)}while(0);i=pa;return l|0}function Hu(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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,H=0,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,ga=0;ga=i;i=i+64|0;if((i|0)>=(j|0))fa();s=ga;r=ga+56|0;q=ga+52|0;b[(q&o)>>1]=-1;ca=c[(f&p)+12>>2]|0;da=c[(f&p)>>2]|0;J=c[(da&p)+4>>2]|0;K=d[(ca&n)+16>>0]|0;Z=J+(K*72|0)+8|0;m=J+(K*72|0)+24|0;L=c[(m&p)>>2]|0;_=c[(f&p)+4>>2]|0;$=J+(K*72|0)+76|0;k=c[($&p)>>2]|0;do if(!k){if(a[(L&n)+44>>0]&32){s=c[(L&p)+8>>2]|0;break}k=s+0|0;l=k+52|0;do{c[(k&p)>>2]=0;k=k+4|0}while((k|0)<(l|0));b[(s&o)+46>>1]=1;b[(s&o)+48>>1]=1;c[(s&p)+4>>2]=q;c[(s&p)+8>>2]=r;a[(s&n)+50>>0]=5;c[(s&p)+12>>2]=L;b[(s&o)+44>>1]=b[(L&o)+42>>1]|0;b[(r&o)>>1]=b[(L&o)+28>>1]|0;b[(r&o)+2>>1]=0;if(!(a[(J+(K*72|0)&n)+45>>0]&1))c[(s&p)+20>>2]=c[((c[(m&p)>>2]|0)&p)+8>>2]}else s=k;while(0);r=b[(L&o)+28>>1]|0;if(r<<16>>16<11)E=0;else{E=r<<16>>16;E=((fs(E,((E|0)<0)<<31>>31)|0)&65535)+65503&65535}if(((((((c[(f&p)+16>>2]|0)==0?(b[(da&o)+34>>1]&128)==0:0)?(c[((c[(c[(da&p)>>2]&p)>>2]|0)&p)+24>>2]&1048576|0)!=0:0)?(c[($&p)>>2]|0)==0:0)?(t=a[(J+(K*72|0)&n)+45>>0]|0,(t&5)==0):0)?(I=L+44|0,(t&10|a[(I&n)>>0]&32)<<24>>24==0):0)?(F=c[(_&p)+20>>2]|0,Y=c[(_&p)+12>>2]|0,H=F+(Y*48|0)|0,(Y|0)>0):0){y=ca+8|0;z=ca+24|0;A=ca+42|0;B=ca+28|0;C=ca+40|0;D=ca+48|0;u=(E&65535)+(r&65535)|0;q=u+4&65535;m=ca+18|0;l=L+12|0;u=u+28&65535;v=ca+22|0;w=ca+20|0;x=ca+36|0;r=F;do{t=r+32|0;Y=t;X=y;if(((c[(X&p)>>2]&c[(Y&p)>>2]|0)==0?(c[(X&p)+4>>2]&c[(Y&p)+4>>2]|0)==0:0)?(Mu(r,Z,0,0)|0)!=0:0){b[(z&o)>>1]=1;b[(A&o)>>1]=0;c[(B&p)>>2]=0;b[(C&o)>>1]=1;c[(c[(D&p)>>2]&p)>>2]=r;b[(m&o)>>1]=q;if((c[(l&p)>>2]|0)==0?(a[(I&n)>>0]&2)==0:0)b[(m&o)>>1]=u;b[(v&o)>>1]=43;b[(w&o)>>1]=Gv(E,43)|0;c[(x&p)>>2]=16384;X=t;Y=c[(X&p)+4>>2]|h;k=ca;c[(k&p)>>2]=c[(X&p)>>2]|g;c[(k&p)+4>>2]=Y;k=Fv(f,ca)|0}else k=0;r=r+48|0}while((k|0)==0&r>>>0>>0)}else k=0;Y=ca+36|0;a:do if((k|0)==0&(s|0)!=0){P=ca+24|0;Q=ca+42|0;R=ca+40|0;S=ca+17|0;T=ca+18|0;U=ca+22|0;V=ca+28|0;W=J+(K*72|0)+48|0;X=ca+20|0;N=J+(K*72|0)+64|0;O=L+42|0;w=L+44|0;v=da+34|0;u=_+12|0;J=_+20|0;M=1;while(1){x=c[(s&p)+36>>2]|0;y=c[(W&p)>>2]|0;b:do if(x){k=c[(u&p)>>2]|0;if((k|0)>0){m=0;q=c[(J&p)>>2]|0;while(1){l=c[(q&p)>>2]|0;if(Hv(l,x,y)|0){if(!(c[(l&p)+4>>2]&1)){ea=32;break b}if((b[(l&o)+36>>1]|0)==(y|0)){ea=32;break b}}m=m+1|0;if((m|0)>=(k|0)){k=0;break}else q=q+48|0}}else k=0}else ea=32;while(0);if((ea|0)==32){ea=0;K=b[(c[(s&p)+8>>2]&o)>>1]|0;b[(P&o)>>1]=0;b[(Q&o)>>1]=0;b[(R&o)>>1]=0;a[(S&n)>>0]=0;b[(T&o)>>1]=0;L=ca;c[(L&p)>>2]=g;c[(L&p)+4>>2]=h;b[(U&o)>>1]=K;c[(V&p)>>2]=s;L=s+51|0;z=a[(L&n)>>0]|0;c:do if(((z&4)==0?(aa=c[((c[(f&p)>>2]|0)&p)+8>>2]|0,(aa|0)!=0):0)?(ba=c[(aa&p)>>2]|0,(ba|0)>0):0){I=c[(aa&p)+4>>2]|0;H=s+46|0;B=s+4|0;A=0;while(1){E=c[(I+(A*20|0)&p)>>2]|0;d:do if(!E)E=0;else while(1){D=c[(E&p)+4>>2]|0;if(!(D&4096))break d;if(!(D&262144))E=E+12|0;else E=c[((c[(E&p)+20>>2]|0)&p)+4>>2]|0;E=c[(E&p)>>2]|0;if(!E){E=0;break}}while(0);if((a[(E&n)>>0]|0)!=-102){A=0;break c}if((c[(E&p)+28>>2]|0)==(y|0)){D=b[(E&o)+32>>1]|0;if(D<<16>>16<0){A=1;break c}E=b[(H&o)>>1]|0;if(E<<16>>16){C=c[(B&p)>>2]|0;E=E&65535;F=0;do{if(D<<16>>16==(b[(C+(F<<1)&o)>>1]|0)){A=1;break c}F=F+1|0}while((F|0)<(E|0))}}A=A+1|0;if((A|0)>=(ba|0)){A=0;break}}}else A=0;while(0);do if((c[(s&p)+40>>2]|0)<1){c[(Y&p)>>2]=256;a[(S&n)>>0]=(A|0)!=0?M&255:0;b[(X&o)>>1]=(K&65535)+16;Iv(_,ca,K);k=Fv(f,ca)|0;b[(U&o)>>1]=K;if(k)break a}else{if(!(z&32)){H=N;I=c[(H&p)>>2]|0;H=c[(H&p)+4>>2]|0;F=s+4|0;E=0;D=0;C=e[(s&o)+48>>1]|0;e:while(1){B=C;while(1){C=B+-1|0;if((B|0)<=0)break e;B=b[((c[(F&p)>>2]|0)+(C<<1)&o)>>1]|0;if((B&65535)<63)break;else B=C}t=iw(1,0,B<<16>>16|0)|0;E=t|E;D=G|D}t=I&~E;x=H&~D;E=t;D=x;x=(t|0)==0&(x|0)==0?576:512}else{E=0;D=0;x=576}c[(Y&p)>>2]=x;t=(A|0)!=0;if(!t?(a[(w&n)>>0]&32)==0:0){if(!((E|0)==0&(D|0)==0))break;if(a[(L&n)>>0]&4)break;if((b[(s&o)+44>>1]|0)>=(b[(O&o)>>1]|0))break;if(!((b[(v&o)>>1]&4)==0&(c[2190]|0)!=0))break;if(b[((c[(c[(da&p)>>2]&p)>>2]|0)&o)+60>>1]&64)break}a[(S&n)>>0]=t?M&255:0;r=K<<16>>16;t=r+1+(((b[(s&o)+44>>1]|0)*15|0)/(b[(O&o)>>1]|0)|0)&65535;if(!((E|0)==0&(D|0)==0))t=Gv(t,r+16&65535)|0;b[(X&o)>>1]=t;Iv(_,ca,K);k=Fv(f,ca)|0;b[(U&o)>>1]=K;if(k)break a}while(0);k=Jv(f,Z,s,0)|0;if(c[($&p)>>2]|0)break a}s=c[(s&p)+20>>2]|0;if(!((k|0)==0&(s|0)!=0))break;else M=M+1|0}}while(0);i=ga;return k|0}function Iu(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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,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;ca=i;i=i+608|0;if((i|0)>=(j|0))fa();aa=ca+168|0;_=ca+576|0;$=ca+112|0;Y=ca+56|0;Z=ca;k=c[(f&p)>>2]|0;V=c[(f&p)+4>>2]|0;r=c[(V&p)+20>>2]|0;q=c[(V&p)+12>>2]|0;X=r+(q*48|0)|0;U=c[(f&p)+12>>2]|0;l=$+0|0;m=l+56|0;do{c[(l&p)>>2]=0;l=l+4|0}while((l|0)<(m|0));m=c[(k&p)+4>>2]|0;l=d[(U&n)+16>>0]|0;T=c[(m+(l*72|0)&p)+48>>2]|0;a:do if((q|0)>0){D=U+8|0;E=_+8|0;F=_+16|0;G=U+40|0;H=U+48|0;I=U+36|0;J=U+18|0;K=U+17|0;L=U+24|0;M=U+20|0;N=U+22|0;O=aa+4|0;P=aa+8|0;Q=aa+12|0;R=aa+20|0;S=_+4|0;z=m+(l*72|0)+24|0;A=Z+8|0;B=$+8|0;C=Y+8|0;while(1){b:do if((b[(r&o)+18>>1]&256)!=0?(W=c[(r&p)+12>>2]|0,w=W+408|0,v=D,!((c[(v&p)>>2]&c[(w&p)>>2]|0)==0?(c[(v&p)+4>>2]&c[(w&p)+4>>2]|0)==0:0)):0){q=W+20|0;y=(c[(q&p)>>2]|0)+((c[(W&p)+12>>2]|0)*48|0)|0;c[(_&p)>>2]=c[(f&p)>>2];c[(_&p)+4>>2]=c[(f&p)+4>>2];c[(_&p)+8>>2]=c[(f&p)+8>>2];c[(_&p)+12>>2]=c[(f&p)+12>>2];c[(E&p)>>2]=0;c[(F&p)>>2]=Y;q=c[(q&p)>>2]|0;c:do if(q>>>0>>0){l=1;k=0;d:while(1){if(!(b[(q&o)+18>>1]&512))if((c[(q&p)+8>>2]|0)==(T|0)){c[(aa&p)>>2]=c[(V&p)>>2];c[(O&p)>>2]=V;a[(P&n)>>0]=72;c[(Q&p)>>2]=1;c[(R&p)>>2]=q;m=aa;ba=10}else m=l;else{m=c[(q&p)+12>>2]|0;ba=10}do if((ba|0)==10){ba=0;c[(S&p)>>2]=m;b[(Y&o)>>1]=0;if(!(a[((c[(z&p)>>2]|0)&n)+44>>0]&16))k=Hu(_,g,h)|0;else k=Gu(_,g,h)|0;if(!k)k=Iu(_,g,h)|0;m=b[(Y&o)>>1]|0;if(!(m<<16>>16))break d;if(l){b[($&o)>>1]=m;kw(B|0,C|0,(m&65535)<<4|0)|0;m=0;break}w=b[($&o)>>1]|0;b[(Z&o)>>1]=w;x=w&65535;kw(A|0,B|0,x<<4|0)|0;b[($&o)>>1]=0;if(!(w<<16>>16))m=0;else{w=0;do{if(!(m<<16>>16))m=0;else{s=Z+(w<<4)+8|0;l=c[(s&p)>>2]|0;s=c[(s&p)+4>>2]|0;t=b[(Z+(w<<4)&o)+16>>1]|0;u=b[(Z+(w<<4)&o)+18>>1]|0;v=0;do{da=Y+(v<<4)+8|0;ea=c[(da&p)>>2]|l;da=c[(da&p)+4>>2]|s;m=Gv(t,b[(Y+(v<<4)&o)+16>>1]|0)|0;Kv($,ea,da,m,Gv(u,b[(Y+(v<<4)&o)+18>>1]|0)|0);v=v+1|0;m=b[(Y&o)>>1]|0}while((v|0)<(m&65535|0))}w=w+1|0}while((w|0)<(x|0));m=0}}while(0);q=q+48|0;if(q>>>0>=y>>>0)break c;else l=m}b[($&o)>>1]=0}else k=0;while(0);b[(G&o)>>1]=1;c[(c[(H&p)>>2]&p)>>2]=r;c[(I&p)>>2]=8192;b[(J&o)>>1]=0;a[(K&n)>>0]=0;c[(L&p)>>2]=0;c[(L&p)+4>>2]=0;c[(L&p)+8>>2]=0;if(k)break a;q=e[($&o)>>1]|0;m=0;while(1){if((m|0)>=(q|0))break b;b[(M&o)>>1]=(e[($+(m<<4)&o)+16>>1]|0)+1;b[(N&o)>>1]=b[($+(m<<4)&o)+18>>1]|0;v=$+(m<<4)+8|0;w=c[(v&p)+4>>2]|0;k=U;c[(k&p)>>2]=c[(v&p)>>2];c[(k&p)+4>>2]=w;k=Fv(f,U)|0;if(!k)m=m+1|0;else break a}}while(0);r=r+48|0;if(r>>>0>=X>>>0){k=0;break}}}else k=0;while(0);i=ca;return k|0}function Ju(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=d+48|0;f=c[(e&p)>>2]|0;g=d+56|0;if((f|0)!=(g|0))mg(a,f);Lv(a,d);c[(e&p)>>2]=g;b[(d&o)+40>>1]=0;b[(d&o)+44>>1]=3;c[(d&p)+36>>2]=0;return}function Ku(d,f){d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=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,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,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;oa=i;i=i+32|0;if((i|0)>=(j|0))fa();ea=oa+24|0;aa=oa+16|0;ia=oa+8|0;na=oa;da=c[(d&p)>>2]|0;ka=c[(da&p)>>2]|0;r=a[(d&n)+41>>0]|0;la=r&255;if((r&255)<2)Y=1;else Y=r<<24>>24==2?5:10;ma=d+8|0;l=c[(ma&p)>>2]|0;ga=f<<16>>16==0;if((l|0)==0|ga)X=0;else X=c[(l&p)>>2]|0;m=X<<1;ja=m+(ca((la<<3)+64|0,Y)|0)|0;ja=mh(ka,ja,((ja|0)<0)<<31>>31)|0;do if(ja){l=ja+(Y<<5)|0;c[(l&p)>>2]=0;c[(l&p)+4>>2]=0;c[(l&p)+8>>2]=0;c[(l&p)+12>>2]=0;c[(l&p)+16>>2]=0;c[(l&p)+20>>2]=0;c[(l&p)+24>>2]=0;c[(l&p)+28>>2]=0;g=Y<<1;q=ca(Y,-2)|0;q=ja+((ca((((q|0)>-1?q:1073741823)+(Y<<1)<<2)+4|0,la)|0)+(Y<<6))|0;k=g;h=ja;g=ja+(g<<5)|0;while(1){c[(h&p)+24>>2]=g;k=k+-1|0;if((k|0)<=0)break;else{h=h+32|0;g=g+(la<<2)|0}}k=(X|0)!=0;if(k)fw(q|0,0,m|0)|0;else q=0;W=c[(da&p)+424>>2]|0;b[(ja+(Y<<5)&o)+16>>1]=W>>>0<48?W&65535:48;if(k)a[(ja+(Y<<5)&n)+22>>0]=r<<24>>24!=0?-1:X&255;W=r<<24>>24==0;if(!W){S=d+16|0;T=d+34|0;U=f<<16>>16<11;V=(f&65535)+16|0;P=f<<16>>16;Q=((P|0)<0)<<31>>31;R=Y>>>0>1;g=ja;O=0;m=0;r=0;f=0;h=1;while(1){if((h|0)>0){J=O&65535;K=O<<2;L=g+18|0;M=g+16|0;N=0;k=0;I=l;while(1){s=c[(S&p)>>2]|0;if(s){D=I+22|0;E=I+16|0;F=I+20|0;G=I+24|0;H=I+8|0;C=k;while(1){u=a[(D&n)>>0]|0;v=aa;c[(v&p)>>2]=0;c[(v&p)+4>>2]=0;v=s;k=I;t=c[(k&p)>>2]|0;k=c[(k&p)+4>>2]|0;a:do if(((c[(v&p)>>2]&~t|0)==0?(c[(v&p)+4>>2]&~k|0)==0:0)?(Z=s+8|0,$=Z,_=c[($&p)>>2]|0,$=c[($&p)+4>>2]|0,(_&t|0)==0&($&k|0)==0):0){y=e[(E&o)>>1]|0;A=Gv(b[(s&o)+18>>1]|0,y+(e[(s&o)+20>>1]|0)&65535)|0;A=Gv(A,b[(F&o)>>1]|0)|0;y=(e[(s&o)+22>>1]|0)+y|0;B=y&65535;x=_|t;v=$|k;if(u<<24>>24<0)z=Mv(d,c[(ma&p)>>2]|0,I,b[(T&o)>>1]|0,J,s,aa)|0;else{k=H;t=c[(k&p)+4>>2]|0;z=aa;c[(z&p)>>2]=c[(k&p)>>2];c[(z&p)+4>>2]=t;z=u}u=z<<24>>24;if(z<<24>>24>-1&(X|0)>(u|0)){w=q+(u<<1)|0;t=b[(w&o)>>1]|0;if(!(t<<16>>16)){u=((X-u|0)*100|0)/(X|0)|0;u=(fs(u,((u|0)<0)<<31>>31)|0)&65535;if(U)k=0;else k=((fs(P,Q)|0)&65535)+65503&65535;u=V+(((u<<16)+-4325376|0)>>>16)+k|0;if(b[(T&o)>>1]&1024)u=(u&65535)+16|0;t=u&65535;b[(w&o)>>1]=t}w=Gv(A,t)|0}else w=A;b:do if((C|0)>0){u=0;t=g;while(1){k=t;if(((c[(k&p)>>2]|0)==(x|0)?(c[(k&p)+4>>2]|0)==(v|0):0)?(a[(t&n)+22>>0]^z)<<24>>24>-1:0)break;u=u+1|0;if((u|0)>=(C|0)){ba=35;break b}else t=t+32|0}k=b[(t&o)+18>>1]|0;if(k<<16>>16>16){k=C;break a}if(k<<16>>16!=w<<16>>16){k=C;break}if((b[(t&o)+16>>1]|0)>(y<<16>>16|0))k=C;else{k=C;break a}}else ba=35;while(0);if((ba|0)==35){ba=0;t=(C|0)<(Y|0);if(!t){if(w<<16>>16>m<<16>>16){k=C;break}if(!(w<<16>>16!=m<<16>>16?1:A<<16>>16>16)){k=C;break}}k=(t&1)+C|0;t=g+((t?C:r)<<5)|0}u=I;y=Z;v=c[(y&p)+4>>2]|c[(u&p)+4>>2];x=t;c[(x&p)>>2]=c[(y&p)>>2]|c[(u&p)>>2];c[(x&p)+4>>2]=v;x=aa;v=c[(x&p)+4>>2]|0;u=t+8|0;c[(u&p)>>2]=c[(x&p)>>2];c[(u&p)+4>>2]=v;b[(t&o)+16>>1]=B;b[(t&o)+18>>1]=w;b[(t&o)+20>>1]=A;a[(t&n)+22>>0]=z;t=t+24|0;kw(c[(t&p)>>2]|0,c[(G&p)>>2]|0,K|0)|0;c[((c[(t&p)>>2]|0)+(O<<2)&p)>>2]=s;if((k|0)<(Y|0))break;m=b[(L&o)>>1]|0;f=b[(M&o)>>1]|0;if(R){v=g;w=1;u=m;r=0;t=f}else{r=0;break}while(1){m=b[(v&o)+50>>1]|0;do if(m<<16>>16<=u<<16>>16){if(m<<16>>16!=u<<16>>16){m=u;f=t;break}f=b[(v&o)+52>>1]|0;if(f<<16>>16>t<<16>>16)ba=48;else{m=u;f=t}}else{f=b[(v&o)+52>>1]|0;ba=48}while(0);v=v+32|0;if((ba|0)==48){ba=0;r=w}w=w+1|0;if((w|0)>=(Y|0))break;else{u=m;t=f}}}else k=C;while(0);s=c[(s&p)+52>>2]|0;if(!s)break;else C=k}}N=N+1|0;if((N|0)==(h|0)){h=k;break}else I=I+32|0}}else h=0;O=O+1|0;if((O|0)>=(la|0))break;else{N=g;g=l;l=N}}if(!h){th(da,34008,ea);mg(ka,ja);break}if((h|0)>1){k=1;l=g;do{if((b[(l&o)+18>>1]|0)>(b[(g+(k<<5)&o)+18>>1]|0))l=g+(k<<5)|0;k=k+1|0}while((k|0)!=(h|0))}else l=g;if(!W){h=d+4|0;k=c[(l&p)+24>>2]|0;g=0;do{ba=c[(k+(g<<2)&p)>>2]|0;c[(d+(g*80|0)&p)+800>>2]=ba;ba=a[(ba&n)+16>>0]|0;a[(d+(g*80|0)&n)+780>>0]=ba;c[(d+(g*80|0)&p)+740>>2]=c[((c[(h&p)>>2]|0)+((ba&255)*72|0)&p)+48>>2];g=g+1|0}while((g|0)<(la|0))}}h=d+34|0;if(((b[(h&o)>>1]&1536)==1024?(ha=d+40|0,!((a[(ha&n)>>0]|0)!=0|ga)):0)?(ba=d+12|0,aa=la+-1|0,aa=(Mv(d,c[(ba&p)>>2]|0,l,512,aa&65535,c[((c[(l&p)+24>>2]|0)+(aa<<2)&p)>>2]|0,ia)|0)<<24>>24,(aa|0)==(c[(c[(ba&p)>>2]&p)>>2]|0)):0)a[(ha&n)>>0]=2;k=c[(ma&p)>>2]|0;if(k){g=b[(h&o)>>1]|0;h=a[(l&n)+22>>0]|0;if(g&512){if((h<<24>>24|0)==(c[(k&p)>>2]|0))a[(d&n)+40>>0]=2}else{a[(d&n)+36>>0]=h<<24>>24<0?0:h;$=l+8|0;aa=c[($&p)+4>>2]|0;ba=d+24|0;c[(ba&p)>>2]=c[($&p)>>2];c[(ba&p)+4>>2]=aa}if(((g&2048)!=0?(a[(d&n)+36>>0]|0)==(c[(k&p)>>2]|0):0)?(ba=na,c[(ba&p)>>2]=0,c[(ba&p)+4>>2]=0,ba=la+-1|0,ba=(Mv(d,k,l,0,ba&65535,c[((c[(l&p)+24>>2]|0)+(ba<<2)&p)>>2]|0,na)|0)<<24>>24,(ba|0)==(c[(c[(ma&p)>>2]&p)>>2]|0)):0){a[(d&n)+37>>0]=1;$=na;aa=c[($&p)+4>>2]|0;ba=d+24|0;c[(ba&p)>>2]=c[($&p)>>2];c[(ba&p)+4>>2]=aa}}b[(d&o)+32>>1]=b[(l&o)+16>>1]|0;mg(ka,ja)}while(0);i=oa;return}function Lu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((b|0)!=0?(g=c[(b&p)>>2]|0,(g|0)>0):0){e=c[(b&p)+4>>2]|0;d=0;b=0;f=0;do{h=Av(a,c[(e+(f*20|0)&p)>>2]|0)|0;d=h|d;b=G|b;f=f+1|0}while((f|0)<(g|0))}else{b=0;d=0}G=b;return d|0}function Mu(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;do if((((c[(d&p)+8>>2]|0)==(c[(e&p)+40>>2]|0)?(b[(d&o)+18>>1]&2)!=0:0)?(i=d+32|0,(c[(i&p)>>2]&f|0)==0?(c[(i&p)+4>>2]&g|0)==0:0):0)?(h=c[(d&p)+12>>2]|0,(h|0)>=0):0){f=a[((c[((c[(e&p)+16>>2]|0)&p)+4>>2]|0)+(h*24|0)&n)+21>>0]|0;g=(nv(c[(d&p)>>2]|0)|0)<<24>>24;if((g|0)==66){g=f<<24>>24==66&1;break}else if((g|0)==65){g=1;break}else{g=f<<24>>24>66&1;break}}else g=0;while(0);return g|0}function Nu(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=d+44|0;if((e[(j&o)>>1]|0|0)<(f|0)){g=f+7&-8;h=mh(a,g<<2,0)|0;if(!h)f=7;else{i=d+48|0;kw(h|0,c[(i&p)>>2]|0,(e[(j&o)>>1]|0)<<2|0)|0;f=c[(i&p)>>2]|0;if((f|0)!=(d+56|0))mg(a,f);c[(i&p)>>2]=h;b[(j&o)>>1]=g;f=0}}else f=0;return f|0}function Ou(a,b,d){a=a|0;b=b|0;d=d|0;do if(!(c[(b&p)+4>>2]&256)){if((d|0)!=0?(c[(d&p)+4>>2]&256|0)!=0:0){b=cu(a,d)|0;break}b=cu(a,b)|0;if(!b)b=cu(a,d)|0}else b=cu(a,b)|0;while(0);return b|0}function Pu(e,f,g,h,k,l){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=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;B=i;i=i+144|0;if((i|0)>=(j|0))fa();w=B;A=B+8|0;r=B+36|0;if(((a[(e&n)+450>>0]|0)==2?(t=d[(g&n)+44>>0]|0,z=c[(e&p)+8>>2]|0,q=c[(e&p)>>2]|0,y=c[(e&p)+464>>2]|0,v=c[(g&p)+64>>2]|0,x=v+36|0,u=c[(x&p)>>2]|0,(u&8192|0)==0):0)?(m=l&65535,(m&64|0)==0):0){l=u&48;do if(!l){if((u&1024|0)==0?(b[(v&o)+24>>1]|0)!=0:0){s=1;break}s=(m&3|0)!=0}else s=1;while(0);c[(A&p)+4>>2]=r;c[(A&p)+8>>2]=r;c[(A&p)+12>>2]=0;c[(A&p)+16>>2]=100;c[(A&p)+20>>2]=1e9;a[(A&n)+24>>0]=1;a[(A&n)+25>>0]=0;c[(A&p)>>2]=q;e=s?33576:33584;g=e;while(1)if(!(a[(g&n)>>0]|0))break;else g=g+1|0;Sk(A,e,g-e&1073741823);if(!(c[(f+(t*72|0)&p)+28>>2]|0)){c[(w&p)>>2]=c[(f+(t*72|0)&p)+16>>2];En(A,0,33608,w)}else{c[(w&p)>>2]=d[(f+(t*72|0)&n)+46>>0];En(A,0,33592,w)}e=c[(f+(t*72|0)&p)+20>>2]|0;if(e){c[(w&p)>>2]=e;En(A,0,33624,w)}do if(!(u&1280)){m=v+28|0;g=c[(m&p)>>2]|0;l=f+(t*72|0)+24|0;if((a[((c[(l&p)>>2]|0)&n)+44>>0]&32)!=0?(a[(g&n)+51>>0]&3)==2:0)if(s)e=33632;else break;else if(!(u&131072))if(!(u&16384))e=(u&64|0)==0?33744:33720;else e=33688;else e=33648;Sk(A,33760,7);c[(w&p)>>2]=c[(g&p)>>2];En(A,0,e,w);u=b[(v&o)+24>>1]|0;s=c[((c[(l&p)>>2]|0)&p)+4>>2]|0;r=c[((c[(m&p)>>2]|0)&p)+4>>2]|0;g=u&65535;if(!(u<<16>>16)){if(!(c[(x&p)>>2]&48))break;Sk(A,33904,2);m=0}else{l=b[(v&o)+42>>1]|0;Sk(A,33904,2);l=l&65535;m=0;do{e=b[(r+(m<<1)&o)>>1]|0;if(e<<16>>16<0)e=20456;else e=c[(s+((e<<16>>16)*24|0)&p)>>2]|0;if((m|0)<(l|0)){if(m)Sk(A,33920,5);c[(w&p)>>2]=e;En(A,0,33928,w)}else Nv(A,m,e,33912);m=m+1|0}while((m|0)<(g|0));m=g>>>0>1?g:1}l=c[(x&p)>>2]|0;if(!(l&32))e=m;else{l=b[(r+(m<<1)&o)>>1]|0;if(l<<16>>16<0)l=20456;else l=c[(s+((l<<16>>16)*24|0)&p)>>2]|0;Nv(A,m,l,33936);l=c[(x&p)>>2]|0;e=m+1|0}if(l&16){m=b[(r+(m<<1)&o)>>1]|0;if(m<<16>>16<0)m=20456;else m=c[(s+((m<<16>>16)*24|0)&p)>>2]|0;Nv(A,e,m,33944)}Sk(A,33952,1)}else{if((u&256|0)==0|(u&15|0)==0){if(!(u&1024))break;u=c[(v&p)+32>>2]|0;c[(w&p)>>2]=c[(v&p)+24>>2];c[(w&p)+4>>2]=u;En(A,0,33872,w);break}if(!(u&5))if((l|0)==48)l=33784;else l=(u&32|0)==0?33824:33808;else l=33768;Sk(A,33840,27);m=l;while(1)if(!(a[(m&n)>>0]|0))break;else m=m+1|0;Sk(A,l,m-l&1073741823)}while(0);u=tg(A)|0;xh(z,wh(z,157,y,h,k)|0,u,-1)}i=B;return}function Qu(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,o=0;l=c[(d&p)>>2]|0;o=c[(b&p)+8>>2]|0;i=a[(l&n)>>0]|0;do if(i<<24>>24==76)wh(o,28,0,h,0)|0;else if(i<<24>>24==79)h=is(b,c[(l&p)+16>>2]|0,h)|0;else{j=c[(e&p)+64>>2]|0;i=j+36|0;if(((c[(i&p)>>2]&1024|0)==0?(k=c[(j&p)+28>>2]|0,(k|0)!=0):0)?(a[((c[(k&p)+28>>2]|0)+f&n)>>0]|0)!=0:0)g=(g|0)==0&1;m=mv(b,l,4,0)|0;if((m|0)==4)g=(g|0)==0&1;l=c[(l&p)+28>>2]|0;f=(g|0)!=0;wh(o,f?105:108,l,0,0)|0;c[(i&p)>>2]=c[(i&p)>>2]|2048;k=e+56|0;i=c[(k&p)>>2]|0;if(!i){c[(e&p)+16>>2]=xs(o)|0;i=c[(k&p)>>2]|0}j=i+1|0;c[(k&p)>>2]=j;i=e+60|0;j=Wl(c[(b&p)>>2]|0,c[(i&p)>>2]|0,j*12|0,0)|0;c[(i&p)>>2]=j;if(!j){c[(k&p)>>2]=0;break}i=(c[(k&p)>>2]|0)+-1|0;c[(j+(i*12|0)&p)>>2]=l;if((m|0)==1)g=wh(o,103,l,h,0)|0;else g=wh(o,47,l,0,h)|0;c[(j+(i*12|0)&p)+4>>2]=g;a[(j+(i*12|0)&n)+8>>0]=f?6:7;wh(o,76,h,0,0)|0}while(0);Ru(e,d);return h|0}function Ru(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a:do if(e){i=d+72|0;h=0;while(1){f=e+20|0;g=b[(f&o)>>1]|0;if(g&4)break a;if((c[(d&p)>>2]|0)!=0?(c[((c[(e&p)>>2]|0)&p)+4>>2]&1|0)==0:0)break a;j=i;k=e+40|0;if(!((c[(k&p)>>2]&c[(j&p)>>2]|0)==0?(c[(k&p)+4>>2]&c[(j&p)+4>>2]|0)==0:0))break a;g=g&65535;b[(f&o)>>1]=g|((h|0)==0|(g&1024|0)==0?4:512);g=c[(e&p)+4>>2]|0;if((g|0)<0)break a;e=c[((c[(e&p)+24>>2]|0)&p)+20>>2]|0;j=e+(g*48|0)+22|0;f=(a[(j&n)>>0]|0)+-1<<24>>24;a[(j&n)>>0]=f;if(f<<24>>24)break a;e=e+(g*48|0)|0;if(!e)break;else h=h+1|0}}while(0);return}function Su(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0;do if(!(b[((c[(d&p)>>2]|0)&o)+60>>1]&2)){k=d+116|0;j=0;h=k;while(1){i=h+12|0;if(!(c[(i&p)>>2]|0)){q=4;break}j=j+1|0;if((j|0)>=10){l=0;h=-1;m=2147483647;break}else h=h+20|0}if((q|0)==4){c[(h&p)+8>>2]=c[(d&p)+100>>2];c[(h&p)>>2]=e;b[(h&o)+4>>1]=f;c[(i&p)>>2]=g;a[(h&n)+6>>0]=0;g=d+104|0;e=c[(g&p)>>2]|0;c[(g&p)>>2]=e+1;c[(h&p)+16>>2]=e;break}while(1){j=c[(k&p)+16>>2]|0;i=(j|0)<(m|0);h=i?l:h;l=l+1|0;if((l|0)==10)break;else{m=i?j:m;k=k+20|0}}if((h|0)>-1){c[(d+(h*20|0)&p)+124>>2]=c[(d&p)+100>>2];c[(d+(h*20|0)&p)+116>>2]=e;b[(d+(h*20|0)&o)+120>>1]=f;c[(d+(h*20|0)&p)+128>>2]=g;a[(d+(h*20|0)&n)+122>>0]=0;g=d+104|0;e=c[(g&p)>>2]|0;c[(g&p)>>2]=e+1;c[(d+(h*20|0)&p)+132>>2]=e}}while(0);return}function Tu(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=c[(d&p)+8>>2]|0;m=c[(e&p)+64>>2]|0;q=b[(m&o)+24>>1]|0;s=b[(m&o)+42>>1]|0;w=c[(m&p)+28>>2]|0;t=d+72|0;l=c[(t&p)>>2]|0;i=l+1|0;v=q&65535;r=v+g|0;c[(t&p)>>2]=l+r;t=c[(d&p)>>2]|0;w=kh(t,ot(u,w)|0)|0;t=(w|0)!=0;if(!t)a[((c[(d&p)>>2]|0)&n)+65>>0]=1;if(s<<16>>16){g=c[(e&p)+8>>2]|0;j=(f|0)!=0;wh(u,j?105:108,g,0,0)|0;k=wh(u,16,0,0,0)|0;l=s&65535;j=wh(u,j?62:65,g,0,i)|0;xh(u,j,l,-14);c[(e&p)+20>>2]=j;j=c[(u&p)+32>>2]|0;if(j>>>0>k>>>0)c[((c[(u&p)+4>>2]|0)+(k*20|0)&p)+8>>2]=j;c[((c[(u&p)+24>>2]|0)&p)+88>>2]=j+-1;k=0;do{wh(u,47,g,k,k+i|0)|0;k=k+1|0}while((k|0)<(l|0))}if((s&65535)<(q&65535)){m=m+48|0;l=e+12|0;q=(r|0)==1;r=s&65535;k=i;while(1){j=c[((c[(m&p)>>2]|0)+(r<<2)&p)>>2]|0;g=r+k|0;i=Qu(d,j,e,r,f,g)|0;do if((i|0)!=(g|0))if(q){_r(d,k);break}else{wh(u,34,i,g,0)|0;i=k;break}else i=k;while(0);if(!(b[(j&o)+18>>1]&129)){g=c[((c[(j&p)>>2]|0)&p)+16>>2]|0;if(Uu(g)|0)wh(u,76,i+r|0,c[(l&p)>>2]|0,0)|0;if(t){j=w+r|0;if((Bu(g,a[(j&n)>>0]|0)|0)<<24>>24==65){a[(j&n)>>0]=65;k=65}else k=a[(j&n)>>0]|0;if(Vu(g,k)|0)a[(j&n)>>0]=65}}r=r+1|0;if((r|0)>=(v|0))break;else k=i}}c[(h&p)>>2]=w;return i|0}function Uu(d){d=d|0;var e=0;e=a[(d&n)>>0]|0;if((e+99&255)<2)do{d=c[(d&p)+12>>2]|0;e=a[(d&n)>>0]|0}while((e+99&255)<2);if(e<<24>>24==-97)e=a[(d&n)+38>>0]|0;switch(e&255|0){case 134:case 133:case 97:case 132:{d=0;break}case 154:{if(!(c[(d&p)+4>>2]&1048576)){e=b[(d&o)+32>>1]|0;if(e<<16>>16>-1)d=(a[((c[((c[(d&p)+44>>2]|0)&p)+4>>2]|0)+((e<<16>>16)*24|0)&n)+20>>0]|0)==0;else d=0}else d=1;d=d&1;break}default:d=1}return d|0}function Vu(d,e){d=d|0;e=e|0;var f=0;a:do if(e<<24>>24==65)d=1;else{f=a[(d&n)>>0]|0;if((f+99&255)<2)do{d=c[(d&p)+12>>2]|0;f=a[(d&n)>>0]|0}while((f+99&255)<2);if(f<<24>>24==-97)f=a[(d&n)+38>>0]|0;switch(f&255|0){case 132:{d=(e+-67&255)<2&1;break a}case 97:{d=e<<24>>24==66&1;break a}case 154:{if((b[(d&o)+32>>1]|0)<0)d=(e+-67&255)<2;else d=0;d=d&1;break a}case 134:{d=1;break a}case 133:{d=(e<<24>>24==69|e<<24>>24==67)&1;break a}default:{d=0;break a}}}while(0);return d|0}function Wu(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=c[(b&p)+8>>2]|0;do if(f){a:do if((e|0)>0)while(1){if((a[(f&n)>>0]|0)!=65){g=f;break a}e=e+-1|0;d=d+1|0;f=f+1|0;if((e|0)<=0){g=f;break}}else g=f;while(0);while(1){if((e|0)<=1){i=8;break}f=e+-1|0;if((a[(g+f&n)>>0]|0)==65)e=f;else break}if((i|0)==8)if((e|0)<=0)break;wh(h,48,d,e,0)|0;xh(h,-1,g,e);dt(b,d,e)}while(0);return}function Xu(a,b){a=a|0;b=b|0;var d=0,e=0;if(b){Ov(b+328|0);e=b+16|0;d=c[(e&p)>>2]|0;if(d)do{c[(e&p)>>2]=c[(d&p)+52>>2];Ju(a,d);mg(a,d);d=c[(e&p)>>2]|0}while((d|0)!=0);mg(a,b)}return}function Yu(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+32|0;if((i|0)>=(j|0))fa();e=d;c[(e&p)>>2]=0;c[(e&p)+4>>2]=0;c[(e&p)+8>>2]=0;c[(e&p)+12>>2]=0;c[(e&p)+16>>2]=0;c[(e&p)+20>>2]=0;c[(e&p)>>2]=80;c[(e&p)+4>>2]=81;c[(e&p)+24>>2]=a;rs(e,b)|0;i=d;return}function Zu(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();o=r+4|0;q=r;m=c[(b&p)+8>>2]|0;c[(o&p)>>2]=0;c[(q&p)>>2]=0;if(!((m|0)==0|(d|0)==0)){h=a[(d&n)>>0]|0;g=h&255;a:do switch(g|0){case 75:{k=xs(m)|0;fu(b,d,k,(f|0)!=0?e:k);wh(m,16,0,e,0)|0;h=c[(m&p)+24>>2]|0;g=~k;if((k|0)<0?(l=c[(h&p)+112>>2]|0,(l|0)!=0):0)c[(l+(g<<2)&p)>>2]=c[(m&p)+32>>2];c[(h&p)+88>>2]=(c[(m&p)+32>>2]|0)+-1;break}case 77:case 76:{wh(m,g,$t(b,c[(d&p)+12>>2]|0,o)|0,e,0)|0;break}case 148:case 73:{f=d+12|0;l=$t(b,c[(f&p)>>2]|0,o)|0;k=d+16|0;m=$t(b,c[(k&p)>>2]|0,q)|0;au(b,c[(f&p)>>2]|0,c[(k&p)>>2]|0,h<<24>>24==73?79:78,l,m,e,128);break}case 71:{Zu(b,c[(d&p)+12>>2]|0,e,f);m=b+100|0;c[(m&p)>>2]=(c[(m&p)>>2]|0)+1;Zu(b,c[(d&p)+16>>2]|0,e,f);bu(b);break}case 79:case 78:case 83:case 80:case 81:case 82:{h=d+12|0;l=$t(b,c[(h&p)>>2]|0,o)|0;k=d+16|0;m=$t(b,c[(k&p)>>2]|0,q)|0;au(b,c[(h&p)>>2]|0,c[(k&p)>>2]|0,g,l,m,e,f);break}case 72:{l=xs(m)|0;gt(b,c[(d&p)+12>>2]|0,l,f^16);g=b+100|0;c[(g&p)>>2]=(c[(g&p)>>2]|0)+1;Zu(b,c[(d&p)+16>>2]|0,e,f);g=c[(m&p)+24>>2]|0;h=~l;if((l|0)<0?(k=c[(g&p)+112>>2]|0,(k|0)!=0):0)c[(k+(h<<2)&p)>>2]=c[(m&p)+32>>2];c[(g&p)+88>>2]=(c[(m&p)+32>>2]|0)+-1;bu(b);break}case 19:{gt(b,c[(d&p)+12>>2]|0,e,f);break}case 74:{_u(b,d,e,1,f);break}default:{if($u(d)|0){wh(m,16,0,e,0)|0;break a}if(!(mu(d)|0))wh(m,45,$t(b,d,o)|0,e,(f|0)!=0&1)|0}}while(0);_r(b,c[(o&p)>>2]|0);_r(b,c[(q&p)>>2]|0)}i=r;return}function _u(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0;r=i;i=i+208|0;if((i|0)>=(j|0))fa();l=r+152|0;h=r+104|0;k=r+56|0;m=r+8|0;o=r;c[(o&p)>>2]=0;q=m+0|0;s=(c[(d&p)+12>>2]|0)+0|0;t=q+48|0;do{c[(q&p)>>2]=c[(s&p)>>2];q=q+4|0;s=s+4|0}while((q|0)<(t|0));a[(l&n)>>0]=72;c[(l&p)+12>>2]=h;c[(l&p)+16>>2]=k;a[(h&n)>>0]=83;c[(h&p)+12>>2]=m;d=c[((c[(d&p)+20>>2]|0)&p)+4>>2]|0;c[(h&p)+16>>2]=c[(d&p)>>2];a[(k&n)>>0]=81;c[(k&p)+12>>2]=m;c[(k&p)+16>>2]=c[(d&p)+20>>2];d=$t(b,m,o)|0;a[(m&n)+38>>0]=a[(m&n)>>0]|0;a[(m&n)>>0]=-97;c[(m&p)+28>>2]=d;d=m+4|0;c[(d&p)>>2]=c[(d&p)>>2]&-4097;if(!f)gt(b,l,e,g);else Zu(b,l,e,g);_r(b,c[(o&p)>>2]|0);i=r;return}function $u(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))fa();b=d;c[(b&p)>>2]=0;if((c[(a&p)+4>>2]&1|0)==0?(Ms(a,b)|0)!=0:0)a=(c[(b&p)>>2]|0)!=0&1;else a=0;i=d;return a|0}function av(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if(!((a|0)==0|(b|0)==0)){e=c[(b&p)>>2]|0;if((e|0)>0){b=c[(b&p)+4>>2]|0;d=0;while(1){if((wv(a,c[(b+(d*20|0)&p)+4>>2]|0)|0)>-1){b=1;break a}d=d+1|0;if((d|0)>=(e|0)){b=0;break}}}else b=0}else b=1;while(0);return b|0}function bv(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0;m=c[(e&p)+20>>2]|0;a:do if((m|0)>0){q=b[(d&o)+38>>1]|0;r=q<<16>>16>0;s=d+4|0;l=d+36|0;i=(g|0)!=0;j=0;while(1){g=c[(e+(j<<3)&p)+40>>2]|0;if(r){d=(g|0)==0;k=0;do{if(!((c[(f+(k<<2)&p)>>2]|0)<=-1?!((k|0)==(b[(l&o)>>1]|0)&i):0))t=7;do if((t|0)==7){t=0;h=c[(s&p)>>2]|0;if(d)if(!(a[(h+(k*24|0)&n)+23>>0]&1))break;else{d=1;break a}else if(!(dd(c[(h+(k*24|0)&p)>>2]|0,g)|0)){d=1;break a}else break}while(0);k=k+1|0}while((k|0)<(q<<16>>16|0))}j=j+1|0;if((j|0)>=(m|0)){d=0;break}}}else d=0;while(0);return d|0}function cv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+48|0;if((i|0)>=(j|0))fa();m=x;s=x+8|0;w=c[(b&p)+408>>2]|0;w=(w|0)==0?b:w;l=w+528|0;g=c[(l&p)>>2]|0;a:do if(!g)k=5;else while(1){if((c[(g&p)>>2]|0)==(d|0)?(c[(g&p)+12>>2]|0)==(f|0):0)break a;g=c[(g&p)+4>>2]|0;if(!g){k=5;break}}while(0);do if((k|0)==5){u=c[(b&p)>>2]|0;g=mh(u,24,0)|0;if(g){k=g+0|0;h=k+24|0;do{a[(k&n)>>0]=0;k=k+1|0}while((k|0)<(h|0));c[(g&p)+4>>2]=c[(l&p)>>2];c[(l&p)>>2]=g;t=mh(u,28,0)|0;if(!t){c[(g&p)+8>>2]=0;g=0;break}k=t+0|0;h=k+24|0;do{a[(k&n)>>0]=0;k=k+1|0}while((k|0)<(h|0));c[(g&p)+8>>2]=t;o=(c[(w&p)+8>>2]|0)+192|0;c[(t&p)+24>>2]=c[(o&p)>>2];c[(o&p)>>2]=t;c[(g&p)>>2]=d;c[(g&p)+12>>2]=f;o=g+16|0;c[(o&p)>>2]=-1;q=g+20|0;c[(q&p)>>2]=-1;r=mh(u,536,0)|0;if(r){fw(r|0,0,536)|0;c[(s&p)>>2]=0;c[(s&p)+4>>2]=0;c[(s&p)+8>>2]=0;c[(s&p)+12>>2]=0;c[(s&p)+16>>2]=0;c[(s&p)+20>>2]=0;c[(s&p)+24>>2]=0;c[(s&p)+28>>2]=0;c[(s&p)>>2]=r;c[(r&p)>>2]=u;c[(r&p)+412>>2]=e;c[(r&p)+408>>2]=w;c[(r&p)+492>>2]=c[(d&p)>>2];a[(r&n)+436>>0]=a[(d&n)+8>>0]|0;c[(r&p)+424>>2]=c[(b&p)+424>>2];e=Oq(r)|0;if(e){c[(m&p)>>2]=c[(d&p)>>2];xh(e,-1,uh(u,34152,m)|0,-1);k=c[(d&p)+12>>2]|0;if(!k)l=0;else{h=Mr(u,k,0,0)|0;if((ls(s,h)|0)==0?(a[(u&n)+65>>0]|0)==0:0){k=xs(e)|0;gt(r,h,k,16)}else k=0;Gk(u,h);l=k}Pv(r,c[(d&p)+28>>2]|0,f);if(l){k=c[(e&p)+24>>2]|0;h=~l;if((l|0)<0?(v=c[(k&p)+112>>2]|0,(v|0)!=0):0)c[(v+(h<<2)&p)>>2]=c[(e&p)+32>>2];c[(k&p)+88>>2]=(c[(e&p)+32>>2]|0)+-1}wh(e,24,0,0,0)|0;h=b+64|0;k=c[(r&p)+4>>2]|0;if(!(c[(h&p)>>2]|0)){c[(b&p)+4>>2]=k;c[(h&p)>>2]=c[(r&p)+64>>2]}else mg(c[(r&p)>>2]|0,k);if(!(a[(u&n)+65>>0]|0)){m=e+4|0;s=c[(m&p)>>2]|0;Jn(e,w+392|0);c[(t&p)+4>>2]=c[(e&p)+32>>2];c[(m&p)>>2]=0;c[(t&p)>>2]=s}c[(t&p)+8>>2]=c[(r&p)+72>>2];c[(t&p)+12>>2]=c[(r&p)+68>>2];c[(t&p)+16>>2]=c[(r&p)+80>>2];c[(t&p)+20>>2]=d;c[(o&p)>>2]=c[(r&p)+428>>2];c[(q&p)>>2]=c[(r&p)+432>>2];Pl(e)}Ch(r);mg(u,r)}else g=0}else g=0}while(0);i=x;return g|0}function dv(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=Oq(b)|0;e=cv(b,d,e,g)|0;if(e){if(!(c[(d&p)>>2]|0))g=0;else g=((c[((c[(b&p)>>2]|0)&p)+24>>2]|0)>>>18&1^1)&255;b=b+72|0;d=(c[(b&p)>>2]|0)+1|0;c[(b&p)>>2]=d;wh(i,131,f,h,d)|0;xh(i,-1,c[(e&p)+8>>2]|0,-18);e=c[(i&p)+4>>2]|0;if(e)a[(e+(((c[(i&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=g}return}function ev(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();k=l;f=c[(a&p)>>2]|0;h=c[((c[(f&p)+16>>2]|0)+(e<<4)&p)>>2]|0;g=kc[c[(f&p)+284>>2]&7](c[(f&p)+288>>2]|0,20,b,d,h,c[(a&p)+492>>2]|0)|0;if((g|0)==1){if((e|0)!=0?1:(c[(f&p)+20>>2]|0)>2){c[(k&p)>>2]=h;c[(k&p)+4>>2]=b;c[(k&p)+8>>2]=d;th(a,27688,k)}else{c[(k&p)>>2]=b;c[(k&p)+4>>2]=d;th(a,27728,k)}c[(a&p)+12>>2]=23}else if(!((g|0)==0|(g|0)==2)){th(a,25232,k);c[(a&p)+12>>2]=1}i=l;return g|0}function fv(e,f,g,h,i,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var 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;B=Oq(e)|0;D=(c[(e&p)+68>>2]|0)+-1|0;E=xs(B)|0;if((l|0)<0)wh(B,135,d[(i&n)+24>>0]|0,E,0)|0;q=i+20|0;r=c[(q&p)>>2]|0;if((r|0)>0){t=k+1|0;s=0;do{wh(B,76,t+(c[(j+(s<<2)&p)>>2]|0)|0,E,0)|0;s=s+1|0;r=c[(q&p)>>2]|0}while((s|0)<(r|0))}do if(!m){if(!h){r=e+19|0;q=a[(r&n)>>0]|0;if(!(q<<24>>24)){h=e+72|0;t=(c[(h&p)>>2]|0)+1|0;c[(h&p)>>2]=t}else{t=q+-1<<24>>24;a[(r&n)>>0]=t;t=c[(e+((t&255)<<2)&p)+24>>2]|0}wh(B,34,k+1+(c[(j&p)>>2]|0)|0,t,0)|0;s=wh(B,38,t,0,0)|0;if(((l|0)==1?(c[(i&p)>>2]|0)==(g|0):0)?(wh(B,79,k,E,t)|0,u=c[(B&p)+4>>2]|0,(u|0)!=0):0)a[(u+(((c[(B&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=-112;Qq(e,D,f,g,54);wh(B,70,D,0,t)|0;wh(B,16,0,E,0)|0;q=c[(B&p)+32>>2]|0;if(q>>>0>1)c[((c[(B&p)+4>>2]|0)+((q+-2|0)*20|0)&p)+8>>2]=q;m=q+-1|0;r=(c[(B&p)+24>>2]|0)+88|0;c[(r&p)>>2]=m;if(q>>>0>s>>>0)c[((c[(B&p)+4>>2]|0)+(s*20|0)&p)+8>>2]=q;c[(r&p)>>2]=m;_r(e,t);break}z=e+60|0;t=c[(z&p)>>2]|0;A=e+56|0;s=c[(A&p)>>2]|0;if((s|0)<(r|0)){y=e+72|0;t=c[(y&p)>>2]|0;c[(y&p)>>2]=t+r;t=t+1|0}else{c[(z&p)>>2]=t+r;c[(A&p)>>2]=s-r}s=e+19|0;q=a[(s&n)>>0]|0;if(!(q<<24>>24)){m=e+72|0;y=(c[(m&p)>>2]|0)+1|0;c[(m&p)>>2]=y}else{y=q+-1<<24>>24;a[(s&n)>>0]=y;y=c[(e+((y&255)<<2)&p)+24>>2]|0}wh(B,54,D,c[(h&p)+40>>2]|0,f)|0;m=c[(e&p)+8>>2]|0;xh(m,-1,hs(e,h)|0,-6);m=(r|0)>0;if(m){s=k+1|0;q=0;do{wh(B,33,s+(c[(j+(q<<2)&p)>>2]|0)|0,q+t|0,0)|0;q=q+1|0}while((q|0)!=(r|0))}if((l|0)==1?(c[(i&p)>>2]|0)==(g|0):0){w=B+32|0;x=r+1+(c[(w&p)>>2]|0)|0;if(m){f=k+1|0;v=h+4|0;s=g+36|0;q=B+4|0;u=0;do{m=b[((c[(v&p)>>2]|0)+(u<<1)&o)>>1]|0;wh(B,78,f+(c[(j+(u<<2)&p)>>2]|0)|0,x,(m<<16>>16==(b[(s&o)>>1]|0)?0:(m<<16>>16)+1|0)+k|0)|0;m=c[(q&p)>>2]|0;if(m)a[(m+(((c[(w&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=16;u=u+1|0}while((u|0)!=(r|0))}wh(B,16,0,E,0)|0}k=ot(B,h)|0;xh(B,wh(B,49,t,r,y)|0,k,r);xh(B,wh(B,69,D,E,y)|0,0,-14);_r(e,y);dt(e,t,r);if((c[(A&p)>>2]|0)<(r|0)){c[(A&p)>>2]=r;c[(z&p)>>2]=t}}while(0);q=a[(i&n)+24>>0]|0;m=q<<24>>24==0;if(((m?(c[((c[(e&p)>>2]|0)&p)+24>>2]&16777216|0)==0:0)?(c[(e&p)+408>>2]|0)==0:0)?(a[(e&n)+20>>0]|0)==0:0)zs(e,787,2,0,-2,4);else{if(!((l|0)<1|m^1)){i=c[(e&p)+408>>2]|0;a[(((i|0)==0?e:i)&n)+21>>0]=1}wh(B,134,q&255,l,0)|0}m=c[(B&p)+24>>2]|0;q=~E;if((E|0)<0?(C=c[(m&p)+112>>2]|0,(C|0)!=0):0)c[(C+(q<<2)&p)>>2]=c[(B&p)+32>>2];c[(m&p)+88>>2]=(c[(B&p)+32>>2]|0)+-1;wh(B,61,D,0,0)|0;return}function gv(f,g,h,k,l,m,q,r){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;r=r|0;var 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;G=i;i=i+48|0;if((i|0)>=(j|0))fa();B=G+32|0;C=G;D=c[(f&p)>>2]|0;E=Oq(f)|0;if((r|0)<0)F=wh(E,135,d[(l&n)+24>>0]|0,0,0)|0;else F=0;A=l+20|0;if((c[(A&p)>>2]|0)>0){z=(k|0)==0;y=(m|0)==0;x=l+36|0;w=k+4|0;v=0;s=0;do{if(z)u=-1;else u=b[((c[(w&p)>>2]|0)+(v<<1)&o)>>1]|0;t=Qv(f,h,q,u)|0;if(y)u=x;else u=m+(v<<2)|0;s=ss(D,s,Zq(f,79,t,tt(D,27,c[((c[((c[(l&p)>>2]|0)&p)+4>>2]|0)+((c[(u&p)>>2]<<16>>16)*24|0)&p)>>2]|0)|0,0)|0)|0;v=v+1|0}while((v|0)<(c[(A&p)>>2]|0));u=l}else{u=l;s=0}if((r|0)>0?(c[(u&p)>>2]|0)==(h|0):0){if(!(a[(h&n)+44>>0]&32)){m=c[(f&p)>>2]|0;c[(B&p)>>2]=0;c[(B&p)+4>>2]=0;m=nr(m,159,B,0)|0;if(!m)m=0;else{c[(m&p)+28>>2]=q;a[(m&n)+1>>0]=68}u=c[(g&p)+48>>2]|0;c[(B&p)>>2]=0;c[(B&p)+4>>2]=0;t=nr(D,154,B,0)|0;if(t){c[(t&p)+44>>2]=h;c[(t&p)+28>>2]=u;b[(t&o)+32>>1]=-1}m=Zq(f,78,m,t,0)|0}else{u=h+8|0;while(1){u=c[(u&p)>>2]|0;if((a[(u&n)+51>>0]&3)==2)break;u=u+20|0}A=u+46|0;if(!(b[(A&o)>>1]|0))m=0;else{w=k+4|0;x=g+48|0;y=B+4|0;z=0;m=0;do{u=b[((c[(w&p)>>2]|0)+(z<<1)&o)>>1]|0;t=Qv(f,h,q,u)|0;v=c[(x&p)>>2]|0;c[(B&p)>>2]=0;c[(y&p)>>2]=0;k=nr(D,154,B,0)|0;if(k){c[(k&p)+44>>2]=h;c[(k&p)+28>>2]=v;b[(k&o)+32>>1]=u}m=ss(D,m,Zq(f,79,t,k,0)|0)|0;z=z+1|0}while((z|0)<(e[(A&o)>>1]|0))}m=Zq(f,19,m,0,0)|0}s=ss(D,s,m)|0};c[(C&p)>>2]=0;c[(C&p)+4>>2]=0;c[(C&p)+8>>2]=0;c[(C&p)+12>>2]=0;c[(C&p)+16>>2]=0;c[(C&p)+20>>2]=0;c[(C&p)+24>>2]=0;c[(C&p)+28>>2]=0;c[(C&p)+4>>2]=g;c[(C&p)>>2]=f;ls(C,s)|0;m=Vs(f,g,s,0,0,0,0)|0;wh(E,134,d[(l&n)+24>>0]|0,r,0)|0;if(m)Xs(m);Gk(D,s);if(F){m=c[(E&p)+32>>2]|0;if(m>>>0>F>>>0)c[((c[(E&p)+4>>2]|0)+(F*20|0)&p)+8>>2]=m;c[((c[(E&p)+24>>2]|0)&p)+88>>2]=m+-1}i=G;return}function hv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+32|0;if((i|0)>=(j|0))fa();t=w;r=w+16|0;v=w+28|0;k=c[(b&p)>>2]|0;u=Oq(b)|0;if(u){m=(c[(k&p)+16>>2]|0)+(d<<4)|0;o=b+388|0;q=(f|0)==0;s=0;a:while(1){l=c[(s<<3&p)+28744>>2]|0;h=_h(k,l,c[(m&p)>>2]|0)|0;do if(!h){if(!s){c[(t&p)>>2]=c[(m&p)>>2];c[(t&p)+4>>2]=l;c[(t&p)+8>>2]=28768;Br(b,28816,t);c[(r&p)>>2]=c[(o&p)>>2];a[(v&n)>>0]=4;s=s+1|0;continue a}}else{h=c[(h&p)+32>>2]|0;c[(r+(s<<2)&p)>>2]=h;a[(v+s&n)>>0]=0;gs(b,d,h,1,l);if(q){wh(u,118,h,d,0)|0;break}else{c[(t&p)>>2]=c[(m&p)>>2];c[(t&p)+4>>2]=l;c[(t&p)+8>>2]=g;c[(t&p)+12>>2]=f;Br(b,28840,t);break}}while(0);s=s+1|0;if((s|0)==3)break}xh(u,wh(u,55,e,c[(r&p)>>2]|0,d)|0,3,-14);h=c[(u&p)+4>>2]|0;if(h)a[(h+(((c[(u&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=a[(v&n)>>0]|0}i=w;return}function iv(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=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,O=0,P=0;G=c[(d&p)>>2]|0;H=i+1|0;I=i+2|0;M=i+3|0;N=i+4|0;O=i+5|0;L=i+6|0;J=i+7|0;K=d+72|0;P=c[(K&p)>>2]|0;c[(K&p)>>2]=(P|0)>(J|0)?P:J;P=Oq(d)|0;if((!((P|0)==0|(f|0)==0)?(s=f+32|0,(c[(s&p)>>2]|0)!=0):0)?(t=c[(f&p)>>2]|0,(Fc(t,25568,7)|0)!=0):0){m=c[(f&p)+68>>2]|0;a:do if(m){l=c[(G&p)+20>>2]|0;if((l|0)>0){k=c[(G&p)+16>>2]|0;r=0;while(1){q=r+1|0;if((c[(k+(r<<4)&p)+12>>2]|0)==(m|0)){q=r;break a}if((q|0)<(l|0))r=q;else break}}else q=0}else q=-1e6;while(0);if(!(Sq(d,28,t,0,c[((c[(G&p)+16>>2]|0)+(q<<4)&p)>>2]|0)|0)){gs(d,q,c[(s&p)>>2]|0,0,c[(f&p)>>2]|0);z=j+1|0;F=j+2|0;t=d+68|0;E=c[(t&p)>>2]|0;c[(t&p)>>2]=(E|0)>(F|0)?E:F;Qq(d,j,q,f,54);t=c[(f&p)>>2]|0;xh(P,wh(P,97,0,N,0)|0,t,0);t=c[(f&p)+8>>2]|0;F=(g|0)==0;if(!t)m=1;else{A=f+44|0;B=d+8|0;C=P+4|0;D=P+32|0;E=P+24|0;m=1;do{do if(F|(t|0)==(g|0)){m=(c[(t&p)+36>>2]|0)==0?0:m;s=a[(t&n)+51>>0]|0;if(!((a[(A&n)>>0]&32)!=0&(s&3)==2)){k=e[(t&o)+48>>1]|0;r=c[(t&p)>>2]|0;l=t+46|0;if(!(s&8)){v=l;u=k;s=k}else{v=l;u=k;s=e[(l&o)>>1]|0}}else{v=t+46|0;s=e[(v&o)>>1]|0;u=s;r=c[(f&p)>>2]|0}x=s+-1|0;xh(P,wh(P,97,0,O,0)|0,r,0);y=c[(K&p)>>2]|0;s=x+J|0;c[(K&p)>>2]=(y|0)>(s|0)?y:s;wh(P,54,z,c[(t&p)+40>>2]|0,q)|0;s=c[(B&p)>>2]|0;xh(s,-1,hs(d,t)|0,-6);wh(P,25,u,I,0)|0;wh(P,25,e[(v&o)>>1]|0,M,0)|0;wh(P,1,0,I,H)|0;xh(P,-1,28552,-5);s=c[(C&p)>>2]|0;if(s)a[(s+(((c[(D&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=2;y=wh(P,108,z,0,0)|0;wh(P,25,0,I,0)|0;r=c[(D&p)>>2]|0;if((x|0)>0){u=xs(P)|0;w=mh(G,x<<2,0)|0;if(!w)break;wh(P,16,0,0,0)|0;r=c[(D&p)>>2]|0;if(((x|0)==1?(b[(v&o)>>1]|0)==1:0)?(a[(t&n)+50>>0]|0)!=0:0)wh(P,77,J,u,0)|0;s=t+32|0;k=0;do{v=cr(d,c[((c[(s&p)>>2]|0)+(k<<2)&p)>>2]|0)|0;wh(P,25,k,I,0)|0;wh(P,47,z,k,M)|0;l=wh(P,78,M,0,k+J|0)|0;xh(P,l,v,-4);c[(w+(k<<2)&p)>>2]=l;l=c[(C&p)>>2]|0;if(l)a[(l+(((c[(D&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=-128;k=k+1|0}while((k|0)!=(x|0));wh(P,25,x,I,0)|0;wh(P,16,0,u,0)|0;s=r+-1|0;l=c[(D&p)>>2]|0;if(l>>>0>s>>>0)c[((c[(C&p)>>2]|0)+(s*20|0)&p)+8>>2]=l;c[((c[(E&p)>>2]|0)&p)+88>>2]=l+-1;s=0;while(1){k=c[(w+(s<<2)&p)>>2]|0;if(l>>>0>k>>>0)c[((c[(C&p)>>2]|0)+(k*20|0)&p)+8>>2]=l;c[((c[(E&p)>>2]|0)&p)+88>>2]=l+-1;wh(P,47,z,s,s+J|0)|0;s=s+1|0;if((s|0)==(x|0))break;l=c[(D&p)>>2]|0}l=c[(E&p)>>2]|0;k=~u;do if((u|0)<0){s=c[(l&p)+112>>2]|0;if(!s)break;c[(s+(k<<2)&p)>>2]=c[(D&p)>>2]}while(0);c[(l&p)+88>>2]=(c[(D&p)>>2]|0)+-1;mg(G,w)}wh(P,1,1,H,M)|0;xh(P,-1,28592,-5);s=c[(C&p)>>2]|0;if(s)a[(s+(((c[(D&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=2;wh(P,9,z,r,0)|0;wh(P,1,0,H,L)|0;xh(P,-1,28640,-5);s=c[(C&p)>>2]|0;if(s)a[(s+(((c[(D&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=1;xh(P,wh(P,49,N,3,M)|0,28632,0);wh(P,74,h,i,0)|0;wh(P,75,h,M,i)|0;r=c[(C&p)>>2]|0;s=c[(D&p)>>2]|0;if(r)a[(r+((s+-1|0)*20|0)&n)+3>>0]=8;if(s>>>0>y>>>0)c[(r+(y*20|0)&p)+8>>2]=s;c[((c[(E&p)>>2]|0)&p)+88>>2]=s+-1}while(0);t=c[(t&p)+20>>2]|0}while((t|0)!=0)}if(!(m<<24>>24==0|F^1)){wh(P,50,j,L,0)|0;m=wh(P,46,L,0,0)|0;wh(P,28,0,O,0)|0;xh(P,wh(P,49,N,3,M)|0,28632,0);wh(P,74,h,i,0)|0;wh(P,75,h,M,i)|0;l=c[(P&p)+4>>2]|0;k=c[(P&p)+32>>2]|0;if(l)a[(l+((k+-1|0)*20|0)&n)+3>>0]=8;if(k>>>0>m>>>0)c[(l+(m*20|0)&p)+8>>2]=k;c[((c[(P&p)+24>>2]|0)&p)+88>>2]=k+-1}}}return}function jv(a,b){a=a|0;b=b|0;a=Oq(a)|0;if(a)wh(a,123,b,0,0)|0;return}function kv(d){d=d|0;var e=0,f=0,g=0;a:while(1){e=c[(d&p)+4>>2]|0;do if(e&4096)if(!(e&262144)){d=d+12|0;break}else{d=c[((c[(d&p)+20>>2]|0)&p)+4>>2]|0;break}else{if(e&512){d=0;break a}switch(a[(d&n)>>0]|0){case 119:break;case -102:case -100:case -97:{g=11;break a}case 38:{g=10;break a}default:{g=14;break a}}d=c[((c[(c[(d&p)+20>>2]&p)>>2]|0)&p)+4>>2]|0}while(0);d=c[(d&p)>>2]|0}if((g|0)==10)d=Xq(c[(d&p)+8>>2]|0,0)|0;else if((g|0)==11){f=c[(d&p)+44>>2]|0;if(f){e=b[(d&o)+32>>1]|0;if(e<<16>>16<0)d=68;else d=a[((c[(f&p)+4>>2]|0)+((e<<16>>16)*24|0)&n)+21>>0]|0}else g=14}if((g|0)==14)d=a[(d&n)+1>>0]|0;return d|0}function lv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;wh(b,25,0,e,0)|0;f=wh(b,108,d,0,0)|0;wh(b,47,d,0,e)|0;d=c[(b&p)+4>>2]|0;e=c[(b&p)+32>>2]|0;if(d)a[(d+((e+-1|0)*20|0)&n)+3>>0]=-128;if(e>>>0>f>>>0)c[(d+(f*20|0)&p)+8>>2]=e;c[((c[(b&p)+24>>2]|0)&p)+88>>2]=e+-1;return}function mv(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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;H=i;i=i+32|0;if((i|0)>=(j|0))fa();C=H;F=e+68|0;G=c[(F&p)>>2]|0;c[(F&p)>>2]=G+1;F=Oq(e)|0;D=(g&4|0)!=0;E=f+4|0;a:do if((((((((((((c[(E&p)>>2]&2048|0)!=0?(q=c[(f&p)+20>>2]|0,!((c[(e&p)+64>>2]|0)!=0|(q|0)==0)):0)?(c[(q&p)+52>>2]|0)==0:0)?(b[(q&o)+6>>1]&5)==0:0)?(c[(q&p)+60>>2]|0)==0:0)?(c[(q&p)+36>>2]|0)==0:0)?(m=c[(q&p)+32>>2]|0,(c[(m&p)>>2]|0)==1):0)?(c[(m&p)+28>>2]|0)==0:0)?(w=c[(m&p)+24>>2]|0,(w|0)!=0):0)?(a[(w&n)+44>>0]&16)==0:0)?(l=c[(q&p)>>2]|0,(c[(l&p)>>2]|0)==1):0)?(s=c[(c[(l&p)+4>>2]&p)>>2]|0,(a[(s&n)>>0]|0)==-102):0){A=c[(e&p)>>2]|0;B=b[(s&o)+32>>1]|0;r=c[(w&p)+68>>2]|0;b:do if(r){m=c[(A&p)+20>>2]|0;if((m|0)>0){l=c[(A&p)+16>>2]|0;k=0;while(1){q=k+1|0;if((c[(l+(k<<4)&p)+12>>2]|0)==(r|0)){q=k;break b}if((q|0)<(m|0))k=q;else break}}else q=0}else q=-1e6;while(0);y=q<<16>>16;Ar(e,y);gs(e,y,c[(w&p)+32>>2]|0,0,c[(w&p)>>2]|0);z=B<<16>>16;if(B<<16>>16<0){k=Oq(e)|0;h=e+80|0;l=c[(h&p)>>2]|0;c[(h&p)>>2]=l+1;l=wh(k,44,l,0,0)|0;Qq(e,G,y,w,54);k=c[(F&p)+32>>2]|0;if(k>>>0>l>>>0)c[((c[(F&p)+4>>2]|0)+(l*20|0)&p)+8>>2]=k;c[((c[(F&p)+24>>2]|0)&p)+88>>2]=k+-1;k=1;r=49;break}k=Ou(e,c[(f&p)+12>>2]|0,s)|0;x=w+4|0;r=a[((c[(x&p)>>2]|0)+(z*24|0)&n)+21>>0]|0;q=(nv(f)|0)<<24>>24;if((q|0)==65)q=1;else if((q|0)==66)q=r<<24>>24==66&1;else q=r<<24>>24>66&1;r=c[(w&p)+8>>2]|0;if((r|0)!=0&(q|0)!=0){s=A+62|0;q=e+80|0;m=e+8|0;l=(h|0)==0;t=F+32|0;v=F+4|0;w=F+24|0;u=e+72|0;c:while(1){do if((b[(c[(r&p)+4>>2]&o)>>1]|0)==B<<16>>16?(Yn(A,a[(s&n)>>0]|0,c[(c[(r&p)+32>>2]&p)>>2]|0,0)|0)==(k|0):0){if(!D)break c;if((b[(r&o)+46>>1]|0)!=1)break;if(a[(r&n)+50>>0]|0)break c}while(0);r=c[(r&p)+20>>2]|0;if(!r){r=38;break a}}E=Oq(e)|0;k=c[(q&p)>>2]|0;c[(q&p)>>2]=k+1;q=wh(E,44,k,0,0)|0;wh(F,54,G,c[(r&p)+40>>2]|0,y)|0;k=c[(m&p)>>2]|0;xh(k,-1,hs(e,r)|0,-6);k=(d[(c[(r&p)+28>>2]&n)>>0]|0)+3|0;if(!l?(a[((c[(x&p)>>2]|0)+(z*24|0)&n)+20>>0]|0)==0:0){E=(c[(u&p)>>2]|0)+1|0;c[(u&p)>>2]=E;c[(h&p)>>2]=E;lv(F,G,E)}l=c[(t&p)>>2]|0;if(l>>>0>q>>>0)c[((c[(v&p)>>2]|0)+(q*20|0)&p)+8>>2]=l;c[((c[(w&p)>>2]|0)&p)+88>>2]=l+-1;r=49}else r=38}else r=38;while(0);do if((r|0)==38){if((g&1|0)!=0?(c[(E&p)>>2]&2048|0)==0:0){g=f+12|0;B=c[(g&p)>>2]|0;c[(g&p)>>2]=0;c[(C&p)>>2]=0;c[(C&p)+4>>2]=0;c[(C&p)+8>>2]=0;c[(C&p)+12>>2]=0;c[(C&p)+16>>2]=0;c[(C&p)+20>>2]=0;F=C+20|0;a[(F&n)>>0]=1;c[(C&p)>>2]=78;c[(C&p)+4>>2]=79;c[(C&p)+24>>2]=0;rs(C,f)|0;F=a[(F&n)>>0]|0;c[(g&p)>>2]=B;if(!(F<<24>>24)){k=5;r=49;break}if((c[(c[(f&p)+20>>2]&p)>>2]|0)<3){k=5;r=49;break}}m=e+424|0;q=c[(m&p)>>2]|0;if(D){c[(m&p)>>2]=0;if((b[((c[(f&p)+12>>2]|0)&o)+32>>1]|0)<0){k=((c[(E&p)>>2]|0)>>>11&1)+1|0;l=0}else{k=2;l=0}}else if(!h){k=2;l=0}else{k=e+72|0;l=(c[(k&p)>>2]|0)+1|0;c[(k&p)>>2]=l;c[(h&p)>>2]=l;k=2}eu(e,f,l,(k|0)==1&1)|0;c[(m&p)>>2]=q}while(0);if((r|0)==49)c[(f&p)+28>>2]=G;i=H;return k|0}function nv(a){a=a|0;var b=0,d=0;b=kv(c[(a&p)+12>>2]|0)|0;d=c[(a&p)+16>>2]|0;do if(!d)if(!(c[(a&p)+4>>2]&2048))return (b<<24>>24==0?65:b)|0;else{b=Bu(c[(c[((c[(c[(a&p)+20>>2]&p)>>2]|0)&p)+4>>2]&p)>>2]|0,b)|0;break}else b=Bu(d,b)|0;while(0);return b|0}function ov(d,e,f,g,h,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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,H=0,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;aa=i;i=i+16|0;if((i|0)>=(j|0))fa();Z=aa;X=c[(d&p)>>2]|0;_=k+28|0;c[(_&p)>>2]=-1;W=k+44|0;c[(W&p)>>2]=0;a:do if((e|0)!=0?(b[(h&o)+28>>1]&20)==0:0){t=c[(X&p)+20>>2]|0;if((t|0)>0){r=c[(X&p)+16>>2]|0;s=0;while(1){if(!(dd(c[(r+(s<<4)&p)>>2]|0,e)|0))break;s=s+1|0;if((s|0)>=(t|0)){V=e;e=0;break a}}V=e;e=c[(r+(s<<4)&p)+12>>2]|0}else{V=e;e=0}}else{V=0;e=0}while(0);T=(V|0)==0;Q=T&(f|0)!=0;m=d+412|0;M=d+436|0;N=k+1|0;$=k+32|0;O=d+428|0;P=d+432|0;U=(f|0)==0;S=k+4|0;l=h;u=0;q=0;t=0;s=0;b:while(1){L=(l|0)!=0;r=l+4|0;K=l+8|0;v=0;w=u;while(1){u=(v|0)==0;if(!(L&u)){Y=82;break b}v=c[(r&p)>>2]|0;if(v){J=c[(v&p)>>2]|0;if((J|0)>0){u=0;I=0;H=v+8|0;while(1){F=c[(H&p)+16>>2]|0;x=c[(H&p)+20>>2]|0;if((x|0)!=0?(b[(x&o)+6>>1]&512)!=0:0){x=c[(x&p)>>2]|0;D=c[(x&p)>>2]|0;if((D|0)>0){E=c[(x&p)+4>>2]|0;x=0;z=0;do{if(vv(c[(E+(z*20|0)&p)+8>>2]|0,g,f,V)|0){b[($&o)>>1]=z;u=u+1|0;w=2;x=1;s=H}z=z+1|0}while((z|0)<(D|0))}else x=0;if(!((x|0)!=0|U)){y=w;Y=21}}else{y=w;Y=21}c:do if((Y|0)==21){Y=0;if(!T?(c[(F&p)+68>>2]|0)!=(e|0):0){w=y;break}if(!U){x=c[(H&p)+12>>2]|0;if(!x)x=c[(F&p)>>2]|0;if(dd(x,f)|0){w=y;break}}w=y+1|0;s=(y|0)==0?H:s;x=b[(F&o)+38>>1]|0;if(x<<16>>16>0){v=(u|0)==1;A=H+36|0;B=H+48|0;D=0;E=c[(F&p)+4>>2]|0;d:while(1){e:do if(!(dd(c[(E&p)>>2]|0,g)|0)){if(!v){s=D;break d}if(!(a[(A&n)>>0]&4)){z=c[(B&p)>>2]|0;if(!z){s=D;break d}C=c[(z&p)+4>>2]|0;if((C|0)<=0){s=D;break d}z=c[(z&p)>>2]|0;y=0;while(1){if(!(dd(c[(z+(y<<3)&p)>>2]|0,g)|0))break e;y=y+1|0;if((y|0)>=(C|0)){s=D;break d}}}}while(0);D=D+1|0;if((D|0)>=(x<<16>>16|0))break c;else E=E+24|0}b[($&o)>>1]=(s|0)==(b[(F&o)+36>>1]|0)?-1:s&65535;u=u+1|0;s=H}}while(0);I=I+1|0;if((I|0)>=(J|0))break;else H=H+72|0}}else u=0;if(!s)E=0;else{c[(_&p)>>2]=c[(s&p)+40>>2];v=c[(s&p)+16>>2]|0;c[(W&p)>>2]=v;if(a[(s&n)+36>>0]&8)c[(S&p)>>2]=c[(S&p)>>2]|1048576;E=s;e=c[(v&p)+68>>2]|0}}else{u=0;E=s}do if(Q&(w|0)==0)if(c[(m&p)>>2]|0){v=a[(M&n)>>0]|0;if(v<<24>>24!=109)if(dd(27560,f)|0)if(v<<24>>24==108){y=u;w=0;z=q;break}else Y=49;else z=1;else Y=49;if((Y|0)==49){Y=0;if(!(dd(27568,f)|0))z=0;else{y=u;w=0;z=q;break}}c[(_&p)>>2]=z;y=c[(m&p)>>2]|0;if(y){e=c[(y&p)+68>>2]|0;x=b[(y&o)+38>>1]|0;f:do if(x<<16>>16>0){v=0;w=c[(y&p)+4>>2]|0;while(1){if(!(dd(c[(w&p)>>2]|0,g)|0))break;v=v+1|0;if((v|0)<(x<<16>>16|0))w=w+24|0;else break f}v=(v|0)==(b[(y&o)+36>>1]|0)?-1:v}else v=0;while(0);s=x<<16>>16;if((v|0)>=(s|0)?($h(g)|0)!=0:0)w=(a[(y&n)+44>>0]&32)==0?-1:v;else w=v;if((w|0)<(s|0)){u=u+1|0;do if((w|0)>=0){v=(w|0)>31?-1:1<>2]=c[(O&p)>>2]|v;break}else{c[(P&p)>>2]=c[(P&p)>>2]|v;break}}else a[(N&n)>>0]=68;while(0);b[($&o)>>1]=w;c[(W&p)>>2]=y;w=1;q=1;Y=66}else{w=1;Y=66}}else{y=u;w=0;z=q}}else{y=u;w=0;z=q}else Y=66;while(0);if((Y|0)==66){Y=0;if((u|0)==0&(w|0)==1&(E|0)!=0)if(($h(g)|0)!=0?(a[((c[(E&p)+16>>2]|0)&n)+44>>0]&32)==0:0){b[($&o)>>1]=-1;a[(N&n)>>0]=68;v=1;s=E;continue}else{y=0;z=q}else{y=u;z=q}}u=c[(K&p)>>2]|0;x=(y|0)==0;if((u|0)!=0&U&x?(R=c[(u&p)>>2]|0,(R|0)>0):0){q=c[(u&p)+4>>2]|0;s=0;do{v=c[(q+(s*20|0)&p)+4>>2]|0;if((v|0)!=0?(dd(v,g)|0)==0:0){Y=75;break b}s=s+1|0}while((s|0)<(R|0))}if(x){v=w;q=z;s=E;break}else{v=y;q=z;s=E}}l=c[(l&p)+16>>2]|0;u=v;t=t+1|0}do if((Y|0)==75){if((b[(l&o)+28>>1]&1)==0?(c[((c[(q+(s*20|0)&p)>>2]|0)&p)+4>>2]&2|0)!=0:0){c[(Z&p)>>2]=v;th(d,27576,Z);h=2;break}yv(d,u,s,k,10360,t);if((a[(k&n)>>0]|0)==24)Y=115;else Y=96}else if((Y|0)==82){if(u&U?(c[(S&p)>>2]&64|0)!=0:0){a[(k&n)>>0]=97;c[(W&p)>>2]=0;h=1;break}v=(v|0)==1;if(!v){u=u?27608:27624;do if(T)if(U){c[(Z&p)>>2]=u;c[(Z&p)+4>>2]=g;th(d,27680,Z);break}else{c[(Z&p)>>2]=u;c[(Z&p)+4>>2]=f;c[(Z&p)+8>>2]=g;th(d,27664,Z);break}else{c[(Z&p)>>2]=u;c[(Z&p)+4>>2]=V;c[(Z&p)+8>>2]=f;c[(Z&p)+12>>2]=g;th(d,27648,Z)}while(0);a[(d&n)+17>>0]=1;I=h+24|0;c[(I&p)>>2]=(c[(I&p)>>2]|0)+1}t=b[($&o)>>1]|0;if(t<<16>>16>-1&(s|0)!=0){E=t<<16>>16>63;F=iw(1,0,t<<16>>16|0)|0;I=s+56|0;D=I;H=c[(D&p)+4>>2]|(E?-2147483648:G);c[(I&p)>>2]=c[(D&p)>>2]|(E?0:F);c[(I&p)+4>>2]=H}I=k+12|0;Gk(X,c[(I&p)>>2]|0);c[(I&p)>>2]=0;I=k+16|0;Gk(X,c[(I&p)>>2]|0);c[(I&p)>>2]=0;a[(k&n)>>0]=(q|0)!=0?62:-102;if(v)Y=96;else h=2}while(0);g:do if((Y|0)==96){u=c[(r&p)>>2]|0;q=c[(d&p)>>2]|0;if(!((c[(q&p)+284>>2]|0)==0|(e|0)==0)){t=c[(q&p)+20>>2]|0;if((t|0)>0){r=c[(q&p)+16>>2]|0;s=0;while(1){q=s+1|0;if((c[(r+(s<<4)&p)+12>>2]|0)==(e|0)){q=s;break}if((q|0)<(t|0))s=q;else break}if((q|0)<0){Y=115;break}else e=q}else e=0;if((a[(k&n)>>0]|0)!=62){r=c[(u&p)>>2]|0;if((r|0)<=0){Y=115;break}m=c[(_&p)>>2]|0;q=0;while(1){if((m|0)==(c[(u+(q*72|0)&p)+48>>2]|0))break;q=q+1|0;if((q|0)>=(r|0)){Y=115;break g}}m=u+(q*72|0)+24|0}r=c[(m&p)>>2]|0;m=b[($&o)>>1]|0;q=m<<16>>16;if(r){if(m<<16>>16<=-1){m=b[(r&o)+36>>1]|0;if(m<<16>>16>-1)m=c[((c[(r&p)+4>>2]|0)+((m<<16>>16)*24|0)&p)>>2]|0;else m=12944}else m=c[((c[(r&p)+4>>2]|0)+(q*24|0)&p)>>2]|0;if((ev(d,c[(r&p)>>2]|0,m,e)|0)==2){a[(k&n)>>0]=101;Y=115}else Y=115}else Y=115}else Y=115}while(0);if((Y|0)==115){I=h+20|0;c[(I&p)>>2]=(c[(I&p)>>2]|0)+1;if((l|0)==(h|0))h=1;else{do{h=c[(h&p)+16>>2]|0;I=h+20|0;c[(I&p)>>2]=(c[(I&p)>>2]|0)+1}while((h|0)!=(l|0));h=1}}i=aa;return h|0}function pv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=a[(d&n)>>0]|0;a:do if(e<<24>>24==-100|e<<24>>24==-102){e=c[(b&p)+24>>2]|0;f=c[(e&p)>>2]|0;b:do if((f|0)!=0?(g=c[(f&p)>>2]|0,(g|0)>0):0){b=c[(d&p)+28>>2]|0;d=0;while(1){if((b|0)==(c[(f+(d*72|0)&p)+48>>2]|0))break;d=d+1|0;if((d|0)>=(g|0))break b}b=e+4|0;c[(b&p)>>2]=(c[(b&p)>>2]|0)+1;break a}while(0);b=e+8|0;c[(b&p)>>2]=(c[(b&p)>>2]|0)+1}while(0);return 0}function qv(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+16|0;if((i|0)>=(j|0))fa();y=z;t=z+12|0;a:do if(!f)h=0;else{w=c[(c[(e&p)>>2]&p)>>2]|0;x=c[(d&p)>>2]|0;b:do if((c[(f&p)>>2]|0)>0){h=0;u=c[(f&p)+4>>2]|0;c:while(1){r=c[(u&p)>>2]|0;d:do if(!r)k=0;else{k=r;while(1){l=c[(k&p)+4>>2]|0;if(!(l&4096))break d;if(!(l&262144))k=k+12|0;else k=c[((c[(k&p)+20>>2]|0)&p)+4>>2]|0;k=c[(k&p)>>2]|0;if(!k){k=0;break}}}while(0);if((a[(g&n)>>0]|0)!=71?(s=rv(c[(e&p)>>2]|0,k)|0,c[(t&p)>>2]=s,(s|0)>0):0)b[(u&o)+16>>1]=s;else v=13;do if((v|0)==13){v=0;if(Ms(k,t)|0){k=c[(t&p)>>2]|0;if((k+-1|0)>>>0>65534)break c;b[(u&o)+16>>1]=k;break}m=u+16|0;b[(m&o)>>1]=0;if(ls(d,r)|0){h=1;break a}l=c[(e&p)>>2]|0;q=c[(l&p)>>2]|0;if((q|0)>0){l=c[(l&p)+4>>2]|0;k=0;do{A=k;k=k+1|0;if(!(Cu(r,c[(l+(A*20|0)&p)>>2]|0,-1)|0))b[(m&o)>>1]=k}while((k|0)<(q|0))}}while(0);h=h+1|0;if((h|0)>=(c[(f&p)>>2]|0))break b;else u=u+20|0}c[(y&p)>>2]=h+1;c[(y&p)+4>>2]=g;c[(y&p)+8>>2]=w;th(x,27064,y);h=1;break a}while(0);h=wu(x,e,f,g)|0}while(0);i=z;return h|0}function rv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[(d&n)>>0]|0)==27?(f=c[(d&p)+8>>2]|0,g=c[(b&p)>>2]|0,(g|0)>0):0){b=c[(b&p)+4>>2]|0;d=0;while(1){e=c[(b+(d*20|0)&p)+4>>2]|0;if((e|0)!=0?(dd(e,f)|0)==0:0)break;d=d+1|0;if((d|0)>=(g|0)){d=0;break a}}d=d+1|0}else d=0;while(0);return d|0}function sv(a,d){a=a|0;d=d|0;var e=0,f=0;e=b[(a&o)+38>>1]|0;a:do if(e<<16>>16>0){f=c[(a&p)+4>>2]|0;e=e<<16>>16;a=0;while(1){if(!(dd(c[(f+(a*24|0)&p)>>2]|0,d)|0))break a;a=a+1|0;if((a|0)>=(e|0)){a=-1;break}}}else a=-1;while(0);return a|0}function tv(a,d,e,f,g,h,i,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0;k=c[(a&p)>>2]|0;e=Rv(k,d,e,f)|0;f=Rv(k,d,g,h)|0;h=Zq(a,79,e,f,0)|0;if((h|0)!=0&(i|0)!=0){e=h+4|0;c[(e&p)>>2]=c[(e&p)>>2]|1;b[(h&o)+36>>1]=c[(f&p)+28>>2]}c[(j&p)>>2]=ss(k,c[(j&p)>>2]|0,h)|0;return}function uv(a,d){a=a|0;d=d|0;var e=0,f=0;if(a){e=d&65535;do{f=a+4|0;c[(f&p)>>2]=c[(f&p)>>2]|1;b[(a&o)+36>>1]=e;uv(c[(a&p)+12>>2]|0,d);a=c[(a&p)+16>>2]|0}while((a|0)!=0)}return}function vv(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=0;while(1){g=a[(b+f&n)>>0]|0;if(g<<24>>24==46|g<<24>>24==0)break;f=f+1|0}if(e)if((Fc(b,e,f)|0)==0?(a[(e+f&n)>>0]|0)==0:0)h=7;else f=0;else h=7;do if((h|0)==7){e=f+1|0;h=b+e|0;g=0;while(1){i=a[(b+g+e&n)>>0]|0;if(i<<24>>24==46|i<<24>>24==0)break;g=g+1|0}if(d){if(Fc(h,d,g)|0){f=0;break}if(a[(d+g&n)>>0]|0){f=0;break}}if((c|0)!=0?(dd(b+(f+2+g)|0,c)|0)!=0:0){f=0;break}f=1}while(0);return f|0}function wv(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((a|0)!=0?(e=c[(a&p)+4>>2]|0,(e|0)>0):0){d=c[(a&p)>>2]|0;a=0;while(1){if(!(dd(c[(d+(a<<3)&p)>>2]|0,b)|0))break a;a=a+1|0;if((a|0)>=(e|0)){a=-1;break}}}else a=-1;while(0);return a|0}function xv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;c[(g&p)>>2]=e;if(!e)f=0;else{f=e;while(1)if(!(a[(f&n)>>0]|0))break;else f=f+1|0;f=f-e&1073741823}c[(g&p)+4>>2]=f;f=vr(b,d,g,0)|0;i=h;return f|0}function yv(d,e,f,g,h,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+32|0;if((i|0)>=(j|0))fa();r=v;m=e+4|0;q=c[((c[(m&p)>>2]|0)+(f*20|0)&p)>>2]|0;s=c[(d&p)>>2]|0;l=Mr(s,q,0,0)|0;do if(l){if((a[(q&n)>>0]|0)!=-102?(a[(h&n)>>0]|0)!=71:0){if((k|0)>0){c[(r&p)>>2]=0;c[(r&p)+4>>2]=0;c[(r&p)+8>>2]=0;c[(r&p)+12>>2]=0;c[(r&p)+16>>2]=0;c[(r&p)+20>>2]=0;c[(r&p)>>2]=88;c[(r&p)+24>>2]=k;rs(r,l)|0}l=Zq(d,24,l,0,0)|0;if(!l)break;e=l+4|0;c[(e&p)>>2]=c[(e&p)>>2]|4096;e=(c[(m&p)>>2]|0)+(f*20|0)+18|0;k=b[(e&o)>>1]|0;if(!(k<<16>>16)){f=d+456|0;k=(c[(f&p)>>2]|0)+1|0;c[(f&p)>>2]=k;k=k&65535;b[(e&o)>>1]=k}c[(l&p)+28>>2]=k&65535}if((a[(g&n)>>0]|0)==95)l=xv(d,l,c[(g&p)+8>>2]|0)|0;e=g+4|0;c[(e&p)>>2]=c[(e&p)>>2]|32768;Gk(s,g);k=g+0|0;m=l+0|0;q=k+48|0;do{c[(k&p)>>2]=c[(m&p)>>2];k=k+4|0;m=m+4|0}while((k|0)<(q|0));if((c[(e&p)>>2]&1024|0)==0?(t=g+8|0,u=c[(t&p)>>2]|0,(u|0)!=0):0){c[(t&p)>>2]=kh(s,u)|0;c[(e&p)>>2]=c[(e&p)>>2]|65536}mg(s,l)}while(0);i=v;return}function zv(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+12|0;g=c[(n&p)>>2]|0;k=a+16|0;i=c[(k&p)>>2]|0;m=a+20|0;do if((g|0)<(i|0))l=15;else{g=c[(m&p)>>2]|0;j=c[(c[(c[(a&p)>>2]&p)>>2]&p)>>2]|0;h=mh(j,i*96|0,0)|0;c[(m&p)>>2]=h;if(!h){if(f&1)Gk(j,d);c[(m&p)>>2]=g;g=0;break}kw(h|0,g|0,(c[(n&p)>>2]|0)*48|0)|0;if((g|0)!=(a+24|0))mg(j,g);h=c[(m&p)>>2]|0;do if(!j)h=lc[c[8792>>2]&127](h)|0;else{if((c[(j&p)+276>>2]|0)>>>0<=h>>>0?(c[(j&p)+280>>2]|0)>>>0>h>>>0:0){h=e[(j&o)+248>>1]|0;break}h=lc[c[8792>>2]&127](h)|0}while(0);l=(h>>>0)/48|0;c[(k&p)>>2]=l;g=c[(n&p)>>2]|0;fw((c[(m&p)>>2]|0)+(g*48|0)|0,0,(l-g|0)*48|0)|0;g=c[(n&p)>>2]|0;l=15}while(0);if((l|0)==15){c[(n&p)>>2]=g+1;i=c[(m&p)>>2]|0;a:do if(!d){b[(i+(g*48|0)&o)+16>>1]=1;d=0}else{if(!(c[(d&p)+4>>2]&262144))h=1;else{h=c[(d&p)+28>>2]|0;h=((fs(h,((h|0)<0)<<31>>31)|0)&65535)+65266&65535}b[(i+(g*48|0)&o)+16>>1]=h;while(1){h=c[(d&p)+4>>2]|0;if(!(h&4096))break a;if(!(h&262144))d=d+12|0;else d=c[((c[(d&p)+20>>2]|0)&p)+4>>2]|0;d=c[(d&p)>>2]|0;if(!d){d=0;break}}}while(0);c[(i+(g*48|0)&p)>>2]=d;b[(i+(g*48|0)&o)+20>>1]=f;c[(i+(g*48|0)&p)+24>>2]=a;c[(i+(g*48|0)&p)+4>>2]=-1}return g|0}function Av(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if(d)if((a[(d&n)>>0]|0)==-102){d=c[(d&p)+28>>2]|0;f=c[(b&p)>>2]|0;if((f|0)>0)e=0;else{f=0;e=0;break}while(1){if((c[(b+(e<<2)&p)+4>>2]|0)==(d|0))break;e=e+1|0;if((e|0)>=(f|0)){f=0;e=0;break a}}e=iw(1,0,e|0)|0;f=G;break}else{g=Av(b,c[(d&p)+16>>2]|0)|0;e=G;h=Av(b,c[(d&p)+12>>2]|0)|0;e=G|e;f=d+20|0;if(!(c[(d&p)+4>>2]&2048)){d=Lu(b,c[(f&p)>>2]|0)|0;f=G}else{d=Bv(b,c[(f&p)>>2]|0)|0;f=G}f=e|f;e=h|g|d;break}else{f=0;e=0}while(0);G=f;return e|0}function Bv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!b){b=0;d=0}else{g=b;d=0;b=0;do{f=c[(g&p)+32>>2]|0;l=Lu(a,c[(g&p)>>2]|0)|0;b=G|b;k=Lu(a,c[(g&p)+40>>2]|0)|0;b=b|G;j=Lu(a,c[(g&p)+48>>2]|0)|0;b=b|G;i=Av(a,c[(g&p)+36>>2]|0)|0;b=b|G;e=Av(a,c[(g&p)+44>>2]|0)|0;d=l|d|k|j|i|e;b=b|G;if((f|0)!=0?(h=c[(f&p)>>2]|0,(h|0)>0):0){e=0;do{j=Bv(a,c[(f+(e*72|0)&p)+28>>2]|0)|0;b=G|b;k=Av(a,c[(f+(e*72|0)&p)+52>>2]|0)|0;d=j|d|k;b=b|G;e=e+1|0}while((e|0)<(h|0))}g=c[(g&p)+52>>2]|0}while((g|0)!=0)}G=b;return d|0}function Cv(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=b[(e&o)+18>>1]|0;k=b[(f&o)+18>>1]|0;h=k|l;if(((!((l&62)==0|(k&62)==0)?(g=h&65535,(g&26|0)==(g|0)|(g&38|0)==(g|0)):0)?(j=c[(e&p)>>2]|0,i=c[(f&p)>>2]|0,(Cu(c[(j&p)+12>>2]|0,c[(i&p)+12>>2]|0,-1)|0)==0):0)?(Cu(c[(j&p)+16>>2]|0,c[(i&p)+16>>2]|0,-1)|0)==0:0){if(g+65535&g)h=(g&24|0)==0?32:8;i=Mr(c[(c[(c[(d&p)>>2]&p)>>2]&p)>>2]|0,j,0,0)|0;if(i){h=h&65535;g=79;while(1)if((h|0)==(2<>0]=g;Eu(d,zv(d,i,3)|0)}}return}function Dv(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,q=0;c[(d&p)>>2]=f;c[(d&p)+4>>2]=f;a:do if((j|0)!=0&(h|0)>-1){a[(d&n)+12>>0]=a[((c[((c[(j&p)+12>>2]|0)&p)+4>>2]|0)+(h*24|0)&n)+21>>0]|0;k=c[(j&p)+4>>2]|0;if((b[(k&o)>>1]|0)==(h|0))f=0;else{l=e[(j&o)+48>>1]|0;m=0;while(1){f=m+1|0;if((m|0)>(l|0)){f=0;break a}if((b[(k+(f<<1)&o)>>1]|0)==(h|0))break;else m=f}}c[(d&p)+8>>2]=c[((c[(j&p)+32>>2]|0)+(f<<2)&p)>>2];q=8}else{a[(d&n)+12>>0]=0;c[(d&p)+8>>2]=0;q=8}while(0);if((q|0)==8){c[(d&p)+16>>2]=i;c[(d&p)+20>>2]=0;c[(d&p)+24>>2]=g;c[(d&p)+28>>2]=h;a[(d&n)+13>>0]=2;a[(d&n)+14>>0]=2;f=Ev(d)|0}return f|0} -function Tn(d,f,g,h,k,l,m,q,r){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;r=r|0;var 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,H=0,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;da=i;i=i+160|0;if((i|0)>=(j|0))fa();R=da+16|0;N=da+152|0;P=da+48|0;M=da+40|0;Q=da+36|0;O=da+32|0;U=da+8|0;T=da;Z=da+28|0;ba=da+24|0;c[(ba&p)>>2]=0;do if(!(a[(d&n)+46>>0]|0)){ca=d+43|0;if((a[(ca&n)>>0]|0)==0?(s=c[(d&p)+4>>2]|0,s=pc[c[((c[(s&p)>>2]|0)&p)+56>>2]&31](s,1,1,10)|0,(s|0)!=0):0)break;aa=d+45|0;a[(aa&n)>>0]=1;a:do if(!f){w=0;_=11}else{u=d+4|0;s=(g|0)!=0;while(1){if(a[(ca&n)>>0]|0)break;w=c[(u&p)>>2]|0;w=pc[c[((c[(w&p)>>2]|0)&p)+56>>2]&31](w,0,1,10)|0;if(!(s&(w|0)==5)){_=9;break}if(!(lc[g&127](h)|0)){w=0;g=0;_=11;break a}}if((_|0)==9)if((w|0)==5){w=0;g=0;_=11;break}else if(w){$=f;break}a[(d&n)+44>>0]=1;w=f;_=11}while(0);if((_|0)==11){$=w;w=nq(d,ba)|0}do if(!w){Y=d+68|0;w=b[(d&o)+66>>1]|0;if((c[(Y&p)>>2]|0)!=0?(X=w&65535,(X<<16&65536|X&65024|0)!=(l|0)):0){c[(R&p)>>2]=51863;c[(R&p)+4>>2]=10788;bd(11,13600,R);t=11;break}V=w&65535;V=V<<16&65536|V&65024;X=d+32|0;W=(c[(c[(X&p)>>2]&p)>>2]|0)+96|0;z=c[(Y&p)>>2]|0;b:do if((c[(W&p)>>2]|0)>>>0>>0){K=(z+33|0)>>>12;L=K+1|0;l=z<<1;y=l+28+(K*20|0)|0;s=Tc(y)|0;c:do if(!s){w=7;s=0}else{fw(s|0,0,y|0)|0;y=s+4|0;c[(y&p)>>2]=L;l=Tc(z>>>0>4096?8192:l)|0;do if(l){J=s+8|0;x=0;while(1){w=Po(d,x,M,O,Q)|0;if(w){_=21;break}I=(c[(O&p)>>2]|0)+4|0;c[(O&p)>>2]=I;if((x|0)==(K|0)){H=c[(Q&p)>>2]|0;w=H;H=z-H|0}else{w=c[(Q&p)>>2]|0;H=(c[(M&p)>>2]|0)-I>>2}u=J+((c[(y&p)>>2]|0)*20|0)|0;F=u+(w<<1)|0;E=w+1|0;c[(Q&p)>>2]=E;if((H|0)>0){B=0;do{b[(u+(B+w<<1)&o)>>1]=B;B=B+1|0}while((B|0)!=(H|0));c[(R&p)>>2]=0;c[(N&p)>>2]=0;C=P+0|0;B=C+104|0;do{c[(C&p)>>2]=0;C=C+4|0}while((C|0)<(B|0));D=0;do{c[(R&p)>>2]=1;C=u+(D+w<<1)|0;c[(N&p)>>2]=C;if(!(D&1)){A=1;B=0}else{B=0;do{oq(I,c[(P+(B<<3)&p)+4>>2]|0,c[(P+(B<<3)&p)>>2]|0,N,R,l);B=B+1|0}while((1<>2]|0;C=c[(N&p)>>2]|0}c[(P+(B<<3)&p)+4>>2]=C;c[(P+(B<<3)&p)>>2]=A;D=D+1|0}while((D|0)!=(H|0));B=B+1|0;if((B|0)<13)_=34}else{c[(R&p)>>2]=0;c[(N&p)>>2]=0;C=P+0|0;B=C+104|0;do{c[(C&p)>>2]=0;C=C+4|0}while((C|0)<(B|0));B=1;_=34}if((_|0)==34){while(1){_=0;if(1<>2]|0,c[(P+(B<<3)&p)>>2]|0,N,R,l);B=B+1|0;if((B|0)==13)break;else _=34}A=c[(R&p)>>2]|0}c[(J+(x*20|0)&p)+16>>2]=E;c[(J+(x*20|0)&p)+12>>2]=A;c[(J+(x*20|0)&p)+4>>2]=F;c[(J+(x*20|0)&p)+8>>2]=I;x=x+1|0;if((x|0)>=(L|0)){_=39;break}}if((_|0)==21){Wc(l);break}else if((_|0)==39){Wc(l);w=0;break c}}else{Wc(0);w=7}while(0);Wc(s)}while(0);if(!w){R=d+72|0;Q=c[(R&p)>>2]|0;P=d+4|0;A=1;z=c[(Y&p)>>2]|0;w=0;while(1){l=W+(A<<2)+4|0;u=c[(l&p)>>2]|0;d:do if(z>>>0>u>>>0){y=A+3|0;x=(g|0)!=0;while(1){if(a[(ca&n)>>0]|0)break;w=c[(P&p)>>2]|0;w=pc[c[((c[(w&p)>>2]|0)&p)+56>>2]&31](w,y,1,10)|0;if(!(x&(w|0)==5)){_=49;break}if(!(lc[g&127](h)|0)){g=0;w=5;break d}}if((_|0)==49){_=0;if((w|0)==5){g=0;w=5;break}else if(w){t=w;_=100;break b}}c[(l&p)>>2]=(A|0)==1?z:-1;if(!(a[(ca&n)>>0]|0)){u=c[(P&p)>>2]|0;pc[c[((c[(u&p)>>2]|0)&p)+56>>2]&31](u,y,1,9)|0;u=z;w=0}else{u=z;w=0}}else u=z;while(0);A=A+1|0;if((A|0)>=5){L=u;break}else z=u}e:do if((c[(W&p)>>2]|0)>>>0>>0){w=(g|0)!=0;while(1){if(a[(ca&n)>>0]|0)break;u=c[(P&p)>>2]|0;u=pc[c[((c[(u&p)>>2]|0)&p)+56>>2]&31](u,3,1,10)|0;if(!(w&(u|0)==5)){v=u;_=58;break}if(!(lc[g&127](h)|0)){v=5;break e}}if((_|0)==58?(v|0)!=0:0)break;I=c[(W&p)>>2]|0;J=(k|0)!=0;if(J?(S=c[(d&p)+8>>2]|0,S=rc[c[((c[(S&p)>>2]|0)&p)+20>>2]&127](S,k)|0,(S|0)!=0):0)v=S;else _=61;f:do if((_|0)==61){S=sw(Q|0,0,V|0,0)|0;v=T;c[(v&p)>>2]=S;c[(v&p)+4>>2]=G;v=c[(P&p)>>2]|0;v=rc[c[((c[(v&p)>>2]|0)&p)+24>>2]&127](v,U)|0;if(!v){S=U;N=c[(S&p)+4>>2]|0;U=T;O=c[(U&p)+4>>2]|0;if((N|0)<(O|0)|((N|0)==(O|0)?(c[(S&p)>>2]|0)>>>0<(c[(U&p)>>2]|0)>>>0:0)){U=c[(P&p)>>2]|0;ac[c[((c[(U&p)>>2]|0)&p)+40>>2]&63](U,5,T)|0}E=s+4|0;F=V|24;H=d+8|0;w=c[(E&p)>>2]|0;g:do if((w|0)>0){v=0;while(1){D=c[(s&p)>>2]|0;C=-1;h:while(1){i:while(1){w=w+-1|0;A=s+(w*20|0)+8|0;l=c[(A&p)>>2]|0;u=c[(s+(w*20|0)&p)+20>>2]|0;j:do if((l|0)<(u|0)){z=c[(s+(w*20|0)&p)+12>>2]|0;B=c[(s+(w*20|0)&p)+16>>2]|0;while(1){x=e[(z+(l<<1)&o)>>1]|0;y=c[(B+(x<<2)&p)>>2]|0;if(y>>>0>D>>>0)break;l=l+1|0;c[(A&p)>>2]=l;if((l|0)>=(u|0))break j}if(y>>>0>>0)break i}while(0);if((w|0)<=0){l=v;w=C;break h}}v=(c[(s+(w*20|0)&p)+24>>2]|0)+x|0;if((w|0)>0)C=y;else{l=v;w=y;break}}c[(s&p)>>2]=w;if((w|0)==-1)break g;if(!(l>>>0<=I>>>0|l>>>0>L>>>0|w>>>0>Q>>>0)){v=sw(l+-1|0,0,F|0,0)|0;v=jw(v|0,G|0,56,0)|0;U=c[(H&p)>>2]|0;v=tc[c[((c[(U&p)>>2]|0)&p)+8>>2]&31](U,m,V,v,G)|0;if(v)break f;v=sw(w+-1|0,0,V|0,0)|0;U=c[(P&p)>>2]|0;v=tc[c[((c[(U&p)>>2]|0)&p)+12>>2]&31](U,m,V,v,G)|0;if(v)break f}w=c[(E&p)>>2]|0;if((w|0)<=0){_=66;break}else v=l}}else _=66;while(0);if((_|0)==66)c[(s&p)>>2]=-1;if((L|0)==(c[((c[(c[(X&p)>>2]&p)>>2]|0)&p)+16>>2]|0)){v=sw(c[(R&p)>>2]|0,0,V|0,0)|0;_=c[(P&p)>>2]|0;v=ac[c[((c[(_&p)>>2]|0)&p)+16>>2]&63](_,v,G)|0;if((v|0)==0&J){v=c[(P&p)>>2]|0;v=rc[c[((c[(v&p)>>2]|0)&p)+20>>2]&127](v,k)|0}if(v)break}c[(W&p)>>2]=L;v=0}}while(0);if(!(a[(ca&n)>>0]|0)){_=c[(P&p)>>2]|0;pc[c[((c[(_&p)>>2]|0)&p)+56>>2]&31](_,3,1,9)|0}}else v=w;while(0);v=(v|0)==5?0:v;_=88}else t=w}else{s=0;v=0;_=88}while(0);k:do if((_|0)==88)if((v|0)==0&($|0)!=0)if((c[(W&p)>>2]|0)>>>0>=(c[(Y&p)>>2]|0)>>>0)if(($|0)>1){cd(4,Z);w=d+4|0;u=(g|0)!=0;while(1){if(a[(ca&n)>>0]|0)break;v=c[(w&p)>>2]|0;v=pc[c[((c[(v&p)>>2]|0)&p)+56>>2]&31](v,4,4,10)|0;if(!(u&(v|0)==5)){t=v;_=95;break}if(!(lc[g&127](h)|0)){t=5;_=100;break k}}if((_|0)==95?(t|0)!=0:0){_=100;break}if(($|0)==3){Xo(d,c[(Z&p)>>2]|0);t=c[(d&p)+8>>2]|0;t=ac[c[((c[(t&p)>>2]|0)&p)+16>>2]&63](t,0,0)|0}else t=0;if(!(a[(ca&n)>>0]|0)){_=c[(w&p)>>2]|0;pc[c[((c[(_&p)>>2]|0)&p)+56>>2]&31](_,4,4,9)|0;_=100}else _=100}else{t=0;_=100}else{t=5;_=100}else{t=v;_=100}while(0);if((_|0)==100)Wc(s);if((t|0)==0|(t|0)==5){if(q)c[(q&p)>>2]=c[(Y&p)>>2];if(r)c[(r&p)>>2]=c[((c[(c[(X&p)>>2]&p)>>2]|0)&p)+96>>2]}}else t=w;while(0);if(c[(ba&p)>>2]|0){C=d+52|0;B=C+48|0;do{c[(C&p)>>2]=0;C=C+4|0}while((C|0)<(B|0))}s=d+44|0;if(a[(s&n)>>0]|0){if(!(a[(ca&n)>>0]|0)){ba=c[(d&p)+4>>2]|0;pc[c[((c[(ba&p)>>2]|0)&p)+56>>2]&31](ba,0,1,9)|0}a[(s&n)>>0]=0;a[(d&n)+47>>0]=0}if(!(a[(ca&n)>>0]|0)){ca=c[(d&p)+4>>2]|0;pc[c[((c[(ca&p)>>2]|0)&p)+56>>2]&31](ca,1,1,9)|0}a[(aa&n)>>0]=0;s=(t|0)!=0|($|0)==(f|0)?t:5}else s=8;while(0);i=da;return s|0}function Un(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=(c|0)<(e|0)?c:e;g=Zv(d,f,h)|0;a:do if(!g){b:do if(b){g=c-h|0;while(1){if((g|0)<=0)break;g=g+-1|0;if((a[(d+g+h&n)>>0]|0)!=32)break b}if(!g){g=e-h|0;while(1){if((g|0)<=0)break;g=g+-1|0;if((a[(f+g+h&n)>>0]|0)!=32)break b}if(!g){g=0;break a}}}while(0);g=c-e|0}while(0);return g|0}function Vn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=Fc(c,e,(b|0)<(d|0)?b:d)|0;return ((a|0)==0?b-d|0:a)|0}function Wn(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;if((i|0)>=(j|0))fa();y=A;r=c[(e&p)>>2]|0;a:do if(d){o=d;while(1)if(!(a[(o&n)>>0]|0))break;else o=o+1|0;q=o-d&1073741823;if((c[2189]|r&64|0)!=0&q>>>0>4?(Zv(d,14984,5)|0)==0:0){o=q+2|0;m=r|64;if(q){r=0;do{o=((a[(d+r&n)>>0]|0)==38&1)+o|0;r=r+1|0}while((r|0)<(q|0))}l=Tc(o)|0;if(l){do if((a[(d&n)+5>>0]|0)==47?(a[(d&n)+6>>0]|0)==47:0){o=7;while(1){u=a[(d+o&n)>>0]|0;if(u<<24>>24==0|u<<24>>24==47)break;o=o+1|0}if((o|0)==16){k=d+7|0;if(!(Zv(14992,k,9)|0)){o=0;r=16;k=0;break}}else if((o|0)==7){o=0;r=7;k=0;break}else k=d+7|0;c[(y&p)>>2]=o+-7;c[(y&p)+4>>2]=k;c[(h&p)>>2]=_c(15008,y)|0;k=1;z=74;break a}else{o=0;r=5;k=0}while(0);b:while(1){w=l+(k+-1)|0;c:while(1){d:while(1){q=a[(d+r&n)>>0]|0;if(q<<24>>24==35|q<<24>>24==0)break b;s=r+1|0;if((q<<24>>24==37?(x=a[(d+s&n)>>0]|0,(a[(x&255&n)+10368>>0]&8)!=0):0)?(v=a[(d+r&n)+2>>0]|0,(a[(v&255&n)+10368>>0]&8)!=0):0){q=x;s=v;break}if(!o){r=s;z=38;break c}else if((o|0)==2){r=s;z=39;break c}else if((o|0)!=1){r=s;break c}if(!(q<<24>>24==38|q<<24>>24==61)){o=1;r=s;break c}if(!(a[(w&n)>>0]|0))r=s;else{r=s;z=36;break c}while(1){u=a[(d+r&n)>>0]|0;if(u<<24>>24==35|u<<24>>24==0)continue d;if((a[(d+r+-1&n)>>0]|0)==38)continue d;else r=r+1|0}}q=q<<24>>24;r=r+3|0;u=s<<24>>24;q=(0-(u>>>6&1)&9)+u&15|(0-(q>>>6&1)&9)+q<<4&240;if(q){z=30;break}s=(o|0)==0;while(1){q=a[(d+r&n)>>0]|0;if(q<<24>>24==35|q<<24>>24==0)continue c;if(s&q<<24>>24==63){o=0;continue c}if((o|0)==1){if(q<<24>>24==38|q<<24>>24==61){o=1;continue c}}else if((o|0)==2?q<<24>>24==38:0){o=2;continue c}r=r+1|0}}if((z|0)==30){z=0;q=q&255}else if((z|0)==36){z=0;if(q<<24>>24==38){a[(l+k&n)>>0]=0;q=0;o=1;k=k+1|0}else{q=0;o=2}}else if((z|0)==38){z=0;if(q<<24>>24==63)z=40;else o=0}else if((z|0)==39){z=0;if(q<<24>>24==38)z=40;else o=2}if((z|0)==40){z=0;q=0;o=1}a[(l+k&n)>>0]=q;k=k+1|0}if((o|0)==1){a[(l+k&n)>>0]=0;k=k+1|0}a[(l+k&n)>>0]=0;a[(l+k&n)+1>>0]=0;k=l;while(1)if(!(a[(k&n)>>0]|0))break;else k=k+1|0;k=(k-l&1073741823)+1|0;o=a[(l+k&n)>>0]|0;if(o<<24>>24){x=l+k|0;e:while(1){q=x;while(1){k=q+1|0;if(!(o<<24>>24)){o=q;break}o=a[(k&n)>>0]|0;q=k}w=o-x&1073741823;o=x+(w+1)|0;q=o;while(1)if(!(a[(q&n)>>0]|0))break;else q=q+1|0;v=q-o&1073741823;if((w|0)==3){k=(Zv(15040,x,3)|0)==0;k=k?o:b}else if((w|0)==5)if(!(Zv(15048,x,5)|0)){d=15056;t=393216;u=-393217;k=15048;z=58}else k=b;else if((w|0)==4?(Zv(15096,x,4)|0)==0:0){d=15104;t=m&135;u=-136;k=15176;z=58}else k=b;if((z|0)==58){z=0;r=c[(d&p)>>2]|0;if(!r){z=65;break}else q=0;while(1){s=r;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;if((v|0)==(s-r&1073741823|0)?(Zv(o,r,v)|0)==0:0){r=q;break}q=q+1|0;r=c[(d+(q<<3)&p)>>2]|0;if(!r){z=65;break e}}r=c[(d+(r<<3)&p)+4>>2]|0;if(!r){z=65;break}if((r&-129|0)>(t|0)){z=67;break}m=r|u&m;k=b}x=x+(w+2+v)|0;o=a[(x&n)>>0]|0;if(!(o<<24>>24)){z=72;break a}else b=k}if((z|0)==65){c[(y&p)>>2]=k;c[(y&p)+4>>2]=o;c[(h&p)>>2]=_c(15184,y)|0;k=1;z=74;break}else if((z|0)==67){c[(y&p)>>2]=k;c[(y&p)+4>>2]=o;c[(h&p)>>2]=_c(15208,y)|0;k=3;z=74;break}}else{k=b;z=72}}else k=7}else{m=q;z=70}}else{m=0;z=70}while(0);if((z|0)==70){l=Tc(m+2|0)|0;if(!l)k=7;else{kw(l|0,d|0,m|0)|0;a[(l+m&n)>>0]=0;a[(l+m&n)+1>>0]=0;m=r&-65;k=b;z=72}}if((z|0)==72){u=Kc(k)|0;c[(f&p)>>2]=u;if(!u){c[(y&p)>>2]=k;c[(h&p)>>2]=_c(15232,y)|0;k=1;z=74}else{k=0;z=75}}if((z|0)==74){Wc(l);l=0;z=75}if((z|0)==75){c[(e&p)>>2]=m;c[(g&p)>>2]=l}i=A;return k|0}function Xn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;do if(!d){d=qg(84,0)|0;if(!d)e=8;else{b=d+0|0;g=b+84|0;do{a[(b&n)>>0]=0;b=b+1|0}while((b|0)<(g|0));e=9}}else{f=c[(d&p)+4>>2]|0;c[(f&p)+4>>2]=c[(d&p)>>2];e=f+48|0;d=c[(e&p)>>2]|0;if(!d){d=qg(84,0)|0;if(!d){c[(e&p)>>2]=0;c[(f&p)+52>>2]=22;e=8;break}else{b=d+0|0;g=b+84|0;do{a[(b&n)>>0]=0;b=b+1|0}while((b|0)<(g|0));c[(e&p)>>2]=d;c[(f&p)+52>>2]=22;e=9;break}}else e=9}while(0);if((e|0)==8){a[(b&n)+65>>0]=1;d=0}else if((e|0)==9)if(!(a[(d&n)+76>>0]|0)){e=d+77|0;b=d+8|0;g=b+64|0;do{c[(b&p)>>2]=0;b=b+4|0}while((b|0)<(g|0));a[(e&n)>>0]=1}return d|0}function Yn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();if(e){k=b+428|0;h=bn(k,e,m)|0;if(!h)g=0;else g=c[(h&p)+8>>2]|0;if((g|0)==0&(f|0)!=0){h=e;while(1)if(!(a[(h&n)>>0]|0))break;else h=h+1|0;h=h-e&1073741823;f=h+61|0;g=mh(b,f,0)|0;if(g){fw(g|0,0,f|0)|0;f=g+60|0;c[(g&p)>>2]=f;a[(g&n)+4>>0]=1;c[(g&p)+20>>2]=f;a[(g&n)+24>>0]=2;c[(g&p)+40>>2]=f;a[(g&n)+44>>0]=3;kw(f|0,e|0,h|0)|0;a[(g+h&n)+60>>0]=0;h=Ik(k,c[(g&p)>>2]|0,g)|0;if(!h)l=10;else{a[(b&n)+65>>0]=1;mg(b,h);g=0}}else g=0}else l=10}else{g=c[(b&p)+8>>2]|0;l=10}if((l|0)==10)if(!g)g=0;else g=g+(((d&255)+-1|0)*20|0)|0;i=m;return g|0}function Zn(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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;D=i;i=i+64|0;if((i|0)>=(j|0))fa();B=D;k=D+48|0;s=D+24|0;x=D+8|0;m=(g|0)==1;v=m?13184:13208;c[(k&p)>>2]=v;c[(k&p)+4>>2]=13224;c[(k&p)+8>>2]=m?13064:12960;c[(k&p)+12>>2]=0;c[(x&p)>>2]=f;c[(x&p)+8>>2]=g;w=x+12|0;c[(w&p)>>2]=0;c[(x&p)+4>>2]=h;$m(x,3,k,0)|0;k=c[(w&p)>>2]|0;a:do if(!k){y=f+16|0;l=_h(f,v,c[((c[(y&p)>>2]|0)+(g<<4)&p)>>2]|0)|0;if(l){u=l+44|0;a[(u&n)>>0]=d[(u&n)>>0]|1}q=c[(y&p)>>2]|0;z=q+(g<<4)+4|0;l=c[(z&p)>>2]|0;if(!l){if(!m){k=0;break}k=(c[(q&p)+28>>2]|0)+78|0;b[(k&o)>>1]=e[(k&o)>>1]|1;k=0;break}c[((c[(l&p)+4>>2]|0)&p)+4>>2]=c[(l&p)>>2];do if(!(a[(l&n)+8>>0]|0)){k=yg(l,0)|0;if((k|0)==516)l=16344;else if(!k){l=c[(z&p)>>2]|0;u=1;break}else C=10;if((C|0)==10){l=k&255;if(l>>>0>26|(l|0)==2)l=16328;else l=c[(l<<2&p)+15488>>2]|0}c[(B&p)>>2]=l;dh(h,f,10344,B);C=38;break a}else u=0;while(0);wm(l,1,s);t=s+4|0;wm(c[(z&p)>>2]|0,2,t);r=s+8|0;wm(c[(z&p)>>2]|0,3,r);wm(c[(z&p)>>2]|0,4,s+12|0);k=s+16|0;wm(c[(z&p)>>2]|0,5,k);q=q+(g<<4)+12|0;l=c[(q&p)>>2]|0;c[(l&p)>>2]=c[(s&p)>>2];k=c[(k&p)>>2]|0;do if(k){if(!g){m=k&3;m=(m|0)==0?1:m&255;a[(f&n)+62>>0]=m;C=19;break}m=a[(f&n)+62>>0]|0;if((k|0)==(m&255|0))C=19;else{dh(h,f,13232,B);k=1}}else{m=(c[((c[(y&p)>>2]|0)+(g<<4)&p)+12>>2]|0)+78|0;b[(m&o)>>1]=e[(m&o)>>1]|4;m=a[(f&n)+62>>0]|0;C=19}while(0);do if((C|0)==19){a[(l&n)+77>>0]=m;m=l+80|0;if(!(c[(m&p)>>2]|0)){l=c[(r&p)>>2]|0;if((l|0)<=-1)l=(l|0)==-2147483648?2147483647:0-l|0;l=(l|0)==0?2e3:l;c[(m&p)>>2]=l;pq(c[(z&p)>>2]|0,l);l=c[(q&p)>>2]|0}k=c[(t&p)>>2]|0;m=k&255;l=l+76|0;if(m<<24>>24){a[(l&n)>>0]=m;if((m&255)>4){dh(h,f,13304,B);k=1;break}}else a[(l&n)>>0]=1;if((g|0)==0&(k|0)>3){t=f+24|0;c[(t&p)>>2]=c[(t&p)>>2]&-32769}c[(B&p)>>2]=c[((c[(y&p)>>2]|0)+(g<<4)&p)>>2];c[(B&p)+4>>2]=v;k=uh(f,13328,B)|0;v=f+284|0;t=c[(v&p)>>2]|0;c[(v&p)>>2]=0;l=Qe(f,k,22,x,0)|0;c[(v&p)>>2]=t;l=(l|0)==0?c[(w&p)>>2]|0:l;mg(f,k);k=(l|0)==0;if(k)an(f,g)|0;if(!(a[(f&n)+65>>0]|0)){if(!k){A=l;C=34}}else{Eg(f);A=7;C=34}if((C|0)==34?(c[(f&p)+24>>2]&65536|0)==0:0){k=A;break}k=(c[((c[(y&p)>>2]|0)+(g<<4)&p)+12>>2]|0)+78|0;b[(k&o)>>1]=e[(k&o)>>1]|1;k=0}while(0);if(!u)C=38;else{un(c[(z&p)>>2]|0)|0;C=38}}else C=38;while(0);if((C|0)==38)if((k|0)==7|(k|0)==3082)a[(f&n)+65>>0]=1;i=D;return k|0}function _n(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0;q=i;i=i+80|0;if((i|0)>=(j|0))fa();o=q;c[12066]=c[2708];if(!(c[12067]|0))c[12067]=Lb(48336)|0;if(!(c[12068]|0))c[12068]=Lb(48352)|0;g=o+12|0;h=0;f=0;do{if((((f|0)!=0?(rc[c[47604>>2]&127](f,o)|0)==0:0)?(c[(g&p)>>2]&61440|0)==16384:0)?(rc[c[47580>>2]&127](f,7)|0)==0:0)break;f=c[(h<<2&p)+48264>>2]|0;h=h+1|0}while(h>>>0<7);m=(f|0)==0?28928:f;if(((gw(m|0)|0)+25|0)>>>0>>0){b=b+-18|0;do{c[(o&p)>>2]=m;ad(b,e,48248,o)|0;g=gw(e|0)|0;f=e+g|0;cd(15,f);l=e+(g+15)|0;k=0;h=g;while(1){a[(f&n)>>0]=a[(((d[(f&n)>>0]|0)%62|0)&255&n)+48184>>0]|0;k=k+1|0;h=h+1|0;if((k|0)==15)break;else f=e+h|0}a[(l&n)>>0]=0;a[(e+g&n)+16>>0]=0}while((rc[c[47580>>2]&127](e,0)|0)==0);f=0}else f=1;i=q;return f|0}function $n(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+80|0;if((i|0)>=(j|0))fa();k=m;h=(d|0)!=0;f=h?d:420;g=b|524288;while(1){e=ac[c[47556>>2]&63](a,g,f)|0;if((e|0)<0)if((c[((Hb()|0)&p)>>2]|0)==4)continue;else break;if((e|0)>2){l=6;break}lc[c[47568>>2]&127](e)|0;c[(k&p)>>2]=a;c[(k&p)+4>>2]=e;bd(28,48120,k);if((ac[c[47556>>2]&63](48168,b,d)|0)<0){e=-1;break}}if((l|0)==6)if(((h?(rc[c[47616>>2]&127](e,k)|0)==0:0)?(c[(k&p)+36>>2]|0)==0:0)?(c[(k&p)+12>>2]&511|0)!=(d|0):0)rc[c[47724>>2]&127](e,d)|0;i=m;return e|0}function ao(a,b,d){a=a|0;b=b|0;d=d|0;if(lc[c[47568>>2]&127](b)|0){if(!a)b=0;else b=c[(a&p)+32>>2]|0;co(4106,47856,b,d)|0}return}function bo(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+80|0;if((i|0)>=(j|0))fa();g=h;d=h+4|0;f=a+18|0;do if(!(b[(f&o)>>1]&256)){if(rc[c[47616>>2]&127](c[(a&p)+12>>2]|0,d)|0){c[(g&p)>>2]=c[(a&p)+32>>2];bd(28,48592,g);b[(f&o)>>1]=e[(f&o)>>1]|0|256;break}d=c[(d&p)+16>>2]|0;if(!d){if(!(b[(f&o)>>1]&32)){c[(g&p)>>2]=c[(a&p)+32>>2];bd(28,48616,g);b[(f&o)>>1]=e[(f&o)>>1]|0|256;break}}else if(d>>>0>1){c[(g&p)>>2]=c[(a&p)+32>>2];bd(28,48648,g);b[(f&o)>>1]=e[(f&o)>>1]|0|256;break}if(xo(a)|0){c[(g&p)>>2]=c[(a&p)+32>>2];bd(28,48680,g);b[(f&o)>>1]=e[(f&o)>>1]|0|256}}while(0);i=h;return}function co(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;f=i;i=i+32|0;if((i|0)>=(j|0))fa();g=f;k=c[((Hb()|0)&p)>>2]|0;h=Rb(k|0)|0;c[(g&p)>>2]=e;c[(g&p)+4>>2]=k;c[(g&p)+8>>2]=b;c[(g&p)+12>>2]=(d|0)==0?10360:d;c[(g&p)+16>>2]=h;bd(a,47864,g);i=f;return a|0}function eo(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=a+40|0;d=c[(i&p)>>2]|0;h=d<<1;h=h>>>0<256?256:h;if((d|0)!=0?(b=c[3164]|0,(b|0)!=0):0)nc[b&3]();b=h<<2;g=qg(b,0)|0;d=(g|0)==0;if(!d)fw(g|0,0,b|0)|0;if((c[(i&p)>>2]|0)!=0?(e=c[3166]|0,(e|0)!=0):0)nc[e&3]();if(!d){e=c[(i&p)>>2]|0;f=a+44|0;b=c[(f&p)>>2]|0;if(e){a=0;do{d=c[(b+(a<<2)&p)>>2]|0;if(d){do{k=d+16|0;j=d;d=c[(k&p)>>2]|0;b=g+((((c[(j&p)+8>>2]|0)>>>0)%(h>>>0)|0)<<2)|0;c[(k&p)>>2]=c[(b&p)>>2];c[(b&p)>>2]=j}while((d|0)!=0);b=c[(f&p)>>2]|0}a=a+1|0}while(a>>>0>>0)}Wc(b);c[(f&p)>>2]=g;c[(i&p)>>2]=h}return}function fo(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=a+24|0;h=a+16|0;d=a+4|0;a:do if((c[(h&p)>>2]|0)>>>0>(c[(d&p)>>2]|0)>>>0)do{e=c[(g&p)>>2]|0;if(!e)break a;go(e);f=c[(e&p)+20>>2]|0;b=(c[(f&p)+44>>2]|0)+((((c[(e&p)+8>>2]|0)>>>0)%((c[(f&p)+40>>2]|0)>>>0)|0)<<2)|0;while(1){i=c[(b&p)>>2]|0;a=i+16|0;if((i|0)==(e|0))break;else b=a}c[(b&p)>>2]=c[(a&p)>>2];a=f+36|0;c[(a&p)>>2]=(c[(a&p)>>2]|0)+-1;io(e)}while((c[(h&p)>>2]|0)>>>0>(c[(d&p)>>2]|0)>>>0);while(0);return}function go(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[(b&p)+20>>2]|0;f=c[(e&p)>>2]|0;g=b+28|0;h=c[(g&p)>>2]|0;i=b+24|0;d=c[(i&p)>>2]|0;if(!h)c[(f&p)+20>>2]=d;else{c[(h&p)+24>>2]=d;d=c[(i&p)>>2]|0}if(!d)c[(f&p)+24>>2]=h;else c[(d&p)+28>>2]=h;c[(i&p)>>2]=0;c[(g&p)>>2]=0;a[(b&n)+12>>0]=1;d=e+32|0;c[(d&p)>>2]=(c[(d&p)>>2]|0)+-1;return}function ho(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0;k=c[(b&p)>>2]|0;s=b+36|0;i=c[(s&p)>>2]|0;g=c[(b&p)+32>>2]|0;h=i-g|0;q=(e|0)==1;if(q)if(h>>>0<(c[(k&p)+12>>2]|0)>>>0?h>>>0<(c[(b&p)+24>>2]|0)>>>0:0){if((c[3155]|0)!=0?((c[(b&p)+8>>2]|0)+(c[(b&p)+4>>2]|0)|0)<=(c[3154]|0):0)e=12648|0;else e=9060|0;if(!((c[(e&p)>>2]|0)!=0&g>>>0>>0))o=8;else f=0}else f=0;else o=8;do if((o|0)==8){m=b+40|0;if(i>>>0>=(c[(m&p)>>2]|0)>>>0)eo(b);j=b+12|0;do if((c[(j&p)>>2]|0)!=0?(f=c[(k&p)+24>>2]|0,(f|0)!=0):0){if(((c[(s&p)>>2]|0)+1|0)>>>0<(c[(b&p)+20>>2]|0)>>>0?(c[(k&p)+16>>2]|0)>>>0<(c[(k&p)+4>>2]|0)>>>0:0){if((c[3155]|0)!=0?((c[(b&p)+8>>2]|0)+(c[(b&p)+4>>2]|0)|0)<=(c[3154]|0):0)e=12648|0;else e=9060|0;if(!(c[(e&p)>>2]|0)){o=23;break}}e=f+20|0;g=c[(e&p)>>2]|0;h=(c[(g&p)+44>>2]|0)+((((c[(f&p)+8>>2]|0)>>>0)%((c[(g&p)+40>>2]|0)>>>0)|0)<<2)|0;while(1){t=c[(h&p)>>2]|0;i=t+16|0;if((t|0)==(f|0))break;else h=i}c[(h&p)>>2]=c[(i&p)>>2];i=g+36|0;c[(i&p)>>2]=(c[(i&p)>>2]|0)+-1;go(f);e=c[(e&p)>>2]|0;if(((c[(e&p)+8>>2]|0)+(c[(e&p)+4>>2]|0)|0)==((c[(b&p)+8>>2]|0)+(c[(b&p)+4>>2]|0)|0)){l=k+16|0;c[(l&p)>>2]=(c[(j&p)>>2]|0)-(c[(e&p)+12>>2]|0)+(c[(l&p)>>2]|0);break}else{io(f);o=23;break}}else o=23;while(0);if((o|0)==23){if(q?(l=c[3164]|0,(l|0)!=0):0)nc[l&3]();e=b+4|0;g=Go((c[(e&p)>>2]|0)+32+(c[(b&p)+8>>2]|0)|0)|0;e=c[(e&p)>>2]|0;f=g+e|0;if(g){c[(f&p)>>2]=g;c[(g+e&p)+4>>2]=g+(e+32);if(c[(j&p)>>2]|0){o=(c[(b&p)>>2]|0)+16|0;c[(o&p)>>2]=(c[(o&p)>>2]|0)+1}}else f=0;if(q?(r=c[3166]|0,(r|0)!=0):0)nc[r&3]();if(!f){f=0;break}}g=(d>>>0)%((c[(m&p)>>2]|0)>>>0)|0;c[(s&p)>>2]=(c[(s&p)>>2]|0)+1;c[(f&p)+8>>2]=d;o=b+44|0;c[(f&p)+16>>2]=c[((c[(o&p)>>2]|0)+(g<<2)&p)>>2];c[(f&p)+20>>2]=b;c[(f&p)+28>>2]=0;c[(f&p)+24>>2]=0;a[(f&n)+12>>0]=1;c[(c[(f&p)+4>>2]&p)>>2]=0;c[((c[(o&p)>>2]|0)+(g<<2)&p)>>2]=f;g=b+28|0;if((c[(g&p)>>2]|0)>>>0>>0)c[(g&p)>>2]=d}while(0);return f|0}function io(a){a=a|0;var b=0;if((a|0)!=0?(b=c[(a&p)+20>>2]|0,$k(c[(a&p)>>2]|0),(c[(b&p)+12>>2]|0)!=0):0){b=(c[(b&p)>>2]|0)+16|0;c[(b&p)>>2]=(c[(b&p)>>2]|0)+-1}return}function jo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=b+40|0;if(c[(h&p)>>2]|0){i=b+44|0;f=b+36|0;g=0;do{e=(c[(i&p)>>2]|0)+(g<<2)|0;b=c[(e&p)>>2]|0;a:do if(b)do{while(1){if((c[(b&p)+8>>2]|0)>>>0>>0)break;c[(f&p)>>2]=(c[(f&p)>>2]|0)+-1;c[(e&p)>>2]=c[(b&p)+16>>2];if(!(a[(b&n)+12>>0]|0))go(b);io(b);b=c[(e&p)>>2]|0;if(!b)break a}e=b+16|0;b=c[(e&p)>>2]|0}while((b|0)!=0);while(0);g=g+1|0}while(g>>>0<(c[(h&p)>>2]|0)>>>0)}return}function ko(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=c[(b&p)>>2]|0;g=c[((c[(f&p)+32>>2]|0)&p)+88>>2]|0;h=((g|0)<0)<<31>>31;if(!((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0)){d=qg(d,e)|0;if(!d){Rd(b);d=0}}else{c[(b&p)+20>>2]=18;a[(b&n)+25>>0]=1;Xg(f,10096,-1,1,0)|0;d=0}return d|0}function lo(b){b=b|0;var c=0,d=0,e=0,f=0;do if(b){c=a[(b&n)>>0]|0;d=c<<24>>24;if((d|0)==91)f=93;else if((d|0)==96|(d|0)==34|(d|0)==39)f=c;else break;d=1;e=0;while(1){c=a[(b+d&n)>>0]|0;if(c<<24>>24==f<<24>>24){d=d+1|0;c=b+e|0;if((a[(b+d&n)>>0]|0)!=f<<24>>24)break;a[(c&n)>>0]=f}else a[(b+e&n)>>0]=c;d=d+1|0;e=e+1|0}a[(c&n)>>0]=0}while(0);return}function mo(b,f,g,k){b=b|0;f=f|0;g=g|0;k=k|0;var l=0,m=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,S=0,T=0,U=0,V=0,W=0,X=0;W=i;i=i+176|0;if((i|0)>=(j|0))fa();T=W+64|0;u=W+132|0;t=W+128|0;s=W+124|0;v=W+56|0;P=W+48|0;U=W+136|0;S=W;r=k+0|0;m=r+48|0;do{c[(r&p)>>2]=0;r=r+4|0}while((r|0)<(m|0));a:do if(f){l=c[(g&p)>>2]|0;b:do if(((d[(e[(l&o)+8>>1]&31&n)+10064>>0]|0)+-1|0)>>>0>=2){r=Sg(l,1)|0;if(!r){l=1;break a}m=(a[(r&n)>>0]|0)==45;l=m?r+1|0:r;c[(T&p)>>2]=4;c[(T&p)+4>>2]=0;c[(T&p)+8>>2]=9999;c[(T&p)+12>>2]=45;c[(T&p)+16>>2]=u;c[(T&p)+20>>2]=2;c[(T&p)+24>>2]=1;c[(T&p)+28>>2]=12;c[(T&p)+32>>2]=45;c[(T&p)+36>>2]=t;c[(T&p)+40>>2]=2;c[(T&p)+44>>2]=1;c[(T&p)+48>>2]=31;c[(T&p)+52>>2]=0;c[(T&p)+56>>2]=s;do if((rq(l,T)|0)==3){l=l+10|0;while(1){M=a[(l&n)>>0]|0;if(M<<24>>24==84?1:(a[(M&255&n)+10368>>0]&1)!=0)l=l+1|0;else break}if(sq(l,k)|0){if(a[(l&n)>>0]|0)break;a[(k&n)+41>>0]=0}a[(k&n)+42>>0]=0;a[(k&n)+40>>0]=1;M=c[(u&p)>>2]|0;c[(k&p)+8>>2]=m?0-M|0:M;c[(k&p)+12>>2]=c[(t&p)>>2];c[(k&p)+16>>2]=c[(s&p)>>2];if(!(a[(k&n)+43>>0]|0))break b;no(k);break b}while(0);if(sq(r,k)|0){if(!(dd(r,20080)|0))if(!(qq(b,k)|0))break;else{l=1;break a}else l=r;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;if(!(Tl(r,v,l-r&1073741823,1)|0)){l=1;break a}w=+h[(v&q)>>3]*864.0e5+.5;L=+R(w)>=1.0?(w>0.0?~~+da(+Q(w/4294967296.0),4294967295.0)>>>0:~~+ba((w-+(~~w>>>0))/4294967296.0)>>>0):0;M=k;c[(M&p)>>2]=~~w>>>0;c[(M&p)+4>>2]=L;a[(k&n)+42>>0]=1}}else{w=+Ug(l)*864.0e5+.5;L=+R(w)>=1.0?(w>0.0?~~+da(+Q(w/4294967296.0),4294967295.0)>>>0:~~+ba((w-+(~~w>>>0))/4294967296.0)>>>0):0;M=k;c[(M&p)>>2]=~~w>>>0;c[(M&p)+4>>2]=L;a[(k&n)+42>>0]=1}while(0);if((f|0)>1){l=k+40|0;z=k+41|0;A=k+43|0;B=k+42|0;C=U+8|0;D=C;E=U+9|0;F=k+24|0;H=k+20|0;I=k+32|0;J=k+16|0;K=k+12|0;L=U+1|0;M=k+8|0;N=1;while(1){t=Sg(c[(g+(N<<2)&p)>>2]|0,1)|0;if(!t){l=1;break a}c[(T&p)>>2]=1;v=0;do{u=a[(t+v&n)>>0]|0;if(!(u<<24>>24))break;a[(U+v&n)>>0]=a[(u&255&n)+9328>>0]|0;v=v+1|0}while((v|0)<29);a[(U+v&n)>>0]=0;c:do switch(a[(U&n)>>0]|0){case 119:{if(!($v(U,19976,8)|0)){v=C;while(1)if(!(a[(v&n)>>0]|0))break;else v=v+1|0;if((Tl(C,P,v-D&1073741823,1)|0)!=0?(w=+h[(P&q)>>3],O=~~w,+(O|0)==w&(O|0)>-1&w<7.0):0){oo(k);po(k);a[(A&n)>>0]=0;a[(B&n)>>0]=0;no(k);m=k;v=c[(m&p)>>2]|0;m=c[(m&p)+4>>2]|0;t=jw(v|0,m|0,1296e5,0)|0;t=qw(t|0,G|0,864e5,0)|0;t=rw(t|0,G|0,7,0)|0;r=G;X=((O|0)<0)<<31>>31;s=(r|0)>(X|0)|(r|0)==(X|0)&t>>>0>O>>>0;u=jw(t|0,r|0,-7,-1)|0;r=dw(O|0,X|0,(s?u:t)|0,(s?G:r)|0)|0;r=sw(r|0,G|0,864e5,0)|0;m=jw(r|0,G|0,v|0,m|0)|0;v=k;c[(v&p)>>2]=m;c[(v&p)+4>>2]=G;a[(l&n)>>0]=0;a[(z&n)>>0]=0;a[(A&n)>>0]=0;c[(T&p)>>2]=0;v=0}else V=82}else V=82;break}case 108:{if(!(_v(U,19936)|0)){no(k);m=tq(k,b,T)|0;V=k;m=jw(c[(V&p)>>2]|0,c[(V&p)+4>>2]|0,m|0,G|0)|0;V=k;c[(V&p)>>2]=m;c[(V&p)+4>>2]=G;a[(l&n)>>0]=0;a[(z&n)>>0]=0;a[(A&n)>>0]=0;V=82}else V=82;break}case 115:{if(!($v(U,19992,9)|0)){oo(k);a[(z&n)>>0]=1;c[(F&p)>>2]=0;c[(H&p)>>2]=0;h[(I&q)>>3]=0.0;a[(A&n)>>0]=0;a[(B&n)>>0]=0;if(!(_v(E,20008)|0)){c[(J&p)>>2]=1;c[(T&p)>>2]=0;v=0;break c}if(!(_v(E,20016)|0)){oo(k);c[(K&p)>>2]=1;c[(J&p)>>2]=1;c[(T&p)>>2]=0;v=0;break c}if(!(_v(E,20024)|0)){c[(T&p)>>2]=0;v=0}else V=82}else V=82;break}case 117:{if((_v(U,19952)|0)==0?(a[(B&n)>>0]|0)!=0:0){m=k;m=jw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,43200,0)|0;m=qw(m|0,G|0,86400,0)|0;m=jw(m|0,G|0,1045635584,49096)|0;v=k;c[(v&p)>>2]=m;c[(v&p)+4>>2]=G;a[(l&n)>>0]=0;a[(z&n)>>0]=0;a[(A&n)>>0]=0;c[(T&p)>>2]=0;v=0;break c}if(!(_v(U,19968)|0)){no(k);u=tq(k,b,T)|0;t=G;v=c[(T&p)>>2]|0;if(!v){m=k;m=dw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,u|0,t|0)|0;V=k;c[(V&p)>>2]=m;c[(V&p)+4>>2]=G;a[(l&n)>>0]=0;a[(z&n)>>0]=0;a[(A&n)>>0]=0;V=tq(k,b,T)|0;V=dw(u|0,t|0,V|0,G|0)|0;m=k;m=jw(V|0,G|0,c[(m&p)>>2]|0,c[(m&p)+4>>2]|0)|0;V=k;c[(V&p)>>2]=m;c[(V&p)+4>>2]=G;V=82}}else V=82;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 45:case 43:{t=1;while(1){v=U+t|0;u=a[(v&n)>>0]|0;if(u<<24>>24==58|u<<24>>24==0){u=v;break}if(!(a[(u&255&n)+10368>>0]&1))t=t+1|0;else{u=v;break}}if(!(Tl(U,P,t,1)|0)){c[(T&p)>>2]=1;v=1;break c}v=a[(u&n)>>0]|0;if(v<<24>>24==58){v=((d[(U&n)>>0]|0)+-48|0)>>>0<10?U:L;r=S+0|0;m=r+48|0;do{c[(r&p)>>2]=0;r=r+4|0}while((r|0)<(m|0));if(sq(v,S)|0){V=82;break c}no(S);v=S;v=jw(c[(v&p)>>2]|0,c[(v&p)+4>>2]|0,-432e5,-1)|0;v=rw(v|0,G|0,864e5,0)|0;u=G;m=S;c[(m&p)>>2]=v;c[(m&p)+4>>2]=u;if((a[(U&n)>>0]|0)==45){v=dw(0,0,v|0,u|0)|0;u=G;m=S;c[(m&p)>>2]=v;c[(m&p)+4>>2]=u}no(k);a[(l&n)>>0]=0;a[(z&n)>>0]=0;a[(A&n)>>0]=0;m=k;m=jw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,v|0,u|0)|0;v=k;c[(v&p)>>2]=m;c[(v&p)+4>>2]=G;c[(T&p)>>2]=0;v=0;break c}if(a[(v&255&n)+10368>>0]&1){u=U+(t+1)|0;while(1){v=a[(u&n)>>0]|0;if(!(a[(v&255&n)+10368>>0]&1))break;else u=u+1|0}}if(!(v<<24>>24))v=u;else{v=u;do v=v+1|0;while((a[(v&n)>>0]|0)!=0)}v=v-u&1073741823;if((v+-3|0)>>>0>7)V=82;else{t=v+-1|0;s=u+t|0;if((a[(s&n)>>0]|0)==115){a[(s&n)>>0]=0;v=t}no(k);c[(T&p)>>2]=0;x=+h[(P&q)>>3];y=x<0.0?-.5:.5;do if((v|0)==4){if(!(_v(u,20032)|0)){w=x*36.0e5+y;r=+R(w)>=1.0?(w>0.0?~~+da(+Q(w/4294967296.0),4294967295.0)>>>0:~~+ba((w-+(~~w>>>0))/4294967296.0)>>>0):0;m=k;r=jw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,~~w>>>0|0,r|0)|0;m=k;c[(m&p)>>2]=r;c[(m&p)+4>>2]=G;break}if(!(_v(u,20016)|0)){m=~~x;oo(k);po(k);c[(M&p)>>2]=(c[(M&p)>>2]|0)+m;a[(B&n)>>0]=0;no(k);w=+(m|0);if(w!=x){w=y+(x-w)*365.0*864.0e5;r=+R(w)>=1.0?(w>0.0?~~+da(+Q(w/4294967296.0),4294967295.0)>>>0:~~+ba((w-+(~~w>>>0))/4294967296.0)>>>0):0;m=k;r=jw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,~~w>>>0|0,r|0)|0;m=k;c[(m&p)>>2]=r;c[(m&p)+4>>2]=G}}else V=80}else if((v|0)==6){if(!(_v(u,20040)|0)){w=x*6.0e4+y;r=+R(w)>=1.0?(w>0.0?~~+da(+Q(w/4294967296.0),4294967295.0)>>>0:~~+ba((w-+(~~w>>>0))/4294967296.0)>>>0):0;m=k;r=jw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,~~w>>>0|0,r|0)|0;m=k;c[(m&p)>>2]=r;c[(m&p)+4>>2]=G;break}if(!(_v(u,20048)|0)){w=x*1.0e3+y;r=+R(w)>=1.0?(w>0.0?~~+da(+Q(w/4294967296.0),4294967295.0)>>>0:~~+ba((w-+(~~w>>>0))/4294967296.0)>>>0):0;m=k;r=jw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,~~w>>>0|0,r|0)|0;m=k;c[(m&p)>>2]=r;c[(m&p)+4>>2]=G}else V=80}else if((v|0)==5)if(!(_v(u,20008)|0)){oo(k);po(k);m=~~x;r=(c[(K&p)>>2]|0)+m|0;s=(((r|0)>0?-1:-12)+r|0)/12|0;c[(M&p)>>2]=(c[(M&p)>>2]|0)+s;c[(K&p)>>2]=(ca(s,-12)|0)+r;a[(B&n)>>0]=0;no(k);w=+(m|0);if(w!=x){w=y+(x-w)*30.0*864.0e5;r=+R(w)>=1.0?(w>0.0?~~+da(+Q(w/4294967296.0),4294967295.0)>>>0:~~+ba((w-+(~~w>>>0))/4294967296.0)>>>0):0;m=k;r=jw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,~~w>>>0|0,r|0)|0;m=k;c[(m&p)>>2]=r;c[(m&p)+4>>2]=G}}else V=80;else if((v|0)==3?(_v(u,20024)|0)==0:0){w=x*864.0e5+y;r=+R(w)>=1.0?(w>0.0?~~+da(+Q(w/4294967296.0),4294967295.0)>>>0:~~+ba((w-+(~~w>>>0))/4294967296.0)>>>0):0;m=k;r=jw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,~~w>>>0|0,r|0)|0;m=k;c[(m&p)>>2]=r;c[(m&p)+4>>2]=G}else V=80;while(0);if((V|0)==80)c[(T&p)>>2]=1;a[(l&n)>>0]=0;a[(z&n)>>0]=0;a[(A&n)>>0]=0;V=82}break}default:V=82}while(0);if((V|0)==82){V=0;v=c[(T&p)>>2]|0}N=N+1|0;if(v){l=1;break a}if((N|0)>=(f|0)){l=0;break a}}}else l=0}else l=qq(b,k)|0;while(0);i=W;return l|0}function no(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0.0;i=b+42|0;if(!(a[(i&n)>>0]|0)){j=b+40|0;if(a[(j&n)>>0]|0){e=c[(b&p)+8>>2]|0;d=c[(b&p)+12>>2]|0;f=c[(b&p)+16>>2]|0;if((d|0)<3)g=4}else{f=1;d=1;e=2e3;g=4}if((g|0)==4){d=d+12|0;e=e+-1|0}o=(+(f+2+((e|0)/-100|0)+((e|0)/400|0)+(((e*36525|0)+172251900|0)/100|0)+(((d*306001|0)+306001|0)/1e4|0)|0)+-1524.5)*864.0e5;e=~~o>>>0;f=+R(o)>=1.0?(o>0.0?~~+da(+Q(o/4294967296.0),4294967295.0)>>>0:~~+ba((o-+(~~o>>>0))/4294967296.0)>>>0):0;d=b;c[(d&p)>>2]=e;c[(d&p)+4>>2]=f;a[(i&n)>>0]=1;d=b+41|0;if((a[(d&n)>>0]|0)!=0?(k=ca(c[(b&p)+20>>2]|0,36e5)|0,k=((c[(b&p)+24>>2]|0)*6e4|0)+k|0,o=+h[(b&q)+32>>3]*1.0e3,l=jw(~~o>>>0|0,(+R(o)>=1.0?(o>0.0?~~+da(+Q(o/4294967296.0),4294967295.0)>>>0:~~+ba((o-+(~~o>>>0))/4294967296.0)>>>0):0)|0,e|0,f|0)|0,k=jw(l|0,G|0,k|0,((k|0)<0)<<31>>31|0)|0,l=G,m=b,c[(m&p)>>2]=k,c[(m&p)+4>>2]=l,m=b+43|0,(a[(m&n)>>0]|0)!=0):0){f=(c[(b&p)+28>>2]|0)*6e4|0;f=dw(k|0,l|0,f|0,((f|0)<0)<<31>>31|0)|0;e=b;c[(e&p)>>2]=f;c[(e&p)+4>>2]=G;a[(j&n)>>0]=0;a[(d&n)>>0]=0;a[(m&n)>>0]=0}}return}function oo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=b+40|0;if(!(a[(g&n)>>0]|0)){if(!(a[(b&n)+42>>0]|0)){d=2e3;e=1;f=1}else{d=b;d=jw(c[(d&p)>>2]|0,c[(d&p)+4>>2]|0,432e5,0)|0;d=qw(d|0,G|0,864e5,0)|0;h=~~((+(d|0)+-1867216.25)/36524.25);h=d+1525+h+((h|0)/-4|0)|0;d=~~((+(h|0)+-122.1)/365.25);h=h-((d*36525|0)/100|0)|0;f=~~(+(h|0)/30.6001);e=((f|0)<14?-1:-13)+f|0;d=((e|0)>2?-4716:-4715)+d|0;f=h-~~(+(f|0)*30.6001)|0}c[(b&p)+16>>2]=f;c[(b&p)+12>>2]=e;c[(b&p)+8>>2]=d;a[(g&n)>>0]=1}return}function po(b){b=b|0;var d=0,e=0,f=0,g=0,i=0.0;d=b+41|0;if(!(a[(d&n)>>0]|0)){no(b);g=b;g=jw(c[(g&p)>>2]|0,c[(g&p)+4>>2]|0,432e5,0)|0;g=rw(g|0,G|0,864e5,0)|0;i=+(g|0)/1.0e3;g=~~i;f=(g|0)/3600|0;c[(b&p)+20>>2]=f;f=(ca(f,-3600)|0)+g|0;e=(f|0)/60|0;c[(b&p)+24>>2]=e;h[(b&q)+32>>3]=i-+(g|0)+ +(f+(ca(e,-60)|0)|0);a[(d&n)>>0]=1}return}function qo(a){a=a|0;mg(c[(a&p)+52>>2]|0,a);return}function ro(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;i=b+65|0;do if(!(a[(i&n)>>0]|0)){if(!d){h=mh(b,f,g)|0;break}if((c[(b&p)+276>>2]|0)>>>0<=d>>>0?(c[(b&p)+280>>2]|0)>>>0>d>>>0:0){i=b+248|0;if(!(0>>0|(0==(g|0)?(e[(i&o)>>1]|0)>>>0>>0:0))){h=d;break}h=mh(b,f,g)|0;if(!h){h=0;break}kw(h|0,d|0,e[(i&o)>>1]|0)|0;mg(b,d);break}if((Lc()|0)==0?(h=rg(d,f,g)|0,(h|0)!=0):0)break;a[(i&n)>>0]=1;h=0}else h=0;while(0);return h|0}function so(a,d){a=a|0;d=d|0;var e=0,f=0;if(!a)a=0;else{f=c[(a&p)+4>>2]|0;c[(f&p)+4>>2]=c[(a&p)>>2];f=f+22|0;a=b[(f&o)>>1]|0;if((d|0)>-1){e=a&65535;a=e&65531;b[(f&o)>>1]=a;if(d){a=(e|4)&65535;b[(f&o)>>1]=a}}a=(a&65535)>>>2&1}return a|0}function to(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=c[(b&p)+4>>2]|0;c[(h&p)+4>>2]=c[(b&p)>>2];h=c[(h&p)>>2]|0;f=e&3;if((f|0)!=1){g=a[(h&n)+12>>0]|0;b=h+7|0;a[(b&n)>>0]=g<<24>>24!=0&1;if((f|0)==3)g=g<<24>>24==0&1;else g=0}else{b=h+7|0;a[(b&n)>>0]=1;g=0}a[(h&n)+8>>0]=g;do if(!(a[(b&n)>>0]|0)){if(e&4){a[(h&n)+11>>0]=3;a[(h&n)+9>>0]=3;b=3;break}a[(h&n)+11>>0]=2;b=h+9|0;if(!(e&8)){a[(b&n)>>0]=2;b=2;break}else{a[(b&n)>>0]=3;b=2;break}}else{a[(h&n)+11>>0]=0;a[(h&n)+9>>0]=0;b=0}while(0);if(g<<24>>24)b=(b&255|32)&255;a[(h&n)+10>>0]=b;b=h+20|0;f=d[(b&n)>>0]|0;a[(b&n)>>0]=(e&16|0)==0?f|1:f&254;return}function uo(a){a=a|0;var b=0,d=0;d=a+12|0;b=c[(d&p)>>2]|0;if((b|0)>-1){ao(a,b,27311);c[(d&p)>>2]=-1}Wc(c[(a&p)+28>>2]|0);b=a+0|0;d=b+44|0;do{c[(b&p)>>2]=0;b=b+4|0}while((b|0)<(d|0));return}function vo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=f&131071;while(1){h=cb(a|0,b|0,0)|0;if(!((h|0)==(b|0)&(((h|0)<0)<<31>>31|0)==(d|0))){j=3;break}h=ac[c[47688>>2]&63](a,e,i)|0;if((h|0)>=0)break;f=c[((Hb()|0)&p)>>2]|0;if((f|0)!=4){j=9;break}}if((j|0)==3)if(!g)h=-1;else{if((h|0)==-1)h=c[((Hb()|0)&p)>>2]|0;else h=0;c[(g&p)>>2]=h;h=-1}else if((j|0)==9)if(g)c[(g&p)>>2]=f;return h|0}function wo(a,d,f){a=a|0;d=d|0;f=f|0;var g=0;g=c[(f&p)>>2]|0;do if((g|0)>=0){d=d&255;if(!g){f=a+18|0;b[(f&o)>>1]=(e[(f&o)>>1]|0)&(d^65535);break}else{f=a+18|0;b[(f&o)>>1]=e[(f&o)>>1]|0|d;break}}else c[(f&p)>>2]=((e[(a&o)+18>>1]|0)&(d&255)|0)!=0&1;while(0);return}function xo(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+80|0;if((i|0)>=(j|0))fa();d=e;b=a+8|0;if(c[(b&p)>>2]|0)if(!(rc[c[47604>>2]&127](c[(a&p)+32>>2]|0,d)|0))b=(c[(d&p)+72>>2]|0)!=(c[((c[(b&p)>>2]|0)&p)+4>>2]|0);else b=1;else b=0;i=e;return b&1|0}function yo(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+32|0;if((i|0)>=(j|0))fa();l=m;k=m+8|0;h=(c[((c[(a&p)+8>>2]|0)&p)+20>>2]|0)+12|0;if((c[(h&p)>>2]|0)>-1){c[(k&p)>>2]=0;c[(k&p)+4>>2]=0;c[(k&p)+8>>2]=0;c[(k&p)+12>>2]=0;b[(k&o)>>1]=d;b[(k&o)+2>>1]=0;c[(k&p)+4>>2]=f;c[(k&p)+8>>2]=g;d=a+18|0;g=((b[(d&o)>>1]&512)>>>9)+13|0;f=c[11910]|0;h=c[(h&p)>>2]|0;c[(l&p)>>2]=k;h=(ac[f&63](h,g,l)|0)!=-1;b[(d&o)>>1]=(e[(d&o)>>1]|0)&65023;h=h?0:5}else h=0;i=m;return h|0}function zo(a){a=a|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0;k=c[((c[(a&p)+8>>2]|0)&p)+20>>2]|0;if((k|0)!=0?(c[(k&p)+28>>2]|0)==0:0){d=hc[c[47844>>2]&7]()|0;if((d|0)<32768)g=1;else g=(d|0)/32768|0;h=k+20|0;if(!(b[(h&o)>>1]|0)){f=k+12|0;d=k+24|0}else{f=k+12|0;d=k+24|0;i=k+16|0;j=0;do{if((c[(f&p)>>2]|0)>-1)rc[c[47820>>2]&127](c[((c[(d&p)>>2]|0)+(j<<2)&p)>>2]|0,c[(i&p)>>2]|0)|0;else Wc(c[((c[(d&p)>>2]|0)+(j<<2)&p)>>2]|0);j=j+g|0}while((j|0)<(e[(h&o)>>1]|0))}Wc(c[(d&p)>>2]|0);d=c[(f&p)>>2]|0;if((d|0)>-1){ao(a,d,29591);c[(f&p)>>2]=-1}c[((c[(k&p)>>2]|0)&p)+20>>2]=0;Wc(k)}return}function Ao(a){a=a|0;var b=0,d=0,e=0;d=(c[(a&p)+8>>2]|0)+28|0;b=c[(d&p)>>2]|0;if(b)do{e=b;b=c[(b&p)+8>>2]|0;ao(a,c[(e&p)>>2]|0,26573);Wc(e)}while((b|0)!=0);c[(d&p)>>2]=0;return}function Bo(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;l=i;i=i+32|0;if((i|0)>=(j|0))fa();h=l;g=l+8|0;k=c[(d&p)+8>>2]|0;f=b[(d&o)+18>>1]|0;if(!(f&1))if((a[(k&n)+13>>0]|0)!=0&(f&2)==0)f=4;else f=7;else if(!(f&2))f=4;else f=7;if((f|0)==4){f=k+13|0;if(!(a[(f&n)>>0]|0)){b[(g&o)+2>>1]=0;c[(g&p)+4>>2]=(c[2514]|0)+2;c[(g&p)+8>>2]=510;b[(g&o)>>1]=1;m=c[11910]|0;e=c[(d&p)+12>>2]|0;c[(h&p)>>2]=g;e=ac[m&63](e,13,h)|0;if((e|0)>=0){a[(f&n)>>0]=1;f=k+24|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1}}else e=0}else if((f|0)==7){g=c[11910]|0;f=c[(d&p)+12>>2]|0;c[(h&p)>>2]=e;e=ac[g&63](f,13,h)|0}i=l;return e|0}function Co(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;do if(b){f=c[(b&p)>>2]|0;if(!f){c[(b&p)>>2]=1;c[(b&p)+4>>2]=d;g=9;break}h=b+4|0;e=c[(h&p)>>2]|0;c[(b&p)>>2]=f+1;c[(h&p)>>2]=d;if(e){c[(d&p)>>2]=e;e=e+4|0;c[(d&p)+4>>2]=c[(e&p)>>2];f=c[(e&p)>>2]|0;if(!f)c[(a&p)+8>>2]=d;else c[(f&p)>>2]=d;c[(e&p)>>2]=d}else g=9}else g=9;while(0);if((g|0)==9){e=a+8|0;f=c[(e&p)>>2]|0;c[(d&p)>>2]=f;if(f)c[(f&p)+4>>2]=d;c[(d&p)+4>>2]=0;c[(e&p)>>2]=d}return}function Do(a,b){a=a|0;b=b|0;var d=0,e=0;if(b){if((c[(b&p)>>2]|0)>0){d=0;e=b+8|0;while(1){mg(a,c[(e&p)+4>>2]|0);mg(a,c[(e&p)+8>>2]|0);mg(a,c[(e&p)+12>>2]|0);mg(a,c[(e&p)+64>>2]|0);kg(a,c[(e&p)+16>>2]|0);Mk(a,c[(e&p)+20>>2]|0,1);Gk(a,c[(e&p)+44>>2]|0);Hk(a,c[(e&p)+48>>2]|0);d=d+1|0;if((d|0)>=(c[(b&p)>>2]|0))break;else e=e+72|0}}mg(a,b)}return}function Eo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;d=Fo(a,d)|0;if((d|0)>0){e=a+12|0;kw((c[(a&p)+8>>2]|0)+(c[(e&p)>>2]|0)|0,b|0,d|0)|0;c[(e&p)>>2]=(c[(e&p)>>2]|0)+d}return}function Fo(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;i=b+25|0;do if(!(a[(i&n)>>0]|0)){g=a[(b&n)+24>>0]|0;if(!(g<<24>>24)){f=b+16|0;d=(c[(f&p)>>2]|0)+-1-(c[(b&p)+12>>2]|0)|0;a[(i&n)>>0]=2;c[(f&p)>>2]=0;break}j=b+8|0;h=c[(j&p)>>2]|0;h=(h|0)==(c[(b&p)+4>>2]|0)?0:h;k=b+12|0;r=c[(k&p)>>2]|0;f=((r|0)<0)<<31>>31;u=d+1|0;u=jw(r|0,f|0,u|0,((u|0)<0)<<31>>31|0)|0;s=G;f=jw(u|0,s|0,r|0,f|0)|0;r=G;m=c[(b&p)+20>>2]|0;q=((m|0)<0)<<31>>31;t=(r|0)>(q|0)|(r|0)==(q|0)&f>>>0>m>>>0;f=t?u:f;r=t?s:r;if((r|0)>(q|0)|(r|0)==(q|0)&f>>>0>m>>>0){gn(b);a[(i&n)>>0]=2;c[(b&p)+16>>2]=0;d=0;break}m=b+16|0;c[(m&p)>>2]=f;if(g<<24>>24==1)g=ro(c[(b&p)>>2]|0,h,f,((f|0)<0)<<31>>31)|0;else g=Xc(h,f)|0;if(!g){gn(b);a[(i&n)>>0]=1;c[(m&p)>>2]=0;d=0;break}if((h|0)==0?(l=c[(k&p)>>2]|0,(l|0)>0):0)kw(g|0,c[(j&p)>>2]|0,l|0)|0;c[(j&p)>>2]=g;f=c[(b&p)>>2]|0;do if(!f)f=lc[c[8792>>2]&127](g)|0;else{if((c[(f&p)+276>>2]|0)>>>0<=g>>>0?(c[(f&p)+280>>2]|0)>>>0>g>>>0:0){f=e[(f&o)+248>>1]|0;break}f=lc[c[8792>>2]&127](g)|0}while(0);c[(m&p)>>2]=f}else d=0;while(0);return d|0}function Go(a){a=a|0;var b=0,d=0;if((c[3154]|0)>=(a|0)?(b=c[3160]|0,(b|0)!=0):0){c[3160]=c[(b&p)>>2];d=c[3161]|0;c[3161]=d+-1;c[3162]=(d|0)<=(c[3156]|0)&1;c[2173]=a;if((c[2183]|0)>>>0>>0)c[2183]=a;d=(c[2167]|0)+1|0;c[2167]=d;if(d>>>0>(c[2177]|0)>>>0)c[2177]=d}else{b=qg(a,((a|0)<0)<<31>>31)|0;if(b){d=lc[c[8792>>2]&127](b)|0;c[2173]=a;if((c[2183]|0)>>>0>>0)c[2183]=a;d=(c[2168]|0)+d|0;c[2168]=d;if(d>>>0>(c[2178]|0)>>>0)c[2178]=d}else b=0}return b|0}function Ho(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=a+20|0;if(c[(h&p)>>2]|0){f=a+24|0;i=ac[c[8864>>2]&63](b,(c[(f&p)>>2]|0)+40|0,d[(a&n)+28>>0]|0)|0;if(!i)e=7;else{g=c[2217]|0;e=c[(a&p)+16>>2]|0;if((e|0)<=-1){j=sw(e|0,((e|0)<0)<<31>>31|0,-1024,-1)|0;e=(c[(f&p)>>2]|0)+(c[(h&p)>>2]|0)|0;e=qw(j|0,G|0,e|0,((e|0)<0)<<31>>31|0)|0}jc[g&15](i,e);e=a+40|0;f=c[(e&p)>>2]|0;if(f)cc[c[8892>>2]&31](f);c[(e&p)>>2]=i;c[(a&p)+44>>2]=0;c[(h&p)>>2]=b;e=0}}else e=0;return e|0}function Io(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();g=k;f=c[(a&p)+208>>2]|0;if(((f|0)!=0?(b[(f&o)+40>>1]|0)>-1:0)?(e=c[(f&p)+72>>2]|0,(e|0)!=0):0){f=e;h=8}else h=4;do if((h|0)==4){f=g;c[(f&p)>>2]=0;c[(f&p)+4>>2]=0;f=c[(a&p)+60>>2]|0;e=c[(f&p)>>2]|0;if(!e){e=-1;f=-1}else{e=rc[c[(e&p)+24>>2]&127](f,g)|0;if(e)break;e=g;e=jw(c[(e&p)>>2]|0,c[(e&p)+4>>2]|0,-1,-1)|0;f=G}g=c[(a&p)+152>>2]|0;h=((g|0)<0)<<31>>31;f=jw(e|0,f|0,g|0,h|0)|0;f=qw(f|0,G|0,g|0,h|0)|0;h=8}while(0);if((h|0)==8){e=a+156|0;if(f>>>0>(c[(e&p)>>2]|0)>>>0)c[(e&p)>>2]=f;c[(d&p)>>2]=f;e=0}i=k;return e|0}function Jo(b){b=b|0;var d=0,e=0;e=b+64|0;if(!((a[(b&n)+7>>0]|0)==0?(d=c[(e&p)>>2]|0,d=rc[c[((c[(d&p)>>2]|0)&p)+20>>2]&127](d,2)|0,(d|0)!=0):0)){d=c[(e&p)>>2]|0;d=rc[c[((c[(d&p)>>2]|0)&p)+24>>2]&127](d,b+80|0)|0}return d|0}function Ko(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,o=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,H=0;H=i;i=i+48|0;if((i|0)>=(j|0))fa();E=H+16|0;D=H+8|0;C=H+36|0;y=H;x=H+32|0;w=H+28|0;B=H+24|0;f=c[(b&p)>>2]|0;c[(w&p)>>2]=0;c[(B&p)>>2]=1;A=b+64|0;g=c[(A&p)>>2]|0;g=rc[c[((c[(g&p)>>2]|0)&p)+24>>2]&127](g,y)|0;a:do if(!g){z=b+200|0;g=c[(z&p)>>2]|0;h=uq(c[(A&p)>>2]|0,g,(c[((c[(b&p)>>2]|0)&p)+8>>2]|0)+1|0)|0;if(!h){if(!(a[(g&n)>>0]|0))g=0;else g=pc[c[(f&p)+32>>2]&31](f,g,0,B)|0;b:do if((g|0)==0&(c[(B&p)>>2]|0)!=0){v=b+72|0;u=v;c[(u&p)>>2]=0;c[(u&p)+4>>2]=0;u=b+148|0;t=b+152|0;o=b+80|0;r=b+24|0;f=0;k=d;c:while(1){do{g=y;g=vq(b,d,c[(g&p)>>2]|0,c[(g&p)+4>>2]|0,x,w)|0;if((g|0)==101)break c;else if(g){F=27;break b}h=c[(x&p)>>2]|0;if((h|0)==-1){s=y;s=dw(c[(s&p)>>2]|0,c[(s&p)+4>>2]|0,c[(u&p)>>2]|0,0)|0;h=(c[(t&p)>>2]|0)+8|0;h=qw(s|0,G|0,h|0,((h|0)<0)<<31>>31|0)|0;c[(x&p)>>2]=h}if(!(h|d)){s=o;g=c[(u&p)>>2]|0;s=jw(g|0,0,c[(s&p)>>2]|0,c[(s&p)+4>>2]|0)|0;q=G;m=v;l=c[(m&p)>>2]|0;m=c[(m&p)+4>>2]|0;if((s|0)==(l|0)&(q|0)==(m|0)){m=y;m=dw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,s|0,q|0)|0;h=(c[(t&p)>>2]|0)+8|0;h=qw(m|0,G|0,h|0,((h|0)<0)<<31>>31|0)|0;c[(x&p)>>2]=h;m=q;l=s}}else{l=v;g=c[(u&p)>>2]|0;m=c[(l&p)+4>>2]|0;l=c[(l&p)>>2]|0}if((l|0)==(g|0)&(m|0)==0){g=c[(w&p)>>2]|0;l=Bl(b,g)|0;if(l){e=l;F=25;break a}c[(r&p)>>2]=g}}while((h|0)==0);l=0;while(1){if(k)xn(b);g=wq(b,v,0,1,0)|0;if((g|0)==522)break c;else if((g|0)==101)break;else if(g){F=27;break b}f=f+1|0;g=l+1|0;if(g>>>0>>0){k=0;l=g}else{k=0;continue c}}g=y;s=c[(g&p)+4>>2]|0;k=v;c[(k&p)>>2]=c[(g&p)>>2];c[(k&p)+4>>2]=s;k=0}a[(b&n)+18>>0]=a[(b&n)+12>>0]|0;w=f}else{f=0;F=27}while(0);if((F|0)==27){a[(b&n)+18>>0]=a[(b&n)+12>>0]|0;if(!g)w=f;else{e=g;break}}v=c[(z&p)>>2]|0;g=uq(c[(A&p)>>2]|0,v,(c[((c[(b&p)>>2]|0)&p)+8>>2]|0)+1|0)|0;if(!g){if(((a[(b&n)+16>>0]|0)+-1&255)>2?(e=Ig(b,0)|0,(e|0)!=0):0){f=w;break}e=Cl(b,(a[(v&n)>>0]|0)!=0&1,0)|0;if(!e)if((a[(v&n)>>0]|0)!=0&(c[(B&p)>>2]|0)!=0){t=c[(b&p)>>2]|0;g=t+4|0;f=c[(g&p)>>2]<<1;u=qg(f,((f|0)<0)<<31>>31)|0;if(!u){f=w;e=7}else{fw(u|0,0,f|0)|0;r=u+(c[(g&p)>>2]|0)|0;s=t+24|0;e=tc[c[(s&p)>>2]&31](t,v,u,16385,0)|0;d:do if(!e){e=rc[c[((c[(u&p)>>2]|0)&p)+24>>2]&127](u,D)|0;if(!e){o=(c[(t&p)+8>>2]|0)+1|0;f=D;f=jw(c[(f&p)>>2]|0,c[(f&p)+4>>2]|0,1,0)|0;f=jw(f|0,G|0,o|0,((o|0)<0)<<31>>31|0)|0;f=qg(f,G)|0;if(f){q=D;e=c[(q&p)>>2]|0;q=jw(e|0,c[(q&p)+4>>2]|0,1,0)|0;q=f+q|0;e=tc[c[((c[(u&p)>>2]|0)&p)+8>>2]&31](u,f,e,0,0)|0;if(!e){a[(f+(c[(D&p)>>2]|0)&n)>>0]=0;k=f;B=D;A=c[(B&p)+4>>2]|0;if((A|0)>0|(A|0)==0&(c[(B&p)>>2]|0)>>>0>0){g=t+32|0;l=k;m=f;do{e=pc[c[(g&p)>>2]&31](t,m,0,C)|0;if(e){F=55;break d}do if(c[(C&p)>>2]|0){e=tc[c[(s&p)>>2]&31](t,m,r,2049,0)|0;if(e){F=55;break d}e=uq(r,q,o)|0;h=c[(r&p)>>2]|0;if(h){lc[c[(h&p)+4>>2]&127](r)|0;c[(r&p)>>2]=0}if(e){F=55;break d}if(!(a[(q&n)>>0]|0))break;if(!(_v(q,v)|0)){e=0;F=55;break d}}while(0);if(!m)h=1;else{h=m;while(1)if(!(a[(h&n)>>0]|0))break;else h=h+1|0;h=(h-l&1073741823)+1|0}m=m+h|0;l=m;A=l-k|0;y=((A|0)<0)<<31>>31;B=D;z=c[(B&p)+4>>2]|0}while((y|0)<(z|0)|((y|0)==(z|0)?A>>>0<(c[(B&p)>>2]|0)>>>0:0))}e=c[(u&p)>>2]|0;if(e){lc[c[(e&p)+4>>2]&127](u)|0;c[(u&p)>>2]=0}e=ac[c[(t&p)+28>>2]&63](t,v,0)|0;Wc(f)}else F=55}else{e=7;f=0;F=55}}else{f=0;F=55}}else{f=0;F=55}while(0);if((F|0)==55)Wc(f);f=c[(u&p)>>2]|0;if(f){lc[c[(f&p)+4>>2]&127](u)|0;c[(u&p)>>2]=0}Wc(u);f=w}}else{f=w;e=0}else f=w}else{f=w;e=g}}else{f=0;e=h;F=25}}else{f=0;e=g;F=25}while(0);if((F|0)==25)a[(b&n)+18>>0]=a[(b&n)+12>>0]|0;if((d|0)!=0&(f|0)!=0){D=c[(b&p)+172>>2]|0;c[(E&p)>>2]=f;c[(E&p)+4>>2]=D;bd(539,14776,E)}wp(b);i=H;return e|0}function Lo(d){d=d|0;var e=0,f=0;e=d+44|0;if(a[(e&n)>>0]|0){if(!(a[(d&n)+43>>0]|0)){f=c[(d&p)+4>>2]|0;pc[c[((c[(f&p)>>2]|0)&p)+56>>2]&31](f,0,1,9)|0}a[(e&n)>>0]=0;a[(d&n)+47>>0]=0}e=d+40|0;f=b[(e&o)>>1]|0;if(f<<16>>16>-1){if(!(a[(d&n)+43>>0]|0)){d=c[(d&p)+4>>2]|0;pc[c[((c[(d&p)>>2]|0)&p)+56>>2]&31](d,(f<<16>>16)+3|0,1,5)|0}b[(e&o)>>1]=-1}return}function Mo(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0;if((g|0)>5)if((g|0)>100)f=15;else{if((g|0)>9){g=g+-9|0;g=ca(g*39|0,g)|0}else g=1;h=c[(d&p)>>2]|0;rc[c[(h&p)+60>>2]&127](h,g)|0;h=6}else h=6;a:do if((h|0)==6){do if(!f){f=nq(d,e)|0;do if((f|0)==5){if(!(c[(c[(d&p)+32>>2]&p)>>2]|0)){f=-1;break a}e=d+43|0;if(a[(e&n)>>0]|0){f=-1;break a}g=d+4|0;f=c[(g&p)>>2]|0;f=pc[c[((c[(f&p)>>2]|0)&p)+56>>2]&31](f,2,1,6)|0;if((f|0)==5){f=261;break a}else if(f)break;if(a[(e&n)>>0]|0){f=-1;break a}f=c[(g&p)>>2]|0;pc[c[((c[(f&p)>>2]|0)&p)+56>>2]&31](f,2,1,5)|0;f=-1;break a}while(0);if(f)break a;g=d+32|0;j=(c[(c[(g&p)>>2]&p)>>2]|0)+96|0;e=d+52|0;if((c[(j&p)>>2]|0)==(c[(d&p)+68>>2]|0)){i=d+43|0;h=a[(i&n)>>0]|0;if(!(h<<24>>24)){f=c[(d&p)+4>>2]|0;f=pc[c[((c[(f&p)>>2]|0)&p)+56>>2]&31](f,3,1,6)|0;h=a[(i&n)>>0]|0}else f=0;if(h<<24>>24!=2){q=c[(d&p)+4>>2]|0;cc[c[((c[(q&p)>>2]|0)&p)+60>>2]&31](q)}if((f|0)==5){q=g;g=5;break}else if(f)break a;if(!(Zv(c[(c[(g&p)>>2]&p)>>2]|0,e,48)|0)){b[(d&o)+40>>1]=0;f=0;break a}if(a[(i&n)>>0]|0){f=-1;break a}f=c[(d&p)+4>>2]|0;pc[c[((c[(f&p)>>2]|0)&p)+56>>2]&31](f,3,1,5)|0;f=-1;break a}else{q=g;g=0}}else{j=d+32|0;q=j;j=(c[(c[(j&p)>>2]&p)>>2]|0)+96|0;g=0}while(0);m=d+68|0;e=c[(j&p)+8>>2]|0;i=e>>>0>(c[(m&p)>>2]|0)>>>0;e=i?0:e;i=i&1^1;h=c[(j&p)+12>>2]|0;if(e>>>0<=h>>>0){l=h>>>0>(c[(m&p)>>2]|0)>>>0;i=l?i:2;e=l?e:h}h=c[(j&p)+16>>2]|0;if(e>>>0<=h>>>0){l=h>>>0>(c[(m&p)>>2]|0)>>>0;i=l?i:3;e=l?e:h}h=c[(j&p)+20>>2]|0;if(e>>>0<=h>>>0){l=h>>>0>(c[(m&p)>>2]|0)>>>0;i=l?i:4;e=l?e:h}b:do if((a[(d&n)+46>>0]&2)==0?((i|0)==0?1:e>>>0<(c[(m&p)>>2]|0)>>>0):0){l=d+43|0;k=d+4|0;h=1;while(1){g=h+3|0;if(a[(l&n)>>0]|0){i=h;break}f=c[(k&p)>>2]|0;f=pc[c[((c[(f&p)>>2]|0)&p)+56>>2]&31](f,g,1,10)|0;if(!f){i=h;break}else if((f|0)!=5)break a;h=h+1|0;if((h|0)>=5){g=5;break b}}h=c[(m&p)>>2]|0;c[(j+(i<<2)&p)+4>>2]=h;if(!(a[(l&n)>>0]|0)){e=c[(k&p)>>2]|0;pc[c[((c[(e&p)>>2]|0)&p)+56>>2]&31](e,g,1,9)|0;e=h;g=0}else{e=h;g=0}}while(0);if(!i){f=(g|0)==5?-1:520;break}g=i+3|0;f=d+43|0;h=a[(f&n)>>0]|0;do if(!(h<<24>>24)){h=c[(d&p)+4>>2]|0;h=pc[c[((c[(h&p)>>2]|0)&p)+56>>2]&31](h,g,1,6)|0;if(!h){h=a[(f&n)>>0]|0;break}else{f=(h|0)==5?-1:h;break a}}while(0);if(h<<24>>24!=2){m=c[(d&p)+4>>2]|0;cc[c[((c[(m&p)>>2]|0)&p)+60>>2]&31](m)}if((c[(j+(i<<2)&p)+4>>2]|0)==(e|0)?(Zv(c[(c[(q&p)>>2]&p)>>2]|0,d+52|0,48)|0)==0:0){b[(d&o)+40>>1]=i;f=0;break}if(!(a[(f&n)>>0]|0)){f=c[(d&p)+4>>2]|0;pc[c[((c[(f&p)>>2]|0)&p)+56>>2]&31](f,g,1,5)|0;f=-1}else f=-1}while(0);return f|0}function No(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b+56|0;ei(c[(e&p)>>2]|0);c[(e&p)>>2]=0;cp(b);e=c[(b&p)+208>>2]|0;if(!e){if(!(a[(b&n)+4>>0]|0)){f=b+60|0;e=c[(f&p)>>2]|0;d=c[(e&p)>>2]|0;if(!(((d|0)!=0?((lc[c[(d&p)+48>>2]&127](e)|0)&2048|0)!=0:0)?(a[(b&n)+5>>0]&5)==1:0))i=7;if((i|0)==7?(g=c[(b&p)+64>>2]|0,h=c[(g&p)>>2]|0,(h|0)!=0):0){lc[c[(h&p)+4>>2]&127](g)|0;c[(g&p)>>2]=0}d=c[(f&p)>>2]|0;e=c[(d&p)>>2]|0;if(e){if(!(a[(b&n)+13>>0]|0))d=rc[c[(e&p)+32>>2]&127](d,0)|0;else d=0;e=b+17|0;if((a[(e&n)>>0]|0)!=5)a[(e&n)>>0]=0;if((d|0)!=0?(a[(b&n)+16>>0]|0)==6:0)a[(e&n)>>0]=5}a[(b&n)+18>>0]=0;a[(b&n)+16>>0]=0}}else{Lo(e);a[(b&n)+16>>0]=0}d=b+40|0;if(c[(d&p)>>2]|0){xn(b);a[(b&n)+18>>0]=a[(b&n)+12>>0]|0;a[(b&n)+16>>0]=0;c[(d&p)>>2]=0}d=b+72|0;a[(b&n)+19>>0]=0;c[(d&p)>>2]=0;c[(d&p)+4>>2]=0;c[(d&p)+8>>2]=0;c[(d&p)+12>>2]=0;return}function Oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[(d&p)+4>>2]|0;f=e+0|0;g=f+40|0;do{c[(f&p)>>2]=0;f=f+4|0}while((f|0)<(g|0));c[(e&p)>>2]=d;c[(e&p)+4>>2]=c[(d&p)>>2];f=e+40|0;c[(e&p)+8>>2]=f;fw(f|0,0,c[(a&p)+24>>2]|0)|0;c[(e&p)+28>>2]=a;c[(e&p)+20>>2]=b;return il(a,b,d)|0}function Po(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();g=l;h=xq(a,b,g)|0;if(!h){k=c[(g&p)>>2]|0;if(!b){a=k+136|0;c[(g&p)>>2]=a;g=a;a=0}else{g=k;a=(b<<12)+-34|0}c[(e&p)>>2]=g+-4;c[(d&p)>>2]=k+16384;c[(f&p)>>2]=a}i=l;return h|0}function Qo(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=c[(d&p)+28>>2]|0;j=e&255;if(j&1){f=k+8|0;if((c[(f&p)>>2]|0)==(d|0)){e=d;do{e=c[(e&p)+36>>2]|0;if(!e){e=0;break}}while((b[(e&o)+24>>1]&4)!=0);c[(f&p)>>2]=e}e=d+32|0;g=c[(e&p)>>2]|0;h=(g|0)==0;i=d+36|0;f=c[(i&p)>>2]|0;if(h)c[(k&p)+4>>2]=f;else c[(g&p)+36>>2]=f;f=c[(i&p)>>2]|0;if(!f){c[(k&p)>>2]=g;if(h?(a[(k&n)+28>>0]|0)!=0:0)a[(k&n)+29>>0]=2}else c[(f&p)+32>>2]=g;c[(e&p)>>2]=0;c[(i&p)>>2]=0}if(j&2){e=c[(k&p)>>2]|0;c[(d&p)+32>>2]=e;if(!e){c[(k&p)+4>>2]=d;if(a[(k&n)+28>>0]|0)a[(k&n)+29>>0]=1}else c[(e&p)+36>>2]=d;c[(k&p)>>2]=d;e=k+8|0;if((c[(e&p)>>2]|0)==0?(b[(d&o)+24>>1]&4)==0:0)c[(e&p)>>2]=d}return}function Ro(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();h=l;f=e>>>3;g=f&255;a[(d&n)+5>>0]=g;e=e&-9;a[(d&n)+7>>0]=4-(f<<2);f=c[(d&p)+52>>2]|0;if((e|0)==2){a[(d&n)+2>>0]=0;a[(d&n)+3>>0]=0;a[(d&n)+4>>0]=0;b[(d&o)+10>>1]=b[(f&o)+24>>1]|0;b[(d&o)+12>>1]=b[(f&o)+26>>1]|0;k=5}else if((e|0)==5){a[(d&n)+2>>0]=1;a[(d&n)+3>>0]=g;a[(d&n)+4>>0]=g<<24>>24==0&1;b[(d&o)+10>>1]=b[(f&o)+28>>1]|0;b[(d&o)+12>>1]=b[(f&o)+30>>1]|0;k=5}else{c[(h&p)>>2]=54521;c[(h&p)+4>>2]=10788;bd(11,13600,h);e=11}if((k|0)==5){a[(d&n)+8>>0]=a[(f&n)+21>>0]|0;e=0}i=l;return e|0}function So(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,q=0;l=c[(b&p)+200>>2]|0;j=b+152|0;k=c[(j&p)>>2]|0;m=b+148|0;i=c[(m&p)>>2]|0;k=k>>>0>i>>>0?i:k;g=c[(b&p)+96>>2]|0;if((g|0)>0){f=c[(b&p)+92>>2]|0;e=b+72|0;h=0;do{d=f+(h*48|0)+8|0;o=d;if((c[(o&p)>>2]|0)==0&(c[(o&p)+4>>2]|0)==0){q=e;o=c[(q&p)+4>>2]|0;c[(d&p)>>2]=c[(q&p)>>2];c[(d&p)+4>>2]=o}h=h+1|0}while((h|0)<(g|0));h=e}else h=b+72|0;e=h;f=c[(e&p)>>2]|0;e=c[(e&p)+4>>2]|0;if((f|0)==0&(e|0)==0){f=0;e=0}else{f=jw(f|0,e|0,-1,-1)|0;f=qw(f|0,G|0,i|0,0)|0;f=jw(f|0,G|0,1,0)|0;f=sw(f|0,G|0,i|0,0)|0;e=G}i=h;c[(i&p)>>2]=f;c[(i&p)+4>>2]=e;i=b+80|0;c[(i&p)>>2]=f;c[(i&p)+4>>2]=e;if(((a[(b&n)+7>>0]|0)==0?(a[(b&n)+5>>0]|0)!=4:0)?(i=c[(b&p)+60>>2]|0,((lc[c[((c[(i&p)>>2]|0)&p)+48>>2]&127](i)|0)&512|0)==0):0){f=l+0|0;e=f+12|0;do{a[(f&n)>>0]=0;f=f+1|0}while((f|0)<(e|0))}else{i=l;g=i;a[(g&n)>>0]=-117058087;a[(g&n)+1>>0]=-117058087>>8;a[(g&n)+2>>0]=-117058087>>16;a[(g&n)+3>>0]=-117058087>>24;i=i+4|0;a[(i&n)>>0]=-681336544;a[(i&n)+1>>0]=-681336544>>8;a[(i&n)+2>>0]=-681336544>>16;a[(i&n)+3>>0]=-681336544>>24;i=l+8|0;a[(i&n)>>0]=-1;a[(i&n)+1>>0]=-1>>8;a[(i&n)+2>>0]=-1>>16;a[(i&n)+3>>0]=-1>>24}e=b+48|0;cd(4,e);e=c[(e&p)>>2]|0;a[(l&n)+12>>0]=e>>>24;a[(l&n)+13>>0]=e>>>16;a[(l&n)+14>>0]=e>>>8;a[(l&n)+15>>0]=e;e=c[(b&p)+28>>2]|0;a[(l&n)+16>>0]=e>>>24;a[(l&n)+17>>0]=e>>>16;a[(l&n)+18>>0]=e>>>8;a[(l&n)+19>>0]=e;e=c[(m&p)>>2]|0;a[(l&n)+20>>0]=e>>>24;a[(l&n)+21>>0]=e>>>16;a[(l&n)+22>>0]=e>>>8;a[(l&n)+23>>0]=e;e=c[(j&p)>>2]|0;a[(l&n)+24>>0]=e>>>24;a[(l&n)+25>>0]=e>>>16;a[(l&n)+26>>0]=e>>>8;a[(l&n)+27>>0]=e;fw(l+28|0,0,k+-28|0)|0;e=b+64|0;f=0;while(1){if(f>>>0>=(c[(m&p)>>2]|0)>>>0){d=0;break}j=c[(e&p)>>2]|0;d=h;d=tc[c[((c[(j&p)>>2]|0)&p)+12>>2]&31](j,l,k,c[(d&p)>>2]|0,c[(d&p)+4>>2]|0)|0;j=h;j=jw(c[(j&p)>>2]|0,c[(j&p)+4>>2]|0,k|0,0)|0;b=h;c[(b&p)>>2]=j;c[(b&p)+4>>2]=G;if(!d)f=f+k|0;else break}return d|0}function To(a){a=a|0;var c=0,d=0,f=0;c=a+24|0;f=e[(c&o)>>1]|0;d=f&65503;b[(c&o)>>1]=d;if(!(f&2)){b[(c&o)>>1]=d|2;Qo(a,2)}return}function Uo(a){a=a|0;var b=0,d=0,e=0;b=c[(a&p)+16>>2]|0;d=c[(a&p)+20>>2]|0;e=c[(b&p)+96>>2]|0;a:do if((e|0)>0){b=c[(b&p)+92>>2]|0;a=0;while(1){if((c[(b+(a*48|0)&p)+20>>2]|0)>>>0>=d>>>0?(di(c[(b+(a*48|0)&p)+16>>2]|0,d)|0)==0:0){a=1;break a}a=a+1|0;if((a|0)>=(e|0)){a=0;break}}}else a=0;while(0);return a|0}function Vo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();m=s;q=c[(b&p)+16>>2]|0;e=a[(q&n)+5>>0]|0;a:do if(e<<24>>24!=2){o=q+68|0;f=c[(o&p)>>2]|0;do if(!(c[(f&p)>>2]|0)){if(e<<24>>24!=4?(a[(q&n)+21>>0]|0)==0:0){d=c[(q&p)>>2]|0;d=tc[c[(d&p)+24>>2]&31](d,0,f,8222,0)|0;if(!d)break;else break a}e=f+0|0;d=e+40|0;do{c[(e&p)>>2]=0;e=e+4|0}while((e|0)<(d|0));c[(f&p)>>2]=14696}while(0);f=c[(b&p)+4>>2]|0;l=q+52|0;g=q+152|0;h=(c[(g&p)>>2]|0)+4|0;h=sw(h|0,((h|0)<0)<<31>>31|0,c[(l&p)>>2]|0,0)|0;k=G;d=c[(o&p)>>2]|0;e=b+20|0;b=c[(e&p)>>2]|0;a[(m&n)>>0]=b>>>24;a[(m&n)+1>>0]=b>>>16;a[(m&n)+2>>0]=b>>>8;a[(m&n)+3>>0]=b;d=tc[c[((c[(d&p)>>2]|0)&p)+12>>2]&31](d,m,4,h,k)|0;if(!d){m=c[(o&p)>>2]|0;o=c[(g&p)>>2]|0;d=jw(h|0,k|0,4,0)|0;d=tc[c[((c[(m&p)>>2]|0)&p)+12>>2]&31](m,f,o,d,G)|0;if(!d){d=l;r=10}}}else{e=b+20|0;d=q+52|0;r=10}while(0);if((r|0)==10){c[(d&p)>>2]=(c[(d&p)>>2]|0)+1;d=jl(q,c[(e&p)>>2]|0)|0}i=s;return d|0}function Wo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+48|0;if((i|0)>=(j|0))fa();g=h;d=(a|0)!=0;a:do if(d&(b|0)!=0){d=g;while(1){f=c[(b&p)+20>>2]|0;e=a;a=d;while(1){a=a+12|0;if((c[(e&p)+20>>2]|0)>>>0>=f>>>0)break;c[(a&p)>>2]=e;a=c[(e&p)+12>>2]|0;if(!a){d=b;a=e;e=8;break a}else{d=e;e=a;a=d}}c[(a&p)>>2]=b;f=c[(b&p)+12>>2]|0;d=(e|0)!=0;if(d&(f|0)!=0){d=b;a=e;b=f}else{a=e;e=6;break}}}else{f=b;b=g;e=6}while(0);if((e|0)==6)if(d)c[(b&p)+12>>2]=a;else{d=f;a=b;e=8}do if((e|0)==8){a=a+12|0;if(!d){c[(a&p)>>2]=0;break}else{c[(a&p)>>2]=d;break}}while(0);i=h;return c[(g&p)+12>>2]|0}function Xo(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[(c[(b&p)+32>>2]&p)>>2]|0;k=b+84|0;j=b+104|0;c[(j&p)>>2]=(c[(j&p)>>2]|0)+1;c[(b&p)+68>>2]=0;j=k+1|0;i=k+2|0;g=k+3|0;h=((d[(j&n)>>0]|0)<<16|(d[(k&n)>>0]|0)<<24|(d[(i&n)>>0]|0)<<8|(d[(g&n)>>0]|0))+1|0;a[(k&n)>>0]=h>>>24;a[(j&n)>>0]=h>>>16;a[(i&n)>>0]=h>>>8;a[(g&n)>>0]=h;c[(b&p)+88>>2]=e;$o(b);c[(f&p)+96>>2]=0;c[(f&p)+104>>2]=0;c[(f&p)+108>>2]=-1;c[(f&p)+112>>2]=-1;c[(f&p)+116>>2]=-1;return}function Yo(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,o=0,q=0,r=0,s=0;l=i;i=i+32|0;if((i|0)>=(j|0))fa();m=l;k=c[(e&p)+4>>2]|0;o=c[(b&p)>>2]|0;q=c[(e&p)+20>>2]|0;e=o+76|0;a[(m&n)>>0]=q>>>24;a[(m&n)+1>>0]=q>>>16;a[(m&n)+2>>0]=q>>>8;a[(m&n)+3>>0]=q;a[(m&n)+4>>0]=f>>>24;a[(m&n)+5>>0]=f>>>16;a[(m&n)+6>>0]=f>>>8;a[(m&n)+7>>0]=f;q=o+84|0;s=q;s=d[(s&n)>>0]|d[(s&n)+1>>0]<<8|d[(s&n)+2>>0]<<16|d[(s&n)+3>>0]<<24;q=q+4|0;q=d[(q&n)>>0]|d[(q&n)+1>>0]<<8|d[(q&n)+2>>0]<<16|d[(q&n)+3>>0]<<24;f=m+8|0;r=f;a[(r&n)>>0]=s;a[(r&n)+1>>0]=s>>8;a[(r&n)+2>>0]=s>>16;a[(r&n)+3>>0]=s>>24;f=f+4|0;a[(f&n)>>0]=q;a[(f&n)+1>>0]=q>>8;a[(f&n)+2>>0]=q>>16;a[(f&n)+3>>0]=q>>24;f=(a[(o&n)+65>>0]|0)==0&1;yq(f,m,8,e,e);yq(f,k,c[(o&p)+36>>2]|0,e,e);f=c[(e&p)>>2]|0;a[(m&n)+16>>0]=f>>>24;a[(m&n)+17>>0]=f>>>16;a[(m&n)+18>>0]=f>>>8;a[(m&n)+19>>0]=f;f=c[(o&p)+80>>2]|0;a[(m&n)+20>>0]=f>>>24;a[(m&n)+21>>0]=f>>>16;a[(m&n)+22>>0]=f>>>8;a[(m&n)+23>>0]=f;f=zq(b,m,24,g,h)|0;if(!f){q=c[(b&p)+20>>2]|0;f=jw(g|0,h|0,24,0)|0;f=zq(b,k,q,f,G)|0}i=l;return f|0}function Zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k+8|0;g=k;f=c[3164]|0;if(f)nc[f&3]();e=a+8|0;f=c[(e&p)>>2]|0;f=rc[c[((c[(f&p)>>2]|0)&p)+24>>2]&127](f,g)|0;l=c[(g&p)+4>>2]|0;if((f|0)==0&((l|0)>(d|0)|((l|0)==(d|0)?(c[(g&p)>>2]|0)>>>0>b>>>0:0))){f=c[(e&p)>>2]|0;f=ac[c[((c[(f&p)>>2]|0)&p)+16>>2]&63](f,b,d)|0}e=c[3166]|0;if(e)nc[e&3]();if(f){c[(h&p)>>2]=c[(a&p)+100>>2];bd(f,14816,h)}i=k;return}function _o(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;if((i|0)>=(j|0))fa();k=n;g=n+16|0;m=n+12|0;l=n+8|0;c[(g&p)>>2]=0;c[(m&p)>>2]=0;c[(l&p)>>2]=0;f=Po(a,(d+33|0)>>>12,l,m,g)|0;a:do if(!f){h=d-(c[(g&p)>>2]|0)|0;if((h|0)==1){f=c[(m&p)>>2]|0;d=f+4|0;fw(d|0,0,(c[(l&p)>>2]|0)+16384-d|0)|0}else f=c[(m&p)>>2]|0;if(c[(f+(h<<2)&p)>>2]|0)Aq(a);f=e*383&8191;b:do if(b[((c[(l&p)>>2]|0)+(f<<1)&o)>>1]|0){d=c[(l&p)>>2]|0;g=h;while(1){if(!g)break;f=f+1&8191;if(!(b[(d+(f<<1)&o)>>1]|0))break b;else g=g+-1|0}c[(k&p)>>2]=49852;c[(k&p)+4>>2]=10788;bd(11,13600,k);f=11;break a}while(0);c[((c[(m&p)>>2]|0)+(h<<2)&p)>>2]=e;b[((c[(l&p)>>2]|0)+(f<<1)&o)>>1]=h;f=0}while(0);i=n;return f|0}function $o(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=c[(c[(b&p)+32>>2]&p)>>2]|0;k=b+52|0;a[(b&n)+64>>0]=1;c[(k&p)>>2]=3007e3;i=b+92|0;g=3007e3;h=k;f=0;d=0;while(1){f=f+d+g|0;e=h+8|0;d=f+d+(c[(h&p)+4>>2]|0)|0;if(e>>>0>=i>>>0)break;g=c[(e&p)>>2]|0;h=e}c[(i&p)>>2]=f;c[(b&p)+96>>2]=d;d=j+48|0;e=k+0|0;f=d+48|0;do{a[(d&n)>>0]=a[(e&n)>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if((a[(b&n)+43>>0]|0)!=2){d=c[(b&p)+4>>2]|0;cc[c[((c[(d&p)>>2]|0)&p)+60>>2]&31](d)}d=j+0|0;e=k+0|0;f=d+48|0;do{a[(d&n)>>0]=a[(e&n)>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));return}function ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(a)do{e=a+28|0;g=c[(e&p)>>2]|0;if(((g>>>0<7?(30>>>(g&127)&1)==0:0)?(c[(a&p)+16>>2]|0)>>>0>b>>>0:0)?(f=Ag(a,b,d,1)|0,(f|0)!=0):0)c[(e&p)>>2]=f;a=c[(a&p)+44>>2]|0}while((a|0)!=0);return}function bp(a){a=a|0;var b=0,d=0,e=0;a:do if(!(c[(a&p)+208>>2]|0)){d=a+176|0;e=a+180|0;while(1){b=fl(a,4)|0;if((b|0)!=5)break a;if(!(lc[c[(d&p)>>2]&127](c[(e&p)>>2]|0)|0)){b=5;break}}}else b=0;while(0);return b|0}function cp(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+96|0;if((c[(f&p)>>2]|0)>0){d=b+92|0;e=0;do{ei(c[((c[(d&p)>>2]|0)+(e*48|0)&p)+16>>2]|0);e=e+1|0}while((e|0)<(c[(f&p)>>2]|0))}e=c[(b&p)+68>>2]|0;d=c[(e&p)>>2]|0;if(!(a[(b&n)+4>>0]|0)){if(d)g=7}else if((d|0)==14696){d=14696;g=7}if((g|0)==7){lc[c[(d&p)+4>>2]&127](e)|0;c[(e&p)>>2]=0}d=b+92|0;Wc(c[(d&p)>>2]|0);c[(d&p)>>2]=0;c[(f&p)>>2]=0;c[(b&p)+52>>2]=0;return}function dp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+40|0;if(c[(f&p)>>2]|0){d=c[(a&p)>>2]|0;if(d)do{e=d;d=c[(d&p)+32>>2]|0;if((c[(e&p)+20>>2]|0)>>>0>b>>>0)xl(e)}while((d|0)!=0);if(!b){b=c[(a&p)+44>>2]|0;if(!b)b=0;else{fw(c[(b&p)+4>>2]|0,0,c[(a&p)+20>>2]|0)|0;b=1}}jc[c[8888>>2]&15](c[(f&p)>>2]|0,b+1|0)}return}function ep(d,e){d=d|0;e=e|0;var f=0,g=0;do if(!e){f=d+43|0;if(!(a[(f&n)>>0]|0))f=0;else{a[(f&n)>>0]=0;g=c[(d&p)+4>>2]|0;if(!(pc[c[((c[(g&p)>>2]|0)&p)+56>>2]&31](g,(b[(d&o)+40>>1]|0)+3|0,1,6)|0))f=(a[(f&n)>>0]|0)==0;else{a[(f&n)>>0]=1;f=0}f=f&1}}else{f=d+43|0;g=(a[(f&n)>>0]|0)==0;if((e|0)<=0){f=g&1;break}if(g){g=c[(d&p)+4>>2]|0;pc[c[((c[(g&p)>>2]|0)&p)+56>>2]&31](g,(b[(d&o)+40>>1]|0)+3|0,1,5)|0}a[(f&n)>>0]=1;f=1}while(0);return f|0}function fp(b){b=b|0;var e=0,f=0,g=0,h=0;f=b+73|0;if((a[(f&n)>>0]|0)==2)a[(f&n)>>0]=1;else c[(b&p)+68>>2]=0;e=b+48|0;km(b,e);do if(!(a[((c[(b&p)+120>>2]|0)&n)+2>>0]|0)){g=e;g=qg(c[(g&p)>>2]|0,c[(g&p)+4>>2]|0)|0;if(g){e=Lm(b,0,c[(e&p)>>2]|0,g,0)|0;if(!e){c[(b&p)+56>>2]=g;h=9;break}else{Wc(g);break}}else e=7}else h=9;while(0);if((h|0)==9){gp(b);a[(f&n)>>0]=3;e=0}f=b+72|0;a[(f&n)>>0]=d[(f&n)>>0]&251;return e|0}function gp(a){a=a|0;var d=0,e=0,f=0,g=0;d=a+76|0;if((b[(d&o)>>1]|0)>=0){g=0;while(1){e=a+(g<<2)+120|0;f=c[(e&p)>>2]|0;if(f)Bg(c[(f&p)+68>>2]|0);c[(e&p)>>2]=0;if((g|0)<(b[(d&o)>>1]|0))g=g+1|0;else break}}b[(d&o)>>1]=-1;return}function hp(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();o=q;k=q+8|0;if(e>>>0<2)m=0;else{m=e+-2|0;m=m-((m>>>0)%(((((c[(b&p)+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;m=((m+1|0)==(((c[2514]|0)>>>0)/((c[(b&p)+32>>2]|0)>>>0)|0|0)?3:2)+m|0}h=zg(c[(b&p)>>2]|0,m,k,0)|0;do if(!h){k=c[(k&p)>>2]|0;l=c[(k&p)+4>>2]|0;h=(e-m|0)*5|0;b=h+-5|0;if((b|0)<0){if(k)Bg(k);c[(o&p)>>2]=53912;c[(o&p)+4>>2]=10788;bd(11,13600,o);h=11;break}a[(f&n)>>0]=a[(l+b&n)>>0]|0;if(g)c[(g&p)>>2]=(d[(l+h+-3&n)>>0]|0)<<16|(d[(l+h+-4&n)>>0]|0)<<24|(d[(l+h+-2&n)>>0]|0)<<8|(d[(l+h+-1&n)>>0]|0);if(k)Bg(k);if(((a[(f&n)>>0]|0)+-1&255)>4){c[(o&p)>>2]=53920;c[(o&p)+4>>2]=10788;bd(11,13600,o);h=11}else h=0}while(0);i=q;return h|0}function ip(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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=i;i=i+32|0;if((i|0)>=(j|0))fa();M=N;L=N+16|0;s=N+20|0;K=N+12|0;t=N+8|0;c[(L&p)>>2]=0;v=e+12|0;r=c[(v&p)>>2]|0;u=e+44|0;I=c[(u&p)>>2]|0;J=r+56|0;q=c[(J&p)>>2]|0;q=d[(q&n)+37>>0]<<16|d[(q&n)+36>>0]<<24|d[(q&n)+38>>0]<<8|d[(q&n)+39>>0];do if(q>>>0>>0){if(!q){k=(a[(e&n)+19>>0]|0)==0&1;r=Gg(c[(r&p)+68>>2]|0)|0;if(r){l=r;break}s=c[(u&p)>>2]|0;q=s+1|0;c[(u&p)>>2]=q;m=e+32|0;r=c[(m&p)>>2]|0;if((s|0)==(((c[2514]|0)>>>0)/(r>>>0)|0|0)){q=s+2|0;c[(u&p)>>2]=q}if(a[(e&n)+17>>0]|0){if(q>>>0<2)s=0;else{s=q+-2|0;s=s-((s>>>0)%(((((c[(e&p)+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;s=((s+1|0)==(((c[2514]|0)>>>0)/(r>>>0)|0|0)?3:2)+s|0}if((s|0)==(q|0)){c[(t&p)>>2]=0;s=dl(e,q,t,k)|0;if(s){l=s;break}I=c[(t&p)>>2]|0;s=I+68|0;r=Gg(c[(s&p)>>2]|0)|0;if(I)Bg(c[(s&p)>>2]|0);if(r){l=r;break}s=c[(u&p)>>2]|0;q=s+1|0;c[(u&p)>>2]=q;if((s|0)==(((c[2514]|0)>>>0)/((c[(m&p)>>2]|0)>>>0)|0|0)){q=s+2|0;c[(u&p)>>2]=q}}}m=c[((c[(v&p)>>2]|0)&p)+56>>2]|0;a[(m&n)+28>>0]=q>>>24;a[(m&n)+29>>0]=q>>>16;a[(m&n)+30>>0]=q>>>8;a[(m&n)+31>>0]=q;m=c[(u&p)>>2]|0;c[(g&p)>>2]=m;m=dl(e,m,f,k)|0;if(m){l=m;break}m=Gg(c[((c[(f&p)>>2]|0)&p)+68>>2]|0)|0;if(m){l=c[(f&p)>>2]|0;if(!l){l=m;D=98}else{Bg(c[(l&p)+68>>2]|0);l=m;D=92}}}else{if(k<<24>>24==2)s=1;else if(k<<24>>24==1?I>>>0>=h>>>0:0){l=hp(e,h,s,0)|0;if(l)break;s=(a[(s&n)>>0]|0)==2&1}else s=0;l=Gg(c[(r&p)+68>>2]|0)|0;if(l)break;F=c[(J&p)>>2]|0;G=q+-1|0;a[(F&n)+36>>0]=G>>>24;a[(F&n)+37>>0]=G>>>16;a[(F&n)+38>>0]=G>>>8;a[(F&n)+39>>0]=G;F=e+36|0;G=(h|0)==0;H=e+60|0;E=k<<24>>24==2;m=0;a:while(1){w=(m|0)!=0;if(w){v=c[(m&p)+56>>2]|0;v=d[(v&n)+1>>0]<<16|d[(v&n)>>0]<<24|d[(v&n)+2>>0]<<8|d[(v&n)+3>>0]}else{v=c[(J&p)>>2]|0;v=d[(v&n)+33>>0]<<16|d[(v&n)+32>>0]<<24|d[(v&n)+34>>0]<<8|d[(v&n)+35>>0]}if(v>>>0>I>>>0){D=15;break}l=dl(e,v,L,0)|0;if(l){D=17;break}q=c[(L&p)>>2]|0;x=q+56|0;B=c[(x&p)>>2]|0;C=B+4|0;y=B+5|0;z=B+6|0;A=B+7|0;D=d[(y&n)>>0]<<16|d[(C&n)>>0]<<24|d[(z&n)>>0]<<8|d[(A&n)>>0];t=s<<24>>24!=0;do if((D|0)!=0|t){if(D>>>0>(((c[(F&p)>>2]|0)>>>2)+-2|0)>>>0){l=q;D=22;break a}if(s<<24>>24!=0?(v|0)==(h|0)|v>>>0>>0&E:0){c[(g&p)>>2]=v;c[(f&p)>>2]=q;l=Gg(c[(q&p)+68>>2]|0)|0;if(l){D=88;break a}do if(!D){if(!w){D=(c[(J&p)>>2]|0)+32|0;C=c[(x&p)>>2]|0;C=d[(C&n)>>0]|d[(C&n)+1>>0]<<8|d[(C&n)+2>>0]<<16|d[(C&n)+3>>0]<<24;a[(D&n)>>0]=C;a[(D&n)+1>>0]=C>>8;a[(D&n)+2>>0]=C>>16;a[(D&n)+3>>0]=C>>24;break}l=Gg(c[(m&p)+68>>2]|0)|0;if(l){D=88;break a}D=c[(m&p)+56>>2]|0;C=c[(x&p)>>2]|0;C=d[(C&n)>>0]|d[(C&n)+1>>0]<<8|d[(C&n)+2>>0]<<16|d[(C&n)+3>>0]<<24;a[(D&n)>>0]=C;a[(D&n)+1>>0]=C>>8;a[(D&n)+2>>0]=C>>16;a[(D&n)+3>>0]=C>>24}else{v=c[(x&p)>>2]|0;t=a[(v&n)+8>>0]|0;k=a[(v&n)+9>>0]|0;u=a[(v&n)+10>>0]|0;v=a[(v&n)+11>>0]|0;s=(k&255)<<16|(t&255)<<24|(u&255)<<8|v&255;if(s>>>0>I>>>0){l=q;D=32;break a}l=dl(e,s,K,0)|0;if(l){D=88;break a}s=c[(K&p)>>2]|0;r=s+68|0;l=Gg(c[(r&p)>>2]|0)|0;if(l){D=35;break a}C=s+56|0;B=c[(C&p)>>2]|0;A=c[(x&p)>>2]|0;A=d[(A&n)>>0]|d[(A&n)+1>>0]<<8|d[(A&n)+2>>0]<<16|d[(A&n)+3>>0]<<24;a[(B&n)>>0]=A;a[(B&n)+1>>0]=A>>8;a[(B&n)+2>>0]=A>>16;a[(B&n)+3>>0]=A>>24;B=c[(C&p)>>2]|0;D=D+-1|0;a[(B&n)+4>>0]=D>>>24;a[(B&n)+5>>0]=D>>>16;a[(B&n)+6>>0]=D>>>8;a[(B&n)+7>>0]=D;kw((c[(C&p)>>2]|0)+8|0,(c[(x&p)>>2]|0)+12|0,D<<2|0)|0;if(s)Bg(c[(r&p)>>2]|0);if(!w){D=c[(J&p)>>2]|0;a[(D&n)+32>>0]=t;a[(D&n)+33>>0]=k;a[(D&n)+34>>0]=u;a[(D&n)+35>>0]=v;break}l=Gg(c[(m&p)+68>>2]|0)|0;if(l){D=88;break a}D=c[(m&p)+56>>2]|0;a[(D&n)>>0]=t;a[(D&n)+1>>0]=k;a[(D&n)+2>>0]=u;a[(D&n)+3>>0]=v}while(0);c[(L&p)>>2]=0;q=0;l=0;s=0;break}if(D){b:do if(!G){if(E){k=0;while(1){x=k<<2;if((d[(B+x&n)+9>>0]<<16|d[(B+x&n)+8>>0]<<24|d[(B+x&n)+10>>0]<<8|d[(B+x&n)+11>>0])>>>0<=h>>>0)break b;k=k+1|0;if(k>>>0>=D>>>0){k=0;break b}}}r=(d[(B&n)+9>>0]<<16|d[(B&n)+8>>0]<<24|d[(B&n)+10>>0]<<8|d[(B&n)+11>>0])-h|0;if((r|0)<=-1)r=(r|0)==-2147483648?2147483647:0-r|0;if(D>>>0>1){k=0;u=1;while(1){l=u<<2;l=(d[(B+l&n)+9>>0]<<16|d[(B+l&n)+8>>0]<<24|d[(B+l&n)+10>>0]<<8|d[(B+l&n)+11>>0])-h|0;if((l|0)<=-1)l=(l|0)==-2147483648?2147483647:0-l|0;v=(l|0)<(r|0);k=v?u:k;u=u+1|0;if((u|0)==(D|0))break;else r=v?l:r}}else k=0}else k=0;while(0);r=k<<2;v=B+(r+8)|0;r=d[(B+r&n)+9>>0]<<16|d[(v&n)>>0]<<24|d[(B+r&n)+10>>0]<<8|d[(B+r&n)+11>>0];if(r>>>0>I>>>0){l=q;D=56;break a}if((r|0)==(h|0)|t^1|r>>>0>>0&E){c[(g&p)>>2]=r;l=Gg(c[(q&p)+68>>2]|0)|0;if(l){D=88;break a}s=D+-1|0;if(k>>>0>>0){D=B+((D<<2)+4)|0;D=d[(D&n)>>0]|d[(D&n)+1>>0]<<8|d[(D&n)+2>>0]<<16|d[(D&n)+3>>0]<<24;a[(v&n)>>0]=D;a[(v&n)+1>>0]=D>>8;a[(v&n)+2>>0]=D>>16;a[(v&n)+3>>0]=D>>24}a[(C&n)>>0]=s>>>24;a[(y&n)>>0]=s>>>16;a[(z&n)>>0]=s>>>8;a[(A&n)>>0]=s;r=c[(g&p)>>2]|0;s=c[(H&p)>>2]|0;do if(!s)s=0;else{if((c[(s&p)>>2]|0)>>>0>>0){s=1;break}s=(di(s,r)|0)!=0}while(0);l=dl(e,r,f,s&1^1)|0;if(l){s=0;break}l=Gg(c[((c[(f&p)>>2]|0)&p)+68>>2]|0)|0;if(!l){l=0;s=0;break}s=c[(f&p)>>2]|0;if(!s){s=0;break}Bg(c[(s&p)+68>>2]|0);s=0}else l=0}else l=0}else{l=Gg(c[(q&p)+68>>2]|0)|0;if(l){D=89;break a}c[(g&p)>>2]=v;l=(c[(J&p)>>2]|0)+32|0;s=c[(x&p)>>2]|0;s=d[(s&n)>>0]|d[(s&n)+1>>0]<<8|d[(s&n)+2>>0]<<16|d[(s&n)+3>>0]<<24;a[(l&n)>>0]=s;a[(l&n)+1>>0]=s>>8;a[(l&n)+2>>0]=s>>16;a[(l&n)+3>>0]=s>>24;c[(f&p)>>2]=q;c[(L&p)>>2]=0;q=0;l=0;s=0}while(0);if(m)Bg(c[(m&p)+68>>2]|0);if(!(s<<24>>24)){m=0;D=88;break}else m=q}if((D|0)==15){c[(M&p)>>2]=58314;c[(M&p)+4>>2]=10788;bd(11,13600,M);l=11;D=17}else if((D|0)==22){c[(M&p)>>2]=58343;c[(M&p)+4>>2]=10788;bd(11,13600,M);q=l;l=11;D=88}else if((D|0)==32){c[(M&p)>>2]=58377;c[(M&p)+4>>2]=10788;bd(11,13600,M);q=l;l=11;D=88}else if((D|0)==35)if(!s)D=88;else{Bg(c[(r&p)>>2]|0);D=88}else if((D|0)==56){c[(M&p)>>2]=58442;c[(M&p)+4>>2]=10788;bd(11,13600,M);q=l;l=11;D=88}if((D|0)==17)c[(L&p)>>2]=0;else if((D|0)==88)if(q)D=89;if((D|0)==89)Bg(c[(q&p)+68>>2]|0);if(!m)D=92;else{Bg(c[(m&p)+68>>2]|0);D=92}}if((D|0)==92?(l|0)!=0:0)D=98;if((D|0)==98){c[(f&p)>>2]=0;break}l=c[(f&p)>>2]|0;m=c[(l&p)+68>>2]|0;if((b[(m&o)+26>>1]|0)<=1){a[(l&n)>>0]=0;l=0;break}if(l)Bg(m);c[(f&p)>>2]=0;c[(M&p)>>2]=58541;c[(M&p)+4>>2]=10788;bd(11,13600,M);l=11}else{c[(M&p)>>2]=58259;c[(M&p)+4>>2]=10788;bd(11,13600,M);l=11}while(0);i=N;return l|0}function jp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;if((i|0)>=(j|0))fa();v=A+12|0;u=A+8|0;z=A;f=c[(b&p)+40>>2]|0;a:do if(!f){h=b+96|0;g=c[(h&p)>>2]|0;if((g|0)>(e|0)){f=(d|0)==1;e=(f&1^1)+e|0;if((e|0)<(g|0)){d=b+92|0;g=e;do{ei(c[((c[(d&p)>>2]|0)+(g*48|0)&p)+16>>2]|0);g=g+1|0}while((g|0)<(c[(h&p)>>2]|0))}c[(h&p)>>2]=e;if(f){if(e){f=0;break}f=c[(b&p)+68>>2]|0;g=c[(f&p)>>2]|0;if(!g){f=0;break}if((g|0)==14696)f=Gi(f,0,0)|0;else f=0;c[(b&p)+52>>2]=0;break}t=b+208|0;if((c[(t&p)>>2]|0)==0?(c[(c[(b&p)+64>>2]&p)>>2]|0)==0:0){f=0;break}if(!e)w=0;else w=(c[(b&p)+92>>2]|0)+((e+-1|0)*48|0)|0;s=(w|0)!=0;f=w+20|0;if(s){d=c[(f&p)>>2]|0;g=qg(512,0)|0;if(!g){f=7;break}fw(g|0,0,512)|0;c[(g&p)>>2]=d;y=g}else y=0;h=b+28|0;e=b+24|0;c[(e&p)>>2]=c[((s?f:h)&p)>>2];a[(b&n)+18>>0]=a[(b&n)+12>>0]|0;b:do if(s){h=b+72|0;e=h;k=c[(e&p)>>2]|0;e=c[(e&p)+4>>2]|0;if(!(c[(t&p)>>2]|0)){g=w+8|0;l=c[(g&p)>>2]|0;g=c[(g&p)+4>>2]|0;d=(l|0)==0&(g|0)==0;l=d?k:l;g=d?e:g;d=w;f=c[(d&p)>>2]|0;d=c[(d&p)+4>>2]|0;q=h;c[(q&p)>>2]=f;c[(q&p)+4>>2]=d;if((d|0)<(g|0)|(d|0)==(g|0)&f>>>0>>0)while(1){f=wq(b,h,y,1,1)|0;if(f){o=k;m=e;break b}d=h;f=c[(d&p)>>2]|0;d=c[(d&p)+4>>2]|0;if(!((d|0)<(g|0)|(d|0)==(g|0)&f>>>0>>0)){x=39;break}}else x=39}else x=38}else{r=c[(t&p)>>2]|0;if(!r){h=b+72|0;e=h;k=c[(e&p)>>2]|0;e=c[(e&p)+4>>2]|0;x=38;break}c[(e&p)>>2]=c[(h&p)>>2];if(a[(r&n)+44>>0]|0){k=r+68|0;m=c[(k&p)>>2]|0;l=r+32|0;e=c[(l&p)>>2]|0;g=r+52|0;f=(c[(e&p)>>2]|0)+0|0;d=g+48|0;do{a[(g&n)>>0]=a[(f&n)>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(d|0));g=c[(k&p)>>2]|0;f=g+1|0;if(f>>>0>m>>>0)f=0;else{h=f;while(1){g=g+34|0;f=g>>>12;if(!f)g=(c[(e&p)>>2]|0)+(g<<2)|0;else g=(c[(e+(f<<2)&p)>>2]|0)+((g&4095)<<2)|0;f=Bq(b,c[(g&p)>>2]|0)|0;g=h+1|0;if((f|0)!=0|g>>>0>m>>>0)break;q=h;e=c[(l&p)>>2]|0;h=g;g=q}g=c[(k&p)>>2]|0}if((m|0)!=(g|0))Aq(r)}else f=0;g=vl(c[(b&p)+204>>2]|0)|0;if(!((g|0)!=0&(f|0)==0))break a;while(1){f=g;g=c[(g&p)+12>>2]|0;f=Bq(b,c[(f&p)+20>>2]|0)|0;if(!((g|0)!=0&(f|0)==0))break a}}while(0);if((x|0)==38){d=h;c[(d&p)>>2]=0;c[(d&p)+4>>2]=0;d=0;f=0;x=39}c:do if((x|0)==39){o=b+80|0;q=b+148|0;r=b+152|0;if((d|0)<(e|0)|(d|0)==(e|0)&f>>>0>>0)while(1){c[(v&p)>>2]=0;f=vq(b,0,k,e,v,u)|0;d=c[(v&p)>>2]|0;if(!d){d=o;d=jw(c[(q&p)>>2]|0,0,c[(d&p)>>2]|0,c[(d&p)+4>>2]|0)|0;g=G;m=h;if((d|0)==(c[(m&p)>>2]|0)?(g|0)==(c[(m&p)+4>>2]|0):0){x=dw(k|0,e|0,d|0,g|0)|0;d=(c[(r&p)>>2]|0)+8|0;d=qw(x|0,G|0,d|0,((d|0)<0)<<31>>31|0)|0;c[(v&p)>>2]=d;x=46}else x=40}else x=46;d:do if((x|0)==46){x=0;if((f|0)==0&(d|0)!=0){m=0;while(1){g=h;l=c[(g&p)>>2]|0;g=c[(g&p)+4>>2]|0;if(!((g|0)<(e|0)|(g|0)==(e|0)&l>>>0>>0)){d=l;break d}f=wq(b,h,y,1,1)|0;m=m+1|0;if(!((f|0)==0&m>>>0>>0)){x=40;break}}}else x=40}while(0);if((x|0)==40){x=0;if(f){o=k;m=e;break c}d=h;g=c[(d&p)+4>>2]|0;d=c[(d&p)>>2]|0}if(!((g|0)<(e|0)|(g|0)==(e|0)&d>>>0>>0)){o=k;m=e;f=0;break}}else{o=k;m=e;f=0}}while(0);e:do if(!s){ei(y);if(f)break a}else{l=w+24|0;g=c[(l&p)>>2]|0;q=(c[(b&p)+152>>2]|0)+4|0;q=sw(q|0,((q|0)<0)<<31>>31|0,g|0,0)|0;k=z;c[(k&p)>>2]=q;c[(k&p)+4>>2]=G;k=c[(t&p)>>2]|0;if(!k){if(!f)x=57}else{e=w+28|0;d=w+40|0;f=k+104|0;if((c[(d&p)>>2]|0)==(c[(f&p)>>2]|0))d=c[(e&p)>>2]|0;else{c[(e&p)>>2]=0;c[(d&p)>>2]=c[(f&p)>>2];d=0}e=k+68|0;if(d>>>0<(c[(e&p)>>2]|0)>>>0){c[(e&p)>>2]=d;c[(k&p)+76>>2]=c[(w&p)+32>>2];c[(k&p)+80>>2]=c[(w&p)+36>>2];Aq(k);g=c[(l&p)>>2]|0;x=57}else x=57}f:do if((x|0)==57){d=b+52|0;while(1){if(g>>>0>=(c[(d&p)>>2]|0)>>>0)break;f=wq(b,z,y,0,1)|0;if(!f)g=g+1|0;else break f}ei(y);break e}while(0);ei(y);break a}while(0);f=h;c[(f&p)>>2]=o;c[(f&p)+4>>2]=m;f=0}else f=0}while(0);i=A;return f|0}function kp(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[(d&p)>>2]|0;if(e){i=c[(d&p)+4>>2]|0;c[((c[(e&p)+4>>2]|0)&p)+4>>2]=c[(e&p)>>2];g=d+56|0;Wc(c[(g&p)>>2]|0);c[(g&p)>>2]=0;a[(d&n)+73>>0]=0;g=c[(d&p)+12>>2]|0;f=d+8|0;e=c[(f&p)>>2]|0;if(!g)c[(i&p)+8>>2]=e;else{c[(g&p)+8>>2]=e;e=c[(f&p)>>2]|0}if(e)c[(e&p)+12>>2]=g;h=d+76|0;e=b[(h&o)>>1]|0;if(e<<16>>16>=0){f=0;while(1){g=c[(d+(f<<2)&p)+120>>2]|0;if(g){Bg(c[(g&p)+68>>2]|0);e=b[(h&o)>>1]|0}if((f|0)<(e<<16>>16|0))f=f+1|0;else break}}if((a[(i&n)+20>>0]|0)==0?(j=i+12|0,k=c[(j&p)>>2]|0,(k|0)!=0):0){c[(j&p)>>2]=0;Bg(c[(k&p)+68>>2]|0)}Wc(c[(d&p)+20>>2]|0)}return}function lp(b){b=b|0;var e=0,f=0,g=0,h=0;h=c[(b&p)+200>>2]|0;e=c[3164]|0;if(e)nc[e&3]();f=c[(b&p)+136>>2]|0;if(f)do{e=f;f=c[(f&p)+12>>2]|0;Wc(e)}while((f|0)!=0);a[(b&n)+4>>0]=0;e=b+208|0;rn(c[(e&p)>>2]|0,d[(b&n)+9>>0]|0,c[(b&p)+152>>2]|0,h)|0;c[(e&p)>>2]=0;xn(b);if(!(a[(b&n)+15>>0]|0)){if((c[(c[(b&p)+64>>2]&p)>>2]|0)!=0?(g=Jo(b)|0,e=g&255,(e|0)==10|(e|0)==13):0){c[(b&p)+40>>2]=g;a[(b&n)+16>>0]=6}nl(b)}else No(b);e=c[3166]|0;if(e)nc[e&3]();e=c[(b&p)+64>>2]|0;f=c[(e&p)>>2]|0;if(f){lc[c[(f&p)+4>>2]&127](e)|0;c[(e&p)>>2]=0}f=c[(b&p)+60>>2]|0;e=c[(f&p)>>2]|0;if(e){lc[c[(e&p)+4>>2]&127](f)|0;c[(f&p)>>2]=0}$k(h);cc[c[8892>>2]&31](c[((c[(b&p)+204>>2]|0)&p)+40>>2]|0);Wc(b);return}function mp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[(a&p)+4>>2]|0;h=qg(g,((g|0)<0)<<31>>31)|0;do if(h){fw(h|0,0,g|0)|0;g=tc[c[(a&p)+24>>2]&31](a,b,h,e&556927,f)|0;if(!g){c[(d&p)>>2]=h;g=0;break}else{Wc(h);break}}else g=7;while(0);return g|0}function np(b){b=b|0;var d=0,e=0,f=0;d=b+16|0;e=b+12|0;f=b+10|0;if(!(Tl(c[(d&p)>>2]|0,b,c[(e&p)>>2]|0,a[(f&n)>>0]|0)|0))d=0;else{d=(Ul(c[(d&p)>>2]|0,b,c[(e&p)>>2]|0,a[(f&n)>>0]|0)|0)==0;d=d?4:8}return d|0}function op(d){d=d|0;var f=0,g=0;g=d+8|0;f=b[(g&o)>>1]|0;do if(!(f&13))if(!(Ul(c[(d&p)+16>>2]|0,d,c[(d&p)+12>>2]|0,a[(d&n)+10>>0]|0)|0)){f=((e[(g&o)>>1]|0)&48640|4)&65535;b[(g&o)>>1]=f;break}else{h[(d&q)>>3]=+Ug(d);b[(g&o)>>1]=(e[(g&o)>>1]|0)&48640|8;dm(d);f=b[(g&o)>>1]|0;break}while(0);b[(g&o)>>1]=f&65517;return}function pp(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+80|0;if((i|0)>=(j|0))fa();u=w+40|0;v=w;h=f+4|0;if((a[(d&n)+10>>0]|0)!=(a[(h&n)>>0]|0)){t=c[(d&p)+32>>2]|0;q=u+8|0;b[(q&o)>>1]=1;c[(u&p)+32>>2]=t;r=u+24|0;c[(r&p)>>2]=0;s=v+8|0;b[(s&o)>>1]=1;c[(v&p)+32>>2]=t;t=v+24|0;c[(t&p)>>2]=0;Zl(u,d,4096);Zl(v,e,4096);d=Sg(u,a[(h&n)>>0]|0)|0;m=(d|0)==0;if(m)l=0;else l=c[(u&p)+12>>2]|0;h=Sg(v,a[(h&n)>>0]|0)|0;k=(h|0)==0;if(k)e=0;else e=c[(v&p)+12>>2]|0;d=tc[c[(f&p)+12>>2]&31](c[(f&p)+8>>2]|0,l,d,e,h)|0;if(!((b[(q&o)>>1]&9312)==0&(c[(r&p)>>2]|0)==0))Qg(u);if(!((b[(s&o)>>1]&9312)==0&(c[(t&p)>>2]|0)==0))Qg(v);if((m|k)&(g|0)!=0)a[(g&n)>>0]=7}else d=tc[c[(f&p)+12>>2]&31](c[(f&p)+8>>2]|0,c[(d&p)+12>>2]|0,c[(d&p)+16>>2]|0,c[(e&p)+12>>2]|0,c[(e&p)+16>>2]|0)|0;i=w;return d|0}function qp(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[(a&p)+12>>2]|0;d=c[(b&p)+12>>2]|0;a=Zv(c[(a&p)+16>>2]|0,c[(b&p)+16>>2]|0,(e|0)>(d|0)?d:e)|0;return ((a|0)==0?e-d|0:a)|0}function rp(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();q=r;do if(!(a[(f&n)+3>>0]|0)){if(a[(f&n)+4>>0]|0){b[(h&o)+20>>1]=((sp(g+4|0,h)|0)&255)+4;l=h+8|0;c[(l&p)>>2]=0;c[(l&p)+4>>2]=0;c[(l&p)+8>>2]=0;break}m=d[(f&n)+7>>0]|0;l=g+m|0;k=a[(l&n)>>0]|0;if(k<<24>>24>-1){l=k&255;c[(q&p)>>2]=l;k=1}else{k=mm(l,q)|0;l=c[(q&p)>>2]|0}q=h;c[(q&p)>>2]=l;c[(q&p)+4>>2]=0;m=(k&255)+m|0;k=12}else{k=a[(g&n)>>0]|0;if(k<<24>>24>-1){l=k&255;c[(q&p)>>2]=l;k=1}else{k=mm(g,q)|0;l=c[(q&p)>>2]|0}m=k&255;m=((sp(g+m|0,h)|0)&255)+m|0;k=12}while(0);do if((k|0)==12){c[(h&p)+12>>2]=l;c[(h&p)+8>>2]=g+m;k=e[(f&o)+10>>1]|0;if(l>>>0>k>>>0){q=b[(f&o)+12>>1]|0;g=q&65535;l=(((l-g|0)>>>0)%(((c[((c[(f&p)+52>>2]|0)&p)+36>>2]|0)+-4|0)>>>0)|0)+g|0;k=(l|0)>(k|0)?q:l&65535;b[(h&o)+16>>1]=k;k=m+(k&65535)|0;b[(h&o)+18>>1]=k;b[(h&o)+20>>1]=k+4;break}else{k=l+m|0;b[(h&o)+20>>1]=(k&65532)>>>0<4?4:k&65535;b[(h&o)+16>>1]=l;b[(h&o)+18>>1]=0;break}}while(0);i=r;return}function sp(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=a[(b&n)>>0]|0;g=f&255;do if(g&128){f=d[(b&n)+1>>0]|0;if(!(f&128)){h=e;c[(h&p)>>2]=f|g<<7&16256;c[(h&p)+4>>2]=0;f=2;break}h=d[(b&n)+2>>0]|0;g=(h|g<<14)&2080895;if(!(h&128)){h=e;c[(h&p)>>2]=g|f<<7&16256;c[(h&p)+4>>2]=0;f=3;break}h=d[(b&n)+3>>0]|0;f=(h|f<<14)&2080895;if(!(h&128)){h=e;c[(h&p)>>2]=f|g<<7;c[(h&p)+4>>2]=0;f=4;break}k=d[(b&n)+4>>0]|0;h=k|g<<14;if(!(k&128)){i=e;c[(i&p)>>2]=h|f<<7;c[(i&p)+4>>2]=g>>>18;f=5;break}j=f|g<<7;g=d[(b&n)+5>>0]|0;i=g|f<<14;if(!(g&128)){f=e;c[(f&p)>>2]=i|h<<7&266354560;c[(f&p)+4>>2]=j>>>18;f=6;break}f=d[(b&n)+6>>0]|0;g=f|h<<14;if(!(f&128)){f=e;c[(f&p)>>2]=g&-266354561|i<<7&266354560;c[(f&p)+4>>2]=j>>>11;f=7;break}f=g&2080895;h=d[(b&n)+7>>0]|0;g=h|i<<14;if(!(h&128)){h=e;c[(h&p)>>2]=g&-266354561|f<<7;c[(h&p)+4>>2]=j>>>4;f=8;break}else{h=e;c[(h&p)>>2]=g<<8&532709120|f<<15|(d[(b&n)+8>>0]|0);c[(h&p)+4>>2]=k>>>3&15|j<<4;f=9;break}}else{g=e;c[(g&p)>>2]=f&255;c[(g&p)+4>>2]=0;f=1}while(0);return f|0}function tp(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,l=0,m=0,r=0,s=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();l=r+8|0;m=r;g=(d[(a&n)+1>>0]|0)<<16|(d[(a&n)>>0]|0)<<24|(d[(a&n)+2>>0]|0)<<8|(d[(a&n)+3>>0]|0);a=(d[(a&n)+5>>0]|0)<<16|(d[(a&n)+4>>0]|0)<<24|(d[(a&n)+6>>0]|0)<<8|(d[(a&n)+7>>0]|0);s=f;c[(s&p)>>2]=a;c[(s&p)+4>>2]=g;if((e|0)==6)a=4;else{c[(k&p)>>2]=a;c[(k&p)+4>>2]=g;h[(l&q)>>3]=+h[(k&q)>>3];h[(m&q)>>3]=+h[(l&q)>>3];a=+h[(l&q)>>3]!=+h[(m&q)>>3]?1:8}b[(f&o)+8>>1]=a;i=r;return}function up(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;if(!(e>>>0>16777215|(e|0)==16777215&c>>>0>4294967295)){f=c;g=0;while(1){c=g+1|0;a[(h+g&n)>>0]=f|128;f=mw(f|0,e|0,7)|0;e=G;if((f|0)==0&(e|0)==0){e=g;break}else g=c}a[(h&n)>>0]=(d[(h&n)>>0]|0)&127;if((e|0)>-1){f=0;while(1){a[(b+f&n)>>0]=a[(h+e&n)>>0]|0;if((e|0)>0){f=f+1|0;e=e+-1|0}else break}}}else{a[(b&n)+8>>0]=c;c=mw(c|0,e|0,8)|0;f=G;e=7;while(1){a[(b+e&n)>>0]=c|128;c=mw(c|0,f|0,7)|0;if((e|0)<=0){c=9;break}else{f=G;e=e+-1|0}}}i=k;return c|0}function vp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;if((c[(b&p)+44>>2]|0)>>>0>=d>>>0){f=dl(b,d,e,f)|0;if(!f){f=c[(e&p)>>2]|0;if((a[(f&n)>>0]|0)==0?(g=$p(f)|0,(g|0)!=0):0){f=c[(e&p)>>2]|0;if(f)Bg(c[(f&p)+68>>2]|0)}else g=0}else g=f}else{c[(h&p)>>2]=54788;c[(h&p)+4>>2]=10788;bd(11,13600,h);g=11}i=k;return g|0}function wp(b){b=b|0;var d=0,e=0,f=0;if((a[(b&n)+12>>0]|0)==0?(d=b+60|0,e=c[(d&p)>>2]|0,((lc[c[((c[(e&p)>>2]|0)&p)+48>>2]&127](e)|0)&4096|0)==0):0){d=c[(d&p)>>2]|0;e=c[((c[(d&p)>>2]|0)&p)+44>>2]|0;if(e){d=lc[e&127](d)|0;if((d|0)<32)d=512;else f=6}else{d=4096;f=6}if((f|0)==6)d=(d|0)>65536?65536:d;c[(b&p)+148>>2]=d}else c[(b&p)+148>>2]=512;return}function xp(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=d+40|0;do if(!(c[(j&p)>>2]|0)){i=a[(d&n)+20>>0]|0;if(i<<24>>24){if(i&3){f=0;break}if(b[(e&o)+24>>1]&4){f=0;break}}c[(e&p)+12>>2]=0;do if(!(c[(d&p)+208>>2]|0)){if(!((b[(e&o)+24>>1]&4)==0?(a[(d&n)+16>>0]|0)!=3:0))k=11;if((k|0)==11?(g=zl(d,1)|0,(g|0)!=0):0){f=g;break}if(((c[(e&p)+20>>2]|0)>>>0>(c[(d&p)+24>>2]|0)>>>0?(Uo(e)|0)!=0:0)?(h=Vo(e)|0,(h|0)!=0):0){f=h;break}f=Al(d,e)|0;k=16}else{if((Uo(e)|0)!=0?(f=Vo(e)|0,(f|0)!=0):0)break;f=wl(d,e,0,0)|0;k=16}while(0);if((k|0)==16)if(!f){xl(e);f=0;break}g=f&255;if((g|0)==10|(g|0)==13){c[(j&p)>>2]=f;a[(d&n)+16>>0]=6}}else f=0;while(0);return f|0}function yp(d){d=d|0;var e=0;e=c[(d&p)+8>>2]|0;if((a[(e&n)>>0]|0)!=0?(a[(e&n)>>0]=0,(b[(d&o)+26>>1]|0)>1):0)$p(e)|0;return}function zp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,o=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();o=q;m=q+8|0;do if(!(c[(h&p)>>2]|0)){if(!e){c[(o&p)>>2]=53856;c[(o&p)+4>>2]=10788;bd(11,13600,o);c[(h&p)>>2]=11;break}if(e>>>0<2)k=0;else{k=e+-2|0;k=k-((k>>>0)%(((((c[(b&p)+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(((c[2514]|0)>>>0)/((c[(b&p)+32>>2]|0)>>>0)|0|0)?3:2)+k|0}l=zg(c[(b&p)>>2]|0,k,m,0)|0;if(l){c[(h&p)>>2]=l;break}e=(e-k|0)*5|0;l=e+-5|0;do if((l|0)>=0){k=c[(m&p)>>2]|0;b=c[(k&p)+4>>2]|0;l=b+l|0;if((a[(l&n)>>0]|0)==f<<24>>24?(d[(b+e+-3&n)>>0]<<16|d[(b+e+-4&n)>>0]<<24|d[(b+e+-2&n)>>0]<<8|d[(b+e+-1&n)>>0]|0)==(g|0):0)break;m=Gg(k)|0;c[(h&p)>>2]=m;if(!m){a[(l&n)>>0]=f;a[(b+e+-4&n)>>0]=g>>>24;a[(b+e+-3&n)>>0]=g>>>16;a[(b+e+-2&n)>>0]=g>>>8;a[(b+e+-1&n)>>0]=g}}else{c[(o&p)>>2]=53867;c[(o&p)+4>>2]=10788;bd(11,13600,o);c[(h&p)>>2]=11;k=c[(m&p)>>2]|0}while(0);if(k)Bg(k)}while(0);i=q;return}function Ap(a,b,c){a=a|0;b=b|0;c=c|0;return Km(a,b,c,0)|0}function Bp(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;j=d[(f&n)>>0]&63;h=f+j|0;l=c[(g&p)+8>>2]|0;k=c[(l&p)>>2]|0;l=c[(l&p)+4>>2]|0;switch(d[(f&n)+1>>0]|0){case 3:{h=d[(f+j&n)+1>>0]<<8|a[(h&n)>>0]<<16|d[(f+j&n)+2>>0];i=((h|0)<0)<<31>>31;m=11;break}case 4:{h=d[(f+j&n)+1>>0]<<16|d[(h&n)>>0]<<24|d[(f+j&n)+2>>0]<<8|d[(f+j&n)+3>>0];i=((h|0)<0)<<31>>31;m=11;break}case 8:{i=0;h=0;m=11;break}case 5:{i=a[(h&n)>>0]<<8|d[(f+j&n)+1>>0];h=d[(f+j&n)+3>>0]<<16|d[(f+j&n)+2>>0]<<24|d[(f+j&n)+4>>0]<<8|d[(f+j&n)+5>>0];m=11;break}case 7:case 0:{h=Km(b,f,g,0)|0;break}case 6:{i=d[(f+j&n)+1>>0]<<16|d[(h&n)>>0]<<24|d[(f+j&n)+2>>0]<<8|d[(f+j&n)+3>>0];h=d[(f+j&n)+5>>0]<<16|d[(f+j&n)+4>>0]<<24|d[(f+j&n)+6>>0]<<8|d[(f+j&n)+7>>0];m=11;break}case 9:{i=0;h=1;m=11;break}case 2:{h=a[(h&n)>>0]<<8|d[(f+j&n)+1>>0];i=((h|0)<0)<<31>>31;m=11;break}case 1:{h=a[(h&n)>>0]|0;i=((h|0)<0)<<31>>31;m=11;break}default:h=Km(b,f,g,0)|0}do if((m|0)==11){if((l|0)>(i|0)|(l|0)==(i|0)&k>>>0>h>>>0){h=c[(g&p)+12>>2]|0;break}if((l|0)<(i|0)|(l|0)==(i|0)&k>>>0>>0){h=c[(g&p)+16>>2]|0;break}if((e[(g&o)+4>>1]|0)>1){h=Km(b,f,g,1)|0;break}else{h=a[(g&n)+6>>0]|0;break}}while(0);return h|0}function Cp(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();q=r;l=r+8|0;h=f+1|0;k=a[(h&n)>>0]|0;if(k<<24>>24>-1){h=k&255;c[(l&p)>>2]=h}else{mm(h,l)|0;h=c[(l&p)>>2]|0}do if((h|0)>=12){if(!(h&1)){h=c[(g&p)+16>>2]|0;break}l=d[(f&n)>>0]|0;m=(h+-12|0)/2|0;if((l+m|0)>(b|0)){c[(q&p)>>2]=68550;c[(q&p)+4>>2]=10788;bd(11,13600,q);a[(g&n)+7>>0]=11;h=0;break}h=c[(g&p)+8>>2]|0;k=c[(h&p)+12>>2]|0;h=Zv(f+l|0,c[(h&p)+16>>2]|0,(m|0)>(k|0)?k:m)|0;if(h)if((h|0)>0){h=c[(g&p)+16>>2]|0;break}else{h=c[(g&p)+12>>2]|0;break}if((m|0)==(k|0))if((e[(g&o)+4>>1]|0)>1){h=Km(b,f,g,1)|0;break}else{h=a[(g&n)+6>>0]|0;break}else if((m-k|0)>0){h=c[(g&p)+16>>2]|0;break}else{h=c[(g&p)+12>>2]|0;break}}else h=c[(g&p)+12>>2]|0;while(0);i=r;return h|0}function Dp(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0;m=f+73|0;h=a[(m&n)>>0]|0;do if(h<<24>>24!=1){if((h&255)>2){h=Kn(f)|0;if(h)break;h=a[(m&n)>>0]|0}if(!(h<<24>>24)){c[(g&p)>>2]=1;h=0;break}h=f+68|0;i=c[(h&p)>>2]|0;if((i|0)!=0?(a[(m&n)>>0]=1,c[(h&p)>>2]=0,(i|0)>0):0)h=0;else q=9}else q=9;while(0);do if((q|0)==9){l=f+76|0;h=b[(l&o)>>1]|0;i=c[(f+(h<<2)&p)+120>>2]|0;h=f+(h<<1)+78|0;j=(b[(h&o)>>1]|0)+1<<16>>16;b[(h&o)>>1]=j;h=(a[(i&n)+5>>0]|0)!=0;if((j&65535)<(e[(i&o)+18>>1]|0)){if(h){h=0;break}h=Vm(f)|0;break}if(!h){h=d[(i&n)+6>>0]|0;i=c[(i&p)+56>>2]|0;h=rm(f,d[(i+h&n)+9>>0]<<16|d[(i+h&n)+8>>0]<<24|d[(i+h&n)+10>>0]<<8|d[(i+h&n)+11>>0])|0;if(h)break;h=Vm(f)|0;break}j=f+44|0;k=f+72|0;i=b[(l&o)>>1]|0;do{if(!(i<<16>>16)){q=15;break}h=c[(f+(i<<16>>16<<2)&p)+120>>2]|0;if(h){Bg(c[(h&p)+68>>2]|0);i=b[(l&o)>>1]|0}i=i+-1<<16>>16;b[(l&o)>>1]=i;b[(j&o)>>1]=0;a[(k&n)>>0]=d[(k&n)>>0]&249;r=i<<16>>16;h=c[(f+(r<<2)&p)+120>>2]|0}while((e[(f+(r<<1)&o)+78>>1]|0)>=(e[(h&o)+18>>1]|0));if((q|0)==15){c[(g&p)>>2]=1;a[(m&n)>>0]=0;h=0;break}if(!(a[(h&n)+2>>0]|0))h=0;else h=Dm(f,g)|0}while(0);return h|0}function Ep(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0;s=f+73|0;h=a[(s&n)>>0]|0;do if(h<<24>>24!=1){if((h&255)>2){h=Kn(f)|0;if(h)break;h=a[(s&n)>>0]|0}if(!(h<<24>>24)){c[(g&p)>>2]=1;h=0;break}h=f+68|0;i=c[(h&p)>>2]|0;if((i|0)!=0?(a[(s&n)>>0]=1,c[(h&p)>>2]=0,(i|0)<0):0)h=0;else j=9}else j=9;while(0);a:do if((j|0)==9){r=f+76|0;k=b[(r&o)>>1]|0;l=k<<16>>16;j=c[(f+(l<<2)&p)+120>>2]|0;i=f+(l<<1)+78|0;h=b[(i&o)>>1]|0;if(!(a[(j&n)+5>>0]|0)){g=c[(j&p)+56>>2]|0;h=(h&65535)<<1;s=c[(j&p)+64>>2]|0;h=(d[(s+h&n)>>0]<<8|d[(s+(h|1)&n)>>0])&e[(j&o)+20>>1];h=rm(f,d[(g+h&n)+1>>0]<<16|d[(g+h&n)>>0]<<24|d[(g+h&n)+2>>0]<<8|d[(g+h&n)+3>>0])|0;if(h)break;h=Fp(f)|0;break}b:do if(!(h<<16>>16)){m=f+44|0;q=f+72|0;j=l;while(1){if(!(k<<16>>16))break;i=c[(f+(j<<2)&p)+120>>2]|0;if(!i)i=k;else{Bg(c[(i&p)+68>>2]|0);i=b[(r&o)>>1]|0}k=i+-1<<16>>16;b[(r&o)>>1]=k;b[(m&o)>>1]=0;a[(q&n)>>0]=d[(q&n)>>0]&249;j=k<<16>>16;i=f+(j<<1)+78|0;h=b[(i&o)>>1]|0;if(h<<16>>16)break b}a[(s&n)>>0]=0;c[(g&p)>>2]=1;h=0;break a}while(0);b[(i&o)>>1]=h+-1<<16>>16;s=c[(f+(b[(r&o)>>1]<<2)&p)+120>>2]|0;if((a[(s&n)+2>>0]|0)!=0?(a[(s&n)+5>>0]|0)==0:0)h=Em(f,g)|0;else h=0}while(0);return h|0}function Fp(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;i=f+76|0;do{h=b[(i&o)>>1]|0;g=c[(f+(h<<2)&p)+120>>2]|0;if(a[(g&n)+5>>0]|0){j=4;break}k=d[(g&n)+6>>0]|0;l=c[(g&p)+56>>2]|0;k=d[(l+k&n)+9>>0]<<16|d[(l+k&n)+8>>0]<<24|d[(l+k&n)+10>>0]<<8|d[(l+k&n)+11>>0];b[(f+(h<<1)&o)+78>>1]=b[(g&o)+18>>1]|0;g=rm(f,k)|0}while((g|0)==0);if((j|0)==4){b[(f+(h<<1)&o)+78>>1]=(e[(g&o)+18>>1]|0)+65535;g=0}return g|0}function Gp(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,q=0;q=i;i=i+224|0;if((i|0)>=(j|0))fa();m=q;k=q+8|0;c[(k&p)>>2]=0;do if(d){l=a+16|0;n=Fm(c[(l&p)>>2]|0,q+16|0,200,k)|0;if(n){Gm(c[(l&p)>>2]|0,e,d,n);if(!(b[(n&o)+4>>1]|0)){mg(c[((c[(l&p)>>2]|0)&p)+12>>2]|0,c[(k&p)>>2]|0);c[(m&p)>>2]=53713;c[(m&p)+4>>2]=10788;bd(11,13600,m);k=11;break}l=c[(k&p)>>2]|0;k=Cm(a,n,e,f,g,h)|0;if(l)mg(c[((c[(a&p)+16>>2]|0)&p)+12>>2]|0,l)}else k=7}else k=Cm(a,0,e,f,g,h)|0;while(0);i=q;return k|0}function Hp(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+48|0;if((i|0)>=(j|0))fa();u=v+24|0;h=v;s=v+36|0;t=v+32|0;q=c[(a&p)+52>>2]|0;rp(a,f,h);b[(g&o)>>1]=b[(h&o)+20>>1]|0;g=b[(h&o)+18>>1]|0;a:do if(g<<16>>16){k=g&65535;l=f+(k+3)|0;if(l>>>0>((c[(a&p)+56>>2]|0)+(e[(a&o)+20>>1]|0)|0)>>>0){c[(u&p)>>2]=58720;c[(u&p)+4>>2]=10788;bd(11,13600,u);g=11;break}g=(c[(q&p)+36>>2]|0)+-4|0;g=(((c[(h&p)+12>>2]|0)+-1+g-(e[(h&o)+16>>1]|0)|0)>>>0)/(g>>>0)|0;if(g){m=q+44|0;a=g;k=d[(f+k&n)+1>>0]<<16|d[(f+k&n)>>0]<<24|d[(f+k&n)+2>>0]<<8|d[(l&n)>>0];while(1){a=a+-1|0;c[(s&p)>>2]=0;c[(t&p)>>2]=0;if(k>>>0<2)break;if(k>>>0>(c[(m&p)>>2]|0)>>>0)break;f=(a|0)==0;if(!f){g=Mp(q,k,t,s)|0;if(g)break a;g=c[(t&p)>>2]|0;if(g)l=13;else l=12}else l=12;if((l|0)==12){g=Yp(q,k)|0;c[(t&p)>>2]=g;if(!g){g=0;l=15}else l=13}if((l|0)==13){l=0;if((b[((c[(g&p)+68>>2]|0)&o)+26>>1]|0)==1)l=15;else{c[(u&p)>>2]=58754;c[(u&p)+4>>2]=10788;bd(11,13600,u);g=11}}if((l|0)==15)g=Ym(q,g,k)|0;h=c[(t&p)>>2]|0;if((h|0)!=0?(r=c[(h&p)+68>>2]|0,(r|0)!=0):0)Bg(r);if(g)break a;if(f){g=0;break a}else k=c[(s&p)>>2]|0}c[(u&p)>>2]=58734;c[(u&p)+4>>2]=10788;bd(11,13600,u);g=11}else g=0}else g=0;while(0);i=v;return g|0}function Ip(f,g,h,k){f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;if((i|0)>=(j|0))fa();m=z;do if(!(c[(k&p)>>2]|0)){v=c[(f&p)+56>>2]|0;w=g<<1;x=c[(f&p)+64>>2]|0;y=x+w|0;l=(d[(y&n)>>0]|0)<<8|(d[(x+(w|1)&n)>>0]|0);q=f+6|0;r=d[(q&n)>>0]|0;s=v+(r+5)|0;t=v+(r+6)|0;if(l>>>0>=((d[(s&n)>>0]|0)<<8|(d[(t&n)>>0]|0))>>>0?(u=f+52|0,(l+h|0)>>>0<=(c[((c[(u&p)>>2]|0)&p)+36>>2]|0)>>>0):0){h=Cq(f,l&65535,h&65535)|0;if(h){c[(k&p)>>2]=h;break}h=f+18|0;l=(b[(h&o)>>1]|0)+-1<<16>>16;b[(h&o)>>1]=l;if(!(l<<16>>16)){k=v+(r+1)|0;a[(k&n)>>0]=0;a[(k&n)+1>>0]=0;a[(k&n)+2>>0]=0;a[(k&n)+3>>0]=0;a[(v+r&n)+7>>0]=0;a[(s&n)>>0]=(c[((c[(u&p)>>2]|0)&p)+36>>2]|0)>>>8;a[(t&n)>>0]=c[((c[(u&p)>>2]|0)&p)+36>>2];b[(f&o)+16>>1]=(c[((c[(u&p)>>2]|0)&p)+36>>2]|0)+65528-(d[(q&n)>>0]|0)-(d[(f&n)+7>>0]|0);break}else{lw(y|0,x+(w+2)|0,(l&65535)-g<<1|0)|0;a[(v+r&n)+3>>0]=(e[(h&o)>>1]|0)>>>8;a[(v+r&n)+4>>0]=b[(h&o)>>1];v=f+16|0;b[(v&o)>>1]=(e[(v&o)>>1]|0)+2;break}}c[(m&p)>>2]=58991;c[(m&p)+4>>2]=10788;bd(11,13600,m);c[(k&p)>>2]=11}while(0);i=z;return}function Jp(f,g,h,k,l,m,q){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;var 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;G=i;i=i+16|0;if((i|0)>=(j|0))fa();s=G;C=G+12|0;y=G+8|0;a:do if(!(c[(q&p)>>2]|0)){r=f+1|0;if((a[(r&n)>>0]|0)==0?(E=k+2|0,F=f+16|0,(E|0)<=(e[(F&o)>>1]|0)):0){l=Gg(c[(f&p)+68>>2]|0)|0;if(l){c[(q&p)>>2]=l;break}z=c[(f&p)+56>>2]|0;t=e[(f&o)+14>>1]|0;A=f+18|0;B=e[(A&o)>>1]<<1;v=g<<1;w=t+v|0;x=f+6|0;l=d[(x&n)>>0]|0;c[(C&p)>>2]=0;g=B+t|0;t=z+(l+5)|0;u=z+(l+6)|0;r=((d[(t&n)>>0]<<8|d[(u&n)>>0])+65535&65535)+1|0;b:do if((g|0)>(r|0)){c[(s&p)>>2]=54326;c[(s&p)+4>>2]=10788;bd(11,13600,s);l=11}else{s=g+2|0;do if((s|0)<=(r|0)){if((a[(z+l&n)+1>>0]|0)==0?(a[(z+l&n)+2>>0]|0)==0:0){D=20;break}c[(y&p)>>2]=0;g=Dq(f,k,C,y)|0;l=c[(C&p)>>2]|0;if(l)break b;if(!(c[(y&p)>>2]|0))if(!g)D=20;else r=g-z|0;else D=21}else D=20;while(0);if((D|0)==20)if((s+k|0)>(r|0))D=21;else D=23;if((D|0)==21){l=Eq(f)|0;c[(C&p)>>2]=l;if(l)break;r=((d[(t&n)>>0]<<8|d[(u&n)>>0])+65535&65535)+1|0;D=23}if((D|0)==23){r=r-k|0;a[(t&n)>>0]=r>>>8;a[(u&n)>>0]=r}b[(A&o)>>1]=(b[(A&o)>>1]|0)+1<<16>>16;b[(F&o)>>1]=(e[(F&o)>>1]|0)-E;l=z+r|0;kw(l|0,h|0,k|0)|0;if(m){a[(l&n)>>0]=m>>>24;a[(z+r&n)+1>>0]=m>>>16;a[(z+r&n)+2>>0]=m>>>8;a[(z+r&n)+3>>0]=m}m=z+w|0;lw(z+(w+2)|0,m|0,B-v|0)|0;a[(m&n)>>0]=r>>>8;a[(z+w&n)+1>>0]=r;a[(z+(d[(x&n)>>0]|0)&n)+3>>0]=(e[(A&o)>>1]|0)>>>8;a[(z+(d[(x&n)>>0]|0)&n)+4>>0]=b[(A&o)>>1];if(!(a[((c[(f&p)+52>>2]|0)&n)+17>>0]|0))break a;Fq(f,h,q);break a}while(0);c[(q&p)>>2]=l;break}if(!l)l=h;else kw(l|0,h|0,k|0)|0;if(m){a[(l&n)>>0]=m>>>24;a[(l&n)+1>>0]=m>>>16;a[(l&n)+2>>0]=m>>>8;a[(l&n)+3>>0]=m}q=a[(r&n)>>0]|0;a[(r&n)>>0]=q+1<<24>>24;q=q&255;c[(f+(q<<2)&p)+32>>2]=l;b[(f+(q<<1)&o)+22>>1]=g}while(0);i=G;return}function Kp(f){f=f|0;var g=0,h=0,k=0,l=0,m=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,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,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,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;Ra=i;i=i+240|0;if((i|0)>=(j|0))fa();Qa=Ra+24|0;Na=Ra+200|0;Da=Ra+188|0;Ca=Ra+168|0;Ba=Ra+160|0;Ea=Ra+136|0;Fa=Ra+116|0;Pa=Ra+96|0;Ka=Ra+92|0;Aa=Ra+229|0;za=Ra+72|0;ya=Ra+52|0;xa=Ra+206|0;Ja=Ra+48|0;Ga=Ra;Ia=Ra+44|0;Ma=Ra+40|0;La=Ra+36|0;Ha=Ra+32|0;Oa=Ra+204|0;wa=Ra+216|0;ha=f+4|0;pa=(c[((c[(ha&p)>>2]|0)&p)+36>>2]<<1>>>0)/3|0;qa=f+76|0;ta=f+74|0;ua=wa+4|0;va=wa;ia=f+124|0;na=f+78|0;oa=f+80|0;l=b[(qa&o)>>1]|0;ga=0;while(1){m=l<<16>>16;q=c[(f+(m<<2)&p)+120>>2]|0;r=q+1|0;h=(a[(r&n)>>0]|0)==0;if(!(l<<16>>16)){if(h){h=ga;g=0;break}c[(Na&p)>>2]=0;c[(Da&p)>>2]=0;k=c[(q&p)+52>>2]|0;g=Gg(c[(q&p)+68>>2]|0)|0;c[(Qa&p)>>2]=g;do if(!g){h=q+72|0;c[(Qa&p)>>2]=ip(k,Na,Da,c[(h&p)>>2]|0,0)|0;l=c[(Na&p)>>2]|0;Gq(q,l,Qa);if(a[(k&n)+17>>0]|0)zp(k,c[(Da&p)>>2]|0,5,c[(h&p)>>2]|0,Qa);g=c[(Qa&p)>>2]|0;if(!g){kw(l+22|0,q+22|0,d[(r&n)>>0]<<1|0)|0;kw(l+32|0,q+32|0,d[(r&n)>>0]<<2|0)|0;a[(l&n)+1>>0]=a[(r&n)>>0]|0;pl(q,d[(c[(l&p)+56>>2]&n)>>0]&247);g=d[(q&n)+6>>0]|0;ca=c[(q&p)+56>>2]|0;ba=c[(Da&p)>>2]|0;a[(ca+g&n)+8>>0]=ba>>>24;a[(ca+g&n)+9>>0]=ba>>>16;a[(ca+g&n)+10>>0]=ba>>>8;a[(ca+g&n)+11>>0]=ba;c[(ia&p)>>2]=l;g=0;break}c[(ia&p)>>2]=0;if(l)Bg(c[(l&p)+68>>2]|0)}else c[(ia&p)>>2]=0;while(0);if(g){h=ga;break}b[(qa&o)>>1]=1;b[(na&o)>>1]=0;b[(oa&o)>>1]=0;l=c[(ia&p)>>2]|0;k=l+1|0;if(!(a[(k&n)>>0]|0)){h=1;m=1;ea=15}else{s=1;m=1;r=k}}else if(h){h=l;l=q;k=r;ea=15}else{s=l;l=q}if((ea|0)==15){ea=0;if((e[(l&o)+16>>1]|0)>>>0>pa>>>0){s=h;r=k}else{h=ga;g=0;break}}k=m+-1|0;da=c[(f+(k<<2)&p)+120>>2]|0;k=b[(f+(k<<1)&o)+78>>1]|0;t=k&65535;g=Gg(c[(da&p)+68>>2]|0)|0;do if(!g){if(((((a[(l&n)+3>>0]|0)!=0?(a[(r&n)>>0]|0)==1:0)?(ja=b[(l&o)+22>>1]|0,ka=l+18|0,ja<<16>>16==(b[(ka&o)>>1]|0)):0)?(la=da+72|0,(c[(la&p)>>2]|0)!=1):0)?(ma=da+18|0,(b[(ma&o)>>1]|0)==k<<16>>16):0){k=c[(l&p)+52>>2]|0;if(!(ja<<16>>16)){c[(Qa&p)>>2]=59423;c[(Qa&p)+4>>2]=10788;bd(11,13600,Qa);h=ga;g=11;break}ca=ip(k,Ia,La,0,0)|0;c[(Ma&p)>>2]=ca;if(!ca){h=c[(l&p)+32>>2]|0;c[(Ha&p)>>2]=h;g=Lp(l,h)|0;b[(Oa&o)>>1]=g;m=c[(Ia&p)>>2]|0;pl(m,13);Hq(m,1,Ha,Oa);b[(m&o)+16>>1]=65534-(g&65535)+(c[(k&p)+36>>2]|0)-(e[(m&o)+14>>1]|0);if((a[(k&n)+17>>0]|0)!=0?(zp(k,c[(La&p)>>2]|0,5,c[(la&p)>>2]|0,Ma),(g&65535)>(e[(m&o)+12>>1]|0)):0)Fq(m,h,Ma);ca=c[(l&p)+56>>2]|0;k=e[(ka&o)>>1]<<1;h=c[(l&p)+64>>2]|0;k=(d[(h+k+-2&n)>>0]<<8|d[(h+k+-1&n)>>0])&e[(l&o)+20>>1];h=ca+k|0;c[(Ha&p)>>2]=h;k=ca+(k+9)|0;while(1){g=h+1|0;if((a[(h&n)>>0]|0)<0&g>>>0>>0)h=g;else break}c[(Ha&p)>>2]=g;k=h+10|0;m=ua;while(1){c[(Ha&p)>>2]=g+1;ca=a[(g&n)>>0]|0;h=m+1|0;a[(m&n)>>0]=ca;g=c[(Ha&p)>>2]|0;if(!(ca<<24>>24<0&g>>>0>>0))break;else m=h}Jp(da,e[(ma&o)>>1]|0,wa,h-va|0,0,c[(l&p)+72>>2]|0,Ma);h=d[(da&n)+6>>0]|0;ca=c[(da&p)+56>>2]|0;ba=c[(La&p)>>2]|0;a[(ca+h&n)+8>>0]=ba>>>24;a[(ca+h&n)+9>>0]=ba>>>16;a[(ca+h&n)+10>>0]=ba>>>8;a[(ca+h&n)+11>>0]=ba;h=c[(Ia&p)>>2]|0;if(h)Bg(c[(h&p)+68>>2]|0)}h=ga;g=c[(Ma&p)>>2]|0;break}h=Go(c[((c[(ha&p)>>2]|0)&p)+32>>2]|0)|0;_=s<<16>>16==1;q=d[(ta&n)>>0]|0;N=q&1;c[(Na&p)>>2]=0;a[(Aa&n)>>0]=0;a[(Aa&n)+1>>0]=0;a[(Aa&n)+2>>0]=0;a[(Aa&n)+3>>0]=0;a[(Aa&n)+4>>0]=0;aa=c[(da&p)+52>>2]|0;if(!h)g=7;else{E=da+1|0;s=d[(E&n)>>0]|0;$=da+18|0;g=e[($&o)>>1]|0;m=g+s|0;if((m|0)<2){ba=m;W=0}else{do if(k<<16>>16)if((m|0)==(t|0)){q=(q|-2)+t|0;break}else{q=t+-1|0;break}else q=0;while(0);ba=2-N|0;W=q}ca=ba+1|0;q=W-s+ba|0;D=da+56|0;s=c[(D&p)>>2]|0;if((q|0)==(g|0))t=(d[(da&n)+6>>0]|0)+8|0;else{t=q<<1;Z=c[(da&p)+64>>2]|0;t=(d[(Z+t&n)>>0]<<8|d[(Z+(t|1)&n)>>0])&e[(da&o)+20>>1]}T=s+t|0;R=s+(t+1)|0;S=s+(t+2)|0;G=s+(t+3)|0;Z=d[(R&n)>>0]<<16|d[(T&n)>>0]<<24|d[(S&n)>>0]<<8|d[(G&n)>>0];c[(Ka&p)>>2]=Z;t=Da+(ba<<2)|0;Z=vp(aa,Z,t,0)|0;c[(Na&p)>>2]=Z;a:do if(!Z){w=da+22|0;z=da+32|0;A=da+20|0;B=da+64|0;C=aa+22|0;Q=aa+36|0;x=ba;s=0;while(1){k=c[(t&p)>>2]|0;s=s+1+(e[(k&o)+18>>1]|0)+(d[(k&n)+1>>0]|0)|0;k=x+-1|0;if(!x)break;y=k+W|0;t=a[(E&n)>>0]|0;if((y|0)==(e[(w&o)>>1]|0))if(!(t<<24>>24)){t=0;ea=52}else{Z=c[(z&p)>>2]|0;c[(Ba+(k<<2)&p)>>2]=Z;q=d[(Z&n)+1>>0]<<16|d[(Z&n)>>0]<<24|d[(Z&n)+2>>0]<<8|d[(Z&n)+3>>0];c[(Ka&p)>>2]=q;c[(Pa+(k<<2)&p)>>2]=(Lp(da,Z)|0)&65535;a[(E&n)>>0]=0}else ea=52;if((ea|0)==52){ea=0;q=c[(D&p)>>2]|0;u=y-(t&255)<<1;m=c[(B&p)>>2]|0;u=(d[(m+u&n)>>0]<<8|d[(m+(u|1)&n)>>0])&e[(A&o)>>1];m=q+u|0;g=Ba+(k<<2)|0;c[(g&p)>>2]=m;q=d[(q+u&n)+1>>0]<<16|d[(m&n)>>0]<<24|d[(q+u&n)+2>>0]<<8|d[(q+u&n)+3>>0];c[(Ka&p)>>2]=q;v=(Lp(da,m)|0)&65535;c[(Pa+(k<<2)&p)>>2]=v;if(b[(C&o)>>1]&4){if((v+u|0)>(c[(Q&p)>>2]|0)){k=x;ea=54;break}kw(h+u|0,m|0,v|0)|0;c[(g&p)>>2]=h+(m-(c[(D&p)>>2]|0));t=a[(E&n)>>0]|0}Ip(da,y-(t&255)|0,v,Na)}t=Da+(k<<2)|0;Z=vp(aa,q,t,0)|0;c[(Na&p)>>2]=Z;if(Z){ea=47;break a}else x=k}if((ea|0)==54){ea=0;c[(Qa&p)>>2]=59766;c[(Qa&p)+4>>2]=10788;bd(11,13600,Qa);c[(Na&p)>>2]=11;fw(Da|0,0,k<<2|0)|0;m=0;q=0;break}t=s+3&-4;Z=gi((c[(aa&p)+32>>2]|0)+(t*6|0)|0)|0;if(!Z){c[(Na&p)>>2]=7;m=Z;q=0;break}X=Z+(t<<2)|0;J=X+(t<<1)|0;M=c[(Da&p)>>2]|0;U=d[(M&n)+5>>0]<<2;Y=U&65535;V=a[(M&n)+3>>0]|0;F=V&255;if((ba|0)>-1){I=V<<24>>24!=0;K=M;q=0;L=0;s=0;while(1){H=e[(K&o)+18>>1]|0;P=a[(K&n)+1>>0]|0;D=P&255;E=D+H|0;if(!(P<<24>>24)){g=c[(K&p)+56>>2]|0;if((E|0)>0){y=e[(K&o)+20>>1]|0;x=e[(K&o)+14>>1]|0;w=0;v=s;while(1){P=(w<<1)+x|0;P=g+((d[(g+P&n)>>0]<<8|d[(g+P&n)+1>>0])&y)|0;c[(Z+(v<<2)&p)>>2]=P;b[(X+(v<<1)&o)>>1]=Lp(K,P)|0;w=w+1|0;if((w|0)==(H|0))break;else v=v+1|0}s=H+s|0}}else if((E|0)>0){z=K+56|0;x=K+20|0;w=K+64|0;v=0;g=s;while(1){y=v;C=D;b:while(1){while(1){A=C+-1|0;if((C|0)<=0){ea=72;break b}C=e[(K+(A<<1)&o)+22>>1]|0;if((C|0)>(y|0))C=A;else{B=C;C=A;break}}if((B|0)==(y|0)){ea=71;break}else y=y+-1|0}if((ea|0)==71){ea=0;y=c[(K+(C<<2)&p)+32>>2]|0}else if((ea|0)==72){ea=0;y=y<<1;P=c[(w&p)>>2]|0;y=(c[(z&p)>>2]|0)+((d[(P+y&n)>>0]<<8|d[(P+(y|1)&n)>>0])&e[(x&o)>>1])|0}c[(Z+(g<<2)&p)>>2]=y;b[(X+(g<<1)&o)>>1]=Lp(K,y)|0;v=v+1|0;if((v|0)==(E|0))break;else g=g+1|0}s=H+s+D|0}c[(Fa+(q<<2)&p)>>2]=s;if((q|0)>=(ba|0)|I)t=L;else{k=c[(Pa+(q<<2)&p)>>2]|0;u=X+(s<<1)|0;b[(u&o)>>1]=k;k=k&65535;t=k+L|0;kw(J+L|0,c[(Ba+(q<<2)&p)>>2]|0,k|0)|0;k=Z+(s<<2)|0;c[(k&p)>>2]=J+(L+U);m=(e[(u&o)>>1]|0)-U|0;b[(u&o)>>1]=m;do if(!(a[(K&n)+5>>0]|0)){P=c[(k&p)>>2]|0;O=(c[(K&p)+56>>2]|0)+8|0;O=d[(O&n)>>0]|d[(O&n)+1>>0]<<8|d[(O&n)+2>>0]<<16|d[(O&n)+3>>0]<<24;a[(P&n)>>0]=O;a[(P&n)+1>>0]=O>>8;a[(P&n)+2>>0]=O>>16;a[(P&n)+3>>0]=O>>24}else{if((m&65532)>>>0>=4)break;a[(J+t&n)>>0]=0;b[(u&o)>>1]=4;t=t+1|0}while(0);s=s+1|0}q=q+1|0;if((q|0)>=(ca|0))break;K=c[(Da+(q<<2)&p)>>2]|0;L=t}t=U+-12+(c[(Q&p)>>2]|0)|0;if((s|0)>0){u=I<<31>>31;m=0;k=0;q=0;do{g=q+2+(e[(X+(m<<1)&o)>>1]|0)|0;if((g|0)>(t|0)){c[(Pa+(k<<2)&p)>>2]=q;c[(Ea+(k<<2)&p)>>2]=m;if((k|0)>3){ea=91;break}else{m=m+u|0;k=k+1|0;q=0}}else q=g;m=m+1|0}while((m|0)<(s|0));if((ea|0)==91){ea=0;c[(Qa&p)>>2]=59904;c[(Qa&p)+4>>2]=10788;bd(11,13600,Qa);c[(Na&p)>>2]=11;m=Z;q=0;break}c[(Pa+(k<<2)&p)>>2]=q;c[(Ea+(k<<2)&p)>>2]=s;if((k|0)>0){E=(N|0)==0;m=k;do{v=Pa+(m<<2)|0;m=m+-1|0;g=Pa+(m<<2)|0;w=Ea+(m<<2)|0;A=c[(w&p)>>2]|0;D=c[(g&p)>>2]|0;u=q;while(1){z=A+-1|0;y=A-F|0;if(u){if(!E){q=D;break}B=b[(X+(y<<1)&o)>>1]|0;C=u+2|0;y=b[(X+(z<<1)&o)>>1]|0;x=D+-2|0;if(((B&65535)+C|0)>(x-(y&65535)|0)){q=D;break}}else{x=D+-2|0;C=2;B=b[(X+(y<<1)&o)>>1]|0;y=b[(X+(z<<1)&o)>>1]|0}c[(w&p)>>2]=z;A=z;D=x-(y&65535)|0;u=(B&65535)+C|0}c[(v&p)>>2]=u;c[(g&p)>>2]=q}while((m|0)>0);L=1;P=t;O=s}else{L=1;P=t;O=s}}else ea=93}else{t=U+-12+(c[(Q&p)>>2]|0)|0;s=0;ea=93}if((ea|0)==93){ea=0;c[(Pa&p)>>2]=0;c[(Ea&p)>>2]=s;L=0;P=t;k=0;O=s}if((c[(M&p)+72>>2]|0)>>>0<2){c[(Qa&p)>>2]=59963;c[(Qa&p)+4>>2]=10788;bd(11,13600,Qa);c[(Na&p)>>2]=11;m=Z;q=0;break}H=d[(c[(M&p)+56>>2]&n)>>0]|0;if((k|0)>-1){v=(N|0)!=0;g=aa+17|0;m=da+72|0;x=0;q=0;while(1){do if((x|0)<(ca|0)){M=Da+(x<<2)|0;N=c[(M&p)>>2]|0;c[(Ca+(x<<2)&p)>>2]=N;c[(Ja&p)>>2]=N;c[(M&p)>>2]=0;N=Gg(c[(N&p)+68>>2]|0)|0;c[(Na&p)>>2]=N;q=q+1|0;if(N){m=Z;break a}}else{N=ip(aa,Ja,Ka,v?1:c[(Ka&p)>>2]|0,0)|0;c[(Na&p)>>2]=N;if(N){m=Z;break a}t=c[(Ja&p)>>2]|0;pl(t,H);c[(Ca+(x<<2)&p)>>2]=t;q=q+1|0;c[(Fa+(x<<2)&p)>>2]=O;if(!(a[(g&n)>>0]|0))break;zp(aa,c[(t&p)+72>>2]|0,5,c[(m&p)>>2]|0,Na);if(c[(Na&p)>>2]|0){m=Z;break a}}while(0);if((x|0)<(k|0))x=x+1|0;else break}if((q|0)>0){s=0;c:do{N=c[(Ca+(s<<2)&p)>>2]|0;t=c[(N&p)+72>>2]|0;c[(za+(s<<2)&p)>>2]=t;c[(ya+(s<<2)&p)>>2]=t;b[(xa+(s<<1)&o)>>1]=b[((c[(N&p)+68>>2]|0)&o)+24>>1]|0;if((s|0)>0){m=0;do{if((c[(za+(m<<2)&p)>>2]|0)==(t|0)){ea=118;break c}m=m+1|0}while((m|0)<(s|0))}s=s+1|0}while((s|0)<(q|0));if((ea|0)==118){ea=0;c[(Qa&p)>>2]=60018;c[(Qa&p)+4>>2]=10788;bd(11,13600,Qa);c[(Na&p)>>2]=11;m=Z;break}u=(q|0)>1;m=aa+44|0;k=0;do{if(u){s=0;t=1;do{s=(c[(ya+(t<<2)&p)>>2]|0)>>>0<(c[(ya+(s<<2)&p)>>2]|0)>>>0?t:s;t=t+1|0}while((t|0)!=(q|0))}else s=0;N=ya+(s<<2)|0;t=c[(N&p)>>2]|0;c[(N&p)>>2]=-1;if((s|0)!=(k|0)){if((s|0)>(k|0)){M=c[((c[(Ca+(s<<2)&p)>>2]|0)&p)+68>>2]|0;N=s+1+(c[(m&p)>>2]|0)|0;b[(M&o)+24>>1]=0;Zp(M,N)}N=c[(Ca+(k<<2)&p)>>2]|0;M=c[(N&p)+68>>2]|0;b[(M&o)+24>>1]=b[(xa+(s<<1)&o)>>1]|0;Zp(M,t);c[(N&p)+72>>2]=t}k=k+1|0}while((k|0)!=(q|0));c[(Ka&p)>>2]=t;N=0}else N=1}else{N=1;q=0}K=q+-1|0;t=c[(Ca+(K<<2)&p)>>2]|0;M=c[(t&p)+72>>2]|0;a[(T&n)>>0]=M>>>24;a[(R&n)>>0]=M>>>16;a[(S&n)>>0]=M>>>8;a[(G&n)>>0]=M;if(!((H&8|0)!=0|(ca|0)==(q|0))){T=(c[(t&p)+56>>2]|0)+8|0;S=(c[((c[(((q|0)>(ca|0)?Ca:Da)+(ba<<2)&p)>>2]|0)&p)+56>>2]|0)+8|0;S=d[(S&n)>>0]|d[(S&n)+1>>0]<<8|d[(S&n)+2>>0]<<16|d[(S&n)+3>>0]<<24;a[(T&n)>>0]=S;a[(T&n)+1>>0]=S>>8;a[(T&n)+2>>0]=S>>16;a[(T&n)+3>>0]=S>>24}M=aa+17|0;if((a[(M&n)>>0]|0)!=0?(ra=c[(Ca&p)>>2]|0,sa=c[(Q&p)>>2]|0,L):0){D=V<<24>>24==0;B=D&1;A=Y<<16>>16==0;y=c[(ra&p)+56>>2]|0;x=(e[(ra&o)+18>>1]|0)+(d[(ra&n)+1>>0]|0)|0;z=0;w=0;s=0;u=ra;while(1){C=c[(Z+(z<<2)&p)>>2]|0;if((z|0)==(x|0)){s=s+1|0;if((s|0)<(q|0))t=Ca+(s<<2)|0;else t=Da+(s<<2)|0;x=c[(t&p)>>2]|0;y=c[(x&p)+56>>2]|0;x=z+B+(e[(x&o)+18>>1]|0)+(d[(x&n)+1>>0]|0)|0}if((z|0)==(c[(Ea+(w<<2)&p)>>2]|0)){t=w+1|0;u=c[(Ca+(t<<2)&p)>>2]|0;if(!D)ea=142}else{t=w;ea=142}do if((ea|0)==142){ea=0;if((s|0)<(q|0)?(C>>>0>=y>>>0?(c[(u&p)+72>>2]|0)==(c[(za+(s<<2)&p)>>2]|0):0)&C>>>0<(y+sa|0)>>>0:0)break;if(A)zp(aa,d[(C&n)+1>>0]<<16|d[(C&n)>>0]<<24|d[(C&n)+2>>0]<<8|d[(C&n)+3>>0],5,c[(u&p)+72>>2]|0,Na);if((e[(X+(z<<1)&o)>>1]|0)<=(e[(u&o)+12>>1]|0))break;Fq(u,C,Na)}while(0);z=z+1|0;if((z|0)==(O|0))break;else w=t}}if((K|0)>0){v=V<<24>>24==0;x=0;y=0;while(1){w=c[(Ca+(x<<2)&p)>>2]|0;s=c[(Ea+(x<<2)&p)>>2]|0;m=c[(Z+(s<<2)&p)>>2]|0;k=b[(X+(s<<1)&o)>>1]|0;t=(k&65535)+U|0;u=h+y|0;do if(!(a[(w&n)+5>>0]|0)){s=(c[(w&p)+56>>2]|0)+8|0;T=d[(m&n)>>0]|d[(m&n)+1>>0]<<8|d[(m&n)+2>>0]<<16|d[(m&n)+3>>0]<<24;a[(s&n)>>0]=T;a[(s&n)+1>>0]=T>>8;a[(s&n)+2>>0]=T>>16;a[(s&n)+3>>0]=T>>24;s=u}else{if(!v){rp(w,c[(Z+(s+-1<<2)&p)>>2]|0,Ga);t=Ga;m=u;s=0;t=(pm(h+(y+4)|0,c[(t&p)>>2]|0,c[(t&p)+4>>2]|0)|0)+4|0;break}g=m+-4|0;if(k<<16>>16!=4){m=g;s=u;break}m=g;s=u;t=(Lp(da,g)|0)&65535}while(0);Jp(da,x+W|0,m,t,s,c[(w&p)+72>>2]|0,Na);if(c[(Na&p)>>2]|0){m=Z;break a}x=x+1|0;if((x|0)>=(K|0))break;else y=t+y|0}}t=1-q|0;if((t|0)<(q|0)){L=c[(Ea&p)>>2]|0;K=V<<24>>24==0&1;do{I=(t|0)<0?0-t|0:t;J=Aa+I|0;do if(!(a[(J&n)>>0]|0)){if((t|0)<=-1?(W=I+-1|0,(c[(Fa+(W<<2)&p)>>2]|0)<(c[(Ea+(W<<2)&p)>>2]|0)):0)break;if(!I){H=0;m=0;G=L}else{s=I+-1|0;if((I|0)<(ca|0))m=(c[(Fa+(s<<2)&p)>>2]|0)+K|0;else m=O;G=(c[(Ea+(s<<2)&p)>>2]|0)+K|0;H=G;G=(c[(Ea+(I<<2)&p)>>2]|0)-G|0}E=c[(Ca+(I<<2)&p)>>2]|0;v=c[(E&p)+56>>2]|0;g=d[(E&n)+6>>0]|0;k=E+64|0;s=(c[(k&p)>>2]|0)+(G<<1)|0;u=E+18|0;y=e[(u&o)>>1]|0;F=E+1|0;x=y+m+(d[(F&n)>>0]|0)|0;w=G+H|0;if((m|0)<(H|0)){W=Iq(E,H-m|0,Z+(m<<2)|0,X+(m<<1)|0)|0;V=c[(k&p)>>2]|0;lw(V|0,V+(W<<1)|0,y<<1|0)|0;y=y-W|0}if((x|0)>(w|0))y=y-(Iq(E,x-w|0,Z+(w<<2)|0,X+(w<<1)|0)|0)|0;A=v+(g+5)|0;z=v+(g+6)|0;W=v+(((d[(A&n)>>0]<<8|d[(z&n)>>0])+65535&65535)+1)|0;c[(Qa&p)>>2]=W;d:do if(W>>>0>>0)ea=181;else{if((H|0)<(m|0)){x=m-H|0;x=(x|0)>(G|0)?G:x;W=c[(k&p)>>2]|0;lw(W+(x<<1)|0,W|0,y<<1|0)|0;if(Jq(E,s,Qa,W,x,Z+(H<<2)|0,X+(H<<1)|0)|0){ea=181;break}y=y+x|0}x=a[(F&n)>>0]|0;if(x<<24>>24){D=0;do{C=(e[(E+(D<<1)&o)+22>>1]|0)+m|0;B=C-H|0;if((B|0)>-1&(B|0)<(G|0)){V=B<<1;U=c[(k&p)>>2]|0;W=U+V|0;lw(U+(V+2)|0,W|0,y-B<<1|0)|0;if(Jq(E,s,Qa,W,1,Z+(C<<2)|0,X+(C<<1)|0)|0){ea=181;break d}x=a[(F&n)>>0]|0;y=y+1|0}D=D+1|0}while((D|0)<(x&255|0))}W=y+H|0;if(Jq(E,s,Qa,(c[(k&p)>>2]|0)+(y<<1)|0,G-y|0,Z+(W<<2)|0,X+(W<<1)|0)|0){ea=181;break}W=G&65535;b[(u&o)>>1]=W;a[(F&n)>>0]=0;a[(v+g&n)+3>>0]=(W&65535)>>>8;a[(v+g&n)+4>>0]=b[(u&o)>>1];W=(c[(Qa&p)>>2]|0)-v|0;a[(A&n)>>0]=W>>>8;a[(z&n)>>0]=W}while(0);if((ea|0)==181){ea=0;Hq(E,G,Z+(H<<2)|0,X+(H<<1)|0)}a[(J&n)>>0]=1;b[(E&o)+16>>1]=P-(c[(Pa+(I<<2)&p)>>2]|0)}while(0);t=t+1|0}while((t|0)!=(q|0))}do if(_){if(b[($&o)>>1]|0){ea=191;break}m=c[(Ca&p)>>2]|0;if((d[(da&n)+6>>0]|0)>>>0>(e[(m&o)+16>>1]|0)>>>0){ea=191;break}c[(Na&p)>>2]=Eq(m)|0;Gq(m,da,Na);if(c[(Na&p)>>2]|0)break;c[(Na&p)>>2]=Ym(c[(m&p)+52>>2]|0,m,c[(m&p)+72>>2]|0)|0}else ea=191;while(0);do if((ea|0)==191){ea=0;if((a[(M&n)>>0]|0)==0|Y<<16>>16!=0|N)break;else m=0;do{$=c[(Ca+(m<<2)&p)>>2]|0;_=c[($&p)+56>>2]|0;zp(aa,d[(_&n)+9>>0]<<16|d[(_&n)+8>>0]<<24|d[(_&n)+10>>0]<<8|d[(_&n)+11>>0],5,c[($&p)+72>>2]|0,Na);m=m+1|0}while((m|0)!=(q|0))}while(0);if((q|0)>=(ca|0)){m=Z;break}m=c[(Na&p)>>2]|0;g=q;do{k=c[(Da+(g<<2)&p)>>2]|0;if(!m){m=Ym(c[(k&p)+52>>2]|0,k,c[(k&p)+72>>2]|0)|0;c[(Na&p)>>2]=m}g=g+1|0}while((g|0)!=(ca|0));m=Z}else{k=ba;ea=47}while(0);if((ea|0)==47){ea=0;fw(Da|0,0,(k<<2)+4|0)|0;m=0;q=0}hi(m);if((ba|0)>-1){k=0;do{m=c[(Da+(k<<2)&p)>>2]|0;if(m)Bg(c[(m&p)+68>>2]|0);k=k+1|0}while((k|0)<(ca|0))}if((q|0)>0){k=0;do{g=c[(Ca+(k<<2)&p)>>2]|0;if(g)Bg(c[(g&p)+68>>2]|0);k=k+1|0}while((k|0)!=(q|0))}g=c[(Na&p)>>2]|0}if(ga)$k(ga)}else h=ga;while(0);a[(r&n)>>0]=0;if(l)Bg(c[(l&p)+68>>2]|0);l=(b[(qa&o)>>1]|0)+-1<<16>>16;b[(qa&o)>>1]=l;if(g)break;else ga=h}if(h)$k(h);i=Ra;return g|0}function Lp(b,f){b=b|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=d[(b&n)+7>>0]|0;h=f+g|0;do if(!(a[(b&n)+4>>0]|0)){j=a[(h&n)>>0]|0;i=j&255;if(j<<24>>24<0){j=f+(g+9)|0;g=i&127;do{h=h+1|0;i=a[(h&n)>>0]|0;g=i&127|g<<7}while(i<<24>>24<0&h>>>0>>0)}else g=i;i=h+1|0;if(a[(b&n)+2>>0]|0){k=h+10|0;j=i;while(1){i=h+2|0;if((a[(j&n)>>0]|0)<0&i>>>0>>0){h=j;j=i}else break}}h=e[(b&o)+10>>1]|0;if(g>>>0>h>>>0){j=e[(b&o)+12>>1]|0;g=(((g-j|0)>>>0)%(((c[((c[(b&p)+52>>2]|0)&p)+36>>2]|0)+-4|0)>>>0)|0)+j|0;g=(i-f&65535)+4+(g>>>0>h>>>0?j:g)|0;break}else{g=i-f+g|0;g=g>>>0<4?4:g;break}}else{i=f+(g+9)|0;while(1){g=h+1|0;if((a[(h&n)>>0]|0)<0&g>>>0>>0)h=g;else break}g=g-f|0}while(0);return g&65535|0}function Mp(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))fa();s=u+4|0;r=u;q=u+8|0;c[(s&p)>>2]=0;if(a[(b&n)+17>>0]|0){h=((c[2514]|0)>>>0)/((c[(b&p)+32>>2]|0)>>>0)|0;m=b+36|0;o=e;while(1){l=o+1|0;if(l>>>0<2)k=0;else{k=o+-1|0;k=k-((k>>>0)%(((((c[(m&p)>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(h|0)?3:2)+k|0}if((k|0)==(l|0)|(o|0)==(h|0))o=l;else break}if(l>>>0<=(c[(b&p)+44>>2]|0)>>>0){o=hp(b,l,q,r)|0;m=(o|0)==0;k=m&(a[(q&n)>>0]|0)==4&(c[(r&p)>>2]|0)==(e|0);l=k?l:0;if(k|m^1){h=0;k=k?101:o}else t=8}else{l=0;t=8}}else{l=0;t=8}if((t|0)==8){k=dl(b,e,s,(f|0)==0?2:0)|0;h=c[(s&p)>>2]|0;if(!k){l=c[(h&p)+56>>2]|0;l=d[(l&n)+1>>0]<<16|d[(l&n)>>0]<<24|d[(l&n)+2>>0]<<8|d[(l&n)+3>>0];k=0}}c[(g&p)>>2]=l;if(!f){if(h)Bg(c[(h&p)+68>>2]|0)}else c[(f&p)>>2]=h;i=u;return ((k|0)==101?0:k)|0}function Np(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;c[(h&p)>>2]=0;f=(b|0)!=0;a:do if(d)if(f){f=h;while(1){g=d+8|0;while(1){if((Wp(a,b+8|0,c[(b&p)>>2]|0,g,c[(d&p)>>2]|0)|0)>=1)break;c[(f&p)>>2]=b;f=b+4|0;b=c[(f&p)>>2]|0;if(!b){b=0;g=0;break a}else g=0}c[(f&p)>>2]=d;f=d+4|0;d=c[(f&p)>>2]|0;if(!d){d=0;g=1;break a}if(!b){b=0;g=0;break}}}else{g=f;f=h}else{d=0;g=f;f=h}while(0);c[(f&p)>>2]=g?b:d;c[(e&p)>>2]=c[(h&p)>>2];i=k;return}function Op(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();f=g+8|0;e=g;d=c[2252]|0;if((d|0)!=0?(lc[d&127](202)|0)!=0:0)d=3338;else{d=mp(c[(a&p)>>2]|0,0,b,4126,f)|0;c[(f&p)>>2]=d;if(!d){d=e;c[(d&p)>>2]=0;c[(d&p)+4>>2]=0;d=c[(b&p)>>2]|0;ac[c[((c[(d&p)>>2]|0)&p)+40>>2]&63](d,18,e)|0;d=c[(f&p)>>2]|0}}i=g;return d|0}function Pp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=b+0|0;h=g+40|0;do{c[(g&p)>>2]=0;g=g+4|0}while((g|0)<(h|0));g=((d|0)<0)<<31>>31;h=qg(d,g)|0;c[(b&p)+4>>2]=h;if(!h)c[(b&p)>>2]=7;else{h=rw(e|0,f|0,d|0,g|0)|0;c[(b&p)+12>>2]=h;c[(b&p)+16>>2]=h;h=dw(e|0,f|0,h|0,((h|0)<0)<<31>>31|0)|0;g=b+24|0;c[(g&p)>>2]=h;c[(g&p)+4>>2]=G;c[(b&p)+8>>2]=d;c[(b&p)+32>>2]=a}return}function Qp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0;a:do if((d|0)>0){f=a+8|0;h=a+16|0;i=a+4|0;j=a+32|0;k=a+12|0;l=a+24|0;m=d;do{if(c[(a&p)>>2]|0)break a;g=c[(h&p)>>2]|0;e=(c[(f&p)>>2]|0)-g|0;e=(m|0)>(e|0)?e:m;kw((c[(i&p)>>2]|0)+g|0,b+(d-m)|0,e|0)|0;g=(c[(h&p)>>2]|0)+e|0;c[(h&p)>>2]=g;if((g|0)==(c[(f&p)>>2]|0)){r=c[(j&p)>>2]|0;o=c[(k&p)>>2]|0;q=(c[(i&p)>>2]|0)+o|0;n=l;n=jw(c[(n&p)>>2]|0,c[(n&p)+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;c[(a&p)>>2]=tc[c[((c[(r&p)>>2]|0)&p)+12>>2]&31](r,q,g-o|0,n,G)|0;c[(h&p)>>2]=0;c[(k&p)>>2]=0;n=c[(f&p)>>2]|0;g=l;n=jw(c[(g&p)>>2]|0,c[(g&p)+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;g=l;c[(g&p)>>2]=n;c[(g&p)+4>>2]=G}m=m-e|0}while((m|0)>0)}while(0);return}function Rp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;if(((c[(a&p)>>2]|0)==0?(e=c[(f&p)>>2]|0,(e|0)!=0):0)?(d=c[(a&p)+16>>2]|0,g=c[(a&p)+12>>2]|0,(d|0)>(g|0)):0){i=c[(a&p)+32>>2]|0;h=a+24|0;h=jw(c[(h&p)>>2]|0,c[(h&p)+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;c[(a&p)>>2]=tc[c[((c[(i&p)>>2]|0)&p)+12>>2]&31](i,e+g|0,d-g|0,h,G)|0}e=a+24|0;d=c[(a&p)+16>>2]|0;e=jw(d|0,((d|0)<0)<<31>>31|0,c[(e&p)>>2]|0,c[(e&p)+4>>2]|0)|0;d=b;c[(d&p)>>2]=e;c[(d&p)+4>>2]=G;Wc(c[(f&p)>>2]|0);f=c[(a&p)>>2]|0;d=a+0|0;e=d+40|0;do{c[(d&p)>>2]=0;d=d+4|0}while((d|0)<(e|0));return f|0}function Sp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[2252]|0;if((g|0)!=0?(lc[g&127](201)|0)!=0:0)g=266;else{h=b+44|0;if(c[(h&p)>>2]|0)c[(h&p)>>2]=0;n=b;c[(n&p)>>2]=e;c[(n&p)+4>>2]=f;n=d+8|0;l=c[(n&p)>>2]|0;n=c[(n&p)+4>>2]|0;j=b+8|0;k=j;c[(k&p)>>2]=l;c[(k&p)+4>>2]=n;d=c[(d&p)>>2]|0;k=b+24|0;c[(k&p)>>2]=d;a=a+8|0;g=c[(a&p)>>2]|0;i=c[((c[(g&p)+24>>2]|0)&p)+136>>2]|0;m=((i|0)<0)<<31>>31;if(!((n|0)>(m|0)|(n|0)==(m|0)&l>>>0>i>>>0)?(c[(c[(d&p)>>2]&p)>>2]|0)>2:0){c[(h&p)>>2]=0;g=c[(a&p)>>2]|0}i=c[(g&p)+12>>2]|0;d=((i|0)<0)<<31>>31;f=rw(e|0,f|0,i|0,d|0)|0;a=b+36|0;g=c[(a&p)>>2]|0;if(!g){g=qg(i,d)|0;c[(a&p)>>2]=g;c[(b&p)+40>>2]=i;e=g;g=(g|0)==0?7:0}else{e=g;g=0}if((g|0)==0&(f|0)!=0){g=i-f|0;i=b;h=c[(i&p)>>2]|0;i=c[(i&p)+4>>2]|0;b=jw(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;l=G;d=j;a=c[(d&p)>>2]|0;d=c[(d&p)+4>>2]|0;if((l|0)>(d|0)|(l|0)==(d|0)&b>>>0>a>>>0)g=dw(a|0,d|0,h|0,i|0)|0;k=c[(k&p)>>2]|0;g=tc[c[((c[(k&p)>>2]|0)&p)+8>>2]&31](k,e+f|0,g,h,i)|0}}return g|0}function Tp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+32|0;if((i|0)>=(j|0))fa();k=l+8|0;h=l;f=c[(b&p)+44>>2]|0;e=b;g=c[(e&p)>>2]|0;a:do if(!f){f=c[(b&p)+40>>2]|0;e=rw(g|0,c[(e&p)+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;if((e|0)!=0&(f-e|0)>8){f=(sp((c[(b&p)+36>>2]|0)+e|0,d)|0)&255;e=b;f=jw(c[(e&p)>>2]|0,c[(e&p)+4>>2]|0,f|0,0)|0;e=b;c[(e&p)>>2]=f;c[(e&p)+4>>2]=G;e=0;break}else f=0;while(1){e=Kq(b,1,h)|0;if(e)break a;e=a[(c[(h&p)>>2]&n)>>0]|0;a[(k+(f&15)&n)>>0]=e;if(e<<24>>24<0)f=f+1|0;else break}sp(k,d)|0;e=0}else{f=(sp(f+g|0,d)|0)&255;e=b;f=jw(c[(e&p)>>2]|0,c[(e&p)+4>>2]|0,f|0,0)|0;e=b;c[(e&p)>>2]=f;c[(e&p)+4>>2]=G;e=0}while(0);i=l;return e|0}function Up(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();g=k;d=g;c[(d&p)>>2]=0;c[(d&p)+4>>2]=0;d=a;f=c[(d&p)+4>>2]|0;b=a+8|0;e=c[(b&p)+4>>2]|0;do if((f|0)<(e|0)|((f|0)==(e|0)?(c[(d&p)>>2]|0)>>>0<(c[(b&p)>>2]|0)>>>0:0))h=9;else{d=c[(a&p)+48>>2]|0;if(d){b=Lq(d)|0;l=d+32|0;f=d+48|0;c[(l&p)>>2]=c[(f&p)>>2];c[(l&p)+4>>2]=c[(f&p)+4>>2];c[(l&p)+8>>2]=c[(f&p)+8>>2];c[(l&p)+12>>2]=c[(f&p)+12>>2];l=d+40|0;f=d+8|0;e=c[(f&p)>>2]|0;f=c[(f&p)+4>>2]|0;if((c[(l&p)>>2]|0)==(e|0)?(c[(l&p)+4>>2]|0)==(f|0):0)c[(d&p)+20>>2]=1;if(!b)if(!(c[(d&p)+20>>2]|0)){b=Sp(c[(d&p)>>2]|0,a,d+32|0,e,f)|0;if(!b){h=9;break}else break}else b=0}else b=0;Vp(a)}while(0);if((h|0)==9){b=Tp(a,g)|0;if(!b){b=c[(g&p)>>2]|0;c[(a&p)+20>>2]=b;b=Kq(a,b,a+32|0)|0}}i=k;return b|0}function Vp(a){a=a|0;var b=0;Wc(c[(a&p)+28>>2]|0);Wc(c[(a&p)+36>>2]|0);Sm(c[(a&p)+48>>2]|0);a=a+0|0;b=a+56|0;do{c[(a&p)>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Wp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[(a&p)+12>>2]|0;if(e)Gm(c[((c[(a&p)+8>>2]|0)&p)+28>>2]|0,f,e,g);return Km(d,b,g,0)|0}function Xp(f,g,h,k){f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;if((i|0)>=(j|0))fa();m=z;l=z+8|0;v=z+12|0;do if((c[(f&p)+44>>2]|0)>>>0>=g>>>0){g=vp(f,g,l,0)|0;if(!g){x=c[(l&p)>>2]|0;w=x+9|0;a:do if(!(a[(w&n)>>0]|0)){a[(w&n)>>0]=1;t=d[(x&n)+6>>0]|0;r=x+18|0;l=b[(r&o)>>1]|0;if(!(l<<16>>16)){l=l&65535;g=x+5|0}else{q=0;while(1){m=c[(x&p)+56>>2]|0;l=q<<1;g=c[(x&p)+64>>2]|0;l=(d[(g+l&n)>>0]<<8|d[(g+(l|1)&n)>>0])&e[(x&o)+20>>1];g=m+l|0;s=x+5|0;if((a[(s&n)>>0]|0)==0?(u=Xp(f,d[(m+l&n)+1>>0]<<16|d[(g&n)>>0]<<24|d[(m+l&n)+2>>0]<<8|d[(m+l&n)+3>>0],1,k)|0,(u|0)!=0):0){g=u;y=21;break a}g=Hp(x,g,v)|0;q=q+1|0;if(g){y=21;break a}l=e[(r&o)>>1]|0;if((q|0)>=(l|0)){g=s;break}}}if(!(a[(g&n)>>0]|0)){g=c[(x&p)+56>>2]|0;g=Xp(f,d[(g+t&n)+9>>0]<<16|d[(g+t&n)+8>>0]<<24|d[(g+t&n)+10>>0]<<8|d[(g+t&n)+11>>0],1,k)|0;if(!g)y=16}else if(!k)y=16;else{c[(k&p)>>2]=(c[(k&p)>>2]|0)+l;y=16}if((y|0)==16){if(h){g=Ym(c[(x&p)+52>>2]|0,x,c[(x&p)+72>>2]|0)|0;y=21;break}g=Gg(c[(x&p)+68>>2]|0)|0;if(!g){pl(x,d[((c[(x&p)+56>>2]|0)+t&n)>>0]|8);g=0;y=21;break}}a[(w&n)>>0]=0}else{c[(m&p)>>2]=60971;c[(m&p)+4>>2]=10788;bd(11,13600,m);g=11;y=21}while(0);if((y|0)==21){a[(w&n)>>0]=0;if(!x)break}Bg(c[(x&p)+68>>2]|0)}}else{c[(m&p)>>2]=60966;c[(m&p)+4>>2]=10788;bd(11,13600,m);g=11}while(0);i=z;return g|0}function Yp(b,d){b=b|0;d=d|0;var e=0,f=0;f=(c[(b&p)>>2]|0)+204|0;e=ac[c[8876>>2]&63](c[((c[(f&p)>>2]|0)&p)+40>>2]|0,d,0)|0;e=il(c[(f&p)>>2]|0,d,e)|0;if(!e)e=0;else{f=c[(e&p)+8>>2]|0;c[(f&p)+56>>2]=c[(e&p)+4>>2];c[(f&p)+68>>2]=e;c[(f&p)+52>>2]=b;c[(f&p)+72>>2]=d;a[(f&n)+6>>0]=(d|0)==1?100:0;e=f}return e|0}function Zp(a,d){a=a|0;d=d|0;var e=0;e=a+20|0;qc[c[8884>>2]&15](c[((c[(a&p)+28>>2]|0)&p)+40>>2]|0,c[(a&p)>>2]|0,c[(e&p)>>2]|0,d);c[(e&p)>>2]=d;if((b[(a&o)+24>>1]&6)==6)Qo(a,3);return}function _p(f){f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;if((i|0)>=(j|0))fa();x=y;u=c[(f&p)+52>>2]|0;v=a[(f&n)>>0]|0;w=c[(f&p)+72>>2]|0;t=$p(f)|0;c[(x&p)>>2]=t;if(!t){t=b[(f&o)+18>>1]|0;s=t&65535;if(!(t<<16>>16))g=f+5|0;else{h=f+56|0;k=f+20|0;l=f+64|0;g=f+5|0;t=0;do{m=c[(h&p)>>2]|0;q=t<<1;r=c[(l&p)>>2]|0;q=(d[(r+q&n)>>0]<<8|d[(r+(q|1)&n)>>0])&e[(k&o)>>1];r=m+q|0;Fq(f,r,x);if(!(a[(g&n)>>0]|0))zp(u,d[(m+q&n)+1>>0]<<16|d[(r&n)>>0]<<24|d[(m+q&n)+2>>0]<<8|d[(m+q&n)+3>>0],5,w,x);t=t+1|0}while((t|0)<(s|0))}if(!(a[(g&n)>>0]|0)){t=d[(f&n)+6>>0]|0;s=c[(f&p)+56>>2]|0;zp(u,d[(s+t&n)+9>>0]<<16|d[(s+t&n)+8>>0]<<24|d[(s+t&n)+10>>0]<<8|d[(s+t&n)+11>>0],5,w,x)}}a[(f&n)>>0]=v;i=y;return c[(x&p)>>2]|0}function $p(e){e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;if((i|0)>=(j|0))fa();x=y;a:do if(!(a[(e&n)>>0]|0)){f=c[(e&p)+52>>2]|0;u=c[(e&p)+56>>2]|0;l=d[(e&n)+6>>0]|0;if(Ro(e,d[(u+l&n)>>0]|0)|0){c[(x&p)>>2]=54562;c[(x&p)+4>>2]=10788;bd(11,13600,x);f=11;break}q=c[(f&p)+32>>2]|0;b[(e&o)+20>>1]=q+65535;a[(e&n)+1>>0]=0;t=c[(f&p)+36>>2]|0;f=l+8+(d[(e&n)+7>>0]|0)|0;b[(e&o)+14>>1]=f;c[(e&p)+60>>2]=u+t;f=f&65535;c[(e&p)+64>>2]=u+f;k=a[(u+l&n)+5>>0]|0;h=a[(u+l&n)+6>>0]|0;g=d[(u+l&n)+3>>0]<<8|d[(u+l&n)+4>>0];b[(e&o)+18>>1]=g;if(g>>>0>(((q+-8|0)>>>0)/6|0)>>>0){c[(x&p)>>2]=54579;c[(x&p)+4>>2]=10788;bd(11,13600,x);f=11;break}q=(g<<1)+f|0;m=t+-4|0;g=d[(u+l&n)+1>>0]<<8|d[(u+l&n)+2>>0];f=(((k&255)<<8|h&255)+65535&65535)+1+(d[(u+l&n)+7>>0]|0)|0;do if(g){while(1){if((g|0)<(q|0)|(g|0)>(m|0)){w=8;break}h=d[(u+g&n)>>0]<<8|d[(u+g&n)+1>>0];k=d[(u+g&n)+2>>0]<<8|d[(u+g&n)+3>>0];g=k+g|0;if(!h){r=k;s=g;v=f;w=12;break}if((h|0)<=(g+3|0)|(g|0)>(t|0))break;g=h;f=k+f|0}if((w|0)==8){c[(x&p)>>2]=54634;c[(x&p)+4>>2]=10788;bd(11,13600,x);f=11;break a}if((w|0)==12?(s|0)<=(t|0):0){f=r+v|0;break}c[(x&p)>>2]=54641;c[(x&p)+4>>2]=10788;bd(11,13600,x);f=11;break a}while(0);if((f|0)>(t|0)){c[(x&p)>>2]=54655;c[(x&p)+4>>2]=10788;bd(11,13600,x);f=11;break}else{b[(e&o)+16>>1]=f-q;a[(e&n)>>0]=1;f=0;break}}else f=0;while(0);i=y;return f|0}function aq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();k=l;f=c[(b&p)>>2]|0;g=f+65|0;if(!(a[(g&n)>>0]|0)){if((c[(f&p)+24>>2]&65536|0)==0?(h=b+4|0,m=c[(h&p)>>2]|0,c[(k&p)>>2]=(d|0)==0?13552:d,dh(m,f,13560,k),(e|0)!=0):0){d=c[(c[(h&p)>>2]&p)>>2]|0;c[(k&p)>>2]=d;c[(k&p)+4>>2]=e;f=Mq(f,d,0,k)|0;c[(c[(h&p)>>2]&p)>>2]=f}if(!(a[(g&n)>>0]|0)){c[(k&p)>>2]=105209;c[(k&p)+4>>2]=10788;bd(11,13600,k);f=11}else f=7}else f=7;c[(b&p)+12>>2]=f;i=l;return}function bq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))fa();n=o;m=a+20|0;a:do if((c[(m&p)>>2]|0)>0){h=a+16|0;k=(d|0)==0;l=0;a=0;do{f=(l|0)<2^l;g=c[(h&p)>>2]|0;e=c[(g+(f<<4)&p)+12>>2]|0;if(!(!k?(dd(d,c[(g+(f<<4)&p)>>2]|0)|0)!=0:0)){a=bn(e+24|0,b,n)|0;if(a){a=c[(a&p)+8>>2]|0;if(a)break a}else a=0}l=l+1|0}while((l|0)<(c[(m&p)>>2]|0))}else a=0;while(0);i=o;return a|0}function cq(d){d=d|0;var f=0,g=0,h=0,i=0;i=c[(d&p)+8>>2]|0;h=d+46|0;g=b[(h&o)>>1]|0;g=(g&65535)>5?5:g&65535;f=b[((c[(d&p)+12>>2]|0)&o)+28>>1]|0;b[(i&o)>>1]=f<<16>>16<33?33:f;kw(i+2|0,13512,g<<1|0)|0;f=e[(h&o)>>1]|0;if(g>>>0>>0)do{g=g+1|0;b[(i+(g<<1)&o)>>1]=23;f=e[(h&o)>>1]|0}while((g|0)<(f|0));if(a[(d&n)+50>>0]|0)b[(i+(f<<1)&o)>>1]=0;return}function dq(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;if((i|0)>=(j|0))fa();q=s;a:do if((((g|0)!=0?(l=c[(g&p)>>2]|0,(l|0)!=0):0)?(r=g+8|0,(c[(r&p)>>2]|0)!=0):0)?(k=d+4|0,t=_h(c[(d&p)>>2]|0,l,c[(k&p)>>2]|0)|0,(t|0)!=0):0){h=c[(g&p)+4>>2]|0;b:do if(!h)m=11;else{if(!(dd(c[(g&p)>>2]|0,h)|0)){k=c[(t&p)+8>>2]|0;if(!k){m=11;break}while(1){l=a[(k&n)+51>>0]|0;if((l&3)==2)break;k=c[(k&p)+20>>2]|0;if(!k){m=11;break b}}h=c[(r&p)>>2]|0;f=k}else{f=bq(c[(d&p)>>2]|0,h,c[(k&p)>>2]|0)|0;k=c[(r&p)>>2]|0;if(!f)break;l=a[(f&n)+51>>0]|0;h=k}r=(e[(f&o)+46>>1]|0)+1|0;a[(f&n)+51>>0]=l&-5;k=f+8|0;Nq(h,r,c[(k&p)>>2]|0,f);if(c[(f&p)+36>>2]|0)break a;b[(t&o)+28>>1]=b[(c[(k&p)>>2]&o)>>1]|0;break a}while(0);if((m|0)==11)k=c[(r&p)>>2]|0;r=t+42|0;m=q+44|0;b[(m&o)>>1]=b[(r&o)>>1]|0;Nq(k,1,t+28|0,q);b[(r&o)>>1]=b[(m&o)>>1]|0}while(0);i=s;return 0}function eq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();k=l;do if(e){if((c[(b&p)+12>>2]|0)>>>0>>0){c[(k&p)>>2]=e;fn(b,44408,k);f=1;break}g=(c[(b&p)+8>>2]|0)+(e>>>3)|0;h=d[(g&n)>>0]|0;f=1<<(e&7);if(!(h&f)){a[(g&n)>>0]=h|f;f=0;break}else{c[(k&p)>>2]=e;fn(b,44432,k);f=1;break}}else f=1;while(0);i=l;return f|0}function fq(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[(a&p)>>2]|0;do if(d){if((b|0)==1){b=d+8|0;c[(a&p)>>2]=c[(b&p)>>2];c[(b&p)>>2]=0;c[(d&p)+12>>2]=0;break}b=b+-1|0;d=fq(a,b)|0;e=c[(a&p)>>2]|0;if(e){c[(e&p)+12>>2]=d;d=e+8|0;c[(a&p)>>2]=c[(d&p)>>2];c[(d&p)>>2]=fq(a,b)|0;return e|0}}else d=0;while(0);return d|0}function gq(b,d){b=b|0;d=d|0;var e=0;if((a[(b&n)+43>>0]|0)==2){e=b+24|0;if((c[(e&p)>>2]|0)>0){d=b+32|0;b=0;do{Wc(c[((c[(d&p)>>2]|0)+(b<<2)&p)>>2]|0);c[((c[(d&p)>>2]|0)+(b<<2)&p)>>2]=0;b=b+1|0}while((b|0)<(c[(e&p)>>2]|0))}}else{b=c[(b&p)+4>>2]|0;rc[c[((c[(b&p)>>2]|0)&p)+64>>2]&127](b,d)|0}return}function hq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;i=i+16|0;if((i|0)>=(j|0))fa();b=Ng(b)|0;if(b)dh(c,a,Se(a)|0,d);i=d;return b|0}function iq(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;f=c[(a&p)>>2]|0;g=a+16|0;h=a+84|0;ch(c[(g&p)>>2]|0,(e[(h&o)>>1]|0)<<1);mg(f,c[(g&p)>>2]|0);b[(h&o)>>1]=d;h=d*80|0;f=mh(f,h,0)|0;if(f){fw(f|0,0,h|0)|0;c[(g&p)>>2]=f;if((d|0)>0){h=c[(a&p)>>2]|0;g=d<<1;while(1){g=g+-1|0;b[(f&o)+8>>1]=1;c[(f&p)+32>>2]=h;if((g|0)<=0)break;else f=f+40|0}}}else c[(g&p)>>2]=0;return}function jq(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;if(!(a[((c[(b&p)>>2]|0)&n)+65>>0]|0)){d=(ca(e[(b&o)+84>>1]|0,f)|0)+d|0;Xg((c[(b&p)+16>>2]|0)+(d*40|0)|0,g,-1,1,h)|0}return}function kq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();l=m;k=c[(d&p)>>2]|0;h=k+1|0;c[(d&p)>>2]=h;if((k|0)>98){f=d+8|0;h=c[(f&p)>>2]|0;c[(d&p)>>2]=k;do Pn(d);while((c[(d&p)>>2]|0)>-1);th(h,37160,l);c[(f&p)>>2]=h}else{b[(d+(h<<4)&o)+12>>1]=e;a[(d+(h<<4)&n)+14>>0]=f;f=d+(h<<4)+16|0;c[(f&p)>>2]=c[(g&p)>>2];c[(f&p)+4>>2]=c[(g&p)+4>>2];c[(f&p)+8>>2]=c[(g&p)+8>>2]}i=m;return}function lq(a,b,d){a=a|0;b=b|0;d=d|0;a=c[(a&p)+8>>2]|0;switch(b&255|0){case 228:case 221:case 220:case 210:case 209:case 208:case 205:case 203:case 200:case 188:case 179:{Nk(c[(a&p)>>2]|0,c[(d&p)>>2]|0);break}case 239:case 234:{Fk(c[(a&p)>>2]|0,c[(d&p)>>2]|0);break}case 236:{Hk(c[(a&p)>>2]|0,c[(d&p)+4>>2]|0);break}case 243:case 238:case 229:case 227:case 216:case 204:case 202:{Gk(c[(a&p)>>2]|0,c[(d&p)>>2]|0);break}case 175:case 174:{Gk(c[(a&p)>>2]|0,c[(d&p)>>2]|0);break}case 252:case 197:{Qn(c[(a&p)>>2]|0,c[(d&p)>>2]|0);break}case 223:case 219:case 217:{Hk(c[(a&p)>>2]|0,c[(d&p)>>2]|0);break}case 213:case 212:case 201:case 194:{Do(c[(a&p)>>2]|0,c[(d&p)>>2]|0);break}case 207:case 196:case 195:case 163:{Mk(c[(a&p)>>2]|0,c[(d&p)>>2]|0,1);break}default:{}}return} -function Cl(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();o=s;r=b+16|0;if((d[(r&n)>>0]|0)<2?(d[(b&n)+17>>0]|0)<2:0)g=0;else{cp(b);q=b+64|0;l=c[(q&p)>>2]|0;h=c[(l&p)>>2]|0;do if(!h)h=0;else{if((h|0)==14696){Gi(l,0,0)|0;c[(l&p)>>2]=0;h=0;break}k=a[(b&n)+5>>0]|0;if(k<<24>>24==3){k=b+72|0;o=k;if(!((c[(o&p)>>2]|0)==0&(c[(o&p)+4>>2]|0)==0)){h=ac[c[(h&p)+16>>2]&63](l,0,0)|0;if(!h)if(!(a[(b&n)+8>>0]|0))h=0;else{h=c[(q&p)>>2]|0;h=rc[c[((c[(h&p)>>2]|0)&p)+20>>2]&127](h,d[(b&n)+11>>0]|0)|0}}else h=0;q=k;c[(q&p)>>2]=0;c[(q&p)+4>>2]=0;break}else if(k<<24>>24!=1?(a[(b&n)+4>>0]|0)==0|k<<24>>24==5:0){q=(a[(b&n)+12>>0]|0)==0;lc[c[(h&p)+4>>2]&127](l)|0;c[(l&p)>>2]=0;if(!q){h=0;break}h=c[(b&p)>>2]|0;h=ac[c[(h&p)+28>>2]&63](h,c[(b&p)+172>>2]|0,0)|0;break}m=b+72|0;k=m;if(!((c[(k&p)>>2]|0)==0&(c[(k&p)+4>>2]|0)==0)){g=b+160|0;k=c[(g&p)>>2]|0;g=c[(g&p)+4>>2]|0;if((e|0)!=0|(k|0)==0&(g|0)==0)h=ac[c[(h&p)+16>>2]&63](l,0,0)|0;else h=tc[c[(h&p)+12>>2]&31](l,14664,28,0,0)|0;if(!h){if(!(a[(b&n)+7>>0]|0)){h=c[(q&p)>>2]|0;h=rc[c[((c[(h&p)>>2]|0)&p)+20>>2]&127](h,d[(b&n)+11>>0]|16)|0}else h=0;if((h|0)==0&((g|0)>0|(g|0)==0&k>>>0>0)){h=c[(q&p)>>2]|0;h=rc[c[((c[(h&p)>>2]|0)&p)+24>>2]&127](h,o)|0;l=c[(o&p)+4>>2]|0;if((h|0)==0&((l|0)>(g|0)|((l|0)==(g|0)?(c[(o&p)>>2]|0)>>>0>k>>>0:0))){h=c[(q&p)>>2]|0;h=ac[c[((c[(h&p)>>2]|0)&p)+16>>2]&63](h,k,g)|0}}}}else h=0;q=m;c[(q&p)>>2]=0;c[(q&p)+4>>2]=0}while(0);k=b+56|0;ei(c[(k&p)>>2]|0);c[(k&p)>>2]=0;c[(b&p)+44>>2]=0;k=b+204|0;g=c[(k&p)>>2]|0;e=c[(g&p)>>2]|0;if(e){do{xl(e);e=c[(g&p)>>2]|0}while((e|0)!=0);g=c[(k&p)>>2]|0}k=b+24|0;dp(g,c[(k&p)>>2]|0);l=b+208|0;g=c[(l&p)>>2]|0;if(!g){if((h|0)==0&(f|0)!=0){g=c[(k&p)>>2]|0;if((c[(b&p)+32>>2]|0)>>>0>g>>>0)h=Bl(b,g)|0;else h=0}}else{e=g+44|0;if(a[(e&n)>>0]|0){if(!(a[(g&n)+43>>0]|0)){q=c[(g&p)+4>>2]|0;pc[c[((c[(q&p)>>2]|0)&p)+56>>2]&31](q,0,1,9)|0}a[(e&n)>>0]=0;a[(g&n)+47>>0]=0}}if((h|0)==0&(f|0)!=0){g=c[(b&p)+60>>2]|0;h=c[(g&p)>>2]|0;if(!h)k=0;else{k=ac[c[(h&p)+40>>2]&63](g,22,0)|0;k=(k|0)==12?0:k}}else k=h;do if(!(a[(b&n)+4>>0]|0)){g=c[(l&p)>>2]|0;if((g|0)!=0?(ep(g,0)|0)==0:0){g=0;break}h=c[(b&p)+60>>2]|0;g=c[(h&p)>>2]|0;if(g){if(!(a[(b&n)+13>>0]|0))g=rc[c[(g&p)+32>>2]&127](h,1)|0;else g=0;h=b+17|0;if((a[(h&n)>>0]|0)!=5)a[(h&n)>>0]=1}else g=0;a[(b&n)+18>>0]=0}else g=0;while(0);a[(r&n)>>0]=1;a[(b&n)+19>>0]=0;g=(k|0)==0?g:k}i=s;return g|0}function Dl(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[(d&p)+4>>2]|0;g=c[(d&p)>>2]|0;a[(j&n)+19>>0]=0;k=d+8|0;do if(a[(k&n)>>0]|0){if((c[(g&p)+152>>2]|0)>1){g=j+76|0;if((c[(g&p)>>2]|0)==(d|0)?(c[(g&p)>>2]=0,f=j+22|0,b[(f&o)>>1]=e[(f&o)>>1]&65439,f=c[(j&p)+72>>2]|0,(f|0)!=0):0)do{a[(f&n)+8>>0]=1;f=c[(f&p)+12>>2]|0}while((f|0)!=0);a[(k&n)>>0]=1;break}g=j+72|0;f=c[(g&p)>>2]|0;a:do if(f)do while(1){h=f+12|0;i=c[(h&p)>>2]|0;if((c[(f&p)>>2]|0)!=(d|0)){g=h;f=i;break}c[(g&p)>>2]=i;if((c[(f&p)+4>>2]|0)==1)f=i;else{Wc(f);f=c[(g&p)>>2]|0}if(!f)break a}while((f|0)!=0);while(0);f=j+76|0;if((c[(f&p)>>2]|0)!=(d|0)){f=c[(j&p)+40>>2]|0;if((f|0)==2){i=j+22|0;b[(i&o)>>1]=e[(i&o)>>1]&65471;c[(j&p)+40>>2]=1;i=20;break}}else{c[(f&p)>>2]=0;f=j+22|0;b[(f&o)>>1]=e[(f&o)>>1]&65439;f=c[(j&p)+40>>2]|0}f=f+-1|0;c[(j&p)+40>>2]=f;if(!f){a[(j&n)+20>>0]=0;i=20}else i=20}else i=20;while(0);if(((i|0)==20?(a[(k&n)>>0]=0,(a[(j&n)+20>>0]|0)==0):0)?(l=j+12|0,m=c[(l&p)>>2]|0,(m|0)!=0):0){c[(l&p)>>2]=0;Bg(c[(m&p)+68>>2]|0)}return}function El(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=((c[(a&p)+36>>2]|0)>>>0)/5|0;if(b>>>0<2){e=0;g=c[(a&p)+32>>2]|0;i=c[2514]|0}else{e=b+-2|0;e=e-((e>>>0)%((h+1|0)>>>0)|0)|0;i=c[2514]|0;g=c[(a&p)+32>>2]|0;e=((e+1|0)==((i>>>0)/(g>>>0)|0|0)?3:2)+e|0}e=b-d-(((d-b+h+e|0)>>>0)/(h>>>0)|0)|0;f=a+32|0;a=((i>>>0)/(g>>>0)|0)+1|0;d=((i>>>0)/(g>>>0)|0)+1|0;a=((a>>>0>>0&e>>>0>>0)<<31>>31)+e|0;while(1){if(a>>>0<2)e=0;else{e=a+-2|0;e=e-((e>>>0)%((h+1|0)>>>0)|0)|0;e=((e+1|0)==((i>>>0)/((c[(f&p)>>2]|0)>>>0)|0|0)?3:2)+e|0}if(!((e|0)==(a|0)|(a|0)==(d|0)))break;a=a+-1|0}return a|0}function Fl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=(d|0)==0;f=b;a:while(1){do if((f|0)!=(e|0)){if(!g?(c[(f&p)+60>>2]|0)!=(d|0):0)break;if(((a[(f&n)+73>>0]|0)+-1&255)<2){b=fp(f)|0;if(!b)break;else break a}else{gp(f);break}}while(0);f=c[(f&p)+8>>2]|0;if(!f){b=0;break}}return b|0}function Gl(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+48|0;if((i|0)>=(j|0))fa();k=x;m=x+32|0;u=x+28|0;l=x+24|0;q=x+20|0;s=x+16|0;v=x+12|0;t=x+8|0;if(f>>>0<2)o=0;else{o=f+-2|0;o=o-((o>>>0)%(((((c[(b&p)+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;o=((o+1|0)==(((c[2514]|0)>>>0)/((c[(b&p)+32>>2]|0)>>>0)|0|0)?3:2)+o|0}do if((o|0)!=(f|0)?((((c[2514]|0)>>>0)/((c[(b&p)+32>>2]|0)>>>0)|0)+1|0)!=(f|0):0){r=c[((c[(b&p)+12>>2]|0)&p)+56>>2]|0;if((d[(r&n)+37>>0]|0)<<16|(d[(r&n)+36>>0]|0)<<24|(d[(r&n)+38>>0]|0)<<8|(d[(r&n)+39>>0]|0)){h=hp(b,f,m,u)|0;if(!h){r=a[(m&n)>>0]|0;if(r<<24>>24==2){if(g){h=0;break}h=ip(b,q,l,f,1)|0;if(h)break;k=c[(q&p)>>2]|0;if(!k){w=24;break}Bg(c[(k&p)+68>>2]|0);w=24;break}else if(r<<24>>24!=1){h=dl(b,f,v,0)|0;if(h)break;k=(g|0)==0;m=k?2:0;k=k?e:0;l=(g|0)!=0;do{h=ip(b,t,s,k,m)|0;if(h){w=16;break}o=c[(t&p)>>2]|0;if(o)Bg(c[(o&p)+68>>2]|0);o=c[(s&p)>>2]|0}while(l&o>>>0>e>>>0);if((w|0)==16){k=c[(v&p)>>2]|0;if(!k)break;Bg(c[(k&p)+68>>2]|0);break}m=c[(v&p)>>2]|0;h=Zm(b,m,r,c[(u&p)>>2]|0,o,g)|0;if(m)Bg(c[(m&p)+68>>2]|0);if(!h){w=24;break}else break}else{c[(k&p)>>2]=56228;c[(k&p)+4>>2]=10788;bd(11,13600,k);h=11;break}}}else h=101}else w=24;while(0);if((w|0)==24)if(!g){l=((c[2514]|0)>>>0)/((c[(b&p)+32>>2]|0)>>>0)|0;m=l+1|0;o=b+36|0;k=f;while(1){h=k+-1|0;if((h|0)==(m|0)){k=h;continue}if(h>>>0<2)k=0;else{k=k+-3|0;k=k-((k>>>0)%(((((c[(o&p)>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(l|0)?3:2)+k|0}if((k|0)==(h|0))k=h;else break}a[(b&n)+19>>0]=1;c[(b&p)+44>>2]=h;h=0}else h=0;i=x;return h|0}function Hl(b){b=b|0;var e=0,f=0,g=0;g=b+16|0;f=a[(g&n)>>0]|0;a:do if(f<<24>>24!=6)if((f&255)>=2){do if(!(c[(b&p)+208>>2]|0)){if(!(f<<24>>24==2?1:(c[(c[(b&p)+64>>2]&p)>>2]|0)==0)){e=Ko(b,0)|0;break}e=Cl(b,0,0)|0;if((a[(b&n)+15>>0]|0)==0&(f&255)>2){c[(b&p)+40>>2]=4;a[(g&n)>>0]=6;break a}}else{e=jp(b,2,-1)|0;f=Cl(b,d[(b&n)+19>>0]|0,0)|0;e=(e|0)==0?f:e}while(0);f=e&255;if((f|0)==10|(f|0)==13){c[(b&p)+40>>2]=e;a[(g&n)>>0]=6}}else e=0;else e=c[(b&p)+40>>2]|0;while(0);return e|0}function Il(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;a:do if((d|0)!=0?(h=c[(d&p)+4>>2]|0,c[(h&p)+4>>2]=c[(d&p)>>2],h=c[(h&p)+8>>2]|0,(h|0)!=0):0){l=(f|0)==0;while(1){if(!l?(a[(h&n)+72>>0]&1)==0:0){if(((a[(h&n)+73>>0]|0)+-1&255)<2?(g=fp(h)|0,(g|0)!=0):0)break}else{f=h+56|0;Wc(c[(f&p)>>2]|0);c[(f&p)>>2]=0;a[(h&n)+73>>0]=4;c[(h&p)+68>>2]=e}f=h+76|0;if((b[(f&o)>>1]|0)>=0){k=0;while(1){i=h+(k<<2)+120|0;j=c[(i&p)>>2]|0;if(j)Bg(c[(j&p)+68>>2]|0);c[(i&p)>>2]=0;if((k|0)<(b[(f&o)>>1]|0))k=k+1|0;else break}}h=c[(h&p)+8>>2]|0;if(!h)break a}Il(d,g,0)|0;return g|0}while(0);return 0}function Jl(a){a=a|0;var b=0,d=0,e=0;a:do if(!(c[(a&p)+4>>2]|0)){d=c[(a&p)+20>>2]|0;if((d|0)>0){a=c[(a&p)+16>>2]|0;b=0;while(1){e=c[(a+(b<<4)&p)+4>>2]|0;if((e|0)!=0?(c[(e&p)+16>>2]|0)!=0:0){a=1;break a}b=b+1|0;if((b|0)>=(d|0)){a=0;break}}}else a=0}else a=1;while(0);return a|0}function Kl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[3164]|0;if(f)nc[f&3]();l=d+20|0;j=c[(l&p)>>2]|0;i=(j|0)>0;if(i){f=c[(d&p)+16>>2]|0;h=0;do{g=c[(f+(h<<4)&p)+4>>2]|0;if(g)c[((c[(g&p)+4>>2]|0)&p)+4>>2]=c[(g&p)>>2];h=h+1|0}while((h|0)!=(j|0))}m=d+24|0;if(!(c[(m&p)>>2]&2))f=1;else f=(a[(d&n)+145>>0]|0)!=0;if(i){k=d+16|0;f=f&1;i=j;j=0;h=0;while(1){g=c[((c[(k&p)>>2]|0)+(j<<4)&p)+4>>2]|0;if(!g)g=i;else{h=(a[(g&n)+8>>0]|0)==2?1:h;Lg(g,e,f);g=c[(l&p)>>2]|0}j=j+1|0;if((j|0)>=(g|0))break;else i=g}}else h=0;Rn(d,68);f=c[3166]|0;if(f)nc[f&3]();f=c[(m&p)>>2]|0;if((f&2|0)!=0?(a[(d&n)+145>>0]|0)==0:0){f=c[(d&p)+4>>2]|0;if(f)do{g=f+88|0;b[(g&o)>>1]=b[(g&o)>>1]|8;f=c[(f&p)+52>>2]|0}while((f|0)!=0);Eg(d);f=c[(m&p)>>2]|0}g=d+504|0;c[(g&p)>>2]=0;c[(g&p)+4>>2]=0;c[(g&p)+8>>2]=0;c[(g&p)+12>>2]=0;c[(m&p)>>2]=f&-16777217;f=c[(d&p)+204>>2]|0;do if(f){if((h|0)==0?(a[(d&n)+63>>0]|0)!=0:0)break;cc[f&31](c[(d&p)+200>>2]|0)}while(0);return}function Ll(b){b=b|0;var d=0,e=0;e=b+488|0;d=c[(e&p)>>2]|0;if(d)do{c[(e&p)>>2]=c[(d&p)+24>>2];mg(b,d);d=c[(e&p)>>2]|0}while((d|0)!=0);c[(b&p)+496>>2]=0;c[(b&p)+500>>2]=0;a[(b&n)+70>>0]=0;return}function Ml(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=c[(b&p)+4>>2]|0;c[(h&p)+4>>2]=c[(b&p)>>2];e=c[(h&p)+8>>2]|0;if(e)do{d=e;e=c[(e&p)+8>>2]|0;if((c[(d&p)>>2]|0)==(b|0))kp(d)}while((e|0)!=0);Lg(b,0,0);a:do if(a[(b&n)+9>>0]|0){e=h+64|0;d=c[(e&p)>>2]|0;c[(e&p)>>2]=d+-1;if((d|0)<2){d=c[3664]|0;if((d|0)==(h|0)){c[3664]=c[(h&p)+68>>2];f=12;break}else e=d;do{if(!e){f=12;break a}d=e+68|0;e=c[(d&p)>>2]|0}while((e|0)!=(h|0));c[(d&p)>>2]=c[(h&p)+68>>2];f=12}}else f=12;while(0);if((f|0)==12){lp(c[(h&p)>>2]|0);d=c[(h&p)+52>>2]|0;e=h+48|0;if((d|0)!=0?(g=c[(e&p)>>2]|0,(g|0)!=0):0)cc[d&31](g);d=c[(e&p)>>2]|0;if(d)Wc(d);d=h+80|0;e=c[(d&p)>>2]|0;if(e){e=e+-4|0;c[(d&p)>>2]=e;$k(e);c[(d&p)>>2]=0}Wc(h)}e=c[(b&p)+28>>2]|0;d=b+24|0;if(e)c[(e&p)+24>>2]=c[(d&p)>>2];d=c[(d&p)>>2]|0;if(d)c[(d&p)+28>>2]=e;Wc(b);return}function Nl(a,b){a=a|0;b=b|0;var d=0;b=c[(b&p)+32>>2]|0;if((b|0)!=0?(d=(c[(b&p)>>2]|0)+-1|0,c[(b&p)>>2]=d,(d|0)==0):0){cc[c[(b&p)+4>>2]&31](c[(b&p)+8>>2]|0);mg(a,b)}return}function Ol(a){a=a|0;var b=0,d=0;d=a+8|0;b=c[(d&p)>>2]|0;c[(d&p)>>2]=0;d=a+12|0;Wc(c[(d&p)>>2]|0);c[(d&p)>>2]=0;c[(a&p)>>2]=0;if(b)do{d=b;b=c[(b&p)>>2]|0;Wc(d)}while((b|0)!=0);c[(a&p)+4>>2]=0;return}function Pl(a){a=a|0;var b=0,d=0,e=0,f=0;if(a){e=c[(a&p)>>2]|0;lg(e,a);f=c[(a&p)+48>>2]|0;d=a+52|0;b=c[(d&p)>>2]|0;if(!f)c[(e&p)+4>>2]=b;else{c[(f&p)+52>>2]=b;b=c[(d&p)>>2]|0}if(b)c[(b&p)+48>>2]=f;c[(a&p)+40>>2]=-1241070648;c[(a&p)>>2]=0;mg(e,a)}return}function Ql(d){d=d|0;var e=0;a[(d&n)+65>>0]=0;c[(d&p)+52>>2]=7;d=c[(d&p)+236>>2]|0;do if(d){e=d+8|0;if(!(b[(e&o)>>1]&9312)){b[(e&o)>>1]=1;break}else{vg(d);break}}while(0);return}function Rl(d){d=d|0;var f=0,g=0,h=0,k=0,l=0,m=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,H=0,I=0;I=i;i=i+32|0;if((i|0)>=(j|0))fa();x=I;A=I+16|0;t=I+12|0;u=I+8|0;H=c[(d&p)>>2]|0;if(a[(H&n)+65>>0]|0)c[(d&p)+80>>2]=7;g=c[(d&p)+200>>2]|0;if(g)fw(g|0,0,c[(d&p)+196>>2]|0)|0;k=d+176|0;g=c[(k&p)>>2]|0;if(g){while(1){h=c[(g&p)+4>>2]|0;if(!h)break;else g=h}Xl(g)|0;c[(k&p)>>2]=0;c[(d&p)+184>>2]=0}r=d+56|0;g=c[(r&p)>>2]|0;a:do if((g|0)!=0?(s=d+36|0,f=c[(s&p)>>2]|0,(f|0)>0):0){k=0;while(1){h=c[(g+(k<<2)&p)>>2]|0;if(!h)h=f;else{Bm(d,h);c[((c[(r&p)>>2]|0)+(k<<2)&p)>>2]=0;h=c[(s&p)>>2]|0}k=k+1|0;if((k|0)>=(h|0))break a;g=c[(r&p)>>2]|0;f=h}}while(0);g=c[(d&p)+8>>2]|0;if(g)ch(g+40|0,c[(d&p)+28>>2]|0);s=d+180|0;g=c[(s&p)>>2]|0;if(g)do{c[(s&p)>>2]=c[(g&p)+4>>2];r=g+80|0;f=g+60|0;h=c[(f&p)>>2]|0;m=r+(h*40|0)|0;q=g+64|0;if((c[(q&p)>>2]|0)>0){k=0;do{Bm(c[(g&p)>>2]|0,c[(m+(k<<2)&p)>>2]|0);k=k+1|0}while((k|0)<(c[(q&p)>>2]|0));h=c[(f&p)>>2]|0}ch(r,h);mg(c[(c[(g&p)>>2]&p)>>2]|0,g);g=c[(s&p)>>2]|0}while((g|0)!=0);if(c[(d&p)+204>>2]|0)em(d,-1,0);E=d+40|0;b:do if((c[(E&p)>>2]|0)==-1108210269){C=d+76|0;if((c[(C&p)>>2]|0)>-1){D=d+88|0;q=b[(D&o)>>1]|0;if(q&128){B=d+80|0;k=c[(B&p)>>2]|0;m=k&255;h=m+-7|0;do if(h>>>0<7?(l=(77>>>(h&127)&1)!=0,l):0)if((q&64)==0|(m|0)!=9){if((m|0)==7|(m|0)==13?(q&32)!=0:0){f=2;break}Kl(H,516);Ll(H);a[(H&n)+63>>0]=1;c[(d&p)+92>>2]=0;k=c[(B&p)>>2]|0;f=0}else{l=1;f=0}else{l=0;f=0}while(0);if((k|0)==0?(z=d+144|0,y=c[(z&p)+4>>2]|0,(y|0)>0|(y|0)==0&(c[(z&p)>>2]|0)>>>0>0):0){z=c[(d&p)>>2]|0;c[(B&p)>>2]=787;a[(d&n)+86>>0]=2;dh(d+44|0,z,34376,x)}m=H+304|0;if((c[(m&p)>>2]|0)>0?(c[(H&p)+328>>2]|0)==0:0)F=141;else if((a[(H&n)+63>>0]|0)!=0?(c[(H&p)+156>>2]|0)==(((e[(D&o)>>1]|0)>>>6&1^1)&65535|0):0){do if(!(c[(B&p)>>2]|0))F=41;else{if(!((a[(d&n)+86>>0]|0)!=3|l)){F=41;break}Kl(H,0);c[(d&p)+92>>2]=0}while(0);c:do if((F|0)==41){d:do if(tm(d,1)|0)if(!(b[(D&o)>>1]&64))g=787;else{f=1;break b}else{l=H+328|0;h=c[(l&p)>>2]|0;c[(l&p)>>2]=0;k=c[(m&p)>>2]|0;e:do if((k|0)>0){q=0;f:while(1){s=c[((c[(h+(q<<2)&p)>>2]|0)&p)+8>>2]|0;do if(s){r=c[((c[(s&p)>>2]|0)&p)+60>>2]|0;if(!r)break;g=lc[r&127](s)|0;Mm(d,s);if(g)break f;k=c[(m&p)>>2]|0}while(0);q=q+1|0;if((q|0)>=(k|0)){F=50;break e}}c[(l&p)>>2]=h;F=135}else F=50;while(0);g:do if((F|0)==50){c[(l&p)>>2]=h;y=H+20|0;z=H+16|0;r=0;k=0;q=0;h:while(1){m=c[(y&p)>>2]|0;if((r|0)>=(m|0)){h=k;break}l=c[(z&p)>>2]|0;s=r;while(1){r=c[(l+(s<<4)&p)+4>>2]|0;if((r|0)!=0?(a[(r&n)+8>>0]|0)==2:0)break;s=s+1|0;if((s|0)>=(m|0)){h=k;break h}}g=c[(r&p)+4>>2]|0;c[(g&p)+4>>2]=c[(r&p)>>2];g=bp(c[(g&p)>>2]|0)|0;if(!g){r=s+1|0;k=((s|0)!=1&1)+k|0;q=1}else{F=135;break g}}do if(q){l=c[(H&p)+196>>2]|0;if(!l)break;if(lc[l&127](c[(H&p)+192>>2]|0)|0){g=531;break d}}while(0);k=c[((c[(z&p)>>2]|0)&p)+4>>2]|0;q=c[(c[(k&p)+4>>2]&p)>>2]|0;m=(a[(q&n)+15>>0]|0)==0;if(m){s=c[(q&p)+168>>2]|0;if(s)F=62}else{s=10360;F=62}do if((F|0)==62){r=s;while(1)if(!(a[(r&n)>>0]|0))break;else r=r+1|0;if((r-s&1073741823|0)==0|(h|0)<2)break;w=c[(H&p)>>2]|0;if(m){l=c[(q&p)+168>>2]|0;c[(A&p)>>2]=0;if(!l){s=0;l=0}else F=80}else{c[(A&p)>>2]=0;l=10360;F=80}if((F|0)==80){q=l;while(1)if(!(a[(q&n)>>0]|0))break;else q=q+1|0;s=q-l&1073741823}c[(x&p)>>2]=l;v=uh(H,44696,x)|0;if(!v){g=7;break d}s=v+s|0;r=w+32|0;q=0;i:while(1){do if(q){if((q|0)>100){F=87;break i}if((q|0)!=1)break;c[(x&p)>>2]=v;bd(13,44728,x)}while(0);cd(4,u);g=c[(u&p)>>2]|0;c[(x&p)>>2]=g>>>8;c[(x&p)+4>>2]=g&255;ad(13,s,44744,x)|0;g=pc[c[(r&p)>>2]&31](w,v,0,t)|0;m=(g|0)==0;if(m&(c[(t&p)>>2]|0)!=0)q=q+1|0;else{F=91;break}}if((F|0)==87){c[(x&p)>>2]=v;bd(13,44712,x);ac[c[(w&p)+28>>2]&63](w,v,0)|0;F=92}else if((F|0)==91)if(m)F=92;do if((F|0)==92){g=mp(w,v,A,16406,0)|0;if(g)break;l=c[(y&p)>>2]|0;j:do if((l|0)>0){t=0;r=0;u=0;q=0;k:while(1){s=c[((c[(z&p)>>2]|0)+(u<<4)&p)+4>>2]|0;do if(!s)s=t;else{if((a[(s&n)+8>>0]|0)!=2){s=t;break}m=c[(s&p)+4>>2]|0;k=c[(m&p)>>2]|0;h=c[(k&p)+172>>2]|0;if(!h){s=t;break}if(!q){c[(m&p)+4>>2]=c[(s&p)>>2];q=(a[(k&n)+7>>0]|0)==0&1}k=c[(A&p)>>2]|0;s=h;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;m=h;g=tc[c[((c[(k&p)>>2]|0)&p)+12>>2]&31](k,h,(s-m&1073741823)+1|0,t,r)|0;s=h;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;if(g){l=k;F=106;break k}s=jw((s-m&1073741823)+1|0,0,t|0,r|0)|0;l=c[(y&p)>>2]|0;r=G}while(0);u=u+1|0;if((u|0)>=(l|0))break;else t=s}if((F|0)==106){h=c[(l&p)>>2]|0;if(h){lc[c[(h&p)+4>>2]&127](k)|0;c[(l&p)>>2]=0}Wc(k);ac[c[(w&p)+28>>2]&63](w,v,0)|0;mg(H,v);F=135;break g}do if(!q)q=0;else{m=c[(A&p)>>2]|0;if((lc[c[((c[(m&p)>>2]|0)&p)+48>>2]&127](m)|0)&1024)break;g=rc[c[((c[(m&p)>>2]|0)&p)+20>>2]&127](m,2)|0;if(!g)break;h=c[(m&p)>>2]|0;if(h){lc[c[(h&p)+4>>2]&127](m)|0;c[(m&p)>>2]=0}Wc(m);ac[c[(w&p)+28>>2]&63](w,v,0)|0;mg(H,v);F=135;break g}while(0);k=c[(y&p)>>2]|0;if((k|0)>0)s=0;else{s=1;g=0;break}while(1){m=c[((c[(z&p)>>2]|0)+(s<<4)&p)+4>>2]|0;if(m){g=Kg(m,v)|0;if(g){s=0;break j}k=c[(y&p)>>2]|0}s=s+1|0;if((s|0)>=(k|0)){s=1;g=0;break}}}else{s=1;q=0;g=0}while(0);m=c[(A&p)>>2]|0;l=c[(m&p)>>2]|0;if(l){lc[c[(l&p)+4>>2]&127](m)|0;c[(m&p)>>2]=0}Wc(m);if(!s){mg(H,v);F=135;break g}g=ac[c[(w&p)+28>>2]&63](w,v,q)|0;mg(H,v);if(g){F=135;break g}g=c[3164]|0;if(g)nc[g&3]();g=c[(y&p)>>2]|0;if((g|0)>0){k=0;do{h=c[((c[(z&p)>>2]|0)+(k<<4)&p)+4>>2]|0;if(h){Jg(h,1)|0;g=c[(y&p)>>2]|0}k=k+1|0}while((k|0)<(g|0))}g=c[3166]|0;if(g)nc[g&3]();Rn(H,64);break g}while(0);mg(H,v);F=135;break g}while(0);g=c[(y&p)>>2]|0;do if((g|0)>0){h=1;while(1){if(k){g=Kg(k,0)|0;if(g){F=135;break g}g=c[(y&p)>>2]|0}if((h|0)>=(g|0))break;k=c[((c[(z&p)>>2]|0)+(h<<4)&p)+4>>2]|0;h=h+1|0}if((g|0)>0)k=0;else break;do{h=c[((c[(z&p)>>2]|0)+(k<<4)&p)+4>>2]|0;if(h){g=Jg(h,0)|0;if(g){F=135;break g}g=c[(y&p)>>2]|0}k=k+1|0}while((k|0)<(g|0))}while(0);Rn(H,64)}while(0);do if((F|0)==135){if(!g)break;else if((g|0)!=5)break d;if(!(b[(D&o)>>1]&64)){g=5;break d}else{f=5;break b}}while(0);A=H+504|0;F=H+24|0;c[(A&p)>>2]=0;c[(A&p)+4>>2]=0;c[(A&p)+8>>2]=0;c[(A&p)+12>>2]=0;c[(F&p)>>2]=c[(F&p)>>2]&-16777219;break c}while(0);c[(B&p)>>2]=g;Kl(H,0);c[(d&p)+92>>2]=0}while(0);c[(H&p)+500>>2]=0;F=146}else F=141;do if((F|0)==141)if(!f)if(c[(B&p)>>2]|0){g=a[(d&n)+86>>0]|0;if(g<<24>>24==2){f=2;F=147;break}else if(g<<24>>24==3){f=1;F=147;break}else{Kl(H,516);Ll(H);a[(H&n)+63>>0]=1;c[(d&p)+92>>2]=0;F=146;break}}else{f=1;F=147}else F=147;while(0);if((F|0)==146)if(!f)f=0;else F=147;if((F|0)==147){g=$l(d,f)|0;if(g){F=c[(B&p)>>2]|0;if((F|0)==0|(F&255|0)==19){c[(B&p)>>2]=g;F=d+44|0;mg(H,c[(F&p)>>2]|0);c[(F&p)>>2]=0}Kl(H,516);Ll(H);a[(H&n)+63>>0]=1;c[(d&p)+92>>2]=0}}if(b[(D&o)>>1]&4){if((f|0)==2){c[(H&p)+80>>2]=0;f=d+92|0}else{f=d+92|0;B=c[(f&p)>>2]|0;c[(H&p)+80>>2]=B;F=H+84|0;c[(F&p)>>2]=(c[(F&p)>>2]|0)+B}c[(f&p)>>2]=0}}if((c[(C&p)>>2]|0)>-1){f=H+148|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+-1;f=b[(D&o)>>1]|0;if(!(f&64)){f=H+156|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+-1;f=b[(D&o)>>1]|0}if(f&128){F=H+152|0;c[(F&p)>>2]=(c[(F&p)>>2]|0)+-1}}}c[(E&p)>>2]=1369188723;f=d+80|0;if(!(a[((c[(d&p)>>2]|0)&n)+65>>0]|0)){f=(c[(f&p)>>2]|0)==5?5:0;break}else{c[(f&p)>>2]=7;f=0;break}}else f=0;while(0);i=I;return f|0}function Sl(a,f){a=a|0;f=f|0;var g=0,h=0,i=0,j=0;i=a+8|0;h=e[(i&o)>>1]|0;do if(h&18){b[(i&o)>>1]=h|2;if(h&16384)Rg(a)|0;g=a+10|0;f=f&255;h=f&247;if((d[(g&n)>>0]|0|0)!=(h|0))Yl(a,h)|0;if(((f&8|0)!=0?(c[(a&p)+16>>2]&1|0)!=0:0)?(Vl(a)|0)!=0:0){g=0;break}if((b[(i&o)>>1]&514)==2){am(a)|0;j=12}else j=12}else{bm(a,f,0)|0;h=f&247;g=a+10|0;j=12}while(0);if((j|0)==12)if((d[(g&n)>>0]|0|0)==(h|0))g=c[(a&p)+16>>2]|0;else g=0;return g|0}function Tl(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0.0,l=0,m=0,o=0,p=0,r=0,s=0,t=0,u=0;h[(c&q)>>3]=0.0;j=f&255;if(f<<24>>24==1){f=b;g=e;r=1;u=0}else{g=3-j|0;a:do if((g|0)<(e|0))while(1){f=g+2|0;if(a[(b+g&n)>>0]|0){e=1;break a}if((f|0)<(e|0))g=f;else{e=0;g=f;break}}else e=0;while(0);f=b+(j&1)|0;g=j+-3+g|0;r=2;u=e}t=b+g|0;b:do if(f>>>0>>0){while(1){g=a[(f&n)>>0]|0;if(!(a[(g&255&n)+10368>>0]&1))break;f=f+r|0;if(f>>>0>=t>>>0){f=0;break b}}if(g<<24>>24==45){f=f+r|0;s=-1}else if(g<<24>>24==43){f=f+r|0;s=1}else s=1;c:do if(f>>>0>>0){g=0;do{if((a[(f&n)>>0]|0)!=48)break c;f=f+r|0;g=g+1|0}while(f>>>0>>0)}else g=0;while(0);d:do if(f>>>0>>0){b=0;j=0;while(1){e=a[(f&n)>>0]|0;if(!(((e&255)+-48|0)>>>0<10&((b|0)<214748364|(b|0)==214748364&j>>>0<3435973835))){l=b;break d}j=sw(j|0,b|0,10,0)|0;b=(e<<24>>24)+-48|0;j=jw(b|0,((b|0)<0)<<31>>31|0,j|0,G|0)|0;b=G;f=f+r|0;g=g+1|0;if(f>>>0>=t>>>0){l=b;break}}}else{j=0;l=0}while(0);e:do if(f>>>0>>0){e=0;while(1){b=a[(f&n)>>0]|0;if(((b&255)+-48|0)>>>0>=10){m=e;break}f=f+r|0;g=g+1|0;b=e+1|0;if(f>>>0>>0)e=b;else{o=l;m=b;b=0;l=1;e=1;break e}}f:do if(b<<24>>24==46){e=f+r|0;g:do if(e>>>0>>0){o=e;while(1){b=a[(o&n)>>0]|0;if(!(((b&255)+-48|0)>>>0<10&((l|0)<214748364|(l|0)==214748364&j>>>0<3435973835))){e=o;o=l;break g}j=sw(j|0,l|0,10,0)|0;l=(b<<24>>24)+-48|0;j=jw(l|0,((l|0)<0)<<31>>31|0,j|0,G|0)|0;l=G;g=g+1|0;b=m+-1|0;e=f+(r<<1)|0;if(e>>>0>>0){f=o;o=e;m=b}else{f=o;o=l;m=b;break}}}else o=l;while(0);if(e>>>0>>0){l=r<<1;b=e;while(1){if(((d[(b&n)>>0]|0)+-48|0)>>>0>=10){e=b;break f}e=f+l|0;g=g+1|0;if(e>>>0>>0){f=b;b=e}else break}}}else{e=f;o=l}while(0);if(e>>>0>>0){p=a[(e&n)>>0]|0;h:do if(p<<24>>24==69|p<<24>>24==101){f=e+r|0;if(f>>>0>=t>>>0){b=0;l=0;e=1;break e}b=a[(f&n)>>0]|0;if(b<<24>>24==45){f=e+(r<<1)|0;p=-1}else if(b<<24>>24==43){f=e+(r<<1)|0;p=1}else p=1;if(f>>>0>>0){e=0;l=0}else{b=0;l=0;e=p;break e}while(1){b=a[(f&n)>>0]|0;if(((b&255)+-48|0)>>>0>=10){b=e;e=p;break h}if((e|0)<1e4)b=(e*10|0)+-48+(b<<24>>24)|0;else b=1e4;f=f+r|0;if(f>>>0>>0){e=b;l=1}else{l=1;e=p;break}}}else{f=e;b=0;l=1;e=1}while(0);if((g|0)!=0&(l|0)!=0&f>>>0>>0)do{if(!(a[((d[(f&n)>>0]|0)&n)+10368>>0]&1))break e;f=f+r|0}while(f>>>0>>0)}else{f=e;b=0;l=1;e=1}}else{o=l;m=0;b=0;l=1;e=1}while(0);b=(ca(b,e)|0)+m|0;p=(b|0)<0;e=p?0-b|0:b;do if((j|0)==0&(o|0)==0)if((s|0)<0)i=(g|0)!=0?-0.0:0.0;else i=0.0;else{if((b>>31|1|0)>0)if(((o|0)<214748364|(o|0)==214748364&j>>>0<3435973836)&(e|0)>0){b=o;do{e=e+-1|0;j=sw(j|0,b|0,10,0)|0;b=G}while(((b|0)<214748364|(b|0)==214748364&j>>>0<3435973836)&(e|0)>0)}else b=o;else{m=rw(j|0,o|0,10,0)|0;if((m|0)==0&(G|0)==0&(e|0)>0){b=o;do{e=e+-1|0;j=qw(j|0,b|0,10,0)|0;b=G;o=rw(j|0,b|0,10,0)|0}while((o|0)==0&(G|0)==0&(e|0)>0)}else b=o}o=(s|0)<0;m=dw(0,0,j|0,b|0)|0;m=o?m:j;o=o?G:b;if(!e){i=+(m>>>0)+4294967296.0*+(o|0);break}if((e+-308|0)>>>0<34){if(!((e|0)%308|0))k=1.0;else{i=1.0;do{i=i*10.0;e=e+-1|0}while(((e|0)%308|0|0)!=0);k=i}i=+(m>>>0)+4294967296.0*+(o|0);if(p){i=i/k/1.e+308;break}else{i=i*k*1.e+308;break}}if((e|0)>341){i=+(m>>>0)+4294967296.0*+(o|0);if(p){i=i*0.0;break}else{i=i*w;break}}if(!((e|0)%22|0)){j=e;i=1.0}else{j=e;i=1.0;do{i=i*10.0;j=j+-1|0}while(((j|0)%22|0|0)!=0)}if((j|0)>0){do{i=i*1.0e22;j=j+-22|0}while((j|0)>0);k=i}else k=i;i=+(m>>>0)+4294967296.0*+(o|0);if(p){i=i/k;break}else{i=i*k;break}}while(0);h[(c&q)>>3]=i;f=f>>>0>=t>>>0&(g|0)>0&(l|0)!=0&(u|0)==0&1}else f=0;while(0);return f|0}function Ul(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,q=0,r=0;i=f&255;if(f<<24>>24==1){g=b;h=e;o=1;e=0}else{h=3-i|0;a:do if((h|0)<(e|0))while(1){f=h+2|0;if(a[(b+h&n)>>0]|0){e=1;break a}if((f|0)<(e|0))h=f;else{e=0;h=f;break}}else e=0;while(0);g=b+(i&1)|0;h=i+-3+h|0;o=2}k=b+h|0;b:do if(g>>>0>>0){while(1){h=a[(g&n)>>0]|0;if(!(a[(h&255&n)+10368>>0]&1))break;g=g+o|0;if(g>>>0>=k>>>0){l=0;break b}}if(h<<24>>24==45){g=g+o|0;l=1;break}else if(h<<24>>24==43){g=g+o|0;l=0;break}else{l=0;break}}else l=0;while(0);c:do if(g>>>0>>0){h=g;while(1){if((a[(h&n)>>0]|0)!=48){m=h;break c}h=h+o|0;if(h>>>0>=k>>>0){m=h;break}}}else m=g;while(0);do if(m>>>0>>0){b=m;j=0;i=0;h=0;while(1){f=a[(b&n)>>0]|0;if((f+-48&255)>=10){b=0;k=i;break}i=sw(j|0,i|0,10,0)|0;j=f<<24>>24;i=jw(i|0,G|0,-48,-1)|0;j=jw(i|0,G|0,j|0,((j|0)<0)<<31>>31|0)|0;i=G;h=h+o|0;b=m+h|0;if(b>>>0>=k>>>0){b=1;k=i;break}}i=f<<24>>24;f=(l|0)!=0;if((k|0)>=0)if(f){f=k;r=22;break}else{f=k;r=23;break}else{j=d;c[(j&p)>>2]=f?0:-1;c[(j&p)+4>>2]=f?-2147483648:2147483647;j=f?0:2;break}}else if(!l){b=1;j=0;f=0;i=0;h=0;r=23}else{b=1;j=0;f=0;i=0;h=0;r=22}while(0);if((r|0)==22){l=dw(0,0,j|0,f|0)|0;j=d;c[(j&p)>>2]=l;c[(j&p)+4>>2]=G;j=0}else if((r|0)==23){l=d;c[(l&p)>>2]=j;c[(l&p)+4>>2]=f;j=2}if(((i|0)==0|b?!((h|0)==0&(g|0)==(m|0)):0)?(q=o*19|0,!((h|0)>(q|0)|(e|0)!=0)):0)if((h|0)>=(q|0)){h=0;do{g=a[(m+(ca(h,o)|0)&n)>>0]|0;e=a[(h&n)+11192>>0]|0;h=h+1|0;f=g<<24>>24==e<<24>>24}while(f&(h|0)<18);if(f)g=(a[(m+(o*18|0)&n)>>0]|0)+-56|0;else g=((g<<24>>24)-(e<<24>>24)|0)*10|0;if((g|0)>=0)return ((g|0)>0?1:j)|0;else g=0}else g=0;else g=1;return g|0}function Vl(d){d=d|0;var f=0,g=0;g=d+8|0;f=b[(g&o)>>1]|0;if(f&16384){Rg(d)|0;f=b[(g&o)>>1]|0}do if(f&18){if((c[(d&p)+24>>2]|0)!=0?(c[(d&p)+16>>2]|0)==(c[(d&p)+20>>2]|0):0){f=0;break}f=d+12|0;if(!(eh(d,(c[(f&p)>>2]|0)+2|0,1)|0)){d=d+16|0;a[((c[(d&p)>>2]|0)+(c[(f&p)>>2]|0)&n)>>0]=0;a[((c[(d&p)>>2]|0)+(c[(f&p)>>2]|0)&n)+1>>0]=0;b[(g&o)>>1]=e[(g&o)>>1]|0|512;f=0}else f=7}else f=0;while(0);return f|0}function Wl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=ro(a,b,c,d)|0;if(!c)mg(a,b);return c|0}function Xl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=c[(a&p)>>2]|0;c[(d&p)+200>>2]=c[(a&p)+20>>2];c[(d&p)+196>>2]=c[(a&p)+56>>2];c[(d&p)+4>>2]=c[(a&p)+8>>2];c[(d&p)+32>>2]=c[(a&p)+48>>2];c[(d&p)+8>>2]=c[(a&p)+16>>2];c[(d&p)+28>>2]=c[(a&p)+52>>2];c[(d&p)+56>>2]=c[(a&p)+24>>2];c[(d&p)+36>>2]=c[(a&p)+40>>2];g=a+32|0;f=c[(g&p)+4>>2]|0;b=c[(d&p)>>2]|0;e=b+32|0;c[(e&p)>>2]=c[(g&p)>>2];c[(e&p)+4>>2]=f;c[(d&p)+92>>2]=c[(a&p)+68>>2];c[(b&p)+80>>2]=c[(a&p)+72>>2];return c[(a&p)+44>>2]|0}function Yl(a,c){a=a|0;c=c|0;if((b[(a&o)+8>>1]&2)!=0?(d[(a&n)+10>>0]|0|0)!=(c|0):0)c=Bn(a,c&255)|0;else c=0;return c|0}function Zl(a,d,f){a=a|0;d=d|0;f=f|0;var g=0;g=a+8|0;if(b[(g&o)>>1]&9312)vg(a);c[(a&p)>>2]=c[(d&p)>>2];c[(a&p)+4>>2]=c[(d&p)+4>>2];c[(a&p)+8>>2]=c[(d&p)+8>>2];c[(a&p)+12>>2]=c[(d&p)+12>>2];c[(a&p)+16>>2]=c[(d&p)+16>>2];if(!(b[(d&o)+8>>1]&2048))b[(g&o)>>1]=(e[(g&o)>>1]|0)&58367|f;return}function _l(a,d){a=a|0;d=d|0;var e=0,f=0;if(!((b[(a&o)+8>>1]&9312)==0?(c[(a&p)+24>>2]|0)==0:0))Qg(a);a=a+0|0;e=d+0|0;f=a+40|0;do{c[(a&p)>>2]=c[(e&p)>>2];a=a+4|0;e=e+4|0}while((a|0)<(f|0));b[(d&o)+8>>1]=1;c[(d&p)+24>>2]=0;return}function $l(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0;q=c[(a&p)>>2]|0;m=q+500|0;f=c[(m&p)>>2]|0;do if((f|0)!=0?(n=a+104|0,e=c[(n&p)>>2]|0,(e|0)!=0):0){o=e+-1|0;k=q+20|0;e=c[(k&p)>>2]|0;if((e|0)>0){i=q+16|0;j=(b|0)==2;g=e;h=0;e=0;do{f=c[((c[(i&p)>>2]|0)+(h<<4)&p)+4>>2]|0;if(f){if(j?(l=um(f,2,o)|0,(l|0)!=0):0)f=l;else f=um(f,1,o)|0;g=c[(k&p)>>2]|0;e=(e|0)==0?f:e}h=h+1|0}while((h|0)<(g|0));c[(m&p)>>2]=(c[(m&p)>>2]|0)+-1;c[(n&p)>>2]=0;if(!e)e=13;else{d=e;e=16}}else{c[(m&p)>>2]=f+-1;c[(n&p)>>2]=0;e=13}do if((e|0)==13){if((b|0)==2?(d=sm(q,2,o)|0,(d|0)!=0):0)break;d=sm(q,1,o)|0;e=16}while(0);if((e|0)==16)if((b|0)!=2)break;m=a+152|0;l=c[(m&p)+4>>2]|0;k=q+504|0;c[(k&p)>>2]=c[(m&p)>>2];c[(k&p)+4>>2]=l;k=a+160|0;l=c[(k&p)+4>>2]|0;m=q+512|0;c[(m&p)>>2]=c[(k&p)>>2];c[(m&p)+4>>2]=l}else d=0;while(0);return d|0}function am(d){d=d|0;var f=0,g=0;f=d+12|0;if(!(eh(d,(c[(f&p)>>2]|0)+2|0,1)|0)){g=d+16|0;a[((c[(g&p)>>2]|0)+(c[(f&p)>>2]|0)&n)>>0]=0;a[((c[(g&p)>>2]|0)+(c[(f&p)>>2]|0)&n)+1>>0]=0;f=d+8|0;b[(f&o)>>1]=e[(f&o)>>1]|0|512;f=0}else f=7;return f|0}function bm(d,f,g){d=d|0;f=f|0;g=g|0;var l=0,m=0,r=0,s=0,t=0,u=0,v=0,w=0;u=i;i=i+16|0;if((i|0)>=(j|0))fa();s=u;t=d+8|0;m=b[(t&o)>>1]|0;if(!(fh(d,32)|0)){l=d+16|0;r=c[(l&p)>>2]|0;if(!(m&4)){h[(k&q)>>3]=+h[(d&q)>>3];c[(s&p)>>2]=c[(k&p)>>2];c[(s&p)+4>>2]=c[(k&p)+4>>2];ad(32,r,20272,s)|0}else{w=d;v=c[(w&p)+4>>2]|0;m=s;c[(m&p)>>2]=c[(w&p)>>2];c[(m&p)+4>>2]=v;ad(32,r,19920,s)|0}m=c[(l&p)>>2]|0;if(!m)l=0;else{l=m;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;l=l-m&1073741823}c[(d&p)+12>>2]=l;a[(d&n)+10>>0]=1;l=e[(t&o)>>1]|514;b[(t&o)>>1]=g<<24>>24==0?l:l&65523;Yl(d,f&255)|0;l=0}else l=7;i=u;return l|0}function cm(a){a=a|0;var b=0,c=0;b=e[(a&o)+8>>1]|0;c=b&12;if(!c)if(!(b&18))b=0;else b=np(a)|0;else b=c&65535;return b|0}function dm(a){a=a|0;var d=0.0,f=0,g=0,i=0,j=0;d=+h[(a&q)>>3];if(!(d<=-9223372036854775808.0)&!(d>=9223372036854775808.0)?(f=~~d>>>0,g=+R(d)>=1.0?(d>0.0?~~+da(+Q(d/4294967296.0),4294967295.0)>>>0:~~+ba((d-+(~~d>>>0))/4294967296.0)>>>0):0,i=jw(f|0,g|0,1,-2147483648)|0,j=G,!(d!=+(f>>>0)+4294967296.0*+(g|0)|(j>>>0<0|(j|0)==0&i>>>0<2))):0){i=a;c[(i&p)>>2]=f;c[(i&p)+4>>2]=g;f=a+8|0;b[(f&o)>>1]=(e[(f&o)>>1]|0)&48640|4}return}function em(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=a+204|0;e=c[(f&p)>>2]|0;a:do if(e){h=(b|0)<0;do{while(1){if(!h){if((c[(e&p)>>2]|0)!=(b|0))break;g=c[(e&p)+4>>2]|0;if((g|0)<=31?(1<>2]|0;if(g)cc[g&31](c[(e&p)+8>>2]|0);c[(f&p)>>2]=c[(e&p)+16>>2];mg(c[(a&p)>>2]|0,e);e=c[(f&p)>>2]|0;if(!e)break a}f=e+16|0;e=c[(f&p)>>2]|0}while((e|0)!=0)}while(0);return}function fm(a,b,c){a=a|0;b=b|0;c=c|0;do if(b<<24>>24>66){b=e[(a&o)+8>>1]|0;if(!(b&4)){if(b&8){dm(a);break}if(b&2)rh(a,1)}}else if(b<<24>>24==66?(b=e[(a&o)+8>>1]|0,!((b&2|0)!=0|(b&12|0)==0)):0)bm(a,c,1)|0;while(0);return}function gm(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,i=0,j=0;j=a+8|0;g=b[(j&o)>>1]|0;i=g&65535;do if(!(i&1)){d=d&255;if((d|0)==68){d=Vg(a)|0;g=a;c[(g&p)>>2]=d;c[(g&p)+4>>2]=G;b[(j&o)>>1]=(e[(j&o)>>1]|0)&48640|4;break}else if((d|0)==67){op(a);break}else if((d|0)==69){h[(a&q)>>3]=+Ug(a);b[(j&o)>>1]=(e[(j&o)>>1]|0)&48640|8;break}else if((d|0)==65){if(i&16){b[(j&o)>>1]=i&65040;break}if(!((i&2|0)!=0|(i&12|0)==0)){bm(a,f,1)|0;g=b[(j&o)>>1]|0}b[(j&o)>>1]=g&48640|16;break}else{d=i>>>3&2|i;g=d&65535;b[(j&o)>>1]=g;if(!((d&2|0)!=0|(i&12|0)==0)){bm(a,f,1)|0;g=b[(j&o)>>1]|0}b[(j&o)>>1]=g&49123;break}}while(0);return}function hm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0.0,k=0,l=0,m=0;l=b[(a&o)+8>>1]|0;k=l&65535;i=b[(d&o)+8>>1]|0;m=i&65535;f=(i|l)&65535;do if(!(f&1)){if(!(f&12)){if(f&2){if(!(k&2)){f=1;break}if(!(m&2)){f=-1;break}if(e){f=pp(a,d,e,0)|0;break}}f=qp(a,d)|0;break}if((l&4&i)<<16>>16){l=a;k=c[(l&p)>>2]|0;l=c[(l&p)+4>>2]|0;i=d;f=c[(i&p)>>2]|0;i=c[(i&p)+4>>2]|0;if((l|0)<(i|0)|(l|0)==(i|0)&k>>>0>>0){f=-1;break}f=((l|0)>(i|0)|(l|0)==(i|0)&k>>>0>f>>>0)&1;break}if(!(k&8)){if(!(k&4)){f=1;break}f=a;j=+((c[(f&p)>>2]|0)>>>0)+4294967296.0*+(c[(f&p)+4>>2]|0)}else j=+h[(a&q)>>3];if(!(m&8)){if(!(m&4)){f=-1;break}f=d;g=+((c[(f&p)>>2]|0)>>>0)+4294967296.0*+(c[(f&p)+4>>2]|0)}else g=+h[(d&q)>>3];if(jg&1}else f=(m&1)-(k&1)|0;while(0);return f|0}function im(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();f=g;e=g+8|0;d=b+48|0;d=Cm(c[(b&p)>>2]|0,0,c[(d&p)>>2]|0,c[(d&p)+4>>2]|0,0,e)|0;do if(!d)if(!(c[(e&p)>>2]|0)){a[(b&n)+26>>0]=0;c[(b&p)+60>>2]=0;d=0;break}else{c[(f&p)>>2]=67421;c[(f&p)+4>>2]=10788;bd(11,13600,f);d=11;break}while(0);i=g;return d|0}function jm(b){b=b|0;var d=0,e=0,f=0;e=c[(b&p)>>2]|0;f=e+73|0;d=a[(f&n)>>0]|0;do if((d&255)>2){d=Kn(e)|0;if(!d){d=a[(f&n)>>0]|0;f=5;break}else{c[(b&p)+60>>2]=0;f=6;break}}else f=5;while(0);if((f|0)==5){c[(b&p)+60>>2]=0;if(d<<24>>24==1)d=0;else{d=0;f=6}}if((f|0)==6)a[(b&n)+25>>0]=1;return d|0}function km(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=f+24|0;if(!(b[(f&o)+44>>1]|0)){j=b[(f&o)+76>>1]|0;i=c[(f+(j<<2)&p)+120>>2]|0;j=e[(f+(j<<1)&o)+78>>1]<<1;k=c[(i&p)+64>>2]|0;rp(i,(c[(i&p)+56>>2]|0)+((d[(k+j&n)>>0]<<8|d[(k+(j|1)&n)>>0])&e[(i&o)+20>>1])|0,h);f=f+72|0;a[(f&n)>>0]=d[(f&n)>>0]|2}i=h;f=c[(i&p)+4>>2]|0;h=g;c[(h&p)>>2]=c[(i&p)>>2];c[(h&p)+4>>2]=f;return}function lm(f,g){f=f|0;g=g|0;var h=0,i=0,j=0;if(!(b[(f&o)+44>>1]|0)){i=b[(f&o)+76>>1]|0;h=c[(f+(i<<2)&p)+120>>2]|0;i=e[(f+(i<<1)&o)+78>>1]<<1;j=c[(h&p)+64>>2]|0;rp(h,(c[(h&p)+56>>2]|0)+((d[(j+i&n)>>0]<<8|d[(j+(i|1)&n)>>0])&e[(h&o)+20>>1])|0,f+24|0);h=f+72|0;a[(h&n)>>0]=d[(h&n)>>0]|2}c[(g&p)>>2]=c[(f&p)+36>>2];return}function mm(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;e=d[(a&n)>>0]|0;g=d[(a&n)+1>>0]|0;do if(g&128){f=d[(a&n)+2>>0]|0;if(!(f&128)){c[(b&p)>>2]=(f|e<<14)&2080895|g<<7&16256;e=3;break}else{e=sp(a,h)|0;g=h;f=c[(g&p)>>2]|0;c[(b&p)>>2]=((f|0)==(f|0)?0==(c[(g&p)+4>>2]|0):0)?f:-1;break}}else{c[(b&p)>>2]=e<<7&16256|g;e=2}while(0);i=k;return e|0}function nm(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=(h|0)==0;do if((g+f|0)>>>0>(e[(d&o)+40>>1]|0)>>>0){l=i+8|0;b[(l&o)>>1]=1;h=fh(i,g+2|0)|0;if(!h){k=i+16|0;h=c[(k&p)>>2]|0;if(j)h=Dh(d,f,g,h)|0;else h=Lm(d,f,g,h,0)|0;if(!h){a[((c[(k&p)>>2]|0)+g&n)>>0]=0;a[((c[(k&p)>>2]|0)+g&n)+1>>0]=0;b[(l&o)>>1]=528;c[(i&p)+12>>2]=g;h=0;break}if((b[(l&o)>>1]&9312)==0?(c[(i&p)+24>>2]|0)==0:0)break;Qg(i)}}else{c[(i&p)+16>>2]=(c[(d&p)+32>>2]|0)+f;b[(i&o)+8>>1]=4112;c[(i&p)+12>>2]=g;h=0}while(0);return h|0}function om(e,f,g){e=e|0;f=f|0;g=g|0;var h=0;switch(f|0){case 9:case 8:{e=g;c[(e&p)>>2]=f+-8;c[(e&p)+4>>2]=0;b[(g&o)+8>>1]=4;e=0;break}case 1:{f=a[(e&n)>>0]|0;e=g;c[(e&p)>>2]=f;c[(e&p)+4>>2]=((f|0)<0)<<31>>31;b[(g&o)+8>>1]=4;e=1;break}case 0:case 11:case 10:{b[(g&o)+8>>1]=1;e=0;break}case 3:{f=d[(e&n)+1>>0]<<8|a[(e&n)>>0]<<16|d[(e&n)+2>>0];e=g;c[(e&p)>>2]=f;c[(e&p)+4>>2]=((f|0)<0)<<31>>31;b[(g&o)+8>>1]=4;e=3;break}case 4:{f=d[(e&n)+1>>0]<<16|a[(e&n)>>0]<<24|d[(e&n)+2>>0]<<8|d[(e&n)+3>>0];e=g;c[(e&p)>>2]=f;c[(e&p)+4>>2]=((f|0)<0)<<31>>31;b[(g&o)+8>>1]=4;e=4;break}case 2:{f=a[(e&n)>>0]<<8|d[(e&n)+1>>0];e=g;c[(e&p)>>2]=f;c[(e&p)+4>>2]=((f|0)<0)<<31>>31;b[(g&o)+8>>1]=4;e=2;break}case 7:case 6:{tp(e,f,g);e=8;break}case 5:{h=a[(e&n)>>0]<<8|d[(e&n)+1>>0];f=g;c[(f&p)>>2]=d[(e&n)+3>>0]<<16|d[(e&n)+2>>0]<<24|d[(e&n)+4>>0]<<8|d[(e&n)+5>>0];c[(f&p)+4>>2]=h;b[(g&o)+8>>1]=4;e=6;break}default:{c[(g&p)+16>>2]=e;e=(f+-12|0)>>>1;c[(g&p)+12>>2]=e;b[(g&o)+8>>1]=b[((f&1)<<1&o)+34328>>1]|0}}return e|0}function pm(b,c,d){b=b|0;c=c|0;d=d|0;do if(!(d>>>0<0|(d|0)==0&c>>>0<128))if(d>>>0<0|(d|0)==0&c>>>0<16384){d=mw(c|0,d|0,7)|0;a[(b&n)>>0]=d|128;a[(b&n)+1>>0]=c&127;c=2;break}else{c=up(b,c,d)|0;break}else{a[(b&n)>>0]=c&127;c=1}while(0);return c|0}function qm(e){e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();l=m;k=e+73|0;f=a[(k&n)>>0]|0;do if((f&255)>2)if(f<<24>>24==4){f=c[(e&p)+68>>2]|0;break}else{g=e+56|0;Wc(c[(g&p)>>2]|0);c[(g&p)>>2]=0;a[(k&n)>>0]=0;g=5;break}else g=5;while(0);a:do if((g|0)==5){h=e+76|0;f=b[(h&o)>>1]|0;do if(f<<16>>16<=-1){f=c[(e&p)+60>>2]|0;if(!f){a[(k&n)>>0]=0;f=0;break a}g=e+120|0;f=vp(c[((c[(e&p)>>2]|0)&p)+4>>2]|0,f,g,(a[(e&n)+72>>0]&1)<<1^2)|0;if(!f){b[(h&o)>>1]=0;f=g;break}else{a[(k&n)>>0]=0;break a}}else{if(f<<16>>16)do{g=f+-1<<16>>16;b[(h&o)>>1]=g;f=c[(e+(f<<16>>16<<2)&p)+120>>2]|0;if(!f)f=g;else{Bg(c[(f&p)+68>>2]|0);f=b[(h&o)>>1]|0}}while(f<<16>>16!=0);f=e+120|0}while(0);f=c[(f&p)>>2]|0;if((a[(f&n)>>0]|0)!=0?((c[(e&p)+16>>2]|0)==0|0)==(d[(f&n)+2>>0]|0):0){b[(e&o)+78>>1]=0;b[(e&o)+44>>1]=0;g=e+72|0;a[(g&n)>>0]=d[(g&n)>>0]&241;if(b[(f&o)+18>>1]|0){a[(k&n)>>0]=1;f=0;break}if(a[(f&n)+5>>0]|0){a[(k&n)>>0]=0;f=0;break}if((c[(f&p)+72>>2]|0)==1){g=d[(f&n)+6>>0]|0;f=c[(f&p)+56>>2]|0;f=d[(f+g&n)+9>>0]<<16|d[(f+g&n)+8>>0]<<24|d[(f+g&n)+10>>0]<<8|d[(f+g&n)+11>>0];a[(k&n)>>0]=1;f=rm(e,f)|0;break}else{c[(l&p)>>2]=57629;c[(l&p)+4>>2]=10788;bd(11,13600,l);f=11;break}}c[(l&p)>>2]=57618;c[(l&p)+4>>2]=10788;bd(11,13600,l);f=11}while(0);i=m;return f|0}function rm(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();m=q;l=q+8|0;g=e+76|0;k=b[(g&o)>>1]|0;h=k<<16>>16;do if(k<<16>>16<=18){k=e+72|0;f=vp(c[(e&p)+4>>2]|0,f,l,(a[(k&n)>>0]&1)<<1^2)|0;if(!f){f=c[(l&p)>>2]|0;l=h+1|0;c[(e+(l<<2)&p)+120>>2]=f;b[(e+(l<<1)&o)+78>>1]=0;b[(g&o)>>1]=(b[(g&o)>>1]|0)+1<<16>>16;b[(e&o)+44>>1]=0;a[(k&n)>>0]=d[(k&n)>>0]&249;if((b[(f&o)+18>>1]|0)!=0?(a[(f&n)+2>>0]|0)==(a[((c[(e+(h<<2)&p)+120>>2]|0)&n)+2>>0]|0):0){f=0;break}c[(m&p)>>2]=57499;c[(m&p)+4>>2]=10788;bd(11,13600,m);f=11}}else{c[(m&p)>>2]=57487;c[(m&p)+4>>2]=10788;bd(11,13600,m);f=11}while(0);i=q;return f|0}function sm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=a+328|0;a:do if(!(c[(j&p)>>2]|0))a=0;else{g=a+304|0;h=d+1|0;i=0;while(1){if((i|0)>=(c[(g&p)>>2]|0)){a=0;break a}f=c[((c[(j&p)>>2]|0)+(i<<2)&p)>>2]|0;a=c[(c[(f&p)+4>>2]&p)>>2]|0;e=c[(f&p)+8>>2]|0;if((e|0)!=0?(c[(a&p)>>2]|0)>1:0){if(!b){a=c[(a&p)+80>>2]|0;c[(f&p)+20>>2]=h}else if((b|0)==2)a=c[(a&p)+88>>2]|0;else a=c[(a&p)+84>>2]|0;if((a|0)!=0?(c[(f&p)+20>>2]|0)>(d|0):0){a=rc[a&127](e,d)|0;if(!a){i=i+1|0;continue}else break a}}i=i+1|0}}while(0);return a|0}function tm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();f=h;e=c[(b&p)>>2]|0;if(!d){d=b+144|0;k=c[(d&p)+4>>2]|0;if((k|0)>0|(k|0)==0&(c[(d&p)>>2]|0)>>>0>0)g=4;else e=0}else{d=e+504|0;k=e+512|0;d=jw(c[(k&p)>>2]|0,c[(k&p)+4>>2]|0,c[(d&p)>>2]|0,c[(d&p)+4>>2]|0)|0;k=G;if((k|0)>0|(k|0)==0&d>>>0>0)g=4;else e=0}if((g|0)==4){c[(b&p)+80>>2]=787;a[(b&n)+86>>0]=2;dh(b+44|0,e,34376,f);e=1}i=h;return e|0}function um(e,f,g){e=e|0;f=f|0;g=g|0;var h=0;if((e|0)!=0?(a[(e&n)+8>>0]|0)==2:0){h=c[(e&p)+4>>2]|0;c[(h&p)+4>>2]=c[(e&p)>>2];f=jp(c[(h&p)>>2]|0,f,g)|0;if(!f){if((g|0)<0?(b[(h&o)+22>>1]&8)!=0:0)c[(h&p)+44>>2]=0;f=Cg(h)|0;e=c[((c[(h&p)+12>>2]|0)&p)+56>>2]|0;c[(h&p)+44>>2]=d[(e&n)+29>>0]<<16|d[(e&n)+28>>0]<<24|d[(e&n)+30>>0]<<8|d[(e&n)+31>>0]}}else f=0;return f|0}function vm(a,b){a=a|0;b=b|0;a=a+16|0;ql(c[((c[(a&p)>>2]|0)+(b<<4)&p)+12>>2]|0);if((b|0)!=1)ql(c[((c[(a&p)>>2]|0)&p)+28>>2]|0);return}function wm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;f=c[(a&p)+4>>2]|0;c[(f&p)+4>>2]=c[(a&p)>>2];if((b|0)==15)f=(c[(a&p)+20>>2]|0)+(c[((c[(f&p)>>2]|0)&p)+100>>2]|0)|0;else{b=b<<2;f=c[((c[(f&p)+12>>2]|0)&p)+56>>2]|0;f=(d[(f+b&n)+37>>0]|0)<<16|(d[(f+b&n)+36>>0]|0)<<24|(d[(f+b&n)+38>>0]|0)<<8|(d[(f+b&n)+39>>0]|0)}c[(e&p)>>2]=f;return}function xm(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,q=0;k=(c[(d&p)+28>>2]|0)-e|0;i=c[(d&p)+8>>2]|0;q=(f<<3)+88|0;m=(h|0)!=0;l=d+56|0;j=c[((c[(l&p)>>2]|0)+(e<<2)&p)>>2]|0;if(j){Bm(d,j);c[((c[(l&p)>>2]|0)+(e<<2)&p)>>2]=0}if(!(fh(i+(k*40|0)|0,(m?200:0)+q|0)|0)){k=i+(k*40|0)+16|0;h=c[(k&p)>>2]|0;c[((c[(l&p)>>2]|0)+(e<<2)&p)>>2]=h;i=h+0|0;j=i+88|0;do{c[(i&p)>>2]=0;i=i+4|0}while((i|0)<(j|0));a[(h&n)+24>>0]=g;b[(h&o)+20>>1]=f;c[(h&p)+80>>2]=h+84+(f<<2);if(m){i=(c[(k&p)>>2]|0)+q|0;c[(h&p)>>2]=i;i=i+0|0;j=i+76|0;do{c[(i&p)>>2]=0;i=i+4|0}while((i|0)<(j|0))}}else h=0;return h|0}function ym(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=c[(d&p)+4>>2]|0;c[(k&p)+4>>2]=c[(d&p)>>2];if(f)if(!(b[(k&o)+22>>1]&1)){j=k+80|0;if(!(c[(j&p)>>2]|0)){i=Go(c[(k&p)+32>>2]|0)|0;c[(j&p)>>2]=i;if(!i)i=7;else{l=i;i=l;a[(i&n)>>0]=0;a[(i&n)+1>>0]=0;a[(i&n)+2>>0]=0;a[(i&n)+3>>0]=0;l=l+4|0;a[(l&n)>>0]=0;a[(l&n)+1>>0]=0;a[(l&n)+2>>0]=0;a[(l&n)+3>>0]=0;c[(j&p)>>2]=(c[(j&p)>>2]|0)+4;l=6}}else l=6}else i=8;else l=6;if((l|0)==6){if((e|0)==1)e=(c[(k&p)+44>>2]|0)!=0&1;c[(h&p)+60>>2]=e;b[(h&o)+76>>1]=-1;c[(h&p)+16>>2]=g;c[(h&p)>>2]=d;c[(h&p)+4>>2]=k;a[(h&n)+72>>0]=f;i=k+8|0;e=c[(i&p)>>2]|0;c[(h&p)+8>>2]=e;if(e)c[(e&p)+12>>2]=h;c[(i&p)>>2]=h;a[(h&n)+73>>0]=0;i=0}return i|0}function zm(f,g,h,k,l,m){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,O=0,P=0,Q=0,R=0,S=0;S=i;i=i+128|0;if((i|0)>=(j|0))fa();D=S;K=S+12|0;H=S+8|0;P=S+16|0;N=(g|0)==0;if(!N){r=(a[(g&n)>>0]|0)==0;if(_v(g,14640)|0)if(r)J=4;else{r=0;J=5}else O=1}else J=4;if((J|0)==4)if((a[(h&n)+64>>0]|0)==2){O=1;r=1}else{r=1;J=5}if((J|0)==5)O=(m&128|0)!=0;M=O?l|2:l;if((m&256|0)!=0&(O|r))m=m&-769|512;R=qg(48,0)|0;a:do if(R){x=R+0|0;w=x+48|0;do{a[(x&n)>>0]=0;x=x+1|0}while((x|0)<(w|0));c[(R&p)>>2]=h;c[(R&p)+32>>2]=R;c[(R&p)+36>>2]=1;b:do if(!r?!(O&(m&64|0)==0|(m&131072|0)==0):0){if(N)r=1;else{r=g;while(1)if(!(a[(r&n)>>0]|0))break;else r=r+1|0;r=(r-g&1073741823)+1|0}l=(c[(f&p)+8>>2]|0)+1|0;u=(l|0)>(r|0)?l:r;u=qg(u,((u|0)<0)<<31>>31)|0;t=R+9|0;a[(t&n)>>0]=1;if(!u){Wc(R);q=7;break a}if(!O){a[(u&n)>>0]=0;r=pc[c[(f&p)+36>>2]&31](f,g,l,u)|0;if(r){Wc(u);Wc(R);q=r;break a}}else kw(u|0,g|0,r|0)|0;r=c[3664]|0;c:do if(r){while(1){l=c[(r&p)>>2]|0;if((_v(u,c[(l&p)+168>>2]|0)|0)==0?(c[(l&p)>>2]|0)==(f|0):0)break;r=c[(r&p)+68>>2]|0;if(!r)break c}l=c[(h&p)+20>>2]|0;d:do if((l|0)>0){s=c[(h&p)+16>>2]|0;while(1){l=l+-1|0;G=c[(s+(l<<4)&p)+4>>2]|0;if((G|0)!=0?(c[(G&p)+4>>2]|0)==(r|0):0)break;if((l|0)<=0)break d}Wc(u);Wc(R);q=19;break a}while(0);c[(R&p)+4>>2]=r;G=r+64|0;c[(G&p)>>2]=(c[(G&p)>>2]|0)+1;Wc(u);if(!r){J=32;break b}if(!(a[(t&n)>>0]|0))break b;else{J=105;break b}}while(0);Wc(u);J=32}else J=32;while(0);e:do if((J|0)==32){L=qg(84,0)|0;if(L){x=L+0|0;w=x+84|0;do{a[(x&n)>>0]=0;x=x+1|0}while((x|0)<(w|0));F=M&1;G=(F|0)==0;c[(K&p)>>2]=1024;E=f+4|0;r=c[(E&p)>>2]|0;if((r|0)>40)l=r+7&-8;else l=40;c[(L&p)>>2]=0;do if(!(M&2))if(!N)if(a[(g&n)>>0]|0){y=f+8|0;t=(c[(y&p)>>2]|0)+1|0;A=t<<1;A=qg(A,((A|0)<0)<<31>>31)|0;if(!A)q=7;else{a[(A&n)>>0]=0;r=pc[c[(f&p)+36>>2]&31](f,g,t,A)|0;t=A;while(1)if(!(a[(t&n)>>0]|0))break;else t=t+1|0;x=t-A&1073741823;u=g;while(1)if(!(a[(u&n)>>0]|0))break;else u=u+1|0;w=(u-g&1073741823)+1|0;u=a[(g+w&n)>>0]|0;w=g+w|0;if(!(u<<24>>24))t=w;else{t=w;do{if(!(u<<24>>24))u=t;else{u=t;do u=u+1|0;while((a[(u&n)>>0]|0)!=0)}u=u-t&1073741823;s=t+(u+1)|0;v=s;while(1)if(!(a[(v&n)>>0]|0))break;else v=v+1|0;t=t+(u+2+(v-s&1073741823))|0;u=a[(t&n)>>0]|0}while(u<<24>>24!=0)}if(!r){if((x+8|0)<=(c[(y&p)>>2]|0)){z=1;D=0;y=x;x=t+1-w|0;u=A;J=58;break}c[(D&p)>>2]=46171;c[(D&p)+4>>2]=10788;bd(14,14848,D);r=14}Wc(A);J=89}}else{z=1;D=0;y=0;x=0;u=0;w=0;J=58}else{g=0;z=0;D=0;y=0;x=0;u=0;w=0;J=58}else if(!N)if(a[(g&n)>>0]|0){u=kh(0,g)|0;if(!u)q=7;else{r=u;while(1)if(!(a[(r&n)>>0]|0))break;else r=r+1|0;g=0;z=0;D=1;y=r-u&1073741823;x=0;w=0;J=58}}else{z=1;D=1;y=0;x=0;u=0;w=0;J=58}else{g=0;z=0;D=1;y=0;x=0;u=0;w=0;J=58}while(0);do if((J|0)==58){t=(l<<1)+17+(y*3|0)+x+((c[(E&p)>>2]|0)+271&-8)|0;C=qg(t,0)|0;if(!C){if(!u){q=7;break}Wc(u);q=7;break}fw(C|0,0,t|0)|0;A=C+204|0;c[(A&p)>>2]=C+216;B=C+60|0;c[(B&p)>>2]=C+264;v=(c[(E&p)>>2]|0)+271&-8;c[(C&p)+68>>2]=C+v;v=v+l|0;c[(C&p)+64>>2]=C+v;v=v+l|0;t=C+v|0;r=C+168|0;c[(r&p)>>2]=t;if(u){s=y+1|0;l=C+172|0;c[(l&p)>>2]=C+(x+s+v);kw(t|0,u|0,y|0)|0;if(x)kw((c[(r&p)>>2]|0)+s|0,w|0,x|0)|0;kw(c[(l&p)>>2]|0,u|0,y|0)|0;x=(c[(l&p)>>2]|0)+y+0|0;v=14928;w=x+10|0;do{a[(x&n)>>0]=a[(v&n)>>0]|0;x=x+1|0;v=v+1|0}while((x|0)<(w|0));l=(c[(l&p)>>2]|0)+(y+9)|0;E=C+212|0;c[(E&p)>>2]=l;kw(l|0,u|0,y|0)|0;E=(c[(E&p)>>2]|0)+y|0;a[(E&n)>>0]=a[14944]|0;a[(E&n)+1>>0]=a[14945]|0;a[(E&n)+2>>0]=a[14946]|0;a[(E&n)+3>>0]=a[14947]|0;a[(E&n)+4>>0]=a[14948]|0;Wc(u)}c[(C&p)>>2]=f;c[(C&p)+144>>2]=m;do if(z?(a[(g&n)>>0]|0)!=0:0){c[(H&p)>>2]=0;r=tc[c[(f&p)+24>>2]&31](f,c[(r&p)>>2]|0,c[(B&p)>>2]|0,m&556927,H)|0;s=c[(H&p)>>2]&1;if(!r){r=c[(B&p)>>2]|0;r=lc[c[((c[(r&p)>>2]|0)&p)+48>>2]&127](r)|0;do if((s|0)==0?(wp(C),I=c[(C&p)+148>>2]|0,I>>>0>1024):0)if(I>>>0>8192){c[(K&p)>>2]=8192;break}else{c[(K&p)>>2]=I;break}while(0);a[(C&n)+13>>0]=fg(g,14952,0)|0;if((r&8192|0)==0?(fg(g,14960,0)|0)==0:0){v=0;J=77;break}r=m|1;J=76}}else{r=m;J=76}while(0);if((J|0)==76){a[(C&n)+16>>0]=1;a[(C&n)+17>>0]=4;a[(C&n)+13>>0]=1;s=r&1;v=1;J=77}if((J|0)==77){r=al(C,K,-1)|0;if(!r){l=c[(K&p)>>2]|0;u=(D|0)==0;m=D^1;t=u?75:0;r=c[(A&p)>>2]|0;x=r+0|0;w=x+48|0;do{c[(x&p)>>2]=0;x=x+4|0}while((x|0)<(w|0));c[(r&p)+20>>2]=1;c[(r&p)+24>>2]=80;a[(r&n)+28>>0]=m;a[(r&n)+29>>0]=2;c[(r&p)+32>>2]=t;c[(r&p)+36>>2]=C;c[(r&p)+16>>2]=100;r=Ho(r,l)|0;if(!r){a[(C&n)+6>>0]=F^1;c[(C&p)+156>>2]=1073741823;a[(C&n)+12>>0]=v;a[(C&n)+4>>0]=v;a[(C&n)+18>>0]=v;a[(C&n)+15>>0]=D;a[(C&n)+14>>0]=s;a[(C&n)+7>>0]=v;if(!(v<<24>>24)){a[(C&n)+8>>0]=1;a[(C&n)+11>>0]=2;a[(C&n)+10>>0]=34;a[(C&n)+9>>0]=2}b[(C&o)+140>>1]=80;H=C+160|0;c[(H&p)>>2]=-1;c[(H&p)+4>>2]=-1;wp(C);do if(G){if(u)break;a[(C&n)+5>>0]=4}else a[(C&n)+5>>0]=2;while(0);c[(C&p)+196>>2]=21;c[(L&p)>>2]=C;J=90;break}}}l=c[(B&p)>>2]|0;m=c[(l&p)>>2]|0;if(m){lc[c[(m&p)+4>>2]&127](l)|0;c[(l&p)>>2]=0}$k(c[(C&p)+200>>2]|0);Wc(C);J=89}while(0);if((J|0)==89)if(!r)J=90;else q=r;do if((J|0)==90){r=c[(L&p)>>2]|0;H=h+40|0;w=c[(H&p)+4>>2]|0;x=r+128|0;c[(x&p)>>2]=c[(H&p)>>2];c[(x&p)+4>>2]=w;x=P+0|0;w=x+100|0;do{a[(x&n)>>0]=0;x=x+1|0}while((x|0)<(w|0));r=c[(r&p)+60>>2]|0;l=c[(r&p)>>2]|0;if((l|0)!=0?(q=tc[c[(l&p)+8>>2]&31](r,P,100,0,0)|0,!((q|0)==0|(q|0)==522)):0)break;a[(L&n)+16>>0]=M;c[(L&p)+4>>2]=h;r=c[(L&p)>>2]|0;l=r+176|0;c[(l&p)>>2]=76;c[(r&p)+180>>2]=L;m=c[(r&p)+60>>2]|0;q=c[(m&p)>>2]|0;if(!q)l=r;else{ac[c[(q&p)+40>>2]&63](m,15,l)|0;l=c[(L&p)>>2]|0}c[(R&p)+4>>2]=L;c[(L&p)+8>>2]=0;c[(L&p)+12>>2]=0;if(a[(l&n)+14>>0]|0){H=L+22|0;b[(H&o)>>1]=e[(H&o)>>1]|1}H=d[(P&n)+17>>0]<<16|d[(P&n)+16>>0]<<8;m=L+32|0;c[(m&p)>>2]=H;if((H+-512|0)>>>0<=65024?(H+16777215&H|0)==0:0){r=a[(P&n)+20>>0]|0;H=L+22|0;b[(H&o)>>1]=e[(H&o)>>1]|2;a[(L&n)+17>>0]=(d[(P&n)+53>>0]<<16|d[(P&n)+52>>0]<<24|d[(P&n)+54>>0]<<8|d[(P&n)+55>>0]|0)!=0&1;a[(L&n)+18>>0]=(d[(P&n)+65>>0]<<16|d[(P&n)+64>>0]<<24|d[(P&n)+66>>0]<<8|d[(P&n)+67>>0]|0)!=0&1}else{c[(m&p)>>2]=0;if(N|O)r=0;else{a[(L&n)+17>>0]=0;a[(L&n)+18>>0]=0;r=0}}r=r&255;q=al(l,m,r)|0;if(!q){c[(L&p)+36>>2]=(c[(m&p)>>2]|0)-r;if(!(a[(R&n)+9>>0]|0))break e;c[(L&p)+64>>2]=1;c[(L&p)+68>>2]=c[3664];c[3664]=L;J=105;break e}}while(0);if(L){m=c[(L&p)>>2]|0;if(!m)m=L;else{lp(m);m=L}}else m=0}else{m=0;q=7}Wc(m);Wc(R);c[(k&p)>>2]=0;break a}while(0);f:do if((J|0)==105?(Q=c[(h&p)+20>>2]|0,(Q|0)>0):0){m=c[(h&p)+16>>2]|0;l=0;while(1){q=c[(m+(l<<4)&p)+4>>2]|0;if((q|0)!=0?(a[(q&n)+9>>0]|0)!=0:0){l=q;break}l=l+1|0;if((l|0)>=(Q|0))break f}while(1){q=l+28|0;m=c[(q&p)>>2]|0;if(!m){m=l;break}else l=m}r=c[(R&p)+4>>2]|0;if(r>>>0<(c[(m&p)+4>>2]|0)>>>0){c[(R&p)+24>>2]=m;c[(R&p)+28>>2]=0;c[(q&p)>>2]=R;break}while(1){q=m+24|0;l=c[(q&p)>>2]|0;if(!l){J=113;break}if((c[(l&p)+4>>2]|0)>>>0>>0)m=l;else{J=115;break}}if((J|0)==113){c[(R&p)+24>>2]=0;c[(R&p)+28>>2]=m}else if((J|0)==115){c[(R&p)+24>>2]=l;c[(R&p)+28>>2]=m;c[(l&p)+28>>2]=R}c[(q&p)>>2]=R}while(0);c[(k&p)>>2]=R;q=c[(R&p)+4>>2]|0;c[(q&p)+4>>2]=c[(R&p)>>2];if(!(c[(q&p)+48>>2]|0)){q=c[((c[(q&p)>>2]|0)&p)+204>>2]|0;c[(q&p)+16>>2]=2e3;jc[c[8868>>2]&15](c[(q&p)+40>>2]|0,2e3);q=0}else q=0}else q=7;while(0);i=S;return q|0}function Am(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+48|0;if((i|0)>=(j|0))fa();t=A;x=A+28|0;y=A+24|0;w=A+20|0;o=A+16|0;r=A+12|0;s=A+32|0;u=A+8|0;h=c[(b&p)>>2]|0;v=c[(b&p)+4>>2]|0;g=v+4|0;c[(g&p)>>2]=h;a:do if(!(a[(v&n)+17>>0]|0)){g=ip(v,x,y,1,0)|0;c[(w&p)>>2]=g;if(!g){h=c[(x&p)>>2]|0;z=39}}else{q=v+8|0;k=c[(q&p)>>2]|0;if(k)do{m=k+72|0;a[(m&n)>>0]=d[(m&n)>>0]&251;k=c[(k&p)+8>>2]|0}while((k|0)!=0);c[(g&p)>>2]=h;m=c[((c[(v&p)+12>>2]|0)&p)+56>>2]|0;m=d[(m&n)+53>>0]<<16|d[(m&n)+52>>0]<<24|d[(m&n)+54>>0]<<8|d[(m&n)+55>>0];c[(y&p)>>2]=m;h=((c[2514]|0)>>>0)/((c[(v&p)+32>>2]|0)>>>0)|0;g=v+36|0;while(1){l=m+1|0;if(l>>>0<2)k=0;else{k=m+-1|0;k=k-((k>>>0)%(((((c[(g&p)>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(h|0)?3:2)+k|0}if((l|0)==(k|0)|(m|0)==(h|0))m=l;else break}c[(y&p)>>2]=l;g=ip(v,r,o,l,1)|0;c[(w&p)>>2]=g;if(!g){m=c[(o&p)>>2]|0;do if((m|0)==(l|0)){h=c[(r&p)>>2]|0;c[(x&p)>>2]=h}else{a[(s&n)>>0]=0;c[(u&p)>>2]=0;k=c[(q&p)>>2]|0;b:do if(!k)g=0;else{while(1){if(k)break;k=c[2]|0;if(!k){g=0;break b}}g=Fl(k,0,0)|0}while(0);c[(w&p)>>2]=g;k=c[(r&p)>>2]|0;if(k)Bg(c[(k&p)+68>>2]|0);if(g)break a;g=dl(v,l,x,0)|0;c[(w&p)>>2]=g;if(g)break a;g=hp(v,l,s,u)|0;c[(w&p)>>2]=g;k=a[(s&n)>>0]|0;if((k+-1&255)>=2){h=c[(x&p)>>2]|0;if(!g){g=Zm(v,h,k,c[(u&p)>>2]|0,m,0)|0;c[(w&p)>>2]=g;if(h)Bg(c[(h&p)+68>>2]|0);if(g)break a;g=dl(v,l,x,0)|0;c[(w&p)>>2]=g;if(g)break a;h=c[(x&p)>>2]|0;k=h+68|0;g=Gg(c[(k&p)>>2]|0)|0;c[(w&p)>>2]=g;if(!g)break;if(!h)break a;Bg(c[(k&p)>>2]|0);break a}}else{c[(t&p)>>2]=60876;c[(t&p)+4>>2]=10788;bd(11,13600,t);c[(w&p)>>2]=11;g=11;h=c[(x&p)>>2]|0}if(!h)break a;Bg(c[(h&p)+68>>2]|0);break a}while(0);zp(v,l,1,0,w);g=c[(w&p)>>2]|0;if(g){if(!h)break;Bg(c[(h&p)+68>>2]|0);break}g=Dg(b,4,l)|0;c[(w&p)>>2]=g;if(g){if(h)Bg(c[(h&p)+68>>2]|0)}else z=39}}while(0);if((z|0)==39){pl(h,(f&1|0)==0?10:13);g=c[((c[(x&p)>>2]|0)&p)+68>>2]|0;if(g)Bg(g);c[(e&p)>>2]=c[(y&p)>>2];g=0}i=A;return g|0}function Bm(a,b){a=a|0;b=b|0;var d=0,e=0;do if(b){a=c[(a&p)>>2]|0;d=b+56|0;e=c[(d&p)>>2]|0;if(e){_m(a,e);Wc(c[(e&p)+40>>2]|0);mg(a,e);c[(d&p)>>2]=0}a=c[(b&p)+4>>2]|0;if(a){Ml(a);break}a=c[(b&p)>>2]|0;if(a){kp(a);break}a=c[(b&p)+32>>2]|0;if(a){e=c[(a&p)>>2]|0;d=c[(e&p)>>2]|0;e=e+4|0;c[(e&p)>>2]=(c[(e&p)>>2]|0)+-1;lc[c[(d&p)+28>>2]&127](a)|0}}while(0);return}function Cm(f,g,h,k,l,m){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,O=0,P=0,Q=0,R=0;Q=i;i=i+16|0;if((i|0)>=(j|0))fa();O=Q+8|0;N=Q;t=f+73|0;do if(((a[(t&n)>>0]|0)==1?(s=d[(f&n)+72>>0]|0,(s&2|0)!=0):0)?(a[((c[(f&p)+120>>2]|0)&n)+2>>0]|0)!=0:0){q=f+24|0;r=c[(q&p)>>2]|0;q=c[(q&p)+4>>2]|0;if((r|0)==(h|0)&(q|0)==(k|0)){c[(m&p)>>2]=0;q=0;break}if((s&8|0)!=0&((q|0)<(k|0)|(q|0)==(k|0)&r>>>0>>0)){c[(m&p)>>2]=-1;q=0}else P=8}else P=8;while(0);do if((P|0)==8){if(!g)J=0;else{r=c[(g&p)>>2]|0;if(((e[(r&o)+8>>1]|0)+(e[(r&o)+6>>1]|0)|0)<14){q=e[((c[(g&p)+8>>2]|0)&o)+8>>1]|0;K=(a[(c[(r&p)+16>>2]&n)>>0]|0)==0;c[(g&p)+12>>2]=K?-1:1;c[(g&p)+16>>2]=K?1:-1;if(!(q&4))if((q&25|0)==0?(c[(r&p)+20>>2]|0)==0:0)r=39;else P=13;else r=38}else P=13;if((P|0)==13)r=40;a[(g&n)+7>>0]=0;J=r}q=qm(f)|0;if(!q){if(!(a[(t&n)>>0]|0)){c[(m&p)>>2]=-1;q=0;break}K=f+76|0;F=1-l|0;G=(J|0)==0;L=f+72|0;H=f+24|0;I=f+24|0;a:do{l=b[(K&o)>>1]|0;D=c[(f+(l<<2)&p)+120>>2]|0;E=D+18|0;s=(e[(E&o)>>1]|0)+-1|0;r=s>>F;b[(f+(l<<1)&o)+78>>1]=r;l=D+56|0;A=D+20|0;B=D+64|0;C=D+7|0;b:do if(G){v=D+3|0;u=D+60|0;t=0;w=s;while(1){s=r<<1;z=c[(B&p)>>2]|0;s=(c[(l&p)>>2]|0)+(((d[(z+s&n)>>0]<<8|d[(z+(s|1)&n)>>0])&e[(A&o)>>1])+(d[(C&n)>>0]|0))|0;c:do if(a[(v&n)>>0]|0)while(1){z=s;s=s+1|0;if((a[(z&n)>>0]|0)>=0)break c;if(s>>>0>=(c[(u&p)>>2]|0)>>>0){P=25;break a}}while(0);sp(s,N)|0;q=N;s=c[(q&p)>>2]|0;q=c[(q&p)+4>>2]|0;if((q|0)<(k|0)|(q|0)==(k|0)&s>>>0>>0){t=r+1|0;if((r|0)<(w|0))s=w;else{q=-1;P=49;break b}}else{if(!((q|0)>(k|0)|(q|0)==(k|0)&s>>>0>h>>>0)){t=q;break}s=r+-1|0;if((t|0)>(s|0)){q=1;P=49;break b}}r=s+t>>1;w=s}a[(L&n)>>0]=d[(L&n)>>0]|2;C=H;c[(C&p)>>2]=s;c[(C&p)+4>>2]=t;b[(f+(b[(K&o)>>1]<<1)&o)+78>>1]=r;if(a[(D&n)+5>>0]|0){P=31;break a}}else{x=D+8|0;y=D+10|0;z=r;t=0;while(1){q=c[(l&p)>>2]|0;v=z<<1;r=c[(B&p)>>2]|0;v=(d[(r+v&n)>>0]<<8|d[(r+(v|1)&n)>>0])&e[(A&o)>>1];r=v+(d[(C&n)>>0]|0)|0;R=a[(q+r&n)>>0]|0;w=R&255;u=q+(r+1)|0;do if((R&255)>(d[(x&n)>>0]|0)){u=d[(u&n)>>0]|0;if((u&128|0)==0?(M=u+(w<<7&16256)|0,(M|0)<=(e[(y&o)>>1]|0)):0){q=ac[J&63](M,q+(r+2)|0,g)|0;break}rp(D,q+v|0,I);u=c[(I&p)>>2]|0;r=qg(u,((u|0)<0)<<31>>31)|0;if(!r){q=7;break a}b[(f+(b[(K&o)>>1]<<1)&o)+78>>1]=z;q=Lm(f,0,u,r,2)|0;if(q){P=40;break a}q=ac[J&63](u,r,g)|0;Wc(r)}else q=ac[J&63](w,u,g)|0;while(0);if((q|0)<0)t=z+1|0;else{if((q|0)<=0){r=z;P=46;break a}s=z+-1|0}if((t|0)>(s|0)){r=z;P=49;break b}z=s+t>>1}}while(0);if((P|0)==49){P=0;if(a[(D&n)+5>>0]|0){P=51;break}l=D+56|0;r=t}t=c[(l&p)>>2]|0;if((r|0)<(e[(E&o)>>1]|0)){s=r<<1;E=c[(D&p)+64>>2]|0;s=(d[(E+s&n)>>0]<<8|d[(E+(s|1)&n)>>0])&e[(D&o)+20>>1];s=d[(t+s&n)+1>>0]<<16|d[(t+s&n)>>0]<<24|d[(t+s&n)+2>>0]<<8|d[(t+s&n)+3>>0]}else{s=d[(D&n)+6>>0]|0;s=d[(t+s&n)+9>>0]<<16|d[(t+s&n)+8>>0]<<24|d[(t+s&n)+10>>0]<<8|d[(t+s&n)+11>>0]}b[(f+(b[(K&o)>>1]<<1)&o)+78>>1]=r;q=rm(f,s)|0}while((q|0)==0);if((P|0)==25){c[(O&p)>>2]=57865;c[(O&p)+4>>2]=10788;bd(11,13600,O);q=11;break}else if((P|0)==31){c[(m&p)>>2]=0;q=0}else if((P|0)==40)Wc(r);else if((P|0)==46){c[(m&p)>>2]=0;b[(f+(b[(K&o)>>1]<<1)&o)+78>>1]=r;q=(a[(g&n)+7>>0]|0)==0?0:11}else if((P|0)==51){b[(f+(b[(K&o)>>1]<<1)&o)+78>>1]=r;c[(m&p)>>2]=q;q=0}b[(f&o)+44>>1]=0;a[(L&n)>>0]=d[(L&n)>>0]&249}}while(0);i=Q;return q|0}function Dm(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0;b[(f&o)+44>>1]=0;h=f+72|0;a[(h&n)>>0]=d[(h&n)>>0]&249;c[(g&p)>>2]=0;do if((a[(f&n)+73>>0]|0)==1){h=f+76|0;k=b[(h&o)>>1]|0;i=c[(f+(k<<2)&p)+120>>2]|0;k=f+(k<<1)+78|0;j=(b[(k&o)>>1]|0)+1<<16>>16;b[(k&o)>>1]=j;if((j&65535)>=(e[(i&o)+18>>1]|0)){h=f+(b[(h&o)>>1]<<1)+78|0;b[(h&o)>>1]=(b[(h&o)>>1]|0)+-1<<16>>16;h=Dp(f,g)|0;break}if(!(a[(i&n)+5>>0]|0))h=Vm(f)|0;else h=0}else h=Dp(f,g)|0;while(0);return h|0}function Em(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0;c[(f&p)>>2]=0;j=e+72|0;a[(j&n)>>0]=d[(j&n)>>0]&241;b[(e&o)+44>>1]=0;if(((a[(e&n)+73>>0]|0)==1?(g=b[(e&o)+76>>1]|0,h=e+(g<<1)+78|0,i=b[(h&o)>>1]|0,i<<16>>16!=0):0)?(a[((c[(e+(g<<2)&p)+120>>2]|0)&n)+5>>0]|0)!=0:0){b[(h&o)>>1]=i+-1<<16>>16;g=0}else g=Ep(e,f)|0;return g|0}function Fm(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=0-d&7;j=a+6|0;h=b[(j&o)>>1]|0;g=((h&65535)*40|0)+64|0;if((g|0)>(i+e|0)){g=mh(c[(a&p)+12>>2]|0,g,0)|0;c[(f&p)>>2]=g;if(!g)g=0;else{h=b[(j&o)>>1]|0;k=5}}else{c[(f&p)>>2]=0;g=d+i|0;k=5}if((k|0)==5){c[(g&p)+8>>2]=g+24;c[(g&p)>>2]=a;b[(g&o)+4>>1]=(h&65535)+1}return g|0}function Gm(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;if((i|0)>=(j|0))fa();w=x+4|0;v=x;m=c[(h&p)+8>>2]|0;a[(h&n)+6>>0]=0;k=a[(g&n)>>0]|0;if(k<<24>>24>-1){k=k&255;c[(w&p)>>2]=k;l=1}else{l=mm(g,w)|0;k=c[(w&p)>>2]|0}u=d+4|0;s=d+12|0;t=h+4|0;d=k;r=k;q=l&255;k=0;while(1){if(q>>>0>=d>>>0|(r|0)>(f|0))break;h=g+q|0;d=a[(h&n)>>0]|0;if(d<<24>>24>-1){c[(v&p)>>2]=d&255;h=1}else h=mm(h,v)|0;a[(m&n)+10>>0]=a[(u&n)>>0]|0;c[(m&p)+32>>2]=c[(s&p)>>2];c[(m&p)+24>>2]=0;l=om(g+r|0,c[(v&p)>>2]|0,m)|0;k=k+1<<16>>16;if((k&65535)>=(e[(t&o)>>1]|0))break;d=c[(w&p)>>2]|0;r=l+r|0;q=(h&255)+q|0;m=m+40|0}b[(t&o)>>1]=k;i=x;return}function Hm(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;g=b+73|0;if((a[(g&n)>>0]|0)==1?(a[(b&n)+72>>0]&8)!=0:0)f=0;else h=3;do if((h|0)==3){f=qm(b)|0;if(!f){if(!(a[(g&n)>>0]|0)){c[(e&p)>>2]=1;f=0;break}c[(e&p)>>2]=0;f=Fp(b)|0;e=b+72|0;g=d[(e&n)>>0]|0;if(!f){a[(e&n)>>0]=g|8;f=0;break}else{a[(e&n)>>0]=g&247;break}}}while(0);return f|0}function Im(f,g,h,k,l,m,q,r,s){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;r=r|0;s=s|0;var 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,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+32|0;if((i|0)>=(j|0))fa();x=O;D=O+24|0;E=O+20|0;C=O+16|0;N=O+12|0;K=O+8|0;L=O+28|0;c[(K&p)>>2]=s;u=(c[(f&p)>>2]|0)+4|0;w=c[(u&p)>>2]|0;M=f+73|0;do if((a[(M&n)>>0]|0)!=4){v=Ln(w,c[(f&p)+60>>2]|0,f)|0;c[(N&p)>>2]=v;if(!v){if(!(c[(f&p)+16>>2]|0)){v=c[((c[(u&p)>>2]|0)&p)+8>>2]|0;if(v)do{if((a[(v&n)+72>>0]&16)!=0?(H=v+24|0,(c[(H&p)>>2]|0)==(h|0)?(c[(H&p)+4>>2]|0)==(k|0):0):0)a[(v&n)+73>>0]=0;v=c[(v&p)+8>>2]|0}while((v|0)!=0);if((a[(f&n)+72>>0]&2)!=0&((k|0)>0|(k|0)==0&h>>>0>0)?(H=f+24|0,A=c[(H&p)>>2]|0,H=c[(H&p)+4>>2]|0,B=jw(h|0,k|0,-1,-1)|0,(A|0)==(B|0)&(H|0)==(G|0)):0)c[(K&p)>>2]=-1;else F=13}else F=13;if(((F|0)==13?(s|0)==0:0)?(t=Gp(f,g,h,k,r,K)|0,c[(N&p)>>2]=t,(t|0)!=0):0)break;I=f+76|0;J=c[(f+(b[(I&o)>>1]<<2)&p)+120>>2]|0;H=c[(w&p)+80>>2]|0;c[(E&p)>>2]=0;r=J+52|0;B=c[(r&p)>>2]|0;c[(C&p)>>2]=0;v=d[(J&n)+7>>0]|0;w=q+m|0;if(a[(J&n)+3>>0]|0){if(w>>>0<128){a[(H+v&n)>>0]=w;u=1}else u=(pm(H+v|0,w,((w|0)<0)<<31>>31)|0)&255;v=u+v|0}s=(pm(H+v|0,h,k)|0)+v|0;do if(!(a[(J&n)+2>>0]|0))if((k|0)>0|(k|0)==0&h>>>0>2147483647|(g|0)==0){c[(x&p)>>2]=58825;c[(x&p)+4>>2]=10788;bd(11,13600,x);t=11;v=0;break}else{A=m;w=h;m=h;q=g;F=24;break}else{A=0;q=l;F=24}while(0);do if((F|0)==24){v=e[(J&o)+10>>1]|0;if((w|0)>(v|0)){u=e[(J&o)+12>>1]|0;r=(((w-u|0)>>>0)%(((c[((c[(r&p)>>2]|0)&p)+36>>2]|0)+-4|0)>>>0)|0)+u|0;r=(r|0)>(v|0)?u:r;u=r+s|0;v=u+4|0;u=H+u|0}else{v=w+s|0;v=(v|0)<4?4:v;u=H;r=w}if((w|0)>0){h=B+17|0;y=B+36|0;z=B+32|0;g=m;x=H+s|0;k=u;s=0;m=r;while(1){if(!m){x=c[(C&p)>>2]|0;if(!(a[(h&n)>>0]|0))u=x;else{t=((c[2514]|0)>>>0)/((c[(z&p)>>2]|0)>>>0)|0;m=x;while(1){u=m+1|0;if(u>>>0<2)r=0;else{r=m+-1|0;r=r-((r>>>0)%(((((c[(y&p)>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;r=((r+1|0)==(t|0)?3:2)+r|0}if((r|0)==(u|0)|(m|0)==(t|0))m=u;else break}c[(C&p)>>2]=u}t=ip(B,E,C,u,0)|0;c[(D&p)>>2]=t;u=(t|0)==0;if((a[(h&n)>>0]|0)!=0&u){u=c[(C&p)>>2]|0;zp(B,u,(x|0)!=0?4:3,x,D);t=c[(D&p)>>2]|0;if(t){r=s;F=38;break}}else{if(!u)break;u=c[(C&p)>>2]|0}a[(k&n)>>0]=u>>>24;a[(k&n)+1>>0]=u>>>16;a[(k&n)+2>>0]=u>>>8;a[(k&n)+3>>0]=u;if(s)Bg(c[(s&p)+68>>2]|0);t=c[(E&p)>>2]|0;x=t+56|0;k=c[(x&p)>>2]|0;a[(k&n)>>0]=0;a[(k&n)+1>>0]=0;a[(k&n)+2>>0]=0;a[(k&n)+3>>0]=0;x=(c[(x&p)>>2]|0)+4|0;m=(c[(y&p)>>2]|0)+-4|0}else t=s;u=(w|0)>(m|0)?m:w;if((g|0)>0){u=(u|0)>(g|0)?g:u;kw(x|0,q|0,u|0)|0}else fw(x|0,0,u|0)|0;w=w-u|0;r=(g|0)==(u|0);if((w|0)<=0){F=51;break}else{g=r?A:g-u|0;x=x+u|0;q=r?l:q+u|0;s=t;m=m-u|0}}if((F|0)==38){s=c[(E&p)>>2]|0;if(!s)s=r;else{Bg(c[(s&p)+68>>2]|0);s=r}}else if((F|0)==51){if(!t){t=0;break}Bg(c[(t&p)+68>>2]|0);t=0;break}if(s)Bg(c[(s&p)+68>>2]|0)}else t=0}while(0);c[(N&p)>>2]=t;if(!t){t=f+(b[(I&o)>>1]<<1)+78|0;r=b[(t&o)>>1]|0;u=r&65535;s=c[(K&p)>>2]|0;if(!s){t=Gg(c[(J&p)+68>>2]|0)|0;c[(N&p)>>2]=t;if(t)break;t=u<<1;F=c[(J&p)+64>>2]|0;t=(c[(J&p)+56>>2]|0)+((d[(F+t&n)>>0]<<8|d[(F+(t|1)&n)>>0])&e[(J&o)+20>>1])|0;if(!(a[(J&n)+5>>0]|0)){F=d[(t&n)>>0]|d[(t&n)+1>>0]<<8|d[(t&n)+2>>0]<<16|d[(t&n)+3>>0]<<24;a[(H&n)>>0]=F;a[(H&n)+1>>0]=F>>8;a[(H&n)+2>>0]=F>>16;a[(H&n)+3>>0]=F>>24}c[(N&p)>>2]=Hp(J,t,L)|0;Ip(J,u,e[(L&o)>>1]|0,N);t=c[(N&p)>>2]|0;if(!t)t=u;else break}else if((s|0)<0?(b[(J&o)+18>>1]|0)!=0:0){F=r+1<<16>>16;b[(t&o)>>1]=F;t=F&65535}else t=u;Jp(J,t,H,v,0,0,N);b[(f&o)+44>>1]=0;t=c[(N&p)>>2]|0;if(!t)if(!(a[(J&n)+1>>0]|0))t=0;else{t=f+72|0;a[(t&n)>>0]=d[(t&n)>>0]&253;t=Kp(f)|0;c[(N&p)>>2]=t;a[((c[(f+(b[(I&o)>>1]<<2)&p)+120>>2]|0)&n)+1>>0]=0;a[(M&n)>>0]=0}}}else t=v}else t=c[(f&p)+68>>2]|0;while(0);i=O;return t|0}function Jm(f){f=f|0;var g=0,h=0,k=0,l=0,m=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;C=i;i=i+16|0;if((i|0)>=(j|0))fa();B=C+4|0;t=C+8|0;l=C;m=(c[(f&p)>>2]|0)+4|0;v=c[(m&p)>>2]|0;z=f+76|0;A=b[(z&o)>>1]|0;x=A<<16>>16;s=b[(f+(x<<1)&o)+78>>1]|0;y=s&65535;u=c[(f+(x<<2)&p)+120>>2]|0;do if((s&65535)<(e[(u&o)+18>>1]|0)?(a[(f&n)+73>>0]|0)==1:0){s=y<<1;w=c[(u&p)+64>>2]|0;s=(c[(u&p)+56>>2]|0)+((d[(w+s&n)>>0]<<8|d[(w+(s|1)&n)>>0])&e[(u&o)+20>>1])|0;w=u+5|0;if((a[(w&n)>>0]|0)==0?(c[(l&p)>>2]=0,k=Em(f,l)|0,c[(B&p)>>2]=k,(k|0)!=0):0){g=k;break}k=Ln(v,c[(f&p)+60>>2]|0,f)|0;c[(B&p)>>2]=k;if(!k){if((c[(f&p)+16>>2]|0)==0?(r=f+24|0,q=c[(r&p)>>2]|0,r=c[(r&p)+4>>2]|0,h=c[((c[(m&p)>>2]|0)&p)+8>>2]|0,(h|0)!=0):0)do{if((a[(h&n)+72>>0]&16)!=0?(m=h+24|0,(c[(m&p)>>2]|0)==(q|0)?(c[(m&p)+4>>2]|0)==(r|0):0):0)a[(h&n)+73>>0]=0;h=c[(h&p)+8>>2]|0}while((h|0)!=0);h=Gg(c[(u&p)+68>>2]|0)|0;c[(B&p)>>2]=h;if(!h){c[(B&p)>>2]=Hp(u,s,t)|0;Ip(u,y,e[(t&o)>>1]|0,B);h=c[(B&p)>>2]|0;if(!h){if((a[(w&n)>>0]|0)==0?(s=c[(f+(b[(z&o)>>1]<<2)&p)+120>>2]|0,r=c[((c[(f+(x+1<<2)&p)+120>>2]|0)&p)+72>>2]|0,l=c[(s&p)+56>>2]|0,t=s+18|0,m=e[(t&o)>>1]<<1,g=c[(s&p)+64>>2]|0,m=(d[(g+m+-2&n)>>0]<<8|d[(g+m+-1&n)>>0])&e[(s&o)+20>>1],g=(Lp(s,l+m|0)|0)&65535,q=c[(v&p)+80>>2]|0,c[(B&p)>>2]=Gg(c[(s&p)+68>>2]|0)|0,Jp(u,y,l+(m+-4)|0,g+4|0,q,r,B),Ip(s,(e[(t&o)>>1]|0)+-1|0,g,B),g=c[(B&p)>>2]|0,(g|0)!=0):0)break;g=Kp(f)|0;c[(B&p)>>2]=g;if(!g){g=b[(z&o)>>1]|0;if(g<<16>>16>A<<16>>16){do{h=g+-1<<16>>16;b[(z&o)>>1]=h;g=c[(f+(g<<16>>16<<2)&p)+120>>2]|0;if(!g)g=h;else{Bg(c[(g&p)+68>>2]|0);g=b[(z&o)>>1]|0}}while(g<<16>>16>A<<16>>16);g=Kp(f)|0;c[(B&p)>>2]=g;if(g)break}qm(f)|0;g=0}}else g=h}else g=h}else g=k}else g=1;while(0);i=C;return g|0}function Km(f,g,k,l){f=f|0;g=g|0;k=k|0;l=l|0;var m=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+64|0;if((i|0)>=(j|0))fa();N=P+40|0;t=P+56|0;L=P;r=P+52|0;M=P+48|0;w=c[(k&p)+8>>2]|0;O=c[(k&p)>>2]|0;do if(!l){l=a[(g&n)>>0]|0;if(l<<24>>24>-1){l=l&255;c[(t&p)>>2]=l;m=1}else{m=mm(g,t)|0;l=c[(t&p)>>2]|0}if(l>>>0>f>>>0){c[(N&p)>>2]=68267;c[(N&p)+4>>2]=10788;bd(11,13600,N);a[(k&n)+7>>0]=11;m=0;break}else{K=l;t=l;l=0;r=m&255;s=15;break}}else{l=g+1|0;m=a[(l&n)>>0]|0;if(m<<24>>24>-1){l=m&255;c[(r&p)>>2]=l;s=1}else{s=mm(l,r)|0;l=c[(r&p)>>2]|0}m=d[(g&n)>>0]|0;c[(t&p)>>2]=m;if(l>>>0>11)l=(l+-12|0)>>>1;else l=d[(l&n)+34336>>0]|0;K=m;t=l+m|0;l=1;r=(s&255)+1|0;w=w+40|0;s=15}while(0);do if((s|0)==15){A=L+12|0;B=O+4|0;C=L+10|0;D=O+12|0;E=L+32|0;F=L+8|0;H=L+16|0;J=k+7|0;I=k+4|0;z=t;y=r;a:while(1){r=e[(w&o)+8>>1]|0;do if(!(r&4)){if(r&8){s=a[(g+y&n)>>0]|0;t=s&255;c[(M&p)>>2]=t;if((s&255)>11){m=1;s=62;break a}if(!(s<<24>>24)){m=-1;s=62;break a}u=+h[(w&q)>>3];om(g+z|0,t,L)|0;if(s<<24>>24==7)v=+h[(L&q)>>3];else{m=L;v=+((c[(m&p)>>2]|0)>>>0)+4294967296.0*+(c[(m&p)+4>>2]|0)}if(vu){m=1;s=62;break a}else break}do if(!(r&2)){s=g+y|0;x=a[(s&n)>>0]|0;t=x&255;if(!(r&16)){c[(M&p)>>2]=t;m=x<<24>>24!=0&1;break}if(x<<24>>24>-1)c[(M&p)>>2]=t;else{mm(s,M)|0;t=c[(M&p)>>2]|0}if(!(t>>>0>11&(t&1|0)==0)){m=-1;s=62;break a}x=(t+-12|0)>>>1;if((x+z|0)>>>0>f>>>0){s=57;break a}s=c[(w&p)+12>>2]|0;m=Zv(g+z|0,c[(w&p)+16>>2]|0,(x|0)<(s|0)?x:s)|0;if(m){s=62;break a}m=x-s|0}else{t=g+y|0;s=a[(t&n)>>0]|0;if(s<<24>>24>-1){t=s&255;c[(M&p)>>2]=t}else{mm(t,M)|0;t=c[(M&p)>>2]|0}if(t>>>0<12){m=-1;s=62;break a}if(!(t&1)){m=1;s=62;break a}r=(t+-12|0)>>>1;c[(A&p)>>2]=r;if((r+z|0)>>>0>f>>>0){s=46;break a}s=c[(O+(l<<2)&p)+20>>2]|0;if(s){a[(C&n)>>0]=a[(B&n)>>0]|0;c[(E&p)>>2]=c[(D&p)>>2];b[(F&o)>>1]=2;c[(H&p)>>2]=g+z;m=pp(L,w,s,J)|0;break}x=c[(w&p)+12>>2]|0;m=Zv(g+z|0,c[(w&p)+16>>2]|0,(r|0)<(x|0)?r:x)|0;if(m){s=62;break a}m=r-x|0}while(0);if(m){s=62;break a}}else{s=a[(g+y&n)>>0]|0;t=s&255;c[(M&p)>>2]=t;if((s&255)>11){m=1;s=62;break a}if(s<<24>>24==7){m=w;u=+((c[(m&p)>>2]|0)>>>0)+4294967296.0*+(c[(m&p)+4>>2]|0);om(g+z|0,t,L)|0;v=+h[(L&q)>>3];if(vu){m=1;s=62;break a}else break}else if(!(s<<24>>24)){m=-1;s=62;break a}s=g+z|0;switch(t|0){case 6:{m=d[(g+z&n)+1>>0]<<16|d[(s&n)>>0]<<24|d[(g+z&n)+2>>0]<<8|d[(g+z&n)+3>>0];x=d[(g+z&n)+5>>0]<<16|d[(g+z&n)+4>>0]<<24|d[(g+z&n)+6>>0]<<8|d[(g+z&n)+7>>0];break}case 3:{x=d[(g+z&n)+1>>0]<<8|a[(s&n)>>0]<<16|d[(g+z&n)+2>>0];m=((x|0)<0)<<31>>31;break}case 5:{m=a[(s&n)>>0]<<8|d[(g+z&n)+1>>0];x=d[(g+z&n)+3>>0]<<16|d[(g+z&n)+2>>0]<<24|d[(g+z&n)+4>>0]<<8|d[(g+z&n)+5>>0];break}case 1:case 0:{x=a[(s&n)>>0]|0;m=((x|0)<0)<<31>>31;break}case 4:{x=d[(g+z&n)+1>>0]<<16|d[(s&n)>>0]<<24|d[(g+z&n)+2>>0]<<8|d[(g+z&n)+3>>0];m=((x|0)<0)<<31>>31;break}case 2:{x=a[(s&n)>>0]<<8|d[(g+z&n)+1>>0];m=((x|0)<0)<<31>>31;break}default:{m=0;x=t+-8|0}}r=w;s=c[(r&p)>>2]|0;r=c[(r&p)+4>>2]|0;if((m|0)<(r|0)|(m|0)==(r|0)&x>>>0>>0){m=-1;s=62;break a}if((m|0)>(r|0)|(m|0)==(r|0)&x>>>0>s>>>0){m=1;s=62;break a}}while(0);l=l+1|0;w=w+40|0;if(t>>>0>11)r=(t+-12|0)>>>1;else r=d[(t&n)+34336>>0]|0;x=t;s=0;t=0;do{t=t+1|0;x=mw(x|0,s|0,7)|0;s=G}while(((x|0)!=0|(s|0)!=0)&(t|0)<9);z=r+z|0;y=t+y|0;if(y>>>0>=K>>>0){s=70;break}if(z>>>0>f>>>0?1:(l|0)>=(e[(I&o)>>1]|0)){s=70;break}}if((s|0)==46){c[(N&p)>>2]=68346;c[(N&p)+4>>2]=10788;bd(11,13600,N);a[(J&n)>>0]=11;m=0;break}else if((s|0)==57){c[(N&p)>>2]=68375;c[(N&p)+4>>2]=10788;bd(11,13600,N);a[(J&n)>>0]=11;m=0;break}else if((s|0)==62){m=(a[((c[(O&p)+16>>2]|0)+l&n)>>0]|0)==0?m:0-m|0;break}else if((s|0)==70){m=a[(k&n)+6>>0]|0;break}}while(0);i=P;return m|0}function Lm(f,g,h,k,l){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=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;E=i;i=i+16|0;if((i|0)>=(j|0))fa();D=E;B=E+12|0;C=E+8|0;m=b[(f&o)+76>>1]|0;r=c[(f+(m<<2)&p)+120>>2]|0;A=c[(f&p)+4>>2]|0;if(!(b[(f&o)+44>>1]|0)){v=r+56|0;m=e[(f+(m<<1)&o)+78>>1]<<1;u=c[(r&p)+64>>2]|0;rp(r,(c[(v&p)>>2]|0)+((d[(u+m&n)>>0]<<8|d[(u+(m|1)&n)>>0])&e[(r&o)+20>>1])|0,f+24|0);m=f+72|0;a[(m&n)>>0]=d[(m&n)>>0]|2;m=v}else m=r+56|0;v=c[(f&p)+32>>2]|0;t=f+40|0;q=e[(t&o)>>1]|0;u=A+36|0;if((v+q|0)>>>0<=((c[(m&p)>>2]|0)+(c[(u&p)>>2]|0)|0)>>>0){if(q>>>0>g>>>0){s=(h+g|0)>>>0>q>>>0?q-g|0:h;q=v+g|0;if(l&1){m=Gg(c[(r&p)+68>>2]|0)|0;if(!m){kw(q|0,k|0,s|0)|0;m=0}}else{kw(k|0,q|0,s|0)|0;m=0}k=k+s|0;w=0;h=h-s|0}else{w=g-q|0;m=0}a:do if((m|0)==0&(h|0)!=0){m=c[(u&p)>>2]|0;z=m+-4|0;q=e[(t&o)>>1]|0;t=d[(v+q&n)+1>>0]<<16|d[(v+q&n)>>0]<<24|d[(v+q&n)+2>>0]<<8|d[(v+q&n)+3>>0];c[(B&p)>>2]=t;v=f+72|0;do if((l|0)!=2?(a[(v&n)>>0]&4)==0:0){m=((m+-5+(c[(f&p)+36>>2]|0)-q|0)>>>0)/(z>>>0)|0;g=f+64|0;if((m|0)>(c[(g&p)>>2]|0)){r=f+20|0;q=rg(c[(r&p)>>2]|0,m<<3,0)|0;if(!q){m=7;break}c[(g&p)>>2]=m<<1;c[(r&p)>>2]=q}fw(c[(f&p)+20>>2]|0,0,m<<2|0)|0;a[(v&n)>>0]=d[(v&n)>>0]|4;m=0}else m=0;while(0);g=a[(v&n)>>0]|0;if((g&4)!=0?(y=(w>>>0)/(z>>>0)|0,x=c[((c[(f&p)+20>>2]|0)+(y<<2)&p)>>2]|0,(x|0)!=0):0){c[(B&p)>>2]=x;s=(w>>>0)%(z>>>0)|0;r=x;t=y}else{s=w;r=t;t=0}if((m|0)==0&(r|0)!=0){x=l&1;y=x<<1^2;x=(x|0)==0;l=f+20|0;while(1){if(g&4)c[((c[(l&p)>>2]|0)+(t<<2)&p)>>2]=r;if(s>>>0>>0){u=(s+h|0)>>>0>z>>>0?z-s|0:h;m=zg(c[(A&p)>>2]|0,r,C,y)|0;if(!m){g=c[(C&p)>>2]|0;q=c[(g&p)+4>>2]|0;r=d[(q&n)+1>>0]<<16|d[(q&n)>>0]<<24|d[(q&n)+2>>0]<<8|d[(q&n)+3>>0];c[(B&p)>>2]=r;q=q+(s+4)|0;if(!x){m=Gg(g)|0;if(!m){kw(q|0,k|0,u|0)|0;m=0}}else{kw(k|0,q|0,u|0)|0;m=0}if(!g)s=0;else{Bg(g);s=0}}h=h-u|0;k=k+u|0;t=t+1|0}else{g=t+1|0;m=c[((c[(l&p)>>2]|0)+(g<<2)&p)>>2]|0;if(!m){m=Mp(A,r,0,B)|0;r=c[(B&p)>>2]|0}else{c[(B&p)>>2]=m;r=m;m=0}s=s-z|0;t=g}if(!((m|0)==0&(h|0)!=0&(r|0)!=0))break a;g=a[(v&n)>>0]|0}}}while(0);if((m|0)==0&(h|0)!=0){c[(D&p)>>2]=57357;c[(D&p)+4>>2]=10788;bd(11,13600,D);m=11}}else{c[(D&p)>>2]=57202;c[(D&p)+4>>2]=10788;bd(11,13600,D);m=11}i=E;return m|0}function Mm(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[(a&p)>>2]|0;d=a+44|0;mg(e,c[(d&p)>>2]|0);a=b+8|0;c[(d&p)>>2]=kh(e,c[(a&p)>>2]|0)|0;Wc(c[(a&p)>>2]|0);c[(a&p)>>2]=0;return}function Nm(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))fa();k=u+4|0;s=u;t=e+12|0;if(!(c[(t&p)>>2]|0)){h=e+8|0;g=Fm(c[((c[(h&p)>>2]|0)&p)+28>>2]|0,0,0,k)|0;c[(t&p)>>2]=g;if(!(c[(k&p)>>2]|0))g=7;else{b[(g&o)+4>>1]=b[((c[((c[(h&p)>>2]|0)&p)+28>>2]|0)&o)+6>>1]|0;a[(g&n)+7>>0]=0;l=4}}else l=4;if((l|0)==4){r=qg(256,0)|0;if(!r)g=7;else{fw(r|0,0,256)|0;g=c[(f&p)>>2]|0;c[(s&p)>>2]=g;if(g){q=f+4|0;while(1){h=c[(q&p)>>2]|0;if(h)if((g|0)==(h|0))m=0;else m=h+(c[(g&p)+4>>2]|0)|0;else m=c[(g&p)+4>>2]|0;c[(g&p)+4>>2]=0;l=c[(r&p)>>2]|0;k=c[(s&p)>>2]|0;if(!l)l=r;else{h=r;g=0;do{Np(e,k,l,s);c[(h&p)>>2]=0;g=g+1|0;h=r+(g<<2)|0;l=c[(h&p)>>2]|0;k=c[(s&p)>>2]|0}while((l|0)!=0);l=h}c[(l&p)>>2]=k;c[(s&p)>>2]=m;if(!m)break;else g=m}}c[(s&p)>>2]=0;g=0;h=0;do{Np(e,g,c[(r+(h<<2)&p)>>2]|0,s);h=h+1|0;g=c[(s&p)>>2]|0}while((h|0)!=64);c[(f&p)>>2]=g;Wc(r);g=d[((c[(t&p)>>2]|0)&n)+7>>0]|0}}i=u;return g|0}function Om(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0;q=i;i=i+64|0;if((i|0)>=(j|0))fa();m=q+40|0;o=q;a[(b&n)+56>>0]=1;g=b+64|0;l=b+36|0;k=b+72|0;h=c[((c[(k&p)>>2]|0)&p)+24>>2]|0;f=o+0|0;e=f+40|0;do{c[(f&p)>>2]=0;f=f+4|0}while((f|0)<(e|0));f=b+96|0;if(!((c[(f&p)>>2]|0)==0?(d=Op(h,f)|0,(d|0)!=0):0)){d=Nm(g,l)|0;if(!d){g=b+104|0;d=g;Pp(c[(f&p)>>2]|0,o,c[((c[(k&p)>>2]|0)&p)+12>>2]|0,c[(d&p)>>2]|0,c[(d&p)+4>>2]|0);d=b+92|0;c[(d&p)>>2]=(c[(d&p)>>2]|0)+1;d=c[(b&p)+44>>2]|0;Qp(o,m,pm(m,d,((d|0)<0)<<31>>31)|0);d=c[(l&p)>>2]|0;if(d){f=b+40|0;do{e=d;d=c[(d&p)+4>>2]|0;b=c[(e&p)>>2]|0;Qp(o,m,pm(m,b,((b|0)<0)<<31>>31)|0);Qp(o,e+8|0,c[(e&p)>>2]|0);if(!(c[(f&p)>>2]|0))Wc(e)}while((d|0)!=0)}c[(l&p)>>2]=0;d=Rp(o,g)|0}}i=q;return d|0}function Pm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();q=s;g=d;k=c[(g&p)>>2]|0;g=c[(g&p)+4>>2]|0;r=Qm(b)|0;c[(e&p)>>2]=r;h=(r|0)==0;f=h?7:0;h=h^1;if((b|0)>0&h){o=r+12|0;n=a+32|0;m=0;do{h=c[(o&p)>>2]|0;l=h+(m*56|0)|0;f=Sp(a,l,n,k,g)|0;if(!f){f=Tp(l,q)|0;g=l;k=q;g=jw(c[(k&p)>>2]|0,c[(k&p)+4>>2]|0,c[(g&p)>>2]|0,c[(g&p)+4>>2]|0)|0;k=h+(m*56|0)+8|0;h=k;c[(h&p)>>2]=g;c[(h&p)+4>>2]=G;if(!f)f=Up(l)|0}else k=h+(m*56|0)+8|0;g=k;k=c[(g&p)>>2]|0;g=c[(g&p)+4>>2]|0;m=m+1|0;h=(f|0)==0}while((m|0)<(b|0)&h)}if(!h){Tm(r);c[(e&p)>>2]=0}b=d;c[(b&p)>>2]=k;c[(b&p)+4>>2]=g;i=s;return f|0}function Qm(a){a=a|0;var b=0,d=0;b=2;while(1)if((b|0)<(a|0))b=b<<1;else{d=b;break}b=c[2252]|0;if((b|0)!=0?(lc[b&127](100)|0)!=0:0)b=0;else{a=(d*60|0)+16|0;b=qg(a,((a|0)<0)<<31>>31)|0;if(!b)b=0;else{fw(b|0,0,a|0)|0;c[(b&p)>>2]=d;c[(b&p)+4>>2]=0;a=b+16|0;c[(b&p)+12>>2]=a;c[(b&p)+8>>2]=a+(d*56|0)}}return b|0}function Rm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[2252]|0;if((f|0)!=0?(lc[f&127](100)|0)!=0:0){f=0;i=6}else i=3;do if((i|0)==3){f=qg(64,0)|0;if(!f){i=6;break}else{g=f+0|0;h=g+64|0;do{a[(g&n)>>0]=0;g=g+1|0}while((g|0)<(h|0));c[(e&p)>>2]=f;c[(f&p)+4>>2]=d;c[(f&p)>>2]=b;h=c[(b&p)+8>>2]|0;g=(c[(h&p)+8>>2]|0)+9|0;h=(c[(h&p)+4>>2]|0)/2|0;h=(g|0)>(h|0)?g:h;c[(f&p)+16>>2]=h;f=b+56|0;g=f;g=jw(h|0,((h|0)<0)<<31>>31|0,c[(g&p)>>2]|0,c[(g&p)+4>>2]|0)|0;c[(f&p)>>2]=g;c[(f&p)+4>>2]=G;f=0;break}}while(0);if((i|0)==6){c[(e&p)>>2]=f;Tm(d);f=7}return f|0}function Sm(a){a=a|0;if(a){Tm(c[(a&p)+4>>2]|0);Wc(a)}return}function Tm(a){a=a|0;var b=0,d=0;if((a|0)!=0?(c[(a&p)>>2]|0)>0:0){b=a+12|0;d=0;do{Vp((c[(b&p)>>2]|0)+(d*56|0)|0);d=d+1|0}while((d|0)<(c[(a&p)>>2]|0))}Wc(a);return}function Um(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0;o=c[(b&p)>>2]|0;t=b+4|0;c[(t&p)>>2]=a;a:do if((o|0)>0){q=b+12|0;r=0;do{l=c[(q&p)>>2]|0;j=l+(r*56|0)|0;l=c[(l+(r*56|0)&p)+48>>2]|0;if(l){m=c[(l&p)>>2]|0;i=c[((c[(m&p)+8>>2]|0)&p)+24>>2]|0;e=Um(m,c[(l&p)+4>>2]|0)|0;if(e)break a;k=c[(l&p)+16>>2]|0;g=m+48|0;h=c[(g&p)>>2]|0;f=m+56|0;if(!h){e=Op(i,g)|0;i=f;c[(i&p)>>2]=0;c[(i&p)+4>>2]=0;if(e)break a;h=c[(g&p)>>2]|0;g=0;f=0}else{g=c[(f&p)>>2]|0;f=c[(f&p)+4>>2]|0}c[(l&p)+48>>2]=h;l=l+8|0;c[(l&p)>>2]=g;c[(l&p)+4>>2]=f;l=jw(g|0,f|0,k|0,((k|0)<0)<<31>>31|0)|0;e=m+56|0;c[(e&p)>>2]=l;c[(e&p)+4>>2]=G;e=Up(j)|0;if(e)break a}r=r+1|0}while((r|0)<(o|0));e=c[(b&p)>>2]|0;s=12}else{e=o;s=12}while(0);if((s|0)==12){f=e+-1|0;b:do if((f|0)>0){j=b+12|0;k=b+8|0;h=e;g=e;i=f;while(1){e=(h|0)/2|0;if((g|0)>(e|0)){g=i-e<<1;e=g;g=g|1}else{g=i<<1;o=c[(k&p)>>2]|0;e=c[(o+(g<<2)&p)>>2]|0;g=c[(o+((g|1)<<2)&p)>>2]|0}f=c[(j&p)>>2]|0;if(c[(f+(e*56|0)&p)+24>>2]|0){if(c[(f+(g*56|0)&p)+24>>2]|0){o=(Wp(c[(t&p)>>2]|0,c[(f+(e*56|0)&p)+32>>2]|0,c[(f+(e*56|0)&p)+20>>2]|0,c[(f+(g*56|0)&p)+32>>2]|0,c[(f+(g*56|0)&p)+20>>2]|0)|0)<1;e=o?e:g}}else e=g;c[((c[(k&p)>>2]|0)+(i<<2)&p)>>2]=e;e=i+-1|0;if((e|0)<=0)break b;g=i;h=c[(b&p)>>2]|0;i=e}}while(0);e=d[((c[(a&p)+12>>2]|0)&n)+7>>0]|0}return e|0}function Vm(f){f=f|0;var g=0,h=0,i=0,j=0,k=0;i=f+76|0;do{g=b[(i&o)>>1]|0;h=c[(f+(g<<2)&p)+120>>2]|0;if(a[(h&n)+5>>0]|0){g=0;break}j=c[(h&p)+56>>2]|0;g=e[(f+(g<<1)&o)+78>>1]<<1;k=c[(h&p)+64>>2]|0;g=(d[(k+g&n)>>0]<<8|d[(k+(g|1)&n)>>0])&e[(h&o)+20>>1];g=rm(f,d[(j+g&n)+1>>0]<<16|d[(j+g&n)>>0]<<24|d[(j+g&n)+2>>0]<<8|d[(j+g&n)+3>>0])|0}while((g|0)==0);return g|0}function Wm(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=a+8|0;g=c[((c[(s&p)>>2]|0)&p)+4>>2]|0;w=c[(a&p)+4>>2]|0;u=a+12|0;e=Up((c[(u&p)>>2]|0)+(g*56|0)|0)|0;if(!e){e=c[(u&p)>>2]|0;f=g|1;a=(c[(a&p)>>2]|0)+g|0;a:do if((a|0)>1){m=e;o=a;i=c[(e+(f*56|0)&p)+32>>2]|0;q=e+((g&65534)*56|0)|0;g=e+(f*56|0)|0;while(1){r=q+24|0;j=q;k=q+32|0;l=q+20|0;e=m;h=o;a=i;while(1){f=h;h=(h|0)/2|0;if(!(c[(r&p)>>2]|0)){i=a;break}if(((c[(g&p)+24>>2]|0)!=0?(t=Wp(w,c[(k&p)>>2]|0,c[(l&p)>>2]|0,a,c[(g&p)+20>>2]|0)|0,(t|0)>=0):0)?!((t|0)==0&q>>>0>>0):0){v=10;break}i=c[(u&p)>>2]|0;a=c[(s&p)>>2]|0;c[(a+(h<<2)&p)>>2]=(j-i|0)/56|0;g=c[(a+((h^1)<<2)&p)>>2]|0;if((f|0)<=3){e=i;break a}else{e=i;a=c[(i+(g*56|0)&p)+32>>2]|0;g=i+(g*56|0)|0}}if((v|0)==10){v=0;e=c[(u&p)>>2]|0;i=(c[(r&p)>>2]|0)==0?a:0}a=c[(s&p)>>2]|0;c[(a+(h<<2)&p)>>2]=(g-e|0)/56|0;if((f|0)>3){m=e;o=h;q=e+((c[(a+((h^1)<<2)&p)>>2]|0)*56|0)|0}else break}}else a=c[(s&p)>>2]|0;while(0);c[(b&p)>>2]=(c[(e+((c[(a&p)+4>>2]|0)*56|0)&p)+24>>2]|0)==0&1;e=d[((c[(w&p)+12>>2]|0)&n)+7>>0]|0}return e|0}function Xm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=b+4|0;g=c[(f&p)>>2]|0;c[(g&p)+4>>2]=c[(b&p)>>2];b=Ln(g,d,0)|0;if(!b){b=c[((c[(f&p)>>2]|0)&p)+8>>2]|0;if(b)do{if(a[(b&n)+72>>0]&16)a[(b&n)+73>>0]=0;b=c[(b&p)+8>>2]|0}while((b|0)!=0);b=Xp(g,d,0,e)|0}return b|0}function Ym(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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;C=i;i=i+32|0;if((i|0)>=(j|0))fa();t=C;B=C+16|0;A=C+12|0;z=C+8|0;c[(B&p)>>2]=0;m=c[(f&p)+12>>2]|0;if(!g){g=Yp(f,h)|0;c[(A&p)>>2]=g}else{c[(A&p)>>2]=g;u=(c[(g&p)+68>>2]|0)+26|0;b[(u&o)>>1]=(b[(u&o)>>1]|0)+1<<16>>16}l=Gg(c[(m&p)+68>>2]|0)|0;c[(z&p)>>2]=l;do if(!l){u=m+56|0;s=c[(u&p)>>2]|0;D=s+36|0;l=s+37|0;m=s+38|0;s=s+39|0;q=d[(l&n)>>0]<<16|d[(D&n)>>0]<<24|d[(m&n)>>0]<<8|d[(s&n)>>0];r=q+1|0;a[(D&n)>>0]=r>>>24;a[(l&n)>>0]=r>>>16;a[(m&n)>>0]=r>>>8;a[(s&n)>>0]=r;s=f+22|0;if(b[(s&o)>>1]&4){if(!g){m=dl(f,h,A,0)|0;c[(z&p)>>2]=m;if(m){k=m;break}g=c[(A&p)>>2]|0}m=Gg(c[(g&p)+68>>2]|0)|0;c[(z&p)>>2]=m;if(m){k=m;break}fw(c[(g&p)+56>>2]|0,0,c[((c[(g&p)+52>>2]|0)&p)+32>>2]|0)|0}if((a[(f&n)+17>>0]|0)!=0?(zp(f,h,2,0,z),k=c[(z&p)>>2]|0,(k|0)!=0):0)break;if(q){l=c[(u&p)>>2]|0;l=d[(l&n)+33>>0]<<16|d[(l&n)+32>>0]<<24|d[(l&n)+34>>0]<<8|d[(l&n)+35>>0];k=dl(f,l,B,0)|0;c[(z&p)>>2]=k;if(k)break;k=c[(B&p)>>2]|0;r=k+56|0;q=c[(r&p)>>2]|0;q=d[(q&n)+5>>0]<<16|d[(q&n)+4>>0]<<24|d[(q&n)+6>>0]<<8|d[(q&n)+7>>0];m=(c[(f&p)+36>>2]|0)>>>2;if(q>>>0>(m+-2|0)>>>0){c[(t&p)>>2]=58627;c[(t&p)+4>>2]=10788;bd(11,13600,t);c[(z&p)>>2]=11;k=11;break}if(q>>>0<(m+-8|0)>>>0){k=Gg(c[(k&p)+68>>2]|0)|0;c[(z&p)>>2]=k;if(k)break;u=c[(r&p)>>2]|0;t=q+1|0;a[(u&n)+4>>0]=t>>>24;a[(u&n)+5>>0]=t>>>16;a[(u&n)+6>>0]=t>>>8;a[(u&n)+7>>0]=t;u=q<<2;t=c[(r&p)>>2]|0;a[(t+u&n)+8>>0]=h>>>24;a[(t+u&n)+9>>0]=h>>>16;a[(t+u&n)+10>>0]=h>>>8;a[(t+u&n)+11>>0]=h;if((((g|0)!=0?(b[(s&o)>>1]&4)==0:0)?(v=c[(g&p)+68>>2]|0,w=v+24|0,x=e[(w&o)>>1]|0,(x&2|0)!=0):0)?(c[((c[(v&p)+16>>2]|0)&p)+96>>2]|0)==0:0)b[(w&o)>>1]=x|32;l=f+60|0;k=c[(l&p)>>2]|0;do if(!k){g=c[(f&p)+44>>2]|0;k=qg(512,0)|0;if(!k){c[(l&p)>>2]=0;k=7;break}else{fw(k|0,0,512)|0;c[(k&p)>>2]=g;c[(l&p)>>2]=k;y=28;break}}else y=28;while(0);if((y|0)==28)if((c[(k&p)>>2]|0)>>>0>>0)k=0;else k=bi(k,h)|0;c[(z&p)>>2]=k;break}}else l=0;if(!g){k=dl(f,h,A,0)|0;c[(z&p)>>2]=k;if(k)break;g=c[(A&p)>>2]|0}k=Gg(c[(g&p)+68>>2]|0)|0;c[(z&p)>>2]=k;if(!k){k=g+56|0;v=c[(k&p)>>2]|0;a[(v&n)>>0]=l>>>24;a[(v&n)+1>>0]=l>>>16;a[(v&n)+2>>0]=l>>>8;a[(v&n)+3>>0]=l;k=(c[(k&p)>>2]|0)+4|0;a[(k&n)>>0]=0;a[(k&n)+1>>0]=0;a[(k&n)+2>>0]=0;a[(k&n)+3>>0]=0;k=c[(u&p)>>2]|0;a[(k&n)+32>>0]=h>>>24;a[(k&n)+33>>0]=h>>>16;a[(k&n)+34>>0]=h>>>8;a[(k&n)+35>>0]=h;k=0}}else k=l;while(0);g=c[(A&p)>>2]|0;if(g){a[(g&n)>>0]=0;Bg(c[(g&p)+68>>2]|0)}g=c[(B&p)>>2]|0;if(g)Bg(c[(g&p)+68>>2]|0);i=C;return k|0}function Zm(f,g,h,k,l,m){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,O=0,P=0,Q=0,R=0,S=0;S=i;i=i+48|0;if((i|0)>=(j|0))fa();P=S+24|0;G=S;z=S+36|0;Q=S+32|0;w=g+72|0;O=c[(w&p)>>2]|0;x=c[(f&p)>>2]|0;u=c[(g&p)+68>>2]|0;v=x+15|0;if((a[(v&n)>>0]|0)!=0?(q=Gg(u)|0,(q|0)!=0):0)R=20;else R=3;a:do if((R|0)==3){r=u+24|0;t=b[(r&o)>>1]|0;if((t&2)!=0?(Uo(u)|0)!=0:0){q=Vo(u)|0;if(q){R=20;break}t=b[(r&o)>>1]|0}if((t&4)==0|(m|0)!=0)s=0;else s=c[(u&p)+20>>2]|0;b[(r&o)>>1]=t&65531;D=x+204|0;m=ac[c[8876>>2]&63](c[((c[(D&p)>>2]|0)&p)+40>>2]|0,l,0)|0;m=il(c[(D&p)>>2]|0,l,m)|0;do if(m){b[(r&o)>>1]=e[(r&o)>>1]|e[(m&o)+24>>1]&4;if(!(a[(v&n)>>0]|0)){ml(m);break}else{Zp(m,(c[(x&p)+24>>2]|0)+1|0);break}}while(0);t=c[(u&p)+20>>2]|0;Zp(u,l);To(u);if(a[(v&n)>>0]|0){Zp(m,t);Bg(m)}do if(s){q=zg(x,s,P,0)|0;if(!q){D=c[(P&p)>>2]|0;C=D+24|0;b[(C&o)>>1]=e[(C&o)>>1]|4;To(D);Bg(D);break}if(s>>>0>(c[(x&p)+28>>2]|0)>>>0){R=20;break a}ci(c[(x&p)+56>>2]|0,s,c[(x&p)+200>>2]|0);R=20;break a}while(0);c[(Q&p)>>2]=0;c[(w&p)>>2]=l;if(h<<24>>24==1|h<<24>>24==5){q=_p(g)|0;c[(Q&p)>>2]=q;if(!q)R=25;else break}else{m=c[(g&p)+56>>2]|0;m=d[(m&n)+1>>0]<<16|d[(m&n)>>0]<<24|d[(m&n)+2>>0]<<8|d[(m&n)+3>>0];if(m){zp(f,m,4,l,Q);q=c[(Q&p)>>2]|0;if(!q)R=25;else break}}if((R|0)==25?h<<24>>24==1:0){q=0;break}q=dl(f,k,z,0)|0;c[(Q&p)>>2]=q;if(!q){C=c[(z&p)>>2]|0;D=C+68|0;q=Gg(c[(D&p)>>2]|0)|0;c[(Q&p)>>2]=q;if(q){if(!C)break;Bg(c[(D&p)>>2]|0);break}b:do if(h<<24>>24==4){q=c[(C&p)+56>>2]|0;r=q+1|0;s=q+2|0;m=q+3|0;if((d[(r&n)>>0]<<16|d[(q&n)>>0]<<24|d[(s&n)>>0]<<8|d[(m&n)>>0]|0)==(O|0)){a[(q&n)>>0]=l>>>24;a[(r&n)>>0]=l>>>16;a[(s&n)>>0]=l>>>8;a[(m&n)>>0]=l;q=0;break}else{c[(P&p)>>2]=56060;c[(P&p)+4>>2]=10788;bd(11,13600,P);q=11;break}}else{A=a[(C&n)>>0]|0;$p(C)|0;z=b[(C&o)+18>>1]|0;B=z&65535;c:do if(z<<16>>16){g=C+56|0;x=C+20|0;u=C+64|0;y=h<<24>>24==3;z=G+18|0;m=0;while(1){w=c[(g&p)>>2]|0;v=m<<1;t=c[(u&p)>>2]|0;v=(d[(t+v&n)>>0]<<8|d[(t+(v|1)&n)>>0])&e[(x&o)>>1];t=w+v|0;if(y){rp(C,t,G);t=b[(z&o)>>1]|0;if((t<<16>>16!=0?(E=(t&65535)+v|0,F=w+(E+3)|0,F>>>0<=((c[(g&p)>>2]|0)+(e[(x&o)>>1]|0)|0)>>>0):0)?(H=w+E|0,I=w+(E+1)|0,J=w+(E+2)|0,(d[(I&n)>>0]<<16|d[(H&n)>>0]<<24|d[(J&n)>>0]<<8|d[(F&n)>>0]|0)==(O|0)):0){t=F;q=H;r=I;s=J;R=40;break}}else{q=w+(v+1)|0;r=w+(v+2)|0;s=w+(v+3)|0;if((d[(q&n)>>0]<<16|d[(t&n)>>0]<<24|d[(r&n)>>0]<<8|d[(s&n)>>0]|0)==(O|0)){R=42;break}}m=m+1|0;if((m|0)>=(B|0))break c}if((R|0)==40){a[(q&n)>>0]=l>>>24;a[(r&n)>>0]=l>>>16;a[(s&n)>>0]=l>>>8;a[(t&n)>>0]=l;break}else if((R|0)==42){a[(t&n)>>0]=l>>>24;a[(q&n)>>0]=l>>>16;a[(r&n)>>0]=l>>>8;a[(s&n)>>0]=l;break}}else m=0;while(0);do if((m|0)==(B|0)){if(h<<24>>24==5?(N=d[(C&n)+6>>0]|0,J=c[(C&p)+56>>2]|0,K=J+(N+8)|0,L=J+(N+9)|0,M=J+(N+10)|0,N=J+(N+11)|0,(d[(L&n)>>0]<<16|d[(K&n)>>0]<<24|d[(M&n)>>0]<<8|d[(N&n)>>0]|0)==(O|0)):0){a[(K&n)>>0]=l>>>24;a[(L&n)>>0]=l>>>16;a[(M&n)>>0]=l>>>8;a[(N&n)>>0]=l;break}c[(P&p)>>2]=56094;c[(P&p)+4>>2]=10788;bd(11,13600,P);q=11;break b}while(0);a[(C&n)>>0]=A;q=0}while(0);c[(Q&p)>>2]=q;if(C)Bg(c[(D&p)>>2]|0);if(!q){zp(f,l,h,k,Q);q=c[(Q&p)>>2]|0}}}while(0);if((R|0)==20)c[(Q&p)>>2]=q;i=S;return q|0}function _m(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=e+20|0;Tm(c[(j&p)>>2]|0);c[(j&p)>>2]=0;j=e+59|0;if(a[(j&n)>>0]|0){k=0;do{g=e+(k<<6)+76|0;mg(b,c[(g&p)>>2]|0);c[(g&p)>>2]=0;g=e+(k<<6)+80|0;h=c[(g&p)>>2]|0;if(h)do{i=h;h=c[(h&p)+4>>2]|0;if(i)Wc(i)}while((h|0)!=0);c[(g&p)>>2]=0;h=e+(k<<6)+96|0;g=c[(h&p)>>2]|0;if(g){i=c[(g&p)>>2]|0;if(i){lc[c[(i&p)+4>>2]&127](g)|0;c[(g&p)>>2]=0}Wc(g);c[(h&p)>>2]=0;g=e+(k<<6)+104|0;c[(g&p)>>2]=0;c[(g&p)+4>>2]=0}i=e+(k<<6)+112|0;h=c[(i&p)>>2]|0;if(h){g=c[(h&p)>>2]|0;if(g){lc[c[(g&p)+4>>2]&127](h)|0;c[(h&p)>>2]=0}Wc(h);c[(i&p)>>2]=0;g=e+(k<<6)+120|0;c[(g&p)>>2]=0;c[(g&p)+4>>2]=0}k=k+1|0}while((k|0)<(d[(j&n)>>0]|0))}h=e+36|0;if((c[(e&p)+40>>2]|0)==0?(f=c[(h&p)>>2]|0,(f|0)!=0):0)do{g=f;f=c[(f&p)+4>>2]|0;if(g)Wc(g)}while((f|0)!=0);c[(h&p)>>2]=0;c[(e&p)+44>>2]=0;a[(e&n)+56>>0]=0;c[(e&p)+48>>2]=0;c[(e&p)+8>>2]=0;f=e+32|0;mg(b,c[(f&p)>>2]|0);c[(f&p)>>2]=0;return}function $m(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+16|0;if((i|0)>=(j|0))fa();k=u+4|0;r=u;s=c[(d&p)>>2]|0;m=c[(d&p)+8>>2]|0;q=c[(s&p)+16>>2]|0;l=(c[(q+(m<<4)&p)+12>>2]|0)+78|0;b[(l&o)>>1]=e[(l&o)>>1]&65531;l=s+65|0;do if(!(a[(l&n)>>0]|0))if(g){t=g+4|0;f=c[(t&p)>>2]|0;if(!f){aq(d,c[(g&p)>>2]|0,0);h=0;break}h=g+8|0;v=c[(h&p)>>2]|0;if((v|0)!=0?(a[(v&n)>>0]|0)!=0:0){q=s+144|0;a[(q&n)>>0]=m;c[(k&p)>>2]=0;Dn(f,k)|0;f=c[(h&p)>>2]|0;c[(s&p)+140>>2]=c[(k&p)>>2];t=s+146|0;a[(t&n)>>0]=0;ih(s,f,-1,0,0,r,0)|0;f=c[(s&p)+52>>2]|0;a[(q&n)>>0]=0;do if((f|0)!=0?(a[(t&n)>>0]|0)==0:0){c[(d&p)+12>>2]=f;if((f|0)==7){a[(l&n)>>0]=1;break}else if((f|0)==9)break;if((f&255|0)!=6){t=c[(g&p)>>2]|0;aq(d,t,Se(s)|0)}}while(0);md(c[(r&p)>>2]|0)|0;h=0;break}f=c[(g&p)>>2]|0;if(!f){aq(d,0,0);h=0;break}f=bq(s,f,c[(q+(m<<4)&p)>>2]|0)|0;if((f|0)!=0?(Dn(c[(t&p)>>2]|0,f+40|0)|0)==0:0){aq(d,c[(g&p)>>2]|0,13528);h=0}else h=0}else h=0;else{aq(d,c[(g&p)>>2]|0,0);h=1}while(0);i=u;return h|0}function an(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();k=m;l=m+8|0;h=b+16|0;f=c[(h&p)>>2]|0;g=c[((c[(f+(d<<4)&p)+12>>2]|0)&p)+32>>2]|0;if(g){f=g;do{cq(c[(f&p)+8>>2]|0);f=c[(f&p)>>2]|0}while((f|0)!=0);f=c[(h&p)>>2]|0}c[(l&p)>>2]=b;f=c[(f+(d<<4)&p)>>2]|0;c[(l&p)+4>>2]=f;do if(!(_h(b,13384,f)|0))e=1;else{c[(k&p)>>2]=f;f=uh(b,13400,k)|0;if((f|0)!=0?(e=Qe(b,f,23,l,0)|0,mg(b,f),(e|0)!=7):0)break;a[(b&n)+65>>0]=1;e=7}while(0);i=m;return e|0}function bn(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=c[(b&p)+12>>2]|0;if(!j){h=b+4|0;g=b+8|0;i=0}else{h=a[(e&n)>>0]|0;if(!(h<<24>>24))h=0;else{g=e;i=h;h=0;do{g=g+1|0;h=h<<3^h^(d[(i&255&n)+9328>>0]|0);i=a[(g&n)>>0]|0}while(i<<24>>24!=0)}i=(h>>>0)%((c[(b&p)>>2]|0)>>>0)|0;h=j+(i<<3)|0;g=j+(i<<3)+4|0}h=c[(h&p)>>2]|0;g=c[(g&p)>>2]|0;c[(f&p)>>2]=i;a:do if(!h)g=0;else while(1){h=h+-1|0;if(!(dd(c[(g&p)+12>>2]|0,e)|0))break a;if(!h){g=0;break}else g=c[(g&p)>>2]|0}while(0);return g|0}function cn(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;if((i|0)>=(j|0))fa();v=w;u=w+12|0;a:do if((g|0)>0){s=b+16|0;t=b+4|0;r=(e|0)==0;h=f;e=g;while(1){m=e+-1|0;if(!(c[(s&p)>>2]|0))break a;if((h|0)<1){h=e;e=5;break}if(eq(b,h)|0)break a;if(zg(c[(t&p)>>2]|0,h,u,0)|0){e=8;break}o=c[(u&p)>>2]|0;q=c[(o&p)+4>>2]|0;do if(r)if((m|0)>0?(a[((c[(b&p)>>2]|0)&n)+17>>0]|0)!=0:0){dn(b,d[(q&n)+1>>0]<<16|d[(q&n)>>0]<<24|d[(q&n)+2>>0]<<8|d[(q&n)+3>>0],4,h);e=m}else e=m;else{l=d[(q&n)+5>>0]<<16|d[(q&n)+4>>0]<<24|d[(q&n)+6>>0]<<8|d[(q&n)+7>>0];k=c[(b&p)>>2]|0;if(a[(k&n)+17>>0]|0){dn(b,h,2,0);k=c[(b&p)>>2]|0}if((l|0)>(((c[(k&p)+36>>2]|0)/4|0)+-2|0)){c[(v&p)>>2]=h;fn(b,44640,v);e=e+-2|0;break}b:do if((l|0)>0){e=0;while(1){h=e<<2;h=d[(q+h&n)+9>>0]<<16|d[(q+h&n)+8>>0]<<24|d[(q+h&n)+10>>0]<<8|d[(q+h&n)+11>>0];if(a[(k&n)+17>>0]|0)dn(b,h,2,0);eq(b,h)|0;e=e+1|0;if((e|0)==(l|0))break b;k=c[(b&p)>>2]|0}}while(0);e=m-l|0}while(0);h=d[(q&n)+1>>0]<<16|d[(q&n)>>0]<<24|d[(q&n)+2>>0]<<8|d[(q&n)+3>>0];if(o)Bg(o);if((e|0)<=0)break a}if((e|0)==5){c[(v&p)>>2]=h;c[(v&p)+4>>2]=g;c[(v&p)+8>>2]=f;fn(b,44552,v);break}else if((e|0)==8){c[(v&p)>>2]=h;fn(b,44616,v);break}}while(0);i=w;return}function dn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0;o=i;i=i+32|0;if((i|0)>=(j|0))fa();l=o;h=o+24|0;k=o+20|0;g=hp(c[(b&p)>>2]|0,d,h,k)|0;if(!g){h=a[(h&n)>>0]|0;g=c[(k&p)>>2]|0;if(!((g|0)==(f|0)?h<<24>>24==e<<24>>24:0)){c[(l&p)>>2]=d;c[(l&p)+4>>2]=e&255;c[(l&p)+8>>2]=f;c[(l&p)+12>>2]=h&255;c[(l&p)+16>>2]=g;fn(b,44496,l)}}else if((g|0)==7|(g|0)==3082){c[(b&p)+24>>2]=1;m=3}else m=3;if((m|0)==3){c[(l&p)>>2]=d;fn(b,44464,l)}i=o;return}function en(f,g,h,k){f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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,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;aa=i;i=i+64|0;if((i|0)>=(j|0))fa();V=aa+40|0;r=aa+56|0;Q=aa+32|0;R=aa+24|0;N=aa;_=Q;c[(_&p)>>2]=0;c[(_&p)+4>>2]=0;_=R;c[(_&p)>>2]=0;c[(_&p)+4>>2]=0;_=f+28|0;$=c[(_&p)>>2]|0;W=f+32|0;X=c[(W&p)>>2]|0;Y=f+36|0;Z=c[(Y&p)>>2]|0;S=c[(f&p)>>2]|0;M=S+36|0;T=c[(M&p)>>2]|0;if((g|0)!=0?(eq(f,g)|0)==0:0){c[(_&p)>>2]=43768;c[(W&p)>>2]=g;s=dl(S,g,r,0)|0;do if(!s){U=c[(r&p)>>2]|0;a[(U&n)>>0]=0;s=$p(U)|0;if(s){c[(V&p)>>2]=s;fn(f,43824,V);if(!U){l=-1;break}Bg(c[(U&p)+68>>2]|0);l=-1;break}z=f+16|0;O=U+18|0;s=b[(O&o)>>1]|0;a:do if(!(s<<16>>16)){t=U+5|0;s=0;l=0}else{A=U+56|0;B=U+20|0;C=U+64|0;D=N+12|0;E=U+2|0;F=N+16|0;G=T+-5|0;H=T+-4|0;I=S+17|0;J=U+5|0;w=0;x=0;while(1){if(!(c[(z&p)>>2]|0)){t=J;l=w;break a}c[(_&p)>>2]=43864;c[(W&p)>>2]=g;c[(Y&p)>>2]=x;r=c[(A&p)>>2]|0;s=x<<1;t=c[(C&p)>>2]|0;s=(d[(t+s&n)>>0]<<8|d[(t+(s|1)&n)>>0])&e[(B&o)>>1];t=r+s|0;rp(U,t,N);u=c[(D&p)>>2]|0;if(a[(E&n)>>0]|0){l=N;y=c[(l&p)>>2]|0;l=c[(l&p)+4>>2]|0;if(x){q=R;m=c[(q&p)>>2]|0;q=c[(q&p)+4>>2]|0;if(!((l|0)>(q|0)|(l|0)==(q|0)&y>>>0>m>>>0)){v=V;c[(v&p)>>2]=y;c[(v&p)+4>>2]=l;v=V+8|0;c[(v&p)>>2]=m;c[(v&p)+4>>2]=q;fn(f,43896,V)}}else{m=R;c[(m&p)>>2]=y;c[(m&p)+4>>2]=l;m=Q;c[(m&p)>>2]=y;c[(m&p)+4>>2]=l}m=R;c[(m&p)>>2]=y;c[(m&p)+4>>2]=l}y=c[(F&p)>>2]|0;l=y&65535;if(u>>>0>l>>>0?(K=(y>>>16)+s|0,L=r+K|0,L>>>0<=((c[(A&p)>>2]|0)+(c[(M&p)>>2]|0)|0)>>>0):0){y=d[(r+K&n)+1>>0]<<16|d[(L&n)>>0]<<24|d[(r+K&n)+2>>0]<<8|d[(r+K&n)+3>>0];if(a[(I&n)>>0]|0)dn(f,y,3,g);cn(f,0,y,((G+u-l|0)>>>0)/(H>>>0)|0)}if(!(a[(J&n)>>0]|0)){v=d[(r+s&n)+1>>0]<<16|d[(t&n)>>0]<<24|d[(r+s&n)+2>>0]<<8|d[(r+s&n)+3>>0];if(a[(I&n)>>0]|0)dn(f,v,5,g);l=en(f,v,Q,(x|0)==0?0:R)|0;if(!((x|0)<1|(l|0)==(w|0)))fn(f,43944,V)}else l=w;x=x+1|0;s=b[(O&o)>>1]|0;if((x|0)>=(s&65535|0)){t=J;break}else w=l}}while(0);if(!(a[(t&n)>>0]|0)){r=d[(U&n)+6>>0]|0;J=c[(U&p)+56>>2]|0;r=d[(J+r&n)+9>>0]<<16|d[(J+r&n)+8>>0]<<24|d[(J+r&n)+10>>0]<<8|d[(J+r&n)+11>>0];c[(_&p)>>2]=43976;c[(W&p)>>2]=g;if(a[(S&n)+17>>0]|0){dn(f,r,5,g);s=b[(O&o)>>1]|0}en(f,r,0,s<<16>>16!=0?R:0)|0;J=a[(t&n)>>0]|0;c[(_&p)>>2]=43768;c[(W&p)>>2]=g;if(J<<24>>24)P=34}else{c[(_&p)>>2]=43768;c[(W&p)>>2]=g;P=34}do if((P|0)==34?(a[(U&n)+2>>0]|0)!=0:0){r=(k|0)!=0;if(!h){if(!r)break;r=Q;s=c[(r&p)>>2]|0;r=c[(r&p)+4>>2]|0;m=k;q=c[(m&p)>>2]|0;m=c[(m&p)+4>>2]|0;if((r|0)>(m|0)|(r|0)==(m|0)&s>>>0>q>>>0)break;J=V;c[(J&p)>>2]=s;c[(J&p)+4>>2]=r;J=V+8|0;c[(J&p)>>2]=q;c[(J&p)+4>>2]=m;fn(f,44200,V);break}if(!r){s=R;r=c[(s&p)>>2]|0;s=c[(s&p)+4>>2]|0;m=h;q=c[(m&p)>>2]|0;m=c[(m&p)+4>>2]|0;if(!((s|0)>(m|0)|(s|0)==(m|0)&r>>>0>q>>>0))break;J=V;c[(J&p)>>2]=r;c[(J&p)+4>>2]=s;J=V+8|0;c[(J&p)>>2]=q;c[(J&p)+4>>2]=m;fn(f,44008,V);break}r=Q;s=c[(r&p)>>2]|0;r=c[(r&p)+4>>2]|0;m=h;q=c[(m&p)>>2]|0;m=c[(m&p)+4>>2]|0;if(!((r|0)>(m|0)|(r|0)==(m|0)&s>>>0>q>>>0)){J=V;c[(J&p)>>2]=s;c[(J&p)+4>>2]=r;J=V+8|0;c[(J&p)>>2]=q;c[(J&p)+4>>2]=m;fn(f,44072,V)}q=R;m=c[(q&p)>>2]|0;q=c[(q&p)+4>>2]|0;r=k;s=c[(r&p)>>2]|0;r=c[(r&p)+4>>2]|0;if((q|0)>(r|0)|(q|0)==(r|0)&m>>>0>s>>>0){J=V;c[(J&p)>>2]=m;c[(J&p)+4>>2]=q;q=V+8|0;c[(q&p)>>2]=s;c[(q&p)+4>>2]=r;fn(f,44136,V);q=R;m=c[(q&p)>>2]|0;q=c[(q&p)+4>>2]|0}J=h;c[(J&p)>>2]=m;c[(J&p)+4>>2]=q}while(0);w=c[(U&p)+56>>2]|0;x=d[(U&n)+6>>0]|0;y=Go(c[(S&p)+32>>2]|0)|0;c[(_&p)>>2]=0;if(y){v=((d[(w+x&n)+5>>0]<<8|d[(w+x&n)+6>>0])+65535&65535)+1|0;fw(y+v|0,0,T-v|0)|0;fw(y|0,1,v|0)|0;v=d[(w+x&n)+3>>0]<<8|d[(w+x&n)+4>>0];q=x+12-(d[(t&n)>>0]<<2)|0;if(v){m=T+-4|0;u=0;do{t=q+(u<<1)|0;t=d[(w+t&n)>>0]<<8|d[(w+t&n)+1>>0];if((t|0)>(m|0))r=65536;else r=(Lp(U,w+t|0)|0)&65535;s=r+t|0;if((s|0)<=(T|0)){if(r)do{s=s+-1|0;J=y+s|0;a[(J&n)>>0]=(a[(J&n)>>0]|0)+1<<24>>24}while((s|0)>(t|0))}else{c[(_&p)>>2]=0;c[(V&p)>>2]=u;c[(V&p)+4>>2]=g;fn(f,44264,V)}u=u+1|0}while((u|0)<(v|0))}m=d[(w+x&n)+1>>0]<<8|d[(w+x&n)+2>>0];if(m)do{q=d[(w+m&n)+2>>0]<<8|d[(w+m&n)+3>>0];if(q){q=q+m|0;do{q=q+-1|0;J=y+q|0;a[(J&n)>>0]=(a[(J&n)>>0]|0)+1<<24>>24}while((q|0)>(m|0))}m=d[(w+m&n)>>0]<<8|d[(w+m&n)+1>>0]}while((m|0)!=0);b:do if((T|0)>0){q=0;m=0;while(1){r=a[(y+m&n)>>0]|0;if(r<<24>>24){if(r<<24>>24>1)break}else q=q+1|0;m=m+1|0;if((m|0)>=(T|0))break b}c[(V&p)>>2]=m;c[(V&p)+4>>2]=g;fn(f,44312,V)}else q=0;while(0);m=d[(w+x&n)+7>>0]|0;if((q|0)!=(m|0)){c[(V&p)>>2]=q;c[(V&p)+4>>2]=m;c[(V&p)+8>>2]=g;fn(f,44352,V)}}else c[(f&p)+24>>2]=1;$k(y);if(U)Bg(c[(U&p)+68>>2]|0)}else{c[(V&p)>>2]=s;fn(f,43784,V);l=-1}while(0);c[(_&p)>>2]=$;c[(W&p)>>2]=X;c[(Y&p)>>2]=Z;l=l+1|0}else l=0;i=aa;return l|0}function fn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+224|0;if((i|0)>=(j|0))fa();h=m;k=m+8|0;l=m+24|0;f=b+16|0;g=c[(f&p)>>2]|0;if(g){c[(f&p)>>2]=g+-1;f=b+20|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;c[(k&p)>>2]=e;e=b+40|0;if(c[(b&p)+52>>2]|0)Sk(e,43760,1);f=c[(b&p)+28>>2]|0;if(f){g=c[(b&p)+36>>2]|0;c[(h&p)>>2]=c[(b&p)+32>>2];c[(h&p)+4>>2]=g;ad(200,l,f,h)|0;f=l;while(1)if(!(a[(f&n)>>0]|0))break;else f=f+1|0;Sk(e,l,f-l&1073741823)}sg(e,1,d,k);if((a[(b&n)+65>>0]|0)==1)c[(b&p)+24>>2]=1}i=m;return}function gn(b){b=b|0;var d=0,e=0;d=b+8|0;e=c[(d&p)>>2]|0;do if((e|0)!=(c[(b&p)+4>>2]|0))if((a[(b&n)+24>>0]|0)==1){mg(c[(b&p)>>2]|0,e);break}else{Wc(e);break}while(0);c[(d&p)>>2]=0;return}function hn(d){d=d|0;var f=0,g=0,h=0,i=0;g=c[(d&p)+32>>2]|0;i=d+8|0;if(!((b[(i&o)>>1]&9312)==0?(c[(d&p)+24>>2]|0)==0:0))Qg(d);f=mh(g,64,0)|0;h=d+20|0;c[(h&p)>>2]=f;if(!(a[(g&n)+65>>0]|0)){do if(!g)f=lc[c[8792>>2]&127](f)|0;else{if((c[(g&p)+276>>2]|0)>>>0<=f>>>0?(c[(g&p)+280>>2]|0)>>>0>f>>>0:0){f=e[(g&o)+248>>1]|0;break}f=lc[c[8792>>2]&127](f)|0}while(0);c[(d&p)+24>>2]=f;h=c[(h&p)>>2]|0;c[(h&p)>>2]=0;c[(h&p)+4>>2]=g;c[(h&p)+8>>2]=0;c[(h&p)+12>>2]=0;c[(h&p)+20>>2]=0;c[(h&p)+16>>2]=h+32;b[(h&o)+24>>1]=(f+1048544|0)>>>4;b[(h&o)+26>>1]=1;c[(h&p)+28>>2]=0;c[(d&p)>>2]=h;b[(i&o)>>1]=32}else{b[(i&o)>>1]=1;c[(d&p)+24>>2]=0}return}function jn(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;i=on(a)|0;if(i){j=i;c[(j&p)>>2]=d;c[(j&p)+4>>2]=f;c[(i&p)+8>>2]=0;j=a+12|0;h=c[(j&p)>>2]|0;if(!h)c[(a&p)+8>>2]=i;else{a=a+26|0;g=e[(a&o)>>1]|0;if((g&1|0)!=0?(k=h,l=c[(k&p)+4>>2]|0,!((l|0)<(f|0)|((l|0)==(f|0)?(c[(k&p)>>2]|0)>>>0>>0:0))):0)b[(a&o)>>1]=g&65534;c[(h&p)+8>>2]=i}c[(j&p)>>2]=i}return}function kn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+160|0;if((i|0)>=(j|0))fa();g=h;fw(g|0,0,160)|0;a:do if(!a){a=0;b=0}else{b=0;while(1){d=a+8|0;f=c[(d&p)>>2]|0;c[(d&p)>>2]=0;if(!b)b=g;else{d=b;b=g;e=0;do{a=mn(d,a)|0;c[(b&p)>>2]=0;e=e+1|0;b=g+(e<<2)|0;d=c[(b&p)>>2]|0}while((d|0)!=0)}c[(b&p)>>2]=a;if(!f){a=0;b=0;break a}a=f;b=c[(g&p)>>2]|0}}while(0);do{a=mn(a,c[(g+(b<<2)&p)>>2]|0)|0;b=b+1|0}while((b|0)!=40);i=h;return a|0}function ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();e=g;f=c[(a&p)+12>>2]|0;if(!f)c[(b&p)>>2]=a;else{ln(f,b,e);c[((c[(e&p)>>2]|0)&p)+8>>2]=a}e=a+8|0;f=c[(e&p)>>2]|0;if(!f)c[(d&p)>>2]=a;else ln(f,e,d);i=g;return}function mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();l=m;d=(a|0)!=0;a:do if(d&(b|0)!=0){e=a;a=l;while(1){h=e;g=c[(h&p)>>2]|0;h=c[(h&p)+4>>2]|0;while(1){f=b;d=c[(f&p)>>2]|0;f=c[(f&p)+4>>2]|0;if((h|0)<(f|0)|(h|0)==(f|0)&g>>>0>>0){k=4;break}if(!((f|0)<(h|0)|(f|0)==(h|0)&d>>>0>>0))break;c[(a&p)+8>>2]=b;d=c[(b&p)+8>>2]|0;if(!d){f=0;d=1;break a}else{a=b;b=d}}if((k|0)==4){k=0;c[(a&p)+8>>2]=e;a=e}e=c[(e&p)+8>>2]|0;d=(e|0)!=0;if(!(d&(b|0)!=0)){f=b;b=a;break}}}else{f=b;e=a;b=l}while(0);c[(b&p)+8>>2]=d?e:f;i=m;return c[(l&p)+8>>2]|0}function nn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();e=f;d=a+8|0;b=c[(d&p)>>2]|0;c[(e&p)>>2]=b;c[(d&p)>>2]=0;c[(a&p)+12>>2]=0;if(!b)b=a;else{d=1;while(1){g=b+8|0;c[(e&p)>>2]=c[(g&p)>>2];c[(b&p)+12>>2]=a;c[(g&p)>>2]=fq(e,d)|0;a=c[(e&p)>>2]|0;if(!a)break;else{g=b;b=a;d=d+1|0;a=g}}}i=f;return b|0}function on(a){a=a|0;var d=0,e=0,f=0,g=0;f=a+24|0;d=b[(f&o)>>1]|0;if(!(d<<16>>16)){d=mh(c[(a&p)+4>>2]|0,1016,0)|0;if(!d)d=0;else{c[(d&p)>>2]=c[(a&p)>>2];c[(a&p)>>2]=d;d=d+8|0;c[(a&p)+16>>2]=d;b[(f&o)>>1]=63;e=62;g=5}}else{e=d+-1<<16>>16;d=c[(a&p)+16>>2]|0;g=5}if((g|0)==5){b[(f&o)>>1]=e;c[(a&p)+16>>2]=d+16}return d|0}function pn(d){d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;if((i|0)>=(j|0))fa();s=t;g=d+4|0;if(a[(g&n)>>0]|0){e=qn(d)|0;if(!e){m=a[(g&n)>>0]|0;f=4}}else{m=0;f=4}do if((f|0)==4){h=c[(d&p)>>2]|0;q=c[(d&p)+60>>2]|0;k=c[(d&p)+212>>2]|0;e=d+160|0;f=c[(e&p)>>2]|0;e=c[(e&p)+4>>2]|0;l=d+208|0;c[(l&p)>>2]=0;g=(c[(h&p)+4>>2]|0)+112|0;r=qg(g,0)|0;if(!r)e=7;else{fw(r|0,0,g|0)|0;c[(r&p)>>2]=h;u=r+112|0;g=r+8|0;c[(g&p)>>2]=u;c[(r&p)+4>>2]=q;b[(r&o)+40>>1]=-1;d=r+16|0;c[(d&p)>>2]=f;c[(d&p)+4>>2]=e;c[(r&p)+100>>2]=k;d=r+48|0;a[(d&n)>>0]=1;f=r+49|0;a[(f&n)>>0]=1;a[(r&n)+43>>0]=m<<24>>24!=0?2:0;c[(s&p)>>2]=524294;e=tc[c[(h&p)+24>>2]&31](h,k,u,524294,s)|0;if(e){gq(r,0);f=c[(g&p)>>2]|0;g=c[(f&p)>>2]|0;if(g){lc[c[(g&p)+4>>2]&127](f)|0;c[(f&p)>>2]=0}Wc(r);break}if(c[(s&p)>>2]&1)a[(r&n)+46>>0]=1;g=lc[c[((c[(q&p)>>2]|0)&p)+48>>2]&127](q)|0;if(g&1024)a[(d&n)>>0]=0;if(g&4096)a[(f&n)>>0]=0;c[(l&p)>>2]=r;e=0}}while(0);i=t;return e|0}function qn(b){b=b|0;var d=0,e=0,f=0;f=fl(b,4)|0;if((f|0)!=0?(d=c[(b&p)+60>>2]|0,e=c[(d&p)>>2]|0,(e|0)!=0):0){if(!(a[(b&n)+13>>0]|0))rc[c[(e&p)+32>>2]&127](d,1)|0;d=b+17|0;if((a[(d&n)>>0]|0)!=5)a[(d&n)>>0]=1}return f|0}function rn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();l=m;if(!b)g=0;else{k=b+4|0;g=c[(k&p)>>2]|0;g=rc[c[((c[(g&p)>>2]|0)&p)+28>>2]&127](g,4)|0;if(!g){h=b+43|0;if(!(a[(h&n)>>0]|0))a[(h&n)>>0]=1;g=Tn(b,0,0,0,d,e,f,0,0)|0;if(!g){c[(l&p)>>2]=-1;g=c[(k&p)>>2]|0;ac[c[((c[(g&p)>>2]|0)&p)+40>>2]&63](g,10,l)|0;if((c[(l&p)>>2]|0)==1){g=b+16|0;d=c[(g&p)+4>>2]|0;if((d|0)>-1|(d|0)==-1&(c[(g&p)>>2]|0)>>>0>4294967295){Zo(b,0,0);e=0;g=0}else{e=0;g=0}}else{e=1;g=0}}else e=0}else e=0;gq(b,e);d=c[(b&p)+8>>2]|0;h=c[(d&p)>>2]|0;if(h){lc[c[(h&p)+4>>2]&127](d)|0;c[(d&p)>>2]=0}if(e){d=c[3164]|0;if(d)nc[d&3]();d=c[(b&p)>>2]|0;ac[c[(d&p)+28>>2]&63](d,c[(b&p)+100>>2]|0,0)|0;d=c[3166]|0;if(d)nc[d&3]()}Wc(c[(b&p)+32>>2]|0);Wc(b)}i=m;return g|0}function sn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=b+5|0;g=a[(k&n)>>0]|0;if(!((a[(b&n)+15>>0]|0)!=0?!((e|0)==2|(e|0)==4):0))h=3;do if(((h|0)==3?(f=g&255,(f|0)!=(e|0)):0)?(a[(k&n)>>0]=e,(a[(b&n)+4>>0]|0)==0&(f&5|0)==1&(e&1|0)==0):0){f=c[(b&p)+64>>2]|0;g=c[(f&p)>>2]|0;if(g){lc[c[(g&p)+4>>2]&127](f)|0;c[(f&p)>>2]=0}j=b+17|0;if((d[(j&n)>>0]|0)>1){f=c[(b&p)>>2]|0;ac[c[(f&p)+28>>2]&63](f,c[(b&p)+172>>2]|0,0)|0;break}g=b+16|0;f=a[(g&n)>>0]|0;i=f<<24>>24==0;if(i){e=cl(b)|0;h=a[(g&n)>>0]|0}else{h=f;e=0}if(h<<24>>24==1)e=fl(b,2)|0;if((e|0)==0?(g=c[(b&p)>>2]|0,ac[c[(g&p)+28>>2]&63](g,c[(b&p)+172>>2]|0,0)|0,f<<24>>24==1):0){g=c[(b&p)+60>>2]|0;f=c[(g&p)>>2]|0;if(!f)break;if(!(a[(b&n)+13>>0]|0))rc[c[(f&p)+32>>2]&127](g,1)|0;if((a[(j&n)>>0]|0)==5)break;a[(j&n)>>0]=1;break}if(i)No(b)}while(0);return d[(k&n)>>0]|0}function tn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();f=g;e=g+4|0;do if(d)if(!(ih(a,d,-1,0,0,e,0)|0)){e=c[(e&p)>>2]|0;Sd(e)|0;a=hq(a,e,b)|0;break}else{dh(b,a,Se(a)|0,f);a=Nf(a)|0;break}else a=7;while(0);i=g;return a|0}function un(a){a=a|0;var b=0;c[((c[(a&p)+4>>2]|0)&p)+4>>2]=c[(a&p)>>2];b=Kg(a,0)|0;if(!b)b=Jg(a,0)|0;return b|0}function vn(e,f){e=e|0;f=f|0;var g=0,h=0;g=c[(e&p)+4>>2]|0;c[(g&p)+4>>2]=c[(e&p)>>2];e=f&255;if(b[(g&o)+22>>1]&2){f=g+17|0;if(((e|0)!=0|0)==(d[(f&n)>>0]|0|0))h=4;else f=8}else{f=g+17|0;h=4}if((h|0)==4){a[(f&n)>>0]=(e|0)!=0&1;a[(g&n)+18>>0]=(e|0)==2&1;f=0}return f|0}function wn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();e=g;d=ih(a,d,-1,0,0,e,0)|0;do if(!d){e=c[(e&p)>>2]|0;while(1){if((Sd(e)|0)!=100){f=6;break}d=tn(a,b,fe(e,0)|0)|0;if(d){f=5;break}}if((f|0)==5){hq(a,e,b)|0;break}else if((f|0)==6){d=hq(a,e,b)|0;break}}while(0);i=g;return d|0}function xn(a){a=a|0;var b=0;b=a+100|0;c[(b&p)>>2]=(c[(b&p)>>2]|0)+1;b=c[(a&p)+88>>2]|0;if(b)do{c[(b&p)+16>>2]=1;b=c[(b&p)+44>>2]|0}while((b|0)!=0);dp(c[(a&p)+204>>2]|0,0);return}function yn(a){a=a|0;var b=0,d=0,e=0;e=a+304|0;b=c[(e&p)>>2]|0;if(!((b|0)%5|0)){b=(b<<2)+20|0;d=a+328|0;b=ro(a,c[(d&p)>>2]|0,b,((b|0)<0)<<31>>31)|0;if(!b)b=7;else{a=b+(c[(e&p)>>2]<<2)|0;c[(a&p)>>2]=0;c[(a&p)+4>>2]=0;c[(a&p)+8>>2]=0;c[(a&p)+12>>2]=0;c[(a&p)+16>>2]=0;c[(d&p)>>2]=b;b=0}}else b=0;return b|0}function zn(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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;C=i;i=i+16|0;if((i|0)>=(j|0))fa();z=C;u=C+8|0;x=C+4|0;l=f+56|0;v=c[(l&p)>>2]|0;w=c[(f&p)+52>>2]|0;c[(x&p)>>2]=0;c[(z&p)>>2]=c[(f&p)>>2];B=uh(e,10344,z)|0;do if(!B)l=7;else{y=mh(e,28,0)|0;if(!y){mg(e,B);l=7;break}s=y+0|0;r=s+28|0;do{a[(s&n)>>0]=0;s=s+1|0}while((s|0)<(r|0));c[(y&p)>>2]=e;c[(y&p)+4>>2]=g;t=c[(f&p)+68>>2]|0;a:do if(t){s=c[(e&p)+20>>2]|0;if((s|0)>0){q=c[(e&p)+16>>2]|0;m=0;while(1){r=m+1|0;if((c[(q+(m<<4)&p)+12>>2]|0)==(t|0)){r=m;break a}if((r|0)<(s|0))m=r;else break}}else r=0}else r=-1e6;while(0);c[((c[(l&p)>>2]|0)&p)+4>>2]=c[((c[(e&p)+16>>2]|0)+(r<<4)&p)>>2];s=u+4|0;c[(s&p)>>2]=f;c[(u&p)>>2]=y;t=e+324|0;q=c[(t&p)>>2]|0;c[(t&p)>>2]=u;r=y+8|0;l=kc[h&7](e,c[(g&p)+8>>2]|0,w,v,r,x)|0;c[(t&p)>>2]=q;do if((l|0)==7){a[(e&n)+65>>0]=1;A=11}else if(!l){q=c[(r&p)>>2]|0;if(q){c[(q&p)>>2]=0;c[(q&p)+4>>2]=0;c[(q&p)+8>>2]=0;c[(c[(r&p)>>2]&p)>>2]=c[(g&p)>>2];c[(y&p)+12>>2]=1;if(c[(s&p)>>2]|0){c[(z&p)>>2]=c[(f&p)>>2];c[(k&p)>>2]=uh(e,28376,z)|0;An(y);l=1;break}x=f+60|0;c[(y&p)+24>>2]=c[(x&p)>>2];c[(x&p)>>2]=y;x=f+38|0;l=b[(x&o)>>1]|0;if(l<<16>>16>0){w=f+4|0;m=c[(w&p)>>2]|0;h=0;while(1){u=c[(m+(h*24|0)&p)+12>>2]|0;if(u){q=u;while(1)if(!(a[(q&n)>>0]|0))break;else q=q+1|0;r=q-u|0;t=r&1073741823;if((Fc(28424,u,6)|0)==0?(v=a[(u&n)+6>>0]|0,v<<24>>24==32|v<<24>>24==0):0)q=0;else A=24;b:do if((A|0)==24){A=0;if(!t)q=0;else{q=0;while(1){if((Fc(28432,u+q|0,7)|0)==0?(v=a[(u+q&n)+7>>0]|0,v<<24>>24==32|v<<24>>24==0):0)break;q=q+1|0;if((q|0)>=(t|0))break b}q=q+1|0}}while(0);if((q|0)<(t|0)){s=(a[(u+q&n)+6>>0]|0)!=0|6;m=q+s|0;if((m|0)<=(t|0)){r=(r&1073741823)+1-s|0;l=m;m=q;while(1){a[(u+m&n)>>0]=a[(u+l&n)>>0]|0;m=m+1|0;if((m|0)==(r|0))break;else l=m+s|0}}if((a[(u+q&n)>>0]|0)==0&(q|0)>0)a[(u+q+-1&n)>>0]=0;m=c[(w&p)>>2]|0;l=m+(h*24|0)+23|0;a[(l&n)>>0]=d[(l&n)>>0]|2;l=b[(x&o)>>1]|0}}h=h+1|0;if((h|0)>=(l<<16>>16|0)){l=0;break}}}else l=0}else l=0}else A=11;while(0);if((A|0)==11){m=c[(x&p)>>2]|0;if(!m){c[(z&p)>>2]=B;c[(k&p)>>2]=uh(e,28344,z)|0}else{c[(z&p)>>2]=m;c[(k&p)>>2]=uh(e,10344,z)|0;Wc(c[(x&p)>>2]|0)}mg(e,y)}mg(e,B)}while(0);i=C;return l|0}function An(a){a=a|0;var b=0,d=0,e=0;b=c[(a&p)>>2]|0;e=a+12|0;d=(c[(e&p)>>2]|0)+-1|0;c[(e&p)>>2]=d;if(!d){d=c[(a&p)+8>>2]|0;if(d)lc[c[((c[(d&p)>>2]|0)&p)+16>>2]&127](d)|0;mg(b,a)}return}function Bn(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;v=f+10|0;i=g<<24>>24==1;if((a[(v&n)>>0]|0)==1|i){r=f+12|0;h=c[(r&p)>>2]|0;if(i){i=h&-2;c[(r&p)>>2]=i;l=i;i=i<<1|1}else{l=h;i=(h<<1)+2|0}s=f+16|0;h=c[(s&p)>>2]|0;q=h+l|0;t=f+32|0;u=mh(c[(t&p)>>2]|0,i,((i|0)<0)<<31>>31)|0;if(!u)h=7;else{i=a[(v&n)>>0]|0;if(i<<24>>24==2)if((l|0)>0){i=u;do{j=d[(h&n)>>0]|0;l=h+2|0;m=d[(h&n)+1>>0]<<8;k=m|j;if((m&63488|0)==55296&l>>>0>>0){k=(k<<10&983040)+65536|j<<10&64512|d[(l&n)>>0]|d[(h&n)+3>>0]<<8&768;h=h+4|0}else h=l;do if(k>>>0>=128){if(k>>>0<2048){a[(i&n)>>0]=k>>>6&31|192;a[(i&n)+1>>0]=k&63|128;i=i+2|0;break}if(k>>>0<65536){a[(i&n)>>0]=k>>>12&15|224;a[(i&n)+1>>0]=k>>>6&63|128;a[(i&n)+2>>0]=k&63|128;i=i+3|0;break}else{a[(i&n)>>0]=k>>>18&7|240;a[(i&n)+1>>0]=k>>>12&63|128;a[(i&n)+2>>0]=k>>>6&63|128;a[(i&n)+3>>0]=k&63|128;i=i+4|0;break}}else{a[(i&n)>>0]=k;i=i+1|0}while(0)}while(h>>>0>>0);m=55}else{i=u;m=55}else if(i<<24>>24!=1)if((l|0)>0){i=u;do{m=d[(h&n)>>0]<<8;l=h+2|0;k=d[(h&n)+1>>0]|0;j=m|k;if((m&63488|0)==55296&l>>>0>>0){j=(j<<10&983040)+65536|k<<10&64512|d[(h&n)+3>>0]|d[(l&n)>>0]<<8&768;h=h+4|0}else h=l;do if(j>>>0>=128){if(j>>>0<2048){a[(i&n)>>0]=j>>>6&31|192;a[(i&n)+1>>0]=j&63|128;i=i+2|0;break}if(j>>>0<65536){a[(i&n)>>0]=j>>>12&15|224;a[(i&n)+1>>0]=j>>>6&63|128;a[(i&n)+2>>0]=j&63|128;i=i+3|0;break}else{a[(i&n)>>0]=j>>>18&7|240;a[(i&n)+1>>0]=j>>>12&63|128;a[(i&n)+2>>0]=j>>>6&63|128;a[(i&n)+3>>0]=j&63|128;i=i+4|0;break}}else{a[(i&n)>>0]=j;i=i+1|0}while(0)}while(h>>>0>>0);m=55}else{i=u;m=55}else{i=(l|0)>0;if(g<<24>>24==2)if(i){i=u;l=h;while(1){h=l+1|0;j=a[(l&n)>>0]|0;k=j&255;if((j&255)>191){k=d[(k+-192&n)+15360>>0]|0;a:do if((h|0)==(q|0))h=q;else while(1){j=a[(h&n)>>0]|0;if((j&-64)<<24>>24!=-128)break a;l=l+2|0;k=j&63|k<<6;if((l|0)==(q|0)){h=q;break}else{j=h;h=l;l=j}}while(0);if(!(k>>>0<128|(k&-2048|0)==55296|(k&-2|0)==65534))if(k>>>0<65536)m=22;else{l=k+-65536|0;a[(i&n)>>0]=l>>>10&192|k>>>10&63;a[(i&n)+1>>0]=l>>>18&3|216;a[(i&n)+2>>0]=k;a[(i&n)+3>>0]=k>>>8&3|220;i=i+4|0}else{k=65533;m=22}}else m=22;if((m|0)==22){m=0;a[(i&n)>>0]=k;a[(i&n)+1>>0]=k>>>8;i=i+2|0}if(h>>>0>>0)l=h;else break}}else i=u;else if(i){i=u;do{l=h+1|0;k=a[(h&n)>>0]|0;j=k&255;if((k&255)>191){j=d[(j+-192&n)+15360>>0]|0;b:do if((l|0)==(q|0))h=q;else{k=h;h=l;while(1){l=a[(h&n)>>0]|0;if((l&-64)<<24>>24!=-128)break b;k=k+2|0;j=l&63|j<<6;if((k|0)==(q|0)){h=q;break}else{l=h;h=k;k=l}}}while(0);if(!(j>>>0<128|(j&-2048|0)==55296|(j&-2|0)==65534))if(j>>>0<65536)m=31;else{l=j+-65536|0;a[(i&n)>>0]=l>>>18&3|216;a[(i&n)+1>>0]=l>>>10&192|j>>>10&63;a[(i&n)+2>>0]=j>>>8&3|220;a[(i&n)+3>>0]=j;i=i+4|0}else{j=65533;m=31}}else{h=l;m=31}if((m|0)==31){m=0;a[(i&n)>>0]=j>>>8;a[(i&n)+1>>0]=j;i=i+2|0}}while(h>>>0>>0)}else i=u;c[(r&p)>>2]=i-u;a[(i&n)>>0]=0;i=i+1|0}if((m|0)==55)c[(r&p)>>2]=i-u;a[(i&n)>>0]=0;i=f+8|0;r=b[(i&o)>>1]|0;h=r&65535;if(!((r&9312)==0?(c[(f&p)+24>>2]|0)==0:0))Qg(f);b[(i&o)>>1]=h&29|514;a[(v&n)>>0]=g;c[(s&p)>>2]=u;c[(f&p)+20>>2]=u;h=c[(t&p)>>2]|0;do if(!h)h=lc[c[8792>>2]&127](u)|0;else{if((c[(h&p)+276>>2]|0)>>>0<=u>>>0?(c[(h&p)+280>>2]|0)>>>0>u>>>0:0){h=e[(h&o)+248>>1]|0;break}h=lc[c[8792>>2]&127](u)|0}while(0);c[(f&p)+24>>2]=h;h=0}}else if(!(Vl(f)|0)){h=c[(f&p)+16>>2]|0;t=c[(f&p)+12>>2]&-2;i=h+t|0;if((t|0)>0)do{s=a[(h&n)>>0]|0;t=h+1|0;a[(h&n)>>0]=a[(t&n)>>0]|0;h=h+2|0;a[(t&n)>>0]=s}while(h>>>0>>0);a[(v&n)>>0]=g;h=0}else h=7;return h|0}function Cn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a[(b&n)>>0]|0;g=i&255;a:do switch(g|0){case 46:{if(((d[(b&n)+1>>0]|0)+-48|0)>>>0<10)j=51;else{c[(e&p)>>2]=122;f=1}break}case 47:{if((a[(b&n)+1>>0]|0)==42?(f=a[(b&n)+2>>0]|0,f<<24>>24!=0):0){f=f&255;g=3;while(1){i=a[(b+g&n)>>0]|0;if((f|0)==42&i<<24>>24==47){f=42;break}f=i&255;if(!(i<<24>>24))break;else g=g+1|0}c[(e&p)>>2]=151;f=((f|0)!=0&1)+g|0;break a}c[(e&p)>>2]=92;f=1;break}case 45:{if((a[(b&n)+1>>0]|0)==45)f=2;else{c[(e&p)>>2]=90;f=1;break a}while(1){g=a[(b+f&n)>>0]|0;if(g<<24>>24==0|g<<24>>24==10)break;f=f+1|0}c[(e&p)>>2]=151;break}case 41:{c[(e&p)>>2]=23;f=1;break}case 59:{c[(e&p)>>2]=1;f=1;break}case 43:{c[(e&p)>>2]=89;f=1;break}case 42:{c[(e&p)>>2]=91;f=1;break}case 40:{c[(e&p)>>2]=22;f=1;break}case 124:if((a[(b&n)+1>>0]|0)==124){c[(e&p)>>2]=94;f=2;break a}else{c[(e&p)>>2]=86;f=1;break a}case 91:{f=1;while(1){g=a[(b+f&n)>>0]|0;if(!(g<<24>>24)){g=g&255;break}f=f+1|0;if(g<<24>>24==93){g=93;break}}c[(e&p)>>2]=(g|0)==93?27:150;break}case 44:{c[(e&p)>>2]=26;f=1;break}case 38:{c[(e&p)>>2]=85;f=1;break}case 126:{c[(e&p)>>2]=96;f=1;break}case 34:case 39:case 96:{g=a[(b&n)+1>>0]|0;b:do if(g<<24>>24){f=1;while(1){if(g<<24>>24==i<<24>>24){f=f+1|0;if((a[(b+f&n)>>0]|0)!=i<<24>>24)break}f=f+1|0;g=a[(b+f&n)>>0]|0;if(!(g<<24>>24))break b}if(i<<24>>24==39){c[(e&p)>>2]=97;break a}else{c[(e&p)>>2]=27;break a}}else f=1;while(0);c[(e&p)>>2]=150;break}case 88:case 120:{if((a[(b&n)+1>>0]|0)==39){c[(e&p)>>2]=134;f=2;while(1){g=a[(b+f&n)>>0]|0;if(!(a[(g&255&n)+10368>>0]&8))break;else f=f+1|0}if(g<<24>>24==39&(f&1|0)==0)g=1;else{c[(e&p)>>2]=150;while(1){g=a[(b+f&n)>>0]|0;if(g<<24>>24==39|g<<24>>24==0)break;f=f+1|0}g=g<<24>>24!=0}f=(g&1)+f|0}else j=98;break}case 61:{c[(e&p)>>2]=79;f=(a[(b&n)+1>>0]|0)==61?2:1;break}case 60:{f=a[(b&n)+1>>0]|0;if(f<<24>>24==62){c[(e&p)>>2]=78;f=2;break a}else if(f<<24>>24==60){c[(e&p)>>2]=87;f=2;break a}else if(f<<24>>24==61){c[(e&p)>>2]=81;f=2;break a}else{c[(e&p)>>2]=82;f=1;break a}}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{j=51;break}case 62:{f=a[(b&n)+1>>0]|0;if(f<<24>>24==61){c[(e&p)>>2]=83;f=2;break a}else if(f<<24>>24==62){c[(e&p)>>2]=88;f=2;break a}else{c[(e&p)>>2]=80;f=1;break a}}case 63:{c[(e&p)>>2]=135;f=1;while(1)if(((d[(b+f&n)>>0]|0)+-48|0)>>>0<10)f=f+1|0;else break;break}case 33:if((a[(b&n)+1>>0]|0)==61){c[(e&p)>>2]=78;f=2;break a}else{c[(e&p)>>2]=150;f=2;break a}case 58:case 35:case 64:case 36:{c[(e&p)>>2]=135;g=a[(b&n)+1>>0]|0;if(g<<24>>24){f=1;i=0;while(1){if(!(a[(g&255&n)+10368>>0]&70)){if(g<<24>>24==40&(i|0)>0){g=i;j=78;break}if(g<<24>>24!=58){g=i;break}g=f+1|0;if((a[(b+g&n)>>0]|0)==58)f=g;else{g=i;break}}else i=i+1|0;f=f+1|0;g=a[(b+f&n)>>0]|0;if(!(g<<24>>24)){g=i;break}}do if((j|0)==78){h=f;while(1){f=h+1|0;i=a[(b+f&n)>>0]|0;if(!(i<<24>>24))break;if(i<<24>>24!=41?(a[(i&255&n)+10368>>0]&1)==0:0)h=f;else{j=81;break}}if((j|0)==81)if(i<<24>>24==41){f=h+2|0;break}c[(e&p)>>2]=150}while(0);if(g)break a}else f=1;c[(e&p)>>2]=150;break}case 37:{c[(e&p)>>2]=93;f=1;break}case 13:case 12:case 10:case 9:case 32:{f=1;while(1)if(!(a[((d[(b+f&n)>>0]|0)&n)+10368>>0]&1))break;else f=f+1|0;c[(e&p)>>2]=151;break}default:j=98}while(0);c:do if((j|0)==51){c[(e&p)>>2]=132;f=a[(b&n)>>0]|0;if(f<<24>>24==48){g=a[(b&n)+1>>0]|0;if(g<<24>>24==88|g<<24>>24==120)if(!(a[((d[(b&n)+2>>0]|0)&n)+10368>>0]&8))h=0;else{f=3;while(1)if(!(a[((d[(b+f&n)>>0]|0)&n)+10368>>0]&8))break c;else f=f+1|0}else{f=48;h=0}}else h=0;while(1){g=h+1|0;if(((f&255)+-48|0)>>>0>=10){g=h;break}f=a[(b+g&n)>>0]|0;h=g}if(f<<24>>24==46){f=g;do{f=f+1|0;g=b+f|0}while(((d[(g&n)>>0]|0)+-48|0)>>>0<10);c[(e&p)>>2]=133;h=a[(g&n)>>0]|0;i=f}else{h=f;i=g}do if(h<<24>>24==69|h<<24>>24==101){g=a[(b+i&n)+1>>0]|0;if(((g&255)+-48|0)>>>0>=10){if(!(g<<24>>24==45|g<<24>>24==43)){g=h;f=i;break}f=i+2|0;if(((d[(b+f&n)>>0]|0)+-48|0)>>>0>=10){g=h;f=i;break}}else f=i+2|0;while(1){g=b+f|0;if(((d[(g&n)>>0]|0)+-48|0)>>>0<10)f=f+1|0;else break}c[(e&p)>>2]=133;g=a[(g&n)>>0]|0}else{g=h;f=i}while(0);if(a[(g&255&n)+10368>>0]&70)do{c[(e&p)>>2]=150;f=f+1|0}while((a[((d[(b+f&n)>>0]|0)&n)+10368>>0]&70)!=0)}else if((j|0)==98){if(!(a[(g&n)+10368>>0]&70)){c[(e&p)>>2]=150;f=1;break}else f=1;while(1)if(!(a[((d[(b+f&n)>>0]|0)&n)+10368>>0]&70))break;else f=f+1|0;c[(e&p)>>2]=fi(b,f)|0}while(0);return f|0}function Dn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=a[(b&n)>>0]|0;if(f<<24>>24==43){b=b+1|0;i=0;j=13}else if(f<<24>>24==45){b=b+1|0;i=1;j=13}else if((f<<24>>24==48?(f=a[(b&n)+1>>0]|0,f<<24>>24==88|f<<24>>24==120):0)?(g=b+2|0,e=a[(g&n)>>0]|0,(a[(e&255&n)+10368>>0]&8)!=0):0){while(1){f=g+1|0;if(e<<24>>24!=48)break;g=f;e=a[(f&n)>>0]|0}if(!(a[(e&255&n)+10368>>0]&8)){e=0;f=0}else{h=e;b=0;f=0;do{e=h<<24>>24;f=(0-(e>>>6&1)&9)+e&15|f<<4;b=b+1|0;h=a[(g+b&n)>>0]|0;e=(a[(h&255&n)+10368>>0]&8)==0}while((b|0)<8&(e^1));e=e^1}if((f|0)<0|e)e=0;else{c[(d&p)>>2]=f;e=1}}else{i=0;j=13}a:do if((j|0)==13){e=0;f=0;h=0;while(1){g=(a[(b+h&n)>>0]|0)+-48|0;if(g>>>0>=10)break;f=sw(e|0,f|0,10,0)|0;e=jw(g|0,((g|0)<0)<<31>>31|0,f|0,G|0)|0;h=h+1|0;if((h|0)>=11){e=0;break a}else f=G}g=dw(e|0,f|0,i|0,0)|0;b=G;if((b|0)>0|(b|0)==0&g>>>0>2147483647)e=0;else{if(i)e=dw(0,0,e|0,f|0)|0;c[(d&p)>>2]=e;e=1}}while(0);return e|0}function En(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();g=f;c[(g&p)>>2]=e;sg(a,b,d,g);i=f;return}function Fn(e,f,g,h,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,H=0,I=0;I=i;i=i+16|0;if((i|0)>=(j|0))fa();F=I;D=I+4|0;c[(D&p)>>2]=0;H=mh(e,536,0)|0;a:do if(H){fw(H|0,0,536)|0;c[(H&p)+476>>2]=k;u=e+20|0;k=c[(u&p)>>2]|0;b:do if((k|0)>0){v=e+16|0;s=0;while(1){t=c[((c[(v&p)>>2]|0)+(s<<4)&p)+4>>2]|0;if(t){c[((c[(t&p)+4>>2]|0)&p)+4>>2]=c[(t&p)>>2];q=bl(t,1,1)|0;if(q)break;k=c[(u&p)>>2]|0}s=s+1|0;if((s|0)>=(k|0))break b}c[(F&p)>>2]=c[((c[(v&p)>>2]|0)+(s<<4)&p)>>2];ug(e,q,40984,F);s=H;break a}while(0);rl(e);c[(H&p)>>2]=e;c[(H&p)+424>>2]=0;do if((g|0)>-1){if((g|0)!=0?(a[(f+g+-1&n)>>0]|0)==0:0){E=21;break}if((c[(e&p)+92>>2]|0)<(g|0)){ug(e,18,41016,F);if(!e){s=H;q=18;break a}if(!(a[(e&n)+65>>0]|0)){s=H;q=c[(e&p)+56>>2]&18;break a}else{Ql(e);s=H;q=7;break a}}else{if((f|0)!=0?(r=jw(g|0,((g|0)<0)<<31>>31|0,1,0)|0,r=mh(e,r,G)|0,(r|0)!=0):0){kw(r|0,f|0,g|0)|0;a[(r+g&n)>>0]=0;Lh(H,r,D)|0;mg(e,r);q=H+480|0;c[(q&p)>>2]=f+((c[(q&p)>>2]|0)-r);break}c[(H&p)+480>>2]=f+g;break}}else E=21;while(0);if((E|0)==21)Lh(H,f,D)|0;v=e+65|0;k=H+12|0;if(!(a[(v&n)>>0]|0)){s=H+12|0;if((c[(k&p)>>2]|0)==101)c[(s&p)>>2]=0}else{c[(k&p)>>2]=7;s=H+12|0}c:do if((a[(H&n)+17>>0]|0)!=0?(w=c[(H&p)>>2]|0,x=w+20|0,(c[(x&p)>>2]|0)>0):0){r=w+16|0;u=0;while(1){k=c[(r&p)>>2]|0;q=c[(k+(u<<4)&p)+4>>2]|0;if(q){if(!(a[(q&n)+8>>0]|0)){k=yg(q,0)|0;if((k|0)==7|(k|0)==3082)break;else if(k)break c;k=c[(r&p)>>2]|0;t=1}else t=0;g=c[(q&p)+4>>2]|0;c[(g&p)+4>>2]=c[(q&p)>>2];g=c[((c[(g&p)+12>>2]|0)&p)+56>>2]|0;if((d[(g&n)+41>>0]<<16|d[(g&n)+40>>0]<<24|d[(g&n)+42>>0]<<8|d[(g&n)+43>>0]|0)!=(c[(c[(k+(u<<4)&p)+12>>2]&p)>>2]|0)){vm(w,u);c[(s&p)>>2]=17}if(t)un(q)|0}u=u+1|0;if((u|0)>=(c[(x&p)>>2]|0))break c}a[(w&n)+65>>0]=1}while(0);if(a[(v&n)>>0]|0)c[(s&p)>>2]=7;if(m)c[(m&p)>>2]=c[(H&p)+480>>2];q=c[(s&p)>>2]|0;t=(q|0)==0;do if(t?(z=H+8|0,y=c[(z&p)>>2]|0,(y|0)!=0):0){s=a[(H&n)+450>>0]|0;if(!(s<<24>>24))break;else if(s<<24>>24==2){iq(y,4);r=8;k=12}else{iq(y,8);r=0;k=8}s=r;do{jq(c[(z&p)>>2]|0,s-r|0,0,c[(s<<2&p)+41040>>2]|0,0);s=s+1|0}while((s|0)<(k|0))}while(0);r=H+8|0;if((a[(e&n)+145>>0]|0)==0?(C=c[(r&p)>>2]|0,A=(c[(H&p)+480>>2]|0)-f|0,(C|0)!=0):0){if((f|0)!=0?(z=c[(C&p)>>2]|0,B=jw(A|0,((A|0)<0)<<31>>31|0,1,0)|0,B=mh(z,B,G)|0,(B|0)!=0):0){kw(B|0,f|0,A|0)|0;a[(B+A&n)>>0]=0;s=B}else s=0;c[(C&p)+168>>2]=s;C=C+88|0;b[(C&o)>>1]=b[(C&o)>>1]&-257|(h&65535)<<8&256}s=c[(r&p)>>2]|0;do if(!s)E=60;else{if(t?(a[(v&n)>>0]|0)==0:0){E=60;break}Ng(s)|0}while(0);if((E|0)==60)c[(l&p)>>2]=s;r=c[(D&p)>>2]|0;do if(!r){c[(e&p)+52>>2]=q;r=c[(e&p)+236>>2]|0;if(r){s=r+8|0;if(!(b[(s&o)>>1]&9312)){b[(s&o)>>1]=1;break}else{vg(r);break}}}else{c[(F&p)>>2]=r;ug(e,q,10344,F);mg(e,r)}while(0);r=H+528|0;s=c[(r&p)>>2]|0;if(!s)s=H;else{do{c[(r&p)>>2]=c[(s&p)+4>>2];mg(e,s);s=c[(r&p)>>2]|0}while((s|0)!=0);s=H}}else{s=0;q=7}while(0);Ch(s);mg(e,H);F=Og(e,q)|0;i=I;return F|0}function Gn(b){b=b|0;var d=0,e=0;e=c[(b&p)>>2]|0;if((a[(e&n)+145>>0]|0)==0?(d=Zh(e,b+4|0)|0,(d|0)!=0):0){c[(b&p)+12>>2]=d;e=b+64|0;c[(e&p)>>2]=(c[(e&p)>>2]|0)+1}else d=0;return d|0}function Hn(a){a=a|0;var b=0,d=0,f=0,g=0,h=0;f=c[(a&p)+24>>2]|0;h=f+84|0;b=c[(h&p)>>2]|0;if(!b){b=1020;d=0}else{b=b*40|0;d=0}g=a+4|0;a=ro(c[(f&p)>>2]|0,c[(g&p)>>2]|0,b,d)|0;d=(a|0)!=0;if(d){b=c[(f&p)>>2]|0;do if(!b)b=lc[c[8792>>2]&127](a)|0;else{if((c[(b&p)+276>>2]|0)>>>0<=a>>>0?(c[(b&p)+280>>2]|0)>>>0>a>>>0:0){b=e[(b&o)+248>>1]|0;break}b=lc[c[8792>>2]&127](a)|0}while(0);c[(h&p)>>2]=(b>>>0)/20|0;c[(g&p)>>2]=a}return (d?0:7)|0}function In(a,d,e){a=a|0;d=d|0;e=e|0;a:do if(e)switch(d|0){case -6:{if(c[(a&p)+520>>2]|0)break a;a=(c[(e&p)>>2]|0)+-1|0;c[(e&p)>>2]=a;if(a)break a;Wc(e);break a}case -8:{if(!(c[(a&p)+520>>2]|0)){Mh(e);break a}if(c[(e&p)+24>>2]|0)mg(a,c[(e&p)+20>>2]|0);mg(a,e);break a}case -10:{if(c[(a&p)+520>>2]|0)break a;An(e);break a}case -15:case -1:case -13:case -12:{mg(a,e);break a}case -11:{if(c[(a&p)+520>>2]|0)break a;Wc(e);break a}case -5:{if(!(b[(e&o)+2>>1]&16))break a;mg(a,e);break a}default:break a}while(0);return}function Jn(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;g=c[(f&p)>>2]|0;s=c[(e&p)+24>>2]|0;t=s+112|0;k=c[(t&p)>>2]|0;q=e+88|0;b[(q&o)>>1]=b[(q&o)>>1]&-193|64;h=c[(e&p)+32>>2]|0;a:do if((h|0)>0){j=c[(e&p)+4>>2]|0;while(1){h=h+-1|0;i=d[(j&n)>>0]|0;switch(i|0){case 5:case 7:case 9:{c[(j&p)+16>>2]=76;a[(j&n)+1>>0]=-19;break}case 6:case 8:{c[(j&p)+16>>2]=77;a[(j&n)+1>>0]=-19;break}case 14:{u=c[(j+-16&p)>>2]|0;g=(u|0)>(g|0)?u:g;break}case 2:case 3:{r=7;break}case 4:{if(!(c[(j&p)+8>>2]|0))r=7;else{b[(q&o)>>1]=b[(q&o)>>1]&-65;r=7}break}case 12:case 13:case 11:{b[(q&o)>>1]=b[(q&o)>>1]&-193|128;break}case 15:{u=c[(j&p)+8>>2]|0;g=(u|0)>(g|0)?u:g;break}case 10:case 1:{u=d[(j&n)+3>>0]|0;g=(u|0)>(g|0)?u:g;break}default:{}}if((r|0)==7){r=0;b[(q&o)>>1]=b[(q&o)>>1]|128}i=a[(i&n)+34168>>0]|0;a[(j&n)+2>>0]=i;if((i&1)!=0?(l=j+8|0,m=c[(l&p)>>2]|0,(m|0)<0):0)c[(l&p)>>2]=c[(k+(~m<<2)&p)>>2];if((h|0)<=0)break a;else j=j+20|0}}while(0);mg(c[(e&p)>>2]|0,c[(t&p)>>2]|0);c[(t&p)>>2]=0;c[(s&p)+108>>2]=0;c[(f&p)>>2]=g;return}function Kn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;e=b+73|0;if((a[(e&n)>>0]|0)!=4){a[(e&n)>>0]=0;f=b+56|0;d=b+48|0;d=Gp(b,c[(f&p)>>2]|0,c[(d&p)>>2]|0,c[(d&p)+4>>2]|0,0,g)|0;if(!d){Wc(c[(f&p)>>2]|0);c[(f&p)>>2]=0;f=b+68|0;d=c[(f&p)>>2]|c[(g&p)>>2];c[(f&p)>>2]=d;if((d|0)!=0?(a[(e&n)>>0]|0)==1:0){a[(e&n)>>0]=2;d=0}else d=0}}else d=c[(b&p)+68>>2]|0;i=h;return d|0}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[(a&p)+8>>2]|0;a:do if(!a)a=0;else{e=(b|0)==0;while(1){if((a|0)!=(d|0)){if(e)break;if((c[(a&p)+60>>2]|0)==(b|0))break}a=c[(a&p)+8>>2]|0;if(!a){a=0;break a}}a=Fl(a,b,d)|0}while(0);return a|0}function Mn(b){b=b|0;var e=0,f=0,g=0,h=0;f=c[(b&p)>>2]|0;g=f+1|0;c[(b&p)>>2]=g;h=a[(f&n)>>0]|0;e=h&255;if((h&255)<=191)return e|0;e=d[(e+-192&n)+15360>>0]|0;if((a[(g&n)>>0]&-64)<<24>>24==-128)while(1){f=f+2|0;c[(b&p)>>2]=f;e=(d[(g&n)>>0]|0)&63|e<<6;if((a[(f&n)>>0]&-64)<<24>>24==-128){h=g;g=f;f=h}else break}return (e>>>0<128|(e&-2048|0)==55296|(e&-2|0)==65534?65533:e)|0}function Nn(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;if((c|0)>-1)g=b+c|0;else g=-1;c=a[(b&n)>>0]|0;if(c<<24>>24!=0&g>>>0>b>>>0){d=c;c=0;do{f=b+1|0;if((d&255)>191){e=b;b=f;while(1){d=a[(b&n)>>0]|0;if((d&-64)<<24>>24==-128){d=b;b=e+2|0;e=d}else break}}else{d=a[(f&n)>>0]|0;b=f}c=c+1|0}while(d<<24>>24!=0&b>>>0>>0)}else c=0;return c|0}function On(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+48|0;if((i|0)>=(j|0))fa();w=A+32|0;x=A+16|0;y=A;k=c[(d&p)>>2]|0;if((k|0)<0){c[(d&p)>>2]=0;c[(d&p)+4>>2]=-1;b[(d&o)+12>>1]=0;a[(d&n)+14>>0]=0;k=0}s=g;r=c[(s&p)+4>>2]|0;t=y;c[(t&p)>>2]=c[(s&p)>>2];c[(t&p)+4>>2]=r;t=d+8|0;c[(t&p)>>2]=h;r=f&255;s=(f|0)==254;do{q=b[(d+(k<<4)&o)+12>>1]|0;h=q&65535;g=37184+(h<<1)|0;a:do if((q&65535)>429)z=6;else{q=r;while(1){m=b[(g&o)>>1]|0;l=m<<16>>16;if(m<<16>>16==-86){z=6;break a}m=q&255;k=l+m|0;if(k>>>0<=1496?(a[(k&n)+39336>>0]|0)==q<<24>>24:0){z=16;break}if(!(q<<24>>24))break;if((q&255)>=70){u=l;z=12;break}q=a[(m&n)+40840>>0]|0;if(!(q<<24>>24)){u=l;z=12;break}}if((z|0)==16){z=0;k=e[(k<<1&o)+22184>>1]|0;break}if(((z|0)==12?(z=0,v=u+70|0,(v|0)>-1):0)?(a[(v&n)+39336>>0]|0)==70:0){k=e[(v<<1&o)+22184>>1]|0;break}k=e[(h<<1&o)+38048>>1]|0}while(0);if((z|0)==6){z=0;k=e[(h<<1&o)+38048>>1]|0}if(k>>>0<642){z=18;break}if(k>>>0>=969){z=20;break}mq(d,k+-642|0);if(s)break;k=c[(d&p)>>2]|0}while((k|0)>-1);if((z|0)==18){kq(d,k,f,y);u=d+4|0;c[(u&p)>>2]=(c[(u&p)>>2]|0)+-1}else if((z|0)==20){c[(x&p)>>2]=c[(y&p)>>2];c[(x&p)+4>>2]=c[(y&p)+4>>2];c[(x&p)+8>>2]=c[(y&p)+8>>2];u=c[(t&p)>>2]|0;c[(w&p)>>2]=x;th(u,20432,w);c[(t&p)>>2]=u;lq(d,r,y)}i=A;return}function Pn(b){b=b|0;var d=0;d=c[(b&p)>>2]|0;if((d|0)>=0){lq(b,a[(b+(d<<4)&n)+14>>0]|0,b+(d<<4)+16|0);c[(b&p)>>2]=(c[(b&p)>>2]|0)+-1}return}function Qn(a,b){a=a|0;b=b|0;var d=0;if(b){if((c[(b&p)>>2]|0)>0){d=0;do{Nk(a,c[(b+(d<<4)&p)+12>>2]|0);Mk(a,c[(b+(d<<4)&p)+16>>2]|0,1);mg(a,c[(b+(d<<4)&p)+8>>2]|0);d=d+1|0}while((d|0)<(c[(b&p)>>2]|0))}mg(a,b)}return}function Rn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+328|0;d=c[(h&p)>>2]|0;if(d){i=a+304|0;if((c[(i&p)>>2]|0)>0){f=0;do{e=c[(d+(f<<2)&p)>>2]|0;d=c[(e&p)+8>>2]|0;if((d|0)!=0?(g=c[((c[(d&p)>>2]|0)+b&p)>>2]|0,(g|0)!=0):0)lc[g&127](d)|0;c[(e&p)+20>>2]=0;An(e);f=f+1|0;d=c[(h&p)>>2]|0}while((f|0)<(c[(i&p)>>2]|0))}mg(a,d);c[(i&p)>>2]=0;c[(h&p)>>2]=0}return}function Sn(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;do if((d|0)==-2)if(!(c[(a&p)+12>>2]|0))d=(c[(a&p)+16>>2]|0)==0?0:6;else d=6;else{h=b[(a&o)>>1]|0;g=h<<16>>16;if(!((g|0)!=(d|0)&h<<16>>16>-1)){h=(g|0)==(d|0)?4:1;g=f&255;d=e[(a&o)+2>>1]|0;if((g|0)==(d&3|0)){d=h|2;break}else return ((d&g)>>>1&1)+h|0}else d=0}while(0);return d|0} -function uc(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;if((i|0)>=(j|0))fa();return b|0}function vc(){return i|0}function wc(a){a=a|0;i=a}function xc(a,b){a=a|0;b=b|0;if(!r){r=a;s=b}}function yc(b){b=b|0;a[(k&n)>>0]=a[(b&n)>>0];a[(k&n)+1>>0]=a[(b&n)+1>>0];a[(k&n)+2>>0]=a[(b&n)+2>>0];a[(k&n)+3>>0]=a[(b&n)+3>>0]}function zc(b){b=b|0;a[(k&n)>>0]=a[(b&n)>>0];a[(k&n)+1>>0]=a[(b&n)+1>>0];a[(k&n)+2>>0]=a[(b&n)+2>>0];a[(k&n)+3>>0]=a[(b&n)+3>>0];a[(k&n)+4>>0]=a[(b&n)+4>>0];a[(k&n)+5>>0]=a[(b&n)+5>>0];a[(k&n)+6>>0]=a[(b&n)+6>>0];a[(k&n)+7>>0]=a[(b&n)+7>>0]}function Ac(a){a=a|0;G=a}function Bc(){return G|0}function Cc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();e=h+4|0;f=h;g=0;a:while(1){c[(e&p)>>2]=0;c[(f&p)>>2]=0;a[280]=0;if(Rf(14640,e)|0){d=4;break}d=c[(e&p)>>2]|0;b=0;do{if(Qe(d,c[(b<<2&p)+8>>2]|0,17,0,f)|0){d=7;break a}b=b+1|0;d=c[(e&p)>>2]|0}while((b|0)!=5);tf(d)|0;if(_v(280,8504)|0){d=9;break}g=g+1|0;if((g|0)>=3){d=11;break}}if((d|0)==4)ib(8472,8488,47,8496);else if((d|0)==7)ib(8472,8488,50,8496);else if((d|0)==9)ib(8600,8488,53,8496);else if((d|0)==11){i=h;return 0}return 0}function Dc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;if((d|0)>0)while(1){d=d+-1|0;hw(280,c[(f&p)>>2]|0)|0;b=280+(gw(280)|0)|0;a[(b&n)>>0]=61;a[(b&n)+1>>0]=0;b=c[(e&p)>>2]|0;hw(280,((b|0)==0?20304:b)|0)|0;if((d|0)<=0)break;else{e=e+4|0;f=f+4|0}}return 0}function Ec(b){b=b|0;var e=0,f=0,g=0;g=(Fc(b,8640,7)|0)==0;g=g?b+7|0:b;if(!g)b=0;else{b=g;while(1)if(!(a[(b&n)>>0]|0))break;else b=b+1|0;b=b-g&1073741823}f=0;while(1){e=c[(f<<2&p)+8648>>2]|0;if((Fc(g,e,b)|0)==0?(a[((d[(e+b&n)>>0]|0)&n)+10368>>0]&70)==0:0){b=1;break}f=f+1|0;if((f|0)>=4){b=0;break}}return b|0}function Fc(b,c,e){b=b|0;c=c|0;e=e|0;var f=0;a:do if(b)if(c)if((e|0)>0){f=b;while(1){b=a[(f&n)>>0]|0;if(!(b<<24>>24))break;if((a[(b&255&n)+9328>>0]|0)!=(a[((d[(c&n)>>0]|0)&n)+9328>>0]|0))break;e=e+-1|0;if((e|0)<=0){e=0;break a}else{f=f+1|0;c=c+1|0}}if((e|0)>=1)e=(d[(b&255&n)+9328>>0]|0)-(d[((d[(c&n)>>0]|0)&n)+9328>>0]|0)|0;else e=0}else e=0;else e=1;else e=((c|0)!=0)<<31>>31;while(0);return e|0}function Gc(a){a=a|0;if(a>>>0<4)a=c[(a<<2&p)+8648>>2]|0;else a=0;return a|0}function Hc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();f=h;if(a>>>0<=9){g=c[(a<<2&p)+8664>>2]|0;f=b;c[(f&p)>>2]=g;c[(f&p)+4>>2]=0;f=8704+(a<<2)|0;a=d;c[(a&p)>>2]=c[(f&p)>>2];c[(a&p)+4>>2]=0;if(!e)f=0;else{c[(f&p)>>2]=g;f=0}}else{c[(f&p)>>2]=15033;c[(f&p)+4>>2]=10788;bd(21,13648,f);f=21}i=h;return f|0}function Ic(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();f=h+8|0;g=h;a=Hc(a,f,g,e)|0;if(!a){c[(b&p)>>2]=c[(f&p)>>2];c[(d&p)>>2]=c[(g&p)>>2]}i=h;return a|0}function Jc(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();n=r+4|0;l=r;switch(b|0){case 2:{c[(n&p)>>2]=0;q=a+20|0;g=c[(q&p)>>2]|0;h=(g|0)>0;if(h){l=c[(a&p)+16>>2]|0;k=0;do{b=c[(l+(k<<4)&p)+4>>2]|0;if(b)c[((c[(b&p)+4>>2]|0)&p)+4>>2]=c[(b&p)>>2];k=k+1|0}while((k|0)!=(g|0));k=a+520|0;c[(k&p)>>2]=n;if(h){m=a+16|0;h=0;do{b=c[((c[(m&p)>>2]|0)+(h<<4)&p)+12>>2]|0;if(b){l=lc[c[8796>>2]&127](16)|0;l=ca((c[(b&p)+44>>2]|0)+(c[(b&p)+12>>2]|0)+(c[(b&p)+28>>2]|0)+(c[(b&p)+60>>2]|0)|0,l)|0;c[(n&p)>>2]=l+(c[(n&p)>>2]|0);l=lc[c[8792>>2]&127](c[(b&p)+20>>2]|0)|0;c[(n&p)>>2]=(c[(n&p)>>2]|0)+l;l=lc[c[8792>>2]&127](c[(b&p)+52>>2]|0)|0;c[(n&p)>>2]=(c[(n&p)>>2]|0)+l;l=lc[c[8792>>2]&127](c[(b&p)+36>>2]|0)|0;c[(n&p)>>2]=(c[(n&p)>>2]|0)+l;l=lc[c[8792>>2]&127](c[(b&p)+68>>2]|0)|0;c[(n&p)>>2]=(c[(n&p)>>2]|0)+l;l=c[(b&p)+48>>2]|0;if(l)do{jg(a,c[(l&p)+8>>2]|0);l=c[(l&p)>>2]|0}while((l|0)!=0);l=c[(b&p)+16>>2]|0;if(l)do{kg(a,c[(l&p)+8>>2]|0);l=c[(l&p)>>2]|0}while((l|0)!=0);g=c[(q&p)>>2]|0}h=h+1|0}while((h|0)<(g|0));h=c[(n&p)>>2]|0}else h=0}else{k=a+520|0;c[(k&p)>>2]=n;h=0}c[(k&p)>>2]=0;c[(f&p)>>2]=0;c[(d&p)>>2]=h;h=0;break}case 9:case 8:case 7:{q=a+20|0;l=c[(q&p)>>2]|0;if((l|0)>0){n=c[(a&p)+16>>2]|0;m=b+-7|0;k=(g|0)==0;h=0;b=l;g=0;while(1){l=c[(n+(g<<4)&p)+4>>2]|0;if(l){l=(c[(c[(l&p)+4>>2]&p)>>2]|0)+(m<<2)+184|0;h=(c[(l&p)>>2]|0)+h|0;if(k)l=b;else{c[(l&p)>>2]=0;l=c[(q&p)>>2]|0}}else l=b;g=g+1|0;if((g|0)>=(l|0))break;else b=l}}else h=0;c[(f&p)>>2]=0;c[(d&p)>>2]=h;h=0;break}case 0:{k=a+252|0;c[(d&p)>>2]=c[(k&p)>>2];h=a+256|0;c[(f&p)>>2]=c[(h&p)>>2];if(!g)h=0;else{c[(h&p)>>2]=c[(k&p)>>2];h=0}break}case 6:case 5:case 4:{c[(d&p)>>2]=0;h=a+(b+-4<<2)+260|0;c[(f&p)>>2]=c[(h&p)>>2];if(!g)h=0;else{c[(h&p)>>2]=0;h=0}break}case 1:{m=a+20|0;k=c[(m&p)>>2]|0;g=(k|0)>0;if(g){h=c[(a&p)+16>>2]|0;l=0;do{b=c[(h+(l<<4)&p)+4>>2]|0;if(b)c[((c[(b&p)+4>>2]|0)&p)+4>>2]=c[(b&p)>>2];l=l+1|0}while((l|0)!=(k|0));if(g){b=a+16|0;l=0;h=0;while(1){g=c[((c[(b&p)>>2]|0)+(l<<4)&p)+4>>2]|0;if(!g)g=k;else{q=c[(c[(g&p)+4>>2]&p)>>2]|0;a=q+152|0;n=(c[(a&p)>>2]|0)+60+(e[(q&o)+140>>1]|0)|0;n=ca(lc[c[8872>>2]&127](c[((c[(q&p)+204>>2]|0)&p)+40>>2]|0)|0,n)|0;q=lc[c[8792>>2]&127](q)|0;g=c[(m&p)>>2]|0;h=n+h+q+(c[(a&p)>>2]|0)|0}l=l+1|0;if((l|0)>=(g|0))break;else k=g}}else h=0}else h=0;c[(d&p)>>2]=h;c[(f&p)>>2]=0;h=0;break}case 3:{c[(l&p)>>2]=0;g=a+520|0;c[(g&p)>>2]=l;k=c[(a&p)+4>>2]|0;if(!k)h=0;else{do{lg(a,k);mg(a,k);k=c[(k&p)+52>>2]|0}while((k|0)!=0);h=c[(l&p)>>2]|0}c[(g&p)>>2]=0;c[(f&p)>>2]=0;c[(d&p)>>2]=h;h=0;break}case 10:{c[(f&p)>>2]=0;q=a+512|0;n=c[(q&p)+4>>2]|0;if((n|0)>0|(n|0)==0&(c[(q&p)>>2]|0)>>>0>0)h=1;else{h=a+504|0;a=c[(h&p)+4>>2]|0;h=(a|0)>0|(a|0)==0&(c[(h&p)>>2]|0)>>>0>0}c[(d&p)>>2]=h&1;h=0;break}default:h=1}i=r;return h|0}function Kc(a){a=a|0;var b=0;a:do if(!(Lc()|0)){b=c[2254]|0;if(!((b|0)==0|(a|0)==0))while(1){if(!(_v(a,c[(b&p)+16>>2]|0)|0))break a;b=c[(b&p)+12>>2]|0;if(!b){b=0;break}}}else b=0;while(0);return b|0}function Lc(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();k=m;do if(!(c[2243]|0)){c[2245]=1;if(!(c[2246]|0)){if(!(c[2195]|0)){c[(k&p)>>2]=16496;mf(4,k)|0}b=9024|0;d=b+40|0;do{c[(b&p)>>2]=0;b=b+4|0}while((b|0)<(d|0));if(c[2187]|0)c[2256]=8;h=c[2234]|0;d=c[2235]|0;b=c[2236]|0;if((h|0)!=0&(d|0)>99&(b|0)>0){g=d&-8;c[2235]=g;c[2263]=h;c[2264]=b;f=b+-1|0;if((f|0)>0){b=h+(ca(d>>>3,(b<<3)+-8|0)|0)|0;e=0;d=h;do{a=d;d=d+g|0;c[(a&p)>>2]=d;e=e+1|0}while((e|0)!=(f|0))}else b=h;c[(b&p)>>2]=0;c[2262]=b+4}else{c[2262]=0;c[2234]=0;c[2235]=0;c[2236]=0}if((c[2237]|0)==0|(c[2238]|0)<512|(c[2239]|0)<1){c[2237]=0;c[2238]=0;c[2239]=0}a=lc[c[8800>>2]&127](c[2202]|0)|0;if(a){b=9024|0;d=b+40|0;do{c[(b&p)>>2]=0;b=b+4|0}while((b|0)<(d|0));break}}c[2246]=1;if(!(c[2249]|0))c[2249]=8;a=(c[2248]|0)+1|0;c[2248]=a;if(!(c[2244]|c[2243])){c[2244]=1;b=10840|0;d=b+92|0;do{c[(b&p)>>2]=0;b=b+4|0}while((b|0)<(d|0));b=0;do{ng(10840,16608+(b*36|0)|0);b=b+1|0}while((b|0)!=59);b=0;do{ng(10840,19480+(b*36|0)|0);b=b+1|0}while((b|0)!=8);ng(10840,19256);ng(10840,19292|0);ng(10840,19328|0);if(!(c[2247]|0)){a=c[2214]|0;if(!a){c[(k&p)>>2]=16440;mf(18,k)|0;a=c[2214]|0}a=lc[a&127](c[2213]|0)|0;if(!a)l=28}else l=28;if((l|0)==28){c[2247]=1;a=Tc(10)|0;if(!a)a=7;else{Wc(a);Mc(9584,1)|0;Mc(9672|0,0)|0;Mc(9760|0,0)|0;Mc(9848|0,0)|0;a=c[2237]|0;b=c[2238]|0;d=c[2239]|0;if(c[3153]|0){k=b&-8;c[3154]=k;c[3161]=d;c[3155]=d;if((d|0)<=90){c[3156]=((d|0)/10|0)+1;c[3157]=a;c[3160]=0;c[3162]=0;if(d)l=33}else{c[3156]=10;c[3157]=a;c[3160]=0;c[3162]=0;l=33}if((l|0)==33){f=b>>>3;g=d<<3;h=ca(f<<3,d+-1|0)|0;b=a;e=0;while(1){d=d+-1|0;c[(b&p)>>2]=e;if(!d)break;else{e=b;b=b+k|0}}b=a+(ca(g,f)|0)|0;c[3160]=a+h;a=b}c[3158]=a}c[2243]=1;a=0}}c[2244]=0;b=c[2248]|0}else{b=a;a=0}c[2248]=b+-1;if((b|0)<2)c[2249]=0}else a=0;while(0);i=m;return a|0}function Mc(a,b){a=a|0;b=b|0;var d=0;d=Lc()|0;do if(!d){og(a);d=c[2254]|0;if((b|0)!=0|(d|0)==0){c[(a&p)+12>>2]=d;c[2254]=a;d=0;break}else{c[(a&p)+12>>2]=c[(d&p)+12>>2];c[((c[2254]|0)&p)+12>>2]=a;d=0;break}}while(0);return d|0}function Nc(a){a=a|0;og(a);return 0}function Oc(a){a=a|0;return 0}function Pc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;do if(!(Lc()|0)){e=9032|0;d=c[(e&p)>>2]|0;e=c[(e&p)+4>>2]|0;if((b|0)>=0)if((b|0)>0|(b|0)==0&a>>>0>0){c[2260]=9;c[2261]=0;f=9032|0;c[(f&p)>>2]=a;c[(f&p)+4>>2]=b;c[2265]=(0>(b|0)|0==(b|0)&(c[2166]|0)>>>0>=a>>>0)&1;break}else{c[2265]=0;c[2258]=0;c[2259]=0;c[2260]=0;c[2261]=0;break}}else{e=-1;d=-1}while(0);G=e;return d|0}function Qc(){var a=0;a=c[2166]|0;G=((a|0)<0)<<31>>31;return a|0}function Rc(a){a=a|0;var b=0;b=(a|0)<0;Pc(b?0:a,b?0:((a|0)<0)<<31>>31)|0;return}function Sc(a){a=a|0;var b=0;b=c[2176]|0;if(a)c[2176]=c[2166];G=((b|0)<0)<<31>>31;return b|0}function Tc(a){a=a|0;if((Lc()|0)!=0|(a|0)<1)a=0;else a=qg(a,((a|0)<0)<<31>>31)|0;return a|0}function Uc(a,b){a=a|0;b=b|0;if(!(Lc()|0))a=qg(a,b)|0;else a=0;return a|0}function Vc(a){a=a|0;a=lc[c[8792>>2]&127](a)|0;G=((a|0)<0)<<31>>31;return a|0}function Wc(a){a=a|0;var b=0;do if(a)if(!(c[2186]|0)){cc[c[8784>>2]&31](a);break}else{b=lc[c[8792>>2]&127](a)|0;c[2166]=(c[2166]|0)-b;c[2175]=(c[2175]|0)+-1;cc[c[8784>>2]&31](a);break}while(0);return}function Xc(a,b){a=a|0;b=b|0;var c=0;if(!(Lc()|0)){c=(b|0)<0;b=rg(a,c?0:b,c?0:((b|0)<0)<<31>>31)|0}else b=0;return b|0}function Yc(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Lc()|0))b=rg(a,b,c)|0;else b=0;return b|0}function Zc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+112|0;if((i|0)>=(j|0))fa();f=g+28|0;e=g;if(!(Lc()|0)){c[(e&p)+4>>2]=f;c[(e&p)+8>>2]=f;c[(e&p)>>2]=0;c[(e&p)+12>>2]=0;c[(e&p)+16>>2]=70;c[(e&p)+20>>2]=1e9;a[(e&n)+25>>0]=0;a[(e&n)+24>>0]=2;sg(e,0,b,d);e=tg(e)|0}else e=0;i=g;return e|0}function _c(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))fa();d=e;if(!(Lc()|0)){c[(d&p)>>2]=b;d=Zc(a,d)|0}else d=0;i=e;return d|0}function $c(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+32|0;if((i|0)>=(j|0))fa();g=h;if((b|0)>=1){c[(g&p)+4>>2]=d;c[(g&p)+8>>2]=d;c[(g&p)>>2]=0;c[(g&p)+12>>2]=0;c[(g&p)+16>>2]=b;c[(g&p)+20>>2]=0;a[(g&n)+25>>0]=0;a[(g&n)+24>>0]=0;sg(g,0,e,f);d=tg(g)|0}i=h;return d|0}function ad(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();g=f;c[(g&p)>>2]=e;a=$c(a,b,d,g)|0;i=f;return a|0}function bd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+256|0;if((i|0)>=(j|0))fa();f=k+16|0;h=k+44|0;g=k;if(c[2250]|0){c[(g&p)>>2]=e;c[(f&p)+4>>2]=h;c[(f&p)+8>>2]=h;c[(f&p)>>2]=0;c[(f&p)+12>>2]=0;c[(f&p)+16>>2]=210;c[(f&p)+20>>2]=0;a[(f&n)+25>>0]=0;a[(f&n)+24>>0]=0;sg(f,0,d,g);e=c[2250]|0;g=c[2251]|0;f=tg(f)|0;mc[e&63](g,b,f)}i=k;return}function cd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;h=i;i=i+256|0;if((i|0)>=(j|0))fa();g=h;do if(!(Lc()|0)){if((b|0)<1|(e|0)==0){a[9064]=0;break}if(!(a[9064]|0)){a[9066]=0;a[9065]=0;f=(Lc()|0)==0;f=f?c[2254]|0:0;ac[c[(f&p)+56>>2]&63](f,256,g)|0;f=0;do{a[(f&n)+9067>>0]=f;f=f+1|0}while((f|0)!=256);f=0;do{k=9067+f|0;m=(d[(g+f&n)>>0]|0)+(d[(k&n)>>0]|0)+(d[9066]|0)|0;a[9066]=m;m=9067+(m&255)|0;l=a[(m&n)>>0]|0;a[(m&n)>>0]=a[(k&n)>>0]|0;a[(k&n)>>0]=l;f=f+1|0}while((f|0)!=256);a[9064]=1}while(1){k=(a[9065]|0)+1<<24>>24;a[9065]=k;k=9067+(k&255)|0;g=a[(k&n)>>0]|0;f=g&255;l=(d[9066]|0)+f|0;a[9066]=l;a[(k&n)>>0]=a[(l&255&n)+9067>>0]|0;a[((d[9066]|0)&n)+9067>>0]=g;a[(e&n)>>0]=a[((d[((d[9065]|0)&n)+9067>>0]|0)+f&255&n)+9067>>0]|0;b=b+-1|0;if(!b)break;else e=e+1|0}}while(0);i=h;return}function dd(b,c){b=b|0;c=c|0;var e=0;if(b)if(!c)c=1;else{e=a[(b&n)>>0]|0;a:do if(!(e<<24>>24))e=0;else while(1){if((a[(e&255&n)+9328>>0]|0)!=(a[((d[(c&n)>>0]|0)&n)+9328>>0]|0))break a;b=b+1|0;c=c+1|0;e=a[(b&n)>>0]|0;if(!(e<<24>>24)){e=0;break}}while(0);c=(d[(e&255&n)+9328>>0]|0)-(d[((d[(c&n)>>0]|0)&n)+9328>>0]|0)|0}else c=((c|0)!=0)<<31>>31;return c|0}function ed(a){a=a|0;c[2241]=a;return 0}function fd(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();q=r;a:do if((f|0)==(d|0)){ug(f,1,10016,q);h=0}else{h=qg(48,0)|0;if(!h){c[(d&p)+52>>2]=7;h=c[(d&p)+236>>2]|0;if(!h){h=0;break}e=h+8|0;if(!(b[(e&o)>>1]&9312)){b[(e&o)>>1]=1;h=0;break}else{vg(h);h=0;break}}l=h+0|0;k=l+48|0;do{a[(l&n)>>0]=0;l=l+1|0}while((l|0)<(k|0));m=h+24|0;c[(m&p)>>2]=wg(d,f,g)|0;k=wg(d,d,e)|0;l=h+4|0;c[(l&p)>>2]=k;c[(h&p)>>2]=d;c[(h&p)+20>>2]=f;c[(h&p)+16>>2]=1;c[(h&p)+40>>2]=0;e=c[(m&p)>>2]|0;do if(!((e|0)==0|(k|0)==0)?(xg(k,c[((c[(e&p)+4>>2]|0)&p)+32>>2]|0,-1,0)|0)!=7:0)if(!(a[((c[(l&p)>>2]|0)&n)+8>>0]|0)){e=(c[(m&p)>>2]|0)+16|0;c[(e&p)>>2]=(c[(e&p)>>2]|0)+1;break a}else{ug(d,1,47416,q);break}while(0);Wc(h);h=0}while(0);i=r;return h|0}function gd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=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=i;i=i+32|0;if((i|0)>=(j|0))fa();B=F;r=F+16|0;u=F+12|0;y=F+8|0;D=b+24|0;g=c[(D&p)>>2]|0;h=c[(g&p)+4>>2]|0;c[(h&p)+4>>2]=c[(g&p)>>2];E=b+28|0;f=c[(E&p)>>2]|0;if(f>>>0<7?(30>>>(f&127)&1)==0:0){x=c[(h&p)>>2]|0;C=b+4|0;f=c[(C&p)>>2]|0;A=c[(c[(f&p)+4>>2]&p)>>2]|0;if((c[(b&p)>>2]|0)!=0?(a[(h&n)+20>>0]|0)==2:0){z=0;g=5}else v=5;do if((v|0)==5){h=b+12|0;if(!(c[(h&p)>>2]|0)){g=yg(f,2)|0;if(g){z=0;break}c[(h&p)>>2]=1;z=c[(C&p)>>2]|0;g=c[(z&p)+4>>2]|0;c[(g&p)+4>>2]=c[(z&p)>>2];g=c[((c[(g&p)+12>>2]|0)&p)+56>>2]|0;c[(b&p)+8>>2]=d[(g&n)+41>>0]<<16|d[(g&n)+40>>0]<<24|d[(g&n)+42>>0]<<8|d[(g&n)+43>>0];g=c[(D&p)>>2]|0}if(!(a[(g&n)+8>>0]|0)){z=1;g=yg(g,0)|0}else{z=0;g=0}}while(0);l=c[((c[(D&p)>>2]|0)&p)+4>>2]|0;w=c[(l&p)+32>>2]|0;q=c[((c[(C&p)>>2]|0)&p)+4>>2]|0;t=c[(q&p)+32>>2]|0;q=(a[((c[(q&p)>>2]|0)&n)+5>>0]|0)==5;f=(w|0)==(t|0)|(g|0)==0&q^1?g:8;l=c[(l&p)+44>>2]|0;h=(e|0)<0;a:do if(e){g=b+16|0;m=c[(g&p)>>2]|0;o=0;do{if(!(m>>>0<=l>>>0&(f|0)==0))break a;if((m|0)!=((((c[2514]|0)>>>0)/((c[((c[((c[(D&p)>>2]|0)&p)+4>>2]|0)&p)+32>>2]|0)>>>0)|0)+1|0)){f=zg(x,m,r,2)|0;if(!f){k=c[(r&p)>>2]|0;f=Ag(b,m,c[(k&p)+4>>2]|0,0)|0;if(k)Bg(k)}}else f=0;m=(c[(g&p)>>2]|0)+1|0;c[(g&p)>>2]=m;o=o+1|0}while(h|(o|0)<(e|0))}while(0);if(!f){c[(b&p)+36>>2]=l;f=c[(b&p)+16>>2]|0;c[(b&p)+32>>2]=l+1-f;if(f>>>0<=l>>>0){f=b+40|0;if(!(c[(f&p)>>2]|0)){C=(c[(c[((c[(D&p)>>2]|0)&p)+4>>2]&p)>>2]|0)+88|0;c[(b&p)+44>>2]=c[(C&p)>>2];c[(C&p)>>2]=b;c[(f&p)>>2]=1;f=0}else f=0}else v=22}else if((f|0)==101)v=22;do if((v|0)==22){if(!l){g=c[(C&p)>>2]|0;f=c[(g&p)+4>>2]|0;c[(f&p)+4>>2]=c[(g&p)>>2];c[(f&p)+44>>2]=0;f=Cg(f)|0;if((f|0)==0|(f|0)==101)l=1;else break}f=Dg(c[(C&p)>>2]|0,1,(c[(b&p)+8>>2]|0)+1|0)|0;if(!f){g=c[(b&p)>>2]|0;if(g)Eg(g);if(q?(s=Fg(c[(C&p)>>2]|0,2)|0,(s|0)!=0):0){f=s;break}if((w|0)<(t|0)){g=(t|0)/(w|0)|0;g=(l+-1+g|0)/(g|0)|0;h=c[2514]|0;k=c[((c[((c[(C&p)>>2]|0)&p)+4>>2]|0)&p)+32>>2]|0;g=(((g|0)==(((h>>>0)/(k>>>0)|0)+1|0))<<31>>31)+g|0;b=((w|0)<0)<<31>>31;s=sw(l|0,((l|0)<0)<<31>>31|0,w|0,b|0)|0;q=G;e=c[(A&p)+60>>2]|0;o=c[(A&p)+24>>2]|0;b:do if(g>>>0<=o>>>0){f=0;while(1){if((g|0)!=(((h>>>0)/(k>>>0)|0)+1|0)){f=zg(A,g,u,0)|0;if(f)break b;h=c[(u&p)>>2]|0;f=Gg(h)|0;if(h)Bg(h)}g=g+1|0;h=(f|0)==0;if(g>>>0>o>>>0|h^1)break;k=c[((c[((c[(C&p)>>2]|0)&p)+4>>2]|0)&p)+32>>2]|0;h=c[2514]|0}if(h)v=38}else v=38;while(0);if((v|0)==38)f=Hg(A,0,1)|0;h=c[2514]|0;l=h+t|0;m=((l|0)<0)<<31>>31;k=(m|0)<(q|0)|(m|0)==(q|0)&l>>>0>>0;l=k?l:s;m=k?m:q;h=h+w|0;k=((h|0)<0)<<31>>31;g=(f|0)==0;if(g&((k|0)<(m|0)|(k|0)==(m|0)&h>>>0>>0))do{c[(y&p)>>2]=0;f=qw(h|0,k|0,w|0,b|0)|0;f=jw(f|0,G|0,1,0)|0;f=zg(x,f,y,0)|0;g=c[(y&p)>>2]|0;if(!f)f=tc[c[((c[(e&p)>>2]|0)&p)+12>>2]&31](e,c[(g&p)+4>>2]|0,w,h,k)|0;if(g)Bg(g);h=jw(h|0,k|0,w|0,b|0)|0;k=G;g=(f|0)==0}while(g&((k|0)<(m|0)|(k|0)==(m|0)&h>>>0>>0));if(!g)break;f=rc[c[((c[(e&p)>>2]|0)&p)+24>>2]&127](e,B)|0;y=c[(B&p)+4>>2]|0;if((f|0)==0&((y|0)>(q|0)|((y|0)==(q|0)?(c[(B&p)>>2]|0)>>>0>s>>>0:0)))f=ac[c[((c[(e&p)>>2]|0)&p)+16>>2]&63](e,s,q)|0;if(f)break;f=Ig(A,0)|0}else{c[(A&p)+24>>2]=ca((w|0)/(t|0)|0,l)|0;f=Hg(A,0,0)|0}if(!f){f=Jg(c[(C&p)>>2]|0,0)|0;f=(f|0)==0?101:f}}}while(0);if(z){Kg(c[(D&p)>>2]|0,0)|0;Jg(c[(D&p)>>2]|0,0)|0}f=(f|0)==3082?7:f;c[(E&p)>>2]=f}i=F;return f|0}function hd(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;if(!a)d=0;else{h=c[(a&p)+20>>2]|0;e=c[(a&p)+24>>2]|0;d=c[(e&p)+4>>2]|0;c[(d&p)+4>>2]=c[(e&p)>>2];if(c[(a&p)>>2]|0){e=e+16|0;c[(e&p)>>2]=(c[(e&p)>>2]|0)+-1}if(c[(a&p)+40>>2]|0){d=(c[(d&p)>>2]|0)+88|0;while(1){e=c[(d&p)>>2]|0;if((e|0)==(a|0))break;else d=e+44|0}c[(d&p)>>2]=c[(a&p)+44>>2]}Lg(c[(a&p)+4>>2]|0,0,0);d=c[(a&p)+28>>2]|0;d=(d|0)==101?0:d;e=c[(a&p)>>2]|0;if(e){c[(e&p)+52>>2]=d;f=c[(e&p)+236>>2]|0;do if(f){g=f+8|0;if(!(b[(g&o)>>1]&9312)){b[(g&o)>>1]=1;break}else{vg(f);e=c[(a&p)>>2]|0;break}}while(0);Mg(e);if(c[(a&p)>>2]|0)Wc(a)}Mg(h)}return d|0}function id(a){a=a|0;return c[(a&p)+32>>2]|0}function jd(a){a=a|0;return c[(a&p)+36>>2]|0}function kd(a){a=a|0;if((a|0)!=0?(b[(a&o)+88>>1]&256)!=0:0)a=c[(a&p)+168>>2]|0;else a=0;return a|0}function ld(a){a=a|0;if(!a)a=1;else a=(b[(a&o)+88>>1]&8)!=0;return a&1|0}function md(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))fa();d=e;do if(a){b=c[(a&p)>>2]|0;if(!b){bd(21,47360,d);c[(d&p)>>2]=68910;c[(d&p)+4>>2]=10788;bd(21,13648,d);b=21;break}else{a=Og(b,Ng(a)|0)|0;Mg(b);b=a;break}}else b=0;while(0);i=e;return b|0}function nd(b){b=b|0;var d=0,e=0;if(!b)b=0;else{d=Pg(b)|0;c[(b&p)+76>>2]=-1;c[(b&p)+80>>2]=0;a[(b&n)+86>>0]=2;c[(b&p)+40>>2]=-1108210269;c[(b&p)+92>>2]=0;c[(b&p)+72>>2]=1;a[(b&n)+87>>0]=-1;c[(b&p)+104>>2]=0;e=b+144|0;c[(e&p)>>2]=0;c[(e&p)+4>>2]=0;b=Og(c[(b&p)>>2]|0,d)|0}return b|0}function od(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+68|0;e=b[(h&o)>>1]|0;if(e<<16>>16>0){i=a+60|0;d=c[(i&p)>>2]|0;g=0;do{f=d+(g*40|0)|0;if(!((b[(d+(g*40|0)&o)+8>>1]&9312)==0?(c[(d+(g*40|0)&p)+24>>2]|0)==0:0)){Qg(f);d=c[(i&p)>>2]|0;e=b[(h&o)>>1]|0}b[(d+(g*40|0)&o)+8>>1]=1;g=g+1|0}while((g|0)<(e<<16>>16|0))}d=a+88|0;e=b[(d&o)>>1]|0;if((e&256)!=0?(c[(a&p)+188>>2]|0)!=0:0)b[(d&o)>>1]=e|8;return 0}function pd(a){a=a|0;var d=0;d=a+8|0;if(b[(d&o)>>1]&18){Rg(a)|0;b[(d&o)>>1]=e[(d&o)>>1]|0|16;if(!(c[(a&p)+12>>2]|0))d=0;else d=c[(a&p)+16>>2]|0}else d=Sg(a,1)|0;return d|0}function qd(a){a=a|0;return Sg(a,1)|0}function rd(a){a=a|0;return Tg(a,1)|0}function sd(a){a=a|0;return Tg(a,2)|0}function td(a){a=a|0;return +(+Ug(a))}function ud(a){a=a|0;a=Vg(a)|0;return a|0}function vd(a){a=a|0;a=Vg(a)|0;return a|0}function wd(a){a=a|0;return Sg(a,2)|0}function xd(a){a=a|0;return Sg(a,3)|0}function yd(a){a=a|0;return Sg(a,2)|0}function zd(a){a=a|0;return d[((e[(a&o)+8>>1]|0)&31&n)+10064>>0]|0|0}function Ad(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wg(a,b,c,0,d);return}function Bd(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(f>>>0>0|(f|0)==0&e>>>0>2147483647){e=g;if(!((e|0)==0|(e|0)==-1))cc[g&31](d);if(b){c[(b&p)+20>>2]=18;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,10096,-1,1,0)|0}}else Wg(b,d,e,0,g);return}function Cd(a,b){a=a|0;b=+b;Yg(c[(a&p)>>2]|0,b);return}function Dd(b,d,e){b=b|0;d=d|0;e=e|0;c[(b&p)+20>>2]=1;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,d,e,1,-1)|0;return}function Ed(b,d,e){b=b|0;d=d|0;e=e|0;c[(b&p)+20>>2]=1;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,d,e,2,-1)|0;return}function Fd(a,d){a=a|0;d=d|0;var e=0,f=0;a=c[(a&p)>>2]|0;e=((d|0)<0)<<31>>31;f=a+8|0;if(!(b[(f&o)>>1]&9312)){c[(a&p)>>2]=d;c[(a&p)+4>>2]=e;b[(f&o)>>1]=4}else Zg(a,d,e);return}function Gd(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[(a&p)>>2]|0;f=a+8|0;if(!(b[(f&o)>>1]&9312)){c[(a&p)>>2]=d;c[(a&p)+4>>2]=e;b[(f&o)>>1]=4}else Zg(a,d,e);return}function Hd(a){a=a|0;var d=0;a=c[(a&p)>>2]|0;d=a+8|0;if(!(b[(d&o)>>1]&9312))b[(d&o)>>1]=1;else vg(a);return}function Id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wg(a,b,c,1,d);return}function Jd(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;if(f>>>0>0|(f|0)==0&e>>>0>2147483647){e=g;if(!((e|0)==0|(e|0)==-1))cc[g&31](d);if(b){c[(b&p)+20>>2]=18;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,10096,-1,1,0)|0}}else Wg(b,d,e,h<<24>>24==4?2:h,g);return}function Kd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wg(a,b,c,2,d);return}function Ld(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wg(a,b,c,3,d);return}function Md(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wg(a,b,c,2,d);return}function Nd(a,b){a=a|0;b=b|0;_g(c[(a&p)>>2]|0,b)|0;return}function Od(a,b){a=a|0;b=b|0;$g(c[(a&p)>>2]|0,b);return}function Pd(d,e){d=d|0;e=e|0;var f=0;c[(d&p)+20>>2]=e;a[(d&n)+25>>0]=1;f=c[(d&p)>>2]|0;if(b[(f&o)+8>>1]&1){if((e|0)!=516){d=e&255;if(d>>>0>26|(d|0)==2)d=16328;else d=c[(d<<2&p)+15488>>2]|0}else d=16344;Xg(f,d,-1,1,0)|0}return}function Qd(b){b=b|0;c[(b&p)+20>>2]=18;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,10096,-1,1,0)|0;return}function Rd(d){d=d|0;var e=0,f=0;e=c[(d&p)>>2]|0;f=e+8|0;if(!(b[(f&o)>>1]&9312))b[(f&o)>>1]=1;else{vg(e);e=c[(d&p)>>2]|0}c[(d&p)+20>>2]=7;a[(d&n)+25>>0]=1;a[((c[(e&p)+32>>2]|0)&n)+65>>0]=1;return}function Sd(f){f=f|0;var g=0,l=0,m=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,H=0,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;_=i;i=i+224|0;if((i|0)>=(j|0))fa();V=_+8|0;U=_;if(!(ah(f)|0)){Z=c[(f&p)>>2]|0;N=f+88|0;b[(N&o)>>1]=b[(N&o)>>1]&-513;R=f+40|0;S=f+76|0;T=f+128|0;Y=f+80|0;D=f+168|0;E=f+8|0;F=f+20|0;H=f+32|0;I=f+4|0;J=f+84|0;X=f+44|0;K=(f|0)==0;L=f+52|0;M=f+48|0;C=0;while(1){if((c[(R&p)>>2]|0)!=-1108210269)nd(f)|0;B=c[(f&p)>>2]|0;if(a[(B&n)+65>>0]|0){W=7;break}l=c[(S&p)>>2]|0;do if((l|0)<1){if(b[(N&o)>>1]&8){c[(Y&p)>>2]=17;l=1;break}if((l|0)<0){l=B+148|0;if(!(c[(l&p)>>2]|0))c[(B&p)+240>>2]=0;if((c[(B&p)+184>>2]|0)!=0?(a[(B&n)+145>>0]|0)==0:0)bh(c[(B&p)>>2]|0,T)|0;c[(l&p)>>2]=(c[(l&p)>>2]|0)+1;l=b[(N&o)>>1]|0;if(!(l&64)){l=B+156|0;c[(l&p)>>2]=(c[(l&p)>>2]|0)+1;l=b[(N&o)>>1]|0}if(l&128){A=B+152|0;c[(A&p)>>2]=(c[(A&p)>>2]|0)+1}c[(S&p)>>2]=0;W=22}else W=22}else W=22;while(0);if((W|0)==22){W=0;do if(!(b[(N&o)>>1]&3)){A=B+160|0;c[(A&p)>>2]=(c[(A&p)>>2]|0)+1;l=gh(f)|0;c[(A&p)>>2]=(c[(A&p)>>2]|0)+-1;if((l|0)==100)l=100;else W=101}else{t=c[(f&p)>>2]|0;z=c[(E&p)>>2]|0;y=z+40|0;ch(y,8);c[(F&p)>>2]=0;if((c[(Y&p)>>2]|0)==7){a[(t&n)+65>>0]=1;l=1;W=101;break}r=c[(H&p)>>2]|0;u=b[(N&o)>>1]&3;if(u<<16>>16==1){s=c[(E&p)>>2]|0;v=s+360|0;if(b[(s&o)+368>>1]&16){w=(c[(s&p)+372>>2]|0)>>>2;m=c[(s&p)+376>>2]|0;if(!w){x=m;s=r;g=0}else{l=0;s=r;do{s=(c[((c[(m+(l<<2)&p)>>2]|0)&p)+4>>2]|0)+s|0;l=l+1|0}while((l|0)<(w|0));x=m;g=w}}else{x=0;s=r;g=0}}else{x=0;s=r;g=0;v=0}r=u<<16>>16==2;m=c[(S&p)>>2]|0;while(1){l=m+1|0;if((m|0)>=(s|0)){W=33;break}if(!r)break;if((a[((c[(I&p)>>2]|0)+(m*20|0)&n)>>0]|0)==-99)break;else m=l}if((W|0)==33){c[(S&p)>>2]=l;c[(Y&p)>>2]=0;l=101;W=101;break}c[(S&p)>>2]=l;if(c[(t&p)+240>>2]|0){c[(Y&p)>>2]=9;c[(V&p)>>2]=15832;dh(X,t,10344,V);l=1;W=101;break}s=c[(H&p)>>2]|0;if((m|0)<(s|0)){l=m;A=(c[(I&p)>>2]|0)+(m*20|0)|0}else{m=m-s|0;s=c[(x&p)>>2]|0;r=c[(s&p)+4>>2]|0;if((m|0)<(r|0))r=m;else{s=m;l=0;while(1){m=s-r|0;l=l+1|0;s=c[(x+(l<<2)&p)>>2]|0;r=c[(s&p)+4>>2]|0;if((m|0)<(r|0)){r=m;break}else s=m}}l=r;A=(c[(s&p)>>2]|0)+(r*20|0)|0}if((b[(N&o)>>1]&3)==1){b[(z&o)+48>>1]=4;r=y;c[(r&p)>>2]=l;c[(r&p)+4>>2]=((l|0)<0)<<31>>31;b[(z&o)+88>>1]=2562;r=c[(d[(A&n)>>0]<<2&p)+44856>>2]|0;c[(z&p)+96>>2]=r;s=r;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;w=z+80|0;c[(z&p)+92>>2]=s-r&1073741823;a[(z&n)+90>>0]=1;if((a[(A&n)+1>>0]|0)==-18){l=(g<<2)+4|0;a:do if(!g)s=0;else{r=c[(A&p)+16>>2]|0;m=0;while(1){s=m+1|0;if((c[(x+(m<<2)&p)>>2]|0)==(r|0)){s=m;break a}if((s|0)<(g|0))m=s;else break}}while(0);if((s|0)==(g|0)?(eh(v,l,(g|0)!=0&1)|0)==0:0){c[((c[(v&p)+16>>2]|0)+(g<<2)&p)>>2]=c[(A&p)+16>>2];z=v+8|0;b[(z&o)>>1]=e[(z&o)>>1]|16;c[(v&p)+12>>2]=l;z=w}else z=w}else z=w}b[(z&o)+48>>1]=4;y=c[(A&p)+4>>2]|0;x=z+40|0;c[(x&p)>>2]=y;c[(x&p)+4>>2]=((y|0)<0)<<31>>31;b[(z&o)+88>>1]=4;x=c[(A&p)+8>>2]|0;y=z+80|0;c[(y&p)>>2]=x;c[(y&p)+4>>2]=((x|0)<0)<<31>>31;b[(z&o)+128>>1]=4;y=c[(A&p)+12>>2]|0;x=z+120|0;c[(x&p)>>2]=y;c[(x&p)+4>>2]=((y|0)<0)<<31>>31;x=z+160|0;if(!(fh(x,32)|0)){b[(z&o)+168>>1]=514;y=z+176|0;g=c[(y&p)>>2]|0;b:do switch(a[(A&n)+1>>0]|0){case -6:{t=c[(A&p)+16>>2]|0;l=t+6|0;c[(V&p)>>2]=e[(l&o)>>1];ad(32,g,44768,V)|0;if(!g)s=0;else{s=g;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;s=s-g&1073741823}c:do if(b[(l&o)>>1]|0){u=t+16|0;v=0;while(1){r=c[(t+(v<<2)&p)+20>>2]|0;if(r){r=c[(r&p)>>2]|0;if(!r){m=0;r=0}else W=61}else{r=44776;W=61}do if((W|0)==61){W=0;w=r;while(1)if(!(a[(w&n)>>0]|0))break;else w=w+1|0;m=w-r&1073741823;if((m|0)!=6)break;w=(Zv(r,11152,6)|0)==0;m=w?1:6;r=w?44784:r}while(0);if((m+s|0)>26)break;w=s+1|0;a[(g+s&n)>>0]=44;if(a[((c[(u&p)>>2]|0)+v&n)>>0]|0){a[(g+w&n)>>0]=45;w=s+2|0}kw(g+w|0,r|0,m+1|0)|0;s=w+m|0;v=v+1|0;if((v|0)>=(e[(l&o)>>1]|0))break c}l=g+s|0;a[(l&n)>>0]=44;a[(l&n)+1>>0]=46;a[(l&n)+2>>0]=46;a[(l&n)+3>>0]=46}while(0);a[(g+s&n)>>0]=41;a[(g+s&n)+1>>0]=0;r=g;break}case -15:{ad(32,g,44832,V)|0;r=g;break}case -18:{ad(32,g,44848,V)|0;r=g;break}case -4:{c[(V&p)>>2]=c[(c[(A&p)+16>>2]&p)>>2];ad(32,g,44792,V)|0;r=g;break}case -5:{l=c[(A&p)+16>>2]|0;r=b[(l&o)>>1]|0;c[(V&p)>>2]=c[(l&p)+24>>2];c[(V&p)+4>>2]=r;ad(32,g,44800,V)|0;r=g;break}case -13:{m=c[(A&p)+16>>2]|0;l=c[(m&p)+4>>2]|0;r=V;c[(r&p)>>2]=c[(m&p)>>2];c[(r&p)+4>>2]=l;ad(32,g,19920,V)|0;r=g;break}case -14:{c[(V&p)>>2]=c[(A&p)+16>>2];ad(32,g,44808,V)|0;r=g;break}case -12:{h[(k&q)>>3]=+h[(c[(A&p)+16>>2]&q)>>3];c[(V&p)>>2]=c[(k&p)>>2];c[(V&p)+4>>2]=c[(k&p)+4>>2];ad(32,g,19912,V)|0;r=g;break}case -8:{s=c[(A&p)+16>>2]|0;r=e[(s&o)+8>>1]|0;if(r&2){r=c[(s&p)+16>>2]|0;break b}if(r&4){m=s;l=c[(m&p)+4>>2]|0;r=V;c[(r&p)>>2]=c[(m&p)>>2];c[(r&p)+4>>2]=l;ad(32,g,19920,V)|0;r=g;break b}if(r&8){h[(k&q)>>3]=+h[(s&q)>>3];c[(V&p)>>2]=c[(k&p)>>2];c[(V&p)+4>>2]=c[(k&p)+4>>2];ad(32,g,19912,V)|0;r=g;break b}if(!(r&1))r=44816;else{ad(32,g,20304,V)|0;r=g}break}case -19:{a[(g&n)>>0]=0;r=g;break}case -10:{c[(V&p)>>2]=c[((c[(A&p)+16>>2]|0)&p)+8>>2];ad(32,g,44824,V)|0;r=g;break}default:{s=c[(A&p)+16>>2]|0;if(!s){a[(g&n)>>0]=0;r=g}else r=s}}while(0);if((r|0)==(c[(y&p)>>2]|0)){if(!r)l=0;else{s=r;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;l=s-r&1073741823}c[(z&p)+172>>2]=l;a[(z&n)+170>>0]=1}else Xg(x,r,-1,1,0)|0;l=b[(N&o)>>1]|0;if((l&3)==1){if(fh(z+200|0,4)|0){l=1;W=101;break}b[(z&o)+208>>1]=514;c[(z&p)+212>>2]=2;l=c[(z&p)+216>>2]|0;c[(V&p)>>2]=d[(A&n)+3>>0];ad(3,l,44760,V)|0;a[(z&n)+210>>0]=1;b[(z&o)+248>>1]=1;l=b[(N&o)>>1]|0}b[(J&o)>>1]=12-((l&3)<<2);c[(F&p)>>2]=(c[(E&p)>>2]|0)+40;c[(Y&p)>>2]=0;l=100}else{l=1;W=101}}while(0);if((W|0)==101){W=0;g=B+184|0;if(((c[(g&p)>>2]|0)!=0?(a[(B&n)+145>>0]|0)==0:0)?(c[(D&p)>>2]|0)!=0:0){bh(c[(B&p)>>2]|0,U)|0;g=c[(g&p)>>2]|0;y=c[(B&p)+188>>2]|0;z=c[(D&p)>>2]|0;m=U;A=T;A=dw(c[(m&p)>>2]|0,c[(m&p)+4>>2]|0,c[(A&p)>>2]|0,c[(A&p)+4>>2]|0)|0;A=sw(A|0,G|0,1e6,0)|0;qc[g&15](y,z,A,G)}if((l|0)==101){t=B+20|0;s=c[(t&p)>>2]|0;if((s|0)>0){u=B+16|0;v=B+216|0;w=B+220|0;g=0;l=0;do{r=c[(u&p)>>2]|0;m=c[(r+(g<<4)&p)+4>>2]|0;if(((m|0)!=0?(O=c[(m&p)+4>>2]|0,c[(O&p)+4>>2]=c[(m&p)>>2],O=c[((c[(O&p)>>2]|0)&p)+208>>2]|0,(O|0)!=0):0)?(Q=O+12|0,P=c[(Q&p)>>2]|0,c[(Q&p)>>2]=0,Q=c[(v&p)>>2]|0,(Q|0)!=0&(P|0)>0&(l|0)==0):0){l=pc[Q&31](c[(w&p)>>2]|0,B,c[(r+(g<<4)&p)>>2]|0,P)|0;s=c[(t&p)>>2]|0}g=g+1|0}while((g|0)<(s|0))}else l=0;c[(Y&p)>>2]=l;l=(l|0)==0?101:1}}c[(B&p)+52>>2]=l;if((Og(c[(f&p)>>2]|0,c[(Y&p)>>2]|0)|0)==7)c[(Y&p)>>2]=7}if((b[(N&o)>>1]&256)!=0&(l|0)!=100&(l|0)!=101)l=hh(f)|0;g=c[(B&p)+56>>2]&l;if((g|0)!=17)break;s=C+1|0;if((C|0)>=50){g=17;break}m=c[(S&p)>>2]|0;if(!K?(b[(N&o)>>1]&256)!=0:0)l=c[(D&p)>>2]|0;else l=0;r=c[(f&p)>>2]|0;g=ih(r,l,-1,0,f,U,0)|0;if((g|0)==7){g=r;W=124;break}else if(g){W=127;break}C=c[(U&p)>>2]|0;kw(V|0,C|0,208)|0;kw(C|0,f|0,208)|0;kw(f|0,V|0,208)|0;A=C+52|0;B=c[(A&p)>>2]|0;c[(A&p)>>2]=c[(L&p)>>2];c[(L&p)>>2]=B;B=C+48|0;A=c[(B&p)>>2]|0;c[(B&p)>>2]=c[(M&p)>>2];c[(M&p)>>2]=A;A=C+168|0;B=c[(A&p)>>2]|0;c[(A&p)>>2]=c[(D&p)>>2];c[(D&p)>>2]=B;b[(N&o)>>1]=b[(N&o)>>1]&-257|b[(C&o)+88>>1]&256;jh(C,f);c[(C&p)+80>>2]=0;Ng(C)|0;nd(f)|0;if((m|0)<=-1){C=s;continue}b[(N&o)>>1]=b[(N&o)>>1]|512;C=s}if((W|0)==7){c[(Y&p)>>2]=7;g=7}else if((W|0)==124){a[(g&n)+65>>0]=1;g=7;W=127}do if((W|0)==127){l=Sg(c[(Z&p)+236>>2]|0,1)|0;mg(Z,c[(X&p)>>2]|0);if(!(a[(Z&n)+65>>0]|0)){c[(X&p)>>2]=kh(Z,l)|0;c[(Y&p)>>2]=g;break}else{c[(X&p)>>2]=0;c[(Y&p)>>2]=7;g=7;break}}while(0);g=Og(Z,g)|0}else{c[(V&p)>>2]=69408;c[(V&p)+4>>2]=10788;bd(21,13648,V);g=21}i=_;return g|0}function Td(a){a=a|0;return c[((c[(a&p)+4>>2]|0)&p)+4>>2]|0}function Ud(a){a=a|0;return c[((c[(a&p)>>2]|0)&p)+32>>2]|0}function Vd(a,d){a=a|0;d=d|0;var e=0;e=c[(a&p)+8>>2]|0;if(!(b[(e&o)+8>>1]&8192))e=lh(a,d)|0;else e=c[(e&p)+16>>2]|0;return e|0}function Wd(a,b){a=a|0;b=b|0;var d=0;d=c[((c[(a&p)+12>>2]|0)&p)+204>>2]|0;a:do if(!d)d=0;else{a=c[(a&p)+16>>2]|0;while(1){if((c[(d&p)>>2]|0)==(a|0)?(c[(d&p)+4>>2]|0)==(b|0):0)break;d=c[(d&p)+16>>2]|0;if(!d){d=0;break a}}d=c[(d&p)+8>>2]|0}while(0);return d|0}function Xd(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=c[(b&p)+12>>2]|0;do if((d|0)<0)k=14;else{j=h+204|0;g=c[(j&p)>>2]|0;a:do if(g){i=c[(b&p)+16>>2]|0;while(1){if((c[(g&p)>>2]|0)==(i|0)?(c[(g&p)+4>>2]|0)==(d|0):0)break;g=c[(g&p)+16>>2]|0;if(!g){k=8;break a}}if(g){h=c[(g&p)+12>>2]|0;if(h)cc[h&31](c[(g&p)+8>>2]|0)}else k=8}else k=8;while(0);if((k|0)==8){g=mh(c[(h&p)>>2]|0,20,0)|0;if(!g){k=14;break}h=g+0|0;i=h+16|0;do{a[(h&n)>>0]=0;h=h+1|0}while((h|0)<(i|0));c[(g&p)>>2]=c[(b&p)+16>>2];c[(g&p)+4>>2]=d;c[(g&p)+16>>2]=c[(j&p)>>2];c[(j&p)>>2]=g;h=b+25|0;if(!(a[(h&n)>>0]|0)){c[(b&p)+20>>2]=0;a[(h&n)>>0]=1}}c[(g&p)+8>>2]=e;c[(g&p)+12>>2]=f}while(0);if((k|0)==14?(f|0)!=0:0)cc[f&31](e);return}function Yd(a){a=a|0;return c[((c[(a&p)+8>>2]|0)&p)+12>>2]|0}function Zd(a){a=a|0;if(!a)a=0;else a=e[(a&o)+84>>1]|0;return a|0}function _d(a){a=a|0;if((a|0)!=0?(c[(a&p)+20>>2]|0)!=0:0)a=e[(a&o)+84>>1]|0;else a=0;return a|0}function $d(a,b){a=a|0;b=b|0;var d=0;b=pd(nh(a,b)|0)|0;if(a){d=a+80|0;c[(d&p)>>2]=Og(c[(a&p)>>2]|0,c[(d&p)>>2]|0)|0}return b|0}function ae(a,b){a=a|0;b=b|0;var d=0;b=Tg(nh(a,b)|0,1)|0;if(a){d=a+80|0;c[(d&p)>>2]=Og(c[(a&p)>>2]|0,c[(d&p)>>2]|0)|0}return b|0}function be(a,b){a=a|0;b=b|0;var d=0;b=Tg(nh(a,b)|0,2)|0;if(a){d=a+80|0;c[(d&p)>>2]=Og(c[(a&p)>>2]|0,c[(d&p)>>2]|0)|0}return b|0}function ce(a,b){a=a|0;b=b|0;var d=0.0;d=+Ug(nh(a,b)|0);if(a){b=a+80|0;c[(b&p)>>2]=Og(c[(a&p)>>2]|0,c[(b&p)>>2]|0)|0}return +d}function de(a,b){a=a|0;b=b|0;var d=0;b=Vg(nh(a,b)|0)|0;if(a){d=a+80|0;c[(d&p)>>2]=Og(c[(a&p)>>2]|0,c[(d&p)>>2]|0)|0}return b|0}function ee(a,b){a=a|0;b=b|0;var d=0,e=0;b=Vg(nh(a,b)|0)|0;d=G;if(a){e=a+80|0;c[(e&p)>>2]=Og(c[(a&p)>>2]|0,c[(e&p)>>2]|0)|0}G=d;return b|0}function fe(a,b){a=a|0;b=b|0;var d=0;b=Sg(nh(a,b)|0,1)|0;if(a){d=a+80|0;c[(d&p)>>2]=Og(c[(a&p)>>2]|0,c[(d&p)>>2]|0)|0}return b|0}function ge(a,d){a=a|0;d=d|0;var f=0,g=0;d=nh(a,d)|0;f=d+8|0;g=e[(f&o)>>1]|0;if(g&2048)b[(f&o)>>1]=g&59391|4096;if(a){f=a+80|0;c[(f&p)>>2]=Og(c[(a&p)>>2]|0,c[(f&p)>>2]|0)|0}return d|0}function he(a,b){a=a|0;b=b|0;var d=0;b=Sg(nh(a,b)|0,2)|0;if(a){d=a+80|0;c[(d&p)>>2]=Og(c[(a&p)>>2]|0,c[(d&p)>>2]|0)|0}return b|0}function ie(a,b){a=a|0;b=b|0;var f=0;b=d[((e[((nh(a,b)|0)&o)+8>>1]|0)&31&n)+10064>>0]|0;if(a){f=a+80|0;c[(f&p)>>2]=Og(c[(a&p)>>2]|0,c[(f&p)>>2]|0)|0}return b|0}function je(b,d){b=b|0;d=d|0;var f=0,g=0;g=c[(b&p)>>2]|0;if(!b)f=0;else f=e[(b&o)+84>>1]|0;if((f|0)>(d|0)&(d|0)>-1){d=Sg((c[(b&p)+16>>2]|0)+(d*40|0)|0,1)|0;f=g+65|0;if(a[(f&n)>>0]|0){a[(f&n)>>0]=0;d=0}}else d=0;return d|0}function ke(b,d){b=b|0;d=d|0;var f=0,g=0;g=c[(b&p)>>2]|0;if(!b)f=0;else f=e[(b&o)+84>>1]|0;if((f|0)>(d|0)&(d|0)>-1){d=Sg((c[(b&p)+16>>2]|0)+(d*40|0)|0,2)|0;f=g+65|0;if(a[(f&n)>>0]|0){a[(f&n)>>0]=0;d=0}}else d=0;return d|0}function le(b,d){b=b|0;d=d|0;var f=0,g=0;g=c[(b&p)>>2]|0;if(!b)f=0;else f=e[(b&o)+84>>1]|0;if((f|0)>(d|0)&(d|0)>-1){d=Sg((c[(b&p)+16>>2]|0)+((f+d|0)*40|0)|0,1)|0;f=g+65|0;if(a[(f&n)>>0]|0){a[(f&n)>>0]=0;d=0}}else d=0;return d|0}function me(b,d){b=b|0;d=d|0;var f=0,g=0;g=c[(b&p)>>2]|0;if(!b)f=0;else f=e[(b&o)+84>>1]|0;if((f|0)>(d|0)&(d|0)>-1){d=Sg((c[(b&p)+16>>2]|0)+((f+d|0)*40|0)|0,2)|0;f=g+65|0;if(a[(f&n)>>0]|0){a[(f&n)>>0]=0;d=0}}else d=0;return d|0}function ne(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return oh(a,b,c,d,e,0)|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;if(e>>>0>0|(e|0)==0&d>>>0>2147483647){d=f;if((d|0)==0|(d|0)==-1)d=18;else{cc[f&31](c);d=18}}else d=oh(a,b,c,d,f,0)|0;return d|0}function pe(a,b,d){a=a|0;b=b|0;d=+d;var e=0;e=ph(a,b)|0;if(!e)Yg((c[(a&p)+60>>2]|0)+((b+-1|0)*40|0)|0,d);return e|0}function qe(a,b,c){a=a|0;b=b|0;c=c|0;return re(a,b,c,((c|0)<0)<<31>>31)|0}function re(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=ph(a,d)|0;do if(!g){d=d+-1|0;h=c[(a&p)+60>>2]|0;a=h+(d*40|0)|0;d=h+(d*40|0)+8|0;if(!(b[(d&o)>>1]&9312)){c[(a&p)>>2]=e;c[(a&p)+4>>2]=f;b[(d&o)>>1]=4;break}else{Zg(a,e,f);break}}while(0);return g|0}function se(a,b){a=a|0;b=b|0;return ph(a,b)|0}function te(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return oh(a,b,c,d,e,1)|0}function ue(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;if(e>>>0>0|(e|0)==0&d>>>0>2147483647){d=f;if((d|0)==0|(d|0)==-1)d=18;else{cc[f&31](c);d=18}}else d=oh(a,b,c,d,f,g<<24>>24==4?2:g)|0;return d|0}function ve(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return oh(a,b,c,d,e,2)|0}function we(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0;i=b[(g&o)+8>>1]|0;j=d[(i&31&n)+10064>>0]|0;do if((j|0)==3)i=oh(e,f,c[(g&p)+16>>2]|0,c[(g&p)+12>>2]|0,-1,a[(g&n)+10>>0]|0)|0;else if((j|0)==1){i=g;i=re(e,f,c[(i&p)>>2]|0,c[(i&p)+4>>2]|0)|0}else if((j|0)==2)i=pe(e,f,+h[(g&q)>>3])|0;else if((j|0)==4)if(!(i&16384)){i=oh(e,f,c[(g&p)+16>>2]|0,c[(g&p)+12>>2]|0,-1,0)|0;break}else{i=xe(e,f,c[(g&p)>>2]|0)|0;break}else i=ph(e,f)|0;while(0);return i|0}function xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=ph(a,b)|0;if(!e)$g((c[(a&p)+60>>2]|0)+((b+-1|0)*40|0)|0,d);return e|0}function ye(a){a=a|0;if(!a)a=0;else a=b[(a&o)+68>>1]|0;return a|0}function ze(a,d){a=a|0;d=d|0;if(!((a|0)==0|(d|0)<1)?(b[(a&o)+70>>1]|0)>=(d|0):0)d=c[((c[(a&p)+64>>2]|0)+(d+-1<<2)&p)>>2]|0;else d=0;return d|0}function Ae(b,c){b=b|0;c=c|0;var d=0;if(!c)d=0;else{d=c;while(1)if(!(a[(d&n)>>0]|0))break;else d=d+1|0;d=d-c&1073741823}return qh(b,c,d)|0}function Be(a,d){a=a|0;d=d|0;var e=0,f=0;if((b[(a&o)+68>>1]|0)==(b[(d&o)+68>>1]|0)){f=d+88|0;e=b[(f&o)>>1]|0;if((e&256)!=0?(c[(d&p)+188>>2]|0)!=0:0)b[(f&o)>>1]=e|8;e=a+88|0;f=b[(e&o)>>1]|0;if((f&256)!=0?(c[(a&p)+188>>2]|0)!=0:0)b[(e&o)>>1]=f|8;jh(a,d);e=0}else e=1;return e|0}function Ce(a){a=a|0;if(!a)a=0;else a=c[(a&p)>>2]|0;return a|0}function De(a){a=a|0;if(!a)a=1;else a=(e[(a&o)+88>>1]|0)>>>6&1;return a|0}function Ee(a){a=a|0;if((a|0)!=0?(c[(a&p)+76>>2]|0)>-1:0)a=(c[(a&p)+40>>2]|0)==-1108210269;else a=0;return a&1|0}function Fe(a,b){a=a|0;b=b|0;if(!b)a=a+4|0;else a=b+52|0;return c[(a&p)>>2]|0}function Ge(a,b,d){a=a|0;b=b|0;d=d|0;a=a+(b<<2)+108|0;b=c[(a&p)>>2]|0;if(d)c[(a&p)>>2]=0;return b|0}function He(a){a=a|0;var b=0,c=0,f=0;c=a+8|0;f=e[(c&o)>>1]|0;b=d[(f&31&n)+10064>>0]|0;if((f&15|0)==2){rh(a,0);b=d[((e[(c&o)>>1]|0)&31&n)+10064>>0]|0}return b|0}function Ie(d,e,f,g,h,k,l,m){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=i;i=i+16|0;if((i|0)>=(j|0))fa();S=U;T=U+4|0;c[(T&p)>>2]=0;c[(m&p)>>2]=0;N=(l|0)!=0;O=N&1;Q=mh(d,28,0)|0;do if(Q){l=Q+0|0;s=l+28|0;do{a[(l&n)>>0]=0;l=l+1|0}while((l|0)<(s|0));s=mh(d,536,0)|0;if(s){K=d+20|0;L=d+16|0;B=d+24|0;l=Q+20|0;C=Q+12|0;D=Q+24|0;E=d+65|0;F=O^3;G=O|2;H=s+440|0;I=s+72|0;J=s+68|0;r=0;M=1;q=0;while(1){fw(s|0,0,536)|0;c[(s&p)>>2]=d;mg(d,r);c[(T&p)>>2]=0;r=c[(K&p)>>2]|0;if((r|0)>0){t=c[(L&p)>>2]|0;v=0;do{u=c[(t+(v<<4)&p)+4>>2]|0;if(u)c[((c[(u&p)+4>>2]|0)&p)+4>>2]=c[(u&p)>>2];v=v+1|0}while((v|0)!=(r|0))}A=sh(s,0,f,e)|0;if(!A)break;r=a[(A&n)+44>>0]|0;if(r&16){R=11;break}if(r&32){R=13;break}if(c[(A&p)+12>>2]|0){R=17;break}z=A+38|0;w=b[(z&o)>>1]|0;a:do if(w<<16>>16>0){v=c[(A&p)+4>>2]|0;u=w<<16>>16;r=0;while(1){t=r+1|0;if(!(dd(c[(v+(r*24|0)&p)>>2]|0,g)|0)){t=r;break a}if((t|0)<(u|0))r=t;else break}}else t=0;while(0);if((t|0)==(w<<16>>16|0)){R=23;break}if(N){if((c[(B&p)>>2]&524288|0)!=0?(P=c[(A&p)+16>>2]|0,(P|0)!=0):0){x=P;r=0;do{w=c[(x&p)+20>>2]|0;if((w|0)>0){v=0;do{r=(c[(x+(v<<3)&p)+36>>2]|0)==(t|0)?10280:r;v=v+1|0}while((v|0)<(w|0))}x=c[(x&p)+4>>2]|0}while((x|0)!=0)}else r=0;v=c[(A&p)+8>>2]|0;if(v)do{u=b[(v&o)+46>>1]|0;if(u<<16>>16){y=c[(v&p)+4>>2]|0;w=u&65535;x=0;do{r=(b[(y+(x<<1)&o)>>1]|0)==(t|0)?10296:r;x=x+1|0}while((x|0)<(w|0))}v=c[(v&p)+20>>2]|0}while((v|0)!=0);if(r){R=36;break}}y=vh(s)|0;c[(l&p)>>2]=y;if(y){x=c[(A&p)+68>>2]|0;b:do if(x){w=c[(K&p)>>2]|0;if((w|0)>0){v=c[(L&p)>>2]|0;r=0;while(1){u=r+1|0;if((c[(v+(r<<4)&p)+12>>2]|0)==(x|0)){u=r;break b}if((u|0)<(w|0))r=u;else break}}else u=0}else u=-1e6;while(0);r=c[(x&p)+4>>2]|0;xh(y,wh(y,4,u,O,c[(x&p)>>2]|0)|0,r,-14);r=y+4|0;v=c[(r&p)>>2]|0;w=y+32|0;if(v)a[(v+(((c[(w&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=1;yh(y,10,10120)|0;v=y+96|0;c[(v&p)>>2]=c[(v&p)>>2]|1<>2]|0)>>>0>1){x=c[(r&p)>>2]|0;c[(x&p)+24>>2]=u;v=A+32|0;c[(x&p)+28>>2]=c[(v&p)>>2];c[((c[(r&p)>>2]|0)&p)+32>>2]=O}else v=A+32|0;xh(y,1,c[(A&p)>>2]|0,0);zh(y,F);if((c[(w&p)>>2]|0)>>>0>G>>>0){c[((c[(r&p)>>2]|0)+(G*20|0)&p)+8>>2]=c[(v&p)>>2];c[((c[(r&p)>>2]|0)+(G*20|0)&p)+12>>2]=u}xh(y,G,(b[(z&o)>>1]|0)+1|0,-14);if((c[(w&p)>>2]|0)>>>0>6)c[((c[(r&p)>>2]|0)&p)+128>>2]=b[(z&o)>>1];if(!(a[(E&n)>>0]|0)){c[(H&p)>>2]=1;c[(I&p)>>2]=1;c[(J&p)>>2]=1;Ah(y,s)}}c[(Q&p)>>2]=O;c[(C&p)>>2]=t;c[(D&p)>>2]=d;if(a[(E&n)>>0]|0){R=57;break}re(c[(l&p)>>2]|0,1,h,k)|0;q=Bh(Q,h,k,T)|0;if(!((M|0)<50&(q|0)==17)){R=57;break}r=c[(T&p)>>2]|0;M=M+1|0;q=17}if((R|0)==11){c[(S&p)>>2]=f;th(s,10160,S)}else if((R|0)==13){c[(S&p)>>2]=f;th(s,10192,S)}else if((R|0)==17){c[(S&p)>>2]=f;th(s,10232,S)}else if((R|0)==23){mg(d,0);c[(S&p)>>2]=g;c[(T&p)>>2]=uh(d,10256,S)|0;q=1;R=62;break}else if((R|0)==36){mg(d,0);c[(S&p)>>2]=r;c[(T&p)>>2]=uh(d,10304,S)|0;q=1;R=62;break}else if((R|0)==57)if(!q){q=1;r=s;R=58;break}else{r=s;R=61;break}r=s+4|0;if(!(c[(r&p)>>2]|0)){q=1;R=62}else{mg(d,0);c[(T&p)>>2]=c[(r&p)>>2];c[(r&p)>>2]=0;q=1;R=62}}else{q=1;r=s;R=58}}else{q=0;r=0;R=58}while(0);do if((R|0)==58)if(a[(d&n)+65>>0]|0)if(q){q=0;R=61;break}else{q=0;R=64;break}else{c[(m&p)>>2]=Q;q=0;break}while(0);if((R|0)==61){l=Q+20|0;s=r;R=62}if((R|0)==62){r=c[(l&p)>>2]|0;if(!r){r=s;R=64}else{Ng(r)|0;r=s;R=64}}if((R|0)==64)mg(d,Q);K=c[(T&p)>>2]|0;c[(S&p)>>2]=K;ug(d,q,(K|0)!=0?10344:0,S);mg(d,K);Ch(r);mg(d,r);K=Og(d,q)|0;i=U;return K|0}function Je(a){a=a|0;var b=0,d=0;if(!a)a=0;else{d=c[(a&p)+24>>2]|0;b=md(c[(a&p)+20>>2]|0)|0;mg(d,a);a=b}return a|0}function Ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Eh(a,b,c,d,18)|0}function Le(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Eh(a,b,c,d,19)|0}function Me(a){a=a|0;if((a|0)!=0?(c[(a&p)+20>>2]|0)!=0:0)a=c[(a&p)+4>>2]|0;else a=0;return a|0}function Ne(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();e=h;f=h+8|0;if(!a){c[(e&p)>>2]=77720;c[(e&p)+4>>2]=10788;bd(21,13648,e);b=21}else{g=c[(a&p)+24>>2]|0;if(c[(a&p)+20>>2]|0){b=Bh(a,b,d,f)|0;if(!b)b=0;else{d=c[(f&p)>>2]|0;c[(e&p)>>2]=d;ug(g,b,(d|0)!=0?10344:0,e);mg(g,d)}}else b=4;b=Og(g,b)|0}i=h;return b|0}function Oe(a,d,e){a=a|0;d=d|0;e=e|0;c[(a&p)+284>>2]=d;c[(a&p)+288>>2]=e;a=c[(a&p)+4>>2]|0;if(a)do{e=a+88|0;b[(e&o)>>1]=b[(e&o)>>1]|8;a=c[(a&p)+52>>2]|0}while((a|0)!=0);return 0}function Pe(a,b){a=a|0;b=b|0;return (Gh(a,b,10352,0)|0)==0|0}function Qe(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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;E=i;i=i+16|0;if((i|0)>=(j|0))fa();m=E;A=E+12|0;B=E+8|0;c[(B&p)>>2]=0;do if(Hh(e)|0){l=(f|0)==0?10360:f;C=e+52|0;c[(C&p)>>2]=0;D=e+236|0;m=c[(D&p)>>2]|0;do if(m){f=m+8|0;if(!(b[(f&o)>>1]&9312)){b[(f&o)>>1]=1;break}else{vg(m);break}}while(0);x=(g|0)==0;y=e+24|0;m=0;a:while(1){do{if(m){q=39;break a}if(!(a[(l&n)>>0]|0)){m=0;q=39;break a}c[(B&p)>>2]=0;m=ih(e,l,-1,1,0,B,A)|0}while((m|0)!=0);l=c[(B&p)>>2]|0;if(!l){l=c[(A&p)>>2]|0;m=0;continue}w=b[(l&o)+84>>1]|0;u=w&65535;v=u<<3|1;w=w<<16>>16==0;f=0;q=0;r=0;b:do{m=Sd(l)|0;do if(!x){s=(m|0)==100;if(!s){if((m|0)!=101|(r|0)!=0)break b;if(!(c[(y&p)>>2]&256)){r=0;break}}if(!r){f=mh(e,v,0)|0;if(!f){f=0;q=40;break a}fw(f|0,0,v|0)|0;if(w)t=1;else{r=0;do{c[(f+(r<<2)&p)>>2]=je(l,r)|0;r=r+1|0}while((r|0)<(u|0));t=1}}else t=r;c:do if(s){q=f+(u<<2)|0;if(!w){r=0;while(1){s=fe(l,r)|0;c[(f+(r+u<<2)&p)>>2]=s;if((s|0)==0?(z=c[(B&p)>>2]|0,(ie(z,r)|0)!=5):0){m=z;q=27;break a}r=r+1|0;if((r|0)>=(u|0))break c;l=c[(B&p)>>2]|0}}}while(0);if(!(pc[g&31](h,u,q,f)|0))r=t;else{l=f;q=31;break a}}while(0);l=c[(B&p)>>2]|0}while((m|0)==100);m=Ng(l)|0;c[(B&p)>>2]=0;l=c[(A&p)>>2]|0;while(1)if(!(a[((d[(l&n)>>0]|0)&n)+10368>>0]&1))break;else l=l+1|0;mg(e,f)}do if((q|0)==27){a[(e&n)+65>>0]=1;l=m;m=100;q=40}else if((q|0)==31){Ng(c[(B&p)>>2]|0)|0;c[(B&p)>>2]=0;c[(C&p)>>2]=4;m=c[(D&p)>>2]|0;if(m){f=m+8|0;if(!(b[(f&o)>>1]&9312)){b[(f&o)>>1]=1;f=l;m=4;break}else{vg(m);f=l;m=4;break}}else{f=l;m=4}}else if((q|0)==39){l=c[(B&p)>>2]|0;f=0;q=40}while(0);if((q|0)==40)if(l)Ng(l)|0;mg(e,f);l=Og(e,m)|0;f=(k|0)!=0;if(!((l|0)!=0&f)){if(!f)break;c[(k&p)>>2]=0;break}f=Se(e)|0;if(!f)f=1;else{m=f;while(1)if(!(a[(m&n)>>0]|0))break;else m=m+1|0;f=(m-f&1073741823)+1|0}m=qg(f,((f|0)<0)<<31>>31)|0;c[(k&p)>>2]=m;if(m){kw(m|0,Se(e)|0,f|0)|0;break}c[(C&p)>>2]=7;l=c[(D&p)>>2]|0;if(l){f=l+8|0;if(!(b[(f&o)>>1]&9312)){b[(f&o)>>1]=1;l=7;break}else{vg(l);l=7;break}}else l=7}else{c[(m&p)>>2]=101334;c[(m&p)+4>>2]=10788;bd(21,13648,m);l=21}while(0);i=E;return l|0}function Re(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ih(a,b,c,1,0,d,e)|0}function Se(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))fa();d=e;do if(b){f=c[(b&p)+76>>2]|0;if(!((f|0)==1266094736|(f|0)==-1607883113|(f|0)==-264537850)){c[(d&p)>>2]=15248;bd(21,15256,d);c[(d&p)>>2]=129635;c[(d&p)+4>>2]=10788;bd(21,13648,d);d=16120;break}if(!(a[(b&n)+65>>0]|0)){d=Sg(c[(b&p)+236>>2]|0,1)|0;if(!d){d=c[(b&p)+52>>2]|0;if((d|0)!=516){d=d&255;if(d>>>0>26|(d|0)==2)d=16328;else d=c[(d<<2&p)+15488>>2]|0}else d=16344}}else d=15776}else d=15776;while(0);i=e;return d|0}function Te(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;if((i|0)>=(j|0))fa();u=w;v=w+8|0;t=c[(b&p)>>2]|0;c[(v&p)>>2]=0;m=(d|0)==0;if(m)g=0;else{l=d;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;g=l-d&1073741823}r=g+300|0;q=(f|0)!=0;if(q)c[(f&p)>>2]=0;do if(!(c[(b&p)+24>>2]&4194304))if(q){c[(f&p)>>2]=_c(25216,u)|0;g=1}else g=1;else{o=(e|0)!=0?e:41192;k=t+40|0;l=rc[c[(k&p)>>2]&127](t,d)|0;if(!l){c[(u&p)>>2]=d;c[(u&p)+4>>2]=41184;h=_c(27824,u)|0;if(!h){g=7;break}l=rc[c[(k&p)>>2]&127](t,h)|0;Wc(h);if(!l){if(!q){g=1;break}l=Tc(r)|0;c[(v&p)>>2]=l;c[(f&p)>>2]=l;if(!l){g=1;break}c[(u&p)>>2]=d;ad(r,l,41216,u)|0;mc[c[(t&p)+44>>2]&63](t,g+299|0,l);g=1;break}else s=l}else s=l;g=t+48|0;l=ac[c[(g&p)>>2]&63](t,s,o)|0;if((l|0)==0&(e|0)==0){if(m)l=0;else{l=d;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;l=l-d&1073741823}e=Tc(l+30|0)|0;if(!e){jc[c[(t&p)+52>>2]&15](t,s);g=7;break}o=e;m=o;a[(m&n)>>0]=115;a[(m&n)+1>>0]=113;a[(m&n)+2>>0]=108;a[(m&n)+3>>0]=105;o=o+4|0;a[(o&n)>>0]=116;a[(o&n)+1>>0]=101;a[(o&n)+2>>0]=51;a[(o&n)+3>>0]=95;while(1){k=l+-1|0;if((l|0)<=0)break;if((a[(d+k&n)>>0]|0)==47)break;else l=k}h=(Fc(d+l|0,41256,3)|0)==0;k=8;h=h?l+3|0:l;while(1){l=a[(d+h&n)>>0]|0;if(l<<24>>24==0|l<<24>>24==46){l=k;break}if(!(a[(l&255&n)+10368>>0]&2))l=k;else{a[(e+k&n)>>0]=a[(l<<24>>24&n)+9328>>0]|0;l=k+1|0}k=l;h=h+1|0}l=e+l|0;a[(l&n)>>0]=a[41264]|0;a[(l&n)+1>>0]=a[41265]|0;a[(l&n)+2>>0]=a[41266]|0;a[(l&n)+3>>0]=a[41267]|0;a[(l&n)+4>>0]=a[41268]|0;a[(l&n)+5>>0]=a[41269]|0;l=ac[c[(g&p)>>2]&63](t,s,e)|0;g=e;h=e}else{g=0;h=o}if(!l){if(q){if(!h)l=0;else{l=h;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;l=l-h&1073741823}l=l+r|0;k=Tc(l)|0;c[(v&p)>>2]=k;c[(f&p)>>2]=k;if(k){c[(u&p)>>2]=h;c[(u&p)+4>>2]=d;ad(l,k,41272,u)|0;mc[c[(t&p)+44>>2]&63](t,l+-1|0,k)}}jc[c[(t&p)+52>>2]&15](t,s);Wc(g);g=1;break}Wc(g);if(ac[l&63](b,v,13776)|0){if(q){c[(u&p)>>2]=c[(v&p)>>2];c[(f&p)>>2]=_c(41320,u)|0}Wc(c[(v&p)>>2]|0);jc[c[(t&p)+52>>2]&15](t,s);g=1;break}k=b+168|0;g=(c[(k&p)>>2]<<2)+4|0;l=mh(b,g,0)|0;if(!l)g=7;else{fw(l|0,0,g|0)|0;g=c[(k&p)>>2]|0;h=b+172|0;if((g|0)>0)kw(l|0,c[(h&p)>>2]|0,g<<2|0)|0;mg(b,c[(h&p)>>2]|0);c[(h&p)>>2]=l;g=c[(k&p)>>2]|0;c[(k&p)>>2]=g+1;c[(l+(g<<2)&p)>>2]=s;g=0}}while(0);s=Og(b,g)|0;i=w;return s|0}function Ue(a){a=a|0;var b=0,d=0,e=0,f=0;b=Lc()|0;if(!b){f=c[2656]|0;a:do if((f|0)>0){d=c[2658]|0;e=0;while(1){b=e+1|0;if((c[(d+(e<<2)&p)>>2]|0)==(a|0)){b=e;break a}if((b|0)<(f|0))e=b;else break}}else b=0;while(0);if((b|0)==(f|0)){b=Xc(c[2658]|0,(f<<2)+4|0)|0;if(!b)b=7;else{c[2658]=b;d=c[2656]|0;c[(b+(d<<2)&p)>>2]=a;c[2656]=d+1;b=0}}else b=0}return b|0}function Ve(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=c[2656]|0;f=c[2658]|0;d=e;while(1){if((d|0)<=0){b=0;break}d=d+-1|0;b=f+(d<<2)|0;if((c[(b&p)>>2]|0)==(a|0)){g=4;break}}if((g|0)==4){d=e+-1|0;c[2656]=d;c[(b&p)>>2]=c[(f+(d<<2)&p)>>2];b=1}return b|0}function We(){if(!(Lc()|0)){Wc(c[2658]|0);c[2658]=0;c[2656]=0}return}function Xe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ih(a,b,c,0,0,d,e)|0}function Ye(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Ih(a,b,c,0,d,e)|0}function Ze(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Ih(a,b,c,1,d,e)|0}function _e(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+32|0;if((i|0)>=(j|0))fa();n=w;r=w+4|0;c[(d&p)>>2]=0;s=(f|0)!=0;if(s)c[(f&p)>>2]=0;t=(e|0)!=0;if(t)c[(e&p)>>2]=0;l=(g|0)!=0;if(l)c[(g&p)>>2]=0;m=r+4|0;c[(m&p)>>2]=0;u=r+12|0;c[(u&p)>>2]=0;v=r+16|0;c[(v&p)>>2]=0;k=r+20|0;c[(k&p)>>2]=1;o=r+8|0;c[(o&p)>>2]=20;q=r+24|0;c[(q&p)>>2]=0;h=Tc(80)|0;c[(r&p)>>2]=h;a:do if(h){c[(h&p)>>2]=0;b=Qe(a,b,20,r,g)|0;c[(c[(r&p)>>2]&p)>>2]=c[(k&p)>>2];if((b&255|0)==4){$e((c[(r&p)>>2]|0)+4|0);b=c[(m&p)>>2]|0;if(b){if(l){Wc(c[(g&p)>>2]|0);c[(n&p)>>2]=c[(m&p)>>2];c[(g&p)>>2]=_c(10344,n)|0;b=c[(m&p)>>2]|0}Wc(b)}b=c[(q&p)>>2]|0;c[(a&p)+52>>2]=b;break}Wc(c[(m&p)>>2]|0);if(b){$e((c[(r&p)>>2]|0)+4|0);break}h=c[(k&p)>>2]|0;b=c[(r&p)>>2]|0;do if((c[(o&p)>>2]|0)>>>0>h>>>0){b=Xc(b,h<<2)|0;if(!b){$e((c[(r&p)>>2]|0)+4|0);c[(a&p)+52>>2]=7;b=7;break a}else{c[(r&p)>>2]=b;break}}while(0);c[(d&p)>>2]=b+4;if(s)c[(f&p)>>2]=c[(v&p)>>2];if(t){c[(e&p)>>2]=c[(u&p)>>2];b=0}else b=0}else{c[(a&p)+52>>2]=7;b=7}while(0);i=w;return b|0}function $e(a){a=a|0;var b=0,d=0,e=0,f=0;if(a){b=a+-4|0;e=c[(b&p)>>2]|0;d=e;if((e|0)>1){f=1;do{e=c[(a+(f+-1<<2)&p)>>2]|0;if(e)Wc(e);f=f+1|0}while((f|0)<(d|0))}Wc(b)}return}function af(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Kh(a,b,c,d,0)|0}function bf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Kh(a,b,c,d,e)|0}function cf(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();r=s;g=s+8|0;c[(g&p)>>2]=0;h=d+324|0;f=c[(h&p)>>2]|0;if((f|0)!=0?(m=c[(f&p)+4>>2]|0,(m|0)!=0):0){q=mh(d,536,0)|0;if(!q)e=7;else{fw(q|0,0,536)|0;k=q+451|0;a[(k&n)>>0]=1;c[(q&p)>>2]=d;c[(q&p)+424>>2]=1;if(((((Lh(q,e,g)|0)==0?(l=c[(q&p)+484>>2]|0,(l|0)!=0):0)?(a[(d&n)+65>>0]|0)==0:0)?(c[(l&p)+12>>2]|0)==0:0)?(a[(l&n)+44>>0]&16)==0:0){f=m+4|0;if(!(c[(f&p)>>2]|0)){r=l+4|0;c[(f&p)>>2]=c[(r&p)>>2];l=l+38|0;b[(m&o)+38>>1]=b[(l&o)>>1]|0;b[(l&o)>>1]=0;c[(r&p)>>2]=0}c[((c[(h&p)>>2]|0)&p)+4>>2]=0;e=0}else{e=c[(g&p)>>2]|0;c[(r&p)>>2]=e;ug(d,1,(e|0)!=0?10344:0,r);mg(d,e);e=1}a[(k&n)>>0]=0;f=c[(q&p)+8>>2]|0;if(f)Ng(f)|0;kg(d,c[(q&p)+484>>2]|0);Ch(q);mg(d,q)}e=Og(d,e)|0}else{c[(d&p)+52>>2]=21;f=c[(d&p)+236>>2]|0;do if(f){e=f+8|0;if(!(b[(e&o)>>1]&9312)){b[(e&o)>>1]=1;break}else{vg(f);break}}while(0);c[(r&p)>>2]=114865;c[(r&p)+4>>2]=10788;bd(21,13648,r);e=21}i=s;return e|0}function df(a){a=a|0;return d[((d[(a&n)+69>>0]|0)+-1&n)+10640>>0]|0|0}function ef(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;l=i;i=i+32|0;if((i|0)>=(j|0))fa();h=l;g=l+8|0;c[(g&p)>>2]=f;do if((e|0)==1){e=c[(d&p)+324>>2]|0;if(!e){c[(h&p)>>2]=115248;c[(h&p)+4>>2]=10788;bd(21,13648,h);k=6;break}else{d=c[(g&p)>>2]|0;f=c[(d&p)>>2]|0;c[(g&p)>>2]=d+4;a[((c[(e&p)>>2]|0)&n)+16>>0]=f;e=0;break}}else{c[(h&p)>>2]=115256;c[(h&p)+4>>2]=10788;bd(21,13648,h);k=6}while(0);do if((k|0)==6){c[(d&p)+52>>2]=21;e=c[(d&p)+236>>2]|0;if(e){f=e+8|0;if(!(b[(f&o)>>1]&9312)){b[(f&o)>>1]=1;e=21;break}else{vg(e);e=21;break}}else e=21}while(0);i=l;return e|0}function ff(b){b=b|0;var c=0,e=0,f=0,g=0,h=0;c=a[(b&n)>>0]|0;a:do if(c<<24>>24){g=c;c=0;b:while(1){f=g<<24>>24;switch(f|0){case 45:{if((a[(b&n)+1>>0]|0)==45){e=g;while(1){f=e<<24>>24==0;g=b+1|0;if(!(e<<24>>24!=10&(f^1)))break;b=g;e=a[(g&n)>>0]|0}if(f){h=13;break b}else e=1}else e=2;break}case 59:{e=0;break}case 91:{do{b=b+1|0;f=a[(b&n)>>0]|0;e=f<<24>>24==0}while(f<<24>>24!=93&(e^1));if(e){c=0;break a}else e=2;break}case 39:case 34:case 96:{do{b=b+1|0;f=a[(b&n)>>0]|0;e=f<<24>>24==0}while(f<<24>>24!=g<<24>>24&(e^1));if(e){c=0;break a}else e=2;break}case 47:{if((a[(b&n)+1>>0]|0)==42){b=b+2|0;while(1){e=a[(b&n)>>0]|0;if(e<<24>>24==42){b=b+1|0;if((a[(b&n)>>0]|0)==47){e=1;break}else continue}else if(!(e<<24>>24)){c=0;break a}else{b=b+1|0;continue}}}else e=2;break}case 12:case 10:case 9:case 13:case 32:{e=1;break}default:if(!(a[(g&255&n)+10368>>0]&70))e=2;else{e=1;while(1)if(!(a[((d[(b+e&n)>>0]|0)&n)+10368>>0]&70)){g=e;break}else e=e+1|0;c:do switch(f|0){case 67:case 99:{if((g|0)==6?(Fc(b,10712,6)|0)==0:0){e=4;break c}e=2;break}case 69:case 101:{if((g|0)==3){if(!(Fc(b,10752,3)|0)){e=7;break c}}else if((g|0)==7?(Fc(b,10760,7)|0)==0:0){e=3;break c}e=2;break}case 84:case 116:{if((g|0)==7){if(!(Fc(b,10720,7)|0)){e=6;break c}}else if((g|0)==4){if(!(Fc(b,10728,4)|0)){e=5;break c}}else if((g|0)==9?(Fc(b,10736,9)|0)==0:0){e=5;break c}e=2;break}default:e=2}while(0);b=b+(g+-1)|0}}c=a[((e&255)+((c&255)<<3)&n)+10648>>0]|0;b=b+1|0;g=a[(b&n)>>0]|0;if(!(g<<24>>24)){h=35;break}}if((h|0)==13){c=c<<24>>24==1&1;break}else if((h|0)==35){c=c<<24>>24==1;h=36;break}}else{c=0;h=36}while(0);if((h|0)==36)c=c&1;return c|0}function gf(d){d=d|0;var e=0,f=0,g=0;e=Lc()|0;if(!e){f=qg(40,0)|0;if(f){e=f+0|0;g=e+40|0;do{a[(e&n)>>0]=0;e=e+1|0}while((e|0)<(g|0));b[(f&o)+8>>1]=1;c[(f&p)+32>>2]=0;Xg(f,d,-1,2,0)|0}e=Sg(f,1)|0;if(!e)e=7;else e=(ff(e)|0)&255;Mh(f)}return e|0}function hf(){return 8632}function jf(){return 10768}function kf(){return 3008009}function lf(){return 0}function mf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+32|0;if((i|0)>=(j|0))fa();d=f;e=f+8|0;if(!(c[2243]|0)){c[(e&p)>>2]=b;do switch(a|0){case 22:{c[(e&p)>>2]=(c[(e&p)>>2]|0)+8;c[(e&p)>>2]=(c[(e&p)>>2]|0)+8;c[2230]=0;c[2231]=0;c[2232]=0;c[2233]=0;d=0;break}case 25:{a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2242]=d;d=0;break}case 19:{if(!(c[2214]|0)){c[(d&p)>>2]=16440;mf(18,d)|0}a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;d=d+0|0;a=8848|0;e=d+52|0;do{c[(d&p)>>2]=c[(a&p)>>2];d=d+4|0;a=a+4|0}while((d|0)<(e|0));d=0;break}case 18:{d=c[(e&p)>>2]|0;a=c[(d&p)>>2]|0;c[(e&p)>>2]=d+4;d=8848|0;a=a+0|0;e=d+52|0;do{c[(d&p)>>2]=c[(a&p)>>2];d=d+4|0;a=a+4|0}while((d|0)<(e|0));d=0;break}case 20:{a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2190]=d;d=0;break}case 13:{d=c[(e&p)>>2]|0;a=c[(d&p)>>2]|0;c[(e&p)>>2]=d+4;c[2193]=a;a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2194]=d;d=0;break}case 17:{a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2189]=d;d=0;break}case 15:{d=1;break}case 6:{a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2234]=d;d=c[(e&p)>>2]|0;a=c[(d&p)>>2]|0;c[(e&p)>>2]=d+4;c[2235]=a;a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2236]=d;d=0;break}case 24:{a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[(d&p)>>2]=152;d=0;break}case 9:{a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2186]=d;d=0;break}case 7:{a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2237]=d;d=c[(e&p)>>2]|0;a=c[(d&p)>>2]|0;c[(e&p)>>2]=d+4;c[2238]=a;a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2239]=d;d=0;break}case 4:{a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2195]=c[(d&p)>>2];c[2196]=c[(d&p)+4>>2];c[2197]=c[(d&p)+8>>2];c[2198]=c[(d&p)+12>>2];c[2199]=c[(d&p)+16>>2];c[2200]=c[(d&p)+20>>2];c[2201]=c[(d&p)+24>>2];c[2202]=c[(d&p)+28>>2];d=0;break}case 16:{d=c[(e&p)>>2]|0;a=c[(d&p)>>2]|0;c[(e&p)>>2]=d+4;c[2250]=a;a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[2251]=d;d=0;break}case 5:{if(!(c[2195]|0)){c[(d&p)>>2]=16496;mf(4,d)|0}a=c[(e&p)>>2]|0;d=c[(a&p)>>2]|0;c[(e&p)>>2]=a+4;c[(d&p)>>2]=c[2195];c[(d&p)+4>>2]=c[2196];c[(d&p)+8>>2]=c[2197];c[(d&p)+12>>2]=c[2198];c[(d&p)+16>>2]=c[2199];c[(d&p)+20>>2]=c[2200];c[(d&p)+24>>2]=c[2201];c[(d&p)+28>>2]=c[2202];d=0;break}case 14:{d=0;break}default:d=1}while(0)}else{c[(d&p)>>2]=127883;c[(d&p)+4>>2]=10788;bd(21,13648,d);d=21}i=f;return d|0}function nf(a){a=a|0;return c[(a&p)+12>>2]|0}function of(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=a+20|0;b=c[(h&p)>>2]|0;f=(b|0)>0;if(f){e=c[(a&p)+16>>2]|0;g=0;do{d=c[(e+(g<<4)&p)+4>>2]|0;if(d)c[((c[(d&p)+4>>2]|0)&p)+4>>2]=c[(d&p)>>2];g=g+1|0}while((g|0)!=(b|0));if(f){f=a+16|0;e=0;do{d=c[((c[(f&p)>>2]|0)+(e<<4)&p)+4>>2]|0;if(d){cc[c[8896>>2]&31](c[((c[((c[(c[(d&p)+4>>2]&p)>>2]|0)&p)+204>>2]|0)&p)+40>>2]|0);b=c[(h&p)>>2]|0}e=e+1|0}while((e|0)<(b|0))}}return 0}function pf(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();h=l;c[(h&p)>>2]=e;a:do if((d|0)!=1001){e=0;while(1){if((c[(e<<3&p)+10936>>2]|0)==(d|0))break;e=e+1|0;if(e>>>0>=2){f=1;break a}}g=c[(h&p)>>2]|0;d=c[(g&p)>>2]|0;c[(h&p)>>2]=g+4;g=c[(h&p)>>2]|0;k=c[(g&p)>>2]|0;c[(h&p)>>2]=g+4;h=a+24|0;g=c[(h&p)>>2]|0;if((d|0)<=0)if(!d){d=g&~c[(e<<3&p)+10940>>2];c[(h&p)>>2]=d}else d=g;else{d=c[(e<<3&p)+10940>>2]|g;c[(h&p)>>2]=d}if((g|0)!=(d|0)?(f=c[(a&p)+4>>2]|0,(f|0)!=0):0)do{d=f+88|0;b[(d&o)>>1]=b[(d&o)>>1]|8;f=c[(f&p)+52>>2]|0}while((f|0)!=0);if(!k)f=0;else{c[(k&p)>>2]=(c[(e<<3&p)+10940>>2]&c[(h&p)>>2]|0)!=0&1;f=0}}else{g=c[(h&p)>>2]|0;d=c[(g&p)>>2]|0;c[(h&p)>>2]=g+4;g=c[(h&p)>>2]|0;e=c[(g&p)>>2]|0;c[(h&p)>>2]=g+4;g=c[(h&p)>>2]|0;f=c[(g&p)>>2]|0;c[(h&p)>>2]=g+4;f=Nh(a,d,e,f)|0}while(0);i=l;return f|0}function qf(a){a=a|0;a=a+32|0;G=c[(a&p)+4>>2]|0;return c[(a&p)>>2]|0}function rf(a){a=a|0;return c[(a&p)+80>>2]|0}function sf(a){a=a|0;return c[(a&p)+84>>2]|0}function tf(a){a=a|0;return Oh(a,0)|0}function uf(a){a=a|0;return Oh(a,1)|0}function vf(a,b,d){a=a|0;b=b|0;d=d|0;c[(a&p)+444>>2]=b;c[(a&p)+448>>2]=d;c[(a&p)+452>>2]=0;c[(a&p)+492>>2]=0;return 0}function wf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)>0;c[(a&p)+292>>2]=f?d:0;c[(a&p)+300>>2]=f?b:0;c[(a&p)+296>>2]=f?e:0;return}function xf(a,b){a=a|0;b=b|0;var d=0;d=(b|0)>0;c[(a&p)+444>>2]=d?74:0;c[(a&p)+448>>2]=d?a:0;c[(a&p)+452>>2]=0;c[(a&p)+492>>2]=d?b:0;return 0}function yf(a){a=a|0;c[(a&p)+240>>2]=1;return}function zf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Og(a,Qh(a,b,c,d,e,f,g,h,0)|0)|0}function Af(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,o=0;do if(k){l=mh(b,12,0)|0;if(!l){cc[k&31](g);f=1;break}m=l;o=m;a[(o&n)>>0]=0;a[(o&n)+1>>0]=0;a[(o&n)+2>>0]=0;a[(o&n)+3>>0]=0;m=m+4|0;a[(m&n)>>0]=0;a[(m&n)+1>>0]=0;a[(m&n)+2>>0]=0;a[(m&n)+3>>0]=0;c[(l&p)+4>>2]=k;c[(l&p)+8>>2]=g;f=Qh(b,d,e,f,g,h,i,j,l)|0;if(!(c[(l&p)>>2]|0)){cc[k&31](g);mg(b,l)}}else f=Qh(b,d,e,f,g,h,i,j,0)|0;while(0);return Og(b,f)|0}function Bf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;b=Rh(a,b,-1)|0;d=Qh(a,b,c,d,e,f,g,h,0)|0;mg(a,b);return Og(a,d)|0}function Cf(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(!c)e=0;else{e=c;while(1)if(!(a[(e&n)>>0]|0))break;else e=e+1|0;e=e-c&1073741823}if(!(Sh(b,c,e,d,1,0)|0))e=Qh(b,c,d,1,0,57,0,0,0)|0;else e=0;return Og(b,e)|0}function Df(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+180|0;e=c[(f&p)>>2]|0;c[(a&p)+176>>2]=b;c[(f&p)>>2]=d;return e|0}function Ef(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+188|0;e=c[(f&p)>>2]|0;c[(a&p)+184>>2]=b;c[(f&p)>>2]=d;return e|0}function Ff(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+192|0;e=c[(f&p)>>2]|0;c[(a&p)+196>>2]=b;c[(f&p)>>2]=d;return e|0}function Gf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+208|0;e=c[(f&p)>>2]|0;c[(a&p)+212>>2]=b;c[(f&p)>>2]=d;return e|0}function Hf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+200|0;e=c[(f&p)>>2]|0;c[(a&p)+204>>2]=b;c[(f&p)>>2]=d;return e|0}function If(a,b){a=a|0;b=b|0;var d=0;if((b|0)>0)d=21;else{b=0;d=0}c[(a&p)+216>>2]=d;c[(a&p)+220>>2]=b;return 0}function Jf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+220|0;e=c[(f&p)>>2]|0;c[(a&p)+216>>2]=b;c[(f&p)>>2]=d;return e|0}function Kf(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();k=q;if(g)c[(g&p)>>2]=-1;if(h)c[(h&p)>>2]=-1;if(f>>>0>3)e=21;else{if((e|0)!=0?(a[(e&n)>>0]|0)!=0:0){l=Vh(d,e)|0;if((l|0)<0){c[(k&p)>>2]=e;ug(d,1,10952,k);e=1}else m=10}else{l=10;m=10}do if((m|0)==10){c[(d&p)+452>>2]=0;e=Wh(d,l,f,g,h)|0;c[(d&p)+52>>2]=e;k=c[(d&p)+236>>2]|0;if(k){l=k+8|0;if(!(b[(l&o)>>1]&9312)){b[(l&o)>>1]=1;break}else{vg(k);break}}}while(0);e=Og(d,e)|0}i=q;return e|0}function Lf(a,b){a=a|0;b=b|0;return Kf(a,b,0,0,0)|0}function Mf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();g=k;do if(b){d=c[(b&p)+76>>2]|0;if(!((d|0)==1266094736|(d|0)==-1607883113|(d|0)==-264537850)){c[(g&p)>>2]=15248;bd(21,15256,g);d=11008;break}h=b+65|0;if(!(a[(h&n)>>0]|0)){f=b+236|0;d=Sg(c[(f&p)>>2]|0,2)|0;if(!d){e=c[(b&p)+52>>2]|0;if((e|0)!=516){d=e&255;if(d>>>0>26|(d|0)==2)d=16328;else d=c[(d<<2&p)+15488>>2]|0}else d=16344;ug(b,e,d,g);d=Sg(c[(f&p)>>2]|0,2)|0}a[(h&n)>>0]=0}else d=10976}else d=10976;while(0);i=k;return d|0}function Nf(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))fa();d=e;do if(b){f=c[(b&p)+76>>2]|0;if(!((f|0)==1266094736|(f|0)==-1607883113|(f|0)==-264537850)){c[(d&p)>>2]=15248;bd(21,15256,d);c[(d&p)>>2]=129704;c[(d&p)+4>>2]=10788;bd(21,13648,d);b=21;break}if(!(a[(b&n)+65>>0]|0))b=c[(b&p)+56>>2]&c[(b&p)+52>>2];else b=7}else b=7;while(0);i=e;return b|0}function Of(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))fa();d=e;do if(b){f=c[(b&p)+76>>2]|0;if(!((f|0)==1266094736|(f|0)==-1607883113|(f|0)==-264537850)){c[(d&p)>>2]=15248;bd(21,15256,d);c[(d&p)>>2]=129713;c[(d&p)+4>>2]=10788;bd(21,13648,d);b=21;break}if(!(a[(b&n)+65>>0]|0))b=c[(b&p)+52>>2]|0;else b=7}else b=7;while(0);i=e;return b|0}function Pf(a){a=a|0;if((a|0)!=516){a=a&255;if(a>>>0>26|(a|0)==2)a=16328;else a=c[(a<<2&p)+15488>>2]|0}else a=16344;return a|0}function Qf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b>>>0<=11){e=a+(b<<2)+88|0;a=c[(e&p)>>2]|0;if((d|0)>-1){b=c[(b<<2&p)+11088>>2]|0;c[(e&p)>>2]=(b|0)<(d|0)?b:d}}else a=-1;return a|0}function Rf(a,b){a=a|0;b=b|0;return Xh(a,b,6,0)|0}function Sf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Xh(a,b,c,d)|0}function Tf(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;c[(e&p)>>2]=0;f=Lc()|0;if(!f){h=qg(40,0)|0;if(h){d=(d|0)==0?11136:d;f=h+0|0;g=f+40|0;do{a[(f&n)>>0]=0;f=f+1|0}while((f|0)<(g|0));b[(h&o)+8>>1]=1;c[(h&p)+32>>2]=0;Xg(h,d,-1,2,0)|0}d=Sg(h,1)|0;if(d){f=Xh(d,e,6,0)|0;if(!f){f=c[(e&p)>>2]|0;d=c[((c[(f&p)+16>>2]|0)&p)+12>>2]|0;if(!(b[(d&o)+78>>1]&1)){a[(f&n)+62>>0]=2;a[(d&n)+77>>0]=2;f=0}else f=0}}else f=7;Mh(h);f=f&255}return f|0}function Uf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Og(a,Yh(a,b,c&255,d,e,0)|0)|0}function Vf(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 Og(a,Yh(a,b,c&255,d,e,f)|0)|0}function Wf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Rh(a,b,-1)|0;if(!b)b=0;else{c=Yh(a,b,c&255,d,e,0)|0;mg(a,b);b=c}return Og(a,b)|0}function Xf(a,b,d){a=a|0;b=b|0;d=d|0;c[(a&p)+224>>2]=d;c[(a&p)+228>>2]=0;c[(a&p)+232>>2]=b;return 0}function Yf(a,b,d){a=a|0;b=b|0;d=d|0;c[(a&p)+224>>2]=0;c[(a&p)+228>>2]=d;c[(a&p)+232>>2]=b;return 0}function Zf(a){a=a|0;return d[(a&n)+63>>0]|0|0}function _f(){return}function $f(d,e,f,g,h,k,l,m,q){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;if((i|0)>=(j|0))fa();A=C;B=C+8|0;c[(B&p)>>2]=0;s=c[(d&p)+20>>2]|0;if((s|0)>0){r=c[(d&p)+16>>2]|0;u=0;do{t=c[(r+(u<<4)&p)+4>>2]|0;if(t)c[((c[(t&p)+4>>2]|0)&p)+4>>2]=c[(t&p)>>2];u=u+1|0}while((u|0)!=(s|0))}r=Zh(d,B)|0;z=(r|0)!=0;a:do if((!z?(x=_h(d,f,e)|0,(x|0)!=0):0)?(c[(x&p)+12>>2]|0)==0:0){do if(g){w=b[(x&o)+38>>1]|0;b:do if(w<<16>>16>0){e=c[(x&p)+4>>2]|0;s=w<<16>>16;v=0;while(1){t=e+(v*24|0)|0;u=v+1|0;if(!(dd(c[(t&p)>>2]|0,g)|0)){u=v;break b}if((u|0)<(s|0))v=u;else break}}else{u=0;t=0}while(0);if((u|0)==(w<<16>>16|0)){if(a[(x&n)+44>>0]&32){e=0;w=0;x=0;t=0;v=0;u=0;break a}if(!($h(g)|0)){e=0;w=0;x=0;t=0;v=0;u=0;break a}y=b[(x&o)+36>>1]|0;s=y<<16>>16;if(y<<16>>16<=-1){e=0;v=0;s=1;y=0;u=11144;break}u=s;t=(c[(x&p)+4>>2]|0)+(s*24|0)|0}if(t){if((b[(x&o)+36>>1]|0)==(u|0))s=(a[(x&n)+44>>0]&8)!=0;else s=0;e=s&1;v=(a[(t&n)+20>>0]|0)!=0&1;s=a[(t&n)+23>>0]&1;y=c[(t&p)+16>>2]|0;u=c[(t&p)+12>>2]|0}else{e=0;v=0;s=1;y=0;u=11144}}else{e=0;v=0;s=1;y=0;u=11144}while(0);w=v;t=s;v=(y|0)==0?11152:y}else{e=0;w=0;x=0;t=0;v=0;u=0}while(0);if(h)c[(h&p)>>2]=u;if(k)c[(k&p)>>2]=v;if(l)c[(l&p)>>2]=w;if(m)c[(m&p)>>2]=t;if(q)c[(q&p)>>2]=e;s=c[(B&p)>>2]|0;if(!(z|(x|0)!=0)){mg(d,s);c[(A&p)>>2]=f;c[(A&p)+4>>2]=g;s=uh(d,11160,A)|0;c[(B&p)>>2]=s;r=1}c[(A&p)>>2]=s;ug(d,r,(s|0)!=0?10344:0,A);mg(d,c[(B&p)>>2]|0);z=Og(d,r)|0;i=C;return z|0}function ag(a){a=a|0;var b=0;if((Lc()|0)==0?(b=c[2254]|0,(b|0)!=0):0)a=(rc[c[(b&p)+60>>2]&127](b,a*1e3|0)|0)/1e3|0;else a=0;return a|0}function bg(a,b){a=a|0;b=b|0;c[(a&p)+56>>2]=(b|0)!=0?-1:255;return 0}function cg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=ai(a,b)|0;do if(b){a=c[(b&p)+4>>2]|0;c[(a&p)+4>>2]=c[(b&p)>>2];a=c[((c[(a&p)>>2]|0)&p)+60>>2]|0;if((d|0)==7){c[(e&p)>>2]=a;b=0;break}b=c[(a&p)>>2]|0;if(!b)b=12;else b=ac[c[(b&p)+40>>2]&63](a,d,e)|0}else b=1;while(0);return b|0}function dg(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;t=i;i=i+32|0;if((i|0)>=(j|0))fa();s=t+24|0;h=t+8|0;g=t;c[(h&p)>>2]=f;do switch(e|0){case 11:{g=c[2514]|0;s=c[(h&p)>>2]|0;f=c[(s&p)>>2]|0;c[(h&p)>>2]=s+4;if(f)c[2514]=f;break}case 12:{c[(g&p)>>2]=0;g=c[(g&p)>>2]|0;break}case 13:{s=c[(h&p)>>2]|0;g=c[(s&p)>>2]|0;c[(h&p)>>2]=s+4;break}case 22:{g=10;break}case 5:{kw(12672,9064,259)|0;g=0;break}case 7:{if(!(Lc()|0)){a[9064]=0;g=0}else g=0;break}case 8:{r=c[(h&p)>>2]|0;q=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;r=c[(h&p)>>2]|0;k=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;r=qg(512,0)|0;g=(r|0)==0;if(!g){fw(r|0,0,512)|0;c[(r&p)>>2]=q}e=((q+7|0)/8|0)+1|0;m=qg(e,((e|0)<0)<<31>>31)|0;f=(m|0)==0;if(!f)fw(m|0,0,e|0)|0;l=Tc(512)|0;a:do if(!(g|f|(l|0)==0)){h=0;while(1){g=c[(k+(h<<2)&p)>>2]|0;if(!g)break;else if((g|0)==5|(g|0)==2|(g|0)==1){f=k+(h+2<<2)|0;u=c[(f&p)>>2]|0;e=u+-1|0;c[(s&p)>>2]=e;c[(f&p)>>2]=(c[(k+(h+3<<2)&p)>>2]|0)+u;f=4}else{cd(4,s);e=c[(s&p)>>2]|0;f=2}v=k+((h|1)<<2)|0;u=(c[(v&p)>>2]|0)+-1|0;c[(v&p)>>2]=u;h=((u|0)>0?0:f)+h|0;e=(e&2147483647|0)%(q|0)|0;c[(s&p)>>2]=e;e=e+1|0;f=1<<(e&7);if(!(g&1)){e=m+(e>>>3)|0;a[(e&n)>>0]=d[(e&n)>>0]&(f^255);ci(r,(c[(s&p)>>2]|0)+1|0,l);continue}e=m+(e>>>3)|0;a[(e&n)>>0]=d[(e&n)>>0]|f;if((g|0)==5)continue;if(bi(r,(c[(s&p)>>2]|0)+1|0)|0){g=-1;break a}}k=di(r,q+1|0)|0;e=di(r,0)|0;e=k-q+e+(c[(r&p)>>2]|0)|0;c[(s&p)>>2]=1;if((q|0)<1)g=e;else{f=1;while(1){k=(d[(m+(f>>3)&n)>>0]&1<<(f&7)|0)!=0&1;g=f;f=f+1|0;if((k|0)!=(di(r,g)|0))break a;c[(s&p)>>2]=f;if((g|0)>=(q|0)){g=e;break}}}}else g=-1;while(0);Wc(l);Wc(m);ei(r);break}case 6:{kw(9064,12672,259)|0;g=0;break}case 23:{g=(c[2243]|0)==0&1;break}case 25:{q=c[(h&p)>>2]|0;g=c[(q&p)>>2]|0;c[(h&p)>>2]=q+4;q=c[(h&p)>>2]|0;r=c[(q&p)>>2]|0;c[(h&p)>>2]=q+4;a[(g&n)+144>>0]=Vh(g,r)|0;r=c[(h&p)>>2]|0;q=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;q=q&255;a[(g&n)+147>>0]=q;r=g+145|0;a[(r&n)>>0]=q;q=c[(h&p)>>2]|0;s=c[(q&p)>>2]|0;c[(h&p)>>2]=q+4;c[(g&p)+140>>2]=s;if((a[(r&n)>>0]|0)==0&(s|0)>0){Eg(g);g=0}else g=0;break}case 14:{r=c[(h&p)>>2]|0;s=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;r=c[(h&p)>>2]|0;g=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;xg(c[((c[(s&p)+16>>2]|0)&p)+4>>2]|0,0,g,0)|0;g=0;break}case 15:{r=c[(h&p)>>2]|0;g=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;r=c[(h&p)>>2]|0;s=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;b[(g&o)+60>>1]=s;g=0;break}case 16:{s=c[(h&p)>>2]|0;e=c[(s&p)>>2]|0;c[(h&p)>>2]=s+4;if(!e)g=0;else{g=e;while(1)if(!(a[(g&n)>>0]|0))break;else g=g+1|0;g=g-e&1073741823}g=(fi(e,g)|0)!=27;g=g?124:0;break}case 24:{r=c[(h&p)>>2]|0;g=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;r=c[(h&p)>>2]|0;s=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;c[(g&p)+136>>2]=s;g=0;break}case 17:{s=c[(h&p)>>2]|0;f=c[(s&p)>>2]|0;c[(h&p)>>2]=s+4;s=c[(h&p)>>2]|0;g=c[(s&p)>>2]|0;c[(h&p)>>2]=s+4;s=c[(h&p)>>2]|0;e=c[(s&p)>>2]|0;c[(h&p)>>2]=s+4;if(f)c[(g&p)>>2]=gi(f)|0;hi(e);g=0;break}case 18:{s=c[(h&p)>>2]|0;g=c[(s&p)>>2]|0;c[(h&p)>>2]=s+4;c[2253]=g;g=0;break}case 20:{s=c[(h&p)>>2]|0;g=c[(s&p)>>2]|0;c[(h&p)>>2]=s+4;c[2192]=g;g=0;break}case 9:{s=c[(h&p)>>2]|0;g=c[(s&p)>>2]|0;c[(h&p)>>2]=s+4;c[2252]=g;if(!g)g=0;else g=lc[g&127](0)|0;break}case 10:{r=c[(h&p)>>2]|0;s=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;r=c[(h&p)>>2]|0;g=c[(r&p)>>2]|0;c[(h&p)>>2]=r+4;c[3164]=s;c[3166]=g;g=0;break}default:g=0}while(0);i=t;return g|0}function eg(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:do if(!((b|0)==0|(c|0)==0)){d=b;while(1)if(!(a[(d&n)>>0]|0))break;else d=d+1|0;e=(d-b&1073741823)+1|0;d=a[(b+e&n)>>0]|0;if(d<<24>>24){g=b+e|0;while(1){f=_v(g,c)|0;e=g;while(1){b=e+1|0;if(!(d<<24>>24))break;d=a[(b&n)>>0]|0;e=b}b=e-g&1073741823;d=g+(b+1)|0;if(!f)break a;else e=d;while(1)if(!(a[(e&n)>>0]|0))break;else e=e+1|0;g=g+(b+2+(e-d&1073741823))|0;d=a[(g&n)>>0]|0;if(!(d<<24>>24)){d=0;break}}}else d=0}else d=0;while(0);return d|0}function fg(a,b,c){a=a|0;b=b|0;c=c|0;a=eg(a,b)|0;b=(c|0)!=0;if(a)b=(ii(a,1,b&1)|0)<<24>>24!=0;return b&1|0}function gg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();f=g;a=eg(a,b)|0;if(!a){G=e;i=g;return d|0}else{b=(ji(a,f)|0)==0;a=f;G=b?c[(a&p)+4>>2]|0:e;i=g;return (b?c[(a&p)>>2]|0:d)|0}return 0}function hg(b,d){b=b|0;d=d|0;b=ai(b,d)|0;if(b){b=c[(c[(b&p)+4>>2]&p)>>2]|0;if(!(a[(b&n)+15>>0]|0))b=c[(b&p)+168>>2]|0;else b=10360}else b=0;return b|0}function ig(a,d){a=a|0;d=d|0;a=ai(a,d)|0;if(!a)a=-1;else a=b[((c[(a&p)+4>>2]|0)&o)+22>>1]&1;return a|0}function jg(a,b){a=a|0;b=b|0;if(b){Fk(a,c[(b&p)+28>>2]|0);mg(a,c[(b&p)>>2]|0);mg(a,c[(b&p)+4>>2]|0);Gk(a,c[(b&p)+12>>2]|0);Hk(a,c[(b&p)+16>>2]|0);mg(a,b)}return}function kg(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;do if(d){h=(a|0)!=0;if(!(h?(c[(a&p)+520>>2]|0)!=0:0))e=4;if((e|0)==4?(f=d+40|0,e=(b[(f&o)>>1]|0)+-1<<16>>16,b[(f&o)>>1]=e,e<<16>>16!=0):0)break;e=c[(d&p)+8>>2]|0;if(e){g=a+520|0;do{f=e;e=c[(e&p)+20>>2]|0;if(!(h?(c[(g&p)>>2]|0)!=0:0))Ik((c[(f&p)+24>>2]|0)+24|0,c[(f&p)>>2]|0,0)|0;Jk(a,f)}while((e|0)!=0)}e=c[(d&p)+16>>2]|0;if(e){j=(a|0)==0;k=d+68|0;l=a+520|0;do{if(!(!j?(c[(l&p)>>2]|0)!=0:0)){f=e+16|0;i=c[(f&p)>>2]|0;h=e+12|0;g=c[(h&p)>>2]|0;if(!i)Ik((c[(k&p)>>2]|0)+56|0,c[(((g|0)==0?e:g)&p)+8>>2]|0,g)|0;else c[(i&p)+12>>2]=g;h=c[(h&p)>>2]|0;if(h)c[(h&p)+16>>2]=c[(f&p)>>2]}Kk(a,c[(e&p)+28>>2]|0);Kk(a,c[(e&p)+32>>2]|0);f=e;e=c[(e&p)+4>>2]|0;mg(a,f)}while((e|0)!=0)}Lk(a,d);mg(a,c[(d&p)>>2]|0);mg(a,c[(d&p)+20>>2]|0);Mk(a,c[(d&p)+12>>2]|0,1);Nk(a,c[(d&p)+24>>2]|0);if(!((a|0)!=0?(c[(a&p)+520>>2]|0)!=0:0))Ok(0,d)|0;h=d+56|0;e=c[(h&p)>>2]|0;if(e){i=d+52|0;f=c[(i&p)>>2]|0;if((f|0)>0){g=0;do{if((g|0)!=1){mg(a,c[((c[(h&p)>>2]|0)+(g<<2)&p)>>2]|0);f=c[(i&p)>>2]|0}g=g+1|0}while((g|0)<(f|0));e=c[(h&p)>>2]|0}mg(a,e)}mg(a,d)}while(0);return}function lg(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;ch(c[(d&p)+60>>2]|0,b[(d&o)+68>>1]|0);h=d+16|0;ch(c[(h&p)>>2]|0,e[(d&o)+84>>1]<<1);f=c[(d&p)+192>>2]|0;if(f)do{g=f;f=c[(f&p)+24>>2]|0;Pk(a,c[(g&p)>>2]|0,c[(g&p)+4>>2]|0);mg(a,g)}while((f|0)!=0);f=b[(d&o)+70>>1]|0;if(f<<16>>16>0){g=d+64|0;f=f<<16>>16;do{f=f+-1|0;mg(a,c[((c[(g&p)>>2]|0)+(f<<2)&p)>>2]|0)}while((f|0)>0)}Pk(a,c[(d&p)+4>>2]|0,c[(d&p)+32>>2]|0);mg(a,c[(h&p)>>2]|0);mg(a,c[(d&p)+168>>2]|0);mg(a,c[(d&p)+172>>2]|0);return}function mg(a,b){a=a|0;b=b|0;var d=0;do if(b){if(a){if(c[(a&p)+520>>2]|0){Qk(a,b);break}if((c[(a&p)+276>>2]|0)>>>0<=b>>>0?(c[(a&p)+280>>2]|0)>>>0>b>>>0:0){d=a+272|0;c[(b&p)>>2]=c[(d&p)>>2];c[(d&p)>>2]=b;a=a+252|0;c[(a&p)>>2]=(c[(a&p)>>2]|0)+-1;break}}Wc(b)}while(0);return}function ng(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=c[(e&p)+24>>2]|0;if(!h)f=0;else{f=h;while(1)if(!(a[(f&n)>>0]|0))break;else f=f+1|0;f=f-h&1073741823}g=(((d[((d[(h&n)>>0]|0)&n)+9328>>0]|0)+f|0)>>>0)%23|0;f=Rk(b,g,h,f)|0;if(!f){c[(e&p)+8>>2]=0;f=b+(g<<2)|0;c[(e&p)+28>>2]=c[(f&p)>>2];c[(f&p)>>2]=e}else{f=f+8|0;c[(e&p)+8>>2]=c[(f&p)>>2];c[(f&p)>>2]=e}return}function og(a){a=a|0;var b=0,d=0;do if(a){b=c[2254]|0;if((b|0)==(a|0)){c[2254]=c[(a&p)+12>>2];break}if(b){do{d=b+12|0;b=c[(d&p)>>2]|0}while((b|0)!=(a|0)&(b|0)!=0);if((b|0)==(a|0))c[(d&p)>>2]=c[(a&p)+12>>2]}}while(0);return}function pg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function qg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;b=jw(a|0,b|0,-1,-1)|0;d=G;do if(!(d>>>0>0|(d|0)==0&b>>>0>2147483390)){if(!(c[2186]|0)){b=lc[c[8780>>2]&127](a)|0;break}d=lc[c[8796>>2]&127](a)|0;c[2171]=a;if((c[2181]|0)>>>0>>0)c[2181]=a;a=c[2260]|0;do if(a){b=c[2166]|0;e=9032|0;e=dw(c[(e&p)>>2]|0,c[(e&p)+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;f=G;if(0<(f|0)|0==(f|0)&b>>>0>>0){c[2265]=0;break}else{c[2265]=1;e=c[2261]|0;c[2260]=0;qc[a&15](e,b,0,d);c[2260]=a;c[2261]=e;break}}while(0);b=lc[c[8780>>2]&127](d)|0;if(b){a=lc[c[8792>>2]&127](b)|0;a=(c[2166]|0)+a|0;c[2166]=a;if(a>>>0>(c[2176]|0)>>>0)c[2176]=a;a=(c[2175]|0)+1|0;c[2175]=a;if(a>>>0>(c[2185]|0)>>>0)c[2185]=a}else b=0}else b=0;while(0);return b|0}function rg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;do if(a){if((b|0)==0&(d|0)==0){Wc(a);e=0;break}if(!(d>>>0>0|(d|0)==0&b>>>0>2147483391)){h=lc[c[8792>>2]&127](a)|0;g=lc[c[8796>>2]&127](b)|0;if((g|0)!=(h|0)){if(!(c[2186]|0)){e=rc[c[8788>>2]&127](a,g)|0;break}c[2171]=b;if((c[2181]|0)>>>0>>0)c[2181]=b;d=g-h|0;e=c[2166]|0;i=9032|0;i=dw(c[(i&p)>>2]|0,c[(i&p)+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;j=G;if(!(0<(j|0)|0==(j|0)&e>>>0>>0)?(f=c[2260]|0,(f|0)!=0):0){i=c[2261]|0;c[2260]=0;qc[f&15](i,e,0,d);c[2260]=f;c[2261]=i}e=rc[c[8788>>2]&127](a,g)|0;d=c[2260]|0;if((e|0)==0&(d|0)!=0){f=c[2166]|0;e=c[2261]|0;c[2260]=0;qc[d&15](e,f,0,b);c[2260]=d;c[2261]=e;e=rc[c[8788>>2]&127](a,g)|0}if(e){d=(lc[c[8792>>2]&127](e)|0)-h|0;d=(c[2166]|0)+d|0;c[2166]=d;if(d>>>0>(c[2176]|0)>>>0)c[2176]=d}else e=0}else e=a}else e=0}else e=qg(b,d)|0;while(0);return e|0}function sg(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var l=0,m=0,o=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=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;$=i;i=i+96|0;if((i|0)>=(j|0))fa();Z=$+8|0;_=$;Y=$+16|0;if(!e){l=0;m=0;T=0}else{l=e&2;if(!l)m=0;else{J=c[(g&p)>>2]|0;m=c[(J&p)>>2]|0;c[(g&p)>>2]=J+4}l=l&255;T=(e&1|0)!=0}S=l<<24>>24==0;P=l<<24>>24!=0;Q=m+4|0;R=m+8|0;O=b+12|0;l=0;a:while(1){e=a[(f&n)>>0]|0;if(e<<24>>24==37){e=f;f=l}else if(e<<24>>24){e=f;do{e=e+1|0;J=a[(e&n)>>0]|0}while(!(J<<24>>24==37|J<<24>>24==0));Sk(b,f,e-f|0);if(!(a[(e&n)>>0]|0))break}else break;l=e+1|0;o=a[(l&n)>>0]|0;if(!(o<<24>>24)){U=10;break}r=o<<24>>24;v=0;s=0;y=0;o=0;A=0;B=0;b:while(1){switch(r|0){case 43:{z=s;A=1;break}case 32:{z=s;y=1;break}case 35:{v=1;z=s;break}case 33:{z=1;break}case 48:{z=s;B=1;break}case 45:{z=s;o=1;break}default:{C=v;z=s;break b}}s=e+2|0;J=a[(s&n)>>0]|0;r=J<<24>>24;if(!(J<<24>>24)){l=s;C=v;break}else{e=l;l=s;s=z}}if((r|0)!=42)if((r+-48|0)>>>0<10){s=0;do{s=r+-48+(s*10|0)|0;l=l+1|0;r=a[(l&n)>>0]|0}while((r+-48|0)>>>0<10);N=o;M=s&2147483647}else{N=o;M=0}else{if(S){J=c[(g&p)>>2]|0;s=c[(J&p)>>2]|0;c[(g&p)>>2]=J+4}else s=Tk(m)|0;if((s|0)<0){o=1;s=(s|0)==-2147483648?0:0-s|0}r=l+1|0;l=r;r=a[(r&n)>>0]|0;N=o;M=s}do if((r|0)==46){s=l+1|0;o=a[(s&n)>>0]|0;if(o<<24>>24!=42){r=o<<24>>24;if((o+-48&255)<10)o=0;else{l=s;F=0;break}while(1){o=r+-48+(o*10|0)|0;l=l+2|0;J=a[(l&n)>>0]|0;r=J<<24>>24;if((J+-48&255)<10){J=s;s=l;l=J}else break}F=o&2147483647;break}if(S){J=c[(g&p)>>2]|0;s=c[(J&p)>>2]|0;c[(g&p)>>2]=J+4}else s=Tk(m)|0;l=l+2|0;r=a[(l&n)>>0]|0;if((s|0)<0)F=(s|0)==-2147483648?-1:0-s|0;else F=s}else F=-1;while(0);do if((r|0)==108){s=l+1|0;r=a[(s&n)>>0]|0;if(r<<24>>24==108){r=l+2|0;l=r;r=a[(r&n)>>0]|0;s=1;break}else{l=s;r=r<<24>>24;s=0;break}}else s=0;while(0);v=0;while(1){o=48752+(v*6|0)|0;if((r|0)==(a[(o&n)>>0]|0)){r=o;o=v;U=46;break}v=v+1|0;if((v|0)>=23){L=48752;J=0;break}}if((U|0)==46){U=0;if(!(T|o>>>0<20))break;L=r;J=a[((o*6|0)&n)+48755>>0]|0}c:do switch(J&255|0){case 13:{s=c[(g&p)>>2]|0;e=c[(s&p)>>2]|0;c[(g&p)>>2]=s+4;s=c[(g&p)>>2]|0;r=c[(s&p)>>2]|0;c[(g&p)>>2]=s+4;s=c[(e+(r*72|0)&p)+12>>2]|0;if(s){o=s;while(1)if(!(a[(o&n)>>0]|0))break;else o=o+1|0;Sk(b,s,o-s&1073741823);Sk(b,28928,1)}o=c[(e+(r*72|0)&p)+16>>2]|0;if(!o)e=0;else{e=o;while(1)if(!(a[(e&n)>>0]|0))break;else e=e+1|0;e=e-o&1073741823}Sk(b,o,e);y=f;r=0;e=0;s=0;break}case 14:{s=0;U=50;break}case 1:case 16:{U=50;break}case 4:case 3:case 2:{do if(!S){s=c[(Q&p)>>2]|0;if((c[(m&p)>>2]|0)>(s|0)){c[(Q&p)>>2]=s+1;t=+Ug(c[((c[(R&p)>>2]|0)+(s<<2)&p)>>2]|0);U=92;break}else{s=(F|0)<0?6:F;t=0.0;U=94;break}}else{U=c[(g&p)>>2]|0;c[(k&p)>>2]=c[(U&p)>>2];c[(k&p)+4>>2]=c[(U&p)+4>>2];t=+h[(k&q)>>3];c[(g&p)>>2]=U+8;U=92}while(0);if((U|0)==92){U=0;s=(F|0)<0?6:F;if(t<0.0){t=-t;K=45}else U=94}if((U|0)==94){U=0;if(!(A<<24>>24))K=y<<24>>24==0?0:32;else K=43}F=J<<24>>24==4;o=((F&(s|0)>0)<<31>>31)+s|0;s=o&4095;if(!s)u=.5;else{u=.5;do{s=s+-1|0;u=u*.1}while((s|0)>0)}E=J<<24>>24==2;if(E)t=t+u;h[(Z&q)>>3]=t;h[(_&q)>>3]=+h[(Z&q)>>3];if(+h[(Z&q)>>3]!=+h[(_&q)>>3]){y=48960;r=3;e=M;s=0}else{if(t>0.0){v=0;w=1.0;while(1){x=w*1.e+100;if(t>=x&(v|0)<351){v=v+100|0;w=x}else break}while(1){x=w*1.e+64;if(t>=x&(v|0)<351){v=v+64|0;w=x}else break}while(1){x=w*1.0e8;if(t>=x&(v|0)<351){v=v+8|0;w=x}else break}while(1){x=w*10.0;if((v|0)<351&t>=x){v=v+1|0;w=x}else break}t=t/w;if(t<1.0e-08)do{t=t*1.0e8;v=v+-8|0}while(t<1.0e-08);if(t<1.0)do{t=t*10.0;v=v+-1|0}while(t<1.0);if((v|0)>350){if(K<<24>>24==43)o=48976;else if(K<<24>>24==45)o=48968;else o=48984;f=o;while(1)if(!(a[(f&n)>>0]|0))break;else f=f+1|0;y=o;r=f-o&1073741823;e=M;s=0;break c}}else v=0;if(!E){t=u+t;if(!(t>=10.0))I=v;else{t=t*.1;I=v+1|0}}else I=v;if(F){s=(I|0)<-4|(o|0)<(I|0);F=C<<24>>24==0&1;o=o-(s?0:I)|0;s=s?3:2}else{F=z;s=J}H=s<<24>>24==3;f=H?0:I;v=(f|0)>0;s=jw(o|0,((o|0)<0)<<31>>31|0,M|0,((M|0)<0)<<31>>31|0)|0;v=jw(s|0,G|0,(v?f:0)|0,(v?((f|0)<0)<<31>>31:0)|0)|0;s=G;if((s|0)>0|(s|0)==0&v>>>0>55){v=jw(v|0,s|0,15,0)|0;v=qg(v,G)|0;if(!v){U=124;break a}else{y=v;J=v}}else{y=Y;J=0}v=((z&255)*10|0)+16|0;D=(z|C)&255|(o|0)>0;if(!(K<<24>>24))E=y;else{a[(y&n)>>0]=K;E=y+1|0}if((f|0)<0){a[(E&n)>>0]=48;e=2;s=E+1|0;A=f}else{C=~f;C=(C|0)>-1?C:-1;A=-2-C|0;C=f+C|0;r=E;while(1){if((v|0)<1)e=48;else{s=~~t;e=s+48&255;t=(t-+(s|0))*10.0;v=v+-1|0}a[(r&n)>>0]=e;if((f|0)>0){r=r+1|0;f=f+-1|0}else break}e=C+3|0;s=E+(C+2)|0}r=(D|0)==0;if(!r){a[(s&n)>>0]=46;s=E+e|0}if((A+1|0)<0){fw(s|0,48,~A|0)|0;s=s+~A|0;o=o+1+A|0}if((o|0)>0){e=s;f=o;while(1){f=f+-1|0;if((v|0)<1)A=48;else{E=~~t;A=E+48&255;t=(t-+(E|0))*10.0;v=v+-1|0}a[(e&n)>>0]=A;if((f|0)<=0)break;else e=e+1|0}s=s+o|0}d:do if(!(F<<24>>24==0|r)){while(1){r=s+-1|0;o=a[(r&n)>>0]|0;if(o<<24>>24==46)break;else if(o<<24>>24!=48)break d;a[(r&n)>>0]=0;s=r}if(!(z<<24>>24)){a[(r&n)>>0]=0;s=r;break}else{a[(s&n)>>0]=48;s=s+1|0;break}}while(0);if(H){r=s+1|0;a[(s&n)>>0]=a[((d[(L&n)+4>>0]|0)&n)+48912>>0]|0;o=s+2|0;if((I|0)<0){a[(r&n)>>0]=45;r=0-I|0}else{a[(r&n)>>0]=43;r=I}if((r|0)>99){a[(o&n)>>0]=((r|0)/100|0)+48;f=4;e=5;o=s+3|0;r=(r|0)%100|0}else{f=3;e=4}a[(o&n)>>0]=((r|0)/10|0)+48;a[(s+f&n)>>0]=((r|0)%10|0)+48;s=s+e|0}a[(s&n)>>0]=0;e=y;r=s-e|0;if(!(N<<24>>24==0&B<<24>>24!=0&(M|0)>(r|0))){e=M;s=J;break c}o=M-r|0;if((r|0)>=0){f=M;while(1){a[(y+f&n)>>0]=a[(y+(f-o)&n)>>0]|0;if((f|0)>(o|0))f=f+-1|0;else break}}if((M|0)==(r|0)){r=M;e=M;s=J;break c}fw(y+(K<<24>>24!=0&1)|0,48,M+e-s|0)|0;r=M;e=M;s=J}break}case 5:{if(S){r=c[(O&p)>>2]|0;e=c[(g&p)>>2]|0;y=c[(e&p)>>2]|0;c[(g&p)>>2]=e+4;c[(y&p)>>2]=r;y=f;r=0;e=0;s=0}else{y=f;r=0;e=0;s=0}break}case 8:{a[(Y&n)>>0]=37;y=Y;r=1;e=M;s=0;break}case 9:{if(!S){e=Uk(m)|0;if(!e)s=0;else s=a[(e&n)>>0]|0}else{J=c[(g&p)>>2]|0;s=c[(J&p)>>2]|0;c[(g&p)>>2]=J+4}if((F|0)>1){o=F+-1|0;e=M-o|0;if(!((e|0)<2|N<<24>>24!=0)){Vk(b,e+-1|0,32);e=0}f=s&255;Vk(b,o,f)}else{f=s&255;e=M}a[(Y&n)>>0]=f;y=Y;r=1;s=0;break}case 7:case 6:{if(P)o=Uk(m)|0;else{I=c[(g&p)>>2]|0;o=c[(I&p)>>2]|0;c[(g&p)>>2]=I+4}if(!o){f=10360;s=0}else{f=o;s=J<<24>>24!=7|P?0:o}if((F|0)>-1){if((F|0)>0)o=0;else{y=f;r=0;e=M;break c}while(1){r=o+1|0;if(!(a[(f+o&n)>>0]|0)){y=f;r=o;e=M;break c}if((r|0)<(F|0))o=r;else{y=f;e=M;break}}}else{if(!f){y=0;r=0;e=M;break c}else o=f;while(1)if(!(a[(o&n)>>0]|0))break;else o=o+1|0;y=f;r=o-f&1073741823;e=M;break c}break}case 15:case 11:case 10:{C=J<<24>>24==15?34:39;if(S){I=c[(g&p)>>2]|0;s=c[(I&p)>>2]|0;c[(g&p)>>2]=I+4}else s=Uk(m)|0;y=(s|0)==0;if(y)s=J<<24>>24==11?20304:48992;e:do if(!F){B=0;r=0}else{v=C&255;o=0;e=F;r=0;while(1){f=a[(s+o&n)>>0]|0;if(!(f<<24>>24)){B=o;break e}r=((f<<24>>24|0)==(v|0)&1)+r|0;o=o+1|0;e=e+-1|0;if(!e){B=o;break}}}while(0);z=J<<24>>24==11&(y^1);o=((z&1)<<1|1)+B+r|0;if((o|0)>70){r=qg(o,((o|0)<0)<<31>>31)|0;if(!r){U=197;break a}else{y=r;A=r}}else{y=Y;A=0}if(z){a[(y&n)>>0]=C;o=1}else o=0;if((B|0)>0){v=C&255;e=0;do{r=a[(s+e&n)>>0]|0;f=o+1|0;a[(y+o&n)>>0]=r;if((r<<24>>24|0)==(v|0)){a[(y+f&n)>>0]=r;o=o+2|0}else o=f;e=e+1|0}while((e|0)!=(B|0))}if(z){a[(y+o&n)>>0]=C;o=o+1|0}a[(y+o&n)>>0]=0;r=o;e=M;s=A;break}case 12:{J=c[(g&p)>>2]|0;e=c[(J&p)>>2]|0;c[(g&p)>>2]=J+4;if((e|0)!=0?(X=c[(e&p)+4>>2]|0,(X|0)!=0):0){Sk(b,c[(e&p)>>2]|0,X);y=f;r=0;e=0;s=0}else{y=f;r=0;e=0;s=0}break}default:break a}while(0);if((U|0)==50){U=0;do if(!(a[(L&n)+2>>0]&1)){if(P){f=Tk(m)|0;v=G;E=0;break}if(!(s<<24>>24)){v=c[(g&p)>>2]|0;f=c[(v&p)>>2]|0;c[(g&p)>>2]=v+4;v=0;E=0;break}else{E=c[(g&p)>>2]|0;v=E;f=c[(v&p)>>2]|0;v=c[(v&p)+4>>2]|0;c[(g&p)>>2]=E+8;E=0;break}}else{do if(!P)if(!(s<<24>>24)){r=c[(g&p)>>2]|0;s=c[(r&p)>>2]|0;c[(g&p)>>2]=r+4;r=((s|0)<0)<<31>>31;break}else{I=c[(g&p)>>2]|0;r=I;s=c[(r&p)>>2]|0;r=c[(r&p)+4>>2]|0;c[(g&p)>>2]=I+8;break}else{s=Tk(m)|0;r=G}while(0);if((r|0)<0){f=dw(0,0,s|0,r|0)|0;v=G;E=45;break}if(!(A<<24>>24)){f=s;v=r;E=y<<24>>24==0?0:32}else{f=s;v=r;E=43}}while(0);D=(f|0)==0&(v|0)==0;if(!(B<<24>>24))A=F;else{A=M-(E<<24>>24!=0&1)|0;A=(F|0)<(A|0)?A:F}if((A|0)>=60){s=A+10|0;r=qg(s,((s|0)<0)<<31>>31)|0;if(!r){U=69;break}else{e=s;s=r;o=r}}else{e=70;s=0;o=Y}B=o+(e+-1)|0;if(J<<24>>24==16){r=uw(f|0,v|0,10,0)|0;if(!(r>>>0<=3?(J=tw(f|0,v|0,10,0)|0,J=uw(J|0,G|0,10,0)|0,!((J|0)==1&(G|0)==0)):0))r=0;J=r<<1;a[(o+e+-2&n)>>0]=a[((J|1)&n)+48896>>0]|0;r=o+(e+-3)|0;a[(r&n)>>0]=a[(J&n)+48896>>0]|0}else r=B;e=d[(L&n)+4>>0]|0;y=d[(L&n)+1>>0]|0;while(1){J=uw(f|0,v|0,y|0,0)|0;o=r+-1|0;a[(o&n)>>0]=a[(J+e&n)+48912>>0]|0;f=tw(f|0,v|0,y|0,0)|0;v=G;if((f|0)==0&(v|0)==0)break;else r=o}f=A-B+o|0;if((f|0)>0){e=r;r=o;while(1){o=e+-2|0;a[(o&n)>>0]=48;f=f+-1|0;if((f|0)<=0)break;else{e=r;r=o}}}if(E<<24>>24){o=r+-2|0;a[(o&n)>>0]=E}if((!(D|C<<24>>24==0)?(V=a[(L&n)+5>>0]|0,V<<24>>24!=0):0)?(W=48952+(V&255)|0,!(V<<24>>24==3|V<<24>>24==6)):0){f=a[(W&n)>>0]|0;r=W;do{o=o+-1|0;a[(o&n)>>0]=f;r=r+1|0;f=a[(r&n)>>0]|0}while(f<<24>>24!=0)}y=o;r=B-o|0;e=M}o=e-r|0;f=(o|0)<1;if(!(f|N<<24>>24!=0))Vk(b,o,32);Sk(b,y,r);if(!(f|N<<24>>24==0))Vk(b,o,32);if(s)Wc(s);f=l+1|0;l=y}if((U|0)==10)Sk(b,48744,1);else if((U|0)==69){a[(b&n)+25>>0]=1;c[(b&p)+16>>2]=0}else if((U|0)==124){a[(b&n)+25>>0]=1;c[(b&p)+16>>2]=0}else if((U|0)==197){a[(b&n)+25>>0]=1;c[(b&p)+16>>2]=0}i=$;return}function tg(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=b+8|0;d=c[(f&p)>>2]|0;do if(((d|0)!=0?(h=b+12|0,a[(d+(c[(h&p)>>2]|0)&n)>>0]=0,e=a[(b&n)+24>>0]|0,e<<24>>24!=0):0)?(g=b+4|0,(c[(f&p)>>2]|0)==(c[(g&p)>>2]|0)):0){if(e<<24>>24==1){d=(c[(h&p)>>2]|0)+1|0;d=mh(c[(b&p)>>2]|0,d,((d|0)<0)<<31>>31)|0}else d=Tc((c[(h&p)>>2]|0)+1|0)|0;c[(f&p)>>2]=d;if(!d){a[(b&n)+25>>0]=1;c[(b&p)+16>>2]=0;break}else{kw(d|0,c[(g&p)>>2]|0,(c[(h&p)>>2]|0)+1|0)|0;break}}while(0);return c[(f&p)>>2]|0}function ug(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();m=q;h=d+52|0;c[(h&p)>>2]=e;a:do if(!f){c[(h&p)>>2]=e;e=c[(d&p)+236>>2]|0;if(e){h=e+8|0;if(!(b[(h&o)>>1]&9312)){b[(h&o)>>1]=1;break}else{vg(e);break}}}else{l=d+236|0;do if(!(c[(l&p)>>2]|0)){h=mh(d,40,0)|0;if(!h){c[(l&p)>>2]=h;break a}else{e=h+0|0;k=e+40|0;do{a[(e&n)>>0]=0;e=e+1|0}while((e|0)<(k|0));b[(h&o)+8>>1]=1;c[(h&p)+32>>2]=d;c[(l&p)>>2]=h;break}}while(0);c[(m&p)>>2]=g;h=Wk(d,f,m)|0;e=c[(l&p)>>2]|0;if(e)Xg(e,h,-1,1,75)|0}while(0);i=q;return}function vg(a){a=a|0;var d=0,e=0;e=a+8|0;d=b[(e&o)>>1]|0;if(d&8192){Yk(a,c[(a&p)>>2]|0)|0;d=b[(e&o)>>1]|0}d=d&65535;do if(!(d&1024)){if(d&32){Zk(c[(a&p)>>2]|0);break}if(d&64){a=c[(a&p)>>2]|0;d=(c[(a&p)>>2]|0)+180|0;c[(a&p)+4>>2]=c[(d&p)>>2];c[(d&p)>>2]=a}}else cc[c[(a&p)+36>>2]&31](c[(a&p)+16>>2]|0);while(0);b[(e&o)>>1]=1;return}function wg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();g=k;e=Vh(b,d)|0;do if((e|0)==1){f=mh(a,536,0)|0;if(!f){ug(a,7,15776,g);e=0;break}fw(f|0,0,536)|0;c[(f&p)>>2]=b;if(!(_k(f)|0)){mg(a,c[(f&p)+4>>2]|0);Ch(f);mg(a,f);h=7;break}else{b=c[(f&p)+12>>2]|0;e=f+4|0;c[(g&p)>>2]=c[(e&p)>>2];ug(a,b,10344,g);mg(a,c[(e&p)>>2]|0);Ch(f);mg(a,f);e=0;break}}else h=7;while(0);do if((h|0)==7)if((e|0)<0){c[(g&p)>>2]=d;ug(a,1,47448,g);e=0;break}else{e=c[((c[(b&p)+16>>2]|0)+(e<<4)&p)+4>>2]|0;break}while(0);i=k;return e|0}function xg(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[(a&p)+4>>2]|0;c[(k&p)+4>>2]=c[(a&p)>>2];j=k+22|0;if(!(b[(j&o)>>1]&2)){if((f|0)<0)f=(c[(k&p)+32>>2]|0)-(c[(k&p)+36>>2]|0)|0;if(((d+-512|0)>>>0<65025?(d+-1&d|0)==0:0)?(c[(k&p)+32>>2]=d,h=k+80|0,i=c[(h&p)>>2]|0,(i|0)!=0):0){a=i+-4|0;c[(h&p)>>2]=a;$k(a);c[(h&p)>>2]=0}h=k+32|0;a=al(c[(k&p)>>2]|0,h,f)|0;c[(k&p)+36>>2]=(c[(h&p)>>2]|0)-(f&65535);if(g)b[(j&o)>>1]=e[(j&o)>>1]|0|2}else a=8;return a|0}function yg(f,g){f=f|0;g=g|0;var h=0,k=0,l=0,m=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,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;i=i+16|0;if((i|0)>=(j|0))fa();N=T;M=T+12|0;L=T+8|0;R=c[(f&p)+4>>2]|0;I=R+4|0;c[(I&p)>>2]=c[(f&p)>>2];O=f+8|0;l=a[(O&n)>>0]|0;do if(l<<24>>24!=2?(P=(g|0)!=0,l<<24>>24!=1|P):0){Q=R+22|0;l=b[(Q&o)>>1]|0;if(!((l&1)!=0&P)){if(P)if((a[(R&n)+20>>0]|0)!=2&(l&64)==0)S=8;else S=7;else if(!(l&64))S=8;else S=7;a:do if((S|0)==7){h=c[(R&p)+76>>2]|0;S=12}else if(((S|0)==8?(g|0)>1:0)?(k=c[(R&p)+72>>2]|0,(k|0)!=0):0)do{l=c[(k&p)>>2]|0;if((l|0)!=(f|0)){h=l;S=12;break a}k=c[(k&p)+12>>2]|0}while((k|0)!=0);while(0);if((S|0)==12?(c[(h&p)>>2]|0)!=0:0){h=262;break}h=bl(f,1,1)|0;if(!h){l=e[(Q&o)>>1]|0;b[(Q&o)>>1]=l&65527;K=R+44|0;if(!(c[(K&p)>>2]|0))b[(Q&o)>>1]=l|8;E=R+12|0;u=R+32|0;v=R+36|0;w=R+17|0;x=R+18|0;y=R+80|0;z=R+24|0;A=R+26|0;B=R+28|0;C=R+30|0;D=R+21|0;F=R+20|0;G=(g|0)>1;h=0;b:while(1){c:do if(!(c[(E&p)>>2]|0)){h=cl(c[(R&p)>>2]|0)|0;if(!h){h=dl(R,1,M,0)|0;if(!h){t=c[(M&p)>>2]|0;q=c[(t&p)+56>>2]|0;l=d[(q&n)+29>>0]<<16|d[(q&n)+28>>0]<<24|d[(q&n)+30>>0]<<8|d[(q&n)+31>>0];m=c[(R&p)>>2]|0;r=c[(m&p)+24>>2]|0;if((l|0)!=0?(Zv(q+24|0,q+92|0,4)|0)==0:0)s=l;else s=r;d:do if((s|0)>0){e:do if(!(Zv(q,44680,16)|0)){if((d[(q&n)+18>>0]|0)>2)b[(Q&o)>>1]=e[(Q&o)>>1]|1;l=a[(q&n)+19>>0]|0;if((l&255)<=2){do if(l<<24>>24==2){if(b[(Q&o)>>1]&16)break;c[(L&p)>>2]=0;h=el(m,L)|0;if(h){S=48;break e}if(c[(L&p)>>2]|0)break;if(!t){h=0;continue b}Bg(c[(t&p)+68>>2]|0);h=0;continue b}while(0);if(Zv(q+21|0,47408,3)|0){h=26;S=48;break}k=d[(q&n)+17>>0]<<16|d[(q&n)+16>>0]<<8;if((k+16777215&k|0)!=0|k>>>0>65536|k>>>0<257){h=26;S=48;break}m=d[(q&n)+20>>0]|0;l=k-m|0;if((k|0)==(c[(u&p)>>2]|0)){if((s|0)>(r|0)?(c[((c[(I&p)>>2]|0)&p)+24>>2]&65536|0)==0:0){c[(N&p)>>2]=55672;c[(N&p)+4>>2]=10788;bd(11,13600,N);h=11;S=48;break}if(l>>>0<480){h=26;S=48;break}c[(u&p)>>2]=k;c[(v&p)>>2]=l;a[(w&n)>>0]=(d[(q&n)+53>>0]<<16|d[(q&n)+52>>0]<<24|d[(q&n)+54>>0]<<8|d[(q&n)+55>>0]|0)!=0&1;a[(x&n)>>0]=(d[(q&n)+65>>0]<<16|d[(q&n)+64>>0]<<24|d[(q&n)+66>>0]<<8|d[(q&n)+67>>0]|0)!=0&1;break d}if(t)Bg(c[(t&p)+68>>2]|0);c[(v&p)>>2]=l;c[(u&p)>>2]=k;l=c[(y&p)>>2]|0;if(l){h=l+-4|0;c[(y&p)>>2]=h;$k(h);c[(y&p)>>2]=0}h=al(c[(R&p)>>2]|0,u,m)|0}else{h=26;S=48}}else{h=26;S=48}while(0);if((S|0)==48){S=0;if(t)Bg(c[(t&p)+68>>2]|0);c[(E&p)>>2]=0}if(!h){h=0;continue b}else{S=77;break c}}else l=c[(v&p)>>2]|0;while(0);h=((((l<<6)+-768|0)>>>0)/255|0)+65513|0;k=h&65535;b[(z&o)>>1]=k;m=((((l<<5)+-384|0)>>>0)/255|0)+65513&65535;b[(A&o)>>1]=m;b[(B&o)>>1]=l+65501;b[(C&o)>>1]=m;a[(D&n)>>0]=(k&65535)>127?127:h&255;c[(E&p)>>2]=t;c[(K&p)>>2]=s;h=0;continue b}else l=0}else l=0}else{f:do if((h|0)==0&P){if(b[(Q&o)>>1]&1){h=8;S=77;break c}s=c[(R&p)>>2]|0;h=c[(s&p)+40>>2]|0;g:do if(!h){a[(s&n)+21>>0]=(a[((c[(f&p)>>2]|0)&n)+64>>0]|0)==2&1;t=s+16|0;if((a[(t&n)>>0]|0)==1){m=s+208|0;l=c[(m&p)>>2]|0;do if(!l){h=fl(s,2)|0;h:do if((h|0)==0&G){l=s+176|0;k=s+180|0;while(1){h=fl(s,4)|0;if((h|0)!=5)break h;if(!(lc[c[(l&p)>>2]&127](c[(k&p)>>2]|0)|0)){h=5;break g}}}while(0);if(h)break g}else{do if(a[(s&n)+4>>0]|0){if(a[(l&n)+43>>0]|0)break;h=fl(s,4)|0;if(h)break g;l=c[(m&p)>>2]|0;k=l+43|0;if(!(a[(k&n)>>0]|0)){h=c[(l&p)+4>>2]|0;pc[c[((c[(h&p)>>2]|0)&p)+56>>2]&31](h,(b[(l&o)+40>>1]|0)+3|0,1,5)|0;l=c[(m&p)>>2]|0}a[(k&n)>>0]=1}while(0);if(a[(l&n)+46>>0]|0){h=8;break g}k=l+43|0;if((a[(k&n)>>0]|0)==0?(H=c[(l&p)+4>>2]|0,H=pc[c[((c[(H&p)>>2]|0)&p)+56>>2]&31](H,0,1,10)|0,(H|0)!=0):0){h=H;break g}h=l+44|0;a[(h&n)>>0]=1;if(!(Zv(l+52|0,c[(c[(l&p)+32>>2]&p)>>2]|0,48)|0))break;if(!(a[(k&n)>>0]|0)){k=c[(l&p)+4>>2]|0;pc[c[((c[(k&p)>>2]|0)&p)+56>>2]&31](k,0,1,9)|0}a[(h&n)>>0]=0;h=517;break g}while(0);a[(t&n)>>0]=2;h=c[(s&p)+24>>2]|0;c[(s&p)+36>>2]=h;c[(s&p)+32>>2]=h;c[(s&p)+28>>2]=h;h=s+72|0;c[(h&p)>>2]=0;c[(h&p)+4>>2]=0}h=Cg(R)|0;break f}while(0);l=(h|0)==0;break c}while(0);if(!h){h=0;break b}else l=0}while(0);if((S|0)==77){S=0;l=(h|0)==0}if((a[(F&n)>>0]|0)==0?(J=c[(E&p)>>2]|0,(J|0)!=0):0){c[(E&p)>>2]=0;Bg(c[(J&p)+68>>2]|0)}if((h&255|0)!=5){S=86;break}if(a[(F&n)>>0]|0){S=86;break}if(!(gl(R)|0)){S=86;break}}if((S|0)==86)if(!l){S=96;break}if((a[(O&n)>>0]|0)==0?(H=R+40|0,c[(H&p)>>2]=(c[(H&p)>>2]|0)+1,(a[(f&n)+9>>0]|0)!=0):0){a[(f&n)+40>>0]=1;H=R+72|0;c[(f&p)+44>>2]=c[(H&p)>>2];c[(H&p)>>2]=f+32}l=P?2:1;a[(O&n)>>0]=l;if((l&255)>(d[(F&n)>>0]|0))a[(F&n)>>0]=l;if(P){l=c[(E&p)>>2]|0;c[(R&p)+76>>2]=f;k=e[(Q&o)>>1]|0;b[(Q&o)>>1]=G?k|32:k&65503;k=l+56|0;H=c[(k&p)>>2]|0;if((c[(K&p)>>2]|0)!=(d[(H&n)+29>>0]<<16|d[(H&n)+28>>0]<<24|d[(H&n)+30>>0]<<8|d[(H&n)+31>>0]|0)){h=Gg(c[(l&p)+68>>2]|0)|0;if(!h){h=c[(k&p)>>2]|0;S=c[(K&p)>>2]|0;a[(h&n)+28>>0]=S>>>24;a[(h&n)+29>>0]=S>>>16;a[(h&n)+30>>0]=S>>>8;a[(h&n)+31>>0]=S;h=0;S=96}}else S=96}}}else h=8}else{h=0;S=96}while(0);if((S|0)==96)if((h|0)==0&(g|0)!=0)h=hl(c[(R&p)>>2]|0,c[((c[(f&p)>>2]|0)&p)+496>>2]|0)|0;i=T;return h|0}function zg(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;if((i|0)>=(j|0))fa();u=y;w=y+8|0;c[(w&p)>>2]=0;t=h&1;a:do if(!f){c[(u&p)>>2]=46865;c[(u&p)+4>>2]=10788;bd(11,13600,u);k=11}else{a[(e&n)+23>>0]=1;h=c[(e&p)+40>>2]|0;do if(!h){s=e+204|0;h=c[(s&p)>>2]|0;h=ac[c[8876>>2]&63](c[(h&p)+40>>2]|0,f,d[(h&n)+29>>0]&3)|0;if(!h){m=c[(s&p)>>2]|0;if((a[(m&n)+29>>0]|0)!=2){l=m+8|0;h=c[(l&p)>>2]|0;b:do if(!h)x=11;else{while(1){if((b[(h&o)+26>>1]|0)==0?(b[(h&o)+24>>1]&4)==0:0)break;h=c[(h&p)+36>>2]|0;if(!h){x=11;break b}}c[(l&p)>>2]=h;r=h;x=14}while(0);c:do if((x|0)==11?(c[(l&p)>>2]=0,q=c[(m&p)+4>>2]|0,(q|0)!=0):0){h=q;do{if(!(b[(h&o)+26>>1]|0)){r=h;x=14;break c}h=c[(h&p)+36>>2]|0}while((h|0)!=0)}while(0);if((x|0)==14?(k=rc[c[(m&p)+32>>2]&127](c[(m&p)+36>>2]|0,r)|0,!((k|0)==0|(k|0)==5)):0)break;k=ac[c[8876>>2]&63](c[(m&p)+40>>2]|0,f,2)|0;if(!k){k=7;break}}else k=0}else k=h;m=il(c[(s&p)>>2]|0,f,k)|0;c[(g&p)>>2]=m;if(!m)k=7;else{h=m+16|0;k=(t|0)!=0;if(!((c[(h&p)>>2]|0)==0|k)){k=e+184|0;c[(k&p)>>2]=(c[(k&p)>>2]|0)+1;k=0;break a}c[(h&p)>>2]=e;do if((f|0)>=0?(v=e+152|0,(((c[2514]|0)/(c[(v&p)>>2]|0)|0)+1|0)!=(f|0)):0){if(((a[(e&n)+15>>0]|0)==0?!((c[(e&p)+24>>2]|0)>>>0>>0|k):0)?(c[(c[(e&p)+60>>2]&p)>>2]|0)!=0:0){k=c[(e&p)+208>>2]|0;if(!k)k=0;else{k=kl(k,f,w)|0;if(k)break;k=c[(w&p)>>2]|0}v=e+188|0;c[(v&p)>>2]=(c[(v&p)>>2]|0)+1;k=ll(m,k)|0;if(!k){k=0;break a}else break}if((c[(e&p)+156>>2]|0)>>>0>>0)k=13;else{if(k){k=c[3164]|0;if(k)nc[k&3]();if((c[(e&p)+28>>2]|0)>>>0>=f>>>0)bi(c[(e&p)+56>>2]|0,f)|0;jl(e,f)|0;k=c[3166]|0;if(k)nc[k&3]()}fw(c[(m&p)+4>>2]|0,0,c[(v&p)>>2]|0)|0;k=0;break a}}else x=21;while(0);if((x|0)==21){c[(u&p)>>2]=46945;c[(u&p)+4>>2]=10788;bd(11,13600,u);k=11}ml(m)}}else k=h;while(0);if((c[(e&p)+120>>2]|0)==0?(c[((c[(e&p)+204>>2]|0)&p)+12>>2]|0)==0:0)nl(e);c[(g&p)>>2]=0}while(0);i=y;return k|0}function Ag(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=i;i=i+16|0;if((i|0)>=(j|0))fa();x=y;v=b+4|0;r=c[((c[(v&p)>>2]|0)&p)+4>>2]|0;w=c[(r&p)>>2]|0;u=b+24|0;q=c[((c[((c[(u&p)>>2]|0)&p)+4>>2]|0)&p)+32>>2]|0;r=c[(r&p)+32>>2]|0;s=(q|0)<(r|0)?q:r;t=((q|0)<0)<<31>>31;m=sw(q|0,t|0,d|0,0)|0;o=G;if((q|0)==(r|0))b=0;else b=(a[(w&n)+15>>0]|0)==0?0:8;a:do if((b|0)==0&(q|0)>0){d=dw(m|0,o|0,q|0,t|0)|0;l=((r|0)<0)<<31>>31;k=(f|0)==0;h=G;b=r;while(1){c[(x&p)>>2]=0;f=qw(d|0,h|0,r|0,l|0)|0;if((f|0)!=(((c[2514]|0)>>>0)/(b>>>0)|0|0)){b=zg(w,f+1|0,x,0)|0;g=c[(x&p)>>2]|0;if(!b){b=Gg(g)|0;if(!b){z=rw(d|0,h|0,q|0,t|0)|0;f=c[(g&p)+4>>2]|0;b=rw(d|0,h|0,r|0,l|0)|0;kw(f+b|0,e+z|0,s|0)|0;a[(c[(g&p)+8>>2]&n)>>0]=0;if((d|0)==0&(h|0)==0&k){z=c[((c[((c[(u&p)>>2]|0)&p)+4>>2]|0)&p)+44>>2]|0;a[(f+b&n)+28>>0]=z>>>24;a[(f+b&n)+29>>0]=z>>>16;a[(f+b&n)+30>>0]=z>>>8;a[(f+b&n)+31>>0]=z;b=0}else b=0}}if(g)Bg(g)}else b=0;d=jw(d|0,h|0,r|0,l|0)|0;f=G;if(!((b|0)==0&((f|0)<(o|0)|(f|0)==(o|0)&d>>>0>>0)))break a;h=f;b=c[((c[((c[(v&p)>>2]|0)&p)+4>>2]|0)&p)+32>>2]|0}}while(0);i=y;return b|0}function Bg(a){a=a|0;var d=0,e=0,f=0;d=c[(a&p)+16>>2]|0;if(!(b[(a&o)+24>>1]&64)){ol(a);a=c[(d&p)+120>>2]|0}else{f=d+120|0;e=(c[(f&p)>>2]|0)+-1|0;c[(f&p)>>2]=e;f=d+136|0;c[(a&p)+12>>2]=c[(f&p)>>2];c[(f&p)>>2]=a;a=e}if((a|0)==0?(c[((c[(d&p)+204>>2]|0)&p)+12>>2]|0)==0:0)nl(d);return}function Cg(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;i=d+44|0;if(!(c[(i&p)>>2]|0)){j=c[(d&p)+12>>2]|0;k=c[(j&p)+56>>2]|0;f=Gg(c[(j&p)+68>>2]|0)|0;if(!f){f=k+0|0;g=44680|0;h=f+16|0;do{a[(f&n)>>0]=a[(g&n)>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));f=d+32|0;a[(k&n)+16>>0]=(c[(f&p)>>2]|0)>>>8;a[(k&n)+17>>0]=(c[(f&p)>>2]|0)>>>16;a[(k&n)+18>>0]=1;a[(k&n)+19>>0]=1;a[(k&n)+20>>0]=(c[(f&p)>>2]|0)-(c[(d&p)+36>>2]|0);a[(k&n)+21>>0]=64;a[(k&n)+22>>0]=32;a[(k&n)+23>>0]=32;f=k+24|0;h=f+76|0;do{a[(f&n)>>0]=0;f=f+1|0}while((f|0)<(h|0));pl(j,13);f=d+22|0;b[(f&o)>>1]=e[(f&o)>>1]|0|2;f=a[(d&n)+17>>0]|0;a[(k&n)+52>>0]=0;a[(k&n)+53>>0]=0;a[(k&n)+54>>0]=0;a[(k&n)+55>>0]=f;f=a[(d&n)+18>>0]|0;a[(k&n)+64>>0]=0;a[(k&n)+65>>0]=0;a[(k&n)+66>>0]=0;a[(k&n)+67>>0]=f;c[(i&p)>>2]=1;a[(k&n)+31>>0]=1;f=0}}else f=0;return f|0}function Dg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=c[(b&p)+4>>2]|0;c[(g&p)+4>>2]=c[(b&p)>>2];b=c[(g&p)+12>>2]|0;f=c[(b&p)+56>>2]|0;b=Gg(c[(b&p)+68>>2]|0)|0;if((b|0)==0?(i=d<<2,a[(f+i&n)+36>>0]=e>>>24,a[(f+i&n)+37>>0]=e>>>16,a[(f+i&n)+38>>0]=e>>>8,h=e&255,a[(f+i&n)+39>>0]=h,(d|0)==7):0)a[(g&n)+18>>0]=h;return b|0}function Eg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=a+20|0;b=c[(h&p)>>2]|0;d=(b|0)>0;if(d){e=c[(a&p)+16>>2]|0;g=0;do{f=c[(e+(g<<4)&p)+4>>2]|0;if(f)c[((c[(f&p)+4>>2]|0)&p)+4>>2]=c[(f&p)>>2];g=g+1|0}while((g|0)!=(b|0));if(d){g=a+16|0;f=0;do{d=c[((c[(g&p)>>2]|0)+(f<<4)&p)+12>>2]|0;if(d){ql(d);b=c[(h&p)>>2]|0}f=f+1|0}while((f|0)<(b|0))}}b=a+24|0;c[(b&p)>>2]=c[(b&p)>>2]&-3;rl(a);sl(a);return}function Fg(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=c[(d&p)+4>>2]|0;k=h+22|0;g=e[(k&o)>>1]|0;b[(k&o)>>1]=(f|0)==1?g|16:g&65519;g=yg(d,0)|0;do if(!g){h=h+12|0;i=c[((c[(h&p)>>2]|0)&p)+56>>2]|0;j=i+18|0;g=a[(j&n)>>0]|0;f=f&255;if(g<<24>>24==f<<24>>24?(a[(i&n)+19>>0]|0)==g<<24>>24:0){g=0;break}g=yg(d,2)|0;if(!g){g=Gg(c[((c[(h&p)>>2]|0)&p)+68>>2]|0)|0;if(!g){a[(j&n)>>0]=f;a[(i&n)+19>>0]=f;g=0}}}while(0);b[(k&o)>>1]=e[(k&o)>>1]&65519;return g|0}function Gg(a){a=a|0;var b=0;b=c[(a&p)+16>>2]|0;if((c[(b&p)+148>>2]|0)>>>0>(c[(b&p)+152>>2]|0)>>>0)a=tl(a)|0;else a=ul(a)|0;return a|0}function Hg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+32|0;if((i|0)>=(j|0))fa();u=A+16|0;v=A;k=A+12|0;m=A+8|0;g=c[(b&p)+40>>2]|0;a:do if(!g){z=b+16|0;if((d[(z&n)>>0]|0)>=3){b:do if(!(a[(b&n)+15>>0]|0)){if(c[(b&p)+208>>2]|0){l=b+204|0;h=vl(c[(l&p)>>2]|0)|0;c[(m&p)>>2]=0;if(!h){g=zg(b,1,m,0)|0;h=c[(m&p)>>2]|0;c[(h&p)+12>>2]=0;if(h){k=h;y=9}}else{k=0;y=9}if((y|0)==9){g=wl(b,h,c[(b&p)+24>>2]|0,1)|0;if(k)Bg(k)}if(g)break a;h=c[(l&p)>>2]|0;g=c[(h&p)>>2]|0;if(!g)break;while(1){xl(g);g=c[(h&p)>>2]|0;if(!g)break b}}l=b+18|0;if((a[(l&n)>>0]|0)==0?(c[(b&p)+24>>2]|0)!=0:0){g=zg(b,1,k,0)|0;k=c[(k&p)>>2]|0;if(!g){g=Gg(k)|0;if(!g){yl(k);a[(l&n)>>0]=1;g=0}}if(k)Bg(k);if(g)break a}if(((e|0)!=0?(a[(b&n)+5>>0]|0)!=4:0)?(x=b+64|0,t=c[(x&p)>>2]|0,(c[(t&p)>>2]|0)!=0):0){a[(b&n)+19>>0]=1;k=a[(e&n)>>0]|0;if(!(k<<24>>24)){l=0;h=0}else{l=0;h=0;do{l=(k<<24>>24)+l|0;h=h+1|0;k=a[(e+h&n)>>0]|0}while(k<<24>>24!=0)}s=b+72|0;g=s;k=c[(g&p)>>2]|0;g=c[(g&p)+4>>2]|0;if(!(a[(b&n)+8>>0]|0))m=g;else{if((k|0)==0&(g|0)==0){k=0;g=0}else{g=jw(k|0,g|0,-1,-1)|0;k=c[(b&p)+148>>2]|0;g=qw(g|0,G|0,k|0,0)|0;g=jw(g|0,G|0,1,0)|0;k=sw(g|0,G|0,k|0,0)|0;g=G}m=s;c[(m&p)>>2]=k;c[(m&p)+4>>2]=g;m=g}g=((c[2514]|0)/(c[(b&p)+152>>2]|0)|0)+1|0;a[(u&n)>>0]=g>>>24;o=u+1|0;a[(o&n)>>0]=g>>>16;q=u+2|0;a[(q&n)>>0]=g>>>8;r=u+3|0;a[(r&n)>>0]=g;g=tc[c[((c[(t&p)>>2]|0)&p)+12>>2]&31](t,u,4,k,m)|0;if(g)break a;g=c[(x&p)>>2]|0;m=jw(k|0,m|0,4,0)|0;k=G;g=tc[c[((c[(g&p)>>2]|0)&p)+12>>2]&31](g,e,h,m,k)|0;if(g)break a;g=c[(x&p)>>2]|0;m=jw(m|0,k|0,h|0,((h|0)<0)<<31>>31|0)|0;k=G;a[(u&n)>>0]=h>>>24;a[(o&n)>>0]=h>>>16;a[(q&n)>>0]=h>>>8;a[(r&n)>>0]=h;g=tc[c[((c[(g&p)>>2]|0)&p)+12>>2]&31](g,u,4,m,k)|0;if(g)break a;t=c[(x&p)>>2]|0;g=jw(m|0,k|0,4,0)|0;a[(u&n)>>0]=l>>>24;a[(o&n)>>0]=l>>>16;a[(q&n)>>0]=l>>>8;a[(r&n)>>0]=l;g=tc[c[((c[(t&p)>>2]|0)&p)+12>>2]&31](t,u,4,g,G)|0;if(g)break a;t=c[(x&p)>>2]|0;g=jw(m|0,k|0,8,0)|0;g=tc[c[((c[(t&p)>>2]|0)&p)+12>>2]&31](t,14808,8,g,G)|0;if(g)break a;t=h+20|0;g=s;t=jw(c[(g&p)>>2]|0,c[(g&p)+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;g=s;c[(g&p)>>2]=t;c[(g&p)+4>>2]=G;g=c[(x&p)>>2]|0;g=rc[c[((c[(g&p)>>2]|0)&p)+24>>2]&127](g,v)|0;if(g)break a;t=v;r=c[(t&p)+4>>2]|0;g=s;h=c[(g&p)>>2]|0;g=c[(g&p)+4>>2]|0;if((r|0)>(g|0)|((r|0)==(g|0)?(c[(t&p)>>2]|0)>>>0>h>>>0:0)?(w=c[(x&p)>>2]|0,w=ac[c[((c[(w&p)>>2]|0)&p)+16>>2]&63](w,h,g)|0,(w|0)!=0):0){g=w;break a}}g=zl(b,0)|0;if(g)break a;h=b+204|0;g=Al(b,vl(c[(h&p)>>2]|0)|0)|0;if(g)break a;g=c[(h&p)>>2]|0;h=c[(g&p)>>2]|0;if(h)do{xl(h);h=c[(g&p)>>2]|0}while((h|0)!=0);h=c[(b&p)+24>>2]|0;if(h>>>0>(c[(b&p)+32>>2]|0)>>>0){g=Bl(b,h-((h|0)==(((c[2514]|0)/(c[(b&p)+152>>2]|0)|0)+1|0)&1)|0)|0;if(!(g|f))y=46}else if(!f)y=46;else break;if((y|0)==46)g=Ig(b,e)|0;if(g)break a}else{g=c[(b&p)+88>>2]|0;if(g)do{c[(g&p)+16>>2]=1;g=c[(g&p)+44>>2]|0}while((g|0)!=0)}while(0);if(!(c[(b&p)+208>>2]|0)){a[(z&n)>>0]=5;g=0}else g=0}else g=0}while(0);i=A;return g|0}function Ig(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=b+60|0;h=c[(g&p)>>2]|0;i=c[(h&p)>>2]|0;if(!((i|0)!=0?(f=ac[c[(i&p)+40>>2]&63](h,21,e)|0,!((f|0)==0|(f|0)==12)):0))if(!(a[(b&n)+7>>0]|0)){f=c[(g&p)>>2]|0;f=rc[c[((c[(f&p)>>2]|0)&p)+20>>2]&127](f,d[(b&n)+11>>0]|0)|0}else f=0;return f|0}function Jg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=a[(b&n)+8>>0]|0;do if(!(g<<24>>24))f=0;else{k=c[(b&p)+4>>2]|0;c[(k&p)+4>>2]=c[(b&p)>>2];if(g<<24>>24==2){h=c[(k&p)>>2]|0;i=h+40|0;g=c[(i&p)>>2]|0;do if(!g){g=h+16|0;if(((a[(g&n)>>0]|0)==2?(a[(h&n)+4>>0]|0)!=0:0)?(a[(h&n)+5>>0]|0)==1:0){a[(g&n)>>0]=1;break}f=h+100|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;f=Cl(h,d[(h&n)+19>>0]|0,1)|0;h=f&255;if((h|0)==10|(h|0)==13){c[(i&p)>>2]=f;a[(g&n)>>0]=6;j=10}else j=10}else{f=g;j=10}while(0);if((j|0)==10?(f|0)!=0&(e|0)==0:0)break;f=b+20|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+-1;a[(k&n)+20>>0]=1;f=k+60|0;ei(c[(f&p)>>2]|0);c[(f&p)>>2]=0}Dl(b);f=0}while(0);return f|0}function Kg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))fa();h=s;a:do if((a[(b&n)+8>>0]|0)==2){r=c[(b&p)+4>>2]|0;c[(r&p)+4>>2]=c[(b&p)>>2];do if(a[(r&n)+17>>0]|0){q=c[(r&p)>>2]|0;f=r+8|0;b=c[(f&p)>>2]|0;if(b)do{o=b+72|0;a[(o&n)>>0]=d[(o&n)>>0]&251;b=c[(b&p)+8>>2]|0}while((b|0)!=0);if(!(a[(r&n)+18>>0]|0)){o=r+44|0;g=c[(o&p)>>2]|0;if(g>>>0<2)b=0;else{b=g+-2|0;b=b-((b>>>0)%(((((c[(r&p)+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;b=((b+1|0)==(((c[2514]|0)>>>0)/((c[(r&p)+32>>2]|0)>>>0)|0|0)?3:2)+b|0}if((b|0)!=(g|0)?(g|0)!=((((c[2514]|0)>>>0)/((c[(r&p)+32>>2]|0)>>>0)|0)+1|0):0){k=r+12|0;l=c[((c[(k&p)>>2]|0)&p)+56>>2]|0;l=d[(l&n)+37>>0]<<16|d[(l&n)+36>>0]<<24|d[(l&n)+38>>0]<<8|d[(l&n)+39>>0];m=El(r,g,l)|0;if(m>>>0>g>>>0){c[(h&p)>>2]=56396;c[(h&p)+4>>2]=10788;bd(11,13600,h);b=11;break a}b:do if(m>>>0>>0){b=c[(f&p)>>2]|0;c:do if(b){while(1){if(b)break;b=c[2]|0;if(!b)break c}b=Fl(b,0,0)|0;if(b){f=0;break b}}while(0);do{b=Gl(r,m,g,1)|0;g=g+-1|0;f=(b|0)==0}while(g>>>0>m>>>0&f)}else{f=1;b=0}while(0);if(((b|0)==101|f)&(l|0)!=0){b=Gg(c[((c[(k&p)>>2]|0)&p)+68>>2]|0)|0;l=(c[((c[(k&p)>>2]|0)&p)+56>>2]|0)+32|0;a[(l&n)>>0]=0;a[(l&n)+1>>0]=0;a[(l&n)+2>>0]=0;a[(l&n)+3>>0]=0;l=(c[((c[(k&p)>>2]|0)&p)+56>>2]|0)+36|0;a[(l&n)>>0]=0;a[(l&n)+1>>0]=0;a[(l&n)+2>>0]=0;a[(l&n)+3>>0]=0;l=c[((c[(k&p)>>2]|0)&p)+56>>2]|0;a[(l&n)+28>>0]=m>>>24;a[(l&n)+29>>0]=m>>>16;a[(l&n)+30>>0]=m>>>8;a[(l&n)+31>>0]=m;a[(r&n)+19>>0]=1;c[(o&p)>>2]=m}if(!b)break;Hl(q)|0;break a}c[(h&p)>>2]=56391;c[(h&p)+4>>2]=10788;bd(11,13600,h);b=11;break a}}while(0);b=c[(r&p)>>2]|0;if(a[(r&n)+19>>0]|0)c[(b&p)+24>>2]=c[(r&p)+44>>2];b=Hg(b,e,0)|0}else b=0;while(0);i=s;return b|0}function Lg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();h=m;l=c[(b&p)+4>>2]|0;c[(l&p)+4>>2]=c[(b&p)>>2];a:do if(!e){e=c[(l&p)+8>>2]|0;if(e){while(1){if(e)break;e=c[2]|0;if(!e)break a}e=Fl(e,0,0)|0;g=(e|0)==0;if(!g){g=g?f:0;k=6}}}else{g=f;k=6}while(0);if((k|0)==6)Il(b,e,g)|0;if((a[(b&n)+8>>0]|0)==2){Hl(c[(l&p)>>2]|0)|0;if(!(dl(l,1,h,0)|0)){e=c[(h&p)>>2]|0;g=c[(e&p)+56>>2]|0;g=d[(g&n)+29>>0]<<16|d[(g&n)+28>>0]<<24|d[(g&n)+30>>0]<<8|d[(g&n)+31>>0];if(!g)g=c[((c[(l&p)>>2]|0)&p)+24>>2]|0;c[(l&p)+44>>2]=g;if(e)Bg(c[(e&p)+68>>2]|0)}a[(l&n)+20>>0]=1;g=l+60|0;ei(c[(g&p)>>2]|0);c[(g&p)>>2]=0}Dl(b);i=m;return}function Mg(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=d+76|0;if((c[(j&p)>>2]|0)==1691352191?(Jl(d)|0)==0:0){Kl(d,0);Ll(d);i=d+20|0;k=d+16|0;e=c[(k&p)>>2]|0;if((c[(i&p)>>2]|0)>0){h=0;do{g=e+(h<<4)+4|0;f=c[(g&p)>>2]|0;if((f|0)!=0?(Ml(f),c[(g&p)>>2]=0,(h|0)!=1):0)c[(e+(h<<4)&p)+12>>2]=0;h=h+1|0;e=c[(k&p)>>2]|0}while((h|0)<(c[(i&p)>>2]|0))}e=c[(e&p)+28>>2]|0;if(e)ql(e);rl(d);sl(d);h=0;do{e=c[(d+(h<<2)&p)+336>>2]|0;if(e)do{g=e;e=c[(e&p)+28>>2]|0;if(g)do{Nl(d,g);f=g;g=c[(g&p)+8>>2]|0;mg(d,f)}while((g|0)!=0)}while((e|0)!=0);h=h+1|0}while((h|0)!=23);f=d+428|0;e=c[(d&p)+436>>2]|0;if(e)do{h=c[(e&p)+8>>2]|0;g=c[(h&p)+16>>2]|0;if(g)cc[g&31](c[(h&p)+8>>2]|0);g=c[(h&p)+36>>2]|0;if(g)cc[g&31](c[(h&p)+28>>2]|0);g=c[(h&p)+56>>2]|0;if(g)cc[g&31](c[(h&p)+48>>2]|0);mg(d,h);e=c[(e&p)>>2]|0}while((e|0)!=0);Ol(f);h=d+308|0;e=c[(d&p)+316>>2]|0;if(e)do{g=c[(e&p)+8>>2]|0;f=c[(g&p)+12>>2]|0;if(f)cc[f&31](c[(g&p)+8>>2]|0);mg(d,g);e=c[(e&p)>>2]|0}while((e|0)!=0);Ol(h);c[(d&p)+52>>2]=0;f=d+236|0;e=c[(f&p)>>2]|0;do if(e){g=e+8|0;if(!(b[(g&o)>>1]&9312)){b[(g&o)>>1]=1;break}else{vg(e);e=c[(f&p)>>2]|0;break}}else e=0;while(0);Mh(e);g=d+168|0;if((c[(g&p)>>2]|0)>0){e=d+172|0;f=0;do{h=c[(d&p)>>2]|0;jc[c[(h&p)+52>>2]&15](h,c[((c[(e&p)>>2]|0)+(f<<2)&p)>>2]|0);f=f+1|0}while((f|0)<(c[(g&p)>>2]|0))}else e=d+172|0;mg(d,c[(e&p)>>2]|0);c[(j&p)>>2]=-1254786768;mg(d,c[((c[(k&p)>>2]|0)&p)+28>>2]|0);c[(j&p)>>2]=-1623446221;if(a[(d&n)+251>>0]|0)Wc(c[(d&p)+276>>2]|0);Wc(d)}return}function Ng(a){a=a|0;var b=0;b=c[(a&p)+40>>2]|0;if((b|0)==1369188723|(b|0)==-1108210269)b=Pg(a)|0;else b=0;Pl(a);return b|0}function Og(b,d){b=b|0;d=d|0;do if(b)if((a[(b&n)+65>>0]|0)!=0|(d|0)==3082){Ql(b);b=7;break}else{b=c[(b&p)+56>>2]&d;break}else b=d&255;while(0);return b|0}function Pg(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,k=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();e=g;f=c[(a&p)>>2]|0;Rl(a)|0;if((c[(a&p)+76>>2]|0)>-1){hh(a)|0;d=a+44|0;mg(f,c[(d&p)>>2]|0);c[(d&p)>>2]=0;d=a+88|0;e=b[(d&o)>>1]|0;if(e&16)b[(d&o)>>1]=e|8}else{d=c[(a&p)+80>>2]|0;if((d|0)!=0?(b[(a&o)+88>>1]&8)!=0:0){h=a+44|0;k=c[(h&p)>>2]|0;c[(e&p)>>2]=k;ug(f,d,(k|0)!=0?10344:0,e);mg(f,c[(h&p)>>2]|0);c[(h&p)>>2]=0}}d=a+44|0;mg(c[(a&p)>>2]|0,c[(d&p)>>2]|0);c[(d&p)>>2]=0;c[(a&p)+20>>2]=0;d=a+136|0;c[(d&p)>>2]=0;c[(d&p)+4>>2]=0;c[(a&p)+40>>2]=649915045;i=g;return c[(f&p)+56>>2]&c[(a&p)+80>>2]|0}function Qg(a){a=a|0;var d=0;if(b[(a&o)+8>>1]&9312)vg(a);d=a+24|0;if(c[(d&p)>>2]|0){mg(c[(a&p)+32>>2]|0,c[(a&p)+20>>2]|0);c[(d&p)>>2]=0}c[(a&p)+16>>2]=0;return}function Rg(a){a=a|0;var d=0,f=0,g=0;d=a+8|0;if(b[(d&o)>>1]&16384){f=a+12|0;g=(c[(a&p)>>2]|0)+(c[(f&p)>>2]|0)|0;if(!(eh(a,(g|0)<1?1:g,1)|0)){fw((c[(a&p)+16>>2]|0)+(c[(f&p)>>2]|0)|0,0,c[(a&p)>>2]|0)|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+(c[(a&p)>>2]|0);b[(d&o)>>1]=(e[(d&o)>>1]|0)&48639;d=0}else d=7}else d=0;return d|0}function Sg(d,e){d=d|0;e=e|0;var f=0;do if(d){f=b[(d&o)+8>>1]|0;if((f&514)==514?(a[(d&n)+10>>0]|0)==e<<24>>24:0){f=c[(d&p)+16>>2]|0;break}if(!(f&1))f=Sl(d,e)|0;else f=0}else f=0;while(0);return f|0}function Tg(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=a+8|0;f=b[(e&o)>>1]|0;if(!(f&16))if(!(Sg(a,d)|0))e=0;else{f=b[(e&o)>>1]|0;g=4}else g=4;if((g|0)==4){e=c[(a&p)+12>>2]|0;if(f&16384)e=(c[(a&p)>>2]|0)+e|0}return e|0}function Ug(b){b=b|0;var d=0.0,f=0,g=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();g=k;f=e[(b&o)+8>>1]|0;do if(!(f&8)){if(f&4){f=b;d=+((c[(f&p)>>2]|0)>>>0)+4294967296.0*+(c[(f&p)+4>>2]|0);break}if(!(f&18))d=0.0;else{h[(g&q)>>3]=0.0;Tl(c[(b&p)+16>>2]|0,g,c[(b&p)+12>>2]|0,a[(b&n)+10>>0]|0)|0;d=+h[(g&q)>>3]}}else d=+h[(b&q)>>3];while(0);i=k;return +d}function Vg(b){b=b|0;var d=0.0,f=0,g=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();g=k;f=e[(b&o)+8>>1]|0;do if(!(f&4)){if(!(f&8)){if(!(f&18)){b=0;f=0;break}f=g;c[(f&p)>>2]=0;c[(f&p)+4>>2]=0;Ul(c[(b&p)+16>>2]|0,g,c[(b&p)+12>>2]|0,a[(b&n)+10>>0]|0)|0;f=g;b=c[(f&p)+4>>2]|0;f=c[(f&p)>>2]|0;break}d=+h[(b&q)>>3];if(!(d<=-9223372036854775808.0))if(!(d>=9223372036854775808.0)){b=+R(d)>=1.0?(d>0.0?~~+da(+Q(d/4294967296.0),4294967295.0)>>>0:~~+ba((d-+(~~d>>>0))/4294967296.0)>>>0):0;f=~~d>>>0}else{b=2147483647;f=-1}else{b=-2147483648;f=0}}else{f=b;b=c[(f&p)+4>>2]|0;f=c[(f&p)>>2]|0}while(0);G=b;i=k;return f|0}function Wg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((Xg(c[(b&p)>>2]|0,d,e,f,g)|0)==18){c[(b&p)+20>>2]=18;a[(b&n)+25>>0]=1;Xg(c[(b&p)>>2]|0,10096,-1,1,0)|0}return}function Xg(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;a:do if(!f){j=d+8|0;if(!(b[(j&o)>>1]&9312)){b[(j&o)>>1]=1;j=0;break}else{vg(d);j=0;break}}else{r=d+32|0;j=c[(r&p)>>2]|0;if(!j)u=1e9;else u=c[(j&p)+88>>2]|0;t=h<<24>>24==0;q=t?16:2;if((g|0)<0){b:do if(h<<24>>24!=1)if((u|0)<0)k=0;else{g=0;while(1){k=g+2|0;if(!((a[(f+(g|1)&n)>>0]|a[(f+g&n)>>0])<<24>>24)){k=g;break b}if((k|0)>(u|0))break;else g=k}}else{k=f;while(1)if(!(a[(k&n)>>0]|0))break;else k=k+1|0;k=k-f&1073741823;k=(k|0)>(u|0)?u+1|0:k}while(0);s=k;m=(q&65535|512)&65535}else{s=g;m=q}do if((i|0)==(-1|0)){if(!(m&512))j=s;else j=s+(h<<24>>24==1?1:2)|0;if((s|0)>(u|0)){j=18;break a}if(fh(d,(j|0)>32?j:32)|0){j=7;break a}kw(c[(d&p)+16>>2]|0,f|0,j|0)|0;q=d+8|0;j=m}else{g=(i|0)==75;l=d+8|0;if(!((b[(l&o)>>1]&9312)==0?(c[(d&p)+24>>2]|0)==0:0))Qg(d);c[(d&p)+16>>2]=f;if(!g){c[(d&p)+36>>2]=i;q=l;j=(m&65535|((i|0)==0?2048:1024))&65535;break}c[(d&p)+20>>2]=f;j=c[(r&p)>>2]|0;do if(!j)j=lc[c[8792>>2]&127](f)|0;else{if((c[(j&p)+276>>2]|0)>>>0<=f>>>0?(c[(j&p)+280>>2]|0)>>>0>f>>>0:0){j=e[(j&o)+248>>1]|0;break}j=lc[c[8792>>2]&127](f)|0}while(0);c[(d&p)+24>>2]=j;q=l;j=m}while(0);m=d+12|0;c[(m&p)>>2]=s;b[(q&o)>>1]=j;f=t?1:h;l=d+10|0;a[(l&n)>>0]=f;do if(f<<24>>24!=1&(s|0)>1){g=d+16|0;k=c[(g&p)>>2]|0;j=a[(k&n)>>0]|0;k=a[(k&n)+1>>0]|0;if(!(j<<24>>24==-1&k<<24>>24==-2))if(k<<24>>24!=-1|j<<24>>24!=-2)break;else j=3;else j=2;if(Vl(d)|0){j=7;break a}f=(c[(m&p)>>2]|0)+-2|0;c[(m&p)>>2]=f;i=c[(g&p)>>2]|0;lw(i|0,i+2|0,f|0)|0;a[((c[(g&p)>>2]|0)+(c[(m&p)>>2]|0)&n)>>0]=0;a[((c[(g&p)>>2]|0)+(c[(m&p)>>2]|0)&n)+1>>0]=0;b[(q&o)>>1]=e[(q&o)>>1]|512;a[(l&n)>>0]=j}while(0);j=(s|0)>(u|0)?18:0}while(0);return j|0}function Yg(a,c){a=a|0;c=+c;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();e=g+8|0;f=g;d=a+8|0;if(!(b[(d&o)>>1]&9312))b[(d&o)>>1]=1;else vg(a);h[(e&q)>>3]=c;h[(f&q)>>3]=+h[(e&q)>>3];if(!(+h[(e&q)>>3]!=+h[(f&q)>>3])){h[(a&q)>>3]=c;b[(d&o)>>1]=8}i=g;return}function Zg(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=a+8|0;if(!(b[(f&o)>>1]&9312))b[(f&o)>>1]=1;else vg(a);c[(a&p)>>2]=d;c[(a&p)+4>>2]=e;b[(f&o)>>1]=4;return}function _g(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;f=a+8|0;if(b[(f&o)>>1]&9312)vg(a);c[(a&p)>>2]=c[(d&p)>>2];c[(a&p)+4>>2]=c[(d&p)+4>>2];c[(a&p)+8>>2]=c[(d&p)+8>>2];c[(a&p)+12>>2]=c[(d&p)+12>>2];c[(a&p)+16>>2]=c[(d&p)+16>>2];h=e[(f&o)>>1]|0;g=h&64511;b[(f&o)>>1]=g;if((h&18|0)!=0?(b[(d&o)+8>>1]&2048)==0:0){b[(f&o)>>1]=g|4096;f=Vl(a)|0}else f=0;return f|0}function $g(d,e){d=d|0;e=e|0;var f=0;f=d+8|0;if(!((b[(f&o)>>1]&9312)==0?(c[(d&p)+24>>2]|0)==0:0))Qg(d);b[(f&o)>>1]=16400;c[(d&p)+12>>2]=0;c[(d&p)>>2]=(e|0)<0?0:e;a[(d&n)+10>>0]=1;c[(d&p)+16>>2]=0;return}function ah(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))fa();b=d;if(a)if(!(c[(a&p)>>2]|0)){bd(21,47360,b);a=1}else a=0;else{bd(21,47320,b);a=1}i=d;return a|0}function bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();e=f;if((c[(a&p)>>2]|0)>1?(d=c[(a&p)+72>>2]|0,(d|0)!=0):0)d=rc[d&127](a,b)|0;else{d=rc[c[(a&p)+64>>2]&127](a,e)|0;g=+h[(e&q)>>3]*864.0e5;a=+R(g)>=1.0?(g>0.0?~~+da(+Q(g/4294967296.0),4294967295.0)>>>0:~~+ba((g-+(~~g>>>0))/4294967296.0)>>>0):0;c[(b&p)>>2]=~~g>>>0;c[(b&p)+4>>2]=a}i=f;return d|0}function ch(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;a:do if((d|0)!=0&(e|0)!=0){i=d+(e*40|0)|0;j=c[(d&p)+32>>2]|0;g=j+65|0;h=a[(g&n)>>0]|0;if(c[(j&p)+520>>2]|0){e=d;while(1){if(c[(e&p)+24>>2]|0)mg(j,c[(e&p)+20>>2]|0);e=e+40|0;if(e>>>0>=i>>>0)break a}}do{e=d+8|0;if(!(b[(e&o)>>1]&9312)){f=d+24|0;if(c[(f&p)>>2]|0){mg(j,c[(d&p)+20>>2]|0);c[(f&p)>>2]=0}}else Qg(d);b[(e&o)>>1]=128;d=d+40|0}while(d>>>0>>0);a[(g&n)>>0]=h}while(0);return}function dh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();g=f;c[(g&p)>>2]=e;e=Wk(b,d,g)|0;mg(b,c[(a&p)>>2]|0);c[(a&p)>>2]=e;i=f;return}function eh(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,q=0;l=a+24|0;g=c[(l&p)>>2]|0;do if((g|0)<(d|0)){k=(d|0)<32?32:d;d=(g|0)>0;if((f|0)!=0&d?(h=a+16|0,i=c[(h&p)>>2]|0,j=a+20|0,(i|0)==(c[(j&p)>>2]|0)):0){g=Wl(c[(a&p)+32>>2]|0,i,k,((k|0)<0)<<31>>31)|0;c[(j&p)>>2]=g;c[(h&p)>>2]=g;f=0}else{g=a+32|0;if(d){d=a+20|0;mg(c[(g&p)>>2]|0,c[(d&p)>>2]|0)}else d=a+20|0;g=mh(c[(g&p)>>2]|0,k,((k|0)<0)<<31>>31)|0;c[(d&p)>>2]=g}if(!g){f=a+8|0;if(!(b[(f&o)>>1]&9312))b[(f&o)>>1]=1;else vg(a);c[(a&p)+16>>2]=0;c[(l&p)>>2]=0;f=7;break}d=c[(a&p)+32>>2]|0;do if(!d)d=lc[c[8792>>2]&127](g)|0;else{if((c[(d&p)+276>>2]|0)>>>0<=g>>>0?(c[(d&p)+280>>2]|0)>>>0>g>>>0:0){d=e[(d&o)+248>>1]|0;break}d=lc[c[8792>>2]&127](g)|0}while(0);c[(l&p)>>2]=d;q=21}else q=21;while(0);if((q|0)==21){if(((f|0)!=0?(m=c[(a&p)+16>>2]|0,(m|0)!=0):0)?(n=c[(a&p)+20>>2]|0,(m|0)!=(n|0)):0)kw(n|0,m|0,c[(a&p)+12>>2]|0)|0;d=a+8|0;f=b[(d&o)>>1]|0;if(!(f&1024))g=a+16|0;else{g=a+16|0;cc[c[(a&p)+36>>2]&31](c[(g&p)>>2]|0);f=b[(d&o)>>1]|0}c[(g&p)>>2]=c[(a&p)+20>>2];b[(d&o)>>1]=f&58367;f=0}return f|0}function fh(a,d){a=a|0;d=d|0;if((c[(a&p)+24>>2]|0)<(d|0))a=eh(a,d,0)|0;else{c[(a&p)+16>>2]=c[(a&p)+20>>2];a=a+8|0;b[(a&o)>>1]=(e[(a&o)>>1]|0)&13;a=0}return a|0} -function mq(f,g){f=f|0;g=g|0;var h=0,k=0,l=0,m=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,H=0,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,ga=0,ha=0;ha=i;i=i+192|0;if((i|0)>=(j|0))fa();ba=ha+48|0;$=ha+24|0;_=ha+160|0;I=ha+156|0;S=ha+152|0;L=ha+148|0;V=ha+144|0;O=ha+140|0;H=ha+16|0;ea=ha;y=ha+128|0;x=ha+116|0;z=ha+96|0;l=ha+88|0;ga=f+8|0;ca=c[(ga&p)>>2]|0;da=c[(f&p)>>2]|0;c[(ea&p)>>2]=c[9286];c[(ea&p)+4>>2]=c[9287];c[(ea&p)+8>>2]=c[9288];a:do switch(g|0){case 9:{l=c[(f+(da+-1<<4)&p)+16>>2]|0;k=c[(ca&p)>>2]|0;if((Sq(ca,22,37104,0,0)|0)==0?(E=Oq(ca)|0,(E|0)!=0):0){if((l|0)!=7?(F=k+20|0,(c[(F&p)>>2]|0)>0):0){l=(l|0)==9?2:1;k=E+96|0;q=0;do{wh(E,4,q,l,0)|0;c[(k&p)>>2]=c[(k&p)>>2]|1<>2]|0))}wh(E,3,0,0,0)|0}break}case 8:{y=c[(ca&p)>>2]|0;C=y+65|0;if(((a[(C&n)>>0]|0)==0?(a[(ca&n)+18>>0]|0)==0:0)?(Y=ca+64|0,(c[(Y&p)>>2]|0)==0):0){B=Oq(ca)|0;if(B){do{}while((Pq(B,61)|0)!=0);wh(B,24,0,0,0)|0;do if(!(a[(C&n)>>0]|0)){r=ca+332|0;v=c[(r&p)>>2]|0;if((v|0)==0?(c[(ca&p)+316>>2]|0)==0:0)break;s=B+32|0;t=c[(s&p)>>2]|0;if(t)c[((c[(B&p)+4>>2]|0)&p)+8>>2]=t;c[((c[(B&p)+24>>2]|0)&p)+88>>2]=t+-1;w=y+20|0;b:do if((c[(w&p)>>2]|0)>0){h=B+96|0;k=ca+328|0;l=y+16|0;m=y+145|0;q=B+4|0;u=0;while(1){x=1<>2]=c[(h&p)>>2]|x,ba=c[((c[((c[(l&p)>>2]|0)+(u<<4)&p)+12>>2]|0)&p)+4>>2]|0,xh(B,wh(B,4,u,(c[(k&p)>>2]&x|0)!=0&1,c[(ca+(u<<2)&p)+336>>2]|0)|0,ba,-14),(a[(m&n)>>0]|0)==0):0)?(N=c[(q&p)>>2]|0,(N|0)!=0):0)a[(N+(((c[(s&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=1;u=u+1|0;if((u|0)>=(c[(w&p)>>2]|0))break b;v=c[(r&p)>>2]|0}}while(0);s=ca+452|0;if((c[(s&p)>>2]|0)>0){r=ca+520|0;q=0;do{t=c[((c[((c[(r&p)>>2]|0)+(q<<2)&p)>>2]|0)&p)+60>>2]|0;c:do if(!t)t=0;else while(1){if((c[(t&p)>>2]|0)==(y|0))break c;t=c[(t&p)+24>>2]|0;if(!t){t=0;break}}while(0);xh(B,wh(B,146,0,0,0)|0,t,-10);q=q+1|0}while((q|0)<(c[(s&p)>>2]|0))}c[(s&p)>>2]=0;s=Oq(ca)|0;r=ca+396|0;if((c[(r&p)>>2]|0)>0){q=ca+400|0;m=0;do{$=c[(q&p)>>2]|0;ba=c[($+(m<<4)&p)+12>>2]|0;xh(s,wh(s,145,c[($+(m<<4)&p)>>2]|0,c[($+(m<<4)&p)+4>>2]|0,d[($+(m<<4)&n)+8>>0]|0)|0,ba,-2);m=m+1|0}while((m|0)<(c[(r&p)>>2]|0))}k=c[(ca&p)+8>>2]|0;t=c[(ca&p)+404>>2]|0;if(t){h=(c[(ca&p)>>2]|0)+16|0;u=k+32|0;v=k+4|0;do{r=c[(t&p)+8>>2]|0;s=c[(t&p)+12>>2]|0;Qq(ca,0,r,c[((c[((c[(h&p)>>2]|0)+(r<<4)&p)+12>>2]|0)&p)+72>>2]|0,54);r=s+1|0;wh(k,28,0,s,r)|0;q=c[(u&p)>>2]|0;l=s+-1|0;m=c[(c[(t&p)+4>>2]&p)>>2]|0;xh(k,wh(k,97,0,l,0)|0,m,0);m=q+9|0;wh(k,108,0,m,0)|0;wh(k,47,0,0,s)|0;wh(k,78,l,q+7|0,s)|0;l=c[(v&p)>>2]|0;if(l)a[(l+(((c[(u&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=16;wh(k,103,0,r,0)|0;wh(k,47,0,1,s)|0;wh(k,16,0,m,0)|0;wh(k,9,0,q+2|0,0)|0;wh(k,25,0,s,0)|0;wh(k,61,0,0,0)|0;t=c[(t&p)>>2]|0}while((t|0)!=0)}s=c[(ca&p)+316>>2]|0;if((s|0)!=0?(a[(ca&n)+23>>0]=0,(c[(s&p)>>2]|0)>0):0){r=s+4|0;q=0;do{ba=c[(r&p)>>2]|0;Rq(ca,c[(ba+(q*20|0)&p)>>2]|0,c[(ba+(q*20|0)&p)+16>>2]|0);q=q+1|0}while((q|0)<(c[(s&p)>>2]|0))}wh(B,16,0,1,0)|0}while(0);if((c[(Y&p)>>2]|0)==0?(a[(C&n)>>0]|0)==0:0){if((c[(ca&p)+404>>2]|0)!=0?(Z=ca+68|0,(c[(Z&p)>>2]|0)==0):0)c[(Z&p)>>2]=1;Ah(B,ca);c[(ca&p)+12>>2]=101;a[(ca&n)+16>>0]=0}else aa=48}else aa=48;if((aa|0)==48)c[(ca&p)+12>>2]=1;c[(ca&p)+68>>2]=0;c[(ca&p)+72>>2]=0;c[(ca&p)+76>>2]=0;c[(ca&p)+440>>2]=0;c[(ca&p)+332>>2]=0}break}case 5:{a[(ca&n)+450>>0]=0;c[(ca&p)+440>>2]=0;break}case 6:{a[(ca&n)+450>>0]=1;c[(ca&p)+440>>2]=0;break}case 221:case 218:case 108:case 97:case 85:case 83:case 81:case 68:case 31:case 28:{c[(ea&p)>>2]=0;break}case 27:{a[((c[(ca&p)>>2]|0)&n)+250>>0]=0;aa=f+(da<<4)+16|0;ba=c[(aa&p)+4>>2]|0;ca=ea;c[(ca&p)>>2]=c[(aa&p)>>2];c[(ca&p)+4>>2]=ba;break}case 222:case 219:case 107:case 84:case 69:case 30:case 29:{c[(ea&p)>>2]=1;break}case 32:{Vq(ca,f+(da+-2<<4)+16|0,f+(da+-1<<4)+16|0,a[(f+(da<<4)&n)+16>>0]|0,0);break}case 33:{ba=f+(da<<4)+16|0;Vq(ca,0,0,0,c[(ba&p)>>2]|0);Mk(c[(ca&p)>>2]|0,c[(ba&p)>>2]|0,1);break}case 34:{a[(ea&n)>>0]=0;break}case 35:{l=c[(f+(da<<4)&p)+20>>2]|0;k=c[(f+(da<<4)&p)+16>>2]|0;if((l|0)==5?(Fc(k,20456,5)|0)==0:0){a[(ea&n)>>0]=32;break a}a[(ea&n)>>0]=0;c[(ba&p)>>2]=l;c[(ba&p)+4>>2]=k;th(ca,20464,ba);break}case 59:{ba=f+(da<<4)+16|0;c[(x&p)>>2]=Zq(ca,97,0,0,ba)|0;ba=c[(ba&p)>>2]|0;c[(x&p)+4>>2]=ba;c[(x&p)+8>>2]=ba+(c[(f+(da<<4)&p)+20>>2]|0);Yq(ca,x);break}case 61:{k=c[(f+(da<<4)&p)+16>>2]|0;l=c[(ca&p)+484>>2]|0;if((l|0)!=0?(v=b[(l&o)+38>>1]|0,v<<16>>16>=1):0)a[((c[(l&p)+4>>2]|0)+(((v<<16>>16)+-1|0)*24|0)&n)+20>>0]=k;break}case 70:{c[(ea&p)>>2]=0;break}case 71:{c[(ea&p)>>2]=c[(f+(da+-1<<4)&p)+16>>2]&~c[(f+(da<<4)&p)+20>>2]|c[(f+(da<<4)&p)+16>>2];break}case 73:case 72:{c[(ea&p)>>2]=0;c[(ea&p)+4>>2]=0;break}case 74:{c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2];c[(ea&p)+4>>2]=255;break}case 76:{c[(ea&p)>>2]=7;break}case 75:{c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2]<<8;c[(ea&p)+4>>2]=65280;break}case 65:{br(ca,0,f+(da+-2<<4)+16|0,c[(f+(da+-1<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0);break}case 66:{k=c[(f+(da<<4)&p)+16>>2]|0;l=c[(ca&p)+484>>2]|0;if((l|0)!=0?(u=c[(l&p)+16>>2]|0,(u|0)!=0):0)a[(u&n)+24>>0]=k;break}case 67:{q=c[(ca&p)+484>>2]|0;if((q|0)!=0?(D=(b[(q&o)+38>>1]|0)+-1|0,r=c[(ca&p)>>2]|0,m=Wq(r,f+(da<<4)+16|0)|0,(m|0)!=0):0){if(!(cr(ca,m)|0)){mg(r,m);break a}s=q+4|0;mg(r,c[((c[(s&p)>>2]|0)+(D*24|0)&p)+16>>2]|0);c[((c[(s&p)>>2]|0)+(D*24|0)&p)+16>>2]=m;l=c[(q&p)+8>>2]|0;if(l)do{if((b[(c[(l&p)+4>>2]&o)>>1]|0)==(D|0))c[(c[(l&p)+32>>2]&p)>>2]=c[((c[(s&p)>>2]|0)+(D*24|0)&p)+16>>2];l=c[(l&p)+20>>2]|0}while((l|0)!=0)}break}case 13:{c[(ea&p)>>2]=7;break}case 117:case 115:case 16:case 15:case 14:{c[(ea&p)>>2]=d[(f+(da<<4)&n)+14>>0];break}case 46:{ca=c[(f+(da+-3<<4)&p)+16>>2]|0;c[(ea&p)>>2]=ca;c[(ea&p)+4>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0)-ca;break}case 47:{ca=c[(f+(da+-5<<4)&p)+16>>2]|0;c[(ea&p)>>2]=ca;c[(ea&p)+4>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0)-ca;break}case 49:{ca=c[(f+(da+-1<<4)&p)+16>>2]|0;c[(ea&p)>>2]=ca;c[(ea&p)+4>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0)-ca;break}case 92:case 54:{aa=f+(da<<4)+16|0;ba=c[(aa&p)+4>>2]|0;ca=ca+320|0;c[(ca&p)>>2]=c[(aa&p)>>2];c[(ca&p)+4>>2]=ba;break}case 57:case 55:{Yq(ca,f+(da<<4)+16|0);break}case 56:{Yq(ca,f+(da+-1<<4)+16|0);break}case 58:{c[(y&p)>>2]=Zq(ca,157,c[(f+(da<<4)&p)+16>>2]|0,0,0)|0;c[(y&p)+4>>2]=c[(f+(da+-1<<4)&p)+16>>2];c[(y&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];Yq(ca,y);break}case 18:case 17:{if((Sq(ca,22,37136,0,0)|0)==0?(B=Oq(ca)|0,(B|0)!=0):0)wh(B,3,1,0,0)|0;break}case 19:{if((Sq(ca,22,37120,0,0)|0)==0?(A=Oq(ca)|0,(A|0)!=0):0)wh(A,3,1,1,0)|0;break}case 22:{Tq(ca,0,f+(da<<4)+16|0);break}case 38:{ba=c[(f+(da+-2<<4)&p)+16>>2]|0;c[(ea&p)>>2]=ba;c[(ea&p)+4>>2]=(c[(ca&p)+504>>2]|0)-ba+(c[(ca&p)+508>>2]|0);break}case 39:{x=f+(da<<4)+16|0;v=c[(ca&p)>>2]|0;k=c[(ca&p)+484>>2]|0;d:do if(k){w=k+38|0;if((b[(w&o)>>1]|0)>=(c[(v&p)+96>>2]|0)){c[(ba&p)>>2]=c[(k&p)>>2];th(ca,36528,ba);break}u=Wq(v,x)|0;if(u){s=b[(w&o)>>1]|0;h=s<<16>>16;e:do if(s<<16>>16>0){t=a[((d[(u&n)>>0]|0)&n)+9328>>0]|0;q=c[(k&p)+4>>2]|0;r=u+1|0;l=0;while(1){m=c[(q+(l*24|0)&p)>>2]|0;if(t<<24>>24==(a[((d[(m&n)>>0]|0)&n)+9328>>0]|0)?(dd(r,m+1|0)|0)==0:0)break;l=l+1|0;if((l|0)>=(h|0))break e}c[(ba&p)>>2]=u;th(ca,36552,ba);mg(v,u);break d}else q=c[(k&p)+4>>2]|0;while(0);r=k+4|0;do if(!(h&7)){q=ro(v,q,(h*24|0)+192|0,0)|0;if(!q){mg(v,u);break d}else{c[(r&p)>>2]=q;s=b[(w&o)>>1]|0;break}}while(0);ba=s<<16>>16;aa=q+(ba*24|0)|0;c[(aa&p)>>2]=0;c[(aa&p)+4>>2]=0;c[(aa&p)+8>>2]=0;c[(aa&p)+12>>2]=0;c[(aa&p)+16>>2]=0;c[(aa&p)+20>>2]=0;c[(aa&p)>>2]=u;a[(q+(ba*24|0)&n)+21>>0]=65;a[(q+(ba*24|0)&n)+22>>0]=1;b[(w&o)>>1]=(b[(w&o)>>1]|0)+1<<16>>16}}while(0);$=x;aa=c[($&p)+4>>2]|0;ba=ea;c[(ba&p)>>2]=c[($&p)>>2];c[(ba&p)+4>>2]=aa;c[(ca&p)+324>>2]=0;break}case 62:{_q(ca,0,c[(f+(da+-1<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0,c[(f+(da+-2<<4)&p)+16>>2]|0);break}case 63:{$q(ca,0,0,0,0,c[(f+(da<<4)&p)+16>>2]|0,0,0,0,0)|0;break}case 64:{ar(ca,c[(f+(da+-1<<4)&p)+16>>2]|0);break}case 279:case 263:case 262:case 261:case 260:case 259:case 258:case 257:case 256:case 247:case 150:case 141:case 131:case 130:case 48:case 45:case 42:case 41:case 40:{aa=f+(da<<4)+16|0;ba=c[(aa&p)+4>>2]|0;ca=ea;c[(ca&p)>>2]=c[(aa&p)>>2];c[(ca&p)+4>>2]=ba;break}case 44:{l=f+(da<<4)+16|0;k=c[(ca&p)+484>>2]|0;if((k|0)!=0?(J=b[(k&o)+38>>1]|0,J<<16>>16>=1):0){ba=(J<<16>>16)+-1|0;aa=c[(k&p)+4>>2]|0;ca=Wq(c[(ca&p)>>2]|0,l)|0;c[(aa+(ba*24|0)&p)+12>>2]=ca;a[(aa+(ba*24|0)&n)+21>>0]=Xq(ca,aa+(ba*24|0)+22|0)|0}break}case 226:{l=da+-1|0;k=f+(l<<4)+16|0;r=f+(da<<4)+16|0;q=pr(c[(ca&p)>>2]|0,0,k,r)|0;s=da+-3|0;m=Zq(ca,75,c[(f+(s<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)>>2]=m;if(!m){Do(c[(ca&p)>>2]|0,q);q=0}else{c[(m&p)+20>>2]=kr(ca,0,q,0,0,0,0,0,0,0)|0;q=c[(ea&p)>>2]|0;ba=q+4|0;c[(ba&p)>>2]=c[(ba&p)>>2]|2099200;yr(ca,q)}if(c[(f+(da+-2<<4)&p)+16>>2]|0)c[(ea&p)>>2]=Zq(ca,19,q,0,0)|0;c[(ea&p)+4>>2]=c[(f+(s<<4)&p)+20>>2];h=c[(r&p)>>2]|0;if(!h)h=(c[(k&p)>>2]|0)+(c[(f+(l<<4)&p)+20>>2]|0)|0;else h=h+(c[(f+(da<<4)&p)+20>>2]|0)|0;c[(ea&p)+8>>2]=h;break}case 225:{l=da+-4|0;h=Zq(ca,75,c[(f+(l<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)>>2]=h;if(!h){Mk(c[(ca&p)>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0,1);h=0}else{c[(h&p)+20>>2]=c[(f+(da+-1<<4)&p)+16>>2];h=c[(ea&p)>>2]|0;ba=h+4|0;c[(ba&p)>>2]=c[(ba&p)>>2]|2099200;yr(ca,h)}if(c[(f+(da+-3<<4)&p)+16>>2]|0)c[(ea&p)>>2]=Zq(ca,19,h,0,0)|0;c[(ea&p)+4>>2]=c[(f+(l<<4)&p)+20>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 227:{h=Zq(ca,20,0,0,0)|0;c[(ea&p)>>2]=h;if(!h)Mk(c[(ca&p)>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0,1);else{c[(h&p)+20>>2]=c[(f+(da+-1<<4)&p)+16>>2];ba=h+4|0;c[(ba&p)>>2]=c[(ba&p)>>2]|2099200;yr(ca,h)}c[(ea&p)+4>>2]=c[(f+(da+-3<<4)&p)+16>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 228:{k=Zq(ca,136,c[(f+(da+-3<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)>>2]=k;if(!k){Nk(c[(ca&p)>>2]|0,c[(f+(da+-2<<4)&p)+16>>2]|0);Gk(c[(ca&p)>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0)}else{l=c[(f+(da+-1<<4)&p)+16>>2]|0;h=c[(f+(da+-2<<4)&p)+16>>2]|0;if(l)h=lr(ca,h,l)|0;c[(k&p)+20>>2]=h;yr(ca,c[(ea&p)>>2]|0)}c[(ea&p)+4>>2]=c[(f+(da+-4<<4)&p)+16>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 291:case 240:{c[(ea&p)>>2]=2;break}case 241:{c[(ea&p)>>2]=0;break}case 239:{$q(ca,f+(da+-7<<4)+16|0,f+(da+-6<<4)+16|0,pr(c[(ca&p)>>2]|0,0,f+(da+-4<<4)+16|0,0)|0,c[(f+(da+-2<<4)&p)+16>>2]|0,c[(f+(da+-10<<4)&p)+16>>2]|0,f+(da+-11<<4)+16|0,c[(f+(da<<4)&p)+16>>2]|0,0,c[(f+(da+-8<<4)&p)+16>>2]|0)|0;break}case 229:{c[(ea&p)>>2]=lr(ca,lr(ca,c[(f+(da+-4<<4)&p)+16>>2]|0,c[(f+(da+-2<<4)&p)+16>>2]|0)|0,c[(f+(da<<4)&p)+16>>2]|0)|0;break}case 230:{c[(ea&p)>>2]=lr(ca,lr(ca,0,c[(f+(da+-2<<4)&p)+16>>2]|0)|0,c[(f+(da<<4)&p)+16>>2]|0)|0;break}case 237:{c[(ea&p)>>2]=lr(ca,c[(f+(da+-2<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0)|0;break}case 238:{c[(ea&p)>>2]=lr(ca,0,c[(f+(da<<4)&p)+16>>2]|0)|0;break}case 245:{h=lr(ca,0,vr(ca,0,f+(da+-1<<4)+16|0,1)|0)|0;c[(ea&p)>>2]=h;mr(ca,h,f+(da+-2<<4)+16|0,1);if(h){if((c[(h&p)>>2]|0)>(c[((c[(ca&p)>>2]|0)&p)+96>>2]|0)){c[(ba&p)>>2]=20632;th(ca,34544,ba)}a[((c[(h&p)+4>>2]|0)+(((c[(h&p)>>2]|0)+-1|0)*20|0)&n)+12>>0]=c[(f+(da<<4)&p)+16>>2]}break}case 244:{h=vr(ca,0,f+(da+-1<<4)+16|0,1)|0;h=lr(ca,c[(f+(da+-4<<4)&p)+16>>2]|0,h)|0;c[(ea&p)>>2]=h;mr(ca,h,f+(da+-2<<4)+16|0,1);if(h){if((c[(h&p)>>2]|0)>(c[((c[(ca&p)>>2]|0)&p)+96>>2]|0)){c[(ba&p)>>2]=20632;th(ca,34544,ba)}a[((c[(h&p)+4>>2]|0)+(((c[(h&p)>>2]|0)+-1|0)*20|0)&n)+12>>0]=c[(f+(da<<4)&p)+16>>2]}break}case 248:{v=c[(f+(da<<4)&p)+16>>2]|0;s=c[(f+(da+-1<<4)&p)+16>>2]|0;u=c[(ca&p)>>2]|0;do if((a[(u&n)+65>>0]|0)==0?(Gn(ca)|0)==0:0){r=v+12|0;k=bq(u,c[(v&p)+16>>2]|0,c[(r&p)>>2]|0)|0;if(!k){if(!s){c[(ba&p)>>2]=v;c[(ba&p)+4>>2]=0;th(ca,33056,ba)}else zr(ca,c[(r&p)>>2]|0);a[(ca&n)+17>>0]=1;break}if(a[(k&n)+51>>0]&3){c[(ba&p)>>2]=0;th(ca,33080,ba);break}s=c[(k&p)+24>>2]|0;f:do if(s){r=c[(u&p)+20>>2]|0;if((r|0)>0){q=c[(u&p)+16>>2]|0;t=0;while(1){m=t+1|0;if((c[(q+(t<<4)&p)+12>>2]|0)==(s|0)){m=t;break f}if((m|0)<(r|0))t=m;else break}}else m=0}else m=-1e6;while(0);s=c[(k&p)+12>>2]|0;r=u+16|0;q=c[((c[(r&p)>>2]|0)+(m<<4)&p)>>2]|0;l=(m|0)==1?13184:13208;if(((Sq(ca,9,l,0,q)|0)==0?(Sq(ca,(m|0)==0?10:12,c[(k&p)>>2]|0,c[(s&p)>>2]|0,q)|0)==0:0)?(K=Oq(ca)|0,(K|0)!=0):0){aa=c[(ca&p)+408>>2]|0;aa=(aa|0)==0?ca:aa;Ar(ca,m);$=aa+328|0;c[($&p)>>2]=c[($&p)>>2]|1<>0]=d[(aa&n)>>0]|1;aa=c[(k&p)>>2]|0;c[(ba&p)>>2]=c[((c[(r&p)>>2]|0)+(m<<4)&p)>>2];c[(ba&p)+4>>2]=l;c[(ba&p)+8>>2]=aa;Br(ca,33160,ba);Cr(ca,m,28536,c[(k&p)>>2]|0);Dr(ca,m);Er(ca,c[(k&p)+40>>2]|0,m);ca=c[(k&p)>>2]|0;xh(K,wh(K,125,m,0,0)|0,ca,0)}}while(0);Do(u,v);break}case 246:{c[(ea&p)>>2]=0;c[(ea&p)+4>>2]=0;break}case 250:case 249:{h=Oq(ca)|0;if(h){wh(h,13,0,0,0)|0;ca=h+96|0;c[(ca&p)>>2]=c[(ca&p)>>2]|1}break}case 251:{Fr(ca,f+(da+-1<<4)+16|0,f+(da<<4)+16|0,0,0);break}case 252:{Fr(ca,f+(da+-3<<4)+16|0,f+(da+-2<<4)+16|0,f+(da<<4)+16|0,0);break}case 253:{Fr(ca,f+(da+-4<<4)+16|0,f+(da+-3<<4)+16|0,f+(da+-1<<4)+16|0,0);break}case 254:{Fr(ca,f+(da+-3<<4)+16|0,f+(da+-2<<4)+16|0,f+(da<<4)+16|0,1);break}case 255:{Fr(ca,f+(da+-4<<4)+16|0,f+(da+-3<<4)+16|0,f+(da+-1<<4)+16|0,1);break}case 264:{h=c[(f+(da+-3<<4)&p)+16>>2]|0;l=(c[(f+(da<<4)&p)+16>>2]|0)-h+(c[(f+(da<<4)&p)+20>>2]|0)|0;k=c[(f+(da+-1<<4)&p)+16>>2]|0;aa=ca+488|0;z=c[(aa&p)>>2]|0;A=c[(ca&p)>>2]|0;c[(aa&p)>>2]=0;g:do if((c[(ca&p)+64>>2]|0)==0&(z|0)!=0){y=c[(z&p)>>2]|0;m=z+20|0;v=c[(m&p)>>2]|0;h:do if(v){u=c[(A&p)+20>>2]|0;if((u|0)>0){s=c[(A&p)+16>>2]|0;q=0;while(1){r=q+1|0;if((c[(s+(q<<4)&p)+12>>2]|0)==(v|0))break h;if((r|0)<(u|0))q=r;else{q=r;break}}}else q=0}else q=-1e6;while(0);c[(z&p)+28>>2]=k;x=(k|0)==0;if(!x){s=k;do{c[(s&p)+4>>2]=z;s=c[(s&p)+32>>2]|0}while((s|0)!=0)}c[(_&p)>>2]=y;if(!y)s=0;else{s=y;while(1)if(!(a[(s&n)>>0]|0))break;else s=s+1|0;s=s-y&1073741823}c[(_&p)+4>>2]=s;c[($&p)>>2]=ca;w=A+16|0;v=c[(w&p)>>2]|0;c[($&p)+12>>2]=c[(v+(q<<4)&p)>>2];c[($&p)+4>>2]=c[(v+(q<<4)&p)+12>>2];c[($&p)+16>>2]=10720;c[($&p)+20>>2]=_;v=(q|0)==1;c[($&p)+8>>2]=v&1;if(!x)do{if(fr($,c[(k&p)+8>>2]|0)|0){k=0;l=z;break g}if(Gr($,c[(k&p)+20>>2]|0)|0){k=0;l=z;break g}if(Hr($,c[(k&p)+24>>2]|0)|0){k=0;l=z;break g}k=c[(k&p)+32>>2]|0}while((k|0)!=0);if(!(Gr($,c[(z&p)+12>>2]|0)|0)){s=A+145|0;if(!(a[(s&n)>>0]|0)){r=Oq(ca)|0;if(!r){k=0;l=z;break}aa=c[(ca&p)+408>>2]|0;Ar(ca,q);aa=((aa|0)==0?ca:aa)+328|0;c[(aa&p)>>2]=c[(aa&p)>>2]|1<>0]=0}else t=0;aa=c[(z&p)+4>>2]|0;c[(ba&p)>>2]=c[((c[(w&p)>>2]|0)+(q<<4)&p)>>2];c[(ba&p)+4>>2]=v?13184:13208;c[(ba&p)+8>>2]=y;c[(ba&p)+12>>2]=aa;c[(ba&p)+16>>2]=t;Br(ca,30008,ba);mg(A,t);Dr(ca,q);c[(ba&p)>>2]=y;Ir(r,q,uh(A,30072,ba)|0);if(!(a[(s&n)>>0]|0)){k=0;l=z;break}}l=Ik((c[((c[(w&p)>>2]|0)+(q<<4)&p)+12>>2]|0)+40|0,y,z)|0;if(l){a[(A&n)+65>>0]=1;k=0;break}k=c[(m&p)>>2]|0;if((k|0)==(c[(z&p)+24>>2]|0)){k=bn(k+8|0,c[(z&p)+4>>2]|0,ba)|0;if(!k)k=0;else k=c[(k&p)+8>>2]|0;k=k+64|0;c[(z&p)+32>>2]=c[(k&p)>>2];c[(k&p)>>2]=z;k=0}else k=0}else{k=0;l=z}}else l=z;while(0);jg(A,l);Fk(A,k);break}case 265:{D=f+(da+-7<<4)+16|0;C=da+-6|0;E=f+(C<<4)+16|0;r=c[(f+(da+-5<<4)&p)+16>>2]|0;F=da+-4|0;B=c[(f+(F<<4)&p)+16>>2]|0;F=c[(f+(F<<4)&p)+20>>2]|0;H=c[(f+(da+-2<<4)&p)+16>>2]|0;I=c[(f+(da<<4)&p)+16>>2]|0;k=c[(f+(da+-8<<4)&p)+16>>2]|0;J=c[(ca&p)>>2]|0;z=(c[(f+(da+-10<<4)&p)+16>>2]|0)!=0;do if(z)if(!(c[(f+(C<<4)&p)+20>>2]|0)){c[($&p)>>2]=D;if(!H){s=0;t=0;break}else{v=1;aa=483;break}}else{th(ca,29664,ba);s=0;t=0;break}else{v=er(ca,D,E,$)|0;if((v|0)>-1&(H|0)!=0)aa=483;else{s=0;t=0}}while(0);do if((aa|0)==483){h=J+65|0;if(!(a[(h&n)>>0]|0)){x=J+145|0;if((a[(x&n)>>0]|0)!=0&(v|0)!=1){aa=H+12|0;mg(J,c[(aa&p)>>2]|0);c[(aa&p)>>2]=0}w=Jr(ca,H)|0;if((a[(x&n)>>0]|0)==0?((w|0)!=0?(c[(f+(C<<4)&p)+20>>2]|0)==0:0):0)v=(c[(w&p)+68>>2]|0)==(c[((c[(J&p)+16>>2]|0)&p)+28>>2]|0)?1:v;if((a[(h&n)>>0]|0)==0?(R=c[($&p)>>2]|0,aa=c[(ca&p)>>2]|0,c[(_&p)>>2]=ca,aa=c[(aa&p)+16>>2]|0,c[(_&p)+12>>2]=c[(aa+(v<<4)&p)>>2],c[(_&p)+4>>2]=c[(aa+(v<<4)&p)+12>>2],c[(_&p)+16>>2]=10720,c[(_&p)+20>>2]=R,c[(_&p)+8>>2]=(v|0)==1&1,(Kr(_,H)|0)==0):0){x=Jr(ca,H)|0;if(!x){if((a[(J&n)+144>>0]|0)!=1){s=0;t=0;break}a[(J&n)+146>>0]=1;s=0;t=0;break}if(a[(x&n)+44>>0]&16){th(ca,29712,ba);s=0;t=0;break}t=Wq(J,R)|0;if(t)if(!(Lr(ca,t)|0)){A=J+16|0;aa=bn((c[((c[(A&p)>>2]|0)+(v<<4)&p)+12>>2]|0)+40|0,t,S)|0;if((aa|0)!=0?(c[(aa&p)+8>>2]|0)!=0:0)if(!k){c[(ba&p)>>2]=R;th(ca,29760,ba);s=0;break}else{Ar(ca,v);s=0;break}y=c[(x&p)>>2]|0;if(!(Fc(y,25568,7)|0)){th(ca,29792,ba);s=ca+64|0;c[(s&p)>>2]=(c[(s&p)>>2]|0)+1;s=0;break}u=c[(x&p)+12>>2]|0;if((u|0)!=0&(r|0)!=49){c[(ba&p)>>2]=(r|0)==35?29872:29880;c[(ba&p)+4>>2]=H;c[(ba&p)+8>>2]=0;th(ca,29832,ba);s=0;break}q=(r|0)==49;if((u|0)==0&q){c[(ba&p)>>2]=H;c[(ba&p)+4>>2]=0;th(ca,29888,ba);s=0;break}m=x+68|0;x=c[(m&p)>>2]|0;i:do if(x){w=c[(J&p)+20>>2]|0;if((w|0)>0){k=c[(A&p)>>2]|0;l=0;while(1){h=l+1|0;if((c[(k+(l<<4)&p)+12>>2]|0)==(x|0)){h=l;break i}if((h|0)<(w|0))l=h;else break}}else h=0}else h=-1e6;while(0);x=c[(A&p)>>2]|0;k=c[(x+(h<<4)&p)>>2]|0;if(z)w=c[(x&p)+16>>2]|0;else w=k;x=(h|0)==1;if((Sq(ca,x|z?5:7,t,y,w)|0)==0?(Sq(ca,18,x?13184:13208,0,k)|0)==0:0){s=mh(J,36,0)|0;if(!s){s=0;break}y=s+0|0;k=y+36|0;do{a[(y&n)>>0]=0;y=y+1|0}while((y|0)<(k|0));c[(s&p)>>2]=t;c[(s&p)+4>>2]=kh(J,c[(H&p)+16>>2]|0)|0;c[(s&p)+20>>2]=c[((c[(A&p)>>2]|0)+(v<<4)&p)+12>>2];c[(s&p)+24>>2]=c[(m&p)>>2];a[(s&n)+8>>0]=B;a[(s&n)+9>>0]=q|(r|0)==35?1:2;c[(s&p)+12>>2]=Mr(J,I,1,0)|0;c[(s&p)+16>>2]=Nr(J,F)|0;c[(ca&p)+488>>2]=s;t=0}else s=0}else s=0;else{s=0;t=0}}else{s=0;t=0}}else{s=0;t=0}}while(0);mg(J,t);Do(J,H);Hk(J,F);Gk(J,I);if(!(c[(ca&p)+488>>2]|0))jg(J,s);if(!(c[(f+(C<<4)&p)+20>>2]|0)){aa=D;ba=c[(aa&p)+4>>2]|0;ca=ea;c[(ca&p)>>2]=c[(aa&p)>>2];c[(ca&p)+4>>2]=ba;break a}else{aa=E;ba=c[(aa&p)+4>>2]|0;ca=ea;c[(ca&p)>>2]=c[(aa&p)>>2];c[(ca&p)+4>>2]=ba;break a}}case 269:case 266:{c[(ea&p)>>2]=35;break}case 267:{c[(ea&p)>>2]=31;break}case 268:{c[(ea&p)>>2]=49;break}case 284:{l=c[(ca&p)>>2]|0;k=c[(f+(da+-1<<4)&p)+16>>2]|0;h=c[(f+(da<<4)&p)+16>>2]|0;m=a[(f+(da+-5<<4)&n)+16>>0]|0;q=Or(l,110,f+(da+-4<<4)+16|0)|0;if(q){c[(q&p)+24>>2]=Pr(l,k,1)|0;c[(q&p)+20>>2]=Mr(l,h,1,0)|0;a[(q&n)+1>>0]=m}Nk(l,k);Gk(l,h);c[(ea&p)>>2]=q;break}case 271:case 270:{c[(ea&p)>>2]=d[(f+(da<<4)&n)+14>>0];c[(ea&p)+4>>2]=0;break}case 272:{c[(ea&p)>>2]=110;c[(ea&p)+4>>2]=c[(f+(da<<4)&p)+16>>2];break}case 296:case 275:{c[(ea&p)>>2]=0;break}case 297:case 276:{c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2];break}case 277:{ba=f+(da+-1<<4)+16|0;ca=f+(da+-2<<4)+16|0;c[((c[((c[(ca&p)>>2]|0)&p)+36>>2]|0)&p)+32>>2]=c[(ba&p)>>2];c[((c[(ca&p)>>2]|0)&p)+36>>2]=c[(ba&p)>>2];c[(ea&p)>>2]=c[(ca&p)>>2];break}case 278:{ca=f+(da+-1<<4)+16|0;ba=c[(ca&p)>>2]|0;c[(ba&p)+36>>2]=ba;c[(ea&p)>>2]=c[(ca&p)>>2];break}case 282:{th(ca,20736,ba);break}case 280:{_=f+(da<<4)+16|0;$=c[(_&p)+4>>2]|0;aa=ea;c[(aa&p)>>2]=c[(_&p)>>2];c[(aa&p)+4>>2]=$;th(ca,20640,ba);break}case 283:{th(ca,20824,ba);break}case 286:{h=c[(ca&p)>>2]|0;k=c[(f+(da<<4)&p)+16>>2]|0;l=Or(h,109,f+(da+-2<<4)+16|0)|0;if(l){c[(l&p)+20>>2]=Mr(h,k,1,0)|0;a[(l&n)+1>>0]=10}Gk(h,k);c[(ea&p)>>2]=l;break}case 287:{l=c[(ca&p)>>2]|0;q=c[(f+(da<<4)&p)+16>>2]|0;h=mh(l,40,0)|0;if(!h){Mk(l,q,1);h=0}else{y=h+0|0;k=y+40|0;do{a[(y&n)>>0]=0;y=y+1|0}while((y|0)<(k|0));a[(h&n)>>0]=119;c[(h&p)+8>>2]=q;a[(h&n)+1>>0]=10}c[(ea&p)>>2]=h;break}case 285:{q=c[(ca&p)>>2]|0;m=c[(f+(da+-1<<4)&p)+16>>2]|0;l=c[(f+(da<<4)&p)+16>>2]|0;k=a[(f+(da+-4<<4)&n)+16>>0]|0;h=Or(q,108,f+(da+-2<<4)+16|0)|0;if(!h)Hk(q,m);else{c[(h&p)+8>>2]=gr(q,l,1)|0;c[(h&p)+28>>2]=m;a[(h&n)+1>>0]=k}Mk(q,l,1);c[(ea&p)>>2]=h;break}case 288:{h=Zq(ca,57,0,0,0)|0;c[(ea&p)>>2]=h;if(h)a[(h&n)+1>>0]=4;c[(ea&p)+4>>2]=c[(f+(da+-3<<4)&p)+16>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 289:{h=Zq(ca,57,0,0,f+(da+-1<<4)+16|0)|0;c[(ea&p)>>2]=h;if(h)a[(h&n)+1>>0]=c[(f+(da+-3<<4)&p)+16>>2];c[(ea&p)+4>>2]=c[(f+(da+-5<<4)&p)+16>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 290:{c[(ea&p)>>2]=1;break}case 292:{c[(ea&p)>>2]=3;break}case 293:{k=c[(f+(da<<4)&p)+16>>2]|0;h=c[(f+(da+-1<<4)&p)+16>>2]|0;w=c[(ca&p)>>2]|0;do if((a[(w&n)+65>>0]|0)==0?(Gn(ca)|0)==0:0){x=c[(k&p)+12>>2]|0;v=c[(k&p)+16>>2]|0;u=w+20|0;if((c[(u&p)>>2]|0)>0){q=(x|0)==0;m=w+16|0;l=0;s=0;do{r=(l|0)<2^l;t=c[(m&p)>>2]|0;if(!(!q?(dd(c[(t+(r<<4)&p)>>2]|0,x)|0)!=0:0)){t=bn((c[(t+(r<<4)&p)+12>>2]|0)+40|0,v,L)|0;if(t){s=c[(t&p)+8>>2]|0;if(s)break}else s=0}l=l+1|0}while((l|0)<(c[(u&p)>>2]|0));if(s){Qr(ca,s);break}}if(!h){c[(ba&p)>>2]=k;c[(ba&p)+4>>2]=0;th(ca,29600,ba)}else zr(ca,x);a[(ca&n)+17>>0]=1}while(0);Do(w,k);break}case 294:{ba=c[(f+(da+-3<<4)&p)+16>>2]|0;Rr(ca,24,29360,ba,ba,c[(f+(da+-1<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0);break}case 303:{Tr(ca,f+(da+-1<<4)+16|0,f+(da<<4)+16|0);break}case 304:{z=c[(f+(da+-3<<4)&p)+16>>2]|0;x=f+(da<<4)+16|0;y=c[(ca&p)>>2]|0;k=y+24|0;l=c[(k&p)>>2]|0;do if((a[(y&n)+65>>0]|0)==0?(X=Ur(ca,0,z+8|0)|0,(X|0)!=0):0){t=c[(ca&p)>>2]|0;A=X+68|0;v=c[(A&p)>>2]|0;j:do if(v){u=c[(t&p)+20>>2]|0;if((u|0)>0){t=c[(t&p)+16>>2]|0;r=0;while(1){s=r+1|0;if((c[(t+(r<<4)&p)+12>>2]|0)==(v|0)){s=r;break j}if((s|0)<(u|0))r=s;else break}}else s=0}else s=-1e6;while(0);h=c[((c[(y&p)+16>>2]|0)+(s<<4)&p)>>2]|0;c[(k&p)>>2]=c[(k&p)>>2]|2097152;q=Wq(y,x)|0;if(q){if((_h(y,q,h)|0)==0?(bq(y,q,h)|0)==0:0){if(Vr(ca,c[(X&p)>>2]|0)|0)break;if(Lr(ca,q)|0)break;t=c[(X&p)>>2]|0;if(c[(X&p)+12>>2]|0){c[(ba&p)>>2]=t;th(ca,26088,ba);break}if(Sq(ca,26,h,t,0)|0)break;if(hr(ca,X)|0)break;if(!(a[(X&n)+44>>0]&16))m=0;else{t=c[(X&p)+60>>2]|0;k:do if(!t)t=0;else while(1){if((c[(t&p)>>2]|0)==(y|0))break k;t=c[(t&p)+24>>2]|0;if(!t){t=0;break}}while(0);m=(c[((c[(c[(t&p)+8>>2]&p)>>2]|0)&p)+76>>2]|0)==0?0:t}t=Oq(ca)|0;if(!t)break;aa=(m|0)!=0;r=ca+408|0;$=c[(r&p)>>2]|0;$=($|0)==0?ca:$;Ar(ca,s);_=$+328|0;c[(_&p)>>2]=c[(_&p)>>2]|1<>0]=d[($&n)>>0]|aa&1;Dr(ca,s);if(aa){$=ca+72|0;aa=(c[($&p)>>2]|0)+1|0;c[($&p)>>2]=aa;xh(t,wh(t,97,0,aa,0)|0,q,0);xh(t,wh(t,152,aa,0,0)|0,m,-10);aa=c[(r&p)>>2]|0;a[(((aa|0)==0?ca:aa)&n)+21>>0]=1}x=c[(X&p)>>2]|0;w=Nn(x,-1)|0;do if((c[(k&p)>>2]&524288|0)!=0?(T=bn((c[(A&p)>>2]|0)+56|0,x,V)|0,(T|0)!=0):0){t=c[(T&p)+8>>2]|0;if(!t)break;r=t;t=0;do{t=Wr(c[(ca&p)>>2]|0,t,c[(c[(r&p)>>2]&p)>>2]|0)|0;r=c[(r&p)+12>>2]|0}while((r|0)!=0);if(!t)break;c[(ba&p)>>2]=h;c[(ba&p)+4>>2]=(s|0)==1?13184:13208;c[(ba&p)+8>>2]=x;c[(ba&p)+12>>2]=q;c[(ba&p)+16>>2]=t;Br(ca,26120,ba);mg(y,t)}while(0);c[(ba&p)>>2]=h;c[(ba&p)+4>>2]=(s|0)==1?13184:13208;c[(ba&p)+8>>2]=q;c[(ba&p)+12>>2]=q;c[(ba&p)+16>>2]=q;c[(ba&p)+20>>2]=q;c[(ba&p)+24>>2]=q;c[(ba&p)+28>>2]=w;c[(ba&p)+32>>2]=x;Br(ca,26192,ba);if(_h(y,26576,h)|0){aa=c[(X&p)>>2]|0;c[(ba&p)>>2]=h;c[(ba&p)+4>>2]=q;c[(ba&p)+8>>2]=aa;Br(ca,26592,ba)}s=Xr(ca,X)|0;if(s){c[(ba&p)>>2]=q;c[(ba&p)+4>>2]=q;c[(ba&p)+8>>2]=s;Br(ca,26656,ba);mg(y,s)}do if(c[(k&p)>>2]&524288){s=bn((c[(A&p)>>2]|0)+56|0,c[(X&p)>>2]|0,ba)|0;if(!s)break;s=c[(s&p)+8>>2]|0;if(!s)break;do{r=c[(s&p)>>2]|0;if((r|0)!=(X|0))Yr(ca,r,c[(r&p)>>2]|0);s=c[(s&p)+12>>2]|0}while((s|0)!=0)}while(0);Yr(ca,X,q);break}c[(ba&p)>>2]=q;th(ca,26024,ba)}else q=0}else q=0;while(0);Do(y,z);mg(y,q);c[(k&p)>>2]=l;break}case 295:{ba=c[(f+(da<<4)&p)+16>>2]|0;Rr(ca,25,29176,ba,0,0,ba);break}case 300:{Sr(ca,0,0);break}case 302:{Tr(ca,0,0);break}case 301:{Sr(ca,f+(da+-1<<4)+16|0,f+(da<<4)+16|0);break}case 305:{y=c[(ca&p)>>2]|0;if((c[(ca&p)+64>>2]|0)==0?(M=y+65|0,(a[(M&n)>>0]|0)==0):0){l=c[(ca&p)+484>>2]|0;t=c[(l&p)+68>>2]|0;l:do if(t){s=c[(y&p)+20>>2]|0;if((s|0)>0){r=c[(y&p)+16>>2]|0;m=0;while(1){q=m+1|0;if((c[(r+(m<<4)&p)+12>>2]|0)==(t|0)){A=m;break l}if((q|0)<(s|0))m=q;else{A=q;break}}}else A=0}else A=-1e6;while(0);h=c[((c[(y&p)+16>>2]|0)+(A<<4)&p)>>2]|0;k=(c[(l&p)>>2]|0)+16|0;u=(b[(l&o)+38>>1]|0)+-1|0;s=c[(l&p)+4>>2]|0;t=c[(s+(u*24|0)&p)+4>>2]|0;z=_h(y,k,h)|0;if(!(Sq(ca,26,h,c[(z&p)>>2]|0,0)|0)){if(!t)v=0;else v=(a[(t&n)>>0]|0)==101?0:t;if(a[(s+(u*24|0)&n)+23>>0]&1){th(ca,25608,ba);break a}if(c[(l&p)+8>>2]|0){th(ca,25640,ba);break a}x=y+24|0;if((c[(x&p)>>2]&524288|0)!=0?(c[(l&p)+16>>2]|0)!=0&(v|0)!=0:0){th(ca,25672,ba);break a}w=(v|0)!=0;if(!((a[(s+(u*24|0)&n)+20>>0]|0)==0|w)){th(ca,25736,ba);break a}do if(w){c[(O&p)>>2]=0;if(Zr(y,v,1,65,O)|0){a[(M&n)>>0]=1;break a}t=c[(O&p)>>2]|0;if(!t){th(ca,25792,ba);break a}else{Mh(t);break}}while(0);t=c[(f+(da<<4)&p)+16>>2]|0;s=f+(da<<4)+20|0;r=c[(s&p)>>2]|0;if((t|0)!=0?(U=jw(r|0,0,1,0)|0,U=mh(y,U,G)|0,(U|0)!=0):0){kw(U|0,t|0,r|0)|0;a[(U+r&n)>>0]=0;t=(c[(s&p)>>2]|0)+-1|0;s=c[(x&p)>>2]|0;m:do if((t|0)>0){t=U+t|0;do{$=a[(t&n)>>0]|0;if($<<24>>24!=59?(a[($&255&n)+10368>>0]&1)==0:0)break m;a[(t&n)>>0]=0;t=t+-1|0}while(t>>>0>U>>>0)}while(0);c[(x&p)>>2]=c[(x&p)>>2]|2097152;$=c[(l&p)+48>>2]|0;c[(ba&p)>>2]=h;c[(ba&p)+4>>2]=(A|0)==1?13184:13208;c[(ba&p)+8>>2]=$;c[(ba&p)+12>>2]=U;c[(ba&p)+16>>2]=$+1;c[(ba&p)+20>>2]=k;Br(ca,25840,ba);mg(y,U);c[(x&p)>>2]=s}t=w?3:2;v=Oq(ca)|0;if(v){s=ca+19|0;q=a[(s&n)>>0]|0;do if(q<<24>>24){ba=q+-1<<24>>24;a[(s&n)>>0]=ba;r=c[(ca+((ba&255)<<2)&p)+24>>2]|0;if(!(ba<<24>>24)){s=c[(ca&p)+72>>2]|0;aa=663;break}else{k=q+-2<<24>>24;a[(s&n)>>0]=k;k=c[(ca+((k&255)<<2)&p)+24>>2]|0;break}}else{r=ca+72|0;s=(c[(r&p)>>2]|0)+1|0;c[(r&p)>>2]=s;r=s;aa=663}while(0);if((aa|0)==663){k=s+1|0;c[(ca&p)+72>>2]=k}wh(v,51,A,r,2)|0;m=v+96|0;c[(m&p)>>2]=c[(m&p)>>2]|1<>2]|0;s=v+32|0;if(q)a[(q+(((c[(s&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=-112;wh(v,52,A,2,k)|0;s=c[(s&p)>>2]|0;if(s>>>0>m>>>0)c[((c[(l&p)>>2]|0)+(m*20|0)&p)+8>>2]=s;c[((c[(v&p)+24>>2]|0)&p)+88>>2]=s+-1;_r(ca,r);_r(ca,k)}Yr(ca,z,c[(z&p)>>2]|0)}}break}case 306:{w=c[(ca&p)>>2]|0;a[(w&n)+250>>0]=0;h=c[(f+(da<<4)&p)+16>>2]|0;x=w+65|0;do if((a[(x&n)>>0]|0)==0?(Q=Ur(ca,0,h+8|0)|0,(Q|0)!=0):0){if(a[(Q&n)+44>>0]&16){th(ca,25400,ba);break}if(c[(Q&p)+12>>2]|0){th(ca,25440,ba);break}if(!(Vr(ca,c[(Q&p)>>2]|0)|0)){s=c[(Q&p)+68>>2]|0;n:do if(s){r=c[(w&p)+20>>2]|0;if((r|0)>0){q=c[(w&p)+16>>2]|0;t=0;while(1){m=t+1|0;if((c[(q+(t<<4)&p)+12>>2]|0)==(s|0)){m=t;break n}if((m|0)<(r|0))t=m;else break}}else m=0}else m=-1e6;while(0);v=mh(w,76,0)|0;if(v){y=v+0|0;k=y+76|0;do{a[(y&n)>>0]=0;y=y+1|0}while((y|0)<(k|0));c[(ca&p)+484>>2]=v;r=v+40|0;b[(r&o)>>1]=1;t=b[(Q&o)+38>>1]|0;q=v+38|0;b[(q&o)>>1]=t;t=((((t<<16>>16)+-1|0)/8|0)*192|0)+192|0;s=mh(w,t,0)|0;if(s)fw(s|0,0,t|0)|0;t=v+4|0;c[(t&p)>>2]=s;c[(ba&p)>>2]=c[(Q&p)>>2];ba=uh(w,25472,ba)|0;c[(v&p)>>2]=ba;s=c[(t&p)>>2]|0;if((s|0)==0|(ba|0)==0){a[(x&n)>>0]=1;break}kw(s|0,c[(Q&p)+4>>2]|0,(b[(q&o)>>1]|0)*24|0)|0;if((b[(q&o)>>1]|0)>0){s=0;do{ba=c[(t&p)>>2]|0;aa=ba+(s*24|0)|0;c[(aa&p)>>2]=kh(w,c[(aa&p)>>2]|0)|0;ba=ba+(s*24|0)+4|0;s=s+1|0;c[(ba&p)>>2]=0;c[(ba&p)+4>>2]=0;c[(ba&p)+8>>2]=0;c[(ba&p)+12>>2]=0}while((s|0)<(b[(q&o)>>1]|0))}c[(v&p)+68>>2]=c[((c[(w&p)+16>>2]|0)+(m<<4)&p)+12>>2];c[(v&p)+48>>2]=c[(Q&p)+48>>2];b[(r&o)>>1]=1;ba=c[(ca&p)+408>>2]|0;Ar(ca,m);ba=((ba|0)==0?ca:ba)+328|0;c[(ba&p)>>2]=c[(ba&p)>>2]|1<>2]|0);t=c[(ca&p)+484>>2]|0;if(t){h=c[(ca&p)>>2]|0;s=c[(t&p)+68>>2]|0;o:do if(s){r=c[(h&p)+20>>2]|0;if((r|0)>0){m=c[(h&p)+16>>2]|0;l=0;while(1){q=l+1|0;if((c[(m+(l<<4)&p)+12>>2]|0)==(s|0)){q=l;break o}if((q|0)<(r|0))l=q;else break}}else q=0}else q=-1e6;while(0);l=t+44|0;a[(l&n)>>0]=d[(l&n)>>0]|16;c[(t&p)+52>>2]=0;as(h,t,Wq(h,k)|0);as(h,t,0);as(h,t,kh(h,c[(t&p)>>2]|0)|0);c[(ca&p)+500>>2]=(c[(k&p)>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0)-(c[(ca&p)+496>>2]|0);l=c[(t&p)+56>>2]|0;if(l)Sq(ca,29,c[(t&p)>>2]|0,c[(l&p)>>2]|0,c[((c[((c[(ca&p)>>2]|0)&p)+16>>2]|0)+(q<<4)&p)>>2]|0)|0}break}case 322:{c[(ea&p)>>2]=0;break}case 324:case 323:{c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2];break}case 325:{c[(ea&p)>>2]=cs(ca,0,f+(da+-5<<4)+16|0,c[(f+(da+-4<<4)&p)+16>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0)|0;break}case 326:{c[(ea&p)>>2]=cs(ca,c[(f+(da+-7<<4)&p)+16>>2]|0,f+(da+-5<<4)+16|0,c[(f+(da+-4<<4)&p)+16>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0)|0;break}case 314:{bs(ca);c[(ca&p)+512>>2]=0;c[(ca&p)+516>>2]=0;break}case 318:case 317:case 316:{l=ca+512|0;k=c[(l&p)>>2]|0;h=c[(f+(da<<4)&p)+16>>2]|0;if(!k){c[(l&p)>>2]=h;h=c[(f+(da<<4)&p)+20>>2]|0}else h=h+(c[(f+(da<<4)&p)+20>>2]|0)-k|0;c[(ca&p)+516>>2]=h;break}case 77:{c[(ea&p)>>2]=8;break}case 78:{c[(ea&p)>>2]=9;break}case 79:{c[(ea&p)>>2]=6;break}case 80:{c[(ea&p)>>2]=0;break}case 103:case 100:case 98:case 82:{c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2];break}case 86:{c[(ea&p)+4>>2]=0;c[(ea&p)>>2]=0;break}case 87:{aa=f+(da+-1<<4)+16|0;ba=c[(aa&p)+4>>2]|0;ca=ea;c[(ca&p)>>2]=c[(aa&p)>>2];c[(ca&p)+4>>2]=ba;break}case 90:{c[(ca&p)+324>>2]=0;break}case 109:{h=da+-7|0;r=f+(da+-3<<4)+16|0;q=f+(da+-2<<4)+16|0;x=c[(f+(da<<4)&p)+16>>2]|0;t=c[(f+(da+-6<<4)&p)+16>>2]|0;s=c[(f+(da+-4<<4)&p)+16>>2]|0;c[(I&p)>>2]=0;w=c[(ca&p)>>2]|0;if((c[(ca&p)+440>>2]|0)>0){th(ca,35440,ba);Mk(w,x,1);break a}Uq(ca,r,q,t,1,0,s);l=c[(ca&p)+484>>2]|0;if((l|0)!=0?(c[(ca&p)+64>>2]|0)==0:0){er(ca,r,q,I)|0;t=c[(l&p)+68>>2]|0;p:do if(t){r=c[(w&p)+20>>2]|0;if((r|0)>0){q=c[(w&p)+16>>2]|0;m=0;while(1){s=m+1|0;if((c[(q+(m<<4)&p)+12>>2]|0)==(t|0)){s=m;break p}if((s|0)<(r|0))m=s;else break}}else s=0}else s=-1e6;while(0);ba=c[(I&p)>>2]|0;aa=c[(ca&p)>>2]|0;c[(_&p)>>2]=ca;aa=c[(aa&p)+16>>2]|0;c[(_&p)+12>>2]=c[(aa+(s<<4)&p)>>2];c[(_&p)+4>>2]=c[(aa+(s<<4)&p)+12>>2];c[(_&p)+16>>2]=35480;c[(_&p)+20>>2]=ba;c[(_&p)+8>>2]=(s|0)==1&1;if(fr(_,x)|0){Mk(w,x,1);break a}c[(l&p)+12>>2]=gr(w,x,1)|0;Mk(w,x,1);if(a[(w&n)+65>>0]|0)break a;if(!(a[(w&n)+145>>0]|0))hr(ca,l)|0;q=ca+504|0;m=c[(q&p)>>2]|0;q=c[(q&p)+4>>2]|0;ba=$;c[(ba&p)>>2]=m;c[(ba&p)+4>>2]=q;ba=a[(m&n)>>0]|0;if(!(ba<<24>>24==59|ba<<24>>24==0)){m=m+q|0;c[($&p)>>2]=m}r=$+4|0;c[(r&p)>>2]=0;s=c[(f+(h<<4)&p)+16>>2]|0;q=m-s|0;do{ba=q;q=q+-1|0;l=s+q|0;if((ba|0)<=0)break}while((a[((d[(l&n)>>0]|0)&n)+10368>>0]&1)!=0);c[($&p)>>2]=l;c[(r&p)>>2]=1;Vq(ca,0,$,0,0);break a}Mk(w,x,1);break}case 93:{_q(ca,c[(f+(da+-3<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0,c[(f+(da+-2<<4)&p)+16>>2]|0,0);break}case 94:{$q(ca,0,0,0,c[(f+(da+-2<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0,0,0,0,0)|0;break}case 95:{ar(ca,c[(f+(da+-2<<4)&p)+16>>2]|0);break}case 96:{br(ca,c[(f+(da+-6<<4)&p)+16>>2]|0,f+(da+-3<<4)+16|0,c[(f+(da+-2<<4)&p)+16>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0);k=c[(f+(da<<4)&p)+16>>2]|0;l=c[(ca&p)+484>>2]|0;if((l|0)!=0?(q=c[(l&p)+16>>2]|0,(q|0)!=0):0)a[(q&n)+24>>0]=k;break}case 99:{c[(ea&p)>>2]=10;break}case 101:{a[(ea&n)>>0]=10;break}case 102:{a[(ea&n)>>0]=c[(f+(da<<4)&p)+16>>2];break}case 104:{c[(ea&p)>>2]=4;break}case 105:{c[(ea&p)>>2]=5;break}case 106:{dr(ca,c[(f+(da<<4)&p)+16>>2]|0,0,c[(f+(da+-1<<4)&p)+16>>2]|0);break}case 110:{dr(ca,c[(f+(da<<4)&p)+16>>2]|0,1,c[(f+(da+-1<<4)&p)+16>>2]|0);break}case 111:{c[(z&p)>>2]=c[5124];c[(z&p)+4>>2]=c[5125];c[(z&p)+8>>2]=c[5126];c[(z&p)+12>>2]=c[5127];c[(z&p)+16>>2]=c[5128];ba=f+(da<<4)+16|0;ir(ca,c[(ba&p)>>2]|0,z)|0;Mk(c[(ca&p)>>2]|0,c[(ba&p)>>2]|0,1);break}case 112:{t=c[(f+(da<<4)&p)+16>>2]|0;do if(t){c[(t&p)+68>>2]=c[(f+(da+-1<<4)&p)+16>>2];l=c[(t&p)+52>>2]|0;if(l){m=128;q=1;r=t;s=0;while(1){c[(r&p)+56>>2]=s;$=r+6|0;aa=e[($&o)>>1]|64;b[($&o)>>1]=aa;m=aa&m;if(!l)break;aa=l;l=c[(l&p)+52>>2]|0;q=q+1|0;s=r;r=aa}if(m){ca=t+6|0;b[(ca&o)>>1]=e[(ca&o)>>1]|256;break}aa=c[((c[(ca&p)>>2]|0)&p)+104>>2]|0;if((aa|0)>0&(q|0)>(aa|0))th(ca,20520,ba)}}else Qn(c[(ca&p)>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0);while(0);c[(ea&p)>>2]=t;break}case 116:{c[(ea&p)>>2]=116;break}case 119:case 113:{c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2];break}case 114:{h=c[(f+(da<<4)&p)+16>>2]|0;do if(h){if(c[(h&p)+52>>2]|0){c[(l&p)+4>>2]=0;h=kr(ca,0,jr(ca,0,0,0,l,h,0,0)|0,0,0,0,0,0,0,0)|0;if(!h){aa=192;break}}ba=c[(f+(da+-1<<4)&p)+16>>2]|0;a[(h&n)+4>>0]=ba;c[(h&p)+52>>2]=c[(f+(da+-2<<4)&p)+16>>2];if((ba|0)!=116)a[(ca&n)+22>>0]=1}else aa=192;while(0);if((aa|0)==192){Mk(c[(ca&p)>>2]|0,c[(f+(da+-2<<4)&p)+16>>2]|0,1);h=0}c[(ea&p)>>2]=h;break}case 121:{h=kr(ca,c[(f+(da+-1<<4)&p)+16>>2]|0,0,0,0,0,0,128,0,0)|0;if(!h){c[(ea&p)>>2]=c[(f+(da+-4<<4)&p)+16>>2];break a}else{a[(h&n)+4>>0]=116;c[(h&p)+52>>2]=c[(f+(da+-4<<4)&p)+16>>2];c[(ea&p)>>2]=h;break a}}case 122:{b[(ea&o)>>1]=1;break}case 124:case 123:{b[(ea&o)>>1]=0;break}case 242:case 236:case 161:case 154:case 126:{c[(ea&p)>>2]=0;break}case 243:case 125:{c[(ea&p)>>2]=c[(f+(da+-1<<4)&p)+16>>2];break}case 167:{c[(ea&p)>>2]=c[(f+(da+-2<<4)&p)+16>>2];c[(ea&p)+4>>2]=c[(f+(da<<4)&p)+16>>2];break}case 168:{c[(ea&p)+4>>2]=c[(f+(da+-2<<4)&p)+16>>2];c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2];break}case 169:{h=c[(f+(da+-5<<4)&p)+16>>2]|0;if(h){ba=ca+532|0;c[(h&p)+4>>2]=c[(ba&p)>>2];c[(ba&p)>>2]=h;a[(ca&n)+449>>0]=1}ba=f+(da+-2<<4)+16|0;or(ca,c[(ba&p)>>2]|0,f+(da+-1<<4)+16|0);rr(ca,c[(ba&p)>>2]|0,c[(f+(da<<4)&p)+16>>2]|0);break}case 176:{h=c[(f+(da+-6<<4)&p)+16>>2]|0;if(h){ba=ca+532|0;c[(h&p)+4>>2]=c[(ba&p)>>2];c[(ba&p)>>2]=h;a[(ca&n)+449>>0]=1}tr(ca,c[(f+(da+-3<<4)&p)+16>>2]|0,0,c[(f+(da+-2<<4)&p)+16>>2]|0,d[(f+(da+-5<<4)&n)+16>>0]|0);break}case 173:{ba=lr(ca,c[(f+(da+-4<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0)|0;c[(ea&p)>>2]=ba;mr(ca,ba,f+(da+-2<<4)+16|0,1);break}case 174:{ba=lr(ca,0,c[(f+(da<<4)&p)+16>>2]|0)|0;c[(ea&p)>>2]=ba;mr(ca,ba,f+(da+-2<<4)+16|0,1);break}case 175:{h=c[(f+(da+-5<<4)&p)+16>>2]|0;if(h){ba=ca+532|0;c[(h&p)+4>>2]=c[(ba&p)>>2];c[(ba&p)>>2]=h;a[(ca&n)+449>>0]=1}tr(ca,c[(f+(da+-2<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0,d[(f+(da+-4<<4)&n)+16>>0]|0);break}case 181:{c[(ea&p)>>2]=ur(c[(ca&p)>>2]|0,c[(f+(da+-2<<4)&p)+16>>2]|0,f+(da<<4)+16|0)|0;break}case 182:{c[(ea&p)>>2]=ur(c[(ca&p)>>2]|0,0,f+(da<<4)+16|0)|0;break}case 183:{ca=f+(da<<4)+16|0;c[(ea&p)>>2]=c[(ca&p)>>2];c[(ea&p)+4>>2]=c[(ca&p)+4>>2];c[(ea&p)+8>>2]=c[(ca&p)+8>>2];break}case 177:{a[(ea&n)>>0]=a[(f+(da<<4)&n)+16>>0]|0;break}case 178:{a[(ea&n)>>0]=5;break}case 184:{c[(ea&p)>>2]=c[(f+(da+-1<<4)&p)+16>>2];c[(ea&p)+4>>2]=c[(f+(da+-2<<4)&p)+16>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 191:case 190:case 185:{ba=f+(da<<4)+16|0;c[(ea&p)>>2]=Zq(ca,d[(f+(da<<4)&n)+14>>0]|0,0,0,ba)|0;ca=c[(ba&p)>>2]|0;c[(ea&p)+4>>2]=ca;c[(ea&p)+8>>2]=ca+(c[(f+(da<<4)&p)+20>>2]|0);break}case 187:case 186:{ba=f+(da<<4)+16|0;c[(ea&p)>>2]=Zq(ca,27,0,0,ba)|0;ca=c[(ba&p)>>2]|0;c[(ea&p)+4>>2]=ca;c[(ea&p)+8>>2]=ca+(c[(f+(da<<4)&p)+20>>2]|0);break}case 188:{aa=f+(da+-2<<4)+16|0;ba=f+(da<<4)+16|0;c[(ea&p)>>2]=Zq(ca,122,Zq(ca,27,0,0,aa)|0,Zq(ca,27,0,0,ba)|0,0)|0;c[(ea&p)+4>>2]=c[(aa&p)>>2];c[(ea&p)+8>>2]=(c[(ba&p)>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 189:{aa=f+(da+-4<<4)+16|0;ba=f+(da<<4)+16|0;c[(ea&p)>>2]=Zq(ca,122,Zq(ca,27,0,0,aa)|0,Zq(ca,122,Zq(ca,27,0,0,f+(da+-2<<4)+16|0)|0,Zq(ca,27,0,0,ba)|0,0)|0,0)|0;c[(ea&p)+4>>2]=c[(aa&p)>>2];c[(ea&p)+8>>2]=(c[(ba&p)>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 192:{x=f+(da<<4)+16|0;w=f+(da<<4)+20|0;do if(((c[(w&p)>>2]|0)>>>0>1?(C=c[(x&p)>>2]|0,(a[(C&n)>>0]|0)==35):0)?((d[(C&n)+1>>0]|0)+-48|0)>>>0<10:0){if(!(a[(ca&n)+18>>0]|0)){c[(ba&p)>>2]=x;th(ca,20432,ba);c[(ea&p)>>2]=0;break}r=Zq(ca,159,0,0,x)|0;c[(ea&p)>>2]=r;if(r)Dn((c[(x&p)>>2]|0)+1|0,r+28|0)|0}else aa=298;while(0);q:do if((aa|0)==298?(P=Zq(ca,135,0,0,x)|0,c[(ea&p)>>2]=P,W=c[(x&p)>>2]|0,c[(ea&p)+4>>2]=W,c[(ea&p)+8>>2]=W+(c[(w&p)>>2]|0),W=c[(ca&p)>>2]|0,(P|0)!=0):0){z=c[(P&p)+8>>2]|0;r=z+1|0;do if(a[(r&n)>>0]|0){y=(z|0)==0;if(y)A=0;else{t=z;while(1)if(!(a[(t&n)>>0]|0))break;else t=t+1|0;A=t-z&1073741823}r:do if((a[(z&n)>>0]|0)==63){$=Ul(r,H,A+-1|0,1)|0;m=H;q=c[(m&p)>>2]|0;m=c[(m&p)+4>>2]|0;t=q&65535;b[(P&o)+32>>1]=t;r=c[(W&p)+124>>2]|0;aa=((r|0)<0)<<31>>31;if((m|0)<0|(m|0)==0&q>>>0<1|($|0)!=0|((m|0)>(aa|0)|(m|0)==(aa|0)&q>>>0>r>>>0)){c[(ba&p)>>2]=r;th(ca,33296,ba);t=0}r=ca+440|0;aa=c[(r&p)>>2]|0;$=((aa|0)<0)<<31>>31;if((m|0)>($|0)|(m|0)==($|0)&q>>>0>aa>>>0)c[(r&p)>>2]=q}else{r=c[(ca&p)+444>>2]|0;s:do if((r|0)>0){q=c[(ca&p)+472>>2]|0;t=0;l=0;while(1){m=c[(q+(t<<2)&p)>>2]|0;if((m|0)!=0?(_v(m,z)|0)==0:0)break;l=l+1<<16>>16;t=l<<16>>16;if((t|0)>=(r|0)){aa=315;break s}}t=t+1&65535;r=P+32|0;b[(r&o)>>1]=t;if(t<<16>>16)break r}else aa=315;while(0);if((aa|0)==315)r=P+32|0;aa=ca+440|0;t=(c[(aa&p)>>2]|0)+1|0;c[(aa&p)>>2]=t;t=t&65535;b[(r&o)>>1]=t}while(0);m=t<<16>>16;if(t<<16>>16>0){t=ca+444|0;if((m|0)>(c[(t&p)>>2]|0)){r=ca+472|0;q=ro(W,c[(r&p)>>2]|0,m<<2,0)|0;if(!q)break q;c[(r&p)>>2]=q;aa=c[(t&p)>>2]|0;fw(q+(aa<<2)|0,0,m-aa<<2|0)|0;c[(t&p)>>2]=m}if((a[(z&n)>>0]|0)==63){r=m+-1|0;if(!(c[((c[(ca&p)+472>>2]|0)+(r<<2)&p)>>2]|0))t=0;else break}else{t=m+-1|0;r=t;t=c[((c[(ca&p)+472>>2]|0)+(t<<2)&p)>>2]|0}q=ca+472|0;mg(W,t);if(!y?(s=jw(A|0,0,1,0)|0,s=mh(W,s,G)|0,(s|0)!=0):0){kw(s|0,z|0,A|0)|0;a[(s+A&n)>>0]=0}else s=0;c[((c[(q&p)>>2]|0)+(r<<2)&p)>>2]=s}}else{$=ca+440|0;aa=(c[($&p)>>2]|0)+1|0;c[($&p)>>2]=aa;b[(P&o)+32>>1]=aa}while(0);if((c[(ca&p)+64>>2]|0)==0?(c[(ca&p)+440>>2]|0)>(c[(W&p)+124>>2]|0):0)th(ca,33344,ba)}while(0);ca=c[(x&p)>>2]|0;c[(ea&p)+4>>2]=ca;c[(ea&p)+8>>2]=ca+(c[(w&p)>>2]|0);break}case 196:{ba=f+(da+-3<<4)+16|0;c[(ea&p)>>2]=wr(ca,0,ba)|0;c[(ea&p)+4>>2]=c[(ba&p)>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 197:{ba=f+(da<<4)+16|0;c[(ea&p)>>2]=wr(ca,0,ba)|0;ca=c[(ba&p)>>2]|0;c[(ea&p)+4>>2]=ca;c[(ea&p)+8>>2]=ca+(c[(f+(da<<4)&p)+20>>2]|0);break}case 193:{aa=da+-2|0;ba=f+(da<<4)+16|0;c[(ea&p)>>2]=vr(ca,c[(f+(aa<<4)&p)+16>>2]|0,ba,1)|0;c[(ea&p)+4>>2]=c[(f+(aa<<4)&p)+20>>2];c[(ea&p)+8>>2]=(c[(ba&p)>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 194:{c[(ea&p)>>2]=Zq(ca,38,c[(f+(da+-3<<4)&p)+16>>2]|0,0,f+(da+-1<<4)+16|0)|0;c[(ea&p)+4>>2]=c[(f+(da+-5<<4)&p)+16>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 195:{l=f+(da+-1<<4)+16|0;h=c[(l&p)>>2]|0;if(h){if((c[(h&p)>>2]|0)>(c[((c[(ca&p)>>2]|0)&p)+112>>2]|0)){c[(ba&p)>>2]=f+(da+-4<<4)+16;th(ca,20576,ba);h=c[(l&p)>>2]|0}}else h=0;ba=f+(da+-4<<4)+16|0;h=wr(ca,h,ba)|0;c[(ea&p)>>2]=h;c[(ea&p)+4>>2]=c[(ba&p)>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);if(!((h|0)==0?1:(b[(f+(da+-2<<4)&o)+16>>1]|0)==0)){ca=h+4|0;c[(ca&p)>>2]=c[(ca&p)>>2]|16}break}case 205:case 204:case 203:case 202:case 201:case 200:case 199:case 198:{ba=da+-2|0;c[(ea&p)>>2]=Zq(ca,d[(f+(da+-1<<4)&n)+14>>0]|0,c[(f+(ba<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0,0)|0;c[(ea&p)+4>>2]=c[(f+(ba<<4)&p)+20>>2];c[(ea&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];break}case 206:{aa=f+(da<<4)+16|0;ba=c[(aa&p)+4>>2]|0;ca=ea;c[(ca&p)>>2]=c[(aa&p)>>2];c[(ca&p)+4>>2]=ba;c[(ea&p)+8>>2]=0;break}case 207:{aa=f+(da<<4)+16|0;ba=c[(aa&p)+4>>2]|0;ca=ea;c[(ca&p)>>2]=c[(aa&p)>>2];c[(ca&p)+4>>2]=ba;c[(ea&p)+8>>2]=1;break}case 208:{l=da+-2|0;ba=da+-1|0;h=wr(ca,lr(ca,lr(ca,0,c[(f+(da<<4)&p)+16>>2]|0)|0,c[(f+(l<<4)&p)+16>>2]|0)|0,f+(ba<<4)+16|0)|0;c[(ea&p)>>2]=h;if(c[(f+(ba<<4)&p)+24>>2]|0){h=Zq(ca,19,h,0,0)|0;c[(ea&p)>>2]=h}c[(ea&p)+4>>2]=c[(f+(l<<4)&p)+20>>2];c[(ea&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];if(h){ca=h+4|0;c[(ca&p)>>2]=c[(ca&p)>>2]|128}break}case 210:{ba=da+-1|0;c[(ea&p)>>2]=Zq(ca,d[(f+(da<<4)&n)+14>>0]|0,c[(f+(ba<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)+4>>2]=c[(f+(ba<<4)&p)+20>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 209:{l=da+-4|0;ba=da+-3|0;h=wr(ca,lr(ca,lr(ca,lr(ca,0,c[(f+(da+-2<<4)&p)+16>>2]|0)|0,c[(f+(l<<4)&p)+16>>2]|0)|0,c[(f+(da<<4)&p)+16>>2]|0)|0,f+(ba<<4)+16|0)|0;c[(ea&p)>>2]=h;if(c[(f+(ba<<4)&p)+24>>2]|0){h=Zq(ca,19,h,0,0)|0;c[(ea&p)>>2]=h}c[(ea&p)+4>>2]=c[(f+(l<<4)&p)+20>>2];c[(ea&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];if(h){ca=h+4|0;c[(ca&p)>>2]=c[(ca&p)>>2]|128}break}case 223:{l=f+(da+-1<<4)+16|0;h=c[(l&p)>>2]|0;do if(h){if((c[(h&p)>>2]|0)==1){ba=c[(h&p)+4>>2]|0;h=c[(ba&p)>>2]|0;c[(ba&p)>>2]=0;Nk(c[(ca&p)>>2]|0,c[(l&p)>>2]|0);if(h){ba=h+4|0;c[(ba&p)>>2]=c[(ba&p)>>2]&-769|512}c[(ea&p)>>2]=Zq(ca,(c[(f+(da+-3<<4)&p)+16>>2]|0)!=0?78:79,c[(f+(da+-4<<4)&p)+16>>2]|0,h,0)|0;break}h=Zq(ca,75,c[(f+(da+-4<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)>>2]=h;if(!h){Nk(c[(ca&p)>>2]|0,c[(l&p)>>2]|0);h=0}else{c[(h&p)+20>>2]=c[(l&p)>>2];h=c[(ea&p)>>2]|0;yr(ca,h)}if(c[(f+(da+-3<<4)&p)+16>>2]|0)c[(ea&p)>>2]=Zq(ca,19,h,0,0)|0}else{c[(ea&p)>>2]=Zq(ca,132,0,0,20616+(c[(f+(da+-3<<4)&p)+16>>2]<<3)|0)|0;Gk(c[(ca&p)>>2]|0,c[(f+(da+-4<<4)&p)+16>>2]|0)}while(0);c[(ea&p)+4>>2]=c[(f+(da+-4<<4)&p)+20>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 211:{ba=da+-2|0;c[(ea&p)>>2]=Zq(ca,77,c[(f+(ba<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)+4>>2]=c[(f+(ba<<4)&p)+20>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 212:{$=da+-2|0;aa=f+(da<<4)+16|0;ba=Zq(ca,73,c[(f+($<<4)&p)+16>>2]|0,c[(aa&p)>>2]|0,0)|0;c[(ea&p)>>2]=ba;c[(ea&p)+4>>2]=c[(f+($<<4)&p)+20>>2];c[(ea&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];xr(ca,c[(aa&p)>>2]|0,ba,76);break}case 213:{$=da+-3|0;aa=f+(da<<4)+16|0;ba=Zq(ca,148,c[(f+($<<4)&p)+16>>2]|0,c[(aa&p)>>2]|0,0)|0;c[(ea&p)>>2]=ba;c[(ea&p)+4>>2]=c[(f+($<<4)&p)+20>>2];c[(ea&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];xr(ca,c[(aa&p)>>2]|0,ba,77);break}case 215:case 214:{ba=da+-1|0;c[(ea&p)>>2]=Zq(ca,d[(f+(ba<<4)&n)+14>>0]|0,c[(f+(da<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)+4>>2]=c[(f+(ba<<4)&p)+16>>2];c[(ea&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];break}case 216:{c[(ea&p)>>2]=Zq(ca,157,c[(f+(da<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)+4>>2]=c[(f+(da+-1<<4)&p)+16>>2];c[(ea&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];break}case 217:{c[(ea&p)>>2]=Zq(ca,158,c[(f+(da<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)+4>>2]=c[(f+(da+-1<<4)&p)+16>>2];c[(ea&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];break}case 220:{k=lr(ca,lr(ca,0,c[(f+(da+-2<<4)&p)+16>>2]|0)|0,c[(f+(da<<4)&p)+16>>2]|0)|0;l=da+-4|0;h=Zq(ca,74,c[(f+(l<<4)&p)+16>>2]|0,0,0)|0;c[(ea&p)>>2]=h;if(!h)Nk(c[(ca&p)>>2]|0,k);else c[(h&p)+20>>2]=k;if(c[(f+(da+-3<<4)&p)+16>>2]|0)c[(ea&p)>>2]=Zq(ca,19,c[(ea&p)>>2]|0,0,0)|0;c[(ea&p)+4>>2]=c[(f+(l<<4)&p)+20>>2];c[(ea&p)+8>>2]=c[(f+(da<<4)&p)+24>>2];break}case 224:{h=Zq(ca,119,0,0,0)|0;c[(ea&p)>>2]=h;if(!h)Mk(c[(ca&p)>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0,1);else{c[(h&p)+20>>2]=c[(f+(da+-1<<4)&p)+16>>2];ba=c[(ea&p)>>2]|0;aa=ba+4|0;c[(aa&p)>>2]=c[(aa&p)>>2]|2099200;yr(ca,ba)}c[(ea&p)+4>>2]=c[(f+(da+-2<<4)&p)+16>>2];c[(ea&p)+8>>2]=(c[(f+(da<<4)&p)+16>>2]|0)+(c[(f+(da<<4)&p)+20>>2]|0);break}case 118:{c[(ea&p)>>2]=kr(ca,c[(f+(da+-6<<4)&p)+16>>2]|0,c[(f+(da+-5<<4)&p)+16>>2]|0,c[(f+(da+-4<<4)&p)+16>>2]|0,c[(f+(da+-3<<4)&p)+16>>2]|0,c[(f+(da+-2<<4)&p)+16>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0,b[(f+(da+-7<<4)&o)+16>>1]|0,c[(f+(da<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+20>>2]|0)|0;break}case 120:{c[(ea&p)>>2]=kr(ca,c[(f+(da+-1<<4)&p)+16>>2]|0,0,0,0,0,0,128,0,0)|0;break}case 127:{l=da+-1|0;q=lr(ca,c[(f+(da+-2<<4)&p)+16>>2]|0,c[(f+(l<<4)&p)+16>>2]|0)|0;c[(ea&p)>>2]=q;if(c[(f+(da<<4)&p)+20>>2]|0)mr(ca,q,f+(da<<4)+16|0,1);s=c[(ca&p)>>2]|0;if(q){r=(c[(q&p)+4>>2]|0)+(((c[(q&p)>>2]|0)+-1|0)*20|0)+8|0;mg(s,c[(r&p)>>2]|0);m=c[(f+(l<<4)&p)+20>>2]|0;q=(c[(f+(l<<4)&p)+24>>2]|0)-m|0;if((m|0)!=0?(h=jw(q|0,((q|0)<0)<<31>>31|0,1,0)|0,h=mh(s,h,G)|0,(h|0)!=0):0){kw(h|0,m|0,q|0)|0;a[(h+q&n)>>0]=0}else h=0;c[(r&p)>>2]=h}break}case 133:{l=mh(c[(ca&p)>>2]|0,80,0)|0;if(l){y=l+0|0;k=y+80|0;do{a[(y&n)>>0]=0;y=y+1|0}while((y|0)<(k|0))}c[(ea&p)>>2]=l;break}case 134:{q=c[(f+(da<<4)&p)+16>>2]|0;c[(ea&p)>>2]=q;if(q){l=c[(q&p)>>2]|0;k=l+-1|0;if((k|0)>0)while(1){a[(q+(k*72|0)&n)+44>>0]=a[(q+((l+-2|0)*72|0)&n)+44>>0]|0;l=k+-1|0;if((l|0)>0){ca=k;k=l;l=ca}else break}a[(q&n)+44>>0]=0}break}case 128:{aa=c[(ca&p)>>2]|0;c[(ba&p)>>2]=0;c[(ba&p)+4>>2]=0;ba=nr(aa,116,ba,0)|0;c[(ea&p)>>2]=lr(ca,c[(f+(da+-1<<4)&p)+16>>2]|0,ba)|0;break}case 132:{c[(ea&p)+4>>2]=0;break}case 129:{ba=Zq(ca,116,0,0,f+(da<<4)+16|0)|0;ba=Zq(ca,122,Zq(ca,27,0,0,f+(da+-2<<4)+16|0)|0,ba,0)|0;c[(ea&p)>>2]=lr(ca,c[(f+(da+-3<<4)&p)+16>>2]|0,ba)|0;break}case 136:{c[(ea&p)>>2]=0;break}case 137:{ba=jr(ca,c[(f+(da+-6<<4)&p)+16>>2]|0,f+(da+-5<<4)+16|0,f+(da+-4<<4)+16|0,f+(da+-3<<4)+16|0,0,c[(f+(da+-1<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0)|0;c[(ea&p)>>2]=ba;or(ca,ba,f+(da+-2<<4)+16|0);break}case 135:{h=c[(f+(da+-1<<4)&p)+16>>2]|0;c[(ea&p)>>2]=h;if((h|0)!=0?(w=c[(h&p)>>2]|0,(w|0)>0):0)a[(h+((w+-1|0)*72|0)&n)+44>>0]=c[(f+(da<<4)&p)+16>>2];break}case 138:{c[(ea&p)>>2]=jr(ca,c[(f+(da+-6<<4)&p)+16>>2]|0,0,0,f+(da+-2<<4)+16|0,c[(f+(da+-4<<4)&p)+16>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0)|0;break}case 139:{l=f+(da+-6<<4)+16|0;q=c[(l&p)>>2]|0;if((((q|0)==0?(c[(f+(da+-2<<4)&p)+20>>2]|0)==0:0)?(c[(f+(da+-1<<4)&p)+16>>2]|0)==0:0)?(c[(f+(da<<4)&p)+16>>2]|0)==0:0){c[(ea&p)>>2]=c[(f+(da+-4<<4)&p)+16>>2];break a}s=f+(da+-4<<4)+16|0;k=c[(s&p)>>2]|0;r=c[(k&p)>>2]|0;if((r|0)==1){l=jr(ca,q,0,0,f+(da+-2<<4)+16|0,0,c[(f+(da+-1<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0)|0;c[(ea&p)>>2]=l;if(l){_=(c[(l&p)>>2]|0)+-1|0;ba=c[(s&p)>>2]|0;aa=ba+16|0;c[(l+(_*72|0)&p)+16>>2]=c[(aa&p)>>2];$=ba+12|0;c[(l+(_*72|0)&p)+12>>2]=c[($&p)>>2];ba=ba+28|0;c[(l+(_*72|0)&p)+28>>2]=c[(ba&p)>>2];c[($&p)>>2]=0;c[(aa&p)>>2]=0;c[(ba&p)>>2]=0}Do(c[(ca&p)>>2]|0,c[(s&p)>>2]|0);break a}if(k){m=r+-1|0;if((m|0)>0){q=r;while(1){a[(k+(m*72|0)&n)+44>>0]=a[(k+((q+-2|0)*72|0)&n)+44>>0]|0;q=m+-1|0;if((q|0)>0){ba=m;m=q;q=ba}else break}}a[(k&n)+44>>0]=0}ba=kr(ca,0,k,0,0,0,0,512,0,0)|0;c[(ea&p)>>2]=jr(ca,c[(l&p)>>2]|0,0,0,f+(da+-2<<4)+16|0,ba,c[(f+(da+-1<<4)&p)+16>>2]|0,c[(f+(da<<4)&p)+16>>2]|0)|0;break}case 149:case 140:{c[(ea&p)>>2]=0;c[(ea&p)+4>>2]=0;break}case 144:{c[(ea&p)>>2]=qr(ca,f+(da+-1<<4)+16|0,0,0)|0;break}case 145:{c[(ea&p)>>2]=qr(ca,f+(da+-2<<4)+16|0,f+(da+-1<<4)+16|0,0)|0;break}case 146:{c[(ea&p)>>2]=qr(ca,f+(da+-3<<4)+16|0,f+(da+-2<<4)+16|0,f+(da+-1<<4)+16|0)|0;break}case 233:case 231:case 171:case 164:case 147:{c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2];break}case 234:case 232:case 170:case 163:case 148:{c[(ea&p)>>2]=0;break}case 151:{c[(ea&p)>>2]=0;c[(ea&p)+4>>2]=1;break}case 143:{c[(ea&p)>>2]=1;break}case 142:{c[(ea&p)>>2]=pr(c[(ca&p)>>2]|0,0,f+(da+-1<<4)+16|0,f+(da<<4)+16|0)|0;break}case 157:{h=lr(ca,0,c[(f+(da+-1<<4)&p)+16>>2]|0)|0;c[(ea&p)>>2]=h;if((h|0)!=0?(k=c[(h&p)+4>>2]|0,(k|0)!=0):0)a[(k&n)+12>>0]=c[(f+(da<<4)&p)+16>>2];break}case 160:case 158:{c[(ea&p)>>2]=0;break}case 159:{c[(ea&p)>>2]=1;break}case 165:{c[(ea&p)>>2]=0;c[(ea&p)+4>>2]=0;break}case 166:{c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2];c[(ea&p)+4>>2]=0;break}case 179:case 153:{c[(ea&p)>>2]=0;break}case 180:case 152:{c[(ea&p)>>2]=c[(f+(da+-1<<4)&p)+16>>2];break}case 172:{l=c[(f+(da+-7<<4)&p)+16>>2]|0;if(l){aa=ca+532|0;c[(l&p)+4>>2]=c[(aa&p)>>2];c[(aa&p)>>2]=l;a[(ca&n)+449>>0]=1}m=f+(da+-4<<4)+16|0;or(ca,c[(m&p)>>2]|0,f+(da+-3<<4)+16|0);q=f+(da+-1<<4)+16|0;l=c[(q&p)>>2]|0;if(l){if((c[(l&p)>>2]|0)>(c[((c[(ca&p)>>2]|0)&p)+96>>2]|0)){c[(ba&p)>>2]=20560;th(ca,34544,ba);l=c[(q&p)>>2]|0}}else l=0;sr(ca,c[(m&p)>>2]|0,l,c[(f+(da<<4)&p)+16>>2]|0,d[(f+(da+-5<<4)&n)+16>>0]|0);break}case 235:case 162:case 155:{c[(ea&p)>>2]=c[(f+(da<<4)&p)+16>>2];break}case 156:{h=lr(ca,c[(f+(da+-3<<4)&p)+16>>2]|0,c[(f+(da+-1<<4)&p)+16>>2]|0)|0;c[(ea&p)>>2]=h;if(h)a[((c[(h&p)+4>>2]|0)+(((c[(h&p)>>2]|0)+-1|0)*20|0)&n)+12>>0]=c[(f+(da<<4)&p)+16>>2];break}case 7:{a[(ca&n)+450>>0]=2;c[(ca&p)+440>>2]=0;break}case 23:{Tq(ca,1,f+(da<<4)+16|0);break}case 24:{Tq(ca,2,f+(da<<4)+16|0);break}case 26:{Uq(ca,f+(da+-1<<4)+16|0,f+(da<<4)+16|0,c[(f+(da+-4<<4)&p)+16>>2]|0,0,0,c[(f+(da+-2<<4)&p)+16>>2]|0);break}default:{}}while(0);h=a[(g<<1&n)+20912>>0]|0;r=h&255;q=a[(g<<1&n)+20913>>0]|0;m=q&255;s=(c[(f&p)>>2]|0)-m|0;c[(f&p)>>2]=s;l=b[((b[(e[(f+(da-m<<4)&o)+12>>1]<<1&o)+21568>>1]|0)+r<<1&o)+22184>>1]|0;k=l&65535;do if((l&65535)<642)if(!(q<<24>>24)){kq(f,k,r,ea);break}else{c[(f&p)>>2]=s+1;da=1-m+da|0;b[(f+(da<<4)&o)+12>>1]=l;a[(f+(da<<4)&n)+14>>0]=h;da=f+(da<<4)+16|0;c[(da&p)>>2]=c[(ea&p)>>2];c[(da&p)+4>>2]=c[(ea&p)+4>>2];c[(da&p)+8>>2]=c[(ea&p)+8>>2];break}else{h=c[(ga&p)>>2]|0;if((s|0)>-1)do Pn(f);while((c[(f&p)>>2]|0)>-1);c[(ga&p)>>2]=h}while(0);i=ha;return}function nq(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=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,H=0,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,ga=0;da=i;i=i+64|0;if((i|0)>=(j|0))fa();ca=da+8|0;Z=da;q=da+24|0;h=da+16|0;l=xq(e,0,h)|0;do if(!l){if(c[(h&p)>>2]|0){l=ds(e,f)|0;if(!l)g=0;else k=4}else{l=1;k=4}if((k|0)==4){ba=e+43|0;k=(a[(ba&n)>>0]|0)==0;do if(!(a[(e&n)+46>>0]&2)){if(k?(m=e+4|0,aa=c[(m&p)>>2]|0,ac[c[((c[(aa&p)>>2]|0)&p)+40>>2]&63](aa,24,0)|0,m=c[(m&p)>>2]|0,m=pc[c[((c[(m&p)>>2]|0)&p)+56>>2]&31](m,0,1,10)|0,(m|0)!=0):0){h=l;g=m;break}aa=e+44|0;a[(aa&n)>>0]=1;k=xq(e,0,h)|0;if(!k){h=ds(e,f)|0;if(!h){h=0;g=0}else{$=d[(e&n)+45>>0]|0;_=$+1|0;$=7-$|0;if(!((a[(ba&n)>>0]|0)==0?(g=c[(e&p)+4>>2]|0,g=pc[c[((c[(g&p)>>2]|0)&p)+56>>2]&31](g,_,$,10)|0,(g|0)!=0):0)){l=e+52|0;k=l+48|0;do{c[(l&p)>>2]=0;l=l+4|0}while((l|0)<(k|0));T=e+8|0;g=c[(T&p)>>2]|0;g=rc[c[((c[(g&p)>>2]|0)&p)+24>>2]&127](g,Z)|0;a:do if(!g){U=Z;S=c[(U&p)+4>>2]|0;b:do if((S|0)>0|(S|0)==0&(c[(U&p)>>2]|0)>>>0>32){g=c[(T&p)>>2]|0;g=tc[c[((c[(g&p)>>2]|0)&p)+8>>2]&31](g,q,32,0,0)|0;if(g)break a;m=d[(q&n)+3>>0]|0;k=d[(q&n)+9>>0]<<16|d[(q&n)+8>>0]<<24;g=d[(q&n)+10>>0]<<8;l=k|g|d[(q&n)+11>>0];if(((d[(q&n)+1>>0]<<16|d[(q&n)>>0]<<24|d[(q&n)+2>>0]<<8|m&254|0)==931071618?!((l+-1&l|0)!=0|(l|0)>65536|(l|0)<512):0)?(U=m&1,V=e+65|0,a[(V&n)>>0]=U,W=e+36|0,c[(W&p)>>2]=l,c[(e&p)+104>>2]=d[(q&n)+13>>0]<<16|d[(q&n)+12>>0]<<24|d[(q&n)+14>>0]<<8|d[(q&n)+15>>0],X=e+84|0,S=q+16|0,Q=S,Q=d[(Q&n)>>0]|d[(Q&n)+1>>0]<<8|d[(Q&n)+2>>0]<<16|d[(Q&n)+3>>0]<<24,S=S+4|0,S=d[(S&n)>>0]|d[(S&n)+1>>0]<<8|d[(S&n)+2>>0]<<16|d[(S&n)+3>>0]<<24,Y=X,R=Y,a[(R&n)>>0]=Q,a[(R&n)+1>>0]=Q>>8,a[(R&n)+2>>0]=Q>>16,a[(R&n)+3>>0]=Q>>24,Y=Y+4|0,a[(Y&n)>>0]=S,a[(Y&n)+1>>0]=S>>8,a[(Y&n)+2>>0]=S>>16,a[(Y&n)+3>>0]=S>>24,Y=e+76|0,yq(U^1,q,24,0,Y),(c[(Y&p)>>2]|0)==(d[(q&n)+25>>0]<<16|d[(q&n)+24>>0]<<24|d[(q&n)+26>>0]<<8|d[(q&n)+27>>0]|0)):0){S=e+80|0;if((c[(S&p)>>2]|0)!=(d[(q&n)+29>>0]<<16|d[(q&n)+28>>0]<<24|d[(q&n)+30>>0]<<8|d[(q&n)+31>>0]|0)){l=0;g=0;break}if((d[(q&n)+5>>0]<<16|d[(q&n)+4>>0]<<24|d[(q&n)+6>>0]<<8|d[(q&n)+7>>0]|0)!=3007e3){c[(ca&p)>>2]=49983;c[(ca&p)+4>>2]=10788;bd(14,14848,ca);g=14;break a}w=l+24|0;U=Tc(w)|0;if(!U){g=7;break a}x=U+24|0;y=((w|0)<0)<<31>>31;q=jw(w|0,y|0,32,0)|0;m=G;R=Z;Q=c[(R&p)+4>>2]|0;c:do if(!((m|0)>(Q|0)|((m|0)==(Q|0)?q>>>0>(c[(R&p)>>2]|0)>>>0:0))){z=U+8|0;A=U+1|0;B=U+2|0;C=U+3|0;D=U+16|0;E=U+17|0;F=U+18|0;H=U+19|0;I=U+20|0;J=U+21|0;K=U+22|0;L=U+23|0;M=U+4|0;N=U+5|0;O=U+6|0;P=U+7|0;Q=e+68|0;R=e+72|0;u=(k>>>16|g)&65535;v=e+66|0;r=32;k=0;l=0;s=0;t=1;while(1){g=c[(T&p)>>2]|0;g=tc[c[((c[(g&p)>>2]|0)&p)+8>>2]&31](g,U,w,r,k)|0;if(g){k=36;break}if(Zv(X,z,8)|0){g=s;k=37;break}k=d[(A&n)>>0]<<16|d[(U&n)>>0]<<24|d[(B&n)>>0]<<8|d[(C&n)>>0];if(!k){g=s;k=37;break}r=(a[(V&n)>>0]|0)==0&1;yq(r,U,8,Y,Y);yq(r,x,c[(W&p)>>2]|0,Y,Y);if((c[(Y&p)>>2]|0)!=(d[(E&n)>>0]<<16|d[(D&n)>>0]<<24|d[(F&n)>>0]<<8|d[(H&n)>>0]|0)){g=s;k=37;break}if((c[(S&p)>>2]|0)!=(d[(J&n)>>0]<<16|d[(I&n)>>0]<<24|d[(K&n)>>0]<<8|d[(L&n)>>0]|0)){g=s;break c}r=d[(N&n)>>0]<<16|d[(M&n)>>0]<<24|d[(O&n)>>0]<<8|d[(P&n)>>0];g=_o(e,t,k)|0;if(g){k=36;break}if(!r)g=s;else{c[(Q&p)>>2]=t;c[(R&p)>>2]=r;b[(v&o)>>1]=u;l=c[(Y&p)>>2]|0;g=c[(S&p)>>2]|0}k=jw(q|0,m|0,w|0,y|0)|0;r=G;s=Z;ea=c[(s&p)+4>>2]|0;if((r|0)>(ea|0)|((r|0)==(ea|0)?k>>>0>(c[(s&p)>>2]|0)>>>0:0))break c;else{ga=m;ea=q;q=k;m=r;s=g;t=t+1|0;k=ga;r=ea}}if((k|0)==36){Wc(U);break a}else if((k|0)==37){Wc(U);break b}}else{l=0;g=0}while(0);Wc(U)}else{l=0;g=0}}else{l=0;g=0}while(0);c[(e&p)+76>>2]=l;c[(e&p)+80>>2]=g;$o(e);k=c[(c[(e&p)+32>>2]&p)>>2]|0;c[(k&p)+96>>2]=0;c[(k&p)+100>>2]=0;g=k+104|0;c[(g&p)>>2]=-1;c[(k&p)+108>>2]=-1;c[(k&p)+112>>2]=-1;c[(k&p)+116>>2]=-1;k=e+68|0;l=c[(k&p)>>2]|0;if(l)c[(g&p)>>2]=l;if(!(c[(e&p)+72>>2]|0))g=0;else{g=c[(e&p)+100>>2]|0;c[(ca&p)>>2]=c[(k&p)>>2];c[(ca&p)+4>>2]=g;bd(283,14888,ca);g=0}}while(0);if(!(a[(ba&n)>>0]|0)){Z=c[(e&p)+4>>2]|0;pc[c[((c[(Z&p)>>2]|0)&p)+56>>2]&31](Z,_,$,9)|0}}c[(f&p)>>2]=1}}else{h=l;g=k}a[(aa&n)>>0]=0;if(!(a[(ba&n)>>0]|0)){ba=c[(e&p)+4>>2]|0;pc[c[((c[(ba&p)>>2]|0)&p)+56>>2]&31](ba,0,1,9)|0}}else if(k){h=e+4|0;g=c[(h&p)>>2]|0;g=pc[c[((c[(g&p)>>2]|0)&p)+56>>2]&31](g,0,1,6)|0;if(!g)if(!(a[(ba&n)>>0]|0)){h=c[(h&p)>>2]|0;pc[c[((c[(h&p)>>2]|0)&p)+56>>2]&31](h,0,1,5)|0;h=l;g=264}else{h=l;g=264}else h=l}else{h=l;g=264}while(0);if(h)break}if((c[(e&p)+52>>2]|0)!=3007e3){c[(ca&p)>>2]=50909;c[(ca&p)+4>>2]=10788;bd(14,14848,ca);g=14}}else g=l;while(0);i=da;return g|0}function oq(a,d,f,g,h,i){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;r=c[(h&p)>>2]|0;s=c[(g&p)>>2]|0;k=(r|0)>0;j=(f|0)>0;if(k|j){n=j;l=0;q=0;m=0;while(1){do if(n){j=d+(l<<1)|0;if(k?(t=s+(m<<1)|0,(c[(a+((e[(j&o)>>1]|0)<<2)&p)>>2]|0)>>>0>=(c[(a+((e[(t&o)>>1]|0)<<2)&p)>>2]|0)>>>0):0){k=t;u=7;break}l=l+1|0;k=j}else{k=s+(m<<1)|0;u=7}while(0);if((u|0)==7){u=0;m=m+1|0}n=b[(k&o)>>1]|0;k=c[(a+((n&65535)<<2)&p)>>2]|0;j=q+1|0;b[(i+(q<<1)&o)>>1]=n;if((l|0)<(f|0))l=((c[(a+((e[(d+(l<<1)&o)>>1]|0)<<2)&p)>>2]|0)==(k|0)&1)+l|0;k=(m|0)<(r|0);n=(l|0)<(f|0);if(!(k|n))break;else q=j}}else j=0;c[(g&p)>>2]=d;c[(h&p)>>2]=j;kw(d|0,i|0,j<<1|0)|0;return}function pq(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[(a&p)+4>>2]|0;c[(e&p)+4>>2]=c[(a&p)>>2];a=c[((c[(e&p)>>2]|0)&p)+204>>2]|0;c[(a&p)+16>>2]=b;e=c[2217]|0;d=c[(a&p)+40>>2]|0;if((b|0)>-1)a=b;else{b=sw(b|0,((b|0)<0)<<31>>31|0,-1024,-1)|0;a=(c[(a&p)+24>>2]|0)+(c[(a&p)+20>>2]|0)|0;a=qw(b|0,G|0,a|0,((a|0)<0)<<31>>31|0)|0}jc[e&15](d,a);return}function qq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=(c[(b&p)+12>>2]|0)+136|0;e=g;f=c[(e&p)>>2]|0;e=c[(e&p)+4>>2]|0;do if((f|0)==0&(e|0)==0)if(!(bh(c[(c[((c[(b&p)>>2]|0)&p)+32>>2]&p)>>2]|0,g)|0)){e=g;f=c[(e&p)>>2]|0;e=c[(e&p)+4>>2]|0;h=5;break}else{e=g;c[(e&p)>>2]=0;c[(e&p)+4>>2]=0;e=d;c[(e&p)>>2]=0;c[(e&p)+4>>2]=0;e=1;break}else h=5;while(0);if((h|0)==5){g=d;c[(g&p)>>2]=f;c[(g&p)+4>>2]=e;if((e|0)>0|(e|0)==0&f>>>0>0){a[(d&n)+42>>0]=1;e=0}else e=1}return e|0}function rq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();o=r;c[(o&p)>>2]=d;d=b;b=0;a:while(1){h=c[(o&p)>>2]|0;g=c[(h&p)>>2]|0;c[(o&p)>>2]=h+4;h=c[(o&p)>>2]|0;k=c[(h&p)>>2]|0;c[(o&p)>>2]=h+4;h=c[(o&p)>>2]|0;l=c[(h&p)>>2]|0;c[(o&p)>>2]=h+4;h=c[(o&p)>>2]|0;m=c[(h&p)>>2]|0;c[(o&p)>>2]=h+4;h=c[(o&p)>>2]|0;e=c[(h&p)>>2]|0;c[(o&p)>>2]=h+4;if(!g){f=d;d=0}else{f=d;d=0;do{g=g+-1|0;h=a[(f&n)>>0]|0;if(((h&255)+-48|0)>>>0>=10)break a;d=(d*10|0)+-48+(h<<24>>24)|0;f=f+1|0}while((g|0)!=0)}if((d|0)<(k|0)|(d|0)>(l|0))break;if(!m){q=9;break}if((m|0)!=(a[(f&n)>>0]|0))break;c[(e&p)>>2]=d;d=f+1|0;b=b+1|0}if((q|0)==9){c[(e&p)>>2]=d;b=b+1|0}i=r;return b|0}function sq(b,e){b=b|0;e=e|0;var f=0,g=0,k=0,l=0.0,m=0,o=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+64|0;if((i|0)>=(j|0))fa();v=x;t=x+56|0;u=x+52|0;f=x+48|0;r=x+44|0;s=x+40|0;c[(v&p)>>2]=2;c[(v&p)+4>>2]=0;c[(v&p)+8>>2]=24;c[(v&p)+12>>2]=58;c[(v&p)+16>>2]=f;c[(v&p)+20>>2]=2;c[(v&p)+24>>2]=0;c[(v&p)+28>>2]=59;c[(v&p)+32>>2]=0;c[(v&p)+36>>2]=r;do if((rq(b,v)|0)==2){m=b+5|0;if((a[(m&n)>>0]|0)==58){c[(v&p)>>2]=2;c[(v&p)+4>>2]=0;c[(v&p)+8>>2]=59;c[(v&p)+12>>2]=0;c[(v&p)+16>>2]=s;if((rq(b+6|0,v)|0)!=1){f=1;break}m=b+8|0;if((a[(m&n)>>0]|0)==46?(g=b+9|0,k=a[(g&n)>>0]|0,((k&255)+-48|0)>>>0<10):0){o=0.0;l=1.0;do{o=o*10.0+ +(k<<24>>24)+-48.0;l=l*10.0;g=g+1|0;k=a[(g&n)>>0]|0}while(((k&255)+-48|0)>>>0<10);l=o/l}else{g=m;l=0.0}}else{c[(s&p)>>2]=0;g=m;l=0.0}a[(e&n)+42>>0]=0;a[(e&n)+41>>0]=1;c[(e&p)+20>>2]=c[(f&p)>>2];c[(e&p)+24>>2]=c[(r&p)>>2];h[(e&q)+32>>3]=l+ +(c[(s&p)>>2]|0);while(1){f=g+1|0;if(!(a[((d[(g&n)>>0]|0)&n)+10368>>0]&1)){m=g;break}else g=f}b=e+28|0;c[(b&p)>>2]=0;g=a[(m&n)>>0]|0;if(g<<24>>24==43){k=1;w=14}else if(g<<24>>24!=45)if((g&-33)<<24>>24==90){k=0;w=16}else f=0;else{k=-1;w=14}if((w|0)==14){c[(v&p)>>2]=2;c[(v&p)+4>>2]=0;c[(v&p)+8>>2]=14;c[(v&p)+12>>2]=58;c[(v&p)+16>>2]=t;c[(v&p)+20>>2]=2;c[(v&p)+24>>2]=0;c[(v&p)+28>>2]=59;c[(v&p)+32>>2]=0;c[(v&p)+36>>2]=u;if((rq(f,v)|0)!=2){f=1;break}k=ca(((c[(t&p)>>2]|0)*60|0)+(c[(u&p)>>2]|0)|0,k)|0;c[(b&p)>>2]=k;f=m+6|0;w=16}if((w|0)==16)while(1){g=a[(f&n)>>0]|0;if(!(a[(g&255&n)+10368>>0]&1)){f=k;break}else f=f+1|0}if(!(g<<24>>24)){a[(e&n)+43>>0]=(f|0)!=0&1;f=0}else f=1}else f=1;while(0);i=x;return f|0}function tq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,k=0,l=0,m=0,o=0,r=0.0,s=0;o=i;i=i+112|0;if((i|0)>=(j|0))fa();k=o+48|0;m=o;l=o+96|0;f=k+0|0;b=b+0|0;g=f+48|0;do{c[(f&p)>>2]=c[(b&p)>>2];f=f+4|0;b=b+4|0}while((f|0)<(g|0));oo(k);po(k);g=k+8|0;if(((c[(g&p)>>2]|0)+-1971|0)>>>0>66){c[(g&p)>>2]=2e3;c[(k&p)+12>>2]=1;c[(k&p)+16>>2]=1;c[(k&p)+20>>2]=0;c[(k&p)+24>>2]=0;h[(k&q)+32>>3]=0.0}else{f=k+32|0;h[(f&q)>>3]=+(~~(+h[(f&q)>>3]+.5)|0)}c[(k&p)+28>>2]=0;a[(k&n)+42>>0]=0;no(k);b=k;f=c[(b&p)>>2]|0;b=c[(b&p)+4>>2]|0;g=qw(f|0,b|0,1e3,0)|0;g=jw(g|0,G|0,-413362496,0)|0;c[(l&p)>>2]=g;g=Vb(l|0)|0;g=(c[2253]|0)!=0?0:g;if(!g){c[(d&p)+20>>2]=1;a[(d&n)+25>>0]=1;Xg(c[(d&p)>>2]|0,20056,-1,1,-1)|0;c[(e&p)>>2]=1;f=0;g=0}else{k=c[(g&p)+4>>2]|0;l=c[(g&p)+8>>2]|0;d=c[(g&p)+12>>2]|0;s=(c[(g&p)+16>>2]|0)+1|0;r=+(c[(g&p)>>2]|0);c[(m&p)+8>>2]=(c[(g&p)+20>>2]|0)+1900;c[(m&p)+12>>2]=s;c[(m&p)+16>>2]=d;c[(m&p)+20>>2]=l;c[(m&p)+24>>2]=k;h[(m&q)+32>>3]=r;a[(m&n)+40>>0]=1;a[(m&n)+41>>0]=1;a[(m&n)+42>>0]=0;a[(m&n)+43>>0]=0;no(m);c[(e&p)>>2]=0;g=m;g=dw(c[(g&p)>>2]|0,c[(g&p)+4>>2]|0,f|0,b|0)|0;f=G}G=f;i=o;return g|0}function uq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0;r=i;i=i+32|0;if((i|0)>=(j|0))fa();q=r+12|0;l=r;o=r+8|0;k=r+16|0;a[(d&n)>>0]=0;f=rc[c[((c[(b&p)>>2]|0)&p)+24>>2]&127](b,l)|0;h=l;g=c[(h&p)>>2]|0;h=c[(h&p)+4>>2]|0;if(!((f|0)!=0|((h|0)<0|(h|0)==0&g>>>0<16))){f=jw(g|0,h|0,-16,-1)|0;f=es(b,f,G,q)|0;if(!f){m=c[(q&p)>>2]|0;if(!(m>>>0>=e>>>0|(m|0)==0)){f=l;f=jw(c[(f&p)>>2]|0,c[(f&p)+4>>2]|0,-12,-1)|0;f=es(b,f,G,o)|0;if(!f){f=l;f=jw(c[(f&p)>>2]|0,c[(f&p)+4>>2]|0,-8,-1)|0;f=tc[c[((c[(b&p)>>2]|0)&p)+8>>2]&31](b,k,8,f,G)|0;if(!f)if(!(Zv(k,14808,8)|0)){f=l;f=jw(c[(f&p)>>2]|0,c[(f&p)+4>>2]|0,-16,-1)|0;f=dw(f|0,G|0,m|0,0)|0;f=tc[c[((c[(b&p)>>2]|0)&p)+8>>2]&31](b,d,m,f,G)|0;if(!f){g=c[(o&p)>>2]|0;h=0;while(1){e=a[(d+h&n)>>0]|0;f=g-e|0;h=h+1|0;if(h>>>0>=m>>>0)break;else g=f}c[(o&p)>>2]=f;if((g|0)==(e|0))f=m;else{c[(q&p)>>2]=0;f=0}a[(d+f&n)>>0]=0;f=0}}else f=0}}else f=0}}i=r;return f|0}function vq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))fa();l=t+8|0;r=t+4|0;o=t;s=a+72|0;h=s;k=c[(h&p)>>2]|0;h=c[(h&p)+4>>2]|0;if((k|0)==0&(h|0)==0){m=0;n=0;k=c[(a&p)+148>>2]|0}else{m=jw(k|0,h|0,-1,-1)|0;k=c[(a&p)+148>>2]|0;m=qw(m|0,G|0,k|0,0)|0;m=jw(m|0,G|0,1,0)|0;m=sw(m|0,G|0,k|0,0)|0;n=G}q=s;c[(q&p)>>2]=m;c[(q&p)+4>>2]=n;q=a+148|0;k=jw(k|0,0,m|0,n|0)|0;h=G;do if(!((h|0)>(e|0)|(h|0)==(e|0)&k>>>0>d>>>0)){if((b|0)==0?(b=a+80|0,(m|0)==(c[(b&p)>>2]|0)?(n|0)==(c[(b&p)+4>>2]|0):0):0)d=a+64|0;else{k=a+64|0;e=c[(k&p)>>2]|0;e=tc[c[((c[(e&p)>>2]|0)&p)+8>>2]&31](e,l,8,m,n)|0;if(e)break;if(!(Zv(l,14808,8)|0))d=k;else{e=101;break}}l=c[(d&p)>>2]|0;e=jw(m|0,n|0,8,0)|0;e=es(l,e,G,f)|0;if(!e){f=c[(d&p)>>2]|0;e=jw(m|0,n|0,12,0)|0;e=es(f,e,G,a+48|0)|0;if(!e){f=c[(d&p)>>2]|0;e=jw(m|0,n|0,16,0)|0;e=es(f,e,G,g)|0;if(!e){h=s;k=c[(h&p)>>2]|0;h=c[(h&p)+4>>2]|0;if((k|0)==0&(h|0)==0){g=c[(d&p)>>2]|0;e=jw(m|0,n|0,20,0)|0;e=es(g,e,G,o)|0;if(e)break;g=c[(d&p)>>2]|0;e=jw(m|0,n|0,24,0)|0;e=es(g,e,G,r)|0;if(e)break;d=c[(r&p)>>2]|0;if(!d){h=c[(a&p)+152>>2]|0;c[(r&p)>>2]=h}else h=d;d=c[(o&p)>>2]|0;if(h>>>0<512|d>>>0<32|h>>>0>65536|d>>>0>65536){e=101;break}if(h+-1&h){e=101;break}if(d+-1&d){e=101;break}e=al(a,r,-1)|0;c[(q&p)>>2]=d;h=s;k=c[(h&p)>>2]|0;h=c[(h&p)+4>>2]|0}else{d=c[(q&p)>>2]|0;e=0}m=jw(k|0,h|0,d|0,0)|0;n=s;c[(n&p)>>2]=m;c[(n&p)+4>>2]=G}}}}else e=101;while(0);i=t;return e|0}function wq(f,g,h,k,l){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=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;D=i;i=i+16|0;if((i|0)>=(j|0))fa();y=D+8|0;r=D+4|0;u=D;B=c[(f&p)+200>>2]|0;C=(k|0)!=0;q=c[((C?f+64|0:f+68|0)&p)>>2]|0;t=g;t=es(q,c[(t&p)>>2]|0,c[(t&p)+4>>2]|0,r)|0;do if(!t){A=f+152|0;x=c[(A&p)>>2]|0;t=g;t=jw(c[(t&p)>>2]|0,c[(t&p)+4>>2]|0,4,0)|0;t=tc[c[((c[(q&p)>>2]|0)&p)+8>>2]&31](q,B,x,t,G)|0;if(!t){E=c[(A&p)>>2]|0;s=(k<<2)+4+E|0;t=g;t=jw(s|0,((s|0)<0)<<31>>31|0,c[(t&p)>>2]|0,c[(t&p)+4>>2]|0)|0;s=G;x=g;c[(x&p)>>2]=t;c[(x&p)+4>>2]=s;x=c[(r&p)>>2]|0;if((x|0)!=0?(x|0)!=(((c[2514]|0)/(E|0)|0)+1|0):0)if(x>>>0<=(c[(f&p)+24>>2]|0)>>>0?(di(h,x)|0)==0:0){if(C){t=jw(t|0,s|0,-4,-1)|0;t=es(q,t,G,u)|0;if(t){m=t;break}if(!l){t=c[(f&p)+48>>2]|0;s=(c[(A&p)>>2]|0)+-200|0;if((s|0)>0)do{t=(d[(B+s&n)>>0]|0)+t|0;s=s+-200|0}while((s|0)>0);if((t|0)!=(c[(u&p)>>2]|0)){m=101;break}}}if((h|0)!=0?(m=bi(h,x)|0,(m|0)!=0):0)break;u=(x|0)==1;if(u?(v=f+142|0,w=a[(B&n)+20>>0]|0,(b[(v&o)>>1]|0)!=(w&255|0)):0)b[(v&o)>>1]=w&255;if(!(c[(f&p)+208>>2]|0)){w=f+204|0;t=ac[c[8876>>2]&63](c[((c[(w&p)>>2]|0)&p)+40>>2]|0,x,0)|0;t=il(c[(w&p)>>2]|0,x,t)|0}else t=0;c[(y&p)>>2]=t;if(C)if(!(a[(f&n)+7>>0]|0)){w=g;h=c[(w&p)+4>>2]|0;s=f+80|0;v=c[(s&p)+4>>2]|0;s=(h|0)<(v|0)|((h|0)==(v|0)?(c[(w&p)>>2]|0)>>>0<=(c[(s&p)>>2]|0)>>>0:0)}else s=1;else if(!t)s=1;else s=(b[(t&o)+24>>1]&4)==0;r=c[(f&p)+60>>2]|0;q=c[(r&p)>>2]|0;do if(q){m=a[(f&n)+16>>0]|0;if((m&255)>3){if(!s){z=33;break}}else if(!(m<<24>>24==0&s)){z=33;break}s=c[(A&p)>>2]|0;m=sw(s|0,((s|0)<0)<<31>>31|0,x+-1|0,0)|0;m=tc[c[(q&p)+12>>2]&31](r,B,s,m,G)|0;s=f+32|0;if(x>>>0>(c[(s&p)>>2]|0)>>>0)c[(s&p)>>2]=x;s=c[(f&p)+88>>2]|0;if(s)ap(s,x,B)}else z=33;while(0);if((z|0)==33)if((k|0)==0&(t|0)==0){w=f+20|0;a[(w&n)>>0]=d[(w&n)>>0]|2;m=zg(f,x,y,1)|0;a[(w&n)>>0]=d[(w&n)>>0]&253;if(m)break;t=c[(y&p)>>2]|0;m=t+24|0;b[(m&o)>>1]=e[(m&o)>>1]&65527;To(t);m=0}else m=0;if(t){r=c[(t&p)+4>>2]|0;kw(r|0,B|0,c[(A&p)>>2]|0)|0;cc[c[(f&p)+196>>2]&31](t);do if(C){if((l|0)!=0?(w=g,h=c[(w&p)+4>>2]|0,x=f+80|0,v=c[(x&p)+4>>2]|0,(h|0)>(v|0)|((h|0)==(v|0)?(c[(w&p)>>2]|0)>>>0>(c[(x&p)>>2]|0)>>>0:0)):0)break;xl(t)}while(0);if(u){s=f+104|0;q=r+24|0;r=s+16|0;do{a[(s&n)>>0]=a[(q&n)>>0]|0;s=s+1|0;q=q+1|0}while((s|0)<(r|0))}ol(t)}}else m=0;else m=101}else m=t}else m=t;while(0);i=D;return m|0}function xq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=b+24|0;if((c[(g&p)>>2]|0)<=(e|0)){i=e+1|0;j=b+32|0;h=Xc(c[(j&p)>>2]|0,i<<2)|0;if(!h){g=7;h=0}else{k=c[(g&p)>>2]|0;fw(h+(k<<2)|0,0,i-k<<2|0)|0;c[(j&p)>>2]=h;c[(g&p)>>2]=i;k=5}}else{h=c[(b&p)+32>>2]|0;k=5}if((k|0)==5){j=b+32|0;h=h+(e<<2)|0;do if(!(c[(h&p)>>2]|0)){if((a[(b&n)+43>>0]|0)!=2){g=c[(b&p)+4>>2]|0;g=tc[c[((c[(g&p)>>2]|0)&p)+52>>2]&31](g,e,32768,d[(b&n)+44>>0]|0,h)|0;if((g|0)!=8)break;g=b+46|0;a[(g&n)>>0]=d[(g&n)>>0]|2;g=0;break}g=qg(32768,0)|0;if(g)fw(g|0,0,32768)|0;c[((c[(j&p)>>2]|0)+(e<<2)&p)>>2]=g;g=(c[((c[(j&p)>>2]|0)+(e<<2)&p)>>2]|0)==0?7:0}else g=0;while(0);h=c[((c[(j&p)>>2]|0)+(e<<2)&p)>>2]|0}c[(f&p)>>2]=h;return g|0}function yq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=b+d|0;if(!e){g=0;d=0}else{g=c[(e&p)>>2]|0;d=c[(e&p)+4>>2]|0}if(!a)do{g=g+d+(nw(c[(b&p)>>2]|0)|0)|0;d=g+d+(nw(c[(b&p)+4>>2]|0)|0)|0;b=b+8|0}while(b>>>0>>0);else do{g=g+d+(c[(b&p)>>2]|0)|0;d=g+d+(c[(b&p)+4>>2]|0)|0;b=b+8|0}while(b>>>0>>0);c[(f&p)>>2]=g;c[(f&p)+4>>2]=d;return}function zq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=a+8|0;g=c[(h&p)>>2]|0;h=c[(h&p)+4>>2]|0;if((h|0)>(f|0)|(h|0)==(f|0)&g>>>0>e>>>0?(i=jw(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0,k=G,!((k|0)<(h|0)|(k|0)==(h|0)&i>>>0>>0)):0){i=dw(g|0,h|0,e|0,f|0)|0;h=a+4|0;g=c[(h&p)>>2]|0;g=tc[c[((c[(g&p)>>2]|0)&p)+12>>2]&31](g,b,i,e,f)|0;if(!g){e=jw(i|0,((i|0)<0)<<31>>31|0,e|0,f|0)|0;f=G;g=c[(h&p)>>2]|0;g=rc[c[((c[(g&p)>>2]|0)&p)+20>>2]&127](g,c[(a&p)+16>>2]&19)|0;if(!((i|0)==(d|0)|(g|0)!=0)){d=d-i|0;h=b+i|0;g=f;j=5}}}else{h=b;g=f;j=5}if((j|0)==5){f=c[(a&p)+4>>2]|0;g=tc[c[((c[(f&p)>>2]|0)&p)+12>>2]&31](f,h,d,e,g)|0}return g|0}function Aq(a){a=a|0;var d=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))fa();h=l+8|0;k=l+4|0;g=l;c[(h&p)>>2]=0;c[(k&p)>>2]=0;c[(g&p)>>2]=0;f=a+68|0;d=c[(f&p)>>2]|0;if(d){Po(a,(d+33|0)>>>12,h,k,g)|0;g=(c[(f&p)>>2]|0)-(c[(g&p)>>2]|0)|0;a=c[(h&p)>>2]|0;f=0;do{d=a+(f<<1)|0;if((e[(d&o)>>1]|0|0)>(g|0))b[(d&o)>>1]=0;f=f+1|0}while((f|0)!=8192);d=(c[(k&p)>>2]|0)+(g+1<<2)|0;fw(d|0,0,a-d|0)|0}i=l;return}function Bq(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();e=g;h=a+204|0;f=ac[c[8876>>2]&63](c[((c[(h&p)>>2]|0)&p)+40>>2]|0,d,0)|0;f=il(c[(h&p)>>2]|0,d,f)|0;do if(!f)e=0;else{if((b[(f&o)+26>>1]|0)==1){ml(f);e=0;break}c[(e&p)>>2]=0;d=kl(c[(a&p)+208>>2]|0,c[(f&p)+20>>2]|0,e)|0;if(!d){d=ll(f,c[(e&p)>>2]|0)|0;if(!d){cc[c[(a&p)+196>>2]&31](f);d=0}}Bg(f);e=d}while(0);d=c[(a&p)+88>>2]|0;if(d)do{c[(d&p)+16>>2]=1;d=c[(d&p)+44>>2]|0}while((d|0)!=0);i=g;return e|0}function Cq(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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;G=i;i=i+16|0;if((i|0)>=(j|0))fa();F=G;C=c[(f&p)+52>>2]|0;t=(c[(C&p)+36>>2]|0)+-4|0;y=g&65535;D=h&65535;x=D+y|0;E=c[(f&p)+56>>2]|0;if(b[(C&o)+22>>1]&4)fw(E+y|0,0,D|0)|0;B=d[(f&n)+6>>0]|0;C=B+1|0;q=C&65535;A=C&65535;if((a[(E+A&n)+1>>0]|0)==0?(a[(E+A&n)>>0]|0)==0:0){v=h&255;t=(h&65535)>>>8&255;u=x;s=0;r=0;A=23}else{v=q;A=6}a:do if((A|0)==6){while(1){A=0;m=v&65535;r=a[(E+m&n)+1>>0]|0;l=r&255;u=d[(E+m&n)>>0]<<8|l;q=v;v=u&65535;if(!(u>>>0>>0&(u|0)!=0)){s=r;w=u;break}if(u>>>0<(m+4|0)>>>0){A=8;break}else A=6}if((A|0)==8){c[(F&p)>>2]=54420;c[(F&p)+4>>2]=10788;bd(11,13600,F);k=11;break}if(w>>>0>t>>>0){c[(F&p)>>2]=54423;c[(F&p)+4>>2]=10788;bd(11,13600,F);k=11;break}k=h&255;t=(h&65535)>>>8&255;r=(v&65535)>>>8&255;do if((w+-1|0)>>>0<(x+3|0)>>>0)if(x>>>0>w>>>0){c[(F&p)>>2]=54434;c[(F&p)+4>>2]=10788;bd(11,13600,F);k=11;break a}else{u=(d[(E+w&n)+2>>0]<<8|d[(E+w&n)+3>>0])+w|0;t=u-y|0;v=t&255;t=(t&65535)>>>8&255;s=a[(E+w&n)+1>>0]|0;r=a[(E+w&n)>>0]|0;k=l-x&255;break}else{v=k;u=x;k=0}while(0);do if(m>>>0>C>>>0?(z=(d[(E+m&n)+2>>0]<<8|d[(E+m&n)+3>>0])+m|0,(z+3|0)>=(y|0)):0)if((y|0)<(z|0)){c[(F&p)>>2]=54447;c[(F&p)+4>>2]=10788;bd(11,13600,F);k=11;break a}else{t=u-m|0;g=q;v=t&255;t=(t&65535)>>>8&255;k=(k&255)+y-z&255;break}while(0);m=E+(B+7)|0;l=a[(m&n)>>0]|0;if((l&255)<(k&255)){c[(F&p)>>2]=54453;c[(F&p)+4>>2]=10788;bd(11,13600,F);k=11;break}else{a[(m&n)>>0]=(l&255)-(k&255);A=23;break}}while(0);b:do if((A|0)==23){k=g&65535;l=E+(B+5)|0;m=E+(B+6)|0;do if((k|0)==(d[(l&n)>>0]<<8|d[(m&n)>>0]|0))if((q&65535|0)==(C|0)){a[(E+C&n)>>0]=r;a[(E+B&n)+2>>0]=s;a[(l&n)>>0]=u>>>8;a[(m&n)>>0]=u;break}else{c[(F&p)>>2]=54460;c[(F&p)+4>>2]=10788;bd(11,13600,F);k=11;break b}else{F=q&65535;a[(E+F&n)>>0]=(g&65535)>>>8;a[(E+F&n)+1>>0]=g;a[(E+k&n)>>0]=r;a[(E+k&n)+1>>0]=s;a[(E+k&n)+2>>0]=t;a[(E+k&n)+3>>0]=v}while(0);k=f+16|0;b[(k&o)>>1]=(e[(k&o)>>1]|0)+D;k=0}while(0);i=G;return k|0}function Dq(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;if((i|0)>=(j|0))fa();t=w;s=d[(b&n)+6>>0]|0;v=c[(b&p)+56>>2]|0;r=c[((c[(b&p)+52>>2]|0)&p)+36>>2]|0;l=r+-4|0;b=s+1|0;while(1){m=v+b|0;o=(d[(m&n)>>0]|0)<<8|(d[(v+b&n)+1>>0]|0);if(!o){b=0;break}if((o|0)>(l|0)|(o|0)<(b+4|0)){u=4;break}h=v+(o+2)|0;k=v+(o+3)|0;b=(d[(h&n)>>0]|0)<<8|(d[(k&n)>>0]|0);if((b|0)<(e|0))b=o;else{q=h;l=o;u=6;break}}a:do if((u|0)==4){c[(t&p)>>2]=54252;c[(t&p)+4>>2]=10788;bd(11,13600,t);c[(f&p)>>2]=11;b=0}else if((u|0)==6){h=b-e|0;do if((h|0)>=4)if((b+l|0)>(r|0)){c[(t&p)>>2]=54275;c[(t&p)+4>>2]=10788;bd(11,13600,t);c[(f&p)>>2]=11;b=0;break a}else{a[(q&n)>>0]=h>>>8;a[(k&n)>>0]=h;break}else{b=v+(s+7)|0;if((d[(b&n)>>0]|0)<=59){s=v+l|0;s=d[(s&n)>>0]|d[(s&n)+1>>0]<<8;a[(m&n)>>0]=s;a[(m&n)+1>>0]=s>>8;a[(b&n)>>0]=(d[(b&n)>>0]|0)+h;break}if(!g){b=0;break a}c[(g&p)>>2]=1;b=0;break a}while(0);b=v+(h+l)|0}while(0);i=w;return b|0}function Eq(f){f=f|0;var g=0,h=0,k=0,l=0,m=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;G=i;i=i+16|0;if((i|0)>=(j|0))fa();E=G;B=c[(f&p)+56>>2]|0;D=d[(f&n)+6>>0]|0;x=e[(f&o)+14>>1]|0;y=b[(f&o)+18>>1]|0;t=y&65535;u=f+52|0;v=c[((c[(u&p)>>2]|0)&p)+36>>2]|0;C=(t<<1)+x|0;w=v+-4|0;z=B+(D+5)|0;A=B+(D+6)|0;a:do if(y<<16>>16){s=v;y=0;h=B;k=0;while(1){m=(y<<1)+x|0;l=B+m|0;m=B+(m+1)|0;q=(d[(l&n)>>0]|0)<<8|(d[(m&n)>>0]|0);if((q|0)<(C|0)|(q|0)>(w|0)){F=3;break}r=(Lp(f,h+q|0)|0)&65535;g=s-r|0;if((g|0)<(C|0)|(r+q|0)>(v|0)){F=5;break}a[(l&n)>>0]=g>>>8;a[(m&n)>>0]=g;if(!k)if((g|0)==(q|0))k=0;else{k=c[((c[(c[(u&p)>>2]&p)>>2]|0)&p)+200>>2]|0;h=(d[(z&n)>>0]|0)<<8|(d[(A&n)>>0]|0);kw(k+h|0,B+h|0,s-h|0)|0;h=k;F=9}else F=9;if((F|0)==9){F=0;kw(B+g|0,h+q|0,r|0)|0}y=y+1|0;if((y|0)>=(t|0)){F=11;break a}else s=g}if((F|0)==3){c[(E&p)>>2]=54184;c[(E&p)+4>>2]=10788;bd(11,13600,E);g=11;break}else if((F|0)==5){c[(E&p)>>2]=54196;c[(E&p)+4>>2]=10788;bd(11,13600,E);g=11;break}}else{g=v;F=11}while(0);if((F|0)==11){a[(z&n)>>0]=g>>>8;a[(A&n)>>0]=g;a[(B+D&n)+1>>0]=0;a[(B+D&n)+2>>0]=0;a[(B+D&n)+7>>0]=0;F=g-C|0;fw(B+C|0,0,F|0)|0;if((F|0)==(e[(f&o)+16>>1]|0|0))g=0;else{c[(E&p)>>2]=54221;c[(E&p)+4>>2]=10788;bd(11,13600,E);g=11}}i=G;return g|0}function Fq(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,k=0;k=i;i=i+32|0;if((i|0)>=(j|0))fa();h=k;if((c[(f&p)>>2]|0)==0?(rp(a,e,h),g=b[(h&o)+18>>1]|0,g<<16>>16!=0):0){g=g&65535;zp(c[(a&p)+52>>2]|0,(d[(e+g&n)+1>>0]|0)<<16|(d[(e+g&n)>>0]|0)<<24|(d[(e+g&n)+2>>0]|0)<<8|(d[(e+g&n)+3>>0]|0),3,c[(a&p)+72>>2]|0,f)}i=k;return}function Gq(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;do if(!(c[(g&p)>>2]|0)){h=c[(b&p)+52>>2]|0;j=c[(b&p)+56>>2]|0;l=c[(f&p)+56>>2]|0;i=d[(b&n)+6>>0]|0;k=(c[(f&p)+72>>2]|0)==1?100:0;m=d[(j+i&n)+5>>0]<<8|d[(j+i&n)+6>>0];kw(l+m|0,j+m|0,(c[(h&p)+36>>2]|0)-m|0)|0;kw(l+k|0,j+i|0,(e[(b&o)+18>>1]<<1)+(e[(b&o)+14>>1]|0)|0)|0;a[(f&n)>>0]=0;b=$p(f)|0;if(b){c[(g&p)>>2]=b;break}if(a[(h&n)+17>>0]|0)c[(g&p)>>2]=_p(f)|0}while(0);return}function Hq(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=d[(f&n)+6>>0]|0;w=c[(f&p)+56>>2]|0;m=c[(f&p)+52>>2]|0;r=c[(m&p)+36>>2]|0;q=w+r|0;j=c[(f&p)+64>>2]|0;m=c[((c[(m&p)>>2]|0)&p)+200>>2]|0;s=w+(t+5)|0;u=w+(t+6)|0;v=(d[(s&n)>>0]|0)<<8|(d[(u&n)>>0]|0);kw(m+v|0,w+v|0,r-v|0)|0;v=w;if((g|0)>0){r=0;l=j;j=q;while(1){k=c[(h+(r<<2)&p)>>2]|0;if(k>>>0>w>>>0&k>>>0>>0)k=m+(k-v)|0;x=e[(i+(r<<1)&o)>>1]|0;j=j+(0-x)|0;kw(j|0,k|0,x|0)|0;k=j-v|0;a[(l&n)>>0]=k>>>8;a[(l&n)+1>>0]=k;r=r+1|0;if((r|0)==(g|0))break;else l=l+2|0}}else j=q;i=f+18|0;b[(i&o)>>1]=g;a[(f&n)+1>>0]=0;a[(w+t&n)+1>>0]=0;a[(w+t&n)+2>>0]=0;a[(w+t&n)+3>>0]=(e[(i&o)>>1]|0)>>>8;a[(w+t&n)+4>>0]=b[(i&o)>>1];i=j-v|0;a[(s&n)>>0]=i>>>8;a[(u&n)>>0]=i;a[(w+t&n)+7>>0]=0;return}function Iq(a,b,f,g){a=a|0;b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0;u=c[(a&p)+56>>2]|0;s=u+(c[((c[(a&p)+52>>2]|0)&p)+36>>2]|0)|0;q=u+((d[(a&n)+6>>0]|0)+8+(d[(a&n)+7>>0]|0))|0;a:do if((b|0)>0){r=u;t=0;h=0;l=0;m=0;while(1){j=c[(f+(t<<2)&p)>>2]|0;if(j>>>0>=q>>>0&j>>>0>>0){i=e[(g+(t<<1)&o)>>1]|0;k=j+i|0;if((l|0)!=(k|0)){if(l)Cq(a,l-r&65535,m&65535)|0;if(k>>>0>s>>>0){h=0;break a}}else i=i+m|0;h=h+1|0}else{j=l;i=m}t=t+1|0;if((t|0)>=(b|0))break;else{l=j;m=i}}if(j)Cq(a,j-u&65535,i&65535)|0}else h=0;while(0);return h|0}function Jq(b,d,f,g,h,k,l){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;if((i|0)>=(j|0))fa();w=y;q=c[(b&p)+56>>2]|0;m=c[(f&p)>>2]|0;if(!(a[(q&n)+1>>0]|0))v=(a[(q&n)+2>>0]|0)!=0;else v=1;a:do if((h|0)>0){t=0;while(1){s=e[(l+(t<<1)&o)>>1]|0;if(v?(u=Dq(b,s,w,0)|0,(u|0)!=0):0)r=u;else{r=m+(0-s)|0;if(r>>>0>>0){m=1;break a}else m=r}kw(r|0,c[(k+(t<<2)&p)>>2]|0,s|0)|0;s=r-q|0;a[(g&n)>>0]=s>>>8;a[(g&n)+1>>0]=s;t=t+1|0;if((t|0)>=(h|0)){x=9;break}else g=g+2|0}}else x=9;while(0);if((x|0)==9){c[(f&p)>>2]=m;m=0}i=y;return m|0}function Kq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0;o=i;i=i+16|0;if((i|0)>=(j|0))fa();n=o;e=c[(a&p)+44>>2]|0;h=a;f=c[(h&p)>>2]|0;h=c[(h&p)+4>>2]|0;a:do if(!e){m=a+40|0;e=c[(m&p)>>2]|0;g=((e|0)<0)<<31>>31;l=rw(f|0,h|0,e|0,g|0)|0;if(!l){k=a+8|0;k=dw(c[(k&p)>>2]|0,c[(k&p)+4>>2]|0,f|0,h|0)|0;q=G;r=c[(a&p)+24>>2]|0;e=tc[c[((c[(r&p)>>2]|0)&p)+8>>2]&31](r,c[(a&p)+36>>2]|0,(q|0)>(g|0)|(q|0)==(g|0)&k>>>0>e>>>0?e:k,f,h)|0;if(e)break;e=c[(m&p)>>2]|0}k=e-l|0;if((k|0)>=(b|0)){c[(d&p)>>2]=(c[(a&p)+36>>2]|0)+l;e=a;b=jw(c[(e&p)>>2]|0,c[(e&p)+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;e=a;c[(e&p)>>2]=b;c[(e&p)+4>>2]=G;e=0;break}e=a+16|0;f=c[(e&p)>>2]|0;if((f|0)<(b|0)){f=f<<1;f=(f|0)<128?128:f;while(1)if((f|0)<(b|0))f=f<<1;else{h=f;break}g=a+28|0;f=rg(c[(g&p)>>2]|0,h,((h|0)<0)<<31>>31)|0;if(!f){e=7;break}c[(e&p)>>2]=h;c[(g&p)>>2]=f}else f=c[(a&p)+28>>2]|0;h=a+28|0;kw(f|0,(c[(a&p)+36>>2]|0)+l|0,k|0)|0;l=a;l=jw(c[(l&p)>>2]|0,c[(l&p)+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;e=a;c[(e&p)>>2]=l;c[(e&p)+4>>2]=G;e=b-k|0;if((e|0)>0){g=e;do{f=c[(m&p)>>2]|0;f=(g|0)>(f|0)?f:g;e=Kq(a,f,n)|0;if(e)break a;kw((c[(h&p)>>2]|0)+(b-g)|0,c[(n&p)>>2]|0,f|0)|0;g=g-f|0}while((g|0)>0)}c[(d&p)>>2]=c[(h&p)>>2];e=0}else{c[(d&p)>>2]=e+f;b=jw(f|0,h|0,b|0,((b|0)<0)<<31>>31|0)|0;e=a;c[(e&p)>>2]=b;c[(e&p)+4>>2]=G;e=0}while(0);i=o;return e|0}function Lq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+64|0;if((i|0)>=(j|0))fa();x=A+44|0;z=A;y=A+40|0;v=a+8|0;u=c[(v&p)>>2]|0;v=c[(v&p)+4>>2]|0;w=a+4|0;q=c[(w&p)>>2]|0;Pp(c[(a&p)+48>>2]|0,z,c[((c[((c[(a&p)>>2]|0)&p)+8>>2]|0)&p)+12>>2]|0,u,v);o=q+8|0;q=q+12|0;r=z+24|0;s=z+16|0;t=a+16|0;while(1){f=c[((c[(o&p)>>2]|0)&p)+4>>2]|0;g=c[(q&p)>>2]|0;h=c[(g+(f*56|0)&p)+20>>2]|0;if(!(c[(g+(f*56|0)&p)+24>>2]|0)){d=1;b=0;break}l=r;k=c[(l&p)>>2]|0;l=c[(l&p)+4>>2]|0;m=c[(s&p)>>2]|0;n=((h|0)<0)<<31>>31;b=h;e=n;d=0;do{d=d+1|0;b=mw(b|0,e|0,7)|0;e=G}while(((b|0)!=0|(e|0)!=0)&(d|0)<9);k=jw(k|0,l|0,h|0,n|0)|0;k=jw(k|0,G|0,m|0,((m|0)<0)<<31>>31|0)|0;d=jw(k|0,G|0,d|0,((d|0)<0)<<31>>31|0)|0;k=G;b=c[(t&p)>>2]|0;b=jw(b|0,((b|0)<0)<<31>>31|0,u|0,v|0)|0;e=G;if((k|0)>(e|0)|(k|0)==(e|0)&d>>>0>b>>>0){d=1;b=0;break}Qp(z,x,pm(x,h,n)|0);Qp(z,c[(g+(f*56|0)&p)+32>>2]|0,h);b=Wm(c[(w&p)>>2]|0,y)|0;if(b){d=0;break}}z=Rp(z,a+56|0)|0;i=A;return (d?z:b)|0}function Mq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;d=i;i=i+16|0;if((i|0)>=(j|0))fa();f=d;c[(f&p)>>2]=e;e=Wk(a,13592,f)|0;mg(a,b);i=d;return e|0}function Nq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))fa();m=q;h=a[(d&n)>>0]|0;if(h<<24>>24!=0&(e|0)>0){l=0;do{if((h+-48&255)<10){k=0;do{k=(k*10|0)+-48+(h<<24>>24)|0;d=d+1|0;h=a[(d&n)>>0]|0}while((h+-48&255)<10);h=0}else{k=0;h=0}b[(f+(l<<1)&o)>>1]=fs(k,h)|0;d=(a[(d&n)>>0]|0)==32?d+1|0:d;l=l+1|0;h=a[(d&n)>>0]|0}while(h<<24>>24!=0&(l|0)<(e|0))}l=g+51|0;a[(l&n)>>0]=a[(l&n)>>0]&-69;a:do if(a[(d&n)>>0]|0){f=g+44|0;b:while(1){do if(!(Gh(13448,d,10352,0)|0)){if(Gh(13464,d,10352,0)|0){c[(m&p)>>2]=0;Dn(d+3|0,m)|0;h=c[(m&p)>>2]|0;b[(f&o)>>1]=fs(h,((h|0)<0)<<31>>31)|0;break}if(Gh(13480,d,10352,0)|0)a[(l&n)>>0]=a[(l&n)>>0]|64}else a[(l&n)>>0]=a[(l&n)>>0]|4;while(0);while(1){h=a[(d&n)>>0]|0;if(h<<24>>24==32|h<<24>>24==0)break;d=d+1|0}while(1){k=d+1|0;if(!(h<<24>>24))break a;else if(h<<24>>24!=32)continue b;h=a[(k&n)>>0]|0;d=k}}}while(0);i=q;return}function Oq(d){d=d|0;var e=0,f=0;f=d+8|0;e=c[(f&p)>>2]|0;if(!e){e=vh(d)|0;c[(f&p)>>2]=e;if(e)wh(e,155,0,0,0)|0;if((c[(d&p)+408>>2]|0)==0?(b[((c[(d&p)>>2]|0)&o)+60>>1]&8)==0:0)a[(d&n)+23>>0]=1}return e|0}function Pq(b,d){b=b|0;d=d|0;var e=0;e=(c[(b&p)+32>>2]|0)+-1|0;if((e|0)>(c[((c[(b&p)+24>>2]|0)&p)+88>>2]|0)?(a[((c[(b&p)+4>>2]|0)+(e*20|0)&n)>>0]|0)==d<<24>>24:0){zh(b,e);e=1}else e=0;return e|0}function Qq(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;j=Oq(d)|0;i=g+32|0;gs(d,f,c[(i&p)>>2]|0,(h|0)==55&1,c[(g&p)>>2]|0);if(!(a[(g&n)+44>>0]&32)){g=b[(g&o)+38>>1]|0;xh(j,wh(j,h,e,c[(i&p)>>2]|0,f)|0,g,-14)}else{i=c[(g&p)+8>>2]|0;a:do if(!i)i=0;else while(1){if((a[(i&n)+51>>0]&3)==2)break a;i=c[(i&p)+20>>2]|0;if(!i){i=0;break}}while(0);wh(j,h,e,c[(i&p)+40>>2]|0,f)|0;g=c[(d&p)+8>>2]|0;xh(g,-1,hs(d,i)|0,-6)}return}function Rq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((d|0)!=0?(a[(d&n)>>0]|0)==-97:0)wh(c[(b&p)+8>>2]|0,33,c[(d&p)+28>>2]|0,e,0)|0;else h=4;if(((h|0)==4?(g=is(b,d,e)|0,(g|0)!=(e|0)):0)?(f=c[(b&p)+8>>2]|0,(f|0)!=0):0)wh(f,34,g,e,0)|0;return}function Sq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();l=m;h=c[(b&p)>>2]|0;do if(((a[(h&n)+145>>0]|0)==0?(a[(b&n)+451>>0]|0)==0:0)?(k=c[(h&p)+284>>2]|0,(k|0)!=0):0){h=kc[k&7](c[(h&p)+288>>2]|0,d,e,f,g,c[(b&p)+492>>2]|0)|0;if((h|0)==1){th(b,25216,l);c[(b&p)+12>>2]=23;h=1;break}else if((h|0)==0|(h|0)==2)break;else{th(b,25232,l);c[(b&p)+12>>2]=1;h=1;break}}else h=0;while(0);i=m;return h|0}function Tq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;d=Wq(c[(a&p)>>2]|0,d)|0;do if(d){e=Oq(a)|0;if((e|0)!=0?(Sq(a,32,c[(b<<2&p)+37088>>2]|0,d,0)|0)==0:0){xh(e,wh(e,2,b,0,0)|0,d,-1);break}mg(c[(a&p)>>2]|0,d)}while(0);return}function Uq(e,f,g,h,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;if((i|0)>=(j|0))fa();u=y;s=y+4|0;x=c[(e&p)>>2]|0;f=er(e,f,g,s)|0;a:do if((f|0)>=0){t=(h|0)!=0;if(t?(c[(g&p)+4>>2]|0)!=0&(f|0)!=1:0){th(e,36976,u);break}w=t?1:f;g=c[(s&p)>>2]|0;t=g;f=c[(t&p)+4>>2]|0;s=e+496|0;c[(s&p)>>2]=c[(t&p)>>2];c[(s&p)+4>>2]=f;s=Wq(x,g)|0;if(s){b:do if((Lr(e,s)|0)==0?(r=(a[(x&n)+144>>0]|0)==1?1:h,v=x+16|0,q=c[((c[(v&p)>>2]|0)+(w<<4)&p)>>2]|0,(Sq(e,18,(r|0)==1?13184:13208,0,q)|0)==0):0){h=(r|0)!=0;if(!k)f=h?4:2;else f=h?6:8;t=(l|0)!=0;if(!t?(Sq(e,f,s,0,q)|0)!=0:0)break;do if(!(a[(e&n)+451>>0]|0)){h=c[((c[(v&p)>>2]|0)+(w<<4)&p)>>2]|0;if(Gn(e)|0)break b;if(!(_h(x,s,h)|0)){if(!(bq(x,s,h)|0))break;c[(u&p)>>2]=s;th(e,37048,u);break b}if(!m){c[(u&p)>>2]=g;th(e,37024,u);break b}else{Ar(e,w);break b}}while(0);r=mh(x,76,0)|0;if(!r){a[(x&n)+65>>0]=1;c[(e&p)+12>>2]=7;v=e+64|0;c[(v&p)>>2]=(c[(v&p)>>2]|0)+1;break}q=r+0|0;h=q+76|0;do{a[(q&n)>>0]=0;q=q+1|0}while((q|0)<(h|0));c[(r&p)>>2]=s;b[(r&o)+36>>1]=-1;q=c[((c[(v&p)>>2]|0)+(w<<4)&p)+12>>2]|0;c[(r&p)+68>>2]=q;b[(r&o)+40>>1]=1;b[(r&o)+28>>1]=200;c[(e&p)+484>>2]=r;if((a[(e&n)+18>>0]|0)==0?(_v(s,26576)|0)==0:0)c[(q&p)+72>>2]=r;if(a[(x&n)+145>>0]|0)break a;g=Oq(e)|0;if(!g)break a;v=c[(e&p)+408>>2]|0;Ar(e,w);q=1<>2]=c[(v&p)>>2]|q;if(t)wh(g,146,0,0,0)|0;r=e+72|0;f=c[(r&p)>>2]|0;s=f+1|0;c[(e&p)+384>>2]=s;t=f+2|0;c[(e&p)+388>>2]=t;f=f+3|0;c[(r&p)>>2]=f;wh(g,51,w,f,2)|0;r=g+96|0;c[(r&p)>>2]=c[(r&p)>>2]|q;r=wh(g,45,f,0,0)|0;wh(g,25,(c[(x&p)+24>>2]&32768|0)!=0?1:4,f,0)|0;wh(g,52,w,2,f)|0;wh(g,25,d[(x&n)+62>>0]|0,f,0)|0;wh(g,52,w,5,f)|0;h=g+32|0;q=c[(h&p)>>2]|0;if(q>>>0>r>>>0)c[((c[(g&p)+4>>2]|0)+(r*20|0)&p)+8>>2]=q;c[((c[(g&p)+24>>2]|0)&p)+88>>2]=q+-1;if(!(l|k))c[(e&p)+416>>2]=wh(g,121,w,t,0)|0;else wh(g,25,0,t,0)|0;js(e,w);wh(g,74,0,s,0)|0;wh(g,28,0,f,0)|0;wh(g,75,0,f,s)|0;q=c[(g&p)+4>>2]|0;if(q)a[(q+(((c[(h&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=8;wh(g,61,0,0,0)|0;break a}while(0);mg(x,s)}}while(0);i=y;return}function Vq(f,g,h,k,l){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=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,O=0,P=0,Q=0,R=0;R=i;i=i+176|0;if((i|0)>=(j|0))fa();M=R+80|0;J=R+168|0;G=R;H=R+136|0;I=R+112|0;N=c[(f&p)>>2]|0;a:do if((!((h|0)==0&(l|0)==0)?(O=N+65|0,(a[(O&n)>>0]|0)==0):0)?(P=f+484|0,Q=c[(P&p)>>2]|0,(Q|0)!=0):0){L=N+145|0;if(a[(L&n)>>0]|0)c[(Q&p)+32>>2]=c[(N&p)+140>>2];b:do if(k&32){s=Q+44|0;r=d[(s&n)>>0]|0;if(r&8){th(f,36584,M);break a}if(!(r&4)){c[(M&p)>>2]=c[(Q&p)>>2];th(f,36640,M);break}a[(s&n)>>0]=r|32;t=c[(f&p)+8>>2]|0;s=c[(f&p)+416>>2]|0;if(s){if((s|0)<0)s=(c[(t&p)+32>>2]|0)+-1|0;if(!(a[((c[(t&p)>>2]|0)&n)+65>>0]|0))s=(c[(t&p)+4>>2]|0)+(s*20|0)|0;else s=29120;a[(s&n)>>0]=120}s=c[(f&p)+420>>2]|0;if(s){if((s|0)<0)s=(c[(t&p)+32>>2]|0)+-1|0;if(!(a[((c[(t&p)>>2]|0)&n)+65>>0]|0))r=(c[(t&p)+4>>2]|0)+(s*20|0)|0;else r=29120;a[(r&n)>>0]=16}r=Q+36|0;if((b[(r&o)>>1]|0)>-1){s=lr(f,0,0)|0;if(!s)break;C=kh(c[(f&p)>>2]|0,c[((c[(Q&p)+4>>2]|0)+((b[(r&o)>>1]|0)*24|0)&p)>>2]|0)|0;D=c[(s&p)+4>>2]|0;c[(D&p)+4>>2]=C;a[(D&n)+12>>0]=a[(f&n)+448>>0]|0;s=$q(f,0,0,0,s,d[(Q&n)+45>>0]|0,0,0,0,0)|0;if(!s)break;x=s+51|0;a[(x&n)>>0]=a[(x&n)>>0]&-4|2;b[(r&o)>>1]=-1;x=b[(s&o)+46>>1]|0}else{s=c[(Q&p)+8>>2]|0;c:do if(!s)s=0;else while(1){if((a[(s&n)+51>>0]&3)==2)break c;s=c[(s&p)+20>>2]|0;if(!s){s=0;break}}while(0);y=s+46|0;t=b[(y&o)>>1]|0;if((t&65535)>1){w=c[(s&p)+4>>2]|0;v=s+48|0;x=1;r=1;do{m=b[(w+(x<<1)&o)>>1]|0;u=r;q=w;while(1){if((u|0)<=0){F=36;break}if((b[(q&o)>>1]|0)==m<<16>>16){F=35;break}else{u=u+-1|0;q=q+2|0}}if((F|0)==35){F=0;b[(v&o)>>1]=(b[(v&o)>>1]|0)+-1<<16>>16}else if((F|0)==36){F=0;b[(w+(r<<1)&o)>>1]=m;t=b[(y&o)>>1]|0;r=r+1|0}x=x+1|0}while((x|0)<(t&65535|0))}else r=1;x=r&65535;b[(y&o)>>1]=x}u=s+51|0;t=a[(u&n)>>0]|32;a[(u&n)>>0]=t;D=x&65535;if(!(a[(N&n)+147>>0]|0)){if(x<<16>>16){t=c[(s&p)+4>>2]|0;r=c[(Q&p)+4>>2]|0;q=0;do{a[(r+((b[(t+(q<<1)&o)>>1]|0)*24|0)&n)+20>>0]=1;q=q+1|0}while((q|0)<(D|0));t=a[(u&n)>>0]|0}a[(u&n)>>0]=t|8}c[(s&p)+40>>2]=c[(Q&p)+32>>2];u=c[(Q&p)+8>>2]|0;if(u){A=x<<16>>16==0;B=s+4|0;C=s+32|0;do{d:do if((a[(u&n)+51>>0]&3)!=2){do if(A)t=b[(u&o)+46>>1]|0;else{v=c[(u&p)+4>>2]|0;t=b[(u&o)+46>>1]|0;q=t&65535;m=c[(B&p)>>2]|0;z=0;r=0;do{w=b[(m+(z<<1)&o)>>1]|0;y=q;x=v;while(1){if((y|0)<=0){x=1;break}if((b[(x&o)>>1]|0)==w<<16>>16){x=0;break}else{y=y+-1|0;x=x+2|0}}r=x+r|0;z=z+1|0}while((z|0)<(D|0));q=u+46|0;if(!r)break;if(ks(N,u,(t&65535)+r|0)|0)break b;if(A)break d;w=b[(q&o)>>1]|0;z=u+4|0;m=u+32|0;y=w;x=0;w=w&65535;while(1){t=c[(z&p)>>2]|0;r=b[((c[(B&p)>>2]|0)+(x<<1)&o)>>1]|0;y=y&65535;v=t;while(1){if((y|0)<=0){F=63;break}if((b[(v&o)>>1]|0)==r<<16>>16)break;else{y=y+-1|0;v=v+2|0}}if((F|0)==63){F=0;b[(t+(w<<1)&o)>>1]=r;c[((c[(m&p)>>2]|0)+(w<<2)&p)>>2]=c[((c[(C&p)>>2]|0)+(x<<2)&p)>>2];w=w+1|0}x=x+1|0;if((x|0)>=(D|0))break d;y=b[(q&o)>>1]|0}}while(0);b[(u&o)+48>>1]=t}while(0);u=c[(u&p)+20>>2]|0}while((u|0)!=0)}y=Q+38|0;t=b[(y&o)>>1]|0;r=t<<16>>16;if((D|0)>=(r|0)){b[(s&o)+48>>1]=t;break}if((ks(N,s,r)|0)==0?(E=b[(y&o)>>1]|0,E<<16>>16>0):0){v=s+4|0;x=s+32|0;t=E;w=0;s=D;do{q=c[(v&p)>>2]|0;u=s;r=q;while(1){if((u|0)<=0){F=74;break}if((b[(r&o)>>1]|0)==(w|0))break;else{u=u+-1|0;r=r+2|0}}if((F|0)==74){F=0;b[(q+(s<<1)&o)>>1]=w;c[((c[(x&p)>>2]|0)+(s<<2)&p)>>2]=11152;t=b[(y&o)>>1]|0;s=s+1|0}w=w+1|0}while((w|0)<(t<<16>>16|0))}}while(0);F=Q+68|0;s=c[(F&p)>>2]|0;e:do if(s){r=c[(N&p)+20>>2]|0;if((r|0)>0){q=c[(N&p)+16>>2]|0;t=0;while(1){m=t+1|0;if((c[(q+(t<<4)&p)+12>>2]|0)==(s|0))break e;if((m|0)<(r|0))t=m;else{t=m;break}}}else t=0}else t=-1e6;while(0);q=c[(Q&p)+24>>2]|0;f:do if(q){c[(H&p)>>2]=0;c[(H&p)+4>>2]=0;c[(H&p)+8>>2]=0;c[(H&p)+12>>2]=0;c[(H&p)+16>>2]=0;c[(H&p)+20>>2]=0;c[(H&p)+24>>2]=0;c[(H&p)+28>>2]=0;s=G+0|0;r=s+80|0;do{c[(s&p)>>2]=0;s=s+4|0}while((s|0)<(r|0));c[(G&p)>>2]=1;c[(G&p)+16>>2]=c[(Q&p)>>2];c[(G&p)+24>>2]=Q;c[(G&p)+48>>2]=-1;c[(H&p)>>2]=f;c[(H&p)+4>>2]=G;b[(H&o)+28>>1]=4;s=q+4|0;if((c[(q&p)>>2]|0)>0){r=0;do{if(ls(H,c[((c[(s&p)>>2]|0)+(r*20|0)&p)>>2]|0)|0)break f;r=r+1|0}while((r|0)<(c[(q&p)>>2]|0))}}while(0);D=Q+38|0;m=b[(D&o)>>1]|0;if(m<<16>>16>0){s=m<<16>>16;r=c[(Q&p)+4>>2]|0;q=0;while(1){q=(d[(r&n)+22>>0]|0)+q|0;s=s+-1|0;if((s|0)<=0)break;else r=r+24|0}}else q=0;b[(Q&o)+42>>1]=fs(((e[(Q&o)+36>>1]|0)>>>15&65535)+q<<2,0)|0;q=c[(Q&p)+8>>2]|0;if(q)do{ms(q);q=c[(q&p)+20>>2]|0}while((q|0)!=0);if(!(a[(L&n)>>0]|0)){E=Oq(f)|0;if(!E)break;wh(E,61,0,0,0)|0;B=(c[(Q&p)+12>>2]|0)==0;r=B?36672:36680;B=B?31232:35480;do if(!l){q=k<<24>>24==0?h:f+504|0;l=c[(q&p)>>2]|0;s=c[(f&p)+496>>2]|0;m=l-s|0;if((a[(l&n)>>0]|0)!=59)m=(c[(q&p)+4>>2]|0)+m|0;c[(M&p)>>2]=r;c[(M&p)+4>>2]=m;c[(M&p)+8>>2]=s;s=f+388|0;m=Q;r=uh(N,36688,M)|0}else{s=f+388|0;wh(E,55,1,c[(s&p)>>2]|0,t)|0;r=c[(E&p)+4>>2]|0;if(r)a[(r+(((c[(E&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=4;c[(f&p)+68>>2]=2;a[(I&n)>>0]=14;c[(I&p)+4>>2]=1;a[(I&n)+1>>0]=0;c[(I&p)+8>>2]=0;c[(I&p)+12>>2]=0;ir(f,l,I)|0;wh(E,61,1,0,0)|0;if(!(c[(f&p)+64>>2]|0)){m=ns(f,l)|0;if(!m)break a;I=m+38|0;b[(D&o)>>1]=b[(I&o)>>1]|0;l=m+4|0;c[(Q&p)+4>>2]=c[(l&p)>>2];b[(I&o)>>1]=0;c[(l&p)>>2]=0;kg(N,m)}C=Q+4|0;z=b[(D&o)>>1]|0;if(z<<16>>16>0){v=z<<16>>16;w=0;r=0;x=c[(C&p)>>2]|0;while(1){m=c[(x&p)>>2]|0;q=0;while(1){u=a[(m&n)>>0]|0;if(u<<24>>24==34)q=q+1|0;else if(!(u<<24>>24))break;m=m+1|0;q=q+1|0}r=r+7+q|0;w=w+1|0;if((w|0)==(v|0))break;else x=x+24|0}u=r+2|0}else u=2;m=c[(Q&p)>>2]|0;r=0;while(1){q=a[(m&n)>>0]|0;if(q<<24>>24==34)r=r+1|0;else if(!(q<<24>>24))break;m=m+1|0;r=r+1|0}x=r+u|0;A=(x|0)<50;u=A?10360:36880;y=A?20240:36888;A=A?33952:36896;x=((z<<16>>16)*6|0)+35+x|0;r=qg(x,((x|0)<0)<<31>>31)|0;if(!r){a[(O&n)>>0]=1;m=Q;r=0;break}ad(x,r,36904,M)|0;q=r;while(1)if(!(a[(q&n)>>0]|0))break;else q=q+1|0;c[(J&p)>>2]=q-r&1073741823;os(r,J,c[(Q&p)>>2]|0);m=c[(J&p)>>2]|0;v=m+1|0;c[(J&p)>>2]=v;a[(r+m&n)>>0]=40;m=x-v|0;q=r+v|0;if((b[(D&o)>>1]|0)>0){z=0;w=c[(C&p)>>2]|0;while(1){ad(m,q,u,M)|0;q=r+v|0;if(!q)q=0;else{u=q;while(1)if(!(a[(u&n)>>0]|0))break;else u=u+1|0;q=u-q&1073741823}c[(J&p)>>2]=q+v;os(r,J,c[(w&p)>>2]|0);q=c[((a[(w&n)+21>>0]|0)+-65<<2&p)+36920>>2]|0;u=q;while(1)if(!(a[(u&n)>>0]|0))break;else u=u+1|0;v=u-q&1073741823;u=c[(J&p)>>2]|0;kw(r+u|0,q|0,v|0)|0;v=u+v|0;c[(J&p)>>2]=v;u=z+1|0;m=x-v|0;q=r+v|0;if((u|0)<(b[(D&o)>>1]|0)){z=u;w=w+24|0;u=y}else break}}c[(M&p)>>2]=A;ad(m,q,10344,M)|0;m=Q}while(0);q=N+16|0;k=c[(m&p)>>2]|0;I=c[(s&p)>>2]|0;l=c[(f&p)+384>>2]|0;c[(M&p)>>2]=c[((c[(q&p)>>2]|0)+(t<<4)&p)>>2];c[(M&p)+4>>2]=(t|0)==1?13184:13208;c[(M&p)+8>>2]=B;c[(M&p)+12>>2]=k;c[(M&p)+16>>2]=k;c[(M&p)+20>>2]=I;c[(M&p)+24>>2]=r;c[(M&p)+28>>2]=l;Br(f,36704,M);mg(N,r);Dr(f,t);if((a[(Q&n)+44>>0]&8)!=0?(K=c[(q&p)>>2]|0,(c[((c[(K+(t<<4)&p)+12>>2]|0)&p)+72>>2]|0)==0):0){c[(M&p)>>2]=c[(K+(t<<4)&p)>>2];Br(f,36792,M)}c[(M&p)>>2]=c[(m&p)>>2];Ir(E,t,uh(N,36840,M)|0);if(!(a[(L&n)>>0]|0))break}else m=Q;if(Ik((c[(F&p)>>2]|0)+8|0,c[(m&p)>>2]|0,Q)|0){a[(O&n)>>0]=1;break}c[(P&p)>>2]=0;l=N+24|0;c[(l&p)>>2]=c[(l&p)>>2]|2;if(!(c[(Q&p)+12>>2]|0)){l=c[(f&p)+496>>2]|0;c[(Q&p)+48>>2]=(Nn(l,(c[(((c[(g&p)>>2]|0)==0?h:g)&p)>>2]|0)-l|0)|0)+13}}while(0);i=R;return}function Wq(b,d){b=b|0;d=d|0;var e=0,f=0;if(!d)e=0;else{f=c[(d&p)>>2]|0;d=c[(d&p)+4>>2]|0;if((f|0)!=0?(e=jw(d|0,0,1,0)|0,e=mh(b,e,G)|0,(e|0)!=0):0){kw(e|0,f|0,d|0)|0;a[(e+d&n)>>0]=0}else e=0;lo(e)}return e|0}function Xq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0;o=i;i=i+16|0;if((i|0)>=(j|0))fa();m=o;a:do if(b){g=a[(b&n)>>0]|0;b:do if(!(g<<24>>24)){f=67;g=0}else{k=g;f=67;h=0;g=0;do{h=d[(k&255&n)+9328>>0]|0|h<<8;b=b+1|0;if((h|0)==1685026146)if(f<<24>>24==67){f=69;h=1685026146;l=5}else l=13;else if((h|0)==1668050786){f=66;l=5}else if((h|0)==1718382433)if(f<<24>>24==67){f=69;h=1718382433;l=5}else l=13;else if((h|0)==1919246700)if(f<<24>>24==67){f=69;h=1919246700;l=5}else l=14;else if((h|0)==1952807028){f=66;l=5}else if((h|0)==1651273570)if(f<<24>>24==69|f<<24>>24==67){q=a[(b&n)>>0]|0;k=q;f=65;h=1651273570;g=q<<24>>24==40?b:g}else l=14;else if((h|0)!=1667785074)if((h&16777215|0)==6909556){f=68;break b}else l=5;else{f=66;h=1667785074;g=b;l=5}if((l|0)==13)l=5;else if((l|0)==14)l=5;if((l|0)==5){l=0;k=a[(b&n)>>0]|0}}while(k<<24>>24!=0)}while(0);if((e|0)!=0?(a[(e&n)>>0]=1,f<<24>>24<67):0){if(!g){a[(e&n)>>0]=5;break}b=a[(g&n)>>0]|0;if(b<<24>>24){while(1){if(((b&255)+-48|0)>>>0<10)break;g=g+1|0;b=a[(g&n)>>0]|0;if(!(b<<24>>24))break a}c[(m&p)>>2]=0;Dn(g,m)|0;g=((c[(m&p)>>2]|0)/4|0)+1|0;g=(g|0)>255?255:g;c[(m&p)>>2]=g;a[(e&n)>>0]=g}}}else f=67;while(0);i=o;return f|0}function Yq(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0;r=i;i=i+32|0;if((i|0)>=(j|0))fa();m=r;q=c[(e&p)>>2]|0;k=c[(e&p)+484>>2]|0;do if(k){h=(b[(k&o)+38>>1]|0)+-1|0;l=c[(k&p)+4>>2]|0;s=c[(f&p)>>2]|0;t=(d[(q&n)+145>>0]|0)+4|0;c[(m&p)>>2]=0;c[(m&p)+4>>2]=0;c[(m&p)+8>>2]=0;c[(m&p)+12>>2]=0;c[(m&p)+16>>2]=0;c[(m&p)+20>>2]=0;k=m+20|0;a[(k&n)>>0]=t;c[(m&p)>>2]=78;c[(m&p)+4>>2]=79;c[(m&p)+24>>2]=0;rs(m,s)|0;if(!(a[(k&n)>>0]|0)){c[(m&p)>>2]=c[(l+(h*24|0)&p)>>2];th(e,36480,m);break}k=l+(h*24|0)+4|0;Gk(q,c[(k&p)>>2]|0);c[(k&p)>>2]=Mr(q,c[(f&p)>>2]|0,1,0)|0;l=l+(h*24|0)+8|0;mg(q,c[(l&p)>>2]|0);h=c[(f&p)+4>>2]|0;k=(c[(f&p)+8>>2]|0)-h|0;if((h|0)!=0?(g=jw(k|0,((k|0)<0)<<31>>31|0,1,0)|0,g=mh(q,g,G)|0,(g|0)!=0):0){kw(g|0,h|0,k|0)|0;a[(g+k&n)>>0]=0}else g=0;c[(l&p)>>2]=g}while(0);Gk(q,c[(f&p)>>2]|0);i=r;return}function Zq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))fa();h=k;if((b|0)==72&(d|0)!=0&(e|0)!=0?(c[(a&p)+64>>2]|0)==0:0)b=ss(c[(a&p)>>2]|0,d,e)|0;else{b=nr(c[(a&p)>>2]|0,b,f,1)|0;ts(c[(a&p)>>2]|0,b,d,e)}if((b|0)!=0?(g=c[((c[(a&p)>>2]|0)&p)+100>>2]|0,(g|0)<(c[(b&p)+24>>2]|0)):0){c[(h&p)>>2]=g;th(a,27152,h)}i=k;return b|0}function _q(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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;D=i;i=i+16|0;if((i|0)>=(j|0))fa();C=D;A=c[(e&p)+484>>2]|0;do if((A|0)!=0?(a[(e&n)+451>>0]|0)==0:0){B=A+44|0;m=d[(B&n)>>0]|0;if(m&4){c[(C&p)>>2]=c[(A&p)>>2];th(e,36376,C);break}y=m|4;a[(B&n)>>0]=y;z=(f|0)==0;if(z){m=(b[(A&o)+38>>1]|0)+-1|0;w=c[(A&p)+4>>2]|0;l=w+(m*24|0)+23|0;a[(l&n)>>0]=d[(l&n)>>0]|1;l=m;q=1;m=c[(w+(m*24|0)&p)+12>>2]|0}else{x=c[(f&p)>>2]|0;if((x|0)>0){u=f+4|0;v=A+4|0;t=b[(A&o)+38>>1]|0;w=0;m=0;do{a:do if(t<<16>>16>0){r=c[((c[(u&p)>>2]|0)+(w*20|0)&p)+4>>2]|0;s=c[(v&p)>>2]|0;q=0;while(1){l=q+1|0;if(!(dd(r,c[(s+(q*24|0)&p)>>2]|0)|0))break;if((l|0)<(t<<16>>16|0))q=l;else break a}l=s+(q*24|0)+23|0;a[(l&n)>>0]=d[(l&n)>>0]|1;l=q;m=c[(s+(q*24|0)&p)+12>>2]|0}else l=0;while(0);w=w+1|0}while((w|0)!=(x|0))}else{l=-1;m=0}q=(x|0)==1}if(q&(m|0)!=0?(dd(m,11144)|0|k|0)==0:0){b[(A&o)+36>>1]=l;a[(A&n)+45>>0]=g;a[(B&n)>>0]=y|h<<3;if(z){f=0;break}a[(e&n)+448>>0]=a[((c[(f&p)+4>>2]|0)&n)+12>>0]|0;break}if(h){th(e,36424,C);break}m=c[(e&p)+8>>2]|0;l=(m|0)!=0;if(l)c[(e&p)+420>>2]=wh(m,156,0,0,0)|0;f=$q(e,0,0,0,f,g,0,0,k,0)|0;if((f|0)!=0?(w=f+51|0,a[(w&n)>>0]=a[(w&n)>>0]&-4|2,l):0){f=c[(e&p)+420>>2]|0;l=c[(m&p)+32>>2]|0;if(l>>>0>f>>>0)c[((c[(m&p)+4>>2]|0)+(f*20|0)&p)+8>>2]=l;c[((c[(m&p)+24>>2]|0)&p)+88>>2]=l+-1;f=0}else f=0}while(0);Nk(c[(e&p)>>2]|0,f);i=D;return}function $q(f,g,h,k,l,m,q,r,s,t){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;r=r|0;s=s|0;t=t|0;var 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;Y=i;i=i+144|0;if((i|0)>=(j|0))fa();V=Y;E=Y+112|0;x=Y+88|0;T=Y+84|0;N=Y+80|0;X=c[(f&p)>>2]|0;c[(T&p)>>2]=0;c[(N&p)>>2]=0;S=X+65|0;a:do if(((a[(S&n)>>0]|0)==0?(a[(f&n)+451>>0]|0)==0:0)?(Gn(f)|0)==0:0){U=(k|0)!=0;b:do if(U){g=er(f,g,h,T)|0;if((g|0)<0){u=0;h=0;break a}if((a[(X&n)+145>>0]|0)==0?(u=Jr(f,k)|0,(c[(h&p)+4>>2]|0)==0&(u|0)!=0):0)g=(c[(u&p)+68>>2]|0)==(c[((c[(X&p)+16>>2]|0)&p)+28>>2]|0)?1:g;h=c[(T&p)>>2]|0;u=c[(f&p)>>2]|0;c[(x&p)>>2]=f;u=c[(u&p)+16>>2]|0;c[(x&p)+12>>2]=c[(u+(g<<4)&p)>>2];c[(x&p)+4>>2]=c[(u+(g<<4)&p)+12>>2];c[(x&p)+16>>2]=20632;c[(x&p)+20>>2]=h;u=(g|0)==1;c[(x&p)+8>>2]=u&1;Kr(x,k)|0;w=Ur(f,0,k+8|0)|0;if(!w){u=0;h=0;break a}if(u?(c[((c[(X&p)+16>>2]|0)&p)+28>>2]|0)!=(c[(w&p)+68>>2]|0):0){c[(V&p)>>2]=c[(w&p)>>2];th(f,35920,V);u=0;h=0;break a}if((a[(w&n)+44>>0]&32)!=0?(v=c[(w&p)+8>>2]|0,(v|0)!=0):0){u=v;while(1){if((a[(u&n)+51>>0]&3)==2){v=g;M=u;x=w;break b}u=c[(u&p)+20>>2]|0;if(!u){v=g;M=0;x=w;break}}}else{v=g;M=0;x=w}}else{x=c[(f&p)+484>>2]|0;if(!x){u=0;h=0;break a}g=c[(x&p)+68>>2]|0;if(g){u=c[(X&p)+20>>2]|0;if((u|0)>0){h=c[(X&p)+16>>2]|0;w=0;while(1){v=w+1|0;if((c[(h+(w<<4)&p)+12>>2]|0)==(g|0)){h=0;v=w;M=0;break b}if((v|0)<(u|0))w=v;else{h=0;M=0;break}}}else{h=0;v=0;M=0}}else{h=0;v=-1e6;M=0}}while(0);R=X+16|0;F=c[(R&p)>>2]|0;g=F+(v<<4)|0;A=c[(x&p)>>2]|0;if(((Fc(A,25568,7)|0)==0?(a[(X&n)+145>>0]|0)==0:0)?(Fc(A+7|0,35976,9)|0)!=0:0){c[(V&p)>>2]=A;th(f,35992,V);u=0;h=0;break}if(c[(x&p)+12>>2]|0){th(f,36024,V);u=0;h=0;break}Q=x+44|0;if(a[(Q&n)>>0]&16){th(f,36056,V);u=0;h=0;break}G=(h|0)==0;if(!G){h=Wq(X,h)|0;if(!h){u=0;h=0;break}if(Lr(f,h)|0){u=0;break}if((a[(X&n)+145>>0]|0)==0?(_h(X,h,0)|0)!=0:0){c[(V&p)>>2]=h;th(f,36096,V);u=0;break}if(bq(X,h,c[(g&p)>>2]|0)|0)if(!t){c[(V&p)>>2]=h;th(f,36136,V);u=0;break}else{Ar(f,v);u=0;break}else w=h}else{u=c[(x&p)+8>>2]|0;if(!u)w=1;else{w=1;do{w=w+1|0;u=c[(u&p)+20>>2]|0}while((u|0)!=0)}c[(V&p)>>2]=A;c[(V&p)+4>>2]=w;w=uh(X,36160,V)|0;if(!w){u=0;h=0;break}}g=c[(g&p)>>2]|0;u=(v|0)==1;O=u?13184:13208;if((Sq(f,18,O,0,g)|0)==0?(Sq(f,u?3:1,w,c[(x&p)>>2]|0,g)|0)==0:0){if(!l){l=lr(f,0,0)|0;if(!l){l=0;u=0;h=w;break}I=kh(c[(f&p)>>2]|0,c[((c[(x&p)+4>>2]|0)+(((b[(x&o)+38>>1]|0)+-1|0)*24|0)&p)>>2]|0)|0;J=c[(l&p)+4>>2]|0;c[(J&p)+4>>2]=I;a[(J&n)+12>>0]=s}D=c[(l&p)>>2]|0;if((D|0)>0){A=c[(l&p)+4>>2]|0;y=0;g=0;do{u=c[(A+(y*20|0)&p)>>2]|0;if(u){h=c[(u&p)+8>>2]|0;if(!h)u=1;else{u=h;while(1)if(!(a[(u&n)>>0]|0))break;else u=u+1|0;u=(u-h&1073741823)+1|0}g=u+g|0}y=y+1|0}while((y|0)<(D|0));h=g}else h=0;if(!w)u=0;else{g=w;while(1)if(!(a[(g&n)>>0]|0))break;else g=g+1|0;u=g-w&1073741823}I=(M|0)!=0;if(I)g=e[(M&o)+46>>1]|0;else g=1;P=us(X,D+g&65535,h+1+u|0,N)|0;c:do if(!(a[(S&n)>>0]|0)){H=c[(N&p)>>2]|0;c[(P&p)>>2]=H;L=u+1|0;C=H+L|0;c[(N&p)>>2]=C;kw(H|0,w|0,L|0)|0;c[(P&p)+12>>2]=x;L=P+50|0;a[(L&n)>>0]=m;H=P+51|0;a[(H&n)>>0]=a[(H&n)>>0]&-12|((m|0)!=0&1)<<3&255|G&1;K=P+24|0;c[(K&p)>>2]=c[((c[(R&p)>>2]|0)+(v<<4)&p)+12>>2];g=c[(l&p)>>2]|0;J=P+46|0;b[(J&o)>>1]=g;if(r){c[(E&p)>>2]=0;c[(E&p)+4>>2]=0;c[(E&p)+8>>2]=0;c[(E&p)+12>>2]=0;c[(E&p)+16>>2]=0;c[(E&p)+20>>2]=0;c[(E&p)+24>>2]=0;c[(E&p)+28>>2]=0;A=V+0|0;h=A+80|0;do{c[(A&p)>>2]=0;A=A+4|0}while((A|0)<(h|0));c[(V&p)>>2]=1;c[(V&p)+16>>2]=c[(x&p)>>2];c[(V&p)+24>>2]=x;c[(V&p)+48>>2]=-1;c[(E&p)>>2]=f;c[(E&p)+4>>2]=V;b[(E&o)+28>>1]=16;ls(E,r)|0;c[(P&p)+36>>2]=r;g=c[(l&p)>>2]|0}z=(d[((c[(F+(v<<4)&p)+12>>2]|0)&n)+76>>0]|0)>3;d:do if((g|0)>0){G=x+4|0;F=x+38|0;E=P+4|0;r=X+145|0;g=P+32|0;y=P+28|0;h=0;s=c[(l&p)+4>>2]|0;while(1){u=c[(s&p)+4>>2]|0;A=b[(F&o)>>1]|0;e:do if(A<<16>>16>0){D=0;B=c[(G&p)>>2]|0;while(1){if(!(dd(u,c[(B&p)>>2]|0)|0)){t=D;break e}D=D+1|0;if((D|0)<(A<<16>>16|0))B=B+24|0;else{t=D;break}}}else t=0;while(0);if((t|0)>=(A<<16>>16|0))break;b[((c[(E&p)>>2]|0)+(h<<1)&o)>>1]=t;D=c[(s&p)>>2]|0;if(!D){D=c[((c[(G&p)>>2]|0)+(t*24|0)&p)+16>>2]|0;D=(D|0)!=0?D:11152}else{B=c[(D&p)+8>>2]|0;if(!B)D=1;else{D=B;while(1)if(!(a[(D&n)>>0]|0))break;else D=D+1|0;D=(D-B&1073741823)+1|0}kw(C|0,B|0,D|0)|0;B=c[(N&p)>>2]|0;C=B+D|0;c[(N&p)>>2]=C;D=B}if((a[(r&n)>>0]|0)==0?(cr(f,D)|0)==0:0){h=0;u=0;W=134;break c}c[((c[(g&p)>>2]|0)+(h<<2)&p)>>2]=D;a[((c[(y&p)>>2]|0)+h&n)>>0]=z?a[(s&n)+12>>0]|0:0;if(!(a[((c[(G&p)>>2]|0)+(t*24|0)&n)+20>>0]|0))a[(H&n)>>0]=a[(H&n)>>0]&-9;h=h+1|0;if((h|0)<(c[(l&p)>>2]|0))s=s+20|0;else break d}c[(V&p)>>2]=c[(x&p)>>2];c[(V&p)+4>>2]=u;th(f,36184,V);a[(f&n)+17>>0]=1;h=0;u=0;W=134;break c}else h=0;while(0);do if(I){z=M+46|0;A=b[(z&o)>>1]|0;if(!(A<<16>>16))break;E=M+4|0;F=P+4|0;G=P+48|0;s=M+32|0;t=P+32|0;g=M+28|0;y=P+28|0;r=0;do{B=b[((c[(E&p)>>2]|0)+(r<<1)&o)>>1]|0;u=c[(F&p)>>2]|0;D=e[(J&o)>>1]|0;C=u;while(1){if((D|0)<=0){W=92;break}if((b[(C&o)>>1]|0)==B<<16>>16){W=91;break}else{D=D+-1|0;C=C+2|0}}if((W|0)==91){W=0;b[(G&o)>>1]=(b[(G&o)>>1]|0)+-1<<16>>16}else if((W|0)==92){W=0;b[(u+(h<<1)&o)>>1]=B;c[((c[(t&p)>>2]|0)+(h<<2)&p)>>2]=c[((c[(s&p)>>2]|0)+(r<<2)&p)>>2];a[((c[(y&p)>>2]|0)+h&n)>>0]=a[((c[(g&p)>>2]|0)+r&n)>>0]|0;A=b[(z&o)>>1]|0;h=h+1|0}r=r+1|0}while((r|0)<(A&65535|0))}else{b[((c[(P&p)+4>>2]|0)+(h<<1)&o)>>1]=-1;c[((c[(P&p)+32>>2]|0)+(h<<2)&p)>>2]=11152}while(0);cq(P);r=f+484|0;g=c[(r&p)>>2]|0;if(!g){ms(P);g=c[(r&p)>>2]|0}f:do if((x|0)==(g|0)){u=c[(x&p)+8>>2]|0;if(!u)break;B=b[(J&o)>>1]|0;C=P+4|0;D=P+32|0;while(1){if((b[(u&o)+46>>1]|0)==B<<16>>16){g:do if(!(B<<16>>16)){r=0;g=0}else{y=c[(u&p)+4>>2]|0;z=c[(C&p)>>2]|0;A=u+32|0;g=0;while(1){if((b[(y+(g<<1)&o)>>1]|0)!=(b[(z+(g<<1)&o)>>1]|0)){r=B;break g}r=c[((c[(A&p)>>2]|0)+(g<<2)&p)>>2]|0;h=c[((c[(D&p)>>2]|0)+(g<<2)&p)>>2]|0;if((r|0)!=(h|0)?(dd(r,h)|0)!=0:0){r=B;break g}g=g+1|0;if((g|0)>=(B&65535|0)){r=B;break}}}while(0);if((g|0)==(r&65535|0))break}u=c[(u&p)+20>>2]|0;if(!u)break f}g=u+50|0;h=a[(g&n)>>0]|0;r=a[(L&n)>>0]|0;if(h<<24>>24==r<<24>>24){h=0;break c}if(!(h<<24>>24==10|r<<24>>24==10)){c[(V&p)>>2]=0;th(f,36216,V);h=a[(g&n)>>0]|0}if(h<<24>>24!=10){h=0;W=134;break c}a[(g&n)>>0]=a[(L&n)>>0]|0;h=0;break c}while(0);h=X+145|0;do if(!(a[(h&n)>>0]|0)){if(c[(f&p)+64>>2]|0){W=126;break}if(!((a[(Q&n)>>0]&32)==0|U)){W=126;break}u=f+72|0;r=(c[(u&p)>>2]|0)+1|0;c[(u&p)>>2]=r;u=Oq(f)|0;if(!u){h=0;u=0;W=134;break c}J=c[(f&p)+408>>2]|0;J=(J|0)==0?f:J;Ar(f,v);I=J+328|0;c[(I&p)>>2]=c[(I&p)>>2]|1<>0]=d[(J&n)>>0]|1;wh(u,120,v,r,0)|0;if(!q)g=0;else{g=c[(c[(T&p)>>2]&p)>>2]|0;J=(c[(f&p)+504>>2]|0)-g+(c[(f&p)+508>>2]|0)|0;I=J+-1|0;J=(a[(g+I&n)>>0]|0)==59?I:J;c[(V&p)>>2]=(m|0)==0?10360:36288;c[(V&p)+4>>2]=J;c[(V&p)+8>>2]=g;g=uh(X,36264,V)|0}I=c[(P&p)>>2]|0;J=c[(x&p)>>2]|0;c[(V&p)>>2]=c[((c[(R&p)>>2]|0)+(v<<4)&p)>>2];c[(V&p)+4>>2]=O;c[(V&p)+8>>2]=I;c[(V&p)+12>>2]=J;c[(V&p)+16>>2]=r;c[(V&p)+20>>2]=g;Br(f,36296,V);mg(X,g);if(!U)break;vs(f,P,r);Dr(f,v);c[(V&p)>>2]=c[(P&p)>>2];Ir(u,v,uh(X,36344,V)|0);wh(u,144,0,0,0)|0;W=126}else{if(Ik((c[(K&p)>>2]|0)+24|0,c[(P&p)>>2]|0,P)|0){a[(S&n)>>0]=1;h=0;u=0;W=134;break c}J=X+24|0;c[(J&p)>>2]=c[(J&p)>>2]|2;if(!U)break;c[(P&p)+40>>2]=c[(X&p)+140>>2];W=126}while(0);if((W|0)==126?!((a[(h&n)>>0]|0)!=0|(k|0)==0):0){h=0;u=0;W=134;break}h=c[(x&p)+8>>2]|0;do if((m|0)==5){if(!h){h=0;break}if((a[(h&n)+50>>0]|0)==5)break;do{u=h+20|0;h=c[(u&p)>>2]|0;if(!h){h=0;break}}while((a[(h&n)+50>>0]|0)!=5);c[(P&p)+20>>2]=h;c[(u&p)>>2]=P;r=0;u=P;h=w;break a}while(0);c[(P&p)+20>>2]=h;c[(x&p)+8>>2]=P;r=0;u=P;h=w;break a}else{h=r;u=0;W=134}while(0);if((W|0)==134)if(!P){r=h;h=w;break}Jk(X,P);r=h;h=w}else{u=0;h=w}}else{u=0;h=0}while(0);Gk(X,r);Nk(X,l);Do(X,k);mg(X,h);i=Y;return u|0}function ar(e,f){e=e|0;f=f|0;var g=0,h=0;g=c[(e&p)+484>>2]|0;h=c[(e&p)>>2]|0;if(((g|0)!=0?(a[(e&n)+451>>0]|0)==0:0)?(b[((c[((c[((c[(h&p)+16>>2]|0)+(d[(h&n)+144>>0]<<4)&p)+4>>2]|0)&p)+4>>2]|0)&o)+22>>1]&1)==0:0){h=g+24|0;g=lr(e,c[(h&p)>>2]|0,f)|0;c[(h&p)>>2]=g;if(c[(e&p)+324>>2]|0)mr(e,g,e+320|0,1)}else Gk(h,f);return}function br(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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=i;i=i+16|0;if((i|0)>=(j|0))fa();C=F;E=c[(d&p)>>2]|0;D=c[(d&p)+484>>2]|0;a:do if((D|0)!=0?(a[(d&n)+451>>0]|0)==0:0){z=(e|0)==0;do if(z){B=b[(D&o)+38>>1]|0;l=(B<<16>>16)+-1|0;if(B<<16>>16<1){k=0;break a}if(g)if((c[(g&p)>>2]|0)==1){l=1;k=13}else{c[(C&p)>>2]=c[((c[(D&p)+4>>2]|0)+(l*24|0)&p)>>2];c[(C&p)+4>>2]=f;th(d,35712,C);k=0;break a}else{l=1;k=12}}else{if(!g){l=c[(e&p)>>2]|0;k=12;break}l=c[(g&p)>>2]|0;if((l|0)==(c[(e&p)>>2]|0))k=13;else{th(d,35776,C);k=0;break a}}while(0);if((k|0)==12){m=f+4|0;s=m;w=0;m=(l<<3)+37+(c[(m&p)>>2]|0)|0;B=l}else if((k|0)==13){s=f+4|0;m=(l<<3)+37+(c[(s&p)>>2]|0)|0;t=c[(g&p)>>2]|0;if((t|0)>0){u=c[(g&p)+4>>2]|0;v=0;do{r=c[(u+(v*20|0)&p)+4>>2]|0;if(!r)k=1;else{q=r;while(1)if(!(a[(q&n)>>0]|0))break;else q=q+1|0;k=(q-r&1073741823)+1|0}m=k+m|0;v=v+1|0}while((v|0)<(t|0));w=1;B=l}else{w=1;B=l}}k=mh(E,m,((m|0)<0)<<31>>31)|0;if(k){fw(k|0,0,m|0)|0;c[(k&p)>>2]=D;A=D+16|0;c[(k&p)+4>>2]=c[(A&p)>>2];x=k+36|0;q=x+(B<<3)|0;y=k+8|0;c[(y&p)>>2]=q;kw(q|0,c[(f&p)>>2]|0,c[(s&p)>>2]|0)|0;a[(q+(c[(s&p)>>2]|0)&n)>>0]=0;lo(q);q=q+((c[(s&p)>>2]|0)+1)|0;c[(k&p)+20>>2]=B;b:do if(!z){if((B|0)>0){m=D+4|0;f=e+4|0;r=b[(D&o)+38>>1]|0;l=0;while(1){c:do if(r<<16>>16>0){v=c[(m&p)>>2]|0;u=c[((c[(f&p)>>2]|0)+(l*20|0)&p)+4>>2]|0;t=0;while(1){s=t+1|0;if(!(dd(c[(v+(t*24|0)&p)>>2]|0,u)|0)){s=t;break}if((s|0)<(r<<16>>16|0))t=s;else break c}c[(x+(l<<3)&p)>>2]=s}else s=0;while(0);if((s|0)>=(r<<16>>16|0))break;l=l+1|0;if((l|0)>=(B|0))break b}c[(C&p)>>2]=c[((c[(f&p)>>2]|0)+(l*20|0)&p)+4>>2];th(d,35872,C);break a}}else c[(x&p)>>2]=(b[(D&o)+38>>1]|0)+-1;while(0);if(w&(B|0)>0){r=g+4|0;s=0;while(1){m=c[((c[(r&p)>>2]|0)+(s*20|0)&p)+4>>2]|0;if(!m)l=0;else{l=m;while(1)if(!(a[(l&n)>>0]|0))break;else l=l+1|0;l=l-m&1073741823}c[(x+(s<<3)&p)+4>>2]=q;kw(q|0,m|0,l|0)|0;a[(q+l&n)>>0]=0;s=s+1|0;if((s|0)==(B|0))break;else q=q+(l+1)|0}}a[(k&n)+24>>0]=0;a[(k&n)+25>>0]=h;a[(k&n)+26>>0]=h>>>8;l=Ik((c[(D&p)+68>>2]|0)+56|0,c[(y&p)>>2]|0,k)|0;if((l|0)==(k|0)){a[(E&n)+65>>0]=1;break}if(l){c[(k&p)+12>>2]=l;c[(l&p)+16>>2]=k}c[(A&p)>>2]=k;k=0}else k=0}else k=0;while(0);mg(E,k);Nk(E,e);Nk(E,g);i=F;return}function cr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[(b&p)>>2]|0;f=a[(e&n)+62>>0]|0;g=a[(e&n)+145>>0]|0;e=Yn(e,f,d,g&255)|0;do if(!(g<<24>>24)){if((e|0)!=0?(c[(e&p)+12>>2]|0)!=0:0)break;e=ws(b,f,e,d)|0}while(0);return e|0}function dr(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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;B=i;i=i+16|0;if((i|0)>=(j|0))fa();z=B;v=B+12|0;A=c[(e&p)>>2]|0;do if(!(a[(A&n)+65>>0]|0)){h=(h|0)!=0;if(h){u=A+68|0;a[(u&n)>>0]=(a[(u&n)>>0]|0)+1<<24>>24;y=Ur(e,g,f+8|0)|0;a[(u&n)>>0]=(a[(u&n)>>0]|0)+-1<<24>>24}else y=Ur(e,g,f+8|0)|0;if(!y){if(!h)break;zr(e,c[(f&p)+12>>2]|0);break}s=y+68|0;l=c[(s&p)>>2]|0;a:do if(l){h=c[(A&p)+20>>2]|0;if((h|0)>0){k=c[(A&p)+16>>2]|0;q=0;while(1){m=q+1|0;if((c[(k+(q<<4)&p)+12>>2]|0)==(l|0)){m=q;break a}if((m|0)<(h|0))q=m;else break}}else m=0}else m=-1e6;while(0);w=y+44|0;if((a[(w&n)>>0]&16)!=0?(hr(e,y)|0)!=0:0)break;q=(m|0)==1;x=q?13184:13208;h=c[((c[(A&p)+16>>2]|0)+(m<<4)&p)>>2]|0;if(!(Sq(e,9,x,0,h)|0)){k=(g|0)!=0;do if(k){l=q?15:17;q=0}else{if(!(a[(w&n)>>0]&16)){l=q?13:11;q=0;break}q=y+60|0;while(1){q=c[(q&p)>>2]|0;if((c[(q&p)>>2]|0)==(A|0))break;else q=q+24|0}l=30;q=c[((c[(q&p)+4>>2]|0)&p)+4>>2]|0}while(0);if((Sq(e,l,c[(y&p)>>2]|0,q,h)|0)==0?(Sq(e,9,c[(y&p)>>2]|0,0,h)|0)==0:0){q=c[(y&p)>>2]|0;if((Fc(q,25568,7)|0)==0?(Fc(q,35488,11)|0)!=0:0){c[(z&p)>>2]=q;th(e,35504,z);break}h=y+12|0;l=(c[(h&p)>>2]|0)==0;if(k){if(l){c[(z&p)>>2]=q;th(e,35536,z);break}}else if(!l){c[(z&p)>>2]=q;th(e,35576,z);break}if(Oq(e)|0){t=e+408|0;l=c[(t&p)>>2]|0;l=(l|0)==0?e:l;Ar(e,m);u=1<>2]=c[(k&p)>>2]|u;l=l+20|0;a[(l&n)>>0]=d[(l&n)>>0]|1;Cr(e,m,28544,c[(y&p)>>2]|0);l=c[(e&p)>>2]|0;k=l+24|0;b:do if(((c[(k&p)>>2]&524288|0)!=0?(a[(w&n)>>0]&16)==0:0)?(c[(h&p)>>2]|0)==0:0){r=Oq(e)|0;v=bn((c[(s&p)>>2]|0)+56|0,c[(y&p)>>2]|0,v)|0;if((v|0)!=0?(c[(v&p)+8>>2]|0)!=0:0)q=0;else{q=c[(y&p)+16>>2]|0;if(!q)break;while(1){if(a[(q&n)+24>>0]|0)break;if(c[(k&p)>>2]&16777216)break;q=c[(q&p)+4>>2]|0;if(!q)break b}q=xs(r)|0;wh(r,135,1,q,0)|0}v=e+438|0;a[(v&n)>>0]=1;rr(e,ys(l,f,0)|0,0);a[(v&n)>>0]=0;if(!(c[(k&p)>>2]&16777216)){wh(r,135,0,(c[(r&p)+32>>2]|0)+2|0,0)|0;zs(e,787,2,0,-2,4)}if(q){l=c[(r&p)+24>>2]|0;h=~q;do if((q|0)<0){q=c[(l&p)+112>>2]|0;if(!q)break;c[(q+(h<<2)&p)>>2]=c[(r&p)+32>>2]}while(0);c[(l&p)+88>>2]=(c[(r&p)+32>>2]|0)+-1}}while(0);r=c[(e&p)>>2]|0;s=r+16|0;l=c[(s&p)>>2]|0;h=Oq(e)|0;v=c[(t&p)>>2]|0;v=(v|0)==0?e:v;Ar(e,m);t=v+328|0;c[(t&p)>>2]=c[(t&p)>>2]|u;v=v+20|0;a[(v&n)>>0]=d[(v&n)>>0]|1;if(a[(w&n)>>0]&16)wh(h,146,0,0,0)|0;q=As(e,y)|0;if(q)do{Qr(e,q);q=c[(q&p)+32>>2]|0}while((q|0)!=0);l=l+(m<<4)|0;if(a[(w&n)>>0]&8){v=c[(y&p)>>2]|0;c[(z&p)>>2]=c[(l&p)>>2];c[(z&p)+4>>2]=v;Br(e,35608,z)}v=c[(y&p)>>2]|0;c[(z&p)>>2]=c[(l&p)>>2];c[(z&p)+4>>2]=x;c[(z&p)+8>>2]=v;Br(e,35656,z);if((g|0)==0?(a[(w&n)>>0]&16)==0:0)Bs(e,y);if(a[(w&n)>>0]&16){v=c[(y&p)>>2]|0;xh(h,wh(h,148,m,0,0)|0,v,0)}k=c[(y&p)>>2]|0;xh(h,wh(h,124,m,0,0)|0,k,0);Dr(e,m);h=c[((c[(s&p)>>2]|0)+(m<<4)&p)+12>>2]|0;k=b[(h&o)+78>>1]|0;if(k&2){l=c[(h&p)+16>>2]|0;if(l){k=l;do{h=c[(k&p)+8>>2]|0;if(c[(h&p)+12>>2]|0){Lk(r,h);c[(h&p)+4>>2]=0;b[(h&o)+38>>1]=0}k=c[(k&p)>>2]|0}while((k|0)!=0);k=c[((c[(s&p)>>2]|0)+(m<<4)&p)+12>>2]|0;h=k;k=b[(k&o)+78>>1]|0}b[(h&o)+78>>1]=k&65533}}}}}while(0);Do(A,f);i=B;return}function er(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();k=m;h=c[(b&p)>>2]|0;do if((f|0)!=0?(c[(f&p)+4>>2]|0)!=0:0){if(a[(h&n)+145>>0]|0){th(b,28488,k);f=b+64|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;f=-1;break}c[(g&p)>>2]=f;g=Wq(h,e)|0;f=Vh(h,g)|0;mg(h,g);if((f|0)<0){c[(k&p)>>2]=e;th(b,28512,k);f=b+64|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1;f=-1}}else l=7;while(0);if((l|0)==7){f=d[(h&n)+144>>0]|0;c[(g&p)>>2]=e}i=m;return f|0}function fr(a,b){a=a|0;b=b|0;a:do if(!b)b=0;else while(1){if(Hr(a,c[(b&p)>>2]|0)|0){b=1;break a}if(Kr(a,c[(b&p)+32>>2]|0)|0){b=1;break a}if(Gr(a,c[(b&p)+36>>2]|0)|0){b=1;break a}if(Hr(a,c[(b&p)+40>>2]|0)|0){b=1;break a}if(Gr(a,c[(b&p)+44>>2]|0)|0){b=1;break a}if(Hr(a,c[(b&p)+48>>2]|0)|0){b=1;break a}if(Gr(a,c[(b&p)+60>>2]|0)|0){b=1;break a}if(Gr(a,c[(b&p)+64>>2]|0)|0){b=1;break a}b=c[(b&p)+52>>2]|0;if(!b){b=0;break}}while(0);return b|0}function gr(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;if((f|0)!=0?(h=mh(d,72,0)|0,(h|0)!=0):0){c[(h&p)>>2]=Pr(d,c[(f&p)>>2]|0,g)|0;c[(h&p)+32>>2]=ys(d,c[(f&p)+32>>2]|0,g)|0;c[(h&p)+36>>2]=Mr(d,c[(f&p)+36>>2]|0,g,0)|0;c[(h&p)+40>>2]=Pr(d,c[(f&p)+40>>2]|0,g)|0;c[(h&p)+44>>2]=Mr(d,c[(f&p)+44>>2]|0,g,0)|0;c[(h&p)+48>>2]=Pr(d,c[(f&p)+48>>2]|0,g)|0;a[(h&n)+4>>0]=a[(f&n)+4>>0]|0;j=gr(d,c[(f&p)+52>>2]|0,g)|0;c[(h&p)+52>>2]=j;if(j)c[(j&p)+56>>2]=h;c[(h&p)+56>>2]=0;c[(h&p)+60>>2]=Mr(d,c[(f&p)+60>>2]|0,g,0)|0;c[(h&p)+64>>2]=Mr(d,c[(f&p)+64>>2]|0,g,0)|0;c[(h&p)+8>>2]=0;c[(h&p)+12>>2]=0;b[(h&o)+6>>1]=(e[(f&o)+6>>1]|0)&65527;c[(h&p)+16>>2]=-1;c[(h&p)+20>>2]=-1;l=f+24|0;j=c[(l&p)+4>>2]|0;g=h+24|0;c[(g&p)>>2]=c[(l&p)>>2];c[(g&p)+4>>2]=j;g=c[(f&p)+68>>2]|0;if((g|0)!=0?(k=c[(g&p)>>2]<<4|8,i=mh(d,k,((k|0)<0)<<31>>31)|0,(i|0)!=0):0){fw(i|0,0,k|0)|0;c[(i&p)>>2]=c[(g&p)>>2];if((c[(g&p)>>2]|0)>0){f=i+8|0;j=0;do{c[(f+(j<<4)&p)+8>>2]=gr(d,c[(g+(j<<4)&p)+16>>2]|0,0)|0;c[(f+(j<<4)&p)+4>>2]=Pr(d,c[(g+(j<<4)&p)+12>>2]|0,0)|0;c[(f+(j<<4)&p)>>2]=kh(d,c[(g+(j<<4)&p)+8>>2]|0)|0;j=j+1|0}while((j|0)<(c[(g&p)>>2]|0))}}else i=0;c[(h&p)+68>>2]=i}else h=0;return h|0}function hr(d,f){d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;if((i|0)>=(j|0))fa();s=w;k=w+8|0;m=w+4|0;v=c[(d&p)>>2]|0;q=f+44|0;h=a[(q&n)>>0]|0;a:do if(!(h&16))t=11;else{g=c[(f&p)+60>>2]|0;if(g)do{if((c[(g&p)>>2]|0)==(v|0)){t=11;break a}g=c[(g&p)+24>>2]|0}while((g|0)!=0);g=f+56|0;h=bn(v+308|0,c[(c[(g&p)>>2]&p)>>2]|0,k)|0;if((h|0)!=0?(l=c[(h&p)+8>>2]|0,(l|0)!=0):0){c[(m&p)>>2]=0;l=(zn(v,f,l,c[((c[(l&p)>>2]|0)&p)+8>>2]|0,m)|0)==0;h=c[(m&p)>>2]|0;if(l){mg(v,h);h=a[(q&n)>>0]|0;t=11;break}else{c[(s&p)>>2]=h;th(d,10344,s);mg(v,h);g=1;break}}c[(s&p)>>2]=c[(c[(g&p)>>2]&p)>>2];th(d,28320,s);g=1}while(0);do if((t|0)==11)if((h&16)==0?(u=f+38|0,r=b[(u&o)>>1]|0,r<<16>>16<=0):0){if(r<<16>>16<0){c[(s&p)>>2]=c[(f&p)>>2];th(d,26752,s);g=1;break}h=gr(v,c[(f&p)+12>>2]|0,0)|0;if(!h)g=1;else{r=v+250|0;q=a[(r&n)>>0]|0;t=d+68|0;s=c[(t&p)>>2]|0;Cs(d,c[(h&p)+32>>2]|0);b[(u&o)>>1]=-1;a[(r&n)>>0]=0;m=v+284|0;l=c[(m&p)>>2]|0;c[(m&p)>>2]=0;g=ns(d,h)|0;c[(m&p)>>2]=l;a[(r&n)>>0]=q;c[(t&p)>>2]=s;if(!g){b[(u&o)>>1]=0;g=1}else{d=g+38|0;b[(u&o)>>1]=b[(d&o)>>1]|0;t=g+4|0;c[(f&p)+4>>2]=c[(t&p)>>2];b[(d&o)>>1]=0;c[(t&p)>>2]=0;kg(v,g);g=(c[(f&p)+68>>2]|0)+78|0;b[(g&o)>>1]=e[(g&o)>>1]|0|2;g=0}Mk(v,h,1)}}else g=0;while(0);i=w;return g|0} -function ir(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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,H=0,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,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,Aa=0,Ba=0,Ca=0;Ca=i;i=i+240|0;if((i|0)>=(j|0))fa();ra=Ca;sa=Ca+220|0;ka=Ca+216|0;ia=Ca+196|0;ja=Ca+176|0;ua=Ca+164|0;va=Ca+136|0;ya=Ca+88|0;ga=Ca+64|0;ma=Ca+32|0;Aa=f+464|0;Ba=c[(Aa&p)>>2]|0;oa=f+468|0;xa=c[(oa&p)>>2]|0;c[(oa&p)>>2]=xa+1;c[(Aa&p)>>2]=xa;xa=c[(f&p)>>2]|0;a:do if((((g|0)!=0?(pa=xa+65|0,(a[(pa&n)>>0]|0)==0):0)?(k=f+64|0,(c[(k&p)>>2]|0)==0):0)?(Sq(f,21,0,0,0)|0)==0:0){D=ya+0|0;C=D+48|0;do{c[(D&p)>>2]=0;D=D+4|0}while((D|0)<(C|0));la=g+48|0;if((d[(h&n)>>0]|0)<9){Nk(xa,c[(la&p)>>2]|0);c[(la&p)>>2]=0;ea=g+6|0;b[(ea&o)>>1]=e[(ea&o)>>1]&65534}Ds(f,g,0);c[(va&p)>>2]=0;c[(va&p)+4>>2]=0;c[(va&p)+8>>2]=0;c[(va&p)+12>>2]=0;c[(va&p)+16>>2]=0;c[(va&p)+20>>2]=0;c[(va&p)+24>>2]=0;c[(va&p)>>2]=c[(la&p)>>2];na=g+32|0;x=c[(na&p)>>2]|0;w=c[(g&p)>>2]|0;b:do if(((c[(k&p)>>2]|0)==0?(a[(pa&n)>>0]|0)==0:0)?(ta=g+6|0,z=(e[(ta&o)>>1]|0)>>>2&1,wa=Oq(f)|0,(wa|0)!=0):0){if((c[(w&p)>>2]|0)>1?(a[(h&n)>>0]&-2)<<24>>24==10:0){th(f,35368,ra);za=444;break}qa=g+52|0;w=c[(qa&p)>>2]|0;c:do if(!w){r=f+460|0;q=f+492|0;m=g+36|0;l=f+408|0;k=g+60|0;T=g+64|0;U=g+4|0;V=xa+60|0;W=wa+32|0;X=f+72|0;Y=ga+4|0;Z=ga+1|0;_=ga+8|0;$=ga+12|0;aa=wa+4|0;ba=wa+24|0;ca=f+19|0;da=f+56|0;ea=f+80|0;S=0;y=z;while(1){if((S|0)>=(c[(x&p)>>2]|0)){H=m;Q=0;z=y;U=x;break c}N=c[(x+(S*72|0)&p)+28>>2]|0;do if(!N)z=S;else{P=x+(S*72|0)+32|0;A=c[(P&p)>>2]|0;if(A){if(a[(x+(S*72|0)&n)+45>>0]&4){z=S;break}wh(wa,17,c[(x+(S*72|0)&p)+36>>2]|0,A,0)|0;z=S;break}c[(ra&p)>>2]=0;Es(g,ra);c[(r&p)>>2]=(c[(r&p)>>2]|0)+(c[(ra&p)>>2]|0);v=b[(N&o)+6>>1]&4;Q=c[(q&p)>>2]|0;u=c[(f&p)>>2]|0;d:do if(!(b[(u&o)+60>>1]&1)){L=c[(na&p)>>2]|0;t=c[(L+(S*72|0)&p)+48>>2]|0;K=L+(S*72|0)+28|0;O=c[(K&p)>>2]|0;s=v<<16>>16!=0;do if(s){if(y){za=120;break d}if((c[(L&p)>>2]|0)>1){za=120;break d}R=c[(m&p)>>2]|0;if((R|0)!=0?(c[(R&p)+4>>2]&2097152|0)!=0:0){za=120;break d}H=c[(g&p)>>2]|0;do if(H){E=c[(H&p)>>2]|0;if((E|0)<=0)break;I=c[(H&p)+4>>2]|0;H=0;F=0;do{F=c[((c[(I+(H*20|0)&p)>>2]|0)&p)+4>>2]|F;H=H+1|0}while((H|0)!=(E|0));if(F&2097152){za=120;break d}}while(0);H=c[(la&p)>>2]|0;if(!H)break;E=c[(H&p)>>2]|0;if((E|0)<=0)break;I=c[(H&p)+4>>2]|0;H=0;F=0;do{F=c[((c[(I+(H*20|0)&p)>>2]|0)&p)+4>>2]|F;H=H+1|0}while((H|0)!=(E|0));if(F&2097152){za=120;break d}}while(0);I=c[(O&p)+32>>2]|0;H=(c[(O&p)+60>>2]|0)==0;if(!H?(c[(k&p)>>2]|0)!=0:0){za=120;break}if(c[(O&p)+64>>2]|0){za=120;break}E=b[(ta&o)>>1]|0;F=(E&64)==0;if(!(F|H)){za=120;break}if(!(c[(I&p)>>2]|0)){za=120;break}D=b[(O&o)+6>>1]|0;if(D&1){za=120;break}I=H|F^1;if(!I?(c[(L&p)>>2]|0)>1|(y|0)!=0:0){za=120;break}H=E&1;if(H<<16>>16!=0&s){za=120;break}B=c[(la&p)>>2]|0;C=(B|0)==0;if(!C?(c[(O&p)+48>>2]|0)!=0:0){za=120;break}J=(y|0)!=0;if(J?(c[(O&p)+48>>2]|0)!=0:0){za=120;break}if(I){if(D&6144){za=120;break}}else if(!((c[(m&p)>>2]|0)==0&H<<16>>16==0&(D&6144)==0)){za=120;break}if((E&2048)!=0?(c[(O&p)+52>>2]|0)!=0:0){za=120;break}R=L+(S*72|0)+44|0;if(a[(R&n)>>0]&32){za=120;break}E=O+52|0;I=c[(E&p)>>2]|0;do if(I){if(!(H<<16>>16==0&(((c[(O&p)+48>>2]|0)!=0|J)^1))){za=120;break d}if((c[(L&p)>>2]|0)!=1){za=120;break d}e:do if(O){if(!(D&5))F=O;else{za=120;break d}while(1){H=(I|0)==0;if(!H?(a[(F&n)+4>>0]|0)!=116:0){za=120;break d}if((c[(c[(F&p)+32>>2]&p)>>2]|0)<1){za=120;break d}if((c[(c[(O&p)>>2]&p)>>2]|0)!=(c[(c[(F&p)>>2]&p)>>2]|0)){za=120;break d}if(H)break e;if(b[(I&o)+6>>1]&5){za=120;break d}F=I;I=c[(I&p)+52>>2]|0}}while(0);if(C)break;F=c[(B&p)>>2]|0;if((F|0)<=0)break;I=c[(B&p)+4>>2]|0;H=0;do{if(!(b[(I+(H*20|0)&o)+16>>1]|0)){za=120;break d}H=H+1|0}while((H|0)<(F|0))}while(0);A=L+(S*72|0)+16|0;c[(q&p)>>2]=c[(A&p)>>2];Sq(f,21,0,0,0)|0;c[(q&p)>>2]=Q;I=c[(E&p)>>2]|0;f:do if(!I)za=81;else{B=u+65|0;E=c[(la&p)>>2]|0;D=c[(k&p)>>2]|0;C=c[(T&p)>>2]|0;F=c[(qa&p)>>2]|0;while(1){c[(la&p)>>2]=0;c[(na&p)>>2]=0;c[(qa&p)>>2]=0;c[(k&p)>>2]=0;c[(T&p)>>2]=0;H=gr(u,g,0)|0;c[(T&p)>>2]=C;c[(k&p)>>2]=D;c[(la&p)>>2]=E;c[(na&p)>>2]=L;a[(U&n)>>0]=116;if(!H)H=F;else{c[(H&p)+52>>2]=F;if(F)c[(F&p)+56>>2]=H;c[(H&p)+56>>2]=g}c[(qa&p)>>2]=H;if(a[(B&n)>>0]|0)break f;I=c[(I&p)+52>>2]|0;if(!I){za=81;break}else F=H}}while(0);if((za|0)==81){za=0;M=c[(K&p)>>2]|0;E=L+(S*72|0)+12|0;mg(u,c[(E&p)>>2]|0);mg(u,c[(A&p)>>2]|0);F=L+(S*72|0)+20|0;mg(u,c[(F&p)>>2]|0);c[(E&p)>>2]=0;c[(A&p)>>2]=0;c[(F&p)>>2]=0;c[(K&p)>>2]=0;F=L+(S*72|0)+24|0;E=c[(F&p)>>2]|0;if(E){D=E+40|0;C=b[(D&o)>>1]|0;if(C<<16>>16==1){Q=c[(l&p)>>2]|0;Q=((Q|0)==0?f:Q)+524|0;c[(E&p)+72>>2]=c[(Q&p)>>2];c[(Q&p)>>2]=E}else b[(D&o)>>1]=C+-1<<16>>16;c[(F&p)>>2]=0}Q=S+1|0;P=u+65|0;O=g;N=M;while(1){B=c[(N&p)+32>>2]|0;A=c[(B&p)>>2]|0;H=O+32|0;I=c[(H&p)>>2]|0;if(!I){I=pr(u,0,0,0)|0;c[(H&p)>>2]=I;if(!I)break;else z=0}else z=a[(R&n)>>0]|0;if((A|0)>1){I=Fs(u,I,A+-1|0,Q)|0;c[(H&p)>>2]=I;if(a[(P&n)>>0]|0)break}if((A|0)>0){F=0;do{D=F+S|0;Hk(u,c[(I+(D*72|0)&p)+56>>2]|0);H=B+(F*72|0)+8|0;D=I+(D*72|0)+8|0;E=H+0|0;C=D+72|0;do{c[(D&p)>>2]=c[(E&p)>>2];D=D+4|0;E=E+4|0}while((D|0)<(C|0));D=H+0|0;C=D+72|0;do{c[(D&p)>>2]=0;D=D+4|0}while((D|0)<(C|0));F=F+1|0}while((F|0)!=(A|0))}a[(I+(S*72|0)&n)+44>>0]=z;H=c[(O&p)>>2]|0;I=c[(H&p)>>2]|0;if((I|0)>0){D=H+4|0;F=c[(D&p)>>2]|0;E=0;do{if(!(c[(F+(E*20|0)&p)+4>>2]|0)){I=kh(u,c[(F+(E*20|0)&p)+8>>2]|0)|0;lo(I);F=c[(D&p)>>2]|0;c[(F+(E*20|0)&p)+4>>2]=I;I=c[(H&p)>>2]|0}E=E+1|0}while((E|0)<(I|0));H=c[(O&p)>>2]|0}Gs(u,H,t,c[(N&p)>>2]|0);if(J){Gs(u,c[(O&p)+40>>2]|0,t,c[(N&p)>>2]|0);L=O+44|0;c[(L&p)>>2]=Hs(u,c[(L&p)>>2]|0,t,c[(N&p)>>2]|0)|0}I=N+48|0;H=c[(I&p)>>2]|0;do if(!H){H=c[(O&p)+48>>2]|0;if(!H)break;Gs(u,H,t,c[(N&p)>>2]|0)}else{F=c[(H&p)>>2]|0;if((F|0)>0){E=c[(H&p)+4>>2]|0;D=0;do{b[(E+(D*20|0)&o)+16>>1]=0;D=D+1|0}while((D|0)!=(F|0))}c[(O&p)+48>>2]=H;c[(I&p)>>2]=0}while(0);H=c[(N&p)+36>>2]|0;if(!H)F=0;else F=Mr(u,H,0,0)|0;I=O+36|0;H=c[(I&p)>>2]|0;if(s){L=O+44|0;c[(L&p)>>2]=H;c[(I&p)>>2]=F;K=Hs(u,H,t,c[(N&p)>>2]|0)|0;c[(L&p)>>2]=K;c[(L&p)>>2]=ss(u,K,Mr(u,c[(N&p)+44>>2]|0,0,0)|0)|0;c[(O&p)+40>>2]=Pr(u,c[(N&p)+40>>2]|0,0)|0}else{L=Hs(u,H,t,c[(N&p)>>2]|0)|0;c[(I&p)>>2]=L;c[(I&p)>>2]=ss(u,L,F)|0}H=O+6|0;b[(H&o)>>1]=e[(H&o)>>1]|e[(N&o)+6>>1]&1;H=N+60|0;F=c[(H&p)>>2]|0;if(F){c[(O&p)+60>>2]=F;c[(H&p)>>2]=0}O=c[(O&p)+52>>2]|0;if(!O)break;else N=c[(N&p)+52>>2]|0}Mk(u,M,1)}if(!(v<<16>>16)){z=-1;break}b[(ta&o)>>1]=e[(ta&o)>>1]|4;z=-1;y=1}else za=120;while(0);g:do if((za|0)==120){za=0;do if((c[(x&p)>>2]|0)==1){if(b[(V&o)>>1]&256)break;D=c[(W&p)>>2]|0;R=D+1|0;Q=(c[(X&p)>>2]|0)+1|0;c[(X&p)>>2]=Q;z=x+(S*72|0)+36|0;c[(z&p)>>2]=Q;wh(wa,20,Q,0,R)|0;c[(P&p)>>2]=R;R=c[(z&p)>>2]|0;a[(ga&n)>>0]=13;c[(Y&p)>>2]=R;a[(Z&n)>>0]=0;c[(_&p)>>2]=0;c[($&p)>>2]=0;a[(x+(S*72|0)&n)+46>>0]=c[(oa&p)>>2];ir(f,N,ga)|0;R=N+24|0;R=fs(c[(R&p)>>2]|0,c[(R&p)+4>>2]|0)|0;b[((c[(x+(S*72|0)&p)+24>>2]|0)&o)+28>>1]=R;R=x+(S*72|0)+45|0;a[(R&n)>>0]=a[(R&n)>>0]|4;c[(x+(S*72|0)&p)+40>>2]=c[(_&p)>>2];wh(wa,21,c[(z&p)>>2]|0,0,0)|0;z=c[(W&p)>>2]|0;if(z>>>0>D>>>0)c[((c[(aa&p)>>2]|0)+(D*20|0)&p)+8>>2]=z;c[((c[(ba&p)>>2]|0)&p)+88>>2]=z+-1;a[(ca&n)>>0]=0;c[(da&p)>>2]=0;z=S;break g}while(0);C=(c[(X&p)>>2]|0)+1|0;c[(X&p)>>2]=C;E=x+(S*72|0)+36|0;c[(E&p)>>2]=C;C=wh(wa,25,0,C,0)|0;c[(P&p)>>2]=C+1;if(!(a[(x+(S*72|0)&n)+45>>0]&2)){R=Oq(f)|0;D=c[(ea&p)>>2]|0;c[(ea&p)>>2]=D+1;D=wh(R,44,D,0,0)|0}else D=0;R=c[(x+(S*72|0)&p)+48>>2]|0;a[(ga&n)>>0]=12;c[(Y&p)>>2]=R;a[(Z&n)>>0]=0;c[(_&p)>>2]=0;c[($&p)>>2]=0;a[(x+(S*72|0)&n)+46>>0]=c[(oa&p)>>2];ir(f,N,ga)|0;R=N+24|0;R=fs(c[(R&p)>>2]|0,c[(R&p)+4>>2]|0)|0;b[((c[(x+(S*72|0)&p)+24>>2]|0)&o)+28>>1]=R;if(D){A=c[(W&p)>>2]|0;if(A>>>0>D>>>0)c[((c[(aa&p)>>2]|0)+(D*20|0)&p)+8>>2]=A;c[((c[(ba&p)>>2]|0)&p)+88>>2]=A+-1}z=wh(wa,18,c[(E&p)>>2]|0,0,0)|0;if((c[(W&p)>>2]|0)>>>0>C>>>0)c[((c[(aa&p)>>2]|0)+(C*20|0)&p)+4>>2]=z;a[(ca&n)>>0]=0;c[(da&p)>>2]=0;z=S}while(0);if(a[(pa&n)>>0]|0){za=444;break b}c[(ra&p)>>2]=0;Es(g,ra);c[(r&p)>>2]=(c[(r&p)>>2]|0)-(c[(ra&p)>>2]|0);x=c[(na&p)>>2]|0;if((d[(h&n)>>0]|0)<9)break;c[(va&p)>>2]=c[(la&p)>>2]}while(0);w=c[(qa&p)>>2]|0;if(!w)S=z+1|0;else{H=m;Q=w;z=y;U=x;break}}}else{H=g+36|0;Q=w;U=x}while(0);T=c[(g&p)>>2]|0;B=c[(H&p)>>2]|0;l=g+40|0;w=c[(l&p)>>2]|0;I=g+44|0;ga=c[(I&p)>>2]|0;m=b[(ta&o)>>1]|0;a[(ua&n)>>0]=m&1;if(Q){O=c[(f&p)>>2]|0;c[(sa&p)>>2]=c[(h&p)>>2];c[(sa&p)+4>>2]=c[(h&p)+4>>2];c[(sa&p)+8>>2]=c[(h&p)+8>>2];c[(sa&p)+12>>2]=c[(h&p)+12>>2];c[(sa&p)+16>>2]=c[(h&p)+16>>2];h:do if(!(c[(Q&p)+48>>2]|0)){x=Q+60|0;if(c[(x&p)>>2]|0){k=d[(g&n)+4>>0]|0;if((k|0)==118)k=35336;else if((k|0)==117)k=35352;else if((k|0)==116)k=35320;else k=35360;c[(ra&p)>>2]=k;th(f,35072,ra);m=0;k=1;za=227;break}R=Oq(f)|0;t=a[(sa&n)>>0]|0;if(t<<24>>24==12){wh(R,57,c[(sa&p)+4>>2]|0,c[(c[(g&p)>>2]&p)>>2]|0,0)|0;t=c[(R&p)+4>>2]|0;if(t)a[(t+(((c[(R&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=8;a[(sa&n)>>0]=14;t=14}s=e[(ta&o)>>1]|0;if(s&256){m=0;k=Is(f,g,sa)|0;za=227;break}if((c[(c[(g&p)>>2]&p)>>2]|0)!=(c[(c[(Q&p)>>2]&p)>>2]|0)){Js(f,g);m=0;k=1;za=227;break}do if(!(s&2048)){if(c[(la&p)>>2]|0){k=Ls(f,g,h)|0;break h}P=g+4|0;s=d[(P&n)>>0]|0;if((s|0)==116){v=g+8|0;t=Q+8|0;c[(t&p)>>2]=c[(v&p)>>2];u=g+12|0;s=Q+12|0;c[(s&p)>>2]=c[(u&p)>>2];da=g+60|0;c[(x&p)>>2]=c[(da&p)>>2];ea=g+64|0;c[(Q&p)+64>>2]=c[(ea&p)>>2];q=c[(oa&p)>>2]|0;k=ir(f,Q,sa)|0;c[(da&p)>>2]=0;c[(ea&p)>>2]=0;if(k){m=0;za=227;break h}c[(qa&p)>>2]=0;t=c[(t&p)>>2]|0;c[(v&p)>>2]=t;c[(u&p)>>2]=c[(s&p)>>2];if(!t)w=0;else w=wh(R,46,t,0,0)|0;l=c[(oa&p)>>2]|0;k=ir(f,g,sa)|0;m=c[(qa&p)>>2]|0;c[(qa&p)>>2]=Q;ea=Q+24|0;r=g+24|0;t=r;ea=jw(c[(t&p)>>2]|0,c[(t&p)+4>>2]|0,c[(ea&p)>>2]|0,c[(ea&p)+4>>2]|0)|0;t=r;c[(t&p)>>2]=ea;c[(t&p)+4>>2]=G;t=c[(x&p)>>2]|0;do if(t){ea=(Ms(t,ka)|0)!=0;t=c[(ka&p)>>2]|0;if(!(ea&(t|0)>0))break;ea=r;da=c[(ea&p)+4>>2]|0;s=((t|0)<0)<<31>>31;if(!(da>>>0>s>>>0|((da|0)==(s|0)?(c[(ea&p)>>2]|0)>>>0>t>>>0:0)))break;ea=r;c[(ea&p)>>2]=t;c[(ea&p)+4>>2]=s}while(0);if(!w){w=P;v=q;t=l;break}r=c[(R&p)+32>>2]|0;if(r>>>0>w>>>0)c[((c[(R&p)+4>>2]|0)+(w*20|0)&p)+8>>2]=r;c[((c[(R&p)+24>>2]|0)&p)+88>>2]=r+-1;w=P;v=q;t=l;break}else if((s|0)==115|(s|0)==117){if(t<<24>>24==1)s=c[(sa&p)+4>>2]|0;else{r=f+68|0;s=c[(r&p)>>2]|0;c[(r&p)>>2]=s+1;c[(g&p)+16>>2]=wh(R,57,s,0,0)|0;r=g;while(1){t=c[(r&p)+56>>2]|0;if(!t)break;else r=t}ea=r+6|0;b[(ea&o)>>1]=e[(ea&o)>>1]|8}a[(ia&n)>>0]=1;c[(ia&p)+4>>2]=s;a[(ia&n)+1>>0]=0;c[(ia&p)+8>>2]=0;c[(ia&p)+12>>2]=0;y=c[(oa&p)>>2]|0;k=ir(f,Q,ia)|0;if(k){m=0;za=227;break h}x=(a[(P&n)>>0]|0)==117?2:1;c[(qa&p)>>2]=0;v=g+60|0;u=c[(v&p)>>2]|0;c[(v&p)>>2]=0;t=g+64|0;r=c[(t&p)>>2]|0;c[(t&p)>>2]=0;a[(ia&n)>>0]=x;x=c[(oa&p)>>2]|0;k=ir(f,g,ia)|0;Nk(O,c[(la&p)>>2]|0);m=c[(qa&p)>>2]|0;c[(qa&p)>>2]=Q;c[(la&p)>>2]=0;if((a[(P&n)>>0]|0)==115){da=Q+24|0;ea=g+24|0;ca=ea;da=jw(c[(ca&p)>>2]|0,c[(ca&p)+4>>2]|0,c[(da&p)>>2]|0,c[(da&p)+4>>2]|0)|0;c[(ea&p)>>2]=da;c[(ea&p)+4>>2]=G}Gk(O,c[(v&p)>>2]|0);c[(v&p)>>2]=u;c[(t&p)>>2]=r;c[(g&p)+8>>2]=0;c[(g&p)+12>>2]=0;r=a[(sa&n)>>0]|0;if(r<<24>>24==9){r=g;while(1){q=c[(r&p)+52>>2]|0;if(!q)break;else r=q}Ns(f,0,c[(r&p)>>2]|0)}else if(r<<24>>24==1){w=P;v=y;t=x;break}l=xs(R)|0;ea=xs(R)|0;Os(f,g,l);wh(R,108,s,l,0)|0;w=R+32|0;v=c[(w&p)>>2]|0;Ps(f,g,c[(g&p)>>2]|0,s,0,0,sa,ea,l);u=R+24|0;t=c[(u&p)>>2]|0;r=~ea;do if((ea|0)<0){q=c[(t&p)+112>>2]|0;if(!q)break;c[(q+(r<<2)&p)>>2]=c[(w&p)>>2]}while(0);c[(t&p)+88>>2]=(c[(w&p)>>2]|0)+-1;wh(R,9,s,v,0)|0;r=c[(u&p)>>2]|0;q=~l;do if((l|0)<0){t=c[(r&p)+112>>2]|0;if(!t)break;c[(t+(q<<2)&p)>>2]=c[(w&p)>>2]}while(0);c[(r&p)+88>>2]=(c[(w&p)>>2]|0)+-1;wh(R,61,s,0,0)|0;w=P;v=y;t=x;break}else{r=f+68|0;A=c[(r&p)>>2]|0;c[(r&p)>>2]=A+2;c[(g&p)+16>>2]=wh(R,57,A,0,0)|0;r=g;while(1){q=c[(r&p)+56>>2]|0;if(!q)break;else r=q}y=A+1|0;v=r+6|0;b[(v&o)>>1]=e[(v&o)>>1]|8;a[(ja&n)>>0]=1;v=ja+4|0;c[(v&p)>>2]=A;a[(ja&n)+1>>0]=0;c[(ja&p)+8>>2]=0;c[(ja&p)+12>>2]=0;x=c[(oa&p)>>2]|0;k=ir(f,Q,ja)|0;if(k){m=0;za=227;break h}c[(g&p)+20>>2]=wh(R,57,y,0,0)|0;c[(qa&p)>>2]=0;w=g+60|0;l=c[(w&p)>>2]|0;c[(w&p)>>2]=0;q=g+64|0;r=c[(q&p)>>2]|0;c[(q&p)>>2]=0;c[(v&p)>>2]=y;z=c[(oa&p)>>2]|0;k=ir(f,g,ja)|0;m=c[(qa&p)>>2]|0;c[(qa&p)>>2]=Q;t=g+24|0;ea=t;da=c[(ea&p)+4>>2]|0;u=Q+24|0;v=c[(u&p)>>2]|0;u=c[(u&p)+4>>2]|0;if(da>>>0>u>>>0|((da|0)==(u|0)?(c[(ea&p)>>2]|0)>>>0>v>>>0:0)){ea=t;c[(ea&p)>>2]=v;c[(ea&p)+4>>2]=u}Gk(O,c[(w&p)>>2]|0);c[(w&p)>>2]=l;c[(q&p)>>2]=r;if((a[(sa&n)>>0]|0)==9){t=g;while(1){s=c[(t&p)+52>>2]|0;if(!s)break;else t=s}Ns(f,0,c[(t&p)>>2]|0)}q=xs(R)|0;w=xs(R)|0;Os(f,g,q);wh(R,108,A,q,0)|0;t=f+19|0;s=a[(t&n)>>0]|0;if(!(s<<24>>24)){ea=f+72|0;t=(c[(ea&p)>>2]|0)+1|0;c[(ea&p)>>2]=t}else{ea=s+-1<<24>>24;a[(t&n)>>0]=ea;t=c[(f+((ea&255)<<2)&p)+24>>2]|0}l=wh(R,101,A,t,0)|0;xh(R,wh(R,68,y,w,t)|0,0,-14);_r(f,t);Ps(f,g,c[(g&p)>>2]|0,A,0,0,sa,w,q);t=R+24|0;s=c[(t&p)>>2]|0;u=~w;do if((w|0)<0){v=c[(s&p)+112>>2]|0;if(!v)break;c[(v+(u<<2)&p)>>2]=c[(R&p)+32>>2]}while(0);v=R+32|0;c[(s&p)+88>>2]=(c[(v&p)>>2]|0)+-1;wh(R,9,A,l,0)|0;s=c[(t&p)>>2]|0;r=~q;do if((q|0)<0){t=c[(s&p)+112>>2]|0;if(!t)break;c[(t+(r<<2)&p)>>2]=c[(v&p)>>2]}while(0);c[(s&p)+88>>2]=(c[(v&p)>>2]|0)+-1;wh(R,61,y,0,0)|0;wh(R,61,A,0,0)|0;w=P;v=x;t=z;break}}else{Ks(f,g,sa);w=g+4|0;v=0;t=0;m=0;k=0}while(0);ea=a[(w&n)>>0]|0;Qs(f,ea&255,v,t,ea<<24>>24!=116&1);if(!(b[(ta&o)>>1]&8)){za=227;break}u=c[(c[(g&p)>>2]&p)>>2]|0;v=Rs(O,u,1)|0;if(!v){k=7;za=227;break}if((u|0)>0){l=O+8|0;q=v+20|0;r=0;while(1){ea=Ss(f,g,r)|0;c[(q&p)>>2]=ea;if(!ea)c[(q&p)>>2]=c[(l&p)>>2];r=r+1|0;if((r|0)==(u|0))break;else q=q+4|0}}s=R+32|0;t=R+4|0;do{l=0;do{r=g+(l<<2)+16|0;q=c[(r&p)>>2]|0;if((q|0)<0)break;if((c[(s&p)>>2]|0)>>>0>q>>>0)c[((c[(t&p)>>2]|0)+(q*20|0)&p)+8>>2]=u;c[(v&p)>>2]=(c[(v&p)>>2]|0)+1;xh(R,q,v,-6);c[(r&p)>>2]=-1;l=l+1|0}while((l|0)<2);g=c[(g&p)+52>>2]|0}while((g|0)!=0);ea=(c[(v&p)>>2]|0)+-1|0;c[(v&p)>>2]=ea;if(ea){za=227;break}Wc(v);za=227}else{k=d[(g&n)+4>>0]|0;if((k|0)==118)k=35336;else if((k|0)==117)k=35352;else if((k|0)==116)k=35320;else k=35360;c[(ra&p)>>2]=k;th(f,35024,ra);m=0;k=1;za=227}while(0);if((za|0)==227){c[(h&p)+8>>2]=c[(sa&p)+8>>2];c[(h&p)+12>>2]=c[(sa&p)+12>>2];Mk(O,m,1)}c[(Aa&p)>>2]=Ba;break a}if((m&5)==1){k=c[(va&p)>>2]|0;if(!(Ts(k,T,-1)|0)){b[(ta&o)>>1]=m&65534;w=Pr(xa,T,0)|0;c[(l&p)>>2]=w;za=232}}else za=232;if((za|0)==232)k=c[(va&p)>>2]|0;if(!k)k=-1;else{ea=Us(f,k,0,c[(T&p)>>2]|0)|0;da=f+68|0;k=c[(da&p)>>2]|0;c[(da&p)>>2]=k+1;c[(va&p)+8>>2]=k;k=wh(wa,57,k,(c[(c[(va&p)>>2]&p)>>2]|0)+1+(c[(T&p)>>2]|0)|0,0)|0;xh(wa,k,ea,-6)}R=va+20|0;c[(R&p)>>2]=k;if((a[(h&n)>>0]|0)==12)wh(wa,57,c[(h&p)+4>>2]|0,c[(T&p)>>2]|0,0)|0;qa=xs(wa)|0;y=g+24|0;ea=y;c[(ea&p)>>2]=-1;c[(ea&p)+4>>2]=2147483647;Os(f,g,qa);if((c[(g&p)+8>>2]|0)==0?(ha=c[(R&p)>>2]|0,(ha|0)>-1):0){if(!(a[((c[(wa&p)>>2]|0)&n)+65>>0]|0))k=(c[(wa&p)+4>>2]|0)+(ha*20|0)|0;else k=29120;a[(k&n)>>0]=58;ea=va+24|0;a[(ea&n)>>0]=d[(ea&n)>>0]|1}if(!(b[(ta&o)>>1]&1))a[(ua&n)+1>>0]=0;else{ea=f+68|0;k=c[(ea&p)>>2]|0;c[(ea&p)>>2]=k+1;c[(ua&p)+4>>2]=k;ea=Us(f,c[(g&p)>>2]|0,0,0)|0;k=wh(wa,57,k,0,0)|0;xh(wa,k,ea,-6);c[(ua&p)+8>>2]=k;k=c[(wa&p)+4>>2]|0;if(k)a[(k+(((c[(wa&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=8;a[(ua&n)+1>>0]=3}if((z|0)==0&(w|0)==0){v=Vs(f,U,B,c[(va&p)>>2]|0,c[(g&p)>>2]|0,(a[(ua&n)>>0]|0)!=0?1024:0,0)|0;if(!v){za=444;break}t=Ws(b[(v&o)+32>>1]|0)|0;s=G;ea=y;da=c[(ea&p)+4>>2]|0;if(s>>>0>>0|((s|0)==(da|0)?t>>>0<(c[(ea&p)>>2]|0)>>>0:0)){ea=y;c[(ea&p)>>2]=t;c[(ea&p)+4>>2]=s}do if(a[(ua&n)>>0]|0){t=a[(v&n)+40>>0]|0;if(!(t<<24>>24))break;a[(ua&n)+1>>0]=t}while(0);t=c[(va&p)>>2]|0;do if(!t)za=257;else{ea=a[(v&n)+36>>0]|0;c[(va&p)+4>>2]=ea;if((ea|0)!=(c[(t&p)>>2]|0))break;c[(va&p)>>2]=0;za=257}while(0);do if((za|0)==257){r=c[(R&p)>>2]|0;if((r|0)<=-1)break;zh(wa,r)}while(0);Ps(f,g,T,-1,va,ua,h,c[(v&p)+48>>2]|0,c[(v&p)+52>>2]|0);Xs(v)}else{z=(w|0)!=0;do if(z){l=c[(g&p)>>2]|0;k=c[(l&p)>>2]|0;if((k|0)>0){l=c[(l&p)+4>>2]|0;while(1){b[(l&o)+18>>1]=0;k=k+-1|0;if((k|0)<=0)break;else l=l+20|0}}k=c[(w&p)>>2]|0;if((k|0)>0){l=c[(w&p)+4>>2]|0;while(1){b[(l&o)+18>>1]=0;k=k+-1|0;if((k|0)<=0)break;else l=l+20|0}}ea=y;da=c[(ea&p)+4>>2]|0;if(!(da>>>0>0|(da|0)==0&(c[(ea&p)>>2]|0)>>>0>100))break;ea=y;c[(ea&p)>>2]=100;c[(ea&p)+4>>2]=0}else{ea=y;c[(ea&p)>>2]=1;c[(ea&p)+4>>2]=0}while(0);P=(Ts(w,c[(va&p)>>2]|0,-1)|0)==0;S=xs(wa)|0;c[(ma&p)>>2]=0;c[(ma&p)+4>>2]=0;c[(ma&p)+8>>2]=0;c[(ma&p)+12>>2]=0;c[(ma&p)+16>>2]=0;c[(ma&p)+20>>2]=0;c[(ma&p)+24>>2]=0;c[(ma&p)+28>>2]=0;c[(ma&p)>>2]=f;c[(ma&p)+4>>2]=U;c[(ma&p)+12>>2]=ya;K=f+72|0;c[(ya&p)+16>>2]=(c[(K&p)>>2]|0)+1;if(z)k=c[(w&p)>>2]|0;else k=0;y=ya+12|0;c[(y&p)>>2]=k;c[(ya&p)+24>>2]=w;Ys(ma,T);Ys(ma,c[(va&p)>>2]|0);if(ga){c[(ra&p)>>2]=0;c[(ra&p)+4>>2]=0;c[(ra&p)+8>>2]=0;c[(ra&p)+12>>2]=0;c[(ra&p)+16>>2]=0;c[(ra&p)+20>>2]=0;c[(ra&p)>>2]=80;c[(ra&p)+4>>2]=81;c[(ra&p)+24>>2]=ma;rs(ra,ga)|0}A=ya+32|0;c[(ya&p)+36>>2]=c[(A&p)>>2];r=ya+44|0;k=c[(r&p)>>2]|0;if((k|0)>0){x=ma+28|0;l=ya+40|0;m=b[(x&o)>>1]|0;q=0;do{b[(x&o)>>1]=m&65535|8;Ys(ma,c[((c[((c[(l&p)>>2]|0)+(q<<4)&p)>>2]|0)&p)+20>>2]|0);m=e[(x&o)>>1]&65527;b[(x&o)>>1]=m;q=q+1|0;k=c[(r&p)>>2]|0}while((q|0)<(k|0))}c[(ya&p)+20>>2]=c[(K&p)>>2];if(a[(pa&n)>>0]|0){za=444;break}if(z){I=f+68|0;H=c[(I&p)>>2]|0;c[(I&p)>>2]=H+1;v=ya+4|0;c[(v&p)>>2]=H;H=Us(f,w,0,c[(A&p)>>2]|0)|0;u=wh(wa,58,c[(v&p)>>2]|0,c[(y&p)>>2]|0,0)|0;xh(wa,u,H,-6);N=c[(K&p)>>2]|0;M=N+1|0;J=N+2|0;N=N+3|0;c[(K&p)>>2]=N;L=xs(wa)|0;Q=(c[(K&p)>>2]|0)+1|0;c[(K&p)>>2]=Q;O=xs(wa)|0;t=c[(K&p)>>2]|0;r=t+1|0;ea=c[(w&p)>>2]|0;da=ea+t|0;s=da+1|0;c[(K&p)>>2]=da+ea;wh(wa,25,0,J,0)|0;wh(wa,25,0,M,0)|0;wh(wa,28,0,r,(c[(w&p)>>2]|0)+t|0)|0;wh(wa,17,Q,O,0)|0;t=Vs(f,U,B,w,0,P?2304:256,0)|0;if(!t){za=444;break}if((a[(t&n)+36>>0]|0)==(c[(w&p)>>2]|0)){x=0;k=0;y=0}else{if(!(a[(ua&n)>>0]|0))k=34824;else k=(b[(ta&o)>>1]&1)==0?34808:34824;$s(f,k);D=c[(w&p)>>2]|0;k=c[(A&p)>>2]|0;if((k|0)>0){l=c[(ya&p)+28>>2]|0;m=0;y=D;x=D;do{if((c[(l+(m*24|0)&p)+12>>2]|0)>=(y|0)){y=y+1|0;x=x+1|0}m=m+1|0}while((m|0)<(k|0));F=x}else F=D;E=f+60|0;x=c[(E&p)>>2]|0;B=f+56|0;k=c[(B&p)>>2]|0;if((k|0)<(F|0)){C=c[(K&p)>>2]|0;c[(K&p)>>2]=C+F;C=C+1|0}else{c[(E&p)>>2]=x+F;c[(B&p)>>2]=k-F;C=x}at(f);bt(f,w,C,0);y=c[(A&p)>>2]|0;if((y|0)>0){m=ya+28|0;z=0;x=D;do{k=c[(m&p)>>2]|0;if((c[(k+(z*24|0)&p)+12>>2]|0)>=(x|0)){l=x+C|0;y=ct(f,c[(k+(z*24|0)&p)>>2]|0,c[(k+(z*24|0)&p)+8>>2]|0,c[(k+(z*24|0)&p)+4>>2]|0,l,0)|0;if((l|0)!=(y|0))wh(wa,34,y,l,0)|0;y=c[(A&p)>>2]|0;x=x+1|0}z=z+1|0}while((z|0)<(y|0))}y=f+19|0;x=a[(y&n)>>0]|0;if(!(x<<24>>24)){x=(c[(K&p)>>2]|0)+1|0;c[(K&p)>>2]=x}else{x=x+-1<<24>>24;a[(y&n)>>0]=x;x=c[(f+((x&255)<<2)&p)+24>>2]|0}wh(wa,49,C,F,x)|0;wh(wa,109,c[(v&p)>>2]|0,x,0)|0;_r(f,x);dt(f,C,F);if((c[(B&p)>>2]|0)<(F|0)){c[(B&p)>>2]=F;c[(E&p)>>2]=C}Xs(t);l=c[(I&p)>>2]|0;c[(I&p)>>2]=l+1;c[(ya&p)+8>>2]=l;k=a[(y&n)>>0]|0;if(!(k<<24>>24)){k=(c[(K&p)>>2]|0)+1|0;c[(K&p)>>2]=k}else{k=k+-1<<24>>24;a[(y&n)>>0]=k;k=c[(f+((k&255)<<2)&p)+24>>2]|0}wh(wa,60,l,k,F)|0;wh(wa,106,c[(v&p)>>2]|0,S,0)|0;a[(ya&n)+1>>0]=1;at(f);x=1;y=l}do if(P){if(b[(xa&o)+60>>1]&4)break;if((x|0)==0?(a[(t&n)+37>>0]|0)==0:0)break;c[(va&p)>>2]=0;zh(wa,c[(R&p)>>2]|0)}while(0);A=wa+32|0;q=c[(A&p)>>2]|0;at(f);x=(x|0)!=0;if(x)wh(wa,100,c[(v&p)>>2]|0,k,y)|0;k=c[(w&p)>>2]|0;if((k|0)>0){l=w+4|0;m=0;do{if(x)wh(wa,47,y,m,m+s|0)|0;else{a[(ya&n)>>0]=1;Rq(f,c[((c[(l&p)>>2]|0)+(m*20|0)&p)>>2]|0,m+s|0)}m=m+1|0;k=c[(w&p)>>2]|0}while((m|0)<(k|0))}if(H)c[(H&p)>>2]=(c[(H&p)>>2]|0)+1;xh(wa,wh(wa,42,r,s,k)|0,H,-6);k=c[(A&p)>>2]|0;ea=k+1|0;wh(wa,43,ea,0,ea)|0;w=c[(w&p)>>2]|0;wh(c[(f&p)+8>>2]|0,32,s,r,w)|0;dt(f,s,w);wh(wa,17,N,L,0)|0;wh(wa,137,J,S,0)|0;wh(wa,17,Q,O,0)|0;w=c[(A&p)>>2]|0;if(w>>>0>k>>>0)c[((c[(wa&p)+4>>2]|0)+(k*20|0)&p)+8>>2]=w;r=wa+24|0;c[((c[(r&p)>>2]|0)&p)+88>>2]=w+-1;et(f,ya);wh(wa,25,1,M,0)|0;if(x)wh(wa,5,c[(v&p)>>2]|0,q,0)|0;else{Xs(t);zh(wa,u)}wh(wa,17,N,L,0)|0;wh(wa,16,0,S,0)|0;m=c[(A&p)>>2]|0;wh(wa,25,1,J,0)|0;wh(wa,18,N,0,0)|0;k=c[(r&p)>>2]|0;l=~L;do if((L|0)<0){w=c[(k&p)+112>>2]|0;if(!w)break;c[(w+(l<<2)&p)>>2]=c[(A&p)>>2]}while(0);v=c[(A&p)>>2]|0;c[(k&p)+88>>2]=v+-1;wh(wa,137,M,v+2|0,0)|0;wh(wa,18,N,0,0)|0;ft(f,ya);v=v+1|0;gt(f,ga,v,16);Ps(f,g,c[(g&p)>>2]|0,-1,va,ua,h,v,m);wh(wa,18,N,0,0)|0;v=c[(r&p)>>2]|0;u=~O;do if((O|0)<0){t=c[(v&p)+112>>2]|0;if(!t)break;c[(t+(u<<2)&p)>>2]=c[(A&p)>>2]}while(0);c[(v&p)+88>>2]=(c[(A&p)>>2]|0)+-1;ht(f,ya);wh(wa,18,Q,0,0)|0}else{do if(!(c[(H&p)>>2]|0)){u=c[(g&p)>>2]|0;if((c[(u&p)>>2]|0)!=1){za=372;break}v=c[(na&p)>>2]|0;if((c[(v&p)>>2]|0)!=1){za=372;break}if(c[(v&p)+28>>2]|0){za=372;break}A=c[(v&p)+24>>2]|0;v=c[(c[(u&p)+4>>2]&p)>>2]|0;z=A+44|0;if(a[(z&n)>>0]&16){za=372;break}if((a[(v&n)>>0]|0)!=-101|(k|0)==0){za=372;break}y=ya+40|0;if(!(b[((c[((c[(y&p)>>2]|0)&p)+4>>2]|0)&o)+2>>1]&256)){za=372;break}if((A|0)==0?1:(c[(v&p)+4>>2]&16|0)!=0){za=372;break}v=c[(f&p)>>2]|0;k=c[(A&p)+68>>2]|0;i:do if(!k)u=-1e6;else{l=c[(v&p)+20>>2]|0;if((l|0)<=0){u=0;break}v=c[(v&p)+16>>2]|0;w=0;while(1){u=w+1|0;if((c[(v+(w<<4)&p)+12>>2]|0)==(k|0)){u=w;break i}if((u|0)<(l|0))w=u;else break}}while(0);w=f+68|0;q=c[(w&p)>>2]|0;c[(w&p)>>2]=q+1;w=A+32|0;k=c[(w&p)>>2]|0;Ar(f,u);gs(f,u,c[(w&p)>>2]|0,0,c[(A&p)>>2]|0);w=c[(A&p)+8>>2]|0;j:do if(!(a[(z&n)>>0]&32)){v=0;za=351}else{if(!w){l=1;m=0;w=0;break}else v=w;while(1){if((a[(v&n)+51>>0]&3)==2){za=351;break j}v=c[(v&p)+20>>2]|0;if(!v){v=0;za=351;break}}}while(0);do if((za|0)==351){if(w){m=A+42|0;l=w;do{do if(!(a[(l&n)+51>>0]&4)){w=b[(l&o)+44>>1]|0;if(w<<16>>16>=(b[(m&o)>>1]|0))break;if(c[(l&p)+36>>2]|0)break;if((v|0)!=0?w<<16>>16>=(b[(v&o)+44>>1]|0):0)break;v=l}while(0);l=c[(l&p)+20>>2]|0}while((l|0)!=0)}if(!v){l=1;m=0;w=0;break}k=c[(v&p)+40>>2]|0;l=0;m=v;w=hs(f,v)|0}while(0);xh(wa,wh(wa,54,q,k,u)|0,1,-14);if(w)xh(wa,-1,w,-6);wh(wa,50,q,c[((c[(y&p)>>2]|0)&p)+8>>2]|0,0)|0;wh(wa,61,q,0,0)|0;if((a[(f&n)+450>>0]|0)!=2){t=0;break}do if(l){v=c[(A&p)>>2]|0;u=10360;s=10360;t=c[(f&p)>>2]|0}else{if(a[(z&n)>>0]&32){ea=(a[(m&n)+51>>0]&3)!=2;t=c[(f&p)>>2]|0;v=c[(A&p)>>2]|0;u=ea?34920:10360;if(!ea){s=10360;break}}else{u=34920;v=c[(A&p)>>2]|0;t=c[(f&p)>>2]|0}s=c[(m&p)>>2]|0}while(0);c[(ra&p)>>2]=v;c[(ra&p)+4>>2]=u;c[(ra&p)+8>>2]=s;t=uh(t,34896,ra)|0;ea=c[(f&p)+8>>2]|0;xh(ea,wh(ea,157,c[(Aa&p)>>2]|0,0,0)|0,t,-1);t=0}else za=372;while(0);if((za|0)==372){do if((c[(I&p)>>2]|0)==0&(k|0)==1){t=c[(c[(ya&p)+40>>2]&p)>>2]|0;v=c[(t&p)+20>>2]|0;if(!v){t=0;s=0;break}if((c[(v&p)>>2]|0)!=1){t=0;s=0;break}if((a[(c[(c[(v&p)+4>>2]&p)>>2]&n)>>0]|0)!=-100){t=0;s=0;break}t=c[(t&p)+8>>2]|0;if(dd(t,18760)|0)if(!(dd(t,18768)|0))s=2;else{t=0;s=0;break}else s=1;t=Pr(xa,v,0)|0;if(!t){t=0;break}if(a[(pa&n)>>0]|0)break;ea=c[(t&p)+4>>2]|0;a[(ea&n)+12>>0]=s<<24>>24!=1&1;a[(c[(ea&p)>>2]&n)>>0]=-102}else{t=0;s=0}while(0);ht(f,ya);s=Vs(f,U,B,t,0,s&255,0)|0;if(!s){Nk(xa,t);za=444;break}et(f,ya);if((a[(s&n)+36>>0]|0)>0)wh(wa,16,0,c[(s&p)+52>>2]|0,0)|0;Xs(s);ft(f,ya)}c[(va&p)>>2]=0;gt(f,ga,S,16);Ps(f,g,c[(g&p)>>2]|0,-1,0,0,h,S,S);Nk(xa,t);r=wa+24|0}t=c[(r&p)>>2]|0;s=~S;do if((S|0)<0){r=c[(t&p)+112>>2]|0;if(!r)break;c[(r+(s<<2)&p)>>2]=c[(wa&p)+32>>2]}while(0);c[(t&p)+88>>2]=(c[(wa&p)+32>>2]|0)+-1}if((a[(ua&n)+1>>0]|0)==3)$s(f,34808);if(c[(va&p)>>2]|0){x=va+4|0;$s(f,(c[(x&p)>>2]|0)>0?34840:34864);A=c[(T&p)>>2]|0;v=f+8|0;H=c[(v&p)>>2]|0;I=xs(H)|0;F=xs(H)|0;q=c[(va&p)>>2]|0;m=a[(h&n)>>0]|0;B=m&255;C=h+4|0;D=c[(C&p)>>2]|0;y=va+16|0;w=c[(y&p)>>2]|0;if(w){wh(H,17,c[(va&p)+12>>2]|0,w,0)|0;wh(H,16,0,I,0)|0;ea=c[(y&p)>>2]|0;w=c[(H&p)+24>>2]|0;k=~ea;do if((ea|0)<0){l=c[(w&p)+112>>2]|0;if(!l)break;c[(l+(k<<2)&p)>>2]=c[(H&p)+32>>2]}while(0);c[(w&p)+88>>2]=(c[(H&p)+32>>2]|0)+-1}E=c[(va&p)+8>>2]|0;t=m<<24>>24==9;k:do if((m&-5)<<24>>24==9){s=A;u=c[(h&p)+8>>2]|0;k=0}else{w=f+19|0;k=a[(w&n)>>0]|0;do if(k<<24>>24){ea=k+-1<<24>>24;a[(w&n)>>0]=ea;l=c[(f+((ea&255)<<2)&p)+24>>2]|0;if(!(ea<<24>>24)){k=l;w=c[(f&p)+72>>2]|0;break}else{u=k+-2<<24>>24;a[(w&n)>>0]=u;s=1;u=c[(f+((u&255)<<2)&p)+24>>2]|0;k=l;break k}}else{k=f+72|0;w=(c[(k&p)>>2]|0)+1|0;c[(k&p)>>2]=w;k=w}while(0);u=w+1|0;c[(f&p)+72>>2]=u;s=1}while(0);r=(c[(q&p)>>2]|0)-(c[(x&p)>>2]|0)|0;z=va+24|0;if(!(a[(z&n)>>0]&1)){w=wh(H,107,E,I,0)|0;it(H,c[(g&p)+12>>2]|0,F);l=1;m=E}else{ea=f+72|0;m=(c[(ea&p)>>2]|0)+1|0;c[(ea&p)>>2]=m;ea=f+68|0;q=c[(ea&p)>>2]|0;c[(ea&p)>>2]=q+1;if(!(c[(y&p)>>2]|0))l=0;else{ea=Oq(f)|0;da=f+80|0;l=c[(da&p)>>2]|0;c[(da&p)>>2]=l+1;l=wh(ea,44,l,0,0)|0}wh(H,60,q,m,s+1+r|0)|0;if(l){w=c[(H&p)+32>>2]|0;if(w>>>0>l>>>0)c[((c[(H&p)+4>>2]|0)+(l*20|0)&p)+8>>2]=w;c[((c[(H&p)+24>>2]|0)&p)+88>>2]=w+-1}w=wh(H,106,E,I,0)|0;it(H,c[(g&p)+12>>2]|0,F);wh(H,100,E,m,q)|0;l=0;m=q}x=w+1|0;if((s|0)>0){w=l+r|0;l=0;do{wh(H,47,m,w+l|0,l+u|0)|0;l=l+1|0}while((l|0)!=(s|0))}do if((B|0)==12|(B|0)==14){wh(H,74,D,k,0)|0;wh(H,75,D,u,k)|0;t=c[(H&p)+4>>2]|0;if(!t)break;a[(t+(((c[(H&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=8}else if((B|0)==11){xh(H,wh(H,49,u,1,k)|0,h+1|0,1);dt(f,u,1);wh(H,110,D,k,0)|0}else if((B|0)!=10)if(t){ea=h+8|0;wh(H,35,c[(ea&p)>>2]|0,A,0)|0;dt(f,c[(ea&p)>>2]|0,A);break}else{wh(H,22,c[(C&p)>>2]|0,0,0)|0;break}else{wh(c[(v&p)>>2]|0,32,u,D,1)|0;dt(f,u,1)}while(0);if(k){_r(f,u);_r(f,k)}s=H+24|0;u=c[(s&p)>>2]|0;v=~F;do if((F|0)<0){t=c[(u&p)+112>>2]|0;if(!t)break;c[(t+(v<<2)&p)>>2]=c[(H&p)+32>>2]}while(0);v=H+32|0;c[(u&p)+88>>2]=(c[(v&p)>>2]|0)+-1;if(!(a[(z&n)>>0]&1))wh(H,9,E,x,0)|0;else wh(H,5,E,x,0)|0;r=c[(va&p)+12>>2]|0;if(r)wh(H,18,r,0,0)|0;r=c[(s&p)>>2]|0;q=~I;do if((I|0)<0){m=c[(r&p)+112>>2]|0;if(!m)break;c[(m+(q<<2)&p)>>2]=c[(v&p)>>2]}while(0);c[(r&p)+88>>2]=(c[(v&p)>>2]|0)+-1}l=c[(wa&p)+24>>2]|0;m=~qa;do if((qa|0)<0){k=c[(l&p)+112>>2]|0;if(!k)break;c[(k+(m<<2)&p)>>2]=c[(wa&p)+32>>2]}while(0);c[(l&p)+88>>2]=(c[(wa&p)+32>>2]|0)+-1;c[(Aa&p)>>2]=Ba;if((a[(h&n)>>0]|0)!=9){k=0;break}Ns(f,U,T);k=0}else za=444;while(0);if((za|0)==444){c[(Aa&p)>>2]=Ba;k=1}mg(xa,c[(ya&p)+28>>2]|0);mg(xa,c[(ya&p)+40>>2]|0)}else k=1;while(0);i=Ca;return k|0}function jr(a,b,d,e,f,g,h,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();m=r;o=c[(a&p)>>2]|0;if((b|0)==0?(l=(h|0)!=0,l|(k|0)!=0):0){c[(m&p)>>2]=l?34792:34800;th(a,34752,m);q=9}else{b=pr(o,b,d,e)|0;if((b|0)!=0?(n=c[(b&p)>>2]|0,(n|0)!=0):0){l=n+-1|0;if(c[(f&p)+4>>2]|0)c[(b+(l*72|0)&p)+20>>2]=Wq(o,f)|0;c[(b+(l*72|0)&p)+28>>2]=g;c[(b+(l*72|0)&p)+52>>2]=h;c[(b+(l*72|0)&p)+56>>2]=k}else q=9}if((q|0)==9){Gk(o,h);Hk(o,k);Mk(o,g,1);b=0}i=r;return b|0}function kr(d,e,f,g,h,k,l,m,q,r){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+80|0;if((i|0)>=(j|0))fa();t=y+72|0;x=y;w=c[(d&p)>>2]|0;s=mh(w,72,0)|0;if(!s){u=x+0|0;v=u+72|0;do{c[(u&p)>>2]=0;u=u+4|0}while((u|0)<(v|0));s=x}else{u=s+0|0;v=u+72|0;do{a[(u&n)>>0]=0;u=u+1|0}while((u|0)<(v|0))}if(!e){c[(t&p)>>2]=0;c[(t&p)+4>>2]=0;e=lr(d,0,nr(w,116,t,0)|0)|0}c[(s&p)>>2]=e;if(!f){f=mh(w,80,0)|0;if(f){u=f+0|0;v=u+80|0;do{a[(u&n)>>0]=0;u=u+1|0}while((u|0)<(v|0))}}c[(s&p)+32>>2]=f;c[(s&p)+36>>2]=g;c[(s&p)+40>>2]=h;c[(s&p)+44>>2]=k;c[(s&p)+48>>2]=l;b[(s&o)+6>>1]=m;a[(s&n)+4>>0]=119;c[(s&p)+60>>2]=q;c[(s&p)+64>>2]=r;c[(s&p)+16>>2]=-1;c[(s&p)+20>>2]=-1;if(a[(w&n)+65>>0]|0){Mk(w,s,(s|0)!=(x|0)&1);s=0}i=y;return s|0}function lr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[(b&p)>>2]|0;if(!d){d=mh(g,8,0)|0;if(d){b=d;f=b;a[(f&n)>>0]=0;a[(f&n)+1>>0]=0;a[(f&n)+2>>0]=0;a[(f&n)+3>>0]=0;b=b+4|0;a[(b&n)>>0]=0;a[(b&n)+1>>0]=0;a[(b&n)+2>>0]=0;a[(b&n)+3>>0]=0;b=mh(g,20,0)|0;c[(d&p)+4>>2]=b;if(!b)f=8;else f=7}else{d=0;f=8}}else{b=c[(d&p)>>2]|0;if(!(b+-1&b)){f=d+4|0;b=ro(g,c[(f&p)>>2]|0,b*40|0,0)|0;if(!b)f=8;else{c[(f&p)>>2]=b;f=7}}else f=7}if((f|0)==7){b=c[(d&p)>>2]|0;c[(d&p)>>2]=b+1;b=(c[(d&p)+4>>2]|0)+(b*20|0)|0;c[(b&p)>>2]=0;c[(b&p)+4>>2]=0;c[(b&p)+8>>2]=0;c[(b&p)+12>>2]=0;c[(b&p)+16>>2]=0;c[(b&p)>>2]=e}else if((f|0)==8){Gk(g,e);Nk(g,d);d=0}return d|0}function mr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;do if(d){j=(c[(d&p)>>2]|0)+-1|0;g=c[(d&p)+4>>2]|0;h=c[(e&p)>>2]|0;d=c[(e&p)+4>>2]|0;if((h|0)!=0?(e=c[(b&p)>>2]|0,i=jw(d|0,0,1,0)|0,i=mh(e,i,G)|0,(i|0)!=0):0){kw(i|0,h|0,d|0)|0;a[(i+d&n)>>0]=0;c[(g+(j*20|0)&p)+4>>2]=i;if(!f)break;lo(i);break}c[(g+(j*20|0)&p)+4>>2]=0}while(0);return}function nr(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))fa();m=t;c[(m&p)>>2]=0;k=(f|0)!=0;do if(k){if(((e|0)==132?(h=c[(f&p)>>2]|0,(h|0)!=0):0)?(Dn(h,m)|0)!=0:0){r=0;break}r=(c[(f&p)+4>>2]|0)+1|0}else r=0;while(0);l=r+48|0;q=mh(d,l,0)|0;if(q){fw(q|0,0,l|0)|0;a[(q&n)>>0]=e;b[(q&o)+34>>1]=-1;do if(k){if(!r){g=q+4|0;c[(g&p)>>2]=c[(g&p)>>2]|1024;c[(q&p)+8>>2]=c[(m&p)>>2];break}h=q+48|0;l=q+8|0;c[(l&p)>>2]=h;k=f+4|0;d=c[(k&p)>>2]|0;if(!d)h=48;else{kw(h|0,c[(f&p)>>2]|0,d|0)|0;h=(c[(k&p)>>2]|0)+48|0}a[(q+h&n)>>0]=0;if(((g|0)!=0&(r|0)>2?(g=a[(c[(f&p)>>2]&n)>>0]|0,s=g<<24>>24==34,g<<24>>24==34|g<<24>>24==39|g<<24>>24==91|g<<24>>24==96):0)?(lo(c[(l&p)>>2]|0),s):0){g=q+4|0;c[(g&p)>>2]=c[(g&p)>>2]|64}}while(0);c[(q&p)+24>>2]=1}i=t;return q|0}function or(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;do if((d|0)!=0?(f=c[(d&p)>>2]|0,(f|0)>0):0){f=f+-1|0;if((c[(e&p)+4>>2]|0)==1?(c[(e&p)>>2]|0)==0:0){f=d+(f*72|0)+45|0;a[(f&n)>>0]=a[(f&n)>>0]|1;break}c[(d+(f*72|0)&p)+72>>2]=Wq(c[(b&p)>>2]|0,e)|0}while(0);return}function pr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;if(!d){d=mh(b,80,0)|0;if(!d)d=0;else{h=d+0|0;g=h+80|0;do{a[(h&n)>>0]=0;h=h+1|0}while((h|0)<(g|0));c[(d&p)+4>>2]=1;h=4}}else h=4;do if((h|0)==4){d=Fs(b,d,1,c[(d&p)>>2]|0)|0;if(a[(b&n)+65>>0]|0){Do(b,d);d=0;break}h=(c[(d&p)>>2]|0)+-1|0;if(!f)g=0;else g=(c[(f&p)>>2]|0)==0?0:f;f=(g|0)==0;c[(d+(h*72|0)&p)+16>>2]=Wq(b,f?e:g)|0;c[(d+(h*72|0)&p)+12>>2]=Wq(b,f?0:e)|0}while(0);return d|0}function qr(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0;s=i;i=i+32|0;if((i|0)>=(j|0))fa();q=s;m=s+16|0;c[(m&p)>>2]=b;c[(m&p)+4>>2]=e;c[(m&p)+8>>2]=f;l=b;o=1;g=0;a:while(1){if(!l)break;k=c[(l&p)+4>>2]|0;h=0;while(1){if((k|0)==(d[((h*3|0)&n)+34625>>0]|0|0)?(Fc(c[(l&p)>>2]|0,34584+(d[((h*3|0)&n)+34624>>0]|0)|0,k)|0)==0:0)break;h=h+1|0;if((h|0)>=7){r=10;break a}}g=d[((h*3|0)&n)+34626>>0]|0|g;if((h|0)>6){r=10;break}if((o|0)>=3)break;l=c[(m+(o<<2)&p)>>2]|0;o=o+1|0}if((r|0)==10)g=g|64;if((g&33|0)!=33&(g&64|0)==0){if(!((g&32|0)==0|(g&24|0)==8)){th(a,34696,q);g=1}}else{c[(q&p)>>2]=b;c[(q&p)+4>>2]=e;c[(q&p)+8>>2]=(f|0)==0?20377|0:20376;c[(q&p)+12>>2]=f;th(a,34648,q);g=1}i=s;return g|0}function rr(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=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,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;i=i+48|0;if((i|0)>=(j|0))fa();Q=T+36|0;R=T+32|0;r=T;c[(Q&p)>>2]=0;c[(R&p)>>2]=0;S=c[(e&p)>>2]|0;if(((((c[(e&p)+64>>2]|0)==0?(a[(S&n)+65>>0]|0)==0:0)?(H=Jr(e,f)|0,(H|0)!=0):0)?(G=jt(e,H,109,0,0)|0,P=(c[(H&p)+12>>2]|0)!=0,(hr(e,H)|0)==0):0)?(t=(G|0)!=0,(kt(e,H,t&1)|0)==0):0){l=c[(H&p)+68>>2]|0;a:do if(l){k=c[(S&p)+20>>2]|0;if((k|0)>0){h=c[(S&p)+16>>2]|0;q=0;while(1){m=q+1|0;if((c[(h+(q<<4)&p)+12>>2]|0)==(l|0)){m=q;break a}if((m|0)<(k|0))q=m;else break}}else m=0}else m=-1e6;while(0);h=Sq(e,9,c[(H&p)>>2]|0,0,c[((c[(S&p)+16>>2]|0)+(m<<4)&p)>>2]|0)|0;if((h|0)!=1){s=e+68|0;C=c[(s&p)>>2]|0;u=C+1|0;c[(s&p)>>2]=u;c[(f&p)+48>>2]=C;I=H+8|0;l=c[(I&p)>>2]|0;if(!l)q=0;else{k=u;q=0;do{k=k+1|0;c[(s&p)>>2]=k;q=q+1|0;l=c[(l&p)+20>>2]|0}while((l|0)!=0)}if(P){N=e+492|0;O=c[(N&p)>>2]|0;c[(N&p)>>2]=c[(H&p)>>2];N=e}else{N=0;O=0}L=Oq(e)|0;b:do if(L){M=e+18|0;if(!(a[(M&n)>>0]|0)){E=L+88|0;b[(E&o)>>1]=b[(E&o)>>1]|4}D=e+408|0;E=c[(D&p)>>2]|0;E=(E|0)==0?e:E;Ar(e,m);B=E+328|0;c[(B&p)>>2]=c[(B&p)>>2]|1<>0]=d[(E&n)>>0]|1;if(P){lt(e,H,g,C);c[(R&p)>>2]=C;c[(Q&p)>>2]=C};c[(r&p)>>2]=0;c[(r&p)+4>>2]=0;c[(r&p)+8>>2]=0;c[(r&p)+12>>2]=0;c[(r&p)+16>>2]=0;c[(r&p)+20>>2]=0;c[(r&p)+24>>2]=0;c[(r&p)+28>>2]=0;c[(r&p)>>2]=e;c[(r&p)+4>>2]=f;if(!(ls(r,g)|0)){J=S+24|0;if(!(c[(J&p)>>2]&128))K=-1;else{E=e+72|0;K=(c[(E&p)>>2]|0)+1|0;c[(E&p)>>2]=K;wh(L,25,0,K,0)|0}E=H+44|0;do if((!((g|0)!=0|(h|0)!=0|t)?(a[(E&n)>>0]&16)==0:0)?(mt(e,H,0,0)|0)==0:0){l=H+32|0;gs(e,m,c[(l&p)>>2]|0,1,c[(H&p)>>2]|0);if(!(a[(E&n)>>0]&32)){H=c[(H&p)>>2]|0;xh(L,wh(L,118,c[(l&p)>>2]|0,m,K)|0,H,-2)}h=c[(I&p)>>2]|0;if(!h){h=0;break}do{wh(L,118,c[(h&p)+40>>2]|0,m,0)|0;h=c[(h&p)+20>>2]|0}while((h|0)!=0);h=0}else F=31;while(0);do if((F|0)==31){if(!(a[(E&n)>>0]&32)){v=e+72|0;z=(c[(v&p)>>2]|0)+1|0;c[(v&p)>>2]=z;wh(L,28,0,z,0)|0;v=0;A=0;h=0;x=1;m=0}else{m=c[(I&p)>>2]|0;c:do if(!m)m=0;else while(1){if((a[(m&n)+51>>0]&3)==2)break c;m=c[(m&p)+20>>2]|0;if(!m){m=0;break}}while(0);x=b[(m&o)+46>>1]|0;A=e+72|0;h=c[(A&p)>>2]|0;v=x<<16>>16;c[(A&p)>>2]=h+v;A=c[(s&p)>>2]|0;c[(s&p)>>2]=A+1;v=wh(L,57,A,v,0)|0;z=c[(e&p)+8>>2]|0;xh(z,-1,hs(e,m)|0,-6);h=h+1|0;z=0}w=Vs(e,f,g,0,0,12,u)|0;if(!w){h=0;break b}u=w+60|0;t=c[(u&p)>>2]|0;u=c[(u&p)+4>>2]|0;y=a[(w&n)+38>>0]|0;if(c[(J&p)>>2]&128)wh(L,37,K,1,0)|0;B=(m|0)!=0;do if(B){if(x<<16>>16<=0){k=h;break}r=m+4|0;l=x<<16>>16;s=0;do{nt(L,H,C,b[((c[(r&p)>>2]|0)+(s<<1)&o)>>1]|0,s+h|0);s=s+1|0}while((s|0)!=(l|0));k=h}else{l=e+72|0;k=ct(e,H,-1,C,(c[(l&p)>>2]|0)+1|0,0)|0;if((k|0)<=(c[(l&p)>>2]|0))break;c[(l&p)>>2]=k}while(0);r=y<<24>>24!=0;do if(!r)if(B){l=e+72|0;k=(c[(l&p)>>2]|0)+1|0;c[(l&p)>>2]=k;l=x<<16>>16;s=ot(L,m)|0;xh(L,wh(L,49,h,l,k)|0,s,l);wh(L,110,A,k,0)|0;h=0;l=0;s=0;F=59;break}else{wh(L,128,z,k,0)|0;Xs(w);h=0;u=0;m=1;break}else{h=q+2|0;h=mh(S,h,((h|0)<0)<<31>>31)|0;if(!h){Xs(w);h=0;break b}F=q+1|0;fw(h|0,1,F|0)|0;a[(h+F&n)>>0]=0;if((t|0)>-1)a[(h+(t-C)&n)>>0]=0;if((u|0)>-1)a[(h+(u-C)&n)>>0]=0;if(v)zh(L,v);l=wh(L,16,0,0,0)|0;s=x;F=59}while(0);do if((F|0)==59){Xs(w);if(!r){u=0;m=s;break}m=xs(L)|0;wh(L,16,0,m,0)|0;q=c[(L&p)+32>>2]|0;if(q>>>0>l>>>0)c[((c[(L&p)+4>>2]|0)+(l*20|0)&p)+8>>2]=q;c[((c[(L&p)+24>>2]|0)&p)+88>>2]=q+-1;u=m;m=s}while(0);if(!P)pt(e,H,55,C,h,Q,R)|0;do if(!r)if(B){l=wh(L,108,A,0,0)|0;wh(L,101,A,k,0)|0;break}else{l=wh(L,129,z,0,k)|0;break}else{q=c[(Q&p)>>2]|0;if(!(a[(h+(q-C)&n)>>0]|0)){l=0;break}xh(L,wh(L,68,q,u,k)|0,m<<16>>16,-14);l=0}while(0);if(!(a[(E&n)>>0]&16))rt(e,H,G,c[(Q&p)>>2]|0,c[(R&p)>>2]|0,k,m,(a[(M&n)>>0]|0)==0&1,10,y);else{q=c[(H&p)+60>>2]|0;d:do if(!q)q=0;else while(1){if((c[(q&p)>>2]|0)==(S|0))break d;q=c[(q&p)+24>>2]|0;if(!q){q=0;break}}while(0);qt(e,H);xh(L,wh(L,15,0,1,k)|0,q,-10);q=c[(L&p)+4>>2]|0;if(q)a[(q+(((c[(L&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=2;H=c[(D&p)>>2]|0;a[(((H|0)==0?e:H)&n)+21>>0]=1}do if(!r)if(B){wh(L,9,A,l+1|0,0)|0;q=c[(L&p)+32>>2]|0;if(q>>>0>l>>>0)c[((c[(L&p)+4>>2]|0)+(l*20|0)&p)+8>>2]=q;c[((c[(L&p)+24>>2]|0)&p)+88>>2]=q+-1;break}else{wh(L,16,0,l,0)|0;q=c[(L&p)+32>>2]|0;if(q>>>0>l>>>0)c[((c[(L&p)+4>>2]|0)+(l*20|0)&p)+8>>2]=q;c[((c[(L&p)+24>>2]|0)&p)+88>>2]=q+-1;break}else{m=c[(L&p)+24>>2]|0;l=~u;do if((u|0)<0){q=c[(m&p)+112>>2]|0;if(!q)break;c[(q+(l<<2)&p)>>2]=c[(L&p)+32>>2]}while(0);c[(m&p)+88>>2]=(c[(L&p)+32>>2]|0)+-1}while(0);if(P)break;if(a[(E&n)>>0]&16)break;if(!B)wh(L,61,c[(Q&p)>>2]|0,0,0)|0;k=c[(I&p)>>2]|0;if(!k)break;else l=0;while(1){wh(L,61,(c[(R&p)>>2]|0)+l|0,0,0)|0;k=c[(k&p)+20>>2]|0;if(!k)break;else l=l+1|0}}while(0);if((a[(M&n)>>0]|0)==0?(c[(e&p)+412>>2]|0)==0:0)st(e);if((c[(J&p)>>2]&128|0)!=0?(a[(M&n)>>0]|0)==0:0){if(c[(e&p)+412>>2]|0)break;wh(L,35,K,1,0)|0;iq(L,1);if(a[((c[(L&p)>>2]|0)&n)+65>>0]|0)break;Xg(c[(L&p)+16>>2]|0,34568,-1,1,0)|0}}else h=0}else h=0;while(0);if(N)c[(N&p)+492>>2]=O}else h=0}else h=0;Do(S,f);Gk(S,g);mg(S,h);i=T;return}function sr(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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,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,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;ma=i;i=i+64|0;if((i|0)>=(j|0))fa();T=ma;Y=ma+32|0;ea=ma+24|0;ha=ma+20|0;la=c[(e&p)>>2]|0;a:do if(((c[(e&p)+64>>2]|0)==0?(a[(la&n)+65>>0]|0)==0:0)?(ka=Jr(e,f)|0,(ka|0)!=0):0){m=c[(e&p)>>2]|0;r=c[(ka&p)+68>>2]|0;b:do if(r){s=c[(m&p)+20>>2]|0;if((s|0)>0){m=c[(m&p)+16>>2]|0;q=0;while(1){l=q+1|0;if((c[(m+(q<<4)&p)+12>>2]|0)==(r|0))break b;if((l|0)<(s|0))q=l;else{q=l;break}}}else q=0}else q=-1e6;while(0);ga=jt(e,ka,110,g,ea)|0;ca=(c[(ka&p)+12>>2]|0)!=0;if((hr(e,ka)|0)==0?(kt(e,ka,c[(ea&p)>>2]|0)|0)==0:0){_=e+68|0;$=c[(_&p)>>2]|0;ia=$+1|0;c[(_&p)>>2]=ia;r=f+48|0;c[(r&p)>>2]=$;K=ka+44|0;u=c[(ka&p)+8>>2]|0;c:do if(!(a[(K&n)>>0]&32)){s=0;ba=16}else{if(!u){w=ka+8|0;s=0;t=$;v=0;break}else s=u;while(1){if((a[(s&n)+51>>0]&3)==2){ba=16;break c}s=c[(s&p)+20>>2]|0;if(!s){s=0;ba=16;break}}}while(0);if((ba|0)==16){w=ka+8|0;if(!u){t=$;v=0}else{l=(s|0)!=0;m=ia;t=$;v=0;do{if((a[(u&n)+51>>0]&3)==2&l){c[(r&p)>>2]=m;t=m}m=m+1|0;c[(_&p)>>2]=m;v=v+1|0;u=c[(u&p)+20>>2]|0}while((u|0)!=0)}}ja=ka+38|0;l=mh(la,v+2+((b[(ja&o)>>1]|0)+v<<2)|0,0)|0;if(l){I=b[(ja&o)>>1]|0;aa=l+(I<<2)|0;da=l+(I+v<<2)|0;Z=v+1|0;fw(da|0,1,Z|0)|0;a[(da+Z&n)>>0]=0;v=b[(ja&o)>>1]|0;if(v<<16>>16>0)fw(l|0,-1,(v<<16>>16>1?v<<16>>16<<2:4)|0)|0;c[(Y&p)>>2]=0;c[(Y&p)+4>>2]=0;c[(Y&p)+8>>2]=0;c[(Y&p)+12>>2]=0;c[(Y&p)+16>>2]=0;c[(Y&p)+20>>2]=0;c[(Y&p)+24>>2]=0;c[(Y&p)+28>>2]=0;c[(Y&p)>>2]=e;c[(Y&p)+4>>2]=f;d:do if((c[(g&p)>>2]|0)>0){E=g+4|0;D=ka+4|0;C=la+16|0;F=(s|0)==0;G=ka+36|0;y=0;x=0;H=0;m=0;while(1){if(ls(Y,c[((c[(E&p)>>2]|0)+(H*20|0)&p)>>2]|0)|0)break a;A=b[(ja&o)>>1]|0;e:do if(A<<16>>16>0){v=c[(D&p)>>2]|0;B=c[(E&p)>>2]|0;r=c[(B+(H*20|0)&p)+4>>2]|0;u=0;while(1){z=u+1|0;if(!(dd(c[(v+(u*24|0)&p)>>2]|0,r)|0))break;if((z|0)<(A<<16>>16|0))u=z;else{u=z;r=m;break e}}if((u|0)!=(b[(G&o)>>1]|0)){if(!F)y=(a[(v+(u*24|0)&n)+23>>0]&1)==0?y:1}else{x=1;m=c[(B+(H*20|0)&p)>>2]|0}c[(l+(u<<2)&p)>>2]=H;r=m}else{u=0;r=m}while(0);if((u|0)<(A<<16>>16|0)){m=c[(ka&p)>>2]|0;if((u|0)<0)v=12944;else v=c[((c[(D&p)>>2]|0)+(u*24|0)&p)>>2]|0}else{r=c[(E&p)>>2]|0;m=c[(r+(H*20|0)&p)+4>>2]|0;if(!F)break;if(!($h(m)|0))break;m=c[(ka&p)>>2]|0;v=12944;x=1;u=-1;r=c[(r+(H*20|0)&p)>>2]|0}m=Sq(e,23,m,v,c[((c[(C&p)>>2]|0)+(q<<4)&p)>>2]|0)|0;if((m|0)==2)c[(l+(u<<2)&p)>>2]=-1;else if((m|0)==1)break a;H=H+1|0;if((H|0)>=(c[(g&p)>>2]|0)){R=r;break d}else m=r}c[(T&p)>>2]=m;th(e,34496,T);a[(e&n)+17>>0]=1;break a}else{y=0;x=0;R=0}while(0);X=(y&255)+(x&255)|0;U=X&255;C=f+64|0;c[(C&p)>>2]=0;c[(C&p)+4>>2]=0;X=X&255;C=mt(e,ka,l,X)|0;m=c[(w&p)>>2]|0;if(m){z=(C|X|0)==0;A=e+72|0;B=0;while(1){f:do if(z?!((c[(m&p)+36>>2]|0)!=0|(m|0)==(s|0)):0){r=b[(m&o)+46>>1]|0;if(!(r<<16>>16))ba=56;else{u=c[(m&p)+4>>2]|0;v=0;while(1){if((c[(l+(b[(u+(v<<1)&o)>>1]<<2)&p)>>2]|0)>-1){ba=54;break f}v=v+1|0;if((v|0)>=(r&65535|0)){ba=56;break}}}}else ba=54;while(0);if((ba|0)==54){ba=0;r=(c[(A&p)>>2]|0)+1|0;c[(A&p)>>2]=r;if(!r)ba=56;else u=B+1|0}if((ba|0)==56){ba=0;u=B+1|0;a[(da+u&n)>>0]=0;r=0}c[(l+(B+I<<2)&p)>>2]=r;m=c[(m&p)+20>>2]|0;if(!m)break;else B=u}}V=Oq(e)|0;if(V){W=e+18|0;if(!(a[(W&n)>>0]|0)){S=V+88|0;b[(S&o)>>1]=b[(S&o)>>1]|4}H=e+408|0;S=c[(H&p)>>2]|0;S=(S|0)==0?e:S;Ar(e,q);Q=S+328|0;c[(Q&p)>>2]=c[(Q&p)>>2]|1<>0]=d[(S&n)>>0]|1;if(a[(K&n)>>0]&16){x=c[(e&p)+8>>2]|0;y=c[(e&p)>>2]|0;m=c[(ka&p)+60>>2]|0;g:do if(!m)m=0;else while(1){if((c[(m&p)>>2]|0)==(y|0))break g;m=c[(m&p)+24>>2]|0;if(!m){m=0;break}}while(0);q=lr(e,0,tt(y,27,34536)|0)|0;w=(R|0)!=0;if(w)q=lr(e,q,Mr(y,R,0,0)|0)|0;if((b[(ja&o)>>1]|0)>0){r=g+4|0;t=ka+4|0;u=0;do{s=c[(l+(u<<2)&p)>>2]|0;if((s|0)>-1)s=Mr(y,c[((c[(r&p)>>2]|0)+(s*20|0)&p)>>2]|0,0,0)|0;else s=tt(y,27,c[((c[(t&p)>>2]|0)+(u*24|0)&p)>>2]|0)|0;q=lr(e,q,s)|0;u=u+1|0}while((u|0)<(b[(ja&o)>>1]|0))}t=kr(e,q,f,h,0,0,0,0,0,0)|0;v=c[(_&p)>>2]|0;c[(_&p)>>2]=v+1;f=w&1;wh(x,57,v,(b[(ja&o)>>1]|0)+(w?2:1)|0,0)|0;u=x+4|0;h=c[(u&p)>>2]|0;if(h)a[(h+(((c[(x&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=8;a[(T&n)>>0]=14;c[(T&p)+4>>2]=v;a[(T&n)+1>>0]=0;c[(T&p)+8>>2]=0;c[(T&p)+12>>2]=0;ir(e,t,T)|0;h=e+72|0;s=c[(h&p)>>2]|0;q=s+1|0;da=s+2|0;c[(h&p)>>2]=(b[(ja&o)>>1]|0)+da;h=wh(x,108,v,0,0)|0;wh(x,47,v,0,q)|0;wh(x,47,v,f,da)|0;if((b[(ja&o)>>1]|0)>0){s=s+3|0;r=0;do{da=r;r=r+1|0;wh(x,47,v,r+f|0,s+da|0)|0}while((r|0)<(b[(ja&o)>>1]|0))}qt(e,ka);xh(x,wh(x,15,0,(b[(ja&o)>>1]|0)+2|0,q)|0,m,-10);m=c[(u&p)>>2]|0;if(!m)m=x+32|0;else{da=x+32|0;a[(m+(((c[(da&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=(k|0)==10?2:k&255;m=da}da=c[(H&p)>>2]|0;a[(((da|0)==0?e:da)&n)+21>>0]=1;wh(x,9,v,h+1|0,0)|0;m=c[(m&p)>>2]|0;if(m>>>0>h>>>0)c[((c[(u&p)>>2]|0)+(h*20|0)&p)+8>>2]=m;c[((c[(x&p)+24>>2]|0)&p)+88>>2]=m+-1;wh(x,61,v,0,0)|0;Mk(y,t,1);h=0;f=0;break}H=e+72|0;m=c[(H&p)>>2]|0;G=m+1|0;Q=m+2|0;c[(H&p)>>2]=Q;I=y<<24>>24!=0;J=(ga|0)!=0;P=(C|0)!=0;if(I|J|P){q=(b[(ja&o)>>1]|0)+Q|0;c[(H&p)>>2]=q;L=m+3|0}else{q=Q;L=0}N=(X|0)!=0;if(N|J|P){O=q+1|0;c[(H&p)>>2]=O;q=O}else O=Q;M=q+1|0;c[(H&p)>>2]=(b[(ja&o)>>1]|0)+q;if(ca){S=e+492|0;T=c[(S&p)>>2]|0;c[(S&p)>>2]=c[(ka&p)>>2];lt(e,ka,h,t);S=e}else{S=0;T=0}do if(!(ls(Y,h)|0)){if(!(a[(K&n)>>0]&32)){wh(V,28,0,G,Q)|0;y=Vs(e,f,h,0,0,4,ia)|0;if(!y)break;A=y+60|0;m=c[(A&p)>>2]|0;A=c[(A&p)+4>>2]|0;B=a[(y&n)+38>>0]|0;wh(V,103,t,Q,0)|0;if(!(B<<24>>24))wh(V,128,G,Q,0)|0;Xs(y);D=0;C=0;z=B&255;E=0}else{B=b[(s&o)+46>>1]|0;y=c[(H&p)>>2]|0;u=y+1|0;C=B<<16>>16;y=C+1+y|0;c[(H&p)>>2]=y;D=c[(_&p)>>2]|0;c[(_&p)>>2]=D+1;wh(V,28,0,u,0)|0;q=wh(V,57,D,C,0)|0;v=c[(e&p)+8>>2]|0;xh(v,-1,hs(e,s)|0,-6);v=Vs(e,f,h,0,0,4,ia)|0;if(!v)break;A=v+60|0;m=c[(A&p)>>2]|0;A=c[(A&p)+4>>2]|0;r=a[(v&n)+38>>0]|0;E=r&255;if(B<<16>>16>0){B=s+4|0;z=0;do{nt(V,ka,t,b[((c[(B&p)>>2]|0)+(z<<1)&o)>>1]|0,z+u|0);z=z+1|0}while((z|0)!=(C|0))}if(!(r<<24>>24)){B=ot(V,s)|0;xh(V,wh(V,49,u,C,y)|0,B,C);wh(V,110,D,y,0)|0;B=0}else{zh(V,q);B=C;y=u}Xs(v);C=B;z=E;E=y}K=la+24|0;do if(!(c[(K&p)>>2]&128))v=0;else{if(c[(e&p)+412>>2]|0){v=0;break}v=(c[(H&p)>>2]|0)+1|0;c[(H&p)>>2]=v;wh(V,25,0,v,0)|0}while(0);u=xs(V)|0;if(!ca){h:do if((k|0)==5)fw(da|0,1,Z|0)|0;else{B=c[(w&p)>>2]|0;if(!B)break;while(1){if((a[(B&n)+50>>0]|0)==5)break;B=c[(B&p)+20>>2]|0;if(!B)break h}fw(da|0,1,Z|0)|0}while(0);do if(z){if((m|0)>-1)a[(da+(m-$)&n)>>0]=0;if((A|0)<=-1)break;a[(da+(A-$)&n)>>0]=0}while(0);pt(e,ka,55,$,da,0,0)|0}H=(z|0)!=0;do if(!H)if(!s){G=wh(V,129,G,u,Q)|0;wh(V,70,t,G,Q)|0;F=0;break}else{G=xs(V)|0;wh(V,108,D,u,0)|0;F=wh(V,101,D,E,0)|0;xh(V,wh(V,68,t,G,E)|0,0,-14);break}else{if(!((a[(da+(t-$)&n)>>0]|0)==0|ca))xh(V,wh(V,68,t,u,E)|0,C,-14);wh(V,76,(s|0)!=0?E:Q,u,0)|0;F=0;G=u}while(0);x=x<<24>>24==0;if(!x){Rq(e,R,O);wh(V,38,O,0,0)|0}do if(I|P|J){if(P)y=ut(e,ka)|0;else y=0;B=vt(e,ga,g,0,3,ka,k)|0|y;if((b[(ja&o)>>1]|0)>0){A=(B|0)==-1;z=ka+4|0;y=0;do{do if(A)ba=138;else{if((y|0)<32?(1<>2]|0)+(y*24|0)&n)+23>>0]&1){ba=138;break}wh(V,28,0,y+L|0,0)|0}while(0);if((ba|0)==138){ba=0;nt(V,ka,t,y,y+L|0)}y=y+1|0}while((y|0)<(b[(ja&o)>>1]|0))}if(!(x&(s|0)==0))break;wh(V,33,Q,O,0)|0}while(0);y=vt(e,ga,g,1,1,ka,k)|0;if((b[(ja&o)>>1]|0)>0){x=ka+36|0;m=g+4|0;r=0;do{i:do if((r|0)==(b[(x&o)>>1]|0))wh(V,28,0,r+M|0,0)|0;else{q=c[(l+(r<<2)&p)>>2]|0;if((q|0)>-1){Rq(e,c[((c[(m&p)>>2]|0)+(q*20|0)&p)>>2]|0,r+M|0);break}do if(!((c[(ea&p)>>2]&1|0)==0|(r|0)>31)){if(1<>1]|0))}do if(c[(ea&p)>>2]&1){wt(V,ka,M);xt(e,ga,110,g,1,ka,Q,k,G);if(!s)wh(V,70,t,G,Q)|0;else xh(V,wh(V,68,t,G,E)|0,C,-14);m=b[(ja&o)>>1]|0;if(m<<16>>16<=0)break;x=ka+36|0;y=0;do{do if((c[(l+(y<<2)&p)>>2]|0)<0){if((y|0)==(b[(x&o)>>1]|0))break;nt(V,ka,t,y,y+M|0);m=b[(ja&o)>>1]|0}while(0);y=y+1|0}while((y|0)<(m<<16>>16|0))}while(0);do if(!ca){c[(ha&p)>>2]=0;yt(e,ka,aa,t,ia,O,Q,U,k&255,G,ha);if(P)zt(e,ka,Q,0,l,X);m=(c[(ha&p)>>2]|X|0)==0;do if(!m)if(!s){q=wh(V,70,t,0,Q)|0;break}else{q=wh(V,68,t,0,E)|0;xh(V,q,C,-14);break}else q=0;while(0);At(e,ka,t,ia,aa);if(P|(N|(s|0)!=0))wh(V,95,t,0,0)|0;if(!m){m=c[(V&p)+32>>2]|0;if(m>>>0>q>>>0)c[((c[(V&p)+4>>2]|0)+(q*20|0)&p)+8>>2]=m;c[((c[(V&p)+24>>2]|0)&p)+88>>2]=m+-1}if(P){zt(e,ka,0,O,l,X);Bt(e,ka,t,ia,O,aa,1,0,0);Ct(e,ka,g,Q,l,X);break}else{Bt(e,ka,t,ia,O,aa,1,0,0);break}}while(0);do if(c[(K&p)>>2]&128){if(c[(e&p)+412>>2]|0)break;wh(V,37,v,1,0)|0}while(0);xt(e,ga,110,g,2,ka,Q,k,G);do if(!H){if(!s){wh(V,16,0,G,0)|0;break}r=c[(V&p)+24>>2]|0;q=~G;do if((G|0)<0){s=c[(r&p)+112>>2]|0;if(!s)break;c[(s+(q<<2)&p)>>2]=c[(V&p)+32>>2]}while(0);c[(r&p)+88>>2]=(c[(V&p)+32>>2]|0)+-1;wh(V,9,D,F,0)|0}while(0);r=c[(V&p)+24>>2]|0;q=~u;do if((u|0)<0){s=c[(r&p)+112>>2]|0;if(!s)break;c[(s+(q<<2)&p)>>2]=c[(V&p)+32>>2]}while(0);c[(r&p)+88>>2]=(c[(V&p)+32>>2]|0)+-1;q=c[(w&p)>>2]|0;if(q){r=0;do{s=r;r=r+1|0;if(a[(da+r&n)>>0]|0)wh(V,61,s+ia|0,0,0)|0;q=c[(q&p)+20>>2]|0}while((q|0)!=0)}if((t|0)<(ia|0))wh(V,61,t,0,0)|0;do if(!(a[(W&n)>>0]|0)){if(c[(e&p)+412>>2]|0)break;st(e)}while(0);if(!(c[(K&p)>>2]&128))break;if(c[(e&p)+412>>2]|0)break;if(a[(W&n)>>0]|0)break;wh(V,35,v,1,0)|0;iq(V,1);if(a[((c[(V&p)>>2]|0)&n)+65>>0]|0)break;Xg(c[(V&p)+16>>2]|0,34520,-1,1,0)|0}while(0);if(S)c[(S&p)+492>>2]=T}}}else l=0}else l=0;while(0);mg(la,l);Do(la,f);Nk(la,g);Gk(la,h);i=ma;return}function tr(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=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,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,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;oa=i;i=i+96|0;if((i|0)>=(j|0))fa();ca=oa;ja=oa+92|0;la=oa+88|0;L=oa+68|0;Y=oa+64|0;O=oa+32|0;ba=oa+28|0;c[(ja&p)>>2]=0;c[(la&p)>>2]=0;na=c[(e&p)>>2]|0;c[(L&p)>>2]=0;c[(L&p)+4>>2]=0;c[(L&p)+8>>2]=0;c[(L&p)+12>>2]=0;c[(L&p)+16>>2]=0;a:do if((c[(e&p)+64>>2]|0)==0?(N=na+65|0,(a[(N&n)>>0]|0)==0):0){if(g)if((b[(g&o)+6>>1]&128)!=0?(c[(g&p)+52>>2]|0)==0:0){l=c[(g&p)>>2]|0;c[(g&p)>>2]=0;Mk(na,g,1);g=0}else l=0;else{g=0;l=0}if((c[(f&p)+16>>2]|0)!=0?(ka=Jr(e,f)|0,(ka|0)!=0):0){u=c[(ka&p)+68>>2]|0;b:do if(u){t=c[(na&p)+20>>2]|0;if((t|0)>0){s=c[(na&p)+16>>2]|0;q=0;while(1){r=q+1|0;if((c[(s+(q<<4)&p)+12>>2]|0)==(u|0)){r=q;break b}if((r|0)<(t|0))q=r;else break}}else r=0}else r=-1e6;while(0);if((((Sq(e,18,c[(ka&p)>>2]|0,0,c[((c[(na&p)+16>>2]|0)+(r<<4)&p)>>2]|0)|0)==0?(ga=ka+44|0,Z=(d[(ga&n)>>0]|0)>>>5&1,ea=jt(e,ka,108,0,Y)|0,ha=(c[(ka&p)+12>>2]|0)!=0,(hr(e,ka)|0)==0):0)?(kt(e,ka,c[(Y&p)>>2]|0)|0)==0:0)?(ma=Oq(e)|0,(ma|0)!=0):0){ia=e+18|0;if(!(a[(ia&n)>>0]|0)){da=ma+88|0;b[(da&o)>>1]=b[(da&o)>>1]|4}da=(g|0)!=0;aa=e+408|0;$=c[(aa&p)>>2]|0;$=($|0)==0?e:$;Ar(e,r);X=$+328|0;c[(X&p)>>2]=c[(X&p)>>2]|1<>0]=d[($&n)>>0]|(da|(ea|0)!=0)&1;$=(h|0)==0;c:do if((((!((g|0)==0|$^1)?(c[(e&p)+532>>2]|0)==0:0)?(c[(g&p)+68>>2]|0)==0:0)?(As(e,ka)|0)==0:0)?(a[(ga&n)>>0]&16)==0:0){if((k|0)==10){if((b[(ka&o)+36>>1]|0)>-1)u=d[(ka&n)+45>>0]|0;else u=10;y=(u|0)==10?2:u}else y=k;t=c[(g&p)+32>>2]|0;if((c[(t&p)>>2]|0)==1){if(c[(t&p)+28>>2]|0){_=117;break}if(c[(g&p)+36>>2]|0){_=117;break}if(c[(g&p)+48>>2]|0){_=117;break}if(c[(g&p)+40>>2]|0){_=117;break}if(c[(g&p)+60>>2]|0){_=117;break}if(c[(g&p)+52>>2]|0){_=117;break}if(b[(g&o)+6>>1]&1){_=117;break}u=c[(g&p)>>2]|0;if((c[(u&p)>>2]|0)!=1){_=117;break}if((a[(c[(c[(u&p)+4>>2]&p)>>2]&n)>>0]|0)!=116){_=117;break}x=Ur(e,0,t+8|0)|0;if((x|0)==0|(x|0)==(ka|0)){_=117;break}B=x+44|0;X=d[(B&n)>>0]|0;if(!((X&16|0)==0?(((d[(ga&n)>>0]|0)>>>5&1^1)&255|0)==(X>>>5&1^1|0):0)){_=117;break}if(c[(x&p)+12>>2]|0){_=117;break}v=b[(ka&o)+38>>1]|0;if(v<<16>>16!=(b[(x&o)+38>>1]|0)){_=117;break}A=ka+36|0;if((b[(A&o)>>1]|0)!=(b[(x&o)+36>>1]|0)){_=117;break}if(v<<16>>16>0){q=c[(ka&p)+4>>2]|0;m=c[(x&p)+4>>2]|0;w=0;do{if((a[(q+(w*24|0)&n)+21>>0]|0)!=(a[(m+(w*24|0)&n)+21>>0]|0)){_=117;break c}u=c[(q+(w*24|0)&p)+16>>2]|0;t=c[(m+(w*24|0)&p)+16>>2]|0;s=(t|0)==0;if(!u){if(!s){_=117;break c}}else{if(s){_=117;break c}if(dd(u,t)|0){_=117;break c}}if((a[(q+(w*24|0)&n)+20>>0]|0)!=0?(a[(m+(w*24|0)&n)+20>>0]|0)==0:0){_=117;break c}do if((w|0)>0){u=c[(q+(w*24|0)&p)+8>>2]|0;t=(u|0)==0;s=c[(m+(w*24|0)&p)+8>>2]|0;if(t^(s|0)==0){_=117;break c}if(t)break;if(_v(u,s)|0){_=117;break c}}while(0);w=w+1|0}while((w|0)<(v<<16>>16|0))}E=ka+8|0;u=c[(E&p)>>2]|0;if(!u)t=0;else{v=c[(x&p)+8>>2]|0;if(!v){_=117;break}else t=0;do{t=(a[(u&n)+50>>0]|0)==0?t:1;s=v;while(1){if(Dt(u,s)|0)break;s=c[(s&p)+20>>2]|0;if(!s){_=117;break c}}if(!s){_=117;break c}u=c[(u&p)+20>>2]|0}while((u|0)!=0)}u=c[(ka&p)+24>>2]|0;if((u|0)!=0?(Ts(c[(x&p)+24>>2]|0,u,-1)|0)!=0:0){_=117;break}s=c[(e&p)>>2]|0;u=c[(s&p)+24>>2]|0;if(!(u&524288)){if(u&128){_=117;break}}else if(!((c[(ka&p)+16>>2]|0)==0&(u&128|0)==0)){_=117;break}m=c[(x&p)+68>>2]|0;d:do if(!m)s=-1e6;else{v=c[(s&p)+20>>2]|0;if((v|0)<=0){s=0;break}u=c[(s&p)+16>>2]|0;q=0;while(1){s=q+1|0;if((c[(u+(q<<4)&p)+12>>2]|0)==(m|0)){s=q;break d}if((s|0)<(v|0))q=s;else break}}while(0);D=Oq(e)|0;Ar(e,s);z=e+68|0;F=c[(z&p)>>2]|0;C=F+1|0;c[(z&p)>>2]=F+2;z=Et(e,r,ka)|0;v=e+19|0;q=a[(v&n)>>0]|0;do if(!(q<<24>>24)){_=e+72|0;u=(c[(_&p)>>2]|0)+1|0;c[(_&p)>>2]=u;_=78}else{X=q+-1<<24>>24;a[(v&n)>>0]=X;u=c[(e+((X&255)<<2)&p)+24>>2]|0;if(!(X<<24>>24)){_=78;break}G=q+-2<<24>>24;a[(v&n)>>0]=G;H=u;G=c[(e+((G&255)<<2)&p)+24>>2]|0}while(0);if((_|0)==78){H=e+72|0;G=(c[(H&p)>>2]|0)+1|0;c[(H&p)>>2]=G;H=u}Qq(e,C,r,ka,55);if((b[(A&o)>>1]|0)<0)if((c[(E&p)>>2]|0)!=0|(t|0)!=0|(y+-1|0)>>>0>1)_=83;else I=0;else if((t|0)!=0|(y+-1|0)>>>0>1)_=83;else I=0;if((_|0)==83){w=wh(D,108,C,0,0)|0;v=wh(D,16,0,0,0)|0;u=c[(D&p)+32>>2]|0;if(u>>>0>w>>>0)c[((c[(D&p)+4>>2]|0)+(w*20|0)&p)+8>>2]=u;c[((c[(D&p)+24>>2]|0)&p)+88>>2]=u+-1;I=v}if(!(a[(B&n)>>0]&32)){Qq(e,F,s,x,54);t=wh(D,108,F,0,0)|0;do if((b[(A&o)>>1]|0)<=-1)if(!(c[(E&p)>>2]|0)){u=wh(D,74,C,G,0)|0;break}else{u=wh(D,103,F,G,0)|0;break}else{u=wh(D,103,F,G,0)|0;w=wh(D,70,C,0,G)|0;Ft(e,y,ka);v=c[(D&p)+32>>2]|0;if(v>>>0>w>>>0)c[((c[(D&p)+4>>2]|0)+(w*20|0)&p)+8>>2]=v;c[((c[(D&p)+24>>2]|0)&p)+88>>2]=v+-1;if((z|0)<=0)break;wh(c[(e&p)+8>>2]|0,136,z,G,0)|0}while(0);wh(D,102,F,H,0)|0;wh(D,75,C,H,G)|0;v=c[(D&p)+4>>2]|0;if(v)a[(v+(((c[(D&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=11;xh(D,-1,c[(ka&p)>>2]|0,0);wh(D,9,F,u,0)|0;wh(D,61,F,0,0)|0;wh(D,61,C,0,0)|0}else{gs(e,r,c[(ka&p)+32>>2]|0,1,c[(ka&p)>>2]|0);gs(e,s,c[(x&p)+32>>2]|0,0,c[(x&p)>>2]|0);t=0}w=c[(E&p)>>2]|0;if(w){q=x+8|0;m=e+8|0;x=D+4|0;y=D+32|0;z=D+24|0;u=w;do{w=q;while(1){w=c[(w&p)>>2]|0;if(Dt(u,w)|0)break;w=w+20|0}wh(D,54,F,c[(w&p)+40>>2]|0,s)|0;X=c[(m&p)>>2]|0;xh(X,-1,hs(e,w)|0,-6);wh(D,55,C,c[(u&p)+40>>2]|0,r)|0;w=c[(m&p)>>2]|0;xh(w,-1,hs(e,u)|0,-6);w=c[(x&p)>>2]|0;if(w)a[(w+(((c[(y&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=1;w=wh(D,108,F,0,0)|0;wh(D,101,F,H,0)|0;wh(D,110,C,H,1)|0;wh(D,9,F,w+1|0,0)|0;v=c[(y&p)>>2]|0;if(v>>>0>w>>>0)c[((c[(x&p)>>2]|0)+(w*20|0)&p)+8>>2]=v;c[((c[(z&p)>>2]|0)&p)+88>>2]=v+-1;wh(D,61,F,0,0)|0;wh(D,61,C,0,0)|0;u=c[(u&p)+20>>2]|0}while((u|0)!=0)}if(t){u=c[(D&p)+32>>2]|0;if(u>>>0>t>>>0)c[((c[(D&p)+4>>2]|0)+(t*20|0)&p)+8>>2]=u;c[((c[(D&p)+24>>2]|0)&p)+88>>2]=u+-1}_r(e,G);_r(e,H);if(!I){m=0;q=0;break}wh(D,24,0,0,0)|0;u=c[(D&p)+32>>2]|0;if(u>>>0>I>>>0)c[((c[(D&p)+4>>2]|0)+(I*20|0)&p)+8>>2]=u;c[((c[(D&p)+24>>2]|0)&p)+88>>2]=u+-1;wh(D,61,C,0,0)|0;_=117}else _=117}else _=117;while(0);do if((_|0)==117){S=Et(e,r,ka)|0;R=e+72|0;t=c[(R&p)>>2]|0;W=t+1|0;X=ka+38|0;I=b[(X&o)>>1]|0;H=I<<16>>16;u=W+H|0;c[(R&p)>>2]=u;if(!(a[(ga&n)>>0]&16))V=W;else{u=u+1|0;c[(R&p)>>2]=u;V=t+2|0}T=V+1|0;U=(h|0)!=0;e:do if(U?(P=c[(h&p)+4>>2]|0,Q=(P|0)>0,Q):0){v=c[(h&p)>>2]|0;t=0;do{c[(v+(t<<3)&p)+4>>2]=-1;t=t+1|0}while((t|0)<(P|0));if(Q){D=Z<<24>>24!=0;C=ka+4|0;B=ka+36|0;t=1;A=0;v=-1;while(1){f:do if(I<<16>>16>0){z=c[(h&p)>>2]|0;s=c[(z+(A<<3)&p)>>2]|0;q=c[(C&p)>>2]|0;m=0;while(1){w=m+1|0;if(!(dd(s,c[(q+(m*24|0)&p)>>2]|0)|0)){w=m;break}if((w|0)<(H|0))m=w;else break f}c[(z+(A<<3)&p)+4>>2]=w;t=(A|0)==(w|0)?t:0;v=(w|0)==(b[(B&o)>>1]|0)?A:v}else w=0;while(0);if((w|0)>=(H|0)){m=c[((c[(h&p)>>2]|0)+(A<<3)&p)>>2]|0;if(($h(m)|0)==0|D)break;else{t=0;w=A}}else w=v;A=A+1|0;if((A|0)>=(P|0)){E=w;break e}else v=w}c[(ca&p)>>2]=f;c[(ca&p)+4>>2]=0;c[(ca&p)+8>>2]=m;th(e,33368,ca);a[(e&n)+17>>0]=1;m=0;break a}else{t=1;E=-1}}else{t=1;E=-1}while(0);g:do if(!da){c[(O&p)>>2]=0;c[(O&p)+4>>2]=0;c[(O&p)+8>>2]=0;c[(O&p)+12>>2]=0;c[(O&p)+16>>2]=0;c[(O&p)+20>>2]=0;c[(O&p)+24>>2]=0;c[(O&p)+28>>2]=0;c[(O&p)>>2]=e;if(l){s=c[(l&p)>>2]|0;if((s|0)>0){u=l+4|0;t=0;while(1){if(ls(O,c[((c[(u&p)>>2]|0)+(t*20|0)&p)>>2]|0)|0){g=0;m=0;break a}t=t+1|0;if((t|0)>=(s|0)){u=0;t=-1;r=0;_=169;break}}}else{P=E;O=0;Q=-1;z=0}}else{P=E;s=0;O=0;Q=-1;z=0}}else{u=u+1|0;c[(R&p)>>2]=u;G=ma+32|0;v=c[(G&p)>>2]|0;wh(ma,20,u,0,v+1|0)|0;a[(L&n)>>0]=13;H=L+4|0;c[(H&p)>>2]=u;a[(L&n)+1>>0]=0;F=L+8|0;c[(F&p)>>2]=t<<24>>24!=0?T:0;c[(L&p)+12>>2]=b[(X&o)>>1];Q=ir(e,g,L)|0;F=c[(F&p)>>2]|0;if(Q){m=0;break a}if(a[(N&n)>>0]|0){m=0;break a}wh(ma,21,u,0,0)|0;u=c[(G&p)>>2]|0;if(u>>>0>v>>>0)c[((c[(ma&p)+4>>2]|0)+(v*20|0)&p)+8>>2]=u;I=ma+24|0;c[((c[(I&p)>>2]|0)&p)+88>>2]=u+-1;s=c[(c[(g&p)>>2]&p)>>2]|0;h:do if(!ea){w=Oq(e)|0;t=c[(w&p)+32>>2]|0;i:do if(!(a[(ga&n)>>0]&16))v=0;else{u=c[(e&p)>>2]|0;v=c[(ka&p)+60>>2]|0;if(!v){v=0;break}while(1){if((c[(v&p)>>2]|0)==(u|0))break i;v=c[(v&p)+24>>2]|0;if(!v){v=0;break}}}while(0);if((t|0)<=1){u=F;t=0;r=0;_=169;break g}q=(a[((c[(w&p)>>2]|0)&n)+65>>0]|0)==0;z=w+4|0;y=ka+32|0;x=ka+8|0;m=1;while(1){if(q)w=(c[(z&p)>>2]|0)+(m*20|0)|0;else w=29120;u=a[(w&n)>>0]|0;do if(u<<24>>24==54){if((c[(w&p)+12>>2]|0)!=(r|0))break;u=c[(w&p)+8>>2]|0;if((u|0)==(c[(y&p)>>2]|0))break h;w=c[(x&p)>>2]|0;if(!w)break;do{if((u|0)==(c[(w&p)+40>>2]|0))break h;w=c[(w&p)+20>>2]|0}while((w|0)!=0)}else if(u<<24>>24==-107?(c[(w&p)+16>>2]|0)==(v|0):0)break h;while(0);m=m+1|0;if((m|0)>=(t|0)){u=F;t=0;r=0;_=169;break g}}}while(0);v=e+68|0;w=c[(v&p)>>2]|0;c[(v&p)>>2]=w+1;v=e+19|0;t=a[(v&n)>>0]|0;do if(!(t<<24>>24)){u=(c[(R&p)>>2]|0)+1|0;c[(R&p)>>2]=u;_=159}else{Q=t+-1<<24>>24;a[(v&n)>>0]=Q;u=c[(e+((Q&255)<<2)&p)+24>>2]|0;if(!(Q<<24>>24)){_=159;break}Q=t+-2<<24>>24;a[(v&n)>>0]=Q;v=c[(e+((Q&255)<<2)&p)+24>>2]|0}while(0);if((_|0)==159){v=(c[(R&p)>>2]|0)+1|0;c[(R&p)>>2]=v}wh(ma,57,w,s,0)|0;r=wh(ma,22,c[(H&p)>>2]|0,0,0)|0;wh(ma,49,F,s,u)|0;wh(ma,74,w,v,0)|0;wh(ma,75,w,u,v)|0;wh(ma,16,0,r,0)|0;t=c[(G&p)>>2]|0;if(t>>>0>r>>>0)c[((c[(ma&p)+4>>2]|0)+(r*20|0)&p)+8>>2]=t;c[((c[(I&p)>>2]|0)&p)+88>>2]=t+-1;_r(e,u);_r(e,v);u=F;t=w;r=1;_=169}while(0);if((_|0)==169)if($&(s|0)>0){P=b[(ka&o)+36>>1]|0;O=u;Q=t;z=r}else{P=E;O=u;Q=t;z=r}if((a[(ga&n)>>0]&16)!=0?(M=b[(X&o)>>1]|0,M<<16>>16>0):0){v=c[(ka&p)+4>>2]|0;t=M<<16>>16;r=0;u=0;do{u=((d[(v+(r*24|0)&n)+23>>0]|0)>>>1&1)+u|0;r=r+1|0}while((r|0)<(t|0))}else u=0;do if($&(s|0)!=0){u=(b[(X&o)>>1]|0)-u|0;if((s|0)==(u|0))break;c[(ca&p)>>2]=f;c[(ca&p)+4>>2]=0;c[(ca&p)+8>>2]=u;c[(ca&p)+12>>2]=s;th(e,33400,ca);m=0;break a}while(0);do if(U){u=c[(h&p)+4>>2]|0;if((s|0)==(u|0))break;c[(ca&p)>>2]=s;c[(ca&p)+4>>2]=u;th(e,33456,ca);m=0;break a}while(0);K=na+24|0;if(!(c[(K&p)>>2]&128))q=0;else{q=(c[(R&p)>>2]|0)+1|0;c[(R&p)>>2]=q;wh(ma,25,0,q,0)|0}do if(ha)m=0;else{u=pt(e,ka,55,-1,0,ja,la)|0;m=mh(na,(u<<2)+4|0,0)|0;if(!m)break a;if((u|0)>0)t=0;else break;do{N=(c[(R&p)>>2]|0)+1|0;c[(R&p)>>2]=N;c[(m+(t<<2)&p)>>2]=N;t=t+1|0}while((t|0)!=(u|0))}while(0);M=z<<24>>24!=0;do if(M){N=wh(ma,108,Q,0,0)|0;L=c[(ma&p)+32>>2]|0}else{if(!da){L=0;N=0;break}N=wh(ma,22,c[(L&p)+4>>2]|0,0,0)|0;L=N}while(0);J=xs(ma)|0;do if(c[(Y&p)>>2]&1){w=(b[(X&o)>>1]|0)+1|0;H=e+60|0;v=c[(H&p)>>2]|0;G=e+56|0;u=c[(G&p)>>2]|0;if((u|0)<(w|0)){I=c[(R&p)>>2]|0;c[(R&p)>>2]=I+w;I=I+1|0}else{c[(H&p)>>2]=w+v;c[(G&p)>>2]=u-w;I=v}if((P|0)<0)wh(ma,25,-1,I,0)|0;else{if(M)wh(ma,47,Q,P,I)|0;else Rq(e,c[((c[(l&p)+4>>2]|0)+(P*20|0)&p)>>2]|0,I);w=wh(ma,77,I,0,0)|0;wh(ma,25,-1,I,0)|0;v=c[(ma&p)+32>>2]|0;if(v>>>0>w>>>0)c[((c[(ma&p)+4>>2]|0)+(w*20|0)&p)+8>>2]=v;c[((c[(ma&p)+24>>2]|0)&p)+88>>2]=v+-1;wh(ma,38,I,0,0)|0}v=b[(X&o)>>1]|0;if(v<<16>>16>0){D=M|(l|0)!=0;t=h+4|0;u=I+1|0;w=l+4|0;A=e+8|0;B=ka+4|0;C=0;do{j:do if($)z=C;else{y=c[(t&p)>>2]|0;if((y|0)<=0){z=0;break}x=c[(h&p)>>2]|0;r=0;while(1){z=r+1|0;if((c[(x+(r<<3)&p)+4>>2]|0)==(C|0)){z=r;break j}if((z|0)<(y|0))r=z;else break}}while(0);do if(D){if(U?(z|0)>=(c[(t&p)>>2]|0):0){_=213;break}if(M){wh(ma,47,Q,z,u+C|0)|0;break}else{Y=c[((c[(w&p)>>2]|0)+(z*20|0)&p)>>2]|0;r=u+C|0;x=c[(A&p)>>2]|0;Rq(e,Y,r);v=(c[(R&p)>>2]|0)+1|0;c[(R&p)>>2]=v;wh(x,33,r,v,0)|0;a[(Y&n)+38>>0]=a[(Y&n)>>0]|0;a[(Y&n)>>0]=-97;c[(Y&p)+28>>2]=v;Y=Y+4|0;c[(Y&p)>>2]=c[(Y&p)>>2]&-4097;break}}else _=213;while(0);if((_|0)==213){_=0;Rq(e,c[((c[(B&p)>>2]|0)+(C*24|0)&p)+4>>2]|0,u+C|0)}C=C+1|0;v=b[(X&o)>>1]|0}while((C|0)<(v<<16>>16|0))}if(!ha){wt(ma,ka,I+1|0);v=b[(X&o)>>1]|0}xt(e,ea,108,0,1,ka,I+-1-(v<<16>>16)|0,k,J);v=(b[(X&o)>>1]|0)+1|0;dt(e,I,v);if((c[(G&p)>>2]|0)>=(v|0))break;c[(G&p)>>2]=v;c[(H&p)>>2]=I}while(0);do if(!ha){if(a[(ga&n)>>0]&16)wh(ma,28,0,W,0)|0;k:do if((P|0)<=-1)if(!((a[(ga&n)>>0]&16|Z)<<24>>24)){wh(ma,74,c[(ja&p)>>2]|0,V,S)|0;I=1;break}else{wh(ma,28,0,V,0)|0;I=0;break}else{do if(M)wh(ma,47,Q,P,V)|0;else{if(da){wh(ma,33,P+O|0,V,0)|0;break}Rq(e,c[((c[(l&p)+4>>2]|0)+(P*20|0)&p)>>2]|0,V);if(!(a[((c[(ma&p)>>2]|0)&n)+65>>0]|0)){u=(c[(ma&p)+4>>2]|0)+(((c[(ma&p)+32>>2]|0)+-1|0)*20|0)|0;if(!u)break}else u=29120;if((a[(u&n)>>0]|0)!=28)break;if(a[(ga&n)>>0]&16)break;a[(u&n)>>0]=74;c[(u&p)+4>>2]=c[(ja&p)>>2];c[(u&p)+8>>2]=V;c[(u&p)+12>>2]=S;I=1;break k}while(0);if(!(a[(ga&n)>>0]&16)){u=wh(ma,77,V,0,0)|0;wh(ma,74,c[(ja&p)>>2]|0,V,S)|0;t=c[(ma&p)+32>>2]|0;if(t>>>0>u>>>0)c[((c[(ma&p)+4>>2]|0)+(u*20|0)&p)+8>>2]=t;c[((c[(ma&p)+24>>2]|0)&p)+88>>2]=t+-1}else wh(ma,76,V,(c[(ma&p)+32>>2]|0)+2|0,0)|0;wh(ma,38,V,0,0)|0;I=0}while(0);if((S|0)>0)wh(c[(e&p)+8>>2]|0,136,S,V,0)|0;if((b[(X&o)>>1]|0)>0){G=ka+36|0;H=ka+4|0;C=(s|0)==0;B=h+4|0;A=(O|0)==(T|0);s=l+4|0;t=e+23|0;u=ca+20|0;v=ca+4|0;E=ca+24|0;F=0;w=0;do{D=F+T|0;l:do if((F|0)==(b[(G&o)>>1]|0))wh(ma,29,D,0,0)|0;else{m:do if($)if(!(a[((c[(H&p)>>2]|0)+(F*24|0)&n)+23>>0]&2)){z=F-w|0;_=258;break}else{w=w+1|0;break}else{y=c[(B&p)>>2]|0;if((y|0)<=0){z=0;_=258;break}x=c[(h&p)>>2]|0;r=0;while(1){z=r+1|0;if((c[(x+(r<<3)&p)+4>>2]|0)==(F|0)){z=r;_=258;break m}if((z|0)<(y|0))r=z;else{_=258;break}}}while(0);do if((_|0)==258){_=0;if((z|0)<0|C)break;if(U?(z|0)>=(c[(B&p)>>2]|0):0)break;if(M){wh(ma,47,Q,z,D)|0;break l}if(!da){Rq(e,c[((c[(s&p)>>2]|0)+(z*20|0)&p)>>2]|0,D);break l}if(A)break l;wh(ma,34,z+O|0,D,0)|0;break l}while(0);z=c[((c[(H&p)>>2]|0)+(F*24|0)&p)+4>>2]|0;do if(a[(t&n)>>0]|0){c[(ca&p)>>2]=0;c[(ca&p)+4>>2]=0;c[(ca&p)+8>>2]=0;c[(ca&p)+12>>2]=0;c[(ca&p)+16>>2]=0;c[(ca&p)+20>>2]=0;a[(u&n)>>0]=1;c[(ca&p)>>2]=78;c[(v&p)>>2]=79;c[(E&p)>>2]=0;rs(ca,z)|0;if(!(a[(u&n)>>0]|0))break;Gt(e,z,D,0);break l}while(0);Rq(e,z,D)}while(0);F=F+1|0}while((F|0)<(b[(X&o)>>1]|0))}if(!(a[(ga&n)>>0]&16)){yt(e,ka,m,c[(ja&p)>>2]|0,c[(la&p)>>2]|0,W,0,P>>>31&255^1,k&255,J,ba);zt(e,ka,0,W,0,0);Bt(e,ka,c[(ja&p)>>2]|0,c[(la&p)>>2]|0,W,m,0,I,(c[(ba&p)>>2]|0)==0&1);break}u=c[(ka&p)+60>>2]|0;n:do if(!u)u=0;else while(1){if((c[(u&p)>>2]|0)==(na|0))break n;u=c[(u&p)+24>>2]|0;if(!u){u=0;break}}while(0);qt(e,ka);xh(ma,wh(ma,15,1,(b[(X&o)>>1]|0)+2|0,W)|0,u,-10);t=c[(ma&p)+4>>2]|0;if(t)a[(t+(((c[(ma&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=(k|0)==10?2:k&255;ca=c[(aa&p)>>2]|0;a[(((ca|0)==0?e:ca)&n)+21>>0]=1}while(0);if(c[(K&p)>>2]&128)wh(ma,37,q,1,0)|0;if(ea)xt(e,ea,108,0,2,ka,V+-1-(b[(X&o)>>1]|0)|0,k,J);u=ma+24|0;t=c[(u&p)>>2]|0;r=~J;do if((J|0)<0){s=c[(t&p)+112>>2]|0;if(!s)break;c[(s+(r<<2)&p)>>2]=c[(ma&p)+32>>2]}while(0);s=ma+32|0;c[(t&p)+88>>2]=(c[(s&p)>>2]|0)+-1;do if(M){wh(ma,9,Q,L,0)|0;s=c[(s&p)>>2]|0;if(s>>>0>N>>>0)c[((c[(ma&p)+4>>2]|0)+(N*20|0)&p)+8>>2]=s;c[((c[(u&p)>>2]|0)&p)+88>>2]=s+-1;wh(ma,61,Q,0,0)|0}else{if(!da)break;wh(ma,16,0,L,0)|0;s=c[(s&p)>>2]|0;if(s>>>0>N>>>0)c[((c[(ma&p)+4>>2]|0)+(N*20|0)&p)+8>>2]=s;c[((c[(u&p)>>2]|0)&p)+88>>2]=s+-1}while(0);if((a[(ga&n)>>0]&16)!=0|ha)break;r=c[(ja&p)>>2]|0;if((r|0)<(c[(la&p)>>2]|0))wh(ma,61,r,0,0)|0;r=c[(ka&p)+8>>2]|0;if(!r)break;else s=0;while(1){wh(ma,61,(c[(la&p)>>2]|0)+s|0,0,0)|0;r=c[(r&p)+20>>2]|0;if(!r)break;else s=s+1|0}}while(0);if((a[(ia&n)>>0]|0)==0?(c[(e&p)+412>>2]|0)==0:0)st(e);if((((c[(na&p)+24>>2]&128|0)!=0?(a[(ia&n)>>0]|0)==0:0)?(c[(e&p)+412>>2]|0)==0:0)?(wh(ma,35,q,1,0)|0,iq(ma,1),(a[((c[(ma&p)>>2]|0)&n)+65>>0]|0)==0):0)Xg(c[(ma&p)+16>>2]|0,33488,-1,1,0)|0}else m=0}else m=0}else{m=0;l=0}while(0);Do(na,f);Nk(na,l);Mk(na,g,1);Hk(na,h);mg(na,m);i=oa;return}function ur(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();f=h;if(!d){d=mh(b,8,0)|0;if(!d)d=0;else{g=d;k=g;a[(k&n)>>0]=0;a[(k&n)+1>>0]=0;a[(k&n)+2>>0]=0;a[(k&n)+3>>0]=0;g=g+4|0;a[(g&n)>>0]=0;a[(g&n)+1>>0]=0;a[(g&n)+2>>0]=0;a[(g&n)+3>>0]=0;g=4}}else g=4;do if((g|0)==4){c[(d&p)>>2]=Ht(b,c[(d&p)>>2]|0,8,d+4|0,f)|0;f=c[(f&p)>>2]|0;if((f|0)<0){Hk(b,d);d=0;break}else{b=Wq(b,e)|0;c[((c[(d&p)>>2]|0)+(f<<3)&p)>>2]=b;break}}while(0);i=h;return d|0}function vr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[(d&p)+4>>2]|0)!=0?(f=nr(c[(a&p)>>2]|0,95,d,e)|0,(f|0)!=0):0){c[(f&p)+12>>2]=b;b=f+4|0;c[(b&p)>>2]=c[(b&p)>>2]|4352;b=f}return b|0}function wr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[(a&p)>>2]|0;d=nr(e,153,d,1)|0;if(!d){Nk(e,b);d=0}else{c[(d&p)+20>>2]=b;yr(a,d)}return d|0}function xr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;b=c[(b&p)>>2]|0;if((d|0)!=0&(e|0)!=0?(a[(d&n)>>0]|0)==101:0){a[(e&n)>>0]=f;f=e+16|0;Gk(b,c[(f&p)>>2]|0);c[(f&p)>>2]=0}return}function yr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();e=f;if((c[(a&p)+64>>2]|0)==0?(It(b),d=c[((c[(a&p)>>2]|0)&p)+100>>2]|0,(d|0)<(c[(b&p)+24>>2]|0)):0){c[(e&p)>>2]=d;th(a,27152,e)}i=f;return}function zr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(a&p)>>2]|0;i=d+20|0;e=c[(i&p)>>2]|0;if((e|0)>0){g=d+16|0;h=(b|0)==0;d=e;f=0;do{e=c[(g&p)>>2]|0;do if(c[(e+(f<<4)&p)+4>>2]|0){if(!h?(dd(b,c[(e+(f<<4)&p)>>2]|0)|0)!=0:0)break;Ar(a,f);d=c[(i&p)>>2]|0}while(0);f=f+1|0}while((f|0)<(d|0))}return}function Ar(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[(a&p)+408>>2]|0;f=(f|0)==0?a:f;a=f+332|0;d=c[(a&p)>>2]|0;e=1<>2]|0,c[(a&p)>>2]=d|e,c[(f+(b<<2)&p)+336>>2]=c[(c[((c[(g&p)+16>>2]|0)+(b<<4)&p)+12>>2]&p)>>2],(b|0)==1):0)_k(f)|0;return}function Br(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,o=0,q=0;q=i;i=i+128|0;if((i|0)>=(j|0))fa();f=q+8|0;o=q;m=q+24|0;c[(o&p)>>2]=0;k=c[(b&p)>>2]|0;if((c[(b&p)+64>>2]|0)==0?(c[(f&p)>>2]=e,l=Wk(k,d,f)|0,(l|0)!=0):0){d=b+18|0;a[(d&n)>>0]=(a[(d&n)>>0]|0)+1<<24>>24;e=b+440|0;f=m+0|0;g=e+0|0;h=f+96|0;do{a[(f&n)>>0]=a[(g&n)>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));f=e+0|0;h=f+96|0;do{c[(f&p)>>2]=0;f=f+4|0}while((f|0)<(h|0));Lh(b,l,o)|0;mg(k,c[(o&p)>>2]|0);mg(k,l);f=e+0|0;g=m+0|0;h=f+96|0;do{a[(f&n)>>0]=a[(g&n)>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));a[(d&n)>>0]=(a[(d&n)>>0]|0)+-1<<24>>24}i=q;return}function Cr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+48|0;if((i|0)>=(j|0))fa();g=k;h=k+16|0;b=c[((c[((c[(a&p)>>2]|0)&p)+16>>2]|0)+(b<<4)&p)>>2]|0;f=1;do{c[(g&p)>>2]=f;ad(24,h,33272,g)|0;if(_h(c[(a&p)>>2]|0,h,b)|0){c[(g&p)>>2]=b;c[(g&p)+4>>2]=h;c[(g&p)+8>>2]=d;c[(g&p)+12>>2]=e;Br(a,28840,g)}f=f+1|0}while((f|0)!=5);i=k;return}function Dr(b,d){b=b|0;d=d|0;var e=0,f=0;e=b+19|0;f=a[(e&n)>>0]|0;if(!(f<<24>>24)){f=b+72|0;e=(c[(f&p)>>2]|0)+1|0;c[(f&p)>>2]=e}else{f=f+-1<<24>>24;a[(e&n)>>0]=f;e=c[(b+((f&255)<<2)&p)+24>>2]|0}f=c[(b&p)+8>>2]|0;wh(f,25,(c[(c[((c[((c[(b&p)>>2]|0)&p)+16>>2]|0)+(d<<4)&p)+12>>2]&p)>>2]|0)+1|0,e,0)|0;wh(f,52,d,1,e)|0;_r(b,e);return}function Er(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+32|0;if((i|0)>=(j|0))fa();k=l;h=Oq(b)|0;f=b+19|0;g=a[(f&n)>>0]|0;if(!(g<<24>>24)){g=b+72|0;f=(c[(g&p)>>2]|0)+1|0;c[(g&p)>>2]=f}else{g=g+-1<<24>>24;a[(f&n)>>0]=g;f=c[(b+((g&255)<<2)&p)+24>>2]|0}wh(h,117,d,f,e)|0;g=c[(b&p)+408>>2]|0;a[(((g|0)==0?b:g)&n)+21>>0]=1;c[(k&p)>>2]=c[((c[((c[(b&p)>>2]|0)&p)+16>>2]|0)+(e<<4)&p)>>2];c[(k&p)+4>>2]=(e|0)==1?13184:13208;c[(k&p)+8>>2]=d;c[(k&p)+12>>2]=f;c[(k&p)+16>>2]=f;Br(b,33216,k);_r(b,f);i=l;return}function Fr(f,g,h,k,l){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=i;i=i+96|0;if((i|0)>=(j|0))fa();G=X+24|0;w=X+80|0;q=X+64|0;A=X+16|0;t=X+60|0;u=X+56|0;O=X+52|0;N=X+48|0;z=X+44|0;D=X+40|0;E=X+36|0;F=X+32|0;x=X+8|0;s=X;W=c[(f&p)>>2]|0;T=Oq(f)|0;do if((T|0)!=0?(S=T+88|0,b[(S&o)>>1]=b[(S&o)>>1]|16,S=f+72|0,c[(S&p)>>2]=2,Q=er(f,g,h,w)|0,(Q|0)>=0):0){R=W+16|0;C=c[(R&p)>>2]|0;if((Q|0)==1?(_k(f)|0)!=0:0)break;V=Wq(W,c[(w&p)>>2]|0)|0;if(V){if(!l)U=Wq(W,k)|0;else{c[(G&p)>>2]=k;U=uh(W,30104,G)|0}B=h+4|0;if(!(c[(B&p)>>2]|0))L=0;else L=c[(C+(Q<<4)&p)>>2]|0;a:do if(!(Sq(f,19,V,U,L)|0)){c[(q&p)>>2]=0;c[(q&p)+4>>2]=V;c[(q&p)+8>>2]=U;c[(q&p)+12>>2]=0;r=W+452|0;c[(r&p)>>2]=0;g=cg(W,L,14,q)|0;if(!g){k=c[(q&p)>>2]|0;if(!k)break;m=(c[(S&p)>>2]|0)+1|0;c[(S&p)>>2]=m;xh(T,wh(T,97,0,m,0)|0,k,0);iq(T,1);if(!(a[((c[(T&p)>>2]|0)&n)+65>>0]|0))Xg(c[(T&p)+16>>2]|0,30112,-1,1,0)|0;wh(T,35,m,1,0)|0;Wc(c[(q&p)>>2]|0);break}else if((g|0)==12){w=0;q=56;b:while(1){while(1){l=(w+q|0)/2|0;g=c[((l*12|0)&p)+30120>>2]|0;k=dd(V,g)|0;if(!k){w=l;break b}if((k|0)<0){g=l;break}if((l|0)<(q|0))w=l+1|0;else break a}g=g+-1|0;if((w|0)>(g|0))break a;else q=g}if((a[((w*12|0)&n)+30125>>0]&1)!=0?(Gn(f)|0)!=0:0)break;do switch(d[((w*12|0)&n)+30124>>0]|0){case 10:{q=1<>2]=c[(F&p)>>2]|q;if(U){c[(G&p)>>2]=0;Dn(U,G)|0;k=c[(G&p)>>2]|0;if((k|0)<=-1)k=(k|0)==-2147483648?2147483647:0-k|0;G=c[(f&p)+408>>2]|0;Ar(f,Q);G=((G|0)==0?f:G)+328|0;c[(G&p)>>2]=c[(G&p)>>2]|q;wh(T,25,k,1,0)|0;wh(T,52,Q,3,1)|0;c[((c[(C+(Q<<4)&p)+12>>2]|0)&p)+80>>2]=k;pq(c[(C+(Q<<4)&p)+4>>2]|0,k);break a}iq(T,1);if(!(a[((c[(T&p)>>2]|0)&n)+65>>0]|0))Xg(c[(T&p)+16>>2]|0,30848,-1,1,0)|0;c[(S&p)>>2]=(c[(S&p)>>2]|0)+2;k=yh(T,9,30808)|0;l=c[(T&p)+32>>2]|0;if(l>>>0>k>>>0)c[((c[(T&p)+4>>2]|0)+(k*20|0)&p)+4>>2]=Q;m=k+1|0;if(l>>>0>m>>>0)c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+4>>2]=Q;m=k+6|0;if(l>>>0<=m>>>0)break a;c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+4>>2]=2e3;break a}case 19:{k=c[(c[((c[(C+(Q<<4)&p)+4>>2]|0)&p)+4>>2]&p)>>2]|0;G=A;c[(G&p)>>2]=-2;c[(G&p)+4>>2]=-1;if(U){ji(U,A)|0;m=A;l=c[(m&p)>>2]|0;m=c[(m&p)+4>>2]|0;if((m|0)<-1|(m|0)==-1&l>>>0<4294967295){l=A;c[(l&p)>>2]=-1;c[(l&p)+4>>2]=-1;l=-1;m=-1}G=k+160|0;c[(G&p)>>2]=l;c[(G&p)+4>>2]=m;k=c[(k&p)+208>>2]|0;if(k){G=k+16|0;c[(G&p)>>2]=l;c[(G&p)+4>>2]=m}}else{m=k+160|0;l=c[(m&p)>>2]|0;m=c[(m&p)+4>>2]|0}G=A;c[(G&p)>>2]=l;c[(G&p)+4>>2]=m;Jt(f,30952,l,m);break a}case 28:{q=Oq(f)|0;iq(q,4);c[(S&p)>>2]=4;Ar(f,Q);if((((a[((c[(q&p)>>2]|0)&n)+65>>0]|0)==0?(Xg(c[(q&p)+16>>2]|0,31232,-1,1,0)|0,(a[((c[(q&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(q&p)+16>>2]|0)+40|0,20632,-1,1,0)|0,(a[((c[(q&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(q&p)+16>>2]|0)+80|0,31240,-1,1,0)|0,(a[((c[(q&p)>>2]|0)&n)+65>>0]|0)==0):0)Xg((c[(q&p)+16>>2]|0)+120|0,31248,-1,1,0)|0;l=c[((c[(C+(Q<<4)&p)+12>>2]|0)&p)+16>>2]|0;if(!l)break a;do{m=c[(l&p)+8>>2]|0;G=c[(m&p)>>2]|0;xh(q,wh(q,97,0,1,0)|0,G,0);wh(q,28,0,2,0)|0;G=Ws(b[(m&o)+42>>1]|0)|0;wh(q,25,G,3,0)|0;G=Ws(b[(m&o)+28>>1]|0)|0;wh(q,25,G,4,0)|0;wh(q,35,1,4,0)|0;m=c[(m&p)+8>>2]|0;if(m)do{G=c[(m&p)>>2]|0;xh(q,wh(q,97,0,2,0)|0,G,0);G=Ws(b[(m&o)+44>>1]|0)|0;wh(q,25,G,3,0)|0;G=Ws(b[(c[(m&p)+8>>2]&o)>>1]|0)|0;wh(q,25,G,4,0)|0;wh(q,35,1,4,0)|0;m=c[(m&p)+20>>2]|0}while((m|0)!=0);l=c[(l&p)>>2]|0}while((l|0)!=0);break}case 15:{if(!U)break a;s=bq(W,U,L)|0;if(!s)break a;w=(c[((w*12|0)&p)+30128>>2]|0)==0;t=s+46|0;G=w?3:6;r=b[((w?t:s+48|0)&o)>>1]|0;u=r&65535;c[(S&p)>>2]=G;q=c[(s&p)+12>>2]|0;iq(T,G);Ar(f,Q);if(((a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0?(Xg(c[(T&p)+16>>2]|0,31256,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(T&p)+16>>2]|0)+40|0,31176,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)Xg((c[(T&p)+16>>2]|0)+80|0,31184,-1,1,0)|0;if(((!w?(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0:0)?(Xg((c[(T&p)+16>>2]|0)+120|0,31264,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(T&p)+16>>2]|0)+160|0,31272,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)Xg((c[(T&p)+16>>2]|0)+200|0,31280,-1,1,0)|0;if(!(r<<16>>16))break a;m=s+4|0;l=s+28|0;k=s+32|0;s=q+4|0;q=0;do{G=b[((c[(m&p)>>2]|0)+(q<<1)&o)>>1]|0;wh(T,25,q,1,0)|0;r=G<<16>>16;wh(T,25,r,2,0)|0;if(G<<16>>16<0)wh(T,28,0,3,0)|0;else{G=c[((c[(s&p)>>2]|0)+(r*24|0)&p)>>2]|0;xh(T,wh(T,97,0,3,0)|0,G,0)}if(!w){wh(T,25,d[((c[(l&p)>>2]|0)+q&n)>>0]|0,4,0)|0;G=c[((c[(k&p)>>2]|0)+(q<<2)&p)>>2]|0;xh(T,wh(T,97,0,5,0)|0,G,0);wh(T,25,(q|0)<(e[(t&o)>>1]|0)&1,6,0)|0}wh(T,35,1,c[(S&p)>>2]|0,0)|0;q=q+1|0}while((q|0)<(u|0));break}case 22:{Ar(f,Q);k=(c[(S&p)>>2]|0)+1|0;c[(S&p)>>2]=k;if((a[(V&n)>>0]&-33)<<24>>24==80)wh(T,153,Q,k,0)|0;else{c[(G&p)>>2]=0;if(U){Dn(U,G)|0;m=c[(G&p)>>2]|0;if((m|0)<=-1)m=(m|0)==-2147483648?2147483647:0-m|0}else m=0;wh(T,154,Q,k,m)|0}wh(T,35,k,1,0)|0;iq(T,1);if(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)break a;Xg(c[(T&p)+16>>2]|0,V,-1,1,-1)|0;break a}case 24:{l=c[(C+(Q<<4)&p)+4>>2]|0;if(U){c[(G&p)>>2]=0;Dn(U,G)|0;G=c[(G&p)>>2]|0;c[(W&p)+72>>2]=G;if((xg(l,G,-1,0)|0)!=7)break a;a[(W&n)+65>>0]=1;break a}if(!l){l=0;m=0}else{m=c[((c[(l&p)+4>>2]|0)&p)+32>>2]|0;l=m;m=((m|0)<0)<<31>>31}Jt(f,30864,l,m);break a}case 25:{l=c[(C+(Q<<4)&p)+4>>2]|0;if(U){m=(ii(U,1,0)|0)<<24>>24!=0&1;if((c[(B&p)>>2]|0)==0?(y=W+20|0,(c[(y&p)>>2]|0)>0):0){k=0;do{so(c[((c[(R&p)>>2]|0)+(k<<4)&p)+4>>2]|0,m)|0;k=k+1|0}while((k|0)<(c[(y&p)>>2]|0))}}else m=-1;G=so(l,m)|0;Jt(f,30880,G,((G|0)<0)<<31>>31);break a}case 18:{iq(T,1);if(!(a[((c[(T&p)>>2]|0)&n)+65>>0]|0))Xg(c[(T&p)+16>>2]|0,30936,-1,1,0)|0;c:do if(U){k=U;while(1)if(!(a[(k&n)>>0]|0))break;else k=k+1|0;m=k-U&1073741823;k=0;while(1){if(!(Fc(U,c[(k<<2&p)+32216>>2]|0,m)|0))break;k=k+1|0;if((k|0)==6){P=91;break c}}if((k|0)!=-1)q=Q;else P=91}else P=91;while(0);if((P|0)==91)if(!(c[(B&p)>>2]|0)){c[(B&p)>>2]=1;k=-1;q=0}else{k=-1;q=Q}m=c[(W&p)+20>>2]|0;if((m|0)>0){l=T+96|0;do{m=m+-1|0;do if(c[((c[(R&p)>>2]|0)+(m<<4)&p)+4>>2]|0){if((m|0)!=(q|0)?(c[(B&p)>>2]|0)!=0:0)break;c[(l&p)>>2]=c[(l&p)>>2]|1<0)}wh(T,35,1,1,0)|0;break a}case 32:{if(!U){if(!(c[2708]|0))break a;iq(T,1);if(!(a[((c[(T&p)>>2]|0)&n)+65>>0]|0))Xg(c[(T&p)+16>>2]|0,31048,-1,1,0)|0;G=c[2708]|0;xh(T,wh(T,97,0,1,0)|0,G,0);wh(T,35,1,1,0)|0;break a}if((a[(U&n)>>0]|0)!=0?(F=c[(W&p)>>2]|0,F=(pc[c[(F&p)+32>>2]&31](F,U,1,u)|0)!=0,F|(c[(u&p)>>2]|0)==0):0){th(f,31072,G);break a}if((d[(W&n)+64>>0]|0)<2)Kt(f)|0;Wc(c[2708]|0);if(!(a[(U&n)>>0]|0)){c[2708]=0;break a}else{c[(G&p)>>2]=U;c[2708]=_c(10344,G)|0;break a}}case 14:{if(!((U|0)!=0?(G=(Dn(U,t)|0)==0,m=c[(t&p)>>2]|0,!(G|(m|0)<1)):0)){c[(t&p)>>2]=2147483647;m=2147483647}l=c[(f&p)+408>>2]|0;Ar(f,Q);l=((l|0)==0?f:l)+328|0;c[(l&p)>>2]=c[(l&p)>>2]|1<>2]|0;if(l>>>0>m>>>0)c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+8>>2]=l;c[((c[(T&p)+24>>2]|0)&p)+88>>2]=l+-1;break a}case 30:{if(!U)break a;h=_h(W,U,L)|0;if(!h)break a;k=c[(h&p)+8>>2]|0;d:do if(!k)k=0;else while(1){if((a[(k&n)+51>>0]&3)==2)break d;k=c[(k&p)+20>>2]|0;if(!k){k=0;break}}while(0);iq(T,6);c[(S&p)>>2]=6;Ar(f,Q);do if((((a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0?(Xg(c[(T&p)+16>>2]|0,31176,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(T&p)+16>>2]|0)+40|0,31184,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(T&p)+16>>2]|0)+80|0,31192,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0){Xg((c[(T&p)+16>>2]|0)+120|0,31200,-1,1,0)|0;if(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)break;Xg((c[(T&p)+16>>2]|0)+160|0,31208,-1,1,0)|0;if(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)break;Xg((c[(T&p)+16>>2]|0)+200|0,31224,-1,1,0)|0}while(0);hr(f,h)|0;t=h+38|0;m=b[(t&o)>>1]|0;if(m<<16>>16<=0)break a;u=(k|0)==0;l=k+4|0;w=0;r=0;g=c[(h&p)+4>>2]|0;while(1){s=g+23|0;if(!(a[(s&n)>>0]&2)){wh(T,25,w-r|0,1,0)|0;q=c[(g&p)>>2]|0;xh(T,wh(T,97,0,2,0)|0,q,0);q=c[(g&p)+12>>2]|0;xh(T,wh(T,97,0,3,0)|0,(q|0)==0?10360:q,0);wh(T,25,(a[(g&n)+20>>0]|0)!=0&1,4,0)|0;q=c[(g&p)+8>>2]|0;if(!q)wh(T,28,0,5,0)|0;else xh(T,wh(T,97,0,5,0)|0,q,0);k=a[(s&n)>>0]&1;e:do if(k<<24>>24==0|u)q=(k^1)&255^1;else{q=b[(t&o)>>1]|0;if(q<<16>>16<1){q=1;break}m=c[(l&p)>>2]|0;s=q<<16>>16;k=1;while(1){q=k+1|0;if((b[(m+(k+-1<<1)&o)>>1]|0)==(w|0)){q=k;break e}if((k|0)<(s|0))k=q;else break}}while(0);wh(T,25,q,6,0)|0;wh(T,35,1,6,0)|0;m=b[(t&o)>>1]|0}else r=r+1|0;w=w+1|0;if((w|0)>=(m<<16>>16|0))break;else g=g+24|0}break}case 2:{if(!U){Jt(f,g,(c[((w*12|0)&p)+30128>>2]&c[(W&p)+24>>2]|0)!=0&1,0);break a}l=c[((w*12|0)&p)+30128>>2]|0;l=(a[(W&n)+63>>0]|0)==0?l&-524289:l;if(!((ii(U,1,0)|0)<<24>>24)){G=W+24|0;c[(G&p)>>2]=c[(G&p)>>2]&~l;if((l|0)==16777216){G=W+512|0;c[(G&p)>>2]=0;c[(G&p)+4>>2]=0}}else{G=W+24|0;c[(G&p)>>2]=c[(G&p)>>2]|l}wh(T,144,0,0,0)|0;Lt(W);break a}case 5:{if(!U)break a;G=(ii(U,1,0)|0)<<24>>24!=0;F=G?32e3:19240;Qh(W,19248,2,1,F,40,0,0,0)|0;Qh(W,19248,3,1,F,40,0,0,0)|0;Qh(W,19232,2,1,10352,40,0,0,0)|0;Ot(W,19232,12);Ot(W,19248,G?12:4);break a}case 17:{g=a[(V&n)>>0]|0;A=(c[(h&p)>>2]|0)==0?-1:Q;c[(S&p)>>2]=6;iq(T,1);if(!(a[((c[(T&p)>>2]|0)&n)+65>>0]|0))Xg(c[(T&p)+16>>2]|0,31464,-1,1,0)|0;c[(z&p)>>2]=100;if(U){Dn(U,z)|0;s=c[(z&p)>>2]|0;if((s|0)<1){c[(z&p)>>2]=100;s=100}}else s=100;wh(T,25,s,1,0)|0;M=W+20|0;w=c[(M&p)>>2]|0;if((w|0)>0){L=(A|0)<0;m=T+32|0;I=T+4|0;H=T+24|0;N=(g&-33)<<24>>24==81;O=0;do{if(L|(O|0)==(A|0)){Ar(f,O);w=wh(T,137,1,0,0)|0;wh(T,24,0,0,0)|0;l=c[(m&p)>>2]|0;if(l>>>0>w>>>0)c[((c[(I&p)>>2]|0)+(w*20|0)&p)+8>>2]=l;c[((c[(H&p)>>2]|0)&p)+88>>2]=l+-1;k=(c[((c[(R&p)>>2]|0)+(O<<4)&p)+12>>2]|0)+16|0;w=c[(k&p)>>2]|0;if(!w)g=0;else{g=0;do{l=c[(w&p)+8>>2]|0;if(!(a[(l&n)+44>>0]&32)){wh(T,25,c[(l&p)+32>>2]|0,g+2|0,0)|0;g=g+1|0}l=c[(l&p)+8>>2]|0;if(l)do{wh(T,25,c[(l&p)+40>>2]|0,g+2|0,0)|0;g=g+1|0;l=c[(l&p)+20>>2]|0}while((l|0)!=0);w=c[(w&p)>>2]|0}while((w|0)!=0)}C=c[(S&p)>>2]|0;w=g+8|0;c[(S&p)>>2]=(C|0)>(w|0)?C:w;wh(T,127,2,g,1)|0;w=c[(I&p)>>2]|0;if(w)a[(w+(((c[(m&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=O;g=wh(T,76,2,0,0)|0;c[(G&p)>>2]=c[((c[(R&p)>>2]|0)+(O<<4)&p)>>2];w=uh(W,31480,G)|0;xh(T,wh(T,97,0,3,0)|0,w,-1);wh(T,32,2,4,1)|0;wh(T,94,4,3,2)|0;wh(T,35,2,1,0)|0;w=c[(m&p)>>2]|0;if(w>>>0>g>>>0)c[((c[(I&p)>>2]|0)+(g*20|0)&p)+8>>2]=w;c[((c[(H&p)>>2]|0)&p)+88>>2]=w+-1;w=c[(k&p)>>2]|0;if(!((w|0)==0|N))do{x=c[(w&p)+8>>2]|0;J=x+8|0;g=c[(J&p)>>2]|0;do if(g){f:do if(!(a[(x&n)+44>>0]&32))g=0;else while(1){if((a[(g&n)+51>>0]&3)==2)break f;g=c[(g&p)+20>>2]|0;if(!g){g=0;break}}while(0);l=wh(T,137,1,0,0)|0;wh(T,24,0,0,0)|0;k=c[(m&p)>>2]|0;if(k>>>0>l>>>0)c[((c[(I&p)>>2]|0)+(l*20|0)&p)+8>>2]=k;c[((c[(H&p)>>2]|0)&p)+88>>2]=k+-1;at(f);pt(f,x,54,1,0,D,E)|0;wh(T,25,0,7,0)|0;k=c[(J&p)>>2]|0;if(!k)l=8;else{l=0;while(1){wh(T,25,0,l+8|0,0)|0;k=c[(k&p)+20>>2]|0;if(!k)break;else l=l+1|0}l=l+9|0}K=c[(S&p)>>2]|0;c[(S&p)>>2]=(K|0)>(l|0)?K:l;wh(T,108,c[(D&p)>>2]|0,0,0)|0;K=wh(T,37,7,1,0)|0;u=x+38|0;l=b[(u&o)>>1]|0;if(l<<16>>16>0){h=x+36|0;v=x+4|0;t=0;do{do if((t|0)!=(b[(h&o)>>1]|0)){if(!(a[((c[(v&p)>>2]|0)+(t*24|0)&n)+20>>0]|0))break;nt(T,x,c[(D&p)>>2]|0,t,3);l=c[(I&p)>>2]|0;if(l)a[(l+(((c[(m&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=-128;l=wh(T,77,3,0,0)|0;wh(T,37,1,-1,0)|0;q=c[((c[(v&p)>>2]|0)+(t*24|0)&p)>>2]|0;c[(G&p)>>2]=c[(x&p)>>2];c[(G&p)+4>>2]=q;q=uh(W,31504,G)|0;xh(T,wh(T,97,0,3,0)|0,q,-1);wh(T,35,3,1,0)|0;q=wh(T,137,1,0,0)|0;wh(T,24,0,0,0)|0;r=c[(m&p)>>2]|0;if(r>>>0>l>>>0)c[((c[(I&p)>>2]|0)+(l*20|0)&p)+8>>2]=r;l=r+-1|0;k=(c[(H&p)>>2]|0)+88|0;c[(k&p)>>2]=l;if(r>>>0>q>>>0)c[((c[(I&p)>>2]|0)+(q*20|0)&p)+8>>2]=r;c[(k&p)>>2]=l;l=b[(u&o)>>1]|0}while(0);t=t+1|0}while((t|0)<(l<<16>>16|0))}l=c[(J&p)>>2]|0;if(l){z=x+4|0;y=0;r=0;k=-1;while(1){q=xs(T)|0;if((g|0)!=(l|0)){k=Pt(f,l,c[(D&p)>>2]|0,0,0,F,r,k)|0;wh(T,37,y+8|0,1,0)|0;x=e[(l&o)+48>>1]|0;q=wh(T,69,(c[(E&p)>>2]|0)+y|0,q,k)|0;xh(T,q,x,-14);wh(T,37,1,-1,0)|0;xh(T,wh(T,97,0,3,0)|0,31528,-2);wh(T,94,7,3,3)|0;xh(T,wh(T,97,0,4,0)|0,31536,-2);wh(T,94,4,3,3)|0;x=c[(l&p)>>2]|0;v=wh(T,97,0,4,0)|0;xh(T,v,x,0);wh(T,94,4,3,3)|0;wh(T,35,3,1,0)|0;x=wh(T,137,1,0,0)|0;wh(T,24,0,0,0)|0;r=c[(m&p)>>2]|0;if(r>>>0>q>>>0)c[((c[(I&p)>>2]|0)+(q*20|0)&p)+8>>2]=r;q=c[(H&p)>>2]|0;c[(q&p)+88>>2]=r+-1;if(a[(l&n)+50>>0]|0){h=xs(T)|0;u=l+46|0;q=b[(u&o)>>1]|0;if(q<<16>>16){t=l+4|0;r=0;do{if(!(a[((c[(z&p)>>2]|0)+((b[((c[(t&p)>>2]|0)+(r<<1)&o)>>1]|0)*24|0)&n)+20>>0]|0)){wh(T,76,r+k|0,h,0)|0;q=b[(u&o)>>1]|0}r=r+1|0}while((r|0)<(q&65535|0))}q=wh(T,9,(c[(E&p)>>2]|0)+y|0,0,0)|0;wh(T,16,0,h,0)|0;r=c[(m&p)>>2]|0;if(r>>>0>q>>>0)c[((c[(I&p)>>2]|0)+(q*20|0)&p)+8>>2]=r;c[((c[(H&p)>>2]|0)&p)+88>>2]=r+-1;q=e[(u&o)>>1]|0;xh(T,wh(T,114,(c[(E&p)>>2]|0)+y|0,h,k)|0,q,-14);wh(T,37,1,-1,0)|0;xh(T,wh(T,97,0,3,0)|0,31560,-2);wh(T,16,0,v,0)|0;q=c[(H&p)>>2]|0;t=~h;do if((h|0)<0){r=c[(q&p)+112>>2]|0;if(!r)break;c[(r+(t<<2)&p)>>2]=c[(m&p)>>2]}while(0);r=c[(m&p)>>2]|0;c[(q&p)+88>>2]=r+-1}if(r>>>0>x>>>0)c[((c[(I&p)>>2]|0)+(x*20|0)&p)+8>>2]=r;c[(q&p)+88>>2]=r+-1;Qt(f,c[(F&p)>>2]|0);r=l}l=c[(l&p)+20>>2]|0;if(!l)break;else y=y+1|0}}wh(T,9,c[(D&p)>>2]|0,K,0)|0;l=K+-1|0;k=c[(m&p)>>2]|0;if(k>>>0>l>>>0)c[((c[(I&p)>>2]|0)+(l*20|0)&p)+8>>2]=k;c[((c[(H&p)>>2]|0)&p)+88>>2]=k+-1;xh(T,wh(T,97,0,2,0)|0,31592,-2);l=c[(J&p)>>2]|0;if(!l)break;else q=0;while(1){if((g|0)!=(l|0)){k=c[(m&p)>>2]|0;wh(T,137,1,k+2|0,0)|0;wh(T,24,0,0,0)|0;wh(T,50,(c[(E&p)>>2]|0)+q|0,3,0)|0;wh(T,79,q+8|0,k+8|0,3)|0;k=c[(I&p)>>2]|0;if(k)a[(k+(((c[(m&p)>>2]|0)+-1|0)*20|0)&n)+3>>0]=-112;wh(T,37,1,-1,0)|0;C=c[(l&p)>>2]|0;xh(T,wh(T,97,0,3,0)|0,C,0);wh(T,94,3,2,7)|0;wh(T,35,7,1,0)|0}l=c[(l&p)+20>>2]|0;if(!l)break;else q=q+1|0}}while(0);w=c[(w&p)>>2]|0}while((w|0)!=0);w=c[(M&p)>>2]|0}O=O+1|0}while((O|0)<(w|0))}else m=T+32|0;l=yh(T,3,31448)|0;m=c[(m&p)>>2]|0;if(m>>>0>l>>>0){c[((c[(T&p)+4>>2]|0)+(l*20|0)&p)+12>>2]=0-s;c[((c[(T&p)+4>>2]|0)+(l*20|0)&p)+8>>2]=m}c[((c[(T&p)+24>>2]|0)&p)+88>>2]=m+-1;xh(T,l+1|0,31624,-2);break a}case 21:{do if(U){if(dd(U,30904)|0)if(!(dd(U,30896)|0))k=0;else{P=66;break}else k=1;if(!(c[(B&p)>>2]|0)){s=c[(W&p)+20>>2]|0;if((s|0)>2){q=c[(R&p)>>2]|0;m=k&255;r=2;do{l=c[(c[((c[(q+(r<<4)&p)+4>>2]|0)&p)+4>>2]&p)>>2]|0;do if(!(a[(l&n)+12>>0]|0)){G=c[(l&p)+208>>2]|0;if((G|0)!=0?(a[(G&n)+43>>0]|0)==2:0)break;a[(l&n)+4>>0]=m}while(0);r=r+1|0}while((r|0)<(s|0))}else m=k&255;a[(W&n)+66>>0]=m;P=74}else P=74}else P=66;while(0);if((P|0)==66)if(!(c[(B&p)>>2]|0))l=W+66|0;else{k=-1;P=74}if((P|0)==74){m=c[(c[((c[(C+(Q<<4)&p)+4>>2]|0)&p)+4>>2]&p)>>2]|0;do if((k|0)>-1?(a[(m&n)+12>>0]|0)==0:0){G=c[(m&p)+208>>2]|0;if((G|0)!=0?(a[(G&n)+43>>0]|0)==2:0)break;a[(m&n)+4>>0]=k}while(0);l=m+4|0}l=(a[(l&n)>>0]|0)==1?30904:30896;iq(T,1);if(!(a[((c[(T&p)>>2]|0)&n)+65>>0]|0))Xg(c[(T&p)+16>>2]|0,30920,-1,1,0)|0;xh(T,wh(T,97,0,1,0)|0,l,0);wh(T,35,1,1,0)|0;break a}case 16:{if(!U)break a;k=_h(W,U,L)|0;if(!k)break a;q=Oq(f)|0;iq(q,5);c[(S&p)>>2]=5;Ar(f,Q);if(((((a[((c[(q&p)>>2]|0)&n)+65>>0]|0)==0?(Xg(c[(q&p)+16>>2]|0,31288,-1,1,0)|0,(a[((c[(q&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(q&p)+16>>2]|0)+40|0,31184,-1,1,0)|0,(a[((c[(q&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(q&p)+16>>2]|0)+80|0,31296,-1,1,0)|0,(a[((c[(q&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(q&p)+16>>2]|0)+120|0,31304,-1,1,0)|0,(a[((c[(q&p)>>2]|0)&n)+65>>0]|0)==0):0)Xg((c[(q&p)+16>>2]|0)+160|0,31312,-1,1,0)|0;m=c[(k&p)+8>>2]|0;if(!m)break a;else l=0;while(1){wh(q,25,l,1,0)|0;G=c[(m&p)>>2]|0;xh(q,wh(q,97,0,2,0)|0,G,0);wh(q,25,(a[(m&n)+50>>0]|0)!=0&1,3,0)|0;G=c[((a[(m&n)+51>>0]&3)<<2&p)+31336>>2]|0;xh(q,wh(q,97,0,4,0)|0,G,0);wh(q,25,(c[(m&p)+36>>2]|0)!=0&1,5,0)|0;wh(q,35,1,5,0)|0;m=c[(m&p)+20>>2]|0;if(!m)break;else l=l+1|0}break}case 1:{k=c[(C+(Q<<4)&p)+4>>2]|0;if(!U){m=c[(k&p)+4>>2]|0;c[(m&p)+4>>2]=c[(k&p)>>2];if(!(a[(m&n)+17>>0]|0)){m=0;l=0}else{l=(a[(m&n)+18>>0]|0)==0;m=l?1:2;l=l?0:0}Jt(f,30976,m,l);break a}if(dd(U,32192)|0)if(dd(U,31880)|0)if(!(dd(U,32200)|0))m=2;else{c[(G&p)>>2]=0;Dn(U,G)|0;m=c[(G&p)>>2]|0;m=m>>>0<3?m&255:0}else m=1;else m=0;a[(W&n)+67>>0]=m;r=m+-1|0;if(!((vn(k,m)|0)==0&r>>>0<2))break a;l=yh(T,6,30992)|0;q=c[(T&p)+32>>2]|0;if(q>>>0>l>>>0)c[((c[(T&p)+4>>2]|0)+(l*20|0)&p)+4>>2]=Q;k=l+1|0;if(q>>>0>k>>>0)c[((c[(T&p)+4>>2]|0)+(k*20|0)&p)+4>>2]=Q;k=l+2|0;m=l+4|0;if(q>>>0>k>>>0)c[((c[(T&p)+4>>2]|0)+(k*20|0)&p)+8>>2]=m;if(q>>>0>m>>>0)c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+4>>2]=r;m=l+5|0;if(q>>>0>m>>>0)c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+4>>2]=Q;G=T+96|0;c[(G&p)>>2]=c[(G&p)>>2]|1<>2]=3;if(((a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0?(Xg(c[(T&p)+16>>2]|0,31288,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(T&p)+16>>2]|0)+40|0,31184,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)Xg((c[(T&p)+16>>2]|0)+80|0,31352,-1,1,0)|0;l=W+20|0;m=c[(l&p)>>2]|0;if((m|0)>0)q=0;else break a;do{if(c[((c[(R&p)>>2]|0)+(q<<4)&p)+4>>2]|0){wh(T,25,q,1,0)|0;k=c[((c[(R&p)>>2]|0)+(q<<4)&p)>>2]|0;xh(T,wh(T,97,0,2,0)|0,k,0);k=c[(c[((c[((c[(R&p)>>2]|0)+(q<<4)&p)+4>>2]|0)&p)+4>>2]&p)>>2]|0;if(!(a[(k&n)+15>>0]|0))k=c[(k&p)+168>>2]|0;else k=10360;xh(T,wh(T,97,0,3,0)|0,k,0);wh(T,35,1,3,0)|0;m=c[(l&p)>>2]|0}q=q+1|0}while((q|0)<(m|0));break}case 6:{iq(T,2);c[(S&p)>>2]=2;if((a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0?(Xg(c[(T&p)+16>>2]|0,31288,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)Xg((c[(T&p)+16>>2]|0)+40|0,31184,-1,1,0)|0;m=c[(W&p)+436>>2]|0;if(!m)break a;else l=0;while(1){G=c[(m&p)+8>>2]|0;wh(T,25,l,1,0)|0;G=c[(G&p)>>2]|0;xh(T,wh(T,97,0,2,0)|0,G,0);wh(T,35,1,2,0)|0;m=c[(m&p)>>2]|0;if(!m)break;else l=l+1|0}break}case 13:{if(!U)break a;k=_h(W,U,L)|0;if(!k)break a;g=Oq(f)|0;q=c[(k&p)+16>>2]|0;if(!q)break a;iq(g,8);c[(S&p)>>2]=8;Ar(f,Q);do if((((a[((c[(g&p)>>2]|0)&n)+65>>0]|0)==0?(Xg(c[(g&p)+16>>2]|0,31360,-1,1,0)|0,(a[((c[(g&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(g&p)+16>>2]|0)+40|0,31288,-1,1,0)|0,(a[((c[(g&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(g&p)+16>>2]|0)+80|0,31232,-1,1,0)|0,(a[((c[(g&p)>>2]|0)&n)+65>>0]|0)==0):0){Xg((c[(g&p)+16>>2]|0)+120|0,31368,-1,1,0)|0;if(a[((c[(g&p)>>2]|0)&n)+65>>0]|0)break;Xg((c[(g&p)+16>>2]|0)+160|0,31376,-1,1,0)|0;if(a[((c[(g&p)>>2]|0)&n)+65>>0]|0)break;Xg((c[(g&p)+16>>2]|0)+200|0,31384,-1,1,0)|0;if(a[((c[(g&p)>>2]|0)&n)+65>>0]|0)break;Xg((c[(g&p)+16>>2]|0)+240|0,31400,-1,1,0)|0;if(a[((c[(g&p)>>2]|0)&n)+65>>0]|0)break;Xg((c[(g&p)+16>>2]|0)+280|0,31416,-1,1,0)|0}while(0);v=k+4|0;w=0;while(1){k=q+20|0;if((c[(k&p)>>2]|0)>0){m=q+25|0;l=q+26|0;t=q+8|0;h=0;do{u=c[(q+(h<<3)&p)+40>>2]|0;s=d[(m&n)>>0]|0;if((s|0)==8)r=32072;else if((s|0)==9)r=32088;else if((s|0)==6)r=32096;else if((s|0)==7)r=32056;else r=32112;s=d[(l&n)>>0]|0;if((s|0)==8)s=32072;else if((s|0)==9)s=32088;else if((s|0)==6)s=32096;else if((s|0)==7)s=32056;else s=32112;wh(g,25,w,1,0)|0;wh(g,25,h,2,0)|0;G=c[(t&p)>>2]|0;xh(g,wh(g,97,0,3,0)|0,G,0);G=c[((c[(v&p)>>2]|0)+((c[(q+(h<<3)&p)+36>>2]|0)*24|0)&p)>>2]|0;xh(g,wh(g,97,0,4,0)|0,G,0);xh(g,wh(g,(u|0)!=0?97:28,0,5,0)|0,u,0);xh(g,wh(g,97,0,6,0)|0,s,0);xh(g,wh(g,97,0,7,0)|0,r,0);xh(g,wh(g,97,0,8,0)|0,31424,0);wh(g,35,1,8,0)|0;h=h+1|0}while((h|0)<(c[(k&p)>>2]|0))}q=c[(q&p)+4>>2]|0;if(!q)break;else w=w+1|0}break}case 11:{if(!U){if(Gn(f)|0)break a;iq(T,1);if(!(a[((c[(T&p)>>2]|0)&n)+65>>0]|0))Xg(c[(T&p)+16>>2]|0,31784,-1,1,0)|0;wh(T,97,0,1,0)|0;xh(T,-1,c[(d[((c[(f&p)>>2]|0)&n)+62>>0]<<3&p)+31632>>2]|0,-2);wh(T,35,1,1,0)|0;break a}k=c[((c[(R&p)>>2]|0)&p)+12>>2]|0;if((b[(k&o)+78>>1]&5)==1)break a;else{m=31632;l=31704}do{if(!(dd(U,l)|0)){v=m;P=415;break}m=m+8|0;l=c[(m&p)>>2]|0}while((l|0)!=0);if((P|0)==415?(F=a[(v&n)+4>>0]|0,F=F<<24>>24==0?2:F,a[(W&n)+62>>0]=F,a[(k&n)+77>>0]=F,(c[(v&p)>>2]|0)!=0):0)break a;c[(G&p)>>2]=U;th(f,31800,G);break a}case 0:{s=c[((w*12|0)&p)+30128>>2]|0;F=T+96|0;c[(F&p)>>2]=c[(F&p)>>2]|1<>2]|0)>>>0>m>>>0)c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+4>>2]=Q;l=m+1|0;c[(G&p)>>2]=0;Dn(U,G)|0;k=c[(k&p)>>2]|0;if(k>>>0>l>>>0)c[((c[(T&p)+4>>2]|0)+(l*20|0)&p)+4>>2]=c[(G&p)>>2];m=m+2|0;if(k>>>0<=m>>>0)break a;c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+4>>2]=Q;c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+8>>2]=s;break a}m=yh(T,3,31848)|0;k=c[(T&p)+32>>2]|0;if(k>>>0>m>>>0)c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+4>>2]=Q;m=m+1|0;if(k>>>0>m>>>0){c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+4>>2]=Q;c[((c[(T&p)+4>>2]|0)+(m*20|0)&p)+12>>2]=s}iq(T,1);if(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)break a;Xg(c[(T&p)+16>>2]|0,V,-1,1,-1)|0;break a}case 7:{iq(T,1);c[(S&p)>>2]=1;if(!(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)){Xg(c[(T&p)+16>>2]|0,31864,-1,1,0)|0;l=0}else l=0;do{G=c[(l<<2&p)+8648>>2]|0;l=l+1|0;xh(T,wh(T,97,0,1,0)|0,G,0);wh(T,35,1,1,0)|0}while((l|0)!=4);break}case 35:{m=(c[(h&p)>>2]|0)!=0?Q:10;if(U)if(dd(U,31880)|0)if(!(dd(U,31888)|0))l=2;else{l=(dd(U,31896)|0)==0;l=l?3:0}else l=1;else l=0;iq(T,3);c[(S&p)>>2]=3;if(((a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0?(Xg(c[(T&p)+16>>2]|0,31912,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(T&p)+16>>2]|0)+40|0,31920,-1,1,0)|0,(a[((c[(T&p)>>2]|0)&n)+65>>0]|0)==0):0)Xg((c[(T&p)+16>>2]|0)+80|0,31928,-1,1,0)|0;wh(T,11,m,l,1)|0;wh(T,35,1,3,0)|0;break a}case 26:{of(W)|0;break a}case 34:{if(!U)l=c[(W&p)+216>>2]|0;else{c[(G&p)>>2]=0;Dn(U,G)|0;l=c[(G&p)>>2]|0;if((l|0)>0)m=21;else{l=0;m=0}c[(W&p)+216>>2]=m;c[(W&p)+220>>2]=l;l=m}if((l|0)==21){l=c[(W&p)+220>>2]|0;m=l;l=((l|0)<0)<<31>>31}else{m=0;l=0}Jt(f,31944,m,l);break a}case 27:{if((U|0)!=0?(ji(U,x)|0)==0:0){G=x;Pc(c[(G&p)>>2]|0,c[(G&p)+4>>2]|0)|0}F=(Lc()|0)==0;G=9032;Jt(f,31976,F?c[(G&p)>>2]|0:-1,F?c[(G&p)+4>>2]|0:-1);break a}case 33:{if((U|0)!=0?(E=(ji(U,s)|0)==0,G=s,F=c[(G&p)+4>>2]|0,E&((F|0)>-1|(F|0)==-1&(c[(G&p)>>2]|0)>>>0>4294967295)):0)c[(W&p)+132>>2]=0;G=c[(W&p)+132>>2]|0;Jt(f,31992,G,((G|0)<0)<<31>>31);break a}case 12:{g=c[(S&p)>>2]|0;H=g+1|0;I=g+5|0;J=g+6|0;c[(S&p)>>2]=J;K=Oq(f)|0;iq(K,4);if((((a[((c[(K&p)>>2]|0)&n)+65>>0]|0)==0?(Xg(c[(K&p)+16>>2]|0,31232,-1,1,0)|0,(a[((c[(K&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(K&p)+16>>2]|0)+40|0,20456,-1,1,0)|0,(a[((c[(K&p)>>2]|0)&n)+65>>0]|0)==0):0)?(Xg((c[(K&p)+16>>2]|0)+80|0,31432,-1,1,0)|0,(a[((c[(K&p)>>2]|0)&n)+65>>0]|0)==0):0)Xg((c[(K&p)+16>>2]|0)+120|0,31440,-1,1,0)|0;Ar(f,Q);w=c[((c[((c[(R&p)>>2]|0)+(Q<<4)&p)+12>>2]|0)&p)+16>>2]|0;if(!w)break a;u=(U|0)==0;h=f+68|0;v=K+32|0;D=K+4|0;E=K+24|0;F=g+2|0;G=g+3|0;A=g+4|0;t=f+8|0;while(1){if(u){B=c[(w&p)>>2]|0;C=c[(w&p)+8>>2]|0}else{B=0;C=sh(f,0,U,L)|0}if((C|0)!=0?(M=C+16|0,(c[(M&p)>>2]|0)!=0):0){gs(f,Q,c[(C&p)+32>>2]|0,0,c[(C&p)>>2]|0);g=(b[(C&o)+38>>1]|0)+J|0;if((g|0)>(c[(S&p)>>2]|0))c[(S&p)>>2]=g;Qq(f,0,Q,C,54);w=c[(C&p)>>2]|0;xh(K,wh(K,97,0,H,0)|0,w,0);w=c[(M&p)>>2]|0;if(!w)g=1;else{g=1;do{l=_h(W,c[(w&p)+8>>2]|0,L)|0;do if(l){c[(O&p)>>2]=0;gs(f,Q,c[(l&p)+32>>2]|0,0,c[(l&p)>>2]|0);if(Mt(f,l,w,O,0)|0)break a;m=c[(O&p)>>2]|0;if(!m){Qq(f,g,Q,l,54);break}else{wh(K,54,g,c[(m&p)+40>>2]|0,Q)|0;z=c[(t&p)>>2]|0;xh(z,-1,hs(f,m)|0,-6);break}}while(0);g=g+1|0;w=c[(w&p)+4>>2]|0}while((w|0)!=0)}if((c[(h&p)>>2]|0)<(g|0))c[(h&p)>>2]=g;s=wh(K,108,0,0,0)|0;g=c[(M&p)>>2]|0;if(g){z=C+36|0;y=1;while(1){x=g+8|0;w=_h(W,c[(x&p)>>2]|0,L)|0;c[(O&p)>>2]=0;c[(N&p)>>2]=0;r=(w|0)!=0;do if(r){Mt(f,w,g,O,N)|0;l=c[(O&p)>>2]|0;m=xs(K)|0;if(!(r&(l|0)==0)){w=m;P=306;break}w=c[(g&p)+36>>2]|0;if((w|0)==(b[(z&o)>>1]|0))wh(K,103,0,J,0)|0;else{wh(K,47,0,w,J)|0;Nt(K,C,w,J);wh(K,76,J,m,0)|0;wh(K,38,J,(c[(v&p)>>2]|0)+3|0,0)|0}wh(K,70,y,0,J)|0;wh(K,16,0,m,0)|0;w=c[(v&p)>>2]|0;if(w>>>0>1)c[((c[(D&p)>>2]|0)+((w+-2|0)*20|0)&p)+8>>2]=w;c[((c[(E&p)>>2]|0)&p)+88>>2]=w+-1;w=m}else{w=xs(K)|0;l=0;P=306}while(0);do if((P|0)==306){P=0;q=g+20|0;m=c[(q&p)>>2]|0;if((m|0)>0){k=0;do{m=c[(N&p)>>2]|0;if(!m)m=g+(k<<3)+36|0;else m=m+(k<<2)|0;R=k+J|0;nt(K,C,0,c[(m&p)>>2]|0,R);wh(K,76,R,w,0)|0;k=k+1|0;m=c[(q&p)>>2]|0}while((k|0)<(m|0))}if(!r)break;k=ot(K,l)|0;l=c[(q&p)>>2]|0;xh(K,wh(K,49,J,m,I)|0,k,l);xh(K,wh(K,69,y,w,I)|0,0,-14)}while(0);wh(K,103,0,F,0)|0;l=c[(x&p)>>2]|0;xh(K,wh(K,97,0,G,0)|0,l,0);wh(K,25,y+-1|0,A,0)|0;wh(K,35,H,4,0)|0;l=c[(E&p)>>2]|0;m=~w;do if((w|0)<0){w=c[(l&p)+112>>2]|0;if(!w)break;c[(w+(m<<2)&p)>>2]=c[(v&p)>>2]}while(0);c[(l&p)+88>>2]=(c[(v&p)>>2]|0)+-1;mg(W,c[(N&p)>>2]|0);g=c[(g&p)+4>>2]|0;if(!g)break;else y=y+1|0}}wh(K,9,0,s+1|0,0)|0;g=c[(v&p)>>2]|0;if(g>>>0>s>>>0)c[((c[(D&p)>>2]|0)+(s*20|0)&p)+8>>2]=g;c[((c[(E&p)>>2]|0)&p)+88>>2]=g+-1}if(!B)break;else w=B}break}case 23:{Jt(f,31016,0,0);break a}case 31:{if(!U){Jt(f,31032,d[(W&n)+64>>0]|0,0);break a}l=a[(U&n)>>0]|0;if((l+-48&255)>=3)if(!(dd(U,31352)|0))l=1;else{l=(dd(U,15168)|0)==0;l=l?2:0}else l=(l<<24>>24)+-48|0;m=(c[(f&p)>>2]|0)+64|0;if((d[(m&n)>>0]|0)==(l|0))break a;if(Kt(f)|0)break a;a[(m&n)>>0]=l;break a}case 29:{if(!U){G=(d[(C+(Q<<4)&n)+8>>0]|0)+-1|0;Jt(f,31104,G,((G|0)<0)<<31>>31);break a}if(!(a[(W&n)+63>>0]|0)){th(f,31120,G);break a}else{a[(C+(Q<<4)&n)+8>>0]=((ii(U,0,1)|0)&255)+1;Lt(W);break a}}case 4:if(!U){G=c[((c[(C+(Q<<4)&p)+12>>2]|0)&p)+80>>2]|0;Jt(f,30848,G,((G|0)<0)<<31>>31);break a}else{c[(G&p)>>2]=0;Dn(U,G)|0;G=c[(G&p)>>2]|0;c[((c[(C+(Q<<4)&p)+12>>2]|0)&p)+80>>2]=G;pq(c[(C+(Q<<4)&p)+4>>2]|0,G);break a}default:{if(!U)l=c[(W&p)+492>>2]|0;else{c[(G&p)>>2]=0;Dn(U,G)|0;l=c[(G&p)>>2]|0;G=(l|0)>0;l=G?l:0;c[(W&p)+444>>2]=G?74:0;c[(W&p)+448>>2]=G?W:0;c[(r&p)>>2]=0;c[(W&p)+492>>2]=l}Jt(f,31968,l,((l|0)<0)<<31>>31);break a}}while(0)}else{k=c[(q&p)>>2]|0;if(k){c[(G&p)>>2]=k;th(f,10344,G);Wc(c[(q&p)>>2]|0)}G=f+64|0;c[(G&p)>>2]=(c[(G&p)>>2]|0)+1;c[(f&p)+12>>2]=g;break}}while(0);mg(W,V);mg(W,U)}}while(0);i=X;return}function Gr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;a:do if(!d)d=0;else{f=d;while(1){if((a[(f&n)>>0]|0)==-121){d=c[(b&p)>>2]|0;if(!(a[((c[(d&p)>>2]|0)&n)+145>>0]|0))break;a[(f&n)>>0]=101}d=c[(f&p)+4>>2]|0;if(d&16384){d=0;break a}e=f+20|0;if(!(d&2048)){if(Hr(b,c[(e&p)>>2]|0)|0){d=1;break a}}else if(fr(b,c[(e&p)>>2]|0)|0){d=1;break a}if(Gr(b,c[(f&p)+16>>2]|0)|0){d=1;break a}f=c[(f&p)+12>>2]|0;if(!f){d=0;break a}}c[(g&p)>>2]=c[(b&p)+16>>2];th(d,29984,g);d=1}while(0);i=h;return d|0}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((b|0)!=0?(c[(b&p)>>2]|0)>0:0){d=0;e=c[(b&p)+4>>2]|0;while(1){if(Gr(a,c[(e&p)>>2]|0)|0){d=1;break a}d=d+1|0;if((d|0)>=(c[(b&p)>>2]|0)){d=0;break}else e=e+20|0}}else d=0;while(0);return d|0}function Ir(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;xh(a,wh(a,122,b,0,0)|0,d,-1);d=c[((c[(a&p)>>2]|0)&p)+20>>2]|0;if((d|0)>0){e=a+96|0;b=c[(e&p)>>2]|0;a=0;do{b=b|1<>2]=b}return}function Jr(a,d){a=a|0;d=d|0;var e=0,f=0;e=d+8|0;f=Ur(a,0,e)|0;d=d+24|0;kg(c[(a&p)>>2]|0,c[(d&p)>>2]|0);c[(d&p)>>2]=f;if(f){d=f+40|0;b[(d&o)>>1]=(b[(d&o)>>1]|0)+1<<16>>16}e=(Rt(a,e)|0)==0;return (e?f:0)|0}function Kr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))fa();m=n;a:do if((b|0)!=0?(f=c[(a&p)+12>>2]|0,(c[(b&p)>>2]|0)>0):0){g=a+8|0;h=a+4|0;k=0;l=b+8|0;while(1){if(!(c[(g&p)>>2]|0)){e=l+4|0;d=c[(e&p)>>2]|0;if((d|0)!=0?(dd(d,f)|0)!=0:0)break;mg(c[(c[(a&p)>>2]&p)>>2]|0,d);c[(e&p)>>2]=0;c[(l&p)>>2]=c[(h&p)>>2]}if(fr(a,c[(l&p)+20>>2]|0)|0){d=1;break a}if(Gr(a,c[(l&p)+44>>2]|0)|0){d=1;break a}k=k+1|0;if((k|0)>=(c[(b&p)>>2]|0)){d=0;break a}else l=l+72|0}b=c[(a&p)>>2]|0;l=c[(a&p)+20>>2]|0;c[(m&p)>>2]=c[(a&p)+16>>2];c[(m&p)+4>>2]=l;c[(m&p)+8>>2]=d;th(b,29936,m);d=1}else d=0;while(0);i=n;return d|0}function Lr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();e=f;g=c[(b&p)>>2]|0;if((((a[(g&n)+145>>0]|0)==0?(a[(b&n)+18>>0]|0)==0:0)?(c[(g&p)+24>>2]&2048|0)==0:0)?(Fc(d,25568,7)|0)==0:0){c[(e&p)>>2]=d;th(b,28440,e);b=1}else b=0;i=f;return b|0}function Mr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;if((i|0)>=(j|0))fa();w=x;do if(d){t=e&1;v=(f|0)!=0;if(v){g=c[(f&p)>>2]|0;r=32768}else{g=St(d,e)|0;g=mh(b,g,((g|0)<0)<<31>>31)|0;r=0}c[(w&p)>>2]=g;if(g){l=(t|0)==0;if(!l)if(!(c[(d&p)+12>>2]|0))q=(c[(d&p)+20>>2]|0)==0?16396:8220;else q=8220;else q=48;s=q&60;u=d+4|0;m=c[(u&p)>>2]|0;if((m&1024|0)==0?(h=c[(d&p)+8>>2]|0,(h|0)!=0):0){k=h;while(1)if(!(a[(k&n)>>0]|0))break;else k=k+1|0;o=(k-h&1073741823)+1|0}else o=0;if(l){if(!(m&16384))k=(m&8192|0)==0?48:28;else k=12;kw(g|0,d|0,k|0)|0;fw(g+k|0,0,48-k|0)|0}else kw(g|0,d|0,s|0)|0;m=g+4|0;h=q&24576|r|c[(m&p)>>2]&-122881;c[(m&p)>>2]=h;if(o){h=g+s|0;c[(g&p)+8>>2]=h;kw(h|0,c[(d&p)+8>>2]|0,o|0)|0;h=c[(m&p)>>2]|0}k=c[(u&p)>>2]|0;do if(!((h|k)&16384)){h=d+20|0;if(!(k&2048)){c[(g&p)+20>>2]=Pr(b,c[(h&p)>>2]|0,t)|0;break}else{c[(g&p)+20>>2]=gr(b,c[(h&p)>>2]|0,t)|0;break}}while(0);h=c[(m&p)>>2]|0;if(!(h&24576)){if(c[(u&p)>>2]&16384)break;c[(g&p)+12>>2]=Mr(b,c[(d&p)+12>>2]|0,0,0)|0;c[(g&p)+16>>2]=Mr(b,c[(d&p)+16>>2]|0,0,0)|0;break}t=Tt(d,e)|0;c[(w&p)>>2]=(c[(w&p)>>2]|0)+t;if(h&8192){c[(g&p)+12>>2]=Mr(b,c[(d&p)+12>>2]|0,1,w)|0;c[(g&p)+16>>2]=Mr(b,c[(d&p)+16>>2]|0,1,w)|0}if(v)c[(f&p)>>2]=c[(w&p)>>2]}}else g=0;while(0);i=x;return g|0}function Nr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;a:do if((b|0)!=0?(d=mh(a,8,0)|0,(d|0)!=0):0){g=b+4|0;c[(d&p)+4>>2]=c[(g&p)>>2];e=mh(a,c[(g&p)>>2]<<3,0)|0;c[(d&p)>>2]=e;if(!e){mg(a,d);d=0;break}if((c[(g&p)>>2]|0)>0){f=0;while(1){h=c[(b&p)>>2]|0;c[(e+(f<<3)&p)>>2]=kh(a,c[(h+(f<<3)&p)>>2]|0)|0;c[(e+(f<<3)&p)+4>>2]=c[(h+(f<<3)&p)+4>>2];f=f+1|0;if((f|0)>=(c[(g&p)>>2]|0))break a;e=c[(d&p)>>2]|0}}}else d=0;while(0);return d|0}function Or(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=e+4|0;g=(c[(f&p)>>2]|0)+40|0;b=mh(b,g,0)|0;if(b){fw(b|0,0,g|0)|0;g=b+40|0;kw(g|0,c[(e&p)>>2]|0,c[(f&p)>>2]|0)|0;c[(b&p)+12>>2]=g;c[(b&p)+16>>2]=c[(f&p)>>2];a[(b&n)>>0]=d}return b|0}function Pr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;do if((d|0)!=0?(f=mh(b,8,0)|0,(f|0)!=0):0){g=c[(d&p)>>2]|0;c[(f&p)>>2]=g;if(!(e&1)){h=c[(d&p)>>2]|0;g=1;while(1)if((g|0)<(h|0))g=g<<1;else break}g=mh(b,g*20|0,0)|0;c[(f&p)+4>>2]=g;if(!g){mg(b,f);f=0;break}if((c[(d&p)>>2]|0)>0){i=0;h=c[(d&p)+4>>2]|0;while(1){c[(g&p)>>2]=Mr(b,c[(h&p)>>2]|0,e,0)|0;c[(g&p)+4>>2]=kh(b,c[(h&p)+4>>2]|0)|0;c[(g&p)+8>>2]=kh(b,c[(h&p)+8>>2]|0)|0;a[(g&n)+12>>0]=a[(h&n)+12>>0]|0;j=g+13|0;k=a[(j&n)>>0]|0;a[(j&n)>>0]=k&-2;a[(j&n)>>0]=a[(h&n)+13>>0]&2|k&-4;c[(g&p)+16>>2]=c[(h&p)+16>>2];i=i+1|0;if((i|0)>=(c[(d&p)>>2]|0))break;else{g=g+20|0;h=h+20|0}}}}else f=0;while(0);return f|0}function Qr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))fa();k=o;l=c[(a&p)>>2]|0;f=c[(b&p)+20>>2]|0;a:do if(f){e=c[(l&p)+20>>2]|0;if((e|0)>0){d=c[(l&p)+16>>2]|0;h=0;while(1){g=h+1|0;if((c[(d+(h<<4)&p)+12>>2]|0)==(f|0)){g=h;break a}if((g|0)<(e|0))h=g;else break}}else g=0}else g=-1e6;while(0);d=bn((c[(b&p)+24>>2]|0)+8|0,c[(b&p)+4>>2]|0,k)|0;if(!d)f=0;else f=c[(d&p)+8>>2]|0;d=c[((c[(l&p)+16>>2]|0)+(g<<4)&p)>>2]|0;e=(g|0)==1;if((((Sq(a,e?14:16,c[(b&p)>>2]|0,c[(f&p)>>2]|0,d)|0)==0?(Sq(a,9,e?13184:13208,0,d)|0)==0:0)?(m=Oq(a)|0,(m|0)!=0):0)?(n=c[(a&p)+408>>2]|0,Ar(a,g),n=((n|0)==0?a:n)+328|0,c[(n&p)>>2]=c[(n&p)>>2]|1<>2]|0,0),xh(m,n+4|0,10720,-2),Dr(a,g),wh(m,61,0,0,0)|0,n=c[(b&p)>>2]|0,xh(m,wh(m,126,g,0,0)|0,n,0),n=a+72|0,(c[(n&p)>>2]|0)<3):0)c[(n&p)>>2]=3;i=o;return}function Rr(d,e,f,g,h,k,l){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+32|0;if((i|0)>=(j|0))fa();m=v;t=c[(d&p)>>2]|0;c[(m&p)>>2]=0;c[(m&p)+4>>2]=0;c[(m&p)+8>>2]=0;c[(m&p)+12>>2]=0;c[(m&p)+16>>2]=0;c[(m&p)+20>>2]=0;c[(m&p)+24>>2]=0;c[(m&p)+28>>2]=0;c[(m&p)>>2]=d;do if(h)if((a[(h&n)>>0]|0)!=27)if(!(ls(m,h)|0)){u=5;break}else{u=13;break}else{a[(h&n)>>0]=97;u=5;break}else u=5;while(0);a:do if((u|0)==5){do if(k)if((a[(k&n)>>0]|0)!=27)if(!(ls(m,k)|0))break;else{u=13;break a}else{a[(k&n)>>0]=97;break}while(0);do if(l)if((a[(l&n)>>0]|0)!=27)if(!(ls(m,l)|0))break;else{u=13;break a}else{a[(l&n)>>0]=97;break}while(0);if(g){if((a[(g&n)>>0]|0)==97)g=c[(g&p)+8>>2]|0;else g=0;if(Sq(d,e,g,0,0)|0)break}s=Oq(d)|0;m=d+60|0;g=c[(m&p)>>2]|0;q=d+56|0;r=c[(q&p)>>2]|0;if((r|0)<4){r=d+72|0;g=c[(r&p)>>2]|0;c[(r&p)>>2]=g+4;g=g+1|0}else{c[(m&p)>>2]=g+4;c[(q&p)>>2]=r+-4}Rq(d,h,g);Rq(d,k,g+1|0);Rq(d,l,g+2|0);if(s){g=g+3|0;wh(s,1,0,g-(b[(f&o)>>1]|0)|0,g)|0;g=c[(s&p)+4>>2]|0;if(g)a[(g+(((c[(s&p)+32>>2]|0)+-1|0)*20|0)&n)+3>>0]=b[(f&o)>>1];xh(s,-1,f,-5);wh(s,144,(e|0)==24&1,0,0)|0}}while(0);if((u|0)==13){f=d+64|0;c[(f&p)>>2]=(c[(f&p)>>2]|0)+1}Gk(t,h);Gk(t,k);Gk(t,l);i=v;return}function Sr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();l=m;g=m+4|0;h=c[(b&p)>>2]|0;a:do if(!(Gn(b)|0)){if(!d){Ut(b,0);break}if(!((e|0)!=0?(c[(e&p)>>2]|0)!=0:0))f=6;do if((f|0)==6){f=Wq(c[(b&p)>>2]|0,d)|0;if(!f)break a;if(!(Yn(h,a[(h&n)+62>>0]|0,f,0)|0)){mg(h,f);break}else{Ut(b,f);mg(h,f);break a}}while(0);d=er(b,d,e,g)|0;if((d|0)>=0?(k=Wq(h,c[(g&p)>>2]|0)|0,(k|0)!=0):0){e=c[((c[(h&p)+16>>2]|0)+(d<<4)&p)>>2]|0;f=_h(h,k,e)|0;if(f){Vt(b,f,0);mg(h,k);break}e=bq(h,k,e)|0;mg(h,k);if(!e){th(b,28872,l);break}else{f=c[(b&p)+408>>2]|0;Ar(b,d);f=((f|0)==0?b:f)+328|0;c[(f&p)>>2]=c[(f&p)>>2]|1<=(j|0))fa();f=h;g=c[(a&p)>>2]|0;if(!(Gn(a)|0)){do if(!b){b=g+20|0;e=c[(b&p)>>2]|0;if((e|0)>0){d=0;do{if((d|0)!=1){Wt(a,d);e=c[(b&p)>>2]|0}d=d+1|0}while((d|0)<(e|0))}}else{if(c[(d&p)+4>>2]|0){e=er(a,b,d,f)|0;if((e|0)<=-1)break;e=c[((c[(g&p)+16>>2]|0)+(e<<4)&p)>>2]|0;b=Wq(g,c[(f&p)>>2]|0)|0;if(!b)break;d=bq(g,b,e)|0;if(!d){e=sh(a,0,b,e)|0;if(e)Xt(a,e,0)}else Xt(a,c[(d&p)+12>>2]|0,d);mg(g,b);break}d=Wq(g,b)|0;e=Vh(g,d)|0;mg(g,d);if((e|0)>-1){Wt(a,e);break}d=Wq(g,b)|0;if(d){e=bq(g,d,0)|0;if(!e){e=sh(a,0,d,0)|0;if(e)Xt(a,e,0)}else Xt(a,c[(e&p)+12>>2]|0,e);mg(g,d)}}while(0);e=Oq(a)|0;if(e)wh(e,144,0,0,0)|0}i=h;return}function Ur(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[(d&p)>>2]|0;if(!f)e=d+4|0;else{i=c[(a&p)>>2]|0;g=c[(i&p)+20>>2]|0;i=c[(i&p)+16>>2]|0;a:do if((g|0)>0){h=0;while(1){e=h+1|0;if((c[(i+(h<<4)&p)+12>>2]|0)==(f|0)){e=h;break a}if((e|0)<(g|0))h=e;else break}}else e=0;while(0);e=i+(e<<4)|0}return sh(a,b,c[(d&p)+8>>2]|0,c[(e&p)>>2]|0)|0}function Vr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))fa();f=g;if(d){e=d;while(1)if(!(a[(e&n)>>0]|0))break;else e=e+1|0;if((e-d&1073741823)>>>0>6?(Fc(d,25568,7)|0)==0:0){c[(f&p)>>2]=d;th(b,25576,f);e=1}else e=0}else e=0;i=g;return e|0}function Wr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))fa();e=f;if(!b){c[(e&p)>>2]=d;a=uh(a,25992,e)|0}else{c[(e&p)>>2]=b;c[(e&p)+4>>2]=d;e=uh(a,26e3,e)|0;mg(a,b);a=e}i=f;return a|0}function Xr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))fa();g=h;e=c[(a&p)>>2]|0;f=c[((c[(e&p)+16>>2]|0)&p)+28>>2]|0;if((c[(b&p)+68>>2]|0)!=(f|0)?(d=As(a,b)|0,(d|0)!=0):0){b=d;d=0;do{if((c[(b&p)+20>>2]|0)==(f|0))d=Wr(e,d,c[(b&p)>>2]|0)|0;b=c[(b&p)+32>>2]|0}while((b|0)!=0);if(d){b=c[(a&p)>>2]|0;c[(g&p)>>2]=d;b=uh(b,25968,g)|0;mg(c[(a&p)>>2]|0,d);d=b}else d=0}else d=0;i=h;return d|0}function Yr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))fa();n=r;o=Oq(a)|0;if(o){e=c[(a&p)>>2]|0;h=c[(b&p)+68>>2]|0;a:do if(h){k=c[(e&p)+20>>2]|0;if((k|0)>0){f=c[(e&p)+16>>2]|0;g=0;while(1){e=g+1|0;if((c[(f+(g<<4)&p)+12>>2]|0)==(h|0))break a;if((e|0)<(k|0))g=e;else{g=e;break}}}else g=0}else g=-1e6;while(0);e=As(a,b)|0;if(e)do{f=c[(a&p)>>2]|0;l=c[(e&p)+20>>2]|0;b:do if(l){m=c[(f&p)+20>>2]|0;if((m|0)>0){k=c[(f&p)+16>>2]|0;h=0;while(1){f=h+1|0;if((c[(k+(h<<4)&p)+12>>2]|0)==(l|0)){f=h;break b}if((f|0)<(m|0))h=f;else break}}else f=0}else f=-1e6;while(0);m=c[(e&p)>>2]|0;xh(o,wh(o,126,f,0,0)|0,m,0);e=c[(e&p)+32>>2]|0}while((e|0)!=0);e=c[(b&p)>>2]|0;xh(o,wh(o,124,g,0,0)|0,e,0);e=c[(a&p)>>2]|0;c[(n&p)>>2]=d;e=uh(e,25952,n)|0;if((e|0)!=0?(Ir(o,g,e),q=Xr(a,b)|0,(q|0)!=0):0)Ir(o,1,q)}i=r;return} -function gh(f){f=f|0;var g=0,l=0,m=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0.0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ea=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,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,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,kc=0,nc=0,oc=0,qc=0,sc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,ed=0,fd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0;oe=i;i=i+1040|0;if((i|0)>=(j|0))fa();ke=oe+400|0;Tc=oe+792|0;id=oe+392|0;ad=oe+788|0;Sd=oe+320|0;md=oe+784|0;pd=oe+780|0;qd=oe+280|0;Nd=oe+680|0;$c=oe+240|0;Qd=oe+200|0;_c=oe+676|0;Xc=oe+672|0;Od=oe+160|0;Uc=oe+644|0;td=oe+152|0;Jd=oe+112|0;kd=oe+640|0;Ld=oe+636|0;Yc=oe+632|0;ud=oe+628|0;Ad=oe+624|0;wd=oe+604|0;Bd=oe+600|0;od=oe+596|0;xd=oe+576|0;Sc=oe+840|0;Cd=oe+572|0;Pd=oe+104|0;Dd=oe+568|0;ed=oe+564|0;fd=oe+96|0;Rd=oe+88|0;Ed=oe+560|0;Fd=oe+556|0;Gd=oe+552|0;yd=oe+532|0;zd=oe+512|0;jd=oe+508|0;vd=oe+504|0;Zc=oe+488|0;Md=oe+48|0;Vc=oe+456|0;Rc=oe+444|0;Kd=oe+8|0;sd=oe+440|0;Id=oe+412|0;Hd=oe;zc=f+4|0;s=c[(zc&p)>>2]|0;le=c[(f&p)>>2]|0;Jc=a[(le&n)+62>>0]|0;Nc=f+8|0;z=c[(Nc&p)>>2]|0;ne=le+32|0;l=ne;m=c[(l&p)>>2]|0;l=c[(l&p)+4>>2]|0;me=f+80|0;a:do if((c[(me&p)>>2]|0)==7){y=le+65|0;z=f+44|0;r=m;g=0;t=0;m=0;ie=1317}else{c[(me&p)>>2]=0;de=f+136|0;c[(de&p)>>2]=0;c[(de&p)+4>>2]=0;de=f+20|0;c[(de&p)>>2]=0;c[(le&p)+452>>2]=0;Cc=le+240|0;b:do if(!(c[(Cc&p)>>2]|0)){be=le+292|0;if(c[(be&p)>>2]|0){r=c[(f&p)+124>>2]|0;g=le+300|0;y=c[(g&p)>>2]|0;if(!r)yc=g;else{yc=g;y=(r>>>0)%(y>>>0)|0}}else{yc=le+300|0;y=0}he=f+76|0;ge=le+65|0;Zd=le+296|0;sb=f+176|0;tb=f+184|0;ub=f+92|0;vb=le+80|0;wb=le+84|0;xb=Jc&255;yb=Jc<<24>>24==1;zb=le+88|0;Ab=f+60|0;_d=f+144|0;fe=f+86|0;je=f+44|0;Bb=f+12|0;Cb=Uc+4|0;Db=Uc+16|0;Eb=Uc+12|0;Fb=Uc+25|0;Gb=Uc+20|0;Hb=f+200|0;Ib=f+56|0;$d=f+72|0;Jb=Jd+16|0;Kb=Jd+8|0;Lb=Jd+24|0;Mb=f+87|0;ae=le+156|0;Nb=le+500|0;Ob=le+496|0;ee=le+63|0;Pb=le+488|0;Qb=le+504|0;Rb=le+512|0;Sb=le+70|0;Tb=le+24|0;Ub=le+20|0;Xd=le+16|0;Vb=le+4|0;Yd=f+88|0;Wb=f+104|0;Xb=f+152|0;Yb=f+160|0;Zb=le+152|0;_b=le+64|0;$b=wd+4|0;cc=wd+6|0;dc=wd+8|0;ec=xd+4|0;fc=xd+8|0;gc=le+212|0;hc=le+208|0;ic=f+116|0;kc=yd+4|0;nc=yd+6|0;oc=yd+8|0;qc=$c+8|0;sc=$c+32|0;uc=$c+24|0;vc=$c+16|0;wc=$c+12|0;xc=zd+4|0;Y=zd+6|0;Z=zd+8|0;_=qd+8|0;$=qd+32|0;aa=qd+24|0;ea=qd+12|0;ga=qd+16|0;ha=le+164|0;ia=Zc+8|0;ja=Zc+4|0;ka=le+145|0;la=Zc+12|0;ma=Sd+4|0;na=Sd+12|0;oa=Sd+16|0;pa=Sd+20|0;qa=Sd+24|0;ra=Sd+28|0;sa=Sd+8|0;ta=Sd+40|0;ua=Sd+44|0;va=Sd+48|0;wa=Sd+52|0;xa=Sd+56|0;ya=Sd+60|0;za=Sd+64|0;Aa=Sd+65|0;Ba=le+128|0;Ca=f+28|0;Da=f+36|0;Ea=f+32|0;Fa=f+196|0;Ga=Vc+4|0;Ha=Vc+8|0;Ia=Md+8|0;Ja=Md+32|0;Ka=Md+24|0;La=Vc+20|0;Ma=Vc+12|0;Na=Vc+16|0;Oa=Vc+24|0;Pa=Rc+8|0;Qa=Rc+4|0;Ra=le+148|0;Sa=le+176|0;Ta=le+72|0;Ua=le+67|0;Va=Tc+20|0;Wa=Tc+24|0;Xa=Tc+4|0;Ya=Tc+16|0;Za=le+304|0;_a=le+328|0;$a=Kd+32|0;ab=Kd+8|0;bb=Kd+24|0;cb=le+308|0;db=Id+20|0;eb=le+69|0;ce=f+168|0;fb=qd+4|0;gb=qd+8|0;hb=qd+12|0;ib=qd+16|0;jb=qd+20|0;kb=qd+24|0;lb=qd+25|0;mb=le+180|0;nb=Od+32|0;ob=Od+8|0;pb=Od+12|0;qb=Od+16|0;rb=Od+24|0;W=0;X=0;g=0;u=0;t=c[(he&p)>>2]|0;x=0;c:while(1){r=m;d:while(1){if(a[(ge&n)>>0]|0){y=ge;z=je;m=x;ie=1317;break a}m=g+1|0;if(!(a[(s+(t*20|0)&n)+2>>0]&2))L=u;else{u=c[(s+(t*20|0)&p)+8>>2]|0;g=z+(u*40|0)|0;u=z+(u*40|0)+8|0;if(b[(u&o)>>1]&9312)vg(g);b[(u&o)>>1]=4;L=g}C=s+(t*20|0)|0;J=a[(C&n)>>0]|0;u=J&255;e:do switch(u|0){case 17:{g=m;m=r;u=L;ie=22;break d}case 18:{g=m;m=r;u=L;ie=23;break d}case 20:{g=m;m=r;ie=24;break d}case 21:{g=m;m=r;u=L;ie=25;break d}case 22:{g=m;m=r;u=L;ie=26;break d}case 23:{g=m;m=r;u=L;r=t;ie=27;break d}case 29:{g=m;m=r;r=t;ie=65;break d}case 30:{g=m;m=r;u=L;r=t;ie=66;break d}case 28:{g=m;m=r;u=L;r=t;ie=60;break d}case 32:{g=m;m=r;r=t;ie=72;break d}case 24:{g=m;m=r;u=L;r=t;ie=28;break d}case 25:{g=m;m=r;u=L;r=t;ie=44;break d}case 26:{g=m;m=r;u=L;r=t;ie=45;break d}case 133:{g=m;m=r;u=L;r=t;ie=46;break d}case 97:{a[(C&n)>>0]=27;C=s+(t*20|0)+16|0;v=c[(C&p)>>2]|0;if(!v)g=0;else{g=v;while(1)if(!(a[(g&n)>>0]|0))break;else g=g+1|0;g=g-v&1073741823}w=s+(t*20|0)+4|0;c[(w&p)>>2]=g;if(yb)u=0;else{u=Xg(L,v,-1,1,0)|0;if((u|0)==18){g=m;m=r;u=x;ie=1316;break c}if(Yl(L,xb)|0){y=ge;z=je;g=m;m=x;ie=1317;break a}c[(L&p)+24>>2]=0;g=L+8|0;b[(g&o)>>1]=e[(g&o)>>1]|2048;g=s+(t*20|0)+1|0;if((a[(g&n)>>0]|0)==-1)mg(le,c[(C&p)>>2]|0);a[(g&n)>>0]=-1;v=c[(L&p)+16>>2]|0;c[(C&p)>>2]=v;g=c[(L&p)+12>>2]|0;c[(w&p)>>2]=g}if((g|0)>(c[(zb&p)>>2]|0)){g=m;m=r;u=x;ie=1316;break c}else ie=57;break}case 31:{g=m;m=r;u=L;r=t;ie=67;break d}case 34:{g=m;m=r;r=t;ie=79;break d}case 35:{g=m;m=r;u=x;ie=80;break c}case 33:{g=m;m=r;ie=74;break d}case 94:{g=m;m=r;ie=94;break d}case 93:case 92:case 91:case 90:case 89:{g=m;P=C;m=r;r=t;ie=112;break d}case 27:{v=c[(s+(t*20|0)&p)+16>>2]|0;g=c[(s+(t*20|0)&p)+4>>2]|0;u=0;ie=57;break}case 16:{t=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;u=0;ie=19;break}case 36:{g=m;m=r;J=L;r=t;ie=166;break d}case 1:{V=a[(s+(t*20|0)&n)+3>>0]|0;C=V&255;A=c[(Bb&p)>>2]|0;g=z+((c[(s+(t*20|0)&p)+12>>2]|0)*40|0)|0;c[(Uc&p)>>2]=g;if(V<<24>>24){g=0;u=z+((c[(s+(t*20|0)&p)+8>>2]|0)*40|0)|0;while(1){c[(A+(g<<2)&p)>>2]=u;if((b[(u&o)+8>>1]&4096)!=0?(Vl(u)|0)!=0:0){y=ge;z=je;g=m;m=x;ie=1317;break a}g=g+1|0;if((g|0)>=(C|0))break;else u=u+40|0}g=c[(Uc&p)>>2]|0}V=c[(s+(t*20|0)&p)+16>>2]|0;c[(Cb&p)>>2]=V;c[(Db&p)>>2]=t;c[(Eb&p)>>2]=f;U=g+8|0;b[(U&o)>>1]=e[(U&o)>>1]&48640|1;a[(Fb&n)>>0]=0;U=ne;c[(U&p)>>2]=r;c[(U&p)+4>>2]=l;mc[c[(V&p)+12>>2]&63](Uc,C,A);l=ne;r=c[(l&p)>>2]|0;l=c[(l&p)+4>>2]|0;if(!(a[(Fb&n)>>0]|0))g=0;else{if(!(c[(Gb&p)>>2]|0))g=0;else{c[(ke&p)>>2]=Sg(c[(Uc&p)>>2]|0,1)|0;dh(je,le,10344,ke);g=c[(Gb&p)>>2]|0}em(f,t,c[(s+(t*20|0)&p)+4>>2]|0)}Yl(c[(Uc&p)>>2]|0,xb)|0;w=c[(Uc&p)>>2]|0;v=e[(w&o)+8>>1]|0;if(v&18){u=c[(w&p)+12>>2]|0;if(v&16384)u=(c[(w&p)>>2]|0)+u|0;if((u|0)>(c[((c[(w&p)+32>>2]|0)&p)+88>>2]|0)){g=m;m=r;u=x;ie=1316;break c}else{C=L;T=t;u=g}}else{C=L;T=t;u=g}break}case 88:case 87:case 86:case 85:{g=m;H=C;m=r;r=t;ie=184;break d}case 39:{g=m;m=r;J=L;r=t;ie=208;break d}case 37:{g=m;m=r;u=L;r=t;ie=202;break d}case 38:{g=m;m=r;J=L;r=t;ie=203;break d}case 83:case 80:case 81:case 82:case 78:case 79:{g=m;I=J;m=r;u=L;ie=213;break d}case 40:{V=c[(s+(t*20|0)&p)+4>>2]|0;g=z+(V*40|0)|0;if(!(b[(z+(V*40|0)&o)+8>>1]&16384))u=0;else u=Rg(g)|0;gm(g,c[(s+(t*20|0)&p)+8>>2]&255,Jc);C=L;T=t;break}case 41:{g=m;m=r;u=L;r=t;ie=248;break d}case 42:{g=m;m=r;u=L;r=t;ie=249;break d}case 43:{g=m;m=r;u=L;ie=256;break d}case 71:case 72:{g=m;m=r;r=t;ie=261;break d}case 76:{g=m;m=r;u=L;r=t;ie=286;break d}case 19:{g=m;m=r;r=t;ie=268;break d}case 96:{g=m;m=r;r=t;ie=273;break d}case 44:{g=m;m=r;u=L;r=t;ie=278;break d}case 46:case 45:{g=m;m=r;u=L;r=t;ie=281;break d}case 77:{g=m;m=r;u=L;r=t;ie=288;break d}case 47:{g=m;m=r;u=L;ie=290;break d}case 48:{g=m;m=r;u=L;r=t;ie=368;break d}case 49:{g=m;m=r;ie=371;break d}case 50:{E=c[(c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]&p)>>2]|0;f:do if(c[(E&p)+60>>2]|0){g=qm(E)|0;if(!g){K=E+76|0;H=E+44|0;F=E+72|0;v=0;u=0;g:while(1){C=b[(K&o)>>1]|0;J=c[(E+(C<<16>>16<<2)&p)+120>>2]|0;if(!(a[(J&n)+5>>0]|0)){if(!(a[(J&n)+2>>0]|0)){v=jw(e[(J&o)+18>>1]|0,0,v|0,u|0)|0;u=G}}else{v=jw(e[(J&o)+18>>1]|0,0,v|0,u|0)|0;u=G;while(1){if(!(C<<16>>16))break g;if(J){Bg(c[(J&p)+68>>2]|0);C=b[(K&o)>>1]|0}C=C+-1<<16>>16;b[(K&o)>>1]=C;b[(H&o)>>1]=0;a[(F&n)>>0]=d[(F&n)>>0]&249;J=C<<16>>16;A=E+(J<<1)+78|0;I=b[(A&o)>>1]|0;J=c[(E+(J<<2)&p)+120>>2]|0;if((I&65535)<(e[(J&o)+18>>1]|0)){C=I;break}}b[(A&o)>>1]=C+1<<16>>16;J=b[(K&o)>>1]|0;C=J;J=c[(E+(J<<16>>16<<2)&p)+120>>2]|0}C=b[(E+(C<<16>>16<<1)&o)+78>>1]|0;A=c[(J&p)+56>>2]|0;if(C<<16>>16==(b[(J&o)+18>>1]|0)){g=d[(J&n)+6>>0]|0;g=rm(E,d[(A+g&n)+9>>0]<<16|d[(A+g&n)+8>>0]<<24|d[(A+g&n)+10>>0]<<8|d[(A+g&n)+11>>0])|0}else{g=(C&65535)<<1;V=c[(J&p)+64>>2]|0;g=(d[(V+g&n)>>0]<<8|d[(V+(g|1)&n)>>0])&e[(J&o)+20>>1];g=rm(E,d[(A+g&n)+1>>0]<<16|d[(A+g&n)>>0]<<24|d[(A+g&n)+2>>0]<<8|d[(A+g&n)+3>>0])|0}if(g){v=0;u=0;break f}}g=qm(E)|0}else{v=0;u=0}}else{g=0;v=0;u=0}while(0);C=L;c[(C&p)>>2]=v;c[(C&p)+4>>2]=u;C=L;T=t;u=g;break}case 2:{O=c[(s+(t*20|0)&p)+4>>2]|0;v=c[(s+(t*20|0)&p)+16>>2]|0;if(!O){g=m;m=r;r=t;ie=446;break d}g=c[(Pb&p)>>2]|0;if(!g){s=v;g=m;m=r;u=x;ie=460;break c}else u=0;while(1){if(!(dd(c[(g&p)>>2]|0,v)|0)){M=g;break}g=c[(g&p)+24>>2]|0;if(!g){s=v;g=m;m=r;u=x;ie=460;break c}else u=u+1|0}H=(O|0)==1;if((c[(ae&p)>>2]|0)>0&H){g=m;m=r;u=x;ie=462;break c}F=M+24|0;if(!(c[(F&p)>>2]|0)){A=(a[(Sb&n)>>0]|0)!=0;if(A&H){g=tm(f,1)|0;if(g)break a;a[(ee&n)>>0]=1;if((Rl(f)|0)==5){g=t;ie=467;break c}a[(Sb&n)>>0]=0;A=1;K=u;u=c[(me&p)>>2]|0}else ie=469}else{A=0;ie=469}if((ie|0)==469){ie=0;K=(c[(Ob&p)>>2]|0)-u+-1|0;if((O|0)==2){C=(c[(Tb&p)>>2]|0)>>>1&1;if((c[(Ub&p)>>2]|0)>0){J=C^1;I=0;while(1){u=Il(c[((c[(Xd&p)>>2]|0)+(I<<4)&p)+4>>2]|0,516,J)|0;I=I+1|0;if(u){g=m;m=r;ie=1318;break c}g=c[(Ub&p)>>2]|0;if((I|0)>=(g|0)){ie=475;break}}}}else{g=c[(Ub&p)>>2]|0;C=0;ie=475}if((ie|0)==475){ie=0;if((g|0)>0){E=0;do{u=um(c[((c[(Xd&p)>>2]|0)+(E<<4)&p)+4>>2]|0,O,K)|0;E=E+1|0;if(u){g=m;m=r;ie=1318;break c}}while((E|0)<(c[(Ub&p)>>2]|0))}}if(!C)u=0;else{C=c[(Vb&p)>>2]|0;if(C)do{V=C+88|0;b[(V&o)>>1]=b[(V&o)>>1]|8;C=c[(C&p)+52>>2]|0}while((C|0)!=0);Eg(le);c[(Tb&p)>>2]=c[(Tb&p)>>2]|2;u=0}}C=c[(Pb&p)>>2]|0;if((C|0)!=(M|0))do{c[(Pb&p)>>2]=c[(C&p)+24>>2];mg(le,C);c[(Ob&p)>>2]=(c[(Ob&p)>>2]|0)+-1;C=c[(Pb&p)>>2]|0}while((C|0)!=(M|0));if(H){c[(Pb&p)>>2]=c[(F&p)>>2];mg(le,M);if(A){C=L;T=t;break e}else{g=m;C=O;m=r;A=K;E=L;r=t;ie=486;break d}}else{V=M+8|0;U=c[(V&p)+4>>2]|0;T=Qb;c[(T&p)>>2]=c[(V&p)>>2];c[(T&p)+4>>2]=U;T=M+16|0;U=c[(T&p)+4>>2]|0;V=Rb;c[(V&p)>>2]=c[(T&p)>>2];c[(V&p)+4>>2]=U;if(A){C=L;T=t;break e}else{C=O;g=m;m=r;A=K;E=L;r=t;ie=488;break d}}}case 3:{u=x;ie=489;break c}case 4:{v=s+(t*20|0)+8|0;g=c[(v&p)>>2]|0;if((g|0)!=0?(c[(Tb&p)>>2]&33554432|0)!=0:0){g=m;m=r;u=8;ie=1318;break c}I=s+(t*20|0)+4|0;J=c[((c[(Xd&p)>>2]|0)+(c[(I&p)>>2]<<4)&p)+4>>2]|0;if(!J){v=0;u=0;g=0}else{u=yg(J,g)|0;if((u|0)==5){g=t;ie=508;break c}else if(u){g=m;m=r;ie=1318;break c}do if((c[(v&p)>>2]|0)!=0?(b[(Yd&o)>>1]&32)!=0:0){if((a[(ee&n)>>0]|0)!=0?(c[(Zb&p)>>2]|0)<=1:0){g=0;break}g=c[(Wb&p)>>2]|0;if(!g){g=(c[(Nb&p)>>2]|0)+1|0;c[(Nb&p)>>2]=g;g=(c[(Ob&p)>>2]|0)+g|0;c[(Wb&p)>>2]=g}g=sm(le,0,g+-1|0)|0;if(!g){g=c[(Wb&p)>>2]|0;V=c[(J&p)+4>>2]|0;c[(V&p)+4>>2]=c[(J&p)>>2];g=hl(c[(V&p)>>2]|0,g)|0}V=Qb;U=c[(V&p)+4>>2]|0;T=Xb;c[(T&p)>>2]=c[(V&p)>>2];c[(T&p)+4>>2]=U;T=Rb;U=c[(T&p)+4>>2]|0;V=Yb;c[(V&p)>>2]=c[(T&p)>>2];c[(V&p)+4>>2]=U}else g=0;while(0);v=c[(J&p)+4>>2]|0;c[(v&p)+4>>2]=c[(J&p)>>2];v=c[((c[(v&p)+12>>2]|0)&p)+56>>2]|0;v=d[(v&n)+41>>0]<<16|d[(v&n)+40>>0]<<24|d[(v&n)+42>>0]<<8|d[(v&n)+43>>0];u=c[((c[((c[(Xd&p)>>2]|0)+(c[(I&p)>>2]<<4)&p)+12>>2]|0)&p)+4>>2]|0}if(a[(s+(t*20|0)&n)+3>>0]|0){if((v|0)!=(c[(s+(t*20|0)&p)+12>>2]|0)){g=m;s=I;m=r;u=x;ie=522;break c}if((u|0)!=(c[(s+(t*20|0)&p)+16>>2]|0)){g=m;s=I;m=r;u=x;ie=522;break c}else{C=L;T=t;u=g}}else{C=L;T=t;u=g}break}case 53:{g=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;if((g|0)!=0?(c[(g&p)+28>>2]|0)==(c[(s+(t*20|0)&p)+8>>2]|0):0){v=s+(t*20|0)+3|0;u=0;ie=548}else ie=536;break}case 51:{g=m;m=r;u=L;r=t;ie=525;break d}case 52:{A=s+(t*20|0)+4|0;g=c[(A&p)>>2]|0;v=c[(Xd&p)>>2]|0;C=c[(s+(t*20|0)&p)+12>>2]|0;w=z+(C*40|0)|0;u=Vg(w)|0;V=w;c[(V&p)>>2]=u;c[(V&p)+4>>2]=G;C=z+(C*40|0)+8|0;b[(C&o)>>1]=e[(C&o)>>1]&48640|4;C=s+(t*20|0)+8|0;u=Dg(c[(v+(g<<4)&p)+4>>2]|0,c[(C&p)>>2]|0,u)|0;C=c[(C&p)>>2]|0;if((C|0)==1){c[(c[(v+(g<<4)&p)+12>>2]&p)>>2]=c[(w&p)>>2];c[(Tb&p)>>2]=c[(Tb&p)>>2]|2}else if((C|0)==2)a[((c[(v+(g<<4)&p)+12>>2]|0)&n)+76>>0]=c[(w&p)>>2];if((c[(A&p)>>2]|0)==1){g=c[(Vb&p)>>2]|0;if(g)do{V=g+88|0;b[(V&o)>>1]=b[(V&o)>>1]|8;g=c[(g&p)+52>>2]|0}while((g|0)!=0);b[(Yd&o)>>1]=b[(Yd&o)>>1]&-9;C=L;T=t}else{C=L;T=t}break}case 55:case 54:{ie=536;break}case 57:case 56:{g=xm(f,c[(s+(t*20|0)&p)+4>>2]|0,c[(s+(t*20|0)&p)+8>>2]|0,-1,1)|0;if(!g){y=ge;z=je;g=m;m=x;ie=1317;break a}a[(g&n)+25>>0]=1;J=g+27|0;a[(J&n)>>0]=a[(J&n)>>0]|1;v=g+4|0;I=s+(t*20|0)+3|0;u=zm(c[(le&p)>>2]|0,0,le,v,d[(I&n)>>0]|5,1054)|0;do if(!u){u=yg(c[(v&p)>>2]|0,1)|0;if(!u){A=c[(s+(t*20|0)&p)+16>>2]|0;C=c[(v&p)>>2]|0;if(!A){u=ym(C,1,1,0,c[(g&p)>>2]|0)|0;a[(J&n)>>0]=a[(J&n)>>0]|4;break}u=Am(C,ud,d[(I&n)>>0]|2)|0;if(!u){c[(g&p)+8>>2]=A;u=ym(c[(v&p)>>2]|0,c[(ud&p)>>2]|0,1,A,c[(g&p)>>2]|0)|0}a[(J&n)>>0]=a[(J&n)>>0]&-5}}while(0);a[(J&n)>>0]=((a[(I&n)>>0]|0)!=8&1)<<3&255|a[(J&n)>>0]&-9;C=L;T=t;break}case 58:{g=m;m=r;ie=558;break d}case 60:{g=m;m=r;u=L;ie=568;break d}case 61:{g=m;m=r;u=L;r=t;ie=570;break d}case 59:{g=m;m=r;u=L;r=t;ie=566;break d}case 65:case 64:case 63:case 62:{g=m;K=u;m=r;r=t;ie=571;break d}case 66:{g=m;m=r;u=L;r=t;ie=596;break d}case 69:case 68:case 67:{g=m;H=C;m=r;u=L;ie=597;break d}case 73:{g=m;m=r;u=L;r=t;ie=624;break d}case 70:{V=c[(s+(t*20|0)&p)+12>>2]|0;g=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;u=c[(g&p)>>2]|0;c[(Cd&p)>>2]=0;V=z+(V*40|0)|0;U=c[(V&p)>>2]|0;V=c[(V&p)+4>>2]|0;u=Cm(u,0,U,V,0,Cd)|0;v=g+48|0;c[(v&p)>>2]=U;c[(v&p)+4>>2]=V;a[(g&n)+25>>0]=0;c[(g&p)+60>>2]=0;a[(g&n)+26>>0]=0;v=c[(Cd&p)>>2]|0;if(v)t=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;c[(g&p)+12>>2]=v;C=L;T=t;break}case 74:{H=Pd;c[(H&p)>>2]=0;c[(H&p)+4>>2]=0;c[(Dd&p)>>2]=0;H=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;g=c[(H&p)>>2]|0;if(!g){u=0;v=0;g=0}else{K=H+27|0;do if(!(a[(K&n)>>0]&2)){u=Hm(g,Dd)|0;if(u){g=m;m=r;ie=1318;break c}if(c[(Dd&p)>>2]|0){V=Pd;c[(V&p)>>2]=1;c[(V&p)+4>>2]=0;break}km(c[(H&p)>>2]|0,Pd);u=Pd;g=c[(u&p)>>2]|0;u=c[(u&p)+4>>2]|0;if((g|0)==-1&(u|0)==2147483647){a[(K&n)>>0]=a[(K&n)>>0]|2;break}else{U=jw(g|0,u|0,1,0)|0;V=Pd;c[(V&p)>>2]=U;c[(V&p)+4>>2]=G;break}}while(0);J=c[(s+(t*20|0)&p)+12>>2]|0;if(J){g=c[(sb&p)>>2]|0;if(!g)C=z;else{while(1){u=c[(g&p)+4>>2]|0;if(!u)break;else g=u}C=c[(g&p)+16>>2]|0}I=C+(J*40|0)|0;A=Vg(I)|0;g=G;V=I;c[(V&p)>>2]=A;c[(V&p)+4>>2]=g;V=C+(J*40|0)+8|0;b[(V&o)>>1]=e[(V&o)>>1]&48640|4;if((A|0)==-1&(g|0)==2147483647){g=m;m=r;u=13;ie=1318;break c}if(a[(K&n)>>0]&2){g=m;m=r;u=13;ie=1318;break c}J=Pd;u=c[(J&p)>>2]|0;J=c[(J&p)+4>>2]|0;C=jw(A|0,g|0,1,0)|0;g=G;if((J|0)<(g|0)|(J|0)==(g|0)&u>>>0>>0){V=Pd;c[(V&p)>>2]=C;c[(V&p)+4>>2]=g}else{C=u;g=J}V=I;c[(V&p)>>2]=C;c[(V&p)+4>>2]=g}h:do if(!(a[(K&n)>>0]&2))g=0;else{u=0;while(1){cd(8,Pd);V=Pd;V=jw(c[(V&p)>>2]|0,c[(V&p)+4>>2]&1073741823|0,1,0)|0;g=G;U=Pd;c[(U&p)>>2]=V;c[(U&p)+4>>2]=g;g=Cm(c[(H&p)>>2]|0,0,V,g,0,Dd)|0;if(c[(Dd&p)>>2]|g)break h;u=u+1|0;if((u|0)>=100){g=m;m=r;u=13;ie=1318;break c}}}while(0);a[(H&n)+26>>0]=0;c[(H&p)+60>>2]=0;v=Pd;u=c[(v&p)>>2]|0;v=c[(v&p)+4>>2]|0}C=L;c[(C&p)>>2]=u;c[(C&p)+4>>2]=v;C=L;T=t;u=g;break}case 84:case 75:{g=m;C=J;m=r;u=L;r=t;ie=647;break d}case 95:{g=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;u=Jm(c[(g&p)>>2]|0)|0;c[(g&p)+60>>2]=0;if((((u|0)==0?(Gc=c[(gc&p)>>2]|0,(Gc|0)!=0):0)?(Hc=c[(s+(t*20|0)&p)+16>>2]|0,(Hc|0)!=0):0)?(a[(g&n)+27>>0]&4)!=0:0){V=g+48|0;bc[Gc&1](c[(hc&p)>>2]|0,9,c[((c[(Xd&p)>>2]|0)+(a[(g&n)+24>>0]<<4)&p)>>2]|0,Hc,c[(V&p)>>2]|0,c[(V&p)+4>>2]|0)}if(!(c[(s+(t*20|0)&p)+8>>2]&1)){C=L;T=t}else{c[(ub&p)>>2]=(c[(ub&p)>>2]|0)+1;C=L;T=t}break}case 98:{g=m;m=r;u=L;r=t;ie=671;break d}case 99:{g=m;m=r;u=L;r=t;ie=672;break d}case 100:{v=c[(s+(t*20|0)&p)+8>>2]|0;C=z+(v*40|0)|0;g=c[((c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0)&p)+56>>2]|0;if(!(a[(g&n)+56>>0]|0)){u=c[(g&p)+36>>2]|0;g=u;u=u+8|0}else{V=c[(g&p)+20>>2]|0;u=c[((c[(V&p)+8>>2]|0)&p)+4>>2]|0;V=c[(V&p)+12>>2]|0;g=V+(u*56|0)+20|0;u=c[(V+(u*56|0)&p)+32>>2]|0}g=c[(g&p)>>2]|0;if(!(fh(C,g)|0)){c[(z+(v*40|0)&p)+12>>2]=g;V=z+(v*40|0)+8|0;b[(V&o)>>1]=e[(V&o)>>1]&48640|16;kw(c[(z+(v*40|0)&p)+16>>2]|0,u|0,g|0)|0;u=0}else u=7;c[((c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+12>>2]<<2)&p)>>2]|0)&p)+60>>2]=0;T=t;break}case 102:case 101:{v=c[(s+(t*20|0)&p)+8>>2]|0;J=z+(v*40|0)|0;A=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;C=c[(A&p)>>2]|0;A=A+27|0;if(a[(A&n)>>0]&4){lm(C,ed);g=c[(ed&p)>>2]|0;if(g>>>0>(c[(zb&p)>>2]|0)>>>0){g=m;m=r;u=x;ie=1316;break c}}else{km(C,fd);T=fd;g=c[(T&p)>>2]|0;T=c[(T&p)+4>>2]|0;V=c[(zb&p)>>2]|0;U=((V|0)<0)<<31>>31;if((T|0)>(U|0)|(T|0)==(U|0)&g>>>0>V>>>0){g=m;m=r;u=x;ie=1316;break c}c[(ed&p)>>2]=g}if(fh(J,g>>>0>32?g:32)|0){y=ge;z=je;g=m;m=x;ie=1317;break a}c[(z+(v*40|0)&p)+12>>2]=g;g=z+(v*40|0)+8|0;b[(g&o)>>1]=e[(g&o)>>1]&48640|16;g=c[(ed&p)>>2]|0;u=c[(z+(v*40|0)&p)+16>>2]|0;if(!(a[(A&n)>>0]&4))u=Lm(C,0,g,u,0)|0;else u=Dh(C,0,g,u)|0;a[(z+(v*40|0)&n)+10>>0]=1;C=J;T=t;break}case 103:{v=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;w=v+25|0;if(a[(w&n)>>0]|0){g=m;m=r;u=L;r=t;ie=700;break d}do if(!(a[(v&n)+26>>0]|0)){g=c[(v&p)+32>>2]|0;if(g){V=c[(g&p)>>2]|0;u=rc[c[((c[(V&p)>>2]|0)&p)+48>>2]&127](g,Rd)|0;Mm(f,V);break}if((a[((c[(v&p)>>2]|0)&n)+73>>0]|0)!=1){u=jm(v)|0;if(u){g=m;m=r;ie=1318;break c}if(a[(w&n)>>0]|0){g=m;m=r;u=L;r=t;ie=708;break d}}km(c[(v&p)>>2]|0,Rd);u=0}else{U=v+48|0;V=c[(U&p)+4>>2]|0;u=Rd;c[(u&p)>>2]=c[(U&p)>>2];c[(u&p)+4>>2]=V;u=0}while(0);V=Rd;T=c[(V&p)+4>>2]|0;C=L;c[(C&p)>>2]=c[(V&p)>>2];c[(C&p)+4>>2]=T;C=L;T=t;break}case 108:{ie=715;break}case 104:{g=m;m=r;u=L;r=t;ie=711;break d}case 107:case 106:{c[(ic&p)>>2]=(c[(ic&p)>>2]|0)+1;ie=715;break}case 105:{T=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;u=c[(T&p)>>2]|0;c[(Ed&p)>>2]=0;u=Hm(u,Ed)|0;V=c[(Ed&p)>>2]|0;a[(T&n)+25>>0]=V;a[(T&n)+26>>0]=0;c[(T&p)+60>>2]=0;T=c[(s+(t*20|0)&p)+8>>2]|0;C=L;T=(T|0)>0&(V|0)!=0?T+-1|0:t;break}case 7:case 6:{if(!(c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0)){g=m;m=r;S=z;T=s;U=W;V=X;u=L;r=t;break d}else ie=765;break}case 5:{g=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;c[(Fd&p)>>2]=0;w=c[(g&p)+56>>2]|0;if(a[(w&n)+56>>0]|0){u=Wm(c[(w&p)+20>>2]|0,Fd)|0;ie=766;break e}u=w+36|0;v=c[(u&p)>>2]|0;V=v+4|0;c[(u&p)>>2]=c[(V&p)>>2];c[(V&p)>>2]=0;if(!((c[(w&p)+40>>2]|0)!=0|(v|0)==0))mg(le,v);c[(Fd&p)>>2]=(c[(u&p)>>2]|0)==0&1;u=0;ie=766;break}case 9:case 8:{ie=765;break}case 110:case 109:{A=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;S=c[(s+(t*20|0)&p)+8>>2]|0;u=c[(A&p)>>2]|0;C=s+(t*20|0)+3|0;if(a[(C&n)>>0]&1)c[(ub&p)>>2]=(c[(ub&p)>>2]|0)+1;if((b[(z+(S*40|0)&o)+8>>1]&16384)!=0?(Ud=Rg(z+(S*40|0)|0)|0,(Ud|0)!=0):0){g=m;m=r;s=Ud;u=x;ie=1309;break c}H=c[(A&p)+56>>2]|0;T=z+(S*40|0)+12|0;P=c[(T&p)>>2]|0;if(!H){if(!(a[(C&n)>>0]&16))g=0;else g=c[(A&p)+12>>2]|0;u=Im(u,c[(z+(S*40|0)&p)+16>>2]|0,P,((P|0)<0)<<31>>31,10360,0,0,c[(s+(t*20|0)&p)+12>>2]|0,g)|0;c[(A&p)+60>>2]=0;C=L;T=t;break e}C=P;g=((P|0)<0)<<31>>31;A=0;do{A=A+1|0;C=mw(C|0,g|0,7)|0;g=G}while(((C|0)!=0|(g|0)!=0)&(A|0)<9);K=P+8|0;I=A+P|0;M=H+4|0;A=c[(M&p)>>2]|0;do if(!A)u=0;else{if(!(c[(H&p)+40>>2]|0)){C=H+44|0;V=c[(C&p)>>2]|0;if((V|0)<=(A|0)?!((c[2265]|0)!=0?(V|0)>(c[(H&p)>>2]|0):0):0){u=0;break}}else{V=c[(H&p)+48>>2]|0;if(!((V|0)!=0&(V+K|0)>(A|0))){u=0;break}C=H+44|0}u=Om(H)|0;c[(C&p)>>2]=0;c[(H&p)+48>>2]=0}while(0);C=H+36|0;J=H+44|0;c[(J&p)>>2]=(c[(J&p)>>2]|0)+I;J=H+8|0;if((I|0)>(c[(J&p)>>2]|0))c[(J&p)>>2]=I;E=H+40|0;J=c[(E&p)>>2]|0;if(!J){g=qg(K,((K|0)<0)<<31>>31)|0;if(!g){g=m;m=r;s=7;u=x;ie=1309;break c}c[(g&p)+4>>2]=c[(C&p)>>2]}else{g=H+48|0;I=c[(g&p)>>2]|0;K=I+K|0;F=H+52|0;H=c[(F&p)>>2]|0;if((K|0)>(H|0)){I=H;do I=I<<1;while((I|0)<(K|0));V=c[(M&p)>>2]|0;I=(I|0)>(V|0)?V:I;I=(I|0)<(K|0)?K:I;J=rg(J,I,((I|0)<0)<<31>>31)|0;if(!J){g=m;m=r;s=7;u=x;ie=1309;break c}A=J+((c[(C&p)>>2]|0)-(c[(E&p)>>2]|0))|0;c[(C&p)>>2]=A;c[(E&p)>>2]=J;c[(F&p)>>2]=I;I=c[(g&p)>>2]|0}else A=c[(C&p)>>2]|0;c[(g&p)>>2]=I+(P+15&-8);c[(J+I&p)+4>>2]=A-J;g=J+I|0}kw(g+8|0,c[(z+(S*40|0)&p)+16>>2]|0,c[(T&p)>>2]|0)|0;c[(g&p)>>2]=c[(T&p)>>2];c[(C&p)>>2]=g;C=L;T=t;break}case 112:{g=m;m=r;r=t;ie=801;break d}case 111:{v=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;g=c[(v&p)>>2]|0;c[(yd&p)>>2]=c[(v&p)+8>>2];b[(kc&o)>>1]=c[(s+(t*20|0)&p)+12>>2];a[(nc&n)>>0]=0;c[(oc&p)>>2]=z+((c[(s+(t*20|0)&p)+8>>2]|0)*40|0);u=Cm(g,yd,0,0,0,Gd)|0;if(!(c[(Gd&p)>>2]|u))u=Jm(g)|0;c[(v&p)+60>>2]=0;C=L;T=t;break}case 116:case 115:case 114:case 113:{u=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;c[(zd&p)>>2]=c[(u&p)+8>>2];b[(xc&o)>>1]=c[(s+(t*20|0)&p)+16>>2];a[(Y&n)>>0]=((J&255)<115)<<31>>31;c[(Z&p)>>2]=z+((c[(s+(t*20|0)&p)+12>>2]|0)*40|0);V=Sd;c[(V&p)>>2]=0;c[(V&p)+4>>2]=0;km(c[(u&p)>>2]|0,Sd);V=Sd;g=c[(V&p)>>2]|0;V=jw(g|0,c[(V&p)+4>>2]|0,-1,-1)|0;U=G;if(!(U>>>0>0|(U|0)==0&V>>>0>2147483646)){b[(_&o)>>1]=0;c[($&p)>>2]=le;c[(aa&p)>>2]=0;g=nm(c[(u&p)>>2]|0,0,g,1,qd)|0;if(!g){u=Km(c[(ea&p)>>2]|0,c[(ga&p)>>2]|0,zd,0)|0;if((b[(_&o)>>1]&9312)==0&(c[(aa&p)>>2]|0)==0)g=0;else{Qg(qd);g=0}}else u=0}else{c[(ke&p)>>2]=68730;c[(ke&p)+4>>2]=10788;bd(11,13600,ke);g=11;u=0}if((((a[(C&n)>>0]&1)==0?u+1|0:0-u|0)|0)>0){C=L;T=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;u=g}else{C=L;T=t;u=g}break}case 117:{O=L+8|0;b[(O&o)>>1]=1;if((c[(Zb&p)>>2]|0)>((c[(ha&p)>>2]|0)+1|0)){g=m;m=r;u=x;ie=832;break c}N=c[(s+(t*20|0)&p)+12>>2]|0;M=c[((c[(Xd&p)>>2]|0)+(N<<4)&p)+4>>2]|0;P=s+(t*20|0)+4|0;I=c[(P&p)>>2]|0;C=M+4|0;K=c[(C&p)>>2]|0;c[(K&p)+4>>2]=c[(M&p)>>2];c[(ke&p)>>2]=0;do if(!(c[(K&p)+8>>2]|0)){u=dl(K,I,ke,0)|0;if(!u){u=Xm(M,I,0)|0;if(u){g=c[(ke&p)>>2]|0;if(!g){A=0;break}Bg(c[(g&p)+68>>2]|0);A=0;break}if(I>>>0<=1){g=c[(ke&p)>>2]|0;pl(g,9);if(!g){u=0;A=0;break}Bg(c[(g&p)+68>>2]|0);u=0;A=0;break}if(!(a[(K&n)+17>>0]|0)){g=c[(ke&p)>>2]|0;u=Ym(c[(g&p)+52>>2]|0,g,c[(g&p)+72>>2]|0)|0;if(!g){A=0;break}Bg(c[(g&p)+68>>2]|0);A=0;break}J=c[(C&p)>>2]|0;c[(J&p)+4>>2]=c[(M&p)>>2];J=c[((c[(J&p)+12>>2]|0)&p)+56>>2]|0;J=d[(J&n)+53>>0]<<16|d[(J&n)+52>>0]<<24|d[(J&n)+54>>0]<<8|d[(J&n)+55>>0];C=c[(ke&p)>>2]|0;if((J|0)==(I|0)){u=Ym(c[(C&p)+52>>2]|0,C,c[(C&p)+72>>2]|0)|0;if(C)Bg(c[(C&p)+68>>2]|0);if(!u)A=0;else{A=0;break}}else{if(C)Bg(c[(C&p)+68>>2]|0);u=dl(K,J,Sd,0)|0;if(u){A=0;break}C=c[(Sd&p)>>2]|0;u=Zm(K,C,1,0,I,0)|0;if(C)Bg(c[(C&p)+68>>2]|0);if(u){A=0;break}c[(Sd&p)>>2]=0;u=dl(K,J,Sd,0)|0;C=c[(Sd&p)>>2]|0;if(u){if(!C){A=0;break}}else u=Ym(c[(C&p)+52>>2]|0,C,c[(C&p)+72>>2]|0)|0;Bg(c[(C&p)+68>>2]|0);if(!u)A=J;else{A=0;break}}H=((c[2514]|0)>>>0)/((c[(K&p)+32>>2]|0)>>>0)|0;F=H+1|0;I=K+36|0;while(1){C=J+-1|0;if((C|0)==(F|0)){J=C;continue}if(C>>>0<2)E=0;else{E=J+-3|0;E=E-((E>>>0)%(((((c[(I&p)>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;E=((E+1|0)==(H|0)?3:2)+E|0}if((E|0)==(C|0))J=C;else break}u=Dg(M,4,C)|0}else A=0}else{u=262;A=0}while(0);b[(O&o)>>1]=4;V=L;c[(V&p)>>2]=A;c[(V&p)+4>>2]=((A|0)<0)<<31>>31;if((u|0)==0&(A|0)!=0){g=m;K=N;C=P;m=r;u=L;r=t;ie=865;break d}else{C=L;T=t}break}case 118:{c[(jd&p)>>2]=0;g=s+(t*20|0)+12|0;u=Xm(c[((c[(Xd&p)>>2]|0)+(c[(s+(t*20|0)&p)+8>>2]<<4)&p)+4>>2]|0,c[(s+(t*20|0)&p)+4>>2]|0,(c[(g&p)>>2]|0)!=0?jd:0)|0;g=c[(g&p)>>2]|0;if((g|0)!=0?(Ic=c[(jd&p)>>2]|0,c[(ub&p)>>2]=(c[(ub&p)>>2]|0)+Ic,(g|0)>0):0){C=z+(g*40|0)|0;T=C;T=jw(c[(T&p)>>2]|0,c[(T&p)+4>>2]|0,Ic|0,((Ic|0)<0)<<31>>31|0)|0;c[(C&p)>>2]=T;c[(C&p)+4>>2]=G;C=L;T=t}else{C=L;T=t}break}case 121:case 120:{c[(vd&p)>>2]=0;u=Am(c[((c[(Xd&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<4)&p)+4>>2]|0,vd,J<<24>>24==121?1:2)|0;T=c[(vd&p)>>2]|0;C=L;c[(C&p)>>2]=T;c[(C&p)+4>>2]=((T|0)<0)<<31>>31;C=L;T=t;break}case 119:{g=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;u=c[(g&p)+56>>2]|0;if(u){g=m;m=r;J=L;r=t;ie=878;break d}u=c[(g&p)>>2]|0;C=L;T=t;u=Xm(c[(u&p)>>2]|0,c[(u&p)+60>>2]|0,0)|0;break}case 123:{C=L;T=t;u=an(le,c[(s+(t*20|0)&p)+4>>2]|0)|0;break}case 124:{g=m;m=r;u=L;r=t;ie=886;break d}case 122:{g=m;m=r;J=L;r=t;ie=881;break d}case 126:{g=m;m=r;u=L;r=t;ie=895;break d}case 125:{g=m;m=r;J=L;r=t;ie=887;break d}case 127:{g=m;m=r;u=L;ie=903;break d}case 128:{g=m;m=r;J=L;ie=947;break d}case 129:{w=c[(s+(t*20|0)&p)+4>>2]|0;v=z+(w*40|0)|0;w=z+(w*40|0)+8|0;g=b[(w&o)>>1]|0;do if(g&32){E=c[(v&p)>>2]|0;u=E+26|0;g=b[(u&o)>>1]|0;if(!(g&2)){if(!(g&1)){g=E+8|0;c[(g&p)>>2]=kn(c[(g&p)>>2]|0)|0;g=b[(u&o)>>1]|0}b[(u&o)>>1]=g&65535|2}C=E+8|0;A=c[(C&p)>>2]|0;if(!A){g=b[(w&o)>>1]|0;break}w=A;v=c[(w&p)>>2]|0;w=c[(w&p)+4>>2]|0;V=c[(A&p)+8>>2]|0;c[(C&p)>>2]=V;if(!V)Zk(E);u=c[(s+(t*20|0)&p)+12>>2]|0;g=z+(u*40|0)|0;u=z+(u*40|0)+8|0;if(!(b[(u&o)>>1]&9312)){ie=g;c[(ie&p)>>2]=v;c[(ie&p)+4>>2]=w;b[(u&o)>>1]=4;u=0;ie=19;break e}else{Zg(g,v,w);u=0;ie=19;break e}}while(0);if(!(g&9312))b[(w&o)>>1]=1;else vg(v);t=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;u=0;ie=19;break}case 130:{g=m;m=r;u=L;ie=966;break d}case 131:{g=m;m=r;u=L;r=t;ie=993;break d}case 132:{g=m;m=r;u=L;r=t;ie=1009;break d}case 134:{g=m;m=r;J=L;r=t;ie=1010;break d}case 135:{g=m;m=r;u=L;r=t;ie=1015;break d}case 136:{g=m;m=r;r=t;ie=1022;break d}case 137:{g=m;m=r;u=L;r=t;ie=1028;break d}case 138:{g=m;m=r;u=L;r=t;ie=1030;break d}case 139:{g=m;m=r;J=L;r=t;ie=1032;break d}case 140:{g=m;m=r;u=L;r=t;ie=1034;break d}case 141:{g=m;m=r;u=L;r=t;ie=1036;break d}case 10:{V=a[(s+(t*20|0)&n)+3>>0]|0;g=V&255;u=c[(Bb&p)>>2]|0;if(V<<24>>24){v=0;w=z+((c[(s+(t*20|0)&p)+8>>2]|0)*40|0)|0;while(1){c[(u+(v<<2)&p)>>2]=w;v=v+1|0;if((v|0)>=(g|0))break;else w=w+40|0}}V=c[(s+(t*20|0)&p)+16>>2]|0;c[(Ga&p)>>2]=V;U=c[(s+(t*20|0)&p)+12>>2]|0;c[(Ha&p)>>2]=z+(U*40|0);U=z+(U*40|0)+12|0;c[(U&p)>>2]=(c[(U&p)>>2]|0)+1;b[(Ia&o)>>1]=1;c[(Ja&p)>>2]=le;c[(Ka&p)>>2]=0;c[(Vc&p)>>2]=Md;c[(La&p)>>2]=0;c[(Ma&p)>>2]=f;c[(Na&p)>>2]=t;a[(Oa&n)>>0]=0;mc[c[(V&p)+16>>2]&63](Vc,g,u);if(!(c[(La&p)>>2]|0))u=0;else{c[(ke&p)>>2]=Sg(Md,1)|0;dh(je,le,10344,ke);u=c[(La&p)>>2]|0}do if((a[(Oa&n)>>0]|0)!=0?(Mc=c[(s+((t+-1|0)*20|0)&p)+4>>2]|0,(Mc|0)!=0):0){g=z+(Mc*40|0)|0;v=z+(Mc*40|0)+8|0;if(!(b[(v&o)>>1]&9312)){V=g;c[(V&p)>>2]=1;c[(V&p)+4>>2]=0;b[(v&o)>>1]=4;break}else{Zg(g,1,0);break}}while(0);if((b[(Ia&o)>>1]&9312)==0&(c[(Ka&p)>>2]|0)==0){C=L;T=t}else{Qg(Md);C=L;T=t}break}case 11:{c[(Rc&p)>>2]=0;c[(Pa&p)>>2]=-1;c[(Qa&p)>>2]=-1;g=Wh(le,c[(s+(t*20|0)&p)+4>>2]|0,c[(s+(t*20|0)&p)+8>>2]|0,Qa,Pa)|0;if((g|0)==5){c[(Rc&p)>>2]=1;g=0}v=0;w=z+((c[(s+(t*20|0)&p)+12>>2]|0)*40|0)|0;while(1){C=c[(Rc+(v<<2)&p)>>2]|0;A=((C|0)<0)<<31>>31;u=w+8|0;if(!(b[(u&o)>>1]&9312)){V=w;c[(V&p)>>2]=C;c[(V&p)+4>>2]=A;b[(u&o)>>1]=4}else Zg(w,C,A);v=v+1|0;if((v|0)==3){C=L;T=t;u=g;break}else w=w+40|0}break}case 142:{C=c[(s+(t*20|0)&p)+4>>2]|0;v=z+(C*40|0)|0;u=Yk(v,c[(s+(t*20|0)&p)+16>>2]|0)|0;if(u){c[(ke&p)>>2]=Sg(v,1)|0;dh(je,le,10344,ke)}Yl(v,xb)|0;w=e[(z+(C*40|0)&o)+8>>1]|0;if(w&18){g=c[(z+(C*40|0)&p)+12>>2]|0;if(w&16384)g=(c[(v&p)>>2]|0)+g|0;if((g|0)>(c[((c[(z+(C*40|0)&p)+32>>2]|0)&p)+88>>2]|0)){g=m;m=r;u=x;ie=1316;break c}else{C=L;T=t}}else{C=L;T=t}break}case 12:{g=c[(s+(t*20|0)&p)+12>>2]|0;L=c[((c[(Xd&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<4)&p)+4>>2]|0;I=c[(c[(L&p)+4>>2]&p)>>2]|0;J=a[(I&n)+5>>0]|0;H=J&255;g=(g|0)==-1?H:g;do if((d[(I&n)+16>>0]|0)>2)g=H;else if((c[(c[(I&p)+64>>2]&p)>>2]|0)!=0?(V=I+72|0,U=c[(V&p)+4>>2]|0,(U|0)>0|(U|0)==0&(c[(V&p)>>2]|0)>>>0>0):0){g=H;break}while(0);if(!(a[(I&n)+15>>0]|0))A=c[(I&p)+168>>2]|0;else A=10360;K=(g|0)==5;if(K)if(A){C=A;while(1)if(!(a[(C&n)>>0]|0))break;else C=C+1|0;if(C-A&1073741823){C=c[(c[(I&p)+60>>2]&p)>>2]|0;if(!(a[(I&n)+4>>0]|0))if((c[(C&p)>>2]|0)>1?!((c[(C&p)+52>>2]|0)==0|(g|0)==(H|0)):0)ie=1077;else{g=H;u=0}else ie=1076}else{g=H;u=0}}else{g=H;u=0}else ie=1076;if((ie|0)==1076){ie=0;if((g|0)==(H|0)){g=H;u=0}else ie=1077}do if((ie|0)==1077){ie=0;C=J<<24>>24==5;if(C|K){if(!(a[(ee&n)>>0]|0)){g=m;s=K;m=r;u=x;ie=1080;break c}if((c[(Zb&p)>>2]|0)>1){g=m;s=K;m=r;u=x;ie=1080;break c}if(!C){if(J<<24>>24==4)sn(I,2)|0}else{J=I+208|0;if(!(c[(J&p)>>2]|0)){c[(_c&p)>>2]=0;u=fl(I,1)|0;if(u)break;u=c[(I&p)>>2]|0;u=pc[c[(u&p)+32>>2]&31](u,c[(I&p)+212>>2]|0,0,_c)|0;if((u|0)==0&(c[(_c&p)>>2]|0)!=0)u=pn(I)|0;if(u)break;if(c[(J&p)>>2]|0)ie=1088}else ie=1088;if((ie|0)==1088){ie=0;u=qn(I)|0;if(u)break;u=rn(c[(J&p)>>2]|0,d[(I&n)+9>>0]|0,c[(I&p)+152>>2]|0,c[(I&p)+200>>2]|0)|0;c[(J&p)>>2]=0;if(u)break}sn(I,g)|0}u=Fg(L,K?2:1)|0}else u=0}while(0);g=sn(I,(u|0)==0?g:H)|0;C=c[(s+(t*20|0)&p)+8>>2]|0;J=z+(C*40|0)|0;b[(z+(C*40|0)&o)+8>>1]=2562;if((g|0)==6){c[(z+(C*40|0)&p)+16>>2]=0;g=0}else{v=c[(g<<2&p)+32216>>2]|0;c[(z+(C*40|0)&p)+16>>2]=v;g=v;while(1)if(!(a[(g&n)>>0]|0))break;else g=g+1|0;g=g-v&1073741823}c[(z+(C*40|0)&p)+12>>2]=g;a[(z+(C*40|0)&n)+10>>0]=1;Yl(J,xb)|0;C=J;T=t;break}case 13:{if(!(a[(ee&n)>>0]|0)){g=m;m=r;u=x;ie=1101;break c}if((c[(Ra&p)>>2]|0)>1){g=m;m=r;u=x;ie=1103;break c}S=c[(Tb&p)>>2]|0;N=c[(vb&p)>>2]|0;w=c[(wb&p)>>2]|0;v=c[(Sa&p)>>2]|0;c[(Tb&p)>>2]=S&-2762753|2107392;c[(Sa&p)>>2]=0;g=c[((c[(Xd&p)>>2]|0)&p)+4>>2]|0;P=g+4|0;I=a[((c[(c[(P&p)>>2]&p)>>2]|0)&n)+15>>0]|0;V=c[(Ub&p)>>2]|0;u=tn(le,je,(a[(_b&n)>>0]|0)==2?42432:42464)|0;J=c[(Ub&p)>>2]|0;if((J|0)>(V|0))M=(c[(Xd&p)>>2]|0)+(J+-1<<4)|0;else M=0;i:do if(!u){O=c[((c[(Xd&p)>>2]|0)+(J+-1<<4)&p)+4>>2]|0;un(O)|0;T=c[(P&p)>>2]|0;c[(T&p)+4>>2]=c[(g&p)>>2];T=(c[(T&p)+32>>2]|0)-(c[(T&p)+36>>2]|0)|0;u=tn(le,je,42488)|0;if(!u){u=tn(le,je,42528)|0;if(!u){u=yg(g,2)|0;if(!u){J=c[(P&p)>>2]|0;if((a[((c[(J&p)>>2]|0)&n)+5>>0]|0)==5)c[(Ta&p)>>2]=0;if(!(xg(O,c[(J&p)+32>>2]|0,T,0)|0)){if(I<<24>>24==0?(xg(O,c[(Ta&p)>>2]|0,T,0)|0)!=0:0){u=7;break}if(a[(ge&n)>>0]|0){u=7;break}J=a[(Ua&n)>>0]|0;do if(J<<24>>24>-1)J=J<<24>>24;else{J=c[(P&p)>>2]|0;c[(J&p)+4>>2]=c[(g&p)>>2];if(!(a[(J&n)+17>>0]|0)){J=0;break}J=(a[(J&n)+18>>0]|0)==0?1:2}while(0);vn(O,J)|0;u=wn(le,je,42536)|0;if(u)break;u=wn(le,je,42688)|0;if(u)break;u=wn(le,je,42792)|0;if(u)break;u=wn(le,je,42912)|0;if(u)break;u=wn(le,je,43112)|0;if(u)break;u=wn(le,je,43232)|0;if(u)break;u=tn(le,je,43392)|0;if(!u)J=0;else break;do{u=d[(J&n)+43576>>0]|0;wm(g,u,ad);u=Dg(O,u,(d[((J|1)&n)+43576>>0]|0)+(c[(ad&p)>>2]|0)|0)|0;J=J+2|0;if(u)break i}while((J|0)<10);H=c[(P&p)>>2]|0;c[(H&p)+4>>2]=c[(g&p)>>2];J=c[(O&p)>>2]|0;K=O+4|0;I=c[(K&p)>>2]|0;c[(I&p)+4>>2]=J;H=c[((c[(H&p)>>2]|0)&p)+60>>2]|0;F=c[(H&p)>>2]|0;if(F){V=c[(I&p)+32>>2]|0;V=sw(c[(I&p)+44>>2]|0,0,V|0,((V|0)<0)<<31>>31|0)|0;u=id;c[(u&p)>>2]=V;c[(u&p)+4>>2]=G;u=ac[c[(F&p)+40>>2]&63](H,11,id)|0;u=(u|0)==12?0:u;if(u)break;J=c[(O&p)>>2]|0}U=Tc+0|0;V=U+48|0;do{c[(U&p)>>2]=0;U=U+4|0}while((U|0)<(V|0));c[(Va&p)>>2]=J;c[(Wa&p)>>2]=O;c[(Xa&p)>>2]=g;c[(Ya&p)>>2]=1;gd(Tc,2147483647)|0;u=hd(Tc)|0;if(u){C=c[(c[((c[(Xa&p)>>2]|0)&p)+4>>2]&p)>>2]|0;if(a[(C&n)+15>>0]|0)break;if(a[(C&n)+12>>0]|0)break;xn(C);break}u=(c[(P&p)>>2]|0)+22|0;b[(u&o)>>1]=e[(u&o)>>1]&65533;u=un(O)|0;if(u)break;J=c[(K&p)>>2]|0;c[(J&p)+4>>2]=c[(O&p)>>2];if(!(a[(J&n)+17>>0]|0))E=0;else E=(a[(J&n)+18>>0]|0)==0?1:2;vn(g,E)|0;u=xg(g,c[((c[(K&p)>>2]|0)&p)+32>>2]|0,T,1)|0}else u=7}}}}while(0);c[(Tb&p)>>2]=S;c[(vb&p)>>2]=N;c[(wb&p)>>2]=w;c[(Sa&p)>>2]=v;xg(g,-1,-1,1)|0;a[(ee&n)>>0]=1;if(M){V=M+4|0;Ml(c[(V&p)>>2]|0);c[(V&p)>>2]=0;c[(M&p)+12>>2]=0}Eg(le);C=L;T=t;break}case 143:{V=c[((c[(Xd&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<4)&p)+4>>2]|0;I=c[(V&p)+4>>2]|0;c[(I&p)+4>>2]=c[(V&p)>>2];if(!(a[(I&n)+17>>0]|0)){g=m;m=r;u=L;ie=1157;break d}E=I+44|0;H=c[(E&p)>>2]|0;A=I+12|0;C=c[((c[(A&p)>>2]|0)&p)+56>>2]|0;C=d[(C&n)+37>>0]<<16|d[(C&n)+36>>0]<<24|d[(C&n)+38>>0]<<8|d[(C&n)+39>>0];F=El(I,H,C)|0;if(H>>>0>>0){g=m;m=r;u=x;ie=1145;break c}if(!C){g=m;m=r;u=L;ie=1157;break d}J=I+8|0;g=c[(J&p)>>2]|0;do if(g){C=g;do{if(C){ie=1150;break}C=c[2]|0}while((C|0)!=0);if((ie|0)==1150){ie=0;u=Fl(C,0,0)|0;if(u)break;g=c[(J&p)>>2]|0}if(g){do{V=g+72|0;a[(V&n)>>0]=d[(V&n)>>0]&251;g=c[(g&p)+8>>2]|0}while((g|0)!=0);ie=1154}else ie=1154}else ie=1154;while(0);if((ie|0)==1154){ie=0;u=Gl(I,F,H,0)|0;if(!u){u=Gg(c[((c[(A&p)>>2]|0)&p)+68>>2]|0)|0;V=c[((c[(A&p)>>2]|0)&p)+56>>2]|0;U=c[(E&p)>>2]|0;a[(V&n)+28>>0]=U>>>24;a[(V&n)+29>>0]=U>>>16;a[(V&n)+30>>0]=U>>>8;a[(V&n)+31>>0]=U}}if((u|0)==101){g=m;m=r;u=L;ie=1157;break d}else{C=L;T=t}break}case 145:{g=c[(s+(t*20|0)&p)+12>>2]|0;if((g&255|0)==0?(c[(Tb&p)>>2]&16384|0)!=0:0){g=m;m=r;S=z;T=s;U=W;V=X;u=L;r=t;break d}C=c[((c[(Xd&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<4)&p)+4>>2]|0;A=c[(s+(t*20|0)&p)+8>>2]|0;if(!(a[(C&n)+9>>0]|0)){g=m;m=r;S=z;T=s;U=W;V=X;u=L;r=t;break d}v=g+1&255;w=C+4|0;c[((c[(w&p)>>2]|0)&p)+4>>2]=c[(C&p)>>2];u=bl(C,A,v)|0;if(!u){g=m;m=r;u=L;r=t;ie=1166;break d}if((u&255|0)!=6){g=m;m=r;s=u;u=x;ie=1309;break c}c[(ke&p)>>2]=c[(s+(t*20|0)&p)+16>>2];dh(je,le,42224,ke);C=L;T=t;break}case 144:{g=m;m=r;u=L;r=t;ie=1158;break d}case 146:{J=c[(s+(t*20|0)&p)+16>>2]|0;v=c[(Za&p)>>2]|0;u=(v|0)>0;if(u?(c[(_a&p)>>2]|0)==0:0){u=6;ie=1188}else ie=1179;j:do if((ie|0)==1179){ie=0;if(!J){g=m;m=r;S=z;T=s;U=W;V=X;u=L;r=t;break d}g=J+8|0;w=(c[(c[(g&p)>>2]&p)>>2]|0)+56|0;if(c[(w&p)>>2]|0){if(u){C=c[(_a&p)>>2]|0;A=0;do{if((c[(C+(A<<2)&p)>>2]|0)==(J|0)){u=0;ie=1188;break j}A=A+1|0}while((A|0)<(v|0))}u=yn(le)|0;if(!u){u=lc[c[(w&p)>>2]&127](c[(g&p)>>2]|0)|0;if(!u){u=c[(Za&p)>>2]|0;c[(Za&p)>>2]=u+1;c[((c[(_a&p)>>2]|0)+(u<<2)&p)>>2]=J;u=J+12|0;c[(u&p)>>2]=(c[(u&p)>>2]|0)+1;u=0}}else ie=1188}else u=0}while(0);if((ie|0)==1188){ie=0;if(!J){C=L;T=t;break e}g=J+8|0}Mm(f,c[(g&p)>>2]|0);C=L;T=t;break}case 147:{U=Kd+0|0;V=U+40|0;do{c[(U&p)>>2]=0;U=U+4|0}while((U|0)<(V|0));c[($a&p)>>2]=le;g=_g(Kd,z+((c[(s+(t*20|0)&p)+8>>2]|0)*40|0)|0)|0;u=Sg(Kd,1)|0;k:do if(u){v=_h(le,u,c[((c[(Xd&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<4)&p)>>2]|0)|0;g=c[(c[(v&p)+56>>2]&p)>>2]|0;u=bn(cb,g,Xc)|0;if((u|0)!=0?(Oc=c[(u&p)+8>>2]|0,(Oc|0)!=0):0){g=zn(le,v,Oc,c[((c[(Oc&p)>>2]|0)&p)+4>>2]|0,je)|0;if(g)break;u=v+60|0;g=c[(u&p)>>2]|0;if(!g){g=0;break}while(1){if((c[(g&p)>>2]|0)==(le|0))break;g=c[(g&p)+24>>2]|0;if(!g){g=0;break k}}g=yn(le)|0;if(g)break;g=c[(u&p)>>2]|0;l:do if(!g)g=0;else while(1){if((c[(g&p)>>2]|0)==(le|0))break l;g=c[(g&p)+24>>2]|0;if(!g){g=0;break}}while(0);V=c[(Za&p)>>2]|0;c[(Za&p)>>2]=V+1;c[((c[(_a&p)>>2]|0)+(V<<2)&p)>>2]=g;g=g+12|0;c[(g&p)>>2]=(c[(g&p)>>2]|0)+1;g=0;break}c[(ke&p)>>2]=g;c[(je&p)>>2]=uh(le,28320,ke)|0;g=1}while(0);if((b[(ab&o)>>1]&9312)==0&(c[(bb&p)>>2]|0)==0){C=L;T=t;u=g}else{Qg(Kd);C=L;T=t;u=g}break}case 148:{c[(ha&p)>>2]=(c[(ha&p)>>2]|0)+1;g=_h(le,c[(s+(t*20|0)&p)+16>>2]|0,c[((c[(Xd&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<4)&p)>>2]|0)|0;m:do if((g|0)!=0?(Pc=g+60|0,Qc=c[(Pc&p)>>2]|0,(Qc|0)!=0):0){u=Qc;do{if((c[((c[(u&p)+8>>2]|0)&p)+4>>2]|0)>0){u=6;break m}u=c[(u&p)+24>>2]|0}while((u|0)!=0);g=Ok(le,g)|0;v=g+8|0;u=lc[c[((c[(c[(g&p)+4>>2]&p)>>2]|0)&p)+20>>2]&127](c[(v&p)>>2]|0)|0;if(!u){c[(v&p)>>2]=0;c[(Pc&p)>>2]=0;An(g);u=0}}else u=0;while(0);c[(ha&p)>>2]=(c[(ha&p)>>2]|0)+-1;C=L;T=t;break}case 149:{g=m;m=r;u=L;r=t;ie=1213;break d}case 150:{g=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;C=c[(s+(t*20|0)&p)+12>>2]|0;A=z+(C*40|0)|0;if(a[(g&n)+25>>0]|0){g=m;m=r;u=L;r=t;ie=1226;break d}V=g+32|0;u=c[(c[(V&p)>>2]&p)>>2]|0;U=c[(u&p)>>2]|0;c[(Id&p)>>2]=0;c[(Id&p)+4>>2]=0;c[(Id&p)+8>>2]=0;c[(Id&p)+12>>2]=0;c[(Id&p)+16>>2]=0;c[(Id&p)+20>>2]=0;c[(Id&p)+24>>2]=0;c[(Id&p)>>2]=A;v=z+(C*40|0)+8|0;b[(v&o)>>1]=e[(v&o)>>1]&48640|1;V=ac[c[(U&p)+44>>2]&63](c[(V&p)>>2]|0,Id,c[(s+(t*20|0)&p)+8>>2]|0)|0;Mm(f,u);u=c[(db&p)>>2]|0;u=(u|0)==0?V:u;Yl(A,xb)|0;v=e[(v&o)>>1]|0;if(v&18){g=c[(z+(C*40|0)&p)+12>>2]|0;if(v&16384)g=(c[(A&p)>>2]|0)+g|0;if((g|0)>(c[((c[(z+(C*40|0)&p)+32>>2]|0)&p)+88>>2]|0)){g=m;m=r;u=x;ie=1316;break c}else{C=L;T=t}}else{C=L;T=t}break}case 14:{A=c[(s+(t*20|0)&p)+12>>2]|0;C=A+1|0;F=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;J=c[(F&p)+32>>2]|0;I=c[(J&p)>>2]|0;H=c[(I&p)>>2]|0;E=c[(z+(C*40|0)&p)>>2]|0;A=c[(z+(A*40|0)&p)>>2]|0;g=c[(Bb&p)>>2]|0;if((E|0)>0){u=0;do{V=u;u=u+1|0;c[(g+(V<<2)&p)>>2]=z+((u+C|0)*40|0)}while((u|0)!=(E|0))}u=tc[c[(H&p)+32>>2]&31](J,A,c[(s+(t*20|0)&p)+16>>2]|0,E,g)|0;Mm(f,I);if((u|0)==0?(lc[c[(H&p)+40>>2]&127](J)|0)!=0:0)t=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;a[(F&n)+25>>0]=0;C=L;T=t;break}case 151:{g=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;if(a[(g&n)+25>>0]|0){g=m;m=r;S=z;T=s;U=W;V=X;u=L;r=t;break d}g=g+32|0;v=c[(g&p)>>2]|0;V=c[(v&p)>>2]|0;u=c[(V&p)>>2]|0;v=lc[c[(u&p)+36>>2]&127](v)|0;Mm(f,V);if((v|0)==0?(lc[c[(u&p)+40>>2]&127](c[(g&p)>>2]|0)|0)!=0:0){u=0;ie=19;break e}t=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;u=v;ie=19;break}case 15:{F=s+(t*20|0)+16|0;v=c[((c[(F&p)>>2]|0)&p)+8>>2]|0;if(!v){g=m;m=r;s=6;u=x;ie=1309;break c}g=c[(v&p)>>2]|0;if(!g){g=m;m=r;s=6;u=x;ie=1309;break c}I=c[(s+(t*20|0)&p)+8>>2]|0;E=g+52|0;C=c[(E&p)>>2]|0;if(!C){g=m;m=r;S=z;T=s;U=W;V=X;u=L;r=t;break d}H=a[(eb&n)>>0]|0;J=c[(Bb&p)>>2]|0;if((I|0)>0){C=0;A=z+((c[(s+(t*20|0)&p)+12>>2]|0)*40|0)|0;while(1){c[(J+(C<<2)&p)>>2]=A;C=C+1|0;if((C|0)==(I|0))break;else A=A+40|0}C=c[(E&p)>>2]|0}A=s+(t*20|0)+3|0;a[(eb&n)>>0]=a[(A&n)>>0]|0;u=pc[C&31](v,I,J,Hd)|0;a[(eb&n)>>0]=H;Mm(f,v);if(!u){if(c[(s+(t*20|0)&p)+4>>2]|0){l=Hd;r=c[(l&p)>>2]|0;l=c[(l&p)+4>>2]|0;V=ne;c[(V&p)>>2]=r;c[(V&p)+4>>2]=l}}else if((u&255|0)==19?(a[((c[(F&p)>>2]|0)&n)+16>>0]|0)!=0:0){g=a[(A&n)>>0]|0;if(g<<24>>24==5)g=2;else if(g<<24>>24==4){g=m;m=r;S=z;T=s;U=W;V=X;u=L;r=t;break d}a[(fe&n)>>0]=g;C=L;T=t;break e}c[(ub&p)>>2]=(c[(ub&p)>>2]|0)+1;C=L;T=t;break}case 152:{g=c[((c[(s+(t*20|0)&p)+16>>2]|0)&p)+8>>2]|0;u=c[(s+(t*20|0)&p)+4>>2]|0;v=z+(u*40|0)|0;if(((b[(z+(u*40|0)&o)+8>>1]&2)!=0?(a[(z+(u*40|0)&n)+10>>0]|0)!=1:0)?(Wd=Bn(v,1)|0,(Wd|0)!=0):0){g=m;m=r;s=Wd;u=x;ie=1309;break c}u=rc[c[((c[(g&p)>>2]|0)&p)+76>>2]&127](g,c[(z+(u*40|0)&p)+16>>2]|0)|0;Mm(f,g);b[(Yd&o)>>1]=b[(Yd&o)>>1]&-9;C=L;T=t;break}case 153:{g=m;m=r;u=L;r=t;ie=1257;break d}case 155:{g=m;m=r;ie=1264;break d}case 154:{g=m;m=r;J=L;r=t;ie=1258;break d}default:{g=m;m=r;S=z;T=s;U=W;V=X;u=L;r=t;break d}}while(0);n:do if((ie|0)==57){ie=0;w=L+8|0;b[(w&o)>>1]=2562;c[(L&p)+16>>2]=v;c[(L&p)+12>>2]=g;a[(L&n)+10>>0]=Jc;if((a[(s+(t*20|0)&n)+3>>0]|0)!=0?(V=z+((c[(s+(t*20|0)&p)+12>>2]|0)*40|0)|0,!((c[(V&p)>>2]|0)==0&(c[(V&p)+4>>2]|0)==0)):0){b[(w&o)>>1]=2576;C=L;T=t}else{C=L;T=t}}else if((ie|0)==536){if(b[(Yd&o)>>1]&8){g=m;m=r;s=516;u=x;ie=1309;break c}C=c[(s+(t*20|0)&p)+8>>2]|0;I=c[(s+(t*20|0)&p)+12>>2]|0;g=c[(Xd&p)>>2]|0;H=c[(g+(I<<4)&p)+4>>2]|0;if(J<<24>>24==55){g=a[((c[(g+(I<<4)&p)+12>>2]|0)&n)+76>>0]|0;if((g&255)<(d[(Mb&n)>>0]|0)){a[(Mb&n)>>0]=g;J=1}else J=1}else J=0;v=s+(t*20|0)+3|0;if(a[(v&n)>>0]&4){V=z+(C*40|0)|0;g=Vg(V)|0;c[(V&p)>>2]=g;c[(V&p)+4>>2]=G;V=z+(C*40|0)+8|0;b[(V&o)>>1]=e[(V&o)>>1]&48640|4;if((g|0)<2){g=m;m=r;s=x;ie=542;break c}else E=g}else E=C;u=s+(t*20|0)+1|0;C=a[(u&n)>>0]|0;if(C<<24>>24==-6){A=c[(s+(t*20|0)&p)+16>>2]|0;C=(e[(A&o)+8>>1]|0)+(e[(A&o)+6>>1]|0)|0}else if(C<<24>>24==-14){C=c[(s+(t*20|0)&p)+16>>2]|0;A=0}else{C=0;A=0}g=xm(f,c[(s+(t*20|0)&p)+4>>2]|0,C,I,1)|0;if(!g){y=ge;z=je;g=m;m=x;ie=1317;break a}a[(g&n)+25>>0]=1;V=g+27|0;a[(V&n)>>0]=a[(V&n)>>0]|8;c[(g&p)+28>>2]=E;ie=ym(H,E,J,A,c[(g&p)>>2]|0)|0;c[(g&p)+8>>2]=A;a[(V&n)>>0]=((a[(u&n)>>0]|0)!=-6&1)<<2&255|a[(V&n)>>0]&-5;u=ie;ie=548}else if((ie|0)==715){ie=0;M=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;V=c[(M&p)+56>>2]|0;do if(!V){u=c[(M&p)>>2]|0;g=qm(u)|0;if(!g)if(!(a[(u&n)+73>>0]|0)){v=1;g=0}else{v=0;g=Vm(u)|0}else v=1;a[(M&n)+26>>0]=0;c[(M&p)+60>>2]=0;a[(M&n)+25>>0]=v;if(!v){C=L;T=t;u=g;break n}}else{do if(!(a[(V&n)+56>>0]|0)){g=V+36|0;if(!(c[(g&p)>>2]|0)){g=0;ie=756}else{g=Nm(V+64|0,g)|0;ie=755}}else{g=Om(V)|0;if(!g){U=V+59|0;o:do if(!(a[(U&n)>>0]|0)){u=0;g=0}else{w=0;v=0;p:while(1){T=V+(w<<6)+64|0;c[(ke&p)>>2]=0;S=V+(w<<6)+92|0;C=c[(S&p)>>2]|0;J=((C|0)<0)<<31>>31;do if((C|0)>16){I=16;H=0;E=0;while(1){I=iw(I|0,H|0,4)|0;H=G;F=E+1|0;if(!((H|0)<(J|0)|(H|0)==(J|0)&I>>>0>>0)){H=E;break}else E=F}P=Sd;c[(P&p)>>2]=0;c[(P&p)+4>>2]=0;if((C|0)<17){ie=726;break}u=Qm(16)|0;c[(ke&p)>>2]=u;J=(u|0)==0;I=c[(S&p)>>2]|0;if(!((I|0)>0&(J^1))){g=J?7:0;break}N=(H|0)>0;P=0;O=0;do{c[(qd&p)>>2]=0;g=I-P|0;g=Pm(T,(g|0)<16?g:16,Sd,qd)|0;if(g){ie=747;break p}g=Rm(T,c[(qd&p)>>2]|0,pd)|0;do if(N){I=1;J=1;do{J=J<<4;I=I+1|0}while((I|0)!=(F|0));if(!g){H=1;I=u}else{J=c[(pd&p)>>2]|0;ie=743;break}while(1){K=(c[(I&p)+12>>2]|0)+((((O|0)/(J|0)|0|0)%16|0)*56|0)+48|0;I=c[(K&p)>>2]|0;if(!I){I=Qm(16)|0;if(!I){g=7;ie=738;break}g=Rm(T,I,K)|0;if(g){ie=738;break}I=c[(K&p)>>2]|0}I=c[(I&p)+4>>2]|0;H=H+1|0;if((H|0)>=(F|0)){ie=740;break}else J=(J|0)/16|0}if((ie|0)==738){J=c[(pd&p)>>2]|0;ie=743;break}else if((ie|0)==740){J=c[(pd&p)>>2]|0;ie=742;break}}else{J=c[(pd&p)>>2]|0;if(!g){I=u;ie=742}else ie=743}while(0);if((ie|0)==742){ie=0;c[((c[(I&p)+12>>2]|0)+(((O|0)%16|0)*56|0)&p)+48>>2]=J;g=0}else if((ie|0)==743){ie=0;Sm(J)}O=O+1|0;P=P+16|0;I=c[(S&p)>>2]|0}while((P|0)<(I|0)&(g|0)==0)}else{ie=Sd;c[(ie&p)>>2]=0;c[(ie&p)+4>>2]=0;ie=726}while(0);if((ie|0)==726){ie=0;g=Pm(T,C,Sd,ke)|0;u=c[(ke&p)>>2]|0}w=w+1|0;if(g){ie=746;break}if((w|0)>=(d[(U&n)>>0]|0)){g=0;break o}else v=u}if((ie|0)==746)Tm(u);else if((ie|0)==747)Tm(u);Tm(v);u=0}while(0);if(!g){g=Um(V+64|0,u)|0;c[(V&p)+20>>2]=u;if(!g){g=0;ie=755;break}else u=0}Tm(u);ie=755}else ie=756}while(0);if((ie|0)==755){ie=0;a[(M&n)+25>>0]=0;C=L;T=t;u=g;break n}else if((ie|0)==756){ie=0;a[(M&n)+25>>0]=1;break}}while(0);C=L;T=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;u=g}else if((ie|0)==765){u=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;c[(Fd&p)>>2]=c[(s+(t*20|0)&p)+12>>2];g=u;u=rc[c[(s+(t*20|0)&p)+16>>2]&127](c[(u&p)>>2]|0,Fd)|0;ie=766}while(0);do if((ie|0)==548){ie=0;a[((c[(g&p)>>2]|0)&n)+74>>0]=d[(v&n)>>0]&3;C=L;T=t}else if((ie|0)==766){c[(g&p)+60>>2]=0;g=g+25|0;if(!(c[(Fd&p)>>2]|0)){a[(g&n)>>0]=0;ie=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;t=f+(d[(s+(t*20|0)&n)+3>>0]<<2)+108|0;c[(t&p)>>2]=(c[(t&p)>>2]|0)+1;t=ie;ie=19;break}else{a[(g&n)>>0]=1;ie=19;break}}while(0);if((ie|0)==19){ie=0;if(c[(Cc&p)>>2]|0){u=je;g=m;m=x;break b}g=c[(be&p)>>2]|0;if(!((g|0)==0|m>>>0>>0)){y=c[(yc&p)>>2]|0;if(!(lc[g&127](c[(Zd&p)>>2]|0)|0)){y=y+m-((m>>>0)%(y>>>0)|0)|0;C=L;T=t}else{g=m;s=9;m=x;ie=1311;break a}}else{C=L;T=t}}t=T+1|0;if(!u){g=m;u=C}else{g=m;s=u;m=x;ie=1311;break a}}q:switch(ie|0){case 22:{ie=0;S=c[(s+(t*20|0)&p)+4>>2]|0;b[(z+(S*40|0)&o)+8>>1]=4;S=z+(S*40|0)|0;c[(S&p)>>2]=t;c[(S&p)+4>>2]=((t|0)<0)<<31>>31;S=z;T=s;U=W;V=X;r=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;break}case 23:{ie=0;S=c[(s+(t*20|0)&p)+4>>2]|0;r=c[(z+(S*40|0)&p)>>2]|0;b[(z+(S*40|0)&o)+8>>1]=128;S=z;T=s;U=W;V=X;break}case 24:{ie=0;r=c[(s+(t*20|0)&p)+4>>2]|0;u=z+(r*40|0)|0;T=(c[(s+(t*20|0)&p)+12>>2]|0)+-1|0;S=u;c[(S&p)>>2]=T;c[(S&p)+4>>2]=((T|0)<0)<<31>>31;b[(z+(r*40|0)&o)+8>>1]=4;r=c[(s+(t*20|0)&p)+8>>2]|0;S=z;T=s;U=W;V=X;r=(r|0)==0?t:r+-1|0;break}case 25:{ie=0;S=c[(s+(t*20|0)&p)+4>>2]|0;r=(c[(s+((c[(z+(S*40|0)&p)>>2]|0)*20|0)&p)+8>>2]|0)+-1|0;b[(z+(S*40|0)&o)+8>>1]=128;S=z;T=s;U=W;V=X;break}case 26:{ie=0;S=c[(s+(t*20|0)&p)+4>>2]|0;b[(z+(S*40|0)&o)+8>>1]=4;S=z+(S*40|0)|0;r=c[(S&p)>>2]|0;c[(S&p)>>2]=t;c[(S&p)+4>>2]=((t|0)<0)<<31>>31;S=z;T=s;U=W;V=X;break}case 27:{ie=0;if(!(b[(z+((c[(s+(r*20|0)&p)+12>>2]|0)*40|0)&o)+8>>1]&1)){S=z;T=s;U=W;V=X}else ie=28;break}case 44:{ie=0;T=c[(s+(r*20|0)&p)+4>>2]|0;S=u;c[(S&p)>>2]=T;c[(S&p)+4>>2]=((T|0)<0)<<31>>31;S=z;T=s;U=W;V=X;break}case 45:{ie=0;U=c[(s+(r*20|0)&p)+16>>2]|0;T=c[(U&p)+4>>2]|0;S=u;c[(S&p)>>2]=c[(U&p)>>2];c[(S&p)+4>>2]=T;S=z;T=s;U=W;V=X;break}case 46:{ie=0;b[(u&o)+8>>1]=8;h[(u&q)>>3]=+h[(c[(s+(r*20|0)&p)+16>>2]&q)>>3];S=z;T=s;U=W;V=X;break}case 60:{ie=0;J=(c[(s+(r*20|0)&p)+12>>2]|0)-(c[(s+(r*20|0)&p)+8>>2]|0)|0;t=(c[(s+(r*20|0)&p)+4>>2]|0)!=0?257:1;b[(u&o)+8>>1]=t;if((J|0)>0){w=J;A=u;do{v=A+48|0;A=A+40|0;if(!(b[(v&o)>>1]&9312))b[(v&o)>>1]=1;else vg(A);b[(v&o)>>1]=t;w=w+-1|0}while((w|0)>0);S=z;T=s;U=W;V=X;u=u+(J*40|0)|0}else{S=z;T=s;U=W;V=X}break}case 65:{ie=0;u=c[(s+(r*20|0)&p)+4>>2]|0;S=z+(u*40|0)+8|0;b[(S&o)>>1]=e[(S&o)>>1]&65406|1;S=z;T=s;U=W;V=X;u=z+(u*40|0)|0;break}case 66:{ie=0;Xg(u,c[(s+(r*20|0)&p)+16>>2]|0,c[(s+(r*20|0)&p)+4>>2]|0,0,0)|0;a[(u&n)+10>>0]=Jc;S=z;T=s;U=W;V=X;break}case 67:{ie=0;C=(c[(s+(r*20|0)&p)+4>>2]|0)+-1|0;A=c[(Ab&p)>>2]|0;w=A+(C*40|0)|0;v=e[(A+(C*40|0)&o)+8>>1]|0;if(v&18){t=c[(A+(C*40|0)&p)+12>>2]|0;if(v&16384)t=(c[(w&p)>>2]|0)+t|0;if((t|0)>(c[((c[(A+(C*40|0)&p)+32>>2]|0)&p)+88>>2]|0)){t=r;u=x;ie=1316;break c}}Zl(u,w,2048);S=z;T=s;U=W;V=X;break}case 72:{ie=0;t=c[(s+(r*20|0)&p)+12>>2]|0;v=c[(s+(r*20|0)&p)+8>>2]|0;J=t+v|0;u=z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0;v=z+(v*40|0)|0;while(1){_l(v,u);t=t+-1|0;if(!t)break;else{u=u+40|0;v=v+40|0}}S=z;T=s;U=W;V=X;u=z+(J*40|0)|0;break}case 74:{ie=0;r=c[(s+(t*20|0)&p)+12>>2]|0;u=z+((c[(s+(t*20|0)&p)+4>>2]|0)*40|0)|0;J=z+((c[(s+(t*20|0)&p)+8>>2]|0)*40|0)|0;while(1){Zl(J,u,4096);if((b[(J&o)+8>>1]&4096)!=0?(Vl(J)|0)!=0:0){y=ge;z=je;r=m;m=x;ie=1317;break a}if(!r){S=z;T=s;U=W;V=X;u=J;r=t;break q}r=r+-1|0;u=u+40|0;J=J+40|0}}case 79:{ie=0;u=z+((c[(s+(r*20|0)&p)+8>>2]|0)*40|0)|0;Zl(u,z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0,4096);S=z;T=s;U=W;V=X;break}case 94:{ie=0;K=c[(s+(t*20|0)&p)+4>>2]|0;J=z+(K*40|0)|0;L=c[(s+(t*20|0)&p)+8>>2]|0;I=z+(L*40|0)|0;M=c[(s+(t*20|0)&p)+12>>2]|0;u=z+(M*40|0)|0;H=z+(K*40|0)+8|0;E=b[(H&o)>>1]|0;F=z+(L*40|0)+8|0;C=b[(F&o)>>1]|0;if((C|E)&1){r=z+(M*40|0)+8|0;if(!(b[(r&o)>>1]&9312)){b[(r&o)>>1]=1;S=z;T=s;U=W;V=X;r=t;break}else{vg(u);S=z;T=s;U=W;V=X;r=t;break}}if(E&16384){if(Rg(J)|0){y=ge;z=je;r=m;m=x;ie=1317;break a}C=b[(F&o)>>1]|0}if((C&16384)!=0?(Rg(I)|0)!=0:0){y=ge;z=je;r=m;m=x;ie=1317;break a}if((b[(H&o)>>1]&18)==0?(bm(J,Jc,0)|0)!=0:0){y=ge;z=je;r=m;m=x;ie=1317;break a}if((b[(F&o)>>1]&18)==0?(bm(I,Jc,0)|0)!=0:0){y=ge;z=je;r=m;m=x;ie=1317;break a}E=z+(K*40|0)+12|0;A=z+(L*40|0)+12|0;r=(c[(A&p)>>2]|0)+(c[(E&p)>>2]|0)|0;if((r|0)>(c[(zb&p)>>2]|0)){u=x;ie=1316;break c}v=(M|0)==(L|0);if(eh(u,r+2|0,v&1)|0){y=ge;z=je;r=m;m=x;ie=1317;break a}w=z+(M*40|0)+8|0;b[(w&o)>>1]=e[(w&o)>>1]&48640|2;C=z+(M*40|0)+16|0;if(!v)kw(c[(C&p)>>2]|0,c[(z+(L*40|0)&p)+16>>2]|0,c[(A&p)>>2]|0)|0;kw((c[(C&p)>>2]|0)+(c[(A&p)>>2]|0)|0,c[(z+(K*40|0)&p)+16>>2]|0,c[(E&p)>>2]|0)|0;a[((c[(C&p)>>2]|0)+r&n)>>0]=0;a[((c[(C&p)>>2]|0)+r&n)+1>>0]=0;b[(w&o)>>1]=e[(w&o)>>1]|512;c[(z+(M*40|0)&p)+12>>2]=r;a[(z+(M*40|0)&n)+10>>0]=Jc;S=z;T=s;U=W;V=X;r=t;break}case 112:{ie=0;V=c[(s+(r*20|0)&p)+4>>2]|0;N=z+(V*40|0)|0;S=cm(N)|0;w=c[(s+(r*20|0)&p)+8>>2]|0;O=z+(w*40|0)|0;T=cm(O)|0;U=c[(s+(r*20|0)&p)+12>>2]|0;u=z+(U*40|0)|0;r:do if(!((b[(z+(w*40|0)&o)+8>>1]|b[(z+(V*40|0)&o)+8>>1])&1)){s:do if(!((S&4&T)<<16>>16))L=0;else{t=N;C=c[(t&p)>>2]|0;t=c[(t&p)+4>>2]|0;F=O;v=c[(F&p)>>2]|0;F=c[(F&p)+4>>2]|0;J=d[(P&n)>>0]|0;t:do if((J|0)==89){if((t|0)>-1|(t|0)==-1&C>>>0>4294967295){V=dw(-1,2147483647,v|0,F|0)|0;w=G;if(((F|0)>0|(F|0)==0&v>>>0>0)&((w|0)<(t|0)|(w|0)==(t|0)&V>>>0>>0)){L=1;break s}}else if((F|0)<0?(w=dw(1,-2147483648,v|0,F|0)|0,A=G,V=jw(C|0,t|0,1,0)|0,M=G,(A|0)>(M|0)|(A|0)==(M|0)&w>>>0>V>>>0):0){L=1;break s}v=jw(v|0,F|0,C|0,t|0)|0;t=G}else if((J|0)==91){L=qw(v|0,F|0,0,1)|0;K=G;E=rw(v|0,F|0,0,1)|0;A=G;J=qw(C|0,t|0,0,1)|0;I=G;M=rw(C|0,t|0,0,1)|0;w=G;V=jw(v|0,F|0,-1,0)|0;pe=G;H=jw(C|0,t|0,-1,0)|0;qe=G;H=qe>>>0<1|(qe|0)==1&H>>>0<4294967295;do if(pe>>>0<1|(pe|0)==1&V>>>0<4294967295)if(H){v=sw(v|0,F|0,C|0,t|0)|0;t=G;break t}else{H=sw(J|0,I|0,E|0,A|0)|0;F=G;break}else{if(!H){L=1;break s}H=sw(M|0,w|0,L|0,K|0)|0;F=G}while(0);V=jw(H|0,F|0,-2147483648,0)|0;v=G;if(v>>>0>0|(v|0)==0&V>>>0>4294967295){L=1;break s}J=sw(M|0,w|0,E|0,A|0)|0;I=G;if((I|0)>-1|(I|0)==-1&J>>>0>4294967295){V=dw(-1,2147483647,0,H|0)|0;w=G;if(((F|0)>0|(F|0)==0&H>>>0>0)&((w|0)<(I|0)|(w|0)==(I|0)&V>>>0>>0)){L=1;break s}}else if((F|0)<0?(w=dw(1,-2147483648,0,H|0)|0,t=G,V=jw(J|0,I|0,1,0)|0,v=G,(t|0)>(v|0)|(t|0)==(v|0)&w>>>0>V>>>0):0){L=1;break s}v=jw(0,H|0,J|0,I|0)|0;t=G}else if((J|0)==90){if((C|0)==0&(t|0)==-2147483648){if((F|0)>-1|(F|0)==-1&v>>>0>4294967295){L=1;break s}t=F^-2147483648;break}if((t|0)<0|(t|0)==0&C>>>0<1){V=dw(0,0,C|0,t|0)|0;M=G;w=dw(-1,2147483647,v|0,F|0)|0;A=G;if(((F|0)>0|(F|0)==0&v>>>0>0)&((A|0)<(M|0)|(A|0)==(M|0)&w>>>0>>0)){L=1;break s}}else if((F|0)<0?(w=dw(1,-2147483648,v|0,F|0)|0,A=G,V=dw(1,0,C|0,t|0)|0,M=G,(A|0)>(M|0)|(A|0)==(M|0)&w>>>0>V>>>0):0){L=1;break s}v=dw(v|0,F|0,C|0,t|0)|0;t=G}else if((J|0)==92){if((C|0)==0&(t|0)==0)break r;if((C|0)==-1&(t|0)==-1&((v|0)==0&(F|0)==-2147483648)){L=1;break s}v=qw(v|0,F|0,C|0,t|0)|0;t=G}else{if((C|0)==-1){if((t|0)==-1){C=1;t=0}}else if((C|0)==0?(t|0)==0:0)break r;v=rw(v|0,F|0,C|0,t|0)|0;t=G}while(0);S=u;c[(S&p)>>2]=v;c[(S&p)+4>>2]=t;S=z+(U*40|0)+8|0;b[(S&o)>>1]=e[(S&o)>>1]&48640|4;S=z;T=s;U=W;V=X;break q}while(0);D=+Ug(N);B=+Ug(O);C=d[(P&n)>>0]|0;if((C|0)==89)B=D+B;else if((C|0)==90)B=B-D;else if((C|0)==91)B=D*B;else if((C|0)==92){if(D==0.0)break;B=B/D}else{E=~~D>>>0;C=+R(D)>=1.0?(D>0.0?~~+da(+Q(D/4294967296.0),4294967295.0)>>>0:~~+ba((D-+(~~D>>>0))/4294967296.0)>>>0):0;I=~~B>>>0;J=+R(B)>=1.0?(B>0.0?~~+da(+Q(B/4294967296.0),4294967295.0)>>>0:~~+ba((B-+(~~B>>>0))/4294967296.0)>>>0):0;if(!E){if(!C)break}else if((E|0)==-1?(C|0)==-1:0){E=1;C=0}V=rw(I|0,J|0,E|0,C|0)|0;B=+(V>>>0)+4294967296.0*+(G|0)}h[(ke&q)>>3]=B;h[(Sd&q)>>3]=+h[(ke&q)>>3];if(!(+h[(ke&q)>>3]!=+h[(Sd&q)>>3])){h[(u&q)>>3]=B;V=z+(U*40|0)+8|0;b[(V&o)>>1]=e[(V&o)>>1]&48640|8;if(((T|S)&8)!=0|L<<24>>24!=0){S=z;T=s;U=W;V=X;break q}dm(u);S=z;T=s;U=W;V=X;break q}}while(0);t=z+(U*40|0)+8|0;if(!(b[(t&o)>>1]&9312)){b[(t&o)>>1]=1;S=z;T=s;U=W;V=X;break}else{vg(u);S=z;T=s;U=W;V=X;break}}case 166:{ie=0;t=c[(s+(r*20|0)&p)+4>>2]|0;if(t){u=z+(t*40|0)|0;t=z+(t*40|0)+8|0;if(!(b[(t&o)>>1]&9312)){S=u;c[(S&p)>>2]=0;c[(S&p)+4>>2]=0;b[(t&o)>>1]=4;S=z;T=s;U=W;V=X;u=J;break}else{Zg(u,0,0);S=z;T=s;U=W;V=X;u=J;break}}else{S=z;T=s;U=W;V=X;u=J}break}case 184:{ie=0;C=c[(s+(r*20|0)&p)+4>>2]|0;t=c[(s+(r*20|0)&p)+8>>2]|0;K=c[(s+(r*20|0)&p)+12>>2]|0;u=z+(K*40|0)|0;if((b[(z+(t*40|0)&o)+8>>1]|b[(z+(C*40|0)&o)+8>>1])&1){t=z+(K*40|0)+8|0;if(!(b[(t&o)>>1]&9312)){b[(t&o)>>1]=1;S=z;T=s;U=W;V=X;break}else{vg(u);S=z;T=s;U=W;V=X;break}}A=Vg(z+(t*40|0)|0)|0;L=G;J=Vg(z+(C*40|0)|0)|0;I=G;t=a[(H&n)>>0]|0;C=t&255;do if(t<<24>>24==86){A=J|A;t=I|L}else if(t<<24>>24!=85)if(!((J|0)==0&(I|0)==0)){if((I|0)<0){t=175-C&255;C=dw(0,0,J|0,I|0)|0;if((I|0)>-1|(I|0)==-1&J>>>0>4294967232){I=G;ie=194}}else{C=J;ie=194}if((ie|0)==194){ie=0;if(!((I|0)>0|(I|0)==0&C>>>0>63)){if(t<<24>>24==87){A=iw(A|0,L|0,C|0)|0;t=G;break}A=mw(A|0,L|0,C|0)|0;t=G;if((L|0)>=0)break;V=dw(64,0,C|0,I|0)|0;V=iw(-1,-1,V|0)|0;A=V|A;t=G|t;break}}if((L|0)>-1|(L|0)==-1&A>>>0>4294967295){A=0;t=0}else{t=(t<<24>>24!=87)<<31>>31;A=t;t=((t|0)<0)<<31>>31}}else t=L;else{A=J&A;t=I&L}while(0);S=u;c[(S&p)>>2]=A;c[(S&p)+4>>2]=t;S=z+(K*40|0)+8|0;b[(S&o)>>1]=e[(S&o)>>1]&48640|4;S=z;T=s;U=W;V=X;break}case 202:{ie=0;T=c[(s+(r*20|0)&p)+4>>2]|0;S=z+(T*40|0)|0;U=Vg(S)|0;T=z+(T*40|0)+8|0;b[(T&o)>>1]=e[(T&o)>>1]&48640|4;T=c[(s+(r*20|0)&p)+8>>2]|0;T=jw(U|0,G|0,T|0,((T|0)<0)<<31>>31|0)|0;c[(S&p)>>2]=T;c[(S&p)+4>>2]=G;S=z;T=s;U=W;V=X;break}case 203:{ie=0;u=c[(s+(r*20|0)&p)+4>>2]|0;v=z+(u*40|0)+8|0;t=b[(v&o)>>1]|0;if(!(t&4)){fm(z+(u*40|0)|0,67,Jc);t=b[(v&o)>>1]|0;if(!(t&4)){E=c[(s+(r*20|0)&p)+8>>2]|0;if(!E){t=r;u=20;ie=1318;break c}S=z;T=s;U=W;V=X;u=J;r=E+-1|0;break}}b[(v&o)>>1]=t&48640|4;S=z;T=s;U=W;V=X;u=J;break}case 208:{ie=0;t=c[(s+(r*20|0)&p)+4>>2]|0;u=z+(t*40|0)+8|0;if(!(b[(u&o)>>1]&4)){S=z;T=s;U=W;V=X;u=J}else{S=z+(t*40|0)|0;h[(S&q)>>3]=+Ug(S);b[(u&o)>>1]=e[(u&o)>>1]&48640|8;S=z;T=s;U=W;V=X;u=J}break}case 213:{ie=0;N=c[(s+(t*20|0)&p)+4>>2]|0;L=z+(N*40|0)|0;w=c[(s+(t*20|0)&p)+12>>2]|0;K=z+(w*40|0)|0;N=z+(N*40|0)+8|0;F=b[(N&o)>>1]|0;w=z+(w*40|0)+8|0;M=b[(w&o)>>1]|0;H=F&65535;A=M&65535;v=s+(t*20|0)+3|0;J=d[(v&n)>>0]|0;do if(!((M|F)&1)){J=J&71;if(J>>>0>66){if((H&14|0)==2){rh(L,0);A=b[(w&o)>>1]|0}else A=M;if((A&14)==2){rh(K,0);J=F;E=M}else{J=F;E=M}}else if((J|0)==66){if((H&2|0)!=0|(H&12|0)==0){I=M;J=F}else{bm(L,Jc,1)|0;I=b[(w&o)>>1]|0;J=(e[(N&o)>>1]&65024|H&511)&65535}V=I&65535;if((V&2|0)!=0|(V&12|0)==0)E=M;else{bm(K,Jc,1)|0;E=(e[(w&o)>>1]&65024|A&511)&65535}}else{J=F;E=M}if(b[(N&o)>>1]&16384){Rg(L)|0;J=J&49151}if(b[(w&o)>>1]&16384){Rg(K)|0;E=E&49151}if(a[(ge&n)>>0]|0){y=ge;z=je;r=m;m=x;ie=1317;break a}V=hm(K,L,c[(s+(t*20|0)&p)+16>>2]|0)|0;I=a[(C&n)>>0]|0;r=t;C=V}else{if(J&128){J=F;E=M;r=t;C=(F&1&M)<<16>>16!=0&(A&256|0)==0&1^1;break}if(J&32){u=c[(s+(t*20|0)&p)+8>>2]|0;S=z+(u*40|0)+8|0;b[(S&o)>>1]=e[(S&o)>>1]&48640|1;S=z;T=s;U=W;V=X;u=z+(u*40|0)|0;r=t;break q}if(!(J&16)){S=z;T=s;U=W;V=X;r=t;break q}S=z;T=s;U=W;V=X;r=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;break q}while(0);switch(I&255|0){case 79:{C=(C|0)==0&1;break}case 78:{C=(C|0)!=0&1;break}case 82:{C=C>>>31;break}case 81:{C=(C|0)<1&1;break}case 80:{C=(C|0)>0&1;break}default:C=C>>>31^1}if(!(a[(v&n)>>0]&32)){if(C)r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}else{V=c[(s+(r*20|0)&p)+8>>2]|0;u=z+(V*40|0)|0;V=z+(V*40|0)+8|0;b[(V&o)>>1]=e[(V&o)>>1]&48640|4;V=u;c[(V&p)>>2]=C;c[(V&p)+4>>2]=0}b[(N&o)>>1]=J;b[(w&o)>>1]=E;S=z;T=s;U=W;V=X;break}case 248:{ie=0;S=z;T=s;U=c[(s+(r*20|0)&p)+16>>2]|0;V=X;break}case 249:{ie=0;w=(a[(s+(r*20|0)&n)+3>>0]&1)==0?0:W;F=c[(s+(r*20|0)&p)+12>>2]|0;H=c[(s+(r*20|0)&p)+16>>2]|0;I=c[(s+(r*20|0)&p)+4>>2]|0;J=c[(s+(r*20|0)&p)+8>>2]|0;if((F|0)>0){t=(w|0)==0;v=H+16|0;E=0;while(1){if(t)A=E;else A=c[(w+(E<<2)&p)>>2]|0;C=a[((c[(v&p)>>2]|0)+E&n)>>0]|0;A=hm(z+((A+I|0)*40|0)|0,z+((A+J|0)*40|0)|0,c[(H+(E<<2)&p)+20>>2]|0)|0;E=E+1|0;if(A)break;if((E|0)>=(F|0)){S=z;T=s;U=0;V=0;break q}}S=z;T=s;U=0;V=C<<24>>24==0?A:0-A|0}else{S=z;T=s;U=0;V=X}break}case 256:{ie=0;if((X|0)<0){S=z;T=s;U=W;V=X;r=(c[(s+(t*20|0)&p)+4>>2]|0)+-1|0;break}if(!X){S=z;T=s;U=W;V=0;r=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;break}else{S=z;T=s;U=W;V=X;r=(c[(s+(t*20|0)&p)+12>>2]|0)+-1|0;break}}case 261:{ie=0;t=c[(s+(r*20|0)&p)+4>>2]|0;if(!(b[(z+(t*40|0)&o)+8>>1]&1)){u=Vg(z+(t*40|0)|0)|0;u=(u|0)!=0|(G|0)!=0?3:0}else u=6;t=c[(s+(r*20|0)&p)+8>>2]|0;if(!(b[(z+(t*40|0)&o)+8>>1]&1)){t=Vg(z+(t*40|0)|0)|0;t=((t|0)!=0|(G|0)!=0)&1}else t=2;t=a[(((a[(C&n)>>0]|0)==72?41680:41696)+t+u&n)>>0]|0;u=c[(s+(r*20|0)&p)+12>>2]|0;J=z+(u*40|0)|0;if(t<<24>>24==2){S=z+(u*40|0)+8|0;b[(S&o)>>1]=e[(S&o)>>1]&48640|1;S=z;T=s;U=W;V=X;u=J;break}else{S=J;c[(S&p)>>2]=t&255;c[(S&p)+4>>2]=0;S=z+(u*40|0)+8|0;b[(S&o)>>1]=e[(S&o)>>1]&48640|4;S=z;T=s;U=W;V=X;u=J;break}}case 268:{ie=0;t=c[(s+(r*20|0)&p)+4>>2]|0;u=c[(s+(r*20|0)&p)+8>>2]|0;J=z+(u*40|0)|0;u=z+(u*40|0)+8|0;if(!(b[(u&o)>>1]&9312))b[(u&o)>>1]=1;else vg(J);if(!(b[(z+(t*40|0)&o)+8>>1]&1)){b[(u&o)>>1]=4;T=Vg(z+(t*40|0)|0)|0;S=J;c[(S&p)>>2]=(T|0)==0&(G|0)==0&1;c[(S&p)+4>>2]=0;S=z;T=s;U=W;V=X;u=J}else{S=z;T=s;U=W;V=X;u=J}break}case 273:{ie=0;t=c[(s+(r*20|0)&p)+4>>2]|0;u=c[(s+(r*20|0)&p)+8>>2]|0;J=z+(u*40|0)|0;u=z+(u*40|0)+8|0;if(!(b[(u&o)>>1]&9312))b[(u&o)>>1]=1;else vg(J);if(!(b[(z+(t*40|0)&o)+8>>1]&1)){b[(u&o)>>1]=4;T=Vg(z+(t*40|0)|0)|0;S=J;c[(S&p)>>2]=~T;c[(S&p)+4>>2]=~G;S=z;T=s;U=W;V=X;u=J}else{S=z;T=s;U=W;V=X;u=J}break}case 278:{ie=0;t=(c[(Hb&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]|0)|0;if(!(a[(t&n)>>0]|0)){a[(t&n)>>0]=1;S=z;T=s;U=W;V=X;break}else{S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0;break}}case 281:{ie=0;t=c[(s+(r*20|0)&p)+4>>2]|0;if(!(b[(z+(t*40|0)&o)+8>>1]&1)){t=+Ug(z+(t*40|0)|0)!=0.0;t=(t^(a[(C&n)>>0]|0)==46)&1}else t=c[(s+(r*20|0)&p)+12>>2]|0;if(!t){S=z;T=s;U=W;V=X}else{S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}break}case 286:{ie=0;if(!(b[(z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)&o)+8>>1]&1)){S=z;T=s;U=W;V=X}else{S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}break}case 288:{ie=0;if(!(b[(z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)&o)+8>>1]&1)){S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}else{S=z;T=s;U=W;V=X}break}case 290:{ie=0;T=c[(s+(t*20|0)&p)+8>>2]|0;M=c[(s+(t*20|0)&p)+12>>2]|0;A=z+(M*40|0)|0;S=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;w=c[(S&p)+80>>2]|0;v=c[(S&p)>>2]|0;if(!(a[(S&n)+26>>0]|0)){if((v|0)!=0?(a[(v&n)+73>>0]|0)!=1:0){Td=jm(S)|0;ie=295}}else{Td=im(S)|0;ie=295}if((ie|0)==295?(ie=0,(Td|0)!=0):0){u=Td;ie=1318;break c}L=S+60|0;C=c[($d&p)>>2]|0;u:do if((c[(L&p)>>2]|0)==(C|0)){C=b[(S&o)+22>>1]|0;if((C&65535|0)>(T|0))ie=350;else{I=S+72|0;ie=318}}else{do if(a[(S&n)+25>>0]|0){if(!v){J=c[(S&p)+16>>2]|0;F=c[(z+(J*40|0)&p)+12>>2]|0;c[(S&p)+68>>2]=F;c[(S&p)+64>>2]=F;J=c[(z+(J*40|0)&p)+16>>2]|0;K=S+76|0;c[(K&p)>>2]=J;break}r=z+(M*40|0)+8|0;if(!(b[(r&o)>>1]&9312)){b[(r&o)>>1]=1;break u}else{vg(A);break u}}else{if(!(a[(S&n)+27>>0]&4)){km(v,td);I=e[(v&o)+40>>1]|0;J=c[(v&p)+32>>2]|0;c[(S&p)+76>>2]=J;C=c[(td&p)>>2]|0;c[(S&p)+64>>2]=C}else{C=S+64|0;lm(v,C);I=e[(v&o)+40>>1]|0;J=c[(v&p)+32>>2]|0;c[(S&p)+76>>2]=J;C=c[(C&p)>>2]|0}c[(S&p)+68>>2]=C>>>0>I>>>0?I:C;if(C>>>0>(c[(zb&p)>>2]|0)>>>0){u=x;ie=1316;break c}K=S+76|0;C=c[($d&p)>>2]|0;F=I}while(0);c[(L&p)>>2]=C;C=a[(J&n)>>0]|0;if(C<<24>>24>-1){H=C&255;c[(kd&p)>>2]=H;J=1}else{J=mm(J,kd)|0;H=c[(kd&p)>>2]|0}I=S+72|0;c[(I&p)>>2]=J&255;b[(S&o)+22>>1]=0;c[(w&p)>>2]=H;if(H>>>0>98307){u=x;ie=313;break c}if(H>>>0>(c[(S&p)+64>>2]|0)>>>0){u=x;ie=313;break c}if(F>>>0>>0){c[(K&p)>>2]=0;c[(S&p)+68>>2]=0;C=0;ie=318}else{C=0;ie=318}}while(0);do if((ie|0)==318){ie=0;J=c[(I&p)>>2]|0;H=c[(w&p)>>2]|0;if(J>>>0>>0){P=S+76|0;F=c[(P&p)>>2]|0;if(!F){U=Jd+0|0;V=U+40|0;do{c[(U&p)>>2]=0;U=U+4|0}while((U|0)<(V|0));J=nm(v,0,c[(w&p)>>2]|0,((d[(S&n)+27>>0]|0)>>>2&1^1)&255,Jd)|0;if(J){s=J;u=x;ie=1309;break c}C=S+22|0;O=C;C=b[(C&o)>>1]|0;J=c[(I&p)>>2]|0;H=c[(w&p)>>2]|0;N=c[(Jb&p)>>2]|0}else{O=S+22|0;N=F}E=C&65535;K=c[(w+(E<<2)&p)>>2]|0;c[(kd&p)>>2]=K;C=N+H|0;J=N+J|0;while(1){F=a[(J&n)>>0]|0;if(F<<24>>24>-1){L=F&255;c[(Ld&p)>>2]=L;J=J+1|0}else{J=J+((mm(J,Ld)|0)&255)|0;L=c[(Ld&p)>>2]|0}c[(S+(E<<2)&p)+84>>2]=L;if(L>>>0>11)F=(L+-12|0)>>>1;else F=d[(L&n)+34336>>0]|0;L=K+F|0;c[(kd&p)>>2]=L;if(L>>>0>>0){J=L;F=E;ie=331;break}F=E+1|0;c[(w+(F<<2)&p)>>2]=L;if((E|0)<(T|0)&J>>>0>>0){K=L;E=F}else break}if((ie|0)==331){ie=0;L=J;J=N+(H+1)|0}b[(O&o)>>1]=F;c[(I&p)>>2]=J-N;if(!(c[(P&p)>>2]|0)){if(!((b[(Kb&o)>>1]&9312)==0&(c[(Lb&p)>>2]|0)==0))Qg(Jd);b[(Kb&o)>>1]=1}if(J>>>0>=C>>>0){if(J>>>0>C>>>0){u=x;ie=343;break c}if((L|0)==(c[(S&p)+64>>2]|0))C=L;else{u=x;ie=343;break c}}else C=c[(S&p)+64>>2]|0;if(L>>>0>C>>>0){u=x;ie=343;break c}C=b[(O&o)>>1]|0}if((C&65535|0)<=(T|0)){if((a[(s+(t*20|0)&n)+1>>0]|0)==-8){Zl(A,c[(s+(t*20|0)&p)+16>>2]|0,2048);r=z+(M*40|0)+8|0;break}r=z+(M*40|0)+8|0;if(!(b[(r&o)>>1]&9312)){b[(r&o)>>1]=1;break}else{vg(A);break}}else ie=350}while(0);if((ie|0)==350){ie=0;r=z+(M*40|0)+8|0;if(b[(r&o)>>1]&9312)vg(A);J=c[(S+(T<<2)&p)+84>>2]|0;c[(Ld&p)>>2]=J;do if((c[(S&p)+68>>2]|0)>>>0<(c[(w+(T+1<<2)&p)>>2]|0)>>>0){V=a[(s+(t*20|0)&n)+3>>0]|0;if(!((V&255)>63?J>>>0>11&(J&1|0)==0|V<<24>>24<0:0)){if(J>>>0>11)C=(J+-12|0)>>>1;else C=d[(J&n)+34336>>0]|0;if(C){C=nm(v,c[(w+(T<<2)&p)>>2]|0,C,((d[(S&n)+27>>0]|0)>>>2&1^1)&255,A)|0;if(C){s=C;u=x;ie=1309;break c}om(c[(z+(M*40|0)&p)+16>>2]|0,J,A)|0;b[(r&o)>>1]=e[(r&o)>>1]&61439;break}}om(J>>>0<14?td:0,J,A)|0}else om((c[(S&p)+76>>2]|0)+(c[(w+(T<<2)&p)>>2]|0)|0,J,A)|0;while(0);a[(z+(M*40|0)&n)+10>>0]=Jc}w=e[(r&o)>>1]|0;if((w&4096|0)!=0?(Ac=z+(M*40|0)+16|0,Bc=c[(Ac&p)>>2]|0,(Bc|0)!=0):0){v=c[(z+(M*40|0)&p)+12>>2]|0;if(fh(A,v+2|0)|0){y=ge;z=je;r=m;m=x;ie=1317;break a}kw(c[(Ac&p)>>2]|0,Bc|0,v|0)|0;a[((c[(Ac&p)>>2]|0)+v&n)>>0]=0;a[((c[(Ac&p)>>2]|0)+v&n)+1>>0]=0;b[(r&o)>>1]=w&18|512;S=z;T=s;U=W;V=X;r=t}else{S=z;T=s;U=W;V=X;r=t}break}case 368:{ie=0;v=c[(s+(r*20|0)&p)+16>>2]|0;t=a[(v&n)>>0]|0;if(!(t<<24>>24)){S=z;T=s;U=W;V=X}else{w=z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0;while(1){v=v+1|0;fm(w,t,Jc);t=a[(v&n)>>0]|0;if(!(t<<24>>24)){S=z;T=s;U=W;V=X;break}else w=w+40|0}}break}case 371:{ie=0;U=c[(s+(t*20|0)&p)+4>>2]|0;C=c[(s+(t*20|0)&p)+16>>2]|0;V=z+(U*40|0)|0;U=z+((U+-1+(c[(s+(t*20|0)&p)+8>>2]|0)|0)*40|0)|0;A=a[(Mb&n)>>0]|0;T=c[(s+(t*20|0)&p)+12>>2]|0;u=z+(T*40|0)|0;if(C){r=a[(C&n)>>0]|0;v=V;while(1){C=C+1|0;fm(v,r,Jc);r=a[(C&n)>>0]|0;if(!(r<<24>>24))break;else v=v+40|0}}N=(A&255)>3;L=0;K=0;O=0;C=0;w=U;while(1){E=b[(w&o)+8>>1]|0;I=E&65535;v:do if(!(I&1)){do if(!(I&4)){if(I&8){J=7;ie=388;break v}J=c[(w&p)+12>>2]|0;if(I&16384)J=(c[(w&p)>>2]|0)+J|0;J=(J<<1)+12|I>>>1&1}else{I=w;J=c[(I&p)>>2]|0;I=c[(I&p)+4>>2]|0;H=ew(J|0,I|0,63)|0;H=H^J;F=G^I;if(F>>>0<0|(F|0)==0&H>>>0<128){if(!((J&1|0)==(J|0)&0==(I|0)&N)){J=1;ie=388;break v}J=H+8|0;break}if(F>>>0<0|(F|0)==0&H>>>0<32768){J=2;ie=388;break v}if(F>>>0<0|(F|0)==0&H>>>0<8388608){J=3;ie=388;break v}if(F>>>0<0|(F|0)==0&H>>>0<2147483648){J=4;ie=388;break v}J=F>>>0<32768|(F|0)==32768&H>>>0<0?5:6;ie=388;break v}while(0);c[(w&p)+28>>2]=J;if(J>>>0>11){I=J;J=(J+-12|0)>>>1}else ie=391}else{J=0;ie=388}while(0);if((ie|0)==388){c[(w&p)+28>>2]=J;ie=391}if((ie|0)==391){ie=0;I=J;J=d[(J&n)+34336>>0]|0}do if(E&16384)if((L|0)==0&(K|0)==0){E=c[(w&p)>>2]|0;J=J-E|0;E=E+C|0;break}else{Rg(w)|0;E=C;break}else E=C;while(0);L=jw(J|0,((J|0)<0)<<31>>31|0,L|0,K|0)|0;K=G;if(I>>>0<128)J=1;else{H=0;J=0;do{J=J+1|0;I=mw(I|0,H|0,7)|0;H=G}while(((I|0)!=0|(H|0)!=0)&(J|0)<9)}J=J+O|0;w=w+-40|0;if(w>>>0>>0){F=J;P=E;break}else{O=J;C=E}}if((F|0)<127)I=F+1|0;else{I=F;H=((F|0)<0)<<31>>31;J=0;do{J=J+1|0;I=mw(I|0,H|0,7)|0;H=G}while(((I|0)!=0|(H|0)!=0)&(J|0)<9);F=J+F|0;I=F;H=((F|0)<0)<<31>>31;C=0;do{C=C+1|0;I=mw(I|0,H|0,7)|0;H=G}while(((I|0)!=0|(H|0)!=0)&(C|0)<9);I=((J|0)<(C|0)&1)+F|0}J=((I|0)<0)<<31>>31;E=jw(I|0,J|0,L|0,K|0)|0;N=G;S=c[(zb&p)>>2]|0;O=((S|0)<0)<<31>>31;if((N|0)>(O|0)|(N|0)==(O|0)&E>>>0>S>>>0){u=x;ie=1316;break c}if(fh(u,E)|0){y=ge;z=je;r=m;m=x;ie=1317;break a}A=c[(z+(T*40|0)&p)+16>>2]|0;if(I>>>0<128){a[(A&n)>>0]=I;K=1;L=V}else{K=(pm(A,I,J)|0)&255;L=V}while(1){H=c[(L&p)+28>>2]|0;if(H>>>0<128){a[(A+K&n)>>0]=H;J=1}else J=(pm(A+K|0,H,0)|0)&255;K=J+K|0;J=A+I|0;if(!(H>>>0<8&(H|0)!=0))if(H>>>0>11){C=c[(L&p)+12>>2]|0;kw(J|0,c[(L&p)+16>>2]|0,C|0)|0}else C=0;else{J=L;if(H>>>0>11)C=(H+-12|0)>>>1;else C=d[(H&n)+34336>>0]|0;F=c[(J&p)>>2]|0;J=c[(J&p)+4>>2]|0;H=C;while(1){H=H+-1|0;a[(A+H+I&n)>>0]=F;F=mw(F|0,J|0,8)|0;if(!H)break;else J=G}}L=L+40|0;if(L>>>0>U>>>0)break;else I=C+I|0}c[(z+(T*40|0)&p)+12>>2]=E;r=z+(T*40|0)+8|0;b[(r&o)>>1]=16;if(P){c[(u&p)>>2]=P;b[(r&o)>>1]=16400}a[(z+(T*40|0)&n)+10>>0]=1;S=z;T=s;U=W;V=X;r=t;break}case 446:{ie=0;if((c[(ae&p)>>2]|0)>0){u=x;ie=447;break c}if(!v)w=0;else{t=v;while(1)if(!(a[(t&n)>>0]|0))break;else t=t+1|0;w=t-v&1073741823}u=sm(le,0,(c[(Ob&p)>>2]|0)+(c[(Nb&p)>>2]|0)|0)|0;if(u){t=r;ie=1318;break c}t=mh(le,w+33|0,0)|0;if(!t){S=z;T=s;U=W;V=X;u=L}else{V=t+32|0;c[(t&p)>>2]=V;kw(V|0,v|0,w+1|0)|0;if(!(a[(ee&n)>>0]|0))c[(Ob&p)>>2]=(c[(Ob&p)>>2]|0)+1;else{a[(ee&n)>>0]=0;a[(Sb&n)>>0]=1}c[(t&p)+24>>2]=c[(Pb&p)>>2];c[(Pb&p)>>2]=t;S=Qb;T=c[(S&p)+4>>2]|0;U=t+8|0;c[(U&p)>>2]=c[(S&p)>>2];c[(U&p)+4>>2]=T;U=Rb;T=c[(U&p)+4>>2]|0;S=t+16|0;c[(S&p)>>2]=c[(U&p)>>2];c[(S&p)+4>>2]=T;S=z;T=s;U=W;V=X;u=L}break}case 486:{c[(Ob&p)>>2]=(c[(Ob&p)>>2]|0)+-1;ie=488;break}case 525:{ie=0;wm(c[((c[(Xd&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<4)&p)+4>>2]|0,c[(s+(r*20|0)&p)+12>>2]|0,Yc);T=c[(Yc&p)>>2]|0;S=u;c[(S&p)>>2]=T;c[(S&p)+4>>2]=((T|0)<0)<<31>>31;S=z;T=s;U=W;V=X;break}case 558:{ie=0;v=xm(f,c[(s+(t*20|0)&p)+4>>2]|0,c[(s+(t*20|0)&p)+8>>2]|0,-1,1)|0;if(!v){y=ge;z=je;r=m;m=x;ie=1317;break a}r=c[(s+(t*20|0)&p)+16>>2]|0;C=v+8|0;c[(C&p)>>2]=r;A=c[(s+(t*20|0)&p)+12>>2]|0;r=e[(r&o)+6>>1]<<2;u=r+148|0;w=mh(le,u,0)|0;if(!w){s=v;u=x;ie=560;break c}fw(w|0,0,u|0)|0;c[(v&p)+56>>2]=w;V=w+128|0;c[(w&p)+28>>2]=V;kw(V|0,c[(C&p)>>2]|0,r+20|0)|0;c[(w&p)+140>>2]=0;if(A)b[(w&o)+134>>1]=A;r=c[(Xd&p)>>2]|0;u=c[((c[((c[(r&p)+4>>2]|0)&p)+4>>2]|0)&p)+32>>2]|0;c[(w&p)+12>>2]=u;a[(w&n)+59>>0]=1;a[(w&n)+57>>0]=0;c[(w&p)+24>>2]=le;c[(w&p)+72>>2]=w;if(((a[(_b&n)>>0]|0)!=2?(Dc=c[2242]|0,c[(w&p)>>2]=ca(Dc,u)|0,V=c[((c[(r&p)+12>>2]|0)&p)+80>>2]|0,V=(V|0)<(Dc|0)?Dc:V,Dc=((u|0)<0)<<31>>31,V=sw(V|0,((V|0)<0)<<31>>31|0,u|0,Dc|0)|0,U=G,c[(w&p)+4>>2]=(U|0)<0|(U|0)==0&V>>>0<536870912?V:536870912,(c[2234]|0)==0):0)?(c[(w&p)+52>>2]=u,V=qg(u,Dc)|0,c[(w&p)+40>>2]=V,(V|0)==0):0){s=7;u=x;ie=1309;break c}else{S=z;T=s;U=W;V=X;u=L;r=t}break}case 566:{ie=0;T=(c[((c[(Ib&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<2)&p)>>2]|0)+40|0;V=T;U=c[(V&p)>>2]|0;V=c[(V&p)+4>>2]|0;S=jw(U|0,V|0,1,0)|0;c[(T&p)>>2]=S;c[(T&p)+4>>2]=G;if((U|0)==0&(V|0)==0){S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}else{S=z;T=s;U=W;V=X}break}case 568:{ie=0;r=xm(f,c[(s+(t*20|0)&p)+4>>2]|0,c[(s+(t*20|0)&p)+12>>2]|0,-1,0)|0;if(!r){y=ge;z=je;r=m;m=x;ie=1317;break a}a[(r&n)+25>>0]=1;c[(r&p)+16>>2]=c[(s+(t*20|0)&p)+8>>2];S=r+27|0;a[(S&n)>>0]=a[(S&n)>>0]|4;S=z;T=s;U=W;V=X;r=t;break}case 570:{ie=0;S=s+(r*20|0)+4|0;Bm(f,c[((c[(Ib&p)>>2]|0)+(c[(S&p)>>2]<<2)&p)>>2]|0);c[((c[(Ib&p)>>2]|0)+(c[(S&p)>>2]<<2)&p)>>2]=0;S=z;T=s;U=W;V=X;break}case 571:{ie=0;H=c[((c[(Ib&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<2)&p)>>2]|0;a[(H&n)+25>>0]=0;if(!(a[(H&n)+27>>0]&4)){V=c[(s+(r*20|0)&p)+16>>2]|0;c[(wd&p)>>2]=c[(H&p)+8>>2];b[($b&o)>>1]=V;a[(cc&n)>>0]=(K<<1&2^2)+255;V=c[(s+(r*20|0)&p)+12>>2]|0;t=z+(V*40|0)|0;c[(dc&p)>>2]=t;if(b[(z+(V*40|0)&o)+8>>1]&16384)Rg(t)|0;u=Cm(c[(H&p)>>2]|0,wd,0,0,0,Ad)|0;if(!u){u=K;J=L}else{t=r;ie=1318;break c}}else{C=c[(s+(r*20|0)&p)+12>>2]|0;A=z+(C*40|0)|0;C=z+(C*40|0)+8|0;if((b[(C&o)>>1]&14)==2)rh(A,0);J=Vg(A)|0;I=G;C=e[(C&o)>>1]|0;do if(!(C&4)){if(!(C&8)){S=z;T=s;U=W;V=X;u=L;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0;break q}B=+h[(A&q)>>3];D=+(J>>>0)+4294967296.0*+(I|0);if(B>31)+K|0;break}else{C=(B>D&(K&1|0)==0&1)+K|0;break}}else C=K;while(0);u=Cm(c[(H&p)>>2]|0,0,J,I,0,Ad)|0;V=H+48|0;c[(V&p)>>2]=J;c[(V&p)+4>>2]=I;if(!u){u=C;J=L}else{t=r;ie=1318;break c}}a[(H&n)+26>>0]=0;c[(H&p)+60>>2]=0;t=c[(Ad&p)>>2]|0;do if((u|0)>63){if((t|0)>=0?!((t|0)==0&(u|0)==65):0){c[(Ad&p)>>2]=0;S=z;T=s;U=W;V=X;u=J;break q}c[(Ad&p)>>2]=0;u=Dm(c[(H&p)>>2]|0,Ad)|0;if(!u)ie=593;else{t=r;ie=1318;break c}}else{if((t|0)<=0?!((t|0)==0&(u|0)==62):0){t=(a[((c[(H&p)>>2]|0)&n)+73>>0]|0)!=1&1;c[(Ad&p)>>2]=t;break}c[(Ad&p)>>2]=0;u=Em(c[(H&p)>>2]|0,Ad)|0;if(!u)ie=593;else{t=r;ie=1318;break c}}while(0);if((ie|0)==593){ie=0;t=c[(Ad&p)>>2]|0}if(!t){S=z;T=s;U=W;V=X;u=J}else{S=z;T=s;U=W;V=X;u=J;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}break}case 596:{ie=0;S=c[((c[(Ib&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<2)&p)>>2]|0;a[(S&n)+25>>0]=0;U=Vg(z+((c[(s+(r*20|0)&p)+8>>2]|0)*40|0)|0)|0;T=S+48|0;c[(T&p)>>2]=U;c[(T&p)+4>>2]=G;a[(S&n)+26>>0]=1;S=z;T=s;U=W;V=X;break}case 597:{ie=0;I=c[((c[(Ib&p)>>2]|0)+(c[(s+(t*20|0)&p)+4>>2]<<2)&p)>>2]|0;r=c[(s+(t*20|0)&p)+12>>2]|0;J=z+(r*40|0)|0;c[(od&p)>>2]=0;K=s+(t*20|0)+16|0;C=c[(K&p)>>2]|0;v=I+8|0;A=c[(v&p)>>2]|0;w:do if((C|0)>0){c[(xd&p)>>2]=A;C=C&65535;b[(ec&o)>>1]=C;c[(fc&p)>>2]=J;if(!(C<<16>>16))v=xd;else{r=J;A=0;while(1){if(b[(r+(A*40|0)&o)+8>>1]&16384){Rg(r+(A*40|0)|0)|0;C=b[(ec&o)>>1]|0}A=A+1|0;if((A|0)>=(C&65535|0)){v=xd;break w}r=c[(fc&p)>>2]|0}}}else{C=Fm(A,Sc,191,od)|0;if(!C){y=ge;z=je;r=m;m=x;ie=1317;break a}if(b[(z+(r*40|0)&o)+8>>1]&16384)Rg(J)|0;Gm(c[(v&p)>>2]|0,c[(z+(r*40|0)&p)+12>>2]|0,c[(z+(r*40|0)&p)+16>>2]|0,C);v=C}while(0);a[(v&n)+6>>0]=0;x:do if((a[(H&n)>>0]|0)==67?(Ec=b[(v&o)+4>>1]|0,Ec<<16>>16!=0):0){C=c[(v&p)+8>>2]|0;A=0;while(1){if(b[(C+(A*40|0)&o)+8>>1]&1)break;A=A+1|0;if((A|0)>=(Ec&65535|0)){L=t;r=t;break x}}L=t;r=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0}else{L=t;r=t}while(0);C=Cm(c[(I&p)>>2]|0,v,0,0,0,Bd)|0;if(!(c[(K&p)>>2]|0))mg(le,c[(od&p)>>2]|0);if(C){t=r;s=C;u=x;ie=1309;break c}t=c[(Bd&p)>>2]|0;c[(I&p)+12>>2]=t;t=(t|0)==0;a[(I&n)+25>>0]=t&1^1;a[(I&n)+26>>0]=0;c[(I&p)+60>>2]=0;if((a[(H&n)>>0]|0)==69){if(!t){S=z;T=s;U=W;V=X;break}S=z;T=s;U=W;V=X;r=(c[(s+(L*20|0)&p)+8>>2]|0)+-1|0;break}else{if(t){S=z;T=s;U=W;V=X;break}S=z;T=s;U=W;V=X;r=(c[(s+(L*20|0)&p)+8>>2]|0)+-1|0;break}}case 624:{ie=0;S=(c[((c[(Ib&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<2)&p)>>2]|0)+40|0;T=S;U=c[(T&p)>>2]|0;T=c[(T&p)+4>>2]|0;V=jw(U|0,T|0,1,0)|0;c[(S&p)>>2]=V;c[(S&p)+4>>2]=G;S=u;c[(S&p)>>2]=U;c[(S&p)+4>>2]=T;S=z;T=s;U=W;V=X;break}case 647:{ie=0;I=c[(s+(r*20|0)&p)+8>>2]|0;v=c[((c[(Ib&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<2)&p)>>2]|0;t=c[(s+(r*20|0)&p)+12>>2]|0;if(C<<24>>24==75){F=z+(t*40|0)|0;E=c[(F&p)>>2]|0;F=c[(F&p)+4>>2]|0}else{E=t;F=((t|0)<0)<<31>>31}H=s+(r*20|0)+3|0;J=a[(H&n)>>0]|0;if(J&1)c[(ub&p)>>2]=(c[(ub&p)>>2]|0)+1;if(J&2){m=ne;c[(m&p)>>2]=E;c[(m&p)+4>>2]=F;m=E;l=F}C=b[(z+(I*40|0)&o)+8>>1]|0;if(C&1){c[(z+(I*40|0)&p)+16>>2]=0;c[(z+(I*40|0)&p)+12>>2]=0}if(!(J&16))A=0;else A=c[(v&p)+12>>2]|0;if(!(C&16384))C=0;else C=c[(z+(I*40|0)&p)>>2]|0;C=Im(c[(v&p)>>2]|0,0,E,F,c[(z+(I*40|0)&p)+16>>2]|0,c[(z+(I*40|0)&p)+12>>2]|0,C,(J&255)>>>3&1,A)|0;a[(v&n)+26>>0]=0;c[(v&p)+60>>2]=0;if(C){t=r;s=C;u=x;ie=1309;break c}t=c[(gc&p)>>2]|0;if((t|0)!=0?(Fc=c[(s+(r*20|0)&p)+16>>2]|0,(Fc|0)!=0):0){bc[t&1](c[(hc&p)>>2]|0,(a[(H&n)>>0]&4)!=0?23:18,c[((c[(Xd&p)>>2]|0)+(a[(v&n)+24>>0]<<4)&p)>>2]|0,Fc,E,F);S=z;T=s;U=W;V=X}else{S=z;T=s;U=W;V=X}break}case 671:{ie=0;S=c[(ub&p)>>2]|0;c[(vb&p)>>2]=S;c[(wb&p)>>2]=(c[(wb&p)>>2]|0)+S;c[(ub&p)>>2]=0;S=z;T=s;U=W;V=X;break}case 672:{ie=0;J=c[((c[(Ib&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<2)&p)>>2]|0;I=c[(s+(r*20|0)&p)+12>>2]|0;H=c[(s+(r*20|0)&p)+16>>2]|0;t=c[(J&p)+56>>2]|0;A=t+32|0;C=c[(A&p)>>2]|0;J=c[(J&p)+8>>2]|0;if(!C){C=Fm(J,0,0,md)|0;c[(A&p)>>2]=C;if(!C){t=r;s=7;u=x;ie=1309;break c}b[(C&o)+4>>1]=H}if(!(a[(t&n)+56>>0]|0)){t=c[(t&p)+36>>2]|0;A=t;t=t+8|0}else{V=c[(t&p)+20>>2]|0;t=c[((c[(V&p)+8>>2]|0)&p)+4>>2]|0;V=c[(V&p)+12>>2]|0;A=V+(t*56|0)+20|0;t=c[(V+(t*56|0)&p)+32>>2]|0}Gm(J,c[(A&p)>>2]|0,t,C);y:do if((H|0)>0){t=c[(C&p)+8>>2]|0;v=0;while(1){if(b[(t+(v*40|0)&o)+8>>1]&1)break y;v=v+1|0;if((v|0)>=(H|0)){ie=682;break}}}else ie=682;while(0);if((ie|0)==682){ie=0;if(!(Km(c[(z+(I*40|0)&p)+12>>2]|0,c[(z+(I*40|0)&p)+16>>2]|0,C,0)|0)){S=z;T=s;U=W;V=X;break}}S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0;break}case 700:{ie=0;b[(u&o)+8>>1]=1;S=z;T=s;U=W;V=X;break}case 708:{ie=0;b[(u&o)+8>>1]=1;S=z;T=s;U=W;V=X;break}case 711:{ie=0;t=c[((c[(Ib&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<2)&p)>>2]|0;a[(t&n)+25>>0]=1;c[(t&p)+60>>2]=0;t=c[(t&p)>>2]|0;if(!t){S=z;T=s;U=W;V=X}else{S=t+56|0;Wc(c[(S&p)>>2]|0);c[(S&p)>>2]=0;a[(t&n)+73>>0]=0;S=z;T=s;U=W;V=X}break}case 801:{ie=0;t=c[((c[(Ib&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<2)&p)>>2]|0;u=c[(t&p)>>2]|0;K=L+8|0;b[(K&o)>>1]=1;if((a[(u&n)+73>>0]|0)!=1?(Vd=jm(t)|0,(Vd|0)!=0):0){t=r;u=Vd;ie=1318;break c}if(!(a[(t&n)+25>>0]|0)){V=Sd;c[(V&p)>>2]=0;c[(V&p)+4>>2]=0;km(u,Sd);b[(qc&o)>>1]=0;c[(sc&p)>>2]=le;c[(uc&p)>>2]=0;u=nm(u,0,c[(Sd&p)>>2]|0,1,$c)|0;do if(!u){t=c[(vc&p)>>2]|0;u=a[(t&n)>>0]|0;if(u<<24>>24>-1){C=u&255;c[(qd&p)>>2]=C}else{mm(t,qd)|0;C=c[(qd&p)>>2]|0}if(!(C>>>0<3?1:(C|0)>(c[(wc&p)>>2]|0))){t=(c[(vc&p)>>2]|0)+(C+-1)|0;u=a[(t&n)>>0]|0;if(u<<24>>24>-1){u=u&255;c[(Nd&p)>>2]=u}else{mm(t,Nd)|0;u=c[(Nd&p)>>2]|0}if(!((u+-1|0)>>>0>8|(u|0)==7)){if(u>>>0>11)t=(u+-12|0)>>>1;else t=d[(u&n)+34336>>0]|0;v=c[(wc&p)>>2]|0;if(v>>>0>=(t+C|0)>>>0){om((c[(vc&p)>>2]|0)+(v-t)|0,u,Qd)|0;v=Qd;t=c[(v&p)>>2]|0;v=c[(v&p)+4>>2]|0;if((b[(qc&o)>>1]&9312)==0&(c[(uc&p)>>2]|0)==0){u=0;break}Qg($c);u=0;break}}}if(!((b[(qc&o)>>1]&9312)==0&(c[(uc&p)>>2]|0)==0))Qg($c);c[(ke&p)>>2]=68698;c[(ke&p)+4>>2]=10788;bd(11,13600,ke);u=11;t=0;v=0}else{t=0;v=0}while(0);if(u){t=r;ie=1318;break c}S=L;c[(S&p)>>2]=t;c[(S&p)+4>>2]=v;b[(K&o)>>1]=4;S=z;T=s;U=W;V=X;u=L}else{S=z;T=s;U=W;V=X;u=L}break}case 865:{ie=0;w=c[(C&p)>>2]|0;C=c[((c[(Xd&p)>>2]|0)+(K<<4)&p)+12>>2]|0;t=c[(C&p)+16>>2]|0;if(t)do{v=(c[(t&p)+8>>2]|0)+32|0;if((c[(v&p)>>2]|0)==(A|0))c[(v&p)>>2]=w;t=c[(t&p)>>2]|0}while((t|0)!=0);t=c[(C&p)+32>>2]|0;if(t)do{v=(c[(t&p)+8>>2]|0)+40|0;if((c[(v&p)>>2]|0)==(A|0))c[(v&p)>>2]=w;t=c[(t&p)>>2]|0}while((t|0)!=0);S=z;T=s;U=W;V=X;x=K+1&255;break}case 878:{ie=0;_m(le,u);S=z;T=s;U=W;V=X;u=J;break}case 881:{ie=0;V=c[(s+(r*20|0)&p)+4>>2]|0;c[(Zc&p)>>2]=le;c[(ia&p)>>2]=V;c[(ja&p)>>2]=je;u=c[(s+(r*20|0)&p)+16>>2]|0;c[(ke&p)>>2]=c[((c[(Xd&p)>>2]|0)+(V<<4)&p)>>2];c[(ke&p)+4>>2]=(V|0)==1?13184:13208;c[(ke&p)+8>>2]=u;u=uh(le,42048,ke)|0;if(!u){t=r;u=x;ie=882;break c}a[(ka&n)>>0]=1;c[(la&p)>>2]=0;t=Qe(le,u,22,Zc,0)|0;t=(t|0)==0?c[(la&p)>>2]|0:t;mg(le,u);a[(ka&n)>>0]=0;if(!t){S=z;T=s;U=W;V=X;u=J}else{s=t;t=r;u=x;ie=884;break c}break}case 886:{ie=0;kg(le,Ik((c[((c[(Xd&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<4)&p)+12>>2]|0)+8|0,c[(s+(r*20|0)&p)+16>>2]|0,0)|0);c[(Tb&p)>>2]=c[(Tb&p)>>2]|2;S=z;T=s;U=W;V=X;break}case 887:{ie=0;C=Ik((c[((c[(Xd&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<4)&p)+12>>2]|0)+24|0,c[(s+(r*20|0)&p)+16>>2]|0,0)|0;if(C){t=(c[(C&p)+12>>2]|0)+8|0;u=c[(t&p)>>2]|0;z:do if((u|0)==(C|0))c[(t&p)>>2]=c[(C&p)+20>>2];else{do{if(!u)break z;t=u+20|0;u=c[(t&p)>>2]|0}while((u|0)!=(C|0));c[(t&p)>>2]=c[(C&p)+20>>2]}while(0);Jk(le,C)}c[(Tb&p)>>2]=c[(Tb&p)>>2]|2;S=z;T=s;U=W;V=X;u=J;break}case 895:{ie=0;C=Ik((c[((c[(Xd&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<4)&p)+12>>2]|0)+40|0,c[(s+(r*20|0)&p)+16>>2]|0,0)|0;if(!C){S=z;T=s;U=W;V=X}else{t=c[(C&p)+20>>2]|0;if((t|0)==(c[(C&p)+24>>2]|0)){t=bn(t+8|0,c[(C&p)+4>>2]|0,ke)|0;if(!t)t=0;else t=c[(t&p)+8>>2]|0;v=t+64|0;while(1){V=c[(v&p)>>2]|0;t=V+32|0;if((V|0)==(C|0))break;else v=t}c[(v&p)>>2]=c[(t&p)>>2]}jg(le,C);c[(Tb&p)>>2]=c[(Tb&p)>>2]|2;S=z;T=s;U=W;V=X}break}case 903:{ie=0;L=c[(s+(t*20|0)&p)+8>>2]|0;v=mh(le,(L<<2)+4|0,0)|0;if(!v){y=ge;z=je;r=m;m=x;ie=1317;break a}A=c[(s+(t*20|0)&p)+12>>2]|0;r=c[(s+(t*20|0)&p)+4>>2]|0;M=z+(r*40|0)|0;if((L|0)>0){C=0;do{V=Vg(z+((C+r|0)*40|0)|0)|0;c[(v+(C<<2)&p)>>2]=V;C=C+1|0}while((C|0)!=(L|0));C=L}else C=0;c[(v+(C<<2)&p)>>2]=0;I=c[((c[(Xd&p)>>2]|0)+(d[(s+(t*20|0)&n)+3>>0]<<4)&p)+4>>2]|0;P=z+(A*40|0)|0;V=c[(P&p)>>2]|0;O=c[(I&p)+4>>2]|0;c[(O&p)+4>>2]=c[(I&p)>>2];I=c[(O&p)>>2]|0;w=c[((c[(I&p)+204>>2]|0)&p)+12>>2]|0;c[(Sd&p)>>2]=O;c[(ma&p)>>2]=I;I=c[(O&p)+44>>2]|0;c[(na&p)>>2]=I;c[(oa&p)>>2]=V;c[(pa&p)>>2]=0;c[(pa&p)+4>>2]=0;c[(pa&p)+8>>2]=0;c[(pa&p)+12>>2]=0;c[(pa&p)+16>>2]=0;do if(!I){A=0;C=0}else{J=(I>>>3)+1|0;H=qg(J,0)|0;if(!H){c[(sa&p)>>2]=0;A=0;C=1;break}fw(H|0,0,J|0)|0;c[(sa&p)>>2]=H;N=O+32|0;J=(((c[2514]|0)>>>0)/((c[(N&p)>>2]|0)>>>0)|0)+1|0;if(J>>>0<=I>>>0){V=H+(J>>>3)|0;a[(V&n)>>0]=d[(V&n)>>0]|1<<(J&7)}c[(ua&p)>>2]=Nd;c[(va&p)>>2]=Nd;c[(ta&p)>>2]=0;c[(wa&p)>>2]=0;c[(xa&p)>>2]=100;c[(ya&p)>>2]=1e9;a[(Aa&n)>>0]=0;a[(za&n)>>0]=2;c[(ra&p)>>2]=43592;C=c[((c[(O&p)+12>>2]|0)&p)+56>>2]|0;cn(Sd,1,d[(C&n)+33>>0]<<16|d[(C&n)+32>>0]<<24|d[(C&n)+34>>0]<<8|d[(C&n)+35>>0],d[(C&n)+37>>0]<<16|d[(C&n)+36>>0]<<24|d[(C&n)+38>>0]<<8|d[(C&n)+39>>0]);c[(ra&p)>>2]=0;C=c[(oa&p)>>2]|0;if(!((L|0)<1|(C|0)==0)){F=O+17|0;H=0;do{I=v+(H<<2)|0;J=c[(I&p)>>2]|0;if(J){if((a[(F&n)>>0]|0)!=0&(J|0)>1){dn(Sd,J,1,0);J=c[(I&p)>>2]|0}c[(ra&p)>>2]=43608;en(Sd,J,0,0)|0;c[(ra&p)>>2]=0;C=c[(oa&p)>>2]|0}H=H+1|0}while(!((H|0)>=(L|0)|(C|0)==0))}if(!((c[(na&p)>>2]|0)==0|(C|0)==0)){E=O+17|0;C=O+36|0;L=1;do{H=L>>>3;J=a[((c[(sa&p)>>2]|0)+H&n)>>0]|0;F=1<<(L&7);do if(!(J&255&F)){if(L>>>0<2)I=0;else{I=L+-2|0;I=I-((I>>>0)%(((((c[(C&p)>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;I=((I+1|0)==(((c[2514]|0)>>>0)/((c[(N&p)>>2]|0)>>>0)|0|0)?3:2)+I|0}if((I|0)==(L|0)?(a[(E&n)>>0]|0)!=0:0)break;c[(ke&p)>>2]=L;fn(Sd,43632,ke);J=a[((c[(sa&p)>>2]|0)+H&n)>>0]|0}while(0);do if(J&255&F){if(L>>>0<2)J=0;else{J=L+-2|0;J=J-((J>>>0)%(((((c[(C&p)>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;J=((J+1|0)==(((c[2514]|0)>>>0)/((c[(N&p)>>2]|0)>>>0)|0|0)?3:2)+J|0}if((J|0)!=(L|0))break;if(!(a[(E&n)>>0]|0))break;c[(ke&p)>>2]=L;fn(Sd,43656,ke)}while(0);L=L+1|0}while(!((c[(oa&p)>>2]|0)==0?1:L>>>0>(c[(na&p)>>2]|0)>>>0))}C=c[((c[((c[(O&p)>>2]|0)&p)+204>>2]|0)&p)+12>>2]|0;if((w|0)!=(C|0)){c[(ke&p)>>2]=w;c[(ke&p)+4>>2]=C;fn(Sd,43696,ke)}Wc(c[(sa&p)>>2]|0);if(c[(qa&p)>>2]|0){gn(ta);A=0;C=(c[(pa&p)>>2]|0)+1|0;break}C=c[(pa&p)>>2]|0;if(!C)gn(ta);A=tg(ta)|0}while(0);mg(le,v);U=P;U=dw(c[(U&p)>>2]|0,c[(U&p)+4>>2]|0,C|0,((C|0)<0)<<31>>31|0)|0;V=P;c[(V&p)>>2]=U;c[(V&p)+4>>2]=G;r=z+(r*40|0)+8|0;if(!(b[(r&o)>>1]&9312))b[(r&o)>>1]=1;else vg(M);if(C){if(!A){y=ge;z=je;r=m;m=x;ie=1317;break a}Xg(M,A,-1,1,1)|0}Yl(M,xb)|0;S=z;T=s;U=W;V=X;r=t;break}case 947:{ie=0;v=c[(s+(t*20|0)&p)+4>>2]|0;r=z+(v*40|0)|0;u=c[(s+(t*20|0)&p)+8>>2]|0;v=z+(v*40|0)+8|0;if((b[(v&o)>>1]&32)==0?(hn(r),(b[(v&o)>>1]&32)==0):0){y=ge;z=je;r=m;m=x;ie=1317;break a}S=z+(u*40|0)|0;jn(c[(r&p)>>2]|0,c[(S&p)>>2]|0,c[(S&p)+4>>2]|0);S=z;T=s;U=W;V=X;u=J;r=t;break}case 966:{ie=0;r=c[(s+(t*20|0)&p)+4>>2]|0;P=z+(r*40|0)|0;O=z+((c[(s+(t*20|0)&p)+12>>2]|0)*40|0)|0;N=c[(s+(t*20|0)&p)+16>>2]|0;r=z+(r*40|0)+8|0;if((b[(r&o)>>1]&32)==0?(hn(P),(b[(r&o)>>1]&32)==0):0){y=ge;z=je;r=m;m=x;ie=1317;break a}if(N){L=c[(P&p)>>2]|0;v=O;M=c[(v&p)>>2]|0;v=c[(v&p)+4>>2]|0;K=L+28|0;if((c[(K&p)>>2]|0)!=(N|0)){C=L+8|0;J=c[(C&p)>>2]|0;if(J){I=L+20|0;A=L+26|0;if(!(b[(A&o)>>1]&1))J=kn(J)|0;H=c[(I&p)>>2]|0;A:do if(!H){ld=J;rd=I;ie=978}else{while(1){I=H+12|0;F=c[(I&p)>>2]|0;if(!F)break;E=H+8|0;ln(F,ke,Sd);c[(I&p)>>2]=0;J=mn(c[(ke&p)>>2]|0,J)|0;H=c[(E&p)>>2]|0;if(!H){ld=J;rd=E;ie=978;break A}}c[(I&p)>>2]=nn(J)|0}while(0);if((ie|0)==978?(ie=0,Kc=on(L)|0,c[(rd&p)>>2]=Kc,(Kc|0)!=0):0){V=Kc;c[(V&p)>>2]=0;c[(V&p)+4>>2]=0;c[(Kc&p)+8>>2]=0;c[(Kc&p)+12>>2]=nn(ld)|0}c[(C&p)>>2]=0;c[(L&p)+12>>2]=0;b[(A&o)>>1]=e[(A&o)>>1]|1}c[(K&p)>>2]=N}C=c[(L&p)+20>>2]|0;B:do if(C){C:while(1){A=c[(C&p)+12>>2]|0;if(A)do{r=A;E=c[(r&p)>>2]|0;r=c[(r&p)+4>>2]|0;if((r|0)<(v|0)|(r|0)==(v|0)&E>>>0>>0)A=A+8|0;else{if(!((r|0)>(v|0)|(r|0)==(v|0)&E>>>0>M>>>0))break C;A=A+12|0}A=c[(A&p)>>2]|0}while((A|0)!=0);C=c[(C&p)+8>>2]|0;if(!C)break B}S=z;T=s;U=W;V=X;r=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;break q}while(0);if((N|0)>-1)C=O;else{S=z;T=s;U=W;V=X;r=t;break}}else C=O;S=C;jn(c[(P&p)>>2]|0,c[(S&p)>>2]|0,c[(S&p)+4>>2]|0);S=z;T=s;U=W;V=X;r=t;break}case 993:{ie=0;K=c[(s+(r*20|0)&p)+16>>2]|0;I=c[(s+(r*20|0)&p)+12>>2]|0;L=z+(I*40|0)|0;if((a[(s+(r*20|0)&n)+3>>0]|0)!=0?(Lc=c[(K&p)+20>>2]|0,nd=c[(sb&p)>>2]|0,(nd|0)!=0):0){t=nd;while(1){if((c[(t&p)+28>>2]|0)==(Lc|0)){S=z;T=s;U=W;V=X;break q}t=c[(t&p)+4>>2]|0;if(!t){t=r;break}}}else t=r;r=c[(tb&p)>>2]|0;if((r|0)>=(c[(Ba&p)>>2]|0)){u=x;ie=998;break c}E=z+(I*40|0)+8|0;if(!(b[(E&o)>>1]&64)){C=K+12|0;A=c[(C&p)>>2]|0;r=A+(c[(K&p)+8>>2]|0)|0;s=K+16|0;A=(A<<2)+80+(c[(s&p)>>2]|0)+(r*40|0)|0;J=mh(le,A,((A|0)<0)<<31>>31)|0;if(!J){y=ge;z=je;r=m;m=x;ie=1317;break a}fw(J|0,0,A|0)|0;if(!((b[(E&o)>>1]&9312)==0?(c[(z+(I*40|0)&p)+24>>2]|0)==0:0))Qg(L);b[(E&o)>>1]=64;c[(L&p)>>2]=J;c[(J&p)>>2]=f;c[(J&p)+60>>2]=r;c[(J&p)+64>>2]=c[(C&p)>>2];c[(J&p)+44>>2]=t;c[(J&p)+16>>2]=c[(Nc&p)>>2];c[(J&p)+52>>2]=c[(Ca&p)>>2];c[(J&p)+24>>2]=c[(Ib&p)>>2];c[(J&p)+40>>2]=c[(Da&p)>>2];c[(J&p)+8>>2]=c[(zc&p)>>2];c[(J&p)+48>>2]=c[(Ea&p)>>2];c[(J&p)+28>>2]=c[(K&p)+20>>2];c[(J&p)+20>>2]=c[(Hb&p)>>2];c[(J&p)+56>>2]=c[(Fa&p)>>2];z=J+80|0;r=z+(r*40|0)|0;if((z|0)!=(r|0))do{b[(z&o)+8>>1]=128;c[(z&p)+32>>2]=le;z=z+40|0}while((z|0)!=(r|0));r=c[(tb&p)>>2]|0;z=J}else{s=K+16|0;z=c[(L&p)>>2]|0}c[(tb&p)>>2]=r+1;c[(z&p)+4>>2]=c[(sb&p)>>2];S=z+32|0;c[(S&p)>>2]=m;c[(S&p)+4>>2]=l;c[(z&p)+68>>2]=c[(ub&p)>>2];c[(z&p)+72>>2]=c[((c[(f&p)>>2]|0)&p)+80>>2];c[(ub&p)>>2]=0;c[(sb&p)>>2]=z;S=z+40|0;c[(Nc&p)>>2]=S;U=c[(z&p)+60>>2]|0;c[(Ca&p)>>2]=U;V=c[(z&p)+64>>2]&65535;c[(Da&p)>>2]=V;U=S+((U+1|0)*40|0)|0;c[(Ib&p)>>2]=U;T=c[(K&p)>>2]|0;c[(zc&p)>>2]=T;c[(Ea&p)>>2]=c[(K&p)+4>>2];V=U+(V<<2)|0;c[(Hb&p)>>2]=V;U=c[(s&p)>>2]|0;c[(Fa&p)>>2]=U;fw(V|0,0,U|0)|0;U=W;V=X;r=-1;break}case 1009:{ie=0;S=c[(sb&p)>>2]|0;Zl(u,(c[(S&p)+16>>2]|0)+(((c[((c[(S&p)+8>>2]|0)+((c[(S&p)+44>>2]|0)*20|0)&p)+4>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]|0)|0)*40|0)|0,4096);S=z;T=s;U=W;V=X;break}case 1010:{ie=0;if(c[(Tb&p)>>2]&16777216){T=c[(s+(r*20|0)&p)+8>>2]|0;S=Rb;T=jw(c[(S&p)>>2]|0,c[(S&p)+4>>2]|0,T|0,((T|0)<0)<<31>>31|0)|0;S=Rb;c[(S&p)>>2]=T;c[(S&p)+4>>2]=G;S=z;T=s;U=W;V=X;u=J;break}t=c[(s+(r*20|0)&p)+8>>2]|0;u=((t|0)<0)<<31>>31;if(!(c[(s+(r*20|0)&p)+4>>2]|0)){T=_d;T=jw(c[(T&p)>>2]|0,c[(T&p)+4>>2]|0,t|0,u|0)|0;S=_d;c[(S&p)>>2]=T;c[(S&p)+4>>2]=G;S=z;T=s;U=W;V=X;u=J;break}else{T=Qb;T=jw(c[(T&p)>>2]|0,c[(T&p)+4>>2]|0,t|0,u|0)|0;S=Qb;c[(S&p)>>2]=T;c[(S&p)+4>>2]=G;S=z;T=s;U=W;V=X;u=J;break}}case 1015:{ie=0;if(!(c[(s+(r*20|0)&p)+4>>2]|0)){V=_d;if(!((c[(V&p)>>2]|0)==0&(c[(V&p)+4>>2]|0)==0)){S=z;T=s;U=W;V=X;break}V=Rb;if(!((c[(V&p)>>2]|0)==0&(c[(V&p)+4>>2]|0)==0)){S=z;T=s;U=W;V=X;break}S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0;break}else{V=Qb;if(!((c[(V&p)>>2]|0)==0&(c[(V&p)+4>>2]|0)==0)){S=z;T=s;U=W;V=X;break}V=Rb;if(!((c[(V&p)>>2]|0)==0&(c[(V&p)+4>>2]|0)==0)){S=z;T=s;U=W;V=X;break}S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0;break}}case 1022:{ie=0;t=c[(sb&p)>>2]|0;if(!t)v=z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0;else{while(1){u=c[(t&p)+4>>2]|0;if(!u)break;else t=u}v=(c[(t&p)+16>>2]|0)+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0}U=Vg(v)|0;V=v;c[(V&p)>>2]=U;c[(V&p)+4>>2]=G;V=v+8|0;b[(V&o)>>1]=e[(V&o)>>1]&48640|4;V=c[(s+(r*20|0)&p)+8>>2]|0;U=z+(V*40|0)|0;t=Vg(U)|0;u=G;c[(U&p)>>2]=t;c[(U&p)+4>>2]=u;V=z+(V*40|0)+8|0;b[(V&o)>>1]=e[(V&o)>>1]&48640|4;V=v;U=c[(V&p)+4>>2]|0;if((U|0)<(u|0)|((U|0)==(u|0)?(c[(V&p)>>2]|0)>>>0>>0:0)){S=v;c[(S&p)>>2]=t;c[(S&p)+4>>2]=u;S=z;T=s;U=W;V=X;u=L}else{S=z;T=s;U=W;V=X;u=L}break}case 1028:{ie=0;V=z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0;U=c[(V&p)+4>>2]|0;if((U|0)>0|(U|0)==0&(c[(V&p)>>2]|0)>>>0>0){S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}else{S=z;T=s;U=W;V=X}break}case 1030:{ie=0;T=c[(s+(r*20|0)&p)+12>>2]|0;U=z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0;V=U;T=jw(c[(V&p)>>2]|0,c[(V&p)+4>>2]|0,T|0,((T|0)<0)<<31>>31|0)|0;V=G;c[(U&p)>>2]=T;c[(U&p)+4>>2]=V;if((V|0)<0){S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}else{S=z;T=s;U=W;V=X}break}case 1032:{ie=0;t=z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0;v=t;u=c[(v&p)>>2]|0;v=c[(v&p)+4>>2]|0;if((u|0)==0&(v|0)==0){S=z;T=s;U=W;V=X;u=J}else{T=c[(s+(r*20|0)&p)+12>>2]|0;T=jw(T|0,((T|0)<0)<<31>>31|0,u|0,v|0)|0;S=t;c[(S&p)>>2]=T;c[(S&p)+4>>2]=G;S=z;T=s;U=W;V=X;u=J;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}break}case 1034:{ie=0;T=z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0;U=T;U=jw(c[(U&p)>>2]|0,c[(U&p)+4>>2]|0,-1,-1)|0;V=G;c[(T&p)>>2]=U;c[(T&p)+4>>2]=V;if((U|0)==0&(V|0)==0){S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}else{S=z;T=s;U=W;V=X}break}case 1036:{ie=0;T=z+((c[(s+(r*20|0)&p)+4>>2]|0)*40|0)|0;V=T;U=c[(V&p)>>2]|0;V=c[(V&p)+4>>2]|0;S=jw(U|0,V|0,1,0)|0;c[(T&p)>>2]=S;c[(T&p)+4>>2]=G;if((U|0)==0&(V|0)==0){S=z;T=s;U=W;V=X;r=(c[(s+(r*20|0)&p)+8>>2]|0)+-1|0}else{S=z;T=s;U=W;V=X}break}case 1157:{ie=0;S=z;T=s;U=W;V=X;r=(c[(s+(t*20|0)&p)+8>>2]|0)+-1|0;break}case 1158:{ie=0;if(c[(s+(r*20|0)&p)+4>>2]|0){b[(Yd&o)>>1]=b[(Yd&o)>>1]|8;S=z;T=s;U=W;V=X;break}t=c[(Vb&p)>>2]|0;if(!t){S=z;T=s;U=W;V=X}else{do{V=t+88|0;b[(V&o)>>1]=b[(V&o)>>1]|8;t=c[(t&p)+52>>2]|0}while((t|0)!=0);S=z;T=s;U=W;V=X}break}case 1166:{ie=0;J=(c[(w&p)>>2]|0)+72|0;t=c[(J&p)>>2]|0;D:do if(t){while(1){if((c[(t&p)+4>>2]|0)==(A|0)?(c[(t&p)>>2]|0)==(C|0):0)break;t=c[(t&p)+12>>2]|0;if(!t){ie=1171;break D}}if(!t)ie=1171}else ie=1171;while(0);if((ie|0)==1171){ie=0;t=qg(16,0)|0;if(!t){t=r;s=7;u=x;ie=1309;break c}U=t+0|0;V=U+12|0;do{a[(U&n)>>0]=0;U=U+1|0}while((U|0)<(V|0));c[(t&p)+4>>2]=A;c[(t&p)>>2]=C;c[(t&p)+12>>2]=c[(J&p)>>2];c[(J&p)>>2]=t}t=t+8|0;if((d[(t&n)>>0]|0)<(v&255)){a[(t&n)>>0]=v;S=z;T=s;U=W;V=X}else{S=z;T=s;U=W;V=X}break}case 1213:{ie=0;c[(sd&p)>>2]=0;v=c[((c[(s+(r*20|0)&p)+16>>2]|0)&p)+8>>2]|0;if(!v){t=r;s=6;u=x;ie=1309;break c}w=c[(v&p)>>2]|0;if(!w){t=r;s=6;u=x;ie=1309;break c}C=rc[c[(w&p)+24>>2]&127](v,sd)|0;Mm(f,v);if(C){t=r;s=C;u=x;ie=1309;break c}c[(c[(sd&p)>>2]&p)>>2]=v;t=xm(f,c[(s+(r*20|0)&p)+4>>2]|0,0,-1,0)|0;if(!t){a[(ge&n)>>0]=1;lc[c[(w&p)+28>>2]&127](c[(sd&p)>>2]|0)|0;S=z;T=s;U=W;V=X;break}else{c[(t&p)+32>>2]=c[(sd&p)>>2];S=v+4|0;c[(S&p)>>2]=(c[(S&p)>>2]|0)+1;S=z;T=s;U=W;V=X;break}}case 1226:{ie=0;t=z+(C*40|0)+8|0;if(!(b[(t&o)>>1]&9312)){b[(t&o)>>1]=1;S=z;T=s;U=W;V=X;break}else{vg(A);S=z;T=s;U=W;V=X;break}}case 1257:{ie=0;S=u;c[(S&p)>>2]=c[((c[((c[((c[(Xd&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<4)&p)+4>>2]|0)&p)+4>>2]|0)&p)+44>>2];c[(S&p)+4>>2]=0;S=z;T=s;U=W;V=X;break}case 1258:{ie=0;v=c[((c[(Xd&p)>>2]|0)+(c[(s+(r*20|0)&p)+4>>2]<<4)&p)+4>>2]|0;t=c[(s+(r*20|0)&p)+12>>2]|0;u=c[(v&p)+4>>2]|0;if(!t)t=0;else{V=c[(u&p)+44>>2]|0;t=V>>>0>>0?t:V}c[(u&p)+4>>2]=c[(v&p)>>2];u=(c[(u&p)>>2]|0)+156|0;if((t|0)>0)c[(u&p)>>2]=t;else t=c[(u&p)>>2]|0;S=J;c[(S&p)>>2]=t;c[(S&p)+4>>2]=((t|0)<0)<<31>>31;S=z;T=s;U=W;V=X;u=J;break}case 1264:{ie=0;r=c[(s+(t*20|0)&p)+8>>2]|0;r=(r|0)==0?t:r+-1|0;if((c[(Sa&p)>>2]|0)!=0?(b[(Yd&o)>>1]&512)==0:0){t=c[(s+(t*20|0)&p)+16>>2]|0;if(!t){t=c[(ce&p)>>2]|0;if(!t){S=z;T=s;U=W;V=X;u=L;break}}c[(Sd&p)>>2]=0;F=c[(f&p)>>2]|0;v=c[(F&p)+88>>2]|0;c[(fb&p)>>2]=Nd;c[(gb&p)>>2]=Nd;c[(hb&p)>>2]=0;c[(ib&p)>>2]=100;c[(jb&p)>>2]=v;a[(kb&n)>>0]=1;a[(lb&n)>>0]=0;c[(qd&p)>>2]=F;v=a[(t&n)>>0]|0;u=v<<24>>24==0;E:do if((c[(F&p)+160>>2]|0)>1){if(!u)while(1){u=t;do{u=u+1|0;if(v<<24>>24==10)break;v=a[(u&n)>>0]|0}while(v<<24>>24!=0);Sk(qd,42288,3);Sk(qd,t,u-t|0);v=a[(u&n)>>0]|0;if(!(v<<24>>24))break;else t=u}}else if(!u){H=F+62|0;K=1;do{F:do if(!(v<<24>>24)){A=0;u=0}else{C=t;u=0;while(1){A=Cn(C,ke)|0;if((c[(ke&p)>>2]|0)==135)break F;u=A+u|0;C=C+A|0;if(!(a[(C&n)>>0]|0)){A=0;break}}}while(0);Sk(qd,t,u);C=t+u|0;if(!A)break E;do if((a[(C&n)>>0]|0)==63)if((A|0)>1){Dn(t+(u+1)|0,Sd)|0;C=c[(Sd&p)>>2]|0;break}else{c[(Sd&p)>>2]=K;C=K;break}else{C=qh(f,C,A)|0;c[(Sd&p)>>2]=C}while(0);t=t+(u+A)|0;K=C+1|0;J=C+-1|0;I=c[(Ab&p)>>2]|0;C=I+(J*40|0)|0;A=e[(I+(J*40|0)&o)+8>>1]|0;do if(!(A&1)){if(A&4){T=C;U=c[(T&p)+4>>2]|0;V=ke;c[(V&p)>>2]=c[(T&p)>>2];c[(V&p)+4>>2]=U;En(qd,0,19920,ke);break}if(A&8){h[(k&q)>>3]=+h[(C&q)>>3];c[(ke&p)>>2]=c[(k&p)>>2];c[(ke&p)+4>>2]=c[(k&p)+4>>2];En(qd,0,20272,ke);break}if(!(A&2)){if(A&16384){c[(ke&p)>>2]=c[(C&p)>>2];En(qd,0,42304,ke);break}Sk(qd,42320,2);E=c[(I+(J*40|0)&p)+12>>2]|0;if((E|0)>0){C=I+(J*40|0)+16|0;A=0;do{c[(ke&p)>>2]=d[((c[(C&p)>>2]|0)+A&n)>>0];En(qd,0,42328,ke);A=A+1|0}while((A|0)!=(E|0))}Sk(qd,42336,1);break}else{E=a[(H&n)>>0]|0;if(E<<24>>24==1){V=c[(I+(J*40|0)&p)+16>>2]|0;c[(ke&p)>>2]=c[(I+(J*40|0)&p)+12>>2];c[(ke&p)+4>>2]=V;En(qd,0,42296,ke);break}U=Od+0|0;V=U+40|0;do{c[(U&p)>>2]=0;U=U+4|0}while((U|0)<(V|0));c[(nb&p)>>2]=F;Xg(Od,c[(I+(J*40|0)&p)+16>>2]|0,c[(I+(J*40|0)&p)+12>>2]|0,E,0)|0;V=c[(ob&p)>>2]|0;if(!((V&2|0)==0|(V&16711680|0)==65536))Bn(Od,1)|0;V=c[(qb&p)>>2]|0;c[(ke&p)>>2]=c[(pb&p)>>2];c[(ke&p)+4>>2]=V;En(qd,0,42296,ke);if((b[(ob&o)>>1]&9312)==0&(c[(rb&p)>>2]|0)==0)break;Qg(Od);break}}else Sk(qd,20304,4);while(0);v=a[(t&n)>>0]|0}while(v<<24>>24!=0)}while(0);S=tg(qd)|0;jc[c[(Sa&p)>>2]&15](c[(mb&p)>>2]|0,S);mg(le,S);S=z;T=s;U=W;V=X;u=L}else{S=z;T=s;U=W;V=X;u=L}break}}if((ie|0)==28){ie=0;z=s+(r*20|0)+4|0;t=c[(z&p)>>2]|0;if(t){y=z;ie=34;break}z=c[(sb&p)>>2]|0;if(!z){ie=30;break}c[(sb&p)>>2]=c[(z&p)+4>>2];c[(tb&p)>>2]=(c[(tb&p)>>2]|0)+-1;l=c[(ub&p)>>2]|0;c[(vb&p)>>2]=l;c[(wb&p)>>2]=(c[(wb&p)>>2]|0)+l;z=Xl(z)|0;l=ne;t=c[(zc&p)>>2]|0;if((c[(s+(r*20|0)&p)+8>>2]|0)==4)r=(c[(t+(z*20|0)&p)+8>>2]|0)+-1|0;else r=z;m=c[(l&p)>>2]|0;l=c[(l&p)+4>>2]|0;S=c[(Nc&p)>>2]|0;T=t;U=W;V=X}else if((ie|0)==488){ie=0;u=sm(le,C,A)|0;if(!u){S=z;T=s;U=W;V=X;u=E}else{t=r;ie=1318;break}}z=S;s=T;W=U;X=V;t=r+1|0}switch(ie|0){case 30:{c[(me&p)>>2]=t;a[(fe&n)>>0]=c[(s+(r*20|0)&p)+8>>2];c[(he&p)>>2]=r;ie=41;break}case 34:{c[(me&p)>>2]=t;a[(fe&n)>>0]=c[(s+(r*20|0)&p)+8>>2];c[(he&p)>>2]=r;t=a[(s+(r*20|0)&n)+3>>0]|0;if(!(t<<24>>24)){s=c[(s+(r*20|0)&p)+16>>2]|0;if(!s){s=0;ie=39}else{c[(ke&p)>>2]=s;dh(je,le,10344,ke)}}else{u=c[((t&255)+-1<<2&p)+41536>>2]|0;t=c[(s+(r*20|0)&p)+16>>2]|0;if(!t){s=u;ie=39}else{c[(ke&p)>>2]=u;c[(ke&p)+4>>2]=t;dh(je,le,41624,ke)}}if((ie|0)==39){c[(ke&p)>>2]=s;dh(je,le,41656,ke)}ie=c[(y&p)>>2]|0;qd=c[(ce&p)>>2]|0;rd=c[(je&p)>>2]|0;c[(ke&p)>>2]=r;c[(ke&p)+4>>2]=qd;c[(ke&p)+8>>2]=rd;bd(ie,41600,ke);ie=41;break}case 80:{x=c[(be&p)>>2]|0;if(!((x|0)==0|g>>>0>>0)?(lc[x&127](c[(Zd&p)>>2]|0)|0)!=0:0){r=m;s=9;m=u;ie=1311;break a}rd=_d;qd=c[(rd&p)+4>>2]|0;if((qd|0)>0|(qd|0)==0&(c[(rd&p)>>2]|0)>>>0>0){s=c[(f&p)>>2]|0;c[(me&p)>>2]=787;a[(fe&n)>>0]=2;dh(je,s,34376,ke);s=1;ie=1309;break}x=$l(f,1)|0;if(!x){c[($d&p)>>2]=(c[($d&p)>>2]|0)+2|1;y=c[(s+(t*20|0)&p)+4>>2]|0;c[(de&p)>>2]=z+(y*40|0);r=s+(t*20|0)+8|0;if((c[(r&p)>>2]|0)>0){x=0;do{v=x+y|0;w=z+(v*40|0)|0;v=z+(v*40|0)+8|0;s=b[(v&o)>>1]|0;if(s&4096){if(Vl(w)|0){y=ge;z=je;r=m;m=u;ie=1317;break a}s=b[(v&o)>>1]|0}if((s&514)==2)am(w)|0;x=x+1|0}while((x|0)<(c[(r&p)>>2]|0))}if(a[(ge&n)>>0]|0){y=ge;z=je;r=m;m=u;ie=1317;break a}c[(he&p)>>2]=t+1;r=m;m=g;g=100;break a}else{s=x;ie=1309}break}case 313:{c[(ke&p)>>2]=73058;c[(ke&p)+4>>2]=10788;bd(11,13600,ke);s=11;ie=1309;break}case 343:{c[(ke&p)>>2]=73142;c[(ke&p)+4>>2]=10788;bd(11,13600,ke);s=11;ie=1309;break}case 447:{dh(je,le,41712,ke);t=r;s=5;ie=1309;break}case 460:{c[(ke&p)>>2]=s;dh(je,le,41768,ke);s=1;ie=1309;break}case 462:{dh(je,le,41792,ke);s=5;ie=1309;break}case 467:{c[(he&p)>>2]=g;a[(ee&n)>>0]=0;c[(me&p)>>2]=5;g=5;break a}case 489:{v=c[(s+(t*20|0)&p)+4>>2]|0;s=c[(s+(t*20|0)&p)+8>>2]|0;g=(v|0)!=0;if(g){s=(s|0)!=0;if(!(s|(a[(ee&n)>>0]|0)!=0))if((c[(ae&p)>>2]|0)>0){dh(je,le,41848,ke);g=m;m=r;s=5;ie=1309;break}else s=0}else s=(s|0)!=0;if((v|0)==(d[(ee&n)>>0]|0)){if(g)g=s?41952:42e3;else g=41904;dh(je,le,g,ke);g=m;m=r;s=1;ie=1309;break}if(!s){g=tm(f,1)|0;if(g)break a;a[(ee&n)>>0]=v;if((Rl(f)|0)==5){c[(he&p)>>2]=t;a[(ee&n)>>0]=1-v;c[(me&p)>>2]=5;g=5;break a}}else{Kl(le,516);a[(ee&n)>>0]=1}Ll(le);g=(c[(me&p)>>2]|0)==0?101:1;break a}case 508:{c[(he&p)>>2]=g;c[(me&p)>>2]=5;g=5;break a}case 522:{mg(le,c[(je&p)>>2]|0);c[(je&p)>>2]=kh(le,16040)|0;s=c[(s&p)>>2]|0;if((c[(c[((c[(Xd&p)>>2]|0)+(s<<4)&p)+12>>2]&p)>>2]|0)!=(v|0))vm(le,s);b[(Yd&o)>>1]=b[(Yd&o)>>1]|8;s=17;ie=1309;break}case 542:{c[(ke&p)>>2]=73997;c[(ke&p)+4>>2]=10788;bd(11,13600,ke);u=11;x=s;ie=1318;break}case 560:{c[(s&p)+56>>2]=0;s=7;ie=1309;break}case 832:{a[(fe&n)>>0]=2;s=6;ie=1309;break}case 882:{Eg(le);y=ge;z=je;r=m;m=u;ie=1317;break a}case 884:{Eg(le);if((s|0)==7){y=ge;z=je;r=m;m=u;ie=1317;break a}else ie=1309;break}case 998:{dh(je,le,42112,ke);s=1;ie=1309;break}case 1080:{c[(ke&p)>>2]=s?42208:42216;dh(je,le,42152,ke);s=1;ie=1309;break}case 1101:{dh(je,le,42344,ke);s=1;ie=1309;break}case 1103:{dh(je,le,42384,ke);s=1;ie=1309;break}case 1145:{c[(ke&p)>>2]=56343;c[(ke&p)+4>>2]=10788;bd(11,13600,ke);s=11;ie=1309;break}case 1316:{dh(je,le,10096,ke);r=m;s=18;m=u;ie=1311;break a}}if((ie|0)==41)if((Rl(f)|0)==5){c[(me&p)>>2]=5;r=m;m=g;g=5;break a}else{r=m;m=g;g=(c[(me&p)>>2]|0)!=0?1:101;break a}else if((ie|0)==1309){r=m;t=t+1|0;m=u;ie=1311;break a}else if((ie|0)==1318){u=(a[(ge&n)>>0]|0)==0?u:7;if((u|0)==3082){r=m;s=3082;m=x;ie=1311;break a}else if((u|0)!=516){r=u&255;if(r>>>0>26|(r|0)==2)s=16328;else s=c[(r<<2&p)+15488>>2]|0}else s=16344;c[(ke&p)>>2]=s;dh(je,le,10344,ke);r=m;s=u;m=x;ie=1311;break a}}else{u=f+44|0;r=m;g=0;t=0;m=0}while(0);c[(me&p)>>2]=9;c[(ke&p)>>2]=15832;dh(u,le,10344,ke);s=9;ie=1311}while(0);if((ie|0)==1317){a[(y&n)>>0]=1;dh(z,le,15776,ke);s=7;ie=1311}if((ie|0)==1311){c[(me&p)>>2]=s;qd=c[(f&p)+168>>2]|0;rd=c[(f&p)+44>>2]|0;c[(ke&p)>>2]=t;c[(ke&p)+4>>2]=qd;c[(ke&p)+8>>2]=rd;bd(s,42256,ke);Rl(f)|0;if((s|0)==3082)a[(le&n)+65>>0]=1;if(!(m<<24>>24)){m=g;g=1}else{vm(le,(m&255)+-1|0);m=g;g=1}}rd=ne;c[(rd&p)>>2]=r;c[(rd&p)+4>>2]=l;rd=f+124|0;c[(rd&p)>>2]=(c[(rd&p)>>2]|0)+m;i=oe;return g|0} -function Ev(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=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;D=e+20|0;u=e+14|0;f=a[(u&n)>>0]|0;z=e+13|0;g=a[(z&n)>>0]|0;a:do if((f&255)>(g&255))f=0;else{B=e+4|0;C=e+16|0;v=e+8|0;w=e+12|0;x=e+24|0;y=e+28|0;i=f&255;j=c[(B&p)>>2]|0;h=c[(D&p)>>2]|0;b:while(1){t=c[(e+(i+-2<<2)&p)+24>>2]|0;s=c[(e+(i+-1<<2)&p)+24>>2]|0;if(j){while(1){r=j+12|0;if((h|0)<(c[(r&p)>>2]|0)){g=h;f=(c[(j&p)+20>>2]|0)+(h*48|0)|0;while(1){do if((c[(f&p)+8>>2]|0)==(t|0)?(c[(f&p)+12>>2]|0)==(s|0):0){if((d[(u&n)>>0]|0)>=3?(c[((c[(f&p)>>2]|0)&p)+4>>2]&1|0)!=0:0)break;q=f+18|0;h=b[(q&o)>>1]|0;if((h&1024)!=0?(A=a[(z&n)>>0]|0,(A&255)<22):0){i=c[((c[(f&p)>>2]|0)&p)+16>>2]|0;c:do if(!i)i=0;else while(1){k=c[(i&p)+4>>2]|0;if(!(k&4096))break c;if(!(k&262144))i=i+12|0;else i=c[((c[(i&p)+20>>2]|0)&p)+4>>2]|0;i=c[(i&p)>>2]|0;if(!i){i=0;break}}while(0);d:do if(!(A<<24>>24)){m=0;k=0}else{l=c[(i&p)+28>>2]|0;m=i+32|0;k=0;while(1){if((c[(e+(k<<2)&p)+24>>2]|0)==(l|0)?(c[(e+((k|1)<<2)&p)+24>>2]|0)==(b[(m&o)>>1]|0):0){m=A;break d}k=k+2|0;if((k|0)>=(A&255|0)){m=A;break}}}while(0);if((k|0)==(m&255|0)){c[(e+(k<<2)&p)+24>>2]=c[(i&p)+28>>2];c[(e+((k|1)<<2)&p)+24>>2]=b[(i&o)+32>>1];a[(z&n)>>0]=(d[(z&n)>>0]|0)+2}}i=h&65535;if(i&c[(C&p)>>2]){if((c[(v&p)>>2]|0)!=0&(i&128|0)==0){l=c[(c[(j&p)>>2]&p)>>2]|0;k=c[(f&p)>>2]|0;i=a[(w&n)>>0]|0;h=(nv(k)|0)<<24>>24;if((h|0)==66){if(i<<24>>24!=66)break}else if((h|0)!=65?i<<24>>24<=66:0)break;h=Ou(l,c[(k&p)+12>>2]|0,c[(k&p)+16>>2]|0)|0;if(!h)h=c[((c[(l&p)>>2]|0)&p)+8>>2]|0;if(dd(c[(h&p)>>2]|0,c[(v&p)>>2]|0)|0)break;h=b[(q&o)>>1]|0}if(!(h&2))break b;h=c[((c[(f&p)>>2]|0)&p)+16>>2]|0;if((a[(h&n)>>0]|0)!=-102)break b;if((c[(h&p)+28>>2]|0)!=(c[(x&p)>>2]|0))break b;if((b[(h&o)+32>>1]|0)!=(c[(y&p)>>2]|0))break b}}while(0);g=g+1|0;if((g|0)>=(c[(r&p)>>2]|0))break;else f=f+48|0}g=c[(B&p)>>2]|0}else g=j;j=c[(g&p)+4>>2]|0;c[(B&p)>>2]=j;if(!j)break;else h=0}f=a[(u&n)>>0]|0;g=a[(z&n)>>0]|0}j=c[(e&p)>>2]|0;c[(B&p)>>2]=j;h=(f&255)+2|0;f=h&255;a[(u&n)>>0]=f;if((f&255)>(g&255)){f=0;break a}else{i=h&255;h=0}}c[(D&p)>>2]=g+1}while(0);return f|0}function Fv(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,q=0;g=c[(d&p)>>2]|0;l=c[(c[(g&p)>>2]&p)>>2]|0;d=c[(d&p)+16>>2]|0;a:do if(!d){g=g+16|0;i=c[(g&p)>>2]|0;k=f+36|0;if((c[(k&p)>>2]&512|0)!=0&(i|0)!=0){d=f+20|0;j=f+22|0;h=a[(f&n)+16>>0]|0;do{do if((a[(i&n)+16>>0]|0)==h<<24>>24?(c[(i&p)+36>>2]&512|0)!=0:0){if(Tv(i,f)|0){b[(d&o)>>1]=b[(i&o)+20>>1]|0;b[(j&o)>>1]=(e[(i&o)+22>>1]|0)+65535;break}if(Tv(f,i)|0){b[(d&o)>>1]=b[(i&o)+20>>1]|0;b[(j&o)>>1]=(e[(i&o)+22>>1]|0)+1}}while(0);i=c[(i&p)+52>>2]|0}while((i|0)!=0)}d=Uv(g,f)|0;if(d){g=c[(d&p)>>2]|0;b:do if(g){d=g+52|0;if(c[(d&p)>>2]|0)do{d=Uv(d,f)|0;if(!d)break b;h=c[(d&p)>>2]|0;if(!h)break b;c[(d&p)>>2]=c[(h&p)+52>>2];Ju(l,h);mg(l,h)}while((c[(d&p)>>2]|0)!=0)}else{g=mh(l,72,0)|0;c[(d&p)>>2]=g;if(!g){d=7;break a}c[(g&p)+48>>2]=g+56;b[(g&o)+40>>1]=0;b[(g&o)+44>>1]=3;c[(g&p)+36>>2]=0;c[(g&p)+52>>2]=0}while(0);Lv(l,g);do if(!(Nu(l,g,e[(f&o)+40>>1]|0)|0)){h=g+0|0;d=f+0|0;i=h+44|0;do{c[(h&p)>>2]=c[(d&p)>>2];h=h+4|0;d=d+4|0}while((h|0)<(i|0));kw(c[(g&p)+48>>2]|0,c[(f&p)+48>>2]|0,e[(g&o)+40>>1]<<2|0)|0;d=c[(k&p)>>2]|0;if(d&1024){a[(f&n)+28>>0]=0;break}if(d&16384)c[(f&p)+28>>2]=0}else{d=g+24|0;c[(d&p)>>2]=0;c[(d&p)+4>>2]=0;c[(d&p)+8>>2]=0}while(0);if(((c[(g&p)+36>>2]&1024|0)==0?(m=g+28|0,q=c[(m&p)>>2]|0,(q|0)!=0):0)?(c[(q&p)+40>>2]|0)==0:0){c[(m&p)>>2]=0;d=0}else d=0}else d=0}else{g=f;Kv(d,c[(g&p)>>2]|0,c[(g&p)+4>>2]|0,b[(f&o)+20>>1]|0,b[(f&o)+22>>1]|0);d=0}while(0);return d|0}function Gv(a,b){a=a|0;b=b|0;var c=0,e=0;c=a<<16>>16;e=b<<16>>16;do if(a<<16>>16>16)if((e|0)<=(c+49|0))if((e|0)>(c+31|0)){a=e+1&65535;break}else{a=(d[(e-c&n)+34032>>0]|0)+e&65535;break}else a=b;else if((c|0)<=(e+49|0))if((c|0)>(e+31|0)){a=c+1&65535;break}else{a=(d[(c-e&n)+34032>>0]|0)+c&65535;break}while(0);return a|0}function Hv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;do if(!(Cu(b,d,e)|0))f=1;else{f=a[(d&n)>>0]|0;if(f<<24>>24==71){if(Hv(b,c[(d&p)+12>>2]|0,e)|0){f=1;break}if(Hv(b,c[(d&p)+16>>2]|0,e)|0){f=1;break}if(f<<24>>24==77)g=6}else if(f<<24>>24==77)g=6;if(((g|0)==6?(Cu(c[(b&p)+12>>2]|0,c[(d&p)+12>>2]|0,e)|0)==0:0)?(f=a[(b&n)>>0]|0,!(f<<24>>24==73|f<<24>>24==76)):0){f=1;break}f=0}while(0);return f|0}function Iv(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;if((i|0)>=(j|0))fa();w=x;u=d;v=d+8|0;g=v;t=~(c[(g&p)>>2]|c[(u&p)>>2]);u=~(c[(g&p)+4>>2]|c[(u&p)+4>>2]);g=c[(a&p)+12>>2]|0;r=a+20|0;a:do if((g|0)>0){s=d+40|0;a=d+22|0;q=d+48|0;d=0;n=c[(r&p)>>2]|0;while(1){if(b[(n&o)+20>>1]&2)break a;m=n+40|0;l=c[(m&p)>>2]|0;m=c[(m&p)+4>>2]|0;k=v;b:do if(((c[(k&p)>>2]&l|0)!=0?1:(c[(k&p)+4>>2]&m|0)!=0)&((l&t|0)==0&(m&u|0)==0)){h=b[(s&o)>>1]|0;c:do if(h<<16>>16){m=c[(q&p)>>2]|0;l=h&65535;while(1){h=l;l=l+-1|0;k=c[(m+(l<<2)&p)>>2]|0;if(k){if((k|0)==(n|0))break;k=c[(k&p)+4>>2]|0;if((k|0)>-1?((c[(r&p)>>2]|0)+(k*48|0)|0)==(n|0):0)break}if((l|0)<=0)break c}if((h|0)>=1)break b}while(0);h=b[(n&o)+16>>1]|0;if(h<<16>>16<1){b[(a&o)>>1]=(e[(a&o)>>1]|0)+(h&65535);break}b[(a&o)>>1]=(b[(a&o)>>1]|0)+-1<<16>>16;if(b[(n&o)+18>>1]&2){l=(Ms(c[((c[(n&p)>>2]|0)&p)+16>>2]|0,w)|0)!=0;m=c[(w&p)>>2]|0;m=l&(m|0)>-2&(m|0)<2?10:20;c[(w&p)>>2]=m;d=(d<<16>>16|0)<(m|0)?m&65535:d}}while(0);g=g+-1|0;if((g|0)<=0)break;else n=n+48|0}}else{a=d+22|0;d=0}while(0);d=(f<<16>>16)-(d<<16>>16)|0;if((b[(a&o)>>1]|0)>(d|0))b[(a&o)>>1]=d;i=x;return}function Jv(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=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,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,ga=0,ha=0;ha=i;i=i+112|0;if((i|0)>=(j|0))fa();R=ha;V=c[(c[(c[(d&p)>>2]&p)>>2]&p)>>2]|0;ea=c[(d&p)+12>>2]|0;if(!(a[(V&n)+65>>0]|0)){ga=ea+36|0;if(!(c[(ga&p)>>2]&32))if((c[(g&p)+40>>2]|0)<1)k=63;else k=(a[(f&n)+36>>0]&8)<<4^191;else k=24;W=g+51|0;ca=ea+24|0;l=b[((c[(g&p)+4>>2]|0)+(e[(ca&o)>>1]<<1)&o)>>1]|0;N=l<<16>>16;O=d+4|0;k=Dv(R,c[(O&p)>>2]|0,c[(f&p)+40>>2]|0,N,(a[(W&n)>>0]&4)==0?k:k&131,g)|0;X=b[(ca&o)>>1]|0;Y=ea+42|0;T=b[(Y&o)>>1]|0;Z=ea+40|0;U=b[(Z&o)>>1]|0;_=c[(ga&p)>>2]|0;Q=ea;P=c[(Q&p)>>2]|0;Q=c[(Q&p)+4>>2]|0;$=ea+22|0;aa=b[($&o)>>1]|0;b[(ea&o)+18>>1]=0;ba=g+8|0;D=b[(c[(ba&p)>>2]&o)>>1]|0;if(D<<16>>16<11)C=0;else{C=D<<16>>16;C=((fs(C,((C|0)<0)<<31>>31)|0)&65535)+65503&65535}a:do if(!k)k=0;else{E=l<<16>>16<0;F=f+16|0;G=ea+8|0;H=(U&65535)+1|0;I=ea+48|0;J=h<<16>>16==0;K=g+46|0;w=l<<16>>16>-1;x=g+50|0;y=g+44|0;z=ea+20|0;A=h<<16>>16;B=g+48|0;r=0;u=k;s=0;while(1){l=b[(u&o)+18>>1]|0;t=l&65535;if(l<<16>>16==128)if(!E?(a[((c[((c[(F&p)>>2]|0)&p)+4>>2]|0)+(N*24|0)&n)+20>>0]|0)==0:0)S=12;else{m=r;l=s;k=0}else S=12;if((S|0)==12){S=0;m=u+32|0;v=m;q=G;if(((c[(q&p)>>2]&c[(v&p)>>2]|0)==0?(c[(q&p)+4>>2]&c[(v&p)+4>>2]|0)==0:0)?(L=u+20|0,!((b[(L&o)>>1]&256)!=0&l<<16>>16==16)):0){c[(ga&p)>>2]=_;b[(ca&o)>>1]=X;b[(Z&o)>>1]=U;if(Nu(V,ea,H)|0){k=0;break a}k=b[(Z&o)>>1]|0;q=k+1<<16>>16;b[(Z&o)>>1]=q;c[((c[(I&p)>>2]|0)+((k&65535)<<2)&p)>>2]=u;k=m;l=G;m=(c[(k&p)+4>>2]|Q)&~c[(l&p)+4>>2];v=ea;c[(v&p)>>2]=(c[(k&p)>>2]|P)&~c[(l&p)>>2];c[(v&p)+4>>2]=m;b:do if(!(t&1)){if(t&2){k=c[(ga&p)>>2]|0;l=k|1;c[(ga&p)>>2]=l;do if(!E){if(!J){v=0;break b}if((e[(ca&o)>>1]|0)!=((e[(K&o)>>1]|0)+-1|0)){v=0;break b}if(!w)break;if(a[(x&n)>>0]|0)break;l=k|65537;c[(ga&p)>>2]=l;v=0;break b}while(0);l=k|4097;c[(ga&p)>>2]=l;v=0;break}if(t&128){l=c[(ga&p)>>2]|8;c[(ga&p)>>2]=l;v=0;break}k=c[(ga&p)>>2]|0;if(!(t&36)){l=k|18;c[(ga&p)>>2]=l;if(!(k&32)){v=0;r=0;s=u;break}v=0;r=c[((c[(I&p)>>2]|0)+((q&65535)+-2<<2)&p)>>2]|0;s=u;break}l=k|34;c[(ga&p)>>2]=l;if(!(b[(L&o)>>1]&256)){v=0;r=u;s=0}else{k=u+48|0;if(Nu(V,ea,(q&65535)+1|0)|0){k=0;break a}l=b[(Z&o)>>1]|0;b[(Z&o)>>1]=l+1<<16>>16;c[((c[(I&p)>>2]|0)+((l&65535)<<2)&p)>>2]=k;l=c[(ga&p)>>2]|16;c[(ga&p)>>2]=l;v=0;r=u;s=k}}else{k=c[(u&p)>>2]|0;l=c[(ga&p)>>2]|4;c[(ga&p)>>2]=l;if(!(c[(k&p)+4>>2]&2048)){k=c[(k&p)+20>>2]|0;if((k|0)!=0?(M=c[(k&p)>>2]|0,(M|0)!=0):0)v=(fs(M,((M|0)<0)<<31>>31)|0)<<16>>16;else v=0}else v=46}while(0);do if(!(l&2)){k=(b[(ca&o)>>1]|0)+1<<16>>16;b[(ca&o)>>1]=k;k=k&65535;m=b[(u&o)+16>>1]|0;if(m<<16>>16<1&w){q=(m&65535)-v+(e[($&o)>>1]|0)&65535;b[($&o)>>1]=q;break}m=c[(ba&p)>>2]|0;m=(e[($&o)>>1]|0)+((e[(m+(k<<1)&o)>>1]|0)-(e[(m+(k+-1<<1)&o)>>1]|0))|0;k=m&65535;b[($&o)>>1]=k;if(!(t&128))q=k;else{q=m+10&65535;b[($&o)>>1]=q}}else{k=b[($&o)>>1]|0;q=k<<16>>16;do if(r){m=b[(r&o)+16>>1]|0;if(m<<16>>16<1){k=(m&65535)+(k&65535)&65535;break}else{k=(k&65535)+65516&65535;break}}while(0);do if(s){m=b[(s&o)+16>>1]|0;if(m<<16>>16<1){k=(m&65535)+(k&65535)&65535;break}else{k=(k&65535)+65516&65535;break}}while(0);m=(r|0)!=0;do if(m?(b[(r&o)+16>>1]|0)>0&(s|0)!=0:0){if((b[(s&o)+16>>1]|0)<=0)break;k=(k&65535)+65516&65535}while(0);q=(((s|0)!=0)<<31>>31)+(m<<31>>31)+q|0;u=k<<16>>16<10?10:k<<16>>16;q=((u|0)<(q|0)?u:q)&65535;b[($&o)>>1]=q}while(0);k=q&65535;m=Gv(C,k+1+(((b[(y&o)>>1]|0)*15|0)/(b[((c[(F&p)>>2]|0)&o)+42>>1]|0)|0)&65535)|0;if(!(l&320))m=Gv(m,k+16&65535)|0;l=v+A|0;b[(z&o)>>1]=(m&65535)+l;b[($&o)>>1]=k+l;Iv(c[(O&p)>>2]|0,ea,D);k=Fv(d,ea)|0;v=c[(ga&p)>>2]|0;b[($&o)>>1]=(v&2|0)==0?q:aa;if((v&16|0)==0?(e[(ca&o)>>1]|0)<(e[(B&o)>>1]|0):0)Jv(d,f,g,l&65535)|0;b[($&o)>>1]=aa;m=r;l=s}else{m=r;l=s;k=0}}u=Ev(R)|0;if(!((k|0)==0&(u|0)!=0))break;else{r=m;s=l}}}while(0);l=ea;c[(l&p)>>2]=P;c[(l&p)+4>>2]=Q;b[(ca&o)>>1]=X;b[(Y&o)>>1]=T;c[(ga&p)>>2]=_;b[($&o)>>1]=aa;b[(Z&o)>>1]=U;l=X&65535;if(((X<<16>>16==T<<16>>16?(da=l+1|0,da>>>0<(e[(g&o)+46>>1]|0)>>>0):0)?(a[(W&n)>>0]&64)==0:0)?(b[((c[(ba&p)>>2]|0)+(da<<1)&o)>>1]|0)>41:0){k=Nu(V,ea,(U&65535)+1|0)|0;if(!k){b[(ca&o)>>1]=(b[(ca&o)>>1]|0)+1<<16>>16;b[(Y&o)>>1]=(b[(Y&o)>>1]|0)+1<<16>>16;k=b[(Z&o)>>1]|0;b[(Z&o)>>1]=k+1<<16>>16;c[((c[(ea&p)+48>>2]|0)+((k&65535)<<2)&p)>>2]=0;c[(ga&p)>>2]=c[(ga&p)>>2]|32768;k=c[(ba&p)>>2]|0;k=(e[(k+(l<<1)&o)>>1]|0)-(e[(k+(da<<1)&o)>>1]|0)|0;b[($&o)>>1]=(e[($&o)>>1]|0)-k;Jv(d,f,g,(((k<<16)+327680|0)>>>16)+(h&65535)&65535)|0;b[($&o)>>1]=aa;b[(ca&o)>>1]=X;b[(Y&o)>>1]=X;c[(ga&p)>>2]=_;k=0}}}else k=7;i=ha;return k|0}function Kv(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,q=0,r=0;l=b[(a&o)>>1]|0;h=a+8|0;a:do if(l<<16>>16){j=l;k=h;while(1){i=b[(k&o)+8>>1]|0;if(i<<16>>16>=f<<16>>16?(r=k,(c[(r&p)>>2]&d|0)==(d|0)?(c[(r&p)+4>>2]&e|0)==(e|0):0):0){n=k;q=14;break a}if(i<<16>>16<=f<<16>>16?(i=k,r=c[(i&p)>>2]|0,i=c[(i&p)+4>>2]|0,(r&d|0)==(r|0)&(i&e|0)==(i|0)):0)break a;j=j+-1<<16>>16;if(!(j<<16>>16))break;else k=k+16|0}if((l&65535)>=3){i=b[(a&o)+16>>1]|0;k=1;do{if(i<<16>>16>(b[(a+(k<<4)&o)+16>>1]|0))h=a+(k<<4)+8|0;k=k+1|0;i=b[(h&o)+8>>1]|0}while((k&65535)<(l&65535));if(i<<16>>16>f<<16>>16){n=h;q=14}}else q=9}else q=9;while(0);if((q|0)==9){n=l&65535;b[(a&o)>>1]=l+1<<16>>16;b[(a+(n<<4)&o)+18>>1]=g;n=a+(n<<4)+8|0;q=14}if((q|0)==14?(m=n,c[(m&p)>>2]=d,c[(m&p)+4>>2]=e,b[(n&o)+8>>1]=f,m=n+10|0,(b[(m&o)>>1]|0)>g<<16>>16):0)b[(m&o)>>1]=g;return}function Lv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[(d&p)+36>>2]|0;do if(e&17408){if((e&1024|0)!=0?(h=d+28|0,(a[(h&n)>>0]|0)!=0):0){e=d+32|0;Wc(c[(e&p)>>2]|0);a[(h&n)>>0]=0;c[(e&p)>>2]=0;break}if((e&16384|0)!=0?(f=d+28|0,g=c[(f&p)>>2]|0,(g|0)!=0):0){mg(b,c[(g&p)+16>>2]|0);mg(b,c[(f&p)>>2]|0);c[(f&p)>>2]=0}}while(0);return}function Mv(f,g,h,k,l,m,q){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;q=q|0;var 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,H=0,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,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;ta=i;i=i+32|0;if((i|0)>=(j|0))fa();oa=ta;s=c[(c[(f&p)>>2]&p)>>2]|0;na=l&65535;if(l<<16>>16!=0?(b[(s&o)+60>>1]&128)!=0:0)r=0;else pa=3;a:do if((pa|0)==3){sa=c[(g&p)>>2]|0;r=sa&65535;if(r>>>0<=63){qa=iw(1,0,r|0)|0;qa=jw(qa|0,G|0,-1,-1)|0;ra=G;b:do if((qa|0)==0&(ra|0)==0){g=0;h=0;s=1}else{ha=h+24|0;ia=f+4|0;ja=(r|0)==0;ea=g+4|0;ga=(k&768)==0;da=s+8|0;W=(k&256)==0;X=f+68|0;Y=oa+20|0;Z=oa+4|0;aa=oa+24|0;ba=f+328|0;_=0;$=0;g=0;h=0;k=0;t=0;ca=0;s=1;l=0;while(1){if((ca|0)>0){U=l+8|0;V=c[(U&p)>>2]|k;t=c[(U&p)+4>>2]|t}else V=k;if((ca|0)<(na|0))l=c[((c[(ha&p)>>2]|0)+(ca<<2)&p)>>2]|0;else l=m;B=l+36|0;k=c[(B&p)>>2]|0;if(k&1024)break;U=c[((c[(ia&p)>>2]|0)+((d[(l&n)+16>>0]|0)*72|0)&p)+48>>2]|0;if(!ja){k=~V;v=~t;y=0;do{A=iw(1,0,y|0)|0;z=G;c:do if((A&g|0)==0&(z&h|0)==0){u=c[((c[(ea&p)>>2]|0)+(y*20|0)&p)>>2]|0;x=c[(u&p)+4>>2]|0;if(x&4096)do{if(!(x&262144))u=u+12|0;else u=c[((c[(u&p)+20>>2]|0)&p)+4>>2]|0;u=c[(u&p)>>2]|0;x=c[(u&p)+4>>2]|0}while((x&4096|0)!=0);if(((a[(u&n)>>0]|0)==-102?(c[(u&p)+28>>2]|0)==(U|0):0)?(ka=u+32|0,la=Fu(ba,U,b[(ka&o)>>1]|0,k,v,130,0)|0,(la|0)!=0):0){do if(b[(la&o)+18>>1]&2){if((b[(ka&o)>>1]|0)<=-1)break;u=cu(c[(f&p)>>2]|0,c[((c[(ea&p)>>2]|0)+(y*20|0)&p)>>2]|0)|0;if(!u)u=c[(da&p)>>2]|0;x=c[(u&p)>>2]|0;w=cu(c[(f&p)>>2]|0,c[(la&p)>>2]|0)|0;if(!w)w=c[(da&p)>>2]|0;if(dd(x,c[(w&p)>>2]|0)|0)break c}while(0);g=A|g;h=z|h}}while(0);y=y+1|0}while((y|0)<(r|0));k=c[(B&p)>>2]|0}do if(!(k&4096)){if(!(k&256)){u=c[(l&p)+28>>2]|0;if(!u){r=0;break a}if(a[(u&n)+51>>0]&4){r=0;break a}k=b[(u&o)+48>>1]|0;s=(a[(u&n)+50>>0]|0)!=0&1;if(!(k<<16>>16)){pa=71;break}else{S=k&65535;T=b[(u&o)+46>>1]|0}}else{S=1;T=0;u=0}J=l+24|0;K=l+42|0;L=l+48|0;M=(u|0)==0;N=u+32|0;O=iw(1,0,ca|0)|0;P=G;Q=u+4|0;R=u+28|0;I=u+12|0;k=0;u=0;A=0;H=0;d:while(1){z=(u|0)<(e[(J&o)>>1]|0);if((z?(b[(K&o)>>1]|0)==0:0)?(ma=e[((c[((c[(L&p)>>2]|0)+(u<<2)&p)>>2]|0)&o)+18>>1]|0,(ma&130|0)!=0):0){s=(ma&128|0)==0?s:0;z=H}else{if(!M){x=b[((c[(Q&p)>>2]|0)+(u<<1)&o)>>1]|0;w=a[((c[(R&p)>>2]|0)+u&n)>>0]|0;v=c[(I&p)>>2]|0;x=x<<16>>16==(b[(v&o)+36>>1]|0)?-1:x<<16>>16;y=(x|0)>-1;if(s<<24>>24!=0&y)if(z){y=1;F=x}else{y=1;F=x;s=(a[((c[(v&p)+4>>2]|0)+(x*24|0)&n)+20>>0]|0)==0?0:s}else F=x}else{y=0;F=-1;w=0}if(ja){pa=68;break}else{z=1;E=0}e:while(1){C=iw(1,0,E|0)|0;D=G;do if((C&g|0)==0&(D&h|0)==0){v=c[((c[(ea&p)>>2]|0)+(E*20|0)&p)>>2]|0;x=c[(v&p)+4>>2]|0;if(!(x&4096))B=v;else{B=v;do{if(!(x&262144))x=B+12|0;else x=c[((c[(B&p)+20>>2]|0)&p)+4>>2]|0;B=c[(x&p)>>2]|0;x=c[(B&p)+4>>2]|0}while((x&4096|0)!=0)}z=ga?0:z;if((a[(B&n)>>0]|0)!=-102)break;if((c[(B&p)+28>>2]|0)!=(U|0))break;if((b[(B&o)+32>>1]|0)!=(F|0))break;if(!y){B=C;y=D;z=E;break e}x=cu(c[(f&p)>>2]|0,v)|0;if(!x)x=c[(da&p)>>2]|0;if(!(dd(c[(x&p)>>2]|0,c[((c[(N&p)>>2]|0)+(u<<2)&p)>>2]|0)|0)){B=C;y=D;z=E;break e}}while(0);E=E+1|0;if(!(z<<24>>24!=0&(E|0)<(r|0))){pa=68;break d}}do if(W){if(H<<24>>24)if((w^A)<<24>>24==(a[((c[(ea&p)>>2]|0)+(z*20|0)&n)+12>>0]|0)){z=H;break}else{pa=68;break d}v=a[((c[(ea&p)>>2]|0)+(z*20|0)&n)+12>>0]|0;A=v^w;if(w<<24>>24==v<<24>>24){z=1;break}v=q;w=c[(v&p)+4>>2]|P;z=q;c[(z&p)>>2]=c[(v&p)>>2]|O;c[(z&p)+4>>2]=w;z=1}else z=H;while(0);g=B|g;h=y|h;k=(F|0)<0?1:k}u=u+1|0;if((u|0)>=(S|0))break;else H=z}if((pa|0)==68){pa=0;s=(u|0)==0|(u|0)<(T&65535|0)?0:s}if(!(k<<24>>24))pa=71;else s=1}else pa=71;while(0);if((pa|0)==71){pa=0;if(!(s<<24>>24)){s=0;break b}}U=l+8|0;_=c[(U&p)>>2]|_;$=c[(U&p)+4>>2]|$;if(!ja){z=~_;A=~$;y=0;do{u=iw(1,0,y|0)|0;x=G;do if((u&g|0)==0&(x&h|0)==0){k=c[((c[(ea&p)>>2]|0)+(y*20|0)&p)>>2]|0;v=Av(X,k)|0;w=G;if((v|0)==0&(w|0)==0?(c[(oa&p)>>2]=0,c[(oa&p)+4>>2]=0,c[(oa&p)+8>>2]=0,c[(oa&p)+12>>2]=0,c[(oa&p)+16>>2]=0,c[(oa&p)+20>>2]=0,a[(Y&n)>>0]=1,c[(oa&p)>>2]=78,c[(Z&p)>>2]=79,c[(aa&p)>>2]=0,rs(oa,k)|0,(a[(Y&n)>>0]|0)==0):0)break;U=(v&z|0)==0&(w&A|0)==0;g=(U?u:0)|g;h=(U?x:0)|h}while(0);y=y+1|0}while((y|0)<(r|0))}if(h>>>0>ra>>>0|(h|0)==(ra|0)&g>>>0>=qa>>>0|s<<24>>24==0|(ca|0)>=(na|0))break b;else{k=V;ca=ca+1|0}}ga=(a[(l&n)+29>>0]|0)==0;g=ga?g:qa;h=ga?h:ra}while(0);if((g|0)==(qa|0)&(h|0)==(ra|0)){r=sa&255;break}if(!(s<<24>>24)){do{r=r+-1|0;if((r|0)<=0){r=0;break a}ea=iw(1,0,r|0)|0;ea=jw(ea|0,G|0,-1,-1)|0;ga=G}while(!((ea&g|0)==(ea|0)&(ga&h|0)==(ga|0)));r=r&255}else r=-1}else r=0}while(0);i=ta;return r|0}function Nv(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;if(c)Sk(b,33920,5);if(!d)c=0;else{c=d;while(1)if(!(a[(c&n)>>0]|0))break;else c=c+1|0;c=c-d&1073741823}Sk(b,d,c);Sk(b,e,1);Sk(b,13552,1);return}function Ov(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=c[(c[(c[(a&p)>>2]&p)>>2]&p)>>2]|0;d=c[(a&p)+12>>2]|0;g=a+20|0;if((d|0)>0){h=c[(g&p)>>2]|0;while(1){d=d+-1|0;f=h+20|0;e=b[(f&o)>>1]|0;if(e&1){Gk(i,c[(h&p)>>2]|0);e=b[(f&o)>>1]|0}e=e&65535;if(!(e&16)){if(e&32){e=c[(h&p)+12>>2]|0;Ov(e);mg(i,e)}}else{e=c[(h&p)+12>>2]|0;Ov(e);mg(i,e)}if((d|0)<=0)break;else h=h+48|0}}d=c[(g&p)>>2]|0;if((d|0)!=(a+24|0))mg(i,d);return}function Pv(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=i;i=i+32|0;if((i|0)>=(j|0))fa();t=u;h=c[(b&p)+8>>2]|0;k=c[(b&p)>>2]|0;if(e){l=(f|0)==10;m=b+437|0;o=t+4|0;q=t+1|0;r=t+8|0;s=t+12|0;g=f&255;do{if(l)f=a[(e&n)+1>>0]|0;else f=g;a[(m&n)>>0]=f;f=d[(e&n)>>0]|0;if((f|0)==108){w=Vv(b,e)|0;v=gr(k,c[(e&p)+8>>2]|0,0)|0;f=Nr(k,c[(e&p)+28>>2]|0)|0;tr(b,w,v,f,d[(m&n)>>0]|0)}else if((f|0)==109){f=Vv(b,e)|0;rr(b,f,Mr(k,c[(e&p)+20>>2]|0,0,0)|0)}else if((f|0)==110){w=Vv(b,e)|0;v=Pr(k,c[(e&p)+24>>2]|0,0)|0;f=Mr(k,c[(e&p)+20>>2]|0,0,0)|0;sr(b,w,v,f,d[(m&n)>>0]|0)}else{f=gr(k,c[(e&p)+8>>2]|0,0)|0;a[(t&n)>>0]=4;c[(o&p)>>2]=0;a[(q&n)>>0]=0;c[(r&p)>>2]=0;c[(s&p)>>2]=0;ir(b,f,t)|0;Mk(k,f,1)}if((a[(e&n)>>0]|0)!=119)wh(h,98,0,0,0)|0;e=c[(e&p)+32>>2]|0}while((e|0)!=0)}i=u;return}function Qv(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))fa();h=m;l=c[(d&p)>>2]|0;c[(h&p)>>2]=0;c[(h&p)+4>>2]=0;h=nr(l,159,h,0)|0;do if(!h)h=0;else{k=g<<16>>16;if(g<<16>>16>-1?(b[(e&o)+36>>1]|0)!=g<<16>>16:0){g=c[(e&p)+4>>2]|0;c[(h&p)+28>>2]=f+1+k;a[(h&n)+1>>0]=a[(g+(k*24|0)&n)+21>>0]|0;k=c[(g+(k*24|0)&p)+16>>2]|0;if(!k)k=c[(c[(l&p)+8>>2]&p)>>2]|0;h=xv(d,h,k)|0;break}c[(h&p)+28>>2]=f;a[(h&n)+1>>0]=68}while(0);i=m;return h|0}function Rv(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;d=mh(d,48,0)|0;if(d){h=d+0|0;i=h+44|0;do{a[(h&n)>>0]=0;h=h+1|0}while((h|0)<(i|0));a[(d&n)>>0]=-102;b[(d&o)+34>>1]=-1;c[(d&p)+24>>2]=1;h=c[(e+(f*72|0)&p)+24>>2]|0;c[(d&p)+44>>2]=h;c[(d&p)+28>>2]=c[(e+(f*72|0)&p)+48>>2];if((b[(h&o)+36>>1]|0)==(g|0))b[(d&o)+32>>1]=-1;else{b[(d&o)+32>>1]=g;j=(g|0)>63;g=iw(1,0,g|0)|0;h=e+(f*72|0)+64|0;f=h;i=c[(f&p)+4>>2]|(j?-2147483648:G);c[(h&p)>>2]=c[(f&p)>>2]|(j?0:g);c[(h&p)+4>>2]=i}h=d+4|0;c[(h&p)>>2]=c[(h&p)>>2]|4}return d|0}function Sv(b,e){b=b|0;e=e|0;if((a[(e&n)>>0]|0)==-101){e=e+38|0;a[(e&n)>>0]=(d[(e&n)>>0]|0)+(c[(b&p)+24>>2]|0)}return 0}function Tv(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=b[(a&o)+40>>1]|0;i=f&65535;h=b[(a&o)+42>>1]|0;k=e[(d&o)+40>>1]|0;g=b[(d&o)+42>>1]|0;a:do if(!((g&65535)>(h&65535)?1:(i-(h&65535)|0)>=(k-(g&65535)|0))){g=b[(a&o)+20>>1]|0;h=b[(d&o)+20>>1]|0;if(g<<16>>16>=h<<16>>16){if(g<<16>>16>h<<16>>16){f=0;break}if((b[(a&o)+22>>1]|0)>(b[(d&o)+22>>1]|0)){f=0;break}}if(!(f<<16>>16))f=1;else{j=c[(a&p)+48>>2]|0;d=d+48|0;a=i;while(1){a=a+-1|0;h=c[(j+(a<<2)&p)>>2]|0;if(h){f=k;while(1){g=f+-1|0;if((f|0)<=0){f=0;break a}if((c[((c[(d&p)>>2]|0)+(g<<2)&p)>>2]|0)==(h|0))break;else f=g}if((f|0)<1){f=0;break a}}if((a|0)<=0){f=1;break}}}}else f=0;while(0);return f|0}function Uv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,q=0,r=0,s=0,t=0,u=0,v=0;f=c[(d&p)>>2]|0;a:do if(f){k=a[(e&n)+16>>0]|0;l=e+17|0;m=e+18|0;q=e+20|0;r=e+22|0;s=e+42|0;t=e+36|0;do{if((a[(f&n)+16>>0]|0)==k<<24>>24?(a[(f&n)+17>>0]|0)==(a[(l&n)>>0]|0):0){if((((c[(f&p)+36>>2]&16384|0)!=0?(b[(s&o)>>1]|0)==0:0)?(c[(t&p)>>2]&513|0)==513:0)?(i=f,j=e,h=c[(j&p)>>2]|0,j=c[(j&p)+4>>2]|0,(h&c[(i&p)>>2]|0)==(h|0)?(j&c[(i&p)+4>>2]|0)==(j|0):0):0)break a;u=f;v=c[(u&p)>>2]|0;u=c[(u&p)+4>>2]|0;h=e;g=c[(h&p)>>2]|0;h=c[(h&p)+4>>2]|0;i=g&v;j=h&u;if((((i|0)==(v|0)&(j|0)==(u|0)?(b[(f&o)+18>>1]|0)<=(b[(m&o)>>1]|0):0)?(b[(f&o)+20>>1]|0)<=(b[(q&o)>>1]|0):0)?(b[(f&o)+22>>1]|0)<=(b[(r&o)>>1]|0):0){d=0;break a}if(((i|0)==(g|0)&(j|0)==(h|0)?(b[(f&o)+20>>1]|0)>=(b[(q&o)>>1]|0):0)?(b[(f&o)+22>>1]|0)>=(b[(r&o)>>1]|0):0)break a}d=f+52|0;f=c[(d&p)>>2]|0}while((f|0)!=0)}while(0);return d|0}function Vv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=pr(c[(a&p)>>2]|0,0,b+12|0,0)|0;do if(h){g=c[(a&p)>>2]|0;f=c[((c[(b&p)+4>>2]|0)&p)+20>>2]|0;a:do if(f){e=c[(g&p)+20>>2]|0;if((e|0)>0){b=c[(g&p)+16>>2]|0;d=0;while(1){a=d+1|0;if((c[(b+(d<<4)&p)+12>>2]|0)==(f|0)){a=d;d=7;break a}if((a|0)<(e|0))d=a;else{d=7;break}}}else a=0}else{a=-1e6;d=7}while(0);if((d|0)==7)if(!((a|0)==0|(a|0)>1))break;a=kh(g,c[((c[(g&p)+16>>2]|0)+(a<<4)&p)>>2]|0)|0;c[(h+(((c[(h&p)>>2]|0)+-1|0)*72|0)&p)+12>>2]=a}while(0);return h|0}function Wv(a){a=a|0;var b=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,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,O=0,P=0,Q=0,R=0;do if(a>>>0<245){if(a>>>0<11)q=16;else q=a+11&-8;a=q>>>3;l=c[12266]|0;i=l>>>a;if(i&3){e=(i&1^1)+a|0;f=e<<1;b=49104+(f<<2)|0;f=49104+(f+2<<2)|0;g=c[(f&p)>>2]|0;h=g+8|0;i=c[(h&p)>>2]|0;do if((b|0)!=(i|0)){if(i>>>0<(c[12270]|0)>>>0)Ob();d=i+12|0;if((c[(d&p)>>2]|0)==(g|0)){c[(d&p)>>2]=b;c[(f&p)>>2]=i;break}else Ob()}else c[12266]=l&~(1<>2]=x|3;x=g+(x|4)|0;c[(x&p)>>2]=c[(x&p)>>2]|1;x=h;return x|0}k=c[12268]|0;if(q>>>0>k>>>0){if(i){f=2<>>12&16;f=f>>>a;e=f>>>5&8;f=f>>>e;d=f>>>2&4;f=f>>>d;g=f>>>1&2;f=f>>>g;h=f>>>1&1;h=(e|a|d|g|h)+(f>>>h)|0;f=h<<1;g=49104+(f<<2)|0;f=49104+(f+2<<2)|0;d=c[(f&p)>>2]|0;a=d+8|0;e=c[(a&p)>>2]|0;do if((g|0)!=(e|0)){if(e>>>0<(c[12270]|0)>>>0)Ob();i=e+12|0;if((c[(i&p)>>2]|0)==(d|0)){c[(i&p)>>2]=g;c[(f&p)>>2]=e;m=c[12268]|0;break}else Ob()}else{c[12266]=l&~(1<>2]=q|3;j=d+q|0;c[(d+(q|4)&p)>>2]=b|1;c[(d+x&p)>>2]=b;if(m){e=c[12271]|0;g=m>>>3;i=g<<1;f=49104+(i<<2)|0;h=c[12266]|0;g=1<>2]|0;if(i>>>0<(c[12270]|0)>>>0)Ob();else{n=h;o=i}}else{c[12266]=h|g;n=49104+(i+2<<2)|0;o=f}c[(n&p)>>2]=e;c[(o&p)+12>>2]=e;c[(e&p)+8>>2]=o;c[(e&p)+12>>2]=f}c[12268]=b;c[12271]=j;x=a;return x|0}a=c[12267]|0;if(a){h=(a&0-a)+-1|0;w=h>>>12&16;h=h>>>w;v=h>>>5&8;h=h>>>v;x=h>>>2&4;h=h>>>x;i=h>>>1&2;h=h>>>i;g=h>>>1&1;g=c[((v|w|x|i|g)+(h>>>g)<<2&p)+49368>>2]|0;h=(c[(g&p)+4>>2]&-8)-q|0;i=g;while(1){d=c[(i&p)+16>>2]|0;if(!d){d=c[(i&p)+20>>2]|0;if(!d){l=h;k=g;break}}i=(c[(d&p)+4>>2]&-8)-q|0;x=i>>>0>>0;h=x?i:h;i=d;g=x?d:g}a=c[12270]|0;if(k>>>0>>0)Ob();b=k+q|0;if(k>>>0>=b>>>0)Ob();j=c[(k&p)+24>>2]|0;g=c[(k&p)+12>>2]|0;do if((g|0)==(k|0)){h=k+20|0;i=c[(h&p)>>2]|0;if(!i){h=k+16|0;i=c[(h&p)>>2]|0;if(!i){e=0;break}}while(1){g=i+20|0;f=c[(g&p)>>2]|0;if(f){i=f;h=g;continue}g=i+16|0;f=c[(g&p)>>2]|0;if(!f)break;else{i=f;h=g}}if(h>>>0>>0)Ob();else{c[(h&p)>>2]=0;e=i;break}}else{f=c[(k&p)+8>>2]|0;if(f>>>0>>0)Ob();i=f+12|0;if((c[(i&p)>>2]|0)!=(k|0))Ob();h=g+8|0;if((c[(h&p)>>2]|0)==(k|0)){c[(i&p)>>2]=g;c[(h&p)>>2]=f;e=g;break}else Ob()}while(0);do if(j){i=c[(k&p)+28>>2]|0;h=49368+(i<<2)|0;if((k|0)==(c[(h&p)>>2]|0)){c[(h&p)>>2]=e;if(!e){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Ob();i=j+16|0;if((c[(i&p)>>2]|0)==(k|0))c[(i&p)>>2]=e;else c[(j&p)+20>>2]=e;if(!e)break}h=c[12270]|0;if(e>>>0>>0)Ob();c[(e&p)+24>>2]=j;i=c[(k&p)+16>>2]|0;do if(i)if(i>>>0>>0)Ob();else{c[(e&p)+16>>2]=i;c[(i&p)+24>>2]=e;break}while(0);i=c[(k&p)+20>>2]|0;if(i)if(i>>>0<(c[12270]|0)>>>0)Ob();else{c[(e&p)+20>>2]=i;c[(i&p)+24>>2]=e;break}}while(0);if(l>>>0<16){x=l+q|0;c[(k&p)+4>>2]=x|3;x=k+(x+4)|0;c[(x&p)>>2]=c[(x&p)>>2]|1}else{c[(k&p)+4>>2]=q|3;c[(k+(q|4)&p)>>2]=l|1;c[(k+l+q&p)>>2]=l;d=c[12268]|0;if(d){e=c[12271]|0;g=d>>>3;i=g<<1;f=49104+(i<<2)|0;h=c[12266]|0;g=1<>2]|0;if(h>>>0<(c[12270]|0)>>>0)Ob();else{r=i;s=h}}else{c[12266]=h|g;r=49104+(i+2<<2)|0;s=f}c[(r&p)>>2]=e;c[(s&p)+12>>2]=e;c[(e&p)+8>>2]=s;c[(e&p)+12>>2]=f}c[12268]=l;c[12271]=b}x=k+8|0;return x|0}else s=q}else s=q}else if(a>>>0<=4294967231){a=a+11|0;s=a&-8;k=c[12267]|0;if(k){h=0-s|0;a=a>>>8;if(a)if(s>>>0>16777215)d=31;else{q=(a+1048320|0)>>>16&8;r=a<>>16&4;r=r<>>16&2;d=14-(o|q|d)+(r<>>15)|0;d=s>>>(d+7|0)&1|d<<1}else d=0;f=c[(d<<2&p)+49368>>2]|0;a:do if(!f){a=0;i=0}else{if((d|0)==31)i=0;else i=25-(d>>>1)|0;l=h;a=0;b=s<>2]&-8;h=e-s|0;if(h>>>0>>0)if((e|0)==(s|0)){a=f;i=f;break a}else i=f;else h=l;r=c[(f&p)+20>>2]|0;f=c[(f+(b>>>31<<2)&p)+16>>2]|0;a=(r|0)==0|(r|0)==(f|0)?a:r;if(!f)break;else{l=h;b=b<<1}}}while(0);if((a|0)==0&(i|0)==0){a=2<>>12&16;r=r>>>n;m=r>>>5&8;r=r>>>m;o=r>>>2&4;r=r>>>o;q=r>>>1&2;r=r>>>q;a=r>>>1&1;a=c[((m|n|o|q|a)+(r>>>a)<<2&p)+49368>>2]|0}if(!a){o=h;q=i}else while(1){r=(c[(a&p)+4>>2]&-8)-s|0;f=r>>>0>>0;h=f?r:h;i=f?a:i;f=c[(a&p)+16>>2]|0;if(f){a=f;continue}a=c[(a&p)+20>>2]|0;if(!a){o=h;q=i;break}}if((q|0)!=0?o>>>0<((c[12268]|0)-s|0)>>>0:0){a=c[12270]|0;if(q>>>0>>0)Ob();m=q+s|0;if(q>>>0>=m>>>0)Ob();j=c[(q&p)+24>>2]|0;g=c[(q&p)+12>>2]|0;do if((g|0)==(q|0)){h=q+20|0;i=c[(h&p)>>2]|0;if(!i){h=q+16|0;i=c[(h&p)>>2]|0;if(!i){u=0;break}}while(1){g=i+20|0;f=c[(g&p)>>2]|0;if(f){i=f;h=g;continue}g=i+16|0;f=c[(g&p)>>2]|0;if(!f)break;else{i=f;h=g}}if(h>>>0>>0)Ob();else{c[(h&p)>>2]=0;u=i;break}}else{f=c[(q&p)+8>>2]|0;if(f>>>0>>0)Ob();i=f+12|0;if((c[(i&p)>>2]|0)!=(q|0))Ob();h=g+8|0;if((c[(h&p)>>2]|0)==(q|0)){c[(i&p)>>2]=g;c[(h&p)>>2]=f;u=g;break}else Ob()}while(0);do if(j){i=c[(q&p)+28>>2]|0;h=49368+(i<<2)|0;if((q|0)==(c[(h&p)>>2]|0)){c[(h&p)>>2]=u;if(!u){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Ob();i=j+16|0;if((c[(i&p)>>2]|0)==(q|0))c[(i&p)>>2]=u;else c[(j&p)+20>>2]=u;if(!u)break}h=c[12270]|0;if(u>>>0>>0)Ob();c[(u&p)+24>>2]=j;i=c[(q&p)+16>>2]|0;do if(i)if(i>>>0>>0)Ob();else{c[(u&p)+16>>2]=i;c[(i&p)+24>>2]=u;break}while(0);i=c[(q&p)+20>>2]|0;if(i)if(i>>>0<(c[12270]|0)>>>0)Ob();else{c[(u&p)+20>>2]=i;c[(i&p)+24>>2]=u;break}}while(0);b:do if(o>>>0>=16){c[(q&p)+4>>2]=s|3;c[(q+(s|4)&p)>>2]=o|1;c[(q+o+s&p)>>2]=o;i=o>>>3;if(o>>>0<256){h=i<<1;f=49104+(h<<2)|0;g=c[12266]|0;i=1<>2]|0;if(h>>>0>=(c[12270]|0)>>>0){v=i;w=h;break}Ob()}while(0);c[(v&p)>>2]=m;c[(w&p)+12>>2]=m;c[(q+s&p)+8>>2]=w;c[(q+s&p)+12>>2]=f;break}d=o>>>8;if(d)if(o>>>0>16777215)f=31;else{w=(d+1048320|0)>>>16&8;x=d<>>16&4;x=x<>>16&2;f=14-(v|w|f)+(x<>>15)|0;f=o>>>(f+7|0)&1|f<<1}else f=0;i=49368+(f<<2)|0;c[(q+s&p)+28>>2]=f;c[(q+s&p)+20>>2]=0;c[(q+s&p)+16>>2]=0;h=c[12267]|0;g=1<>2]=m;c[(q+s&p)+24>>2]=i;c[(q+s&p)+12>>2]=m;c[(q+s&p)+8>>2]=m;break}d=c[(i&p)>>2]|0;if((f|0)==31)b=0;else b=25-(f>>>1)|0;c:do if((c[(d&p)+4>>2]&-8|0)!=(o|0)){h=o<>>31<<2)+16|0;i=c[(b&p)>>2]|0;if(!i)break;if((c[(i&p)+4>>2]&-8|0)==(o|0)){C=i;break c}else{h=h<<1;d=i}}if(b>>>0<(c[12270]|0)>>>0)Ob();else{c[(b&p)>>2]=m;c[(q+s&p)+24>>2]=d;c[(q+s&p)+12>>2]=m;c[(q+s&p)+8>>2]=m;break b}}else C=d;while(0);d=C+8|0;b=c[(d&p)>>2]|0;x=c[12270]|0;if(C>>>0>=x>>>0&b>>>0>=x>>>0){c[(b&p)+12>>2]=m;c[(d&p)>>2]=m;c[(q+s&p)+8>>2]=b;c[(q+s&p)+12>>2]=C;c[(q+s&p)+24>>2]=0;break}else Ob()}else{x=o+s|0;c[(q&p)+4>>2]=x|3;x=q+(x+4)|0;c[(x&p)>>2]=c[(x&p)>>2]|1}while(0);x=q+8|0;return x|0}}}else s=-1;while(0);a=c[12268]|0;if(a>>>0>=s>>>0){b=a-s|0;d=c[12271]|0;if(b>>>0>15){c[12271]=d+s;c[12268]=b;c[(d+s&p)+4>>2]=b|1;c[(d+a&p)>>2]=b;c[(d&p)+4>>2]=s|3}else{c[12268]=0;c[12271]=0;c[(d&p)+4>>2]=a|3;x=d+(a+4)|0;c[(x&p)>>2]=c[(x&p)>>2]|1}x=d+8|0;return x|0}a=c[12269]|0;if(a>>>0>s>>>0){w=a-s|0;c[12269]=w;x=c[12272]|0;c[12272]=x+s;c[(x+s&p)+4>>2]=w|1;c[(x&p)+4>>2]=s|3;x=x+8|0;return x|0}do if(!(c[12384]|0)){a=wb(30)|0;if(!(a+-1&a)){c[12386]=a;c[12385]=a;c[12387]=-1;c[12388]=-1;c[12389]=0;c[12377]=0;c[12384]=(Pb(0)|0)&-16^1431655768;break}else Ob()}while(0);l=s+48|0;b=c[12386]|0;k=s+47|0;d=b+k|0;b=0-b|0;m=d&b;if(m>>>0<=s>>>0){x=0;return x|0}a=c[12376]|0;if((a|0)!=0?(v=c[12374]|0,w=v+m|0,w>>>0<=v>>>0|w>>>0>a>>>0):0){x=0;return x|0}d:do if(!(c[12377]&4)){a=c[12272]|0;e:do if(a){f=49512|0;while(1){i=c[(f&p)>>2]|0;if(i>>>0<=a>>>0?(t=f+4|0,(i+(c[(t&p)>>2]|0)|0)>>>0>a>>>0):0){e=f;h=t;a=f;break}f=c[(f&p)+8>>2]|0;if(!f){H=181;break e}}if(a){a=d-(c[12269]|0)&b;if(a>>>0<2147483647){i=sb(a|0)|0;if((i|0)==((c[(e&p)>>2]|0)+(c[(h&p)>>2]|0)|0))H=190;else H=191}else a=0}else H=181}else H=181;while(0);do if((H|0)==181){i=sb(0)|0;if((i|0)!=(-1|0)){a=i;h=c[12385]|0;f=h+-1|0;if(!(f&a))a=m;else a=m-a+(f+a&0-h)|0;h=c[12374]|0;f=h+a|0;if(a>>>0>s>>>0&a>>>0<2147483647){w=c[12376]|0;if((w|0)!=0?f>>>0<=h>>>0|f>>>0>w>>>0:0){a=0;break}h=sb(a|0)|0;if((h|0)==(i|0))H=190;else{i=h;H=191}}else a=0}else a=0}while(0);f:do if((H|0)==190){if((i|0)!=(-1|0)){y=i;H=201;break d}}else if((H|0)==191){h=0-a|0;do if((i|0)!=(-1|0)&a>>>0<2147483647&l>>>0>a>>>0?(x=c[12386]|0,x=k-a+x&0-x,x>>>0<2147483647):0)if((sb(x|0)|0)==(-1|0)){sb(h|0)|0;a=0;break f}else{a=x+a|0;break}while(0);if((i|0)==(-1|0))a=0;else{y=i;H=201;break d}}while(0);c[12377]=c[12377]|4;H=198}else{a=0;H=198}while(0);if((((H|0)==198?m>>>0<2147483647:0)?(y=sb(m|0)|0,z=sb(0)|0,(y|0)!=(-1|0)&(z|0)!=(-1|0)&y>>>0>>0):0)?(A=z-y|0,B=A>>>0>(s+40|0)>>>0,B):0){a=B?A:a;H=201}if((H|0)==201){i=(c[12374]|0)+a|0;c[12374]=i;if(i>>>0>(c[12375]|0)>>>0)c[12375]=i;l=c[12272]|0;g:do if(l){e=49512|0;do{i=c[(e&p)>>2]|0;h=e+4|0;f=c[(h&p)>>2]|0;if((y|0)==(i+f|0)){D=i;E=h;F=f;G=e;H=213;break}e=c[(e&p)+8>>2]|0}while((e|0)!=0);if(((H|0)==213?(c[(G&p)+12>>2]&8|0)==0:0)?l>>>0>=D>>>0&l>>>0>>0:0){c[(E&p)>>2]=F+a;b=(c[12269]|0)+a|0;d=l+8|0;if(!(d&7))d=0;else d=0-d&7;x=b-d|0;c[12272]=l+d;c[12269]=x;c[(l+d&p)+4>>2]=x|1;c[(l+b&p)+4>>2]=40;c[12273]=c[12388];break}i=c[12270]|0;if(y>>>0>>0){c[12270]=y;k=y}else k=i;i=y+a|0;h=49512|0;do{if((c[(h&p)>>2]|0)==(i|0)){I=h;J=h;H=223;break}h=c[(h&p)+8>>2]|0}while((h|0)!=0);if((H|0)==223?(c[(J&p)+12>>2]&8|0)==0:0){c[(I&p)>>2]=y;i=J+4|0;c[(i&p)>>2]=(c[(i&p)>>2]|0)+a;i=y+8|0;if(!(i&7))q=0;else q=0-i&7;i=y+(a+8)|0;if(!(i&7))d=0;else d=0-i&7;i=y+(d+a)|0;o=q+s|0;n=y+o|0;m=i-(y+q)-s|0;c[(y+q&p)+4>>2]=s|3;h:do if((i|0)!=(l|0)){if((i|0)==(c[12271]|0)){x=(c[12268]|0)+m|0;c[12268]=x;c[12271]=n;c[(y+o&p)+4>>2]=x|1;c[(y+x+o&p)>>2]=x;break}l=a+4|0;j=c[(y+l+d&p)>>2]|0;if((j&3|0)==1){b=j&-8;f=j>>>3;i:do if(j>>>0>=256){e=c[(y+(d|24)+a&p)>>2]|0;g=c[(y+a+d&p)+12>>2]|0;do if((g|0)==(i|0)){g=d|16;h=y+(l+g)|0;j=c[(h&p)>>2]|0;if(!j){h=y+(g+a)|0;j=c[(h&p)>>2]|0;if(!j){O=0;break}}while(1){g=j+20|0;f=c[(g&p)>>2]|0;if(f){j=f;h=g;continue}g=j+16|0;f=c[(g&p)>>2]|0;if(!f)break;else{j=f;h=g}}if(h>>>0>>0)Ob();else{c[(h&p)>>2]=0;O=j;break}}else{f=c[(y+(d|8)+a&p)>>2]|0;if(f>>>0>>0)Ob();j=f+12|0;if((c[(j&p)>>2]|0)!=(i|0))Ob();h=g+8|0;if((c[(h&p)>>2]|0)==(i|0)){c[(j&p)>>2]=g;c[(h&p)>>2]=f;O=g;break}else Ob()}while(0);if(!e)break;j=c[(y+a+d&p)+28>>2]|0;h=49368+(j<<2)|0;do if((i|0)!=(c[(h&p)>>2]|0)){if(e>>>0<(c[12270]|0)>>>0)Ob();j=e+16|0;if((c[(j&p)>>2]|0)==(i|0))c[(j&p)>>2]=O;else c[(e&p)+20>>2]=O;if(!O)break i}else{c[(h&p)>>2]=O;if(O)break;c[12267]=c[12267]&~(1<>>0>>0)Ob();c[(O&p)+24>>2]=e;j=d|16;i=c[(y+j+a&p)>>2]|0;do if(i)if(i>>>0>>0)Ob();else{c[(O&p)+16>>2]=i;c[(i&p)+24>>2]=O;break}while(0);i=c[(y+l+j&p)>>2]|0;if(!i)break;if(i>>>0<(c[12270]|0)>>>0)Ob();else{c[(O&p)+20>>2]=i;c[(i&p)+24>>2]=O;break}}else{h=c[(y+(d|8)+a&p)>>2]|0;g=c[(y+a+d&p)+12>>2]|0;j=49104+(f<<1<<2)|0;do if((h|0)!=(j|0)){if(h>>>0>>0)Ob();if((c[(h&p)+12>>2]|0)==(i|0))break;Ob()}while(0);if((g|0)==(h|0)){c[12266]=c[12266]&~(1<>>0>>0)Ob();j=g+8|0;if((c[(j&p)>>2]|0)==(i|0)){K=j;break}Ob()}while(0);c[(h&p)+12>>2]=g;c[(K&p)>>2]=h}while(0);i=y+((b|d)+a)|0;j=b+m|0}else j=m;i=i+4|0;c[(i&p)>>2]=c[(i&p)>>2]&-2;c[(y+o&p)+4>>2]=j|1;c[(y+j+o&p)>>2]=j;i=j>>>3;if(j>>>0<256){h=i<<1;f=49104+(h<<2)|0;g=c[12266]|0;i=1<>2]|0;if(h>>>0>=(c[12270]|0)>>>0){P=i;Q=h;break}Ob()}while(0);c[(P&p)>>2]=n;c[(Q&p)+12>>2]=n;c[(y+o&p)+8>>2]=Q;c[(y+o&p)+12>>2]=f;break}d=j>>>8;do if(!d)f=0;else{if(j>>>0>16777215){f=31;break}w=(d+1048320|0)>>>16&8;x=d<>>16&4;x=x<>>16&2;f=14-(v|w|f)+(x<>>15)|0;f=j>>>(f+7|0)&1|f<<1}while(0);i=49368+(f<<2)|0;c[(y+o&p)+28>>2]=f;c[(y+o&p)+20>>2]=0;c[(y+o&p)+16>>2]=0;h=c[12267]|0;g=1<>2]=n;c[(y+o&p)+24>>2]=i;c[(y+o&p)+12>>2]=n;c[(y+o&p)+8>>2]=n;break}d=c[(i&p)>>2]|0;if((f|0)==31)i=0;else i=25-(f>>>1)|0;j:do if((c[(d&p)+4>>2]&-8|0)!=(j|0)){h=j<>>31<<2)+16|0;i=c[(b&p)>>2]|0;if(!i)break;if((c[(i&p)+4>>2]&-8|0)==(j|0)){R=i;break j}else{h=h<<1;d=i}}if(b>>>0<(c[12270]|0)>>>0)Ob();else{c[(b&p)>>2]=n;c[(y+o&p)+24>>2]=d;c[(y+o&p)+12>>2]=n;c[(y+o&p)+8>>2]=n;break h}}else R=d;while(0);d=R+8|0;b=c[(d&p)>>2]|0;x=c[12270]|0;if(R>>>0>=x>>>0&b>>>0>=x>>>0){c[(b&p)+12>>2]=n;c[(d&p)>>2]=n;c[(y+o&p)+8>>2]=b;c[(y+o&p)+12>>2]=R;c[(y+o&p)+24>>2]=0;break}else Ob()}else{x=(c[12269]|0)+m|0;c[12269]=x;c[12272]=n;c[(y+o&p)+4>>2]=x|1}while(0);x=y+(q|8)|0;return x|0}h=49512|0;while(1){i=c[(h&p)>>2]|0;if(i>>>0<=l>>>0?(g=c[(h&p)+4>>2]|0,j=i+g|0,j>>>0>l>>>0):0)break;h=c[(h&p)+8>>2]|0}h=i+(g+-39)|0;if(!(h&7))h=0;else h=0-h&7;g=i+(g+-47+h)|0;g=g>>>0<(l+16|0)>>>0?l:g;h=g+8|0;i=y+8|0;if(!(i&7))i=0;else i=0-i&7;x=a+-40-i|0;c[12272]=y+i;c[12269]=x;c[(y+i&p)+4>>2]=x|1;c[(y+a+-36&p)>>2]=40;c[12273]=c[12388];c[(g&p)+4>>2]=27;c[(h&p)>>2]=c[12378];c[(h&p)+4>>2]=c[12379];c[(h&p)+8>>2]=c[12380];c[(h&p)+12>>2]=c[12381];c[12378]=y;c[12379]=a;c[12381]=0;c[12380]=h;i=g+28|0;c[(i&p)>>2]=7;if((g+32|0)>>>0>>0)do{x=i;i=i+4|0;c[(i&p)>>2]=7}while((x+8|0)>>>0>>0);if((g|0)!=(l|0)){j=g-l|0;i=l+(j+4)|0;c[(i&p)>>2]=c[(i&p)>>2]&-2;c[(l&p)+4>>2]=j|1;c[(l+j&p)>>2]=j;i=j>>>3;if(j>>>0<256){h=i<<1;f=49104+(h<<2)|0;g=c[12266]|0;i=1<>2]|0;if(b>>>0>=(c[12270]|0)>>>0){L=d;M=b;break}Ob()}while(0);c[(L&p)>>2]=l;c[(M&p)+12>>2]=l;c[(l&p)+8>>2]=M;c[(l&p)+12>>2]=f;break}d=j>>>8;if(d)if(j>>>0>16777215)i=31;else{w=(d+1048320|0)>>>16&8;x=d<>>16&4;x=x<>>16&2;i=14-(v|w|i)+(x<>>15)|0;i=j>>>(i+7|0)&1|i<<1}else i=0;d=49368+(i<<2)|0;c[(l&p)+28>>2]=i;c[(l&p)+20>>2]=0;c[(l&p)+16>>2]=0;b=c[12267]|0;e=1<>2]=l;c[(l&p)+24>>2]=d;c[(l&p)+12>>2]=l;c[(l&p)+8>>2]=l;break}d=c[(d&p)>>2]|0;if((i|0)==31)b=0;else b=25-(i>>>1)|0;k:do if((c[(d&p)+4>>2]&-8|0)!=(j|0)){i=j<>>31<<2)+16|0;e=c[(b&p)>>2]|0;if(!e)break;if((c[(e&p)+4>>2]&-8|0)==(j|0)){N=e;break k}else{i=i<<1;d=e}}if(b>>>0<(c[12270]|0)>>>0)Ob();else{c[(b&p)>>2]=l;c[(l&p)+24>>2]=d;c[(l&p)+12>>2]=l;c[(l&p)+8>>2]=l;break g}}else N=d;while(0);d=N+8|0;b=c[(d&p)>>2]|0;x=c[12270]|0;if(N>>>0>=x>>>0&b>>>0>=x>>>0){c[(b&p)+12>>2]=l;c[(d&p)>>2]=l;c[(l&p)+8>>2]=b;c[(l&p)+12>>2]=N;c[(l&p)+24>>2]=0;break}else Ob()}}else{x=c[12270]|0;if((x|0)==0|y>>>0>>0)c[12270]=y;c[12378]=y;c[12379]=a;c[12381]=0;c[12275]=c[12384];c[12274]=-1;d=0;do{x=d<<1;w=49104+(x<<2)|0;c[(x+3<<2&p)+49104>>2]=w;c[(x+2<<2&p)+49104>>2]=w;d=d+1|0}while((d|0)!=32);d=y+8|0;if(!(d&7))d=0;else d=0-d&7;x=a+-40-d|0;c[12272]=y+d;c[12269]=x;c[(y+d&p)+4>>2]=x|1;c[(y+a+-36&p)>>2]=40;c[12273]=c[12388]}while(0);b=c[12269]|0;if(b>>>0>s>>>0){w=b-s|0;c[12269]=w;x=c[12272]|0;c[12272]=x+s;c[(x+s&p)+4>>2]=w|1;c[(x&p)+4>>2]=s|3;x=x+8|0;return x|0}}c[((Hb()|0)&p)>>2]=12;x=0;return x|0}function Xv(a){a=a|0;var b=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,q=0,r=0,s=0,t=0,u=0,v=0;if(!a)return;g=a+-8|0;h=c[12270]|0;if(g>>>0>>0)Ob();f=c[(a+-4&p)>>2]|0;e=f&3;if((e|0)==1)Ob();o=f&-8;r=a+(o+-8)|0;do if(!(f&1)){g=c[(g&p)>>2]|0;if(!e)return;i=-8-g|0;l=a+i|0;m=g+o|0;if(l>>>0>>0)Ob();if((l|0)==(c[12271]|0)){g=a+(o+-4)|0;f=c[(g&p)>>2]|0;if((f&3|0)!=3){v=l;k=m;break}c[12268]=m;c[(g&p)>>2]=f&-2;c[(a+i&p)+4>>2]=m|1;c[(r&p)>>2]=m;return}d=g>>>3;if(g>>>0<256){e=c[(a+i&p)+8>>2]|0;f=c[(a+i&p)+12>>2]|0;g=49104+(d<<1<<2)|0;if((e|0)!=(g|0)){if(e>>>0>>0)Ob();if((c[(e&p)+12>>2]|0)!=(l|0))Ob()}if((f|0)==(e|0)){c[12266]=c[12266]&~(1<>>0>>0)Ob();g=f+8|0;if((c[(g&p)>>2]|0)==(l|0))b=g;else Ob()}else b=f+8|0;c[(e&p)+12>>2]=f;c[(b&p)>>2]=e;v=l;k=m;break}b=c[(a+i&p)+24>>2]|0;e=c[(a+i&p)+12>>2]|0;do if((e|0)==(l|0)){f=a+(i+20)|0;g=c[(f&p)>>2]|0;if(!g){f=a+(i+16)|0;g=c[(f&p)>>2]|0;if(!g){j=0;break}}while(1){e=g+20|0;d=c[(e&p)>>2]|0;if(d){g=d;f=e;continue}e=g+16|0;d=c[(e&p)>>2]|0;if(!d)break;else{g=d;f=e}}if(f>>>0>>0)Ob();else{c[(f&p)>>2]=0;j=g;break}}else{d=c[(a+i&p)+8>>2]|0;if(d>>>0>>0)Ob();g=d+12|0;if((c[(g&p)>>2]|0)!=(l|0))Ob();f=e+8|0;if((c[(f&p)>>2]|0)==(l|0)){c[(g&p)>>2]=e;c[(f&p)>>2]=d;j=e;break}else Ob()}while(0);if(b){g=c[(a+i&p)+28>>2]|0;f=49368+(g<<2)|0;if((l|0)==(c[(f&p)>>2]|0)){c[(f&p)>>2]=j;if(!j){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Ob();g=b+16|0;if((c[(g&p)>>2]|0)==(l|0))c[(g&p)>>2]=j;else c[(b&p)+20>>2]=j;if(!j){v=l;k=m;break}}f=c[12270]|0;if(j>>>0>>0)Ob();c[(j&p)+24>>2]=b;g=c[(a+i&p)+16>>2]|0;do if(g)if(g>>>0>>0)Ob();else{c[(j&p)+16>>2]=g;c[(g&p)+24>>2]=j;break}while(0);g=c[(a+i&p)+20>>2]|0;if(g)if(g>>>0<(c[12270]|0)>>>0)Ob();else{c[(j&p)+20>>2]=g;c[(g&p)+24>>2]=j;v=l;k=m;break}else{v=l;k=m}}else{v=l;k=m}}else{v=g;k=o}while(0);if(v>>>0>=r>>>0)Ob();g=a+(o+-4)|0;f=c[(g&p)>>2]|0;if(!(f&1))Ob();if(!(f&2)){if((r|0)==(c[12272]|0)){l=(c[12269]|0)+k|0;c[12269]=l;c[12272]=v;c[(v&p)+4>>2]=l|1;if((v|0)!=(c[12271]|0))return;c[12271]=0;c[12268]=0;return}if((r|0)==(c[12271]|0)){l=(c[12268]|0)+k|0;c[12268]=l;c[12271]=v;c[(v&p)+4>>2]=l|1;c[(v+l&p)>>2]=l;return}h=(f&-8)+k|0;b=f>>>3;do if(f>>>0>=256){b=c[(a+o&p)+16>>2]|0;g=c[(a+(o|4)&p)>>2]|0;do if((g|0)==(r|0)){f=a+(o+12)|0;g=c[(f&p)>>2]|0;if(!g){f=a+(o+8)|0;g=c[(f&p)>>2]|0;if(!g){q=0;break}}while(1){e=g+20|0;d=c[(e&p)>>2]|0;if(d){g=d;f=e;continue}e=g+16|0;d=c[(e&p)>>2]|0;if(!d)break;else{g=d;f=e}}if(f>>>0<(c[12270]|0)>>>0)Ob();else{c[(f&p)>>2]=0;q=g;break}}else{f=c[(a+o&p)>>2]|0;if(f>>>0<(c[12270]|0)>>>0)Ob();e=f+12|0;if((c[(e&p)>>2]|0)!=(r|0))Ob();d=g+8|0;if((c[(d&p)>>2]|0)==(r|0)){c[(e&p)>>2]=g;c[(d&p)>>2]=f;q=g;break}else Ob()}while(0);if(b){g=c[(a+o&p)+20>>2]|0;f=49368+(g<<2)|0;if((r|0)==(c[(f&p)>>2]|0)){c[(f&p)>>2]=q;if(!q){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Ob();g=b+16|0;if((c[(g&p)>>2]|0)==(r|0))c[(g&p)>>2]=q;else c[(b&p)+20>>2]=q;if(!q)break}g=c[12270]|0;if(q>>>0>>0)Ob();c[(q&p)+24>>2]=b;f=c[(a+o&p)+8>>2]|0;do if(f)if(f>>>0>>0)Ob();else{c[(q&p)+16>>2]=f;c[(f&p)+24>>2]=q;break}while(0);d=c[(a+o&p)+12>>2]|0;if(d)if(d>>>0<(c[12270]|0)>>>0)Ob();else{c[(q&p)+20>>2]=d;c[(d&p)+24>>2]=q;break}}}else{d=c[(a+o&p)>>2]|0;e=c[(a+(o|4)&p)>>2]|0;g=49104+(b<<1<<2)|0;if((d|0)!=(g|0)){if(d>>>0<(c[12270]|0)>>>0)Ob();if((c[(d&p)+12>>2]|0)!=(r|0))Ob()}if((e|0)==(d|0)){c[12266]=c[12266]&~(1<>>0<(c[12270]|0)>>>0)Ob();f=e+8|0;if((c[(f&p)>>2]|0)==(r|0))n=f;else Ob()}else n=e+8|0;c[(d&p)+12>>2]=e;c[(n&p)>>2]=d}while(0);c[(v&p)+4>>2]=h|1;c[(v+h&p)>>2]=h;if((v|0)==(c[12271]|0)){c[12268]=h;return}else g=h}else{c[(g&p)>>2]=f&-2;c[(v&p)+4>>2]=k|1;c[(v+k&p)>>2]=k;g=k}f=g>>>3;if(g>>>0<256){e=f<<1;g=49104+(e<<2)|0;b=c[12266]|0;d=1<>2]|0;if(b>>>0<(c[12270]|0)>>>0)Ob();else{s=d;t=b}}else{c[12266]=b|d;s=49104+(e+2<<2)|0;t=g}c[(s&p)>>2]=v;c[(t&p)+12>>2]=v;c[(v&p)+8>>2]=t;c[(v&p)+12>>2]=g;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{k=(b+1048320|0)>>>16&8;l=b<>>16&4;l=l<>>16&2;f=14-(j|k|f)+(l<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;d=49368+(f<<2)|0;c[(v&p)+28>>2]=f;c[(v&p)+20>>2]=0;c[(v&p)+16>>2]=0;b=c[12267]|0;e=1<>2]|0;if((f|0)==31)b=0;else b=25-(f>>>1)|0;b:do if((c[(d&p)+4>>2]&-8|0)!=(g|0)){f=g<>>31<<2)+16|0;e=c[(b&p)>>2]|0;if(!e)break;if((c[(e&p)+4>>2]&-8|0)==(g|0)){u=e;break b}else{f=f<<1;d=e}}if(b>>>0<(c[12270]|0)>>>0)Ob();else{c[(b&p)>>2]=v;c[(v&p)+24>>2]=d;c[(v&p)+12>>2]=v;c[(v&p)+8>>2]=v;break a}}else u=d;while(0);b=u+8|0;d=c[(b&p)>>2]|0;l=c[12270]|0;if(u>>>0>=l>>>0&d>>>0>=l>>>0){c[(d&p)+12>>2]=v;c[(b&p)>>2]=v;c[(v&p)+8>>2]=d;c[(v&p)+12>>2]=u;c[(v&p)+24>>2]=0;break}else Ob()}else{c[12267]=b|e;c[(d&p)>>2]=v;c[(v&p)+24>>2]=d;c[(v&p)+12>>2]=v;c[(v&p)+8>>2]=v}while(0);l=(c[12274]|0)+-1|0;c[12274]=l;if(!l)b=49520|0;else return;while(1){b=c[(b&p)>>2]|0;if(!b)break;else b=b+8|0}c[12274]=-1;return}function Yv(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){d=Wv(b)|0;return d|0}if(b>>>0>4294967231){c[((Hb()|0)&p)>>2]=12;d=0;return d|0}if(b>>>0<11)d=16;else d=b+11&-8;d=aw(a+-8|0,d)|0;if(d){d=d+8|0;return d|0}d=Wv(b)|0;if(!d){d=0;return d|0}e=c[(a+-4&p)>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;kw(d|0,a|0,(e>>>0>>0?e:b)|0)|0;Xv(a);return d|0}function Zv(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(!d){b=0;return b|0}else{f=d;e=b}while(1){d=a[(e&n)>>0]|0;b=a[(c&n)>>0]|0;if(d<<24>>24!=b<<24>>24)break;f=f+-1|0;if(!f){b=0;g=5;break}else{e=e+1|0;c=c+1|0}}if((g|0)==5)return b|0;b=(d&255)-(b&255)|0;return b|0}function _v(b,c){b=b|0;c=c|0;var d=0,e=0;e=a[(b&n)>>0]|0;d=a[(c&n)>>0]|0;if(e<<24>>24==0?1:e<<24>>24!=d<<24>>24)c=e;else{do{b=b+1|0;c=c+1|0;e=a[(b&n)>>0]|0;d=a[(c&n)>>0]|0}while(!(e<<24>>24==0?1:e<<24>>24!=d<<24>>24));c=e}return (c&255)-(d&255)|0}function $v(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e){c=0;return c|0}f=a[(b&n)>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[(c&n)>>0]|0;if(!(g<<24>>24!=0&(e|0)!=0&f<<24>>24==g<<24>>24))break a;b=b+1|0;c=c+1|0;f=a[(b&n)>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);c=(f&255)-(d[(c&n)>>0]|0)|0;return c|0}function aw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0;o=a+4|0;q=c[(o&p)>>2]|0;j=q&-8;l=a+j|0;i=c[12270]|0;e=q&3;if(!((e|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Ob();d=a+(j|4)|0;g=c[(d&p)>>2]|0;if(!(g&1))Ob();if(!e){if(b>>>0<256){m=0;return m|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[12386]<<1>>>0:0){m=a;return m|0}m=0;return m|0}if(j>>>0>=b>>>0){e=j-b|0;if(e>>>0<=15){m=a;return m|0}c[(o&p)>>2]=q&1|b|2;c[(a+b&p)+4>>2]=e|3;c[(d&p)>>2]=c[(d&p)>>2]|1;bw(a+b|0,e);m=a;return m|0}if((l|0)==(c[12272]|0)){e=(c[12269]|0)+j|0;if(e>>>0<=b>>>0){m=0;return m|0}m=e-b|0;c[(o&p)>>2]=q&1|b|2;c[(a+b&p)+4>>2]=m|1;c[12272]=a+b;c[12269]=m;m=a;return m|0}if((l|0)==(c[12271]|0)){e=(c[12268]|0)+j|0;if(e>>>0>>0){m=0;return m|0}d=e-b|0;if(d>>>0>15){c[(o&p)>>2]=q&1|b|2;c[(a+b&p)+4>>2]=d|1;c[(a+e&p)>>2]=d;e=a+(e+4)|0;c[(e&p)>>2]=c[(e&p)>>2]&-2;e=a+b|0}else{c[(o&p)>>2]=q&1|e|2;e=a+(e+4)|0;c[(e&p)>>2]=c[(e&p)>>2]|1;e=0;d=0}c[12268]=d;c[12271]=e;m=a;return m|0}if(g&2){m=0;return m|0}m=(g&-8)+j|0;if(m>>>0>>0){m=0;return m|0}n=m-b|0;f=g>>>3;do if(g>>>0>=256){h=c[(a+j&p)+24>>2]|0;g=c[(a+j&p)+12>>2]|0;do if((g|0)==(l|0)){d=a+(j+20)|0;e=c[(d&p)>>2]|0;if(!e){d=a+(j+16)|0;e=c[(d&p)>>2]|0;if(!e){k=0;break}}while(1){f=e+20|0;g=c[(f&p)>>2]|0;if(g){e=g;d=f;continue}g=e+16|0;f=c[(g&p)>>2]|0;if(!f)break;else{e=f;d=g}}if(d>>>0>>0)Ob();else{c[(d&p)>>2]=0;k=e;break}}else{f=c[(a+j&p)+8>>2]|0;if(f>>>0>>0)Ob();e=f+12|0;if((c[(e&p)>>2]|0)!=(l|0))Ob();d=g+8|0;if((c[(d&p)>>2]|0)==(l|0)){c[(e&p)>>2]=g;c[(d&p)>>2]=f;k=g;break}else Ob()}while(0);if(h){e=c[(a+j&p)+28>>2]|0;d=49368+(e<<2)|0;if((l|0)==(c[(d&p)>>2]|0)){c[(d&p)>>2]=k;if(!k){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Ob();e=h+16|0;if((c[(e&p)>>2]|0)==(l|0))c[(e&p)>>2]=k;else c[(h&p)+20>>2]=k;if(!k)break}d=c[12270]|0;if(k>>>0>>0)Ob();c[(k&p)+24>>2]=h;e=c[(a+j&p)+16>>2]|0;do if(e)if(e>>>0>>0)Ob();else{c[(k&p)+16>>2]=e;c[(e&p)+24>>2]=k;break}while(0);e=c[(a+j&p)+20>>2]|0;if(e)if(e>>>0<(c[12270]|0)>>>0)Ob();else{c[(k&p)+20>>2]=e;c[(e&p)+24>>2]=k;break}}}else{g=c[(a+j&p)+8>>2]|0;d=c[(a+j&p)+12>>2]|0;e=49104+(f<<1<<2)|0;if((g|0)!=(e|0)){if(g>>>0>>0)Ob();if((c[(g&p)+12>>2]|0)!=(l|0))Ob()}if((d|0)==(g|0)){c[12266]=c[12266]&~(1<>>0>>0)Ob();e=d+8|0;if((c[(e&p)>>2]|0)==(l|0))h=e;else Ob()}else h=d+8|0;c[(g&p)+12>>2]=d;c[(h&p)>>2]=g}while(0);if(n>>>0<16){c[(o&p)>>2]=m|q&1|2;m=a+(m|4)|0;c[(m&p)>>2]=c[(m&p)>>2]|1;m=a;return m|0}else{c[(o&p)>>2]=q&1|b|2;c[(a+b&p)+4>>2]=n|3;m=a+(m|4)|0;c[(m&p)>>2]=c[(m&p)>>2]|1;bw(a+b|0,n);m=a;return m|0}return 0}function bw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0;r=a+b|0;h=c[(a&p)+4>>2]|0;do if(!(h&1)){j=c[(a&p)>>2]|0;if(!(h&3))return;n=a+(0-j)|0;m=j+b|0;i=c[12270]|0;if(n>>>0>>0)Ob();if((n|0)==(c[12271]|0)){g=a+(b+4)|0;h=c[(g&p)>>2]|0;if((h&3|0)!=3){u=n;l=m;break}c[12268]=m;c[(g&p)>>2]=h&-2;c[(a+(4-j)&p)>>2]=m|1;c[(r&p)>>2]=m;return}e=j>>>3;if(j>>>0<256){f=c[(a+(8-j)&p)>>2]|0;g=c[(a+(12-j)&p)>>2]|0;h=49104+(e<<1<<2)|0;if((f|0)!=(h|0)){if(f>>>0>>0)Ob();if((c[(f&p)+12>>2]|0)!=(n|0))Ob()}if((g|0)==(f|0)){c[12266]=c[12266]&~(1<>>0>>0)Ob();h=g+8|0;if((c[(h&p)>>2]|0)==(n|0))d=h;else Ob()}else d=g+8|0;c[(f&p)+12>>2]=g;c[(d&p)>>2]=f;u=n;l=m;break}d=c[(a+(24-j)&p)>>2]|0;f=c[(a+(12-j)&p)>>2]|0;do if((f|0)==(n|0)){f=16-j|0;g=a+(f+4)|0;h=c[(g&p)>>2]|0;if(!h){g=a+f|0;h=c[(g&p)>>2]|0;if(!h){k=0;break}}while(1){f=h+20|0;e=c[(f&p)>>2]|0;if(e){h=e;g=f;continue}f=h+16|0;e=c[(f&p)>>2]|0;if(!e)break;else{h=e;g=f}}if(g>>>0>>0)Ob();else{c[(g&p)>>2]=0;k=h;break}}else{e=c[(a+(8-j)&p)>>2]|0;if(e>>>0>>0)Ob();h=e+12|0;if((c[(h&p)>>2]|0)!=(n|0))Ob();g=f+8|0;if((c[(g&p)>>2]|0)==(n|0)){c[(h&p)>>2]=f;c[(g&p)>>2]=e;k=f;break}else Ob()}while(0);if(d){h=c[(a+(28-j)&p)>>2]|0;g=49368+(h<<2)|0;if((n|0)==(c[(g&p)>>2]|0)){c[(g&p)>>2]=k;if(!k){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Ob();h=d+16|0;if((c[(h&p)>>2]|0)==(n|0))c[(h&p)>>2]=k;else c[(d&p)+20>>2]=k;if(!k){u=n;l=m;break}}f=c[12270]|0;if(k>>>0>>0)Ob();c[(k&p)+24>>2]=d;h=16-j|0;g=c[(a+h&p)>>2]|0;do if(g)if(g>>>0>>0)Ob();else{c[(k&p)+16>>2]=g;c[(g&p)+24>>2]=k;break}while(0);h=c[(a+h&p)+4>>2]|0;if(h)if(h>>>0<(c[12270]|0)>>>0)Ob();else{c[(k&p)+20>>2]=h;c[(h&p)+24>>2]=k;u=n;l=m;break}else{u=n;l=m}}else{u=n;l=m}}else{u=a;l=b}while(0);i=c[12270]|0;if(r>>>0>>0)Ob();h=a+(b+4)|0;g=c[(h&p)>>2]|0;if(!(g&2)){if((r|0)==(c[12272]|0)){m=(c[12269]|0)+l|0;c[12269]=m;c[12272]=u;c[(u&p)+4>>2]=m|1;if((u|0)!=(c[12271]|0))return;c[12271]=0;c[12268]=0;return}if((r|0)==(c[12271]|0)){m=(c[12268]|0)+l|0;c[12268]=m;c[12271]=u;c[(u&p)+4>>2]=m|1;c[(u+m&p)>>2]=m;return}j=(g&-8)+l|0;d=g>>>3;do if(g>>>0>=256){d=c[(a+b&p)+24>>2]|0;f=c[(a+b&p)+12>>2]|0;do if((f|0)==(r|0)){g=a+(b+20)|0;h=c[(g&p)>>2]|0;if(!h){g=a+(b+16)|0;h=c[(g&p)>>2]|0;if(!h){q=0;break}}while(1){f=h+20|0;e=c[(f&p)>>2]|0;if(e){h=e;g=f;continue}f=h+16|0;e=c[(f&p)>>2]|0;if(!e)break;else{h=e;g=f}}if(g>>>0>>0)Ob();else{c[(g&p)>>2]=0;q=h;break}}else{e=c[(a+b&p)+8>>2]|0;if(e>>>0>>0)Ob();h=e+12|0;if((c[(h&p)>>2]|0)!=(r|0))Ob();g=f+8|0;if((c[(g&p)>>2]|0)==(r|0)){c[(h&p)>>2]=f;c[(g&p)>>2]=e;q=f;break}else Ob()}while(0);if(d){h=c[(a+b&p)+28>>2]|0;g=49368+(h<<2)|0;if((r|0)==(c[(g&p)>>2]|0)){c[(g&p)>>2]=q;if(!q){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Ob();g=d+16|0;if((c[(g&p)>>2]|0)==(r|0))c[(g&p)>>2]=q;else c[(d&p)+20>>2]=q;if(!q)break}f=c[12270]|0;if(q>>>0>>0)Ob();c[(q&p)+24>>2]=d;g=c[(a+b&p)+16>>2]|0;do if(g)if(g>>>0>>0)Ob();else{c[(q&p)+16>>2]=g;c[(g&p)+24>>2]=q;break}while(0);f=c[(a+b&p)+20>>2]|0;if(f)if(f>>>0<(c[12270]|0)>>>0)Ob();else{c[(q&p)+20>>2]=f;c[(f&p)+24>>2]=q;break}}}else{e=c[(a+b&p)+8>>2]|0;f=c[(a+b&p)+12>>2]|0;h=49104+(d<<1<<2)|0;if((e|0)!=(h|0)){if(e>>>0>>0)Ob();if((c[(e&p)+12>>2]|0)!=(r|0))Ob()}if((f|0)==(e|0)){c[12266]=c[12266]&~(1<>>0>>0)Ob();g=f+8|0;if((c[(g&p)>>2]|0)==(r|0))o=g;else Ob()}else o=f+8|0;c[(e&p)+12>>2]=f;c[(o&p)>>2]=e}while(0);c[(u&p)+4>>2]=j|1;c[(u+j&p)>>2]=j;if((u|0)==(c[12271]|0)){c[12268]=j;return}else h=j}else{c[(h&p)>>2]=g&-2;c[(u&p)+4>>2]=l|1;c[(u+l&p)>>2]=l;h=l}g=h>>>3;if(h>>>0<256){e=g<<1;h=49104+(e<<2)|0;d=c[12266]|0;f=1<>2]|0;if(e>>>0<(c[12270]|0)>>>0)Ob();else{s=f;t=e}}else{c[12266]=d|f;s=49104+(e+2<<2)|0;t=h}c[(s&p)>>2]=u;c[(t&p)+12>>2]=u;c[(u&p)+8>>2]=t;c[(u&p)+12>>2]=h;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{l=(d+1048320|0)>>>16&8;m=d<>>16&4;m=m<>>16&2;g=14-(k|l|g)+(m<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;f=49368+(g<<2)|0;c[(u&p)+28>>2]=g;c[(u&p)+20>>2]=0;c[(u&p)+16>>2]=0;e=c[12267]|0;d=1<>2]=u;c[(u&p)+24>>2]=f;c[(u&p)+12>>2]=u;c[(u&p)+8>>2]=u;return}d=c[(f&p)>>2]|0;if((g|0)==31)e=0;else e=25-(g>>>1)|0;a:do if((c[(d&p)+4>>2]&-8|0)!=(h|0)){g=h<>>31<<2)+16|0;f=c[(e&p)>>2]|0;if(!f)break;if((c[(f&p)+4>>2]&-8|0)==(h|0)){d=f;break a}else{g=g<<1;d=f}}if(e>>>0<(c[12270]|0)>>>0)Ob();c[(e&p)>>2]=u;c[(u&p)+24>>2]=d;c[(u&p)+12>>2]=u;c[(u&p)+8>>2]=u;return}while(0);e=d+8|0;f=c[(e&p)>>2]|0;m=c[12270]|0;if(!(d>>>0>=m>>>0&f>>>0>=m>>>0))Ob();c[(f&p)+12>>2]=u;c[(e&p)>>2]=u;c[(u&p)+8>>2]=f;c[(u&p)+12>>2]=d;c[(u&p)+24>>2]=0;return}function cw(){}function dw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=b-d-(c>>>0>a>>>0|0)>>>0;return (G=b,a-c>>>0|0)|0}function ew(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){G=b>>c;return a>>>c|(b&(1<>c-32|0}function fw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[(b&n)>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[(b&p)>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[(b&n)>>0]=d;b=b+1|0}return b-e|0}function gw(b){b=b|0;var c=0;c=b;while(a[(c&n)>>0]|0)c=c+1|0;return c-b|0}function hw(b,c){b=b|0;c=c|0;var d=0,e=0;e=b+(gw(b)|0)|0;do{a[(e+d&n)>>0]=a[(c+d&n)>>0];d=d+1|0}while(a[(c+(d-1)&n)>>0]|0);return b|0}function iw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){G=b<>>32-c;return a<>>0;return (G=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function kw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return ub(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[(b&n)>>0]=a[(d&n)>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[(b&p)>>2]=c[(d&p)>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[(b&n)>>0]=a[(d&n)>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function lw(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[(b&n)>>0]=a[(c&n)>>0]|0}b=e}else kw(b,c,d)|0;return b|0}function mw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){G=b>>>c;return a>>>c|(b&(1<>>c-32|0}function nw(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function ow(b){b=b|0;var c=0;c=a[(m+(b&255)&n)>>0]|0;if((c|0)<8)return c|0;c=a[(m+(b>>8&255)&n)>>0]|0;if((c|0)<8)return c+8|0;c=a[(m+(b>>16&255)&n)>>0]|0;if((c|0)<8)return c+16|0;return (a[(m+(b>>>24)&n)>>0]|0)+24|0}function pw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=ca(d,f)|0;e=a>>>16;d=(c>>>16)+(ca(d,e)|0)|0;b=b>>>16;a=ca(b,f)|0;return (G=(d>>>16)+(ca(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function qw(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=dw(j^a,i^b,j,i)|0;g=G;b=f^j;a=e^i;a=dw((vw(h,g,dw(f^c,e^d,f,e)|0,G,0)|0)^b,G^a,b,a)|0;return a|0}function rw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;b=dw(h^a,g^b,h,g)|0;a=G;vw(b,a,dw(l^d,k^e,l,k)|0,G,j)|0;a=dw(c[(j&p)>>2]^h,c[(j&p)+4>>2]^g,h,g)|0;b=G;i=f;return (G=b,a)|0}function sw(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;a=pw(e,f)|0;c=G;return (G=(ca(b,f)|0)+(ca(d,e)|0)+c|c&0,a|0|0)|0}function tw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=vw(a,b,c,d,0)|0;return a|0}function uw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;vw(a,b,d,e,f)|0;i=g;return (G=c[(f&p)+4>>2]|0,c[(f&p)>>2]|0)|0}function vw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0;n=a;l=b;m=l;k=d;o=e;i=o;if(!m){g=(f|0)!=0;if(!i){if(g){c[(f&p)>>2]=(n>>>0)%(k>>>0);c[(f&p)+4>>2]=0}l=0;m=(n>>>0)/(k>>>0)>>>0;return (G=l,m)|0}else{if(!g){l=0;m=0;return (G=l,m)|0}c[(f&p)>>2]=a|0;c[(f&p)+4>>2]=b&0;l=0;m=0;return (G=l,m)|0}}j=(i|0)==0;do if(k){if(!j){h=(ea(i|0)|0)-(ea(m|0)|0)|0;if(h>>>0<=31){g=h+1|0;l=31-h|0;k=h-31>>31;i=g;j=n>>>(g>>>0)&k|m<>>(g>>>0)&k;g=0;h=n<>2]=a|0;c[(f&p)+4>>2]=l|b&0;l=0;m=0;return (G=l,m)|0}j=k-1|0;if(j&k){h=(ea(k|0)|0)+33-(ea(m|0)|0)|0;q=64-h|0;l=32-h|0;a=l>>31;b=h-32|0;k=b>>31;i=h;j=l-1>>31&m>>>(b>>>0)|(m<>>(h>>>0))&k;k=k&m>>>(h>>>0);g=n<>>(b>>>0))&a|n<>31;break}if(f){c[(f&p)>>2]=j&n;c[(f&p)+4>>2]=0}if((k|0)==1){l=l|b&0;m=a|0|0;return (G=l,m)|0}else{a=ow(k|0)|0;l=m>>>(a>>>0)|0;m=m<<32-a|n>>>(a>>>0)|0;return (G=l,m)|0}}else{if(j){if(f){c[(f&p)>>2]=(m>>>0)%(k>>>0);c[(f&p)+4>>2]=0}l=0;m=(m>>>0)/(k>>>0)>>>0;return (G=l,m)|0}if(!n){if(f){c[(f&p)>>2]=0;c[(f&p)+4>>2]=(m>>>0)%(i>>>0)}l=0;m=(m>>>0)/(i>>>0)>>>0;return (G=l,m)|0}j=i-1|0;if(!(j&i)){if(f){c[(f&p)>>2]=a|0;c[(f&p)+4>>2]=j&m|b&0}l=0;m=m>>>((ow(i|0)|0)>>>0);return (G=l,m)|0}h=(ea(i|0)|0)-(ea(m|0)|0)|0;if(h>>>0<=30){k=h+1|0;h=31-h|0;i=k;j=m<>>(k>>>0);k=m>>>(k>>>0);g=0;h=n<>2]=a|0;c[(f&p)+4>>2]=l|b&0;l=0;m=0;return (G=l,m)|0}while(0);if(!i){l=h;i=0;h=0}else{m=d|0|0;l=o|e&0;b=jw(m,l,-1,-1)|0;a=G;d=h;h=0;do{q=d;d=g>>>31|d<<1;g=h|g<<1;q=j<<1|q>>>31|0;o=j>>>31|k<<1|0;dw(b,a,q,o)|0;n=G;e=n>>31|((n|0)<0?-1:0)<<1;h=e&1;j=dw(q,o,e&m,(((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1)&l)|0;k=G;i=i-1|0}while((i|0)!=0);l=d;i=0}d=0;if(f){c[(f&p)>>2]=j;c[(f&p)+4>>2]=k}l=(g|0)>>>31|(l|d)<<1|(d<<1|g>>>31)&0|i;m=(g<<1|0>>>31)&-2|h;return (G=l,m)|0}function ww(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return $b[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function xw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ac[a&63](b|0,c|0,d|0)|0}function yw(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;bc[a&1](b|0,c|0,d|0,e|0,f|0,g|0)}function zw(a,b){a=a|0;b=b|0;cc[a&31](b|0)}function Aw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;dc[a&1](b|0,c|0,d|0,e|0,f|0)}function Bw(a,b,c){a=a|0;b=b|0;c=c|0;return +ec[a&1](b|0,c|0)}function Cw(a,b,c){a=a|0;b=b|0;c=+c;fc[a&1](b|0,+c)}function Dw(a,b){a=a|0;b=b|0;return +gc[a&1](b|0)}function Ew(a){a=a|0;return hc[a&7]()|0}function Fw(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return ic[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function Gw(a,b,c){a=a|0;b=b|0;c=c|0;jc[a&15](b|0,c|0)}function Hw(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 kc[a&7](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Iw(a,b){a=a|0;b=b|0;return lc[a&127](b|0)|0}function Jw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;mc[a&63](b|0,c|0,d|0)}function Kw(a){a=a|0;nc[a&3]()}function Lw(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return oc[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function Mw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return pc[a&31](b|0,c|0,d|0,e|0)|0}function Nw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;qc[a&15](b|0,c|0,d|0,e|0)}function Ow(a,b,c){a=a|0;b=b|0;c=c|0;return rc[a&127](b|0,c|0)|0}function Pw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return sc[a&1](b|0,c|0,+d)|0}function Qw(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 tc[a&31](b|0,c|0,d|0,e|0,f|0)|0}function Rw(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;ha(0);return 0}function Sw(a,b,c){a=a|0;b=b|0;c=c|0;ia(1);return 0}function Tw(a,b,c){a=a|0;b=b|0;c=c|0;return tb(a|0,b|0,c|0)|0}function Uw(a,b,c){a=a|0;b=b|0;c=c|0;return Yb(a|0,b|0,c|0)|0}function Vw(a,b,c){a=a|0;b=b|0;c=c|0;return Fb(a|0,b|0,c|0)|0}function Ww(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ja(2)}function Xw(a){a=a|0;ka(3)}function Yw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;la(4)}function Zw(a,b){a=a|0;b=b|0;ma(5);return 0.0}function _w(a,b){a=a|0;b=+b;na(6)}function $w(a){a=a|0;oa(7);return 0.0}function ax(){pa(8);return 0}function bx(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;qa(9);return 0}function cx(a,b){a=a|0;b=b|0;ra(10)}function dx(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(11);return 0}function ex(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 Ub(a|0,b|0,c|0,d|0,e|0,f|0)|0}function fx(a){a=a|0;ta(12);return 0}function gx(a){a=a|0;return Xb(a|0)|0}function hx(a){a=a|0;return vb(a|0)|0}function ix(a){a=a|0;return hb(a|0)|0}function jx(a,b,c){a=a|0;b=b|0;c=c|0;ua(13)}function kx(){va(14)}function lx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;wa(15);return 0}function mx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;xa(16);return 0}function nx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ya(17)}function ox(a,b){a=a|0;b=b|0;za(18);return 0}function px(a,b){a=a|0;b=b|0;return eb(a|0,b|0)|0}function qx(a,b){a=a|0;b=b|0;return Wb(a|0,b|0)|0}function rx(a,b){a=a|0;b=b|0;return Ib(a|0,b|0)|0}function sx(a,b){a=a|0;b=b|0;return fb(a|0,b|0)|0}function tx(a,b){a=a|0;b=b|0;return zb(a|0,b|0)|0}function ux(a,b){a=a|0;b=b|0;return xb(a|0,b|0)|0}function vx(a,b){a=a|0;b=b|0;return Ab(a|0,b|0)|0}function wx(a,b){a=a|0;b=b|0;return Tb(a|0,b|0)|0}function xx(a,b,c){a=a|0;b=b|0;c=+c;Aa(19);return 0}function yx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Ba(20);return 0} -// EMSCRIPTEN_END_FUNCS -var $b=[Rw,ue];var ac=[Sw,li,qi,si,vi,xi,qe,we,vf,Xf,Yf,Ff,Ef,Hf,Oe,Df,Gf,Cf,xe,Qf,pf,Ge,Fc,Jf,Ne,ef,fg,Yc,Gi,Li,Oi,ek,kk,sk,Tw,Uw,Vw,uk,Bp,Cp,Ap,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw,Sw];var bc=[Ww,Jd];var cc=[Xw,Wc,$e,yf,Hd,Rd,Qd,Rc,Ki,Si,Ti,Vi,_i,cj,Fj,Gj,Hj,Jj,Lj,ok,qo,yp,ql,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw,Xw];var dc=[Yw,Bd];var ec=[Zw,ce];var fc=[_w,Cd];var gc=[$w,td];var hc=[ax,hf,kf,Qc,lf,jf,vk,ax];var ic=[bx,$f,Af,bx];var jc=[cx,ri,Fd,Nd,Od,Pd,cd,Mi,Ri,ru,su,cx,cx,cx,cx,cx];var kc=[dx,_e,Vf,oe,ex,dx,dx,dx];var lc=[fx,Yd,ye,rf,tf,Zd,ff,gf,_d,Ce,ed,Nf,Se,Mf,ld,md,Zf,qf,Tc,nd,Sd,sf,Td,pd,rd,sd,ud,vd,He,qd,wd,xd,yd,zd,od,Me,Je,Sc,Oc,ag,Kc,Nc,Ud,kd,hd,jd,id,Gc,Ec,nf,Of,df,uf,of,Pf,Ee,De,Ue,Ve,Vc,Di,Ji,Ni,Ui,Xi,Yi,Zi,bk,lk,mk,gx,hx,ix,wk,Ak,Xk,gl,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx];var mc=[jx,pi,Dd,Ed,Gd,bd,Pi,$i,aj,bj,dj,ej,fj,gj,hj,ij,jj,kj,lj,mj,nj,oj,pj,qj,rj,sj,tj,uj,vj,wj,xj,yj,zj,Aj,Bj,Cj,Dj,Ej,Ij,Kj,Mj,Nj,Oj,Pj,Qj,Rj,Sj,Tj,Uj,Vj,Wj,Xj,Yj,Zj,_j,$j,ak,Th,jx,jx,jx,jx,jx,jx];var nc=[kx,_f,We,kx];var oc=[lx,zf,Bf,Ie];var pc=[mx,mi,ni,re,af,ad,Ke,Le,cg,Sf,Ic,fd,gg,$c,Te,nk,rk,Dc,Dh,Fh,Jh,Uh,$m,dq,mx,mx,mx,mx,mx,mx,mx,mx];var qc=[nx,wf,Ad,Id,Kd,Ld,Md,Xd,Qi,pg,nx,nx,nx,nx,nx,nx];var rc=[ox,oi,ti,ui,wi,yi,zi,Ai,Bi,Ci,Vd,se,Ae,ze,xf,$d,ae,be,le,me,de,ee,je,ke,fe,he,ie,ge,cf,Wd,_c,Rf,Tf,Xc,Be,Zc,Mc,dg,bg,Fe,gd,Pc,If,Lf,hg,ig,dd,eg,Uc,Pe,Hi,Ii,Wi,fk,gk,hk,ik,jk,pk,px,qx,rx,sx,tx,ux,tk,vx,wx,xk,yk,zk,Bk,Ck,Dk,Ph,xp,Dm,Em,ps,qs,Zs,_s,gu,hu,ou,pu,qu,pv,Sv,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox,ox];var sc=[xx,pe];var tc=[yx,ki,ne,te,ve,Uf,Wf,Qe,Xe,Ye,Re,Ze,bf,Jc,Kf,Ei,Fi,ck,dk,qk,Ek,Un,Vn,yx,yx,yx,yx,yx,yx,yx,yx,yx];return{_i64Subtract:dw,_strcat:hw,_free:Xv,_main:Cc,_realloc:Yv,_i64Add:jw,_memmove:lw,_bitshift64Ashr:ew,_strlen:gw,_memset:fw,_malloc:Wv,_memcpy:kw,_bitshift64Lshr:mw,_llvm_bswap_i32:nw,_bitshift64Shl:iw,runPostSets:cw,stackAlloc:uc,stackSave:vc,stackRestore:wc,setThrew:xc,setTempRet0:Ac,getTempRet0:Bc,dynCall_iiiiiiii:ww,dynCall_iiii:xw,dynCall_viiiiii:yw,dynCall_vi:zw,dynCall_viiiii:Aw,dynCall_dii:Bw,dynCall_vid:Cw,dynCall_di:Dw,dynCall_i:Ew,dynCall_iiiiiiiiii:Fw,dynCall_vii:Gw,dynCall_iiiiiii:Hw,dynCall_ii:Iw,dynCall_viii:Jw,dynCall_v:Kw,dynCall_iiiiiiiii:Lw,dynCall_iiiii:Mw,dynCall_viiii:Nw,dynCall_iii:Ow,dynCall_iiid:Pw,dynCall_iiiiii:Qw}}) -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var real__i64Subtract=asm["_i64Subtract"];asm["_i64Subtract"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Subtract.apply(null,arguments)});var real__strcat=asm["_strcat"];asm["_strcat"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__strcat.apply(null,arguments)});var real__main=asm["_main"];asm["_main"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__main.apply(null,arguments)});var real__realloc=asm["_realloc"];asm["_realloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__realloc.apply(null,arguments)});var real__i64Add=asm["_i64Add"];asm["_i64Add"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Add.apply(null,arguments)});var real__memmove=asm["_memmove"];asm["_memmove"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__memmove.apply(null,arguments)});var real__bitshift64Ashr=asm["_bitshift64Ashr"];asm["_bitshift64Ashr"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Ashr.apply(null,arguments)});var real__strlen=asm["_strlen"];asm["_strlen"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__strlen.apply(null,arguments)});var real__bitshift64Lshr=asm["_bitshift64Lshr"];asm["_bitshift64Lshr"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Lshr.apply(null,arguments)});var real__llvm_bswap_i32=asm["_llvm_bswap_i32"];asm["_llvm_bswap_i32"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__llvm_bswap_i32.apply(null,arguments)});var real__bitshift64Shl=asm["_bitshift64Shl"];asm["_bitshift64Shl"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Shl.apply(null,arguments)});var real_runPostSets=asm["runPostSets"];asm["runPostSets"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_runPostSets.apply(null,arguments)});var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _strcat=Module["_strcat"]=asm["_strcat"];var _free=Module["_free"]=asm["_free"];var _main=Module["_main"]=asm["_main"];var _realloc=Module["_realloc"]=asm["_realloc"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memmove=Module["_memmove"]=asm["_memmove"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _strlen=Module["_strlen"]=asm["_strlen"];var _memset=Module["_memset"]=asm["_memset"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=asm["dynCall_iiiiiiiiii"];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_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiid=Module["dynCall_iiid"]=asm["dynCall_iiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=(function(){var goog={math:{}};goog.math.Long=(function(low,high){this.low_=low|0;this.high_=high|0});goog.math.Long.IntCache_={};goog.math.Long.fromInt=(function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj){return cachedObj}}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128){goog.math.Long.IntCache_[value]=obj}return obj});goog.math.Long.fromNumber=(function(value){if(isNaN(value)||!isFinite(value)){return goog.math.Long.ZERO}else if(value<=-goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MIN_VALUE}else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MAX_VALUE}else if(value<0){return goog.math.Long.fromNumber(-value).negate()}else{return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)}});goog.math.Long.fromBits=(function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)});goog.math.Long.fromString=(function(str,opt_radix){if(str.length==0){throw Error("number format error: empty string")}var radix=opt_radix||10;if(radix<2||36=0){throw Error('number format error: interior "-" character: '+str)}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_});goog.math.Long.prototype.getNumBitsAbs=(function(){if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){return 64}else{return this.negate().getNumBitsAbs()}}else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--){if((val&1<0});goog.math.Long.prototype.greaterThanOrEqual=(function(other){return this.compare(other)>=0});goog.math.Long.prototype.compare=(function(other){if(this.equals(other)){return 0}var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg){return-1}if(!thisNeg&&otherNeg){return 1}if(this.subtract(other).isNegative()){return-1}else{return 1}});goog.math.Long.prototype.negate=(function(){if(this.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.MIN_VALUE}else{return this.not().add(goog.math.Long.ONE)}});goog.math.Long.prototype.add=(function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.subtract=(function(other){return this.add(other.negate())});goog.math.Long.prototype.multiply=(function(other){if(this.isZero()){return goog.math.Long.ZERO}else if(other.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}else if(other.equals(goog.math.Long.MIN_VALUE)){return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().multiply(other.negate())}else{return this.negate().multiply(other).negate()}}else if(other.isNegative()){return this.multiply(other.negate()).negate()}if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_)){return goog.math.Long.fromNumber(this.toNumber()*other.toNumber())}var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.div=(function(other){if(other.isZero()){throw Error("division by zero")}else if(this.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE)){return goog.math.Long.MIN_VALUE}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ONE}else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO)){return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE}else{var rem=this.subtract(other.multiply(approx));var result=approx.add(rem.div(other));return result}}}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().div(other.negate())}else{return this.negate().div(other).negate()}}else if(other.isNegative()){return this.div(other.negate()).negate()}var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero()){approxRes=goog.math.Long.ONE}res=res.add(approxRes);rem=rem.subtract(approxRem)}return res});goog.math.Long.prototype.modulo=(function(other){return this.subtract(this.div(other).multiply(other))});goog.math.Long.prototype.not=(function(){return goog.math.Long.fromBits(~this.low_,~this.high_)});goog.math.Long.prototype.and=(function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)});goog.math.Long.prototype.or=(function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)});goog.math.Long.prototype.xor=(function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)});goog.math.Long.prototype.shiftLeft=(function(numBits){numBits&=63;if(numBits==0){return this}else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<>>32-numBits)}else{return goog.math.Long.fromBits(0,low<>>numBits|high<<32-numBits,high>>numBits)}else{return goog.math.Long.fromBits(high>>numBits-32,high>=0?0:-1)}}});goog.math.Long.prototype.shiftRightUnsigned=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32){return goog.math.Long.fromBits(high,0)}else{return goog.math.Long.fromBits(high>>>numBits-32,0)}}});var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<>this.DB-sh}else this[this.t-1]|=x<=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<0){if(p>p)>0){m=true;r=int2char(d)}while(i>=0){if(p>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<>bs;for(var i=ds+1;i>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i=0)r[i]=0;for(i=0;i=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<1?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&1<0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:(function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative()){ret=x.negate()}else{ret=x}HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_}),ensureTemps:(function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=new BigInteger}),lh2bignum:(function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d}),stringify:(function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret}),fromString:(function(str,base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error"})};return Wrapper})();if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");function applyMemoryInitializer(data){if(data.byteLength)data=new Uint8Array(data);for(var i=0;i0){Module.printErr("run() called, but dependencies remain, so not running");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(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}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){if(Module["noExitRuntime"]){Module.printErr("exit("+status+") called, but noExitRuntime, so not exiting (you can use emscripten_force_exit, if you want to force a true shutdown)");return}ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status);if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}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="";var output="abort("+what+") at "+stackTrace()+extra;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() diff --git a/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-safe-heap.js b/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-safe-heap.js deleted file mode 100644 index 5db5879265b..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite-safe-heap.js +++ /dev/null @@ -1,18 +0,0 @@ -var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function";var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};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}}))}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 (jsc?)"}}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};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.log(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]}}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,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){assert(args.length==sig.length-1);if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].apply(null,args)}else{assert(sig.length==1);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i0),size)|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success)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};Module["Runtime"]=Runtime;function getSafeHeapType(bytes,isFloat){switch(bytes){case 1:return"i8";case 2:return"i16";case 4:return isFloat?"float":"i32";case 8:return"double";default:assert(0)}}function SAFE_HEAP_STORE(dest,value,bytes,isFloat){if(dest<=0)abort("segmentation fault storing "+bytes+" bytes to address "+dest);if(dest%bytes!==0)abort("alignment error storing to address "+dest+", which was expected to be aligned to a multiple of "+bytes);if(dest+bytes>Math.max(DYNAMICTOP,STATICTOP))abort("segmentation fault, exceeded the top of the available heap when storing "+bytes+" bytes to address "+dest+". STATICTOP="+STATICTOP+", DYNAMICTOP="+DYNAMICTOP);assert(DYNAMICTOP<=TOTAL_MEMORY);setValue(dest,value,getSafeHeapType(bytes,isFloat),1)}function SAFE_HEAP_LOAD(dest,bytes,isFloat,unsigned){if(dest<=0)abort("segmentation fault loading "+bytes+" bytes from address "+dest);if(dest%bytes!==0)abort("alignment error loading from address "+dest+", which was expected to be aligned to a multiple of "+bytes);if(dest+bytes>Math.max(DYNAMICTOP,STATICTOP))abort("segmentation fault, exceeded the top of the available heap when loading "+bytes+" bytes from address "+dest+". STATICTOP="+STATICTOP+", DYNAMICTOP="+DYNAMICTOP);assert(DYNAMICTOP<=TOTAL_MEMORY);var type=getSafeHeapType(bytes,isFloat);var ret=getValue(dest,type,1);if(unsigned)ret=unSign(ret,parseInt(type.substr(1)),1);return ret}function SAFE_FT_MASK(value,mask){var ret=value&mask;if(ret!==value){abort("Function table mask error: function pointer is "+value+" which is masked by "+mask+", the likely cause of this is that the function pointer is being called by the wrong type.")}return ret}var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;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 cwrap,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){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!=="array",'Return type should not be "array".');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)}}else{switch(type){case"i1":SAFE_HEAP_STORE(ptr|0,value|0,1,0)|0;break;case"i8":SAFE_HEAP_STORE(ptr|0,value|0,1,0)|0;break;case"i16":SAFE_HEAP_STORE(ptr|0,value|0,2,0)|0;break;case"i32":SAFE_HEAP_STORE(ptr|0,value|0,4,0)|0;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)],SAFE_HEAP_STORE(ptr|0,tempI64[0]|0,4,0)|0,SAFE_HEAP_STORE(ptr+4|0,tempI64[1]|0,4,0)|0;break;case"float":+SAFE_HEAP_STORE(ptr|0,+value,4,1);break;case"double":+SAFE_HEAP_STORE(ptr|0,+value,8,1);break;default:abort("invalid type for setValue: "+type)}}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";if(noSafe){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)}}else{switch(type){case"i1":return SAFE_HEAP_LOAD(ptr|0,1,0,0)|0;case"i8":return SAFE_HEAP_LOAD(ptr|0,1,0,0)|0;case"i16":return SAFE_HEAP_LOAD(ptr|0,2,0,0)|0;case"i32":return SAFE_HEAP_LOAD(ptr|0,4,0,0)|0;case"i64":return SAFE_HEAP_LOAD(ptr|0,8,0,0)|0;case"float":return+SAFE_HEAP_LOAD(ptr|0,4,1,0);case"double":return+SAFE_HEAP_LOAD(ptr|0,8,1,0);default:abort("invalid type for setValue: "+type)}}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;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=[_malloc,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(i0){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)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=SAFE_HEAP_LOAD(ptr++|0,1,0,0)|0;if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){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)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;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}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;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}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=SAFE_HEAP_LOAD(ptr+i*2|0,2,0,0)|0;if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}SAFE_HEAP_STORE(outPtr|0,codeUnit|0,4,0)|0;outPtr+=4;if(outPtr+4>endPtr)break}SAFE_HEAP_STORE(outPtr|0,0|0,4,0)|0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);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)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}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(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;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)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;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}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.");chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}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["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"];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_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=="undefined"){runDependencyWatcher=setInterval((function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;Module.printErr("still waiting on run dependencies:")}Module.printErr("dependency: "+dep)}if(shown){Module.printErr("(end of list)")}}),1e4)}}else{Module.printErr("warning: run dependency added without ID")}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{Module.printErr("warning: run dependency removed without ID")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;STATIC_BASE=8;STATICTOP=STATIC_BASE+49568;__ATINIT__.push();allocate([32,0,0,0,88,0,0,0,168,0,0,0,224,0,0,0,0,1,0,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,116,49,40,97,32,73,78,84,69,71,69,82,44,32,98,32,73,78,84,69,71,69,82,44,32,99,32,86,65,82,67,72,65,82,40,49,48,48,41,41,59,0,0,73,78,83,69,82,84,32,73,78,84,79,32,116,49,32,86,65,76,85,69,83,40,49,44,49,51,49,53,51,44,39,116,104,105,114,116,101,101,110,32,116,104,111,117,115,97,110,100,32,111,110,101,32,104,117,110,100,114,101,100,32,102,105,102,116,121,32,116,104,114,101,101,39,41,59,0,0,0,0,0,73,78,83,69,82,84,32,73,78,84,79,32,116,49,32,86,65,76,85,69,83,40,49,44,57,56,55,44,39,115,111,109,101,32,111,116,104,101,114,32,110,117,109,98,101,114,39,41,59,0,0,0,0,0,0,0,83,69,76,69,67,84,32,99,111,117,110,116,40,42,41,32,70,82,79,77,32,116,49,59,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,97,44,32,98,44,32,99,32,70,82,79,77,32,116,49,59],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([114,99,32,61,61,32,83,81,76,73,84,69,95,79,75,0,116,101,115,116,46,99,0,0,116,101,115,116,49,0,0,0,99,111,117,110,116,40,42,41,61,50,97,61,49,98,61,49,51,49,53,51,99,61,116,104,105,114,116,101,101,110,32,116,104,111,117,115,97,110,100,32,111,110,101,32,104,117,110,100,114,101,100,32,102,105,102,116,121,32,116,104,114,101,101,97,61,49,98,61,57,56,55,99,61,115,111,109,101,32,111,116,104,101,114,32,110,117,109,98,101,114,0,0,0,0,0,0,115,116,114,99,109,112,40,98,117,102,102,101,114,44,32,69,88,80,69,67,84,69,68,41,32,61,61,32,48,0,0,0,51,46,56,46,57,0,0,0,83,81,76,73,84,69,95,0,104,191,0,0,120,191,0,0,136,191,0,0,152,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,254,255,255,127,0,0,0,0,128,0,0,0,244,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,208,38,0,0,216,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,224,38,0,0,240,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,248,38,0,0,8,39,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,16,39,0,0,216,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,117,110,105,120,0,0,0,0,7,0,0,0,0,0,0,0,117,110,105,120,45,110,111,110,101,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,117,110,105,120,45,100,111,116,102,105,108,101,0,0,0,0,9,0,0,0,0,0,0,0,117,110,105,120,45,101,120,99,108,0,0,0,0,0,0,0,115,111,117,114,99,101,32,97,110,100,32,100,101,115,116,105,110,97,116,105,111,110,32,109,117,115,116,32,98,101,32,100,105,115,116,105,110,99,116,0,0,0,0,64,0,0,0,0,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,115,116,114,105,110,103,32,111,114,32,98,108,111,98,32,116,111,111,32,98,105,103,0,0,145,0,0,0,54,0,0,0,55,0,0,0,31,1,1,1,70,0,10,1,47,0,0,1,35,1,0,0,16,0,4,0,61,0,0,0,24,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,58,32,37,115,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,116,97,98,108,101,32,119,105,116,104,111,117,116,32,114,111,119,105,100,58,32,37,115,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,101,119,58,32,37,115,0,0,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,34,37,115,34,0,0,0,0,102,111,114,101,105,103,110,32,107,101,121,0,0,0,0,0,105,110,100,101,120,101,100,0,99,97,110,110,111,116,32,111,112,101,110,32,37,115,32,99,111,108,117,109,110,32,102,111,114,32,119,114,105,116,105,110,103,0,0,0,0,0,0,0,37,115,0,0,0,0,0,0,42,63,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,10,10,10,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,64,0,42,42,42,42,42,42,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,3,2,5,0,0,0,1,0,2,3,4,2,2,2,1,1,2,3,4,2,2,2,1,2,2,2,2,2,2,2,1,3,3,2,4,2,2,2,1,4,2,2,2,4,5,2,6,5,5,5,5,5,5,5,6,6,5,5,5,5,5,7,1,7,5,5,5,5,5,5,99,114,101,97,116,101,0,0,116,114,105,103,103,101,114,0,116,101,109,112,0,0,0,0,116,101,109,112,111,114,97,114,121,0,0,0,0,0,0,0,101,110,100,0,0,0,0,0,101,120,112,108,97,105,110,0,50,48,49,53,45,48,52,45,48,56,32,49,50,58,49,54,58,51,51,32,56,97,56,102,102,99,56,54,50,101,57,54,102,53,55,97,97,54,57,56,102,57,51,100,101,49,48,100,101,101,50,56,101,54,57,102,54,101,48,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,3,0,0,0,0,8,0,235,3,0,0,0,0,128,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,109,0,101,0,109,0,111,0,114,0,121,0,0,0,0,0,0,0,108,0,105,0,98,0,114,0,97,0,114,0,121,0,32,0,114,0,111,0,117,0,116,0,105,0,110,0,101,0,32,0,99,0,97,0,108,0,108,0,101,0,100,0,32,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,115,0,101,0,113,0,117,0,101,0,110,0,99,0,101,0,0,0,0,0,0,202,154,59,0,202,154,59,208,7,0,0,232,3,0,0,244,1,0,0,168,97,0,0,127,0,0,0,10,0,0,0,80,195,0,0,231,3,0,0,232,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,78,84,69,71,69,82,0,66,73,78,65,82,89,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,32,99,111,108,117,109,110,58,32,37,115,46,37,115,0,0,0,0,0,57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,56,48,0,0,0,0,0,0,111,110,111,102,102,97,108,115,101,121,101,115,116,114,117,101,102,117,108,108,0,0,0,0,0,1,2,4,9,12,16,0,2,2,3,5,3,4,4,0,1,0,0,0,1,1,2,0,82,69,73,78,68,69,88,69,68,69,83,67,65,80,69,65,67,72,69,67,75,69,89,66,69,70,79,82,69,73,71,78,79,82,69,71,69,88,80,76,65,73,78,83,84,69,65,68,68,65,84,65,66,65,83,69,76,69,67,84,65,66,76,69,70,84,72,69,78,68,69,70,69,82,82,65,66,76,69,76,83,69,88,67,69,80,84,82,65,78,83,65,67,84,73,79,78,65,84,85,82,65,76,84,69,82,65,73,83,69,88,67,76,85,83,73,86,69,88,73,83,84,83,65,86,69,80,79,73,78,84,69,82,83,69,67,84,82,73,71,71,69,82,69,70,69,82,69,78,67,69,83,67,79,78,83,84,82,65,73,78,84,79,70,70,83,69,84,69,77,80,79,82,65,82,89,85,78,73,81,85,69,82,89,87,73,84,72,79,85,84,69,82,69,76,69,65,83,69,65,84,84,65,67,72,65,86,73,78,71,82,79,85,80,68,65,84,69,66,69,71,73,78,78,69,82,69,67,85,82,83,73,86,69,66,69,84,87,69,69,78,79,84,78,85,76,76,73,75,69,67,65,83,67,65,68,69,76,69,84,69,67,65,83,69,67,79,76,76,65,84,69,67,82,69,65,84,69,67,85,82,82,69,78,84,95,68,65,84,69,68,69,84,65,67,72,73,77,77,69,68,73,65,84,69,74,79,73,78,83,69,82,84,77,65,84,67,72,80,76,65,78,65,76,89,90,69,80,82,65,71,77,65,66,79,82,84,86,65,76,85,69,83,86,73,82,84,85,65,76,73,77,73,84,87,72,69,78,87,72,69,82,69,78,65,77,69,65,70,84,69,82,69,80,76,65,67,69,65,78,68,69,70,65,85,76,84,65,85,84,79,73,78,67,82,69,77,69,78,84,67,65,83,84,67,79,76,85,77,78,67,79,77,77,73,84,67,79,78,70,76,73,67,84,67,82,79,83,83,67,85,82,82,69,78,84,95,84,73,77,69,83,84,65,77,80,82,73,77,65,82,89,68,69,70,69,82,82,69,68,73,83,84,73,78,67,84,68,82,79,80,70,65,73,76,70,82,79,77,70,85,76,76,71,76,79,66,89,73,70,73,83,78,85,76,76,79,82,68,69,82,69,83,84,82,73,67,84,82,73,71,72,84,82,79,76,76,66,65,67,75,82,79,87,85,78,73,79,78,85,83,73,78,71,86,65,67,85,85,77,86,73,69,87,73,78,73,84,73,65,76,76,89,0,0,0,0,0,0,0,76,105,117,74,0,45,0,0,82,0,77,0,0,42,12,78,15,0,116,85,54,112,0,19,0,0,121,0,119,115,0,22,93,0,9,0,0,70,71,0,69,6,0,48,90,102,0,118,101,0,0,44,0,103,24,0,17,0,122,53,23,0,5,110,25,96,0,0,124,106,60,123,57,28,55,0,91,0,100,26,0,99,0,0,0,95,92,97,88,109,14,39,108,0,81,0,18,89,111,32,0,120,80,113,62,46,84,0,0,94,40,59,114,0,36,0,0,29,0,86,63,64,0,20,61,0,56,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,13,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,21,0,0,0,0,0,50,0,43,3,47,0,0,0,0,30,0,58,0,38,0,0,0,1,66,0,0,67,0,41,0,0,0,0,0,0,49,65,0,0,0,0,31,52,16,34,10,0,0,0,0,0,0,0,11,72,79,0,8,0,104,98,0,107,0,87,0,75,51,0,27,37,73,83,0,35,68,0,0,0,0,0,0,7,7,5,4,6,4,5,3,6,7,3,6,6,7,7,3,8,2,6,5,4,4,3,10,4,6,11,6,2,7,5,5,9,6,9,9,7,10,10,4,6,2,3,9,4,2,6,5,7,4,5,7,6,6,5,6,5,5,9,7,7,3,2,4,4,7,3,6,4,7,6,12,6,9,4,6,5,4,7,6,5,6,7,5,4,5,6,5,7,3,7,13,2,2,4,6,6,8,5,17,12,7,8,8,2,4,4,4,4,4,2,2,6,5,8,5,8,3,5,5,6,4,9,3,0,0,0,0,0,0,2,0,2,0,8,0,9,0,14,0,16,0,20,0,23,0,25,0,25,0,29,0,33,0,36,0,41,0,46,0,48,0,53,0,54,0,59,0,62,0,65,0,67,0,69,0,78,0,81,0,86,0,91,0,95,0,96,0,101,0,105,0,109,0,117,0,122,0,128,0,136,0,142,0,152,0,159,0,162,0,162,0,165,0,167,0,167,0,171,0,176,0,179,0,184,0,184,0,188,0,192,0,199,0,204,0,209,0,212,0,218,0,221,0,225,0,234,0,240,0,240,0,240,0,243,0,246,0,250,0,251,0,255,0,5,1,9,1,16,1,22,1,34,1,40,1,49,1,51,1,57,1,62,1,64,1,71,1,76,1,81,1,87,1,93,1,98,1,102,1,105,1,111,1,115,1,122,1,124,1,131,1,133,1,135,1,144,1,148,1,154,1,160,1,168,1,173,1,173,1,189,1,196,1,203,1,204,1,211,1,215,1,219,1,223,1,227,1,230,1,232,1,234,1,240,1,244,1,252,1,1,2,9,2,12,2,17,2,22,2,28,2,32,2,37,2,67,28,140,42,84,44,104,53,35,113,46,47,50,2,49,142,41,24,119,16,98,138,11,112,139,117,6,30,107,98,141,57,9,20,13,118,62,105,99,131,55,54,111,21,21,71,103,3,25,66,98,14,34,128,127,110,5,98,58,74,77,19,52,101,50,37,33,109,136,95,17,69,43,8,124,108,51,4,32,56,29,120,65,129,137,130,68,31,59,72,100,106,15,75,38,39,10,40,98,69,69,102,7,121,73,114,45,123,98,50,36,18,76,126,60,98,12,61,115,125,63,64,48,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,82,79,87,73,68,95,0,82,79,87,73,68,0,0,0,79,73,68,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,115,113,108,105,116,101,95,109,97,115,116,101,114,40,10,32,32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116,98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,67,82,69,65,84,69,32,84,69,77,80,32,84,65,66,76,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,40,10,32,32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116,98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,0,0,0,0,0,0,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,0,0,0,0,0,0,115,113,108,105,116,101,95,109,97,115,116,101,114,0,0,0,49,0,0,0,0,0,0,0,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,109,117,115,116,32,117,115,101,32,116,104,101,32,115,97,109,101,32,116,101,120,116,32,101,110,99,111,100,105,110,103,32,97,115,32,109,97,105,110,32,100,97,116,97,98,97,115,101,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,102,105,108,101,32,102,111,114,109,97,116,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,0,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,83,69,76,69,67,84,32,116,98,108,44,105,100,120,44,115,116,97,116,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,0,0,0,0,117,110,111,114,100,101,114,101,100,42,0,0,0,0,0,0,115,122,61,91,48,45,57,93,42,0,0,0,0,0,0,0,110,111,115,107,105,112,115,99,97,110,42,0,0,0,0,0,0,0,2,0,3,0,5,0,6,0,7,0,8,0,9,0,33,0,32,0,30,0,28,0,26,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,114,111,111,116,112,97,103,101,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,40,37,115,41,0,0,37,115,32,45,32,37,115,0,100,97,116,97,98,97,115,101,32,99,111,114,114,117,112,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,0,0,0,109,105,115,117,115,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,0,0,0,78,79,67,65,83,69,0,0,82,84,82,73,77,0,0,0,109,97,105,110,0,0,0,0,10,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,6,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,13,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,8,0,0,0,14,0,0,0,3,0,0,0,4,0,0,0,9,0,0,0,10,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,19,0,0,0,1,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,11,0,0,0,6,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,9,0,0,0,28,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,2,0,0,0,16,0,0,0,29,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,17,0,0,0,1,0,0,0,2,0,0,0,18,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,8,0,0,0,9,0,0,0,12,0,0,0,1,0,0,0,33,0,0,0,19,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,13,0,0,0,14,0,0,0,7,0,0,0,5,0,0,0,20,0,0,0,1,0,0,0,1,0,0,0,21,0,0,0,15,0,0,0,34,0,0,0,16,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,1,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,35,0,0,0,17,0,0,0,10,0,0,0,11,0,0,0,34,0,0,0,12,0,0,0,18,0,0,0,35,0,0,0,36,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,37,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,38,0,0,0,5,0,0,0,6,0,0,0,39,0,0,0,7,0,0,0,40,0,0,0,36,0,0,0,41,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,37,0,0,0,6,0,0,0,42,0,0,0,38,0,0,0,19,0,0,0,39,0,0,0,43,0,0,0,10,0,0,0,44,0,0,0,11,0,0,0,45,0,0,0,46,0,0,0,40,0,0,0,47,0,0,0,48,0,0,0,2,0,0,0,20,0,0,0,49,0,0,0,13,0,0,0,50,0,0,0,5,0,0,0,41,0,0,0,5,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,42,0,0,0,43,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,51,0,0,0,52,0,0,0,44,0,0,0,45,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,46,0,0,0,26,0,0,0,12,0,0,0,47,0,0,0,13,0,0,0,14,0,0,0,57,0,0,0,3,0,0,0,1,0,0,0,58,0,0,0,14,0,0,0,48,0,0,0,59,0,0,0,27,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,49,0,0,0,97,117,116,111,109,97,116,105,99,32,101,120,116,101,110,115,105,111,110,32,108,111,97,100,105,110,103,32,102,97,105,108,101,100,58,32,37,115,0,0,77,65,84,67,72,0,0,0,58,109,101,109,111,114,121,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,60,0,0,0,15,0,0,0,16,0,0,0,28,0,0,0,50,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,112,97,103,101,115,32,102,114,111,109,32,37,115,0,0,0,0,0,0,217,213,5,249,32,161,99,215,99,97,110,110,111,116,32,108,105,109,105,116,32,87,65,76,32,115,105,122,101,58,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,102,114,97,109,101,115,32,102,114,111,109,32,87,65,76,32,102,105,108,101,32,37,115,0,0,0,0,45,106,111,117,114,110,97,108,0,0,0,0,0,0,0,0,45,119,97,108,0,0,0,0,110,111,108,111,99,107,0,0,105,109,109,117,116,97,98,108,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,105,108,101,58,0,0,0,108,111,99,97,108,104,111,115,116,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,117,114,105,32,97,117,116,104,111,114,105,116,121,58,32,37,46,42,115,0,0,0,0,0,118,102,115,0,0,0,0,0,99,97,99,104,101,0,0,0,232,58,0,0,0,0,2,0,240,58,0,0,0,0,4,0,0,0,0,0,0,0,0,0,115,104,97,114,101,100,0,0,112,114,105,118,97,116,101,0,109,111,100,101,0,0,0,0,40,59,0,0,1,0,0,0,48,59,0,0,2,0,0,0,56,59,0,0,6,0,0,0,64,59,0,0,128,0,0,0,0,0,0,0,0,0,0,0,114,111,0,0,0,0,0,0,114,119,0,0,0,0,0,0,114,119,99,0,0,0,0,0,109,101,109,111,114,121,0,0,97,99,99,101,115,115,0,0,110,111,32,115,117,99,104,32,37,115,32,109,111,100,101,58,32,37,115,0,0,0,0,0,37,115,32,109,111,100,101,32,110,111,116,32,97,108,108,111,119,101,100,58,32,37,115,0,110,111,32,115,117,99,104,32,118,102,115,58,32,37,115,0,105,110,118,97,108,105,100,0,65,80,73,32,99,97,108,108,32,119,105,116,104,32,37,115,32,100,97,116,97,98,97,115,101,32,99,111,110,110,101,99,116,105,111,110,32,112,111,105,110,116,101,114,0,0,0,0,117,110,97,98,108,101,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,32,37,115,32,105,110,32,116,104,101,32,114,101,113,117,101,115,116,101,100,32,99,111,110,116,101,120,116,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,0,1,2,3,0,1,0,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,117,115,101,114,45,102,117,110,99,116,105,111,110,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,240,60,0,0,0,61,0,0,0,0,0,0,40,61,0,0,72,61,0,0,104,61,0,0,128,61,0,0,160,61,0,0,176,61,0,0,216,61,0,0,232,61,0,0,248,61,0,0,32,62,0,0,56,62,0,0,88,62,0,0,120,62,0,0,144,62,0,0,168,62,0,0,112,39,0,0,200,62,0,0,224,62,0,0,248,62,0,0,32,63,0,0,64,63,0,0,88,63,0,0,120,63,0,0,160,63,0,0,0,0,0,0,110,111,116,32,97,110,32,101,114,114,111,114,0,0,0,0,83,81,76,32,108,111,103,105,99,32,101,114,114,111,114,32,111,114,32,109,105,115,115,105,110,103,32,100,97,116,97,98,97,115,101,0,0,0,0,0,97,99,99,101,115,115,32,112,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,0,0,0,0,0,0,0,99,97,108,108,98,97,99,107,32,114,101,113,117,101,115,116,101,100,32,113,117,101,114,121,32,97,98,111,114,116,0,0,100,97,116,97,98,97,115,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,97,32,114,101,97,100,111,110,108,121,32,100,97,116,97,98,97,115,101,0,0,0,0,105,110,116,101,114,114,117,112,116,101,100,0,0,0,0,0,100,105,115,107,32,73,47,79,32,101,114,114,111,114,0,0,100,97,116,97,98,97,115,101,32,100,105,115,107,32,105,109,97,103,101,32,105,115,32,109,97,108,102,111,114,109,101,100,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,111,112,101,114,97,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,111,114,32,100,105,115,107,32,105,115,32,102,117,108,108,0,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,32,102,105,108,101,0,0,0,0,108,111,99,107,105,110,103,32,112,114,111,116,111,99,111,108,0,0,0,0,0,0,0,0,116,97,98,108,101,32,99,111,110,116,97,105,110,115,32,110,111,32,100,97,116,97,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,104,97,115,32,99,104,97,110,103,101,100,0,0,0,0,0,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,100,97,116,97,116,121,112,101,32,109,105,115,109,97,116,99,104,0,0,0,0,0,0,0,108,105,98,114,97,114,121,32,114,111,117,116,105,110,101,32,99,97,108,108,101,100,32,111,117,116,32,111,102,32,115,101,113,117,101,110,99,101,0,0,108,97,114,103,101,32,102,105,108,101,32,115,117,112,112,111,114,116,32,105,115,32,100,105,115,97,98,108,101,100,0,0,97,117,116,104,111,114,105,122,97,116,105,111,110,32,100,101,110,105,101,100,0,0,0,0,97,117,120,105,108,105,97,114,121,32,100,97,116,97,98,97,115,101,32,102,111,114,109,97,116,32,101,114,114,111,114,0,98,105,110,100,32,111,114,32,99,111,108,117,109,110,32,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,102,105,108,101,32,105,115,32,101,110,99,114,121,112,116,101,100,32,111,114,32,105,115,32,110,111,116,32,97,32,100,97,116,97,98,97,115,101,0,0,117,110,107,110,111,119,110,32,101,114,114,111,114,0,0,0,97,98,111,114,116,32,100,117,101,32,116,111,32,82,79,76,76,66,65,67,75,0,0,0,117,110,97,98,108,101,32,116,111,32,99,108,111,115,101,32,100,117,101,32,116,111,32,117,110,102,105,110,97,108,105,122,101,100,32,115,116,97,116,101,109,101,110,116,115,32,111,114,32,117,110,102,105,110,105,115,104,101,100,32,98,97,99,107,117,112,115,0,0,0,0,0,1,0,0,0,0,0,0,0,61,0,0,0,8,0,0,0,29,0,0,0,7,0,0,0,62,0,0,0,30,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,63,0,0,0,11,0,0,0,52,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,12,0,0,0,0,0,0,0,102,97,105,108,101,100,32,109,101,109,111,114,121,32,114,101,115,105,122,101,32,37,117,32,116,111,32,37,117,32,98,121,116,101,115,0,0,0,0,0,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,117,32,98,121,116,101,115,32,111,102,32,109,101,109,111,114,121,0,0,0,1,0,1,8,1,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,1,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,2,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,56,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,2,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,56,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,64,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,64,73,0,0,0,0,0,0,0,0,0,0,255,255,33,8,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,0,0,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,1,0,33,16,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,255,255,33,8,1,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,0,0,33,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,1,0,33,16,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,1,0,129,8,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,88,73,0,0,0,0,0,0,0,0,0,0,1,0,65,8,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,96,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,104,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,112,73,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,112,73,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,120,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,128,73,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,136,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,144,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,152,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,152,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,160,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,168,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,255,255,1,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,192,73,0,0,0,0,0,0,0,0,0,0,2,0,1,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,200,73,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,208,73,0,0,0,0,0,0,0,0,0,0,2,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,224,73,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,240,73,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,248,73,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,2,0,33,8,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,16,74,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,24,74,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,40,74,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,64,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,80,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,112,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,144,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,152,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,176,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,184,74,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,200,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,208,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,224,74,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,224,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,14,0,0,0,240,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,15,0,0,0,248,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,16,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,17,0,0,0,8,75,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,17,0,0,0,8,75,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,18,0,0,0,16,75,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,18,0,0,0,16,75,0,0,0,0,0,0,0,0,0,0,2,0,13,8,112,40,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,32,75,0,0,0,0,0,0,0,0,0,0,2,0,5,8,40,75,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,48,75,0,0,0,0,0,0,0,0,0,0,3,0,5,8,40,75,0,0,0,0,0,0,40],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+8464);allocate([48,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,116,114,105,109,0,0,0,114,116,114,105,109,0,0,0,116,114,105,109,0,0,0,0,109,105,110,0,0,0,0,0,109,97,120,0,0,0,0,0,116,121,112,101,111,102,0,0,108,101,110,103,116,104,0,0,105,110,115,116,114,0,0,0,115,117,98,115,116,114,0,0,112,114,105,110,116,102,0,0,117,110,105,99,111,100,101,0,99,104,97,114,0,0,0,0,97,98,115,0,0,0,0,0,114,111,117,110,100,0,0,0,117,112,112,101,114,0,0,0,108,111,119,101,114,0,0,0,99,111,97,108,101,115,99,101,0,0,0,0,0,0,0,0,104,101,120,0,0,0,0,0,105,102,110,117,108,108,0,0,117,110,108,105,107,101,108,121,0,0,0,0,0,0,0,0,108,105,107,101,108,105,104,111,111,100,0,0,0,0,0,0,108,105,107,101,108,121,0,0,114,97,110,100,111,109,0,0,114,97,110,100,111,109,98,108,111,98,0,0,0,0,0,0,110,117,108,108,105,102,0,0,115,113,108,105,116,101,95,118,101,114,115,105,111,110,0,0,115,113,108,105,116,101,95,115,111,117,114,99,101,95,105,100,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,108,111,103,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,117,115,101,100,0,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,103,101,116,0,0,0,0,0,0,0,0,113,117,111,116,101,0,0,0,108,97,115,116,95,105,110,115,101,114,116,95,114,111,119,105,100,0,0,0,0,0,0,0,99,104,97,110,103,101,115,0,116,111,116,97,108,95,99,104,97,110,103,101,115,0,0,0,114,101,112,108,97,99,101,0,122,101,114,111,98,108,111,98,0,0,0,0,0,0,0,0,108,111,97,100,95,101,120,116,101,110,115,105,111,110,0,0,115,117,109,0,0,0,0,0,116,111,116,97,108,0,0,0,97,118,103,0,0,0,0,0,99,111,117,110,116,0,0,0,103,114,111,117,112,95,99,111,110,99,97,116,0,0,0,0,103,108,111,98,0,0,0,0,37,95,0,1,0,0,0,0,108,105,107,101,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,168,75,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,192,75,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,216,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,0,0,0,0,37,115,37,46,42,115,34,37,119,34,0,0,0,0,0,0,37,115,37,115,0,0,0,0,37,46,42,115,34,37,119,34,37,115,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,56,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,72,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,80,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,88,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,104,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,120,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,136,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,160,77,0,0,0,0,0,0,0,0,0,0,106,117,108,105,97,110,100,97,121,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,116,105,109,101,0,0,0,0,100,97,116,101,116,105,109,101,0,0,0,0,0,0,0,0,115,116,114,102,116,105,109,101,0,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,115,116,97,109,112,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,100,97,116,101,0,0,0,0,37,48,50,100,0,0,0,0,37,48,54,46,51,102,0,0,37,48,51,100,0,0,0,0,37,46,49,54,103,0,0,0,37,108,108,100,0,0,0,0,37,48,52,100,0,0,0,0,108,111,99,97,108,116,105,109,101,0,0,0,0,0,0,0,117,110,105,120,101,112,111,99,104,0,0,0,0,0,0,0,117,116,99,0,0,0,0,0,119,101,101,107,100,97,121,32,0,0,0,0,0,0,0,0,115,116,97,114,116,32,111,102,32,0,0,0,0,0,0,0,109,111,110,116,104,0,0,0,121,101,97,114,0,0,0,0,100,97,121,0,0,0,0,0,104,111,117,114,0,0,0,0,109,105,110,117,116,101,0,0,115,101,99,111,110,100,0,0,108,111,99,97,108,32,116,105,109,101,32,117,110,97,118,97,105,108,97,98,108,101,0,0,110,111,119,0,0,0,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,32,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,0,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,0,0,76,73,75,69,32,111,114,32,71,76,79,66,32,112,97,116,116,101,114,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,0,0,0,69,83,67,65,80,69,32,101,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,97,32,115,105,110,103,108,101,32,99,104,97,114,97,99,116,101,114,0,0,0,0,44,0,0,0,0,0,0,0,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,37,33,46,49,53,103,0,0,37,33,46,50,48,101,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,78,85,76,76,0,0,0,0,37,46,42,102,0,0,0,0,105,110,116,101,103,101,114,0,116,101,120,116,0,0,0,0,114,101,97,108,0,0,0,0,98,108,111,98,0,0,0,0,110,117,108,108,0,0,0,0,1,0,0,0,0,0,0,0,152,79,0,0,0,0,0,0,32,0,0,0,0,0,0,0,105,110,116,101,114,114,117,112,116,0,0,0,0,0,0,0,117,110,114,101,99,111,103,110,105,122,101,100,32,116,111,107,101,110,58,32,34,37,84,34,0,0,0,0,0,0,0,0,110,101,97,114,32,34,37,84,34,58,32,115,121,110,116,97,120,32,101,114,114,111,114,0,114,111,119,105,100,0,0,0,117,110,107,110,111,119,110,32,116,97,98,108,101,32,111,112,116,105,111,110,58,32,37,46,42,115,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,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,99,111,109,112,111,117,110,100,32,83,69,76,69,67,84,0,0,0,0,0,0,0,115,101,116,32,108,105,115,116,0,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,111,110,32,102,117,110,99,116,105,111,110,32,37,84,0,0,0,0,0,0,0,8,130,0,0,1,0,0,0,168,51,0,0,1,0,0,0,105,110,100,101,120,0,0,0,113,117,97,108,105,102,105,101,100,32,116,97,98,108,101,32,110,97,109,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,73,78,83,69,82,84,44,32,85,80,68,65,84,69,44,32,97,110,100,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,116,104,101,32,73,78,68,69,88,69,68,32,66,89,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,0,116,104,101,32,78,79,84,32,73,78,68,69,88,69,68,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,144,1,145,2,145,1,146,1,146,3,147,0,147,1,147,3,148,1,149,3,151,0,151,1,151,2,150,0,150,1,150,1,150,1,149,2,149,2,149,2,153,1,153,0,149,2,149,3,149,5,149,2,154,6,156,1,158,0,158,3,157,1,157,0,155,5,155,2,162,0,162,2,160,3,160,1,164,3,165,1,152,1,152,1,152,1,166,0,166,1,168,1,168,4,168,6,169,1,169,2,170,1,170,1,167,2,167,0,173,2,173,2,173,4,173,3,173,3,173,2,173,2,173,3,173,5,173,2,173,4,173,4,173,1,173,2,178,0,178,1,180,0,180,2,182,2,182,3,182,3,182,3,183,2,183,2,183,1,183,1,183,2,181,3,181,2,184,0,184,2,184,2,161,0,161,2,185,3,185,1,186,1,186,0,187,2,187,7,187,5,187,5,187,10,189,0,189,1,176,0,176,3,190,0,190,2,191,1,191,1,191,1,149,4,193,2,193,0,149,8,149,4,149,1,163,2,195,1,195,3,198,1,198,2,198,1,196,9,196,1,207,4,207,5,199,1,199,1,199,0,210,2,210,0,200,3,200,2,200,4,211,2,211,1,211,0,201,0,201,2,213,2,213,0,212,7,212,7,212,7,159,0,159,2,194,2,214,1,214,2,214,3,214,4,216,2,216,0,215,0,215,3,215,2,217,4,217,0,205,0,205,3,220,4,220,2,177,1,177,1,177,0,203,0,203,3,204,0,204,2,206,0,206,2,206,4,206,4,149,6,202,0,202,2,149,8,221,5,221,3,149,6,149,7,222,2,222,1,223,0,223,3,219,3,219,1,175,1,175,3,174,1,175,1,175,1,175,3,175,5,174,1,174,1,175,1,175,3,175,6,175,5,175,4,174,1,175,3,175,3,175,3,175,3,175,3,175,3,175,3,175,3,224,1,224,2,175,3,175,5,175,2,175,3,175,3,175,4,175,2,175,2,175,2,175,2,225,1,225,2,175,5,226,1,226,2,175,5,175,3,175,5,175,4,175,4,175,5,228,5,228,4,229,2,229,0,227,1,227,0,209,1,209,0,208,3,208,1,149,12,230,1,230,0,179,0,179,3,188,5,188,3,231,0,231,2,149,4,149,1,149,2,149,3,149,5,149,6,149,5,149,6,232,1,232,1,232,1,232,1,232,1,171,2,171,1,172,2,149,5,233,11,235,1,235,1,235,2,235,0,236,1,236,1,236,3,237,0,237,3,238,0,238,2,234,3,234,2,240,1,240,3,241,0,241,3,241,2,239,7,239,5,239,5,239,1,175,4,175,6,192,1,192,1,192,1,149,4,149,6,149,3,243,0,243,2,242,1,242,0,149,1,149,3,149,1,149,3,149,6,149,6,244,1,245,0,245,1,149,1,149,4,246,8,247,1,247,3,248,0,248,2,249,1,249,3,250,1,251,0,251,4,251,2,197,0,197,2,197,3,252,6,252,8,0,0,238,0,186,3,213,0,33,1,54,1,234,0,144,0,61,1,147,255,126,1,121,1,47,1,205,1,133,1,122,1,112,1,46,1,38,1,253,0,139,1,37,1,68,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,254,3,244,3,237,3,230,3,195,3,193,3,191,3,189,3,182,3,179,3,162,3,144,3,105,3,93,3,55,3,42,3,3,3,247,2,208,2,196,2,158,2,145,2,107,2,102,2,100,2,98,2,96,2,94,2,92,2,86,2,83,2,81,2,68,2,30,2,28,2,25,2,23,2,21,2,19,2,17,2,15,2,247,1,130,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,95,0,191,1,82,0,78,1,248,1,211,1,147,1,221,1,208,1,147,1,147,1,147,1,147,1,92,3,235,2,232,2,17,3,126,2,126,2,158,3,123,3,132,3,131,3,119,3,76,3,72,3,67,3,80,3,62,3,75,3,61,3,24,3,71,3,58,3,225,2,70,3,27,3,21,3,47,0,222,2,18,2,184,2,9,3,199,2,165,2,221,2,218,2,217,2,216,2,215,2,115,2,192,1,64,0,187,0,25,5,22,5,228,4,10,5,249,4,43,5,42,5,41,5,39,5,38,5,36,5,35,5,34,5,33,5,32,5,31,5,30,5,28,5,27,5,24,5,23,5,21,5,18,5,14,5,12,5,9,5,242,4,240,4,235,4,8,5,7,5,214,4,5,5,1,5,0,5,255,4,254,4,227,4,253,4,252,4,251,4,249,4,244,4,243,4,241,4,239,4,237,4,233,4,224,4,213,4,223,4,222,4,219,4,214,4,216,4,211,4,225,4,210,4,209,4,206,4,196,4,190,4,186,4,201,4,195,4,208,4,207,4,173,4,171,4,203,4,200,4,177,4,184,4,218,4,113,4,212,4,205,4,169,4,157,4,197,4,153,4,172,4,155,4,167,4,166,4,162,4,158,4,194,4,192,4,152,4,138,4,159,4,156,4,136,4,175,4,179,4,109,4,71,4,174,4,170,4,164,4,168,4,147,4,145,4,144,4,149,4,150,4,142,4,135,4,117,4,146,4,134,4,143,4,133,4,108,4,121,4,119,4,100,4,104,4,79,4,78,4,76,4,72,4,126,4,125,4,61,4,101,4,56,4,40,4,96,4,73,4,58,4,54,4,49,4,43,4,85,4,83,4,95,4,93,4,92,4,89,4,87,4,84,4,239,3,232,3,234,3,52,4,51,4,57,4,0,0,0,0,50,1,212,0,176,1,187,3,127,2,191,0,187,3,39,1,47,2,88,0,88,0,88,0,88,0,81,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,185,0,184,0,183,0,123,2,123,2,36,1,94,2,94,2,88,0,88,0,88,0,88,0,171,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,16,0,180,1,85,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,172,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,47,2,84,0,84,0,84,0,83,0,74,1,65,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,123,2,123,2,122,2,121,2,182,0,170,2,38,2,123,1,120,1,119,1,17,0,66,1,94,2,94,2,115,1,198,0,223,1,91,0,118,1,82,0,79,0,165,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,86,2,123,2,123,2,107,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,186,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,82,2,82,2,142,0,72,1,71,1,228,1,249,0,88,1,238,0,123,2,123,2,122,2,121,2,73,2,192,1,14,2,13,2,229,0,132,1,1,0,138,1,194,1,72,2,193,1,123,2,123,2,123,2,123,2,63,1,139,1,94,2,94,2,199,0,157,0,17,1,126,1,12,1,125,1,187,0,123,2,123,2,122,2,121,2,55,1,43,2,10,1,81,2,81,2,10,1,91,1,76,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,222,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,16,1,24,2,122,2,121,2,146,0,98,2,197,0,54,1,63,2,182,0,226,1,15,1,123,1,120,1,119,1,250,1,21,0,122,2,121,2,122,2,121,2,123,2,123,2,118,1,99,2,62,2,36,2,184,1,111,0,51,2,94,2,94,2,122,2,121,2,68,1,223,1,96,2,96,2,96,2,44,1,179,1,61,2,119,0,151,1,210,0,162,0,50,2,115,3,80,2,80,2,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,250,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,108,2,111,0,123,2,123,2,105,1,94,2,94,2,102,1,249,0,93,1,248,0,177,1,243,0,223,1,74,2,122,2,121,2,195,0,99,2,93,0,119,0,221,0,63,2,241,1,22,2,22,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,62,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,77,0,173,1,126,2,61,2,77,2,18,2,240,0,230,0,242,0,105,0,249,0,93,1,248,0,3,2,76,2,208,0,204,1,17,2,52,2,173,0,122,2,121,2,202,3,144,0,174,1,2,0,168,1,228,0,124,1,45,2,94,2,94,2,190,0,153,0,159,0,158,0,2,2,51,0,120,2,119,2,118,2,71,0,24,2,176,1,186,3,196,0,98,2,186,3,102,2,45,0,18,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,5,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,96,2,96,2,96,2,30,2,168,1,146,1,129,1,241,0,250,1,195,1,64,1,211,0,31,2,164,0,180,1,130,1,37,1,195,1,75,2,108,0,240,1,111,0,78,1,135,1,79,2,168,1,102,2,27,0,196,1,197,1,94,2,94,2,72,0,1,1,70,0,3,1,196,1,83,1,86,1,52,2,70,2,68,0,159,1,213,1,72,1,71,1,62,0,102,2,45,0,110,0,137,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,152,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,110,0,243,1,8,2,26,2,146,1,133,1,168,1,110,0,54,2,244,1,81,2,81,2,198,1,82,0,79,0,165,0,168,1,79,2,128,1,52,2,84,1,103,2,188,0,162,0,168,1,94,1,104,2,168,1,102,2,44,0,94,2,94,2,189,1,70,2,44,1,178,1,151,0,19,0,102,2,9,0,56,2,68,2,92,1,103,2,213,1,55,2,102,2,26,0,104,2,102,2,45,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,155,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,67,2,110,0,66,2,9,2,26,1,177,1,142,1,144,1,255,0,230,1,82,0,79,0,165,0,231,1,164,0,82,0,79,0,165,0,232,1,232,1,108,1,131,1,168,1,32,2,32,2,253,1,94,1,106,1,155,0,191,0,94,2,94,2,47,2,130,2,128,2,77,1,82,0,79,0,165,0,49,1,52,2,251,1,56,1,101,1,102,2,45,0,73,1,84,2,83,2,194,0,81,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,20,0,67,1,150,0,7,1,211,0,31,2,165,1,84,2,83,2,102,2,22,0,168,1,193,0,168,1,28,1,168,1,135,1,168,1,253,1,168,1,65,2,168,1,186,0,79,1,168,1,47,2,168,1,57,1,120,0,34,2,94,2,94,2,67,0,102,2,47,0,102,2,50,0,102,2,48,0,102,2,100,0,102,2,99,0,102,2,101,0,64,2,102,2,102,0,102,2,109,0,70,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,168,1,55,1,168,1,73,2,54,0,168,1,4,2,5,2,78,2,102,2,112,0,168,1,72,2,168,1,60,2,168,1,195,0,168,1,59,2,168,1,67,0,168,1,102,2,94,0,102,2,98,0,168,1,102,2,97,0,8,1,94,2,94,2,195,0,102,2,46,0,102,2,96,0,102,2,30,0,102,2,49,0,102,2,115,0,102,2,114,0,162,1,229,0,132,1,102,2,113,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,119,0,168,1,78,2,110,0,116,1,94,2,94,2,195,0,53,0,250,0,102,2,29,0,195,0,216,1,182,1,217,2,190,0,46,1,242,1,14,0,11,2,129,2,2,0,102,2,43,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,101,2,196,3,196,3,98,1,94,2,94,2,164,1,56,1,64,0,102,2,42,0,135,1,99,1,27,1,181,1,45,1,255,0,158,1,154,1,239,1,236,1,102,2,28,0,215,1,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,110,0,110,0,110,0,110,0,94,2,94,2,110,0,254,0,13,0,102,2,41,0,20,2,19,2,27,1,225,1,19,2,201,1,28,1,119,0,49,2,100,1,102,2,40,0,28,1,50,1,89,0,78,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,110,0,168,1,85,1,220,0,43,2,94,2,94,2,95,1,43,2,62,1,102,2,95,0,157,1,255,0,83,0,74,1,28,1,28,1,255,0,128,2,77,1,100,1,255,0,102,2,39,0,50,1,100,1,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,61,1,60,1,141,0,209,1,94,2,94,2,219,0,107,2,207,1,102,2,10,0,161,1,206,1,255,0,189,0,254,1,41,2,95,1,207,0,107,1,161,0,102,2,38,0,59,1,218,0,255,0,255,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,76,0,163,1,255,0,3,0,110,3,205,1,168,1,247,0,75,1,75,1,102,2,37,0,217,0,76,0,163,1,134,1,3,0,216,0,215,0,166,1,4,0,75,1,75,1,168,1,35,2,12,0,168,1,33,2,102,2,36,0,168,1,29,2,166,1,168,1,28,2,168,1,214,0,168,1,152,1,168,1,27,2,147,1,93,2,93,2,237,0,102,2,25,0,119,0,102,2,24,0,76,2,152,1,102,2,45,0,118,0,102,2,35,0,102,2,34,0,102,2,33,0,102,2,23,0,76,2,60,0,223,0,91,2,90,2,1,2,122,1,73,0,74,0,140,0,139,0,168,1,110,0,9,1,75,0,170,1,169,1,59,0,168,1,98,2,73,0,74,0,37,2,146,1,148,1,168,1,117,1,75,0,170,1,169,1,92,2,138,0,98,2,102,2,11,0,136,1,76,0,163,1,181,0,3,0,102,2,32,0,15,1,113,1,75,1,75,1,237,1,102,2,31,0,149,0,96,2,96,2,96,2,95,2,15,0,166,1,109,1,102,2,8,0,137,0,233,1,136,0,190,0,96,2,96,2,96,2,95,2,15,0,229,1,176,0,135,0,7,0,252,0,221,1,152,1,174,0,133,0,175,0,218,1,57,0,56,0,132,0,130,0,119,0,76,0,163,1,76,2,3,0,212,1,245,0,208,1,171,0,75,1,75,1,125,0,123,0,200,1,191,1,122,0,190,1,104,0,80,1,231,0,166,1,166,0,154,0,73,0,74,0,76,1,116,0,175,1,121,0,53,1,75,0,170,1,169,1,222,0,106,0,98,2,52,1,125,2,204,0,152,1,117,2,115,2,116,2,6,0,200,0,172,1,171,1,34,1,203,0,110,2,201,0,76,2,62,0,63,0,33,1,66,0,163,1,143,1,3,0,145,1,32,1,92,0,143,0,75,1,75,1,31,1,96,2,96,2,96,2,95,2,15,0,73,0,74,0,227,0,166,1,69,1,69,0,160,1,75,0,170,1,169,1,100,2,156,1,98,2,192,0,61,0,57,2,209,0,140,1,226,0,22,1,225,0,127,1,152,1,15,2,46,2,20,1,21,2,40,2,16,2,65,1,11,2,114,1,252,1,180,0,76,2,238,1,179,0,110,1,117,0,253,0,13,1,10,2,247,1,96,2,96,2,96,2,95,2,15,0,39,2,246,1,58,0,18,1,12,2,178,0,73,0,74,0,48,1,245,1,112,1,47,1,206,0,75,0,170,1,169,1,235,1,104,1,98,2,213,0,177,0,227,1,131,0,89,1,42,1,41,1,40,1,202,0,38,1,224,1,234,1,210,1,134,0,172,0,129,0,188,1,90,1,214,1,128,0,58,1,203,1,103,0,127,0,126,0,148,0,124,0,167,0,187,1,235,0,96,2,96,2,96,2,95,2,15,0,186,1,183,1,111,2,234,0,43,1,145,0,71,2,35,1,121,1,69,2,160,0,119,0,156,0,14,1,124,2,203,3,169,0,23,1,114,2,8,2,113,2,217,1,112,2,170,0,109,2,106,2,119,0,168,0,55,0,153,1,167,1,25,2,97,2,30,1,29,1,149,1,58,2,48,2,44,2,5,0,52,0,202,1,42,2,147,0,11,1,7,2,248,1,6,2,150,1,6,1,239,0,4,1,0,2,87,1,255,1,2,1,97,1,53,2,0,1,224,0,251,0,103,1,21,1,19,1,220,1,219,1,246,0,96,1,244,0,211,1,199,1,236,0,233,0,232,0,51,1,185,1,25,1,205,0,163,0,141,1,24,1,23,2,249,1,74,1,105,2,203,3,203,3,203,3,203,3,111,1,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,82,1,0,0,0,0,0,0,100,117,112,108,105,99,97,116,101,32,87,73,84,72,32,116,97,98,108,101,32,110,97,109,101,58,32,37,115,0,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,0,0,97,117,116,104,111,114,105,122,101,114,32,109,97,108,102,117,110,99,116,105,111,110,0,0,67,82,69,65,84,69,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,37,84,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,116,97,98,108,101,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,48,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,116,97,98,108,101,39,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,116,111,32,97,32,118,105,101,119,0,0,0,115,113,108,105,116,101,95,97,108,116,101,114,116,97,98,95,37,115,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,97,32,116,101,109,112,111,114,97,114,121,32,100,97,116,97,98,97,115,101,32,102,105,108,101,32,102,111,114,32,115,116,111,114,105,110,103,32,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,115,0,0,0,115,113,108,105,116,101,95,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,108,117,109,110,0,67,97,110,110,111,116,32,97,100,100,32,97,32,85,78,73,81,85,69,32,99,111,108,117,109,110,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,82,69,70,69,82,69,78,67,69,83,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,78,85,76,76,32,100,101,102,97,117,108,116,32,118,97,108,117,101,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,78,79,84,32,78,85,76,76,32,99,111,108,117,109,110,32,119,105,116,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,32,78,85,76,76,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,99,111,110,115,116,97,110,116,32,100,101,102,97,117,108,116,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,117,98,115,116,114,40,115,113,108,44,49,44,37,100,41,32,124,124,32,39,44,32,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,37,100,41,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,32,61,32,37,81,0,0,0,0,116,98,108,95,110,97,109,101,61,37,81,0,0,0,0,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,40,37,115,41,0,110,97,109,101,61,37,81,0,37,115,32,79,82,32,110,97,109,101,61,37,81,0,0,0,45,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,111,116,104,101,114,32,116,97,98,108,101,32,111,114,32,105,110,100,101,120,32,119,105,116,104,32,116,104,105,115,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,118,105,101,119,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,40,115,113,108,44,32,37,81,44,32,37,81,41,32,87,72,69,82,69,32,37,115,59,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,115,113,108,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,32,61,32,39,116,114,105,103,103,101,114,39,32,84,72,69,78,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,69,76,83,69,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,40,115,113,108,44,32,37,81,41,32,69,78,68,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,44,32,110,97,109,101,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,61,39,116,97,98,108,101,39,32,84,72,69,78,32,37,81,32,87,72,69,78,32,110,97,109,101,32,76,73,75,69,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,37,37,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,32,84,72,69,78,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,110,97,109,101,44,37,100,43,49,56,41,32,69,76,83,69,32,110,97,109,101,32,69,78,68,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,67,79,76,76,65,84,69,32,110,111,99,97,115,101,32,65,78,68,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,79,82,32,116,121,112,101,61,39,105,110,100,101,120,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,41,59,0,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,0,85,80,68,65,84,69,32,34,37,119,34,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,115,101,116,32,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,110,97,109,101,32,61,32,37,81,0,0,0,0,0,0,0,85,80,68,65,84,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,37,115,59,0,0,0,0,0,118,105,101,119,32,37,115,32,105,115,32,99,105,114,99,117,108,97,114,108,121,32,100,101,102,105,110,101,100,0,0,0,110,111,32,115,117,99,104,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,58,32,37,115,0,0,3,2,1,0,0,0,0,0,37,115,58,37,100,0,0,0,97,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,72,65,86,73,78,71,0,0,0,0,0,79,82,68,69,82,0,0,0,71,82,79,85,80,0,0,0,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,116,104,101,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,0,37,114,32,79,82,68,69,82,32,66,89,32,116,101,114,109,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,97,110,121,32,99,111,108,117,109,110,32,105,110,32,116,104,101,32,114,101,115,117,108,116,32,115,101,116,0,0,0,0,37,114,32,37,115,32,66,89,32,116,101,114,109,32,111,117,116,32,111,102,32,114,97,110,103,101,32,45,32,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,49,32,97,110,100,32,37,100,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,37,115,32,66,89,32,99,108,97,117,115,101,0,0,69,120,112,114,101,115,115,105,111,110,32,116,114,101,101,32,105,115,32,116,111,111,32,108,97,114,103,101,32,40,109,97,120,105,109,117,109,32,100,101,112,116,104,32,37,100,41,0,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,32,116,111,32,108,105,107,101,108,105,104,111,111,100,40,41,32,109,117,115,116,32,98,101,32,97,32,99,111,110,115,116,97,110,116,32,98,101,116,119,101,101,110,32,48,46,48,32,97,110,100,32,49,46,48,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,58,32,37,115,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,0,110,111,32,115,117,99,104,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,115,117,98,113,117,101,114,105,101,115,0,0,0,0,0,0,112,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,67,72,69,67,75,32,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,112,97,114,116,105,97,108,32,105,110,100,101,120,32,87,72,69,82,69,32,99,108,97,117,115,101,115,0,0,0,0,110,101,119,0,0,0,0,0,111,108,100,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,108,105,97,115,101,100,32,97,103,103,114,101,103,97,116,101,32,37,115,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,0,0,97,109,98,105,103,117,111,117,115,32,99,111,108,117,109,110,32,110,97,109,101,0,0,0,37,115,58,32,37,115,46,37,115,46,37,115,0,0,0,0,37,115,58,32,37,115,46,37,115,0,0,0,0,0,0,0,37,115,58,32,37,115,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,0,0,0,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,115,113,108,105,116,101,95,115,113,95,37,112,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,34,37,115,34,58,32,109,97,120,32,54,53,53,51,53,0,0,42,0,0,0,0,0,0,0,37,115,46,37,115,0,0,0,37,115,46,37,115,46,37,115,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,0,110,111,32,116,97,98,108,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,114,101,115,117,108,116,32,115,101,116,0,0,97,32,78,65,84,85,82,65,76,32,106,111,105,110,32,109,97,121,32,110,111,116,32,104,97,118,101,32,97,110,32,79,78,32,111,114,32,85,83,73,78,71,32,99,108,97,117,115,101,0,0,0,0,0,0,0,99,97,110,110,111,116,32,104,97,118,101,32,98,111,116,104,32,79,78,32,97,110,100,32,85,83,73,78,71,32,99,108,97,117,115,101,115,32,105,110,32,116,104,101,32,115,97,109,101,32,106,111,105,110,0,0,99,97,110,110,111,116,32,106,111,105,110,32,117,115,105,110,103,32,99,111,108,117,109,110,32,37,115,32,45,32,99,111,108,117,109,110,32,110,111,116,32,112,114,101,115,101,110,116,32,105,110,32,98,111,116,104,32,116,97,98,108,101,115,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,115,0,0,0,0,0,0,0,109,117,108,116,105,112,108,101,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,114,101,99,117,114,115,105,118,101,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,99,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110,99,101,58,32,37,115,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,109,117,108,116,105,112,108,101,32,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,115,58,32,37,115,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,32,105,110,32,97,32,115,117,98,113,117,101,114,121,58,32,37,115,0,0,0,110,111,32,115,117,99,104,32,109,111,100,117,108,101,58,32,37,115,0,0,0,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,102,97,105,108,101,100,58,32,37,115,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,100,105,100,32,110,111,116,32,100,101,99,108,97,114,101,32,115,99,104,101,109,97,58,32,37,115,0,0,0,104,105,100,100,101,110,0,0,32,104,105,100,100,101,110,0,111,98,106,101,99,116,32,110,97,109,101,32,114,101,115,101,114,118,101,100,32,102,111,114,32,105,110,116,101,114,110,97,108,32,117,115,101,58,32,37,115,0,0,0,0,0,0,0,99,111,114,114,117,112,116,32,100,97,116,97,98,97,115,101,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,84,0,0,0,0,0,105,100,120,0,0,0,0,0,116,98,108,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,56,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,40,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,66,66,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,0,0,0,0,8,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,116,97,116,95,103,101,116,0,0,0,0,0,0,0,0,37,108,108,117,0,0,0,0,32,37,108,108,117,0,0,0,115,116,97,116,95,112,117,115,104,0,0,0,0,0,0,0,115,116,97,116,95,105,110,105,116,0,0,0,0,0,0,0,72,52,0,0,96,112,0,0,112,112,0,0,0,0,0,0,128,112,0,0,0,0,0,0,116,98,108,44,105,100,120,44,115,116,97,116,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,51,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,52,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,37,115,40,37,115,41,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,37,115,61,37,81,0,0,0,117,110,97,98,108,101,32,116,111,32,105,100,101,110,116,105,102,121,32,116,104,101,32,111,98,106,101,99,116,32,116,111,32,98,101,32,114,101,105,110,100,101,120,101,100,0,0,0,44,32,0,0,0,0,0,0,46,0,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,58,32,37,115,40],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+18712);allocate([41,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,40,41,0,0,0,0,0,0,0,0,82,65,73,83,69,40,41,32,109,97,121,32,111,110,108,121,32,98,101,32,117,115,101,100,32,119,105,116,104,105,110,32,97,32,116,114,105,103,103,101,114,45,112,114,111,103,114,97,109,0,0,0,0,0,0,0,69,88,69,67,85,84,69,32,37,115,37,115,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,0,0,0,0,67,79,82,82,69,76,65,84,69,68,32,0,0,0,0,0,76,73,83,84,0,0,0,0,83,67,65,76,65,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,120,0,0,0,0,0,0,104,101,120,32,108,105,116,101,114,97,108,32,116,111,111,32,98,105,103,58,32,37,115,0,1,0,1,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,32,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,100,101,116,97,99,104,0,0,0,110,111,32,115,117,99,104,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,99,97,110,110,111,116,32,100,101,116,97,99,104,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,68,69,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,108,111,99,107,101,100,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,216,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,97,116,116,97,99,104,0,0,0,116,111,111,32,109,97,110,121,32,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,45,32,109,97,120,32,37,100,0,0,0,0,99,97,110,110,111,116,32,65,84,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,97,108,114,101,97,100,121,32,105,110,32,117,115,101,0,0,0,100,97,116,97,98,97,115,101,32,105,115,32,97,108,114,101,97,100,121,32,97,116,116,97,99,104,101,100,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,0,110,111,32,115,117,99,104,32,116,114,105,103,103,101,114,58,32,37,83,0,0,0,0,0,108,0,246,0,97,0,1,0,47,0,1,2,78,2,247,1,97,0,1,0,47,0,0,2,78,2,247,1,95,0,0,0,9,0,254,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,116,114,105,103,103,101,114,32,109,97,121,32,110,111,116,32,104,97,118,101,32,113,117,97,108,105,102,105,101,100,32,110,97,109,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,115,32,111,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,115,0,0,0,0,0,0,0,0,116,114,105,103,103,101,114,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,32,111,110,32,115,121,115,116,101,109,32,116,97,98,108,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,37,115,32,116,114,105,103,103,101,114,32,111,110,32,118,105,101,119,58,32,37,83,0,0,0,0,66,69,70,79,82,69,0,0,65,70,84,69,82,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,73,78,83,84,69,65,68,32,79,70,32,116,114,105,103,103,101,114,32,111,110,32,116,97,98,108,101,58,32,37,83,0,0,0,37,115,32,37,84,32,99,97,110,110,111,116,32,114,101,102,101,114,101,110,99,101,32,111,98,106,101,99,116,115,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,37,115,32,99,97,110,110,111,116,32,117,115,101,32,118,97,114,105,97,98,108,101,115,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,116,114,105,103,103,101,114,39,44,37,81,44,37,81,44,48,44,39,67,82,69,65,84,69,32,84,82,73,71,71,69,82,32,37,113,39,41,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,110,97,109,101,61,39,37,113,39,0,0,0,0,45,37,84,0,0,0,0,0,114,101,115,117,108,116,0,0,16,126,0,0,0,0,0,0,8,0,0,0,0,121,0,0,1,1,0,0,0,0,0,0,32,126,0,0,2,0,0,0,0,0,16,0,48,126,0,0,3,0,0,0,0,0,0,0,128,120,0,0,4,1,0,0,0,0,0,0,64,126,0,0,2,0,0,0,16,0,0,0,80,126,0,0,5,0,0,0,0,0,0,0,104,126,0,0,2,0,0,0,8,0,0,0,128,126,0,0,6,0,0,0,0,0,0,0,144,126,0,0,7,0,0,0,0,0,0,0,160,126,0,0,2,0,0,0,128,0,0,0,176,126,0,0,0,2,0,0,15,0,0,0,192,126,0,0,9,1,0,0,0,0,0,0,208,126,0,0,10,1,0,0,0,0,0,0,232,126,0,0,2,0,0,0,0,0,0,1,0,127,0,0,2,0,0,0,0,1,0,0,40,124,0,0,11,0,0,0,0,0,0,0,24,127,0,0,12,1,0,0,0,0,0,0,48,127,0,0,13,1,0,0,0,0,0,0,72,127,0,0,2,0,0,0,0,0,8,0,88,127,0,0,0,2,0,0,0,0,0,0,104,127,0,0,2,0,0,0,32,0,0,0,128,127,0,0,2,0,0,0,4,0,0,0,144,127,0,0,2,0,0,0,0,32,0,0,176,127,0,0,14,1,0,0,0,0,0,0,200,127,0,0,15,1,0,0,0,0,0,0,216,127,0,0,16,1,0,0,0,0,0,0,232,127,0,0,15,1,0,0,1,0,0,0,232,122,0,0,17,1,0,0,0,0,0,0,216,120,0,0,18,1,0,0,0,0,0,0,232,120,0,0,19,0,0,0,0,0,0,0,248,127,0,0,2,0,0,0,0,128,0,0,200,120,0,0,21,0,0,0,0,0,0,0,16,128,0,0,22,1,0,0,0,0,0,0,40,121,0,0,23,0,0,0,0,0,0,0,32,128,0,0,22,1,0,0,0,0,0,0,144,120,0,0,24,0,0,0,0,0,0,0,48,128,0,0,2,0,0,0,0,0,0,2,64,128,0,0,17,1,0,0,0,0,0,0,80,128,0,0,2,0,0,0,0,64,0,0,104,128,0,0,2,0,0,0,0,0,4,0,128,128,0,0,2,0,0,0,0,0,2,0,160,128,0,0,0,0,0,0,1,0,0,0,160,120,0,0,25,0,0,0,0,0,0,0,176,128,0,0,2,0,0,0,64,0,0,0,200,128,0,0,26,0,0,0,0,0,0,0,232,124,0,0,27,0,0,0,0,0,0,0,216,128,0,0,28,1,0,0,0,0,0,0,128,121,0,0,29,1,0,0,0,0,0,0,224,128,0,0,30,1,0,0,0,0,0,0,56,121,0,0,31,0,0,0,0,0,0,0,72,121,0,0,32,0,0,0,0,0,0,0,248,124,0,0,33,0,0,0,0,0,0,0,240,128,0,0,0,0,0,0,6,0,0,0,200,124,0,0,34,0,0,0,0,0,0,0,0,129,0,0,35,1,0,0,0,0,0,0,16,129,0,0,2,0,0,0,0,8,1,0,0,0,0,0,4,0,0,0,51,0,1,3,137,1,8,0,25,0,2,0,90,1,2,1,137,1,8,0,25,0,1,0,156,0,0,0,35,1,1,0,0,0,0,0,99,97,99,104,101,95,115,105,122,101,0,0,0,0,0,0,112,97,103,101,95,115,105,122,101,0,0,0,0,0,0,0,115,101,99,117,114,101,95,100,101,108,101,116,101,0,0,0,110,111,114,109,97,108,0,0,101,120,99,108,117,115,105,118,101,0,0,0,0,0,0,0,108,111,99,107,105,110,103,95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108,95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108,95,115,105,122,101,95,108,105,109,105,116,0,0,0,0,0,0,97,117,116,111,95,118,97,99,117,117,109,0,0,0,0,0,4,0,1,0,51,0,1,4,45,1,0,0,24,0,2,0,25,0,1,0,52,0,7,1,109,109,97,112,95,115,105,122,101,0,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,95,100,105,114,101,99,116,111,114,121,0,0,0,0,110,111,116,32,97,32,119,114,105,116,97,98,108,101,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,0,0,0,115,121,110,99,104,114,111,110,111,117,115,0,0,0,0,0,83,97,102,101,116,121,32,108,101,118,101,108,32,109,97,121,32,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,105,110,115,105,100,101,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,99,105,100,0,0,0,0,0,110,97,109,101,0,0,0,0,116,121,112,101,0,0,0,0,110,111,116,110,117,108,108,0,100,102,108,116,95,118,97,108,117,101,0,0,0,0,0,0,112,107,0,0,0,0,0,0,116,97,98,108,101,0,0,0,119,105,100,116,104,0,0,0,104,101,105,103,104,116,0,0,115,101,113,110,111,0,0,0,100,101,115,99,0,0,0,0,99,111,108,108,0,0,0,0,107,101,121,0,0,0,0,0,115,101,113,0,0,0,0,0,117,110,105,113,117,101,0,0,111,114,105,103,105,110,0,0,112,97,114,116,105,97,108,0,99,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,88,122,0,0,96,122,0,0,248,121,0,0,0,0,0,0,102,105,108,101,0,0,0,0,105,100,0,0,0,0,0,0,102,114,111,109,0,0,0,0,116,111,0,0,0,0,0,0,111,110,95,117,112,100,97,116,101,0,0,0,0,0,0,0,111,110,95,100,101,108,101,116,101,0,0,0,0,0,0,0,109,97,116,99,104,0,0,0,78,79,78,69,0,0,0,0,112,97,114,101,110,116,0,0,102,107,105,100,0,0,0,0,138,1,0,0,97,0,3,0,35,3,1,0,0,0,0,0,105,110,116,101,103,114,105,116,121,95,99,104,101,99,107,0,42,42,42,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,32,42,42,42,10,0,78,85,76,76,32,118,97,108,117,101,32,105,110,32,37,115,46,37,115,0,0,0,0,0,114,111,119,32,0,0,0,0,32,109,105,115,115,105,110,103,32,102,114,111,109,32,105,110,100,101,120,32,0,0,0,0,110,111,110,45,117,110,105,113,117,101,32,101,110,116,114,121,32,105,110,32,105,110,100,101,120,32,0,0,0,0,0,0,119,114,111,110,103,32,35,32,111,102,32,101,110,116,114,105,101,115,32,105,110,32,105,110,100,101,120,32,0,0,0,0,111,107,0,0,0,0,0,0,216,123,0,0,1,0,0,0,224,123,0,0,1,0,0,0,232,123,0,0,2,0,0,0,248,123,0,0,3,0,0,0,8,124,0,0,2,0,0,0,16,124,0,0,3,0,0,0,24,124,0,0,0,0,0,0,32,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,84,70,56,0,0,0,0,85,84,70,45,56,0,0,0,85,84,70,45,49,54,108,101,0,0,0,0,0,0,0,0,85,84,70,45,49,54,98,101,0,0,0,0,0,0,0,0,85,84,70,49,54,108,101,0,85,84,70,49,54,98,101,0,85,84,70,45,49,54,0,0,85,84,70,49,54,0,0,0,101,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,101,110,99,111,100,105,110,103,58,32,37,115,0,0,0,0,0,0,0,0,4,0,1,0,25,0,1,0,52,0,0,1,0,0,0,0,4,0,0,0,51,0,1,0,35,1,1,0,0,0,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,0,0,102,117,108,108,0,0,0,0,114,101,115,116,97,114,116,0,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,0,98,117,115,121,0,0,0,0,108,111,103,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,101,100,0,0,0,0,119,97,108,95,97,117,116,111,99,104,101,99,107,112,111,105,110,116,0,0,0,0,0,0,116,105,109,101,111,117,116,0,115,111,102,116,95,104,101,97,112,95,108,105,109,105,116,0,116,104,114,101,97,100,115,0,37,95,0,0,0,0,0,0,102,111,114,101,105,103,110,32,107,101,121,32,109,105,115,109,97,116,99,104,32,45,32,34,37,119,34,32,114,101,102,101,114,101,110,99,105,110,103,32,34,37,119,34,0,0,0,0,83,69,84,32,78,85,76,76,0,0,0,0,0,0,0,0,83,69,84,32,68,69,70,65,85,76,84,0,0,0,0,0,67,65,83,67,65,68,69,0,82,69,83,84,82,73,67,84,0,0,0,0,0,0,0,0,78,79,32,65,67,84,73,79,78,0,0,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,115,116,111,114,97,103,101,32,99,97,110,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,110,111,110,101,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,0,0,0,0,0,240,125,0,0,248,125,0,0,0,126,0,0,152,124,0,0,64,59,0,0,8,126,0,0,100,101,108,101,116,101,0,0,112,101,114,115,105,115,116,0,111,102,102,0,0,0,0,0,119,97,108,0,0,0,0,0,97,112,112,108,105,99,97,116,105,111,110,95,105,100,0,0,97,117,116,111,109,97,116,105,99,95,105,110,100,101,120,0,98,117,115,121,95,116,105,109,101,111,117,116,0,0,0,0,99,97,99,104,101,95,115,112,105,108,108,0,0,0,0,0,99,97,115,101,95,115,101,110,115,105,116,105,118,101,95,108,105,107,101,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,95,102,117,108,108,102,115,121,110,99,0,0,0,0,99,111,108,108,97,116,105,111,110,95,108,105,115,116,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,115,0,99,111,117,110,116,95,99,104,97,110,103,101,115,0,0,0,100,97,116,97,95,118,101,114,115,105,111,110,0,0,0,0,100,97,116,97,98,97,115,101,95,108,105,115,116,0,0,0,100,101,102,97,117,108,116,95,99,97,99,104,101,95,115,105,122,101,0,0,0,0,0,0,100,101,102,101,114,95,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,0,0,101,109,112,116,121,95,114,101,115,117,108,116,95,99,97,108,108,98,97,99,107,115,0,0,102,111,114,101,105,103,110,95,107,101,121,95,99,104,101,99,107,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,95,108,105,115,116,0,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,102,114,101,101,108,105,115,116,95,99,111,117,110,116,0,0,102,117,108,108,95,99,111,108,117,109,110,95,110,97,109,101,115,0,0,0,0,0,0,0,102,117,108,108,102,115,121,110,99,0,0,0,0,0,0,0,105,103,110,111,114,101,95,99,104,101,99,107,95,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,95,118,97,99,117,117,109,0,0,0,0,0,0,105,110,100,101,120,95,105,110,102,111,0,0,0,0,0,0,105,110,100,101,120,95,108,105,115,116,0,0,0,0,0,0,105,110,100,101,120,95,120,105,110,102,111,0,0,0,0,0,108,101,103,97,99,121,95,102,105,108,101,95,102,111,114,109,97,116,0,0,0,0,0,0,109,97,120,95,112,97,103,101,95,99,111,117,110,116,0,0,112,97,103,101,95,99,111,117,110,116,0,0,0,0,0,0,113,117,101,114,121,95,111,110,108,121,0,0,0,0,0,0,113,117,105,99,107,95,99,104,101,99,107,0,0,0,0,0,114,101,97,100,95,117,110,99,111,109,109,105,116,116,101,100,0,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,95,116,114,105,103,103,101,114,115,0,0,0,0,0,0,114,101,118,101,114,115,101,95,117,110,111,114,100,101,114,101,100,95,115,101,108,101,99,116,115,0,0,0,0,0,0,0,115,99,104,101,109,97,95,118,101,114,115,105,111,110,0,0,115,104,111,114,116,95,99,111,108,117,109,110,95,110,97,109,101,115,0,0,0,0,0,0,115,104,114,105,110,107,95,109,101,109,111,114,121,0,0,0,115,116,97,116,115,0,0,0,116,97,98,108,101,95,105,110,102,111,0,0,0,0,0,0,117,115,101,114,95,118,101,114,115,105,111,110,0,0,0,0,119,97,108,95,99,104,101,99,107,112,111,105,110,116,0,0,119,114,105,116,97,98,108,101,95,115,99,104,101,109,97,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,83,0,0,0,0,0,0,0,105,110,100,101,120,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32,85,78,73,81,85,69,32,111,114,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,99,97,110,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,110,97,109,101,61,37,81,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,114,111,111,116,112,97,103,101,61,37,100,32,87,72,69,82,69,32,35,37,100,32,65,78,68,32,114,111,111,116,112,97,103,101,61,35,37,100,0,115,113,108,105,116,101,95,115,116,97,116,37,100,0,0,0,48,0,0,0,0,0,0,0,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,109,117,115,116,32,98,101,32,98,101,116,119,101,101,110,32,63,49,32,97,110,100,32,63,37,100,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,83,81,76,32,118,97,114,105,97,98,108,101,115,0,0,116,97,98,108,101,32,37,83,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,116,97,98,108,101,32,37,83,32,104,97,115,32,37,100,32,99,111,108,117,109,110,115,32,98,117,116,32,37,100,32,118,97,108,117,101,115,32,119,101,114,101,32,115,117,112,112,108,105,101,100,0,0,0,0,0,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,0,114,111,119,115,32,105,110,115,101,114,116,101,100,0,0,0,97,116,32,109,111,115,116,32,37,100,32,116,97,98,108,101,115,32,105,110,32,97,32,106,111,105,110,0,0,0,0,0,65,63,62,64,0,0,0,0,0,0,108,105,65,62,64,63,116,114,113,115,0,0,0,0,9,8,0,0,0,0,0,0,108,105,0,0,0,0,0,0,83,69,65,82,67,72,0,0,83,67,65,78,0,0,0,0,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,32,84,65,66,76,69,32,37,115,0,0,0,0,0,0,0,32,65,83,32,37,115,0,0,80,82,73,77,65,82,89,32,75,69,89,0,0,0,0,0,65,85,84,79,77,65,84,73,67,32,80,65,82,84,73,65,76,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,0,0,0,0,0,0,0,65,85,84,79,77,65,84,73,67,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,0,0,0,0,0,0,0,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,0,32,85,83,73,78,71,32,0,40,114,111,119,105,100,61,63,41,0,0,0,0,0,0,0,40,114,111,119,105,100,62,63,32,65,78,68,32,114,111,119,105,100,60,63,41,0,0,0,40,114,111,119,105,100,62,63,41,0,0,0,0,0,0,0,40,114,111,119,105,100,60,63,41,0,0,0,0,0,0,0,32,85,83,73,78,71,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,32,0,0,0,0,0,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,73,78,68,69,88,32,37,100,58,37,115,0,0,0,0,0,0,32,40,0,0,0,0,0,0,61,0,0,0,0,0,0,0,32,65,78,68,32,0,0,0,65,78,89,40,37,115,41,0,62,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,97,117,116,111,109,97,116,105,99,32,105,110,100,101,120,32,111,110,32,37,115,40,37,115,41,0,0,0,0,0,0,0,97,117,116,111,45,105,110,100,101,120,0,0,0,0,0,0,110,111,32,113,117,101,114,121,32,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,10,10,9,9,8,8,7,7,7,6,6,6,5,5,5,4,4,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,37,115,46,120,66,101,115,116,73,110,100,101,120,40,41,32,109,97,108,102,117,110,99,116,105,111,110,0,0,0,0,0,116,97,98,108,101,32,37,115,58,32,120,66,101,115,116,73,110,100,101,120,32,114,101,116,117,114,110,101,100,32,97,110,32,105,110,118,97,108,105,100,32,112,108,97,110,0,0,0,83,81,0,0,0,0,0,0,45,45,32,84,82,73,71,71,69,82,32,37,115,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,2,0,1,0,1,1,4,36,1,4,5,16,0,2,2,2,2,0,2,2,0,0,32,0,0,4,5,4,4,0,0,1,1,5,5,0,0,0,2,2,16,0,0,0,0,0,0,0,0,0,17,17,17,17,8,17,17,17,17,76,76,2,2,0,5,5,21,21,21,21,21,21,0,76,76,76,76,76,76,76,76,76,76,0,36,2,0,0,0,0,0,2,0,1,1,1,1,8,8,0,2,1,1,1,1,2,0,0,2,2,0,0,0,0,0,0,12,69,21,1,2,2,0,1,8,5,5,5,5,5,0,1,0,0,0,0,0,0,0,1,0,2,2,1,0,0,0,0,16,16,2,16,0,0,0,0,0,1,2,3,4,6,8,8,0,0,0,0,0,0,0,0,176,107,0,0,3,0,0,0,168,107,0,0,3,0,0,0,111,105,100,0,0,0,0,0,70,79,82,69,73,71,78,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,37,115,46,114,111,119,105,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,109,111,100,105,102,105,101,100,0,0,0,0,99,97,110,110,111,116,32,109,111,100,105,102,121,32,37,115,32,98,101,99,97,117,115,101,32,105,116,32,105,115,32,97,32,118,105,101,119,0,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,37,115,0,0,0,0,0,0,114,111,119,115,32,117,112,100,97,116,101,100,0,0,0,0,95,114,111,119,105,100,95,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,37,115,0,0,114,111,119,115,32,100,101,108,101,116,101,100,0,0,0,0,110,97,116,117,114,97,108,101,102,116,111,117,116,101,114,105,103,104,116,102,117,108,108,105,110,110,101,114,99,114,111,115,115,0,0,0,0,0,0,0,0,7,4,6,4,40,10,5,32,14,5,48,19,4,56,23,5,1,28,5,3,0,0,0,117,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,106,111,105,110,32,116,121,112,101,58,32,37,84,32,37,84,37,115,37,84,0,0,0,0,0,82,73,71,72,84,32,97,110,100,32,70,85,76,76,32,79,85,84,69,82,32,74,79,73,78,115,32,97,114,101,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,0,0,97,32,74,79,73,78,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,37,115,0,0,0,0,0,79,78,0,0,0,0,0,0,85,83,73,78,71,0,0,0,68,73,83,84,73,78,67,84,0,0,0,0,0,0,0,0,71,82,79,85,80,32,66,89,0,0,0,0,0,0,0,0,82,73,71,72,84,32,80,65,82,84,32,79,70,32,79,82,68,69,82,32,66,89,0,0,79,82,68,69,82,32,66,89,0,0,0,0,0,0,0,0,99,111,108,117,109,110,37,100,0,0,0,0,0,0,0,0,83,67,65,78,32,84,65,66,76,69,32,37,115,37,115,37,115,0,0,0,0,0,0,0,32,85,83,73,78,71,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,0,0,68,73,83,84,73,78,67,84,32,97,103,103,114,101,103,97,116,101,115,32,109,117,115,116,32,104,97,118,101,32,101,120,97,99,116,108,121,32,111,110,101,32,97,114,103,117,109,101,110,116,0,0,0,0,0,0,85,83,69,32,84,69,77,80,32,66,45,84,82,69,69,32,70,79,82,32,37,115,0,0,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,76,73,77,73,84,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,0,0,0,67,79,77,80,79,85,78,68,32,83,85,66,81,85,69,82,73,69,83,32,37,100,32,65,78,68,32,37,100,32,37,115,40,37,115,41,0,0,0,0,85,83,73,78,71,32,84,69,77,80,32,66,45,84,82,69,69,32,0,0,0,0,0,0,97,108,108,32,86,65,76,85,69,83,32,109,117,115,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,116,101,114,109,115,0,0,0,83,69,76,69,67,84,115,32,116,111,32,116,104,101,32,108,101,102,116,32,97,110,100,32,114,105,103,104,116,32,111,102,32,37,115,32,100,111,32,110,111,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,117,108,116,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,85,78,73,79,78,32,65,76,76,0,0,0,0,0,0,0,73,78,84,69,82,83,69,67,84,0,0,0,0,0,0,0,69,88,67,69,80,84,0,0,85,78,73,79,78,0,0,0,111,110,108,121,32,97,32,115,105,110,103,108,101,32,114,101,115,117,108,116,32,97,108,108,111,119,101,100,32,102,111,114,32,97,32,83,69,76,69,67,84,32,116,104,97,116,32,105,115,32,112,97,114,116,32,111,102,32,97,110,32,101,120,112,114,101,115,115,105,111,110,0,112,97,114,97,109,101,116,101,114,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,118,105,101,119,115,0,0,0,0,0,118,105,101,119,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,117,115,101,32,68,82,79,80,32,84,65,66,76,69,32,116,111,32,100,101,108,101,116,101,32,116,97,98,108,101,32,37,115,0,0,0,0,0,0,0,117,115,101,32,68,82,79,80,32,86,73,69,87,32,116,111,32,100,101,108,101,116,101,32,118,105,101,119,32,37,115,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,87,72,69,82,69,32,110,97,109,101,61,37,81,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,97,110,100,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,102,111,114,101,105,103,110,32,107,101,121,32,111,110,32,37,115,32,115,104,111,117,108,100,32,114,101,102,101,114,101,110,99,101,32,111,110,108,121,32,111,110,101,32,99,111,108,117,109,110,32,111,102,32,116,97,98,108,101,32,37,84,0,0,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,116,104,101,32,114,101,102,101,114,101,110,99,101,100,32,116,97,98,108,101,0,0,0,117,110,107,110,111,119,110,32,99,111,108,117,109,110,32,34,37,115,34,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,101,102,105,110,105,116,105,111,110,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32,84,69,77,80,32,105,110,100,101,120,32,111,110,32,110,111,110,45,84,69,77,80,32,116,97,98,108,101,32,34,37,115,34,0,0,0,0,0,0,0,97,108,116,101,114,116,97,98,95,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,118,105,101,119,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,32,116,97,98,108,101,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,0,105,110,100,101,120,32,37,115,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,37,115,95,37,100,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,99,111,110,102,108,105,99,116,105,110,103,32,79,78,32,67,79,78,70,76,73,67,84,32,99,108,97,117,115,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,0,67,82,69,65,84,69,37,115,32,73,78,68,69,88,32,37,46,42,115,0,0,0,0,0,32,85,78,73,81,85,69,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,105,110,100,101,120,39,44,37,81,44,37,81,44,35,37,100,44,37,81,41,59,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,116,97,98,108,101,32,34,37,115,34,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,112,114,105,109,97,114,121,32,107,101,121,0,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,105,115,32,111,110,108,121,32,97,108,108,111,119,101,100,32,111,110,32,97,110,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,0,100,101,102,97,117,108,116,32,118,97,108,117,101,32,111,102,32,99,111,108,117,109,110,32,91,37,115,93,32,105,115,32,110,111,116,32,99,111,110,115,116,97,110,116,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,111,110,32,37,115,0,0,100,117,112,108,105,99,97,116,101,32,99,111,108,117,109,110,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,87,73,84,72,79,85,84,32,82,79,87,73,68,32,116,97,98,108,101,115,0,0,0,0,0,0,0,80,82,73,77,65,82,89,32,75,69,89,32,109,105,115,115,105,110,103,32,111,110,32,116,97,98,108,101,32,37,115,0,84,65,66,76,69,0,0,0,86,73,69,87,0,0,0,0,67,82,69,65,84,69,32,37,115,32,37,46,42,115,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,37,115,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,35,37,100,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,40,110,97,109,101,44,115,101,113,41,0,0,0,0,0,0,0,116,98,108,95,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,0,0,0,0,0,0,10,32,32,0,0,0,0,0,44,10,32,32,0,0,0,0,10,41,0,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,0,0,0,120,40,0,0,80,144,0,0,88,144,0,0,96,144,0,0,104,144,0,0,0,0,0,0,32,84,69,88,84,0,0,0,32,78,85,77,0,0,0,0,32,73,78,84,0,0,0,0,32,82,69,65,76,0,0,0,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,117,110,113,117,97,108,105,102,105,101,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,32,105,110,100,101,120,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,240,144,0,0,248,144,0,0,0,145,0,0,0,0,0,0,66,69,71,73,78,0,0,0,82,69,76,69,65,83,69,0,82,79,76,76,66,65,67,75,0,0,0,0,0,0,0,0,67,79,77,77,73,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,97,114,115,101,114,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,0,224,3,33,4,75,5,132,4,180,4,180,4,1,0,6,1,237,255,135,0,135,0,8,3,180,4,180,4,180,4,180,4,69,0,69,0,53,0,208,0,27,1,243,2,58,0,213,2,136,2,59,2,238,1,161,1,84,1,7,1,212,0,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,110,3,59,3,161,3,212,3,212,3,46,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,234,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,185,255,209,255,209,255,209,255,209,255,209,255,0,0,29,0,244,255,27,1,27,1,139,0,91,0,136,1,136,1,126,3,160,2,214,2,103,5,170,255,170,255,170,255,88,0,62,1,62,1,99,0,125,1,236,255,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,112,2,108,3,214,2,160,2,60,5,60,5,60,5,60,5,60,5,60,5,170,255,170,255,170,255,49,1,136,0,136,0,142,0,167,0,226,0,154,0,137,0,152,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,80,1,80,1,80,1,27,1,27,1,96,1,27,1,27,1,27,1,27,1,27,1,228,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,245,1,57,2,84,2,84,2,84,2,251,1,241,1,185,1,135,1,97,1,156,0,156,0,89,3,97,1,89,3,223,2,45,3,127,2,203,2,156,0,76,1,203,2,203,2,240,1,163,1,134,2,77,5,160,4,160,4,55,5,55,5,160,4,61,5,236,4,120,4,66,5,66,5,66,5,66,5,160,4,26,5,120,4,61,5,236,4,236,4,120,4,160,4,26,5,182,4,4,5,160,4,160,4,26,5,160,4,26,5,160,4,26,5,238,4,183,4,183,4,183,4,250,4,238,4,183,4,193,4,183,4,250,4,183,4,183,4,161,4,176,4,161,4,176,4,161,4,176,4,160,4,160,4,137,4,238,4,178,4,178,4,238,4,130,4,131,4,123,4,128,4,120,4,217,4,215,4,226,4,226,4,230,4,230,4,230,4,230,4,170,255,170,255,170,255,170,255,170,255,170,255,44,4,48,1,14,2,249,0,152,1,173,255,178,1,44,3,27,0,43,3,39,3,34,3,239,2,77,2,139,2,163,0,131,0,162,2,110,1,194,1,43,1,148,0,23,0,102,0,229,0,235,255,221,4,220,4,198,4,75,4,204,4,148,4,199,4,191,4,189,4,91,4,82,4,99,4,86,4,185,4,81,4,188,4,202,4,74,4,65,4,116,4,115,4,80,4,165,4,154,4,70,4,187,4,181,4,163,4,77,4,47,4,129,4,151,4,122,4,114,4,127,4,67,4,140,4,141,4,139,4,45,4,48,4,124,4,88,4,110,4,103,4,105,4,102,4,68,4,90,4,94,4,64,4,66,4,69,4,63,4,60,4,219,3,55,4,53,4,50,4,41,4,156,3,253,3,246,3,236,3,238,3,51,3,227,2,128,3,87,3,36,3,227,2,228,2,224,2,178,2,142,2,153,2,106,2,70,2,56,2,16,2,42,2,123,1,20,2,223,1,199,1,123,1,176,1,115,1,85,1,28,0,82,1,116,0,245,255,199,255,171,255,7,0,248,255,3,0,0,0,0,0,135,2,196,3,196,3,196,3,110,3,110,3,201,3,196,3,6,3,34,3,34,3,170,3,201,3,201,3,201,3,108,3,201,3,201,3,201,3,196,3,201,3,10,3,40,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,169,3,171,3,48,3,47,3,150,3,21,3,45,3,38,3,42,3,111,3,104,3,105,3,103,3,107,3,112,3,201,3,41,3,73,3,88,3,72,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,82,3,87,3,94,3,86,3,83,3,75,3,74,3,76,3,77,3,201,3,201,3,161,2,227,2,201,3,201,3,78,3,201,3,173,2,79,3,91,3,90,3,89,3,168,2,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,135,2,196,3,201,3,201,3,196,3,196,3,196,3,196,3,196,3,196,3,188,3,10,3,0,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,176,3,174,3,201,3,123,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,141,2,201,3,143,3,6,3,6,3,6,3,8,3,242,2,254,2,143,2,44,3,23,3,23,3,155,3,44,3,155,3,198,2,221,2,195,2,34,3,23,3,106,3,34,3,34,3,7,3,254,2,201,3,181,3,14,3,14,3,173,3,173,3,14,3,53,3,231,2,44,3,238,2,238,2,238,2,238,2,14,3,158,2,44,3,53,3,231,2,231,2,44,3,14,3,158,2,149,3,147,3,14,3,14,3,158,2,14,3,158,2,14,3,158,2,116,3,229,2,229,2,229,2,213,2,116,3,229,2,198,2,229,2,213,2,229,2,229,2,27,3,22,3,27,3,22,3,27,3,22,3,14,3,14,3,201,3,116,3,120,3,120,3,116,3,39,3,28,3,37,3,35,3,44,3,164,2,216,2,151,2,151,2,140,2,140,2,140,2,140,2,193,3,193,3,188,3,200,2,200,2,183,2,201,3,201,3,201,3,201,3,201,3,201,3,175,2,201,3,125,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,60,3,201,3,136,2,183,3,201,3,201,3,180,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,153,3,201,3,201,3,201,3,201,3,201,3,201,3,146,3,145,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,245,2,201,3,201,3,201,3,249,2,201,3,201,3,201,3,201,3,201,3,201,3,36,3,201,3,29,3,201,3,109,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,198,3,201,3,201,3,201,3,197,3,201,3,201,3,201,3,201,3,201,3,62,3,201,3,61,3,65,3,201,3,149,2,201,3,132,2,137,2,192,3,195,3,194,3,191,3,190,3,189,3,184,3,182,3,179,3,178,3,177,3,175,3,172,3,168,3,129,3,127,3,134,3,133,3,132,3,131,3,130,3,128,3,126,3,124,3,50,3,49,3,46,3,43,3,241,2,167,3,122,3,240,2,237,2,236,2,157,2,185,3,152,3,161,3,160,3,159,3,54,3,158,3,157,3,156,3,154,3,151,3,138,3,52,3,51,3,232,2,114,3,113,3,160,2,142,3,141,3,140,3,144,3,148,3,139,3,16,3,239,2,159,2,156,2,163,2,167,2,219,2,220,2,228,2,226,2,225,2,224,2,223,2,222,2,218,2,169,2,174,2,212,2,197,2,196,2,205,2,204,2,210,2,209,2,208,2,207,2,206,2,203,2,202,2,201,2,194,2,193,2,199,2,192,2,215,2,214,2,211,2,191,2,235,2,234,2,233,2,230,2,190,2,189,2,188,2,65,3,187,2,186,2,70,3,69,3,98,3,58,3,243,2,247,2,246,2,250,2,251,2,3,3,2,3,1,3,12,3,13,3,25,3,24,3,56,3,55,3,26,3,11,3,5,3,4,3,20,3,19,3,18,3,17,3,9,3,255,2,31,3,30,3,100,3,15,3,99,3,97,3,166,3,165,3,164,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+28952);allocate([163,3,162,3,102,3,199,3,200,3,119,3,121,3,118,3,33,3,32,3,117,3,101,3,71,3,68,3,178,2,179,2,137,3,136,3,135,3,181,2,180,2,177,2,176,2,95,3,92,3,84,3,96,3,93,3,85,3,81,3,80,3,66,3,64,3,63,3,59,3,67,3,248,2,244,2,57,3,253,2,252,2,185,2,184,2,182,2,166,2,165,2,162,2,155,2,153,2,152,2,154,2,150,2,148,2,147,2,146,2,145,2,144,2,172,2,171,2,170,2,142,2,139,2,138,2,134,2,133,2,131,2,0,0,0,0,19,22,22,23,1,24,26,15,27,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,108,109,110,27,28,23,50,51,80,81,82,83,122,85,86,87,88,89,90,91,92,93,94,95,22,70,23,71,72,73,74,75,76,77,78,79,80,81,82,83,122,85,86,87,88,89,90,91,92,93,94,95,19,97,91,92,93,94,95,26,85,86,87,88,89,90,91,92,93,94,95,27,28,97,98,99,122,211,102,103,104,79,19,50,51,19,122,59,55,113,224,225,226,89,90,91,92,93,94,95,23,27,28,26,71,72,73,74,75,76,77,78,79,80,81,82,83,51,85,86,87,88,89,90,91,92,93,94,95,19,132,133,58,89,90,21,108,109,110,27,28,97,98,33,100,7,8,119,120,22,19,107,42,109,27,28,27,28,95,28,50,51,99,100,101,102,103,104,105,27,28,97,98,107,152,112,132,133,112,65,69,71,72,73,74,75,76,77,78,79,80,81,82,83,11,85,86,87,88,89,90,91,92,93,94,95,19,101,97,97,98,24,101,122,157,12,99,103,112,102,103,104,152,22,97,98,97,98,27,28,113,27,29,91,164,165,124,50,51,97,98,219,59,132,133,134,22,23,45,66,47,212,213,124,140,132,133,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,164,165,27,28,230,50,51,233,108,109,110,70,16,59,23,97,98,26,97,22,66,185,12,187,27,28,71,72,73,74,75,76,77,78,79,80,81,82,83,29,85,86,87,88,89,90,91,92,93,94,95,19,22,148,149,45,23,47,62,154,64,156,108,109,110,37,69,23,163,59,26,26,97,98,144,145,146,147,152,200,52,23,50,51,26,22,89,90,60,210,7,8,9,138,97,22,23,26,101,26,174,175,197,71,72,73,74,75,76,77,78,79,80,81,82,83,16,85,86,87,88,89,90,91,92,93,94,95,19,132,133,134,23,152,208,209,140,152,152,111,195,196,98,70,163,160,152,23,22,164,165,246,207,27,152,174,175,171,172,50,51,137,62,139,64,171,172,222,124,27,138,24,163,89,90,130,174,175,197,163,71,72,73,74,75,76,77,78,79,80,81,82,83,22,85,86,87,88,89,90,91,92,93,94,95,19,197,181,182,23,208,209,152,197,26,189,132,133,232,224,225,226,152,97,91,26,232,116,212,213,152,222,121,152,174,175,50,51,243,97,22,23,22,234,174,175,177,23,239,116,163,177,174,175,121,174,175,71,72,73,74,75,76,77,78,79,80,81,82,83,24,85,86,87,88,89,90,91,92,93,94,95,19,23,197,11,23,227,70,208,220,152,31,224,225,226,35,98,224,225,226,108,109,110,115,152,117,118,27,222,49,123,24,50,51,27,0,1,2,224,225,226,166,124,168,169,239,174,175,170,171,172,22,194,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,22,208,24,23,195,196,170,171,172,174,175,152,26,152,152,152,207,152,97,152,23,152,51,244,152,97,152,247,248,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,23,174,175,174,175,188,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,152,107,152,33,24,152,100,101,27,174,175,152,42,152,23,152,26,152,23,152,26,152,174,175,174,175,152,174,175,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,163,119,120,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,66,152,97,197,23,50,51,26,53,23,174,175,26,23,23,23,26,26,26,36,106,146,147,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,196,119,120,19,50,51,168,169,26,174,175,207,28,152,249,250,152,163,163,163,163,174,175,163,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,197,197,197,197,50,51,197,194,36,174,175,191,192,152,191,192,163,152,66,124,152,174,175,152,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,197,152,100,188,152,50,51,152,152,188,174,175,252,152,94,95,152,152,152,1,2,152,152,174,175,19,152,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,188,188,22,194,50,51,240,173,194,174,175,252,194,152,36,181,28,152,23,219,122,174,175,219,221,152,152,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,20,152,22,23,194,152,240,27,28,174,175,240,19,20,26,22,194,194,38,22,27,28,152,23,22,152,116,174,175,152,23,38,152,23,152,221,152,57,152,23,163,50,51,194,174,175,66,174,175,69,57,174,175,40,174,175,174,175,174,175,174,175,69,22,53,74,75,30,53,89,90,22,22,152,197,23,96,97,98,22,152,101,89,90,91,208,209,152,53,96,97,98,101,22,101,174,175,152,19,20,105,22,174,175,112,19,27,28,20,174,175,24,132,133,134,135,136,38,44,174,175,107,61,54,26,132,133,134,135,136,54,107,22,5,140,1,57,36,111,122,28,79,79,131,123,66,19,20,69,22,1,16,20,125,27,28,123,111,120,23,131,23,16,68,142,38,15,22,89,90,3,167,4,248,251,96,97,98,180,180,101,251,151,6,57,151,13,151,26,25,151,161,202,153,162,153,69,130,128,203,19,20,127,22,126,204,129,22,27,28,205,132,133,134,135,136,89,90,231,38,95,137,179,96,97,98,206,179,101,122,107,159,159,125,231,216,228,107,57,184,217,216,176,217,176,48,106,18,184,158,69,159,158,46,71,237,176,176,176,132,133,134,135,136,217,176,137,216,178,158,89,90,179,176,159,179,159,96,97,98,159,159,101,5,158,202,22,18,10,11,12,13,14,190,238,17,190,158,193,41,159,202,193,159,202,245,193,193,223,190,32,159,34,132,133,134,135,136,159,39,155,43,150,223,177,201,178,177,186,66,199,177,152,253,56,215,152,182,152,202,152,63,152,152,66,67,242,229,152,174,152,152,152,152,152,152,152,199,242,202,152,198,152,152,152,183,192,152,215,152,183,215,183,152,241,214,152,211,152,152,211,211,152,152,241,152,152,152,152,152,152,152,114,152,152,235,152,152,152,174,187,95,174,253,253,253,253,236,253,253,253,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,27,27,27,27,0,27,27,27,0,27,27,27,27,0,0,0,27,0,0,27,0,0,0,27,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,115,113,108,105,116,101,51,95,103,101,116,95,116,97,98,108,101,40,41,32,99,97,108,108,101,100,32,119,105,116,104,32,116,119,111,32,111,114,32,109,111,114,101,32,105,110,99,111,109,112,97,116,105,98,108,101,32,113,117,101,114,105,101,115,0,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,115,116,97,116,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,128,160,0,0,136,160,0,0,144,160,0,0,152,160,0,0,160,160,0,0,168,160,0,0,176,160,0,0,184,160,0,0,192,160,0,0,208,160,0,0,136,122,0,0,216,160,0,0,97,100,100,114,0,0,0,0,111,112,99,111,100,101,0,0,112,49,0,0,0,0,0,0,112,50,0,0,0,0,0,0,112,51,0,0,0,0,0,0,112,52,0,0,0,0,0,0,112,53,0,0,0,0,0,0,99,111,109,109,101,110,116,0,115,101,108,101,99,116,105,100,0,0,0,0,0,0,0,0,111,114,100,101,114,0,0,0,100,101,116,97,105,108,0,0,115,111,0,0,0,0,0,0,115,113,108,105,116,101,51,95,101,120,116,101,110,115,105,111,110,95,105,110,105,116,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,115,104,97,114,101,100,32,108,105,98,114,97,114,121,32,91,37,115,93,0,0,0,0,0,0,108,105,98,0,0,0,0,0,95,105,110,105,116,0,0,0,110,111,32,101,110,116,114,121,32,112,111,105,110,116,32,91,37,115,93,32,105,110,32,115,104,97,114,101,100,32,108,105,98,114,97,114,121,32,91,37,115,93,0,0,0,0,0,0,101,114,114,111,114,32,100,117,114,105,110,103,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,58,32,37,115,0,117,110,111,112,101,110,101,100,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,118,105,101,119,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,97,108,117,101,32,111,102,32,116,121,112,101,32,37,115,0,0,0,0,110,111,32,115,117,99,104,32,114,111,119,105,100,58,32,37,108,108,100,0,0,0,0,0,98,105,110,100,32,111,110,32,97,32,98,117,115,121,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,58,32,91,37,115,93,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,162,0,0,96,162,0,0,104,162,0,0,112,162,0,0,78,79,84,32,78,85,76,76,0,0,0,0,0,0,0,0,85,78,73,81,85,69,0,0,67,72,69,67,75,0,0,0,70,79,82,69,73,71,78,32,75,69,89,0,0,0,0,0,97,98,111,114,116,32,97,116,32,37,100,32,105,110,32,91,37,115,93,58,32,37,115,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,58,32,37,115,0,0,0,0,0,0,0,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,1,2,0,2,2,0,0,0,0,0,0,0,0,1,2,1,1,1,2,1,2,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,110,111,32,115,117,99,104,32,115,97,118,101,112,111,105,110,116,58,32,37,115,0,0,0,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,116,114,97,110,115,97,99,116,105,111,110,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,99,97,110,110,111,116,32,115,116,97,114,116,32,97,32,116,114,97,110,115,97,99,116,105,111,110,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,114,111,108,108,98,97,99,107,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,87,72,69,82,69,32,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,116,111,111,32,109,97,110,121,32,108,101,118,101,108,115,32,111,102,32,116,114,105,103,103,101,114,32,114,101,99,117,114,115,105,111,110,0,0,0,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,37,115,32,119,97,108,32,109,111,100,101,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,105,110,116,111,0,0,0,0,111,117,116,32,111,102,0,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,0,115,116,97,116,101,109,101,110,116,32,97,98,111,114,116,115,32,97,116,32,37,100,58,32,91,37,115,93,32,37,115,0,45,45,32,0,0,0,0,0,39,37,46,42,113,39,0,0,122,101,114,111,98,108,111,98,40,37,100,41,0,0,0,0,120,39,0,0,0,0,0,0,37,48,50,120,0,0,0,0,39,0,0,0,0,0,0,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,65,84,84,65,67,72,32,39,58,109,101,109,111,114,121,58,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,65,84,84,65,67,72,32,39,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,80,82,65,71,77,65,32,118,97,99,117,117,109,95,100,98,46,115,121,110,99,104,114,111,110,111,117,115,61,79,70,70,0,0,0,0,0,0,0,0,66,69,71,73,78,59,0,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,84,65,66,76,69,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,37,39,32,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,50,49,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,37,39,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,68,69,76,69,84,69,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,59,0,0,0,0,0,0,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,83,69,76,69,67,84,32,116,121,112,101,44,32,110,97,109,101,44,32,116,98,108,95,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,32,32,32,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,87,72,69,82,69,32,116,121,112,101,61,39,118,105,101,119,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,32,32,32,32,32,79,82,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,114,111,111,116,112,97,103,101,61,48,41,0,1,1,3,0,5,0,6,0,8,0,0,0,0,0,0,0,77,97,105,110,32,102,114,101,101,108,105,115,116,58,32,0,76,105,115,116,32,111,102,32,116,114,101,101,32,114,111,111,116,115,58,32,0,0,0,0,80,97,103,101,32,37,100,32,105,115,32,110,101,118,101,114,32,117,115,101,100,0,0,0,80,111,105,110,116,101,114,32,109,97,112,32,112,97,103,101,32,37,100,32,105,115,32,114,101,102,101,114,101,110,99,101,100,0,0,0,0,0,0,0,79,117,116,115,116,97,110,100,105,110,103,32,112,97,103,101,32,99,111,117,110,116,32,103,111,101,115,32,102,114,111,109,32,37,100,32,116,111,32,37,100,32,100,117,114,105,110,103,32,116,104,105,115,32,97,110,97,108,121,115,105,115,0,0,10,0,0,0,0,0,0,0,80,97,103,101,32,37,100,58,32,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,103,101,116,32,116,104,101,32,112,97,103,101,46,32,101,114,114,111,114,32,99,111,100,101,61,37,100,0,0,0,98,116,114,101,101,73,110,105,116,80,97,103,101,40,41,32,114,101,116,117,114,110,115,32,101,114,114,111,114,32,99,111,100,101,32,37,100,0,0,0,79,110,32,116,114,101,101,32,112,97,103,101,32,37,100,32,99,101,108,108,32,37,100,58,32,0,0,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,112,114,101,118,105,111,117,115,32,119,97,115,32,37,108,108,100,41,0,0,0,0,0,67,104,105,108,100,32,112,97,103,101,32,100,101,112,116,104,32,100,105,102,102,101,114,115,0,0,0,0,0,0,0,0,79,110,32,112,97,103,101,32,37,100,32,97,116,32,114,105,103,104,116,32,99,104,105,108,100,58,32,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114,32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114,32,116,104,97,110,32,112,97,114,101,110,116,32,109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,67,111,114,114,117,112,116,105,111,110,32,100,101,116,101,99,116,101,100,32,105,110,32,99,101,108,108,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,77,117,108,116,105,112,108,101,32,117,115,101,115,32,102,111,114,32,98,121,116,101,32,37,100,32,111,102,32,112,97,103,101,32,37,100,0,0,0,0,70,114,97,103,109,101,110,116,97,116,105,111,110,32,111,102,32,37,100,32,98,121,116,101,115,32,114,101,112,111,114,116,101,100,32,97,115,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,105,110,118,97,108,105,100,32,112,97,103,101,32,110,117,109,98,101,114,32,37,100,0,0,50,110,100,32,114,101,102,101,114,101,110,99,101,32,116,111,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,112,116,114,109,97,112,32,107,101,121,61,37,100,0,0,0,0,66,97,100,32,112,116,114,32,109,97,112,32,101,110,116,114,121,32,107,101,121,61,37,100,32,101,120,112,101,99,116,101,100,61,40,37,100,44,37,100,41,32,103,111,116,61,40,37,100,44,37,100,41,0,0,0,37,100,32,111,102,32,37,100,32,112,97,103,101,115,32,109,105,115,115,105,110,103,32,102,114,111,109,32,111,118,101,114,102,108,111,119,32,108,105,115,116,32,115,116,97,114,116,105,110,103,32,97,116,32,37,100,0,0,0,0,0,0,0,0,102,97,105,108,101,100,32,116,111,32,103,101,116,32,112,97,103,101,32,37,100,0,0,0,102,114,101,101,108,105,115,116,32,108,101,97,102,32,99,111,117,110,116,32,116,111,111,32,98,105,103,32,111,110,32,112,97,103,101,32,37,100,0,0,83,81,76,105,116,101,32,102,111,114,109,97,116,32,51,0,37,115,45,109,106,88,88,88,88,88,88,57,88,88,122,0,77,74,32,100,101,108,101,116,101,58,32,37,115,0,0,0,77,74,32,99,111,108,108,105,100,101,58,32,37,115,0,0,45,109,106,37,48,54,88,57,37,48,50,88,0,0,0,0,37,46,50,120,0,0,0,0,107,40,37,100,0,0,0,0,110,105,108,0,0,0,0,0,66,0,0,0,0,0,0,0,40,37,46,50,48,115,41,0,37,115,40,37,100,41,0,0,37,100,0,0,0,0,0,0,40,98,108,111,98,41,0,0,118,116,97,98,58,37,112,0,105,110,116,97,114,114,97,121,0,0,0,0,0,0,0,0,112,114,111,103,114,97,109,0,240,52,0,0,176,177,0,0,192,177,0,0,208,177,0,0,224,177,0,0,240,177,0,0,0,178,0,0,16,178,0,0,32,178,0,0,40,178,0,0,48,178,0,0,56,178,0,0,72,178,0,0,88,178,0,0,96,178,0,0,104,178,0,0,112,178,0,0,120,178,0,0,128,178,0,0,136,178,0,0,144,178,0,0,160,178,0,0,176,178,0,0,184,178,0,0,200,178,0,0,208,178,0,0,216,178,0,0,224,178,0,0,232,178,0,0,240,178,0,0,0,179,0,0,8,179,0,0,24,179,0,0,32,179,0,0,40,179,0,0,48,179,0,0,64,179,0,0,72,179,0,0,80,179,0,0,96,179,0,0,112,179,0,0,120,179,0,0,136,179,0,0,144,179,0,0,152,179,0,0,160,179,0,0,168,179,0,0,176,179,0,0,184,179,0,0,200,179,0,0,216,179,0,0,224,179,0,0,240,179,0,0,0,180,0,0,16,180,0,0,32,180,0,0,48,180,0,0,64,180,0,0,80,180,0,0,96,180,0,0,112,180,0,0,128,180,0,0,136,180,0,0,144,180,0,0,152,180,0,0,160,180,0,0,168,180,0,0,176,180,0,0,192,180,0,0,208,180,0,0,216,180,0,0,232,180,0,0,240,180,0,0,248,180,0,0,8,181,0,0,24,181,0,0,32,181,0,0,40,181,0,0,48,181,0,0,56,181,0,0,64,181,0,0,72,181,0,0,80,181,0,0,88,181,0,0,96,181,0,0,112,181,0,0,120,181,0,0,128,181,0,0,144,181,0,0,160,181,0,0,168,181,0,0,184,181,0,0,200,181,0,0,208,181,0,0,224,181,0,0,232,181,0,0,240,181,0,0,248,181,0,0,0,182,0,0,16,182,0,0,32,182,0,0,48,182,0,0,56,182,0,0,64,182,0,0,72,182,0,0,80,182,0,0,88,182,0,0,104,182,0,0,112,182,0,0,120,182,0,0,136,182,0,0,152,182,0,0,168,182,0,0,184,182,0,0,192,182,0,0,200,182,0,0,208,182,0,0,216,182,0,0,224,182,0,0,232,182,0,0,248,182,0,0,8,183,0,0,24,183,0,0,40,183,0,0,56,183,0,0,72,183,0,0,88,183,0,0,104,183,0,0,120,183,0,0,136,183,0,0,152,183,0,0,168,183,0,0,176,183,0,0,184,183,0,0,192,183,0,0,208,183,0,0,224,183,0,0,232,183,0,0,240,183,0,0,248,183,0,0,8,184,0,0,24,184,0,0,40,184,0,0,56,184,0,0,72,184,0,0,80,184,0,0,96,184,0,0,104,184,0,0,112,184,0,0,128,184,0,0,136,184,0,0,144,184,0,0,152,184,0,0,160,184,0,0,176,184,0,0,192,184,0,0,200,184,0,0,208,184,0,0,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,83,97,118,101,112,111,105,110,116,0,0,0,0,0,0,0,65,117,116,111,67,111,109,109,105,116,0,0,0,0,0,0,84,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,83,111,114,116,101,114,78,101,120,116,0,0,0,0,0,0,80,114,101,118,73,102,79,112,101,110,0,0,0,0,0,0,78,101,120,116,73,102,79,112,101,110,0,0,0,0,0,0,80,114,101,118,0,0,0,0,78,101,120,116,0,0,0,0,65,103,103,83,116,101,112,0,67,104,101,99,107,112,111,105,110,116,0,0,0,0,0,0,74,111,117,114,110,97,108,77,111,100,101,0,0,0,0,0,86,97,99,117,117,109,0,0,86,70,105,108,116,101,114,0,86,85,112,100,97,116,101,0,71,111,116,111,0,0,0,0,71,111,115,117,98,0,0,0,82,101,116,117,114,110,0,0,78,111,116,0,0,0,0,0,73,110,105,116,67,111,114,111,117,116,105,110,101,0,0,0,69,110,100,67,111,114,111,117,116,105,110,101,0,0,0,0,89,105,101,108,100,0,0,0,72,97,108,116,73,102,78,117,108,108,0,0,0,0,0,0,72,97,108,116,0,0,0,0,73,110,116,101,103,101,114,0,73,110,116,54,52,0,0,0,83,116,114,105,110,103,0,0,78,117,108,108,0,0,0,0,83,111,102,116,78,117,108,108,0,0,0,0,0,0,0,0,66,108,111,98,0,0,0,0,86,97,114,105,97,98,108,101,0,0,0,0,0,0,0,0,77,111,118,101,0,0,0,0,67,111,112,121,0,0,0,0,83,67,111,112,121,0,0,0,82,101,115,117,108,116,82,111,119,0,0,0,0,0,0,0,67,111,108,108,83,101,113,0,65,100,100,73,109,109,0,0,77,117,115,116,66,101,73,110,116,0,0,0,0,0,0,0,82,101,97,108,65,102,102,105,110,105,116,121,0,0,0,0,67,97,115,116,0,0,0,0,80,101,114,109,117,116,97,116,105,111,110,0,0,0,0,0,67,111,109,112,97,114,101,0,74,117,109,112,0,0,0,0,79,110,99,101,0,0,0,0,73,102,0,0,0,0,0,0,73,102,78,111,116,0,0,0,67,111,108,117,109,110,0,0,65,102,102,105,110,105,116,121,0,0,0,0,0,0,0,0,77,97,107,101,82,101,99,111,114,100,0,0,0,0,0,0,67,111,117,110,116,0,0,0,82,101,97,100,67,111,111,107,105,101,0,0,0,0,0,0,83,101,116,67,111,111,107,105,101,0,0,0,0,0,0,0,82,101,111,112,101,110,73,100,120,0,0,0,0,0,0,0,79,112,101,110,82,101,97,100,0,0,0,0,0,0,0,0,79,112,101,110,87,114,105,116,101,0,0,0,0,0,0,0,79,112,101,110,65,117,116,111,105,110,100,101,120,0,0,0,79,112,101,110,69,112,104,101,109,101,114,97,108,0,0,0,83,111,114,116,101,114,79,112,101,110,0,0,0,0,0,0,83,101,113,117,101,110,99,101,84,101,115,116,0,0,0,0,79,112,101,110,80,115,101,117,100,111,0,0,0,0,0,0,67,108,111,115,101,0,0,0,83,101,101,107,76,84,0,0,83,101,101,107,76,69,0,0,83,101,101,107,71,69,0,0,83,101,101,107,71,84,0,0,83,101,101,107,0,0,0,0,78,111,67,111,110,102,108,105,99,116,0,0,0,0,0,0,78,111,116,70,111,117,110,100,0,0,0,0,0,0,0,0,70,111,117,110,100,0,0,0,78,111,116,69,120,105,115,116,115,0,0,0,0,0,0,0,79,114,0,0,0,0,0,0,65,110,100,0,0,0,0,0,83,101,113,117,101,110,99,101,0,0,0,0,0,0,0,0,78,101,119,82,111,119,105,100,0,0,0,0,0,0,0,0,73,110,115,101,114,116,0,0,73,115,78,117,108,108,0,0,78,111,116,78,117,108,108,0,78,101,0,0,0,0,0,0,69,113,0,0,0,0,0,0,71,116,0,0,0,0,0,0,76,101,0,0,0,0,0,0,76,116,0,0,0,0,0,0,71,101,0,0,0,0,0,0,73,110,115,101,114,116,73,110,116,0,0,0,0,0,0,0,66,105,116,65,110,100,0,0,66,105,116,79,114,0,0,0,83,104,105,102,116,76,101,102,116,0,0,0,0,0,0,0,83,104,105,102,116,82,105,103,104,116,0,0,0,0,0,0,65,100,100,0,0,0,0,0,83,117,98,116,114,97,99,116,0,0,0,0,0,0,0,0,77,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,68,105,118,105,100,101,0,0,82,101,109,97,105,110,100,101,114,0,0,0,0,0,0,0,67,111,110,99,97,116,0,0,68,101,108,101,116,101,0,0,66,105,116,78,111,116,0,0,83,116,114,105,110,103,56,0,82,101,115,101,116,67,111,117,110,116,0,0,0,0,0,0,83,111,114,116,101,114,67,111,109,112,97,114,101,0,0,0,83,111,114,116,101,114,68,97,116,97,0,0,0,0,0,0,82,111,119,75,101,121,0,0,82,111,119,68,97,116,97,0,82,111,119,105,100,0,0,0,78,117,108,108,82,111,119,0,76,97,115,116,0,0,0,0,83,111,114,116,101,114,83,111,114,116,0,0,0,0,0,0,83,111,114,116,0,0,0,0,82,101,119,105,110,100,0,0,83,111,114,116,101,114,73,110,115,101,114,116,0,0,0,0,73,100,120,73,110,115,101,114,116,0,0,0,0,0,0,0,73,100,120,68,101,108,101,116,101,0,0,0,0,0,0,0,73,100,120,82,111,119,105,100,0,0,0,0,0,0,0,0,73,100,120,76,69,0,0,0,73,100,120,71,84,0,0,0,73,100,120,76,84,0,0,0,73,100,120,71,69,0,0,0,68,101,115,116,114,111,121,0,67,108,101,97,114,0,0,0,82,101,115,101,116,83,111,114,116,101,114,0,0,0,0,0,67,114,101,97,116,101,73,110,100,101,120,0,0,0,0,0,67,114,101,97,116,101,84,97,98,108,101,0,0,0,0,0,80,97,114,115,101,83,99,104,101,109,97,0,0,0,0,0,76,111,97,100,65,110,97,108,121,115,105,115,0,0,0,0,68,114,111,112,84,97,98,108,101,0,0,0,0,0,0,0,68,114,111,112,73,110,100,101,120,0,0,0,0,0,0,0,68,114,111,112,84,114,105,103,103,101,114,0,0,0,0,0,73,110,116,101,103,114,105,116,121,67,107,0,0,0,0,0,82,111,119,83,101,116,65,100,100,0,0,0,0,0,0,0,82,111,119,83,101,116,82,101,97,100,0,0,0,0,0,0,82,111,119,83,101,116,84,101,115,116,0,0,0,0,0,0,80,114,111,103,114,97,109,0,80,97,114,97,109,0,0,0,82,101,97,108,0,0,0,0,70,107,67,111,117,110,116,101,114,0,0,0,0,0,0,0,70,107,73,102,90,101,114,111,0,0,0,0,0,0,0,0,77,101,109,77,97,120,0,0,73,102,80,111,115,0,0,0,73,102,78,101,103,0,0,0,73,102,78,111,116,90,101,114,111,0,0,0,0,0,0,0,68,101,99,114,74,117,109,112,90,101,114,111,0,0,0,0,74,117,109,112,90,101,114,111,73,110,99,114,0,0,0,0,65,103,103,70,105,110,97,108,0,0,0,0,0,0,0,0,73,110,99,114,86,97,99,117,117,109,0,0,0,0,0,0,69,120,112,105,114,101,0,0,84,97,98,108,101,76,111,99,107,0,0,0,0,0,0,0,86,66,101,103,105,110,0,0,86,67,114,101,97,116,101,0,86,68,101,115,116,114,111,121,0,0,0,0,0,0,0,0,86,79,112,101,110,0,0,0,86,67,111,108,117,109,110,0,86,78,101,120,116,0,0,0,86,82,101,110,97,109,101,0,80,97,103,101,99,111,117,110,116,0,0,0,0,0,0,0,77,97,120,80,103,99,110,116,0,0,0,0,0,0,0,0,73,110,105,116,0,0,0,0,78,111,111,112,0,0,0,0,69,120,112,108,97,105,110,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,78,85,76,76,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,102,105,110,97,108,105,122,101,100,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,0,0,0,64,32,32,0,0,0,0,0,100,101,115,116,105,110,97,116,105,111,110,32,100,97,116,97,98,97,115,101,32,105,115,32,105,110,32,117,115,101,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,0,0,1,0,0,0,67,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,24,187,0,0,33,0,0,0,0,0,0,0,240,186,0,0,70,0,0,0,0,0,0,0,72,59,0,0,59,0,0,0,0,0,0,0,32,187,0,0,60,0,0,0,0,0,0,0,40,187,0,0,61,0,0,0,0,0,0,0,48,187,0,0,62,0,0,0,0,0,0,0,56,187,0,0,63,0,0,0,0,0,0,0,72,187,0,0,34,0,0,0,0,0,0,0,80,187,0,0,35,0,0,0,0,0,0,0,88,187,0,0,0,0,0,0,0,0,0,0,96,187,0,0,0,0,0,0,0,0,0,0,104,187,0,0,36,0,0,0,0,0,0,0,112,187,0,0,0,0,0,0,0,0,0,0,120,187,0,0,0,0,0,0,0,0,0,0,136,187,0,0,64,0,0,0,0,0,0,0,144,187,0,0,0,0,0,0,0,0,0,0,160,187,0,0,71,0,0,0,0,0,0,0,168,187,0,0,65,0,0,0,0,0,0,0,184,187,0,0,66,0,0,0,0,0,0,0,192,187,0,0,72,0,0,0,0,0,0,0,200,187,0,0,37,0,0,0,0,0,0,0,208,187,0,0,4,0,0,0,0,0,0,0,216,187,0,0,67,0,0,0,0,0,0,0,224,187,0,0,0,0,0,0,0,0,0,0,232,187,0,0,6,0,0,0,0,0,0,0,0,0,0,0,99,108,111,115,101,0,0,0,111,115,95,117,110,105,120,46,99,58,37,100,58,32,40,37,100,41,32,37,115,40,37,115,41,32,45,32,37,115,0,0,111,112,101,110,0,0,0,0,103,101,116,99,119,100,0,0,115,116,97,116,0,0,0,0,102,115,116,97,116,0,0,0,102,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,102,99,110,116,108,0,0,0,114,101,97,100,0,0,0,0,112,114,101,97,100,0,0,0,112,114,101,97,100,54,52,0,119,114,105,116,101,0,0,0,112,119,114,105,116,101,0,0,112,119,114,105,116,101,54,52,0,0,0,0,0,0,0,0,102,99,104,109,111,100,0,0,102,97,108,108,111,99,97,116,101,0,0,0,0,0,0,0,117,110,108,105,110,107,0,0,111,112,101,110,68,105,114,101,99,116,111,114,121,0,0,0,109,107,100,105,114,0,0,0,114,109,100,105,114,0,0,0,102,99,104,111,119,110,0,0,109,109,97,112,0,0,0,0,109,117,110,109,97,112,0,0,109,114,101,109,97,112,0,0,103,101,116,112,97,103,101,115,105,122,101,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,111,112,101,110,32,34,37,115,34,32,97,115,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,37,100,0,0,0,0,0,0,47,100,101,118,47,110,117,108,108,0,0,0,0,0,0,0,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,48,49,50,51,52,53,54,55,56,57,0,0,37,115,47,101,116,105,108,113,115,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,188,0,0,184,188,0,0,200,188,0,0,0,0,0,0,0,0,0,0,47,118,97,114,47,116,109,112,0,0,0,0,0,0,0,0,47,117,115,114,47,116,109,112,0,0,0,0,0,0,0,0,47,116,109,112,0,0,0,0,83,81,76,73,84,69,95,84,77,80,68,73,82,0,0,0,84,77,80,68,73,82,0,0,102,117,108,108,95,102,115,121,110,99,0,0,0,0,0,0,3,0,0,0,73,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,100,101,118,47,117,114,97,110,100,111,109,0,0,0,0,47,37,115,0,0,0,0,0,102,115,121,110,99,0,0,0,112,115,111,119,0,0,0,0,3,0,0,0,74,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,20,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,37,115,46,108,111,99,107,0,99,97,110,110,111,116,32,102,115,116,97,116,32,100,98,32,102,105,108,101,32,37,115,0,102,105,108,101,32,117,110,108,105,110,107,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,0,0,0,109,117,108,116,105,112,108,101,32,108,105,110,107,115,32,116,111,32,102,105,108,101,58,32,37,115,0,0,0,0,0,0,102,105,108,101,32,114,101,110,97,109,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,45,115,104,109,0,0,114,101,97,100,111,110,108,121,95,115,104,109,0,0,0,0,37,0,0,0,0,0,0,0,100,10,1,1,0,0,115,0,4,6,0,0,103,0,1,4,30,0,122,0,4,7,0,0,113,0,4,10,0,0,81,0,4,11,0,0,119,0,4,15,0,0,99,0,0,9,0,0,111,8,0,1,0,2,117,10,0,1,0,0,120,16,0,1,16,1,88,16,0,1,0,4,102,0,1,2,0,0,101,0,1,3,30,0,69,0,1,3,14,0,71,0,1,4,14,0,105,10,1,1,0,0,110,0,0,5,0,0,37,0,0,8,0,0,112,16,0,14,0,1,84,0,2,12,0,0,83,0,2,13,0,0,114,10,3,16,0,0,0,0,0,0,0,0,116,104,115,116,110,100,114,100,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,0,0,0,0,0,0,0,0,45,120,48,0,88,48,0,0,78,97,78,0,0,0,0,0,45,73,110,102,0,0,0,0,43,73,110,102,0,0,0,0,73,110,102,0,0,0,0,0,40,78,85,76,76,41,0,0,68,73,83,65,66,76,69,95,76,70,83,0,0,0,0,0,73,78,84,54,52,95,84,89,80,69,0,0,0,0,0,0,83,89,83,84,69,77,95,77,65,76,76,79,67,0,0,0,84,72,82,69,65,68,83,65,70,69,61,48],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+39192);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}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};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var ___errno_state=0;function ___setErrNo(value){SAFE_HEAP_STORE(___errno_state|0,value|0,4,0)|0;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{return flags}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),getStreamFromPtr:(function(ptr){return FS.streams[ptr-1]}),getPtrForStream:(function(stream){return stream?stream.fd+1:0}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(lookup.node.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(){return 0})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");SAFE_HEAP_STORE(_stdin|0,FS.getPtrForStream(stdin)|0,4,0)|0;assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");SAFE_HEAP_STORE(_stdout|0,FS.getPtrForStream(stdout)|0,4,0)|0;assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");SAFE_HEAP_STORE(_stderr|0,FS.getPtrForStream(stderr)|0,4,0)|0;assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)this.stack=demangleAll(this.stack)};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;ibuflen-1){return ___setErrNo(ERRNO_CODES.ERANGE)}else{var msg=ERRNO_MESSAGES[errnum];writeAsciiToMemory(msg,strerrbuf);return 0}}else{return ___setErrNo(ERRNO_CODES.EINVAL)}}function _strerror(errnum){if(!_strerror.buffer)_strerror.buffer=_malloc(256);_strerror_r(errnum,_strerror.buffer,256);return _strerror.buffer}var _DtoIHigh=true;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _usleep(useconds){var msec=useconds/1e3;if((ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]){var start=self["performance"]["now"]();while(self["performance"]["now"]()-start>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}SAFE_HEAP_STORE(arg|0,bytes|0,4,0)|0;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;if(typeof Browser.vrDevice==="undefined")Browser.vrDevice=null;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);if(vrDevice){canvasContainer.requestFullScreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullScreen()}}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;assert(typeof scrollX!=="undefined"&&typeof scrollY!=="undefined","Unable to retrieve scroll position, mouse positions likely broken.");if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(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)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=SAFE_HEAP_LOAD(SDL.screen+Runtime.QUANTUM_SIZE*0|0,4,0,1)|0;flags=flags|8388608;SAFE_HEAP_STORE(SDL.screen+Runtime.QUANTUM_SIZE*0|0,flags|0,4,0)|0}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=SAFE_HEAP_LOAD(SDL.screen+Runtime.QUANTUM_SIZE*0|0,4,0,1)|0;flags=flags&~8388608;SAFE_HEAP_STORE(SDL.screen+Runtime.QUANTUM_SIZE*0|0,flags|0,4,0)|0}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/hTOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>>0}return ret}Module["_memmove"]=_memmove;function _dlerror(){if(DLFCN.errorMsg===null){return 0}else{if(DLFCN.error)_free(DLFCN.error);var msgArr=intArrayFromString(DLFCN.errorMsg);DLFCN.error=allocate(msgArr,"i8",ALLOC_NORMAL);DLFCN.errorMsg=null;return DLFCN.error}}function ___errno_location(){return ___errno_state}var _BItoD=true;Module["_bitshift64Lshr"]=_bitshift64Lshr;Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function _mmap(start,num,prot,flags,fd,offset){var MAP_PRIVATE=2;var ptr;var allocated=false;if(!_mmap.mappings)_mmap.mappings={};if(fd==-1){ptr=_malloc(num);if(!ptr)return-1;_memset(ptr,0,num);allocated=true}else{var info=FS.getStream(fd);if(!info)return-1;try{var res=FS.mmap(info,HEAPU8,start,num,offset,prot,flags);ptr=res.ptr;allocated=res.allocated}catch(e){FS.handleFSError(e);return-1}}_mmap.mappings[ptr]={malloc:ptr,num:num,allocated:allocated};return ptr}function _truncate(path,length){if(typeof path!=="string")path=Pointer_stringify(path);try{FS.truncate(path,length);return 0}catch(e){FS.handleFSError(e);return-1}}function _ftruncate(fildes,length){try{FS.ftruncate(fildes,length);return 0}catch(e){FS.handleFSError(e);return-1}}function _utimes(path,times){var time;if(times){var offset=8+0;time=(SAFE_HEAP_LOAD(times+offset|0,4,0,0)|0)*1e3;offset=8+4;time+=(SAFE_HEAP_LOAD(times+offset|0,4,0,0)|0)/1e3}else{time=Date.now()}path=Pointer_stringify(path);try{FS.utime(path,time,time);return 0}catch(e){FS.handleFSError(e);return-1}}FS.staticInit();__ATINIT__.unshift({func:(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()})});__ATMAIN__.push({func:(function(){FS.ignorePermissions=false})});__ATEXIT__.push({func:(function(){FS.quit()})});Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;___errno_state=Runtime.staticAlloc(4);SAFE_HEAP_STORE(___errno_state|0,0|0,4,0)|0;__ATINIT__.unshift({func:(function(){TTY.init()})});__ATEXIT__.push({func:(function(){TTY.shutdown()})});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}__ATINIT__.push({func:(function(){SOCKFS.root=FS.mount(SOCKFS,{},null)})});Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};___buildEnvironment(ENV);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>0|0,1,0,0)|0|0;a=da(3164*4|0,4,0,0)|0|0;if(a)mc[(fa(a|0,3|0)|0)&3]();d=h+236|0;a=da(d|0,4,0,0)|0|0;do if(!a){a=lh(h,40,0)|0;if(!a){ea(d|0,a|0,4,0);break}else{b=a+0|0;c=b+40|0;do{ea(b>>0|0,0|0,1,0);b=b+1|0}while((b|0)<(c|0));ea(a+8|0,1|0,2,0);ea(a+32|0,h|0,4,0);ea(d|0,a|0,4,0);c=8;break}}else c=8;while(0);if((c|0)==8)Wg(a,da(e|0,4,0,0)|0|0,-1,1,-1)|0;a=da(3166*4|0,4,0,0)|0|0;if(a)mc[(fa(a|0,3|0)|0)&3]();ea(f>>0|0,g|0,1,0);ea(h+52|0,i|0,4,0)}while(0);return i|0}function hh(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;var h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();h=n;ea(f|0,0|0,4,0);if(!((Gh(a)|0)==0|(b|0)==0)){h=da(a+20|0,4,0,0)|0|0;if((h|0)>0){k=da(a+16|0,4,0,0)|0|0;m=0;do{l=da(k+(m<<4)+4|0,4,0,0)|0|0;if(l)ea((da(l+4|0,4,0,0)|0|0)+4|0,da(l|0,4,0,0)|0|0,4,0);m=m+1|0}while((m|0)!=(h|0))}h=En(a,b,c,d,e,f,g)|0;if((h|0)==17){ld(da(f|0,4,0,0)|0|0)|0;h=En(a,b,c,d,e,f,g)|0}}else{ea(h|0,105892|0,4,0);ea(h+4|0,10788|0,4,0);ad(21,13648,h);h=21}i=n;return h|0}function ih(a,b){a=a|0;b=b|0;var c=0,d=0;d=a+68|0;if((da(d|0,2,0,0)|0|0)>0){c=b+60|0;b=a+60|0;a=0;do{Zl((da(c|0,4,0,0)|0|0)+(a*40|0)|0,(da(b|0,4,0,0)|0|0)+(a*40|0)|0);a=a+1|0}while((a|0)<(da(d|0,2,0,0)|0|0))}return}function jh(a,b){a=a|0;b=b|0;var c=0,d=0;if(b){c=b;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;d=(c-b&1073741823)+1|0;c=lh(a,d,0)|0;if(c)jw(c|0,b|0,d|0)|0;else c=0}else c=0;return c|0}function kh(a,b){a=a|0;b=b|0;var c=0,d=0;d=da(a+8|0,4,0,0)|0|0;if((b|0)>=1){eh(d,b)|0;ea(d+8|0,8192|0,2,0);ea(d|0,da(a+4|0,4,0,0)|0|0,4,0);c=d+16|0;a=da(c|0,4,0,0)|0|0;if(!a)c=0;else{ew(a|0,0,b|0)|0;c=da(c|0,4,0,0)|0|0}}else{c=d+8|0;if(!((da(c|0,2,0,0)|0)&9312))ea(c|0,1|0,2,0);else ug(d);ea(d+16|0,0|0,4,0);c=0}return c|0}function lh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a:do if(a){f=a+65|0;if(!(da(f>>0|0,1,0,0)|0)){do if(da(a+250>>0|0,1,0,0)|0){if(0>>0|(0==(c|0)?(da(a+248|0,2,0,1)|0|0)>>>0>>0:0)){d=a+264|0;ea(d|0,(da(d|0,4,0,0)|0|0)+1|0,4,0);break}e=a+272|0;d=da(e|0,4,0,0)|0|0;if(!d){d=a+268|0;ea(d|0,(da(d|0,4,0,0)|0|0)+1|0,4,0);break}ea(e|0,da(d|0,4,0,0)|0|0,4,0);c=a+252|0;e=da(c|0,4,0,0)|0|0;b=e+1|0;ea(c|0,b|0,4,0);c=a+260|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0);c=a+256|0;if((e|0)>=(da(c|0,4,0,0)|0|0))ea(c|0,b|0,4,0);break a}while(0);d=pg(b,c)|0;if(!d){ea(f>>0|0,1|0,1,0);d=0}}else d=0}else d=pg(b,c)|0;while(0);return d|0}function mh(a,b){a=a|0;b=b|0;var c=0,d=0;do if(a){c=da(a+20|0,4,0,0)|0|0;if((c|0)!=0?((b|0)>-1?(da(a+84|0,2,0,1)|0|0|0)>(b|0):0):0){c=c+(b*40|0)|0;break}c=da(a|0,4,0,0)|0|0;if((c|0)!=0?(ea(c+52|0,25|0,4,0),d=da(c+236|0,4,0,0)|0|0,(d|0)!=0):0){c=d+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(c|0,1|0,2,0);c=41496;break}else{ug(d);c=41496;break}}else c=41496}else c=41496;while(0);return c|0}function nh(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=oh(a,b)|0;if(!g)if(!c)g=0;else{b=(da(a+60|0,4,0,0)|0|0)+((b+-1|0)*40|0)|0;g=Wg(b,c,d,f,e)|0;if((g|0)!=0|f<<24>>24==0)b=g;else b=Xl(b,da((da(a|0,4,0,0)|0|0)+62>>0|0,1,0,1)|0|0)|0;g=da(a|0,4,0,0)|0|0;ea(g+52|0,b|0,4,0);e=da(g+236|0,4,0,0)|0|0;do if(e){d=e+8|0;if(!((da(d|0,2,0,0)|0)&9312)){ea(d|0,1|0,2,0);break}else{ug(e);g=da(a|0,4,0,0)|0|0;break}}while(0);g=Ng(g,b)|0}else{d=e;if(!((d|0)==0|(d|0)==-1))bc[(fa(e|0,31|0)|0)&31](c)}return g|0}function oh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;do if(!($g(a)|0)){if((da(a+40|0,4,0,0)|0|0)==-1108210269?(da(a+76|0,4,0,0)|0|0)<=-1:0){if((b|0)>=1?(da(a+68|0,2,0,0)|0|0)>=(b|0):0){f=b+-1|0;e=da(a+60|0,4,0,0)|0|0;d=e+(f*40|0)|0;c=e+(f*40|0)+8|0;if(!(((da(c|0,2,0,0)|0)&9312)==0?(da(e+(f*40|0)+24|0,4,0,0)|0|0)==0:0))Pg(d);ea(c|0,1|0,2,0);d=da(a|0,4,0,0)|0|0;ea(d+52|0,0|0,4,0);d=da(d+236|0,4,0,0)|0|0;do if(d){c=d+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(c|0,1|0,2,0);break}else{ug(d);break}}while(0);e=a+88|0;c=da(e|0,2,0,0)|0|0;if(!(c&256)){c=0;break}d=da(a+188|0,4,0,0)|0|0;if((b|0)<33){if(!((d&1<>16>0):0){d=da(a+64|0,4,0,0)|0|0;a=0;while(1){e=da(d+(a<<2)|0,4,0,0)|0|0;if(((e|0)!=0?(_v(e,b,c)|0)==0:0)?(da(e+c>>0|0,1,0,0)|0|0)==0:0)break;a=a+1|0;if((a|0)>=(f<<16>>16|0)){a=0;break a}}a=a+1|0}else a=0;while(0);return a|0}function qh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h+8|0;f=h;c=da(a+10>>0|0,1,0,0)|0|0;d=a+16|0;e=a+12|0;do if(Sl(da(d|0,4,0,0)|0|0,g,da(e|0,4,0,0)|0|0,c)|0){if(!(Tl(da(d|0,4,0,0)|0|0,f,da(e|0,4,0,0)|0|0,c)|0)){e=f;c=da(e+4|0,4,0,0)|0|0;d=a;ea(d|0,da(e|0,4,0,0)|0|0,4,0);ea(d+4|0,c|0,4,0);c=a+8|0;ea(c|0,da(c|0,2,0,1)|0|0|4|0,2,0);break}ea(a|0,+(+(+da(g|0,8,1,0))),8,1);c=a+8|0;ea(c|0,da(c|0,2,0,1)|0|0|8|0,2,0);if(b)cm(a)}while(0);i=h;return}function rh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;if(!(Fn(a)|0)){e=Zh(da(a|0,4,0,0)|0|0,c,d)|0;if(!e){e=(b|0)!=0?41368:41384;if(!d){ea(f|0,e|0,4,0);ea(f+4|0,c|0,4,0);sh(a,27680,f)}else{ea(f|0,e|0,4,0);ea(f+4|0,d|0,4,0);ea(f+8|0,c|0,4,0);sh(a,27664,f)}ea(a+17>>0|0,1|0,1,0);e=0}}else e=0;i=g;return e|0}function sh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e;d=da(a|0,4,0,0)|0|0;ea(f|0,c|0,4,0);c=Vk(d,b,f)|0;if(!(da(d+68>>0|0,1,0,0)|0)){b=a+64|0;ea(b|0,(da(b|0,4,0,0)|0|0)+1|0,4,0);b=a+4|0;lg(d,da(b|0,4,0,0)|0|0);ea(b|0,c|0,4,0);ea(a+12|0,1|0,4,0)}else lg(d,c);i=e;return}function th(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();e=d;ea(e|0,c|0,4,0);a=Vk(a,b,e)|0;i=d;return a|0}function uh(a){a=a|0;var b=0,c=0,d=0;c=da(a|0,4,0,0)|0|0;b=lh(c,208,0)|0;if(!b)b=0;else{ew(b|0,0,208)|0;ea(b|0,c|0,4,0);c=c+4|0;d=da(c|0,4,0,0)|0|0;if(d)ea(d+48|0,b|0,4,0);ea(b+52|0,d|0,4,0);ea(b+48|0,0|0,4,0);ea(c|0,b|0,4,0);ea(b+40|0,649915045|0,4,0);ea(b+24|0,a|0,4,0)}return b|0}function vh(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;g=a+32|0;f=da(g|0,4,0,0)|0|0;if((da((da(a+24|0,4,0,0)|0|0)+84|0,4,0,0)|0|0)<=(f|0))if(!(Gn(a)|0)){h=da(g|0,4,0,0)|0|0;i=4}else f=1;else{h=f;i=4}if((i|0)==4){ea(g|0,h+1|0,4,0);g=da(a+4|0,4,0,0)|0|0;ea(g+(f*20|0)>>0|0,b|0,1,0);ea(g+(f*20|0)+3>>0|0,0|0,1,0);ea(g+(f*20|0)+4|0,c|0,4,0);ea(g+(f*20|0)+8|0,d|0,4,0);ea(g+(f*20|0)+12|0,e|0,4,0);ea(g+(f*20|0)+16|0,0|0,4,0);ea(g+(f*20|0)+1>>0|0,0|0,1,0)}return f|0}function wh(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;h=da(a|0,4,0,0)|0|0;e=da(a+4|0,4,0,0)|0|0;do if((e|0)!=0?(da(h+65>>0|0,1,0,0)|0|0)==0:0){if((b|0)<0)b=(da(a+32|0,4,0,0)|0|0)+-1|0;g=e+(b*20|0)+1|0;f=e+(b*20|0)+16|0;Hn(h,da(g>>0|0,1,0,0)|0|0,da(f|0,4,0,0)|0|0);ea(f|0,0|0,4,0);if((d|0)==-14){ea(f|0,c|0,4,0);ea(g>>0|0,-14|0,1,0);break}if(!c){ea(f|0,0|0,4,0);ea(g>>0|0,0|0,1,0);break}if((d|0)==-10){ea(f|0,c|0,4,0);ea(g>>0|0,-10|0,1,0);b=c+12|0;ea(b|0,(da(b|0,4,0,0)|0|0)+1|0,4,0);break}else if((d|0)==-6){ea(f|0,c|0,4,0);ea(g>>0|0,-6|0,1,0);break}else{if((d|0)<0){ea(f|0,c|0,4,0);ea(g>>0|0,d|0,1,0);break}if(!d){b=c;while(1)if(!(da(b>>0|0,1,0,0)|0))break;else b=b+1|0;e=b-c&1073741823}else e=d;a=da(a|0,4,0,0)|0|0;b=iw(e|0,((e|0)<0)<<31>>31|0,1,0)|0;b=lh(a,b,C)|0;if(!b)b=0;else{jw(b|0,c|0,e|0)|0;ea(b+e>>0|0,0|0,1,0)}ea(f|0,b|0,4,0);ea(g>>0|0,-1|0,1,0);break}}else i=3;while(0);if((i|0)==3?(d|0)!=-10:0)Hn(h,d,c);return}function xh(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+32|0;d=da(i|0,4,0,0)|0|0;if((d+b|0)>(da((da(a+24|0,4,0,0)|0|0)+84|0,4,0,0)|0|0))if(!(Gn(a)|0)){d=da(i|0,4,0,0)|0|0;e=4}else d=0;else e=4;if((e|0)==4)if((b|0)>0){g=a+4|0;h=0;while(1){j=da(c+2>>0|0,1,0,0)|0|0;e=j<<24>>24;a=h+d|0;f=da(g|0,4,0,0)|0|0;ea(f+(a*20|0)>>0|0,da(c>>0|0,1,0,0)|0|0|0,1,0);ea(f+(a*20|0)+4|0,da(c+1>>0|0,1,0,0)|0|0,4,0);if(j<<24>>24<0)e=d+~e|0;ea(f+(a*20|0)+8|0,e|0,4,0);ea(f+(a*20|0)+12|0,da(c+3>>0|0,1,0,0)|0|0,4,0);ea(f+(a*20|0)+1>>0|0,0|0,1,0);ea(f+(a*20|0)+16|0,0|0,4,0);ea(f+(a*20|0)+3>>0|0,0|0,1,0);h=h+1|0;if((h|0)==(b|0))break;else c=c+4|0}ea(i|0,(da(i|0,4,0,0)|0|0)+b|0,4,0)}return d|0}function yh(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+32|0;if((da(c|0,4,0,0)|0|0)>(b|0)?(d=da(a+4|0,4,0,0)|0|0,Hn(da(a|0,4,0,0)|0|0,da(d+(b*20|0)+1>>0|0,1,0,0)|0|0,da(d+(b*20|0)+16|0,4,0,0)|0|0),a=d+(b*20|0)|0,ea(a+0|0,0|0,4,0),ea(a+4|0,0|0,4,0),ea(a+8|0,0|0,4,0),ea(a+12|0,0|0,4,0),ea(a+16|0,0|0,4,0),ea(a>>0|0,-100|0,1,0),((da(c|0,4,0,0)|0|0)+-1|0)==(b|0)):0)ea(c|0,b|0,4,0);return}function zh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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;G=i;i=i+16|0;if((i|0)>=(j|0))ba();e=G;E=da(a|0,4,0,0)|0|0;y=da(b+440|0,4,0,0)|0|0;c=da(b+72|0,4,0,0)|0|0;x=da(b+68|0,4,0,0)|0|0;ea(e|0,da(b+392|0,4,0,0)|0|0,4,0);w=da(b+80|0,4,0,0)|0|0;w=(w|0)==0?1:w;c=x+c|0;g=da(a+4|0,4,0,0)|0|0;f=g+((da(a+32|0,4,0,0)|0|0)*20|0)|0;g=g+((da(b+84|0,4,0,0)|0|0)*20|0)|0;In(a,e);if(!(da(b+20>>0|0,1,0,0)|0))d=0;else d=((da(b+21>>0|0,1,0,0)|0|0)!=0&1)<<5&65535;F=a+88|0;ea(F|0,(da(F|0,2,0,0)|0)&-33|d|0,2,0);D=b+450|0;A=(da(D>>0|0,1,0,0)|0|0)!=0&(c|0)<10?10:c;c=f;ew(f|0,0,g-c|0)|0;ea(F|0,(da(F|0,2,0,0)|0)&-9|0,2,0);z=a+8|0;r=A*40|0;s=a+60|0;t=y*40|0;u=a+12|0;h=((da(e|0,4,0,0)|0)<<2)+7&-8;v=a+64|0;k=(y<<2)+7&-8;l=a+56|0;m=(x<<2)+7&-8;n=a+200|0;o=w+7&-8;p=a+172|0;q=E+65|0;f=f+(c&7)|0;while(1){e=da(z|0,4,0,0)|0|0;if(!e){d=f+r|0;c=d>>>0>g>>>0;e=c?0:f;f=c?f:d;c=c?r:0}else c=0;ea(z|0,e|0,4,0);e=da(s|0,4,0,0)|0|0;if(!e){H=f+t|0;d=H>>>0>g>>>0;e=d?0:f;f=d?f:H;c=(d?t:0)+c|0}ea(s|0,e|0,4,0);e=da(u|0,4,0,0)|0|0;if(!e){H=f+h|0;d=H>>>0>g>>>0;e=d?0:f;f=d?f:H;c=(d?h:0)+c|0}ea(u|0,e|0,4,0);e=da(v|0,4,0,0)|0|0;if(!e){H=f+k|0;d=H>>>0>g>>>0;e=d?0:f;f=d?f:H;c=(d?k:0)+c|0}ea(v|0,e|0,4,0);e=da(l|0,4,0,0)|0|0;if(!e){H=f+m|0;d=H>>>0>g>>>0;e=d?0:f;f=d?f:H;c=(d?m:0)+c|0}ea(l|0,e|0,4,0);e=da(n|0,4,0,0)|0|0;if(!e){d=(f+o|0)>>>0>g>>>0;e=d?0:f;c=(d?o:0)+c|0}ea(n|0,e|0,4,0);if(!c)break;d=lh(E,c,((c|0)<0)<<31>>31)|0;if(!d)e=0;else{ew(d|0,0,c|0)|0;e=d}ea(p|0,e|0,4,0);if(!(da(q>>0|0,1,0,0)|0)){f=d;g=d+c|0}else break}ea(a+36|0,x|0,4,0);ea(a+196|0,w|0,4,0);d=da(s|0,4,0,0)|0|0;if((d|0)!=0?(ea(a+68|0,y|0,2,0),(y|0)>0):0){c=0;do{ea(d+(c*40|0)+8|0,1|0,2,0);ea(d+(c*40|0)+32|0,E|0,4,0);c=c+1|0}while((c|0)!=(y|0))}d=da(v|0,4,0,0)|0|0;if((d|0)!=0?(B=b+444|0,C=da(B|0,4,0,0)|0|0,(C|0)>0):0){ea(a+70|0,C|0,2,0);y=b+472|0;jw(d|0,da(y|0,4,0,0)|0|0,C<<16>>14|0)|0;ew(da(y|0,4,0,0)|0|0,0,(da(B|0,4,0,0)|0)<<2|0)|0}d=da(z|0,4,0,0)|0|0;if((d|0)!=0?(ea(z|0,d+-40|0,4,0),ea(a+28|0,A|0,4,0),(A|0)>=1):0){c=1;while(1){ea(d+((c+-1|0)*40|0)+8|0,128|0,2,0);ea(d+((c+-1|0)*40|0)+32|0,E|0,4,0);if((c|0)==(A|0))break;else c=c+1|0}}ea(F|0,(da(F|0,2,0,0)|0)&-4|(da(D>>0|0,1,0,1)|0)&3|0,2,0);ea(a+76|0,-1|0,4,0);ea(a+80|0,0|0,4,0);ea(a+86>>0|0,2|0,1,0);ea(a+40|0,-1108210269|0,4,0);ea(a+92|0,0|0,4,0);ea(a+72|0,1|0,4,0);ea(a+87>>0|0,-1|0,1,0);ea(a+104|0,0|0,4,0);z=a+144|0;ea(z|0,0|0,4,0);ea(z+4|0,0|0,4,0);i=G;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,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;h=a+20|0;g=da(h|0,4,0,0)|0|0;f=da(g+60|0,4,0,0)|0|0;ea(f|0,b|0,4,0);ea(f+4|0,c|0,4,0);f=Rd(g)|0;do if((f|0)!=100){e=da(h|0,4,0,0)|0|0;if(e){f=ld(e)|0;ea(h|0,0|0,4,0);e=da(a+24|0,4,0,0)|0|0;if(!f){f=k;ea(f|0,b|0,4,0);ea(f+4|0,c|0,4,0);f=1;e=th(e,41432,k)|0;break}else{ea(k|0,Re(e)|0|0,4,0);e=th(e,10344,k)|0;break}}else e=0}else{f=da(da(g+56|0,4,0,0)|0|0,4,0,0)|0|0;e=da(a+12|0,4,0,0)|0|0;g=da(f+(e<<2)+84|0,4,0,0)|0|0;if(g>>>0>=12){ea(a+8|0,da(f+((da(f+20|0,2,0,0)|0|0)+e<<2)+84|0,4,0,0)|0|0,4,0);ea(a+4|0,(g+-12|0)>>>1|0,4,0);f=da(f|0,4,0,0)|0|0;ea(a+16|0,f|0,4,0);f=f+72|0;ea(f>>0|0,da(f>>0|0,1,0,1)|0|16|0,1,0);f=0;e=0;break}f=da(a+24|0,4,0,0)|0|0;if(!g)e=20352;else e=(g|0)==7?20336:20320;ea(k|0,e|0,4,0);e=th(f,41400,k)|0;ld(da(h|0,4,0,0)|0|0)|0;ea(h|0,0|0,4,0);f=1}while(0);ea(d|0,e|0,4,0);i=l;return f|0}function Bh(a){a=a|0;var b=0;if(a){b=da(a|0,4,0,0)|0|0;lg(b,da(a+112|0,4,0,0)|0|0);Mk(b,da(a+316|0,4,0,0)|0|0)}return}function Ch(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=da(a+73>>0|0,1,0,0)|0|0;do if(!(f<<24>>24))e=4;else{if((f&255)>2?(e=Jn(a)|0,(e|0)!=0):0)break;e=Km(a,b,c,d,0)|0}while(0);return e|0}function Dh(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,k=0,l=0,m=0,n=0,o=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;if(!a){ea(g|0,77646|0,4,0);ea(g+4|0,10788|0,4,0);ad(21,13648,g);d=21}else{h=da(a+24|0,4,0,0)|0|0;g=a+20|0;f=da(g|0,4,0,0)|0|0;do if((d|c|0)>=0?(m=iw(d|0,((d|0)<0)<<31>>31|0,c|0,((c|0)<0)<<31>>31|0)|0,o=C,l=da(a+4|0,4,0,0)|0|0,n=((l|0)<0)<<31>>31,!((o|0)>(n|0)|(o|0)==(n|0)&m>>>0>l>>>0)):0)if(f){d=oc[(fa(e|0,31|0)|0)&31](da(a+16|0,4,0,0)|0|0,(da(a+8|0,4,0,0)|0|0)+d|0,c,b)|0;if((d|0)==4){Mg(f)|0;ea(g|0,0|0,4,0);d=4;break}else{ea(f+80|0,d|0,4,0);break}}else d=4;else d=1;while(0);ea(h+52|0,d|0,4,0);f=da(h+236|0,4,0,0)|0|0;do if(f){g=f+8|0;if(!((da(g|0,2,0,0)|0)&9312)){ea(g|0,1|0,2,0);break}else{ug(f);break}}while(0);d=Ng(h,d)|0}i=k;return d|0}function Eh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=a+73|0;e=da(f>>0|0,1,0,0)|0|0;if((e&255)>2){e=Jn(a)|0;if(!e){e=da(f>>0|0,1,0,0)|0|0;g=4}}else g=4;if((g|0)==4)if(e<<24>>24==1){Kn(da(a+4|0,4,0,0)|0|0,da(a+60|0,4,0,0)|0|0,a)|0;if(!((da(a+72>>0|0,1,0,0)|0)&1))e=8;else e=Km(a,b,c,d,1)|0}else e=4;return e|0}function Fh(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();t=v+4|0;u=v;ea(t|0,a|0,4,0);ea(u|0,b|0,4,0);o=da(c+1>>0|0,1,0,1)|0|0;p=da(c>>0|0,1,0,1)|0|0;s=da(c+3>>0|0,1,0,0)|0|0;r=(d|0)!=0;if(r)q=d;else q=da(c+2>>0|0,1,0,1)|0|0;l=s<<24>>24!=0;h=0;a:while(1){while(1){f=Ln(t)|0;if(!f){n=60;break a}if((f|0)==(p|0)){n=7;break a}if((f|0)!=(q|0))break;if(r){n=40;break}b=Ln(u)|0;if(!b){e=0;break a}g=Ln(t)|0;if((g|0)==94){g=Ln(t)|0;e=1}else e=0;if((g|0)==93){g=Ln(t)|0;k=(b|0)==93&1}else k=0;f=(g|0)==0;if((g|0)!=93&(f^1)){f=0;while(1){if(((g|0)==45?(m=da((da(t|0,4,0,0)|0)>>0|0,1,0,0)|0|0,m<<24>>24!=93):0)?m<<24>>24!=0&(f|0)!=0:0){g=b>>>0>>0|b>>>0>(Ln(t)|0)>>>0;a=0;k=g?k:1}else{a=g;k=(b|0)==(g|0)?1:k}g=Ln(t)|0;f=(g|0)==0;if(!((g|0)!=93&(f^1))){g=f;break}else f=a}}else g=f;if(g|(k|0)==(e|0)){e=0;break a}}if((n|0)==40){n=0;f=Ln(t)|0;if(!f){e=0;break}h=da(t|0,4,0,0)|0|0}g=Ln(u)|0;if((f|0)==(g|0))continue;if(l&f>>>0<128&g>>>0<128?(da(9328+(f&255)>>0|0,1,0,0)|0|0)==(da(9328+(g&255)>>0|0,1,0,0)|0|0):0)continue;if((f|0)!=(o|0)){e=0;break}if(!((g|0)!=0?(da(t|0,4,0,0)|0|0)!=(h|0):0)){e=0;break}}b:do if((n|0)==7){b=Ln(t)|0;a=(b|0)==(o|0);if((b|0)==(p|0)|a)do{if(a?(Ln(u)|0)==0:0){e=0;break b}b=Ln(t)|0;a=(b|0)==(o|0)}while((b|0)==(p|0)|a);if(b){do if((b|0)==(q|0)){if(r){b=Ln(t)|0;if(!b){e=0;break b}else break}e=da(u|0,4,0,0)|0|0;c:do if(!(da(e>>0|0,1,0,0)|0))e=0;else{a=da(t|0,4,0,0)|0|0;while(1){if(Fh(a+-1|0,e,c,0)|0)break;b=e+1|0;ea(u|0,b|0,4,0);if((da(e>>0|0,1,0,1)|0|0)>191?((da(b>>0|0,1,0,0)|0)&-64)<<24>>24==-128:0){while(1){e=e+2|0;if(((da(e>>0|0,1,0,0)|0)&-64)<<24>>24==-128){n=b;b=e;e=n}else break}ea(u|0,e|0,4,0)}else e=b;if(!(da(e>>0|0,1,0,0)|0)){e=0;break c}}e=(da(e>>0|0,1,0,0)|0|0)!=0}while(0);e=e&1;break b}while(0);if(b>>>0>=129){e=Ln(u)|0;if(!e){e=0;break}a=da(t|0,4,0,0)|0|0;while(1){if((e|0)==(b|0)?(Fh(a,da(u|0,4,0,0)|0|0,c,d)|0)!=0:0){e=1;break b}e=Ln(u)|0;if(!e){e=0;break b}}}if(!(s<<24>>24)){k=b;h=b}else{h=b&255;k=da(9328+h>>0|0,1,0,1)|0|0;h=((da(10368+h>>0|0,1,0,1)|0|-33)^32)&b}a=da(u|0,4,0,0)|0|0;e=a+1|0;ea(u|0,e|0,4,0);b=da(a>>0|0,1,0,0)|0|0;if(!(b<<24>>24))e=0;else{g=da(t|0,4,0,0)|0|0;f=b&255;while(1){if((f|0)==(k|0)|(f|0)==(h|0)?(Fh(g,e,c,d)|0)!=0:0){e=1;break b}b=a+2|0;ea(u|0,b|0,4,0);a=da(e>>0|0,1,0,0)|0|0;if(!(a<<24>>24)){e=0;break}else{n=e;f=a&255;e=b;a=n}}}}else e=1}else if((n|0)==60)e=(da((da(u|0,4,0,0)|0)>>0|0,1,0,0)|0|0)==0&1;while(0);i=v;return e|0}function Gh(a){a=a|0;var b=0,c=0;c=i;i=i+16|0;if((i|0)>=(j|0))ba();b=c;do if(a){a=da(a+76|0,4,0,0)|0|0;if((a|0)==-1607883113){a=1;break}else if((a|0)==1266094736|(a|0)==-264537850){ea(b|0,41352|0,4,0);ad(21,15256,b);a=0;break}else{ea(b|0,15248|0,4,0);ad(21,15256,b);a=0;break}}else{ea(b|0,20304|0,4,0);ad(21,15256,b);a=0}while(0);i=c;return a|0}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;var g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();g=l;h=l+8|0;ea(h|0,0|0,4,0);ea(e|0,0|0,4,0);if((Gh(a)|0)==0|(b|0)==0){ea(g|0,106003|0,4,0);ea(g+4|0,10788|0,4,0);ad(21,13648,g);d=21}else{a:do if((c|0)>-1)if((c|0)>0){g=0;do{if((da(b+g>>0|0,1,0,0)|0|0)==0?(da(b+(g|1)>>0|0,1,0,0)|0|0)==0:0)break a;g=g+2|0}while((g|0)<(c|0))}else g=0;else g=c;while(0);k=Qh(a,b,g)|0;if(k){d=hh(a,k,-1,d,0,e,h)|0;g=da(h|0,4,0,0)|0|0;if((g|0)!=0&(f|0)!=0){e=Mn(k,g-k|0)|0;if((e|0)>0){c=0;g=b;do{g=((da(g+1>>0|0,1,0,0)|0)&-8)<<24>>24==-40?g+4|0:g+2|0;c=c+1|0}while((c|0)!=(e|0))}else g=b;ea(f|0,b+(g-b)|0,4,0)}}else d=0;lg(a,k);d=Ng(a,d)|0}i=l;return d|0}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,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();m=p;n=a+12|0;f=da(n|0,4,0,0)|0|0;l=(c|0)!=0;e=b<<((f|0)==0&l&1);o=a+20|0;h=a+8|0;g=da(h|0,4,0,0)|0|0;if((e+(da(o|0,4,0,0)|0|0)|0)>>>0>g>>>0){e=e+(g<<1)|0;ea(h|0,e|0,4,0);f=da(a|0,4,0,0)|0|0;if((Kc()|0)==0?(k=qg(f,e<<2,0)|0,(k|0)!=0):0){ea(a|0,k|0,4,0);f=da(n|0,4,0,0)|0|0;k=5}else k=21}else k=5;a:do if((k|0)==5){e=a+16|0;if(!f){ea(e|0,b|0,4,0);if((b|0)>0){e=0;do{ea(m|0,da(d+(e<<2)|0,4,0,0)|0|0,4,0);f=Zc(10344,m)|0;if(!f){k=21;break a}h=da(o|0,4,0,0)|0|0;ea(o|0,h+1|0,4,0);ea((da(a|0,4,0,0)|0|0)+(h<<2)|0,f|0,4,0);e=e+1|0}while((e|0)<(b|0))}}else if((da(e|0,4,0,0)|0|0)!=(b|0)){e=a+4|0;Vc(da(e|0,4,0,0)|0|0);ea(e|0,Zc(40912,m)|0|0,4,0);ea(a+24|0,1|0,4,0);e=1;break}if(l){if((b|0)>0){h=0;do{g=c+(h<<2)|0;e=da(g|0,4,0,0)|0|0;if(!e)e=0;else{f=e;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;f=(f-e&1073741823)+1|0;e=Sc(f)|0;if(!e){k=21;break a}jw(e|0,da(g|0,4,0,0)|0|0,f|0)|0}m=da(o|0,4,0,0)|0|0;ea(o|0,m+1|0,4,0);ea((da(a|0,4,0,0)|0|0)+(m<<2)|0,e|0,4,0);h=h+1|0}while((h|0)<(b|0))}ea(n|0,(da(n|0,4,0,0)|0|0)+1|0,4,0);e=0}else e=0}while(0);if((k|0)==21){ea(a+24|0,7|0,4,0);e=1}i=p;return e|0}function Jh(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,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();k=m;if(!b)g=0;else{f=b;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;g=f-b&1073741823}h=a+308|0;f=an(h,b,k)|0;if((f|0)!=0?(da(f+8|0,4,0,0)|0|0)!=0:0){ea(k|0,114188|0,4,0);ea(k+4|0,10788|0,4,0);ad(21,13648,k);f=21}else{f=lh(a,g+17|0,0)|0;if((f|0)!=0?(l=f+16|0,jw(l|0,b|0,g+1|0)|0,ea(f+4|0,l|0,4,0),ea(f|0,c|0,4,0),ea(f+8|0,d|0,4,0),ea(f+12|0,e|0,4,0),l=Hk(h,l,f)|0,(l|0)!=0):0){ea(a+65>>0|0,1|0,1,0);lg(a,l);f=0}else f=0}f=Ng(a,f)|0;if((f|0)!=0&(e|0)!=0)bc[(fa(e|0,31|0)|0)&31](d);i=m;return f|0}function Kh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;y=i;i=i+16|0;if((i|0)>=(j|0))ba();v=y;l=y+8|0;w=da(a|0,4,0,0)|0|0;h=da(w+92|0,4,0,0)|0|0;if(!(da(w+148|0,4,0,0)|0))ea(w+240|0,0|0,4,0);x=a+12|0;ea(x|0,0|0,4,0);n=a+480|0;ea(n|0,b|0,4,0);r=pg(1612,0)|0;if(r){ea(r|0,-1|0,4,0);o=w+250|0;p=da(o>>0|0,1,0,0)|0|0;if(da(w+276|0,4,0,0)|0)ea(o>>0|0,1|0,1,0);q=w+65|0;m=a+504|0;d=a+508|0;k=w+240|0;g=0;f=-1;a:while(1){while(1){if(da(q>>0|0,1,0,0)|0){t=19;break a}e=b+g|0;if(!(da(e>>0|0,1,0,0)|0)){t=19;break a}ea(m|0,e|0,4,0);e=Bn(e,l)|0;ea(d|0,e|0,4,0);g=e+g|0;if((g|0)>(h|0)){t=12;break a}e=da(l|0,4,0,0)|0|0;if((e|0)==150){t=16;break a}else if((e|0)==1){f=e;t=17;break}else if((e|0)!=151){f=e;break}if(da(k|0,4,0,0)|0){t=15;break a}}if((t|0)==17){t=0;ea(n|0,b+g|0,4,0)};ea(v+0|0,da(m+0|0,4,0,0)|0|0,4,0);ea(v+4|0,da(m+4|0,4,0,0)|0|0,4,0);Nn(r,f,v,a);f=da(l|0,4,0,0)|0|0;if(da(x|0,4,0,0)|0){t=19;break}}if((t|0)==12){ea(x|0,18|0,4,0);t=19}else if((t|0)==15){sh(a,20384,v);ea(x|0,9|0,4,0);t=19}else if((t|0)==16){lg(w,da(c|0,4,0,0)|0|0);ea(v|0,m|0,4,0);ea(c|0,th(w,20400,v)|0|0,4,0);d=1}if((t|0)==19){g=b+g|0;if((da(g>>0|0,1,0,0)|0|0)==0?(da(x|0,4,0,0)|0|0)==0:0){if((f|0)!=1){ea(v+0|0,da(m+0|0,4,0,0)|0|0,4,0);ea(v+4|0,da(m+4|0,4,0,0)|0|0,4,0);Nn(r,1,v,a);ea(n|0,g|0,4,0)};ea(v+0|0,da(m+0|0,4,0,0)|0|0,4,0);ea(v+4|0,da(m+4|0,4,0,0)|0|0,4,0);Nn(r,0,v,a);d=0}else d=0}if((da(r|0,4,0,0)|0|0)>-1)do On(r);while((da(r|0,4,0,0)|0|0)>-1);Vc(r);ea(o>>0|0,p|0,1,0);if(!(da(q>>0|0,1,0,0)|0)){f=da(x|0,4,0,0)|0|0;if(!((f|0)==101|(f|0)==0)){s=f;t=29}}else{ea(x|0,7|0,4,0);s=7;t=29}if((t|0)==29?(u=a+4|0,(da(u|0,4,0,0)|0|0)==0):0){if((s|0)!=516){f=s&255;if(f>>>0>26|(f|0)==2)f=16328;else f=da(15488+(f<<2)|0,4,0,0)|0|0}else f=16344;ea(v|0,f|0,4,0);ch(u,w,10344,v)}f=a+4|0;e=da(f|0,4,0,0)|0|0;if(e){ea(c|0,e|0,4,0);c=da(x|0,4,0,0)|0|0;ea(v|0,e|0,4,0);ad(c,10344,v);ea(f|0,0|0,4,0);d=d+1|0}f=a+8|0;e=da(f|0,4,0,0)|0|0;if(((e|0)!=0?(da(a+64|0,4,0,0)|0|0)>0:0)?(da(a+18>>0|0,1,0,0)|0|0)==0:0){Ol(e);ea(f|0,0|0,4,0)}if(!(da(a+18>>0|0,1,0,0)|0)){c=a+400|0;lg(w,da(c|0,4,0,0)|0|0);ea(c|0,0|0,4,0);ea(a+396|0,0|0,4,0)}Vc(da(a+520|0,4,0,0)|0|0);if(!(da(a+451>>0|0,1,0,0)|0))jg(w,da(a+484|0,4,0,0)|0|0);if(da(a+449>>0|0,1,0,0)|0)Pn(w,da(a+532|0,4,0,0)|0|0);ig(w,da(a+488|0,4,0,0)|0|0);f=da(a+444|0,4,0,0)|0|0;g=a+472|0;e=da(g|0,4,0,0)|0|0;if((f|0)>0)do{f=f+-1|0;lg(w,da(e+(f<<2)|0,4,0,0)|0|0);e=da(g|0,4,0,0)|0|0}while((f|0)>0);lg(w,e);f=a+404|0;e=da(f|0,4,0,0)|0|0;if(e)do{ea(f|0,da(e|0,4,0,0)|0|0,4,0);lg(w,e);e=da(f|0,4,0,0)|0|0}while((e|0)!=0);f=a+524|0;e=da(f|0,4,0,0)|0|0;if(e)do{ea(f|0,da(e+72|0,4,0,0)|0|0,4,0);jg(w,e);e=da(f|0,4,0,0)|0|0}while((e|0)!=0);if((d|0)>0?(da(x|0,4,0,0)|0|0)==0:0)ea(x|0,1|0,4,0)}else{ea(w+65>>0|0,1|0,1,0);d=7}i=y;return d|0}function Lh(a){a=a|0;if(a){if(!(((da(a+8|0,2,0,0)|0)&9312)==0?(da(a+24|0,4,0,0)|0|0)==0:0))Pg(a);lg(da(a+32|0,4,0,0)|0|0,a)}return}function Mh(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,k=0;if(!(da(a+252|0,4,0,0)|0)){k=a+251|0;if(da(k>>0|0,1,0,0)|0)Vc(da(a+276|0,4,0,0)|0|0);g=c&-8;e=(g|0)<5?0:g;f=(d|0)<0?0:d;if(!((e|0)==0|(f|0)==0))if(!b){c=da(3164*4|0,4,0,0)|0|0;if(c)mc[(fa(c|0,3|0)|0)&3]();c=_(e,f)|0;c=pg(c,((c|0)<0)<<31>>31)|0;d=da(3166*4|0,4,0,0)|0|0;if(d)mc[(fa(d|0,3|0)|0)&3]();if(!c)c=0;else f=(kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](c)|0)/(g|0)|0}else c=b;else{e=0;c=0}d=a+276|0;ea(d|0,c|0,4,0);j=a+272|0;ea(j|0,0|0,4,0);ea(a+248|0,e|0,2,0);if(!c){ea(d|0,a|0,4,0);ea(a+280|0,a|0,4,0);ea(a+250>>0|0,0|0,1,0);c=0}else{if((f|0)>0){d=_(e,f)|0;i=c+(_(e,f+-1|0)|0)|0;h=0;g=c;while(1){f=f+-1|0;ea(g|0,h|0,4,0);if((f|0)<=0)break;else{h=g;g=g+e|0}}ea(j|0,i|0,4,0);c=c+d|0}ea(a+280|0,c|0,4,0);ea(a+250>>0|0,1|0,1,0);c=(b|0)==0&1}ea(k>>0|0,c|0,1,0);c=0}else c=5;return c|0}function Nh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;do if(!a)c=0;else{h=a+76|0;l=da(h|0,4,0,0)|0|0;if(!((l|0)==1266094736|(l|0)==-1607883113|(l|0)==-264537850)){ea(n|0,15248|0,4,0);ad(21,15256,n);ea(n|0,128509|0,4,0);ea(n+4|0,10788|0,4,0);ad(21,13648,n);c=21;break}k=a+20|0;c=da(k|0,4,0,0)|0|0;a:do if((c|0)>0){l=a+16|0;d=da(l|0,4,0,0)|0|0;f=0;do{e=da(d+(f<<4)+4|0,4,0,0)|0|0;if(e)ea((da(e+4|0,4,0,0)|0|0)+4|0,da(e|0,4,0,0)|0|0,4,0);f=f+1|0}while((f|0)!=(c|0));g=0;while(1){c=da(d+(g<<4)+12|0,4,0,0)|0|0;if((c|0)!=0?(m=da(c+16|0,4,0,0)|0|0,(m|0)!=0):0){c=m;do{d=da(c+8|0,4,0,0)|0|0;b:do if((da(d+44>>0|0,1,0,0)|0)&16){e=d+60|0;while(1){d=da(e|0,4,0,0)|0|0;if(!d)break b;f=d+24|0;if((da(d|0,4,0,0)|0|0)==(a|0))break;else e=f}ea(e|0,da(f|0,4,0,0)|0|0,4,0);zn(d)}while(0);c=da(c|0,4,0,0)|0|0}while((c|0)!=0)}c=g+1|0;if((c|0)>=(da(k|0,4,0,0)|0|0))break a;d=da(l|0,4,0,0)|0|0;g=c}}while(0);ql(a);Qn(a,68);if((b|0)==0?(Il(a)|0)!=0:0){tg(a,5,16368,n);c=5;break}ea(h|0,1691352191|0,4,0);Lg(a);c=0}while(0);i=o;return c|0}function Oh(a,b){a=a|0;b=b|0;if(((b*1e3|0)+1e3|0)>(da(a+492|0,4,0,0)|0|0))b=0;else{b=da(a|0,4,0,0)|0|0;qc[(fa(da(b+60|0,4,0,0)|0|0,127|0)|0)&127](b,1e6)|0;b=1}return b|0}function Ph(a,b,c,d,e,f,g,h,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();q=s;do if(b){n=(f|0)!=0;l=(h|0)!=0;if(n)if(l|(g|0)!=0){r=8;break}else{l=0;m=0}else{m=(g|0)!=0;if(!(m|l^1)){r=8;break}}if(!(m&((n|l)^1)|(c|0)<-1|(c|0)>127)){l=b;while(1)if(!(da(l>>0|0,1,0,0)|0))break;else l=l+1|0;o=l-b&1073741823;if(o>>>0<=255){p=d&2048;l=d&7;if((l|0)!=4){if((l|0)==5){l=Ph(a,b,c,p|1,e,f,g,h,k)|0;if(l)break;l=Ph(a,b,c,p|2,e,f,g,h,k)|0;if(!l)l=3;else break}}else l=2;n=l&255;m=Rh(a,b,o,c,n,0)|0;if(((m|0)!=0?((da(m+2|0,2,0,1)|0)&3|0)==(l|0):0)?(da(m|0,2,0,0)|0|0)==(c|0):0){if(da(a+148|0,4,0,0)|0){tg(a,5,15424,q);l=5;break}l=da(a+4|0,4,0,0)|0|0;if(l)do{q=l+88|0;ea(q|0,da(q|0,2,0,0)|0|8|0,2,0);l=da(l+52|0,4,0,0)|0|0}while((l|0)!=0)}l=Rh(a,b,o,c,n,1)|0;if(!l)l=7;else{Ml(a,l);if(k)ea(k|0,(da(k|0,4,0,0)|0|0)+1|0,4,0);ea(l+32|0,k|0,4,0);a=l+2|0;ea(a|0,(da(a|0,2,0,1)|0)&3|p|0,2,0);ea(l+12|0,f|0,4,0);ea(l+16|0,g|0,4,0);ea(l+20|0,h|0,4,0);ea(l+4|0,e|0,4,0);ea(l|0,c|0,2,0);l=0}}else r=8}else r=8}else r=8;while(0);if((r|0)==8){ea(q|0,129075|0,4,0);ea(q+4|0,10788|0,4,0);ad(21,13648,q);l=21}i=s;return l|0}function Qh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+48|0;if((i|0)>=(j|0))ba();f=g;d=f+0|0;e=d+40|0;do{ea(d|0,0|0,4,0);d=d+4|0}while((d|0)<(e|0));ea(f+32|0,a|0,4,0);Wg(f,b,c,2,0)|0;c=f+8|0;b=da(c|0,4,0,0)|0|0;if(!((b&2|0)==0|(b&16711680|0)==65536))An(f,1)|0;if(!(da(a+65>>0|0,1,0,0)|0))c=da(f+16|0,4,0,0)|0|0;else{if(!(((da(c|0,2,0,0)|0)&9312)==0?(da(f+24|0,4,0,0)|0|0)==0:0))Pg(f);ea(f+16|0,0|0,4,0);c=0}i=g;return c|0}function Rh(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,k=0,l=0,m=0;j=((da(9328+(da(b>>0|0,1,0,1)|0|0)>>0|0,1,0,1)|0|0)+c|0)%23|0;k=a+336|0;h=Qk(k,j,b,c)|0;if(!h){i=0;g=0}else{i=0;g=0;do{m=Rn(h,d,e)|0;l=(m|0)>(i|0);i=l?m:i;g=l?h:g;h=da(h+8|0,4,0,0)|0|0}while((h|0)!=0)}do if(!(f<<24>>24)){if((g|0)!=0?((da(a+24|0,4,0,0)|0)&2097152|0)==0:0){h=0;j=12;break}h=Qk(10840,j,b,c)|0;if(!h){i=0;j=8}else{i=0;do{l=Rn(h,d,e)|0;j=(l|0)>(i|0);i=j?l:i;g=j?h:g;h=da(h+8|0,4,0,0)|0|0}while((h|0)!=0);j=8}}else j=8;while(0);do if((j|0)==8){h=f<<24>>24!=0;if(h&(i|0)<6){h=c+37|0;g=lh(a,h,0)|0;if(!g){j=14;break}ew(g|0,0,h|0)|0;h=g+36|0;ea(g+24|0,h|0,4,0);ea(g|0,d|0,2,0);ea(g+2|0,e&255|0,2,0);jw(h|0,b|0,c|0)|0;ea(g+(c+36)>>0|0,0|0,1,0);mg(k,g);h=1}if(!g)j=14;else j=12}while(0);if((j|0)==12)if((da(g+16|0,4,0,0)|0|0)==0?!((da(g+12|0,4,0,0)|0|0)!=0|h):0)j=14;if((j|0)==14)g=0;return g|0}function Sh(a,b,c){a=a|0;b=b|0;c=c|0;b=i;i=i+16|0;if((i|0)>=(j|0))ba();c=b;ea(c|0,da((da(a+4|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,4,0);c=Zc(15304,c)|0;ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,c,-1,1,-1)|0;Vc(c);i=b;return}function Th(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)<=(d|0)){d=da(3164*4|0,4,0,0)|0|0;if(d)mc[(fa(d|0,3|0)|0)&3]();Jf(b,c,0,0,0)|0;d=da(3166*4|0,4,0,0)|0|0;if(d)mc[(fa(d|0,3|0)|0)&3]()}return 0}function Uh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;a:do if(b){c=b;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;e=c-b&1073741823;d=da(a+20|0,4,0,0)|0|0;c=d+-1|0;if((d|0)>0){f=c;d=(da(a+16|0,4,0,0)|0|0)+(c<<4)|0;while(1){a=da(d|0,4,0,0)|0|0;if(!a)c=0;else{c=a;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;c=c-a&1073741823}if((e|0)==(c|0)?(cd(a,b)|0)==0:0){c=f;break a}c=f+-1|0;if((f|0)>0){f=c;d=d+-16|0}else break}}}else c=-1;while(0);return c|0}function Vh(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,k=0,l=0,m=0,n=0,o=0;n=a+20|0;f=da(n|0,4,0,0)|0|0;if((f|0)>0){o=(b|0)==10;l=a+16|0;m=(c|0)==0;j=d;a=f;d=0;k=0;while(1){if((k|0)==(b|0)|o){g=da((da(l|0,4,0,0)|0|0)+(k<<4)+4|0,4,0,0)|0|0;if(g){f=da(g+4|0,4,0,0)|0|0;ea(f+4|0,da(g|0,4,0,0)|0|0,4,0);if(!(da(f+20>>0|0,1,0,0)|0)){g=da(f|0,4,0,0)|0|0;h=da(g+208|0,4,0,0)|0|0;if(!h)h=0;else{if(m)f=0;else f=da(g+176|0,4,0,0)|0|0;h=Sn(h,c,f,da(g+180|0,4,0,0)|0|0,da(g+9>>0|0,1,0,1)|0|0,da(g+152|0,4,0,0)|0|0,da(g+200|0,4,0,0)|0|0,j,e)|0;a=da(n|0,4,0,0)|0|0}}else h=6}else h=0;e=(h|0)==5;i=0;g=0;f=a;d=e?1:d;e=e?0:h}else{i=e;g=j;f=a;e=0}k=k+1|0;a=(e|0)==0;if(!((k|0)<(f|0)&a))break;else{j=g;e=i;a=f}}}else{a=1;d=0;e=0}return (a&(d|0)!=0?5:e)|0}function Wh(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+32|0;if((i|0)>=(j|0))ba();p=t;q=t+20|0;l=t+16|0;k=t+12|0;h=t+8|0;ea(l|0,c|0,4,0);ea(k|0,0|0,4,0);ea(h|0,0|0,4,0);ea(b|0,0|0,4,0);e=Kc()|0;do if(!e){if(!(1<<(c&7)&70)){ea(p|0,130207|0,4,0);ea(p+4|0,10788|0,4,0);ad(21,13648,p);e=21;break}if((da(2187*4|0,4,0,0)|0|0)!=0&(c&32768|0)==0)g=(c&65536|0)==0?da(2188*4|0,4,0,0)|0|0:1;else g=0;if(!(c&262144)){if(da(2241*4|0,4,0,0)|0){c=c|131072;ea(l|0,c|0,4,0)}}else{c=c&-131073;ea(l|0,c|0,4,0)}c=c&-655129;ea(l|0,c|0,4,0);s=pg(528,0)|0;a:do if(s){ew(s|0,0,528)|0;if(g)ea(s+12|0,8|0,4,0);ea(s+56|0,255|0,4,0);ea(s+20|0,2|0,4,0);m=s+76|0;ea(m|0,-264537850|0,4,0);n=s+16|0;ea(n|0,s+456|0,4,0);f=s+88|0;g=11088;e=f+44|0;do{ea(f|0,da(g|0,4,0,0)|0|0,4,0);f=f+4|0;g=g+4|0}while((f|0)<(e|0));ea(s+132|0,0|0,4,0);ea(s+63>>0|0,1|0,1,0);ea(s+67>>0|0,-1|0,1,0);f=8920;g=da(f+4|0,4,0,0)|0|0;o=s+40|0;ea(o|0,da(f|0,4,0,0)|0|0,4,0);ea(o+4|0,g|0,4,0);ea(s+72|0,0|0,4,0);ea(s+136|0,2147483647|0,4,0);ea(s+24|0,9437264|0,4,0);g=s+428|0;ea(g+0|0,0|0,4,0);ea(g+4|0,0|0,4,0);ea(g+8|0,0|0,4,0);ea(g+12|0,0|0,4,0);o=s+308|0;ea(o+0|0,0|0,4,0);ea(o+4|0,0|0,4,0);ea(o+8|0,0|0,4,0);ea(o+12|0,0|0,4,0);Xh(s,11152,1,0,21,0)|0;Xh(s,11152,3,0,21,0)|0;Xh(s,11152,2,0,21,0)|0;Xh(s,13752,1,0,22,0)|0;Xh(s,13760,1,1,21,0)|0;o=s+65|0;if(!(da(o>>0|0,1,0,0)|0)){g=an(g,11152,p)|0;if(!g)g=0;else g=da(g+8|0,4,0,0)|0|0;ea(s+8|0,g|0,4,0);ea(s+48|0,c|0,4,0);g=Vn(d,a,l,s,k,h)|0;if(!g){a=da(k|0,4,0,0)|0|0;e=ym(da(s|0,4,0,0)|0|0,a,s,(da(n|0,4,0,0)|0|0)+4|0,0,da(l|0,4,0,0)|0|256)|0;if((e|0)==3082)e=7;else if(!e){c=da((da(n|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;ea((da(c+4|0,4,0,0)|0|0)+4|0,da(c|0,4,0,0)|0|0,4,0);c=Wn(s,c)|0;ea((da(n|0,4,0,0)|0|0)+12|0,c|0,4,0);if(!(da(o>>0|0,1,0,0)|0))ea(s+62>>0|0,da(c+77>>0|0,1,0,0)|0|0|0,1,0);c=pg(84,0)|0;if(!c){ea(o>>0|0,1|0,1,0);c=0}else{f=c+0|0;e=f+84|0;do{ea(f>>0|0,0|0,1,0);f=f+1|0}while((f|0)<(e|0));g=c+77|0;f=c+8|0;e=f+64|0;do{ea(f|0,0|0,4,0);f=f+4|0}while((f|0)<(e|0));ea(g>>0|0,1|0,1,0)}l=da(n|0,4,0,0)|0|0;ea(l+28|0,c|0,4,0);ea(l|0,13768|0,4,0);ea(l+8>>0|0,3|0,1,0);ea(l+16|0,10728|0,4,0);ea(l+24>>0|0,1|0,1,0);ea(m|0,-1607883113|0,4,0);if(da(o>>0|0,1,0,0)|0){e=s;break}f=s+52|0;ea(f|0,0|0,4,0);g=s+236|0;c=da(g|0,4,0,0)|0|0;do if(c){e=c+8|0;if(!((da(e|0,2,0,0)|0)&9312)){ea(e|0,1|0,2,0);break}else{ug(c);break}}while(0);if((Bf(s,14632,2)|0)==7)ea(o>>0|0,1|0,1,0);c=Mf(s)|0;do if(!c){c=da(2656*4|0,4,0,0)|0|0;if(c){b:do if((c|0)>0){f=0;while(1){c=da((da(2658*4|0,4,0,0)|0|0)+(f<<2)|0,4,0,0)|0|0;ea(q|0,0|0,4,0);if(c){e=$b[(fa(c|0,63|0)|0)&63](s,q,13776)|0;c=da(q|0,4,0,0)|0|0;if(e)break}else c=0;Vc(c);f=f+1|0;if((f|0)>=(da(2656*4|0,4,0,0)|0|0)){r=40;break b}}ea(p|0,c|0,4,0);tg(s,e,14592,p);e=da(q|0,4,0,0)|0|0}else r=40;while(0);if((r|0)==40){ea(q|0,0|0,4,0);e=0}Vc(e)}if(Mf(s)|0){e=s;break a}}else{ea(f|0,c|0,4,0);e=da(g|0,4,0,0)|0|0;if(e){c=e+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(c|0,1|0,2,0);break}else{ug(e);break}}}while(0);Mh(s,0,da(2193*4|0,4,0,0)|0|0,da(2194*4|0,4,0,0)|0|0)|0;ea(s+216|0,21|0,4,0);ea(s+220|0,1e3|0,4,0);e=s;break}ea(s+52|0,e|0,4,0);c=da(s+236|0,4,0,0)|0|0;if(!c){e=s;break}e=c+8|0;if(!((da(e|0,2,0,0)|0)&9312)){ea(e|0,1|0,2,0);e=s;break}else{ug(c);e=s;break}}else if((g|0)==7)ea(o>>0|0,1|0,1,0);a=da(h|0,4,0,0)|0|0;ea(p|0,a|0,4,0);tg(s,g,(a|0)!=0?10344:0,p);Vc(a);a=da(k|0,4,0,0)|0|0;e=s}else{a=0;e=s}}else{a=0;e=0}while(0);Vc(a);c=Mf(e)|0;if((c|0)==7){Nh(e,0)|0;e=0}else if(c)ea(s+76|0,1266094736|0,4,0);ea(b|0,e|0,4,0);e=c&255}while(0);i=t;return e|0}function Xh(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,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();g=o;n=c&255;if(!(c<<24>>24==4|c<<24>>24==8))if((n+-1|0)>>>0>2){ea(g|0,129758|0,4,0);ea(g+4|0,10788|0,4,0);ad(21,13648,g);g=21}else{m=n;h=4}else{m=2;h=4}do if((h|0)==4){l=m&255;h=Xn(a,l,b,0)|0;if((h|0)!=0?(da(h+12|0,4,0,0)|0|0)!=0:0){if(da(a+148|0,4,0,0)|0){tg(a,5,13680,g);g=5;break}c=da(a+4|0,4,0,0)|0|0;if(c)do{k=c+88|0;ea(k|0,da(k|0,2,0,0)|0|8|0,2,0);c=da(c+52|0,4,0,0)|0|0}while((c|0)!=0);k=h+4|0;if(((da(k>>0|0,1,0,1)|0)&247|0)==(m|0)){c=an(a+428|0,b,g)|0;if(!c)h=0;else h=da(c+8|0,4,0,0)|0|0;g=0;do{if((da(h+(g*20|0)+4>>0|0,1,0,0)|0|0)==(da(k>>0|0,1,0,0)|0|0)){c=da(h+(g*20|0)+16|0,4,0,0)|0|0;if(c)bc[(fa(c|0,31|0)|0)&31](da(h+(g*20|0)+8|0,4,0,0)|0|0);ea(h+(g*20|0)+12|0,0|0,4,0)}g=g+1|0}while((g|0)!=3)}}c=Xn(a,l,b,1)|0;if(c){ea(c+12|0,e|0,4,0);ea(c+8|0,d|0,4,0);ea(c+16|0,f|0,4,0);ea(c+4>>0|0,m|n&8|0,1,0);ea(a+52|0,0|0,4,0);g=da(a+236|0,4,0,0)|0|0;if(g){c=g+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(c|0,1|0,2,0);g=0;break}else{ug(g);g=0;break}}else g=0}else g=7}while(0);i=o;return g|0}function Yh(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,k=0;i=a+24|0;j=(da(i|0,4,0,0)|0)&2;k=a+145|0;ea(k>>0|0,1|0,1,0);h=a+16|0;f=da(h|0,4,0,0)|0|0;ea(a+62>>0|0,da((da(f+12|0,4,0,0)|0|0)+77>>0|0,1,0,0)|0|0|0,1,0);e=a+20|0;d=0;while(1){if((d|0)>=(da(e|0,4,0,0)|0|0)){d=f;f=6;break}if(!((d|0)==1?1:((da((da(f+(d<<4)+12|0,4,0,0)|0|0)+78|0,2,0,0)|0)&1)!=0)?(c=Yn(a,d,b)|0,(c|0)!=0):0){f=9;break}f=da(h|0,4,0,0)|0|0;d=d+1|0}if((f|0)==6)if(((da((da(d+28|0,4,0,0)|0|0)+78|0,2,0,0)|0)&1)==0?(g=Yn(a,1,b)|0,(g|0)!=0):0){pl(da((da(h|0,4,0,0)|0|0)+28|0,4,0,0)|0|0);c=g}else c=0;else if((f|0)==9)um(a,d);ea(k>>0|0,0|0,1,0);if(!(c|j))ea(i|0,(da(i|0,4,0,0)|0)&-3|0,4,0);return c|0}function Zh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;h=a+20|0;a:do if((da(h|0,4,0,0)|0|0)>0){k=(c|0)==0;f=a+16|0;g=0;a=0;do{e=(g|0)<2^g;d=da(f|0,4,0,0)|0|0;if(!(!k?(cd(c,da(d+(e<<4)|0,4,0,0)|0|0)|0)!=0:0)){a=an((da(d+(e<<4)+12|0,4,0,0)|0|0)+8|0,b,l)|0;if(a){a=da(a+8|0,4,0,0)|0|0;if(a)break a}else a=0}g=g+1|0}while((g|0)<(da(h|0,4,0,0)|0|0))}else a=0;while(0);i=m;return a|0}function _h(a){a=a|0;if((cd(a,12936)|0)!=0?(cd(a,12944)|0)!=0:0)a=(cd(a,12952)|0)==0&1;else a=1;return a|0}function $h(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=da(a+20|0,4,0,0)|0|0;a:do if((f|0)>0){c=da(a+16|0,4,0,0)|0|0;d=(b|0)==0;e=0;while(1){a=da(c+(e<<4)+4|0,4,0,0)|0|0;if(a){if(d)break a;if(!(cd(b,da(c+(e<<4)|0,4,0,0)|0|0)|0))break a}e=e+1|0;if((e|0)>=(f|0)){a=0;break}}}else a=0;while(0);return a|0}function ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:do if(!a)b=0;else{b=b+-1|0;b:do if((da(a|0,4,0,0)|0|0)>>>0>4e3){d=a;c=b;while(1){b=d+8|0;e=da(b|0,4,0,0)|0|0;if(!e){g=a;break}b=(c>>>0)%(e>>>0)|0;c=d+12+(((c>>>0)/(e>>>0)|0)<<2)|0;a=da(c|0,4,0,0)|0|0;if(!a){a=pg(512,0)|0;if(!a){b=a;i=21;break}ew(a|0,0,512)|0;ea(a|0,e|0,4,0);ea(c|0,a|0,4,0)}if((da(a|0,4,0,0)|0|0)>>>0>4e3){d=a;c=b}else break b}if((i|0)==21){ea(c|0,b|0,4,0);b=7;break a}h=c+1|0;c=(c>>>0)%125|0;f=d+12|0;a=da(d+(c<<2)+12|0,4,0,0)|0|0;if(!a){a=da(d+4|0,4,0,0)|0|0;if(a>>>0<124){b=d;i=20}}else{do{if((a|0)==(h|0)){b=0;break a}c=c+1|0;c=c>>>0>124?0:c;a=da(d+(c<<2)+12|0,4,0,0)|0|0}while((a|0)!=0);a=da(d+4|0,4,0,0)|0|0;if(a>>>0<=61){b=d;i=20}}if((i|0)==20){ea(d+4|0,a+1|0,4,0);ea(b+(c<<2)+12|0,h|0,4,0);b=0;break a}e=pg(500,0)|0;if(!e){b=7;break a}jw(e|0,f|0,500)|0;ew(f|0,0,500)|0;ea(b|0,(((da(g|0,4,0,0)|0|0)+124|0)>>>0)/125|0|0,4,0);a=0;b=ai(d,h)|0;do{c=da(e+(a<<2)|0,4,0,0)|0|0;if(c)b=ai(d,c)|0|b;a=a+1|0}while((a|0)!=125);Vc(e);break a}while(0);a=a+12+(b>>>3)|0;ea(a>>0|0,da(a>>0|0,1,0,1)|0|0|1<<(b&7)|0,1,0);b=0}while(0);return b|0}function bi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;a:do if(a){d=b+-1|0;while(1){b=da(a+8|0,4,0,0)|0|0;if(!b)break;a=da(a+12+(((d>>>0)/(b>>>0)|0)<<2)|0,4,0,0)|0|0;if(!a)break a;else d=(d>>>0)%(b>>>0)|0}if((da(a|0,4,0,0)|0|0)>>>0<4001){a=a+12+(d>>>3)|0;ea(a>>0|0,(da(a>>0|0,1,0,1)|0|0)&(1<<(d&7)^255)|0,1,0);break}h=a+12|0;jw(c|0,h|0,500)|0;ew(h|0,0,500)|0;h=a+4|0;ea(h|0,0|0,4,0);e=d+1|0;g=0;do{f=c+(g<<2)|0;b=da(f|0,4,0,0)|0|0;if(!((b|0)==0|(b|0)==(e|0))){d=((b+-1|0)>>>0)%125|0;ea(h|0,(da(h|0,4,0,0)|0|0)+1|0,4,0);b=a+(d<<2)+12|0;if(da(b|0,4,0,0)|0)do{b=d+1|0;d=b>>>0>124?0:b;b=a+(d<<2)+12|0}while((da(b|0,4,0,0)|0|0)!=0);ea(b|0,da(f|0,4,0,0)|0|0,4,0)}g=g+1|0}while((g|0)!=125)}while(0);return}function ci(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if((a|0)!=0?(c=b+-1|0,c>>>0<(da(a|0,4,0,0)|0|0)>>>0):0){while(1){b=da(a+8|0,4,0,0)|0|0;if(!b)break;a=da(a+12+(((c>>>0)/(b>>>0)|0)<<2)|0,4,0,0)|0|0;if(!a){c=0;break a}else c=(c>>>0)%(b>>>0)|0}if((da(a|0,4,0,0)|0|0)>>>0<4001){c=((da(a+12+(c>>>3)>>0|0,1,0,1)|0|0)&1<<(c&7)|0)!=0&1;break}d=c+1|0;c=(c>>>0)%125|0;b=da(a+(c<<2)+12|0,4,0,0)|0|0;if(b)while(1){if((b|0)==(d|0)){c=1;break a}c=((c+1|0)>>>0)%125|0;b=da(a+(c<<2)+12|0,4,0,0)|0|0;if(!b){c=0;break}}else c=0}else c=0;while(0);return c|0}function di(a){a=a|0;var b=0,c=0;if(a){if(da(a+8|0,4,0,0)|0){b=a+12|0;c=0;do{di(da(b+(c<<2)|0,4,0,0)|0|0);c=c+1|0}while((c|0)!=125)}Vc(a)}return}function ei(a,b){a=a|0;b=b|0;var c=0;a:do if((b|0)>=2?(c=da(11824+(((da(9328+(da(a>>0|0,1,0,1)|0|0)>>0|0,1,0,1)|0|0)<<2^b^(da(9328+(da(a+(b+-1)>>0|0,1,0,1)|0|0)>>0|0,1,0,1)|0|0)*3|0)%127|0)>>0|0,1,0,0)|0|0,c<<24>>24!=0):0){c=c&255;while(1){c=c+-1|0;if((da(12080+c>>0|0,1,0,1)|0|0|0)==(b|0)?(Ec(11264+(da(12208+(c<<1)|0,2,0,1)|0|0)|0,a,b)|0)==0:0)break;c=da(11952+c>>0|0,1,0,0)|0|0;if(!(c<<24>>24)){c=27;break a}else c=c&255}c=da(12456+c>>0|0,1,0,1)|0|0}else c=27;while(0);return c|0}function fi(a){a=a|0;var b=0,c=0,d=0;ea(2174*4|0,a|0,4,0);if((da(2184*4|0,4,0,0)|0|0)>>>0>>0)ea(2184*4|0,a|0,4,0);c=da(2264*4|0,4,0,0)|0|0;if((c|0)==0|(da(2235*4|0,4,0,0)|0|0)<(a|0)){b=pg(a,((a|0)<0)<<31>>31)|0;if((da(2186*4|0,4,0,0)|0|0)!=0&(b|0)!=0?(d=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](b)|0,d=(da(2170*4|0,4,0,0)|0|0)+d|0,ea(2170*4|0,d|0,4,0),d>>>0>(da(2180*4|0,4,0,0)|0|0)>>>0):0)ea(2180*4|0,d|0,4,0)}else{b=da(2263*4|0,4,0,0)|0|0;ea(2263*4|0,da(b|0,4,0,0)|0|0,4,0);ea(2264*4|0,c+-1|0,4,0);a=(da(2169*4|0,4,0,0)|0|0)+1|0;ea(2169*4|0,a|0,4,0);if(a>>>0>(da(2179*4|0,4,0,0)|0|0)>>>0)ea(2179*4|0,a|0,4,0)}return b|0}function gi(a){a=a|0;var b=0;do if(a){if((da(2234*4|0,4,0,0)|0|0)>>>0<=a>>>0&(da(2262*4|0,4,0,0)|0|0)>>>0>a>>>0){ea(a|0,da(2263*4|0,4,0,0)|0|0,4,0);ea(2263*4|0,a|0,4,0);ea(2264*4|0,(da(2264*4|0,4,0,0)|0|0)+1|0,4,0);ea(2169*4|0,(da(2169*4|0,4,0,0)|0|0)+-1|0,4,0);break}if(!(da(2186*4|0,4,0,0)|0)){bc[(fa(da(8744+40|0,4,0,0)|0|0,31|0)|0)&31](a);break}else{b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](a)|0;ea(2170*4|0,(da(2170*4|0,4,0,0)|0|0)-b|0,4,0);ea(2166*4|0,(da(2166*4|0,4,0,0)|0|0)-b|0,4,0);ea(2175*4|0,(da(2175*4|0,4,0,0)|0|0)+-1|0,4,0);bc[(fa(da(8744+40|0,4,0,0)|0|0,31|0)|0)&31](a);break}}while(0);return}function hi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;d=da(a>>0|0,1,0,0)|0|0;a:do if(((d&255)+-48|0)>>>0>=10){f=d;d=a;while(1){e=d+1|0;if(!(f<<24>>24))break;f=da(e>>0|0,1,0,0)|0|0;d=e}f=d-a&1073741823;d=7-b|0;if((d|0)>0){e=0;while(1){if((da(11248+e>>0|0,1,0,1)|0|0|0)==(f|0)?(Ec(11216+(da(11240+e>>0|0,1,0,1)|0|0)|0,a,f)|0)==0:0){c=e;break}e=e+1|0;if((e|0)>=(d|0))break a}c=da(11256+c>>0|0,1,0,0)|0|0}}else{ea(e|0,0|0,4,0);Cn(a,e)|0;c=(da(e|0,4,0,0)|0)&255}while(0);i=g;return c|0}function ii(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=da(a>>0|0,1,0,0)|0|0;do if(c<<24>>24==48){d=da(a+1>>0|0,1,0,0)|0|0;if(!(d<<24>>24==88|d<<24>>24==120))if(!a){c=0;i=15;break}else{e=c;c=a;i=12;break}c=da(a+2>>0|0,1,0,0)|0|0;if(!((da(10368+(c&255)>>0|0,1,0,0)|0)&8)){e=48;c=a;i=12}else{e=2;while(1){d=e+1|0;if(c<<24>>24!=48)break;c=da(a+d>>0|0,1,0,0)|0|0;e=d}if(!((da(10368+(c&255)>>0|0,1,0,0)|0)&8)){f=a+e|0;g=0;c=0;d=e}else{g=0;f=0;d=e;while(1){g=hw(g|0,f|0,4)|0;h=C;f=c<<24>>24;g=(0-(f>>>6&1)&9)+f&15|g;d=d+1|0;f=a+d|0;c=da(f>>0|0,1,0,0)|0|0;if(!((da(10368+(c&255)>>0|0,1,0,0)|0)&8)){c=h;break}else f=h}}h=b;ea(h|0,g|0,4,0);ea(h+4|0,c|0,4,0);if(!(da(f>>0|0,1,0,0)|0))c=(d-e|0)<17;else c=0;c=c&1^1}}else{e=c;c=a;i=12}while(0);if((i|0)==12){while(1){d=c+1|0;if(!(e<<24>>24))break;e=da(d>>0|0,1,0,0)|0|0;c=d;i=12}c=c-a&1073741823;i=15}if((i|0)==15)c=Tl(a,b,c,1)|0;return c|0}function ji(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,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=i;i=i+1264|0;if((i|0)>=(j|0))ba();x=z;w=z+152|0;q=z+742|0;r=z+76|0;n=z+228|0;k=d&-256;o=d&16;v=d&8;p=d&4;h=d&1;s=d&2;if((p|0)!=0?(k|0)==524288|(k|0)==2048|(k|0)==16384:0)u=1;else u=0;t=da(12114*4|0,4,0,0)|0|0;if((t|0)!=(qb()|0)?(ea(12114*4|0,qb()|0|0,4,0),(Kc()|0)==0):0)ea(9064|0,0|0,1,0);l=c+0|0;m=l+44|0;do{ea(l|0,0|0,4,0);l=l+4|0}while((l|0)<(m|0));t=(k|0)==256;do if(t){a:do if((qc[(fa(da(47552+52|0,4,0,0)|0|0,127|0)|0)&127](b,x)|0)==0?(f=da(12178*4|0,4,0,0)|0|0,(f|0)!=0):0){k=da(x|0,4,0,0)|0|0;l=da(x+72|0,4,0,0)|0|0;while(1){if((da(f|0,4,0,0)|0|0)==(k|0)?(da(f+4|0,4,0,0)|0|0)==(l|0):0)break;f=da(f+32|0,4,0,0)|0|0;if(!f){y=18;break a}}k=f+28|0;f=da(k|0,4,0,0)|0|0;if(f){while(1){m=k;k=f+8|0;l=f;f=da(k|0,4,0,0)|0|0;if((da(l+4|0,4,0,0)|0|0)==(d|0)){k=m;break}if(!f){y=18;break a}}ea(k|0,f|0,4,0);n=da(l|0,4,0,0)|0|0;f=l}else y=18}else y=18;while(0);if((y|0)==18){f=Sc(12)|0;if(!f){f=7;break}else n=-1}ea(c+28|0,f|0,4,0);k=p<<4|s;f=(o|0)!=0;if((n|0)<0){p=f;o=f?k|131200:k;f=b;y=23}else{m=n;f=b;y=36}}else{if(!b){f=Zn(514,n)|0;if(!f)f=n;else break}else f=b;y=p<<4|s;o=(o|0)!=0;p=o;o=o?y|131200:y;y=23}while(0);b:do if((y|0)==23){if(!(d&526336)){k=(v|0)==0?0:384;n=0;m=0}else{if(!f)k=0;else{k=f;while(1)if(!(da(k>>0|0,1,0,0)|0))break;else k=k+1|0;k=k-f&1073741823}do k=k+-1|0;while((da(f+k>>0|0,1,0,0)|0|0)!=45);jw(q|0,f|0,k|0)|0;ea(q+k>>0|0,0|0,1,0);if(qc[(fa(da(47552+52|0,4,0,0)|0|0,127|0)|0)&127](q,r)|0){f=1802;break}k=(da(r+12|0,4,0,0)|0)&511;n=da(r+20|0,4,0,0)|0|0;m=da(r+24|0,4,0,0)|0|0}l=_n(f,o,k)|0;do if((l|0)<0){if(!(p|((s|0)==0|(da(Gb()|0|0,4,0,0)|0|0)==21))?(g=_n(f,o&131200,k)|0,(g|0)>=0):0){d=d&-8|1;h=1;break}ea(x|0,31186|0,4,0);ea(x+4|0,10788|0,4,0);ad(14,14848,x);f=bo(14,47896,f,31186)|0;if(!f){f=0;break b}g=c+28|0;y=70;break b}else g=l;while(0);if(!(d&526336)){m=g;y=36}else{$b[(fa(da(47552+244|0,4,0,0)|0|0,63|0)|0)&63](g,n,m)|0;m=g;y=36}}while(0);c:do if((y|0)==36){if(e)ea(e|0,d|0,4,0);n=c+28|0;g=da(n|0,4,0,0)|0|0;if(g){ea(g|0,m|0,4,0);ea(g+4|0,d|0,4,0)}if(v)kc[(fa(da(47552+196|0,4,0,0)|0|0,127|0)|0)&127](f)|0;f=v<<2;f=(h|0)==0?f:f|2;f=t?f:f|128;f=u?f|8:f;v=f|d&64;ea(c+12|0,m|0,4,0);ea(c+4|0,a|0,4,0);ea(c+32|0,b|0,4,0);g=c+18|0;ea(g|0,v&255|0,2,0);if(eg((v&64|0)!=0?b:0,48496,1)|0)ea(g|0,da(g|0,2,0,1)|0|16|0,2,0);if(!(Zv(da(a+16|0,4,0,0)|0|0,1e4)|0))ea(g|0,da(g|0,2,0,1)|0|1|0,2,0);d:do if(!(f&128)){f=qc[(fa(da(da(a+20|0,4,0,0)|0|0,4,0,0)|0|0,127|0)|0)&127](b,c)|0;if((f|0)!=48504){if((f|0)!=47472){y=64;break}g=(fw(b|0)|0)+6|0;f=Sc(g)|0;if(f){ea(x|0,b|0,4,0);$c(g,f,48584,x)|0;ea(c+24|0,f|0,4,0);ea(c+20|0,0|0,4,0);f=47472;break}ea(c+24|0,0|0,4,0);ea(c+20|0,0|0,4,0);if((m|0)<=-1){g=n;f=7;y=70;break c}$n(c,m,30794);g=n;f=7;y=70;break c}do if(!(qc[(fa(da(47552+64|0,4,0,0)|0|0,127|0)|0)&127](da(c+12|0,4,0,0)|0|0,w)|0)){f=x;ea(f|0,0|0,4,0);ea(f+4|0,0|0,4,0);ea(x|0,da(w|0,4,0,0)|0|0,4,0);ea(x+4|0,da(w+72|0,4,0,0)|0|0,4,0);f=da(12178*4|0,4,0,0)|0|0;e:do if(!f)y=53;else{while(1){if(!(Yv(x,f,8)|0))break;f=da(f+32|0,4,0,0)|0|0;if(!f){y=53;break e}}x=f+16|0;ea(x|0,(da(x|0,4,0,0)|0|0)+1|0,4,0)}while(0);if((y|0)==53){g=Sc(40)|0;if(!g){f=7;g=c+20|0;break}l=g+0|0;m=l+40|0;do{ea(l|0,0|0,4,0);l=l+4|0}while((l|0)<(m|0));f=da(x+4|0,4,0,0)|0|0;y=g;ea(y|0,da(x|0,4,0,0)|0|0,4,0);ea(y+4|0,f|0,4,0);ea(g+16|0,1|0,4,0);ea(g+32|0,da(12178*4|0,4,0,0)|0|0,4,0);ea(g+36|0,0|0,4,0);f=da(12178*4|0,4,0,0)|0|0;if(f)ea(f+36|0,g|0,4,0);ea(12178*4|0,g|0,4,0);f=g}ea(c+8|0,f|0,4,0);f=48504;y=64;break d}else{f=da(Gb()|0|0,4,0,0)|0|0;g=c+20|0;ea(g|0,f|0,4,0);f=(f|0)==75?22:10}while(0);$n(c,m,30709);ea(g|0,0|0,4,0);g=n;y=70;break c}else{f=48376;y=64}while(0);if((y|0)==64)ea(c+20|0,0|0,4,0);ea(c|0,f|0,4,0);ao(c);f=0}while(0);if((y|0)==70)Vc(da(g|0,4,0,0)|0|0);i=z;return f|0}function ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;do if((kc[(fa(da(47552+196|0,4,0,0)|0|0,127|0)|0)&127](b)|0)==-1)if((da(Gb()|0|0,4,0,0)|0|0)==2)a=5898;else a=bo(2570,48032,b,31314)|0;else if(c&1){a=qc[(fa(da(47552+208|0,4,0,0)|0|0,127|0)|0)&127](b,d)|0;if((a|0)==14){a=0;break}else if(a)break;if(!(Fb(da(d|0,4,0,0)|0|0)|0))a=0;else a=bo(1290,48488,b,31329)|0;if(kc[(fa(da(47552+16|0,4,0,0)|0|0,127|0)|0)&127](da(d|0,4,0,0)|0|0)|0)bo(4106,47856,0,31331)|0}else a=0;while(0);i=e;return a|0}function li(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;i=i+80|0;if((i|0)>=(j|0))ba();e=f;if((c|0)==2)a=4;else if((c|0)==1)a=6;else a=0;a=(qc[(fa(da(47552+28|0,4,0,0)|0|0,127|0)|0)&127](b,a)|0)==0;ea(d|0,a&1|0,4,0);if((!((c|0)!=0|a^1)?(qc[(fa(da(47552+52|0,4,0,0)|0|0,127|0)|0)&127](b,e)|0)==0:0)?(da(e+36|0,4,0,0)|0|0)==0:0)ea(d|0,0|0,4,0);i=f;return 0}function mi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;a=c+-1|0;ea(d+a>>0|0,0|0,1,0);do if((da(b>>0|0,1,0,0)|0|0)!=47)if(!(qc[(fa(da(47552+40|0,4,0,0)|0|0,127|0)|0)&127](d,a)|0)){ea(e|0,31416|0,4,0);ea(e+4|0,10788|0,4,0);ad(14,14848,e);a=bo(14,47904,b,31416)|0;break}else{a=fw(d|0)|0;ea(e|0,b|0,4,0);$c(c-a|0,d+a|0,48480,e)|0;a=0;break}else{ea(e|0,b|0,4,0);$c(c,d,10344,e)|0;a=0}while(0);i=f;return a|0}function ni(a,b){a=a|0;b=b|0;return Cb(b|0,258)|0}function oi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;a=Wa()|0;if(a){ea(d|0,a|0,4,0);$c(b,c,10344,d)|0}i=e;return}function pi(a,b,c){a=a|0;b=b|0;c=c|0;return _a(b|0,c|0)|0}function qi(a,b){a=a|0;b=b|0;Db(b|0)|0;return}function ri(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;ew(c|0,0,b|0)|0;ea(12114*4|0,qb()|0|0,4,0);a=_n(48464,0,0)|0;if((a|0)>=0){do if(($b[(fa(da(47552+100|0,4,0,0)|0|0,63|0)|0)&63](a,c,b)|0)>=0)break;while((da(Gb()|0|0,4,0,0)|0|0)==4);if(kc[(fa(da(47552+16|0,4,0,0)|0|0,127|0)|0)&127](a)|0)bo(4106,47856,0,31521)|0}else{Ob(d|0)|0;a=da(d|0,4,0,0)|0|0;ea(c>>0|0,a|0,1,0);ea(c+1>>0|0,a>>8|0,1,0);ea(c+2>>0|0,a>>16|0,1,0);ea(c+3>>0|0,a>>24|0,1,0);a=c+4|0;b=da(12114*4|0,4,0,0)|0|0;ea(a>>0|0,b|0,1,0);ea(a+1>>0|0,b>>8|0,1,0);ea(a+2>>0|0,b>>16|0,1,0);ea(a+3>>0|0,b>>24|0,1,0);b=8}i=e;return b|0}function si(a,b){a=a|0;b=b|0;a=(b+999999|0)/1e6|0;Lb(a|0)|0;return a*1e6|0}function ti(a,b){a=a|0;b=b|0;var c=0,d=0;a=i;i=i+16|0;if((i|0)>=(j|0))ba();d=a;c=d;ea(c|0,0|0,4,0);ea(c+4|0,0|0,4,0);c=vi(0,d)|0;ea(b|0,+((+((da(d|0,4,0,0)|0|0)>>>0)+4294967296.0*+(da(d+4|0,4,0,0)|0|0))/864.0e5),8,1);i=a;return c|0}function ui(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=i;i=i+16|0;if((i|0)>=(j|0))ba();a=c;if(!(Rb(a|0,0)|0)){e=da(a|0,4,0,0)|0|0;e=rw(e|0,((e|0)<0)<<31>>31|0,1e3,0)|0;e=iw(e|0,C|0,1045635584,49096)|0;d=(da(a+4|0,4,0,0)|0|0)/1e3|0;d=iw(e|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;a=b;ea(a|0,d|0,4,0);ea(a+4|0,C|0,4,0);a=0}else a=1;i=c;return a|0}function wi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:do if(!b){a=0;do{b=da(47560+(a*12|0)|0,4,0,0)|0|0;if(b)ea(47556+(a*12|0)|0,b|0,4,0);a=a+1|0}while((a|0)!=25);b=0}else{a=0;while(1){if(!(Zv(b,da(47552+(a*12|0)|0,4,0,0)|0|0)|0)){d=a;break}a=a+1|0;if(a>>>0>=25){b=12;break a}}b=47560+(d*12|0)|0;a=da(b|0,4,0,0)|0|0;if(!a){a=da(47556+(d*12|0)|0,4,0,0)|0|0;ea(b|0,a|0,4,0)}ea(47556+(d*12|0)|0,((c|0)==0?a:c)|0,4,0);b=0}while(0);return b|0}function xi(a,b){a=a|0;b=b|0;var c=0;a=0;while(1){if(!(Zv(b,da(47552+(a*12|0)|0,4,0,0)|0|0)|0)){c=4;break}a=a+1|0;if(a>>>0>=25){a=0;break}}if((c|0)==4)a=da(47556+(a*12|0)|0,4,0,0)|0|0;return a|0}function yi(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if(!b)a=-1;else{c=0;while(1){a=c+1|0;if(!(Zv(b,da(47552+(c*12|0)|0,4,0,0)|0|0)|0)){a=c;break a}if((a|0)<24)c=a;else break}}while(0);while(1){a=a+1|0;if((a|0)>=25){a=0;break}if(da(47556+(a*12|0)|0,4,0,0)|0){d=6;break}}if((d|0)==6)a=da(47552+(a*12|0)|0,4,0,0)|0|0;return a|0}function zi(a,b){a=a|0;b=b|0;return 48504}function Ai(a,b){a=a|0;b=b|0;return 48376}function Bi(a,b){a=a|0;b=b|0;return 47472}function Ci(a){a=a|0;var b=0,c=0;b=da(a+4|0,4,0,0)|0|0;if(b)do{c=b;b=da(b|0,4,0,0)|0|0;Vc(c)}while((b|0)!=0);b=a+0|0;c=b+40|0;do{ea(b|0,0|0,4,0);b=b+4|0}while((b|0)<(c|0));ea(a|0,14696|0,4,0);return 0}function Di(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,k=0;k=a+24|0;f=k;if(((da(f|0,4,0,0)|0|0)!=(d|0)?1:(da(f+4|0,4,0,0)|0|0)!=(e|0))|(d|0)==0&(e|0)==0){f=da(a+4|0,4,0,0)|0|0;if(!((f|0)==0|((e|0)<0|(e|0)==0&d>>>0<1020))){g=1020;h=0;do{g=iw(g|0,h|0,1020,0)|0;h=C;f=da(f|0,4,0,0)|0|0}while(!((f|0)==0|((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0)))}}else f=da(a+32|0,4,0,0)|0|0;i=qw(d|0,e|0,1020,0)|0;j=c;g=b;while(1){b=1020-i|0;h=(j|0)<(b|0)?j:b;jw(g|0,f+i+4|0,h|0)|0;j=j-b|0;if((j|0)<=-1)break;f=da(f|0,4,0,0)|0|0;if(!((f|0)!=0&(j|0)>0))break;else{i=0;g=g+h|0}}e=iw(c|0,((c|0)<0)<<31>>31|0,d|0,e|0)|0;c=k;ea(c|0,e|0,4,0);ea(c+4|0,C|0,4,0);ea(a+32|0,f|0,4,0);return 0}function Ei(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;a:do if((c|0)>0){h=a+8|0;i=a+16|0;g=a+4|0;d=h;e=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;while(1){a=da(i|0,4,0,0)|0|0;d=qw(e|0,d|0,1020,0)|0;f=1020-d|0;f=(c|0)<(f|0)?c:f;if(!d){e=Sc(1024)|0;if(!e){d=3082;break a}ea(e|0,0|0,4,0);if(!a){ea(g|0,e|0,4,0);a=e}else{ea(a|0,e|0,4,0);a=e}ea(i|0,a|0,4,0)}jw(a+d+4|0,b|0,f|0)|0;c=c-f|0;e=h;e=iw(da(e|0,4,0,0)|0|0,da(e+4|0,4,0,0)|0|0,f|0,((f|0)<0)<<31>>31|0)|0;d=C;a=h;ea(a|0,e|0,4,0);ea(a+4|0,d|0,4,0);if((c|0)<=0){d=0;break}else b=b+f|0}}else d=0;while(0);return d|0}function Fi(a,b,c){a=a|0;b=b|0;c=c|0;b=da(a+4|0,4,0,0)|0|0;if(b)do{c=b;b=da(b|0,4,0,0)|0|0;Vc(c)}while((b|0)!=0);c=a+0|0;b=c+40|0;do{ea(c|0,0|0,4,0);c=c+4|0}while((c|0)<(b|0));ea(a|0,14696|0,4,0);return 0}function Gi(a,b){a=a|0;b=b|0;return 0}function Hi(a,b){a=a|0;b=b|0;var c=0;c=a+8|0;a=da(c+4|0,4,0,0)|0|0;ea(b|0,da(c|0,4,0,0)|0|0,4,0);ea(b+4|0,a|0,4,0);return 0}function Ii(a){a=a|0;var b=0;a=12584|0;b=a+68|0;do{ea(a|0,0|0,4,0);a=a+4|0}while((a|0)<(b|0));if(da(2187*4|0,4,0,0)|0){ea(3146*4|0,8|0,4,0);ea(3159*4|0,8|0,4,0)}ea(3149*4|0,10|0,4,0);ea(3153*4|0,1|0,4,0);return 0}function Ji(a){a=a|0;var b=0;a=12584|0;b=a+68|0;do{ea(a|0,0|0,4,0);a=a+4|0}while((a|0)<(b|0));return}function Ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=pg(48,0)|0;if(d){e=d+0|0;f=e+48|0;do{ea(e>>0|0,0|0,1,0);e=e+1|0}while((e|0)<(f|0));ea(d|0,12584|0,4,0);ea(d+4|0,a|0,4,0);ea(d+8|0,b|0,4,0);c=(c|0)!=0;ea(d+12|0,c&1|0,4,0);co(d);if(c){ea(d+16|0,10|0,4,0);c=da(3148*4|0,4,0,0)|0|0;ea(3148*4|0,c+10|0,4,0);ea(3149*4|0,(da(3147*4|0,4,0,0)|0|0)+10+(-10-c)|0,4,0)}if(!(da(d+40|0,4,0,0)|0)){Ri(d);d=0}}else d=0;return d|0}function Li(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(da(a+12|0,4,0,0)|0){c=da(a|0,4,0,0)|0|0;d=a+20|0;f=c+4|0;e=(da(f|0,4,0,0)|0|0)+(b-(da(d|0,4,0,0)|0|0))|0;ea(f|0,e|0,4,0);ea(c+12|0,e+10-(da(c+8|0,4,0,0)|0|0)|0,4,0);ea(d|0,b|0,4,0);ea(a+24|0,((b*9|0)>>>0)/10|0|0,4,0);eo(c)}return}function Mi(a){a=a|0;return da(a+36|0,4,0,0)|0|0}function Ni(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=da((da(a+44|0,4,0,0)|0|0)+(((b>>>0)%((da(a+40|0,4,0,0)|0|0)>>>0)|0)<<2)|0,4,0,0)|0|0;a:do if(d){while(1){if((da(d+8|0,4,0,0)|0|0)==(b|0))break;d=da(d+16|0,4,0,0)|0|0;if(!d){e=6;break a}}if(!(da(d+12>>0|0,1,0,0)|0))fo(d)}else e=6;while(0);if((e|0)==6)if(!c)d=0;else d=go(a,b,c)|0;return d|0}function Oi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=da(a|0,4,0,0)|0|0;if((c|0)==0?(da(e+16|0,4,0,0)|0|0)>>>0<=(da(e+4|0,4,0,0)|0|0)>>>0:0){c=e+20|0;d=da(c|0,4,0,0)|0|0;if(!d)ea(e+24|0,b|0,4,0);else{ea(d+28|0,b|0,4,0);ea(b+24|0,d|0,4,0)}ea(c|0,b|0,4,0);d=a+32|0;ea(d|0,(da(d|0,4,0,0)|0|0)+1|0,4,0);ea(b+12>>0|0,0|0,1,0)}else{e=da(b+20|0,4,0,0)|0|0;c=(da(e+44|0,4,0,0)|0|0)+((((da(b+8|0,4,0,0)|0|0)>>>0)%((da(e+40|0,4,0,0)|0|0)>>>0)|0)<<2)|0;while(1){a=da(c|0,4,0,0)|0|0;d=a+16|0;if((a|0)==(b|0))break;else c=d}ea(c|0,da(d|0,4,0,0)|0|0,4,0);d=e+36|0;ea(d|0,(da(d|0,4,0,0)|0|0)+-1|0,4,0);ho(b)}return}function Pi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=da(a+40|0,4,0,0)|0|0;g=a+44|0;c=(da(g|0,4,0,0)|0|0)+(((c>>>0)%(f>>>0)|0)<<2)|0;while(1){e=da(c|0,4,0,0)|0|0;if((e|0)==(b|0))break;else c=e+16|0}e=b+16|0;ea(c|0,da(e|0,4,0,0)|0|0,4,0);ea(b+8|0,d|0,4,0);c=(da(g|0,4,0,0)|0|0)+(((d>>>0)%(f>>>0)|0)<<2)|0;ea(e|0,da(c|0,4,0,0)|0|0,4,0);ea(c|0,b|0,4,0);c=a+28|0;if((da(c|0,4,0,0)|0|0)>>>0>>0)ea(c|0,d|0,4,0);return}function Qi(a,b){a=a|0;b=b|0;var c=0;c=a+28|0;if((da(c|0,4,0,0)|0|0)>>>0>=b>>>0){io(a,b);ea(c|0,b+-1|0,4,0)}return}function Ri(a){a=a|0;var b=0,c=0,d=0,e=0;b=da(a|0,4,0,0)|0|0;io(a,0);e=b+4|0;d=(da(e|0,4,0,0)|0|0)-(da(a+20|0,4,0,0)|0|0)|0;ea(e|0,d|0,4,0);e=b+8|0;c=(da(e|0,4,0,0)|0|0)-(da(a+16|0,4,0,0)|0|0)|0;ea(e|0,c|0,4,0);ea(b+12|0,d+10-c|0,4,0);eo(b);Vc(da(a+44|0,4,0,0)|0|0);Vc(a);return}function Si(a){a=a|0;var b=0,c=0;if(da(a+12|0,4,0,0)|0){c=da(a|0,4,0,0)|0|0;b=c+4|0;a=da(b|0,4,0,0)|0|0;ea(b|0,0|0,4,0);eo(c);ea(b|0,a|0,4,0)}return}function Ti(a){a=a|0;var b=0,c=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();c=d;b=a+7&-8;a=Vv(b+8|0)|0;if(!a){ea(c|0,b|0,4,0);ad(7,16568,c)}else{c=a;ea(c|0,b|0,4,0);ea(c+4|0,((b|0)<0)<<31>>31|0,4,0);a=a+8|0}i=d;return a|0}function Ui(a){a=a|0;Wv(a+-8|0);return}function Vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;d=a+-8|0;c=Xv(d,b+8|0)|0;if(!c){if(!a)d=0;else d=da(d|0,4,0,0)|0|0;ea(e|0,d|0,4,0);ea(e+4|0,b|0,4,0);ad(7,16528,e)}else{d=c;ea(d|0,b|0,4,0);ea(d+4|0,((b|0)<0)<<31>>31|0,4,0);c=c+8|0}i=f;return c|0}function Wi(a){a=a|0;if(!a)a=0;else a=da(a+-8|0,4,0,0)|0|0;return a|0}function Xi(a){a=a|0;return a+7&-8|0}function Yi(a){a=a|0;return 0}function Zi(a){a=a|0;return}function _i(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,k=0,l=0,m=0;e=da(c|0,4,0,0)|0|0;do if((-1431655766>>>((da(e+8|0,2,0,1)|0)&31)&1|0)==0?(d=Rg(e,1)|0,(d|0)!=0):0){e=Sg(da(c|0,4,0,0)|0|0,1)|0;if((b|0)!=1){k=Rg(da(c+4|0,4,0,0)|0|0,1)|0;if(!k)break;b=da(k>>0|0,1,0,0)|0|0;if(b<<24>>24){c=0;f=k;while(1){g=f+1|0;if((b&255)>191)while(1){b=da(g>>0|0,1,0,0)|0|0;if((b&-64)<<24>>24==-128){j=g;g=f+2|0;f=j}else{f=g;break}}else{b=da(g>>0|0,1,0,0)|0|0;f=g}g=c+1|0;if(!(b<<24>>24)){b=g;break}else c=g}if((c|0)>-1){i=rw(b|0,((b|0)<0)<<31>>31|0,5,0)|0;i=jo(a,i,C)|0;if(!i)break;h=i+(b<<2)|0;if(da(k>>0|0,1,0,0)|0){b=k;c=0;while(1){ea(i+(c<<2)|0,b|0,4,0);g=b+1|0;if((da(b>>0|0,1,0,1)|0|0)>191){f=b;while(1)if(((da(g>>0|0,1,0,0)|0)&-64)<<24>>24==-128){j=g;g=f+2|0;f=j}else break}ea(h+c>>0|0,g-b|0,1,0);f=c+1|0;if(!(da(g>>0|0,1,0,0)|0))break;else{b=g;c=f}}if((c|0)>-1){j=f;l=17}}}}}else{h=20360;i=20368;j=1;k=0;l=17}if((l|0)==17){b=da((da(a+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;a:do if((b&1|0)!=0&(e|0)>0){c=(j|0)>0;do{if(c)f=0;else{l=24;break a}while(1){g=da(h+f>>0|0,1,0,1)|0|0;if((e|0)>=(g|0)?(Yv(d,da(i+(f<<2)|0,4,0,0)|0|0,g)|0)==0:0)break;f=f+1|0;if((f|0)>=(j|0)){l=24;break a}}d=d+g|0;e=e-g|0}while((e|0)>0)}else l=24;while(0);b:do if((l|0)==24)if((b&2|0)!=0&(e|0)>0){c=(j|0)>0;do{if(c)f=0;else break b;while(1){g=da(h+f>>0|0,1,0,1)|0|0;if((e|0)>=(g|0)?(m=e-g|0,(Yv(d+m|0,da(i+(f<<2)|0,4,0,0)|0|0,g)|0)==0):0){e=m;break}f=f+1|0;if((f|0)>=(j|0))break b}}while((e|0)>0)}while(0);if(k)Vc(i)}Vg(a,d,e,1,-1)}while(0);return}function $i(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=((da((da(a+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)!=0)<<31>>31;g=da((da((da(a+12|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(((da(a+16|0,4,0,0)|0|0)+-1|0)*20|0)+16|0,4,0,0)|0|0;d=da(c|0,4,0,0)|0|0;a:do if(!(-1431655766>>>((da(d+8|0,2,0,1)|0|0)&31)&1)){if((b|0)>1){f=1;d=0;do{e=da(c+(f<<2)|0,4,0,0)|0|0;if(-1431655766>>>((da(e+8|0,2,0,1)|0|0)&31)&1)break a;e=((gm(da(c+(d<<2)|0,4,0,0)|0|0,e,g)|0)^h|0)>-1;d=e?f:d;f=f+1|0}while((f|0)<(b|0));d=da(c+(d<<2)|0,4,0,0)|0|0}Zg(da(a|0,4,0,0)|0|0,d)|0}while(0);return}function aj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=da(c|0,4,0,0)|0|0;b=da(a+8|0,4,0,0)|0|0;if(!((da(b+8|0,2,0,0)|0)&8192))b=kh(a,40)|0;else b=da(b+16|0,4,0,0)|0|0;do if(b){d=(da(b+8|0,2,0,0)|0|0)!=0;if(-1431655766>>>((da((da(c|0,4,0,0)|0|0)+8|0,2,0,1)|0)&31)&1){if(!d)break;ea(a+24>>0|0,1|0,1,0);break}if(!d){ea(b+32|0,da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0,4,0);Zg(b,e)|0;break}d=(da((da(a+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)!=0;c=gm(b,e,da((da((da(a+12|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(((da(a+16|0,4,0,0)|0|0)+-1|0)*20|0)+16|0,4,0,0)|0|0)|0;if(!(d&(c|0)<0)?!((c|0)>0&(d^1)):0){ea(a+24>>0|0,1|0,1,0);break}Zg(b,e)|0}while(0);return}function bj(a){a=a|0;var b=0,c=0,d=0;b=da(a+8|0,4,0,0)|0|0;if(!((da(b+8|0,2,0,0)|0)&8192))b=kh(a,0)|0;else b=da(b+16|0,4,0,0)|0|0;do if(b){c=b+8|0;if(!((da(c|0,2,0,0)|0|0)!=0?(Zg(da(a|0,4,0,0)|0|0,b)|0,((da(c|0,2,0,0)|0)&9312)!=0):0))d=7;if((d|0)==7?(da(b+24|0,4,0,0)|0|0)==0:0)break;Pg(b)}while(0);return}function cj(a,b,c){a=a|0;b=b|0;c=c|0;b=da(10064+((da((da(c|0,4,0,0)|0|0)+8|0,2,0,1)|0|0)&31)>>0|0,1,0,1)|0|0;if((b|0)==4)b=20344;else if((b|0)==2)b=20336;else if((b|0)==3)b=20328;else if((b|0)==1)b=20320;else b=20352;Vg(a,b,-1,1,0);return}function dj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;b=da(c|0,4,0,0)|0|0;c=da(10064+((da(b+8|0,2,0,1)|0|0)&31)>>0|0,1,0,1)|0|0;do if((c|0)==3){d=Rg(b,1)|0;if(d){b=da(d>>0|0,1,0,0)|0|0;if(!(b<<24>>24)){e=0;d=0}else{c=b;b=0;do{b=b+1|0;e=d+1|0;if((c&255)>191)while(1){c=da(e>>0|0,1,0,0)|0|0;if((c&-64)<<24>>24==-128){c=e;e=d+2|0;d=c}else{d=e;break}}else{c=da(e>>0|0,1,0,0)|0|0;d=e}}while(c<<24>>24!=0);e=b;d=((b|0)<0)<<31>>31}b=da(a|0,4,0,0)|0|0;c=b+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(b|0,e|0,4,0);ea(b+4|0,d|0,4,0);ea(c|0,4|0,2,0);break}else{Yg(b,e,d);break}}}else if((c|0)==2|(c|0)==1|(c|0)==4){e=Sg(b,1)|0;d=da(a|0,4,0,0)|0|0;b=((e|0)<0)<<31>>31;c=d+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(d|0,e|0,4,0);ea(d+4|0,b|0,4,0);ea(c|0,4|0,2,0);break}else{Yg(d,e,b);break}}else{c=da(a|0,4,0,0)|0|0;b=c+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(b|0,1|0,2,0);break}else{ug(c);break}}while(0);return}function ej(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;d=da(c|0,4,0,0)|0|0;e=da(d+8|0,2,0,0)|0|0;f=c+4|0;b=da((da(f|0,4,0,0)|0|0)+8|0,2,0,0)|0|0;do if(!((-1431655766>>>(b&31)|-1431655766>>>(e&31))&1)){g=Sg(d,1)|0;i=Sg(da(f|0,4,0,0)|0|0,1)|0;c=da(c|0,4,0,0)|0|0;if(!((b|e)&15)){b=od(c)|0;c=0;h=od(da(f|0,4,0,0)|0|0)|0}else{b=Rg(c,1)|0;c=1;h=Rg(da(f|0,4,0,0)|0|0,1)|0}a:do if((i|0)>(g|0)){b=1;d=1}else{d=1;e=g;while(1){if(!(Yv(b,h,i)|0)){b=0;break a}d=d+1|0;f=(c|0)==0;do{e=e+-1|0;b=b+1|0;if(f){c=0;break}}while(((da(b>>0|0,1,0,0)|0)&-64)<<24>>24==-128);if((i|0)>(e|0)){b=1;break}}}while(0);e=da(a|0,4,0,0)|0|0;c=b?0:d;b=b?0:((d|0)<0)<<31>>31;d=e+8|0;if(!((da(d|0,2,0,0)|0)&9312)){ea(e|0,c|0,4,0);ea(e+4|0,b|0,4,0);ea(d|0,4|0,2,0);break}else{Yg(e,c,b);break}}while(0);return}function fj(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,k=0,l=0,m=0;d=da(c+4|0,4,0,0)|0|0;do if(!(-1431655766>>>((da(d+8|0,2,0,1)|0|0)&31)&1)){k=(b|0)==3;if(k?(-1431655766>>>((da((da(c+8|0,4,0,0)|0|0)+8|0,2,0,1)|0|0)&31)&1|0)!=0:0)break;m=da((da(c|0,4,0,0)|0|0)+8|0,2,0,0)|0|0;g=Ug(d)|0;h=((g|0)<0)<<31>>31;m=(m&15)==0;e=da(c|0,4,0,0)|0|0;if(m){e=Sg(e,1)|0;f=od(da(c|0,4,0,0)|0|0)|0;if(!f)break;else l=e}else{f=Rg(e,1)|0;if(!f)break;if((g|0)<0?(i=da(f>>0|0,1,0,0)|0|0,i<<24>>24!=0):0){e=0;d=f;do{j=d+1|0;if((i&255)>191){b=d;d=j;while(1){i=da(d>>0|0,1,0,0)|0|0;if((i&-64)<<24>>24==-128){l=d;d=b+2|0;b=l}else break}}else{i=da(j>>0|0,1,0,0)|0|0;d=j}e=e+1|0}while(i<<24>>24!=0);l=e}else l=0}if(k){j=Ug(da(c+8|0,4,0,0)|0|0)|0;b=((j|0)<0)<<31>>31;k=(j|0)<0;d=cw(0,0,j|0,b|0)|0;d=k?d:j;b=k?C:b;j=j>>>31}else{b=da((da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0)+88|0,4,0,0)|0|0;d=b;b=((b|0)<0)<<31>>31;j=0}do if((g|0)<0){g=iw(l|0,((l|0)<0)<<31>>31|0,g|0,h|0)|0;h=C;if((h|0)<0){d=iw(d|0,b|0,g|0,h|0)|0;b=C;k=(b|0)<0;g=0;h=0;d=k?0:d;b=k?0:b}}else if((g|0)>0){g=iw(g|0,h|0,-1,-1)|0;h=C;break}else{k=((b|0)>0|(b|0)==0&d>>>0>0)<<31>>31;d=iw(k|0,((k|0)<0)<<31>>31|0,d|0,b|0)|0;b=C;break}while(0);if(!j){i=g;j=h}else{i=cw(g|0,h|0,d|0,b|0)|0;j=C;k=(j|0)<0;i=k?0:i;j=k?0:j;d=k?g:d;b=k?h:b}if(m){k=iw(d|0,b|0,i|0,j|0)|0;h=C;e=((l|0)<0)<<31>>31;if((h|0)>(e|0)|(h|0)==(e|0)&k>>>0>l>>>0){d=cw(l|0,e|0,i|0,j|0)|0;b=C;l=(b|0)<0;d=l?0:d;b=l?0:b}Ad(a,f+i|0,d,b,-1);break}e=da(f>>0|0,1,0,0)|0|0;if(((i|0)!=0|(j|0)!=0)&e<<24>>24!=0)do{h=f+1|0;if((e&255)>191){g=f;f=h;while(1){e=da(f>>0|0,1,0,0)|0|0;if((e&-64)<<24>>24==-128){l=f;f=g+2|0;g=l}else break}}else{e=da(h>>0|0,1,0,0)|0|0;f=h}i=iw(i|0,j|0,-1,-1)|0;j=C}while(((i|0)!=0|(j|0)!=0)&e<<24>>24!=0);if(e<<24>>24!=0&((d|0)!=0|(b|0)!=0)){i=b;b=f;do{g=b+1|0;if((e&255)>191)while(1){e=da(g>>0|0,1,0,0)|0|0;if((e&-64)<<24>>24==-128){l=g;g=b+2|0;b=l}else{b=g;break}}else{e=da(g>>0|0,1,0,0)|0|0;b=g}d=iw(d|0,i|0,-1,-1)|0;i=C}while(e<<24>>24!=0&((d|0)!=0|(i|0)!=0))}else b=f;l=b-f|0;Id(a,f,l,((l|0)<0)<<31>>31,-1,1)}while(0);return}function gj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+48|0;if((i|0)>=(j|0))ba();f=h;g=h+32|0;e=h+4|0;if((b|0)>0?(d=Rg(da(c|0,4,0,0)|0|0,1)|0,(d|0)!=0):0){ea(g|0,b+-1|0,4,0);ea(g+4|0,0|0,4,0);ea(g+8|0,c+4|0,4,0);ea(e+0|0,0|0,4,0);ea(e+4|0,0|0,4,0);ea(e+8|0,0|0,4,0);ea(e+12|0,0|0,4,0);ea(e+16|0,0|0,4,0);ea(e+20|0,1e9|0,4,0);ea(e+24>>0|0,1|0,1,0);ea(e+25>>0|0,0|0,1,0);ea(e|0,da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0,4,0);ea(f|0,g|0,4,0);Dn(e,2,d,f);d=da(e+12|0,4,0,0)|0|0;Vg(a,sg(e)|0,d,1,75)}i=h;return}function hj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f;b=Rg(da(c|0,4,0,0)|0|0,1)|0;ea(d|0,b|0,4,0);do if((b|0)!=0?(da(b>>0|0,1,0,0)|0|0)!=0:0){e=Ln(d)|0;b=da(a|0,4,0,0)|0|0;d=((e|0)<0)<<31>>31;c=b+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(b|0,e|0,4,0);ea(b+4|0,d|0,4,0);ea(c|0,4|0,2,0);break}else{Yg(b,e,d);break}}while(0);i=f;return}function ij(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=Sc(b<<2|1)|0;if(!g)Qd(a);else{if((b|0)>0){f=0;d=g;do{e=Ug(da(c+(f<<2)|0,4,0,0)|0|0)|0;h=C;e=h>>>0>0|(h|0)==0&e>>>0>1114111?65533:e&2097151;do if(e>>>0>=128){if(e>>>0<2048){ea(d>>0|0,e>>>6&31|192|0,1,0);ea(d+1>>0|0,e&63|128|0,1,0);d=d+2|0;break}if(e>>>0<65536){ea(d>>0|0,e>>>12&15|224|0,1,0);ea(d+1>>0|0,e>>>6&63|128|0,1,0);ea(d+2>>0|0,e&63|128|0,1,0);d=d+3|0;break}else{ea(d>>0|0,e>>>18|240|0,1,0);ea(d+1>>0|0,e>>>12&63|128|0,1,0);ea(d+2>>0|0,e>>>6&63|128|0,1,0);ea(d+3>>0|0,e&63|128|0,1,0);d=d+4|0;break}}else{ea(d>>0|0,e|0,1,0);d=d+1|0}while(0);f=f+1|0}while((f|0)!=(b|0))}else d=g;d=d-g|0;Id(a,g,d,((d|0)<0)<<31>>31,1,1)}return}function jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0;b=da(c|0,4,0,0)|0|0;c=da(10064+((da(b+8|0,2,0,1)|0|0)&31)>>0|0,1,0,1)|0|0;a:do if((c|0)==1){b=Ug(b)|0;e=C;do if((e|0)<0)if((b|0)==0&(e|0)==-2147483648){ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,20248,-1,1,-1)|0;break a}else{b=cw(0,0,b|0,e|0)|0;f=C;break}else f=e;while(0);c=da(a|0,4,0,0)|0|0;e=c+8|0;if(!((da(e|0,2,0,0)|0)&9312)){ea(c|0,b|0,4,0);ea(c+4|0,f|0,4,0);ea(e|0,4|0,2,0);break}else{Yg(c,b,f);break}}else if((c|0)==5){c=da(a|0,4,0,0)|0|0;b=c+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(b|0,1|0,2,0);break}else{ug(c);break}}else{d=+Tg(b);if(d<0.0)d=-d;Xg(da(a|0,4,0,0)|0|0,d)}while(0);return}function kj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0,l=0,m=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();h=m+8|0;l=m;if((b|0)==2){b=da(c+4|0,4,0,0)|0|0;if(!(-1431655766>>>((da(b+8|0,2,0,1)|0)&31)&1)){g=Ug(b)|0;g=(g|0)>30?30:g;g=(g|0)<0?0:g;f=4}}else{g=0;f=4}a:do if((f|0)==4?(e=da(c|0,4,0,0)|0|0,(-1431655766>>>((da(e+8|0,2,0,1)|0)&31)&1|0)==0):0){d=+Tg(e);ea(l|0,+d,8,1);b=(g|0)==0;do if(b&d>=0.0&d<9223372036854775808.0){d=d+.5;d=+(~~d>>>0>>>0)+4294967296.0*+((+N(d)>=1.0?(d>0.0?~~+$(+M(d/4294967296.0),4294967295.0)>>>0:~~+Z((d-+(~~d>>>0))/4294967296.0)>>>0):0)|0);ea(l|0,+d,8,1)}else{if(b&d<0.0&d>-9223372036854775808.0){d=.5-d;d=-(+(~~d>>>0>>>0)+4294967296.0*+((+N(d)>=1.0?(d>0.0?~~+$(+M(d/4294967296.0),4294967295.0)>>>0:~~+Z((d-+(~~d>>>0))/4294967296.0)>>>0):0)|0));ea(l|0,+d,8,1);break}ea(h|0,g|0,4,0);b=h+4|0;ea(k|0,+d,8,1);ea(b|0,da(k|0,4,0,0)|0|0,4,0);ea(b+4|0,da(k+4|0,4,0,0)|0|0,4,0);b=Zc(20312,h)|0;if(!b){Qd(a);break a}else e=b;while(1)if(!(da(e>>0|0,1,0,0)|0))break;else e=e+1|0;Sl(b,l,e-b&1073741823,1)|0;Vc(b);d=+(+da(l|0,8,1,0))}while(0);Xg(da(a|0,4,0,0)|0|0,d)}while(0);i=m;return}function lj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Rg(da(c|0,4,0,0)|0|0,1)|0;b=Sg(da(c|0,4,0,0)|0|0,1)|0;if((d|0)!=0?(e=iw(b|0,((b|0)<0)<<31>>31|0,1,0)|0,e=jo(a,e,C)|0,(e|0)!=0):0){if((b|0)>0){c=0;do{f=da(d+c>>0|0,1,0,1)|0|0;ea(e+c>>0|0,((da(10368+f>>0|0,1,0,1)|0|0|223)^32)&f|0,1,0);c=c+1|0}while((c|0)!=(b|0))}Vg(a,e,b,1,1)}return}function mj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Rg(da(c|0,4,0,0)|0|0,1)|0;b=Sg(da(c|0,4,0,0)|0|0,1)|0;if((d|0)!=0?(e=iw(b|0,((b|0)<0)<<31>>31|0,1,0)|0,e=jo(a,e,C)|0,(e|0)!=0):0){if((b|0)>0){c=0;do{ea(e+c>>0|0,da(9328+(da(d+c>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0|0|0,1,0);c=c+1|0}while((c|0)!=(b|0))}Vg(a,e,b,1,1)}return}function nj(a,b,c){a=a|0;b=b|0;c=c|0;Vg(a,8632,-1,1,0);return}function oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;b=od(da(c|0,4,0,0)|0|0)|0;f=Sg(da(c|0,4,0,0)|0|0,1)|0;g=hw(f|0,((f|0)<0)<<31>>31|0,1)|0;g=jo(a,g|1,C)|0;if(g){if((f|0)>0){d=f<<1;e=0;c=g;while(1){h=da(b>>0|0,1,0,1)|0|0;ea(c>>0|0,da(20288+(h>>>4)>>0|0,1,0,0)|0|0|0,1,0);ea(c+1>>0|0,da(20288+(h&15)>>0|0,1,0,0)|0|0|0,1,0);e=e+1|0;if((e|0)==(f|0))break;else{b=b+1|0;c=c+2|0}}c=g+d|0}else c=g;ea(c>>0|0,0|0,1,0);Vg(a,g,f<<1,1,1)}return}function pj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();b=f;bd(8,b);d=b;c=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;if((d|0)<0){e=cw(0,0,c|0,d&2147483647|0)|0;d=C;ea(b|0,e|0,4,0);ea(b+4|0,d|0,4,0)}else e=c;c=da(a|0,4,0,0)|0|0;b=c+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(c|0,e|0,4,0);ea(c+4|0,d|0,4,0);ea(b|0,4|0,2,0)}else Yg(c,e,d);i=f;return}function qj(a,b,c){a=a|0;b=b|0;c=c|0;c=Ug(da(c|0,4,0,0)|0|0)|0;c=(c|0)<1?1:c;b=jo(a,c,((c|0)<0)<<31>>31)|0;if(b){bd(c,b);Vg(a,b,c,0,1)}return}function rj(a,b,c){a=a|0;b=b|0;c=c|0;if(gm(da(c|0,4,0,0)|0|0,da(c+4|0,4,0,0)|0|0,da((da((da(a+12|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(((da(a+16|0,4,0,0)|0|0)+-1|0)*20|0)+16|0,4,0,0)|0|0)|0)Zg(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0;return}function sj(a,b,c){a=a|0;b=b|0;c=c|0;Vg(a,10768,-1,1,0);return}function tj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;b=i;i=i+16|0;if((i|0)>=(j|0))ba();a=b;d=Ug(da(c|0,4,0,0)|0|0)|0;ea(a|0,Rg(da(c+4|0,4,0,0)|0|0,1)|0|0,4,0);ad(d,10344,a);i=b;return}function uj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;b=Rg(da(c|0,4,0,0)|0|0,1)|0;do if(b){d=Dc(b)|0;c=da(a|0,4,0,0)|0|0;b=((d|0)<0)<<31>>31;a=c+8|0;if(!((da(a|0,2,0,0)|0)&9312)){ea(c|0,d|0,4,0);ea(c+4|0,b|0,4,0);ea(a|0,4|0,2,0);break}else{Yg(c,d,b);break}}while(0);return}function vj(a,b,c){a=a|0;b=b|0;c=c|0;b=Ug(da(c|0,4,0,0)|0|0)|0;if(b>>>0<4)b=da(8648+(b<<2)|0,4,0,0)|0|0;else b=0;Vg(a,b,-1,1,0);return}function wj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,g=0,h=0,l=0,m=0,n=0;n=i;i=i+80|0;if((i|0)>=(j|0))ba();b=n+8|0;d=n;h=n+16|0;g=da(c|0,4,0,0)|0|0;f=da(10064+((da(g+8|0,2,0,1)|0)&31)>>0|0,1,0,1)|0|0;if((f|0)==1)Zg(da(a|0,4,0,0)|0|0,g)|0;else if((f|0)==4){g=od(g)|0;b=Sg(da(c|0,4,0,0)|0|0,1)|0;d=hw(b|0,((b|0)<0)<<31>>31|0,1)|0;d=iw(d|0,C|0,4,0)|0;d=jo(a,d,C)|0;if(d){if((b|0)>0){f=0;do{h=g+f|0;c=f<<1;ea(d+(c+2)>>0|0,da(20288+((da(h>>0|0,1,0,1)|0|0)>>>4)>>0|0,1,0,0)|0|0|0,1,0);ea(d+(c+3)>>0|0,da(20288+((da(h>>0|0,1,0,1)|0)&15)>>0|0,1,0,0)|0|0|0,1,0);f=f+1|0}while((f|0)!=(b|0))}b=b<<1;ea(d+(b+2)>>0|0,39|0,1,0);ea(d+(b+3)>>0|0,0|0,1,0);ea(d>>0|0,88|0,1,0);ea(d+1>>0|0,39|0,1,0);Vg(a,d,-1,1,-1);Vc(d)}}else if((f|0)==3){m=Rg(g,1)|0;if(m){b=0;d=0;f=0;while(1){g=da(m+f>>0|0,1,0,0)|0|0;if(g<<24>>24==39){g=iw(b|0,d|0,1,0)|0;d=C}else if(!(g<<24>>24)){g=d;break}else g=b;b=g;f=f+1|0}l=iw(b|0,g|0,3,0)|0;l=iw(l|0,C|0,f|0,((f|0)<0)<<31>>31|0)|0;l=jo(a,l,C)|0;if(l){ea(l>>0|0,39|0,1,0);d=da(m>>0|0,1,0,0)|0|0;b=l+1|0;if(!(d<<24>>24))f=2;else{h=m;f=2;g=0;c=1;do{ea(b>>0|0,d|0,1,0);if((da(h>>0|0,1,0,0)|0|0)==39){ea(l+f>>0|0,39|0,1,0);c=c+2|0}else c=f;g=g+1|0;h=m+g|0;d=da(h>>0|0,1,0,0)|0|0;f=c+1|0;b=l+c|0}while(d<<24>>24!=0)}ea(b>>0|0,39|0,1,0);ea(l+f>>0|0,0|0,1,0);Vg(a,l,f,1,1)}}}else if((f|0)==2){e=+Tg(g);ea(k|0,+e,8,1);ea(b|0,da(k|0,4,0,0)|0|0,4,0);ea(b+4|0,da(k+4|0,4,0,0)|0|0,4,0);$c(50,h,20272,b)|0;Sl(h,d,20,1)|0;if(e!=+(+da(d|0,8,1,0))){ea(k|0,+e,8,1);ea(b|0,da(k|0,4,0,0)|0|0,4,0);ea(b+4|0,da(k+4|0,4,0,0)|0|0,4,0);$c(50,h,20280,b)|0}Vg(a,h,-1,1,-1)}else Vg(a,20304,4,1,0);i=n;return}function xj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=da(a|0,4,0,0)|0|0;d=(da(a+32|0,4,0,0)|0|0)+32|0;b=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;c=a+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(a|0,b|0,4,0);ea(a+4|0,d|0,4,0);ea(c|0,4|0,2,0)}else Yg(a,b,d);return}function yj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=da(a|0,4,0,0)|0|0;c=da((da(a+32|0,4,0,0)|0|0)+80|0,4,0,0)|0|0;b=((c|0)<0)<<31>>31;d=a+8|0;if(!((da(d|0,2,0,0)|0)&9312)){ea(a|0,c|0,4,0);ea(a+4|0,b|0,4,0);ea(d|0,4|0,2,0)}else Yg(a,c,b);return}function zj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=da(a|0,4,0,0)|0|0;c=da((da(a+32|0,4,0,0)|0|0)+84|0,4,0,0)|0|0;b=((c|0)<0)<<31>>31;d=a+8|0;if(!((da(d|0,2,0,0)|0)&9312)){ea(a|0,c|0,4,0);ea(a+4|0,b|0,4,0);ea(d|0,4|0,2,0)}else Yg(a,c,b);return}function Aj(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=Rg(da(c|0,4,0,0)|0|0,1)|0;a:do if((r|0)!=0?(s=Sg(da(c|0,4,0,0)|0|0,1)|0,e=c+4|0,q=Rg(da(e|0,4,0,0)|0|0,1)|0,(q|0)!=0):0){if(!(da(q>>0|0,1,0,0)|0)){Zg(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0;break}o=Sg(da(e|0,4,0,0)|0|0,1)|0;e=c+8|0;n=Rg(da(e|0,4,0,0)|0|0,1)|0;if((n|0)!=0?(p=Sg(da(e|0,4,0,0)|0|0,1)|0,f=s+1|0,g=((f|0)<0)<<31>>31,d=jo(a,f,g)|0,(d|0)!=0):0){j=s-o|0;b:do if((j|0)>=0){k=p-o|0;l=((k|0)<0)<<31>>31;m=o+-1|0;c=0;i=0;while(1){e=r+c|0;b=da(e>>0|0,1,0,0)|0|0;if(b<<24>>24==(da(q>>0|0,1,0,0)|0|0)?(Yv(e,q,o)|0)==0:0){b=da(a|0,4,0,0)|0|0;h=da(b+32|0,4,0,0)|0|0;f=iw(f|0,g|0,k|0,l|0)|0;g=C;e=iw(f|0,g|0,-1,-1)|0;u=C;h=da(h+88|0,4,0,0)|0|0;t=((h|0)<0)<<31>>31;if((u|0)>(t|0)|(u|0)==(t|0)&e>>>0>h>>>0){e=13;break}h=Wc(d,f)|0;if(!h){e=15;break}jw(h+i|0,n|0,p|0)|0;e=m+c|0;b=i+p|0;d=h}else{ea(d+i>>0|0,b|0,1,0);e=c;b=i+1|0}c=e+1|0;if((e|0)<(j|0))i=b;else break b}if((e|0)==13){ea(a+20|0,18|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(b,10096,-1,1,0)|0;Vc(d);break a}else if((e|0)==15){Qd(a);Vc(d);break a}}else{c=0;b=0}while(0);k=s-c|0;jw(d+b|0,r+c|0,k|0)|0;k=b+k|0;ea(d+k>>0|0,0|0,1,0);Vg(a,d,k,1,1)}}while(0);return}function Bj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;b=Ug(da(c|0,4,0,0)|0|0)|0;e=C;c=da(d+88|0,4,0,0)|0|0;d=((c|0)<0)<<31>>31;if((e|0)>(d|0)|(e|0)==(d|0)&b>>>0>c>>>0){ea(a+20|0,18|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,10096,-1,1,0)|0}else _g(da(a|0,4,0,0)|0|0,b);return}function Cj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;d=Rg(da(c|0,4,0,0)|0|0,1)|0;e=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;ea(f|0,0|0,4,0);if((b|0)==2)b=Rg(da(c+4|0,4,0,0)|0|0,1)|0;else b=0;if((d|0)!=0?(Se(e,d,b,f)|0)!=0:0){b=da(f|0,4,0,0)|0|0;ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,b,-1,1,-1)|0;Vc(da(f|0,4,0,0)|0|0)}i=g;return}function Dj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0,i=0,j=0,k=0;b=da(a+8|0,4,0,0)|0|0;if(!((da(b+8|0,2,0,0)|0)&8192))d=kh(a,32)|0;else d=da(b+16|0,4,0,0)|0|0;a=Ge(da(c|0,4,0,0)|0|0)|0;do if((d|0)!=0&(a|0)!=5){b=d+16|0;e=b;e=iw(da(e|0,4,0,0)|0|0,da(e+4|0,4,0,0)|0|0,1,0)|0;ea(b|0,e|0,4,0);ea(b+4|0,C|0,4,0);b=da(c|0,4,0,0)|0|0;if((a|0)!=1){h=+Tg(b);ea(d|0,+(h+ +(+da(d|0,8,1,0))),8,1);ea(d+25>>0|0,1|0,1,0);break}e=Ug(b)|0;f=C;ea(d|0,+(+(+da(d|0,8,1,0))+(+(e>>>0)+4294967296.0*+(f|0))),8,1);g=d+24|0;if(!((da(g>>0|0,1,0,0)|0|(da(d+25>>0|0,1,0,0)|0))<<24>>24)){d=d+8|0;a=d;c=da(a|0,4,0,0)|0|0;a=da(a+4|0,4,0,0)|0|0;if((f|0)>-1|(f|0)==-1&e>>>0>4294967295){b=cw(-1,2147483647,c|0,a|0)|0;i=C;if(((a|0)>0|(a|0)==0&c>>>0>0)&((i|0)<(f|0)|(i|0)==(f|0)&b>>>0>>0))b=12;else b=11}else if((a|0)<0?(i=cw(1,-2147483648,c|0,a|0)|0,k=C,b=iw(e|0,f|0,1,0)|0,j=C,(k|0)>(j|0)|(k|0)==(j|0)&i>>>0>b>>>0):0)b=12;else b=11;if((b|0)==11){a=iw(c|0,a|0,e|0,f|0)|0;b=d;ea(b|0,a|0,4,0);ea(b+4|0,C|0,4,0);break}else if((b|0)==12){ea(g>>0|0,1|0,1,0);break}}}while(0);return}function Ej(a){a=a|0;var b=0,c=0,d=0;b=da(a+8|0,4,0,0)|0|0;if(!((da(b+8|0,2,0,0)|0)&8192))b=kh(a,0)|0;else b=da(b+16|0,4,0,0)|0|0;do if((b|0)!=0?(c=b+16|0,d=da(c+4|0,4,0,0)|0|0,(d|0)>0|(d|0)==0&(da(c|0,4,0,0)|0|0)>>>0>0):0){if(da(b+24>>0|0,1,0,0)|0){ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,20248,-1,1,-1)|0;break}if(da(b+25>>0|0,1,0,0)|0){Xg(da(a|0,4,0,0)|0|0,+(+da(b|0,8,1,0)));break}d=b+8|0;c=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;b=da(a|0,4,0,0)|0|0;a=b+8|0;if(!((da(a|0,2,0,0)|0)&9312)){ea(b|0,c|0,4,0);ea(b+4|0,d|0,4,0);ea(a|0,4|0,2,0);break}else{Yg(b,c,d);break}}while(0);return}function Fj(a){a=a|0;var b=0,c=0.0;b=da(a+8|0,4,0,0)|0|0;if(!((da(b+8|0,2,0,0)|0)&8192))b=kh(a,0)|0;else b=da(b+16|0,4,0,0)|0|0;if(!b)c=0.0;else c=+(+da(b|0,8,1,0));Xg(da(a|0,4,0,0)|0|0,c);return}function Gj(a){a=a|0;var b=0,c=0,d=0;b=da(a+8|0,4,0,0)|0|0;if(!((da(b+8|0,2,0,0)|0)&8192))b=kh(a,0)|0;else b=da(b+16|0,4,0,0)|0|0;if((b|0)!=0?(d=b+16|0,c=da(d|0,4,0,0)|0|0,d=da(d+4|0,4,0,0)|0|0,(d|0)>0|(d|0)==0&c>>>0>0):0)Xg(da(a|0,4,0,0)|0|0,+(+da(b|0,8,1,0))/(+(c>>>0)+4294967296.0*+(d|0)));return}function Hj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=da(a+8|0,4,0,0)|0|0;if(!((da(d+8|0,2,0,0)|0)&8192))d=kh(a,8)|0;else d=da(d+16|0,4,0,0)|0|0;if(!b){if(d)e=7}else if((d|0)!=0?(1431655765>>>((da((da(c|0,4,0,0)|0|0)+8|0,2,0,1)|0|0)&31)&1|0)!=0:0)e=7;if((e|0)==7){a=d;a=iw(da(a|0,4,0,0)|0|0,da(a+4|0,4,0,0)|0|0,1,0)|0;ea(d|0,a|0,4,0);ea(d+4|0,C|0,4,0)}return}function Ij(a){a=a|0;var b=0,c=0,d=0;b=da(a+8|0,4,0,0)|0|0;if(!((da(b+8|0,2,0,0)|0)&8192))b=kh(a,0)|0;else b=da(b+16|0,4,0,0)|0|0;if(!b){c=0;d=0}else{d=b;c=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0}b=da(a|0,4,0,0)|0|0;a=b+8|0;if(!((da(a|0,2,0,0)|0)&9312)){ea(b|0,c|0,4,0);ea(b+4|0,d|0,4,0);ea(a|0,4|0,2,0)}else Yg(b,c,d);return}function Jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!(-1431655766>>>((da((da(c|0,4,0,0)|0|0)+8|0,2,0,1)|0)&31)&1)){d=da(a+8|0,4,0,0)|0|0;if(!((da(d+8|0,2,0,0)|0)&8192))e=kh(a,28)|0;else e=da(d+16|0,4,0,0)|0|0;if(e){a=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;f=e+24|0;d=(da(f>>0|0,1,0,0)|0|0)==0;ea(f>>0|0,2|0,1,0);ea(e+20|0,da(a+88|0,4,0,0)|0|0,4,0);do if(!d){if((b|0)==2){b=c+4|0;d=Rg(da(b|0,4,0,0)|0|0,1)|0;b=Sg(da(b|0,4,0,0)|0|0,1)|0;if(!b)break}else{b=1;d=20240}Rk(e,d,b)}while(0);d=Rg(da(c|0,4,0,0)|0|0,1)|0;b=Sg(da(c|0,4,0,0)|0|0,1)|0;if(d)Rk(e,d,b)}}return}function Kj(a){a=a|0;var b=0,c=0;b=da(a+8|0,4,0,0)|0|0;if(!((da(b+8|0,2,0,0)|0)&8192))b=kh(a,0)|0;else b=da(b+16|0,4,0,0)|0|0;do if(b){c=da(b+25>>0|0,1,0,0)|0|0;if(c<<24>>24==2){ea(a+20|0,18|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,10096,-1,1,0)|0;break}else if(c<<24>>24==1){Qd(a);break}else{Vg(a,sg(b)|0,-1,1,1);break}}while(0);return}function Lj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;h=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;d=Rg(da(c|0,4,0,0)|0|0,1)|0;f=Rg(da(c+4|0,4,0,0)|0|0,1)|0;k=Sg(da(c|0,4,0,0)|0|0,1)|0;a:do if((k|0)<=(da(h+120|0,4,0,0)|0|0)){do if((b|0)==3){c=Rg(da(c+8|0,4,0,0)|0|0,1)|0;ea(e|0,c|0,4,0);if(!c)break a;if((Mn(c,-1)|0)==1){c=Ln(e)|0;break}else{ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,20192,-1,1,-1)|0;break a}}else c=0;while(0);if((f|0)!=0&(d|0)!=0){b=Fh(d,f,da((da(a+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,c)|0;d=da(a|0,4,0,0)|0|0;e=((b|0)<0)<<31>>31;c=d+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(d|0,b|0,4,0);ea(d+4|0,e|0,4,0);ea(c|0,4|0,2,0);break}else{Yg(d,b,e);break}}}else{ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,20152,-1,1,-1)|0}while(0);i=g;return}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;if((i|0)>=(j|0))ba();m=n;g=n+16|0;l=Rg(da(c|0,4,0,0)|0|0,1)|0;h=Rg(da(c+4|0,4,0,0)|0|0,1)|0;k=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;a:do if((l|0)!=0?(da(l>>0|0,1,0,0)|0|0)!=0:0){b=0;c=l;b:while(1){e=b;d=c;while(1){d=d+e|0;f=Bn(d,g)|0;e=da(g|0,4,0,0)|0|0;if((e|0)==151)e=f;else if((e|0)==22|(e|0)==125)break b;else{c=d;b=f;break}}if(!(da(c>>0|0,1,0,0)|0))break a}ea(m|0,c-l|0,4,0);ea(m+4|0,l|0,4,0);ea(m+8|0,h|0,4,0);ea(m+12|0,c+b|0,4,0);Vg(a,th(k,19464,m)|0,-1,1,75)}while(0);i=n;return}function Nj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();o=p;k=p+16|0;n=Rg(da(c|0,4,0,0)|0|0,1)|0;l=Rg(da(c+4|0,4,0,0)|0|0,1)|0;m=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;a:do if((n|0)!=0?(da(n>>0|0,1,0,0)|0|0)!=0:0){h=3;b=0;c=n;while(1){e=b;d=c;do{d=d+e|0;e=Bn(d,k)|0;f=da(k|0,4,0,0)|0|0}while((f|0)==151);g=e;e=(f|0)==122|(f|0)==107?0:h+1|0;if((e|0)==2)if((f|0)==5|(f|0)==46|(f|0)==137)break;else c=2;else c=e;if(!(da(d>>0|0,1,0,0)|0))break a;else{h=c;b=g;c=d}}ea(o|0,c-n|0,4,0);ea(o+4|0,n|0,4,0);ea(o+8|0,l|0,4,0);ea(o+12|0,c+b|0,4,0);Vg(a,th(m,19464,o)|0,-1,1,75)}while(0);i=p;return}function Oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();o=p;m=p+16|0;n=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;d=Rg(da(c|0,4,0,0)|0|0,1)|0;l=Rg(da(c+4|0,4,0,0)|0|0,1)|0;k=Rg(da(c+8|0,4,0,0)|0|0,1)|0;if(!((d|0)==0|(l|0)==0)){a:do if(!(da(d>>0|0,1,0,0)|0))b=0;else{e=d;b=0;do{c=Bn(e,m)|0;if((da(m|0,4,0,0)|0|0)==105){g=e;while(1){e=g+c|0;f=Bn(e,m)|0;if((da(m|0,4,0,0)|0|0)==151){c=f;g=e}else break}if(!e)break a;h=iw(f|0,((f|0)<0)<<31>>31|0,1,0)|0;h=lh(n,h,C)|0;if(!h)break a;jw(h|0,e|0,f|0)|0;ea(h+f>>0|0,0|0,1,0);ko(h);if(!(cd(l,h)|0)){ea(o|0,((b|0)!=0?b:10360)|0,4,0);ea(o+4|0,e-d|0,4,0);ea(o+8|0,d|0,4,0);ea(o+12|0,k|0,4,0);q=th(n,19440,o)|0;lg(n,b);d=g+(f+c)|0;b=q}lg(n,h);c=f}e=e+c|0}while((da(e>>0|0,1,0,0)|0|0)!=0)}while(0);ea(o|0,((b|0)!=0?b:10360)|0,4,0);ea(o+4|0,d|0,4,0);Vg(a,th(n,19456,o)|0,-1,1,75);lg(n,b)}i=p;return}function Pj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;i=i+48|0;if((i|0)>=(j|0))ba();d=e;if(!(lo(a,b,c,d)|0)){mo(d);b=d;Xg(da(a|0,4,0,0)|0|0,(+((da(b|0,4,0,0)|0|0)>>>0)+4294967296.0*+(da(b+4|0,4,0,0)|0|0))/864.0e5)}i=e;return}function Qj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+160|0;if((i|0)>=(j|0))ba();d=g+48|0;e=g;f=g+60|0;if(!(lo(a,b,c,e)|0)){no(e);c=da(e+12|0,4,0,0)|0|0;b=da(e+16|0,4,0,0)|0|0;ea(d|0,da(e+8|0,4,0,0)|0|0,4,0);ea(d+4|0,c|0,4,0);ea(d+8|0,b|0,4,0);$c(100,f,20136,d)|0;Vg(a,f,-1,1,-1)}i=g;return}function Rj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+160|0;if((i|0)>=(j|0))ba();d=g+48|0;e=g;f=g+60|0;if(!(lo(a,b,c,e)|0)){oo(e);c=da(e+24|0,4,0,0)|0|0;b=~~+(+da(e+32|0,8,1,0));ea(d|0,da(e+20|0,4,0,0)|0|0,4,0);ea(d+4|0,c|0,4,0);ea(d+8|0,b|0,4,0);$c(100,f,20120,d)|0;Vg(a,f,-1,1,-1)}i=g;return}function Sj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0;g=i;i=i+176|0;if((i|0)>=(j|0))ba();d=g+48|0;e=g;f=g+72|0;if(!(lo(a,b,c,e)|0)){no(e);oo(e);l=da(e+12|0,4,0,0)|0|0;k=da(e+16|0,4,0,0)|0|0;h=da(e+20|0,4,0,0)|0|0;c=da(e+24|0,4,0,0)|0|0;b=~~+(+da(e+32|0,8,1,0));ea(d|0,da(e+8|0,4,0,0)|0|0,4,0);ea(d+4|0,l|0,4,0);ea(d+8|0,k|0,4,0);ea(d+12|0,h|0,4,0);ea(d+16|0,c|0,4,0);ea(d+20|0,b|0,4,0);$c(100,f,20088,d)|0;Vg(a,f,-1,1,-1)}i=g;return}function Tj(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=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.0,B=0;z=i;i=i+208|0;if((i|0)>=(j|0))ba();v=z+96|0;w=z+48|0;y=z+104|0;x=z;a:do if(((b|0)!=0?(u=Rg(da(c|0,4,0,0)|0|0,1)|0,(u|0)!=0):0)?(lo(a,b+-1|0,c+4|0,w)|0)==0:0){g=da(a|0,4,0,0)|0|0;f=da(g+32|0,4,0,0)|0|0;c=1;b=0;e=0;b:while(1){d=da(u+e>>0|0,1,0,0)|0|0;c:do if(d<<24>>24==37){d=e+1|0;switch(da(u+d>>0|0,1,0,0)|0|0){case 87:case 83:case 77:case 109:case 72:case 100:{c=iw(c|0,b|0,1,0)|0;b=C;break c}case 102:{c=iw(c|0,b|0,8,0)|0;b=C;break c}case 74:case 115:{c=iw(c|0,b|0,50,0)|0;b=C;break c}case 37:case 119:break c;case 106:{c=iw(c|0,b|0,3,0)|0;b=C;break c}case 89:{c=iw(c|0,b|0,8,0)|0;b=C;break c}default:break a}}else if(!(d<<24>>24))break b;else d=e;while(0);c=iw(c|0,b|0,1,0)|0;b=C;e=d+1|0}if(!(b>>>0<0|(b|0)==0&c>>>0<100)){t=da(f+88|0,4,0,0)|0|0;s=((t|0)<0)<<31>>31;if(b>>>0>s>>>0|(b|0)==(s|0)&c>>>0>t>>>0){ea(a+20|0,18|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(g,10096,-1,1,0)|0;break}b=dw(0,c|0,32)|0;b=lh(f,b,C)|0;if(!b){Qd(a);break}else t=b}else t=y;mo(w);no(w);oo(w);h=w+16|0;l=w+32|0;m=w+20|0;n=x+42|0;o=x+12|0;p=x+16|0;q=w+12|0;r=w+24|0;s=w+8|0;f=0;b=0;d:while(1){g=da(u+f>>0|0,1,0,0)|0|0;e:do if(g<<24>>24==37){f=f+1|0;c=u+f|0;do switch(da(c>>0|0,1,0,0)|0|0){case 109:{ea(v|0,da(q|0,4,0,0)|0|0,4,0);$c(3,t+b|0,19888,v)|0;b=b+2|0;break e}case 77:{ea(v|0,da(r|0,4,0,0)|0|0,4,0);$c(3,t+b|0,19888,v)|0;b=b+2|0;break e}case 102:{A=+(+da(l|0,8,1,0));e=t+b|0;ea(k|0,+(A>59.999?59.999:A),8,1);ea(v|0,da(k|0,4,0,0)|0|0,4,0);ea(v+4|0,da(k+4|0,4,0,0)|0|0,4,0);$c(7,e,19896,v)|0;if(!e)g=0;else{g=e;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;g=g-e&1073741823}b=g+b|0;break e}case 100:{ea(v|0,da(h|0,4,0,0)|0|0,4,0);$c(3,t+b|0,19888,v)|0;b=b+2|0;break e}case 83:{ea(v|0,~~+(+da(l|0,8,1,0))|0,4,0);$c(3,t+b|0,19888,v)|0;b=b+2|0;break e}case 119:{c=w;c=iw(da(c|0,4,0,0)|0|0,da(c+4|0,4,0,0)|0|0,1296e5,0)|0;c=pw(c|0,C|0,864e5,0)|0;c=qw(c|0,C|0,7,0)|0;ea(t+b>>0|0,c+48|0,1,0);b=b+1|0;break e}case 89:{e=t+b|0;ea(v|0,da(s|0,4,0,0)|0|0,4,0);$c(5,e,19928,v)|0;if(!e)g=0;else{g=e;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;g=g-e&1073741823}b=g+b|0;break e}case 106:case 87:{g=x+0|0;e=w+0|0;d=g+48|0;do{ea(g|0,da(e|0,4,0,0)|0|0,4,0);g=g+4|0;e=e+4|0}while((g|0)<(d|0));ea(n>>0|0,0|0,1,0);ea(o|0,1|0,4,0);ea(p|0,1|0,4,0);mo(x);g=w;d=x;B=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;g=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,432e5,0)|0;e=C;d=cw(g|0,e|0,B|0,d|0)|0;d=pw(d|0,C|0,864e5,0)|0;if((da(c>>0|0,1,0,0)|0|0)==87){c=pw(g|0,e|0,864e5,0)|0;c=qw(c|0,C|0,7,0)|0;ea(v|0,(d+7-c|0)/7|0|0,4,0);$c(3,t+b|0,19888,v)|0;b=b+2|0;break e}else{ea(v|0,d+1|0,4,0);$c(4,t+b|0,19904,v)|0;b=b+3|0;break e}}case 72:{ea(v|0,da(m|0,4,0,0)|0|0,4,0);$c(3,t+b|0,19888,v)|0;b=b+2|0;break e}case 74:{e=t+b|0;c=w;ea(k|0,+((+((da(c|0,4,0,0)|0|0)>>>0)+4294967296.0*+(da(c+4|0,4,0,0)|0|0))/864.0e5),8,1);ea(v|0,da(k|0,4,0,0)|0|0,4,0);ea(v+4|0,da(k+4|0,4,0,0)|0|0,4,0);$c(20,e,19912,v)|0;if(!e)g=0;else{g=e;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;g=g-e&1073741823}b=g+b|0;break e}case 115:{e=t+b|0;d=w;d=pw(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0,1e3,0)|0;d=iw(d|0,C|0,-413362496,-50)|0;c=v;ea(c|0,d|0,4,0);ea(c+4|0,C|0,4,0);$c(30,e,19920,v)|0;if(!e)g=0;else{g=e;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;g=g-e&1073741823}b=g+b|0;break e}default:{ea(t+b>>0|0,37|0,1,0);b=b+1|0;break e}}while(0)}else if(!(g<<24>>24))break d;else{ea(t+b>>0|0,g|0,1,0);b=b+1|0}while(0);f=f+1|0}ea(t+b>>0|0,0|0,1,0);Vg(a,t,-1,1,(t|0)==(y|0)?-1:75)}while(0);i=z;return}function Uj(a,b,c){a=a|0;b=b|0;c=c|0;Rj(a,0,0);return}function Vj(a,b,c){a=a|0;b=b|0;c=c|0;Sj(a,0,0);return}function Wj(a,b,c){a=a|0;b=b|0;c=c|0;Qj(a,0,0);return}function Xj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=Ug(da(c|0,4,0,0)|0|0)|0;g=f+1&-2;d=Ug(da(c+4|0,4,0,0)|0|0)|0;e=(g<<3)+56|0;c=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;b=lh(c,e,((e|0)<0)<<31>>31)|0;if(!b)Qd(a);else{ew(b|0,0,e|0)|0;ea(b+52|0,c|0,4,0);ea(b|0,0|0,4,0);ea(b+8|0,f|0,4,0);ea(b+12|0,d|0,4,0);c=b+56|0;ea(b+24|0,c|0,4,0);ea(b+20|0,c+(g<<2)|0,4,0);Vg(a,b,56,0,20)}return}function Yj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=od(da(c|0,4,0,0)|0|0)|0;e=Ug(da(c+4|0,4,0,0)|0|0)|0;if(!(da(f|0,4,0,0)|0)){a=f+8|0;if((da(a|0,4,0,0)|0|0)>0){b=da(f+20|0,4,0,0)|0|0;c=0;do{ea(b+(c<<2)|0,1|0,4,0);c=c+1|0}while((c|0)<(da(a|0,4,0,0)|0|0))}}else{if((e|0)>0){a=da(f+20|0,4,0,0)|0|0;c=0;do{b=a+(c<<2)|0;ea(b|0,(da(b|0,4,0,0)|0|0)+1|0,4,0);c=c+1|0}while((c|0)!=(e|0))}a=f+8|0;if((e|0)<(da(a|0,4,0,0)|0|0)){b=da(f+24|0,4,0,0)|0|0;d=da(f+20|0,4,0,0)|0|0;c=e;do{e=b+(c<<2)|0;ea(e|0,(da(e|0,4,0,0)|0|0)+1|0,4,0);ea(d+(c<<2)|0,1|0,4,0);c=c+1|0}while((c|0)<(da(a|0,4,0,0)|0|0))}}ea(f|0,(da(f|0,4,0,0)|0|0)+1|0,4,0);return}function Zj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;f=od(da(c|0,4,0,0)|0|0)|0;g=f+12|0;c=((da(g|0,4,0,0)|0|0)*25|0)+25|0;h=pg(c,((c|0)<0)<<31>>31)|0;if(!h)Qd(a);else{ew(h|0,0,c|0)|0;c=k;ea(c|0,da(f|0,4,0,0)|0|0,4,0);ea(c+4|0,0|0,4,0);$c(24,h,28696,k)|0;c=h;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;if((da(g|0,4,0,0)|0|0)>0){d=f+24|0;e=0;b=h+(c-h&1073741823)|0;while(1){m=(da((da(d|0,4,0,0)|0|0)+(e<<2)|0,4,0,0)|0|0)+1|0;c=da(f|0,4,0,0)|0|0;n=iw(m|0,0,-1,-1)|0;c=iw(n|0,C|0,c|0,0)|0;m=sw(c|0,C|0,m|0,0)|0;c=k;ea(c|0,m|0,4,0);ea(c+4|0,C|0,4,0);$c(24,b,28704,k)|0;if(!b)c=0;else{c=b;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;c=c-b&1073741823}e=e+1|0;if((e|0)>=(da(g|0,4,0,0)|0|0))break;else b=b+c|0}}Vg(a,h,-1,1,1)}i=l;return}function _j(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;l=i;i=i+144|0;if((i|0)>=(j|0))ba();h=l;k=l+8|0;f=Rg(da(c|0,4,0,0)|0|0,1)|0;g=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;f=(f|0)==0?10360:f;e=da(g+20|0,4,0,0)|0|0;a:do if((e|0)>0){b=da(g+16|0,4,0,0)|0|0;c=0;do{d=b+(c<<4)|0;if((da(b+(c<<4)+4|0,4,0,0)|0|0)!=0?(cd(da(d|0,4,0,0)|0|0,f)|0)==0:0)break a;c=c+1|0}while((c|0)<(e|0))}else{c=0;d=0}while(0);do if((c|0)<(e|0)){if((c|0)<2){ea(h|0,f|0,4,0);$c(128,k,29256,h)|0;m=16;break}if(!(da(g+63>>0|0,1,0,0)|0)){$c(128,k,29288,h)|0;m=16;break}c=d+4|0;b=da(c|0,4,0,0)|0|0;if((da(b+8>>0|0,1,0,0)|0|0)==0?(da(b+16|0,4,0,0)|0|0)==0:0){Ll(b);ea(c|0,0|0,4,0);ea(d+12|0,0|0,4,0);Dg(g);break}ea(h|0,f|0,4,0);$c(128,k,29336,h)|0;m=16}else{ea(h|0,f|0,4,0);$c(128,k,29232,h)|0;m=16}while(0);if((m|0)==16){ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,k,-1,1,-1)|0}i=l;return}function $j(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;w=i;i=i+32|0;if((i|0)>=(j|0))ba();s=w;b=w+20|0;f=w+16|0;g=w+12|0;v=w+8|0;h=w+4|0;u=da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;ea(b|0,0|0,4,0);ea(f|0,0|0,4,0);ea(v|0,0|0,4,0);r=Rg(da(c|0,4,0,0)|0|0,1)|0;n=Rg(da(c+4|0,4,0,0)|0|0,1)|0;r=(r|0)==0?10360:r;n=(n|0)==0?10360:n;q=u+20|0;d=da(q|0,4,0,0)|0|0;e=da(u+116|0,4,0,0)|0|0;a:do if((d|0)<(e+2|0)){if(!(da(u+63>>0|0,1,0,0)|0)){d=th(u,29456,s)|0;ea(v|0,d|0,4,0);b=0;t=42;break}o=u+16|0;e=da(o|0,4,0,0)|0|0;b:do if((d|0)>0){c=0;while(1){if(!(cd(da(e+(c<<4)|0,4,0,0)|0|0,n)|0))break;c=c+1|0;if((c|0)>=(d|0))break b}ea(s|0,n|0,4,0);d=th(u,29504,s)|0;ea(v|0,d|0,4,0);b=0;t=42;break a}while(0);if((e|0)!=(u+456|0)){e=qo(u,e,(d<<4)+16|0,0)|0;if(!e)break;else m=e}else{e=lh(u,48,0)|0;if(!e)break;m=da(o|0,4,0,0)|0|0;ea(e+0|0,da(m+0|0,4,0,0)|0|0,4,0);ea(e+4|0,da(m+4|0,4,0,0)|0|0,4,0);ea(e+8|0,da(m+8|0,4,0,0)|0|0,4,0);ea(e+12|0,da(m+12|0,4,0,0)|0|0,4,0);ea(e+16|0,da(m+16|0,4,0,0)|0|0,4,0);ea(e+20|0,da(m+20|0,4,0,0)|0|0,4,0);ea(e+24|0,da(m+24|0,4,0,0)|0|0,4,0);ea(e+28|0,da(m+28|0,4,0,0)|0|0,4,0);m=e}ea(o|0,m|0,4,0);k=da(q|0,4,0,0)|0|0;l=m+(k<<4)|0;ea(l+0|0,0|0,4,0);ea(l+4|0,0|0,4,0);ea(l+8|0,0|0,4,0);ea(l+12|0,0|0,4,0);ea(g|0,da(u+48|0,4,0,0)|0|0,4,0);e=Vn(da((da(u|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,r,g,h,b,f)|0;if((e|0)==7)ea(u+65>>0|0,1|0,1,0);else if(!e){e=da(g|0,4,0,0)|0|256;ea(g|0,e|0,4,0);f=da(b|0,4,0,0)|0|0;g=m+(k<<4)+4|0;e=ym(da(h|0,4,0,0)|0|0,f,u,g,0,e)|0;Vc(f);ea(q|0,(da(q|0,4,0,0)|0|0)+1|0,4,0);if((e|0)==19){ea(v|0,th(u,29536,s)|0|0,4,0);e=1}else if(!e){e=Wn(u,da(g|0,4,0,0)|0|0)|0;ea(m+(k<<4)+12|0,e|0,4,0);if(e)if((da(e+76>>0|0,1,0,0)|0|0)!=0?(da(e+77>>0|0,1,0,0)|0|0)!=(da(u+62>>0|0,1,0,0)|0|0):0){ea(v|0,th(u,13232,s)|0|0,4,0);e=1}else e=0;else e=7;f=da(g|0,4,0,0)|0|0;c=da(f+4|0,4,0,0)|0|0;ea(c+4|0,da(f|0,4,0,0)|0|0,4,0);c=da(c|0,4,0,0)|0|0;d=da(u+66>>0|0,1,0,0)|0|0;do if(!(da(c+12>>0|0,1,0,0)|0)){b=da(c+208|0,4,0,0)|0|0;if((b|0)!=0?(da(b+43>>0|0,1,0,0)|0|0)==2:0)break;ea(c+4>>0|0,d|0,1,0)}while(0);c=da((da(o|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;if(!c)c=0;else{h=da(c+4|0,4,0,0)|0|0;ea(h+4|0,da(c|0,4,0,0)|0|0,4,0);c=(da(h+22|0,2,0,1)|0|0)>>>2&1}ro(f,c)|0;so(da(g|0,4,0,0)|0|0,(da(u+24|0,4,0,0)|0)&28|3)}ea(m+(k<<4)+8>>0|0,3|0,1,0);b=jh(u,n)|0;ea(l|0,b|0,4,0);b=(e|0)==0&(b|0)==0?7:e;if(!b){c=da(q|0,4,0,0)|0|0;if((c|0)>0){d=da(o|0,4,0,0)|0|0;e=0;do{b=da(d+(e<<4)+4|0,4,0,0)|0|0;if(b)ea((da(b+4|0,4,0,0)|0|0)+4|0,da(b|0,4,0,0)|0|0,4,0);e=e+1|0}while((e|0)!=(c|0))}b=Yh(u,v)|0;if(!b)break}d=(da(q|0,4,0,0)|0|0)+-1|0;c=da((da(o|0,4,0,0)|0|0)+(d<<4)+4|0,4,0,0)|0|0;if(c){Ll(c);m=da(o|0,4,0,0)|0|0;ea(m+(d<<4)+4|0,0|0,4,0);ea(m+(d<<4)+12|0,0|0,4,0)}Dg(u);ea(q|0,d|0,4,0);if((b|0)==7|(b|0)==3082){ea(u+65>>0|0,1|0,1,0);lg(u,da(v|0,4,0,0)|0|0);d=th(u,15776,s)|0;ea(v|0,d|0,4,0);t=42;break}d=da(v|0,4,0,0)|0|0;if(d){t=43;break}ea(s|0,r|0,4,0);d=th(u,29568,s)|0;ea(v|0,d|0,4,0);t=42;break}m=da(f|0,4,0,0)|0|0;ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,m,-1,1,-1)|0;Vc(m)}else{ea(s|0,e|0,4,0);d=th(u,29416,s)|0;ea(v|0,d|0,4,0);b=0;t=42}while(0);if((t|0)==42)if(!d){p=b;t=44}else t=43;if((t|0)==43){ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,d,-1,1,-1)|0;lg(u,da(v|0,4,0,0)|0|0);p=b;t=44}if((t|0)==44?(p|0)!=0:0)Od(a,p);i=w;return}function ak(a){a=a|0;if(a){hk(a,0)|0;Vc(da(a+24|0,4,0,0)|0|0);to(a)}return 0}function bk(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,k=0;k=a+12|0;f=c&131071;j=b;h=e;i=0;a:while(1){while(1){e=bb(da(k|0,4,0,0)|0|0,d|0,0)|0;if(!((e|0)==(d|0)&(((e|0)<0)<<31>>31|0)==(h|0))){d=4;break a}g=$b[(fa(da(47552+100|0,4,0,0)|0|0,63|0)|0)&63](da(k|0,4,0,0)|0|0,j,f)|0;if((f|0)==(g|0)){e=i;d=13;break a}if((g|0)>=0){e=g;break}e=da(Gb()|0|0,4,0,0)|0|0;if((e|0)!=4){f=g;d=10;break a}}if((e|0)<=0){f=0;e=i;d=13;break}g=iw(e|0,((e|0)<0)<<31>>31|0,d|0,h|0)|0;f=f-e|0;j=j+e|0;h=C;d=g;i=e+i|0}do if((d|0)==4)if((e|0)==-1){ea(a+20|0,da(Gb()|0|0,4,0,0)|0|0,4,0);e=-1;break}else{ea(a+20|0,0|0,4,0);e=-1;break}else if((d|0)==10){ea(a+20|0,e|0,4,0);e=0;d=13}while(0);if((d|0)==13)e=e+f|0;if((e|0)!=(c|0))if((e|0)<0)e=266;else{ea(a+20|0,0|0,4,0);ew(b+e|0,0,c-e|0)|0;e=522}else e=0;return e|0}function ck(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;a:do if((c|0)>0){g=a+12|0;h=a+20|0;f=c;while(1){c=uo(da(g|0,4,0,0)|0|0,d,e,b,f,h)|0;if((c|0)<=0)break;f=f-c|0;d=iw(c|0,((c|0)<0)<<31>>31|0,d|0,e|0)|0;if((f|0)<=0){c=0;break a}else{b=b+c|0;e=C}}if((c|0)<0?(da(h|0,4,0,0)|0|0)!=28:0){c=778;break}ea(a+20|0,0|0,4,0);c=13}else c=0;while(0);return c|0}function dk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=da(a+40|0,4,0,0)|0|0;if((d|0)>0){e=((d|0)<0)<<31>>31;c=iw(b|0,c|0,-1,-1)|0;c=iw(c|0,C|0,d|0,e|0)|0;b=C;d=qw(c|0,b|0,d|0,e|0)|0;d=cw(c|0,b|0,d|0,C|0)|0}else d=b;c=da(a+12|0,4,0,0)|0|0;while(1){b=qc[(fa(da(47552+76|0,4,0,0)|0|0,127|0)|0)&127](c,d)|0;if((b|0)>=0){d=6;break}b=Gb()|0;if((da(b|0,4,0,0)|0|0)!=4){d=8;break}}if((d|0)==6)if(!b)b=0;else{b=Gb()|0;d=8}if((d|0)==8){ea(a+20|0,da(b|0,4,0,0)|0|0,4,0);b=bo(1546,47928,da(a+32|0,4,0,0)|0|0,29004)|0}return b|0}function ek(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f;if(!(Fb(da(a+12|0,4,0,0)|0|0)|0)){e=a+18|0;if(!((da(e|0,2,0,0)|0)&8))b=0;else{b=qc[(fa(da(47552+208|0,4,0,0)|0|0,127|0)|0)&127](da(a+32|0,4,0,0)|0|0,d)|0;c=da(d|0,4,0,0)|0|0;if((b|0)==0&(c|0)>-1){Fb(c|0)|0;$n(a,da(d|0,4,0,0)|0|0,28974);b=0}else b=(b|0)==14?0:b;ea(e|0,(da(e|0,2,0,1)|0|0)&65527|0,2,0)}}else{ea(a+20|0,da(Gb()|0|0,4,0,0)|0|0,4,0);b=bo(1034,48360,da(a+32|0,4,0,0)|0|0,28960)|0}i=f;return b|0}function fk(a,b){a=a|0;b=b|0;var c=0,d=0;d=i;i=i+80|0;if((i|0)>=(j|0))ba();c=d;if(!(qc[(fa(da(47552+64|0,4,0,0)|0|0,127|0)|0)&127](da(a+12|0,4,0,0)|0|0,c)|0)){c=da(c+36|0,4,0,0)|0|0;a=(c|0)==1;ea(b|0,(a?0:c)|0,4,0);ea(b+4|0,(a?0:((c|0)<0)<<31>>31)|0,4,0);c=0}else{ea(a+20|0,da(Gb()|0|0,4,0,0)|0|0,4,0);c=1802}i=d;return c|0}function gk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=da(a+24|0,4,0,0)|0|0;e=a+16|0;a:do if(!(da(e>>0|0,1,0,0)|0)){c=qc[(fa(da(47552+220|0,4,0,0)|0|0,127|0)|0)&127](d,511)|0;if((c|0)>=0){ea(e>>0|0,b|0,1,0);break}d=da(Gb()|0|0,4,0,0)|0|0;switch(d|0){case 13:case 37:case 4:case 16:case 110:case 11:case 17:{c=5;break a}case 1:{c=3;break}default:c=3850}ea(a+20|0,d|0,4,0)}else{ea(e>>0|0,b|0,1,0);Xa(d|0,0)|0;c=0}while(0);return c|0}function hk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=da(a+24|0,4,0,0)|0|0;e=a+16|0;a:do if((da(e>>0|0,1,0,1)|0|0|0)==(b|0))c=0;else{if((b|0)==1){ea(e>>0|0,1|0,1,0);c=0;break}do if((kc[(fa(da(47552+232|0,4,0,0)|0|0,127|0)|0)&127](d)|0)<0){c=Gb()|0;b=da(c|0,4,0,0)|0|0;if((b|0)==20){if((kc[(fa(da(47552+196|0,4,0,0)|0|0,127|0)|0)&127](d)|0)>=0)break;b=da(c|0,4,0,0)|0|0}d=(b|0)!=2;c=d?2058:0;if(!d)break a;ea(a+20|0,b|0,4,0);break a}while(0);ea(e>>0|0,0|0,1,0);c=0}while(0);return c|0}function ik(a,b){a=a|0;b=b|0;if((da(a+16>>0|0,1,0,1)|0|0)>1)a=1;else a=(qc[(fa(da(47552+28|0,4,0,0)|0|0,127|0)|0)&127](da(a+24|0,4,0,0)|0|0,0)|0)==0&1;ea(b|0,a|0,4,0);return 0}function jk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+80|0;if((i|0)>=(j|0))ba();e=l;a:do switch(b|0){case 4:{ea(c|0,da(a+20|0,4,0,0)|0|0,4,0);d=0;break}case 20:{ea(c|0,wo(a)|0|0,4,0);d=0;break}case 12:{ea(e|0,da((da(a+4|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,4,0);ea(c|0,Zc(10344,e)|0|0,4,0);d=0;break}case 10:{vo(a,4,c);d=0;break}case 6:{ea(a+40|0,da(c|0,4,0,0)|0|0,4,0);d=0;break}case 24:{d=0;break}case 5:{b=c;c=da(b|0,4,0,0)|0|0;b=da(b+4|0,4,0,0)|0|0;d=a+40|0;if((da(d|0,4,0,0)|0|0)>0){k=a+12|0;if(!(qc[(fa(da(47552+64|0,4,0,0)|0|0,127|0)|0)&127](da(k|0,4,0,0)|0|0,e)|0)){d=da(d|0,4,0,0)|0|0;g=((d|0)<0)<<31>>31;c=iw(c|0,b|0,-1,-1)|0;c=iw(c|0,C|0,d|0,g|0)|0;h=C;g=qw(c|0,h|0,d|0,g|0)|0;g=cw(c|0,h|0,g|0,C|0)|0;h=C;c=da(e+36|0,4,0,0)|0|0;d=((c|0)<0)<<31>>31;do if((h|0)>(d|0)|(h|0)==(d|0)&g>>>0>c>>>0){f=da(e+40|0,4,0,0)|0|0;b=c+-1+(f<<1)|0;b=b+~((b|0)%(f|0)|0)|0;c=((b|0)<0)<<31>>31;d=a+20|0;if((c|0)<(h|0)|(c|0)==(h|0)&b>>>0>>0){e=((f|0)<0)<<31>>31;do{a=(uo(da(k|0,4,0,0)|0|0,b,c,10360,1,d)|0)==1;b=iw(b|0,c|0,f|0,e|0)|0;c=C;if(!a){d=778;break a}}while((c|0)<(h|0)|(c|0)==(h|0)&b>>>0>>0);b=qw(g|0,h|0,f|0,e|0)|0;if((b|0)==0&(C|0)==0)break}b=iw(g|0,h|0,-1,-1)|0;if((uo(da(k|0,4,0,0)|0|0,b,C,10360,1,d)|0)!=1){d=778;break a}}while(0);d=0}else d=1802}else d=0;break}case 16:{d=a+4|0;b=Sc(da((da(d|0,4,0,0)|0|0)+8|0,4,0,0)|0|0)|0;if(!b)d=0;else{Zn(da((da(d|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,b)|0;ea(c|0,b|0,4,0);d=0}break}case 13:{vo(a,16,c);d=0;break}case 1:{ea(c|0,da(a+16>>0|0,1,0,1)|0|0,4,0);d=0;break}default:d=12}while(0);i=l;return d|0}function kk(a){a=a|0;return 4096}function lk(a){a=a|0;return ((da(a+18|0,2,0,0)|0)&16)<<8|0}function mk(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;i=da(a+36|0,4,0,0)|0|0;f=da(i|0,4,0,0)|0|0;j=(1<-1:0)kc[(fa(da(47552+196|0,4,0,0)|0|0,127|0)|0)&127](da(g+8|0,4,0,0)|0|0)|0;yo(a)}}return 0}function pk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(e|0,0|0,4,0);return 0}function qk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function rk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();e=d;ea(e|0,c|0,4,0);b=pb(a|0,b|0,e|0)|0;i=d;return b|0}function sk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+528|0;if((i|0)>=(j|0))ba();d=g;e=g+8|0;ea(d|0,a|0,4,0);$c(512,e,10344,d)|0;a=fw(e|0)|0;a:do if((a|0)>1)while(1){c=a+-1|0;if((da(e+a>>0|0,1,0,0)|0|0)==47)break a;if((c|0)>1)a=c;else{a=c;break}}while(0);if((a|0)>0){ea(e+a>>0|0,0|0,1,0);a=_n(e,0,0)|0;ea(b|0,a|0,4,0);if((a|0)>-1)a=0;else f=7}else{ea(b|0,-1|0,4,0);f=7}if((f|0)==7){ea(d|0,28919|0,4,0);ea(d+4|0,10788|0,4,0);ad(14,14848,d);a=bo(14,47896,e,28919)|0}i=g;return a|0}function tk(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Jb()|0))a=Pb(a|0,b|0,c|0)|0;else a=0;return a|0}function uk(){return vb(30)|0}function vk(a){a=a|0;to(a);return 0}function wk(a,b){a=a|0;b=b|0;return 0}function xk(a,b){a=a|0;b=b|0;return 0}function yk(a,b){a=a|0;b=b|0;ea(b|0,0|0,4,0);return 0}function zk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;ao(a);Bk(a,0)|0;e=da(a+8|0,4,0,0)|0|0;if(e){if(da(e+24|0,4,0,0)|0){b=a+28|0;c=da(b|0,4,0,0)|0|0;d=e+28|0;ea(c+8|0,da(d|0,4,0,0)|0|0,4,0);ea(d|0,c|0,4,0);ea(a+12|0,-1|0,4,0);ea(b|0,0|0,4,0)}c=e+16|0;b=(da(c|0,4,0,0)|0|0)+-1|0;ea(c|0,b|0,4,0);if(!b){zo(a);f=e+36|0;b=da(f|0,4,0,0)|0|0;c=e+32|0;d=da(c|0,4,0,0)|0|0;if(!b)ea(12178*4|0,d|0,4,0);else ea(b+32|0,d|0,4,0);b=da(c|0,4,0,0)|0|0;if(b)ea(b+36|0,da(f|0,4,0,0)|0|0,4,0);Vc(e)}}to(a);return 0}function Ak(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();h=n;l=a+16|0;c=da(l>>0|0,1,0,0)|0|0;a:do if((c&255|0)<(b|0)){g=da(a+8|0,4,0,0)|0|0;m=g+12|0;d=da(m>>0|0,1,0,0)|0|0;if(c<<24>>24!=d<<24>>24?(d&255)>2|(b|0)>1:0){c=5;break}e=(b|0)==1;do if(e)if((d+-1&255)<2){ea(l>>0|0,1|0,1,0);c=g+8|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0);c=g+24|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0);c=0;break a}else{d=h+8|0;ea(d|0,1|0,4,0);ea(h+2|0,0|0,2,0);k=10;break}else{d=h+8|0;ea(d|0,1|0,4,0);ea(h+2|0,0|0,2,0);if((b|0)==4)if((c&255)<3)k=10;else{f=d;k=14}else{e=d;k=24}}while(0);if((k|0)==10){ea(h|0,e&1^1|0,2,0);ea(h+4|0,da(2514*4|0,4,0,0)|0|0,4,0);if(!(Ao(a,h)|0)){f=d;k=14}else{d=da(Gb()|0|0,4,0,0)|0|0;switch(d|0){case 1:{c=3;break}case 13:case 37:case 4:case 16:case 110:case 11:{c=5;break a}default:c=3850}ea(a+20|0,d|0,4,0);break}}b:do if((k|0)==14)if(e){e=h+4|0;ea(e|0,(da(2514*4|0,4,0,0)|0|0)+2|0,4,0);ea(f|0,510|0,4,0);c:do if(!(Ao(a,h)|0)){c=0;d=0}else{d=da(Gb()|0|0,4,0,0)|0|0;switch(d|0){case 1:{c=3;d=1;break c}case 13:case 37:case 4:case 16:case 110:case 11:{c=5;break c}default:{c=3850;break c}}}while(0);ea(e|0,da(2514*4|0,4,0,0)|0|0,4,0);ea(f|0,1|0,4,0);ea(h|0,2|0,2,0);do if((Ao(a,h)|0)!=0&(c|0)==0){c=2058;d=da(Gb()|0|0,4,0,0)|0|0}else{if((c|0)==5){c=5;break a}else if(c)break;ea(l>>0|0,1|0,1,0);h=g+24|0;ea(h|0,(da(h|0,4,0,0)|0|0)+1|0,4,0);ea(g+8|0,1|0,4,0);break b}while(0);ea(a+20|0,d|0,4,0);break a}else{e=f;k=24}while(0);do if((k|0)==24){f=(b|0)==4;if(f)if((da(g+8|0,4,0,0)|0|0)>1)c=5;else{ea(h|0,1|0,2,0);d=da(2514*4|0,4,0,0)|0|0;k=29}else{ea(h|0,1|0,2,0);d=da(2514*4|0,4,0,0)|0|0;if((b|0)==2){ea(h+4|0,d+1|0,4,0);d=1;k=30}else k=29}if((k|0)==29){ea(h+4|0,d+2|0,4,0);d=510;k=30}if((k|0)==30){ea(e|0,d|0,4,0);if(!(Ao(a,h)|0))break;d=da(Gb()|0|0,4,0,0)|0|0;switch(d|0){case 1:{c=3;k=33;break}case 13:case 37:case 4:case 16:case 110:case 11:{c=5;break}default:{c=3850;k=33}}if((k|0)==33)ea(a+20|0,d|0,4,0);if(!f)break a}ea(l>>0|0,3|0,1,0);ea(m>>0|0,3|0,1,0);break a}while(0);c=b&255;ea(l>>0|0,c|0,1,0);ea(m>>0|0,c|0,1,0);c=0}else c=0;while(0);i=n;return c|0}function Bk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();f=k;g=a+16|0;c=da(g>>0|0,1,0,0)|0|0;a:do if((c&255|0)>(b|0)){h=da(a+8|0,4,0,0)|0|0;do if((c&255)>1){if((b|0)==1){ea(f|0,0|0,2,0);e=f+2|0;ea(e|0,0|0,2,0);c=f+4|0;ea(c|0,(da(2514*4|0,4,0,0)|0|0)+2|0,4,0);d=f+8|0;ea(d|0,510|0,4,0);if(Ao(a,f)|0){ea(a+20|0,da(Gb()|0|0,4,0,0)|0|0,4,0);c=2314;break a}}else{d=f+8|0;e=f+2|0;c=f+4|0}ea(f|0,2|0,2,0);ea(e|0,0|0,2,0);ea(c|0,da(2514*4|0,4,0,0)|0|0,4,0);ea(d|0,2|0,4,0);if(!(Ao(a,f)|0)){ea(h+12>>0|0,1|0,1,0);break}else{ea(a+20|0,da(Gb()|0|0,4,0,0)|0|0,4,0);c=2058;break a}}while(0);if(!b){d=h+8|0;c=(da(d|0,4,0,0)|0|0)+-1|0;ea(d|0,c|0,4,0);do if(!c){ea(f|0,2|0,2,0);ea(f+2|0,0|0,2,0);ea(f+8|0,0|0,4,0);ea(f+4|0,0|0,4,0);if(!(Ao(a,f)|0)){ea(h+12>>0|0,0|0,1,0);c=0;break}else{ea(a+20|0,da(Gb()|0|0,4,0,0)|0|0,4,0);ea(h+12>>0|0,0|0,1,0);ea(g>>0|0,0|0,1,0);c=2058;break}}else c=0;while(0);e=h+24|0;d=(da(e|0,4,0,0)|0|0)+-1|0;ea(e|0,d|0,4,0);if(!d)zo(a);if(c)break}ea(g>>0|0,b|0,1,0);c=0}else c=0;while(0);i=k;return c|0}function Ck(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+32|0;if((i|0)>=(j|0))ba();e=g;f=g+8|0;d=da(a+8|0,4,0,0)|0|0;h=(da(d+12>>0|0,1,0,1)|0|0)>1;c=h&1;do if(!h)if(!(da(d+13>>0|0,1,0,0)|0)){ea(f+2|0,0|0,2,0);ea(f+4|0,(da(2514*4|0,4,0,0)|0|0)+1|0,4,0);ea(f+8|0,1|0,4,0);ea(f|0,1|0,2,0);h=da(11910*4|0,4,0,0)|0|0;d=da(a+12|0,4,0,0)|0|0;ea(e|0,f|0,4,0);if(!($b[(fa(h|0,63|0)|0)&63](d,12,e)|0)){d=0;c=(da(f|0,2,0,0)|0|0)==2?c:1;break}else{ea(a+20|0,da(Gb()|0|0,4,0,0)|0|0,4,0);d=3594;break}}else{d=0;c=0}else{d=0;c=1}while(0);ea(b|0,c|0,4,0);i=g;return d|0}function Dk(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,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;w=i;i=i+160|0;if((i|0)>=(j|0))ba();u=w;p=w+76|0;g=gc[(fa(da(47552+292|0,4,0,0)|0|0,7|0)|0)&7]()|0;if((g|0)<32768)v=1;else v=(g|0)/32768|0;s=a+36|0;g=da(s|0,4,0,0)|0|0;a:do if(!g){g=Sc(16)|0;if(!g)f=7;else{ea(g+0|0,0|0,4,0);ea(g+4|0,0|0,4,0);ea(g+8|0,0|0,4,0);ea(g+12|0,0|0,4,0);n=a+8|0;m=da(n|0,4,0,0)|0|0;f=da(m+20|0,4,0,0)|0|0;b:do if(!f){l=a+32|0;h=da(l|0,4,0,0)|0|0;if((qc[(fa(da(47552+64|0,4,0,0)|0|0,127|0)|0)&127](da(a+12|0,4,0,0)|0|0,p)|0)!=0?(da(m+13>>0|0,1,0,0)|0|0)==0:0)f=1802;else t=8;c:do if((t|0)==8){f=fw(h|0)|0;k=f+42|0;q=Sc(k)|0;if(q){ew(q|0,0,k|0)|0;o=q+36|0;ea(q+8|0,o|0,4,0);ea(u|0,h|0,4,0);$c(f+6|0,o,48720,u)|0;f=q+12|0;ea(f|0,-1|0,4,0);n=da(n|0,4,0,0)|0|0;ea(n+20|0,q|0,4,0);ea(q|0,n|0,4,0);ea(q+4|0,8|0,4,0);if(da(m+13>>0|0,1,0,0)|0){f=q;break b}if(!(eg(da(l|0,4,0,0)|0|0,48728,0)|0))k=66;else{ea(q+22>>0|0,1|0,1,0);k=0}h=_n(o,k,(da(p+12|0,4,0,0)|0)&511)|0;ea(f|0,h|0,4,0);if((h|0)<0){ea(u|0,29706|0,4,0);ea(u+4|0,10788|0,4,0);ad(14,14848,u);f=bo(14,47896,o,29706)|0;break}$b[(fa(da(47552+244|0,4,0,0)|0|0,63|0)|0)&63](h,da(p+20|0,4,0,0)|0|0,da(p+24|0,4,0,0)|0|0)|0;do if(!(xo(a,1,128,1)|0)){f=da(f|0,4,0,0)|0|0;do{h=qc[(fa(da(47552+76|0,4,0,0)|0|0,127|0)|0)&127](f,0)|0;if((h|0)>=0){r=h;t=18;break}}while((da(Gb()|0|0,4,0,0)|0|0)==4);if((t|0)==18?(r|0)==0:0)break;f=bo(4618,47928,o,29722)|0;if(f)break c}while(0);f=xo(a,0,128,1)|0;if(!f){f=q;break b}}else f=7}while(0);yo(a);Vc(g);if(f)break a;g=da(s|0,4,0,0)|0|0;t=24;break a}while(0);ea(g|0,f|0,4,0);t=f+28|0;ea(t|0,(da(t|0,4,0,0)|0|0)+1|0,4,0);ea(a+36|0,g|0,4,0);t=f+32|0;ea(g+4|0,da(t|0,4,0,0)|0|0,4,0);ea(t|0,g|0,4,0);t=24}}else t=24;while(0);if((t|0)==24){a=da(g|0,4,0,0)|0|0;s=v+b|0;s=s-((s|0)%(v|0)|0)|0;p=a+20|0;d:do if((da(p|0,2,0,1)|0|0)<(s|0)){f=_(s,c)|0;ea(a+16|0,c|0,4,0);r=a+12|0;g=da(r|0,4,0,0)|0|0;e:do if((g|0)>-1){if(qc[(fa(da(47552+64|0,4,0,0)|0|0,127|0)|0)&127](g,u)|0){g=4874;break d}g=da(u+36|0,4,0,0)|0|0;if((g|0)<(f|0)){if(!d){g=0;break d}g=(g|0)/4096|0;f=(f|0)/4096|0;if((g|0)<(f|0)){while(1){q=g<<12|4095;g=g+1|0;if((uo(da(r|0,4,0,0)|0|0,q,((q|0)<0)<<31>>31,10360,1,0)|0)!=1)break;if((g|0)>=(f|0))break e}g=bo(4874,47976,da(a+8|0,4,0,0)|0|0,29853)|0;break d}}}while(0);o=a+24|0;g=Wc(da(o|0,4,0,0)|0|0,s<<2)|0;if(g){ea(o|0,g|0,4,0);g=da(p|0,2,0,1)|0|0;if((g|0)<(s|0)){m=_(v,c)|0;l=a+22|0;n=(v|0)>0;while(1){f=da(r|0,4,0,0)|0|0;if((f|0)>-1){g=_(g,c)|0;g=jc[(fa(da(47552+256|0,4,0,0)|0|0,7|0)|0)&7](0,m,(da(l>>0|0,1,0,0)|0|0)!=0?1:3,1,f,g)|0;if((g|0)==(-1|0))break}else{g=Sc(c)|0;if(!g){g=7;break d}ew(g|0,0,c|0)|0}h=da(p|0,2,0,0)|0|0;if(n){f=h&65535;k=0;do{q=g+(_(k,c)|0)|0;ea((da(o|0,4,0,0)|0|0)+(f+k<<2)|0,q|0,4,0);k=k+1|0}while((k|0)!=(v|0))}g=(h&65535)+v|0;ea(p|0,g|0,2,0);g=g&65535;if((g|0)>=(s|0)){g=0;break d}}g=bo(5386,48080,da(a+8|0,4,0,0)|0|0,29880)|0}else g=0}else g=3082}else g=0;while(0);if((da(p|0,2,0,1)|0|0)>(b|0))f=da((da(a+24|0,4,0,0)|0|0)+(b<<2)|0,4,0,0)|0|0;else f=0;ea(e|0,f|0,4,0);f=(da(a+22>>0|0,1,0,0)|0|0)!=0&(g|0)==0?8:g}i=w;return f|0}function Ek(a,b){a=a|0;b=b|0;var c=0;if(b)do{c=b;b=da(b+32|0,4,0,0)|0|0;Fk(a,da(c+20|0,4,0,0)|0|0);Mk(a,da(c+24|0,4,0,0)|0|0);Lk(a,da(c+8|0,4,0,0)|0|0,1);Gk(a,da(c+28|0,4,0,0)|0|0);lg(a,c)}while((b|0)!=0);return}function Fk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(b){e=b+4|0;do if(!((da(e|0,4,0,0)|0)&16384)){Fk(a,da(b+12|0,4,0,0)|0|0);Fk(a,da(b+16|0,4,0,0)|0|0);c=da(e|0,4,0,0)|0|0;if(c&65536){lg(a,da(b+8|0,4,0,0)|0|0);c=da(e|0,4,0,0)|0|0}d=b+20|0;if(!(c&2048)){Mk(a,da(d|0,4,0,0)|0|0);break}else{Lk(a,da(d|0,4,0,0)|0|0,1);break}}while(0);if(!((da(e|0,4,0,0)|0)&32768))lg(a,b)}return}function Gk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(b){e=b+4|0;c=da(b|0,4,0,0)|0|0;if((da(e|0,4,0,0)|0|0)>0){d=0;do{lg(a,da(c+(d<<3)|0,4,0,0)|0|0);d=d+1|0;c=da(b|0,4,0,0)|0|0}while((d|0)<(da(e|0,4,0,0)|0|0))}lg(a,c);lg(a,b)}return}function Hk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;h=an(a,b,m)|0;do if(!h)if(c){l=pg(16,0)|0;if(!l)d=c;else{ea(l+12|0,b|0,4,0);ea(l+8|0,c|0,4,0);k=a+4|0;f=(da(k|0,4,0,0)|0|0)+1|0;ea(k|0,f|0,4,0);if((f>>>0>9?(e=da(a|0,4,0,0)|0|0,f>>>0>e<<1>>>0):0)?(g=f<<4>>>0>1024?128:f<<1,(g|0)!=(e|0)):0){d=da(3164*4|0,4,0,0)|0|0;if(d)mc[(fa(d|0,3|0)|0)&3]();k=pg(g<<3,0)|0;d=da(3166*4|0,4,0,0)|0|0;if(d)mc[(fa(d|0,3|0)|0)&3]();if(k){h=a+12|0;Vc(da(h|0,4,0,0)|0|0);ea(h|0,k|0,4,0);h=(kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](k)|0)>>>3;ea(a|0,h|0,4,0);ew(k|0,0,h<<3|0)|0;c=a+8|0;f=da(c|0,4,0,0)|0|0;ea(c|0,0|0,4,0);if(f)do{g=da(f+12|0,4,0,0)|0|0;e=da(g>>0|0,1,0,0)|0|0;if(!(e<<24>>24))e=0;else{c=e;e=0;do{g=g+1|0;e=e<<3^e^(da(9328+(c&255)>>0|0,1,0,1)|0|0);c=da(g>>0|0,1,0,0)|0|0}while(c<<24>>24!=0)}c=f;f=da(f|0,4,0,0)|0|0;Bo(a,k+(((e>>>0)%(h>>>0)|0)<<3)|0,c)}while((f|0)!=0);d=da(b>>0|0,1,0,0)|0|0;if(!(d<<24>>24))d=0;else{f=d;d=0;do{b=b+1|0;d=d<<3^d^(da(9328+(f&255)>>0|0,1,0,1)|0|0);f=da(b>>0|0,1,0,0)|0|0}while(f<<24>>24!=0)}ea(m|0,(d>>>0)%((da(a|0,4,0,0)|0|0)>>>0)|0|0,4,0)}}d=da(a+12|0,4,0,0)|0|0;if(!d)d=0;else d=d+((da(m|0,4,0,0)|0)<<3)|0;Bo(a,d,l);d=0}}else d=0;else{f=h+8|0;d=da(f|0,4,0,0)|0|0;if(c){ea(f|0,c|0,4,0);ea(h+12|0,b|0,4,0);break}g=da(m|0,4,0,0)|0|0;f=da(h+4|0,4,0,0)|0|0;e=da(h|0,4,0,0)|0|0;if(!f)ea(a+8|0,e|0,4,0);else{ea(f|0,e|0,4,0);e=da(h|0,4,0,0)|0|0}if(e)ea(e+4|0,f|0,4,0);b=da(a+12|0,4,0,0)|0|0;if(b){f=b+(g<<3)+4|0;if((da(f|0,4,0,0)|0|0)==(h|0))ea(f|0,e|0,4,0);m=b+(g<<3)|0;ea(m|0,(da(m|0,4,0,0)|0|0)+-1|0,4,0)}Vc(h);l=a+4|0;m=(da(l|0,4,0,0)|0|0)+-1|0;ea(l|0,m|0,4,0);if(!m)Nl(a)}while(0);i=n;return d|0}function Ik(a,b){a=a|0;b=b|0;Fk(a,da(b+36|0,4,0,0)|0|0);lg(a,da(b+16|0,4,0,0)|0|0);if((da(b+51>>0|0,1,0,0)|0)&16)lg(a,da(b+32|0,4,0,0)|0|0);lg(a,b);return}function Jk(a,b){a=a|0;b=b|0;var c=0;if(b){c=da(b+28|0,4,0,0)|0|0;Fk(a,da(c+20|0,4,0,0)|0|0);Mk(a,da(c+24|0,4,0,0)|0|0);Lk(a,da(c+8|0,4,0,0)|0|0,1);Fk(a,da(b+12|0,4,0,0)|0|0);lg(a,b)}return}function Kk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=b+4|0;c=da(e|0,4,0,0)|0|0;if(c){b=b+38|0;if((da(b|0,2,0,0)|0|0)>0){d=0;while(1){lg(a,da(c|0,4,0,0)|0|0);Fk(a,da(c+4|0,4,0,0)|0|0);lg(a,da(c+8|0,4,0,0)|0|0);lg(a,da(c+12|0,4,0,0)|0|0);lg(a,da(c+16|0,4,0,0)|0|0);d=d+1|0;if((d|0)>=(da(b|0,2,0,0)|0|0))break;else c=c+24|0}c=da(e|0,4,0,0)|0|0}lg(a,c)}return}function Lk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b){d=(c|0)==0;c=b;while(1){b=c;c=da(c+52|0,4,0,0)|0|0;Mk(a,da(b|0,4,0,0)|0|0);Co(a,da(b+32|0,4,0,0)|0|0);Fk(a,da(b+36|0,4,0,0)|0|0);Mk(a,da(b+40|0,4,0,0)|0|0);Fk(a,da(b+44|0,4,0,0)|0|0);Mk(a,da(b+48|0,4,0,0)|0|0);Fk(a,da(b+60|0,4,0,0)|0|0);Fk(a,da(b+64|0,4,0,0)|0|0);Pn(a,da(b+68|0,4,0,0)|0|0);if(!d)lg(a,b);if(!c)break;else d=0}}return}function Mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(b){c=b+4|0;if((da(b|0,4,0,0)|0|0)>0){d=0;e=da(c|0,4,0,0)|0|0;while(1){Fk(a,da(e|0,4,0,0)|0|0);lg(a,da(e+4|0,4,0,0)|0|0);lg(a,da(e+8|0,4,0,0)|0|0);d=d+1|0;if((d|0)>=(da(b|0,4,0,0)|0|0))break;else e=e+20|0}}lg(a,da(c|0,4,0,0)|0|0);lg(a,b)}return}function Nk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=b+60|0;c=da(g|0,4,0,0)|0|0;ea(g|0,0|0,4,0);a:do if(!c)b=0;else{b=0;do{while(1){e=da(c|0,4,0,0)|0|0;d=c+24|0;f=c;c=da(d|0,4,0,0)|0|0;if((e|0)==(a|0)){b=f;break}e=e+332|0;ea(d|0,da(e|0,4,0,0)|0|0,4,0);ea(e|0,f|0,4,0);if(!c)break a}ea(g|0,b|0,4,0);ea(d|0,0|0,4,0)}while((c|0)!=0)}while(0);return b|0}function Ok(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)!=0?(d=b+(c*20|0)|0,(c|0)>0):0){c=b;do{Hn(a,da(c+1>>0|0,1,0,0)|0|0,da(c+16|0,4,0,0)|0|0);c=c+20|0}while(c>>>0>>0)}lg(a,b);return}function Pk(a,b){a=a|0;b=b|0;do if(!a)b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](b)|0;else{if((da(a+276|0,4,0,0)|0|0)>>>0<=b>>>0?(da(a+280|0,4,0,0)|0|0)>>>0>b>>>0:0){b=da(a+248|0,2,0,1)|0|0;break}b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](b)|0}while(0);a=da(a+520|0,4,0,0)|0|0;ea(a|0,(da(a|0,4,0,0)|0|0)+b|0,4,0);return}function Qk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=da(a+(b<<2)|0,4,0,0)|0|0;a:do if(!a)a=0;else while(1){b=da(a+24|0,4,0,0)|0|0;if((Ec(b,c,d)|0)==0?(da(b+d>>0|0,1,0,0)|0|0)==0:0)break a;a=da(a+28|0,4,0,0)|0|0;if(!a){a=0;break}}while(0);return a|0}function Rk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=a+12|0;e=da(d|0,4,0,0)|0|0;f=e+c|0;if((f|0)<(da(a+16|0,4,0,0)|0|0)){ea(d|0,f|0,4,0);jw((da(a+8|0,4,0,0)|0|0)+e|0,b|0,c|0)|0}else Do(a,b,c);return}function Sk(a){a=a|0;var b=0,c=0;c=a+4|0;b=da(c|0,4,0,0)|0|0;if((da(a|0,4,0,0)|0|0)>(b|0)){ea(c|0,b+1|0,4,0);c=Ug(da((da(a+8|0,4,0,0)|0|0)+(b<<2)|0,4,0,0)|0|0)|0;b=C}else{b=0;c=0}C=b;return c|0}function Tk(a){a=a|0;var b=0,c=0;b=a+4|0;c=da(b|0,4,0,0)|0|0;if((da(a|0,4,0,0)|0|0)>(c|0)){ea(b|0,c+1|0,4,0);b=Rg(da((da(a+8|0,4,0,0)|0|0)+(c<<2)|0,4,0,0)|0|0,1)|0}else b=0;return b|0}function Uk(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;e=a+12|0;g=da(e|0,4,0,0)|0|0;g=iw(g|0,((g|0)<0)<<31>>31|0,b|0,((b|0)<0)<<31>>31|0)|0;i=C;f=da(a+16|0,4,0,0)|0|0;h=((f|0)<0)<<31>>31;if((i|0)<(h|0)|(i|0)==(h|0)&g>>>0>>0){if((b|0)>0)d=4}else{b=Eo(a,b)|0;if((b|0)>=1)d=4}if((d|0)==4){a=a+8|0;do{b=b+-1|0;d=da(e|0,4,0,0)|0|0;ea(e|0,d+1|0,4,0);ea((da(a|0,4,0,0)|0|0)+d>>0|0,c|0,1,0)}while((b|0)>0)}return}function Vk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=i;i=i+112|0;if((i|0)>=(j|0))ba();g=d+28|0;f=d;e=da(a+88|0,4,0,0)|0|0;ea(f+4|0,g|0,4,0);ea(f+8|0,g|0,4,0);ea(f+12|0,0|0,4,0);ea(f+16|0,70|0,4,0);ea(f+20|0,e|0,4,0);ea(f+24>>0|0,1|0,1,0);e=f+25|0;ea(e>>0|0,0|0,1,0);ea(f|0,a|0,4,0);rg(f,1,b,c);c=sg(f)|0;if((da(e>>0|0,1,0,0)|0|0)==1)ea(a+65>>0|0,1|0,1,0);i=d;return c|0}function Wk(a){a=a|0;return kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](a)|0}function Xk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+80|0;if((i|0)>=(j|0))ba();h=k+40|0;e=k;if((b|0)!=0?(d=da(b+20|0,4,0,0)|0|0,(d|0)!=0):0){ea(h+0|0,0|0,4,0);ea(h+4|0,0|0,4,0);ea(h+8|0,0|0,4,0);ea(h+12|0,0|0,4,0);ea(h+16|0,0|0,4,0);ea(h+20|0,0|0,4,0);ea(h+24|0,0|0,4,0);f=e+0|0;g=f+40|0;do{ea(f|0,0|0,4,0);f=f+4|0}while((f|0)<(g|0));ea(e+8|0,1|0,2,0);c=a+32|0;ea(e+32|0,da(c|0,4,0,0)|0|0,4,0);ea(h|0,e|0,4,0);ea(h+8|0,a|0,4,0);ea(h+4|0,b|0,4,0);bc[(fa(d|0,31|0)|0)&31](h);if((da(a+24|0,4,0,0)|0|0)>0)lg(da(c|0,4,0,0)|0|0,da(a+20|0,4,0,0)|0|0);f=a+0|0;c=e+0|0;g=f+40|0;do{ea(f|0,da(c|0,4,0,0)|0|0,4,0);f=f+4|0;c=c+4|0}while((f|0)<(g|0));c=da(h+20|0,4,0,0)|0|0}else c=0;i=k;return c|0}function Yk(a){a=a|0;var b=0,c=0,d=0;b=da(a|0,4,0,0)|0|0;if(b){c=a+4|0;do{d=b;b=da(b|0,4,0,0)|0|0;lg(da(c|0,4,0,0)|0|0,d)}while((b|0)!=0)}ea(a|0,0|0,4,0);ea(a+24|0,0|0,2,0);ea(a+8|0,0|0,4,0);ea(a+12|0,0|0,4,0);ea(a+20|0,0|0,4,0);ea(a+26|0,1|0,2,0);return}function Zk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;e=g+4|0;b=da(a|0,4,0,0)|0|0;c=b+16|0;do if((da((da(c|0,4,0,0)|0|0)+20|0,4,0,0)|0|0)==0?(da(a+450>>0|0,1,0,0)|0|0)==0:0){d=ym(da(b|0,4,0,0)|0|0,0,b,e,0,542)|0;if(d){sh(a,25496,f);ea(a+12|0,d|0,4,0);b=1;break}d=da(e|0,4,0,0)|0|0;ea((da(c|0,4,0,0)|0|0)+20|0,d|0,4,0);if((wg(d,da(b+72|0,4,0,0)|0|0,-1,0)|0)==7){ea(b+65>>0|0,1|0,1,0);b=1}else b=0}else b=0;while(0);i=g;return b|0}function _k(a){a=a|0;var b=0;do if(a)if((da(3157*4|0,4,0,0)|0|0)>>>0<=a>>>0&(da(3158*4|0,4,0,0)|0|0)>>>0>a>>>0){ea(2167*4|0,(da(2167*4|0,4,0,0)|0|0)+-1|0,4,0);ea(a|0,da(3160*4|0,4,0,0)|0|0,4,0);ea(3160*4|0,a|0,4,0);a=(da(3161*4|0,4,0,0)|0|0)+1|0;ea(3161*4|0,a|0,4,0);ea(3162*4|0,(a|0)<(da(3156*4|0,4,0,0)|0|0)&1|0,4,0);break}else{b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](a)|0;ea(2168*4|0,(da(2168*4|0,4,0,0)|0|0)-b|0,4,0);Vc(a);break}while(0);return}function $k(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();k=n;h=da(b|0,4,0,0)|0|0;if((da(a+15>>0|0,1,0,0)|0|0)!=0?(da(a+24|0,4,0,0)|0|0)!=0:0)m=12;else m=3;do if((m|0)==3){g=a+204|0;if(((h|0)!=0?(da((da(g|0,4,0,0)|0|0)+12|0,4,0,0)|0|0)==0:0)?(l=a+152|0,(h|0)!=(da(l|0,4,0,0)|0|0)):0){o=k;ea(o|0,0|0,4,0);ea(o+4|0,0|0,4,0);if(((da(a+16>>0|0,1,0,0)|0|0)!=0?(e=da(a+60|0,4,0,0)|0|0,d=da(e|0,4,0,0)|0|0,(d|0)!=0):0)?(f=qc[(fa(da(d+24|0,4,0,0)|0|0,127|0)|0)&127](e,k)|0,(f|0)!=0):0){d=0;c=f}else{d=Fo(h)|0;if(d){wn(a);e=Go(da(g|0,4,0,0)|0|0,h)|0;if(!e){m=a+200|0;_k(da(m|0,4,0,0)|0|0);ea(m|0,d|0,4,0);m=k;k=da(m|0,4,0,0)|0|0;m=da(m+4|0,4,0,0)|0|0;g=iw(h|0,0,-1,-1)|0;m=iw(g|0,C|0,k|0,m|0)|0;m=pw(m|0,C|0,h|0,0)|0;ea(a+24|0,m|0,4,0);ea(l|0,h|0,4,0);m=12;break}else c=e}else{d=0;c=7}}_k(d);ea(b|0,da(l|0,4,0,0)|0|0,4,0)}else m=12}while(0);if((m|0)==12){ea(b|0,da(a+152|0,4,0,0)|0|0,4,0);d=a+142|0;if((c|0)<0)c=da(d|0,2,0,0)|0|0;ea(d|0,c|0,2,0);c=0}i=n;return c|0}function al(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=da(a+4|0,4,0,0)|0|0;a:do if(da(a+9>>0|0,1,0,0)|0){if((da(e+76|0,4,0,0)|0|0)!=(a|0)?((da(e+22|0,2,0,0)|0)&32)!=0:0){d=262;break}d=da(e+72|0,4,0,0)|0|0;if(d){while(1){if(((da(d|0,4,0,0)|0|0)!=(a|0)?(da(d+4|0,4,0,0)|0|0)==(b|0):0)?(da(d+8>>0|0,1,0,0)|0|0)!=c<<24>>24:0)break;d=da(d+12|0,4,0,0)|0|0;if(!d){d=0;break a}}if(c<<24>>24==2){d=e+22|0;ea(d|0,da(d|0,2,0,1)|0|64|0,2,0);d=262}else d=262}else d=0}else d=0;while(0);return d|0}function bl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=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;C=i;i=i+64|0;if((i|0)>=(j|0))ba();B=C;y=C+28|0;x=C+24|0;h=C+20|0;o=C+48|0;q=C+16|0;r=C+12|0;v=C+8|0;w=C+32|0;if(!((da(a+15>>0|0,1,0,0)|0|0)!=0?(b=da(a+40|0,4,0,0)|0|0,(b|0)!=0):0))A=3;do if((A|0)==3){z=a+208|0;c=da(z|0,4,0,0)|0|0;a:do if(!c){u=a+16|0;do if(!(da(u>>0|0,1,0,0)|0)){e=a+176|0;d=a+180|0;while(1){b=el(a,1)|0;if(!b)break;else if((b|0)!=5)break a;if(!(kc[(fa(da(e|0,4,0,0)|0|0,127|0)|0)&127](da(d|0,4,0,0)|0|0)|0)){b=5;break a}}p=a+17|0;if((da(p>>0|0,1,0,1)|0|0)<2){c=da(a|0,4,0,0)|0|0;ea(B|0,1|0,4,0);f=a+64|0;g=(da(da(f|0,4,0,0)|0|0,4,0,0)|0|0)!=0;if(g){e=1;b=0}else{b=oc[(fa(da(c+32|0,4,0,0)|0|0,31|0)|0)&31](c,da(a+172|0,4,0,0)|0|0,0,B)|0;e=(da(B|0,4,0,0)|0|0)!=0}b:do if((b|0)==0&e){ea(y|0,0|0,4,0);d=a+60|0;b=da(d|0,4,0,0)|0|0;b=qc[(fa(da((da(b|0,4,0,0)|0|0)+36|0,4,0,0)|0|0,127|0)|0)&127](b,y)|0;if(!(da(y|0,4,0,0)|0|b)){b=Ho(a,x)|0;if(!b){if((da(x|0,4,0,0)|0|0)!=0|g){do if(!g){ea(h|0,2049|0,4,0);b=sc[(fa(da(c+24|0,4,0,0)|0|0,31|0)|0)&31](c,da(a+172|0,4,0,0)|0|0,da(f|0,4,0,0)|0|0,2049,h)|0;if(!b)break;else if((b|0)!=14){e=0;break b}e=1;b=0;break b}while(0);ea(o>>0|0,0|0,1,0);b=da(f|0,4,0,0)|0|0;b=sc[(fa(da((da(b|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](b,o,1,0,0)|0;b=(b|0)==522?0:b;if(!g?(m=da(f|0,4,0,0)|0|0,n=da(m|0,4,0,0)|0|0,(n|0)!=0):0){kc[(fa(da(n+4|0,4,0,0)|0|0,127|0)|0)&127](m)|0;ea(m|0,0|0,4,0)}e=(da(o>>0|0,1,0,0)|0|0)!=0&1;break}e=da(3164*4|0,4,0,0)|0|0;if(e)mc[(fa(e|0,3|0)|0)&3]();do if(((el(a,2)|0)==0?($b[(fa(da(c+28|0,4,0,0)|0|0,63|0)|0)&63](c,da(a+172|0,4,0,0)|0|0,0)|0,(da(a+4>>0|0,1,0,0)|0|0)==0):0)?(k=da(d|0,4,0,0)|0|0,l=da(k|0,4,0,0)|0|0,(l|0)!=0):0){if(!(da(a+13>>0|0,1,0,0)|0))qc[(fa(da(l+32|0,4,0,0)|0|0,127|0)|0)&127](k,1)|0;if((da(p>>0|0,1,0,0)|0|0)==5)break;ea(p>>0|0,1|0,1,0)}while(0);e=da(3166*4|0,4,0,0)|0|0;if(!e){e=0;b=0}else{mc[(fa(e|0,3|0)|0)&3]();e=0;b=0}}else e=0}else e=0}else e=0;while(0);if(b)break a;if(e)A=35}else A=35;do if((A|0)==35){if(da(a+14>>0|0,1,0,0)|0){b=776;break a}b=el(a,4)|0;if(b)break a;c=a+64|0;if(!(da(da(c|0,4,0,0)|0|0,4,0,0)|0)){e=da(a|0,4,0,0)|0|0;d=a+172|0;b=oc[(fa(da(e+32|0,4,0,0)|0|0,31|0)|0)&31](e,da(d|0,4,0,0)|0|0,0,q)|0;if((b|0)==0&(da(q|0,4,0,0)|0|0)!=0){ea(r|0,0|0,4,0);b=sc[(fa(da(e+24|0,4,0,0)|0|0,31|0)|0)&31](e,da(d|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0,2050,r)|0;if(!b)if((da(r|0,4,0,0)|0)&1){ea(B|0,46645|0,4,0);ea(B+4|0,10788|0,4,0);ad(14,14848,B);e=da(c|0,4,0,0)|0|0;d=da(e|0,4,0,0)|0|0;if(!d)b=14;else{kc[(fa(da(d+4|0,4,0,0)|0|0,127|0)|0)&127](e)|0;ea(e|0,0|0,4,0);b=14}}else b=0}}else b=0;if(!(da(da(c|0,4,0,0)|0|0,4,0,0)|0))if((da(a+4>>0|0,1,0,0)|0|0)==0?(s=da(a+60|0,4,0,0)|0|0,t=da(s|0,4,0,0)|0|0,(t|0)!=0):0){if(!(da(a+13>>0|0,1,0,0)|0))qc[(fa(da(t+32|0,4,0,0)|0|0,127|0)|0)&127](s,1)|0;if((da(p>>0|0,1,0,0)|0|0)!=5){ea(p>>0|0,1|0,1,0);A=52}else A=52}else A=52;else{b=Io(a)|0;if(!b){b=Jo(a,1)|0;ea(u>>0|0,0|0,1,0);A=52}}if((A|0)==52)if(!b)break;y=b&255;if(!((y|0)==10|(y|0)==13))break a;ea(a+40|0,b|0,4,0);ea(u>>0|0,6|0,1,0);break a}while(0);e=a+12|0;if((da(e>>0|0,1,0,0)|0|0)==0?(da(a+23>>0|0,1,0,0)|0|0)!=0:0){ea(v|0,0|0,4,0);b=Ho(a,v)|0;if(b)break a;if(da(v|0,4,0,0)|0){b=da(a+60|0,4,0,0)|0|0;b=sc[(fa(da((da(b|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](b,w,16,24,0)|0;if(!((b|0)==0|(b|0)==522))break a}else{d=w+0|0;c=d+16|0;do{ea(d>>0|0,0|0,1,0);d=d+1|0}while((d|0)<(c|0))}if(Yv(a+104|0,w,16)|0)wn(a)}if(!(da(e>>0|0,1,0,0)|0)){b=Ho(a,x)|0;if(!b){d=da(a|0,4,0,0)|0|0;c=da(a+212|0,4,0,0)|0|0;if(!(da(x|0,4,0,0)|0)){b=$b[(fa(da(d+28|0,4,0,0)|0|0,63|0)|0)&63](d,c,0)|0;ea(y|0,0|0,4,0);if((b|0)!=5898)A=68}else{b=oc[(fa(da(d+32|0,4,0,0)|0|0,31|0)|0)&31](d,c,0,y)|0;A=68}if((A|0)==68){if(b)break;if(da(y|0,4,0,0)|0){b=dl(a,0)|0;break}}b=a+5|0;if((da(b>>0|0,1,0,0)|0|0)==5){ea(b>>0|0,0|0,1,0);b=0}else b=0}}else b=0}else b=0;while(0);c=da(z|0,4,0,0)|0|0;if(!c)A=78;else A=74}else A=74;while(0);if((A|0)==74){ea(B|0,0|0,4,0);Ko(c);c=da(z|0,4,0,0)|0|0;d=0;do{d=d+1|0;b=Lo(c,B,0,d)|0}while((b|0)==-1);if(!(da(B|0,4,0,0)|0|b))A=78;else{wn(a);A=78}}if((A|0)==78){if((da(a+16>>0|0,1,0,0)|0|0)==0&(b|0)==0)b=Ho(a,a+24|0)|0;if(!b){ea(a+16>>0|0,1|0,1,0);b=0;break}}Mo(a)}while(0);i=C;return b|0}function cl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;d=yg(da(a|0,4,0,0)|0|0,b,e,d)|0;if(!d){e=da(e|0,4,0,0)|0|0;d=da(e+8|0,4,0,0)|0|0;ea(d+56|0,da(e+4|0,4,0,0)|0|0,4,0);ea(d+68|0,e|0,4,0);ea(d+52|0,a|0,4,0);ea(d+72|0,b|0,4,0);ea(d+6>>0|0,((b|0)==1?100:0)|0,1,0);ea(c|0,d|0,4,0);d=0}i=f;return d|0}function dl(a,b){a=a|0;b=b|0;var c=0,d=0;do if((da(a+12>>0|0,1,0,0)|0|0)==0?(da(a+208|0,4,0,0)|0|0)==0:0){b=da(da(a+60|0,4,0,0)|0|0,4,0,0)|0|0;if(!(da(a+4>>0|0,1,0,0)|0)){if((da(b|0,4,0,0)|0|0)<=1){b=14;break}if(!(da(b+52|0,4,0,0)|0)){b=14;break}}b=da(a+64|0,4,0,0)|0|0;c=da(b|0,4,0,0)|0|0;if(c){kc[(fa(da(c+4|0,4,0,0)|0|0,127|0)|0)&127](b)|0;ea(b|0,0|0,4,0)}b=on(a)|0;if(!b){ea(a+5>>0|0,5|0,1,0);ea(a+16>>0|0,0|0,1,0);b=0}}else d=10;while(0);if((d|0)==10){ea(b|0,1|0,4,0);b=0}return b|0}function el(a,b){a=a|0;b=b|0;var c=0,d=0;d=a+17|0;c=da(d>>0|0,1,0,0)|0|0;do if((c&255|0)<(b|0)|c<<24>>24==5){if(!(da(a+13>>0|0,1,0,0)|0)){c=da(a+60|0,4,0,0)|0|0;c=qc[(fa(da((da(c|0,4,0,0)|0|0)+28|0,4,0,0)|0|0,127|0)|0)&127](c,b)|0;if(c)break;c=da(d>>0|0,1,0,0)|0|0}if(c<<24>>24!=5|(b|0)==4){ea(d>>0|0,b|0,1,0);c=0}else c=0}else c=0;while(0);return c|0}function fl(a){a=a|0;var b=0,c=0,d=0;b=da(a+4|0,4,0,0)|0|0;a=da(b+444|0,4,0,0)|0|0;if((a|0)!=0?(d=b+452|0,c=da(d|0,4,0,0)|0|0,(c|0)>=0):0){a=qc[(fa(a|0,127|0)|0)&127](da(b+448|0,4,0,0)|0|0,c)|0;if(!a)b=-1;else b=(da(d|0,4,0,0)|0|0)+1|0;ea(d|0,b|0,4,0)}else a=0;return a|0}function gl(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,k=0,l=0,m=0,n=0,o=0;l=a+96|0;c=da(l|0,4,0,0)|0|0;a:do if((c|0)<(b|0)?(da(a+6>>0|0,1,0,0)|0|0)!=0:0){d=a+92|0;o=qg(da(d|0,4,0,0)|0|0,b*48|0,0)|0;if(!o)c=7;else{ew(o+(c*48|0)|0,0,(b-c|0)*48|0)|0;ea(d|0,o|0,4,0);g=a+24|0;h=a+64|0;i=a+148|0;j=a+52|0;k=a+208|0;f=a+72|0;while(1){e=da(g|0,4,0,0)|0|0;a=o+(c*48|0)|0;ea(o+(c*48|0)+20|0,e|0,4,0);if((da(da(h|0,4,0,0)|0|0,4,0,0)|0|0)!=0?(n=f,m=da(n|0,4,0,0)|0|0,n=da(n+4|0,4,0,0)|0|0,(n|0)>0|(n|0)==0&m>>>0>0):0){ea(a|0,m|0,4,0);ea(a+4|0,n|0,4,0)}else{ea(a|0,da(i|0,4,0,0)|0|0,4,0);ea(a+4|0,0|0,4,0)}ea(o+(c*48|0)+24|0,da(j|0,4,0,0)|0|0,4,0);d=pg(512,0)|0;if(!d)break;ew(d|0,0,512)|0;ea(d|0,e|0,4,0);ea(o+(c*48|0)+16|0,d|0,4,0);d=da(k|0,4,0,0)|0|0;if(d){ea(o+(c*48|0)+28|0,da(d+68|0,4,0,0)|0|0,4,0);ea(o+(c*48|0)+32|0,da(d+76|0,4,0,0)|0|0,4,0);ea(o+(c*48|0)+36|0,da(d+80|0,4,0,0)|0|0,4,0);ea(o+(c*48|0)+40|0,da(d+104|0,4,0,0)|0|0,4,0)}c=c+1|0;ea(l|0,c|0,4,0);if((c|0)>=(b|0)){c=0;break a}}ea(o+(c*48|0)+16|0,d|0,4,0);c=7}}else c=0;while(0);return c|0}function hl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;do if(c){d=da(c+4|0,4,0,0)|0|0;if(!(da(d|0,4,0,0)|0)){d=No(a,b,c)|0;break}c=d+26|0;e=da(c|0,2,0,0)|0|0;if(!(e<<16>>16)){f=a+12|0;ea(f|0,(da(f|0,4,0,0)|0|0)+1|0,4,0)}ea(c|0,e+1<<16>>16|0,2,0);if((b|0)==1)ea(a+44|0,d|0,4,0)}else d=0;while(0);return d|0}function il(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+96|0;c=da(g|0,4,0,0)|0|0;if((c|0)>0){f=a+92|0;e=0;a=0;do{d=da(f|0,4,0,0)|0|0;if((da(d+(e*48|0)+20|0,4,0,0)|0|0)>>>0>=b>>>0){a=ai(da(d+(e*48|0)+16|0,4,0,0)|0|0,b)|0|a;c=da(g|0,4,0,0)|0|0}e=e+1|0}while((e|0)<(c|0))}else a=0;return a|0}function jl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;v=i;i=i+32|0;if((i|0)>=(j|0))ba();t=v;p=v+16|0;q=v+12|0;s=v+8|0;n=da(a+68|0,4,0,0)|0|0;a:do if((n|0)!=0?(da(a+40|0,2,0,0)|0|0)!=0:0){o=b*383&8191;r=(n+33|0)>>>12;b:while(1){d=Oo(a,r,p,q,s)|0;if(d)break a;d=(da(p|0,4,0,0)|0|0)+(o<<1)|0;if(!(da(d|0,2,0,0)|0))d=0;else{k=da(s|0,4,0,0)|0|0;l=da(p|0,4,0,0)|0|0;m=da(q|0,4,0,0)|0|0;f=d;g=o;d=0;h=8192;while(1){e=(da(f|0,2,0,1)|0|0)+k|0;if(e>>>0<=n>>>0)d=(da(m+((da(f|0,2,0,1)|0)<<2)|0,4,0,0)|0|0)==(b|0)?e:d;if(!h){u=11;break b}g=g+1&8191;f=l+(g<<1)|0;if(!(da(f|0,2,0,0)|0))break;else h=h+-1|0}}if((r|0)>0&(d|0)==0)r=r+-1|0;else{u=14;break}}if((u|0)==11){ea(t|0,51262|0,4,0);ea(t+4|0,10788|0,4,0);ad(11,13600,t);d=11;break}else if((u|0)==14){ea(c|0,d|0,4,0);d=0;break}}else u=3;while(0);if((u|0)==3){ea(c|0,0|0,4,0);d=0}i=v;return d|0}function kl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=da(a+16|0,4,0,0)|0|0;f=da(a+20|0,4,0,0)|0|0;c=da(e+152|0,4,0,0)|0|0;a=a+4|0;d=da(a|0,4,0,0)|0|0;if(!b){b=rw(f+-1|0,0,c|0,((c|0)<0)<<31>>31|0)|0;g=da(e+60|0,4,0,0)|0|0;b=sc[(fa(da((da(g|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](g,d,c,b,C)|0;b=(b|0)==522?0:b}else{h=da(e+208|0,4,0,0)|0|0;g=da(h+66|0,2,0,1)|0|0;g=g<<16&65536|g&65024;b=rw(g|24|0,0,b+-1|0,0)|0;b=iw(b|0,C|0,56,0)|0;h=da(h+8|0,4,0,0)|0|0;b=sc[(fa(da((da(h|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](h,d,(g|0)<(c|0)?g:c,b,C)|0}do if((f|0)==1)if(!b){d=e+104|0;c=(da(a|0,4,0,0)|0|0)+24|0;a=d+16|0;do{ea(d>>0|0,da(c>>0|0,1,0,0)|0|0|0,1,0);d=d+1|0;c=c+1|0}while((d|0)<(a|0));break}else{d=e+104|0;a=d+16|0;do{ea(d>>0|0,255|0,1,0);d=d+1|0}while((d|0)<(a|0));break}while(0);return b|0}function ll(a){a=a|0;var b=0,c=0;if((da(a+24|0,2,0,0)|0)&2)Po(a,1);b=da(a+28|0,4,0,0)|0|0;c=b+12|0;ea(c|0,(da(c|0,4,0,0)|0|0)+-1|0,4,0);if((da(a+20|0,4,0,0)|0|0)==1)ea(b+44|0,0|0,4,0);lc[(fa(da(8744+136|0,4,0,0)|0|0,63|0)|0)&63](da(b+40|0,4,0,0)|0|0,da(a|0,4,0,0)|0|0,1);return}function ml(a){a=a|0;var b=0;b=da(a+16>>0|0,1,0,0)|0|0;do if(!(b<<24>>24==0|b<<24>>24==6)){if((b&255)<=1){if(da(a+4>>0|0,1,0,0)|0)break;Bl(a,0,0)|0;break}b=da(3164*4|0,4,0,0)|0|0;if(b)mc[(fa(b|0,3|0)|0)&3]();Gl(a)|0;b=da(3166*4|0,4,0,0)|0|0;if(b)mc[(fa(b|0,3|0)|0)&3]()}while(0);Mo(a);return}function nl(a){a=a|0;var b=0,c=0;c=a+26|0;b=(da(c|0,2,0,0)|0|0)+-1<<16>>16;ea(c|0,b|0,2,0);do if(!(b<<16>>16)){b=da(a+28|0,4,0,0)|0|0;c=b+12|0;ea(c|0,(da(c|0,4,0,0)|0|0)+-1|0,4,0);if((da(a+24|0,2,0,0)|0)&2){if(!(da(a+36|0,4,0,0)|0))break;Po(a,3);break}if(da(b+28>>0|0,1,0,0)|0){if((da(a+20|0,4,0,0)|0|0)==1)ea(b+44|0,0|0,4,0);lc[(fa(da(8744+136|0,4,0,0)|0|0,63|0)|0)&63](da(b+40|0,4,0,0)|0|0,da(a|0,4,0,0)|0|0,0)}}while(0);return}function ol(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=da(a+56|0,4,0,0)|0|0;g=da(a+52|0,4,0,0)|0|0;c=da(a+6>>0|0,1,0,1)|0|0;d=f+c|0;e=g+36|0;if((da(g+22|0,2,0,0)|0)&4)ew(d|0,0,(da(e|0,4,0,0)|0|0)-c|0)|0;ea(d>>0|0,b|0,1,0);d=c+(b>>>1&4^12)|0;h=f+(c+1)|0;ea(h>>0|0,0|0,1,0);ea(h+1>>0|0,0|0,1,0);ea(h+2>>0|0,0|0,1,0);ea(h+3>>0|0,0|0,1,0);ea(f+(c+7)>>0|0,0|0,1,0);ea(f+(c+5)>>0|0,(da(e|0,4,0,0)|0|0)>>>8|0,1,0);ea(f+(c+6)>>0|0,da(e|0,4,0,0)|0|0,1,0);ea(a+16|0,(da(e|0,4,0,0)|0|0)-d|0,2,0);Qo(a,b)|0;ea(a+14|0,d|0,2,0);ea(a+60|0,f+(da(e|0,4,0,0)|0|0)|0,4,0);ea(a+64|0,f+(d&65535)|0,4,0);ea(a+1>>0|0,0|0,1,0);ea(a+20|0,(da(g+32|0,4,0,0)|0|0)+65535|0,2,0);ea(a+18|0,0|0,2,0);ea(a>>0|0,1|0,1,0);return}function pl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=i;i=i+32|0;if((i|0)>=(j|0))ba();e=f+16|0;d=f;b=a+8|0;ea(e+0|0,da(b+0|0,4,0,0)|0|0,4,0);ea(e+4|0,da(b+4|0,4,0,0)|0|0,4,0);ea(e+8|0,da(b+8|0,4,0,0)|0|0,4,0);ea(e+12|0,da(b+12|0,4,0,0)|0|0,4,0);c=a+40|0;ea(d+0|0,da(c+0|0,4,0,0)|0|0,4,0);ea(d+4|0,da(c+4|0,4,0,0)|0|0,4,0);ea(d+8|0,da(c+8|0,4,0,0)|0|0,4,0);ea(d+12|0,da(c+12|0,4,0,0)|0|0,4,0);ea(c+0|0,0|0,4,0);ea(c+4|0,0|0,4,0);ea(c+8|0,0|0,4,0);ea(c+12|0,0|0,4,0);Nl(a+24|0);c=da(d+8|0,4,0,0)|0|0;if(c)do{ig(0,da(c+8|0,4,0,0)|0|0);c=da(c|0,4,0,0)|0|0}while((c|0)!=0);Nl(d);ea(b+0|0,0|0,4,0);ea(b+4|0,0|0,4,0);ea(b+8|0,0|0,4,0);ea(b+12|0,0|0,4,0);b=da(e+8|0,4,0,0)|0|0;if(b)do{jg(0,da(b+8|0,4,0,0)|0|0);b=da(b|0,4,0,0)|0|0}while((b|0)!=0);Nl(e);Nl(a+56|0);ea(a+72|0,0|0,4,0);b=a+78|0;c=da(b|0,2,0,0)|0|0;if(c&1){d=a+4|0;ea(d|0,(da(d|0,4,0,0)|0|0)+1|0,4,0);ea(b|0,c&65534|0,2,0)}i=f;return}function ql(a){a=a|0;var b=0,c=0;c=a+332|0;b=da(c|0,4,0,0)|0|0;ea(c|0,0|0,4,0);if(b){a=da(a+4|0,4,0,0)|0|0;if(a)do{c=a+88|0;ea(c|0,da(c|0,2,0,0)|0|8|0,2,0);a=da(a+52|0,4,0,0)|0|0}while((a|0)!=0);do{a=b;b=da(b+24|0,4,0,0)|0|0;zn(a)}while((b|0)!=0)}return}function rl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=a+20|0;b=da(f|0,4,0,0)|0|0;i=a+16|0;c=da(i|0,4,0,0)|0|0;if((b|0)>2){e=2;d=2;do{b=c+(e<<4)|0;if(!(da(c+(e<<4)+4|0,4,0,0)|0)){lg(a,da(b|0,4,0,0)|0|0);ea(b|0,0|0,4,0)}else{if((d|0)<(e|0)){c=c+(d<<4)|0;ea(c+0|0,da(b+0|0,4,0,0)|0|0,4,0);ea(c+4|0,da(b+4|0,4,0,0)|0|0,4,0);ea(c+8|0,da(b+8|0,4,0,0)|0|0,4,0);ea(c+12|0,da(b+12|0,4,0,0)|0|0,4,0)}d=d+1|0}e=e+1|0;b=da(f|0,4,0,0)|0|0;c=da(i|0,4,0,0)|0|0}while((e|0)<(b|0))}else d=2;ew(c+(d<<4)|0,0,b-d<<4|0)|0;ea(f|0,d|0,4,0);if((d|0)<3?(g=da(i|0,4,0,0)|0|0,h=a+456|0,(g|0)!=(h|0)):0){ea(h+0|0,da(g+0|0,4,0,0)|0|0,4,0);ea(h+4|0,da(g+4|0,4,0,0)|0|0,4,0);ea(h+8|0,da(g+8|0,4,0,0)|0|0,4,0);ea(h+12|0,da(g+12|0,4,0,0)|0|0,4,0);ea(h+16|0,da(g+16|0,4,0,0)|0|0,4,0);ea(h+20|0,da(g+20|0,4,0,0)|0|0,4,0);ea(h+24|0,da(g+24|0,4,0,0)|0|0,4,0);ea(h+28|0,da(g+28|0,4,0,0)|0|0,4,0);lg(a,g);ea(i|0,h|0,4,0)}return}function sl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();n=q;k=da(a+16|0,4,0,0)|0|0;m=k+152|0;d=((da(k+148|0,4,0,0)|0|0)>>>0)/((da(m|0,4,0,0)|0|0)>>>0)|0;p=k+20|0;ea(p>>0|0,da(p>>0|0,1,0,1)|0|0|4|0,1,0);h=a+20|0;e=da(h|0,4,0,0)|0|0;a=e+-1&0-d;o=a+1|0;c=~a;b=da(k+24|0,4,0,0)|0|0;if(e>>>0<=b>>>0){if((a+d|0)>>>0>b>>>0)d=b+1+c|0}else d=e+1+c|0;a:do if((d|0)>0){g=k+56|0;l=k+204|0;f=0;a=0;while(1){c=f+o|0;if((c|0)!=(e|0)?(ci(da(g|0,4,0,0)|0|0,c)|0)!=0:0){e=$b[(fa(da(8744+132|0,4,0,0)|0|0,63|0)|0)&63](da((da(l|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,c,0)|0;c=hl(da(l|0,4,0,0)|0|0,c,e)|0;ea(n|0,c|0,4,0);if(!c)b=0;else{a=((da(c+24|0,2,0,0)|0)&4)==0?a:1;Ag(c);b=0}}else if((c|0)==(((da(2514*4|0,4,0,0)|0|0)/(da(m|0,4,0,0)|0|0)|0)+1|0))b=0;else{b=yg(k,c,n,0)|0;if(b)break a;c=da(n|0,4,0,0)|0|0;b=tl(c)|0;a=((da(c+24|0,2,0,0)|0)&4)==0?a:1;Ag(c)}f=f+1|0;c=(b|0)==0;if(!((f|0)<(d|0)&c))break;e=da(h|0,4,0,0)|0|0}if(c&(a|0)!=0){a=0;do{k=a+o|0;b=$b[(fa(da(8744+132|0,4,0,0)|0|0,63|0)|0)&63](da((da(l|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,k,0)|0;b=hl(da(l|0,4,0,0)|0|0,k,b)|0;if(b){k=b+24|0;ea(k|0,da(k|0,2,0,1)|0|0|4|0,2,0);Ag(b)}a=a+1|0}while((a|0)!=(d|0));b=0}}else b=0;while(0);ea(p>>0|0,(da(p>>0|0,1,0,1)|0|0)&251|0,1,0);i=q;return b|0}function tl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=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;w=i;i=i+16|0;if((i|0)>=(j|0))ba();u=w+4|0;l=w;v=da(a+16|0,4,0,0)|0|0;p=v+16|0;a:do if((da(p>>0|0,1,0,0)|0|0)==2){k=da(v|0,4,0,0)|0|0;d=da(v+40|0,4,0,0)|0|0;if(!d){do if((da(v+208|0,4,0,0)|0|0)==0?(g=v+5|0,(da(g>>0|0,1,0,0)|0|0)!=2):0){h=v+24|0;d=da(h|0,4,0,0)|0|0;c=pg(512,0)|0;if(!c){ea(v+56|0,0|0,4,0);b=7;break a}ew(c|0,0,512)|0;ea(c|0,d|0,4,0);m=v+56|0;ea(m|0,c|0,4,0);e=v+64|0;f=da(e|0,4,0,0)|0|0;do if(!(da(f|0,4,0,0)|0)){if((da(g>>0|0,1,0,0)|0|0)==4){d=f+0|0;c=d+40|0;do{ea(d|0,0|0,4,0);d=d+4|0}while((d|0)<(c|0));ea(f|0,14696|0,4,0);o=17;break}c=da(v+12>>0|0,1,0,0)|0|0;ea(l|0,0|0,4,0);if((c<<24>>24==0?(da(h|0,4,0,0)|0|0)!=0:0)?(b=da(v+60|0,4,0,0)|0|0,b=$b[(fa(da((da(b|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,63|0)|0)&63](b,20,l)|0,(b|0)!=12):0){d=(b|0)==0;if(d&(da(l|0,4,0,0)|0|0)!=0){b=1032;break}if(d)o=15}else o=15;if((o|0)==15)b=sc[(fa(da(k+24|0,4,0,0)|0|0,31|0)|0)&31](k,da(v+172|0,4,0,0)|0|0,da(e|0,4,0,0)|0|0,c<<24>>24!=0?4110:2054,0)|0;if(!b)o=17}else o=17;while(0);if((o|0)==17){ea(v+44|0,0|0,4,0);b=v+72|0;ea(v+19>>0|0,0|0,1,0);ea(b+0|0,0|0,4,0);ea(b+4|0,0|0,4,0);ea(b+8|0,0|0,4,0);ea(b+12|0,0|0,4,0);b=Ro(v)|0;if(!b)break}di(da(m|0,4,0,0)|0|0);ea(m|0,0|0,4,0);if(!b){o=20;break a}else break a}while(0);ea(p>>0|0,3|0,1,0);o=20}else b=d}else o=20;while(0);b:do if((o|0)==20){So(a);q=v+56|0;r=a+20|0;f=da(r|0,4,0,0)|0|0;do if(!(ci(da(q|0,4,0,0)|0|0,f)|0))if(!(da(v+208|0,4,0,0)|0)){if(f>>>0<=(da(v+28|0,4,0,0)|0|0)>>>0?(t=v+64|0,s=da(t|0,4,0,0)|0|0,(da(s|0,4,0,0)|0|0)!=0):0){o=v+72|0;g=o;m=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;n=da(a+4|0,4,0,0)|0|0;d=da(v+48|0,4,0,0)|0|0;p=v+152|0;e=(da(p|0,4,0,0)|0|0)+-200|0;if((e|0)>0)do{d=(da(n+e>>0|0,1,0,1)|0|0)+d|0;e=e+-200|0}while((e|0)>0);l=a+24|0;ea(l|0,da(l|0,2,0,1)|0|4|0,2,0);ea(u>>0|0,f>>>24|0,1,0);l=u+1|0;ea(l>>0|0,f>>>16|0,1,0);k=u+2|0;ea(k>>0|0,f>>>8|0,1,0);h=u+3|0;ea(h>>0|0,f|0,1,0);b=sc[(fa(da((da(s|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](s,u,4,m,g)|0;if(b)break b;f=da(t|0,4,0,0)|0|0;b=da(p|0,4,0,0)|0|0;c=iw(m|0,g|0,4,0)|0;e=C;b=sc[(fa(da((da(f|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](f,n,b,c,e)|0;if(b)break b;m=da(t|0,4,0,0)|0|0;b=da(p|0,4,0,0)|0|0;b=iw(c|0,e|0,b|0,((b|0)<0)<<31>>31|0)|0;ea(u>>0|0,d>>>24|0,1,0);ea(l>>0|0,d>>>16|0,1,0);ea(k>>0|0,d>>>8|0,1,0);ea(h>>0|0,d|0,1,0);b=sc[(fa(da((da(m|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](m,u,4,b,C)|0;if(b)break b;b=(da(p|0,4,0,0)|0|0)+8|0;m=o;m=iw(b|0,((b|0)<0)<<31>>31|0,da(m|0,4,0,0)|0|0,da(m+4|0,4,0,0)|0|0)|0;b=o;ea(b|0,m|0,4,0);ea(b+4|0,C|0,4,0);b=v+44|0;ea(b|0,(da(b|0,4,0,0)|0|0)+1|0,4,0);b=ai(da(q|0,4,0,0)|0|0,da(r|0,4,0,0)|0|0)|0;b=il(v,da(r|0,4,0,0)|0|0)|0|b;if(!b){o=34;break}else break b}if((da(p>>0|0,1,0,0)|0|0)!=4){o=a+24|0;ea(o|0,da(o|0,2,0,1)|0|4|0,2,0);o=34}else o=34}else o=34;else if((da(v+96|0,4,0,0)|0|0)!=0?(To(a)|0)!=0:0)o=34;else b=0;while(0);if((o|0)==34)if((da(v+96|0,4,0,0)|0|0)>0?(To(a)|0)!=0:0)b=Uo(a)|0;else b=0;d=v+24|0;c=da(r|0,4,0,0)|0|0;if((da(d|0,4,0,0)|0|0)>>>0>>0)ea(d|0,c|0,4,0)}while(0);i=w;return b|0}function ul(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+128|0;if((i|0)>=(j|0))ba();h=k;d=da(a|0,4,0,0)|0|0;c=(d|0)==0;if(!c){b=d;do{a=b;b=da(b+32|0,4,0,0)|0|0;ea(a+12|0,b|0,4,0)}while((b|0)!=0);b=h+0|0;a=b+128|0;do{ea(b|0,0|0,4,0);b=b+4|0}while((b|0)<(a|0));if(c)a=0;else{f=h+124|0;do{b=d+12|0;a=d;d=da(b|0,4,0,0)|0|0;ea(b|0,0|0,4,0);b=0;do{e=h+(b<<2)|0;c=da(e|0,4,0,0)|0|0;if(!c){c=e;g=8;break}a=Vo(c,a)|0;ea(e|0,0|0,4,0);b=b+1|0}while((b|0)<31);if((g|0)==8){g=0;ea(c|0,a|0,4,0)}if((b|0)==31)ea(f|0,Vo(da(f|0,4,0,0)|0|0,a)|0|0,4,0)}while((d|0)!=0);a=da(h|0,4,0,0)|0|0}}else{b=h+0|0;a=b+128|0;do{ea(b|0,0|0,4,0);b=b+4|0}while((b|0)<(a|0));a=0}b=1;do{a=Vo(a,da(h+(b<<2)|0,4,0,0)|0|0)|0;b=b+1|0}while((b|0)!=32);i=k;return a|0}function vl(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,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,D=0,E=0,F=0;F=i;i=i+80|0;if((i|0)>=(j|0))ba();l=F+32|0;m=F+28|0;v=F;o=F+40|0;D=F+24|0;ea(D|0,b|0,4,0);s=(d|0)==0;if(!s){ea(D|0,b|0,4,0);if(!b){b=0;h=0}else{h=0;g=D;do{t=(da(b+20|0,4,0,0)|0|0)>>>0>c>>>0;z=b+12|0;h=h+(t&1^1)|0;g=t?g:z;b=da(z|0,4,0,0)|0|0;ea(g|0,b|0,4,0)}while((b|0)!=0);b=da(D|0,4,0,0)|0|0}}else h=1;z=a+192|0;ea(z|0,(da(z|0,4,0,0)|0|0)+h|0,4,0);if((da(b+20|0,4,0,0)|0|0)==1)xl(b);A=da(a+208|0,4,0,0)|0|0;B=da(a+152|0,4,0,0)|0|0;n=da(a+10>>0|0,1,0,0)|0|0;t=n&255;f=A+40|0;if(!(da(f|0,2,0,0)|0)){do if(da((da(da(A+32|0,4,0,0)|0|0,4,0,0)|0|0)+96|0,4,0,0)|0){bd(4,l);g=A+43|0;if(!(da(g>>0|0,1,0,0)|0)){h=da(A+4|0,4,0,0)|0|0;h=oc[(fa(da((da(h|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](h,4,4,10)|0;if((h|0)==5){h=g;u=14;break}else if(h)break}Wo(A,da(l|0,4,0,0)|0|0);if(!(da(g>>0|0,1,0,0)|0)){h=da(A+4|0,4,0,0)|0|0;oc[(fa(da((da(h|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](h,4,4,9)|0;h=g;u=14}else{h=g;u=14}}else{h=A+43|0;u=14}while(0);if((u|0)==14){if(!(da(h>>0|0,1,0,0)|0)){z=da(A+4|0,4,0,0)|0|0;oc[(fa(da((da(z|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](z,3,1,5)|0}ea(f|0,-1|0,2,0);g=0;do{g=g+1|0;h=Lo(A,m,1,g)|0}while((h|0)==-1)}if(h)e=h;else u=19}else u=19;a:do if((u|0)==19){z=A+68|0;m=da(z|0,4,0,0)|0|0;if(!m){ea(o>>0|0,55|0,1,0);ea(o+1>>0|0,127|0,1,0);ea(o+2>>0|0,6|0,1,0);ea(o+3>>0|0,-126|0,1,0);ea(o+4>>0|0,0|0,1,0);ea(o+5>>0|0,45|0,1,0);ea(o+6>>0|0,-30|0,1,0);ea(o+7>>0|0,24|0,1,0);ea(o+8>>0|0,B>>>24|0,1,0);ea(o+9>>0|0,B>>>16|0,1,0);ea(o+10>>0|0,B>>>8|0,1,0);ea(o+11>>0|0,B|0,1,0);r=da(A+104|0,4,0,0)|0|0;ea(o+12>>0|0,r>>>24|0,1,0);ea(o+13>>0|0,r>>>16|0,1,0);ea(o+14>>0|0,r>>>8|0,1,0);ea(o+15>>0|0,r|0,1,0);if(!r)bd(8,A+84|0);l=A+84|0;g=l;g=da(g>>0|0,1,0,1)|0|(da(g+1>>0|0,1,0,1)|0)<<8|(da(g+2>>0|0,1,0,1)|0)<<16|(da(g+3>>0|0,1,0,1)|0)<<24;l=l+4|0;l=da(l>>0|0,1,0,1)|0|(da(l+1>>0|0,1,0,1)|0)<<8|(da(l+2>>0|0,1,0,1)|0)<<16|(da(l+3>>0|0,1,0,1)|0)<<24;f=o+16|0;h=f;ea(h>>0|0,g|0,1,0);ea(h+1>>0|0,g>>8|0,1,0);ea(h+2>>0|0,g>>16|0,1,0);ea(h+3>>0|0,g>>24|0,1,0);f=f+4|0;ea(f>>0|0,l|0,1,0);ea(f+1>>0|0,l>>8|0,1,0);ea(f+2>>0|0,l>>16|0,1,0);ea(f+3>>0|0,l>>24|0,1,0);l=o+24|0;f=o;g=0;h=0;do{g=g+h+(da(f|0,4,0,0)|0|0)|0;h=g+h+(da(f+4|0,4,0,0)|0|0)|0;f=f+8|0}while(f>>>0>>0);ea(l>>0|0,g>>>24|0,1,0);ea(o+25>>0|0,g>>>16|0,1,0);ea(o+26>>0|0,g>>>8|0,1,0);ea(o+27>>0|0,g|0,1,0);ea(o+28>>0|0,h>>>24|0,1,0);ea(o+29>>0|0,h>>>16|0,1,0);ea(o+30>>0|0,h>>>8|0,1,0);ea(o+31>>0|0,h|0,1,0);ea(A+36|0,B|0,4,0);ea(A+65>>0|0,0|0,1,0);ea(A+76|0,g|0,4,0);ea(A+80|0,h|0,4,0);ea(A+47>>0|0,1|0,1,0);g=A+8|0;h=da(g|0,4,0,0)|0|0;h=sc[(fa(da((da(h|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](h,o,32,0,0)|0;if(h){e=h;break}if((da(A+48>>0|0,1,0,0)|0|0)!=0&n<<24>>24!=0?(e=da(g|0,4,0,0)|0|0,e=qc[(fa(da((da(e|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](e,t&19)|0,(e|0)!=0):0)break}else g=A+8|0;ea(v|0,A|0,4,0);o=da(g|0,4,0,0)|0|0;ea(v+4|0,o|0,4,0);p=v+8|0;q=p;ea(q|0,0|0,4,0);ea(q+4|0,0|0,4,0);ea(v+16|0,t|0,4,0);ea(v+20|0,B|0,4,0);q=B+24|0;r=((q|0)<0)<<31>>31;h=rw(m|0,0,q|0,r|0)|0;h=iw(h|0,C|0,32,0)|0;e=C;if(!b){f=h;n=0}else{k=e;f=m;n=b;while(1){m=f+1|0;if(s)f=0;else f=(da(n+12|0,4,0,0)|0|0)==0?c:0;e=Xo(v,n,f,h,k)|0;if(e)break a;h=iw(h|0,k|0,q|0,r|0)|0;e=C;l=da(n+12|0,4,0,0)|0|0;if(!l){f=h;break}else{k=e;f=m;n=l}}}s=(d|0)!=0;do if(!((t&32|0)==0|s^1)){if(!(da(A+49>>0|0,1,0,0)|0)){g=0;e=qc[(fa(da((da(o|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](o,t&19)|0;break}h=da(g|0,4,0,0)|0|0;g=da((da(h|0,4,0,0)|0|0)+44|0,4,0,0)|0|0;if(g){h=kc[(fa(g|0,127|0)|0)&127](h)|0;if((h|0)<32){g=512;h=0}else u=37}else{h=4096;u=37}if((u|0)==37){u=(h|0)>65536;g=u?65536:h;h=u?0:((h|0)<0)<<31>>31}u=iw(f|0,e|0,-1,-1)|0;u=iw(u|0,C|0,g|0,h|0)|0;l=C;k=qw(u|0,l|0,g|0,h|0)|0;k=cw(u|0,l|0,k|0,C|0)|0;l=C;u=p;ea(u|0,k|0,4,0);ea(u+4|0,l|0,4,0);if((e|0)<(l|0)|(e|0)==(l|0)&f>>>0>>0){h=e;g=0;while(1){e=Xo(v,n,c,f,h)|0;if(e)break a;f=iw(f|0,h|0,q|0,r|0)|0;h=C;g=g+1|0;if(!((h|0)<(l|0)|(h|0)==(l|0)&f>>>0>>0)){e=0;break}}}else{g=0;e=0}}else{g=0;e=0}while(0);if((s?(w=A+47|0,(da(w>>0|0,1,0,0)|0|0)!=0):0)?(y=A+16|0,x=da(y|0,4,0,0)|0|0,y=da(y+4|0,4,0,0)|0|0,(y|0)>-1|(y|0)==-1&x>>>0>4294967295):0){d=rw(g+m|0,0,q|0,r|0)|0;d=iw(d|0,C|0,32,0)|0;v=C;u=(v|0)>(y|0)|(v|0)==(y|0)&d>>>0>x>>>0;Yo(A,u?d:x,u?v:y);ea(w>>0|0,0|0,1,0)}f=da(z|0,4,0,0)|0|0;if((b|0)!=0&(e|0)==0)do{f=f+1|0;e=Zo(A,f,da(b+20|0,4,0,0)|0|0)|0;b=da(b+12|0,4,0,0)|0|0}while((b|0)!=0&(e|0)==0);b=(e|0)==0;if(b&(g|0)>0){h=n+20|0;do{f=f+1|0;g=g+-1|0;e=Zo(A,f,da(h|0,4,0,0)|0|0)|0;b=(e|0)==0}while(b&(g|0)>0)}if(b){ea(A+66|0,B&65280|B>>>16|0,2,0);ea(z|0,f|0,4,0);if(s){z=A+60|0;ea(z|0,(da(z|0,4,0,0)|0|0)+1|0,4,0);ea(A+72|0,c|0,4,0);_o(A);ea(A+12|0,f|0,4,0)}}else if(e)break;f=a+88|0;e=da(f|0,4,0,0)|0|0;if((e|0)!=0?(E=da(D|0,4,0,0)|0|0,(E|0)!=0):0){b=e;e=E;while(1){$o(b,da(e+20|0,4,0,0)|0|0,da(e+4|0,4,0,0)|0|0);e=da(e+12|0,4,0,0)|0|0;if(!e){e=0;break a}b=da(f|0,4,0,0)|0|0}}else e=0}while(0);i=F;return e|0}function wl(a){a=a|0;var b=0,c=0;b=a+24|0;if((((da(b|0,2,0,0)|0)&2)!=0?(Po(a,1),ea(b|0,(da(b|0,2,0,1)|0)&65529|0,2,0),(da(a+26|0,2,0,0)|0|0)==0):0)?(c=da(a+28|0,4,0,0)|0|0,(da(c+28>>0|0,1,0,0)|0|0)!=0):0){if((da(a+20|0,4,0,0)|0|0)==1)ea(c+44|0,0|0,4,0);lc[(fa(da(8744+136|0,4,0,0)|0|0,63|0)|0)&63](da(c+40|0,4,0,0)|0|0,da(a|0,4,0,0)|0|0,0)}return}function xl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=da(a+16|0,4,0,0)|0|0;b=((da(b+105>>0|0,1,0,1)|0|0)<<16|(da(b+104>>0|0,1,0,1)|0|0)<<24|(da(b+106>>0|0,1,0,1)|0|0)<<8|(da(b+107>>0|0,1,0,1)|0|0))+1|0;a=a+4|0;c=da(a|0,4,0,0)|0|0;f=b>>>24&255;ea(c+24>>0|0,f|0,1,0);e=b>>>16&255;ea(c+25>>0|0,e|0,1,0);d=b>>>8&255;ea(c+26>>0|0,d|0,1,0);b=b&255;ea(c+27>>0|0,b|0,1,0);c=da(a|0,4,0,0)|0|0;ea(c+92>>0|0,f|0,1,0);ea(c+93>>0|0,e|0,1,0);ea(c+94>>0|0,d|0,1,0);ea(c+95>>0|0,b|0,1,0);a=da(a|0,4,0,0)|0|0;ea(a+96>>0|0,0|0,1,0);ea(a+97>>0|0,45|0,1,0);ea(a+98>>0|0,-26|0,1,0);ea(a+99>>0|0,9|0,1,0);return}function yl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;if((i|0)>=(j|0))ba();h=q+16|0;n=q;e=ap(a)|0;a:do if(!e){do if(!(da(a+7>>0|0,1,0,0)|0)){p=a+64|0;if((da(da(p|0,4,0,0)|0|0,4,0,0)|0|0)!=0?(da(a+5>>0|0,1,0,0)|0|0)!=4:0){g=da(a+60|0,4,0,0)|0|0;g=kc[(fa(da((da(g|0,4,0,0)|0|0)+48|0,4,0,0)|0|0,127|0)|0)&127](g)|0;o=(g&512|0)==0;if(o){d=n;ea(d|0,-117058087|0,4,0);ea(d+4|0,-681336544|0,4,0);d=da(a+44|0,4,0,0)|0|0;ea(n+8>>0|0,d>>>24|0,1,0);ea(n+9>>0|0,d>>>16|0,1,0);ea(n+10>>0|0,d>>>8|0,1,0);ea(n+11>>0|0,d|0,1,0);d=a+72|0;e=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;if((e|0)==0&(d|0)==0){e=0;d=0}else{d=iw(e|0,d|0,-1,-1)|0;e=da(a+148|0,4,0,0)|0|0;d=pw(d|0,C|0,e|0,0)|0;d=iw(d|0,C|0,1,0)|0;e=rw(d|0,C|0,e|0,0)|0;d=C}f=da(p|0,4,0,0)|0|0;f=sc[(fa(da((da(f|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](f,h,8,e,d)|0;if(!f){if(!(Yv(h,14808,8)|0)){k=da(p|0,4,0,0)|0|0;k=sc[(fa(da((da(k|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](k,14976,1,e,d)|0;l=12}}else{k=f;l=12}if((l|0)==12?!((k|0)==0|(k|0)==522):0){c=k;break a}d=g&1024;if((da(a+8>>0|0,1,0,0)|0|0)!=0&(d|0)==0?(m=da(p|0,4,0,0)|0|0,m=qc[(fa(da((da(m|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](m,da(a+11>>0|0,1,0,1)|0|0)|0,(m|0)!=0):0){c=m;break a}m=da(p|0,4,0,0)|0|0;e=a+80|0;e=sc[(fa(da((da(m|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](m,n,12,da(e|0,4,0,0)|0|0,da(e+4|0,4,0,0)|0|0)|0;if(e){c=e;break a}}else d=g&1024;if((d|0)==0?(n=da(p|0,4,0,0)|0|0,c=da(a+11>>0|0,1,0,0)|0|0,c=qc[(fa(da((da(n|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](n,(c<<24>>24==3?16:0)|c&255)|0,(c|0)!=0):0)break a;l=a+72|0;n=da(l+4|0,4,0,0)|0|0;m=a+80|0;ea(m|0,da(l|0,4,0,0)|0|0,4,0);ea(m+4|0,n|0,4,0);if((b|0)==0|o^1)break;ea(a+44|0,0|0,4,0);c=Ro(a)|0;if(!c)break;else break a}l=a+72|0;n=da(l+4|0,4,0,0)|0|0;m=a+80|0;ea(m|0,da(l|0,4,0,0)|0|0,4,0);ea(m+4|0,n|0,4,0)}while(0);d=da(a+204|0,4,0,0)|0|0;c=da(d|0,4,0,0)|0|0;if(c)do{n=c+24|0;ea(n|0,(da(n|0,2,0,1)|0)&65531|0,2,0);c=da(c+32|0,4,0,0)|0|0}while((c|0)!=0);ea(d+8|0,da(d+4|0,4,0,0)|0|0,4,0);ea(a+16>>0|0,4|0,1,0);c=0}else c=e;while(0);i=q;return c|0}function zl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();g=s;r=a+60|0;d=da(r|0,4,0,0)|0|0;if(!((da(d|0,4,0,0)|0|0)==0?(c=da(a|0,4,0,0)|0|0,c=sc[(fa(da(c+24|0,4,0,0)|0|0,31|0)|0)&31](c,0,d,(da(a+144|0,4,0,0)|0)&556897|30,0)|0,(c|0)!=0):0)){d=a+36|0;c=da(d|0,4,0,0)|0|0;e=a+24|0;f=da(e|0,4,0,0)|0|0;do if(c>>>0>>0){if((da(b+12|0,4,0,0)|0|0)==0?(da(b+20|0,4,0,0)|0|0)>>>0<=c>>>0:0)break;k=da(a+152|0,4,0,0)|0|0;k=rw(f|0,0,k|0,((k|0)<0)<<31>>31|0)|0;l=g;ea(l|0,k|0,4,0);ea(l+4|0,C|0,4,0);l=da(r|0,4,0,0)|0|0;$b[(fa(da((da(l|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,63|0)|0)&63](l,5,g)|0;ea(d|0,da(e|0,4,0,0)|0|0,4,0)}while(0);if(!b)c=0;else{m=a+24|0;n=a+152|0;o=a+104|0;p=a+32|0;q=a+192|0;l=a+88|0;do{k=da(b+20|0,4,0,0)|0|0;if(k>>>0<=(da(m|0,4,0,0)|0|0)>>>0?((da(b+24|0,2,0,0)|0)&32)==0:0){g=da(n|0,4,0,0)|0|0;a=rw(g|0,((g|0)<0)<<31>>31|0,k+-1|0,0)|0;f=C;e=(k|0)==1;if(e){xl(b);g=da(n|0,4,0,0)|0|0}h=b+4|0;d=da(h|0,4,0,0)|0|0;c=da(r|0,4,0,0)|0|0;c=sc[(fa(da((da(c|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](c,d,g,a,f)|0;if(e){a=o+0|0;g=d+24|0;f=a+16|0;do{ea(a>>0|0,da(g>>0|0,1,0,0)|0|0|0,1,0);a=a+1|0;g=g+1|0}while((a|0)<(f|0))}if(k>>>0>(da(p|0,4,0,0)|0|0)>>>0)ea(p|0,k|0,4,0);ea(q|0,(da(q|0,4,0,0)|0|0)+1|0,4,0);$o(da(l|0,4,0,0)|0|0,k,da(h|0,4,0,0)|0|0)}else c=0;b=da(b+12|0,4,0,0)|0|0}while((c|0)==0&(b|0)!=0)}}i=s;return c|0}function Al(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();k=o;l=a+60|0;d=da(l|0,4,0,0)|0|0;e=da(d|0,4,0,0)|0|0;do if((e|0)!=0?((da(a+16>>0|0,1,0,0)|0|0)+-1&255)>2:0){m=da(a+152|0,4,0,0)|0|0;e=qc[(fa(da(e+24|0,4,0,0)|0|0,127|0)|0)&127](d,k)|0;f=((m|0)<0)<<31>>31;g=rw(m|0,f|0,b|0,0)|0;h=C;if(!e){d=k;e=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;if((e|0)==(g|0)&(d|0)==(h|0))c=0;else{if(!((d|0)>(h|0)|(d|0)==(h|0)&e>>>0>g>>>0)){k=iw(e|0,d|0,m|0,f|0)|0;e=C;if(!((e|0)>(h|0)|(e|0)==(h|0)&k>>>0>g>>>0)){n=da(a+200|0,4,0,0)|0|0;ew(n|0,0,m|0)|0;l=da(l|0,4,0,0)|0|0;c=cw(g|0,h|0,m|0,f|0)|0;c=sc[(fa(da((da(l|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](l,n,m,c,C)|0;n=9}}else{c=da(l|0,4,0,0)|0|0;c=$b[(fa(da((da(c|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,63|0)|0)&63](c,g,h)|0;n=9}if((n|0)==9?(c|0)!=0:0)break;ea(a+32|0,b|0,4,0);c=0}}else c=e}else c=0;while(0);i=o;return c|0} -function Yr(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();o=r;p=r+8|0;ea(p|0,0|0,4,0);a:do if(!b){ea(e|0,0|0,4,0);f=0}else{g=da(b>>0|0,1,0,0)|0|0;if(g<<24>>24==-98)do{b=da(b+12|0,4,0,0)|0|0;g=da(b>>0|0,1,0,0)|0|0}while(g<<24>>24==-98);if(g<<24>>24==-97)k=da(b+38>>0|0,1,0,1)|0|0;else k=g&255;if((k|0)==157){b=da(b+12|0,4,0,0)|0|0;k=da(b>>0|0,1,0,0)|0|0;if((k&-2)<<24>>24==-124){h=-1;g=-1;n=k&255;k=26016;q=12}else q=30}else if((k|0)==38){h=Wq(da(b+8|0,4,0,0)|0|0,0)|0;f=Yr(a,da(b+12|0,4,0,0)|0|0,c,h,e)|0;g=da(e|0,4,0,0)|0|0;if(!g)break;fm(g,h,1);em(da(e|0,4,0,0)|0|0,d,1);break}else{h=1;g=0;n=k;k=10360;q=12}b:do if((q|0)==12){c:do switch(n|0){case 101:{f=lh(a,40,0)|0;if(!f){ea(p|0,f|0,4,0);break c}else{l=f+0|0;m=l+40|0;do{ea(l>>0|0,0|0,1,0);l=l+1|0}while((l|0)<(m|0));ea(f+8|0,1|0,2,0);ea(f+32|0,a|0,4,0);ea(p|0,f|0,4,0);g=f;f=0;break b}}case 157:{b=da(b+12|0,4,0,0)|0|0;q=30;break b}case 134:{f=lh(a,40,0)|0;if(!f){ea(p|0,f|0,4,0);break c}l=f+0|0;m=l+40|0;do{ea(l>>0|0,0|0,1,0);l=l+1|0}while((l|0)<(m|0));ea(f+8|0,1|0,2,0);ea(f+32|0,a|0,4,0);ea(p|0,f|0,4,0);g=(da(b+8|0,4,0,0)|0|0)+2|0;b=g;while(1)if(!(da(b>>0|0,1,0,0)|0))break;else b=b+1|0;p=(b-g&1073741823)+-1|0;Wg(f,Xt(a,g,p)|0,(p|0)/2|0,0,75)|0;g=f;f=0;break b}case 97:case 132:case 133:{f=lh(a,40,0)|0;if(!f){ea(p|0,f|0,4,0);break c}l=f+0|0;m=l+40|0;do{ea(l>>0|0,0|0,1,0);l=l+1|0}while((l|0)<(m|0));ea(f+8|0,1|0,2,0);ea(f+32|0,a|0,4,0);ea(p|0,f|0,4,0);do if(!((da(b+4|0,4,0,0)|0)&1024)){h=da(b+8|0,4,0,0)|0|0;ea(o|0,k|0,4,0);ea(o+4|0,h|0,4,0);h=th(a,19456,o)|0;if(!h)break c;if(f)Wg(f,h,-1,1,75)|0}else{k=da(b+8|0,4,0,0)|0|0;k=rw(k|0,((k|0)<0)<<31>>31|0,h|0,g|0)|0;h=C;b=f+8|0;if(!((da(b|0,2,0,0)|0)&9312)){p=f;ea(p|0,k|0,4,0);ea(p+4|0,h|0,4,0);ea(b|0,4|0,2,0);break}else{Yg(f,k,h);break}}while(0);if((n&-2|0)==132&d<<24>>24==65)em(f,67,1);else em(f,d,1);g=f+8|0;b=da(g|0,2,0,1)|0|0;if(b&12)ea(g|0,b&65533|0,2,0);if(c<<24>>24==1){g=f;f=0;break b}g=f;f=Xl(f,c&255)|0;break b}default:{g=0;f=0;break b}}while(0);ea(a+65>>0|0,1|0,1,0);lg(a,0);Lh(f);f=7;break a}while(0);if((q|0)==30){o=(Yr(a,b,c,d,p)|0)==0;g=da(p|0,4,0,0)|0|0;if(o&(g|0)!=0){np(g);h=g+8|0;b=da(h|0,2,0,0)|0|0;do if(!(b&8)){k=g;f=da(k|0,4,0,0)|0|0;k=da(k+4|0,4,0,0)|0|0;if((f|0)==0&(k|0)==-2147483648){ea(g|0,+(9223372036854775808.0),8,1);ea(h|0,b&48640|8|0,2,0);break}else{o=cw(0,0,f|0,k|0)|0;p=g;ea(p|0,o|0,4,0);ea(p+4|0,C|0,4,0);break}}else ea(g|0,+-+(+da(g|0,8,1,0)),8,1);while(0);em(g,d,c);f=0}else f=0}ea(e|0,g|0,4,0)}while(0);i=r;return f|0}function Zr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;do if((b|0)!=0?(e=a+19|0,f=da(e>>0|0,1,0,0)|0|0,(f&255)<8):0){d=0;c=a+116|0;while(1){if((da(c+12|0,4,0,0)|0|0)==(b|0)){d=5;break}d=d+1|0;if((d|0)>=10){d=7;break}else c=c+20|0}if((d|0)==5){ea(c+6>>0|0,1|0,1,0);break}else if((d|0)==7){ea(e>>0|0,f+1<<24>>24|0,1,0);ea(a+((f&255)<<2)+24|0,b|0,4,0);break}}while(0);return}function _r(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();l=m;c=a+484|0;h=da(c|0,4,0,0)|0|0;k=da(a|0,4,0,0)|0|0;do if((h|0)!=0?(as(a),ea(a+512|0,0|0,4,0),(da(h+52|0,4,0,0)|0|0)>=1):0){if(da(k+145>>0|0,1,0,0)|0)if(!(Hk((da(h+68|0,4,0,0)|0|0)+8|0,da(h|0,4,0,0)|0|0,h)|0)){ea(c|0,0|0,4,0);break}else{ea(k+65>>0|0,1|0,1,0);break}if(b)ea(a+500|0,(da(b|0,4,0,0)|0|0)-(da(a+496|0,4,0,0)|0|0)+(da(b+4|0,4,0,0)|0|0)|0,4,0);ea(l|0,a+496|0,4,0);g=th(k,25256,l)|0;b=da(h+68|0,4,0,0)|0|0;a:do if(b){d=da(k+20|0,4,0,0)|0|0;if((d|0)>0){e=da(k+16|0,4,0,0)|0|0;f=0;while(1){c=f+1|0;if((da(e+(f<<4)+12|0,4,0,0)|0|0)==(b|0)){c=f;break a}if((c|0)<(d|0))f=c;else break}}else c=0}else c=-1e6;while(0);e=da(h|0,4,0,0)|0|0;f=da(a+384|0,4,0,0)|0|0;ea(l|0,da((da(k+16|0,4,0,0)|0|0)+(c<<4)|0,4,0,0)|0|0,4,0);ea(l+4|0,((c|0)==1?13184:13208)|0,4,0);ea(l+8|0,e|0,4,0);ea(l+12|0,e|0,4,0);ea(l+16|0,g|0,4,0);ea(l+20|0,f|0,4,0);Ar(a,25280,l);lg(k,g);g=Nq(a)|0;Cr(a,c);vh(g,144,0,0,0)|0;ea(l|0,da(h|0,4,0,0)|0|0,4,0);Hr(g,c,th(k,25368,l)|0);a=a+72|0;l=(da(a|0,4,0,0)|0|0)+1|0;ea(a|0,l|0,4,0);a=da(h|0,4,0,0)|0|0;wh(g,vh(g,97,0,l,0)|0,a,0);vh(g,147,c,l,0)|0}while(0);i=m;return}function $r(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+52|0;h=da(g|0,4,0,0)|0|0;d=h+1|0;ea(g|0,d|0,4,0);f=(h<<2)+8|0;e=b+56|0;f=qo(a,da(e|0,4,0,0)|0|0,f,((f|0)<0)<<31>>31)|0;if(!f){if((h|0)>0){b=0;do{lg(a,da((da(e|0,4,0,0)|0|0)+(b<<2)|0,4,0,0)|0|0);b=b+1|0}while((b|0)!=(h|0))}lg(a,c);lg(a,da(e|0,4,0,0)|0|0);ea(g|0,0|0,4,0)}else{ea(f+(h<<2)|0,c|0,4,0);ea(f+(d<<2)|0,0|0,4,0)}ea(e|0,f|0,4,0);return}function as(a){a=a|0;var b=0,c=0,d=0,e=0;b=da(a+512|0,4,0,0)|0|0;if((b|0)!=0?(e=da(a+484|0,4,0,0)|0|0,(e|0)!=0):0){c=da(a+516|0,4,0,0)|0|0;d=da(a|0,4,0,0)|0|0;a=iw(c|0,((c|0)<0)<<31>>31|0,1,0)|0;a=lh(d,a,C)|0;if(!a)a=0;else{jw(a|0,b|0,c|0)|0;ea(a+c>>0|0,0|0,1,0)}$r(d,e,a)}return}function bs(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,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();h=m;k=da(a|0,4,0,0)|0|0;l=Vq(k,c)|0;g=(b|0)!=0;if((l|0)!=0&g?(f=da(b|0,4,0,0)|0|0,(f|0)>0):0){c=f;f=0;do{if(!(cd(l,da(b+(f<<4)+8|0,4,0,0)|0|0)|0)){ea(h|0,l|0,4,0);sh(a,25184,h);c=da(b|0,4,0,0)|0|0}f=f+1|0}while((f|0)<(c|0))}if(g){f=((da(b|0,4,0,0)|0)<<4)+24|0;f=qo(k,b,f,((f|0)<0)<<31>>31)|0;if(!f)c=10;else{b=f;c=11}}else{c=lh(k,24,0)|0;if(!c)c=10;else{f=c+0|0;b=f+24|0;do{ea(f>>0|0,0|0,1,0);f=f+1|0}while((f|0)<(b|0));b=c;c=11}}if((c|0)==10){Mk(k,d);Lk(k,e,1);lg(k,l)}else if((c|0)==11){k=b+8|0;ea(k+((da(b|0,4,0,0)|0)<<4)+8|0,e|0,4,0);e=da(b|0,4,0,0)|0|0;ea(k+(e<<4)+4|0,d|0,4,0);ea(k+(e<<4)|0,l|0,4,0);ea(k+(e<<4)+12|0,0|0,4,0);ea(b|0,e+1|0,4,0)}i=m;return b|0}function cs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+96|0;if((i|0)>=(j|0))ba();h=k+48|0;c=k;d=da(da(a+32|0,4,0,0)|0|0,4,0,0)|0|0;e=h+0|0;f=d+0|0;g=e+48|0;do{ea(e>>0|0,da(f>>0|0,1,0,0)|0|0|0,1,0);e=e+1|0;f=f+1|0}while((e|0)<(g|0));if((da(a+43>>0|0,1,0,0)|0|0)!=2){e=da(a+4|0,4,0,0)|0|0;bc[(fa(da((da(e|0,4,0,0)|0|0)+60|0,4,0,0)|0|0,31|0)|0)&31](e)}e=c+0|0;f=d+48|0;g=e+48|0;do{ea(e>>0|0,da(f>>0|0,1,0,0)|0|0|0,1,0);e=e+1|0;f=f+1|0}while((e|0)<(g|0));if((Yv(h,c,48)|0)==0?(da(h+12>>0|0,1,0,0)|0|0)!=0:0){f=h+40|0;g=h;d=0;c=0;do{d=d+c+(da(g|0,4,0,0)|0|0)|0;c=d+c+(da(g+4|0,4,0,0)|0|0)|0;g=g+8|0}while(g>>>0>>0);if((d|0)==(da(f|0,4,0,0)|0|0)?(c|0)==(da(h+44|0,4,0,0)|0|0):0){c=a+52|0;if(!(Yv(c,h,48)|0))c=0;else{ea(b|0,1|0,4,0);e=c+0|0;f=h+0|0;g=e+48|0;do{ea(e|0,da(f|0,4,0,0)|0|0,4,0);e=e+4|0;f=f+4|0}while((e|0)<(g|0));c=da(a+66|0,2,0,1)|0|0;ea(a+36|0,c<<16&65536|c&65024|0,4,0);c=0}}else c=1}else c=1;i=k;return c|0}function ds(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;b=sc[(fa(da((da(a|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](a,e,4,b,c)|0;if(!b)ea(d|0,(da(e+1>>0|0,1,0,1)|0|0)<<16|(da(e>>0|0,1,0,1)|0|0)<<24|(da(e+2>>0|0,1,0,1)|0|0)<<8|(da(e+3>>0|0,1,0,1)|0|0)|0,4,0);i=f;return b|0}function es(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(b>>>0<0|(b|0)==0&a>>>0<8)if(b>>>0<0|(b|0)==0&a>>>0<2)a=0;else{c=40;do{c=(c&65535)+65526|0;a=hw(a|0,b|0,1)|0;b=C}while(b>>>0<0|(b|0)==0&a>>>0<8);c=c&65535;e=11}else{if(b>>>0>0|(b|0)==0&a>>>0>255){d=b;c=40;while(1){c=(c&65535)+40|0;e=lw(a|0,d|0,4)|0;b=C;if(d>>>0>0|(d|0)==0&a>>>0>4095){a=e;d=b}else{a=e;break}}c=c&65535}else c=40;if(b>>>0>0|(b|0)==0&a>>>0>15){e=a;while(1){c=(c&65535)+10&65535;a=lw(e|0,b|0,1)|0;if(b>>>0>0|(b|0)==0&e>>>0>31){e=a;b=C}else break}e=11}else e=11}if((e|0)==11)a=(c&65535)+65526+(da(13496+((a&7)<<1)|0,2,0,1)|0|0)&65535;return a|0}function fs(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;i=da(a+408|0,4,0,0)|0|0;i=(i|0)==0?a:i;g=i+396|0;f=da(g|0,4,0,0)|0|0;h=da(i+400|0,4,0,0)|0|0;a:do if((f|0)>0){a=0;while(1){if((da(h+(a<<4)|0,4,0,0)|0|0)==(b|0)?(da(h+(a<<4)+4|0,4,0,0)|0|0)==(c|0):0)break;a=a+1|0;if((a|0)>=(f|0)){j=8;break a}}a=h+(a<<4)+8|0;if(!(da(a>>0|0,1,0,0)|0))f=d<<24>>24!=0&1;else f=1;ea(a>>0|0,f|0,1,0)}else j=8;while(0);do if((j|0)==8){a=(f<<4)+16|0;a=Vl(da(i|0,4,0,0)|0|0,h,a,((a|0)<0)<<31>>31)|0;ea(i+400|0,a|0,4,0);if(!a){ea(g|0,0|0,4,0);ea((da(i|0,4,0,0)|0|0)+65>>0|0,1|0,1,0);break}else{f=da(g|0,4,0,0)|0|0;ea(g|0,f+1|0,4,0);ea(a+(f<<4)|0,b|0,4,0);ea(a+(f<<4)+4|0,c|0,4,0);ea(a+(f<<4)+8>>0|0,d|0,1,0);ea(a+(f<<4)+12|0,e|0,4,0);break}}while(0);return}function gs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=da(b+48|0,2,0,0)|0|0;h=e&65535;d=da(b+46|0,2,0,1)|0|0;i=a+64|0;if(!(da(i|0,4,0,0)|0)){c=da(a|0,4,0,0)|0|0;if(!((da(b+51>>0|0,1,0,0)|0)&8))g=Qs(c,h,0)|0;else g=Qs(c,d,h-d|0)|0;if(g){if(e<<16>>16){f=b+32|0;b=b+28|0;d=g+16|0;c=0;do{e=da((da(f|0,4,0,0)|0|0)+(c<<2)|0,4,0,0)|0|0;if(!(Zv(e,11152)|0))e=0;else e=br(a,e)|0;ea(g+(c<<2)+20|0,e|0,4,0);ea((da(d|0,4,0,0)|0|0)+c>>0|0,da((da(b|0,4,0,0)|0|0)+c>>0|0,1,0,0)|0|0|0,1,0);c=c+1|0}while((c|0)<(h|0))}c=(da(i|0,4,0,0)|0|0)==0;if(!c){c=(da(g|0,4,0,0)|0|0)+-1|0;ea(g|0,c|0,4,0);if(!c){Vc(g);c=0}else c=0}else c=c?g:0}else c=0}else c=0;return c|0}function hs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;B=i;i=i+112|0;if((i|0)>=(j|0))ba();w=B;y=B+100|0;z=B+96|0;g=B+48|0;x=da(a+8|0,4,0,0)|0|0;ea(y|0,0|0,4,0);ea(z|0,0|0,4,0);v=da(a|0,4,0,0)|0|0;a:do if(!x)c=0;else{b:do if(!b)A=16;else{m=da(b>>0|0,1,0,0)|0|0;l=m&255;do switch(l|0){case 155:{e=da(b+40|0,4,0,0)|0|0;if(!e){ea(w|0,da(b+8|0,4,0,0)|0|0,4,0);sh(a,28936,w);break b}else{c=da((da(e+40|0,4,0,0)|0|0)+((da(b+34|0,2,0,0)|0)<<4)+8|0,4,0,0)|0|0;break b}}case 132:{Yt(a,b,0,c);break b}case 79:case 78:case 83:case 80:case 81:case 82:{u=b+12|0;w=_t(a,da(u|0,4,0,0)|0|0,y)|0;v=b+16|0;x=_t(a,da(v|0,4,0,0)|0|0,z)|0;$t(a,da(u|0,4,0,0)|0|0,da(v|0,4,0,0)|0|0,l,w,x,c,32);break b}case 97:{w=da(b+8|0,4,0,0)|0|0;wh(x,vh(x,97,0,c,0)|0,w,0);break b}case 119:case 20:{c=du(a,b,0,0)|0;break b}case 75:{w=ws(x)|0;h=ws(x)|0;vh(x,28,0,c,0)|0;eu(a,b,w,h);vh(x,25,1,c,0)|0;e=x+24|0;d=da(e|0,4,0,0)|0|0;f=~w;if((w|0)<0?(k=da(d+112|0,4,0,0)|0|0,(k|0)!=0):0)ea(k+(f<<2)|0,da(x+32|0,4,0,0)|0|0,4,0);g=x+32|0;ea(d+88|0,(da(g|0,4,0,0)|0|0)+-1|0,4,0);vh(x,37,c,0,0)|0;f=da(e|0,4,0,0)|0|0;e=~h;if((h|0)<0?(n=da(f+112|0,4,0,0)|0|0,(n|0)!=0):0)ea(n+(e<<2)|0,da(g|0,4,0,0)|0|0,4,0);ea(f+88|0,(da(g|0,4,0,0)|0|0)+-1|0,4,0);break b}case 24:{c=hs(a,da(b+12|0,4,0,0)|0|0,c)|0;break b}case 77:case 76:{vh(x,25,1,c,0)|0;d=vh(x,l,_t(a,da(b+12|0,4,0,0)|0|0,y)|0,0,0)|0;vh(x,25,0,c,0)|0;e=da(x+32|0,4,0,0)|0|0;if(e>>>0>d>>>0)ea((da(x+4|0,4,0,0)|0|0)+(d*20|0)+8|0,e|0,4,0);ea((da(x+24|0,4,0,0)|0|0)+88|0,e+-1|0,4,0);break b}case 159:{c=da(b+28|0,4,0,0)|0|0;break b}case 158:case 95:{c=hs(a,da(b+12|0,4,0,0)|0|0,c)|0;break b}case 62:{d=da(b+44|0,4,0,0)|0|0;e=b+32|0;vh(x,132,(_((da(d+38|0,2,0,0)|0|0)+1|0,da(b+28|0,4,0,0)|0|0)|0)+((da(e|0,2,0,0)|0|0)+1)|0,c,0)|0;e=da(e|0,2,0,0)|0|0;if(e<<16>>16<=-1)break b;if((da((da(d+4|0,4,0,0)|0|0)+((e<<16>>16)*24|0)+21>>0|0,1,0,0)|0|0)!=69)break b;vh(x,39,c,0,0)|0;break b}case 153:{k=da(v+62>>0|0,1,0,0)|0|0;t=b+4|0;if(((da(t|0,4,0,0)|0)&16384|0)==0?(h=da(b+20|0,4,0,0)|0|0,(h|0)!=0):0){u=da(h|0,4,0,0)|0|0;r=1;s=h}else{u=0;r=0;s=0}m=da(b+8|0,4,0,0)|0|0;if(!m)l=0;else{l=m;while(1)if(!(da(l>>0|0,1,0,0)|0))break;else l=l+1|0;l=l-m&1073741823}g=Rh(v,m,l,u,k,0)|0;if((g|0)!=0?(da(g+12|0,4,0,0)|0|0)!=0:0){q=g+2|0;h=da(q|0,2,0,1)|0|0;if(h&512){g=ws(x)|0;f=s+4|0;Qq(a,da(da(f|0,4,0,0)|0|0,4,0,0)|0|0,c);if((u|0)>1){e=a+100|0;d=1;do{vh(x,77,c,g,0)|0;ct(a,c,1);ea(e|0,(da(e|0,4,0,0)|0|0)+1|0,4,0);Qq(a,da((da(f|0,4,0,0)|0|0)+(d*20|0)|0,4,0,0)|0|0,c);au(a);d=d+1|0}while((d|0)!=(u|0))}f=da(x+24|0,4,0,0)|0|0;e=~g;if((g|0)<0?(p=da(f+112|0,4,0,0)|0|0,(p|0)!=0):0)ea(p+(e<<2)|0,da(x+32|0,4,0,0)|0|0,4,0);ea(f+88|0,(da(x+32|0,4,0,0)|0|0)+-1|0,4,0);break b}if(h&1024){Qq(a,da(da(s+4|0,4,0,0)|0|0,4,0,0)|0|0,c);break b}p=(u|0)>0;if(p){l=s+4|0;k=w+20|0;h=w+4|0;e=w+24|0;m=0;d=0;f=0;do{if((d|0)<32?(b=da((da(l|0,4,0,0)|0|0)+(d*20|0)|0,4,0,0)|0|0,ea(w+0|0,0|0,4,0),ea(w+4|0,0|0,4,0),ea(w+8|0,0|0,4,0),ea(w+12|0,0|0,4,0),ea(w+16|0,0|0,4,0),ea(w+20|0,0|0,4,0),ea(k>>0|0,1|0,1,0),ea(w|0,78|0,4,0),ea(h|0,79|0,4,0),ea(e|0,0|0,4,0),qs(w,b)|0,(da(k>>0|0,1,0,0)|0|0)!=0):0)m=m|1<>0|0,1,0,0)|0|0,w<<24>>24==-100|w<<24>>24==-102):0)ea(o+38>>0|0,h&192|0,1,0);w=a+100|0;ea(w|0,(da(w|0,4,0,0)|0|0)+1|0,4,0);at(a,s,m,3);au(a)}else m=0;if((u|0)>1?((da(t|0,4,0,0)|0)&128|0)!=0:0)g=cu(v,g,u,da((da(s+4|0,4,0,0)|0|0)+20|0,4,0,0)|0|0)|0;else if(p)g=cu(v,g,u,da(da(s+4|0,4,0,0)|0|0,4,0,0)|0|0)|0;if((da(g+2|0,2,0,0)|0)&32){if(!f)f=da(v+8|0,4,0,0)|0|0;wh(x,vh(x,36,0,0,0)|0,f,-4)}wh(x,vh(x,1,n,m,c)|0,g,-5);f=da(x+4|0,4,0,0)|0|0;if(f)ea(f+(((da(x+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,u|0,1,0);if(!((u|0)!=0&(n|0)==0))break b;ct(a,m,u);e=a+56|0;if((da(e|0,4,0,0)|0|0)>=(u|0))break b;ea(e|0,u|0,4,0);ea(a+60|0,m|0,4,0);break b}ea(w|0,l|0,4,0);ea(w+4|0,m|0,4,0);sh(a,28968,w);break b}case 19:case 96:{vh(x,l,_t(a,da(b+12|0,4,0,0)|0|0,y)|0,c,0)|0;break b}case 154:break;case 148:case 73:{u=b+12|0;w=_t(a,da(u|0,4,0,0)|0|0,y)|0;v=b+16|0;x=_t(a,da(v|0,4,0,0)|0|0,z)|0;$t(a,da(u|0,4,0,0)|0|0,da(v|0,4,0,0)|0|0,m<<24>>24==73?79:78,w,x,c,160);break b}case 135:{e=b+32|0;vh(x,31,da(e|0,2,0,0)|0|0,c,0)|0;if(!(da((da(b+8|0,4,0,0)|0|0)+1>>0|0,1,0,0)|0))break b;wh(x,-1,da((da(a+472|0,4,0,0)|0|0)+((da(e|0,2,0,0)|0|0)+-1<<2)|0,4,0,0)|0|0,-2);break b}case 133:{Zt(x,da(b+8|0,4,0,0)|0|0,0,c);break b}case 74:{m=da(b+12|0,4,0,0)|0|0;h=da((da(b+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;d=da(h|0,4,0,0)|0|0;k=_t(a,m,y)|0;l=_t(a,d,z)|0;g=a+19|0;e=da(g>>0|0,1,0,0)|0|0;if(e<<24>>24){w=e+-1<<24>>24;ea(g>>0|0,w|0,1,0);f=da(a+((w&255)<<2)+24|0,4,0,0)|0|0;if(!(w<<24>>24))A=103;else{w=e+-2<<24>>24;ea(g>>0|0,w|0,1,0);g=da(a+((w&255)<<2)+24|0,4,0,0)|0|0}}else{A=a+72|0;f=(da(A|0,4,0,0)|0|0)+1|0;ea(A|0,f|0,4,0);A=103}if((A|0)==103){w=a+72|0;g=(da(w|0,4,0,0)|0|0)+1|0;ea(w|0,g|0,4,0)}$t(a,m,d,83,k,l,f,32);w=da(h+20|0,4,0,0)|0|0;Zr(a,da(z|0,4,0,0)|0|0);$t(a,m,w,81,k,_t(a,w,z)|0,g,32);vh(x,72,f,g,c)|0;Zr(a,f);Zr(a,g);break b}case 94:case 88:case 87:case 92:case 86:case 85:case 93:case 90:case 91:case 89:case 71:case 72:{w=_t(a,da(b+12|0,4,0,0)|0|0,y)|0;vh(x,l,_t(a,da(b+16|0,4,0,0)|0|0,z)|0,w,c)|0;break b}case 157:{e=b+12|0;d=da(e|0,4,0,0)|0|0;f=da(d>>0|0,1,0,0)|0|0;if(f<<24>>24==-123){Zt(x,da(d+8|0,4,0,0)|0|0,1,c);break b}else if(f<<24>>24==-124){Yt(a,d,1,c);break b}else{ea(g>>0|0,-124|0,1,0);ea(g+4|0,17408|0,4,0);ea(g+8|0,0|0,4,0);w=_t(a,g,y)|0;vh(x,90,_t(a,da(e|0,4,0,0)|0|0,z)|0,w,c)|0;break b}}case 101:{A=16;break b}case 156:{d=da(b+40|0,4,0,0)|0|0;e=da(b+34|0,2,0,0)|0|0;f=da(d+28|0,4,0,0)|0|0;if(!(da(d>>0|0,1,0,0)|0)){c=da(f+(e*24|0)+16|0,4,0,0)|0|0;break b}if(da(d+1>>0|0,1,0,0)|0){vh(x,47,da(d+8|0,4,0,0)|0|0,da(f+(e*24|0)+12|0,4,0,0)|0|0,c)|0;break b}break}case 38:{e=hs(a,da(b+12|0,4,0,0)|0|0,c)|0;if((e|0)!=(c|0))vh(x,34,e,c,0)|0;vh(x,40,c,(Wq(da(b+8|0,4,0,0)|0|0,0)|0)<<24>>24,0)|0;ct(a,c,1);break b}case 57:{if(!(da(a+412|0,4,0,0)|0)){sh(a,29e3,w);c=0;break a}f=da(b+1>>0|0,1,0,0)|0|0;if(f<<24>>24!=2){d=da(b+8|0,4,0,0)|0|0;if(f<<24>>24==4){wh(x,vh(x,24,0,4,0)|0,d,0);break b}}else{d=da(a+408|0,4,0,0)|0|0;ea(((d|0)==0?a:d)+21>>0|0,1|0,1,0);d=da(b+8|0,4,0,0)|0|0}ys(a,1811,f<<24>>24,d,0,0);break b}case 134:{d=(da(b+8|0,4,0,0)|0|0)+2|0;e=d;while(1)if(!(da(e>>0|0,1,0,0)|0))break;else e=e+1|0;v=(e-d&1073741823)+-1|0;w=Xt(da(x|0,4,0,0)|0|0,d,v)|0;wh(x,vh(x,30,(v|0)/2|0,c,0)|0,w,-1);break b}default:{q=da(b+20|0,4,0,0)|0|0;o=q+4|0;p=da(o|0,4,0,0)|0|0;q=da(q|0,4,0,0)|0|0;r=ws(x)|0;m=da(b+12|0,4,0,0)|0|0;b=(m|0)!=0;if(b){l=g+0|0;k=m+0|0;h=l+48|0;do{ea(l|0,da(k|0,4,0,0)|0|0,4,0);l=l+4|0;k=k+4|0}while((l|0)<(h|0));m=_t(a,m,y)|0;ea(g+38>>0|0,da(g>>0|0,1,0,0)|0|0|0,1,0);ea(g>>0|0,-97|0,1,0);ea(g+28|0,m|0,4,0);m=g+4|0;ea(m|0,(da(m|0,4,0,0)|0)&-4097|0,4,0);ea(w>>0|0,79|0,1,0);ea(w+12|0,g|0,4,0);ea(y|0,0|0,4,0);m=w}else m=0;n=q+-1|0;if((n|0)>0){d=a+100|0;h=w+16|0;g=x+24|0;f=x+32|0;e=0;l=m;while(1){ea(d|0,(da(d|0,4,0,0)|0|0)+1|0,4,0);m=da(p+(e*20|0)|0,4,0,0)|0|0;if(b){ea(h|0,m|0,4,0);m=l}w=ws(x)|0;ft(a,m,w,16);Qq(a,da(p+((e|1)*20|0)|0,4,0,0)|0|0,c);vh(x,16,0,r,0)|0;au(a);l=da(g|0,4,0,0)|0|0;k=~w;if((w|0)<0?(s=da(l+112|0,4,0,0)|0|0,(s|0)!=0):0)ea(s+(k<<2)|0,da(f|0,4,0,0)|0|0,4,0);ea(l+88|0,(da(f|0,4,0,0)|0|0)+-1|0,4,0);e=e+2|0;if((e|0)>=(n|0))break;else l=m}}if(!(q&1))vh(x,28,0,c,0)|0;else{w=a+100|0;ea(w|0,(da(w|0,4,0,0)|0|0)+1|0,4,0);Qq(a,da((da(o|0,4,0,0)|0|0)+(n*20|0)|0,4,0,0)|0|0,c);au(a)}f=da(x+24|0,4,0,0)|0|0;e=~r;if((r|0)<0?(t=da(f+112|0,4,0,0)|0|0,(t|0)!=0):0)ea(t+(e<<2)|0,da(x+32|0,4,0,0)|0|0,4,0);ea(f+88|0,(da(x+32|0,4,0,0)|0|0)+-1|0,4,0);break b}}while(0);d=da(b+28|0,4,0,0)|0|0;do if((d|0)<0){d=da(a+92|0,4,0,0)|0|0;if((d|0)>0){c=(da(b+32|0,2,0,0)|0|0)+d|0;break b}else{d=da(a+96|0,4,0,0)|0|0;break}}while(0);c=bt(a,da(b+44|0,4,0,0)|0|0,da(b+32|0,2,0,0)|0|0,d,c,da(b+38>>0|0,1,0,0)|0|0)|0}while(0);if((A|0)==16)vh(x,28,0,c,0)|0;Zr(a,da(y|0,4,0,0)|0|0);Zr(a,da(z|0,4,0,0)|0|0)}while(0);i=B;return c|0}function is(a,b){a=a|0;b=b|0;var c=0;c=Nq(a)|0;fs(a,b,1,1,(b|0)==1?13184:13208);wh(c,vh(c,55,0,1,b)|0,5,-14);b=a+68|0;if(!(da(b|0,4,0,0)|0))ea(b|0,1|0,4,0);return}function js(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=b+48|0;if((da(d|0,2,0,1)|0|0|0)<(c|0)){e=c*7|0;a=lh(a,e,((e|0)<0)<<31>>31)|0;if(!a)a=7;else{ew(a|0,0,e|0)|0;e=b+32|0;jw(a|0,da(e|0,4,0,0)|0|0,(da(d|0,2,0,1)|0|0)<<2|0)|0;ea(e|0,a|0,4,0);e=a+(c<<2)|0;f=b+4|0;jw(e|0,da(f|0,4,0,0)|0|0,(da(d|0,2,0,1)|0|0)<<1|0)|0;ea(f|0,e|0,4,0);a=a+(c*6|0)|0;e=b+28|0;jw(a|0,da(e|0,4,0,0)|0|0,da(d|0,2,0,1)|0|0|0)|0;ea(e|0,a|0,4,0);ea(d|0,c|0,2,0);a=b+51|0;ea(a>>0|0,da(a>>0|0,1,0,0)|0|16|0,1,0);a=0}}else a=0;return a|0}function ks(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();f=m;l=m+4|0;do if(!b)c=0;else{g=da(a|0,4,0,0)|0|0;k=b+24|0;e=g+460|0;d=(da(e|0,4,0,0)|0|0)+(da(k|0,4,0,0)|0|0)|0;c=da((da(g|0,4,0,0)|0|0)+100|0,4,0,0)|0|0;if((c|0)<(d|0)){ea(f|0,c|0,4,0);sh(g,27152,f);c=1;break}ea(e|0,d|0,4,0);f=a+28|0;e=da(f|0,2,0,1)|0|0;h=e&4098;ea(f|0,e&61437|0,2,0);ea(l+0|0,0|0,4,0);ea(l+4|0,0|0,4,0);ea(l+8|0,0|0,4,0);ea(l+12|0,0|0,4,0);ea(l+16|0,0|0,4,0);ea(l+20|0,0|0,4,0);ea(l|0,82|0,4,0);ea(l+4|0,83|0,4,0);e=l+12|0;ea(e|0,g|0,4,0);ea(l+24|0,a|0,4,0);qs(l,b)|0;l=(da(a|0,4,0,0)|0|0)+460|0;ea(l|0,(da(l|0,4,0,0)|0|0)-(da(k|0,4,0,0)|0|0)|0,4,0);if(!((da(a+24|0,4,0,0)|0|0)<=0?(da((da(e|0,4,0,0)|0|0)+64|0,4,0,0)|0|0)<=0:0)){l=b+4|0;ea(l|0,da(l|0,4,0,0)|0|8|0,4,0)}e=da(f|0,2,0,0)|0|0;d=b+4|0;c=da(d|0,4,0,0)|0|0;if(e&2){c=c|2;ea(d|0,c|0,4,0)}ea(f|0,e&65535|h|0,2,0);c=c>>>3&1}while(0);i=m;return c|0}function ls(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=da((da(a+12|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;c=da(a+48|0,2,0,0)|0|0;if(!(c<<16>>16)){b=0;c=0}else{g=da(a+4|0,4,0,0)|0|0;d=c&65535;e=0;b=0;do{c=da(g+(e<<1)|0,2,0,0)|0|0;if(c<<16>>16<0)c=1;else c=da(f+((c<<16>>16)*24|0)+22>>0|0,1,0,1)|0|0;b=c+b|0;e=e+1|0}while((e|0)<(d|0));b=b<<2;c=0}ea(a+44|0,es(b,c)|0|0,2,0);return}function ms(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=da(a|0,4,0,0)|0|0;d=g+24|0;f=da(d|0,4,0,0)|0|0;ea(d|0,f&-97|64|0,4,0);Cs(a,b,0);if(!(da(a+64|0,4,0,0)|0)){while(1){c=da(b+52|0,4,0,0)|0|0;if(!c){e=b;break}else b=c}ea(d|0,f|0,4,0);b=lh(g,76,0)|0;if(b){c=b+0|0;d=c+76|0;do{ea(c>>0|0,0|0,1,0);c=c+1|0}while((c|0)<(d|0));ea(b+40|0,1|0,2,0);ea(b|0,0|0,4,0);ea(b+28|0,200|0,2,0);hu(a,da(e|0,4,0,0)|0|0,b+38|0,b+4|0);iu(a,b,e);ea(b+36|0,-1|0,2,0);if(da(g+65>>0|0,1,0,0)|0){jg(g,b);b=0}}else b=0}else b=0;return b|0}function ns(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;d=da(b|0,4,0,0)|0|0;e=da(c>>0|0,1,0,0)|0|0;a:do if(!(e<<24>>24)){g=0;f=0}else{g=e;h=0;while(1){f=h+1|0;if(!(g<<24>>24==95?1:((da(10368+(g&255)>>0|0,1,0,0)|0)&6)!=0)){f=h;break a}g=da(c+f>>0|0,1,0,0)|0|0;if(!(g<<24>>24)){g=0;break}else h=f}}while(0);if((((e&255)+-48|0)>>>0>=10?(ei(c,f)|0)==27:0)?!((f|0)==0|g<<24>>24!=0):0)i=0;else{ea(a+d>>0|0,34|0,1,0);i=1;e=da(c>>0|0,1,0,0)|0|0;d=d+1|0}if(e<<24>>24){f=c;h=0;do{g=d+1|0;ea(a+d>>0|0,e|0,1,0);if((da(f>>0|0,1,0,0)|0|0)==34){ea(a+g>>0|0,34|0,1,0);d=d+2|0}else d=g;h=h+1|0;f=c+h|0;e=da(f>>0|0,1,0,0)|0|0}while(e<<24>>24!=0)}if(i){ea(a+d>>0|0,34|0,1,0);d=d+1|0}ea(a+d>>0|0,0|0,1,0);ea(b|0,d|0,4,0);return}function os(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+20|0;d=da(c>>0|0,1,0,0)|0|0;if(d<<24>>24==2?((da(b+4|0,4,0,0)|0)&1|0)!=0:0){ea(c>>0|0,0|0,1,0);c=2}else e=4;a:do if((e|0)==4)switch(da(b>>0|0,1,0,1)|0|0|0){case 153:{if((d&255)>3){c=0;break a}if((da(b+4|0,4,0,0)|0)&524288){c=0;break a}ea(c>>0|0,0|0,1,0);c=2;break a}case 135:if(d<<24>>24==5){ea(b>>0|0,101|0,1,0);c=0;break a}else if(d<<24>>24==4){ea(c>>0|0,0|0,1,0);c=2;break a}else{c=0;break a}case 156:case 155:case 154:case 27:{if(d<<24>>24==3?(da(b+28|0,4,0,0)|0|0)==(da(a+24|0,4,0,0)|0|0):0){c=0;break a}ea(c>>0|0,0|0,1,0);c=2;break a}default:{c=0;break a}}while(0);return c|0}function ps(a,b){a=a|0;b=b|0;ea(a+20>>0|0,0|0,1,0);return 2}function qs(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if(!b)b=0;else{c=qc[(fa(da(a|0,4,0,0)|0|0,127|0)|0)&127](a,b)|0;do if((c|0)==0?(d=b+4|0,((da(d|0,4,0,0)|0)&16384|0)==0):0){if(qs(a,da(b+12|0,4,0,0)|0|0)|0){b=2;break a}if(qs(a,da(b+16|0,4,0,0)|0|0)|0){b=2;break a}b=b+20|0;if(!((da(d|0,4,0,0)|0)&2048))if(!(ku(a,da(b|0,4,0,0)|0|0)|0))break;else{b=2;break a}else if(!(ju(a,da(b|0,4,0,0)|0|0)|0))break;else{b=2;break a}}while(0);b=c&2}while(0);return b|0}function rs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;do if(b)if(!c)d=b;else{if((lu(b)|0)==0?(lu(c)|0)==0:0){d=lh(a,48,0)|0;if(d){e=d+0|0;f=e+48|0;do{ea(e>>0|0,0|0,1,0);e=e+1|0}while((e|0)<(f|0));ea(d>>0|0,72|0,1,0);ea(d+34|0,-1|0,2,0);ea(d+24|0,1|0,4,0)}ss(a,d,b,c);break}Fk(a,b);Fk(a,c);d=mr(a,132,20616,0)|0}else d=c;while(0);return d|0}function ss(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!b){Fk(a,c);Fk(a,d)}else{if(d){ea(b+16|0,d|0,4,0);a=b+4|0;ea(a|0,da(a|0,4,0,0)|0|(da(d+4|0,4,0,0)|0)&2097408|0,4,0)}if(c){ea(b+12|0,c|0,4,0);a=b+4|0;ea(a|0,da(a|0,4,0,0)|0|(da(c+4|0,4,0,0)|0)&2097408|0,4,0)}Ht(b)}return}function ts(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;f=b<<16>>16;h=(f<<2)+63&-8;i=f<<1;j=i+2|0;g=(f+7+i+j&-8)+h|0;e=g+c|0;c=lh(a,e,((e|0)<0)<<31>>31)|0;if(c){ew(c|0,0,e|0)|0;ea(c+32|0,c+56|0,4,0);ea(c+8|0,c+h|0,4,0);e=h+j|0;ea(c+4|0,c+e|0,4,0);ea(c+28|0,c+(e+i)|0,4,0);ea(c+48|0,b|0,2,0);ea(c+46|0,f+65535|0,2,0);ea(d|0,c+g|0,4,0)}return c|0}function us(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;w=i;i=i+16|0;if((i|0)>=(j|0))ba();q=w;m=da(b+12|0,4,0,0)|0|0;l=a+68|0;t=da(l|0,4,0,0)|0|0;v=t+1|0;ea(l|0,t+2|0,4,0);k=da(a|0,4,0,0)|0|0;g=da(b+24|0,4,0,0)|0|0;a:do if(g){e=da(k+20|0,4,0,0)|0|0;if((e|0)>0){d=da(k+16|0,4,0,0)|0|0;h=0;while(1){f=h+1|0;if((da(d+(h<<4)+12|0,4,0,0)|0|0)==(g|0)){f=h;break a}if((f|0)<(e|0))h=f;else break}}else f=0}else f=-1e6;while(0);if((Rq(a,27,da(b|0,4,0,0)|0|0,0,da((da(k+16|0,4,0,0)|0|0)+(f<<4)|0,4,0,0)|0|0)|0)==0?(fs(a,f,da(m+32|0,4,0,0)|0|0,1,da(m|0,4,0,0)|0|0),u=Nq(a)|0,(u|0)!=0):0){if((c|0)>-1)n=c;else n=da(b+40|0,4,0,0)|0|0;r=gs(a,b)|0;s=da(l|0,4,0,0)|0|0;ea(l|0,s+1|0,4,0);p=b+46|0;e=da(p|0,2,0,1)|0|0;if(r)ea(r|0,(da(r|0,4,0,0)|0|0)+1|0,4,0);wh(u,vh(u,58,s,0,e)|0,r,-6);Pq(a,t,f,m,54);k=vh(u,108,t,0,0)|0;e=a+19|0;d=da(e>>0|0,1,0,0)|0|0;if(!(d<<24>>24)){m=a+72|0;o=(da(m|0,4,0,0)|0|0)+1|0;ea(m|0,o|0,4,0)}else{o=d+-1<<24>>24;ea(e>>0|0,o|0,1,0);o=da(a+((o&255)<<2)+24|0,4,0,0)|0|0}Ot(a,b,t,o,0,q,0,0)|0;vh(u,109,s,o,0)|0;Pt(a,da(q|0,4,0,0)|0|0);vh(u,9,t,k+1|0,0)|0;m=u+32|0;h=da(m|0,4,0,0)|0|0;if(h>>>0>k>>>0)ea((da(u+4|0,4,0,0)|0|0)+(k*20|0)+8|0,h|0,4,0);g=u+24|0;ea((da(g|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);if((c|0)<0)vh(u,118,n,f,0)|0;wh(u,vh(u,55,v,n,f)|0,r,-6);l=u+4|0;e=da(l|0,4,0,0)|0|0;if(e)ea(e+(((da(m|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,(c>>31)+4&252|1|0,1,0);k=vh(u,106,s,0,0)|0;e=da(m|0,4,0,0)|0|0;if((da(b+50>>0|0,1,0,0)|0|0)!=0&(r|0)!=0){h=e+3|0;vh(u,16,0,h,0)|0;e=da(m|0,4,0,0)|0|0;n=da(p|0,2,0,1)|0|0;wh(u,vh(u,99,s,h,o)|0,n,-14);mu(a,2,b)}vh(u,100,s,o,v)|0;vh(u,110,v,o,1)|0;d=da(l|0,4,0,0)|0|0;if(d)ea(d+(((da(m|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,16|0,1,0);Zr(a,o);vh(u,5,s,e,0)|0;d=da(m|0,4,0,0)|0|0;if(d>>>0>k>>>0)ea((da(l|0,4,0,0)|0|0)+(k*20|0)+8|0,d|0,4,0);ea((da(g|0,4,0,0)|0|0)+88|0,d+-1|0,4,0);vh(u,61,t,0,0)|0;vh(u,61,v,0,0)|0;vh(u,61,s,0,0)|0}i=w;return}function vs(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,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;l=da(a|0,4,0,0)|0|0;if(!c){c=Xn(l,b,d,0)|0;if(!c)h=4;else h=3}else h=3;if((h|0)==3)if(!(da(c+12|0,4,0,0)|0))h=4;else h=14;if((h|0)==4){f=b&255;e=l+224|0;if(da(e|0,4,0,0)|0){g=jh(l,d)|0;if(g){pc[(fa(da(e|0,4,0,0)|0|0,15|0)|0)&15](da(l+232|0,4,0,0)|0|0,l,f,g);lg(l,g);h=7}}else h=7;if((h|0)==7?(k=l+228|0,(da(k|0,4,0,0)|0|0)!=0):0){e=lh(l,40,0)|0;if(!e)e=0;else{g=e+0|0;f=g+40|0;do{ea(g>>0|0,0|0,1,0);g=g+1|0}while((g|0)<(f|0));ea(e+8|0,1|0,2,0);ea(e+32|0,l|0,4,0);Wg(e,d,-1,1,0)|0}c=Rg(e,2)|0;if(c)pc[(fa(da(k|0,4,0,0)|0|0,15|0)|0)&15](da(l+232|0,4,0,0)|0|0,l,da(l+62>>0|0,1,0,1)|0|0,c);Lh(e)}c=Xn(l,b,d,0)|0;if(!c)h=19;else h=14}a:do if((h|0)==14)if(!(da(c+12|0,4,0,0)|0)){f=da(c|0,4,0,0)|0|0;g=0;while(1){e=Xn(l,da(26816+g>>0|0,1,0,0)|0|0,f,0)|0;g=g+1|0;if(da(e+12|0,4,0,0)|0)break;if((g|0)>=3){h=19;break a}}ea(c+0|0,da(e+0|0,4,0,0)|0|0,4,0);ea(c+4|0,da(e+4|0,4,0,0)|0|0,4,0);ea(c+8|0,da(e+8|0,4,0,0)|0|0,4,0);ea(c+12|0,da(e+12|0,4,0,0)|0|0,4,0);ea(c+16|0,0|0,4,0)}while(0);if((h|0)==19){ea(m|0,d|0,4,0);sh(a,26784,m);c=0}i=n;return c|0}function ws(a){a=a|0;var b=0,c=0;a=da(a+24|0,4,0,0)|0|0;c=a+108|0;b=da(c|0,4,0,0)|0|0;ea(c|0,b+1|0,4,0);if(!(b+-1&b)){c=a+112|0;a=Vl(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0,b<<3|4,0)|0;ea(c|0,a|0,4,0)}else a=da(a+112|0,4,0,0)|0|0;if(a)ea(a+(b<<2)|0,-1|0,4,0);return ~b|0}function xs(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;if(b){d=da(b|0,4,0,0)|0|0;if((d|0)>0){e=(d*72|0)+8|0;d=e;e=((e|0)<0)<<31>>31}else{d=80;e=0}d=lh(a,d,e)|0;if(d){e=da(b|0,4,0,0)|0|0;ea(d+4|0,e|0,4,0);ea(d|0,e|0,4,0);if((da(b|0,4,0,0)|0|0)>0){e=d+8|0;g=0;do{ea(e+(g*72|0)|0,da(b+(g*72|0)+8|0,4,0,0)|0|0,4,0);ea(e+(g*72|0)+4|0,jh(a,da(b+(g*72|0)+12|0,4,0,0)|0|0)|0|0,4,0);ea(e+(g*72|0)+8|0,jh(a,da(b+(g*72|0)+16|0,4,0,0)|0|0)|0|0,4,0);ea(e+(g*72|0)+12|0,jh(a,da(b+(g*72|0)+20|0,4,0,0)|0|0)|0|0,4,0);ea(e+(g*72|0)+36>>0|0,da(b+(g*72|0)+44>>0|0,1,0,0)|0|0|0,1,0);ea(e+(g*72|0)+40|0,da(b+(g*72|0)+48|0,4,0,0)|0|0,4,0);ea(e+(g*72|0)+24|0,da(b+(g*72|0)+32|0,4,0,0)|0|0,4,0);ea(e+(g*72|0)+28|0,da(b+(g*72|0)+36|0,4,0,0)|0|0,4,0);f=b+(g*72|0)+45|0;h=e+(g*72|0)+37|0;i=(da(h>>0|0,1,0,0)|0)&-3|(da(f>>0|0,1,0,0)|0)&2;ea(h>>0|0,i|0,1,0);i=i&-5|(da(f>>0|0,1,0,0)|0)&4;ea(h>>0|0,i|0,1,0);ea(h>>0|0,i&-9|(da(f>>0|0,1,0,0)|0)&8|0,1,0);ea(e+(g*72|0)+64|0,jh(a,da(b+(g*72|0)+72|0,4,0,0)|0|0)|0|0,4,0);ea(h>>0|0,(da(h>>0|0,1,0,0)|0)&-2|(da(f>>0|0,1,0,0)|0)&1|0,1,0);ea(e+(g*72|0)+68|0,da(b+(g*72|0)+76|0,4,0,0)|0|0,4,0);f=da(b+(g*72|0)+24|0,4,0,0)|0|0;ea(e+(g*72|0)+16|0,f|0,4,0);if(f){f=f+40|0;ea(f|0,(da(f|0,2,0,0)|0|0)+1<<16>>16|0,2,0)}ea(e+(g*72|0)+20|0,fr(a,da(b+(g*72|0)+28|0,4,0,0)|0|0,c)|0|0,4,0);ea(e+(g*72|0)+44|0,Lr(a,da(b+(g*72|0)+52|0,4,0,0)|0|0,c,0)|0|0,4,0);ea(e+(g*72|0)+48|0,Mr(a,da(b+(g*72|0)+56|0,4,0,0)|0|0)|0|0,4,0);i=b+(g*72|0)+64|0;f=da(i+4|0,4,0,0)|0|0;h=e+(g*72|0)+56|0;ea(h|0,da(i|0,4,0,0)|0|0,4,0);ea(h+4|0,f|0,4,0);g=g+1|0}while((g|0)<(da(b|0,4,0,0)|0|0))}}else d=0}else d=0;return d|0}function ys(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=Nq(a)|0;if((c|0)==2){i=da(a+408|0,4,0,0)|0|0;ea(((i|0)==0?a:i)+21>>0|0,1|0,1,0)}wh(g,vh(g,24,b,c,0)|0,d,e<<24>>24);if(f<<24>>24!=0?(h=da(g+4|0,4,0,0)|0|0,(h|0)!=0):0)ea(h+(((da(g+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,f|0,1,0);return}function zs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=da((da((da(a|0,4,0,0)|0|0)+16|0,4,0,0)|0|0)+28|0,4,0,0)|0|0;do if(!(da(a+438>>0|0,1,0,0)|0)){f=da(b+68|0,4,0,0)|0|0;if((c|0)!=(f|0)?(d=da(c+48|0,4,0,0)|0|0,(d|0)!=0):0){e=b+64|0;c=0;while(1){a=da(d+8|0,4,0,0)|0|0;if((da(a+24|0,4,0,0)|0|0)==(f|0)?(cd(da(a+4|0,4,0,0)|0|0,da(b|0,4,0,0)|0|0)|0)==0:0){if(!c)c=da(e|0,4,0,0)|0|0;ea(a+32|0,c|0,4,0)}else a=c;d=da(d|0,4,0,0)|0|0;if(!d)break;else c=a}if(a)break}a=da(b+64|0,4,0,0)|0|0}else a=0;while(0);return a|0}function As(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=da(b+32|0,4,0,0)|0|0;j=b+8|0;h=b+68|0;e=0;while(1){f=(e|0)==0;b=f|(i|0)<(e|0)?i:0;c=da(j|0,4,0,0)|0|0;if(!c)g=b;else{do{d=da(c+40|0,4,0,0)|0|0;b=(f|(d|0)<(e|0))&(d|0)>(b|0)?d:b;c=da(c+20|0,4,0,0)|0|0}while((c|0)!=0);g=b}if(!g)break;b=da(a|0,4,0,0)|0|0;e=da(h|0,4,0,0)|0|0;a:do if(e){f=da(b+20|0,4,0,0)|0|0;if((f|0)>0){c=da(b+16|0,4,0,0)|0|0;d=0;while(1){b=d+1|0;if((da(c+(d<<4)+12|0,4,0,0)|0|0)==(e|0)){b=d;break a}if((b|0)<(f|0))d=b;else break}}else b=0}else b=-1e6;while(0);Dr(a,g,b);e=g}return}function Bs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;a:do if((b|0)!=0?(c=da(b|0,4,0,0)|0|0,(c|0)>0):0){g=a+68|0;e=0;f=b+8|0;while(1){d=f+40|0;if((da(d|0,4,0,0)|0|0)>-1)break a;h=da(g|0,4,0,0)|0|0;ea(g|0,h+1|0,4,0);ea(d|0,h|0,4,0);d=da(f+20|0,4,0,0)|0|0;if(d){Bs(a,da(d+32|0,4,0,0)|0|0);c=da(b|0,4,0,0)|0|0}e=e+1|0;if((e|0)>=(c|0))break;else f=f+72|0}}while(0);return}function Cs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+32|0;if((i|0)>=(j|0))ba();h=k;if(((b|0)!=0?(g=(da(a|0,4,0,0)|0|0)+65|0,(da(g>>0|0,1,0,0)|0|0)==0):0)?(e=b+6|0,d=da(e|0,2,0,0)|0|0,(d&32)==0):0){ea(h+0|0,0|0,4,0);ea(h+4|0,0|0,4,0);ea(h+8|0,0|0,4,0);ea(h+12|0,0|0,4,0);ea(h+16|0,0|0,4,0);ea(h+20|0,0|0,4,0);ea(h+24|0,0|0,4,0);ea(h|0,84|0,4,0);ea(h+12|0,a|0,4,0);f=h+4|0;if(da(a+22>>0|0,1,0,0)|0){ea(f|0,85|0,4,0);ju(h,b)|0;d=da(e|0,2,0,0)|0|0}ea(f|0,86|0,4,0);if(!(d&256))ea(h+8|0,9|0,4,0);ju(h,b)|0;d=a+64|0;if((((da(d|0,4,0,0)|0|0)==0?(da(g>>0|0,1,0,0)|0|0)==0:0)?(ea(h+0|0,0|0,4,0),ea(h+4|0,0|0,4,0),ea(h+8|0,0|0,4,0),ea(h+12|0,0|0,4,0),ea(h+16|0,0|0,4,0),ea(h+20|0,0|0,4,0),ea(h|0,82|0,4,0),ea(h+4|0,83|0,4,0),ea(h+12|0,a|0,4,0),ea(h+24|0,c|0,4,0),ju(h,b)|0,(da(d|0,4,0,0)|0|0)==0):0)?(da(g>>0|0,1,0,0)|0|0)==0:0){ea(h+0|0,0|0,4,0);ea(h+4|0,0|0,4,0);ea(h+8|0,0|0,4,0);ea(h+12|0,0|0,4,0);ea(h+16|0,0|0,4,0);ea(h+20|0,0|0,4,0);ea(h+24|0,0|0,4,0);ea(h+8|0,10|0,4,0);ea(h|0,84|0,4,0);ea(h+12|0,a|0,4,0);ju(h,b)|0}}i=k;return}function Ds(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if(a)do{c=da(a+36|0,4,0,0)|0|0;if((c|0)!=0?(g=da(c+24|0,4,0,0)|0|0,(g|0)>(da(b|0,4,0,0)|0|0)):0)ea(b|0,g|0,4,0);c=da(a+44|0,4,0,0)|0|0;if((c|0)!=0?(d=da(c+24|0,4,0,0)|0|0,(d|0)>(da(b|0,4,0,0)|0|0)):0)ea(b|0,d|0,4,0);c=da(a+60|0,4,0,0)|0|0;if((c|0)!=0?(e=da(c+24|0,4,0,0)|0|0,(e|0)>(da(b|0,4,0,0)|0|0)):0)ea(b|0,e|0,4,0);c=da(a+64|0,4,0,0)|0|0;if((c|0)!=0?(f=da(c+24|0,4,0,0)|0|0,(f|0)>(da(b|0,4,0,0)|0|0)):0)ea(b|0,f|0,4,0);su(da(a|0,4,0,0)|0|0,b);su(da(a+40|0,4,0,0)|0|0,b);su(da(a+48|0,4,0,0)|0|0,b);a=da(a+52|0,4,0,0)|0|0}while((a|0)!=0);return}function Es(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;e=da(b|0,4,0,0)|0|0;f=e+c|0;if(f>>>0>(da(b+4|0,4,0,0)|0|0)>>>0){g=qo(a,b,(f*72|0)+8|0,0)|0;if(g){do if(!a)b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](g)|0;else{if((da(a+276|0,4,0,0)|0|0)>>>0<=g>>>0?(da(a+280|0,4,0,0)|0|0)>>>0>g>>>0:0){b=da(a+248|0,2,0,1)|0|0;break}b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](g)|0}while(0);ea(g+4|0,(((b+-80|0)>>>0)/72|0)+1|0,4,0);b=g;e=da(g|0,4,0,0)|0|0;h=10}}else h=10;if((h|0)==10){if((e|0)>(d|0)){do{e=e+-1|0;f=b+((e+c|0)*72|0)+8|0;a=b+(e*72|0)+8|0;g=f+72|0;do{ea(f|0,da(a|0,4,0,0)|0|0,4,0);f=f+4|0;a=a+4|0}while((f|0)<(g|0))}while((e|0)>(d|0));e=da(b|0,4,0,0)|0|0}ea(b|0,e+c|0,4,0);ew(b+(d*72|0)+8|0,0,c*72|0)|0;e=d+c|0;if((c|0)>0)do{ea(b+(d*72|0)+48|0,-1|0,4,0);d=d+1|0}while((d|0)<(e|0))}return b|0}function Fs(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;if((b|0)!=0?(da(b|0,4,0,0)|0|0)>0:0){e=b+4|0;f=da(e|0,4,0,0)|0|0;g=0;do{h=Gs(a,da(f+(g*20|0)|0,4,0,0)|0|0,c,d)|0;f=da(e|0,4,0,0)|0|0;ea(f+(g*20|0)|0,h|0,4,0);g=g+1|0}while((g|0)<(da(b|0,4,0,0)|0|0))}return}function Gs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;do if(b){if((da(b>>0|0,1,0,0)|0|0)==-102?(da(b+28|0,4,0,0)|0|0)==(c|0):0){e=da(b+32|0,2,0,0)|0|0;if(e<<16>>16<0){ea(b>>0|0,101|0,1,0);break}else{e=Lr(a,da((da(d+4|0,4,0,0)|0|0)+((e<<16>>16)*20|0)|0,4,0,0)|0|0,0,0)|0;Fk(a,b);b=e;break}}e=b+12|0;ea(e|0,Gs(a,da(e|0,4,0,0)|0|0,c,d)|0|0,4,0);e=b+16|0;ea(e|0,Gs(a,da(e|0,4,0,0)|0|0,c,d)|0|0,4,0);e=b+20|0;if(!((da(b+4|0,4,0,0)|0)&2048)){Fs(a,da(e|0,4,0,0)|0|0,c,d);break}else{tu(a,da(e|0,4,0,0)|0|0,c,d);break}}else b=0;while(0);return b|0}function Hs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=da(da(b|0,4,0,0)|0|0,4,0,0)|0|0;d=b;f=1;while(1){b=da(d+52|0,4,0,0)|0|0;if(!b){e=5;break}if((da(da(b|0,4,0,0)|0|0,4,0,0)|0|0)==(e|0)){d=b;f=f+1|0}else{e=3;break}}a:do if((e|0)==3){Is(a,b);b=1}else if((e|0)==5)if(!d)b=0;else{g=((f|0)<0)<<31>>31;e=0;while(1){h=d+52|0;ea(h|0,0|0,4,0);b=hr(a,d,c)|0;ea(h|0,e|0,4,0);if(b)break a;b=d+24|0;ea(b|0,f|0,4,0);ea(b+4|0,g|0,4,0);b=da(d+56|0,4,0,0)|0|0;if(!b){b=0;break a}d=b;e=da(b+52|0,4,0,0)|0|0}}while(0);return b|0}function Is(a,b){a=a|0;b=b|0;var c=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();c=d;if(!((da(b+6|0,2,0,0)|0)&128)){b=da(b+4>>0|0,1,0,1)|0|0;if((b|0)==116)b=35320;else if((b|0)==118)b=35336;else if((b|0)==117)b=35352;else b=35360;ea(c|0,b|0,4,0);sh(a,35232,c)}else sh(a,35184,c);i=d;return}function Js(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;A=i;i=i+32|0;if((i|0)>=(j|0))ba();r=A;e=da(b+32|0,4,0,0)|0|0;h=da(da(b|0,4,0,0)|0|0,4,0,0)|0|0;o=da(a+8|0,4,0,0)|0|0;p=b+52|0;q=da(p|0,4,0,0)|0|0;if(!(Rq(a,33,0,0,0)|0)){s=ws(o)|0;Ns(a,b,s);t=b+60|0;u=da(t|0,4,0,0)|0|0;v=b+64|0;w=da(v|0,4,0,0)|0|0;x=b+8|0;l=da(x|0,4,0,0)|0|0;y=b+12|0;m=da(y|0,4,0,0)|0|0;ea(v|0,0|0,4,0);ea(t|0,0|0,4,0);ea(y|0,0|0,4,0);ea(x|0,0|0,4,0);x=b+48|0;y=da(x|0,4,0,0)|0|0;f=da(e|0,4,0,0)|0|0;a:do if((f|0)>0){g=0;while(1){if((da(e+(g*72|0)+45>>0|0,1,0,0)|0)&8)break;g=g+1|0;if((g|0)>=(f|0)){k=0;break a}}k=da(e+(g*72|0)+48|0,4,0,0)|0|0}else k=0;while(0);g=a+68|0;e=da(g|0,4,0,0)|0|0;f=e+1|0;ea(g|0,f|0,4,0);d=(y|0)!=0;if((da(b+4>>0|0,1,0,0)|0|0)==115){ea(g|0,e+2|0,4,0);g=d?8:6}else{g=d?7:5;f=0}ea(r>>0|0,g|0,1,0);ea(r+4|0,e|0,4,0);ea(r+1>>0|0,0|0,1,0);ea(r+8|0,0|0,4,0);ea(r+12|0,0|0,4,0);B=a+72|0;g=(da(B|0,4,0,0)|0|0)+1|0;ea(B|0,g|0,4,0);vh(o,60,k,g,h)|0;if(d){h=uu(a,b)|0;wh(o,vh(o,57,e,(da(y|0,4,0,0)|0|0)+2|0,0)|0,h,-6);ea(r+16|0,y|0,4,0)}else vh(o,57,e,h,0)|0;if(f){ea(b+16|0,vh(o,57,f,0,0)|0|0,4,0);f=b+6|0;ea(f|0,da(f|0,2,0,1)|0|8|0,2,0)}ea(x|0,0|0,4,0);h=q+56|0;ea(h|0,0|0,4,0);f=hr(a,q,r)|0;ea(h|0,b|0,4,0);if(!f){h=vh(o,108,e,s,0)|0;vh(o,104,k,0,0)|0;if(d)vh(o,47,e,(da(y|0,4,0,0)|0|0)+1|0,g)|0;else vh(o,102,e,g,0)|0;vh(o,95,e,0,0)|0;f=ws(o)|0;ht(o,m,f);Os(a,b,da(b|0,4,0,0)|0|0,k,0,0,c,f,s);if(l)vh(o,140,l,s,0)|0;d=o+24|0;g=da(d|0,4,0,0)|0|0;e=~f;if((f|0)<0?(n=da(g+112|0,4,0,0)|0|0,(n|0)!=0):0)ea(n+(e<<2)|0,da(o+32|0,4,0,0)|0|0,4,0);f=o+32|0;ea(g+88|0,(da(f|0,4,0,0)|0|0)+-1|0,4,0);ea(p|0,0|0,4,0);hr(a,b,r)|0;ea(p|0,q|0,4,0);vh(o,16,0,h,0)|0;d=da(d|0,4,0,0)|0|0;e=~s;if((s|0)<0?(z=da(d+112|0,4,0,0)|0|0,(z|0)!=0):0)ea(z+(e<<2)|0,da(f|0,4,0,0)|0|0,4,0);ea(d+88|0,(da(f|0,4,0,0)|0|0)+-1|0,4,0)}Mk(da(a|0,4,0,0)|0|0,da(x|0,4,0,0)|0|0);ea(x|0,y|0,4,0);ea(t|0,u|0,4,0);ea(v|0,w|0,4,0)}i=A;return}function Ks(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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,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=i;i=i+48|0;if((i|0)>=(j|0))ba();m=S+40|0;o=S+20|0;F=S;O=da(a|0,4,0,0)|0|0;L=da(a+8|0,4,0,0)|0|0;N=ws(L)|0;K=ws(L)|0;P=b+4|0;G=da(P>>0|0,1,0,0)|0|0;Q=b+52|0;R=da(Q|0,4,0,0)|0|0;p=b+48|0;f=da(p|0,4,0,0)|0|0;e=da(f|0,4,0,0)|0|0;I=G<<24>>24==116;a:do if(!I?(k=O+65|0,(da(k>>0|0,1,0,0)|0|0)==0):0){g=m+4|0;l=1;while(1){if((l|0)>(da(da(b|0,4,0,0)|0|0,4,0,0)|0|0)){H=e;n=14;break a}b:do if((e|0)>0){d=0;h=da(f+4|0,4,0,0)|0|0;while(1){if((da(h+16|0,2,0,1)|0|0)==(l|0))break b;d=d+1|0;if((d|0)<(e|0))h=h+20|0;else break}}else d=0;while(0);if((d|0)==(e|0)){ea(m|0,0|0,4,0);ea(g|0,0|0,4,0);d=mr(O,132,m,0)|0;if(!d){d=7;break a}A=d+4|0;ea(A|0,da(A|0,4,0,0)|0|1024|0,4,0);ea(d+8|0,l|0,4,0);d=kr(a,f,d)|0;if(!d)d=0;else{ea((da(d+4|0,4,0,0)|0|0)+(e*20|0)+16|0,l|0,2,0);e=e+1|0}}else d=f;if(!(da(k>>0|0,1,0,0)|0)){l=l+1|0;f=d}else{H=e;f=d;n=14;break}}}else{H=e;n=14}while(0);if((n|0)==14){E=lh(O,H<<2,0)|0;if(!E)B=0;else{if((H|0)>0){e=0;d=da(f+4|0,4,0,0)|0|0;while(1){ea(E+(e<<2)|0,(da(d+16|0,2,0,1)|0|0)+-1|0,4,0);e=e+1|0;if((e|0)==(H|0))break;else d=d+20|0}}B=uu(a,b)|0}ea(p|0,f|0,4,0);k=R+48|0;ea(k|0,Or(da(a|0,4,0,0)|0|0,f,0)|0|0,4,0);if(!I){f=da(da(b|0,4,0,0)|0|0,4,0,0)|0|0;A=a+72|0;e=da(A|0,4,0,0)|0|0;h=e+1|0;ea(A|0,f+1+e|0,4,0);vh(L,25,0,h,0)|0;e=Qs(O,f,1)|0;if(e)if((f|0)>0){d=e+16|0;g=0;do{ea(e+(g<<2)+20|0,Rs(a,b,g)|0|0,4,0);ea((da(d|0,4,0,0)|0|0)+g>>0|0,0|0,1,0);g=g+1|0}while((g|0)!=(f|0));d=e}else d=e;else d=0}else{d=0;h=0}ea(Q|0,0|0,4,0);D=R+56|0;ea(D|0,0|0,4,0);vu(a,b,da(p|0,4,0,0)|0|0,26880)|0;if(!(da(R+52|0,4,0,0)|0))vu(a,R,da(k|0,4,0,0)|0|0,26880)|0;Ns(a,b,N);g=b+8|0;e=da(g|0,4,0,0)|0|0;k=a+72|0;if((e|0)!=0&I){n=da(k|0,4,0,0)|0|0;l=n+1|0;n=n+2|0;ea(k|0,n|0,4,0);A=da(b+12|0,4,0,0)|0|0;vh(L,33,(A|0)==0?e:A+1|0,l,0)|0;vh(L,33,l,n,0)|0}else{l=0;n=0}s=b+60|0;Fk(O,da(s|0,4,0,0)|0|0);ea(s|0,0|0,4,0);s=b+64|0;Fk(O,da(s|0,4,0,0)|0|0);ea(s|0,0|0,4,0);s=da(k|0,4,0,0)|0|0;t=s+1|0;u=s+2|0;q=s+3|0;s=s+4|0;ea(k|0,s|0,4,0);ea(o>>0|0,13|0,1,0);ea(o+4|0,t|0,4,0);ea(o+1>>0|0,0|0,1,0);w=o+8|0;ea(w|0,0|0,4,0);ea(o+12|0,0|0,4,0);ea(F>>0|0,13|0,1,0);ea(F+4|0,u|0,4,0);ea(F+1>>0|0,0|0,1,0);x=F+8|0;ea(x|0,0|0,4,0);ea(F+12|0,0|0,4,0);z=L+32|0;m=vh(L,20,t,0,(da(z|0,4,0,0)|0|0)+1|0)|0;ea(R+8|0,l|0,4,0);k=a+468|0;A=da(k|0,4,0,0)|0|0;hr(a,R,o)|0;vh(L,21,t,0,0)|0;l=da(z|0,4,0,0)|0|0;if(l>>>0>m>>>0)ea((da(L+4|0,4,0,0)|0|0)+(m*20|0)+8|0,l|0,4,0);v=L+24|0;ea((da(v|0,4,0,0)|0|0)+88|0,l+-1|0,4,0);r=vh(L,20,u,0,l+1|0)|0;f=da(g|0,4,0,0)|0|0;p=b+12|0;e=da(p|0,4,0,0)|0|0;ea(g|0,n|0,4,0);ea(p|0,0|0,4,0);y=da(k|0,4,0,0)|0|0;hr(a,b,F)|0;ea(g|0,f|0,4,0);ea(p|0,e|0,4,0);vh(L,21,u,0,0)|0;e=wu(a,b,o,c,q,h,d,N)|0;p=(G+-115&255)<2;if(p)o=wu(a,b,F,c,s,h,d,N)|0;else o=0;if((d|0)!=0?(f=(da(d|0,4,0,0)|0|0)+-1|0,ea(d|0,f|0,4,0),(f|0)==0):0)Vc(d);f=G<<24>>24==118;if((G+-117&255)<2){h=N;d=N}else{h=vh(L,17,s,o,0)|0;d=vh(L,22,u,N,0)|0;vh(L,16,0,h,0)|0;k=R+24|0;g=b+24|0;l=g;k=iw(da(l|0,4,0,0)|0|0,da(l+4|0,4,0,0)|0|0,da(k|0,4,0,0)|0|0,da(k+4|0,4,0,0)|0|0)|0;ea(g|0,k|0,4,0);ea(g+4|0,C|0,4,0)}if(f){n=b+24|0;m=n;g=da(m+4|0,4,0,0)|0|0;k=R+24|0;l=da(k|0,4,0,0)|0|0;k=da(k+4|0,4,0,0)|0|0;if(g>>>0>k>>>0|((g|0)==(k|0)?(da(m|0,4,0,0)|0|0)>>>0>l>>>0:0)){g=n;ea(g|0,l|0,4,0);ea(g+4|0,k|0,4,0);g=h}else g=h}else{g=vh(L,17,q,e,0)|0;vh(L,22,t,N,0)|0;vh(L,16,0,g,0)|0}m=vh(L,17,q,e,0)|0;vh(L,22,t,h,0)|0;vh(L,16,0,K,0)|0;do if(!I)if(f){n=m;m=m+1|0;break}else{n=vh(L,22,t,h,0)|0;vh(L,16,0,K,0)|0;break}else n=m;while(0);l=da(z|0,4,0,0)|0|0;if(p)vh(L,17,s,o,0)|0;vh(L,22,u,g,0)|0;vh(L,16,0,K,0)|0;k=da(z|0,4,0,0)|0|0;if(k>>>0>r>>>0)ea((da(L+4|0,4,0,0)|0|0)+(r*20|0)+8|0,k|0,4,0);ea((da(v|0,4,0,0)|0|0)+88|0,k+-1|0,4,0);vh(L,22,t,d,0)|0;vh(L,22,u,g,0)|0;g=da(v|0,4,0,0)|0|0;f=~K;if((K|0)<0?(J=da(g+112|0,4,0,0)|0|0,(J|0)!=0):0)ea(J+(f<<2)|0,da(z|0,4,0,0)|0|0,4,0);ea(g+88|0,(da(z|0,4,0,0)|0|0)+-1|0,4,0);wh(L,vh(L,41,0,0,0)|0,E,-15);wh(L,vh(L,42,da(w|0,4,0,0)|0|0,da(x|0,4,0,0)|0|0,H)|0,B,-6);e=da(L+4|0,4,0,0)|0|0;if(e)ea(e+(((da(z|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,1|0,1,0);vh(L,43,m,n,l)|0;e=da(v|0,4,0,0)|0|0;d=~N;if((N|0)<0?(M=da(e+112|0,4,0,0)|0|0,(M|0)!=0):0)ea(M+(d<<2)|0,da(z|0,4,0,0)|0|0,4,0);ea(e+88|0,(da(z|0,4,0,0)|0|0)+-1|0,4,0);if((da(c>>0|0,1,0,0)|0|0)==9){d=R;while(1){e=da(d+52|0,4,0,0)|0|0;if(!e)break;else d=e}Ms(a,0,da(d|0,4,0,0)|0|0)}d=da(Q|0,4,0,0)|0|0;if(d)Lk(O,d,1);ea(Q|0,R|0,4,0);ea(D|0,b|0,4,0);Ps(a,da(P>>0|0,1,0,1)|0|0,A,y,0);d=0}i=S;return d|0}function Ls(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;do if(!((da(a+4|0,4,0,0)|0)&1024)){c=da(a>>0|0,1,0,1)|0|0;if((c|0)==158){c=Ls(da(a+12|0,4,0,0)|0|0,b)|0;break}else if((c|0)!=157){c=0;break}if(!(Ls(da(a+12|0,4,0,0)|0|0,d)|0))c=0;else{ea(b|0,0-(da(d|0,4,0,0)|0|0)|0,4,0);c=1}}else{ea(b|0,da(a+8|0,4,0,0)|0|0,4,0);c=1}while(0);i=e;return c|0}function Ms(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;x=i;i=i+32|0;if((i|0)>=(j|0))ba();w=x;v=a+8|0;s=da(v|0,4,0,0)|0|0;t=da(a|0,4,0,0)|0|0;if(((da(a+450>>0|0,1,0,0)|0|0)==0?(f=a+16|0,!((da(f>>0|0,1,0,0)|0|0)!=0|(s|0)==0)):0)?(da(t+65>>0|0,1,0,0)|0|0)==0:0){ea(f>>0|0,1|0,1,0);f=da(t+24|0,4,0,0)|0|0;r=(f&32|0)==0;hq(s,da(c|0,4,0,0)|0|0);e=da(c|0,4,0,0)|0|0;if((e|0)>0){q=c+4|0;p=(b|0)==0;m=(f&96|0)==0;n=(b|0)!=0;o=0;do{l=da(q|0,4,0,0)|0|0;e=da(l+(o*20|0)|0,4,0,0)|0|0;do if(e){f=da(l+(o*20|0)+4|0,4,0,0)|0|0;if(f){iq(s,o,0,f,-1);break}f=da(e>>0|0,1,0,0)|0|0;if(f<<24>>24==-102){if(p)u=25}else if(!(f<<24>>24==-100&n))u=25;if((u|0)==25){u=0;f=da(l+(o*20|0)+8|0,4,0,0)|0|0;if(!f){ea(w|0,o+1|0,4,0);f=th(t,34880,w)|0}else f=jh(t,f)|0;iq(s,o,0,f,75);break}k=da(e+32|0,2,0,0)|0|0;f=k<<16>>16;h=da(b|0,4,0,0)|0|0;a:do if((h|0)>0){d=da(e+28|0,4,0,0)|0|0;g=0;while(1){e=g+1|0;if((da(b+(g*72|0)+48|0,4,0,0)|0|0)==(d|0)){e=g;break a}if((e|0)<(h|0))g=e;else break}}else e=0;while(0);e=da(b+(e*72|0)+24|0,4,0,0)|0|0;if(k<<16>>16<0)f=da(e+36|0,2,0,0)|0|0;if((f|0)<0)f=20456;else f=da((da(e+4|0,4,0,0)|0|0)+(f*24|0)|0,4,0,0)|0|0;if(m){iq(s,o,0,jh(t,da(l+(o*20|0)+8|0,4,0,0)|0|0)|0,75);break}if(r){iq(s,o,0,f,-1);break}else{ea(w|0,da(e|0,4,0,0)|0|0,4,0);ea(w+4|0,f|0,4,0);iq(s,o,0,th(t,27824,w)|0,75);break}}while(0);o=o+1|0;e=da(c|0,4,0,0)|0|0}while((o|0)<(e|0))}f=da(v|0,4,0,0)|0|0;ea(w+4|0,b|0,4,0);ea(w|0,a|0,4,0);if((e|0)>0){d=c+4|0;e=0;do{iq(f,e,1,xu(w,da((da(d|0,4,0,0)|0|0)+(e*20|0)|0,4,0,0)|0|0,0)|0,-1);e=e+1|0}while((e|0)<(da(c|0,4,0,0)|0|0))}}i=x;return}function Ns(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();e=n;g=b+8|0;if((da(g|0,4,0,0)|0|0)==0?($s(a),f=b+60|0,(da(f|0,4,0,0)|0|0)!=0):0){k=a+72|0;l=(da(k|0,4,0,0)|0|0)+1|0;ea(k|0,l|0,4,0);ea(g|0,l|0,4,0);m=Nq(a)|0;do if(Ls(da(f|0,4,0,0)|0|0,e)|0){g=da(e|0,4,0,0)|0|0;vh(m,25,g,l,0)|0;if(!g){vh(m,16,0,c,0)|0;break}if((g|0)>-1?(h=b+24|0,e=h,c=da(e+4|0,4,0,0)|0|0,d=((g|0)<0)<<31>>31,c>>>0>d>>>0|((c|0)==(d|0)?(da(e|0,4,0,0)|0|0)>>>0>g>>>0:0)):0){c=h;ea(c|0,g|0,4,0);ea(c+4|0,d|0,4,0)}}else{Qq(a,da(f|0,4,0,0)|0|0,l);vh(m,38,l,0,0)|0;vh(m,46,l,c,0)|0}while(0);e=da(b+64|0,4,0,0)|0|0;if(e){h=da(k|0,4,0,0)|0|0;c=h+1|0;ea(b+12|0,c|0,4,0);ea(k|0,h+2|0,4,0);Qq(a,e,c);vh(m,38,c,0,0)|0;e=vh(m,137,c,0,0)|0;vh(m,25,0,c,0)|0;f=m+32|0;d=da(f|0,4,0,0)|0|0;if(d>>>0>e>>>0)ea((da(m+4|0,4,0,0)|0|0)+(e*20|0)+8|0,d|0,4,0);g=m+24|0;ea((da(g|0,4,0,0)|0|0)+88|0,d+-1|0,4,0);d=h+2|0;vh(m,89,l,c,d)|0;e=vh(m,137,l,0,0)|0;vh(m,25,-1,d,0)|0;d=da(f|0,4,0,0)|0|0;if(d>>>0>e>>>0)ea((da(m+4|0,4,0,0)|0|0)+(e*20|0)+8|0,d|0,4,0);ea((da(g|0,4,0,0)|0|0)+88|0,d+-1|0,4,0)}}i=n;return}function Os(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|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,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=da(a+8|0,4,0,0)|0|0;w=da(g>>0|0,1,0,0)|0|0;q=w&255;s=g+4|0;z=da(s|0,4,0,0)|0|0;if(!f)j=0;else j=da(f+1>>0|0,1,0,1)|0|0;if(!e)A=0;else A=(da(e|0,4,0,0)|0|0)==0?0:e;v=(A|0)!=0;r=(j|0)!=0;if(!(v|r))ht(B,da(b+12|0,4,0,0)|0|0,h);x=da(c|0,4,0,0)|0|0;m=g+8|0;e=da(m|0,4,0,0)|0|0;if(e){l=a+72|0;k=da(l|0,4,0,0)|0|0;if((e+x|0)>(k|0)){ea(l|0,k+x|0,4,0);y=e;t=0}else{y=e;t=0}}else{if(v){k=(((da(A+24>>0|0,1,0,0)|0)&1^1)&255)+(da(da(A|0,4,0,0)|0|0,4,0,0)|0|0)|0;y=a+72|0;l=k+(da(y|0,4,0,0)|0|0)|0;ea(y|0,l|0,4,0)}else{l=da(a+72|0,4,0,0)|0|0;k=0}y=l+1|0;ea(m|0,y|0,4,0);ea(a+72|0,l+x|0,4,0);t=k}ea(g+12|0,x|0,4,0);do if((d|0)>-1){if((x|0)>0){l=0;do{vh(B,47,d,l,l+y|0)|0;l=l+1|0}while((l|0)!=(x|0))}}else{if(w<<24>>24==3)break;else if(w<<24>>24==9)k=1;else k=w<<24>>24==13&1;at(a,c,y,k)}while(0);if(r){k=da(f+1>>0|0,1,0,1)|0|0;if((k|0)==1)yh(B,da(f+8|0,4,0,0)|0|0);else if((k|0)==2){d=a+72|0;k=da(d|0,4,0,0)|0|0;p=k+1|0;ea(d|0,k+x|0,4,0);k=f+8|0;yh(B,da(k|0,4,0,0)|0|0);k=da(k|0,4,0,0)|0|0;if((k|0)<0)k=(da(B+32|0,4,0,0)|0|0)+-1|0;if(!(da((da(B|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))k=(da(B+4|0,4,0,0)|0|0)+(k*20|0)|0;else k=29120;ea(k>>0|0,28|0,1,0);ea(k+4|0,1|0,4,0);ea(k+8|0,p|0,4,0);d=B+32|0;e=(da(d|0,4,0,0)|0|0)+x|0;if((x|0)>0){l=c+4|0;k=x+-1|0;m=B+4|0;o=0;do{r=bu(a,da((da(l|0,4,0,0)|0|0)+(o*20|0)|0,4,0,0)|0|0)|0;f=o+y|0;j=o+p|0;if((o|0)<(k|0))vh(B,78,f,e,j)|0;else vh(B,79,f,h,j)|0;wh(B,-1,r,-4);n=da(m|0,4,0,0)|0|0;if(n)ea(n+(((da(d|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,-128|0,1,0);o=o+1|0}while((o|0)!=(x|0))}else k=x+-1|0;vh(B,33,y,p,k)|0}else yu(a,da(f+4|0,4,0,0)|0|0,h,x,y);if(!A)ht(B,da(b+12|0,4,0,0)|0|0,h)}a:do switch(q|0){case 7:case 8:{n=da(g+16|0,4,0,0)|0|0;d=da(n|0,4,0,0)|0|0;j=a+19|0;f=da(j>>0|0,1,0,0)|0|0;if(!(f<<24>>24)){v=a+72|0;o=(da(v|0,4,0,0)|0|0)+1|0;ea(v|0,o|0,4,0)}else{o=f+-1<<24>>24;ea(j>>0|0,o|0,1,0);o=da(a+((o&255)<<2)+24|0,4,0,0)|0|0}p=d+2|0;q=a+60|0;e=da(q|0,4,0,0)|0|0;r=a+56|0;j=da(r|0,4,0,0)|0|0;if((j|0)<(p|0)){v=a+72|0;e=da(v|0,4,0,0)|0|0;ea(v|0,e+p|0,4,0);e=e+1|0}else{ea(q|0,e+p|0,4,0);ea(r|0,j-p|0,4,0)}m=e+d|0;k=m+1|0;if(w<<24>>24==8){j=z+1|0;f=vh(B,69,j,0,y)|0;wh(B,f,x,-14);vh(B,49,y,x,k)|0;vh(B,110,j,k,0)|0;j=da(B+4|0,4,0,0)|0|0;if(!j)l=f;else{ea(j+(((da(B+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,16|0,1,0);l=f}}else{vh(B,49,y,x,k)|0;l=0}if((d|0)>0){k=n+4|0;j=y+-1|0;f=0;do{vh(B,34,j+(da((da(k|0,4,0,0)|0|0)+(f*20|0)+16|0,2,0,1)|0|0)|0,f+e|0,0)|0;f=f+1|0}while((f|0)!=(d|0))}vh(B,73,z,m,0)|0;vh(B,49,e,p,o)|0;vh(B,110,z,o,0)|0;if(l){j=da(B+32|0,4,0,0)|0|0;if(j>>>0>l>>>0)ea((da(B+4|0,4,0,0)|0|0)+(l*20|0)+8|0,j|0,4,0);ea((da(B+24|0,4,0,0)|0|0)+88|0,j+-1|0,4,0)}Zr(a,o);ct(a,e,p);if((da(r|0,4,0,0)|0|0)<(p|0)){ea(r|0,p|0,4,0);ea(q|0,e|0,4,0);u=94}else u=94;break}case 2:{vh(B,111,z,y,x)|0;u=94;break}case 3:{vh(B,25,1,z,0)|0;u=94;break}case 12:case 14:case 6:case 5:{l=t+1|0;k=a+60|0;e=da(k|0,4,0,0)|0|0;m=a+56|0;j=da(m|0,4,0,0)|0|0;if((j|0)<(l|0)){u=a+72|0;e=da(u|0,4,0,0)|0|0;ea(u|0,e+l|0,4,0);e=e+1|0}else{ea(k|0,e+l|0,4,0);ea(m|0,j-l|0,4,0)}j=e+t|0;vh(B,49,y,x,j)|0;if(w<<24>>24==6){y=z+1|0;wh(B,vh(B,69,y,(da(B+32|0,4,0,0)|0|0)+4|0,e)|0,0,-14);vh(B,110,y,e,0)|0}if(v)zu(a,A,b,j,1,t);else{j=a+19|0;f=da(j>>0|0,1,0,0)|0|0;if(!(f<<24>>24)){y=a+72|0;f=(da(y|0,4,0,0)|0|0)+1|0;ea(y|0,f|0,4,0)}else{f=f+-1<<24>>24;ea(j>>0|0,f|0,1,0);f=da(a+((f&255)<<2)+24|0,4,0,0)|0|0}vh(B,74,z,f,0)|0;vh(B,75,z,e,f)|0;j=da(B+4|0,4,0,0)|0|0;if(j)ea(j+(((da(B+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,8|0,1,0);Zr(a,f)}ct(a,e,l);if((da(m|0,4,0,0)|0|0)<(l|0)){ea(m|0,l|0,4,0);ea(k|0,e|0,4,0);u=94}else u=94;break}case 10:{if(v)zu(a,A,b,y,1,t);else u=95;break}case 9:case 13:{if(v){zu(a,A,b,y,x,t);break a}if(w<<24>>24==13){vh(B,22,da(s|0,4,0,0)|0|0,0,0)|0;u=95;break a}else{vh(B,35,y,x,0)|0;ct(a,y,x);u=94;break a}}case 1:{j=a+19|0;f=da(j>>0|0,1,0,0)|0|0;if(!(f<<24>>24)){w=a+72|0;f=(da(w|0,4,0,0)|0|0)+1|0;ea(w|0,f|0,4,0)}else{f=f+-1<<24>>24;ea(j>>0|0,f|0,1,0);f=da(a+((f&255)<<2)+24|0,4,0,0)|0|0}vh(B,49,y,x,f)|0;vh(B,110,z,f,0)|0;Zr(a,f);u=94;break}case 11:{e=g+1|0;ea(e>>0|0,Au(da(da(c+4|0,4,0,0)|0|0,4,0,0)|0|0,da(e>>0|0,1,0,0)|0|0)|0|0,1,0);if(v){zu(a,A,b,y,1,t);break a}f=a+19|0;j=da(f>>0|0,1,0,0)|0|0;if(!(j<<24>>24)){x=a+72|0;f=(da(x|0,4,0,0)|0|0)+1|0;ea(x|0,f|0,4,0)}else{x=j+-1<<24>>24;ea(f>>0|0,x|0,1,0);f=da(a+((x&255)<<2)+24|0,4,0,0)|0|0}wh(B,vh(B,49,y,1,f)|0,e,1);ct(a,y,1);vh(B,110,z,f,0)|0;Zr(a,f);u=94;break}default:u=94}while(0);if((u|0)==94?(A|0)==0:0)u=95;if((u|0)==95?(C=da(b+8|0,4,0,0)|0|0,(C|0)!=0):0)vh(B,140,C,i,0)|0;return}function Ps(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,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;if((da(a+450>>0|0,1,0,0)|0|0)==2){g=da(a+8|0,4,0,0)|0|0;h=da(a|0,4,0,0)|0|0;f=(e|0)!=0?35160:10360;if((b|0)==116)e=35320;else if((b|0)==118)e=35336;else if((b|0)==117)e=35352;else e=35360;ea(k|0,c|0,4,0);ea(k+4|0,d|0,4,0);ea(k+8|0,f|0,4,0);ea(k+12|0,e|0,4,0);e=th(h,35120,k)|0;wh(g,vh(g,157,da(a+464|0,4,0,0)|0|0,0,0)|0,e,-1)}i=l;return}function Qs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=c+b|0;e=(d*5|0)+24|0;f=pg(e,0)|0;if(!f)ea(a+65>>0|0,1|0,1,0);else{ew(f|0,0,e|0)|0;ea(f+16|0,f+20+(d<<2)|0,4,0);ea(f+6|0,b|0,2,0);ea(f+8|0,c|0,2,0);ea(f+4>>0|0,da(a+62>>0|0,1,0,0)|0|0|0,1,0);ea(f+12|0,a|0,4,0);ea(f|0,1|0,4,0)}return f|0}function Rs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=da(b+52|0,4,0,0)|0|0;if(!((e|0)!=0?(d=Rs(a,e,c)|0,(d|0)!=0):0)){d=da(b|0,4,0,0)|0|0;if((da(d|0,4,0,0)|0|0)>(c|0))d=bu(a,da((da(d+4|0,4,0,0)|0|0)+(c*20|0)|0,4,0,0)|0|0)|0;else d=0}return d|0}function Ss(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=(a|0)==0;d=(b|0)==0;a:do if(!(e&d))if(!(e|d)?(f=da(a|0,4,0,0)|0|0,(f|0)==(da(b|0,4,0,0)|0|0)):0)if((f|0)>0){a=da(a+4|0,4,0,0)|0|0;d=da(b+4|0,4,0,0)|0|0;e=0;while(1){if((da(a+(e*20|0)+12>>0|0,1,0,0)|0|0)!=(da(d+(e*20|0)+12>>0|0,1,0,0)|0|0)){d=1;break a}if(Bu(da(a+(e*20|0)|0,4,0,0)|0|0,da(d+(e*20|0)|0,4,0,0)|0|0,c)|0){d=1;break a}e=e+1|0;if((e|0)>=(f|0)){d=0;break}}}else d=0;else d=1;else d=0;while(0);return d|0}function Ts(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;e=da(a|0,4,0,0)|0|0;j=da(b|0,4,0,0)|0|0;i=Qs(e,j-c|0,d+1|0)|0;if((i|0)!=0&(j|0)>(c|0)){f=e+8|0;g=i+16|0;h=c;d=(da(b+4|0,4,0,0)|0|0)+(c*20|0)|0;while(1){e=bu(a,da(d|0,4,0,0)|0|0)|0;if(!e)e=da(f|0,4,0,0)|0|0;b=h-c|0;ea(i+(b<<2)+20|0,e|0,4,0);ea((da(g|0,4,0,0)|0|0)+b>>0|0,da(d+12>>0|0,1,0,0)|0|0|0,1,0);h=h+1|0;if((h|0)==(j|0))break;else d=d+20|0}}return i|0}function Us(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;var h=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,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,ca=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,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;Ja=i;i=i+64|0;if((i|0)>=(j|0))ba();Ha=Ja;Ia=Ja+48|0;Ga=Ja+52|0;T=Ja+28|0;Ea=a+8|0;_=da(Ea|0,4,0,0)|0|0;Fa=da(a|0,4,0,0)|0|0;ea(T+0|0,0|0,4,0);ea(T+4|0,0|0,4,0);ea(T+8|0,0|0,4,0);ea(T+12|0,0|0,4,0);ea(T+16|0,0|0,4,0);if(!d)J=0;else J=(da(d|0,4,0,0)|0|0)>63?0:d;U=T+8|0;ea(U|0,J|0,4,0);X=Fa+60|0;if((da(X|0,2,0,0)|0)&32)f=f&64511;d=da(b|0,4,0,0)|0|0;a:do if((d|0)<=64){B=f&65535;K=(B&64|0)!=0;P=K?1:d;n=(P*80|0)+743&-16;h=n+72|0;d=lh(Fa,h,0)|0;Da=(d|0)==0;if(!Da)ew(d|0,0,h|0)|0;ua=Fa+65|0;if(da(ua>>0|0,1,0,0)|0){lg(Fa,d);d=0;break}Y=d+60|0;Z=d+64|0;ea(Z|0,-1|0,4,0);ea(Y|0,-1|0,4,0);va=d+41|0;ea(va>>0|0,P|0,1,0);ea(d|0,a|0,4,0);wa=d+4|0;ea(wa|0,b|0,4,0);W=d+8|0;ea(W|0,J|0,4,0);ea(d+12|0,e|0,4,0);ya=ws(_)|0;xa=d+48|0;ea(xa|0,ya|0,4,0);k=d+52|0;ea(k|0,ya|0,4,0);ya=d+34|0;ea(ya|0,f|0,2,0);za=a+424|0;Aa=d+56|0;ea(Aa|0,da(za|0,4,0,0)|0|0,4,0);Ba=d+68|0;ea(T|0,d|0,4,0);Ca=d+328|0;S=T+4|0;ea(S|0,Ca|0,4,0);N=T+12|0;ea(N|0,d+n|0,4,0);ea(d+(n+48)|0,d+(n+56)|0,4,0);ea(d+(n+40)|0,0|0,2,0);ea(d+(n+44)|0,3|0,2,0);ea(d+(n+36)|0,0|0,4,0);ea(Ba|0,0|0,4,0);ea(Ca|0,d|0,4,0);ea(d+332|0,0|0,4,0);sa=d+340|0;ea(sa|0,0|0,4,0);ea(d+344|0,8|0,4,0);ta=d+348|0;ea(ta|0,d+352|0,4,0);Cu(Ca,c,72);c=(P|0)==0;if((da(d+340|0,4,0,0)|0|0)>0){u=Ha+20|0;s=Ha+4|0;r=Ha+24|0;t=Ca;h=0;do{if(!c){t=da((da(t+20|0,4,0,0)|0|0)+(h*48|0)|0,4,0,0)|0|0;ea(Ha+0|0,0|0,4,0);ea(Ha+4|0,0|0,4,0);ea(Ha+8|0,0|0,4,0);ea(Ha+12|0,0|0,4,0);ea(Ha+16|0,0|0,4,0);ea(Ha+20|0,0|0,4,0);ea(u>>0|0,2|0,1,0);ea(Ha|0,78|0,4,0);ea(s|0,79|0,4,0);ea(r|0,0|0,4,0);qs(Ha,t)|0;t=da(S|0,4,0,0)|0|0;if(da(u>>0|0,1,0,0)|0)ra=15}else ra=15;if((ra|0)==15){ra=0;ft(a,da((da(t+20|0,4,0,0)|0|0)+(h*48|0)|0,4,0,0)|0|0,da(k|0,4,0,0)|0|0,16);t=da(S|0,4,0,0)|0|0;V=(da(t+20|0,4,0,0)|0|0)+(h*48|0)+20|0;ea(V|0,da(V|0,2,0,1)|0|4|0,2,0)}h=h+1|0}while((h|0)<(da(t+12|0,4,0,0)|0|0))}if(c){if(J)ea(d+36>>0|0,da(J|0,4,0,0)|0|0,1,0);if(B&1024)ea(d+40>>0|0,1|0,1,0)}if((da(b|0,4,0,0)|0|0)>0){n=0;do{V=da(b+(n*72|0)+48|0,4,0,0)|0|0;I=da(Ba|0,4,0,0)|0|0;ea(Ba|0,I+1|0,4,0);ea(Ba+(I<<2)+4|0,V|0,4,0);n=n+1|0}while((n|0)<(da(b|0,4,0,0)|0|0))}m=da(sa|0,4,0,0)|0|0;if((m|0)>0)do{m=m+-1|0;Du(Ca,m)}while((m|0)>0);b:do if(!(da(ua>>0|0,1,0,0)|0)){V=(B&1024|0)==0;c:do if(!V){d:do if((da(b|0,4,0,0)|0|0)==1){A=da(b+48|0,4,0,0)|0|0;h=da(b+24|0,4,0,0)|0|0;u=da(e|0,4,0,0)|0|0;e:do if((u|0)>0){s=da(e+4|0,4,0,0)|0|0;r=0;while(1){t=da(s+(r*20|0)|0,4,0,0)|0|0;f:do if(!t)t=0;else while(1){c=da(t+4|0,4,0,0)|0|0;if(!(c&4096))break f;if(!(c&262144))t=t+12|0;else t=da((da(t+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;t=da(t|0,4,0,0)|0|0;if(!t){t=0;break}}while(0);do if((da(t>>0|0,1,0,0)|0|0)==-102){if((da(t+28|0,4,0,0)|0|0)!=(A|0))break;if((da(t+32|0,2,0,0)|0|0)<0)break e}while(0);r=r+1|0;if((r|0)>=(u|0)){ra=41;break}}}else ra=41;while(0);g:do if((ra|0)==41){t=da(h+8|0,4,0,0)|0|0;if(!t)break d;l=e+4|0;k=h+4|0;while(1){if(da(t+50>>0|0,1,0,0)|0){x=t+46|0;h:do if(!(da(x|0,2,0,0)|0))c=0;else{z=t+4|0;y=t+32|0;c=0;do{w=da((da(z|0,4,0,0)|0|0)+(c<<1)|0,2,0,0)|0|0;if(!(Eu(Ca,A,w,-1,-1,2,t)|0)){h=da((da(y|0,4,0,0)|0|0)+(c<<2)|0,4,0,0)|0|0;if((da(e|0,4,0,0)|0|0)>0)u=0;else break h;i:while(1){v=da((da(l|0,4,0,0)|0|0)+(u*20|0)|0,4,0,0)|0|0;j:do if(!v)s=0;else{s=v;while(1){r=da(s+4|0,4,0,0)|0|0;if(!(r&4096))break j;if(!(r&262144))s=s+12|0;else s=da((da(s+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;s=da(s|0,4,0,0)|0|0;if(!s){s=0;break}}}while(0);do if((da(s>>0|0,1,0,0)|0|0)==-102){if((da(s+32|0,2,0,0)|0|0)!=(da((da(z|0,4,0,0)|0|0)+(c<<1)|0,2,0,0)|0|0))break;if((da(s+28|0,4,0,0)|0|0)!=(A|0))break;s=bu(a,v)|0;if(!s)break;if(!(cd(da(s|0,4,0,0)|0|0,h)|0))break i}while(0);u=u+1|0;if((u|0)>=(da(e|0,4,0,0)|0|0))break h}if((u|0)<0)break h;if(!(da((da(k|0,4,0,0)|0|0)+(w*24|0)+20>>0|0,1,0,0)|0))break h}c=c+1|0}while((c|0)<(da(x|0,2,0,1)|0|0))}while(0);if((c|0)==(da(x|0,2,0,1)|0|0))break g}t=da(t+20|0,4,0,0)|0|0;if(!t)break d}}while(0);ea(d+40>>0|0,1|0,1,0);break c}while(0);if(!J){ea(ya|0,da(ya|0,2,0,1)|0|512|0,2,0);ea(W|0,e|0,4,0)}}while(0);k:do if((((P|0)==1?(R=da(T|0,4,0,0)|0|0,Q=R+34|0,((da(Q|0,2,0,0)|0)&32)==0):0)?(M=da(R+4|0,4,0,0)|0|0,H=da(M+24|0,4,0,0)|0|0,((da(H+44>>0|0,1,0,0)|0)&16)==0):0)?(da(M+72|0,4,0,0)|0|0)==0:0){J=da(M+48|0,4,0,0)|0|0;v=R+328|0;I=da(N|0,4,0,0)|0|0;A=I+36|0;ea(A|0,0|0,4,0);ea(I+42|0,0|0,2,0);q=Eu(v,J,-1,0,0,2,0)|0;l:do if(!q){r=da(H+8|0,4,0,0)|0|0;m:do if(r){s=I+48|0;n:while(1){do if(da(r+50>>0|0,1,0,0)|0){if(da(r+36|0,4,0,0)|0)break;t=r+46|0;c=da(t|0,2,0,0)|0|0;if((c&65535)>3)break;k=r+4|0;o:do if(!(c<<16>>16)){c=0;u=0}else{u=0;while(1){c=Eu(v,J,da((da(k|0,4,0,0)|0|0)+(u<<1)|0,2,0,0)|0|0,0,0,2,r)|0;if(!c)break;ea((da(s|0,4,0,0)|0|0)+(u<<2)|0,c|0,4,0);u=u+1|0;c=da(t|0,2,0,0)|0|0;if((u|0)>=(c&65535|0))break o}c=da(t|0,2,0,0)|0|0}while(0);if((u|0)==(c&65535|0)){l=u;break n}}while(0);r=da(r+20|0,4,0,0)|0|0;if(!r)break m}ea(A|0,4609|0,4,0);if(!((da(r+51>>0|0,1,0,0)|0)&32)){s=M+64|0;t=da(s|0,4,0,0)|0|0;s=da(s+4|0,4,0,0)|0|0;h=0;q=0;c=da(r+48|0,2,0,1)|0|0;p:while(1){u=c;while(1){c=u+-1|0;if((u|0)<=0)break p;u=da((da(k|0,4,0,0)|0|0)+(c<<1)|0,2,0,0)|0|0;if((u&65535)<63)break;else u=c}T=hw(1,0,u<<16>>16|0)|0;h=T|h;q=C|q}if((t&~h|0)==0&(s&~q|0)==0)ra=91}else ra=91;if((ra|0)==91)ea(A|0,4673|0,4,0);T=l&65535;ea(I+40|0,T|0,2,0);ea(I+24|0,T|0,2,0);ea(I+28|0,r|0,4,0);ea(I+20|0,39|0,2,0);break l}while(0);if(!(da(A|0,4,0,0)|0)){ra=103;break k}}else{ea(A|0,4353|0,4,0);ea(da(I+48|0,4,0,0)|0|0,q|0,4,0);ea(I+40|0,1|0,2,0);ea(I+24|0,1|0,2,0);ea(I+20|0,33|0,2,0)}while(0);ea(I+22|0,1|0,2,0);ea(R+800|0,I|0,4,0);l=da(R+68|0,4,0,0)|0|0;q:do if((l|0)>0){m=0;while(1){if((da(R+(m<<2)+72|0,4,0,0)|0|0)==(J|0))break;m=m+1|0;if((m|0)>=(l|0)){m=0;l=0;break q}}m=hw(1,0,m|0)|0;l=C}else{m=0;l=0}while(0);k=I+8|0;ea(k|0,m|0,4,0);ea(k+4|0,l|0,4,0);ea(R+740|0,J|0,4,0);ea(R+32|0,1|0,2,0);k=da(R+8|0,4,0,0)|0|0;if(k)ea(R+36>>0|0,da(k|0,4,0,0)|0|0,1,0);if(!((da(Q|0,2,0,0)|0)&1024)){ra=120;break}ea(R+40>>0|0,1|0,1,0);ra=120}else ra=103;while(0);if((ra|0)==103){x=da(T|0,4,0,0)|0|0;c=da(x+4|0,4,0,0)|0|0;y=da(da(x|0,4,0,0)|0|0,4,0,0)|0|0;R=da(x+41>>0|0,1,0,0)|0|0;z=R&255;r=da(N|0,4,0,0)|0|0;ea(r+48|0,r+56|0,4,0);ea(r+40|0,0|0,2,0);ea(r+44|0,3|0,2,0);ea(r+36|0,0|0,4,0);h=y+65|0;r:do if(R<<24>>24){k=r+16|0;l=x+68|0;m=r+8|0;n=0;o=0;p=0;q=0;w=0;v=c+8|0;s=0;while(1){ea(k>>0|0,w|0,1,0);u=da(v+40|0,4,0,0)|0|0;t=da(l|0,4,0,0)|0|0;s:do if((t|0)>0){c=0;while(1){if((da(x+(c<<2)+72|0,4,0,0)|0|0)==(u|0))break;c=c+1|0;if((c|0)>=(t|0)){c=0;u=0;break s}}c=hw(1,0,c|0)|0;u=C}else{c=0;u=0}while(0);R=m;ea(R|0,c|0,4,0);ea(R+4|0,u|0,4,0);R=s;s=da(v+36>>0|0,1,0,0)|0|0;R=((s|R)&10)==0;o=R?o:n;q=R?q:p;if(!((da((da(v+16|0,4,0,0)|0|0)+44>>0|0,1,0,0)|0)&16))c=Gu(T,o,q)|0;else c=Fu(T,o,q)|0;if(c)break;R=Hu(T,o,q)|0;c=m;if(R)break;if(da(h>>0|0,1,0,0)|0)break r;w=w+1|0;if((w|0)>=(z|0))break r;else{n=da(c|0,4,0,0)|0|n;p=da(c+4|0,4,0,0)|0|p;v=v+72|0}}Iu(y,r);break b}while(0);Iu(y,r);Ju(d,0);if(da(ua>>0|0,1,0,0)|0)break;if(da(W|0,4,0,0)|0){Ju(d,(da(d+32|0,2,0,1)|0|0)+1&65535);if(!(da(ua>>0|0,1,0,0)|0))ra=120;else break}else ra=121}if((ra|0)==120?(da(W|0,4,0,0)|0|0)==0:0)ra=121;if((ra|0)==121?((da(Fa+24|0,4,0,0)|0)&131072|0)!=0:0){W=d+24|0;ea(W|0,-1|0,4,0);ea(W+4|0,-1|0,4,0)}if((da(a+64|0,4,0,0)|0|0)==0?(da(ua>>0|0,1,0,0)|0|0)==0:0){q=da(va>>0|0,1,0,0)|0|0;t:do if((q&255)>1&(e|0)!=0?((da(X|0,2,0,0)|0)&1024)==0:0){k=Ku(Ba,e)|0;l=C;h=da(U|0,4,0,0)|0|0;if(h){X=Ku(Ba,h)|0;k=X|k;l=C|l}u=d+736|0;c=da(wa|0,4,0,0)|0|0;t=da(S|0,4,0,0)|0|0;s=t+20|0;t=t+12|0;r=q;h=P;do{m=da(u+(((r&255)+-1|0)*80|0)+64|0,4,0,0)|0|0;if(!((da(c+((da(m+16>>0|0,1,0,1)|0|0)*72|0)+44>>0|0,1,0,0)|0)&8))break t;if(V?((da(m+36|0,4,0,0)|0)&4096|0)==0:0)break t;p=m+8|0;o=da(p|0,4,0,0)|0|0;p=da(p+4|0,4,0,0)|0|0;if(!((o&k|0)==0&(p&l|0)==0))break t;m=da(s|0,4,0,0)|0|0;X=da(t|0,4,0,0)|0|0;q=m+(X*48|0)|0;if((X|0)>0)do{n=m+40|0;if(!((o&(da(n|0,4,0,0)|0)|0)==0?(p&(da(n+4|0,4,0,0)|0)|0)==0:0)?((da((da(m|0,4,0,0)|0|0)+4|0,4,0,0)|0)&1|0)==0:0)break t;m=m+48|0}while(m>>>0>>0);r=r+-1<<24>>24;ea(va>>0|0,r|0,1,0);h=h+-1|0}while((r&255)>1)}else h=P;while(0);X=(da(d|0,4,0,0)|0|0)+424|0;ea(X|0,(da(X|0,4,0,0)|0|0)+(da(d+32|0,2,0,0)|0|0)|0,4,0);do if((B&4|0)!=0?(O=(da(d+800|0,4,0,0)|0|0)+36|0,L=da(O|0,4,0,0)|0|0,(L&4096|0)!=0):0){ea(d+38>>0|0,1|0,1,0);if((da((da(b+24|0,4,0,0)|0|0)+44>>0|0,1,0,0)|0)&32)break;ea(O|0,L&-65|0,4,0)}while(0);qa=d+736|0;J=(h|0)>0;if(J){G=B&16;H=d+38|0;I=_+32|0;D=K^1;F=(g|0)==0|D;E=a+68|0;A=54-(B>>>12&1)|0;w=_+4|0;v=Fa+20|0;n=Fa+16|0;o=0;B=qa;while(1){u=da(B+44>>0|0,1,0,1)|0|0;x=b+(u*72|0)+24|0;c=da(x|0,4,0,0)|0|0;t=da(c+68|0,4,0,0)|0|0;u:do if(!t)k=-1e6;else{s=da(v|0,4,0,0)|0|0;if((s|0)<=0){k=0;break}r=da(n|0,4,0,0)|0|0;l=0;while(1){k=l+1|0;if((da(r+(l<<4)+12|0,4,0,0)|0|0)==(t|0)){k=l;break u}if((k|0)<(s|0))l=k;else break}}while(0);z=da(B+64|0,4,0,0)|0|0;y=c+44|0;t=da(y>>0|0,1,0,1)|0|0;do if(!(t&2)){if(da(c+12|0,4,0,0)|0)break;s=da(z+36|0,4,0,0)|0|0;if(s&1024){q=da(c+60|0,4,0,0)|0|0;v:do if(!q)q=0;else while(1){if((da(q|0,4,0,0)|0|0)==(Fa|0))break v;q=da(q+24|0,4,0,0)|0|0;if(!q){q=0;break}}while(0);wh(_,vh(_,149,da(b+(u*72|0)+48|0,4,0,0)|0|0,0,0)|0,q,-10);break}if(t&16)break;if(s&64|G){fs(a,k,da(c+32|0,4,0,0)|0|0,0,da(c|0,4,0,0)|0|0);break}r=b+(u*72|0)+48|0;if(!(da(H>>0|0,1,0,0)|0))t=54;else{ea(Y|0,da(r|0,4,0,0)|0|0,4,0);t=55}Pq(a,da(r|0,4,0,0)|0|0,k,c,t);if(da(H>>0|0,1,0,0)|0)break;if((da(c+38|0,2,0,0)|0|0)>=64)break;if((da(y>>0|0,1,0,0)|0)&32)break;r=b+(u*72|0)+64|0;q=da(r|0,4,0,0)|0|0;r=da(r+4|0,4,0,0)|0|0;if((q|0)==0&(r|0)==0)q=0;else{c=q;q=0;do{c=lw(c|0,r|0,1)|0;r=C;q=q+1|0}while(!((c|0)==0&(r|0)==0))}wh(_,(da(I|0,4,0,0)|0|0)+-1|0,q,-14)}while(0);u=z+36|0;w:do if((da(u|0,4,0,0)|0)&512){c=da(z+28|0,4,0,0)|0|0;do if((da(y>>0|0,1,0,0)|0)&32){if(((da(c+51>>0|0,1,0,0)|0)&3)!=2|D)break;ea(B+8|0,da(B+4|0,4,0,0)|0|0,4,0);break w}while(0);do if(!(da(H>>0|0,1,0,0)|0)){if(!F){q=g;p=A;break}q=da(E|0,4,0,0)|0|0;ea(E|0,q+1|0,4,0);p=54}else{p=da((da(x|0,4,0,0)|0|0)+8|0,4,0,0)|0|0;if((p|0)==0|(p|0)==(c|0))q=g;else{q=g;do{q=q+1|0;p=da(p+20|0,4,0,0)|0|0}while(!((p|0)==0|(p|0)==(c|0)))}ea(Z|0,q|0,4,0);p=55}while(0);ea(B+8|0,q|0,4,0);vh(_,p,q,da(c+40|0,4,0,0)|0|0,k)|0;X=da(Ea|0,4,0,0)|0|0;wh(X,-1,gs(a,c)|0,-6);X=da(u|0,4,0,0)|0|0;if(!((X&15|0)!=0&(X&32770|0)==0))break;if((da(ya|0,2,0,0)|0)&1)break;m=da(w|0,4,0,0)|0|0;if(!m)break;ea(m+(((da(I|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,2|0,1,0)}while(0);if((k|0)>-1)zr(a,k);o=o+1|0;if((o|0)==(h|0))break;else B=B+80|0}Z=(da(ua>>0|0,1,0,0)|0|0)==0;ea(d+44|0,da(I|0,4,0,0)|0|0,4,0);if(!Z)break}else{I=_+32|0;ea(d+44|0,da(I|0,4,0,0)|0|0,4,0)}if(!J)break a;ca=d+24|0;fa=d+36|0;ga=d+39|0;ha=a+80|0;ia=a+68|0;ja=a+100|0;ka=a+19|0;la=a+72|0;ma=Ha+20|0;na=Ha+4|0;oa=Ha+24|0;l=-1;k=-1;pa=0;while(1){Q=qa+(pa*80|0)|0;t=qa+(pa*80|0)+64|0;S=qa+(pa*80|0)+44|0;if((da((da(t|0,4,0,0)|0|0)+36|0,4,0,0)|0)&16384){A=da(S>>0|0,1,0,1)|0|0;M=b+(A*72|0)+8|0;R=da(Ea|0,4,0,0)|0|0;p=Nq(a)|0;T=da(ha|0,4,0,0)|0|0;ea(ha|0,T+1|0,4,0);T=vh(p,44,T,0,0)|0;p=da(b+(A*72|0)+24|0,4,0,0)|0|0;Z=da(sa|0,4,0,0)|0|0;c=da(ta|0,4,0,0)|0|0;L=c+(Z*48|0)|0;D=da(t|0,4,0,0)|0|0;x:do if((Z|0)>0){r=b+(A*72|0)+48|0;n=p+4|0;o=D+48|0;u=0;t=0;x=0;m=0;s=c;w=0;while(1){c=da(s|0,4,0,0)|0|0;Z=D;do if((da(Z|0,4,0,0)|0|0)==0&(da(Z+4|0,4,0,0)|0|0)==0){if((da(s+20|0,2,0,0)|0)&2)break;if((da(c+4|0,4,0,0)|0)&1)break;Z=da(r|0,4,0,0)|0|0;ea(Ha+0|0,0|0,4,0);ea(Ha+4|0,0|0,4,0);ea(Ha+8|0,0|0,4,0);ea(Ha+12|0,0|0,4,0);ea(Ha+16|0,0|0,4,0);ea(Ha+20|0,0|0,4,0);ea(ma>>0|0,3|0,1,0);ea(Ha|0,78|0,4,0);ea(na|0,79|0,4,0);ea(oa|0,Z|0,4,0);qs(Ha,c)|0;if(!(da(ma>>0|0,1,0,0)|0))break;Z=da(a|0,4,0,0)|0|0;m=rs(Z,m,Lr(Z,c,0,0)|0)|0}while(0);do if(!(Lu(s,M,l,k)|0))c=x;else{v=da(s+12|0,4,0,0)|0|0;if((v|0)>63){z=0;y=-2147483648}else{z=hw(1,0,v|0)|0;y=C}if(!(w<<24>>24)){w=da((da(n|0,4,0,0)|0|0)+(v*24|0)|0,4,0,0)|0|0;ea(Ha|0,da(p|0,4,0,0)|0|0,4,0);ea(Ha+4|0,w|0,4,0);ad(284,33960,Ha);w=1}if(!((z&u|0)==0&(y&t|0)==0)){c=x;break}c=x+1|0;if(Mu(da(a|0,4,0,0)|0|0,D,c)|0)break x;ea((da(o|0,4,0,0)|0|0)+(x<<2)|0,s|0,4,0);u=z|u;t=y|t}while(0);s=s+48|0;if(s>>>0>=L>>>0){ra=207;break}else x=c}}else{t=0;u=0;c=0;m=0;ra=207}while(0);do if((ra|0)==207){ra=0;s=c&65535;ea(D+40|0,s|0,2,0);ea(D+24|0,s|0,2,0);s=D+36|0;ea(s|0,16961|0,4,0);q=b+(A*72|0)+64|0;E=q;y=da(E+4|0,4,0,0)|0|0;E=(da(E|0,4,0,0)|0)&~u;G=y&((t|-2147483648)^2147483647);o=p+38|0;H=da(o|0,2,0,0)|0|0;z=H<<16>>16;H=H<<16>>16>63?63:z;J=(H|0)>0;if(J){v=0;do{Z=hw(1,0,v|0)|0;c=(((Z&E|0)!=0|(C&G|0)!=0)&1)+c|0;v=v+1|0}while((v|0)!=(H|0))}if((y|0)<0)c=c+-63+z|0;F=c+1|0;n=ts(da(a|0,4,0,0)|0|0,F&65535,0,Ia)|0;if(!n)break;ea(D+28|0,n|0,4,0);ea(n|0,33992|0,4,0);ea(n+12|0,p|0,4,0);v=da(ta|0,4,0,0)|0|0;if(v>>>0>>0){u=n+4|0;t=n+32|0;y=0;z=0;r=0;do{do if(Lu(v,M,l,k)|0){x=da(v+12|0,4,0,0)|0|0;if((x|0)>63){w=0;c=-2147483648}else{w=hw(1,0,x|0)|0;c=C}if(!((w&y|0)==0&(c&z|0)==0))break;Z=da(v|0,4,0,0)|0|0;ea((da(u|0,4,0,0)|0|0)+(r<<1)|0,x|0,2,0);x=Nu(a,da(Z+12|0,4,0,0)|0|0,da(Z+16|0,4,0,0)|0|0)|0;if(!x)x=11152;else x=da(x|0,4,0,0)|0|0;ea((da(t|0,4,0,0)|0|0)+(r<<2)|0,x|0,4,0);y=w|y;z=c|z;r=r+1|0}while(0);v=v+48|0}while(v>>>0>>0)}else r=0;if(J){c=n+4|0;u=n+32|0;t=0;do{Z=hw(1,0,t|0)|0;if(!((Z&E|0)==0&(C&G|0)==0)){ea((da(c|0,4,0,0)|0|0)+(r<<1)|0,t|0,2,0);ea((da(u|0,4,0,0)|0|0)+(r<<2)|0,11152|0,4,0);r=r+1|0}t=t+1|0}while((t|0)!=(H|0))}do if((da(q+4|0,4,0,0)|0|0)<0){if((da(o|0,2,0,0)|0|0)<=63)break;c=n+4|0;u=n+32|0;t=63;do{ea((da(c|0,4,0,0)|0|0)+(r<<1)|0,t|0,2,0);ea((da(u|0,4,0,0)|0|0)+(r<<2)|0,11152|0,4,0);r=r+1|0;t=t+1|0}while((t|0)<(da(o|0,2,0,0)|0|0))}while(0);ea((da(n+4|0,4,0,0)|0|0)+(r<<1)|0,-1|0,2,0);ea((da(n+32|0,4,0,0)|0|0)+(r<<2)|0,11152|0,4,0);r=da(ia|0,4,0,0)|0|0;ea(ia|0,r+1|0,4,0);u=qa+(pa*80|0)+8|0;ea(u|0,r|0,4,0);vh(R,56,r,F,0)|0;r=da(Ea|0,4,0,0)|0|0;wh(r,-1,gs(a,n)|0,-6);ea(ja|0,(da(ja|0,4,0,0)|0|0)+1|0,4,0);r=qa+(pa*80|0)+4|0;v=vh(R,108,da(r|0,4,0,0)|0|0,0,0)|0;t=(m|0)!=0;if(t){Z=ws(R)|0;ft(a,m,Z,16);ea(s|0,da(s|0,4,0,0)|0|131072|0,4,0);s=Z}else s=0;c=da(ka>>0|0,1,0,0)|0|0;if(!(c<<24>>24)){o=(da(la|0,4,0,0)|0|0)+1|0;ea(la|0,o|0,4,0)}else{o=c+-1<<24>>24;ea(ka>>0|0,o|0,1,0);o=da(a+((o&255)<<2)+24|0,4,0,0)|0|0}Ot(a,n,da(r|0,4,0,0)|0|0,o,0,0,0,0)|0;vh(R,110,da(u|0,4,0,0)|0|0,o,0)|0;n=R+4|0;c=da(n|0,4,0,0)|0|0;if(c)ea(c+(((da(R+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,16|0,1,0);if(t){u=da(R+24|0,4,0,0)|0|0;t=~s;do if((s|0)<0){c=da(u+112|0,4,0,0)|0|0;if(!c)break;ea(c+(t<<2)|0,da(R+32|0,4,0,0)|0|0,4,0)}while(0);ea(u+88|0,(da(R+32|0,4,0,0)|0|0)+-1|0,4,0)}vh(R,9,da(r|0,4,0,0)|0|0,v+1|0,0)|0;t=da(n|0,4,0,0)|0|0;s=da(R+32|0,4,0,0)|0|0;if(t)ea(t+((s+-1|0)*20|0)+3>>0|0,3|0,1,0);if(s>>>0>v>>>0)ea(t+(v*20|0)+8|0,s|0,4,0);t=R+24|0;ea((da(t|0,4,0,0)|0|0)+88|0,s+-1|0,4,0);Zr(a,o);au(a);q=da(R+32|0,4,0,0)|0|0;if(q>>>0>T>>>0)ea((da(n|0,4,0,0)|0|0)+(T*20|0)+8|0,q|0,4,0);ea((da(t|0,4,0,0)|0|0)+88|0,q+-1|0,4,0)}while(0);Fk(da(a|0,4,0,0)|0|0,m);if(da(ua>>0|0,1,0,0)|0)break b}Ou(a,b,Q,pa,da(S>>0|0,1,0,1)|0|0,f);ea(qa+(pa*80|0)+32|0,da(I|0,4,0,0)|0|0,4,0);aa=da(d|0,4,0,0)|0|0;F=aa+8|0;Y=da(F|0,4,0,0)|0|0;_=da(aa|0,4,0,0)|0|0;m=d+(pa*80|0)+736|0;E=da(d+(pa*80|0)+800|0,4,0,0)|0|0;W=d+(pa*80|0)+780|0;y=da(W>>0|0,1,0,1)|0|0;z=da(wa|0,4,0,0)|0|0;H=z+(y*72|0)+8|0;g=da(z+(y*72|0)+48|0,4,0,0)|0|0;u=da(Ba|0,4,0,0)|0|0;y:do if((u|0)>0){c=0;while(1){if((da(Ba+(c<<2)+4|0,4,0,0)|0|0)==(g|0))break;c=c+1|0;if((c|0)>=(u|0)){c=-1;u=-1;break y}}c=hw(1,0,c|0)|0;c=~c;u=~C}else{c=-1;u=-1}while(0);$=d+(pa*80|0)+808|0;G=$;ea(G|0,c&l|0,4,0);ea(G+4|0,u&k|0,4,0);G=ca;G=lw(da(G|0,4,0,0)|0|0,da(G+4|0,4,0,0)|0|0,pa|0)|0;V=G&1;P=E+36|0;if(!((da(P|0,4,0,0)|0)&64))K=0;else K=((da(ya|0,2,0,0)|0)&32)==0;x=ws(Y)|0;J=d+(pa*80|0)+752|0;ea(J|0,x|0,4,0);X=d+(pa*80|0)+748|0;ea(X|0,x|0,4,0);Z=ws(Y)|0;ea(d+(pa*80|0)+760|0,Z|0,4,0);do if(da(W>>0|0,1,0,0)|0){if(!((da(z+(y*72|0)+44>>0|0,1,0,0)|0)&8))break;U=aa+72|0;e=(da(U|0,4,0,0)|0|0)+1|0;ea(U|0,e|0,4,0);ea(m|0,e|0,4,0);vh(Y,25,0,e,0)|0}while(0);v=da(z+(y*72|0)+45>>0|0,1,0,0)|0|0;z:do if(!(v&4)){w=da(P|0,4,0,0)|0|0;if(w&1024){r=da(E+40|0,2,0,0)|0|0;n=r&65535;p=aa+100|0;ea(p|0,(da(p|0,4,0,0)|0|0)+1|0,4,0);p=n+2|0;q=aa+60|0;c=da(q|0,4,0,0)|0|0;A=aa+56|0;u=da(A|0,4,0,0)|0|0;if((u|0)<(p|0)){W=aa+72|0;o=da(W|0,4,0,0)|0|0;ea(W|0,o+p|0,4,0);o=o+1|0}else{ea(q|0,c+p|0,4,0);ea(A|0,u-p|0,4,0);o=c}t=da(X|0,4,0,0)|0|0;w=r<<16>>16==0;if(!w){y=o+2|0;x=E+48|0;z=0;do{v=y+z|0;c=da((da(x|0,4,0,0)|0|0)+(z<<2)|0,4,0,0)|0|0;do if(c)if(!((da(c+18|0,2,0,0)|0)&1)){Qq(aa,da((da(c|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,v);break}else{Pu(aa,c,m,z,V,v)|0;t=da(J|0,4,0,0)|0|0;break}while(0);z=z+1|0}while((z|0)<(n|0))}vh(Y,25,da(E+24|0,4,0,0)|0|0,o,0)|0;vh(Y,25,n,o+1|0,0)|0;c=da(E+32|0,4,0,0)|0|0;u=E+28|0;X=(da(u>>0|0,1,0,0)|0|0)!=0?-11:-2;wh(Y,vh(Y,14,g,t,o)|0,c,X);ea(u>>0|0,0|0,1,0);if(!w){s=E+30|0;t=E+48|0;c=(r&65535)>1?0-n|0:-1;c=c>>>0>4294967280?0-c|0:16;u=0;do{if((da(s|0,2,0,1)|0)&1<>0|0,-105|0,1,0);ea(d+(pa*80|0)+784|0,g|0,4,0);ea(d+(pa*80|0)+788|0,da(Y+32|0,4,0,0)|0|0,4,0);ct(aa,o,p);if((da(A|0,4,0,0)|0|0)<(p|0)){ea(A|0,p|0,4,0);ea(q|0,o|0,4,0)}au(aa);ra=459;break}if(!((w&256|0)==0|(w&5|0)==0)){q=da(da(E+48|0,4,0,0)|0|0,4,0,0)|0|0;X=aa+72|0;r=(da(X|0,4,0,0)|0|0)+1|0;ea(X|0,r|0,4,0);q=Pu(aa,q,m,0,V,r)|0;if((q|0)!=(r|0))Zr(aa,r);ra=da(J|0,4,0,0)|0|0;vh(Y,38,q,ra,0)|0;vh(Y,70,g,ra,q)|0;ct(aa,q,1);Ru(aa,g,-1,q);ea(d+(pa*80|0)+781>>0|0,-100|0,1,0);ra=459;break}if((w&258|0)==258){if(!(w&32)){c=0;t=0}else{c=1;t=da(da(E+48|0,4,0,0)|0|0,4,0,0)|0|0}if(!(w&16))c=0;else c=da((da(E+48|0,4,0,0)|0|0)+(c<<2)|0,4,0,0)|0|0;u=(V|0)!=0;s=u?t:c;c=u?c:t;if(!c)vh(Y,u?105:108,g,x,0)|0;else{W=da(c|0,4,0,0)|0|0;X=_t(aa,da(W+16|0,4,0,0)|0|0,Ha)|0;vh(Y,da(33536+((da(W>>0|0,1,0,1)|0|0)+-80)>>0|0,1,0,1)|0|0,g,x,X)|0;ct(aa,X,1);Zr(aa,da(Ha|0,4,0,0)|0|0);Qu(m,c)}if(!s){t=0;c=156}else{X=da(s|0,4,0,0)|0|0;W=aa+72|0;t=(da(W|0,4,0,0)|0|0)+1|0;ea(W|0,t|0,4,0);Qq(aa,da(X+16|0,4,0,0)|0|0,t);X=da(X>>0|0,1,0,0)|0|0;if(X<<24>>24==80|X<<24>>24==82)c=V<<1^83;else c=V<<1|80;Qu(m,s)}u=Y+32|0;X=da(u|0,4,0,0)|0|0;ea(d+(pa*80|0)+781>>0|0,V^9|0,1,0);ea(d+(pa*80|0)+784|0,g|0,4,0);ea(d+(pa*80|0)+788|0,X|0,4,0);if((c|0)==156){ra=459;break}X=aa+72|0;q=(da(X|0,4,0,0)|0|0)+1|0;ea(X|0,q|0,4,0);vh(Y,103,g,q,0)|0;Ru(aa,g,-1,q);vh(Y,c,t,x,q)|0;q=da(Y+4|0,4,0,0)|0|0;if(!q){ra=459;break}ea(q+(((da(u|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,83|0,1,0);ra=459;break}if(w&512){F=da(E+24|0,2,0,0)|0|0;ea(Ga>>0|0,0|0,1,0);N=da(E+28|0,4,0,0)|0|0;Q=da(d+(pa*80|0)+744|0,4,0,0)|0|0;do if(!((da(ya|0,2,0,0)|0)&1)){y=0;v=0}else{if((da(fa>>0|0,1,0,0)|0|0)<=0){y=0;v=0;break}v=(da(N+46|0,2,0,1)|0|0)>(F&65535);y=v&1;v=v&1}while(0);c=F&65535;if(!(w&32)){z=c;A=0}else{z=c+1|0;v=1;A=da((da(E+48|0,4,0,0)|0|0)+(c<<2)|0,4,0,0)|0|0}do if(!(w&16))t=0;else{t=da((da(E+48|0,4,0,0)|0|0)+(z<<2)|0,4,0,0)|0|0;if((da(t+20|0,2,0,0)|0)&256){W=aa+72|0;X=(da(W|0,4,0,0)|0|0)+1|0;ea(W|0,X|0,4,0);ea(d+(pa*80|0)+772|0,X|0,4,0);vh(Y,25,(da((da(N+28|0,4,0,0)|0|0)+c>>0|0,1,0,0)|0|0)==1^V,X,0)|0;ea(d+(pa*80|0)+776|0,da(Y+32|0,4,0,0)|0|0,4,0)}if(A){v=1;break}u=da((da(N+4|0,4,0,0)|0|0)+(c<<1)|0,2,0,0)|0|0;if(u<<16>>16<=-1){v=1;break}y=(da((da((da(N+12|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+((u<<16>>16)*24|0)+20>>0|0,1,0,0)|0|0)==0?1:y;v=1}while(0);D=Su(aa,m,V,v,Ia)|0;q=da(Ia|0,4,0,0)|0|0;s=(q|0)==0;if(!s)ea(Ga>>0|0,da(q+c>>0|0,1,0,0)|0|0|0,1,0);E=da(J|0,4,0,0)|0|0;w=da(N+46|0,2,0,0)|0|0;if((F&65535)<(w&65535)?!((da((da(N+28|0,4,0,0)|0|0)+c>>0|0,1,0,0)|0|0)==0^((G&1|0)!=0|0!=0)):0)ra=318;else if((V|0)!=0?w<<16>>16==F<<16>>16:0)ra=318;else{H=y;y=0;G=t;J=A}if((ra|0)==318){H=0;G=A;J=t}v=(J|0)!=0;if(v)w=((da(J+18|0,2,0,0)|0)&40)!=0;else w=1;x=w&1;A=(G|0)!=0;if(A)z=((da(G+18|0,2,0,0)|0)&40)!=0;else z=1;u=z&1;z=(v|F<<16>>16!=0)&1;do if(v){t=da((da(J|0,4,0,0)|0|0)+16|0,4,0,0)|0|0;v=D+c|0;Qq(aa,t,v);if((da(J+20|0,2,0,0)|0)&256){if(!(da((da(Y|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))w=(da(Y+4|0,4,0,0)|0|0)+(((da(Y+32|0,4,0,0)|0|0)+-1|0)*20|0)|0;else w=29120;ea(w+12|0,da(d+(pa*80|0)+772|0,4,0,0)|0|0,4,0);ea(w+3>>0|0,1|0,1,0)}if(Tu(t)|0)vh(Y,76,v,E,0)|0;do if(!s){w=q+c|0;if((Au(t,da(w>>0|0,1,0,0)|0|0)|0)<<24>>24==65){ea(w>>0|0,65|0,1,0);v=65}else v=da(w>>0|0,1,0,0)|0|0;if(!(Uu(t,v)|0))break;ea(w>>0|0,65|0,1,0)}while(0);w=c+1|0}else{if(!(H<<24>>24)){w=c;break}vh(Y,28,0,D+c|0,0)|0;w=c+1|0;x=0;z=1}while(0);Vu(aa,D,w-(H&255)|0,q);wh(Y,vh(Y,da(33544+(z<<2|V|x<<1)>>0|0,1,0,1)|0|0,Q,E,D)|0,w,-14);do if(A){s=da((da(G|0,4,0,0)|0|0)+16|0,4,0,0)|0|0;r=D+c|0;ct(aa,r,1);Qq(aa,s,r);if((da(G+20|0,2,0,0)|0)&256){if(!(da((da(Y|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))t=(da(Y+4|0,4,0,0)|0|0)+(((da(Y+32|0,4,0,0)|0|0)+-1|0)*20|0)|0;else t=29120;ea(t+12|0,da(d+(pa*80|0)+772|0,4,0,0)|0|0,4,0);ea(t+3>>0|0,1|0,1,0)}if(Tu(s)|0)vh(Y,76,r,E,0)|0;do if((Au(s,da(Ga>>0|0,1,0,0)|0|0)|0)<<24>>24!=65){if(Uu(s,da(Ga>>0|0,1,0,0)|0|0)|0)break;Vu(aa,r,1,Ga)}while(0);c=c+1|0}else{if(!(y<<24>>24))break;vh(Y,28,0,D+c|0,0)|0;u=0;c=c+1|0}while(0);lg(_,q);ea(d+(pa*80|0)+788|0,da(Y+32|0,4,0,0)|0|0,4,0);if(c)wh(Y,vh(Y,da(33552+(u|V<<1)>>0|0,1,0,1)|0|0,Q,E,D)|0,c,-14);Qu(m,J);Qu(m,G);do if(!K){t=da(N+12|0,4,0,0)|0|0;if(!((da(t+44>>0|0,1,0,0)|0)&32)){W=aa+72|0;X=(da(W|0,4,0,0)|0|0)+1|0;ea(W|0,X|0,4,0);vh(Y,112,Q,X,0)|0;Ru(aa,g,-1,X);vh(Y,66,g,X,0)|0;break}if((g|0)==(Q|0))break;c=da(t+8|0,4,0,0)|0|0;A:do if(!c)c=0;else while(1){if(((da(c+51>>0|0,1,0,0)|0)&3)==2)break A;c=da(c+20|0,4,0,0)|0|0;if(!c){c=0;break}}while(0);z=c+46|0;o=da(z|0,2,0,0)|0|0;t=o&65535;u=aa+60|0;s=da(u|0,4,0,0)|0|0;r=aa+56|0;n=da(r|0,4,0,0)|0|0;if((n|0)<(t|0)){X=aa+72|0;s=da(X|0,4,0,0)|0|0;ea(X|0,s+t|0,4,0);s=s+1|0}else{ea(u|0,s+t|0,4,0);ea(r|0,n-t|0,4,0)}if(o<<16>>16){n=c+4|0;o=N+48|0;v=N+4|0;w=0;do{t=da((da(n|0,4,0,0)|0|0)+(w<<1)|0,2,0,0)|0|0;c=da(o|0,2,0,0)|0|0;B:do if(!(c<<16>>16))c=-1;else{r=da(v|0,4,0,0)|0|0;u=c&65535;c=0;while(1){if((da(r+(c<<1)|0,2,0,0)|0|0)==t<<16>>16)break B;c=c+1|0;if((c|0)>=(u|0)){c=-1;break}}}while(0);vh(Y,47,Q,c<<16>>16,w+s|0)|0;w=w+1|0;t=da(z|0,2,0,1)|0|0}while((w|0)<(t|0))}wh(Y,vh(Y,68,g,Z,s)|0,t,-14)}while(0);r=da(P|0,4,0,0)|0|0;do if(!(r&4096)){n=d+(pa*80|0)+781|0;if(!V){ea(n>>0|0,9|0,1,0);break}else{ea(n>>0|0,8|0,1,0);break}}else ea(d+(pa*80|0)+781>>0|0,-100|0,1,0);while(0);ea(d+(pa*80|0)+784|0,Q|0,4,0);ea(d+(pa*80|0)+782>>0|0,r>>>16&1|0,1,0);if(r&15){ra=459;break}ea(d+(pa*80|0)+783>>0|0,1|0,1,0);ra=459;break}if(!(w&8192))if(!(v&8)){ea(d+(pa*80|0)+781>>0|0,da(33560+V>>0|0,1,0,0)|0|0|0,1,0);ea(d+(pa*80|0)+784|0,g|0,4,0);ea(d+(pa*80|0)+788|0,(vh(Y,da(33568+V>>0|0,1,0,1)|0|0,g,x,0)|0)+1|0,4,0);ea(d+(pa*80|0)+783>>0|0,1|0,1,0);ra=459;break}else{ea(d+(pa*80|0)+781>>0|0,-100|0,1,0);ra=459;break}A=aa+68|0;U=da(A|0,4,0,0)|0|0;ea(A|0,U+1|0,4,0);S=aa+72|0;T=(da(S|0,4,0,0)|0|0)+1|0;ea(S|0,T|0,4,0);V=ws(Y)|0;R=da(z+(y*72|0)+24|0,4,0,0)|0|0;e=da(da(E+48|0,4,0,0)|0|0,4,0,0)|0|0;J=da(e+12|0,4,0,0)|0|0;ea(d+(pa*80|0)+781>>0|0,18|0,1,0);ea(d+(pa*80|0)+784|0,T|0,4,0);c=da(va>>0|0,1,0,0)|0|0;do if((c&255)>1){z=(c&255)-pa|0;x=z+-1|0;w=lh(_,(x*72|0)+80|0,0)|0;if(!w)break z;v=z&255;ea(w+4|0,v|0,4,0);ea(w|0,v|0,4,0);v=w+8|0;n=v+0|0;c=H+0|0;r=n+72|0;do{ea(n|0,da(c|0,4,0,0)|0|0,4,0);n=n+4|0;c=c+4|0}while((n|0)<(r|0));y=da(wa|0,4,0,0)|0|0;if((z|0)<2)break;else z=1;while(1){n=v+(z*72|0)+0|0;c=y+((da(d+((z+pa|0)*80|0)+780>>0|0,1,0,1)|0|0)*72|0)+8|0;r=n+72|0;do{ea(n|0,da(c|0,4,0,0)|0|0,4,0);n=n+4|0;c=c+4|0}while((n|0)<(r|0));if((z|0)<(x|0))z=z+1|0;else break}}else w=da(wa|0,4,0,0)|0|0;while(0);if(!((da(ya|0,2,0,0)|0)&8)){if(!((da(R+44>>0|0,1,0,0)|0)&32)){c=(da(S|0,4,0,0)|0|0)+1|0;ea(S|0,c|0,4,0);vh(Y,28,0,c,0)|0}else{c=da(R+8|0,4,0,0)|0|0;C:do if(!c)c=0;else while(1){if(((da(c+51>>0|0,1,0,0)|0)&3)==2)break C;c=da(c+20|0,4,0,0)|0|0;if(!c){c=0;break}}while(0);Q=da(A|0,4,0,0)|0|0;ea(A|0,Q+1|0,4,0);vh(Y,57,Q,da(c+46|0,2,0,1)|0|0,0)|0;P=da(F|0,4,0,0)|0|0;wh(P,-1,gs(aa,c)|0,-6);c=Q}P=(da(S|0,4,0,0)|0|0)+1|0;ea(S|0,P|0,4,0);O=c}else{P=0;O=0}Q=vh(Y,25,0,T,0)|0;c=da(sa|0,4,0,0)|0|0;do if((c|0)>1){x=0;v=0;do{z=da(ta|0,4,0,0)|0|0;N=z+(x*48|0)|0;y=da(N|0,4,0,0)|0|0;do if((N|0)!=(e|0)){if((da(y+4|0,4,0,0)|0)&1)break;if((da(z+(x*48|0)+20|0,2,0,0)|0)&2)break;if(!((da(z+(x*48|0)+18|0,2,0,0)|0)&4095))break;v=rs(_,v,Lr(_,y,0,0)|0)|0;c=da(sa|0,4,0,0)|0|0}while(0);x=x+1|0}while((x|0)<(c|0));if(!v){N=0;break}N=Yq(aa,72,0,v,0)|0}else N=0;while(0);M=J+12|0;do if((da(M|0,4,0,0)|0|0)>0){o=J+20|0;n=(N|0)==0;r=R+44|0;s=Y+32|0;t=Y+4|0;v=Y+24|0;x=R+8|0;y=aa+60|0;B=aa+56|0;K=N+12|0;L=0;u=0;c=0;p=240;while(1){A=da(o|0,4,0,0)|0|0;if((da(A+(L*48|0)+8|0,4,0,0)|0|0)!=(g|0)?((da(A+(L*48|0)+18|0,2,0,0)|0)&512)==0:0)A=p;else ra=407;do if((ra|0)==407){ra=0;A=da(A+(L*48|0)|0,4,0,0)|0|0;do if(!n){if((da(A+4|0,4,0,0)|0)&1)break;ea(K|0,A|0,4,0);A=N}while(0);q=Us(aa,w,A,0,0,p,U)|0;if(!q){A=p;break}Ou(aa,w,q+736|0,pa,da(W>>0|0,1,0,1)|0|0,0);do if(!((da(ya|0,2,0,0)|0)&8)){F=(L|0)==((da(M|0,4,0,0)|0|0)+-1|0)?-1:L;do if(!((da(r>>0|0,1,0,0)|0)&32)){z=vh(Y,130,O,0,bt(aa,R,-1,g,P,0)|0)|0;wh(Y,z,F,-14)}else{A=da(x|0,4,0,0)|0|0;D:do if(!A)A=0;else while(1){if(((da(A+51>>0|0,1,0,0)|0)&3)==2)break D;A=da(A+20|0,4,0,0)|0|0;if(!A){A=0;break}}while(0);G=da(A+46|0,2,0,0)|0|0;D=G&65535;J=da(y|0,4,0,0)|0|0;H=da(B|0,4,0,0)|0|0;if((H|0)<(D|0)){E=da(S|0,4,0,0)|0|0;ea(S|0,E+D|0,4,0);E=E+1|0}else{ea(y|0,J+D|0,4,0);ea(B|0,H-D|0,4,0);E=J}if(G<<16>>16){H=A+4|0;J=0;do{bt(aa,R,da((da(H|0,4,0,0)|0|0)+(J<<1)|0,2,0,0)|0|0,g,J+E|0,0)|0;J=J+1|0}while((J|0)<(D|0))}J=(F|0)!=0;if(J){z=vh(Y,69,O,0,E)|0;wh(Y,z,D,-14);if((F|0)>-1)ra=426}else{z=0;ra=426}do if((ra|0)==426){ra=0;vh(Y,49,E,D,P)|0;vh(Y,110,O,P,0)|0;if(!J)break;F=da(t|0,4,0,0)|0|0;if(!F)break;ea(F+(((da(s|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,16|0,1,0)}while(0);ct(aa,E,D);if((da(B|0,4,0,0)|0|0)>=(D|0))break;ea(B|0,D|0,4,0);ea(y|0,E|0,4,0)}while(0);vh(Y,17,T,V,0)|0;if(!z)break;A=da(s|0,4,0,0)|0|0;if(A>>>0>z>>>0)ea((da(t|0,4,0,0)|0|0)+(z*20|0)+8|0,A|0,4,0);ea((da(v|0,4,0,0)|0|0)+88|0,A+-1|0,4,0)}else vh(Y,17,T,V,0)|0;while(0);c=(da(q+39>>0|0,1,0,0)|0|0)==0?c:1;A=da(q+800|0,4,0,0)|0|0;do if(!((da(A+36|0,4,0,0)|0)&512)){u=0;A=p}else{if((L|0)!=0?(da(A+28|0,4,0,0)|0|0)!=(u|0):0){u=0;A=p;break}u=da(A+28|0,4,0,0)|0|0;if(((da(r>>0|0,1,0,0)|0)&32)!=0?((da(u+51>>0|0,1,0,0)|0)&3)==2:0){u=0;A=p;break}A=(p&65535|4096)&65535}while(0);Ws(q)}while(0);L=L+1|0;if((L|0)>=(da(M|0,4,0,0)|0|0))break;else p=A}ea(d+(pa*80|0)+792|0,u|0,4,0);if(!u){r=c;break}ea(d+(pa*80|0)+744|0,U|0,4,0);r=c}else{ea(d+(pa*80|0)+792|0,0|0,4,0);r=0}while(0);if(N){ea(N+12|0,0|0,4,0);Fk(_,N)}s=Y+32|0;c=da(s|0,4,0,0)|0|0;if(c>>>0>Q>>>0)ea((da(Y+4|0,4,0,0)|0|0)+(Q*20|0)+4|0,c|0,4,0);vh(Y,16,0,da(X|0,4,0,0)|0|0,0)|0;u=da(Y+24|0,4,0,0)|0|0;t=~V;do if((V|0)<0){c=da(u+112|0,4,0,0)|0|0;if(!c)break;ea(c+(t<<2)|0,da(s|0,4,0,0)|0|0,4,0)}while(0);ea(u+88|0,(da(s|0,4,0,0)|0|0)+-1|0,4,0);if((da(va>>0|0,1,0,1)|0|0)>1)lg(_,w);if(r){ra=459;break}Qu(m,e);ra=459}else{ra=da(z+(y*72|0)+36|0,4,0,0)|0|0;vh(Y,20,ra,0,da(z+(y*72|0)+32|0,4,0,0)|0|0)|0;ea(d+(pa*80|0)+788|0,vh(Y,22,ra,x,0)|0|0,4,0);ea(d+(pa*80|0)+781>>0|0,16|0,1,0);ra=459}while(0);if((ra|0)==459){ra=0;c=da(sa|0,4,0,0)|0|0;do if((c|0)>0){o=d+(pa*80|0)+772|0;p=Y+32|0;q=Y+4|0;v=Y+24|0;n=da(ta|0,4,0,0)|0|0;while(1){r=n+20|0;s=da(r|0,2,0,0)|0|0;do if(!(s&6)){u=n+40|0;t=$;if(!(((da(t|0,4,0,0)|0)&(da(u|0,4,0,0)|0)|0)==0?((da(t+4|0,4,0,0)|0)&(da(u+4|0,4,0,0)|0)|0)==0:0)){ea(ga>>0|0,1|0,1,0);break}u=da(n|0,4,0,0)|0|0;if((da(m|0,4,0,0)|0|0)!=0?((da(u+4|0,4,0,0)|0)&1|0)==0:0)break;do if(!(s&512))ft(aa,u,Z,16);else{t=vh(Y,46,da(o|0,4,0,0)|0|0,0,0)|0;ft(aa,u,Z,16);if(!t)break;u=da(p|0,4,0,0)|0|0;if(u>>>0>t>>>0)ea((da(q|0,4,0,0)|0|0)+(t*20|0)+8|0,u|0,4,0);ea((da(v|0,4,0,0)|0|0)+88|0,u+-1|0,4,0)}while(0);ea(r|0,da(r|0,2,0,1)|0|4|0,2,0)}while(0);c=c+-1|0;if((c|0)<=0)break;else n=n+48|0}q=da(sa|0,4,0,0)|0|0;if((q|0)<=0){ra=475;break}s=da(ta|0,4,0,0)|0|0;while(1){do if(!((da(s+20|0,2,0,0)|0)&6)){if((da(s+18|0,2,0,0)|0|0)!=1026)break;if((da(s+8|0,4,0,0)|0|0)!=(g|0))break;if(da(m|0,4,0,0)|0)break;u=da(s|0,4,0,0)|0|0;c=Eu(Ca,g,da(s+12|0,4,0,0)|0|0,l,k,3,0)|0;if(!c)break;if((da(c+20|0,2,0,0)|0)&4)break;t=lh(_,48,0)|0;if(!t)break;n=t+0|0;c=(da(c|0,4,0,0)|0|0)+0|0;r=n+48|0;do{ea(n|0,da(c|0,4,0,0)|0|0,4,0);n=n+4|0;c=c+4|0}while((n|0)<(r|0));ea(t+12|0,da(u+12|0,4,0,0)|0|0,4,0);ft(aa,t,Z,16);lg(_,t)}while(0);q=q+-1|0;if((q|0)<=0)break;else s=s+48|0}}else ra=475;while(0);if((ra|0)==475)ra=0;m=da(m|0,4,0,0)|0|0;do if(m){ea(d+(pa*80|0)+764|0,da(Y+32|0,4,0,0)|0|0,4,0);vh(Y,25,1,m,0)|0;$s(aa);m=da(sa|0,4,0,0)|0|0;if((m|0)<=0)break;n=0;l=da(ta|0,4,0,0)|0|0;while(1){q=l+20|0;do if(!((da(q|0,2,0,0)|0)&6)){p=l+40|0;o=$;if(!(((da(o|0,4,0,0)|0)&(da(p|0,4,0,0)|0)|0)==0?((da(o+4|0,4,0,0)|0)&(da(p+4|0,4,0,0)|0)|0)==0:0))break;ft(aa,da(l|0,4,0,0)|0|0,Z,16);ea(q|0,da(q|0,2,0,1)|0|4|0,2,0);m=da(sa|0,4,0,0)|0|0}while(0);n=n+1|0;if((n|0)>=(m|0))break;else l=l+48|0}}while(0);k=$;l=da(k|0,4,0,0)|0|0;k=da(k+4|0,4,0,0)|0|0}ea(xa|0,da(qa+(pa*80|0)+24|0,4,0,0)|0|0,4,0);pa=pa+1|0;if((pa|0)>=(h|0))break a}}}while(0);if(Da)d=0;else{ea(za|0,da(Aa|0,4,0,0)|0|0,4,0);Wu(Fa,d);d=0}}else{ea(Ha|0,64|0,4,0);sh(a,33504,Ha);d=0}while(0);i=Ja;return d|0}function Vs(a){a=a|0;var b=0,c=0,d=0,e=0;e=a<<16>>16;do if(a<<16>>16>=10){a=(e|0)%10|0;b=((a|0)<0)<<31>>31;if(a>>>0>4){c=iw(a|0,b|0,-2,-1)|0;d=C}else{c=((a|0)!=0)<<31>>31;c=iw(c|0,((c|0)<0)<<31>>31|0,a|0,b|0)|0;d=C}b=((e|0)/10|0)<<16;a=b>>16;if((b|0)<=131072){b=iw(c|0,d|0,8,0)|0;a=lw(b|0,C|0,3-a|0)|0;b=C;break}if((b|0)>3932160){b=2147483647;a=-1}else{b=iw(c|0,d|0,8,0)|0;a=hw(b|0,C|0,a+-3|0)|0;b=C}}else{b=0;a=1}while(0);C=b;return a|0}function Ws(a){a=a|0;var 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,A=0,B=0,C=0,D=0,E=0;y=da(a|0,4,0,0)|0|0;z=da(y+8|0,4,0,0)|0|0;B=da(a+4|0,4,0,0)|0|0;C=da(y|0,4,0,0)|0|0;$s(y);D=a+41|0;c=da(D>>0|0,1,0,0)|0|0;if(!(c<<24>>24))b=z+24|0;else{b=z+24|0;l=z+32|0;n=z+4|0;k=c&255;do{k=k+-1|0;e=da(a+(k*80|0)+800|0,4,0,0)|0|0;w=da(a+(k*80|0)+760|0,4,0,0)|0|0;c=da(b|0,4,0,0)|0|0;d=~w;if((w|0)<0?(o=da(c+112|0,4,0,0)|0|0,(o|0)!=0):0)ea(o+(d<<2)|0,da(l|0,4,0,0)|0|0,4,0);ea(c+88|0,(da(l|0,4,0,0)|0|0)+-1|0,4,0);x=a+(k*80|0)+781|0;d=da(x>>0|0,1,0,0)|0|0;if(d<<24>>24!=-100?(vh(z,d&255,da(a+(k*80|0)+784|0,4,0,0)|0|0,da(a+(k*80|0)+788|0,4,0,0)|0|0,da(a+(k*80|0)+782>>0|0,1,0,1)|0|0)|0,q=da(n|0,4,0,0)|0|0,(q|0)!=0):0)ea(q+(((da(l|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,da(a+(k*80|0)+783>>0|0,1,0,0)|0|0|0,1,0);p=e+36|0;if(((da(p|0,4,0,0)|0)&2048|0)!=0?(r=a+(k*80|0)+792|0,s=da(r|0,4,0,0)|0|0,(s|0)>0):0){w=da(a+(k*80|0)+752|0,4,0,0)|0|0;g=da(b|0,4,0,0)|0|0;d=~w;if((w|0)<0?(t=da(g+112|0,4,0,0)|0|0,(t|0)!=0):0){ea(t+(d<<2)|0,da(l|0,4,0,0)|0|0,4,0);h=da(r|0,4,0,0)|0|0;f=da(l|0,4,0,0)|0|0;ea(g+88|0,f+-1|0,4,0);c=a+(k*80|0)+796|0;if((h|0)>0)E=16}else{f=da(l|0,4,0,0)|0|0;ea(g+88|0,f+-1|0,4,0);c=a+(k*80|0)+796|0;h=s;E=16}if((E|0)==16){E=0;d=g;j=h;i=(da(c|0,4,0,0)|0|0)+((h+-1|0)*12|0)|0;while(1){h=i+4|0;g=da(h|0,4,0,0)|0|0;e=g+1|0;if(f>>>0>e>>>0)ea((da(n|0,4,0,0)|0|0)+(e*20|0)+8|0,f|0,4,0);ea(d+88|0,f+-1|0,4,0);vh(z,da(i+8>>0|0,1,0,1)|0|0,da(i|0,4,0,0)|0|0,g,0)|0;h=(da(h|0,4,0,0)|0|0)+-1|0;f=da(l|0,4,0,0)|0|0;if(f>>>0>h>>>0)ea((da(n|0,4,0,0)|0|0)+(h*20|0)+8|0,f|0,4,0);d=da(b|0,4,0,0)|0|0;ea(d+88|0,f+-1|0,4,0);j=j+-1|0;if((j|0)<=0)break;else i=i+-12|0}}lg(C,da(c|0,4,0,0)|0|0)}w=da(a+(k*80|0)+748|0,4,0,0)|0|0;e=da(b|0,4,0,0)|0|0;d=~w;if((w|0)<0?(m=da(e+112|0,4,0,0)|0|0,(m|0)!=0):0)ea(m+(d<<2)|0,da(l|0,4,0,0)|0|0,4,0);d=da(l|0,4,0,0)|0|0;ea(e+88|0,d+-1|0,4,0);e=a+(k*80|0)+756|0;c=da(e|0,4,0,0)|0|0;if(c){vh(z,16,0,c,0)|0;e=da(e|0,4,0,0)|0|0;d=da(l|0,4,0,0)|0|0;if(d>>>0>e>>>0)ea((da(n|0,4,0,0)|0|0)+(e*20|0)+8|0,d|0,4,0);f=d+-1|0;c=(da(b|0,4,0,0)|0|0)+88|0;ea(c|0,f|0,4,0);e=e+-2|0;if(d>>>0>e>>>0)ea((da(n|0,4,0,0)|0|0)+(e*20|0)+8|0,d|0,4,0);ea(c|0,f|0,4,0)}e=da(a+(k*80|0)+776|0,4,0,0)|0|0;if(e){if(!(da((da(z|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))d=(da(n|0,4,0,0)|0|0)+((((e|0)<1?d:e)+-1|0)*20|0)|0;else d=29120;vh(z,(da(d+4|0,4,0,0)|0|0)==0?141:140,da(a+(k*80|0)+772|0,4,0,0)|0|0,e,0)|0}c=da(a+(k*80|0)+736|0,4,0,0)|0|0;if(c){f=vh(z,137,c,0,0)|0;c=da(p|0,4,0,0)|0|0;if(!(c&64)){vh(z,104,da(B+(k*72|0)+48|0,4,0,0)|0|0,0,0)|0;c=da(p|0,4,0,0)|0|0}if(c&512)vh(z,104,da(a+(k*80|0)+744|0,4,0,0)|0|0,0,0)|0;c=da(a+(k*80|0)+764|0,4,0,0)|0|0;if((da(x>>0|0,1,0,0)|0|0)==18)vh(z,17,da(a+(k*80|0)+784|0,4,0,0)|0|0,c,0)|0;else vh(z,16,0,c,0)|0;c=da(l|0,4,0,0)|0|0;if(c>>>0>f>>>0)ea((da(n|0,4,0,0)|0|0)+(f*20|0)+8|0,c|0,4,0);ea((da(b|0,4,0,0)|0|0)+88|0,c+-1|0,4,0)}}while((k|0)>0)}w=da(a+52|0,4,0,0)|0|0;c=da(b|0,4,0,0)|0|0;b=~w;if((w|0)<0?(u=da(c+112|0,4,0,0)|0|0,(u|0)!=0):0)ea(u+(b<<2)|0,da(z+32|0,4,0,0)|0|0,4,0);x=z+32|0;ea(c+88|0,(da(x|0,4,0,0)|0|0)+-1|0,4,0);if(da(D>>0|0,1,0,0)|0){q=a+34|0;r=a+38|0;s=a+64|0;t=C+65|0;u=z+4|0;v=0;w=a+736|0;while(1){e=da(w+44>>0|0,1,0,1)|0|0;f=da(B+(e*72|0)+24|0,4,0,0)|0|0;d=da(w+64|0,4,0,0)|0|0;if(((da(B+(e*72|0)+45>>0|0,1,0,0)|0)&4)!=0?(da(t>>0|0,1,0,0)|0|0)==0:0){g=da(x|0,4,0,0)|0|0;d=da(w+32|0,4,0,0)|0|0;if(!(da((da(z|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))c=(da(u|0,4,0,0)|0|0)+(((d|0)<0?g+-1|0:d)*20|0)|0;else c=29120;if((d|0)<(g|0)){h=da(w+4|0,4,0,0)|0|0;f=B+(e*72|0)+40|0;e=c;while(1){c=e+4|0;do if((da(c|0,4,0,0)|0|0)==(h|0)){b=da(e>>0|0,1,0,0)|0|0;if(b<<24>>24==47){ea(e>>0|0,33|0,1,0);o=e+8|0;ea(c|0,(da(f|0,4,0,0)|0|0)+(da(o|0,4,0,0)|0|0)|0,4,0);p=e+12|0;ea(o|0,da(p|0,4,0,0)|0|0,4,0);ea(p|0,0|0,4,0);break}else if(b<<24>>24==103){ea(e>>0|0,28|0,1,0);ea(c|0,0|0,4,0);ea(e+12|0,0|0,4,0);break}else break}while(0);d=d+1|0;if((d|0)==(g|0))break;else e=e+20|0}}}else E=64;do if((E|0)==64){E=0;p=f+44|0;if((((da(p>>0|0,1,0,0)|0)&2)==0?(da(f+12|0,4,0,0)|0|0)==0:0)?((da(q|0,2,0,0)|0)&16)==0:0){c=da(d+36|0,4,0,0)|0|0;if((da(r>>0|0,1,0,0)|0|0)==0&(c&64|0)==0)vh(z,61,da(B+(e*72|0)+48|0,4,0,0)|0|0,0,0)|0;if((c&17152|0)==512?(A=da(w+8|0,4,0,0)|0|0,(A|0)!=(da(s|0,4,0,0)|0|0)):0)vh(z,61,A,0,0)|0}c=da(d+36|0,4,0,0)|0|0;if(!(c&576)){if(!(c&8192))break;c=w+56|0}else c=d+28|0;d=da(c|0,4,0,0)|0|0;if((d|0)!=0?(da(t>>0|0,1,0,0)|0|0)==0:0){n=da(x|0,4,0,0)|0|0;h=da(w+32|0,4,0,0)|0|0;if(!(da((da(z|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))g=(da(u|0,4,0,0)|0|0)+(((h|0)<0?n+-1|0:h)*20|0)|0;else g=29120;if((h|0)<(n|0)){o=d+48|0;l=d+4|0;m=w+8|0;k=f+8|0;b=da(w+4|0,4,0,0)|0|0;c=g;while(1){d=c+4|0;a:do if((da(d|0,4,0,0)|0|0)==(b|0)){g=da(c>>0|0,1,0,0)|0|0;if(g<<24>>24==103){ea(d|0,da(m|0,4,0,0)|0|0,4,0);ea(c>>0|0,112|0,1,0);break}else if(g<<24>>24!=47)break;e=c+8|0;g=da(e|0,4,0,0)|0|0;if((da(p>>0|0,1,0,0)|0)&32){f=k;while(1){f=da(f|0,4,0,0)|0|0;if(((da(f+51>>0|0,1,0,0)|0)&3)==2)break;else f=f+20|0}g=da((da(f+4|0,4,0,0)|0|0)+(g<<1)|0,2,0,0)|0|0}j=g&65535;g=da(o|0,2,0,0)|0|0;if(g<<16>>16){f=da(l|0,4,0,0)|0|0;i=g&65535;g=0;while(1){if((da(f+(g<<1)|0,2,0,0)|0|0)==j<<16>>16)break;g=g+1|0;if((g|0)>=(i|0))break a}if((g&65535)<<16>>16>-1){ea(e|0,g<<16>>16|0,4,0);ea(d|0,da(m|0,4,0,0)|0|0,4,0)}}}while(0);h=h+1|0;if((h|0)==(n|0))break;else c=c+20|0}}}}while(0);v=v+1|0;if((v|0)>=(da(D>>0|0,1,0,1)|0|0))break;else w=w+80|0}}ea(y+424|0,da(a+56|0,4,0,0)|0|0,4,0);Wu(C,a);return}function Xs(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)!=0?(da(b|0,4,0,0)|0|0)>0:0){c=0;d=da(b+4|0,4,0,0)|0|0;while(1){Xu(a,da(d|0,4,0,0)|0|0);c=c+1|0;if((c|0)>=(da(b|0,4,0,0)|0|0))break;else d=d+20|0}}return}function Ys(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();n=q;e=da(a+24|0,4,0,0)|0|0;o=da(e|0,4,0,0)|0|0;f=da(e+4|0,4,0,0)|0|0;p=da(e+12|0,4,0,0)|0|0;d=da(b>>0|0,1,0,1)|0|0;a:do if((d|0)==155)if(((da(e+28|0,2,0,0)|0)&8)==0?(da(a+16|0,4,0,0)|0|0)==(da(b+38>>0|0,1,0,1)|0|0):0){h=p+40|0;d=p+44|0;a=da(d|0,4,0,0)|0|0;b:do if((a|0)>0){c=0;e=da(h|0,4,0,0)|0|0;while(1){if(!(Bu(da(e|0,4,0,0)|0|0,b,-1)|0))break b;c=c+1|0;if((c|0)<(a|0))e=e+16|0;else break}}else c=0;while(0);do if((c|0)>=(a|0)){g=da(o|0,4,0,0)|0|0;k=da(g+62>>0|0,1,0,0)|0|0;g=Gt(g,da(h|0,4,0,0)|0|0,16,d,n)|0;ea(h|0,g|0,4,0);c=da(n|0,4,0,0)|0|0;if((c|0)>-1){ea(g+(c<<4)|0,b|0,4,0);f=o+72|0;d=(da(f|0,4,0,0)|0|0)+1|0;ea(f|0,d|0,4,0);ea(g+(c<<4)+8|0,d|0,4,0);d=da(o|0,4,0,0)|0|0;f=da(b+8|0,4,0,0)|0|0;if(!f)a=0;else{e=f;while(1)if(!(da(e>>0|0,1,0,0)|0))break;else e=e+1|0;a=e-f&1073741823}e=da(b+20|0,4,0,0)|0|0;if(!e)e=0;else e=da(e|0,4,0,0)|0|0;ea(g+(c<<4)+4|0,Rh(d,f,a,e,k,0)|0|0,4,0);if(!((da(b+4|0,4,0,0)|0)&16)){ea(g+(c<<4)+12|0,-1|0,4,0);break}else{l=o+68|0;m=da(l|0,4,0,0)|0|0;ea(l|0,m+1|0,4,0);ea(g+(c<<4)+12|0,m|0,4,0);break}}}while(0);ea(b+34|0,c|0,2,0);ea(b+40|0,p|0,4,0);c=1}else c=0;else if((d|0)==154|(d|0)==156)if((f|0)!=0?(h=da(f|0,4,0,0)|0|0,(h|0)>0):0){l=b+28|0;d=da(l|0,4,0,0)|0|0;a=0;e=f+8|0;while(1){if((d|0)==(da(e+40|0,4,0,0)|0|0))break;a=a+1|0;if((a|0)>=(h|0)){c=1;break a}else e=e+72|0}k=p+28|0;f=p+32|0;a=da(f|0,4,0,0)|0|0;c:do if((a|0)>0){h=b+32|0;c=0;g=da(k|0,4,0,0)|0|0;while(1){if((da(g+4|0,4,0,0)|0|0)==(d|0)?(da(g+8|0,4,0,0)|0|0)==(da(h|0,2,0,0)|0|0):0)break c;c=c+1|0;if((c|0)<(a|0))g=g+24|0;else break}}else c=0;while(0);d:do if((c|0)>=(a|0)){a=Gt(da(o|0,4,0,0)|0|0,da(k|0,4,0,0)|0|0,24,f,n)|0;ea(k|0,a|0,4,0);c=da(n|0,4,0,0)|0|0;if((c|0)>-1){ea(a+(c*24|0)|0,da(b+44|0,4,0,0)|0|0,4,0);f=da(l|0,4,0,0)|0|0;ea(a+(c*24|0)+4|0,f|0,4,0);g=da(b+32|0,2,0,0)|0|0;ea(a+(c*24|0)+8|0,g<<16>>16|0,4,0);e=o+72|0;h=(da(e|0,4,0,0)|0|0)+1|0;ea(e|0,h|0,4,0);ea(a+(c*24|0)+16|0,h|0,4,0);h=a+(c*24|0)+12|0;ea(h|0,-1|0,4,0);ea(a+(c*24|0)+20|0,b|0,4,0);e=da(p+24|0,4,0,0)|0|0;e:do if((e|0)!=0?(m=da(e|0,4,0,0)|0|0,(m|0)>0):0){d=0;a=da(e+4|0,4,0,0)|0|0;while(1){e=da(a|0,4,0,0)|0|0;if(((da(e>>0|0,1,0,0)|0|0)==-102?(da(e+28|0,4,0,0)|0|0)==(f|0):0)?(da(e+32|0,2,0,0)|0|0)==g<<16>>16:0)break;d=d+1|0;if((d|0)>=(m|0))break e;else a=a+20|0}ea(h|0,d|0,4,0);if((d|0)>=0)break d}while(0);l=p+12|0;m=da(l|0,4,0,0)|0|0;ea(l|0,m+1|0,4,0);ea(h|0,m|0,4,0)}}while(0);ea(b+40|0,p|0,4,0);ea(b>>0|0,-100|0,1,0);ea(b+34|0,c|0,2,0);c=1}else c=1;else c=0;while(0);i=q;return c|0}function Zs(a,b){a=a|0;b=b|0;return 0}function _s(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();c=d;if((da(a+450>>0|0,1,0,0)|0|0)==2){e=da(a+8|0,4,0,0)|0|0;f=da(a|0,4,0,0)|0|0;ea(c|0,b|0,4,0);c=th(f,35e3,c)|0;wh(e,vh(e,157,da(a+464|0,4,0,0)|0|0,0,0)|0,c,-1)}i=d;return}function $s(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=a+19|0;g=0;h=a+116|0;while(1){c=h+12|0;d=da(c|0,4,0,0)|0|0;if(d){e=h+6|0;if(da(e>>0|0,1,0,0)|0){f=da(b>>0|0,1,0,0)|0|0;if((f&255)<8){ea(b>>0|0,f+1<<24>>24|0,1,0);ea(a+((f&255)<<2)+24|0,d|0,4,0)}ea(e>>0|0,0|0,1,0)}ea(c|0,0|0,4,0)}g=g+1|0;if((g|0)==10)break;else h=h+20|0}return}function at(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,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;x=i;i=i+32|0;if((i|0)>=(j|0))ba();v=x;e=d&255;o=34-(e&1)|0;r=da(b|0,4,0,0)|0|0;if(!(da(a+23>>0|0,1,0,0)|0))d=e&253;if((r|0)>0){f=(d&2)==0;g=a+8|0;h=(o|0)==33;k=v+20|0;l=v+4|0;m=v+24|0;n=0;b=da(b+4|0,4,0,0)|0|0;while(1){e=da(b|0,4,0,0)|0|0;if(!f?(ea(v+0|0,0|0,4,0),ea(v+4|0,0|0,4,0),ea(v+8|0,0|0,4,0),ea(v+12|0,0|0,4,0),ea(v+16|0,0|0,4,0),ea(v+20|0,0|0,4,0),ea(k>>0|0,1|0,1,0),ea(v|0,78|0,4,0),ea(l|0,79|0,4,0),ea(m|0,0|0,4,0),qs(v,e)|0,(da(k>>0|0,1,0,0)|0|0)!=0):0)Ft(a,e,n+c|0,0);else w=8;do if((w|0)==8?(w=0,p=n+c|0,q=hs(a,e,p)|0,(q|0)!=(p|0)):0){d=da(g|0,4,0,0)|0|0;if(h){if(!(da((da(d|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))e=(da(d+4|0,4,0,0)|0|0)+(((da(d+32|0,4,0,0)|0|0)+-1|0)*20|0)|0;else e=29120;if(((da(e>>0|0,1,0,0)|0|0)==33?(s=e+12|0,t=da(s|0,4,0,0)|0|0,((da(e+4|0,4,0,0)|0|0)+1+t|0)==(q|0)):0)?(u=t+1|0,(u+(da(e+8|0,4,0,0)|0|0)|0)==(p|0)):0){ea(s|0,u|0,4,0);break}}vh(d,o,q,p,0)|0}while(0);n=n+1|0;if((n|0)==(r|0))break;else b=b+20|0}}i=x;return}function bt(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,k=0;k=da(a+8|0,4,0,0)|0|0;g=a+116|0;j=0;h=g;while(1){i=da(h+12|0,4,0,0)|0|0;if(((i|0)>0?(da(h|0,4,0,0)|0|0)==(d|0):0)?(da(h+4|0,2,0,0)|0|0)==(c|0):0){e=i;j=5;break}j=j+1|0;if((j|0)>=10){j=10;break}else h=h+20|0}do if((j|0)==5){k=a+104|0;f=da(k|0,4,0,0)|0|0;ea(k|0,f+1|0,4,0);ea(h+16|0,f|0,4,0);h=0;while(1){if((da(g+12|0,4,0,0)|0|0)==(e|0))ea(g+6>>0|0,0|0,1,0);h=h+1|0;if((h|0)==10)break;else g=g+20|0}}else if((j|0)==10){mt(k,b,d,c,e);if(!(f<<24>>24)){Ru(a,d,c,e);break}g=da(k+4|0,4,0,0)|0|0;if(g)ea(g+(((da(k+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,f|0,1,0)}while(0);return e|0}function ct(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;c=b+-1+c|0;e=a+19|0;i=0;j=a+116|0;while(1){f=j+12|0;g=da(f|0,4,0,0)|0|0;if(!((g|0)<(b|0)|(g|0)>(c|0))){h=j+6|0;if(da(h>>0|0,1,0,0)|0){d=da(e>>0|0,1,0,0)|0|0;if((d&255)<8){ea(e>>0|0,d+1<<24>>24|0,1,0);ea(a+((d&255)<<2)+24|0,g|0,4,0)}ea(h>>0|0,0|0,1,0)}ea(f|0,0|0,4,0)}i=i+1|0;if((i|0)==10)break;else j=j+20|0}return}function dt(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,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;x=da(a+8|0,4,0,0)|0|0;ea(b>>0|0,1|0,1,0);p=b+44|0;if((da(p|0,4,0,0)|0|0)>0){q=x+4|0;s=a+56|0;t=a+60|0;l=x+24|0;m=x+32|0;n=b+36|0;o=a+72|0;u=0;v=da(b+40|0,4,0,0)|0|0;c=0;while(1){h=da((da(v|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;if(!h){d=0;f=0}else{d=da(h|0,4,0,0)|0|0;f=da(t|0,4,0,0)|0|0;e=da(s|0,4,0,0)|0|0;if((e|0)<(d|0)){f=da(o|0,4,0,0)|0|0;ea(o|0,f+d|0,4,0);f=f+1|0}else{ea(t|0,f+d|0,4,0);ea(s|0,e-d|0,4,0)}at(a,h,f,1)}e=v+12|0;if((da(e|0,4,0,0)|0|0)>-1){k=ws(x)|0;yu(a,da(e|0,4,0,0)|0|0,k,1,f)}else k=0;j=v+4|0;e=da(j|0,4,0,0)|0|0;if((da(e+2|0,2,0,0)|0)&32){if((d|0)>0){i=0;h=da(h+4|0,4,0,0)|0|0;while(1){e=bu(a,da(h|0,4,0,0)|0|0)|0;i=i+1|0;g=(e|0)!=0;if(!((i|0)<(d|0)&(g^1)))break;else h=h+20|0}if(!g)w=15}else w=15;if((w|0)==15){w=0;e=da((da(a|0,4,0,0)|0|0)+8|0,4,0,0)|0|0}if(!c)if(!(da(n|0,4,0,0)|0))c=0;else{c=(da(o|0,4,0,0)|0|0)+1|0;ea(o|0,c|0,4,0)}wh(x,vh(x,36,c,0,0)|0,e,-4);e=da(j|0,4,0,0)|0|0}wh(x,vh(x,10,0,f,da(v+8|0,4,0,0)|0|0)|0,e,-5);e=da(q|0,4,0,0)|0|0;if(e)ea(e+(((da(m|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,d|0,1,0);ct(a,f,d);ct(a,f,d);if((da(s|0,4,0,0)|0|0)<(d|0)){ea(s|0,d|0,4,0);ea(t|0,f|0,4,0)}if(k){f=da(l|0,4,0,0)|0|0;e=~k;if((k|0)<0?(r=da(f+112|0,4,0,0)|0|0,(r|0)!=0):0)ea(r+(e<<2)|0,da(m|0,4,0,0)|0|0,4,0);ea(f+88|0,(da(m|0,4,0,0)|0|0)+-1|0,4,0);$s(a)}u=u+1|0;if((u|0)>=(da(p|0,4,0,0)|0|0))break;else v=v+16|0}if(c)f=vh(x,45,c,0,0)|0;else f=0}else f=0;$s(a);c=b+36|0;if((da(c|0,4,0,0)|0|0)>0){d=0;e=da(b+28|0,4,0,0)|0|0;while(1){Qq(a,da(e+20|0,4,0,0)|0|0,da(e+16|0,4,0,0)|0|0);d=d+1|0;if((d|0)>=(da(c|0,4,0,0)|0|0))break;else e=e+24|0}}ea(b>>0|0,0|0,1,0);$s(a);if(f){c=da(x+32|0,4,0,0)|0|0;if(c>>>0>f>>>0)ea((da(x+4|0,4,0,0)|0|0)+(f*20|0)+8|0,c|0,4,0);ea((da(x+24|0,4,0,0)|0|0)+88|0,c+-1|0,4,0)}return}function et(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=da(a+8|0,4,0,0)|0|0;d=b+44|0;if((da(d|0,4,0,0)|0|0)>0){e=0;b=da(b+40|0,4,0,0)|0|0;while(1){a=da((da(b|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;if(!a)a=0;else a=da(a|0,4,0,0)|0|0;f=da(b+4|0,4,0,0)|0|0;wh(c,vh(c,142,da(b+8|0,4,0,0)|0|0,a,0)|0,f,-5);e=e+1|0;if((e|0)>=(da(d|0,4,0,0)|0|0))break;else b=b+16|0}}return}function ft(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,k=0,l=0,m=0,n=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();k=m+4|0;l=m;h=da(a+8|0,4,0,0)|0|0;ea(k|0,0|0,4,0);ea(l|0,0|0,4,0);if(!((h|0)==0|(b|0)==0)){n=da(b>>0|0,1,0,1)|0|0;e=n^1;a:do switch(n|0){case 75:{if(d){eu(a,b,c,c);break a}f=ws(h)|0;eu(a,b,c,f);e=da(h+24|0,4,0,0)|0|0;d=~f;if((f|0)<0?(g=da(e+112|0,4,0,0)|0|0,(g|0)!=0):0)ea(g+(d<<2)|0,da(h+32|0,4,0,0)|0|0,4,0);ea(e+88|0,(da(h+32|0,4,0,0)|0|0)+-1|0,4,0);break}case 72:{ft(a,da(b+12|0,4,0,0)|0|0,c,d);h=a+100|0;ea(h|0,(da(h|0,4,0,0)|0|0)+1|0,4,0);ft(a,da(b+16|0,4,0,0)|0|0,c,d);au(a);break}case 19:{Yu(a,da(b+12|0,4,0,0)|0|0,c,d);break}case 148:case 73:{g=b+12|0;e=_t(a,da(g|0,4,0,0)|0|0,k)|0;h=b+16|0;d=_t(a,da(h|0,4,0,0)|0|0,l)|0;$t(a,da(g|0,4,0,0)|0|0,da(h|0,4,0,0)|0|0,(da(b>>0|0,1,0,0)|0|0)==73?78:79,e,d,c,128);break}case 74:{Zu(a,b,c,0,d);break}case 77:case 76:{vh(h,e,_t(a,da(b+12|0,4,0,0)|0|0,k)|0,c,0)|0;break}case 71:{g=ws(h)|0;Yu(a,da(b+12|0,4,0,0)|0|0,g,d^16);e=a+100|0;ea(e|0,(da(e|0,4,0,0)|0|0)+1|0,4,0);ft(a,da(b+16|0,4,0,0)|0|0,c,d);d=da(h+24|0,4,0,0)|0|0;e=~g;if((g|0)<0?(f=da(d+112|0,4,0,0)|0|0,(f|0)!=0):0)ea(f+(e<<2)|0,da(h+32|0,4,0,0)|0|0,4,0);ea(d+88|0,(da(h+32|0,4,0,0)|0|0)+-1|0,4,0);au(a);break}case 79:case 78:case 83:case 80:case 81:case 82:{f=b+12|0;g=_t(a,da(f|0,4,0,0)|0|0,k)|0;b=b+16|0;h=_t(a,da(b|0,4,0,0)|0|0,l)|0;$t(a,da(f|0,4,0,0)|0|0,da(b|0,4,0,0)|0|0,e,g,h,c,d);break}default:{if(lu(b)|0){vh(h,16,0,c,0)|0;break a}if(!(_u(b)|0))vh(h,46,_t(a,b,k)|0,c,(d|0)!=0&1)|0}}while(0);Zr(a,da(k|0,4,0,0)|0|0);Zr(a,da(l|0,4,0,0)|0|0)}i=m;return}function gt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;e=da(a+8|0,4,0,0)|0|0;f=b+44|0;if((da(f|0,4,0,0)|0|0)!=(0-(da(b+32|0,4,0,0)|0|0)|0)?(vh(e,28,0,da(b+16|0,4,0,0)|0|0,da(b+20|0,4,0,0)|0|0)|0,(da(f|0,4,0,0)|0|0)>0):0){g=0;d=da(b+40|0,4,0,0)|0|0;while(1){b=d+12|0;do if((da(b|0,4,0,0)|0|0)>-1){c=da((da(d|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;if((c|0)!=0?(da(c|0,4,0,0)|0|0)==1:0){c=Ts(a,c,0,0)|0;wh(e,vh(e,57,da(b|0,4,0,0)|0|0,0,0)|0,c,-6);break}sh(a,34944,h);ea(b|0,-1|0,4,0)}while(0);g=g+1|0;if((g|0)>=(da(f|0,4,0,0)|0|0))break;else d=d+16|0}}i=k;return}function ht(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)>0){d=vh(a,138,b,0,-1)|0;vh(a,16,0,c,0)|0;b=da(a+32|0,4,0,0)|0|0;if(b>>>0>d>>>0)ea((da(a+4|0,4,0,0)|0|0)+(d*20|0)+8|0,b|0,4,0);ea((da(a+24|0,4,0,0)|0|0)+88|0,b+-1|0,4,0)}return}function it(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if(((da((da(a|0,4,0,0)|0|0)+24|0,4,0,0)|0)&8388608|0)!=0?(f=zs(a,b)|0,(f|0)!=0):0){a=0;b=f;do{if((da(b+8>>0|0,1,0,1)|0|0|0)==(c|0)?($u(da(b+16|0,4,0,0)|0|0,d)|0)!=0:0)a=da(b+9>>0|0,1,0,1)|0|0|a;b=da(b+32|0,4,0,0)|0|0}while((b|0)!=0)}else{a=0;f=0}if(e)ea(e|0,a|0,4,0);return ((a|0)!=0?f:0)|0}function jt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;f=da(b+44>>0|0,1,0,0)|0|0;if(f&16){e=da(a|0,4,0,0)|0|0;d=b+60|0;while(1){d=da(d|0,4,0,0)|0|0;if((da(d|0,4,0,0)|0|0)==(e|0))break;else d=d+24|0}if(!(da((da(da(d+4|0,4,0,0)|0|0,4,0,0)|0|0)+52|0,4,0,0)|0))e=8;else e=5}else e=5;do if((e|0)==5){if(((f&1)!=0?((da((da(a|0,4,0,0)|0|0)+24|0,4,0,0)|0)&2048|0)==0:0)?(da(a+18>>0|0,1,0,0)|0|0)==0:0){e=8;break}if((c|0)==0?(da(b+12|0,4,0,0)|0|0)!=0:0){ea(g|0,da(b|0,4,0,0)|0|0,4,0);sh(a,34456,g);d=1}else d=0}while(0);if((e|0)==8){ea(g|0,da(b|0,4,0,0)|0|0,4,0);sh(a,34424,g);d=1}i=h;return d|0}function kt(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,k=0,l=0,m=0,n=0;n=i;i=i+32|0;if((i|0)>=(j|0))ba();m=n;l=da(a|0,4,0,0)|0|0;f=da(b+68|0,4,0,0)|0|0;a:do if(f){e=da(l+20|0,4,0,0)|0|0;if((e|0)>0){h=da(l+16|0,4,0,0)|0|0;k=0;while(1){g=k+1|0;if((da(h+(k<<4)+12|0,4,0,0)|0|0)==(f|0)){g=k;break a}if((g|0)<(e|0))k=g;else break}}else g=0}else g=-1e6;while(0);e=Lr(l,c,0,0)|0;f=or(l,0,0,0)|0;if(f){ea(f+16|0,jh(l,da(b|0,4,0,0)|0|0)|0|0,4,0);ea(f+12|0,jh(l,da((da(l+16|0,4,0,0)|0|0)+(g<<4)|0,4,0,0)|0|0)|0|0,4,0)}c=jr(a,0,f,e,0,0,0,0,0,0)|0;ea(m>>0|0,12|0,1,0);ea(m+4|0,d|0,4,0);ea(m+1>>0|0,0|0,1,0);ea(m+8|0,0|0,4,0);ea(m+12|0,0|0,4,0);hr(a,c,m)|0;Lk(l,c,1);i=n;return}function lt(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,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n+4|0;f=n;a:do if((da((da(a|0,4,0,0)|0|0)+24|0,4,0,0)|0)&524288){if(!c){e=an((da(b+68|0,4,0,0)|0|0)+56|0,da(b|0,4,0,0)|0|0,f)|0;if((e|0)!=0?(da(e+8|0,4,0,0)|0|0)!=0:0)e=1;else e=(da(b+16|0,4,0,0)|0|0)!=0;e=e&1;break}a=da(b+16|0,4,0,0)|0|0;if(a){k=b+36|0;l=(d|0)!=0;do{f=da(a+20|0,4,0,0)|0|0;if((f|0)>0){h=0;do{g=da(a+(h<<3)+36|0,4,0,0)|0|0;if((da(c+(g<<2)|0,4,0,0)|0|0)>-1){e=1;break a}h=h+1|0;if((g|0)==(da(k|0,2,0,0)|0|0)&l){e=1;break a}}while((h|0)<(f|0))}a=da(a+4|0,4,0,0)|0|0}while((a|0)!=0)}f=an((da(b+68|0,4,0,0)|0|0)+56|0,da(b|0,4,0,0)|0|0,m)|0;if((f|0)!=0?(e=da(f+8|0,4,0,0)|0|0,(e|0)!=0):0)while(1){if(av(b,e,c,d)|0){e=1;break a}e=da(e+12|0,4,0,0)|0|0;if(!e){e=0;break}}else e=0}else e=0;while(0);i=n;return e|0}function mt(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;if((d|0)>=0?(da(b+36|0,2,0,0)|0|0)!=(d|0):0){f=da(b+44>>0|0,1,0,1)|0|0;j=(f&16|0)!=0?150:47;if(!(f&32))f=d;else{f=da(b+8|0,4,0,0)|0|0;a:do if(!f)f=0;else while(1){if(((da(f+51>>0|0,1,0,0)|0)&3)==2)break a;f=da(f+20|0,4,0,0)|0|0;if(!f){f=0;break}}while(0);i=d&65535;g=da(f+48|0,2,0,0)|0|0;b:do if(!(g<<16>>16))f=-1;else{h=da(f+4|0,4,0,0)|0|0;g=g&65535;f=0;while(1){if((da(h+(f<<1)|0,2,0,0)|0|0)==i<<16>>16)break b;f=f+1|0;if((f|0)>=(g|0)){f=-1;break}}}while(0);f=f<<16>>16}vh(a,j,c,f,e)|0}else vh(a,103,c,e,0)|0;if((d|0)>-1)Mt(a,b,d,e);return}function nt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=b+16|0;c=da(f|0,4,0,0)|0|0;do if(!c){d=da(b+12|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;e=b+48|0;a=pg((da(e|0,2,0,1)|0|0)+1|0,0)|0;ea(f|0,a|0,4,0);if(!a){ea(c+65>>0|0,1|0,1,0);c=0;break}if(!(da(e|0,2,0,0)|0))c=0;else{b=b+4|0;d=d+4|0;c=0;do{a=da((da(b|0,4,0,0)|0|0)+(c<<1)|0,2,0,0)|0|0;if(a<<16>>16<0)a=68;else a=da((da(d|0,4,0,0)|0|0)+((a<<16>>16)*24|0)+21>>0|0,1,0,0)|0|0;ea((da(f|0,4,0,0)|0|0)+c>>0|0,a|0,1,0);c=c+1|0}while((c|0)<(da(e|0,2,0,1)|0|0));a=da(f|0,4,0,0)|0|0}ea(a+c>>0|0,0|0,1,0);c=da(f|0,4,0,0)|0|0}while(0);return c|0}function ot(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;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=b+44|0;if(!((da(p>>0|0,1,0,0)|0)&16)){i=da(a|0,4,0,0)|0|0;k=da(b+68|0,4,0,0)|0|0;a:do if(k){l=da(i+20|0,4,0,0)|0|0;if((l|0)>0){i=da(i+16|0,4,0,0)|0|0;j=0;while(1){h=j+1|0;if((da(i+(j<<4)+12|0,4,0,0)|0|0)==(k|0))break a;if((h|0)<(l|0))j=h;else{j=h;break}}}else j=0}else j=-1e6;while(0);o=Nq(a)|0;if((d|0)<0)d=da(a+68|0,4,0,0)|0|0;i=d+1|0;n=(f|0)!=0;if(n)ea(f|0,d|0,4,0);do if(!((da(p>>0|0,1,0,0)|0)&32)){if((e|0)!=0?(da(e>>0|0,1,0,0)|0|0)==0:0){m=15;break}Pq(a,d,j,b,c)}else m=15;while(0);if((m|0)==15)fs(a,j,da(b+32|0,4,0,0)|0|0,(c|0)==55&1,da(b|0,4,0,0)|0|0);if(g)ea(g|0,i|0,4,0);d=da(b+8|0,4,0,0)|0|0;if(!d)h=0;else{k=(e|0)==0;b=a+8|0;l=i;h=0;while(1){i=l+1|0;if(((da(d+51>>0|0,1,0,0)|0)&3)==2?((da(p>>0|0,1,0,0)|0)&32)!=0&n:0)ea(f|0,l|0,4,0);h=h+1|0;if(!(!k?(da(e+h>>0|0,1,0,0)|0|0)==0:0)){vh(o,c,l,da(d+40|0,4,0,0)|0|0,j)|0;m=da(b|0,4,0,0)|0|0;wh(m,-1,gs(a,d)|0,-6)}d=da(d+20|0,4,0,0)|0|0;if(!d)break;else l=i}}d=a+68|0;if((i|0)>(da(d|0,4,0,0)|0|0))ea(d|0,i|0,4,0)}else h=0;return h|0}function pt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=da(a+408|0,4,0,0)|0|0;f=(f|0)==0?a:f;e=f+452|0;a=da(e|0,4,0,0)|0|0;c=da(f+520|0,4,0,0)|0|0;a:do if((a|0)>0){d=0;while(1){if((da(c+(d<<2)|0,4,0,0)|0|0)==(b|0))break a;d=d+1|0;if((d|0)>=(a|0)){g=4;break}}}else g=4;while(0);do if((g|0)==4){a=Wc(c,(a<<2)+4|0)|0;if(!a){ea((da(f|0,4,0,0)|0|0)+65>>0|0,1|0,1,0);break}else{ea(f+520|0,a|0,4,0);c=da(e|0,4,0,0)|0|0;ea(e|0,c+1|0,4,0);ea(a+(c<<2)|0,b|0,4,0);break}}while(0);return}function qt(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=da(a+8|0,4,0,0)|0|0;u=ws(t)|0;r=((da(b+44>>0|0,1,0,0)|0)&32)>>>4^70;if(!(j<<24>>24))wh(t,vh(t,r,d,u,f)|0,g<<16>>16,-14);if((lt(a,b,0,0)|0)!=0|(c|0)!=0){n=i&255;o=ut(a,c,0,0,3,b,n)|0;o=tt(a,b)|0|o;l=a+72|0;k=da(l|0,4,0,0)|0|0;j=k+1|0;p=b+38|0;ea(l|0,j+(da(p|0,2,0,0)|0|0)|0,4,0);vh(t,33,f,j,0)|0;l=da(p|0,2,0,0)|0|0;if(l<<16>>16>0){q=(o|0)==-1;m=k+2|0;k=0;do{if(!q){if((k|0)<32?(1<>16|0))}q=t+32|0;p=da(q|0,4,0,0)|0|0;wt(a,c,109,0,1,b,j,n,u);if((p|0)<(da(q|0,4,0,0)|0|0))wh(t,vh(t,r,d,u,f)|0,g<<16>>16,-14);yt(a,b,j,0,0,0)}else j=0;if((da(b+12|0,4,0,0)|0|0)==0?(zt(a,b,d,e,0),vh(t,95,d,h<<24>>24!=0&1,0)|0,h<<24>>24!=0):0)wh(t,-1,da(b|0,4,0,0)|0|0,0);Bt(a,b,0,j,0,0);wt(a,c,109,0,2,b,j,i&255,u);k=da(t+24|0,4,0,0)|0|0;j=~u;if((u|0)<0?(v=da(k+112|0,4,0,0)|0|0,(v|0)!=0):0)ea(v+(j<<2)|0,da(t+32|0,4,0,0)|0|0,4,0);ea(k+88|0,(da(t+32|0,4,0,0)|0|0)+-1|0,4,0);return}function rt(a){a=a|0;var 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;h=da(a+8|0,4,0,0)|0|0;b=da(a+404|0,4,0,0)|0|0;if(b){j=(da(a|0,4,0,0)|0|0)+16|0;k=a+19|0;l=a+72|0;m=h+32|0;n=h+4|0;i=h+24|0;do{d=da(b+8|0,4,0,0)|0|0;e=da(j|0,4,0,0)|0|0;g=da(b+12|0,4,0,0)|0|0;c=da(k>>0|0,1,0,0)|0|0;if(!(c<<24>>24)){f=(da(l|0,4,0,0)|0|0)+1|0;ea(l|0,f|0,4,0)}else{f=c+-1<<24>>24;ea(k>>0|0,f|0,1,0);f=da(a+((f&255)<<2)+24|0,4,0,0)|0|0}Pq(a,0,d,da((da(e+(d<<4)+12|0,4,0,0)|0|0)+72|0,4,0,0)|0|0,55);e=g+1|0;d=vh(h,77,e,0,0)|0;vh(h,74,0,e,0)|0;c=da(m|0,4,0,0)|0|0;if(c>>>0>d>>>0)ea((da(n|0,4,0,0)|0|0)+(d*20|0)+8|0,c|0,4,0);ea((da(i|0,4,0,0)|0|0)+88|0,c+-1|0,4,0);vh(h,49,g+-1|0,2,f)|0;vh(h,75,0,f,e)|0;c=da(n|0,4,0,0)|0|0;if(c)ea(c+(((da(m|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,8|0,1,0);vh(h,61,0,0,0)|0;Zr(a,f);b=da(b|0,4,0,0)|0|0}while((b|0)!=0)}return}function st(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;ea(e|0,c|0,4,0);if(!c)d=0;else{d=c;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;d=d-c&1073741823}ea(e+4|0,d|0,4,0);d=mr(a,b,e,0)|0;i=f;return d|0}function tt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();g=m+4|0;l=m;if((da((da(a|0,4,0,0)|0|0)+24|0,4,0,0)|0)&524288){d=da(b+16|0,4,0,0)|0|0;if(!d)c=0;else{c=0;do{e=da(d+20|0,4,0,0)|0|0;if((e|0)>0){f=0;do{n=da(d+(f<<3)+36|0,4,0,0)|0|0;c=((n|0)>31?-1:1<>16!=0):0){g=k&65535;f=da(d+4|0,4,0,0)|0|0;e=0;do{d=da(f+(e<<1)|0,2,0,0)|0|0;if(d<<16>>16>31)d=-1;else d=1<<(d<<16>>16);c=d|c;e=e+1|0}while((e|0)<(g|0))}h=da(h+12|0,4,0,0)|0|0}while((h|0)!=0)}else c=0;i=m;return c|0}function ut(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;var h=0,i=0,j=0;i=(c|0)!=0?110:109;if(!b)h=0;else{h=0;do{if((((da(b+8>>0|0,1,0,1)|0|0|0)==(i|0)?((da(b+9>>0|0,1,0,1)|0|0)&e|0)!=0:0)?($u(da(b+16|0,4,0,0)|0|0,c)|0)!=0:0)?(j=bv(a,b,f,g)|0,(j|0)!=0):0)h=da(j+(d<<2)+16|0,4,0,0)|0|h;b=da(b+32|0,4,0,0)|0|0}while((b|0)!=0)}return h|0}function vt(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=b+20|0;d=da(i|0,4,0,0)|0|0;do if(!d){f=da(a|0,4,0,0)|0|0;h=b+38|0;e=(da(h|0,2,0,0)|0|0)+1|0;e=pg(e,((e|0)<0)<<31>>31)|0;if(!e){ea(f+65>>0|0,1|0,1,0);break}if((da(h|0,2,0,0)|0|0)>0){f=b+4|0;d=0;do{ea(e+d>>0|0,da((da(f|0,4,0,0)|0|0)+(d*24|0)+21>>0|0,1,0,0)|0|0|0,1,0);d=d+1|0}while((d|0)<(da(h|0,2,0,0)|0|0))}else d=0;do{ea(e+d>>0|0,0|0,1,0);if((d|0)<=0)break;d=d+-1|0}while((da(e+d>>0|0,1,0,0)|0|0)==65);ea(i|0,e|0,4,0);g=10}else{e=d;g=10}while(0);do if((g|0)==10){d=e;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;d=d-e&1073741823;if(d)if(!c){wh(a,-1,e,d);break}else{wh(a,vh(a,48,c,d,0)|0,e,d);break}}while(0);return}function wt(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;if(b)do{if(((da(b+8>>0|0,1,0,1)|0|0|0)==(c|0)?(da(b+9>>0|0,1,0,1)|0|0|0)==(e|0):0)?($u(da(b+16|0,4,0,0)|0|0,d)|0)!=0:0)cv(a,b,f,g,h,i);b=da(b+32|0,4,0,0)|0|0}while((b|0)!=0);return}function xt(a,b,c,d,e,f,g,h,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,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,ca=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=i;i=i+16|0;if((i|0)>=(j|0))ba();E=ja;aa=(g|0)!=0;J=da(a|0,4,0,0)|0|0;ia=Nq(a)|0;w=da(b+38|0,2,0,0)|0|0;ga=b+44|0;if(!((da(ga>>0|0,1,0,0)|0)&32)){$=1;_=0}else{q=b+8|0;while(1){q=da(q|0,4,0,0)|0|0;if(((da(q+51>>0|0,1,0,0)|0)&3)==2)break;else q=q+20|0}$=da(q+46|0,2,0,1)|0|0;_=q}if(w<<16>>16>0){s=b+36|0;r=b+4|0;q=k<<24>>24==10;p=a+408|0;o=f+1|0;x=ia+4|0;y=ia+32|0;z=ia+24|0;A=k&255;u=w<<16>>16;t=0;do{a:do if((t|0)!=(da(s|0,2,0,0)|0|0)?(B=da(r|0,4,0,0)|0|0,C=da(B+(t*24|0)+20>>0|0,1,0,0)|0|0,D=C&255,C<<24>>24!=0):0){if(q)if(C<<24>>24==10)ha=14;else{w=D;ha=11}else{w=A;ha=11}do if((ha|0)==11){ha=0;if((w|0)==5)w=(da(B+(t*24|0)+4|0,4,0,0)|0|0)==0?2:5;if((w|0)==3|(w|0)==1)break;else if((w|0)==2){ha=14;break}else if((w|0)==4){vh(ia,76,o+t|0,l,0)|0;break a}v=o+t|0;w=vh(ia,77,v,0,0)|0;Qq(a,da((da(r|0,4,0,0)|0|0)+(t*24|0)+4|0,4,0,0)|0|0,v);v=da(y|0,4,0,0)|0|0;if(v>>>0>w>>>0)ea((da(x|0,4,0,0)|0|0)+(w*20|0)+8|0,v|0,4,0);ea((da(z|0,4,0,0)|0|0)+88|0,v+-1|0,4,0);break a}while(0);if((ha|0)==14){ha=0;w=da(p|0,4,0,0)|0|0;ea(((w|0)==0?a:w)+21>>0|0,1|0,1,0);w=2}Z=da(B+(t*24|0)|0,4,0,0)|0|0;ea(E|0,da(b|0,4,0,0)|0|0,4,0);ea(E+4|0,Z|0,4,0);Z=th(J,27824,E)|0;wh(ia,vh(ia,23,1299,w,o+t|0)|0,Z,-1);w=da(x|0,4,0,0)|0|0;if(w)ea(w+(((da(y|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,1|0,1,0)}while(0);t=t+1|0}while((t|0)!=(u|0))}t=da(b+24|0,4,0,0)|0|0;if(((t|0)!=0?((da(J+24|0,4,0,0)|0)&8192|0)==0:0)?(ea(a+92|0,f+1|0,4,0),(da(t|0,4,0,0)|0|0)>0):0){s=t+4|0;o=ia+24|0;u=ia+32|0;w=0;q=k<<24>>24==10?2:k&255;while(1){v=ws(ia)|0;Yu(a,da((da(s|0,4,0,0)|0|0)+(w*20|0)|0,4,0,0)|0|0,v,16);if((q|0)==4){vh(ia,16,0,l,0)|0;p=4}else{r=da((da(s|0,4,0,0)|0|0)+(w*20|0)+4|0,4,0,0)|0|0;if(!r)r=da(b|0,4,0,0)|0|0;p=(q|0)==5?2:q;ys(a,275,p,r,0,3)}r=da(o|0,4,0,0)|0|0;q=~v;if((v|0)<0?(F=da(r+112|0,4,0,0)|0|0,(F|0)!=0):0)ea(F+(q<<2)|0,da(u|0,4,0,0)|0|0,4,0);ea(r+88|0,(da(u|0,4,0,0)|0|0)+-1|0,4,0);w=w+1|0;if((w|0)>=(da(t|0,4,0,0)|0|0))break;else q=p}}if(h<<24>>24!=0&(_|0)==0){s=ws(ia)|0;o=da(b+45>>0|0,1,0,0)|0|0;if(k<<24>>24==10)o=o<<24>>24==10?2:o&255;else o=k&255;if(aa?(vh(ia,79,f,s,g)|0,G=da(ia+4|0,4,0,0)|0|0,(G|0)!=0):0)ea(G+(((da(ia+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,-112|0,1,0);b:do if(!((o|0)!=5|k<<24>>24==5)?(n=da(b+8|0,4,0,0)|0|0,(n|0)!=0):0){while(1){if(((da(n+50>>0|0,1,0,0)|0|0)+-3&255)<2)break;n=da(n+20|0,4,0,0)|0|0;if(!n){t=0;break b}}t=vh(ia,16,0,0,0)|0}else t=0;while(0);vh(ia,70,d,s,f)|0;c:do switch(o|0){case 4:{vh(ia,16,0,l,0)|0;o=0;break}case 3:case 2:case 1:{ha=49;break}case 5:{if(((da(J+24|0,4,0,0)|0)&262144|0)!=0?(H=it(a,b,109,0,0)|0,(H|0)!=0):0)o=H;else if(!(lt(a,b,0,0)|0)){if(!(da(b+8|0,4,0,0)|0)){o=1;break c}o=da(a+408|0,4,0,0)|0|0;ea(((o|0)==0?a:o)+20>>0|0,1|0,1,0);zt(a,b,d,e,0);o=1;break c}else o=0;Z=da(a+408|0,4,0,0)|0|0;ea(((Z|0)==0?a:Z)+20>>0|0,1|0,1,0);qt(a,b,o,d,e,f,1,0,5,1);o=1;break}default:{o=2;ha=49}}while(0);if((ha|0)==49){Et(a,o,b);o=0}r=ia+24|0;q=da(r|0,4,0,0)|0|0;p=~s;if((s|0)<0?(I=da(q+112|0,4,0,0)|0|0,(I|0)!=0):0)ea(I+(p<<2)|0,da(ia+32|0,4,0,0)|0|0,4,0);n=ia+32|0;ea(q+88|0,(da(n|0,4,0,0)|0|0)+-1|0,4,0);if(!t){p=0;t=0}else{p=vh(ia,16,0,0,0)|0;n=da(n|0,4,0,0)|0|0;if(n>>>0>t>>>0)ea((da(ia+4|0,4,0,0)|0|0)+(t*20|0)+8|0,n|0,4,0);ea((da(r|0,4,0,0)|0|0)+88|0,n+-1|0,4,0)}}else{p=0;t=0;o=0}w=da(b+8|0,4,0,0)|0|0;if(w){W=f+1|0;X=a+60|0;Y=a+56|0;Z=a+72|0;M=h<<24>>24==0;N=ia+24|0;O=ia+32|0;P=k<<24>>24==10;Q=ia+4|0;R=_+46|0;S=_+32|0;T=_+4|0;U=g+1|0;V=a+408|0;K=J+24|0;L=$&65535;s=k&255;r=b+36|0;q=a+92|0;A=0;n=0;v=-1;while(1){H=c+(n<<2)|0;do if(da(H|0,4,0,0)|0){if(!(A<<24>>24)){vt(ia,b,W);A=1}I=n+e|0;k=ws(ia)|0;G=w+36|0;if(da(G|0,4,0,0)|0){vh(ia,28,0,da(H|0,4,0,0)|0|0,0)|0;ea(q|0,W|0,4,0);ft(a,da(G|0,4,0,0)|0|0,k,16);ea(q|0,0|0,4,0)}J=w+48|0;B=da(J|0,2,0,0)|0|0;E=B&65535;D=da(X|0,4,0,0)|0|0;C=da(Y|0,4,0,0)|0|0;if((C|0)<(E|0)){h=da(Z|0,4,0,0)|0|0;ea(Z|0,h+E|0,4,0);h=h+1|0}else{ea(X|0,D+E|0,4,0);ea(Y|0,C-E|0,4,0);h=D}if(!(B<<16>>16))F=v;else{z=w+4|0;F=0;do{E=da((da(z|0,4,0,0)|0|0)+(F<<1)|0,2,0,0)|0|0;C=E<<16>>16;if(E<<16>>16>=0?E<<16>>16!=(da(r|0,2,0,0)|0|0):0){D=F+h|0;E=W+C|0;ha=81}else{E=F+h|0;if((v|0)!=(E|0)){D=E;v=(da(G|0,4,0,0)|0|0)==0?E:-1;E=f;ha=81}}if((ha|0)==81){ha=0;vh(ia,34,E,D,0)|0;B=da(J|0,2,0,0)|0|0}F=F+1|0;E=B&65535}while((F|0)<(E|0));F=v}vh(ia,49,h,E,da(H|0,4,0,0)|0|0)|0;ct(a,h,da(J|0,2,0,1)|0|0);G=(_|0)==(w|0);if(aa&G&M){v=da(N|0,4,0,0)|0|0;u=~k;if((k|0)<0?(ca=da(v+112|0,4,0,0)|0|0,(ca|0)!=0):0)ea(ca+(u<<2)|0,da(O|0,4,0,0)|0|0,4,0);ea(v+88|0,(da(O|0,4,0,0)|0|0)+-1|0,4,0);v=F;break}z=da(w+50>>0|0,1,0,0)|0|0;y=z&255;if(!(z<<24>>24)){v=da(J|0,2,0,1)|0|0;ct(a,h,v);if((da(Y|0,4,0,0)|0|0)<(v|0)){ea(Y|0,v|0,4,0);ea(X|0,h|0,4,0)}v=da(N|0,4,0,0)|0|0;u=~k;if((k|0)<0?(fa=da(v+112|0,4,0,0)|0|0,(fa|0)!=0):0)ea(fa+(u<<2)|0,da(O|0,4,0,0)|0|0,4,0);ea(v+88|0,(da(O|0,4,0,0)|0|0)+-1|0,4,0);v=F;break}if(P)H=z<<24>>24==10?2:y;else H=s;v=da(w+46|0,2,0,1)|0|0;wh(ia,vh(ia,67,I,k,h)|0,v,-14);do if(!G){E=da(X|0,4,0,0)|0|0;D=da(Y|0,4,0,0)|0|0;if((D|0)<($|0)){E=da(Z|0,4,0,0)|0|0;ea(Z|0,E+$|0,4,0);E=E+1|0;break}else{ea(X|0,E+$|0,4,0);ea(Y|0,D-$|0,4,0);break}}else E=h;while(0);do if(aa|(H|0)==5){if(!((da(ga>>0|0,1,0,0)|0)&32)){vh(ia,112,I,E,0)|0;if(!aa)break;vh(ia,79,E,k,g)|0;z=da(Q|0,4,0,0)|0|0;if(!z)break;ea(z+(((da(O|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,-112|0,1,0);break}do if(!G){if(!(da(R|0,2,0,0)|0))break;y=w+4|0;x=0;do{B=da((da(T|0,4,0,0)|0|0)+(x<<1)|0,2,0,0)|0|0;D=da(J|0,2,0,0)|0|0;d:do if(!(D<<16>>16))D=-1;else{z=da(y|0,4,0,0)|0|0;C=D&65535;D=0;while(1){if((da(z+(D<<1)|0,2,0,0)|0|0)==B<<16>>16)break d;D=D+1|0;if((D|0)>=(C|0)){D=-1;break}}}while(0);vh(ia,47,I,D<<16>>16,x+E|0)|0;x=x+1|0}while((x|0)<(da(R|0,2,0,1)|0|0))}while(0);if(!aa)break;y=((da(w+51>>0|0,1,0,0)|0)&3)==2?h:E;D=da(R|0,2,0,0)|0|0;if(!(D<<16>>16))break;C=(D&65535)+(da(O|0,4,0,0)|0|0)|0;B=0;z=78;do{D=br(a,da((da(S|0,4,0,0)|0|0)+(B<<2)|0,4,0,0)|0|0)|0;v=(B|0)==((da(R|0,2,0,1)|0|0)+-1|0);C=v?k:C;z=v?79:z;wh(ia,vh(ia,z,U+(da((da(T|0,4,0,0)|0|0)+(B<<1)|0,2,0,0)|0|0)|0,C,B+y|0)|0,D,-4);D=da(Q|0,4,0,0)|0|0;if(D)ea(D+(((da(O|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,-112|0,1,0);B=B+1|0}while((B|0)<(da(R|0,2,0,1)|0|0))}while(0);if((H|0)==3|(H|0)==2|(H|0)==1)mu(a,H,w);else if((H|0)==4)vh(ia,16,0,l,0)|0;else{v=da(V|0,4,0,0)|0|0;ea(((v|0)==0?a:v)+20>>0|0,1|0,1,0);if(!((da(K|0,4,0,0)|0)&262144))z=0;else z=it(a,b,109,0,0)|0;qt(a,b,z,d,e,E,L,0,5,G&1);o=1}D=da(N|0,4,0,0)|0|0;C=~k;do if((k|0)<0){z=da(D+112|0,4,0,0)|0|0;if(!z)break;ea(z+(C<<2)|0,da(O|0,4,0,0)|0|0,4,0)}while(0);ea(D+88|0,(da(O|0,4,0,0)|0|0)+-1|0,4,0);v=da(J|0,2,0,1)|0|0;ct(a,h,v);if((da(Y|0,4,0,0)|0|0)<(v|0)){ea(Y|0,v|0,4,0);ea(X|0,h|0,4,0)}if((E|0)==(h|0)){v=F;break}ct(a,E,$);if((da(Y|0,4,0,0)|0|0)>=($|0)){v=F;break}ea(Y|0,$|0,4,0);ea(X|0,E|0,4,0);v=F}while(0);w=da(w+20|0,4,0,0)|0|0;if(!w)break;else n=n+1|0}}if(t){vh(ia,16,0,t+1|0,0)|0;n=da(ia+32|0,4,0,0)|0|0;if(n>>>0>p>>>0)ea((da(ia+4|0,4,0,0)|0|0)+(p*20|0)+8|0,n|0,4,0);ea((da(ia+24|0,4,0,0)|0|0)+88|0,n+-1|0,4,0)}ea(m|0,o|0,4,0);i=ja;return}function yt(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,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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=i;i=i+32|0;if((i|0)>=(j|0))ba();M=V+20|0;K=V+16|0;I=V+12|0;J=V+8|0;T=V+4|0;S=V;O=da(a|0,4,0,0)|0|0;H=a+438|0;N=da(H>>0|0,1,0,0)|0|0;R=O+24|0;a:do if((da(R|0,4,0,0)|0)&524288){L=b+68|0;g=da(L|0,4,0,0)|0|0;b:do if(g){k=da(O+20|0,4,0,0)|0|0;if((k|0)>0){h=da(O+16|0,4,0,0)|0|0;n=0;while(1){m=n+1|0;if((da(h+(n<<4)+12|0,4,0,0)|0|0)==(g|0)){m=n;break b}if((m|0)<(k|0))n=m;else break}}else m=0}else m=-1e6;while(0);G=da((da(O+16|0,4,0,0)|0|0)+(m<<4)|0,4,0,0)|0|0;t=da(b+16|0,4,0,0)|0|0;if(!t)h=b;else{v=(e|0)==0;w=N<<24>>24==0;x=O+65|0;y=c+1|0;z=a+68|0;A=(c|0)==0;B=(d|0)==0;C=a+408|0;D=b+36|0;E=O+284|0;F=(f|0)!=0;u=t;do{ea(K|0,0|0,4,0);ea(I|0,0|0,4,0);c:do if(!v){t=da(u+8|0,4,0,0)|0|0;if(cd(da(b|0,4,0,0)|0|0,t)|0){s=da(u+20|0,4,0,0)|0|0;if((s|0)>0){h=0;do{g=da(u+(h<<3)+36|0,4,0,0)|0|0;if((da(e+(g<<2)|0,4,0,0)|0|0)>-1){U=17;break c}h=h+1|0;if((g|0)==(da(D|0,2,0,0)|0|0)&F){U=17;break c}}while((h|0)<(s|0))}}else U=17}else{t=da(u+8|0,4,0,0)|0|0;U=17}while(0);do if((U|0)==17){U=0;if(!(da(H>>0|0,1,0,0)|0))r=rh(a,0,t,G)|0;else r=Zh(O,t,G)|0;t=(r|0)==0;if(!t?(Lt(a,r,u,K,I)|0)==0:0){t=da(I|0,4,0,0)|0|0;if(!t){ea(J|0,da(u+36|0,4,0,0)|0|0,4,0);t=J}h=u+20|0;if((da(h|0,4,0,0)|0|0)>0){p=da(K|0,4,0,0)|0|0;k=(p|0)==0;n=r+36|0;o=r+4|0;p=p+4|0;g=0;q=0;do{s=t+(q<<2)|0;if((da(s|0,4,0,0)|0|0)==(da(D|0,2,0,0)|0|0))ea(s|0,-1|0,4,0);if(da(E|0,4,0,0)|0){if(k)s=n;else s=(da(p|0,4,0,0)|0|0)+(q<<1)|0;g=(dv(a,da(r|0,4,0,0)|0|0,da((da(o|0,4,0,0)|0|0)+((da(s|0,2,0,0)|0|0)*24|0)|0,4,0,0)|0|0,m)|0)==2&1}q=q+1|0}while((q|0)<(da(h|0,4,0,0)|0|0));s=r}else{s=r;g=0}fs(a,m,da(r+32|0,4,0,0)|0|0,0,da(s|0,4,0,0)|0|0);ea(z|0,(da(z|0,4,0,0)|0|0)+1|0,4,0);if(!A)ev(a,m,r,da(K|0,4,0,0)|0|0,u,t,c,-1,g);d:do if(!B){s=da(C|0,4,0,0)|0|0;s=da(((s|0)==0?a:s)+528|0,4,0,0)|0|0;do if(s){s=da(s|0,4,0,0)|0|0;if((s|0)==(da(u+28|0,4,0,0)|0|0)?(da(u+25>>0|0,1,0,0)|0|0)==7:0)break d;if((s|0)!=(da(u+32|0,4,0,0)|0|0))break;if((da(u+26>>0|0,1,0,0)|0|0)==7)break d}while(0);ev(a,m,r,da(K|0,4,0,0)|0|0,u,t,d,1,g)}while(0);lg(O,da(I|0,4,0,0)|0|0);break}if(w)break a;if(da(x>>0|0,1,0,0)|0)break a;if(t){t=Nq(a)|0;s=u+20|0;h=da(s|0,4,0,0)|0|0;g=(da(t+32|0,4,0,0)|0|0)+1+h|0;if((h|0)>0){h=0;do{vh(t,76,y+(da(u+(h<<3)+36|0,4,0,0)|0|0)|0,g,0)|0;h=h+1|0}while((h|0)<(da(s|0,4,0,0)|0|0))}vh(t,134,da(u+24>>0|0,1,0,1)|0|0,-1,0)|0}}while(0);u=da(u+4|0,4,0,0)|0|0}while((u|0)!=0);h=b;g=da(L|0,4,0,0)|0|0}g=an(g+56|0,da(h|0,4,0,0)|0|0,M)|0;if((g|0)!=0?(l=da(g+8|0,4,0,0)|0|0,P=O+65|0,(l|0)!=0):0){n=(e|0)!=0;o=a+408|0;p=a+20|0;q=a+68|0;r=(d|0)==0;s=(c|0)==0;t=n&1;m=N<<24>>24==0;do{ea(T|0,0|0,4,0);ea(S|0,0|0,4,0);if(!(n?(av(b,l,e,f)|0)==0:0))U=57;do if((U|0)==57){U=0;h=l+24|0;if((((da(h>>0|0,1,0,0)|0|0)==0?((da(R|0,4,0,0)|0)&16777216|0)==0:0)?(da(o|0,4,0,0)|0|0)==0:0)?(da(p>>0|0,1,0,0)|0|0)==0:0)break;if(Lt(a,b,l,T,S)|0){if(m)break a;if(!(da(P>>0|0,1,0,0)|0))break;else break a}g=or(O,0,0,0)|0;if(g){D=da(l|0,4,0,0)|0|0;ea(g+24|0,D|0,4,0);k=g+16|0;ea(k|0,da(D|0,4,0,0)|0|0,4,0);D=D+40|0;ea(D|0,(da(D|0,2,0,0)|0|0)+1<<16>>16|0,2,0);D=da(q|0,4,0,0)|0|0;ea(q|0,D+1|0,4,0);ea(g+48|0,D|0,4,0);if(!r)fv(a,g,b,da(T|0,4,0,0)|0|0,l,da(S|0,4,0,0)|0|0,d,-1);if((!s?(Q=da(l+t+25>>0|0,1,0,0)|0|0,fv(a,g,b,da(T|0,4,0,0)|0|0,l,da(S|0,4,0,0)|0|0,c,1),(da(h>>0|0,1,0,0)|0|0)==0):0)?!(Q<<24>>24==7|Q<<24>>24==9):0){D=da(o|0,4,0,0)|0|0;ea(((D|0)==0?a:D)+21>>0|0,1|0,1,0)}ea(k|0,0|0,4,0);Co(O,g)}lg(O,da(S|0,4,0,0)|0|0)}while(0);l=da(l+12|0,4,0,0)|0|0}while((l|0)!=0)}}while(0);i=V;return}function zt(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,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();o=p;n=da(a+8|0,4,0,0)|0|0;g=da(b+8|0,4,0,0)|0|0;a:do if((da(b+44>>0|0,1,0,0)|0)&32){if(g){f=g;while(1){if(((da(f+51>>0|0,1,0,0)|0)&3)==2){m=5;break a}f=da(f+20|0,4,0,0)|0|0;if(!f){f=0;m=5;break}}}}else{f=0;m=5}while(0);if((m|0)==5?(g|0)!=0:0){k=(e|0)==0;l=0;h=0;b=-1;while(1){if(k){if((g|0)!=(f|0))m=10}else if(!((g|0)==(f|0)?1:(da(e+(l<<2)|0,4,0,0)|0|0)==0))m=10;if((m|0)==10){m=0;b=Ot(a,g,c,0,1,o,h,b)|0;vh(n,111,l+d|0,b,da((((da(g+51>>0|0,1,0,0)|0)&8)==0?g+48|0:g+46|0)|0,2,0,1)|0|0)|0;Pt(a,da(o|0,4,0,0)|0|0);h=g}g=da(g+20|0,4,0,0)|0|0;if(!g)break;else l=l+1|0}}i=p;return}function At(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|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;t=Nq(a)|0;n=da(b+8|0,4,0,0)|0|0;if(!n){k=b+44|0;m=0}else{o=(i|0)!=0;k=b+44|0;p=o?17:1;q=t+4|0;r=t+32|0;m=0;s=0;j=n;while(1){l=f+(s<<2)|0;n=da(l|0,4,0,0)|0|0;do if(n){if(da(j+36|0,4,0,0)|0){vh(t,76,n,(da(r|0,4,0,0)|0|0)+2|0,0)|0;n=da(l|0,4,0,0)|0|0}vh(t,110,s+d|0,n,0)|0;if(((da(j+51>>0|0,1,0,0)|0)&3)==2){n=((da(k>>0|0,1,0,0)|0)&32)!=0;if(n|o)m=n?p:16;else{m=1;break}}else if(o)m=16;else{m=1;break}n=da(q|0,4,0,0)|0|0;if(!n)m=1;else{ea(n+(((da(r|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,m|0,1,0);m=1}}while(0);j=da(j+20|0,4,0,0)|0|0;if(!j)break;else s=s+1|0}}if(!((da(k>>0|0,1,0,0)|0)&32)){l=e+1|0;k=a+19|0;j=da(k>>0|0,1,0,0)|0|0;if(!(j<<24>>24)){f=a+72|0;n=(da(f|0,4,0,0)|0|0)+1|0;ea(f|0,n|0,4,0)}else{n=j+-1<<24>>24;ea(k>>0|0,n|0,1,0);n=da(a+((n&255)<<2)+24|0,4,0,0)|0|0}k=b+38|0;vh(t,49,l,da(k|0,2,0,0)|0|0,n)|0;if(!(m<<24>>24))vt(t,b,0);ct(a,l,da(k|0,2,0,0)|0|0);l=a+18|0;if(!(da(l>>0|0,1,0,0)|0))j=(g|0)!=0?5:3;else j=0;if(h)j=(j&255|8)&255;if(!i)k=j;else k=(j&255|16)&255;vh(t,75,c,n,e)|0;if(!(da(l>>0|0,1,0,0)|0))wh(t,-1,da(b|0,4,0,0)|0|0,0);j=da(t+4|0,4,0,0)|0|0;if(j)ea(j+(((da(t+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,k|0,1,0)}return}function Bt(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,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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=i;i=i+64|0;if((i|0)>=(j|0))ba();O=V+52|0;N=V+48|0;S=V+8|0;R=V;Q=V+40|0;T=V+32|0;P=V+24|0;if((((da((da(a|0,4,0,0)|0|0)+24|0,4,0,0)|0)&524288|0)!=0?(M=b+68|0,g=an((da(M|0,4,0,0)|0|0)+56|0,da(b|0,4,0,0)|0|0,V+16|0)|0,(g|0)!=0):0)?(h=da(g+8|0,4,0,0)|0|0,(h|0)!=0):0){L=(e|0)==0;E=(c|0)!=0;F=E&1;G=T+4|0;H=Q+4|0;I=b+4|0;J=P+4|0;K=E?110:109;do{if(!(!L?(av(b,h,e,f)|0)==0:0)){B=da(a|0,4,0,0)|0|0;A=da(h+F+25>>0|0,1,0,0)|0|0;C=A&255;D=h+(F<<2)+28|0;c=da(D|0,4,0,0)|0|0;do if(!(A<<24>>24==0|(c|0)!=0)){ea(O|0,0|0,4,0);ea(N|0,0|0,4,0);if(!(Lt(a,b,h,O,N)|0)){o=h+20|0;if((da(o|0,4,0,0)|0|0)>0){u=34352;t=da(u|0,4,0,0)|0|0;u=da(u+4|0,4,0,0)|0|0;w=34360;v=da(w|0,4,0,0)|0|0;w=da(w+4|0,4,0,0)|0|0;x=h+36|0;z=A<<24>>24!=6&(A<<24>>24!=9|E);y=0;l=0;g=0;k=0;do{c=S;ea(c|0,t|0,4,0);ea(c+4|0,u|0,4,0);c=R;ea(c|0,v|0,4,0);ea(c+4|0,w|0,4,0);c=da(N|0,4,0,0)|0|0;if(!c)c=x;else c=c+(y<<2)|0;n=da(c|0,4,0,0)|0|0;p=da(O|0,4,0,0)|0|0;if(!p)r=34368;else r=da((da(I|0,4,0,0)|0|0)+((da((da(p+4|0,4,0,0)|0|0)+(y<<1)|0,2,0,0)|0|0)*24|0)|0,4,0,0)|0|0;ea(T|0,r|0,4,0);c=da((da((da(h|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(n*24|0)|0,4,0,0)|0|0;ea(Q|0,c|0,4,0);if(!r)q=0;else{s=r;while(1)if(!(da(s>>0|0,1,0,0)|0))break;else s=s+1|0;q=s-r&1073741823}ea(G|0,q|0,4,0);if(!c)m=0;else{r=c;while(1)if(!(da(r>>0|0,1,0,0)|0))break;else r=r+1|0;m=r-c&1073741823}ea(H|0,m|0,4,0);s=Yq(a,27,0,0,S)|0;s=Yq(a,122,s,Yq(a,27,0,0,T)|0,0)|0;k=rs(B,k,Yq(a,79,s,Yq(a,27,0,0,Q)|0,0)|0)|0;if(E){r=Yq(a,27,0,0,S)|0;r=Yq(a,122,r,Yq(a,27,0,0,T)|0,0)|0;s=Yq(a,27,0,0,R)|0;g=rs(B,g,Yq(a,73,r,Yq(a,122,s,Yq(a,27,0,0,T)|0,0)|0,0)|0)|0}if(z){do if(A<<24>>24==9){c=Yq(a,27,0,0,R)|0;c=Yq(a,122,c,Yq(a,27,0,0,T)|0,0)|0}else if(A<<24>>24==8){c=da((da((da(h|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(n*24|0)+4|0,4,0,0)|0|0;if(!c){c=Yq(a,101,0,0,0)|0;break}else{c=Lr(B,c,0,0)|0;break}}else c=Yq(a,101,0,0,0)|0;while(0);l=kr(a,l,c)|0;lr(a,l,Q,0)}y=y+1|0}while((y|0)<(da(o|0,4,0,0)|0|0));c=h}else{c=h;l=0;g=0;k=0}lg(B,da(N|0,4,0,0)|0|0);s=da(da(c|0,4,0,0)|0|0,4,0,0)|0|0;if(!s)m=0;else{c=s;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;m=c-s&1073741823}if(A<<24>>24==6){ea(P|0,s|0,4,0);ea(J|0,m|0,4,0);c=st(B,57,34376)|0;if(c)ea(c+1>>0|0,2|0,1,0);r=kr(a,0,c)|0;r=jr(a,r,or(B,0,P,0)|0,k,0,0,0,0,0,0)|0;q=0}else{r=0;q=k}n=B+250|0;o=da(n>>0|0,1,0,0)|0|0;ea(n>>0|0,0|0,1,0);c=m+77|0;p=lh(B,c,0)|0;if(p){ew(p|0,0,c|0)|0;k=p+36|0;ea(p+28|0,k|0,4,0);A=p+76|0;ea(p+48|0,A|0,4,0);ea(p+52|0,m|0,4,0);jw(A|0,s|0,m|0)|0;ea(p+56|0,Lr(B,q,1,0)|0|0,4,0);ea(p+60|0,Or(B,l,1)|0|0,4,0);ea(p+44|0,fr(B,r,1)|0|0,4,0);if(!g){c=p;g=0}else{g=Yq(a,19,g,0,0)|0;ea(p+12|0,Lr(B,g,1,0)|0|0,4,0);c=p}}else{c=0;k=0}ea(n>>0|0,o|0,1,0);Fk(B,q);Fk(B,g);Mk(B,l);Lk(B,r,1);if((da(B+65>>0|0,1,0,0)|0|0)==1){Jk(B,c);c=0;break}if((C|0)==6)ea(k>>0|0,119|0,1,0);else if((C|0)==9?!E:0)ea(k>>0|0,109|0,1,0);else U=49;if((U|0)==49){U=0;ea(k>>0|0,110|0,1,0)}ea(k+4|0,c|0,4,0);C=da(M|0,4,0,0)|0|0;ea(p+20|0,C|0,4,0);ea(p+24|0,C|0,4,0);ea(D|0,c|0,4,0);ea(p+8>>0|0,K|0,1,0)}else c=0}while(0);if(c)cv(a,c,b,d,2,0)}h=da(h+12|0,4,0,0)|0|0}while((h|0)!=0)}i=V;return}function Ct(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,k=0,l=0,m=0;c=da(a+46|0,2,0,0)|0|0;a:do if(c<<16>>16==(da(b+46|0,2,0,0)|0|0)?(da(a+50>>0|0,1,0,0)|0|0)==(da(b+50>>0|0,1,0,0)|0|0):0){if(c<<16>>16){d=da(b+4|0,4,0,0)|0|0;e=da(a+4|0,4,0,0)|0|0;f=b+28|0;g=a+28|0;h=b+32|0;i=a+32|0;m=0;do{if((da(d+(m<<1)|0,2,0,0)|0|0)!=(da(e+(m<<1)|0,2,0,0)|0|0)){c=0;break a}if((da((da(f|0,4,0,0)|0|0)+m>>0|0,1,0,0)|0|0)!=(da((da(g|0,4,0,0)|0|0)+m>>0|0,1,0,0)|0|0)){c=0;break a}j=da((da(h|0,4,0,0)|0|0)+(m<<2)|0,4,0,0)|0|0;k=da((da(i|0,4,0,0)|0|0)+(m<<2)|0,4,0,0)|0|0;l=(k|0)==0;if(!j){if(!l){c=0;break a}}else{if(l){c=0;break a}if(cd(j,k)|0){c=0;break a}}m=m+1|0}while((m|0)<(c&65535|0))}c=(Bu(da(b+36|0,4,0,0)|0|0,da(a+36|0,4,0,0)|0|0,-1)|0)==0&1}else c=0;while(0);return c|0}function Dt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;do if(!((da(c+44>>0|0,1,0,0)|0)&8))d=0;else{f=da(a+408|0,4,0,0)|0|0;f=(f|0)==0?a:f;e=f+404|0;d=da(e|0,4,0,0)|0|0;a:do if(!d)g=5;else while(1){if((da(d+4|0,4,0,0)|0|0)==(c|0))break a;d=da(d|0,4,0,0)|0|0;if(!d){g=5;break}}while(0);if((g|0)==5){d=lh(da(a|0,4,0,0)|0|0,16,0)|0;if(!d){d=0;break}ea(d|0,da(e|0,4,0,0)|0|0,4,0);ea(e|0,d|0,4,0);ea(d+4|0,c|0,4,0);ea(d+8|0,b|0,4,0);e=f+72|0;a=da(e|0,4,0,0)|0|0;ea(d+12|0,a+2|0,4,0);ea(e|0,a+3|0,4,0)}d=da(d+12|0,4,0,0)|0|0}while(0);return d|0}function Et(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;e=da(c+36|0,2,0,0)|0|0;f=da(a|0,4,0,0)|0|0;d=da(c|0,4,0,0)|0|0;if(e<<16>>16>-1){e=da((da(c+4|0,4,0,0)|0|0)+((e<<16>>16)*24|0)|0,4,0,0)|0|0;ea(g|0,d|0,4,0);ea(g+4|0,e|0,4,0);e=1555;d=th(f,27824,g)|0}else{ea(g|0,d|0,4,0);e=2579;d=th(f,34408,g)|0}ys(a,e,b,d,-1,2);i=h;return}function Ft(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a+316|0;f=da(e|0,4,0,0)|0|0;b=kr(a,f,Lr(da(a|0,4,0,0)|0|0,b,0,0)|0)|0;if(b){a=(da(b|0,4,0,0)|0|0)+-1|0;f=da(b+4|0,4,0,0)|0|0;ea(f+(a*20|0)+16|0,c|0,4,0);a=f+(a*20|0)+13|0;ea(a>>0|0,(da(a>>0|0,1,0,0)|0)&-5|d<<2&4|0,1,0)}ea(e|0,b|0,4,0);return}function Gt(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;f=da(d|0,4,0,0)|0|0;if(!(f+-1&f)){h=_((f|0)==0?1:f<<1,c)|0;a=qo(a,b,h,((h|0)<0)<<31>>31)|0;if(!a){ea(e|0,-1|0,4,0);a=b}else g=4}else{a=b;g=4}if((g|0)==4){ew(a+(_(f,c)|0)|0,0,c|0)|0;ea(e|0,f|0,4,0);ea(d|0,(da(d|0,4,0,0)|0|0)+1|0,4,0)}return a|0}function Ht(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;ea(g|0,0|0,4,0);b=da(a+12|0,4,0,0)|0|0;if((b|0)!=0?(c=da(b+24|0,4,0,0)|0|0,(c|0)>0):0){ea(g|0,c|0,4,0);b=c}else b=0;c=da(a+16|0,4,0,0)|0|0;if((c|0)!=0?(d=da(c+24|0,4,0,0)|0|0,(d|0)>(b|0)):0)ea(g|0,d|0,4,0);e=a+4|0;b=a+20|0;if(!((da(e|0,4,0,0)|0)&2048)){c=da(b|0,4,0,0)|0|0;if(c){su(c,g);b=da(b|0,4,0,0)|0|0;if((b|0)!=0?(f=da(b|0,4,0,0)|0|0,(f|0)>0):0){d=da(b+4|0,4,0,0)|0|0;c=0;b=0;do{b=da((da(d+(c*20|0)|0,4,0,0)|0|0)+4|0,4,0,0)|0|b;c=c+1|0}while((c|0)!=(f|0));b=b&2097408}else b=0;ea(e|0,da(e|0,4,0,0)|0|b|0,4,0)}}else Ds(da(b|0,4,0,0)|0|0,g);ea(a+24|0,(da(g|0,4,0,0)|0|0)+1|0,4,0);i=h;return}function It(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Nq(a)|0;g=a+72|0;f=(da(g|0,4,0,0)|0|0)+1|0;ea(g|0,f|0,4,0);a=lh(da(a|0,4,0,0)|0|0,8,0)|0;if(a){g=a;ea(g|0,c|0,4,0);ea(g+4|0,d|0,4,0)}wh(e,vh(e,26,0,f,0)|0,a,-13);hq(e,1);if(!(da((da(e|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))Wg(da(e+16|0,4,0,0)|0|0,b,-1,1,0)|0;vh(e,35,f,1,0)|0;return}function Jt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;b=da(a|0,4,0,0)|0|0;c=b+16|0;d=da((da(c|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;do if(!d)b=0;else{if((da(b+63>>0|0,1,0,0)|0|0)!=0?(da(d+8>>0|0,1,0,0)|0|0)==0:0){Ll(d);ea((da(c|0,4,0,0)|0|0)+20|0,0|0,4,0);Dg(b);b=0;break}sh(a,32128,e);b=1}while(0);i=f;return b|0}function Kt(a){a=a|0;var b=0,c=0,d=0;if((da(a+63>>0|0,1,0,0)|0|0)!=0?(b=da(a+20|0,4,0,0)|0|0,(b|0)>0):0){d=a+24|0;c=da(a+16|0,4,0,0)|0|0;while(1){b=b+-1|0;a=da(c+4|0,4,0,0)|0|0;if(a)so(a,(da(d|0,4,0,0)|0)&28|(da(c+8>>0|0,1,0,1)|0));if((b|0)<=0)break;else c=c+16|0}}return}function Lt(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();s=v;t=da(c+20|0,4,0,0)|0|0;g=da(c+40|0,4,0,0)|0|0;if((t|0)==1){o=da(b+36|0,2,0,0)|0|0;f=o<<16>>16;if(o<<16>>16>-1)if((g|0)!=0?(cd(da((da(b+4|0,4,0,0)|0|0)+(f*24|0)|0,4,0,0)|0|0,g)|0)!=0:0){r=0;u=8}else e=0;else{r=0;u=8}}else if(e){f=lh(da(a|0,4,0,0)|0|0,t<<2,0)|0;if(!f)e=1;else{ea(e|0,f|0,4,0);r=f;u=8}}else{r=0;u=8}a:do if((u|0)==8){e=da(b+8|0,4,0,0)|0|0;b:do if(e){o=(g|0)==0;q=(t|0)>0;n=b+4|0;p=(r|0)==0;c:while(1){do if((da(e+46|0,2,0,1)|0|0)==(t|0)?(da(e+50>>0|0,1,0,0)|0|0)!=0:0){if(o)if(((da(e+51>>0|0,1,0,0)|0)&3)==2){u=16;break c}else break;d:do if(q){h=da(e+4|0,4,0,0)|0|0;k=da(n|0,4,0,0)|0|0;l=da(e+32|0,4,0,0)|0|0;m=0;while(1){b=da(h+(m<<1)|0,2,0,0)|0|0;g=da(k+(b*24|0)+16|0,4,0,0)|0|0;if(cd(da(l+(m<<2)|0,4,0,0)|0|0,(g|0)!=0?g:11152)|0){g=m;break d}g=da(k+(b*24|0)|0,4,0,0)|0|0;f=0;while(1){b=f+1|0;if(!(cd(da(c+(f<<3)+40|0,4,0,0)|0|0,g)|0)){b=f;u=23;break}if((b|0)<(t|0))f=b;else break}if((u|0)==23){u=0;if(!p)ea(r+(m<<2)|0,da(c+(b<<3)+36|0,4,0,0)|0|0,4,0)}g=m+1|0;if((b|0)==(t|0)){g=m;break d}if((g|0)<(t|0))m=g;else break}}else g=0;while(0);if((g|0)==(t|0))break c}while(0);e=da(e+20|0,4,0,0)|0|0;if(!e)break b}if((u|0)==16)if(!(p|q^1)){f=0;do{ea(r+(f<<2)|0,da(c+(f<<3)+36|0,4,0,0)|0|0,4,0);f=f+1|0}while((f|0)!=(t|0))}ea(d|0,e|0,4,0);e=0;break a}while(0);if(!(da(a+438>>0|0,1,0,0)|0)){o=da(c+8|0,4,0,0)|0|0;ea(s|0,da(da(c|0,4,0,0)|0|0,4,0,0)|0|0,4,0);ea(s+4|0,o|0,4,0);sh(a,32008,s)}lg(da(a|0,4,0,0)|0|0,r);e=1}while(0);i=v;return e|0}function Mt(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;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;if(!(da(b+12|0,4,0,0)|0)){ea(f|0,0|0,4,0);h=da(a|0,4,0,0)|0|0;e=b+4|0;b=da(e|0,4,0,0)|0|0;Yr(h,da(b+(c*24|0)+4|0,4,0,0)|0|0,da(h+62>>0|0,1,0,0)|0|0,da(b+(c*24|0)+21>>0|0,1,0,0)|0|0,f)|0;b=da(f|0,4,0,0)|0|0;if(b)wh(a,-1,b,-8);if((da((da(e|0,4,0,0)|0|0)+(c*24|0)+21>>0|0,1,0,0)|0|0)==69)vh(a,39,d,0,0)|0}i=g;return}function Nt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!b)d=0;else{d=b;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;d=d-b&1073741823}d=Rh(a,b,d,2,1,0)|0;if(d){d=d+2|0;ea(d|0,da(d|0,2,0,1)|0|c&255|0,2,0)}return}function Ot(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=da(a+8|0,4,0,0)|0|0;o=da(b+12|0,4,0,0)|0|0;do if(f){i=b+36|0;if(!(da(i|0,4,0,0)|0)){ea(f|0,0|0,4,0);break}else{ea(f|0,ws(n)|0|0,4,0);ea(a+96|0,c|0,4,0);m=a+100|0;ea(m|0,(da(m|0,4,0,0)|0|0)+1|0,4,0);ft(a,da(i|0,4,0,0)|0|0,da(f|0,4,0,0)|0|0,16);break}}while(0);if((e|0)!=0?((da(b+51>>0|0,1,0,0)|0)&8)!=0:0)i=b+46|0;else i=b+48|0;i=da(i|0,2,0,0)|0|0;k=i&65535;l=a+60|0;e=da(l|0,4,0,0)|0|0;m=a+56|0;f=da(m|0,4,0,0)|0|0;if((f|0)<(k|0)){e=a+72|0;j=da(e|0,4,0,0)|0|0;ea(e|0,j+k|0,4,0);j=j+1|0}else{ea(l|0,e+k|0,4,0);ea(m|0,f-k|0,4,0);j=e}do if(!g)e=0;else{if((j|0)==(h|0)?(da(g+36|0,4,0,0)|0|0)==0:0){e=g;break}e=0}while(0);if(i<<16>>16){g=(e|0)==0;h=b+4|0;f=e+4|0;i=0;do{if(!g){e=da((da(h|0,4,0,0)|0|0)+(i<<1)|0,2,0,0)|0|0;if((da((da(f|0,4,0,0)|0|0)+(i<<1)|0,2,0,0)|0|0)!=e<<16>>16)p=21}else{e=da((da(h|0,4,0,0)|0|0)+(i<<1)|0,2,0,0)|0|0;p=21}if((p|0)==21){p=0;mt(n,o,c,e<<16>>16,i+j|0);Oq(n,39)|0}i=i+1|0}while((i|0)<(k|0))}if(d)vh(n,49,j,k,d)|0;ct(a,j,k);if((da(m|0,4,0,0)|0|0)<(k|0)){ea(m|0,k|0,4,0);ea(l|0,j|0,4,0)}return j|0}function Pt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(b){c=da(a+8|0,4,0,0)|0|0;d=da(c+24|0,4,0,0)|0|0;e=~b;if((b|0)<0?(f=da(d+112|0,4,0,0)|0|0,(f|0)!=0):0)ea(f+(e<<2)|0,da(c+32|0,4,0,0)|0|0,4,0);ea(d+88|0,(da(c+32|0,4,0,0)|0|0)+-1|0,4,0);au(a)}return}function Qt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;c=da(b+16|0,4,0,0)|0|0;a:do if((c|0)!=0?(d=da(b+64|0,4,0,0)|0|0,(d|0)!=0):0){c=da(c+8|0,4,0,0)|0|0;b:do if(c){while(1){if(!(cd(da(c|0,4,0,0)|0|0,d)|0))break;c=da(c+20|0,4,0,0)|0|0;if(!c)break b}ea(b+68|0,c|0,4,0);c=0;break a}while(0);ea(e|0,d|0,4,0);ea(e+4|0,0|0,4,0);sh(a,28104,e);ea(a+17>>0|0,1|0,1,0);c=1}else c=0;while(0);i=f;return c|0}function Rt(a,b){a=a|0;b=b|0;var c=0,d=0;if(a){c=St(a,b)|0;if(b&1){d=Rt(da(a+12|0,4,0,0)|0|0,b)|0;return d+c+(Rt(da(a+16|0,4,0,0)|0|0,b)|0)|0}}else c=0;return c|0} -function Sn(a,b,c,d,e,f,g,h,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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,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;Y=i;i=i+160|0;if((i|0)>=(j|0))ba();K=Y+16|0;G=Y+152|0;I=Y+48|0;F=Y+40|0;J=Y+36|0;H=Y+32|0;M=Y+8|0;N=Y;S=Y+28|0;W=Y+24|0;ea(W|0,0|0,4,0);do if(!(da(a+46>>0|0,1,0,0)|0)){X=a+43|0;if((da(X>>0|0,1,0,0)|0|0)==0?(l=da(a+4|0,4,0,0)|0|0,l=oc[(fa(da((da(l|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](l,1,1,10)|0,(l|0)!=0):0)break;V=a+45|0;ea(V>>0|0,1|0,1,0);a:do if(!b){p=0;T=11}else{n=a+4|0;l=(c|0)!=0;while(1){if(da(X>>0|0,1,0,0)|0)break;p=da(n|0,4,0,0)|0|0;p=oc[(fa(da((da(p|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](p,0,1,10)|0;if(!(l&(p|0)==5)){T=9;break}if(!(kc[(fa(c|0,127|0)|0)&127](d)|0)){p=0;c=0;T=11;break a}}if((T|0)==9)if((p|0)==5){p=0;c=0;T=11;break}else if(p){U=b;break}ea(a+44>>0|0,1|0,1,0);p=b;T=11}while(0);if((T|0)==11){U=p;p=mq(a,W)|0}do if(!p){R=a+68|0;p=da(a+66|0,2,0,0)|0|0;if((da(R|0,4,0,0)|0|0)!=0?(Q=p&65535,(Q<<16&65536|Q&65024|0)!=(f|0)):0){ea(K|0,51863|0,4,0);ea(K+4|0,10788|0,4,0);ad(11,13600,K);m=11;break}O=p&65535;O=O<<16&65536|O&65024;Q=a+32|0;P=(da(da(Q|0,4,0,0)|0|0,4,0,0)|0|0)+96|0;B=da(R|0,4,0,0)|0|0;b:do if((da(P|0,4,0,0)|0|0)>>>0>>0){D=(B+33|0)>>>12;E=D+1|0;f=B<<1;r=f+28+(D*20|0)|0;l=Sc(r)|0;c:do if(!l){p=7;l=0}else{ew(l|0,0,r|0)|0;A=l+4|0;ea(A|0,E|0,4,0);s=Sc(B>>>0>4096?8192:f)|0;do if(s){r=l+8|0;f=0;while(1){p=Oo(a,f,F,H,J)|0;if(p){T=21;break}y=(da(H|0,4,0,0)|0|0)+4|0;ea(H|0,y|0,4,0);if((f|0)==(D|0)){z=da(J|0,4,0,0)|0|0;p=z;z=B-z|0}else{p=da(J|0,4,0,0)|0|0;z=(da(F|0,4,0,0)|0|0)-y>>2}n=r+((da(A|0,4,0,0)|0|0)*20|0)|0;x=n+(p<<1)|0;q=p+1|0;ea(J|0,q|0,4,0);if((z|0)>0){u=0;do{ea(n+(u+p<<1)|0,u|0,2,0);u=u+1|0}while((u|0)!=(z|0));ea(K|0,0|0,4,0);ea(G|0,0|0,4,0);v=I+0|0;u=v+104|0;do{ea(v|0,0|0,4,0);v=v+4|0}while((v|0)<(u|0));w=0;do{ea(K|0,1|0,4,0);v=n+(w+p<<1)|0;ea(G|0,v|0,4,0);if(!(w&1)){t=1;u=0}else{u=0;do{nq(y,da(I+(u<<3)+4|0,4,0,0)|0|0,da(I+(u<<3)|0,4,0,0)|0|0,G,K,s);u=u+1|0}while((1<=(E|0)){T=39;break}}if((T|0)==21){Vc(s);break}else if((T|0)==39){Vc(s);p=0;break c}}else{Vc(0);p=7}while(0);Vc(l)}while(0);if(!p){K=a+72|0;J=da(K|0,4,0,0)|0|0;I=a+4|0;t=1;s=da(R|0,4,0,0)|0|0;p=0;while(1){f=P+(t<<2)+4|0;n=da(f|0,4,0,0)|0|0;d:do if(s>>>0>n>>>0){r=t+3|0;q=(c|0)!=0;while(1){if(da(X>>0|0,1,0,0)|0)break;p=da(I|0,4,0,0)|0|0;p=oc[(fa(da((da(p|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](p,r,1,10)|0;if(!(q&(p|0)==5)){T=49;break}if(!(kc[(fa(c|0,127|0)|0)&127](d)|0)){c=0;p=5;break d}}if((T|0)==49){T=0;if((p|0)==5){c=0;p=5;break}else if(p){m=p;T=100;break b}}ea(f|0,((t|0)==1?s:-1)|0,4,0);if(!(da(X>>0|0,1,0,0)|0)){n=da(I|0,4,0,0)|0|0;oc[(fa(da((da(n|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](n,r,1,9)|0;n=s;p=0}else{n=s;p=0}}else n=s;while(0);t=t+1|0;if((t|0)>=5){E=n;break}else s=n}e:do if((da(P|0,4,0,0)|0|0)>>>0>>0){p=(c|0)!=0;while(1){if(da(X>>0|0,1,0,0)|0)break;n=da(I|0,4,0,0)|0|0;n=oc[(fa(da((da(n|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](n,3,1,10)|0;if(!(p&(n|0)==5)){o=n;T=58;break}if(!(kc[(fa(c|0,127|0)|0)&127](d)|0)){o=5;break e}}if((T|0)==58?(o|0)!=0:0)break;A=da(P|0,4,0,0)|0|0;B=(e|0)!=0;if(B?(L=da(a+8|0,4,0,0)|0|0,L=qc[(fa(da((da(L|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](L,e)|0,(L|0)!=0):0)o=L;else T=61;f:do if((T|0)==61){L=rw(J|0,0,O|0,0)|0;o=N;ea(o|0,L|0,4,0);ea(o+4|0,C|0,4,0);o=da(I|0,4,0,0)|0|0;o=qc[(fa(da((da(o|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](o,M)|0;if(!o){p=M;L=da(p+4|0,4,0,0)|0|0;o=N;M=da(o+4|0,4,0,0)|0|0;if((L|0)<(M|0)|((L|0)==(M|0)?(da(p|0,4,0,0)|0|0)>>>0<(da(o|0,4,0,0)|0|0)>>>0:0)){M=da(I|0,4,0,0)|0|0;$b[(fa(da((da(M|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,63|0)|0)&63](M,5,N)|0}x=l+4|0;y=O|24;z=a+8|0;p=da(x|0,4,0,0)|0|0;g:do if((p|0)>0){o=0;while(1){w=da(l|0,4,0,0)|0|0;v=-1;h:while(1){i:while(1){p=p+-1|0;t=l+(p*20|0)+8|0;f=da(t|0,4,0,0)|0|0;n=da(l+(p*20|0)+20|0,4,0,0)|0|0;j:do if((f|0)<(n|0)){s=da(l+(p*20|0)+12|0,4,0,0)|0|0;u=da(l+(p*20|0)+16|0,4,0,0)|0|0;while(1){q=da(s+(f<<1)|0,2,0,1)|0|0;r=da(u+(q<<2)|0,4,0,0)|0|0;if(r>>>0>w>>>0)break;f=f+1|0;ea(t|0,f|0,4,0);if((f|0)>=(n|0))break j}if(r>>>0>>0)break i}while(0);if((p|0)<=0){f=o;p=v;break h}}o=(da(l+(p*20|0)+24|0,4,0,0)|0|0)+q|0;if((p|0)>0)v=r;else{f=o;p=r;break}}ea(l|0,p|0,4,0);if((p|0)==-1)break g;if(!(f>>>0<=A>>>0|f>>>0>E>>>0|p>>>0>J>>>0)){o=rw(f+-1|0,0,y|0,0)|0;o=iw(o|0,C|0,56,0)|0;N=da(z|0,4,0,0)|0|0;o=sc[(fa(da((da(N|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](N,g,O,o,C)|0;if(o)break f;o=rw(p+-1|0,0,O|0,0)|0;N=da(I|0,4,0,0)|0|0;o=sc[(fa(da((da(N|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](N,g,O,o,C)|0;if(o)break f}p=da(x|0,4,0,0)|0|0;if((p|0)<=0){T=66;break}else o=f}}else T=66;while(0);if((T|0)==66)ea(l|0,-1|0,4,0);if((E|0)==(da((da(da(Q|0,4,0,0)|0|0,4,0,0)|0|0)+16|0,4,0,0)|0|0)){o=rw(da(K|0,4,0,0)|0|0,0,O|0,0)|0;T=da(I|0,4,0,0)|0|0;o=$b[(fa(da((da(T|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,63|0)|0)&63](T,o,C)|0;if((o|0)==0&B){o=da(I|0,4,0,0)|0|0;o=qc[(fa(da((da(o|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](o,e)|0}if(o)break}ea(P|0,E|0,4,0);o=0}}while(0);if(!(da(X>>0|0,1,0,0)|0)){T=da(I|0,4,0,0)|0|0;oc[(fa(da((da(T|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](T,3,1,9)|0}}else o=p;while(0);o=(o|0)==5?0:o;T=88}else m=p}else{l=0;o=0;T=88}while(0);k:do if((T|0)==88)if((o|0)==0&(U|0)!=0)if((da(P|0,4,0,0)|0|0)>>>0>=(da(R|0,4,0,0)|0|0)>>>0)if((U|0)>1){bd(4,S);p=a+4|0;n=(c|0)!=0;while(1){if(da(X>>0|0,1,0,0)|0)break;o=da(p|0,4,0,0)|0|0;o=oc[(fa(da((da(o|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](o,4,4,10)|0;if(!(n&(o|0)==5)){m=o;T=95;break}if(!(kc[(fa(c|0,127|0)|0)&127](d)|0)){m=5;T=100;break k}}if((T|0)==95?(m|0)!=0:0){T=100;break}if((U|0)==3){Wo(a,da(S|0,4,0,0)|0|0);m=da(a+8|0,4,0,0)|0|0;m=$b[(fa(da((da(m|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,63|0)|0)&63](m,0,0)|0}else m=0;if(!(da(X>>0|0,1,0,0)|0)){T=da(p|0,4,0,0)|0|0;oc[(fa(da((da(T|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](T,4,4,9)|0;T=100}else T=100}else{m=0;T=100}else{m=5;T=100}else{m=o;T=100}while(0);if((T|0)==100)Vc(l);if((m|0)==0|(m|0)==5){if(h)ea(h|0,da(R|0,4,0,0)|0|0,4,0);if(k)ea(k|0,da((da(da(Q|0,4,0,0)|0|0,4,0,0)|0|0)+96|0,4,0,0)|0|0,4,0)}}else m=p;while(0);if(da(W|0,4,0,0)|0){v=a+52|0;u=v+48|0;do{ea(v|0,0|0,4,0);v=v+4|0}while((v|0)<(u|0))}l=a+44|0;if(da(l>>0|0,1,0,0)|0){if(!(da(X>>0|0,1,0,0)|0)){W=da(a+4|0,4,0,0)|0|0;oc[(fa(da((da(W|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](W,0,1,9)|0}ea(l>>0|0,0|0,1,0);ea(a+47>>0|0,0|0,1,0)}if(!(da(X>>0|0,1,0,0)|0)){X=da(a+4|0,4,0,0)|0|0;oc[(fa(da((da(X|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](X,1,1,9)|0}ea(V>>0|0,0|0,1,0);l=(m|0)!=0|(U|0)==(b|0)?m:5}else l=8;while(0);i=Y;return l|0}function Tn(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=(b|0)<(d|0)?b:d;f=Yv(c,e,g)|0;a:do if(!f){b:do if(a){f=b-g|0;while(1){if((f|0)<=0)break;f=f+-1|0;if((da(c+(f+g)>>0|0,1,0,0)|0|0)!=32)break b}if(!f){f=d-g|0;while(1){if((f|0)<=0)break;f=f+-1|0;if((da(e+(f+g)>>0|0,1,0,0)|0|0)!=32)break b}if(!f){f=0;break a}}}while(0);f=b-d|0}while(0);return f|0}function Un(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=Ec(c,e,(b|0)<(d|0)?b:d)|0;return ((a|0)==0?b-d|0:a)|0}function Vn(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,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;w=i;i=i+16|0;if((i|0)>=(j|0))ba();u=w;n=da(c|0,4,0,0)|0|0;a:do if(b){l=b;while(1)if(!(da(l>>0|0,1,0,0)|0))break;else l=l+1|0;m=l-b&1073741823;if((da(2189*4|0,4,0,0)|0|n&64|0)!=0&m>>>0>4?(Yv(b,14984,5)|0)==0:0){l=m+2|0;k=n|64;if(m){n=0;do{l=((da(b+n>>0|0,1,0,0)|0|0)==38&1)+l|0;n=n+1|0}while((n|0)<(m|0))}h=Sc(l)|0;if(h){do if((da(b+5>>0|0,1,0,0)|0|0)==47?(da(b+6>>0|0,1,0,0)|0|0)==47:0){l=7;while(1){q=da(b+l>>0|0,1,0,0)|0|0;if(q<<24>>24==0|q<<24>>24==47)break;l=l+1|0}if((l|0)==7){l=0;n=7;g=0;break}else if((l|0)==16){g=b+7|0;if(!(Yv(14992,g,9)|0)){l=0;n=16;g=0;break}}else g=b+7|0;ea(u|0,l+-7|0,4,0);ea(u+4|0,g|0,4,0);ea(f|0,Zc(15008,u)|0|0,4,0);g=1;v=74;break a}else{l=0;n=5;g=0}while(0);b:while(1){s=h+(g+-1)|0;c:while(1){d:while(1){m=da(b+n>>0|0,1,0,0)|0|0;if(m<<24>>24==35|m<<24>>24==0)break b;o=n+1|0;if((m<<24>>24==37?(t=da(b+o>>0|0,1,0,0)|0|0,((da(10368+(t&255)>>0|0,1,0,0)|0)&8)!=0):0)?(r=da(b+(n+2)>>0|0,1,0,0)|0|0,((da(10368+(r&255)>>0|0,1,0,0)|0)&8)!=0):0){m=t;o=r;break}if(!l){n=o;v=38;break c}else if((l|0)==2){n=o;v=39;break c}else if((l|0)!=1){n=o;break c}if(!(m<<24>>24==38|m<<24>>24==61)){l=1;n=o;break c}if(!(da(s>>0|0,1,0,0)|0))n=o;else{n=o;v=36;break c}while(1){q=da(b+n>>0|0,1,0,0)|0|0;if(q<<24>>24==35|q<<24>>24==0)continue d;if((da(b+(n+-1)>>0|0,1,0,0)|0|0)==38)continue d;else n=n+1|0}}m=m<<24>>24;n=n+3|0;q=o<<24>>24;m=(0-(q>>>6&1)&9)+q&15|(0-(m>>>6&1)&9)+m<<4&240;if(m){v=30;break}o=(l|0)==0;while(1){m=da(b+n>>0|0,1,0,0)|0|0;if(m<<24>>24==35|m<<24>>24==0)continue c;if(o&m<<24>>24==63){l=0;continue c}if((l|0)==1){if(m<<24>>24==38|m<<24>>24==61){l=1;continue c}}else if((l|0)==2?m<<24>>24==38:0){l=2;continue c}n=n+1|0}}if((v|0)==30){v=0;m=m&255}else if((v|0)==36){v=0;if(m<<24>>24==38){ea(h+g>>0|0,0|0,1,0);m=0;l=1;g=g+1|0}else{m=0;l=2}}else if((v|0)==38){v=0;if(m<<24>>24==63)v=40;else l=0}else if((v|0)==39){v=0;if(m<<24>>24==38)v=40;else l=2}if((v|0)==40){v=0;m=0;l=1}ea(h+g>>0|0,m|0,1,0);g=g+1|0}if((l|0)==1){ea(h+g>>0|0,0|0,1,0);g=g+1|0}ea(h+g>>0|0,0|0,1,0);ea(h+(g+1)>>0|0,0|0,1,0);g=h;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;g=(g-h&1073741823)+1|0;l=da(h+g>>0|0,1,0,0)|0|0;if(l<<24>>24){t=h+g|0;e:while(1){m=t;while(1){g=m+1|0;if(!(l<<24>>24)){l=m;break}l=da(g>>0|0,1,0,0)|0|0;m=g}s=l-t&1073741823;l=t+(s+1)|0;m=l;while(1)if(!(da(m>>0|0,1,0,0)|0))break;else m=m+1|0;r=m-l&1073741823;if((s|0)==3){g=(Yv(15040,t,3)|0)==0;g=g?l:a}else if((s|0)==5)if(!(Yv(15048,t,5)|0)){b=15056;p=393216;q=-393217;g=15048;v=58}else g=a;else if((s|0)==4?(Yv(15096,t,4)|0)==0:0){b=15104;p=k&135;q=-136;g=15176;v=58}else g=a;if((v|0)==58){v=0;n=da(b|0,4,0,0)|0|0;if(!n){v=65;break}else m=0;while(1){o=n;while(1)if(!(da(o>>0|0,1,0,0)|0))break;else o=o+1|0;if((r|0)==(o-n&1073741823|0)?(Yv(l,n,r)|0)==0:0){n=m;break}m=m+1|0;n=da(b+(m<<3)|0,4,0,0)|0|0;if(!n){v=65;break e}}n=da(b+(n<<3)+4|0,4,0,0)|0|0;if(!n){v=65;break}if((n&-129|0)>(p|0)){v=67;break}k=n|q&k;g=a}t=t+(s+2+r)|0;l=da(t>>0|0,1,0,0)|0|0;if(!(l<<24>>24)){v=72;break a}else a=g}if((v|0)==65){ea(u|0,g|0,4,0);ea(u+4|0,l|0,4,0);ea(f|0,Zc(15184,u)|0|0,4,0);g=1;v=74;break}else if((v|0)==67){ea(u|0,g|0,4,0);ea(u+4|0,l|0,4,0);ea(f|0,Zc(15208,u)|0|0,4,0);g=3;v=74;break}}else{g=a;v=72}}else g=7}else{k=m;v=70}}else{k=0;v=70}while(0);if((v|0)==70){h=Sc(k+2|0)|0;if(!h)g=7;else{jw(h|0,b|0,k|0)|0;ea(h+k>>0|0,0|0,1,0);ea(h+(k+1)>>0|0,0|0,1,0);k=n&-65;g=a;v=72}}if((v|0)==72){q=Jc(g)|0;ea(d|0,q|0,4,0);if(!q){ea(u|0,g|0,4,0);ea(f|0,Zc(15232,u)|0|0,4,0);g=1;v=74}else{g=0;v=75}}if((v|0)==74){Vc(h);h=0;v=75}if((v|0)==75){ea(c|0,k|0,4,0);ea(e|0,h|0,4,0)}i=w;return g|0}function Wn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;do if(!b){b=pg(84,0)|0;if(!b)c=8;else{a=b+0|0;e=a+84|0;do{ea(a>>0|0,0|0,1,0);a=a+1|0}while((a|0)<(e|0));c=9}}else{d=da(b+4|0,4,0,0)|0|0;ea(d+4|0,da(b|0,4,0,0)|0|0,4,0);c=d+48|0;b=da(c|0,4,0,0)|0|0;if(!b){b=pg(84,0)|0;if(!b){ea(c|0,0|0,4,0);ea(d+52|0,22|0,4,0);c=8;break}else{a=b+0|0;e=a+84|0;do{ea(a>>0|0,0|0,1,0);a=a+1|0}while((a|0)<(e|0));ea(c|0,b|0,4,0);ea(d+52|0,22|0,4,0);c=9;break}}else c=9}while(0);if((c|0)==8){ea(a+65>>0|0,1|0,1,0);b=0}else if((c|0)==9)if(!(da(b+76>>0|0,1,0,0)|0)){c=b+77|0;a=b+8|0;e=a+64|0;do{ea(a|0,0|0,4,0);a=a+4|0}while((a|0)<(e|0));ea(c>>0|0,1|0,1,0)}return b|0}function Xn(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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();if(c){g=a+428|0;f=an(g,c,k)|0;if(!f)e=0;else e=da(f+8|0,4,0,0)|0|0;if((e|0)==0&(d|0)!=0){f=c;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;f=f-c&1073741823;d=f+61|0;e=lh(a,d,0)|0;if(e){ew(e|0,0,d|0)|0;d=e+60|0;ea(e|0,d|0,4,0);ea(e+4>>0|0,1|0,1,0);ea(e+20|0,d|0,4,0);ea(e+24>>0|0,2|0,1,0);ea(e+40|0,d|0,4,0);ea(e+44>>0|0,3|0,1,0);jw(d|0,c|0,f|0)|0;ea(e+(f+60)>>0|0,0|0,1,0);f=Hk(g,da(e|0,4,0,0)|0|0,e)|0;if(!f)h=10;else{ea(a+65>>0|0,1|0,1,0);lg(a,f);e=0}}else e=0}else h=10}else{e=da(a+8|0,4,0,0)|0|0;h=10}if((h|0)==10)if(!e)e=0;else e=e+(((b&255)+-1|0)*20|0)|0;i=k;return e|0}function Yn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;v=i;i=i+64|0;if((i|0)>=(j|0))ba();r=v;f=v+48|0;l=v+24|0;p=v+8|0;g=(b|0)==1;n=g?13184:13208;ea(f|0,n|0,4,0);ea(f+4|0,13224|0,4,0);ea(f+8|0,(g?13064:12960)|0,4,0);ea(f+12|0,0|0,4,0);ea(p|0,a|0,4,0);ea(p+8|0,b|0,4,0);q=p+12|0;ea(q|0,0|0,4,0);ea(p+4|0,c|0,4,0);_m(p,3,f,0)|0;f=da(q|0,4,0,0)|0|0;a:do if(!f){s=a+16|0;f=Zh(a,n,da((da(s|0,4,0,0)|0|0)+(b<<4)|0,4,0,0)|0|0)|0;if(f){o=f+44|0;ea(o>>0|0,da(o>>0|0,1,0,1)|0|1|0,1,0)}e=da(s|0,4,0,0)|0|0;t=e+(b<<4)+4|0;f=da(t|0,4,0,0)|0|0;if(!f){if(!g){d=0;break}d=(da(e+28|0,4,0,0)|0|0)+78|0;ea(d|0,da(d|0,2,0,1)|0|1|0,2,0);d=0;break}ea((da(f+4|0,4,0,0)|0|0)+4|0,da(f|0,4,0,0)|0|0,4,0);do if(!(da(f+8>>0|0,1,0,0)|0)){f=xg(f,0)|0;if((f|0)==516)d=16344;else if(!f){f=da(t|0,4,0,0)|0|0;o=1;break}else u=10;if((u|0)==10){d=f&255;if(d>>>0>26|(d|0)==2)d=16328;else d=da(15488+(d<<2)|0,4,0,0)|0|0}ea(r|0,d|0,4,0);ch(c,a,10344,r);d=f;u=38;break a}else o=0;while(0);vm(f,1,l);m=l+4|0;vm(da(t|0,4,0,0)|0|0,2,m);h=l+8|0;vm(da(t|0,4,0,0)|0|0,3,h);vm(da(t|0,4,0,0)|0|0,4,l+12|0);g=l+16|0;vm(da(t|0,4,0,0)|0|0,5,g);k=e+(b<<4)+12|0;f=da(k|0,4,0,0)|0|0;ea(f|0,da(l|0,4,0,0)|0|0,4,0);e=da(g|0,4,0,0)|0|0;do if(e){if(!b){g=e&3;g=(g|0)==0?1:g&255;ea(a+62>>0|0,g|0,1,0);u=19;break}g=da(a+62>>0|0,1,0,0)|0|0;if((e|0)==(g&255|0))u=19;else{ch(c,a,13232,r);d=1}}else{g=(da((da(s|0,4,0,0)|0|0)+(b<<4)+12|0,4,0,0)|0|0)+78|0;ea(g|0,da(g|0,2,0,1)|0|4|0,2,0);g=da(a+62>>0|0,1,0,0)|0|0;u=19}while(0);do if((u|0)==19){ea(f+77>>0|0,g|0,1,0);g=f+80|0;if(!(da(g|0,4,0,0)|0)){f=da(h|0,4,0,0)|0|0;if((f|0)<=-1)f=(f|0)==-2147483648?2147483647:0-f|0;f=(f|0)==0?2e3:f;ea(g|0,f|0,4,0);oq(da(t|0,4,0,0)|0|0,f);f=da(k|0,4,0,0)|0|0}e=da(m|0,4,0,0)|0|0;g=e&255;f=f+76|0;if(g<<24>>24){ea(f>>0|0,g|0,1,0);if((g&255)>4){ch(c,a,13304,r);d=1;break}}else ea(f>>0|0,1|0,1,0);if((b|0)==0&(e|0)>3){m=a+24|0;ea(m|0,(da(m|0,4,0,0)|0)&-32769|0,4,0)}ea(r|0,da((da(s|0,4,0,0)|0|0)+(b<<4)|0,4,0,0)|0|0,4,0);ea(r+4|0,n|0,4,0);e=th(a,13328,r)|0;m=a+284|0;n=da(m|0,4,0,0)|0|0;ea(m|0,0|0,4,0);f=Pe(a,e,22,p,0)|0;ea(m|0,n|0,4,0);f=(f|0)==0?da(q|0,4,0,0)|0|0:f;lg(a,e);e=(f|0)==0;if(e)$m(a,b)|0;if(!(da(a+65>>0|0,1,0,0)|0)){if(!e){d=f;u=34}}else{Dg(a);d=7;u=34}if((u|0)==34?((da(a+24|0,4,0,0)|0)&65536|0)==0:0)break;d=(da((da(s|0,4,0,0)|0|0)+(b<<4)+12|0,4,0,0)|0|0)+78|0;ea(d|0,da(d|0,2,0,1)|0|1|0,2,0);d=0}while(0);if(!o)u=38;else{tn(da(t|0,4,0,0)|0|0)|0;u=38}}else{d=f;u=38}while(0);if((u|0)==38)if((d|0)==7|(d|0)==3082)ea(a+65>>0|0,1|0,1,0);i=v;return d|0}function Zn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+80|0;if((i|0)>=(j|0))ba();k=l;ea(12066*4|0,da(2708*4|0,4,0,0)|0|0,4,0);if(!(da(12067*4|0,4,0,0)|0))ea(12067*4|0,Kb(48336)|0|0,4,0);if(!(da(12068*4|0,4,0,0)|0))ea(12068*4|0,Kb(48352)|0|0,4,0);d=k+12|0;e=0;c=0;do{if((((c|0)!=0?(qc[(fa(da(47552+52|0,4,0,0)|0|0,127|0)|0)&127](c,k)|0)==0:0)?((da(d|0,4,0,0)|0)&61440|0)==16384:0)?(qc[(fa(da(47552+28|0,4,0,0)|0|0,127|0)|0)&127](c,7)|0)==0:0)break;c=da(48264+(e<<2)|0,4,0,0)|0|0;e=e+1|0}while(e>>>0<7);h=(c|0)==0?28928:c;if(((fw(h|0)|0)+25|0)>>>0>>0){a=a+-18|0;do{ea(k|0,h|0,4,0);$c(a,b,48248,k)|0;d=fw(b|0)|0;c=b+d|0;bd(15,c);g=b+(d+15)|0;f=0;e=d;while(1){ea(c>>0|0,da(48184+(((da(c>>0|0,1,0,1)|0|0)%62|0)&255)>>0|0,1,0,0)|0|0|0,1,0);f=f+1|0;e=e+1|0;if((f|0)==15)break;else c=b+e|0}ea(g>>0|0,0|0,1,0);ea(b+(d+16)>>0|0,0|0,1,0)}while((qc[(fa(da(47552+28|0,4,0,0)|0|0,127|0)|0)&127](b,0)|0)==0);c=0}else c=1;i=l;return c|0}function _n(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+80|0;if((i|0)>=(j|0))ba();h=l;g=(c|0)!=0;e=g?c:420;f=b|524288;while(1){d=$b[(fa(da(47552+4|0,4,0,0)|0|0,63|0)|0)&63](a,f,e)|0;if((d|0)<0)if((da(Gb()|0|0,4,0,0)|0|0)==4)continue;else break;if((d|0)>2){k=6;break}kc[(fa(da(47552+16|0,4,0,0)|0|0,127|0)|0)&127](d)|0;ea(h|0,a|0,4,0);ea(h+4|0,d|0,4,0);ad(28,48120,h);if(($b[(fa(da(47552+4|0,4,0,0)|0|0,63|0)|0)&63](48168,b,c)|0)<0){d=-1;break}}if((k|0)==6)if(((g?(qc[(fa(da(47552+64|0,4,0,0)|0|0,127|0)|0)&127](d,h)|0)==0:0)?(da(h+36|0,4,0,0)|0|0)==0:0)?((da(h+12|0,4,0,0)|0)&511|0)!=(c|0):0)qc[(fa(da(47552+172|0,4,0,0)|0|0,127|0)|0)&127](d,c)|0;i=l;return d|0}function $n(a,b,c){a=a|0;b=b|0;c=c|0;if(kc[(fa(da(47552+16|0,4,0,0)|0|0,127|0)|0)&127](b)|0){if(!a)b=0;else b=da(a+32|0,4,0,0)|0|0;bo(4106,47856,b,c)|0}return}function ao(a){a=a|0;var b=0,c=0,d=0,e=0;e=i;i=i+80|0;if((i|0)>=(j|0))ba();d=e;b=e+4|0;c=a+18|0;do if(!((da(c|0,2,0,0)|0)&256)){if(qc[(fa(da(47552+64|0,4,0,0)|0|0,127|0)|0)&127](da(a+12|0,4,0,0)|0|0,b)|0){ea(d|0,da(a+32|0,4,0,0)|0|0,4,0);ad(28,48592,d);ea(c|0,da(c|0,2,0,1)|0|0|256|0,2,0);break}b=da(b+16|0,4,0,0)|0|0;if(!b){if(!((da(c|0,2,0,0)|0)&32)){ea(d|0,da(a+32|0,4,0,0)|0|0,4,0);ad(28,48616,d);ea(c|0,da(c|0,2,0,1)|0|0|256|0,2,0);break}}else if(b>>>0>1){ea(d|0,da(a+32|0,4,0,0)|0|0,4,0);ad(28,48648,d);ea(c|0,da(c|0,2,0,1)|0|0|256|0,2,0);break}if(wo(a)|0){ea(d|0,da(a+32|0,4,0,0)|0|0,4,0);ad(28,48680,d);ea(c|0,da(c|0,2,0,1)|0|0|256|0,2,0)}}while(0);i=e;return}function bo(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;e=i;i=i+32|0;if((i|0)>=(j|0))ba();f=e;h=da(Gb()|0|0,4,0,0)|0|0;g=Qb(h|0)|0;ea(f|0,d|0,4,0);ea(f+4|0,h|0,4,0);ea(f+8|0,b|0,4,0);ea(f+12|0,((c|0)==0?10360:c)|0,4,0);ea(f+16|0,g|0,4,0);ad(a,47864,f);i=e;return a|0}function co(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+40|0;c=da(h|0,4,0,0)|0|0;g=c<<1;g=g>>>0<256?256:g;if((c|0)!=0?(b=da(3164*4|0,4,0,0)|0|0,(b|0)!=0):0)mc[(fa(b|0,3|0)|0)&3]();b=g<<2;f=pg(b,0)|0;c=(f|0)==0;if(!c)ew(f|0,0,b|0)|0;if((da(h|0,4,0,0)|0|0)!=0?(d=da(3166*4|0,4,0,0)|0|0,(d|0)!=0):0)mc[(fa(d|0,3|0)|0)&3]();if(!c){d=da(h|0,4,0,0)|0|0;e=a+44|0;b=da(e|0,4,0,0)|0|0;if(d){a=0;do{c=da(b+(a<<2)|0,4,0,0)|0|0;if(c){do{j=c+16|0;b=c;c=da(j|0,4,0,0)|0|0;i=f+((((da(b+8|0,4,0,0)|0|0)>>>0)%(g>>>0)|0)<<2)|0;ea(j|0,da(i|0,4,0,0)|0|0,4,0);ea(i|0,b|0,4,0)}while((c|0)!=0);b=da(e|0,4,0,0)|0|0}a=a+1|0}while(a>>>0>>0)}Vc(b);ea(e|0,f|0,4,0);ea(h|0,g|0,4,0)}return}function eo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;f=a+24|0;g=a+16|0;c=a+4|0;a:do if((da(g|0,4,0,0)|0|0)>>>0>(da(c|0,4,0,0)|0|0)>>>0)do{d=da(f|0,4,0,0)|0|0;if(!d)break a;fo(d);e=da(d+20|0,4,0,0)|0|0;b=(da(e+44|0,4,0,0)|0|0)+((((da(d+8|0,4,0,0)|0|0)>>>0)%((da(e+40|0,4,0,0)|0|0)>>>0)|0)<<2)|0;while(1){h=da(b|0,4,0,0)|0|0;a=h+16|0;if((h|0)==(d|0))break;else b=a}ea(b|0,da(a|0,4,0,0)|0|0,4,0);a=e+36|0;ea(a|0,(da(a|0,4,0,0)|0|0)+-1|0,4,0);ho(d)}while((da(g|0,4,0,0)|0|0)>>>0>(da(c|0,4,0,0)|0|0)>>>0);while(0);return}function fo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=da(a+20|0,4,0,0)|0|0;d=da(c|0,4,0,0)|0|0;e=a+28|0;f=da(e|0,4,0,0)|0|0;g=a+24|0;b=da(g|0,4,0,0)|0|0;if(!f)ea(d+20|0,b|0,4,0);else{ea(f+24|0,b|0,4,0);b=da(g|0,4,0,0)|0|0}if(!b)ea(d+24|0,f|0,4,0);else ea(b+28|0,f|0,4,0);ea(g|0,0|0,4,0);ea(e|0,0|0,4,0);ea(a+12>>0|0,1|0,1,0);b=c+32|0;ea(b|0,(da(b|0,4,0,0)|0|0)+-1|0,4,0);return}function go(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,k=0,l=0,m=0,n=0,o=0,p=0;i=da(a|0,4,0,0)|0|0;o=a+36|0;g=da(o|0,4,0,0)|0|0;e=da(a+32|0,4,0,0)|0|0;f=g-e|0;m=(c|0)==1;if(m)if(f>>>0<(da(i+12|0,4,0,0)|0|0)>>>0?f>>>0<(da(a+24|0,4,0,0)|0|0)>>>0:0){if((da(3155*4|0,4,0,0)|0|0)!=0?((da(a+8|0,4,0,0)|0|0)+(da(a+4|0,4,0,0)|0|0)|0)<=(da(3154*4|0,4,0,0)|0|0):0)c=12648|0;else c=9060|0;if(!((da(c|0,4,0,0)|0|0)!=0&e>>>0>>0))l=8;else d=0}else d=0;else l=8;do if((l|0)==8){k=a+40|0;if(g>>>0>=(da(k|0,4,0,0)|0|0)>>>0)co(a);h=a+12|0;do if((da(h|0,4,0,0)|0|0)!=0?(d=da(i+24|0,4,0,0)|0|0,(d|0)!=0):0){if(((da(o|0,4,0,0)|0|0)+1|0)>>>0<(da(a+20|0,4,0,0)|0|0)>>>0?(da(i+16|0,4,0,0)|0|0)>>>0<(da(i+4|0,4,0,0)|0|0)>>>0:0){if((da(3155*4|0,4,0,0)|0|0)!=0?((da(a+8|0,4,0,0)|0|0)+(da(a+4|0,4,0,0)|0|0)|0)<=(da(3154*4|0,4,0,0)|0|0):0)c=12648|0;else c=9060|0;if(!(da(c|0,4,0,0)|0)){l=23;break}}c=d+20|0;e=da(c|0,4,0,0)|0|0;f=(da(e+44|0,4,0,0)|0|0)+((((da(d+8|0,4,0,0)|0|0)>>>0)%((da(e+40|0,4,0,0)|0|0)>>>0)|0)<<2)|0;while(1){p=da(f|0,4,0,0)|0|0;g=p+16|0;if((p|0)==(d|0))break;else f=g}ea(f|0,da(g|0,4,0,0)|0|0,4,0);g=e+36|0;ea(g|0,(da(g|0,4,0,0)|0|0)+-1|0,4,0);fo(d);c=da(c|0,4,0,0)|0|0;if(((da(c+8|0,4,0,0)|0|0)+(da(c+4|0,4,0,0)|0|0)|0)==((da(a+8|0,4,0,0)|0|0)+(da(a+4|0,4,0,0)|0|0)|0)){j=i+16|0;ea(j|0,(da(h|0,4,0,0)|0|0)-(da(c+12|0,4,0,0)|0|0)+(da(j|0,4,0,0)|0|0)|0,4,0);break}else{ho(d);l=23;break}}else l=23;while(0);if((l|0)==23){if(m?(j=da(3164*4|0,4,0,0)|0|0,(j|0)!=0):0)mc[(fa(j|0,3|0)|0)&3]();c=a+4|0;e=Fo((da(c|0,4,0,0)|0|0)+32+(da(a+8|0,4,0,0)|0|0)|0)|0;c=da(c|0,4,0,0)|0|0;d=e+c|0;if(e){ea(d|0,e|0,4,0);ea(e+(c+4)|0,e+(c+32)|0,4,0);if(da(h|0,4,0,0)|0){l=(da(a|0,4,0,0)|0|0)+16|0;ea(l|0,(da(l|0,4,0,0)|0|0)+1|0,4,0)}}else d=0;if(m?(n=da(3166*4|0,4,0,0)|0|0,(n|0)!=0):0)mc[(fa(n|0,3|0)|0)&3]();if(!d){d=0;break}}e=(b>>>0)%((da(k|0,4,0,0)|0|0)>>>0)|0;ea(o|0,(da(o|0,4,0,0)|0|0)+1|0,4,0);ea(d+8|0,b|0,4,0);l=a+44|0;ea(d+16|0,da((da(l|0,4,0,0)|0|0)+(e<<2)|0,4,0,0)|0|0,4,0);ea(d+20|0,a|0,4,0);ea(d+28|0,0|0,4,0);ea(d+24|0,0|0,4,0);ea(d+12>>0|0,1|0,1,0);ea(da(d+4|0,4,0,0)|0|0,0|0,4,0);ea((da(l|0,4,0,0)|0|0)+(e<<2)|0,d|0,4,0);e=a+28|0;if((da(e|0,4,0,0)|0|0)>>>0>>0)ea(e|0,b|0,4,0)}while(0);return d|0}function ho(a){a=a|0;var b=0;if((a|0)!=0?(b=da(a+20|0,4,0,0)|0|0,_k(da(a|0,4,0,0)|0|0),(da(b+12|0,4,0,0)|0|0)!=0):0){b=(da(b|0,4,0,0)|0|0)+16|0;ea(b|0,(da(b|0,4,0,0)|0|0)+-1|0,4,0)}return}function io(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=a+40|0;if(da(f|0,4,0,0)|0){g=a+44|0;d=a+36|0;e=0;do{c=(da(g|0,4,0,0)|0|0)+(e<<2)|0;a=da(c|0,4,0,0)|0|0;a:do if(a)do{while(1){if((da(a+8|0,4,0,0)|0|0)>>>0>>0)break;ea(d|0,(da(d|0,4,0,0)|0|0)+-1|0,4,0);ea(c|0,da(a+16|0,4,0,0)|0|0,4,0);if(!(da(a+12>>0|0,1,0,0)|0))fo(a);ho(a);a=da(c|0,4,0,0)|0|0;if(!a)break a}c=a+16|0;a=da(c|0,4,0,0)|0|0}while((a|0)!=0);while(0);e=e+1|0}while(e>>>0<(da(f|0,4,0,0)|0|0)>>>0)}return}function jo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=da(a|0,4,0,0)|0|0;e=da((da(d+32|0,4,0,0)|0|0)+88|0,4,0,0)|0|0;f=((e|0)<0)<<31>>31;if(!((f|0)<(c|0)|(f|0)==(c|0)&e>>>0>>0)){b=pg(b,c)|0;if(!b){Qd(a);b=0}}else{ea(a+20|0,18|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(d,10096,-1,1,0)|0;b=0}return b|0}function ko(a){a=a|0;var b=0,c=0,d=0,e=0;do if(a){b=da(a>>0|0,1,0,0)|0|0;c=b<<24>>24;if((c|0)==96|(c|0)==34|(c|0)==39)e=b;else if((c|0)==91)e=93;else break;c=1;d=0;while(1){b=da(a+c>>0|0,1,0,0)|0|0;if(b<<24>>24==e<<24>>24){c=c+1|0;b=a+d|0;if((da(a+c>>0|0,1,0,0)|0|0)!=e<<24>>24)break;ea(b>>0|0,e|0,1,0)}else ea(a+d>>0|0,b|0,1,0);c=c+1|0;d=d+1|0}ea(b>>0|0,0|0,1,0)}while(0);return}function lo(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,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,O=0;L=i;i=i+176|0;if((i|0)>=(j|0))ba();I=L+64|0;m=L+132|0;l=L+128|0;k=L+124|0;n=L+56|0;G=L+48|0;J=L+136|0;H=L;h=d+0|0;g=h+48|0;do{ea(h|0,0|0,4,0);h=h+4|0}while((h|0)<(g|0));a:do if(b){e=da(c|0,4,0,0)|0|0;b:do if(((da(10064+((da(e+8|0,2,0,1)|0)&31)>>0|0,1,0,1)|0|0)+-1|0)>>>0>=2){h=Rg(e,1)|0;if(!h){e=1;break a}g=(da(h>>0|0,1,0,0)|0|0)==45;e=g?h+1|0:h;ea(I|0,4|0,4,0);ea(I+4|0,0|0,4,0);ea(I+8|0,9999|0,4,0);ea(I+12|0,45|0,4,0);ea(I+16|0,m|0,4,0);ea(I+20|0,2|0,4,0);ea(I+24|0,1|0,4,0);ea(I+28|0,12|0,4,0);ea(I+32|0,45|0,4,0);ea(I+36|0,l|0,4,0);ea(I+40|0,2|0,4,0);ea(I+44|0,1|0,4,0);ea(I+48|0,31|0,4,0);ea(I+52|0,0|0,4,0);ea(I+56|0,k|0,4,0);do if((qq(e,I)|0)==3){e=e+10|0;while(1){f=da(e>>0|0,1,0,0)|0|0;if(f<<24>>24==84?1:((da(10368+(f&255)>>0|0,1,0,0)|0)&1)!=0)e=e+1|0;else break}if(rq(e,d)|0){if(da(e>>0|0,1,0,0)|0)break;ea(d+41>>0|0,0|0,1,0)}ea(d+42>>0|0,0|0,1,0);ea(d+40>>0|0,1|0,1,0);D=da(m|0,4,0,0)|0|0;ea(d+8|0,(g?0-D|0:D)|0,4,0);ea(d+12|0,da(l|0,4,0,0)|0|0,4,0);ea(d+16|0,da(k|0,4,0,0)|0|0,4,0);if(!(da(d+43>>0|0,1,0,0)|0))break b;mo(d);break b}while(0);if(rq(h,d)|0){if(!(cd(h,20080)|0))if(!(pq(a,d)|0))break;else{e=1;break a}else e=h;while(1)if(!(da(e>>0|0,1,0,0)|0))break;else e=e+1|0;if(!(Sl(h,n,e-h&1073741823,1)|0)){e=1;break a}o=+(+da(n|0,8,1,0))*864.0e5+.5;D=+N(o)>=1.0?(o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0):0;B=d;ea(B|0,~~o>>>0|0,4,0);ea(B+4|0,D|0,4,0);ea(d+42>>0|0,1|0,1,0)}}else{o=+Tg(e)*864.0e5+.5;D=+N(o)>=1.0?(o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0):0;B=d;ea(B|0,~~o>>>0|0,4,0);ea(B+4|0,D|0,4,0);ea(d+42>>0|0,1|0,1,0)}while(0);if((b|0)>1){f=d+40|0;e=d+41|0;r=d+43|0;s=d+42|0;t=J+8|0;u=t;v=J+9|0;w=d+24|0;x=d+20|0;y=d+32|0;z=d+16|0;A=d+12|0;B=J+1|0;D=d+8|0;E=1;while(1){l=Rg(da(c+(E<<2)|0,4,0,0)|0|0,1)|0;if(!l){e=1;break a}ea(I|0,1|0,4,0);n=0;do{m=da(l+n>>0|0,1,0,0)|0|0;if(!(m<<24>>24))break;ea(J+n>>0|0,da(9328+(m&255)>>0|0,1,0,0)|0|0|0,1,0);n=n+1|0}while((n|0)<29);ea(J+n>>0|0,0|0,1,0);c:do switch(da(J>>0|0,1,0,0)|0|0){case 119:{if(!(_v(J,19976,8)|0)){n=t;while(1)if(!(da(n>>0|0,1,0,0)|0))break;else n=n+1|0;if((Sl(t,G,n-u&1073741823,1)|0)!=0?(o=+(+da(G|0,8,1,0)),F=~~o,+(F|0)==o&(F|0)>-1&o<7.0):0){no(d);oo(d);ea(r>>0|0,0|0,1,0);ea(s>>0|0,0|0,1,0);mo(d);g=d;n=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;l=iw(n|0,g|0,1296e5,0)|0;l=pw(l|0,C|0,864e5,0)|0;l=qw(l|0,C|0,7,0)|0;h=C;O=((F|0)<0)<<31>>31;k=(h|0)>(O|0)|(h|0)==(O|0)&l>>>0>F>>>0;m=iw(l|0,h|0,-7,-1)|0;h=cw(F|0,O|0,(k?m:l)|0,(k?C:h)|0)|0;h=rw(h|0,C|0,864e5,0)|0;g=iw(h|0,C|0,n|0,g|0)|0;n=d;ea(n|0,g|0,4,0);ea(n+4|0,C|0,4,0);ea(f>>0|0,0|0,1,0);ea(e>>0|0,0|0,1,0);ea(r>>0|0,0|0,1,0);ea(I|0,0|0,4,0);n=0}else K=82}else K=82;break}case 117:{if((Zv(J,19952)|0)==0?(da(s>>0|0,1,0,0)|0|0)!=0:0){g=d;g=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,43200,0)|0;g=pw(g|0,C|0,86400,0)|0;g=iw(g|0,C|0,1045635584,49096)|0;n=d;ea(n|0,g|0,4,0);ea(n+4|0,C|0,4,0);ea(f>>0|0,0|0,1,0);ea(e>>0|0,0|0,1,0);ea(r>>0|0,0|0,1,0);ea(I|0,0|0,4,0);n=0;break c}if(!(Zv(J,19968)|0)){mo(d);m=sq(d,a,I)|0;l=C;n=da(I|0,4,0,0)|0|0;if(!n){g=d;g=cw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,m|0,l|0)|0;K=d;ea(K|0,g|0,4,0);ea(K+4|0,C|0,4,0);ea(f>>0|0,0|0,1,0);ea(e>>0|0,0|0,1,0);ea(r>>0|0,0|0,1,0);K=sq(d,a,I)|0;K=cw(m|0,l|0,K|0,C|0)|0;g=d;g=iw(K|0,C|0,da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0)|0;K=d;ea(K|0,g|0,4,0);ea(K+4|0,C|0,4,0);K=82}}else K=82;break}case 108:{if(!(Zv(J,19936)|0)){mo(d);g=sq(d,a,I)|0;K=d;g=iw(da(K|0,4,0,0)|0|0,da(K+4|0,4,0,0)|0|0,g|0,C|0)|0;K=d;ea(K|0,g|0,4,0);ea(K+4|0,C|0,4,0);ea(f>>0|0,0|0,1,0);ea(e>>0|0,0|0,1,0);ea(r>>0|0,0|0,1,0);K=82}else K=82;break}case 115:{if(!(_v(J,19992,9)|0)){no(d);ea(e>>0|0,1|0,1,0);ea(w|0,0|0,4,0);ea(x|0,0|0,4,0);ea(y|0,+(0.0),8,1);ea(r>>0|0,0|0,1,0);ea(s>>0|0,0|0,1,0);if(!(Zv(v,20008)|0)){ea(z|0,1|0,4,0);ea(I|0,0|0,4,0);n=0;break c}if(!(Zv(v,20016)|0)){no(d);ea(A|0,1|0,4,0);ea(z|0,1|0,4,0);ea(I|0,0|0,4,0);n=0;break c}if(!(Zv(v,20024)|0)){ea(I|0,0|0,4,0);n=0}else K=82}else K=82;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 45:case 43:{l=1;while(1){n=J+l|0;m=da(n>>0|0,1,0,0)|0|0;if(m<<24>>24==58|m<<24>>24==0){m=n;break}if(!((da(10368+(m&255)>>0|0,1,0,0)|0)&1))l=l+1|0;else{m=n;break}}if(!(Sl(J,G,l,1)|0)){ea(I|0,1|0,4,0);n=1;break c}n=da(m>>0|0,1,0,0)|0|0;if(n<<24>>24==58){n=((da(J>>0|0,1,0,1)|0|0)+-48|0)>>>0<10?J:B;h=H+0|0;g=h+48|0;do{ea(h|0,0|0,4,0);h=h+4|0}while((h|0)<(g|0));if(rq(n,H)|0){K=82;break c}mo(H);n=H;n=iw(da(n|0,4,0,0)|0|0,da(n+4|0,4,0,0)|0|0,-432e5,-1)|0;n=qw(n|0,C|0,864e5,0)|0;m=C;g=H;ea(g|0,n|0,4,0);ea(g+4|0,m|0,4,0);if((da(J>>0|0,1,0,0)|0|0)==45){n=cw(0,0,n|0,m|0)|0;m=C;g=H;ea(g|0,n|0,4,0);ea(g+4|0,m|0,4,0)}mo(d);ea(f>>0|0,0|0,1,0);ea(e>>0|0,0|0,1,0);ea(r>>0|0,0|0,1,0);g=d;g=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,n|0,m|0)|0;n=d;ea(n|0,g|0,4,0);ea(n+4|0,C|0,4,0);ea(I|0,0|0,4,0);n=0;break c}if((da(10368+(n&255)>>0|0,1,0,0)|0)&1){m=J+(l+1)|0;while(1){n=da(m>>0|0,1,0,0)|0|0;if(!((da(10368+(n&255)>>0|0,1,0,0)|0)&1))break;else m=m+1|0}}if(!(n<<24>>24))n=m;else{n=m;do n=n+1|0;while((da(n>>0|0,1,0,0)|0|0)!=0)}n=n-m&1073741823;if((n+-3|0)>>>0>7)K=82;else{l=n+-1|0;k=m+l|0;if((da(k>>0|0,1,0,0)|0|0)==115){ea(k>>0|0,0|0,1,0);n=l}mo(d);ea(I|0,0|0,4,0);p=+(+da(G|0,8,1,0));q=p<0.0?-.5:.5;do if((n|0)==3)if(!(Zv(m,20024)|0)){o=p*864.0e5+q;h=+N(o)>=1.0?(o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0):0;g=d;h=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,~~o>>>0|0,h|0)|0;g=d;ea(g|0,h|0,4,0);ea(g+4|0,C|0,4,0)}else K=80;else if((n|0)==4){if(!(Zv(m,20032)|0)){o=p*36.0e5+q;h=+N(o)>=1.0?(o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0):0;g=d;h=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,~~o>>>0|0,h|0)|0;g=d;ea(g|0,h|0,4,0);ea(g+4|0,C|0,4,0);break}if(!(Zv(m,20016)|0)){g=~~p;no(d);oo(d);ea(D|0,(da(D|0,4,0,0)|0|0)+g|0,4,0);ea(s>>0|0,0|0,1,0);mo(d);o=+(g|0);if(o!=p){o=q+(p-o)*365.0*864.0e5;h=+N(o)>=1.0?(o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0):0;g=d;h=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,~~o>>>0|0,h|0)|0;g=d;ea(g|0,h|0,4,0);ea(g+4|0,C|0,4,0)}}else K=80}else if((n|0)==6){if(!(Zv(m,20040)|0)){o=p*6.0e4+q;h=+N(o)>=1.0?(o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0):0;g=d;h=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,~~o>>>0|0,h|0)|0;g=d;ea(g|0,h|0,4,0);ea(g+4|0,C|0,4,0);break}if(!(Zv(m,20048)|0)){o=p*1.0e3+q;h=+N(o)>=1.0?(o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0):0;g=d;h=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,~~o>>>0|0,h|0)|0;g=d;ea(g|0,h|0,4,0);ea(g+4|0,C|0,4,0)}else K=80}else if((n|0)==5?(Zv(m,20008)|0)==0:0){no(d);oo(d);g=~~p;h=(da(A|0,4,0,0)|0|0)+g|0;k=(((h|0)>0?-1:-12)+h|0)/12|0;ea(D|0,(da(D|0,4,0,0)|0|0)+k|0,4,0);ea(A|0,(_(k,-12)|0)+h|0,4,0);ea(s>>0|0,0|0,1,0);mo(d);o=+(g|0);if(o!=p){o=q+(p-o)*30.0*864.0e5;h=+N(o)>=1.0?(o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0):0;g=d;h=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,~~o>>>0|0,h|0)|0;g=d;ea(g|0,h|0,4,0);ea(g+4|0,C|0,4,0)}}else K=80;while(0);if((K|0)==80)ea(I|0,1|0,4,0);ea(f>>0|0,0|0,1,0);ea(e>>0|0,0|0,1,0);ea(r>>0|0,0|0,1,0);K=82}break}default:K=82}while(0);if((K|0)==82){K=0;n=da(I|0,4,0,0)|0|0}E=E+1|0;if(n){e=1;break a}if((E|0)>=(b|0)){e=0;break a}}}else e=0}else e=pq(a,d)|0;while(0);i=L;return e|0}function mo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0.0;f=a+42|0;if(!(da(f>>0|0,1,0,0)|0)){g=a+40|0;if(da(g>>0|0,1,0,0)|0){c=da(a+8|0,4,0,0)|0|0;b=da(a+12|0,4,0,0)|0|0;d=da(a+16|0,4,0,0)|0|0;if((b|0)<3)e=4}else{d=1;b=1;c=2e3;e=4}if((e|0)==4){b=b+12|0;c=c+-1|0}k=(+(d+2+((c|0)/-100|0)+((c|0)/400|0)+(((c*36525|0)+172251900|0)/100|0)+(((b*306001|0)+306001|0)/1e4|0)|0)+-1524.5)*864.0e5;c=~~k>>>0;d=+N(k)>=1.0?(k>0.0?~~+$(+M(k/4294967296.0),4294967295.0)>>>0:~~+Z((k-+(~~k>>>0))/4294967296.0)>>>0):0;b=a;ea(b|0,c|0,4,0);ea(b+4|0,d|0,4,0);ea(f>>0|0,1|0,1,0);b=a+41|0;if((da(b>>0|0,1,0,0)|0|0)!=0?(h=_(da(a+20|0,4,0,0)|0|0,36e5)|0,h=((da(a+24|0,4,0,0)|0|0)*6e4|0)+h|0,k=+(+da(a+32|0,8,1,0))*1.0e3,i=iw(~~k>>>0|0,(+N(k)>=1.0?(k>0.0?~~+$(+M(k/4294967296.0),4294967295.0)>>>0:~~+Z((k-+(~~k>>>0))/4294967296.0)>>>0):0)|0,c|0,d|0)|0,h=iw(i|0,C|0,h|0,((h|0)<0)<<31>>31|0)|0,i=C,j=a,ea(j|0,h|0,4,0),ea(j+4|0,i|0,4,0),j=a+43|0,(da(j>>0|0,1,0,0)|0|0)!=0):0){d=(da(a+28|0,4,0,0)|0|0)*6e4|0;d=cw(h|0,i|0,d|0,((d|0)<0)<<31>>31|0)|0;c=a;ea(c|0,d|0,4,0);ea(c+4|0,C|0,4,0);ea(g>>0|0,0|0,1,0);ea(b>>0|0,0|0,1,0);ea(j>>0|0,0|0,1,0)}}return}function no(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=a+40|0;if(!(da(e>>0|0,1,0,0)|0)){if(!(da(a+42>>0|0,1,0,0)|0)){b=2e3;c=1;d=1}else{b=a;b=iw(da(b|0,4,0,0)|0|0,da(b+4|0,4,0,0)|0|0,432e5,0)|0;b=pw(b|0,C|0,864e5,0)|0;f=~~((+(b|0)+-1867216.25)/36524.25);f=b+1525+f+((f|0)/-4|0)|0;b=~~((+(f|0)+-122.1)/365.25);f=f-((b*36525|0)/100|0)|0;d=~~(+(f|0)/30.6001);c=((d|0)<14?-1:-13)+d|0;b=((c|0)>2?-4716:-4715)+b|0;d=f-~~(+(d|0)*30.6001)|0}ea(a+16|0,d|0,4,0);ea(a+12|0,c|0,4,0);ea(a+8|0,b|0,4,0);ea(e>>0|0,1|0,1,0)}return}function oo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0.0;b=a+41|0;if(!(da(b>>0|0,1,0,0)|0)){mo(a);e=a;e=iw(da(e|0,4,0,0)|0|0,da(e+4|0,4,0,0)|0|0,432e5,0)|0;e=qw(e|0,C|0,864e5,0)|0;f=+(e|0)/1.0e3;e=~~f;d=(e|0)/3600|0;ea(a+20|0,d|0,4,0);d=(_(d,-3600)|0)+e|0;c=(d|0)/60|0;ea(a+24|0,c|0,4,0);ea(a+32|0,+(f-+(e|0)+ +(d+(_(c,-60)|0)|0)),8,1);ea(b>>0|0,1|0,1,0)}return}function po(a){a=a|0;lg(da(a+52|0,4,0,0)|0|0,a);return}function qo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=a+65|0;do if(!(da(f>>0|0,1,0,0)|0)){if(!b){e=lh(a,c,d)|0;break}if((da(a+276|0,4,0,0)|0|0)>>>0<=b>>>0?(da(a+280|0,4,0,0)|0|0)>>>0>b>>>0:0){f=a+248|0;if(!(0>>0|(0==(d|0)?(da(f|0,2,0,1)|0|0)>>>0>>0:0))){e=b;break}e=lh(a,c,d)|0;if(!e){e=0;break}jw(e|0,b|0,da(f|0,2,0,1)|0|0)|0;lg(a,b);break}if((Kc()|0)==0?(e=qg(b,c,d)|0,(e|0)!=0):0)break;ea(f>>0|0,1|0,1,0);e=0}else e=0;while(0);return e|0}function ro(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a)a=0;else{d=da(a+4|0,4,0,0)|0|0;ea(d+4|0,da(a|0,4,0,0)|0|0,4,0);d=d+22|0;a=da(d|0,2,0,0)|0|0;if((b|0)>-1){c=a&65535;a=c&65531;ea(d|0,a|0,2,0);if(b){a=(c|4)&65535;ea(d|0,a|0,2,0)}}a=(a&65535)>>>2&1}return a|0}function so(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=da(a+4|0,4,0,0)|0|0;ea(e+4|0,da(a|0,4,0,0)|0|0,4,0);e=da(e|0,4,0,0)|0|0;c=b&3;if((c|0)!=1){d=da(e+12>>0|0,1,0,0)|0|0;a=e+7|0;ea(a>>0|0,d<<24>>24!=0&1|0,1,0);if((c|0)==3)d=d<<24>>24==0&1;else d=0}else{a=e+7|0;ea(a>>0|0,1|0,1,0);d=0}ea(e+8>>0|0,d|0,1,0);do if(!(da(a>>0|0,1,0,0)|0)){if(b&4){ea(e+11>>0|0,3|0,1,0);ea(e+9>>0|0,3|0,1,0);a=3;break}ea(e+11>>0|0,2|0,1,0);a=e+9|0;if(!(b&8)){ea(a>>0|0,2|0,1,0);a=2;break}else{ea(a>>0|0,3|0,1,0);a=2;break}}else{ea(e+11>>0|0,0|0,1,0);ea(e+9>>0|0,0|0,1,0);a=0}while(0);if(d<<24>>24)a=(a&255|32)&255;ea(e+10>>0|0,a|0,1,0);c=e+20|0;a=da(c>>0|0,1,0,1)|0|0;ea(c>>0|0,((b&16|0)==0?a|1:a&254)|0,1,0);return}function to(a){a=a|0;var b=0,c=0;c=a+12|0;b=da(c|0,4,0,0)|0|0;if((b|0)>-1){$n(a,b,27311);ea(c|0,-1|0,4,0)}Vc(da(a+28|0,4,0,0)|0|0);b=a+0|0;c=b+44|0;do{ea(b|0,0|0,4,0);b=b+4|0}while((b|0)<(c|0));return}function uo(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;h=e&131071;while(1){g=bb(a|0,b|0,0)|0;if(!((g|0)==(b|0)&(((g|0)<0)<<31>>31|0)==(c|0))){i=3;break}g=$b[(fa(da(47552+136|0,4,0,0)|0|0,63|0)|0)&63](a,d,h)|0;if((g|0)>=0)break;e=da(Gb()|0|0,4,0,0)|0|0;if((e|0)!=4){i=9;break}}if((i|0)==3)if(!f)g=-1;else{if((g|0)==-1)g=da(Gb()|0|0,4,0,0)|0|0;else g=0;ea(f|0,g|0,4,0);g=-1}else if((i|0)==9)if(f)ea(f|0,e|0,4,0);return g|0}function vo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=da(c|0,4,0,0)|0|0;do if((d|0)>=0){b=b&255;if(!d){c=a+18|0;ea(c|0,(da(c|0,2,0,1)|0|0)&(b^65535)|0,2,0);break}else{c=a+18|0;ea(c|0,da(c|0,2,0,1)|0|0|b|0,2,0);break}}else ea(c|0,((da(a+18|0,2,0,1)|0|0)&(b&255)|0)!=0&1|0,4,0);while(0);return}function wo(a){a=a|0;var b=0,c=0,d=0;d=i;i=i+80|0;if((i|0)>=(j|0))ba();c=d;b=a+8|0;if(da(b|0,4,0,0)|0)if(!(qc[(fa(da(47552+52|0,4,0,0)|0|0,127|0)|0)&127](da(a+32|0,4,0,0)|0|0,c)|0))b=(da(c+72|0,4,0,0)|0|0)!=(da((da(b|0,4,0,0)|0|0)+4|0,4,0,0)|0|0);else b=1;else b=0;i=d;return b&1|0}function xo(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;h=i;i=i+32|0;if((i|0)>=(j|0))ba();g=h;f=h+8|0;e=(da((da(a+8|0,4,0,0)|0|0)+20|0,4,0,0)|0|0)+12|0;if((da(e|0,4,0,0)|0|0)>-1){ea(f+0|0,0|0,4,0);ea(f+4|0,0|0,4,0);ea(f+8|0,0|0,4,0);ea(f+12|0,0|0,4,0);ea(f|0,b|0,2,0);ea(f+2|0,0|0,2,0);ea(f+4|0,c|0,4,0);ea(f+8|0,d|0,4,0);b=a+18|0;d=(((da(b|0,2,0,0)|0)&512)>>>9)+13|0;c=da(11910*4|0,4,0,0)|0|0;e=da(e|0,4,0,0)|0|0;ea(g|0,f|0,4,0);e=($b[(fa(c|0,63|0)|0)&63](e,d,g)|0)!=-1;ea(b|0,(da(b|0,2,0,1)|0|0)&65023|0,2,0);e=e?0:5}else e=0;i=h;return e|0}function yo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;h=da((da(a+8|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;if((h|0)!=0?(da(h+28|0,4,0,0)|0|0)==0:0){b=gc[(fa(da(47552+292|0,4,0,0)|0|0,7|0)|0)&7]()|0;if((b|0)<32768)d=1;else d=(b|0)/32768|0;e=h+20|0;if(!(da(e|0,2,0,0)|0)){c=h+12|0;b=h+24|0}else{c=h+12|0;b=h+24|0;f=h+16|0;g=0;do{if((da(c|0,4,0,0)|0|0)>-1)qc[(fa(da(47552+268|0,4,0,0)|0|0,127|0)|0)&127](da((da(b|0,4,0,0)|0|0)+(g<<2)|0,4,0,0)|0|0,da(f|0,4,0,0)|0|0)|0;else Vc(da((da(b|0,4,0,0)|0|0)+(g<<2)|0,4,0,0)|0|0);g=g+d|0}while((g|0)<(da(e|0,2,0,1)|0|0))}Vc(da(b|0,4,0,0)|0|0);b=da(c|0,4,0,0)|0|0;if((b|0)>-1){$n(a,b,29591);ea(c|0,-1|0,4,0)}ea((da(h|0,4,0,0)|0|0)+20|0,0|0,4,0);Vc(h)}return}function zo(a){a=a|0;var b=0,c=0,d=0;c=(da(a+8|0,4,0,0)|0|0)+28|0;b=da(c|0,4,0,0)|0|0;if(b)do{d=b;b=da(b+8|0,4,0,0)|0|0;$n(a,da(d|0,4,0,0)|0|0,26573);Vc(d)}while((b|0)!=0);ea(c|0,0|0,4,0);return}function Ao(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+32|0;if((i|0)>=(j|0))ba();e=g;d=g+8|0;f=da(a+8|0,4,0,0)|0|0;c=da(a+18|0,2,0,0)|0|0;if(!(c&1))if((da(f+13>>0|0,1,0,0)|0|0)!=0&(c&2)==0)c=4;else c=7;else if(!(c&2))c=4;else c=7;if((c|0)==4){c=f+13|0;if(!(da(c>>0|0,1,0,0)|0)){ea(d+2|0,0|0,2,0);ea(d+4|0,(da(2514*4|0,4,0,0)|0|0)+2|0,4,0);ea(d+8|0,510|0,4,0);ea(d|0,1|0,2,0);h=da(11910*4|0,4,0,0)|0|0;b=da(a+12|0,4,0,0)|0|0;ea(e|0,d|0,4,0);b=$b[(fa(h|0,63|0)|0)&63](b,13,e)|0;if((b|0)>=0){ea(c>>0|0,1|0,1,0);c=f+24|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0)}}else b=0}else if((c|0)==7){d=da(11910*4|0,4,0,0)|0|0;c=da(a+12|0,4,0,0)|0|0;ea(e|0,b|0,4,0);b=$b[(fa(d|0,63|0)|0)&63](c,13,e)|0}i=g;return b|0}function Bo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;do if(b){e=da(b|0,4,0,0)|0|0;if(!e){ea(b|0,1|0,4,0);ea(b+4|0,c|0,4,0);f=9;break}g=b+4|0;d=da(g|0,4,0,0)|0|0;ea(b|0,e+1|0,4,0);ea(g|0,c|0,4,0);if(d){ea(c|0,d|0,4,0);d=d+4|0;ea(c+4|0,da(d|0,4,0,0)|0|0,4,0);e=da(d|0,4,0,0)|0|0;if(!e)ea(a+8|0,c|0,4,0);else ea(e|0,c|0,4,0);ea(d|0,c|0,4,0)}else f=9}else f=9;while(0);if((f|0)==9){d=a+8|0;e=da(d|0,4,0,0)|0|0;ea(c|0,e|0,4,0);if(e)ea(e+4|0,c|0,4,0);ea(c+4|0,0|0,4,0);ea(d|0,c|0,4,0)}return}function Co(a,b){a=a|0;b=b|0;var c=0,d=0;if(b){if((da(b|0,4,0,0)|0|0)>0){c=0;d=b+8|0;while(1){lg(a,da(d+4|0,4,0,0)|0|0);lg(a,da(d+8|0,4,0,0)|0|0);lg(a,da(d+12|0,4,0,0)|0|0);lg(a,da(d+64|0,4,0,0)|0|0);jg(a,da(d+16|0,4,0,0)|0|0);Lk(a,da(d+20|0,4,0,0)|0|0,1);Fk(a,da(d+44|0,4,0,0)|0|0);Gk(a,da(d+48|0,4,0,0)|0|0);c=c+1|0;if((c|0)>=(da(b|0,4,0,0)|0|0))break;else d=d+72|0}}lg(a,b)}return}function Do(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;c=Eo(a,c)|0;if((c|0)>0){d=a+12|0;jw((da(a+8|0,4,0,0)|0|0)+(da(d|0,4,0,0)|0|0)|0,b|0,c|0)|0;ea(d|0,(da(d|0,4,0,0)|0|0)+c|0,4,0)}return}function Eo(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,k=0,l=0,m=0,n=0,o=0;g=a+25|0;do if(!(da(g>>0|0,1,0,0)|0)){d=da(a+24>>0|0,1,0,0)|0|0;if(!(d<<24>>24)){c=a+16|0;b=(da(c|0,4,0,0)|0|0)+-1-(da(a+12|0,4,0,0)|0|0)|0;ea(g>>0|0,2|0,1,0);ea(c|0,0|0,4,0);break}h=a+8|0;c=da(h|0,4,0,0)|0|0;e=(c|0)==(da(a+4|0,4,0,0)|0|0)?0:c;f=a+12|0;l=da(f|0,4,0,0)|0|0;c=((l|0)<0)<<31>>31;o=b+1|0;o=iw(l|0,c|0,o|0,((o|0)<0)<<31>>31|0)|0;m=C;c=iw(o|0,m|0,l|0,c|0)|0;l=C;j=da(a+20|0,4,0,0)|0|0;k=((j|0)<0)<<31>>31;n=(l|0)>(k|0)|(l|0)==(k|0)&c>>>0>j>>>0;c=n?o:c;l=n?m:l;if((l|0)>(k|0)|(l|0)==(k|0)&c>>>0>j>>>0){fn(a);ea(g>>0|0,2|0,1,0);ea(a+16|0,0|0,4,0);b=0;break}j=a+16|0;ea(j|0,c|0,4,0);if(d<<24>>24==1)d=qo(da(a|0,4,0,0)|0|0,e,c,((c|0)<0)<<31>>31)|0;else d=Wc(e,c)|0;if(!d){fn(a);ea(g>>0|0,1|0,1,0);ea(j|0,0|0,4,0);b=0;break}if((e|0)==0?(i=da(f|0,4,0,0)|0|0,(i|0)>0):0)jw(d|0,da(h|0,4,0,0)|0|0,i|0)|0;ea(h|0,d|0,4,0);c=da(a|0,4,0,0)|0|0;do if(!c)c=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](d)|0;else{if((da(c+276|0,4,0,0)|0|0)>>>0<=d>>>0?(da(c+280|0,4,0,0)|0|0)>>>0>d>>>0:0){c=da(c+248|0,2,0,1)|0|0;break}c=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](d)|0}while(0);ea(j|0,c|0,4,0)}else b=0;while(0);return b|0}function Fo(a){a=a|0;var b=0,c=0;if((da(3154*4|0,4,0,0)|0|0)>=(a|0)?(b=da(3160*4|0,4,0,0)|0|0,(b|0)!=0):0){ea(3160*4|0,da(b|0,4,0,0)|0|0,4,0);c=da(3161*4|0,4,0,0)|0|0;ea(3161*4|0,c+-1|0,4,0);ea(3162*4|0,(c|0)<=(da(3156*4|0,4,0,0)|0|0)&1|0,4,0);ea(2173*4|0,a|0,4,0);if((da(2183*4|0,4,0,0)|0|0)>>>0>>0)ea(2183*4|0,a|0,4,0);c=(da(2167*4|0,4,0,0)|0|0)+1|0;ea(2167*4|0,c|0,4,0);if(c>>>0>(da(2177*4|0,4,0,0)|0|0)>>>0)ea(2177*4|0,c|0,4,0)}else{b=pg(a,((a|0)<0)<<31>>31)|0;if(b){c=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](b)|0;ea(2173*4|0,a|0,4,0);if((da(2183*4|0,4,0,0)|0|0)>>>0>>0)ea(2183*4|0,a|0,4,0);c=(da(2168*4|0,4,0,0)|0|0)+c|0;ea(2168*4|0,c|0,4,0);if(c>>>0>(da(2178*4|0,4,0,0)|0|0)>>>0)ea(2178*4|0,c|0,4,0)}else b=0}return b|0}function Go(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=a+20|0;if(da(f|0,4,0,0)|0){d=a+24|0;g=$b[(fa(da(8744+120|0,4,0,0)|0|0,63|0)|0)&63](b,(da(d|0,4,0,0)|0|0)+40|0,da(a+28>>0|0,1,0,1)|0|0)|0;if(!g)c=7;else{e=da(2217*4|0,4,0,0)|0|0;c=da(a+16|0,4,0,0)|0|0;if((c|0)<=-1){h=rw(c|0,((c|0)<0)<<31>>31|0,-1024,-1)|0;c=(da(d|0,4,0,0)|0|0)+(da(f|0,4,0,0)|0|0)|0;c=pw(h|0,C|0,c|0,((c|0)<0)<<31>>31|0)|0}ic[(fa(e|0,15|0)|0)&15](g,c);c=a+40|0;d=da(c|0,4,0,0)|0|0;if(d)bc[(fa(da(8744+148|0,4,0,0)|0|0,31|0)|0)&31](d);ea(c|0,g|0,4,0);ea(a+44|0,0|0,4,0);ea(f|0,b|0,4,0);c=0}}else c=0;return c|0}function Ho(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;d=da(a+208|0,4,0,0)|0|0;if(((d|0)!=0?(da(d+40|0,2,0,0)|0|0)>-1:0)?(c=da(d+72|0,4,0,0)|0|0,(c|0)!=0):0){d=c;f=8}else f=4;do if((f|0)==4){d=e;ea(d|0,0|0,4,0);ea(d+4|0,0|0,4,0);d=da(a+60|0,4,0,0)|0|0;c=da(d|0,4,0,0)|0|0;if(!c){c=-1;d=-1}else{c=qc[(fa(da(c+24|0,4,0,0)|0|0,127|0)|0)&127](d,e)|0;if(c)break;c=e;c=iw(da(c|0,4,0,0)|0|0,da(c+4|0,4,0,0)|0|0,-1,-1)|0;d=C}e=da(a+152|0,4,0,0)|0|0;f=((e|0)<0)<<31>>31;d=iw(c|0,d|0,e|0,f|0)|0;d=pw(d|0,C|0,e|0,f|0)|0;f=8}while(0);if((f|0)==8){c=a+156|0;if(d>>>0>(da(c|0,4,0,0)|0|0)>>>0)ea(c|0,d|0,4,0);ea(b|0,d|0,4,0);c=0}i=g;return c|0}function Io(a){a=a|0;var b=0,c=0;c=a+64|0;if(!((da(a+7>>0|0,1,0,0)|0|0)==0?(b=da(c|0,4,0,0)|0|0,b=qc[(fa(da((da(b|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](b,2)|0,(b|0)!=0):0)){b=da(c|0,4,0,0)|0|0;b=qc[(fa(da((da(b|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](b,a+80|0)|0}return b|0}function Jo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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,D=0;D=i;i=i+48|0;if((i|0)>=(j|0))ba();A=D+16|0;z=D+8|0;y=D+36|0;u=D;m=D+32|0;t=D+28|0;x=D+24|0;d=da(a|0,4,0,0)|0|0;ea(t|0,0|0,4,0);ea(x|0,1|0,4,0);w=a+64|0;e=da(w|0,4,0,0)|0|0;e=qc[(fa(da((da(e|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](e,u)|0;a:do if(!e){v=a+200|0;e=da(v|0,4,0,0)|0|0;f=tq(da(w|0,4,0,0)|0|0,e,(da((da(a|0,4,0,0)|0|0)+8|0,4,0,0)|0|0)+1|0)|0;if(!f){if(!(da(e>>0|0,1,0,0)|0))e=0;else e=oc[(fa(da(d+32|0,4,0,0)|0|0,31|0)|0)&31](d,e,0,x)|0;b:do if((e|0)==0&(da(x|0,4,0,0)|0|0)!=0){s=a+72|0;r=s;ea(r|0,0|0,4,0);ea(r+4|0,0|0,4,0);r=a+148|0;q=a+152|0;p=a+80|0;o=a+24|0;d=0;g=b;c:while(1){do{e=u;e=uq(a,b,da(e|0,4,0,0)|0|0,da(e+4|0,4,0,0)|0|0,m,t)|0;if((e|0)==101)break c;else if(e){B=27;break b}f=da(m|0,4,0,0)|0|0;if((f|0)==-1){e=u;e=cw(da(e|0,4,0,0)|0|0,da(e+4|0,4,0,0)|0|0,da(r|0,4,0,0)|0|0,0)|0;f=(da(q|0,4,0,0)|0|0)+8|0;f=pw(e|0,C|0,f|0,((f|0)<0)<<31>>31|0)|0;ea(m|0,f|0,4,0)}if(!(f|b)){h=p;e=da(r|0,4,0,0)|0|0;h=iw(e|0,0,da(h|0,4,0,0)|0|0,da(h+4|0,4,0,0)|0|0)|0;l=C;k=s;n=da(k|0,4,0,0)|0|0;k=da(k+4|0,4,0,0)|0|0;if((h|0)==(n|0)&(l|0)==(k|0)){k=u;k=cw(da(k|0,4,0,0)|0|0,da(k+4|0,4,0,0)|0|0,h|0,l|0)|0;f=(da(q|0,4,0,0)|0|0)+8|0;f=pw(k|0,C|0,f|0,((f|0)<0)<<31>>31|0)|0;ea(m|0,f|0,4,0);k=l}else h=n}else{h=s;e=da(r|0,4,0,0)|0|0;k=da(h+4|0,4,0,0)|0|0;h=da(h|0,4,0,0)|0|0}if((h|0)==(e|0)&(k|0)==0){e=da(t|0,4,0,0)|0|0;h=Al(a,e)|0;if(h){c=h;B=25;break a}ea(o|0,e|0,4,0)}}while((f|0)==0);h=0;while(1){if(g)wn(a);e=vq(a,s,0,1,0)|0;if((e|0)==101)break;else if((e|0)==522)break c;else if(e){B=27;break b}d=d+1|0;e=h+1|0;if(e>>>0>>0){g=0;h=e}else{g=0;continue c}}f=u;g=da(f+4|0,4,0,0)|0|0;e=s;ea(e|0,da(f|0,4,0,0)|0|0,4,0);ea(e+4|0,g|0,4,0);g=0}ea(a+18>>0|0,da(a+12>>0|0,1,0,0)|0|0|0,1,0);t=d}else{d=0;B=27}while(0);if((B|0)==27){ea(a+18>>0|0,da(a+12>>0|0,1,0,0)|0|0|0,1,0);if(!e)t=d;else{c=e;break}}s=da(v|0,4,0,0)|0|0;e=tq(da(w|0,4,0,0)|0|0,s,(da((da(a|0,4,0,0)|0|0)+8|0,4,0,0)|0|0)+1|0)|0;if(!e){if(((da(a+16>>0|0,1,0,0)|0|0)+-1&255)>2?(c=Hg(a,0)|0,(c|0)!=0):0){d=t;break}c=Bl(a,(da(s>>0|0,1,0,0)|0|0)!=0&1,0)|0;if(!c)if((da(s>>0|0,1,0,0)|0|0)!=0&(da(x|0,4,0,0)|0|0)!=0){q=da(a|0,4,0,0)|0|0;e=q+4|0;d=(da(e|0,4,0,0)|0)<<1;r=pg(d,((d|0)<0)<<31>>31)|0;if(!r){d=t;c=7}else{ew(r|0,0,d|0)|0;o=r+(da(e|0,4,0,0)|0|0)|0;p=q+24|0;c=sc[(fa(da(p|0,4,0,0)|0|0,31|0)|0)&31](q,s,r,16385,0)|0;d:do if(!c){c=qc[(fa(da((da(r|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](r,z)|0;if(!c){m=(da(q+8|0,4,0,0)|0|0)+1|0;d=z;d=iw(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0,1,0)|0;d=iw(d|0,C|0,m|0,((m|0)<0)<<31>>31|0)|0;d=pg(d,C)|0;if(d){n=z;c=da(n|0,4,0,0)|0|0;n=iw(c|0,da(n+4|0,4,0,0)|0|0,1,0)|0;n=d+n|0;c=sc[(fa(da((da(r|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](r,d,c,0,0)|0;if(!c){ea(d+(da(z|0,4,0,0)|0|0)>>0|0,0|0,1,0);l=d;x=z;w=da(x+4|0,4,0,0)|0|0;if((w|0)>0|(w|0)==0&(da(x|0,4,0,0)|0|0)>>>0>0){h=q+32|0;k=l;g=d;do{c=oc[(fa(da(h|0,4,0,0)|0|0,31|0)|0)&31](q,g,0,y)|0;if(c){B=55;break d}do if(da(y|0,4,0,0)|0){c=sc[(fa(da(p|0,4,0,0)|0|0,31|0)|0)&31](q,g,o,2049,0)|0;if(c){B=55;break d}c=tq(o,n,m)|0;f=da(o|0,4,0,0)|0|0;if(f){kc[(fa(da(f+4|0,4,0,0)|0|0,127|0)|0)&127](o)|0;ea(o|0,0|0,4,0)}if(c){B=55;break d}if(!(da(n>>0|0,1,0,0)|0))break;if(!(Zv(n,s)|0)){c=0;B=55;break d}}while(0);if(!g)f=1;else{f=g;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;f=(f-k&1073741823)+1|0}g=g+f|0;k=g;f=k-l|0;w=((f|0)<0)<<31>>31;e=z;x=da(e+4|0,4,0,0)|0|0}while((w|0)<(x|0)|((w|0)==(x|0)?f>>>0<(da(e|0,4,0,0)|0|0)>>>0:0))}c=da(r|0,4,0,0)|0|0;if(c){kc[(fa(da(c+4|0,4,0,0)|0|0,127|0)|0)&127](r)|0;ea(r|0,0|0,4,0)}c=$b[(fa(da(q+28|0,4,0,0)|0|0,63|0)|0)&63](q,s,0)|0;Vc(d)}else B=55}else{c=7;d=0;B=55}}else{d=0;B=55}}else{d=0;B=55}while(0);if((B|0)==55)Vc(d);d=da(r|0,4,0,0)|0|0;if(d){kc[(fa(da(d+4|0,4,0,0)|0|0,127|0)|0)&127](r)|0;ea(r|0,0|0,4,0)}Vc(r);d=t}}else{d=t;c=0}else d=t}else{d=t;c=e}}else{d=0;c=f;B=25}}else{d=0;c=e;B=25}while(0);if((B|0)==25)ea(a+18>>0|0,da(a+12>>0|0,1,0,0)|0|0|0,1,0);if((b|0)!=0&(d|0)!=0){z=da(a+172|0,4,0,0)|0|0;ea(A|0,d|0,4,0);ea(A+4|0,z|0,4,0);ad(539,14776,A)}vp(a);i=D;return c|0}function Ko(a){a=a|0;var b=0,c=0;b=a+44|0;if(da(b>>0|0,1,0,0)|0){if(!(da(a+43>>0|0,1,0,0)|0)){c=da(a+4|0,4,0,0)|0|0;oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,0,1,9)|0}ea(b>>0|0,0|0,1,0);ea(a+47>>0|0,0|0,1,0)}b=a+40|0;c=da(b|0,2,0,0)|0|0;if(c<<16>>16>-1){if(!(da(a+43>>0|0,1,0,0)|0)){a=da(a+4|0,4,0,0)|0|0;oc[(fa(da((da(a|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](a,(c<<16>>16)+3|0,1,5)|0}ea(b|0,-1|0,2,0)}return}function Lo(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,k=0;if((d|0)>5)if((d|0)>100)c=15;else{if((d|0)>9){d=d+-9|0;d=_(d*39|0,d)|0}else d=1;e=da(a|0,4,0,0)|0|0;qc[(fa(da(e+60|0,4,0,0)|0|0,127|0)|0)&127](e,d)|0;e=6}else e=6;a:do if((e|0)==6){do if(!c){c=mq(a,b)|0;do if((c|0)==5){if(!(da(da(a+32|0,4,0,0)|0|0,4,0,0)|0)){c=-1;break a}b=a+43|0;if(da(b>>0|0,1,0,0)|0){c=-1;break a}d=a+4|0;c=da(d|0,4,0,0)|0|0;c=oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,2,1,6)|0;if((c|0)==5){c=261;break a}else if(c)break;if(da(b>>0|0,1,0,0)|0){c=-1;break a}c=da(d|0,4,0,0)|0|0;oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,2,1,5)|0;c=-1;break a}while(0);if(c)break a;d=a+32|0;g=(da(da(d|0,4,0,0)|0|0,4,0,0)|0|0)+96|0;b=a+52|0;if((da(g|0,4,0,0)|0|0)==(da(a+68|0,4,0,0)|0|0)){f=a+43|0;e=da(f>>0|0,1,0,0)|0|0;if(!(e<<24>>24)){c=da(a+4|0,4,0,0)|0|0;c=oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,3,1,6)|0;e=da(f>>0|0,1,0,0)|0|0}else c=0;if(e<<24>>24!=2){k=da(a+4|0,4,0,0)|0|0;bc[(fa(da((da(k|0,4,0,0)|0|0)+60|0,4,0,0)|0|0,31|0)|0)&31](k)}if((c|0)==5){k=d;d=5;break}else if(c)break a;if(!(Yv(da(da(d|0,4,0,0)|0|0,4,0,0)|0|0,b,48)|0)){ea(a+40|0,0|0,2,0);c=0;break a}if(da(f>>0|0,1,0,0)|0){c=-1;break a}c=da(a+4|0,4,0,0)|0|0;oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,3,1,5)|0;c=-1;break a}else{k=d;d=0}}else{g=a+32|0;k=g;g=(da(da(g|0,4,0,0)|0|0,4,0,0)|0|0)+96|0;d=0}while(0);j=a+68|0;b=da(g+8|0,4,0,0)|0|0;f=b>>>0>(da(j|0,4,0,0)|0|0)>>>0;b=f?0:b;f=f&1^1;e=da(g+12|0,4,0,0)|0|0;if(b>>>0<=e>>>0){i=e>>>0>(da(j|0,4,0,0)|0|0)>>>0;f=i?f:2;b=i?b:e}e=da(g+16|0,4,0,0)|0|0;if(b>>>0<=e>>>0){i=e>>>0>(da(j|0,4,0,0)|0|0)>>>0;f=i?f:3;b=i?b:e}e=da(g+20|0,4,0,0)|0|0;if(b>>>0<=e>>>0){i=e>>>0>(da(j|0,4,0,0)|0|0)>>>0;f=i?f:4;b=i?b:e}b:do if(((da(a+46>>0|0,1,0,0)|0)&2)==0?((f|0)==0?1:b>>>0<(da(j|0,4,0,0)|0|0)>>>0):0){i=a+43|0;h=a+4|0;e=1;while(1){d=e+3|0;if(da(i>>0|0,1,0,0)|0){f=e;break}c=da(h|0,4,0,0)|0|0;c=oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,d,1,10)|0;if(!c){f=e;break}else if((c|0)!=5)break a;e=e+1|0;if((e|0)>=5){d=5;break b}}e=da(j|0,4,0,0)|0|0;ea(g+(f<<2)+4|0,e|0,4,0);if(!(da(i>>0|0,1,0,0)|0)){b=da(h|0,4,0,0)|0|0;oc[(fa(da((da(b|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](b,d,1,9)|0;b=e;d=0}else{b=e;d=0}}while(0);if(!f){c=(d|0)==5?-1:520;break}d=f+3|0;c=a+43|0;e=da(c>>0|0,1,0,0)|0|0;do if(!(e<<24>>24)){e=da(a+4|0,4,0,0)|0|0;e=oc[(fa(da((da(e|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](e,d,1,6)|0;if(!e){e=da(c>>0|0,1,0,0)|0|0;break}else{c=(e|0)==5?-1:e;break a}}while(0);if(e<<24>>24!=2){j=da(a+4|0,4,0,0)|0|0;bc[(fa(da((da(j|0,4,0,0)|0|0)+60|0,4,0,0)|0|0,31|0)|0)&31](j)}if((da(g+(f<<2)+4|0,4,0,0)|0|0)==(b|0)?(Yv(da(da(k|0,4,0,0)|0|0,4,0,0)|0|0,a+52|0,48)|0)==0:0){ea(a+40|0,f|0,2,0);c=0;break}if(!(da(c>>0|0,1,0,0)|0)){c=da(a+4|0,4,0,0)|0|0;oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,d,1,5)|0;c=-1}else c=-1}while(0);return c|0}function Mo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=a+56|0;di(da(c|0,4,0,0)|0|0);ea(c|0,0|0,4,0);bp(a);c=da(a+208|0,4,0,0)|0|0;if(!c){if(!(da(a+4>>0|0,1,0,0)|0)){d=a+60|0;c=da(d|0,4,0,0)|0|0;b=da(c|0,4,0,0)|0|0;if(!(((b|0)!=0?((kc[(fa(da(b+48|0,4,0,0)|0|0,127|0)|0)&127](c)|0)&2048|0)!=0:0)?((da(a+5>>0|0,1,0,0)|0)&5)==1:0))g=7;if((g|0)==7?(e=da(a+64|0,4,0,0)|0|0,f=da(e|0,4,0,0)|0|0,(f|0)!=0):0){kc[(fa(da(f+4|0,4,0,0)|0|0,127|0)|0)&127](e)|0;ea(e|0,0|0,4,0)}b=da(d|0,4,0,0)|0|0;c=da(b|0,4,0,0)|0|0;if(c){if(!(da(a+13>>0|0,1,0,0)|0))b=qc[(fa(da(c+32|0,4,0,0)|0|0,127|0)|0)&127](b,0)|0;else b=0;c=a+17|0;if((da(c>>0|0,1,0,0)|0|0)!=5)ea(c>>0|0,0|0,1,0);if((b|0)!=0?(da(a+16>>0|0,1,0,0)|0|0)==6:0)ea(c>>0|0,5|0,1,0)}ea(a+18>>0|0,0|0,1,0);ea(a+16>>0|0,0|0,1,0)}}else{Ko(c);ea(a+16>>0|0,0|0,1,0)}b=a+40|0;if(da(b|0,4,0,0)|0){wn(a);ea(a+18>>0|0,da(a+12>>0|0,1,0,0)|0|0|0,1,0);ea(a+16>>0|0,0|0,1,0);ea(b|0,0|0,4,0)}b=a+72|0;ea(a+19>>0|0,0|0,1,0);ea(b+0|0,0|0,4,0);ea(b+4|0,0|0,4,0);ea(b+8|0,0|0,4,0);ea(b+12|0,0|0,4,0);return}function No(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=da(c+4|0,4,0,0)|0|0;e=d+0|0;f=e+40|0;do{ea(e|0,0|0,4,0);e=e+4|0}while((e|0)<(f|0));ea(d|0,c|0,4,0);ea(d+4|0,da(c|0,4,0,0)|0|0,4,0);e=d+40|0;ea(d+8|0,e|0,4,0);ew(e|0,0,da(a+24|0,4,0,0)|0|0)|0;ea(d+28|0,a|0,4,0);ea(d+20|0,b|0,4,0);return hl(a,b,c)|0}function Oo(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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();f=k;g=wq(a,b,f)|0;if(!g){h=da(f|0,4,0,0)|0|0;if(!b){a=h+136|0;ea(f|0,a|0,4,0);f=a;a=0}else{f=h;a=(b<<12)+-34|0}ea(d|0,f+-4|0,4,0);ea(c|0,h+16384|0,4,0);ea(e|0,a|0,4,0)}i=k;return g|0}function Po(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=da(a+28|0,4,0,0)|0|0;g=b&255;if(g&1){c=h+8|0;if((da(c|0,4,0,0)|0|0)==(a|0)){b=a;do{b=da(b+36|0,4,0,0)|0|0;if(!b){b=0;break}}while(((da(b+24|0,2,0,0)|0)&4)!=0);ea(c|0,b|0,4,0)}b=a+32|0;d=da(b|0,4,0,0)|0|0;e=(d|0)==0;f=a+36|0;c=da(f|0,4,0,0)|0|0;if(e)ea(h+4|0,c|0,4,0);else ea(d+36|0,c|0,4,0);c=da(f|0,4,0,0)|0|0;if(!c){ea(h|0,d|0,4,0);if(e?(da(h+28>>0|0,1,0,0)|0|0)!=0:0)ea(h+29>>0|0,2|0,1,0)}else ea(c+32|0,d|0,4,0);ea(b|0,0|0,4,0);ea(f|0,0|0,4,0)}if(g&2){b=da(h|0,4,0,0)|0|0;ea(a+32|0,b|0,4,0);if(!b){ea(h+4|0,a|0,4,0);if(da(h+28>>0|0,1,0,0)|0)ea(h+29>>0|0,1|0,1,0)}else ea(b+36|0,a|0,4,0);ea(h|0,a|0,4,0);b=h+8|0;if((da(b|0,4,0,0)|0|0)==0?((da(a+24|0,2,0,0)|0)&4)==0:0)ea(b|0,a|0,4,0)}return}function Qo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;c=b>>>3;d=c&255;ea(a+5>>0|0,d|0,1,0);b=b&-9;ea(a+7>>0|0,4-(c<<2)|0,1,0);c=da(a+52|0,4,0,0)|0|0;if((b|0)==5){ea(a+2>>0|0,1|0,1,0);ea(a+3>>0|0,d|0,1,0);ea(a+4>>0|0,d<<24>>24==0&1|0,1,0);ea(a+10|0,da(c+28|0,2,0,0)|0|0|0,2,0);ea(a+12|0,da(c+30|0,2,0,0)|0|0|0,2,0);f=5}else if((b|0)==2){ea(a+2>>0|0,0|0,1,0);ea(a+3>>0|0,0|0,1,0);ea(a+4>>0|0,0|0,1,0);ea(a+10|0,da(c+24|0,2,0,0)|0|0|0,2,0);ea(a+12|0,da(c+26|0,2,0,0)|0|0|0,2,0);f=5}else{ea(e|0,54521|0,4,0);ea(e+4|0,10788|0,4,0);ad(11,13600,e);b=11}if((f|0)==5){ea(a+8>>0|0,da(c+21>>0|0,1,0,0)|0|0|0,1,0);b=0}i=g;return b|0}function Ro(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=da(a+200|0,4,0,0)|0|0;h=a+152|0;i=da(h|0,4,0,0)|0|0;k=a+148|0;g=da(k|0,4,0,0)|0|0;i=i>>>0>g>>>0?g:i;e=da(a+96|0,4,0,0)|0|0;if((e|0)>0){d=da(a+92|0,4,0,0)|0|0;c=a+72|0;f=0;do{b=d+(f*48|0)+8|0;l=b;if((da(l|0,4,0,0)|0|0)==0&(da(l+4|0,4,0,0)|0|0)==0){m=c;l=da(m+4|0,4,0,0)|0|0;ea(b|0,da(m|0,4,0,0)|0|0,4,0);ea(b+4|0,l|0,4,0)}f=f+1|0}while((f|0)<(e|0));f=c}else f=a+72|0;c=f;d=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;if((d|0)==0&(c|0)==0){d=0;c=0}else{d=iw(d|0,c|0,-1,-1)|0;d=pw(d|0,C|0,g|0,0)|0;d=iw(d|0,C|0,1,0)|0;d=rw(d|0,C|0,g|0,0)|0;c=C}g=f;ea(g|0,d|0,4,0);ea(g+4|0,c|0,4,0);g=a+80|0;ea(g|0,d|0,4,0);ea(g+4|0,c|0,4,0);if(((da(a+7>>0|0,1,0,0)|0|0)==0?(da(a+5>>0|0,1,0,0)|0|0)!=4:0)?(g=da(a+60|0,4,0,0)|0|0,((kc[(fa(da((da(g|0,4,0,0)|0|0)+48|0,4,0,0)|0|0,127|0)|0)&127](g)|0)&512|0)==0):0){d=j+0|0;c=d+12|0;do{ea(d>>0|0,0|0,1,0);d=d+1|0}while((d|0)<(c|0))}else{g=j;e=g;ea(e>>0|0,-117058087|0,1,0);ea(e+1>>0|0,-117058087>>8|0,1,0);ea(e+2>>0|0,-117058087>>16|0,1,0);ea(e+3>>0|0,-117058087>>24|0,1,0);g=g+4|0;ea(g>>0|0,-681336544|0,1,0);ea(g+1>>0|0,-681336544>>8|0,1,0);ea(g+2>>0|0,-681336544>>16|0,1,0);ea(g+3>>0|0,-681336544>>24|0,1,0);g=j+8|0;ea(g>>0|0,-1|0,1,0);ea(g+1>>0|0,-1>>8|0,1,0);ea(g+2>>0|0,-1>>16|0,1,0);ea(g+3>>0|0,-1>>24|0,1,0)}c=a+48|0;bd(4,c);c=da(c|0,4,0,0)|0|0;ea(j+12>>0|0,c>>>24|0,1,0);ea(j+13>>0|0,c>>>16|0,1,0);ea(j+14>>0|0,c>>>8|0,1,0);ea(j+15>>0|0,c|0,1,0);c=da(a+28|0,4,0,0)|0|0;ea(j+16>>0|0,c>>>24|0,1,0);ea(j+17>>0|0,c>>>16|0,1,0);ea(j+18>>0|0,c>>>8|0,1,0);ea(j+19>>0|0,c|0,1,0);c=da(k|0,4,0,0)|0|0;ea(j+20>>0|0,c>>>24|0,1,0);ea(j+21>>0|0,c>>>16|0,1,0);ea(j+22>>0|0,c>>>8|0,1,0);ea(j+23>>0|0,c|0,1,0);c=da(h|0,4,0,0)|0|0;ea(j+24>>0|0,c>>>24|0,1,0);ea(j+25>>0|0,c>>>16|0,1,0);ea(j+26>>0|0,c>>>8|0,1,0);ea(j+27>>0|0,c|0,1,0);ew(j+28|0,0,i+-28|0)|0;c=a+64|0;d=0;while(1){if(d>>>0>=(da(k|0,4,0,0)|0|0)>>>0){b=0;break}h=da(c|0,4,0,0)|0|0;b=f;b=sc[(fa(da((da(h|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](h,j,i,da(b|0,4,0,0)|0|0,da(b+4|0,4,0,0)|0|0)|0;h=f;h=iw(da(h|0,4,0,0)|0|0,da(h+4|0,4,0,0)|0|0,i|0,0)|0;a=f;ea(a|0,h|0,4,0);ea(a+4|0,C|0,4,0);if(!b)d=d+i|0;else break}return b|0}function So(a){a=a|0;var b=0,c=0,d=0;b=a+24|0;d=da(b|0,2,0,1)|0|0;c=d&65503;ea(b|0,c|0,2,0);if(!(d&2)){ea(b|0,c|2|0,2,0);Po(a,2)}return}function To(a){a=a|0;var b=0,c=0,d=0;b=da(a+16|0,4,0,0)|0|0;c=da(a+20|0,4,0,0)|0|0;d=da(b+96|0,4,0,0)|0|0;a:do if((d|0)>0){b=da(b+92|0,4,0,0)|0|0;a=0;while(1){if((da(b+(a*48|0)+20|0,4,0,0)|0|0)>>>0>=c>>>0?(ci(da(b+(a*48|0)+16|0,4,0,0)|0|0,c)|0)==0:0){a=1;break a}a=a+1|0;if((a|0)>=(d|0)){a=0;break}}}else a=0;while(0);return a|0}function Uo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();k=o;m=da(a+16|0,4,0,0)|0|0;c=da(m+5>>0|0,1,0,0)|0|0;a:do if(c<<24>>24!=2){l=m+68|0;d=da(l|0,4,0,0)|0|0;do if(!(da(d|0,4,0,0)|0)){if(c<<24>>24!=4?(da(m+21>>0|0,1,0,0)|0|0)==0:0){b=da(m|0,4,0,0)|0|0;b=sc[(fa(da(b+24|0,4,0,0)|0|0,31|0)|0)&31](b,0,d,8222,0)|0;if(!b)break;else break a}c=d+0|0;b=c+40|0;do{ea(c|0,0|0,4,0);c=c+4|0}while((c|0)<(b|0));ea(d|0,14696|0,4,0)}while(0);d=da(a+4|0,4,0,0)|0|0;h=m+52|0;e=m+152|0;f=(da(e|0,4,0,0)|0|0)+4|0;f=rw(f|0,((f|0)<0)<<31>>31|0,da(h|0,4,0,0)|0|0,0)|0;g=C;b=da(l|0,4,0,0)|0|0;c=a+20|0;a=da(c|0,4,0,0)|0|0;ea(k>>0|0,a>>>24|0,1,0);ea(k+1>>0|0,a>>>16|0,1,0);ea(k+2>>0|0,a>>>8|0,1,0);ea(k+3>>0|0,a|0,1,0);b=sc[(fa(da((da(b|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](b,k,4,f,g)|0;if(!b){k=da(l|0,4,0,0)|0|0;l=da(e|0,4,0,0)|0|0;b=iw(f|0,g|0,4,0)|0;b=sc[(fa(da((da(k|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](k,d,l,b,C)|0;if(!b){b=h;n=10}}}else{c=a+20|0;b=m+52|0;n=10}while(0);if((n|0)==10){ea(b|0,(da(b|0,4,0,0)|0|0)+1|0,4,0);b=il(m,da(c|0,4,0,0)|0|0)|0}i=o;return b|0}function Vo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+48|0;if((i|0)>=(j|0))ba();f=g;c=(a|0)!=0;a:do if(c&(b|0)!=0){c=f;while(1){e=da(b+20|0,4,0,0)|0|0;d=a;a=c;while(1){a=a+12|0;if((da(d+20|0,4,0,0)|0|0)>>>0>=e>>>0)break;ea(a|0,d|0,4,0);a=da(d+12|0,4,0,0)|0|0;if(!a){c=b;a=d;d=8;break a}else{c=d;d=a;a=c}}ea(a|0,b|0,4,0);e=da(b+12|0,4,0,0)|0|0;c=(d|0)!=0;if(c&(e|0)!=0){c=b;a=d;b=e}else{a=d;d=6;break}}}else{e=b;b=f;d=6}while(0);if((d|0)==6)if(c)ea(b+12|0,a|0,4,0);else{c=e;a=b;d=8}do if((d|0)==8){a=a+12|0;if(!c){ea(a|0,0|0,4,0);break}else{ea(a|0,c|0,4,0);break}}while(0);i=g;return da(f+12|0,4,0,0)|0|0}function Wo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=da(da(a+32|0,4,0,0)|0|0,4,0,0)|0|0;h=a+84|0;g=a+104|0;ea(g|0,(da(g|0,4,0,0)|0|0)+1|0,4,0);ea(a+68|0,0|0,4,0);g=h+1|0;f=h+2|0;e=h+3|0;d=((da(g>>0|0,1,0,1)|0|0)<<16|(da(h>>0|0,1,0,1)|0|0)<<24|(da(f>>0|0,1,0,1)|0|0)<<8|(da(e>>0|0,1,0,1)|0|0))+1|0;ea(h>>0|0,d>>>24|0,1,0);ea(g>>0|0,d>>>16|0,1,0);ea(f>>0|0,d>>>8|0,1,0);ea(e>>0|0,d|0,1,0);ea(a+88|0,b|0,4,0);_o(a);ea(c+96|0,0|0,4,0);ea(c+104|0,0|0,4,0);ea(c+108|0,-1|0,4,0);ea(c+112|0,-1|0,4,0);ea(c+116|0,-1|0,4,0);return}function Xo(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,k=0,l=0,m=0,n=0;g=i;i=i+32|0;if((i|0)>=(j|0))ba();h=g;f=da(b+4|0,4,0,0)|0|0;k=da(a|0,4,0,0)|0|0;m=da(b+20|0,4,0,0)|0|0;b=k+76|0;ea(h>>0|0,m>>>24|0,1,0);ea(h+1>>0|0,m>>>16|0,1,0);ea(h+2>>0|0,m>>>8|0,1,0);ea(h+3>>0|0,m|0,1,0);ea(h+4>>0|0,c>>>24|0,1,0);ea(h+5>>0|0,c>>>16|0,1,0);ea(h+6>>0|0,c>>>8|0,1,0);ea(h+7>>0|0,c|0,1,0);c=k+84|0;m=c;m=da(m>>0|0,1,0,1)|0|(da(m+1>>0|0,1,0,1)|0)<<8|(da(m+2>>0|0,1,0,1)|0)<<16|(da(m+3>>0|0,1,0,1)|0)<<24;c=c+4|0;c=da(c>>0|0,1,0,1)|0|(da(c+1>>0|0,1,0,1)|0)<<8|(da(c+2>>0|0,1,0,1)|0)<<16|(da(c+3>>0|0,1,0,1)|0)<<24;l=h+8|0;n=l;ea(n>>0|0,m|0,1,0);ea(n+1>>0|0,m>>8|0,1,0);ea(n+2>>0|0,m>>16|0,1,0);ea(n+3>>0|0,m>>24|0,1,0);l=l+4|0;ea(l>>0|0,c|0,1,0);ea(l+1>>0|0,c>>8|0,1,0);ea(l+2>>0|0,c>>16|0,1,0);ea(l+3>>0|0,c>>24|0,1,0);c=(da(k+65>>0|0,1,0,0)|0|0)==0&1;xq(c,h,8,b,b);xq(c,f,da(k+36|0,4,0,0)|0|0,b,b);c=da(b|0,4,0,0)|0|0;ea(h+16>>0|0,c>>>24|0,1,0);ea(h+17>>0|0,c>>>16|0,1,0);ea(h+18>>0|0,c>>>8|0,1,0);ea(h+19>>0|0,c|0,1,0);c=da(k+80|0,4,0,0)|0|0;ea(h+20>>0|0,c>>>24|0,1,0);ea(h+21>>0|0,c>>>16|0,1,0);ea(h+22>>0|0,c>>>8|0,1,0);ea(h+23>>0|0,c|0,1,0);c=yq(a,h,24,d,e)|0;if(!c){l=da(a+20|0,4,0,0)|0|0;c=iw(d|0,e|0,24,0)|0;c=yq(a,f,l,c,C)|0}i=g;return c|0}function Yo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h+8|0;d=h;e=da(3164*4|0,4,0,0)|0|0;if(e)mc[(fa(e|0,3|0)|0)&3]();f=a+8|0;e=da(f|0,4,0,0)|0|0;e=qc[(fa(da((da(e|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](e,d)|0;k=da(d+4|0,4,0,0)|0|0;if((e|0)==0&((k|0)>(c|0)|((k|0)==(c|0)?(da(d|0,4,0,0)|0|0)>>>0>b>>>0:0))){e=da(f|0,4,0,0)|0|0;e=$b[(fa(da((da(e|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,63|0)|0)&63](e,b,c)|0}d=da(3166*4|0,4,0,0)|0|0;if(d)mc[(fa(d|0,3|0)|0)&3]();if(e){ea(g|0,da(a+100|0,4,0,0)|0|0,4,0);ad(e,14816,g)}i=h;return}function Zo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+32|0;if((i|0)>=(j|0))ba();g=l;e=l+16|0;k=l+12|0;h=l+8|0;ea(e|0,0|0,4,0);ea(k|0,0|0,4,0);ea(h|0,0|0,4,0);d=Oo(a,(b+33|0)>>>12,h,k,e)|0;a:do if(!d){f=b-(da(e|0,4,0,0)|0|0)|0;if((f|0)==1){d=da(k|0,4,0,0)|0|0;b=d+4|0;ew(b|0,0,(da(h|0,4,0,0)|0|0)+16384-b|0)|0}else d=da(k|0,4,0,0)|0|0;if(da(d+(f<<2)|0,4,0,0)|0)zq(a);d=c*383&8191;b:do if(da((da(h|0,4,0,0)|0|0)+(d<<1)|0,2,0,0)|0){b=da(h|0,4,0,0)|0|0;e=f;while(1){if(!e)break;d=d+1&8191;if(!(da(b+(d<<1)|0,2,0,0)|0))break b;else e=e+-1|0}ea(g|0,49852|0,4,0);ea(g+4|0,10788|0,4,0);ad(11,13600,g);d=11;break a}while(0);ea((da(k|0,4,0,0)|0|0)+(f<<2)|0,c|0,4,0);ea((da(h|0,4,0,0)|0|0)+(d<<1)|0,f|0,2,0);d=0}while(0);i=l;return d|0}function _o(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=da(da(a+32|0,4,0,0)|0|0,4,0,0)|0|0;i=a+52|0;ea(a+64>>0|0,1|0,1,0);ea(i|0,3007e3|0,4,0);g=a+92|0;e=3007e3;f=i;d=0;b=0;while(1){d=d+b+e|0;c=f+8|0;b=d+b+(da(f+4|0,4,0,0)|0|0)|0;if(c>>>0>=g>>>0)break;e=da(c|0,4,0,0)|0|0;f=c}ea(g|0,d|0,4,0);ea(a+96|0,b|0,4,0);b=h+48|0;c=i+0|0;d=b+48|0;do{ea(b>>0|0,da(c>>0|0,1,0,0)|0|0|0,1,0);b=b+1|0;c=c+1|0}while((b|0)<(d|0));if((da(a+43>>0|0,1,0,0)|0|0)!=2){b=da(a+4|0,4,0,0)|0|0;bc[(fa(da((da(b|0,4,0,0)|0|0)+60|0,4,0,0)|0|0,31|0)|0)&31](b)}b=h+0|0;c=i+0|0;d=b+48|0;do{ea(b>>0|0,da(c>>0|0,1,0,0)|0|0|0,1,0);b=b+1|0;c=c+1|0}while((b|0)<(d|0));return}function $o(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(a)do{d=a+28|0;f=da(d|0,4,0,0)|0|0;if(((f>>>0<7?(30>>>(f&127)&1)==0:0)?(da(a+16|0,4,0,0)|0|0)>>>0>b>>>0:0)?(e=zg(a,b,c,1)|0,(e|0)!=0):0)ea(d|0,e|0,4,0);a=da(a+44|0,4,0,0)|0|0}while((a|0)!=0);return}function ap(a){a=a|0;var b=0,c=0,d=0;a:do if(!(da(a+208|0,4,0,0)|0)){c=a+176|0;d=a+180|0;while(1){b=el(a,4)|0;if((b|0)!=5)break a;if(!(kc[(fa(da(c|0,4,0,0)|0|0,127|0)|0)&127](da(d|0,4,0,0)|0|0)|0)){b=5;break}}}else b=0;while(0);return b|0}function bp(a){a=a|0;var b=0,c=0,d=0,e=0;d=a+96|0;if((da(d|0,4,0,0)|0|0)>0){b=a+92|0;c=0;do{di(da((da(b|0,4,0,0)|0|0)+(c*48|0)+16|0,4,0,0)|0|0);c=c+1|0}while((c|0)<(da(d|0,4,0,0)|0|0))}c=da(a+68|0,4,0,0)|0|0;b=da(c|0,4,0,0)|0|0;if(!(da(a+4>>0|0,1,0,0)|0)){if(b)e=7}else if((b|0)==14696){b=14696;e=7}if((e|0)==7){kc[(fa(da(b+4|0,4,0,0)|0|0,127|0)|0)&127](c)|0;ea(c|0,0|0,4,0)}b=a+92|0;Vc(da(b|0,4,0,0)|0|0);ea(b|0,0|0,4,0);ea(d|0,0|0,4,0);ea(a+52|0,0|0,4,0);return}function cp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=a+40|0;if(da(e|0,4,0,0)|0){c=da(a|0,4,0,0)|0|0;if(c)do{d=c;c=da(c+32|0,4,0,0)|0|0;if((da(d+20|0,4,0,0)|0|0)>>>0>b>>>0)wl(d)}while((c|0)!=0);if(!b){b=da(a+44|0,4,0,0)|0|0;if(!b)b=0;else{ew(da(b+4|0,4,0,0)|0|0,0,da(a+20|0,4,0,0)|0|0)|0;b=1}}ic[(fa(da(8744+144|0,4,0,0)|0|0,15|0)|0)&15](da(e|0,4,0,0)|0|0,b+1|0)}return}function dp(a,b){a=a|0;b=b|0;var c=0,d=0;do if(!b){c=a+43|0;if(!(da(c>>0|0,1,0,0)|0))c=0;else{ea(c>>0|0,0|0,1,0);d=da(a+4|0,4,0,0)|0|0;if(!(oc[(fa(da((da(d|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](d,(da(a+40|0,2,0,0)|0|0)+3|0,1,6)|0))c=(da(c>>0|0,1,0,0)|0|0)==0;else{ea(c>>0|0,1|0,1,0);c=0}c=c&1}}else{c=a+43|0;d=(da(c>>0|0,1,0,0)|0|0)==0;if((b|0)<=0){c=d&1;break}if(d){d=da(a+4|0,4,0,0)|0|0;oc[(fa(da((da(d|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](d,(da(a+40|0,2,0,0)|0|0)+3|0,1,5)|0}ea(c>>0|0,1|0,1,0);c=1}while(0);return c|0}function ep(a){a=a|0;var b=0,c=0,d=0,e=0;c=a+73|0;if((da(c>>0|0,1,0,0)|0|0)==2)ea(c>>0|0,1|0,1,0);else ea(a+68|0,0|0,4,0);b=a+48|0;jm(a,b);do if(!(da((da(a+120|0,4,0,0)|0|0)+2>>0|0,1,0,0)|0)){d=b;d=pg(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0)|0;if(d){b=Km(a,0,da(b|0,4,0,0)|0|0,d,0)|0;if(!b){ea(a+56|0,d|0,4,0);e=9;break}else{Vc(d);break}}else b=7}else e=9;while(0);if((e|0)==9){fp(a);ea(c>>0|0,3|0,1,0);b=0}c=a+72|0;ea(c>>0|0,(da(c>>0|0,1,0,1)|0)&251|0,1,0);return b|0}function fp(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+76|0;if((da(b|0,2,0,0)|0|0)>=0){e=0;while(1){c=a+(e<<2)+120|0;d=da(c|0,4,0,0)|0|0;if(d)Ag(da(d+68|0,4,0,0)|0|0);ea(c|0,0|0,4,0);if((e|0)<(da(b|0,2,0,0)|0|0))e=e+1|0;else break}}ea(b|0,-1|0,2,0);return}function gp(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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;g=k+8|0;if(b>>>0<2)e=0;else{e=b+-2|0;e=e-((e>>>0)%(((((da(a+36|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;e=((e+1|0)==(((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(a+32|0,4,0,0)|0|0)>>>0)|0|0)?3:2)+e|0}a=yg(da(a|0,4,0,0)|0|0,e,g,0)|0;do if(!a){f=da(g|0,4,0,0)|0|0;g=da(f+4|0,4,0,0)|0|0;a=(b-e|0)*5|0;e=a+-5|0;if((e|0)<0){if(f)Ag(f);ea(h|0,53912|0,4,0);ea(h+4|0,10788|0,4,0);ad(11,13600,h);a=11;break}ea(c>>0|0,da(g+e>>0|0,1,0,0)|0|0|0,1,0);if(d)ea(d|0,(da(g+(a+-3)>>0|0,1,0,1)|0|0)<<16|(da(g+(a+-4)>>0|0,1,0,1)|0|0)<<24|(da(g+(a+-2)>>0|0,1,0,1)|0|0)<<8|(da(g+(a+-1)>>0|0,1,0,1)|0|0)|0,4,0);if(f)Ag(f);if(((da(c>>0|0,1,0,0)|0|0)+-1&255)>4){ea(h|0,53920|0,4,0);ea(h+4|0,10788|0,4,0);ad(11,13600,h);a=11}else a=0}while(0);i=k;return a|0}function hp(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,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;G=i;i=i+32|0;if((i|0)>=(j|0))ba();F=G;E=G+16|0;k=G+20|0;D=G+12|0;o=G+8|0;ea(E|0,0|0,4,0);n=a+12|0;h=da(n|0,4,0,0)|0|0;m=a+44|0;B=da(m|0,4,0,0)|0|0;C=h+56|0;g=da(C|0,4,0,0)|0|0;g=(da(g+37>>0|0,1,0,1)|0)<<16|(da(g+36>>0|0,1,0,1)|0)<<24|(da(g+38>>0|0,1,0,1)|0)<<8|(da(g+39>>0|0,1,0,1)|0);do if(g>>>0>>0){if(!g){l=(da(a+19>>0|0,1,0,0)|0|0)==0&1;h=Fg(da(h+68|0,4,0,0)|0|0)|0;if(h){f=h;break}k=da(m|0,4,0,0)|0|0;g=k+1|0;ea(m|0,g|0,4,0);e=a+32|0;h=da(e|0,4,0,0)|0|0;if((k|0)==(((da(2514*4|0,4,0,0)|0|0)>>>0)/(h>>>0)|0|0)){g=k+2|0;ea(m|0,g|0,4,0)}if(da(a+17>>0|0,1,0,0)|0){if(g>>>0<2)k=0;else{k=g+-2|0;k=k-((k>>>0)%(((((da(a+36|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(((da(2514*4|0,4,0,0)|0|0)>>>0)/(h>>>0)|0|0)?3:2)+k|0}if((k|0)==(g|0)){ea(o|0,0|0,4,0);k=cl(a,g,o,l)|0;if(k){f=k;break}B=da(o|0,4,0,0)|0|0;k=B+68|0;h=Fg(da(k|0,4,0,0)|0|0)|0;if(B)Ag(da(k|0,4,0,0)|0|0);if(h){f=h;break}k=da(m|0,4,0,0)|0|0;g=k+1|0;ea(m|0,g|0,4,0);if((k|0)==(((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(e|0,4,0,0)|0|0)>>>0)|0|0)){g=k+2|0;ea(m|0,g|0,4,0)}}}e=da((da(n|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;ea(e+28>>0|0,g>>>24|0,1,0);ea(e+29>>0|0,g>>>16|0,1,0);ea(e+30>>0|0,g>>>8|0,1,0);ea(e+31>>0|0,g|0,1,0);e=da(m|0,4,0,0)|0|0;ea(c|0,e|0,4,0);e=cl(a,e,b,l)|0;if(e){f=e;break}e=Fg(da((da(b|0,4,0,0)|0|0)+68|0,4,0,0)|0|0)|0;if(e){f=da(b|0,4,0,0)|0|0;if(!f){f=e;w=98}else{Ag(da(f+68|0,4,0,0)|0|0);f=e;w=92}}}else{if(e<<24>>24==2)k=1;else if(e<<24>>24==1?B>>>0>=d>>>0:0){f=gp(a,d,k,0)|0;if(f)break;k=(da(k>>0|0,1,0,0)|0|0)==2&1}else k=0;f=Fg(da(h+68|0,4,0,0)|0|0)|0;if(f)break;z=da(C|0,4,0,0)|0|0;y=g+-1|0;ea(z+36>>0|0,y>>>24|0,1,0);ea(z+37>>0|0,y>>>16|0,1,0);ea(z+38>>0|0,y>>>8|0,1,0);ea(z+39>>0|0,y|0,1,0);y=a+36|0;z=(d|0)==0;A=a+60|0;x=e<<24>>24==2;e=0;a:while(1){p=(e|0)!=0;if(p){o=da(e+56|0,4,0,0)|0|0;o=(da(o+1>>0|0,1,0,1)|0)<<16|(da(o>>0|0,1,0,1)|0)<<24|(da(o+2>>0|0,1,0,1)|0)<<8|(da(o+3>>0|0,1,0,1)|0)}else{o=da(C|0,4,0,0)|0|0;o=(da(o+33>>0|0,1,0,1)|0)<<16|(da(o+32>>0|0,1,0,1)|0)<<24|(da(o+34>>0|0,1,0,1)|0)<<8|(da(o+35>>0|0,1,0,1)|0)}if(o>>>0>B>>>0){w=15;break}f=cl(a,o,E,0)|0;if(f){w=17;break}g=da(E|0,4,0,0)|0|0;q=g+56|0;u=da(q|0,4,0,0)|0|0;v=u+4|0;r=u+5|0;s=u+6|0;t=u+7|0;w=(da(r>>0|0,1,0,1)|0)<<16|(da(v>>0|0,1,0,1)|0)<<24|(da(s>>0|0,1,0,1)|0)<<8|(da(t>>0|0,1,0,1)|0);f=k<<24>>24!=0;do if((w|0)!=0|f){if(w>>>0>(((da(y|0,4,0,0)|0|0)>>>2)+-2|0)>>>0){f=g;w=22;break a}if(k<<24>>24!=0?(o|0)==(d|0)|o>>>0>>0&x:0){ea(c|0,o|0,4,0);ea(b|0,g|0,4,0);f=Fg(da(g+68|0,4,0,0)|0|0)|0;if(f){w=88;break a}do if(!w){if(!p){v=(da(C|0,4,0,0)|0|0)+32|0;w=da(q|0,4,0,0)|0|0;w=da(w>>0|0,1,0,1)|0|(da(w+1>>0|0,1,0,1)|0)<<8|(da(w+2>>0|0,1,0,1)|0)<<16|(da(w+3>>0|0,1,0,1)|0)<<24;ea(v>>0|0,w|0,1,0);ea(v+1>>0|0,w>>8|0,1,0);ea(v+2>>0|0,w>>16|0,1,0);ea(v+3>>0|0,w>>24|0,1,0);break}f=Fg(da(e+68|0,4,0,0)|0|0)|0;if(f){w=88;break a}v=da(e+56|0,4,0,0)|0|0;w=da(q|0,4,0,0)|0|0;w=da(w>>0|0,1,0,1)|0|(da(w+1>>0|0,1,0,1)|0)<<8|(da(w+2>>0|0,1,0,1)|0)<<16|(da(w+3>>0|0,1,0,1)|0)<<24;ea(v>>0|0,w|0,1,0);ea(v+1>>0|0,w>>8|0,1,0);ea(v+2>>0|0,w>>16|0,1,0);ea(v+3>>0|0,w>>24|0,1,0)}else{o=da(q|0,4,0,0)|0|0;l=da(o+8>>0|0,1,0,0)|0|0;m=da(o+9>>0|0,1,0,0)|0|0;n=da(o+10>>0|0,1,0,0)|0|0;o=da(o+11>>0|0,1,0,0)|0|0;k=(m&255)<<16|(l&255)<<24|(n&255)<<8|o&255;if(k>>>0>B>>>0){f=g;w=32;break a}f=cl(a,k,D,0)|0;if(f){w=88;break a}k=da(D|0,4,0,0)|0|0;h=k+68|0;f=Fg(da(h|0,4,0,0)|0|0)|0;if(f){w=35;break a}v=k+56|0;t=da(v|0,4,0,0)|0|0;u=da(q|0,4,0,0)|0|0;u=da(u>>0|0,1,0,1)|0|(da(u+1>>0|0,1,0,1)|0)<<8|(da(u+2>>0|0,1,0,1)|0)<<16|(da(u+3>>0|0,1,0,1)|0)<<24;ea(t>>0|0,u|0,1,0);ea(t+1>>0|0,u>>8|0,1,0);ea(t+2>>0|0,u>>16|0,1,0);ea(t+3>>0|0,u>>24|0,1,0);u=da(v|0,4,0,0)|0|0;w=w+-1|0;ea(u+4>>0|0,w>>>24|0,1,0);ea(u+5>>0|0,w>>>16|0,1,0);ea(u+6>>0|0,w>>>8|0,1,0);ea(u+7>>0|0,w|0,1,0);jw((da(v|0,4,0,0)|0|0)+8|0,(da(q|0,4,0,0)|0|0)+12|0,w<<2|0)|0;if(k)Ag(da(h|0,4,0,0)|0|0);if(!p){w=da(C|0,4,0,0)|0|0;ea(w+32>>0|0,l|0,1,0);ea(w+33>>0|0,m|0,1,0);ea(w+34>>0|0,n|0,1,0);ea(w+35>>0|0,o|0,1,0);break}f=Fg(da(e+68|0,4,0,0)|0|0)|0;if(f){w=88;break a}w=da(e+56|0,4,0,0)|0|0;ea(w>>0|0,l|0,1,0);ea(w+1>>0|0,m|0,1,0);ea(w+2>>0|0,n|0,1,0);ea(w+3>>0|0,o|0,1,0)}while(0);ea(E|0,0|0,4,0);g=0;f=0;k=0;break}if(w){b:do if(!z){if(x){h=0;while(1){q=h<<2;if(((da(u+(q+9)>>0|0,1,0,1)|0)<<16|(da(u+(q+8)>>0|0,1,0,1)|0)<<24|(da(u+(q+10)>>0|0,1,0,1)|0)<<8|(da(u+(q+11)>>0|0,1,0,1)|0))>>>0<=d>>>0)break b;h=h+1|0;if(h>>>0>=w>>>0){h=0;break b}}}h=((da(u+9>>0|0,1,0,1)|0)<<16|(da(u+8>>0|0,1,0,1)|0)<<24|(da(u+10>>0|0,1,0,1)|0)<<8|(da(u+11>>0|0,1,0,1)|0))-d|0;if((h|0)<=-1)h=(h|0)==-2147483648?2147483647:0-h|0;if(w>>>0>1){o=0;m=1;while(1){l=m<<2;l=((da(u+(l+9)>>0|0,1,0,1)|0)<<16|(da(u+(l+8)>>0|0,1,0,1)|0)<<24|(da(u+(l+10)>>0|0,1,0,1)|0)<<8|(da(u+(l+11)>>0|0,1,0,1)|0))-d|0;if((l|0)<=-1)l=(l|0)==-2147483648?2147483647:0-l|0;n=(l|0)<(h|0);o=n?m:o;m=m+1|0;if((m|0)==(w|0)){h=o;break}else h=n?l:h}}else h=0}else h=0;while(0);l=h<<2;o=u+(l+8)|0;l=(da(u+(l+9)>>0|0,1,0,1)|0)<<16|(da(o>>0|0,1,0,1)|0)<<24|(da(u+(l+10)>>0|0,1,0,1)|0)<<8|(da(u+(l+11)>>0|0,1,0,1)|0);if(l>>>0>B>>>0){f=g;w=56;break a}if((l|0)==(d|0)|f^1|l>>>0>>0&x){ea(c|0,l|0,4,0);f=Fg(da(g+68|0,4,0,0)|0|0)|0;if(f){w=88;break a}k=w+-1|0;if(h>>>0>>0){w=u+((w<<2)+4)|0;w=da(w>>0|0,1,0,1)|0|(da(w+1>>0|0,1,0,1)|0)<<8|(da(w+2>>0|0,1,0,1)|0)<<16|(da(w+3>>0|0,1,0,1)|0)<<24;ea(o>>0|0,w|0,1,0);ea(o+1>>0|0,w>>8|0,1,0);ea(o+2>>0|0,w>>16|0,1,0);ea(o+3>>0|0,w>>24|0,1,0)}ea(v>>0|0,k>>>24|0,1,0);ea(r>>0|0,k>>>16|0,1,0);ea(s>>0|0,k>>>8|0,1,0);ea(t>>0|0,k|0,1,0);h=da(c|0,4,0,0)|0|0;k=da(A|0,4,0,0)|0|0;do if(!k)k=0;else{if((da(k|0,4,0,0)|0|0)>>>0>>0){k=1;break}k=(ci(k,h)|0)!=0}while(0);f=cl(a,h,b,k&1^1)|0;if(f){k=0;break}f=Fg(da((da(b|0,4,0,0)|0|0)+68|0,4,0,0)|0|0)|0;if(!f){f=0;k=0;break}k=da(b|0,4,0,0)|0|0;if(!k){k=0;break}Ag(da(k+68|0,4,0,0)|0|0);k=0}else f=0}else f=0}else{f=Fg(da(g+68|0,4,0,0)|0|0)|0;if(f){w=89;break a}ea(c|0,o|0,4,0);k=(da(C|0,4,0,0)|0|0)+32|0;f=da(q|0,4,0,0)|0|0;f=da(f>>0|0,1,0,1)|0|(da(f+1>>0|0,1,0,1)|0)<<8|(da(f+2>>0|0,1,0,1)|0)<<16|(da(f+3>>0|0,1,0,1)|0)<<24;ea(k>>0|0,f|0,1,0);ea(k+1>>0|0,f>>8|0,1,0);ea(k+2>>0|0,f>>16|0,1,0);ea(k+3>>0|0,f>>24|0,1,0);ea(b|0,g|0,4,0);ea(E|0,0|0,4,0);g=0;f=0;k=0}while(0);if(e)Ag(da(e+68|0,4,0,0)|0|0);if(!(k<<24>>24)){e=0;w=88;break}else e=g}if((w|0)==15){ea(F|0,58314|0,4,0);ea(F+4|0,10788|0,4,0);ad(11,13600,F);f=11;w=17}else if((w|0)==22){ea(F|0,58343|0,4,0);ea(F+4|0,10788|0,4,0);ad(11,13600,F);g=f;f=11;w=88}else if((w|0)==32){ea(F|0,58377|0,4,0);ea(F+4|0,10788|0,4,0);ad(11,13600,F);g=f;f=11;w=88}else if((w|0)==35)if(!k)w=88;else{Ag(da(h|0,4,0,0)|0|0);w=88}else if((w|0)==56){ea(F|0,58442|0,4,0);ea(F+4|0,10788|0,4,0);ad(11,13600,F);g=f;f=11;w=88}if((w|0)==17)ea(E|0,0|0,4,0);else if((w|0)==88)if(g)w=89;if((w|0)==89)Ag(da(g+68|0,4,0,0)|0|0);if(!e)w=92;else{Ag(da(e+68|0,4,0,0)|0|0);w=92}}if((w|0)==92?(f|0)!=0:0)w=98;if((w|0)==98){ea(b|0,0|0,4,0);break}f=da(b|0,4,0,0)|0|0;e=da(f+68|0,4,0,0)|0|0;if((da(e+26|0,2,0,0)|0|0)<=1){ea(f>>0|0,0|0,1,0);f=0;break}if(f)Ag(e);ea(b|0,0|0,4,0);ea(F|0,58541|0,4,0);ea(F+4|0,10788|0,4,0);ad(11,13600,F);f=11}else{ea(F|0,58259|0,4,0);ea(F+4|0,10788|0,4,0);ad(11,13600,F);f=11}while(0);i=G;return f|0}function ip(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;w=i;i=i+16|0;if((i|0)>=(j|0))ba();r=w+12|0;q=w+8|0;v=w;d=da(a+40|0,4,0,0)|0|0;a:do if(!d){f=a+96|0;e=da(f|0,4,0,0)|0|0;if((e|0)>(c|0)){d=(b|0)==1;c=(d&1^1)+c|0;if((c|0)<(e|0)){b=a+92|0;e=c;do{di(da((da(b|0,4,0,0)|0|0)+(e*48|0)+16|0,4,0,0)|0|0);e=e+1|0}while((e|0)<(da(f|0,4,0,0)|0|0))}ea(f|0,c|0,4,0);if(d){if(c){d=0;break}d=da(a+68|0,4,0,0)|0|0;e=da(d|0,4,0,0)|0|0;if(!e){d=0;break}if((e|0)==14696)d=Fi(d,0,0)|0;else d=0;ea(a+52|0,0|0,4,0);break}p=a+208|0;if((da(p|0,4,0,0)|0|0)==0?(da(da(a+64|0,4,0,0)|0|0,4,0,0)|0|0)==0:0){d=0;break}if(!c)s=0;else s=(da(a+92|0,4,0,0)|0|0)+((c+-1|0)*48|0)|0;o=(s|0)!=0;d=s+20|0;if(o){b=da(d|0,4,0,0)|0|0;e=pg(512,0)|0;if(!e){d=7;break}ew(e|0,0,512)|0;ea(e|0,b|0,4,0);u=e}else u=0;f=a+28|0;c=a+24|0;ea(c|0,da((o?d:f)|0,4,0,0)|0|0,4,0);ea(a+18>>0|0,da(a+12>>0|0,1,0,0)|0|0|0,1,0);b:do if(o){f=a+72|0;c=f;g=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;if(!(da(p|0,4,0,0)|0)){e=s+8|0;h=da(e|0,4,0,0)|0|0;e=da(e+4|0,4,0,0)|0|0;b=(h|0)==0&(e|0)==0;h=b?g:h;e=b?c:e;b=s;d=da(b|0,4,0,0)|0|0;b=da(b+4|0,4,0,0)|0|0;m=f;ea(m|0,d|0,4,0);ea(m+4|0,b|0,4,0);if((b|0)<(e|0)|(b|0)==(e|0)&d>>>0>>0)while(1){d=vq(a,f,u,1,1)|0;if(d){l=g;k=c;break b}b=f;d=da(b|0,4,0,0)|0|0;b=da(b+4|0,4,0,0)|0|0;if(!((b|0)<(e|0)|(b|0)==(e|0)&d>>>0>>0)){t=39;break}}else t=39}else t=38}else{n=da(p|0,4,0,0)|0|0;if(!n){f=a+72|0;c=f;g=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;t=38;break}ea(c|0,da(f|0,4,0,0)|0|0,4,0);if(da(n+44>>0|0,1,0,0)|0){g=n+68|0;k=da(g|0,4,0,0)|0|0;h=n+32|0;c=da(h|0,4,0,0)|0|0;e=n+52|0;d=(da(c|0,4,0,0)|0|0)+0|0;b=e+48|0;do{ea(e>>0|0,da(d>>0|0,1,0,0)|0|0|0,1,0);e=e+1|0;d=d+1|0}while((e|0)<(b|0));e=da(g|0,4,0,0)|0|0;d=e+1|0;if(d>>>0>k>>>0)d=0;else{f=d;while(1){e=e+34|0;d=e>>>12;if(!d)e=(da(c|0,4,0,0)|0|0)+(e<<2)|0;else e=(da(c+(d<<2)|0,4,0,0)|0|0)+((e&4095)<<2)|0;d=Aq(a,da(e|0,4,0,0)|0|0)|0;e=f+1|0;if((d|0)!=0|e>>>0>k>>>0)break;m=f;c=da(h|0,4,0,0)|0|0;f=e;e=m}e=da(g|0,4,0,0)|0|0}if((k|0)!=(e|0))zq(n)}else d=0;e=ul(da(a+204|0,4,0,0)|0|0)|0;if(!((e|0)!=0&(d|0)==0))break a;while(1){d=e;e=da(e+12|0,4,0,0)|0|0;d=Aq(a,da(d+20|0,4,0,0)|0|0)|0;if(!((e|0)!=0&(d|0)==0))break a}}while(0);if((t|0)==38){b=f;ea(b|0,0|0,4,0);ea(b+4|0,0|0,4,0);b=0;d=0;t=39}c:do if((t|0)==39){l=a+80|0;m=a+148|0;n=a+152|0;if((b|0)<(c|0)|(b|0)==(c|0)&d>>>0>>0)while(1){ea(r|0,0|0,4,0);d=uq(a,0,g,c,r,q)|0;b=da(r|0,4,0,0)|0|0;if(!b){b=l;b=iw(da(m|0,4,0,0)|0|0,0,da(b|0,4,0,0)|0|0,da(b+4|0,4,0,0)|0|0)|0;e=C;h=f;if((b|0)==(da(h|0,4,0,0)|0|0)?(e|0)==(da(h+4|0,4,0,0)|0|0):0){t=cw(g|0,c|0,b|0,e|0)|0;b=(da(n|0,4,0,0)|0|0)+8|0;b=pw(t|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0;ea(r|0,b|0,4,0);t=46}else t=40}else t=46;d:do if((t|0)==46){t=0;if((d|0)==0&(b|0)!=0){k=0;while(1){e=f;h=da(e|0,4,0,0)|0|0;e=da(e+4|0,4,0,0)|0|0;if(!((e|0)<(c|0)|(e|0)==(c|0)&h>>>0>>0)){b=h;break d}d=vq(a,f,u,1,1)|0;k=k+1|0;if(!((d|0)==0&k>>>0>>0)){t=40;break}}}else t=40}while(0);if((t|0)==40){t=0;if(d){l=g;k=c;break c}b=f;e=da(b+4|0,4,0,0)|0|0;b=da(b|0,4,0,0)|0|0}if(!((e|0)<(c|0)|(e|0)==(c|0)&b>>>0>>0)){l=g;k=c;d=0;break}}else{l=g;k=c;d=0}}while(0);e:do if(!o){di(u);if(d)break a}else{h=s+24|0;e=da(h|0,4,0,0)|0|0;m=(da(a+152|0,4,0,0)|0|0)+4|0;m=rw(m|0,((m|0)<0)<<31>>31|0,e|0,0)|0;g=v;ea(g|0,m|0,4,0);ea(g+4|0,C|0,4,0);g=da(p|0,4,0,0)|0|0;if(!g){if(!d)t=57}else{c=s+28|0;b=s+40|0;d=g+104|0;if((da(b|0,4,0,0)|0|0)==(da(d|0,4,0,0)|0|0))b=da(c|0,4,0,0)|0|0;else{ea(c|0,0|0,4,0);ea(b|0,da(d|0,4,0,0)|0|0,4,0);b=0}c=g+68|0;if(b>>>0<(da(c|0,4,0,0)|0|0)>>>0){ea(c|0,b|0,4,0);ea(g+76|0,da(s+32|0,4,0,0)|0|0,4,0);ea(g+80|0,da(s+36|0,4,0,0)|0|0,4,0);zq(g);e=da(h|0,4,0,0)|0|0;t=57}else t=57}f:do if((t|0)==57){b=a+52|0;while(1){if(e>>>0>=(da(b|0,4,0,0)|0|0)>>>0)break;d=vq(a,v,u,0,1)|0;if(!d)e=e+1|0;else break f}di(u);break e}while(0);di(u);break a}while(0);d=f;ea(d|0,l|0,4,0);ea(d+4|0,k|0,4,0);d=0}else d=0}while(0);i=w;return d|0}function jp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=da(a|0,4,0,0)|0|0;if(b){f=da(a+4|0,4,0,0)|0|0;ea((da(b+4|0,4,0,0)|0|0)+4|0,da(b|0,4,0,0)|0|0,4,0);d=a+56|0;Vc(da(d|0,4,0,0)|0|0);ea(d|0,0|0,4,0);ea(a+73>>0|0,0|0,1,0);d=da(a+12|0,4,0,0)|0|0;c=a+8|0;b=da(c|0,4,0,0)|0|0;if(!d)ea(f+8|0,b|0,4,0);else{ea(d+8|0,b|0,4,0);b=da(c|0,4,0,0)|0|0}if(b)ea(b+12|0,d|0,4,0);e=a+76|0;b=da(e|0,2,0,0)|0|0;if(b<<16>>16>=0){c=0;while(1){d=da(a+(c<<2)+120|0,4,0,0)|0|0;if(d){Ag(da(d+68|0,4,0,0)|0|0);b=da(e|0,2,0,0)|0|0}if((c|0)<(b<<16>>16|0))c=c+1|0;else break}}if((da(f+20>>0|0,1,0,0)|0|0)==0?(g=f+12|0,h=da(g|0,4,0,0)|0|0,(h|0)!=0):0){ea(g|0,0|0,4,0);Ag(da(h+68|0,4,0,0)|0|0)}Vc(da(a+20|0,4,0,0)|0|0)}return}function kp(a){a=a|0;var b=0,c=0,d=0,e=0;e=da(a+200|0,4,0,0)|0|0;b=da(3164*4|0,4,0,0)|0|0;if(b)mc[(fa(b|0,3|0)|0)&3]();c=da(a+136|0,4,0,0)|0|0;if(c)do{b=c;c=da(c+12|0,4,0,0)|0|0;Vc(b)}while((c|0)!=0);ea(a+4>>0|0,0|0,1,0);b=a+208|0;qn(da(b|0,4,0,0)|0|0,da(a+9>>0|0,1,0,1)|0|0,da(a+152|0,4,0,0)|0|0,e)|0;ea(b|0,0|0,4,0);wn(a);if(!(da(a+15>>0|0,1,0,0)|0)){if((da(da(a+64|0,4,0,0)|0|0,4,0,0)|0|0)!=0?(d=Io(a)|0,b=d&255,(b|0)==10|(b|0)==13):0){ea(a+40|0,d|0,4,0);ea(a+16>>0|0,6|0,1,0)}ml(a)}else Mo(a);b=da(3166*4|0,4,0,0)|0|0;if(b)mc[(fa(b|0,3|0)|0)&3]();b=da(a+64|0,4,0,0)|0|0;c=da(b|0,4,0,0)|0|0;if(c){kc[(fa(da(c+4|0,4,0,0)|0|0,127|0)|0)&127](b)|0;ea(b|0,0|0,4,0)}c=da(a+60|0,4,0,0)|0|0;b=da(c|0,4,0,0)|0|0;if(b){kc[(fa(da(b+4|0,4,0,0)|0|0,127|0)|0)&127](c)|0;ea(c|0,0|0,4,0)}_k(e);bc[(fa(da(8744+148|0,4,0,0)|0|0,31|0)|0)&31](da((da(a+204|0,4,0,0)|0|0)+40|0,4,0,0)|0|0);Vc(a);return}function lp(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;f=da(a+4|0,4,0,0)|0|0;g=pg(f,((f|0)<0)<<31>>31)|0;do if(g){ew(g|0,0,f|0)|0;f=sc[(fa(da(a+24|0,4,0,0)|0|0,31|0)|0)&31](a,b,g,d&556927,e)|0;if(!f){ea(c|0,g|0,4,0);f=0;break}else{Vc(g);break}}else f=7;while(0);return f|0}function mp(a){a=a|0;var b=0,c=0,d=0;b=a+16|0;c=a+12|0;d=a+10|0;if(!(Sl(da(b|0,4,0,0)|0|0,a,da(c|0,4,0,0)|0|0,da(d>>0|0,1,0,0)|0|0)|0))b=0;else{b=(Tl(da(b|0,4,0,0)|0|0,a,da(c|0,4,0,0)|0|0,da(d>>0|0,1,0,0)|0|0)|0)==0;b=b?4:8}return b|0}function np(a){a=a|0;var b=0,c=0;c=a+8|0;b=da(c|0,2,0,0)|0|0;do if(!(b&13))if(!(Tl(da(a+16|0,4,0,0)|0|0,a,da(a+12|0,4,0,0)|0|0,da(a+10>>0|0,1,0,0)|0|0)|0)){b=((da(c|0,2,0,1)|0|0)&48640|4)&65535;ea(c|0,b|0,2,0);break}else{ea(a|0,+(+Tg(a)),8,1);ea(c|0,(da(c|0,2,0,1)|0|0)&48640|8|0,2,0);cm(a);b=da(c|0,2,0,0)|0|0;break}while(0);ea(c|0,b&65517|0,2,0);return}function op(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+80|0;if((i|0)>=(j|0))ba();o=q+40|0;p=q;e=c+4|0;if((da(a+10>>0|0,1,0,0)|0|0)!=(da(e>>0|0,1,0,0)|0|0)){n=da(a+32|0,4,0,0)|0|0;k=o+8|0;ea(k|0,1|0,2,0);ea(o+32|0,n|0,4,0);l=o+24|0;ea(l|0,0|0,4,0);m=p+8|0;ea(m|0,1|0,2,0);ea(p+32|0,n|0,4,0);n=p+24|0;ea(n|0,0|0,4,0);Yl(o,a,4096);Yl(p,b,4096);a=Rg(o,da(e>>0|0,1,0,0)|0|0)|0;h=(a|0)==0;if(h)g=0;else g=da(o+12|0,4,0,0)|0|0;e=Rg(p,da(e>>0|0,1,0,0)|0|0)|0;f=(e|0)==0;if(f)b=0;else b=da(p+12|0,4,0,0)|0|0;a=sc[(fa(da(c+12|0,4,0,0)|0|0,31|0)|0)&31](da(c+8|0,4,0,0)|0|0,g,a,b,e)|0;if(!(((da(k|0,2,0,0)|0)&9312)==0&(da(l|0,4,0,0)|0|0)==0))Pg(o);if(!(((da(m|0,2,0,0)|0)&9312)==0&(da(n|0,4,0,0)|0|0)==0))Pg(p);if((h|f)&(d|0)!=0)ea(d>>0|0,7|0,1,0)}else a=sc[(fa(da(c+12|0,4,0,0)|0|0,31|0)|0)&31](da(c+8|0,4,0,0)|0|0,da(a+12|0,4,0,0)|0|0,da(a+16|0,4,0,0)|0|0,da(b+12|0,4,0,0)|0|0,da(b+16|0,4,0,0)|0|0)|0;i=q;return a|0}function pp(a,b){a=a|0;b=b|0;var c=0,d=0;d=da(a+12|0,4,0,0)|0|0;c=da(b+12|0,4,0,0)|0|0;a=Yv(da(a+16|0,4,0,0)|0|0,da(b+16|0,4,0,0)|0|0,(d|0)>(c|0)?c:d)|0;return ((a|0)==0?d-c|0:a)|0}function qp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;do if(!(da(a+3>>0|0,1,0,0)|0)){if(da(a+4>>0|0,1,0,0)|0){ea(c+20|0,((rp(b+4|0,c)|0)&255)+4|0,2,0);e=c+8|0;ea(e+0|0,0|0,4,0);ea(e+4|0,0|0,4,0);ea(e+8|0,0|0,4,0);break}f=da(a+7>>0|0,1,0,1)|0|0;e=b+f|0;d=da(e>>0|0,1,0,0)|0|0;if(d<<24>>24>-1){e=d&255;ea(g|0,e|0,4,0);d=1}else{d=lm(e,g)|0;e=da(g|0,4,0,0)|0|0}g=c;ea(g|0,e|0,4,0);ea(g+4|0,0|0,4,0);f=(d&255)+f|0;d=12}else{d=da(b>>0|0,1,0,0)|0|0;if(d<<24>>24>-1){e=d&255;ea(g|0,e|0,4,0);d=1}else{d=lm(b,g)|0;e=da(g|0,4,0,0)|0|0}f=d&255;f=((rp(b+f|0,c)|0)&255)+f|0;d=12}while(0);do if((d|0)==12){ea(c+12|0,e|0,4,0);ea(c+8|0,b+f|0,4,0);d=da(a+10|0,2,0,1)|0|0;if(e>>>0>d>>>0){g=da(a+12|0,2,0,0)|0|0;b=g&65535;e=(((e-b|0)>>>0)%(((da((da(a+52|0,4,0,0)|0|0)+36|0,4,0,0)|0|0)+-4|0)>>>0)|0)+b|0;d=(e|0)>(d|0)?g:e&65535;ea(c+16|0,d|0,2,0);d=f+(d&65535)|0;ea(c+18|0,d|0,2,0);ea(c+20|0,d+4|0,2,0);break}else{d=e+f|0;ea(c+20|0,((d&65532)>>>0<4?4:d&65535)|0,2,0);ea(c+16|0,e|0,2,0);ea(c+18|0,0|0,2,0);break}}while(0);i=h;return}function rp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=da(a>>0|0,1,0,0)|0|0;d=c&255;do if(d&128){c=da(a+1>>0|0,1,0,1)|0|0;if(!(c&128)){e=b;ea(e|0,c|d<<7&16256|0,4,0);ea(e+4|0,0|0,4,0);c=2;break}e=da(a+2>>0|0,1,0,1)|0|0;d=(e|d<<14)&2080895;if(!(e&128)){e=b;ea(e|0,d|c<<7&16256|0,4,0);ea(e+4|0,0|0,4,0);c=3;break}e=da(a+3>>0|0,1,0,1)|0|0;c=(e|c<<14)&2080895;if(!(e&128)){e=b;ea(e|0,c|d<<7|0,4,0);ea(e+4|0,0|0,4,0);c=4;break}h=da(a+4>>0|0,1,0,1)|0|0;e=h|d<<14;if(!(h&128)){f=b;ea(f|0,e|c<<7|0,4,0);ea(f+4|0,d>>>18|0,4,0);c=5;break}g=c|d<<7;d=da(a+5>>0|0,1,0,1)|0|0;f=d|c<<14;if(!(d&128)){c=b;ea(c|0,f|e<<7&266354560|0,4,0);ea(c+4|0,g>>>18|0,4,0);c=6;break}c=da(a+6>>0|0,1,0,1)|0|0;d=c|e<<14;if(!(c&128)){c=b;ea(c|0,d&-266354561|f<<7&266354560|0,4,0);ea(c+4|0,g>>>11|0,4,0);c=7;break}c=d&2080895;e=da(a+7>>0|0,1,0,1)|0|0;d=e|f<<14;if(!(e&128)){e=b;ea(e|0,d&-266354561|c<<7|0,4,0);ea(e+4|0,g>>>4|0,4,0);c=8;break}else{e=b;ea(e|0,d<<8&532709120|c<<15|(da(a+8>>0|0,1,0,1)|0|0)|0,4,0);ea(e+4|0,h>>>3&15|g<<4|0,4,0);c=9;break}}else{d=b;ea(d|0,c&255|0,4,0);ea(d+4|0,0|0,4,0);c=1}while(0);return c|0}function sp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g+8|0;f=g;d=(da(a+1>>0|0,1,0,1)|0|0)<<16|(da(a>>0|0,1,0,1)|0|0)<<24|(da(a+2>>0|0,1,0,1)|0|0)<<8|(da(a+3>>0|0,1,0,1)|0|0);a=(da(a+5>>0|0,1,0,1)|0|0)<<16|(da(a+4>>0|0,1,0,1)|0|0)<<24|(da(a+6>>0|0,1,0,1)|0|0)<<8|(da(a+7>>0|0,1,0,1)|0|0);h=c;ea(h|0,a|0,4,0);ea(h+4|0,d|0,4,0);if((b|0)==6)a=4;else{ea(k|0,a|0,4,0);ea(k+4|0,d|0,4,0);ea(e|0,+(+(+da(k|0,8,1,0))),8,1);ea(f|0,+(+(+da(e|0,8,1,0))),8,1);a=+(+da(e|0,8,1,0))!=+(+da(f|0,8,1,0))?1:8}ea(c+8|0,a|0,2,0);i=g;return}function tp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;if(!(c>>>0>16777215|(c|0)==16777215&b>>>0>4294967295)){d=b;e=0;while(1){b=e+1|0;ea(f+e>>0|0,d|128|0,1,0);d=lw(d|0,c|0,7)|0;c=C;if((d|0)==0&(c|0)==0){c=e;break}else e=b}ea(f>>0|0,(da(f>>0|0,1,0,1)|0|0)&127|0,1,0);if((c|0)>-1){d=0;while(1){ea(a+d>>0|0,da(f+c>>0|0,1,0,0)|0|0|0,1,0);if((c|0)>0){d=d+1|0;c=c+-1|0}else break}}}else{ea(a+8>>0|0,b|0,1,0);b=lw(b|0,c|0,8)|0;d=C;c=7;while(1){ea(a+c>>0|0,b|128|0,1,0);b=lw(b|0,d|0,7)|0;if((c|0)<=0){b=9;break}else{d=C;c=c+-1|0}}}i=g;return b|0}function up(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;if((da(a+44|0,4,0,0)|0|0)>>>0>=b>>>0){d=cl(a,b,c,d)|0;if(!d){d=da(c|0,4,0,0)|0|0;if((da(d>>0|0,1,0,0)|0|0)==0?(e=_p(d)|0,(e|0)!=0):0){d=da(c|0,4,0,0)|0|0;if(d)Ag(da(d+68|0,4,0,0)|0|0)}else e=0}else e=d}else{ea(f|0,54788|0,4,0);ea(f+4|0,10788|0,4,0);ad(11,13600,f);e=11}i=g;return e|0}function vp(a){a=a|0;var b=0,c=0,d=0;if((da(a+12>>0|0,1,0,0)|0|0)==0?(b=a+60|0,c=da(b|0,4,0,0)|0|0,((kc[(fa(da((da(c|0,4,0,0)|0|0)+48|0,4,0,0)|0|0,127|0)|0)&127](c)|0)&4096|0)==0):0){b=da(b|0,4,0,0)|0|0;c=da((da(b|0,4,0,0)|0|0)+44|0,4,0,0)|0|0;if(c){b=kc[(fa(c|0,127|0)|0)&127](b)|0;if((b|0)<32)b=512;else d=6}else{b=4096;d=6}if((d|0)==6)b=(b|0)>65536?65536:b;ea(a+148|0,b|0,4,0)}else ea(a+148|0,512|0,4,0);return}function wp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=a+40|0;do if(!(da(g|0,4,0,0)|0)){f=da(a+20>>0|0,1,0,0)|0|0;if(f<<24>>24){if(f&3){c=0;break}if((da(b+24|0,2,0,0)|0)&4){c=0;break}}ea(b+12|0,0|0,4,0);do if(!(da(a+208|0,4,0,0)|0)){if(!(((da(b+24|0,2,0,0)|0)&4)==0?(da(a+16>>0|0,1,0,0)|0|0)!=3:0))h=11;if((h|0)==11?(d=yl(a,1)|0,(d|0)!=0):0){c=d;break}if(((da(b+20|0,4,0,0)|0|0)>>>0>(da(a+24|0,4,0,0)|0|0)>>>0?(To(b)|0)!=0:0)?(e=Uo(b)|0,(e|0)!=0):0){c=e;break}c=zl(a,b)|0;h=16}else{if((To(b)|0)!=0?(c=Uo(b)|0,(c|0)!=0):0)break;c=vl(a,b,0,0)|0;h=16}while(0);if((h|0)==16)if(!c){wl(b);c=0;break}d=c&255;if((d|0)==10|(d|0)==13){ea(g|0,c|0,4,0);ea(a+16>>0|0,6|0,1,0)}}else c=0;while(0);return c|0}function xp(a){a=a|0;var b=0;b=da(a+8|0,4,0,0)|0|0;if((da(b>>0|0,1,0,0)|0|0)!=0?(ea(b>>0|0,0|0,1,0),(da(a+26|0,2,0,0)|0|0)>1):0)_p(b)|0;return}function yp(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,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;h=l+8|0;do if(!(da(e|0,4,0,0)|0)){if(!b){ea(k|0,53856|0,4,0);ea(k+4|0,10788|0,4,0);ad(11,13600,k);ea(e|0,11|0,4,0);break}if(b>>>0<2)g=0;else{f=b+-2|0;f=f-((f>>>0)%(((((da(a+36|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;g=((f+1|0)==(((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(a+32|0,4,0,0)|0|0)>>>0)|0|0)?3:2)+f|0}f=yg(da(a|0,4,0,0)|0|0,g,h,0)|0;if(f){ea(e|0,f|0,4,0);break}b=(b-g|0)*5|0;f=b+-5|0;do if((f|0)>=0){a=da(h|0,4,0,0)|0|0;g=da(a+4|0,4,0,0)|0|0;f=g+f|0;if((da(f>>0|0,1,0,0)|0|0)==c<<24>>24?((da(g+(b+-3)>>0|0,1,0,1)|0)<<16|(da(g+(b+-4)>>0|0,1,0,1)|0)<<24|(da(g+(b+-2)>>0|0,1,0,1)|0)<<8|(da(g+(b+-1)>>0|0,1,0,1)|0)|0)==(d|0):0)break;h=Fg(a)|0;ea(e|0,h|0,4,0);if(!h){ea(f>>0|0,c|0,1,0);ea(g+(b+-4)>>0|0,d>>>24|0,1,0);ea(g+(b+-3)>>0|0,d>>>16|0,1,0);ea(g+(b+-2)>>0|0,d>>>8|0,1,0);ea(g+(b+-1)>>0|0,d|0,1,0)}}else{ea(k|0,53867|0,4,0);ea(k+4|0,10788|0,4,0);ad(11,13600,k);ea(e|0,11|0,4,0);a=da(h|0,4,0,0)|0|0}while(0);if(a)Ag(a)}while(0);i=l;return}function zp(a,b,c){a=a|0;b=b|0;c=c|0;return Jm(a,b,c,0)|0}function Ap(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;f=(da(b>>0|0,1,0,1)|0)&63;d=b+f|0;h=da(c+8|0,4,0,0)|0|0;g=da(h|0,4,0,0)|0|0;h=da(h+4|0,4,0,0)|0|0;switch(da(b+1>>0|0,1,0,1)|0|0){case 2:{d=(da(d>>0|0,1,0,0)|0)<<8|(da(b+(f+1)>>0|0,1,0,1)|0);e=((d|0)<0)<<31>>31;i=11;break}case 4:{d=(da(b+(f+1)>>0|0,1,0,1)|0)<<16|(da(d>>0|0,1,0,1)|0)<<24|(da(b+(f+2)>>0|0,1,0,1)|0)<<8|(da(b+(f+3)>>0|0,1,0,1)|0);e=((d|0)<0)<<31>>31;i=11;break}case 3:{d=(da(b+(f+1)>>0|0,1,0,1)|0)<<8|(da(d>>0|0,1,0,0)|0)<<16|(da(b+(f+2)>>0|0,1,0,1)|0);e=((d|0)<0)<<31>>31;i=11;break}case 5:{e=(da(d>>0|0,1,0,0)|0)<<8|(da(b+(f+1)>>0|0,1,0,1)|0);d=(da(b+(f+3)>>0|0,1,0,1)|0)<<16|(da(b+(f+2)>>0|0,1,0,1)|0)<<24|(da(b+(f+4)>>0|0,1,0,1)|0)<<8|(da(b+(f+5)>>0|0,1,0,1)|0);i=11;break}case 7:case 0:{d=Jm(a,b,c,0)|0;break}case 6:{e=(da(b+(f+1)>>0|0,1,0,1)|0)<<16|(da(d>>0|0,1,0,1)|0)<<24|(da(b+(f+2)>>0|0,1,0,1)|0)<<8|(da(b+(f+3)>>0|0,1,0,1)|0);d=(da(b+(f+5)>>0|0,1,0,1)|0)<<16|(da(b+(f+4)>>0|0,1,0,1)|0)<<24|(da(b+(f+6)>>0|0,1,0,1)|0)<<8|(da(b+(f+7)>>0|0,1,0,1)|0);i=11;break}case 9:{e=0;d=1;i=11;break}case 8:{e=0;d=0;i=11;break}case 1:{d=da(d>>0|0,1,0,0)|0|0;e=((d|0)<0)<<31>>31;i=11;break}default:d=Jm(a,b,c,0)|0}do if((i|0)==11){if((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0){d=da(c+12|0,4,0,0)|0|0;break}if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){d=da(c+16|0,4,0,0)|0|0;break}if((da(c+4|0,2,0,1)|0|0)>1){d=Jm(a,b,c,1)|0;break}else{d=da(c+6>>0|0,1,0,0)|0|0;break}}while(0);return d|0}function Bp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;f=k+8|0;d=b+1|0;e=da(d>>0|0,1,0,0)|0|0;if(e<<24>>24>-1){d=e&255;ea(f|0,d|0,4,0)}else{lm(d,f)|0;d=da(f|0,4,0,0)|0|0}do if((d|0)>=12){if(!(d&1)){d=da(c+16|0,4,0,0)|0|0;break}f=da(b>>0|0,1,0,1)|0|0;g=(d+-12|0)/2|0;if((f+g|0)>(a|0)){ea(h|0,68550|0,4,0);ea(h+4|0,10788|0,4,0);ad(11,13600,h);ea(c+7>>0|0,11|0,1,0);d=0;break}d=da(c+8|0,4,0,0)|0|0;e=da(d+12|0,4,0,0)|0|0;d=Yv(b+f|0,da(d+16|0,4,0,0)|0|0,(g|0)>(e|0)?e:g)|0;if(d)if((d|0)>0){d=da(c+16|0,4,0,0)|0|0;break}else{d=da(c+12|0,4,0,0)|0|0;break}if((g|0)==(e|0))if((da(c+4|0,2,0,1)|0|0)>1){d=Jm(a,b,c,1)|0;break}else{d=da(c+6>>0|0,1,0,0)|0|0;break}else if((g-e|0)>0){d=da(c+16|0,4,0,0)|0|0;break}else{d=da(c+12|0,4,0,0)|0|0;break}}else d=da(c+12|0,4,0,0)|0|0;while(0);i=k;return d|0}function Cp(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+73|0;c=da(h>>0|0,1,0,0)|0|0;do if(c<<24>>24!=1){if((c&255)>2){c=Jn(a)|0;if(c)break;c=da(h>>0|0,1,0,0)|0|0}if(!(c<<24>>24)){ea(b|0,1|0,4,0);c=0;break}c=a+68|0;d=da(c|0,4,0,0)|0|0;if((d|0)!=0?(ea(h>>0|0,1|0,1,0),ea(c|0,0|0,4,0),(d|0)>0):0)c=0;else i=9}else i=9;while(0);do if((i|0)==9){g=a+76|0;c=da(g|0,2,0,0)|0|0;d=da(a+(c<<2)+120|0,4,0,0)|0|0;c=a+(c<<1)+78|0;e=(da(c|0,2,0,0)|0|0)+1<<16>>16;ea(c|0,e|0,2,0);c=(da(d+5>>0|0,1,0,0)|0|0)!=0;if((e&65535)<(da(d+18|0,2,0,1)|0|0)){if(c){c=0;break}c=Um(a)|0;break}if(!c){c=da(d+6>>0|0,1,0,1)|0|0;d=da(d+56|0,4,0,0)|0|0;c=qm(a,(da(d+(c+9)>>0|0,1,0,1)|0)<<16|(da(d+(c+8)>>0|0,1,0,1)|0)<<24|(da(d+(c+10)>>0|0,1,0,1)|0)<<8|(da(d+(c+11)>>0|0,1,0,1)|0))|0;if(c)break;c=Um(a)|0;break}e=a+44|0;f=a+72|0;d=da(g|0,2,0,0)|0|0;do{if(!(d<<16>>16)){i=15;break}c=da(a+(d<<16>>16<<2)+120|0,4,0,0)|0|0;if(c){Ag(da(c+68|0,4,0,0)|0|0);d=da(g|0,2,0,0)|0|0}d=d+-1<<16>>16;ea(g|0,d|0,2,0);ea(e|0,0|0,2,0);ea(f>>0|0,(da(f>>0|0,1,0,1)|0)&249|0,1,0);j=d<<16>>16;c=da(a+(j<<2)+120|0,4,0,0)|0|0}while((da(a+(j<<1)+78|0,2,0,1)|0|0)>=(da(c+18|0,2,0,1)|0|0));if((i|0)==15){ea(b|0,1|0,4,0);ea(h>>0|0,0|0,1,0);c=0;break}if(!(da(c+2>>0|0,1,0,0)|0))c=0;else c=Cm(a,b)|0}while(0);return c|0}function Dp(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,k=0;k=a+73|0;c=da(k>>0|0,1,0,0)|0|0;do if(c<<24>>24!=1){if((c&255)>2){c=Jn(a)|0;if(c)break;c=da(k>>0|0,1,0,0)|0|0}if(!(c<<24>>24)){ea(b|0,1|0,4,0);c=0;break}c=a+68|0;d=da(c|0,4,0,0)|0|0;if((d|0)!=0?(ea(k>>0|0,1|0,1,0),ea(c|0,0|0,4,0),(d|0)<0):0)c=0;else e=9}else e=9;while(0);a:do if((e|0)==9){j=a+76|0;f=da(j|0,2,0,0)|0|0;g=f<<16>>16;e=da(a+(g<<2)+120|0,4,0,0)|0|0;d=a+(g<<1)+78|0;c=da(d|0,2,0,0)|0|0;if(!(da(e+5>>0|0,1,0,0)|0)){b=da(e+56|0,4,0,0)|0|0;c=(c&65535)<<1;k=da(e+64|0,4,0,0)|0|0;c=((da(k+c>>0|0,1,0,1)|0)<<8|(da(k+(c|1)>>0|0,1,0,1)|0))&(da(e+20|0,2,0,1)|0);c=qm(a,(da(b+(c+1)>>0|0,1,0,1)|0)<<16|(da(b+c>>0|0,1,0,1)|0)<<24|(da(b+(c+2)>>0|0,1,0,1)|0)<<8|(da(b+(c+3)>>0|0,1,0,1)|0))|0;if(c)break;c=Ep(a)|0;break}b:do if(!(c<<16>>16)){h=a+44|0;i=a+72|0;e=g;while(1){if(!(f<<16>>16))break;d=da(a+(e<<2)+120|0,4,0,0)|0|0;if(!d)d=f;else{Ag(da(d+68|0,4,0,0)|0|0);d=da(j|0,2,0,0)|0|0}f=d+-1<<16>>16;ea(j|0,f|0,2,0);ea(h|0,0|0,2,0);ea(i>>0|0,(da(i>>0|0,1,0,1)|0)&249|0,1,0);e=f<<16>>16;d=a+(e<<1)+78|0;c=da(d|0,2,0,0)|0|0;if(c<<16>>16)break b}ea(k>>0|0,0|0,1,0);ea(b|0,1|0,4,0);c=0;break a}while(0);ea(d|0,c+-1<<16>>16|0,2,0);c=da(a+((da(j|0,2,0,0)|0)<<2)+120|0,4,0,0)|0|0;if((da(c+2>>0|0,1,0,0)|0|0)!=0?(da(c+5>>0|0,1,0,0)|0|0)==0:0)c=Dm(a,b)|0;else c=0}while(0);return c|0}function Ep(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=a+76|0;do{c=da(d|0,2,0,0)|0|0;b=da(a+(c<<2)+120|0,4,0,0)|0|0;if(da(b+5>>0|0,1,0,0)|0){e=4;break}f=da(b+6>>0|0,1,0,1)|0|0;g=da(b+56|0,4,0,0)|0|0;f=(da(g+(f+9)>>0|0,1,0,1)|0)<<16|(da(g+(f+8)>>0|0,1,0,1)|0)<<24|(da(g+(f+10)>>0|0,1,0,1)|0)<<8|(da(g+(f+11)>>0|0,1,0,1)|0);ea(a+(c<<1)+78|0,da(b+18|0,2,0,0)|0|0|0,2,0);b=qm(a,f)|0}while((b|0)==0);if((e|0)==4){ea(a+(c<<1)+78|0,(da(b+18|0,2,0,1)|0|0)+65535|0,2,0);b=0}return b|0}function Fp(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,k=0,l=0,m=0;m=i;i=i+224|0;if((i|0)>=(j|0))ba();k=m;g=m+8|0;ea(g|0,0|0,4,0);do if(b){h=a+16|0;l=Em(da(h|0,4,0,0)|0|0,m+16|0,200,g)|0;if(l){Fm(da(h|0,4,0,0)|0|0,c,b,l);if(!(da(l+4|0,2,0,0)|0)){lg(da((da(h|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,da(g|0,4,0,0)|0|0);ea(k|0,53713|0,4,0);ea(k+4|0,10788|0,4,0);ad(11,13600,k);g=11;break}h=da(g|0,4,0,0)|0|0;g=Bm(a,l,c,d,e,f)|0;if(h)lg(da((da(a+16|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,h)}else g=7}else g=Bm(a,0,c,d,e,f)|0;while(0);i=m;return g|0}function Gp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;if((i|0)>=(j|0))ba();n=o+24|0;d=o;l=o+36|0;m=o+32|0;h=da(a+52|0,4,0,0)|0|0;qp(a,b,d);ea(c|0,da(d+20|0,2,0,0)|0|0|0,2,0);c=da(d+18|0,2,0,0)|0|0;a:do if(c<<16>>16){e=c&65535;f=b+(e+3)|0;if(f>>>0>((da(a+56|0,4,0,0)|0|0)+(da(a+20|0,2,0,1)|0|0)|0)>>>0){ea(n|0,58720|0,4,0);ea(n+4|0,10788|0,4,0);ad(11,13600,n);c=11;break}c=(da(h+36|0,4,0,0)|0|0)+-4|0;c=(((da(d+12|0,4,0,0)|0|0)+-1+c-(da(d+16|0,2,0,1)|0|0)|0)>>>0)/(c>>>0)|0;if(c){g=h+44|0;a=c;e=(da(b+(e+1)>>0|0,1,0,1)|0)<<16|(da(b+e>>0|0,1,0,1)|0)<<24|(da(b+(e+2)>>0|0,1,0,1)|0)<<8|(da(f>>0|0,1,0,1)|0);while(1){a=a+-1|0;ea(l|0,0|0,4,0);ea(m|0,0|0,4,0);if(e>>>0<2)break;if(e>>>0>(da(g|0,4,0,0)|0|0)>>>0)break;b=(a|0)==0;if(!b){c=Lp(h,e,m,l)|0;if(c)break a;c=da(m|0,4,0,0)|0|0;if(c)f=13;else f=12}else f=12;if((f|0)==12){c=Xp(h,e)|0;ea(m|0,c|0,4,0);if(!c){c=0;f=15}else f=13}if((f|0)==13){f=0;if((da((da(c+68|0,4,0,0)|0|0)+26|0,2,0,0)|0|0)==1)f=15;else{ea(n|0,58754|0,4,0);ea(n+4|0,10788|0,4,0);ad(11,13600,n);c=11}}if((f|0)==15)c=Xm(h,c,e)|0;d=da(m|0,4,0,0)|0|0;if((d|0)!=0?(k=da(d+68|0,4,0,0)|0|0,(k|0)!=0):0)Ag(k);if(c)break a;if(b){c=0;break a}else e=da(l|0,4,0,0)|0|0}ea(n|0,58734|0,4,0);ea(n+4|0,10788|0,4,0);ad(11,13600,n);c=11}else c=0}else c=0;while(0);i=o;return c|0}function Hp(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();f=r;do if(!(da(d|0,4,0,0)|0)){n=da(a+56|0,4,0,0)|0|0;o=b<<1;p=da(a+64|0,4,0,0)|0|0;q=p+o|0;e=(da(q>>0|0,1,0,1)|0|0)<<8|(da(p+(o|1)>>0|0,1,0,1)|0|0);g=a+6|0;h=da(g>>0|0,1,0,1)|0|0;k=n+(h+5)|0;l=n+(h+6)|0;if(e>>>0>=((da(k>>0|0,1,0,1)|0|0)<<8|(da(l>>0|0,1,0,1)|0|0))>>>0?(m=a+52|0,(e+c|0)>>>0<=(da((da(m|0,4,0,0)|0|0)+36|0,4,0,0)|0|0)>>>0):0){c=Bq(a,e&65535,c&65535)|0;if(c){ea(d|0,c|0,4,0);break}c=a+18|0;e=(da(c|0,2,0,0)|0|0)+-1<<16>>16;ea(c|0,e|0,2,0);if(!(e<<16>>16)){d=n+(h+1)|0;ea(d>>0|0,0|0,1,0);ea(d+1>>0|0,0|0,1,0);ea(d+2>>0|0,0|0,1,0);ea(d+3>>0|0,0|0,1,0);ea(n+(h+7)>>0|0,0|0,1,0);ea(k>>0|0,(da((da(m|0,4,0,0)|0|0)+36|0,4,0,0)|0|0)>>>8|0,1,0);ea(l>>0|0,da((da(m|0,4,0,0)|0|0)+36|0,4,0,0)|0|0,1,0);ea(a+16|0,(da((da(m|0,4,0,0)|0|0)+36|0,4,0,0)|0|0)+65528-(da(g>>0|0,1,0,1)|0|0)-(da(a+7>>0|0,1,0,1)|0|0)|0,2,0);break}else{kw(q|0,p+(o+2)|0,(e&65535)-b<<1|0)|0;ea(n+(h+3)>>0|0,(da(c|0,2,0,1)|0|0)>>>8|0,1,0);ea(n+(h+4)>>0|0,da(c|0,2,0,0)|0|0,1,0);n=a+16|0;ea(n|0,(da(n|0,2,0,1)|0|0)+2|0,2,0);break}}ea(f|0,58991|0,4,0);ea(f+4|0,10788|0,4,0);ad(11,13600,f);ea(d|0,11|0,4,0)}while(0);i=r;return}function Ip(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;var h=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;y=i;i=i+16|0;if((i|0)>=(j|0))ba();k=y;u=y+12|0;q=y+8|0;a:do if(!(da(g|0,4,0,0)|0)){h=a+1|0;if((da(h>>0|0,1,0,0)|0|0)==0?(w=d+2|0,x=a+16|0,(w|0)<=(da(x|0,2,0,1)|0|0)):0){e=Fg(da(a+68|0,4,0,0)|0|0)|0;if(e){ea(g|0,e|0,4,0);break}r=da(a+56|0,4,0,0)|0|0;l=da(a+14|0,2,0,1)|0|0;s=a+18|0;t=(da(s|0,2,0,1)|0)<<1;n=b<<1;o=l+n|0;p=a+6|0;e=da(p>>0|0,1,0,1)|0|0;ea(u|0,0|0,4,0);b=t+l|0;l=r+(e+5)|0;m=r+(e+6)|0;h=(((da(l>>0|0,1,0,1)|0)<<8|(da(m>>0|0,1,0,1)|0))+65535&65535)+1|0;b:do if((b|0)>(h|0)){ea(k|0,54326|0,4,0);ea(k+4|0,10788|0,4,0);ad(11,13600,k);e=11}else{k=b+2|0;do if((k|0)<=(h|0)){if((da(r+(e+1)>>0|0,1,0,0)|0|0)==0?(da(r+(e+2)>>0|0,1,0,0)|0|0)==0:0){v=20;break}ea(q|0,0|0,4,0);b=Cq(a,d,u,q)|0;e=da(u|0,4,0,0)|0|0;if(e)break b;if(!(da(q|0,4,0,0)|0))if(!b)v=20;else h=b-r|0;else v=21}else v=20;while(0);if((v|0)==20)if((k+d|0)>(h|0))v=21;else v=23;if((v|0)==21){e=Dq(a)|0;ea(u|0,e|0,4,0);if(e)break;h=(((da(l>>0|0,1,0,1)|0)<<8|(da(m>>0|0,1,0,1)|0))+65535&65535)+1|0;v=23}if((v|0)==23){h=h-d|0;ea(l>>0|0,h>>>8|0,1,0);ea(m>>0|0,h|0,1,0)}ea(s|0,(da(s|0,2,0,0)|0|0)+1<<16>>16|0,2,0);ea(x|0,(da(x|0,2,0,1)|0|0)-w|0,2,0);e=r+h|0;jw(e|0,c|0,d|0)|0;if(f){ea(e>>0|0,f>>>24|0,1,0);ea(r+(h+1)>>0|0,f>>>16|0,1,0);ea(r+(h+2)>>0|0,f>>>8|0,1,0);ea(r+(h+3)>>0|0,f|0,1,0)}f=r+o|0;kw(r+(o+2)|0,f|0,t-n|0)|0;ea(f>>0|0,h>>>8|0,1,0);ea(r+(o+1)>>0|0,h|0,1,0);ea(r+((da(p>>0|0,1,0,1)|0|0)+3)>>0|0,(da(s|0,2,0,1)|0|0)>>>8|0,1,0);ea(r+((da(p>>0|0,1,0,1)|0|0)+4)>>0|0,da(s|0,2,0,0)|0|0,1,0);if(!(da((da(a+52|0,4,0,0)|0|0)+17>>0|0,1,0,0)|0))break a;Eq(a,c,g);break a}while(0);ea(g|0,e|0,4,0);break}if(!e)e=c;else jw(e|0,c|0,d|0)|0;if(f){ea(e>>0|0,f>>>24|0,1,0);ea(e+1>>0|0,f>>>16|0,1,0);ea(e+2>>0|0,f>>>8|0,1,0);ea(e+3>>0|0,f|0,1,0)}g=da(h>>0|0,1,0,0)|0|0;ea(h>>0|0,g+1<<24>>24|0,1,0);g=g&255;ea(a+(g<<2)+32|0,e|0,4,0);ea(a+(g<<1)+22|0,b|0,2,0)}while(0);i=y;return}function Jp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=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,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,ca=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,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;La=i;i=i+240|0;if((i|0)>=(j|0))ba();Ka=La+24|0;Ha=La+200|0;xa=La+188|0;wa=La+168|0;va=La+160|0;ya=La+136|0;za=La+116|0;Ja=La+96|0;Ea=La+92|0;ua=La+229|0;ta=La+72|0;sa=La+52|0;ra=La+206|0;Da=La+48|0;Aa=La;Ca=La+44|0;Ga=La+40|0;Fa=La+36|0;Ba=La+32|0;Ia=La+204|0;qa=La+216|0;_=a+4|0;ja=((da((da(_|0,4,0,0)|0|0)+36|0,4,0,0)|0)<<1>>>0)/3|0;ka=a+76|0;na=a+74|0;oa=qa+4|0;pa=qa;$=a+124|0;ha=a+78|0;ia=a+80|0;e=da(ka|0,2,0,0)|0|0;Z=0;while(1){f=e<<16>>16;g=da(a+(f<<2)+120|0,4,0,0)|0|0;h=g+1|0;c=(da(h>>0|0,1,0,0)|0|0)==0;if(!(e<<16>>16)){if(c){c=Z;b=0;break}ea(Ha|0,0|0,4,0);ea(xa|0,0|0,4,0);d=da(g+52|0,4,0,0)|0|0;b=Fg(da(g+68|0,4,0,0)|0|0)|0;ea(Ka|0,b|0,4,0);do if(!b){c=g+72|0;ea(Ka|0,hp(d,Ha,xa,da(c|0,4,0,0)|0|0,0)|0|0,4,0);e=da(Ha|0,4,0,0)|0|0;Fq(g,e,Ka);if(da(d+17>>0|0,1,0,0)|0)yp(d,da(xa|0,4,0,0)|0|0,5,da(c|0,4,0,0)|0|0,Ka);b=da(Ka|0,4,0,0)|0|0;if(!b){jw(e+22|0,g+22|0,(da(h>>0|0,1,0,1)|0)<<1|0)|0;jw(e+32|0,g+32|0,(da(h>>0|0,1,0,1)|0)<<2|0)|0;ea(e+1>>0|0,da(h>>0|0,1,0,0)|0|0|0,1,0);ol(g,(da((da(e+56|0,4,0,0)|0)>>0|0,1,0,1)|0)&247);W=da(g+6>>0|0,1,0,1)|0|0;V=da(g+56|0,4,0,0)|0|0;b=da(xa|0,4,0,0)|0|0;ea(V+(W+8)>>0|0,b>>>24|0,1,0);ea(V+(W+9)>>0|0,b>>>16|0,1,0);ea(V+(W+10)>>0|0,b>>>8|0,1,0);ea(V+(W+11)>>0|0,b|0,1,0);ea($|0,e|0,4,0);b=0;break}ea($|0,0|0,4,0);if(e)Ag(da(e+68|0,4,0,0)|0|0)}else ea($|0,0|0,4,0);while(0);if(b){c=Z;break}ea(ka|0,1|0,2,0);ea(ha|0,0|0,2,0);ea(ia|0,0|0,2,0);e=da($|0,4,0,0)|0|0;d=e+1|0;if(!(da(d>>0|0,1,0,0)|0)){c=1;f=1;Y=15}else{k=1;f=1;h=d}}else if(c){c=e;e=g;d=h;Y=15}else{k=e;e=g}if((Y|0)==15){Y=0;if((da(e+16|0,2,0,1)|0|0)>>>0>ja>>>0){k=c;h=d}else{c=Z;b=0;break}}d=f+-1|0;X=da(a+(d<<2)+120|0,4,0,0)|0|0;d=da(a+(d<<1)+78|0,2,0,0)|0|0;l=d&65535;b=Fg(da(X+68|0,4,0,0)|0|0)|0;do if(!b){if(((((da(e+3>>0|0,1,0,0)|0|0)!=0?(da(h>>0|0,1,0,0)|0|0)==1:0)?(aa=da(e+22|0,2,0,0)|0|0,ca=e+18|0,aa<<16>>16==(da(ca|0,2,0,0)|0|0)):0)?(fa=X+72|0,(da(fa|0,4,0,0)|0|0)!=1):0)?(ga=X+18|0,(da(ga|0,2,0,0)|0|0)==d<<16>>16):0){d=da(e+52|0,4,0,0)|0|0;if(!(aa<<16>>16)){ea(Ka|0,59423|0,4,0);ea(Ka+4|0,10788|0,4,0);ad(11,13600,Ka);c=Z;b=11;break}W=hp(d,Ca,Fa,0,0)|0;ea(Ga|0,W|0,4,0);if(!W){c=da(e+32|0,4,0,0)|0|0;ea(Ba|0,c|0,4,0);b=Kp(e,c)|0;ea(Ia|0,b|0,2,0);f=da(Ca|0,4,0,0)|0|0;ol(f,13);Gq(f,1,Ba,Ia);ea(f+16|0,65534-(b&65535)+(da(d+36|0,4,0,0)|0|0)-(da(f+14|0,2,0,1)|0|0)|0,2,0);if((da(d+17>>0|0,1,0,0)|0|0)!=0?(yp(d,da(Fa|0,4,0,0)|0|0,5,da(fa|0,4,0,0)|0|0,Ga),(b&65535)>(da(f+12|0,2,0,1)|0|0)):0)Eq(f,c,Ga);W=da(e+56|0,4,0,0)|0|0;d=(da(ca|0,2,0,1)|0)<<1;c=da(e+64|0,4,0,0)|0|0;d=((da(c+(d+-2)>>0|0,1,0,1)|0)<<8|(da(c+(d+-1)>>0|0,1,0,1)|0))&(da(e+20|0,2,0,1)|0);c=W+d|0;ea(Ba|0,c|0,4,0);d=W+(d+9)|0;while(1){b=c+1|0;if((da(c>>0|0,1,0,0)|0|0)<0&b>>>0>>0)c=b;else break}ea(Ba|0,b|0,4,0);d=c+10|0;f=oa;while(1){ea(Ba|0,b+1|0,4,0);W=da(b>>0|0,1,0,0)|0|0;c=f+1|0;ea(f>>0|0,W|0,1,0);b=da(Ba|0,4,0,0)|0|0;if(!(W<<24>>24<0&b>>>0>>0))break;else f=c}Ip(X,da(ga|0,2,0,1)|0|0,qa,c-pa|0,0,da(e+72|0,4,0,0)|0|0,Ga);W=da(X+6>>0|0,1,0,1)|0|0;V=da(X+56|0,4,0,0)|0|0;c=da(Fa|0,4,0,0)|0|0;ea(V+(W+8)>>0|0,c>>>24|0,1,0);ea(V+(W+9)>>0|0,c>>>16|0,1,0);ea(V+(W+10)>>0|0,c>>>8|0,1,0);ea(V+(W+11)>>0|0,c|0,1,0);c=da(Ca|0,4,0,0)|0|0;if(c)Ag(da(c+68|0,4,0,0)|0|0)}c=Z;b=da(Ga|0,4,0,0)|0|0;break}c=Fo(da((da(_|0,4,0,0)|0|0)+32|0,4,0,0)|0|0)|0;S=k<<16>>16==1;g=da(na>>0|0,1,0,1)|0|0;F=g&1;ea(Ha|0,0|0,4,0);ea(ua+0>>0|0,0|0,1,0);ea(ua+1>>0|0,0|0,1,0);ea(ua+2>>0|0,0|0,1,0);ea(ua+3>>0|0,0|0,1,0);ea(ua+4>>0|0,0|0,1,0);U=da(X+52|0,4,0,0)|0|0;if(!c)b=7;else{w=X+1|0;k=da(w>>0|0,1,0,1)|0|0;T=X+18|0;b=da(T|0,2,0,1)|0|0;f=b+k|0;if((f|0)<2){V=f;O=0}else{do if(d<<16>>16)if((f|0)==(l|0)){g=(g|-2)+l|0;break}else{g=l+-1|0;break}else g=0;while(0);V=2-F|0;O=g}W=V+1|0;g=O-k+V|0;v=X+56|0;k=da(v|0,4,0,0)|0|0;if((g|0)==(b|0))l=(da(X+6>>0|0,1,0,1)|0|0)+8|0;else{l=g<<1;R=da(X+64|0,4,0,0)|0|0;l=((da(R+l>>0|0,1,0,1)|0)<<8|(da(R+(l|1)>>0|0,1,0,1)|0))&(da(X+20|0,2,0,1)|0)}L=k+l|0;J=k+(l+1)|0;K=k+(l+2)|0;y=k+(l+3)|0;R=(da(J>>0|0,1,0,1)|0)<<16|(da(L>>0|0,1,0,1)|0)<<24|(da(K>>0|0,1,0,1)|0)<<8|(da(y>>0|0,1,0,1)|0);ea(Ea|0,R|0,4,0);l=xa+(V<<2)|0;R=up(U,R,l,0)|0;ea(Ha|0,R|0,4,0);a:do if(!R){o=X+22|0;r=X+32|0;s=X+20|0;t=X+64|0;u=U+22|0;I=U+36|0;p=V;k=0;while(1){d=da(l|0,4,0,0)|0|0;k=k+1+(da(d+18|0,2,0,1)|0|0)+(da(d+1>>0|0,1,0,1)|0|0)|0;d=p+-1|0;if(!p)break;q=d+O|0;l=da(w>>0|0,1,0,0)|0|0;if((q|0)==(da(o|0,2,0,1)|0|0))if(!(l<<24>>24)){l=0;Y=52}else{R=da(r|0,4,0,0)|0|0;ea(va+(d<<2)|0,R|0,4,0);g=(da(R+1>>0|0,1,0,1)|0)<<16|(da(R>>0|0,1,0,1)|0)<<24|(da(R+2>>0|0,1,0,1)|0)<<8|(da(R+3>>0|0,1,0,1)|0);ea(Ea|0,g|0,4,0);ea(Ja+(d<<2)|0,(Kp(X,R)|0)&65535|0,4,0);ea(w>>0|0,0|0,1,0)}else Y=52;if((Y|0)==52){Y=0;g=da(v|0,4,0,0)|0|0;m=q-(l&255)<<1;f=da(t|0,4,0,0)|0|0;m=((da(f+m>>0|0,1,0,1)|0)<<8|(da(f+(m|1)>>0|0,1,0,1)|0))&(da(s|0,2,0,1)|0);f=g+m|0;b=va+(d<<2)|0;ea(b|0,f|0,4,0);g=(da(g+(m+1)>>0|0,1,0,1)|0)<<16|(da(f>>0|0,1,0,1)|0)<<24|(da(g+(m+2)>>0|0,1,0,1)|0)<<8|(da(g+(m+3)>>0|0,1,0,1)|0);ea(Ea|0,g|0,4,0);n=(Kp(X,f)|0)&65535;ea(Ja+(d<<2)|0,n|0,4,0);if((da(u|0,2,0,0)|0)&4){if((n+m|0)>(da(I|0,4,0,0)|0|0)){d=p;Y=54;break}jw(c+m|0,f|0,n|0)|0;ea(b|0,c+(f-(da(v|0,4,0,0)|0|0))|0,4,0);l=da(w>>0|0,1,0,0)|0|0}Hp(X,q-(l&255)|0,n,Ha)}l=xa+(d<<2)|0;R=up(U,g,l,0)|0;ea(Ha|0,R|0,4,0);if(R){Y=47;break a}else p=d}if((Y|0)==54){Y=0;ea(Ka|0,59766|0,4,0);ea(Ka+4|0,10788|0,4,0);ad(11,13600,Ka);ea(Ha|0,11|0,4,0);ew(xa|0,0,d<<2|0)|0;f=0;g=0;break}l=k+3&-4;R=fi((da(U+32|0,4,0,0)|0|0)+(l*6|0)|0)|0;if(!R){ea(Ha|0,7|0,4,0);f=R;g=0;break}P=R+(l<<2)|0;B=P+(l<<1)|0;E=da(xa|0,4,0,0)|0|0;M=(da(E+5>>0|0,1,0,1)|0)<<2;Q=M&65535;N=da(E+3>>0|0,1,0,0)|0|0;x=N&255;if((V|0)>-1){A=N<<24>>24!=0;C=E;g=0;D=0;k=0;while(1){z=da(C+18|0,2,0,1)|0|0;H=da(C+1>>0|0,1,0,0)|0|0;v=H&255;w=v+z|0;if(!(H<<24>>24)){b=da(C+56|0,4,0,0)|0|0;if((w|0)>0){q=da(C+20|0,2,0,1)|0|0;p=da(C+14|0,2,0,1)|0|0;o=0;n=k;while(1){H=(o<<1)+p|0;H=b+(((da(b+H>>0|0,1,0,1)|0)<<8|(da(b+(H+1)>>0|0,1,0,1)|0))&q)|0;ea(R+(n<<2)|0,H|0,4,0);ea(P+(n<<1)|0,Kp(C,H)|0|0,2,0);o=o+1|0;if((o|0)==(z|0))break;else n=n+1|0}k=z+k|0}}else if((w|0)>0){r=C+56|0;p=C+20|0;o=C+64|0;n=0;b=k;while(1){q=n;u=v;b:while(1){while(1){s=u+-1|0;if((u|0)<=0){Y=72;break b}u=da(C+(s<<1)+22|0,2,0,1)|0|0;if((u|0)>(q|0))u=s;else{t=u;u=s;break}}if((t|0)==(q|0)){Y=71;break}else q=q+-1|0}if((Y|0)==71){Y=0;q=da(C+(u<<2)+32|0,4,0,0)|0|0}else if((Y|0)==72){Y=0;q=q<<1;H=da(o|0,4,0,0)|0|0;q=(da(r|0,4,0,0)|0|0)+(((da(H+q>>0|0,1,0,1)|0)<<8|(da(H+(q|1)>>0|0,1,0,1)|0))&(da(p|0,2,0,1)|0))|0}ea(R+(b<<2)|0,q|0,4,0);ea(P+(b<<1)|0,Kp(C,q)|0|0,2,0);n=n+1|0;if((n|0)==(w|0))break;else b=b+1|0}k=z+k+v|0}ea(za+(g<<2)|0,k|0,4,0);if((g|0)>=(V|0)|A)l=D;else{d=da(Ja+(g<<2)|0,4,0,0)|0|0;m=P+(k<<1)|0;ea(m|0,d|0,2,0);d=d&65535;l=d+D|0;jw(B+D|0,da(va+(g<<2)|0,4,0,0)|0|0,d|0)|0;d=R+(k<<2)|0;ea(d|0,B+(D+M)|0,4,0);f=(da(m|0,2,0,1)|0|0)-M|0;ea(m|0,f|0,2,0);do if(!(da(C+5>>0|0,1,0,0)|0)){G=da(d|0,4,0,0)|0|0;H=(da(C+56|0,4,0,0)|0|0)+8|0;H=da(H>>0|0,1,0,1)|0|(da(H+1>>0|0,1,0,1)|0)<<8|(da(H+2>>0|0,1,0,1)|0)<<16|(da(H+3>>0|0,1,0,1)|0)<<24;ea(G>>0|0,H|0,1,0);ea(G+1>>0|0,H>>8|0,1,0);ea(G+2>>0|0,H>>16|0,1,0);ea(G+3>>0|0,H>>24|0,1,0)}else{if((f&65532)>>>0>=4)break;ea(B+l>>0|0,0|0,1,0);ea(m|0,4|0,2,0);l=l+1|0}while(0);k=k+1|0}g=g+1|0;if((g|0)>=(W|0))break;C=da(xa+(g<<2)|0,4,0,0)|0|0;D=l}l=M+-12+(da(I|0,4,0,0)|0|0)|0;if((k|0)>0){m=A<<31>>31;f=0;d=0;g=0;do{b=g+2+(da(P+(f<<1)|0,2,0,1)|0|0)|0;if((b|0)>(l|0)){ea(Ja+(d<<2)|0,g|0,4,0);ea(ya+(d<<2)|0,f|0,4,0);if((d|0)>3){Y=91;break}else{f=f+m|0;d=d+1|0;g=0}}else g=b;f=f+1|0}while((f|0)<(k|0));if((Y|0)==91){Y=0;ea(Ka|0,59904|0,4,0);ea(Ka+4|0,10788|0,4,0);ad(11,13600,Ka);ea(Ha|0,11|0,4,0);f=R;g=0;break}ea(Ja+(d<<2)|0,g|0,4,0);ea(ya+(d<<2)|0,k|0,4,0);if((d|0)>0){w=(F|0)==0;f=d;do{n=Ja+(f<<2)|0;f=f+-1|0;b=Ja+(f<<2)|0;o=ya+(f<<2)|0;s=da(o|0,4,0,0)|0|0;v=da(b|0,4,0,0)|0|0;m=g;while(1){r=s+-1|0;q=s-x|0;if(m){if(!w){g=v;break}t=da(P+(q<<1)|0,2,0,0)|0|0;u=m+2|0;q=da(P+(r<<1)|0,2,0,0)|0|0;p=v+-2|0;if(((t&65535)+u|0)>(p-(q&65535)|0)){g=v;break}}else{p=v+-2|0;u=2;t=da(P+(q<<1)|0,2,0,0)|0|0;q=da(P+(r<<1)|0,2,0,0)|0|0}ea(o|0,r|0,4,0);s=r;v=p-(q&65535)|0;m=(t&65535)+u|0}ea(n|0,m|0,4,0);ea(b|0,g|0,4,0)}while((f|0)>0);D=1;H=l;G=k}else{D=1;H=l;G=k}}else Y=93}else{l=M+-12+(da(I|0,4,0,0)|0|0)|0;k=0;Y=93}if((Y|0)==93){Y=0;ea(Ja|0,0|0,4,0);ea(ya|0,k|0,4,0);D=0;H=l;d=0;G=k}if((da(E+72|0,4,0,0)|0|0)>>>0<2){ea(Ka|0,59963|0,4,0);ea(Ka+4|0,10788|0,4,0);ad(11,13600,Ka);ea(Ha|0,11|0,4,0);f=R;g=0;break}z=da((da(E+56|0,4,0,0)|0)>>0|0,1,0,1)|0|0;if((d|0)>-1){n=(F|0)!=0;b=U+17|0;f=X+72|0;p=0;g=0;while(1){do if((p|0)<(W|0)){E=xa+(p<<2)|0;F=da(E|0,4,0,0)|0|0;ea(wa+(p<<2)|0,F|0,4,0);ea(Da|0,F|0,4,0);ea(E|0,0|0,4,0);F=Fg(da(F+68|0,4,0,0)|0|0)|0;ea(Ha|0,F|0,4,0);g=g+1|0;if(F){f=R;break a}}else{F=hp(U,Da,Ea,n?1:da(Ea|0,4,0,0)|0|0,0)|0;ea(Ha|0,F|0,4,0);if(F){f=R;break a}l=da(Da|0,4,0,0)|0|0;ol(l,z);ea(wa+(p<<2)|0,l|0,4,0);g=g+1|0;ea(za+(p<<2)|0,G|0,4,0);if(!(da(b>>0|0,1,0,0)|0))break;yp(U,da(l+72|0,4,0,0)|0|0,5,da(f|0,4,0,0)|0|0,Ha);if(da(Ha|0,4,0,0)|0){f=R;break a}}while(0);if((p|0)<(d|0))p=p+1|0;else break}if((g|0)>0){k=0;c:do{F=da(wa+(k<<2)|0,4,0,0)|0|0;l=da(F+72|0,4,0,0)|0|0;ea(ta+(k<<2)|0,l|0,4,0);ea(sa+(k<<2)|0,l|0,4,0);ea(ra+(k<<1)|0,da((da(F+68|0,4,0,0)|0|0)+24|0,2,0,0)|0|0|0,2,0);if((k|0)>0){f=0;do{if((da(ta+(f<<2)|0,4,0,0)|0|0)==(l|0)){Y=118;break c}f=f+1|0}while((f|0)<(k|0))}k=k+1|0}while((k|0)<(g|0));if((Y|0)==118){Y=0;ea(Ka|0,60018|0,4,0);ea(Ka+4|0,10788|0,4,0);ad(11,13600,Ka);ea(Ha|0,11|0,4,0);f=R;break}m=(g|0)>1;f=U+44|0;d=0;do{if(m){k=0;l=1;do{k=(da(sa+(l<<2)|0,4,0,0)|0|0)>>>0<(da(sa+(k<<2)|0,4,0,0)|0|0)>>>0?l:k;l=l+1|0}while((l|0)!=(g|0))}else k=0;F=sa+(k<<2)|0;l=da(F|0,4,0,0)|0|0;ea(F|0,-1|0,4,0);if((k|0)!=(d|0)){if((k|0)>(d|0)){E=da((da(wa+(k<<2)|0,4,0,0)|0|0)+68|0,4,0,0)|0|0;F=k+1+(da(f|0,4,0,0)|0|0)|0;ea(E+24|0,0|0,2,0);Yp(E,F)}F=da(wa+(d<<2)|0,4,0,0)|0|0;E=da(F+68|0,4,0,0)|0|0;ea(E+24|0,da(ra+(k<<1)|0,2,0,0)|0|0|0,2,0);Yp(E,l);ea(F+72|0,l|0,4,0)}d=d+1|0}while((d|0)!=(g|0));ea(Ea|0,l|0,4,0);F=0}else F=1}else{F=1;g=0}C=g+-1|0;l=da(wa+(C<<2)|0,4,0,0)|0|0;E=da(l+72|0,4,0,0)|0|0;ea(L>>0|0,E>>>24|0,1,0);ea(J>>0|0,E>>>16|0,1,0);ea(K>>0|0,E>>>8|0,1,0);ea(y>>0|0,E|0,1,0);if(!((z&8|0)!=0|(W|0)==(g|0))){K=(da(l+56|0,4,0,0)|0|0)+8|0;L=(da((da(((g|0)>(W|0)?wa:xa)+(V<<2)|0,4,0,0)|0|0)+56|0,4,0,0)|0|0)+8|0;L=da(L>>0|0,1,0,1)|0|(da(L+1>>0|0,1,0,1)|0)<<8|(da(L+2>>0|0,1,0,1)|0)<<16|(da(L+3>>0|0,1,0,1)|0)<<24;ea(K>>0|0,L|0,1,0);ea(K+1>>0|0,L>>8|0,1,0);ea(K+2>>0|0,L>>16|0,1,0);ea(K+3>>0|0,L>>24|0,1,0)}E=U+17|0;if((da(E>>0|0,1,0,0)|0|0)!=0?(la=da(wa|0,4,0,0)|0|0,ma=da(I|0,4,0,0)|0|0,D):0){v=N<<24>>24==0;t=v&1;s=Q<<16>>16==0;q=da(la+56|0,4,0,0)|0|0;p=(da(la+18|0,2,0,1)|0|0)+(da(la+1>>0|0,1,0,1)|0|0)|0;r=0;o=0;k=0;m=la;while(1){u=da(R+(r<<2)|0,4,0,0)|0|0;if((r|0)==(p|0)){k=k+1|0;if((k|0)<(g|0))l=wa+(k<<2)|0;else l=xa+(k<<2)|0;p=da(l|0,4,0,0)|0|0;q=da(p+56|0,4,0,0)|0|0;p=r+t+(da(p+18|0,2,0,1)|0|0)+(da(p+1>>0|0,1,0,1)|0|0)|0}if((r|0)==(da(ya+(o<<2)|0,4,0,0)|0|0)){l=o+1|0;m=da(wa+(l<<2)|0,4,0,0)|0|0;if(!v)Y=142}else{l=o;Y=142}do if((Y|0)==142){Y=0;if((k|0)<(g|0)?(u>>>0>=q>>>0?(da(m+72|0,4,0,0)|0|0)==(da(ta+(k<<2)|0,4,0,0)|0|0):0)&u>>>0<(q+ma|0)>>>0:0)break;if(s)yp(U,(da(u+1>>0|0,1,0,1)|0)<<16|(da(u>>0|0,1,0,1)|0)<<24|(da(u+2>>0|0,1,0,1)|0)<<8|(da(u+3>>0|0,1,0,1)|0),5,da(m+72|0,4,0,0)|0|0,Ha);if((da(P+(r<<1)|0,2,0,1)|0|0)<=(da(m+12|0,2,0,1)|0|0))break;Eq(m,u,Ha)}while(0);r=r+1|0;if((r|0)==(G|0))break;else o=l}}if((C|0)>0){n=N<<24>>24==0;p=0;q=0;while(1){o=da(wa+(p<<2)|0,4,0,0)|0|0;k=da(ya+(p<<2)|0,4,0,0)|0|0;f=da(R+(k<<2)|0,4,0,0)|0|0;d=da(P+(k<<1)|0,2,0,0)|0|0;l=(d&65535)+M|0;m=c+q|0;do if(!(da(o+5>>0|0,1,0,0)|0)){L=(da(o+56|0,4,0,0)|0|0)+8|0;k=da(f>>0|0,1,0,1)|0|(da(f+1>>0|0,1,0,1)|0)<<8|(da(f+2>>0|0,1,0,1)|0)<<16|(da(f+3>>0|0,1,0,1)|0)<<24;ea(L>>0|0,k|0,1,0);ea(L+1>>0|0,k>>8|0,1,0);ea(L+2>>0|0,k>>16|0,1,0);ea(L+3>>0|0,k>>24|0,1,0);k=m}else{if(!n){qp(o,da(R+(k+-1<<2)|0,4,0,0)|0|0,Aa);l=Aa;f=m;k=0;l=(om(c+(q+4)|0,da(l|0,4,0,0)|0|0,da(l+4|0,4,0,0)|0|0)|0)+4|0;break}b=f+-4|0;if(d<<16>>16!=4){f=b;k=m;break}f=b;k=m;l=(Kp(X,b)|0)&65535}while(0);Ip(X,p+O|0,f,l,k,da(o+72|0,4,0,0)|0|0,Ha);if(da(Ha|0,4,0,0)|0){f=R;break a}p=p+1|0;if((p|0)>=(C|0))break;else q=l+q|0}}l=1-g|0;if((l|0)<(g|0)){D=da(ya|0,4,0,0)|0|0;C=N<<24>>24==0&1;do{A=(l|0)<0?0-l|0:l;B=ua+A|0;do if(!(da(B>>0|0,1,0,0)|0)){if((l|0)<=-1?(O=A+-1|0,(da(za+(O<<2)|0,4,0,0)|0|0)<(da(ya+(O<<2)|0,4,0,0)|0|0)):0)break;if(!A){z=0;f=0;y=D}else{k=A+-1|0;if((A|0)<(W|0))f=(da(za+(k<<2)|0,4,0,0)|0|0)+C|0;else f=G;y=(da(ya+(k<<2)|0,4,0,0)|0|0)+C|0;z=y;y=(da(ya+(A<<2)|0,4,0,0)|0|0)-y|0}w=da(wa+(A<<2)|0,4,0,0)|0|0;n=da(w+56|0,4,0,0)|0|0;b=da(w+6>>0|0,1,0,1)|0|0;d=w+64|0;k=(da(d|0,4,0,0)|0|0)+(y<<1)|0;m=w+18|0;q=da(m|0,2,0,1)|0|0;x=w+1|0;p=q+f+(da(x>>0|0,1,0,1)|0|0)|0;o=y+z|0;if((f|0)<(z|0)){O=Hq(w,z-f|0,R+(f<<2)|0,P+(f<<1)|0)|0;N=da(d|0,4,0,0)|0|0;kw(N|0,N+(O<<1)|0,q<<1|0)|0;q=q-O|0}if((p|0)>(o|0))q=q-(Hq(w,p-o|0,R+(o<<2)|0,P+(o<<1)|0)|0)|0;s=n+(b+5)|0;r=n+(b+6)|0;O=n+((((da(s>>0|0,1,0,1)|0)<<8|(da(r>>0|0,1,0,1)|0))+65535&65535)+1)|0;ea(Ka|0,O|0,4,0);d:do if(O>>>0>>0)Y=181;else{if((z|0)<(f|0)){p=f-z|0;p=(p|0)>(y|0)?y:p;O=da(d|0,4,0,0)|0|0;kw(O+(p<<1)|0,O|0,q<<1|0)|0;if(Iq(w,k,Ka,O,p,R+(z<<2)|0,P+(z<<1)|0)|0){Y=181;break}q=q+p|0}p=da(x>>0|0,1,0,0)|0|0;if(p<<24>>24){v=0;do{u=(da(w+(v<<1)+22|0,2,0,1)|0|0)+f|0;t=u-z|0;if((t|0)>-1&(t|0)<(y|0)){N=t<<1;M=da(d|0,4,0,0)|0|0;O=M+N|0;kw(M+(N+2)|0,O|0,q-t<<1|0)|0;if(Iq(w,k,Ka,O,1,R+(u<<2)|0,P+(u<<1)|0)|0){Y=181;break d}p=da(x>>0|0,1,0,0)|0|0;q=q+1|0}v=v+1|0}while((v|0)<(p&255|0))}O=q+z|0;if(Iq(w,k,Ka,(da(d|0,4,0,0)|0|0)+(q<<1)|0,y-q|0,R+(O<<2)|0,P+(O<<1)|0)|0){Y=181;break}O=y&65535;ea(m|0,O|0,2,0);ea(x>>0|0,0|0,1,0);ea(n+(b+3)>>0|0,(O&65535)>>>8|0,1,0);ea(n+(b+4)>>0|0,da(m|0,2,0,0)|0|0,1,0);O=(da(Ka|0,4,0,0)|0|0)-n|0;ea(s>>0|0,O>>>8|0,1,0);ea(r>>0|0,O|0,1,0)}while(0);if((Y|0)==181){Y=0;Gq(w,y,R+(z<<2)|0,P+(z<<1)|0)}ea(B>>0|0,1|0,1,0);ea(w+16|0,H-(da(Ja+(A<<2)|0,4,0,0)|0|0)|0,2,0)}while(0);l=l+1|0}while((l|0)!=(g|0))}do if(S){if(da(T|0,2,0,0)|0){Y=191;break}f=da(wa|0,4,0,0)|0|0;if((da(X+6>>0|0,1,0,1)|0|0)>>>0>(da(f+16|0,2,0,1)|0|0)>>>0){Y=191;break}ea(Ha|0,Dq(f)|0|0,4,0);Fq(f,X,Ha);if(da(Ha|0,4,0,0)|0)break;ea(Ha|0,Xm(da(f+52|0,4,0,0)|0|0,f,da(f+72|0,4,0,0)|0|0)|0|0,4,0)}else Y=191;while(0);do if((Y|0)==191){Y=0;if((da(E>>0|0,1,0,0)|0|0)==0|Q<<16>>16!=0|F)break;else f=0;do{T=da(wa+(f<<2)|0,4,0,0)|0|0;S=da(T+56|0,4,0,0)|0|0;yp(U,(da(S+9>>0|0,1,0,1)|0)<<16|(da(S+8>>0|0,1,0,1)|0)<<24|(da(S+10>>0|0,1,0,1)|0)<<8|(da(S+11>>0|0,1,0,1)|0),5,da(T+72|0,4,0,0)|0|0,Ha);f=f+1|0}while((f|0)!=(g|0))}while(0);if((g|0)>=(W|0)){f=R;break}f=da(Ha|0,4,0,0)|0|0;b=g;do{d=da(xa+(b<<2)|0,4,0,0)|0|0;if(!f){f=Xm(da(d+52|0,4,0,0)|0|0,d,da(d+72|0,4,0,0)|0|0)|0;ea(Ha|0,f|0,4,0)}b=b+1|0}while((b|0)!=(W|0));f=R}else{d=V;Y=47}while(0);if((Y|0)==47){Y=0;ew(xa|0,0,(d<<2)+4|0)|0;f=0;g=0}gi(f);if((V|0)>-1){d=0;do{f=da(xa+(d<<2)|0,4,0,0)|0|0;if(f)Ag(da(f+68|0,4,0,0)|0|0);d=d+1|0}while((d|0)<(W|0))}if((g|0)>0){d=0;do{b=da(wa+(d<<2)|0,4,0,0)|0|0;if(b)Ag(da(b+68|0,4,0,0)|0|0);d=d+1|0}while((d|0)!=(g|0))}b=da(Ha|0,4,0,0)|0|0}if(Z)_k(Z)}else c=Z;while(0);ea(h>>0|0,0|0,1,0);if(e)Ag(da(e+68|0,4,0,0)|0|0);e=(da(ka|0,2,0,0)|0|0)+-1<<16>>16;ea(ka|0,e|0,2,0);if(b)break;else Z=c}if(c)_k(c);i=La;return b|0}function Kp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=da(a+7>>0|0,1,0,1)|0|0;d=b+c|0;do if(!(da(a+4>>0|0,1,0,0)|0)){f=da(d>>0|0,1,0,0)|0|0;e=f&255;if(f<<24>>24<0){f=b+(c+9)|0;c=e&127;do{d=d+1|0;e=da(d>>0|0,1,0,0)|0|0;c=e&127|c<<7}while(e<<24>>24<0&d>>>0>>0)}else c=e;e=d+1|0;if(da(a+2>>0|0,1,0,0)|0){g=d+10|0;f=e;while(1){e=d+2|0;if((da(f>>0|0,1,0,0)|0|0)<0&e>>>0>>0){d=f;f=e}else break}}d=da(a+10|0,2,0,1)|0|0;if(c>>>0>d>>>0){f=da(a+12|0,2,0,1)|0|0;c=(((c-f|0)>>>0)%(((da((da(a+52|0,4,0,0)|0|0)+36|0,4,0,0)|0|0)+-4|0)>>>0)|0)+f|0;c=(e-b&65535)+4+(c>>>0>d>>>0?f:c)|0;break}else{c=e-b+c|0;c=c>>>0<4?4:c;break}}else{e=b+(c+9)|0;while(1){c=d+1|0;if((da(d>>0|0,1,0,0)|0|0)<0&c>>>0>>0)d=c;else break}c=c-b|0}while(0);return c&65535|0}function Lp(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,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();n=p+4|0;m=p;l=p+8|0;ea(n|0,0|0,4,0);if(da(a+17>>0|0,1,0,0)|0){e=((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(a+32|0,4,0,0)|0|0)>>>0)|0;h=a+36|0;k=b;while(1){g=k+1|0;if(g>>>0<2)f=0;else{f=k+-1|0;f=f-((f>>>0)%(((((da(h|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;f=((f+1|0)==(e|0)?3:2)+f|0}if((f|0)==(g|0)|(k|0)==(e|0))k=g;else break}if(g>>>0<=(da(a+44|0,4,0,0)|0|0)>>>0){k=gp(a,g,l,m)|0;h=(k|0)==0;f=h&(da(l>>0|0,1,0,0)|0|0)==4&(da(m|0,4,0,0)|0|0)==(b|0);g=f?g:0;if(f|h^1){e=0;f=f?101:k}else o=8}else{g=0;o=8}}else{g=0;o=8}if((o|0)==8){f=cl(a,b,n,(c|0)==0?2:0)|0;e=da(n|0,4,0,0)|0|0;if(!f){g=da(e+56|0,4,0,0)|0|0;g=(da(g+1>>0|0,1,0,1)|0)<<16|(da(g>>0|0,1,0,1)|0)<<24|(da(g+2>>0|0,1,0,1)|0)<<8|(da(g+3>>0|0,1,0,1)|0);f=0}}ea(d|0,g|0,4,0);if(!c){if(e)Ag(da(e+68|0,4,0,0)|0|0)}else ea(c|0,e|0,4,0);i=p;return ((f|0)==101?0:f)|0}function Mp(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;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;ea(g|0,0|0,4,0);e=(b|0)!=0;a:do if(c)if(e){e=g;while(1){f=c+8|0;while(1){if((Vp(a,b+8|0,da(b|0,4,0,0)|0|0,f,da(c|0,4,0,0)|0|0)|0)>=1)break;ea(e|0,b|0,4,0);e=b+4|0;b=da(e|0,4,0,0)|0|0;if(!b){b=0;f=0;break a}else f=0}ea(e|0,c|0,4,0);e=c+4|0;c=da(e|0,4,0,0)|0|0;if(!c){c=0;f=1;break a}if(!b){b=0;f=0;break}}}else{f=e;e=g}else{c=0;f=e;e=g}while(0);ea(e|0,(f?b:c)|0,4,0);ea(d|0,da(g|0,4,0,0)|0|0,4,0);i=h;return}function Np(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f+8|0;d=f;c=da(2252*4|0,4,0,0)|0|0;if((c|0)!=0?(kc[(fa(c|0,127|0)|0)&127](202)|0)!=0:0)c=3338;else{c=lp(da(a|0,4,0,0)|0|0,0,b,4126,e)|0;ea(e|0,c|0,4,0);if(!c){c=d;ea(c|0,0|0,4,0);ea(c+4|0,0|0,4,0);c=da(b|0,4,0,0)|0|0;$b[(fa(da((da(c|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,63|0)|0)&63](c,18,d)|0;c=da(e|0,4,0,0)|0|0}}i=f;return c|0}function Op(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;f=b+0|0;g=f+40|0;do{ea(f|0,0|0,4,0);f=f+4|0}while((f|0)<(g|0));f=((c|0)<0)<<31>>31;g=pg(c,f)|0;ea(b+4|0,g|0,4,0);if(!g)ea(b|0,7|0,4,0);else{g=qw(d|0,e|0,c|0,f|0)|0;ea(b+12|0,g|0,4,0);ea(b+16|0,g|0,4,0);g=cw(d|0,e|0,g|0,((g|0)<0)<<31>>31|0)|0;f=b+24|0;ea(f|0,g|0,4,0);ea(f+4|0,C|0,4,0);ea(b+8|0,c|0,4,0);ea(b+32|0,a|0,4,0)}return}function Pp(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,k=0,l=0,m=0,n=0,o=0,p=0;a:do if((c|0)>0){e=a+8|0;g=a+16|0;h=a+4|0;i=a+32|0;j=a+12|0;k=a+24|0;l=c;do{if(da(a|0,4,0,0)|0)break a;f=da(g|0,4,0,0)|0|0;d=(da(e|0,4,0,0)|0|0)-f|0;d=(l|0)>(d|0)?d:l;jw((da(h|0,4,0,0)|0|0)+f|0,b+(c-l)|0,d|0)|0;f=(da(g|0,4,0,0)|0|0)+d|0;ea(g|0,f|0,4,0);if((f|0)==(da(e|0,4,0,0)|0|0)){p=da(i|0,4,0,0)|0|0;n=da(j|0,4,0,0)|0|0;o=(da(h|0,4,0,0)|0|0)+n|0;m=k;m=iw(da(m|0,4,0,0)|0|0,da(m+4|0,4,0,0)|0|0,n|0,((n|0)<0)<<31>>31|0)|0;ea(a|0,sc[(fa(da((da(p|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](p,o,f-n|0,m,C)|0|0,4,0);ea(g|0,0|0,4,0);ea(j|0,0|0,4,0);m=da(e|0,4,0,0)|0|0;f=k;m=iw(da(f|0,4,0,0)|0|0,da(f+4|0,4,0,0)|0|0,m|0,((m|0)<0)<<31>>31|0)|0;f=k;ea(f|0,m|0,4,0);ea(f+4|0,C|0,4,0)}l=l-d|0}while((l|0)>0)}while(0);return}function Qp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=a+4|0;if(((da(a|0,4,0,0)|0|0)==0?(d=da(e|0,4,0,0)|0|0,(d|0)!=0):0)?(c=da(a+16|0,4,0,0)|0|0,f=da(a+12|0,4,0,0)|0|0,(c|0)>(f|0)):0){h=da(a+32|0,4,0,0)|0|0;g=a+24|0;g=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,f|0,((f|0)<0)<<31>>31|0)|0;ea(a|0,sc[(fa(da((da(h|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](h,d+f|0,c-f|0,g,C)|0|0,4,0)}d=a+24|0;c=da(a+16|0,4,0,0)|0|0;d=iw(c|0,((c|0)<0)<<31>>31|0,da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0)|0;c=b;ea(c|0,d|0,4,0);ea(c+4|0,C|0,4,0);Vc(da(e|0,4,0,0)|0|0);e=da(a|0,4,0,0)|0|0;c=a+0|0;d=c+40|0;do{ea(c|0,0|0,4,0);c=c+4|0}while((c|0)<(d|0));return e|0}function Rp(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,k=0,l=0,m=0;f=da(2252*4|0,4,0,0)|0|0;if((f|0)!=0?(kc[(fa(f|0,127|0)|0)&127](201)|0)!=0:0)f=266;else{h=b+44|0;if(da(h|0,4,0,0)|0)ea(h|0,0|0,4,0);m=b;ea(m|0,d|0,4,0);ea(m+4|0,e|0,4,0);m=c+8|0;k=da(m|0,4,0,0)|0|0;m=da(m+4|0,4,0,0)|0|0;i=b+8|0;g=i;ea(g|0,k|0,4,0);ea(g+4|0,m|0,4,0);g=da(c|0,4,0,0)|0|0;j=b+24|0;ea(j|0,g|0,4,0);c=a+8|0;f=da(c|0,4,0,0)|0|0;a=da((da(f+24|0,4,0,0)|0|0)+136|0,4,0,0)|0|0;l=((a|0)<0)<<31>>31;if(!((m|0)>(l|0)|(m|0)==(l|0)&k>>>0>a>>>0)?(da(da(g|0,4,0,0)|0|0,4,0,0)|0|0)>2:0){ea(h|0,0|0,4,0);f=da(c|0,4,0,0)|0|0}a=da(f+12|0,4,0,0)|0|0;c=((a|0)<0)<<31>>31;e=qw(d|0,e|0,a|0,c|0)|0;f=b+36|0;d=da(f|0,4,0,0)|0|0;if(!d){h=pg(a,c)|0;ea(f|0,h|0,4,0);ea(b+40|0,a|0,4,0);d=h;f=(h|0)==0?7:0}else f=0;if((f|0)==0&(e|0)!=0){f=a-e|0;a=b;h=da(a|0,4,0,0)|0|0;a=da(a+4|0,4,0,0)|0|0;b=iw(h|0,a|0,f|0,((f|0)<0)<<31>>31|0)|0;k=C;c=i;g=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;if((k|0)>(c|0)|(k|0)==(c|0)&b>>>0>g>>>0)f=cw(g|0,c|0,h|0,a|0)|0;j=da(j|0,4,0,0)|0|0;f=sc[(fa(da((da(j|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](j,d+e|0,f,h,a)|0}}return f|0}function Sp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;if((i|0)>=(j|0))ba();g=h+8|0;f=h;d=da(a+44|0,4,0,0)|0|0;c=a;e=da(c|0,4,0,0)|0|0;a:do if(!d){d=da(a+40|0,4,0,0)|0|0;c=qw(e|0,da(c+4|0,4,0,0)|0|0,d|0,((d|0)<0)<<31>>31|0)|0;if((c|0)!=0&(d-c|0)>8){d=(rp((da(a+36|0,4,0,0)|0|0)+c|0,b)|0)&255;c=a;d=iw(da(c|0,4,0,0)|0|0,da(c+4|0,4,0,0)|0|0,d|0,0)|0;c=a;ea(c|0,d|0,4,0);ea(c+4|0,C|0,4,0);c=0;break}else d=0;while(1){c=Jq(a,1,f)|0;if(c)break a;c=da((da(f|0,4,0,0)|0)>>0|0,1,0,0)|0|0;ea(g+(d&15)>>0|0,c|0,1,0);if(c<<24>>24<0)d=d+1|0;else break}rp(g,b)|0;c=0}else{d=(rp(d+e|0,b)|0)&255;c=a;d=iw(da(c|0,4,0,0)|0|0,da(c+4|0,4,0,0)|0|0,d|0,0)|0;c=a;ea(c|0,d|0,4,0);ea(c+4|0,C|0,4,0);c=0}while(0);i=h;return c|0}function Tp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;c=g;ea(c|0,0|0,4,0);ea(c+4|0,0|0,4,0);c=a;e=da(c+4|0,4,0,0)|0|0;b=a+8|0;d=da(b+4|0,4,0,0)|0|0;do if((e|0)<(d|0)|((e|0)==(d|0)?(da(c|0,4,0,0)|0|0)>>>0<(da(b|0,4,0,0)|0|0)>>>0:0))h=9;else{c=da(a+48|0,4,0,0)|0|0;if(c){b=Kq(c)|0;f=c+32|0;d=c+48|0;ea(f+0|0,da(d+0|0,4,0,0)|0|0,4,0);ea(f+4|0,da(d+4|0,4,0,0)|0|0,4,0);ea(f+8|0,da(d+8|0,4,0,0)|0|0,4,0);ea(f+12|0,da(d+12|0,4,0,0)|0|0,4,0);d=c+40|0;f=c+8|0;e=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;if((da(d|0,4,0,0)|0|0)==(e|0)?(da(d+4|0,4,0,0)|0|0)==(f|0):0)ea(c+20|0,1|0,4,0);if(!b)if(!(da(c+20|0,4,0,0)|0)){b=Rp(da(c|0,4,0,0)|0|0,a,c+32|0,e,f)|0;if(!b){h=9;break}else break}else b=0}else b=0;Up(a)}while(0);if((h|0)==9){b=Sp(a,g)|0;if(!b){b=da(g|0,4,0,0)|0|0;ea(a+20|0,b|0,4,0);b=Jq(a,b,a+32|0)|0}}i=k;return b|0}function Up(a){a=a|0;var b=0;Vc(da(a+28|0,4,0,0)|0|0);Vc(da(a+36|0,4,0,0)|0|0);Rm(da(a+48|0,4,0,0)|0|0);a=a+0|0;b=a+56|0;do{ea(a|0,0|0,4,0);a=a+4|0}while((a|0)<(b|0));return}function Vp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=da(a+12|0,4,0,0)|0|0;if(d)Fm(da((da(a+8|0,4,0,0)|0|0)+28|0,4,0,0)|0|0,e,d,f);return Jm(c,b,f,0)|0}function Wp(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();f=r;e=r+8|0;n=r+12|0;do if((da(a+44|0,4,0,0)|0|0)>>>0>=b>>>0){b=up(a,b,e,0)|0;if(!b){p=da(e|0,4,0,0)|0|0;o=p+9|0;a:do if(!(da(o>>0|0,1,0,0)|0)){ea(o>>0|0,1|0,1,0);l=da(p+6>>0|0,1,0,1)|0|0;h=p+18|0;e=da(h|0,2,0,0)|0|0;if(!(e<<16>>16)){e=e&65535;b=p+5|0}else{g=0;while(1){f=da(p+56|0,4,0,0)|0|0;e=g<<1;b=da(p+64|0,4,0,0)|0|0;e=((da(b+e>>0|0,1,0,1)|0)<<8|(da(b+(e|1)>>0|0,1,0,1)|0))&(da(p+20|0,2,0,1)|0);b=f+e|0;k=p+5|0;if((da(k>>0|0,1,0,0)|0|0)==0?(m=Wp(a,(da(f+(e+1)>>0|0,1,0,1)|0)<<16|(da(b>>0|0,1,0,1)|0)<<24|(da(f+(e+2)>>0|0,1,0,1)|0)<<8|(da(f+(e+3)>>0|0,1,0,1)|0),1,d)|0,(m|0)!=0):0){b=m;q=21;break a}b=Gp(p,b,n)|0;g=g+1|0;if(b){q=21;break a}e=da(h|0,2,0,1)|0|0;if((g|0)>=(e|0)){b=k;break}}}if(!(da(b>>0|0,1,0,0)|0)){b=da(p+56|0,4,0,0)|0|0;b=Wp(a,(da(b+(l+9)>>0|0,1,0,1)|0)<<16|(da(b+(l+8)>>0|0,1,0,1)|0)<<24|(da(b+(l+10)>>0|0,1,0,1)|0)<<8|(da(b+(l+11)>>0|0,1,0,1)|0),1,d)|0;if(!b)q=16}else if(!d)q=16;else{ea(d|0,(da(d|0,4,0,0)|0|0)+e|0,4,0);q=16}if((q|0)==16){if(c){b=Xm(da(p+52|0,4,0,0)|0|0,p,da(p+72|0,4,0,0)|0|0)|0;q=21;break}b=Fg(da(p+68|0,4,0,0)|0|0)|0;if(!b){ol(p,da((da(p+56|0,4,0,0)|0|0)+l>>0|0,1,0,1)|0|8);b=0;q=21;break}}ea(o>>0|0,0|0,1,0)}else{ea(f|0,60971|0,4,0);ea(f+4|0,10788|0,4,0);ad(11,13600,f);b=11;q=21}while(0);if((q|0)==21){ea(o>>0|0,0|0,1,0);if(!p)break}Ag(da(p+68|0,4,0,0)|0|0)}}else{ea(f|0,60966|0,4,0);ea(f+4|0,10788|0,4,0);ad(11,13600,f);b=11}while(0);i=r;return b|0}function Xp(a,b){a=a|0;b=b|0;var c=0,d=0;d=(da(a|0,4,0,0)|0|0)+204|0;c=$b[(fa(da(8744+132|0,4,0,0)|0|0,63|0)|0)&63](da((da(d|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,b,0)|0;c=hl(da(d|0,4,0,0)|0|0,b,c)|0;if(!c)c=0;else{d=da(c+8|0,4,0,0)|0|0;ea(d+56|0,da(c+4|0,4,0,0)|0|0,4,0);ea(d+68|0,c|0,4,0);ea(d+52|0,a|0,4,0);ea(d+72|0,b|0,4,0);ea(d+6>>0|0,((b|0)==1?100:0)|0,1,0);c=d}return c|0}function Yp(a,b){a=a|0;b=b|0;var c=0;c=a+20|0;pc[(fa(da(8744+140|0,4,0,0)|0|0,15|0)|0)&15](da((da(a+28|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0,b);ea(c|0,b|0,4,0);if(((da(a+24|0,2,0,0)|0)&6)==6)Po(a,3);return}function Zp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();p=q;m=da(a+52|0,4,0,0)|0|0;n=da(a>>0|0,1,0,0)|0|0;o=da(a+72|0,4,0,0)|0|0;l=_p(a)|0;ea(p|0,l|0,4,0);if(!l){l=da(a+18|0,2,0,0)|0|0;k=l&65535;if(!(l<<16>>16))b=a+5|0;else{c=a+56|0;d=a+20|0;e=a+64|0;b=a+5|0;l=0;do{f=da(c|0,4,0,0)|0|0;g=l<<1;h=da(e|0,4,0,0)|0|0;g=((da(h+g>>0|0,1,0,1)|0)<<8|(da(h+(g|1)>>0|0,1,0,1)|0))&(da(d|0,2,0,1)|0);h=f+g|0;Eq(a,h,p);if(!(da(b>>0|0,1,0,0)|0))yp(m,(da(f+(g+1)>>0|0,1,0,1)|0)<<16|(da(h>>0|0,1,0,1)|0)<<24|(da(f+(g+2)>>0|0,1,0,1)|0)<<8|(da(f+(g+3)>>0|0,1,0,1)|0),5,o,p);l=l+1|0}while((l|0)<(k|0))}if(!(da(b>>0|0,1,0,0)|0)){l=da(a+6>>0|0,1,0,1)|0|0;k=da(a+56|0,4,0,0)|0|0;yp(m,(da(k+(l+9)>>0|0,1,0,1)|0)<<16|(da(k+(l+8)>>0|0,1,0,1)|0)<<24|(da(k+(l+10)>>0|0,1,0,1)|0)<<8|(da(k+(l+11)>>0|0,1,0,1)|0),5,o,p)}}ea(a>>0|0,n|0,1,0);i=q;return da(p|0,4,0,0)|0|0}function _p(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();q=r;a:do if(!(da(a>>0|0,1,0,0)|0)){b=da(a+52|0,4,0,0)|0|0;n=da(a+56|0,4,0,0)|0|0;f=da(a+6>>0|0,1,0,1)|0|0;if(Qo(a,da(n+f>>0|0,1,0,1)|0|0)|0){ea(q|0,54562|0,4,0);ea(q+4|0,10788|0,4,0);ad(11,13600,q);b=11;break}h=da(b+32|0,4,0,0)|0|0;ea(a+20|0,h+65535|0,2,0);ea(a+1>>0|0,0|0,1,0);m=da(b+36|0,4,0,0)|0|0;b=f+8+(da(a+7>>0|0,1,0,1)|0|0)|0;ea(a+14|0,b|0,2,0);ea(a+60|0,n+m|0,4,0);b=b&65535;ea(a+64|0,n+b|0,4,0);e=da(n+(f+5)>>0|0,1,0,0)|0|0;d=da(n+(f+6)>>0|0,1,0,0)|0|0;c=(da(n+(f+3)>>0|0,1,0,1)|0)<<8|(da(n+(f+4)>>0|0,1,0,1)|0);ea(a+18|0,c|0,2,0);if(c>>>0>(((h+-8|0)>>>0)/6|0)>>>0){ea(q|0,54579|0,4,0);ea(q+4|0,10788|0,4,0);ad(11,13600,q);b=11;break}h=(c<<1)+b|0;g=m+-4|0;c=(da(n+(f+1)>>0|0,1,0,1)|0)<<8|(da(n+(f+2)>>0|0,1,0,1)|0);b=(((e&255)<<8|d&255)+65535&65535)+1+(da(n+(f+7)>>0|0,1,0,1)|0|0)|0;do if(c){while(1){if((c|0)<(h|0)|(c|0)>(g|0)){p=8;break}d=(da(n+c>>0|0,1,0,1)|0)<<8|(da(n+(c+1)>>0|0,1,0,1)|0);e=(da(n+(c+2)>>0|0,1,0,1)|0)<<8|(da(n+(c+3)>>0|0,1,0,1)|0);c=e+c|0;if(!d){k=e;l=c;o=b;p=12;break}if((d|0)<=(c+3|0)|(c|0)>(m|0))break;c=d;b=e+b|0}if((p|0)==8){ea(q|0,54634|0,4,0);ea(q+4|0,10788|0,4,0);ad(11,13600,q);b=11;break a}if((p|0)==12?(l|0)<=(m|0):0){b=k+o|0;break}ea(q|0,54641|0,4,0);ea(q+4|0,10788|0,4,0);ad(11,13600,q);b=11;break a}while(0);if((b|0)>(m|0)){ea(q|0,54655|0,4,0);ea(q+4|0,10788|0,4,0);ad(11,13600,q);b=11;break}else{ea(a+16|0,b-h|0,2,0);ea(a>>0|0,1|0,1,0);b=0;break}}else b=0;while(0);i=r;return b|0}function $p(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;d=da(a|0,4,0,0)|0|0;e=d+65|0;if(!(da(e>>0|0,1,0,0)|0)){if(((da(d+24|0,4,0,0)|0)&65536|0)==0?(f=a+4|0,k=da(f|0,4,0,0)|0|0,ea(g|0,((b|0)==0?13552:b)|0,4,0),ch(k,d,13560,g),(c|0)!=0):0){b=da(da(f|0,4,0,0)|0|0,4,0,0)|0|0;ea(g|0,b|0,4,0);ea(g+4|0,c|0,4,0);d=Lq(d,b,0,g)|0;ea(da(f|0,4,0,0)|0|0,d|0,4,0)}if(!(da(e>>0|0,1,0,0)|0)){ea(g|0,105209|0,4,0);ea(g+4|0,10788|0,4,0);ad(11,13600,g);d=11}else d=7}else d=7;ea(a+12|0,d|0,4,0);i=h;return}function aq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;l=a+20|0;a:do if((da(l|0,4,0,0)|0|0)>0){g=a+16|0;h=(c|0)==0;k=0;a=0;do{e=(k|0)<2^k;f=da(g|0,4,0,0)|0|0;d=da(f+(e<<4)+12|0,4,0,0)|0|0;if(!(!h?(cd(c,da(f+(e<<4)|0,4,0,0)|0|0)|0)!=0:0)){a=an(d+24|0,b,m)|0;if(a){a=da(a+8|0,4,0,0)|0|0;if(a)break a}else a=0}k=k+1|0}while((k|0)<(da(l|0,4,0,0)|0|0))}else a=0;while(0);i=n;return a|0}function bq(a){a=a|0;var b=0,c=0,d=0,e=0;e=da(a+8|0,4,0,0)|0|0;d=a+46|0;c=da(d|0,2,0,0)|0|0;c=(c&65535)>5?5:c&65535;b=da((da(a+12|0,4,0,0)|0|0)+28|0,2,0,0)|0|0;ea(e|0,(b<<16>>16<33?33:b)|0,2,0);jw(e+2|0,13512,c<<1|0)|0;b=da(d|0,2,0,1)|0|0;if(c>>>0>>0)do{c=c+1|0;ea(e+(c<<1)|0,23|0,2,0);b=da(d|0,2,0,1)|0|0}while((c|0)<(b|0));if(da(a+50>>0|0,1,0,0)|0)ea(e+(b<<1)|0,0|0,2,0);return}function cq(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,k=0,l=0,m=0;l=i;i=i+64|0;if((i|0)>=(j|0))ba();h=l;a:do if((((c|0)!=0?(f=da(c|0,4,0,0)|0|0,(f|0)!=0):0)?(k=c+8|0,(da(k|0,4,0,0)|0|0)!=0):0)?(e=a+4|0,m=Zh(da(a|0,4,0,0)|0|0,f,da(e|0,4,0,0)|0|0)|0,(m|0)!=0):0){d=da(c+4|0,4,0,0)|0|0;b:do if(!d)g=11;else{if(!(cd(da(c|0,4,0,0)|0|0,d)|0)){e=da(m+8|0,4,0,0)|0|0;if(!e){g=11;break}while(1){f=da(e+51>>0|0,1,0,0)|0|0;if((f&3)==2)break;e=da(e+20|0,4,0,0)|0|0;if(!e){g=11;break b}}d=da(k|0,4,0,0)|0|0;b=e}else{b=aq(da(a|0,4,0,0)|0|0,d,da(e|0,4,0,0)|0|0)|0;e=da(k|0,4,0,0)|0|0;if(!b)break;f=da(b+51>>0|0,1,0,0)|0|0;d=e}k=(da(b+46|0,2,0,1)|0|0)+1|0;ea(b+51>>0|0,f&-5|0,1,0);e=b+8|0;Mq(d,k,da(e|0,4,0,0)|0|0,b);if(da(b+36|0,4,0,0)|0)break a;ea(m+28|0,da(da(e|0,4,0,0)|0|0,2,0,0)|0|0|0,2,0);break a}while(0);if((g|0)==11)e=da(k|0,4,0,0)|0|0;g=m+42|0;k=h+44|0;ea(k|0,da(g|0,2,0,0)|0|0|0,2,0);Mq(e,1,m+28|0,h);ea(g|0,da(k|0,2,0,0)|0|0|0,2,0)}while(0);i=l;return 0}function dq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;do if(b){if((da(a+12|0,4,0,0)|0|0)>>>0>>0){ea(f|0,b|0,4,0);en(a,44408,f);c=1;break}d=(da(a+8|0,4,0,0)|0|0)+(b>>>3)|0;e=da(d>>0|0,1,0,1)|0|0;c=1<<(b&7);if(!(e&c)){ea(d>>0|0,e|c|0,1,0);c=0;break}else{ea(f|0,b|0,4,0);en(a,44432,f);c=1;break}}else c=1;while(0);i=g;return c|0}function eq(a,b){a=a|0;b=b|0;var c=0,d=0;c=da(a|0,4,0,0)|0|0;do if(c){if((b|0)==1){b=c+8|0;ea(a|0,da(b|0,4,0,0)|0|0,4,0);ea(b|0,0|0,4,0);ea(c+12|0,0|0,4,0);break}b=b+-1|0;c=eq(a,b)|0;d=da(a|0,4,0,0)|0|0;if(d){ea(d+12|0,c|0,4,0);c=d+8|0;ea(a|0,da(c|0,4,0,0)|0|0,4,0);ea(c|0,eq(a,b)|0|0,4,0);return d|0}}else c=0;while(0);return c|0}function fq(a,b){a=a|0;b=b|0;var c=0;if((da(a+43>>0|0,1,0,0)|0|0)==2){c=a+24|0;if((da(c|0,4,0,0)|0|0)>0){b=a+32|0;a=0;do{Vc(da((da(b|0,4,0,0)|0|0)+(a<<2)|0,4,0,0)|0|0);ea((da(b|0,4,0,0)|0|0)+(a<<2)|0,0|0,4,0);a=a+1|0}while((a|0)<(da(c|0,4,0,0)|0|0))}}else{a=da(a+4|0,4,0,0)|0|0;qc[(fa(da((da(a|0,4,0,0)|0|0)+64|0,4,0,0)|0|0,127|0)|0)&127](a,b)|0}return}function gq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();b=Mg(b)|0;if(b)ch(c,a,Re(a)|0,d);i=d;return b|0}function hq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=da(a|0,4,0,0)|0|0;d=a+16|0;e=a+84|0;bh(da(d|0,4,0,0)|0|0,(da(e|0,2,0,1)|0|0)<<1);lg(c,da(d|0,4,0,0)|0|0);ea(e|0,b|0,2,0);e=b*80|0;c=lh(c,e,0)|0;if(c){ew(c|0,0,e|0)|0;ea(d|0,c|0,4,0);if((b|0)>0){e=da(a|0,4,0,0)|0|0;d=b<<1;while(1){d=d+-1|0;ea(c+8|0,1|0,2,0);ea(c+32|0,e|0,4,0);if((d|0)<=0)break;else c=c+40|0}}}else ea(d|0,0|0,4,0);return}function iq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(!(da((da(a|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)){b=(_(da(a+84|0,2,0,1)|0|0,c)|0)+b|0;Wg((da(a+16|0,4,0,0)|0|0)+(b*40|0)|0,d,-1,1,e)|0}return}function jq(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;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;f=da(a|0,4,0,0)|0|0;e=f+1|0;ea(a|0,e|0,4,0);if((f|0)>98){c=a+8|0;e=da(c|0,4,0,0)|0|0;ea(a|0,f|0,4,0);do On(a);while((da(a|0,4,0,0)|0|0)>-1);sh(e,37160,g);ea(c|0,e|0,4,0)}else{ea(a+(e<<4)+12|0,b|0,2,0);ea(a+(e<<4)+14>>0|0,c|0,1,0);c=a+(e<<4)+16|0;ea(c+0|0,da(d+0|0,4,0,0)|0|0,4,0);ea(c+4|0,da(d+4|0,4,0,0)|0|0,4,0);ea(c+8|0,da(d+8|0,4,0,0)|0|0,4,0)}i=h;return}function kq(a,b,c){a=a|0;b=b|0;c=c|0;a=da(a+8|0,4,0,0)|0|0;switch(b&255|0){case 228:case 221:case 220:case 210:case 209:case 208:case 205:case 203:case 200:case 188:case 179:{Mk(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0);break}case 252:case 197:{Pn(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0);break}case 236:{Gk(da(a|0,4,0,0)|0|0,da(c+4|0,4,0,0)|0|0);break}case 175:case 174:{Fk(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0);break}case 223:case 219:case 217:{Gk(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0);break}case 207:case 196:case 195:case 163:{Lk(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0,1);break}case 213:case 212:case 201:case 194:{Co(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0);break}case 239:case 234:{Ek(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0);break}case 243:case 238:case 229:case 227:case 216:case 204:case 202:{Fk(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0);break}default:{}}return} -function Bl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();k=o;n=a+16|0;if((da(n>>0|0,1,0,1)|0|0)<2?(da(a+17>>0|0,1,0,1)|0|0)<2:0)d=0;else{bp(a);m=a+64|0;g=da(m|0,4,0,0)|0|0;e=da(g|0,4,0,0)|0|0;do if(!e)e=0;else{if((e|0)==14696){Fi(g,0,0)|0;ea(g|0,0|0,4,0);e=0;break}f=da(a+5>>0|0,1,0,0)|0|0;if(f<<24>>24==3){f=a+72|0;l=f;if(!((da(l|0,4,0,0)|0|0)==0&(da(l+4|0,4,0,0)|0|0)==0)){e=$b[(fa(da(e+16|0,4,0,0)|0|0,63|0)|0)&63](g,0,0)|0;if(!e)if(!(da(a+8>>0|0,1,0,0)|0))e=0;else{e=da(m|0,4,0,0)|0|0;e=qc[(fa(da((da(e|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](e,da(a+11>>0|0,1,0,1)|0|0)|0}}else e=0;m=f;ea(m|0,0|0,4,0);ea(m+4|0,0|0,4,0);break}else if(f<<24>>24!=1?(da(a+4>>0|0,1,0,0)|0|0)==0|f<<24>>24==5:0){m=(da(a+12>>0|0,1,0,0)|0|0)==0;kc[(fa(da(e+4|0,4,0,0)|0|0,127|0)|0)&127](g)|0;ea(g|0,0|0,4,0);if(!m){e=0;break}e=da(a|0,4,0,0)|0|0;e=$b[(fa(da(e+28|0,4,0,0)|0|0,63|0)|0)&63](e,da(a+172|0,4,0,0)|0|0,0)|0;break}l=a+72|0;h=l;if(!((da(h|0,4,0,0)|0|0)==0&(da(h+4|0,4,0,0)|0|0)==0)){h=a+160|0;d=da(h|0,4,0,0)|0|0;h=da(h+4|0,4,0,0)|0|0;if((b|0)!=0|(d|0)==0&(h|0)==0)e=$b[(fa(da(e+16|0,4,0,0)|0|0,63|0)|0)&63](g,0,0)|0;else e=sc[(fa(da(e+12|0,4,0,0)|0|0,31|0)|0)&31](g,14664,28,0,0)|0;if(!e){if(!(da(a+7>>0|0,1,0,0)|0)){e=da(m|0,4,0,0)|0|0;e=qc[(fa(da((da(e|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](e,da(a+11>>0|0,1,0,1)|0|16)|0}else e=0;if((e|0)==0&((h|0)>0|(h|0)==0&d>>>0>0)){e=da(m|0,4,0,0)|0|0;e=qc[(fa(da((da(e|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](e,k)|0;f=k;k=da(f+4|0,4,0,0)|0|0;if((e|0)==0&((k|0)>(h|0)|((k|0)==(h|0)?(da(f|0,4,0,0)|0|0)>>>0>d>>>0:0))){e=da(m|0,4,0,0)|0|0;e=$b[(fa(da((da(e|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,63|0)|0)&63](e,d,h)|0}}}}else e=0;m=l;ea(m|0,0|0,4,0);ea(m+4|0,0|0,4,0)}while(0);f=a+56|0;di(da(f|0,4,0,0)|0|0);ea(f|0,0|0,4,0);ea(a+44|0,0|0,4,0);f=a+204|0;d=da(f|0,4,0,0)|0|0;b=da(d|0,4,0,0)|0|0;if(b){do{wl(b);b=da(d|0,4,0,0)|0|0}while((b|0)!=0);d=da(f|0,4,0,0)|0|0}f=a+24|0;cp(d,da(f|0,4,0,0)|0|0);g=a+208|0;d=da(g|0,4,0,0)|0|0;if(!d){if((e|0)==0&(c|0)!=0){d=da(f|0,4,0,0)|0|0;if((da(a+32|0,4,0,0)|0|0)>>>0>d>>>0)e=Al(a,d)|0;else e=0}}else{b=d+44|0;if(da(b>>0|0,1,0,0)|0){if(!(da(d+43>>0|0,1,0,0)|0)){m=da(d+4|0,4,0,0)|0|0;oc[(fa(da((da(m|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](m,0,1,9)|0}ea(b>>0|0,0|0,1,0);ea(d+47>>0|0,0|0,1,0)}}if((e|0)==0&(c|0)!=0){d=da(a+60|0,4,0,0)|0|0;e=da(d|0,4,0,0)|0|0;if(!e)f=0;else{f=$b[(fa(da(e+40|0,4,0,0)|0|0,63|0)|0)&63](d,22,0)|0;f=(f|0)==12?0:f}}else f=e;do if(!(da(a+4>>0|0,1,0,0)|0)){d=da(g|0,4,0,0)|0|0;if((d|0)!=0?(dp(d,0)|0)==0:0){d=0;break}e=da(a+60|0,4,0,0)|0|0;d=da(e|0,4,0,0)|0|0;if(d){if(!(da(a+13>>0|0,1,0,0)|0))d=qc[(fa(da(d+32|0,4,0,0)|0|0,127|0)|0)&127](e,1)|0;else d=0;e=a+17|0;if((da(e>>0|0,1,0,0)|0|0)!=5)ea(e>>0|0,1|0,1,0)}else d=0;ea(a+18>>0|0,0|0,1,0)}else d=0;while(0);ea(n>>0|0,1|0,1,0);ea(a+19>>0|0,0|0,1,0);d=(f|0)==0?d:f}i=o;return d|0}function Cl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=da(a+4|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(f+19>>0|0,0|0,1,0);g=a+8|0;do if(da(g>>0|0,1,0,0)|0){if((da(c+152|0,4,0,0)|0|0)>1){c=f+76|0;if((da(c|0,4,0,0)|0|0)==(a|0)?(ea(c|0,0|0,4,0),b=f+22|0,ea(b|0,(da(b|0,2,0,1)|0)&65439|0,2,0),b=da(f+72|0,4,0,0)|0|0,(b|0)!=0):0)do{ea(b+8>>0|0,1|0,1,0);b=da(b+12|0,4,0,0)|0|0}while((b|0)!=0);ea(g>>0|0,1|0,1,0);break}c=f+72|0;b=da(c|0,4,0,0)|0|0;a:do if(b)do while(1){d=b+12|0;e=da(d|0,4,0,0)|0|0;if((da(b|0,4,0,0)|0|0)!=(a|0)){c=d;b=e;break}ea(c|0,e|0,4,0);if((da(b+4|0,4,0,0)|0|0)==1)b=e;else{Vc(b);b=da(c|0,4,0,0)|0|0}if(!b)break a}while((b|0)!=0);while(0);b=f+76|0;if((da(b|0,4,0,0)|0|0)!=(a|0)){b=da(f+40|0,4,0,0)|0|0;if((b|0)==2){e=f+22|0;ea(e|0,(da(e|0,2,0,1)|0)&65471|0,2,0);ea(f+40|0,1|0,4,0);e=20;break}}else{ea(b|0,0|0,4,0);b=f+22|0;ea(b|0,(da(b|0,2,0,1)|0)&65439|0,2,0);b=da(f+40|0,4,0,0)|0|0}b=b+-1|0;ea(f+40|0,b|0,4,0);if(!b){ea(f+20>>0|0,0|0,1,0);e=20}else e=20}else e=20;while(0);if(((e|0)==20?(ea(g>>0|0,0|0,1,0),(da(f+20>>0|0,1,0,0)|0|0)==0):0)?(h=f+12|0,i=da(h|0,4,0,0)|0|0,(i|0)!=0):0){ea(h|0,0|0,4,0);Ag(da(i+68|0,4,0,0)|0|0)}return}function Dl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=((da(a+36|0,4,0,0)|0|0)>>>0)/5|0;if(b>>>0<2){d=0;e=da(a+32|0,4,0,0)|0|0;g=da(2514*4|0,4,0,0)|0|0}else{d=b+-2|0;d=d-((d>>>0)%((f+1|0)>>>0)|0)|0;g=da(2514*4|0,4,0,0)|0|0;e=da(a+32|0,4,0,0)|0|0;d=((d+1|0)==((g>>>0)/(e>>>0)|0|0)?3:2)+d|0}c=b-c-(((c-b+f+d|0)>>>0)/(f>>>0)|0)|0;a=a+32|0;d=((g>>>0)/(e>>>0)|0)+1|0;e=((g>>>0)/(e>>>0)|0)+1|0;c=((d>>>0>>0&c>>>0>>0)<<31>>31)+c|0;while(1){if(c>>>0<2)d=0;else{d=c+-2|0;d=d-((d>>>0)%((f+1|0)>>>0)|0)|0;d=((d+1|0)==((g>>>0)/((da(a|0,4,0,0)|0|0)>>>0)|0|0)?3:2)+d|0}if(!((d|0)==(c|0)|(c|0)==(e|0)))break;c=c+-1|0}return c|0}function El(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=(b|0)==0;d=a;a:while(1){do if((d|0)!=(c|0)){if(!e?(da(d+60|0,4,0,0)|0|0)!=(b|0):0)break;if(((da(d+73>>0|0,1,0,0)|0|0)+-1&255)<2){a=ep(d)|0;if(!a)break;else break a}else{fp(d);break}}while(0);d=da(d+8|0,4,0,0)|0|0;if(!d){a=0;break}}return a|0}function Fl(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;if((i|0)>=(j|0))ba();f=s;h=s+32|0;p=s+28|0;g=s+24|0;l=s+20|0;n=s+16|0;q=s+12|0;o=s+8|0;if(c>>>0<2)k=0;else{k=c+-2|0;k=k-((k>>>0)%(((((da(a+36|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(a+32|0,4,0,0)|0|0)>>>0)|0|0)?3:2)+k|0}do if((k|0)!=(c|0)?((((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(a+32|0,4,0,0)|0|0)>>>0)|0)+1|0)!=(c|0):0){m=da((da(a+12|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;if((da(m+37>>0|0,1,0,1)|0|0)<<16|(da(m+36>>0|0,1,0,1)|0|0)<<24|(da(m+38>>0|0,1,0,1)|0|0)<<8|(da(m+39>>0|0,1,0,1)|0|0)){e=gp(a,c,h,p)|0;if(!e){m=da(h>>0|0,1,0,0)|0|0;if(m<<24>>24==2){if(d){e=0;break}e=hp(a,l,g,c,1)|0;if(e)break;f=da(l|0,4,0,0)|0|0;if(!f){r=24;break}Ag(da(f+68|0,4,0,0)|0|0);r=24;break}else if(m<<24>>24!=1){e=cl(a,c,q,0)|0;if(e)break;f=(d|0)==0;h=f?2:0;f=f?b:0;g=(d|0)!=0;do{e=hp(a,o,n,f,h)|0;if(e){r=16;break}k=da(o|0,4,0,0)|0|0;if(k)Ag(da(k+68|0,4,0,0)|0|0);k=da(n|0,4,0,0)|0|0}while(g&k>>>0>b>>>0);if((r|0)==16){f=da(q|0,4,0,0)|0|0;if(!f)break;Ag(da(f+68|0,4,0,0)|0|0);break}h=da(q|0,4,0,0)|0|0;e=Ym(a,h,m,da(p|0,4,0,0)|0|0,k,d)|0;if(h)Ag(da(h+68|0,4,0,0)|0|0);if(!e){r=24;break}else break}else{ea(f|0,56228|0,4,0);ea(f+4|0,10788|0,4,0);ad(11,13600,f);e=11;break}}}else e=101}else r=24;while(0);if((r|0)==24)if(!d){g=((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(a+32|0,4,0,0)|0|0)>>>0)|0;h=g+1|0;k=a+36|0;f=c;while(1){e=f+-1|0;if((e|0)==(h|0)){f=e;continue}if(e>>>0<2)f=0;else{f=f+-3|0;f=f-((f>>>0)%(((((da(k|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;f=((f+1|0)==(g|0)?3:2)+f|0}if((f|0)==(e|0))f=e;else break}ea(a+19>>0|0,1|0,1,0);ea(a+44|0,e|0,4,0);e=0}else e=0;i=s;return e|0}function Gl(a){a=a|0;var b=0,c=0,d=0;d=a+16|0;c=da(d>>0|0,1,0,0)|0|0;a:do if(c<<24>>24!=6)if((c&255)>=2){do if(!(da(a+208|0,4,0,0)|0)){if(!(c<<24>>24==2?1:(da(da(a+64|0,4,0,0)|0|0,4,0,0)|0|0)==0)){b=Jo(a,0)|0;break}b=Bl(a,0,0)|0;if((da(a+15>>0|0,1,0,0)|0|0)==0&(c&255)>2){ea(a+40|0,4|0,4,0);ea(d>>0|0,6|0,1,0);break a}}else{b=ip(a,2,-1)|0;c=Bl(a,da(a+19>>0|0,1,0,1)|0|0,0)|0;b=(b|0)==0?c:b}while(0);c=b&255;if((c|0)==10|(c|0)==13){ea(a+40|0,b|0,4,0);ea(d>>0|0,6|0,1,0)}}else b=0;else b=da(a+40|0,4,0,0)|0|0;while(0);return b|0}function Hl(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;a:do if((a|0)!=0?(e=da(a+4|0,4,0,0)|0|0,ea(e+4|0,da(a|0,4,0,0)|0|0,4,0),e=da(e+8|0,4,0,0)|0|0,(e|0)!=0):0){i=(c|0)==0;while(1){if(!i?((da(e+72>>0|0,1,0,0)|0)&1)==0:0){if(((da(e+73>>0|0,1,0,0)|0|0)+-1&255)<2?(d=ep(e)|0,(d|0)!=0):0)break}else{c=e+56|0;Vc(da(c|0,4,0,0)|0|0);ea(c|0,0|0,4,0);ea(e+73>>0|0,4|0,1,0);ea(e+68|0,b|0,4,0)}c=e+76|0;if((da(c|0,2,0,0)|0|0)>=0){h=0;while(1){f=e+(h<<2)+120|0;g=da(f|0,4,0,0)|0|0;if(g)Ag(da(g+68|0,4,0,0)|0|0);ea(f|0,0|0,4,0);if((h|0)<(da(c|0,2,0,0)|0|0))h=h+1|0;else break}}e=da(e+8|0,4,0,0)|0|0;if(!e)break a}Hl(a,d,0)|0;return d|0}while(0);return 0}function Il(a){a=a|0;var b=0,c=0,d=0;a:do if(!(da(a+4|0,4,0,0)|0)){d=da(a+20|0,4,0,0)|0|0;if((d|0)>0){a=da(a+16|0,4,0,0)|0|0;c=0;while(1){b=da(a+(c<<4)+4|0,4,0,0)|0|0;if((b|0)!=0?(da(b+16|0,4,0,0)|0|0)!=0:0){a=1;break a}c=c+1|0;if((c|0)>=(d|0)){a=0;break}}}else a=0}else a=1;while(0);return a|0}function Jl(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;c=da(3164*4|0,4,0,0)|0|0;if(c)mc[(fa(c|0,3|0)|0)&3]();i=a+20|0;g=da(i|0,4,0,0)|0|0;f=(g|0)>0;if(f){c=da(a+16|0,4,0,0)|0|0;e=0;do{d=da(c+(e<<4)+4|0,4,0,0)|0|0;if(d)ea((da(d+4|0,4,0,0)|0|0)+4|0,da(d|0,4,0,0)|0|0,4,0);e=e+1|0}while((e|0)!=(g|0))}j=a+24|0;if(!((da(j|0,4,0,0)|0)&2))c=1;else c=(da(a+145>>0|0,1,0,0)|0|0)!=0;if(f){h=a+16|0;c=c&1;f=g;g=0;e=0;while(1){d=da((da(h|0,4,0,0)|0|0)+(g<<4)+4|0,4,0,0)|0|0;if(!d)d=f;else{e=(da(d+8>>0|0,1,0,0)|0|0)==2?1:e;Kg(d,b,c);d=da(i|0,4,0,0)|0|0}g=g+1|0;if((g|0)>=(d|0))break;else f=d}}else e=0;Qn(a,68);c=da(3166*4|0,4,0,0)|0|0;if(c)mc[(fa(c|0,3|0)|0)&3]();c=da(j|0,4,0,0)|0|0;if((c&2|0)!=0?(da(a+145>>0|0,1,0,0)|0|0)==0:0){c=da(a+4|0,4,0,0)|0|0;if(c)do{d=c+88|0;ea(d|0,da(d|0,2,0,0)|0|8|0,2,0);c=da(c+52|0,4,0,0)|0|0}while((c|0)!=0);Dg(a);c=da(j|0,4,0,0)|0|0}d=a+504|0;ea(d+0|0,0|0,4,0);ea(d+4|0,0|0,4,0);ea(d+8|0,0|0,4,0);ea(d+12|0,0|0,4,0);ea(j|0,c&-16777217|0,4,0);c=da(a+204|0,4,0,0)|0|0;do if(c){if((e|0)==0?(da(a+63>>0|0,1,0,0)|0|0)!=0:0)break;bc[(fa(c|0,31|0)|0)&31](da(a+200|0,4,0,0)|0|0)}while(0);return}function Kl(a){a=a|0;var b=0,c=0;c=a+488|0;b=da(c|0,4,0,0)|0|0;if(b)do{ea(c|0,da(b+24|0,4,0,0)|0|0,4,0);lg(a,b);b=da(c|0,4,0,0)|0|0}while((b|0)!=0);ea(a+496|0,0|0,4,0);ea(a+500|0,0|0,4,0);ea(a+70>>0|0,0|0,1,0);return}function Ll(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=da(a+4|0,4,0,0)|0|0;ea(f+4|0,da(a|0,4,0,0)|0|0,4,0);c=da(f+8|0,4,0,0)|0|0;if(c)do{b=c;c=da(c+8|0,4,0,0)|0|0;if((da(b|0,4,0,0)|0|0)==(a|0))jp(b)}while((c|0)!=0);Kg(a,0,0);a:do if(da(a+9>>0|0,1,0,0)|0){c=f+64|0;b=da(c|0,4,0,0)|0|0;ea(c|0,b+-1|0,4,0);if((b|0)<2){b=da(3664*4|0,4,0,0)|0|0;if((b|0)==(f|0)){ea(3664*4|0,da(f+68|0,4,0,0)|0|0,4,0);d=12;break}else c=b;do{if(!c){d=12;break a}b=c+68|0;c=da(b|0,4,0,0)|0|0}while((c|0)!=(f|0));ea(b|0,da(f+68|0,4,0,0)|0|0,4,0);d=12}}else d=12;while(0);if((d|0)==12){kp(da(f|0,4,0,0)|0|0);b=da(f+52|0,4,0,0)|0|0;c=f+48|0;if((b|0)!=0?(e=da(c|0,4,0,0)|0|0,(e|0)!=0):0)bc[(fa(b|0,31|0)|0)&31](e);b=da(c|0,4,0,0)|0|0;if(b)Vc(b);b=f+80|0;c=da(b|0,4,0,0)|0|0;if(c){c=c+-4|0;ea(b|0,c|0,4,0);_k(c);ea(b|0,0|0,4,0)}Vc(f)}c=da(a+28|0,4,0,0)|0|0;b=a+24|0;if(c)ea(c+24|0,da(b|0,4,0,0)|0|0,4,0);b=da(b|0,4,0,0)|0|0;if(b)ea(b+28|0,c|0,4,0);Vc(a);return}function Ml(a,b){a=a|0;b=b|0;var c=0;b=da(b+32|0,4,0,0)|0|0;if((b|0)!=0?(c=(da(b|0,4,0,0)|0|0)+-1|0,ea(b|0,c|0,4,0),(c|0)==0):0){bc[(fa(da(b+4|0,4,0,0)|0|0,31|0)|0)&31](da(b+8|0,4,0,0)|0|0);lg(a,b)}return}function Nl(a){a=a|0;var b=0,c=0;c=a+8|0;b=da(c|0,4,0,0)|0|0;ea(c|0,0|0,4,0);c=a+12|0;Vc(da(c|0,4,0,0)|0|0);ea(c|0,0|0,4,0);ea(a|0,0|0,4,0);if(b)do{c=b;b=da(b|0,4,0,0)|0|0;Vc(c)}while((b|0)!=0);ea(a+4|0,0|0,4,0);return}function Ol(a){a=a|0;var b=0,c=0,d=0,e=0;if(a){d=da(a|0,4,0,0)|0|0;kg(d,a);e=da(a+48|0,4,0,0)|0|0;c=a+52|0;b=da(c|0,4,0,0)|0|0;if(!e)ea(d+4|0,b|0,4,0);else{ea(e+52|0,b|0,4,0);b=da(c|0,4,0,0)|0|0}if(b)ea(b+48|0,e|0,4,0);ea(a+40|0,-1241070648|0,4,0);ea(a|0,0|0,4,0);lg(d,a)}return}function Pl(a){a=a|0;var b=0;ea(a+65>>0|0,0|0,1,0);ea(a+52|0,7|0,4,0);a=da(a+236|0,4,0,0)|0|0;do if(a){b=a+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(b|0,1|0,2,0);break}else{ug(a);break}}while(0);return}function Ql(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=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;A=i;i=i+32|0;if((i|0)>=(j|0))ba();q=A;t=A+16|0;m=A+12|0;n=A+8|0;z=da(a|0,4,0,0)|0|0;if(da(z+65>>0|0,1,0,0)|0)ea(a+80|0,7|0,4,0);c=da(a+200|0,4,0,0)|0|0;if(c)ew(c|0,0,da(a+196|0,4,0,0)|0|0)|0;e=a+176|0;c=da(e|0,4,0,0)|0|0;if(c){while(1){d=da(c+4|0,4,0,0)|0|0;if(!d)break;else c=d}Wl(c)|0;ea(e|0,0|0,4,0);ea(a+184|0,0|0,4,0)}k=a+56|0;c=da(k|0,4,0,0)|0|0;a:do if((c|0)!=0?(l=a+36|0,b=da(l|0,4,0,0)|0|0,(b|0)>0):0){e=0;while(1){d=da(c+(e<<2)|0,4,0,0)|0|0;if(!d)d=b;else{Am(a,d);ea((da(k|0,4,0,0)|0|0)+(e<<2)|0,0|0,4,0);d=da(l|0,4,0,0)|0|0}e=e+1|0;if((e|0)>=(d|0))break a;c=da(k|0,4,0,0)|0|0;b=d}}while(0);c=da(a+8|0,4,0,0)|0|0;if(c)bh(c+40|0,da(a+28|0,4,0,0)|0|0);l=a+180|0;c=da(l|0,4,0,0)|0|0;if(c)do{ea(l|0,da(c+4|0,4,0,0)|0|0,4,0);k=c+80|0;b=c+60|0;d=da(b|0,4,0,0)|0|0;g=k+(d*40|0)|0;h=c+64|0;if((da(h|0,4,0,0)|0|0)>0){e=0;do{Am(da(c|0,4,0,0)|0|0,da(g+(e<<2)|0,4,0,0)|0|0);e=e+1|0}while((e|0)<(da(h|0,4,0,0)|0|0));d=da(b|0,4,0,0)|0|0}bh(k,d);lg(da(da(c|0,4,0,0)|0|0,4,0,0)|0|0,c);c=da(l|0,4,0,0)|0|0}while((c|0)!=0);if(da(a+204|0,4,0,0)|0)dm(a,-1,0);x=a+40|0;b:do if((da(x|0,4,0,0)|0|0)==-1108210269){v=a+76|0;if((da(v|0,4,0,0)|0|0)>-1){w=a+88|0;h=da(w|0,2,0,0)|0|0;if(h&128){u=a+80|0;e=da(u|0,4,0,0)|0|0;g=e&255;d=g+-7|0;do if(d>>>0<7?(f=(77>>>(d&127)&1)!=0,f):0)if((h&64)==0|(g|0)!=9){if((g|0)==7|(g|0)==13?(h&32)!=0:0){b=2;break}Jl(z,516);Kl(z);ea(z+63>>0|0,1|0,1,0);ea(a+92|0,0|0,4,0);e=da(u|0,4,0,0)|0|0;b=0}else{f=1;b=0}else{f=0;b=0}while(0);if((e|0)==0?(s=a+144|0,r=da(s+4|0,4,0,0)|0|0,(r|0)>0|(r|0)==0&(da(s|0,4,0,0)|0|0)>>>0>0):0){s=da(a|0,4,0,0)|0|0;ea(u|0,787|0,4,0);ea(a+86>>0|0,2|0,1,0);ch(a+44|0,s,34376,q)}g=z+304|0;if((da(g|0,4,0,0)|0|0)>0?(da(z+328|0,4,0,0)|0|0)==0:0)y=141;else if((da(z+63>>0|0,1,0,0)|0|0)!=0?(da(z+156|0,4,0,0)|0|0)==(((da(w|0,2,0,1)|0|0)>>>6&1^1)&65535|0):0){do if(!(da(u|0,4,0,0)|0))y=41;else{if(!((da(a+86>>0|0,1,0,0)|0|0)!=3|f)){y=41;break}Jl(z,0);ea(a+92|0,0|0,4,0)}while(0);c:do if((y|0)==41){d:do if(sm(a,1)|0)if(!((da(w|0,2,0,0)|0)&64))c=787;else{b=1;break b}else{f=z+328|0;d=da(f|0,4,0,0)|0|0;ea(f|0,0|0,4,0);e=da(g|0,4,0,0)|0|0;e:do if((e|0)>0){h=0;f:while(1){l=da((da(d+(h<<2)|0,4,0,0)|0|0)+8|0,4,0,0)|0|0;do if(l){k=da((da(l|0,4,0,0)|0|0)+60|0,4,0,0)|0|0;if(!k)break;c=kc[(fa(k|0,127|0)|0)&127](l)|0;Lm(a,l);if(c)break f;e=da(g|0,4,0,0)|0|0}while(0);h=h+1|0;if((h|0)>=(e|0)){y=50;break e}}ea(f|0,d|0,4,0);y=135}else y=50;while(0);g:do if((y|0)==50){ea(f|0,d|0,4,0);r=z+20|0;s=z+16|0;k=0;e=0;h=0;h:while(1){g=da(r|0,4,0,0)|0|0;if((k|0)>=(g|0)){d=e;break}f=da(s|0,4,0,0)|0|0;l=k;while(1){k=da(f+(l<<4)+4|0,4,0,0)|0|0;if((k|0)!=0?(da(k+8>>0|0,1,0,0)|0|0)==2:0)break;l=l+1|0;if((l|0)>=(g|0)){d=e;break h}}c=da(k+4|0,4,0,0)|0|0;ea(c+4|0,da(k|0,4,0,0)|0|0,4,0);c=ap(da(c|0,4,0,0)|0|0)|0;if(!c){k=l+1|0;e=((l|0)!=1&1)+e|0;h=1}else{y=135;break g}}do if(h){f=da(z+196|0,4,0,0)|0|0;if(!f)break;if(kc[(fa(f|0,127|0)|0)&127](da(z+192|0,4,0,0)|0|0)|0){c=531;break d}}while(0);e=da((da(s|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;h=da(da(e+4|0,4,0,0)|0|0,4,0,0)|0|0;g=(da(h+15>>0|0,1,0,0)|0|0)==0;if(g){l=da(h+168|0,4,0,0)|0|0;if(l)y=62}else{l=10360;y=62}do if((y|0)==62){k=l;while(1)if(!(da(k>>0|0,1,0,0)|0))break;else k=k+1|0;if((k-l&1073741823|0)==0|(d|0)<2)break;p=da(z|0,4,0,0)|0|0;if(g){f=da(h+168|0,4,0,0)|0|0;ea(t|0,0|0,4,0);if(!f){l=0;f=0}else y=80}else{ea(t|0,0|0,4,0);f=10360;y=80}if((y|0)==80){h=f;while(1)if(!(da(h>>0|0,1,0,0)|0))break;else h=h+1|0;l=h-f&1073741823}ea(q|0,f|0,4,0);o=th(z,44696,q)|0;if(!o){c=7;break d}l=o+l|0;k=p+32|0;h=0;i:while(1){do if(h){if((h|0)>100){y=87;break i}if((h|0)!=1)break;ea(q|0,o|0,4,0);ad(13,44728,q)}while(0);bd(4,n);c=da(n|0,4,0,0)|0|0;ea(q|0,c>>>8|0,4,0);ea(q+4|0,c&255|0,4,0);$c(13,l,44744,q)|0;c=oc[(fa(da(k|0,4,0,0)|0|0,31|0)|0)&31](p,o,0,m)|0;g=(c|0)==0;if(g&(da(m|0,4,0,0)|0|0)!=0)h=h+1|0;else{y=91;break}}if((y|0)==87){ea(q|0,o|0,4,0);ad(13,44712,q);$b[(fa(da(p+28|0,4,0,0)|0|0,63|0)|0)&63](p,o,0)|0;y=92}else if((y|0)==91)if(g)y=92;do if((y|0)==92){c=lp(p,o,t,16406,0)|0;if(c)break;f=da(r|0,4,0,0)|0|0;j:do if((f|0)>0){m=0;k=0;n=0;h=0;k:while(1){l=da((da(s|0,4,0,0)|0|0)+(n<<4)+4|0,4,0,0)|0|0;do if(!l)l=m;else{if((da(l+8>>0|0,1,0,0)|0|0)!=2){l=m;break}g=da(l+4|0,4,0,0)|0|0;e=da(g|0,4,0,0)|0|0;d=da(e+172|0,4,0,0)|0|0;if(!d){l=m;break}if(!h){ea(g+4|0,da(l|0,4,0,0)|0|0,4,0);h=(da(e+7>>0|0,1,0,0)|0|0)==0&1}e=da(t|0,4,0,0)|0|0;l=d;while(1)if(!(da(l>>0|0,1,0,0)|0))break;else l=l+1|0;g=d;c=sc[(fa(da((da(e|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](e,d,(l-g&1073741823)+1|0,m,k)|0;l=d;while(1)if(!(da(l>>0|0,1,0,0)|0))break;else l=l+1|0;if(c){f=e;y=106;break k}l=iw((l-g&1073741823)+1|0,0,m|0,k|0)|0;f=da(r|0,4,0,0)|0|0;k=C}while(0);n=n+1|0;if((n|0)>=(f|0))break;else m=l}if((y|0)==106){d=da(f|0,4,0,0)|0|0;if(d){kc[(fa(da(d+4|0,4,0,0)|0|0,127|0)|0)&127](e)|0;ea(f|0,0|0,4,0)}Vc(e);$b[(fa(da(p+28|0,4,0,0)|0|0,63|0)|0)&63](p,o,0)|0;lg(z,o);y=135;break g}do if(!h)h=0;else{g=da(t|0,4,0,0)|0|0;if((kc[(fa(da((da(g|0,4,0,0)|0|0)+48|0,4,0,0)|0|0,127|0)|0)&127](g)|0)&1024)break;c=qc[(fa(da((da(g|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](g,2)|0;if(!c)break;d=da(g|0,4,0,0)|0|0;if(d){kc[(fa(da(d+4|0,4,0,0)|0|0,127|0)|0)&127](g)|0;ea(g|0,0|0,4,0)}Vc(g);$b[(fa(da(p+28|0,4,0,0)|0|0,63|0)|0)&63](p,o,0)|0;lg(z,o);y=135;break g}while(0);e=da(r|0,4,0,0)|0|0;if((e|0)>0)l=0;else{l=1;c=0;break}while(1){g=da((da(s|0,4,0,0)|0|0)+(l<<4)+4|0,4,0,0)|0|0;if(g){c=Jg(g,o)|0;if(c){l=0;break j}e=da(r|0,4,0,0)|0|0}l=l+1|0;if((l|0)>=(e|0)){l=1;c=0;break}}}else{l=1;h=0;c=0}while(0);g=da(t|0,4,0,0)|0|0;f=da(g|0,4,0,0)|0|0;if(f){kc[(fa(da(f+4|0,4,0,0)|0|0,127|0)|0)&127](g)|0;ea(g|0,0|0,4,0)}Vc(g);if(!l){lg(z,o);y=135;break g}c=$b[(fa(da(p+28|0,4,0,0)|0|0,63|0)|0)&63](p,o,h)|0;lg(z,o);if(c){y=135;break g}c=da(3164*4|0,4,0,0)|0|0;if(c)mc[(fa(c|0,3|0)|0)&3]();c=da(r|0,4,0,0)|0|0;if((c|0)>0){e=0;do{d=da((da(s|0,4,0,0)|0|0)+(e<<4)+4|0,4,0,0)|0|0;if(d){Ig(d,1)|0;c=da(r|0,4,0,0)|0|0}e=e+1|0}while((e|0)<(c|0))}c=da(3166*4|0,4,0,0)|0|0;if(c)mc[(fa(c|0,3|0)|0)&3]();Qn(z,64);break g}while(0);lg(z,o);y=135;break g}while(0);c=da(r|0,4,0,0)|0|0;do if((c|0)>0){d=1;while(1){if(e){c=Jg(e,0)|0;if(c){y=135;break g}c=da(r|0,4,0,0)|0|0}if((d|0)>=(c|0))break;e=da((da(s|0,4,0,0)|0|0)+(d<<4)+4|0,4,0,0)|0|0;d=d+1|0}if((c|0)>0)e=0;else break;do{d=da((da(s|0,4,0,0)|0|0)+(e<<4)+4|0,4,0,0)|0|0;if(d){c=Ig(d,0)|0;if(c){y=135;break g}c=da(r|0,4,0,0)|0|0}e=e+1|0}while((e|0)<(c|0))}while(0);Qn(z,64)}while(0);do if((y|0)==135){if(!c)break;else if((c|0)!=5)break d;if(!((da(w|0,2,0,0)|0)&64)){c=5;break d}else{b=5;break b}}while(0);t=z+504|0;y=z+24|0;ea(t+0|0,0|0,4,0);ea(t+4|0,0|0,4,0);ea(t+8|0,0|0,4,0);ea(t+12|0,0|0,4,0);ea(y|0,(da(y|0,4,0,0)|0)&-16777219|0,4,0);break c}while(0);ea(u|0,c|0,4,0);Jl(z,0);ea(a+92|0,0|0,4,0)}while(0);ea(z+500|0,0|0,4,0);y=146}else y=141;do if((y|0)==141)if(!b)if(da(u|0,4,0,0)|0){c=da(a+86>>0|0,1,0,0)|0|0;if(c<<24>>24==2){b=2;y=147;break}else if(c<<24>>24==3){b=1;y=147;break}else{Jl(z,516);Kl(z);ea(z+63>>0|0,1|0,1,0);ea(a+92|0,0|0,4,0);y=146;break}}else{b=1;y=147}else y=147;while(0);if((y|0)==146)if(!b)b=0;else y=147;if((y|0)==147){c=_l(a,b)|0;if(c){y=da(u|0,4,0,0)|0|0;if((y|0)==0|(y&255|0)==19){ea(u|0,c|0,4,0);y=a+44|0;lg(z,da(y|0,4,0,0)|0|0);ea(y|0,0|0,4,0)}Jl(z,516);Kl(z);ea(z+63>>0|0,1|0,1,0);ea(a+92|0,0|0,4,0)}}if((da(w|0,2,0,0)|0)&4){if((b|0)==2){ea(z+80|0,0|0,4,0);b=a+92|0}else{b=a+92|0;y=da(b|0,4,0,0)|0|0;ea(z+80|0,y|0,4,0);u=z+84|0;ea(u|0,(da(u|0,4,0,0)|0|0)+y|0,4,0)}ea(b|0,0|0,4,0)}}if((da(v|0,4,0,0)|0|0)>-1){b=z+148|0;ea(b|0,(da(b|0,4,0,0)|0|0)+-1|0,4,0);b=da(w|0,2,0,0)|0|0;if(!(b&64)){b=z+156|0;ea(b|0,(da(b|0,4,0,0)|0|0)+-1|0,4,0);b=da(w|0,2,0,0)|0|0}if(b&128){y=z+152|0;ea(y|0,(da(y|0,4,0,0)|0|0)+-1|0,4,0)}}}ea(x|0,1369188723|0,4,0);b=a+80|0;if(!(da((da(a|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)){b=(da(b|0,4,0,0)|0|0)==5?5:0;break}else{ea(b|0,7|0,4,0);b=0;break}}else b=0;while(0);i=A;return b|0}function Rl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=a+8|0;d=da(e|0,2,0,1)|0|0;do if(d&18){ea(e|0,d|2|0,2,0);if(d&16384)Qg(a)|0;c=a+10|0;b=b&255;d=b&247;if((da(c>>0|0,1,0,1)|0|0|0)!=(d|0))Xl(a,d)|0;if(((b&8|0)!=0?((da(a+16|0,4,0,0)|0)&1|0)!=0:0)?(Ul(a)|0)!=0:0){c=0;break}if(((da(e|0,2,0,0)|0)&514)==2){$l(a)|0;f=12}else f=12}else{am(a,b,0)|0;d=b&247;c=a+10|0;f=12}while(0);if((f|0)==12)if((da(c>>0|0,1,0,1)|0|0|0)==(d|0))c=da(a+16|0,4,0,0)|0|0;else c=0;return c|0}function Sl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;ea(b|0,+(0.0),8,1);g=d&255;if(d<<24>>24==1){d=a;e=c;m=1;p=0}else{e=3-g|0;a:do if((e|0)<(c|0))while(1){d=e+2|0;if(da(a+e>>0|0,1,0,0)|0){c=1;break a}if((d|0)<(c|0))e=d;else{c=0;e=d;break}}else c=0;while(0);d=a+(g&1)|0;e=g+-3+e|0;m=2;p=c}o=a+e|0;b:do if(d>>>0>>0){while(1){e=da(d>>0|0,1,0,0)|0|0;if(!((da(10368+(e&255)>>0|0,1,0,0)|0)&1))break;d=d+m|0;if(d>>>0>=o>>>0){d=0;break b}}if(e<<24>>24==45){d=d+m|0;n=-1}else if(e<<24>>24==43){d=d+m|0;n=1}else n=1;c:do if(d>>>0>>0){e=0;do{if((da(d>>0|0,1,0,0)|0|0)!=48)break c;d=d+m|0;e=e+1|0}while(d>>>0>>0)}else e=0;while(0);d:do if(d>>>0>>0){a=0;g=0;while(1){c=da(d>>0|0,1,0,0)|0|0;if(!(((c&255)+-48|0)>>>0<10&((a|0)<214748364|(a|0)==214748364&g>>>0<3435973835))){i=a;break d}g=rw(g|0,a|0,10,0)|0;a=(c<<24>>24)+-48|0;g=iw(a|0,((a|0)<0)<<31>>31|0,g|0,C|0)|0;a=C;d=d+m|0;e=e+1|0;if(d>>>0>=o>>>0){i=a;break}}}else{g=0;i=0}while(0);e:do if(d>>>0>>0){c=0;while(1){a=da(d>>0|0,1,0,0)|0|0;if(((a&255)+-48|0)>>>0>=10){j=c;break}d=d+m|0;e=e+1|0;a=c+1|0;if(d>>>0>>0)c=a;else{k=i;j=a;a=0;i=1;c=1;break e}}f:do if(a<<24>>24==46){c=d+m|0;g:do if(c>>>0>>0){k=c;while(1){a=da(k>>0|0,1,0,0)|0|0;if(!(((a&255)+-48|0)>>>0<10&((i|0)<214748364|(i|0)==214748364&g>>>0<3435973835))){c=k;k=i;break g}g=rw(g|0,i|0,10,0)|0;i=(a<<24>>24)+-48|0;g=iw(i|0,((i|0)<0)<<31>>31|0,g|0,C|0)|0;i=C;e=e+1|0;a=j+-1|0;c=d+(m<<1)|0;if(c>>>0>>0){d=k;k=c;j=a}else{d=k;k=i;j=a;break}}}else k=i;while(0);if(c>>>0>>0){i=m<<1;while(1){if(((da(c>>0|0,1,0,1)|0|0)+-48|0)>>>0>=10)break f;a=d+i|0;e=e+1|0;if(a>>>0>>0){d=c;c=a}else{c=a;break}}}}else{c=d;k=i}while(0);if(c>>>0>>0){l=da(c>>0|0,1,0,0)|0|0;h:do if(l<<24>>24==69|l<<24>>24==101){d=c+m|0;if(d>>>0>=o>>>0){a=0;i=0;c=1;break e}a=da(d>>0|0,1,0,0)|0|0;if(a<<24>>24==45){d=c+(m<<1)|0;l=-1}else if(a<<24>>24==43){d=c+(m<<1)|0;l=1}else l=1;if(d>>>0>>0){c=0;i=0}else{a=0;i=0;c=l;break e}while(1){a=da(d>>0|0,1,0,0)|0|0;if(((a&255)+-48|0)>>>0>=10){a=c;c=l;break h}if((c|0)<1e4)a=(c*10|0)+-48+(a<<24>>24)|0;else a=1e4;d=d+m|0;if(d>>>0>>0){c=a;i=1}else{i=1;c=l;break}}}else{d=c;a=0;i=1;c=1}while(0);if((e|0)!=0&(i|0)!=0&d>>>0>>0)do{if(!((da(10368+(da(d>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&1))break e;d=d+m|0}while(d>>>0>>0)}else{d=c;a=0;i=1;c=1}}else{k=i;j=0;a=0;i=1;c=1}while(0);a=(_(a,c)|0)+j|0;l=(a|0)<0;c=l?0-a|0:a;do if((g|0)==0&(k|0)==0)if((n|0)<0)f=(e|0)!=0?-0.0:0.0;else f=0.0;else{if((a>>31|1|0)>0)if(((k|0)<214748364|(k|0)==214748364&g>>>0<3435973836)&(c|0)>0){a=k;do{c=c+-1|0;g=rw(g|0,a|0,10,0)|0;a=C}while(((a|0)<214748364|(a|0)==214748364&g>>>0<3435973836)&(c|0)>0)}else a=k;else{j=qw(g|0,k|0,10,0)|0;if((j|0)==0&(C|0)==0&(c|0)>0){a=k;do{c=c+-1|0;g=pw(g|0,a|0,10,0)|0;a=C;k=qw(g|0,a|0,10,0)|0}while((k|0)==0&(C|0)==0&(c|0)>0)}else a=k}k=(n|0)<0;j=cw(0,0,g|0,a|0)|0;j=k?j:g;k=k?C:a;if(!c){f=+(j>>>0)+4294967296.0*+(k|0);break}if((c+-308|0)>>>0<34){if(!((c|0)%308|0))h=1.0;else{f=1.0;do{f=f*10.0;c=c+-1|0}while(((c|0)%308|0|0)!=0);h=f}f=+(j>>>0)+4294967296.0*+(k|0);if(l){f=f/h/1.e+308;break}else{f=f*h*1.e+308;break}}if((c|0)>341){f=+(j>>>0)+4294967296.0*+(k|0);if(l){f=f*0.0;break}else{f=f*s;break}}if(!((c|0)%22|0)){g=c;f=1.0}else{g=c;f=1.0;do{f=f*10.0;g=g+-1|0}while(((g|0)%22|0|0)!=0)}if((g|0)>0){do{f=f*1.0e22;g=g+-22|0}while((g|0)>0);h=f}else h=f;f=+(j>>>0)+4294967296.0*+(k|0);if(l){f=f/h;break}else{f=f*h;break}}while(0);ea(b|0,+f,8,1);d=d>>>0>=o>>>0&(e|0)>0&(i|0)!=0&(p|0)==0&1}else d=0;while(0);return d|0}function Tl(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,k=0,l=0,m=0,n=0;g=d&255;if(d<<24>>24==1){e=a;f=c;l=1;c=0}else{f=3-g|0;a:do if((f|0)<(c|0))while(1){d=f+2|0;if(da(a+f>>0|0,1,0,0)|0){c=1;break a}if((d|0)<(c|0))f=d;else{c=0;f=d;break}}else c=0;while(0);e=a+(g&1)|0;f=g+-3+f|0;l=2}i=a+f|0;b:do if(e>>>0>>0){while(1){f=da(e>>0|0,1,0,0)|0|0;if(!((da(10368+(f&255)>>0|0,1,0,0)|0)&1))break;e=e+l|0;if(e>>>0>=i>>>0){j=0;break b}}if(f<<24>>24==43){e=e+l|0;j=0;break}else if(f<<24>>24==45){e=e+l|0;j=1;break}else{j=0;break}}else j=0;while(0);c:do if(e>>>0>>0){f=e;while(1){if((da(f>>0|0,1,0,0)|0|0)!=48){k=f;break c}f=f+l|0;if(f>>>0>=i>>>0){k=f;break}}}else k=e;while(0);do if(k>>>0>>0){a=k;h=0;g=0;f=0;while(1){d=da(a>>0|0,1,0,0)|0|0;if((d+-48&255)>=10){a=0;i=g;break}g=rw(h|0,g|0,10,0)|0;h=d<<24>>24;g=iw(g|0,C|0,-48,-1)|0;h=iw(g|0,C|0,h|0,((h|0)<0)<<31>>31|0)|0;g=C;f=f+l|0;a=k+f|0;if(a>>>0>=i>>>0){a=1;i=g;break}}g=d<<24>>24;d=(j|0)!=0;if((i|0)>=0)if(d){d=i;n=22;break}else{d=i;n=23;break}else{h=b;ea(h|0,(d?0:-1)|0,4,0);ea(h+4|0,(d?-2147483648:2147483647)|0,4,0);h=d?0:2;break}}else if(!j){a=1;h=0;d=0;g=0;f=0;n=23}else{a=1;h=0;d=0;g=0;f=0;n=22}while(0);if((n|0)==22){j=cw(0,0,h|0,d|0)|0;h=b;ea(h|0,j|0,4,0);ea(h+4|0,C|0,4,0);h=0}else if((n|0)==23){j=b;ea(j|0,h|0,4,0);ea(j+4|0,d|0,4,0);h=2}if(((g|0)==0|a?!((f|0)==0&(e|0)==(k|0)):0)?(m=l*19|0,!((f|0)>(m|0)|(c|0)!=0)):0)if((f|0)>=(m|0)){f=0;do{e=da(k+(_(f,l)|0)>>0|0,1,0,0)|0|0;c=da(11192+f>>0|0,1,0,0)|0|0;f=f+1|0;d=e<<24>>24==c<<24>>24}while(d&(f|0)<18);if(d)e=(da(k+(l*18|0)>>0|0,1,0,0)|0|0)+-56|0;else e=((e<<24>>24)-(c<<24>>24)|0)*10|0;if((e|0)>=0)return ((e|0)>0?1:h)|0;else e=0}else e=0;else e=1;return e|0}function Ul(a){a=a|0;var b=0,c=0;c=a+8|0;b=da(c|0,2,0,0)|0|0;if(b&16384){Qg(a)|0;b=da(c|0,2,0,0)|0|0}do if(b&18){if((da(a+24|0,4,0,0)|0|0)!=0?(da(a+16|0,4,0,0)|0|0)==(da(a+20|0,4,0,0)|0|0):0){b=0;break}b=a+12|0;if(!(dh(a,(da(b|0,4,0,0)|0|0)+2|0,1)|0)){a=a+16|0;ea((da(a|0,4,0,0)|0|0)+(da(b|0,4,0,0)|0|0)>>0|0,0|0,1,0);ea((da(a|0,4,0,0)|0|0)+((da(b|0,4,0,0)|0|0)+1)>>0|0,0|0,1,0);ea(c|0,da(c|0,2,0,1)|0|0|512|0,2,0);b=0}else b=7}else b=0;while(0);return b|0}function Vl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=qo(a,b,c,d)|0;if(!c)lg(a,b);return c|0}function Wl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=da(a|0,4,0,0)|0|0;ea(c+200|0,da(a+20|0,4,0,0)|0|0,4,0);ea(c+196|0,da(a+56|0,4,0,0)|0|0,4,0);ea(c+4|0,da(a+8|0,4,0,0)|0|0,4,0);ea(c+32|0,da(a+48|0,4,0,0)|0|0,4,0);ea(c+8|0,da(a+16|0,4,0,0)|0|0,4,0);ea(c+28|0,da(a+52|0,4,0,0)|0|0,4,0);ea(c+56|0,da(a+24|0,4,0,0)|0|0,4,0);ea(c+36|0,da(a+40|0,4,0,0)|0|0,4,0);f=a+32|0;d=da(f+4|0,4,0,0)|0|0;b=da(c|0,4,0,0)|0|0;e=b+32|0;ea(e|0,da(f|0,4,0,0)|0|0,4,0);ea(e+4|0,d|0,4,0);ea(c+92|0,da(a+68|0,4,0,0)|0|0,4,0);ea(b+80|0,da(a+72|0,4,0,0)|0|0,4,0);return da(a+44|0,4,0,0)|0|0}function Xl(a,b){a=a|0;b=b|0;if(((da(a+8|0,2,0,0)|0)&2)!=0?(da(a+10>>0|0,1,0,1)|0|0|0)!=(b|0):0)b=An(a,b&255)|0;else b=0;return b|0}function Yl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=a+8|0;if((da(d|0,2,0,0)|0)&9312)ug(a);ea(a+0|0,da(b+0|0,4,0,0)|0|0,4,0);ea(a+4|0,da(b+4|0,4,0,0)|0|0,4,0);ea(a+8|0,da(b+8|0,4,0,0)|0|0,4,0);ea(a+12|0,da(b+12|0,4,0,0)|0|0,4,0);ea(a+16|0,da(b+16|0,4,0,0)|0|0,4,0);if(!((da(b+8|0,2,0,0)|0)&2048))ea(d|0,(da(d|0,2,0,1)|0|0)&58367|c|0,2,0);return}function Zl(a,b){a=a|0;b=b|0;var c=0,d=0;if(!(((da(a+8|0,2,0,0)|0)&9312)==0?(da(a+24|0,4,0,0)|0|0)==0:0))Pg(a);a=a+0|0;c=b+0|0;d=a+40|0;do{ea(a|0,da(c|0,4,0,0)|0|0,4,0);a=a+4|0;c=c+4|0}while((a|0)<(d|0));ea(b+8|0,1|0,2,0);ea(b+24|0,0|0,4,0);return}function _l(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,k=0,l=0,m=0,n=0,o=0;o=da(a|0,4,0,0)|0|0;l=o+500|0;e=da(l|0,4,0,0)|0|0;do if((e|0)!=0?(m=a+104|0,d=da(m|0,4,0,0)|0|0,(d|0)!=0):0){n=d+-1|0;j=o+20|0;d=da(j|0,4,0,0)|0|0;if((d|0)>0){h=o+16|0;i=(b|0)==2;f=d;g=0;d=0;do{e=da((da(h|0,4,0,0)|0|0)+(g<<4)+4|0,4,0,0)|0|0;if(e){if(i?(k=tm(e,2,n)|0,(k|0)!=0):0)e=k;else e=tm(e,1,n)|0;f=da(j|0,4,0,0)|0|0;d=(d|0)==0?e:d}g=g+1|0}while((g|0)<(f|0));ea(l|0,(da(l|0,4,0,0)|0|0)+-1|0,4,0);ea(m|0,0|0,4,0);if(!d)d=13;else{c=d;d=16}}else{ea(l|0,e+-1|0,4,0);ea(m|0,0|0,4,0);d=13}do if((d|0)==13){if((b|0)==2?(c=rm(o,2,n)|0,(c|0)!=0):0)break;c=rm(o,1,n)|0;d=16}while(0);if((d|0)==16)if((b|0)!=2)break;k=a+152|0;j=da(k+4|0,4,0,0)|0|0;l=o+504|0;ea(l|0,da(k|0,4,0,0)|0|0,4,0);ea(l+4|0,j|0,4,0);j=a+160|0;l=da(j+4|0,4,0,0)|0|0;k=o+512|0;ea(k|0,da(j|0,4,0,0)|0|0,4,0);ea(k+4|0,l|0,4,0)}else c=0;while(0);return c|0}function $l(a){a=a|0;var b=0,c=0;b=a+12|0;if(!(dh(a,(da(b|0,4,0,0)|0|0)+2|0,1)|0)){c=a+16|0;ea((da(c|0,4,0,0)|0|0)+(da(b|0,4,0,0)|0|0)>>0|0,0|0,1,0);ea((da(c|0,4,0,0)|0|0)+((da(b|0,4,0,0)|0|0)+1)>>0|0,0|0,1,0);b=a+8|0;ea(b|0,da(b|0,2,0,1)|0|0|512|0,2,0);b=0}else b=7;return b|0}function am(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=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();g=l;h=a+8|0;e=da(h|0,2,0,0)|0|0;if(!(eh(a,32)|0)){d=a+16|0;f=da(d|0,4,0,0)|0|0;if(!(e&4)){ea(k|0,+(+(+da(a|0,8,1,0))),8,1);ea(g|0,da(k|0,4,0,0)|0|0,4,0);ea(g+4|0,da(k+4|0,4,0,0)|0|0,4,0);$c(32,f,20272,g)|0}else{n=a;e=da(n+4|0,4,0,0)|0|0;m=g;ea(m|0,da(n|0,4,0,0)|0|0,4,0);ea(m+4|0,e|0,4,0);$c(32,f,19920,g)|0}e=da(d|0,4,0,0)|0|0;if(!e)d=0;else{d=e;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;d=d-e&1073741823}ea(a+12|0,d|0,4,0);ea(a+10>>0|0,1|0,1,0);d=da(h|0,2,0,1)|0|514;ea(h|0,(c<<24>>24==0?d:d&65523)|0,2,0);Xl(a,b&255)|0;d=0}else d=7;i=l;return d|0}function bm(a){a=a|0;var b=0,c=0;b=da(a+8|0,2,0,1)|0|0;c=b&12;if(!c)if(!(b&18))b=0;else b=mp(a)|0;else b=c&65535;return b|0}function cm(a){a=a|0;var b=0.0,c=0,d=0,e=0,f=0;b=+(+da(a|0,8,1,0));if(!(b<=-9223372036854775808.0)&!(b>=9223372036854775808.0)?(c=~~b>>>0,d=+N(b)>=1.0?(b>0.0?~~+$(+M(b/4294967296.0),4294967295.0)>>>0:~~+Z((b-+(~~b>>>0))/4294967296.0)>>>0):0,e=iw(c|0,d|0,1,-2147483648)|0,f=C,!(b!=+(c>>>0)+4294967296.0*+(d|0)|(f>>>0<0|(f|0)==0&e>>>0<2))):0){e=a;ea(e|0,c|0,4,0);ea(e+4|0,d|0,4,0);c=a+8|0;ea(c|0,(da(c|0,2,0,1)|0|0)&48640|4|0,2,0)}return}function dm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=a+204|0;d=da(e|0,4,0,0)|0|0;a:do if(d){g=(b|0)<0;do{while(1){if(!g){if((da(d|0,4,0,0)|0|0)!=(b|0))break;f=da(d+4|0,4,0,0)|0|0;if((f|0)<=31?(1<>24>66){b=da(a+8|0,2,0,1)|0|0;if(!(b&4)){if(b&8){cm(a);break}if(b&2)qh(a,1)}}else if(b<<24>>24==66?(b=da(a+8|0,2,0,1)|0|0,!((b&2|0)!=0|(b&12|0)==0)):0)am(a,c,1)|0;while(0);return}function fm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=a+8|0;d=da(f|0,2,0,0)|0|0;e=d&65535;do if(!(e&1)){b=b&255;if((b|0)==69){ea(a|0,+(+Tg(a)),8,1);ea(f|0,(da(f|0,2,0,1)|0|0)&48640|8|0,2,0);break}else if((b|0)==67){np(a);break}else if((b|0)==65){if(e&16){ea(f|0,e&65040|0,2,0);break}if(!((e&2|0)!=0|(e&12|0)==0)){am(a,c,1)|0;d=da(f|0,2,0,0)|0|0}ea(f|0,d&48640|16|0,2,0);break}else if((b|0)==68){b=Ug(a)|0;d=a;ea(d|0,b|0,4,0);ea(d+4|0,C|0,4,0);ea(f|0,(da(f|0,2,0,1)|0|0)&48640|4|0,2,0);break}else{b=e>>>3&2|e;d=b&65535;ea(f|0,d|0,2,0);if(!((b&2|0)!=0|(e&12|0)==0)){am(a,c,1)|0;d=da(f|0,2,0,0)|0|0}ea(f|0,d&49123|0,2,0);break}}while(0);return}function gm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,g=0.0,h=0,i=0,j=0;i=da(a+8|0,2,0,0)|0|0;h=i&65535;f=da(b+8|0,2,0,0)|0|0;j=f&65535;d=(f|i)&65535;do if(!(d&1)){if(!(d&12)){if(d&2){if(!(h&2)){d=1;break}if(!(j&2)){d=-1;break}if(c){d=op(a,b,c,0)|0;break}}d=pp(a,b)|0;break}if((i&4&f)<<16>>16){i=a;h=da(i|0,4,0,0)|0|0;i=da(i+4|0,4,0,0)|0|0;f=b;d=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;if((i|0)<(f|0)|(i|0)==(f|0)&h>>>0>>0){d=-1;break}d=((i|0)>(f|0)|(i|0)==(f|0)&h>>>0>d>>>0)&1;break}if(!(h&8)){if(!(h&4)){d=1;break}d=a;g=+((da(d|0,4,0,0)|0|0)>>>0)+4294967296.0*+(da(d+4|0,4,0,0)|0|0)}else g=+(+da(a|0,8,1,0));if(!(j&8)){if(!(j&4)){d=-1;break}d=b;e=+((da(d|0,4,0,0)|0|0)>>>0)+4294967296.0*+(da(d+4|0,4,0,0)|0|0)}else e=+(+da(b|0,8,1,0));if(ge&1}else d=(j&1)-(h&1)|0;while(0);return d|0}function hm(a){a=a|0;var b=0,c=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;c=e+8|0;b=a+48|0;b=Bm(da(a|0,4,0,0)|0|0,0,da(b|0,4,0,0)|0|0,da(b+4|0,4,0,0)|0|0,0,c)|0;do if(!b)if(!(da(c|0,4,0,0)|0)){ea(a+26>>0|0,0|0,1,0);ea(a+60|0,0|0,4,0);b=0;break}else{ea(d|0,67421|0,4,0);ea(d+4|0,10788|0,4,0);ad(11,13600,d);b=11;break}while(0);i=e;return b|0}function im(a){a=a|0;var b=0,c=0,d=0;c=da(a|0,4,0,0)|0|0;d=c+73|0;b=da(d>>0|0,1,0,0)|0|0;do if((b&255)>2){b=Jn(c)|0;if(!b){b=da(d>>0|0,1,0,0)|0|0;d=5;break}else{ea(a+60|0,0|0,4,0);d=6;break}}else d=5;while(0);if((d|0)==5){ea(a+60|0,0|0,4,0);if(b<<24>>24==1)b=0;else{b=0;d=6}}if((d|0)==6)ea(a+25>>0|0,1|0,1,0);return b|0}function jm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a+24|0;if(!(da(a+44|0,2,0,0)|0)){e=da(a+76|0,2,0,0)|0|0;d=da(a+(e<<2)+120|0,4,0,0)|0|0;e=(da(a+(e<<1)+78|0,2,0,1)|0)<<1;f=da(d+64|0,4,0,0)|0|0;qp(d,(da(d+56|0,4,0,0)|0|0)+(((da(f+e>>0|0,1,0,1)|0)<<8|(da(f+(e|1)>>0|0,1,0,1)|0))&(da(d+20|0,2,0,1)|0))|0,c);a=a+72|0;ea(a>>0|0,da(a>>0|0,1,0,1)|0|2|0,1,0)}d=c;c=da(d+4|0,4,0,0)|0|0;a=b;ea(a|0,da(d|0,4,0,0)|0|0,4,0);ea(a+4|0,c|0,4,0);return}function km(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(!(da(a+44|0,2,0,0)|0)){d=da(a+76|0,2,0,0)|0|0;c=da(a+(d<<2)+120|0,4,0,0)|0|0;d=(da(a+(d<<1)+78|0,2,0,1)|0)<<1;e=da(c+64|0,4,0,0)|0|0;qp(c,(da(c+56|0,4,0,0)|0|0)+(((da(e+d>>0|0,1,0,1)|0)<<8|(da(e+(d|1)>>0|0,1,0,1)|0))&(da(c+20|0,2,0,1)|0))|0,a+24|0);c=a+72|0;ea(c>>0|0,da(c>>0|0,1,0,1)|0|2|0,1,0)}ea(b|0,da(a+36|0,4,0,0)|0|0,4,0);return}function lm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();d=g;e=da(a>>0|0,1,0,1)|0|0;f=da(a+1>>0|0,1,0,1)|0|0;do if(f&128){c=da(a+2>>0|0,1,0,1)|0|0;if(!(c&128)){ea(b|0,(c|e<<14)&2080895|f<<7&16256|0,4,0);c=3;break}else{c=rp(a,d)|0;e=da(d|0,4,0,0)|0|0;ea(b|0,(((e|0)==(e|0)?0==(da(d+4|0,4,0,0)|0|0):0)?e:-1)|0,4,0);break}}else{ea(b|0,e<<7&16256|f|0,4,0);c=2}while(0);i=g;return c|0}function mm(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;f=(d|0)==0;do if((c+b|0)>>>0>(da(a+40|0,2,0,1)|0|0)>>>0){h=e+8|0;ea(h|0,1|0,2,0);d=eh(e,c+2|0)|0;if(!d){g=e+16|0;d=da(g|0,4,0,0)|0|0;if(f)d=Ch(a,b,c,d)|0;else d=Km(a,b,c,d,0)|0;if(!d){ea((da(g|0,4,0,0)|0|0)+c>>0|0,0|0,1,0);ea((da(g|0,4,0,0)|0|0)+(c+1)>>0|0,0|0,1,0);ea(h|0,528|0,2,0);ea(e+12|0,c|0,4,0);d=0;break}if(((da(h|0,2,0,0)|0)&9312)==0?(da(e+24|0,4,0,0)|0|0)==0:0)break;Pg(e)}}else{ea(e+16|0,(da(a+32|0,4,0,0)|0|0)+b|0,4,0);ea(e+8|0,4112|0,2,0);ea(e+12|0,c|0,4,0);d=0}while(0);return d|0}function nm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(b|0){case 9:case 8:{a=c;ea(a|0,b+-8|0,4,0);ea(a+4|0,0|0,4,0);ea(c+8|0,4|0,2,0);a=0;break}case 4:{a=(da(a+1>>0|0,1,0,1)|0)<<16|(da(a>>0|0,1,0,0)|0)<<24|(da(a+2>>0|0,1,0,1)|0)<<8|(da(a+3>>0|0,1,0,1)|0);b=c;ea(b|0,a|0,4,0);ea(b+4|0,((a|0)<0)<<31>>31|0,4,0);ea(c+8|0,4|0,2,0);a=4;break}case 1:{a=da(a>>0|0,1,0,0)|0|0;b=c;ea(b|0,a|0,4,0);ea(b+4|0,((a|0)<0)<<31>>31|0,4,0);ea(c+8|0,4|0,2,0);a=1;break}case 5:{b=(da(a>>0|0,1,0,0)|0)<<8|(da(a+1>>0|0,1,0,1)|0);d=c;ea(d|0,(da(a+3>>0|0,1,0,1)|0)<<16|(da(a+2>>0|0,1,0,1)|0)<<24|(da(a+4>>0|0,1,0,1)|0)<<8|(da(a+5>>0|0,1,0,1)|0)|0,4,0);ea(d+4|0,b|0,4,0);ea(c+8|0,4|0,2,0);a=6;break}case 7:case 6:{sp(a,b,c);a=8;break}case 2:{a=(da(a>>0|0,1,0,0)|0)<<8|(da(a+1>>0|0,1,0,1)|0);b=c;ea(b|0,a|0,4,0);ea(b+4|0,((a|0)<0)<<31>>31|0,4,0);ea(c+8|0,4|0,2,0);a=2;break}case 3:{a=(da(a+1>>0|0,1,0,1)|0)<<8|(da(a>>0|0,1,0,0)|0)<<16|(da(a+2>>0|0,1,0,1)|0);b=c;ea(b|0,a|0,4,0);ea(b+4|0,((a|0)<0)<<31>>31|0,4,0);ea(c+8|0,4|0,2,0);a=3;break}case 0:case 11:case 10:{ea(c+8|0,1|0,2,0);a=0;break}default:{ea(c+16|0,a|0,4,0);a=(b+-12|0)>>>1;ea(c+12|0,a|0,4,0);ea(c+8|0,da(34328+((b&1)<<1)|0,2,0,0)|0|0|0,2,0)}}return a|0}function om(a,b,c){a=a|0;b=b|0;c=c|0;do if(!(c>>>0<0|(c|0)==0&b>>>0<128))if(c>>>0<0|(c|0)==0&b>>>0<16384){c=lw(b|0,c|0,7)|0;ea(a>>0|0,c|128|0,1,0);ea(a+1>>0|0,b&127|0,1,0);b=2;break}else{b=tp(a,b,c)|0;break}else{ea(a>>0|0,b&127|0,1,0);b=1}while(0);return b|0}function pm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;e=a+73|0;b=da(e>>0|0,1,0,0)|0|0;do if((b&255)>2)if(b<<24>>24==4){b=da(a+68|0,4,0,0)|0|0;break}else{c=a+56|0;Vc(da(c|0,4,0,0)|0|0);ea(c|0,0|0,4,0);ea(e>>0|0,0|0,1,0);c=5;break}else c=5;while(0);a:do if((c|0)==5){d=a+76|0;b=da(d|0,2,0,0)|0|0;do if(b<<16>>16<=-1){b=da(a+60|0,4,0,0)|0|0;if(!b){ea(e>>0|0,0|0,1,0);b=0;break a}c=a+120|0;b=up(da((da(a|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,b,c,((da(a+72>>0|0,1,0,0)|0)&1)<<1^2)|0;if(!b){ea(d|0,0|0,2,0);b=c;break}else{ea(e>>0|0,0|0,1,0);break a}}else{if(b<<16>>16)do{c=b+-1<<16>>16;ea(d|0,c|0,2,0);b=da(a+(b<<16>>16<<2)+120|0,4,0,0)|0|0;if(!b)b=c;else{Ag(da(b+68|0,4,0,0)|0|0);b=da(d|0,2,0,0)|0|0}}while(b<<16>>16!=0);b=a+120|0}while(0);b=da(b|0,4,0,0)|0|0;if((da(b>>0|0,1,0,0)|0|0)!=0?((da(a+16|0,4,0,0)|0|0)==0|0)==(da(b+2>>0|0,1,0,1)|0|0):0){ea(a+78|0,0|0,2,0);ea(a+44|0,0|0,2,0);c=a+72|0;ea(c>>0|0,(da(c>>0|0,1,0,1)|0)&241|0,1,0);if(da(b+18|0,2,0,0)|0){ea(e>>0|0,1|0,1,0);b=0;break}if(da(b+5>>0|0,1,0,0)|0){ea(e>>0|0,0|0,1,0);b=0;break}if((da(b+72|0,4,0,0)|0|0)==1){c=da(b+6>>0|0,1,0,1)|0|0;b=da(b+56|0,4,0,0)|0|0;b=(da(b+(c+9)>>0|0,1,0,1)|0)<<16|(da(b+(c+8)>>0|0,1,0,1)|0)<<24|(da(b+(c+10)>>0|0,1,0,1)|0)<<8|(da(b+(c+11)>>0|0,1,0,1)|0);ea(e>>0|0,1|0,1,0);b=qm(a,b)|0;break}else{ea(f|0,57629|0,4,0);ea(f+4|0,10788|0,4,0);ad(11,13600,f);b=11;break}}ea(f|0,57618|0,4,0);ea(f+4|0,10788|0,4,0);ad(11,13600,f);b=11}while(0);i=g;return b|0}function qm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;c=h+8|0;d=a+76|0;f=da(d|0,2,0,0)|0|0;e=f<<16>>16;do if(f<<16>>16<=18){f=a+72|0;b=up(da(a+4|0,4,0,0)|0|0,b,c,((da(f>>0|0,1,0,0)|0)&1)<<1^2)|0;if(!b){b=da(c|0,4,0,0)|0|0;c=e+1|0;ea(a+(c<<2)+120|0,b|0,4,0);ea(a+(c<<1)+78|0,0|0,2,0);ea(d|0,(da(d|0,2,0,0)|0|0)+1<<16>>16|0,2,0);ea(a+44|0,0|0,2,0);ea(f>>0|0,(da(f>>0|0,1,0,1)|0)&249|0,1,0);if((da(b+18|0,2,0,0)|0|0)!=0?(da(b+2>>0|0,1,0,0)|0|0)==(da((da(a+(e<<2)+120|0,4,0,0)|0|0)+2>>0|0,1,0,0)|0|0):0){b=0;break}ea(g|0,57499|0,4,0);ea(g+4|0,10788|0,4,0);ad(11,13600,g);b=11}}else{ea(g|0,57487|0,4,0);ea(g+4|0,10788|0,4,0);ad(11,13600,g);b=11}while(0);i=h;return b|0}function rm(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=a+328|0;a:do if(!(da(i|0,4,0,0)|0))a=0;else{f=a+304|0;g=c+1|0;h=0;while(1){if((h|0)>=(da(f|0,4,0,0)|0|0)){a=0;break a}e=da((da(i|0,4,0,0)|0|0)+(h<<2)|0,4,0,0)|0|0;a=da(da(e+4|0,4,0,0)|0|0,4,0,0)|0|0;d=da(e+8|0,4,0,0)|0|0;if((d|0)!=0?(da(a|0,4,0,0)|0|0)>1:0){if(!b){a=da(a+80|0,4,0,0)|0|0;ea(e+20|0,g|0,4,0)}else if((b|0)==2)a=da(a+88|0,4,0,0)|0|0;else a=da(a+84|0,4,0,0)|0|0;if((a|0)!=0?(da(e+20|0,4,0,0)|0|0)>(c|0):0){a=qc[(fa(a|0,127|0)|0)&127](d,c)|0;if(!a){h=h+1|0;continue}else break a}}h=h+1|0}}while(0);return a|0}function sm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f;c=da(a|0,4,0,0)|0|0;if(!b){b=a+144|0;g=da(b+4|0,4,0,0)|0|0;if((g|0)>0|(g|0)==0&(da(b|0,4,0,0)|0|0)>>>0>0)e=4;else c=0}else{b=c+504|0;g=c+512|0;b=iw(da(g|0,4,0,0)|0|0,da(g+4|0,4,0,0)|0|0,da(b|0,4,0,0)|0|0,da(b+4|0,4,0,0)|0|0)|0;g=C;if((g|0)>0|(g|0)==0&b>>>0>0)e=4;else c=0}if((e|0)==4){ea(a+80|0,787|0,4,0);ea(a+86>>0|0,2|0,1,0);ch(a+44|0,c,34376,d);c=1}i=f;return c|0}function tm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((a|0)!=0?(da(a+8>>0|0,1,0,0)|0|0)==2:0){d=da(a+4|0,4,0,0)|0|0;ea(d+4|0,da(a|0,4,0,0)|0|0,4,0);b=ip(da(d|0,4,0,0)|0|0,b,c)|0;if(!b){if((c|0)<0?((da(d+22|0,2,0,0)|0)&8)!=0:0)ea(d+44|0,0|0,4,0);b=Bg(d)|0;a=da((da(d+12|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;ea(d+44|0,(da(a+29>>0|0,1,0,1)|0)<<16|(da(a+28>>0|0,1,0,1)|0)<<24|(da(a+30>>0|0,1,0,1)|0)<<8|(da(a+31>>0|0,1,0,1)|0)|0,4,0)}}else b=0;return b|0}function um(a,b){a=a|0;b=b|0;a=a+16|0;pl(da((da(a|0,4,0,0)|0|0)+(b<<4)+12|0,4,0,0)|0|0);if((b|0)!=1)pl(da((da(a|0,4,0,0)|0|0)+28|0,4,0,0)|0|0);return}function vm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=da(a+4|0,4,0,0)|0|0;ea(d+4|0,da(a|0,4,0,0)|0|0,4,0);if((b|0)==15)d=(da(a+20|0,4,0,0)|0|0)+(da((da(d|0,4,0,0)|0|0)+100|0,4,0,0)|0|0)|0;else{b=b<<2;d=da((da(d+12|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;d=(da(d+(b+37)>>0|0,1,0,1)|0|0)<<16|(da(d+(b+36)>>0|0,1,0,1)|0|0)<<24|(da(d+(b+38)>>0|0,1,0,1)|0|0)<<8|(da(d+(b+39)>>0|0,1,0,1)|0|0)}ea(c|0,d|0,4,0);return}function wm(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,k=0;h=(da(a+28|0,4,0,0)|0|0)-b|0;f=da(a+8|0,4,0,0)|0|0;k=(c<<3)+88|0;j=(e|0)!=0;i=a+56|0;g=da((da(i|0,4,0,0)|0|0)+(b<<2)|0,4,0,0)|0|0;if(g){Am(a,g);ea((da(i|0,4,0,0)|0|0)+(b<<2)|0,0|0,4,0)}if(!(eh(f+(h*40|0)|0,(j?200:0)+k|0)|0)){h=f+(h*40|0)+16|0;e=da(h|0,4,0,0)|0|0;ea((da(i|0,4,0,0)|0|0)+(b<<2)|0,e|0,4,0);f=e+0|0;g=f+88|0;do{ea(f|0,0|0,4,0);f=f+4|0}while((f|0)<(g|0));ea(e+24>>0|0,d|0,1,0);ea(e+20|0,c|0,2,0);ea(e+80|0,e+84+(c<<2)|0,4,0);if(j){f=(da(h|0,4,0,0)|0|0)+k|0;ea(e|0,f|0,4,0);f=f+0|0;g=f+76|0;do{ea(f|0,0|0,4,0);f=f+4|0}while((f|0)<(g|0))}}else e=0;return e|0}function xm(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;h=da(a+4|0,4,0,0)|0|0;ea(h+4|0,da(a|0,4,0,0)|0|0,4,0);if(c)if(!((da(h+22|0,2,0,0)|0)&1)){g=h+80|0;if(!(da(g|0,4,0,0)|0)){f=Fo(da(h+32|0,4,0,0)|0|0)|0;ea(g|0,f|0,4,0);if(!f)f=7;else{i=f;f=i;ea(f>>0|0,0|0,1,0);ea(f+1>>0|0,0|0,1,0);ea(f+2>>0|0,0|0,1,0);ea(f+3>>0|0,0|0,1,0);i=i+4|0;ea(i>>0|0,0|0,1,0);ea(i+1>>0|0,0|0,1,0);ea(i+2>>0|0,0|0,1,0);ea(i+3>>0|0,0|0,1,0);ea(g|0,(da(g|0,4,0,0)|0|0)+4|0,4,0);i=6}}else i=6}else f=8;else i=6;if((i|0)==6){if((b|0)==1)b=(da(h+44|0,4,0,0)|0|0)!=0&1;ea(e+60|0,b|0,4,0);ea(e+76|0,-1|0,2,0);ea(e+16|0,d|0,4,0);ea(e|0,a|0,4,0);ea(e+4|0,h|0,4,0);ea(e+72>>0|0,c|0,1,0);f=h+8|0;b=da(f|0,4,0,0)|0|0;ea(e+8|0,b|0,4,0);if(b)ea(b+12|0,e|0,4,0);ea(f|0,e|0,4,0);ea(e+73>>0|0,0|0,1,0);f=0}return f|0}function ym(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,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;K=i;i=i+128|0;if((i|0)>=(j|0))ba();v=K;C=K+12|0;z=K+8|0;H=K+16|0;F=(b|0)==0;if(!F){h=(da(b>>0|0,1,0,0)|0|0)==0;if(Zv(b,14640)|0)if(h)B=4;else{h=0;B=5}else G=1}else B=4;if((B|0)==4)if((da(c+64>>0|0,1,0,0)|0|0)==2){G=1;h=1}else{h=1;B=5}if((B|0)==5)G=(f&128|0)!=0;E=G?e|2:e;if((f&256|0)!=0&(G|h))f=f&-769|512;J=pg(48,0)|0;a:do if(J){p=J+0|0;o=p+48|0;do{ea(p>>0|0,0|0,1,0);p=p+1|0}while((p|0)<(o|0));ea(J|0,c|0,4,0);ea(J+32|0,J|0,4,0);ea(J+36|0,1|0,4,0);b:do if(!h?!(G&(f&64|0)==0|(f&131072|0)==0):0){if(F)h=1;else{h=b;while(1)if(!(da(h>>0|0,1,0,0)|0))break;else h=h+1|0;h=(h-b&1073741823)+1|0}e=(da(a+8|0,4,0,0)|0|0)+1|0;n=(e|0)>(h|0)?e:h;n=pg(n,((n|0)<0)<<31>>31)|0;m=J+9|0;ea(m>>0|0,1|0,1,0);if(!n){Vc(J);g=7;break a}if(!G){ea(n>>0|0,0|0,1,0);h=oc[(fa(da(a+36|0,4,0,0)|0|0,31|0)|0)&31](a,b,e,n)|0;if(h){Vc(n);Vc(J);g=h;break a}}else jw(n|0,b|0,h|0)|0;h=da(3664*4|0,4,0,0)|0|0;c:do if(h){while(1){e=da(h|0,4,0,0)|0|0;if((Zv(n,da(e+168|0,4,0,0)|0|0)|0)==0?(da(e|0,4,0,0)|0|0)==(a|0):0)break;h=da(h+68|0,4,0,0)|0|0;if(!h)break c}e=da(c+20|0,4,0,0)|0|0;d:do if((e|0)>0){l=da(c+16|0,4,0,0)|0|0;while(1){e=e+-1|0;k=da(l+(e<<4)+4|0,4,0,0)|0|0;if((k|0)!=0?(da(k+4|0,4,0,0)|0|0)==(h|0):0)break;if((e|0)<=0)break d}Vc(n);Vc(J);g=19;break a}while(0);ea(J+4|0,h|0,4,0);y=h+64|0;ea(y|0,(da(y|0,4,0,0)|0|0)+1|0,4,0);Vc(n);if(!h){B=32;break b}if(!(da(m>>0|0,1,0,0)|0))break b;else{B=105;break b}}while(0);Vc(n);B=32}else B=32;while(0);e:do if((B|0)==32){D=pg(84,0)|0;if(D){p=D+0|0;o=p+84|0;do{ea(p>>0|0,0|0,1,0);p=p+1|0}while((p|0)<(o|0));x=E&1;y=(x|0)==0;ea(C|0,1024|0,4,0);w=a+4|0;h=da(w|0,4,0,0)|0|0;if((h|0)>40)e=h+7&-8;else e=40;ea(D|0,0|0,4,0);do if(!(E&2))if(!F)if(da(b>>0|0,1,0,0)|0){q=a+8|0;l=(da(q|0,4,0,0)|0|0)+1|0;s=l<<1;s=pg(s,((s|0)<0)<<31>>31)|0;if(!s)g=7;else{ea(s>>0|0,0|0,1,0);h=oc[(fa(da(a+36|0,4,0,0)|0|0,31|0)|0)&31](a,b,l,s)|0;l=s;while(1)if(!(da(l>>0|0,1,0,0)|0))break;else l=l+1|0;p=l-s&1073741823;m=b;while(1)if(!(da(m>>0|0,1,0,0)|0))break;else m=m+1|0;o=(m-b&1073741823)+1|0;m=da(b+o>>0|0,1,0,0)|0|0;o=b+o|0;if(!(m<<24>>24))l=o;else{l=o;do{if(!(m<<24>>24))m=l;else{m=l;do m=m+1|0;while((da(m>>0|0,1,0,0)|0|0)!=0)}m=m-l&1073741823;k=l+(m+1)|0;n=k;while(1)if(!(da(n>>0|0,1,0,0)|0))break;else n=n+1|0;l=l+(m+2+(n-k&1073741823))|0;m=da(l>>0|0,1,0,0)|0|0}while(m<<24>>24!=0)}if(!h){if((p+8|0)<=(da(q|0,4,0,0)|0|0)){r=1;v=0;q=p;p=l+1-o|0;m=s;B=58;break}ea(v|0,46171|0,4,0);ea(v+4|0,10788|0,4,0);ad(14,14848,v);h=14}Vc(s);B=89}}else{r=1;v=0;q=0;p=0;m=0;o=0;B=58}else{b=0;r=0;v=0;q=0;p=0;m=0;o=0;B=58}else if(!F)if(da(b>>0|0,1,0,0)|0){m=jh(0,b)|0;if(!m)g=7;else{h=m;while(1)if(!(da(h>>0|0,1,0,0)|0))break;else h=h+1|0;b=0;r=0;v=1;q=h-m&1073741823;p=0;o=0;B=58}}else{r=1;v=1;q=0;p=0;m=0;o=0;B=58}else{b=0;r=0;v=1;q=0;p=0;m=0;o=0;B=58}while(0);do if((B|0)==58){l=(e<<1)+17+(q*3|0)+p+((da(w|0,4,0,0)|0|0)+271&-8)|0;u=pg(l,0)|0;if(!u){if(!m){g=7;break}Vc(m);g=7;break}ew(u|0,0,l|0)|0;s=u+204|0;ea(s|0,u+216|0,4,0);t=u+60|0;ea(t|0,u+264|0,4,0);n=(da(w|0,4,0,0)|0|0)+271&-8;ea(u+68|0,u+n|0,4,0);n=n+e|0;ea(u+64|0,u+n|0,4,0);n=n+e|0;l=u+n|0;h=u+168|0;ea(h|0,l|0,4,0);if(m){k=q+1|0;e=u+172|0;ea(e|0,u+(p+k+n)|0,4,0);jw(l|0,m|0,q|0)|0;if(p)jw((da(h|0,4,0,0)|0|0)+k|0,o|0,p|0)|0;jw(da(e|0,4,0,0)|0|0,m|0,q|0)|0;p=(da(e|0,4,0,0)|0|0)+q+0|0;n=14928;o=p+10|0;do{ea(p>>0|0,da(n>>0|0,1,0,0)|0|0|0,1,0);p=p+1|0;n=n+1|0}while((p|0)<(o|0));e=(da(e|0,4,0,0)|0|0)+(q+9)|0;w=u+212|0;ea(w|0,e|0,4,0);jw(e|0,m|0,q|0)|0;w=(da(w|0,4,0,0)|0|0)+q|0;ea(w+0>>0|0,da(14944|0,1,0,0)|0|0|0,1,0);ea(w+1>>0|0,da(14945|0,1,0,0)|0|0|0,1,0);ea(w+2>>0|0,da(14946|0,1,0,0)|0|0|0,1,0);ea(w+3>>0|0,da(14947|0,1,0,0)|0|0|0,1,0);ea(w+4>>0|0,da(14948|0,1,0,0)|0|0|0,1,0);Vc(m)}ea(u|0,a|0,4,0);ea(u+144|0,f|0,4,0);do if(r?(da(b>>0|0,1,0,0)|0|0)!=0:0){ea(z|0,0|0,4,0);h=sc[(fa(da(a+24|0,4,0,0)|0|0,31|0)|0)&31](a,da(h|0,4,0,0)|0|0,da(t|0,4,0,0)|0|0,f&556927,z)|0;k=(da(z|0,4,0,0)|0)&1;if(!h){h=da(t|0,4,0,0)|0|0;h=kc[(fa(da((da(h|0,4,0,0)|0|0)+48|0,4,0,0)|0|0,127|0)|0)&127](h)|0;do if((k|0)==0?(vp(u),A=da(u+148|0,4,0,0)|0|0,A>>>0>1024):0)if(A>>>0>8192){ea(C|0,8192|0,4,0);break}else{ea(C|0,A|0,4,0);break}while(0);ea(u+13>>0|0,eg(b,14952,0)|0|0,1,0);if((h&8192|0)==0?(eg(b,14960,0)|0)==0:0){n=0;B=77;break}h=f|1;B=76}}else{h=f;B=76}while(0);if((B|0)==76){ea(u+16>>0|0,1|0,1,0);ea(u+17>>0|0,4|0,1,0);ea(u+13>>0|0,1|0,1,0);k=h&1;n=1;B=77}if((B|0)==77){h=$k(u,C,-1)|0;if(!h){l=da(C|0,4,0,0)|0|0;m=(v|0)==0;e=v^1;f=m?75:0;h=da(s|0,4,0,0)|0|0;p=h+0|0;o=p+48|0;do{ea(p|0,0|0,4,0);p=p+4|0}while((p|0)<(o|0));ea(h+20|0,1|0,4,0);ea(h+24|0,80|0,4,0);ea(h+28>>0|0,e|0,1,0);ea(h+29>>0|0,2|0,1,0);ea(h+32|0,f|0,4,0);ea(h+36|0,u|0,4,0);ea(h+16|0,100|0,4,0);h=Go(h,l)|0;if(!h){ea(u+6>>0|0,x^1|0,1,0);ea(u+156|0,1073741823|0,4,0);ea(u+12>>0|0,n|0,1,0);ea(u+4>>0|0,n|0,1,0);ea(u+18>>0|0,n|0,1,0);ea(u+15>>0|0,v|0,1,0);ea(u+14>>0|0,k|0,1,0);ea(u+7>>0|0,n|0,1,0);if(!(n<<24>>24)){ea(u+8>>0|0,1|0,1,0);ea(u+11>>0|0,2|0,1,0);ea(u+10>>0|0,34|0,1,0);ea(u+9>>0|0,2|0,1,0)}ea(u+140|0,80|0,2,0);z=u+160|0;ea(z|0,-1|0,4,0);ea(z+4|0,-1|0,4,0);vp(u);do if(y){if(m)break;ea(u+5>>0|0,4|0,1,0)}else ea(u+5>>0|0,2|0,1,0);while(0);ea(u+196|0,21|0,4,0);ea(D|0,u|0,4,0);B=90;break}}}e=da(t|0,4,0,0)|0|0;f=da(e|0,4,0,0)|0|0;if(f){kc[(fa(da(f+4|0,4,0,0)|0|0,127|0)|0)&127](e)|0;ea(e|0,0|0,4,0)}_k(da(u+200|0,4,0,0)|0|0);Vc(u);B=89}while(0);if((B|0)==89)if(!h)B=90;else g=h;do if((B|0)==90){h=da(D|0,4,0,0)|0|0;z=c+40|0;p=da(z+4|0,4,0,0)|0|0;o=h+128|0;ea(o|0,da(z|0,4,0,0)|0|0,4,0);ea(o+4|0,p|0,4,0);p=H+0|0;o=p+100|0;do{ea(p>>0|0,0|0,1,0);p=p+1|0}while((p|0)<(o|0));h=da(h+60|0,4,0,0)|0|0;e=da(h|0,4,0,0)|0|0;if((e|0)!=0?(g=sc[(fa(da(e+8|0,4,0,0)|0|0,31|0)|0)&31](h,H,100,0,0)|0,!((g|0)==0|(g|0)==522)):0)break;ea(D+16>>0|0,E|0,1,0);ea(D+4|0,c|0,4,0);h=da(D|0,4,0,0)|0|0;e=h+176|0;ea(e|0,76|0,4,0);ea(h+180|0,D|0,4,0);f=da(h+60|0,4,0,0)|0|0;g=da(f|0,4,0,0)|0|0;if(!g)e=h;else{$b[(fa(da(g+40|0,4,0,0)|0|0,63|0)|0)&63](f,15,e)|0;e=da(D|0,4,0,0)|0|0}ea(J+4|0,D|0,4,0);ea(D+8|0,0|0,4,0);ea(D+12|0,0|0,4,0);if(da(e+14>>0|0,1,0,0)|0){z=D+22|0;ea(z|0,da(z|0,2,0,1)|0|1|0,2,0)}z=(da(H+17>>0|0,1,0,1)|0)<<16|(da(H+16>>0|0,1,0,1)|0)<<8;f=D+32|0;ea(f|0,z|0,4,0);if((z+-512|0)>>>0<=65024?(z+16777215&z|0)==0:0){h=da(H+20>>0|0,1,0,0)|0|0;z=D+22|0;ea(z|0,da(z|0,2,0,1)|0|2|0,2,0);ea(D+17>>0|0,((da(H+53>>0|0,1,0,1)|0)<<16|(da(H+52>>0|0,1,0,1)|0)<<24|(da(H+54>>0|0,1,0,1)|0)<<8|(da(H+55>>0|0,1,0,1)|0)|0)!=0&1|0,1,0);ea(D+18>>0|0,((da(H+65>>0|0,1,0,1)|0)<<16|(da(H+64>>0|0,1,0,1)|0)<<24|(da(H+66>>0|0,1,0,1)|0)<<8|(da(H+67>>0|0,1,0,1)|0)|0)!=0&1|0,1,0)}else{ea(f|0,0|0,4,0);if(F|G)h=0;else{ea(D+17>>0|0,0|0,1,0);ea(D+18>>0|0,0|0,1,0);h=0}}h=h&255;g=$k(e,f,h)|0;if(!g){ea(D+36|0,(da(f|0,4,0,0)|0|0)-h|0,4,0);if(!(da(J+9>>0|0,1,0,0)|0))break e;ea(D+64|0,1|0,4,0);ea(D+68|0,da(3664*4|0,4,0,0)|0|0,4,0);ea(3664*4|0,D|0,4,0);B=105;break e}}while(0);if(D){f=da(D|0,4,0,0)|0|0;if(!f)f=D;else{kp(f);f=D}}else f=0}else{f=0;g=7}Vc(f);Vc(J);ea(d|0,0|0,4,0);break a}while(0);f:do if((B|0)==105?(I=da(c+20|0,4,0,0)|0|0,(I|0)>0):0){f=da(c+16|0,4,0,0)|0|0;e=0;while(1){g=da(f+(e<<4)+4|0,4,0,0)|0|0;if((g|0)!=0?(da(g+9>>0|0,1,0,0)|0|0)!=0:0){e=g;break}e=e+1|0;if((e|0)>=(I|0))break f}while(1){g=e+28|0;f=da(g|0,4,0,0)|0|0;if(!f){f=e;break}else e=f}h=da(J+4|0,4,0,0)|0|0;if(h>>>0<(da(f+4|0,4,0,0)|0|0)>>>0){ea(J+24|0,f|0,4,0);ea(J+28|0,0|0,4,0);ea(g|0,J|0,4,0);break}while(1){g=f+24|0;e=da(g|0,4,0,0)|0|0;if(!e){B=113;break}if((da(e+4|0,4,0,0)|0|0)>>>0>>0)f=e;else{B=115;break}}if((B|0)==113){ea(J+24|0,0|0,4,0);ea(J+28|0,f|0,4,0)}else if((B|0)==115){ea(J+24|0,e|0,4,0);ea(J+28|0,f|0,4,0);ea(e+28|0,J|0,4,0)}ea(g|0,J|0,4,0)}while(0);ea(d|0,J|0,4,0);g=da(J+4|0,4,0,0)|0|0;ea(g+4|0,da(J|0,4,0,0)|0|0,4,0);if(!(da(g+48|0,4,0,0)|0)){g=da((da(g|0,4,0,0)|0|0)+204|0,4,0,0)|0|0;ea(g+16|0,2e3|0,4,0);ic[(fa(da(8744+124|0,4,0,0)|0|0,15|0)|0)&15](da(g+40|0,4,0,0)|0|0,2e3);g=0}else g=0}else g=7;while(0);i=K;return g|0}function zm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;v=i;i=i+48|0;if((i|0)>=(j|0))ba();o=v;s=v+28|0;t=v+24|0;r=v+20|0;k=v+16|0;m=v+12|0;n=v+32|0;p=v+8|0;e=da(a|0,4,0,0)|0|0;q=da(a+4|0,4,0,0)|0|0;d=q+4|0;ea(d|0,e|0,4,0);a:do if(!(da(q+17>>0|0,1,0,0)|0)){d=hp(q,s,t,1,0)|0;ea(r|0,d|0,4,0);if(!d){e=da(s|0,4,0,0)|0|0;u=39}}else{l=q+8|0;f=da(l|0,4,0,0)|0|0;if(f)do{h=f+72|0;ea(h>>0|0,(da(h>>0|0,1,0,1)|0)&251|0,1,0);f=da(f+8|0,4,0,0)|0|0}while((f|0)!=0);ea(d|0,e|0,4,0);h=da((da(q+12|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;h=(da(h+53>>0|0,1,0,1)|0)<<16|(da(h+52>>0|0,1,0,1)|0)<<24|(da(h+54>>0|0,1,0,1)|0)<<8|(da(h+55>>0|0,1,0,1)|0);ea(t|0,h|0,4,0);e=((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(q+32|0,4,0,0)|0|0)>>>0)|0;d=q+36|0;while(1){g=h+1|0;if(g>>>0<2)f=0;else{f=h+-1|0;f=f-((f>>>0)%(((((da(d|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;f=((f+1|0)==(e|0)?3:2)+f|0}if((g|0)==(f|0)|(h|0)==(e|0))h=g;else break}ea(t|0,g|0,4,0);d=hp(q,m,k,g,1)|0;ea(r|0,d|0,4,0);if(!d){h=da(k|0,4,0,0)|0|0;do if((h|0)==(g|0)){e=da(m|0,4,0,0)|0|0;ea(s|0,e|0,4,0)}else{ea(n>>0|0,0|0,1,0);ea(p|0,0|0,4,0);f=da(l|0,4,0,0)|0|0;b:do if(!f)d=0;else{while(1){if(f)break;f=da(2*4|0,4,0,0)|0|0;if(!f){d=0;break b}}d=El(f,0,0)|0}while(0);ea(r|0,d|0,4,0);f=da(m|0,4,0,0)|0|0;if(f)Ag(da(f+68|0,4,0,0)|0|0);if(d)break a;d=cl(q,g,s,0)|0;ea(r|0,d|0,4,0);if(d)break a;d=gp(q,g,n,p)|0;ea(r|0,d|0,4,0);f=da(n>>0|0,1,0,0)|0|0;if((f+-1&255)>=2){e=da(s|0,4,0,0)|0|0;if(!d){d=Ym(q,e,f,da(p|0,4,0,0)|0|0,h,0)|0;ea(r|0,d|0,4,0);if(e)Ag(da(e+68|0,4,0,0)|0|0);if(d)break a;d=cl(q,g,s,0)|0;ea(r|0,d|0,4,0);if(d)break a;e=da(s|0,4,0,0)|0|0;f=e+68|0;d=Fg(da(f|0,4,0,0)|0|0)|0;ea(r|0,d|0,4,0);if(!d)break;if(!e)break a;Ag(da(f|0,4,0,0)|0|0);break a}}else{ea(o|0,60876|0,4,0);ea(o+4|0,10788|0,4,0);ad(11,13600,o);ea(r|0,11|0,4,0);d=11;e=da(s|0,4,0,0)|0|0}if(!e)break a;Ag(da(e+68|0,4,0,0)|0|0);break a}while(0);yp(q,g,1,0,r);d=da(r|0,4,0,0)|0|0;if(d){if(!e)break;Ag(da(e+68|0,4,0,0)|0|0);break}d=Cg(a,4,g)|0;ea(r|0,d|0,4,0);if(d){if(e)Ag(da(e+68|0,4,0,0)|0|0)}else u=39}}while(0);if((u|0)==39){ol(e,(c&1|0)==0?10:13);d=da((da(s|0,4,0,0)|0|0)+68|0,4,0,0)|0|0;if(d)Ag(d);ea(b|0,da(t|0,4,0,0)|0|0,4,0);d=0}i=v;return d|0}function Am(a,b){a=a|0;b=b|0;var c=0,d=0;do if(b){a=da(a|0,4,0,0)|0|0;c=b+56|0;d=da(c|0,4,0,0)|0|0;if(d){Zm(a,d);Vc(da(d+40|0,4,0,0)|0|0);lg(a,d);ea(c|0,0|0,4,0)}a=da(b+4|0,4,0,0)|0|0;if(a){Ll(a);break}a=da(b|0,4,0,0)|0|0;if(a){jp(a);break}a=da(b+32|0,4,0,0)|0|0;if(a){d=da(a|0,4,0,0)|0|0;c=da(d|0,4,0,0)|0|0;d=d+4|0;ea(d|0,(da(d|0,4,0,0)|0|0)+-1|0,4,0);kc[(fa(da(c+28|0,4,0,0)|0|0,127|0)|0)&127](a)|0}}while(0);return}function Bm(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,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;I=i;i=i+16|0;if((i|0)>=(j|0))ba();G=I+8|0;F=I;l=a+73|0;do if(((da(l>>0|0,1,0,0)|0|0)==1?(k=da(a+72>>0|0,1,0,1)|0|0,(k&2|0)!=0):0)?(da((da(a+120|0,4,0,0)|0|0)+2>>0|0,1,0,0)|0|0)!=0:0){g=a+24|0;h=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;if((h|0)==(c|0)&(g|0)==(d|0)){ea(f|0,0|0,4,0);g=0;break}if((k&8|0)!=0&((g|0)<(d|0)|(g|0)==(d|0)&h>>>0>>0)){ea(f|0,-1|0,4,0);g=0}else H=8}else H=8;while(0);do if((H|0)==8){if(!b)B=0;else{h=da(b|0,4,0,0)|0|0;if(((da(h+8|0,2,0,1)|0|0)+(da(h+6|0,2,0,1)|0|0)|0)<14){g=da((da(b+8|0,4,0,0)|0|0)+8|0,2,0,1)|0|0;C=(da((da(h+16|0,4,0,0)|0)>>0|0,1,0,0)|0|0)==0;ea(b+12|0,(C?-1:1)|0,4,0);ea(b+16|0,(C?1:-1)|0,4,0);if(!(g&4))if((g&25|0)==0?(da(h+20|0,4,0,0)|0|0)==0:0)h=39;else H=13;else h=38}else H=13;if((H|0)==13)h=40;ea(b+7>>0|0,0|0,1,0);B=h}g=pm(a)|0;if(!g){if(!(da(l>>0|0,1,0,0)|0)){ea(f|0,-1|0,4,0);g=0;break}C=a+76|0;x=1-e|0;y=(B|0)==0;D=a+72|0;z=a+24|0;A=a+24|0;a:do{e=da(C|0,2,0,0)|0|0;v=da(a+(e<<2)+120|0,4,0,0)|0|0;w=v+18|0;k=(da(w|0,2,0,1)|0|0)+-1|0;h=k>>x;ea(a+(e<<1)+78|0,h|0,2,0);e=v+56|0;s=v+20|0;t=v+64|0;u=v+7|0;b:do if(y){n=v+3|0;m=v+60|0;l=0;o=k;while(1){k=h<<1;r=da(t|0,4,0,0)|0|0;k=(da(e|0,4,0,0)|0|0)+((((da(r+k>>0|0,1,0,1)|0)<<8|(da(r+(k|1)>>0|0,1,0,1)|0))&(da(s|0,2,0,1)|0))+(da(u>>0|0,1,0,1)|0|0))|0;c:do if(da(n>>0|0,1,0,0)|0)while(1){r=k;k=k+1|0;if((da(r>>0|0,1,0,0)|0|0)>=0)break c;if(k>>>0>=(da(m|0,4,0,0)|0|0)>>>0){H=25;break a}}while(0);rp(k,F)|0;g=F;k=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;if((g|0)<(d|0)|(g|0)==(d|0)&k>>>0>>0){l=h+1|0;if((h|0)<(o|0))k=o;else{g=-1;H=49;break b}}else{if(!((g|0)>(d|0)|(g|0)==(d|0)&k>>>0>c>>>0)){l=g;break}k=h+-1|0;if((l|0)>(k|0)){g=1;H=49;break b}}h=k+l>>1;o=k}ea(D>>0|0,da(D>>0|0,1,0,1)|0|2|0,1,0);u=z;ea(u|0,k|0,4,0);ea(u+4|0,l|0,4,0);ea(a+((da(C|0,2,0,0)|0)<<1)+78|0,h|0,2,0);if(da(v+5>>0|0,1,0,0)|0){H=31;break a}}else{p=v+8|0;q=v+10|0;r=h;l=0;while(1){g=da(e|0,4,0,0)|0|0;n=r<<1;h=da(t|0,4,0,0)|0|0;n=((da(h+n>>0|0,1,0,1)|0)<<8|(da(h+(n|1)>>0|0,1,0,1)|0))&(da(s|0,2,0,1)|0);h=n+(da(u>>0|0,1,0,1)|0|0)|0;J=da(g+h>>0|0,1,0,0)|0|0;o=J&255;m=g+(h+1)|0;do if((J&255)>(da(p>>0|0,1,0,1)|0|0)){m=da(m>>0|0,1,0,1)|0|0;if((m&128|0)==0?(E=m+(o<<7&16256)|0,(E|0)<=(da(q|0,2,0,1)|0|0)):0){g=$b[(fa(B|0,63|0)|0)&63](E,g+(h+2)|0,b)|0;break}qp(v,g+n|0,A);m=da(A|0,4,0,0)|0|0;h=pg(m,((m|0)<0)<<31>>31)|0;if(!h){g=7;break a}ea(a+((da(C|0,2,0,0)|0)<<1)+78|0,r|0,2,0);g=Km(a,0,m,h,2)|0;if(g){H=40;break a}g=$b[(fa(B|0,63|0)|0)&63](m,h,b)|0;Vc(h)}else g=$b[(fa(B|0,63|0)|0)&63](o,m,b)|0;while(0);if((g|0)<0)l=r+1|0;else{if((g|0)<=0){h=r;H=46;break a}k=r+-1|0}if((l|0)>(k|0)){h=r;H=49;break b}r=k+l>>1}}while(0);if((H|0)==49){H=0;if(da(v+5>>0|0,1,0,0)|0){H=51;break}e=v+56|0;h=l}l=da(e|0,4,0,0)|0|0;if((h|0)<(da(w|0,2,0,1)|0|0)){k=h<<1;w=da(v+64|0,4,0,0)|0|0;k=((da(w+k>>0|0,1,0,1)|0)<<8|(da(w+(k|1)>>0|0,1,0,1)|0))&(da(v+20|0,2,0,1)|0);k=(da(l+(k+1)>>0|0,1,0,1)|0)<<16|(da(l+k>>0|0,1,0,1)|0)<<24|(da(l+(k+2)>>0|0,1,0,1)|0)<<8|(da(l+(k+3)>>0|0,1,0,1)|0)}else{k=da(v+6>>0|0,1,0,1)|0|0;k=(da(l+(k+9)>>0|0,1,0,1)|0)<<16|(da(l+(k+8)>>0|0,1,0,1)|0)<<24|(da(l+(k+10)>>0|0,1,0,1)|0)<<8|(da(l+(k+11)>>0|0,1,0,1)|0)}ea(a+((da(C|0,2,0,0)|0)<<1)+78|0,h|0,2,0);g=qm(a,k)|0}while((g|0)==0);if((H|0)==25){ea(G|0,57865|0,4,0);ea(G+4|0,10788|0,4,0);ad(11,13600,G);g=11;break}else if((H|0)==31){ea(f|0,0|0,4,0);g=0}else if((H|0)==40)Vc(h);else if((H|0)==46){ea(f|0,0|0,4,0);ea(a+((da(C|0,2,0,0)|0)<<1)+78|0,h|0,2,0);g=(da(b+7>>0|0,1,0,0)|0|0)==0?0:11}else if((H|0)==51){ea(a+((da(C|0,2,0,0)|0)<<1)+78|0,h|0,2,0);ea(f|0,g|0,4,0);g=0}ea(a+44|0,0|0,2,0);ea(D>>0|0,(da(D>>0|0,1,0,1)|0)&249|0,1,0)}}while(0);i=I;return g|0}function Cm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;ea(a+44|0,0|0,2,0);c=a+72|0;ea(c>>0|0,(da(c>>0|0,1,0,1)|0)&249|0,1,0);ea(b|0,0|0,4,0);do if((da(a+73>>0|0,1,0,0)|0|0)==1){c=a+76|0;f=da(c|0,2,0,0)|0|0;d=da(a+(f<<2)+120|0,4,0,0)|0|0;f=a+(f<<1)+78|0;e=(da(f|0,2,0,0)|0|0)+1<<16>>16;ea(f|0,e|0,2,0);if((e&65535)>=(da(d+18|0,2,0,1)|0|0)){c=a+((da(c|0,2,0,0)|0)<<1)+78|0;ea(c|0,(da(c|0,2,0,0)|0|0)+-1<<16>>16|0,2,0);c=Cp(a,b)|0;break}if(!(da(d+5>>0|0,1,0,0)|0))c=Um(a)|0;else c=0}else c=Cp(a,b)|0;while(0);return c|0}function Dm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;ea(b|0,0|0,4,0);f=a+72|0;ea(f>>0|0,(da(f>>0|0,1,0,1)|0)&241|0,1,0);ea(a+44|0,0|0,2,0);if(((da(a+73>>0|0,1,0,0)|0|0)==1?(c=da(a+76|0,2,0,0)|0|0,d=a+(c<<1)+78|0,e=da(d|0,2,0,0)|0|0,e<<16>>16!=0):0)?(da((da(a+(c<<2)+120|0,4,0,0)|0|0)+5>>0|0,1,0,0)|0|0)!=0:0){ea(d|0,e+-1<<16>>16|0,2,0);c=0}else c=Dp(a,b)|0;return c|0}function Em(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;g=0-b&7;h=a+6|0;f=da(h|0,2,0,0)|0|0;e=((f&65535)*40|0)+64|0;if((e|0)>(g+c|0)){e=lh(da(a+12|0,4,0,0)|0|0,e,0)|0;ea(d|0,e|0,4,0);if(!e)e=0;else{f=da(h|0,2,0,0)|0|0;i=5}}else{ea(d|0,0|0,4,0);e=b+g|0;i=5}if((i|0)==5){ea(e+8|0,e+24|0,4,0);ea(e|0,a|0,4,0);ea(e+4|0,(f&65535)+1|0,2,0)}return e|0}function Fm(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();p=q+4|0;o=q;g=da(d+8|0,4,0,0)|0|0;ea(d+6>>0|0,0|0,1,0);e=da(c>>0|0,1,0,0)|0|0;if(e<<24>>24>-1){e=e&255;ea(p|0,e|0,4,0);f=1}else{f=lm(c,p)|0;e=da(p|0,4,0,0)|0|0}n=a+4|0;l=a+12|0;m=d+4|0;a=e;k=e;h=f&255;e=0;while(1){if(h>>>0>=a>>>0|(k|0)>(b|0))break;d=c+h|0;a=da(d>>0|0,1,0,0)|0|0;if(a<<24>>24>-1){ea(o|0,a&255|0,4,0);d=1}else d=lm(d,o)|0;ea(g+10>>0|0,da(n>>0|0,1,0,0)|0|0|0,1,0);ea(g+32|0,da(l|0,4,0,0)|0|0,4,0);ea(g+24|0,0|0,4,0);f=nm(c+k|0,da(o|0,4,0,0)|0|0,g)|0;e=e+1<<16>>16;if((e&65535)>=(da(m|0,2,0,1)|0|0))break;a=da(p|0,4,0,0)|0|0;k=f+k|0;h=(d&255)+h|0;g=g+40|0}ea(m|0,e|0,2,0);i=q;return}function Gm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=a+73|0;if((da(d>>0|0,1,0,0)|0|0)==1?((da(a+72>>0|0,1,0,0)|0)&8)!=0:0)c=0;else e=3;do if((e|0)==3){c=pm(a)|0;if(!c){if(!(da(d>>0|0,1,0,0)|0)){ea(b|0,1|0,4,0);c=0;break}ea(b|0,0|0,4,0);c=Ep(a)|0;b=a+72|0;d=da(b>>0|0,1,0,1)|0|0;if(!c){ea(b>>0|0,d|8|0,1,0);c=0;break}else{ea(b>>0|0,d&247|0,1,0);break}}}while(0);return c|0}function Hm(a,b,c,d,e,f,g,h,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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,D=0,E=0,F=0,G=0;G=i;i=i+32|0;if((i|0)>=(j|0))ba();q=G;v=G+24|0;w=G+20|0;u=G+16|0;F=G+12|0;B=G+8|0;D=G+28|0;ea(B|0,k|0,4,0);m=(da(a|0,4,0,0)|0|0)+4|0;o=da(m|0,4,0,0)|0|0;E=a+73|0;do if((da(E>>0|0,1,0,0)|0|0)!=4){n=Kn(o,da(a+60|0,4,0,0)|0|0,a)|0;ea(F|0,n|0,4,0);if(!n){if(!(da(a+16|0,4,0,0)|0)){n=da((da(m|0,4,0,0)|0|0)+8|0,4,0,0)|0|0;if(n)do{if(((da(n+72>>0|0,1,0,0)|0)&16)!=0?(m=n+24|0,(da(m|0,4,0,0)|0|0)==(c|0)?(da(m+4|0,4,0,0)|0|0)==(d|0):0):0)ea(n+73>>0|0,0|0,1,0);n=da(n+8|0,4,0,0)|0|0}while((n|0)!=0);if(((da(a+72>>0|0,1,0,0)|0)&2)!=0&((d|0)>0|(d|0)==0&c>>>0>0)?(x=a+24|0,s=da(x|0,4,0,0)|0|0,x=da(x+4|0,4,0,0)|0|0,t=iw(c|0,d|0,-1,-1)|0,(s|0)==(t|0)&(x|0)==(C|0)):0)ea(B|0,-1|0,4,0);else y=13}else y=13;if(((y|0)==13?(k|0)==0:0)?(l=Fp(a,b,c,d,h,B)|0,ea(F|0,l|0,4,0),(l|0)!=0):0)break;z=a+76|0;A=da(a+((da(z|0,2,0,0)|0)<<2)+120|0,4,0,0)|0|0;x=da(o+80|0,4,0,0)|0|0;ea(w|0,0|0,4,0);o=A+52|0;t=da(o|0,4,0,0)|0|0;ea(u|0,0|0,4,0);n=da(A+7>>0|0,1,0,1)|0|0;h=g+f|0;if(da(A+3>>0|0,1,0,0)|0){if(h>>>0<128){ea(x+n>>0|0,h|0,1,0);m=1}else m=(om(x+n|0,h,((h|0)<0)<<31>>31)|0)&255;n=m+n|0}p=(om(x+n|0,c,d)|0)+n|0;do if(!(da(A+2>>0|0,1,0,0)|0))if((d|0)>0|(d|0)==0&c>>>0>2147483647|(b|0)==0){ea(q|0,58825|0,4,0);ea(q+4|0,10788|0,4,0);ad(11,13600,q);l=11;n=0;break}else{s=f;h=c;f=c;g=b;y=24;break}else{s=0;g=e;y=24}while(0);do if((y|0)==24){n=da(A+10|0,2,0,1)|0|0;if((h|0)>(n|0)){r=da(A+12|0,2,0,1)|0|0;m=(((h-r|0)>>>0)%(((da((da(o|0,4,0,0)|0|0)+36|0,4,0,0)|0|0)+-4|0)>>>0)|0)+r|0;m=(m|0)>(n|0)?r:m;o=m+p|0;n=o+4|0;o=x+o|0}else{n=h+p|0;n=(n|0)<4?4:n;o=x;m=h}if((h|0)>0){c=t+17|0;q=t+36|0;r=t+32|0;b=f;p=x+p|0;d=o;k=0;f=m;while(1){if(!f){p=da(u|0,4,0,0)|0|0;if(!(da(c>>0|0,1,0,0)|0))m=p;else{l=((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(r|0,4,0,0)|0|0)>>>0)|0;f=p;while(1){m=f+1|0;if(m>>>0<2)o=0;else{o=f+-1|0;o=o-((o>>>0)%(((((da(q|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;o=((o+1|0)==(l|0)?3:2)+o|0}if((o|0)==(m|0)|(f|0)==(l|0))f=m;else break}ea(u|0,m|0,4,0)}l=hp(t,w,u,m,0)|0;ea(v|0,l|0,4,0);m=(l|0)==0;if((da(c>>0|0,1,0,0)|0|0)!=0&m){m=da(u|0,4,0,0)|0|0;yp(t,m,(p|0)!=0?4:3,p,v);l=da(v|0,4,0,0)|0|0;if(l){h=k;y=38;break}}else{if(!m)break;m=da(u|0,4,0,0)|0|0}ea(d>>0|0,m>>>24|0,1,0);ea(d+1>>0|0,m>>>16|0,1,0);ea(d+2>>0|0,m>>>8|0,1,0);ea(d+3>>0|0,m|0,1,0);if(k)Ag(da(k+68|0,4,0,0)|0|0);l=da(w|0,4,0,0)|0|0;p=l+56|0;d=da(p|0,4,0,0)|0|0;ea(d>>0|0,0|0,1,0);ea(d+1>>0|0,0|0,1,0);ea(d+2>>0|0,0|0,1,0);ea(d+3>>0|0,0|0,1,0);p=(da(p|0,4,0,0)|0|0)+4|0;f=(da(q|0,4,0,0)|0|0)+-4|0}else l=k;o=(h|0)>(f|0)?f:h;if((b|0)>0){o=(o|0)>(b|0)?b:o;jw(p|0,g|0,o|0)|0}else ew(p|0,0,o|0)|0;h=h-o|0;m=(b|0)==(o|0);if((h|0)<=0){y=51;break}else{b=m?s:b-o|0;p=p+o|0;g=m?e:g+o|0;k=l;f=f-o|0}}if((y|0)==38){k=da(w|0,4,0,0)|0|0;if(!k)k=h;else{Ag(da(k+68|0,4,0,0)|0|0);k=h}}else if((y|0)==51){if(!l){l=0;break}Ag(da(l+68|0,4,0,0)|0|0);l=0;break}if(k)Ag(da(k+68|0,4,0,0)|0|0)}else l=0}while(0);ea(F|0,l|0,4,0);if(!l){l=a+((da(z|0,2,0,0)|0)<<1)+78|0;h=da(l|0,2,0,0)|0|0;m=h&65535;k=da(B|0,4,0,0)|0|0;if(!k){l=Fg(da(A+68|0,4,0,0)|0|0)|0;ea(F|0,l|0,4,0);if(l)break;l=m<<1;y=da(A+64|0,4,0,0)|0|0;l=(da(A+56|0,4,0,0)|0|0)+(((da(y+l>>0|0,1,0,1)|0)<<8|(da(y+(l|1)>>0|0,1,0,1)|0))&(da(A+20|0,2,0,1)|0))|0;if(!(da(A+5>>0|0,1,0,0)|0)){y=da(l>>0|0,1,0,1)|0|(da(l+1>>0|0,1,0,1)|0)<<8|(da(l+2>>0|0,1,0,1)|0)<<16|(da(l+3>>0|0,1,0,1)|0)<<24;ea(x>>0|0,y|0,1,0);ea(x+1>>0|0,y>>8|0,1,0);ea(x+2>>0|0,y>>16|0,1,0);ea(x+3>>0|0,y>>24|0,1,0)}ea(F|0,Gp(A,l,D)|0|0,4,0);Hp(A,m,da(D|0,2,0,1)|0|0,F);l=da(F|0,4,0,0)|0|0;if(!l)l=m;else break}else if((k|0)<0?(da(A+18|0,2,0,0)|0|0)!=0:0){y=h+1<<16>>16;ea(l|0,y|0,2,0);l=y&65535}else l=m;Ip(A,l,x,n,0,0,F);ea(a+44|0,0|0,2,0);l=da(F|0,4,0,0)|0|0;if(!l)if(!(da(A+1>>0|0,1,0,0)|0))l=0;else{l=a+72|0;ea(l>>0|0,(da(l>>0|0,1,0,1)|0)&253|0,1,0);l=Jp(a)|0;ea(F|0,l|0,4,0);ea((da(a+((da(z|0,2,0,0)|0)<<2)+120|0,4,0,0)|0|0)+1>>0|0,0|0,1,0);ea(E>>0|0,0|0,1,0)}}}else l=n}else l=da(a+68|0,4,0,0)|0|0;while(0);i=G;return l|0}function Im(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))ba();t=u+4|0;l=u+8|0;e=u;f=(da(a|0,4,0,0)|0|0)+4|0;n=da(f|0,4,0,0)|0|0;r=a+76|0;s=da(r|0,2,0,0)|0|0;p=s<<16>>16;k=da(a+(p<<1)+78|0,2,0,0)|0|0;q=k&65535;m=da(a+(p<<2)+120|0,4,0,0)|0|0;do if((k&65535)<(da(m+18|0,2,0,1)|0|0)?(da(a+73>>0|0,1,0,0)|0|0)==1:0){k=q<<1;o=da(m+64|0,4,0,0)|0|0;k=(da(m+56|0,4,0,0)|0|0)+(((da(o+k>>0|0,1,0,1)|0)<<8|(da(o+(k|1)>>0|0,1,0,1)|0))&(da(m+20|0,2,0,1)|0))|0;o=m+5|0;if((da(o>>0|0,1,0,0)|0|0)==0?(ea(e|0,0|0,4,0),c=Dm(a,e)|0,ea(t|0,c|0,4,0),(c|0)!=0):0){b=c;break}c=Kn(n,da(a+60|0,4,0,0)|0|0,a)|0;ea(t|0,c|0,4,0);if(!c){if((da(a+16|0,4,0,0)|0|0)==0?(h=a+24|0,g=da(h|0,4,0,0)|0|0,h=da(h+4|0,4,0,0)|0|0,d=da((da(f|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,(d|0)!=0):0)do{if(((da(d+72>>0|0,1,0,0)|0)&16)!=0?(c=d+24|0,(da(c|0,4,0,0)|0|0)==(g|0)?(da(c+4|0,4,0,0)|0|0)==(h|0):0):0)ea(d+73>>0|0,0|0,1,0);d=da(d+8|0,4,0,0)|0|0}while((d|0)!=0);c=Fg(da(m+68|0,4,0,0)|0|0)|0;ea(t|0,c|0,4,0);if(!c){ea(t|0,Gp(m,k,l)|0|0,4,0);Hp(m,q,da(l|0,2,0,1)|0|0,t);c=da(t|0,4,0,0)|0|0;if(!c){if((da(o>>0|0,1,0,0)|0|0)==0?(k=da(a+((da(r|0,2,0,0)|0)<<2)+120|0,4,0,0)|0|0,h=da((da(a+(p+1<<2)+120|0,4,0,0)|0|0)+72|0,4,0,0)|0|0,e=da(k+56|0,4,0,0)|0|0,l=k+18|0,f=(da(l|0,2,0,1)|0)<<1,b=da(k+64|0,4,0,0)|0|0,f=((da(b+(f+-2)>>0|0,1,0,1)|0)<<8|(da(b+(f+-1)>>0|0,1,0,1)|0))&(da(k+20|0,2,0,1)|0),b=(Kp(k,e+f|0)|0)&65535,g=da(n+80|0,4,0,0)|0|0,ea(t|0,Fg(da(k+68|0,4,0,0)|0|0)|0|0,4,0),Ip(m,q,e+(f+-4)|0,b+4|0,g,h,t),Hp(k,(da(l|0,2,0,1)|0|0)+-1|0,b,t),b=da(t|0,4,0,0)|0|0,(b|0)!=0):0)break;b=Jp(a)|0;ea(t|0,b|0,4,0);if(!b){b=da(r|0,2,0,0)|0|0;if(b<<16>>16>s<<16>>16){do{c=b+-1<<16>>16;ea(r|0,c|0,2,0);b=da(a+(b<<16>>16<<2)+120|0,4,0,0)|0|0;if(!b)b=c;else{Ag(da(b+68|0,4,0,0)|0|0);b=da(r|0,2,0,0)|0|0}}while(b<<16>>16>s<<16>>16);b=Jp(a)|0;ea(t|0,b|0,4,0);if(b)break}pm(a)|0;b=0}}else b=c}else b=c}else b=c}else b=1;while(0);i=u;return b|0}function Jm(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,k=0.0,l=0.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,D=0,E=0,F=0;F=i;i=i+64|0;if((i|0)>=(j|0))ba();D=F+40|0;h=F+56|0;A=F;f=F+52|0;B=F+48|0;m=da(c+8|0,4,0,0)|0|0;E=da(c|0,4,0,0)|0|0;do if(!d){d=da(b>>0|0,1,0,0)|0|0;if(d<<24>>24>-1){d=d&255;ea(h|0,d|0,4,0);e=1}else{e=lm(b,h)|0;d=da(h|0,4,0,0)|0|0}if(d>>>0>a>>>0){ea(D|0,68267|0,4,0);ea(D+4|0,10788|0,4,0);ad(11,13600,D);ea(c+7>>0|0,11|0,1,0);e=0;break}else{z=d;h=d;d=0;f=e&255;g=15;break}}else{d=b+1|0;e=da(d>>0|0,1,0,0)|0|0;if(e<<24>>24>-1){d=e&255;ea(f|0,d|0,4,0);g=1}else{g=lm(d,f)|0;d=da(f|0,4,0,0)|0|0}e=da(b>>0|0,1,0,1)|0|0;ea(h|0,e|0,4,0);if(d>>>0>11)d=(d+-12|0)>>>1;else d=da(34336+d>>0|0,1,0,1)|0|0;z=e;h=d+e|0;d=1;f=(g&255)+1|0;m=m+40|0;g=15}while(0);do if((g|0)==15){q=A+12|0;r=E+4|0;s=A+10|0;t=E+12|0;u=A+32|0;v=A+8|0;w=A+16|0;y=c+7|0;x=c+4|0;p=h;o=f;a:while(1){f=da(m+8|0,2,0,1)|0|0;do if(!(f&4)){if(f&8){g=da(b+o>>0|0,1,0,0)|0|0;h=g&255;ea(B|0,h|0,4,0);if((g&255)>11){e=1;g=62;break a}if(!(g<<24>>24)){e=-1;g=62;break a}k=+(+da(m|0,8,1,0));nm(b+p|0,h,A)|0;if(g<<24>>24==7)l=+(+da(A|0,8,1,0));else{e=A;l=+((da(e|0,4,0,0)|0|0)>>>0)+4294967296.0*+(da(e+4|0,4,0,0)|0|0)}if(lk){e=1;g=62;break a}else break}do if(!(f&2)){g=b+o|0;n=da(g>>0|0,1,0,0)|0|0;h=n&255;if(!(f&16)){ea(B|0,h|0,4,0);e=n<<24>>24!=0&1;break}if(n<<24>>24>-1)ea(B|0,h|0,4,0);else{lm(g,B)|0;h=da(B|0,4,0,0)|0|0}if(!(h>>>0>11&(h&1|0)==0)){e=-1;g=62;break a}n=(h+-12|0)>>>1;if((n+p|0)>>>0>a>>>0){g=57;break a}g=da(m+12|0,4,0,0)|0|0;e=Yv(b+p|0,da(m+16|0,4,0,0)|0|0,(n|0)<(g|0)?n:g)|0;if(e){g=62;break a}e=n-g|0}else{h=b+o|0;g=da(h>>0|0,1,0,0)|0|0;if(g<<24>>24>-1){h=g&255;ea(B|0,h|0,4,0)}else{lm(h,B)|0;h=da(B|0,4,0,0)|0|0}if(h>>>0<12){e=-1;g=62;break a}if(!(h&1)){e=1;g=62;break a}f=(h+-12|0)>>>1;ea(q|0,f|0,4,0);if((f+p|0)>>>0>a>>>0){g=46;break a}g=da(E+(d<<2)+20|0,4,0,0)|0|0;if(g){ea(s>>0|0,da(r>>0|0,1,0,0)|0|0|0,1,0);ea(u|0,da(t|0,4,0,0)|0|0,4,0);ea(v|0,2|0,2,0);ea(w|0,b+p|0,4,0);e=op(A,m,g,y)|0;break}n=da(m+12|0,4,0,0)|0|0;e=Yv(b+p|0,da(m+16|0,4,0,0)|0|0,(f|0)<(n|0)?f:n)|0;if(e){g=62;break a}e=f-n|0}while(0);if(e){g=62;break a}}else{g=da(b+o>>0|0,1,0,0)|0|0;h=g&255;ea(B|0,h|0,4,0);if((g&255)>11){e=1;g=62;break a}if(g<<24>>24==7){e=m;k=+((da(e|0,4,0,0)|0|0)>>>0)+4294967296.0*+(da(e+4|0,4,0,0)|0|0);nm(b+p|0,h,A)|0;l=+(+da(A|0,8,1,0));if(lk){e=1;g=62;break a}else break}else if(!(g<<24>>24)){e=-1;g=62;break a}g=b+p|0;switch(h|0){case 1:case 0:{n=da(g>>0|0,1,0,0)|0|0;e=((n|0)<0)<<31>>31;break}case 6:{e=(da(b+(p+1)>>0|0,1,0,1)|0)<<16|(da(g>>0|0,1,0,1)|0)<<24|(da(b+(p+2)>>0|0,1,0,1)|0)<<8|(da(b+(p+3)>>0|0,1,0,1)|0);n=(da(b+(p+5)>>0|0,1,0,1)|0)<<16|(da(b+(p+4)>>0|0,1,0,1)|0)<<24|(da(b+(p+6)>>0|0,1,0,1)|0)<<8|(da(b+(p+7)>>0|0,1,0,1)|0);break}case 2:{n=(da(g>>0|0,1,0,0)|0)<<8|(da(b+(p+1)>>0|0,1,0,1)|0);e=((n|0)<0)<<31>>31;break}case 4:{n=(da(b+(p+1)>>0|0,1,0,1)|0)<<16|(da(g>>0|0,1,0,1)|0)<<24|(da(b+(p+2)>>0|0,1,0,1)|0)<<8|(da(b+(p+3)>>0|0,1,0,1)|0);e=((n|0)<0)<<31>>31;break}case 5:{e=(da(g>>0|0,1,0,0)|0)<<8|(da(b+(p+1)>>0|0,1,0,1)|0);n=(da(b+(p+3)>>0|0,1,0,1)|0)<<16|(da(b+(p+2)>>0|0,1,0,1)|0)<<24|(da(b+(p+4)>>0|0,1,0,1)|0)<<8|(da(b+(p+5)>>0|0,1,0,1)|0);break}case 3:{n=(da(b+(p+1)>>0|0,1,0,1)|0)<<8|(da(g>>0|0,1,0,0)|0)<<16|(da(b+(p+2)>>0|0,1,0,1)|0);e=((n|0)<0)<<31>>31;break}default:{e=0;n=h+-8|0}}f=m;g=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;if((e|0)<(f|0)|(e|0)==(f|0)&n>>>0>>0){e=-1;g=62;break a}if((e|0)>(f|0)|(e|0)==(f|0)&n>>>0>g>>>0){e=1;g=62;break a}}while(0);d=d+1|0;m=m+40|0;if(h>>>0>11)f=(h+-12|0)>>>1;else f=da(34336+h>>0|0,1,0,1)|0|0;n=h;g=0;h=0;do{h=h+1|0;n=lw(n|0,g|0,7)|0;g=C}while(((n|0)!=0|(g|0)!=0)&(h|0)<9);p=f+p|0;o=h+o|0;if(o>>>0>=z>>>0){g=70;break}if(p>>>0>a>>>0?1:(d|0)>=(da(x|0,2,0,1)|0|0)){g=70;break}}if((g|0)==46){ea(D|0,68346|0,4,0);ea(D+4|0,10788|0,4,0);ad(11,13600,D);ea(y>>0|0,11|0,1,0);e=0;break}else if((g|0)==57){ea(D|0,68375|0,4,0);ea(D+4|0,10788|0,4,0);ad(11,13600,D);ea(y>>0|0,11|0,1,0);e=0;break}else if((g|0)==62){e=(da((da(E+16|0,4,0,0)|0|0)+d>>0|0,1,0,0)|0|0)==0?e:0-e|0;break}else if((g|0)==70){e=da(c+6>>0|0,1,0,0)|0|0;break}}while(0);i=F;return e|0}function Km(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,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;w=i;i=i+16|0;if((i|0)>=(j|0))ba();v=w;t=w+12|0;u=w+8|0;f=da(a+76|0,2,0,0)|0|0;h=da(a+(f<<2)+120|0,4,0,0)|0|0;s=da(a+4|0,4,0,0)|0|0;if(!(da(a+44|0,2,0,0)|0)){n=h+56|0;f=(da(a+(f<<1)+78|0,2,0,1)|0)<<1;m=da(h+64|0,4,0,0)|0|0;qp(h,(da(n|0,4,0,0)|0|0)+(((da(m+f>>0|0,1,0,1)|0)<<8|(da(m+(f|1)>>0|0,1,0,1)|0))&(da(h+20|0,2,0,1)|0))|0,a+24|0);f=a+72|0;ea(f>>0|0,da(f>>0|0,1,0,1)|0|2|0,1,0);f=n}else f=h+56|0;n=da(a+32|0,4,0,0)|0|0;l=a+40|0;g=da(l|0,2,0,1)|0|0;m=s+36|0;if((n+g|0)>>>0<=((da(f|0,4,0,0)|0|0)+(da(m|0,4,0,0)|0|0)|0)>>>0){if(g>>>0>b>>>0){k=(c+b|0)>>>0>g>>>0?g-b|0:c;g=n+b|0;if(e&1){f=Fg(da(h+68|0,4,0,0)|0|0)|0;if(!f){jw(g|0,d|0,k|0)|0;f=0}}else{jw(d|0,g|0,k|0)|0;f=0}d=d+k|0;o=0;c=c-k|0}else{o=b-g|0;f=0}a:do if((f|0)==0&(c|0)!=0){f=da(m|0,4,0,0)|0|0;r=f+-4|0;g=da(l|0,2,0,1)|0|0;l=(da(n+(g+1)>>0|0,1,0,1)|0)<<16|(da(n+g>>0|0,1,0,1)|0)<<24|(da(n+(g+2)>>0|0,1,0,1)|0)<<8|(da(n+(g+3)>>0|0,1,0,1)|0);ea(t|0,l|0,4,0);n=a+72|0;do if((e|0)!=2?((da(n>>0|0,1,0,0)|0)&4)==0:0){f=((f+-5+(da(a+36|0,4,0,0)|0|0)-g|0)>>>0)/(r>>>0)|0;b=a+64|0;if((f|0)>(da(b|0,4,0,0)|0|0)){h=a+20|0;g=qg(da(h|0,4,0,0)|0|0,f<<3,0)|0;if(!g){f=7;break}ea(b|0,f<<1|0,4,0);ea(h|0,g|0,4,0)}ew(da(a+20|0,4,0,0)|0|0,0,f<<2|0)|0;ea(n>>0|0,da(n>>0|0,1,0,1)|0|4|0,1,0);f=0}else f=0;while(0);b=da(n>>0|0,1,0,0)|0|0;if((b&4)!=0?(q=(o>>>0)/(r>>>0)|0,p=da((da(a+20|0,4,0,0)|0|0)+(q<<2)|0,4,0,0)|0|0,(p|0)!=0):0){ea(t|0,p|0,4,0);k=(o>>>0)%(r>>>0)|0;h=p;l=q}else{k=o;h=l;l=0}if((f|0)==0&(h|0)!=0){p=e&1;q=p<<1^2;p=(p|0)==0;e=a+20|0;while(1){if(b&4)ea((da(e|0,4,0,0)|0|0)+(l<<2)|0,h|0,4,0);if(k>>>0>>0){m=(k+c|0)>>>0>r>>>0?r-k|0:c;f=yg(da(s|0,4,0,0)|0|0,h,u,q)|0;if(!f){b=da(u|0,4,0,0)|0|0;g=da(b+4|0,4,0,0)|0|0;h=(da(g+1>>0|0,1,0,1)|0)<<16|(da(g>>0|0,1,0,1)|0)<<24|(da(g+2>>0|0,1,0,1)|0)<<8|(da(g+3>>0|0,1,0,1)|0);ea(t|0,h|0,4,0);g=g+(k+4)|0;if(!p){f=Fg(b)|0;if(!f){jw(g|0,d|0,m|0)|0;f=0}}else{jw(d|0,g|0,m|0)|0;f=0}if(!b)k=0;else{Ag(b);k=0}}c=c-m|0;d=d+m|0;l=l+1|0}else{b=l+1|0;f=da((da(e|0,4,0,0)|0|0)+(b<<2)|0,4,0,0)|0|0;if(!f){f=Lp(s,h,0,t)|0;h=da(t|0,4,0,0)|0|0}else{ea(t|0,f|0,4,0);h=f;f=0}k=k-r|0;l=b}if(!((f|0)==0&(c|0)!=0&(h|0)!=0))break a;b=da(n>>0|0,1,0,0)|0|0}}}while(0);if((f|0)==0&(c|0)!=0){ea(v|0,57357|0,4,0);ea(v+4|0,10788|0,4,0);ad(11,13600,v);f=11}}else{ea(v|0,57202|0,4,0);ea(v+4|0,10788|0,4,0);ad(11,13600,v);f=11}i=w;return f|0}function Lm(a,b){a=a|0;b=b|0;var c=0,d=0;c=da(a|0,4,0,0)|0|0;d=a+44|0;lg(c,da(d|0,4,0,0)|0|0);a=b+8|0;ea(d|0,jh(c,da(a|0,4,0,0)|0|0)|0|0,4,0);Vc(da(a|0,4,0,0)|0|0);ea(a|0,0|0,4,0);return}function Mm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();e=n+4|0;l=n;m=a+12|0;if(!(da(m|0,4,0,0)|0)){d=a+8|0;c=Em(da((da(d|0,4,0,0)|0|0)+28|0,4,0,0)|0|0,0,0,e)|0;ea(m|0,c|0,4,0);if(!(da(e|0,4,0,0)|0))c=7;else{ea(c+4|0,da((da((da(d|0,4,0,0)|0|0)+28|0,4,0,0)|0|0)+6|0,2,0,0)|0|0|0,2,0);ea(c+7>>0|0,0|0,1,0);f=4}}else f=4;if((f|0)==4){k=pg(256,0)|0;if(!k)c=7;else{ew(k|0,0,256)|0;c=da(b|0,4,0,0)|0|0;ea(l|0,c|0,4,0);if(c){h=b+4|0;while(1){d=da(h|0,4,0,0)|0|0;if(d)if((c|0)==(d|0))g=0;else g=d+(da(c+4|0,4,0,0)|0|0)|0;else g=da(c+4|0,4,0,0)|0|0;ea(c+4|0,0|0,4,0);f=da(k|0,4,0,0)|0|0;e=da(l|0,4,0,0)|0|0;if(!f)f=k;else{d=k;c=0;do{Mp(a,e,f,l);ea(d|0,0|0,4,0);c=c+1|0;d=k+(c<<2)|0;f=da(d|0,4,0,0)|0|0;e=da(l|0,4,0,0)|0|0}while((f|0)!=0);f=d}ea(f|0,e|0,4,0);ea(l|0,g|0,4,0);if(!g)break;else c=g}}ea(l|0,0|0,4,0);c=0;d=0;do{Mp(a,c,da(k+(d<<2)|0,4,0,0)|0|0,l);d=d+1|0;c=da(l|0,4,0,0)|0|0}while((d|0)!=64);ea(b|0,c|0,4,0);Vc(k);c=da((da(m|0,4,0,0)|0|0)+7>>0|0,1,0,1)|0|0}}i=n;return c|0}function Nm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+64|0;if((i|0)>=(j|0))ba();k=m+40|0;l=m;ea(a+56>>0|0,1|0,1,0);e=a+64|0;h=a+36|0;g=a+72|0;f=da((da(g|0,4,0,0)|0|0)+24|0,4,0,0)|0|0;d=l+0|0;c=d+40|0;do{ea(d|0,0|0,4,0);d=d+4|0}while((d|0)<(c|0));d=a+96|0;if(!((da(d|0,4,0,0)|0|0)==0?(b=Np(f,d)|0,(b|0)!=0):0)){b=Mm(e,h)|0;if(!b){e=a+104|0;b=e;Op(da(d|0,4,0,0)|0|0,l,da((da(g|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,da(b|0,4,0,0)|0|0,da(b+4|0,4,0,0)|0|0);b=a+92|0;ea(b|0,(da(b|0,4,0,0)|0|0)+1|0,4,0);b=da(a+44|0,4,0,0)|0|0;Pp(l,k,om(k,b,((b|0)<0)<<31>>31)|0);b=da(h|0,4,0,0)|0|0;if(b){d=a+40|0;do{c=b;b=da(b+4|0,4,0,0)|0|0;a=da(c|0,4,0,0)|0|0;Pp(l,k,om(k,a,((a|0)<0)<<31>>31)|0);Pp(l,c+8|0,da(c|0,4,0,0)|0|0);if(!(da(d|0,4,0,0)|0))Vc(c)}while((b|0)!=0)}ea(h|0,0|0,4,0);b=Qp(l,e)|0}}i=m;return b|0}function Om(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();o=q;f=c;h=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;p=Pm(b)|0;ea(d|0,p|0,4,0);g=(p|0)==0;e=g?7:0;g=g^1;if((b|0)>0&g){n=p+12|0;m=a+32|0;l=0;do{g=da(n|0,4,0,0)|0|0;k=g+(l*56|0)|0;e=Rp(a,k,m,h,f)|0;if(!e){e=Sp(k,o)|0;f=k;h=o;f=iw(da(h|0,4,0,0)|0|0,da(h+4|0,4,0,0)|0|0,da(f|0,4,0,0)|0|0,da(f+4|0,4,0,0)|0|0)|0;h=g+(l*56|0)+8|0;g=h;ea(g|0,f|0,4,0);ea(g+4|0,C|0,4,0);if(!e)e=Tp(k)|0}else h=g+(l*56|0)+8|0;f=h;h=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;l=l+1|0;g=(e|0)==0}while((l|0)<(b|0)&g)}if(!g){Sm(p);ea(d|0,0|0,4,0)}b=c;ea(b|0,h|0,4,0);ea(b+4|0,f|0,4,0);i=q;return e|0}function Pm(a){a=a|0;var b=0,c=0;b=2;while(1)if((b|0)<(a|0))b=b<<1;else{c=b;break}b=da(2252*4|0,4,0,0)|0|0;if((b|0)!=0?(kc[(fa(b|0,127|0)|0)&127](100)|0)!=0:0)b=0;else{a=(c*60|0)+16|0;b=pg(a,((a|0)<0)<<31>>31)|0;if(!b)b=0;else{ew(b|0,0,a|0)|0;ea(b|0,c|0,4,0);ea(b+4|0,0|0,4,0);a=b+16|0;ea(b+12|0,a|0,4,0);ea(b+8|0,a+(c*56|0)|0,4,0)}}return b|0}function Qm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=da(2252*4|0,4,0,0)|0|0;if((d|0)!=0?(kc[(fa(d|0,127|0)|0)&127](100)|0)!=0:0){d=0;g=6}else g=3;do if((g|0)==3){d=pg(64,0)|0;if(!d){g=6;break}else{e=d+0|0;f=e+64|0;do{ea(e>>0|0,0|0,1,0);e=e+1|0}while((e|0)<(f|0));ea(c|0,d|0,4,0);ea(d+4|0,b|0,4,0);ea(d|0,a|0,4,0);f=da(a+8|0,4,0,0)|0|0;e=(da(f+8|0,4,0,0)|0|0)+9|0;f=(da(f+4|0,4,0,0)|0|0)/2|0;f=(e|0)>(f|0)?e:f;ea(d+16|0,f|0,4,0);d=a+56|0;e=d;e=iw(f|0,((f|0)<0)<<31>>31|0,da(e|0,4,0,0)|0|0,da(e+4|0,4,0,0)|0|0)|0;ea(d|0,e|0,4,0);ea(d+4|0,C|0,4,0);d=0;break}}while(0);if((g|0)==6){ea(c|0,d|0,4,0);Sm(b);d=7}return d|0}function Rm(a){a=a|0;if(a){Sm(da(a+4|0,4,0,0)|0|0);Vc(a)}return}function Sm(a){a=a|0;var b=0,c=0;if((a|0)!=0?(da(a|0,4,0,0)|0|0)>0:0){b=a+12|0;c=0;do{Up((da(b|0,4,0,0)|0|0)+(c*56|0)|0);c=c+1|0}while((c|0)<(da(a|0,4,0,0)|0|0))}Vc(a);return}function Tm(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,k=0,l=0,m=0,n=0,o=0,p=0;l=da(b|0,4,0,0)|0|0;p=b+4|0;ea(p|0,a|0,4,0);a:do if((l|0)>0){m=b+12|0;n=0;do{j=da(m|0,4,0,0)|0|0;h=j+(n*56|0)|0;j=da(j+(n*56|0)+48|0,4,0,0)|0|0;if(j){k=da(j|0,4,0,0)|0|0;g=da((da(k+8|0,4,0,0)|0|0)+24|0,4,0,0)|0|0;c=Tm(k,da(j+4|0,4,0,0)|0|0)|0;if(c)break a;i=da(j+16|0,4,0,0)|0|0;e=k+48|0;f=da(e|0,4,0,0)|0|0;d=k+56|0;if(!f){c=Np(g,e)|0;g=d;ea(g|0,0|0,4,0);ea(g+4|0,0|0,4,0);if(c)break a;f=da(e|0,4,0,0)|0|0;e=0;d=0}else{e=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0}ea(j+48|0,f|0,4,0);j=j+8|0;ea(j|0,e|0,4,0);ea(j+4|0,d|0,4,0);j=iw(e|0,d|0,i|0,((i|0)<0)<<31>>31|0)|0;c=k+56|0;ea(c|0,j|0,4,0);ea(c+4|0,C|0,4,0);c=Tp(h)|0;if(c)break a}n=n+1|0}while((n|0)<(l|0));c=da(b|0,4,0,0)|0|0;o=12}else{c=l;o=12}while(0);if((o|0)==12){d=c+-1|0;b:do if((d|0)>0){h=b+12|0;i=b+8|0;f=c;e=c;g=d;while(1){c=(f|0)/2|0;if((e|0)>(c|0)){e=g-c<<1;c=e;e=e|1}else{e=g<<1;l=da(i|0,4,0,0)|0|0;c=da(l+(e<<2)|0,4,0,0)|0|0;e=da(l+((e|1)<<2)|0,4,0,0)|0|0}d=da(h|0,4,0,0)|0|0;if(da(d+(c*56|0)+24|0,4,0,0)|0){if(da(d+(e*56|0)+24|0,4,0,0)|0){l=(Vp(da(p|0,4,0,0)|0|0,da(d+(c*56|0)+32|0,4,0,0)|0|0,da(d+(c*56|0)+20|0,4,0,0)|0|0,da(d+(e*56|0)+32|0,4,0,0)|0|0,da(d+(e*56|0)+20|0,4,0,0)|0|0)|0)<1;c=l?c:e}}else c=e;ea((da(i|0,4,0,0)|0|0)+(g<<2)|0,c|0,4,0);c=g+-1|0;if((c|0)<=0)break b;e=g;f=da(b|0,4,0,0)|0|0;g=c}}while(0);c=da((da(a+12|0,4,0,0)|0|0)+7>>0|0,1,0,1)|0|0}return c|0}function Um(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=a+76|0;do{b=da(d|0,2,0,0)|0|0;c=da(a+(b<<2)+120|0,4,0,0)|0|0;if(da(c+5>>0|0,1,0,0)|0){b=0;break}e=da(c+56|0,4,0,0)|0|0;b=(da(a+(b<<1)+78|0,2,0,1)|0)<<1;f=da(c+64|0,4,0,0)|0|0;b=((da(f+b>>0|0,1,0,1)|0)<<8|(da(f+(b|1)>>0|0,1,0,1)|0))&(da(c+20|0,2,0,1)|0);b=qm(a,(da(e+(b+1)>>0|0,1,0,1)|0)<<16|(da(e+b>>0|0,1,0,1)|0)<<24|(da(e+(b+2)>>0|0,1,0,1)|0)<<8|(da(e+(b+3)>>0|0,1,0,1)|0))|0}while((b|0)==0);return b|0}function Vm(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;o=a+8|0;e=da((da(o|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;s=da(a+4|0,4,0,0)|0|0;q=a+12|0;c=Tp((da(q|0,4,0,0)|0|0)+(e*56|0)|0)|0;if(!c){c=da(q|0,4,0,0)|0|0;d=e|1;a=(da(a|0,4,0,0)|0|0)+e|0;a:do if((a|0)>1){h=c;l=a;g=da(c+(d*56|0)+32|0,4,0,0)|0|0;m=c+((e&65534)*56|0)|0;e=c+(d*56|0)|0;while(1){n=m+24|0;i=m;j=m+32|0;k=m+20|0;f=l;a=g;while(1){d=f;f=(f|0)/2|0;if(!(da(n|0,4,0,0)|0)){c=h;g=a;break}if(((da(e+24|0,4,0,0)|0|0)!=0?(p=Vp(s,da(j|0,4,0,0)|0|0,da(k|0,4,0,0)|0|0,a,da(e+20|0,4,0,0)|0|0)|0,(p|0)>=0):0)?!((p|0)==0&m>>>0>>0):0){r=10;break}c=da(q|0,4,0,0)|0|0;a=da(o|0,4,0,0)|0|0;ea(a+(f<<2)|0,(i-c|0)/56|0|0,4,0);e=da(a+((f^1)<<2)|0,4,0,0)|0|0;if((d|0)<=3)break a;else{h=c;a=da(c+(e*56|0)+32|0,4,0,0)|0|0;e=c+(e*56|0)|0}}if((r|0)==10){r=0;c=da(q|0,4,0,0)|0|0;g=(da(n|0,4,0,0)|0|0)==0?a:0}a=da(o|0,4,0,0)|0|0;ea(a+(f<<2)|0,(e-c|0)/56|0|0,4,0);if((d|0)>3){h=c;l=f;m=c+((da(a+((f^1)<<2)|0,4,0,0)|0|0)*56|0)|0}else break}}else a=da(o|0,4,0,0)|0|0;while(0);ea(b|0,(da(c+((da(a+4|0,4,0,0)|0|0)*56|0)+24|0,4,0,0)|0|0)==0&1|0,4,0);c=da((da(s+12|0,4,0,0)|0|0)+7>>0|0,1,0,1)|0|0}return c|0}function Wm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+4|0;e=da(d|0,4,0,0)|0|0;ea(e+4|0,da(a|0,4,0,0)|0|0,4,0);a=Kn(e,b,0)|0;if(!a){a=da((da(d|0,4,0,0)|0|0)+8|0,4,0,0)|0|0;if(a)do{if((da(a+72>>0|0,1,0,0)|0)&16)ea(a+73>>0|0,0|0,1,0);a=da(a+8|0,4,0,0)|0|0}while((a|0)!=0);a=Wp(e,b,0,c)|0}return a|0}function Xm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;u=i;i=i+32|0;if((i|0)>=(j|0))ba();l=u;t=u+16|0;s=u+12|0;r=u+8|0;ea(t|0,0|0,4,0);e=da(a+12|0,4,0,0)|0|0;if(!b){b=Xp(a,c)|0;ea(s|0,b|0,4,0)}else{ea(s|0,b|0,4,0);m=(da(b+68|0,4,0,0)|0|0)+26|0;ea(m|0,(da(m|0,2,0,0)|0|0)+1<<16>>16|0,2,0)}d=Fg(da(e+68|0,4,0,0)|0|0)|0;ea(r|0,d|0,4,0);do if(!d){m=e+56|0;f=da(m|0,4,0,0)|0|0;v=f+36|0;d=f+37|0;e=f+38|0;f=f+39|0;g=(da(d>>0|0,1,0,1)|0)<<16|(da(v>>0|0,1,0,1)|0)<<24|(da(e>>0|0,1,0,1)|0)<<8|(da(f>>0|0,1,0,1)|0);k=g+1|0;ea(v>>0|0,k>>>24|0,1,0);ea(d>>0|0,k>>>16|0,1,0);ea(e>>0|0,k>>>8|0,1,0);ea(f>>0|0,k|0,1,0);k=a+22|0;if((da(k|0,2,0,0)|0)&4){if(!b){d=cl(a,c,s,0)|0;ea(r|0,d|0,4,0);if(d)break;b=da(s|0,4,0,0)|0|0}d=Fg(da(b+68|0,4,0,0)|0|0)|0;ea(r|0,d|0,4,0);if(d)break;ew(da(b+56|0,4,0,0)|0|0,0,da((da(b+52|0,4,0,0)|0|0)+32|0,4,0,0)|0|0)|0}if((da(a+17>>0|0,1,0,0)|0|0)!=0?(yp(a,c,2,0,r),h=da(r|0,4,0,0)|0|0,(h|0)!=0):0){d=h;break}if(g){e=da(m|0,4,0,0)|0|0;e=(da(e+33>>0|0,1,0,1)|0)<<16|(da(e+32>>0|0,1,0,1)|0)<<24|(da(e+34>>0|0,1,0,1)|0)<<8|(da(e+35>>0|0,1,0,1)|0);d=cl(a,e,t,0)|0;ea(r|0,d|0,4,0);if(d)break;f=da(t|0,4,0,0)|0|0;h=f+56|0;g=da(h|0,4,0,0)|0|0;g=(da(g+5>>0|0,1,0,1)|0)<<16|(da(g+4>>0|0,1,0,1)|0)<<24|(da(g+6>>0|0,1,0,1)|0)<<8|(da(g+7>>0|0,1,0,1)|0);d=(da(a+36|0,4,0,0)|0|0)>>>2;if(g>>>0>(d+-2|0)>>>0){ea(l|0,58627|0,4,0);ea(l+4|0,10788|0,4,0);ad(11,13600,l);ea(r|0,11|0,4,0);d=11;break}if(g>>>0<(d+-8|0)>>>0){d=Fg(da(f+68|0,4,0,0)|0|0)|0;ea(r|0,d|0,4,0);if(d)break;l=da(h|0,4,0,0)|0|0;m=g+1|0;ea(l+4>>0|0,m>>>24|0,1,0);ea(l+5>>0|0,m>>>16|0,1,0);ea(l+6>>0|0,m>>>8|0,1,0);ea(l+7>>0|0,m|0,1,0);m=g<<2;l=da(h|0,4,0,0)|0|0;ea(l+(m+8)>>0|0,c>>>24|0,1,0);ea(l+(m+9)>>0|0,c>>>16|0,1,0);ea(l+(m+10)>>0|0,c>>>8|0,1,0);ea(l+(m+11)>>0|0,c|0,1,0);if((((b|0)!=0?((da(k|0,2,0,0)|0)&4)==0:0)?(n=da(b+68|0,4,0,0)|0|0,o=n+24|0,p=da(o|0,2,0,1)|0|0,(p&2|0)!=0):0)?(da((da(n+16|0,4,0,0)|0|0)+96|0,4,0,0)|0|0)==0:0)ea(o|0,p|32|0,2,0);e=a+60|0;d=da(e|0,4,0,0)|0|0;do if(!d){b=da(a+44|0,4,0,0)|0|0;d=pg(512,0)|0;if(!d){ea(e|0,0|0,4,0);d=7;break}else{ew(d|0,0,512)|0;ea(d|0,b|0,4,0);ea(e|0,d|0,4,0);q=28;break}}else q=28;while(0);if((q|0)==28)if((da(d|0,4,0,0)|0|0)>>>0>>0)d=0;else d=ai(d,c)|0;ea(r|0,d|0,4,0);break}}else e=0;if(!b){d=cl(a,c,s,0)|0;ea(r|0,d|0,4,0);if(d)break;b=da(s|0,4,0,0)|0|0}d=Fg(da(b+68|0,4,0,0)|0|0)|0;ea(r|0,d|0,4,0);if(!d){d=b+56|0;n=da(d|0,4,0,0)|0|0;ea(n>>0|0,e>>>24|0,1,0);ea(n+1>>0|0,e>>>16|0,1,0);ea(n+2>>0|0,e>>>8|0,1,0);ea(n+3>>0|0,e|0,1,0);d=(da(d|0,4,0,0)|0|0)+4|0;ea(d>>0|0,0|0,1,0);ea(d+1>>0|0,0|0,1,0);ea(d+2>>0|0,0|0,1,0);ea(d+3>>0|0,0|0,1,0);d=da(m|0,4,0,0)|0|0;ea(d+32>>0|0,c>>>24|0,1,0);ea(d+33>>0|0,c>>>16|0,1,0);ea(d+34>>0|0,c>>>8|0,1,0);ea(d+35>>0|0,c|0,1,0);d=0}}while(0);b=da(s|0,4,0,0)|0|0;if(b){ea(b>>0|0,0|0,1,0);Ag(da(b+68|0,4,0,0)|0|0)}b=da(t|0,4,0,0)|0|0;if(b)Ag(da(b+68|0,4,0,0)|0|0);i=u;return d|0}function Ym(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,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;K=i;i=i+48|0;if((i|0)>=(j|0))ba();H=K+24|0;y=K;r=K+36|0;I=K+32|0;o=b+72|0;G=da(o|0,4,0,0)|0|0;p=da(a|0,4,0,0)|0|0;m=da(b+68|0,4,0,0)|0|0;n=p+15|0;if((da(n>>0|0,1,0,0)|0|0)!=0?(g=Fg(m)|0,(g|0)!=0):0)J=20;else J=3;a:do if((J|0)==3){h=m+24|0;l=da(h|0,2,0,0)|0|0;if((l&2)!=0?(To(m)|0)!=0:0){g=Uo(m)|0;if(g){J=20;break}l=da(h|0,2,0,0)|0|0}if((l&4)==0|(f|0)!=0)k=0;else k=da(m+20|0,4,0,0)|0|0;ea(h|0,l&65531|0,2,0);v=p+204|0;f=$b[(fa(da(8744+132|0,4,0,0)|0|0,63|0)|0)&63](da((da(v|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,e,0)|0;f=hl(da(v|0,4,0,0)|0|0,e,f)|0;do if(f){ea(h|0,da(h|0,2,0,1)|0|(da(f+24|0,2,0,1)|0)&4|0,2,0);if(!(da(n>>0|0,1,0,0)|0)){ll(f);break}else{Yp(f,(da(p+24|0,4,0,0)|0|0)+1|0);break}}while(0);l=da(m+20|0,4,0,0)|0|0;Yp(m,e);So(m);if(da(n>>0|0,1,0,0)|0){Yp(f,l);Ag(f)}do if(k){g=yg(p,k,H,0)|0;if(!g){v=da(H|0,4,0,0)|0|0;u=v+24|0;ea(u|0,da(u|0,2,0,1)|0|4|0,2,0);So(v);Ag(v);break}if(k>>>0>(da(p+28|0,4,0,0)|0|0)>>>0){J=20;break a}bi(da(p+56|0,4,0,0)|0|0,k,da(p+200|0,4,0,0)|0|0);J=20;break a}while(0);ea(I|0,0|0,4,0);ea(o|0,e|0,4,0);if(c<<24>>24==1|c<<24>>24==5){g=Zp(b)|0;ea(I|0,g|0,4,0);if(!g)J=25;else break}else{f=da(b+56|0,4,0,0)|0|0;f=(da(f+1>>0|0,1,0,1)|0)<<16|(da(f>>0|0,1,0,1)|0)<<24|(da(f+2>>0|0,1,0,1)|0)<<8|(da(f+3>>0|0,1,0,1)|0);if(f){yp(a,f,4,e,I);g=da(I|0,4,0,0)|0|0;if(!g)J=25;else break}}if((J|0)==25?c<<24>>24==1:0){g=0;break}g=cl(a,d,r,0)|0;ea(I|0,g|0,4,0);if(!g){u=da(r|0,4,0,0)|0|0;v=u+68|0;g=Fg(da(v|0,4,0,0)|0|0)|0;ea(I|0,g|0,4,0);if(g){if(!u)break;Ag(da(v|0,4,0,0)|0|0);break}b:do if(c<<24>>24==4){g=da(u+56|0,4,0,0)|0|0;h=g+1|0;k=g+2|0;f=g+3|0;if(((da(h>>0|0,1,0,1)|0)<<16|(da(g>>0|0,1,0,1)|0)<<24|(da(k>>0|0,1,0,1)|0)<<8|(da(f>>0|0,1,0,1)|0)|0)==(G|0)){ea(g>>0|0,e>>>24|0,1,0);ea(h>>0|0,e>>>16|0,1,0);ea(k>>0|0,e>>>8|0,1,0);ea(f>>0|0,e|0,1,0);g=0;break}else{ea(H|0,56060|0,4,0);ea(H+4|0,10788|0,4,0);ad(11,13600,H);g=11;break}}else{s=da(u>>0|0,1,0,0)|0|0;_p(u)|0;r=da(u+18|0,2,0,0)|0|0;t=r&65535;c:do if(r<<16>>16){b=u+56|0;p=u+20|0;m=u+64|0;q=c<<24>>24==3;r=y+18|0;f=0;while(1){o=da(b|0,4,0,0)|0|0;n=f<<1;l=da(m|0,4,0,0)|0|0;n=((da(l+n>>0|0,1,0,1)|0)<<8|(da(l+(n|1)>>0|0,1,0,1)|0))&(da(p|0,2,0,1)|0);l=o+n|0;if(q){qp(u,l,y);l=da(r|0,2,0,0)|0|0;if((l<<16>>16!=0?(w=(l&65535)+n|0,x=o+(w+3)|0,x>>>0<=((da(b|0,4,0,0)|0|0)+(da(p|0,2,0,1)|0|0)|0)>>>0):0)?(z=o+w|0,A=o+(w+1)|0,B=o+(w+2)|0,((da(A>>0|0,1,0,1)|0)<<16|(da(z>>0|0,1,0,1)|0)<<24|(da(B>>0|0,1,0,1)|0)<<8|(da(x>>0|0,1,0,1)|0)|0)==(G|0)):0){l=x;g=z;h=A;k=B;J=40;break}}else{g=o+(n+1)|0;h=o+(n+2)|0;k=o+(n+3)|0;if(((da(g>>0|0,1,0,1)|0)<<16|(da(l>>0|0,1,0,1)|0)<<24|(da(h>>0|0,1,0,1)|0)<<8|(da(k>>0|0,1,0,1)|0)|0)==(G|0)){J=42;break}}f=f+1|0;if((f|0)>=(t|0))break c}if((J|0)==40){ea(g>>0|0,e>>>24|0,1,0);ea(h>>0|0,e>>>16|0,1,0);ea(k>>0|0,e>>>8|0,1,0);ea(l>>0|0,e|0,1,0);break}else if((J|0)==42){ea(l>>0|0,e>>>24|0,1,0);ea(g>>0|0,e>>>16|0,1,0);ea(h>>0|0,e>>>8|0,1,0);ea(k>>0|0,e|0,1,0);break}}else f=0;while(0);do if((f|0)==(t|0)){if(c<<24>>24==5?(F=da(u+6>>0|0,1,0,1)|0|0,B=da(u+56|0,4,0,0)|0|0,C=B+(F+8)|0,D=B+(F+9)|0,E=B+(F+10)|0,F=B+(F+11)|0,((da(D>>0|0,1,0,1)|0)<<16|(da(C>>0|0,1,0,1)|0)<<24|(da(E>>0|0,1,0,1)|0)<<8|(da(F>>0|0,1,0,1)|0)|0)==(G|0)):0){ea(C>>0|0,e>>>24|0,1,0);ea(D>>0|0,e>>>16|0,1,0);ea(E>>0|0,e>>>8|0,1,0);ea(F>>0|0,e|0,1,0);break}ea(H|0,56094|0,4,0);ea(H+4|0,10788|0,4,0);ad(11,13600,H);g=11;break b}while(0);ea(u>>0|0,s|0,1,0);g=0}while(0);ea(I|0,g|0,4,0);if(u)Ag(da(v|0,4,0,0)|0|0);if(!g){yp(a,e,c,d,I);g=da(I|0,4,0,0)|0|0}}}while(0);if((J|0)==20)ea(I|0,g|0,4,0);i=K;return g|0}function Zm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=b+20|0;Sm(da(g|0,4,0,0)|0|0);ea(g|0,0|0,4,0);g=b+59|0;if(da(g>>0|0,1,0,0)|0){h=0;do{d=b+(h<<6)+76|0;lg(a,da(d|0,4,0,0)|0|0);ea(d|0,0|0,4,0);d=b+(h<<6)+80|0;e=da(d|0,4,0,0)|0|0;if(e)do{f=e;e=da(e+4|0,4,0,0)|0|0;if(f)Vc(f)}while((e|0)!=0);ea(d|0,0|0,4,0);e=b+(h<<6)+96|0;d=da(e|0,4,0,0)|0|0;if(d){f=da(d|0,4,0,0)|0|0;if(f){kc[(fa(da(f+4|0,4,0,0)|0|0,127|0)|0)&127](d)|0;ea(d|0,0|0,4,0)}Vc(d);ea(e|0,0|0,4,0);d=b+(h<<6)+104|0;ea(d|0,0|0,4,0);ea(d+4|0,0|0,4,0)}f=b+(h<<6)+112|0;e=da(f|0,4,0,0)|0|0;if(e){d=da(e|0,4,0,0)|0|0;if(d){kc[(fa(da(d+4|0,4,0,0)|0|0,127|0)|0)&127](e)|0;ea(e|0,0|0,4,0)}Vc(e);ea(f|0,0|0,4,0);d=b+(h<<6)+120|0;ea(d|0,0|0,4,0);ea(d+4|0,0|0,4,0)}h=h+1|0}while((h|0)<(da(g>>0|0,1,0,1)|0|0))}e=b+36|0;if((da(b+40|0,4,0,0)|0|0)==0?(c=da(e|0,4,0,0)|0|0,(c|0)!=0):0)do{d=c;c=da(c+4|0,4,0,0)|0|0;if(d)Vc(d)}while((c|0)!=0);ea(e|0,0|0,4,0);ea(b+44|0,0|0,4,0);ea(b+56>>0|0,0|0,1,0);ea(b+48|0,0|0,4,0);ea(b+8|0,0|0,4,0);c=b+32|0;lg(a,da(c|0,4,0,0)|0|0);ea(c|0,0|0,4,0);return}function _m(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,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();f=o+4|0;m=o;n=da(a|0,4,0,0)|0|0;g=da(a+8|0,4,0,0)|0|0;h=da(n+16|0,4,0,0)|0|0;k=(da(h+(g<<4)+12|0,4,0,0)|0|0)+78|0;ea(k|0,(da(k|0,2,0,1)|0)&65531|0,2,0);k=n+65|0;do if(!(da(k>>0|0,1,0,0)|0))if(c){l=c+4|0;b=da(l|0,4,0,0)|0|0;if(!b){$p(a,da(c|0,4,0,0)|0|0,0);d=0;break}d=c+8|0;e=da(d|0,4,0,0)|0|0;if((e|0)!=0?(da(e>>0|0,1,0,0)|0|0)!=0:0){l=n+144|0;ea(l>>0|0,g|0,1,0);ea(f|0,0|0,4,0);Cn(b,f)|0;d=da(d|0,4,0,0)|0|0;ea(n+140|0,da(f|0,4,0,0)|0|0,4,0);b=n+146|0;ea(b>>0|0,0|0,1,0);hh(n,d,-1,0,0,m,0)|0;d=da(n+52|0,4,0,0)|0|0;ea(l>>0|0,0|0,1,0);do if((d|0)!=0?(da(b>>0|0,1,0,0)|0|0)==0:0){ea(a+12|0,d|0,4,0);if((d|0)==9)break;else if((d|0)==7){ea(k>>0|0,1|0,1,0);break}if((d&255|0)!=6){l=da(c|0,4,0,0)|0|0;$p(a,l,Re(n)|0)}}while(0);ld(da(m|0,4,0,0)|0|0)|0;d=0;break}b=da(c|0,4,0,0)|0|0;if(!b){$p(a,0,0);d=0;break}b=aq(n,b,da(h+(g<<4)|0,4,0,0)|0|0)|0;if((b|0)!=0?(Cn(da(l|0,4,0,0)|0|0,b+40|0)|0)==0:0){$p(a,da(c|0,4,0,0)|0|0,13528);d=0}else d=0}else d=0;else{$p(a,da(c|0,4,0,0)|0|0,0);d=1}while(0);i=o;return d|0}function $m(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;h=k+8|0;f=a+16|0;d=da(f|0,4,0,0)|0|0;e=da((da(d+(b<<4)+12|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;if(e){d=e;do{bq(da(d+8|0,4,0,0)|0|0);d=da(d|0,4,0,0)|0|0}while((d|0)!=0);d=da(f|0,4,0,0)|0|0}ea(h|0,a|0,4,0);d=da(d+(b<<4)|0,4,0,0)|0|0;ea(h+4|0,d|0,4,0);do if(!(Zh(a,13384,d)|0))c=1;else{ea(g|0,d|0,4,0);d=th(a,13400,g)|0;if((d|0)!=0?(c=Pe(a,d,23,h,0)|0,lg(a,d),(c|0)!=7):0)break;ea(a+65>>0|0,1|0,1,0);c=7}while(0);i=k;return c|0}function an(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=da(a+12|0,4,0,0)|0|0;if(!g){e=a+4|0;d=a+8|0;f=0}else{e=da(b>>0|0,1,0,0)|0|0;if(!(e<<24>>24))e=0;else{d=b;f=e;e=0;do{d=d+1|0;e=e<<3^e^(da(9328+(f&255)>>0|0,1,0,1)|0|0);f=da(d>>0|0,1,0,0)|0|0}while(f<<24>>24!=0)}f=(e>>>0)%((da(a|0,4,0,0)|0|0)>>>0)|0;e=g+(f<<3)|0;d=g+(f<<3)+4|0}e=da(e|0,4,0,0)|0|0;d=da(d|0,4,0,0)|0|0;ea(c|0,f|0,4,0);a:do if(!e)d=0;else while(1){e=e+-1|0;if(!(cd(da(d+12|0,4,0,0)|0|0,b)|0))break a;if(!e){d=0;break}else d=da(d|0,4,0,0)|0|0}while(0);return d|0}function bn(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();q=r;p=r+12|0;a:do if((d|0)>0){n=a+16|0;o=a+4|0;m=(b|0)==0;e=c;b=d;while(1){h=b+-1|0;if(!(da(n|0,4,0,0)|0))break a;if((e|0)<1){e=b;b=5;break}if(dq(a,e)|0)break a;if(yg(da(o|0,4,0,0)|0|0,e,p,0)|0){b=8;break}k=da(p|0,4,0,0)|0|0;l=da(k+4|0,4,0,0)|0|0;do if(m)if((h|0)>0?(da((da(a|0,4,0,0)|0|0)+17>>0|0,1,0,0)|0|0)!=0:0){cn(a,(da(l+1>>0|0,1,0,1)|0)<<16|(da(l>>0|0,1,0,1)|0)<<24|(da(l+2>>0|0,1,0,1)|0)<<8|(da(l+3>>0|0,1,0,1)|0),4,e);b=h}else b=h;else{g=(da(l+5>>0|0,1,0,1)|0)<<16|(da(l+4>>0|0,1,0,1)|0)<<24|(da(l+6>>0|0,1,0,1)|0)<<8|(da(l+7>>0|0,1,0,1)|0);f=da(a|0,4,0,0)|0|0;if(da(f+17>>0|0,1,0,0)|0){cn(a,e,2,0);f=da(a|0,4,0,0)|0|0}if((g|0)>(((da(f+36|0,4,0,0)|0|0)/4|0)+-2|0)){ea(q|0,e|0,4,0);en(a,44640,q);b=b+-2|0;break}b:do if((g|0)>0){b=0;while(1){e=b<<2;e=(da(l+(e+9)>>0|0,1,0,1)|0)<<16|(da(l+(e+8)>>0|0,1,0,1)|0)<<24|(da(l+(e+10)>>0|0,1,0,1)|0)<<8|(da(l+(e+11)>>0|0,1,0,1)|0);if(da(f+17>>0|0,1,0,0)|0)cn(a,e,2,0);dq(a,e)|0;b=b+1|0;if((b|0)==(g|0))break b;f=da(a|0,4,0,0)|0|0}}while(0);b=h-g|0}while(0);e=(da(l+1>>0|0,1,0,1)|0)<<16|(da(l>>0|0,1,0,1)|0)<<24|(da(l+2>>0|0,1,0,1)|0)<<8|(da(l+3>>0|0,1,0,1)|0);if(k)Ag(k);if((b|0)<=0)break a}if((b|0)==5){ea(q|0,e|0,4,0);ea(q+4|0,d|0,4,0);ea(q+8|0,c|0,4,0);en(a,44552,q);break}else if((b|0)==8){ea(q|0,e|0,4,0);en(a,44616,q);break}}while(0);i=r;return}function cn(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,k=0,l=0;l=i;i=i+32|0;if((i|0)>=(j|0))ba();h=l;f=l+24|0;g=l+20|0;e=gp(da(a|0,4,0,0)|0|0,b,f,g)|0;if((e|0)==7|(e|0)==3082){ea(a+24|0,1|0,4,0);k=3}else if(!e){f=da(f>>0|0,1,0,0)|0|0;e=da(g|0,4,0,0)|0|0;if(!((e|0)==(d|0)?f<<24>>24==c<<24>>24:0)){ea(h|0,b|0,4,0);ea(h+4|0,c&255|0,4,0);ea(h+8|0,d|0,4,0);ea(h+12|0,f&255|0,4,0);ea(h+16|0,e|0,4,0);en(a,44496,h)}}else k=3;if((k|0)==3){ea(h|0,b|0,4,0);en(a,44464,h)}i=l;return}function dn(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,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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=i;i=i+64|0;if((i|0)>=(j|0))ba();N=U+40|0;h=U+56|0;I=U+32|0;J=U+24|0;F=U;S=I;ea(S|0,0|0,4,0);ea(S+4|0,0|0,4,0);S=J;ea(S|0,0|0,4,0);ea(S+4|0,0|0,4,0);S=a+28|0;T=da(S|0,4,0,0)|0|0;O=a+32|0;P=da(O|0,4,0,0)|0|0;Q=a+36|0;R=da(Q|0,4,0,0)|0|0;K=da(a|0,4,0,0)|0|0;E=K+36|0;L=da(E|0,4,0,0)|0|0;if((b|0)!=0?(dq(a,b)|0)==0:0){ea(S|0,43768|0,4,0);ea(O|0,b|0,4,0);k=cl(K,b,h,0)|0;do if(!k){M=da(h|0,4,0,0)|0|0;ea(M>>0|0,0|0,1,0);k=_p(M)|0;if(k){ea(N|0,k|0,4,0);en(a,43824,N);if(!M){e=-1;break}Ag(da(M+68|0,4,0,0)|0|0);e=-1;break}r=a+16|0;G=M+18|0;k=da(G|0,2,0,0)|0|0;a:do if(!(k<<16>>16)){l=M+5|0;k=0;e=0}else{s=M+56|0;t=M+20|0;u=M+64|0;v=F+12|0;w=M+2|0;x=F+16|0;y=L+-5|0;z=L+-4|0;A=K+17|0;B=M+5|0;o=0;p=0;while(1){if(!(da(r|0,4,0,0)|0)){l=B;e=o;break a}ea(S|0,43864|0,4,0);ea(O|0,b|0,4,0);ea(Q|0,p|0,4,0);h=da(s|0,4,0,0)|0|0;k=p<<1;l=da(u|0,4,0,0)|0|0;k=((da(l+k>>0|0,1,0,1)|0)<<8|(da(l+(k|1)>>0|0,1,0,1)|0))&(da(t|0,2,0,1)|0);l=h+k|0;qp(M,l,F);m=da(v|0,4,0,0)|0|0;if(da(w>>0|0,1,0,0)|0){e=F;q=da(e|0,4,0,0)|0|0;e=da(e+4|0,4,0,0)|0|0;if(p){g=J;f=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;if(!((e|0)>(g|0)|(e|0)==(g|0)&q>>>0>f>>>0)){n=N;ea(n|0,q|0,4,0);ea(n+4|0,e|0,4,0);n=N+8|0;ea(n|0,f|0,4,0);ea(n+4|0,g|0,4,0);en(a,43896,N)}}else{f=J;ea(f|0,q|0,4,0);ea(f+4|0,e|0,4,0);f=I;ea(f|0,q|0,4,0);ea(f+4|0,e|0,4,0)}f=J;ea(f|0,q|0,4,0);ea(f+4|0,e|0,4,0)}q=da(x|0,4,0,0)|0|0;e=q&65535;if(m>>>0>e>>>0?(C=(q>>>16)+k|0,D=h+C|0,D>>>0<=((da(s|0,4,0,0)|0|0)+(da(E|0,4,0,0)|0|0)|0)>>>0):0){q=(da(h+(C+1)>>0|0,1,0,1)|0)<<16|(da(D>>0|0,1,0,1)|0)<<24|(da(h+(C+2)>>0|0,1,0,1)|0)<<8|(da(h+(C+3)>>0|0,1,0,1)|0);if(da(A>>0|0,1,0,0)|0)cn(a,q,3,b);bn(a,0,q,((y+m-e|0)>>>0)/(z>>>0)|0)}if(!(da(B>>0|0,1,0,0)|0)){n=(da(h+(k+1)>>0|0,1,0,1)|0)<<16|(da(l>>0|0,1,0,1)|0)<<24|(da(h+(k+2)>>0|0,1,0,1)|0)<<8|(da(h+(k+3)>>0|0,1,0,1)|0);if(da(A>>0|0,1,0,0)|0)cn(a,n,5,b);e=dn(a,n,I,(p|0)==0?0:J)|0;if(!((p|0)<1|(e|0)==(o|0)))en(a,43944,N)}else e=o;p=p+1|0;k=da(G|0,2,0,0)|0|0;if((p|0)>=(k&65535|0)){l=B;break}else o=e}}while(0);if(!(da(l>>0|0,1,0,0)|0)){h=da(M+6>>0|0,1,0,1)|0|0;B=da(M+56|0,4,0,0)|0|0;h=(da(B+(h+9)>>0|0,1,0,1)|0)<<16|(da(B+(h+8)>>0|0,1,0,1)|0)<<24|(da(B+(h+10)>>0|0,1,0,1)|0)<<8|(da(B+(h+11)>>0|0,1,0,1)|0);ea(S|0,43976|0,4,0);ea(O|0,b|0,4,0);if(da(K+17>>0|0,1,0,0)|0){cn(a,h,5,b);k=da(G|0,2,0,0)|0|0}dn(a,h,0,k<<16>>16!=0?J:0)|0;B=da(l>>0|0,1,0,0)|0|0;ea(S|0,43768|0,4,0);ea(O|0,b|0,4,0);if(B<<24>>24)H=34}else{ea(S|0,43768|0,4,0);ea(O|0,b|0,4,0);H=34}do if((H|0)==34?(da(M+2>>0|0,1,0,0)|0|0)!=0:0){h=(d|0)!=0;if(!c){if(!h)break;h=I;k=da(h|0,4,0,0)|0|0;h=da(h+4|0,4,0,0)|0|0;f=d;g=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;if((h|0)>(f|0)|(h|0)==(f|0)&k>>>0>g>>>0)break;B=N;ea(B|0,k|0,4,0);ea(B+4|0,h|0,4,0);B=N+8|0;ea(B|0,g|0,4,0);ea(B+4|0,f|0,4,0);en(a,44200,N);break}if(!h){k=J;h=da(k|0,4,0,0)|0|0;k=da(k+4|0,4,0,0)|0|0;f=c;g=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;if(!((k|0)>(f|0)|(k|0)==(f|0)&h>>>0>g>>>0))break;B=N;ea(B|0,h|0,4,0);ea(B+4|0,k|0,4,0);B=N+8|0;ea(B|0,g|0,4,0);ea(B+4|0,f|0,4,0);en(a,44008,N);break}h=I;k=da(h|0,4,0,0)|0|0;h=da(h+4|0,4,0,0)|0|0;f=c;g=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;if(!((h|0)>(f|0)|(h|0)==(f|0)&k>>>0>g>>>0)){B=N;ea(B|0,k|0,4,0);ea(B+4|0,h|0,4,0);B=N+8|0;ea(B|0,g|0,4,0);ea(B+4|0,f|0,4,0);en(a,44072,N)}g=J;f=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;h=d;k=da(h|0,4,0,0)|0|0;h=da(h+4|0,4,0,0)|0|0;if((g|0)>(h|0)|(g|0)==(h|0)&f>>>0>k>>>0){B=N;ea(B|0,f|0,4,0);ea(B+4|0,g|0,4,0);g=N+8|0;ea(g|0,k|0,4,0);ea(g+4|0,h|0,4,0);en(a,44136,N);g=J;f=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0}B=c;ea(B|0,f|0,4,0);ea(B+4|0,g|0,4,0)}while(0);o=da(M+56|0,4,0,0)|0|0;p=da(M+6>>0|0,1,0,1)|0|0;q=Fo(da(K+32|0,4,0,0)|0|0)|0;ea(S|0,0|0,4,0);if(q){n=(((da(o+(p+5)>>0|0,1,0,1)|0)<<8|(da(o+(p+6)>>0|0,1,0,1)|0))+65535&65535)+1|0;ew(q+n|0,0,L-n|0)|0;ew(q|0,1,n|0)|0;n=(da(o+(p+3)>>0|0,1,0,1)|0)<<8|(da(o+(p+4)>>0|0,1,0,1)|0);g=p+12-((da(l>>0|0,1,0,1)|0)<<2)|0;if(n){f=L+-4|0;m=0;do{l=g+(m<<1)|0;l=(da(o+l>>0|0,1,0,1)|0)<<8|(da(o+(l+1)>>0|0,1,0,1)|0);if((l|0)>(f|0))h=65536;else h=(Kp(M,o+l|0)|0)&65535;k=h+l|0;if((k|0)<=(L|0)){if(h)do{k=k+-1|0;B=q+k|0;ea(B>>0|0,(da(B>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0)}while((k|0)>(l|0))}else{ea(S|0,0|0,4,0);ea(N|0,m|0,4,0);ea(N+4|0,b|0,4,0);en(a,44264,N)}m=m+1|0}while((m|0)<(n|0))}f=(da(o+(p+1)>>0|0,1,0,1)|0)<<8|(da(o+(p+2)>>0|0,1,0,1)|0);if(f)do{g=(da(o+(f+2)>>0|0,1,0,1)|0)<<8|(da(o+(f+3)>>0|0,1,0,1)|0);if(g){g=g+f|0;do{g=g+-1|0;B=q+g|0;ea(B>>0|0,(da(B>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0)}while((g|0)>(f|0))}f=(da(o+f>>0|0,1,0,1)|0)<<8|(da(o+(f+1)>>0|0,1,0,1)|0)}while((f|0)!=0);b:do if((L|0)>0){g=0;f=0;while(1){h=da(q+f>>0|0,1,0,0)|0|0;if(h<<24>>24){if(h<<24>>24>1)break}else g=g+1|0;f=f+1|0;if((f|0)>=(L|0))break b}ea(N|0,f|0,4,0);ea(N+4|0,b|0,4,0);en(a,44312,N)}else g=0;while(0);f=da(o+(p+7)>>0|0,1,0,1)|0|0;if((g|0)!=(f|0)){ea(N|0,g|0,4,0);ea(N+4|0,f|0,4,0);ea(N+8|0,b|0,4,0);en(a,44352,N)}}else ea(a+24|0,1|0,4,0);_k(q);if(M)Ag(da(M+68|0,4,0,0)|0|0)}else{ea(N|0,k|0,4,0);en(a,43784,N);e=-1}while(0);ea(S|0,T|0,4,0);ea(O|0,P|0,4,0);ea(Q|0,R|0,4,0);e=e+1|0}else e=0;i=U;return e|0}function en(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+224|0;if((i|0)>=(j|0))ba();f=k;g=k+8|0;h=k+24|0;d=a+16|0;e=da(d|0,4,0,0)|0|0;if(e){ea(d|0,e+-1|0,4,0);d=a+20|0;ea(d|0,(da(d|0,4,0,0)|0|0)+1|0,4,0);ea(g|0,c|0,4,0);c=a+40|0;if(da(a+52|0,4,0,0)|0)Rk(c,43760,1);d=da(a+28|0,4,0,0)|0|0;if(d){e=da(a+36|0,4,0,0)|0|0;ea(f|0,da(a+32|0,4,0,0)|0|0,4,0);ea(f+4|0,e|0,4,0);$c(200,h,d,f)|0;d=h;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;Rk(c,h,d-h&1073741823)}rg(c,1,b,g);if((da(a+65>>0|0,1,0,0)|0|0)==1)ea(a+24|0,1|0,4,0)}i=k;return}function fn(a){a=a|0;var b=0,c=0;b=a+8|0;c=da(b|0,4,0,0)|0|0;do if((c|0)!=(da(a+4|0,4,0,0)|0|0))if((da(a+24>>0|0,1,0,0)|0|0)==1){lg(da(a|0,4,0,0)|0|0,c);break}else{Vc(c);break}while(0);ea(b|0,0|0,4,0);return}function gn(a){a=a|0;var b=0,c=0,d=0,e=0;c=da(a+32|0,4,0,0)|0|0;e=a+8|0;if(!(((da(e|0,2,0,0)|0)&9312)==0?(da(a+24|0,4,0,0)|0|0)==0:0))Pg(a);b=lh(c,64,0)|0;d=a+20|0;ea(d|0,b|0,4,0);if(!(da(c+65>>0|0,1,0,0)|0)){do if(!c)b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](b)|0;else{if((da(c+276|0,4,0,0)|0|0)>>>0<=b>>>0?(da(c+280|0,4,0,0)|0|0)>>>0>b>>>0:0){b=da(c+248|0,2,0,1)|0|0;break}b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](b)|0}while(0);ea(a+24|0,b|0,4,0);d=da(d|0,4,0,0)|0|0;ea(d|0,0|0,4,0);ea(d+4|0,c|0,4,0);ea(d+8|0,0|0,4,0);ea(d+12|0,0|0,4,0);ea(d+20|0,0|0,4,0);ea(d+16|0,d+32|0,4,0);ea(d+24|0,(b+1048544|0)>>>4|0,2,0);ea(d+26|0,1|0,2,0);ea(d+28|0,0|0,4,0);ea(a|0,d|0,4,0);ea(e|0,32|0,2,0)}else{ea(e|0,1|0,2,0);ea(a+24|0,0|0,4,0)}return}function hn(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;g=nn(a)|0;if(g){h=g;ea(h|0,b|0,4,0);ea(h+4|0,c|0,4,0);ea(g+8|0,0|0,4,0);h=a+12|0;f=da(h|0,4,0,0)|0|0;if(!f)ea(a+8|0,g|0,4,0);else{a=a+26|0;d=da(a|0,2,0,1)|0|0;if((d&1|0)!=0?(e=f,i=da(e+4|0,4,0,0)|0|0,!((i|0)<(c|0)|((i|0)==(c|0)?(da(e|0,4,0,0)|0|0)>>>0>>0:0))):0)ea(a|0,d&65534|0,2,0);ea(f+8|0,g|0,4,0)}ea(h|0,g|0,4,0)}return}function jn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=i;i=i+160|0;if((i|0)>=(j|0))ba();f=g;ew(f|0,0,160)|0;a:do if(!a){a=0;b=0}else{b=0;while(1){c=a+8|0;e=da(c|0,4,0,0)|0|0;ea(c|0,0|0,4,0);if(!b)b=f;else{c=b;b=f;d=0;do{a=ln(c,a)|0;ea(b|0,0|0,4,0);d=d+1|0;b=f+(d<<2)|0;c=da(b|0,4,0,0)|0|0}while((c|0)!=0)}ea(b|0,a|0,4,0);if(!e){a=0;b=0;break a}a=e;b=da(f|0,4,0,0)|0|0}}while(0);do{a=ln(a,da(f+(b<<2)|0,4,0,0)|0|0)|0;b=b+1|0}while((b|0)!=40);i=g;return a|0}function kn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f;e=da(a+12|0,4,0,0)|0|0;if(!e)ea(b|0,a|0,4,0);else{kn(e,b,d);ea((da(d|0,4,0,0)|0|0)+8|0,a|0,4,0)}d=a+8|0;e=da(d|0,4,0,0)|0|0;if(!e)ea(c|0,a|0,4,0);else kn(e,d,c);i=f;return}function ln(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;c=(a|0)!=0;a:do if(c&(b|0)!=0){d=a;a=k;while(1){g=d;f=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;while(1){e=b;c=da(e|0,4,0,0)|0|0;e=da(e+4|0,4,0,0)|0|0;if((g|0)<(e|0)|(g|0)==(e|0)&f>>>0>>0){h=4;break}if(!((e|0)<(g|0)|(e|0)==(g|0)&c>>>0>>0))break;ea(a+8|0,b|0,4,0);c=da(b+8|0,4,0,0)|0|0;if(!c){e=0;c=1;break a}else{a=b;b=c}}if((h|0)==4){h=0;ea(a+8|0,d|0,4,0);a=d}d=da(d+8|0,4,0,0)|0|0;c=(d|0)!=0;if(!(c&(b|0)!=0)){e=b;b=a;break}}}else{e=b;d=a;b=k}while(0);ea(b+8|0,(c?d:e)|0,4,0);i=l;return da(k+8|0,4,0,0)|0|0}function mn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;c=a+8|0;b=da(c|0,4,0,0)|0|0;ea(d|0,b|0,4,0);ea(c|0,0|0,4,0);ea(a+12|0,0|0,4,0);if(!b)b=a;else{c=1;while(1){f=b+8|0;ea(d|0,da(f|0,4,0,0)|0|0,4,0);ea(b+12|0,a|0,4,0);ea(f|0,eq(d,c)|0|0,4,0);a=da(d|0,4,0,0)|0|0;if(!a)break;else{f=b;b=a;c=c+1|0;a=f}}}i=e;return b|0}function nn(a){a=a|0;var b=0,c=0,d=0,e=0;d=a+24|0;b=da(d|0,2,0,0)|0|0;if(!(b<<16>>16)){b=lh(da(a+4|0,4,0,0)|0|0,1016,0)|0;if(!b)b=0;else{ea(b|0,da(a|0,4,0,0)|0|0,4,0);ea(a|0,b|0,4,0);b=b+8|0;ea(a+16|0,b|0,4,0);ea(d|0,63|0,2,0);c=62;e=5}}else{c=b+-1<<16>>16;b=da(a+16|0,4,0,0)|0|0;e=5}if((e|0)==5){ea(d|0,c|0,2,0);ea(a+16|0,b+16|0,4,0)}return b|0}function on(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;d=a+4|0;if(da(d>>0|0,1,0,0)|0){b=pn(a)|0;if(!b){h=da(d>>0|0,1,0,0)|0|0;c=4}}else{h=0;c=4}do if((c|0)==4){e=da(a|0,4,0,0)|0|0;k=da(a+60|0,4,0,0)|0|0;f=da(a+212|0,4,0,0)|0|0;b=a+160|0;c=da(b|0,4,0,0)|0|0;b=da(b+4|0,4,0,0)|0|0;g=a+208|0;ea(g|0,0|0,4,0);d=(da(e+4|0,4,0,0)|0|0)+112|0;l=pg(d,0)|0;if(!l)b=7;else{ew(l|0,0,d|0)|0;ea(l|0,e|0,4,0);o=l+112|0;d=l+8|0;ea(d|0,o|0,4,0);ea(l+4|0,k|0,4,0);ea(l+40|0,-1|0,2,0);a=l+16|0;ea(a|0,c|0,4,0);ea(a+4|0,b|0,4,0);ea(l+100|0,f|0,4,0);a=l+48|0;ea(a>>0|0,1|0,1,0);c=l+49|0;ea(c>>0|0,1|0,1,0);ea(l+43>>0|0,(h<<24>>24!=0?2:0)|0,1,0);ea(m|0,524294|0,4,0);b=sc[(fa(da(e+24|0,4,0,0)|0|0,31|0)|0)&31](e,f,o,524294,m)|0;if(b){fq(l,0);c=da(d|0,4,0,0)|0|0;d=da(c|0,4,0,0)|0|0;if(d){kc[(fa(da(d+4|0,4,0,0)|0|0,127|0)|0)&127](c)|0;ea(c|0,0|0,4,0)}Vc(l);break}if((da(m|0,4,0,0)|0)&1)ea(l+46>>0|0,1|0,1,0);d=kc[(fa(da((da(k|0,4,0,0)|0|0)+48|0,4,0,0)|0|0,127|0)|0)&127](k)|0;if(d&1024)ea(a>>0|0,0|0,1,0);if(d&4096)ea(c>>0|0,0|0,1,0);ea(g|0,l|0,4,0);b=0}}while(0);i=n;return b|0}function pn(a){a=a|0;var b=0,c=0,d=0;d=el(a,4)|0;if((d|0)!=0?(b=da(a+60|0,4,0,0)|0|0,c=da(b|0,4,0,0)|0|0,(c|0)!=0):0){if(!(da(a+13>>0|0,1,0,0)|0))qc[(fa(da(c+32|0,4,0,0)|0|0,127|0)|0)&127](b,1)|0;b=a+17|0;if((da(b>>0|0,1,0,0)|0|0)!=5)ea(b>>0|0,1|0,1,0)}return d|0}function qn(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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;if(!a)e=0;else{g=a+4|0;e=da(g|0,4,0,0)|0|0;e=qc[(fa(da((da(e|0,4,0,0)|0|0)+28|0,4,0,0)|0|0,127|0)|0)&127](e,4)|0;if(!e){f=a+43|0;if(!(da(f>>0|0,1,0,0)|0))ea(f>>0|0,1|0,1,0);e=Sn(a,0,0,0,b,c,d,0,0)|0;if(!e){ea(h|0,-1|0,4,0);e=da(g|0,4,0,0)|0|0;$b[(fa(da((da(e|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,63|0)|0)&63](e,10,h)|0;if((da(h|0,4,0,0)|0|0)==1){e=a+16|0;b=da(e+4|0,4,0,0)|0|0;if((b|0)>-1|(b|0)==-1&(da(e|0,4,0,0)|0|0)>>>0>4294967295){Yo(a,0,0);c=0;e=0}else{c=0;e=0}}else{c=1;e=0}}else c=0}else c=0;fq(a,c);b=da(a+8|0,4,0,0)|0|0;f=da(b|0,4,0,0)|0|0;if(f){kc[(fa(da(f+4|0,4,0,0)|0|0,127|0)|0)&127](b)|0;ea(b|0,0|0,4,0)}if(c){b=da(3164*4|0,4,0,0)|0|0;if(b)mc[(fa(b|0,3|0)|0)&3]();b=da(a|0,4,0,0)|0|0;$b[(fa(da(b+28|0,4,0,0)|0|0,63|0)|0)&63](b,da(a+100|0,4,0,0)|0|0,0)|0;b=da(3166*4|0,4,0,0)|0|0;if(b)mc[(fa(b|0,3|0)|0)&3]()}Vc(da(a+32|0,4,0,0)|0|0);Vc(a)}i=k;return e|0}function rn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=a+5|0;d=da(h>>0|0,1,0,0)|0|0;if(!((da(a+15>>0|0,1,0,0)|0|0)!=0?!((b|0)==2|(b|0)==4):0))e=3;do if(((e|0)==3?(c=d&255,(c|0)!=(b|0)):0)?(ea(h>>0|0,b|0,1,0),(da(a+4>>0|0,1,0,0)|0|0)==0&(c&5|0)==1&(b&1|0)==0):0){c=da(a+64|0,4,0,0)|0|0;d=da(c|0,4,0,0)|0|0;if(d){kc[(fa(da(d+4|0,4,0,0)|0|0,127|0)|0)&127](c)|0;ea(c|0,0|0,4,0)}g=a+17|0;if((da(g>>0|0,1,0,1)|0|0)>1){c=da(a|0,4,0,0)|0|0;$b[(fa(da(c+28|0,4,0,0)|0|0,63|0)|0)&63](c,da(a+172|0,4,0,0)|0|0,0)|0;break}d=a+16|0;c=da(d>>0|0,1,0,0)|0|0;f=c<<24>>24==0;if(f){b=bl(a)|0;e=da(d>>0|0,1,0,0)|0|0}else{e=c;b=0}if(e<<24>>24==1)b=el(a,2)|0;if((b|0)==0?(d=da(a|0,4,0,0)|0|0,$b[(fa(da(d+28|0,4,0,0)|0|0,63|0)|0)&63](d,da(a+172|0,4,0,0)|0|0,0)|0,c<<24>>24==1):0){d=da(a+60|0,4,0,0)|0|0;c=da(d|0,4,0,0)|0|0;if(!c)break;if(!(da(a+13>>0|0,1,0,0)|0))qc[(fa(da(c+32|0,4,0,0)|0|0,127|0)|0)&127](d,1)|0;if((da(g>>0|0,1,0,0)|0|0)==5)break;ea(g>>0|0,1|0,1,0);break}if(f)Mo(a)}while(0);return da(h>>0|0,1,0,1)|0|0}function sn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;d=f+4|0;do if(c)if(!(hh(a,c,-1,0,0,d,0)|0)){d=da(d|0,4,0,0)|0|0;Rd(d)|0;a=gq(a,d,b)|0;break}else{ch(b,a,Re(a)|0,e);a=Mf(a)|0;break}else a=7;while(0);i=f;return a|0}function tn(a){a=a|0;var b=0;ea((da(a+4|0,4,0,0)|0|0)+4|0,da(a|0,4,0,0)|0|0,4,0);b=Jg(a,0)|0;if(!b)b=Ig(a,0)|0;return b|0}function un(a,b){a=a|0;b=b|0;var c=0,d=0;c=da(a+4|0,4,0,0)|0|0;ea(c+4|0,da(a|0,4,0,0)|0|0,4,0);a=b&255;if((da(c+22|0,2,0,0)|0)&2){b=c+17|0;if(((a|0)!=0|0)==(da(b>>0|0,1,0,1)|0|0|0))d=4;else b=8}else{b=c+17|0;d=4}if((d|0)==4){ea(b>>0|0,(a|0)!=0&1|0,1,0);ea(c+18>>0|0,(a|0)==2&1|0,1,0);b=0}return b|0}function vn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f;c=hh(a,c,-1,0,0,d,0)|0;do if(!c){d=da(d|0,4,0,0)|0|0;while(1){if((Rd(d)|0)!=100){e=6;break}c=sn(a,b,ee(d,0)|0)|0;if(c){e=5;break}}if((e|0)==5){gq(a,d,b)|0;break}else if((e|0)==6){c=gq(a,d,b)|0;break}}while(0);i=f;return c|0}function wn(a){a=a|0;var b=0;b=a+100|0;ea(b|0,(da(b|0,4,0,0)|0|0)+1|0,4,0);b=da(a+88|0,4,0,0)|0|0;if(b)do{ea(b+16|0,1|0,4,0);b=da(b+44|0,4,0,0)|0|0}while((b|0)!=0);cp(da(a+204|0,4,0,0)|0|0,0);return}function xn(a){a=a|0;var b=0,c=0,d=0;d=a+304|0;b=da(d|0,4,0,0)|0|0;if(!((b|0)%5|0)){b=(b<<2)+20|0;c=a+328|0;b=qo(a,da(c|0,4,0,0)|0|0,b,((b|0)<0)<<31>>31)|0;if(!b)b=7;else{a=b+((da(d|0,4,0,0)|0)<<2)|0;ea(a+0|0,0|0,4,0);ea(a+4|0,0|0,4,0);ea(a+8|0,0|0,4,0);ea(a+12|0,0|0,4,0);ea(a+16|0,0|0,4,0);ea(c|0,b|0,4,0);b=0}}else b=0;return b|0}function yn(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();s=v;n=v+8|0;q=v+4|0;f=b+56|0;o=da(f|0,4,0,0)|0|0;p=da(b+52|0,4,0,0)|0|0;ea(q|0,0|0,4,0);ea(s|0,da(b|0,4,0,0)|0|0,4,0);u=th(a,10344,s)|0;do if(!u)f=7;else{r=lh(a,28,0)|0;if(!r){lg(a,u);f=7;break}l=r+0|0;k=l+28|0;do{ea(l>>0|0,0|0,1,0);l=l+1|0}while((l|0)<(k|0));ea(r|0,a|0,4,0);ea(r+4|0,c|0,4,0);m=da(b+68|0,4,0,0)|0|0;a:do if(m){l=da(a+20|0,4,0,0)|0|0;if((l|0)>0){h=da(a+16|0,4,0,0)|0|0;g=0;while(1){k=g+1|0;if((da(h+(g<<4)+12|0,4,0,0)|0|0)==(m|0)){k=g;break a}if((k|0)<(l|0))g=k;else break}}else k=0}else k=-1e6;while(0);ea((da(f|0,4,0,0)|0|0)+4|0,da((da(a+16|0,4,0,0)|0|0)+(k<<4)|0,4,0,0)|0|0,4,0);l=n+4|0;ea(l|0,b|0,4,0);ea(n|0,r|0,4,0);h=a+324|0;m=da(h|0,4,0,0)|0|0;ea(h|0,n|0,4,0);k=r+8|0;f=jc[(fa(d|0,7|0)|0)&7](a,da(c+8|0,4,0,0)|0|0,p,o,k,q)|0;ea(h|0,m|0,4,0);do if(!f){h=da(k|0,4,0,0)|0|0;if(h){ea(h+0|0,0|0,4,0);ea(h+4|0,0|0,4,0);ea(h+8|0,0|0,4,0);ea(da(k|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0,4,0);ea(r+12|0,1|0,4,0);if(da(l|0,4,0,0)|0){ea(s|0,da(b|0,4,0,0)|0|0,4,0);ea(e|0,th(a,28376,s)|0|0,4,0);zn(r);f=1;break}q=b+60|0;ea(r+24|0,da(q|0,4,0,0)|0|0,4,0);ea(q|0,r|0,4,0);q=b+38|0;f=da(q|0,2,0,0)|0|0;if(f<<16>>16>0){p=b+4|0;g=da(p|0,4,0,0)|0|0;d=0;while(1){n=da(g+(d*24|0)+12|0,4,0,0)|0|0;if(n){h=n;while(1)if(!(da(h>>0|0,1,0,0)|0))break;else h=h+1|0;k=h-n|0;m=k&1073741823;if((Ec(28424,n,6)|0)==0?(o=da(n+6>>0|0,1,0,0)|0|0,o<<24>>24==32|o<<24>>24==0):0)h=0;else t=24;b:do if((t|0)==24){t=0;if(!m)h=0;else{h=0;while(1){if((Ec(28432,n+h|0,7)|0)==0?(o=da(n+(h+7)>>0|0,1,0,0)|0|0,o<<24>>24==32|o<<24>>24==0):0)break;h=h+1|0;if((h|0)>=(m|0))break b}h=h+1|0}}while(0);if((h|0)<(m|0)){l=(da(n+(h+6)>>0|0,1,0,0)|0|0)!=0|6;g=h+l|0;if((g|0)<=(m|0)){k=(k&1073741823)+1-l|0;f=g;g=h;while(1){ea(n+g>>0|0,da(n+f>>0|0,1,0,0)|0|0|0,1,0);g=g+1|0;if((g|0)==(k|0))break;else f=g+l|0}}if((da(n+h>>0|0,1,0,0)|0|0)==0&(h|0)>0)ea(n+(h+-1)>>0|0,0|0,1,0);g=da(p|0,4,0,0)|0|0;f=g+(d*24|0)+23|0;ea(f>>0|0,da(f>>0|0,1,0,1)|0|2|0,1,0);f=da(q|0,2,0,0)|0|0}}d=d+1|0;if((d|0)>=(f<<16>>16|0)){f=0;break}}}else f=0}else f=0}else if((f|0)==7){ea(a+65>>0|0,1|0,1,0);t=11}else t=11;while(0);if((t|0)==11){g=da(q|0,4,0,0)|0|0;if(!g){ea(s|0,u|0,4,0);ea(e|0,th(a,28344,s)|0|0,4,0)}else{ea(s|0,g|0,4,0);ea(e|0,th(a,10344,s)|0|0,4,0);Vc(da(q|0,4,0,0)|0|0)}lg(a,r)}lg(a,u)}while(0);i=v;return f|0}function zn(a){a=a|0;var b=0,c=0,d=0;b=da(a|0,4,0,0)|0|0;d=a+12|0;c=(da(d|0,4,0,0)|0|0)+-1|0;ea(d|0,c|0,4,0);if(!c){c=da(a+8|0,4,0,0)|0|0;if(c)kc[(fa(da((da(c|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,127|0)|0)&127](c)|0;lg(b,a)}return}function An(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,k=0,l=0,m=0,n=0;n=a+10|0;d=b<<24>>24==1;if((da(n>>0|0,1,0,0)|0|0)==1|d){j=a+12|0;c=da(j|0,4,0,0)|0|0;if(d){d=c&-2;ea(j|0,d|0,4,0);g=d;d=d<<1|1}else{g=c;d=(c<<1)+2|0}k=a+16|0;c=da(k|0,4,0,0)|0|0;i=c+g|0;l=a+32|0;m=lh(da(l|0,4,0,0)|0|0,d,((d|0)<0)<<31>>31)|0;if(!m)c=7;else{d=da(n>>0|0,1,0,0)|0|0;if(d<<24>>24==2)if((g|0)>0){d=m;do{e=da(c>>0|0,1,0,1)|0|0;g=c+2|0;h=(da(c+1>>0|0,1,0,1)|0)<<8;f=h|e;if((h&63488|0)==55296&g>>>0>>0){f=(f<<10&983040)+65536|e<<10&64512|(da(g>>0|0,1,0,1)|0)|(da(c+3>>0|0,1,0,1)|0)<<8&768;c=c+4|0}else c=g;do if(f>>>0>=128){if(f>>>0<2048){ea(d>>0|0,f>>>6&31|192|0,1,0);ea(d+1>>0|0,f&63|128|0,1,0);d=d+2|0;break}if(f>>>0<65536){ea(d>>0|0,f>>>12&15|224|0,1,0);ea(d+1>>0|0,f>>>6&63|128|0,1,0);ea(d+2>>0|0,f&63|128|0,1,0);d=d+3|0;break}else{ea(d>>0|0,f>>>18&7|240|0,1,0);ea(d+1>>0|0,f>>>12&63|128|0,1,0);ea(d+2>>0|0,f>>>6&63|128|0,1,0);ea(d+3>>0|0,f&63|128|0,1,0);d=d+4|0;break}}else{ea(d>>0|0,f|0,1,0);d=d+1|0}while(0)}while(c>>>0>>0);h=55}else{d=m;h=55}else if(d<<24>>24!=1)if((g|0)>0){d=m;do{h=(da(c>>0|0,1,0,1)|0)<<8;g=c+2|0;f=da(c+1>>0|0,1,0,1)|0|0;e=h|f;if((h&63488|0)==55296&g>>>0>>0){e=(e<<10&983040)+65536|f<<10&64512|(da(c+3>>0|0,1,0,1)|0)|(da(g>>0|0,1,0,1)|0)<<8&768;c=c+4|0}else c=g;do if(e>>>0>=128){if(e>>>0<2048){ea(d>>0|0,e>>>6&31|192|0,1,0);ea(d+1>>0|0,e&63|128|0,1,0);d=d+2|0;break}if(e>>>0<65536){ea(d>>0|0,e>>>12&15|224|0,1,0);ea(d+1>>0|0,e>>>6&63|128|0,1,0);ea(d+2>>0|0,e&63|128|0,1,0);d=d+3|0;break}else{ea(d>>0|0,e>>>18&7|240|0,1,0);ea(d+1>>0|0,e>>>12&63|128|0,1,0);ea(d+2>>0|0,e>>>6&63|128|0,1,0);ea(d+3>>0|0,e&63|128|0,1,0);d=d+4|0;break}}else{ea(d>>0|0,e|0,1,0);d=d+1|0}while(0)}while(c>>>0>>0);h=55}else{d=m;h=55}else{d=(g|0)>0;if(b<<24>>24==2)if(d){d=m;g=c;while(1){c=g+1|0;e=da(g>>0|0,1,0,0)|0|0;f=e&255;if((e&255)>191){f=da(15360+(f+-192)>>0|0,1,0,1)|0|0;a:do if((c|0)==(i|0))c=i;else while(1){e=da(c>>0|0,1,0,0)|0|0;if((e&-64)<<24>>24!=-128)break a;g=g+2|0;f=e&63|f<<6;if((g|0)==(i|0)){c=i;break}else{e=c;c=g;g=e}}while(0);if(!(f>>>0<128|(f&-2048|0)==55296|(f&-2|0)==65534))if(f>>>0<65536)h=22;else{g=f+-65536|0;ea(d>>0|0,g>>>10&192|f>>>10&63|0,1,0);ea(d+1>>0|0,g>>>18&3|216|0,1,0);ea(d+2>>0|0,f|0,1,0);ea(d+3>>0|0,f>>>8&3|220|0,1,0);d=d+4|0}else{f=65533;h=22}}else h=22;if((h|0)==22){h=0;ea(d>>0|0,f|0,1,0);ea(d+1>>0|0,f>>>8|0,1,0);d=d+2|0}if(c>>>0>>0)g=c;else break}}else d=m;else if(d){d=m;do{g=c+1|0;f=da(c>>0|0,1,0,0)|0|0;e=f&255;if((f&255)>191){e=da(15360+(e+-192)>>0|0,1,0,1)|0|0;b:do if((g|0)==(i|0))c=i;else{f=c;c=g;while(1){g=da(c>>0|0,1,0,0)|0|0;if((g&-64)<<24>>24!=-128)break b;f=f+2|0;e=g&63|e<<6;if((f|0)==(i|0)){c=i;break}else{g=c;c=f;f=g}}}while(0);if(!(e>>>0<128|(e&-2048|0)==55296|(e&-2|0)==65534))if(e>>>0<65536)h=31;else{g=e+-65536|0;ea(d>>0|0,g>>>18&3|216|0,1,0);ea(d+1>>0|0,g>>>10&192|e>>>10&63|0,1,0);ea(d+2>>0|0,e>>>8&3|220|0,1,0);ea(d+3>>0|0,e|0,1,0);d=d+4|0}else{e=65533;h=31}}else{c=g;h=31}if((h|0)==31){h=0;ea(d>>0|0,e>>>8|0,1,0);ea(d+1>>0|0,e|0,1,0);d=d+2|0}}while(c>>>0>>0)}else d=m;ea(j|0,d-m|0,4,0);ea(d>>0|0,0|0,1,0);d=d+1|0}if((h|0)==55)ea(j|0,d-m|0,4,0);ea(d>>0|0,0|0,1,0);d=a+8|0;j=da(d|0,2,0,0)|0|0;c=j&65535;if(!((j&9312)==0?(da(a+24|0,4,0,0)|0|0)==0:0))Pg(a);ea(d|0,c&29|514|0,2,0);ea(n>>0|0,b|0,1,0);ea(k|0,m|0,4,0);ea(a+20|0,m|0,4,0);c=da(l|0,4,0,0)|0|0;do if(!c)c=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](m)|0;else{if((da(c+276|0,4,0,0)|0|0)>>>0<=m>>>0?(da(c+280|0,4,0,0)|0|0)>>>0>m>>>0:0){c=da(c+248|0,2,0,1)|0|0;break}c=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](m)|0}while(0);ea(a+24|0,c|0,4,0);c=0}}else if(!(Ul(a)|0)){c=da(a+16|0,4,0,0)|0|0;l=(da(a+12|0,4,0,0)|0)&-2;d=c+l|0;if((l|0)>0)do{l=da(c>>0|0,1,0,0)|0|0;k=c+1|0;ea(c>>0|0,da(k>>0|0,1,0,0)|0|0|0,1,0);c=c+2|0;ea(k>>0|0,l|0,1,0)}while(c>>>0>>0);ea(n>>0|0,b|0,1,0);c=0}else c=7;return c|0}function Bn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=da(a>>0|0,1,0,0)|0|0;d=f&255;a:do switch(d|0){case 45:{if((da(a+1>>0|0,1,0,0)|0|0)==45)c=2;else{ea(b|0,90|0,4,0);c=1;break a}while(1){d=da(a+c>>0|0,1,0,0)|0|0;if(d<<24>>24==0|d<<24>>24==10)break;c=c+1|0}ea(b|0,151|0,4,0);break}case 46:{if(((da(a+1>>0|0,1,0,1)|0|0)+-48|0)>>>0<10)g=51;else{ea(b|0,122|0,4,0);c=1}break}case 62:{c=da(a+1>>0|0,1,0,0)|0|0;if(c<<24>>24==61){ea(b|0,83|0,4,0);c=2;break a}else if(c<<24>>24==62){ea(b|0,88|0,4,0);c=2;break a}else{ea(b|0,80|0,4,0);c=1;break a}}case 33:if((da(a+1>>0|0,1,0,0)|0|0)==61){ea(b|0,78|0,4,0);c=2;break a}else{ea(b|0,150|0,4,0);c=2;break a}case 38:{ea(b|0,85|0,4,0);c=1;break}case 126:{ea(b|0,96|0,4,0);c=1;break}case 34:case 39:case 96:{d=da(a+1>>0|0,1,0,0)|0|0;b:do if(d<<24>>24){c=1;while(1){if(d<<24>>24==f<<24>>24){c=c+1|0;if((da(a+c>>0|0,1,0,0)|0|0)!=f<<24>>24)break}c=c+1|0;d=da(a+c>>0|0,1,0,0)|0|0;if(!(d<<24>>24))break b}if(f<<24>>24==39){ea(b|0,97|0,4,0);break a}else{ea(b|0,27|0,4,0);break a}}else c=1;while(0);ea(b|0,150|0,4,0);break}case 42:{ea(b|0,91|0,4,0);c=1;break}case 47:{if((da(a+1>>0|0,1,0,0)|0|0)==42?(c=da(a+2>>0|0,1,0,0)|0|0,c<<24>>24!=0):0){c=c&255;d=3;while(1){f=da(a+d>>0|0,1,0,0)|0|0;if((c|0)==42&f<<24>>24==47){c=42;break}c=f&255;if(!(f<<24>>24))break;else d=d+1|0}ea(b|0,151|0,4,0);c=((c|0)!=0&1)+d|0;break a}ea(b|0,92|0,4,0);c=1;break}case 37:{ea(b|0,93|0,4,0);c=1;break}case 61:{ea(b|0,79|0,4,0);c=(da(a+1>>0|0,1,0,0)|0|0)==61?2:1;break}case 60:{c=da(a+1>>0|0,1,0,0)|0|0;if(c<<24>>24==61){ea(b|0,81|0,4,0);c=2;break a}else if(c<<24>>24==62){ea(b|0,78|0,4,0);c=2;break a}else if(c<<24>>24==60){ea(b|0,87|0,4,0);c=2;break a}else{ea(b|0,82|0,4,0);c=1;break a}}case 44:{ea(b|0,26|0,4,0);c=1;break}case 124:if((da(a+1>>0|0,1,0,0)|0|0)==124){ea(b|0,94|0,4,0);c=2;break a}else{ea(b|0,86|0,4,0);c=1;break a}case 91:{c=1;while(1){d=da(a+c>>0|0,1,0,0)|0|0;if(!(d<<24>>24)){d=d&255;break}c=c+1|0;if(d<<24>>24==93){d=93;break}}ea(b|0,((d|0)==93?27:150)|0,4,0);break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{g=51;break}case 59:{ea(b|0,1|0,4,0);c=1;break}case 43:{ea(b|0,89|0,4,0);c=1;break}case 13:case 12:case 10:case 9:case 32:{c=1;while(1)if(!((da(10368+(da(a+c>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&1))break;else c=c+1|0;ea(b|0,151|0,4,0);break}case 88:case 120:{if((da(a+1>>0|0,1,0,0)|0|0)==39){ea(b|0,134|0,4,0);c=2;while(1){d=da(a+c>>0|0,1,0,0)|0|0;if(!((da(10368+(d&255)>>0|0,1,0,0)|0)&8))break;else c=c+1|0}if(d<<24>>24==39&(c&1|0)==0)d=1;else{ea(b|0,150|0,4,0);while(1){d=da(a+c>>0|0,1,0,0)|0|0;if(d<<24>>24==39|d<<24>>24==0)break;c=c+1|0}d=d<<24>>24!=0}c=(d&1)+c|0}else g=98;break}case 63:{ea(b|0,135|0,4,0);c=1;while(1)if(((da(a+c>>0|0,1,0,1)|0|0)+-48|0)>>>0<10)c=c+1|0;else break;break}case 58:case 35:case 64:case 36:{ea(b|0,135|0,4,0);d=da(a+1>>0|0,1,0,0)|0|0;if(d<<24>>24){c=1;f=0;while(1){if(!((da(10368+(d&255)>>0|0,1,0,0)|0)&70)){if(d<<24>>24==40&(f|0)>0){d=f;g=78;break}if(d<<24>>24!=58){d=f;break}d=c+1|0;if((da(a+d>>0|0,1,0,0)|0|0)==58)c=d;else{d=f;break}}else f=f+1|0;c=c+1|0;d=da(a+c>>0|0,1,0,0)|0|0;if(!(d<<24>>24)){d=f;break}}do if((g|0)==78){e=c;while(1){c=e+1|0;f=da(a+c>>0|0,1,0,0)|0|0;if(!(f<<24>>24))break;if(f<<24>>24!=41?((da(10368+(f&255)>>0|0,1,0,0)|0)&1)==0:0)e=c;else{g=81;break}}if((g|0)==81)if(f<<24>>24==41){c=e+2|0;break}ea(b|0,150|0,4,0)}while(0);if(d)break a}else c=1;ea(b|0,150|0,4,0);break}case 40:{ea(b|0,22|0,4,0);c=1;break}case 41:{ea(b|0,23|0,4,0);c=1;break}default:g=98}while(0);c:do if((g|0)==51){ea(b|0,132|0,4,0);c=da(a>>0|0,1,0,0)|0|0;if(c<<24>>24==48){d=da(a+1>>0|0,1,0,0)|0|0;if(d<<24>>24==88|d<<24>>24==120)if(!((da(10368+(da(a+2>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&8))e=0;else{c=3;while(1)if(!((da(10368+(da(a+c>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&8))break c;else c=c+1|0}else{c=48;e=0}}else e=0;while(1){d=e+1|0;if(((c&255)+-48|0)>>>0>=10){d=e;break}c=da(a+d>>0|0,1,0,0)|0|0;e=d}if(c<<24>>24==46){c=d;do{c=c+1|0;d=a+c|0}while(((da(d>>0|0,1,0,1)|0|0)+-48|0)>>>0<10);ea(b|0,133|0,4,0);e=da(d>>0|0,1,0,0)|0|0;f=c}else{e=c;f=d}do if(e<<24>>24==69|e<<24>>24==101){d=da(a+(f+1)>>0|0,1,0,0)|0|0;if(((d&255)+-48|0)>>>0>=10){if(!(d<<24>>24==45|d<<24>>24==43)){d=e;c=f;break}c=f+2|0;if(((da(a+c>>0|0,1,0,1)|0|0)+-48|0)>>>0>=10){d=e;c=f;break}}else c=f+2|0;while(1){d=a+c|0;if(((da(d>>0|0,1,0,1)|0|0)+-48|0)>>>0<10)c=c+1|0;else break}ea(b|0,133|0,4,0);d=da(d>>0|0,1,0,0)|0|0}else{d=e;c=f}while(0);if((da(10368+(d&255)>>0|0,1,0,0)|0)&70)do{ea(b|0,150|0,4,0);c=c+1|0}while(((da(10368+(da(a+c>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&70)!=0)}else if((g|0)==98){if(!((da(10368+d>>0|0,1,0,0)|0)&70)){ea(b|0,150|0,4,0);c=1;break}else c=1;while(1)if(!((da(10368+(da(a+c>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&70))break;else c=c+1|0;ea(b|0,ei(a,c)|0|0,4,0)}while(0);return c|0}function Cn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=da(a>>0|0,1,0,0)|0|0;if(d<<24>>24==48){d=da(a+1>>0|0,1,0,0)|0|0;if(d<<24>>24==88|d<<24>>24==120?(e=a+2|0,c=da(e>>0|0,1,0,0)|0|0,((da(10368+(c&255)>>0|0,1,0,0)|0)&8)!=0):0){while(1){d=e+1|0;if(c<<24>>24!=48)break;e=d;c=da(d>>0|0,1,0,0)|0|0}if(!((da(10368+(c&255)>>0|0,1,0,0)|0)&8)){c=0;d=0}else{f=c;a=0;d=0;do{c=f<<24>>24;d=(0-(c>>>6&1)&9)+c&15|d<<4;a=a+1|0;f=da(e+a>>0|0,1,0,0)|0|0;c=((da(10368+(f&255)>>0|0,1,0,0)|0)&8)==0}while((a|0)<8&(c^1));c=c^1}if((d|0)<0|c)c=0;else{ea(b|0,d|0,4,0);c=1}}else{g=0;h=13}}else if(d<<24>>24==43){a=a+1|0;g=0;h=13}else if(d<<24>>24==45){a=a+1|0;g=1;h=13}else{g=0;h=13}a:do if((h|0)==13){c=0;d=0;f=0;while(1){e=(da(a+f>>0|0,1,0,0)|0|0)+-48|0;if(e>>>0>=10)break;d=rw(c|0,d|0,10,0)|0;c=iw(e|0,((e|0)<0)<<31>>31|0,d|0,C|0)|0;f=f+1|0;if((f|0)>=11){c=0;break a}else d=C}e=cw(c|0,d|0,g|0,0)|0;a=C;if((a|0)>0|(a|0)==0&e>>>0>2147483647)c=0;else{if(g)c=cw(0,0,c|0,d|0)|0;ea(b|0,c|0,4,0);c=1}}while(0);return c|0}function Dn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e;ea(f|0,d|0,4,0);rg(a,b,c,f);i=e;return}function En(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;var h=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;A=i;i=i+16|0;if((i|0)>=(j|0))ba();y=A;w=A+4|0;ea(w|0,0|0,4,0);z=lh(a,536,0)|0;a:do if(z){ew(z|0,0,536)|0;ea(z+476|0,e|0,4,0);n=a+20|0;e=da(n|0,4,0,0)|0|0;b:do if((e|0)>0){o=a+16|0;l=0;while(1){m=da((da(o|0,4,0,0)|0|0)+(l<<4)+4|0,4,0,0)|0|0;if(m){ea((da(m+4|0,4,0,0)|0|0)+4|0,da(m|0,4,0,0)|0|0,4,0);h=al(m,1,1)|0;if(h)break;e=da(n|0,4,0,0)|0|0}l=l+1|0;if((l|0)>=(e|0))break b}ea(y|0,da((da(o|0,4,0,0)|0|0)+(l<<4)|0,4,0,0)|0|0,4,0);tg(a,h,40984,y);l=z;break a}while(0);ql(a);ea(z|0,a|0,4,0);ea(z+424|0,0|0,4,0);do if((c|0)>-1){if((c|0)!=0?(da(b+(c+-1)>>0|0,1,0,0)|0|0)==0:0){x=21;break}if((da(a+92|0,4,0,0)|0|0)<(c|0)){tg(a,18,41016,y);if(!a){l=z;h=18;break a}if(!(da(a+65>>0|0,1,0,0)|0)){l=z;h=(da(a+56|0,4,0,0)|0)&18;break a}else{Pl(a);l=z;h=7;break a}}else{if((b|0)!=0?(k=iw(c|0,((c|0)<0)<<31>>31|0,1,0)|0,k=lh(a,k,C)|0,(k|0)!=0):0){jw(k|0,b|0,c|0)|0;ea(k+c>>0|0,0|0,1,0);Kh(z,k,w)|0;lg(a,k);h=z+480|0;ea(h|0,b+((da(h|0,4,0,0)|0|0)-k)|0,4,0);break}ea(z+480|0,b+c|0,4,0);break}}else x=21;while(0);if((x|0)==21)Kh(z,b,w)|0;o=a+65|0;e=z+12|0;if(!(da(o>>0|0,1,0,0)|0)){l=z+12|0;if((da(e|0,4,0,0)|0|0)==101)ea(l|0,0|0,4,0)}else{ea(e|0,7|0,4,0);l=z+12|0}c:do if((da(z+17>>0|0,1,0,0)|0|0)!=0?(p=da(z|0,4,0,0)|0|0,q=p+20|0,(da(q|0,4,0,0)|0|0)>0):0){k=p+16|0;n=0;while(1){e=da(k|0,4,0,0)|0|0;h=da(e+(n<<4)+4|0,4,0,0)|0|0;if(h){if(!(da(h+8>>0|0,1,0,0)|0)){e=xg(h,0)|0;if((e|0)==7|(e|0)==3082)break;else if(e)break c;e=da(k|0,4,0,0)|0|0;m=1}else m=0;c=da(h+4|0,4,0,0)|0|0;ea(c+4|0,da(h|0,4,0,0)|0|0,4,0);c=da((da(c+12|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;if(((da(c+41>>0|0,1,0,1)|0)<<16|(da(c+40>>0|0,1,0,1)|0)<<24|(da(c+42>>0|0,1,0,1)|0)<<8|(da(c+43>>0|0,1,0,1)|0)|0)!=(da(da(e+(n<<4)+12|0,4,0,0)|0|0,4,0,0)|0|0)){um(p,n);ea(l|0,17|0,4,0)}if(m)tn(h)|0}n=n+1|0;if((n|0)>=(da(q|0,4,0,0)|0|0))break c}ea(p+65>>0|0,1|0,1,0)}while(0);if(da(o>>0|0,1,0,0)|0)ea(l|0,7|0,4,0);if(g)ea(g|0,da(z+480|0,4,0,0)|0|0,4,0);h=da(l|0,4,0,0)|0|0;m=(h|0)==0;do if(m?(s=z+8|0,r=da(s|0,4,0,0)|0|0,(r|0)!=0):0){l=da(z+450>>0|0,1,0,0)|0|0;if(l<<24>>24==2){hq(r,4);k=8;e=12}else if(!(l<<24>>24))break;else{hq(r,8);k=0;e=8}l=k;do{iq(da(s|0,4,0,0)|0|0,l-k|0,0,da(41040+(l<<2)|0,4,0,0)|0|0,0);l=l+1|0}while((l|0)<(e|0))}while(0);k=z+8|0;if((da(a+145>>0|0,1,0,0)|0|0)==0?(v=da(k|0,4,0,0)|0|0,t=(da(z+480|0,4,0,0)|0|0)-b|0,(v|0)!=0):0){if((b|0)!=0?(s=da(v|0,4,0,0)|0|0,u=iw(t|0,((t|0)<0)<<31>>31|0,1,0)|0,u=lh(s,u,C)|0,(u|0)!=0):0){jw(u|0,b|0,t|0)|0;ea(u+t>>0|0,0|0,1,0);l=u}else l=0;ea(v+168|0,l|0,4,0);v=v+88|0;ea(v|0,(da(v|0,2,0,0)|0)&-257|(d&65535)<<8&256|0,2,0)}l=da(k|0,4,0,0)|0|0;do if(!l)x=60;else{if(m?(da(o>>0|0,1,0,0)|0|0)==0:0){x=60;break}Mg(l)|0}while(0);if((x|0)==60)ea(f|0,l|0,4,0);k=da(w|0,4,0,0)|0|0;do if(!k){ea(a+52|0,h|0,4,0);k=da(a+236|0,4,0,0)|0|0;if(k){l=k+8|0;if(!((da(l|0,2,0,0)|0)&9312)){ea(l|0,1|0,2,0);break}else{ug(k);break}}}else{ea(y|0,k|0,4,0);tg(a,h,10344,y);lg(a,k)}while(0);k=z+528|0;l=da(k|0,4,0,0)|0|0;if(!l)l=z;else{do{ea(k|0,da(l+4|0,4,0,0)|0|0,4,0);lg(a,l);l=da(k|0,4,0,0)|0|0}while((l|0)!=0);l=z}}else{l=0;h=7}while(0);Bh(l);lg(a,z);y=Ng(a,h)|0;i=A;return y|0}function Fn(a){a=a|0;var b=0,c=0;c=da(a|0,4,0,0)|0|0;if((da(c+145>>0|0,1,0,0)|0|0)==0?(b=Yh(c,a+4|0)|0,(b|0)!=0):0){ea(a+12|0,b|0,4,0);c=a+64|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0)}else b=0;return b|0}function Gn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=da(a+24|0,4,0,0)|0|0;f=d+84|0;b=da(f|0,4,0,0)|0|0;if(!b){b=1020;c=0}else{b=b*40|0;c=0}e=a+4|0;a=qo(da(d|0,4,0,0)|0|0,da(e|0,4,0,0)|0|0,b,c)|0;c=(a|0)!=0;if(c){b=da(d|0,4,0,0)|0|0;do if(!b)b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](a)|0;else{if((da(b+276|0,4,0,0)|0|0)>>>0<=a>>>0?(da(b+280|0,4,0,0)|0|0)>>>0>a>>>0:0){b=da(b+248|0,2,0,1)|0|0;break}b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](a)|0}while(0);ea(f|0,(b>>>0)/20|0|0,4,0);ea(e|0,a|0,4,0)}return (c?0:7)|0}function Hn(a,b,c){a=a|0;b=b|0;c=c|0;a:do if(c)switch(b|0){case -5:{if(!((da(c+2|0,2,0,0)|0)&16))break a;lg(a,c);break a}case -8:{if(!(da(a+520|0,4,0,0)|0)){Lh(c);break a}if(da(c+24|0,4,0,0)|0)lg(a,da(c+20|0,4,0,0)|0|0);lg(a,c);break a}case -15:case -1:case -13:case -12:{lg(a,c);break a}case -11:{if(da(a+520|0,4,0,0)|0)break a;Vc(c);break a}case -10:{if(da(a+520|0,4,0,0)|0)break a;zn(c);break a}case -6:{if(da(a+520|0,4,0,0)|0)break a;a=(da(c|0,4,0,0)|0|0)+-1|0;ea(c|0,a|0,4,0);if(a)break a;Vc(c);break a}default:break a}while(0);return}function In(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,k=0,l=0,m=0,n=0;c=da(b|0,4,0,0)|0|0;l=da(a+24|0,4,0,0)|0|0;m=l+112|0;g=da(m|0,4,0,0)|0|0;j=a+88|0;ea(j|0,(da(j|0,2,0,0)|0)&-193|64|0,2,0);d=da(a+32|0,4,0,0)|0|0;a:do if((d|0)>0){f=da(a+4|0,4,0,0)|0|0;while(1){d=d+-1|0;e=da(f>>0|0,1,0,1)|0|0;switch(e|0){case 12:case 13:case 11:{ea(j|0,(da(j|0,2,0,0)|0)&-193|128|0,2,0);break}case 15:{n=da(f+8|0,4,0,0)|0|0;c=(n|0)>(c|0)?n:c;break}case 4:{if(!(da(f+8|0,4,0,0)|0))k=7;else{ea(j|0,(da(j|0,2,0,0)|0)&-65|0,2,0);k=7}break}case 6:case 8:{ea(f+16|0,77|0,4,0);ea(f+1>>0|0,-19|0,1,0);break}case 14:{n=da(f+-16|0,4,0,0)|0|0;c=(n|0)>(c|0)?n:c;break}case 10:case 1:{n=da(f+3>>0|0,1,0,1)|0|0;c=(n|0)>(c|0)?n:c;break}case 2:case 3:{k=7;break}case 5:case 7:case 9:{ea(f+16|0,76|0,4,0);ea(f+1>>0|0,-19|0,1,0);break}default:{}}if((k|0)==7){k=0;ea(j|0,da(j|0,2,0,0)|0|128|0,2,0)}e=da(34168+e>>0|0,1,0,0)|0|0;ea(f+2>>0|0,e|0,1,0);if((e&1)!=0?(h=f+8|0,i=da(h|0,4,0,0)|0|0,(i|0)<0):0)ea(h|0,da(g+(~i<<2)|0,4,0,0)|0|0,4,0);if((d|0)<=0)break a;else f=f+20|0}}while(0);lg(da(a|0,4,0,0)|0|0,da(m|0,4,0,0)|0|0);ea(m|0,0|0,4,0);ea(l+108|0,0|0,4,0);ea(b|0,c|0,4,0);return}function Jn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;c=a+73|0;if((da(c>>0|0,1,0,0)|0|0)!=4){ea(c>>0|0,0|0,1,0);d=a+56|0;b=a+48|0;b=Fp(a,da(d|0,4,0,0)|0|0,da(b|0,4,0,0)|0|0,da(b+4|0,4,0,0)|0|0,0,e)|0;if(!b){Vc(da(d|0,4,0,0)|0|0);ea(d|0,0|0,4,0);d=a+68|0;b=da(d|0,4,0,0)|0|(da(e|0,4,0,0)|0);ea(d|0,b|0,4,0);if((b|0)!=0?(da(c>>0|0,1,0,0)|0|0)==1:0){ea(c>>0|0,2|0,1,0);b=0}else b=0}}else b=da(a+68|0,4,0,0)|0|0;i=f;return b|0}function Kn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=da(a+8|0,4,0,0)|0|0;a:do if(!a)a=0;else{d=(b|0)==0;while(1){if((a|0)!=(c|0)){if(d)break;if((da(a+60|0,4,0,0)|0|0)==(b|0))break}a=da(a+8|0,4,0,0)|0|0;if(!a){a=0;break a}}a=El(a,b,c)|0}while(0);return a|0}function Ln(a){a=a|0;var b=0,c=0,d=0,e=0;c=da(a|0,4,0,0)|0|0;d=c+1|0;ea(a|0,d|0,4,0);e=da(c>>0|0,1,0,0)|0|0;b=e&255;if((e&255)<=191)return b|0;b=da(15360+(b+-192)>>0|0,1,0,1)|0|0;if(((da(d>>0|0,1,0,0)|0)&-64)<<24>>24==-128)while(1){c=c+2|0;ea(a|0,c|0,4,0);b=(da(d>>0|0,1,0,1)|0|0)&63|b<<6;if(((da(c>>0|0,1,0,0)|0)&-64)<<24>>24==-128){e=d;d=c;c=e}else break}return (b>>>0<128|(b&-2048|0)==55296|(b&-2|0)==65534?65533:b)|0}function Mn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((b|0)>-1)f=a+b|0;else f=-1;b=da(a>>0|0,1,0,0)|0|0;if(b<<24>>24!=0&f>>>0>a>>>0){c=b;b=0;do{e=a+1|0;if((c&255)>191){d=a;a=e;while(1){c=da(a>>0|0,1,0,0)|0|0;if((c&-64)<<24>>24==-128){c=a;a=d+2|0;d=c}else break}}else{c=da(e>>0|0,1,0,0)|0|0;a=e}b=b+1|0}while(c<<24>>24!=0&a>>>0>>0)}else b=0;return b|0}function Nn(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;if((i|0)>=(j|0))ba();p=t+32|0;q=t+16|0;r=t;e=da(a|0,4,0,0)|0|0;if((e|0)<0){ea(a|0,0|0,4,0);ea(a+4|0,-1|0,4,0);ea(a+12|0,0|0,2,0);ea(a+14>>0|0,0|0,1,0);e=0}l=c;m=da(l+4|0,4,0,0)|0|0;k=r;ea(k|0,da(l|0,4,0,0)|0|0,4,0);ea(k+4|0,m|0,4,0);m=a+8|0;ea(m|0,d|0,4,0);k=b&255;l=(b|0)==254;do{h=da(a+(e<<4)+12|0,2,0,0)|0|0;d=h&65535;c=37184+(d<<1)|0;a:do if((h&65535)>429)s=6;else{h=k;while(1){g=da(c|0,2,0,0)|0|0;f=g<<16>>16;if(g<<16>>16==-86){s=6;break a}g=h&255;e=f+g|0;if(e>>>0<=1496?(da(39336+e>>0|0,1,0,0)|0|0)==h<<24>>24:0){s=16;break}if(!(h<<24>>24))break;if((h&255)>=70){n=f;s=12;break}h=da(40840+g>>0|0,1,0,0)|0|0;if(!(h<<24>>24)){n=f;s=12;break}}if((s|0)==16){s=0;e=da(22184+(e<<1)|0,2,0,1)|0|0;break}if(((s|0)==12?(s=0,o=n+70|0,(o|0)>-1):0)?(da(39336+o>>0|0,1,0,0)|0|0)==70:0){e=da(22184+(o<<1)|0,2,0,1)|0|0;break}e=da(38048+(d<<1)|0,2,0,1)|0|0}while(0);if((s|0)==6){s=0;e=da(38048+(d<<1)|0,2,0,1)|0|0}if(e>>>0<642){s=18;break}if(e>>>0>=969){s=20;break}lq(a,e+-642|0);if(l)break;e=da(a|0,4,0,0)|0|0}while((e|0)>-1);if((s|0)==18){jq(a,e,b,r);n=a+4|0;ea(n|0,(da(n|0,4,0,0)|0|0)+-1|0,4,0)}else if((s|0)==20){ea(q+0|0,da(r+0|0,4,0,0)|0|0,4,0);ea(q+4|0,da(r+4|0,4,0,0)|0|0,4,0);ea(q+8|0,da(r+8|0,4,0,0)|0|0,4,0);n=da(m|0,4,0,0)|0|0;ea(p|0,q|0,4,0);sh(n,20432,p);ea(m|0,n|0,4,0);kq(a,k,r)}i=t;return}function On(a){a=a|0;var b=0;b=da(a|0,4,0,0)|0|0;if((b|0)>=0){kq(a,da(a+(b<<4)+14>>0|0,1,0,0)|0|0,a+(b<<4)+16|0);ea(a|0,(da(a|0,4,0,0)|0|0)+-1|0,4,0)}return}function Pn(a,b){a=a|0;b=b|0;var c=0;if(b){if((da(b|0,4,0,0)|0|0)>0){c=0;do{Mk(a,da(b+(c<<4)+12|0,4,0,0)|0|0);Lk(a,da(b+(c<<4)+16|0,4,0,0)|0|0,1);lg(a,da(b+(c<<4)+8|0,4,0,0)|0|0);c=c+1|0}while((c|0)<(da(b|0,4,0,0)|0|0))}lg(a,b)}return}function Qn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=a+328|0;c=da(g|0,4,0,0)|0|0;if(c){h=a+304|0;if((da(h|0,4,0,0)|0|0)>0){e=0;do{d=da(c+(e<<2)|0,4,0,0)|0|0;c=da(d+8|0,4,0,0)|0|0;if((c|0)!=0?(f=da((da(c|0,4,0,0)|0|0)+b|0,4,0,0)|0|0,(f|0)!=0):0)kc[(fa(f|0,127|0)|0)&127](c)|0;ea(d+20|0,0|0,4,0);zn(d);e=e+1|0;c=da(g|0,4,0,0)|0|0}while((e|0)<(da(h|0,4,0,0)|0|0))}lg(a,c);ea(h|0,0|0,4,0);ea(g|0,0|0,4,0)}return}function Rn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;do if((b|0)==-2)if(!(da(a+12|0,4,0,0)|0))b=(da(a+16|0,4,0,0)|0|0)==0?0:6;else b=6;else{e=da(a|0,2,0,0)|0|0;d=e<<16>>16;if(!((d|0)!=(b|0)&e<<16>>16>-1)){e=(d|0)==(b|0)?4:1;d=c&255;b=da(a+2|0,2,0,1)|0|0;if((d|0)==(b&3|0)){b=e|2;break}else return ((b&d)>>>1&1)+e|0}else b=0}while(0);return b|0} -function St(a,b){a=a|0;b=b|0;var c=0;if(b&1)if(!(da(a+12|0,4,0,0)|0))b=(da(a+20|0,4,0,0)|0|0)==0?12:28;else b=28;else b=48;if(((da(a+4|0,4,0,0)|0)&1024|0)==0?(c=da(a+8|0,4,0,0)|0|0,(c|0)!=0):0){a=c;while(1)if(!(da(a>>0|0,1,0,0)|0))break;else a=a+1|0;b=(b|1)+(a-c&1073741823)|0}return b+7&-8|0}function Tt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=da(a|0,4,0,0)|0|0;g=d+20|0;c=da(g|0,4,0,0)|0|0;if((c|0)>0){f=0;e=da(d+16|0,4,0,0)|0|0;while(1){d=da((da(e+12|0,4,0,0)|0|0)+16|0,4,0,0)|0|0;if(d){c=d;do{Ut(a,da(c+8|0,4,0,0)|0|0,b);c=da(c|0,4,0,0)|0|0}while((c|0)!=0);c=da(g|0,4,0,0)|0|0}f=f+1|0;if((f|0)>=(c|0))break;else e=e+16|0}}return}function Ut(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,k=0,l=0;d=da(b+8|0,4,0,0)|0|0;if(d){k=(c|0)==0;i=b+68|0;j=a+408|0;do{a:do if(!k){g=d+32|0;b=da(d+48|0,2,0,0)|0|0;if(b<<16>>16){f=da(d+4|0,4,0,0)|0|0;b=b&65535;e=0;do{if((da(f+(e<<1)|0,2,0,0)|0|0)>-1?(cd(da((da(g|0,4,0,0)|0|0)+(e<<2)|0,4,0,0)|0|0,c)|0)==0:0){l=9;break a}e=e+1|0}while((e|0)<(b|0))}}else l=9;while(0);if((l|0)==9){l=0;b=da(a|0,4,0,0)|0|0;e=da(i|0,4,0,0)|0|0;b:do if(e){h=da(b+20|0,4,0,0)|0|0;if((h|0)>0){f=da(b+16|0,4,0,0)|0|0;g=0;while(1){b=g+1|0;if((da(f+(g<<4)+12|0,4,0,0)|0|0)==(e|0)){b=g;break b}if((b|0)<(h|0))g=b;else break}}else b=0}else b=-1e6;while(0);h=da(j|0,4,0,0)|0|0;zr(a,b);h=((h|0)==0?a:h)+328|0;ea(h|0,da(h|0,4,0,0)|0|1<0){e=da(d+16|0,4,0,0)|0|0;d=0;while(1){f=d+1|0;if((da(e+(d<<4)+12|0,4,0,0)|0|0)==(g|0)){f=d;break a}if((f|0)<(h|0))d=f;else break}}else f=0}else f=-1e6;while(0);d=da(a+408|0,4,0,0)|0|0;zr(a,f);d=((d|0)==0?a:d)+328|0;ea(d|0,da(d|0,4,0,0)|0|1<>31)|0;a=c+-1|0;if(e){if((a|0)>0){d=0;do{f=da(b+d>>0|0,1,0,0)|0|0;g=da(b+(d|1)>>0|0,1,0,0)|0|0;ea(e+((d|0)/2|0)>>0|0,(0-(g>>>6&1)&9)+g&15|(0-(f>>>6&1)&9)+f<<4|0,1,0);d=d+2|0}while((d|0)<(a|0));a=(c&-2|0)/2|0}else a=0;ea(e+a>>0|0,0|0,1,0)}return e|0}function Yt(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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();f=k+8|0;h=k;g=da(a+8|0,4,0,0)|0|0;e=b+8|0;do if(!((da(b+4|0,4,0,0)|0)&1024)){e=da(e|0,4,0,0)|0|0;b=ii(e,h)|0;if((b|0)!=0?!((b|0)==2&(c|0)!=0):0)if(!(Ec(e,29144,2)|0)){ea(f|0,e|0,4,0);sh(a,29152,f);break}else{Zt(g,e,c,d);break}if(c){if((b|0)==2){b=0;e=-2147483648}else{b=h;b=cw(0,0,da(b|0,4,0,0)|0|0,da(b+4|0,4,0,0)|0|0)|0;e=C}c=h;ea(c|0,b|0,4,0);ea(c+4|0,e|0,4,0)}b=lh(da(g|0,4,0,0)|0|0,8,0)|0;if(b){e=h;a=da(e|0,4,0,0)|0|0;e=da(e+4|0,4,0,0)|0|0;c=b;f=c;ea(f>>0|0,a|0,1,0);ea(f+1>>0|0,a>>8|0,1,0);ea(f+2>>0|0,a>>16|0,1,0);ea(f+3>>0|0,a>>24|0,1,0);c=c+4|0;ea(c>>0|0,e|0,1,0);ea(c+1>>0|0,e>>8|0,1,0);ea(c+2>>0|0,e>>16|0,1,0);ea(c+3>>0|0,e>>24|0,1,0)}wh(g,vh(g,26,0,d,0)|0,b,-13)}else{b=da(e|0,4,0,0)|0|0;vh(g,25,(c|0)==0?b:0-b|0,d,0)|0}while(0);i=k;return}function Zt(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;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;if(b){e=b;while(1)if(!(da(e>>0|0,1,0,0)|0))break;else e=e+1|0;Sl(b,f,e-b&1073741823,1)|0;if(c)ea(f|0,+-+(+da(f|0,8,1,0)),8,1);e=lh(da(a|0,4,0,0)|0|0,8,0)|0;if(e){c=f;f=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;b=e;h=b;ea(h>>0|0,f|0,1,0);ea(h+1>>0|0,f>>8|0,1,0);ea(h+2>>0|0,f>>16|0,1,0);ea(h+3>>0|0,f>>24|0,1,0);b=b+4|0;ea(b>>0|0,c|0,1,0);ea(b+1>>0|0,c>>8|0,1,0);ea(b+2>>0|0,c>>16|0,1,0);ea(b+3>>0|0,c>>24|0,1,0)}wh(a,vh(a,133,0,d,0)|0,e,-12)}i=g;return}function _t(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+32|0;if((i|0)>=(j|0))ba();e=k;a:do if(!b)g=0;else while(1){d=da(b+4|0,4,0,0)|0|0;if(!(d&4096)){g=b;break a}if(!(d&262144))b=b+12|0;else b=da((da(b+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;b=da(b|0,4,0,0)|0|0;if(!b){g=0;break}}while(0);b:do if(((da(a+23>>0|0,1,0,0)|0|0)!=0?(da(g>>0|0,1,0,0)|0|0)!=-97:0)?(ea(e+0|0,0|0,4,0),ea(e+4|0,0|0,4,0),ea(e+8|0,0|0,4,0),ea(e+12|0,0|0,4,0),ea(e+16|0,0|0,4,0),ea(e+20|0,0|0,4,0),d=e+20|0,ea(d>>0|0,2|0,1,0),ea(e|0,78|0,4,0),ea(e+4|0,79|0,4,0),ea(e+24|0,0|0,4,0),qs(e,g)|0,(da(d>>0|0,1,0,0)|0|0)!=0):0){d=da(a+316|0,4,0,0)|0|0;ea(c|0,0|0,4,0);c:do if((d|0)!=0?(f=da(d|0,4,0,0)|0|0,(f|0)>0):0){b=f;d=da(d+4|0,4,0,0)|0|0;while(1){if(((da(d+13>>0|0,1,0,0)|0)&4)!=0?(Bu(da(d|0,4,0,0)|0|0,g,-1)|0)==0:0)break;b=b+-1|0;if((b|0)<=0)break c;else d=d+20|0}d=da(d+16|0,4,0,0)|0|0;break b}while(0);b=a+72|0;d=(da(b|0,4,0,0)|0|0)+1|0;ea(b|0,d|0,4,0);Ft(a,g,d,1)}else h=18;while(0);do if((h|0)==18){b=a+19|0;d=da(b>>0|0,1,0,0)|0|0;if(!(d<<24>>24)){b=a+72|0;d=(da(b|0,4,0,0)|0|0)+1|0;ea(b|0,d|0,4,0)}else{d=d+-1<<24>>24;ea(b>>0|0,d|0,1,0);d=da(a+((d&255)<<2)+24|0,4,0,0)|0|0}b=hs(a,g,d)|0;if((b|0)==(d|0)){ea(c|0,d|0,4,0);break}else{Zr(a,d);ea(c|0,0|0,4,0);d=b;break}}while(0);i=k;return d|0}function $t(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;j=Nu(a,b,c)|0;i=Au(b,jv(c)|0)|0;c=a+8|0;b=da(c|0,4,0,0)|0|0;wh(b,vh(b,d,f,g,e)|0,j,-4);c=da(c|0,4,0,0)|0|0;b=da(c+4|0,4,0,0)|0|0;if(b)ea(b+(((da(c+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,i&255|h|0,1,0);return}function au(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+100|0;ea(b|0,(da(b|0,4,0,0)|0|0)+-1|0,4,0);e=a+19|0;h=0;i=a+116|0;while(1){f=i+12|0;g=da(f|0,4,0,0)|0|0;if((g|0)!=0?(da(i+8|0,4,0,0)|0|0)>(da(b|0,4,0,0)|0|0):0){c=i+6|0;if(da(c>>0|0,1,0,0)|0){d=da(e>>0|0,1,0,0)|0|0;if((d&255)<8){ea(e>>0|0,d+1<<24>>24|0,1,0);ea(a+((d&255)<<2)+24|0,g|0,4,0)}ea(c>>0|0,0|0,1,0)}ea(f|0,0|0,4,0)}h=h+1|0;if((h|0)==10)break;else i=i+20|0}return}function bu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=da(a|0,4,0,0)|0|0;a:do if(b){b:while(1){d=da(b+4|0,4,0,0)|0|0;if(d&512){b=0;h=21;break a}switch(da(b>>0|0,1,0,0)|0|0){case 62:case -102:case -100:{h=8;break}case -97:{if((da(b+38>>0|0,1,0,0)|0|0)==95){h=7;break b}else h=8;break}case 95:{h=7;break b}case 38:case -98:{b=da(b+12|0,4,0,0)|0|0;break}default:h=11}if((h|0)==8){c=da(b+44|0,4,0,0)|0|0;if(!c)h=11;else{h=9;break}}c:do if((h|0)==11){h=0;if(!(d&256)){b=0;h=21;break a}c=da(b+12|0,4,0,0)|0|0;if((c|0)!=0?((da(c+4|0,4,0,0)|0)&256|0)!=0:0){b=c;continue b}e=da(b+16|0,4,0,0)|0|0;c=da(b+20|0,4,0,0)|0|0;if((c|0)!=0&(d&2048|0)==0?(f=da(c|0,4,0,0)|0|0,(f|0)>0):0){c=da(c+4|0,4,0,0)|0|0;d=0;while(1){b=da(c+(d*20|0)|0,4,0,0)|0|0;d=d+1|0;if((da(b+4|0,4,0,0)|0)&256)break c;if((d|0)>=(f|0)){b=e;break}}}else b=e}while(0);if(!b){b=0;h=21;break a}}if((h|0)==7)b=vs(a,da(g+62>>0|0,1,0,0)|0|0,0,da(b+8|0,4,0,0)|0|0)|0;else if((h|0)==9){b=da(b+32|0,2,0,0)|0|0;if(b<<16>>16<=-1){b=0;h=21;break}b=Xn(g,da(g+62>>0|0,1,0,0)|0|0,da((da(c+4|0,4,0,0)|0|0)+((b<<16>>16)*24|0)+16|0,4,0,0)|0|0,0)|0}if(b)if(!(vs(a,da((da(a|0,4,0,0)|0|0)+62>>0|0,1,0,0)|0|0,b,da(b|0,4,0,0)|0|0)|0))b=0;else h=21;else{b=0;h=21}}else{b=0;h=21}while(0);return b|0}function cu(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,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n+4|0;l=n;ea(m|0,0|0,4,0);ea(l|0,0|0,4,0);if((((d|0)!=0?(da(d>>0|0,1,0,0)|0|0)==-102:0)?(g=da(d+44|0,4,0,0)|0|0,(g|0)!=0):0)?((da(g+44>>0|0,1,0,0)|0)&16)!=0:0){d=g+60|0;while(1){d=da(d|0,4,0,0)|0|0;if((da(d|0,4,0,0)|0|0)==(a|0))break;else d=d+24|0}f=da(d+8|0,4,0,0)|0|0;e=(da(f|0,4,0,0)|0|0)+72|0;if((da(e|0,4,0,0)|0|0)!=0?(k=b+24|0,h=jh(a,da(k|0,4,0,0)|0|0)|0,(h|0)!=0):0){g=da(h>>0|0,1,0,0)|0|0;if(g<<24>>24){d=h;do{ea(d>>0|0,da(9328+(g&255)>>0|0,1,0,0)|0|0|0,1,0);d=d+1|0;g=da(d>>0|0,1,0,0)|0|0}while(g<<24>>24!=0)}c=sc[(fa(da(e|0,4,0,0)|0|0,31|0)|0)&31](f,c,h,m,l)|0;lg(a,h);if(c){d=da(k|0,4,0,0)|0|0;if(!d){d=37;f=0}else{f=d;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;d=(f-d&1073741823)+37|0;f=0}e=lh(a,d,f)|0;if(e){ew(e|0,0,d|0)|0;g=e+0|0;f=b+0|0;d=g+36|0;do{ea(g|0,da(f|0,4,0,0)|0|0,4,0);g=g+4|0;f=f+4|0}while((g|0)<(d|0));g=e+36|0;ea(e+24|0,g|0,4,0);d=da(k|0,4,0,0)|0|0;if(!d)f=1;else{f=d;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;f=(f-d&1073741823)+1|0}jw(g|0,d|0,f|0)|0;ea(e+12|0,da(m|0,4,0,0)|0|0,4,0);ea(e+4|0,da(l|0,4,0,0)|0|0,4,0);l=e+2|0;ea(l|0,da(l|0,2,0,1)|0|16|0,2,0)}else e=b}else e=b}else e=b}else e=b;i=n;return e|0}function du(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,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;y=i;i=i+80|0;if((i|0)>=(j|0))ba();w=y;u=y+72|0;m=y+52|0;v=y+48|0;l=y+28|0;x=Nq(a)|0;a:do if(!x)e=0;else{e=a+100|0;ea(e|0,(da(e|0,4,0,0)|0|0)+1|0,4,0);e=b+4|0;if(!((da(e|0,4,0,0)|0)&32)){t=Nq(a)|0;s=a+80|0;f=da(s|0,4,0,0)|0|0;ea(s|0,f+1|0,4,0);f=vh(t,44,f,0,0)|0}else f=-1;if((da(a+450>>0|0,1,0,0)|0|0)==2){h=da(a|0,4,0,0)|0|0;s=(da(b>>0|0,1,0,0)|0|0)==75?29104:29112;t=da(a+468|0,4,0,0)|0|0;ea(w|0,((f|0)>-1?10360:29088)|0,4,0);ea(w+4|0,s|0,4,0);ea(w+8|0,t|0,4,0);h=th(h,29056,w)|0;wh(x,vh(x,157,da(a+464|0,4,0,0)|0|0,0,0)|0,h,-1);h=b}else h=b;k=da(h>>0|0,1,0,0)|0|0;b:do if(k<<24>>24==75){l=b+12|0;g=jv(da(l|0,4,0,0)|0|0)|0;ea(u>>0|0,g|0,1,0);r=a+68|0;s=da(r|0,4,0,0)|0|0;ea(r|0,s+1|0,4,0);r=b+28|0;ea(r|0,s|0,4,0);q=(d|0)!=0;s=vh(x,57,s,q&1^1,0)|0;if(q)t=0;else t=Qs(da(a|0,4,0,0)|0|0,1,1)|0;k=b+20|0;do if(!((da(e|0,4,0,0)|0)&2048)){p=da(k|0,4,0,0)|0|0;if(p){if(!(g<<24>>24))ea(u>>0|0,65|0,1,0);if(t)ea(t+20|0,bu(a,da(l|0,4,0,0)|0|0)|0|0,4,0);d=a+19|0;g=da(d>>0|0,1,0,0)|0|0;if(g<<24>>24){e=g+-1<<24>>24;ea(d>>0|0,e|0,1,0);h=da(a+((e&255)<<2)+24|0,4,0,0)|0|0;if(!(e<<24>>24))n=24;else{o=g+-2<<24>>24;ea(d>>0|0,o|0,1,0);o=da(a+((o&255)<<2)+24|0,4,0,0)|0|0}}else{n=a+72|0;h=(da(n|0,4,0,0)|0|0)+1|0;ea(n|0,h|0,4,0);n=24}if((n|0)==24){e=a+72|0;o=(da(e|0,4,0,0)|0|0)+1|0;ea(e|0,o|0,4,0)}if(q)vh(x,28,0,o,0)|0;k=da(p|0,4,0,0)|0|0;if((k|0)>0){g=w+20|0;e=w+4|0;n=w+24|0;m=x+32|0;d=da(p+4|0,4,0,0)|0|0;while(1){l=da(d|0,4,0,0)|0|0;do if((f|0)>-1){ea(w+0|0,0|0,4,0);ea(w+4|0,0|0,4,0);ea(w+8|0,0|0,4,0);ea(w+12|0,0|0,4,0);ea(w+16|0,0|0,4,0);ea(w+20|0,0|0,4,0);ea(g>>0|0,1|0,1,0);ea(w|0,78|0,4,0);ea(e|0,79|0,4,0);ea(n|0,0|0,4,0);qs(w,l)|0;if(da(g>>0|0,1,0,0)|0)break;yh(x,f);f=-1}while(0);do if(q)if(!(Ls(l,v)|0)){p=hs(a,l,h)|0;vh(x,38,p,(da(m|0,4,0,0)|0|0)+2|0,0)|0;vh(x,75,da(r|0,4,0,0)|0|0,o,p)|0;break}else{vh(x,84,da(r|0,4,0,0)|0|0,o,da(v|0,4,0,0)|0|0)|0;break}else{p=hs(a,l,h)|0;wh(x,vh(x,49,p,1,o)|0,u,1);ct(a,p,1);vh(x,110,da(r|0,4,0,0)|0|0,o,0)|0}while(0);k=k+-1|0;if((k|0)<=0)break;else d=d+20|0}}Zr(a,h);Zr(a,o)}if(!t){g=f;e=0;break b}}else{h=da(k|0,4,0,0)|0|0;w=da(r|0,4,0,0)|0|0;ea(m>>0|0,11|0,1,0);ea(m+4|0,w|0,4,0);ea(m+8|0,0|0,4,0);ea(m+12|0,0|0,4,0);ea(m+1>>0|0,g|0,1,0);ea(h+8|0,0|0,4,0);if(!(hr(a,h,m)|0)){ea(t+20|0,Nu(a,da(l|0,4,0,0)|0|0,da(da((da(h|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0)|0|0,4,0);break}if(!t){e=0;break a}a=(da(t|0,4,0,0)|0|0)+-1|0;ea(t|0,a|0,4,0);if(a){e=0;break a}Vc(t);e=0;break a}while(0);wh(x,s,t,-6);g=f;e=0}else{g=da(b+20|0,4,0,0)|0|0;h=a+72|0;e=(da(h|0,4,0,0)|0|0)+1|0;ea(h|0,e|0,4,0);ea(l>>0|0,0|0,1,0);h=l+4|0;ea(h|0,e|0,4,0);ea(l+1>>0|0,0|0,1,0);d=l+8|0;ea(d|0,0|0,4,0);ea(l+12|0,0|0,4,0);if(k<<24>>24==119){ea(l>>0|0,10|0,1,0);ea(d|0,e|0,4,0);vh(x,28,0,e,0)|0}else{ea(l>>0|0,3|0,1,0);vh(x,25,0,e,0)|0}w=g+60|0;Fk(da(a|0,4,0,0)|0|0,da(w|0,4,0,0)|0|0);ea(w|0,Yq(a,132,0,0,20624)|0|0,4,0);ea(g+8|0,0|0,4,0);if(hr(a,g,l)|0){e=0;break a}g=f;e=da(h|0,4,0,0)|0|0}while(0);if(c)kv(x,da(b+28|0,4,0,0)|0|0,c);if((g|0)>-1){f=da(x+32|0,4,0,0)|0|0;if(f>>>0>g>>>0)ea((da(x+4|0,4,0,0)|0|0)+(g*20|0)+8|0,f|0,4,0);ea((da(x+24|0,4,0,0)|0|0)+88|0,f+-1|0,4,0)}au(a)}while(0);i=y;return e|0}function eu(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();h=v+4|0;s=v+8|0;q=v;ea(h|0,0|0,4,0);u=da(a+8|0,4,0,0)|0|0;e=(c|0)==(d|0);g=lv(a,b,3,e?0:h)|0;ea(s>>0|0,mv(b)|0|0,1,0);k=a+100|0;ea(k|0,(da(k|0,4,0,0)|0|0)+1|0,4,0);k=a+19|0;f=da(k>>0|0,1,0,0)|0|0;if(!(f<<24>>24)){o=a+72|0;t=(da(o|0,4,0,0)|0|0)+1|0;ea(o|0,t|0,4,0)}else{t=f+-1<<24>>24;ea(k>>0|0,t|0,1,0);t=da(a+((t&255)<<2)+24|0,4,0,0)|0|0}f=b+12|0;Qq(a,da(f|0,4,0,0)|0|0,t);do if((g|0)==5){o=da(b+20|0,4,0,0)|0|0;m=bu(a,da(f|0,4,0,0)|0|0)|0;p=ws(u)|0;n=(d|0)!=(c|0);if(n){f=da(k>>0|0,1,0,0)|0|0;if(!(f<<24>>24)){l=a+72|0;f=(da(l|0,4,0,0)|0|0)+1|0;ea(l|0,f|0,4,0)}else{f=f+-1<<24>>24;ea(k>>0|0,f|0,1,0);f=da(a+((f&255)<<2)+24|0,4,0,0)|0|0}vh(u,85,t,t,f)|0;l=f}else l=0;if((da(o|0,4,0,0)|0|0)>0){k=o+4|0;h=(l|0)==0;g=u+4|0;f=u+32|0;e=0;do{b=_t(a,da((da(k|0,4,0,0)|0|0)+(e*20|0)|0,4,0,0)|0|0,q)|0;if(!h?(Tu(da((da(k|0,4,0,0)|0|0)+(e*20|0)|0,4,0,0)|0|0)|0)!=0:0)vh(u,85,l,b,l)|0;if((e|0)<((da(o|0,4,0,0)|0|0)+-1|0)|n){wh(u,vh(u,79,t,p,b)|0,m,-4);b=da(g|0,4,0,0)|0|0;if(b)ea(b+(((da(f|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,da(s>>0|0,1,0,0)|0|0|0,1,0)}else{wh(u,vh(u,78,t,c,b)|0,m,-4);b=da(g|0,4,0,0)|0|0;if(b)ea(b+(((da(f|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,da(s>>0|0,1,0,1)|0|0|16|0,1,0)}Zr(a,da(q|0,4,0,0)|0|0);e=e+1|0}while((e|0)<(da(o|0,4,0,0)|0|0))}if(l){vh(u,76,l,d,0)|0;vh(u,16,0,c,0)|0}f=da(u+24|0,4,0,0)|0|0;e=~p;if((p|0)<0?(r=da(f+112|0,4,0,0)|0|0,(r|0)!=0):0)ea(r+(e<<2)|0,da(u+32|0,4,0,0)|0|0,4,0);ea(f+88|0,(da(u+32|0,4,0,0)|0|0)+-1|0,4,0);Zr(a,l)}else{do if(Tu(da(f|0,4,0,0)|0|0)|0){if(e){vh(u,76,t,c,0)|0;break}f=vh(u,77,t,0,0)|0;vh(u,108,da(b+28|0,4,0,0)|0|0,c,0)|0;vh(u,16,0,d,0)|0;e=da(u+32|0,4,0,0)|0|0;if(e>>>0>f>>>0)ea((da(u+4|0,4,0,0)|0|0)+(f*20|0)+8|0,e|0,4,0);ea((da(u+24|0,4,0,0)|0|0)+88|0,e+-1|0,4,0)}while(0);if((g|0)==1){vh(u,38,t,c,0)|0;vh(u,70,da(b+28|0,4,0,0)|0|0,c,t)|0;break}wh(u,vh(u,48,t,1,0)|0,s,1);e=da(b+28|0,4,0,0)|0|0;if(!(da(h|0,4,0,0)|0)){wh(u,vh(u,68,e,c,t)|0,1,-14);break}f=vh(u,69,e,0,t)|0;wh(u,f,1,-14);vh(u,76,da(h|0,4,0,0)|0|0,d,0)|0;vh(u,16,0,c,0)|0;e=da(u+32|0,4,0,0)|0|0;if(e>>>0>f>>>0)ea((da(u+4|0,4,0,0)|0|0)+(f*20|0)+8|0,e|0,4,0);ea((da(u+24|0,4,0,0)|0|0)+88|0,e+-1|0,4,0)}while(0);Zr(a,t);au(a);i=v;return}function fu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.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;w=i;i=i+48|0;if((i|0)>=(j|0))ba();v=w;t=w+28|0;c=da(a+24|0,4,0,0)|0|0;u=da(c|0,4,0,0)|0|0;r=b+4|0;f=da(r|0,4,0,0)|0|0;a:do if(!(f&4)){ea(r|0,f|4|0,4,0);switch(da(b>>0|0,1,0,1)|0|0){case 135:{d=c+28|0;c=da(d|0,2,0,0)|0|0;if(c&4){ea(v|0,27456|0,4,0);sh(u,27472,v);c=da(d|0,2,0,0)|0|0}if(c&16){ea(v|0,27456|0,4,0);sh(u,27512,v)}break}case 153:{q=b+20|0;n=da(q|0,4,0,0)|0|0;if(!n)e=0;else e=da(n|0,4,0,0)|0|0;f=da((da(u|0,4,0,0)|0|0)+62>>0|0,1,0,0)|0|0;s=c+28|0;if((da(s|0,2,0,0)|0)&16){ea(v|0,27200|0,4,0);sh(u,27512,v)}o=da(b+8|0,4,0,0)|0|0;if(!o)l=0;else{g=o;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;l=g-o&1073741823}d=Rh(da(u|0,4,0,0)|0|0,o,l,e,f,0)|0;do if(!d){if(Rh(da(u|0,4,0,0)|0|0,o,l,-2,f,0)|0){ea(v|0,l|0,4,0);ea(v+4|0,o|0,4,0);sh(u,27392,v);o=c+24|0;ea(o|0,(da(o|0,4,0,0)|0|0)+1|0,4,0);break}if(!(da((da(u|0,4,0,0)|0|0)+145>>0|0,1,0,0)|0)){ea(v|0,l|0,4,0);ea(v+4|0,o|0,4,0);sh(u,27368,v);o=c+24|0;ea(o|0,(da(o|0,4,0,0)|0|0)+1|0,4,0)}}else{k=(da(d+12|0,4,0,0)|0|0)==0;p=d+2|0;do if((da(p|0,2,0,0)|0)&1024){ea(r|0,da(r|0,4,0,0)|0|266240|0,4,0);if((e|0)!=2){ea(b+28|0,((da((da(d+24|0,4,0,0)|0)>>0|0,1,0,0)|0|0)==117?8388608:125829120)|0,4,0);break}g=da((da(n+4|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;ea(v|0,+(-1.0),8,1);if((da(g>>0|0,1,0,0)|0|0)==-123){f=da(g+8|0,4,0,0)|0|0;if(!f)g=0;else{g=f;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;g=g-f&1073741823}Sl(f,v,g,1)|0;h=+(+da(v|0,8,1,0));if(!(h>1.0)){g=~~(h*134217728.0);ea(b+28|0,g|0,4,0);if((g|0)>=0)break}else m=22}else m=22;if((m|0)==22)ea(b+28|0,-1|0,4,0);sh(u,27216,v);m=c+24|0;ea(m|0,(da(m|0,4,0,0)|0|0)+1|0,4,0)}while(0);g=d+24|0;f=Rq(u,31,0,da(g|0,4,0,0)|0|0,0)|0;if(!f){if((da(p|0,2,0,0)|0)&2048)ea(r|0,da(r|0,4,0,0)|0|524288|0,4,0);if(!k)break;g=da(s|0,2,0,0)|0|0;if(!(g&1)){ea(v|0,l|0,4,0);ea(v+4|0,o|0,4,0);sh(u,27328,v);o=c+24|0;ea(o|0,(da(o|0,4,0,0)|0|0)+1|0,4,0);break}ea(s|0,g&65534|0,2,0);ku(a,n)|0;ea(b>>0|0,-101|0,1,0);f=b+38|0;ea(f>>0|0,0|0,1,0);b:do if(c){e=v+24|0;d=t+4|0;g=t+8|0;while(1){o=da(c+4|0,4,0,0)|0|0;ea(v+0|0,0|0,4,0);ea(v+4|0,0|0,4,0);ea(v+8|0,0|0,4,0);ea(v+12|0,0|0,4,0);ea(v+16|0,0|0,4,0);ea(v+20|0,0|0,4,0);ea(v|0,87|0,4,0);ea(e|0,t|0,4,0);ea(t|0,o|0,4,0);ea(d|0,0|0,4,0);ea(g|0,0|0,4,0);ku(v,da(q|0,4,0,0)|0|0)|0;if((da(d|0,4,0,0)|0|0)>0)break;if(!(da(g|0,4,0,0)|0))break;ea(f>>0|0,(da(f>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0);c=da(c+16|0,4,0,0)|0|0;if(!c)break b}o=c+28|0;ea(o|0,(da(p|0,2,0,1)|0)&4096|(da(o|0,2,0,1)|0)|2|0,2,0)}while(0);ea(s|0,da(s|0,2,0,1)|0|1|0,2,0);c=1;break a}else if((f|0)==1){ea(v|0,da(g|0,4,0,0)|0|0,4,0);sh(u,27288,v);o=c+24|0;ea(o|0,(da(o|0,4,0,0)|0|0)+1|0,4,0)}ea(b>>0|0,101|0,1,0);c=1;break a}while(0);ku(a,n)|0;c=1;break a}case 27:{c=nv(u,0,0,da(b+8|0,4,0,0)|0|0,c,b)|0;break a}case 122:{d=da(b+16|0,4,0,0)|0|0;if((da(d>>0|0,1,0,0)|0|0)==27){f=d;d=b;e=0}else{f=da(d+16|0,4,0,0)|0|0;e=da((da(b+12|0,4,0,0)|0|0)+8|0,4,0,0)|0|0}c=nv(u,e,da((da(d+12|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,da(f+8|0,4,0,0)|0|0,c,b)|0;break a}case 75:case 20:case 119:{if(f&2048){g=c+20|0;d=da(g|0,4,0,0)|0|0;e=c+28|0;f=da(e|0,2,0,0)|0|0;if(f&4){ea(v|0,27440|0,4,0);sh(u,27472,v);f=da(e|0,2,0,0)|0|0}if(f&16){ea(v|0,27440|0,4,0);sh(u,27512,v)}ju(a,da(b+20|0,4,0,0)|0|0)|0;if((d|0)!=(da(g|0,4,0,0)|0|0))ea(r|0,da(r|0,4,0,0)|0|32|0,4,0)}break}default:{}}if(!(da(u+64|0,4,0,0)|0))c=(da((da(u|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)!=0?2:0;else c=2}else c=1;while(0);i=w;return c|0}function gu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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;I=i;i=i+80|0;if((i|0)>=(j|0))ba();H=I;F=I+64|0;A=I+32|0;g=da(b+6|0,2,0,0)|0|0;d=g&65535;a:do if(!(d&2)){z=da(a+24|0,4,0,0)|0|0;G=da(a+12|0,4,0,0)|0|0;a=da(G|0,4,0,0)|0|0;if(!(d&16)){Cs(G,b,z);if(da(G+64|0,4,0,0)|0){c=2;break}c=(da(a+65>>0|0,1,0,0)|0|0)!=0?2:1;break}B=b+52|0;c=(da(B|0,4,0,0)|0|0)!=0;C=(b|0)==0;b:do if(!C){d=A+28|0;k=A+4|0;w=A+16|0;x=A+8|0;s=a+65|0;r=G+492|0;q=(z|0)==0;p=H+4|0;o=H+12|0;n=H+24|0;m=G+64|0;t=b;c:while(1){u=t+6|0;ea(u|0,g&65535|2|0,2,0);ea(A+0|0,0|0,4,0);ea(A+4|0,0|0,4,0);ea(A+8|0,0|0,4,0);ea(A+12|0,0|0,4,0);ea(A+16|0,0|0,4,0);ea(A+20|0,0|0,4,0);ea(A+24|0,0|0,4,0);ea(A+28|0,0|0,4,0);ea(A|0,G|0,4,0);if(ks(A,da(t+60|0,4,0,0)|0|0)|0){c=2;break a}if(ks(A,da(t+64|0,4,0,0)|0|0)|0){c=2;break a}g=da(t+32|0,4,0,0)|0|0;if((da(u|0,2,0,0)|0)&8192){v=t+48|0;ea((da(g+28|0,4,0,0)|0|0)+48|0,da(v|0,4,0,0)|0|0,4,0);ea(v|0,0|0,4,0)}v=t+32|0;if((da(g|0,4,0,0)|0|0)>0){l=0;do{e=da(g+(l*72|0)+28|0,4,0,0)|0|0;if(e){a=da(r|0,4,0,0)|0|0;if(q)h=0;else{h=0;f=z;do{h=(da(f+20|0,4,0,0)|0|0)+h|0;f=da(f+16|0,4,0,0)|0|0}while((f|0)!=0)}f=da(g+(l*72|0)+16|0,4,0,0)|0|0;if(f)ea(r|0,f|0,4,0);ea(H+0|0,0|0,4,0);ea(H+4|0,0|0,4,0);ea(H+8|0,0|0,4,0);ea(H+12|0,0|0,4,0);ea(H+16|0,0|0,4,0);ea(H+20|0,0|0,4,0);ea(H|0,82|0,4,0);ea(p|0,83|0,4,0);ea(o|0,G|0,4,0);ea(n|0,z|0,4,0);ju(H,e)|0;ea(r|0,a|0,4,0);if(da(m|0,4,0,0)|0){c=2;break a}if(da(s>>0|0,1,0,0)|0){c=2;break a}if(!q){f=z;do{h=h-(da(f+20|0,4,0,0)|0|0)|0;f=da(f+16|0,4,0,0)|0|0}while((f|0)!=0)}g=g+(l*72|0)+45|0;ea(g>>0|0,(da(g>>0|0,1,0,0)|0)&-3|((h|0)!=0&1)<<1&255|0,1,0);g=da(v|0,4,0,0)|0|0}l=l+1|0}while((l|0)<(da(g|0,4,0,0)|0|0))}ea(d|0,1|0,2,0);ea(k|0,g|0,4,0);ea(w|0,z|0,4,0);h=da(t|0,4,0,0)|0|0;if((da(h|0,4,0,0)|0|0)>0){g=h+4|0;f=0;do{if(ks(A,da((da(g|0,4,0,0)|0|0)+(f*20|0)|0,4,0,0)|0|0)|0){c=2;break a}f=f+1|0}while((f|0)<(da(h|0,4,0,0)|0|0))}e=da(t+40|0,4,0,0)|0|0;g=(e|0)!=0;h=da(d|0,2,0,0)|0|0;if(!g?(y=h&65535,(y&2|0)==0):0)ea(d|0,y&65534|0,2,0);else ea(u|0,h&4096|(da(u|0,2,0,1)|0)|4|0,2,0);h=da(t+44|0,4,0,0)|0|0;if(!((h|0)==0|g)){D=32;break}ea(x|0,da(t|0,4,0,0)|0|0,4,0);if(ks(A,h)|0){c=2;break a}if(ks(A,da(t+36|0,4,0,0)|0|0)|0){c=2;break a}ea(w|0,0|0,4,0);ea(d|0,da(d|0,2,0,1)|0|1|0,2,0);if((da(u|0,2,0,0)|0)&8192){v=(da((da(v|0,4,0,0)|0|0)+28|0,4,0,0)|0|0)+48|0;ea(t+48|0,da(v|0,4,0,0)|0|0,4,0);ea(v|0,0|0,4,0)}if(!c?(pv(A,t,da(t+48|0,4,0,0)|0|0,26880)|0)!=0:0){c=2;break a}if(da(s>>0|0,1,0,0)|0){c=2;break a}do if(g){if(pv(A,t,e,26888)|0){c=2;break a}if(da(s>>0|0,1,0,0)|0){c=2;break a}f=da(e|0,4,0,0)|0|0;if((f|0)<=0)break;h=0;g=da(e+4|0,4,0,0)|0|0;while(1){if((da((da(g|0,4,0,0)|0|0)+4|0,4,0,0)|0)&2){D=46;break c}h=h+1|0;if((h|0)>=(f|0))break;else g=g+20|0}}while(0);f=da(t+52|0,4,0,0)|0|0;if(!f)break b;t=f;g=da(f+6|0,2,0,0)|0|0}if((D|0)==32){sh(G,26832,H);c=2;break a}else if((D|0)==46){sh(G,26896,H);c=2;break a}}while(0);if(c?(E=da(b+48|0,4,0,0)|0|0,(E|0)!=0):0){y=da(G|0,4,0,0)|0|0;d=da(E|0,4,0,0)|0|0;if((d|0)>(da(y+96|0,4,0,0)|0|0)){sh(G,26960,H);c=2;break}if((d|0)>0){a=E+4|0;c=0;do{d=(da(a|0,4,0,0)|0|0)+(c*20|0)+13|0;ea(d>>0|0,(da(d>>0|0,1,0,0)|0)&-2|0,1,0);c=c+1|0;d=da(E|0,4,0,0)|0|0}while((c|0)<(d|0))}ea(b+56|0,0|0,4,0);c=da(B|0,4,0,0)|0|0;if(!c)if(C)a=E+4|0;else D=60;else while(1){ea(c+56|0,b|0,4,0);b=da(c+52|0,4,0,0)|0|0;if(!b){b=c;D=60;break}else{x=c;c=b;b=x}}d:do if((D|0)==60){a=E+4|0;q=y+65|0;r=H+4|0;s=H+8|0;t=H+28|0;u=H+24|0;v=H+4|0;p=b;e:while(1){o=da(p|0,4,0,0)|0|0;if((d|0)<=0)break d;m=p+32|0;c=0;l=0;n=da(a|0,4,0,0)|0|0;while(1){ea(F|0,-1|0,4,0);k=n+13|0;do if(!((da(k>>0|0,1,0,0)|0)&1)){d=da(n|0,4,0,0)|0|0;f:do if(!d)d=0;else while(1){b=da(d+4|0,4,0,0)|0|0;if(!(b&4096))break f;if(!(b&262144))d=d+12|0;else d=da((da(d+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;d=da(d|0,4,0,0)|0|0;if(!d){d=0;break}}while(0);if(!(Ls(d,F)|0)){b=qv(o,d)|0;ea(F|0,b|0,4,0);if(!b){h=Lr(y,d,0,0)|0;if(!(da(q>>0|0,1,0,0)|0)){e=da(p|0,4,0,0)|0|0;ea(H+0|0,0|0,4,0);ea(H+4|0,0|0,4,0);ea(H+8|0,0|0,4,0);ea(H+12|0,0|0,4,0);ea(H+16|0,0|0,4,0);ea(H+20|0,0|0,4,0);ea(H+24|0,0|0,4,0);ea(H+28|0,0|0,4,0);ea(H|0,G|0,4,0);ea(r|0,da(m|0,4,0,0)|0|0,4,0);ea(s|0,e|0,4,0);ea(t|0,1|0,2,0);ea(u|0,0|0,4,0);b=(da(G|0,4,0,0)|0|0)+68|0;w=da(b>>0|0,1,0,0)|0|0;ea(b>>0|0,1|0,1,0);x=ks(H,h)|0;ea(b>>0|0,w|0,1,0);g:do if(!x){g=e+4|0;f=da(e|0,4,0,0)|0|0;e=0;while(1){if((e|0)>=(f|0)){b=0;break g}b=e+1|0;if((Bu(da((da(g|0,4,0,0)|0|0)+(e*20|0)|0,4,0,0)|0|0,h,-1)|0)<2)break;else e=b}}else b=0;while(0);ea(F|0,b|0,4,0)}else b=0;Fk(y,h)}if((b|0)<=0){b=1;break}}else{e=da(F|0,4,0,0)|0|0;b=da(o|0,4,0,0)|0|0;if((e|0)<1|(e|0)>(b|0))break e;else b=e}ea(H|0,0|0,4,0);ea(v|0,0|0,4,0);e=mr(y,132,H,0)|0;if(!e){c=2;break a}f=e+4|0;ea(f|0,da(f|0,4,0,0)|0|1024|0,4,0);ea(e+8|0,b|0,4,0);f=da(n|0,4,0,0)|0|0;if((f|0)==(d|0))ea(n|0,e|0,4,0);else ea(f+12|0,e|0,4,0);Fk(y,d);ea(n+16|0,b|0,2,0);ea(k>>0|0,da(k>>0|0,1,0,0)|0|1|0,1,0);b=l}else b=l;while(0);c=c+1|0;d=da(E|0,4,0,0)|0|0;if((c|0)>=(d|0))break;else{l=b;n=n+20|0}}p=da(p+56|0,4,0,0)|0|0;if(!((p|0)!=0&(b|0)!=0))break d}ea(H|0,c+1|0,4,0);ea(H+4|0,26880|0,4,0);ea(H+8|0,b|0,4,0);sh(G,27064,H);c=2;break a}while(0);b=0;while(1){if((b|0)>=(d|0)){c=1;break a}c=b+1|0;if(!((da((da(a|0,4,0,0)|0|0)+(b*20|0)+13>>0|0,1,0,0)|0)&1))break;else b=c}ea(H|0,c|0,4,0);sh(G,27e3,H);c=2}else c=1}else c=1;while(0);i=I;return c|0}function hu(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();s=v;t=da(a|0,4,0,0)|0|0;a:do if(b){o=da(b|0,4,0,0)|0|0;a=o*24|0;e=lh(t,a,0)|0;if(e)ew(e|0,0,a|0)|0;ea(c|0,o|0,2,0);ea(d|0,e|0,4,0);if((o|0)>0){m=b+4|0;p=t+65|0;a=0;n=e;while(1){k=da(m|0,4,0,0)|0|0;b=da(k+(a*20|0)|0,4,0,0)|0|0;b:do if(!b)b=0;else while(1){f=da(b+4|0,4,0,0)|0|0;if(!(f&4096))break b;if(!(f&262144))b=b+12|0;else b=da((da(b+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;b=da(b|0,4,0,0)|0|0;if(!b){b=0;break}}while(0);f=da(k+(a*20|0)+4|0,4,0,0)|0|0;do if(!f){while(1){f=da(b>>0|0,1,0,0)|0|0;if(f<<24>>24==27){u=24;break}else if(f<<24>>24==-102){r=b;u=18;break}else if(f<<24>>24!=122)break;b=da(b+16|0,4,0,0)|0|0}if((u|0)==24){u=0;ea(s|0,da(b+8|0,4,0,0)|0|0,4,0);b=th(t,10344,s)|0;break}if((u|0)==18?(u=0,q=da(r+44|0,4,0,0)|0|0,(q|0)!=0):0){b=da(r+32|0,2,0,0)|0|0;if(b<<16>>16<0)b=da(q+36|0,2,0,0)|0|0;else b=b<<16>>16;if((b|0)>-1)b=da((da(q+4|0,4,0,0)|0|0)+(b*24|0)|0,4,0,0)|0|0;else b=20456;ea(s|0,b|0,4,0);b=th(t,10344,s)|0;break}ea(s|0,da(k+(a*20|0)+8|0,4,0,0)|0|0,4,0);b=th(t,10344,s)|0}else b=jh(t,f)|0;while(0);if(da(p>>0|0,1,0,0)|0)break;if(!b){h=0;b=0}else{f=b;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;h=f-b&1073741823}c:do if((a|0)>0){f=0;k=0;l=h;while(1){if(!(cd(da(e+(k*24|0)|0,4,0,0)|0|0,b)|0)){g=l;while(1){h=g+-1|0;if((h|0)<=1)break;if(((da(b+h>>0|0,1,0,1)|0|0)+-48|0)>>>0<10)g=h;else break}if((g|0)>0)g=(da(b+h>>0|0,1,0,0)|0|0)==58?h:l;else g=l;ea(b+g>>0|0,0|0,1,0);f=f+1|0;ea(s|0,b|0,4,0);ea(s+4|0,f|0,4,0);h=th(t,26824,s)|0;lg(t,b);if(!h){b=0;break c}else{k=-1;b=h}}else g=l;k=k+1|0;if((k|0)>=(a|0))break;else l=g}}while(0);ea(n|0,b|0,4,0);a=a+1|0;if((a|0)<(o|0))n=n+24|0;else{b=p;break a}}lg(t,b);b=p}else u=6}else{ea(c|0,0|0,2,0);ea(d|0,0|0,4,0);e=0;u=6}while(0);if((u|0)==6){b=t+65|0;a=0}if(da(b>>0|0,1,0,0)|0){if((a|0)>0){b=0;do{lg(t,da(e+(b*24|0)|0,4,0,0)|0|0);b=b+1|0}while((b|0)!=(a|0))}lg(t,e);ea(d|0,0|0,4,0);ea(c|0,0|0,2,0)}i=v;return}function iu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;if((i|0)>=(j|0))ba();m=n;l=da(a|0,4,0,0)|0|0;if(!(da(l+65>>0|0,1,0,0)|0)){ea(m+0|0,0|0,4,0);ea(m+4|0,0|0,4,0);ea(m+8|0,0|0,4,0);ea(m+12|0,0|0,4,0);ea(m+16|0,0|0,4,0);ea(m+20|0,0|0,4,0);ea(m+24|0,0|0,4,0);ea(m+28|0,0|0,4,0);ea(m+4|0,da(c+32|0,4,0,0)|0|0,4,0);g=da((da(c|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;f=b+38|0;if((da(f|0,2,0,0)|0|0)>0){c=0;d=0;h=0;k=da(b+4|0,4,0,0)|0|0;while(1){e=da(g+(h*20|0)|0,4,0,0)|0|0;o=k+22|0;ea(k+12|0,jh(l,xu(m,e,o)|0)|0|0,4,0);c=iw(da(o>>0|0,1,0,1)|0|0,0,c|0,d|0)|0;d=C;o=jv(e)|0;ea(k+21>>0|0,(o<<24>>24==0?65:o)|0,1,0);e=bu(a,e)|0;if(e)ea(k+16|0,jh(l,da(e|0,4,0,0)|0|0)|0|0,4,0);h=h+1|0;if((h|0)>=(da(f|0,2,0,0)|0|0))break;else k=k+24|0}d=hw(c|0,d|0,2)|0;c=C}else{d=0;c=0}ea(b+42|0,es(d,c)|0|0,2,0)}i=n;return}function ju(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;do if(!b)c=0;else{f=a+4|0;d=da(f|0,4,0,0)|0|0;if((d|0)==0?(da(a+8|0,4,0,0)|0|0)==0:0){c=0;break}i=a+16|0;ea(i|0,(da(i|0,4,0,0)|0|0)+1|0,4,0);g=a+8|0;a:while(1){if((d|0)!=0?(c=qc[(fa(d|0,127|0)|0)&127](a,b)|0,(c|0)!=0):0){j=24;break}if(ku(a,da(b|0,4,0,0)|0|0)|0){j=19;break}if(qs(a,da(b+36|0,4,0,0)|0|0)|0){j=19;break}if(ku(a,da(b+40|0,4,0,0)|0|0)|0){j=19;break}if(qs(a,da(b+44|0,4,0,0)|0|0)|0){j=19;break}if(ku(a,da(b+48|0,4,0,0)|0|0)|0){j=19;break}if(qs(a,da(b+60|0,4,0,0)|0|0)|0){j=19;break}if(qs(a,da(b+64|0,4,0,0)|0|0)|0){j=19;break}d=da(b+32|0,4,0,0)|0|0;if((d|0)!=0?(h=da(d|0,4,0,0)|0|0,(h|0)>0):0){e=h;d=d+8|0;while(1){if(ju(a,da(d+20|0,4,0,0)|0|0)|0){j=19;break a}e=e+-1|0;if((e|0)<=0)break;else d=d+72|0}}d=da(g|0,4,0,0)|0|0;if(d)ic[(fa(d|0,15|0)|0)&15](a,b);b=da(b+52|0,4,0,0)|0|0;if(!b){c=0;break}d=da(f|0,4,0,0)|0|0}if((j|0)==19){ea(i|0,(da(i|0,4,0,0)|0|0)+-1|0,4,0);c=2;break}else if((j|0)==24)c=c&2;ea(i|0,(da(i|0,4,0,0)|0|0)+-1|0,4,0)}while(0);return c|0}function ku(a,b){a=a|0;b=b|0;var c=0;a:do if((b|0)!=0?(c=da(b|0,4,0,0)|0|0,(c|0)>0):0){b=da(b+4|0,4,0,0)|0|0;while(1){if(qs(a,da(b|0,4,0,0)|0|0)|0){c=2;break a}c=c+-1|0;if((c|0)<=0){c=0;break}else b=b+20|0}}else c=0;while(0);return c|0}function lu(a){a=a|0;var b=0,c=0;c=i;i=i+16|0;if((i|0)>=(j|0))ba();b=c;ea(b|0,0|0,4,0);if(((da(a+4|0,4,0,0)|0)&1|0)==0?(Ls(a,b)|0)!=0:0)a=(da(b|0,4,0,0)|0|0)==0&1;else a=0;i=c;return a|0}function mu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;if((i|0)>=(j|0))ba();m=o;f=da(c+12|0,4,0,0)|0|0;ea(m+0|0,0|0,4,0);ea(m+4|0,0|0,4,0);ea(m+8|0,0|0,4,0);ea(m+12|0,0|0,4,0);ea(m+16|0,0|0,4,0);ea(m+20|0,200|0,4,0);ea(m+24>>0|0,1|0,1,0);ea(m+25>>0|0,0|0,1,0);ea(m|0,da(a|0,4,0,0)|0|0,4,0);k=c+46|0;if(da(k|0,2,0,0)|0){l=c+4|0;g=f+4|0;n=0;do{h=da((da(g|0,4,0,0)|0|0)+((da((da(l|0,4,0,0)|0|0)+(n<<1)|0,2,0,0)|0|0)*24|0)|0,4,0,0)|0|0;if(n)Rk(m,28920,2);e=da(f|0,4,0,0)|0|0;if(!e)d=0;else{d=e;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;d=d-e&1073741823}Rk(m,e,d);Rk(m,28928,1);if(!h)d=0;else{d=h;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;d=d-h&1073741823}Rk(m,h,d);n=n+1|0}while((n|0)<(da(k|0,2,0,1)|0|0))}d=sg(m)|0;ys(a,((da(c+51>>0|0,1,0,0)|0)&3)==2?1555:2067,b,d,-1,2);i=o;return}function nu(a,b){a=a|0;b=b|0;return 0}function ou(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n+8|0;k=n;l=b+52|0;a:do if((da(l|0,4,0,0)|0|0)!=0?(d=da(b+48|0,4,0,0)|0|0,!((d|0)==0|(b|0)==0)):0){c=b;while(1){h=da(c+4>>0|0,1,0,0)|0|0;if(!(h<<24>>24==119|h<<24>>24==116))break;c=da(c+52|0,4,0,0)|0|0;if(!c){c=0;break a}}e=da(d+4|0,4,0,0)|0|0;c=da(d|0,4,0,0)|0|0;while(1){d=c+-1|0;if((c|0)<=0){c=0;break a}if(!((da((da(e+(d*20|0)|0,4,0,0)|0|0)+4|0,4,0,0)|0)&256))c=d;else break}if((c|0)>=1){c=da(a+12|0,4,0,0)|0|0;f=da(c|0,4,0,0)|0|0;a=lh(f,72,0)|0;if(a){g=a+0|0;h=g+72|0;do{ea(g>>0|0,0|0,1,0);g=g+1|0}while((g|0)<(h|0));e=k;ea(e|0,0|0,4,0);ea(e+4|0,0|0,4,0);e=ir(c,0,0,0,k,a,0,0)|0;if(e){g=a+0|0;d=b+0|0;h=g+72|0;do{ea(g|0,da(d|0,4,0,0)|0|0,4,0);g=g+4|0;d=d+4|0}while((g|0)<(h|0));ea(b+32|0,e|0,4,0);ea(m|0,0|0,4,0);ea(m+4|0,0|0,4,0);ea(b|0,kr(c,0,mr(f,116,m,0)|0)|0|0,4,0);ea(b+4>>0|0,119|0,1,0);ea(b+36|0,0|0,4,0);ea(a+40|0,0|0,4,0);ea(a+44|0,0|0,4,0);ea(a+48|0,0|0,4,0);ea(l|0,0|0,4,0);ea(b+56|0,0|0,4,0);c=b+6|0;ea(c|0,(da(c|0,2,0,1)|0|0)&57279|8192|0,2,0);ea((da(a+52|0,4,0,0)|0|0)+56|0,a|0,4,0);ea(a+60|0,0|0,4,0);ea(a+64|0,0|0,4,0);c=0}else c=2}else c=2}else c=0}else c=0;while(0);i=n;return c|0}function pu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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,O=0,P=0,Q=0,R=0,S=0;S=i;i=i+32|0;if((i|0)>=(j|0))ba();R=S;O=S+16|0;B=a+12|0;Q=da(B|0,4,0,0)|0|0;P=da(Q|0,4,0,0)|0|0;M=b+6|0;g=da(M|0,2,0,1)|0|0;ea(M|0,g|16|0,2,0);N=P+65|0;a:do if(!(da(N>>0|0,1,0,0)|0)){A=b+32|0;K=da(A|0,4,0,0)|0|0;if((K|0)!=0&(g&16|0)==0){L=da(b|0,4,0,0)|0|0;if((da(a+8|0,4,0,0)|0|0)==9){g=b;while(1){f=da(g+56|0,4,0,0)|0|0;if(!f)break;else g=f}g=da(g+68|0,4,0,0)|0|0;if(g){x=Q+532|0;ea(g+4|0,da(x|0,4,0,0)|0|0,4,0);ea(x|0,g|0,4,0);ea(Q+449>>0|0,0|0,1,0)}}Bs(Q,K);J=K+8|0;g=da(K|0,4,0,0)|0|0;b:do if((g|0)>0){w=0;q=J;c:while(1){if(!((da(q+37>>0|0,1,0,0)|0)&8)){x=q+16|0;c=da(B|0,4,0,0)|0|0;if(da(x|0,4,0,0)|0){d=c;I=10;break}n=da(c|0,4,0,0)|0|0;f=c+532|0;h=da(f|0,4,0,0)|0|0;d:do if((da(q+4|0,4,0,0)|0|0)==0?(z=da(q+8|0,4,0,0)|0|0,!((z|0)==0|(h|0)==0)):0){e:while(1){k=da(h|0,4,0,0)|0|0;if((k|0)>0){e=0;do{g=h+(e<<4)+8|0;d=da(g|0,4,0,0)|0|0;if(!(cd(z,d)|0)){u=e;break e}e=e+1|0}while((e|0)<(k|0))}h=da(h+4|0,4,0,0)|0|0;if(!h){I=46;break d}}r=h+(u<<4)+20|0;k=da(r|0,4,0,0)|0|0;if(k){b=k;I=21;break c}t=lh(n,76,0)|0;if(!t){b=x;I=23;break c}l=t+0|0;k=l+76|0;do{ea(l>>0|0,0|0,1,0);l=l+1|0}while((l|0)<(k|0));ea(x|0,t|0,4,0);o=t+40|0;ea(o|0,1|0,2,0);ea(t|0,jh(n,da(g|0,4,0,0)|0|0)|0|0,4,0);ea(t+36|0,-1|0,2,0);ea(t+28|0,200|0,2,0);v=t+44|0;ea(v>>0|0,da(v>>0|0,1,0,1)|0|2|0,1,0);v=fr(n,da(h+(u<<4)+16|0,4,0,0)|0|0,0)|0;ea(q+20|0,v|0,4,0);if(da(n+65>>0|0,1,0,0)|0){b=2;break a}s=((da(v+4>>0|0,1,0,0)|0|0)+-115&255)<2;if(s?(p=da(v+32|0,4,0,0)|0|0,y=da(p|0,4,0,0)|0|0,(y|0)>0):0){k=v+6|0;l=y;n=0;do{do if(!(da(p+(n*72|0)+12|0,4,0,0)|0)){m=da(p+(n*72|0)+16|0,4,0,0)|0|0;if(!m)break;if(cd(m,da(g|0,4,0,0)|0|0)|0)break;ea(p+(n*72|0)+24|0,t|0,4,0);l=p+(n*72|0)+45|0;ea(l>>0|0,da(l>>0|0,1,0,0)|0|8|0,1,0);ea(o|0,(da(o|0,2,0,0)|0|0)+1<<16>>16|0,2,0);ea(k|0,da(k|0,2,0,1)|0|2048|0,2,0);l=da(p|0,4,0,0)|0|0}while(0);n=n+1|0}while((n|0)<(l|0))}if((da(o|0,2,0,1)|0|0)>2){b=g;I=34;break c}ea(r|0,28176|0,4,0);e=da(f|0,4,0,0)|0|0;ea(f|0,h|0,4,0);if(s)k=da(v+52|0,4,0,0)|0|0;else k=v;ju(a,k)|0;k=v;while(1){d=da(k+52|0,4,0,0)|0|0;if(!d)break;else k=d}d=da(k|0,4,0,0)|0|0;k=da(h+(u<<4)+12|0,4,0,0)|0|0;do if(k){if(!d)break;m=da(d|0,4,0,0)|0|0;d=da(k|0,4,0,0)|0|0;if((m|0)!=(d|0)){b=m;I=42;break c}}else k=d;while(0);hu(c,k,t+38|0,t+4|0);if(s){ea(r|0,(((da(v+6|0,2,0,0)|0)&2048)==0?28280:28240)|0,4,0);ju(a,v)|0}ea(r|0,0|0,4,0);ea(f|0,e|0,4,0);if(!(da(x|0,4,0,0)|0))I=46}else I=46;while(0);do if((I|0)==46){I=0;if(!(da(q+8|0,4,0,0)|0)){h=da(q+20|0,4,0,0)|0|0;if(ju(a,h)|0){b=2;break a}f=lh(P,76,0)|0;if(!f){b=x;I=49;break c}l=f+0|0;k=l+76|0;do{ea(l>>0|0,0|0,1,0);l=l+1|0}while((l|0)<(k|0));ea(x|0,f|0,4,0);ea(f+40|0,1|0,2,0);ea(R|0,f|0,4,0);ea(f|0,th(P,27760,R)|0|0,4,0);while(1){g=da(h+52|0,4,0,0)|0|0;if(!g)break;else h=g}hu(Q,da(h|0,4,0,0)|0|0,f+38|0,f+4|0);ea(f+36|0,-1|0,2,0);ea(f+28|0,200|0,2,0);x=f+44|0;ea(x>>0|0,da(x>>0|0,1,0,1)|0|2|0,1,0);break}c=Tr(Q,0,q)|0;ea(x|0,c|0,4,0);if(!c){b=2;break a}h=c+40|0;g=da(h|0,2,0,0)|0|0;if(g<<16>>16==-1){b=x;I=55;break c}ea(h|0,g+1<<16>>16|0,2,0);h=c+12|0;if((da(h|0,4,0,0)|0|0)==0?((da(c+44>>0|0,1,0,0)|0)&16)==0:0)break;if(gr(Q,c)|0){b=2;break a}x=fr(P,da(h|0,4,0,0)|0|0,0)|0;ea(q+20|0,x|0,4,0);ju(a,x)|0}while(0);if(Qt(Q,q)|0){b=2;break a}g=da(K|0,4,0,0)|0|0}w=w+1|0;if((w|0)>=(g|0))break b;else q=q+72|0}if((I|0)==10){while(1){c=da(b+56|0,4,0,0)|0|0;if(!c)break;else b=c}b=da(b+68|0,4,0,0)|0|0;if(!b){b=1;break a}ea(d+532|0,da(b+4|0,4,0,0)|0|0,4,0);b=1;break a}else if((I|0)==21){ea(R|0,d|0,4,0);sh(c,b,R);b=2;break a}else if((I|0)==23){ea(b|0,0|0,4,0);b=2;break a}else if((I|0)==34){ea(R|0,da(b|0,4,0,0)|0|0,4,0);sh(c,28128,R);b=2;break a}else if((I|0)==42){ea(R|0,da(g|0,4,0,0)|0|0,4,0);ea(R+4|0,b|0,4,0);ea(R+8|0,d|0,4,0);sh(c,28200,R);ea(f|0,e|0,4,0);b=2;break a}else if((I|0)==49){ea(b|0,0|0,4,0);b=2;break a}else if((I|0)==55){ea(R|0,da(c|0,4,0,0)|0|0,4,0);sh(Q,27776,R);ea(b|0,0|0,4,0);b=2;break a}}while(0);if(!(da(N>>0|0,1,0,0)|0)){q=da(A|0,4,0,0)|0|0;f:do if(((da(q|0,4,0,0)|0|0)+-1|0)>0){r=b+36|0;t=0;u=q+8|0;v=q+80|0;g:while(1){s=da(v+16|0,4,0,0)|0|0;if(!((da(u+16|0,4,0,0)|0|0)==0|(s|0)==0)){y=da(v+36>>0|0,1,0,1)|0|0;p=y&32;n=(p|0)==0;p=p>>>5;o=v+44|0;if(y&4){if(da(o|0,4,0,0)|0){I=73;break}g=v+48|0;if(da(g|0,4,0,0)|0){I=73;break}d=s+38|0;h=da(d|0,2,0,0)|0|0;if(h<<16>>16>0){c=s+4|0;m=t+1|0;l=0;do{f=da((da(c|0,4,0,0)|0|0)+(l*24|0)|0,4,0,0)|0|0;e=0;do{k=rv(da(q+(e*72|0)+24|0,4,0,0)|0|0,f)|0;if((k|0)>-1){h=e;I=77;break}e=e+1|0}while((e|0)<(m|0));if((I|0)==77){I=0;sv(Q,q,h,k,m,l,p,r);h=da(d|0,2,0,0)|0|0}l=l+1|0}while((l|0)<(h<<16>>16|0))}}else g=v+48|0;h=da(o|0,4,0,0)|0|0;if(h){if(da(g|0,4,0,0)|0){I=81;break}if(!n){tv(h,da(v+40|0,4,0,0)|0|0);h=da(o|0,4,0,0)|0|0}ea(r|0,rs(da(Q|0,4,0,0)|0|0,da(r|0,4,0,0)|0|0,h)|0|0,4,0);ea(o|0,0|0,4,0)}f=da(g|0,4,0,0)|0|0;if((f|0)!=0?(H=f+4|0,(da(H|0,4,0,0)|0|0)>0):0){e=t+1|0;k=0;do{c=da((da(f|0,4,0,0)|0|0)+(k<<3)|0,4,0,0)|0|0;d=rv(s,c)|0;if((d|0)<0){I=91;break g}else h=0;while(1){g=rv(da(q+(h*72|0)+24|0,4,0,0)|0|0,c)|0;if((g|0)>-1)break;h=h+1|0;if((h|0)>=(e|0)){I=91;break g}}sv(Q,q,h,g,e,d,p,r);k=k+1|0}while((k|0)<(da(H|0,4,0,0)|0|0))}}t=t+1|0;if((t|0)>=((da(q|0,4,0,0)|0|0)+-1|0))break f;else{u=u+72|0;v=v+72|0}}if((I|0)==73){ea(R|0,0|0,4,0);sh(Q,27928,R);b=2;break a}else if((I|0)==81){sh(Q,27984,R);b=2;break a}else if((I|0)==91){ea(R|0,c|0,4,0);sh(Q,28040,R);b=2;break a}}while(0);c=da(L|0,4,0,0)|0|0;h=(c|0)>0;h:do if(h){d=da(L+4|0,4,0,0)|0|0;g=0;do{f=da(d+(g*20|0)|0,4,0,0)|0|0;e=da(f>>0|0,1,0,0)|0|0;if(e<<24>>24==122){if((da((da(f+16|0,4,0,0)|0)>>0|0,1,0,0)|0|0)==116)break h}else if(e<<24>>24==116)break h;g=g+1|0}while((g|0)<(c|0))}else g=0;while(0);if((g|0)<(c|0)){H=da(L+4|0,4,0,0)|0|0;g=da((da(Q|0,4,0,0)|0|0)+24|0,4,0,0)|0|0;if(!(g&32))G=0;else G=(g&64|0)==0;if(h){C=P+20|0;D=P+16|0;E=O+4|0;F=0;c=0;do{f=H+(F*20|0)|0;h=da(f|0,4,0,0)|0|0;g=da(h>>0|0,1,0,0)|0|0;if(g<<24>>24==116){a=0;I=110}else if(g<<24>>24==122?(da((da(h+16|0,4,0,0)|0)>>0|0,1,0,0)|0|0)==116:0){a=da((da(h+12|0,4,0,0)|0|0)+8|0,4,0,0)|0|0;I=110}else I=106;do if((I|0)==106){c=kr(Q,c,h)|0;if(c){x=H+(F*20|0)+4|0;w=(da(c|0,4,0,0)|0|0)+-1|0;v=da(c+4|0,4,0,0)|0|0;ea(v+(w*20|0)+4|0,da(x|0,4,0,0)|0|0,4,0);y=H+(F*20|0)+8|0;ea(v+(w*20|0)+8|0,da(y|0,4,0,0)|0|0,4,0);ea(x|0,0|0,4,0);ea(y|0,0|0,4,0)}ea(f|0,0|0,4,0)}else if((I|0)==110){if((da(K|0,4,0,0)|0|0)>0){y=(a|0)==0;z=(a|0)!=0;A=0;B=J;g=0;while(1){n=da(B+16|0,4,0,0)|0|0;f=da(B+20|0,4,0,0)|0|0;h=da(B+12|0,4,0,0)|0|0;if(!h)h=da(n|0,4,0,0)|0|0;if(da(N>>0|0,1,0,0)|0)break;if((f|0)!=0?((da(f+6|0,2,0,0)|0)&512)!=0:0){x=0;I=125}else I=117;do if((I|0)==117){I=0;if(!y?(cd(a,h)|0)!=0:0)break;k=da(n+68|0,4,0,0)|0|0;if(!k){f=0;x=27816;I=125;break}e=da(C|0,4,0,0)|0|0;l=da(D|0,4,0,0)|0|0;if((e|0)>0){d=0;while(1){f=d+1|0;if((da(l+(d<<4)+12|0,4,0,0)|0|0)==(k|0)){f=d;break}if((f|0)<(e|0))d=f;else break}if((f|0)>-1)e=f;else{f=0;x=27816;I=125;break}}else e=0;f=0;x=da(l+(e<<4)|0,4,0,0)|0|0;I=125}while(0);do if((I|0)==125){I=0;w=n+38|0;o=da(w|0,2,0,0)|0|0;if(o<<16>>16<=0)break;s=n+4|0;r=(f|0)!=0;l=z&r;t=(A|0)>0;m=t&y;q=B+36|0;t=t^1;p=B+48|0;k=(x|0)==0;u=0;do{n=da(s|0,4,0,0)|0|0;d=da(n+(u*24|0)|0,4,0,0)|0|0;if(!(l?(uv(da((da((da(f|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(u*20|0)+8|0,4,0,0)|0|0,0,a,0)|0)==0:0))I=129;i:do if((I|0)==129){I=0;if((da(n+(u*24|0)+23>>0|0,1,0,0)|0)&2)break;if(m){if(!(((da(q>>0|0,1,0,0)|0)&4)==0|t)){n=0;do{if((rv(da(K+(n*72|0)+24|0,4,0,0)|0|0,d)|0)>-1){g=1;break i}n=n+1|0}while((n|0)<(A|0))}if((vv(da(p|0,4,0,0)|0|0,d)|0)>-1){g=1;break}}o=st(P,27,d)|0;if(!G?(da(K|0,4,0,0)|0|0)<=1:0){e=d;v=0}else I=137;do if((I|0)==137){I=0;o=Yq(Q,122,st(P,27,h)|0,o,0)|0;if(!k)o=Yq(Q,122,st(P,27,x)|0,o,0)|0;if(!G){e=d;v=0;break}ea(R|0,h|0,4,0);ea(R+4|0,d|0,4,0);v=th(P,27824,R)|0;e=v}while(0);c=kr(Q,c,o)|0;ea(O|0,e|0,4,0);if(!e)o=0;else{o=e;while(1)if(!(da(o>>0|0,1,0,0)|0))break;else o=o+1|0;o=o-e&1073741823}ea(E|0,o|0,4,0);lr(Q,c,O,0);do if(c){if(!((da(M|0,2,0,0)|0)&512))break;n=(da(c|0,4,0,0)|0|0)+-1|0;d=da(c+4|0,4,0,0)|0|0;if(r)o=jh(P,da((da((da(f|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(u*20|0)+8|0,4,0,0)|0|0)|0;else{ea(R|0,x|0,4,0);ea(R+4|0,h|0,4,0);ea(R+8|0,e|0,4,0);o=th(P,27832,R)|0}ea(d+(n*20|0)+8|0,o|0,4,0);o=d+(n*20|0)+13|0;ea(o>>0|0,da(o>>0|0,1,0,0)|0|2|0,1,0)}while(0);lg(P,v);o=da(w|0,2,0,0)|0|0;g=1}while(0);u=u+1|0}while((u|0)<(o<<16>>16|0))}while(0);A=A+1|0;if((A|0)>=(da(K|0,4,0,0)|0|0))break;else B=B+72|0}if(g)break}if(!a){sh(Q,27872,R);break}else{ea(R|0,a|0,4,0);sh(Q,27848,R);break}}while(0);F=F+1|0}while((F|0)<(da(L|0,4,0,0)|0|0))}else c=0;Mk(P,L);ea(b|0,c|0,4,0)}else c=da(b|0,4,0,0)|0|0;if((c|0)!=0?(da(c|0,4,0,0)|0|0)>(da(P+96|0,4,0,0)|0|0):0){sh(Q,27896,R);b=0}else b=0}else b=2}else b=1}else b=2;while(0);i=S;return b|0}function qu(a,b){a=a|0;b=b|0;var c=0;c=da(a+12|0,4,0,0)|0|0;while(1){a=da(b+56|0,4,0,0)|0|0;if(!a)break;else b=a}b=da(b+68|0,4,0,0)|0|0;if(b)ea(c+532|0,da(b+4|0,4,0,0)|0|0,4,0);return}function ru(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=b+6|0;e=da(d|0,2,0,1)|0|0;if((e&32|0)==0?(ea(d|0,e|32|0,2,0),h=da(a+12|0,4,0,0)|0|0,f=da(b+32|0,4,0,0)|0|0,c=da(f|0,4,0,0)|0|0,(c|0)>0):0){b=0;d=f+8|0;while(1){a=da(d+16|0,4,0,0)|0|0;if(((a|0)!=0?((da(a+44>>0|0,1,0,0)|0)&2)!=0:0)?(g=da(d+20|0,4,0,0)|0|0,(g|0)!=0):0){c=g;while(1){e=da(c+52|0,4,0,0)|0|0;if(!e)break;else c=e}iu(h,a,c);c=da(f|0,4,0,0)|0|0}b=b+1|0;if((b|0)>=(c|0))break;else d=d+72|0}}return}function su(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((a|0)!=0?(c=da(a|0,4,0,0)|0|0,(c|0)>0):0){f=da(a+4|0,4,0,0)|0|0;e=0;do{d=da(f+(e*20|0)|0,4,0,0)|0|0;if((d|0)!=0?(g=da(d+24|0,4,0,0)|0|0,(g|0)>(da(b|0,4,0,0)|0|0)):0){ea(b|0,g|0,4,0);c=da(a|0,4,0,0)|0|0}e=e+1|0}while((e|0)<(c|0))}return}function tu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(((b|0)!=0?(Fs(a,da(b|0,4,0,0)|0|0,c,d),Fs(a,da(b+40|0,4,0,0)|0|0,c,d),Fs(a,da(b+48|0,4,0,0)|0|0,c,d),f=b+44|0,ea(f|0,Gs(a,da(f|0,4,0,0)|0|0,c,d)|0|0,4,0),f=b+36|0,ea(f|0,Gs(a,da(f|0,4,0,0)|0|0,c,d)|0|0,4,0),tu(a,da(b+52|0,4,0,0)|0|0,c,d),f=da(b+32|0,4,0,0)|0|0,(f|0)!=0):0)?(e=da(f|0,4,0,0)|0|0,(e|0)>0):0){b=e;e=f+8|0;while(1){tu(a,da(e+20|0,4,0,0)|0|0,c,d);b=b+-1|0;if((b|0)<=0)break;else e=e+72|0}}return}function uu(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;c=da(b+48|0,4,0,0)|0|0;i=da(c|0,4,0,0)|0|0;d=da(a|0,4,0,0)|0|0;j=Qs(d,i+1|0,1)|0;if((j|0)!=0&(i|0)>0){h=c+4|0;f=d+8|0;e=j+16|0;g=0;do{d=da(h|0,4,0,0)|0|0;c=da(d+(g*20|0)|0,4,0,0)|0|0;if(!((da(c+4|0,4,0,0)|0)&256)){d=Rs(a,b,(da(d+(g*20|0)+16|0,2,0,1)|0|0)+-1|0)|0;if(!d)d=da(f|0,4,0,0)|0|0;c=wv(a,c,da(d|0,4,0,0)|0|0)|0;ea((da(h|0,4,0,0)|0|0)+(g*20|0)|0,c|0,4,0)}else d=bu(a,c)|0;ea(j+(g<<2)+20|0,d|0,4,0);ea((da(e|0,4,0,0)|0|0)+g>>0|0,da((da(h|0,4,0,0)|0|0)+(g*20|0)+12>>0|0,1,0,0)|0|0|0,1,0);g=g+1|0}while((g|0)!=(i|0))}return j|0}function vu(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,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;e=da(a|0,4,0,0)|0|0;a:do if((c|0)!=0?(da(e+65>>0|0,1,0,0)|0|0)==0:0){f=da(c|0,4,0,0)|0|0;if((f|0)>(da(e+96|0,4,0,0)|0|0)){ea(k|0,d|0,4,0);sh(a,27120,k);b=1;break}h=da(b|0,4,0,0)|0|0;if((f|0)>0){e=f;b=0;g=da(c+4|0,4,0,0)|0|0;while(1){f=da(g+16|0,2,0,0)|0|0;if(f<<16>>16){f=f&65535;e=da(h|0,4,0,0)|0|0;if((f|0)>(e|0))break;xv(a,h,f+-1|0,da(g|0,4,0,0)|0|0,d,0);e=da(c|0,4,0,0)|0|0}b=b+1|0;if((b|0)>=(e|0)){b=0;break a}else g=g+20|0}ea(k|0,b+1|0,4,0);ea(k+4|0,d|0,4,0);ea(k+8|0,e|0,4,0);sh(a,27064,k);b=1}else b=0}else b=0;while(0);i=l;return b|0}function wu(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|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,t=0,u=0;q=a+8|0;r=da(q|0,4,0,0)|0|0;t=r+32|0;i=da(t|0,4,0,0)|0|0;u=ws(r)|0;if(f){k=vh(r,46,f,0,0)|0;j=c+8|0;m=da(j|0,4,0,0)|0|0;o=f+1|0;l=c+12|0;n=da(l|0,4,0,0)|0|0;if(g)ea(g|0,(da(g|0,4,0,0)|0|0)+1|0,4,0);m=vh(r,42,m,o,n)|0;wh(r,m,g,-6);m=m+2|0;vh(r,43,m,u,m)|0;m=da(t|0,4,0,0)|0|0;if(m>>>0>k>>>0)ea((da(r+4|0,4,0,0)|0|0)+(k*20|0)+8|0,m|0,4,0);ea((da(r+24|0,4,0,0)|0|0)+88|0,m+-1|0,4,0);vh(r,33,da(j|0,4,0,0)|0|0,o,(da(l|0,4,0,0)|0|0)+-1|0)|0;vh(r,25,1,f,0)|0}if(!(da((da(a|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)){ht(r,da(b+12|0,4,0,0)|0|0,u);switch(da(d>>0|0,1,0,1)|0|0){case 12:case 14:{j=a+19|0;l=da(j>>0|0,1,0,0)|0|0;if(l<<24>>24){f=l+-1<<24>>24;ea(j>>0|0,f|0,1,0);k=da(a+((f&255)<<2)+24|0,4,0,0)|0|0;if(!(f<<24>>24))p=12;else{l=l+-2<<24>>24;ea(j>>0|0,l|0,1,0);l=da(a+((l&255)<<2)+24|0,4,0,0)|0|0;j=k}}else{p=a+72|0;k=(da(p|0,4,0,0)|0|0)+1|0;ea(p|0,k|0,4,0);p=12}if((p|0)==12){j=a+72|0;l=(da(j|0,4,0,0)|0|0)+1|0;ea(j|0,l|0,4,0);j=k}vh(r,49,da(c+8|0,4,0,0)|0|0,da(c+12|0,4,0,0)|0|0,j)|0;k=d+4|0;vh(r,74,da(k|0,4,0,0)|0|0,l,0)|0;vh(r,75,da(k|0,4,0,0)|0|0,j,l)|0;k=da(r+4|0,4,0,0)|0|0;if(k)ea(k+(((da(t|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,8|0,1,0);Zr(a,l);Zr(a,j);break}case 11:{l=d+1|0;ea(l>>0|0,Au(da(da((da(b|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0,da(l>>0|0,1,0,0)|0|0)|0|0,1,0);k=a+19|0;j=da(k>>0|0,1,0,0)|0|0;if(!(j<<24>>24)){p=a+72|0;k=(da(p|0,4,0,0)|0|0)+1|0;ea(p|0,k|0,4,0)}else{p=j+-1<<24>>24;ea(k>>0|0,p|0,1,0);k=da(a+((p&255)<<2)+24|0,4,0,0)|0|0}p=c+8|0;wh(r,vh(r,49,da(p|0,4,0,0)|0|0,1,k)|0,l,1);ct(a,da(p|0,4,0,0)|0|0,1);vh(r,110,da(d+4|0,4,0,0)|0|0,k,0)|0;Zr(a,k);break}case 10:{p=da(c+8|0,4,0,0)|0|0;vh(da(q|0,4,0,0)|0|0,32,p,da(d+4|0,4,0,0)|0|0,1)|0;ct(a,p,1);break}case 13:{n=d+8|0;k=da(n|0,4,0,0)|0|0;if(!k){k=da(c+12|0,4,0,0)|0|0;l=a+60|0;j=da(l|0,4,0,0)|0|0;g=a+56|0;m=da(g|0,4,0,0)|0|0;if((m|0)<(k|0)){p=a+72|0;j=da(p|0,4,0,0)|0|0;ea(p|0,j+k|0,4,0);j=j+1|0}else{ea(l|0,j+k|0,4,0);ea(g|0,m-k|0,4,0)}ea(n|0,j|0,4,0);ea(d+12|0,k|0,4,0)}else{j=k;k=da(d+12|0,4,0,0)|0|0}p=da(c+8|0,4,0,0)|0|0;vh(da(q|0,4,0,0)|0|0,32,p,j,k)|0;ct(a,p,k);vh(r,22,da(d+4|0,4,0,0)|0|0,0,0)|0;break}default:{f=c+8|0;p=c+12|0;vh(r,35,da(f|0,4,0,0)|0|0,da(p|0,4,0,0)|0|0,0)|0;ct(a,da(f|0,4,0,0)|0|0,da(p|0,4,0,0)|0|0)}}j=da(b+8|0,4,0,0)|0|0;if(j)vh(r,140,j,h,0)|0;j=da(r+24|0,4,0,0)|0|0;k=~u;if((u|0)<0?(s=da(j+112|0,4,0,0)|0|0,(s|0)!=0):0)ea(s+(k<<2)|0,da(t|0,4,0,0)|0|0,4,0);ea(j+88|0,(da(t|0,4,0,0)|0|0)+-1|0,4,0);vh(r,18,e,0,0)|0}else i=0;return i|0}function xu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+80|0;if((i|0)>=(j|0))ba();n=o+64|0;m=o+32|0;d=o;ea(n>>0|0,1|0,1,0);if((b|0)!=0?(da(a+4|0,4,0,0)|0|0)!=0:0){e=da(b>>0|0,1,0,1)|0|0;a:do if((e|0)==154|(e|0)==156){l=da(b+32|0,2,0,0)|0|0;d=l<<16>>16;if(a){k=b+28|0;b:while(1){while(1){h=da(a+4|0,4,0,0)|0|0;g=da(h|0,4,0,0)|0|0;c:do if((g|0)>0){b=da(k|0,4,0,0)|0|0;e=0;while(1){f=e+1|0;if((da(h+(e*72|0)+48|0,4,0,0)|0|0)==(b|0)){f=e;break c}if((f|0)<(g|0))e=f;else break}}else f=0;while(0);if((f|0)>=(g|0))break;g=da(h+(f*72|0)+24|0,4,0,0)|0|0;f=da(h+(f*72|0)+28|0,4,0,0)|0|0;b=(g|0)==0;if(!((a|0)!=0&b))break b}a=da(a+16|0,4,0,0)|0|0;if(!a){d=0;break a}}if(!b){if(f){if(l<<16>>16<=-1){d=0;break}e=da(f|0,4,0,0)|0|0;if((d|0)>=(da(e|0,4,0,0)|0|0)){d=0;break}d=da((da(e+4|0,4,0,0)|0|0)+(d*20|0)|0,4,0,0)|0|0;ea(m+4|0,da(f+32|0,4,0,0)|0|0,4,0);ea(m+16|0,a|0,4,0);ea(m|0,da(a|0,4,0,0)|0|0,4,0);d=xu(m,d,n)|0;break}if(da(g+68|0,4,0,0)|0){if(l<<16>>16<0)d=da(g+36|0,2,0,0)|0|0;if((d|0)<0)d=11144;else{l=da(g+4|0,4,0,0)|0|0;m=da(l+(d*24|0)+12|0,4,0,0)|0|0;ea(n>>0|0,da(l+(d*24|0)+22>>0|0,1,0,0)|0|0|0,1,0);d=m}}else d=0}else d=0}else d=0}else if((e|0)==119){l=da(b+20|0,4,0,0)|0|0;m=da(da((da(l|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0;ea(d+4|0,da(l+32|0,4,0,0)|0|0,4,0);ea(d+16|0,a|0,4,0);ea(d|0,da(a|0,4,0,0)|0|0,4,0);d=xu(d,m,n)|0}else d=0;while(0);if(c)ea(c>>0|0,da(n>>0|0,1,0,0)|0|0|0,1,0)}else d=0;i=o;return d|0}function yu(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=da(a+8|0,4,0,0)|0|0;f=a+19|0;g=da(f>>0|0,1,0,0)|0|0;if(!(g<<24>>24)){g=a+72|0;f=(da(g|0,4,0,0)|0|0)+1|0;ea(g|0,f|0,4,0)}else{g=g+-1<<24>>24;ea(f>>0|0,g|0,1,0);f=da(a+((g&255)<<2)+24|0,4,0,0)|0|0}wh(h,vh(h,69,b,c,e)|0,d,-14);vh(h,49,e,d,f)|0;vh(h,110,b,f,0)|0;Zr(a,f);return}function zu(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,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;r=a+8|0;w=da(r|0,4,0,0)|0|0;v=b+24|0;h=(da(v>>0|0,1,0,0)|0)&1;k=h<<24>>24==0;h=(h^1)&255;g=da(b|0,4,0,0)|0|0;l=da(g|0,4,0,0)|0|0;m=l+e+h|0;p=a+72|0;j=da(p|0,4,0,0)|0|0;u=j+1|0;ea(p|0,u|0,4,0);s=b+4|0;n=da(s|0,4,0,0)|0|0;f=(f|0)==0;if(f){ea(p|0,u+m|0,4,0);q=j+2|0}else q=d-l-h|0;at(a,g,q,1);if(k)vh(w,73,da(b+8|0,4,0,0)|0|0,q+l|0,0)|0;if(f){vh(da(r|0,4,0,0)|0|0,32,d,h+l+q|0,e)|0;ct(a,d,e)}vh(w,49,q+n|0,m-n|0,u)|0;if((n|0)>0){g=da(p|0,4,0,0)|0|0;e=g+1|0;f=da(s|0,4,0,0)|0|0;ea(p|0,f+g|0,4,0);if(k)d=vh(w,46,q+l|0,0,0)|0;else d=vh(w,59,da(b+8|0,4,0,0)|0|0,0,0)|0;vh(w,42,e,q,da(s|0,4,0,0)|0|0)|0;j=da(b+20|0,4,0,0)|0|0;if((j|0)<0)j=(da(w+32|0,4,0,0)|0|0)+-1|0;if(!(da((da(w|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))j=(da(w+4|0,4,0,0)|0|0)+(j*20|0)|0;else j=29120;if(!(da((da(a|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)){ea(j+8|0,m-f|0,4,0);f=j+16|0;j=da(f|0,4,0,0)|0|0;ew(da(j+16|0,4,0,0)|0|0,0,da(j+6|0,2,0,1)|0|0)|0;wh(w,-1,j,-6);ea(f|0,Ts(a,da(b|0,4,0,0)|0|0,n,(da(j+8|0,2,0,1)|0|0)+-1|0)|0|0,4,0);j=w+32|0;f=da(j|0,4,0,0)|0|0;i=f+1|0;vh(w,43,i,0,i)|0;i=ws(w)|0;ea(b+16|0,i|0,4,0);h=(da(p|0,4,0,0)|0|0)+1|0;ea(p|0,h|0,4,0);ea(b+12|0,h|0,4,0);vh(w,17,h,i,0)|0;i=b+8|0;vh(w,119,da(i|0,4,0,0)|0|0,0,0)|0;h=da(j|0,4,0,0)|0|0;if(h>>>0>d>>>0)ea((da(w+4|0,4,0,0)|0|0)+(d*20|0)+8|0,h|0,4,0);g=w+24|0;ea((da(g|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);h=da(s|0,4,0,0)|0|0;vh(da(r|0,4,0,0)|0|0,32,q,e,h)|0;ct(a,q,h);h=da(j|0,4,0,0)|0|0;if(h>>>0>f>>>0)ea((da(w+4|0,4,0,0)|0|0)+(f*20|0)+8|0,h|0,4,0);ea((da(g|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);o=23}}else{i=b+8|0;o=23}if((o|0)==23?(vh(w,110-((da(v>>0|0,1,0,0)|0)&1)|0,da(i|0,4,0,0)|0|0,u,0)|0,t=da(c+8|0,4,0,0)|0|0,(t|0)!=0):0){h=da(c+12|0,4,0,0)|0|0;h=vh(w,139,(h|0)==0?t:h+1|0,0,-1)|0;vh(w,105,da(i|0,4,0,0)|0|0,0,0)|0;vh(w,95,da(i|0,4,0,0)|0|0,0,0)|0;g=da(w+32|0,4,0,0)|0|0;if(g>>>0>h>>>0)ea((da(w+4|0,4,0,0)|0|0)+(h*20|0)+8|0,g|0,4,0);ea((da(w+24|0,4,0,0)|0|0)+88|0,g+-1|0,4,0)}return}function Au(a,b){a=a|0;b=b|0;a=jv(a)|0;if(!(a<<24>>24==0|b<<24>>24==0))return (a<<24>>24>66|b<<24>>24>66?67:65)|0;if(!((a|b)<<24>>24))a=65;else a=(b&255)+(a&255)&255;return a|0}function Bu(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;do if(!((a|0)==0|(b|0)==0)){g=da(a+4|0,4,0,0)|0|0;h=da(b+4|0,4,0,0)|0|0;i=h|g;if(i&1024){if((g&1024&h|0)!=0?(da(a+8|0,4,0,0)|0|0)==(da(b+8|0,4,0,0)|0|0):0){d=0;break}d=2;break}d=da(a>>0|0,1,0,0)|0|0;e=da(b>>0|0,1,0,0)|0|0;if(d<<24>>24!=e<<24>>24){if(d<<24>>24==95?(Bu(da(a+12|0,4,0,0)|0|0,b,c)|0)<2:0){d=1;break}if(e<<24>>24==95?(Bu(a,da(b+12|0,4,0,0)|0|0,c)|0)<2:0){d=1;break}d=2;break}if((!(d<<24>>24==-100|d<<24>>24==-102)?(f=da(a+8|0,4,0,0)|0|0,(f|0)!=0):0)?(Zv(f,da(b+8|0,4,0,0)|0|0)|0)!=0:0){d=d<<24>>24==95?1:2;break}if(!((h^g)&16)){if(!(i&16384)){if(i&2048){d=2;break}if(Bu(da(a+12|0,4,0,0)|0|0,da(b+12|0,4,0,0)|0|0,c)|0){d=2;break}if(Bu(da(a+16|0,4,0,0)|0|0,da(b+16|0,4,0,0)|0|0,c)|0){d=2;break}if(Ss(da(a+20|0,4,0,0)|0|0,da(b+20|0,4,0,0)|0|0,c)|0){d=2;break}if(!(i&8192)){if((da(a+32|0,2,0,0)|0|0)!=(da(b+32|0,2,0,0)|0|0)){d=2;break}e=da(a+28|0,4,0,0)|0|0;d=da(b+28|0,4,0,0)|0|0;if((e|0)!=(d|0)?(e|0)!=(c|0)|(d|0)>-1:0){d=2;break}}}d=0}else d=2}else d=(b|0)==(a|0)?0:2;while(0);return d|0}function Cu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=a+8|0;ea(d>>0|0,c|0,1,0);a:do if(b){while(1){if((da(b>>0|0,1,0,0)|0|0)!=c<<24>>24)break;Cu(a,da(b+12|0,4,0,0)|0|0,c);b=da(b+16|0,4,0,0)|0|0;ea(d>>0|0,c|0,1,0);if(!b)break a}yv(a,b,0)|0}while(0);return}function Du(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,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,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;x=da(a|0,4,0,0)|0|0;L=da(x|0,4,0,0)|0|0;N=da(L|0,4,0,0)|0|0;G=N+65|0;do if(!(da(G>>0|0,1,0,0)|0)){O=a+20|0;f=da(O|0,4,0,0)|0|0;c=f+(b*48|0)|0;V=x+68|0;M=da(c|0,4,0,0)|0|0;n=M+12|0;g=da(n|0,4,0,0)|0|0;s=zv(V,g)|0;r=C;e=da(M>>0|0,1,0,0)|0|0;p=e&255;do if(e<<24>>24==76){d=f+(b*48|0)+32|0;ea(d|0,0|0,4,0);ea(d+4|0,0|0,4,0);d=0;o=0}else if(e<<24>>24==75){h=M+20|0;if(!((da(M+4|0,4,0,0)|0)&2048)){d=Ku(V,da(h|0,4,0,0)|0|0)|0;o=C;K=f+(b*48|0)+32|0;ea(K|0,d|0,4,0);ea(K+4|0,o|0,4,0);break}else{d=Av(V,da(h|0,4,0,0)|0|0)|0;o=C;K=f+(b*48|0)+32|0;ea(K|0,d|0,4,0);ea(K+4|0,o|0,4,0);break}}else{d=zv(V,da(M+16|0,4,0,0)|0|0)|0;o=C;K=f+(b*48|0)+32|0;ea(K|0,d|0,4,0);ea(K+4|0,o|0,4,0)}while(0);l=zv(V,M)|0;h=C;I=M+4|0;if(!((da(I|0,4,0,0)|0)&1)){J=0;K=0;q=h}else{j=da(M+36|0,2,0,0)|0|0;i=da(V|0,4,0,0)|0|0;a:do if((i|0)>0){k=0;while(1){if((da(x+(k<<2)+72|0,4,0,0)|0|0)==(j|0))break;k=k+1|0;if((k|0)>=(i|0)){k=0;j=0;break a}}k=hw(1,0,k|0)|0;j=C}else{k=0;j=0}while(0);J=iw(k|0,j|0,-1,-1)|0;K=C;l=k|l;q=j|h}m=f+(b*48|0)+40|0;ea(m|0,l|0,4,0);ea(m+4|0,q|0,4,0);m=f+(b*48|0)+8|0;ea(m|0,-1|0,4,0);ea(f+(b*48|0)+4|0,-1|0,4,0);u=f+(b*48|0)+18|0;ea(u|0,0|0,2,0);k=p+-75|0;if(k>>>0<9?(499>>>(k&511)&1)!=0:0){b:do if(!g)g=0;else while(1){k=da(g+4|0,4,0,0)|0|0;if(!(k&4096))break b;if(!(k&262144))i=g+12|0;else i=da((da(g+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;g=da(i|0,4,0,0)|0|0;if(!g){g=0;break}}while(0);k=da(M+16|0,4,0,0)|0|0;c:do if(!k)k=0;else while(1){j=da(k+4|0,4,0,0)|0|0;if(!(j&4096))break c;if(!(j&262144))k=k+12|0;else k=da((da(k+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;k=da(k|0,4,0,0)|0|0;if(!k){k=0;break}}while(0);o=(d&s|0)==0&(o&r|0)==0?4095:1024;if((da(g>>0|0,1,0,0)|0|0)==-102){h=da(g+28|0,4,0,0)|0|0;ea(m|0,h|0,4,0);ea(f+(b*48|0)+12|0,da(g+32|0,2,0,0)|0|0,4,0);if((p|0)==75)i=1;else if((p|0)==76)i=128;else i=2<>0|0,1,0,0)|0|0)==-102:0){if((h|0)>-1){g=Lr(N,M,0,0)|0;if(da(G>>0|0,1,0,0)|0){Fk(N,g);break}h=yv(a,g,3)|0;if(!h)break;i=da(O|0,4,0,0)|0|0;f=i+(h*48|0)|0;ea(i+(h*48|0)+4|0,b|0,4,0);ea(i+(h*48|0)+16|0,da(i+(b*48|0)+16|0,2,0,0)|0|0|0,2,0);c=i+(b*48|0)+22|0;ea(c>>0|0,(da(c>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0);c=i+(b*48|0)|0;k=i+(b*48|0)+20|0;ea(k|0,da(k|0,2,0,1)|0|8|0,2,0);if(((da(M>>0|0,1,0,0)|0|0)==79?((da(I|0,4,0,0)|0)&1|0)==0:0)?((da(N+60|0,2,0,0)|0)&512)==0:0){n=i+(b*48|0)+18|0;ea(n|0,da(n|0,2,0,1)|0|1024|0,2,0);n=1024}else n=0}else{n=0;g=M;f=c}e=g+16|0;j=(da(e|0,4,0,0)|0|0)+4|0;i=da(j|0,4,0,0)|0|0;h=i&256;d=g+12|0;k=da(d|0,4,0,0)|0|0;do if((h|0)==((da(k+4|0,4,0,0)|0)&256|0)){if(h){ea(j|0,i&-257|0,4,0);break}k=(bu(L,k)|0)==0;i=da(d|0,4,0,0)|0|0;if(k)k=i;else{k=i+4|0;ea(k|0,da(k|0,4,0,0)|0|256|0,4,0);k=i}}while(0);i=da(e|0,4,0,0)|0|0;ea(e|0,k|0,4,0);ea(d|0,i|0,4,0);h=da(g>>0|0,1,0,0)|0|0;if((h&255)>79){h=((h&255)+176^2)+80&255;ea(g>>0|0,h|0,1,0)}g=da(i+4|0,4,0,0)|0|0;if(g&4096)do{if(!(g&262144))i=i+12|0;else i=da((da(i+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;i=da(i|0,4,0,0)|0|0;g=da(i+4|0,4,0,0)|0|0}while((g&4096|0)!=0);ea(f+8|0,da(i+28|0,4,0,0)|0|0,4,0);ea(f+12|0,da(i+32|0,2,0,0)|0|0,4,0);g=f+32|0;ea(g|0,J|s|0,4,0);ea(g+4|0,K|r|0,4,0);g=f+40|0;ea(g|0,l|0,4,0);ea(g+4|0,q|0,4,0);g=h&255;if((g|0)==75)g=1;else if((g|0)==76)g=128;else g=2<>24==74){if((da(a+8>>0|0,1,0,0)|0|0)!=72)break;h=(da(M+20|0,4,0,0)|0|0)+4|0;d=M+36|0;e=0;while(1){l=da(34144+e>>0|0,1,0,1)|0|0;g=Lr(N,g,0,0)|0;g=Yq(L,l,g,Lr(N,da((da(h|0,4,0,0)|0|0)+(e*20|0)|0,4,0,0)|0|0,0,0)|0,0)|0;if(g){l=g+4|0;ea(l|0,da(l|0,4,0,0)|0|(da(I|0,4,0,0)|0)&1|0,4,0);ea(g+36|0,da(d|0,2,0,0)|0|0|0,2,0)}l=yv(a,g,3)|0;Du(a,l);f=da(O|0,4,0,0)|0|0;ea(f+(l*48|0)+4|0,b|0,4,0);ea(f+(l*48|0)+16|0,da(f+(b*48|0)+16|0,2,0,0)|0|0|0,2,0);l=f+(b*48|0)+22|0;ea(l>>0|0,(da(l>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0);e=e+1|0;if((e|0)==2)break;g=da(n|0,4,0,0)|0|0}c=f+(b*48|0)|0;break}else if(e<<24>>24!=71)break;s=lh(N,416,0)|0;d:do if(s){ew(s|0,0,416)|0;ea(f+(b*48|0)+12|0,s|0,4,0);v=f+(b*48|0)+20|0;ea(v|0,da(v|0,2,0,1)|0|16|0,2,0);ea(s|0,x|0,4,0);ea(s+4|0,0|0,4,0);v=s+12|0;ea(v|0,0|0,4,0);ea(s+16|0,8|0,4,0);w=s+20|0;ea(w|0,s+24|0,4,0);Cu(s,M,71);h=da(v|0,4,0,0)|0|0;if((h|0)>0)do{h=h+-1|0;Du(s,h)}while((h|0)>0);if(!(da(G>>0|0,1,0,0)|0)){k=da(v|0,4,0,0)|0|0;if((k|0)>0){r=x+68|0;q=-1;p=-1;d=-1;c=-1;o=da(w|0,4,0,0)|0|0;while(1){k=k+-1|0;j=o+18|0;n=da(j|0,2,0,0)|0|0;if(!(n&255)){g=lh(N,408,0)|0;if(!g){h=q;i=p;d=0;c=0}else{ea(o+12|0,g|0,4,0);i=o+20|0;ea(i|0,da(i|0,2,0,1)|0|32|0,2,0);ea(j|0,512|0,2,0);ea(g|0,da(a|0,4,0,0)|0|0,4,0);i=g+4|0;ea(i|0,0|0,4,0);h=g+12|0;ea(h|0,0|0,4,0);ea(g+16|0,8|0,4,0);l=g+20|0;ea(l|0,g+24|0,4,0);Cu(g,da(o|0,4,0,0)|0|0,72);j=da(h|0,4,0,0)|0|0;if((j|0)>0)do{j=j+-1|0;Du(g,j)}while((j|0)>0);ea(i|0,a|0,4,0);if((da(G>>0|0,1,0,0)|0|0)==0?(t=da(h|0,4,0,0)|0|0,(t|0)>0):0){j=0;i=0;c=0;m=da(l|0,4,0,0)|0|0;while(1){h=(da((da(m|0,4,0,0)|0)>>0|0,1,0,1)|0|0)+-75|0;do if(h>>>0<9){if(!(499>>>(h&511)&1))break;g=da(m+8|0,4,0,0)|0|0;e=da(r|0,4,0,0)|0|0;e:do if((e|0)>0){h=0;while(1){if((da(x+(h<<2)+72|0,4,0,0)|0|0)==(g|0))break;h=h+1|0;if((h|0)>=(e|0)){h=0;g=0;break e}}h=hw(1,0,h|0)|0;g=C}else{h=0;g=0}while(0);j=h|j;i=g|i}while(0);c=c+1|0;if((c|0)>=(t|0))break;else m=m+48|0}}else{j=0;i=0}h=j&q;i=i&p;d=0;c=0}}else{i=da(o+20|0,2,0,0)|0|0;if(!(i&8)){l=da(o+8|0,4,0,0)|0|0;g=da(r|0,4,0,0)|0|0;h=(g|0)>0;f:do if(h){j=0;while(1){if((da(x+(j<<2)+72|0,4,0,0)|0|0)==(l|0))break;j=j+1|0;if((j|0)>=(g|0)){e=0;m=0;break f}}e=hw(1,0,j|0)|0;m=C}else{e=0;m=0}while(0);if(!(i&2)){j=e;l=m}else{l=da((da(w|0,4,0,0)|0|0)+((da(o+4|0,4,0,0)|0|0)*48|0)+8|0,4,0,0)|0|0;g:do if(h){j=0;while(1){if((da(x+(j<<2)+72|0,4,0,0)|0|0)==(l|0))break;j=j+1|0;if((j|0)>=(g|0)){j=0;l=0;break g}}j=hw(1,0,j|0)|0;l=C}else{j=0;l=0}while(0);j=j|e;l=l|m}g=(n&2)==0;h=j&q;i=l&p;d=g?0:j&d;c=g?0:l&c}else{h=q;i=p}}j=(h|0)!=0|(i|0)!=0;if(!((k|0)>0&j))break;else{q=h;p=i;o=o+48|0}}l=s+408|0;ea(l|0,h|0,4,0);ea(l+4|0,i|0,4,0);ea(u|0,((h|0)==0&(i|0)==0?0:256)|0,2,0);if(j)B=104}else{d=s+408|0;ea(d|0,-1|0,4,0);ea(d+4|0,-1|0,4,0);ea(u|0,256|0,2,0);d=-1;c=-1;B=104}h:do if((B|0)==104)if((da(v|0,4,0,0)|0|0)==2){g=da(w|0,4,0,0)|0|0;h=0;i:while(1){e=h+1|0;if((da(g+18|0,2,0,0)|0|0)!=512)if(!h)j=g;else break h;else{i=da(g+12|0,4,0,0)|0|0;if((da(i+12|0,4,0,0)|0|0)<=(h|0))break h;j=(da(i+20|0,4,0,0)|0|0)+(h*48|0)|0}if(!j)break h;else k=0;while(1){if((da(g+66|0,2,0,0)|0|0)==512){i=da(g+60|0,4,0,0)|0|0;if((da(i+12|0,4,0,0)|0|0)<=(k|0)){h=e;continue i}i=(da(i+20|0,4,0,0)|0|0)+(k*48|0)|0;if(!i){h=e;continue i}}else if(!k)i=g+48|0;else{h=e;continue i}Bv(a,j,i);g=da(w|0,4,0,0)|0|0;k=k+1|0}}}while(0);if(!((d|0)==0&(c|0)==0)){m=x+68|0;l=-1;n=0;while(1){i=da(v|0,4,0,0)|0|0;if((i|0)<=0)break d;k=da(w|0,4,0,0)|0|0;while(1){e=i;i=i+-1|0;g=k+20|0;ea(g|0,(da(g|0,2,0,1)|0)&65471|0,2,0);g=da(k+8|0,4,0,0)|0|0;if((g|0)!=(l|0)){h=da(m|0,4,0,0)|0|0;j:do if((h|0)>0){j=0;while(1){if((da(x+(j<<2)+72|0,4,0,0)|0|0)==(g|0))break;j=j+1|0;if((j|0)>=(h|0)){j=0;h=0;break j}}j=hw(1,0,j|0)|0;h=C}else{j=0;h=0}while(0);if(!((j&d|0)==0&(h&c|0)==0)){j=e;break}}if((i|0)<=0)break d;else k=k+48|0}h=da(k+12|0,4,0,0)|0|0;if((j|0)<1)break d;else j=g;while(1){if((j|0)==(g|0)){if((da(k+12|0,4,0,0)|0|0)!=(h|0)){i=g;h=1;break}l=jv(da((da(k|0,4,0,0)|0|0)+16|0,4,0,0)|0|0)|0;if(!(l<<24>>24==0|l<<24>>24==(jv(da((da(k|0,4,0,0)|0|0)+12|0,4,0,0)|0|0)|0)<<24>>24)){i=g;h=1;break}l=k+20|0;ea(l|0,da(l|0,2,0,1)|0|64|0,2,0)}else{l=k+20|0;ea(l|0,(da(l|0,2,0,1)|0)&65471|0,2,0)}if((i|0)<=0){i=g;h=0;break}j=da(k+56|0,4,0,0)|0|0;i=i+-1|0;k=k+48|0}n=n+1|0;if(!((n|0)<2&h))break;else l=i}if(!h){g=da(v|0,4,0,0)|0|0;if((g|0)>0){h=0;d=0;e=da(w|0,4,0,0)|0|0;while(1){g=g+-1|0;if((da(e+20|0,2,0,0)|0)&64){h=Lr(N,da((da(e|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,0,0)|0;d=kr(da(x|0,4,0,0)|0|0,d,h)|0;h=da((da(e|0,4,0,0)|0|0)+12|0,4,0,0)|0|0}if((g|0)<=0){g=h;break}else e=e+48|0}}else{g=0;d=0}e=Yq(L,75,Lr(N,g,0,0)|0,0,0)|0;if(!e)Mk(N,d);else{l=e+4|0;ea(l|0,da(l|0,4,0,0)|0|(da(I|0,4,0,0)|0)&1|0,4,0);ea(e+36|0,da(M+36|0,2,0,0)|0|0|0,2,0);ea(e+20|0,d|0,4,0);l=yv(a,e,3)|0;Du(a,l);f=da(O|0,4,0,0)|0|0;ea(f+(l*48|0)+4|0,b|0,4,0);ea(f+(l*48|0)+16|0,da(f+(b*48|0)+16|0,2,0,0)|0|0|0,2,0);l=f+(b*48|0)+22|0;ea(l>>0|0,(da(l>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0)}ea(f+(b*48|0)+18|0,2048|0,2,0)}}}}else ea(f+(b*48|0)+12|0,0|0,4,0);while(0);c=(da(O|0,4,0,0)|0|0)+(b*48|0)|0}while(0);k:do if((da(a+8>>0|0,1,0,0)|0|0)==72){p=da(L|0,4,0,0)|0|0;if((da(M>>0|0,1,0,0)|0|0)==-103){o=M+20|0;g=da(o|0,4,0,0)|0|0;if((g|0)!=0?(da(g|0,4,0,0)|0|0)==2:0){h=da(M+8|0,4,0,0)|0|0;if(!h)g=0;else{g=h;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;g=g-h&1073741823}g=Rh(p,h,g,2,1,0)|0;if(((((g|0)!=0?(y=da(g+2|0,2,0,0)|0|0,(y&4)!=0):0)?(F=da(g+4|0,4,0,0)|0|0,D=da(F>>0|0,1,0,0)|0|0,E=da(F+1>>0|0,1,0,0)|0|0,F=da(F+2>>0|0,1,0,0)|0|0,H=(y&65535)>>>3&1,z=(da(o|0,4,0,0)|0|0)+4|0,A=da((da(z|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,(da(A>>0|0,1,0,0)|0|0)==-102):0)?(jv(A)|0)<<24>>24==66:0)?((da((da(A+44|0,4,0,0)|0|0)+44>>0|0,1,0,0)|0)&16)==0:0){f=da(da(z|0,4,0,0)|0|0,4,0,0)|0|0;l:do if(!f)f=0;else while(1){e=da(f+4|0,4,0,0)|0|0;if(!(e&4096))break l;if(!(e&262144))f=f+12|0;else f=da((da(f+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;f=da(f|0,4,0,0)|0|0;if(!f){f=0;break}}while(0);e=da(f>>0|0,1,0,0)|0|0;m=e<<24>>24==-121;do if(m){g=da(L+476|0,4,0,0)|0|0;j=da(f+32|0,2,0,0)|0|0;k=j<<16>>16;do if(!g){d=0;h=0}else{B=k+-1|0;A=da(g+60|0,4,0,0)|0|0;d=A+(B*40|0)|0;if((da(A+(B*40|0)+8|0,2,0,0)|0)&1){d=0;h=0;break}h=da(g|0,4,0,0)|0|0;i=lh(h,40,0)|0;if(!i){d=0;h=0;break}g=i+0|0;e=g+40|0;do{ea(g>>0|0,0|0,1,0);g=g+1|0}while((g|0)<(e|0));B=i+8|0;ea(B|0,1|0,2,0);ea(i+32|0,h|0,4,0);Zg(i,d)|0;if(((da(B|0,2,0,0)|0)&15)!=2){d=i;h=0;break}d=i;h=Rg(i,1)|0}while(0);g=da(L+8|0,4,0,0)|0|0;if(j<<16>>16>32){ea(g+188|0,-1|0,4,0);l=h;B=177;break}else{l=g+188|0;ea(l|0,da(l|0,4,0,0)|0|1<>24==97){d=0;l=da(f+8|0,4,0,0)|0|0;B=177}else d=0;while(0);do if((B|0)==177)if(l){h=0;while(1){B=da(l+h>>0|0,1,0,0)|0|0;e=B<<24>>24==D<<24>>24;g=h+1|0;if(B<<24>>24!=F<<24>>24&((B<<24>>24==0|e|B<<24>>24==E<<24>>24)^1))h=g;else break}if(h){if((da(l+(h+-1)>>0|0,1,0,0)|0|0)==-1)break;if(e)g=(da(l+g>>0|0,1,0,0)|0|0)==0;else g=0;i=g&1;n=st(p,97,l)|0;if(n)ea((da(n+8|0,4,0,0)|0|0)+h>>0|0,0|0,1,0);do if(m){h=da(L+8|0,4,0,0)|0|0;e=da(f+32|0,2,0,0)|0|0;if(e<<16>>16>32)ea(h+188|0,-1|0,4,0);else{F=h+188|0;ea(F|0,da(F|0,4,0,0)|0|1<<(e<<16>>16)+-1|0,4,0)}if(!g){i=0;break}if(!(da((da(f+8|0,4,0,0)|0|0)+1>>0|0,1,0,0)|0))break;e=L+19|0;g=da(e>>0|0,1,0,0)|0|0;if(!(g<<24>>24)){F=L+72|0;e=(da(F|0,4,0,0)|0|0)+1|0;ea(F|0,e|0,4,0)}else{F=g+-1<<24>>24;ea(e>>0|0,F|0,1,0);e=da(L+((F&255)<<2)+24|0,4,0,0)|0|0}hs(L,f,e)|0;f=da(h+32|0,4,0,0)|0|0;if(f>>>0>0)ea((da(h+4|0,4,0,0)|0|0)+((f+-1|0)*20|0)+12|0,0|0,4,0);Zr(L,e)}while(0);Lh(d);if(!l){B=217;break k}j=da((da((da(o|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;h=Lr(N,n,0,0)|0;k=H<<16>>16!=0;do if(!k){if(da((da(L|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break;d=c+20|0;ea(d|0,da(d|0,2,0,1)|0|1024|0,2,0);d=n+8|0;g=da(d|0,4,0,0)|0|0;f=da(g>>0|0,1,0,0)|0|0;if(!(f<<24>>24))break;c=h+8|0;e=0;do{F=f&255;ea(g>>0|0,((da(10368+F>>0|0,1,0,1)|0|223)^32)&F|0,1,0);ea((da(c|0,4,0,0)|0|0)+e>>0|0,da(9328+F>>0|0,1,0,0)|0|0|0,1,0);e=e+1|0;g=(da(d|0,4,0,0)|0|0)+e|0;f=da(g>>0|0,1,0,0)|0|0}while(f<<24>>24!=0)}while(0);if(!(da(G>>0|0,1,0,0)|0)){f=da(h+8|0,4,0,0)|0|0;if(!f)e=-1;else{e=f;while(1)if(!(da(e>>0|0,1,0,0)|0))break;else e=e+1|0;e=(e-f&1073741823)+-1|0}f=f+e|0;e=da(f>>0|0,1,0,0)|0|0;if(k)d=i;else{d=e<<24>>24==64?0:i;e=da(9328+(e&255)>>0|0,1,0,0)|0|0}ea(f>>0|0,(e&255)+1|0,1,0);g=d}else g=i;d=H<<16>>16==0?13752:11152;e=Yq(L,83,wv(L,Lr(N,j,0,0)|0,d)|0,n,0)|0;if(e){H=e+4|0;ea(H|0,da(H|0,4,0,0)|0|(da(I|0,4,0,0)|0)&1|0,4,0);ea(e+36|0,da(M+36|0,2,0,0)|0|0|0,2,0)}f=yv(a,e,259)|0;Du(a,f);d=Yq(L,82,wv(L,Lr(N,j,0,0)|0,d)|0,h,0)|0;if(d){H=d+4|0;ea(H|0,da(H|0,4,0,0)|0|(da(I|0,4,0,0)|0)&1|0,4,0);ea(d+36|0,da(M+36|0,2,0,0)|0|0|0,2,0)}d=yv(a,d,259)|0;Du(a,d);e=da(O|0,4,0,0)|0|0;c=e+(b*48|0)|0;if(!g){B=217;break k}ea(e+(f*48|0)+4|0,b|0,4,0);I=e+(b*48|0)+16|0;ea(e+(f*48|0)+16|0,da(I|0,2,0,0)|0|0|0,2,0);B=e+(b*48|0)+22|0;ea(B>>0|0,(da(B>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0);ea(e+(d*48|0)+4|0,b|0,4,0);ea(e+(d*48|0)+16|0,da(I|0,2,0,0)|0|0|0,2,0);ea(B>>0|0,(da(B>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0);B=217;break k}}while(0);Lh(d);B=217}else B=217}else B=217}}else B=217;while(0);if((B|0)==217)if(((((da(M>>0|0,1,0,0)|0|0)==-103?(cd(da(M+8|0,4,0,0)|0|0,31416)|0)==0:0)?(P=da(M+20|0,4,0,0)|0|0,(da(P|0,4,0,0)|0|0)==2):0)?(Q=da(P+4|0,4,0,0)|0|0,R=da(Q+20|0,4,0,0)|0|0,(da(R>>0|0,1,0,0)|0|0)==-102):0)?(S=da(Q|0,4,0,0)|0|0,T=zv(V,S)|0,U=C,V=zv(V,R)|0,(V&T|0)==0&(C&U|0)==0):0){S=yv(a,Yq(L,51,0,Lr(N,S,0,0)|0,0)|0,3)|0;c=da(O|0,4,0,0)|0|0;V=c+(S*48|0)+32|0;ea(V|0,T|0,4,0);ea(V+4|0,U|0,4,0);ea(c+(S*48|0)+8|0,da(R+28|0,4,0,0)|0|0,4,0);ea(c+(S*48|0)+12|0,da(R+32|0,2,0,0)|0|0,4,0);ea(c+(S*48|0)+18|0,64|0,2,0);ea(c+(S*48|0)+4|0,b|0,4,0);ea(c+(S*48|0)+16|0,da(c+(b*48|0)+16|0,2,0,0)|0|0|0,2,0);T=c+(b*48|0)+22|0;ea(T>>0|0,(da(T>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0);T=c+(b*48|0)+20|0;ea(T|0,da(T|0,2,0,1)|0|8|0,2,0);T=c+(b*48|0)+40|0;V=da(T+4|0,4,0,0)|0|0;U=c+(S*48|0)+40|0;ea(U|0,da(T|0,4,0,0)|0|0,4,0);ea(U+4|0,V|0,4,0);c=c+(b*48|0)|0}V=c+32|0;U=V;b=da(U+4|0,4,0,0)|0|K;ea(V|0,da(U|0,4,0,0)|0|J|0,4,0);ea(V+4|0,b|0,4,0)}while(0);return}function Eu(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;var h=0,k=0;k=i;i=i+112|0;if((i|0)>=(j|0))ba();h=k;f=Cv(h,a,b,c,f,g)|0;a:do if(!f)f=0;else{g=f;f=0;do{b=g+32|0;c=da(b|0,4,0,0)|0|0;b=da(b+4|0,4,0,0)|0|0;if((c&d|0)==0&(b&e|0)==0){if((c|0)==0&(b|0)==0?((da(g+18|0,2,0,0)|0)&2)!=0:0){f=g;break a}f=(f|0)==0?g:f}g=Dv(h)|0}while((g|0)!=0)}while(0);i=k;return f|0}function Fu(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=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,aa=0,ca=0,ga=0,ha=0,ia=0,ja=0,ka=0;ja=i;i=i+16|0;if((i|0)>=(j|0))ba();ga=ja;q=da(a|0,4,0,0)|0|0;aa=da(q|0,4,0,0)|0|0;ha=da(aa|0,4,0,0)|0|0;_=da(a+4|0,4,0,0)|0|0;ca=da(a+12|0,4,0,0)|0|0;p=da(ca+16>>0|0,1,0,1)|0|0;q=da(q+4|0,4,0,0)|0|0;X=da(q+(p*72|0)+24|0,4,0,0)|0|0;s=da(a+8|0,4,0,0)|0|0;Y=_+20|0;_=_+12|0;d=da(_|0,4,0,0)|0|0;if((d|0)>0){f=da(q+(p*72|0)+48|0,4,0,0)|0|0;g=0;e=0;h=da(Y|0,4,0,0)|0|0;while(1){if((da(h+8|0,4,0,0)|0|0)==(f|0))e=(((da(h+18|0,2,0,0)|0)&-1153)<<16>>16!=0&1)+e|0;g=g+1|0;if((g|0)==(d|0))break;else h=h+48|0}}else e=0;if(!s)o=0;else{m=da(s|0,4,0,0)|0|0;a:do if((m|0)>0){h=da(s+4|0,4,0,0)|0|0;g=q+(p*72|0)+48|0;l=0;while(1){f=da(h+(l*20|0)|0,4,0,0)|0|0;if((da(f>>0|0,1,0,0)|0|0)!=-102){d=l;break a}d=l+1|0;if((da(f+28|0,4,0,0)|0|0)!=(da(g|0,4,0,0)|0|0)){d=l;break a}if((d|0)<(m|0))l=d;else break}}else d=0;while(0);o=(d|0)==(m|0)?m:0}d=(e*20|0)+56+(o<<3)|0;W=lh(ha,d,0)|0;do if(!W){sh(aa,15776,ga);d=7}else{ew(W|0,0,d|0)|0;d=W+56|0;n=d+(e*12|0)|0;ea(W|0,e|0,4,0);T=W+8|0;ea(T|0,o|0,4,0);U=W+4|0;ea(U|0,d|0,4,0);ea(W+12|0,n|0,4,0);V=W+16|0;ea(V|0,n+(o<<3)|0,4,0);f=da(_|0,4,0,0)|0|0;if((f|0)>0){l=da(q+(p*72|0)+48|0,4,0,0)|0|0;h=0;m=0;g=da(Y|0,4,0,0)|0|0;while(1){if((da(g+8|0,4,0,0)|0|0)==(l|0)?(t=da(g+18|0,2,0,0)|0|0,(t&-1153)<<16>>16!=0):0){ea(d+(m*12|0)|0,da(g+12|0,4,0,0)|0|0,4,0);ea(d+(m*12|0)+8|0,h|0,4,0);ea(d+(m*12|0)+4>>0|0,((t&255)==1?2:t&255)|0,1,0);m=m+1|0}h=h+1|0;if((h|0)==(f|0))break;else g=g+48|0}}if((o|0)>0){d=da(s+4|0,4,0,0)|0|0;e=0;do{ea(n+(e<<3)|0,da((da(d+(e*20|0)|0,4,0,0)|0|0)+32|0,2,0,0)|0|0,4,0);ea(n+(e<<3)+4>>0|0,da(d+(e*20|0)+12>>0|0,1,0,0)|0|0|0,1,0);e=e+1|0}while((e|0)!=(o|0))}v=ca;ea(v|0,0|0,4,0);ea(v+4|0,0|0,4,0);v=ca+18|0;ea(v|0,0|0,2,0);ea(ca+36|0,1024|0,4,0);w=ca+40|0;ea(w|0,0|0,2,0);x=ca+28|0;ea(x>>0|0,0|0,1,0);y=da(V|0,4,0,0)|0|0;z=da(W|0,4,0,0)|0|0;if(Mu(ha,ca,z)|0){lg(ha,W);d=7;break}R=W+28|0;S=W+24|0;A=W+20|0;B=W+32|0;D=W+40|0;E=W+48|0;F=X+60|0;G=aa+64|0;H=(z|0)>0;I=ca+30|0;J=ca+24|0;K=ca+32|0;L=ca+29|0;O=ca+20|0;P=ca+22|0;Q=ca+48|0;q=0;t=0;s=0;b:while(1){if(!((t|0)!=0|(q&1|0)==0))if((q|0)>2){d=0;break}else u=q+1|0;else u=q;if((s|0)==0&(u|0)>1){d=0;break}h=da(W|0,4,0,0)|0|0;if((h|0)>0){e=da(Y|0,4,0,0)|0|0;f=0;g=da(U|0,4,0,0)|0|0;while(1){q=da(g+8|0,4,0,0)|0|0;if((u|0)==2)ea(g+5>>0|0,(da(e+(q*48|0)+18|0,2,0,0)|0)&1^1|0,1,0);else if(!u){d=g+5|0;ea(d>>0|0,0|0,1,0);p=((da(e+(q*48|0)+18|0,2,0,0)|0)&1)==0;t=p?t:1;q=e+(q*48|0)+32|0;q=(da(q|0,4,0,0)|0|0)!=0|(da(q+4|0,4,0,0)|0|0)!=0;if(q|p^1)s=q?1:s;else ea(d>>0|0,1|0,1,0)}else if((u|0)==1){p=e+(q*48|0)+32|0;ea(g+5>>0|0,(da(p|0,4,0,0)|0|0)==0&(da(p+4|0,4,0,0)|0|0)==0&1|0,1,0)}else ea(g+5>>0|0,1|0,1,0);f=f+1|0;if((f|0)>=(h|0)){p=t;break}else g=g+12|0}}else p=t;ew(y|0,0,h<<3|0)|0;if(da(R|0,4,0,0)|0)Vc(da(S|0,4,0,0)|0|0);ea(A+0|0,0|0,4,0);ea(A+4|0,0|0,4,0);ea(A+8|0,0|0,4,0);ea(A+12|0,0|0,4,0);ea(D|0,+(5.e+98),8,1);d=E;ea(d|0,25|0,4,0);ea(d+4|0,0|0,4,0);d=da(aa|0,4,0,0)|0|0;q=F;while(1){q=da(q|0,4,0,0)|0|0;if((da(q|0,4,0,0)|0|0)==(d|0))break;else q=q+24|0}t=da(q+8|0,4,0,0)|0|0;q=qc[(fa(da((da(t|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,127|0)|0)&127](t,W)|0;do if((q|0)==7)ea((da(aa|0,4,0,0)|0|0)+65>>0|0,1|0,1,0);else if(q){d=da(t+8|0,4,0,0)|0|0;if(d){ea(ga|0,d|0,4,0);sh(aa,10344,ga);break}if((q|0)!=516){q=q&255;if(q>>>0>26|(q|0)==2)q=16328;else q=da(15488+(q<<2)|0,4,0,0)|0|0}else q=16344;ea(ga|0,q|0,4,0);sh(aa,10344,ga)}while(0);q=t+8|0;Vc(da(q|0,4,0,0)|0|0);ea(q|0,0|0,4,0);q=da(W|0,4,0,0)|0|0;if((q|0)>0){d=0;do{if((da((da(U|0,4,0,0)|0|0)+(d*12|0)+5>>0|0,1,0,0)|0|0)==0?(da((da(V|0,4,0,0)|0|0)+(d<<3)|0,4,0,0)|0|0)>0:0){ea(ga|0,da(X|0,4,0,0)|0|0,4,0);sh(aa,34096,ga);q=da(W|0,4,0,0)|0|0}d=d+1|0}while((d|0)<(q|0))}d=da(G|0,4,0,0)|0|0;if(d)break;t=da(U|0,4,0,0)|0|0;o=ca;ea(o|0,b|0,4,0);ea(o+4|0,c|0,4,0);c:do if(H){q=0;do{ea((da(Q|0,4,0,0)|0|0)+(q<<2)|0,0|0,4,0);q=q+1|0}while((q|0)!=(z|0));ea(I|0,0|0,2,0);if(H){f=b;e=c;d=0;o=0;q=-1;while(1){h=da(y+(o<<3)|0,4,0,0)|0|0;l=h+-1|0;do if((h|0)>0){m=da(t+8|0,4,0,0)|0|0;if((h|0)>(z|0)|(m|0)<0){ia=65;break b}if((m|0)>=(da(_|0,4,0,0)|0|0)){ia=65;break b}g=(da(Q|0,4,0,0)|0|0)+(l<<2)|0;if(da(g|0,4,0,0)|0){ia=65;break b}n=da(Y|0,4,0,0)|0|0;ka=n+(m*48|0)+32|0;f=f|(da(ka|0,4,0,0)|0);e=e|(da(ka+4|0,4,0,0)|0);ka=ca;ea(ka|0,f|0,4,0);ea(ka+4|0,e|0,4,0);ea(g|0,n+(m*48|0)|0,4,0);q=(l|0)>(q|0)?l:q;do if((h|0)<17){if(!(da(y+(o<<3)+4>>0|0,1,0,0)|0))break;d=(d&65535|1<>0|0,1,0,0)|0))break c;ea(B|0,0|0,4,0)}while(0);o=o+1|0;if((o|0)>=(z|0)){ia=73;break}else t=t+12|0}}else{q=-1;ia=73}}else{ea(I|0,0|0,2,0);q=-1;ia=73}while(0);if((ia|0)==73){ia=0;ea(w|0,q+1|0,2,0);ea(J|0,da(A|0,4,0,0)|0|0,4,0);ea(x>>0|0,da(R|0,4,0,0)|0|0,1,0);ea(R|0,0|0,4,0);ea(K|0,da(S|0,4,0,0)|0|0,4,0);if(!(da(B|0,4,0,0)|0))q=0;else q=(da(T|0,4,0,0)|0)&255;ea(L>>0|0,q|0,1,0);ea(v|0,0|0,2,0);r=+(+da(D|0,8,1,0));ea(k|0,+r,8,1);q=da(k|0,4,0,0)|0|0;d=da(k+4|0,4,0,0)|0|0;do if(!(r<=1.0))if(!(r<=2.0e9)){q=lw(q|0,d|0,52)|0;q=iw(q|0,C|0,64514,0)|0;q=(q<<16>>16)*10&65535;break}else{q=es(~~r>>>0,+N(r)>=1.0?(r>0.0?~~+$(+M(r/4294967296.0),4294967295.0)>>>0:~~+Z((r-+(~~r>>>0))/4294967296.0)>>>0):0)|0;break}else q=0;while(0);ea(O|0,q|0,2,0);o=E;ea(P|0,es(da(o|0,4,0,0)|0|0,da(o+4|0,4,0,0)|0|0)|0|0,2,0);Ev(a,ca)|0;if(da(x>>0|0,1,0,0)|0){Vc(da(K|0,4,0,0)|0|0);ea(x>>0|0,0|0,1,0)}}q=u+1|0;if((q|0)>=4){d=0;break}else t=p}if((ia|0)==65){ea(ga|0,da(X|0,4,0,0)|0|0,4,0);sh(aa,34064,ga);d=1}if(da(R|0,4,0,0)|0)Vc(da(S|0,4,0,0)|0|0);lg(ha,W)}while(0);i=ja;return d|0}function Gu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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,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;Y=i;i=i+64|0;if((i|0)>=(j|0))ba();k=Y;h=Y+56|0;g=Y+52|0;ea(g|0,-1|0,2,0);V=da(a+12|0,4,0,0)|0|0;W=da(a|0,4,0,0)|0|0;D=da(W+4|0,4,0,0)|0|0;E=da(V+16>>0|0,1,0,1)|0|0;Q=D+(E*72|0)+8|0;f=D+(E*72|0)+24|0;F=da(f|0,4,0,0)|0|0;R=da(a+4|0,4,0,0)|0|0;S=D+(E*72|0)+76|0;d=da(S|0,4,0,0)|0|0;do if(!d){if((da(F+44>>0|0,1,0,0)|0)&32){k=da(F+8|0,4,0,0)|0|0;break}d=k+0|0;e=d+52|0;do{ea(d|0,0|0,4,0);d=d+4|0}while((d|0)<(e|0));ea(k+46|0,1|0,2,0);ea(k+48|0,1|0,2,0);ea(k+4|0,g|0,4,0);ea(k+8|0,h|0,4,0);ea(k+50>>0|0,5|0,1,0);ea(k+12|0,F|0,4,0);ea(k+44|0,da(F+42|0,2,0,0)|0|0|0,2,0);ea(h|0,da(F+28|0,2,0,0)|0|0|0,2,0);ea(h+2|0,0|0,2,0);if(!((da(D+(E*72|0)+45>>0|0,1,0,0)|0)&1))ea(k+20|0,da((da(f|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,4,0)}else k=d;while(0);h=da(F+28|0,2,0,0)|0|0;if(h<<16>>16<11)y=0;else{y=h<<16>>16;y=((es(y,((y|0)<0)<<31>>31)|0)&65535)+65503&65535}if(((((((da(a+16|0,4,0,0)|0|0)==0?((da(W+34|0,2,0,0)|0)&128)==0:0)?((da((da(da(W|0,4,0,0)|0|0,4,0,0)|0|0)+24|0,4,0,0)|0)&1048576|0)!=0:0)?(da(S|0,4,0,0)|0|0)==0:0)?(l=da(D+(E*72|0)+45>>0|0,1,0,0)|0|0,(l&5)==0):0)?(B=F+44|0,(l&10|(da(B>>0|0,1,0,0)|0)&32)<<24>>24==0):0)?(z=da(R+20|0,4,0,0)|0|0,P=da(R+12|0,4,0,0)|0|0,A=z+(P*48|0)|0,(P|0)>0):0){s=V+8|0;t=V+24|0;u=V+42|0;v=V+28|0;w=V+40|0;x=V+48|0;o=(y&65535)+(h&65535)|0;e=o+4&65535;m=V+18|0;n=F+12|0;o=o+28&65535;p=V+22|0;q=V+20|0;r=V+36|0;f=z;do{l=f+32|0;h=l;g=s;if((((da(g|0,4,0,0)|0)&(da(h|0,4,0,0)|0)|0)==0?((da(g+4|0,4,0,0)|0)&(da(h+4|0,4,0,0)|0)|0)==0:0)?(Lu(f,Q,0,0)|0)!=0:0){ea(t|0,1|0,2,0);ea(u|0,0|0,2,0);ea(v|0,0|0,4,0);ea(w|0,1|0,2,0);ea(da(x|0,4,0,0)|0|0,f|0,4,0);ea(m|0,e|0,2,0);if((da(n|0,4,0,0)|0|0)==0?((da(B>>0|0,1,0,0)|0)&2)==0:0)ea(m|0,o|0,2,0);ea(p|0,43|0,2,0);ea(q|0,Fv(y,43)|0|0,2,0);ea(r|0,16384|0,4,0);O=l;d=da(O+4|0,4,0,0)|0|c;P=V;ea(P|0,da(O|0,4,0,0)|0|b|0,4,0);ea(P+4|0,d|0,4,0);d=Ev(a,V)|0}else d=0;f=f+48|0}while((d|0)==0&f>>>0>>0)}else d=0;P=V+36|0;a:do if((d|0)==0&(k|0)!=0){G=V+24|0;H=V+42|0;I=V+40|0;J=V+17|0;K=V+18|0;L=V+22|0;M=V+28|0;N=D+(E*72|0)+48|0;O=V+20|0;u=D+(E*72|0)+64|0;A=F+42|0;D=F+44|0;p=W+34|0;q=R+12|0;s=R+20|0;t=1;while(1){l=da(k+36|0,4,0,0)|0|0;d=da(N|0,4,0,0)|0|0;b:do if(l){h=da(q|0,4,0,0)|0|0;if((h|0)>0){f=0;e=da(s|0,4,0,0)|0|0;while(1){g=da(e|0,4,0,0)|0|0;if(Gv(g,l,d)|0){if(!((da(g+4|0,4,0,0)|0)&1)){X=32;break b}if((da(g+36|0,2,0,0)|0|0)==(d|0)){X=32;break b}}f=f+1|0;if((f|0)>=(h|0)){d=0;break}else e=e+48|0}}else d=0}else X=32;while(0);if((X|0)==32){X=0;E=da(da(k+8|0,4,0,0)|0|0,2,0,0)|0|0;ea(G|0,0|0,2,0);ea(H|0,0|0,2,0);ea(I|0,0|0,2,0);ea(J>>0|0,0|0,1,0);ea(K|0,0|0,2,0);F=V;ea(F|0,b|0,4,0);ea(F+4|0,c|0,4,0);ea(L|0,E|0,2,0);ea(M|0,k|0,4,0);F=k+51|0;l=da(F>>0|0,1,0,0)|0|0;c:do if(((l&4)==0?(T=da((da(a|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,(T|0)!=0):0)?(U=da(T|0,4,0,0)|0|0,(U|0)>0):0){B=da(T+4|0,4,0,0)|0|0;o=k+46|0;n=k+4|0;m=0;while(1){r=da(B+(m*20|0)|0,4,0,0)|0|0;d:do if(!r)r=0;else while(1){y=da(r+4|0,4,0,0)|0|0;if(!(y&4096))break d;if(!(y&262144))r=r+12|0;else r=da((da(r+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;r=da(r|0,4,0,0)|0|0;if(!r){r=0;break}}while(0);if((da(r>>0|0,1,0,0)|0|0)!=-102){B=0;break c}if((da(r+28|0,4,0,0)|0|0)==(d|0)){x=da(r+32|0,2,0,0)|0|0;if(x<<16>>16<0){B=1;break c}y=da(o|0,2,0,0)|0|0;if(y<<16>>16){w=da(n|0,4,0,0)|0|0;y=y&65535;z=0;do{if(x<<16>>16==(da(w+(z<<1)|0,2,0,0)|0|0)){B=1;break c}z=z+1|0}while((z|0)<(y|0))}}m=m+1|0;if((m|0)>=(U|0)){B=0;break}}}else B=0;while(0);do if((da(k+40|0,4,0,0)|0|0)<1){ea(P|0,256|0,4,0);ea(J>>0|0,((B|0)!=0?t&255:0)|0,1,0);ea(O|0,(E&65535)+16|0,2,0);Hv(R,V,E);d=Ev(a,V)|0;ea(L|0,E|0,2,0);if(d)break a}else{if(!(l&32)){v=u;w=da(v|0,4,0,0)|0|0;v=da(v+4|0,4,0,0)|0|0;z=k+4|0;r=0;l=0;x=da(k+48|0,2,0,1)|0|0;e:while(1){y=x;while(1){x=y+-1|0;if((y|0)<=0)break e;y=da((da(z|0,4,0,0)|0|0)+(x<<1)|0,2,0,0)|0|0;if((y&65535)<63)break;else y=x}o=hw(1,0,y<<16>>16|0)|0;r=o|r;l=C|l}o=w&~r;l=v&~l;x=o;w=l;l=(o|0)==0&(l|0)==0?576:512}else{x=0;w=0;l=576}ea(P|0,l|0,4,0);l=(B|0)!=0;if(!l?((da(D>>0|0,1,0,0)|0)&32)==0:0){if(!((x|0)==0&(w|0)==0))break;if((da(F>>0|0,1,0,0)|0)&4)break;if((da(k+44|0,2,0,0)|0|0)>=(da(A|0,2,0,0)|0|0))break;if(!(((da(p|0,2,0,0)|0)&4)==0&(da(2190*4|0,4,0,0)|0|0)!=0))break;if((da((da(da(W|0,4,0,0)|0|0,4,0,0)|0|0)+60|0,2,0,0)|0)&64)break}ea(J>>0|0,(l?t&255:0)|0,1,0);h=E<<16>>16;l=h+1+(((da(k+44|0,2,0,0)|0|0)*15|0)/(da(A|0,2,0,0)|0|0)|0)&65535;if(!((x|0)==0&(w|0)==0))l=Fv(l,h+16&65535)|0;ea(O|0,l|0,2,0);Hv(R,V,E);d=Ev(a,V)|0;ea(L|0,E|0,2,0);if(d)break a}while(0);d=Iv(a,Q,k,0)|0;if(da(S|0,4,0,0)|0)break a}k=da(k+20|0,4,0,0)|0|0;if(!((d|0)==0&(k|0)!=0))break;else t=t+1|0}}while(0);i=Y;return d|0}function Hu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;W=i;i=i+608|0;if((i|0)>=(j|0))ba();U=W+168|0;S=W+576|0;T=W+112|0;Q=W+56|0;R=W;d=da(a|0,4,0,0)|0|0;N=da(a+4|0,4,0,0)|0|0;h=da(N+20|0,4,0,0)|0|0;g=da(N+12|0,4,0,0)|0|0;P=h+(g*48|0)|0;M=da(a+12|0,4,0,0)|0|0;e=T+0|0;f=e+56|0;do{ea(e|0,0|0,4,0);e=e+4|0}while((e|0)<(f|0));f=da(d+4|0,4,0,0)|0|0;e=da(M+16>>0|0,1,0,1)|0|0;L=da(f+(e*72|0)+48|0,4,0,0)|0|0;a:do if((g|0)>0){v=M+8|0;w=S+8|0;x=S+16|0;y=M+40|0;z=M+48|0;A=M+36|0;B=M+18|0;C=M+17|0;D=M+24|0;E=M+20|0;F=M+22|0;G=U+4|0;H=U+8|0;I=U+12|0;J=U+20|0;K=S+4|0;r=f+(e*72|0)+24|0;s=R+8|0;t=T+8|0;u=Q+8|0;while(1){b:do if(((da(h+18|0,2,0,0)|0)&256)!=0?(O=da(h+12|0,4,0,0)|0|0,g=O+408|0,f=v,!(((da(f|0,4,0,0)|0)&(da(g|0,4,0,0)|0)|0)==0?((da(f+4|0,4,0,0)|0)&(da(g+4|0,4,0,0)|0)|0)==0:0)):0){g=O+20|0;q=(da(g|0,4,0,0)|0|0)+((da(O+12|0,4,0,0)|0|0)*48|0)|0;ea(S+0|0,da(a+0|0,4,0,0)|0|0,4,0);ea(S+4|0,da(a+4|0,4,0,0)|0|0,4,0);ea(S+8|0,da(a+8|0,4,0,0)|0|0,4,0);ea(S+12|0,da(a+12|0,4,0,0)|0|0,4,0);ea(w|0,0|0,4,0);ea(x|0,Q|0,4,0);g=da(g|0,4,0,0)|0|0;c:do if(g>>>0>>0){e=1;d=0;d:while(1){if(!((da(g+18|0,2,0,0)|0)&512))if((da(g+8|0,4,0,0)|0|0)==(L|0)){ea(U|0,da(N|0,4,0,0)|0|0,4,0);ea(G|0,N|0,4,0);ea(H>>0|0,72|0,1,0);ea(I|0,1|0,4,0);ea(J|0,g|0,4,0);f=U;V=10}else f=e;else{f=da(g+12|0,4,0,0)|0|0;V=10}do if((V|0)==10){V=0;ea(K|0,f|0,4,0);ea(Q|0,0|0,2,0);if(!((da((da(r|0,4,0,0)|0|0)+44>>0|0,1,0,0)|0)&16))d=Gu(S,b,c)|0;else d=Fu(S,b,c)|0;if(!d)d=Hu(S,b,c)|0;f=da(Q|0,2,0,0)|0|0;if(!(f<<16>>16))break d;if(e){ea(T|0,f|0,2,0);jw(t|0,u|0,(f&65535)<<4|0)|0;f=0;break}o=da(T|0,2,0,0)|0|0;ea(R|0,o|0,2,0);p=o&65535;jw(s|0,t|0,p<<4|0)|0;ea(T|0,0|0,2,0);if(!(o<<16>>16))f=0;else{o=0;do{if(!(f<<16>>16))f=0;else{k=R+(o<<4)+8|0;e=da(k|0,4,0,0)|0|0;k=da(k+4|0,4,0,0)|0|0;l=da(R+(o<<4)+16|0,2,0,0)|0|0;m=da(R+(o<<4)+18|0,2,0,0)|0|0;n=0;do{X=Q+(n<<4)+8|0;Y=da(X|0,4,0,0)|0|e;X=da(X+4|0,4,0,0)|0|k;f=Fv(l,da(Q+(n<<4)+16|0,2,0,0)|0|0)|0;Jv(T,Y,X,f,Fv(m,da(Q+(n<<4)+18|0,2,0,0)|0|0)|0);n=n+1|0;f=da(Q|0,2,0,0)|0|0}while((n|0)<(f&65535|0))}o=o+1|0}while((o|0)<(p|0));f=0}}while(0);g=g+48|0;if(g>>>0>=q>>>0)break c;else e=f}ea(T|0,0|0,2,0)}else d=0;while(0);ea(y|0,1|0,2,0);ea(da(z|0,4,0,0)|0|0,h|0,4,0);ea(A|0,8192|0,4,0);ea(B|0,0|0,2,0);ea(C>>0|0,0|0,1,0);ea(D+0|0,0|0,4,0);ea(D+4|0,0|0,4,0);ea(D+8|0,0|0,4,0);if(d)break a;g=da(T|0,2,0,1)|0|0;f=0;while(1){if((f|0)>=(g|0))break b;ea(E|0,(da(T+(f<<4)+16|0,2,0,1)|0|0)+1|0,2,0);ea(F|0,da(T+(f<<4)+18|0,2,0,0)|0|0|0,2,0);n=T+(f<<4)+8|0;d=da(n+4|0,4,0,0)|0|0;o=M;ea(o|0,da(n|0,4,0,0)|0|0,4,0);ea(o+4|0,d|0,4,0);d=Ev(a,M)|0;if(!d)f=f+1|0;else break a}}while(0);h=h+48|0;if(h>>>0>=P>>>0){d=0;break}}}else d=0;while(0);i=W;return d|0}function Iu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=b+48|0;d=da(c|0,4,0,0)|0|0;e=b+56|0;if((d|0)!=(e|0))lg(a,d);Kv(a,b);ea(c|0,e|0,4,0);ea(b+40|0,0|0,2,0);ea(b+44|0,3|0,2,0);ea(b+36|0,0|0,4,0);return}function Ju(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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,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,ca=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=i;i=i+32|0;if((i|0)>=(j|0))ba();Y=ja+24|0;V=ja+16|0;aa=ja+8|0;ia=ja;X=da(a|0,4,0,0)|0|0;fa=da(X|0,4,0,0)|0|0;k=da(a+41>>0|0,1,0,0)|0|0;ga=k&255;if((k&255)<2)R=1;else R=k<<24>>24==2?5:10;ha=a+8|0;f=da(ha|0,4,0,0)|0|0;Z=b<<16>>16==0;if((f|0)==0|Z)Q=0;else Q=da(f|0,4,0,0)|0|0;g=Q<<1;ca=g+(_((ga<<3)+64|0,R)|0)|0;ca=lh(fa,ca,((ca|0)<0)<<31>>31)|0;do if(ca){f=ca+(R<<5)|0;ea(f+0|0,0|0,4,0);ea(f+4|0,0|0,4,0);ea(f+8|0,0|0,4,0);ea(f+12|0,0|0,4,0);ea(f+16|0,0|0,4,0);ea(f+20|0,0|0,4,0);ea(f+24|0,0|0,4,0);ea(f+28|0,0|0,4,0);c=R<<1;h=_(R,-2)|0;h=ca+((_((((h|0)>-1?h:1073741823)+(R<<1)<<2)+4|0,ga)|0)+(R<<6))|0;e=c;d=ca;c=ca+(c<<5)|0;while(1){ea(d+24|0,c|0,4,0);e=e+-1|0;if((e|0)<=0)break;else{d=d+32|0;c=c+(ga<<2)|0}}e=(Q|0)!=0;if(e)ew(h|0,0,g|0)|0;else h=0;P=da(X+424|0,4,0,0)|0|0;ea(ca+(R<<5)+16|0,(P>>>0<48?P&65535:48)|0,2,0);if(e)ea(ca+(R<<5)+22>>0|0,(k<<24>>24!=0?-1:Q&255)|0,1,0);P=k<<24>>24==0;if(!P){L=a+16|0;M=a+34|0;N=b<<16>>16<11;O=(b&65535)+16|0;I=b<<16>>16;J=((I|0)<0)<<31>>31;K=R>>>0>1;c=ca;H=0;g=0;k=0;b=0;d=1;while(1){if((d|0)>0){C=H&65535;D=H<<2;E=c+18|0;F=c+16|0;G=0;e=0;B=f;while(1){l=da(L|0,4,0,0)|0|0;if(l){w=B+22|0;x=B+16|0;y=B+20|0;z=B+24|0;A=B+8|0;v=e;while(1){o=da(w>>0|0,1,0,0)|0|0;e=V;ea(e|0,0|0,4,0);ea(e+4|0,0|0,4,0);e=l;n=B;m=da(n|0,4,0,0)|0|0;n=da(n+4|0,4,0,0)|0|0;a:do if((((da(e|0,4,0,0)|0)&~m|0)==0?((da(e+4|0,4,0,0)|0)&~n|0)==0:0)?(S=l+8|0,U=S,T=da(U|0,4,0,0)|0|0,U=da(U+4|0,4,0,0)|0|0,(T&m|0)==0&(U&n|0)==0):0){s=da(x|0,2,0,1)|0|0;t=Fv(da(l+18|0,2,0,0)|0|0,s+(da(l+20|0,2,0,1)|0|0)&65535)|0;t=Fv(t,da(y|0,2,0,0)|0|0)|0;s=(da(l+22|0,2,0,1)|0|0)+s|0;u=s&65535;r=T|m;q=U|n;if(o<<24>>24<0)o=Lv(a,da(ha|0,4,0,0)|0|0,B,da(M|0,2,0,0)|0|0,C,l,V)|0;else{n=A;m=da(n+4|0,4,0,0)|0|0;e=V;ea(e|0,da(n|0,4,0,0)|0|0,4,0);ea(e+4|0,m|0,4,0)}n=o<<24>>24;if(o<<24>>24>-1&(Q|0)>(n|0)){p=h+(n<<1)|0;m=da(p|0,2,0,0)|0|0;if(!(m<<16>>16)){n=((Q-n|0)*100|0)/(Q|0)|0;n=(es(n,((n|0)<0)<<31>>31)|0)&65535;if(N)e=0;else e=((es(I,J)|0)&65535)+65503&65535;n=O+(((n<<16)+-4325376|0)>>>16)+e|0;if((da(M|0,2,0,0)|0)&1024)n=(n&65535)+16|0;m=n&65535;ea(p|0,m|0,2,0)}p=Fv(t,m)|0}else p=t;b:do if((v|0)>0){e=0;m=c;while(1){n=m;if(((da(n|0,4,0,0)|0|0)==(r|0)?(da(n+4|0,4,0,0)|0|0)==(q|0):0)?((da(m+22>>0|0,1,0,0)|0)^o)<<24>>24>-1:0)break;e=e+1|0;if((e|0)>=(v|0)){W=35;break b}else m=m+32|0}e=da(m+18|0,2,0,0)|0|0;if(e<<16>>16>16){e=v;break a}if(e<<16>>16!=p<<16>>16){e=v;break}if((da(m+16|0,2,0,0)|0|0)>(s<<16>>16|0))e=v;else{e=v;break a}}else W=35;while(0);if((W|0)==35){W=0;m=(v|0)<(R|0);if(!m){if(p<<16>>16>g<<16>>16){e=v;break}if(!(p<<16>>16!=g<<16>>16?1:t<<16>>16>16)){e=v;break}}e=(m&1)+v|0;m=c+((m?v:k)<<5)|0}q=B;s=S;r=da(s+4|0,4,0,0)|0|(da(q+4|0,4,0,0)|0);n=m;ea(n|0,da(s|0,4,0,0)|0|(da(q|0,4,0,0)|0)|0,4,0);ea(n+4|0,r|0,4,0);r=V;n=da(r+4|0,4,0,0)|0|0;q=m+8|0;ea(q|0,da(r|0,4,0,0)|0|0,4,0);ea(q+4|0,n|0,4,0);ea(m+16|0,u|0,2,0);ea(m+18|0,p|0,2,0);ea(m+20|0,t|0,2,0);ea(m+22>>0|0,o|0,1,0);m=m+24|0;jw(da(m|0,4,0,0)|0|0,da(z|0,4,0,0)|0|0,D|0)|0;ea((da(m|0,4,0,0)|0|0)+(H<<2)|0,l|0,4,0);if((e|0)<(R|0))break;g=da(E|0,2,0,0)|0|0;b=da(F|0,2,0,0)|0|0;if(K){o=c;p=1;n=g;k=0;m=b}else{k=0;break}while(1){g=da(o+50|0,2,0,0)|0|0;do if(g<<16>>16<=n<<16>>16){if(g<<16>>16!=n<<16>>16){g=n;b=m;break}b=da(o+52|0,2,0,0)|0|0;if(b<<16>>16>m<<16>>16)W=48;else{g=n;b=m}}else{b=da(o+52|0,2,0,0)|0|0;W=48}while(0);o=o+32|0;if((W|0)==48){W=0;k=p}p=p+1|0;if((p|0)>=(R|0))break;else{n=g;m=b}}}else e=v;while(0);l=da(l+52|0,4,0,0)|0|0;if(!l)break;else v=e}}G=G+1|0;if((G|0)==(d|0)){d=e;break}else B=B+32|0}}else d=0;H=H+1|0;if((H|0)>=(ga|0))break;else{G=c;c=f;f=G}}if(!d){sh(X,34008,Y);lg(fa,ca);break}if((d|0)>1){e=1;f=c;do{if((da(f+18|0,2,0,0)|0|0)>(da(c+(e<<5)+18|0,2,0,0)|0|0))f=c+(e<<5)|0;e=e+1|0}while((e|0)!=(d|0))}else f=c;if(!P){d=a+4|0;e=da(f+24|0,4,0,0)|0|0;c=0;do{W=da(e+(c<<2)|0,4,0,0)|0|0;ea(a+(c*80|0)+800|0,W|0,4,0);W=da(W+16>>0|0,1,0,0)|0|0;ea(a+(c*80|0)+780>>0|0,W|0,1,0);ea(a+(c*80|0)+740|0,da((da(d|0,4,0,0)|0|0)+((W&255)*72|0)+48|0,4,0,0)|0|0,4,0);c=c+1|0}while((c|0)<(ga|0))}}d=a+34|0;if((((da(d|0,2,0,0)|0)&1536)==1024?($=a+40|0,!((da($>>0|0,1,0,0)|0|0)!=0|Z)):0)?(W=a+12|0,V=ga+-1|0,V=(Lv(a,da(W|0,4,0,0)|0|0,f,512,V&65535,da((da(f+24|0,4,0,0)|0|0)+(V<<2)|0,4,0,0)|0|0,aa)|0)<<24>>24,(V|0)==(da(da(W|0,4,0,0)|0|0,4,0,0)|0|0)):0)ea($>>0|0,2|0,1,0);e=da(ha|0,4,0,0)|0|0;if(e){c=da(d|0,2,0,0)|0|0;d=da(f+22>>0|0,1,0,0)|0|0;if(c&512){if((d<<24>>24|0)==(da(e|0,4,0,0)|0|0))ea(a+40>>0|0,2|0,1,0)}else{ea(a+36>>0|0,(d<<24>>24<0?0:d)|0,1,0);U=f+8|0;W=da(U+4|0,4,0,0)|0|0;V=a+24|0;ea(V|0,da(U|0,4,0,0)|0|0,4,0);ea(V+4|0,W|0,4,0)}if(((c&2048)!=0?(da(a+36>>0|0,1,0,0)|0|0)==(da(e|0,4,0,0)|0|0):0)?(W=ia,ea(W|0,0|0,4,0),ea(W+4|0,0|0,4,0),W=ga+-1|0,W=(Lv(a,e,f,0,W&65535,da((da(f+24|0,4,0,0)|0|0)+(W<<2)|0,4,0,0)|0|0,ia)|0)<<24>>24,(W|0)==(da(da(ha|0,4,0,0)|0|0,4,0,0)|0|0)):0){ea(a+37>>0|0,1|0,1,0);U=ia;W=da(U+4|0,4,0,0)|0|0;V=a+24|0;ea(V|0,da(U|0,4,0,0)|0|0,4,0);ea(V+4|0,W|0,4,0)}}ea(a+32|0,da(f+16|0,2,0,0)|0|0|0,2,0);lg(fa,ca)}while(0);i=ja;return}function Ku(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((b|0)!=0?(f=da(b|0,4,0,0)|0|0,(f|0)>0):0){d=da(b+4|0,4,0,0)|0|0;c=0;b=0;e=0;do{g=zv(a,da(d+(e*20|0)|0,4,0,0)|0|0)|0;c=g|c;b=C|b;e=e+1|0}while((e|0)<(f|0))}else{b=0;c=0}C=b;return c|0}function Lu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;do if((((da(a+8|0,4,0,0)|0|0)==(da(b+40|0,4,0,0)|0|0)?((da(a+18|0,2,0,0)|0)&2)!=0:0)?(e=a+32|0,((da(e|0,4,0,0)|0)&c|0)==0?((da(e+4|0,4,0,0)|0)&d|0)==0:0):0)?(f=da(a+12|0,4,0,0)|0|0,(f|0)>=0):0){c=da((da((da(b+16|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(f*24|0)+21>>0|0,1,0,0)|0|0;d=(mv(da(a|0,4,0,0)|0|0)|0)<<24>>24;if((d|0)==66){d=c<<24>>24==66&1;break}else if((d|0)==65){d=1;break}else{d=c<<24>>24>66&1;break}}else d=0;while(0);return d|0}function Mu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=b+44|0;if((da(g|0,2,0,1)|0|0|0)<(c|0)){d=c+7&-8;e=lh(a,d<<2,0)|0;if(!e)c=7;else{f=b+48|0;jw(e|0,da(f|0,4,0,0)|0|0,(da(g|0,2,0,1)|0|0)<<2|0)|0;c=da(f|0,4,0,0)|0|0;if((c|0)!=(b+56|0))lg(a,c);ea(f|0,e|0,4,0);ea(g|0,d|0,2,0);c=0}}else c=0;return c|0}function Nu(a,b,c){a=a|0;b=b|0;c=c|0;do if(!((da(b+4|0,4,0,0)|0)&256)){if((c|0)!=0?((da(c+4|0,4,0,0)|0)&256|0)!=0:0){b=bu(a,c)|0;break}b=bu(a,b)|0;if(!b)b=bu(a,c)|0}else b=bu(a,b)|0;while(0);return b|0}function Ou(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+144|0;if((i|0)>=(j|0))ba();p=u;t=u+8|0;k=u+36|0;if(((da(a+450>>0|0,1,0,0)|0|0)==2?(m=da(c+44>>0|0,1,0,1)|0|0,s=da(a+8|0,4,0,0)|0|0,h=da(a|0,4,0,0)|0|0,r=da(a+464|0,4,0,0)|0|0,o=da(c+64|0,4,0,0)|0|0,q=o+36|0,n=da(q|0,4,0,0)|0|0,(n&8192|0)==0):0)?(g=f&65535,(g&64|0)==0):0){f=n&48;do if(!f){if((n&1024|0)==0?(da(o+24|0,2,0,0)|0|0)!=0:0){l=1;break}l=(g&3|0)!=0}else l=1;while(0);ea(t+4|0,k|0,4,0);ea(t+8|0,k|0,4,0);ea(t+12|0,0|0,4,0);ea(t+16|0,100|0,4,0);ea(t+20|0,1e9|0,4,0);ea(t+24>>0|0,1|0,1,0);ea(t+25>>0|0,0|0,1,0);ea(t|0,h|0,4,0);a=l?33576:33584;c=a;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;Rk(t,a,c-a&1073741823);if(!(da(b+(m*72|0)+28|0,4,0,0)|0)){ea(p|0,da(b+(m*72|0)+16|0,4,0,0)|0|0,4,0);Dn(t,0,33608,p)}else{ea(p|0,da(b+(m*72|0)+46>>0|0,1,0,1)|0|0,4,0);Dn(t,0,33592,p)}a=da(b+(m*72|0)+20|0,4,0,0)|0|0;if(a){ea(p|0,a|0,4,0);Dn(t,0,33624,p)}do if(!(n&1280)){g=o+28|0;c=da(g|0,4,0,0)|0|0;f=b+(m*72|0)+24|0;if(((da((da(f|0,4,0,0)|0|0)+44>>0|0,1,0,0)|0)&32)!=0?((da(c+51>>0|0,1,0,0)|0)&3)==2:0)if(l)a=33632;else break;else if(!(n&131072))if(!(n&16384))a=(n&64|0)==0?33744:33720;else a=33688;else a=33648;Rk(t,33760,7);ea(p|0,da(c|0,4,0,0)|0|0,4,0);Dn(t,0,a,p);n=da(o+24|0,2,0,0)|0|0;l=da((da(f|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;k=da((da(g|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;c=n&65535;if(!(n<<16>>16)){if(!((da(q|0,4,0,0)|0)&48))break;Rk(t,33904,2);g=0}else{f=da(o+42|0,2,0,0)|0|0;Rk(t,33904,2);f=f&65535;g=0;do{a=da(k+(g<<1)|0,2,0,0)|0|0;if(a<<16>>16<0)a=20456;else a=da(l+((a<<16>>16)*24|0)|0,4,0,0)|0|0;if((g|0)<(f|0)){if(g)Rk(t,33920,5);ea(p|0,a|0,4,0);Dn(t,0,33928,p)}else Mv(t,g,a,33912);g=g+1|0}while((g|0)<(c|0));g=c>>>0>1?c:1}f=da(q|0,4,0,0)|0|0;if(!(f&32))a=g;else{f=da(k+(g<<1)|0,2,0,0)|0|0;if(f<<16>>16<0)f=20456;else f=da(l+((f<<16>>16)*24|0)|0,4,0,0)|0|0;Mv(t,g,f,33936);f=da(q|0,4,0,0)|0|0;a=g+1|0}if(f&16){g=da(k+(g<<1)|0,2,0,0)|0|0;if(g<<16>>16<0)g=20456;else g=da(l+((g<<16>>16)*24|0)|0,4,0,0)|0|0;Mv(t,a,g,33944)}Rk(t,33952,1)}else{if((n&256|0)==0|(n&15|0)==0){if(!(n&1024))break;n=da(o+32|0,4,0,0)|0|0;ea(p|0,da(o+24|0,4,0,0)|0|0,4,0);ea(p+4|0,n|0,4,0);Dn(t,0,33872,p);break}if(!(n&5))if((f|0)==48)f=33784;else f=(n&32|0)==0?33824:33808;else f=33768;Rk(t,33840,27);g=f;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;Rk(t,f,g-f&1073741823)}while(0);n=sg(t)|0;wh(s,vh(s,157,r,d,e)|0,n,-1)}i=u;return}function Pu(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,k=0,l=0;j=da(b|0,4,0,0)|0|0;l=da(a+8|0,4,0,0)|0|0;g=da(j>>0|0,1,0,0)|0|0;do if(g<<24>>24==76)vh(l,28,0,f,0)|0;else if(g<<24>>24==79)f=hs(a,da(j+16|0,4,0,0)|0|0,f)|0;else{h=da(c+64|0,4,0,0)|0|0;g=h+36|0;if((((da(g|0,4,0,0)|0)&1024|0)==0?(i=da(h+28|0,4,0,0)|0|0,(i|0)!=0):0)?(da((da(i+28|0,4,0,0)|0|0)+d>>0|0,1,0,0)|0|0)!=0:0)e=(e|0)==0&1;k=lv(a,j,4,0)|0;if((k|0)==4)e=(e|0)==0&1;j=da(j+28|0,4,0,0)|0|0;d=(e|0)!=0;vh(l,d?105:108,j,0,0)|0;ea(g|0,da(g|0,4,0,0)|0|2048|0,4,0);i=c+56|0;g=da(i|0,4,0,0)|0|0;if(!g){ea(c+16|0,ws(l)|0|0,4,0);g=da(i|0,4,0,0)|0|0}h=g+1|0;ea(i|0,h|0,4,0);g=c+60|0;h=Vl(da(a|0,4,0,0)|0|0,da(g|0,4,0,0)|0|0,h*12|0,0)|0;ea(g|0,h|0,4,0);if(!h){ea(i|0,0|0,4,0);break}g=(da(i|0,4,0,0)|0|0)+-1|0;ea(h+(g*12|0)|0,j|0,4,0);if((k|0)==1)e=vh(l,103,j,f,0)|0;else e=vh(l,47,j,0,f)|0;ea(h+(g*12|0)+4|0,e|0,4,0);ea(h+(g*12|0)+8>>0|0,(d?6:7)|0,1,0);vh(l,76,f,0,0)|0}while(0);Qu(c,b);return f|0}function Qu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;a:do if(b){h=a+72|0;g=0;while(1){d=b+20|0;f=da(d|0,2,0,0)|0|0;if(f&4)break a;if((da(a|0,4,0,0)|0|0)!=0?((da((da(b|0,4,0,0)|0|0)+4|0,4,0,0)|0)&1|0)==0:0)break a;c=h;e=b+40|0;if(!(((da(e|0,4,0,0)|0)&(da(c|0,4,0,0)|0)|0)==0?((da(e+4|0,4,0,0)|0)&(da(c+4|0,4,0,0)|0)|0)==0:0))break a;c=f&65535;ea(d|0,c|((g|0)==0|(c&1024|0)==0?4:512)|0,2,0);c=da(b+4|0,4,0,0)|0|0;if((c|0)<0)break a;b=da((da(b+24|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;e=b+(c*48|0)+22|0;d=(da(e>>0|0,1,0,0)|0|0)+-1<<24>>24;ea(e>>0|0,d|0,1,0);if(d<<24>>24)break a;b=b+(c*48|0)|0;if(!b)break;else g=g+1|0}}while(0);return}function Ru(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,k=0;do if(!((da((da(a|0,4,0,0)|0|0)+60|0,2,0,0)|0)&2)){h=a+116|0;g=0;e=h;while(1){f=e+12|0;if(!(da(f|0,4,0,0)|0)){k=4;break}g=g+1|0;if((g|0)>=10){i=0;e=-1;j=2147483647;break}else e=e+20|0}if((k|0)==4){ea(e+8|0,da(a+100|0,4,0,0)|0|0,4,0);ea(e|0,b|0,4,0);ea(e+4|0,c|0,2,0);ea(f|0,d|0,4,0);ea(e+6>>0|0,0|0,1,0);d=a+104|0;b=da(d|0,4,0,0)|0|0;ea(d|0,b+1|0,4,0);ea(e+16|0,b|0,4,0);break}while(1){g=da(h+16|0,4,0,0)|0|0;f=(g|0)<(j|0);e=f?i:e;i=i+1|0;if((i|0)==10)break;else{j=f?g:j;h=h+20|0}}if((e|0)>-1){ea(a+(e*20|0)+124|0,da(a+100|0,4,0,0)|0|0,4,0);ea(a+(e*20|0)+116|0,b|0,4,0);ea(a+(e*20|0)+120|0,c|0,2,0);ea(a+(e*20|0)+128|0,d|0,4,0);ea(a+(e*20|0)+122>>0|0,0|0,1,0);d=a+104|0;b=da(d|0,4,0,0)|0|0;ea(d|0,b+1|0,4,0);ea(a+(e*20|0)+132|0,b|0,4,0)}}while(0);return}function Su(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=da(a+8|0,4,0,0)|0|0;j=da(b+64|0,4,0,0)|0|0;k=da(j+24|0,2,0,0)|0|0;m=da(j+42|0,2,0,0)|0|0;q=da(j+28|0,4,0,0)|0|0;i=a+72|0;n=da(i|0,4,0,0)|0|0;f=n+1|0;p=k&65535;l=p+d|0;ea(i|0,n+l|0,4,0);n=da(a|0,4,0,0)|0|0;q=jh(n,nt(o,q)|0)|0;n=(q|0)!=0;if(!n)ea((da(a|0,4,0,0)|0|0)+65>>0|0,1|0,1,0);if(m<<16>>16){d=da(b+8|0,4,0,0)|0|0;g=(c|0)!=0;vh(o,g?105:108,d,0,0)|0;h=vh(o,16,0,0,0)|0;i=m&65535;g=vh(o,g?62:65,d,0,f)|0;wh(o,g,i,-14);ea(b+20|0,g|0,4,0);g=da(o+32|0,4,0,0)|0|0;if(g>>>0>h>>>0)ea((da(o+4|0,4,0,0)|0|0)+(h*20|0)+8|0,g|0,4,0);ea((da(o+24|0,4,0,0)|0|0)+88|0,g+-1|0,4,0);h=0;do{vh(o,47,d,h,h+f|0)|0;h=h+1|0}while((h|0)<(i|0))}if((m&65535)<(k&65535)){j=j+48|0;i=b+12|0;k=(l|0)==1;l=m&65535;h=f;while(1){g=da((da(j|0,4,0,0)|0|0)+(l<<2)|0,4,0,0)|0|0;d=l+h|0;f=Pu(a,g,b,l,c,d)|0;do if((f|0)!=(d|0))if(k){Zr(a,h);break}else{vh(o,34,f,d,0)|0;f=h;break}else f=h;while(0);if(!((da(g+18|0,2,0,0)|0)&129)){d=da((da(g|0,4,0,0)|0|0)+16|0,4,0,0)|0|0;if(Tu(d)|0)vh(o,76,f+l|0,da(i|0,4,0,0)|0|0,0)|0;if(n){g=q+l|0;if((Au(d,da(g>>0|0,1,0,0)|0|0)|0)<<24>>24==65){ea(g>>0|0,65|0,1,0);h=65}else h=da(g>>0|0,1,0,0)|0|0;if(Uu(d,h)|0)ea(g>>0|0,65|0,1,0)}}l=l+1|0;if((l|0)>=(p|0))break;else h=f}}ea(e|0,q|0,4,0);return f|0}function Tu(a){a=a|0;var b=0;b=da(a>>0|0,1,0,0)|0|0;if((b+99&255)<2)do{a=da(a+12|0,4,0,0)|0|0;b=da(a>>0|0,1,0,0)|0|0}while((b+99&255)<2);if(b<<24>>24==-97)b=da(a+38>>0|0,1,0,0)|0|0;switch(b&255|0){case 134:case 133:case 97:case 132:{a=0;break}case 154:{if(!((da(a+4|0,4,0,0)|0)&1048576)){b=da(a+32|0,2,0,0)|0|0;if(b<<16>>16>-1)a=(da((da((da(a+44|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+((b<<16>>16)*24|0)+20>>0|0,1,0,0)|0|0)==0;else a=0}else a=1;a=a&1;break}default:a=1}return a|0}function Uu(a,b){a=a|0;b=b|0;var c=0;a:do if(b<<24>>24==65)a=1;else{c=da(a>>0|0,1,0,0)|0|0;if((c+99&255)<2)do{a=da(a+12|0,4,0,0)|0|0;c=da(a>>0|0,1,0,0)|0|0}while((c+99&255)<2);if(c<<24>>24==-97)c=da(a+38>>0|0,1,0,0)|0|0;switch(c&255|0){case 132:{a=(b+-67&255)<2&1;break a}case 133:{a=(b<<24>>24==69|b<<24>>24==67)&1;break a}case 154:{if((da(a+32|0,2,0,0)|0|0)<0)a=(b+-67&255)<2;else a=0;a=a&1;break a}case 134:{a=1;break a}case 97:{a=b<<24>>24==66&1;break a}default:{a=0;break a}}}while(0);return a|0}function Vu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=da(a+8|0,4,0,0)|0|0;do if(d){a:do if((c|0)>0)while(1){if((da(d>>0|0,1,0,0)|0|0)!=65){e=d;break a}c=c+-1|0;b=b+1|0;d=d+1|0;if((c|0)<=0){e=d;break}}else e=d;while(0);while(1){if((c|0)<=1){g=8;break}d=c+-1|0;if((da(e+d>>0|0,1,0,0)|0|0)==65)c=d;else break}if((g|0)==8)if((c|0)<=0)break;vh(f,48,b,c,0)|0;wh(f,-1,e,c);ct(a,b,c)}while(0);return}function Wu(a,b){a=a|0;b=b|0;var c=0,d=0;if(b){Nv(b+328|0);d=b+16|0;c=da(d|0,4,0,0)|0|0;if(c)do{ea(d|0,da(c+52|0,4,0,0)|0|0,4,0);Iu(a,c);lg(a,c);c=da(d|0,4,0,0)|0|0}while((c|0)!=0);lg(a,b)}return}function Xu(a,b){a=a|0;b=b|0;var c=0,d=0;c=i;i=i+32|0;if((i|0)>=(j|0))ba();d=c;ea(d+0|0,0|0,4,0);ea(d+4|0,0|0,4,0);ea(d+8|0,0|0,4,0);ea(d+12|0,0|0,4,0);ea(d+16|0,0|0,4,0);ea(d+20|0,0|0,4,0);ea(d|0,80|0,4,0);ea(d+4|0,81|0,4,0);ea(d+24|0,a|0,4,0);qs(d,b)|0;i=c;return}function Yu(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,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();l=n+4|0;m=n;k=da(a+8|0,4,0,0)|0|0;ea(l|0,0|0,4,0);ea(m|0,0|0,4,0);if(!((k|0)==0|(b|0)==0)){f=da(b>>0|0,1,0,0)|0|0;e=f&255;a:do switch(e|0){case 79:case 78:case 83:case 80:case 81:case 82:{f=b+12|0;h=_t(a,da(f|0,4,0,0)|0|0,l)|0;g=b+16|0;k=_t(a,da(g|0,4,0,0)|0|0,m)|0;$t(a,da(f|0,4,0,0)|0|0,da(g|0,4,0,0)|0|0,e,h,k,c,d);break}case 71:{Yu(a,da(b+12|0,4,0,0)|0|0,c,d);k=a+100|0;ea(k|0,(da(k|0,4,0,0)|0|0)+1|0,4,0);Yu(a,da(b+16|0,4,0,0)|0|0,c,d);au(a);break}case 19:{ft(a,da(b+12|0,4,0,0)|0|0,c,d);break}case 72:{h=ws(k)|0;ft(a,da(b+12|0,4,0,0)|0|0,h,d^16);e=a+100|0;ea(e|0,(da(e|0,4,0,0)|0|0)+1|0,4,0);Yu(a,da(b+16|0,4,0,0)|0|0,c,d);e=da(k+24|0,4,0,0)|0|0;f=~h;if((h|0)<0?(g=da(e+112|0,4,0,0)|0|0,(g|0)!=0):0)ea(g+(f<<2)|0,da(k+32|0,4,0,0)|0|0,4,0);ea(e+88|0,(da(k+32|0,4,0,0)|0|0)+-1|0,4,0);au(a);break}case 148:case 73:{d=b+12|0;h=_t(a,da(d|0,4,0,0)|0|0,l)|0;g=b+16|0;k=_t(a,da(g|0,4,0,0)|0|0,m)|0;$t(a,da(d|0,4,0,0)|0|0,da(g|0,4,0,0)|0|0,f<<24>>24==73?79:78,h,k,c,128);break}case 77:case 76:{vh(k,e,_t(a,da(b+12|0,4,0,0)|0|0,l)|0,c,0)|0;break}case 74:{Zu(a,b,c,1,d);break}case 75:{g=ws(k)|0;eu(a,b,g,(d|0)!=0?c:g);vh(k,16,0,c,0)|0;f=da(k+24|0,4,0,0)|0|0;e=~g;if((g|0)<0?(h=da(f+112|0,4,0,0)|0|0,(h|0)!=0):0)ea(h+(e<<2)|0,da(k+32|0,4,0,0)|0|0,4,0);ea(f+88|0,(da(k+32|0,4,0,0)|0|0)+-1|0,4,0);break}default:{if(_u(b)|0){vh(k,16,0,c,0)|0;break a}if(!(lu(b)|0))vh(k,45,_t(a,b,l)|0,c,(d|0)!=0&1)|0}}while(0);Zr(a,da(l|0,4,0,0)|0|0);Zr(a,da(m|0,4,0,0)|0|0)}i=n;return}function Zu(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,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+208|0;if((i|0)>=(j|0))ba();h=n+152|0;f=n+104|0;g=n+56|0;k=n+8|0;l=n;ea(l|0,0|0,4,0);m=k+0|0;o=(da(b+12|0,4,0,0)|0|0)+0|0;p=m+48|0;do{ea(m|0,da(o|0,4,0,0)|0|0,4,0);m=m+4|0;o=o+4|0}while((m|0)<(p|0));ea(h>>0|0,72|0,1,0);ea(h+12|0,f|0,4,0);ea(h+16|0,g|0,4,0);ea(f>>0|0,83|0,1,0);ea(f+12|0,k|0,4,0);b=da((da(b+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;ea(f+16|0,da(b|0,4,0,0)|0|0,4,0);ea(g>>0|0,81|0,1,0);ea(g+12|0,k|0,4,0);ea(g+16|0,da(b+20|0,4,0,0)|0|0,4,0);b=_t(a,k,l)|0;ea(k+38>>0|0,da(k>>0|0,1,0,0)|0|0|0,1,0);ea(k>>0|0,-97|0,1,0);ea(k+28|0,b|0,4,0);b=k+4|0;ea(b|0,(da(b|0,4,0,0)|0)&-4097|0,4,0);if(!d)ft(a,h,c,e);else Yu(a,h,c,e);Zr(a,da(l|0,4,0,0)|0|0);i=n;return}function _u(a){a=a|0;var b=0,c=0;c=i;i=i+16|0;if((i|0)>=(j|0))ba();b=c;ea(b|0,0|0,4,0);if(((da(a+4|0,4,0,0)|0)&1|0)==0?(Ls(a,b)|0)!=0:0)a=(da(b|0,4,0,0)|0|0)!=0&1;else a=0;i=c;return a|0}function $u(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if(!((a|0)==0|(b|0)==0)){d=da(b|0,4,0,0)|0|0;if((d|0)>0){b=da(b+4|0,4,0,0)|0|0;c=0;while(1){if((vv(a,da(b+(c*20|0)+4|0,4,0,0)|0|0)|0)>-1){b=1;break a}c=c+1|0;if((c|0)>=(d|0)){b=0;break}}}else b=0}else b=1;while(0);return b|0}function av(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,k=0,l=0,m=0,n=0;j=da(b+20|0,4,0,0)|0|0;a:do if((j|0)>0){k=da(a+38|0,2,0,0)|0|0;l=k<<16>>16>0;m=a+4|0;i=a+36|0;f=(d|0)!=0;g=0;while(1){d=da(b+(g<<3)+40|0,4,0,0)|0|0;if(l){a=(d|0)==0;h=0;do{if(!((da(c+(h<<2)|0,4,0,0)|0|0)<=-1?!((h|0)==(da(i|0,2,0,0)|0|0)&f):0))n=7;do if((n|0)==7){n=0;e=da(m|0,4,0,0)|0|0;if(a)if(!((da(e+(h*24|0)+23>>0|0,1,0,0)|0)&1))break;else{a=1;break a}else if(!(cd(da(e+(h*24|0)|0,4,0,0)|0|0,d)|0)){a=1;break a}else break}while(0);h=h+1|0}while((h|0)<(k<<16>>16|0))}g=g+1|0;if((g|0)>=(j|0)){a=0;break}}}else a=0;while(0);return a|0}function bv(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;if((i|0)>=(j|0))ba();k=t;o=t+8|0;s=da(a+408|0,4,0,0)|0|0;s=(s|0)==0?a:s;h=s+528|0;e=da(h|0,4,0,0)|0|0;a:do if(!e)g=5;else while(1){if((da(e|0,4,0,0)|0|0)==(b|0)?(da(e+12|0,4,0,0)|0|0)==(d|0):0)break a;e=da(e+4|0,4,0,0)|0|0;if(!e){g=5;break}}while(0);do if((g|0)==5){q=da(a|0,4,0,0)|0|0;e=lh(q,24,0)|0;if(e){g=e+0|0;f=g+24|0;do{ea(g>>0|0,0|0,1,0);g=g+1|0}while((g|0)<(f|0));ea(e+4|0,da(h|0,4,0,0)|0|0,4,0);ea(h|0,e|0,4,0);p=lh(q,28,0)|0;if(!p){ea(e+8|0,0|0,4,0);e=0;break}g=p+0|0;f=g+24|0;do{ea(g>>0|0,0|0,1,0);g=g+1|0}while((g|0)<(f|0));ea(e+8|0,p|0,4,0);l=(da(s+8|0,4,0,0)|0|0)+192|0;ea(p+24|0,da(l|0,4,0,0)|0|0,4,0);ea(l|0,p|0,4,0);ea(e|0,b|0,4,0);ea(e+12|0,d|0,4,0);l=e+16|0;ea(l|0,-1|0,4,0);m=e+20|0;ea(m|0,-1|0,4,0);n=lh(q,536,0)|0;if(n){ew(n|0,0,536)|0;ea(o+0|0,0|0,4,0);ea(o+4|0,0|0,4,0);ea(o+8|0,0|0,4,0);ea(o+12|0,0|0,4,0);ea(o+16|0,0|0,4,0);ea(o+20|0,0|0,4,0);ea(o+24|0,0|0,4,0);ea(o+28|0,0|0,4,0);ea(o|0,n|0,4,0);ea(n|0,q|0,4,0);ea(n+412|0,c|0,4,0);ea(n+408|0,s|0,4,0);ea(n+492|0,da(b|0,4,0,0)|0|0,4,0);ea(n+436>>0|0,da(b+8>>0|0,1,0,0)|0|0|0,1,0);ea(n+424|0,da(a+424|0,4,0,0)|0|0,4,0);c=Nq(n)|0;if(c){ea(k|0,da(b|0,4,0,0)|0|0,4,0);wh(c,-1,th(q,34152,k)|0,-1);g=da(b+12|0,4,0,0)|0|0;if(!g)h=0;else{f=Lr(q,g,0,0)|0;if((ks(o,f)|0)==0?(da(q+65>>0|0,1,0,0)|0|0)==0:0){g=ws(c)|0;ft(n,f,g,16)}else g=0;Fk(q,f);h=g}Ov(n,da(b+28|0,4,0,0)|0|0,d);if(h){g=da(c+24|0,4,0,0)|0|0;f=~h;if((h|0)<0?(r=da(g+112|0,4,0,0)|0|0,(r|0)!=0):0)ea(r+(f<<2)|0,da(c+32|0,4,0,0)|0|0,4,0);ea(g+88|0,(da(c+32|0,4,0,0)|0|0)+-1|0,4,0)}vh(c,24,0,0,0)|0;f=a+64|0;g=da(n+4|0,4,0,0)|0|0;if(!(da(f|0,4,0,0)|0)){ea(a+4|0,g|0,4,0);ea(f|0,da(n+64|0,4,0,0)|0|0,4,0)}else lg(da(n|0,4,0,0)|0|0,g);if(!(da(q+65>>0|0,1,0,0)|0)){k=c+4|0;o=da(k|0,4,0,0)|0|0;In(c,s+392|0);ea(p+4|0,da(c+32|0,4,0,0)|0|0,4,0);ea(k|0,0|0,4,0);ea(p|0,o|0,4,0)}ea(p+8|0,da(n+72|0,4,0,0)|0|0,4,0);ea(p+12|0,da(n+68|0,4,0,0)|0|0,4,0);ea(p+16|0,da(n+80|0,4,0,0)|0|0,4,0);ea(p+20|0,b|0,4,0);ea(l|0,da(n+428|0,4,0,0)|0|0,4,0);ea(m|0,da(n+432|0,4,0,0)|0|0,4,0);Ol(c)}Bh(n);lg(q,n)}else e=0}else e=0}while(0);i=t;return e|0}function cv(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=Nq(a)|0;c=bv(a,b,c,e)|0;if(c){if(!(da(b|0,4,0,0)|0))e=0;else e=((da((da(a|0,4,0,0)|0|0)+24|0,4,0,0)|0|0)>>>18&1^1)&255;a=a+72|0;b=(da(a|0,4,0,0)|0|0)+1|0;ea(a|0,b|0,4,0);vh(g,131,d,f,b)|0;wh(g,-1,da(c+8|0,4,0,0)|0|0,-18);c=da(g+4|0,4,0,0)|0|0;if(c)ea(c+(((da(g+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,e|0,1,0)}return}function dv(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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;e=da(a|0,4,0,0)|0|0;g=da((da(e+16|0,4,0,0)|0|0)+(d<<4)|0,4,0,0)|0|0;f=jc[(fa(da(e+284|0,4,0,0)|0|0,7|0)|0)&7](da(e+288|0,4,0,0)|0|0,20,b,c,g,da(a+492|0,4,0,0)|0|0)|0;if((f|0)==1){if((d|0)!=0?1:(da(e+20|0,4,0,0)|0|0)>2){ea(h|0,g|0,4,0);ea(h+4|0,b|0,4,0);ea(h+8|0,c|0,4,0);sh(a,27688,h)}else{ea(h|0,b|0,4,0);ea(h+4|0,c|0,4,0);sh(a,27728,h)}ea(a+12|0,23|0,4,0)}else if(!((f|0)==0|(f|0)==2)){sh(a,25232,h);ea(a+12|0,1|0,4,0)}i=k;return f|0}function ev(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|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,u=0,v=0,w=0,x=0;u=Nq(a)|0;w=(da(a+68|0,4,0,0)|0|0)+-1|0;x=ws(u)|0;if((h|0)<0)vh(u,135,da(e+24>>0|0,1,0,1)|0|0,x,0)|0;j=e+20|0;k=da(j|0,4,0,0)|0|0;if((k|0)>0){m=g+1|0;l=0;do{vh(u,76,m+(da(f+(l<<2)|0,4,0,0)|0|0)|0,x,0)|0;l=l+1|0;k=da(j|0,4,0,0)|0|0}while((l|0)<(k|0))}do if(!i){if(!d){k=a+19|0;j=da(k>>0|0,1,0,0)|0|0;if(!(j<<24>>24)){d=a+72|0;m=(da(d|0,4,0,0)|0|0)+1|0;ea(d|0,m|0,4,0)}else{m=j+-1<<24>>24;ea(k>>0|0,m|0,1,0);m=da(a+((m&255)<<2)+24|0,4,0,0)|0|0}vh(u,34,g+1+(da(f|0,4,0,0)|0|0)|0,m,0)|0;l=vh(u,38,m,0,0)|0;if(((h|0)==1?(da(e|0,4,0,0)|0|0)==(c|0):0)?(vh(u,79,g,x,m)|0,n=da(u+4|0,4,0,0)|0|0,(n|0)!=0):0)ea(n+(((da(u+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,-112|0,1,0);Pq(a,w,b,c,54);vh(u,70,w,0,m)|0;vh(u,16,0,x,0)|0;j=da(u+32|0,4,0,0)|0|0;if(j>>>0>1)ea((da(u+4|0,4,0,0)|0|0)+((j+-2|0)*20|0)+8|0,j|0,4,0);i=j+-1|0;k=(da(u+24|0,4,0,0)|0|0)+88|0;ea(k|0,i|0,4,0);if(j>>>0>l>>>0)ea((da(u+4|0,4,0,0)|0|0)+(l*20|0)+8|0,j|0,4,0);ea(k|0,i|0,4,0);Zr(a,m);break}s=a+60|0;m=da(s|0,4,0,0)|0|0;t=a+56|0;l=da(t|0,4,0,0)|0|0;if((l|0)<(k|0)){r=a+72|0;m=da(r|0,4,0,0)|0|0;ea(r|0,m+k|0,4,0);m=m+1|0}else{ea(s|0,m+k|0,4,0);ea(t|0,l-k|0,4,0)}l=a+19|0;j=da(l>>0|0,1,0,0)|0|0;if(!(j<<24>>24)){i=a+72|0;r=(da(i|0,4,0,0)|0|0)+1|0;ea(i|0,r|0,4,0)}else{r=j+-1<<24>>24;ea(l>>0|0,r|0,1,0);r=da(a+((r&255)<<2)+24|0,4,0,0)|0|0}vh(u,54,w,da(d+40|0,4,0,0)|0|0,b)|0;i=da(a+8|0,4,0,0)|0|0;wh(i,-1,gs(a,d)|0,-6);i=(k|0)>0;if(i){l=g+1|0;j=0;do{vh(u,33,l+(da(f+(j<<2)|0,4,0,0)|0|0)|0,j+m|0,0)|0;j=j+1|0}while((j|0)!=(k|0))}if((h|0)==1?(da(e|0,4,0,0)|0|0)==(c|0):0){p=u+32|0;q=k+1+(da(p|0,4,0,0)|0|0)|0;if(i){b=g+1|0;o=d+4|0;j=c+36|0;i=u+4|0;n=0;do{l=da((da(o|0,4,0,0)|0|0)+(n<<1)|0,2,0,0)|0|0;vh(u,78,b+(da(f+(n<<2)|0,4,0,0)|0|0)|0,q,(l<<16>>16==(da(j|0,2,0,0)|0|0)?0:(l<<16>>16)+1|0)+g|0)|0;l=da(i|0,4,0,0)|0|0;if(l)ea(l+(((da(p|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,16|0,1,0);n=n+1|0}while((n|0)!=(k|0))}vh(u,16,0,x,0)|0}g=nt(u,d)|0;wh(u,vh(u,49,m,k,r)|0,g,k);wh(u,vh(u,69,w,x,r)|0,0,-14);Zr(a,r);ct(a,m,k);if((da(t|0,4,0,0)|0|0)<(k|0)){ea(t|0,k|0,4,0);ea(s|0,m|0,4,0)}}while(0);j=da(e+24>>0|0,1,0,0)|0|0;i=j<<24>>24==0;if(((i?((da((da(a|0,4,0,0)|0|0)+24|0,4,0,0)|0)&16777216|0)==0:0)?(da(a+408|0,4,0,0)|0|0)==0:0)?(da(a+20>>0|0,1,0,0)|0|0)==0:0)ys(a,787,2,0,-2,4);else{if(!((h|0)<1|i^1)){e=da(a+408|0,4,0,0)|0|0;ea(((e|0)==0?a:e)+21>>0|0,1|0,1,0)}vh(u,134,j&255,h,0)|0}i=da(u+24|0,4,0,0)|0|0;j=~x;if((x|0)<0?(v=da(i+112|0,4,0,0)|0|0,(v|0)!=0):0)ea(v+(j<<2)|0,da(u+32|0,4,0,0)|0|0,4,0);ea(i+88|0,(da(u+32|0,4,0,0)|0|0)+-1|0,4,0);vh(u,61,w,0,0)|0;return}function fv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;y=i;i=i+48|0;if((i|0)>=(j|0))ba();t=y+32|0;u=y;v=da(a|0,4,0,0)|0|0;w=Nq(a)|0;if((h|0)<0)x=vh(w,135,da(e+24>>0|0,1,0,1)|0|0,0,0)|0;else x=0;s=e+20|0;if((da(s|0,4,0,0)|0|0)>0){r=(d|0)==0;q=(f|0)==0;p=e+36|0;o=d+4|0;n=0;k=0;do{if(r)m=-1;else m=da((da(o|0,4,0,0)|0|0)+(n<<1)|0,2,0,0)|0|0;l=Pv(a,c,g,m)|0;if(q)m=p;else m=f+(n<<2)|0;k=rs(v,k,Yq(a,79,l,st(v,27,da((da((da(e|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(((da(m|0,4,0,0)|0)<<16>>16)*24|0)|0,4,0,0)|0|0)|0,0)|0)|0;n=n+1|0}while((n|0)<(da(s|0,4,0,0)|0|0));m=e}else{m=e;k=0}if((h|0)>0?(da(m|0,4,0,0)|0|0)==(c|0):0){if(!((da(c+44>>0|0,1,0,0)|0)&32)){f=da(a|0,4,0,0)|0|0;ea(t|0,0|0,4,0);ea(t+4|0,0|0,4,0);f=mr(f,159,t,0)|0;if(!f)f=0;else{ea(f+28|0,g|0,4,0);ea(f+1>>0|0,68|0,1,0)}m=da(b+48|0,4,0,0)|0|0;ea(t|0,0|0,4,0);ea(t+4|0,0|0,4,0);l=mr(v,154,t,0)|0;if(l){ea(l+44|0,c|0,4,0);ea(l+28|0,m|0,4,0);ea(l+32|0,-1|0,2,0)}f=Yq(a,78,f,l,0)|0}else{m=c+8|0;while(1){m=da(m|0,4,0,0)|0|0;if(((da(m+51>>0|0,1,0,0)|0)&3)==2)break;m=m+20|0}s=m+46|0;if(!(da(s|0,2,0,0)|0))f=0;else{o=d+4|0;p=b+48|0;q=t+4|0;r=0;f=0;do{m=da((da(o|0,4,0,0)|0|0)+(r<<1)|0,2,0,0)|0|0;l=Pv(a,c,g,m)|0;n=da(p|0,4,0,0)|0|0;ea(t|0,0|0,4,0);ea(q|0,0|0,4,0);d=mr(v,154,t,0)|0;if(d){ea(d+44|0,c|0,4,0);ea(d+28|0,n|0,4,0);ea(d+32|0,m|0,2,0)}f=rs(v,f,Yq(a,79,l,d,0)|0)|0;r=r+1|0}while((r|0)<(da(s|0,2,0,1)|0|0))}f=Yq(a,19,f,0,0)|0}k=rs(v,k,f)|0};ea(u+0|0,0|0,4,0);ea(u+4|0,0|0,4,0);ea(u+8|0,0|0,4,0);ea(u+12|0,0|0,4,0);ea(u+16|0,0|0,4,0);ea(u+20|0,0|0,4,0);ea(u+24|0,0|0,4,0);ea(u+28|0,0|0,4,0);ea(u+4|0,b|0,4,0);ea(u|0,a|0,4,0);ks(u,k)|0;f=Us(a,b,k,0,0,0,0)|0;vh(w,134,da(e+24>>0|0,1,0,1)|0|0,h,0)|0;if(f)Ws(f);Fk(v,k);if(x){f=da(w+32|0,4,0,0)|0|0;if(f>>>0>x>>>0)ea((da(w+4|0,4,0,0)|0|0)+(x*20|0)+8|0,f|0,4,0);ea((da(w+24|0,4,0,0)|0|0)+88|0,f+-1|0,4,0)}i=y;return}function gv(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();p=s;n=s+16|0;r=s+28|0;g=da(a|0,4,0,0)|0|0;q=Nq(a)|0;if(q){k=(da(g+16|0,4,0,0)|0|0)+(b<<4)|0;l=a+388|0;m=(d|0)==0;o=0;a:while(1){h=da(28744+(o<<3)|0,4,0,0)|0|0;f=Zh(g,h,da(k|0,4,0,0)|0|0)|0;do if(!f){if(!o){ea(p|0,da(k|0,4,0,0)|0|0,4,0);ea(p+4|0,h|0,4,0);ea(p+8|0,28768|0,4,0);Ar(a,28816,p);ea(n|0,da(l|0,4,0,0)|0|0,4,0);ea(r>>0|0,4|0,1,0);o=o+1|0;continue a}}else{f=da(f+32|0,4,0,0)|0|0;ea(n+(o<<2)|0,f|0,4,0);ea(r+o>>0|0,0|0,1,0);fs(a,b,f,1,h);if(m){vh(q,118,f,b,0)|0;break}else{ea(p|0,da(k|0,4,0,0)|0|0,4,0);ea(p+4|0,h|0,4,0);ea(p+8|0,e|0,4,0);ea(p+12|0,d|0,4,0);Ar(a,28840,p);break}}while(0);o=o+1|0;if((o|0)==3)break}wh(q,vh(q,55,c,da(n|0,4,0,0)|0|0,b)|0,3,-14);f=da(q+4|0,4,0,0)|0|0;if(f)ea(f+(((da(q+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,da(r>>0|0,1,0,0)|0|0|0,1,0)}i=s;return}function hv(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,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;z=da(a|0,4,0,0)|0|0;A=e+1|0;B=e+2|0;F=e+3|0;G=e+4|0;H=e+5|0;E=e+6|0;C=e+7|0;D=a+72|0;I=da(D|0,4,0,0)|0|0;ea(D|0,((I|0)>(C|0)?I:C)|0,4,0);I=Nq(a)|0;if((!((I|0)==0|(b|0)==0)?(l=b+32|0,(da(l|0,4,0,0)|0|0)!=0):0)?(m=da(b|0,4,0,0)|0|0,(Ec(m,25568,7)|0)!=0):0){i=da(b+68|0,4,0,0)|0|0;a:do if(i){h=da(z+20|0,4,0,0)|0|0;if((h|0)>0){g=da(z+16|0,4,0,0)|0|0;k=0;while(1){j=k+1|0;if((da(g+(k<<4)+12|0,4,0,0)|0|0)==(i|0)){j=k;break a}if((j|0)<(h|0))k=j;else break}}else j=0}else j=-1e6;while(0);if(!(Rq(a,28,m,0,da((da(z+16|0,4,0,0)|0|0)+(j<<4)|0,4,0,0)|0|0)|0)){fs(a,j,da(l|0,4,0,0)|0|0,0,da(b|0,4,0,0)|0|0);s=f+1|0;m=f+2|0;x=a+68|0;y=da(x|0,4,0,0)|0|0;ea(x|0,((y|0)>(m|0)?y:m)|0,4,0);Pq(a,f,j,b,54);m=da(b|0,4,0,0)|0|0;wh(I,vh(I,97,0,G,0)|0,m,0);m=da(b+8|0,4,0,0)|0|0;y=(c|0)==0;if(!m)i=1;else{t=b+44|0;u=a+8|0;v=I+4|0;w=I+32|0;x=I+24|0;i=1;do{do if(y|(m|0)==(c|0)){i=(da(m+36|0,4,0,0)|0|0)==0?0:i;l=da(m+51>>0|0,1,0,0)|0|0;if(!(((da(t>>0|0,1,0,0)|0)&32)!=0&(l&3)==2)){g=da(m+48|0,2,0,1)|0|0;k=da(m|0,4,0,0)|0|0;h=m+46|0;if(!(l&8)){o=h;n=g;l=g}else{o=h;n=g;l=da(h|0,2,0,1)|0|0}}else{o=m+46|0;l=da(o|0,2,0,1)|0|0;n=l;k=da(b|0,4,0,0)|0|0}q=l+-1|0;wh(I,vh(I,97,0,H,0)|0,k,0);r=da(D|0,4,0,0)|0|0;l=q+C|0;ea(D|0,((r|0)>(l|0)?r:l)|0,4,0);vh(I,54,s,da(m+40|0,4,0,0)|0|0,j)|0;l=da(u|0,4,0,0)|0|0;wh(l,-1,gs(a,m)|0,-6);vh(I,25,n,B,0)|0;vh(I,25,da(o|0,2,0,1)|0|0,F,0)|0;vh(I,1,0,B,A)|0;wh(I,-1,28552,-5);l=da(v|0,4,0,0)|0|0;if(l)ea(l+(((da(w|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,2|0,1,0);r=vh(I,108,s,0,0)|0;vh(I,25,0,B,0)|0;k=da(w|0,4,0,0)|0|0;if((q|0)>0){n=ws(I)|0;p=lh(z,q<<2,0)|0;if(!p)break;vh(I,16,0,0,0)|0;k=da(w|0,4,0,0)|0|0;if(((q|0)==1?(da(o|0,2,0,0)|0|0)==1:0)?(da(m+50>>0|0,1,0,0)|0|0)!=0:0)vh(I,77,C,n,0)|0;l=m+32|0;g=0;do{o=br(a,da((da(l|0,4,0,0)|0|0)+(g<<2)|0,4,0,0)|0|0)|0;vh(I,25,g,B,0)|0;vh(I,47,s,g,F)|0;h=vh(I,78,F,0,g+C|0)|0;wh(I,h,o,-4);ea(p+(g<<2)|0,h|0,4,0);h=da(v|0,4,0,0)|0|0;if(h)ea(h+(((da(w|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,-128|0,1,0);g=g+1|0}while((g|0)!=(q|0));vh(I,25,q,B,0)|0;vh(I,16,0,n,0)|0;l=k+-1|0;h=da(w|0,4,0,0)|0|0;if(h>>>0>l>>>0)ea((da(v|0,4,0,0)|0|0)+(l*20|0)+8|0,h|0,4,0);ea((da(x|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);l=0;while(1){g=da(p+(l<<2)|0,4,0,0)|0|0;if(h>>>0>g>>>0)ea((da(v|0,4,0,0)|0|0)+(g*20|0)+8|0,h|0,4,0);ea((da(x|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);vh(I,47,s,l,l+C|0)|0;l=l+1|0;if((l|0)==(q|0))break;h=da(w|0,4,0,0)|0|0}h=da(x|0,4,0,0)|0|0;g=~n;do if((n|0)<0){l=da(h+112|0,4,0,0)|0|0;if(!l)break;ea(l+(g<<2)|0,da(w|0,4,0,0)|0|0,4,0)}while(0);ea(h+88|0,(da(w|0,4,0,0)|0|0)+-1|0,4,0);lg(z,p)}vh(I,1,1,A,F)|0;wh(I,-1,28592,-5);l=da(v|0,4,0,0)|0|0;if(l)ea(l+(((da(w|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,2|0,1,0);vh(I,9,s,k,0)|0;vh(I,1,0,A,E)|0;wh(I,-1,28640,-5);l=da(v|0,4,0,0)|0|0;if(l)ea(l+(((da(w|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,1|0,1,0);wh(I,vh(I,49,G,3,F)|0,28632,0);vh(I,74,d,e,0)|0;vh(I,75,d,F,e)|0;k=da(v|0,4,0,0)|0|0;l=da(w|0,4,0,0)|0|0;if(k)ea(k+((l+-1|0)*20|0)+3>>0|0,8|0,1,0);if(l>>>0>r>>>0)ea(k+(r*20|0)+8|0,l|0,4,0);ea((da(x|0,4,0,0)|0|0)+88|0,l+-1|0,4,0)}while(0);m=da(m+20|0,4,0,0)|0|0}while((m|0)!=0)}if(!(i<<24>>24==0|y^1)){vh(I,50,f,E,0)|0;i=vh(I,46,E,0,0)|0;vh(I,28,0,H,0)|0;wh(I,vh(I,49,G,3,F)|0,28632,0);vh(I,74,d,e,0)|0;vh(I,75,d,F,e)|0;h=da(I+4|0,4,0,0)|0|0;g=da(I+32|0,4,0,0)|0|0;if(h)ea(h+((g+-1|0)*20|0)+3>>0|0,8|0,1,0);if(g>>>0>i>>>0)ea(h+(i*20|0)+8|0,g|0,4,0);ea((da(I+24|0,4,0,0)|0|0)+88|0,g+-1|0,4,0)}}}return}function iv(a,b){a=a|0;b=b|0;a=Nq(a)|0;if(a)vh(a,123,b,0,0)|0;return}function jv(a){a=a|0;var b=0,c=0,d=0;a:while(1){b=da(a+4|0,4,0,0)|0|0;do if(b&4096)if(!(b&262144)){a=a+12|0;break}else{a=da((da(a+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;break}else{if(b&512){a=0;break a}switch(da(a>>0|0,1,0,0)|0|0){case -102:case -100:case -97:{d=11;break a}case 38:{d=10;break a}case 119:break;default:{d=14;break a}}a=da((da(da(a+20|0,4,0,0)|0|0,4,0,0)|0|0)+4|0,4,0,0)|0|0}while(0);a=da(a|0,4,0,0)|0|0}if((d|0)==10)a=Wq(da(a+8|0,4,0,0)|0|0,0)|0;else if((d|0)==11){c=da(a+44|0,4,0,0)|0|0;if(c){b=da(a+32|0,2,0,0)|0|0;if(b<<16>>16<0)a=68;else a=da((da(c+4|0,4,0,0)|0|0)+((b<<16>>16)*24|0)+21>>0|0,1,0,0)|0|0}else d=14}if((d|0)==14)a=da(a+1>>0|0,1,0,0)|0|0;return a|0}function kv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;vh(a,25,0,c,0)|0;d=vh(a,108,b,0,0)|0;vh(a,47,b,0,c)|0;b=da(a+4|0,4,0,0)|0|0;c=da(a+32|0,4,0,0)|0|0;if(b)ea(b+((c+-1|0)*20|0)+3>>0|0,-128|0,1,0);if(c>>>0>d>>>0)ea(b+(d*20|0)+8|0,c|0,4,0);ea((da(a+24|0,4,0,0)|0|0)+88|0,c+-1|0,4,0);return}function lv(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,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;A=i;i=i+32|0;if((i|0)>=(j|0))ba();v=A;y=a+68|0;z=da(y|0,4,0,0)|0|0;ea(y|0,z+1|0,4,0);y=Nq(a)|0;w=(c&4|0)!=0;x=b+4|0;a:do if(((((((((((((da(x|0,4,0,0)|0)&2048|0)!=0?(h=da(b+20|0,4,0,0)|0|0,!((da(a+64|0,4,0,0)|0|0)!=0|(h|0)==0)):0)?(da(h+52|0,4,0,0)|0|0)==0:0)?((da(h+6|0,2,0,0)|0)&5)==0:0)?(da(h+60|0,4,0,0)|0|0)==0:0)?(da(h+36|0,4,0,0)|0|0)==0:0)?(g=da(h+32|0,4,0,0)|0|0,(da(g|0,4,0,0)|0|0)==1):0)?(da(g+28|0,4,0,0)|0|0)==0:0)?(p=da(g+24|0,4,0,0)|0|0,(p|0)!=0):0)?((da(p+44>>0|0,1,0,0)|0)&16)==0:0)?(f=da(h|0,4,0,0)|0|0,(da(f|0,4,0,0)|0|0)==1):0)?(l=da(da(f+4|0,4,0,0)|0|0,4,0,0)|0|0,(da(l>>0|0,1,0,0)|0|0)==-102):0){t=da(a|0,4,0,0)|0|0;u=da(l+32|0,2,0,0)|0|0;k=da(p+68|0,4,0,0)|0|0;b:do if(k){g=da(t+20|0,4,0,0)|0|0;if((g|0)>0){f=da(t+16|0,4,0,0)|0|0;e=0;while(1){h=e+1|0;if((da(f+(e<<4)+12|0,4,0,0)|0|0)==(k|0)){h=e;break b}if((h|0)<(g|0))e=h;else break}}else h=0}else h=-1e6;while(0);r=h<<16>>16;zr(a,r);fs(a,r,da(p+32|0,4,0,0)|0|0,0,da(p|0,4,0,0)|0|0);s=u<<16>>16;if(u<<16>>16<0){e=Nq(a)|0;d=a+80|0;f=da(d|0,4,0,0)|0|0;ea(d|0,f+1|0,4,0);f=vh(e,44,f,0,0)|0;Pq(a,z,r,p,54);e=da(y+32|0,4,0,0)|0|0;if(e>>>0>f>>>0)ea((da(y+4|0,4,0,0)|0|0)+(f*20|0)+8|0,e|0,4,0);ea((da(y+24|0,4,0,0)|0|0)+88|0,e+-1|0,4,0);e=1;k=49;break}e=Nu(a,da(b+12|0,4,0,0)|0|0,l)|0;q=p+4|0;k=da((da(q|0,4,0,0)|0|0)+(s*24|0)+21>>0|0,1,0,0)|0|0;h=(mv(b)|0)<<24>>24;if((h|0)==65)h=1;else if((h|0)==66)h=k<<24>>24==66&1;else h=k<<24>>24>66&1;k=da(p+8|0,4,0,0)|0|0;if((k|0)!=0&(h|0)!=0){l=t+62|0;h=a+80|0;g=a+8|0;f=(d|0)==0;m=y+32|0;o=y+4|0;p=y+24|0;n=a+72|0;c:while(1){do if((da(da(k+4|0,4,0,0)|0|0,2,0,0)|0|0)==u<<16>>16?(Xn(t,da(l>>0|0,1,0,0)|0|0,da(da(k+32|0,4,0,0)|0|0,4,0,0)|0|0,0)|0)==(e|0):0){if(!w)break c;if((da(k+46|0,2,0,0)|0|0)!=1)break;if(da(k+50>>0|0,1,0,0)|0)break c}while(0);k=da(k+20|0,4,0,0)|0|0;if(!k){k=38;break a}}x=Nq(a)|0;e=da(h|0,4,0,0)|0|0;ea(h|0,e+1|0,4,0);h=vh(x,44,e,0,0)|0;vh(y,54,z,da(k+40|0,4,0,0)|0|0,r)|0;e=da(g|0,4,0,0)|0|0;wh(e,-1,gs(a,k)|0,-6);e=(da((da(k+28|0,4,0,0)|0)>>0|0,1,0,1)|0|0)+3|0;if(!f?(da((da(q|0,4,0,0)|0|0)+(s*24|0)+20>>0|0,1,0,0)|0|0)==0:0){x=(da(n|0,4,0,0)|0|0)+1|0;ea(n|0,x|0,4,0);ea(d|0,x|0,4,0);kv(y,z,x)}f=da(m|0,4,0,0)|0|0;if(f>>>0>h>>>0)ea((da(o|0,4,0,0)|0|0)+(h*20|0)+8|0,f|0,4,0);ea((da(p|0,4,0,0)|0|0)+88|0,f+-1|0,4,0);k=49}else k=38}else k=38;while(0);do if((k|0)==38){if((c&1|0)!=0?((da(x|0,4,0,0)|0)&2048|0)==0:0){u=b+12|0;c=da(u|0,4,0,0)|0|0;ea(u|0,0|0,4,0);ea(v+0|0,0|0,4,0);ea(v+4|0,0|0,4,0);ea(v+8|0,0|0,4,0);ea(v+12|0,0|0,4,0);ea(v+16|0,0|0,4,0);ea(v+20|0,0|0,4,0);y=v+20|0;ea(y>>0|0,1|0,1,0);ea(v|0,78|0,4,0);ea(v+4|0,79|0,4,0);ea(v+24|0,0|0,4,0);qs(v,b)|0;y=da(y>>0|0,1,0,0)|0|0;ea(u|0,c|0,4,0);if(!(y<<24>>24)){e=5;k=49;break}if((da(da(b+20|0,4,0,0)|0|0,4,0,0)|0|0)<3){e=5;k=49;break}}g=a+424|0;h=da(g|0,4,0,0)|0|0;if(w){ea(g|0,0|0,4,0);if((da((da(b+12|0,4,0,0)|0|0)+32|0,2,0,0)|0|0)<0){e=((da(x|0,4,0,0)|0|0)>>>11&1)+1|0;f=0}else{e=2;f=0}}else if(!d){e=2;f=0}else{e=a+72|0;f=(da(e|0,4,0,0)|0|0)+1|0;ea(e|0,f|0,4,0);ea(d|0,f|0,4,0);e=2}du(a,b,f,(e|0)==1&1)|0;ea(g|0,h|0,4,0)}while(0);if((k|0)==49)ea(b+28|0,z|0,4,0);i=A;return e|0}function mv(a){a=a|0;var b=0,c=0;b=jv(da(a+12|0,4,0,0)|0|0)|0;c=da(a+16|0,4,0,0)|0|0;do if(!c)if(!((da(a+4|0,4,0,0)|0)&2048))return (b<<24>>24==0?65:b)|0;else{b=Au(da(da((da(da(a+20|0,4,0,0)|0|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0,b)|0;break}else b=Au(c,b)|0;while(0);return b|0}function nv(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,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,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;W=i;i=i+16|0;if((i|0)>=(j|0))ba();T=W;R=da(a|0,4,0,0)|0|0;U=f+28|0;ea(U|0,-1|0,4,0);Q=f+44|0;ea(Q|0,0|0,4,0);a:do if((b|0)!=0?((da(e+28|0,2,0,0)|0)&20)==0:0){n=da(R+20|0,4,0,0)|0|0;if((n|0)>0){l=da(R+16|0,4,0,0)|0|0;m=0;while(1){if(!(cd(da(l+(m<<4)|0,4,0,0)|0|0,b)|0))break;m=m+1|0;if((m|0)>=(n|0)){P=b;b=0;break a}}P=b;b=da(l+(m<<4)+12|0,4,0,0)|0|0}else{P=b;b=0}}else{P=0;b=0}while(0);N=(P|0)==0;K=N&(c|0)!=0;h=a+412|0;G=a+436|0;H=f+1|0;V=f+32|0;I=a+428|0;J=a+432|0;O=(c|0)==0;M=f+4|0;g=e;o=0;k=0;n=0;m=0;b:while(1){F=(g|0)!=0;l=g+4|0;E=g+8|0;p=0;q=o;while(1){o=(p|0)==0;if(!(F&o)){S=82;break b}p=da(l|0,4,0,0)|0|0;if(p){D=da(p|0,4,0,0)|0|0;if((D|0)>0){o=0;B=0;A=p+8|0;while(1){z=da(A+16|0,4,0,0)|0|0;r=da(A+20|0,4,0,0)|0|0;if((r|0)!=0?((da(r+6|0,2,0,0)|0)&512)!=0:0){r=da(r|0,4,0,0)|0|0;w=da(r|0,4,0,0)|0|0;if((w|0)>0){x=da(r+4|0,4,0,0)|0|0;r=0;t=0;do{if(uv(da(x+(t*20|0)+8|0,4,0,0)|0|0,d,c,P)|0){ea(V|0,t|0,2,0);o=o+1|0;q=2;r=1;m=A}t=t+1|0}while((t|0)<(w|0))}else r=0;if(!((r|0)!=0|O))S=21}else S=21;c:do if((S|0)==21){S=0;if(!N?(da(z+68|0,4,0,0)|0|0)!=(b|0):0)break;if(!O){r=da(A+12|0,4,0,0)|0|0;if(!r)r=da(z|0,4,0,0)|0|0;if(cd(r,c)|0)break}y=q+1|0;m=(q|0)==0?A:m;r=da(z+38|0,2,0,0)|0|0;if(r<<16>>16>0){p=(o|0)==1;u=A+36|0;v=A+48|0;q=0;x=da(z+4|0,4,0,0)|0|0;d:while(1){e:do if(!(cd(da(x|0,4,0,0)|0|0,d)|0)){if(!p)break d;if(!((da(u>>0|0,1,0,0)|0)&4)){t=da(v|0,4,0,0)|0|0;if(!t)break d;w=da(t+4|0,4,0,0)|0|0;if((w|0)<=0)break d;t=da(t|0,4,0,0)|0|0;s=0;while(1){if(!(cd(da(t+(s<<3)|0,4,0,0)|0|0,d)|0))break e;s=s+1|0;if((s|0)>=(w|0))break d}}}while(0);q=q+1|0;if((q|0)>=(r<<16>>16|0)){q=y;break c}else x=x+24|0}ea(V|0,((q|0)==(da(z+36|0,2,0,0)|0|0)?-1:q&65535)|0,2,0);o=o+1|0;q=y;m=A}else q=y}while(0);B=B+1|0;if((B|0)>=(D|0))break;else A=A+72|0}}else o=0;if(!m)y=0;else{ea(U|0,da(m+40|0,4,0,0)|0|0,4,0);p=da(m+16|0,4,0,0)|0|0;ea(Q|0,p|0,4,0);if((da(m+36>>0|0,1,0,0)|0)&8)ea(M|0,da(M|0,4,0,0)|0|1048576|0,4,0);y=m;b=da(p+68|0,4,0,0)|0|0}}else{o=0;y=m}do if(K&(q|0)==0)if(da(h|0,4,0,0)|0){p=da(G>>0|0,1,0,0)|0|0;if(p<<24>>24!=109)if(cd(27560,c)|0)if(p<<24>>24==108){s=o;q=0;t=k;break}else S=49;else t=1;else S=49;if((S|0)==49){S=0;if(!(cd(27568,c)|0))t=0;else{s=o;q=0;t=k;break}}ea(U|0,t|0,4,0);s=da(h|0,4,0,0)|0|0;if(s){b=da(s+68|0,4,0,0)|0|0;r=da(s+38|0,2,0,0)|0|0;f:do if(r<<16>>16>0){p=0;q=da(s+4|0,4,0,0)|0|0;while(1){if(!(cd(da(q|0,4,0,0)|0|0,d)|0))break;p=p+1|0;if((p|0)<(r<<16>>16|0))q=q+24|0;else break f}p=(p|0)==(da(s+36|0,2,0,0)|0|0)?-1:p}else p=0;while(0);m=r<<16>>16;if((p|0)>=(m|0)?(_h(d)|0)!=0:0)q=((da(s+44>>0|0,1,0,0)|0)&32)==0?-1:p;else q=p;if((q|0)<(m|0)){o=o+1|0;do if((q|0)>=0){p=(q|0)>31?-1:1<>0|0,68|0,1,0);while(0);ea(V|0,q|0,2,0);ea(Q|0,s|0,4,0);q=1;k=1;S=66}else{q=1;S=66}}else{s=o;q=0;t=k}}else{s=o;q=0;t=k}else S=66;while(0);if((S|0)==66){S=0;if((o|0)==0&(q|0)==1&(y|0)!=0)if((_h(d)|0)!=0?((da((da(y+16|0,4,0,0)|0|0)+44>>0|0,1,0,0)|0)&32)==0:0){ea(V|0,-1|0,2,0);ea(H>>0|0,68|0,1,0);p=1;m=y;continue}else{s=0;t=k}else{s=o;t=k}}o=da(E|0,4,0,0)|0|0;r=(s|0)==0;if((o|0)!=0&O&r?(L=da(o|0,4,0,0)|0|0,(L|0)>0):0){k=da(o+4|0,4,0,0)|0|0;m=0;do{p=da(k+(m*20|0)+4|0,4,0,0)|0|0;if((p|0)!=0?(cd(p,d)|0)==0:0){S=75;break b}m=m+1|0}while((m|0)<(L|0))}if(r){p=q;k=t;m=y;break}else{p=s;k=t;m=y}}g=da(g+16|0,4,0,0)|0|0;o=p;n=n+1|0}do if((S|0)==75){if(((da(g+28|0,2,0,0)|0)&1)==0?((da((da(k+(m*20|0)|0,4,0,0)|0|0)+4|0,4,0,0)|0)&2|0)!=0:0){ea(T|0,p|0,4,0);sh(a,27576,T);e=2;break}xv(a,o,m,f,10360,n);if((da(f>>0|0,1,0,0)|0|0)==24)S=115;else S=96}else if((S|0)==82){if(o&O?((da(M|0,4,0,0)|0)&64|0)!=0:0){ea(f>>0|0,97|0,1,0);ea(Q|0,0|0,4,0);e=1;break}p=(p|0)==1;if(!p){o=o?27608:27624;do if(N)if(O){ea(T|0,o|0,4,0);ea(T+4|0,d|0,4,0);sh(a,27680,T);break}else{ea(T|0,o|0,4,0);ea(T+4|0,c|0,4,0);ea(T+8|0,d|0,4,0);sh(a,27664,T);break}else{ea(T|0,o|0,4,0);ea(T+4|0,P|0,4,0);ea(T+8|0,c|0,4,0);ea(T+12|0,d|0,4,0);sh(a,27648,T)}while(0);ea(a+17>>0|0,1|0,1,0);B=e+24|0;ea(B|0,(da(B|0,4,0,0)|0|0)+1|0,4,0)}n=da(V|0,2,0,0)|0|0;if(n<<16>>16>-1&(m|0)!=0){y=n<<16>>16>63;z=hw(1,0,n<<16>>16|0)|0;A=m+56|0;x=A;B=da(x+4|0,4,0,0)|0|(y?-2147483648:C);ea(A|0,da(x|0,4,0,0)|0|(y?0:z)|0,4,0);ea(A+4|0,B|0,4,0)}B=f+12|0;Fk(R,da(B|0,4,0,0)|0|0);ea(B|0,0|0,4,0);B=f+16|0;Fk(R,da(B|0,4,0,0)|0|0);ea(B|0,0|0,4,0);ea(f>>0|0,((k|0)!=0?62:-102)|0,1,0);if(p)S=96;else e=2}while(0);g:do if((S|0)==96){o=da(l|0,4,0,0)|0|0;k=da(a|0,4,0,0)|0|0;if(!((da(k+284|0,4,0,0)|0|0)==0|(b|0)==0)){n=da(k+20|0,4,0,0)|0|0;if((n|0)>0){l=da(k+16|0,4,0,0)|0|0;m=0;while(1){k=m+1|0;if((da(l+(m<<4)+12|0,4,0,0)|0|0)==(b|0)){k=m;break}if((k|0)<(n|0))m=k;else break}if((k|0)<0){S=115;break}else b=k}else b=0;if((da(f>>0|0,1,0,0)|0|0)!=62){l=da(o|0,4,0,0)|0|0;if((l|0)<=0){S=115;break}h=da(U|0,4,0,0)|0|0;k=0;while(1){if((h|0)==(da(o+(k*72|0)+48|0,4,0,0)|0|0))break;k=k+1|0;if((k|0)>=(l|0)){S=115;break g}}h=o+(k*72|0)+24|0}l=da(h|0,4,0,0)|0|0;h=da(V|0,2,0,0)|0|0;k=h<<16>>16;if(l){if(h<<16>>16<=-1){h=da(l+36|0,2,0,0)|0|0;if(h<<16>>16>-1)h=da((da(l+4|0,4,0,0)|0|0)+((h<<16>>16)*24|0)|0,4,0,0)|0|0;else h=12944}else h=da((da(l+4|0,4,0,0)|0|0)+(k*24|0)|0,4,0,0)|0|0;if((dv(a,da(l|0,4,0,0)|0|0,h,b)|0)==2){ea(f>>0|0,101|0,1,0);S=115}else S=115}else S=115}else S=115}while(0);if((S|0)==115){B=e+20|0;ea(B|0,(da(B|0,4,0,0)|0|0)+1|0,4,0);if((g|0)==(e|0))e=1;else{do{e=da(e+16|0,4,0,0)|0|0;B=e+20|0;ea(B|0,(da(B|0,4,0,0)|0|0)+1|0,4,0)}while((e|0)!=(g|0));e=1}}i=W;return e|0}function ov(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=da(b>>0|0,1,0,0)|0|0;a:do if(c<<24>>24==-100|c<<24>>24==-102){c=da(a+24|0,4,0,0)|0|0;d=da(c|0,4,0,0)|0|0;b:do if((d|0)!=0?(e=da(d|0,4,0,0)|0|0,(e|0)>0):0){a=da(b+28|0,4,0,0)|0|0;b=0;while(1){if((a|0)==(da(d+(b*72|0)+48|0,4,0,0)|0|0))break;b=b+1|0;if((b|0)>=(e|0))break b}a=c+4|0;ea(a|0,(da(a|0,4,0,0)|0|0)+1|0,4,0);break a}while(0);a=c+8|0;ea(a|0,(da(a|0,4,0,0)|0|0)+1|0,4,0)}while(0);return 0}function pv(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;if((i|0)>=(j|0))ba();s=t;n=t+12|0;a:do if(!c)e=0;else{q=da(da(b|0,4,0,0)|0|0,4,0,0)|0|0;r=da(a|0,4,0,0)|0|0;b:do if((da(c|0,4,0,0)|0|0)>0){e=0;o=da(c+4|0,4,0,0)|0|0;c:while(1){l=da(o|0,4,0,0)|0|0;d:do if(!l)f=0;else{f=l;while(1){g=da(f+4|0,4,0,0)|0|0;if(!(g&4096))break d;if(!(g&262144))f=f+12|0;else f=da((da(f+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;f=da(f|0,4,0,0)|0|0;if(!f){f=0;break}}}while(0);if((da(d>>0|0,1,0,0)|0|0)!=71?(m=qv(da(b|0,4,0,0)|0|0,f)|0,ea(n|0,m|0,4,0),(m|0)>0):0)ea(o+16|0,m|0,2,0);else p=13;do if((p|0)==13){p=0;if(Ls(f,n)|0){f=da(n|0,4,0,0)|0|0;if((f+-1|0)>>>0>65534)break c;ea(o+16|0,f|0,2,0);break}h=o+16|0;ea(h|0,0|0,2,0);if(ks(a,l)|0){e=1;break a}g=da(b|0,4,0,0)|0|0;k=da(g|0,4,0,0)|0|0;if((k|0)>0){g=da(g+4|0,4,0,0)|0|0;f=0;do{u=f;f=f+1|0;if(!(Bu(l,da(g+(u*20|0)|0,4,0,0)|0|0,-1)|0))ea(h|0,f|0,2,0)}while((f|0)<(k|0))}}while(0);e=e+1|0;if((e|0)>=(da(c|0,4,0,0)|0|0))break b;else o=o+20|0}ea(s|0,e+1|0,4,0);ea(s+4|0,d|0,4,0);ea(s+8|0,q|0,4,0);sh(r,27064,s);e=1;break a}while(0);e=vu(r,b,c,d)|0}while(0);i=t;return e|0}function qv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;a:do if((da(b>>0|0,1,0,0)|0|0)==27?(d=da(b+8|0,4,0,0)|0|0,e=da(a|0,4,0,0)|0|0,(e|0)>0):0){a=da(a+4|0,4,0,0)|0|0;b=0;while(1){c=da(a+(b*20|0)+4|0,4,0,0)|0|0;if((c|0)!=0?(cd(c,d)|0)==0:0)break;b=b+1|0;if((b|0)>=(e|0)){b=0;break a}}b=b+1|0}else b=0;while(0);return b|0}function rv(a,b){a=a|0;b=b|0;var c=0,d=0;c=da(a+38|0,2,0,0)|0|0;a:do if(c<<16>>16>0){d=da(a+4|0,4,0,0)|0|0;c=c<<16>>16;a=0;while(1){if(!(cd(da(d+(a*24|0)|0,4,0,0)|0|0,b)|0))break a;a=a+1|0;if((a|0)>=(c|0)){a=-1;break}}}else a=-1;while(0);return a|0}function sv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=da(a|0,4,0,0)|0|0;c=Qv(i,b,c,d)|0;d=Qv(i,b,e,f)|0;f=Yq(a,79,c,d,0)|0;if((f|0)!=0&(g|0)!=0){c=f+4|0;ea(c|0,da(c|0,4,0,0)|0|1|0,4,0);ea(f+36|0,da(d+28|0,4,0,0)|0|0,2,0)}ea(h|0,rs(i,da(h|0,4,0,0)|0|0,f)|0|0,4,0);return}function tv(a,b){a=a|0;b=b|0;var c=0,d=0;if(a){c=b&65535;do{d=a+4|0;ea(d|0,da(d|0,4,0,0)|0|1|0,4,0);ea(a+36|0,c|0,2,0);tv(da(a+12|0,4,0,0)|0|0,b);a=da(a+16|0,4,0,0)|0|0}while((a|0)!=0)}return}function uv(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;e=0;while(1){f=da(a+e>>0|0,1,0,0)|0|0;if(f<<24>>24==46|f<<24>>24==0)break;e=e+1|0}if(d)if((Ec(a,d,e)|0)==0?(da(d+e>>0|0,1,0,0)|0|0)==0:0)g=7;else e=0;else g=7;do if((g|0)==7){d=e+1|0;g=a+d|0;f=0;while(1){h=da(a+(f+d)>>0|0,1,0,0)|0|0;if(h<<24>>24==46|h<<24>>24==0)break;f=f+1|0}if(c){if(Ec(g,c,f)|0){e=0;break}if(da(c+f>>0|0,1,0,0)|0){e=0;break}}if((b|0)!=0?(cd(a+(e+2+f)|0,b)|0)!=0:0){e=0;break}e=1}while(0);return e|0}function vv(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if((a|0)!=0?(d=da(a+4|0,4,0,0)|0|0,(d|0)>0):0){c=da(a|0,4,0,0)|0|0;a=0;while(1){if(!(cd(da(c+(a<<3)|0,4,0,0)|0|0,b)|0))break a;a=a+1|0;if((a|0)>=(d|0)){a=-1;break}}}else a=-1;while(0);return a|0}function wv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;ea(e|0,c|0,4,0);if(!c)d=0;else{d=c;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;d=d-c&1073741823}ea(e+4|0,d|0,4,0);d=ur(a,b,e,0)|0;i=f;return d|0}function xv(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,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();l=p;h=b+4|0;k=da((da(h|0,4,0,0)|0|0)+(c*20|0)|0,4,0,0)|0|0;m=da(a|0,4,0,0)|0|0;g=Lr(m,k,0,0)|0;do if(g){if((da(k>>0|0,1,0,0)|0|0)!=-102?(da(e>>0|0,1,0,0)|0|0)!=71:0){if((f|0)>0){ea(l+0|0,0|0,4,0);ea(l+4|0,0|0,4,0);ea(l+8|0,0|0,4,0);ea(l+12|0,0|0,4,0);ea(l+16|0,0|0,4,0);ea(l+20|0,0|0,4,0);ea(l|0,88|0,4,0);ea(l+24|0,f|0,4,0);qs(l,g)|0}g=Yq(a,24,g,0,0)|0;if(!g)break;b=g+4|0;ea(b|0,da(b|0,4,0,0)|0|4096|0,4,0);b=(da(h|0,4,0,0)|0|0)+(c*20|0)+18|0;f=da(b|0,2,0,0)|0|0;if(!(f<<16>>16)){c=a+456|0;f=(da(c|0,4,0,0)|0|0)+1|0;ea(c|0,f|0,4,0);f=f&65535;ea(b|0,f|0,2,0)}ea(g+28|0,f&65535|0,4,0)}if((da(d>>0|0,1,0,0)|0|0)==95)g=wv(a,g,da(d+8|0,4,0,0)|0|0)|0;b=d+4|0;ea(b|0,da(b|0,4,0,0)|0|32768|0,4,0);Fk(m,d);f=d+0|0;h=g+0|0;k=f+48|0;do{ea(f|0,da(h|0,4,0,0)|0|0,4,0);f=f+4|0;h=h+4|0}while((f|0)<(k|0));if(((da(b|0,4,0,0)|0)&1024|0)==0?(n=d+8|0,o=da(n|0,4,0,0)|0|0,(o|0)!=0):0){ea(n|0,jh(m,o)|0|0,4,0);ea(b|0,da(b|0,4,0,0)|0|65536|0,4,0)}lg(m,g)}while(0);i=p;return}function yv(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,k=0;k=a+12|0;d=da(k|0,4,0,0)|0|0;h=a+16|0;f=da(h|0,4,0,0)|0|0;j=a+20|0;do if((d|0)<(f|0))i=15;else{d=da(j|0,4,0,0)|0|0;g=da(da(da(a|0,4,0,0)|0|0,4,0,0)|0|0,4,0,0)|0|0;e=lh(g,f*96|0,0)|0;ea(j|0,e|0,4,0);if(!e){if(c&1)Fk(g,b);ea(j|0,d|0,4,0);d=0;break}jw(e|0,d|0,(da(k|0,4,0,0)|0|0)*48|0)|0;if((d|0)!=(a+24|0))lg(g,d);e=da(j|0,4,0,0)|0|0;do if(!g)e=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](e)|0;else{if((da(g+276|0,4,0,0)|0|0)>>>0<=e>>>0?(da(g+280|0,4,0,0)|0|0)>>>0>e>>>0:0){e=da(g+248|0,2,0,1)|0|0;break}e=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](e)|0}while(0);i=(e>>>0)/48|0;ea(h|0,i|0,4,0);d=da(k|0,4,0,0)|0|0;ew((da(j|0,4,0,0)|0|0)+(d*48|0)|0,0,(i-d|0)*48|0)|0;d=da(k|0,4,0,0)|0|0;i=15}while(0);if((i|0)==15){ea(k|0,d+1|0,4,0);f=da(j|0,4,0,0)|0|0;a:do if(!b){ea(f+(d*48|0)+16|0,1|0,2,0);b=0}else{if(!((da(b+4|0,4,0,0)|0)&262144))e=1;else{e=da(b+28|0,4,0,0)|0|0;e=((es(e,((e|0)<0)<<31>>31)|0)&65535)+65266&65535}ea(f+(d*48|0)+16|0,e|0,2,0);while(1){e=da(b+4|0,4,0,0)|0|0;if(!(e&4096))break a;if(!(e&262144))b=b+12|0;else b=da((da(b+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;b=da(b|0,4,0,0)|0|0;if(!b){b=0;break}}}while(0);ea(f+(d*48|0)|0,b|0,4,0);ea(f+(d*48|0)+20|0,c|0,2,0);ea(f+(d*48|0)+24|0,a|0,4,0);ea(f+(d*48|0)+4|0,-1|0,4,0)}return d|0}function zv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;a:do if(b)if((da(b>>0|0,1,0,0)|0|0)==-102){b=da(b+28|0,4,0,0)|0|0;d=da(a|0,4,0,0)|0|0;if((d|0)>0)c=0;else{d=0;c=0;break}while(1){if((da(a+(c<<2)+4|0,4,0,0)|0|0)==(b|0))break;c=c+1|0;if((c|0)>=(d|0)){d=0;c=0;break a}}c=hw(1,0,c|0)|0;d=C;break}else{e=zv(a,da(b+16|0,4,0,0)|0|0)|0;c=C;f=zv(a,da(b+12|0,4,0,0)|0|0)|0;c=C|c;d=b+20|0;if(!((da(b+4|0,4,0,0)|0)&2048)){b=Ku(a,da(d|0,4,0,0)|0|0)|0;d=C}else{b=Av(a,da(d|0,4,0,0)|0|0)|0;d=C}d=c|d;c=f|e|b;break}else{d=0;c=0}while(0);C=d;return c|0}function Av(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,k=0;if(!b){b=0;c=0}else{f=b;c=0;b=0;do{e=da(f+32|0,4,0,0)|0|0;k=Ku(a,da(f|0,4,0,0)|0|0)|0;b=C|b;j=Ku(a,da(f+40|0,4,0,0)|0|0)|0;b=b|C;i=Ku(a,da(f+48|0,4,0,0)|0|0)|0;b=b|C;h=zv(a,da(f+36|0,4,0,0)|0|0)|0;b=b|C;d=zv(a,da(f+44|0,4,0,0)|0|0)|0;c=k|c|j|i|h|d;b=b|C;if((e|0)!=0?(g=da(e|0,4,0,0)|0|0,(g|0)>0):0){d=0;do{i=Av(a,da(e+(d*72|0)+28|0,4,0,0)|0|0)|0;b=C|b;j=zv(a,da(e+(d*72|0)+52|0,4,0,0)|0|0)|0;c=i|c|j;b=b|C;d=d+1|0}while((d|0)<(g|0))}f=da(f+52|0,4,0,0)|0|0}while((f|0)!=0)}C=b;return c|0}function Bv(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=da(b+18|0,2,0,0)|0|0;h=da(c+18|0,2,0,0)|0|0;e=h|i;if(((!((i&62)==0|(h&62)==0)?(d=e&65535,(d&26|0)==(d|0)|(d&38|0)==(d|0)):0)?(g=da(b|0,4,0,0)|0|0,f=da(c|0,4,0,0)|0|0,(Bu(da(g+12|0,4,0,0)|0|0,da(f+12|0,4,0,0)|0|0,-1)|0)==0):0)?(Bu(da(g+16|0,4,0,0)|0|0,da(f+16|0,4,0,0)|0|0,-1)|0)==0:0){if(d+65535&d)e=(d&24|0)==0?32:8;f=Lr(da(da(da(a|0,4,0,0)|0|0,4,0,0)|0|0,4,0,0)|0|0,g,0,0)|0;if(f){e=e&65535;d=79;while(1)if((e|0)==(2<>0|0,d|0,1,0);Du(a,yv(a,f,3)|0)}}return}function Cv(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;ea(a|0,b|0,4,0);ea(a+4|0,b|0,4,0);a:do if((f|0)!=0&(d|0)>-1){ea(a+12>>0|0,da((da((da(f+12|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(d*24|0)+21>>0|0,1,0,0)|0|0|0,1,0);g=da(f+4|0,4,0,0)|0|0;if((da(g|0,2,0,0)|0|0)==(d|0))b=0;else{h=da(f+48|0,2,0,1)|0|0;i=0;while(1){b=i+1|0;if((i|0)>(h|0)){b=0;break a}if((da(g+(b<<1)|0,2,0,0)|0|0)==(d|0))break;else i=b}}ea(a+8|0,da((da(f+32|0,4,0,0)|0|0)+(b<<2)|0,4,0,0)|0|0,4,0);j=8}else{ea(a+12>>0|0,0|0,1,0);ea(a+8|0,0|0,4,0);j=8}while(0);if((j|0)==8){ea(a+16|0,e|0,4,0);ea(a+20|0,0|0,4,0);ea(a+24|0,c|0,4,0);ea(a+28|0,d|0,4,0);ea(a+13>>0|0,2|0,1,0);ea(a+14>>0|0,2|0,1,0);b=Dv(a)|0}return b|0} -function tc(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;if((i|0)>=(j|0))ba();return b|0}function uc(){return i|0}function vc(a){a=a|0;i=a}function wc(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function xc(a){a=a|0;ea(k>>0|0,da(a>>0|0,1,0,0)|0|0,1,0);ea(k+1>>0|0,da(a+1>>0|0,1,0,0)|0|0,1,0);ea(k+2>>0|0,da(a+2>>0|0,1,0,0)|0|0,1,0);ea(k+3>>0|0,da(a+3>>0|0,1,0,0)|0|0,1,0)}function yc(a){a=a|0;ea(k>>0|0,da(a>>0|0,1,0,0)|0|0,1,0);ea(k+1>>0|0,da(a+1>>0|0,1,0,0)|0|0,1,0);ea(k+2>>0|0,da(a+2>>0|0,1,0,0)|0|0,1,0);ea(k+3>>0|0,da(a+3>>0|0,1,0,0)|0|0,1,0);ea(k+4>>0|0,da(a+4>>0|0,1,0,0)|0|0,1,0);ea(k+5>>0|0,da(a+5>>0|0,1,0,0)|0|0,1,0);ea(k+6>>0|0,da(a+6>>0|0,1,0,0)|0|0,1,0);ea(k+7>>0|0,da(a+7>>0|0,1,0,0)|0|0,1,0)}function zc(a){a=a|0;C=a}function Ac(){return C|0}function Bc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();c=f+4|0;d=f;e=0;a:while(1){ea(c|0,0|0,4,0);ea(d|0,0|0,4,0);ea(280|0,0|0,1,0);if(Qf(14640,c)|0){b=4;break}b=da(c|0,4,0,0)|0|0;a=0;do{if(Pe(b,da(8+(a<<2)|0,4,0,0)|0|0,17,0,d)|0){b=7;break a}a=a+1|0;b=da(c|0,4,0,0)|0|0}while((a|0)!=5);sf(b)|0;if(Zv(280,8504)|0){b=9;break}e=e+1|0;if((e|0)>=3){b=11;break}}if((b|0)==4)hb(8472,8488,47,8496);else if((b|0)==7)hb(8472,8488,50,8496);else if((b|0)==9)hb(8600,8488,53,8496);else if((b|0)==11){i=f;return 0}return 0}function Cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((b|0)>0)while(1){b=b+-1|0;gw(280,da(d|0,4,0,0)|0|0)|0;a=280+(fw(280)|0)|0;ea(a>>0|0,61|0,1,0);ea(a+1>>0|0,0|0,1,0);a=da(c|0,4,0,0)|0|0;gw(280,((a|0)==0?20304:a)|0)|0;if((b|0)<=0)break;else{c=c+4|0;d=d+4|0}}return 0}function Dc(a){a=a|0;var b=0,c=0,d=0;d=(Ec(a,8640,7)|0)==0;d=d?a+7|0:a;if(!d)a=0;else{a=d;while(1)if(!(da(a>>0|0,1,0,0)|0))break;else a=a+1|0;a=a-d&1073741823}c=0;while(1){b=da(8648+(c<<2)|0,4,0,0)|0|0;if((Ec(d,b,a)|0)==0?((da(10368+(da(b+a>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&70)==0:0){a=1;break}c=c+1|0;if((c|0)>=4){a=0;break}}return a|0}function Ec(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:do if(a)if(b)if((c|0)>0){d=a;while(1){a=da(d>>0|0,1,0,0)|0|0;if(!(a<<24>>24))break;if((da(9328+(a&255)>>0|0,1,0,0)|0|0)!=(da(9328+(da(b>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0|0))break;c=c+-1|0;if((c|0)<=0){c=0;break a}else{d=d+1|0;b=b+1|0}}if((c|0)>=1)c=(da(9328+(a&255)>>0|0,1,0,1)|0|0)-(da(9328+(da(b>>0|0,1,0,1)|0|0)>>0|0,1,0,1)|0|0)|0;else c=0}else c=0;else c=1;else c=((b|0)!=0)<<31>>31;while(0);return c|0}function Fc(a){a=a|0;if(a>>>0<4)a=da(8648+(a<<2)|0,4,0,0)|0|0;else a=0;return a|0}function Gc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;if(a>>>0<=9){f=da(8664+(a<<2)|0,4,0,0)|0|0;e=b;ea(e|0,f|0,4,0);ea(e+4|0,0|0,4,0);e=8704+(a<<2)|0;a=c;ea(a|0,da(e|0,4,0,0)|0|0,4,0);ea(a+4|0,0|0,4,0);if(!d)e=0;else{ea(e|0,f|0,4,0);e=0}}else{ea(e|0,15033|0,4,0);ea(e+4|0,10788|0,4,0);ad(21,13648,e);e=21}i=g;return e|0}function Hc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g+8|0;f=g;a=Gc(a,e,f,d)|0;if(!a){ea(b|0,da(e|0,4,0,0)|0|0,4,0);ea(c|0,da(f|0,4,0,0)|0|0,4,0)}i=g;return a|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,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();l=n+4|0;h=n;switch(b|0){case 2:{ea(l|0,0|0,4,0);m=a+20|0;e=da(m|0,4,0,0)|0|0;f=(e|0)>0;if(f){h=da(a+16|0,4,0,0)|0|0;g=0;do{b=da(h+(g<<4)+4|0,4,0,0)|0|0;if(b)ea((da(b+4|0,4,0,0)|0|0)+4|0,da(b|0,4,0,0)|0|0,4,0);g=g+1|0}while((g|0)!=(e|0));g=a+520|0;ea(g|0,l|0,4,0);if(f){k=a+16|0;f=0;do{b=da((da(k|0,4,0,0)|0|0)+(f<<4)+12|0,4,0,0)|0|0;if(b){h=kc[(fa(da(8744+52|0,4,0,0)|0|0,127|0)|0)&127](16)|0;h=_((da(b+44|0,4,0,0)|0|0)+(da(b+12|0,4,0,0)|0|0)+(da(b+28|0,4,0,0)|0|0)+(da(b+60|0,4,0,0)|0|0)|0,h)|0;ea(l|0,h+(da(l|0,4,0,0)|0|0)|0,4,0);h=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](da(b+20|0,4,0,0)|0|0)|0;ea(l|0,(da(l|0,4,0,0)|0|0)+h|0,4,0);h=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](da(b+52|0,4,0,0)|0|0)|0;ea(l|0,(da(l|0,4,0,0)|0|0)+h|0,4,0);h=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](da(b+36|0,4,0,0)|0|0)|0;ea(l|0,(da(l|0,4,0,0)|0|0)+h|0,4,0);h=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](da(b+68|0,4,0,0)|0|0)|0;ea(l|0,(da(l|0,4,0,0)|0|0)+h|0,4,0);h=da(b+48|0,4,0,0)|0|0;if(h)do{ig(a,da(h+8|0,4,0,0)|0|0);h=da(h|0,4,0,0)|0|0}while((h|0)!=0);h=da(b+16|0,4,0,0)|0|0;if(h)do{jg(a,da(h+8|0,4,0,0)|0|0);h=da(h|0,4,0,0)|0|0}while((h|0)!=0);e=da(m|0,4,0,0)|0|0}f=f+1|0}while((f|0)<(e|0));f=da(l|0,4,0,0)|0|0}else f=0}else{g=a+520|0;ea(g|0,l|0,4,0);f=0}ea(g|0,0|0,4,0);ea(d|0,0|0,4,0);ea(c|0,f|0,4,0);f=0;break}case 9:case 8:case 7:{m=a+20|0;h=da(m|0,4,0,0)|0|0;if((h|0)>0){l=da(a+16|0,4,0,0)|0|0;k=b+-7|0;g=(e|0)==0;f=0;b=h;e=0;while(1){h=da(l+(e<<4)+4|0,4,0,0)|0|0;if(h){h=(da(da(h+4|0,4,0,0)|0|0,4,0,0)|0|0)+(k<<2)+184|0;f=(da(h|0,4,0,0)|0|0)+f|0;if(g)h=b;else{ea(h|0,0|0,4,0);h=da(m|0,4,0,0)|0|0}}else h=b;e=e+1|0;if((e|0)>=(h|0))break;else b=h}}else f=0;ea(d|0,0|0,4,0);ea(c|0,f|0,4,0);f=0;break}case 0:{g=a+252|0;ea(c|0,da(g|0,4,0,0)|0|0,4,0);f=a+256|0;ea(d|0,da(f|0,4,0,0)|0|0,4,0);if(!e)f=0;else{ea(f|0,da(g|0,4,0,0)|0|0,4,0);f=0}break}case 6:case 5:case 4:{ea(c|0,0|0,4,0);f=a+(b+-4<<2)+260|0;ea(d|0,da(f|0,4,0,0)|0|0,4,0);if(!e)f=0;else{ea(f|0,0|0,4,0);f=0}break}case 1:{k=a+20|0;g=da(k|0,4,0,0)|0|0;e=(g|0)>0;if(e){f=da(a+16|0,4,0,0)|0|0;h=0;do{b=da(f+(h<<4)+4|0,4,0,0)|0|0;if(b)ea((da(b+4|0,4,0,0)|0|0)+4|0,da(b|0,4,0,0)|0|0,4,0);h=h+1|0}while((h|0)!=(g|0));if(e){b=a+16|0;h=0;f=0;while(1){e=da((da(b|0,4,0,0)|0|0)+(h<<4)+4|0,4,0,0)|0|0;if(!e)e=g;else{m=da(da(e+4|0,4,0,0)|0|0,4,0,0)|0|0;a=m+152|0;l=(da(a|0,4,0,0)|0|0)+60+(da(m+140|0,2,0,1)|0|0)|0;l=_(kc[(fa(da(8744+128|0,4,0,0)|0|0,127|0)|0)&127](da((da(m+204|0,4,0,0)|0|0)+40|0,4,0,0)|0|0)|0,l)|0;m=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](m)|0;e=da(k|0,4,0,0)|0|0;f=l+f+m+(da(a|0,4,0,0)|0|0)|0}h=h+1|0;if((h|0)>=(e|0))break;else g=e}}else f=0}else f=0;ea(c|0,f|0,4,0);ea(d|0,0|0,4,0);f=0;break}case 3:{ea(h|0,0|0,4,0);e=a+520|0;ea(e|0,h|0,4,0);g=da(a+4|0,4,0,0)|0|0;if(!g)f=0;else{do{kg(a,g);lg(a,g);g=da(g+52|0,4,0,0)|0|0}while((g|0)!=0);f=da(h|0,4,0,0)|0|0}ea(e|0,0|0,4,0);ea(d|0,0|0,4,0);ea(c|0,f|0,4,0);f=0;break}case 10:{ea(d|0,0|0,4,0);m=a+512|0;l=da(m+4|0,4,0,0)|0|0;if((l|0)>0|(l|0)==0&(da(m|0,4,0,0)|0|0)>>>0>0)f=1;else{f=a+504|0;a=da(f+4|0,4,0,0)|0|0;f=(a|0)>0|(a|0)==0&(da(f|0,4,0,0)|0|0)>>>0>0}ea(c|0,f&1|0,4,0);f=0;break}default:f=1}i=n;return f|0}function Jc(a){a=a|0;var b=0;a:do if(!(Kc()|0)){b=da(2254*4|0,4,0,0)|0|0;if(!((b|0)==0|(a|0)==0))while(1){if(!(Zv(a,da(b+16|0,4,0,0)|0|0)|0))break a;b=da(b+12|0,4,0,0)|0|0;if(!b){b=0;break}}}else b=0;while(0);return b|0}function Kc(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();h=l;do if(!(da(2243*4|0,4,0,0)|0)){ea(2245*4|0,1|0,4,0);if(!(da(2246*4|0,4,0,0)|0)){if(!(da(2195*4|0,4,0,0)|0)){ea(h|0,16496|0,4,0);lf(4,h)|0}b=9024|0;c=b+40|0;do{ea(b|0,0|0,4,0);b=b+4|0}while((b|0)<(c|0));if(da(2187*4|0,4,0,0)|0)ea(2256*4|0,8|0,4,0);g=da(2234*4|0,4,0,0)|0|0;c=da(2235*4|0,4,0,0)|0|0;b=da(2236*4|0,4,0,0)|0|0;if((g|0)!=0&(c|0)>99&(b|0)>0){f=c&-8;ea(2235*4|0,f|0,4,0);ea(2263*4|0,g|0,4,0);ea(2264*4|0,b|0,4,0);e=b+-1|0;if((e|0)>0){b=g+(_(c>>>3,(b<<3)+-8|0)|0)|0;d=0;c=g;do{a=c;c=c+f|0;ea(a|0,c|0,4,0);d=d+1|0}while((d|0)!=(e|0))}else b=g;ea(b|0,0|0,4,0);ea(2262*4|0,b+4|0,4,0)}else{ea(2262*4|0,0|0,4,0);ea(2234*4|0,0|0,4,0);ea(2235*4|0,0|0,4,0);ea(2236*4|0,0|0,4,0)}if((da(2237*4|0,4,0,0)|0|0)==0|(da(2238*4|0,4,0,0)|0|0)<512|(da(2239*4|0,4,0,0)|0|0)<1){ea(2237*4|0,0|0,4,0);ea(2238*4|0,0|0,4,0);ea(2239*4|0,0|0,4,0)}a=kc[(fa(da(8744+56|0,4,0,0)|0|0,127|0)|0)&127](da(2202*4|0,4,0,0)|0|0)|0;if(a){b=9024|0;c=b+40|0;do{ea(b|0,0|0,4,0);b=b+4|0}while((b|0)<(c|0));break}}ea(2246*4|0,1|0,4,0);if(!(da(2249*4|0,4,0,0)|0))ea(2249*4|0,8|0,4,0);a=(da(2248*4|0,4,0,0)|0|0)+1|0;ea(2248*4|0,a|0,4,0);if(!(da(2244*4|0,4,0,0)|0|(da(2243*4|0,4,0,0)|0))){ea(2244*4|0,1|0,4,0);b=10840|0;c=b+92|0;do{ea(b|0,0|0,4,0);b=b+4|0}while((b|0)<(c|0));b=0;do{mg(10840,16608+(b*36|0)|0);b=b+1|0}while((b|0)!=59);b=0;do{mg(10840,19480+(b*36|0)|0);b=b+1|0}while((b|0)!=8);mg(10840,19256);mg(10840,19292|0);mg(10840,19328|0);if(!(da(2247*4|0,4,0,0)|0)){a=da(2214*4|0,4,0,0)|0|0;if(!a){ea(h|0,16440|0,4,0);lf(18,h)|0;a=da(2214*4|0,4,0,0)|0|0}a=kc[(fa(a|0,127|0)|0)&127](da(2213*4|0,4,0,0)|0|0)|0;if(!a)k=28}else k=28;if((k|0)==28){ea(2247*4|0,1|0,4,0);a=Sc(10)|0;if(!a)a=7;else{Vc(a);Lc(9584,1)|0;Lc(9672|0,0)|0;Lc(9760|0,0)|0;Lc(9848|0,0)|0;a=da(2237*4|0,4,0,0)|0|0;b=da(2238*4|0,4,0,0)|0|0;c=da(2239*4|0,4,0,0)|0|0;if(da(3153*4|0,4,0,0)|0){h=b&-8;ea(3154*4|0,h|0,4,0);ea(3161*4|0,c|0,4,0);ea(3155*4|0,c|0,4,0);if((c|0)<=90){ea(3156*4|0,((c|0)/10|0)+1|0,4,0);ea(3157*4|0,a|0,4,0);ea(3160*4|0,0|0,4,0);ea(3162*4|0,0|0,4,0);if(c)k=33}else{ea(3156*4|0,10|0,4,0);ea(3157*4|0,a|0,4,0);ea(3160*4|0,0|0,4,0);ea(3162*4|0,0|0,4,0);k=33}if((k|0)==33){e=b>>>3;f=c<<3;g=_(e<<3,c+-1|0)|0;b=a;d=0;while(1){c=c+-1|0;ea(b|0,d|0,4,0);if(!c)break;else{d=b;b=b+h|0}}b=a+(_(f,e)|0)|0;ea(3160*4|0,a+g|0,4,0);a=b}ea(3158*4|0,a|0,4,0)}ea(2243*4|0,1|0,4,0);a=0}}ea(2244*4|0,0|0,4,0);b=da(2248*4|0,4,0,0)|0|0}else{b=a;a=0}ea(2248*4|0,b+-1|0,4,0);if((b|0)<2)ea(2249*4|0,0|0,4,0)}else a=0;while(0);i=l;return a|0}function Lc(a,b){a=a|0;b=b|0;var c=0;c=Kc()|0;do if(!c){ng(a);c=da(2254*4|0,4,0,0)|0|0;if((b|0)!=0|(c|0)==0){ea(a+12|0,c|0,4,0);ea(2254*4|0,a|0,4,0);c=0;break}else{ea(a+12|0,da(c+12|0,4,0,0)|0|0,4,0);ea((da(2254*4|0,4,0,0)|0|0)+12|0,a|0,4,0);c=0;break}}while(0);return c|0}function Mc(a){a=a|0;ng(a);return 0}function Nc(a){a=a|0;return 0}function Oc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;do if(!(Kc()|0)){d=9032|0;c=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;if((b|0)>=0)if((b|0)>0|(b|0)==0&a>>>0>0){ea(2260*4|0,9|0,4,0);ea(2261*4|0,0|0,4,0);e=9032|0;ea(e|0,a|0,4,0);ea(e+4|0,b|0,4,0);ea(2265*4|0,(0>(b|0)|0==(b|0)&(da(2166*4|0,4,0,0)|0|0)>>>0>=a>>>0)&1|0,4,0);break}else{ea(2265*4|0,0|0,4,0);ea(2258*4|0,0|0,4,0);ea(2259*4|0,0|0,4,0);ea(2260*4|0,0|0,4,0);ea(2261*4|0,0|0,4,0);break}}else{d=-1;c=-1}while(0);C=d;return c|0}function Pc(){var a=0;a=da(2166*4|0,4,0,0)|0|0;C=((a|0)<0)<<31>>31;return a|0}function Qc(a){a=a|0;var b=0;b=(a|0)<0;Oc(b?0:a,b?0:((a|0)<0)<<31>>31)|0;return}function Rc(a){a=a|0;var b=0;b=da(2176*4|0,4,0,0)|0|0;if(a)ea(2176*4|0,da(2166*4|0,4,0,0)|0|0,4,0);C=((b|0)<0)<<31>>31;return b|0}function Sc(a){a=a|0;if((Kc()|0)!=0|(a|0)<1)a=0;else a=pg(a,((a|0)<0)<<31>>31)|0;return a|0}function Tc(a,b){a=a|0;b=b|0;if(!(Kc()|0))a=pg(a,b)|0;else a=0;return a|0}function Uc(a){a=a|0;a=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](a)|0;C=((a|0)<0)<<31>>31;return a|0}function Vc(a){a=a|0;var b=0;do if(a)if(!(da(2186*4|0,4,0,0)|0)){bc[(fa(da(8744+40|0,4,0,0)|0|0,31|0)|0)&31](a);break}else{b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](a)|0;ea(2166*4|0,(da(2166*4|0,4,0,0)|0|0)-b|0,4,0);ea(2175*4|0,(da(2175*4|0,4,0,0)|0|0)+-1|0,4,0);bc[(fa(da(8744+40|0,4,0,0)|0|0,31|0)|0)&31](a);break}while(0);return}function Wc(a,b){a=a|0;b=b|0;var c=0;if(!(Kc()|0)){c=(b|0)<0;b=qg(a,c?0:b,c?0:((b|0)<0)<<31>>31)|0}else b=0;return b|0}function Xc(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Kc()|0))b=qg(a,b,c)|0;else b=0;return b|0}function Yc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=i;i=i+112|0;if((i|0)>=(j|0))ba();d=e+28|0;c=e;if(!(Kc()|0)){ea(c+4|0,d|0,4,0);ea(c+8|0,d|0,4,0);ea(c|0,0|0,4,0);ea(c+12|0,0|0,4,0);ea(c+16|0,70|0,4,0);ea(c+20|0,1e9|0,4,0);ea(c+25>>0|0,0|0,1,0);ea(c+24>>0|0,2|0,1,0);rg(c,0,a,b);c=sg(c)|0}else c=0;i=e;return c|0}function Zc(a,b){a=a|0;b=b|0;var c=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();c=d;if(!(Kc()|0)){ea(c|0,b|0,4,0);c=Yc(a,c)|0}else c=0;i=d;return c|0}function _c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;i=i+32|0;if((i|0)>=(j|0))ba();e=f;if((a|0)>=1){ea(e+4|0,b|0,4,0);ea(e+8|0,b|0,4,0);ea(e|0,0|0,4,0);ea(e+12|0,0|0,4,0);ea(e+16|0,a|0,4,0);ea(e+20|0,0|0,4,0);ea(e+25>>0|0,0|0,1,0);ea(e+24>>0|0,0|0,1,0);rg(e,0,c,d);b=sg(e)|0}i=f;return b|0}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e;ea(f|0,d|0,4,0);a=_c(a,b,c,f)|0;i=e;return a|0}function ad(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+256|0;if((i|0)>=(j|0))ba();d=g+16|0;f=g+44|0;e=g;if(da(2250*4|0,4,0,0)|0){ea(e|0,c|0,4,0);ea(d+4|0,f|0,4,0);ea(d+8|0,f|0,4,0);ea(d|0,0|0,4,0);ea(d+12|0,0|0,4,0);ea(d+16|0,210|0,4,0);ea(d+20|0,0|0,4,0);ea(d+25>>0|0,0|0,1,0);ea(d+24>>0|0,0|0,1,0);rg(d,0,b,e);c=da(2250*4|0,4,0,0)|0|0;e=da(2251*4|0,4,0,0)|0|0;d=sg(d)|0;lc[(fa(c|0,63|0)|0)&63](e,a,d)}i=g;return}function bd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=i;i=i+256|0;if((i|0)>=(j|0))ba();d=e;do if(!(Kc()|0)){if((a|0)<1|(b|0)==0){ea(9064|0,0|0,1,0);break}if(!(da(9064|0,1,0,0)|0)){ea(9066|0,0|0,1,0);ea(9065|0,0|0,1,0);c=(Kc()|0)==0;c=c?da(2254*4|0,4,0,0)|0|0:0;$b[(fa(da(c+56|0,4,0,0)|0|0,63|0)|0)&63](c,256,d)|0;c=0;do{ea(9067+c>>0|0,c|0,1,0);c=c+1|0}while((c|0)!=256);c=0;do{g=9067+c|0;h=(da(d+c>>0|0,1,0,1)|0|0)+(da(g>>0|0,1,0,1)|0|0)+(da(9066|0,1,0,1)|0|0)|0;ea(9066|0,h|0,1,0);h=9067+(h&255)|0;f=da(h>>0|0,1,0,0)|0|0;ea(h>>0|0,da(g>>0|0,1,0,0)|0|0|0,1,0);ea(g>>0|0,f|0,1,0);c=c+1|0}while((c|0)!=256);ea(9064|0,1|0,1,0)}while(1){g=(da(9065|0,1,0,0)|0|0)+1<<24>>24;ea(9065|0,g|0,1,0);g=9067+(g&255)|0;d=da(g>>0|0,1,0,0)|0|0;c=d&255;f=(da(9066|0,1,0,1)|0|0)+c|0;ea(9066|0,f|0,1,0);ea(g>>0|0,da(9067+(f&255)>>0|0,1,0,0)|0|0|0,1,0);ea(9067+(da(9066|0,1,0,1)|0|0)>>0|0,d|0,1,0);ea(b>>0|0,da(9067+((da(9067+(da(9065|0,1,0,1)|0|0)>>0|0,1,0,1)|0|0)+c&255)>>0|0,1,0,0)|0|0|0,1,0);a=a+-1|0;if(!a)break;else b=b+1|0}}while(0);i=e;return}function cd(a,b){a=a|0;b=b|0;var c=0;if(a)if(!b)b=1;else{c=da(a>>0|0,1,0,0)|0|0;a:do if(!(c<<24>>24))c=0;else while(1){if((da(9328+(c&255)>>0|0,1,0,0)|0|0)!=(da(9328+(da(b>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0|0))break a;a=a+1|0;b=b+1|0;c=da(a>>0|0,1,0,0)|0|0;if(!(c<<24>>24)){c=0;break}}while(0);b=(da(9328+(c&255)>>0|0,1,0,1)|0|0)-(da(9328+(da(b>>0|0,1,0,1)|0|0)>>0|0,1,0,1)|0|0)|0}else b=((b|0)!=0)<<31>>31;return b|0}function dd(a){a=a|0;ea(2241*4|0,a|0,4,0);return 0}function ed(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,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;a:do if((c|0)==(a|0)){tg(c,1,10016,k);e=0}else{e=pg(48,0)|0;if(!e){ea(a+52|0,7|0,4,0);e=da(a+236|0,4,0,0)|0|0;if(!e){e=0;break}b=e+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(b|0,1|0,2,0);e=0;break}else{ug(e);e=0;break}}g=e+0|0;f=g+48|0;do{ea(g>>0|0,0|0,1,0);g=g+1|0}while((g|0)<(f|0));h=e+24|0;ea(h|0,vg(a,c,d)|0|0,4,0);f=vg(a,a,b)|0;g=e+4|0;ea(g|0,f|0,4,0);ea(e|0,a|0,4,0);ea(e+20|0,c|0,4,0);ea(e+16|0,1|0,4,0);ea(e+40|0,0|0,4,0);b=da(h|0,4,0,0)|0|0;do if(!((b|0)==0|(f|0)==0)?(wg(f,da((da(b+4|0,4,0,0)|0|0)+32|0,4,0,0)|0|0,-1,0)|0)!=7:0)if(!(da((da(g|0,4,0,0)|0|0)+8>>0|0,1,0,0)|0)){b=(da(h|0,4,0,0)|0|0)+16|0;ea(b|0,(da(b|0,4,0,0)|0|0)+1|0,4,0);break a}else{tg(a,1,47416,k);break}while(0);Vc(e);e=0}while(0);i=l;return e|0}function fd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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;A=i;i=i+32|0;if((i|0)>=(j|0))ba();d=A;n=A+16|0;q=A+12|0;u=A+8|0;y=a+24|0;e=da(y|0,4,0,0)|0|0;f=da(e+4|0,4,0,0)|0|0;ea(f+4|0,da(e|0,4,0,0)|0|0,4,0);z=a+28|0;c=da(z|0,4,0,0)|0|0;if(c>>>0<7?(30>>>(c&127)&1)==0:0){t=da(f|0,4,0,0)|0|0;x=a+4|0;c=da(x|0,4,0,0)|0|0;w=da(da(c+4|0,4,0,0)|0|0,4,0,0)|0|0;if((da(a|0,4,0,0)|0|0)!=0?(da(f+20>>0|0,1,0,0)|0|0)==2:0){v=0;e=5}else r=5;do if((r|0)==5){f=a+12|0;if(!(da(f|0,4,0,0)|0)){e=xg(c,2)|0;if(e){v=0;break}ea(f|0,1|0,4,0);v=da(x|0,4,0,0)|0|0;e=da(v+4|0,4,0,0)|0|0;ea(e+4|0,da(v|0,4,0,0)|0|0,4,0);e=da((da(e+12|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;ea(a+8|0,(da(e+41>>0|0,1,0,1)|0)<<16|(da(e+40>>0|0,1,0,1)|0)<<24|(da(e+42>>0|0,1,0,1)|0)<<8|(da(e+43>>0|0,1,0,1)|0)|0,4,0);e=da(y|0,4,0,0)|0|0}if(!(da(e+8>>0|0,1,0,0)|0)){v=1;e=xg(e,0)|0}else{v=0;e=0}}while(0);h=da((da(y|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;s=da(h+32|0,4,0,0)|0|0;m=da((da(x|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;p=da(m+32|0,4,0,0)|0|0;m=(da((da(m|0,4,0,0)|0|0)+5>>0|0,1,0,0)|0|0)==5;c=(s|0)==(p|0)|(e|0)==0&m^1?e:8;h=da(h+44|0,4,0,0)|0|0;f=(b|0)<0;a:do if(b){e=a+16|0;k=da(e|0,4,0,0)|0|0;l=0;do{if(!(k>>>0<=h>>>0&(c|0)==0))break a;if((k|0)!=((((da(2514*4|0,4,0,0)|0|0)>>>0)/((da((da((da(y|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+32|0,4,0,0)|0|0)>>>0)|0)+1|0)){c=yg(t,k,n,2)|0;if(!c){g=da(n|0,4,0,0)|0|0;c=zg(a,k,da(g+4|0,4,0,0)|0|0,0)|0;if(g)Ag(g)}}else c=0;k=(da(e|0,4,0,0)|0|0)+1|0;ea(e|0,k|0,4,0);l=l+1|0}while(f|(l|0)<(b|0))}while(0);if(!c){ea(a+36|0,h|0,4,0);n=da(a+16|0,4,0,0)|0|0;ea(a+32|0,h+1-n|0,4,0);if(n>>>0<=h>>>0){c=a+40|0;if(!(da(c|0,4,0,0)|0)){x=(da(da((da(y|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0)+88|0;ea(a+44|0,da(x|0,4,0,0)|0|0,4,0);ea(x|0,a|0,4,0);ea(c|0,1|0,4,0);c=0}else c=0}else r=22}else if((c|0)==101)r=22;do if((r|0)==22){if(!h){n=da(x|0,4,0,0)|0|0;c=da(n+4|0,4,0,0)|0|0;ea(c+4|0,da(n|0,4,0,0)|0|0,4,0);ea(c+44|0,0|0,4,0);c=Bg(c)|0;if((c|0)==0|(c|0)==101)h=1;else break}c=Cg(da(x|0,4,0,0)|0|0,1,(da(a+8|0,4,0,0)|0|0)+1|0)|0;if(!c){e=da(a|0,4,0,0)|0|0;if(e)Dg(e);if(m?(o=Eg(da(x|0,4,0,0)|0|0,2)|0,(o|0)!=0):0){c=o;break}if((s|0)<(p|0)){e=(p|0)/(s|0)|0;e=(h+-1+e|0)/(e|0)|0;f=da(2514*4|0,4,0,0)|0|0;g=da((da((da(x|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;e=(((e|0)==(((f>>>0)/(g>>>0)|0)+1|0))<<31>>31)+e|0;a=((s|0)<0)<<31>>31;o=rw(h|0,((h|0)<0)<<31>>31|0,s|0,a|0)|0;n=C;m=da(w+60|0,4,0,0)|0|0;l=da(w+24|0,4,0,0)|0|0;b:do if(e>>>0<=l>>>0){c=0;while(1){if((e|0)!=(((f>>>0)/(g>>>0)|0)+1|0)){c=yg(w,e,q,0)|0;if(c)break b;f=da(q|0,4,0,0)|0|0;c=Fg(f)|0;if(f)Ag(f)}e=e+1|0;f=(c|0)==0;if(e>>>0>l>>>0|f^1)break;g=da((da((da(x|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;f=da(2514*4|0,4,0,0)|0|0}if(f)r=38}else r=38;while(0);if((r|0)==38)c=Gg(w,0,1)|0;f=da(2514*4|0,4,0,0)|0|0;h=f+p|0;k=((h|0)<0)<<31>>31;g=(k|0)<(n|0)|(k|0)==(n|0)&h>>>0>>0;h=g?h:o;k=g?k:n;f=f+s|0;g=((f|0)<0)<<31>>31;e=(c|0)==0;if(e&((g|0)<(k|0)|(g|0)==(k|0)&f>>>0>>0))do{ea(u|0,0|0,4,0);c=pw(f|0,g|0,s|0,a|0)|0;c=iw(c|0,C|0,1,0)|0;c=yg(t,c,u,0)|0;e=da(u|0,4,0,0)|0|0;if(!c)c=sc[(fa(da((da(m|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](m,da(e+4|0,4,0,0)|0|0,s,f,g)|0;if(e)Ag(e);f=iw(f|0,g|0,s|0,a|0)|0;g=C;e=(c|0)==0}while(e&((g|0)<(k|0)|(g|0)==(k|0)&f>>>0>>0));if(!e)break;c=qc[(fa(da((da(m|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](m,d)|0;u=da(d+4|0,4,0,0)|0|0;if((c|0)==0&((u|0)>(n|0)|((u|0)==(n|0)?(da(d|0,4,0,0)|0|0)>>>0>o>>>0:0)))c=$b[(fa(da((da(m|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,63|0)|0)&63](m,o,n)|0;if(c)break;c=Hg(w,0)|0}else{ea(w+24|0,_((s|0)/(p|0)|0,h)|0|0,4,0);c=Gg(w,0,0)|0}if(!c){c=Ig(da(x|0,4,0,0)|0|0,0)|0;c=(c|0)==0?101:c}}}while(0);if(v){Jg(da(y|0,4,0,0)|0|0,0)|0;Ig(da(y|0,4,0,0)|0|0,0)|0}c=(c|0)==3082?7:c;ea(z|0,c|0,4,0)}i=A;return c|0}function gd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;if(!a)b=0;else{f=da(a+20|0,4,0,0)|0|0;c=da(a+24|0,4,0,0)|0|0;b=da(c+4|0,4,0,0)|0|0;ea(b+4|0,da(c|0,4,0,0)|0|0,4,0);if(da(a|0,4,0,0)|0){c=c+16|0;ea(c|0,(da(c|0,4,0,0)|0|0)+-1|0,4,0)}if(da(a+40|0,4,0,0)|0){b=(da(b|0,4,0,0)|0|0)+88|0;while(1){c=da(b|0,4,0,0)|0|0;if((c|0)==(a|0))break;else b=c+44|0}ea(b|0,da(a+44|0,4,0,0)|0|0,4,0)}Kg(da(a+4|0,4,0,0)|0|0,0,0);b=da(a+28|0,4,0,0)|0|0;b=(b|0)==101?0:b;c=da(a|0,4,0,0)|0|0;if(c){ea(c+52|0,b|0,4,0);d=da(c+236|0,4,0,0)|0|0;do if(d){e=d+8|0;if(!((da(e|0,2,0,0)|0)&9312)){ea(e|0,1|0,2,0);break}else{ug(d);c=da(a|0,4,0,0)|0|0;break}}while(0);Lg(c);if(da(a|0,4,0,0)|0)Vc(a)}Lg(f)}return b|0}function hd(a){a=a|0;return da(a+32|0,4,0,0)|0|0}function id(a){a=a|0;return da(a+36|0,4,0,0)|0|0}function jd(a){a=a|0;if((a|0)!=0?((da(a+88|0,2,0,0)|0)&256)!=0:0)a=da(a+168|0,4,0,0)|0|0;else a=0;return a|0}function kd(a){a=a|0;if(!a)a=1;else a=((da(a+88|0,2,0,0)|0)&8)!=0;return a&1|0}function ld(a){a=a|0;var b=0,c=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();c=d;do if(a){b=da(a|0,4,0,0)|0|0;if(!b){ad(21,47360,c);ea(c|0,68910|0,4,0);ea(c+4|0,10788|0,4,0);ad(21,13648,c);b=21;break}else{a=Ng(b,Mg(a)|0)|0;Lg(b);b=a;break}}else b=0;while(0);i=d;return b|0}function md(a){a=a|0;var b=0,c=0;if(!a)a=0;else{b=Og(a)|0;ea(a+76|0,-1|0,4,0);ea(a+80|0,0|0,4,0);ea(a+86>>0|0,2|0,1,0);ea(a+40|0,-1108210269|0,4,0);ea(a+92|0,0|0,4,0);ea(a+72|0,1|0,4,0);ea(a+87>>0|0,-1|0,1,0);ea(a+104|0,0|0,4,0);c=a+144|0;ea(c|0,0|0,4,0);ea(c+4|0,0|0,4,0);a=Ng(da(a|0,4,0,0)|0|0,b)|0}return a|0}function nd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=a+68|0;c=da(f|0,2,0,0)|0|0;if(c<<16>>16>0){g=a+60|0;b=da(g|0,4,0,0)|0|0;e=0;do{d=b+(e*40|0)|0;if(!(((da(b+(e*40|0)+8|0,2,0,0)|0)&9312)==0?(da(b+(e*40|0)+24|0,4,0,0)|0|0)==0:0)){Pg(d);b=da(g|0,4,0,0)|0|0;c=da(f|0,2,0,0)|0|0}ea(b+(e*40|0)+8|0,1|0,2,0);e=e+1|0}while((e|0)<(c<<16>>16|0))}b=a+88|0;c=da(b|0,2,0,0)|0|0;if((c&256)!=0?(da(a+188|0,4,0,0)|0|0)!=0:0)ea(b|0,c|8|0,2,0);return 0}function od(a){a=a|0;var b=0;b=a+8|0;if((da(b|0,2,0,0)|0)&18){Qg(a)|0;ea(b|0,da(b|0,2,0,1)|0|0|16|0,2,0);if(!(da(a+12|0,4,0,0)|0))b=0;else b=da(a+16|0,4,0,0)|0|0}else b=Rg(a,1)|0;return b|0}function pd(a){a=a|0;return Rg(a,1)|0}function qd(a){a=a|0;return Sg(a,1)|0}function rd(a){a=a|0;return Sg(a,2)|0}function sd(a){a=a|0;return +(+Tg(a))}function td(a){a=a|0;a=Ug(a)|0;return a|0}function ud(a){a=a|0;a=Ug(a)|0;return a|0}function vd(a){a=a|0;return Rg(a,2)|0}function wd(a){a=a|0;return Rg(a,3)|0}function xd(a){a=a|0;return Rg(a,2)|0}function yd(a){a=a|0;return da(10064+((da(a+8|0,2,0,1)|0|0)&31)>>0|0,1,0,1)|0|0|0}function zd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vg(a,b,c,0,d);return}function Ad(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(d>>>0>0|(d|0)==0&c>>>0>2147483647){c=e;if(!((c|0)==0|(c|0)==-1))bc[(fa(e|0,31|0)|0)&31](b);if(a){ea(a+20|0,18|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,10096,-1,1,0)|0}}else Vg(a,b,c,0,e);return}function Bd(a,b){a=a|0;b=+b;Xg(da(a|0,4,0,0)|0|0,b);return}function Cd(a,b,c){a=a|0;b=b|0;c=c|0;ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,b,c,1,-1)|0;return}function Dd(a,b,c){a=a|0;b=b|0;c=c|0;ea(a+20|0,1|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,b,c,2,-1)|0;return}function Ed(a,b){a=a|0;b=b|0;var c=0,d=0;a=da(a|0,4,0,0)|0|0;c=((b|0)<0)<<31>>31;d=a+8|0;if(!((da(d|0,2,0,0)|0)&9312)){ea(a|0,b|0,4,0);ea(a+4|0,c|0,4,0);ea(d|0,4|0,2,0)}else Yg(a,b,c);return}function Fd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=da(a|0,4,0,0)|0|0;d=a+8|0;if(!((da(d|0,2,0,0)|0)&9312)){ea(a|0,b|0,4,0);ea(a+4|0,c|0,4,0);ea(d|0,4|0,2,0)}else Yg(a,b,c);return}function Gd(a){a=a|0;var b=0;a=da(a|0,4,0,0)|0|0;b=a+8|0;if(!((da(b|0,2,0,0)|0)&9312))ea(b|0,1|0,2,0);else ug(a);return}function Hd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vg(a,b,c,1,d);return}function Id(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(d>>>0>0|(d|0)==0&c>>>0>2147483647){c=e;if(!((c|0)==0|(c|0)==-1))bc[(fa(e|0,31|0)|0)&31](b);if(a){ea(a+20|0,18|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,10096,-1,1,0)|0}}else Vg(a,b,c,f<<24>>24==4?2:f,e);return}function Jd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vg(a,b,c,2,d);return}function Kd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vg(a,b,c,3,d);return}function Ld(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vg(a,b,c,2,d);return}function Md(a,b){a=a|0;b=b|0;Zg(da(a|0,4,0,0)|0|0,b)|0;return}function Nd(a,b){a=a|0;b=b|0;_g(da(a|0,4,0,0)|0|0,b);return}function Od(a,b){a=a|0;b=b|0;var c=0;ea(a+20|0,b|0,4,0);ea(a+25>>0|0,1|0,1,0);c=da(a|0,4,0,0)|0|0;if((da(c+8|0,2,0,0)|0)&1){if((b|0)!=516){a=b&255;if(a>>>0>26|(a|0)==2)a=16328;else a=da(15488+(a<<2)|0,4,0,0)|0|0}else a=16344;Wg(c,a,-1,1,0)|0}return}function Pd(a){a=a|0;ea(a+20|0,18|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,10096,-1,1,0)|0;return}function Qd(a){a=a|0;var b=0,c=0;b=da(a|0,4,0,0)|0|0;c=b+8|0;if(!((da(c|0,2,0,0)|0)&9312))ea(c|0,1|0,2,0);else{ug(b);b=da(a|0,4,0,0)|0|0}ea(a+20|0,7|0,4,0);ea(a+25>>0|0,1|0,1,0);ea((da(b+32|0,4,0,0)|0|0)+65>>0|0,1|0,1,0);return}function Rd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=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,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=i;i=i+224|0;if((i|0)>=(j|0))ba();L=Q+8|0;K=Q;if(!($g(a)|0)){P=da(a|0,4,0,0)|0|0;D=a+88|0;ea(D|0,(da(D|0,2,0,0)|0)&-513|0,2,0);H=a+40|0;I=a+76|0;J=a+128|0;O=a+80|0;t=a+168|0;u=a+8|0;v=a+20|0;w=a+32|0;x=a+4|0;y=a+84|0;N=a+44|0;z=(a|0)==0;A=a+52|0;B=a+48|0;s=0;while(1){if((da(H|0,4,0,0)|0|0)!=-1108210269)md(a)|0;r=da(a|0,4,0,0)|0|0;if(da(r+65>>0|0,1,0,0)|0){M=7;break}c=da(I|0,4,0,0)|0|0;do if((c|0)<1){if((da(D|0,2,0,0)|0)&8){ea(O|0,17|0,4,0);c=1;break}if((c|0)<0){c=r+148|0;if(!(da(c|0,4,0,0)|0))ea(r+240|0,0|0,4,0);if((da(r+184|0,4,0,0)|0|0)!=0?(da(r+145>>0|0,1,0,0)|0|0)==0:0)ah(da(r|0,4,0,0)|0|0,J)|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0);c=da(D|0,2,0,0)|0|0;if(!(c&64)){c=r+156|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0);c=da(D|0,2,0,0)|0|0}if(c&128){q=r+152|0;ea(q|0,(da(q|0,4,0,0)|0|0)+1|0,4,0)}ea(I|0,0|0,4,0);M=22}else M=22}else M=22;while(0);if((M|0)==22){M=0;do if(!((da(D|0,2,0,0)|0)&3)){q=r+160|0;ea(q|0,(da(q|0,4,0,0)|0|0)+1|0,4,0);c=fh(a)|0;ea(q|0,(da(q|0,4,0,0)|0|0)+-1|0,4,0);if((c|0)==100)c=100;else M=101}else{g=da(a|0,4,0,0)|0|0;p=da(u|0,4,0,0)|0|0;o=p+40|0;bh(o,8);ea(v|0,0|0,4,0);if((da(O|0,4,0,0)|0|0)==7){ea(g+65>>0|0,1|0,1,0);c=1;M=101;break}e=da(w|0,4,0,0)|0|0;h=(da(D|0,2,0,0)|0)&3;if(h<<16>>16==1){f=da(u|0,4,0,0)|0|0;l=f+360|0;if((da(f+368|0,2,0,0)|0)&16){m=(da(f+372|0,4,0,0)|0|0)>>>2;d=da(f+376|0,4,0,0)|0|0;if(!m){n=d;f=e;b=0}else{c=0;f=e;do{f=(da((da(d+(c<<2)|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+f|0;c=c+1|0}while((c|0)<(m|0));n=d;b=m}}else{n=0;f=e;b=0}}else{n=0;f=e;b=0;l=0}e=h<<16>>16==2;d=da(I|0,4,0,0)|0|0;while(1){c=d+1|0;if((d|0)>=(f|0)){M=33;break}if(!e)break;if((da((da(x|0,4,0,0)|0|0)+(d*20|0)>>0|0,1,0,0)|0|0)==-99)break;else d=c}if((M|0)==33){ea(I|0,c|0,4,0);ea(O|0,0|0,4,0);c=101;M=101;break}ea(I|0,c|0,4,0);if(da(g+240|0,4,0,0)|0){ea(O|0,9|0,4,0);ea(L|0,15832|0,4,0);ch(N,g,10344,L);c=1;M=101;break}f=da(w|0,4,0,0)|0|0;if((d|0)<(f|0)){c=d;q=(da(x|0,4,0,0)|0|0)+(d*20|0)|0}else{d=d-f|0;f=da(n|0,4,0,0)|0|0;e=da(f+4|0,4,0,0)|0|0;if((d|0)<(e|0))e=d;else{f=d;c=0;while(1){d=f-e|0;c=c+1|0;f=da(n+(c<<2)|0,4,0,0)|0|0;e=da(f+4|0,4,0,0)|0|0;if((d|0)<(e|0)){e=d;break}else f=d}}c=e;q=(da(f|0,4,0,0)|0|0)+(e*20|0)|0}if(((da(D|0,2,0,0)|0)&3)==1){ea(p+48|0,4|0,2,0);e=o;ea(e|0,c|0,4,0);ea(e+4|0,((c|0)<0)<<31>>31|0,4,0);ea(p+88|0,2562|0,2,0);e=da(44856+((da(q>>0|0,1,0,1)|0)<<2)|0,4,0,0)|0|0;ea(p+96|0,e|0,4,0);f=e;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;m=p+80|0;ea(p+92|0,f-e&1073741823|0,4,0);ea(p+90>>0|0,1|0,1,0);if((da(q+1>>0|0,1,0,0)|0|0)==-18){c=(b<<2)+4|0;a:do if(!b)f=0;else{e=da(q+16|0,4,0,0)|0|0;d=0;while(1){f=d+1|0;if((da(n+(d<<2)|0,4,0,0)|0|0)==(e|0)){f=d;break a}if((f|0)<(b|0))d=f;else break}}while(0);if((f|0)==(b|0)?(dh(l,c,(b|0)!=0&1)|0)==0:0){ea((da(l+16|0,4,0,0)|0|0)+(b<<2)|0,da(q+16|0,4,0,0)|0|0,4,0);p=l+8|0;ea(p|0,da(p|0,2,0,1)|0|16|0,2,0);ea(l+12|0,c|0,4,0);p=m}else p=m}else p=m}ea(p+48|0,4|0,2,0);n=da(q+4|0,4,0,0)|0|0;o=p+40|0;ea(o|0,n|0,4,0);ea(o+4|0,((n|0)<0)<<31>>31|0,4,0);ea(p+88|0,4|0,2,0);n=da(q+8|0,4,0,0)|0|0;o=p+80|0;ea(o|0,n|0,4,0);ea(o+4|0,((n|0)<0)<<31>>31|0,4,0);ea(p+128|0,4|0,2,0);n=da(q+12|0,4,0,0)|0|0;o=p+120|0;ea(o|0,n|0,4,0);ea(o+4|0,((n|0)<0)<<31>>31|0,4,0);n=p+160|0;if(!(eh(n,32)|0)){ea(p+168|0,514|0,2,0);o=p+176|0;b=da(o|0,4,0,0)|0|0;b:do switch(da(q+1>>0|0,1,0,0)|0|0){case -6:{g=da(q+16|0,4,0,0)|0|0;c=g+6|0;ea(L|0,da(c|0,2,0,1)|0|0,4,0);$c(32,b,44768,L)|0;if(!b)f=0;else{f=b;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;f=f-b&1073741823}c:do if(da(c|0,2,0,0)|0){h=g+16|0;l=0;while(1){e=da(g+(l<<2)+20|0,4,0,0)|0|0;if(e){e=da(e|0,4,0,0)|0|0;if(!e){d=0;e=0}else M=61}else{e=44776;M=61}do if((M|0)==61){M=0;m=e;while(1)if(!(da(m>>0|0,1,0,0)|0))break;else m=m+1|0;d=m-e&1073741823;if((d|0)!=6)break;m=(Yv(e,11152,6)|0)==0;d=m?1:6;e=m?44784:e}while(0);if((d+f|0)>26)break;m=f+1|0;ea(b+f>>0|0,44|0,1,0);if(da((da(h|0,4,0,0)|0|0)+l>>0|0,1,0,0)|0){ea(b+m>>0|0,45|0,1,0);m=f+2|0}jw(b+m|0,e|0,d+1|0)|0;f=m+d|0;l=l+1|0;if((l|0)>=(da(c|0,2,0,1)|0|0))break c}c=b+f|0;ea(c>>0|0,44|0,1,0);ea(c+1>>0|0,46|0,1,0);ea(c+2>>0|0,46|0,1,0);ea(c+3>>0|0,46|0,1,0)}while(0);ea(b+f>>0|0,41|0,1,0);ea(b+(f+1)>>0|0,0|0,1,0);e=b;break}case -15:{$c(32,b,44832,L)|0;e=b;break}case -18:{$c(32,b,44848,L)|0;e=b;break}case -4:{ea(L|0,da(da(q+16|0,4,0,0)|0|0,4,0,0)|0|0,4,0);$c(32,b,44792,L)|0;e=b;break}case -5:{c=da(q+16|0,4,0,0)|0|0;e=da(c|0,2,0,0)|0|0;ea(L|0,da(c+24|0,4,0,0)|0|0,4,0);ea(L+4|0,e|0,4,0);$c(32,b,44800,L)|0;e=b;break}case -13:{d=da(q+16|0,4,0,0)|0|0;e=da(d+4|0,4,0,0)|0|0;c=L;ea(c|0,da(d|0,4,0,0)|0|0,4,0);ea(c+4|0,e|0,4,0);$c(32,b,19920,L)|0;e=b;break}case -14:{ea(L|0,da(q+16|0,4,0,0)|0|0,4,0);$c(32,b,44808,L)|0;e=b;break}case -12:{ea(k|0,+(+(+da(da(q+16|0,4,0,0)|0|0,8,1,0))),8,1);ea(L|0,da(k|0,4,0,0)|0|0,4,0);ea(L+4|0,da(k+4|0,4,0,0)|0|0,4,0);$c(32,b,19912,L)|0;e=b;break}case -8:{f=da(q+16|0,4,0,0)|0|0;e=da(f+8|0,2,0,1)|0|0;if(e&2){e=da(f+16|0,4,0,0)|0|0;break b}if(e&4){d=f;e=da(d+4|0,4,0,0)|0|0;c=L;ea(c|0,da(d|0,4,0,0)|0|0,4,0);ea(c+4|0,e|0,4,0);$c(32,b,19920,L)|0;e=b;break b}if(e&8){ea(k|0,+(+(+da(f|0,8,1,0))),8,1);ea(L|0,da(k|0,4,0,0)|0|0,4,0);ea(L+4|0,da(k+4|0,4,0,0)|0|0,4,0);$c(32,b,19912,L)|0;e=b;break b}if(!(e&1))e=44816;else{$c(32,b,20304,L)|0;e=b}break}case -19:{ea(b>>0|0,0|0,1,0);e=b;break}case -10:{ea(L|0,da((da(q+16|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,4,0);$c(32,b,44824,L)|0;e=b;break}default:{f=da(q+16|0,4,0,0)|0|0;if(!f){ea(b>>0|0,0|0,1,0);e=b}else e=f}}while(0);if((e|0)==(da(o|0,4,0,0)|0|0)){if(!e)c=0;else{f=e;while(1)if(!(da(f>>0|0,1,0,0)|0))break;else f=f+1|0;c=f-e&1073741823}ea(p+172|0,c|0,4,0);ea(p+170>>0|0,1|0,1,0)}else Wg(n,e,-1,1,0)|0;c=da(D|0,2,0,0)|0|0;if((c&3)==1){if(eh(p+200|0,4)|0){c=1;M=101;break}ea(p+208|0,514|0,2,0);ea(p+212|0,2|0,4,0);c=da(p+216|0,4,0,0)|0|0;ea(L|0,da(q+3>>0|0,1,0,1)|0|0,4,0);$c(3,c,44760,L)|0;ea(p+210>>0|0,1|0,1,0);ea(p+248|0,1|0,2,0);c=da(D|0,2,0,0)|0|0}ea(y|0,12-((c&3)<<2)|0,2,0);ea(v|0,(da(u|0,4,0,0)|0|0)+40|0,4,0);ea(O|0,0|0,4,0);c=100}else{c=1;M=101}}while(0);if((M|0)==101){M=0;b=r+184|0;if(((da(b|0,4,0,0)|0|0)!=0?(da(r+145>>0|0,1,0,0)|0|0)==0:0)?(da(t|0,4,0,0)|0|0)!=0:0){ah(da(r|0,4,0,0)|0|0,K)|0;b=da(b|0,4,0,0)|0|0;o=da(r+188|0,4,0,0)|0|0;p=da(t|0,4,0,0)|0|0;d=K;q=J;q=cw(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0,da(q|0,4,0,0)|0|0,da(q+4|0,4,0,0)|0|0)|0;q=rw(q|0,C|0,1e6,0)|0;pc[(fa(b|0,15|0)|0)&15](o,p,q,C)}if((c|0)==101){g=r+20|0;f=da(g|0,4,0,0)|0|0;if((f|0)>0){h=r+16|0;l=r+216|0;m=r+220|0;b=0;c=0;do{e=da(h|0,4,0,0)|0|0;d=da(e+(b<<4)+4|0,4,0,0)|0|0;if(((d|0)!=0?(E=da(d+4|0,4,0,0)|0|0,ea(E+4|0,da(d|0,4,0,0)|0|0,4,0),E=da((da(E|0,4,0,0)|0|0)+208|0,4,0,0)|0|0,(E|0)!=0):0)?(G=E+12|0,F=da(G|0,4,0,0)|0|0,ea(G|0,0|0,4,0),G=da(l|0,4,0,0)|0|0,(G|0)!=0&(F|0)>0&(c|0)==0):0){c=oc[(fa(G|0,31|0)|0)&31](da(m|0,4,0,0)|0|0,r,da(e+(b<<4)|0,4,0,0)|0|0,F)|0;f=da(g|0,4,0,0)|0|0}b=b+1|0}while((b|0)<(f|0))}else c=0;ea(O|0,c|0,4,0);c=(c|0)==0?101:1}}ea(r+52|0,c|0,4,0);if((Ng(da(a|0,4,0,0)|0|0,da(O|0,4,0,0)|0|0)|0)==7)ea(O|0,7|0,4,0)}if(((da(D|0,2,0,0)|0)&256)!=0&(c|0)!=100&(c|0)!=101)c=gh(a)|0;b=(da(r+56|0,4,0,0)|0)&c;if((b|0)!=17)break;f=s+1|0;if((s|0)>=50){b=17;break}d=da(I|0,4,0,0)|0|0;if(!z?((da(D|0,2,0,0)|0)&256)!=0:0)c=da(t|0,4,0,0)|0|0;else c=0;e=da(a|0,4,0,0)|0|0;b=hh(e,c,-1,0,a,K,0)|0;if((b|0)==7){b=e;M=124;break}else if(b){M=127;break}s=da(K|0,4,0,0)|0|0;jw(L|0,s|0,208)|0;jw(s|0,a|0,208)|0;jw(a|0,L|0,208)|0;q=s+52|0;r=da(q|0,4,0,0)|0|0;ea(q|0,da(A|0,4,0,0)|0|0,4,0);ea(A|0,r|0,4,0);r=s+48|0;q=da(r|0,4,0,0)|0|0;ea(r|0,da(B|0,4,0,0)|0|0,4,0);ea(B|0,q|0,4,0);q=s+168|0;r=da(q|0,4,0,0)|0|0;ea(q|0,da(t|0,4,0,0)|0|0,4,0);ea(t|0,r|0,4,0);ea(D|0,(da(D|0,2,0,0)|0)&-257|(da(s+88|0,2,0,0)|0)&256|0,2,0);ih(s,a);ea(s+80|0,0|0,4,0);Mg(s)|0;md(a)|0;if((d|0)<=-1){s=f;continue}ea(D|0,da(D|0,2,0,0)|0|512|0,2,0);s=f}if((M|0)==7){ea(O|0,7|0,4,0);b=7}else if((M|0)==124){ea(b+65>>0|0,1|0,1,0);b=7;M=127}do if((M|0)==127){c=Rg(da(P+236|0,4,0,0)|0|0,1)|0;lg(P,da(N|0,4,0,0)|0|0);if(!(da(P+65>>0|0,1,0,0)|0)){ea(N|0,jh(P,c)|0|0,4,0);ea(O|0,b|0,4,0);break}else{ea(N|0,0|0,4,0);ea(O|0,7|0,4,0);b=7;break}}while(0);b=Ng(P,b)|0}else{ea(L|0,69408|0,4,0);ea(L+4|0,10788|0,4,0);ad(21,13648,L);b=21}i=Q;return b|0}function Sd(a){a=a|0;return da((da(a+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0}function Td(a){a=a|0;return da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0}function Ud(a,b){a=a|0;b=b|0;var c=0;c=da(a+8|0,4,0,0)|0|0;if(!((da(c+8|0,2,0,0)|0)&8192))c=kh(a,b)|0;else c=da(c+16|0,4,0,0)|0|0;return c|0}function Vd(a,b){a=a|0;b=b|0;var c=0;c=da((da(a+12|0,4,0,0)|0|0)+204|0,4,0,0)|0|0;a:do if(!c)c=0;else{a=da(a+16|0,4,0,0)|0|0;while(1){if((da(c|0,4,0,0)|0|0)==(a|0)?(da(c+4|0,4,0,0)|0|0)==(b|0):0)break;c=da(c+16|0,4,0,0)|0|0;if(!c){c=0;break a}}c=da(c+8|0,4,0,0)|0|0}while(0);return c|0}function Wd(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;f=da(a+12|0,4,0,0)|0|0;do if((b|0)<0)i=14;else{h=f+204|0;e=da(h|0,4,0,0)|0|0;a:do if(e){g=da(a+16|0,4,0,0)|0|0;while(1){if((da(e|0,4,0,0)|0|0)==(g|0)?(da(e+4|0,4,0,0)|0|0)==(b|0):0)break;e=da(e+16|0,4,0,0)|0|0;if(!e){i=8;break a}}if(e){f=da(e+12|0,4,0,0)|0|0;if(f)bc[(fa(f|0,31|0)|0)&31](da(e+8|0,4,0,0)|0|0)}else i=8}else i=8;while(0);if((i|0)==8){e=lh(da(f|0,4,0,0)|0|0,20,0)|0;if(!e){i=14;break}f=e+0|0;g=f+16|0;do{ea(f>>0|0,0|0,1,0);f=f+1|0}while((f|0)<(g|0));ea(e|0,da(a+16|0,4,0,0)|0|0,4,0);ea(e+4|0,b|0,4,0);ea(e+16|0,da(h|0,4,0,0)|0|0,4,0);ea(h|0,e|0,4,0);f=a+25|0;if(!(da(f>>0|0,1,0,0)|0)){ea(a+20|0,0|0,4,0);ea(f>>0|0,1|0,1,0)}}ea(e+8|0,c|0,4,0);ea(e+12|0,d|0,4,0)}while(0);if((i|0)==14?(d|0)!=0:0)bc[(fa(d|0,31|0)|0)&31](c);return}function Xd(a){a=a|0;return da((da(a+8|0,4,0,0)|0|0)+12|0,4,0,0)|0|0}function Yd(a){a=a|0;if(!a)a=0;else a=da(a+84|0,2,0,1)|0|0;return a|0}function Zd(a){a=a|0;if((a|0)!=0?(da(a+20|0,4,0,0)|0|0)!=0:0)a=da(a+84|0,2,0,1)|0|0;else a=0;return a|0}function _d(a,b){a=a|0;b=b|0;var c=0;b=od(mh(a,b)|0)|0;if(a){c=a+80|0;ea(c|0,Ng(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0|0,4,0)}return b|0}function $d(a,b){a=a|0;b=b|0;var c=0;b=Sg(mh(a,b)|0,1)|0;if(a){c=a+80|0;ea(c|0,Ng(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0|0,4,0)}return b|0}function ae(a,b){a=a|0;b=b|0;var c=0;b=Sg(mh(a,b)|0,2)|0;if(a){c=a+80|0;ea(c|0,Ng(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0|0,4,0)}return b|0}function be(a,b){a=a|0;b=b|0;var c=0.0;c=+Tg(mh(a,b)|0);if(a){b=a+80|0;ea(b|0,Ng(da(a|0,4,0,0)|0|0,da(b|0,4,0,0)|0|0)|0|0,4,0)}return +c}function ce(a,b){a=a|0;b=b|0;var c=0;b=Ug(mh(a,b)|0)|0;if(a){c=a+80|0;ea(c|0,Ng(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0|0,4,0)}return b|0}function de(a,b){a=a|0;b=b|0;var c=0,d=0;b=Ug(mh(a,b)|0)|0;c=C;if(a){d=a+80|0;ea(d|0,Ng(da(a|0,4,0,0)|0|0,da(d|0,4,0,0)|0|0)|0|0,4,0)}C=c;return b|0}function ee(a,b){a=a|0;b=b|0;var c=0;b=Rg(mh(a,b)|0,1)|0;if(a){c=a+80|0;ea(c|0,Ng(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0|0,4,0)}return b|0}function fe(a,b){a=a|0;b=b|0;var c=0,d=0;b=mh(a,b)|0;c=b+8|0;d=da(c|0,2,0,1)|0|0;if(d&2048)ea(c|0,d&59391|4096|0,2,0);if(a){c=a+80|0;ea(c|0,Ng(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0|0,4,0)}return b|0}function ge(a,b){a=a|0;b=b|0;var c=0;b=Rg(mh(a,b)|0,2)|0;if(a){c=a+80|0;ea(c|0,Ng(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0|0,4,0)}return b|0}function he(a,b){a=a|0;b=b|0;var c=0;b=da(10064+((da((mh(a,b)|0)+8|0,2,0,1)|0|0)&31)>>0|0,1,0,1)|0|0;if(a){c=a+80|0;ea(c|0,Ng(da(a|0,4,0,0)|0|0,da(c|0,4,0,0)|0|0)|0|0,4,0)}return b|0}function ie(a,b){a=a|0;b=b|0;var c=0,d=0;d=da(a|0,4,0,0)|0|0;if(!a)c=0;else c=da(a+84|0,2,0,1)|0|0;if((c|0)>(b|0)&(b|0)>-1){b=Rg((da(a+16|0,4,0,0)|0|0)+(b*40|0)|0,1)|0;c=d+65|0;if(da(c>>0|0,1,0,0)|0){ea(c>>0|0,0|0,1,0);b=0}}else b=0;return b|0}function je(a,b){a=a|0;b=b|0;var c=0,d=0;d=da(a|0,4,0,0)|0|0;if(!a)c=0;else c=da(a+84|0,2,0,1)|0|0;if((c|0)>(b|0)&(b|0)>-1){b=Rg((da(a+16|0,4,0,0)|0|0)+(b*40|0)|0,2)|0;c=d+65|0;if(da(c>>0|0,1,0,0)|0){ea(c>>0|0,0|0,1,0);b=0}}else b=0;return b|0}function ke(a,b){a=a|0;b=b|0;var c=0,d=0;d=da(a|0,4,0,0)|0|0;if(!a)c=0;else c=da(a+84|0,2,0,1)|0|0;if((c|0)>(b|0)&(b|0)>-1){b=Rg((da(a+16|0,4,0,0)|0|0)+((c+b|0)*40|0)|0,1)|0;c=d+65|0;if(da(c>>0|0,1,0,0)|0){ea(c>>0|0,0|0,1,0);b=0}}else b=0;return b|0}function le(a,b){a=a|0;b=b|0;var c=0,d=0;d=da(a|0,4,0,0)|0|0;if(!a)c=0;else c=da(a+84|0,2,0,1)|0|0;if((c|0)>(b|0)&(b|0)>-1){b=Rg((da(a+16|0,4,0,0)|0|0)+((c+b|0)*40|0)|0,2)|0;c=d+65|0;if(da(c>>0|0,1,0,0)|0){ea(c>>0|0,0|0,1,0);b=0}}else b=0;return b|0}function me(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return nh(a,b,c,d,e,0)|0}function ne(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(e>>>0>0|(e|0)==0&d>>>0>2147483647){d=f;if((d|0)==0|(d|0)==-1)d=18;else{bc[(fa(f|0,31|0)|0)&31](c);d=18}}else d=nh(a,b,c,d,f,0)|0;return d|0}function oe(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=oh(a,b)|0;if(!d)Xg((da(a+60|0,4,0,0)|0|0)+((b+-1|0)*40|0)|0,c);return d|0}function pe(a,b,c){a=a|0;b=b|0;c=c|0;return qe(a,b,c,((c|0)<0)<<31>>31)|0}function qe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=oh(a,b)|0;do if(!e){b=b+-1|0;f=da(a+60|0,4,0,0)|0|0;a=f+(b*40|0)|0;b=f+(b*40|0)+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(a|0,c|0,4,0);ea(a+4|0,d|0,4,0);ea(b|0,4|0,2,0);break}else{Yg(a,c,d);break}}while(0);return e|0}function re(a,b){a=a|0;b=b|0;return oh(a,b)|0}function se(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return nh(a,b,c,d,e,1)|0}function te(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;if(e>>>0>0|(e|0)==0&d>>>0>2147483647){d=f;if((d|0)==0|(d|0)==-1)d=18;else{bc[(fa(f|0,31|0)|0)&31](c);d=18}}else d=nh(a,b,c,d,f,g<<24>>24==4?2:g)|0;return d|0}function ue(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return nh(a,b,c,d,e,2)|0}function ve(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=da(c+8|0,2,0,0)|0|0;e=da(10064+(d&31)>>0|0,1,0,1)|0|0;do if((e|0)==3)d=nh(a,b,da(c+16|0,4,0,0)|0|0,da(c+12|0,4,0,0)|0|0,-1,da(c+10>>0|0,1,0,0)|0|0)|0;else if((e|0)==2)d=oe(a,b,+(+da(c|0,8,1,0)))|0;else if((e|0)==4)if(!(d&16384)){d=nh(a,b,da(c+16|0,4,0,0)|0|0,da(c+12|0,4,0,0)|0|0,-1,0)|0;break}else{d=we(a,b,da(c|0,4,0,0)|0|0)|0;break}else if((e|0)==1){d=c;d=qe(a,b,da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0)|0}else d=oh(a,b)|0;while(0);return d|0}function we(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=oh(a,b)|0;if(!d)_g((da(a+60|0,4,0,0)|0|0)+((b+-1|0)*40|0)|0,c);return d|0}function xe(a){a=a|0;if(!a)a=0;else a=da(a+68|0,2,0,0)|0|0;return a|0}function ye(a,b){a=a|0;b=b|0;if(!((a|0)==0|(b|0)<1)?(da(a+70|0,2,0,0)|0|0)>=(b|0):0)b=da((da(a+64|0,4,0,0)|0|0)+(b+-1<<2)|0,4,0,0)|0|0;else b=0;return b|0}function ze(a,b){a=a|0;b=b|0;var c=0;if(!b)c=0;else{c=b;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;c=c-b&1073741823}return ph(a,b,c)|0}function Ae(a,b){a=a|0;b=b|0;var c=0,d=0;if((da(a+68|0,2,0,0)|0|0)==(da(b+68|0,2,0,0)|0|0)){d=b+88|0;c=da(d|0,2,0,0)|0|0;if((c&256)!=0?(da(b+188|0,4,0,0)|0|0)!=0:0)ea(d|0,c|8|0,2,0);c=a+88|0;d=da(c|0,2,0,0)|0|0;if((d&256)!=0?(da(a+188|0,4,0,0)|0|0)!=0:0)ea(c|0,d|8|0,2,0);ih(a,b);c=0}else c=1;return c|0}function Be(a){a=a|0;if(!a)a=0;else a=da(a|0,4,0,0)|0|0;return a|0}function Ce(a){a=a|0;if(!a)a=1;else a=(da(a+88|0,2,0,1)|0|0)>>>6&1;return a|0}function De(a){a=a|0;if((a|0)!=0?(da(a+76|0,4,0,0)|0|0)>-1:0)a=(da(a+40|0,4,0,0)|0|0)==-1108210269;else a=0;return a&1|0}function Ee(a,b){a=a|0;b=b|0;if(!b)a=a+4|0;else a=b+52|0;return da(a|0,4,0,0)|0|0}function Fe(a,b,c){a=a|0;b=b|0;c=c|0;a=a+(b<<2)+108|0;b=da(a|0,4,0,0)|0|0;if(c)ea(a|0,0|0,4,0);return b|0}function Ge(a){a=a|0;var b=0,c=0,d=0;c=a+8|0;d=da(c|0,2,0,1)|0|0;b=da(10064+(d&31)>>0|0,1,0,1)|0|0;if((d&15|0)==2){qh(a,0);b=da(10064+((da(c|0,2,0,1)|0|0)&31)>>0|0,1,0,1)|0|0}return b|0}function He(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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,O=0;O=i;i=i+16|0;if((i|0)>=(j|0))ba();M=O;N=O+4|0;ea(N|0,0|0,4,0);ea(h|0,0|0,4,0);H=(g|0)!=0;I=H&1;K=lh(a,28,0)|0;do if(K){g=K+0|0;m=g+28|0;do{ea(g>>0|0,0|0,1,0);g=g+1|0}while((g|0)<(m|0));m=lh(a,536,0)|0;if(m){E=a+20|0;F=a+16|0;v=a+24|0;g=K+20|0;w=K+12|0;x=K+24|0;y=a+65|0;z=I^3;A=I|2;B=m+440|0;C=m+72|0;D=m+68|0;l=0;G=1;k=0;while(1){ew(m|0,0,536)|0;ea(m|0,a|0,4,0);lg(a,l);ea(N|0,0|0,4,0);l=da(E|0,4,0,0)|0|0;if((l|0)>0){n=da(F|0,4,0,0)|0|0;p=0;do{o=da(n+(p<<4)+4|0,4,0,0)|0|0;if(o)ea((da(o+4|0,4,0,0)|0|0)+4|0,da(o|0,4,0,0)|0|0,4,0);p=p+1|0}while((p|0)!=(l|0))}u=rh(m,0,c,b)|0;if(!u)break;l=da(u+44>>0|0,1,0,0)|0|0;if(l&16){L=11;break}if(l&32){L=13;break}if(da(u+12|0,4,0,0)|0){L=17;break}t=u+38|0;q=da(t|0,2,0,0)|0|0;a:do if(q<<16>>16>0){p=da(u+4|0,4,0,0)|0|0;o=q<<16>>16;l=0;while(1){n=l+1|0;if(!(cd(da(p+(l*24|0)|0,4,0,0)|0|0,d)|0)){n=l;break a}if((n|0)<(o|0))l=n;else break}}else n=0;while(0);if((n|0)==(q<<16>>16|0)){L=23;break}if(H){if(((da(v|0,4,0,0)|0)&524288|0)!=0?(J=da(u+16|0,4,0,0)|0|0,(J|0)!=0):0){r=J;l=0;do{q=da(r+20|0,4,0,0)|0|0;if((q|0)>0){p=0;do{l=(da(r+(p<<3)+36|0,4,0,0)|0|0)==(n|0)?10280:l;p=p+1|0}while((p|0)<(q|0))}r=da(r+4|0,4,0,0)|0|0}while((r|0)!=0)}else l=0;p=da(u+8|0,4,0,0)|0|0;if(p)do{o=da(p+46|0,2,0,0)|0|0;if(o<<16>>16){s=da(p+4|0,4,0,0)|0|0;q=o&65535;r=0;do{l=(da(s+(r<<1)|0,2,0,0)|0|0)==(n|0)?10296:l;r=r+1|0}while((r|0)<(q|0))}p=da(p+20|0,4,0,0)|0|0}while((p|0)!=0);if(l){L=36;break}}s=uh(m)|0;ea(g|0,s|0,4,0);if(s){r=da(u+68|0,4,0,0)|0|0;b:do if(r){q=da(E|0,4,0,0)|0|0;if((q|0)>0){p=da(F|0,4,0,0)|0|0;l=0;while(1){o=l+1|0;if((da(p+(l<<4)+12|0,4,0,0)|0|0)==(r|0)){o=l;break b}if((o|0)<(q|0))l=o;else break}}else o=0}else o=-1e6;while(0);l=da(r+4|0,4,0,0)|0|0;wh(s,vh(s,4,o,I,da(r|0,4,0,0)|0|0)|0,l,-14);l=s+4|0;p=da(l|0,4,0,0)|0|0;q=s+32|0;if(p)ea(p+(((da(q|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,1|0,1,0);xh(s,10,10120)|0;p=s+96|0;ea(p|0,da(p|0,4,0,0)|0|1<>>0>1){r=da(l|0,4,0,0)|0|0;ea(r+24|0,o|0,4,0);p=u+32|0;ea(r+28|0,da(p|0,4,0,0)|0|0,4,0);ea((da(l|0,4,0,0)|0|0)+32|0,I|0,4,0)}else p=u+32|0;wh(s,1,da(u|0,4,0,0)|0|0,0);yh(s,z);if((da(q|0,4,0,0)|0|0)>>>0>A>>>0){ea((da(l|0,4,0,0)|0|0)+(A*20|0)+8|0,da(p|0,4,0,0)|0|0,4,0);ea((da(l|0,4,0,0)|0|0)+(A*20|0)+12|0,o|0,4,0)}wh(s,A,(da(t|0,2,0,0)|0|0)+1|0,-14);if((da(q|0,4,0,0)|0|0)>>>0>6)ea((da(l|0,4,0,0)|0|0)+128|0,da(t|0,2,0,0)|0|0,4,0);if(!(da(y>>0|0,1,0,0)|0)){ea(B|0,1|0,4,0);ea(C|0,1|0,4,0);ea(D|0,1|0,4,0);zh(s,m)}}ea(K|0,I|0,4,0);ea(w|0,n|0,4,0);ea(x|0,a|0,4,0);if(da(y>>0|0,1,0,0)|0){L=57;break}qe(da(g|0,4,0,0)|0|0,1,e,f)|0;k=Ah(K,e,f,N)|0;if(!((G|0)<50&(k|0)==17)){L=57;break}l=da(N|0,4,0,0)|0|0;G=G+1|0;k=17}if((L|0)==11){ea(M|0,c|0,4,0);sh(m,10160,M)}else if((L|0)==13){ea(M|0,c|0,4,0);sh(m,10192,M)}else if((L|0)==17){ea(M|0,c|0,4,0);sh(m,10232,M)}else if((L|0)==23){lg(a,0);ea(M|0,d|0,4,0);ea(N|0,th(a,10256,M)|0|0,4,0);k=1;L=62;break}else if((L|0)==36){lg(a,0);ea(M|0,l|0,4,0);ea(N|0,th(a,10304,M)|0|0,4,0);k=1;L=62;break}else if((L|0)==57)if(!k){k=1;l=m;L=58;break}else{l=m;L=61;break}l=m+4|0;if(!(da(l|0,4,0,0)|0)){k=1;L=62}else{lg(a,0);ea(N|0,da(l|0,4,0,0)|0|0,4,0);ea(l|0,0|0,4,0);k=1;L=62}}else{k=1;l=m;L=58}}else{k=0;l=0;L=58}while(0);do if((L|0)==58)if(da(a+65>>0|0,1,0,0)|0)if(k){k=0;L=61;break}else{k=0;L=64;break}else{ea(h|0,K|0,4,0);k=0;break}while(0);if((L|0)==61){g=K+20|0;m=l;L=62}if((L|0)==62){l=da(g|0,4,0,0)|0|0;if(!l){l=m;L=64}else{Mg(l)|0;l=m;L=64}}if((L|0)==64)lg(a,K);E=da(N|0,4,0,0)|0|0;ea(M|0,E|0,4,0);tg(a,k,(E|0)!=0?10344:0,M);lg(a,E);Bh(l);lg(a,l);E=Ng(a,k)|0;i=O;return E|0}function Ie(a){a=a|0;var b=0,c=0;if(!a)a=0;else{c=da(a+24|0,4,0,0)|0|0;b=ld(da(a+20|0,4,0,0)|0|0)|0;lg(c,a);a=b}return a|0}function Je(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Dh(a,b,c,d,18)|0}function Ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Dh(a,b,c,d,19)|0}function Le(a){a=a|0;if((a|0)!=0?(da(a+20|0,4,0,0)|0|0)!=0:0)a=da(a+4|0,4,0,0)|0|0;else a=0;return a|0}function Me(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();d=g;e=g+8|0;if(!a){ea(d|0,77720|0,4,0);ea(d+4|0,10788|0,4,0);ad(21,13648,d);b=21}else{f=da(a+24|0,4,0,0)|0|0;if(da(a+20|0,4,0,0)|0){b=Ah(a,b,c,e)|0;if(!b)b=0;else{c=da(e|0,4,0,0)|0|0;ea(d|0,c|0,4,0);tg(f,b,(c|0)!=0?10344:0,d);lg(f,c)}}else b=4;b=Ng(f,b)|0}i=g;return b|0}function Ne(a,b,c){a=a|0;b=b|0;c=c|0;ea(a+284|0,b|0,4,0);ea(a+288|0,c|0,4,0);a=da(a+4|0,4,0,0)|0|0;if(a)do{c=a+88|0;ea(c|0,da(c|0,2,0,0)|0|8|0,2,0);a=da(a+52|0,4,0,0)|0|0}while((a|0)!=0);return 0}function Oe(a,b){a=a|0;b=b|0;return (Fh(a,b,10352,0)|0)==0|0}function Pe(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,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;x=i;i=i+16|0;if((i|0)>=(j|0))ba();g=x;t=x+12|0;u=x+8|0;ea(u|0,0|0,4,0);do if(Gh(a)|0){f=(b|0)==0?10360:b;v=a+52|0;ea(v|0,0|0,4,0);w=a+236|0;g=da(w|0,4,0,0)|0|0;do if(g){b=g+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(b|0,1|0,2,0);break}else{ug(g);break}}while(0);q=(c|0)==0;r=a+24|0;g=0;a:while(1){do{if(g){h=39;break a}if(!(da(f>>0|0,1,0,0)|0)){g=0;h=39;break a}ea(u|0,0|0,4,0);g=hh(a,f,-1,1,0,u,t)|0}while((g|0)!=0);f=da(u|0,4,0,0)|0|0;if(!f){f=da(t|0,4,0,0)|0|0;g=0;continue}p=da(f+84|0,2,0,0)|0|0;n=p&65535;o=n<<3|1;p=p<<16>>16==0;b=0;h=0;k=0;b:do{g=Rd(f)|0;do if(!q){l=(g|0)==100;if(!l){if((g|0)!=101|(k|0)!=0)break b;if(!((da(r|0,4,0,0)|0)&256)){k=0;break}}if(!k){b=lh(a,o,0)|0;if(!b){b=0;h=40;break a}ew(b|0,0,o|0)|0;if(p)m=1;else{k=0;do{ea(b+(k<<2)|0,ie(f,k)|0|0,4,0);k=k+1|0}while((k|0)<(n|0));m=1}}else m=k;c:do if(l){h=b+(n<<2)|0;if(!p){k=0;while(1){l=ee(f,k)|0;ea(b+(k+n<<2)|0,l|0,4,0);if((l|0)==0?(s=da(u|0,4,0,0)|0|0,(he(s,k)|0)!=5):0){g=s;h=27;break a}k=k+1|0;if((k|0)>=(n|0))break c;f=da(u|0,4,0,0)|0|0}}}while(0);if(!(oc[(fa(c|0,31|0)|0)&31](d,n,h,b)|0))k=m;else{f=b;h=31;break a}}while(0);f=da(u|0,4,0,0)|0|0}while((g|0)==100);g=Mg(f)|0;ea(u|0,0|0,4,0);f=da(t|0,4,0,0)|0|0;while(1)if(!((da(10368+(da(f>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&1))break;else f=f+1|0;lg(a,b)}do if((h|0)==27){ea(a+65>>0|0,1|0,1,0);f=g;g=100;h=40}else if((h|0)==31){Mg(da(u|0,4,0,0)|0|0)|0;ea(u|0,0|0,4,0);ea(v|0,4|0,4,0);g=da(w|0,4,0,0)|0|0;if(g){b=g+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(b|0,1|0,2,0);b=f;g=4;break}else{ug(g);b=f;g=4;break}}else{b=f;g=4}}else if((h|0)==39){f=da(u|0,4,0,0)|0|0;b=0;h=40}while(0);if((h|0)==40)if(f)Mg(f)|0;lg(a,b);f=Ng(a,g)|0;b=(e|0)!=0;if(!((f|0)!=0&b)){if(!b)break;ea(e|0,0|0,4,0);break}b=Re(a)|0;if(!b)b=1;else{g=b;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;b=(g-b&1073741823)+1|0}g=pg(b,((b|0)<0)<<31>>31)|0;ea(e|0,g|0,4,0);if(g){jw(g|0,Re(a)|0,b|0)|0;break}ea(v|0,7|0,4,0);f=da(w|0,4,0,0)|0|0;if(f){b=f+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(b|0,1|0,2,0);f=7;break}else{ug(f);f=7;break}}else f=7}else{ea(g|0,101334|0,4,0);ea(g+4|0,10788|0,4,0);ad(21,13648,g);f=21}while(0);i=x;return f|0}function Qe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return hh(a,b,c,1,0,d,e)|0}function Re(a){a=a|0;var b=0,c=0,d=0;c=i;i=i+16|0;if((i|0)>=(j|0))ba();b=c;do if(a){d=da(a+76|0,4,0,0)|0|0;if(!((d|0)==1266094736|(d|0)==-1607883113|(d|0)==-264537850)){ea(b|0,15248|0,4,0);ad(21,15256,b);ea(b|0,129635|0,4,0);ea(b+4|0,10788|0,4,0);ad(21,13648,b);b=16120;break}if(!(da(a+65>>0|0,1,0,0)|0)){b=Rg(da(a+236|0,4,0,0)|0|0,1)|0;if(!b){b=da(a+52|0,4,0,0)|0|0;if((b|0)!=516){b=b&255;if(b>>>0>26|(b|0)==2)b=16328;else b=da(15488+(b<<2)|0,4,0,0)|0|0}else b=16344}}else b=15776}else b=15776;while(0);i=c;return b|0}function Se(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();q=s;r=s+8|0;p=da(a|0,4,0,0)|0|0;ea(r|0,0|0,4,0);k=(b|0)==0;if(k)e=0;else{h=b;while(1)if(!(da(h>>0|0,1,0,0)|0))break;else h=h+1|0;e=h-b&1073741823}n=e+300|0;m=(d|0)!=0;if(m)ea(d|0,0|0,4,0);do if(!((da(a+24|0,4,0,0)|0)&4194304))if(m){ea(d|0,Zc(25216,q)|0|0,4,0);e=1}else e=1;else{l=(c|0)!=0?c:41192;g=p+40|0;h=qc[(fa(da(g|0,4,0,0)|0|0,127|0)|0)&127](p,b)|0;if(!h){ea(q|0,b|0,4,0);ea(q+4|0,41184|0,4,0);f=Zc(27824,q)|0;if(!f){e=7;break}h=qc[(fa(da(g|0,4,0,0)|0|0,127|0)|0)&127](p,f)|0;Vc(f);if(!h){if(!m){e=1;break}h=Sc(n)|0;ea(r|0,h|0,4,0);ea(d|0,h|0,4,0);if(!h){e=1;break}ea(q|0,b|0,4,0);$c(n,h,41216,q)|0;lc[(fa(da(p+44|0,4,0,0)|0|0,63|0)|0)&63](p,e+299|0,h);e=1;break}else o=h}else o=h;e=p+48|0;h=$b[(fa(da(e|0,4,0,0)|0|0,63|0)|0)&63](p,o,l)|0;if((h|0)==0&(c|0)==0){if(k)h=0;else{h=b;while(1)if(!(da(h>>0|0,1,0,0)|0))break;else h=h+1|0;h=h-b&1073741823}c=Sc(h+30|0)|0;if(!c){ic[(fa(da(p+52|0,4,0,0)|0|0,15|0)|0)&15](p,o);e=7;break}l=c;k=l;ea(k>>0|0,115|0,1,0);ea(k+1>>0|0,113|0,1,0);ea(k+2>>0|0,108|0,1,0);ea(k+3>>0|0,105|0,1,0);l=l+4|0;ea(l>>0|0,116|0,1,0);ea(l+1>>0|0,101|0,1,0);ea(l+2>>0|0,51|0,1,0);ea(l+3>>0|0,95|0,1,0);while(1){g=h+-1|0;if((h|0)<=0)break;if((da(b+g>>0|0,1,0,0)|0|0)==47)break;else h=g}f=(Ec(b+h|0,41256,3)|0)==0;g=8;f=f?h+3|0:h;while(1){h=da(b+f>>0|0,1,0,0)|0|0;if(h<<24>>24==0|h<<24>>24==46){h=g;break}if(!((da(10368+(h&255)>>0|0,1,0,0)|0)&2))h=g;else{ea(c+g>>0|0,da(9328+(h<<24>>24)>>0|0,1,0,0)|0|0|0,1,0);h=g+1|0}g=h;f=f+1|0}h=c+h|0;ea(h+0>>0|0,da(41264|0,1,0,0)|0|0|0,1,0);ea(h+1>>0|0,da(41265|0,1,0,0)|0|0|0,1,0);ea(h+2>>0|0,da(41266|0,1,0,0)|0|0|0,1,0);ea(h+3>>0|0,da(41267|0,1,0,0)|0|0|0,1,0);ea(h+4>>0|0,da(41268|0,1,0,0)|0|0|0,1,0);ea(h+5>>0|0,da(41269|0,1,0,0)|0|0|0,1,0);h=$b[(fa(da(e|0,4,0,0)|0|0,63|0)|0)&63](p,o,c)|0;e=c;f=c}else{e=0;f=l}if(!h){if(m){if(!f)h=0;else{h=f;while(1)if(!(da(h>>0|0,1,0,0)|0))break;else h=h+1|0;h=h-f&1073741823}h=h+n|0;g=Sc(h)|0;ea(r|0,g|0,4,0);ea(d|0,g|0,4,0);if(g){ea(q|0,f|0,4,0);ea(q+4|0,b|0,4,0);$c(h,g,41272,q)|0;lc[(fa(da(p+44|0,4,0,0)|0|0,63|0)|0)&63](p,h+-1|0,g)}}ic[(fa(da(p+52|0,4,0,0)|0|0,15|0)|0)&15](p,o);Vc(e);e=1;break}Vc(e);if($b[(fa(h|0,63|0)|0)&63](a,r,13776)|0){if(m){ea(q|0,da(r|0,4,0,0)|0|0,4,0);ea(d|0,Zc(41320,q)|0|0,4,0)}Vc(da(r|0,4,0,0)|0|0);ic[(fa(da(p+52|0,4,0,0)|0|0,15|0)|0)&15](p,o);e=1;break}g=a+168|0;e=((da(g|0,4,0,0)|0)<<2)+4|0;h=lh(a,e,0)|0;if(!h)e=7;else{ew(h|0,0,e|0)|0;e=da(g|0,4,0,0)|0|0;f=a+172|0;if((e|0)>0)jw(h|0,da(f|0,4,0,0)|0|0,e<<2|0)|0;lg(a,da(f|0,4,0,0)|0|0);ea(f|0,h|0,4,0);e=da(g|0,4,0,0)|0|0;ea(g|0,e+1|0,4,0);ea(h+(e<<2)|0,o|0,4,0);e=0}}while(0);o=Ng(a,e)|0;i=s;return o|0}function Te(a){a=a|0;var b=0,c=0,d=0,e=0;b=Kc()|0;if(!b){e=da(2656*4|0,4,0,0)|0|0;a:do if((e|0)>0){c=da(2658*4|0,4,0,0)|0|0;d=0;while(1){b=d+1|0;if((da(c+(d<<2)|0,4,0,0)|0|0)==(a|0)){b=d;break a}if((b|0)<(e|0))d=b;else break}}else b=0;while(0);if((b|0)==(e|0)){b=Wc(da(2658*4|0,4,0,0)|0|0,(e<<2)+4|0)|0;if(!b)b=7;else{ea(2658*4|0,b|0,4,0);c=da(2656*4|0,4,0,0)|0|0;ea(b+(c<<2)|0,a|0,4,0);ea(2656*4|0,c+1|0,4,0);b=0}}else b=0}return b|0}function Ue(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=da(2656*4|0,4,0,0)|0|0;e=da(2658*4|0,4,0,0)|0|0;c=d;while(1){if((c|0)<=0){b=0;break}c=c+-1|0;b=e+(c<<2)|0;if((da(b|0,4,0,0)|0|0)==(a|0)){f=4;break}}if((f|0)==4){c=d+-1|0;ea(2656*4|0,c|0,4,0);ea(b|0,da(e+(c<<2)|0,4,0,0)|0|0,4,0);b=1}return b|0}function Ve(){if(!(Kc()|0)){Vc(da(2658*4|0,4,0,0)|0|0);ea(2658*4|0,0|0,4,0);ea(2656*4|0,0|0,4,0)}return}function We(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return hh(a,b,c,0,0,d,e)|0}function Xe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Hh(a,b,c,0,d,e)|0}function Ye(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Hh(a,b,c,1,d,e)|0}function Ze(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+32|0;if((i|0)>=(j|0))ba();m=u;p=u+4|0;ea(c|0,0|0,4,0);q=(e|0)!=0;if(q)ea(e|0,0|0,4,0);r=(d|0)!=0;if(r)ea(d|0,0|0,4,0);k=(f|0)!=0;if(k)ea(f|0,0|0,4,0);l=p+4|0;ea(l|0,0|0,4,0);s=p+12|0;ea(s|0,0|0,4,0);t=p+16|0;ea(t|0,0|0,4,0);h=p+20|0;ea(h|0,1|0,4,0);n=p+8|0;ea(n|0,20|0,4,0);o=p+24|0;ea(o|0,0|0,4,0);g=Sc(80)|0;ea(p|0,g|0,4,0);a:do if(g){ea(g|0,0|0,4,0);b=Pe(a,b,20,p,f)|0;ea(da(p|0,4,0,0)|0|0,da(h|0,4,0,0)|0|0,4,0);if((b&255|0)==4){_e((da(p|0,4,0,0)|0|0)+4|0);b=da(l|0,4,0,0)|0|0;if(b){if(k){Vc(da(f|0,4,0,0)|0|0);ea(m|0,da(l|0,4,0,0)|0|0,4,0);ea(f|0,Zc(10344,m)|0|0,4,0);b=da(l|0,4,0,0)|0|0}Vc(b)}b=da(o|0,4,0,0)|0|0;ea(a+52|0,b|0,4,0);break}Vc(da(l|0,4,0,0)|0|0);if(b){_e((da(p|0,4,0,0)|0|0)+4|0);break}g=da(h|0,4,0,0)|0|0;b=da(p|0,4,0,0)|0|0;do if((da(n|0,4,0,0)|0|0)>>>0>g>>>0){b=Wc(b,g<<2)|0;if(!b){_e((da(p|0,4,0,0)|0|0)+4|0);ea(a+52|0,7|0,4,0);b=7;break a}else{ea(p|0,b|0,4,0);break}}while(0);ea(c|0,b+4|0,4,0);if(q)ea(e|0,da(t|0,4,0,0)|0|0,4,0);if(r){ea(d|0,da(s|0,4,0,0)|0|0,4,0);b=0}else b=0}else{ea(a+52|0,7|0,4,0);b=7}while(0);i=u;return b|0}function _e(a){a=a|0;var b=0,c=0,d=0,e=0;if(a){b=a+-4|0;d=da(b|0,4,0,0)|0|0;c=d;if((d|0)>1){e=1;do{d=da(a+(e+-1<<2)|0,4,0,0)|0|0;if(d)Vc(d);e=e+1|0}while((e|0)<(c|0))}Vc(b)}return}function $e(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jh(a,b,c,d,0)|0}function af(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Jh(a,b,c,d,e)|0}function bf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;d=m+8|0;ea(d|0,0|0,4,0);e=a+324|0;c=da(e|0,4,0,0)|0|0;if((c|0)!=0?(h=da(c+4|0,4,0,0)|0|0,(h|0)!=0):0){k=lh(a,536,0)|0;if(!k)b=7;else{ew(k|0,0,536)|0;f=k+451|0;ea(f>>0|0,1|0,1,0);ea(k|0,a|0,4,0);ea(k+424|0,1|0,4,0);if(((((Kh(k,b,d)|0)==0?(g=da(k+484|0,4,0,0)|0|0,(g|0)!=0):0)?(da(a+65>>0|0,1,0,0)|0|0)==0:0)?(da(g+12|0,4,0,0)|0|0)==0:0)?((da(g+44>>0|0,1,0,0)|0)&16)==0:0){c=h+4|0;if(!(da(c|0,4,0,0)|0)){l=g+4|0;ea(c|0,da(l|0,4,0,0)|0|0,4,0);g=g+38|0;ea(h+38|0,da(g|0,2,0,0)|0|0|0,2,0);ea(g|0,0|0,2,0);ea(l|0,0|0,4,0)}ea((da(e|0,4,0,0)|0|0)+4|0,0|0,4,0);b=0}else{b=da(d|0,4,0,0)|0|0;ea(l|0,b|0,4,0);tg(a,1,(b|0)!=0?10344:0,l);lg(a,b);b=1}ea(f>>0|0,0|0,1,0);c=da(k+8|0,4,0,0)|0|0;if(c)Mg(c)|0;jg(a,da(k+484|0,4,0,0)|0|0);Bh(k);lg(a,k)}b=Ng(a,b)|0}else{ea(a+52|0,21|0,4,0);c=da(a+236|0,4,0,0)|0|0;do if(c){b=c+8|0;if(!((da(b|0,2,0,0)|0)&9312)){ea(b|0,1|0,2,0);break}else{ug(c);break}}while(0);ea(l|0,114865|0,4,0);ea(l+4|0,10788|0,4,0);ad(21,13648,l);b=21}i=m;return b|0}function cf(a){a=a|0;return da(10640+((da(a+69>>0|0,1,0,1)|0|0)+-1)>>0|0,1,0,1)|0|0|0}function df(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;if((i|0)>=(j|0))ba();e=g;d=g+8|0;ea(d|0,c|0,4,0);do if((b|0)==1){b=da(a+324|0,4,0,0)|0|0;if(!b){ea(e|0,115248|0,4,0);ea(e+4|0,10788|0,4,0);ad(21,13648,e);f=6;break}else{a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea((da(b|0,4,0,0)|0|0)+16>>0|0,c|0,1,0);b=0;break}}else{ea(e|0,115256|0,4,0);ea(e+4|0,10788|0,4,0);ad(21,13648,e);f=6}while(0);do if((f|0)==6){ea(a+52|0,21|0,4,0);b=da(a+236|0,4,0,0)|0|0;if(b){c=b+8|0;if(!((da(c|0,2,0,0)|0)&9312)){ea(c|0,1|0,2,0);b=21;break}else{ug(b);b=21;break}}else b=21}while(0);i=g;return b|0}function ef(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=da(a>>0|0,1,0,0)|0|0;a:do if(b<<24>>24){e=b;b=0;b:while(1){d=e<<24>>24;switch(d|0){case 45:{if((da(a+1>>0|0,1,0,0)|0|0)==45){c=e;while(1){d=c<<24>>24==0;e=a+1|0;if(!(c<<24>>24!=10&(d^1)))break;a=e;c=da(e>>0|0,1,0,0)|0|0}if(d){f=13;break b}else c=1}else c=2;break}case 91:{do{a=a+1|0;d=da(a>>0|0,1,0,0)|0|0;c=d<<24>>24==0}while(d<<24>>24!=93&(c^1));if(c){b=0;break a}else c=2;break}case 12:case 10:case 9:case 13:case 32:{c=1;break}case 39:case 34:case 96:{do{a=a+1|0;d=da(a>>0|0,1,0,0)|0|0;c=d<<24>>24==0}while(d<<24>>24!=e<<24>>24&(c^1));if(c){b=0;break a}else c=2;break}case 47:{if((da(a+1>>0|0,1,0,0)|0|0)==42){a=a+2|0;while(1){c=da(a>>0|0,1,0,0)|0|0;if(c<<24>>24==42){a=a+1|0;if((da(a>>0|0,1,0,0)|0|0)==47){c=1;break}else continue}else if(!(c<<24>>24)){b=0;break a}else{a=a+1|0;continue}}}else c=2;break}case 59:{c=0;break}default:if(!((da(10368+(e&255)>>0|0,1,0,0)|0)&70))c=2;else{c=1;while(1)if(!((da(10368+(da(a+c>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&70)){e=c;break}else c=c+1|0;c:do switch(d|0){case 67:case 99:{if((e|0)==6?(Ec(a,10712,6)|0)==0:0){c=4;break c}c=2;break}case 84:case 116:{if((e|0)==7){if(!(Ec(a,10720,7)|0)){c=6;break c}}else if((e|0)==4){if(!(Ec(a,10728,4)|0)){c=5;break c}}else if((e|0)==9?(Ec(a,10736,9)|0)==0:0){c=5;break c}c=2;break}case 69:case 101:{if((e|0)==3){if(!(Ec(a,10752,3)|0)){c=7;break c}}else if((e|0)==7?(Ec(a,10760,7)|0)==0:0){c=3;break c}c=2;break}default:c=2}while(0);a=a+(e+-1)|0}}b=da((c&255)+(10648+((b&255)<<3))>>0|0,1,0,0)|0|0;a=a+1|0;e=da(a>>0|0,1,0,0)|0|0;if(!(e<<24>>24)){f=35;break}}if((f|0)==13){b=b<<24>>24==1&1;break}else if((f|0)==35){b=b<<24>>24==1;f=36;break}}else{b=0;f=36}while(0);if((f|0)==36)b=b&1;return b|0}function ff(a){a=a|0;var b=0,c=0,d=0;b=Kc()|0;if(!b){c=pg(40,0)|0;if(c){b=c+0|0;d=b+40|0;do{ea(b>>0|0,0|0,1,0);b=b+1|0}while((b|0)<(d|0));ea(c+8|0,1|0,2,0);ea(c+32|0,0|0,4,0);Wg(c,a,-1,2,0)|0}b=Rg(c,1)|0;if(!b)b=7;else b=(ef(b)|0)&255;Lh(c)}return b|0}function gf(){return 8632}function hf(){return 10768}function jf(){return 3008009}function kf(){return 0}function lf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=i;i=i+32|0;if((i|0)>=(j|0))ba();c=e;d=e+8|0;if(!(da(2243*4|0,4,0,0)|0)){ea(d|0,b|0,4,0);do switch(a|0){case 5:{if(!(da(2195*4|0,4,0,0)|0)){ea(c|0,16496|0,4,0);lf(4,c)|0}a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(c+0|0,da(2195*4|0,4,0,0)|0|0,4,0);ea(c+4|0,da(2196*4|0,4,0,0)|0|0,4,0);ea(c+8|0,da(2197*4|0,4,0,0)|0|0,4,0);ea(c+12|0,da(2198*4|0,4,0,0)|0|0,4,0);ea(c+16|0,da(2199*4|0,4,0,0)|0|0,4,0);ea(c+20|0,da(2200*4|0,4,0,0)|0|0,4,0);ea(c+24|0,da(2201*4|0,4,0,0)|0|0,4,0);ea(c+28|0,da(2202*4|0,4,0,0)|0|0,4,0);c=0;break}case 17:{a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2189*4|0,c|0,4,0);c=0;break}case 20:{a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2190*4|0,c|0,4,0);c=0;break}case 19:{if(!(da(2214*4|0,4,0,0)|0)){ea(c|0,16440|0,4,0);lf(18,c)|0}a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);c=c+0|0;a=8848|0;d=c+52|0;do{ea(c|0,da(a|0,4,0,0)|0|0,4,0);c=c+4|0;a=a+4|0}while((c|0)<(d|0));c=0;break}case 16:{c=da(d|0,4,0,0)|0|0;a=da(c|0,4,0,0)|0|0;ea(d|0,c+4|0,4,0);ea(2250*4|0,a|0,4,0);a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2251*4|0,c|0,4,0);c=0;break}case 13:{c=da(d|0,4,0,0)|0|0;a=da(c|0,4,0,0)|0|0;ea(d|0,c+4|0,4,0);ea(2193*4|0,a|0,4,0);a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2194*4|0,c|0,4,0);c=0;break}case 7:{a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2237*4|0,c|0,4,0);c=da(d|0,4,0,0)|0|0;a=da(c|0,4,0,0)|0|0;ea(d|0,c+4|0,4,0);ea(2238*4|0,a|0,4,0);a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2239*4|0,c|0,4,0);c=0;break}case 24:{a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(c|0,152|0,4,0);c=0;break}case 15:{c=1;break}case 4:{a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2195*4|0,da(c+0|0,4,0,0)|0|0,4,0);ea(2196*4|0,da(c+4|0,4,0,0)|0|0,4,0);ea(2197*4|0,da(c+8|0,4,0,0)|0|0,4,0);ea(2198*4|0,da(c+12|0,4,0,0)|0|0,4,0);ea(2199*4|0,da(c+16|0,4,0,0)|0|0,4,0);ea(2200*4|0,da(c+20|0,4,0,0)|0|0,4,0);ea(2201*4|0,da(c+24|0,4,0,0)|0|0,4,0);ea(2202*4|0,da(c+28|0,4,0,0)|0|0,4,0);c=0;break}case 18:{c=da(d|0,4,0,0)|0|0;a=da(c|0,4,0,0)|0|0;ea(d|0,c+4|0,4,0);c=8848|0;a=a+0|0;d=c+52|0;do{ea(c|0,da(a|0,4,0,0)|0|0,4,0);c=c+4|0;a=a+4|0}while((c|0)<(d|0));c=0;break}case 6:{a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2234*4|0,c|0,4,0);c=da(d|0,4,0,0)|0|0;a=da(c|0,4,0,0)|0|0;ea(d|0,c+4|0,4,0);ea(2235*4|0,a|0,4,0);a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2236*4|0,c|0,4,0);c=0;break}case 9:{a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2186*4|0,c|0,4,0);c=0;break}case 22:{ea(d|0,(da(d|0,4,0,0)|0|0)+8|0,4,0);ea(d|0,(da(d|0,4,0,0)|0|0)+8|0,4,0);ea(2230*4|0,0|0,4,0);ea(2231*4|0,0|0,4,0);ea(2232*4|0,0|0,4,0);ea(2233*4|0,0|0,4,0);c=0;break}case 25:{a=da(d|0,4,0,0)|0|0;c=da(a|0,4,0,0)|0|0;ea(d|0,a+4|0,4,0);ea(2242*4|0,c|0,4,0);c=0;break}case 14:{c=0;break}default:c=1}while(0)}else{ea(c|0,127883|0,4,0);ea(c+4|0,10788|0,4,0);ad(21,13648,c);c=21}i=e;return c|0}function mf(a){a=a|0;return da(a+12|0,4,0,0)|0|0}function nf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=a+20|0;b=da(g|0,4,0,0)|0|0;e=(b|0)>0;if(e){d=da(a+16|0,4,0,0)|0|0;f=0;do{c=da(d+(f<<4)+4|0,4,0,0)|0|0;if(c)ea((da(c+4|0,4,0,0)|0|0)+4|0,da(c|0,4,0,0)|0|0,4,0);f=f+1|0}while((f|0)!=(b|0));if(e){e=a+16|0;d=0;do{c=da((da(e|0,4,0,0)|0|0)+(d<<4)+4|0,4,0,0)|0|0;if(c){bc[(fa(da(8744+152|0,4,0,0)|0|0,31|0)|0)&31](da((da((da(da(c+4|0,4,0,0)|0|0,4,0,0)|0|0)+204|0,4,0,0)|0|0)+40|0,4,0,0)|0|0);b=da(g|0,4,0,0)|0|0}d=d+1|0}while((d|0)<(b|0))}}return 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;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h;ea(f|0,c|0,4,0);a:do if((b|0)!=1001){c=0;while(1){if((da(10936+(c<<3)|0,4,0,0)|0|0)==(b|0))break;c=c+1|0;if(c>>>0>=2){d=1;break a}}e=da(f|0,4,0,0)|0|0;b=da(e|0,4,0,0)|0|0;ea(f|0,e+4|0,4,0);e=da(f|0,4,0,0)|0|0;g=da(e|0,4,0,0)|0|0;ea(f|0,e+4|0,4,0);f=a+24|0;e=da(f|0,4,0,0)|0|0;if((b|0)<=0)if(!b){b=e&~(da(10940+(c<<3)|0,4,0,0)|0);ea(f|0,b|0,4,0)}else b=e;else{b=da(10940+(c<<3)|0,4,0,0)|0|e;ea(f|0,b|0,4,0)}if((e|0)!=(b|0)?(d=da(a+4|0,4,0,0)|0|0,(d|0)!=0):0)do{b=d+88|0;ea(b|0,da(b|0,2,0,0)|0|8|0,2,0);d=da(d+52|0,4,0,0)|0|0}while((d|0)!=0);if(!g)d=0;else{ea(g|0,((da(10940+(c<<3)|0,4,0,0)|0)&(da(f|0,4,0,0)|0)|0)!=0&1|0,4,0);d=0}}else{e=da(f|0,4,0,0)|0|0;b=da(e|0,4,0,0)|0|0;ea(f|0,e+4|0,4,0);e=da(f|0,4,0,0)|0|0;c=da(e|0,4,0,0)|0|0;ea(f|0,e+4|0,4,0);e=da(f|0,4,0,0)|0|0;d=da(e|0,4,0,0)|0|0;ea(f|0,e+4|0,4,0);d=Mh(a,b,c,d)|0}while(0);i=h;return d|0}function pf(a){a=a|0;a=a+32|0;C=da(a+4|0,4,0,0)|0|0;return da(a|0,4,0,0)|0|0}function qf(a){a=a|0;return da(a+80|0,4,0,0)|0|0}function rf(a){a=a|0;return da(a+84|0,4,0,0)|0|0}function sf(a){a=a|0;return Nh(a,0)|0}function tf(a){a=a|0;return Nh(a,1)|0}function uf(a,b,c){a=a|0;b=b|0;c=c|0;ea(a+444|0,b|0,4,0);ea(a+448|0,c|0,4,0);ea(a+452|0,0|0,4,0);ea(a+492|0,0|0,4,0);return 0}function vf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=(b|0)>0;ea(a+292|0,(e?c:0)|0,4,0);ea(a+300|0,(e?b:0)|0,4,0);ea(a+296|0,(e?d:0)|0,4,0);return}function wf(a,b){a=a|0;b=b|0;var c=0;c=(b|0)>0;ea(a+444|0,(c?74:0)|0,4,0);ea(a+448|0,(c?a:0)|0,4,0);ea(a+452|0,0|0,4,0);ea(a+492|0,(c?b:0)|0,4,0);return 0}function xf(a){a=a|0;ea(a+240|0,1|0,4,0);return}function yf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Ng(a,Ph(a,b,c,d,e,f,g,h,0)|0)|0}function zf(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;do if(i){j=lh(a,12,0)|0;if(!j){bc[(fa(i|0,31|0)|0)&31](e);d=1;break}k=j;l=k;ea(l>>0|0,0|0,1,0);ea(l+1>>0|0,0|0,1,0);ea(l+2>>0|0,0|0,1,0);ea(l+3>>0|0,0|0,1,0);k=k+4|0;ea(k>>0|0,0|0,1,0);ea(k+1>>0|0,0|0,1,0);ea(k+2>>0|0,0|0,1,0);ea(k+3>>0|0,0|0,1,0);ea(j+4|0,i|0,4,0);ea(j+8|0,e|0,4,0);d=Ph(a,b,c,d,e,f,g,h,j)|0;if(!(da(j|0,4,0,0)|0)){bc[(fa(i|0,31|0)|0)&31](e);lg(a,j)}}else d=Ph(a,b,c,d,e,f,g,h,0)|0;while(0);return Ng(a,d)|0}function Af(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;b=Qh(a,b,-1)|0;d=Ph(a,b,c,d,e,f,g,h,0)|0;lg(a,b);return Ng(a,d)|0}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!b)d=0;else{d=b;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;d=d-b&1073741823}if(!(Rh(a,b,d,c,1,0)|0))d=Ph(a,b,c,1,0,57,0,0,0)|0;else d=0;return Ng(a,d)|0}function Cf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+180|0;d=da(e|0,4,0,0)|0|0;ea(a+176|0,b|0,4,0);ea(e|0,c|0,4,0);return d|0}function Df(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+188|0;d=da(e|0,4,0,0)|0|0;ea(a+184|0,b|0,4,0);ea(e|0,c|0,4,0);return d|0}function Ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+192|0;d=da(e|0,4,0,0)|0|0;ea(a+196|0,b|0,4,0);ea(e|0,c|0,4,0);return d|0}function Ff(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+208|0;d=da(e|0,4,0,0)|0|0;ea(a+212|0,b|0,4,0);ea(e|0,c|0,4,0);return d|0}function Gf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+200|0;d=da(e|0,4,0,0)|0|0;ea(a+204|0,b|0,4,0);ea(e|0,c|0,4,0);return d|0}function Hf(a,b){a=a|0;b=b|0;var c=0;if((b|0)>0)c=21;else{b=0;c=0}ea(a+216|0,c|0,4,0);ea(a+220|0,b|0,4,0);return 0}function If(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a+220|0;d=da(e|0,4,0,0)|0|0;ea(a+216|0,b|0,4,0);ea(e|0,c|0,4,0);return d|0}function Jf(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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();f=k;if(d)ea(d|0,-1|0,4,0);if(e)ea(e|0,-1|0,4,0);if(c>>>0>3)b=21;else{if((b|0)!=0?(da(b>>0|0,1,0,0)|0|0)!=0:0){g=Uh(a,b)|0;if((g|0)<0){ea(f|0,b|0,4,0);tg(a,1,10952,f);b=1}else h=10}else{g=10;h=10}do if((h|0)==10){ea(a+452|0,0|0,4,0);b=Vh(a,g,c,d,e)|0;ea(a+52|0,b|0,4,0);f=da(a+236|0,4,0,0)|0|0;if(f){g=f+8|0;if(!((da(g|0,2,0,0)|0)&9312)){ea(g|0,1|0,2,0);break}else{ug(f);break}}}while(0);b=Ng(a,b)|0}i=k;return b|0}function Kf(a,b){a=a|0;b=b|0;return Jf(a,b,0,0,0)|0}function Lf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;do if(a){b=da(a+76|0,4,0,0)|0|0;if(!((b|0)==1266094736|(b|0)==-1607883113|(b|0)==-264537850)){ea(e|0,15248|0,4,0);ad(21,15256,e);b=11008;break}f=a+65|0;if(!(da(f>>0|0,1,0,0)|0)){d=a+236|0;b=Rg(da(d|0,4,0,0)|0|0,2)|0;if(!b){c=da(a+52|0,4,0,0)|0|0;if((c|0)!=516){b=c&255;if(b>>>0>26|(b|0)==2)b=16328;else b=da(15488+(b<<2)|0,4,0,0)|0|0}else b=16344;tg(a,c,b,e);b=Rg(da(d|0,4,0,0)|0|0,2)|0}ea(f>>0|0,0|0,1,0)}else b=10976}else b=10976;while(0);i=g;return b|0}function Mf(a){a=a|0;var b=0,c=0,d=0;c=i;i=i+16|0;if((i|0)>=(j|0))ba();b=c;do if(a){d=da(a+76|0,4,0,0)|0|0;if(!((d|0)==1266094736|(d|0)==-1607883113|(d|0)==-264537850)){ea(b|0,15248|0,4,0);ad(21,15256,b);ea(b|0,129704|0,4,0);ea(b+4|0,10788|0,4,0);ad(21,13648,b);a=21;break}if(!(da(a+65>>0|0,1,0,0)|0))a=(da(a+56|0,4,0,0)|0)&(da(a+52|0,4,0,0)|0);else a=7}else a=7;while(0);i=c;return a|0}function Nf(a){a=a|0;var b=0,c=0,d=0;c=i;i=i+16|0;if((i|0)>=(j|0))ba();b=c;do if(a){d=da(a+76|0,4,0,0)|0|0;if(!((d|0)==1266094736|(d|0)==-1607883113|(d|0)==-264537850)){ea(b|0,15248|0,4,0);ad(21,15256,b);ea(b|0,129713|0,4,0);ea(b+4|0,10788|0,4,0);ad(21,13648,b);a=21;break}if(!(da(a+65>>0|0,1,0,0)|0))a=da(a+52|0,4,0,0)|0|0;else a=7}else a=7;while(0);i=c;return a|0}function Of(a){a=a|0;if((a|0)!=516){a=a&255;if(a>>>0>26|(a|0)==2)a=16328;else a=da(15488+(a<<2)|0,4,0,0)|0|0}else a=16344;return a|0}function Pf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b>>>0<=11){d=a+(b<<2)+88|0;a=da(d|0,4,0,0)|0|0;if((c|0)>-1){b=da(11088+(b<<2)|0,4,0,0)|0|0;ea(d|0,((b|0)<(c|0)?b:c)|0,4,0)}}else a=-1;return a|0}function Qf(a,b){a=a|0;b=b|0;return Wh(a,b,6,0)|0}function Rf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Wh(a,b,c,d)|0}function Sf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;ea(b|0,0|0,4,0);c=Kc()|0;if(!c){e=pg(40,0)|0;if(e){a=(a|0)==0?11136:a;c=e+0|0;d=c+40|0;do{ea(c>>0|0,0|0,1,0);c=c+1|0}while((c|0)<(d|0));ea(e+8|0,1|0,2,0);ea(e+32|0,0|0,4,0);Wg(e,a,-1,2,0)|0}a=Rg(e,1)|0;if(a){c=Wh(a,b,6,0)|0;if(!c){c=da(b|0,4,0,0)|0|0;a=da((da(c+16|0,4,0,0)|0|0)+12|0,4,0,0)|0|0;if(!((da(a+78|0,2,0,0)|0)&1)){ea(c+62>>0|0,2|0,1,0);ea(a+77>>0|0,2|0,1,0);c=0}else c=0}}else c=7;Lh(e);c=c&255}return c|0}function Tf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Ng(a,Xh(a,b,c&255,d,e,0)|0)|0}function Uf(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 Ng(a,Xh(a,b,c&255,d,e,f)|0)|0}function Vf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Qh(a,b,-1)|0;if(!b)b=0;else{c=Xh(a,b,c&255,d,e,0)|0;lg(a,b);b=c}return Ng(a,b)|0}function Wf(a,b,c){a=a|0;b=b|0;c=c|0;ea(a+224|0,c|0,4,0);ea(a+228|0,0|0,4,0);ea(a+232|0,b|0,4,0);return 0}function Xf(a,b,c){a=a|0;b=b|0;c=c|0;ea(a+224|0,0|0,4,0);ea(a+228|0,c|0,4,0);ea(a+232|0,b|0,4,0);return 0}function Yf(a){a=a|0;return da(a+63>>0|0,1,0,1)|0|0|0}function Zf(){return}function _f(a,b,c,d,e,f,g,h,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;if((i|0)>=(j|0))ba();u=w;v=w+8|0;ea(v|0,0|0,4,0);m=da(a+20|0,4,0,0)|0|0;if((m|0)>0){l=da(a+16|0,4,0,0)|0|0;o=0;do{n=da(l+(o<<4)+4|0,4,0,0)|0|0;if(n)ea((da(n+4|0,4,0,0)|0|0)+4|0,da(n|0,4,0,0)|0|0,4,0);o=o+1|0}while((o|0)!=(m|0))}l=Yh(a,v)|0;t=(l|0)!=0;a:do if((!t?(r=Zh(a,c,b)|0,(r|0)!=0):0)?(da(r+12|0,4,0,0)|0|0)==0:0){do if(d){q=da(r+38|0,2,0,0)|0|0;b:do if(q<<16>>16>0){b=da(r+4|0,4,0,0)|0|0;m=q<<16>>16;p=0;while(1){n=b+(p*24|0)|0;o=p+1|0;if(!(cd(da(n|0,4,0,0)|0|0,d)|0)){o=p;break b}if((o|0)<(m|0))p=o;else break}}else{o=0;n=0}while(0);if((o|0)==(q<<16>>16|0)){if((da(r+44>>0|0,1,0,0)|0)&32){b=0;q=0;r=0;n=0;p=0;o=0;break a}if(!(_h(d)|0)){b=0;q=0;r=0;n=0;p=0;o=0;break a}s=da(r+36|0,2,0,0)|0|0;m=s<<16>>16;if(s<<16>>16<=-1){b=0;p=0;m=1;s=0;o=11144;break}o=m;n=(da(r+4|0,4,0,0)|0|0)+(m*24|0)|0}if(n){if((da(r+36|0,2,0,0)|0|0)==(o|0))m=((da(r+44>>0|0,1,0,0)|0)&8)!=0;else m=0;b=m&1;p=(da(n+20>>0|0,1,0,0)|0|0)!=0&1;m=(da(n+23>>0|0,1,0,0)|0)&1;s=da(n+16|0,4,0,0)|0|0;o=da(n+12|0,4,0,0)|0|0}else{b=0;p=0;m=1;s=0;o=11144}}else{b=0;p=0;m=1;s=0;o=11144}while(0);q=p;n=m;p=(s|0)==0?11152:s}else{b=0;q=0;r=0;n=0;p=0;o=0}while(0);if(e)ea(e|0,o|0,4,0);if(f)ea(f|0,p|0,4,0);if(g)ea(g|0,q|0,4,0);if(h)ea(h|0,n|0,4,0);if(k)ea(k|0,b|0,4,0);m=da(v|0,4,0,0)|0|0;if(!(t|(r|0)!=0)){lg(a,m);ea(u|0,c|0,4,0);ea(u+4|0,d|0,4,0);m=th(a,11160,u)|0;ea(v|0,m|0,4,0);l=1}ea(u|0,m|0,4,0);tg(a,l,(m|0)!=0?10344:0,u);lg(a,da(v|0,4,0,0)|0|0);t=Ng(a,l)|0;i=w;return t|0}function $f(a){a=a|0;var b=0;if((Kc()|0)==0?(b=da(2254*4|0,4,0,0)|0|0,(b|0)!=0):0)a=(qc[(fa(da(b+60|0,4,0,0)|0|0,127|0)|0)&127](b,a*1e3|0)|0)/1e3|0;else a=0;return a|0}function ag(a,b){a=a|0;b=b|0;ea(a+56|0,((b|0)!=0?-1:255)|0,4,0);return 0}function bg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=$h(a,b)|0;do if(b){a=da(b+4|0,4,0,0)|0|0;ea(a+4|0,da(b|0,4,0,0)|0|0,4,0);a=da((da(a|0,4,0,0)|0|0)+60|0,4,0,0)|0|0;if((c|0)==7){ea(d|0,a|0,4,0);b=0;break}b=da(a|0,4,0,0)|0|0;if(!b)b=12;else b=$b[(fa(da(b+40|0,4,0,0)|0|0,63|0)|0)&63](a,c,d)|0}else b=1;while(0);return b|0}function cg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();l=m+24|0;d=m+8|0;c=m;ea(d|0,b|0,4,0);do switch(a|0){case 8:{k=da(d|0,4,0,0)|0|0;h=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);k=da(d|0,4,0,0)|0|0;e=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);k=pg(512,0)|0;c=(k|0)==0;if(!c){ew(k|0,0,512)|0;ea(k|0,h|0,4,0)}a=((h+7|0)/8|0)+1|0;g=pg(a,((a|0)<0)<<31>>31)|0;b=(g|0)==0;if(!b)ew(g|0,0,a|0)|0;f=Sc(512)|0;a:do if(!(c|b|(f|0)==0)){d=0;while(1){c=da(e+(d<<2)|0,4,0,0)|0|0;if((c|0)==5|(c|0)==2|(c|0)==1){n=e+(d+2<<2)|0;b=da(n|0,4,0,0)|0|0;a=b+-1|0;ea(l|0,a|0,4,0);ea(n|0,(da(e+(d+3<<2)|0,4,0,0)|0|0)+b|0,4,0);b=4}else if(!c)break;else{bd(4,l);a=da(l|0,4,0,0)|0|0;b=2}o=e+((d|1)<<2)|0;n=(da(o|0,4,0,0)|0|0)+-1|0;ea(o|0,n|0,4,0);d=((n|0)>0?0:b)+d|0;a=(a&2147483647|0)%(h|0)|0;ea(l|0,a|0,4,0);a=a+1|0;b=1<<(a&7);if(!(c&1)){a=g+(a>>>3)|0;ea(a>>0|0,(da(a>>0|0,1,0,1)|0)&(b^255)|0,1,0);bi(k,(da(l|0,4,0,0)|0|0)+1|0,f);continue}a=g+(a>>>3)|0;ea(a>>0|0,da(a>>0|0,1,0,1)|0|b|0,1,0);if((c|0)==5)continue;if(ai(k,(da(l|0,4,0,0)|0|0)+1|0)|0){c=-1;break a}}e=ci(k,h+1|0)|0;a=ci(k,0)|0;a=e-h+a+(da(k|0,4,0,0)|0|0)|0;ea(l|0,1|0,4,0);if((h|0)<1)c=a;else{b=1;while(1){e=((da(g+(b>>3)>>0|0,1,0,1)|0)&1<<(b&7)|0)!=0&1;c=b;b=b+1|0;if((e|0)!=(ci(k,c)|0))break a;ea(l|0,b|0,4,0);if((c|0)>=(h|0)){c=a;break}}}}else c=-1;while(0);Vc(f);Vc(g);di(k);break}case 11:{c=da(2514*4|0,4,0,0)|0|0;l=da(d|0,4,0,0)|0|0;b=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);if(b)ea(2514*4|0,b|0,4,0);break}case 12:{ea(c|0,0|0,4,0);c=da(c|0,4,0,0)|0|0;break}case 13:{l=da(d|0,4,0,0)|0|0;c=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);break}case 22:{c=10;break}case 5:{jw(12672,9064,259)|0;c=0;break}case 6:{jw(9064,12672,259)|0;c=0;break}case 7:{if(!(Kc()|0)){ea(9064|0,0|0,1,0);c=0}else c=0;break}case 14:{k=da(d|0,4,0,0)|0|0;l=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);k=da(d|0,4,0,0)|0|0;c=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);wg(da((da(l+16|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,0,c,0)|0;c=0;break}case 15:{k=da(d|0,4,0,0)|0|0;l=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);k=da(d|0,4,0,0)|0|0;c=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);ea(l+60|0,c|0,2,0);c=0;break}case 16:{l=da(d|0,4,0,0)|0|0;a=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);if(!a)c=0;else{c=a;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;c=c-a&1073741823}c=(ei(a,c)|0)!=27;c=c?124:0;break}case 24:{k=da(d|0,4,0,0)|0|0;l=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);k=da(d|0,4,0,0)|0|0;c=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);ea(l+136|0,c|0,4,0);c=0;break}case 23:{c=(da(2243*4|0,4,0,0)|0|0)==0&1;break}case 25:{h=da(d|0,4,0,0)|0|0;c=da(h|0,4,0,0)|0|0;ea(d|0,h+4|0,4,0);h=da(d|0,4,0,0)|0|0;k=da(h|0,4,0,0)|0|0;ea(d|0,h+4|0,4,0);ea(c+144>>0|0,Uh(c,k)|0|0,1,0);k=da(d|0,4,0,0)|0|0;h=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);h=h&255;ea(c+147>>0|0,h|0,1,0);k=c+145|0;ea(k>>0|0,h|0,1,0);h=da(d|0,4,0,0)|0|0;l=da(h|0,4,0,0)|0|0;ea(d|0,h+4|0,4,0);ea(c+140|0,l|0,4,0);if((da(k>>0|0,1,0,0)|0|0)==0&(l|0)>0){Dg(c);c=0}else c=0;break}case 17:{l=da(d|0,4,0,0)|0|0;b=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);l=da(d|0,4,0,0)|0|0;c=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);l=da(d|0,4,0,0)|0|0;a=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);if(b)ea(c|0,fi(b)|0|0,4,0);gi(a);c=0;break}case 18:{l=da(d|0,4,0,0)|0|0;c=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);ea(2253*4|0,c|0,4,0);c=0;break}case 20:{l=da(d|0,4,0,0)|0|0;c=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);ea(2192*4|0,c|0,4,0);c=0;break}case 9:{l=da(d|0,4,0,0)|0|0;c=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);ea(2252*4|0,c|0,4,0);if(!c)c=0;else c=kc[(fa(c|0,127|0)|0)&127](0)|0;break}case 10:{k=da(d|0,4,0,0)|0|0;l=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);k=da(d|0,4,0,0)|0|0;c=da(k|0,4,0,0)|0|0;ea(d|0,k+4|0,4,0);ea(3164*4|0,l|0,4,0);ea(3166*4|0,c|0,4,0);c=0;break}default:c=0}while(0);i=m;return c|0}function dg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;a:do if(!((a|0)==0|(b|0)==0)){c=a;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;d=(c-a&1073741823)+1|0;c=da(a+d>>0|0,1,0,0)|0|0;if(c<<24>>24){f=a+d|0;while(1){e=Zv(f,b)|0;d=f;while(1){a=d+1|0;if(!(c<<24>>24))break;c=da(a>>0|0,1,0,0)|0|0;d=a}a=d-f&1073741823;c=f+(a+1)|0;if(!e)break a;else d=c;while(1)if(!(da(d>>0|0,1,0,0)|0))break;else d=d+1|0;f=f+(a+2+(d-c&1073741823))|0;c=da(f>>0|0,1,0,0)|0|0;if(!(c<<24>>24)){c=0;break}}}else c=0}else c=0;while(0);return c|0}function eg(a,b,c){a=a|0;b=b|0;c=c|0;a=dg(a,b)|0;b=(c|0)!=0;if(a)b=(hi(a,1,b&1)|0)<<24>>24!=0;return b&1|0}function fg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;b=dg(a,b)|0;if(!b){C=d;i=f;return c|0}else{a=(ii(b,e)|0)==0;b=e;C=a?da(b+4|0,4,0,0)|0|0:d;i=f;return (a?da(b|0,4,0,0)|0|0:c)|0}return 0}function gg(a,b){a=a|0;b=b|0;a=$h(a,b)|0;if(a){a=da(da(a+4|0,4,0,0)|0|0,4,0,0)|0|0;if(!(da(a+15>>0|0,1,0,0)|0))a=da(a+168|0,4,0,0)|0|0;else a=10360}else a=0;return a|0}function hg(a,b){a=a|0;b=b|0;a=$h(a,b)|0;if(!a)a=-1;else a=(da((da(a+4|0,4,0,0)|0|0)+22|0,2,0,0)|0)&1;return a|0}function ig(a,b){a=a|0;b=b|0;if(b){Ek(a,da(b+28|0,4,0,0)|0|0);lg(a,da(b|0,4,0,0)|0|0);lg(a,da(b+4|0,4,0,0)|0|0);Fk(a,da(b+12|0,4,0,0)|0|0);Gk(a,da(b+16|0,4,0,0)|0|0);lg(a,b)}return}function jg(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;do if(b){f=(a|0)!=0;if(!(f?(da(a+520|0,4,0,0)|0|0)!=0:0))c=4;if((c|0)==4?(d=b+40|0,c=(da(d|0,2,0,0)|0|0)+-1<<16>>16,ea(d|0,c|0,2,0),c<<16>>16!=0):0)break;c=da(b+8|0,4,0,0)|0|0;if(c){e=a+520|0;do{d=c;c=da(c+20|0,4,0,0)|0|0;if(!(f?(da(e|0,4,0,0)|0|0)!=0:0))Hk((da(d+24|0,4,0,0)|0|0)+24|0,da(d|0,4,0,0)|0|0,0)|0;Ik(a,d)}while((c|0)!=0)}c=da(b+16|0,4,0,0)|0|0;if(c){h=(a|0)==0;i=b+68|0;j=a+520|0;do{if(!(!h?(da(j|0,4,0,0)|0|0)!=0:0)){d=c+16|0;g=da(d|0,4,0,0)|0|0;f=c+12|0;e=da(f|0,4,0,0)|0|0;if(!g)Hk((da(i|0,4,0,0)|0|0)+56|0,da(((e|0)==0?c:e)+8|0,4,0,0)|0|0,e)|0;else ea(g+12|0,e|0,4,0);f=da(f|0,4,0,0)|0|0;if(f)ea(f+16|0,da(d|0,4,0,0)|0|0,4,0)}Jk(a,da(c+28|0,4,0,0)|0|0);Jk(a,da(c+32|0,4,0,0)|0|0);d=c;c=da(c+4|0,4,0,0)|0|0;lg(a,d)}while((c|0)!=0)}Kk(a,b);lg(a,da(b|0,4,0,0)|0|0);lg(a,da(b+20|0,4,0,0)|0|0);Lk(a,da(b+12|0,4,0,0)|0|0,1);Mk(a,da(b+24|0,4,0,0)|0|0);if(!((a|0)!=0?(da(a+520|0,4,0,0)|0|0)!=0:0))Nk(0,b)|0;f=b+56|0;c=da(f|0,4,0,0)|0|0;if(c){g=b+52|0;d=da(g|0,4,0,0)|0|0;if((d|0)>0){e=0;do{if((e|0)!=1){lg(a,da((da(f|0,4,0,0)|0|0)+(e<<2)|0,4,0,0)|0|0);d=da(g|0,4,0,0)|0|0}e=e+1|0}while((e|0)<(d|0));c=da(f|0,4,0,0)|0|0}lg(a,c)}lg(a,b)}while(0);return}function kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;bh(da(b+60|0,4,0,0)|0|0,da(b+68|0,2,0,0)|0|0);e=b+16|0;bh(da(e|0,4,0,0)|0|0,(da(b+84|0,2,0,1)|0)<<1);c=da(b+192|0,4,0,0)|0|0;if(c)do{d=c;c=da(c+24|0,4,0,0)|0|0;Ok(a,da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0);lg(a,d)}while((c|0)!=0);c=da(b+70|0,2,0,0)|0|0;if(c<<16>>16>0){d=b+64|0;c=c<<16>>16;do{c=c+-1|0;lg(a,da((da(d|0,4,0,0)|0|0)+(c<<2)|0,4,0,0)|0|0)}while((c|0)>0)}Ok(a,da(b+4|0,4,0,0)|0|0,da(b+32|0,4,0,0)|0|0);lg(a,da(e|0,4,0,0)|0|0);lg(a,da(b+168|0,4,0,0)|0|0);lg(a,da(b+172|0,4,0,0)|0|0);return}function lg(a,b){a=a|0;b=b|0;var c=0;do if(b){if(a){if(da(a+520|0,4,0,0)|0){Pk(a,b);break}if((da(a+276|0,4,0,0)|0|0)>>>0<=b>>>0?(da(a+280|0,4,0,0)|0|0)>>>0>b>>>0:0){c=a+272|0;ea(b|0,da(c|0,4,0,0)|0|0,4,0);ea(c|0,b|0,4,0);a=a+252|0;ea(a|0,(da(a|0,4,0,0)|0|0)+-1|0,4,0);break}}Vc(b)}while(0);return}function mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=da(b+24|0,4,0,0)|0|0;if(!e)c=0;else{c=e;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;c=c-e&1073741823}d=(((da(9328+(da(e>>0|0,1,0,1)|0|0)>>0|0,1,0,1)|0|0)+c|0)>>>0)%23|0;c=Qk(a,d,e,c)|0;if(!c){ea(b+8|0,0|0,4,0);c=a+(d<<2)|0;ea(b+28|0,da(c|0,4,0,0)|0|0,4,0);ea(c|0,b|0,4,0)}else{c=c+8|0;ea(b+8|0,da(c|0,4,0,0)|0|0,4,0);ea(c|0,b|0,4,0)}return}function ng(a){a=a|0;var b=0,c=0;do if(a){b=da(2254*4|0,4,0,0)|0|0;if((b|0)==(a|0)){ea(2254*4|0,da(a+12|0,4,0,0)|0|0,4,0);break}if(b){do{c=b+12|0;b=da(c|0,4,0,0)|0|0}while((b|0)!=(a|0)&(b|0)!=0);if((b|0)==(a|0))ea(c|0,da(a+12|0,4,0,0)|0|0,4,0)}}while(0);return}function og(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function pg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;b=iw(a|0,b|0,-1,-1)|0;c=C;do if(!(c>>>0>0|(c|0)==0&b>>>0>2147483390)){if(!(da(2186*4|0,4,0,0)|0)){b=kc[(fa(da(8744+36|0,4,0,0)|0|0,127|0)|0)&127](a)|0;break}c=kc[(fa(da(8744+52|0,4,0,0)|0|0,127|0)|0)&127](a)|0;ea(2171*4|0,a|0,4,0);if((da(2181*4|0,4,0,0)|0|0)>>>0>>0)ea(2181*4|0,a|0,4,0);a=da(2260*4|0,4,0,0)|0|0;do if(a){b=da(2166*4|0,4,0,0)|0|0;d=9032|0;d=cw(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0,c|0,((c|0)<0)<<31>>31|0)|0;e=C;if(0<(e|0)|0==(e|0)&b>>>0>>0){ea(2265*4|0,0|0,4,0);break}else{ea(2265*4|0,1|0,4,0);d=da(2261*4|0,4,0,0)|0|0;ea(2260*4|0,0|0,4,0);pc[(fa(a|0,15|0)|0)&15](d,b,0,c);ea(2260*4|0,a|0,4,0);ea(2261*4|0,d|0,4,0);break}}while(0);b=kc[(fa(da(8744+36|0,4,0,0)|0|0,127|0)|0)&127](c)|0;if(b){a=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](b)|0;a=(da(2166*4|0,4,0,0)|0|0)+a|0;ea(2166*4|0,a|0,4,0);if(a>>>0>(da(2176*4|0,4,0,0)|0|0)>>>0)ea(2176*4|0,a|0,4,0);a=(da(2175*4|0,4,0,0)|0|0)+1|0;ea(2175*4|0,a|0,4,0);if(a>>>0>(da(2185*4|0,4,0,0)|0|0)>>>0)ea(2185*4|0,a|0,4,0)}else b=0}else b=0;while(0);return b|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;do if(a){if((b|0)==0&(c|0)==0){Vc(a);d=0;break}if(!(c>>>0>0|(c|0)==0&b>>>0>2147483391)){g=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](a)|0;f=kc[(fa(da(8744+52|0,4,0,0)|0|0,127|0)|0)&127](b)|0;if((f|0)!=(g|0)){if(!(da(2186*4|0,4,0,0)|0)){d=qc[(fa(da(8744+44|0,4,0,0)|0|0,127|0)|0)&127](a,f)|0;break}ea(2171*4|0,b|0,4,0);if((da(2181*4|0,4,0,0)|0|0)>>>0>>0)ea(2181*4|0,b|0,4,0);c=f-g|0;d=da(2166*4|0,4,0,0)|0|0;h=9032|0;h=cw(da(h|0,4,0,0)|0|0,da(h+4|0,4,0,0)|0|0,c|0,((c|0)<0)<<31>>31|0)|0;i=C;if(!(0<(i|0)|0==(i|0)&d>>>0>>0)?(e=da(2260*4|0,4,0,0)|0|0,(e|0)!=0):0){h=da(2261*4|0,4,0,0)|0|0;ea(2260*4|0,0|0,4,0);pc[(fa(e|0,15|0)|0)&15](h,d,0,c);ea(2260*4|0,e|0,4,0);ea(2261*4|0,h|0,4,0)}d=qc[(fa(da(8744+44|0,4,0,0)|0|0,127|0)|0)&127](a,f)|0;c=da(2260*4|0,4,0,0)|0|0;if((d|0)==0&(c|0)!=0){e=da(2166*4|0,4,0,0)|0|0;d=da(2261*4|0,4,0,0)|0|0;ea(2260*4|0,0|0,4,0);pc[(fa(c|0,15|0)|0)&15](d,e,0,b);ea(2260*4|0,c|0,4,0);ea(2261*4|0,d|0,4,0);d=qc[(fa(da(8744+44|0,4,0,0)|0|0,127|0)|0)&127](a,f)|0}if(d){c=(kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](d)|0)-g|0;c=(da(2166*4|0,4,0,0)|0|0)+c|0;ea(2166*4|0,c|0,4,0);if(c>>>0>(da(2176*4|0,4,0,0)|0|0)>>>0)ea(2176*4|0,c|0,4,0)}else d=0}else d=a}else d=0}else d=pg(b,c)|0;while(0);return d|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,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=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;U=i;i=i+96|0;if((i|0)>=(j|0))ba();S=U+8|0;T=U;R=U+16|0;if(!b){e=0;f=0;M=0}else{e=b&2;if(!e)f=0;else{B=da(d|0,4,0,0)|0|0;f=da(B|0,4,0,0)|0|0;ea(d|0,B+4|0,4,0)}e=e&255;M=(b&1|0)!=0}L=e<<24>>24==0;I=e<<24>>24!=0;J=f+4|0;K=f+8|0;H=a+12|0;e=0;a:while(1){b=da(c>>0|0,1,0,0)|0|0;if(b<<24>>24==37){b=c;c=e}else if(b<<24>>24){b=c;do{b=b+1|0;B=da(b>>0|0,1,0,0)|0|0}while(!(B<<24>>24==37|B<<24>>24==0));Rk(a,c,b-c|0);if(!(da(b>>0|0,1,0,0)|0))break}else break;e=b+1|0;g=da(e>>0|0,1,0,0)|0|0;if(!(g<<24>>24)){N=10;break}h=g<<24>>24;o=0;l=0;r=0;g=0;t=0;u=0;b:while(1){switch(h|0){case 33:{s=1;break}case 48:{s=l;u=1;break}case 45:{s=l;g=1;break}case 43:{s=l;t=1;break}case 32:{s=l;r=1;break}case 35:{o=1;s=l;break}default:{v=o;s=l;break b}}l=b+2|0;B=da(l>>0|0,1,0,0)|0|0;h=B<<24>>24;if(!(B<<24>>24)){e=l;v=o;break}else{b=e;e=l;l=s}}if((h|0)!=42)if((h+-48|0)>>>0<10){l=0;do{l=h+-48+(l*10|0)|0;e=e+1|0;h=da(e>>0|0,1,0,0)|0|0}while((h+-48|0)>>>0<10);G=g;F=l&2147483647}else{G=g;F=0}else{if(L){B=da(d|0,4,0,0)|0|0;l=da(B|0,4,0,0)|0|0;ea(d|0,B+4|0,4,0)}else l=Sk(f)|0;if((l|0)<0){g=1;l=(l|0)==-2147483648?0:0-l|0}h=e+1|0;e=h;h=da(h>>0|0,1,0,0)|0|0;G=g;F=l}do if((h|0)==46){l=e+1|0;g=da(l>>0|0,1,0,0)|0|0;if(g<<24>>24!=42){h=g<<24>>24;if((g+-48&255)<10)g=0;else{e=l;y=0;break}while(1){g=h+-48+(g*10|0)|0;e=e+2|0;B=da(e>>0|0,1,0,0)|0|0;h=B<<24>>24;if((B+-48&255)<10){B=l;l=e;e=B}else break}y=g&2147483647;break}if(L){B=da(d|0,4,0,0)|0|0;l=da(B|0,4,0,0)|0|0;ea(d|0,B+4|0,4,0)}else l=Sk(f)|0;e=e+2|0;h=da(e>>0|0,1,0,0)|0|0;if((l|0)<0)y=(l|0)==-2147483648?-1:0-l|0;else y=l}else y=-1;while(0);do if((h|0)==108){l=e+1|0;h=da(l>>0|0,1,0,0)|0|0;if(h<<24>>24==108){h=e+2|0;e=h;h=da(h>>0|0,1,0,0)|0|0;l=1;break}else{e=l;h=h<<24>>24;l=0;break}}else l=0;while(0);o=0;while(1){g=48752+(o*6|0)|0;if((h|0)==(da(g>>0|0,1,0,0)|0|0)){h=g;g=o;N=46;break}o=o+1|0;if((o|0)>=23){E=48752;B=0;break}}if((N|0)==46){N=0;if(!(M|g>>>0<20))break;E=h;B=da(48755+(g*6|0)>>0|0,1,0,0)|0|0}c:do switch(B&255|0){case 14:{l=0;N=50;break}case 1:case 16:{N=50;break}case 13:{l=da(d|0,4,0,0)|0|0;b=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);l=da(d|0,4,0,0)|0|0;h=da(l|0,4,0,0)|0|0;ea(d|0,l+4|0,4,0);l=da(b+(h*72|0)+12|0,4,0,0)|0|0;if(l){g=l;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;Rk(a,l,g-l&1073741823);Rk(a,28928,1)}g=da(b+(h*72|0)+16|0,4,0,0)|0|0;if(!g)b=0;else{b=g;while(1)if(!(da(b>>0|0,1,0,0)|0))break;else b=b+1|0;b=b-g&1073741823}Rk(a,g,b);r=c;h=0;b=0;l=0;break}case 4:case 3:case 2:{do if(!L){l=da(J|0,4,0,0)|0|0;if((da(f|0,4,0,0)|0|0)>(l|0)){ea(J|0,l+1|0,4,0);m=+Tg(da((da(K|0,4,0,0)|0|0)+(l<<2)|0,4,0,0)|0|0);N=92;break}else{l=(y|0)<0?6:y;m=0.0;N=94;break}}else{N=da(d|0,4,0,0)|0|0;ea(k|0,da(N|0,4,0,0)|0|0,4,0);ea(k+4|0,da(N+4|0,4,0,0)|0|0,4,0);m=+(+da(k|0,8,1,0));ea(d|0,N+8|0,4,0);N=92}while(0);if((N|0)==92){N=0;l=(y|0)<0?6:y;if(m<0.0){m=-m;D=45}else N=94}if((N|0)==94){N=0;if(!(t<<24>>24))D=r<<24>>24==0?0:32;else D=43}y=B<<24>>24==4;g=((y&(l|0)>0)<<31>>31)+l|0;l=g&4095;if(!l)n=.5;else{n=.5;do{l=l+-1|0;n=n*.1}while((l|0)>0)}x=B<<24>>24==2;if(x)m=m+n;ea(S|0,+m,8,1);ea(T|0,+(+(+da(S|0,8,1,0))),8,1);if(+(+da(S|0,8,1,0))!=+(+da(T|0,8,1,0))){r=48960;h=3;b=F;l=0}else{if(m>0.0){o=0;p=1.0;while(1){q=p*1.e+100;if(m>=q&(o|0)<351){o=o+100|0;p=q}else break}while(1){q=p*1.e+64;if(m>=q&(o|0)<351){o=o+64|0;p=q}else break}while(1){q=p*1.0e8;if(m>=q&(o|0)<351){o=o+8|0;p=q}else break}while(1){q=p*10.0;if((o|0)<351&m>=q){o=o+1|0;p=q}else break}m=m/p;if(m<1.0e-08)do{m=m*1.0e8;o=o+-8|0}while(m<1.0e-08);if(m<1.0)do{m=m*10.0;o=o+-1|0}while(m<1.0);if((o|0)>350){if(D<<24>>24==43)g=48976;else if(D<<24>>24==45)g=48968;else g=48984;c=g;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;r=g;h=c-g&1073741823;b=F;l=0;break c}}else o=0;if(!x){m=n+m;if(!(m>=10.0))A=o;else{m=m*.1;A=o+1|0}}else A=o;if(y){l=(A|0)<-4|(g|0)<(A|0);y=v<<24>>24==0&1;g=g-(l?0:A)|0;l=l?3:2}else{y=s;l=B}z=l<<24>>24==3;c=z?0:A;o=(c|0)>0;l=iw(g|0,((g|0)<0)<<31>>31|0,F|0,((F|0)<0)<<31>>31|0)|0;o=iw(l|0,C|0,(o?c:0)|0,(o?((c|0)<0)<<31>>31:0)|0)|0;l=C;if((l|0)>0|(l|0)==0&o>>>0>55){o=iw(o|0,l|0,15,0)|0;o=pg(o,C)|0;if(!o){N=124;break a}else{r=o;B=o}}else{r=R;B=0}o=((s&255)*10|0)+16|0;w=(s|v)&255|(g|0)>0;if(!(D<<24>>24))x=r;else{ea(r>>0|0,D|0,1,0);x=r+1|0}if((c|0)<0){ea(x>>0|0,48|0,1,0);b=2;l=x+1|0;t=c}else{v=~c;v=(v|0)>-1?v:-1;t=-2-v|0;v=c+v|0;h=x;while(1){if((o|0)<1)b=48;else{l=~~m;b=l+48&255;m=(m-+(l|0))*10.0;o=o+-1|0}ea(h>>0|0,b|0,1,0);if((c|0)>0){h=h+1|0;c=c+-1|0}else break}b=v+3|0;l=x+(v+2)|0}h=(w|0)==0;if(!h){ea(l>>0|0,46|0,1,0);l=x+b|0}if((t+1|0)<0){ew(l|0,48,~t|0)|0;l=l+~t|0;g=g+1+t|0}if((g|0)>0){b=l;c=g;while(1){c=c+-1|0;if((o|0)<1)t=48;else{x=~~m;t=x+48&255;m=(m-+(x|0))*10.0;o=o+-1|0}ea(b>>0|0,t|0,1,0);if((c|0)<=0)break;else b=b+1|0}l=l+g|0}d:do if(!(y<<24>>24==0|h)){h=l;while(1){l=h+-1|0;g=da(l>>0|0,1,0,0)|0|0;if(g<<24>>24==46)break;else if(g<<24>>24!=48){l=h;break d}ea(l>>0|0,0|0,1,0);h=l}if(!(s<<24>>24)){ea(l>>0|0,0|0,1,0);break}else{ea(h>>0|0,48|0,1,0);l=h+1|0;break}}while(0);if(z){h=l+1|0;ea(l>>0|0,da(48912+(da(E+4>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0|0|0,1,0);g=l+2|0;if((A|0)<0){ea(h>>0|0,45|0,1,0);h=0-A|0}else{ea(h>>0|0,43|0,1,0);h=A}if((h|0)>99){ea(g>>0|0,((h|0)/100|0)+48|0,1,0);c=4;b=5;g=l+3|0;h=(h|0)%100|0}else{c=3;b=4}ea(g>>0|0,((h|0)/10|0)+48|0,1,0);ea(l+c>>0|0,((h|0)%10|0)+48|0,1,0);l=l+b|0}ea(l>>0|0,0|0,1,0);b=r;h=l-b|0;if(!(G<<24>>24==0&u<<24>>24!=0&(F|0)>(h|0))){b=F;l=B;break c}g=F-h|0;if((h|0)>=0){c=F;while(1){ea(r+c>>0|0,da(r+(c-g)>>0|0,1,0,0)|0|0|0,1,0);if((c|0)>(g|0))c=c+-1|0;else break}}if((F|0)==(h|0)){h=F;b=F;l=B;break c}ew(r+(D<<24>>24!=0&1)|0,48,F+b-l|0)|0;h=F;b=F;l=B}break}case 5:{if(L){r=da(H|0,4,0,0)|0|0;b=da(d|0,4,0,0)|0|0;h=da(b|0,4,0,0)|0|0;ea(d|0,b+4|0,4,0);ea(h|0,r|0,4,0);r=c;h=0;b=0;l=0}else{r=c;h=0;b=0;l=0}break}case 8:{ea(R>>0|0,37|0,1,0);r=R;h=1;b=F;l=0;break}case 9:{if(!L){b=Tk(f)|0;if(!b)l=0;else l=da(b>>0|0,1,0,0)|0|0}else{B=da(d|0,4,0,0)|0|0;l=da(B|0,4,0,0)|0|0;ea(d|0,B+4|0,4,0)}if((y|0)>1){g=y+-1|0;b=F-g|0;if(!((b|0)<2|G<<24>>24!=0)){Uk(a,b+-1|0,32);b=0}c=l&255;Uk(a,g,c)}else{c=l&255;b=F}ea(R>>0|0,c|0,1,0);r=R;h=1;l=0;break}case 7:case 6:{if(I)g=Tk(f)|0;else{A=da(d|0,4,0,0)|0|0;g=da(A|0,4,0,0)|0|0;ea(d|0,A+4|0,4,0)}if(!g){c=10360;l=0}else{c=g;l=B<<24>>24!=7|I?0:g}if((y|0)>-1){if((y|0)>0)g=0;else{r=c;h=0;b=F;break c}while(1){h=g+1|0;if(!(da(c+g>>0|0,1,0,0)|0)){r=c;h=g;b=F;break c}if((h|0)<(y|0))g=h;else{r=c;b=F;break}}}else{if(!c){r=0;h=0;b=F;break c}else g=c;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;r=c;h=g-c&1073741823;b=F;break c}break}case 15:case 11:case 10:{v=B<<24>>24==15?34:39;if(L){A=da(d|0,4,0,0)|0|0;l=da(A|0,4,0,0)|0|0;ea(d|0,A+4|0,4,0)}else l=Tk(f)|0;r=(l|0)==0;if(r)l=B<<24>>24==11?20304:48992;e:do if(!y){u=0;h=0}else{o=v&255;g=0;b=y;h=0;while(1){c=da(l+g>>0|0,1,0,0)|0|0;if(!(c<<24>>24)){u=g;break e}h=((c<<24>>24|0)==(o|0)&1)+h|0;g=g+1|0;b=b+-1|0;if(!b){u=g;break}}}while(0);s=B<<24>>24==11&(r^1);g=((s&1)<<1|1)+u+h|0;if((g|0)>70){h=pg(g,((g|0)<0)<<31>>31)|0;if(!h){N=197;break a}else{r=h;t=h}}else{r=R;t=0}if(s){ea(r>>0|0,v|0,1,0);g=1}else g=0;if((u|0)>0){o=v&255;b=0;do{h=da(l+b>>0|0,1,0,0)|0|0;c=g+1|0;ea(r+g>>0|0,h|0,1,0);if((h<<24>>24|0)==(o|0)){ea(r+c>>0|0,h|0,1,0);g=g+2|0}else g=c;b=b+1|0}while((b|0)!=(u|0))}if(s){ea(r+g>>0|0,v|0,1,0);g=g+1|0}ea(r+g>>0|0,0|0,1,0);h=g;b=F;l=t;break}case 12:{B=da(d|0,4,0,0)|0|0;b=da(B|0,4,0,0)|0|0;ea(d|0,B+4|0,4,0);if((b|0)!=0?(Q=da(b+4|0,4,0,0)|0|0,(Q|0)!=0):0){Rk(a,da(b|0,4,0,0)|0|0,Q);r=c;h=0;b=0;l=0}else{r=c;h=0;b=0;l=0}break}default:break a}while(0);if((N|0)==50){N=0;do if(!((da(E+2>>0|0,1,0,0)|0)&1)){if(I){c=Sk(f)|0;o=C;x=0;break}if(!(l<<24>>24)){o=da(d|0,4,0,0)|0|0;c=da(o|0,4,0,0)|0|0;ea(d|0,o+4|0,4,0);o=0;x=0;break}else{x=da(d|0,4,0,0)|0|0;o=x;c=da(o|0,4,0,0)|0|0;o=da(o+4|0,4,0,0)|0|0;ea(d|0,x+8|0,4,0);x=0;break}}else{do if(!I)if(!(l<<24>>24)){h=da(d|0,4,0,0)|0|0;l=da(h|0,4,0,0)|0|0;ea(d|0,h+4|0,4,0);h=((l|0)<0)<<31>>31;break}else{A=da(d|0,4,0,0)|0|0;h=A;l=da(h|0,4,0,0)|0|0;h=da(h+4|0,4,0,0)|0|0;ea(d|0,A+8|0,4,0);break}else{l=Sk(f)|0;h=C}while(0);if((h|0)<0){c=cw(0,0,l|0,h|0)|0;o=C;x=45;break}if(!(t<<24>>24)){c=l;o=h;x=r<<24>>24==0?0:32}else{c=l;o=h;x=43}}while(0);w=(c|0)==0&(o|0)==0;if(!(u<<24>>24))t=y;else{t=F-(x<<24>>24!=0&1)|0;t=(y|0)<(t|0)?t:y}if((t|0)>=60){l=t+10|0;h=pg(l,((l|0)<0)<<31>>31)|0;if(!h){N=69;break}else{b=l;l=h;g=h}}else{b=70;l=0;g=R}u=g+(b+-1)|0;if(B<<24>>24==16){h=tw(c|0,o|0,10,0)|0;if(!(h>>>0<=3?(B=sw(c|0,o|0,10,0)|0,B=tw(B|0,C|0,10,0)|0,!((B|0)==1&(C|0)==0)):0))h=0;B=h<<1;ea(g+(b+-2)>>0|0,da(48896+(B|1)>>0|0,1,0,0)|0|0|0,1,0);h=g+(b+-3)|0;ea(h>>0|0,da(48896+B>>0|0,1,0,0)|0|0|0,1,0)}else h=u;b=da(E+4>>0|0,1,0,1)|0|0;r=da(E+1>>0|0,1,0,1)|0|0;while(1){B=tw(c|0,o|0,r|0,0)|0;g=h+-1|0;ea(g>>0|0,da(48912+(B+b)>>0|0,1,0,0)|0|0|0,1,0);c=sw(c|0,o|0,r|0,0)|0;o=C;if((c|0)==0&(o|0)==0)break;else h=g}c=t-u+g|0;if((c|0)>0){b=h;h=g;while(1){g=b+-2|0;ea(g>>0|0,48|0,1,0);c=c+-1|0;if((c|0)<=0)break;else{b=h;h=g}}}if(x<<24>>24){g=h+-2|0;ea(g>>0|0,x|0,1,0)}if((!(w|v<<24>>24==0)?(O=da(E+5>>0|0,1,0,0)|0|0,O<<24>>24!=0):0)?(P=48952+(O&255)|0,!(O<<24>>24==3|O<<24>>24==6)):0){c=da(P>>0|0,1,0,0)|0|0;h=P;do{g=g+-1|0;ea(g>>0|0,c|0,1,0);h=h+1|0;c=da(h>>0|0,1,0,0)|0|0}while(c<<24>>24!=0)}r=g;h=u-g|0;b=F}g=b-h|0;c=(g|0)<1;if(!(c|G<<24>>24!=0))Uk(a,g,32);Rk(a,r,h);if(!(c|G<<24>>24==0))Uk(a,g,32);if(l)Vc(l);c=e+1|0;e=r}if((N|0)==10)Rk(a,48744,1);else if((N|0)==69){ea(a+25>>0|0,1|0,1,0);ea(a+16|0,0|0,4,0)}else if((N|0)==124){ea(a+25>>0|0,1|0,1,0);ea(a+16|0,0|0,4,0)}else if((N|0)==197){ea(a+25>>0|0,1|0,1,0);ea(a+16|0,0|0,4,0)}i=U;return}function sg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=a+8|0;b=da(d|0,4,0,0)|0|0;do if(((b|0)!=0?(f=a+12|0,ea(b+(da(f|0,4,0,0)|0|0)>>0|0,0|0,1,0),c=da(a+24>>0|0,1,0,0)|0|0,c<<24>>24!=0):0)?(e=a+4|0,(da(d|0,4,0,0)|0|0)==(da(e|0,4,0,0)|0|0)):0){if(c<<24>>24==1){b=(da(f|0,4,0,0)|0|0)+1|0;b=lh(da(a|0,4,0,0)|0|0,b,((b|0)<0)<<31>>31)|0}else b=Sc((da(f|0,4,0,0)|0|0)+1|0)|0;ea(d|0,b|0,4,0);if(!b){ea(a+25>>0|0,1|0,1,0);ea(a+16|0,0|0,4,0);break}else{jw(b|0,da(e|0,4,0,0)|0|0,(da(f|0,4,0,0)|0|0)+1|0)|0;break}}while(0);return da(d|0,4,0,0)|0|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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;e=a+52|0;ea(e|0,b|0,4,0);a:do if(!c){ea(e|0,b|0,4,0);b=da(a+236|0,4,0,0)|0|0;if(b){e=b+8|0;if(!((da(e|0,2,0,0)|0)&9312)){ea(e|0,1|0,2,0);break}else{ug(b);break}}}else{g=a+236|0;do if(!(da(g|0,4,0,0)|0)){e=lh(a,40,0)|0;if(!e){ea(g|0,e|0,4,0);break a}else{b=e+0|0;f=b+40|0;do{ea(b>>0|0,0|0,1,0);b=b+1|0}while((b|0)<(f|0));ea(e+8|0,1|0,2,0);ea(e+32|0,a|0,4,0);ea(g|0,e|0,4,0);break}}while(0);ea(h|0,d|0,4,0);e=Vk(a,c,h)|0;b=da(g|0,4,0,0)|0|0;if(b)Wg(b,e,-1,1,75)|0}while(0);i=k;return}function ug(a){a=a|0;var b=0,c=0;c=a+8|0;b=da(c|0,2,0,0)|0|0;if(b&8192){Xk(a,da(a|0,4,0,0)|0|0)|0;b=da(c|0,2,0,0)|0|0}b=b&65535;do if(!(b&1024)){if(b&32){Yk(da(a|0,4,0,0)|0|0);break}if(b&64){b=da(a|0,4,0,0)|0|0;a=(da(b|0,4,0,0)|0|0)+180|0;ea(b+4|0,da(a|0,4,0,0)|0|0,4,0);ea(a|0,b|0,4,0)}}else bc[(fa(da(a+36|0,4,0,0)|0|0,31|0)|0)&31](da(a+16|0,4,0,0)|0|0);while(0);ea(c|0,1|0,2,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;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h;d=Uh(b,c)|0;do if((d|0)==1){e=lh(a,536,0)|0;if(!e){tg(a,7,15776,f);d=0;break}ew(e|0,0,536)|0;ea(e|0,b|0,4,0);if(!(Zk(e)|0)){lg(a,da(e+4|0,4,0,0)|0|0);Bh(e);lg(a,e);g=7;break}else{b=da(e+12|0,4,0,0)|0|0;d=e+4|0;ea(f|0,da(d|0,4,0,0)|0|0,4,0);tg(a,b,10344,f);lg(a,da(d|0,4,0,0)|0|0);Bh(e);lg(a,e);d=0;break}}else g=7;while(0);do if((g|0)==7)if((d|0)<0){ea(f|0,c|0,4,0);tg(a,1,47448,f);d=0;break}else{d=da((da(b+16|0,4,0,0)|0|0)+(d<<4)+4|0,4,0,0)|0|0;break}while(0);i=h;return d|0}function wg(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;h=da(a+4|0,4,0,0)|0|0;ea(h+4|0,da(a|0,4,0,0)|0|0,4,0);g=h+22|0;if(!((da(g|0,2,0,0)|0)&2)){if((c|0)<0)c=(da(h+32|0,4,0,0)|0|0)-(da(h+36|0,4,0,0)|0|0)|0;if(((b+-512|0)>>>0<65025?(b+-1&b|0)==0:0)?(ea(h+32|0,b|0,4,0),e=h+80|0,f=da(e|0,4,0,0)|0|0,(f|0)!=0):0){a=f+-4|0;ea(e|0,a|0,4,0);_k(a);ea(e|0,0|0,4,0)}e=h+32|0;a=$k(da(h|0,4,0,0)|0|0,e,c)|0;ea(h+36|0,(da(e|0,4,0,0)|0|0)-(c&65535)|0,4,0);if(d)ea(g|0,da(g|0,2,0,1)|0|0|2|0,2,0)}else a=8;return a|0}function xg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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;L=i;i=i+16|0;if((i|0)>=(j|0))ba();F=L;E=L+12|0;D=L+8|0;J=da(a+4|0,4,0,0)|0|0;A=J+4|0;ea(A|0,da(a|0,4,0,0)|0|0,4,0);G=a+8|0;e=da(G>>0|0,1,0,0)|0|0;do if(e<<24>>24!=2?(H=(b|0)!=0,e<<24>>24!=1|H):0){I=J+22|0;e=da(I|0,2,0,0)|0|0;if(!((e&1)!=0&H)){if(H)if((da(J+20>>0|0,1,0,0)|0|0)!=2&(e&64)==0)K=8;else K=7;else if(!(e&64))K=8;else K=7;a:do if((K|0)==7){c=da(J+76|0,4,0,0)|0|0;K=12}else if(((K|0)==8?(b|0)>1:0)?(d=da(J+72|0,4,0,0)|0|0,(d|0)!=0):0)do{e=da(d|0,4,0,0)|0|0;if((e|0)!=(a|0)){c=e;K=12;break a}d=da(d+12|0,4,0,0)|0|0}while((d|0)!=0);while(0);if((K|0)==12?(da(c|0,4,0,0)|0|0)!=0:0){c=262;break}c=al(a,1,1)|0;if(!c){e=da(I|0,2,0,1)|0|0;ea(I|0,e&65527|0,2,0);C=J+44|0;if(!(da(C|0,4,0,0)|0))ea(I|0,e|8|0,2,0);w=J+12|0;m=J+32|0;n=J+36|0;o=J+17|0;p=J+18|0;q=J+80|0;r=J+24|0;s=J+26|0;t=J+28|0;u=J+30|0;v=J+21|0;x=J+20|0;y=(b|0)>1;c=0;b:while(1){c:do if(!(da(w|0,4,0,0)|0)){c=bl(da(J|0,4,0,0)|0|0)|0;if(!c){c=cl(J,1,E,0)|0;if(!c){l=da(E|0,4,0,0)|0|0;g=da(l+56|0,4,0,0)|0|0;e=(da(g+29>>0|0,1,0,1)|0)<<16|(da(g+28>>0|0,1,0,1)|0)<<24|(da(g+30>>0|0,1,0,1)|0)<<8|(da(g+31>>0|0,1,0,1)|0);f=da(J|0,4,0,0)|0|0;h=da(f+24|0,4,0,0)|0|0;if((e|0)!=0?(Yv(g+24|0,g+92|0,4)|0)==0:0)k=e;else k=h;d:do if((k|0)>0){e:do if(!(Yv(g,44680,16)|0)){if((da(g+18>>0|0,1,0,1)|0|0)>2)ea(I|0,da(I|0,2,0,1)|0|1|0,2,0);e=da(g+19>>0|0,1,0,0)|0|0;if((e&255)<=2){do if(e<<24>>24==2){if((da(I|0,2,0,0)|0)&16)break;ea(D|0,0|0,4,0);c=dl(f,D)|0;if(c){K=48;break e}if(da(D|0,4,0,0)|0)break;if(!l){c=0;continue b}Ag(da(l+68|0,4,0,0)|0|0);c=0;continue b}while(0);if(Yv(g+21|0,47408,3)|0){c=26;K=48;break}d=(da(g+17>>0|0,1,0,1)|0)<<16|(da(g+16>>0|0,1,0,1)|0)<<8;if((d+16777215&d|0)!=0|d>>>0>65536|d>>>0<257){c=26;K=48;break}f=da(g+20>>0|0,1,0,1)|0|0;e=d-f|0;if((d|0)==(da(m|0,4,0,0)|0|0)){if((k|0)>(h|0)?((da((da(A|0,4,0,0)|0|0)+24|0,4,0,0)|0)&65536|0)==0:0){ea(F|0,55672|0,4,0);ea(F+4|0,10788|0,4,0);ad(11,13600,F);c=11;K=48;break}if(e>>>0<480){c=26;K=48;break}ea(m|0,d|0,4,0);ea(n|0,e|0,4,0);ea(o>>0|0,((da(g+53>>0|0,1,0,1)|0)<<16|(da(g+52>>0|0,1,0,1)|0)<<24|(da(g+54>>0|0,1,0,1)|0)<<8|(da(g+55>>0|0,1,0,1)|0)|0)!=0&1|0,1,0);ea(p>>0|0,((da(g+65>>0|0,1,0,1)|0)<<16|(da(g+64>>0|0,1,0,1)|0)<<24|(da(g+66>>0|0,1,0,1)|0)<<8|(da(g+67>>0|0,1,0,1)|0)|0)!=0&1|0,1,0);break d}if(l)Ag(da(l+68|0,4,0,0)|0|0);ea(n|0,e|0,4,0);ea(m|0,d|0,4,0);e=da(q|0,4,0,0)|0|0;if(e){c=e+-4|0;ea(q|0,c|0,4,0);_k(c);ea(q|0,0|0,4,0)}c=$k(da(J|0,4,0,0)|0|0,m,f)|0}else{c=26;K=48}}else{c=26;K=48}while(0);if((K|0)==48){K=0;if(l)Ag(da(l+68|0,4,0,0)|0|0);ea(w|0,0|0,4,0)}if(!c){c=0;continue b}else{K=77;break c}}else e=da(n|0,4,0,0)|0|0;while(0);c=((((e<<6)+-768|0)>>>0)/255|0)+65513|0;d=c&65535;ea(r|0,d|0,2,0);f=((((e<<5)+-384|0)>>>0)/255|0)+65513&65535;ea(s|0,f|0,2,0);ea(t|0,e+65501|0,2,0);ea(u|0,f|0,2,0);ea(v>>0|0,((d&65535)>127?127:c&255)|0,1,0);ea(w|0,l|0,4,0);ea(C|0,k|0,4,0);c=0;continue b}else e=0}else e=0}else{f:do if((c|0)==0&H){if((da(I|0,2,0,0)|0)&1){c=8;K=77;break c}k=da(J|0,4,0,0)|0|0;c=da(k+40|0,4,0,0)|0|0;g:do if(!c){ea(k+21>>0|0,(da((da(a|0,4,0,0)|0|0)+64>>0|0,1,0,0)|0|0)==2&1|0,1,0);l=k+16|0;if((da(l>>0|0,1,0,0)|0|0)==1){f=k+208|0;e=da(f|0,4,0,0)|0|0;do if(!e){c=el(k,2)|0;h:do if((c|0)==0&y){e=k+176|0;d=k+180|0;while(1){c=el(k,4)|0;if((c|0)!=5)break h;if(!(kc[(fa(da(e|0,4,0,0)|0|0,127|0)|0)&127](da(d|0,4,0,0)|0|0)|0)){c=5;break g}}}while(0);if(c)break g}else{do if(da(k+4>>0|0,1,0,0)|0){if(da(e+43>>0|0,1,0,0)|0)break;c=el(k,4)|0;if(c)break g;e=da(f|0,4,0,0)|0|0;d=e+43|0;if(!(da(d>>0|0,1,0,0)|0)){c=da(e+4|0,4,0,0)|0|0;oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,(da(e+40|0,2,0,0)|0|0)+3|0,1,5)|0;e=da(f|0,4,0,0)|0|0}ea(d>>0|0,1|0,1,0)}while(0);if(da(e+46>>0|0,1,0,0)|0){c=8;break g}d=e+43|0;if((da(d>>0|0,1,0,0)|0|0)==0?(z=da(e+4|0,4,0,0)|0|0,z=oc[(fa(da((da(z|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](z,0,1,10)|0,(z|0)!=0):0){c=z;break g}c=e+44|0;ea(c>>0|0,1|0,1,0);if(!(Yv(e+52|0,da(da(e+32|0,4,0,0)|0|0,4,0,0)|0|0,48)|0))break;if(!(da(d>>0|0,1,0,0)|0)){d=da(e+4|0,4,0,0)|0|0;oc[(fa(da((da(d|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](d,0,1,9)|0}ea(c>>0|0,0|0,1,0);c=517;break g}while(0);ea(l>>0|0,2|0,1,0);c=da(k+24|0,4,0,0)|0|0;ea(k+36|0,c|0,4,0);ea(k+32|0,c|0,4,0);ea(k+28|0,c|0,4,0);c=k+72|0;ea(c|0,0|0,4,0);ea(c+4|0,0|0,4,0)}c=Bg(J)|0;break f}while(0);e=(c|0)==0;break c}while(0);if(!c){c=0;break b}else e=0}while(0);if((K|0)==77){K=0;e=(c|0)==0}if((da(x>>0|0,1,0,0)|0|0)==0?(B=da(w|0,4,0,0)|0|0,(B|0)!=0):0){ea(w|0,0|0,4,0);Ag(da(B+68|0,4,0,0)|0|0)}if((c&255|0)!=5){K=86;break}if(da(x>>0|0,1,0,0)|0){K=86;break}if(!(fl(J)|0)){K=86;break}}if((K|0)==86)if(!e){K=96;break}if((da(G>>0|0,1,0,0)|0|0)==0?(z=J+40|0,ea(z|0,(da(z|0,4,0,0)|0|0)+1|0,4,0),(da(a+9>>0|0,1,0,0)|0|0)!=0):0){ea(a+40>>0|0,1|0,1,0);z=J+72|0;ea(a+44|0,da(z|0,4,0,0)|0|0,4,0);ea(z|0,a+32|0,4,0)}e=H?2:1;ea(G>>0|0,e|0,1,0);if((e&255)>(da(x>>0|0,1,0,1)|0|0))ea(x>>0|0,e|0,1,0);if(H){e=da(w|0,4,0,0)|0|0;ea(J+76|0,a|0,4,0);d=da(I|0,2,0,1)|0|0;ea(I|0,(y?d|32:d&65503)|0,2,0);d=e+56|0;z=da(d|0,4,0,0)|0|0;if((da(C|0,4,0,0)|0|0)!=((da(z+29>>0|0,1,0,1)|0)<<16|(da(z+28>>0|0,1,0,1)|0)<<24|(da(z+30>>0|0,1,0,1)|0)<<8|(da(z+31>>0|0,1,0,1)|0)|0)){c=Fg(da(e+68|0,4,0,0)|0|0)|0;if(!c){K=da(d|0,4,0,0)|0|0;c=da(C|0,4,0,0)|0|0;ea(K+28>>0|0,c>>>24|0,1,0);ea(K+29>>0|0,c>>>16|0,1,0);ea(K+30>>0|0,c>>>8|0,1,0);ea(K+31>>0|0,c|0,1,0);c=0;K=96}}else K=96}}}else c=8}else{c=0;K=96}while(0);if((K|0)==96)if((c|0)==0&(b|0)!=0)c=gl(da(J|0,4,0,0)|0|0,da((da(a|0,4,0,0)|0|0)+496|0,4,0,0)|0|0)|0;i=L;return c|0}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,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();n=r;p=r+8|0;ea(p|0,0|0,4,0);m=d&1;a:do if(!b){ea(n|0,46865|0,4,0);ea(n+4|0,10788|0,4,0);ad(11,13600,n);e=11}else{ea(a+23>>0|0,1|0,1,0);d=da(a+40|0,4,0,0)|0|0;do if(!d){l=a+204|0;d=da(l|0,4,0,0)|0|0;d=$b[(fa(da(8744+132|0,4,0,0)|0|0,63|0)|0)&63](da(d+40|0,4,0,0)|0|0,b,(da(d+29>>0|0,1,0,1)|0)&3)|0;if(!d){g=da(l|0,4,0,0)|0|0;if((da(g+29>>0|0,1,0,0)|0|0)!=2){f=g+8|0;d=da(f|0,4,0,0)|0|0;b:do if(!d)q=11;else{while(1){if((da(d+26|0,2,0,0)|0|0)==0?((da(d+24|0,2,0,0)|0)&4)==0:0)break;d=da(d+36|0,4,0,0)|0|0;if(!d){q=11;break b}}ea(f|0,d|0,4,0);k=d;q=14}while(0);c:do if((q|0)==11?(ea(f|0,0|0,4,0),h=da(g+4|0,4,0,0)|0|0,(h|0)!=0):0){d=h;do{if(!(da(d+26|0,2,0,0)|0)){k=d;q=14;break c}d=da(d+36|0,4,0,0)|0|0}while((d|0)!=0)}while(0);if((q|0)==14?(e=qc[(fa(da(g+32|0,4,0,0)|0|0,127|0)|0)&127](da(g+36|0,4,0,0)|0|0,k)|0,!((e|0)==0|(e|0)==5)):0)break;e=$b[(fa(da(8744+132|0,4,0,0)|0|0,63|0)|0)&63](da(g+40|0,4,0,0)|0|0,b,2)|0;if(!e){e=7;break}}else e=0}else e=d;g=hl(da(l|0,4,0,0)|0|0,b,e)|0;ea(c|0,g|0,4,0);if(!g)e=7;else{d=g+16|0;e=(m|0)!=0;if(!((da(d|0,4,0,0)|0|0)==0|e)){e=a+184|0;ea(e|0,(da(e|0,4,0,0)|0|0)+1|0,4,0);e=0;break a}ea(d|0,a|0,4,0);do if((b|0)>=0?(o=a+152|0,(((da(2514*4|0,4,0,0)|0|0)/(da(o|0,4,0,0)|0|0)|0)+1|0)!=(b|0)):0){if(((da(a+15>>0|0,1,0,0)|0|0)==0?!((da(a+24|0,4,0,0)|0|0)>>>0>>0|e):0)?(da(da(a+60|0,4,0,0)|0|0,4,0,0)|0|0)!=0:0){e=da(a+208|0,4,0,0)|0|0;if(!e)e=0;else{e=jl(e,b,p)|0;if(e)break;e=da(p|0,4,0,0)|0|0}o=a+188|0;ea(o|0,(da(o|0,4,0,0)|0|0)+1|0,4,0);e=kl(g,e)|0;if(!e){e=0;break a}else break}if((da(a+156|0,4,0,0)|0|0)>>>0>>0)e=13;else{if(e){e=da(3164*4|0,4,0,0)|0|0;if(e)mc[(fa(e|0,3|0)|0)&3]();if((da(a+28|0,4,0,0)|0|0)>>>0>=b>>>0)ai(da(a+56|0,4,0,0)|0|0,b)|0;il(a,b)|0;e=da(3166*4|0,4,0,0)|0|0;if(e)mc[(fa(e|0,3|0)|0)&3]()}ew(da(g+4|0,4,0,0)|0|0,0,da(o|0,4,0,0)|0|0)|0;e=0;break a}}else q=21;while(0);if((q|0)==21){ea(n|0,46945|0,4,0);ea(n+4|0,10788|0,4,0);ad(11,13600,n);e=11}ll(g)}}else e=d;while(0);if((da(a+120|0,4,0,0)|0|0)==0?(da((da(a+204|0,4,0,0)|0|0)+12|0,4,0,0)|0|0)==0:0)ml(a);ea(c|0,0|0,4,0)}while(0);i=r;return e|0}function zg(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+16|0;if((i|0)>=(j|0))ba();t=u;r=a+4|0;n=da((da(r|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;s=da(n|0,4,0,0)|0|0;q=a+24|0;m=da((da((da(q|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;n=da(n+32|0,4,0,0)|0|0;o=(m|0)<(n|0)?m:n;p=((m|0)<0)<<31>>31;k=rw(m|0,p|0,b|0,0)|0;l=C;if((m|0)==(n|0))a=0;else a=(da(s+15>>0|0,1,0,0)|0|0)==0?0:8;a:do if((a|0)==0&(m|0)>0){b=cw(k|0,l|0,m|0,p|0)|0;h=((n|0)<0)<<31>>31;g=(d|0)==0;f=C;a=n;while(1){ea(t|0,0|0,4,0);d=pw(b|0,f|0,n|0,h|0)|0;if((d|0)!=(((da(2514*4|0,4,0,0)|0|0)>>>0)/(a>>>0)|0|0)){a=yg(s,d+1|0,t,0)|0;e=da(t|0,4,0,0)|0|0;if(!a){a=Fg(e)|0;if(!a){v=qw(b|0,f|0,m|0,p|0)|0;d=da(e+4|0,4,0,0)|0|0;a=qw(b|0,f|0,n|0,h|0)|0;jw(d+a|0,c+v|0,o|0)|0;ea((da(e+8|0,4,0,0)|0)>>0|0,0|0,1,0);if((b|0)==0&(f|0)==0&g){v=da((da((da(q|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+44|0,4,0,0)|0|0;ea(d+(a+28)>>0|0,v>>>24|0,1,0);ea(d+(a+29)>>0|0,v>>>16|0,1,0);ea(d+(a+30)>>0|0,v>>>8|0,1,0);ea(d+(a+31)>>0|0,v|0,1,0);a=0}else a=0}}if(e)Ag(e)}else a=0;b=iw(b|0,f|0,n|0,h|0)|0;d=C;if(!((a|0)==0&((d|0)<(l|0)|(d|0)==(l|0)&b>>>0>>0)))break a;f=d;a=da((da((da(r|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+32|0,4,0,0)|0|0}}while(0);i=u;return a|0}function Ag(a){a=a|0;var b=0,c=0,d=0;b=da(a+16|0,4,0,0)|0|0;if(!((da(a+24|0,2,0,0)|0)&64)){nl(a);a=da(b+120|0,4,0,0)|0|0}else{d=b+120|0;c=(da(d|0,4,0,0)|0|0)+-1|0;ea(d|0,c|0,4,0);d=b+136|0;ea(a+12|0,da(d|0,4,0,0)|0|0,4,0);ea(d|0,a|0,4,0);a=c}if((a|0)==0?(da((da(b+204|0,4,0,0)|0|0)+12|0,4,0,0)|0|0)==0:0)ml(b);return}function Bg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=a+44|0;if(!(da(e|0,4,0,0)|0)){f=da(a+12|0,4,0,0)|0|0;g=da(f+56|0,4,0,0)|0|0;b=Fg(da(f+68|0,4,0,0)|0|0)|0;if(!b){b=g+0|0;c=44680|0;d=b+16|0;do{ea(b>>0|0,da(c>>0|0,1,0,0)|0|0|0,1,0);b=b+1|0;c=c+1|0}while((b|0)<(d|0));b=a+32|0;ea(g+16>>0|0,(da(b|0,4,0,0)|0|0)>>>8|0,1,0);ea(g+17>>0|0,(da(b|0,4,0,0)|0|0)>>>16|0,1,0);ea(g+18>>0|0,1|0,1,0);ea(g+19>>0|0,1|0,1,0);ea(g+20>>0|0,(da(b|0,4,0,0)|0|0)-(da(a+36|0,4,0,0)|0|0)|0,1,0);ea(g+21>>0|0,64|0,1,0);ea(g+22>>0|0,32|0,1,0);ea(g+23>>0|0,32|0,1,0);b=g+24|0;d=b+76|0;do{ea(b>>0|0,0|0,1,0);b=b+1|0}while((b|0)<(d|0));ol(f,13);b=a+22|0;ea(b|0,da(b|0,2,0,1)|0|0|2|0,2,0);b=da(a+17>>0|0,1,0,0)|0|0;ea(g+52>>0|0,0|0,1,0);ea(g+53>>0|0,0|0,1,0);ea(g+54>>0|0,0|0,1,0);ea(g+55>>0|0,b|0,1,0);b=da(a+18>>0|0,1,0,0)|0|0;ea(g+64>>0|0,0|0,1,0);ea(g+65>>0|0,0|0,1,0);ea(g+66>>0|0,0|0,1,0);ea(g+67>>0|0,b|0,1,0);ea(e|0,1|0,4,0);ea(g+31>>0|0,1|0,1,0);b=0}}else b=0;return b|0}function Cg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=da(a+4|0,4,0,0)|0|0;ea(e+4|0,da(a|0,4,0,0)|0|0,4,0);a=da(e+12|0,4,0,0)|0|0;d=da(a+56|0,4,0,0)|0|0;a=Fg(da(a+68|0,4,0,0)|0|0)|0;if((a|0)==0?(g=b<<2,ea(d+(g+36)>>0|0,c>>>24|0,1,0),ea(d+(g+37)>>0|0,c>>>16|0,1,0),ea(d+(g+38)>>0|0,c>>>8|0,1,0),f=c&255,ea(d+(g+39)>>0|0,f|0,1,0),(b|0)==7):0)ea(e+18>>0|0,f|0,1,0);return a|0}function Dg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=a+20|0;b=da(g|0,4,0,0)|0|0;c=(b|0)>0;if(c){d=da(a+16|0,4,0,0)|0|0;f=0;do{e=da(d+(f<<4)+4|0,4,0,0)|0|0;if(e)ea((da(e+4|0,4,0,0)|0|0)+4|0,da(e|0,4,0,0)|0|0,4,0);f=f+1|0}while((f|0)!=(b|0));if(c){f=a+16|0;e=0;do{c=da((da(f|0,4,0,0)|0|0)+(e<<4)+12|0,4,0,0)|0|0;if(c){pl(c);b=da(g|0,4,0,0)|0|0}e=e+1|0}while((e|0)<(b|0))}}b=a+24|0;ea(b|0,(da(b|0,4,0,0)|0)&-3|0,4,0);ql(a);rl(a);return}function Eg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=da(a+4|0,4,0,0)|0|0;h=d+22|0;c=da(h|0,2,0,1)|0|0;ea(h|0,((b|0)==1?c|16:c&65519)|0,2,0);c=xg(a,0)|0;do if(!c){e=d+12|0;f=da((da(e|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;g=f+18|0;d=da(g>>0|0,1,0,0)|0|0;b=b&255;if(d<<24>>24==b<<24>>24?(da(f+19>>0|0,1,0,0)|0|0)==d<<24>>24:0){c=0;break}c=xg(a,2)|0;if(!c){c=Fg(da((da(e|0,4,0,0)|0|0)+68|0,4,0,0)|0|0)|0;if(!c){ea(g>>0|0,b|0,1,0);ea(f+19>>0|0,b|0,1,0);c=0}}}while(0);ea(h|0,(da(h|0,2,0,1)|0)&65519|0,2,0);return c|0}function Fg(a){a=a|0;var b=0;b=da(a+16|0,4,0,0)|0|0;if((da(b+148|0,4,0,0)|0|0)>>>0>(da(b+152|0,4,0,0)|0|0)>>>0)a=sl(a)|0;else a=tl(a)|0;return a|0}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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+32|0;if((i|0)>=(j|0))ba();p=v+16|0;q=v;f=v+12|0;h=v+8|0;d=da(a+40|0,4,0,0)|0|0;a:do if(!d){u=a+16|0;if((da(u>>0|0,1,0,1)|0|0)>=3){b:do if(!(da(a+15>>0|0,1,0,0)|0)){if(da(a+208|0,4,0,0)|0){g=a+204|0;e=ul(da(g|0,4,0,0)|0|0)|0;ea(h|0,0|0,4,0);if(!e){d=yg(a,1,h,0)|0;e=da(h|0,4,0,0)|0|0;ea(e+12|0,0|0,4,0);if(e){f=e;t=9}}else{f=0;t=9}if((t|0)==9){d=vl(a,e,da(a+24|0,4,0,0)|0|0,1)|0;if(f)Ag(f)}if(d)break a;e=da(g|0,4,0,0)|0|0;d=da(e|0,4,0,0)|0|0;if(!d)break;while(1){wl(d);d=da(e|0,4,0,0)|0|0;if(!d)break b}}g=a+18|0;if((da(g>>0|0,1,0,0)|0|0)==0?(da(a+24|0,4,0,0)|0|0)!=0:0){d=yg(a,1,f,0)|0;f=da(f|0,4,0,0)|0|0;if(!d){d=Fg(f)|0;if(!d){xl(f);ea(g>>0|0,1|0,1,0);d=0}}if(f)Ag(f);if(d)break a}if(((b|0)!=0?(da(a+5>>0|0,1,0,0)|0|0)!=4:0)?(s=a+64|0,o=da(s|0,4,0,0)|0|0,(da(o|0,4,0,0)|0|0)!=0):0){ea(a+19>>0|0,1|0,1,0);f=da(b>>0|0,1,0,0)|0|0;if(!(f<<24>>24)){g=0;e=0}else{g=0;e=0;do{g=(f<<24>>24)+g|0;e=e+1|0;f=da(b+e>>0|0,1,0,0)|0|0}while(f<<24>>24!=0)}n=a+72|0;d=n;f=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;if(!(da(a+8>>0|0,1,0,0)|0))h=d;else{if((f|0)==0&(d|0)==0){f=0;d=0}else{d=iw(f|0,d|0,-1,-1)|0;f=da(a+148|0,4,0,0)|0|0;d=pw(d|0,C|0,f|0,0)|0;d=iw(d|0,C|0,1,0)|0;f=rw(d|0,C|0,f|0,0)|0;d=C}h=n;ea(h|0,f|0,4,0);ea(h+4|0,d|0,4,0);h=d}d=((da(2514*4|0,4,0,0)|0|0)/(da(a+152|0,4,0,0)|0|0)|0)+1|0;ea(p>>0|0,d>>>24|0,1,0);k=p+1|0;ea(k>>0|0,d>>>16|0,1,0);l=p+2|0;ea(l>>0|0,d>>>8|0,1,0);m=p+3|0;ea(m>>0|0,d|0,1,0);d=sc[(fa(da((da(o|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](o,p,4,f,h)|0;if(d)break a;d=da(s|0,4,0,0)|0|0;h=iw(f|0,h|0,4,0)|0;f=C;d=sc[(fa(da((da(d|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](d,b,e,h,f)|0;if(d)break a;d=da(s|0,4,0,0)|0|0;h=iw(h|0,f|0,e|0,((e|0)<0)<<31>>31|0)|0;f=C;ea(p>>0|0,e>>>24|0,1,0);ea(k>>0|0,e>>>16|0,1,0);ea(l>>0|0,e>>>8|0,1,0);ea(m>>0|0,e|0,1,0);d=sc[(fa(da((da(d|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](d,p,4,h,f)|0;if(d)break a;o=da(s|0,4,0,0)|0|0;d=iw(h|0,f|0,4,0)|0;ea(p>>0|0,g>>>24|0,1,0);ea(k>>0|0,g>>>16|0,1,0);ea(l>>0|0,g>>>8|0,1,0);ea(m>>0|0,g|0,1,0);d=sc[(fa(da((da(o|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](o,p,4,d,C)|0;if(d)break a;o=da(s|0,4,0,0)|0|0;d=iw(h|0,f|0,8,0)|0;d=sc[(fa(da((da(o|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](o,14808,8,d,C)|0;if(d)break a;o=e+20|0;d=n;o=iw(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0,o|0,((o|0)<0)<<31>>31|0)|0;d=n;ea(d|0,o|0,4,0);ea(d+4|0,C|0,4,0);d=da(s|0,4,0,0)|0|0;d=qc[(fa(da((da(d|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](d,q)|0;if(d)break a;d=q;o=da(d+4|0,4,0,0)|0|0;e=n;f=da(e|0,4,0,0)|0|0;e=da(e+4|0,4,0,0)|0|0;if((o|0)>(e|0)|((o|0)==(e|0)?(da(d|0,4,0,0)|0|0)>>>0>f>>>0:0)?(r=da(s|0,4,0,0)|0|0,r=$b[(fa(da((da(r|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,63|0)|0)&63](r,f,e)|0,(r|0)!=0):0){d=r;break a}}d=yl(a,0)|0;if(d)break a;e=a+204|0;d=zl(a,ul(da(e|0,4,0,0)|0|0)|0)|0;if(d)break a;d=da(e|0,4,0,0)|0|0;e=da(d|0,4,0,0)|0|0;if(e)do{wl(e);e=da(d|0,4,0,0)|0|0}while((e|0)!=0);e=da(a+24|0,4,0,0)|0|0;if(e>>>0>(da(a+32|0,4,0,0)|0|0)>>>0){d=Al(a,e-((e|0)==(((da(2514*4|0,4,0,0)|0|0)/(da(a+152|0,4,0,0)|0|0)|0)+1|0)&1)|0)|0;if(!(d|c))t=46}else if(!c)t=46;else break;if((t|0)==46)d=Hg(a,b)|0;if(d)break a}else{d=da(a+88|0,4,0,0)|0|0;if(d)do{ea(d+16|0,1|0,4,0);d=da(d+44|0,4,0,0)|0|0}while((d|0)!=0)}while(0);if(!(da(a+208|0,4,0,0)|0)){ea(u>>0|0,5|0,1,0);d=0}else d=0}else d=0}while(0);i=v;return d|0}function Hg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=a+60|0;e=da(d|0,4,0,0)|0|0;f=da(e|0,4,0,0)|0|0;if(!((f|0)!=0?(c=$b[(fa(da(f+40|0,4,0,0)|0|0,63|0)|0)&63](e,21,b)|0,!((c|0)==0|(c|0)==12)):0))if(!(da(a+7>>0|0,1,0,0)|0)){c=da(d|0,4,0,0)|0|0;c=qc[(fa(da((da(c|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](c,da(a+11>>0|0,1,0,1)|0|0)|0}else c=0;return c|0}function Ig(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=da(a+8>>0|0,1,0,0)|0|0;do if(!(d<<24>>24))c=0;else{h=da(a+4|0,4,0,0)|0|0;ea(h+4|0,da(a|0,4,0,0)|0|0,4,0);if(d<<24>>24==2){e=da(h|0,4,0,0)|0|0;f=e+40|0;d=da(f|0,4,0,0)|0|0;do if(!d){d=e+16|0;if(((da(d>>0|0,1,0,0)|0|0)==2?(da(e+4>>0|0,1,0,0)|0|0)!=0:0)?(da(e+5>>0|0,1,0,0)|0|0)==1:0){ea(d>>0|0,1|0,1,0);break}c=e+100|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0);c=Bl(e,da(e+19>>0|0,1,0,1)|0|0,1)|0;e=c&255;if((e|0)==10|(e|0)==13){ea(f|0,c|0,4,0);ea(d>>0|0,6|0,1,0);g=10}else g=10}else{c=d;g=10}while(0);if((g|0)==10?(c|0)!=0&(b|0)==0:0)break;c=a+20|0;ea(c|0,(da(c|0,4,0,0)|0|0)+-1|0,4,0);ea(h+20>>0|0,1|0,1,0);c=h+60|0;di(da(c|0,4,0,0)|0|0);ea(c|0,0|0,4,0)}Cl(a);c=0}while(0);return c|0}function Jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();e=n;a:do if((da(a+8>>0|0,1,0,0)|0|0)==2){m=da(a+4|0,4,0,0)|0|0;ea(m+4|0,da(a|0,4,0,0)|0|0,4,0);do if(da(m+17>>0|0,1,0,0)|0){l=da(m|0,4,0,0)|0|0;c=m+8|0;a=da(c|0,4,0,0)|0|0;if(a)do{k=a+72|0;ea(k>>0|0,(da(k>>0|0,1,0,1)|0)&251|0,1,0);a=da(a+8|0,4,0,0)|0|0}while((a|0)!=0);if(!(da(m+18>>0|0,1,0,0)|0)){k=m+44|0;d=da(k|0,4,0,0)|0|0;if(d>>>0<2)a=0;else{a=d+-2|0;a=a-((a>>>0)%(((((da(m+36|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;a=((a+1|0)==(((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(m+32|0,4,0,0)|0|0)>>>0)|0|0)?3:2)+a|0}if((a|0)!=(d|0)?(d|0)!=((((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(m+32|0,4,0,0)|0|0)>>>0)|0)+1|0):0){f=m+12|0;g=da((da(f|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;g=(da(g+37>>0|0,1,0,1)|0)<<16|(da(g+36>>0|0,1,0,1)|0)<<24|(da(g+38>>0|0,1,0,1)|0)<<8|(da(g+39>>0|0,1,0,1)|0);h=Dl(m,d,g)|0;if(h>>>0>d>>>0){ea(e|0,56396|0,4,0);ea(e+4|0,10788|0,4,0);ad(11,13600,e);a=11;break a}b:do if(h>>>0>>0){a=da(c|0,4,0,0)|0|0;c:do if(a){while(1){if(a)break;a=da(2*4|0,4,0,0)|0|0;if(!a)break c}a=El(a,0,0)|0;if(a){c=0;break b}}while(0);do{a=Fl(m,h,d,1)|0;d=d+-1|0;c=(a|0)==0}while(d>>>0>h>>>0&c)}else{c=1;a=0}while(0);if(((a|0)==101|c)&(g|0)!=0){a=Fg(da((da(f|0,4,0,0)|0|0)+68|0,4,0,0)|0|0)|0;g=(da((da(f|0,4,0,0)|0|0)+56|0,4,0,0)|0|0)+32|0;ea(g>>0|0,0|0,1,0);ea(g+1>>0|0,0|0,1,0);ea(g+2>>0|0,0|0,1,0);ea(g+3>>0|0,0|0,1,0);g=(da((da(f|0,4,0,0)|0|0)+56|0,4,0,0)|0|0)+36|0;ea(g>>0|0,0|0,1,0);ea(g+1>>0|0,0|0,1,0);ea(g+2>>0|0,0|0,1,0);ea(g+3>>0|0,0|0,1,0);g=da((da(f|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;ea(g+28>>0|0,h>>>24|0,1,0);ea(g+29>>0|0,h>>>16|0,1,0);ea(g+30>>0|0,h>>>8|0,1,0);ea(g+31>>0|0,h|0,1,0);ea(m+19>>0|0,1|0,1,0);ea(k|0,h|0,4,0)}if(!a)break;Gl(l)|0;break a}ea(e|0,56391|0,4,0);ea(e+4|0,10788|0,4,0);ad(11,13600,e);a=11;break a}}while(0);a=da(m|0,4,0,0)|0|0;if(da(m+19>>0|0,1,0,0)|0)ea(a+24|0,da(m+44|0,4,0,0)|0|0,4,0);a=Gg(a,b,0)|0}else a=0;while(0);i=n;return a|0}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;h=i;i=i+16|0;if((i|0)>=(j|0))ba();e=h;g=da(a+4|0,4,0,0)|0|0;ea(g+4|0,da(a|0,4,0,0)|0|0,4,0);a:do if(!b){b=da(g+8|0,4,0,0)|0|0;if(b){while(1){if(b)break;b=da(2*4|0,4,0,0)|0|0;if(!b)break a}b=El(b,0,0)|0;d=(b|0)==0;if(!d){d=d?c:0;f=6}}}else{d=c;f=6}while(0);if((f|0)==6)Hl(a,b,d)|0;if((da(a+8>>0|0,1,0,0)|0|0)==2){Gl(da(g|0,4,0,0)|0|0)|0;if(!(cl(g,1,e,0)|0)){b=da(e|0,4,0,0)|0|0;d=da(b+56|0,4,0,0)|0|0;d=(da(d+29>>0|0,1,0,1)|0)<<16|(da(d+28>>0|0,1,0,1)|0)<<24|(da(d+30>>0|0,1,0,1)|0)<<8|(da(d+31>>0|0,1,0,1)|0);if(!d)d=da((da(g|0,4,0,0)|0|0)+24|0,4,0,0)|0|0;ea(g+44|0,d|0,4,0);if(b)Ag(da(b+68|0,4,0,0)|0|0)}ea(g+20>>0|0,1|0,1,0);d=g+60|0;di(da(d|0,4,0,0)|0|0);ea(d|0,0|0,4,0)}Cl(a);i=h;return}function Lg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=a+76|0;if((da(g|0,4,0,0)|0|0)==1691352191?(Il(a)|0)==0:0){Jl(a,0);Kl(a);f=a+20|0;h=a+16|0;b=da(h|0,4,0,0)|0|0;if((da(f|0,4,0,0)|0|0)>0){e=0;do{d=b+(e<<4)+4|0;c=da(d|0,4,0,0)|0|0;if((c|0)!=0?(Ll(c),ea(d|0,0|0,4,0),(e|0)!=1):0)ea(b+(e<<4)+12|0,0|0,4,0);e=e+1|0;b=da(h|0,4,0,0)|0|0}while((e|0)<(da(f|0,4,0,0)|0|0))}b=da(b+28|0,4,0,0)|0|0;if(b)pl(b);ql(a);rl(a);e=0;do{b=da(a+(e<<2)+336|0,4,0,0)|0|0;if(b)do{d=b;b=da(b+28|0,4,0,0)|0|0;if(d)do{Ml(a,d);c=d;d=da(d+8|0,4,0,0)|0|0;lg(a,c)}while((d|0)!=0)}while((b|0)!=0);e=e+1|0}while((e|0)!=23);c=a+428|0;b=da(a+436|0,4,0,0)|0|0;if(b)do{e=da(b+8|0,4,0,0)|0|0;d=da(e+16|0,4,0,0)|0|0;if(d)bc[(fa(d|0,31|0)|0)&31](da(e+8|0,4,0,0)|0|0);d=da(e+36|0,4,0,0)|0|0;if(d)bc[(fa(d|0,31|0)|0)&31](da(e+28|0,4,0,0)|0|0);d=da(e+56|0,4,0,0)|0|0;if(d)bc[(fa(d|0,31|0)|0)&31](da(e+48|0,4,0,0)|0|0);lg(a,e);b=da(b|0,4,0,0)|0|0}while((b|0)!=0);Nl(c);e=a+308|0;b=da(a+316|0,4,0,0)|0|0;if(b)do{d=da(b+8|0,4,0,0)|0|0;c=da(d+12|0,4,0,0)|0|0;if(c)bc[(fa(c|0,31|0)|0)&31](da(d+8|0,4,0,0)|0|0);lg(a,d);b=da(b|0,4,0,0)|0|0}while((b|0)!=0);Nl(e);ea(a+52|0,0|0,4,0);c=a+236|0;b=da(c|0,4,0,0)|0|0;do if(b){d=b+8|0;if(!((da(d|0,2,0,0)|0)&9312)){ea(d|0,1|0,2,0);break}else{ug(b);b=da(c|0,4,0,0)|0|0;break}}else b=0;while(0);Lh(b);d=a+168|0;if((da(d|0,4,0,0)|0|0)>0){b=a+172|0;c=0;do{e=da(a|0,4,0,0)|0|0;ic[(fa(da(e+52|0,4,0,0)|0|0,15|0)|0)&15](e,da((da(b|0,4,0,0)|0|0)+(c<<2)|0,4,0,0)|0|0);c=c+1|0}while((c|0)<(da(d|0,4,0,0)|0|0))}else b=a+172|0;lg(a,da(b|0,4,0,0)|0|0);ea(g|0,-1254786768|0,4,0);lg(a,da((da(h|0,4,0,0)|0|0)+28|0,4,0,0)|0|0);ea(g|0,-1623446221|0,4,0);if(da(a+251>>0|0,1,0,0)|0)Vc(da(a+276|0,4,0,0)|0|0);Vc(a)}return}function Mg(a){a=a|0;var b=0;b=da(a+40|0,4,0,0)|0|0;if((b|0)==1369188723|(b|0)==-1108210269)b=Og(a)|0;else b=0;Ol(a);return b|0}function Ng(a,b){a=a|0;b=b|0;do if(a)if((da(a+65>>0|0,1,0,0)|0|0)!=0|(b|0)==3082){Pl(a);a=7;break}else{a=(da(a+56|0,4,0,0)|0)&b;break}else a=b&255;while(0);return a|0}function Og(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();c=e;d=da(a|0,4,0,0)|0|0;Ql(a)|0;if((da(a+76|0,4,0,0)|0|0)>-1){gh(a)|0;b=a+44|0;lg(d,da(b|0,4,0,0)|0|0);ea(b|0,0|0,4,0);b=a+88|0;c=da(b|0,2,0,0)|0|0;if(c&16)ea(b|0,c|8|0,2,0)}else{b=da(a+80|0,4,0,0)|0|0;if((b|0)!=0?((da(a+88|0,2,0,0)|0)&8)!=0:0){f=a+44|0;g=da(f|0,4,0,0)|0|0;ea(c|0,g|0,4,0);tg(d,b,(g|0)!=0?10344:0,c);lg(d,da(f|0,4,0,0)|0|0);ea(f|0,0|0,4,0)}}b=a+44|0;lg(da(a|0,4,0,0)|0|0,da(b|0,4,0,0)|0|0);ea(b|0,0|0,4,0);ea(a+20|0,0|0,4,0);b=a+136|0;ea(b|0,0|0,4,0);ea(b+4|0,0|0,4,0);ea(a+40|0,649915045|0,4,0);i=e;return (da(d+56|0,4,0,0)|0)&(da(a+80|0,4,0,0)|0)|0}function Pg(a){a=a|0;var b=0;if((da(a+8|0,2,0,0)|0)&9312)ug(a);b=a+24|0;if(da(b|0,4,0,0)|0){lg(da(a+32|0,4,0,0)|0|0,da(a+20|0,4,0,0)|0|0);ea(b|0,0|0,4,0)}ea(a+16|0,0|0,4,0);return}function Qg(a){a=a|0;var b=0,c=0,d=0;b=a+8|0;if((da(b|0,2,0,0)|0)&16384){c=a+12|0;d=(da(a|0,4,0,0)|0|0)+(da(c|0,4,0,0)|0|0)|0;if(!(dh(a,(d|0)<1?1:d,1)|0)){ew((da(a+16|0,4,0,0)|0|0)+(da(c|0,4,0,0)|0|0)|0,0,da(a|0,4,0,0)|0|0)|0;ea(c|0,(da(c|0,4,0,0)|0|0)+(da(a|0,4,0,0)|0|0)|0,4,0);ea(b|0,(da(b|0,2,0,1)|0|0)&48639|0,2,0);b=0}else b=7}else b=0;return b|0}function Rg(a,b){a=a|0;b=b|0;var c=0;do if(a){c=da(a+8|0,2,0,0)|0|0;if((c&514)==514?(da(a+10>>0|0,1,0,0)|0|0)==b<<24>>24:0){c=da(a+16|0,4,0,0)|0|0;break}if(!(c&1))c=Rl(a,b)|0;else c=0}else c=0;while(0);return c|0}function Sg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;d=da(c|0,2,0,0)|0|0;if(!(d&16))if(!(Rg(a,b)|0))c=0;else{d=da(c|0,2,0,0)|0|0;e=4}else e=4;if((e|0)==4){c=da(a+12|0,4,0,0)|0|0;if(d&16384)c=(da(a|0,4,0,0)|0|0)+c|0}return c|0}function Tg(a){a=a|0;var b=0.0,c=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;c=da(a+8|0,2,0,1)|0|0;do if(!(c&8)){if(c&4){c=a;b=+((da(c|0,4,0,0)|0|0)>>>0)+4294967296.0*+(da(c+4|0,4,0,0)|0|0);break}if(!(c&18))b=0.0;else{ea(d|0,+(0.0),8,1);Sl(da(a+16|0,4,0,0)|0|0,d,da(a+12|0,4,0,0)|0|0,da(a+10>>0|0,1,0,0)|0|0)|0;b=+(+da(d|0,8,1,0))}}else b=+(+da(a|0,8,1,0));while(0);i=e;return +b}function Ug(a){a=a|0;var b=0.0,c=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;c=da(a+8|0,2,0,1)|0|0;do if(!(c&4)){if(!(c&8)){if(!(c&18)){a=0;c=0;break}c=d;ea(c|0,0|0,4,0);ea(c+4|0,0|0,4,0);Tl(da(a+16|0,4,0,0)|0|0,d,da(a+12|0,4,0,0)|0|0,da(a+10>>0|0,1,0,0)|0|0)|0;c=d;a=da(c+4|0,4,0,0)|0|0;c=da(c|0,4,0,0)|0|0;break}b=+(+da(a|0,8,1,0));if(!(b<=-9223372036854775808.0))if(!(b>=9223372036854775808.0)){a=+N(b)>=1.0?(b>0.0?~~+$(+M(b/4294967296.0),4294967295.0)>>>0:~~+Z((b-+(~~b>>>0))/4294967296.0)>>>0):0;c=~~b>>>0}else{a=2147483647;c=-1}else{a=-2147483648;c=0}}else{c=a;a=da(c+4|0,4,0,0)|0|0;c=da(c|0,4,0,0)|0|0}while(0);C=a;i=e;return c|0}function Vg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if((Wg(da(a|0,4,0,0)|0|0,b,c,d,e)|0)==18){ea(a+20|0,18|0,4,0);ea(a+25>>0|0,1|0,1,0);Wg(da(a|0,4,0,0)|0|0,10096,-1,1,0)|0}return}function Wg(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,k=0,l=0,m=0,n=0;a:do if(!b){f=a+8|0;if(!((da(f|0,2,0,0)|0)&9312)){ea(f|0,1|0,2,0);f=0;break}else{ug(a);f=0;break}}else{k=a+32|0;f=da(k|0,4,0,0)|0|0;if(!f)n=1e9;else n=da(f+88|0,4,0,0)|0|0;m=d<<24>>24==0;j=m?16:2;if((c|0)<0){b:do if(d<<24>>24!=1)if((n|0)<0)g=0;else{c=0;while(1){g=c+2|0;if(!((da(b+(c|1)>>0|0,1,0,0)|0|(da(b+c>>0|0,1,0,0)|0))<<24>>24)){g=c;break b}if((g|0)>(n|0))break;else c=g}}else{g=b;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;g=g-b&1073741823;g=(g|0)>(n|0)?n+1|0:g}while(0);l=g;i=(j&65535|512)&65535}else{l=c;i=j}do if((e|0)==(-1|0)){if(!(i&512))f=l;else f=l+(d<<24>>24==1?1:2)|0;if((l|0)>(n|0)){f=18;break a}if(eh(a,(f|0)>32?f:32)|0){f=7;break a}jw(da(a+16|0,4,0,0)|0|0,b|0,f|0)|0;j=a+8|0;f=i}else{c=(e|0)==75;h=a+8|0;if(!(((da(h|0,2,0,0)|0)&9312)==0?(da(a+24|0,4,0,0)|0|0)==0:0))Pg(a);ea(a+16|0,b|0,4,0);if(!c){ea(a+36|0,e|0,4,0);j=h;f=(i&65535|((e|0)==0?2048:1024))&65535;break}ea(a+20|0,b|0,4,0);f=da(k|0,4,0,0)|0|0;do if(!f)f=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](b)|0;else{if((da(f+276|0,4,0,0)|0|0)>>>0<=b>>>0?(da(f+280|0,4,0,0)|0|0)>>>0>b>>>0:0){f=da(f+248|0,2,0,1)|0|0;break}f=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](b)|0}while(0);ea(a+24|0,f|0,4,0);j=h;f=i}while(0);i=a+12|0;ea(i|0,l|0,4,0);ea(j|0,f|0,2,0);b=m?1:d;h=a+10|0;ea(h>>0|0,b|0,1,0);do if(b<<24>>24!=1&(l|0)>1){c=a+16|0;g=da(c|0,4,0,0)|0|0;f=da(g>>0|0,1,0,0)|0|0;g=da(g+1>>0|0,1,0,0)|0|0;if(!(f<<24>>24==-1&g<<24>>24==-2))if(g<<24>>24!=-1|f<<24>>24!=-2)break;else f=3;else f=2;if(Ul(a)|0){f=7;break a}b=(da(i|0,4,0,0)|0|0)+-2|0;ea(i|0,b|0,4,0);e=da(c|0,4,0,0)|0|0;kw(e|0,e+2|0,b|0)|0;ea((da(c|0,4,0,0)|0|0)+(da(i|0,4,0,0)|0|0)>>0|0,0|0,1,0);ea((da(c|0,4,0,0)|0|0)+((da(i|0,4,0,0)|0|0)+1)>>0|0,0|0,1,0);ea(j|0,da(j|0,2,0,1)|0|512|0,2,0);ea(h>>0|0,f|0,1,0)}while(0);f=(l|0)>(n|0)?18:0}while(0);return f|0}function Xg(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f+8|0;e=f;c=a+8|0;if(!((da(c|0,2,0,0)|0)&9312))ea(c|0,1|0,2,0);else ug(a);ea(d|0,+b,8,1);ea(e|0,+(+(+da(d|0,8,1,0))),8,1);if(!(+(+da(d|0,8,1,0))!=+(+da(e|0,8,1,0)))){ea(a|0,+b,8,1);ea(c|0,8|0,2,0)}i=f;return}function Yg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=a+8|0;if(!((da(d|0,2,0,0)|0)&9312))ea(d|0,1|0,2,0);else ug(a);ea(a|0,b|0,4,0);ea(a+4|0,c|0,4,0);ea(d|0,4|0,2,0);return}function Zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;if((da(c|0,2,0,0)|0)&9312)ug(a);ea(a+0|0,da(b+0|0,4,0,0)|0|0,4,0);ea(a+4|0,da(b+4|0,4,0,0)|0|0,4,0);ea(a+8|0,da(b+8|0,4,0,0)|0|0,4,0);ea(a+12|0,da(b+12|0,4,0,0)|0|0,4,0);ea(a+16|0,da(b+16|0,4,0,0)|0|0,4,0);e=da(c|0,2,0,1)|0|0;d=e&64511;ea(c|0,d|0,2,0);if((e&18|0)!=0?((da(b+8|0,2,0,0)|0)&2048)==0:0){ea(c|0,d|4096|0,2,0);c=Ul(a)|0}else c=0;return c|0}function _g(a,b){a=a|0;b=b|0;var c=0;c=a+8|0;if(!(((da(c|0,2,0,0)|0)&9312)==0?(da(a+24|0,4,0,0)|0|0)==0:0))Pg(a);ea(c|0,16400|0,2,0);ea(a+12|0,0|0,4,0);ea(a|0,((b|0)<0?0:b)|0,4,0);ea(a+10>>0|0,1|0,1,0);ea(a+16|0,0|0,4,0);return}function $g(a){a=a|0;var b=0,c=0;c=i;i=i+16|0;if((i|0)>=(j|0))ba();b=c;if(a)if(!(da(a|0,4,0,0)|0)){ad(21,47360,b);a=1}else a=0;else{ad(21,47320,b);a=1}i=c;return a|0}function ah(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;if((da(a|0,4,0,0)|0|0)>1?(c=da(a+72|0,4,0,0)|0|0,(c|0)!=0):0)c=qc[(fa(c|0,127|0)|0)&127](a,b)|0;else{c=qc[(fa(da(a+64|0,4,0,0)|0|0,127|0)|0)&127](a,d)|0;f=+(+da(d|0,8,1,0))*864.0e5;a=+N(f)>=1.0?(f>0.0?~~+$(+M(f/4294967296.0),4294967295.0)>>>0:~~+Z((f-+(~~f>>>0))/4294967296.0)>>>0):0;ea(b|0,~~f>>>0|0,4,0);ea(b+4|0,a|0,4,0)}i=e;return c|0}function bh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;a:do if((a|0)!=0&(b|0)!=0){f=a+(b*40|0)|0;g=da(a+32|0,4,0,0)|0|0;d=g+65|0;e=da(d>>0|0,1,0,0)|0|0;if(da(g+520|0,4,0,0)|0){b=a;while(1){if(da(b+24|0,4,0,0)|0)lg(g,da(b+20|0,4,0,0)|0|0);b=b+40|0;if(b>>>0>=f>>>0)break a}}do{b=a+8|0;if(!((da(b|0,2,0,0)|0)&9312)){c=a+24|0;if(da(c|0,4,0,0)|0){lg(g,da(a+20|0,4,0,0)|0|0);ea(c|0,0|0,4,0)}}else Pg(a);ea(b|0,128|0,2,0);a=a+40|0}while(a>>>0>>0);ea(d>>0|0,e|0,1,0)}while(0);return}function ch(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e;ea(f|0,d|0,4,0);d=Vk(b,c,f)|0;lg(b,da(a|0,4,0,0)|0|0);ea(a|0,d|0,4,0);i=e;return}function dh(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,k=0,l=0;i=a+24|0;d=da(i|0,4,0,0)|0|0;do if((d|0)<(b|0)){h=(b|0)<32?32:b;b=(d|0)>0;if((c|0)!=0&b?(e=a+16|0,f=da(e|0,4,0,0)|0|0,g=a+20|0,(f|0)==(da(g|0,4,0,0)|0|0)):0){d=Vl(da(a+32|0,4,0,0)|0|0,f,h,((h|0)<0)<<31>>31)|0;ea(g|0,d|0,4,0);ea(e|0,d|0,4,0);c=0}else{d=a+32|0;if(b){b=a+20|0;lg(da(d|0,4,0,0)|0|0,da(b|0,4,0,0)|0|0)}else b=a+20|0;d=lh(da(d|0,4,0,0)|0|0,h,((h|0)<0)<<31>>31)|0;ea(b|0,d|0,4,0)}if(!d){c=a+8|0;if(!((da(c|0,2,0,0)|0)&9312))ea(c|0,1|0,2,0);else ug(a);ea(a+16|0,0|0,4,0);ea(i|0,0|0,4,0);c=7;break}b=da(a+32|0,4,0,0)|0|0;do if(!b)b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](d)|0;else{if((da(b+276|0,4,0,0)|0|0)>>>0<=d>>>0?(da(b+280|0,4,0,0)|0|0)>>>0>d>>>0:0){b=da(b+248|0,2,0,1)|0|0;break}b=kc[(fa(da(8744+48|0,4,0,0)|0|0,127|0)|0)&127](d)|0}while(0);ea(i|0,b|0,4,0);l=21}else l=21;while(0);if((l|0)==21){if(((c|0)!=0?(j=da(a+16|0,4,0,0)|0|0,(j|0)!=0):0)?(k=da(a+20|0,4,0,0)|0|0,(j|0)!=(k|0)):0)jw(k|0,j|0,da(a+12|0,4,0,0)|0|0)|0;b=a+8|0;c=da(b|0,2,0,0)|0|0;if(!(c&1024))d=a+16|0;else{d=a+16|0;bc[(fa(da(a+36|0,4,0,0)|0|0,31|0)|0)&31](da(d|0,4,0,0)|0|0);c=da(b|0,2,0,0)|0|0}ea(d|0,da(a+20|0,4,0,0)|0|0,4,0);ea(b|0,c&58367|0,2,0);c=0}return c|0}function eh(a,b){a=a|0;b=b|0;if((da(a+24|0,4,0,0)|0|0)<(b|0))a=dh(a,b,0)|0;else{ea(a+16|0,da(a+20|0,4,0,0)|0|0,4,0);a=a+8|0;ea(a|0,(da(a|0,2,0,1)|0|0)&13|0,2,0);a=0}return a|0} -function lq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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,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;_=i;i=i+192|0;if((i|0)>=(j|0))ba();V=_+48|0;T=_+24|0;S=_+160|0;z=_+156|0;J=_+152|0;D=_+148|0;M=_+144|0;G=_+140|0;y=_+16|0;Y=_;p=_+128|0;o=_+116|0;q=_+96|0;e=_+88|0;Z=a+8|0;W=da(Z|0,4,0,0)|0|0;X=da(a|0,4,0,0)|0|0;ea(Y+0|0,da(9286*4|0,4,0,0)|0|0,4,0);ea(Y+4|0,da(9287*4|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(9288*4|0,4,0,0)|0|0,4,0);a:do switch(b|0){case 35:{e=da(a+(X<<4)+20|0,4,0,0)|0|0;d=da(a+(X<<4)+16|0,4,0,0)|0|0;if((e|0)==5?(Ec(d,20456,5)|0)==0:0){ea(Y>>0|0,32|0,1,0);break a}ea(Y>>0|0,0|0,1,0);ea(V|0,e|0,4,0);ea(V+4|0,d|0,4,0);sh(W,20464,V);break}case 38:{V=da(a+(X+-2<<4)+16|0,4,0,0)|0|0;ea(Y|0,V|0,4,0);ea(Y+4|0,(da(W+504|0,4,0,0)|0|0)-V+(da(W+508|0,4,0,0)|0|0)|0,4,0);break}case 9:{e=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;d=da(W|0,4,0,0)|0|0;if((Rq(W,22,37104,0,0)|0)==0?(w=Nq(W)|0,(w|0)!=0):0){if((e|0)!=7?(x=d+20|0,(da(x|0,4,0,0)|0|0)>0):0){e=(e|0)==9?2:1;d=w+96|0;g=0;do{vh(w,4,g,e,0)|0;ea(d|0,da(d|0,4,0,0)|0|1<>0|0,0|0,1,0);U=a+(X<<4)+16|0;W=da(U+4|0,4,0,0)|0|0;V=Y;ea(V|0,da(U|0,4,0,0)|0|0,4,0);ea(V+4|0,W|0,4,0);break}case 222:case 219:case 107:case 84:case 69:case 30:case 29:{ea(Y|0,1|0,4,0);break}case 32:{Uq(W,a+(X+-2<<4)+16|0,a+(X+-1<<4)+16|0,da(a+(X<<4)+16>>0|0,1,0,0)|0|0,0);break}case 33:{V=a+(X<<4)+16|0;Uq(W,0,0,0,da(V|0,4,0,0)|0|0);Lk(da(W|0,4,0,0)|0|0,da(V|0,4,0,0)|0|0,1);break}case 34:{ea(Y>>0|0,0|0,1,0);break}case 62:{Zq(W,0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0);break}case 63:{_q(W,0,0,0,0,da(a+(X<<4)+16|0,4,0,0)|0|0,0,0,0,0)|0;break}case 74:{ea(Y|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+4|0,255|0,4,0);break}case 76:{ea(Y|0,7|0,4,0);break}case 75:{ea(Y|0,(da(a+(X<<4)+16|0,4,0,0)|0)<<8|0,4,0);ea(Y+4|0,65280|0,4,0);break}case 77:{ea(Y|0,8|0,4,0);break}case 78:{ea(Y|0,9|0,4,0);break}case 79:{ea(Y|0,6|0,4,0);break}case 80:{ea(Y|0,0|0,4,0);break}case 103:case 100:case 98:case 82:{ea(Y|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);break}case 86:{ea(Y+4|0,0|0,4,0);ea(Y|0,0|0,4,0);break}case 6:{ea(W+450>>0|0,1|0,1,0);ea(W+440|0,0|0,4,0);break}case 8:{q=da(W|0,4,0,0)|0|0;t=q+65|0;if(((da(t>>0|0,1,0,0)|0|0)==0?(da(W+18>>0|0,1,0,0)|0|0)==0:0)?(Q=W+64|0,(da(Q|0,4,0,0)|0|0)==0):0){s=Nq(W)|0;if(s){do{}while((Oq(s,61)|0)!=0);vh(s,24,0,0,0)|0;do if(!(da(t>>0|0,1,0,0)|0)){h=W+332|0;n=da(h|0,4,0,0)|0|0;if((n|0)==0?(da(W+316|0,4,0,0)|0|0)==0:0)break;k=s+32|0;l=da(k|0,4,0,0)|0|0;if(l)ea((da(s+4|0,4,0,0)|0|0)+8|0,l|0,4,0);ea((da(s+24|0,4,0,0)|0|0)+88|0,l+-1|0,4,0);o=q+20|0;b:do if((da(o|0,4,0,0)|0|0)>0){c=s+96|0;d=W+328|0;e=q+16|0;f=q+145|0;g=s+4|0;m=0;while(1){p=1<>0|0,1,0,0)|0|0)==0):0)?(F=da(g|0,4,0,0)|0|0,(F|0)!=0):0)ea(F+(((da(k|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,1|0,1,0);m=m+1|0;if((m|0)>=(da(o|0,4,0,0)|0|0))break b;n=da(h|0,4,0,0)|0|0}}while(0);k=W+452|0;if((da(k|0,4,0,0)|0|0)>0){h=W+520|0;g=0;do{l=da((da((da(h|0,4,0,0)|0|0)+(g<<2)|0,4,0,0)|0|0)+60|0,4,0,0)|0|0;c:do if(!l)l=0;else while(1){if((da(l|0,4,0,0)|0|0)==(q|0))break c;l=da(l+24|0,4,0,0)|0|0;if(!l){l=0;break}}while(0);wh(s,vh(s,146,0,0,0)|0,l,-10);g=g+1|0}while((g|0)<(da(k|0,4,0,0)|0|0))}ea(k|0,0|0,4,0);k=Nq(W)|0;h=W+396|0;if((da(h|0,4,0,0)|0|0)>0){g=W+400|0;f=0;do{T=da(g|0,4,0,0)|0|0;V=da(T+(f<<4)+12|0,4,0,0)|0|0;wh(k,vh(k,145,da(T+(f<<4)|0,4,0,0)|0|0,da(T+(f<<4)+4|0,4,0,0)|0|0,da(T+(f<<4)+8>>0|0,1,0,1)|0|0)|0,V,-2);f=f+1|0}while((f|0)<(da(h|0,4,0,0)|0|0))}d=da(W+8|0,4,0,0)|0|0;l=da(W+404|0,4,0,0)|0|0;if(l){c=(da(W|0,4,0,0)|0|0)+16|0;m=d+32|0;n=d+4|0;do{h=da(l+8|0,4,0,0)|0|0;k=da(l+12|0,4,0,0)|0|0;Pq(W,0,h,da((da((da(c|0,4,0,0)|0|0)+(h<<4)+12|0,4,0,0)|0|0)+72|0,4,0,0)|0|0,54);h=k+1|0;vh(d,28,0,k,h)|0;g=da(m|0,4,0,0)|0|0;e=k+-1|0;f=da(da(l+4|0,4,0,0)|0|0,4,0,0)|0|0;wh(d,vh(d,97,0,e,0)|0,f,0);f=g+9|0;vh(d,108,0,f,0)|0;vh(d,47,0,0,k)|0;vh(d,78,e,g+7|0,k)|0;e=da(n|0,4,0,0)|0|0;if(e)ea(e+(((da(m|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,16|0,1,0);vh(d,103,0,h,0)|0;vh(d,47,0,1,k)|0;vh(d,16,0,f,0)|0;vh(d,9,0,g+2|0,0)|0;vh(d,25,0,k,0)|0;vh(d,61,0,0,0)|0;l=da(l|0,4,0,0)|0|0}while((l|0)!=0)}k=da(W+316|0,4,0,0)|0|0;if((k|0)!=0?(ea(W+23>>0|0,0|0,1,0),(da(k|0,4,0,0)|0|0)>0):0){h=k+4|0;g=0;do{V=da(h|0,4,0,0)|0|0;Qq(W,da(V+(g*20|0)|0,4,0,0)|0|0,da(V+(g*20|0)+16|0,4,0,0)|0|0);g=g+1|0}while((g|0)<(da(k|0,4,0,0)|0|0))}vh(s,16,0,1,0)|0}while(0);if((da(Q|0,4,0,0)|0|0)==0?(da(t>>0|0,1,0,0)|0|0)==0:0){if((da(W+404|0,4,0,0)|0|0)!=0?(R=W+68|0,(da(R|0,4,0,0)|0|0)==0):0)ea(R|0,1|0,4,0);zh(s,W);ea(W+12|0,101|0,4,0);ea(W+16>>0|0,0|0,1,0)}else U=48}else U=48;if((U|0)==48)ea(W+12|0,1|0,4,0);ea(W+68|0,0|0,4,0);ea(W+72|0,0|0,4,0);ea(W+76|0,0|0,4,0);ea(W+440|0,0|0,4,0);ea(W+332|0,0|0,4,0)}break}case 5:{ea(W+450>>0|0,0|0,1,0);ea(W+440|0,0|0,4,0);break}case 279:case 263:case 262:case 261:case 260:case 259:case 258:case 257:case 256:case 247:case 150:case 141:case 131:case 130:case 48:case 45:case 42:case 41:case 40:{U=a+(X<<4)+16|0;W=da(U+4|0,4,0,0)|0|0;V=Y;ea(V|0,da(U|0,4,0,0)|0|0,4,0);ea(V+4|0,W|0,4,0);break}case 44:{e=a+(X<<4)+16|0;d=da(W+484|0,4,0,0)|0|0;if((d|0)!=0?(g=da(d+38|0,2,0,0)|0|0,g<<16>>16>=1):0){V=(g<<16>>16)+-1|0;U=da(d+4|0,4,0,0)|0|0;W=Vq(da(W|0,4,0,0)|0|0,e)|0;ea(U+(V*24|0)+12|0,W|0,4,0);ea(U+(V*24|0)+21>>0|0,Wq(W,U+(V*24|0)+22|0)|0|0,1,0)}break}case 58:{ea(p|0,Yq(W,157,da(a+(X<<4)+16|0,4,0,0)|0|0,0,0)|0|0,4,0);ea(p+4|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);ea(p+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);Xq(W,p);break}case 59:{V=a+(X<<4)+16|0;ea(o|0,Yq(W,97,0,0,V)|0|0,4,0);V=da(V|0,4,0,0)|0|0;ea(o+4|0,V|0,4,0);ea(o+8|0,V+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);Xq(W,o);break}case 61:{d=da(a+(X<<4)+16|0,4,0,0)|0|0;e=da(W+484|0,4,0,0)|0|0;if((e|0)!=0?(h=da(e+38|0,2,0,0)|0|0,h<<16>>16>=1):0)ea((da(e+4|0,4,0,0)|0|0)+(((h<<16>>16)+-1|0)*24|0)+20>>0|0,d|0,1,0);break}case 117:case 115:case 16:case 15:case 14:{ea(Y|0,da(a+(X<<4)+14>>0|0,1,0,1)|0|0,4,0);break}case 18:case 17:{if((Rq(W,22,37136,0,0)|0)==0?(s=Nq(W)|0,(s|0)!=0):0)vh(s,3,1,0,0)|0;break}case 19:{if((Rq(W,22,37120,0,0)|0)==0?(r=Nq(W)|0,(r|0)!=0):0)vh(r,3,1,1,0)|0;break}case 39:{p=a+(X<<4)+16|0;n=da(W|0,4,0,0)|0|0;d=da(W+484|0,4,0,0)|0|0;d:do if(d){o=d+38|0;if((da(o|0,2,0,0)|0|0)>=(da(n+96|0,4,0,0)|0|0)){ea(V|0,da(d|0,4,0,0)|0|0,4,0);sh(W,36528,V);break}m=Vq(n,p)|0;if(m){k=da(o|0,2,0,0)|0|0;c=k<<16>>16;e:do if(k<<16>>16>0){l=da(9328+(da(m>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0|0;g=da(d+4|0,4,0,0)|0|0;h=m+1|0;e=0;while(1){f=da(g+(e*24|0)|0,4,0,0)|0|0;if(l<<24>>24==(da(9328+(da(f>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0|0)?(cd(h,f+1|0)|0)==0:0)break;e=e+1|0;if((e|0)>=(c|0))break e}ea(V|0,m|0,4,0);sh(W,36552,V);lg(n,m);break d}else g=da(d+4|0,4,0,0)|0|0;while(0);h=d+4|0;do if(!(c&7)){g=qo(n,g,(c*24|0)+192|0,0)|0;if(!g){lg(n,m);break d}else{ea(h|0,g|0,4,0);k=da(o|0,2,0,0)|0|0;break}}while(0);V=k<<16>>16;U=g+(V*24|0)|0;ea(U+0|0,0|0,4,0);ea(U+4|0,0|0,4,0);ea(U+8|0,0|0,4,0);ea(U+12|0,0|0,4,0);ea(U+16|0,0|0,4,0);ea(U+20|0,0|0,4,0);ea(U|0,m|0,4,0);ea(g+(V*24|0)+21>>0|0,65|0,1,0);ea(g+(V*24|0)+22>>0|0,1|0,1,0);ea(o|0,(da(o|0,2,0,0)|0|0)+1<<16>>16|0,2,0)}}while(0);T=p;V=da(T+4|0,4,0,0)|0|0;U=Y;ea(U|0,da(T|0,4,0,0)|0|0,4,0);ea(U+4|0,V|0,4,0);ea(W+324|0,0|0,4,0);break}case 46:{W=da(a+(X+-3<<4)+16|0,4,0,0)|0|0;ea(Y|0,W|0,4,0);ea(Y+4|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)-W|0,4,0);break}case 47:{W=da(a+(X+-5<<4)+16|0,4,0,0)|0|0;ea(Y|0,W|0,4,0);ea(Y+4|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)-W|0,4,0);break}case 49:{W=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;ea(Y|0,W|0,4,0);ea(Y+4|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)-W|0,4,0);break}case 92:case 54:{U=a+(X<<4)+16|0;V=da(U+4|0,4,0,0)|0|0;W=W+320|0;ea(W|0,da(U|0,4,0,0)|0|0,4,0);ea(W+4|0,V|0,4,0);break}case 57:case 55:{Xq(W,a+(X<<4)+16|0);break}case 64:{$q(W,da(a+(X+-1<<4)+16|0,4,0,0)|0|0);break}case 65:{ar(W,0,a+(X+-2<<4)+16|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0);break}case 66:{d=da(a+(X<<4)+16|0,4,0,0)|0|0;e=da(W+484|0,4,0,0)|0|0;if((e|0)!=0?(m=da(e+16|0,4,0,0)|0|0,(m|0)!=0):0)ea(m+24>>0|0,d|0,1,0);break}case 67:{g=da(W+484|0,4,0,0)|0|0;if((g|0)!=0?(A=(da(g+38|0,2,0,0)|0|0)+-1|0,n=da(W|0,4,0,0)|0|0,u=Vq(n,a+(X<<4)+16|0)|0,(u|0)!=0):0){if(!(br(W,u)|0)){lg(n,u);break a}k=g+4|0;lg(n,da((da(k|0,4,0,0)|0|0)+(A*24|0)+16|0,4,0,0)|0|0);ea((da(k|0,4,0,0)|0|0)+(A*24|0)+16|0,u|0,4,0);e=da(g+8|0,4,0,0)|0|0;if(e)do{if((da(da(e+4|0,4,0,0)|0|0,2,0,0)|0|0)==(A|0))ea(da(e+32|0,4,0,0)|0|0,da((da(k|0,4,0,0)|0|0)+(A*24|0)+16|0,4,0,0)|0|0,4,0);e=da(e+20|0,4,0,0)|0|0}while((e|0)!=0)}break}case 56:{Xq(W,a+(X+-1<<4)+16|0);break}case 7:{ea(W+450>>0|0,2|0,1,0);ea(W+440|0,0|0,4,0);break}case 226:{e=X+-1|0;d=a+(e<<4)+16|0;h=a+(X<<4)+16|0;g=or(da(W|0,4,0,0)|0|0,0,d,h)|0;k=X+-3|0;f=Yq(W,75,da(a+(k<<4)+16|0,4,0,0)|0|0,0,0)|0;ea(Y|0,f|0,4,0);if(!f){Co(da(W|0,4,0,0)|0|0,g);g=0}else{ea(f+20|0,jr(W,0,g,0,0,0,0,0,0,0)|0|0,4,0);g=da(Y|0,4,0,0)|0|0;V=g+4|0;ea(V|0,da(V|0,4,0,0)|0|2099200|0,4,0);xr(W,g)}if(da(a+(X+-2<<4)+16|0,4,0,0)|0)ea(Y|0,Yq(W,19,g,0,0)|0|0,4,0);ea(Y+4|0,da(a+(k<<4)+20|0,4,0,0)|0|0,4,0);c=da(h|0,4,0,0)|0|0;if(!c)c=(da(d|0,4,0,0)|0|0)+(da(a+(e<<4)+20|0,4,0,0)|0|0)|0;else c=c+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0;ea(Y+8|0,c|0,4,0);break}case 225:{e=X+-4|0;c=Yq(W,75,da(a+(e<<4)+16|0,4,0,0)|0|0,0,0)|0;ea(Y|0,c|0,4,0);if(!c){Lk(da(W|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,1);c=0}else{ea(c+20|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);c=da(Y|0,4,0,0)|0|0;V=c+4|0;ea(V|0,da(V|0,4,0,0)|0|2099200|0,4,0);xr(W,c)}if(da(a+(X+-3<<4)+16|0,4,0,0)|0)ea(Y|0,Yq(W,19,c,0,0)|0|0,4,0);ea(Y+4|0,da(a+(e<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 227:{c=Yq(W,20,0,0,0)|0;ea(Y|0,c|0,4,0);if(!c)Lk(da(W|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,1);else{ea(c+20|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);V=c+4|0;ea(V|0,da(V|0,4,0,0)|0|2099200|0,4,0);xr(W,c)}ea(Y+4|0,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 228:{d=Yq(W,136,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,0,0)|0;ea(Y|0,d|0,4,0);if(!d){Mk(da(W|0,4,0,0)|0|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0);Fk(da(W|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0)}else{e=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;c=da(a+(X+-2<<4)+16|0,4,0,0)|0|0;if(e)c=kr(W,c,e)|0;ea(d+20|0,c|0,4,0);xr(W,da(Y|0,4,0,0)|0|0)}ea(Y+4|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 291:case 240:{ea(Y|0,2|0,4,0);break}case 241:{ea(Y|0,0|0,4,0);break}case 239:{_q(W,a+(X+-7<<4)+16|0,a+(X+-6<<4)+16|0,or(da(W|0,4,0,0)|0|0,0,a+(X+-4<<4)+16|0,0)|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,da(a+(X+-10<<4)+16|0,4,0,0)|0|0,a+(X+-11<<4)+16|0,da(a+(X<<4)+16|0,4,0,0)|0|0,0,da(a+(X+-8<<4)+16|0,4,0,0)|0|0)|0;break}case 229:{ea(Y|0,kr(W,kr(W,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0)|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0|0,4,0);break}case 230:{ea(Y|0,kr(W,kr(W,0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0)|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0|0,4,0);break}case 237:{ea(Y|0,kr(W,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0|0,4,0);break}case 238:{ea(Y|0,kr(W,0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0|0,4,0);break}case 245:{c=kr(W,0,ur(W,0,a+(X+-1<<4)+16|0,1)|0)|0;ea(Y|0,c|0,4,0);lr(W,c,a+(X+-2<<4)+16|0,1);if(c){if((da(c|0,4,0,0)|0|0)>(da((da(W|0,4,0,0)|0|0)+96|0,4,0,0)|0|0)){ea(V|0,20632|0,4,0);sh(W,34544,V)}ea((da(c+4|0,4,0,0)|0|0)+(((da(c|0,4,0,0)|0|0)+-1|0)*20|0)+12>>0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,1,0)}break}case 244:{c=ur(W,0,a+(X+-1<<4)+16|0,1)|0;c=kr(W,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,c)|0;ea(Y|0,c|0,4,0);lr(W,c,a+(X+-2<<4)+16|0,1);if(c){if((da(c|0,4,0,0)|0|0)>(da((da(W|0,4,0,0)|0|0)+96|0,4,0,0)|0|0)){ea(V|0,20632|0,4,0);sh(W,34544,V)}ea((da(c+4|0,4,0,0)|0|0)+(((da(c|0,4,0,0)|0|0)+-1|0)*20|0)+12>>0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,1,0)}break}case 248:{n=da(a+(X<<4)+16|0,4,0,0)|0|0;k=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;m=da(W|0,4,0,0)|0|0;do if((da(m+65>>0|0,1,0,0)|0|0)==0?(Fn(W)|0)==0:0){h=n+12|0;d=aq(m,da(n+16|0,4,0,0)|0|0,da(h|0,4,0,0)|0|0)|0;if(!d){if(!k){ea(V|0,n|0,4,0);ea(V+4|0,0|0,4,0);sh(W,33056,V)}else yr(W,da(h|0,4,0,0)|0|0);ea(W+17>>0|0,1|0,1,0);break}if((da(d+51>>0|0,1,0,0)|0)&3){ea(V|0,0|0,4,0);sh(W,33080,V);break}k=da(d+24|0,4,0,0)|0|0;f:do if(k){h=da(m+20|0,4,0,0)|0|0;if((h|0)>0){g=da(m+16|0,4,0,0)|0|0;l=0;while(1){f=l+1|0;if((da(g+(l<<4)+12|0,4,0,0)|0|0)==(k|0)){f=l;break f}if((f|0)<(h|0))l=f;else break}}else f=0}else f=-1e6;while(0);k=da(d+12|0,4,0,0)|0|0;h=m+16|0;g=da((da(h|0,4,0,0)|0|0)+(f<<4)|0,4,0,0)|0|0;e=(f|0)==1?13184:13208;if(((Rq(W,9,e,0,g)|0)==0?(Rq(W,(f|0)==0?10:12,da(d|0,4,0,0)|0|0,da(k|0,4,0,0)|0|0,g)|0)==0:0)?(B=Nq(W)|0,(B|0)!=0):0){U=da(W+408|0,4,0,0)|0|0;U=(U|0)==0?W:U;zr(W,f);T=U+328|0;ea(T|0,da(T|0,4,0,0)|0|1<>0|0,da(U>>0|0,1,0,1)|0|1|0,1,0);U=da(d|0,4,0,0)|0|0;ea(V|0,da((da(h|0,4,0,0)|0|0)+(f<<4)|0,4,0,0)|0|0,4,0);ea(V+4|0,e|0,4,0);ea(V+8|0,U|0,4,0);Ar(W,33160,V);Br(W,f,28536,da(d|0,4,0,0)|0|0);Cr(W,f);Dr(W,da(d+40|0,4,0,0)|0|0,f);W=da(d|0,4,0,0)|0|0;wh(B,vh(B,125,f,0,0)|0,W,0)}}while(0);Co(m,n);break}case 246:{ea(Y|0,0|0,4,0);ea(Y+4|0,0|0,4,0);break}case 250:case 249:{c=Nq(W)|0;if(c){vh(c,13,0,0,0)|0;W=c+96|0;ea(W|0,da(W|0,4,0,0)|0|1|0,4,0)}break}case 251:{Er(W,a+(X+-1<<4)+16|0,a+(X<<4)+16|0,0,0);break}case 252:{Er(W,a+(X+-3<<4)+16|0,a+(X+-2<<4)+16|0,a+(X<<4)+16|0,0);break}case 253:{Er(W,a+(X+-4<<4)+16|0,a+(X+-3<<4)+16|0,a+(X+-1<<4)+16|0,0);break}case 254:{Er(W,a+(X+-3<<4)+16|0,a+(X+-2<<4)+16|0,a+(X<<4)+16|0,1);break}case 255:{Er(W,a+(X+-4<<4)+16|0,a+(X+-3<<4)+16|0,a+(X+-1<<4)+16|0,1);break}case 264:{c=da(a+(X+-3<<4)+16|0,4,0,0)|0|0;e=(da(a+(X<<4)+16|0,4,0,0)|0|0)-c+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0;d=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;U=W+488|0;r=da(U|0,4,0,0)|0|0;s=da(W|0,4,0,0)|0|0;ea(U|0,0|0,4,0);g:do if((da(W+64|0,4,0,0)|0|0)==0&(r|0)!=0){q=da(r|0,4,0,0)|0|0;f=r+20|0;n=da(f|0,4,0,0)|0|0;h:do if(n){m=da(s+20|0,4,0,0)|0|0;if((m|0)>0){k=da(s+16|0,4,0,0)|0|0;g=0;while(1){h=g+1|0;if((da(k+(g<<4)+12|0,4,0,0)|0|0)==(n|0))break h;if((h|0)<(m|0))g=h;else{g=h;break}}}else g=0}else g=-1e6;while(0);ea(r+28|0,d|0,4,0);p=(d|0)==0;if(!p){k=d;do{ea(k+4|0,r|0,4,0);k=da(k+32|0,4,0,0)|0|0}while((k|0)!=0)}ea(S|0,q|0,4,0);if(!q)k=0;else{k=q;while(1)if(!(da(k>>0|0,1,0,0)|0))break;else k=k+1|0;k=k-q&1073741823}ea(S+4|0,k|0,4,0);ea(T|0,W|0,4,0);o=s+16|0;n=da(o|0,4,0,0)|0|0;ea(T+12|0,da(n+(g<<4)|0,4,0,0)|0|0,4,0);ea(T+4|0,da(n+(g<<4)+12|0,4,0,0)|0|0,4,0);ea(T+16|0,10720|0,4,0);ea(T+20|0,S|0,4,0);n=(g|0)==1;ea(T+8|0,n&1|0,4,0);if(!p)do{if(er(T,da(d+8|0,4,0,0)|0|0)|0){d=0;e=r;break g}if(Fr(T,da(d+20|0,4,0,0)|0|0)|0){d=0;e=r;break g}if(Gr(T,da(d+24|0,4,0,0)|0|0)|0){d=0;e=r;break g}d=da(d+32|0,4,0,0)|0|0}while((d|0)!=0);if(!(Fr(T,da(r+12|0,4,0,0)|0|0)|0)){k=s+145|0;if(!(da(k>>0|0,1,0,0)|0)){h=Nq(W)|0;if(!h){d=0;e=r;break}U=da(W+408|0,4,0,0)|0|0;zr(W,g);U=((U|0)==0?W:U)+328|0;ea(U|0,da(U|0,4,0,0)|0|1<>0|0,0|0,1,0)}else l=0;U=da(r+4|0,4,0,0)|0|0;ea(V|0,da((da(o|0,4,0,0)|0|0)+(g<<4)|0,4,0,0)|0|0,4,0);ea(V+4|0,(n?13184:13208)|0,4,0);ea(V+8|0,q|0,4,0);ea(V+12|0,U|0,4,0);ea(V+16|0,l|0,4,0);Ar(W,30008,V);lg(s,l);Cr(W,g);ea(V|0,q|0,4,0);Hr(h,g,th(s,30072,V)|0);if(!(da(k>>0|0,1,0,0)|0)){d=0;e=r;break}}e=Hk((da((da(o|0,4,0,0)|0|0)+(g<<4)+12|0,4,0,0)|0|0)+40|0,q,r)|0;if(e){ea(s+65>>0|0,1|0,1,0);d=0;break}d=da(f|0,4,0,0)|0|0;if((d|0)==(da(r+24|0,4,0,0)|0|0)){d=an(d+8|0,da(r+4|0,4,0,0)|0|0,V)|0;if(!d)d=0;else d=da(d+8|0,4,0,0)|0|0;d=d+64|0;ea(r+32|0,da(d|0,4,0,0)|0|0,4,0);ea(d|0,r|0,4,0);d=0}else d=0}else{d=0;e=r}}else e=r;while(0);ig(s,e);Ek(s,d);break}case 265:{u=a+(X+-7<<4)+16|0;v=X+-6|0;w=a+(v<<4)+16|0;h=da(a+(X+-5<<4)+16|0,4,0,0)|0|0;x=X+-4|0;t=da(a+(x<<4)+16|0,4,0,0)|0|0;x=da(a+(x<<4)+20|0,4,0,0)|0|0;y=da(a+(X+-2<<4)+16|0,4,0,0)|0|0;z=da(a+(X<<4)+16|0,4,0,0)|0|0;d=da(a+(X+-8<<4)+16|0,4,0,0)|0|0;A=da(W|0,4,0,0)|0|0;r=(da(a+(X+-10<<4)+16|0,4,0,0)|0|0)!=0;do if(r)if(!(da(a+(v<<4)+20|0,4,0,0)|0)){ea(T|0,u|0,4,0);if(!y){k=0;l=0;break}else{n=1;U=483;break}}else{sh(W,29664,V);k=0;l=0;break}else{n=dr(W,u,w,T)|0;if((n|0)>-1&(y|0)!=0)U=483;else{k=0;l=0}}while(0);do if((U|0)==483){c=A+65|0;if(!(da(c>>0|0,1,0,0)|0)){p=A+145|0;if((da(p>>0|0,1,0,0)|0|0)!=0&(n|0)!=1){U=y+12|0;lg(A,da(U|0,4,0,0)|0|0);ea(U|0,0|0,4,0)}o=Ir(W,y)|0;if((da(p>>0|0,1,0,0)|0|0)==0?((o|0)!=0?(da(a+(v<<4)+20|0,4,0,0)|0|0)==0:0):0)n=(da(o+68|0,4,0,0)|0|0)==(da((da(A+16|0,4,0,0)|0|0)+28|0,4,0,0)|0|0)?1:n;if((da(c>>0|0,1,0,0)|0|0)==0?(K=da(T|0,4,0,0)|0|0,U=da(W|0,4,0,0)|0|0,ea(S|0,W|0,4,0),U=da(U+16|0,4,0,0)|0|0,ea(S+12|0,da(U+(n<<4)|0,4,0,0)|0|0,4,0),ea(S+4|0,da(U+(n<<4)+12|0,4,0,0)|0|0,4,0),ea(S+16|0,10720|0,4,0),ea(S+20|0,K|0,4,0),ea(S+8|0,(n|0)==1&1|0,4,0),(Jr(S,y)|0)==0):0){p=Ir(W,y)|0;if(!p){if((da(A+144>>0|0,1,0,0)|0|0)!=1){k=0;l=0;break}ea(A+146>>0|0,1|0,1,0);k=0;l=0;break}if((da(p+44>>0|0,1,0,0)|0)&16){sh(W,29712,V);k=0;l=0;break}l=Vq(A,K)|0;if(l)if(!(Kr(W,l)|0)){s=A+16|0;m=an((da((da(s|0,4,0,0)|0|0)+(n<<4)+12|0,4,0,0)|0|0)+40|0,l,J)|0;if((m|0)!=0?(da(m+8|0,4,0,0)|0|0)!=0:0)if(!d){ea(V|0,K|0,4,0);sh(W,29760,V);k=0;break}else{zr(W,n);k=0;break}q=da(p|0,4,0,0)|0|0;if(!(Ec(q,25568,7)|0)){sh(W,29792,V);k=W+64|0;ea(k|0,(da(k|0,4,0,0)|0|0)+1|0,4,0);k=0;break}m=da(p+12|0,4,0,0)|0|0;if((m|0)!=0&(h|0)!=49){ea(V|0,((h|0)==35?29872:29880)|0,4,0);ea(V+4|0,y|0,4,0);ea(V+8|0,0|0,4,0);sh(W,29832,V);k=0;break}g=(h|0)==49;if((m|0)==0&g){ea(V|0,y|0,4,0);ea(V+4|0,0|0,4,0);sh(W,29888,V);k=0;break}f=p+68|0;p=da(f|0,4,0,0)|0|0;i:do if(p){o=da(A+20|0,4,0,0)|0|0;if((o|0)>0){d=da(s|0,4,0,0)|0|0;e=0;while(1){c=e+1|0;if((da(d+(e<<4)+12|0,4,0,0)|0|0)==(p|0)){c=e;break i}if((c|0)<(o|0))e=c;else break}}else c=0}else c=-1e6;while(0);p=da(s|0,4,0,0)|0|0;d=da(p+(c<<4)|0,4,0,0)|0|0;if(r)o=da(p+16|0,4,0,0)|0|0;else o=d;p=(c|0)==1;if((Rq(W,p|r?5:7,l,q,o)|0)==0?(Rq(W,18,p?13184:13208,0,d)|0)==0:0){k=lh(A,36,0)|0;if(!k){k=0;break}q=k+0|0;d=q+36|0;do{ea(q>>0|0,0|0,1,0);q=q+1|0}while((q|0)<(d|0));ea(k|0,l|0,4,0);ea(k+4|0,jh(A,da(y+16|0,4,0,0)|0|0)|0|0,4,0);ea(k+20|0,da((da(s|0,4,0,0)|0|0)+(n<<4)+12|0,4,0,0)|0|0,4,0);ea(k+24|0,da(f|0,4,0,0)|0|0,4,0);ea(k+8>>0|0,t|0,1,0);ea(k+9>>0|0,(g|(h|0)==35?1:2)|0,1,0);ea(k+12|0,Lr(A,z,1,0)|0|0,4,0);ea(k+16|0,Mr(A,x)|0|0,4,0);ea(W+488|0,k|0,4,0);l=0}else k=0}else k=0;else{k=0;l=0}}else{k=0;l=0}}else{k=0;l=0}}while(0);lg(A,l);Co(A,y);Gk(A,x);Fk(A,z);if(!(da(W+488|0,4,0,0)|0))ig(A,k);if(!(da(a+(v<<4)+20|0,4,0,0)|0)){U=u;W=da(U+4|0,4,0,0)|0|0;V=Y;ea(V|0,da(U|0,4,0,0)|0|0,4,0);ea(V+4|0,W|0,4,0);break a}else{U=w;W=da(U+4|0,4,0,0)|0|0;V=Y;ea(V|0,da(U|0,4,0,0)|0|0,4,0);ea(V+4|0,W|0,4,0);break a}}case 269:case 266:{ea(Y|0,35|0,4,0);break}case 267:{ea(Y|0,31|0,4,0);break}case 268:{ea(Y|0,49|0,4,0);break}case 284:{e=da(W|0,4,0,0)|0|0;d=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;c=da(a+(X<<4)+16|0,4,0,0)|0|0;f=da(a+(X+-5<<4)+16>>0|0,1,0,0)|0|0;g=Nr(e,110,a+(X+-4<<4)+16|0)|0;if(g){ea(g+24|0,Or(e,d,1)|0|0,4,0);ea(g+20|0,Lr(e,c,1,0)|0|0,4,0);ea(g+1>>0|0,f|0,1,0)}Mk(e,d);Fk(e,c);ea(Y|0,g|0,4,0);break}case 271:case 270:{ea(Y|0,da(a+(X<<4)+14>>0|0,1,0,1)|0|0,4,0);ea(Y+4|0,0|0,4,0);break}case 272:{ea(Y|0,110|0,4,0);ea(Y+4|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);break}case 296:case 275:{ea(Y|0,0|0,4,0);break}case 297:case 276:{ea(Y|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);break}case 277:{V=a+(X+-1<<4)+16|0;W=a+(X+-2<<4)+16|0;ea((da((da(W|0,4,0,0)|0|0)+36|0,4,0,0)|0|0)+32|0,da(V|0,4,0,0)|0|0,4,0);ea((da(W|0,4,0,0)|0|0)+36|0,da(V|0,4,0,0)|0|0,4,0);ea(Y|0,da(W|0,4,0,0)|0|0,4,0);break}case 278:{W=a+(X+-1<<4)+16|0;V=da(W|0,4,0,0)|0|0;ea(V+36|0,V|0,4,0);ea(Y|0,da(W|0,4,0,0)|0|0,4,0);break}case 282:{sh(W,20736,V);break}case 280:{S=a+(X<<4)+16|0;U=da(S+4|0,4,0,0)|0|0;T=Y;ea(T|0,da(S|0,4,0,0)|0|0,4,0);ea(T+4|0,U|0,4,0);sh(W,20640,V);break}case 283:{sh(W,20824,V);break}case 286:{c=da(W|0,4,0,0)|0|0;d=da(a+(X<<4)+16|0,4,0,0)|0|0;e=Nr(c,109,a+(X+-2<<4)+16|0)|0;if(e){ea(e+20|0,Lr(c,d,1,0)|0|0,4,0);ea(e+1>>0|0,10|0,1,0)}Fk(c,d);ea(Y|0,e|0,4,0);break}case 287:{e=da(W|0,4,0,0)|0|0;g=da(a+(X<<4)+16|0,4,0,0)|0|0;c=lh(e,40,0)|0;if(!c){Lk(e,g,1);c=0}else{q=c+0|0;d=q+40|0;do{ea(q>>0|0,0|0,1,0);q=q+1|0}while((q|0)<(d|0));ea(c>>0|0,119|0,1,0);ea(c+8|0,g|0,4,0);ea(c+1>>0|0,10|0,1,0)}ea(Y|0,c|0,4,0);break}case 285:{g=da(W|0,4,0,0)|0|0;f=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;e=da(a+(X<<4)+16|0,4,0,0)|0|0;d=da(a+(X+-4<<4)+16>>0|0,1,0,0)|0|0;c=Nr(g,108,a+(X+-2<<4)+16|0)|0;if(!c)Gk(g,f);else{ea(c+8|0,fr(g,e,1)|0|0,4,0);ea(c+28|0,f|0,4,0);ea(c+1>>0|0,d|0,1,0)}Lk(g,e,1);ea(Y|0,c|0,4,0);break}case 288:{c=Yq(W,57,0,0,0)|0;ea(Y|0,c|0,4,0);if(c)ea(c+1>>0|0,4|0,1,0);ea(Y+4|0,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 289:{c=Yq(W,57,0,0,a+(X+-1<<4)+16|0)|0;ea(Y|0,c|0,4,0);if(c)ea(c+1>>0|0,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,1,0);ea(Y+4|0,da(a+(X+-5<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 290:{ea(Y|0,1|0,4,0);break}case 292:{ea(Y|0,3|0,4,0);break}case 293:{d=da(a+(X<<4)+16|0,4,0,0)|0|0;c=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;o=da(W|0,4,0,0)|0|0;do if((da(o+65>>0|0,1,0,0)|0|0)==0?(Fn(W)|0)==0:0){p=da(d+12|0,4,0,0)|0|0;n=da(d+16|0,4,0,0)|0|0;m=o+20|0;if((da(m|0,4,0,0)|0|0)>0){g=(p|0)==0;f=o+16|0;e=0;k=0;do{h=(e|0)<2^e;l=da(f|0,4,0,0)|0|0;if(!(!g?(cd(da(l+(h<<4)|0,4,0,0)|0|0,p)|0)!=0:0)){l=an((da(l+(h<<4)+12|0,4,0,0)|0|0)+40|0,n,D)|0;if(l){k=da(l+8|0,4,0,0)|0|0;if(k)break}else k=0}e=e+1|0}while((e|0)<(da(m|0,4,0,0)|0|0));if(k){Pr(W,k);break}}if(!c){ea(V|0,d|0,4,0);ea(V+4|0,0|0,4,0);sh(W,29600,V)}else yr(W,p);ea(W+17>>0|0,1|0,1,0)}while(0);Co(o,d);break}case 294:{V=da(a+(X+-3<<4)+16|0,4,0,0)|0|0;Qr(W,24,29360,V,V,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0);break}case 303:{Sr(W,a+(X+-1<<4)+16|0,a+(X<<4)+16|0);break}case 304:{r=da(a+(X+-3<<4)+16|0,4,0,0)|0|0;p=a+(X<<4)+16|0;q=da(W|0,4,0,0)|0|0;d=q+24|0;e=da(d|0,4,0,0)|0|0;do if((da(q+65>>0|0,1,0,0)|0|0)==0?(P=Tr(W,0,r+8|0)|0,(P|0)!=0):0){l=da(W|0,4,0,0)|0|0;s=P+68|0;n=da(s|0,4,0,0)|0|0;j:do if(n){m=da(l+20|0,4,0,0)|0|0;if((m|0)>0){l=da(l+16|0,4,0,0)|0|0;h=0;while(1){k=h+1|0;if((da(l+(h<<4)+12|0,4,0,0)|0|0)==(n|0)){k=h;break j}if((k|0)<(m|0))h=k;else break}}else k=0}else k=-1e6;while(0);c=da((da(q+16|0,4,0,0)|0|0)+(k<<4)|0,4,0,0)|0|0;ea(d|0,da(d|0,4,0,0)|0|2097152|0,4,0);g=Vq(q,p)|0;if(g){if((Zh(q,g,c)|0)==0?(aq(q,g,c)|0)==0:0){if(Ur(W,da(P|0,4,0,0)|0|0)|0)break;if(Kr(W,g)|0)break;l=da(P|0,4,0,0)|0|0;if(da(P+12|0,4,0,0)|0){ea(V|0,l|0,4,0);sh(W,26088,V);break}if(Rq(W,26,c,l,0)|0)break;if(gr(W,P)|0)break;if(!((da(P+44>>0|0,1,0,0)|0)&16))f=0;else{l=da(P+60|0,4,0,0)|0|0;k:do if(!l)l=0;else while(1){if((da(l|0,4,0,0)|0|0)==(q|0))break k;l=da(l+24|0,4,0,0)|0|0;if(!l){l=0;break}}while(0);f=(da((da(da(l+8|0,4,0,0)|0|0,4,0,0)|0|0)+76|0,4,0,0)|0|0)==0?0:l}l=Nq(W)|0;if(!l)break;U=(f|0)!=0;h=W+408|0;T=da(h|0,4,0,0)|0|0;T=(T|0)==0?W:T;zr(W,k);S=T+328|0;ea(S|0,da(S|0,4,0,0)|0|1<>0|0,da(T>>0|0,1,0,1)|0|U&1|0,1,0);Cr(W,k);if(U){T=W+72|0;U=(da(T|0,4,0,0)|0|0)+1|0;ea(T|0,U|0,4,0);wh(l,vh(l,97,0,U,0)|0,g,0);wh(l,vh(l,152,U,0,0)|0,f,-10);U=da(h|0,4,0,0)|0|0;ea(((U|0)==0?W:U)+21>>0|0,1|0,1,0)}p=da(P|0,4,0,0)|0|0;o=Mn(p,-1)|0;do if(((da(d|0,4,0,0)|0)&524288|0)!=0?(L=an((da(s|0,4,0,0)|0|0)+56|0,p,M)|0,(L|0)!=0):0){l=da(L+8|0,4,0,0)|0|0;if(!l)break;h=l;l=0;do{l=Vr(da(W|0,4,0,0)|0|0,l,da(da(h|0,4,0,0)|0|0,4,0,0)|0|0)|0;h=da(h+12|0,4,0,0)|0|0}while((h|0)!=0);if(!l)break;ea(V|0,c|0,4,0);ea(V+4|0,((k|0)==1?13184:13208)|0,4,0);ea(V+8|0,p|0,4,0);ea(V+12|0,g|0,4,0);ea(V+16|0,l|0,4,0);Ar(W,26120,V);lg(q,l)}while(0);ea(V|0,c|0,4,0);ea(V+4|0,((k|0)==1?13184:13208)|0,4,0);ea(V+8|0,g|0,4,0);ea(V+12|0,g|0,4,0);ea(V+16|0,g|0,4,0);ea(V+20|0,g|0,4,0);ea(V+24|0,g|0,4,0);ea(V+28|0,o|0,4,0);ea(V+32|0,p|0,4,0);Ar(W,26192,V);if(Zh(q,26576,c)|0){U=da(P|0,4,0,0)|0|0;ea(V|0,c|0,4,0);ea(V+4|0,g|0,4,0);ea(V+8|0,U|0,4,0);Ar(W,26592,V)}k=Wr(W,P)|0;if(k){ea(V|0,g|0,4,0);ea(V+4|0,g|0,4,0);ea(V+8|0,k|0,4,0);Ar(W,26656,V);lg(q,k)}do if((da(d|0,4,0,0)|0)&524288){k=an((da(s|0,4,0,0)|0|0)+56|0,da(P|0,4,0,0)|0|0,V)|0;if(!k)break;k=da(k+8|0,4,0,0)|0|0;if(!k)break;do{h=da(k|0,4,0,0)|0|0;if((h|0)!=(P|0))Xr(W,h,da(h|0,4,0,0)|0|0);k=da(k+12|0,4,0,0)|0|0}while((k|0)!=0)}while(0);Xr(W,P,g);break}ea(V|0,g|0,4,0);sh(W,26024,V)}else g=0}else g=0;while(0);Co(q,r);lg(q,g);ea(d|0,e|0,4,0);break}case 295:{V=da(a+(X<<4)+16|0,4,0,0)|0|0;Qr(W,25,29176,V,0,0,V);break}case 300:{Rr(W,0,0);break}case 302:{Sr(W,0,0);break}case 301:{Rr(W,a+(X+-1<<4)+16|0,a+(X<<4)+16|0);break}case 305:{q=da(W|0,4,0,0)|0|0;if((da(W+64|0,4,0,0)|0|0)==0?(E=q+65|0,(da(E>>0|0,1,0,0)|0|0)==0):0){e=da(W+484|0,4,0,0)|0|0;l=da(e+68|0,4,0,0)|0|0;l:do if(l){k=da(q+20|0,4,0,0)|0|0;if((k|0)>0){h=da(q+16|0,4,0,0)|0|0;f=0;while(1){g=f+1|0;if((da(h+(f<<4)+12|0,4,0,0)|0|0)==(l|0)){s=f;break l}if((g|0)<(k|0))f=g;else{s=g;break}}}else s=0}else s=-1e6;while(0);c=da((da(q+16|0,4,0,0)|0|0)+(s<<4)|0,4,0,0)|0|0;d=(da(e|0,4,0,0)|0|0)+16|0;m=(da(e+38|0,2,0,0)|0|0)+-1|0;k=da(e+4|0,4,0,0)|0|0;l=da(k+(m*24|0)+4|0,4,0,0)|0|0;r=Zh(q,d,c)|0;if(!(Rq(W,26,c,da(r|0,4,0,0)|0|0,0)|0)){if(!l)n=0;else n=(da(l>>0|0,1,0,0)|0|0)==101?0:l;if((da(k+(m*24|0)+23>>0|0,1,0,0)|0)&1){sh(W,25608,V);break a}if(da(e+8|0,4,0,0)|0){sh(W,25640,V);break a}p=q+24|0;if(((da(p|0,4,0,0)|0)&524288|0)!=0?(da(e+16|0,4,0,0)|0|0)!=0&(n|0)!=0:0){sh(W,25672,V);break a}o=(n|0)!=0;if(!((da(k+(m*24|0)+20>>0|0,1,0,0)|0|0)==0|o)){sh(W,25736,V);break a}do if(o){ea(G|0,0|0,4,0);if(Yr(q,n,1,65,G)|0){ea(E>>0|0,1|0,1,0);break a}l=da(G|0,4,0,0)|0|0;if(!l){sh(W,25792,V);break a}else{Lh(l);break}}while(0);l=da(a+(X<<4)+16|0,4,0,0)|0|0;k=a+(X<<4)+20|0;h=da(k|0,4,0,0)|0|0;if((l|0)!=0?(N=iw(h|0,0,1,0)|0,N=lh(q,N,C)|0,(N|0)!=0):0){jw(N|0,l|0,h|0)|0;ea(N+h>>0|0,0|0,1,0);l=(da(k|0,4,0,0)|0|0)+-1|0;h=da(p|0,4,0,0)|0|0;m:do if((l|0)>0){k=N+l|0;do{l=da(k>>0|0,1,0,0)|0|0;if(l<<24>>24!=59?((da(10368+(l&255)>>0|0,1,0,0)|0)&1)==0:0)break m;ea(k>>0|0,0|0,1,0);k=k+-1|0}while(k>>>0>N>>>0)}while(0);ea(p|0,da(p|0,4,0,0)|0|2097152|0,4,0);T=da(e+48|0,4,0,0)|0|0;ea(V|0,c|0,4,0);ea(V+4|0,((s|0)==1?13184:13208)|0,4,0);ea(V+8|0,T|0,4,0);ea(V+12|0,N|0,4,0);ea(V+16|0,T+1|0,4,0);ea(V+20|0,d|0,4,0);Ar(W,25840,V);lg(q,N);ea(p|0,h|0,4,0)}l=o?3:2;n=Nq(W)|0;if(n){k=W+19|0;g=da(k>>0|0,1,0,0)|0|0;do if(g<<24>>24){V=g+-1<<24>>24;ea(k>>0|0,V|0,1,0);h=da(W+((V&255)<<2)+24|0,4,0,0)|0|0;if(!(V<<24>>24)){k=da(W+72|0,4,0,0)|0|0;U=663;break}else{d=g+-2<<24>>24;ea(k>>0|0,d|0,1,0);d=da(W+((d&255)<<2)+24|0,4,0,0)|0|0;break}}else{h=W+72|0;k=(da(h|0,4,0,0)|0|0)+1|0;ea(h|0,k|0,4,0);h=k;U=663}while(0);if((U|0)==663){d=k+1|0;ea(W+72|0,d|0,4,0)}vh(n,51,s,h,2)|0;f=n+96|0;ea(f|0,da(f|0,4,0,0)|0|1<>0|0,-112|0,1,0);vh(n,52,s,2,d)|0;k=da(k|0,4,0,0)|0|0;if(k>>>0>f>>>0)ea((da(e|0,4,0,0)|0|0)+(f*20|0)+8|0,k|0,4,0);ea((da(n+24|0,4,0,0)|0|0)+88|0,k+-1|0,4,0);Zr(W,h);Zr(W,d)}Xr(W,r,da(r|0,4,0,0)|0|0)}}break}case 306:{o=da(W|0,4,0,0)|0|0;ea(o+250>>0|0,0|0,1,0);c=da(a+(X<<4)+16|0,4,0,0)|0|0;p=o+65|0;do if((da(p>>0|0,1,0,0)|0|0)==0?(I=Tr(W,0,c+8|0)|0,(I|0)!=0):0){if((da(I+44>>0|0,1,0,0)|0)&16){sh(W,25400,V);break}if(da(I+12|0,4,0,0)|0){sh(W,25440,V);break}if(!(Ur(W,da(I|0,4,0,0)|0|0)|0)){k=da(I+68|0,4,0,0)|0|0;n:do if(k){h=da(o+20|0,4,0,0)|0|0;if((h|0)>0){g=da(o+16|0,4,0,0)|0|0;l=0;while(1){f=l+1|0;if((da(g+(l<<4)+12|0,4,0,0)|0|0)==(k|0)){f=l;break n}if((f|0)<(h|0))l=f;else break}}else f=0}else f=-1e6;while(0);n=lh(o,76,0)|0;if(n){q=n+0|0;d=q+76|0;do{ea(q>>0|0,0|0,1,0);q=q+1|0}while((q|0)<(d|0));ea(W+484|0,n|0,4,0);h=n+40|0;ea(h|0,1|0,2,0);l=da(I+38|0,2,0,0)|0|0;g=n+38|0;ea(g|0,l|0,2,0);l=((((l<<16>>16)+-1|0)/8|0)*192|0)+192|0;k=lh(o,l,0)|0;if(k)ew(k|0,0,l|0)|0;l=n+4|0;ea(l|0,k|0,4,0);ea(V|0,da(I|0,4,0,0)|0|0,4,0);V=th(o,25472,V)|0;ea(n|0,V|0,4,0);k=da(l|0,4,0,0)|0|0;if((k|0)==0|(V|0)==0){ea(p>>0|0,1|0,1,0);break}jw(k|0,da(I+4|0,4,0,0)|0|0,(da(g|0,2,0,0)|0|0)*24|0)|0;if((da(g|0,2,0,0)|0|0)>0){k=0;do{V=da(l|0,4,0,0)|0|0;U=V+(k*24|0)|0;ea(U|0,jh(o,da(U|0,4,0,0)|0|0)|0|0,4,0);V=V+(k*24|0)+4|0;k=k+1|0;ea(V+0|0,0|0,4,0);ea(V+4|0,0|0,4,0);ea(V+8|0,0|0,4,0);ea(V+12|0,0|0,4,0)}while((k|0)<(da(g|0,2,0,0)|0|0))}ea(n+68|0,da((da(o+16|0,4,0,0)|0|0)+(f<<4)+12|0,4,0,0)|0|0,4,0);ea(n+48|0,da(I+48|0,4,0,0)|0|0,4,0);ea(h|0,1|0,2,0);V=da(W+408|0,4,0,0)|0|0;zr(W,f);V=((V|0)==0?W:V)+328|0;ea(V|0,da(V|0,4,0,0)|0|1<0){f=da(c+16|0,4,0,0)|0|0;e=0;while(1){g=e+1|0;if((da(f+(e<<4)+12|0,4,0,0)|0|0)==(k|0)){g=e;break o}if((g|0)<(h|0))e=g;else break}}else g=0}else g=-1e6;while(0);e=l+44|0;ea(e>>0|0,da(e>>0|0,1,0,1)|0|16|0,1,0);ea(l+52|0,0|0,4,0);$r(c,l,Vq(c,d)|0);$r(c,l,0);$r(c,l,jh(c,da(l|0,4,0,0)|0|0)|0);ea(W+500|0,(da(d|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)-(da(W+496|0,4,0,0)|0|0)|0,4,0);e=da(l+56|0,4,0,0)|0|0;if(e)Rq(W,29,da(l|0,4,0,0)|0|0,da(e|0,4,0,0)|0|0,da((da((da(W|0,4,0,0)|0|0)+16|0,4,0,0)|0|0)+(g<<4)|0,4,0,0)|0|0)|0}break}case 322:{ea(Y|0,0|0,4,0);break}case 324:case 323:{ea(Y|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);break}case 325:{ea(Y|0,bs(W,0,a+(X+-5<<4)+16|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0)|0|0,4,0);break}case 326:{ea(Y|0,bs(W,da(a+(X+-7<<4)+16|0,4,0,0)|0|0,a+(X+-5<<4)+16|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0)|0|0,4,0);break}case 314:{as(W);ea(W+512|0,0|0,4,0);ea(W+516|0,0|0,4,0);break}case 318:case 317:case 316:{e=W+512|0;d=da(e|0,4,0,0)|0|0;c=da(a+(X<<4)+16|0,4,0,0)|0|0;if(!d){ea(e|0,c|0,4,0);c=da(a+(X<<4)+20|0,4,0,0)|0|0}else c=c+(da(a+(X<<4)+20|0,4,0,0)|0|0)-d|0;ea(W+516|0,c|0,4,0);break}case 13:{ea(Y|0,7|0,4,0);break}case 70:{ea(Y|0,0|0,4,0);break}case 71:{ea(Y|0,(da(a+(X+-1<<4)+16|0,4,0,0)|0)&~(da(a+(X<<4)+20|0,4,0,0)|0)|(da(a+(X<<4)+16|0,4,0,0)|0)|0,4,0);break}case 73:case 72:{ea(Y|0,0|0,4,0);ea(Y+4|0,0|0,4,0);break}case 93:{Zq(W,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,0);break}case 94:{_q(W,0,0,0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,0,0,0,0)|0;break}case 95:{$q(W,da(a+(X+-2<<4)+16|0,4,0,0)|0|0);break}case 87:{U=a+(X+-1<<4)+16|0;W=da(U+4|0,4,0,0)|0|0;V=Y;ea(V|0,da(U|0,4,0,0)|0|0,4,0);ea(V+4|0,W|0,4,0);break}case 90:{ea(W+324|0,0|0,4,0);break}case 99:{ea(Y|0,10|0,4,0);break}case 101:{ea(Y>>0|0,10|0,1,0);break}case 102:{ea(Y>>0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,1,0);break}case 104:{ea(Y|0,4|0,4,0);break}case 105:{ea(Y|0,5|0,4,0);break}case 106:{cr(W,da(a+(X<<4)+16|0,4,0,0)|0|0,0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0);break}case 96:{ar(W,da(a+(X+-6<<4)+16|0,4,0,0)|0|0,a+(X+-3<<4)+16|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0);d=da(a+(X<<4)+16|0,4,0,0)|0|0;e=da(W+484|0,4,0,0)|0|0;if((e|0)!=0?(v=da(e+16|0,4,0,0)|0|0,(v|0)!=0):0)ea(v+24>>0|0,d|0,1,0);break}case 109:{c=X+-7|0;h=a+(X+-3<<4)+16|0;g=a+(X+-2<<4)+16|0;p=da(a+(X<<4)+16|0,4,0,0)|0|0;l=da(a+(X+-6<<4)+16|0,4,0,0)|0|0;k=da(a+(X+-4<<4)+16|0,4,0,0)|0|0;ea(z|0,0|0,4,0);o=da(W|0,4,0,0)|0|0;if((da(W+440|0,4,0,0)|0|0)>0){sh(W,35440,V);Lk(o,p,1);break a}Tq(W,h,g,l,1,0,k);e=da(W+484|0,4,0,0)|0|0;if((e|0)!=0?(da(W+64|0,4,0,0)|0|0)==0:0){dr(W,h,g,z)|0;l=da(e+68|0,4,0,0)|0|0;p:do if(l){h=da(o+20|0,4,0,0)|0|0;if((h|0)>0){g=da(o+16|0,4,0,0)|0|0;f=0;while(1){k=f+1|0;if((da(g+(f<<4)+12|0,4,0,0)|0|0)==(l|0)){k=f;break p}if((k|0)<(h|0))f=k;else break}}else k=0}else k=-1e6;while(0);V=da(z|0,4,0,0)|0|0;U=da(W|0,4,0,0)|0|0;ea(S|0,W|0,4,0);U=da(U+16|0,4,0,0)|0|0;ea(S+12|0,da(U+(k<<4)|0,4,0,0)|0|0,4,0);ea(S+4|0,da(U+(k<<4)+12|0,4,0,0)|0|0,4,0);ea(S+16|0,35480|0,4,0);ea(S+20|0,V|0,4,0);ea(S+8|0,(k|0)==1&1|0,4,0);if(er(S,p)|0){Lk(o,p,1);break a}ea(e+12|0,fr(o,p,1)|0|0,4,0);Lk(o,p,1);if(da(o+65>>0|0,1,0,0)|0)break a;if(!(da(o+145>>0|0,1,0,0)|0))gr(W,e)|0;g=W+504|0;f=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;V=T;ea(V|0,f|0,4,0);ea(V+4|0,g|0,4,0);V=da(f>>0|0,1,0,0)|0|0;if(!(V<<24>>24==59|V<<24>>24==0)){f=f+g|0;ea(T|0,f|0,4,0)}h=T+4|0;ea(h|0,0|0,4,0);k=da(a+(c<<4)+16|0,4,0,0)|0|0;g=f-k|0;do{V=g;g=g+-1|0;e=k+g|0;if((V|0)<=0)break}while(((da(10368+(da(e>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&1)!=0);ea(T|0,e|0,4,0);ea(h|0,1|0,4,0);Uq(W,0,T,0,0);break a}Lk(o,p,1);break}case 110:{cr(W,da(a+(X<<4)+16|0,4,0,0)|0|0,1,da(a+(X+-1<<4)+16|0,4,0,0)|0|0);break}case 111:{ea(q+0|0,da(5124*4|0,4,0,0)|0|0,4,0);ea(q+4|0,da(5125*4|0,4,0,0)|0|0,4,0);ea(q+8|0,da(5126*4|0,4,0,0)|0|0,4,0);ea(q+12|0,da(5127*4|0,4,0,0)|0|0,4,0);ea(q+16|0,da(5128*4|0,4,0,0)|0|0,4,0);V=a+(X<<4)+16|0;hr(W,da(V|0,4,0,0)|0|0,q)|0;Lk(da(W|0,4,0,0)|0|0,da(V|0,4,0,0)|0|0,1);break}case 112:{l=da(a+(X<<4)+16|0,4,0,0)|0|0;do if(l){ea(l+68|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);e=da(l+52|0,4,0,0)|0|0;if(e){f=128;g=1;h=l;k=0;while(1){ea(h+56|0,k|0,4,0);T=h+6|0;U=da(T|0,2,0,1)|0|64;ea(T|0,U|0,2,0);f=U&f;if(!e)break;U=e;e=da(e+52|0,4,0,0)|0|0;g=g+1|0;k=h;h=U}if(f){W=l+6|0;ea(W|0,da(W|0,2,0,1)|0|256|0,2,0);break}U=da((da(W|0,4,0,0)|0|0)+104|0,4,0,0)|0|0;if((U|0)>0&(g|0)>(U|0))sh(W,20520,V)}}else Pn(da(W|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0);while(0);ea(Y|0,l|0,4,0);break}case 119:case 113:{ea(Y|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);break}case 114:{c=da(a+(X<<4)+16|0,4,0,0)|0|0;do if(c){if(da(c+52|0,4,0,0)|0){ea(e+4|0,0|0,4,0);c=jr(W,0,ir(W,0,0,0,e,c,0,0)|0,0,0,0,0,0,0,0)|0;if(!c){U=192;break}}V=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;ea(c+4>>0|0,V|0,1,0);ea(c+52|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,4,0);if((V|0)!=116)ea(W+22>>0|0,1|0,1,0)}else U=192;while(0);if((U|0)==192){Lk(da(W|0,4,0,0)|0|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,1);c=0}ea(Y|0,c|0,4,0);break}case 116:{ea(Y|0,116|0,4,0);break}case 169:{c=da(a+(X+-5<<4)+16|0,4,0,0)|0|0;if(c){V=W+532|0;ea(c+4|0,da(V|0,4,0,0)|0|0,4,0);ea(V|0,c|0,4,0);ea(W+449>>0|0,1|0,1,0)}V=a+(X+-2<<4)+16|0;nr(W,da(V|0,4,0,0)|0|0,a+(X+-1<<4)+16|0);qr(W,da(V|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0);break}case 176:{c=da(a+(X+-6<<4)+16|0,4,0,0)|0|0;if(c){V=W+532|0;ea(c+4|0,da(V|0,4,0,0)|0|0,4,0);ea(V|0,c|0,4,0);ea(W+449>>0|0,1|0,1,0)}sr(W,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,da(a+(X+-5<<4)+16>>0|0,1,0,1)|0|0);break}case 173:{V=kr(W,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0;ea(Y|0,V|0,4,0);lr(W,V,a+(X+-2<<4)+16|0,1);break}case 174:{V=kr(W,0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0;ea(Y|0,V|0,4,0);lr(W,V,a+(X+-2<<4)+16|0,1);break}case 175:{c=da(a+(X+-5<<4)+16|0,4,0,0)|0|0;if(c){V=W+532|0;ea(c+4|0,da(V|0,4,0,0)|0|0,4,0);ea(V|0,c|0,4,0);ea(W+449>>0|0,1|0,1,0)}sr(W,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,da(a+(X+-4<<4)+16>>0|0,1,0,1)|0|0);break}case 181:{ea(Y|0,tr(da(W|0,4,0,0)|0|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,a+(X<<4)+16|0)|0|0,4,0);break}case 182:{ea(Y|0,tr(da(W|0,4,0,0)|0|0,0,a+(X<<4)+16|0)|0|0,4,0);break}case 183:{W=a+(X<<4)+16|0;ea(Y+0|0,da(W+0|0,4,0,0)|0|0,4,0);ea(Y+4|0,da(W+4|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(W+8|0,4,0,0)|0|0,4,0);break}case 177:{ea(Y>>0|0,da(a+(X<<4)+16>>0|0,1,0,0)|0|0|0,1,0);break}case 178:{ea(Y>>0|0,5|0,1,0);break}case 184:{ea(Y|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+4|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 191:case 190:case 185:{V=a+(X<<4)+16|0;ea(Y|0,Yq(W,da(a+(X<<4)+14>>0|0,1,0,1)|0|0,0,0,V)|0|0,4,0);W=da(V|0,4,0,0)|0|0;ea(Y+4|0,W|0,4,0);ea(Y+8|0,W+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 187:case 186:{V=a+(X<<4)+16|0;ea(Y|0,Yq(W,27,0,0,V)|0|0,4,0);W=da(V|0,4,0,0)|0|0;ea(Y+4|0,W|0,4,0);ea(Y+8|0,W+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 188:{U=a+(X+-2<<4)+16|0;V=a+(X<<4)+16|0;ea(Y|0,Yq(W,122,Yq(W,27,0,0,U)|0,Yq(W,27,0,0,V)|0,0)|0|0,4,0);ea(Y+4|0,da(U|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(V|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 189:{U=a+(X+-4<<4)+16|0;V=a+(X<<4)+16|0;ea(Y|0,Yq(W,122,Yq(W,27,0,0,U)|0,Yq(W,122,Yq(W,27,0,0,a+(X+-2<<4)+16|0)|0,Yq(W,27,0,0,V)|0,0)|0,0)|0|0,4,0);ea(Y+4|0,da(U|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(V|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 192:{p=a+(X<<4)+16|0;o=a+(X<<4)+20|0;do if(((da(o|0,4,0,0)|0|0)>>>0>1?(f=da(p|0,4,0,0)|0|0,(da(f>>0|0,1,0,0)|0|0)==35):0)?((da(f+1>>0|0,1,0,1)|0|0)+-48|0)>>>0<10:0){if(!(da(W+18>>0|0,1,0,0)|0)){ea(V|0,p|0,4,0);sh(W,20432,V);ea(Y|0,0|0,4,0);break}h=Yq(W,159,0,0,p)|0;ea(Y|0,h|0,4,0);if(h)Cn((da(p|0,4,0,0)|0|0)+1|0,h+28|0)|0}else U=298;while(0);q:do if((U|0)==298?(H=Yq(W,135,0,0,p)|0,ea(Y|0,H|0,4,0),O=da(p|0,4,0,0)|0|0,ea(Y+4|0,O|0,4,0),ea(Y+8|0,O+(da(o|0,4,0,0)|0|0)|0,4,0),O=da(W|0,4,0,0)|0|0,(H|0)!=0):0){r=da(H+8|0,4,0,0)|0|0;h=r+1|0;do if(da(h>>0|0,1,0,0)|0){q=(r|0)==0;if(q)s=0;else{l=r;while(1)if(!(da(l>>0|0,1,0,0)|0))break;else l=l+1|0;s=l-r&1073741823}r:do if((da(r>>0|0,1,0,0)|0|0)==63){T=Tl(h,y,s+-1|0,1)|0;f=y;g=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;l=g&65535;ea(H+32|0,l|0,2,0);h=da(O+124|0,4,0,0)|0|0;U=((h|0)<0)<<31>>31;if((f|0)<0|(f|0)==0&g>>>0<1|(T|0)!=0|((f|0)>(U|0)|(f|0)==(U|0)&g>>>0>h>>>0)){ea(V|0,h|0,4,0);sh(W,33296,V);l=0}h=W+440|0;U=da(h|0,4,0,0)|0|0;T=((U|0)<0)<<31>>31;if((f|0)>(T|0)|(f|0)==(T|0)&g>>>0>U>>>0)ea(h|0,g|0,4,0)}else{h=da(W+444|0,4,0,0)|0|0;s:do if((h|0)>0){g=da(W+472|0,4,0,0)|0|0;l=0;e=0;while(1){f=da(g+(l<<2)|0,4,0,0)|0|0;if((f|0)!=0?(Zv(f,r)|0)==0:0)break;e=e+1<<16>>16;l=e<<16>>16;if((l|0)>=(h|0)){U=315;break s}}l=l+1&65535;h=H+32|0;ea(h|0,l|0,2,0);if(l<<16>>16)break r}else U=315;while(0);if((U|0)==315)h=H+32|0;U=W+440|0;l=(da(U|0,4,0,0)|0|0)+1|0;ea(U|0,l|0,4,0);l=l&65535;ea(h|0,l|0,2,0)}while(0);f=l<<16>>16;if(l<<16>>16>0){l=W+444|0;if((f|0)>(da(l|0,4,0,0)|0|0)){h=W+472|0;g=qo(O,da(h|0,4,0,0)|0|0,f<<2,0)|0;if(!g)break q;ea(h|0,g|0,4,0);U=da(l|0,4,0,0)|0|0;ew(g+(U<<2)|0,0,f-U<<2|0)|0;ea(l|0,f|0,4,0)}if((da(r>>0|0,1,0,0)|0|0)==63){h=f+-1|0;if(!(da((da(W+472|0,4,0,0)|0|0)+(h<<2)|0,4,0,0)|0))l=0;else break}else{l=f+-1|0;h=l;l=da((da(W+472|0,4,0,0)|0|0)+(l<<2)|0,4,0,0)|0|0}g=W+472|0;lg(O,l);if(!q?(k=iw(s|0,0,1,0)|0,k=lh(O,k,C)|0,(k|0)!=0):0){jw(k|0,r|0,s|0)|0;ea(k+s>>0|0,0|0,1,0)}else k=0;ea((da(g|0,4,0,0)|0|0)+(h<<2)|0,k|0,4,0)}}else{T=W+440|0;U=(da(T|0,4,0,0)|0|0)+1|0;ea(T|0,U|0,4,0);ea(H+32|0,U|0,2,0)}while(0);if((da(W+64|0,4,0,0)|0|0)==0?(da(W+440|0,4,0,0)|0|0)>(da(O+124|0,4,0,0)|0|0):0)sh(W,33344,V)}while(0);W=da(p|0,4,0,0)|0|0;ea(Y+4|0,W|0,4,0);ea(Y+8|0,W+(da(o|0,4,0,0)|0|0)|0,4,0);break}case 196:{V=a+(X+-3<<4)+16|0;ea(Y|0,vr(W,0,V)|0|0,4,0);ea(Y+4|0,da(V|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 197:{V=a+(X<<4)+16|0;ea(Y|0,vr(W,0,V)|0|0,4,0);W=da(V|0,4,0,0)|0|0;ea(Y+4|0,W|0,4,0);ea(Y+8|0,W+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 193:{U=X+-2|0;V=a+(X<<4)+16|0;ea(Y|0,ur(W,da(a+(U<<4)+16|0,4,0,0)|0|0,V,1)|0|0,4,0);ea(Y+4|0,da(a+(U<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(V|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 194:{ea(Y|0,Yq(W,38,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,0,a+(X+-1<<4)+16|0)|0|0,4,0);ea(Y+4|0,da(a+(X+-5<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 195:{e=a+(X+-1<<4)+16|0;c=da(e|0,4,0,0)|0|0;if(c){if((da(c|0,4,0,0)|0|0)>(da((da(W|0,4,0,0)|0|0)+112|0,4,0,0)|0|0)){ea(V|0,a+(X+-4<<4)+16|0,4,0);sh(W,20576,V);c=da(e|0,4,0,0)|0|0}}else c=0;V=a+(X+-4<<4)+16|0;c=vr(W,c,V)|0;ea(Y|0,c|0,4,0);ea(Y+4|0,da(V|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);if(!((c|0)==0?1:(da(a+(X+-2<<4)+16|0,2,0,0)|0|0)==0)){W=c+4|0;ea(W|0,da(W|0,4,0,0)|0|16|0,4,0)}break}case 205:case 204:case 203:case 202:case 201:case 200:case 199:case 198:{V=X+-2|0;ea(Y|0,Yq(W,da(a+(X+-1<<4)+14>>0|0,1,0,1)|0|0,da(a+(V<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,0)|0|0,4,0);ea(Y+4|0,da(a+(V<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);break}case 206:{U=a+(X<<4)+16|0;W=da(U+4|0,4,0,0)|0|0;V=Y;ea(V|0,da(U|0,4,0,0)|0|0,4,0);ea(V+4|0,W|0,4,0);ea(Y+8|0,0|0,4,0);break}case 207:{U=a+(X<<4)+16|0;W=da(U+4|0,4,0,0)|0|0;V=Y;ea(V|0,da(U|0,4,0,0)|0|0,4,0);ea(V+4|0,W|0,4,0);ea(Y+8|0,1|0,4,0);break}case 208:{e=X+-2|0;V=X+-1|0;c=vr(W,kr(W,kr(W,0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0,da(a+(e<<4)+16|0,4,0,0)|0|0)|0,a+(V<<4)+16|0)|0;ea(Y|0,c|0,4,0);if(da(a+(V<<4)+24|0,4,0,0)|0){c=Yq(W,19,c,0,0)|0;ea(Y|0,c|0,4,0)}ea(Y+4|0,da(a+(e<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);if(c){W=c+4|0;ea(W|0,da(W|0,4,0,0)|0|128|0,4,0)}break}case 210:{V=X+-1|0;ea(Y|0,Yq(W,da(a+(X<<4)+14>>0|0,1,0,1)|0|0,da(a+(V<<4)+16|0,4,0,0)|0|0,0,0)|0|0,4,0);ea(Y+4|0,da(a+(V<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 209:{e=X+-4|0;V=X+-3|0;c=vr(W,kr(W,kr(W,kr(W,0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0)|0,da(a+(e<<4)+16|0,4,0,0)|0|0)|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0,a+(V<<4)+16|0)|0;ea(Y|0,c|0,4,0);if(da(a+(V<<4)+24|0,4,0,0)|0){c=Yq(W,19,c,0,0)|0;ea(Y|0,c|0,4,0)}ea(Y+4|0,da(a+(e<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);if(c){W=c+4|0;ea(W|0,da(W|0,4,0,0)|0|128|0,4,0)}break}case 223:{e=a+(X+-1<<4)+16|0;c=da(e|0,4,0,0)|0|0;do if(c){if((da(c|0,4,0,0)|0|0)==1){V=da(c+4|0,4,0,0)|0|0;c=da(V|0,4,0,0)|0|0;ea(V|0,0|0,4,0);Mk(da(W|0,4,0,0)|0|0,da(e|0,4,0,0)|0|0);if(c){V=c+4|0;ea(V|0,(da(V|0,4,0,0)|0)&-769|512|0,4,0)}ea(Y|0,Yq(W,(da(a+(X+-3<<4)+16|0,4,0,0)|0|0)!=0?78:79,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,c,0)|0|0,4,0);break}c=Yq(W,75,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,0,0)|0;ea(Y|0,c|0,4,0);if(!c){Mk(da(W|0,4,0,0)|0|0,da(e|0,4,0,0)|0|0);c=0}else{ea(c+20|0,da(e|0,4,0,0)|0|0,4,0);c=da(Y|0,4,0,0)|0|0;xr(W,c)}if(da(a+(X+-3<<4)+16|0,4,0,0)|0)ea(Y|0,Yq(W,19,c,0,0)|0|0,4,0)}else{ea(Y|0,Yq(W,132,0,0,20616+((da(a+(X+-3<<4)+16|0,4,0,0)|0)<<3)|0)|0|0,4,0);Fk(da(W|0,4,0,0)|0|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0)}while(0);ea(Y+4|0,da(a+(X+-4<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 211:{V=X+-2|0;ea(Y|0,Yq(W,77,da(a+(V<<4)+16|0,4,0,0)|0|0,0,0)|0|0,4,0);ea(Y+4|0,da(a+(V<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 212:{T=X+-2|0;U=a+(X<<4)+16|0;V=Yq(W,73,da(a+(T<<4)+16|0,4,0,0)|0|0,da(U|0,4,0,0)|0|0,0)|0;ea(Y|0,V|0,4,0);ea(Y+4|0,da(a+(T<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);wr(W,da(U|0,4,0,0)|0|0,V,76);break}case 213:{T=X+-3|0;U=a+(X<<4)+16|0;V=Yq(W,148,da(a+(T<<4)+16|0,4,0,0)|0|0,da(U|0,4,0,0)|0|0,0)|0;ea(Y|0,V|0,4,0);ea(Y+4|0,da(a+(T<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);wr(W,da(U|0,4,0,0)|0|0,V,77);break}case 215:case 214:{V=X+-1|0;ea(Y|0,Yq(W,da(a+(V<<4)+14>>0|0,1,0,1)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,0,0)|0|0,4,0);ea(Y+4|0,da(a+(V<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);break}case 216:{ea(Y|0,Yq(W,157,da(a+(X<<4)+16|0,4,0,0)|0|0,0,0)|0|0,4,0);ea(Y+4|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);break}case 217:{ea(Y|0,Yq(W,158,da(a+(X<<4)+16|0,4,0,0)|0|0,0,0)|0|0,4,0);ea(Y+4|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);break}case 220:{d=kr(W,kr(W,0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0)|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0;e=X+-4|0;c=Yq(W,74,da(a+(e<<4)+16|0,4,0,0)|0|0,0,0)|0;ea(Y|0,c|0,4,0);if(!c)Mk(da(W|0,4,0,0)|0|0,d);else ea(c+20|0,d|0,4,0);if(da(a+(X+-3<<4)+16|0,4,0,0)|0)ea(Y|0,Yq(W,19,da(Y|0,4,0,0)|0|0,0,0)|0|0,4,0);ea(Y+4|0,da(a+(e<<4)+20|0,4,0,0)|0|0,4,0);ea(Y+8|0,da(a+(X<<4)+24|0,4,0,0)|0|0,4,0);break}case 224:{c=Yq(W,119,0,0,0)|0;ea(Y|0,c|0,4,0);if(!c)Lk(da(W|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,1);else{ea(c+20|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);V=da(Y|0,4,0,0)|0|0;U=V+4|0;ea(U|0,da(U|0,4,0,0)|0|2099200|0,4,0);xr(W,V)}ea(Y+4|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+8|0,(da(a+(X<<4)+16|0,4,0,0)|0|0)+(da(a+(X<<4)+20|0,4,0,0)|0|0)|0,4,0);break}case 120:{ea(Y|0,jr(W,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,0,0,0,0,0,128,0,0)|0|0,4,0);break}case 118:{ea(Y|0,jr(W,da(a+(X+-6<<4)+16|0,4,0,0)|0|0,da(a+(X+-5<<4)+16|0,4,0,0)|0|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,da(a+(X+-7<<4)+16|0,2,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+20|0,4,0,0)|0|0)|0|0,4,0);break}case 121:{c=jr(W,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,0,0,0,0,0,128,0,0)|0;if(!c){ea(Y|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,4,0);break a}else{ea(c+4>>0|0,116|0,1,0);ea(c+52|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,4,0);ea(Y|0,c|0,4,0);break a}}case 122:{ea(Y|0,1|0,2,0);break}case 124:case 123:{ea(Y|0,0|0,2,0);break}case 243:case 125:{ea(Y|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);break}case 242:case 236:case 161:case 154:case 126:{ea(Y|0,0|0,4,0);break}case 127:{e=X+-1|0;g=kr(W,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,da(a+(e<<4)+16|0,4,0,0)|0|0)|0;ea(Y|0,g|0,4,0);if(da(a+(X<<4)+20|0,4,0,0)|0)lr(W,g,a+(X<<4)+16|0,1);k=da(W|0,4,0,0)|0|0;if(g){h=(da(g+4|0,4,0,0)|0|0)+(((da(g|0,4,0,0)|0|0)+-1|0)*20|0)+8|0;lg(k,da(h|0,4,0,0)|0|0);f=da(a+(e<<4)+20|0,4,0,0)|0|0;g=(da(a+(e<<4)+24|0,4,0,0)|0|0)-f|0;if((f|0)!=0?(c=iw(g|0,((g|0)<0)<<31>>31|0,1,0)|0,c=lh(k,c,C)|0,(c|0)!=0):0){jw(c|0,f|0,g|0)|0;ea(c+g>>0|0,0|0,1,0)}else c=0;ea(h|0,c|0,4,0)}break}case 133:{e=lh(da(W|0,4,0,0)|0|0,80,0)|0;if(e){q=e+0|0;d=q+80|0;do{ea(q>>0|0,0|0,1,0);q=q+1|0}while((q|0)<(d|0))}ea(Y|0,e|0,4,0);break}case 134:{g=da(a+(X<<4)+16|0,4,0,0)|0|0;ea(Y|0,g|0,4,0);if(g){e=da(g|0,4,0,0)|0|0;d=e+-1|0;if((d|0)>0)while(1){ea(g+(d*72|0)+44>>0|0,da(g+((e+-2|0)*72|0)+44>>0|0,1,0,0)|0|0|0,1,0);e=d+-1|0;if((e|0)>0){W=d;d=e;e=W}else break}ea(g+44>>0|0,0|0,1,0)}break}case 128:{U=da(W|0,4,0,0)|0|0;ea(V|0,0|0,4,0);ea(V+4|0,0|0,4,0);V=mr(U,116,V,0)|0;ea(Y|0,kr(W,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,V)|0|0,4,0);break}case 132:{ea(Y+4|0,0|0,4,0);break}case 129:{V=Yq(W,116,0,0,a+(X<<4)+16|0)|0;V=Yq(W,122,Yq(W,27,0,0,a+(X+-2<<4)+16|0)|0,V,0)|0;ea(Y|0,kr(W,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,V)|0|0,4,0);break}case 136:{ea(Y|0,0|0,4,0);break}case 137:{V=ir(W,da(a+(X+-6<<4)+16|0,4,0,0)|0|0,a+(X+-5<<4)+16|0,a+(X+-4<<4)+16|0,a+(X+-3<<4)+16|0,0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0;ea(Y|0,V|0,4,0);nr(W,V,a+(X+-2<<4)+16|0);break}case 135:{c=da(a+(X+-1<<4)+16|0,4,0,0)|0|0;ea(Y|0,c|0,4,0);if((c|0)!=0?(t=da(c|0,4,0,0)|0|0,(t|0)>0):0)ea(c+((t+-1|0)*72|0)+44>>0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,1,0);break}case 138:{ea(Y|0,ir(W,da(a+(X+-6<<4)+16|0,4,0,0)|0|0,0,0,a+(X+-2<<4)+16|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0|0,4,0);break}case 139:{e=a+(X+-6<<4)+16|0;g=da(e|0,4,0,0)|0|0;if((((g|0)==0?(da(a+(X+-2<<4)+20|0,4,0,0)|0|0)==0:0)?(da(a+(X+-1<<4)+16|0,4,0,0)|0|0)==0:0)?(da(a+(X<<4)+16|0,4,0,0)|0|0)==0:0){ea(Y|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,4,0);break a}k=a+(X+-4<<4)+16|0;d=da(k|0,4,0,0)|0|0;h=da(d|0,4,0,0)|0|0;if((h|0)==1){e=ir(W,g,0,0,a+(X+-2<<4)+16|0,0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0;ea(Y|0,e|0,4,0);if(e){S=(da(e|0,4,0,0)|0|0)+-1|0;V=da(k|0,4,0,0)|0|0;U=V+16|0;ea(e+(S*72|0)+16|0,da(U|0,4,0,0)|0|0,4,0);T=V+12|0;ea(e+(S*72|0)+12|0,da(T|0,4,0,0)|0|0,4,0);V=V+28|0;ea(e+(S*72|0)+28|0,da(V|0,4,0,0)|0|0,4,0);ea(T|0,0|0,4,0);ea(U|0,0|0,4,0);ea(V|0,0|0,4,0)}Co(da(W|0,4,0,0)|0|0,da(k|0,4,0,0)|0|0);break a}if(d){f=h+-1|0;if((f|0)>0){g=h;while(1){ea(d+(f*72|0)+44>>0|0,da(d+((g+-2|0)*72|0)+44>>0|0,1,0,0)|0|0|0,1,0);g=f+-1|0;if((g|0)>0){V=f;f=g;g=V}else break}}ea(d+44>>0|0,0|0,1,0)}V=jr(W,0,d,0,0,0,0,512,0,0)|0;ea(Y|0,ir(W,da(e|0,4,0,0)|0|0,0,0,a+(X+-2<<4)+16|0,V,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,da(a+(X<<4)+16|0,4,0,0)|0|0)|0|0,4,0);break}case 149:case 140:{ea(Y|0,0|0,4,0);ea(Y+4|0,0|0,4,0);break}case 144:{ea(Y|0,pr(W,a+(X+-1<<4)+16|0,0,0)|0|0,4,0);break}case 145:{ea(Y|0,pr(W,a+(X+-2<<4)+16|0,a+(X+-1<<4)+16|0,0)|0|0,4,0);break}case 146:{ea(Y|0,pr(W,a+(X+-3<<4)+16|0,a+(X+-2<<4)+16|0,a+(X+-1<<4)+16|0)|0|0,4,0);break}case 233:case 231:case 171:case 164:case 147:{ea(Y|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);break}case 234:case 232:case 170:case 163:case 148:{ea(Y|0,0|0,4,0);break}case 151:{ea(Y|0,0|0,4,0);ea(Y+4|0,1|0,4,0);break}case 143:{ea(Y|0,1|0,4,0);break}case 142:{ea(Y|0,or(da(W|0,4,0,0)|0|0,0,a+(X+-1<<4)+16|0,a+(X<<4)+16|0)|0|0,4,0);break}case 235:case 162:case 155:{ea(Y|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);break}case 156:{c=kr(W,da(a+(X+-3<<4)+16|0,4,0,0)|0|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0)|0;ea(Y|0,c|0,4,0);if(c)ea((da(c+4|0,4,0,0)|0|0)+(((da(c|0,4,0,0)|0|0)+-1|0)*20|0)+12>>0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,1,0);break}case 157:{c=kr(W,0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0)|0;ea(Y|0,c|0,4,0);if((c|0)!=0?(d=da(c+4|0,4,0,0)|0|0,(d|0)!=0):0)ea(d+12>>0|0,da(a+(X<<4)+16|0,4,0,0)|0|0,1,0);break}case 179:case 153:{ea(Y|0,0|0,4,0);break}case 180:case 152:{ea(Y|0,da(a+(X+-1<<4)+16|0,4,0,0)|0|0,4,0);break}case 159:{ea(Y|0,1|0,4,0);break}case 165:{ea(Y|0,0|0,4,0);ea(Y+4|0,0|0,4,0);break}case 166:{ea(Y|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+4|0,0|0,4,0);break}case 167:{ea(Y|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,4,0);ea(Y+4|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);break}case 168:{ea(Y+4|0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0,4,0);ea(Y|0,da(a+(X<<4)+16|0,4,0,0)|0|0,4,0);break}case 172:{e=da(a+(X+-7<<4)+16|0,4,0,0)|0|0;if(e){U=W+532|0;ea(e+4|0,da(U|0,4,0,0)|0|0,4,0);ea(U|0,e|0,4,0);ea(W+449>>0|0,1|0,1,0)}f=a+(X+-4<<4)+16|0;nr(W,da(f|0,4,0,0)|0|0,a+(X+-3<<4)+16|0);g=a+(X+-1<<4)+16|0;e=da(g|0,4,0,0)|0|0;if(e){if((da(e|0,4,0,0)|0|0)>(da((da(W|0,4,0,0)|0|0)+96|0,4,0,0)|0|0)){ea(V|0,20560|0,4,0);sh(W,34544,V);e=da(g|0,4,0,0)|0|0}}else e=0;rr(W,da(f|0,4,0,0)|0|0,e,da(a+(X<<4)+16|0,4,0,0)|0|0,da(a+(X+-5<<4)+16>>0|0,1,0,1)|0|0);break}case 160:case 158:{ea(Y|0,0|0,4,0);break}case 22:{Sq(W,0,a+(X<<4)+16|0);break}case 23:{Sq(W,1,a+(X<<4)+16|0);break}case 24:{Sq(W,2,a+(X<<4)+16|0);break}case 26:{Tq(W,a+(X+-1<<4)+16|0,a+(X<<4)+16|0,da(a+(X+-4<<4)+16|0,4,0,0)|0|0,0,0,da(a+(X+-2<<4)+16|0,4,0,0)|0|0);break}default:{}}while(0);c=da(20912+(b<<1)>>0|0,1,0,0)|0|0;h=c&255;g=da(20913+(b<<1)>>0|0,1,0,0)|0|0;f=g&255;k=(da(a|0,4,0,0)|0|0)-f|0;ea(a|0,k|0,4,0);e=da(22184+((da(21568+((da(a+(X-f<<4)+12|0,2,0,1)|0)<<1)|0,2,0,0)|0|0)+h<<1)|0,2,0,0)|0|0;d=e&65535;do if((e&65535)<642)if(!(g<<24>>24)){jq(a,d,h,Y);break}else{ea(a|0,k+1|0,4,0);X=1-f+X|0;ea(a+(X<<4)+12|0,e|0,2,0);ea(a+(X<<4)+14>>0|0,c|0,1,0);X=a+(X<<4)+16|0;ea(X+0|0,da(Y+0|0,4,0,0)|0|0,4,0);ea(X+4|0,da(Y+4|0,4,0,0)|0|0,4,0);ea(X+8|0,da(Y+8|0,4,0,0)|0|0,4,0);break}else{c=da(Z|0,4,0,0)|0|0;if((k|0)>-1)do On(a);while((da(a|0,4,0,0)|0|0)>-1);ea(Z|0,c|0,4,0)}while(0);i=_;return}function mq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=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,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;Z=i;i=i+64|0;if((i|0)>=(j|0))ba();Y=Z+8|0;T=Z;h=Z+24|0;d=Z+16|0;f=wq(a,0,d)|0;do if(!f){if(da(d|0,4,0,0)|0){f=cs(a,b)|0;if(!f)c=0;else e=4}else{f=1;e=4}if((e|0)==4){X=a+43|0;e=(da(X>>0|0,1,0,0)|0|0)==0;do if(!((da(a+46>>0|0,1,0,0)|0)&2)){if(e?(g=a+4|0,W=da(g|0,4,0,0)|0|0,$b[(fa(da((da(W|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,63|0)|0)&63](W,24,0)|0,g=da(g|0,4,0,0)|0|0,g=oc[(fa(da((da(g|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](g,0,1,10)|0,(g|0)!=0):0){d=f;c=g;break}W=a+44|0;ea(W>>0|0,1|0,1,0);e=wq(a,0,d)|0;if(!e){d=cs(a,b)|0;if(!d){d=0;c=0}else{V=da(a+45>>0|0,1,0,1)|0|0;U=V+1|0;V=7-V|0;if(!((da(X>>0|0,1,0,0)|0|0)==0?(c=da(a+4|0,4,0,0)|0|0,c=oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,U,V,10)|0,(c|0)!=0):0)){f=a+52|0;e=f+48|0;do{ea(f|0,0|0,4,0);f=f+4|0}while((f|0)<(e|0));N=a+8|0;c=da(N|0,4,0,0)|0|0;c=qc[(fa(da((da(c|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](c,T)|0;a:do if(!c){O=T;M=da(O+4|0,4,0,0)|0|0;b:do if((M|0)>0|(M|0)==0&(da(O|0,4,0,0)|0|0)>>>0>32){c=da(N|0,4,0,0)|0|0;c=sc[(fa(da((da(c|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](c,h,32,0,0)|0;if(c)break a;g=da(h+3>>0|0,1,0,1)|0|0;e=(da(h+9>>0|0,1,0,1)|0)<<16|(da(h+8>>0|0,1,0,1)|0)<<24;c=(da(h+10>>0|0,1,0,1)|0)<<8;f=e|c|(da(h+11>>0|0,1,0,1)|0);if((((da(h+1>>0|0,1,0,1)|0)<<16|(da(h>>0|0,1,0,1)|0)<<24|(da(h+2>>0|0,1,0,1)|0)<<8|g&254|0)==931071618?!((f+-1&f|0)!=0|(f|0)>65536|(f|0)<512):0)?(O=g&1,P=a+65|0,ea(P>>0|0,O|0,1,0),Q=a+36|0,ea(Q|0,f|0,4,0),ea(a+104|0,(da(h+13>>0|0,1,0,1)|0)<<16|(da(h+12>>0|0,1,0,1)|0)<<24|(da(h+14>>0|0,1,0,1)|0)<<8|(da(h+15>>0|0,1,0,1)|0)|0,4,0),R=a+84|0,S=h+16|0,L=S,L=da(L>>0|0,1,0,1)|0|(da(L+1>>0|0,1,0,1)|0)<<8|(da(L+2>>0|0,1,0,1)|0)<<16|(da(L+3>>0|0,1,0,1)|0)<<24,S=S+4|0,S=da(S>>0|0,1,0,1)|0|(da(S+1>>0|0,1,0,1)|0)<<8|(da(S+2>>0|0,1,0,1)|0)<<16|(da(S+3>>0|0,1,0,1)|0)<<24,M=R,K=M,ea(K>>0|0,L|0,1,0),ea(K+1>>0|0,L>>8|0,1,0),ea(K+2>>0|0,L>>16|0,1,0),ea(K+3>>0|0,L>>24|0,1,0),M=M+4|0,ea(M>>0|0,S|0,1,0),ea(M+1>>0|0,S>>8|0,1,0),ea(M+2>>0|0,S>>16|0,1,0),ea(M+3>>0|0,S>>24|0,1,0),S=a+76|0,xq(O^1,h,24,0,S),(da(S|0,4,0,0)|0|0)==((da(h+25>>0|0,1,0,1)|0)<<16|(da(h+24>>0|0,1,0,1)|0)<<24|(da(h+26>>0|0,1,0,1)|0)<<8|(da(h+27>>0|0,1,0,1)|0)|0)):0){M=a+80|0;if((da(M|0,4,0,0)|0|0)!=((da(h+29>>0|0,1,0,1)|0)<<16|(da(h+28>>0|0,1,0,1)|0)<<24|(da(h+30>>0|0,1,0,1)|0)<<8|(da(h+31>>0|0,1,0,1)|0)|0)){f=0;c=0;break}if(((da(h+5>>0|0,1,0,1)|0)<<16|(da(h+4>>0|0,1,0,1)|0)<<24|(da(h+6>>0|0,1,0,1)|0)<<8|(da(h+7>>0|0,1,0,1)|0)|0)!=3007e3){ea(Y|0,49983|0,4,0);ea(Y+4|0,10788|0,4,0);ad(14,14848,Y);c=14;break a}J=f+24|0;O=Sc(J)|0;if(!O){c=7;break a}K=O+24|0;L=((J|0)<0)<<31>>31;h=iw(J|0,L|0,32,0)|0;f=C;g=T;I=da(g+4|0,4,0,0)|0|0;c:do if(!((f|0)>(I|0)|((f|0)==(I|0)?h>>>0>(da(g|0,4,0,0)|0|0)>>>0:0))){q=O+8|0;r=O+1|0;s=O+2|0;t=O+3|0;u=O+16|0;v=O+17|0;w=O+18|0;x=O+19|0;y=O+20|0;z=O+21|0;A=O+22|0;B=O+23|0;D=O+4|0;E=O+5|0;F=O+6|0;G=O+7|0;H=a+68|0;I=a+72|0;o=(e>>>16|c)&65535;p=a+66|0;k=32;g=0;m=f;f=0;l=0;n=1;while(1){c=da(N|0,4,0,0)|0|0;c=sc[(fa(da((da(c|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](c,O,J,k,g)|0;if(c){e=36;break}if(Yv(R,q,8)|0){c=l;e=37;break}g=(da(r>>0|0,1,0,1)|0)<<16|(da(O>>0|0,1,0,1)|0)<<24|(da(s>>0|0,1,0,1)|0)<<8|(da(t>>0|0,1,0,1)|0);if(!g){c=l;e=37;break}k=(da(P>>0|0,1,0,0)|0|0)==0&1;xq(k,O,8,S,S);xq(k,K,da(Q|0,4,0,0)|0|0,S,S);if((da(S|0,4,0,0)|0|0)!=((da(v>>0|0,1,0,1)|0)<<16|(da(u>>0|0,1,0,1)|0)<<24|(da(w>>0|0,1,0,1)|0)<<8|(da(x>>0|0,1,0,1)|0)|0)){c=l;e=37;break}if((da(M|0,4,0,0)|0|0)!=((da(z>>0|0,1,0,1)|0)<<16|(da(y>>0|0,1,0,1)|0)<<24|(da(A>>0|0,1,0,1)|0)<<8|(da(B>>0|0,1,0,1)|0)|0)){c=l;break c}e=(da(E>>0|0,1,0,1)|0)<<16|(da(D>>0|0,1,0,1)|0)<<24|(da(F>>0|0,1,0,1)|0)<<8|(da(G>>0|0,1,0,1)|0);c=Zo(a,n,g)|0;if(c){e=36;break}if(!e)c=l;else{ea(H|0,n|0,4,0);ea(I|0,e|0,4,0);ea(p|0,o|0,2,0);f=da(S|0,4,0,0)|0|0;c=da(M|0,4,0,0)|0|0}g=iw(h|0,m|0,J|0,L|0)|0;e=C;k=T;l=da(k+4|0,4,0,0)|0|0;if((e|0)>(l|0)|((e|0)==(l|0)?g>>>0>(da(k|0,4,0,0)|0|0)>>>0:0))break c;else{_=m;k=h;h=g;m=e;l=c;n=n+1|0;g=_}}if((e|0)==36){Vc(O);break a}else if((e|0)==37){Vc(O);break b}}else{f=0;c=0}while(0);Vc(O)}else{f=0;c=0}}else{f=0;c=0}while(0);ea(a+76|0,f|0,4,0);ea(a+80|0,c|0,4,0);_o(a);e=da(da(a+32|0,4,0,0)|0|0,4,0,0)|0|0;ea(e+96|0,0|0,4,0);ea(e+100|0,0|0,4,0);c=e+104|0;ea(c|0,-1|0,4,0);ea(e+108|0,-1|0,4,0);ea(e+112|0,-1|0,4,0);ea(e+116|0,-1|0,4,0);e=a+68|0;f=da(e|0,4,0,0)|0|0;if(f)ea(c|0,f|0,4,0);if(!(da(a+72|0,4,0,0)|0))c=0;else{c=da(a+100|0,4,0,0)|0|0;ea(Y|0,da(e|0,4,0,0)|0|0,4,0);ea(Y+4|0,c|0,4,0);ad(283,14888,Y);c=0}}while(0);if(!(da(X>>0|0,1,0,0)|0)){T=da(a+4|0,4,0,0)|0|0;oc[(fa(da((da(T|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](T,U,V,9)|0}}ea(b|0,1|0,4,0)}}else{d=f;c=e}ea(W>>0|0,0|0,1,0);if(!(da(X>>0|0,1,0,0)|0)){X=da(a+4|0,4,0,0)|0|0;oc[(fa(da((da(X|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](X,0,1,9)|0}}else if(e){d=a+4|0;c=da(d|0,4,0,0)|0|0;c=oc[(fa(da((da(c|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](c,0,1,6)|0;if(!c)if(!(da(X>>0|0,1,0,0)|0)){d=da(d|0,4,0,0)|0|0;oc[(fa(da((da(d|0,4,0,0)|0|0)+56|0,4,0,0)|0|0,31|0)|0)&31](d,0,1,5)|0;d=f;c=264}else{d=f;c=264}else d=f}else{d=f;c=264}while(0);if(d)break}if((da(a+52|0,4,0,0)|0|0)!=3007e3){ea(Y|0,50909|0,4,0);ea(Y+4|0,10788|0,4,0);ad(14,14848,Y);c=14}}else c=f;while(0);i=Z;return c|0}function nq(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,k=0,l=0,m=0,n=0,o=0,p=0;m=da(e|0,4,0,0)|0|0;n=da(d|0,4,0,0)|0|0;h=(m|0)>0;g=(c|0)>0;if(h|g){k=g;i=0;l=0;j=0;while(1){do if(k){g=b+(i<<1)|0;if(h?(o=n+(j<<1)|0,(da(a+((da(g|0,2,0,1)|0|0)<<2)|0,4,0,0)|0|0)>>>0>=(da(a+((da(o|0,2,0,1)|0|0)<<2)|0,4,0,0)|0|0)>>>0):0){h=o;p=7;break}i=i+1|0;h=g}else{h=n+(j<<1)|0;p=7}while(0);if((p|0)==7){p=0;j=j+1|0}k=da(h|0,2,0,0)|0|0;h=da(a+((k&65535)<<2)|0,4,0,0)|0|0;g=l+1|0;ea(f+(l<<1)|0,k|0,2,0);if((i|0)<(c|0))i=((da(a+((da(b+(i<<1)|0,2,0,1)|0|0)<<2)|0,4,0,0)|0|0)==(h|0)&1)+i|0;h=(j|0)<(m|0);k=(i|0)<(c|0);if(!(h|k))break;else l=g}}else g=0;ea(d|0,b|0,4,0);ea(e|0,g|0,4,0);jw(b|0,f|0,g<<1|0)|0;return}function oq(a,b){a=a|0;b=b|0;var c=0,d=0;d=da(a+4|0,4,0,0)|0|0;ea(d+4|0,da(a|0,4,0,0)|0|0,4,0);a=da((da(d|0,4,0,0)|0|0)+204|0,4,0,0)|0|0;ea(a+16|0,b|0,4,0);d=da(2217*4|0,4,0,0)|0|0;c=da(a+40|0,4,0,0)|0|0;if((b|0)>-1)a=b;else{b=rw(b|0,((b|0)<0)<<31>>31|0,-1024,-1)|0;a=(da(a+24|0,4,0,0)|0|0)+(da(a+20|0,4,0,0)|0|0)|0;a=pw(b|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0}ic[(fa(d|0,15|0)|0)&15](c,a);return}function pq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=(da(a+12|0,4,0,0)|0|0)+136|0;c=e;d=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;do if((d|0)==0&(c|0)==0)if(!(ah(da(da((da(a|0,4,0,0)|0|0)+32|0,4,0,0)|0|0,4,0,0)|0|0,e)|0)){c=e;d=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;f=5;break}else{c=e;ea(c|0,0|0,4,0);ea(c+4|0,0|0,4,0);c=b;ea(c|0,0|0,4,0);ea(c+4|0,0|0,4,0);c=1;break}else f=5;while(0);if((f|0)==5){e=b;ea(e|0,d|0,4,0);ea(e+4|0,c|0,4,0);if((c|0)>0|(c|0)==0&d>>>0>0){ea(b+42>>0|0,1|0,1,0);c=0}else c=1}return c|0}function qq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();l=n;ea(l|0,b|0,4,0);b=a;a=0;a:while(1){f=da(l|0,4,0,0)|0|0;e=da(f|0,4,0,0)|0|0;ea(l|0,f+4|0,4,0);f=da(l|0,4,0,0)|0|0;g=da(f|0,4,0,0)|0|0;ea(l|0,f+4|0,4,0);f=da(l|0,4,0,0)|0|0;h=da(f|0,4,0,0)|0|0;ea(l|0,f+4|0,4,0);f=da(l|0,4,0,0)|0|0;k=da(f|0,4,0,0)|0|0;ea(l|0,f+4|0,4,0);f=da(l|0,4,0,0)|0|0;c=da(f|0,4,0,0)|0|0;ea(l|0,f+4|0,4,0);if(!e){d=b;b=0}else{d=b;b=0;do{e=e+-1|0;f=da(d>>0|0,1,0,0)|0|0;if(((f&255)+-48|0)>>>0>=10)break a;b=(b*10|0)+-48+(f<<24>>24)|0;d=d+1|0}while((e|0)!=0)}if((b|0)<(g|0)|(b|0)>(h|0))break;if(!k){m=9;break}if((k|0)!=(da(d>>0|0,1,0,0)|0|0))break;ea(c|0,b|0,4,0);b=d+1|0;a=a+1|0}if((m|0)==9){ea(c|0,b|0,4,0);a=a+1|0}i=n;return a|0}function rq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0,g=0,h=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+64|0;if((i|0)>=(j|0))ba();o=q;m=q+56|0;n=q+52|0;c=q+48|0;k=q+44|0;l=q+40|0;ea(o|0,2|0,4,0);ea(o+4|0,0|0,4,0);ea(o+8|0,24|0,4,0);ea(o+12|0,58|0,4,0);ea(o+16|0,c|0,4,0);ea(o+20|0,2|0,4,0);ea(o+24|0,0|0,4,0);ea(o+28|0,59|0,4,0);ea(o+32|0,0|0,4,0);ea(o+36|0,k|0,4,0);do if((qq(a,o)|0)==2){g=a+5|0;if((da(g>>0|0,1,0,0)|0|0)==58){ea(o|0,2|0,4,0);ea(o+4|0,0|0,4,0);ea(o+8|0,59|0,4,0);ea(o+12|0,0|0,4,0);ea(o+16|0,l|0,4,0);if((qq(a+6|0,o)|0)!=1){c=1;break}g=a+8|0;if((da(g>>0|0,1,0,0)|0|0)==46?(d=a+9|0,e=da(d>>0|0,1,0,0)|0|0,((e&255)+-48|0)>>>0<10):0){h=0.0;f=1.0;do{h=h*10.0+ +(e<<24>>24)+-48.0;f=f*10.0;d=d+1|0;e=da(d>>0|0,1,0,0)|0|0}while(((e&255)+-48|0)>>>0<10);f=h/f}else{d=g;f=0.0}}else{ea(l|0,0|0,4,0);d=g;f=0.0}ea(b+42>>0|0,0|0,1,0);ea(b+41>>0|0,1|0,1,0);ea(b+20|0,da(c|0,4,0,0)|0|0,4,0);ea(b+24|0,da(k|0,4,0,0)|0|0,4,0);ea(b+32|0,+(f+ +(da(l|0,4,0,0)|0|0)),8,1);while(1){c=d+1|0;if(!((da(10368+(da(d>>0|0,1,0,1)|0|0)>>0|0,1,0,0)|0)&1)){g=d;break}else d=c}a=b+28|0;ea(a|0,0|0,4,0);d=da(g>>0|0,1,0,0)|0|0;if(d<<24>>24==45){e=-1;p=14}else if(d<<24>>24!=43)if((d&-33)<<24>>24==90){e=0;p=16}else c=0;else{e=1;p=14}if((p|0)==14){ea(o|0,2|0,4,0);ea(o+4|0,0|0,4,0);ea(o+8|0,14|0,4,0);ea(o+12|0,58|0,4,0);ea(o+16|0,m|0,4,0);ea(o+20|0,2|0,4,0);ea(o+24|0,0|0,4,0);ea(o+28|0,59|0,4,0);ea(o+32|0,0|0,4,0);ea(o+36|0,n|0,4,0);if((qq(c,o)|0)!=2){c=1;break}e=_(((da(m|0,4,0,0)|0|0)*60|0)+(da(n|0,4,0,0)|0|0)|0,e)|0;ea(a|0,e|0,4,0);c=g+6|0;p=16}if((p|0)==16)while(1){d=da(c>>0|0,1,0,0)|0|0;if(!((da(10368+(d&255)>>0|0,1,0,0)|0)&1)){c=e;break}else c=c+1|0}if(!(d<<24>>24)){ea(b+43>>0|0,(c|0)!=0&1|0,1,0);c=0}else c=1}else c=1;while(0);i=q;return c|0}function sq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0.0,m=0;k=i;i=i+112|0;if((i|0)>=(j|0))ba();f=k+48|0;h=k;g=k+96|0;d=f+0|0;e=a+0|0;a=d+48|0;do{ea(d|0,da(e|0,4,0,0)|0|0,4,0);d=d+4|0;e=e+4|0}while((d|0)<(a|0));no(f);oo(f);a=f+8|0;if(((da(a|0,4,0,0)|0|0)+-1971|0)>>>0>66){ea(a|0,2e3|0,4,0);ea(f+12|0,1|0,4,0);ea(f+16|0,1|0,4,0);ea(f+20|0,0|0,4,0);ea(f+24|0,0|0,4,0);ea(f+32|0,+(0.0),8,1)}else{d=f+32|0;ea(d|0,+(+(~~(+(+da(d|0,8,1,0))+.5)|0)),8,1)}ea(f+28|0,0|0,4,0);ea(f+42>>0|0,0|0,1,0);mo(f);e=f;d=da(e|0,4,0,0)|0|0;e=da(e+4|0,4,0,0)|0|0;a=pw(d|0,e|0,1e3,0)|0;a=iw(a|0,C|0,-413362496,0)|0;ea(g|0,a|0,4,0);a=Ub(g|0)|0;a=(da(2253*4|0,4,0,0)|0|0)!=0?0:a;if(!a){ea(b+20|0,1|0,4,0);ea(b+25>>0|0,1|0,1,0);Wg(da(b|0,4,0,0)|0|0,20056,-1,1,-1)|0;ea(c|0,1|0,4,0);d=0;a=0}else{f=da(a+4|0,4,0,0)|0|0;g=da(a+8|0,4,0,0)|0|0;b=da(a+12|0,4,0,0)|0|0;m=(da(a+16|0,4,0,0)|0|0)+1|0;l=+(da(a|0,4,0,0)|0|0);ea(h+8|0,(da(a+20|0,4,0,0)|0|0)+1900|0,4,0);ea(h+12|0,m|0,4,0);ea(h+16|0,b|0,4,0);ea(h+20|0,g|0,4,0);ea(h+24|0,f|0,4,0);ea(h+32|0,+l,8,1);ea(h+40>>0|0,1|0,1,0);ea(h+41>>0|0,1|0,1,0);ea(h+42>>0|0,0|0,1,0);ea(h+43>>0|0,0|0,1,0);mo(h);ea(c|0,0|0,4,0);a=h;a=cw(da(a|0,4,0,0)|0|0,da(a+4|0,4,0,0)|0|0,d|0,e|0)|0;d=C}C=d;i=k;return a|0}function tq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;if((i|0)>=(j|0))ba();m=n+12|0;h=n;l=n+8|0;g=n+16|0;ea(b>>0|0,0|0,1,0);d=qc[(fa(da((da(a|0,4,0,0)|0|0)+24|0,4,0,0)|0|0,127|0)|0)&127](a,h)|0;f=h;e=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;if(!((d|0)!=0|((f|0)<0|(f|0)==0&e>>>0<16))){d=iw(e|0,f|0,-16,-1)|0;d=ds(a,d,C,m)|0;if(!d){k=da(m|0,4,0,0)|0|0;if(!(k>>>0>=c>>>0|(k|0)==0)){d=h;d=iw(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0,-12,-1)|0;d=ds(a,d,C,l)|0;if(!d){d=h;d=iw(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0,-8,-1)|0;d=sc[(fa(da((da(a|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](a,g,8,d,C)|0;if(!d)if(!(Yv(g,14808,8)|0)){d=h;d=iw(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0,-16,-1)|0;d=cw(d|0,C|0,k|0,0)|0;d=sc[(fa(da((da(a|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](a,b,k,d,C)|0;if(!d){e=da(l|0,4,0,0)|0|0;f=0;while(1){c=da(b+f>>0|0,1,0,0)|0|0;d=e-c|0;f=f+1|0;if(f>>>0>=k>>>0)break;else e=d}ea(l|0,d|0,4,0);if((e|0)==(c|0))d=k;else{ea(m|0,0|0,4,0);d=0}ea(b+d>>0|0,0|0,1,0);d=0}}else d=0}}else d=0}}i=n;return d|0}function uq(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();k=r+8|0;p=r+4|0;n=r;q=a+72|0;g=q;h=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;if((h|0)==0&(g|0)==0){l=0;m=0;h=da(a+148|0,4,0,0)|0|0}else{l=iw(h|0,g|0,-1,-1)|0;h=da(a+148|0,4,0,0)|0|0;l=pw(l|0,C|0,h|0,0)|0;l=iw(l|0,C|0,1,0)|0;l=rw(l|0,C|0,h|0,0)|0;m=C}o=q;ea(o|0,l|0,4,0);ea(o+4|0,m|0,4,0);o=a+148|0;h=iw(h|0,0,l|0,m|0)|0;g=C;do if(!((g|0)>(d|0)|(g|0)==(d|0)&h>>>0>c>>>0)){if((b|0)==0?(h=a+80|0,(l|0)==(da(h|0,4,0,0)|0|0)?(m|0)==(da(h+4|0,4,0,0)|0|0):0):0)c=a+64|0;else{h=a+64|0;d=da(h|0,4,0,0)|0|0;d=sc[(fa(da((da(d|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](d,k,8,l,m)|0;if(d)break;if(!(Yv(k,14808,8)|0))c=h;else{d=101;break}}k=da(c|0,4,0,0)|0|0;d=iw(l|0,m|0,8,0)|0;d=ds(k,d,C,e)|0;if(!d){e=da(c|0,4,0,0)|0|0;d=iw(l|0,m|0,12,0)|0;d=ds(e,d,C,a+48|0)|0;if(!d){e=da(c|0,4,0,0)|0|0;d=iw(l|0,m|0,16,0)|0;d=ds(e,d,C,f)|0;if(!d){g=q;h=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;if((h|0)==0&(g|0)==0){f=da(c|0,4,0,0)|0|0;d=iw(l|0,m|0,20,0)|0;d=ds(f,d,C,n)|0;if(d)break;f=da(c|0,4,0,0)|0|0;d=iw(l|0,m|0,24,0)|0;d=ds(f,d,C,p)|0;if(d)break;c=da(p|0,4,0,0)|0|0;if(!c){g=da(a+152|0,4,0,0)|0|0;ea(p|0,g|0,4,0)}else g=c;c=da(n|0,4,0,0)|0|0;if(g>>>0<512|c>>>0<32|g>>>0>65536|c>>>0>65536){d=101;break}if(g+-1&g){d=101;break}if(c+-1&c){d=101;break}d=$k(a,p,-1)|0;ea(o|0,c|0,4,0);g=q;h=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0}else{c=da(o|0,4,0,0)|0|0;d=0}l=iw(h|0,g|0,c|0,0)|0;m=q;ea(m|0,l|0,4,0);ea(m+4|0,C|0,4,0)}}}}else d=101;while(0);i=r;return d|0}function vq(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,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;x=i;i=i+16|0;if((i|0)>=(j|0))ba();s=x+8|0;l=x+4|0;o=x;v=da(a+200|0,4,0,0)|0|0;w=(d|0)!=0;m=da((w?a+64|0:a+68|0)|0,4,0,0)|0|0;f=b;f=ds(m,da(f|0,4,0,0)|0|0,da(f+4|0,4,0,0)|0|0,l)|0;do if(!f){u=a+152|0;k=da(u|0,4,0,0)|0|0;f=b;f=iw(da(f|0,4,0,0)|0|0,da(f+4|0,4,0,0)|0|0,4,0)|0;f=sc[(fa(da((da(m|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](m,v,k,f,C)|0;if(!f){k=da(u|0,4,0,0)|0|0;g=(d<<2)+4+k|0;h=b;h=iw(g|0,((g|0)<0)<<31>>31|0,da(h|0,4,0,0)|0|0,da(h+4|0,4,0,0)|0|0)|0;g=C;r=b;ea(r|0,h|0,4,0);ea(r+4|0,g|0,4,0);r=da(l|0,4,0,0)|0|0;if((r|0)!=0?(r|0)!=(((da(2514*4|0,4,0,0)|0|0)/(k|0)|0)+1|0):0)if(r>>>0<=(da(a+24|0,4,0,0)|0|0)>>>0?(ci(c,r)|0)==0:0){if(w){f=iw(h|0,g|0,-4,-1)|0;f=ds(m,f,C,o)|0;if(f)break;if(!e){k=da(a+48|0,4,0,0)|0|0;h=(da(u|0,4,0,0)|0|0)+-200|0;if((h|0)>0)do{k=(da(v+h>>0|0,1,0,1)|0|0)+k|0;h=h+-200|0}while((h|0)>0);if((k|0)!=(da(o|0,4,0,0)|0|0)){f=101;break}}}if((c|0)!=0?(n=ai(c,r)|0,(n|0)!=0):0){f=n;break}n=(r|0)==1;if(n?(p=a+142|0,q=da(v+20>>0|0,1,0,0)|0|0,(da(p|0,2,0,0)|0|0)!=(q&255|0)):0)ea(p|0,q&255|0,2,0);if(!(da(a+208|0,4,0,0)|0)){c=a+204|0;l=$b[(fa(da(8744+132|0,4,0,0)|0|0,63|0)|0)&63](da((da(c|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,r,0)|0;l=hl(da(c|0,4,0,0)|0|0,r,l)|0}else l=0;ea(s|0,l|0,4,0);if(w)if(!(da(a+7>>0|0,1,0,0)|0)){h=b;o=da(h+4|0,4,0,0)|0|0;g=a+80|0;c=da(g+4|0,4,0,0)|0|0;h=(o|0)<(c|0)|((o|0)==(c|0)?(da(h|0,4,0,0)|0|0)>>>0<=(da(g|0,4,0,0)|0|0)>>>0:0)}else h=1;else if(!l)h=1;else h=((da(l+24|0,2,0,0)|0)&4)==0;g=da(a+60|0,4,0,0)|0|0;f=da(g|0,4,0,0)|0|0;do if(f){k=da(a+16>>0|0,1,0,0)|0|0;if((k&255)>3){if(!h){t=33;break}}else if(!(k<<24>>24==0&h)){t=33;break}c=da(u|0,4,0,0)|0|0;h=rw(c|0,((c|0)<0)<<31>>31|0,r+-1|0,0)|0;f=sc[(fa(da(f+12|0,4,0,0)|0|0,31|0)|0)&31](g,v,c,h,C)|0;h=a+32|0;if(r>>>0>(da(h|0,4,0,0)|0|0)>>>0)ea(h|0,r|0,4,0);h=da(a+88|0,4,0,0)|0|0;if(!h)k=l;else{$o(h,r,v);k=l}}else t=33;while(0);if((t|0)==33)if((d|0)==0&(l|0)==0){c=a+20|0;ea(c>>0|0,da(c>>0|0,1,0,1)|0|2|0,1,0);f=yg(a,r,s,1)|0;ea(c>>0|0,(da(c>>0|0,1,0,1)|0)&253|0,1,0);if(f)break;k=da(s|0,4,0,0)|0|0;f=k+24|0;ea(f|0,(da(f|0,2,0,1)|0)&65527|0,2,0);So(k);f=0}else{k=l;f=0}if(k){g=da(k+4|0,4,0,0)|0|0;jw(g|0,v|0,da(u|0,4,0,0)|0|0)|0;bc[(fa(da(a+196|0,4,0,0)|0|0,31|0)|0)&31](k);do if(w){if((e|0)!=0?(b,o=da(b+4|0,4,0,0)|0|0,h=a+80|0,c=da(h+4|0,4,0,0)|0|0,(o|0)>(c|0)|((o|0)==(c|0)?(da(b|0,4,0,0)|0|0)>>>0>(da(h|0,4,0,0)|0|0)>>>0:0)):0)break;wl(k)}while(0);if(n){b=a+104|0;g=g+24|0;h=b+16|0;do{ea(b>>0|0,da(g>>0|0,1,0,0)|0|0|0,1,0);b=b+1|0;g=g+1|0}while((b|0)<(h|0))}nl(k)}}else f=0;else f=101}}while(0);i=x;return f|0}function wq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=a+24|0;if((da(d|0,4,0,0)|0|0)<=(b|0)){f=b+1|0;g=a+32|0;e=Wc(da(g|0,4,0,0)|0|0,f<<2)|0;if(!e){d=7;e=0}else{h=da(d|0,4,0,0)|0|0;ew(e+(h<<2)|0,0,f-h<<2|0)|0;ea(g|0,e|0,4,0);ea(d|0,f|0,4,0);h=5}}else{e=da(a+32|0,4,0,0)|0|0;h=5}if((h|0)==5){g=a+32|0;e=e+(b<<2)|0;do if(!(da(e|0,4,0,0)|0)){if((da(a+43>>0|0,1,0,0)|0|0)!=2){d=da(a+4|0,4,0,0)|0|0;d=sc[(fa(da((da(d|0,4,0,0)|0|0)+52|0,4,0,0)|0|0,31|0)|0)&31](d,b,32768,da(a+44>>0|0,1,0,1)|0|0,e)|0;if((d|0)!=8)break;d=a+46|0;ea(d>>0|0,da(d>>0|0,1,0,1)|0|2|0,1,0);d=0;break}d=pg(32768,0)|0;if(d)ew(d|0,0,32768)|0;ea((da(g|0,4,0,0)|0|0)+(b<<2)|0,d|0,4,0);d=(da((da(g|0,4,0,0)|0|0)+(b<<2)|0,4,0,0)|0|0)==0?7:0}else d=0;while(0);e=da((da(g|0,4,0,0)|0|0)+(b<<2)|0,4,0,0)|0|0}ea(c|0,e|0,4,0);return d|0}function xq(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=b+c|0;if(!d){f=0;c=0}else{f=da(d|0,4,0,0)|0|0;c=da(d+4|0,4,0,0)|0|0}if(!a)do{f=f+c+(mw(da(b|0,4,0,0)|0|0)|0)|0;c=f+c+(mw(da(b+4|0,4,0,0)|0|0)|0)|0;b=b+8|0}while(b>>>0>>0);else do{f=f+c+(da(b|0,4,0,0)|0|0)|0;c=f+c+(da(b+4|0,4,0,0)|0|0)|0;b=b+8|0}while(b>>>0>>0);ea(e|0,f|0,4,0);ea(e+4|0,c|0,4,0);return}function yq(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=a+8|0;f=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;if((g|0)>(e|0)|(g|0)==(e|0)&f>>>0>d>>>0?(h=iw(c|0,((c|0)<0)<<31>>31|0,d|0,e|0)|0,j=C,!((j|0)<(g|0)|(j|0)==(g|0)&h>>>0>>0)):0){h=cw(f|0,g|0,d|0,e|0)|0;g=a+4|0;f=da(g|0,4,0,0)|0|0;f=sc[(fa(da((da(f|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](f,b,h,d,e)|0;if(!f){d=iw(h|0,((h|0)<0)<<31>>31|0,d|0,e|0)|0;e=C;f=da(g|0,4,0,0)|0|0;f=qc[(fa(da((da(f|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](f,(da(a+16|0,4,0,0)|0)&19)|0;if(!((h|0)==(c|0)|(f|0)!=0)){c=c-h|0;g=b+h|0;f=e;i=5}}}else{g=b;f=e;i=5}if((i|0)==5){e=da(a+4|0,4,0,0)|0|0;f=sc[(fa(da((da(e|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,31|0)|0)&31](e,g,c,d,f)|0}return f|0}function zq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g+8|0;f=g+4|0;d=g;ea(e|0,0|0,4,0);ea(f|0,0|0,4,0);ea(d|0,0|0,4,0);c=a+68|0;b=da(c|0,4,0,0)|0|0;if(b){Oo(a,(b+33|0)>>>12,e,f,d)|0;d=(da(c|0,4,0,0)|0|0)-(da(d|0,4,0,0)|0|0)|0;a=da(e|0,4,0,0)|0|0;c=0;do{b=a+(c<<1)|0;if((da(b|0,2,0,1)|0|0|0)>(d|0))ea(b|0,0|0,2,0);c=c+1|0}while((c|0)!=8192);b=(da(f|0,4,0,0)|0|0)+(d+1<<2)|0;ew(b|0,0,a-b|0)|0}i=g;return}function Aq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();c=e;f=a+204|0;d=$b[(fa(da(8744+132|0,4,0,0)|0|0,63|0)|0)&63](da((da(f|0,4,0,0)|0|0)+40|0,4,0,0)|0|0,b,0)|0;d=hl(da(f|0,4,0,0)|0|0,b,d)|0;do if(!d)c=0;else{if((da(d+26|0,2,0,0)|0|0)==1){ll(d);c=0;break}ea(c|0,0|0,4,0);b=jl(da(a+208|0,4,0,0)|0|0,da(d+20|0,4,0,0)|0|0,c)|0;if(!b){b=kl(d,da(c|0,4,0,0)|0|0)|0;if(!b){bc[(fa(da(a+196|0,4,0,0)|0|0,31|0)|0)&31](d);b=0}}Ag(d);c=b}while(0);b=da(a+88|0,4,0,0)|0|0;if(b)do{ea(b+16|0,1|0,4,0);b=da(b+44|0,4,0,0)|0|0}while((b|0)!=0);i=e;return c|0}function Bq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;y=i;i=i+16|0;if((i|0)>=(j|0))ba();x=y;u=da(a+52|0,4,0,0)|0|0;l=(da(u+36|0,4,0,0)|0|0)+-4|0;q=b&65535;v=c&65535;p=v+q|0;w=da(a+56|0,4,0,0)|0|0;if((da(u+22|0,2,0,0)|0)&4)ew(w+q|0,0,v|0)|0;t=da(a+6>>0|0,1,0,1)|0|0;u=t+1|0;g=u&65535;d=u&65535;if((da(w+(d+1)>>0|0,1,0,0)|0|0)==0?(da(w+d>>0|0,1,0,0)|0|0)==0:0){n=c&255;l=(c&65535)>>>8&255;m=p;k=0;h=0;s=23}else{n=g;s=6}a:do if((s|0)==6){while(1){s=0;f=n&65535;h=da(w+(f+1)>>0|0,1,0,0)|0|0;e=h&255;m=(da(w+f>>0|0,1,0,1)|0)<<8|e;g=n;n=m&65535;if(!(m>>>0>>0&(m|0)!=0)){k=h;o=m;break}if(m>>>0<(f+4|0)>>>0){s=8;break}else s=6}if((s|0)==8){ea(x|0,54420|0,4,0);ea(x+4|0,10788|0,4,0);ad(11,13600,x);d=11;break}if(o>>>0>l>>>0){ea(x|0,54423|0,4,0);ea(x+4|0,10788|0,4,0);ad(11,13600,x);d=11;break}d=c&255;l=(c&65535)>>>8&255;h=(n&65535)>>>8&255;do if((o+-1|0)>>>0<(p+3|0)>>>0)if(p>>>0>o>>>0){ea(x|0,54434|0,4,0);ea(x+4|0,10788|0,4,0);ad(11,13600,x);d=11;break a}else{m=((da(w+(o+2)>>0|0,1,0,1)|0)<<8|(da(w+(o+3)>>0|0,1,0,1)|0))+o|0;l=m-q|0;n=l&255;l=(l&65535)>>>8&255;k=da(w+(o+1)>>0|0,1,0,0)|0|0;h=da(w+o>>0|0,1,0,0)|0|0;d=e-p&255;break}else{n=d;m=p;d=0}while(0);do if(f>>>0>u>>>0?(r=((da(w+(f+2)>>0|0,1,0,1)|0)<<8|(da(w+(f+3)>>0|0,1,0,1)|0))+f|0,(r+3|0)>=(q|0)):0)if((q|0)<(r|0)){ea(x|0,54447|0,4,0);ea(x+4|0,10788|0,4,0);ad(11,13600,x);d=11;break a}else{l=m-f|0;b=g;n=l&255;l=(l&65535)>>>8&255;d=(d&255)+q-r&255;break}while(0);f=w+(t+7)|0;e=da(f>>0|0,1,0,0)|0|0;if((e&255)<(d&255)){ea(x|0,54453|0,4,0);ea(x+4|0,10788|0,4,0);ad(11,13600,x);d=11;break}else{ea(f>>0|0,(e&255)-(d&255)|0,1,0);s=23;break}}while(0);b:do if((s|0)==23){d=b&65535;e=w+(t+5)|0;f=w+(t+6)|0;do if((d|0)==((da(e>>0|0,1,0,1)|0)<<8|(da(f>>0|0,1,0,1)|0)|0))if((g&65535|0)==(u|0)){ea(w+u>>0|0,h|0,1,0);ea(w+(t+2)>>0|0,k|0,1,0);ea(e>>0|0,m>>>8|0,1,0);ea(f>>0|0,m|0,1,0);break}else{ea(x|0,54460|0,4,0);ea(x+4|0,10788|0,4,0);ad(11,13600,x);d=11;break b}else{x=g&65535;ea(w+x>>0|0,(b&65535)>>>8|0,1,0);ea(w+(x+1)>>0|0,b|0,1,0);ea(w+d>>0|0,h|0,1,0);ea(w+(d+1)>>0|0,k|0,1,0);ea(w+(d+2)>>0|0,l|0,1,0);ea(w+(d+3)>>0|0,n|0,1,0)}while(0);d=a+16|0;ea(d|0,(da(d|0,2,0,1)|0|0)+v|0,2,0);d=0}while(0);i=y;return d|0}function Cq(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();o=r;n=da(a+6>>0|0,1,0,1)|0|0;q=da(a+56|0,4,0,0)|0|0;m=da((da(a+52|0,4,0,0)|0|0)+36|0,4,0,0)|0|0;g=m+-4|0;a=n+1|0;while(1){h=q+a|0;k=(da(h>>0|0,1,0,1)|0|0)<<8|(da(q+(a+1)>>0|0,1,0,1)|0|0);if(!k){a=0;break}if((k|0)>(g|0)|(k|0)<(a+4|0)){p=4;break}e=q+(k+2)|0;f=q+(k+3)|0;a=(da(e>>0|0,1,0,1)|0|0)<<8|(da(f>>0|0,1,0,1)|0|0);if((a|0)<(b|0))a=k;else{l=e;g=k;p=6;break}}a:do if((p|0)==4){ea(o|0,54252|0,4,0);ea(o+4|0,10788|0,4,0);ad(11,13600,o);ea(c|0,11|0,4,0);a=0}else if((p|0)==6){e=a-b|0;do if((e|0)>=4)if((a+g|0)>(m|0)){ea(o|0,54275|0,4,0);ea(o+4|0,10788|0,4,0);ad(11,13600,o);ea(c|0,11|0,4,0);a=0;break a}else{ea(l>>0|0,e>>>8|0,1,0);ea(f>>0|0,e|0,1,0);break}else{a=q+(n+7)|0;if((da(a>>0|0,1,0,1)|0|0)<=59){n=q+g|0;n=da(n>>0|0,1,0,1)|0|(da(n+1>>0|0,1,0,1)|0)<<8;ea(h>>0|0,n|0,1,0);ea(h+1>>0|0,n>>8|0,1,0);ea(a>>0|0,(da(a>>0|0,1,0,1)|0|0)+e|0,1,0);break}if(!d){a=0;break a}ea(d|0,1|0,4,0);a=0;break a}while(0);a=q+(e+g)|0}while(0);i=r;return a|0}function Dq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=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;y=i;i=i+16|0;if((i|0)>=(j|0))ba();w=y;t=da(a+56|0,4,0,0)|0|0;v=da(a+6>>0|0,1,0,1)|0|0;p=da(a+14|0,2,0,1)|0|0;q=da(a+18|0,2,0,0)|0|0;l=q&65535;m=a+52|0;n=da((da(m|0,4,0,0)|0|0)+36|0,4,0,0)|0|0;u=(l<<1)+p|0;o=n+-4|0;r=t+(v+5)|0;s=t+(v+6)|0;a:do if(q<<16>>16){k=n;q=0;c=t;d=0;while(1){f=(q<<1)+p|0;e=t+f|0;f=t+(f+1)|0;g=(da(e>>0|0,1,0,1)|0|0)<<8|(da(f>>0|0,1,0,1)|0|0);if((g|0)<(u|0)|(g|0)>(o|0)){x=3;break}h=(Kp(a,c+g|0)|0)&65535;b=k-h|0;if((b|0)<(u|0)|(h+g|0)>(n|0)){x=5;break}ea(e>>0|0,b>>>8|0,1,0);ea(f>>0|0,b|0,1,0);if(!d)if((b|0)==(g|0))d=0;else{d=da((da(da(m|0,4,0,0)|0|0,4,0,0)|0|0)+200|0,4,0,0)|0|0;c=(da(r>>0|0,1,0,1)|0|0)<<8|(da(s>>0|0,1,0,1)|0|0);jw(d+c|0,t+c|0,k-c|0)|0;c=d;x=9}else x=9;if((x|0)==9){x=0;jw(t+b|0,c+g|0,h|0)|0}q=q+1|0;if((q|0)>=(l|0)){x=11;break a}else k=b}if((x|0)==3){ea(w|0,54184|0,4,0);ea(w+4|0,10788|0,4,0);ad(11,13600,w);b=11;break}else if((x|0)==5){ea(w|0,54196|0,4,0);ea(w+4|0,10788|0,4,0);ad(11,13600,w);b=11;break}}else{b=n;x=11}while(0);if((x|0)==11){ea(r>>0|0,b>>>8|0,1,0);ea(s>>0|0,b|0,1,0);ea(t+(v+1)>>0|0,0|0,1,0);ea(t+(v+2)>>0|0,0|0,1,0);ea(t+(v+7)>>0|0,0|0,1,0);x=b-u|0;ew(t+u|0,0,x|0)|0;if((x|0)==(da(a+16|0,2,0,1)|0|0|0))b=0;else{ea(w|0,54221|0,4,0);ea(w+4|0,10788|0,4,0);ad(11,13600,w);b=11}}i=y;return b|0}function Eq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+32|0;if((i|0)>=(j|0))ba();e=f;if((da(c|0,4,0,0)|0|0)==0?(qp(a,b,e),d=da(e+18|0,2,0,0)|0|0,d<<16>>16!=0):0){d=d&65535;yp(da(a+52|0,4,0,0)|0|0,(da(b+(d+1)>>0|0,1,0,1)|0|0)<<16|(da(b+d>>0|0,1,0,1)|0|0)<<24|(da(b+(d+2)>>0|0,1,0,1)|0|0)<<8|(da(b+(d+3)>>0|0,1,0,1)|0|0),3,da(a+72|0,4,0,0)|0|0,c)}i=f;return}function Fq(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;do if(!(da(c|0,4,0,0)|0)){g=da(a+52|0,4,0,0)|0|0;e=da(a+56|0,4,0,0)|0|0;f=da(b+56|0,4,0,0)|0|0;d=da(a+6>>0|0,1,0,1)|0|0;h=(da(b+72|0,4,0,0)|0|0)==1?100:0;i=(da(e+(d+5)>>0|0,1,0,1)|0)<<8|(da(e+(d+6)>>0|0,1,0,1)|0);jw(f+i|0,e+i|0,(da(g+36|0,4,0,0)|0|0)-i|0)|0;jw(f+h|0,e+d|0,((da(a+18|0,2,0,1)|0)<<1)+(da(a+14|0,2,0,1)|0|0)|0)|0;ea(b>>0|0,0|0,1,0);d=_p(b)|0;if(d){ea(c|0,d|0,4,0);break}if(da(g+17>>0|0,1,0,0)|0)ea(c|0,Zp(b)|0|0,4,0)}while(0);return}function Gq(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,k=0,l=0,m=0,n=0,o=0,p=0;l=da(a+6>>0|0,1,0,1)|0|0;o=da(a+56|0,4,0,0)|0|0;h=da(a+52|0,4,0,0)|0|0;j=da(h+36|0,4,0,0)|0|0;i=o+j|0;e=da(a+64|0,4,0,0)|0|0;h=da((da(h|0,4,0,0)|0|0)+200|0,4,0,0)|0|0;k=o+(l+5)|0;m=o+(l+6)|0;n=(da(k>>0|0,1,0,1)|0|0)<<8|(da(m>>0|0,1,0,1)|0|0);jw(h+n|0,o+n|0,j-n|0)|0;n=o;if((b|0)>0){j=0;g=e;e=i;while(1){f=da(c+(j<<2)|0,4,0,0)|0|0;if(f>>>0>o>>>0&f>>>0>>0)f=h+(f-n)|0;p=da(d+(j<<1)|0,2,0,1)|0|0;e=e+(0-p)|0;jw(e|0,f|0,p|0)|0;f=e-n|0;ea(g>>0|0,f>>>8|0,1,0);ea(g+1>>0|0,f|0,1,0);j=j+1|0;if((j|0)==(b|0))break;else g=g+2|0}}else e=i;d=a+18|0;ea(d|0,b|0,2,0);ea(a+1>>0|0,0|0,1,0);ea(o+(l+1)>>0|0,0|0,1,0);ea(o+(l+2)>>0|0,0|0,1,0);ea(o+(l+3)>>0|0,(da(d|0,2,0,1)|0|0)>>>8|0,1,0);ea(o+(l+4)>>0|0,da(d|0,2,0,0)|0|0,1,0);d=e-n|0;ea(k>>0|0,d>>>8|0,1,0);ea(m>>0|0,d|0,1,0);ea(o+(l+7)>>0|0,0|0,1,0);return}function Hq(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,k=0,l=0,m=0,n=0,o=0;o=da(a+56|0,4,0,0)|0|0;m=o+(da((da(a+52|0,4,0,0)|0|0)+36|0,4,0,0)|0|0)|0;k=o+((da(a+6>>0|0,1,0,1)|0|0)+8+(da(a+7>>0|0,1,0,1)|0|0))|0;a:do if((b|0)>0){l=o;n=0;e=0;i=0;j=0;while(1){g=da(c+(n<<2)|0,4,0,0)|0|0;if(g>>>0>=k>>>0&g>>>0>>0){f=da(d+(n<<1)|0,2,0,1)|0|0;h=g+f|0;if((i|0)!=(h|0)){if(i)Bq(a,i-l&65535,j&65535)|0;if(h>>>0>m>>>0){e=0;break a}}else f=f+j|0;e=e+1|0}else{g=i;f=j}n=n+1|0;if((n|0)>=(b|0))break;else{i=g;j=f}}if(g)Bq(a,g-o&65535,f&65535)|0}else e=0;while(0);return e|0}function Iq(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;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();q=s;k=da(a+56|0,4,0,0)|0|0;h=da(c|0,4,0,0)|0|0;if(!(da(k+1>>0|0,1,0,0)|0))p=(da(k+2>>0|0,1,0,0)|0|0)!=0;else p=1;a:do if((e|0)>0){n=0;while(1){m=da(g+(n<<1)|0,2,0,1)|0|0;if(p?(o=Cq(a,m,q,0)|0,(o|0)!=0):0)l=o;else{l=h+(0-m)|0;if(l>>>0>>0){h=1;break a}else h=l}jw(l|0,da(f+(n<<2)|0,4,0,0)|0|0,m|0)|0;m=l-k|0;ea(d>>0|0,m>>>8|0,1,0);ea(d+1>>0|0,m|0,1,0);n=n+1|0;if((n|0)>=(e|0)){r=9;break}else d=d+2|0}}else r=9;while(0);if((r|0)==9){ea(c|0,h|0,4,0);h=0}i=s;return h|0}function Jq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;d=da(a+44|0,4,0,0)|0|0;g=a;e=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;a:do if(!d){l=a+40|0;d=da(l|0,4,0,0)|0|0;f=((d|0)<0)<<31>>31;k=qw(e|0,g|0,d|0,f|0)|0;if(!k){h=a+8|0;h=cw(da(h|0,4,0,0)|0|0,da(h+4|0,4,0,0)|0|0,e|0,g|0)|0;o=C;p=da(a+24|0,4,0,0)|0|0;d=sc[(fa(da((da(p|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,31|0)|0)&31](p,da(a+36|0,4,0,0)|0|0,(o|0)>(f|0)|(o|0)==(f|0)&h>>>0>d>>>0?d:h,e,g)|0;if(d)break;d=da(l|0,4,0,0)|0|0}h=d-k|0;if((h|0)>=(b|0)){ea(c|0,(da(a+36|0,4,0,0)|0|0)+k|0,4,0);d=a;b=iw(da(d|0,4,0,0)|0|0,da(d+4|0,4,0,0)|0|0,b|0,((b|0)<0)<<31>>31|0)|0;d=a;ea(d|0,b|0,4,0);ea(d+4|0,C|0,4,0);d=0;break}d=a+16|0;e=da(d|0,4,0,0)|0|0;if((e|0)<(b|0)){e=e<<1;e=(e|0)<128?128:e;while(1)if((e|0)<(b|0))e=e<<1;else{g=e;break}f=a+28|0;e=qg(da(f|0,4,0,0)|0|0,g,((g|0)<0)<<31>>31)|0;if(!e){d=7;break}ea(d|0,g|0,4,0);ea(f|0,e|0,4,0)}else e=da(a+28|0,4,0,0)|0|0;g=a+28|0;jw(e|0,(da(a+36|0,4,0,0)|0|0)+k|0,h|0)|0;k=a;k=iw(da(k|0,4,0,0)|0|0,da(k+4|0,4,0,0)|0|0,h|0,((h|0)<0)<<31>>31|0)|0;d=a;ea(d|0,k|0,4,0);ea(d+4|0,C|0,4,0);d=b-h|0;if((d|0)>0){f=d;do{e=da(l|0,4,0,0)|0|0;e=(f|0)>(e|0)?e:f;d=Jq(a,e,m)|0;if(d)break a;jw((da(g|0,4,0,0)|0|0)+(b-f)|0,da(m|0,4,0,0)|0|0,e|0)|0;f=f-e|0}while((f|0)>0)}ea(c|0,da(g|0,4,0,0)|0|0,4,0);d=0}else{ea(c|0,d+e|0,4,0);b=iw(e|0,g|0,b|0,((b|0)<0)<<31>>31|0)|0;d=a;ea(d|0,b|0,4,0);ea(d+4|0,C|0,4,0);d=0}while(0);i=n;return d|0}function Kq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=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;y=i;i=i+64|0;if((i|0)>=(j|0))ba();v=y+44|0;x=y;w=y+40|0;t=a+8|0;s=da(t|0,4,0,0)|0|0;t=da(t+4|0,4,0,0)|0|0;u=a+4|0;o=da(u|0,4,0,0)|0|0;Op(da(a+48|0,4,0,0)|0|0,x,da((da((da(a|0,4,0,0)|0|0)+8|0,4,0,0)|0|0)+12|0,4,0,0)|0|0,s,t);n=o+8|0;o=o+12|0;p=x+24|0;q=x+16|0;r=a+16|0;while(1){e=da((da(n|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;f=da(o|0,4,0,0)|0|0;g=da(f+(e*56|0)+20|0,4,0,0)|0|0;if(!(da(f+(e*56|0)+24|0,4,0,0)|0)){c=1;b=0;break}k=p;h=da(k|0,4,0,0)|0|0;k=da(k+4|0,4,0,0)|0|0;l=da(q|0,4,0,0)|0|0;m=((g|0)<0)<<31>>31;b=g;d=m;c=0;do{c=c+1|0;b=lw(b|0,d|0,7)|0;d=C}while(((b|0)!=0|(d|0)!=0)&(c|0)<9);h=iw(h|0,k|0,g|0,m|0)|0;h=iw(h|0,C|0,l|0,((l|0)<0)<<31>>31|0)|0;c=iw(h|0,C|0,c|0,((c|0)<0)<<31>>31|0)|0;h=C;b=da(r|0,4,0,0)|0|0;b=iw(b|0,((b|0)<0)<<31>>31|0,s|0,t|0)|0;d=C;if((h|0)>(d|0)|(h|0)==(d|0)&c>>>0>b>>>0){c=1;b=0;break}Pp(x,v,om(v,g,m)|0);Pp(x,da(f+(e*56|0)+32|0,4,0,0)|0|0,g);b=Vm(da(u|0,4,0,0)|0|0,w)|0;if(b){c=0;break}}x=Qp(x,a+56|0)|0;i=y;return (c?x:b)|0}function Lq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;c=i;i=i+16|0;if((i|0)>=(j|0))ba();e=c;ea(e|0,d|0,4,0);d=Vk(a,13592,e)|0;lg(a,b);i=c;return d|0}function Mq(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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;e=da(a>>0|0,1,0,0)|0|0;if(e<<24>>24!=0&(b|0)>0){g=0;do{if((e+-48&255)<10){f=0;do{f=(f*10|0)+-48+(e<<24>>24)|0;a=a+1|0;e=da(a>>0|0,1,0,0)|0|0}while((e+-48&255)<10);e=0}else{f=0;e=0}ea(c+(g<<1)|0,es(f,e)|0|0,2,0);a=(da(a>>0|0,1,0,0)|0|0)==32?a+1|0:a;g=g+1|0;e=da(a>>0|0,1,0,0)|0|0}while(e<<24>>24!=0&(g|0)<(b|0))}g=d+51|0;ea(g>>0|0,(da(g>>0|0,1,0,0)|0)&-69|0,1,0);a:do if(da(a>>0|0,1,0,0)|0){c=d+44|0;b:while(1){do if(!(Fh(13448,a,10352,0)|0)){if(Fh(13464,a,10352,0)|0){ea(h|0,0|0,4,0);Cn(a+3|0,h)|0;e=da(h|0,4,0,0)|0|0;ea(c|0,es(e,((e|0)<0)<<31>>31)|0|0,2,0);break}if(Fh(13480,a,10352,0)|0)ea(g>>0|0,da(g>>0|0,1,0,0)|0|64|0,1,0)}else ea(g>>0|0,da(g>>0|0,1,0,0)|0|4|0,1,0);while(0);while(1){e=da(a>>0|0,1,0,0)|0|0;if(e<<24>>24==32|e<<24>>24==0)break;a=a+1|0}while(1){f=a+1|0;if(!(e<<24>>24))break a;else if(e<<24>>24!=32)continue b;e=da(f>>0|0,1,0,0)|0|0;a=f}}}while(0);i=k;return}function Nq(a){a=a|0;var b=0,c=0;c=a+8|0;b=da(c|0,4,0,0)|0|0;if(!b){b=uh(a)|0;ea(c|0,b|0,4,0);if(b)vh(b,155,0,0,0)|0;if((da(a+408|0,4,0,0)|0|0)==0?((da((da(a|0,4,0,0)|0|0)+60|0,2,0,0)|0)&8)==0:0)ea(a+23>>0|0,1|0,1,0)}return b|0}function Oq(a,b){a=a|0;b=b|0;var c=0;c=(da(a+32|0,4,0,0)|0|0)+-1|0;if((c|0)>(da((da(a+24|0,4,0,0)|0|0)+88|0,4,0,0)|0|0)?(da((da(a+4|0,4,0,0)|0|0)+(c*20|0)>>0|0,1,0,0)|0|0)==b<<24>>24:0){yh(a,c);c=1}else c=0;return c|0}function Pq(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=Nq(a)|0;f=d+32|0;fs(a,c,da(f|0,4,0,0)|0|0,(e|0)==55&1,da(d|0,4,0,0)|0|0);if(!((da(d+44>>0|0,1,0,0)|0)&32)){d=da(d+38|0,2,0,0)|0|0;wh(g,vh(g,e,b,da(f|0,4,0,0)|0|0,c)|0,d,-14)}else{f=da(d+8|0,4,0,0)|0|0;a:do if(!f)f=0;else while(1){if(((da(f+51>>0|0,1,0,0)|0)&3)==2)break a;f=da(f+20|0,4,0,0)|0|0;if(!f){f=0;break}}while(0);vh(g,e,b,da(f+40|0,4,0,0)|0|0,c)|0;d=da(a+8|0,4,0,0)|0|0;wh(d,-1,gs(a,f)|0,-6)}return}function Qq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if((b|0)!=0?(da(b>>0|0,1,0,0)|0|0)==-97:0)vh(da(a+8|0,4,0,0)|0|0,33,da(b+28|0,4,0,0)|0|0,c,0)|0;else f=4;if(((f|0)==4?(e=hs(a,b,c)|0,(e|0)!=(c|0)):0)?(d=da(a+8|0,4,0,0)|0|0,(d|0)!=0):0)vh(d,34,e,c,0)|0;return}function Rq(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,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;f=da(a|0,4,0,0)|0|0;do if(((da(f+145>>0|0,1,0,0)|0|0)==0?(da(a+451>>0|0,1,0,0)|0|0)==0:0)?(g=da(f+284|0,4,0,0)|0|0,(g|0)!=0):0){f=jc[(fa(g|0,7|0)|0)&7](da(f+288|0,4,0,0)|0|0,b,c,d,e,da(a+492|0,4,0,0)|0|0)|0;if((f|0)==0|(f|0)==2)break;else if((f|0)==1){sh(a,25216,h);ea(a+12|0,23|0,4,0);f=1;break}else{sh(a,25232,h);ea(a+12|0,1|0,4,0);f=1;break}}else f=0;while(0);i=k;return f|0}function Sq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;c=Vq(da(a|0,4,0,0)|0|0,c)|0;do if(c){d=Nq(a)|0;if((d|0)!=0?(Rq(a,32,da(37088+(b<<2)|0,4,0,0)|0|0,c,0)|0)==0:0){wh(d,vh(d,2,b,0,0)|0,c,-1);break}lg(da(a|0,4,0,0)|0|0,c)}while(0);return}function Tq(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;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();n=r;l=r+4|0;q=da(a|0,4,0,0)|0|0;b=dr(a,b,c,l)|0;a:do if((b|0)>=0){m=(d|0)!=0;if(m?(da(c+4|0,4,0,0)|0|0)!=0&(b|0)!=1:0){sh(a,36976,n);break}p=m?1:b;c=da(l|0,4,0,0)|0|0;m=c;l=da(m+4|0,4,0,0)|0|0;b=a+496|0;ea(b|0,da(m|0,4,0,0)|0|0,4,0);ea(b+4|0,l|0,4,0);l=Vq(q,c)|0;if(l){b:do if((Kr(a,l)|0)==0?(k=(da(q+144>>0|0,1,0,0)|0|0)==1?1:d,o=q+16|0,h=da((da(o|0,4,0,0)|0|0)+(p<<4)|0,4,0,0)|0|0,(Rq(a,18,(k|0)==1?13184:13208,0,h)|0)==0):0){d=(k|0)!=0;if(!e)b=d?4:2;else b=d?6:8;m=(f|0)!=0;if(!m?(Rq(a,b,l,0,h)|0)!=0:0)break;do if(!(da(a+451>>0|0,1,0,0)|0)){d=da((da(o|0,4,0,0)|0|0)+(p<<4)|0,4,0,0)|0|0;if(Fn(a)|0)break b;if(!(Zh(q,l,d)|0)){if(!(aq(q,l,d)|0))break;ea(n|0,l|0,4,0);sh(a,37048,n);break b}if(!g){ea(n|0,c|0,4,0);sh(a,37024,n);break b}else{zr(a,p);break b}}while(0);k=lh(q,76,0)|0;if(!k){ea(q+65>>0|0,1|0,1,0);ea(a+12|0,7|0,4,0);o=a+64|0;ea(o|0,(da(o|0,4,0,0)|0|0)+1|0,4,0);break}h=k+0|0;d=h+76|0;do{ea(h>>0|0,0|0,1,0);h=h+1|0}while((h|0)<(d|0));ea(k|0,l|0,4,0);ea(k+36|0,-1|0,2,0);h=da((da(o|0,4,0,0)|0|0)+(p<<4)+12|0,4,0,0)|0|0;ea(k+68|0,h|0,4,0);ea(k+40|0,1|0,2,0);ea(k+28|0,200|0,2,0);ea(a+484|0,k|0,4,0);if((da(a+18>>0|0,1,0,0)|0|0)==0?(Zv(l,26576)|0)==0:0)ea(h+72|0,k|0,4,0);if(da(q+145>>0|0,1,0,0)|0)break a;c=Nq(a)|0;if(!c)break a;o=da(a+408|0,4,0,0)|0|0;zr(a,p);h=1<>0|0,1,0,1)|0|0,b,0)|0;vh(c,52,p,5,b)|0;d=c+32|0;h=da(d|0,4,0,0)|0|0;if(h>>>0>k>>>0)ea((da(c+4|0,4,0,0)|0|0)+(k*20|0)+8|0,h|0,4,0);ea((da(c+24|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);if(!(f|e))ea(a+416|0,vh(c,121,p,m,0)|0|0,4,0);else vh(c,25,0,m,0)|0;is(a,p);vh(c,74,0,l,0)|0;vh(c,28,0,b,0)|0;vh(c,75,0,b,l)|0;h=da(c+4|0,4,0,0)|0|0;if(h)ea(h+(((da(d|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,8|0,1,0);vh(c,61,0,0,0)|0;break a}while(0);lg(q,l)}}while(0);i=r;return}function Uq(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,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;J=i;i=i+176|0;if((i|0)>=(j|0))ba();E=J+80|0;B=J+168|0;y=J;z=J+136|0;A=J+112|0;F=da(a|0,4,0,0)|0|0;a:do if((!((c|0)==0&(e|0)==0)?(G=F+65|0,(da(G>>0|0,1,0,0)|0|0)==0):0)?(H=a+484|0,I=da(H|0,4,0,0)|0|0,(I|0)!=0):0){D=F+145|0;if(da(D>>0|0,1,0,0)|0)ea(I+32|0,da(F+140|0,4,0,0)|0|0,4,0);b:do if(d&32){k=I+44|0;h=da(k>>0|0,1,0,1)|0|0;if(h&8){sh(a,36584,E);break a}if(!(h&4)){ea(E|0,da(I|0,4,0,0)|0|0,4,0);sh(a,36640,E);break}ea(k>>0|0,h|32|0,1,0);l=da(a+8|0,4,0,0)|0|0;k=da(a+416|0,4,0,0)|0|0;if(k){if((k|0)<0)k=(da(l+32|0,4,0,0)|0|0)+-1|0;if(!(da((da(l|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))k=(da(l+4|0,4,0,0)|0|0)+(k*20|0)|0;else k=29120;ea(k>>0|0,120|0,1,0)}k=da(a+420|0,4,0,0)|0|0;if(k){if((k|0)<0)k=(da(l+32|0,4,0,0)|0|0)+-1|0;if(!(da((da(l|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))h=(da(l+4|0,4,0,0)|0|0)+(k*20|0)|0;else h=29120;ea(h>>0|0,16|0,1,0)}h=I+36|0;if((da(h|0,2,0,0)|0|0)>-1){k=kr(a,0,0)|0;if(!k)break;u=jh(da(a|0,4,0,0)|0|0,da((da(I+4|0,4,0,0)|0|0)+((da(h|0,2,0,0)|0|0)*24|0)|0,4,0,0)|0|0)|0;v=da(k+4|0,4,0,0)|0|0;ea(v+4|0,u|0,4,0);ea(v+12>>0|0,da(a+448>>0|0,1,0,0)|0|0|0,1,0);k=_q(a,0,0,0,k,da(I+45>>0|0,1,0,1)|0|0,0,0,0,0)|0;if(!k)break;p=k+51|0;ea(p>>0|0,(da(p>>0|0,1,0,0)|0)&-4|2|0,1,0);ea(h|0,-1|0,2,0);p=da(k+46|0,2,0,0)|0|0}else{k=da(I+8|0,4,0,0)|0|0;c:do if(!k)k=0;else while(1){if(((da(k+51>>0|0,1,0,0)|0)&3)==2)break c;k=da(k+20|0,4,0,0)|0|0;if(!k){k=0;break}}while(0);q=k+46|0;l=da(q|0,2,0,0)|0|0;if((l&65535)>1){o=da(k+4|0,4,0,0)|0|0;n=k+48|0;p=1;h=1;do{f=da(o+(p<<1)|0,2,0,0)|0|0;m=h;g=o;while(1){if((m|0)<=0){x=36;break}if((da(g|0,2,0,0)|0|0)==f<<16>>16){x=35;break}else{m=m+-1|0;g=g+2|0}}if((x|0)==35){x=0;ea(n|0,(da(n|0,2,0,0)|0|0)+-1<<16>>16|0,2,0)}else if((x|0)==36){x=0;ea(o+(h<<1)|0,f|0,2,0);l=da(q|0,2,0,0)|0|0;h=h+1|0}p=p+1|0}while((p|0)<(l&65535|0))}else h=1;p=h&65535;ea(q|0,p|0,2,0)}m=k+51|0;l=da(m>>0|0,1,0,0)|0|32;ea(m>>0|0,l|0,1,0);v=p&65535;if(!(da(F+147>>0|0,1,0,0)|0)){if(p<<16>>16){l=da(k+4|0,4,0,0)|0|0;h=da(I+4|0,4,0,0)|0|0;g=0;do{ea(h+((da(l+(g<<1)|0,2,0,0)|0|0)*24|0)+20>>0|0,1|0,1,0);g=g+1|0}while((g|0)<(v|0));l=da(m>>0|0,1,0,0)|0|0}ea(m>>0|0,l|8|0,1,0)}ea(k+40|0,da(I+32|0,4,0,0)|0|0,4,0);m=da(I+8|0,4,0,0)|0|0;if(m){s=p<<16>>16==0;t=k+4|0;u=k+32|0;do{d:do if(((da(m+51>>0|0,1,0,0)|0)&3)!=2){do if(s)l=da(m+46|0,2,0,0)|0|0;else{n=da(m+4|0,4,0,0)|0|0;l=da(m+46|0,2,0,0)|0|0;g=l&65535;f=da(t|0,4,0,0)|0|0;r=0;h=0;do{o=da(f+(r<<1)|0,2,0,0)|0|0;q=g;p=n;while(1){if((q|0)<=0){p=1;break}if((da(p|0,2,0,0)|0|0)==o<<16>>16){p=0;break}else{q=q+-1|0;p=p+2|0}}h=p+h|0;r=r+1|0}while((r|0)<(v|0));g=m+46|0;if(!h)break;if(js(F,m,(l&65535)+h|0)|0)break b;if(s)break d;o=da(g|0,2,0,0)|0|0;r=m+4|0;f=m+32|0;q=o;p=0;o=o&65535;while(1){l=da(r|0,4,0,0)|0|0;h=da((da(t|0,4,0,0)|0|0)+(p<<1)|0,2,0,0)|0|0;q=q&65535;n=l;while(1){if((q|0)<=0){x=63;break}if((da(n|0,2,0,0)|0|0)==h<<16>>16)break;else{q=q+-1|0;n=n+2|0}}if((x|0)==63){x=0;ea(l+(o<<1)|0,h|0,2,0);ea((da(f|0,4,0,0)|0|0)+(o<<2)|0,da((da(u|0,4,0,0)|0|0)+(p<<2)|0,4,0,0)|0|0,4,0);o=o+1|0}p=p+1|0;if((p|0)>=(v|0))break d;q=da(g|0,2,0,0)|0|0}}while(0);ea(m+48|0,l|0,2,0)}while(0);m=da(m+20|0,4,0,0)|0|0}while((m|0)!=0)}q=I+38|0;l=da(q|0,2,0,0)|0|0;h=l<<16>>16;if((v|0)>=(h|0)){ea(k+48|0,l|0,2,0);break}if((js(F,k,h)|0)==0?(w=da(q|0,2,0,0)|0|0,w<<16>>16>0):0){n=k+4|0;p=k+32|0;l=w;o=0;k=v;do{g=da(n|0,4,0,0)|0|0;m=k;h=g;while(1){if((m|0)<=0){x=74;break}if((da(h|0,2,0,0)|0|0)==(o|0))break;else{m=m+-1|0;h=h+2|0}}if((x|0)==74){x=0;ea(g+(k<<1)|0,o|0,2,0);ea((da(p|0,4,0,0)|0|0)+(k<<2)|0,11152|0,4,0);l=da(q|0,2,0,0)|0|0;k=k+1|0}o=o+1|0}while((o|0)<(l<<16>>16|0))}}while(0);x=I+68|0;k=da(x|0,4,0,0)|0|0;e:do if(k){h=da(F+20|0,4,0,0)|0|0;if((h|0)>0){g=da(F+16|0,4,0,0)|0|0;l=0;while(1){f=l+1|0;if((da(g+(l<<4)+12|0,4,0,0)|0|0)==(k|0))break e;if((f|0)<(h|0))l=f;else{l=f;break}}}else l=0}else l=-1e6;while(0);g=da(I+24|0,4,0,0)|0|0;f:do if(g){ea(z+0|0,0|0,4,0);ea(z+4|0,0|0,4,0);ea(z+8|0,0|0,4,0);ea(z+12|0,0|0,4,0);ea(z+16|0,0|0,4,0);ea(z+20|0,0|0,4,0);ea(z+24|0,0|0,4,0);ea(z+28|0,0|0,4,0);k=y+0|0;h=k+80|0;do{ea(k|0,0|0,4,0);k=k+4|0}while((k|0)<(h|0));ea(y|0,1|0,4,0);ea(y+16|0,da(I|0,4,0,0)|0|0,4,0);ea(y+24|0,I|0,4,0);ea(y+48|0,-1|0,4,0);ea(z|0,a|0,4,0);ea(z+4|0,y|0,4,0);ea(z+28|0,4|0,2,0);k=g+4|0;if((da(g|0,4,0,0)|0|0)>0){h=0;do{if(ks(z,da((da(k|0,4,0,0)|0|0)+(h*20|0)|0,4,0,0)|0|0)|0)break f;h=h+1|0}while((h|0)<(da(g|0,4,0,0)|0|0))}}while(0);v=I+38|0;f=da(v|0,2,0,0)|0|0;if(f<<16>>16>0){k=f<<16>>16;h=da(I+4|0,4,0,0)|0|0;g=0;while(1){g=(da(h+22>>0|0,1,0,1)|0|0)+g|0;k=k+-1|0;if((k|0)<=0)break;else h=h+24|0}}else g=0;ea(I+42|0,es(((da(I+36|0,2,0,1)|0|0)>>>15&65535)+g<<2,0)|0|0,2,0);g=da(I+8|0,4,0,0)|0|0;if(g)do{ls(g);g=da(g+20|0,4,0,0)|0|0}while((g|0)!=0);if(!(da(D>>0|0,1,0,0)|0)){w=Nq(a)|0;if(!w)break;vh(w,61,0,0,0)|0;t=(da(I+12|0,4,0,0)|0|0)==0;h=t?36672:36680;t=t?31232:35480;do if(!e){g=d<<24>>24==0?c:a+504|0;e=da(g|0,4,0,0)|0|0;k=da(a+496|0,4,0,0)|0|0;f=e-k|0;if((da(e>>0|0,1,0,0)|0|0)!=59)f=(da(g+4|0,4,0,0)|0|0)+f|0;ea(E|0,h|0,4,0);ea(E+4|0,f|0,4,0);ea(E+8|0,k|0,4,0);k=a+388|0;f=I;h=th(F,36688,E)|0}else{k=a+388|0;vh(w,55,1,da(k|0,4,0,0)|0|0,l)|0;h=da(w+4|0,4,0,0)|0|0;if(h)ea(h+(((da(w+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,4|0,1,0);ea(a+68|0,2|0,4,0);ea(A>>0|0,14|0,1,0);ea(A+4|0,1|0,4,0);ea(A+1>>0|0,0|0,1,0);ea(A+8|0,0|0,4,0);ea(A+12|0,0|0,4,0);hr(a,e,A)|0;vh(w,61,1,0,0)|0;if(!(da(a+64|0,4,0,0)|0)){f=ms(a,e)|0;if(!f)break a;A=f+38|0;ea(v|0,da(A|0,2,0,0)|0|0|0,2,0);e=f+4|0;ea(I+4|0,da(e|0,4,0,0)|0|0,4,0);ea(A|0,0|0,2,0);ea(e|0,0|0,4,0);jg(F,f)}u=I+4|0;r=da(v|0,2,0,0)|0|0;if(r<<16>>16>0){n=r<<16>>16;o=0;h=0;p=da(u|0,4,0,0)|0|0;while(1){f=da(p|0,4,0,0)|0|0;g=0;while(1){m=da(f>>0|0,1,0,0)|0|0;if(m<<24>>24==34)g=g+1|0;else if(!(m<<24>>24))break;f=f+1|0;g=g+1|0}h=h+7+g|0;o=o+1|0;if((o|0)==(n|0))break;else p=p+24|0}m=h+2|0}else m=2;f=da(I|0,4,0,0)|0|0;h=0;while(1){g=da(f>>0|0,1,0,0)|0|0;if(!(g<<24>>24))break;else if(g<<24>>24==34)h=h+1|0;f=f+1|0;h=h+1|0}p=h+m|0;s=(p|0)<50;m=s?10360:36880;q=s?20240:36888;s=s?33952:36896;p=((r<<16>>16)*6|0)+35+p|0;h=pg(p,((p|0)<0)<<31>>31)|0;if(!h){ea(G>>0|0,1|0,1,0);f=I;h=0;break}$c(p,h,36904,E)|0;g=h;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;ea(B|0,g-h&1073741823|0,4,0);ns(h,B,da(I|0,4,0,0)|0|0);f=da(B|0,4,0,0)|0|0;n=f+1|0;ea(B|0,n|0,4,0);ea(h+f>>0|0,40|0,1,0);f=p-n|0;g=h+n|0;if((da(v|0,2,0,0)|0|0)>0){r=0;o=da(u|0,4,0,0)|0|0;while(1){$c(f,g,m,E)|0;g=h+n|0;if(!g)g=0;else{m=g;while(1)if(!(da(m>>0|0,1,0,0)|0))break;else m=m+1|0;g=m-g&1073741823}ea(B|0,g+n|0,4,0);ns(h,B,da(o|0,4,0,0)|0|0);g=da(36920+((da(o+21>>0|0,1,0,0)|0|0)+-65<<2)|0,4,0,0)|0|0;m=g;while(1)if(!(da(m>>0|0,1,0,0)|0))break;else m=m+1|0;n=m-g&1073741823;m=da(B|0,4,0,0)|0|0;jw(h+m|0,g|0,n|0)|0;n=m+n|0;ea(B|0,n|0,4,0);m=r+1|0;f=p-n|0;g=h+n|0;if((m|0)<(da(v|0,2,0,0)|0|0)){r=m;o=o+24|0;m=q}else break}}ea(E|0,s|0,4,0);$c(f,g,10344,E)|0;f=I}while(0);g=F+16|0;d=da(f|0,4,0,0)|0|0;A=da(k|0,4,0,0)|0|0;e=da(a+384|0,4,0,0)|0|0;ea(E|0,da((da(g|0,4,0,0)|0|0)+(l<<4)|0,4,0,0)|0|0,4,0);ea(E+4|0,((l|0)==1?13184:13208)|0,4,0);ea(E+8|0,t|0,4,0);ea(E+12|0,d|0,4,0);ea(E+16|0,d|0,4,0);ea(E+20|0,A|0,4,0);ea(E+24|0,h|0,4,0);ea(E+28|0,e|0,4,0);Ar(a,36704,E);lg(F,h);Cr(a,l);if(((da(I+44>>0|0,1,0,0)|0)&8)!=0?(C=da(g|0,4,0,0)|0|0,(da((da(C+(l<<4)+12|0,4,0,0)|0|0)+72|0,4,0,0)|0|0)==0):0){ea(E|0,da(C+(l<<4)|0,4,0,0)|0|0,4,0);Ar(a,36792,E)}ea(E|0,da(f|0,4,0,0)|0|0,4,0);Hr(w,l,th(F,36840,E)|0);if(!(da(D>>0|0,1,0,0)|0))break}else f=I;if(Hk((da(x|0,4,0,0)|0|0)+8|0,da(f|0,4,0,0)|0|0,I)|0){ea(G>>0|0,1|0,1,0);break}ea(H|0,0|0,4,0);e=F+24|0;ea(e|0,da(e|0,4,0,0)|0|2|0,4,0);if(!(da(I+12|0,4,0,0)|0)){f=da(a+496|0,4,0,0)|0|0;ea(I+48|0,(Mn(f,(da(((da(b|0,4,0,0)|0|0)==0?c:b)|0,4,0,0)|0|0)-f|0)|0)+13|0,4,0)}}while(0);i=J;return}function Vq(a,b){a=a|0;b=b|0;var c=0,d=0;if(!b)c=0;else{d=da(b|0,4,0,0)|0|0;b=da(b+4|0,4,0,0)|0|0;if((d|0)!=0?(c=iw(b|0,0,1,0)|0,c=lh(a,c,C)|0,(c|0)!=0):0){jw(c|0,d|0,b|0)|0;ea(c+b>>0|0,0|0,1,0)}else c=0;ko(c)}return c|0}function Wq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;a:do if(a){d=da(a>>0|0,1,0,0)|0|0;b:do if(!(d<<24>>24)){c=67;d=0}else{f=d;c=67;e=0;d=0;do{e=da(9328+(f&255)>>0|0,1,0,1)|0|0|e<<8;a=a+1|0;if((e|0)==1651273570)if(c<<24>>24==69|c<<24>>24==67){l=da(a>>0|0,1,0,0)|0|0;f=l;c=65;e=1651273570;d=l<<24>>24==40?a:d}else g=14;else if((e|0)==1685026146)if(c<<24>>24==67){c=69;e=1685026146;g=5}else g=13;else if((e|0)==1667785074){c=66;e=1667785074;d=a;g=5}else if((e|0)==1668050786){c=66;g=5}else if((e|0)==1952807028){c=66;g=5}else if((e|0)==1919246700)if(c<<24>>24==67){c=69;e=1919246700;g=5}else g=14;else if((e|0)==1718382433)if(c<<24>>24==67){c=69;e=1718382433;g=5}else g=13;else if((e&16777215|0)==6909556){c=68;break b}else g=5;if((g|0)==13)g=5;else if((g|0)==14)g=5;if((g|0)==5){g=0;f=da(a>>0|0,1,0,0)|0|0}}while(f<<24>>24!=0)}while(0);if((b|0)!=0?(ea(b>>0|0,1|0,1,0),c<<24>>24<67):0){if(!d){ea(b>>0|0,5|0,1,0);break}a=da(d>>0|0,1,0,0)|0|0;if(a<<24>>24){while(1){if(((a&255)+-48|0)>>>0<10)break;d=d+1|0;a=da(d>>0|0,1,0,0)|0|0;if(!(a<<24>>24))break a}ea(h|0,0|0,4,0);Cn(d,h)|0;d=((da(h|0,4,0,0)|0|0)/4|0)+1|0;d=(d|0)>255?255:d;ea(h|0,d|0,4,0);ea(b>>0|0,d|0,1,0)}}}else c=67;while(0);i=k;return c|0}function Xq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;k=i;i=i+32|0;if((i|0)>=(j|0))ba();g=k;h=da(a|0,4,0,0)|0|0;e=da(a+484|0,4,0,0)|0|0;do if(e){d=(da(e+38|0,2,0,0)|0|0)+-1|0;f=da(e+4|0,4,0,0)|0|0;l=da(b|0,4,0,0)|0|0;m=(da(h+145>>0|0,1,0,1)|0|0)+4|0;ea(g+0|0,0|0,4,0);ea(g+4|0,0|0,4,0);ea(g+8|0,0|0,4,0);ea(g+12|0,0|0,4,0);ea(g+16|0,0|0,4,0);ea(g+20|0,0|0,4,0);e=g+20|0;ea(e>>0|0,m|0,1,0);ea(g|0,78|0,4,0);ea(g+4|0,79|0,4,0);ea(g+24|0,0|0,4,0);qs(g,l)|0;if(!(da(e>>0|0,1,0,0)|0)){ea(g|0,da(f+(d*24|0)|0,4,0,0)|0|0,4,0);sh(a,36480,g);break}e=f+(d*24|0)+4|0;Fk(h,da(e|0,4,0,0)|0|0);ea(e|0,Lr(h,da(b|0,4,0,0)|0|0,1,0)|0|0,4,0);f=f+(d*24|0)+8|0;lg(h,da(f|0,4,0,0)|0|0);d=da(b+4|0,4,0,0)|0|0;e=(da(b+8|0,4,0,0)|0|0)-d|0;if((d|0)!=0?(c=iw(e|0,((e|0)<0)<<31>>31|0,1,0)|0,c=lh(h,c,C)|0,(c|0)!=0):0){jw(c|0,d|0,e|0)|0;ea(c+e>>0|0,0|0,1,0)}else c=0;ea(f|0,c|0,4,0)}while(0);Fk(h,da(b|0,4,0,0)|0|0);i=k;return}function Yq(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=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;if((b|0)==72&(c|0)!=0&(d|0)!=0?(da(a+64|0,4,0,0)|0|0)==0:0)b=rs(da(a|0,4,0,0)|0|0,c,d)|0;else{b=mr(da(a|0,4,0,0)|0|0,b,e,1)|0;ss(da(a|0,4,0,0)|0|0,b,c,d)}if((b|0)!=0?(f=da((da(a|0,4,0,0)|0|0)+100|0,4,0,0)|0|0,(f|0)<(da(b+24|0,4,0,0)|0|0)):0){ea(g|0,f|0,4,0);sh(a,27152,g)}i=h;return b|0}function Zq(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,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;w=i;i=i+16|0;if((i|0)>=(j|0))ba();v=w;t=da(a+484|0,4,0,0)|0|0;do if((t|0)!=0?(da(a+451>>0|0,1,0,0)|0|0)==0:0){u=t+44|0;g=da(u>>0|0,1,0,1)|0|0;if(g&4){ea(v|0,da(t|0,4,0,0)|0|0,4,0);sh(a,36376,v);break}r=g|4;ea(u>>0|0,r|0,1,0);s=(b|0)==0;if(s){g=(da(t+38|0,2,0,0)|0|0)+-1|0;p=da(t+4|0,4,0,0)|0|0;f=p+(g*24|0)+23|0;ea(f>>0|0,da(f>>0|0,1,0,1)|0|1|0,1,0);f=g;h=1;g=da(p+(g*24|0)+12|0,4,0,0)|0|0}else{q=da(b|0,4,0,0)|0|0;if((q|0)>0){n=b+4|0;o=t+4|0;m=da(t+38|0,2,0,0)|0|0;p=0;g=0;do{a:do if(m<<16>>16>0){k=da((da(n|0,4,0,0)|0|0)+(p*20|0)+4|0,4,0,0)|0|0;l=da(o|0,4,0,0)|0|0;h=0;while(1){f=h+1|0;if(!(cd(k,da(l+(h*24|0)|0,4,0,0)|0|0)|0))break;if((f|0)<(m<<16>>16|0))h=f;else break a}f=l+(h*24|0)+23|0;ea(f>>0|0,da(f>>0|0,1,0,1)|0|1|0,1,0);f=h;g=da(l+(h*24|0)+12|0,4,0,0)|0|0}else f=0;while(0);p=p+1|0}while((p|0)!=(q|0))}else{f=-1;g=0}h=(q|0)==1}if(h&(g|0)!=0?(cd(g,11144)|0|e|0)==0:0){ea(t+36|0,f|0,2,0);ea(t+45>>0|0,c|0,1,0);ea(u>>0|0,r|d<<3|0,1,0);if(s){b=0;break}ea(a+448>>0|0,da((da(b+4|0,4,0,0)|0|0)+12>>0|0,1,0,0)|0|0|0,1,0);break}if(d){sh(a,36424,v);break}g=da(a+8|0,4,0,0)|0|0;f=(g|0)!=0;if(f)ea(a+420|0,vh(g,156,0,0,0)|0|0,4,0);b=_q(a,0,0,0,b,c,0,0,e,0)|0;if((b|0)!=0?(p=b+51|0,ea(p>>0|0,(da(p>>0|0,1,0,0)|0)&-4|2|0,1,0),f):0){b=da(a+420|0,4,0,0)|0|0;f=da(g+32|0,4,0,0)|0|0;if(f>>>0>b>>>0)ea((da(g+4|0,4,0,0)|0|0)+(b*20|0)+8|0,f|0,4,0);ea((da(g+24|0,4,0,0)|0|0)+88|0,f+-1|0,4,0);b=0}else b=0}while(0);Mk(da(a|0,4,0,0)|0|0,b);i=w;return}function _q(a,b,c,d,e,f,g,h,k,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;k=k|0;l=l|0;var 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,O=0,P=0,Q=0;Q=i;i=i+144|0;if((i|0)>=(j|0))ba();N=Q;v=Q+112|0;p=Q+88|0;L=Q+84|0;E=Q+80|0;P=da(a|0,4,0,0)|0|0;ea(L|0,0|0,4,0);ea(E|0,0|0,4,0);K=P+65|0;a:do if(((da(K>>0|0,1,0,0)|0|0)==0?(da(a+451>>0|0,1,0,0)|0|0)==0:0)?(Fn(a)|0)==0:0){M=(d|0)!=0;b:do if(M){b=dr(a,b,c,L)|0;if((b|0)<0){m=0;c=0;break a}if((da(P+145>>0|0,1,0,0)|0|0)==0?(m=Ir(a,d)|0,(da(c+4|0,4,0,0)|0|0)==0&(m|0)!=0):0)b=(da(m+68|0,4,0,0)|0|0)==(da((da(P+16|0,4,0,0)|0|0)+28|0,4,0,0)|0|0)?1:b;c=da(L|0,4,0,0)|0|0;m=da(a|0,4,0,0)|0|0;ea(p|0,a|0,4,0);m=da(m+16|0,4,0,0)|0|0;ea(p+12|0,da(m+(b<<4)|0,4,0,0)|0|0,4,0);ea(p+4|0,da(m+(b<<4)+12|0,4,0,0)|0|0,4,0);ea(p+16|0,20632|0,4,0);ea(p+20|0,c|0,4,0);m=(b|0)==1;ea(p+8|0,m&1|0,4,0);Jr(p,d)|0;n=Tr(a,0,d+8|0)|0;if(!n){m=0;c=0;break a}if(m?(da((da(P+16|0,4,0,0)|0|0)+28|0,4,0,0)|0|0)!=(da(n+68|0,4,0,0)|0|0):0){ea(N|0,da(n|0,4,0,0)|0|0,4,0);sh(a,35920,N);m=0;c=0;break a}if(((da(n+44>>0|0,1,0,0)|0)&32)!=0?(q=da(n+8|0,4,0,0)|0|0,(q|0)!=0):0){m=q;while(1){if(((da(m+51>>0|0,1,0,0)|0)&3)==2){o=b;D=m;p=n;break b}m=da(m+20|0,4,0,0)|0|0;if(!m){o=b;D=0;p=n;break}}}else{o=b;D=0;p=n}}else{p=da(a+484|0,4,0,0)|0|0;if(!p){m=0;c=0;break a}b=da(p+68|0,4,0,0)|0|0;if(b){m=da(P+20|0,4,0,0)|0|0;if((m|0)>0){c=da(P+16|0,4,0,0)|0|0;o=0;while(1){n=o+1|0;if((da(c+(o<<4)+12|0,4,0,0)|0|0)==(b|0)){c=0;D=0;break b}if((n|0)<(m|0))o=n;else{c=0;o=n;D=0;break}}}else{c=0;o=0;D=0}}else{c=0;o=-1e6;D=0}}while(0);I=P+16|0;w=da(I|0,4,0,0)|0|0;b=w+(o<<4)|0;r=da(p|0,4,0,0)|0|0;if(((Ec(r,25568,7)|0)==0?(da(P+145>>0|0,1,0,0)|0|0)==0:0)?(Ec(r+7|0,35976,9)|0)!=0:0){ea(N|0,r|0,4,0);sh(a,35992,N);m=0;c=0;break}if(da(p+12|0,4,0,0)|0){sh(a,36024,N);m=0;c=0;break}H=p+44|0;if((da(H>>0|0,1,0,0)|0)&16){sh(a,36056,N);m=0;c=0;break}x=(c|0)==0;if(!x){c=Vq(P,c)|0;if(!c){m=0;c=0;break}if(Kr(a,c)|0){m=0;break}if((da(P+145>>0|0,1,0,0)|0|0)==0?(Zh(P,c,0)|0)!=0:0){ea(N|0,c|0,4,0);sh(a,36096,N);m=0;break}if(aq(P,c,da(b|0,4,0,0)|0|0)|0)if(!l){ea(N|0,c|0,4,0);sh(a,36136,N);m=0;break}else{zr(a,o);m=0;break}else J=c}else{q=da(p+8|0,4,0,0)|0|0;if(!q)n=1;else{n=1;do{n=n+1|0;q=da(q+20|0,4,0,0)|0|0}while((q|0)!=0)}ea(N|0,r|0,4,0);ea(N+4|0,n|0,4,0);n=th(P,36160,N)|0;if(!n){m=0;c=0;break}J=n}n=da(b|0,4,0,0)|0|0;b=(o|0)==1;F=b?13184:13208;if((Rq(a,18,F,0,n)|0)==0?(Rq(a,b?3:1,J,da(p|0,4,0,0)|0|0,n)|0)==0:0){if(!e){e=kr(a,0,0)|0;if(!e){e=0;m=0;c=J;break}A=jh(da(a|0,4,0,0)|0|0,da((da(p+4|0,4,0,0)|0|0)+(((da(p+38|0,2,0,0)|0|0)+-1|0)*24|0)|0,4,0,0)|0|0)|0;B=da(e+4|0,4,0,0)|0|0;ea(B+4|0,A|0,4,0);ea(B+12>>0|0,k|0,1,0)}u=da(e|0,4,0,0)|0|0;if((u|0)>0){r=da(e+4|0,4,0,0)|0|0;m=0;q=0;do{n=da(r+(m*20|0)|0,4,0,0)|0|0;if(n){b=da(n+8|0,4,0,0)|0|0;if(!b)n=1;else{n=b;while(1)if(!(da(n>>0|0,1,0,0)|0))break;else n=n+1|0;n=(n-b&1073741823)+1|0}q=n+q|0}m=m+1|0}while((m|0)<(u|0));b=q}else b=0;if(!J)n=0;else{q=J;while(1)if(!(da(q>>0|0,1,0,0)|0))break;else q=q+1|0;n=q-J&1073741823}z=(D|0)!=0;if(z)q=da(D+46|0,2,0,1)|0|0;else q=1;G=ts(P,u+q&65535,b+1+n|0,E)|0;c:do if(!(da(K>>0|0,1,0,0)|0)){y=da(E|0,4,0,0)|0|0;ea(G|0,y|0,4,0);C=n+1|0;t=y+C|0;ea(E|0,t|0,4,0);jw(y|0,J|0,C|0)|0;ea(G+12|0,p|0,4,0);C=G+50|0;ea(C>>0|0,f|0,1,0);y=G+51|0;ea(y>>0|0,(da(y>>0|0,1,0,0)|0)&-12|((f|0)!=0&1)<<3&255|x&1|0,1,0);B=G+24|0;ea(B|0,da((da(I|0,4,0,0)|0|0)+(o<<4)+12|0,4,0,0)|0|0,4,0);q=da(e|0,4,0,0)|0|0;A=G+46|0;ea(A|0,q|0,2,0);if(h){ea(v+0|0,0|0,4,0);ea(v+4|0,0|0,4,0);ea(v+8|0,0|0,4,0);ea(v+12|0,0|0,4,0);ea(v+16|0,0|0,4,0);ea(v+20|0,0|0,4,0);ea(v+24|0,0|0,4,0);ea(v+28|0,0|0,4,0);r=N+0|0;q=r+80|0;do{ea(r|0,0|0,4,0);r=r+4|0}while((r|0)<(q|0));ea(N|0,1|0,4,0);ea(N+16|0,da(p|0,4,0,0)|0|0,4,0);ea(N+24|0,p|0,4,0);ea(N+48|0,-1|0,4,0);ea(v|0,a|0,4,0);ea(v+4|0,N|0,4,0);ea(v+28|0,16|0,2,0);ks(v,h)|0;ea(G+36|0,h|0,4,0);q=da(e|0,4,0,0)|0|0}r=(da((da(w+(o<<4)+12|0,4,0,0)|0|0)+76>>0|0,1,0,1)|0|0)>3;d:do if((q|0)>0){x=p+4|0;w=p+38|0;v=G+4|0;h=P+145|0;b=G+32|0;n=G+28|0;q=0;k=da(e+4|0,4,0,0)|0|0;while(1){m=da(k+4|0,4,0,0)|0|0;c=da(w|0,2,0,0)|0|0;e:do if(c<<16>>16>0){u=0;s=da(x|0,4,0,0)|0|0;while(1){if(!(cd(m,da(s|0,4,0,0)|0|0)|0)){l=u;break e}u=u+1|0;if((u|0)<(c<<16>>16|0))s=s+24|0;else{l=u;break}}}else l=0;while(0);if((l|0)>=(c<<16>>16|0))break;ea((da(v|0,4,0,0)|0|0)+(q<<1)|0,l|0,2,0);u=da(k|0,4,0,0)|0|0;if(!u){u=da((da(x|0,4,0,0)|0|0)+(l*24|0)+16|0,4,0,0)|0|0;u=(u|0)!=0?u:11152}else{s=da(u+8|0,4,0,0)|0|0;if(!s)u=1;else{u=s;while(1)if(!(da(u>>0|0,1,0,0)|0))break;else u=u+1|0;u=(u-s&1073741823)+1|0}jw(t|0,s|0,u|0)|0;s=da(E|0,4,0,0)|0|0;t=s+u|0;ea(E|0,t|0,4,0);u=s}if((da(h>>0|0,1,0,0)|0|0)==0?(br(a,u)|0)==0:0){c=0;m=0;O=134;break c}ea((da(b|0,4,0,0)|0|0)+(q<<2)|0,u|0,4,0);ea((da(n|0,4,0,0)|0|0)+q>>0|0,(r?da(k+12>>0|0,1,0,0)|0|0:0)|0,1,0);if(!(da((da(x|0,4,0,0)|0|0)+(l*24|0)+20>>0|0,1,0,0)|0))ea(y>>0|0,(da(y>>0|0,1,0,0)|0)&-9|0,1,0);q=q+1|0;if((q|0)<(da(e|0,4,0,0)|0|0))k=k+20|0;else break d}ea(N|0,da(p|0,4,0,0)|0|0,4,0);ea(N+4|0,m|0,4,0);sh(a,36184,N);ea(a+17>>0|0,1|0,1,0);c=0;m=0;O=134;break c}else q=0;while(0);do if(z){n=D+46|0;r=da(n|0,2,0,0)|0|0;if(!(r<<16>>16))break;v=D+4|0;w=G+4|0;x=G+48|0;k=D+32|0;l=G+32|0;h=D+28|0;b=G+28|0;m=0;do{s=da((da(v|0,4,0,0)|0|0)+(m<<1)|0,2,0,0)|0|0;c=da(w|0,4,0,0)|0|0;u=da(A|0,2,0,1)|0|0;t=c;while(1){if((u|0)<=0){O=92;break}if((da(t|0,2,0,0)|0|0)==s<<16>>16){O=91;break}else{u=u+-1|0;t=t+2|0}}if((O|0)==91){O=0;ea(x|0,(da(x|0,2,0,0)|0|0)+-1<<16>>16|0,2,0)}else if((O|0)==92){O=0;ea(c+(q<<1)|0,s|0,2,0);ea((da(l|0,4,0,0)|0|0)+(q<<2)|0,da((da(k|0,4,0,0)|0|0)+(m<<2)|0,4,0,0)|0|0,4,0);ea((da(b|0,4,0,0)|0|0)+q>>0|0,da((da(h|0,4,0,0)|0|0)+m>>0|0,1,0,0)|0|0|0,1,0);r=da(n|0,2,0,0)|0|0;q=q+1|0}m=m+1|0}while((m|0)<(r&65535|0))}else{ea((da(G+4|0,4,0,0)|0|0)+(q<<1)|0,-1|0,2,0);ea((da(G+32|0,4,0,0)|0|0)+(q<<2)|0,11152|0,4,0)}while(0);bq(G);h=a+484|0;b=da(h|0,4,0,0)|0|0;if(!b){ls(G);b=da(h|0,4,0,0)|0|0}f:do if((p|0)==(b|0)){m=da(p+8|0,4,0,0)|0|0;if(!m)break;s=da(A|0,2,0,0)|0|0;t=G+4|0;u=G+32|0;while(1){if((da(m+46|0,2,0,0)|0|0)==s<<16>>16){g:do if(!(s<<16>>16)){n=0;q=0}else{h=da(m+4|0,4,0,0)|0|0;c=da(t|0,4,0,0)|0|0;r=m+32|0;q=0;while(1){if((da(h+(q<<1)|0,2,0,0)|0|0)!=(da(c+(q<<1)|0,2,0,0)|0|0)){n=s;break g}n=da((da(r|0,4,0,0)|0|0)+(q<<2)|0,4,0,0)|0|0;b=da((da(u|0,4,0,0)|0|0)+(q<<2)|0,4,0,0)|0|0;if((n|0)!=(b|0)?(cd(n,b)|0)!=0:0){n=s;break g}q=q+1|0;if((q|0)>=(s&65535|0)){n=s;break}}}while(0);if((q|0)==(n&65535|0))break}m=da(m+20|0,4,0,0)|0|0;if(!m)break f}b=m+50|0;c=da(b>>0|0,1,0,0)|0|0;h=da(C>>0|0,1,0,0)|0|0;if(c<<24>>24==h<<24>>24){c=0;break c}if(!(c<<24>>24==10|h<<24>>24==10)){ea(N|0,0|0,4,0);sh(a,36216,N);c=da(b>>0|0,1,0,0)|0|0}if(c<<24>>24!=10){c=0;O=134;break c}ea(b>>0|0,da(C>>0|0,1,0,0)|0|0|0,1,0);c=0;break c}while(0);q=P+145|0;do if(!(da(q>>0|0,1,0,0)|0)){if(da(a+64|0,4,0,0)|0){O=126;break}if(!(((da(H>>0|0,1,0,0)|0)&32)==0|M)){O=126;break}n=a+72|0;c=(da(n|0,4,0,0)|0|0)+1|0;ea(n|0,c|0,4,0);n=Nq(a)|0;if(!n){c=0;m=0;O=134;break c}B=da(a+408|0,4,0,0)|0|0;B=(B|0)==0?a:B;zr(a,o);A=B+328|0;ea(A|0,da(A|0,4,0,0)|0|1<>0|0,da(B>>0|0,1,0,1)|0|1|0,1,0);vh(n,120,o,c,0)|0;if(!g)b=0;else{b=da(da(L|0,4,0,0)|0|0,4,0,0)|0|0;h=(da(a+504|0,4,0,0)|0|0)-b+(da(a+508|0,4,0,0)|0|0)|0;m=h+-1|0;B=(da(b+m>>0|0,1,0,0)|0|0)==59?m:h;ea(N|0,((f|0)==0?10360:36288)|0,4,0);ea(N+4|0,B|0,4,0);ea(N+8|0,b|0,4,0);b=th(P,36264,N)|0}A=da(G|0,4,0,0)|0|0;B=da(p|0,4,0,0)|0|0;ea(N|0,da((da(I|0,4,0,0)|0|0)+(o<<4)|0,4,0,0)|0|0,4,0);ea(N+4|0,F|0,4,0);ea(N+8|0,A|0,4,0);ea(N+12|0,B|0,4,0);ea(N+16|0,c|0,4,0);ea(N+20|0,b|0,4,0);Ar(a,36296,N);lg(P,b);if(!M)break;us(a,G,c);Cr(a,o);ea(N|0,da(G|0,4,0,0)|0|0,4,0);Hr(n,o,th(P,36344,N)|0);vh(n,144,0,0,0)|0;O=126}else{if(Hk((da(B|0,4,0,0)|0|0)+24|0,da(G|0,4,0,0)|0|0,G)|0){ea(K>>0|0,1|0,1,0);c=0;m=0;O=134;break c}B=P+24|0;ea(B|0,da(B|0,4,0,0)|0|2|0,4,0);if(!M)break;ea(G+40|0,da(P+140|0,4,0,0)|0|0,4,0);O=126}while(0);if((O|0)==126?!((da(q>>0|0,1,0,0)|0|0)!=0|(d|0)==0):0){c=0;m=0;O=134;break}c=da(p+8|0,4,0,0)|0|0;do if((f|0)==5){if(!c){c=0;break}if((da(c+50>>0|0,1,0,0)|0|0)==5)break;do{m=c+20|0;c=da(m|0,4,0,0)|0|0;if(!c){c=0;break}}while((da(c+50>>0|0,1,0,0)|0|0)!=5);ea(G+20|0,c|0,4,0);ea(m|0,G|0,4,0);h=0;m=G;c=J;break a}while(0);ea(G+20|0,c|0,4,0);ea(p+8|0,G|0,4,0);h=0;m=G;c=J;break a}else{c=h;m=0;O=134}while(0);if((O|0)==134)if(!G){h=c;c=J;break}Ik(P,G);h=c;c=J}else{m=0;c=J}}else{m=0;c=0}while(0);Fk(P,h);Mk(P,e);Co(P,d);lg(P,c);i=Q;return m|0}function $q(a,b){a=a|0;b=b|0;var c=0,d=0;c=da(a+484|0,4,0,0)|0|0;d=da(a|0,4,0,0)|0|0;if(((c|0)!=0?(da(a+451>>0|0,1,0,0)|0|0)==0:0)?((da((da((da((da(d+16|0,4,0,0)|0|0)+((da(d+144>>0|0,1,0,1)|0)<<4)+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+22|0,2,0,0)|0)&1)==0:0){d=c+24|0;c=kr(a,da(d|0,4,0,0)|0|0,b)|0;ea(d|0,c|0,4,0);if(da(a+324|0,4,0,0)|0)lr(a,c,a+320|0,1)}else Fk(d,b);return}function ar(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,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=i;i=i+16|0;if((i|0)>=(j|0))ba();w=z;y=da(a|0,4,0,0)|0|0;x=da(a+484|0,4,0,0)|0|0;a:do if((x|0)!=0?(da(a+451>>0|0,1,0,0)|0|0)==0:0){t=(b|0)==0;do if(t){v=da(x+38|0,2,0,0)|0|0;g=(v<<16>>16)+-1|0;if(v<<16>>16<1){f=0;break a}if(d)if((da(d|0,4,0,0)|0|0)==1){g=1;f=13}else{ea(w|0,da((da(x+4|0,4,0,0)|0|0)+(g*24|0)|0,4,0,0)|0|0,4,0);ea(w+4|0,c|0,4,0);sh(a,35712,w);f=0;break a}else{g=1;f=12}}else{if(!d){g=da(b|0,4,0,0)|0|0;f=12;break}g=da(d|0,4,0,0)|0|0;if((g|0)==(da(b|0,4,0,0)|0|0))f=13;else{sh(a,35776,w);f=0;break a}}while(0);if((f|0)==12){h=c+4|0;m=h;q=0;h=(g<<3)+37+(da(h|0,4,0,0)|0|0)|0;v=g}else if((f|0)==13){m=c+4|0;h=(g<<3)+37+(da(m|0,4,0,0)|0|0)|0;n=da(d|0,4,0,0)|0|0;if((n|0)>0){o=da(d+4|0,4,0,0)|0|0;p=0;do{l=da(o+(p*20|0)+4|0,4,0,0)|0|0;if(!l)f=1;else{k=l;while(1)if(!(da(k>>0|0,1,0,0)|0))break;else k=k+1|0;f=(k-l&1073741823)+1|0}h=f+h|0;p=p+1|0}while((p|0)<(n|0));q=1;v=g}else{q=1;v=g}}f=lh(y,h,((h|0)<0)<<31>>31)|0;if(f){ew(f|0,0,h|0)|0;ea(f|0,x|0,4,0);u=x+16|0;ea(f+4|0,da(u|0,4,0,0)|0|0,4,0);r=f+36|0;k=r+(v<<3)|0;s=f+8|0;ea(s|0,k|0,4,0);jw(k|0,da(c|0,4,0,0)|0|0,da(m|0,4,0,0)|0|0)|0;ea(k+(da(m|0,4,0,0)|0|0)>>0|0,0|0,1,0);ko(k);k=k+((da(m|0,4,0,0)|0|0)+1)|0;ea(f+20|0,v|0,4,0);b:do if(!t){if((v|0)>0){h=x+4|0;c=b+4|0;l=da(x+38|0,2,0,0)|0|0;g=0;while(1){c:do if(l<<16>>16>0){p=da(h|0,4,0,0)|0|0;o=da((da(c|0,4,0,0)|0|0)+(g*20|0)+4|0,4,0,0)|0|0;n=0;while(1){m=n+1|0;if(!(cd(da(p+(n*24|0)|0,4,0,0)|0|0,o)|0)){m=n;break}if((m|0)<(l<<16>>16|0))n=m;else break c}ea(r+(g<<3)|0,m|0,4,0)}else m=0;while(0);if((m|0)>=(l<<16>>16|0))break;g=g+1|0;if((g|0)>=(v|0))break b}ea(w|0,da((da(c|0,4,0,0)|0|0)+(g*20|0)+4|0,4,0,0)|0|0,4,0);sh(a,35872,w);break a}}else ea(r|0,(da(x+38|0,2,0,0)|0|0)+-1|0,4,0);while(0);if(q&(v|0)>0){l=d+4|0;m=0;while(1){h=da((da(l|0,4,0,0)|0|0)+(m*20|0)+4|0,4,0,0)|0|0;if(!h)g=0;else{g=h;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;g=g-h&1073741823}ea(r+(m<<3)+4|0,k|0,4,0);jw(k|0,h|0,g|0)|0;ea(k+g>>0|0,0|0,1,0);m=m+1|0;if((m|0)==(v|0))break;else k=k+(g+1)|0}}ea(f+24>>0|0,0|0,1,0);ea(f+25>>0|0,e|0,1,0);ea(f+26>>0|0,e>>>8|0,1,0);g=Hk((da(x+68|0,4,0,0)|0|0)+56|0,da(s|0,4,0,0)|0|0,f)|0;if((g|0)==(f|0)){ea(y+65>>0|0,1|0,1,0);break}if(g){ea(f+12|0,g|0,4,0);ea(g+16|0,f|0,4,0)}ea(u|0,f|0,4,0);f=0}else f=0}else f=0;while(0);lg(y,f);Mk(y,b);Mk(y,d);i=z;return}function br(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=da(a|0,4,0,0)|0|0;d=da(c+62>>0|0,1,0,0)|0|0;e=da(c+145>>0|0,1,0,0)|0|0;c=Xn(c,d,b,e&255)|0;do if(!(e<<24>>24)){if((c|0)!=0?(da(c+12|0,4,0,0)|0|0)!=0:0)break;c=vs(a,d,c,b)|0}while(0);return c|0}function cr(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))ba();s=u;o=u+12|0;t=da(a|0,4,0,0)|0|0;do if(!(da(t+65>>0|0,1,0,0)|0)){d=(d|0)!=0;if(d){n=t+68|0;ea(n>>0|0,(da(n>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0);r=Tr(a,c,b+8|0)|0;ea(n>>0|0,(da(n>>0|0,1,0,0)|0|0)+-1<<24>>24|0,1,0)}else r=Tr(a,c,b+8|0)|0;if(!r){if(!d)break;yr(a,da(b+12|0,4,0,0)|0|0);break}k=r+68|0;f=da(k|0,4,0,0)|0|0;a:do if(f){d=da(t+20|0,4,0,0)|0|0;if((d|0)>0){e=da(t+16|0,4,0,0)|0|0;h=0;while(1){g=h+1|0;if((da(e+(h<<4)+12|0,4,0,0)|0|0)==(f|0)){g=h;break a}if((g|0)<(d|0))h=g;else break}}else g=0}else g=-1e6;while(0);p=r+44|0;if(((da(p>>0|0,1,0,0)|0)&16)!=0?(gr(a,r)|0)!=0:0)break;h=(g|0)==1;q=h?13184:13208;d=da((da(t+16|0,4,0,0)|0|0)+(g<<4)|0,4,0,0)|0|0;if(!(Rq(a,9,q,0,d)|0)){e=(c|0)!=0;do if(e){f=h?15:17;h=0}else{if(!((da(p>>0|0,1,0,0)|0)&16)){f=h?13:11;h=0;break}h=r+60|0;while(1){h=da(h|0,4,0,0)|0|0;if((da(h|0,4,0,0)|0|0)==(t|0))break;else h=h+24|0}f=30;h=da((da(h+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0}while(0);if((Rq(a,f,da(r|0,4,0,0)|0|0,h,d)|0)==0?(Rq(a,9,da(r|0,4,0,0)|0|0,0,d)|0)==0:0){h=da(r|0,4,0,0)|0|0;if((Ec(h,25568,7)|0)==0?(Ec(h,35488,11)|0)!=0:0){ea(s|0,h|0,4,0);sh(a,35504,s);break}d=r+12|0;f=(da(d|0,4,0,0)|0|0)==0;if(e){if(f){ea(s|0,h|0,4,0);sh(a,35536,s);break}}else if(!f){ea(s|0,h|0,4,0);sh(a,35576,s);break}if(Nq(a)|0){m=a+408|0;f=da(m|0,4,0,0)|0|0;f=(f|0)==0?a:f;zr(a,g);n=1<>0|0,da(f>>0|0,1,0,1)|0|1|0,1,0);Br(a,g,28544,da(r|0,4,0,0)|0|0);f=da(a|0,4,0,0)|0|0;e=f+24|0;b:do if((((da(e|0,4,0,0)|0)&524288|0)!=0?((da(p>>0|0,1,0,0)|0)&16)==0:0)?(da(d|0,4,0,0)|0|0)==0:0){l=Nq(a)|0;h=an((da(k|0,4,0,0)|0|0)+56|0,da(r|0,4,0,0)|0|0,o)|0;if((h|0)!=0?(da(h+8|0,4,0,0)|0|0)!=0:0)h=0;else{h=da(r+16|0,4,0,0)|0|0;if(!h)break;while(1){if(da(h+24>>0|0,1,0,0)|0)break;if((da(e|0,4,0,0)|0)&16777216)break;h=da(h+4|0,4,0,0)|0|0;if(!h)break b}h=ws(l)|0;vh(l,135,1,h,0)|0}o=a+438|0;ea(o>>0|0,1|0,1,0);qr(a,xs(f,b,0)|0,0);ea(o>>0|0,0|0,1,0);if(!((da(e|0,4,0,0)|0)&16777216)){vh(l,135,0,(da(l+32|0,4,0,0)|0|0)+2|0,0)|0;ys(a,787,2,0,-2,4)}if(h){f=da(l+24|0,4,0,0)|0|0;d=~h;do if((h|0)<0){h=da(f+112|0,4,0,0)|0|0;if(!h)break;ea(h+(d<<2)|0,da(l+32|0,4,0,0)|0|0,4,0)}while(0);ea(f+88|0,(da(l+32|0,4,0,0)|0|0)+-1|0,4,0)}}while(0);k=da(a|0,4,0,0)|0|0;l=k+16|0;f=da(l|0,4,0,0)|0|0;d=Nq(a)|0;o=da(m|0,4,0,0)|0|0;o=(o|0)==0?a:o;zr(a,g);m=o+328|0;ea(m|0,da(m|0,4,0,0)|0|n|0,4,0);o=o+20|0;ea(o>>0|0,da(o>>0|0,1,0,1)|0|1|0,1,0);if((da(p>>0|0,1,0,0)|0)&16)vh(d,146,0,0,0)|0;h=zs(a,r)|0;if(h)do{Pr(a,h);h=da(h+32|0,4,0,0)|0|0}while((h|0)!=0);f=f+(g<<4)|0;if((da(p>>0|0,1,0,0)|0)&8){o=da(r|0,4,0,0)|0|0;ea(s|0,da(f|0,4,0,0)|0|0,4,0);ea(s+4|0,o|0,4,0);Ar(a,35608,s)}o=da(r|0,4,0,0)|0|0;ea(s|0,da(f|0,4,0,0)|0|0,4,0);ea(s+4|0,q|0,4,0);ea(s+8|0,o|0,4,0);Ar(a,35656,s);if((c|0)==0?((da(p>>0|0,1,0,0)|0)&16)==0:0)As(a,r);if((da(p>>0|0,1,0,0)|0)&16){o=da(r|0,4,0,0)|0|0;wh(d,vh(d,148,g,0,0)|0,o,0)}e=da(r|0,4,0,0)|0|0;wh(d,vh(d,124,g,0,0)|0,e,0);Cr(a,g);d=da((da(l|0,4,0,0)|0|0)+(g<<4)+12|0,4,0,0)|0|0;e=da(d+78|0,2,0,0)|0|0;if(e&2){f=da(d+16|0,4,0,0)|0|0;if(f){e=f;do{d=da(e+8|0,4,0,0)|0|0;if(da(d+12|0,4,0,0)|0){Kk(k,d);ea(d+4|0,0|0,4,0);ea(d+38|0,0|0,2,0)}e=da(e|0,4,0,0)|0|0}while((e|0)!=0);e=da((da(l|0,4,0,0)|0|0)+(g<<4)+12|0,4,0,0)|0|0;d=e;e=da(e+78|0,2,0,0)|0|0}ea(d+78|0,e&65533|0,2,0)}}}}}while(0);Co(t,b);i=u;return}function dr(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;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h;e=da(a|0,4,0,0)|0|0;do if((c|0)!=0?(da(c+4|0,4,0,0)|0|0)!=0:0){if(da(e+145>>0|0,1,0,0)|0){sh(a,28488,f);c=a+64|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0);c=-1;break}ea(d|0,c|0,4,0);d=Vq(e,b)|0;c=Uh(e,d)|0;lg(e,d);if((c|0)<0){ea(f|0,b|0,4,0);sh(a,28512,f);c=a+64|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0);c=-1}}else g=7;while(0);if((g|0)==7){c=da(e+144>>0|0,1,0,1)|0|0;ea(d|0,b|0,4,0)}i=h;return c|0}function er(a,b){a=a|0;b=b|0;a:do if(!b)b=0;else while(1){if(Gr(a,da(b|0,4,0,0)|0|0)|0){b=1;break a}if(Jr(a,da(b+32|0,4,0,0)|0|0)|0){b=1;break a}if(Fr(a,da(b+36|0,4,0,0)|0|0)|0){b=1;break a}if(Gr(a,da(b+40|0,4,0,0)|0|0)|0){b=1;break a}if(Fr(a,da(b+44|0,4,0,0)|0|0)|0){b=1;break a}if(Gr(a,da(b+48|0,4,0,0)|0|0)|0){b=1;break a}if(Fr(a,da(b+60|0,4,0,0)|0|0)|0){b=1;break a}if(Fr(a,da(b+64|0,4,0,0)|0|0)|0){b=1;break a}b=da(b+52|0,4,0,0)|0|0;if(!b){b=0;break}}while(0);return b|0}function fr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if((b|0)!=0?(d=lh(a,72,0)|0,(d|0)!=0):0){ea(d|0,Or(a,da(b|0,4,0,0)|0|0,c)|0|0,4,0);ea(d+32|0,xs(a,da(b+32|0,4,0,0)|0|0,c)|0|0,4,0);ea(d+36|0,Lr(a,da(b+36|0,4,0,0)|0|0,c,0)|0|0,4,0);ea(d+40|0,Or(a,da(b+40|0,4,0,0)|0|0,c)|0|0,4,0);ea(d+44|0,Lr(a,da(b+44|0,4,0,0)|0|0,c,0)|0|0,4,0);ea(d+48|0,Or(a,da(b+48|0,4,0,0)|0|0,c)|0|0,4,0);ea(d+4>>0|0,da(b+4>>0|0,1,0,0)|0|0|0,1,0);f=fr(a,da(b+52|0,4,0,0)|0|0,c)|0;ea(d+52|0,f|0,4,0);if(f)ea(f+56|0,d|0,4,0);ea(d+56|0,0|0,4,0);ea(d+60|0,Lr(a,da(b+60|0,4,0,0)|0|0,c,0)|0|0,4,0);ea(d+64|0,Lr(a,da(b+64|0,4,0,0)|0|0,c,0)|0|0,4,0);ea(d+8|0,0|0,4,0);ea(d+12|0,0|0,4,0);ea(d+6|0,(da(b+6|0,2,0,1)|0|0)&65527|0,2,0);ea(d+16|0,-1|0,4,0);ea(d+20|0,-1|0,4,0);h=b+24|0;c=da(h+4|0,4,0,0)|0|0;f=d+24|0;ea(f|0,da(h|0,4,0,0)|0|0,4,0);ea(f+4|0,c|0,4,0);c=da(b+68|0,4,0,0)|0|0;if((c|0)!=0?(g=(da(c|0,4,0,0)|0)<<4|8,e=lh(a,g,((g|0)<0)<<31>>31)|0,(e|0)!=0):0){ew(e|0,0,g|0)|0;ea(e|0,da(c|0,4,0,0)|0|0,4,0);if((da(c|0,4,0,0)|0|0)>0){b=e+8|0;f=0;do{ea(b+(f<<4)+8|0,fr(a,da(c+(f<<4)+16|0,4,0,0)|0|0,0)|0|0,4,0);ea(b+(f<<4)+4|0,Or(a,da(c+(f<<4)+12|0,4,0,0)|0|0,0)|0|0,4,0);ea(b+(f<<4)|0,jh(a,da(c+(f<<4)+8|0,4,0,0)|0|0)|0|0,4,0);f=f+1|0}while((f|0)<(da(c|0,4,0,0)|0|0))}}else e=0;ea(d+68|0,e|0,4,0)}else d=0;return d|0}function gr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();l=p;e=p+8|0;g=p+4|0;o=da(a|0,4,0,0)|0|0;h=b+44|0;d=da(h>>0|0,1,0,0)|0|0;a:do if(!(d&16))m=11;else{c=da(b+60|0,4,0,0)|0|0;if(c)do{if((da(c|0,4,0,0)|0|0)==(o|0)){m=11;break a}c=da(c+24|0,4,0,0)|0|0}while((c|0)!=0);c=b+56|0;d=an(o+308|0,da(da(c|0,4,0,0)|0|0,4,0,0)|0|0,e)|0;if((d|0)!=0?(f=da(d+8|0,4,0,0)|0|0,(f|0)!=0):0){ea(g|0,0|0,4,0);f=(yn(o,b,f,da((da(f|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,g)|0)==0;d=da(g|0,4,0,0)|0|0;if(f){lg(o,d);d=da(h>>0|0,1,0,0)|0|0;m=11;break}else{ea(l|0,d|0,4,0);sh(a,10344,l);lg(o,d);c=1;break}}ea(l|0,da(da(c|0,4,0,0)|0|0,4,0,0)|0|0,4,0);sh(a,28320,l);c=1}while(0);do if((m|0)==11)if((d&16)==0?(n=b+38|0,k=da(n|0,2,0,0)|0|0,k<<16>>16<=0):0){if(k<<16>>16<0){ea(l|0,da(b|0,4,0,0)|0|0,4,0);sh(a,26752,l);c=1;break}d=fr(o,da(b+12|0,4,0,0)|0|0,0)|0;if(!d)c=1;else{h=o+250|0;k=da(h>>0|0,1,0,0)|0|0;l=a+68|0;m=da(l|0,4,0,0)|0|0;Bs(a,da(d+32|0,4,0,0)|0|0);ea(n|0,-1|0,2,0);ea(h>>0|0,0|0,1,0);f=o+284|0;g=da(f|0,4,0,0)|0|0;ea(f|0,0|0,4,0);c=ms(a,d)|0;ea(f|0,g|0,4,0);ea(h>>0|0,k|0,1,0);ea(l|0,m|0,4,0);if(!c){ea(n|0,0|0,2,0);c=1}else{a=c+38|0;ea(n|0,da(a|0,2,0,0)|0|0|0,2,0);m=c+4|0;ea(b+4|0,da(m|0,4,0,0)|0|0,4,0);ea(a|0,0|0,2,0);ea(m|0,0|0,4,0);jg(o,c);c=(da(b+68|0,4,0,0)|0|0)+78|0;ea(c|0,da(c|0,2,0,1)|0|0|2|0,2,0);c=0}Lk(o,d,1)}}else c=0;while(0);i=p;return c|0} -function hr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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,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,ca=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;va=i;i=i+240|0;if((i|0)>=(j|0))ba();ka=va;la=va+220|0;aa=va+216|0;_=va+196|0;$=va+176|0;na=va+164|0;oa=va+136|0;ra=va+88|0;Y=va+64|0;fa=va+32|0;ta=a+464|0;ua=da(ta|0,4,0,0)|0|0;ha=a+468|0;qa=da(ha|0,4,0,0)|0|0;ea(ha|0,qa+1|0,4,0);ea(ta|0,qa|0,4,0);qa=da(a|0,4,0,0)|0|0;a:do if((((b|0)!=0?(ia=qa+65|0,(da(ia>>0|0,1,0,0)|0|0)==0):0)?(d=a+64|0,(da(d|0,4,0,0)|0|0)==0):0)?(Rq(a,21,0,0,0)|0)==0:0){u=ra+0|0;t=u+48|0;do{ea(u|0,0|0,4,0);u=u+4|0}while((u|0)<(t|0));ca=b+48|0;if((da(c>>0|0,1,0,1)|0|0)<9){Mk(qa,da(ca|0,4,0,0)|0|0);ea(ca|0,0|0,4,0);X=b+6|0;ea(X|0,(da(X|0,2,0,1)|0)&65534|0,2,0)}Cs(a,b,0);ea(oa+0|0,0|0,4,0);ea(oa+4|0,0|0,4,0);ea(oa+8|0,0|0,4,0);ea(oa+12|0,0|0,4,0);ea(oa+16|0,0|0,4,0);ea(oa+20|0,0|0,4,0);ea(oa+24|0,0|0,4,0);ea(oa|0,da(ca|0,4,0,0)|0|0,4,0);ga=b+32|0;p=da(ga|0,4,0,0)|0|0;o=da(b|0,4,0,0)|0|0;b:do if(((da(d|0,4,0,0)|0|0)==0?(da(ia>>0|0,1,0,0)|0|0)==0:0)?(ma=b+6|0,r=(da(ma|0,2,0,1)|0|0)>>>2&1,pa=Nq(a)|0,(pa|0)!=0):0){if((da(o|0,4,0,0)|0|0)>1?((da(c>>0|0,1,0,0)|0)&-2)<<24>>24==10:0){sh(a,35368,ka);sa=444;break}ja=b+52|0;o=da(ja|0,4,0,0)|0|0;c:do if(!o){g=a+460|0;f=a+492|0;e=b+36|0;d=a+408|0;z=b+60|0;K=b+64|0;L=b+4|0;M=qa+60|0;N=pa+32|0;O=a+72|0;P=Y+4|0;Q=Y+1|0;R=Y+8|0;S=Y+12|0;T=pa+4|0;U=pa+24|0;V=a+19|0;W=a+56|0;X=a+80|0;J=0;q=r;while(1){if((J|0)>=(da(p|0,4,0,0)|0|0)){x=e;H=0;r=q;L=p;break c}E=da(p+(J*72|0)+28|0,4,0,0)|0|0;do if(!E)r=J;else{F=p+(J*72|0)+32|0;s=da(F|0,4,0,0)|0|0;if(s){if((da(p+(J*72|0)+45>>0|0,1,0,0)|0)&4){r=J;break}vh(pa,17,da(p+(J*72|0)+36|0,4,0,0)|0|0,s,0)|0;r=J;break}ea(ka|0,0|0,4,0);Ds(b,ka);ea(g|0,(da(g|0,4,0,0)|0|0)+(da(ka|0,4,0,0)|0|0)|0,4,0);m=(da(E+6|0,2,0,0)|0)&4;G=da(f|0,4,0,0)|0|0;l=da(a|0,4,0,0)|0|0;d:do if(!((da(l+60|0,2,0,0)|0)&1)){B=da(ga|0,4,0,0)|0|0;k=da(B+(J*72|0)+48|0,4,0,0)|0|0;A=B+(J*72|0)+28|0;H=da(A|0,4,0,0)|0|0;h=m<<16>>16!=0;do if(h){if(q){sa=120;break d}if((da(B|0,4,0,0)|0|0)>1){sa=120;break d}w=da(e|0,4,0,0)|0|0;if((w|0)!=0?((da(w+4|0,4,0,0)|0)&2097152|0)!=0:0){sa=120;break d}x=da(b|0,4,0,0)|0|0;do if(x){v=da(x|0,4,0,0)|0|0;if((v|0)<=0)break;y=da(x+4|0,4,0,0)|0|0;x=0;w=0;do{w=da((da(y+(x*20|0)|0,4,0,0)|0|0)+4|0,4,0,0)|0|w;x=x+1|0}while((x|0)!=(v|0));if(w&2097152){sa=120;break d}}while(0);x=da(ca|0,4,0,0)|0|0;if(!x)break;v=da(x|0,4,0,0)|0|0;if((v|0)<=0)break;y=da(x+4|0,4,0,0)|0|0;x=0;w=0;do{w=da((da(y+(x*20|0)|0,4,0,0)|0|0)+4|0,4,0,0)|0|w;x=x+1|0}while((x|0)!=(v|0));if(w&2097152){sa=120;break d}}while(0);y=da(H+32|0,4,0,0)|0|0;x=(da(H+60|0,4,0,0)|0|0)==0;if(!x?(da(z|0,4,0,0)|0|0)!=0:0){sa=120;break}if(da(H+64|0,4,0,0)|0){sa=120;break}v=da(ma|0,2,0,0)|0|0;w=(v&64)==0;if(!(w|x)){sa=120;break}if(!(da(y|0,4,0,0)|0)){sa=120;break}u=da(H+6|0,2,0,0)|0|0;if(u&1){sa=120;break}y=x|w^1;if(!y?(da(B|0,4,0,0)|0|0)>1|(q|0)!=0:0){sa=120;break}x=v&1;if(x<<16>>16!=0&h){sa=120;break}s=da(ca|0,4,0,0)|0|0;t=(s|0)==0;if(!t?(da(H+48|0,4,0,0)|0|0)!=0:0){sa=120;break}n=(q|0)!=0;if(n?(da(H+48|0,4,0,0)|0|0)!=0:0){sa=120;break}if(y){if(u&6144){sa=120;break}}else if(!((da(e|0,4,0,0)|0|0)==0&x<<16>>16==0&(u&6144)==0)){sa=120;break}if((v&2048)!=0?(da(H+52|0,4,0,0)|0|0)!=0:0){sa=120;break}I=B+(J*72|0)+44|0;if((da(I>>0|0,1,0,0)|0)&32){sa=120;break}v=H+52|0;y=da(v|0,4,0,0)|0|0;do if(y){if(!(x<<16>>16==0&(((da(H+48|0,4,0,0)|0|0)!=0|n)^1))){sa=120;break d}if((da(B|0,4,0,0)|0|0)!=1){sa=120;break d}e:do if(H){if(!(u&5))w=H;else{sa=120;break d}while(1){x=(y|0)==0;if(!x?(da(w+4>>0|0,1,0,0)|0|0)!=116:0){sa=120;break d}if((da(da(w+32|0,4,0,0)|0|0,4,0,0)|0|0)<1){sa=120;break d}if((da(da(H|0,4,0,0)|0|0,4,0,0)|0|0)!=(da(da(w|0,4,0,0)|0|0,4,0,0)|0|0)){sa=120;break d}if(x)break e;if((da(y+6|0,2,0,0)|0)&5){sa=120;break d}w=y;y=da(y+52|0,4,0,0)|0|0}}while(0);if(t)break;w=da(s|0,4,0,0)|0|0;if((w|0)<=0)break;y=da(s+4|0,4,0,0)|0|0;x=0;do{if(!(da(y+(x*20|0)+16|0,2,0,0)|0)){sa=120;break d}x=x+1|0}while((x|0)<(w|0))}while(0);r=B+(J*72|0)+16|0;ea(f|0,da(r|0,4,0,0)|0|0,4,0);Rq(a,21,0,0,0)|0;ea(f|0,G|0,4,0);y=da(v|0,4,0,0)|0|0;f:do if(!y)sa=81;else{s=l+65|0;v=da(ca|0,4,0,0)|0|0;u=da(z|0,4,0,0)|0|0;t=da(K|0,4,0,0)|0|0;w=da(ja|0,4,0,0)|0|0;while(1){ea(ca|0,0|0,4,0);ea(ga|0,0|0,4,0);ea(ja|0,0|0,4,0);ea(z|0,0|0,4,0);ea(K|0,0|0,4,0);x=fr(l,b,0)|0;ea(K|0,t|0,4,0);ea(z|0,u|0,4,0);ea(ca|0,v|0,4,0);ea(ga|0,B|0,4,0);ea(L>>0|0,116|0,1,0);if(!x)x=w;else{ea(x+52|0,w|0,4,0);if(w)ea(w+56|0,x|0,4,0);ea(x+56|0,b|0,4,0)}ea(ja|0,x|0,4,0);if(da(s>>0|0,1,0,0)|0)break f;y=da(y+52|0,4,0,0)|0|0;if(!y){sa=81;break}else w=x}}while(0);if((sa|0)==81){sa=0;D=da(A|0,4,0,0)|0|0;v=B+(J*72|0)+12|0;lg(l,da(v|0,4,0,0)|0|0);lg(l,da(r|0,4,0,0)|0|0);w=B+(J*72|0)+20|0;lg(l,da(w|0,4,0,0)|0|0);ea(v|0,0|0,4,0);ea(r|0,0|0,4,0);ea(w|0,0|0,4,0);ea(A|0,0|0,4,0);w=B+(J*72|0)+24|0;v=da(w|0,4,0,0)|0|0;if(v){u=v+40|0;t=da(u|0,2,0,0)|0|0;if(t<<16>>16==1){H=da(d|0,4,0,0)|0|0;H=((H|0)==0?a:H)+524|0;ea(v+72|0,da(H|0,4,0,0)|0|0,4,0);ea(H|0,v|0,4,0)}else ea(u|0,t+-1<<16>>16|0,2,0);ea(w|0,0|0,4,0)}H=J+1|0;G=l+65|0;F=b;E=D;while(1){s=da(E+32|0,4,0,0)|0|0;r=da(s|0,4,0,0)|0|0;x=F+32|0;y=da(x|0,4,0,0)|0|0;if(!y){y=or(l,0,0,0)|0;ea(x|0,y|0,4,0);if(!y)break;else p=0}else p=da(I>>0|0,1,0,0)|0|0;if((r|0)>1){y=Es(l,y,r+-1|0,H)|0;ea(x|0,y|0,4,0);if(da(G>>0|0,1,0,0)|0)break}if((r|0)>0){w=0;do{u=w+J|0;Gk(l,da(y+(u*72|0)+56|0,4,0,0)|0|0);x=s+(w*72|0)+8|0;u=y+(u*72|0)+8|0;v=x+0|0;t=u+72|0;do{ea(u|0,da(v|0,4,0,0)|0|0,4,0);u=u+4|0;v=v+4|0}while((u|0)<(t|0));u=x+0|0;t=u+72|0;do{ea(u|0,0|0,4,0);u=u+4|0}while((u|0)<(t|0));w=w+1|0}while((w|0)!=(r|0))}ea(y+(J*72|0)+44>>0|0,p|0,1,0);x=da(F|0,4,0,0)|0|0;y=da(x|0,4,0,0)|0|0;if((y|0)>0){u=x+4|0;w=da(u|0,4,0,0)|0|0;v=0;do{if(!(da(w+(v*20|0)+4|0,4,0,0)|0)){y=jh(l,da(w+(v*20|0)+8|0,4,0,0)|0|0)|0;ko(y);w=da(u|0,4,0,0)|0|0;ea(w+(v*20|0)+4|0,y|0,4,0);y=da(x|0,4,0,0)|0|0}v=v+1|0}while((v|0)<(y|0));x=da(F|0,4,0,0)|0|0}Fs(l,x,k,da(E|0,4,0,0)|0|0);if(n){Fs(l,da(F+40|0,4,0,0)|0|0,k,da(E|0,4,0,0)|0|0);B=F+44|0;ea(B|0,Gs(l,da(B|0,4,0,0)|0|0,k,da(E|0,4,0,0)|0|0)|0|0,4,0)}y=E+48|0;x=da(y|0,4,0,0)|0|0;do if(!x){x=da(F+48|0,4,0,0)|0|0;if(!x)break;Fs(l,x,k,da(E|0,4,0,0)|0|0)}else{w=da(x|0,4,0,0)|0|0;if((w|0)>0){v=da(x+4|0,4,0,0)|0|0;u=0;do{ea(v+(u*20|0)+16|0,0|0,2,0);u=u+1|0}while((u|0)!=(w|0))}ea(F+48|0,x|0,4,0);ea(y|0,0|0,4,0)}while(0);x=da(E+36|0,4,0,0)|0|0;if(!x)w=0;else w=Lr(l,x,0,0)|0;y=F+36|0;x=da(y|0,4,0,0)|0|0;if(h){A=F+44|0;ea(A|0,x|0,4,0);ea(y|0,w|0,4,0);B=Gs(l,x,k,da(E|0,4,0,0)|0|0)|0;ea(A|0,B|0,4,0);ea(A|0,rs(l,B,Lr(l,da(E+44|0,4,0,0)|0|0,0,0)|0)|0|0,4,0);ea(F+40|0,Or(l,da(E+40|0,4,0,0)|0|0,0)|0|0,4,0)}else{B=Gs(l,x,k,da(E|0,4,0,0)|0|0)|0;ea(y|0,B|0,4,0);ea(y|0,rs(l,B,w)|0|0,4,0)}x=F+6|0;ea(x|0,da(x|0,2,0,1)|0|(da(E+6|0,2,0,1)|0)&1|0,2,0);x=E+60|0;w=da(x|0,4,0,0)|0|0;if(w){ea(F+60|0,w|0,4,0);ea(x|0,0|0,4,0)}F=da(F+52|0,4,0,0)|0|0;if(!F)break;else E=da(E+52|0,4,0,0)|0|0}Lk(l,D,1)}if(!(m<<16>>16)){r=-1;break}ea(ma|0,da(ma|0,2,0,1)|0|4|0,2,0);r=-1;q=1}else sa=120;while(0);g:do if((sa|0)==120){sa=0;do if((da(p|0,4,0,0)|0|0)==1){if((da(M|0,2,0,0)|0)&256)break;u=da(N|0,4,0,0)|0|0;I=u+1|0;H=(da(O|0,4,0,0)|0|0)+1|0;ea(O|0,H|0,4,0);r=p+(J*72|0)+36|0;ea(r|0,H|0,4,0);vh(pa,20,H,0,I)|0;ea(F|0,I|0,4,0);I=da(r|0,4,0,0)|0|0;ea(Y>>0|0,13|0,1,0);ea(P|0,I|0,4,0);ea(Q>>0|0,0|0,1,0);ea(R|0,0|0,4,0);ea(S|0,0|0,4,0);ea(p+(J*72|0)+46>>0|0,da(ha|0,4,0,0)|0|0,1,0);hr(a,E,Y)|0;I=E+24|0;I=es(da(I|0,4,0,0)|0|0,da(I+4|0,4,0,0)|0|0)|0;ea((da(p+(J*72|0)+24|0,4,0,0)|0|0)+28|0,I|0,2,0);I=p+(J*72|0)+45|0;ea(I>>0|0,da(I>>0|0,1,0,0)|0|4|0,1,0);ea(p+(J*72|0)+40|0,da(R|0,4,0,0)|0|0,4,0);vh(pa,21,da(r|0,4,0,0)|0|0,0,0)|0;r=da(N|0,4,0,0)|0|0;if(r>>>0>u>>>0)ea((da(T|0,4,0,0)|0|0)+(u*20|0)+8|0,r|0,4,0);ea((da(U|0,4,0,0)|0|0)+88|0,r+-1|0,4,0);ea(V>>0|0,0|0,1,0);ea(W|0,0|0,4,0);r=J;break g}while(0);t=(da(O|0,4,0,0)|0|0)+1|0;ea(O|0,t|0,4,0);v=p+(J*72|0)+36|0;ea(v|0,t|0,4,0);t=vh(pa,25,0,t,0)|0;ea(F|0,t+1|0,4,0);if(!((da(p+(J*72|0)+45>>0|0,1,0,0)|0)&2)){I=Nq(a)|0;u=da(X|0,4,0,0)|0|0;ea(X|0,u+1|0,4,0);u=vh(I,44,u,0,0)|0}else u=0;I=da(p+(J*72|0)+48|0,4,0,0)|0|0;ea(Y>>0|0,12|0,1,0);ea(P|0,I|0,4,0);ea(Q>>0|0,0|0,1,0);ea(R|0,0|0,4,0);ea(S|0,0|0,4,0);ea(p+(J*72|0)+46>>0|0,da(ha|0,4,0,0)|0|0,1,0);hr(a,E,Y)|0;I=E+24|0;I=es(da(I|0,4,0,0)|0|0,da(I+4|0,4,0,0)|0|0)|0;ea((da(p+(J*72|0)+24|0,4,0,0)|0|0)+28|0,I|0,2,0);if(u){r=da(N|0,4,0,0)|0|0;if(r>>>0>u>>>0)ea((da(T|0,4,0,0)|0|0)+(u*20|0)+8|0,r|0,4,0);ea((da(U|0,4,0,0)|0|0)+88|0,r+-1|0,4,0)}r=vh(pa,18,da(v|0,4,0,0)|0|0,0,0)|0;if((da(N|0,4,0,0)|0|0)>>>0>t>>>0)ea((da(T|0,4,0,0)|0|0)+(t*20|0)+4|0,r|0,4,0);ea(V>>0|0,0|0,1,0);ea(W|0,0|0,4,0);r=J}while(0);if(da(ia>>0|0,1,0,0)|0){sa=444;break b}ea(ka|0,0|0,4,0);Ds(b,ka);ea(g|0,(da(g|0,4,0,0)|0|0)-(da(ka|0,4,0,0)|0|0)|0,4,0);p=da(ga|0,4,0,0)|0|0;if((da(c>>0|0,1,0,1)|0|0)<9)break;ea(oa|0,da(ca|0,4,0,0)|0|0,4,0)}while(0);o=da(ja|0,4,0,0)|0|0;if(!o)J=r+1|0;else{x=e;H=o;r=q;L=p;break}}}else{x=b+36|0;H=o;L=p}while(0);K=da(b|0,4,0,0)|0|0;t=da(x|0,4,0,0)|0|0;e=b+40|0;o=da(e|0,4,0,0)|0|0;y=b+44|0;Y=da(y|0,4,0,0)|0|0;f=da(ma|0,2,0,0)|0|0;ea(na>>0|0,f&1|0,1,0);if(H){F=da(a|0,4,0,0)|0|0;ea(la+0|0,da(c+0|0,4,0,0)|0|0,4,0);ea(la+4|0,da(c+4|0,4,0,0)|0|0,4,0);ea(la+8|0,da(c+8|0,4,0,0)|0|0,4,0);ea(la+12|0,da(c+12|0,4,0,0)|0|0,4,0);ea(la+16|0,da(c+16|0,4,0,0)|0|0,4,0);h:do if(!(da(H+48|0,4,0,0)|0)){h=H+60|0;if(da(h|0,4,0,0)|0){d=da(b+4>>0|0,1,0,1)|0|0;if((d|0)==118)d=35336;else if((d|0)==117)d=35352;else if((d|0)==116)d=35320;else d=35360;ea(ka|0,d|0,4,0);sh(a,35072,ka);f=0;d=1;sa=227;break}I=Nq(a)|0;l=da(la>>0|0,1,0,0)|0|0;if(l<<24>>24==12){vh(I,57,da(la+4|0,4,0,0)|0|0,da(da(b|0,4,0,0)|0|0,4,0,0)|0|0,0)|0;l=da(I+4|0,4,0,0)|0|0;if(l)ea(l+(((da(I+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,8|0,1,0);ea(la>>0|0,14|0,1,0);l=14}k=da(ma|0,2,0,1)|0|0;if(k&256){f=0;d=Hs(a,b,la)|0;sa=227;break}if((da(da(b|0,4,0,0)|0|0,4,0,0)|0|0)!=(da(da(H|0,4,0,0)|0|0,4,0,0)|0|0)){Is(a,b);f=0;d=1;sa=227;break}do if(!(k&2048)){if(da(ca|0,4,0,0)|0){d=Ks(a,b,c)|0;break h}G=b+4|0;k=da(G>>0|0,1,0,1)|0|0;if((k|0)==116){n=b+8|0;l=H+8|0;ea(l|0,da(n|0,4,0,0)|0|0,4,0);m=b+12|0;k=H+12|0;ea(k|0,da(m|0,4,0,0)|0|0,4,0);X=b+60|0;ea(h|0,da(X|0,4,0,0)|0|0,4,0);Y=b+64|0;ea(H+64|0,da(Y|0,4,0,0)|0|0,4,0);g=da(ha|0,4,0,0)|0|0;d=hr(a,H,la)|0;ea(X|0,0|0,4,0);ea(Y|0,0|0,4,0);if(d){f=0;sa=227;break h}ea(ja|0,0|0,4,0);l=da(l|0,4,0,0)|0|0;ea(n|0,l|0,4,0);ea(m|0,da(k|0,4,0,0)|0|0,4,0);if(!l)o=0;else o=vh(I,46,l,0,0)|0;e=da(ha|0,4,0,0)|0|0;d=hr(a,b,la)|0;f=da(ja|0,4,0,0)|0|0;ea(ja|0,H|0,4,0);Y=H+24|0;n=b+24|0;l=n;Y=iw(da(l|0,4,0,0)|0|0,da(l+4|0,4,0,0)|0|0,da(Y|0,4,0,0)|0|0,da(Y+4|0,4,0,0)|0|0)|0;l=n;ea(l|0,Y|0,4,0);ea(l+4|0,C|0,4,0);l=da(h|0,4,0,0)|0|0;do if(l){Y=(Ls(l,aa)|0)!=0;l=da(aa|0,4,0,0)|0|0;if(!(Y&(l|0)>0))break;k=n;Y=da(k+4|0,4,0,0)|0|0;h=((l|0)<0)<<31>>31;if(!(Y>>>0>h>>>0|((Y|0)==(h|0)?(da(k|0,4,0,0)|0|0)>>>0>l>>>0:0)))break;Y=n;ea(Y|0,l|0,4,0);ea(Y+4|0,h|0,4,0)}while(0);if(!o){o=G;n=g;l=e;break}h=da(I+32|0,4,0,0)|0|0;if(h>>>0>o>>>0)ea((da(I+4|0,4,0,0)|0|0)+(o*20|0)+8|0,h|0,4,0);ea((da(I+24|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);o=G;n=g;l=e;break}else if((k|0)==115|(k|0)==117){if(l<<24>>24==1)k=da(la+4|0,4,0,0)|0|0;else{h=a+68|0;k=da(h|0,4,0,0)|0|0;ea(h|0,k+1|0,4,0);ea(b+16|0,vh(I,57,k,0,0)|0|0,4,0);h=b;while(1){l=da(h+56|0,4,0,0)|0|0;if(!l)break;else h=l}Y=h+6|0;ea(Y|0,da(Y|0,2,0,1)|0|8|0,2,0)}ea(_>>0|0,1|0,1,0);ea(_+4|0,k|0,4,0);ea(_+1>>0|0,0|0,1,0);ea(_+8|0,0|0,4,0);ea(_+12|0,0|0,4,0);q=da(ha|0,4,0,0)|0|0;d=hr(a,H,_)|0;if(d){f=0;sa=227;break h}p=(da(G>>0|0,1,0,0)|0|0)==117?2:1;ea(ja|0,0|0,4,0);n=b+60|0;m=da(n|0,4,0,0)|0|0;ea(n|0,0|0,4,0);l=b+64|0;h=da(l|0,4,0,0)|0|0;ea(l|0,0|0,4,0);ea(_>>0|0,p|0,1,0);p=da(ha|0,4,0,0)|0|0;d=hr(a,b,_)|0;Mk(F,da(ca|0,4,0,0)|0|0);f=da(ja|0,4,0,0)|0|0;ea(ja|0,H|0,4,0);ea(ca|0,0|0,4,0);if((da(G>>0|0,1,0,0)|0|0)==115){X=H+24|0;Y=b+24|0;W=Y;X=iw(da(W|0,4,0,0)|0|0,da(W+4|0,4,0,0)|0|0,da(X|0,4,0,0)|0|0,da(X+4|0,4,0,0)|0|0)|0;ea(Y|0,X|0,4,0);ea(Y+4|0,C|0,4,0)}Fk(F,da(n|0,4,0,0)|0|0);ea(n|0,m|0,4,0);ea(l|0,h|0,4,0);ea(b+8|0,0|0,4,0);ea(b+12|0,0|0,4,0);h=da(la>>0|0,1,0,0)|0|0;if(h<<24>>24==9){h=b;while(1){g=da(h+52|0,4,0,0)|0|0;if(!g)break;else h=g}Ms(a,0,da(h|0,4,0,0)|0|0)}else if(h<<24>>24==1){o=G;n=q;l=p;break}e=ws(I)|0;Y=ws(I)|0;Ns(a,b,e);vh(I,108,k,e,0)|0;o=I+32|0;n=da(o|0,4,0,0)|0|0;Os(a,b,da(b|0,4,0,0)|0|0,k,0,0,la,Y,e);m=I+24|0;l=da(m|0,4,0,0)|0|0;h=~Y;do if((Y|0)<0){g=da(l+112|0,4,0,0)|0|0;if(!g)break;ea(g+(h<<2)|0,da(o|0,4,0,0)|0|0,4,0)}while(0);ea(l+88|0,(da(o|0,4,0,0)|0|0)+-1|0,4,0);vh(I,9,k,n,0)|0;h=da(m|0,4,0,0)|0|0;g=~e;do if((e|0)<0){l=da(h+112|0,4,0,0)|0|0;if(!l)break;ea(l+(g<<2)|0,da(o|0,4,0,0)|0|0,4,0)}while(0);ea(h+88|0,(da(o|0,4,0,0)|0|0)+-1|0,4,0);vh(I,61,k,0,0)|0;o=G;n=q;l=p;break}else{h=a+68|0;s=da(h|0,4,0,0)|0|0;ea(h|0,s+2|0,4,0);ea(b+16|0,vh(I,57,s,0,0)|0|0,4,0);h=b;while(1){g=da(h+56|0,4,0,0)|0|0;if(!g)break;else h=g}q=s+1|0;n=h+6|0;ea(n|0,da(n|0,2,0,1)|0|8|0,2,0);ea($>>0|0,1|0,1,0);n=$+4|0;ea(n|0,s|0,4,0);ea($+1>>0|0,0|0,1,0);ea($+8|0,0|0,4,0);ea($+12|0,0|0,4,0);p=da(ha|0,4,0,0)|0|0;d=hr(a,H,$)|0;if(d){f=0;sa=227;break h}ea(b+20|0,vh(I,57,q,0,0)|0|0,4,0);ea(ja|0,0|0,4,0);g=b+60|0;h=da(g|0,4,0,0)|0|0;ea(g|0,0|0,4,0);k=b+64|0;l=da(k|0,4,0,0)|0|0;ea(k|0,0|0,4,0);ea(n|0,q|0,4,0);r=da(ha|0,4,0,0)|0|0;d=hr(a,b,$)|0;f=da(ja|0,4,0,0)|0|0;ea(ja|0,H|0,4,0);o=b+24|0;e=o;Y=da(e+4|0,4,0,0)|0|0;m=H+24|0;n=da(m|0,4,0,0)|0|0;m=da(m+4|0,4,0,0)|0|0;if(Y>>>0>m>>>0|((Y|0)==(m|0)?(da(e|0,4,0,0)|0|0)>>>0>n>>>0:0)){Y=o;ea(Y|0,n|0,4,0);ea(Y+4|0,m|0,4,0)}Fk(F,da(g|0,4,0,0)|0|0);ea(g|0,h|0,4,0);ea(k|0,l|0,4,0);if((da(la>>0|0,1,0,0)|0|0)==9){l=b;while(1){k=da(l+52|0,4,0,0)|0|0;if(!k)break;else l=k}Ms(a,0,da(l|0,4,0,0)|0|0)}g=ws(I)|0;o=ws(I)|0;Ns(a,b,g);vh(I,108,s,g,0)|0;l=a+19|0;k=da(l>>0|0,1,0,0)|0|0;if(!(k<<24>>24)){Y=a+72|0;l=(da(Y|0,4,0,0)|0|0)+1|0;ea(Y|0,l|0,4,0)}else{Y=k+-1<<24>>24;ea(l>>0|0,Y|0,1,0);l=da(a+((Y&255)<<2)+24|0,4,0,0)|0|0}e=vh(I,101,s,l,0)|0;wh(I,vh(I,68,q,o,l)|0,0,-14);Zr(a,l);Os(a,b,da(b|0,4,0,0)|0|0,s,0,0,la,o,g);l=I+24|0;k=da(l|0,4,0,0)|0|0;m=~o;do if((o|0)<0){n=da(k+112|0,4,0,0)|0|0;if(!n)break;ea(n+(m<<2)|0,da(I+32|0,4,0,0)|0|0,4,0)}while(0);n=I+32|0;ea(k+88|0,(da(n|0,4,0,0)|0|0)+-1|0,4,0);vh(I,9,s,e,0)|0;k=da(l|0,4,0,0)|0|0;h=~g;do if((g|0)<0){l=da(k+112|0,4,0,0)|0|0;if(!l)break;ea(l+(h<<2)|0,da(n|0,4,0,0)|0|0,4,0)}while(0);ea(k+88|0,(da(n|0,4,0,0)|0|0)+-1|0,4,0);vh(I,61,q,0,0)|0;vh(I,61,s,0,0)|0;o=G;n=p;l=r;break}}else{Js(a,b,la);o=b+4|0;n=0;l=0;f=0;d=0}while(0);Y=da(o>>0|0,1,0,0)|0|0;Ps(a,Y&255,n,l,Y<<24>>24!=116&1);if(!((da(ma|0,2,0,0)|0)&8)){sa=227;break}m=da(da(b|0,4,0,0)|0|0,4,0,0)|0|0;n=Qs(F,m,1)|0;if(!n){d=7;sa=227;break}if((m|0)>0){e=F+8|0;g=n+20|0;h=0;while(1){Y=Rs(a,b,h)|0;ea(g|0,Y|0,4,0);if(!Y)ea(g|0,da(e|0,4,0,0)|0|0,4,0);h=h+1|0;if((h|0)==(m|0))break;else g=g+4|0}}k=I+32|0;l=I+4|0;do{e=0;do{h=b+(e<<2)+16|0;g=da(h|0,4,0,0)|0|0;if((g|0)<0)break;if((da(k|0,4,0,0)|0|0)>>>0>g>>>0)ea((da(l|0,4,0,0)|0|0)+(g*20|0)+8|0,m|0,4,0);ea(n|0,(da(n|0,4,0,0)|0|0)+1|0,4,0);wh(I,g,n,-6);ea(h|0,-1|0,4,0);e=e+1|0}while((e|0)<2);b=da(b+52|0,4,0,0)|0|0}while((b|0)!=0);Y=(da(n|0,4,0,0)|0|0)+-1|0;ea(n|0,Y|0,4,0);if(Y){sa=227;break}Vc(n);sa=227}else{d=da(b+4>>0|0,1,0,1)|0|0;if((d|0)==118)d=35336;else if((d|0)==117)d=35352;else if((d|0)==116)d=35320;else d=35360;ea(ka|0,d|0,4,0);sh(a,35024,ka);f=0;d=1;sa=227}while(0);if((sa|0)==227){ea(c+8|0,da(la+8|0,4,0,0)|0|0,4,0);ea(c+12|0,da(la+12|0,4,0,0)|0|0,4,0);Lk(F,f,1)}ea(ta|0,ua|0,4,0);break a}if((f&5)==1){d=da(oa|0,4,0,0)|0|0;if(!(Ss(d,K,-1)|0)){ea(ma|0,f&65534|0,2,0);o=Or(qa,K,0)|0;ea(e|0,o|0,4,0);sa=232}}else sa=232;if((sa|0)==232)d=da(oa|0,4,0,0)|0|0;if(!d)d=-1;else{X=Ts(a,d,0,da(K|0,4,0,0)|0|0)|0;W=a+68|0;d=da(W|0,4,0,0)|0|0;ea(W|0,d+1|0,4,0);ea(oa+8|0,d|0,4,0);d=vh(pa,57,d,(da(da(oa|0,4,0,0)|0|0,4,0,0)|0|0)+1+(da(K|0,4,0,0)|0|0)|0,0)|0;wh(pa,d,X,-6)}I=oa+20|0;ea(I|0,d|0,4,0);if((da(c>>0|0,1,0,0)|0|0)==12)vh(pa,57,da(c+4|0,4,0,0)|0|0,da(K|0,4,0,0)|0|0,0)|0;ja=ws(pa)|0;q=b+24|0;X=q;ea(X|0,-1|0,4,0);ea(X+4|0,2147483647|0,4,0);Ns(a,b,ja);if((da(b+8|0,4,0,0)|0|0)==0?(Z=da(I|0,4,0,0)|0|0,(Z|0)>-1):0){if(!(da((da(pa|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))d=(da(pa+4|0,4,0,0)|0|0)+(Z*20|0)|0;else d=29120;ea(d>>0|0,58|0,1,0);X=oa+24|0;ea(X>>0|0,da(X>>0|0,1,0,1)|0|1|0,1,0)}if(!((da(ma|0,2,0,0)|0)&1))ea(na+1>>0|0,0|0,1,0);else{X=a+68|0;d=da(X|0,4,0,0)|0|0;ea(X|0,d+1|0,4,0);ea(na+4|0,d|0,4,0);X=Ts(a,da(b|0,4,0,0)|0|0,0,0)|0;d=vh(pa,57,d,0,0)|0;wh(pa,d,X,-6);ea(na+8|0,d|0,4,0);d=da(pa+4|0,4,0,0)|0|0;if(d)ea(d+(((da(pa+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,8|0,1,0);ea(na+1>>0|0,3|0,1,0)}if((r|0)==0&(o|0)==0){n=Us(a,L,t,da(oa|0,4,0,0)|0|0,da(b|0,4,0,0)|0|0,(da(na>>0|0,1,0,0)|0|0)!=0?1024:0,0)|0;if(!n){sa=444;break}l=Vs(da(n+32|0,2,0,0)|0|0)|0;k=C;h=q;Y=da(h+4|0,4,0,0)|0|0;if(k>>>0>>0|((k|0)==(Y|0)?l>>>0<(da(h|0,4,0,0)|0|0)>>>0:0)){Y=q;ea(Y|0,l|0,4,0);ea(Y+4|0,k|0,4,0)}do if(da(na>>0|0,1,0,0)|0){l=da(n+40>>0|0,1,0,0)|0|0;if(!(l<<24>>24))break;ea(na+1>>0|0,l|0,1,0)}while(0);l=da(oa|0,4,0,0)|0|0;do if(!l)sa=257;else{Y=da(n+36>>0|0,1,0,0)|0|0;ea(oa+4|0,Y|0,4,0);if((Y|0)!=(da(l|0,4,0,0)|0|0))break;ea(oa|0,0|0,4,0);sa=257}while(0);do if((sa|0)==257){h=da(I|0,4,0,0)|0|0;if((h|0)<=-1)break;yh(pa,h)}while(0);Os(a,b,K,-1,oa,na,c,da(n+48|0,4,0,0)|0|0,da(n+52|0,4,0,0)|0|0);Ws(n)}else{r=(o|0)!=0;do if(r){e=da(b|0,4,0,0)|0|0;d=da(e|0,4,0,0)|0|0;if((d|0)>0){e=da(e+4|0,4,0,0)|0|0;while(1){ea(e+18|0,0|0,2,0);d=d+-1|0;if((d|0)<=0)break;else e=e+20|0}}d=da(o|0,4,0,0)|0|0;if((d|0)>0){e=da(o+4|0,4,0,0)|0|0;while(1){ea(e+18|0,0|0,2,0);d=d+-1|0;if((d|0)<=0)break;else e=e+20|0}}X=q;W=da(X+4|0,4,0,0)|0|0;if(!(W>>>0>0|(W|0)==0&(da(X|0,4,0,0)|0|0)>>>0>100))break;X=q;ea(X|0,100|0,4,0);ea(X+4|0,0|0,4,0)}else{X=q;ea(X|0,1|0,4,0);ea(X+4|0,0|0,4,0)}while(0);G=(Ss(o,da(oa|0,4,0,0)|0|0,-1)|0)==0;J=ws(pa)|0;ea(fa+0|0,0|0,4,0);ea(fa+4|0,0|0,4,0);ea(fa+8|0,0|0,4,0);ea(fa+12|0,0|0,4,0);ea(fa+16|0,0|0,4,0);ea(fa+20|0,0|0,4,0);ea(fa+24|0,0|0,4,0);ea(fa+28|0,0|0,4,0);ea(fa|0,a|0,4,0);ea(fa+4|0,L|0,4,0);ea(fa+12|0,ra|0,4,0);A=a+72|0;ea(ra+16|0,(da(A|0,4,0,0)|0|0)+1|0,4,0);if(r)d=da(o|0,4,0,0)|0|0;else d=0;q=ra+12|0;ea(q|0,d|0,4,0);ea(ra+24|0,o|0,4,0);Xs(fa,K);Xs(fa,da(oa|0,4,0,0)|0|0);if(Y){ea(ka+0|0,0|0,4,0);ea(ka+4|0,0|0,4,0);ea(ka+8|0,0|0,4,0);ea(ka+12|0,0|0,4,0);ea(ka+16|0,0|0,4,0);ea(ka+20|0,0|0,4,0);ea(ka|0,80|0,4,0);ea(ka+4|0,81|0,4,0);ea(ka+24|0,fa|0,4,0);qs(ka,Y)|0}s=ra+32|0;ea(ra+36|0,da(s|0,4,0,0)|0|0,4,0);k=ra+44|0;d=da(k|0,4,0,0)|0|0;if((d|0)>0){g=fa+28|0;e=ra+40|0;f=da(g|0,2,0,0)|0|0;h=0;do{ea(g|0,f&65535|8|0,2,0);Xs(fa,da((da((da(e|0,4,0,0)|0|0)+(h<<4)|0,4,0,0)|0|0)+20|0,4,0,0)|0|0);f=(da(g|0,2,0,1)|0)&65527;ea(g|0,f|0,2,0);h=h+1|0;d=da(k|0,4,0,0)|0|0}while((h|0)<(d|0))}ea(ra+20|0,da(A|0,4,0,0)|0|0,4,0);if(da(ia>>0|0,1,0,0)|0){sa=444;break}if(r){y=a+68|0;x=da(y|0,4,0,0)|0|0;ea(y|0,x+1|0,4,0);n=ra+4|0;ea(n|0,x|0,4,0);x=Ts(a,o,0,da(s|0,4,0,0)|0|0)|0;m=vh(pa,58,da(n|0,4,0,0)|0|0,da(q|0,4,0,0)|0|0,0)|0;wh(pa,m,x,-6);E=da(A|0,4,0,0)|0|0;D=E+1|0;z=E+2|0;E=E+3|0;ea(A|0,E|0,4,0);B=ws(pa)|0;H=(da(A|0,4,0,0)|0|0)+1|0;ea(A|0,H|0,4,0);F=ws(pa)|0;l=da(A|0,4,0,0)|0|0;h=l+1|0;X=da(o|0,4,0,0)|0|0;W=X+l|0;k=W+1|0;ea(A|0,W+X|0,4,0);vh(pa,25,0,z,0)|0;vh(pa,25,0,D,0)|0;vh(pa,28,0,h,(da(o|0,4,0,0)|0|0)+l|0)|0;vh(pa,17,H,F,0)|0;l=Us(a,L,t,o,0,G?2304:256,0)|0;if(!l){sa=444;break}if((da(l+36>>0|0,1,0,0)|0|0)==(da(o|0,4,0,0)|0|0)){e=0;d=0;p=0}else{if(!(da(na>>0|0,1,0,0)|0))d=34824;else d=((da(ma|0,2,0,0)|0)&1)==0?34808:34824;_s(a,d);u=da(o|0,4,0,0)|0|0;d=da(s|0,4,0,0)|0|0;if((d|0)>0){e=da(ra+28|0,4,0,0)|0|0;f=0;q=u;p=u;do{if((da(e+(f*24|0)+12|0,4,0,0)|0|0)>=(q|0)){q=q+1|0;p=p+1|0}f=f+1|0}while((f|0)<(d|0));w=p}else w=u;v=a+60|0;p=da(v|0,4,0,0)|0|0;t=a+56|0;d=da(t|0,4,0,0)|0|0;if((d|0)<(w|0)){p=da(A|0,4,0,0)|0|0;ea(A|0,p+w|0,4,0);p=p+1|0}else{ea(v|0,p+w|0,4,0);ea(t|0,d-w|0,4,0)}$s(a);at(a,o,p,0);q=da(s|0,4,0,0)|0|0;if((q|0)>0){g=ra+28|0;r=0;d=u;do{e=da(g|0,4,0,0)|0|0;if((da(e+(r*24|0)+12|0,4,0,0)|0|0)>=(d|0)){f=d+p|0;q=bt(a,da(e+(r*24|0)|0,4,0,0)|0|0,da(e+(r*24|0)+8|0,4,0,0)|0|0,da(e+(r*24|0)+4|0,4,0,0)|0|0,f,0)|0;if((f|0)!=(q|0))vh(pa,34,q,f,0)|0;q=da(s|0,4,0,0)|0|0;d=d+1|0}r=r+1|0}while((r|0)<(q|0))}q=a+19|0;d=da(q>>0|0,1,0,0)|0|0;if(!(d<<24>>24)){d=(da(A|0,4,0,0)|0|0)+1|0;ea(A|0,d|0,4,0)}else{d=d+-1<<24>>24;ea(q>>0|0,d|0,1,0);d=da(a+((d&255)<<2)+24|0,4,0,0)|0|0}vh(pa,49,p,w,d)|0;vh(pa,109,da(n|0,4,0,0)|0|0,d,0)|0;Zr(a,d);ct(a,p,w);if((da(t|0,4,0,0)|0|0)<(w|0)){ea(t|0,w|0,4,0);ea(v|0,p|0,4,0)}Ws(l);p=da(y|0,4,0,0)|0|0;ea(y|0,p+1|0,4,0);ea(ra+8|0,p|0,4,0);d=da(q>>0|0,1,0,0)|0|0;if(!(d<<24>>24)){d=(da(A|0,4,0,0)|0|0)+1|0;ea(A|0,d|0,4,0)}else{d=d+-1<<24>>24;ea(q>>0|0,d|0,1,0);d=da(a+((d&255)<<2)+24|0,4,0,0)|0|0}vh(pa,60,p,d,w)|0;vh(pa,106,da(n|0,4,0,0)|0|0,J,0)|0;ea(ra+1>>0|0,1|0,1,0);$s(a);e=1}do if(G){if((da(qa+60|0,2,0,0)|0)&4)break;if((e|0)==0?(da(l+37>>0|0,1,0,0)|0|0)==0:0)break;ea(oa|0,0|0,4,0);yh(pa,da(I|0,4,0,0)|0|0)}while(0);r=pa+32|0;g=da(r|0,4,0,0)|0|0;$s(a);q=(e|0)!=0;if(q)vh(pa,100,da(n|0,4,0,0)|0|0,d,p)|0;d=da(o|0,4,0,0)|0|0;if((d|0)>0){e=o+4|0;f=0;do{if(q)vh(pa,47,p,f,f+k|0)|0;else{ea(ra>>0|0,1|0,1,0);Qq(a,da((da(e|0,4,0,0)|0|0)+(f*20|0)|0,4,0,0)|0|0,f+k|0)}f=f+1|0;d=da(o|0,4,0,0)|0|0}while((f|0)<(d|0))}if(x)ea(x|0,(da(x|0,4,0,0)|0|0)+1|0,4,0);wh(pa,vh(pa,42,h,k,d)|0,x,-6);d=da(r|0,4,0,0)|0|0;X=d+1|0;vh(pa,43,X,0,X)|0;o=da(o|0,4,0,0)|0|0;vh(da(a+8|0,4,0,0)|0|0,32,k,h,o)|0;ct(a,k,o);vh(pa,17,E,B,0)|0;vh(pa,137,z,J,0)|0;vh(pa,17,H,F,0)|0;o=da(r|0,4,0,0)|0|0;if(o>>>0>d>>>0)ea((da(pa+4|0,4,0,0)|0|0)+(d*20|0)+8|0,o|0,4,0);h=pa+24|0;ea((da(h|0,4,0,0)|0|0)+88|0,o+-1|0,4,0);dt(a,ra);vh(pa,25,1,D,0)|0;if(q)vh(pa,5,da(n|0,4,0,0)|0|0,g,0)|0;else{Ws(l);yh(pa,m)}vh(pa,17,E,B,0)|0;vh(pa,16,0,J,0)|0;f=da(r|0,4,0,0)|0|0;vh(pa,25,1,z,0)|0;vh(pa,18,E,0,0)|0;d=da(h|0,4,0,0)|0|0;e=~B;do if((B|0)<0){o=da(d+112|0,4,0,0)|0|0;if(!o)break;ea(o+(e<<2)|0,da(r|0,4,0,0)|0|0,4,0)}while(0);n=da(r|0,4,0,0)|0|0;ea(d+88|0,n+-1|0,4,0);vh(pa,137,D,n+2|0,0)|0;vh(pa,18,E,0,0)|0;et(a,ra);n=n+1|0;ft(a,Y,n,16);Os(a,b,da(b|0,4,0,0)|0|0,-1,oa,na,c,n,f);vh(pa,18,E,0,0)|0;n=da(h|0,4,0,0)|0|0;m=~F;do if((F|0)<0){l=da(n+112|0,4,0,0)|0|0;if(!l)break;ea(l+(m<<2)|0,da(r|0,4,0,0)|0|0,4,0)}while(0);ea(n+88|0,(da(r|0,4,0,0)|0|0)+-1|0,4,0);gt(a,ra);vh(pa,18,H,0,0)|0}else{do if(!(da(x|0,4,0,0)|0)){m=da(b|0,4,0,0)|0|0;if((da(m|0,4,0,0)|0|0)!=1){sa=372;break}n=da(ga|0,4,0,0)|0|0;if((da(n|0,4,0,0)|0|0)!=1){sa=372;break}if(da(n+28|0,4,0,0)|0){sa=372;break}p=da(n+24|0,4,0,0)|0|0;n=da(da(m+4|0,4,0,0)|0|0,4,0,0)|0|0;r=p+44|0;if((da(r>>0|0,1,0,0)|0)&16){sa=372;break}if((da(n>>0|0,1,0,0)|0|0)!=-101|(d|0)==0){sa=372;break}q=ra+40|0;if(!((da((da((da(q|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+2|0,2,0,0)|0)&256)){sa=372;break}if((p|0)==0?1:((da(n+4|0,4,0,0)|0)&16|0)!=0){sa=372;break}n=da(a|0,4,0,0)|0|0;d=da(p+68|0,4,0,0)|0|0;i:do if(!d)m=-1e6;else{e=da(n+20|0,4,0,0)|0|0;if((e|0)<=0){m=0;break}n=da(n+16|0,4,0,0)|0|0;o=0;while(1){m=o+1|0;if((da(n+(o<<4)+12|0,4,0,0)|0|0)==(d|0)){m=o;break i}if((m|0)<(e|0))o=m;else break}}while(0);o=a+68|0;g=da(o|0,4,0,0)|0|0;ea(o|0,g+1|0,4,0);o=p+32|0;d=da(o|0,4,0,0)|0|0;zr(a,m);fs(a,m,da(o|0,4,0,0)|0|0,0,da(p|0,4,0,0)|0|0);o=da(p+8|0,4,0,0)|0|0;j:do if(!((da(r>>0|0,1,0,0)|0)&32)){n=0;sa=351}else{if(!o){e=1;f=0;o=0;break}else n=o;while(1){if(((da(n+51>>0|0,1,0,0)|0)&3)==2){sa=351;break j}n=da(n+20|0,4,0,0)|0|0;if(!n){n=0;sa=351;break}}}while(0);do if((sa|0)==351){if(o){f=p+42|0;e=o;do{do if(!((da(e+51>>0|0,1,0,0)|0)&4)){o=da(e+44|0,2,0,0)|0|0;if(o<<16>>16>=(da(f|0,2,0,0)|0|0))break;if(da(e+36|0,4,0,0)|0)break;if((n|0)!=0?o<<16>>16>=(da(n+44|0,2,0,0)|0|0):0)break;n=e}while(0);e=da(e+20|0,4,0,0)|0|0}while((e|0)!=0)}if(!n){e=1;f=0;o=0;break}d=da(n+40|0,4,0,0)|0|0;e=0;f=n;o=gs(a,n)|0}while(0);wh(pa,vh(pa,54,g,d,m)|0,1,-14);if(o)wh(pa,-1,o,-6);vh(pa,50,g,da((da(q|0,4,0,0)|0|0)+8|0,4,0,0)|0|0,0)|0;vh(pa,61,g,0,0)|0;if((da(a+450>>0|0,1,0,0)|0|0)!=2){l=0;break}do if(e){n=da(p|0,4,0,0)|0|0;m=10360;k=10360;l=da(a|0,4,0,0)|0|0}else{if((da(r>>0|0,1,0,0)|0)&32){X=((da(f+51>>0|0,1,0,0)|0)&3)!=2;l=da(a|0,4,0,0)|0|0;n=da(p|0,4,0,0)|0|0;m=X?34920:10360;if(!X){k=10360;break}}else{m=34920;n=da(p|0,4,0,0)|0|0;l=da(a|0,4,0,0)|0|0}k=da(f|0,4,0,0)|0|0}while(0);ea(ka|0,n|0,4,0);ea(ka+4|0,m|0,4,0);ea(ka+8|0,k|0,4,0);l=th(l,34896,ka)|0;X=da(a+8|0,4,0,0)|0|0;wh(X,vh(X,157,da(ta|0,4,0,0)|0|0,0,0)|0,l,-1);l=0}else sa=372;while(0);if((sa|0)==372){do if((da(y|0,4,0,0)|0|0)==0&(d|0)==1){l=da(da(ra+40|0,4,0,0)|0|0,4,0,0)|0|0;n=da(l+20|0,4,0,0)|0|0;if(!n){l=0;k=0;break}if((da(n|0,4,0,0)|0|0)!=1){l=0;k=0;break}if((da((da(da(n+4|0,4,0,0)|0|0,4,0,0)|0)>>0|0,1,0,0)|0|0)!=-100){l=0;k=0;break}l=da(l+8|0,4,0,0)|0|0;if(cd(l,18760)|0)if(!(cd(l,18768)|0))k=2;else{l=0;k=0;break}else k=1;l=Or(qa,n,0)|0;if(!l){l=0;break}if(da(ia>>0|0,1,0,0)|0)break;X=da(l+4|0,4,0,0)|0|0;ea(X+12>>0|0,k<<24>>24!=1&1|0,1,0);ea((da(X|0,4,0,0)|0)>>0|0,-102|0,1,0)}else{l=0;k=0}while(0);gt(a,ra);k=Us(a,L,t,l,0,k&255,0)|0;if(!k){Mk(qa,l);sa=444;break}dt(a,ra);if((da(k+36>>0|0,1,0,0)|0|0)>0)vh(pa,16,0,da(k+52|0,4,0,0)|0|0,0)|0;Ws(k);et(a,ra)}ea(oa|0,0|0,4,0);ft(a,Y,J,16);Os(a,b,da(b|0,4,0,0)|0|0,-1,0,0,c,J,J);Mk(qa,l);h=pa+24|0}l=da(h|0,4,0,0)|0|0;k=~J;do if((J|0)<0){h=da(l+112|0,4,0,0)|0|0;if(!h)break;ea(h+(k<<2)|0,da(pa+32|0,4,0,0)|0|0,4,0)}while(0);ea(l+88|0,(da(pa+32|0,4,0,0)|0|0)+-1|0,4,0)}if((da(na+1>>0|0,1,0,0)|0|0)==3)_s(a,34808);if(da(oa|0,4,0,0)|0){g=oa+4|0;_s(a,(da(g|0,4,0,0)|0|0)>0?34840:34864);s=da(K|0,4,0,0)|0|0;m=a+8|0;x=da(m|0,4,0,0)|0|0;y=ws(x)|0;w=ws(x)|0;h=da(oa|0,4,0,0)|0|0;f=da(c>>0|0,1,0,0)|0|0;n=f&255;t=c+4|0;u=da(t|0,4,0,0)|0|0;q=oa+16|0;o=da(q|0,4,0,0)|0|0;if(o){vh(x,17,da(oa+12|0,4,0,0)|0|0,o,0)|0;vh(x,16,0,y,0)|0;Y=da(q|0,4,0,0)|0|0;o=da(x+24|0,4,0,0)|0|0;d=~Y;do if((Y|0)<0){e=da(o+112|0,4,0,0)|0|0;if(!e)break;ea(e+(d<<2)|0,da(x+32|0,4,0,0)|0|0,4,0)}while(0);ea(o+88|0,(da(x+32|0,4,0,0)|0|0)+-1|0,4,0)}v=da(oa+8|0,4,0,0)|0|0;l=f<<24>>24==9;k:do if((f&-5)<<24>>24==9){p=s;k=da(c+8|0,4,0,0)|0|0;d=0}else{o=a+19|0;d=da(o>>0|0,1,0,0)|0|0;do if(d<<24>>24){Y=d+-1<<24>>24;ea(o>>0|0,Y|0,1,0);e=da(a+((Y&255)<<2)+24|0,4,0,0)|0|0;if(!(Y<<24>>24)){d=e;o=da(a+72|0,4,0,0)|0|0;break}else{k=d+-2<<24>>24;ea(o>>0|0,k|0,1,0);p=1;k=da(a+((k&255)<<2)+24|0,4,0,0)|0|0;d=e;break k}}else{d=a+72|0;o=(da(d|0,4,0,0)|0|0)+1|0;ea(d|0,o|0,4,0);d=o}while(0);k=o+1|0;ea(a+72|0,k|0,4,0);p=1}while(0);h=(da(h|0,4,0,0)|0|0)-(da(g|0,4,0,0)|0|0)|0;r=oa+24|0;if(!((da(r>>0|0,1,0,0)|0)&1)){o=vh(x,107,v,y,0)|0;ht(x,da(b+12|0,4,0,0)|0|0,w);e=1;f=v}else{Y=a+72|0;f=(da(Y|0,4,0,0)|0|0)+1|0;ea(Y|0,f|0,4,0);Y=a+68|0;g=da(Y|0,4,0,0)|0|0;ea(Y|0,g+1|0,4,0);if(!(da(q|0,4,0,0)|0))e=0;else{Y=Nq(a)|0;X=a+80|0;e=da(X|0,4,0,0)|0|0;ea(X|0,e+1|0,4,0);e=vh(Y,44,e,0,0)|0}vh(x,60,g,f,p+1+h|0)|0;if(e){o=da(x+32|0,4,0,0)|0|0;if(o>>>0>e>>>0)ea((da(x+4|0,4,0,0)|0|0)+(e*20|0)+8|0,o|0,4,0);ea((da(x+24|0,4,0,0)|0|0)+88|0,o+-1|0,4,0)}o=vh(x,106,v,y,0)|0;ht(x,da(b+12|0,4,0,0)|0|0,w);vh(x,100,v,f,g)|0;e=0;f=g}g=o+1|0;if((p|0)>0){o=e+h|0;e=0;do{vh(x,47,f,o+e|0,e+k|0)|0;e=e+1|0}while((e|0)!=(p|0))}do if((n|0)==12|(n|0)==14){vh(x,74,u,d,0)|0;vh(x,75,u,k,d)|0;l=da(x+4|0,4,0,0)|0|0;if(!l)break;ea(l+(((da(x+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,8|0,1,0)}else if((n|0)==11){wh(x,vh(x,49,k,1,d)|0,c+1|0,1);ct(a,k,1);vh(x,110,u,d,0)|0}else if((n|0)!=10)if(l){Y=c+8|0;vh(x,35,da(Y|0,4,0,0)|0|0,s,0)|0;ct(a,da(Y|0,4,0,0)|0|0,s);break}else{vh(x,22,da(t|0,4,0,0)|0|0,0,0)|0;break}else{vh(da(m|0,4,0,0)|0|0,32,k,u,1)|0;ct(a,k,1)}while(0);if(d){Zr(a,k);Zr(a,d)}k=x+24|0;m=da(k|0,4,0,0)|0|0;n=~w;do if((w|0)<0){l=da(m+112|0,4,0,0)|0|0;if(!l)break;ea(l+(n<<2)|0,da(x+32|0,4,0,0)|0|0,4,0)}while(0);n=x+32|0;ea(m+88|0,(da(n|0,4,0,0)|0|0)+-1|0,4,0);if(!((da(r>>0|0,1,0,0)|0)&1))vh(x,9,v,g,0)|0;else vh(x,5,v,g,0)|0;h=da(oa+12|0,4,0,0)|0|0;if(h)vh(x,18,h,0,0)|0;h=da(k|0,4,0,0)|0|0;g=~y;do if((y|0)<0){f=da(h+112|0,4,0,0)|0|0;if(!f)break;ea(f+(g<<2)|0,da(n|0,4,0,0)|0|0,4,0)}while(0);ea(h+88|0,(da(n|0,4,0,0)|0|0)+-1|0,4,0)}e=da(pa+24|0,4,0,0)|0|0;f=~ja;do if((ja|0)<0){d=da(e+112|0,4,0,0)|0|0;if(!d)break;ea(d+(f<<2)|0,da(pa+32|0,4,0,0)|0|0,4,0)}while(0);ea(e+88|0,(da(pa+32|0,4,0,0)|0|0)+-1|0,4,0);ea(ta|0,ua|0,4,0);if((da(c>>0|0,1,0,0)|0|0)!=9){d=0;break}Ms(a,L,K);d=0}else sa=444;while(0);if((sa|0)==444){ea(ta|0,ua|0,4,0);d=1}lg(qa,da(ra+28|0,4,0,0)|0|0);lg(qa,da(ra+40|0,4,0,0)|0|0)}else d=1;while(0);i=va;return d|0}function ir(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();l=p;n=da(a|0,4,0,0)|0|0;if((b|0)==0?(k=(g|0)!=0,k|(h|0)!=0):0){ea(l|0,(k?34792:34800)|0,4,0);sh(a,34752,l);o=9}else{b=or(n,b,c,d)|0;if((b|0)!=0?(m=da(b|0,4,0,0)|0|0,(m|0)!=0):0){k=m+-1|0;if(da(e+4|0,4,0,0)|0)ea(b+(k*72|0)+20|0,Vq(n,e)|0|0,4,0);ea(b+(k*72|0)+28|0,f|0,4,0);ea(b+(k*72|0)+52|0,g|0,4,0);ea(b+(k*72|0)+56|0,h|0,4,0)}else o=9}if((o|0)==9){Fk(n,g);Gk(n,h);Lk(n,f,1);b=0}i=p;return b|0}function jr(a,b,c,d,e,f,g,h,k,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;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+80|0;if((i|0)>=(j|0))ba();n=s+72|0;r=s;q=da(a|0,4,0,0)|0|0;m=lh(q,72,0)|0;if(!m){o=r+0|0;p=o+72|0;do{ea(o|0,0|0,4,0);o=o+4|0}while((o|0)<(p|0));m=r}else{o=m+0|0;p=o+72|0;do{ea(o>>0|0,0|0,1,0);o=o+1|0}while((o|0)<(p|0))}if(!b){ea(n|0,0|0,4,0);ea(n+4|0,0|0,4,0);b=kr(a,0,mr(q,116,n,0)|0)|0}ea(m|0,b|0,4,0);if(!c){c=lh(q,80,0)|0;if(c){o=c+0|0;p=o+80|0;do{ea(o>>0|0,0|0,1,0);o=o+1|0}while((o|0)<(p|0))}}ea(m+32|0,c|0,4,0);ea(m+36|0,d|0,4,0);ea(m+40|0,e|0,4,0);ea(m+44|0,f|0,4,0);ea(m+48|0,g|0,4,0);ea(m+6|0,h|0,2,0);ea(m+4>>0|0,119|0,1,0);ea(m+60|0,k|0,4,0);ea(m+64|0,l|0,4,0);ea(m+16|0,-1|0,4,0);ea(m+20|0,-1|0,4,0);if(da(q+65>>0|0,1,0,0)|0){Lk(q,m,(m|0)!=(r|0)&1);m=0}i=s;return m|0}function kr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=da(a|0,4,0,0)|0|0;if(!b){b=lh(e,8,0)|0;if(b){a=b;d=a;ea(d>>0|0,0|0,1,0);ea(d+1>>0|0,0|0,1,0);ea(d+2>>0|0,0|0,1,0);ea(d+3>>0|0,0|0,1,0);a=a+4|0;ea(a>>0|0,0|0,1,0);ea(a+1>>0|0,0|0,1,0);ea(a+2>>0|0,0|0,1,0);ea(a+3>>0|0,0|0,1,0);a=lh(e,20,0)|0;ea(b+4|0,a|0,4,0);if(!a)d=8;else d=7}else{b=0;d=8}}else{a=da(b|0,4,0,0)|0|0;if(!(a+-1&a)){d=b+4|0;a=qo(e,da(d|0,4,0,0)|0|0,a*40|0,0)|0;if(!a)d=8;else{ea(d|0,a|0,4,0);d=7}}else d=7}if((d|0)==7){a=da(b|0,4,0,0)|0|0;ea(b|0,a+1|0,4,0);a=(da(b+4|0,4,0,0)|0|0)+(a*20|0)|0;ea(a+0|0,0|0,4,0);ea(a+4|0,0|0,4,0);ea(a+8|0,0|0,4,0);ea(a+12|0,0|0,4,0);ea(a+16|0,0|0,4,0);ea(a|0,c|0,4,0)}else if((d|0)==8){Fk(e,c);Mk(e,b);b=0}return b|0}function lr(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;do if(b){h=(da(b|0,4,0,0)|0|0)+-1|0;e=da(b+4|0,4,0,0)|0|0;f=da(c|0,4,0,0)|0|0;b=da(c+4|0,4,0,0)|0|0;if((f|0)!=0?(c=da(a|0,4,0,0)|0|0,g=iw(b|0,0,1,0)|0,g=lh(c,g,C)|0,(g|0)!=0):0){jw(g|0,f|0,b|0)|0;ea(g+b>>0|0,0|0,1,0);ea(e+(h*20|0)+4|0,g|0,4,0);if(!d)break;ko(g);break}ea(e+(h*20|0)+4|0,0|0,4,0)}while(0);return}function mr(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,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();h=n;ea(h|0,0|0,4,0);f=(c|0)!=0;do if(f){if(((b|0)==132?(e=da(c|0,4,0,0)|0|0,(e|0)!=0):0)?(Cn(e,h)|0)!=0:0){l=0;break}l=(da(c+4|0,4,0,0)|0|0)+1|0}else l=0;while(0);g=l+48|0;k=lh(a,g,0)|0;if(k){ew(k|0,0,g|0)|0;ea(k>>0|0,b|0,1,0);ea(k+34|0,-1|0,2,0);do if(f){if(!l){d=k+4|0;ea(d|0,da(d|0,4,0,0)|0|1024|0,4,0);ea(k+8|0,da(h|0,4,0,0)|0|0,4,0);break}e=k+48|0;g=k+8|0;ea(g|0,e|0,4,0);f=c+4|0;a=da(f|0,4,0,0)|0|0;if(!a)e=48;else{jw(e|0,da(c|0,4,0,0)|0|0,a|0)|0;e=(da(f|0,4,0,0)|0|0)+48|0}ea(k+e>>0|0,0|0,1,0);if(((d|0)!=0&(l|0)>2?(d=da((da(c|0,4,0,0)|0)>>0|0,1,0,0)|0|0,m=d<<24>>24==34,d<<24>>24==34|d<<24>>24==39|d<<24>>24==91|d<<24>>24==96):0)?(ko(da(g|0,4,0,0)|0|0),m):0){d=k+4|0;ea(d|0,da(d|0,4,0,0)|0|64|0,4,0)}}while(0);ea(k+24|0,1|0,4,0)}i=n;return k|0}function nr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;do if((b|0)!=0?(d=da(b|0,4,0,0)|0|0,(d|0)>0):0){d=d+-1|0;if((da(c+4|0,4,0,0)|0|0)==1?(da(c|0,4,0,0)|0|0)==0:0){d=b+(d*72|0)+45|0;ea(d>>0|0,da(d>>0|0,1,0,0)|0|1|0,1,0);break}ea(b+(d*72|0)+72|0,Vq(da(a|0,4,0,0)|0|0,c)|0|0,4,0)}while(0);return}function or(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(!b){b=lh(a,80,0)|0;if(!b)b=0;else{f=b+0|0;e=f+80|0;do{ea(f>>0|0,0|0,1,0);f=f+1|0}while((f|0)<(e|0));ea(b+4|0,1|0,4,0);f=4}}else f=4;do if((f|0)==4){b=Es(a,b,1,da(b|0,4,0,0)|0|0)|0;if(da(a+65>>0|0,1,0,0)|0){Co(a,b);b=0;break}f=(da(b|0,4,0,0)|0|0)+-1|0;if(!d)e=0;else e=(da(d|0,4,0,0)|0|0)==0?0:d;d=(e|0)==0;ea(b+(f*72|0)+16|0,Vq(a,d?c:e)|0|0,4,0);ea(b+(f*72|0)+12|0,Vq(a,d?0:c)|0|0,4,0)}while(0);return b|0}function pr(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,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;if((i|0)>=(j|0))ba();m=o;k=o+16|0;ea(k|0,b|0,4,0);ea(k+4|0,c|0,4,0);ea(k+8|0,d|0,4,0);h=b;l=1;e=0;a:while(1){if(!h)break;g=da(h+4|0,4,0,0)|0|0;f=0;while(1){if((g|0)==(da(34625+(f*3|0)>>0|0,1,0,1)|0|0|0)?(Ec(da(h|0,4,0,0)|0|0,34584+(da(34624+(f*3|0)>>0|0,1,0,1)|0|0)|0,g)|0)==0:0)break;f=f+1|0;if((f|0)>=7){n=10;break a}}e=da(34626+(f*3|0)>>0|0,1,0,1)|0|0|e;if((f|0)>6){n=10;break}if((l|0)>=3)break;h=da(k+(l<<2)|0,4,0,0)|0|0;l=l+1|0}if((n|0)==10)e=e|64;if((e&33|0)!=33&(e&64|0)==0){if(!((e&32|0)==0|(e&24|0)==8)){sh(a,34696,m);e=1}}else{ea(m|0,b|0,4,0);ea(m+4|0,c|0,4,0);ea(m+8|0,((d|0)==0?20377|0:20376)|0,4,0);ea(m+12|0,d|0,4,0);sh(a,34648,m);e=1}i=o;return e|0}function qr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=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;M=i;i=i+48|0;if((i|0)>=(j|0))ba();J=M+36|0;K=M+32|0;k=M;ea(J|0,0|0,4,0);ea(K|0,0|0,4,0);L=da(a|0,4,0,0)|0|0;if(((((da(a+64|0,4,0,0)|0|0)==0?(da(L+65>>0|0,1,0,0)|0|0)==0:0)?(A=Ir(a,b)|0,(A|0)!=0):0)?(z=it(a,A,109,0,0)|0,I=(da(A+12|0,4,0,0)|0|0)!=0,(gr(a,A)|0)==0):0)?(m=(z|0)!=0,(jt(a,A,m&1)|0)==0):0){f=da(A+68|0,4,0,0)|0|0;a:do if(f){e=da(L+20|0,4,0,0)|0|0;if((e|0)>0){d=da(L+16|0,4,0,0)|0|0;h=0;while(1){g=h+1|0;if((da(d+(h<<4)+12|0,4,0,0)|0|0)==(f|0)){g=h;break a}if((g|0)<(e|0))h=g;else break}}else g=0}else g=-1e6;while(0);d=Rq(a,9,da(A|0,4,0,0)|0|0,0,da((da(L+16|0,4,0,0)|0|0)+(g<<4)|0,4,0,0)|0|0)|0;if((d|0)!=1){l=a+68|0;v=da(l|0,4,0,0)|0|0;n=v+1|0;ea(l|0,n|0,4,0);ea(b+48|0,v|0,4,0);B=A+8|0;f=da(B|0,4,0,0)|0|0;if(!f)h=0;else{e=n;h=0;do{e=e+1|0;ea(l|0,e|0,4,0);h=h+1|0;f=da(f+20|0,4,0,0)|0|0}while((f|0)!=0)}if(I){G=a+492|0;H=da(G|0,4,0,0)|0|0;ea(G|0,da(A|0,4,0,0)|0|0,4,0);G=a}else{G=0;H=0}E=Nq(a)|0;b:do if(E){F=a+18|0;if(!(da(F>>0|0,1,0,0)|0)){x=E+88|0;ea(x|0,da(x|0,2,0,0)|0|4|0,2,0)}w=a+408|0;x=da(w|0,4,0,0)|0|0;x=(x|0)==0?a:x;zr(a,g);u=x+328|0;ea(u|0,da(u|0,4,0,0)|0|1<>0|0,da(x>>0|0,1,0,1)|0|1|0,1,0);if(I){kt(a,A,c,v);ea(K|0,v|0,4,0);ea(J|0,v|0,4,0)};ea(k+0|0,0|0,4,0);ea(k+4|0,0|0,4,0);ea(k+8|0,0|0,4,0);ea(k+12|0,0|0,4,0);ea(k+16|0,0|0,4,0);ea(k+20|0,0|0,4,0);ea(k+24|0,0|0,4,0);ea(k+28|0,0|0,4,0);ea(k|0,a|0,4,0);ea(k+4|0,b|0,4,0);if(!(ks(k,c)|0)){C=L+24|0;if(!((da(C|0,4,0,0)|0)&128))D=-1;else{x=a+72|0;D=(da(x|0,4,0,0)|0|0)+1|0;ea(x|0,D|0,4,0);vh(E,25,0,D,0)|0}x=A+44|0;do if((!((c|0)!=0|(d|0)!=0|m)?((da(x>>0|0,1,0,0)|0)&16)==0:0)?(lt(a,A,0,0)|0)==0:0){f=A+32|0;fs(a,g,da(f|0,4,0,0)|0|0,1,da(A|0,4,0,0)|0|0);if(!((da(x>>0|0,1,0,0)|0)&32)){A=da(A|0,4,0,0)|0|0;wh(E,vh(E,118,da(f|0,4,0,0)|0|0,g,D)|0,A,-2)}d=da(B|0,4,0,0)|0|0;if(!d){d=0;break}do{vh(E,118,da(d+40|0,4,0,0)|0|0,g,0)|0;d=da(d+20|0,4,0,0)|0|0}while((d|0)!=0);d=0}else y=31;while(0);do if((y|0)==31){if(!((da(x>>0|0,1,0,0)|0)&32)){o=a+72|0;s=(da(o|0,4,0,0)|0|0)+1|0;ea(o|0,s|0,4,0);vh(E,28,0,s,0)|0;o=0;t=0;d=0;q=1;g=0}else{g=da(B|0,4,0,0)|0|0;c:do if(!g)g=0;else while(1){if(((da(g+51>>0|0,1,0,0)|0)&3)==2)break c;g=da(g+20|0,4,0,0)|0|0;if(!g){g=0;break}}while(0);q=da(g+46|0,2,0,0)|0|0;t=a+72|0;d=da(t|0,4,0,0)|0|0;o=q<<16>>16;ea(t|0,d+o|0,4,0);t=da(l|0,4,0,0)|0|0;ea(l|0,t+1|0,4,0);o=vh(E,57,t,o,0)|0;s=da(a+8|0,4,0,0)|0|0;wh(s,-1,gs(a,g)|0,-6);d=d+1|0;s=0}p=Us(a,b,c,0,0,12,n)|0;if(!p){d=0;break b}n=p+60|0;m=da(n|0,4,0,0)|0|0;n=da(n+4|0,4,0,0)|0|0;r=da(p+38>>0|0,1,0,0)|0|0;if((da(C|0,4,0,0)|0)&128)vh(E,37,D,1,0)|0;u=(g|0)!=0;do if(u){if(q<<16>>16<=0){e=d;break}k=g+4|0;f=q<<16>>16;l=0;do{mt(E,A,v,da((da(k|0,4,0,0)|0|0)+(l<<1)|0,2,0,0)|0|0,l+d|0);l=l+1|0}while((l|0)!=(f|0));e=d}else{f=a+72|0;e=bt(a,A,-1,v,(da(f|0,4,0,0)|0|0)+1|0,0)|0;if((e|0)<=(da(f|0,4,0,0)|0|0))break;ea(f|0,e|0,4,0)}while(0);k=r<<24>>24!=0;do if(!k)if(u){f=a+72|0;e=(da(f|0,4,0,0)|0|0)+1|0;ea(f|0,e|0,4,0);f=q<<16>>16;l=nt(E,g)|0;wh(E,vh(E,49,d,f,e)|0,l,f);vh(E,110,t,e,0)|0;d=0;f=0;l=0;y=59;break}else{vh(E,128,s,e,0)|0;Ws(p);d=0;n=0;g=1;break}else{d=h+2|0;d=lh(L,d,((d|0)<0)<<31>>31)|0;if(!d){Ws(p);d=0;break b}y=h+1|0;ew(d|0,1,y|0)|0;ea(d+y>>0|0,0|0,1,0);if((m|0)>-1)ea(d+(m-v)>>0|0,0|0,1,0);if((n|0)>-1)ea(d+(n-v)>>0|0,0|0,1,0);if(o)yh(E,o);f=vh(E,16,0,0,0)|0;l=q;y=59}while(0);do if((y|0)==59){Ws(p);if(!k){n=0;g=l;break}g=ws(E)|0;vh(E,16,0,g,0)|0;h=da(E+32|0,4,0,0)|0|0;if(h>>>0>f>>>0)ea((da(E+4|0,4,0,0)|0|0)+(f*20|0)+8|0,h|0,4,0);ea((da(E+24|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);n=g;g=l}while(0);if(!I)ot(a,A,55,v,d,J,K)|0;do if(!k)if(u){f=vh(E,108,t,0,0)|0;vh(E,101,t,e,0)|0;break}else{f=vh(E,129,s,0,e)|0;break}else{h=da(J|0,4,0,0)|0|0;if(!(da(d+(h-v)>>0|0,1,0,0)|0)){f=0;break}wh(E,vh(E,68,h,n,e)|0,g<<16>>16,-14);f=0}while(0);if(!((da(x>>0|0,1,0,0)|0)&16))qt(a,A,z,da(J|0,4,0,0)|0|0,da(K|0,4,0,0)|0|0,e,g,(da(F>>0|0,1,0,0)|0|0)==0&1,10,r);else{h=da(A+60|0,4,0,0)|0|0;d:do if(!h)h=0;else while(1){if((da(h|0,4,0,0)|0|0)==(L|0))break d;h=da(h+24|0,4,0,0)|0|0;if(!h){h=0;break}}while(0);pt(a,A);wh(E,vh(E,15,0,1,e)|0,h,-10);h=da(E+4|0,4,0,0)|0|0;if(h)ea(h+(((da(E+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,2|0,1,0);A=da(w|0,4,0,0)|0|0;ea(((A|0)==0?a:A)+21>>0|0,1|0,1,0)}do if(!k)if(u){vh(E,9,t,f+1|0,0)|0;h=da(E+32|0,4,0,0)|0|0;if(h>>>0>f>>>0)ea((da(E+4|0,4,0,0)|0|0)+(f*20|0)+8|0,h|0,4,0);ea((da(E+24|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);break}else{vh(E,16,0,f,0)|0;h=da(E+32|0,4,0,0)|0|0;if(h>>>0>f>>>0)ea((da(E+4|0,4,0,0)|0|0)+(f*20|0)+8|0,h|0,4,0);ea((da(E+24|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);break}else{g=da(E+24|0,4,0,0)|0|0;f=~n;do if((n|0)<0){h=da(g+112|0,4,0,0)|0|0;if(!h)break;ea(h+(f<<2)|0,da(E+32|0,4,0,0)|0|0,4,0)}while(0);ea(g+88|0,(da(E+32|0,4,0,0)|0|0)+-1|0,4,0)}while(0);if(I)break;if((da(x>>0|0,1,0,0)|0)&16)break;if(!u)vh(E,61,da(J|0,4,0,0)|0|0,0,0)|0;e=da(B|0,4,0,0)|0|0;if(!e)break;else f=0;while(1){vh(E,61,(da(K|0,4,0,0)|0|0)+f|0,0,0)|0;e=da(e+20|0,4,0,0)|0|0;if(!e)break;else f=f+1|0}}while(0);if((da(F>>0|0,1,0,0)|0|0)==0?(da(a+412|0,4,0,0)|0|0)==0:0)rt(a);if(((da(C|0,4,0,0)|0)&128|0)!=0?(da(F>>0|0,1,0,0)|0|0)==0:0){if(da(a+412|0,4,0,0)|0)break;vh(E,35,D,1,0)|0;hq(E,1);if(da((da(E|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break;Wg(da(E+16|0,4,0,0)|0|0,34568,-1,1,0)|0}}else d=0}else d=0;while(0);if(G)ea(G+492|0,H|0,4,0)}else d=0}else d=0;Co(L,b);Fk(L,c);lg(L,d);i=M;return}function rr(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,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,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,ca=0,fa=0,ga=0,ha=0;ha=i;i=i+64|0;if((i|0)>=(j|0))ba();M=ha;R=ha+32|0;Z=ha+24|0;$=ha+20|0;ga=da(a|0,4,0,0)|0|0;a:do if(((da(a+64|0,4,0,0)|0|0)==0?(da(ga+65>>0|0,1,0,0)|0|0)==0:0)?(fa=Ir(a,b)|0,(fa|0)!=0):0){g=da(a|0,4,0,0)|0|0;k=da(fa+68|0,4,0,0)|0|0;b:do if(k){l=da(g+20|0,4,0,0)|0|0;if((l|0)>0){g=da(g+16|0,4,0,0)|0|0;h=0;while(1){f=h+1|0;if((da(g+(h<<4)+12|0,4,0,0)|0|0)==(k|0))break b;if((f|0)<(l|0))h=f;else{h=f;break}}}else h=0}else h=-1e6;while(0);_=it(a,fa,110,c,Z)|0;X=(da(fa+12|0,4,0,0)|0|0)!=0;if((gr(a,fa)|0)==0?(jt(a,fa,da(Z|0,4,0,0)|0|0)|0)==0:0){T=a+68|0;U=da(T|0,4,0,0)|0|0;aa=U+1|0;ea(T|0,aa|0,4,0);k=b+48|0;ea(k|0,U|0,4,0);D=fa+44|0;n=da(fa+8|0,4,0,0)|0|0;c:do if(!((da(D>>0|0,1,0,0)|0)&32)){l=0;W=16}else{if(!n){p=fa+8|0;l=0;m=U;o=0;break}else l=n;while(1){if(((da(l+51>>0|0,1,0,0)|0)&3)==2){W=16;break c}l=da(l+20|0,4,0,0)|0|0;if(!l){l=0;W=16;break}}}while(0);if((W|0)==16){p=fa+8|0;if(!n){m=U;o=0}else{f=(l|0)!=0;g=aa;m=U;o=0;do{if(((da(n+51>>0|0,1,0,0)|0)&3)==2&f){ea(k|0,g|0,4,0);m=g}g=g+1|0;ea(T|0,g|0,4,0);o=o+1|0;n=da(n+20|0,4,0,0)|0|0}while((n|0)!=0)}}ca=fa+38|0;f=lh(ga,o+2+((da(ca|0,2,0,0)|0|0)+o<<2)|0,0)|0;if(f){B=da(ca|0,2,0,0)|0|0;V=f+(B<<2)|0;Y=f+(B+o<<2)|0;S=o+1|0;ew(Y|0,1,S|0)|0;ea(Y+S>>0|0,0|0,1,0);o=da(ca|0,2,0,0)|0|0;if(o<<16>>16>0)ew(f|0,-1,(o<<16>>16>1?o<<16>>16<<2:4)|0)|0;ea(R+0|0,0|0,4,0);ea(R+4|0,0|0,4,0);ea(R+8|0,0|0,4,0);ea(R+12|0,0|0,4,0);ea(R+16|0,0|0,4,0);ea(R+20|0,0|0,4,0);ea(R+24|0,0|0,4,0);ea(R+28|0,0|0,4,0);ea(R|0,a|0,4,0);ea(R+4|0,b|0,4,0);d:do if((da(c|0,4,0,0)|0|0)>0){x=c+4|0;w=fa+4|0;v=ga+16|0;y=(l|0)==0;z=fa+36|0;r=0;q=0;A=0;g=0;while(1){if(ks(R,da((da(x|0,4,0,0)|0|0)+(A*20|0)|0,4,0,0)|0|0)|0)break a;t=da(ca|0,2,0,0)|0|0;e:do if(t<<16>>16>0){o=da(w|0,4,0,0)|0|0;u=da(x|0,4,0,0)|0|0;k=da(u+(A*20|0)+4|0,4,0,0)|0|0;n=0;while(1){s=n+1|0;if(!(cd(da(o+(n*24|0)|0,4,0,0)|0|0,k)|0))break;if((s|0)<(t<<16>>16|0))n=s;else{n=s;k=g;break e}}if((n|0)!=(da(z|0,2,0,0)|0|0)){if(!y)r=((da(o+(n*24|0)+23>>0|0,1,0,0)|0)&1)==0?r:1}else{q=1;g=da(u+(A*20|0)|0,4,0,0)|0|0}ea(f+(n<<2)|0,A|0,4,0);k=g}else{n=0;k=g}while(0);if((n|0)<(t<<16>>16|0)){g=da(fa|0,4,0,0)|0|0;if((n|0)<0)o=12944;else o=da((da(w|0,4,0,0)|0|0)+(n*24|0)|0,4,0,0)|0|0}else{k=da(x|0,4,0,0)|0|0;g=da(k+(A*20|0)+4|0,4,0,0)|0|0;if(!y)break;if(!(_h(g)|0))break;g=da(fa|0,4,0,0)|0|0;o=12944;q=1;n=-1;k=da(k+(A*20|0)|0,4,0,0)|0|0}g=Rq(a,23,g,o,da((da(v|0,4,0,0)|0|0)+(h<<4)|0,4,0,0)|0|0)|0;if((g|0)==1)break a;else if((g|0)==2)ea(f+(n<<2)|0,-1|0,4,0);A=A+1|0;if((A|0)>=(da(c|0,4,0,0)|0|0)){K=k;break d}else g=k}ea(M|0,g|0,4,0);sh(a,34496,M);ea(a+17>>0|0,1|0,1,0);break a}else{r=0;q=0;K=0}while(0);Q=(r&255)+(q&255)|0;N=Q&255;v=b+64|0;ea(v|0,0|0,4,0);ea(v+4|0,0|0,4,0);Q=Q&255;v=lt(a,fa,f,Q)|0;g=da(p|0,4,0,0)|0|0;if(g){s=(v|Q|0)==0;t=a+72|0;u=0;while(1){f:do if(s?!((da(g+36|0,4,0,0)|0|0)!=0|(g|0)==(l|0)):0){k=da(g+46|0,2,0,0)|0|0;if(!(k<<16>>16))W=56;else{n=da(g+4|0,4,0,0)|0|0;o=0;while(1){if((da(f+((da(n+(o<<1)|0,2,0,0)|0)<<2)|0,4,0,0)|0|0)>-1){W=54;break f}o=o+1|0;if((o|0)>=(k&65535|0)){W=56;break}}}}else W=54;while(0);if((W|0)==54){W=0;k=(da(t|0,4,0,0)|0|0)+1|0;ea(t|0,k|0,4,0);if(!k)W=56;else n=u+1|0}if((W|0)==56){W=0;n=u+1|0;ea(Y+n>>0|0,0|0,1,0);k=0}ea(f+(u+B<<2)|0,k|0,4,0);g=da(g+20|0,4,0,0)|0|0;if(!g)break;else u=n}}O=Nq(a)|0;if(O){P=a+18|0;if(!(da(P>>0|0,1,0,0)|0)){L=O+88|0;ea(L|0,da(L|0,2,0,0)|0|4|0,2,0)}A=a+408|0;L=da(A|0,4,0,0)|0|0;L=(L|0)==0?a:L;zr(a,h);J=L+328|0;ea(J|0,da(J|0,4,0,0)|0|1<>0|0,da(L>>0|0,1,0,1)|0|1|0,1,0);if((da(D>>0|0,1,0,0)|0)&16){q=da(a+8|0,4,0,0)|0|0;r=da(a|0,4,0,0)|0|0;g=da(fa+60|0,4,0,0)|0|0;g:do if(!g)g=0;else while(1){if((da(g|0,4,0,0)|0|0)==(r|0))break g;g=da(g+24|0,4,0,0)|0|0;if(!g){g=0;break}}while(0);h=kr(a,0,st(r,27,34536)|0)|0;p=(K|0)!=0;if(p)h=kr(a,h,Lr(r,K,0,0)|0)|0;if((da(ca|0,2,0,0)|0|0)>0){k=c+4|0;m=fa+4|0;n=0;do{l=da(f+(n<<2)|0,4,0,0)|0|0;if((l|0)>-1)l=Lr(r,da((da(k|0,4,0,0)|0|0)+(l*20|0)|0,4,0,0)|0|0,0,0)|0;else l=st(r,27,da((da(m|0,4,0,0)|0|0)+(n*24|0)|0,4,0,0)|0|0)|0;h=kr(a,h,l)|0;n=n+1|0}while((n|0)<(da(ca|0,2,0,0)|0|0))}m=jr(a,h,b,d,0,0,0,0,0,0)|0;o=da(T|0,4,0,0)|0|0;ea(T|0,o+1|0,4,0);b=p&1;vh(q,57,o,(da(ca|0,2,0,0)|0|0)+(p?2:1)|0,0)|0;n=q+4|0;d=da(n|0,4,0,0)|0|0;if(d)ea(d+(((da(q+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,8|0,1,0);ea(M>>0|0,14|0,1,0);ea(M+4|0,o|0,4,0);ea(M+1>>0|0,0|0,1,0);ea(M+8|0,0|0,4,0);ea(M+12|0,0|0,4,0);hr(a,m,M)|0;d=a+72|0;l=da(d|0,4,0,0)|0|0;h=l+1|0;Y=l+2|0;ea(d|0,(da(ca|0,2,0,0)|0|0)+Y|0,4,0);d=vh(q,108,o,0,0)|0;vh(q,47,o,0,h)|0;vh(q,47,o,b,Y)|0;if((da(ca|0,2,0,0)|0|0)>0){l=l+3|0;k=0;do{Y=k;k=k+1|0;vh(q,47,o,k+b|0,l+Y|0)|0}while((k|0)<(da(ca|0,2,0,0)|0|0))}pt(a,fa);wh(q,vh(q,15,0,(da(ca|0,2,0,0)|0|0)+2|0,h)|0,g,-10);g=da(n|0,4,0,0)|0|0;if(!g)g=q+32|0;else{Y=q+32|0;ea(g+(((da(Y|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,((e|0)==10?2:e&255)|0,1,0);g=Y}Y=da(A|0,4,0,0)|0|0;ea(((Y|0)==0?a:Y)+21>>0|0,1|0,1,0);vh(q,9,o,d+1|0,0)|0;g=da(g|0,4,0,0)|0|0;if(g>>>0>d>>>0)ea((da(n|0,4,0,0)|0|0)+(d*20|0)+8|0,g|0,4,0);ea((da(q+24|0,4,0,0)|0|0)+88|0,g+-1|0,4,0);vh(q,61,o,0,0)|0;Lk(r,m,1);d=0;b=0;break}A=a+72|0;g=da(A|0,4,0,0)|0|0;z=g+1|0;J=g+2|0;ea(A|0,J|0,4,0);B=r<<24>>24!=0;C=(_|0)!=0;I=(v|0)!=0;if(B|C|I){h=(da(ca|0,2,0,0)|0|0)+J|0;ea(A|0,h|0,4,0);E=g+3|0}else{h=J;E=0}G=(Q|0)!=0;if(G|C|I){H=h+1|0;ea(A|0,H|0,4,0);h=H}else H=J;F=h+1|0;ea(A|0,(da(ca|0,2,0,0)|0|0)+h|0,4,0);if(X){L=a+492|0;M=da(L|0,4,0,0)|0|0;ea(L|0,da(fa|0,4,0,0)|0|0,4,0);kt(a,fa,d,m);L=a}else{L=0;M=0}do if(!(ks(R,d)|0)){if(!((da(D>>0|0,1,0,0)|0)&32)){vh(O,28,0,z,J)|0;r=Us(a,b,d,0,0,4,aa)|0;if(!r)break;t=r+60|0;g=da(t|0,4,0,0)|0|0;t=da(t+4|0,4,0,0)|0|0;u=da(r+38>>0|0,1,0,0)|0|0;vh(O,103,m,J,0)|0;if(!(u<<24>>24))vh(O,128,z,J,0)|0;Ws(r);w=0;v=0;s=u&255;x=0}else{u=da(l+46|0,2,0,0)|0|0;n=da(A|0,4,0,0)|0|0;r=n+1|0;v=u<<16>>16;n=v+1+n|0;ea(A|0,n|0,4,0);w=da(T|0,4,0,0)|0|0;ea(T|0,w+1|0,4,0);vh(O,28,0,r,0)|0;h=vh(O,57,w,v,0)|0;o=da(a+8|0,4,0,0)|0|0;wh(o,-1,gs(a,l)|0,-6);o=Us(a,b,d,0,0,4,aa)|0;if(!o)break;t=o+60|0;g=da(t|0,4,0,0)|0|0;t=da(t+4|0,4,0,0)|0|0;k=da(o+38>>0|0,1,0,0)|0|0;x=k&255;if(u<<16>>16>0){u=l+4|0;s=0;do{mt(O,fa,m,da((da(u|0,4,0,0)|0|0)+(s<<1)|0,2,0,0)|0|0,s+r|0);s=s+1|0}while((s|0)!=(v|0))}if(!(k<<24>>24)){u=nt(O,l)|0;wh(O,vh(O,49,r,v,n)|0,u,v);vh(O,110,w,n,0)|0;u=0;r=n}else{yh(O,h);u=v}Ws(o);v=u;s=x;x=r}D=ga+24|0;do if(!((da(D|0,4,0,0)|0)&128))o=0;else{if(da(a+412|0,4,0,0)|0){o=0;break}o=(da(A|0,4,0,0)|0|0)+1|0;ea(A|0,o|0,4,0);vh(O,25,0,o,0)|0}while(0);n=ws(O)|0;if(!X){h:do if((e|0)==5)ew(Y|0,1,S|0)|0;else{u=da(p|0,4,0,0)|0|0;if(!u)break;while(1){if((da(u+50>>0|0,1,0,0)|0|0)==5)break;u=da(u+20|0,4,0,0)|0|0;if(!u)break h}ew(Y|0,1,S|0)|0}while(0);do if(s){if((g|0)>-1)ea(Y+(g-U)>>0|0,0|0,1,0);if((t|0)<=-1)break;ea(Y+(t-U)>>0|0,0|0,1,0)}while(0);ot(a,fa,55,U,Y,0,0)|0}A=(s|0)!=0;do if(!A)if(!l){z=vh(O,129,z,n,J)|0;vh(O,70,m,z,J)|0;y=0;break}else{z=ws(O)|0;vh(O,108,w,n,0)|0;y=vh(O,101,w,x,0)|0;wh(O,vh(O,68,m,z,x)|0,0,-14);break}else{if(!((da(Y+(m-U)>>0|0,1,0,0)|0|0)==0|X))wh(O,vh(O,68,m,n,x)|0,v,-14);vh(O,76,(l|0)!=0?x:J,n,0)|0;y=0;z=n}while(0);q=q<<24>>24==0;if(!q){Qq(a,K,H);vh(O,38,H,0,0)|0}do if(B|I|C){if(I)r=tt(a,fa)|0;else r=0;u=ut(a,_,c,0,3,fa,e)|0|r;if((da(ca|0,2,0,0)|0|0)>0){t=(u|0)==-1;s=fa+4|0;r=0;do{do if(t)W=138;else{if((r|0)<32?(1<>0|0,1,0,0)|0)&1){W=138;break}vh(O,28,0,r+E|0,0)|0}while(0);if((W|0)==138){W=0;mt(O,fa,m,r,r+E|0)}r=r+1|0}while((r|0)<(da(ca|0,2,0,0)|0|0))}if(!(q&(l|0)==0))break;vh(O,33,J,H,0)|0}while(0);r=ut(a,_,c,1,1,fa,e)|0;if((da(ca|0,2,0,0)|0|0)>0){q=fa+36|0;g=c+4|0;k=0;do{i:do if((k|0)==(da(q|0,2,0,0)|0|0))vh(O,28,0,k+F|0,0)|0;else{h=da(f+(k<<2)|0,4,0,0)|0|0;if((h|0)>-1){Qq(a,da((da(g|0,4,0,0)|0|0)+(h*20|0)|0,4,0,0)|0|0,k+F|0);break}do if(!(((da(Z|0,4,0,0)|0)&1|0)==0|(k|0)>31)){if(1<>16<=0)break;q=fa+36|0;r=0;do{do if((da(f+(r<<2)|0,4,0,0)|0|0)<0){if((r|0)==(da(q|0,2,0,0)|0|0))break;mt(O,fa,m,r,r+F|0);g=da(ca|0,2,0,0)|0|0}while(0);r=r+1|0}while((r|0)<(g<<16>>16|0))}while(0);do if(!X){ea($|0,0|0,4,0);xt(a,fa,V,m,aa,H,J,N,e&255,z,$);if(I)yt(a,fa,J,0,f,Q);g=(da($|0,4,0,0)|0|Q|0)==0;do if(!g)if(!l){h=vh(O,70,m,0,J)|0;break}else{h=vh(O,68,m,0,x)|0;wh(O,h,v,-14);break}else h=0;while(0);zt(a,fa,m,aa,V);if(I|(G|(l|0)!=0))vh(O,95,m,0,0)|0;if(!g){g=da(O+32|0,4,0,0)|0|0;if(g>>>0>h>>>0)ea((da(O+4|0,4,0,0)|0|0)+(h*20|0)+8|0,g|0,4,0);ea((da(O+24|0,4,0,0)|0|0)+88|0,g+-1|0,4,0)}if(I){yt(a,fa,0,H,f,Q);At(a,fa,m,aa,H,V,1,0,0);Bt(a,fa,c,J,f,Q);break}else{At(a,fa,m,aa,H,V,1,0,0);break}}while(0);do if((da(D|0,4,0,0)|0)&128){if(da(a+412|0,4,0,0)|0)break;vh(O,37,o,1,0)|0}while(0);wt(a,_,110,c,2,fa,J,e,z);do if(!A){if(!l){vh(O,16,0,z,0)|0;break}k=da(O+24|0,4,0,0)|0|0;h=~z;do if((z|0)<0){l=da(k+112|0,4,0,0)|0|0;if(!l)break;ea(l+(h<<2)|0,da(O+32|0,4,0,0)|0|0,4,0)}while(0);ea(k+88|0,(da(O+32|0,4,0,0)|0|0)+-1|0,4,0);vh(O,9,w,y,0)|0}while(0);k=da(O+24|0,4,0,0)|0|0;h=~n;do if((n|0)<0){l=da(k+112|0,4,0,0)|0|0;if(!l)break;ea(l+(h<<2)|0,da(O+32|0,4,0,0)|0|0,4,0)}while(0);ea(k+88|0,(da(O+32|0,4,0,0)|0|0)+-1|0,4,0);h=da(p|0,4,0,0)|0|0;if(h){k=0;do{l=k;k=k+1|0;if(da(Y+k>>0|0,1,0,0)|0)vh(O,61,l+aa|0,0,0)|0;h=da(h+20|0,4,0,0)|0|0}while((h|0)!=0)}if((m|0)<(aa|0))vh(O,61,m,0,0)|0;do if(!(da(P>>0|0,1,0,0)|0)){if(da(a+412|0,4,0,0)|0)break;rt(a)}while(0);if(!((da(D|0,4,0,0)|0)&128))break;if(da(a+412|0,4,0,0)|0)break;if(da(P>>0|0,1,0,0)|0)break;vh(O,35,o,1,0)|0;hq(O,1);if(da((da(O|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break;Wg(da(O+16|0,4,0,0)|0|0,34520,-1,1,0)|0}while(0);if(L)ea(L+492|0,M|0,4,0)}}}else f=0}else f=0;while(0);lg(ga,f);Co(ga,b);Mk(ga,c);Fk(ga,d);i=ha;return}function sr(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,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,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,ca=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=i;i=i+96|0;if((i|0)>=(j|0))ba();X=ja;ca=ja+92|0;ga=ja+88|0;E=ja+68|0;R=ja+64|0;H=ja+32|0;W=ja+28|0;ea(ca|0,0|0,4,0);ea(ga|0,0|0,4,0);ia=da(a|0,4,0,0)|0|0;ea(E+0|0,0|0,4,0);ea(E+4|0,0|0,4,0);ea(E+8|0,0|0,4,0);ea(E+12|0,0|0,4,0);ea(E+16|0,0|0,4,0);a:do if((da(a+64|0,4,0,0)|0|0)==0?(G=ia+65|0,(da(G>>0|0,1,0,0)|0|0)==0):0){if(c)if(((da(c+6|0,2,0,0)|0)&128)!=0?(da(c+52|0,4,0,0)|0|0)==0:0){f=da(c|0,4,0,0)|0|0;ea(c|0,0|0,4,0);Lk(ia,c,1);c=0}else f=0;else{c=0;f=0}if((da(b+16|0,4,0,0)|0|0)!=0?(fa=Ir(a,b)|0,(fa|0)!=0):0){n=da(fa+68|0,4,0,0)|0|0;b:do if(n){m=da(ia+20|0,4,0,0)|0|0;if((m|0)>0){l=da(ia+16|0,4,0,0)|0|0;h=0;while(1){k=h+1|0;if((da(l+(h<<4)+12|0,4,0,0)|0|0)==(n|0)){k=h;break b}if((k|0)<(m|0))h=k;else break}}else k=0}else k=-1e6;while(0);if((((Rq(a,18,da(fa|0,4,0,0)|0|0,0,da((da(ia+16|0,4,0,0)|0|0)+(k<<4)|0,4,0,0)|0|0)|0)==0?(_=fa+44|0,S=(da(_>>0|0,1,0,1)|0|0)>>>5&1,Z=it(a,fa,108,0,R)|0,$=(da(fa+12|0,4,0,0)|0|0)!=0,(gr(a,fa)|0)==0):0)?(jt(a,fa,da(R|0,4,0,0)|0|0)|0)==0:0)?(ha=Nq(a)|0,(ha|0)!=0):0){aa=a+18|0;if(!(da(aa>>0|0,1,0,0)|0)){Y=ha+88|0;ea(Y|0,da(Y|0,2,0,0)|0|4|0,2,0)}Y=(c|0)!=0;V=a+408|0;U=da(V|0,4,0,0)|0|0;U=(U|0)==0?a:U;zr(a,k);Q=U+328|0;ea(Q|0,da(Q|0,4,0,0)|0|1<>0|0,da(U>>0|0,1,0,1)|0|(Y|(Z|0)!=0)&1|0,1,0);U=(d|0)==0;c:do if((((!((c|0)==0|U^1)?(da(a+532|0,4,0,0)|0|0)==0:0)?(da(c+68|0,4,0,0)|0|0)==0:0)?(zs(a,fa)|0)==0:0)?((da(_>>0|0,1,0,0)|0)&16)==0:0){if((e|0)==10){if((da(fa+36|0,2,0,0)|0|0)>-1)n=da(fa+45>>0|0,1,0,1)|0|0;else n=10;r=(n|0)==10?2:n}else r=e;m=da(c+32|0,4,0,0)|0|0;if((da(m|0,4,0,0)|0|0)==1){if(da(m+28|0,4,0,0)|0){T=117;break}if(da(c+36|0,4,0,0)|0){T=117;break}if(da(c+48|0,4,0,0)|0){T=117;break}if(da(c+40|0,4,0,0)|0){T=117;break}if(da(c+60|0,4,0,0)|0){T=117;break}if(da(c+52|0,4,0,0)|0){T=117;break}if((da(c+6|0,2,0,0)|0)&1){T=117;break}n=da(c|0,4,0,0)|0|0;if((da(n|0,4,0,0)|0|0)!=1){T=117;break}if((da((da(da(n+4|0,4,0,0)|0|0,4,0,0)|0)>>0|0,1,0,0)|0|0)!=116){T=117;break}q=Tr(a,0,m+8|0)|0;if((q|0)==0|(q|0)==(fa|0)){T=117;break}u=q+44|0;n=da(u>>0|0,1,0,1)|0|0;if(!((n&16|0)==0?(((da(_>>0|0,1,0,1)|0|0)>>>5&1^1)&255|0)==(n>>>5&1^1|0):0)){T=117;break}if(da(q+12|0,4,0,0)|0){T=117;break}o=da(fa+38|0,2,0,0)|0|0;if(o<<16>>16!=(da(q+38|0,2,0,0)|0|0)){T=117;break}t=fa+36|0;if((da(t|0,2,0,0)|0|0)!=(da(q+36|0,2,0,0)|0|0)){T=117;break}if(o<<16>>16>0){h=da(fa+4|0,4,0,0)|0|0;g=da(q+4|0,4,0,0)|0|0;p=0;do{if((da(h+(p*24|0)+21>>0|0,1,0,0)|0|0)!=(da(g+(p*24|0)+21>>0|0,1,0,0)|0|0)){T=117;break c}n=da(h+(p*24|0)+16|0,4,0,0)|0|0;m=da(g+(p*24|0)+16|0,4,0,0)|0|0;l=(m|0)==0;if(!n){if(!l){T=117;break c}}else{if(l){T=117;break c}if(cd(n,m)|0){T=117;break c}}if((da(h+(p*24|0)+20>>0|0,1,0,0)|0|0)!=0?(da(g+(p*24|0)+20>>0|0,1,0,0)|0|0)==0:0){T=117;break c}do if((p|0)>0){n=da(h+(p*24|0)+8|0,4,0,0)|0|0;m=(n|0)==0;l=da(g+(p*24|0)+8|0,4,0,0)|0|0;if(m^(l|0)==0){T=117;break c}if(m)break;if(Zv(n,l)|0){T=117;break c}}while(0);p=p+1|0}while((p|0)<(o<<16>>16|0))}x=fa+8|0;n=da(x|0,4,0,0)|0|0;if(!n)m=0;else{o=da(q+8|0,4,0,0)|0|0;if(!o){T=117;break}else m=0;do{m=(da(n+50>>0|0,1,0,0)|0|0)==0?m:1;l=o;while(1){if(Ct(n,l)|0)break;l=da(l+20|0,4,0,0)|0|0;if(!l){T=117;break c}}if(!l){T=117;break c}n=da(n+20|0,4,0,0)|0|0}while((n|0)!=0)}n=da(fa+24|0,4,0,0)|0|0;if((n|0)!=0?(Ss(da(q+24|0,4,0,0)|0|0,n,-1)|0)!=0:0){T=117;break}l=da(a|0,4,0,0)|0|0;n=da(l+24|0,4,0,0)|0|0;if(!(n&524288)){if(n&128){T=117;break}}else if(!((da(fa+16|0,4,0,0)|0|0)==0&(n&128|0)==0)){T=117;break}g=da(q+68|0,4,0,0)|0|0;d:do if(!g)l=-1e6;else{o=da(l+20|0,4,0,0)|0|0;if((o|0)<=0){l=0;break}n=da(l+16|0,4,0,0)|0|0;h=0;while(1){l=h+1|0;if((da(n+(h<<4)+12|0,4,0,0)|0|0)==(g|0)){l=h;break d}if((l|0)<(o|0))h=l;else break}}while(0);w=Nq(a)|0;zr(a,l);s=a+68|0;y=da(s|0,4,0,0)|0|0;v=y+1|0;ea(s|0,y+2|0,4,0);s=Dt(a,k,fa)|0;o=a+19|0;h=da(o>>0|0,1,0,0)|0|0;do if(!(h<<24>>24)){T=a+72|0;n=(da(T|0,4,0,0)|0|0)+1|0;ea(T|0,n|0,4,0);T=78}else{Q=h+-1<<24>>24;ea(o>>0|0,Q|0,1,0);n=da(a+((Q&255)<<2)+24|0,4,0,0)|0|0;if(!(Q<<24>>24)){T=78;break}z=h+-2<<24>>24;ea(o>>0|0,z|0,1,0);A=n;z=da(a+((z&255)<<2)+24|0,4,0,0)|0|0}while(0);if((T|0)==78){A=a+72|0;z=(da(A|0,4,0,0)|0|0)+1|0;ea(A|0,z|0,4,0);A=n}Pq(a,v,k,fa,55);if((da(t|0,2,0,0)|0|0)<0)if((da(x|0,4,0,0)|0|0)!=0|(m|0)!=0|(r+-1|0)>>>0>1)T=83;else B=0;else if((m|0)!=0|(r+-1|0)>>>0>1)T=83;else B=0;if((T|0)==83){p=vh(w,108,v,0,0)|0;o=vh(w,16,0,0,0)|0;n=da(w+32|0,4,0,0)|0|0;if(n>>>0>p>>>0)ea((da(w+4|0,4,0,0)|0|0)+(p*20|0)+8|0,n|0,4,0);ea((da(w+24|0,4,0,0)|0|0)+88|0,n+-1|0,4,0);B=o}if(!((da(u>>0|0,1,0,0)|0)&32)){Pq(a,y,l,q,54);m=vh(w,108,y,0,0)|0;do if((da(t|0,2,0,0)|0|0)<=-1)if(!(da(x|0,4,0,0)|0)){n=vh(w,74,v,z,0)|0;break}else{n=vh(w,103,y,z,0)|0;break}else{n=vh(w,103,y,z,0)|0;p=vh(w,70,v,0,z)|0;Et(a,r,fa);o=da(w+32|0,4,0,0)|0|0;if(o>>>0>p>>>0)ea((da(w+4|0,4,0,0)|0|0)+(p*20|0)+8|0,o|0,4,0);ea((da(w+24|0,4,0,0)|0|0)+88|0,o+-1|0,4,0);if((s|0)<=0)break;vh(da(a+8|0,4,0,0)|0|0,136,s,z,0)|0}while(0);vh(w,102,y,A,0)|0;vh(w,75,v,A,z)|0;o=da(w+4|0,4,0,0)|0|0;if(o)ea(o+(((da(w+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,11|0,1,0);wh(w,-1,da(fa|0,4,0,0)|0|0,0);vh(w,9,y,n,0)|0;vh(w,61,y,0,0)|0;vh(w,61,v,0,0)|0}else{fs(a,k,da(fa+32|0,4,0,0)|0|0,1,da(fa|0,4,0,0)|0|0);fs(a,l,da(q+32|0,4,0,0)|0|0,0,da(q|0,4,0,0)|0|0);m=0}p=da(x|0,4,0,0)|0|0;if(p){h=q+8|0;g=a+8|0;q=w+4|0;r=w+32|0;s=w+24|0;n=p;do{p=h;while(1){p=da(p|0,4,0,0)|0|0;if(Ct(n,p)|0)break;p=p+20|0}vh(w,54,y,da(p+40|0,4,0,0)|0|0,l)|0;Q=da(g|0,4,0,0)|0|0;wh(Q,-1,gs(a,p)|0,-6);vh(w,55,v,da(n+40|0,4,0,0)|0|0,k)|0;p=da(g|0,4,0,0)|0|0;wh(p,-1,gs(a,n)|0,-6);p=da(q|0,4,0,0)|0|0;if(p)ea(p+(((da(r|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,1|0,1,0);p=vh(w,108,y,0,0)|0;vh(w,101,y,A,0)|0;vh(w,110,v,A,1)|0;vh(w,9,y,p+1|0,0)|0;o=da(r|0,4,0,0)|0|0;if(o>>>0>p>>>0)ea((da(q|0,4,0,0)|0|0)+(p*20|0)+8|0,o|0,4,0);ea((da(s|0,4,0,0)|0|0)+88|0,o+-1|0,4,0);vh(w,61,y,0,0)|0;vh(w,61,v,0,0)|0;n=da(n+20|0,4,0,0)|0|0}while((n|0)!=0)}if(m){n=da(w+32|0,4,0,0)|0|0;if(n>>>0>m>>>0)ea((da(w+4|0,4,0,0)|0|0)+(m*20|0)+8|0,n|0,4,0);ea((da(w+24|0,4,0,0)|0|0)+88|0,n+-1|0,4,0)}Zr(a,z);Zr(a,A);if(!B){g=0;h=0;break}vh(w,24,0,0,0)|0;n=da(w+32|0,4,0,0)|0|0;if(n>>>0>B>>>0)ea((da(w+4|0,4,0,0)|0|0)+(B*20|0)+8|0,n|0,4,0);ea((da(w+24|0,4,0,0)|0|0)+88|0,n+-1|0,4,0);vh(w,61,v,0,0)|0;T=117}else T=117}else T=117;while(0);do if((T|0)==117){L=Dt(a,k,fa)|0;K=a+72|0;m=da(K|0,4,0,0)|0|0;P=m+1|0;Q=fa+38|0;B=da(Q|0,2,0,0)|0|0;A=B<<16>>16;n=P+A|0;ea(K|0,n|0,4,0);if(!((da(_>>0|0,1,0,0)|0)&16))O=P;else{n=n+1|0;ea(K|0,n|0,4,0);O=m+2|0}M=O+1|0;N=(d|0)!=0;e:do if(N?(I=da(d+4|0,4,0,0)|0|0,J=(I|0)>0,J):0){o=da(d|0,4,0,0)|0|0;m=0;do{ea(o+(m<<3)+4|0,-1|0,4,0);m=m+1|0}while((m|0)<(I|0));if(J){w=S<<24>>24!=0;v=fa+4|0;u=fa+36|0;m=1;t=0;o=-1;while(1){f:do if(B<<16>>16>0){s=da(d|0,4,0,0)|0|0;l=da(s+(t<<3)|0,4,0,0)|0|0;h=da(v|0,4,0,0)|0|0;p=0;while(1){r=p+1|0;if(!(cd(l,da(h+(p*24|0)|0,4,0,0)|0|0)|0))break;if((r|0)<(A|0))p=r;else{p=r;break f}}ea(s+(t<<3)+4|0,p|0,4,0);m=(t|0)==(p|0)?m:0;o=(p|0)==(da(u|0,2,0,0)|0|0)?t:o}else p=0;while(0);if((p|0)>=(A|0)){g=da((da(d|0,4,0,0)|0|0)+(t<<3)|0,4,0,0)|0|0;if((_h(g)|0)==0|w)break;else{m=0;p=t}}else p=o;t=t+1|0;if((t|0)>=(I|0)){x=p;break e}else o=p}ea(X|0,b|0,4,0);ea(X+4|0,0|0,4,0);ea(X+8|0,g|0,4,0);sh(a,33368,X);ea(a+17>>0|0,1|0,1,0);g=0;break a}else{m=1;x=-1}}else{m=1;x=-1}while(0);g:do if(!Y){ea(H+0|0,0|0,4,0);ea(H+4|0,0|0,4,0);ea(H+8|0,0|0,4,0);ea(H+12|0,0|0,4,0);ea(H+16|0,0|0,4,0);ea(H+20|0,0|0,4,0);ea(H+24|0,0|0,4,0);ea(H+28|0,0|0,4,0);ea(H|0,a|0,4,0);if(f){l=da(f|0,4,0,0)|0|0;if((l|0)>0){n=f+4|0;m=0;while(1){if(ks(H,da((da(n|0,4,0,0)|0|0)+(m*20|0)|0,4,0,0)|0|0)|0){c=0;g=0;break a}m=m+1|0;if((m|0)>=(l|0)){n=0;m=-1;k=0;T=169;break}}}else{I=x;H=0;J=-1;s=0}}else{I=x;l=0;H=0;J=-1;s=0}}else{n=n+1|0;ea(K|0,n|0,4,0);z=ha+32|0;o=da(z|0,4,0,0)|0|0;vh(ha,20,n,0,o+1|0)|0;ea(E>>0|0,13|0,1,0);A=E+4|0;ea(A|0,n|0,4,0);ea(E+1>>0|0,0|0,1,0);y=E+8|0;ea(y|0,(m<<24>>24!=0?M:0)|0,4,0);ea(E+12|0,da(Q|0,2,0,0)|0|0,4,0);J=hr(a,c,E)|0;y=da(y|0,4,0,0)|0|0;if(J){g=0;break a}if(da(G>>0|0,1,0,0)|0){g=0;break a}vh(ha,21,n,0,0)|0;n=da(z|0,4,0,0)|0|0;if(n>>>0>o>>>0)ea((da(ha+4|0,4,0,0)|0|0)+(o*20|0)+8|0,n|0,4,0);B=ha+24|0;ea((da(B|0,4,0,0)|0|0)+88|0,n+-1|0,4,0);l=da(da(c|0,4,0,0)|0|0,4,0,0)|0|0;h:do if(!Z){p=Nq(a)|0;m=da(p+32|0,4,0,0)|0|0;i:do if(!((da(_>>0|0,1,0,0)|0)&16))o=0;else{n=da(a|0,4,0,0)|0|0;o=da(fa+60|0,4,0,0)|0|0;if(!o){o=0;break}while(1){if((da(o|0,4,0,0)|0|0)==(n|0))break i;o=da(o+24|0,4,0,0)|0|0;if(!o){o=0;break}}}while(0);if((m|0)<=1){n=y;m=0;k=0;T=169;break g}h=(da((da(p|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0;s=p+4|0;r=fa+32|0;q=fa+8|0;g=1;while(1){if(h)p=(da(s|0,4,0,0)|0|0)+(g*20|0)|0;else p=29120;n=da(p>>0|0,1,0,0)|0|0;do if(n<<24>>24==54){if((da(p+12|0,4,0,0)|0|0)!=(k|0))break;n=da(p+8|0,4,0,0)|0|0;if((n|0)==(da(r|0,4,0,0)|0|0))break h;p=da(q|0,4,0,0)|0|0;if(!p)break;do{if((n|0)==(da(p+40|0,4,0,0)|0|0))break h;p=da(p+20|0,4,0,0)|0|0}while((p|0)!=0)}else if(n<<24>>24==-107?(da(p+16|0,4,0,0)|0|0)==(o|0):0)break h;while(0);g=g+1|0;if((g|0)>=(m|0)){n=y;m=0;k=0;T=169;break g}}}while(0);o=a+68|0;p=da(o|0,4,0,0)|0|0;ea(o|0,p+1|0,4,0);o=a+19|0;m=da(o>>0|0,1,0,0)|0|0;do if(!(m<<24>>24)){n=(da(K|0,4,0,0)|0|0)+1|0;ea(K|0,n|0,4,0);T=159}else{J=m+-1<<24>>24;ea(o>>0|0,J|0,1,0);n=da(a+((J&255)<<2)+24|0,4,0,0)|0|0;if(!(J<<24>>24)){T=159;break}J=m+-2<<24>>24;ea(o>>0|0,J|0,1,0);o=da(a+((J&255)<<2)+24|0,4,0,0)|0|0}while(0);if((T|0)==159){o=(da(K|0,4,0,0)|0|0)+1|0;ea(K|0,o|0,4,0)}vh(ha,57,p,l,0)|0;k=vh(ha,22,da(A|0,4,0,0)|0|0,0,0)|0;vh(ha,49,y,l,n)|0;vh(ha,74,p,o,0)|0;vh(ha,75,p,n,o)|0;vh(ha,16,0,k,0)|0;m=da(z|0,4,0,0)|0|0;if(m>>>0>k>>>0)ea((da(ha+4|0,4,0,0)|0|0)+(k*20|0)+8|0,m|0,4,0);ea((da(B|0,4,0,0)|0|0)+88|0,m+-1|0,4,0);Zr(a,n);Zr(a,o);n=y;m=p;k=1;T=169}while(0);if((T|0)==169)if(U&(l|0)>0){I=da(fa+36|0,2,0,0)|0|0;H=n;J=m;s=k}else{I=x;H=n;J=m;s=k}if(((da(_>>0|0,1,0,0)|0)&16)!=0?(F=da(Q|0,2,0,0)|0|0,F<<16>>16>0):0){o=da(fa+4|0,4,0,0)|0|0;m=F<<16>>16;k=0;n=0;do{n=((da(o+(k*24|0)+23>>0|0,1,0,1)|0|0)>>>1&1)+n|0;k=k+1|0}while((k|0)<(m|0))}else n=0;do if(U&(l|0)!=0){n=(da(Q|0,2,0,0)|0|0)-n|0;if((l|0)==(n|0))break;ea(X|0,b|0,4,0);ea(X+4|0,0|0,4,0);ea(X+8|0,n|0,4,0);ea(X+12|0,l|0,4,0);sh(a,33400,X);g=0;break a}while(0);do if(N){n=da(d+4|0,4,0,0)|0|0;if((l|0)==(n|0))break;ea(X|0,l|0,4,0);ea(X+4|0,n|0,4,0);sh(a,33456,X);g=0;break a}while(0);D=ia+24|0;if(!((da(D|0,4,0,0)|0)&128))h=0;else{h=(da(K|0,4,0,0)|0|0)+1|0;ea(K|0,h|0,4,0);vh(ha,25,0,h,0)|0}do if($)g=0;else{n=ot(a,fa,55,-1,0,ca,ga)|0;g=lh(ia,(n<<2)+4|0,0)|0;if(!g)break a;if((n|0)>0)m=0;else break;do{G=(da(K|0,4,0,0)|0|0)+1|0;ea(K|0,G|0,4,0);ea(g+(m<<2)|0,G|0,4,0);m=m+1|0}while((m|0)!=(n|0))}while(0);F=s<<24>>24!=0;do if(F){G=vh(ha,108,J,0,0)|0;E=da(ha+32|0,4,0,0)|0|0}else{if(!Y){E=0;G=0;break}G=vh(ha,22,da(E+4|0,4,0,0)|0|0,0,0)|0;E=G}while(0);C=ws(ha)|0;do if((da(R|0,4,0,0)|0)&1){p=(da(Q|0,2,0,0)|0|0)+1|0;A=a+60|0;o=da(A|0,4,0,0)|0|0;z=a+56|0;n=da(z|0,4,0,0)|0|0;if((n|0)<(p|0)){B=da(K|0,4,0,0)|0|0;ea(K|0,B+p|0,4,0);B=B+1|0}else{ea(A|0,p+o|0,4,0);ea(z|0,n-p|0,4,0);B=o}if((I|0)<0)vh(ha,25,-1,B,0)|0;else{if(F)vh(ha,47,J,I,B)|0;else Qq(a,da((da(f+4|0,4,0,0)|0|0)+(I*20|0)|0,4,0,0)|0|0,B);p=vh(ha,77,B,0,0)|0;vh(ha,25,-1,B,0)|0;o=da(ha+32|0,4,0,0)|0|0;if(o>>>0>p>>>0)ea((da(ha+4|0,4,0,0)|0|0)+(p*20|0)+8|0,o|0,4,0);ea((da(ha+24|0,4,0,0)|0|0)+88|0,o+-1|0,4,0);vh(ha,38,B,0,0)|0}o=da(Q|0,2,0,0)|0|0;if(o<<16>>16>0){w=F|(f|0)!=0;m=d+4|0;n=B+1|0;p=f+4|0;t=a+8|0;u=fa+4|0;v=0;do{j:do if(U)s=v;else{r=da(m|0,4,0,0)|0|0;if((r|0)<=0){s=0;break}q=da(d|0,4,0,0)|0|0;k=0;while(1){s=k+1|0;if((da(q+(k<<3)+4|0,4,0,0)|0|0)==(v|0)){s=k;break j}if((s|0)<(r|0))k=s;else break}}while(0);do if(w){if(N?(s|0)>=(da(m|0,4,0,0)|0|0):0){T=213;break}if(F){vh(ha,47,J,s,n+v|0)|0;break}else{R=da((da(p|0,4,0,0)|0|0)+(s*20|0)|0,4,0,0)|0|0;k=n+v|0;q=da(t|0,4,0,0)|0|0;Qq(a,R,k);o=(da(K|0,4,0,0)|0|0)+1|0;ea(K|0,o|0,4,0);vh(q,33,k,o,0)|0;ea(R+38>>0|0,da(R>>0|0,1,0,0)|0|0|0,1,0);ea(R>>0|0,-97|0,1,0);ea(R+28|0,o|0,4,0);R=R+4|0;ea(R|0,(da(R|0,4,0,0)|0)&-4097|0,4,0);break}}else T=213;while(0);if((T|0)==213){T=0;Qq(a,da((da(u|0,4,0,0)|0|0)+(v*24|0)+4|0,4,0,0)|0|0,n+v|0)}v=v+1|0;o=da(Q|0,2,0,0)|0|0}while((v|0)<(o<<16>>16|0))}if(!$){vt(ha,fa,B+1|0);o=da(Q|0,2,0,0)|0|0}wt(a,Z,108,0,1,fa,B+-1-(o<<16>>16)|0,e,C);o=(da(Q|0,2,0,0)|0|0)+1|0;ct(a,B,o);if((da(z|0,4,0,0)|0|0)>=(o|0))break;ea(z|0,o|0,4,0);ea(A|0,B|0,4,0)}while(0);do if(!$){if((da(_>>0|0,1,0,0)|0)&16)vh(ha,28,0,P,0)|0;k:do if((I|0)<=-1)if(!(((da(_>>0|0,1,0,0)|0)&16|S)<<24>>24)){vh(ha,74,da(ca|0,4,0,0)|0|0,O,L)|0;B=1;break}else{vh(ha,28,0,O,0)|0;B=0;break}else{do if(F)vh(ha,47,J,I,O)|0;else{if(Y){vh(ha,33,I+H|0,O,0)|0;break}Qq(a,da((da(f+4|0,4,0,0)|0|0)+(I*20|0)|0,4,0,0)|0|0,O);if(!(da((da(ha|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)){n=(da(ha+4|0,4,0,0)|0|0)+(((da(ha+32|0,4,0,0)|0|0)+-1|0)*20|0)|0;if(!n)break}else n=29120;if((da(n>>0|0,1,0,0)|0|0)!=28)break;if((da(_>>0|0,1,0,0)|0)&16)break;ea(n>>0|0,74|0,1,0);ea(n+4|0,da(ca|0,4,0,0)|0|0,4,0);ea(n+8|0,O|0,4,0);ea(n+12|0,L|0,4,0);B=1;break k}while(0);if(!((da(_>>0|0,1,0,0)|0)&16)){n=vh(ha,77,O,0,0)|0;vh(ha,74,da(ca|0,4,0,0)|0|0,O,L)|0;m=da(ha+32|0,4,0,0)|0|0;if(m>>>0>n>>>0)ea((da(ha+4|0,4,0,0)|0|0)+(n*20|0)+8|0,m|0,4,0);ea((da(ha+24|0,4,0,0)|0|0)+88|0,m+-1|0,4,0)}else vh(ha,76,O,(da(ha+32|0,4,0,0)|0|0)+2|0,0)|0;vh(ha,38,O,0,0)|0;B=0}while(0);if((L|0)>0)vh(da(a+8|0,4,0,0)|0|0,136,L,O,0)|0;if((da(Q|0,2,0,0)|0|0)>0){z=fa+36|0;A=fa+4|0;v=(l|0)==0;u=d+4|0;t=(H|0)==(M|0);l=f+4|0;m=a+23|0;n=X+20|0;o=X+4|0;x=X+24|0;y=0;p=0;do{w=y+M|0;l:do if((y|0)==(da(z|0,2,0,0)|0|0))vh(ha,29,w,0,0)|0;else{m:do if(U)if(!((da((da(A|0,4,0,0)|0|0)+(y*24|0)+23>>0|0,1,0,0)|0)&2)){s=y-p|0;T=258;break}else{p=p+1|0;break}else{r=da(u|0,4,0,0)|0|0;if((r|0)<=0){s=0;T=258;break}q=da(d|0,4,0,0)|0|0;k=0;while(1){s=k+1|0;if((da(q+(k<<3)+4|0,4,0,0)|0|0)==(y|0)){s=k;T=258;break m}if((s|0)<(r|0))k=s;else{T=258;break}}}while(0);do if((T|0)==258){T=0;if((s|0)<0|v)break;if(N?(s|0)>=(da(u|0,4,0,0)|0|0):0)break;if(F){vh(ha,47,J,s,w)|0;break l}if(!Y){Qq(a,da((da(l|0,4,0,0)|0|0)+(s*20|0)|0,4,0,0)|0|0,w);break l}if(t)break l;vh(ha,34,s+H|0,w,0)|0;break l}while(0);s=da((da(A|0,4,0,0)|0|0)+(y*24|0)+4|0,4,0,0)|0|0;do if(da(m>>0|0,1,0,0)|0){ea(X+0|0,0|0,4,0);ea(X+4|0,0|0,4,0);ea(X+8|0,0|0,4,0);ea(X+12|0,0|0,4,0);ea(X+16|0,0|0,4,0);ea(X+20|0,0|0,4,0);ea(n>>0|0,1|0,1,0);ea(X|0,78|0,4,0);ea(o|0,79|0,4,0);ea(x|0,0|0,4,0);qs(X,s)|0;if(!(da(n>>0|0,1,0,0)|0))break;Ft(a,s,w,0);break l}while(0);Qq(a,s,w)}while(0);y=y+1|0}while((y|0)<(da(Q|0,2,0,0)|0|0))}if(!((da(_>>0|0,1,0,0)|0)&16)){xt(a,fa,g,da(ca|0,4,0,0)|0|0,da(ga|0,4,0,0)|0|0,P,0,I>>>31&255^1,e&255,C,W);yt(a,fa,0,P,0,0);At(a,fa,da(ca|0,4,0,0)|0|0,da(ga|0,4,0,0)|0|0,P,g,0,B,(da(W|0,4,0,0)|0|0)==0&1);break}n=da(fa+60|0,4,0,0)|0|0;n:do if(!n)n=0;else while(1){if((da(n|0,4,0,0)|0|0)==(ia|0))break n;n=da(n+24|0,4,0,0)|0|0;if(!n){n=0;break}}while(0);pt(a,fa);wh(ha,vh(ha,15,1,(da(Q|0,2,0,0)|0|0)+2|0,P)|0,n,-10);m=da(ha+4|0,4,0,0)|0|0;if(m)ea(m+(((da(ha+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,((e|0)==10?2:e&255)|0,1,0);X=da(V|0,4,0,0)|0|0;ea(((X|0)==0?a:X)+21>>0|0,1|0,1,0)}while(0);if((da(D|0,4,0,0)|0)&128)vh(ha,37,h,1,0)|0;if(Z)wt(a,Z,108,0,2,fa,O+-1-(da(Q|0,2,0,0)|0|0)|0,e,C);n=ha+24|0;m=da(n|0,4,0,0)|0|0;k=~C;do if((C|0)<0){l=da(m+112|0,4,0,0)|0|0;if(!l)break;ea(l+(k<<2)|0,da(ha+32|0,4,0,0)|0|0,4,0)}while(0);l=ha+32|0;ea(m+88|0,(da(l|0,4,0,0)|0|0)+-1|0,4,0);do if(F){vh(ha,9,J,E,0)|0;l=da(l|0,4,0,0)|0|0;if(l>>>0>G>>>0)ea((da(ha+4|0,4,0,0)|0|0)+(G*20|0)+8|0,l|0,4,0);ea((da(n|0,4,0,0)|0|0)+88|0,l+-1|0,4,0);vh(ha,61,J,0,0)|0}else{if(!Y)break;vh(ha,16,0,E,0)|0;l=da(l|0,4,0,0)|0|0;if(l>>>0>G>>>0)ea((da(ha+4|0,4,0,0)|0|0)+(G*20|0)+8|0,l|0,4,0);ea((da(n|0,4,0,0)|0|0)+88|0,l+-1|0,4,0)}while(0);if(((da(_>>0|0,1,0,0)|0)&16)!=0|$)break;k=da(ca|0,4,0,0)|0|0;if((k|0)<(da(ga|0,4,0,0)|0|0))vh(ha,61,k,0,0)|0;k=da(fa+8|0,4,0,0)|0|0;if(!k)break;else l=0;while(1){vh(ha,61,(da(ga|0,4,0,0)|0|0)+l|0,0,0)|0;k=da(k+20|0,4,0,0)|0|0;if(!k)break;else l=l+1|0}}while(0);if((da(aa>>0|0,1,0,0)|0|0)==0?(da(a+412|0,4,0,0)|0|0)==0:0)rt(a);if(((((da(ia+24|0,4,0,0)|0)&128|0)!=0?(da(aa>>0|0,1,0,0)|0|0)==0:0)?(da(a+412|0,4,0,0)|0|0)==0:0)?(vh(ha,35,h,1,0)|0,hq(ha,1),(da((da(ha|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)Wg(da(ha+16|0,4,0,0)|0|0,33488,-1,1,0)|0}else g=0}else g=0}else{g=0;f=0}while(0);Co(ia,b);Mk(ia,f);Lk(ia,c,1);Gk(ia,d);lg(ia,g);i=ja;return}function tr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f;if(!b){b=lh(a,8,0)|0;if(!b)b=0;else{e=b;g=e;ea(g>>0|0,0|0,1,0);ea(g+1>>0|0,0|0,1,0);ea(g+2>>0|0,0|0,1,0);ea(g+3>>0|0,0|0,1,0);e=e+4|0;ea(e>>0|0,0|0,1,0);ea(e+1>>0|0,0|0,1,0);ea(e+2>>0|0,0|0,1,0);ea(e+3>>0|0,0|0,1,0);e=4}}else e=4;do if((e|0)==4){ea(b|0,Gt(a,da(b|0,4,0,0)|0|0,8,b+4|0,d)|0|0,4,0);d=da(d|0,4,0,0)|0|0;if((d|0)<0){Gk(a,b);b=0;break}else{a=Vq(a,c)|0;ea((da(b|0,4,0,0)|0|0)+(d<<3)|0,a|0,4,0);break}}while(0);i=f;return b|0}function ur(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((da(c+4|0,4,0,0)|0|0)!=0?(e=mr(da(a|0,4,0,0)|0|0,95,c,d)|0,(e|0)!=0):0){ea(e+12|0,b|0,4,0);b=e+4|0;ea(b|0,da(b|0,4,0,0)|0|4352|0,4,0);b=e}return b|0}function vr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=da(a|0,4,0,0)|0|0;c=mr(d,153,c,1)|0;if(!c){Mk(d,b);c=0}else{ea(c+20|0,b|0,4,0);xr(a,c)}return c|0}function wr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=da(a|0,4,0,0)|0|0;if((b|0)!=0&(c|0)!=0?(da(b>>0|0,1,0,0)|0|0)==101:0){ea(c>>0|0,d|0,1,0);d=c+16|0;Fk(a,da(d|0,4,0,0)|0|0);ea(d|0,0|0,4,0)}return}function xr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;if((da(a+64|0,4,0,0)|0|0)==0?(Ht(b),c=da((da(a|0,4,0,0)|0|0)+100|0,4,0,0)|0|0,(c|0)<(da(b+24|0,4,0,0)|0|0)):0){ea(d|0,c|0,4,0);sh(a,27152,d)}i=e;return}function yr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=da(a|0,4,0,0)|0|0;h=c+20|0;d=da(h|0,4,0,0)|0|0;if((d|0)>0){f=c+16|0;g=(b|0)==0;c=d;e=0;do{d=da(f|0,4,0,0)|0|0;do if(da(d+(e<<4)+4|0,4,0,0)|0){if(!g?(cd(b,da(d+(e<<4)|0,4,0,0)|0|0)|0)!=0:0)break;zr(a,e);c=da(h|0,4,0,0)|0|0}while(0);e=e+1|0}while((e|0)<(c|0))}return}function zr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=da(a+408|0,4,0,0)|0|0;e=(e|0)==0?a:e;a=e+332|0;c=da(a|0,4,0,0)|0|0;d=1<=(j|0))ba();d=m+8|0;l=m;k=m+24|0;ea(l|0,0|0,4,0);g=da(a|0,4,0,0)|0|0;if((da(a+64|0,4,0,0)|0|0)==0?(ea(d|0,c|0,4,0),h=Vk(g,b,d)|0,(h|0)!=0):0){b=a+18|0;ea(b>>0|0,(da(b>>0|0,1,0,0)|0|0)+1<<24>>24|0,1,0);c=a+440|0;d=k+0|0;e=c+0|0;f=d+96|0;do{ea(d>>0|0,da(e>>0|0,1,0,0)|0|0|0,1,0);d=d+1|0;e=e+1|0}while((d|0)<(f|0));d=c+0|0;f=d+96|0;do{ea(d|0,0|0,4,0);d=d+4|0}while((d|0)<(f|0));Kh(a,h,l)|0;lg(g,da(l|0,4,0,0)|0|0);lg(g,h);d=c+0|0;e=k+0|0;f=d+96|0;do{ea(d>>0|0,da(e>>0|0,1,0,0)|0|0|0,1,0);d=d+1|0;e=e+1|0}while((d|0)<(f|0));ea(b>>0|0,(da(b>>0|0,1,0,0)|0|0)+-1<<24>>24|0,1,0)}i=m;return}function Br(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;h=i;i=i+48|0;if((i|0)>=(j|0))ba();f=h;g=h+16|0;b=da((da((da(a|0,4,0,0)|0|0)+16|0,4,0,0)|0|0)+(b<<4)|0,4,0,0)|0|0;e=1;do{ea(f|0,e|0,4,0);$c(24,g,33272,f)|0;if(Zh(da(a|0,4,0,0)|0|0,g,b)|0){ea(f|0,b|0,4,0);ea(f+4|0,g|0,4,0);ea(f+8|0,c|0,4,0);ea(f+12|0,d|0,4,0);Ar(a,28840,f)}e=e+1|0}while((e|0)!=5);i=h;return}function Cr(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+19|0;d=da(c>>0|0,1,0,0)|0|0;if(!(d<<24>>24)){d=a+72|0;c=(da(d|0,4,0,0)|0|0)+1|0;ea(d|0,c|0,4,0)}else{d=d+-1<<24>>24;ea(c>>0|0,d|0,1,0);c=da(a+((d&255)<<2)+24|0,4,0,0)|0|0}d=da(a+8|0,4,0,0)|0|0;vh(d,25,(da(da((da((da(a|0,4,0,0)|0|0)+16|0,4,0,0)|0|0)+(b<<4)+12|0,4,0,0)|0|0,4,0,0)|0|0)+1|0,c,0)|0;vh(d,52,b,1,c)|0;Zr(a,c);return}function Dr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;if((i|0)>=(j|0))ba();g=h;f=Nq(a)|0;d=a+19|0;e=da(d>>0|0,1,0,0)|0|0;if(!(e<<24>>24)){e=a+72|0;d=(da(e|0,4,0,0)|0|0)+1|0;ea(e|0,d|0,4,0)}else{e=e+-1<<24>>24;ea(d>>0|0,e|0,1,0);d=da(a+((e&255)<<2)+24|0,4,0,0)|0|0}vh(f,117,b,d,c)|0;e=da(a+408|0,4,0,0)|0|0;ea(((e|0)==0?a:e)+21>>0|0,1|0,1,0);ea(g|0,da((da((da(a|0,4,0,0)|0|0)+16|0,4,0,0)|0|0)+(c<<4)|0,4,0,0)|0|0,4,0);ea(g+4|0,((c|0)==1?13184:13208)|0,4,0);ea(g+8|0,b|0,4,0);ea(g+12|0,d|0,4,0);ea(g+16|0,d|0,4,0);Ar(a,33216,g);Zr(a,d);i=h;return}function Er(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,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,O=0,P=0,Q=0;Q=i;i=i+96|0;if((i|0)>=(j|0))ba();I=Q+24|0;p=Q+80|0;h=Q+64|0;t=Q+16|0;n=Q+60|0;o=Q+56|0;G=Q+52|0;F=Q+48|0;s=Q+44|0;w=Q+40|0;x=Q+36|0;y=Q+32|0;l=Q+8|0;m=Q;P=da(a|0,4,0,0)|0|0;M=Nq(a)|0;do if((M|0)!=0?(L=M+88|0,ea(L|0,da(L|0,2,0,0)|0|16|0,2,0),L=a+72|0,ea(L|0,2|0,4,0),J=dr(a,b,c,p)|0,(J|0)>=0):0){K=P+16|0;v=da(K|0,4,0,0)|0|0;if((J|0)==1?(Zk(a)|0)!=0:0)break;O=Vq(P,da(p|0,4,0,0)|0|0)|0;if(O){if(!e)N=Vq(P,d)|0;else{ea(I|0,d|0,4,0);N=th(P,30104,I)|0}u=c+4|0;if(!(da(u|0,4,0,0)|0))D=0;else D=da(v+(J<<4)|0,4,0,0)|0|0;a:do if(!(Rq(a,19,O,N,D)|0)){ea(h|0,0|0,4,0);ea(h+4|0,O|0,4,0);ea(h+8|0,N|0,4,0);ea(h+12|0,0|0,4,0);k=P+452|0;ea(k|0,0|0,4,0);b=bg(P,D,14,h)|0;if(!b){g=da(h|0,4,0,0)|0|0;if(!g)break;f=(da(L|0,4,0,0)|0|0)+1|0;ea(L|0,f|0,4,0);wh(M,vh(M,97,0,f,0)|0,g,0);hq(M,1);if(!(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))Wg(da(M+16|0,4,0,0)|0|0,30112,-1,1,0)|0;vh(M,35,f,1,0)|0;Vc(da(h|0,4,0,0)|0|0);break}else if((b|0)==12){p=0;g=56;b:while(1){while(1){e=(p+g|0)/2|0;b=da(30120+(e*12|0)|0,4,0,0)|0|0;d=cd(O,b)|0;if(!d){p=e;break b}if((d|0)<0){b=e;break}if((e|0)<(g|0))p=e+1|0;else break a}b=b+-1|0;if((p|0)>(b|0))break a;else g=b}if(((da(30125+(p*12|0)>>0|0,1,0,0)|0)&1)!=0?(Fn(a)|0)!=0:0)break;do switch(da(30124+(p*12|0)>>0|0,1,0,1)|0|0){case 24:{d=da(v+(J<<4)+4|0,4,0,0)|0|0;if(N){ea(I|0,0|0,4,0);Cn(N,I)|0;y=da(I|0,4,0,0)|0|0;ea(P+72|0,y|0,4,0);if((wg(d,y,-1,0)|0)!=7)break a;ea(P+65>>0|0,1|0,1,0);break a}if(!d){d=0;f=0}else{f=da((da(d+4|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;d=f;f=((f|0)<0)<<31>>31}It(a,30864,d,f);break a}case 10:{h=1<>0|0,1,0,0)|0))Wg(da(M+16|0,4,0,0)|0|0,30848,-1,1,0)|0;ea(L|0,(da(L|0,4,0,0)|0|0)+2|0,4,0);g=xh(M,9,30808)|0;d=da(M+32|0,4,0,0)|0|0;if(d>>>0>g>>>0)ea((da(M+4|0,4,0,0)|0|0)+(g*20|0)+4|0,J|0,4,0);f=g+1|0;if(d>>>0>f>>>0)ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+4|0,J|0,4,0);f=g+6|0;if(d>>>0<=f>>>0)break a;ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+4|0,2e3|0,4,0);break a}case 19:{g=da(da((da(v+(J<<4)+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0;y=t;ea(y|0,-2|0,4,0);ea(y+4|0,-1|0,4,0);if(N){ii(N,t)|0;f=t;d=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;if((f|0)<-1|(f|0)==-1&d>>>0<4294967295){d=t;ea(d|0,-1|0,4,0);ea(d+4|0,-1|0,4,0);d=-1;f=-1}y=g+160|0;ea(y|0,d|0,4,0);ea(y+4|0,f|0,4,0);g=da(g+208|0,4,0,0)|0|0;if(g){y=g+16|0;ea(y|0,d|0,4,0);ea(y+4|0,f|0,4,0)}}else{f=g+160|0;d=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0}y=t;ea(y|0,d|0,4,0);ea(y+4|0,f|0,4,0);It(a,30952,d,f);break a}case 1:{g=da(v+(J<<4)+4|0,4,0,0)|0|0;if(!N){f=da(g+4|0,4,0,0)|0|0;ea(f+4|0,da(g|0,4,0,0)|0|0,4,0);if(!(da(f+17>>0|0,1,0,0)|0)){f=0;d=0}else{d=(da(f+18>>0|0,1,0,0)|0|0)==0;f=d?1:2;d=d?0:0}It(a,30976,f,d);break a}if(cd(N,32192)|0)if(cd(N,31880)|0)if(!(cd(N,32200)|0))f=2;else{ea(I|0,0|0,4,0);Cn(N,I)|0;f=da(I|0,4,0,0)|0|0;f=f>>>0<3?f&255:0}else f=1;else f=0;ea(P+67>>0|0,f|0,1,0);k=f+-1|0;if(!((un(g,f)|0)==0&k>>>0<2))break a;d=xh(M,6,30992)|0;h=da(M+32|0,4,0,0)|0|0;if(h>>>0>d>>>0)ea((da(M+4|0,4,0,0)|0|0)+(d*20|0)+4|0,J|0,4,0);g=d+1|0;if(h>>>0>g>>>0)ea((da(M+4|0,4,0,0)|0|0)+(g*20|0)+4|0,J|0,4,0);g=d+2|0;f=d+4|0;if(h>>>0>g>>>0)ea((da(M+4|0,4,0,0)|0|0)+(g*20|0)+8|0,f|0,4,0);if(h>>>0>f>>>0)ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+4|0,k|0,4,0);f=d+5|0;if(h>>>0>f>>>0)ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+4|0,J|0,4,0);y=M+96|0;ea(y|0,da(y|0,4,0,0)|0|1<>0|0,1,0,0)|0))Wg(da(M+16|0,4,0,0)|0|0,31048,-1,1,0)|0;y=da(2708*4|0,4,0,0)|0|0;wh(M,vh(M,97,0,1,0)|0,y,0);vh(M,35,1,1,0)|0;break a}if((da(N>>0|0,1,0,0)|0|0)!=0?(y=da(P|0,4,0,0)|0|0,y=(oc[(fa(da(y+32|0,4,0,0)|0|0,31|0)|0)&31](y,N,1,o)|0)!=0,y|(da(o|0,4,0,0)|0|0)==0):0){sh(a,31072,I);break a}if((da(P+64>>0|0,1,0,1)|0|0)<2)Jt(a)|0;Vc(da(2708*4|0,4,0,0)|0|0);if(!(da(N>>0|0,1,0,0)|0)){ea(2708*4|0,0|0,4,0);break a}else{ea(I|0,N|0,4,0);ea(2708*4|0,Zc(10344,I)|0|0,4,0);break a}}case 4:if(!N){y=da((da(v+(J<<4)+12|0,4,0,0)|0|0)+80|0,4,0,0)|0|0;It(a,30848,y,((y|0)<0)<<31>>31);break a}else{ea(I|0,0|0,4,0);Cn(N,I)|0;y=da(I|0,4,0,0)|0|0;ea((da(v+(J<<4)+12|0,4,0,0)|0|0)+80|0,y|0,4,0);oq(da(v+(J<<4)+4|0,4,0,0)|0|0,y);break a}case 23:{It(a,31016,0,0);break a}case 31:{if(!N){It(a,31032,da(P+64>>0|0,1,0,1)|0|0,0);break a}d=da(N>>0|0,1,0,0)|0|0;if((d+-48&255)>=3)if(!(cd(N,31352)|0))d=1;else{d=(cd(N,15168)|0)==0;d=d?2:0}else d=(d<<24>>24)+-48|0;f=(da(a|0,4,0,0)|0|0)+64|0;if((da(f>>0|0,1,0,1)|0|0)==(d|0))break a;if(Jt(a)|0)break a;ea(f>>0|0,d|0,1,0);break a}case 25:{d=da(v+(J<<4)+4|0,4,0,0)|0|0;if(N){f=(hi(N,1,0)|0)<<24>>24!=0&1;if((da(u|0,4,0,0)|0|0)==0?(r=P+20|0,(da(r|0,4,0,0)|0|0)>0):0){g=0;do{ro(da((da(K|0,4,0,0)|0|0)+(g<<4)+4|0,4,0,0)|0|0,f)|0;g=g+1|0}while((g|0)<(da(r|0,4,0,0)|0|0))}}else f=-1;y=ro(d,f)|0;It(a,30880,y,((y|0)<0)<<31>>31);break a}case 22:{zr(a,J);g=(da(L|0,4,0,0)|0|0)+1|0;ea(L|0,g|0,4,0);if(((da(O>>0|0,1,0,0)|0)&-33)<<24>>24==80)vh(M,153,J,g,0)|0;else{ea(I|0,0|0,4,0);if(N){Cn(N,I)|0;f=da(I|0,4,0,0)|0|0;if((f|0)<=-1)f=(f|0)==-2147483648?2147483647:0-f|0}else f=0;vh(M,154,J,g,f)|0}vh(M,35,g,1,0)|0;hq(M,1);if(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break a;Wg(da(M+16|0,4,0,0)|0|0,O,-1,1,-1)|0;break a}case 21:{do if(N){if(cd(N,30904)|0)if(!(cd(N,30896)|0))g=0;else{H=66;break}else g=1;if(!(da(u|0,4,0,0)|0)){m=da(P+20|0,4,0,0)|0|0;if((m|0)>2){k=da(K|0,4,0,0)|0|0;f=g&255;l=2;do{h=da(da((da(k+(l<<4)+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0;do if(!(da(h+12>>0|0,1,0,0)|0)){d=da(h+208|0,4,0,0)|0|0;if((d|0)!=0?(da(d+43>>0|0,1,0,0)|0|0)==2:0)break;ea(h+4>>0|0,f|0,1,0)}while(0);l=l+1|0}while((l|0)<(m|0))}else f=g&255;ea(P+66>>0|0,f|0,1,0);H=74}else H=74}else H=66;while(0);if((H|0)==66)if(!(da(u|0,4,0,0)|0))d=P+66|0;else{g=-1;H=74}if((H|0)==74){f=da(da((da(v+(J<<4)+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0;do if((g|0)>-1?(da(f+12>>0|0,1,0,0)|0|0)==0:0){d=da(f+208|0,4,0,0)|0|0;if((d|0)!=0?(da(d+43>>0|0,1,0,0)|0|0)==2:0)break;ea(f+4>>0|0,g|0,1,0)}while(0);d=f+4|0}d=(da(d>>0|0,1,0,0)|0|0)==1?30904:30896;hq(M,1);if(!(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))Wg(da(M+16|0,4,0,0)|0|0,30920,-1,1,0)|0;wh(M,vh(M,97,0,1,0)|0,d,0);vh(M,35,1,1,0)|0;break a}case 29:{if(!N){y=(da(v+(J<<4)+8>>0|0,1,0,1)|0|0)+-1|0;It(a,31104,y,((y|0)<0)<<31>>31);break a}if(!(da(P+63>>0|0,1,0,0)|0)){sh(a,31120,I);break a}else{ea(v+(J<<4)+8>>0|0,((hi(N,0,1)|0)&255)+1|0,1,0);Kt(P);break a}}case 2:{if(!N){It(a,b,((da(30128+(p*12|0)|0,4,0,0)|0)&(da(P+24|0,4,0,0)|0)|0)!=0&1,0);break a}d=da(30128+(p*12|0)|0,4,0,0)|0|0;d=(da(P+63>>0|0,1,0,0)|0|0)==0?d&-524289:d;if(!((hi(N,1,0)|0)<<24>>24)){y=P+24|0;ea(y|0,(da(y|0,4,0,0)|0)&~d|0,4,0);if((d|0)==16777216){y=P+512|0;ea(y|0,0|0,4,0);ea(y+4|0,0|0,4,0)}}else{y=P+24|0;ea(y|0,da(y|0,4,0,0)|0|d|0,4,0)}vh(M,144,0,0,0)|0;Kt(P);break a}case 18:{hq(M,1);if(!(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))Wg(da(M+16|0,4,0,0)|0|0,30936,-1,1,0)|0;c:do if(N){g=N;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;f=g-N&1073741823;g=0;while(1){if(!(Ec(N,da(32216+(g<<2)|0,4,0,0)|0|0,f)|0))break;g=g+1|0;if((g|0)==6){H=91;break c}}if((g|0)!=-1)h=J;else H=91}else H=91;while(0);if((H|0)==91)if(!(da(u|0,4,0,0)|0)){ea(u|0,1|0,4,0);g=-1;h=0}else{g=-1;h=J}f=da(P+20|0,4,0,0)|0|0;if((f|0)>0){d=M+96|0;do{f=f+-1|0;do if(da((da(K|0,4,0,0)|0|0)+(f<<4)+4|0,4,0,0)|0){if((f|0)!=(h|0)?(da(u|0,4,0,0)|0|0)!=0:0)break;ea(d|0,da(d|0,4,0,0)|0|1<0)}vh(M,35,1,1,0)|0;break a}case 28:{h=Nq(a)|0;hq(h,4);ea(L|0,4|0,4,0);zr(a,J);if((((da((da(h|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0?(Wg(da(h+16|0,4,0,0)|0|0,31232,-1,1,0)|0,(da((da(h|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(h+16|0,4,0,0)|0|0)+40|0,20632,-1,1,0)|0,(da((da(h|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(h+16|0,4,0,0)|0|0)+80|0,31240,-1,1,0)|0,(da((da(h|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)Wg((da(h+16|0,4,0,0)|0|0)+120|0,31248,-1,1,0)|0;d=da((da(v+(J<<4)+12|0,4,0,0)|0|0)+16|0,4,0,0)|0|0;if(!d)break a;do{f=da(d+8|0,4,0,0)|0|0;y=da(f|0,4,0,0)|0|0;wh(h,vh(h,97,0,1,0)|0,y,0);vh(h,28,0,2,0)|0;y=Vs(da(f+42|0,2,0,0)|0|0)|0;vh(h,25,y,3,0)|0;y=Vs(da(f+28|0,2,0,0)|0|0)|0;vh(h,25,y,4,0)|0;vh(h,35,1,4,0)|0;f=da(f+8|0,4,0,0)|0|0;if(f)do{y=da(f|0,4,0,0)|0|0;wh(h,vh(h,97,0,2,0)|0,y,0);y=Vs(da(f+44|0,2,0,0)|0|0)|0;vh(h,25,y,3,0)|0;y=Vs(da(da(f+8|0,4,0,0)|0|0,2,0,0)|0|0)|0;vh(h,25,y,4,0)|0;vh(h,35,1,4,0)|0;f=da(f+20|0,4,0,0)|0|0}while((f|0)!=0);d=da(d|0,4,0,0)|0|0}while((d|0)!=0);break}case 15:{if(!N)break a;m=aq(P,N,D)|0;if(!m)break a;e=(da(30128+(p*12|0)|0,4,0,0)|0|0)==0;d=m+46|0;y=e?3:6;k=da((e?d:m+48|0)|0,2,0,0)|0|0;n=k&65535;ea(L|0,y|0,4,0);l=da(m+12|0,4,0,0)|0|0;hq(M,y);zr(a,J);if(((da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0?(Wg(da(M+16|0,4,0,0)|0|0,31256,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(M+16|0,4,0,0)|0|0)+40|0,31176,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)Wg((da(M+16|0,4,0,0)|0|0)+80|0,31184,-1,1,0)|0;if(((!e?(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0:0)?(Wg((da(M+16|0,4,0,0)|0|0)+120|0,31264,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(M+16|0,4,0,0)|0|0)+160|0,31272,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)Wg((da(M+16|0,4,0,0)|0|0)+200|0,31280,-1,1,0)|0;if(!(k<<16>>16))break a;g=m+4|0;f=m+28|0;h=m+32|0;m=l+4|0;k=0;do{y=da((da(g|0,4,0,0)|0|0)+(k<<1)|0,2,0,0)|0|0;vh(M,25,k,1,0)|0;l=y<<16>>16;vh(M,25,l,2,0)|0;if(y<<16>>16<0)vh(M,28,0,3,0)|0;else{y=da((da(m|0,4,0,0)|0|0)+(l*24|0)|0,4,0,0)|0|0;wh(M,vh(M,97,0,3,0)|0,y,0)}if(!e){vh(M,25,da((da(f|0,4,0,0)|0|0)+k>>0|0,1,0,1)|0|0,4,0)|0;y=da((da(h|0,4,0,0)|0|0)+(k<<2)|0,4,0,0)|0|0;wh(M,vh(M,97,0,5,0)|0,y,0);vh(M,25,(k|0)<(da(d|0,2,0,1)|0|0)&1,6,0)|0}vh(M,35,1,da(L|0,4,0,0)|0|0,0)|0;k=k+1|0}while((k|0)<(n|0));break}case 5:{if(!N)break a;y=(hi(N,1,0)|0)<<24>>24!=0;x=y?32e3:19240;Ph(P,19248,2,1,x,40,0,0,0)|0;Ph(P,19248,3,1,x,40,0,0,0)|0;Ph(P,19232,2,1,10352,40,0,0,0)|0;Nt(P,19232,12);Nt(P,19248,y?12:4);break a}case 17:{p=da(O>>0|0,1,0,0)|0|0;q=(da(c|0,4,0,0)|0|0)==0?-1:J;ea(L|0,6|0,4,0);hq(M,1);if(!(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))Wg(da(M+16|0,4,0,0)|0|0,31464,-1,1,0)|0;ea(s|0,100|0,4,0);if(N){Cn(N,s)|0;m=da(s|0,4,0,0)|0|0;if((m|0)<1){ea(s|0,100|0,4,0);m=100}}else m=100;vh(M,25,m,1,0)|0;E=P+20|0;e=da(E|0,4,0,0)|0|0;if((e|0)>0){D=(q|0)<0;f=M+32|0;A=M+4|0;z=M+24|0;F=(p&-33)<<24>>24==81;G=0;do{if(D|(G|0)==(q|0)){zr(a,G);e=vh(M,137,1,0,0)|0;vh(M,24,0,0,0)|0;d=da(f|0,4,0,0)|0|0;if(d>>>0>e>>>0)ea((da(A|0,4,0,0)|0|0)+(e*20|0)+8|0,d|0,4,0);ea((da(z|0,4,0,0)|0|0)+88|0,d+-1|0,4,0);g=(da((da(K|0,4,0,0)|0|0)+(G<<4)+12|0,4,0,0)|0|0)+16|0;e=da(g|0,4,0,0)|0|0;if(!e)p=0;else{p=0;do{d=da(e+8|0,4,0,0)|0|0;if(!((da(d+44>>0|0,1,0,0)|0)&32)){vh(M,25,da(d+32|0,4,0,0)|0|0,p+2|0,0)|0;p=p+1|0}b=da(d+8|0,4,0,0)|0|0;if(b)do{vh(M,25,da(b+40|0,4,0,0)|0|0,p+2|0,0)|0;p=p+1|0;b=da(b+20|0,4,0,0)|0|0}while((b|0)!=0);e=da(e|0,4,0,0)|0|0}while((e|0)!=0)}v=da(L|0,4,0,0)|0|0;e=p+8|0;ea(L|0,((v|0)>(e|0)?v:e)|0,4,0);vh(M,127,2,p,1)|0;e=da(A|0,4,0,0)|0|0;if(e)ea(e+(((da(f|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,G|0,1,0);p=vh(M,76,2,0,0)|0;ea(I|0,da((da(K|0,4,0,0)|0|0)+(G<<4)|0,4,0,0)|0|0,4,0);e=th(P,31480,I)|0;wh(M,vh(M,97,0,3,0)|0,e,-1);vh(M,32,2,4,1)|0;vh(M,94,4,3,2)|0;vh(M,35,2,1,0)|0;e=da(f|0,4,0,0)|0|0;if(e>>>0>p>>>0)ea((da(A|0,4,0,0)|0|0)+(p*20|0)+8|0,e|0,4,0);ea((da(z|0,4,0,0)|0|0)+88|0,e+-1|0,4,0);e=da(g|0,4,0,0)|0|0;if(!((e|0)==0|F))do{c=da(e+8|0,4,0,0)|0|0;B=c+8|0;p=da(B|0,4,0,0)|0|0;do if(p){d:do if(!((da(c+44>>0|0,1,0,0)|0)&32))p=0;else while(1){if(((da(p+51>>0|0,1,0,0)|0)&3)==2)break d;p=da(p+20|0,4,0,0)|0|0;if(!p){p=0;break}}while(0);b=vh(M,137,1,0,0)|0;vh(M,24,0,0,0)|0;d=da(f|0,4,0,0)|0|0;if(d>>>0>b>>>0)ea((da(A|0,4,0,0)|0|0)+(b*20|0)+8|0,d|0,4,0);ea((da(z|0,4,0,0)|0|0)+88|0,d+-1|0,4,0);$s(a);ot(a,c,54,1,0,w,x)|0;vh(M,25,0,7,0)|0;d=da(B|0,4,0,0)|0|0;if(!d)b=8;else{b=0;while(1){vh(M,25,0,b+8|0,0)|0;d=da(d+20|0,4,0,0)|0|0;if(!d)break;else b=b+1|0}b=b+9|0}C=da(L|0,4,0,0)|0|0;ea(L|0,((C|0)>(b|0)?C:b)|0,4,0);vh(M,108,da(w|0,4,0,0)|0|0,0,0)|0;C=vh(M,37,7,1,0)|0;l=c+38|0;b=da(l|0,2,0,0)|0|0;if(b<<16>>16>0){n=c+36|0;o=c+4|0;k=0;do{do if((k|0)!=(da(n|0,2,0,0)|0|0)){if(!(da((da(o|0,4,0,0)|0|0)+(k*24|0)+20>>0|0,1,0,0)|0))break;mt(M,c,da(w|0,4,0,0)|0|0,k,3);b=da(A|0,4,0,0)|0|0;if(b)ea(b+(((da(f|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,-128|0,1,0);b=vh(M,77,3,0,0)|0;vh(M,37,1,-1,0)|0;g=da((da(o|0,4,0,0)|0|0)+(k*24|0)|0,4,0,0)|0|0;ea(I|0,da(c|0,4,0,0)|0|0,4,0);ea(I+4|0,g|0,4,0);g=th(P,31504,I)|0;wh(M,vh(M,97,0,3,0)|0,g,-1);vh(M,35,3,1,0)|0;g=vh(M,137,1,0,0)|0;vh(M,24,0,0,0)|0;h=da(f|0,4,0,0)|0|0;if(h>>>0>b>>>0)ea((da(A|0,4,0,0)|0|0)+(b*20|0)+8|0,h|0,4,0);b=h+-1|0;d=(da(z|0,4,0,0)|0|0)+88|0;ea(d|0,b|0,4,0);if(h>>>0>g>>>0)ea((da(A|0,4,0,0)|0|0)+(g*20|0)+8|0,h|0,4,0);ea(d|0,b|0,4,0);b=da(l|0,2,0,0)|0|0}while(0);k=k+1|0}while((k|0)<(b<<16>>16|0))}b=da(B|0,4,0,0)|0|0;if(b){s=c+4|0;r=0;h=0;d=-1;while(1){g=ws(M)|0;if((p|0)!=(b|0)){d=Ot(a,b,da(w|0,4,0,0)|0|0,0,0,y,h,d)|0;vh(M,37,r+8|0,1,0)|0;c=da(b+48|0,2,0,1)|0|0;g=vh(M,69,(da(x|0,4,0,0)|0|0)+r|0,g,d)|0;wh(M,g,c,-14);vh(M,37,1,-1,0)|0;wh(M,vh(M,97,0,3,0)|0,31528,-2);vh(M,94,7,3,3)|0;wh(M,vh(M,97,0,4,0)|0,31536,-2);vh(M,94,4,3,3)|0;c=da(b|0,4,0,0)|0|0;o=vh(M,97,0,4,0)|0;wh(M,o,c,0);vh(M,94,4,3,3)|0;vh(M,35,3,1,0)|0;c=vh(M,137,1,0,0)|0;vh(M,24,0,0,0)|0;h=da(f|0,4,0,0)|0|0;if(h>>>0>g>>>0)ea((da(A|0,4,0,0)|0|0)+(g*20|0)+8|0,h|0,4,0);g=da(z|0,4,0,0)|0|0;ea(g+88|0,h+-1|0,4,0);if(da(b+50>>0|0,1,0,0)|0){n=ws(M)|0;l=b+46|0;g=da(l|0,2,0,0)|0|0;if(g<<16>>16){k=b+4|0;h=0;do{if(!(da((da(s|0,4,0,0)|0|0)+((da((da(k|0,4,0,0)|0|0)+(h<<1)|0,2,0,0)|0|0)*24|0)+20>>0|0,1,0,0)|0)){vh(M,76,h+d|0,n,0)|0;g=da(l|0,2,0,0)|0|0}h=h+1|0}while((h|0)<(g&65535|0))}g=vh(M,9,(da(x|0,4,0,0)|0|0)+r|0,0,0)|0;vh(M,16,0,n,0)|0;h=da(f|0,4,0,0)|0|0;if(h>>>0>g>>>0)ea((da(A|0,4,0,0)|0|0)+(g*20|0)+8|0,h|0,4,0);ea((da(z|0,4,0,0)|0|0)+88|0,h+-1|0,4,0);g=da(l|0,2,0,1)|0|0;wh(M,vh(M,114,(da(x|0,4,0,0)|0|0)+r|0,n,d)|0,g,-14);vh(M,37,1,-1,0)|0;wh(M,vh(M,97,0,3,0)|0,31560,-2);vh(M,16,0,o,0)|0;g=da(z|0,4,0,0)|0|0;k=~n;do if((n|0)<0){h=da(g+112|0,4,0,0)|0|0;if(!h)break;ea(h+(k<<2)|0,da(f|0,4,0,0)|0|0,4,0)}while(0);h=da(f|0,4,0,0)|0|0;ea(g+88|0,h+-1|0,4,0)}if(h>>>0>c>>>0)ea((da(A|0,4,0,0)|0|0)+(c*20|0)+8|0,h|0,4,0);ea(g+88|0,h+-1|0,4,0);Pt(a,da(y|0,4,0,0)|0|0);h=b}b=da(b+20|0,4,0,0)|0|0;if(!b)break;else r=r+1|0}}vh(M,9,da(w|0,4,0,0)|0|0,C,0)|0;d=C+-1|0;g=da(f|0,4,0,0)|0|0;if(g>>>0>d>>>0)ea((da(A|0,4,0,0)|0|0)+(d*20|0)+8|0,g|0,4,0);ea((da(z|0,4,0,0)|0|0)+88|0,g+-1|0,4,0);wh(M,vh(M,97,0,2,0)|0,31592,-2);d=da(B|0,4,0,0)|0|0;if(!d)break;else b=0;while(1){if((p|0)!=(d|0)){g=da(f|0,4,0,0)|0|0;vh(M,137,1,g+2|0,0)|0;vh(M,24,0,0,0)|0;vh(M,50,(da(x|0,4,0,0)|0|0)+b|0,3,0)|0;vh(M,79,b+8|0,g+8|0,3)|0;g=da(A|0,4,0,0)|0|0;if(g)ea(g+(((da(f|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,-112|0,1,0);vh(M,37,1,-1,0)|0;v=da(d|0,4,0,0)|0|0;wh(M,vh(M,97,0,3,0)|0,v,0);vh(M,94,3,2,7)|0;vh(M,35,7,1,0)|0}d=da(d+20|0,4,0,0)|0|0;if(!d)break;else b=b+1|0}}while(0);e=da(e|0,4,0,0)|0|0}while((e|0)!=0);e=da(E|0,4,0,0)|0|0}G=G+1|0}while((G|0)<(e|0))}else f=M+32|0;d=xh(M,3,31448)|0;f=da(f|0,4,0,0)|0|0;if(f>>>0>d>>>0){ea((da(M+4|0,4,0,0)|0|0)+(d*20|0)+12|0,0-m|0,4,0);ea((da(M+4|0,4,0,0)|0|0)+(d*20|0)+8|0,f|0,4,0)}ea((da(M+24|0,4,0,0)|0|0)+88|0,f+-1|0,4,0);wh(M,d+1|0,31624,-2);break a}case 9:{hq(M,3);ea(L|0,3|0,4,0);if(((da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0?(Wg(da(M+16|0,4,0,0)|0|0,31288,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(M+16|0,4,0,0)|0|0)+40|0,31184,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)Wg((da(M+16|0,4,0,0)|0|0)+80|0,31352,-1,1,0)|0;d=P+20|0;f=da(d|0,4,0,0)|0|0;if((f|0)>0)h=0;else break a;do{if(da((da(K|0,4,0,0)|0|0)+(h<<4)+4|0,4,0,0)|0){vh(M,25,h,1,0)|0;g=da((da(K|0,4,0,0)|0|0)+(h<<4)|0,4,0,0)|0|0;wh(M,vh(M,97,0,2,0)|0,g,0);g=da(da((da((da(K|0,4,0,0)|0|0)+(h<<4)+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0;if(!(da(g+15>>0|0,1,0,0)|0))g=da(g+168|0,4,0,0)|0|0;else g=10360;wh(M,vh(M,97,0,3,0)|0,g,0);vh(M,35,1,3,0)|0;f=da(d|0,4,0,0)|0|0}h=h+1|0}while((h|0)<(f|0));break}case 6:{hq(M,2);ea(L|0,2|0,4,0);if((da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0?(Wg(da(M+16|0,4,0,0)|0|0,31288,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)Wg((da(M+16|0,4,0,0)|0|0)+40|0,31184,-1,1,0)|0;f=da(P+436|0,4,0,0)|0|0;if(!f)break a;else d=0;while(1){y=da(f+8|0,4,0,0)|0|0;vh(M,25,d,1,0)|0;y=da(y|0,4,0,0)|0|0;wh(M,vh(M,97,0,2,0)|0,y,0);vh(M,35,1,2,0)|0;f=da(f|0,4,0,0)|0|0;if(!f)break;else d=d+1|0}break}case 13:{if(!N)break a;g=Zh(P,N,D)|0;if(!g)break a;p=Nq(a)|0;h=da(g+16|0,4,0,0)|0|0;if(!h)break a;hq(p,8);ea(L|0,8|0,4,0);zr(a,J);do if((((da((da(p|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0?(Wg(da(p+16|0,4,0,0)|0|0,31360,-1,1,0)|0,(da((da(p|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(p+16|0,4,0,0)|0|0)+40|0,31288,-1,1,0)|0,(da((da(p|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(p+16|0,4,0,0)|0|0)+80|0,31232,-1,1,0)|0,(da((da(p|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0){Wg((da(p+16|0,4,0,0)|0|0)+120|0,31368,-1,1,0)|0;if(da((da(p|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break;Wg((da(p+16|0,4,0,0)|0|0)+160|0,31376,-1,1,0)|0;if(da((da(p|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break;Wg((da(p+16|0,4,0,0)|0|0)+200|0,31384,-1,1,0)|0;if(da((da(p|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break;Wg((da(p+16|0,4,0,0)|0|0)+240|0,31400,-1,1,0)|0;if(da((da(p|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break;Wg((da(p+16|0,4,0,0)|0|0)+280|0,31416,-1,1,0)|0}while(0);c=g+4|0;e=0;while(1){k=h+20|0;if((da(k|0,4,0,0)|0|0)>0){g=h+25|0;f=h+26|0;d=h+8|0;o=0;do{n=da(h+(o<<3)+40|0,4,0,0)|0|0;m=da(g>>0|0,1,0,1)|0|0;if((m|0)==8)l=32072;else if((m|0)==9)l=32088;else if((m|0)==6)l=32096;else if((m|0)==7)l=32056;else l=32112;m=da(f>>0|0,1,0,1)|0|0;if((m|0)==8)m=32072;else if((m|0)==9)m=32088;else if((m|0)==6)m=32096;else if((m|0)==7)m=32056;else m=32112;vh(p,25,e,1,0)|0;vh(p,25,o,2,0)|0;y=da(d|0,4,0,0)|0|0;wh(p,vh(p,97,0,3,0)|0,y,0);y=da((da(c|0,4,0,0)|0|0)+((da(h+(o<<3)+36|0,4,0,0)|0|0)*24|0)|0,4,0,0)|0|0;wh(p,vh(p,97,0,4,0)|0,y,0);wh(p,vh(p,(n|0)!=0?97:28,0,5,0)|0,n,0);wh(p,vh(p,97,0,6,0)|0,m,0);wh(p,vh(p,97,0,7,0)|0,l,0);wh(p,vh(p,97,0,8,0)|0,31424,0);vh(p,35,1,8,0)|0;o=o+1|0}while((o|0)<(da(k|0,4,0,0)|0|0))}h=da(h+4|0,4,0,0)|0|0;if(!h)break;else e=e+1|0}break}case 12:{b=da(L|0,4,0,0)|0|0;z=b+1|0;A=b+5|0;B=b+6|0;ea(L|0,B|0,4,0);C=Nq(a)|0;hq(C,4);if((((da((da(C|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0?(Wg(da(C+16|0,4,0,0)|0|0,31232,-1,1,0)|0,(da((da(C|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(C+16|0,4,0,0)|0|0)+40|0,20456,-1,1,0)|0,(da((da(C|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(C+16|0,4,0,0)|0|0)+80|0,31432,-1,1,0)|0,(da((da(C|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)Wg((da(C+16|0,4,0,0)|0|0)+120|0,31440,-1,1,0)|0;zr(a,J);p=da((da((da(K|0,4,0,0)|0|0)+(J<<4)+12|0,4,0,0)|0|0)+16|0,4,0,0)|0|0;if(!p)break a;m=(N|0)==0;n=a+68|0;o=C+32|0;c=C+4|0;w=C+24|0;x=b+2|0;y=b+3|0;t=b+4|0;l=a+8|0;while(1){if(m){u=da(p|0,4,0,0)|0|0;v=da(p+8|0,4,0,0)|0|0}else{u=0;v=rh(a,0,N,D)|0}if((v|0)!=0?(E=v+16|0,(da(E|0,4,0,0)|0|0)!=0):0){fs(a,J,da(v+32|0,4,0,0)|0|0,0,da(v|0,4,0,0)|0|0);b=(da(v+38|0,2,0,0)|0|0)+B|0;if((b|0)>(da(L|0,4,0,0)|0|0))ea(L|0,b|0,4,0);Pq(a,0,J,v,54);p=da(v|0,4,0,0)|0|0;wh(C,vh(C,97,0,z,0)|0,p,0);p=da(E|0,4,0,0)|0|0;if(!p)b=1;else{b=1;do{e=Zh(P,da(p+8|0,4,0,0)|0|0,D)|0;do if(e){ea(G|0,0|0,4,0);fs(a,J,da(e+32|0,4,0,0)|0|0,0,da(e|0,4,0,0)|0|0);if(Lt(a,e,p,G,0)|0)break a;d=da(G|0,4,0,0)|0|0;if(!d){Pq(a,b,J,e,54);break}else{vh(C,54,b,da(d+40|0,4,0,0)|0|0,J)|0;s=da(l|0,4,0,0)|0|0;wh(s,-1,gs(a,d)|0,-6);break}}while(0);b=b+1|0;p=da(p+4|0,4,0,0)|0|0}while((p|0)!=0)}if((da(n|0,4,0,0)|0|0)<(b|0))ea(n|0,b|0,4,0);q=vh(C,108,0,0,0)|0;b=da(E|0,4,0,0)|0|0;if(b){s=v+36|0;r=1;while(1){k=b+8|0;p=Zh(P,da(k|0,4,0,0)|0|0,D)|0;ea(G|0,0|0,4,0);ea(F|0,0|0,4,0);h=(p|0)!=0;do if(h){Lt(a,p,b,G,F)|0;e=da(G|0,4,0,0)|0|0;d=ws(C)|0;if(!(h&(e|0)==0)){p=d;H=306;break}p=da(b+36|0,4,0,0)|0|0;if((p|0)==(da(s|0,2,0,0)|0|0))vh(C,103,0,B,0)|0;else{vh(C,47,0,p,B)|0;Mt(C,v,p,B);vh(C,76,B,d,0)|0;vh(C,38,B,(da(o|0,4,0,0)|0|0)+3|0,0)|0}vh(C,70,r,0,B)|0;vh(C,16,0,d,0)|0;p=da(o|0,4,0,0)|0|0;if(p>>>0>1)ea((da(c|0,4,0,0)|0|0)+((p+-2|0)*20|0)+8|0,p|0,4,0);ea((da(w|0,4,0,0)|0|0)+88|0,p+-1|0,4,0);p=d}else{p=ws(C)|0;e=0;H=306}while(0);do if((H|0)==306){H=0;g=b+20|0;d=da(g|0,4,0,0)|0|0;if((d|0)>0){f=0;do{d=da(F|0,4,0,0)|0|0;if(!d)d=b+(f<<3)+36|0;else d=d+(f<<2)|0;I=f+B|0;mt(C,v,0,da(d|0,4,0,0)|0|0,I);vh(C,76,I,p,0)|0;f=f+1|0;d=da(g|0,4,0,0)|0|0}while((f|0)<(d|0))}if(!h)break;f=nt(C,e)|0;e=da(g|0,4,0,0)|0|0;wh(C,vh(C,49,B,d,A)|0,f,e);wh(C,vh(C,69,r,p,A)|0,0,-14)}while(0);vh(C,103,0,x,0)|0;e=da(k|0,4,0,0)|0|0;wh(C,vh(C,97,0,y,0)|0,e,0);vh(C,25,r+-1|0,t,0)|0;vh(C,35,z,4,0)|0;e=da(w|0,4,0,0)|0|0;d=~p;do if((p|0)<0){p=da(e+112|0,4,0,0)|0|0;if(!p)break;ea(p+(d<<2)|0,da(o|0,4,0,0)|0|0,4,0)}while(0);ea(e+88|0,(da(o|0,4,0,0)|0|0)+-1|0,4,0);lg(P,da(F|0,4,0,0)|0|0);b=da(b+4|0,4,0,0)|0|0;if(!b)break;else r=r+1|0}}vh(C,9,0,q+1|0,0)|0;b=da(o|0,4,0,0)|0|0;if(b>>>0>q>>>0)ea((da(c|0,4,0,0)|0|0)+(q*20|0)+8|0,b|0,4,0);ea((da(w|0,4,0,0)|0|0)+88|0,b+-1|0,4,0)}if(!u)break;else p=u}break}case 11:{if(!N){if(Fn(a)|0)break a;hq(M,1);if(!(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0))Wg(da(M+16|0,4,0,0)|0|0,31784,-1,1,0)|0;vh(M,97,0,1,0)|0;wh(M,-1,da(31632+((da((da(a|0,4,0,0)|0|0)+62>>0|0,1,0,1)|0)<<3)|0,4,0,0)|0|0,-2);vh(M,35,1,1,0)|0;break a}g=da((da(K|0,4,0,0)|0|0)+12|0,4,0,0)|0|0;if(((da(g+78|0,2,0,0)|0)&5)==1)break a;else{f=31632;d=31704}do{if(!(cd(N,d)|0)){q=f;H=415;break}f=f+8|0;d=da(f|0,4,0,0)|0|0}while((d|0)!=0);if((H|0)==415?(y=da(q+4>>0|0,1,0,0)|0|0,y=y<<24>>24==0?2:y,ea(P+62>>0|0,y|0,1,0),ea(g+77>>0|0,y|0,1,0),(da(q|0,4,0,0)|0|0)!=0):0)break a;ea(I|0,N|0,4,0);sh(a,31800,I);break a}case 0:{m=da(30128+(p*12|0)|0,4,0,0)|0|0;y=M+96|0;ea(y|0,da(y|0,4,0,0)|0|1<>>0>f>>>0)ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+4|0,J|0,4,0);d=f+1|0;ea(I|0,0|0,4,0);Cn(N,I)|0;g=da(g|0,4,0,0)|0|0;if(g>>>0>d>>>0)ea((da(M+4|0,4,0,0)|0|0)+(d*20|0)+4|0,da(I|0,4,0,0)|0|0,4,0);f=f+2|0;if(g>>>0<=f>>>0)break a;ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+4|0,J|0,4,0);ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+8|0,m|0,4,0);break a}f=xh(M,3,31848)|0;g=da(M+32|0,4,0,0)|0|0;if(g>>>0>f>>>0)ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+4|0,J|0,4,0);f=f+1|0;if(g>>>0>f>>>0){ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+4|0,J|0,4,0);ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+12|0,m|0,4,0)}hq(M,1);if(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break a;Wg(da(M+16|0,4,0,0)|0|0,O,-1,1,-1)|0;break a}case 7:{hq(M,1);ea(L|0,1|0,4,0);if(!(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)){Wg(da(M+16|0,4,0,0)|0|0,31864,-1,1,0)|0;d=0}else d=0;do{y=da(8648+(d<<2)|0,4,0,0)|0|0;d=d+1|0;wh(M,vh(M,97,0,1,0)|0,y,0);vh(M,35,1,1,0)|0}while((d|0)!=4);break}case 35:{f=(da(c|0,4,0,0)|0|0)!=0?J:10;if(N)if(cd(N,31880)|0)if(!(cd(N,31888)|0))d=2;else{d=(cd(N,31896)|0)==0;d=d?3:0}else d=1;else d=0;hq(M,3);ea(L|0,3|0,4,0);if(((da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0?(Wg(da(M+16|0,4,0,0)|0|0,31912,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(M+16|0,4,0,0)|0|0)+40|0,31920,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)Wg((da(M+16|0,4,0,0)|0|0)+80|0,31928,-1,1,0)|0;vh(M,11,f,d,1)|0;vh(M,35,1,3,0)|0;break a}case 26:{nf(P)|0;break a}case 34:{if(!N)d=da(P+216|0,4,0,0)|0|0;else{ea(I|0,0|0,4,0);Cn(N,I)|0;d=da(I|0,4,0,0)|0|0;if((d|0)>0)f=21;else{d=0;f=0}ea(P+216|0,f|0,4,0);ea(P+220|0,d|0,4,0);d=f}if((d|0)==21){d=da(P+220|0,4,0,0)|0|0;f=d;d=((d|0)<0)<<31>>31}else{f=0;d=0}It(a,31944,f,d);break a}case 27:{if((N|0)!=0?(ii(N,l)|0)==0:0){y=l;Oc(da(y|0,4,0,0)|0|0,da(y+4|0,4,0,0)|0|0)|0}f=(Kc()|0)==0;d=9032;It(a,31976,f?da(d|0,4,0,0)|0|0:-1,f?da(d+4|0,4,0,0)|0|0:-1);break a}case 33:{if((N|0)!=0?(w=(ii(N,m)|0)==0,y=m,x=da(y+4|0,4,0,0)|0|0,w&((x|0)>-1|(x|0)==-1&(da(y|0,4,0,0)|0|0)>>>0>4294967295)):0)ea(P+132|0,0|0,4,0);y=da(P+132|0,4,0,0)|0|0;It(a,31992,y,((y|0)<0)<<31>>31);break a}case 16:{if(!N)break a;g=Zh(P,N,D)|0;if(!g)break a;h=Nq(a)|0;hq(h,5);ea(L|0,5|0,4,0);zr(a,J);if(((((da((da(h|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0?(Wg(da(h+16|0,4,0,0)|0|0,31288,-1,1,0)|0,(da((da(h|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(h+16|0,4,0,0)|0|0)+40|0,31184,-1,1,0)|0,(da((da(h|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(h+16|0,4,0,0)|0|0)+80|0,31296,-1,1,0)|0,(da((da(h|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(h+16|0,4,0,0)|0|0)+120|0,31304,-1,1,0)|0,(da((da(h|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)Wg((da(h+16|0,4,0,0)|0|0)+160|0,31312,-1,1,0)|0;f=da(g+8|0,4,0,0)|0|0;if(!f)break a;else d=0;while(1){vh(h,25,d,1,0)|0;y=da(f|0,4,0,0)|0|0;wh(h,vh(h,97,0,2,0)|0,y,0);vh(h,25,(da(f+50>>0|0,1,0,0)|0|0)!=0&1,3,0)|0;y=da(31336+(((da(f+51>>0|0,1,0,0)|0)&3)<<2)|0,4,0,0)|0|0;wh(h,vh(h,97,0,4,0)|0,y,0);vh(h,25,(da(f+36|0,4,0,0)|0|0)!=0&1,5,0)|0;vh(h,35,1,5,0)|0;f=da(f+20|0,4,0,0)|0|0;if(!f)break;else d=d+1|0}break}case 30:{if(!N)break a;o=Zh(P,N,D)|0;if(!o)break a;g=da(o+8|0,4,0,0)|0|0;e:do if(!g)g=0;else while(1){if(((da(g+51>>0|0,1,0,0)|0)&3)==2)break e;g=da(g+20|0,4,0,0)|0|0;if(!g){g=0;break}}while(0);hq(M,6);ea(L|0,6|0,4,0);zr(a,J);do if((((da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0?(Wg(da(M+16|0,4,0,0)|0|0,31176,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(M+16|0,4,0,0)|0|0)+40|0,31184,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0)?(Wg((da(M+16|0,4,0,0)|0|0)+80|0,31192,-1,1,0)|0,(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0|0)==0):0){Wg((da(M+16|0,4,0,0)|0|0)+120|0,31200,-1,1,0)|0;if(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break;Wg((da(M+16|0,4,0,0)|0|0)+160|0,31208,-1,1,0)|0;if(da((da(M|0,4,0,0)|0|0)+65>>0|0,1,0,0)|0)break;Wg((da(M+16|0,4,0,0)|0|0)+200|0,31224,-1,1,0)|0}while(0);gr(a,o)|0;c=o+38|0;f=da(c|0,2,0,0)|0|0;if(f<<16>>16<=0)break a;b=(g|0)==0;n=g+4|0;d=0;p=0;e=da(o+4|0,4,0,0)|0|0;while(1){k=e+23|0;if(!((da(k>>0|0,1,0,0)|0)&2)){vh(M,25,d-p|0,1,0)|0;h=da(e|0,4,0,0)|0|0;wh(M,vh(M,97,0,2,0)|0,h,0);h=da(e+12|0,4,0,0)|0|0;wh(M,vh(M,97,0,3,0)|0,(h|0)==0?10360:h,0);vh(M,25,(da(e+20>>0|0,1,0,0)|0|0)!=0&1,4,0)|0;h=da(e+8|0,4,0,0)|0|0;if(!h)vh(M,28,0,5,0)|0;else wh(M,vh(M,97,0,5,0)|0,h,0);g=(da(k>>0|0,1,0,0)|0)&1;f:do if(g<<24>>24==0|b)h=(g^1)&255^1;else{h=da(c|0,2,0,0)|0|0;if(h<<16>>16<1){h=1;break}k=da(n|0,4,0,0)|0|0;m=h<<16>>16;l=1;while(1){h=l+1|0;if((da(k+(l+-1<<1)|0,2,0,0)|0|0)==(d|0)){h=l;break f}if((l|0)<(m|0))l=h;else break}}while(0);vh(M,25,h,6,0)|0;vh(M,35,1,6,0)|0;f=da(c|0,2,0,0)|0|0;h=p}else h=p+1|0;d=d+1|0;if((d|0)>=(f<<16>>16|0))break;else{p=h;e=e+24|0}}break}case 14:{if(!((N|0)!=0?(y=(Cn(N,n)|0)==0,f=da(n|0,4,0,0)|0|0,!(y|(f|0)<1)):0)){ea(n|0,2147483647|0,4,0);f=2147483647}d=da(a+408|0,4,0,0)|0|0;zr(a,J);d=((d|0)==0?a:d)+328|0;ea(d|0,da(d|0,4,0,0)|0|1<>>0>f>>>0)ea((da(M+4|0,4,0,0)|0|0)+(f*20|0)+8|0,d|0,4,0);ea((da(M+24|0,4,0,0)|0|0)+88|0,d+-1|0,4,0);break a}default:{if(!N)d=da(P+492|0,4,0,0)|0|0;else{ea(I|0,0|0,4,0);Cn(N,I)|0;d=da(I|0,4,0,0)|0|0;y=(d|0)>0;d=y?d:0;ea(P+444|0,(y?74:0)|0,4,0);ea(P+448|0,(y?P:0)|0,4,0);ea(k|0,0|0,4,0);ea(P+492|0,d|0,4,0)}It(a,31968,d,((d|0)<0)<<31>>31);break a}}while(0)}else{g=da(h|0,4,0,0)|0|0;if(g){ea(I|0,g|0,4,0);sh(a,10344,I);Vc(da(h|0,4,0,0)|0|0)}y=a+64|0;ea(y|0,(da(y|0,4,0,0)|0|0)+1|0,4,0);ea(a+12|0,b|0,4,0);break}}while(0);lg(P,O);lg(P,N)}}while(0);i=Q;return}function Fr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;a:do if(!b)b=0;else{d=b;while(1){if((da(d>>0|0,1,0,0)|0|0)==-121){b=da(a|0,4,0,0)|0|0;if(!(da((da(b|0,4,0,0)|0|0)+145>>0|0,1,0,0)|0))break;ea(d>>0|0,101|0,1,0)}b=da(d+4|0,4,0,0)|0|0;if(b&16384){b=0;break a}c=d+20|0;if(!(b&2048)){if(Gr(a,da(c|0,4,0,0)|0|0)|0){b=1;break a}}else if(er(a,da(c|0,4,0,0)|0|0)|0){b=1;break a}if(Fr(a,da(d+16|0,4,0,0)|0|0)|0){b=1;break a}d=da(d+12|0,4,0,0)|0|0;if(!d){b=0;break a}}ea(e|0,da(a+16|0,4,0,0)|0|0,4,0);sh(b,29984,e);b=1}while(0);i=f;return b|0}function Gr(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if((b|0)!=0?(da(b|0,4,0,0)|0|0)>0:0){c=0;d=da(b+4|0,4,0,0)|0|0;while(1){if(Fr(a,da(d|0,4,0,0)|0|0)|0){c=1;break a}c=c+1|0;if((c|0)>=(da(b|0,4,0,0)|0|0)){c=0;break}else d=d+20|0}}else c=0;while(0);return c|0}function Hr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;wh(a,vh(a,122,b,0,0)|0,c,-1);c=da((da(a|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;if((c|0)>0){d=a+96|0;b=da(d|0,4,0,0)|0|0;a=0;do{b=b|1<>16|0,2,0)}c=(Qt(a,c)|0)==0;return (c?d:0)|0}function Jr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;a:do if((b|0)!=0?(e=da(a+12|0,4,0,0)|0|0,(da(b|0,4,0,0)|0|0)>0):0){f=a+8|0;g=a+4|0;h=0;k=b+8|0;while(1){if(!(da(f|0,4,0,0)|0)){d=k+4|0;c=da(d|0,4,0,0)|0|0;if((c|0)!=0?(cd(c,e)|0)!=0:0)break;lg(da(da(a|0,4,0,0)|0|0,4,0,0)|0|0,c);ea(d|0,0|0,4,0);ea(k|0,da(g|0,4,0,0)|0|0,4,0)}if(er(a,da(k+20|0,4,0,0)|0|0)|0){c=1;break a}if(Fr(a,da(k+44|0,4,0,0)|0|0)|0){c=1;break a}h=h+1|0;if((h|0)>=(da(b|0,4,0,0)|0|0)){c=0;break a}else k=k+72|0}b=da(a|0,4,0,0)|0|0;k=da(a+20|0,4,0,0)|0|0;ea(l|0,da(a+16|0,4,0,0)|0|0,4,0);ea(l+4|0,k|0,4,0);ea(l+8|0,c|0,4,0);sh(b,29936,l);c=1}else c=0;while(0);i=m;return c|0}function Kr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;c=da(a|0,4,0,0)|0|0;if((((da(c+145>>0|0,1,0,0)|0|0)==0?(da(a+18>>0|0,1,0,0)|0|0)==0:0)?((da(c+24|0,4,0,0)|0)&2048|0)==0:0)?(Ec(b,25568,7)|0)==0:0){ea(d|0,b|0,4,0);sh(a,28440,d);c=1}else c=0;i=e;return c|0}function Lr(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))ba();s=t;do if(b){p=c&1;r=(d|0)!=0;if(r){e=da(d|0,4,0,0)|0|0;n=32768}else{e=Rt(b,c)|0;e=lh(a,e,((e|0)<0)<<31>>31)|0;n=0}ea(s|0,e|0,4,0);if(e){h=(p|0)==0;if(!h)if(!(da(b+12|0,4,0,0)|0))m=(da(b+20|0,4,0,0)|0|0)==0?16396:8220;else m=8220;else m=48;o=m&60;q=b+4|0;k=da(q|0,4,0,0)|0|0;if((k&1024|0)==0?(f=da(b+8|0,4,0,0)|0|0,(f|0)!=0):0){g=f;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;l=(g-f&1073741823)+1|0}else l=0;if(h){if(!(k&16384))g=(k&8192|0)==0?48:28;else g=12;jw(e|0,b|0,g|0)|0;ew(e+g|0,0,48-g|0)|0}else jw(e|0,b|0,o|0)|0;k=e+4|0;f=m&24576|n|(da(k|0,4,0,0)|0)&-122881;ea(k|0,f|0,4,0);if(l){f=e+o|0;ea(e+8|0,f|0,4,0);jw(f|0,da(b+8|0,4,0,0)|0|0,l|0)|0;f=da(k|0,4,0,0)|0|0}g=da(q|0,4,0,0)|0|0;do if(!((f|g)&16384)){f=b+20|0;if(!(g&2048)){ea(e+20|0,Or(a,da(f|0,4,0,0)|0|0,p)|0|0,4,0);break}else{ea(e+20|0,fr(a,da(f|0,4,0,0)|0|0,p)|0|0,4,0);break}}while(0);f=da(k|0,4,0,0)|0|0;if(!(f&24576)){if((da(q|0,4,0,0)|0)&16384)break;ea(e+12|0,Lr(a,da(b+12|0,4,0,0)|0|0,0,0)|0|0,4,0);ea(e+16|0,Lr(a,da(b+16|0,4,0,0)|0|0,0,0)|0|0,4,0);break}p=St(b,c)|0;ea(s|0,(da(s|0,4,0,0)|0|0)+p|0,4,0);if(f&8192){ea(e+12|0,Lr(a,da(b+12|0,4,0,0)|0|0,1,s)|0|0,4,0);ea(e+16|0,Lr(a,da(b+16|0,4,0,0)|0|0,1,s)|0|0,4,0)}if(r)ea(d|0,da(s|0,4,0,0)|0|0,4,0)}}else e=0;while(0);i=t;return e|0}function Mr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;a:do if((b|0)!=0?(c=lh(a,8,0)|0,(c|0)!=0):0){f=b+4|0;ea(c+4|0,da(f|0,4,0,0)|0|0,4,0);d=lh(a,(da(f|0,4,0,0)|0)<<3,0)|0;ea(c|0,d|0,4,0);if(!d){lg(a,c);c=0;break}if((da(f|0,4,0,0)|0|0)>0){e=0;while(1){g=da(b|0,4,0,0)|0|0;ea(d+(e<<3)|0,jh(a,da(g+(e<<3)|0,4,0,0)|0|0)|0|0,4,0);ea(d+(e<<3)+4|0,da(g+(e<<3)+4|0,4,0,0)|0|0,4,0);e=e+1|0;if((e|0)>=(da(f|0,4,0,0)|0|0))break a;d=da(c|0,4,0,0)|0|0}}}else c=0;while(0);return c|0}function Nr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=c+4|0;e=(da(d|0,4,0,0)|0|0)+40|0;a=lh(a,e,0)|0;if(a){ew(a|0,0,e|0)|0;e=a+40|0;jw(e|0,da(c|0,4,0,0)|0|0,da(d|0,4,0,0)|0|0)|0;ea(a+12|0,e|0,4,0);ea(a+16|0,da(d|0,4,0,0)|0|0,4,0);ea(a>>0|0,b|0,1,0)}return a|0}function Or(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;do if((b|0)!=0?(d=lh(a,8,0)|0,(d|0)!=0):0){e=da(b|0,4,0,0)|0|0;ea(d|0,e|0,4,0);if(!(c&1)){f=da(b|0,4,0,0)|0|0;e=1;while(1)if((e|0)<(f|0))e=e<<1;else break}e=lh(a,e*20|0,0)|0;ea(d+4|0,e|0,4,0);if(!e){lg(a,d);d=0;break}if((da(b|0,4,0,0)|0|0)>0){g=0;f=da(b+4|0,4,0,0)|0|0;while(1){ea(e|0,Lr(a,da(f|0,4,0,0)|0|0,c,0)|0|0,4,0);ea(e+4|0,jh(a,da(f+4|0,4,0,0)|0|0)|0|0,4,0);ea(e+8|0,jh(a,da(f+8|0,4,0,0)|0|0)|0|0,4,0);ea(e+12>>0|0,da(f+12>>0|0,1,0,0)|0|0|0,1,0);i=e+13|0;h=da(i>>0|0,1,0,0)|0|0;ea(i>>0|0,h&-2|0,1,0);ea(i>>0|0,(da(f+13>>0|0,1,0,0)|0)&2|h&-4|0,1,0);ea(e+16|0,da(f+16|0,4,0,0)|0|0,4,0);g=g+1|0;if((g|0)>=(da(b|0,4,0,0)|0|0))break;else{e=e+20|0;f=f+20|0}}}}else d=0;while(0);return d|0}function Pr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();h=n;k=da(a|0,4,0,0)|0|0;e=da(b+20|0,4,0,0)|0|0;a:do if(e){d=da(k+20|0,4,0,0)|0|0;if((d|0)>0){c=da(k+16|0,4,0,0)|0|0;g=0;while(1){f=g+1|0;if((da(c+(g<<4)+12|0,4,0,0)|0|0)==(e|0)){f=g;break a}if((f|0)<(d|0))g=f;else break}}else f=0}else f=-1e6;while(0);c=an((da(b+24|0,4,0,0)|0|0)+8|0,da(b+4|0,4,0,0)|0|0,h)|0;if(!c)e=0;else e=da(c+8|0,4,0,0)|0|0;c=da((da(k+16|0,4,0,0)|0|0)+(f<<4)|0,4,0,0)|0|0;d=(f|0)==1;if((((Rq(a,d?14:16,da(b|0,4,0,0)|0|0,da(e|0,4,0,0)|0|0,c)|0)==0?(Rq(a,9,d?13184:13208,0,c)|0)==0:0)?(l=Nq(a)|0,(l|0)!=0):0)?(m=da(a+408|0,4,0,0)|0|0,zr(a,f),m=((m|0)==0?a:m)+328|0,ea(m|0,da(m|0,4,0,0)|0|1<=(j|0))ba();h=p;n=da(a|0,4,0,0)|0|0;ea(h+0|0,0|0,4,0);ea(h+4|0,0|0,4,0);ea(h+8|0,0|0,4,0);ea(h+12|0,0|0,4,0);ea(h+16|0,0|0,4,0);ea(h+20|0,0|0,4,0);ea(h+24|0,0|0,4,0);ea(h+28|0,0|0,4,0);ea(h|0,a|0,4,0);do if(e)if((da(e>>0|0,1,0,0)|0|0)!=27)if(!(ks(h,e)|0)){o=5;break}else{o=13;break}else{ea(e>>0|0,97|0,1,0);o=5;break}else o=5;while(0);a:do if((o|0)==5){do if(f)if((da(f>>0|0,1,0,0)|0|0)!=27)if(!(ks(h,f)|0))break;else{o=13;break a}else{ea(f>>0|0,97|0,1,0);break}while(0);do if(g)if((da(g>>0|0,1,0,0)|0|0)!=27)if(!(ks(h,g)|0))break;else{o=13;break a}else{ea(g>>0|0,97|0,1,0);break}while(0);if(d){if((da(d>>0|0,1,0,0)|0|0)==97)d=da(d+8|0,4,0,0)|0|0;else d=0;if(Rq(a,b,d,0,0)|0)break}m=Nq(a)|0;h=a+60|0;d=da(h|0,4,0,0)|0|0;k=a+56|0;l=da(k|0,4,0,0)|0|0;if((l|0)<4){l=a+72|0;d=da(l|0,4,0,0)|0|0;ea(l|0,d+4|0,4,0);d=d+1|0}else{ea(h|0,d+4|0,4,0);ea(k|0,l+-4|0,4,0)}Qq(a,e,d);Qq(a,f,d+1|0);Qq(a,g,d+2|0);if(m){d=d+3|0;vh(m,1,0,d-(da(c|0,2,0,0)|0|0)|0,d)|0;d=da(m+4|0,4,0,0)|0|0;if(d)ea(d+(((da(m+32|0,4,0,0)|0|0)+-1|0)*20|0)+3>>0|0,da(c|0,2,0,0)|0|0,1,0);wh(m,-1,c,-5);vh(m,144,(b|0)==24&1,0,0)|0}}while(0);if((o|0)==13){c=a+64|0;ea(c|0,(da(c|0,4,0,0)|0|0)+1|0,4,0)}Fk(n,e);Fk(n,f);Fk(n,g);i=p;return}function Rr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;e=k+4|0;f=da(a|0,4,0,0)|0|0;a:do if(!(Fn(a)|0)){if(!b){Tt(a,0);break}if(!((c|0)!=0?(da(c|0,4,0,0)|0|0)!=0:0))d=6;do if((d|0)==6){d=Vq(da(a|0,4,0,0)|0|0,b)|0;if(!d)break a;if(!(Xn(f,da(f+62>>0|0,1,0,0)|0|0,d,0)|0)){lg(f,d);break}else{Tt(a,d);lg(f,d);break a}}while(0);b=dr(a,b,c,e)|0;if((b|0)>=0?(g=Vq(f,da(e|0,4,0,0)|0|0)|0,(g|0)!=0):0){c=da((da(f+16|0,4,0,0)|0|0)+(b<<4)|0,4,0,0)|0|0;d=Zh(f,g,c)|0;if(d){Ut(a,d,0);lg(f,g);break}c=aq(f,g,c)|0;lg(f,g);if(!c){sh(a,28872,h);break}else{d=da(a+408|0,4,0,0)|0|0;zr(a,b);d=((d|0)==0?a:d)+328|0;ea(d|0,da(d|0,4,0,0)|0|1<=(j|0))ba();e=g;f=da(a|0,4,0,0)|0|0;if(!(Fn(a)|0)){do if(!b){b=f+20|0;d=da(b|0,4,0,0)|0|0;if((d|0)>0){c=0;do{if((c|0)!=1){Vt(a,c);d=da(b|0,4,0,0)|0|0}c=c+1|0}while((c|0)<(d|0))}}else{if(da(c+4|0,4,0,0)|0){d=dr(a,b,c,e)|0;if((d|0)<=-1)break;d=da((da(f+16|0,4,0,0)|0|0)+(d<<4)|0,4,0,0)|0|0;b=Vq(f,da(e|0,4,0,0)|0|0)|0;if(!b)break;c=aq(f,b,d)|0;if(!c){d=rh(a,0,b,d)|0;if(d)Wt(a,d,0)}else Wt(a,da(c+12|0,4,0,0)|0|0,c);lg(f,b);break}c=Vq(f,b)|0;d=Uh(f,c)|0;lg(f,c);if((d|0)>-1){Vt(a,d);break}c=Vq(f,b)|0;if(c){d=aq(f,c,0)|0;if(!d){d=rh(a,0,c,0)|0;if(d)Wt(a,d,0)}else Wt(a,da(d+12|0,4,0,0)|0|0,d);lg(f,c)}}while(0);d=Nq(a)|0;if(d)vh(d,144,0,0,0)|0}i=g;return}function Tr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=da(c|0,4,0,0)|0|0;if(!e)d=c+4|0;else{h=da(a|0,4,0,0)|0|0;f=da(h+20|0,4,0,0)|0|0;h=da(h+16|0,4,0,0)|0|0;a:do if((f|0)>0){g=0;while(1){d=g+1|0;if((da(h+(g<<4)+12|0,4,0,0)|0|0)==(e|0)){d=g;break a}if((d|0)<(f|0))g=d;else break}}else d=0;while(0);d=h+(d<<4)|0}return rh(a,b,da(c+8|0,4,0,0)|0|0,da(d|0,4,0,0)|0|0)|0}function Ur(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;if(b){c=b;while(1)if(!(da(c>>0|0,1,0,0)|0))break;else c=c+1|0;if((c-b&1073741823)>>>0>6?(Ec(b,25568,7)|0)==0:0){ea(d|0,b|0,4,0);sh(a,25576,d);c=1}else c=0}else c=0;i=e;return c|0}function Vr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;if(!b){ea(d|0,c|0,4,0);a=th(a,25992,d)|0}else{ea(d|0,b|0,4,0);ea(d+4|0,c|0,4,0);d=th(a,26e3,d)|0;lg(a,b);a=d}i=e;return a|0}function Wr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;d=da(a|0,4,0,0)|0|0;e=da((da(d+16|0,4,0,0)|0|0)+28|0,4,0,0)|0|0;if((da(b+68|0,4,0,0)|0|0)!=(e|0)?(c=zs(a,b)|0,(c|0)!=0):0){b=c;c=0;do{if((da(b+20|0,4,0,0)|0|0)==(e|0))c=Vr(d,c,da(b|0,4,0,0)|0|0)|0;b=da(b+32|0,4,0,0)|0|0}while((b|0)!=0);if(c){b=da(a|0,4,0,0)|0|0;ea(f|0,c|0,4,0);b=th(b,25968,f)|0;lg(da(a|0,4,0,0)|0|0,c);c=b}else c=0}else c=0;i=g;return c|0}function Xr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();m=p;n=Nq(a)|0;if(n){d=da(a|0,4,0,0)|0|0;g=da(b+68|0,4,0,0)|0|0;a:do if(g){h=da(d+20|0,4,0,0)|0|0;if((h|0)>0){e=da(d+16|0,4,0,0)|0|0;f=0;while(1){d=f+1|0;if((da(e+(f<<4)+12|0,4,0,0)|0|0)==(g|0))break a;if((d|0)<(h|0))f=d;else{f=d;break}}}else f=0}else f=-1e6;while(0);d=zs(a,b)|0;if(d)do{e=da(a|0,4,0,0)|0|0;k=da(d+20|0,4,0,0)|0|0;b:do if(k){l=da(e+20|0,4,0,0)|0|0;if((l|0)>0){h=da(e+16|0,4,0,0)|0|0;g=0;while(1){e=g+1|0;if((da(h+(g<<4)+12|0,4,0,0)|0|0)==(k|0)){e=g;break b}if((e|0)<(l|0))g=e;else break}}else e=0}else e=-1e6;while(0);l=da(d|0,4,0,0)|0|0;wh(n,vh(n,126,e,0,0)|0,l,0);d=da(d+32|0,4,0,0)|0|0}while((d|0)!=0);d=da(b|0,4,0,0)|0|0;wh(n,vh(n,124,f,0,0)|0,d,0);d=da(a|0,4,0,0)|0|0;ea(m|0,c|0,4,0);d=th(d,25952,m)|0;if((d|0)!=0?(Hr(n,f,d),o=Wr(a,b)|0,(o|0)!=0):0)Hr(n,1,o)}i=p;return} -function fh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,aa=0,ca=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,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,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,jc=0,mc=0,nc=0,pc=0,rc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,dd=0,ed=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0;he=i;i=i+1040|0;if((i|0)>=(j|0))ba();de=he+400|0;Mc=he+792|0;Yc=he+392|0;Uc=he+788|0;Ld=he+320|0;dd=he+784|0;id=he+780|0;jd=he+280|0;Gd=he+680|0;Tc=he+240|0;Jd=he+200|0;Sc=he+676|0;Pc=he+672|0;Hd=he+160|0;Nc=he+644|0;md=he+152|0;Cd=he+112|0;_c=he+640|0;Ed=he+636|0;Qc=he+632|0;nd=he+628|0;td=he+624|0;pd=he+604|0;ud=he+600|0;hd=he+596|0;qd=he+576|0;Lc=he+840|0;vd=he+572|0;Id=he+104|0;wd=he+568|0;Wc=he+564|0;Xc=he+96|0;Kd=he+88|0;xd=he+560|0;yd=he+556|0;zd=he+552|0;rd=he+532|0;sd=he+512|0;Zc=he+508|0;od=he+504|0;Rc=he+488|0;Fd=he+48|0;Oc=he+456|0;Kc=he+444|0;Dd=he+8|0;ld=he+440|0;Bd=he+412|0;Ad=he;rc=a+4|0;f=da(rc|0,4,0,0)|0|0;ee=da(a|0,4,0,0)|0|0;Cc=da(ee+62>>0|0,1,0,0)|0|0;Gc=a+8|0;p=da(Gc|0,4,0,0)|0|0;ge=ee+32|0;c=ge;d=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;fe=a+80|0;a:do if((da(fe|0,4,0,0)|0|0)==7){o=ee+65|0;p=a+44|0;e=d;b=0;g=0;d=0;be=1317}else{ea(fe|0,0|0,4,0);Yd=a+136|0;ea(Yd|0,0|0,4,0);ea(Yd+4|0,0|0,4,0);Yd=a+20|0;ea(Yd|0,0|0,4,0);ea(ee+452|0,0|0,4,0);vc=ee+240|0;b:do if(!(da(vc|0,4,0,0)|0)){Wd=ee+292|0;if(da(Wd|0,4,0,0)|0){e=da(a+124|0,4,0,0)|0|0;b=ee+300|0;o=da(b|0,4,0,0)|0|0;if(!e)pc=b;else{pc=b;o=(e>>>0)%(o>>>0)|0}}else{pc=ee+300|0;o=0}ae=a+76|0;$d=ee+65|0;Sd=ee+296|0;lb=a+176|0;mb=a+184|0;nb=a+92|0;ob=ee+80|0;pb=ee+84|0;qb=Cc&255;rb=Cc<<24>>24==1;sb=ee+88|0;tb=a+60|0;Td=a+144|0;_d=a+86|0;ce=a+44|0;ub=a+12|0;vb=Nc+4|0;wb=Nc+16|0;xb=Nc+12|0;yb=Nc+25|0;zb=Nc+20|0;Ab=a+200|0;Bb=a+56|0;Ud=a+72|0;Cb=Cd+16|0;Db=Cd+8|0;Eb=Cd+24|0;Fb=a+87|0;Vd=ee+156|0;Gb=ee+500|0;Hb=ee+496|0;Zd=ee+63|0;Ib=ee+488|0;Jb=ee+504|0;Kb=ee+512|0;Lb=ee+70|0;Mb=ee+24|0;Nb=ee+20|0;Qd=ee+16|0;Ob=ee+4|0;Rd=a+88|0;Pb=a+104|0;Qb=a+152|0;Rb=a+160|0;Sb=ee+152|0;Tb=ee+64|0;Ub=pd+4|0;Vb=pd+6|0;Wb=pd+8|0;Xb=qd+4|0;Yb=qd+8|0;Zb=ee+212|0;_b=ee+208|0;bc=a+116|0;cc=rd+4|0;dc=rd+6|0;ec=rd+8|0;fc=Tc+8|0;gc=Tc+32|0;hc=Tc+24|0;jc=Tc+16|0;mc=Tc+12|0;nc=sd+4|0;O=sd+6|0;P=sd+8|0;Q=jd+8|0;R=jd+32|0;S=jd+24|0;T=jd+12|0;U=jd+16|0;V=ee+164|0;W=Rc+8|0;X=Rc+4|0;Y=ee+145|0;aa=Rc+12|0;ca=Ld+4|0;ga=Ld+12|0;ha=Ld+16|0;ia=Ld+20|0;ja=Ld+24|0;ka=Ld+28|0;la=Ld+8|0;ma=Ld+40|0;na=Ld+44|0;oa=Ld+48|0;pa=Ld+52|0;qa=Ld+56|0;ra=Ld+60|0;sa=Ld+64|0;ta=Ld+65|0;ua=ee+128|0;va=a+28|0;wa=a+36|0;xa=a+32|0;ya=a+196|0;za=Oc+4|0;Aa=Oc+8|0;Ba=Fd+8|0;Ca=Fd+32|0;Da=Fd+24|0;Ea=Oc+20|0;Fa=Oc+12|0;Ga=Oc+16|0;Ha=Oc+24|0;Ia=Kc+8|0;Ja=Kc+4|0;Ka=ee+148|0;La=ee+176|0;Ma=ee+72|0;Na=ee+67|0;Oa=Mc+20|0;Pa=Mc+24|0;Qa=Mc+4|0;Ra=Mc+16|0;Sa=ee+304|0;Ta=ee+328|0;Ua=Dd+32|0;Va=Dd+8|0;Wa=Dd+24|0;Xa=ee+308|0;Ya=Bd+20|0;Za=ee+69|0;Xd=a+168|0;_a=jd+4|0;$a=jd+8|0;ab=jd+12|0;bb=jd+16|0;cb=jd+20|0;db=jd+24|0;eb=jd+25|0;fb=ee+180|0;gb=Hd+32|0;hb=Hd+8|0;ib=Hd+12|0;jb=Hd+16|0;kb=Hd+24|0;K=0;L=0;b=0;h=0;g=da(ae|0,4,0,0)|0|0;n=0;c:while(1){e=d;d:while(1){if(da($d>>0|0,1,0,0)|0){o=$d;p=ce;d=n;be=1317;break a}d=b+1|0;if(!((da(f+(g*20|0)+2>>0|0,1,0,0)|0)&2))A=h;else{h=da(f+(g*20|0)+8|0,4,0,0)|0|0;b=p+(h*40|0)|0;h=p+(h*40|0)+8|0;if((da(h|0,2,0,0)|0)&9312)ug(b);ea(h|0,4|0,2,0);A=b}s=f+(g*20|0)|0;y=da(s>>0|0,1,0,0)|0|0;h=y&255;e:do switch(h|0){case 20:{b=d;d=e;be=24;break d}case 21:{b=d;d=e;h=A;be=25;break d}case 22:{b=d;d=e;h=A;be=26;break d}case 29:{b=d;d=e;e=g;be=65;break d}case 30:{b=d;d=e;h=A;e=g;be=66;break d}case 28:{b=d;d=e;h=A;e=g;be=60;break d}case 32:{b=d;d=e;e=g;be=72;break d}case 17:{b=d;d=e;h=A;be=22;break d}case 18:{b=d;d=e;h=A;be=23;break d}case 23:{b=d;d=e;h=A;e=g;be=27;break d}case 24:{b=d;d=e;h=A;e=g;be=28;break d}case 25:{b=d;d=e;h=A;e=g;be=44;break d}case 26:{b=d;d=e;h=A;e=g;be=45;break d}case 133:{b=d;d=e;h=A;e=g;be=46;break d}case 97:{ea(s>>0|0,27|0,1,0);s=f+(g*20|0)+16|0;l=da(s|0,4,0,0)|0|0;if(!l)b=0;else{b=l;while(1)if(!(da(b>>0|0,1,0,0)|0))break;else b=b+1|0;b=b-l&1073741823}m=f+(g*20|0)+4|0;ea(m|0,b|0,4,0);if(rb)h=0;else{h=Wg(A,l,-1,1,0)|0;if((h|0)==18){b=d;d=e;h=n;be=1316;break c}if(Xl(A,qb)|0){o=$d;p=ce;b=d;d=n;be=1317;break a}ea(A+24|0,0|0,4,0);b=A+8|0;ea(b|0,da(b|0,2,0,1)|0|2048|0,2,0);b=f+(g*20|0)+1|0;if((da(b>>0|0,1,0,0)|0|0)==-1)lg(ee,da(s|0,4,0,0)|0|0);ea(b>>0|0,-1|0,1,0);l=da(A+16|0,4,0,0)|0|0;ea(s|0,l|0,4,0);b=da(A+12|0,4,0,0)|0|0;ea(m|0,b|0,4,0)}if((b|0)>(da(sb|0,4,0,0)|0|0)){b=d;d=e;h=n;be=1316;break c}else be=57;break}case 31:{b=d;d=e;h=A;e=g;be=67;break d}case 34:{b=d;d=e;e=g;be=79;break d}case 35:{b=d;d=e;h=n;be=80;break c}case 33:{b=d;d=e;be=74;break d}case 94:{b=d;d=e;be=94;break d}case 93:case 92:case 91:case 90:case 89:{b=d;F=s;d=e;e=g;be=112;break d}case 27:{l=da(f+(g*20|0)+16|0,4,0,0)|0|0;b=da(f+(g*20|0)+4|0,4,0,0)|0|0;h=0;be=57;break}case 16:{g=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;h=0;be=19;break}case 36:{b=d;d=e;y=A;e=g;be=166;break d}case 1:{J=da(f+(g*20|0)+3>>0|0,1,0,0)|0|0;s=J&255;q=da(ub|0,4,0,0)|0|0;b=p+((da(f+(g*20|0)+12|0,4,0,0)|0|0)*40|0)|0;ea(Nc|0,b|0,4,0);if(J<<24>>24){b=0;h=p+((da(f+(g*20|0)+8|0,4,0,0)|0|0)*40|0)|0;while(1){ea(q+(b<<2)|0,h|0,4,0);if(((da(h+8|0,2,0,0)|0)&4096)!=0?(Ul(h)|0)!=0:0){o=$d;p=ce;b=d;d=n;be=1317;break a}b=b+1|0;if((b|0)>=(s|0))break;else h=h+40|0}b=da(Nc|0,4,0,0)|0|0}J=da(f+(g*20|0)+16|0,4,0,0)|0|0;ea(vb|0,J|0,4,0);ea(wb|0,g|0,4,0);ea(xb|0,a|0,4,0);I=b+8|0;ea(I|0,(da(I|0,2,0,1)|0)&48640|1|0,2,0);ea(yb>>0|0,0|0,1,0);I=ge;ea(I|0,e|0,4,0);ea(I+4|0,c|0,4,0);lc[(fa(da(J+12|0,4,0,0)|0|0,63|0)|0)&63](Nc,s,q);c=ge;e=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;if(!(da(yb>>0|0,1,0,0)|0))b=0;else{if(!(da(zb|0,4,0,0)|0))b=0;else{ea(de|0,Rg(da(Nc|0,4,0,0)|0|0,1)|0|0,4,0);ch(ce,ee,10344,de);b=da(zb|0,4,0,0)|0|0}dm(a,g,da(f+(g*20|0)+4|0,4,0,0)|0|0)}Xl(da(Nc|0,4,0,0)|0|0,qb)|0;m=da(Nc|0,4,0,0)|0|0;l=da(m+8|0,2,0,1)|0|0;if(l&18){h=da(m+12|0,4,0,0)|0|0;if(l&16384)h=(da(m|0,4,0,0)|0|0)+h|0;if((h|0)>(da((da(m+32|0,4,0,0)|0|0)+88|0,4,0,0)|0|0)){b=d;d=e;h=n;be=1316;break c}else{s=A;H=g;h=b}}else{s=A;H=g;h=b}break}case 88:case 87:case 86:case 85:{b=d;w=s;d=e;e=g;be=184;break d}case 39:{b=d;d=e;y=A;e=g;be=208;break d}case 37:{b=d;d=e;h=A;e=g;be=202;break d}case 38:{b=d;d=e;y=A;e=g;be=203;break d}case 83:case 80:case 81:case 82:case 78:case 79:{b=d;x=y;d=e;h=A;be=213;break d}case 40:{J=da(f+(g*20|0)+4|0,4,0,0)|0|0;b=p+(J*40|0)|0;if(!((da(p+(J*40|0)+8|0,2,0,0)|0)&16384))h=0;else h=Qg(b)|0;fm(b,(da(f+(g*20|0)+8|0,4,0,0)|0)&255,Cc);s=A;H=g;break}case 41:{b=d;d=e;h=A;e=g;be=248;break d}case 42:{b=d;d=e;h=A;e=g;be=249;break d}case 43:{b=d;d=e;h=A;be=256;break d}case 71:case 72:{b=d;d=e;e=g;be=261;break d}case 76:{b=d;d=e;h=A;e=g;be=286;break d}case 19:{b=d;d=e;e=g;be=268;break d}case 96:{b=d;d=e;e=g;be=273;break d}case 44:{b=d;d=e;h=A;e=g;be=278;break d}case 46:case 45:{b=d;d=e;h=A;e=g;be=281;break d}case 77:{b=d;d=e;h=A;e=g;be=288;break d}case 47:{b=d;d=e;h=A;be=290;break d}case 48:{b=d;d=e;h=A;e=g;be=368;break d}case 49:{b=d;d=e;be=371;break d}case 50:{u=da(da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0,4,0,0)|0|0;f:do if(da(u+60|0,4,0,0)|0){b=pm(u)|0;if(!b){z=u+76|0;w=u+44|0;v=u+72|0;l=0;h=0;g:while(1){s=da(z|0,2,0,0)|0|0;y=da(u+(s<<16>>16<<2)+120|0,4,0,0)|0|0;if(!(da(y+5>>0|0,1,0,0)|0)){if(!(da(y+2>>0|0,1,0,0)|0)){l=iw(da(y+18|0,2,0,1)|0|0,0,l|0,h|0)|0;h=C}}else{l=iw(da(y+18|0,2,0,1)|0|0,0,l|0,h|0)|0;h=C;while(1){if(!(s<<16>>16))break g;if(y){Ag(da(y+68|0,4,0,0)|0|0);s=da(z|0,2,0,0)|0|0}s=s+-1<<16>>16;ea(z|0,s|0,2,0);ea(w|0,0|0,2,0);ea(v>>0|0,(da(v>>0|0,1,0,1)|0)&249|0,1,0);y=s<<16>>16;q=u+(y<<1)+78|0;x=da(q|0,2,0,0)|0|0;y=da(u+(y<<2)+120|0,4,0,0)|0|0;if((x&65535)<(da(y+18|0,2,0,1)|0|0)){s=x;break}}ea(q|0,s+1<<16>>16|0,2,0);y=da(z|0,2,0,0)|0|0;s=y;y=da(u+(y<<16>>16<<2)+120|0,4,0,0)|0|0}s=da(u+(s<<16>>16<<1)+78|0,2,0,0)|0|0;q=da(y+56|0,4,0,0)|0|0;if(s<<16>>16==(da(y+18|0,2,0,0)|0|0)){b=da(y+6>>0|0,1,0,1)|0|0;b=qm(u,(da(q+(b+9)>>0|0,1,0,1)|0)<<16|(da(q+(b+8)>>0|0,1,0,1)|0)<<24|(da(q+(b+10)>>0|0,1,0,1)|0)<<8|(da(q+(b+11)>>0|0,1,0,1)|0))|0}else{b=(s&65535)<<1;J=da(y+64|0,4,0,0)|0|0;b=((da(J+b>>0|0,1,0,1)|0)<<8|(da(J+(b|1)>>0|0,1,0,1)|0))&(da(y+20|0,2,0,1)|0);b=qm(u,(da(q+(b+1)>>0|0,1,0,1)|0)<<16|(da(q+b>>0|0,1,0,1)|0)<<24|(da(q+(b+2)>>0|0,1,0,1)|0)<<8|(da(q+(b+3)>>0|0,1,0,1)|0))|0}if(b){l=0;h=0;break f}}b=pm(u)|0}else{l=0;h=0}}else{b=0;l=0;h=0}while(0);s=A;ea(s|0,l|0,4,0);ea(s+4|0,h|0,4,0);s=A;H=g;h=b;break}case 2:{E=da(f+(g*20|0)+4|0,4,0,0)|0|0;l=da(f+(g*20|0)+16|0,4,0,0)|0|0;if(!E){b=d;d=e;e=g;be=446;break d}b=da(Ib|0,4,0,0)|0|0;if(!b){f=l;b=d;d=e;h=n;be=460;break c}else h=0;while(1){if(!(cd(da(b|0,4,0,0)|0|0,l)|0)){B=b;break}b=da(b+24|0,4,0,0)|0|0;if(!b){f=l;b=d;d=e;h=n;be=460;break c}else h=h+1|0}w=(E|0)==1;if((da(Vd|0,4,0,0)|0|0)>0&w){b=d;d=e;h=n;be=462;break c}v=B+24|0;if(!(da(v|0,4,0,0)|0)){q=(da(Lb>>0|0,1,0,0)|0|0)!=0;if(q&w){b=sm(a,1)|0;if(b)break a;ea(Zd>>0|0,1|0,1,0);if((Ql(a)|0)==5){b=g;be=467;break c}ea(Lb>>0|0,0|0,1,0);q=1;z=h;h=da(fe|0,4,0,0)|0|0}else be=469}else{q=0;be=469}if((be|0)==469){be=0;z=(da(Hb|0,4,0,0)|0|0)-h+-1|0;if((E|0)==2){s=(da(Mb|0,4,0,0)|0|0)>>>1&1;if((da(Nb|0,4,0,0)|0|0)>0){y=s^1;x=0;while(1){h=Hl(da((da(Qd|0,4,0,0)|0|0)+(x<<4)+4|0,4,0,0)|0|0,516,y)|0;x=x+1|0;if(h){b=d;d=e;be=1318;break c}b=da(Nb|0,4,0,0)|0|0;if((x|0)>=(b|0)){be=475;break}}}}else{b=da(Nb|0,4,0,0)|0|0;s=0;be=475}if((be|0)==475){be=0;if((b|0)>0){u=0;do{h=tm(da((da(Qd|0,4,0,0)|0|0)+(u<<4)+4|0,4,0,0)|0|0,E,z)|0;u=u+1|0;if(h){b=d;d=e;be=1318;break c}}while((u|0)<(da(Nb|0,4,0,0)|0|0))}}if(!s)h=0;else{s=da(Ob|0,4,0,0)|0|0;if(s)do{J=s+88|0;ea(J|0,da(J|0,2,0,0)|0|8|0,2,0);s=da(s+52|0,4,0,0)|0|0}while((s|0)!=0);Dg(ee);ea(Mb|0,da(Mb|0,4,0,0)|0|2|0,4,0);h=0}}s=da(Ib|0,4,0,0)|0|0;if((s|0)!=(B|0))do{ea(Ib|0,da(s+24|0,4,0,0)|0|0,4,0);lg(ee,s);ea(Hb|0,(da(Hb|0,4,0,0)|0|0)+-1|0,4,0);s=da(Ib|0,4,0,0)|0|0}while((s|0)!=(B|0));if(w){ea(Ib|0,da(v|0,4,0,0)|0|0,4,0);lg(ee,B);if(q){s=A;H=g;break e}else{b=d;s=E;d=e;q=z;u=A;e=g;be=486;break d}}else{I=B+8|0;H=da(I+4|0,4,0,0)|0|0;J=Jb;ea(J|0,da(I|0,4,0,0)|0|0,4,0);ea(J+4|0,H|0,4,0);H=B+16|0;J=da(H+4|0,4,0,0)|0|0;I=Kb;ea(I|0,da(H|0,4,0,0)|0|0,4,0);ea(I+4|0,J|0,4,0);if(q){s=A;H=g;break e}else{s=E;b=d;d=e;q=z;u=A;e=g;be=488;break d}}}case 3:{h=n;be=489;break c}case 4:{l=f+(g*20|0)+8|0;b=da(l|0,4,0,0)|0|0;if((b|0)!=0?((da(Mb|0,4,0,0)|0)&33554432|0)!=0:0){b=d;d=e;h=8;be=1318;break c}x=f+(g*20|0)+4|0;y=da((da(Qd|0,4,0,0)|0|0)+((da(x|0,4,0,0)|0)<<4)+4|0,4,0,0)|0|0;if(!y){l=0;h=0;b=0}else{h=xg(y,b)|0;if((h|0)==5){b=g;be=508;break c}else if(h){b=d;d=e;be=1318;break c}do if((da(l|0,4,0,0)|0|0)!=0?((da(Rd|0,2,0,0)|0)&32)!=0:0){if((da(Zd>>0|0,1,0,0)|0|0)!=0?(da(Sb|0,4,0,0)|0|0)<=1:0){b=0;break}b=da(Pb|0,4,0,0)|0|0;if(!b){b=(da(Gb|0,4,0,0)|0|0)+1|0;ea(Gb|0,b|0,4,0);b=(da(Hb|0,4,0,0)|0|0)+b|0;ea(Pb|0,b|0,4,0)}b=rm(ee,0,b+-1|0)|0;if(!b){b=da(Pb|0,4,0,0)|0|0;J=da(y+4|0,4,0,0)|0|0;ea(J+4|0,da(y|0,4,0,0)|0|0,4,0);b=gl(da(J|0,4,0,0)|0|0,b)|0}I=Jb;H=da(I+4|0,4,0,0)|0|0;J=Qb;ea(J|0,da(I|0,4,0,0)|0|0,4,0);ea(J+4|0,H|0,4,0);H=Kb;J=da(H+4|0,4,0,0)|0|0;I=Rb;ea(I|0,da(H|0,4,0,0)|0|0,4,0);ea(I+4|0,J|0,4,0)}else b=0;while(0);l=da(y+4|0,4,0,0)|0|0;ea(l+4|0,da(y|0,4,0,0)|0|0,4,0);l=da((da(l+12|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;l=(da(l+41>>0|0,1,0,1)|0)<<16|(da(l+40>>0|0,1,0,1)|0)<<24|(da(l+42>>0|0,1,0,1)|0)<<8|(da(l+43>>0|0,1,0,1)|0);h=da((da((da(Qd|0,4,0,0)|0|0)+((da(x|0,4,0,0)|0)<<4)+12|0,4,0,0)|0|0)+4|0,4,0,0)|0|0}if(da(f+(g*20|0)+3>>0|0,1,0,0)|0){if((l|0)!=(da(f+(g*20|0)+12|0,4,0,0)|0|0)){b=d;f=x;d=e;h=n;be=522;break c}if((h|0)!=(da(f+(g*20|0)+16|0,4,0,0)|0|0)){b=d;f=x;d=e;h=n;be=522;break c}else{s=A;H=g;h=b}}else{s=A;H=g;h=b}break}case 53:{b=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;if((b|0)!=0?(da(b+28|0,4,0,0)|0|0)==(da(f+(g*20|0)+8|0,4,0,0)|0|0):0){l=f+(g*20|0)+3|0;h=0;be=548}else be=536;break}case 51:{b=d;d=e;h=A;e=g;be=525;break d}case 52:{q=f+(g*20|0)+4|0;b=da(q|0,4,0,0)|0|0;l=da(Qd|0,4,0,0)|0|0;s=da(f+(g*20|0)+12|0,4,0,0)|0|0;m=p+(s*40|0)|0;h=Ug(m)|0;J=m;ea(J|0,h|0,4,0);ea(J+4|0,C|0,4,0);s=p+(s*40|0)+8|0;ea(s|0,(da(s|0,2,0,1)|0)&48640|4|0,2,0);s=f+(g*20|0)+8|0;h=Cg(da(l+(b<<4)+4|0,4,0,0)|0|0,da(s|0,4,0,0)|0|0,h)|0;s=da(s|0,4,0,0)|0|0;if((s|0)==1){ea(da(l+(b<<4)+12|0,4,0,0)|0|0,da(m|0,4,0,0)|0|0,4,0);ea(Mb|0,da(Mb|0,4,0,0)|0|2|0,4,0)}else if((s|0)==2)ea((da(l+(b<<4)+12|0,4,0,0)|0|0)+76>>0|0,da(m|0,4,0,0)|0|0,1,0);if((da(q|0,4,0,0)|0|0)==1){b=da(Ob|0,4,0,0)|0|0;if(b)do{J=b+88|0;ea(J|0,da(J|0,2,0,0)|0|8|0,2,0);b=da(b+52|0,4,0,0)|0|0}while((b|0)!=0);ea(Rd|0,(da(Rd|0,2,0,0)|0)&-9|0,2,0);s=A;H=g}else{s=A;H=g}break}case 55:case 54:{be=536;break}case 57:case 56:{b=wm(a,da(f+(g*20|0)+4|0,4,0,0)|0|0,da(f+(g*20|0)+8|0,4,0,0)|0|0,-1,1)|0;if(!b){o=$d;p=ce;b=d;d=n;be=1317;break a}ea(b+25>>0|0,1|0,1,0);y=b+27|0;ea(y>>0|0,da(y>>0|0,1,0,0)|0|1|0,1,0);l=b+4|0;x=f+(g*20|0)+3|0;h=ym(da(ee|0,4,0,0)|0|0,0,ee,l,da(x>>0|0,1,0,1)|0|5,1054)|0;do if(!h){h=xg(da(l|0,4,0,0)|0|0,1)|0;if(!h){q=da(f+(g*20|0)+16|0,4,0,0)|0|0;s=da(l|0,4,0,0)|0|0;if(!q){h=xm(s,1,1,0,da(b|0,4,0,0)|0|0)|0;ea(y>>0|0,da(y>>0|0,1,0,0)|0|4|0,1,0);break}h=zm(s,nd,da(x>>0|0,1,0,1)|0|2)|0;if(!h){ea(b+8|0,q|0,4,0);h=xm(da(l|0,4,0,0)|0|0,da(nd|0,4,0,0)|0|0,1,q,da(b|0,4,0,0)|0|0)|0}ea(y>>0|0,(da(y>>0|0,1,0,0)|0)&-5|0,1,0)}}while(0);ea(y>>0|0,((da(x>>0|0,1,0,0)|0|0)!=8&1)<<3&255|(da(y>>0|0,1,0,0)|0)&-9|0,1,0);s=A;H=g;break}case 58:{b=d;d=e;be=558;break d}case 60:{b=d;d=e;h=A;be=568;break d}case 61:{b=d;d=e;h=A;e=g;be=570;break d}case 59:{b=d;d=e;h=A;e=g;be=566;break d}case 65:case 64:case 63:case 62:{b=d;z=h;d=e;e=g;be=571;break d}case 66:{b=d;d=e;h=A;e=g;be=596;break d}case 69:case 68:case 67:{b=d;w=s;d=e;h=A;be=597;break d}case 73:{b=d;d=e;h=A;e=g;be=624;break d}case 70:{l=da(f+(g*20|0)+12|0,4,0,0)|0|0;b=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;h=da(b|0,4,0,0)|0|0;ea(vd|0,0|0,4,0);l=p+(l*40|0)|0;I=da(l|0,4,0,0)|0|0;l=da(l+4|0,4,0,0)|0|0;h=Bm(h,0,I,l,0,vd)|0;J=b+48|0;ea(J|0,I|0,4,0);ea(J+4|0,l|0,4,0);ea(b+25>>0|0,0|0,1,0);ea(b+60|0,0|0,4,0);ea(b+26>>0|0,0|0,1,0);l=da(vd|0,4,0,0)|0|0;if(l)g=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;ea(b+12|0,l|0,4,0);s=A;H=g;break}case 74:{w=Id;ea(w|0,0|0,4,0);ea(w+4|0,0|0,4,0);ea(wd|0,0|0,4,0);w=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;b=da(w|0,4,0,0)|0|0;if(!b){h=0;l=0;b=0}else{z=w+27|0;do if(!((da(z>>0|0,1,0,0)|0)&2)){h=Gm(b,wd)|0;if(h){b=d;d=e;be=1318;break c}if(da(wd|0,4,0,0)|0){J=Id;ea(J|0,1|0,4,0);ea(J+4|0,0|0,4,0);break}jm(da(w|0,4,0,0)|0|0,Id);h=Id;b=da(h|0,4,0,0)|0|0;h=da(h+4|0,4,0,0)|0|0;if((b|0)==-1&(h|0)==2147483647){ea(z>>0|0,da(z>>0|0,1,0,0)|0|2|0,1,0);break}else{I=iw(b|0,h|0,1,0)|0;J=Id;ea(J|0,I|0,4,0);ea(J+4|0,C|0,4,0);break}}while(0);y=da(f+(g*20|0)+12|0,4,0,0)|0|0;if(y){b=da(lb|0,4,0,0)|0|0;if(!b)s=p;else{while(1){h=da(b+4|0,4,0,0)|0|0;if(!h)break;else b=h}s=da(b+16|0,4,0,0)|0|0}x=s+(y*40|0)|0;q=Ug(x)|0;b=C;J=x;ea(J|0,q|0,4,0);ea(J+4|0,b|0,4,0);J=s+(y*40|0)+8|0;ea(J|0,(da(J|0,2,0,1)|0)&48640|4|0,2,0);if((q|0)==-1&(b|0)==2147483647){b=d;d=e;h=13;be=1318;break c}if((da(z>>0|0,1,0,0)|0)&2){b=d;d=e;h=13;be=1318;break c}y=Id;h=da(y|0,4,0,0)|0|0;y=da(y+4|0,4,0,0)|0|0;s=iw(q|0,b|0,1,0)|0;b=C;if((y|0)<(b|0)|(y|0)==(b|0)&h>>>0>>0){J=Id;ea(J|0,s|0,4,0);ea(J+4|0,b|0,4,0)}else{s=h;b=y}J=x;ea(J|0,s|0,4,0);ea(J+4|0,b|0,4,0)}h:do if(!((da(z>>0|0,1,0,0)|0)&2))b=0;else{h=0;while(1){bd(8,Id);J=Id;J=iw(da(J|0,4,0,0)|0|0,(da(J+4|0,4,0,0)|0)&1073741823|0,1,0)|0;b=C;I=Id;ea(I|0,J|0,4,0);ea(I+4|0,b|0,4,0);b=Bm(da(w|0,4,0,0)|0|0,0,J,b,0,wd)|0;if(da(wd|0,4,0,0)|0|b)break h;h=h+1|0;if((h|0)>=100){b=d;d=e;h=13;be=1318;break c}}}while(0);ea(w+26>>0|0,0|0,1,0);ea(w+60|0,0|0,4,0);l=Id;h=da(l|0,4,0,0)|0|0;l=da(l+4|0,4,0,0)|0|0}s=A;ea(s|0,h|0,4,0);ea(s+4|0,l|0,4,0);s=A;H=g;h=b;break}case 84:case 75:{b=d;s=y;d=e;h=A;e=g;be=647;break d}case 95:{b=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;h=Im(da(b|0,4,0,0)|0|0)|0;ea(b+60|0,0|0,4,0);if((((h|0)==0?(zc=da(Zb|0,4,0,0)|0|0,(zc|0)!=0):0)?(Ac=da(f+(g*20|0)+16|0,4,0,0)|0|0,(Ac|0)!=0):0)?((da(b+27>>0|0,1,0,0)|0)&4)!=0:0){J=b+48|0;ac[(fa(zc|0,1|0)|0)&1](da(_b|0,4,0,0)|0|0,9,da((da(Qd|0,4,0,0)|0|0)+((da(b+24>>0|0,1,0,0)|0)<<4)|0,4,0,0)|0|0,Ac,da(J|0,4,0,0)|0|0,da(J+4|0,4,0,0)|0|0)}if(!((da(f+(g*20|0)+8|0,4,0,0)|0)&1)){s=A;H=g}else{ea(nb|0,(da(nb|0,4,0,0)|0|0)+1|0,4,0);s=A;H=g}break}case 98:{b=d;d=e;h=A;e=g;be=671;break d}case 99:{b=d;d=e;h=A;e=g;be=672;break d}case 100:{l=da(f+(g*20|0)+8|0,4,0,0)|0|0;s=p+(l*40|0)|0;b=da((da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;if(!(da(b+56>>0|0,1,0,0)|0)){h=da(b+36|0,4,0,0)|0|0;b=h;h=h+8|0}else{J=da(b+20|0,4,0,0)|0|0;h=da((da(J+8|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;J=da(J+12|0,4,0,0)|0|0;b=J+(h*56|0)+20|0;h=da(J+(h*56|0)+32|0,4,0,0)|0|0}b=da(b|0,4,0,0)|0|0;if(!(eh(s,b)|0)){ea(p+(l*40|0)+12|0,b|0,4,0);J=p+(l*40|0)+8|0;ea(J|0,(da(J|0,2,0,1)|0)&48640|16|0,2,0);jw(da(p+(l*40|0)+16|0,4,0,0)|0|0,h|0,b|0)|0;h=0}else h=7;ea((da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+12|0,4,0,0)|0)<<2)|0,4,0,0)|0|0)+60|0,0|0,4,0);H=g;break}case 102:case 101:{l=da(f+(g*20|0)+8|0,4,0,0)|0|0;y=p+(l*40|0)|0;q=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;s=da(q|0,4,0,0)|0|0;q=q+27|0;if((da(q>>0|0,1,0,0)|0)&4){km(s,Wc);b=da(Wc|0,4,0,0)|0|0;if(b>>>0>(da(sb|0,4,0,0)|0|0)>>>0){b=d;d=e;h=n;be=1316;break c}}else{jm(s,Xc);H=Xc;b=da(H|0,4,0,0)|0|0;H=da(H+4|0,4,0,0)|0|0;J=da(sb|0,4,0,0)|0|0;I=((J|0)<0)<<31>>31;if((H|0)>(I|0)|(H|0)==(I|0)&b>>>0>J>>>0){b=d;d=e;h=n;be=1316;break c}ea(Wc|0,b|0,4,0)}if(eh(y,b>>>0>32?b:32)|0){o=$d;p=ce;b=d;d=n;be=1317;break a}ea(p+(l*40|0)+12|0,b|0,4,0);b=p+(l*40|0)+8|0;ea(b|0,(da(b|0,2,0,1)|0)&48640|16|0,2,0);b=da(Wc|0,4,0,0)|0|0;h=da(p+(l*40|0)+16|0,4,0,0)|0|0;if(!((da(q>>0|0,1,0,0)|0)&4))h=Km(s,0,b,h,0)|0;else h=Ch(s,0,b,h)|0;ea(p+(l*40|0)+10>>0|0,1|0,1,0);s=y;H=g;break}case 103:{l=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;m=l+25|0;if(da(m>>0|0,1,0,0)|0){b=d;d=e;h=A;e=g;be=700;break d}do if(!(da(l+26>>0|0,1,0,0)|0)){b=da(l+32|0,4,0,0)|0|0;if(b){J=da(b|0,4,0,0)|0|0;h=qc[(fa(da((da(J|0,4,0,0)|0|0)+48|0,4,0,0)|0|0,127|0)|0)&127](b,Kd)|0;Lm(a,J);break}if((da((da(l|0,4,0,0)|0|0)+73>>0|0,1,0,0)|0|0)!=1){h=im(l)|0;if(h){b=d;d=e;be=1318;break c}if(da(m>>0|0,1,0,0)|0){b=d;d=e;h=A;e=g;be=708;break d}}jm(da(l|0,4,0,0)|0|0,Kd);h=0}else{I=l+48|0;h=da(I+4|0,4,0,0)|0|0;J=Kd;ea(J|0,da(I|0,4,0,0)|0|0,4,0);ea(J+4|0,h|0,4,0);h=0}while(0);J=Kd;s=da(J+4|0,4,0,0)|0|0;H=A;ea(H|0,da(J|0,4,0,0)|0|0,4,0);ea(H+4|0,s|0,4,0);s=A;H=g;break}case 108:{be=715;break}case 104:{b=d;d=e;h=A;e=g;be=711;break d}case 107:case 106:{ea(bc|0,(da(bc|0,4,0,0)|0|0)+1|0,4,0);be=715;break}case 105:{H=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;h=da(H|0,4,0,0)|0|0;ea(xd|0,0|0,4,0);h=Gm(h,xd)|0;J=da(xd|0,4,0,0)|0|0;ea(H+25>>0|0,J|0,1,0);ea(H+26>>0|0,0|0,1,0);ea(H+60|0,0|0,4,0);H=da(f+(g*20|0)+8|0,4,0,0)|0|0;s=A;H=(H|0)>0&(J|0)!=0?H+-1|0:g;break}case 7:case 6:{if(!(da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0)){b=d;d=e;G=p;H=f;I=K;J=L;h=A;e=g;break d}else be=765;break}case 5:{b=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;ea(yd|0,0|0,4,0);m=da(b+56|0,4,0,0)|0|0;if(da(m+56>>0|0,1,0,0)|0){h=Vm(da(m+20|0,4,0,0)|0|0,yd)|0;be=766;break e}h=m+36|0;l=da(h|0,4,0,0)|0|0;J=l+4|0;ea(h|0,da(J|0,4,0,0)|0|0,4,0);ea(J|0,0|0,4,0);if(!((da(m+40|0,4,0,0)|0|0)!=0|(l|0)==0))lg(ee,l);ea(yd|0,(da(h|0,4,0,0)|0|0)==0&1|0,4,0);h=0;be=766;break}case 9:case 8:{be=765;break}case 110:case 109:{q=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;G=da(f+(g*20|0)+8|0,4,0,0)|0|0;h=da(q|0,4,0,0)|0|0;s=f+(g*20|0)+3|0;if((da(s>>0|0,1,0,0)|0)&1)ea(nb|0,(da(nb|0,4,0,0)|0|0)+1|0,4,0);if(((da(p+(G*40|0)+8|0,2,0,0)|0)&16384)!=0?(Nd=Qg(p+(G*40|0)|0)|0,(Nd|0)!=0):0){b=d;d=e;f=Nd;h=n;be=1309;break c}v=da(q+56|0,4,0,0)|0|0;H=p+(G*40|0)+12|0;F=da(H|0,4,0,0)|0|0;if(!v){if(!((da(s>>0|0,1,0,0)|0)&16))b=0;else b=da(q+12|0,4,0,0)|0|0;h=Hm(h,da(p+(G*40|0)+16|0,4,0,0)|0|0,F,((F|0)<0)<<31>>31,10360,0,0,da(f+(g*20|0)+12|0,4,0,0)|0|0,b)|0;ea(q+60|0,0|0,4,0);s=A;H=g;break e}s=F;b=((F|0)<0)<<31>>31;q=0;do{q=q+1|0;s=lw(s|0,b|0,7)|0;b=C}while(((s|0)!=0|(b|0)!=0)&(q|0)<9);z=F+8|0;w=q+F|0;q=v+4|0;y=da(q|0,4,0,0)|0|0;do if(!y)h=0;else{if(!(da(v+40|0,4,0,0)|0)){s=v+44|0;x=da(s|0,4,0,0)|0|0;if((x|0)<=(y|0)?!((da(2265*4|0,4,0,0)|0|0)!=0?(x|0)>(da(v|0,4,0,0)|0|0):0):0){h=0;break}}else{J=da(v+48|0,4,0,0)|0|0;if(!((J|0)!=0&(J+z|0)>(y|0))){h=0;break}s=v+44|0}h=Nm(v)|0;ea(s|0,0|0,4,0);ea(v+48|0,0|0,4,0)}while(0);s=v+36|0;y=v+44|0;ea(y|0,(da(y|0,4,0,0)|0|0)+w|0,4,0);y=v+8|0;if((w|0)>(da(y|0,4,0,0)|0|0))ea(y|0,w|0,4,0);u=v+40|0;y=da(u|0,4,0,0)|0|0;if(!y){b=pg(z,((z|0)<0)<<31>>31)|0;if(!b){b=d;d=e;f=7;h=n;be=1309;break c}ea(b+4|0,da(s|0,4,0,0)|0|0,4,0)}else{B=v+48|0;x=da(B|0,4,0,0)|0|0;z=x+z|0;v=v+52|0;w=da(v|0,4,0,0)|0|0;if((z|0)>(w|0)){x=w;do x=x<<1;while((x|0)<(z|0));J=da(q|0,4,0,0)|0|0;x=(x|0)>(J|0)?J:x;x=(x|0)<(z|0)?z:x;y=qg(y,x,((x|0)<0)<<31>>31)|0;if(!y){b=d;d=e;f=7;h=n;be=1309;break c}q=y+((da(s|0,4,0,0)|0|0)-(da(u|0,4,0,0)|0|0))|0;ea(s|0,q|0,4,0);ea(u|0,y|0,4,0);ea(v|0,x|0,4,0);x=da(B|0,4,0,0)|0|0}else q=da(s|0,4,0,0)|0|0;ea(B|0,x+(F+15&-8)|0,4,0);ea(y+(x+4)|0,q-y|0,4,0);b=y+x|0}jw(b+8|0,da(p+(G*40|0)+16|0,4,0,0)|0|0,da(H|0,4,0,0)|0|0)|0;ea(b|0,da(H|0,4,0,0)|0|0,4,0);ea(s|0,b|0,4,0);s=A;H=g;break}case 112:{b=d;d=e;e=g;be=801;break d}case 111:{l=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;b=da(l|0,4,0,0)|0|0;ea(rd|0,da(l+8|0,4,0,0)|0|0,4,0);ea(cc|0,da(f+(g*20|0)+12|0,4,0,0)|0|0,2,0);ea(dc>>0|0,0|0,1,0);ea(ec|0,p+((da(f+(g*20|0)+8|0,4,0,0)|0|0)*40|0)|0,4,0);h=Bm(b,rd,0,0,0,zd)|0;if(!(da(zd|0,4,0,0)|0|h))h=Im(b)|0;ea(l+60|0,0|0,4,0);s=A;H=g;break}case 116:case 115:case 114:case 113:{h=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;ea(sd|0,da(h+8|0,4,0,0)|0|0,4,0);ea(nc|0,da(f+(g*20|0)+16|0,4,0,0)|0|0,2,0);ea(O>>0|0,((y&255)<115)<<31>>31|0,1,0);ea(P|0,p+((da(f+(g*20|0)+12|0,4,0,0)|0|0)*40|0)|0,4,0);J=Ld;ea(J|0,0|0,4,0);ea(J+4|0,0|0,4,0);jm(da(h|0,4,0,0)|0|0,Ld);J=Ld;b=da(J|0,4,0,0)|0|0;J=iw(b|0,da(J+4|0,4,0,0)|0|0,-1,-1)|0;I=C;if(!(I>>>0>0|(I|0)==0&J>>>0>2147483646)){ea(Q|0,0|0,2,0);ea(R|0,ee|0,4,0);ea(S|0,0|0,4,0);b=mm(da(h|0,4,0,0)|0|0,0,b,1,jd)|0;if(!b){h=Jm(da(T|0,4,0,0)|0|0,da(U|0,4,0,0)|0|0,sd,0)|0;if(((da(Q|0,2,0,0)|0)&9312)==0&(da(S|0,4,0,0)|0|0)==0)b=0;else{Pg(jd);b=0}}else h=0}else{ea(de|0,68730|0,4,0);ea(de+4|0,10788|0,4,0);ad(11,13600,de);b=11;h=0}if(((((da(s>>0|0,1,0,0)|0)&1)==0?h+1|0:0-h|0)|0)>0){s=A;H=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;h=b}else{s=A;H=g;h=b}break}case 117:{E=A+8|0;ea(E|0,1|0,2,0);if((da(Sb|0,4,0,0)|0|0)>((da(V|0,4,0,0)|0|0)+1|0)){b=d;d=e;h=n;be=832;break c}D=da(f+(g*20|0)+12|0,4,0,0)|0|0;B=da((da(Qd|0,4,0,0)|0|0)+(D<<4)+4|0,4,0,0)|0|0;F=f+(g*20|0)+4|0;x=da(F|0,4,0,0)|0|0;s=B+4|0;z=da(s|0,4,0,0)|0|0;ea(z+4|0,da(B|0,4,0,0)|0|0,4,0);ea(de|0,0|0,4,0);do if(!(da(z+8|0,4,0,0)|0)){h=cl(z,x,de,0)|0;if(!h){h=Wm(B,x,0)|0;if(h){b=da(de|0,4,0,0)|0|0;if(!b){q=0;break}Ag(da(b+68|0,4,0,0)|0|0);q=0;break}if(x>>>0<=1){b=da(de|0,4,0,0)|0|0;ol(b,9);if(!b){h=0;q=0;break}Ag(da(b+68|0,4,0,0)|0|0);h=0;q=0;break}if(!(da(z+17>>0|0,1,0,0)|0)){b=da(de|0,4,0,0)|0|0;h=Xm(da(b+52|0,4,0,0)|0|0,b,da(b+72|0,4,0,0)|0|0)|0;if(!b){q=0;break}Ag(da(b+68|0,4,0,0)|0|0);q=0;break}y=da(s|0,4,0,0)|0|0;ea(y+4|0,da(B|0,4,0,0)|0|0,4,0);y=da((da(y+12|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;y=(da(y+53>>0|0,1,0,1)|0)<<16|(da(y+52>>0|0,1,0,1)|0)<<24|(da(y+54>>0|0,1,0,1)|0)<<8|(da(y+55>>0|0,1,0,1)|0);s=da(de|0,4,0,0)|0|0;if((y|0)==(x|0)){h=Xm(da(s+52|0,4,0,0)|0|0,s,da(s+72|0,4,0,0)|0|0)|0;if(s)Ag(da(s+68|0,4,0,0)|0|0);if(!h)q=0;else{q=0;break}}else{if(s)Ag(da(s+68|0,4,0,0)|0|0);h=cl(z,y,Ld,0)|0;if(h){q=0;break}s=da(Ld|0,4,0,0)|0|0;h=Ym(z,s,1,0,x,0)|0;if(s)Ag(da(s+68|0,4,0,0)|0|0);if(h){q=0;break}ea(Ld|0,0|0,4,0);h=cl(z,y,Ld,0)|0;s=da(Ld|0,4,0,0)|0|0;if(h){if(!s){q=0;break}}else h=Xm(da(s+52|0,4,0,0)|0|0,s,da(s+72|0,4,0,0)|0|0)|0;Ag(da(s+68|0,4,0,0)|0|0);if(!h)q=y;else{q=0;break}}w=((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(z+32|0,4,0,0)|0|0)>>>0)|0;v=w+1|0;x=z+36|0;while(1){s=y+-1|0;if((s|0)==(v|0)){y=s;continue}if(s>>>0<2)u=0;else{u=y+-3|0;u=u-((u>>>0)%(((((da(x|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;u=((u+1|0)==(w|0)?3:2)+u|0}if((u|0)==(s|0))y=s;else break}h=Cg(B,4,s)|0}else q=0}else{h=262;q=0}while(0);ea(E|0,4|0,2,0);J=A;ea(J|0,q|0,4,0);ea(J+4|0,((q|0)<0)<<31>>31|0,4,0);if((h|0)==0&(q|0)!=0){b=d;z=D;s=F;d=e;h=A;e=g;be=865;break d}else{s=A;H=g}break}case 118:{ea(Zc|0,0|0,4,0);b=f+(g*20|0)+12|0;h=Wm(da((da(Qd|0,4,0,0)|0|0)+((da(f+(g*20|0)+8|0,4,0,0)|0)<<4)+4|0,4,0,0)|0|0,da(f+(g*20|0)+4|0,4,0,0)|0|0,(da(b|0,4,0,0)|0|0)!=0?Zc:0)|0;b=da(b|0,4,0,0)|0|0;if((b|0)!=0?(Bc=da(Zc|0,4,0,0)|0|0,ea(nb|0,(da(nb|0,4,0,0)|0|0)+Bc|0,4,0),(b|0)>0):0){s=p+(b*40|0)|0;H=s;H=iw(da(H|0,4,0,0)|0|0,da(H+4|0,4,0,0)|0|0,Bc|0,((Bc|0)<0)<<31>>31|0)|0;ea(s|0,H|0,4,0);ea(s+4|0,C|0,4,0);s=A;H=g}else{s=A;H=g}break}case 121:case 120:{ea(od|0,0|0,4,0);h=zm(da((da(Qd|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<4)+4|0,4,0,0)|0|0,od,y<<24>>24==121?1:2)|0;s=da(od|0,4,0,0)|0|0;H=A;ea(H|0,s|0,4,0);ea(H+4|0,((s|0)<0)<<31>>31|0,4,0);s=A;H=g;break}case 119:{b=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;h=da(b+56|0,4,0,0)|0|0;if(h){b=d;d=e;y=A;e=g;be=878;break d}h=da(b|0,4,0,0)|0|0;s=A;H=g;h=Wm(da(h|0,4,0,0)|0|0,da(h+60|0,4,0,0)|0|0,0)|0;break}case 123:{s=A;H=g;h=$m(ee,da(f+(g*20|0)+4|0,4,0,0)|0|0)|0;break}case 124:{b=d;d=e;h=A;e=g;be=886;break d}case 122:{b=d;d=e;y=A;e=g;be=881;break d}case 126:{b=d;d=e;h=A;e=g;be=895;break d}case 125:{b=d;d=e;y=A;e=g;be=887;break d}case 127:{b=d;d=e;h=A;be=903;break d}case 128:{b=d;d=e;y=A;be=947;break d}case 129:{m=da(f+(g*20|0)+4|0,4,0,0)|0|0;l=p+(m*40|0)|0;m=p+(m*40|0)+8|0;b=da(m|0,2,0,0)|0|0;do if(b&32){u=da(l|0,4,0,0)|0|0;h=u+26|0;b=da(h|0,2,0,0)|0|0;if(!(b&2)){if(!(b&1)){b=u+8|0;ea(b|0,jn(da(b|0,4,0,0)|0|0)|0|0,4,0);b=da(h|0,2,0,0)|0|0}ea(h|0,b&65535|2|0,2,0)}s=u+8|0;q=da(s|0,4,0,0)|0|0;if(!q){b=da(m|0,2,0,0)|0|0;break}m=q;l=da(m|0,4,0,0)|0|0;m=da(m+4|0,4,0,0)|0|0;J=da(q+8|0,4,0,0)|0|0;ea(s|0,J|0,4,0);if(!J)Yk(u);h=da(f+(g*20|0)+12|0,4,0,0)|0|0;b=p+(h*40|0)|0;h=p+(h*40|0)+8|0;if(!((da(h|0,2,0,0)|0)&9312)){be=b;ea(be|0,l|0,4,0);ea(be+4|0,m|0,4,0);ea(h|0,4|0,2,0);h=0;be=19;break e}else{Yg(b,l,m);h=0;be=19;break e}}while(0);if(!(b&9312))ea(m|0,1|0,2,0);else ug(l);g=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;h=0;be=19;break}case 130:{b=d;d=e;h=A;be=966;break d}case 131:{b=d;d=e;h=A;e=g;be=993;break d}case 132:{b=d;d=e;h=A;e=g;be=1009;break d}case 134:{b=d;d=e;y=A;e=g;be=1010;break d}case 135:{b=d;d=e;h=A;e=g;be=1015;break d}case 136:{b=d;d=e;e=g;be=1022;break d}case 137:{b=d;d=e;h=A;e=g;be=1028;break d}case 138:{b=d;d=e;h=A;e=g;be=1030;break d}case 139:{b=d;d=e;y=A;e=g;be=1032;break d}case 140:{b=d;d=e;h=A;e=g;be=1034;break d}case 141:{b=d;d=e;h=A;e=g;be=1036;break d}case 10:{J=da(f+(g*20|0)+3>>0|0,1,0,0)|0|0;b=J&255;h=da(ub|0,4,0,0)|0|0;if(J<<24>>24){l=0;m=p+((da(f+(g*20|0)+8|0,4,0,0)|0|0)*40|0)|0;while(1){ea(h+(l<<2)|0,m|0,4,0);l=l+1|0;if((l|0)>=(b|0))break;else m=m+40|0}}J=da(f+(g*20|0)+16|0,4,0,0)|0|0;ea(za|0,J|0,4,0);I=da(f+(g*20|0)+12|0,4,0,0)|0|0;ea(Aa|0,p+(I*40|0)|0,4,0);I=p+(I*40|0)+12|0;ea(I|0,(da(I|0,4,0,0)|0|0)+1|0,4,0);ea(Ba|0,1|0,2,0);ea(Ca|0,ee|0,4,0);ea(Da|0,0|0,4,0);ea(Oc|0,Fd|0,4,0);ea(Ea|0,0|0,4,0);ea(Fa|0,a|0,4,0);ea(Ga|0,g|0,4,0);ea(Ha>>0|0,0|0,1,0);lc[(fa(da(J+16|0,4,0,0)|0|0,63|0)|0)&63](Oc,b,h);if(!(da(Ea|0,4,0,0)|0))h=0;else{ea(de|0,Rg(Fd,1)|0|0,4,0);ch(ce,ee,10344,de);h=da(Ea|0,4,0,0)|0|0}do if((da(Ha>>0|0,1,0,0)|0|0)!=0?(Fc=da(f+((g+-1|0)*20|0)+4|0,4,0,0)|0|0,(Fc|0)!=0):0){b=p+(Fc*40|0)|0;l=p+(Fc*40|0)+8|0;if(!((da(l|0,2,0,0)|0)&9312)){J=b;ea(J|0,1|0,4,0);ea(J+4|0,0|0,4,0);ea(l|0,4|0,2,0);break}else{Yg(b,1,0);break}}while(0);if(((da(Ba|0,2,0,0)|0)&9312)==0&(da(Da|0,4,0,0)|0|0)==0){s=A;H=g}else{Pg(Fd);s=A;H=g}break}case 11:{ea(Kc|0,0|0,4,0);ea(Ia|0,-1|0,4,0);ea(Ja|0,-1|0,4,0);b=Vh(ee,da(f+(g*20|0)+4|0,4,0,0)|0|0,da(f+(g*20|0)+8|0,4,0,0)|0|0,Ja,Ia)|0;if((b|0)==5){ea(Kc|0,1|0,4,0);b=0}l=0;m=p+((da(f+(g*20|0)+12|0,4,0,0)|0|0)*40|0)|0;while(1){s=da(Kc+(l<<2)|0,4,0,0)|0|0;q=((s|0)<0)<<31>>31;h=m+8|0;if(!((da(h|0,2,0,0)|0)&9312)){J=m;ea(J|0,s|0,4,0);ea(J+4|0,q|0,4,0);ea(h|0,4|0,2,0)}else Yg(m,s,q);l=l+1|0;if((l|0)==3){s=A;H=g;h=b;break}else m=m+40|0}break}case 142:{s=da(f+(g*20|0)+4|0,4,0,0)|0|0;l=p+(s*40|0)|0;h=Xk(l,da(f+(g*20|0)+16|0,4,0,0)|0|0)|0;if(h){ea(de|0,Rg(l,1)|0|0,4,0);ch(ce,ee,10344,de)}Xl(l,qb)|0;m=da(p+(s*40|0)+8|0,2,0,1)|0|0;if(m&18){b=da(p+(s*40|0)+12|0,4,0,0)|0|0;if(m&16384)b=(da(l|0,4,0,0)|0|0)+b|0;if((b|0)>(da((da(p+(s*40|0)+32|0,4,0,0)|0|0)+88|0,4,0,0)|0|0)){b=d;d=e;h=n;be=1316;break c}else{s=A;H=g}}else{s=A;H=g}break}case 12:{b=da(f+(g*20|0)+12|0,4,0,0)|0|0;A=da((da(Qd|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<4)+4|0,4,0,0)|0|0;x=da(da(A+4|0,4,0,0)|0|0,4,0,0)|0|0;y=da(x+5>>0|0,1,0,0)|0|0;w=y&255;b=(b|0)==-1?w:b;do if((da(x+16>>0|0,1,0,1)|0|0)>2)b=w;else if((da(da(x+64|0,4,0,0)|0|0,4,0,0)|0|0)!=0?(J=x+72|0,I=da(J+4|0,4,0,0)|0|0,(I|0)>0|(I|0)==0&(da(J|0,4,0,0)|0|0)>>>0>0):0){b=w;break}while(0);if(!(da(x+15>>0|0,1,0,0)|0))q=da(x+168|0,4,0,0)|0|0;else q=10360;z=(b|0)==5;if(z)if(q){s=q;while(1)if(!(da(s>>0|0,1,0,0)|0))break;else s=s+1|0;if(s-q&1073741823){s=da(da(x+60|0,4,0,0)|0|0,4,0,0)|0|0;if(!(da(x+4>>0|0,1,0,0)|0))if((da(s|0,4,0,0)|0|0)>1?!((da(s+52|0,4,0,0)|0|0)==0|(b|0)==(w|0)):0)be=1077;else{b=w;h=0}else be=1076}else{b=w;h=0}}else{b=w;h=0}else be=1076;if((be|0)==1076){be=0;if((b|0)==(w|0)){b=w;h=0}else be=1077}do if((be|0)==1077){be=0;s=y<<24>>24==5;if(s|z){if(!(da(Zd>>0|0,1,0,0)|0)){b=d;f=z;d=e;h=n;be=1080;break c}if((da(Sb|0,4,0,0)|0|0)>1){b=d;f=z;d=e;h=n;be=1080;break c}if(!s){if(y<<24>>24==4)rn(x,2)|0}else{y=x+208|0;if(!(da(y|0,4,0,0)|0)){ea(Sc|0,0|0,4,0);h=el(x,1)|0;if(h)break;h=da(x|0,4,0,0)|0|0;h=oc[(fa(da(h+32|0,4,0,0)|0|0,31|0)|0)&31](h,da(x+212|0,4,0,0)|0|0,0,Sc)|0;if((h|0)==0&(da(Sc|0,4,0,0)|0|0)!=0)h=on(x)|0;if(h)break;if(da(y|0,4,0,0)|0)be=1088}else be=1088;if((be|0)==1088){be=0;h=pn(x)|0;if(h)break;h=qn(da(y|0,4,0,0)|0|0,da(x+9>>0|0,1,0,1)|0|0,da(x+152|0,4,0,0)|0|0,da(x+200|0,4,0,0)|0|0)|0;ea(y|0,0|0,4,0);if(h)break}rn(x,b)|0}h=Eg(A,z?2:1)|0}else h=0}while(0);b=rn(x,(h|0)==0?b:w)|0;s=da(f+(g*20|0)+8|0,4,0,0)|0|0;y=p+(s*40|0)|0;ea(p+(s*40|0)+8|0,2562|0,2,0);if((b|0)==6){ea(p+(s*40|0)+16|0,0|0,4,0);b=0}else{l=da(32216+(b<<2)|0,4,0,0)|0|0;ea(p+(s*40|0)+16|0,l|0,4,0);b=l;while(1)if(!(da(b>>0|0,1,0,0)|0))break;else b=b+1|0;b=b-l&1073741823}ea(p+(s*40|0)+12|0,b|0,4,0);ea(p+(s*40|0)+10>>0|0,1|0,1,0);Xl(y,qb)|0;s=y;H=g;break}case 13:{if(!(da(Zd>>0|0,1,0,0)|0)){b=d;d=e;h=n;be=1101;break c}if((da(Ka|0,4,0,0)|0|0)>1){b=d;d=e;h=n;be=1103;break c}D=da(Mb|0,4,0,0)|0|0;m=da(ob|0,4,0,0)|0|0;l=da(pb|0,4,0,0)|0|0;b=da(La|0,4,0,0)|0|0;ea(Mb|0,D&-2762753|2107392|0,4,0);ea(La|0,0|0,4,0);B=da((da(Qd|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;H=B+4|0;z=da((da(da(H|0,4,0,0)|0|0,4,0,0)|0|0)+15>>0|0,1,0,0)|0|0;y=da(Nb|0,4,0,0)|0|0;h=sn(ee,ce,(da(Tb>>0|0,1,0,0)|0|0)==2?42432:42464)|0;x=da(Nb|0,4,0,0)|0|0;if((x|0)>(y|0))E=(da(Qd|0,4,0,0)|0|0)+(x+-1<<4)|0;else E=0;i:do if(!h){F=da((da(Qd|0,4,0,0)|0|0)+(x+-1<<4)+4|0,4,0,0)|0|0;tn(F)|0;G=da(H|0,4,0,0)|0|0;ea(G+4|0,da(B|0,4,0,0)|0|0,4,0);G=(da(G+32|0,4,0,0)|0|0)-(da(G+36|0,4,0,0)|0|0)|0;h=sn(ee,ce,42488)|0;if(!h){h=sn(ee,ce,42528)|0;if(!h){h=xg(B,2)|0;if(!h){y=da(H|0,4,0,0)|0|0;if((da((da(y|0,4,0,0)|0|0)+5>>0|0,1,0,0)|0|0)==5)ea(Ma|0,0|0,4,0);if(!(wg(F,da(y+32|0,4,0,0)|0|0,G,0)|0)){if(z<<24>>24==0?(wg(F,da(Ma|0,4,0,0)|0|0,G,0)|0)!=0:0){h=7;break}if(da($d>>0|0,1,0,0)|0){h=7;break}y=da(Na>>0|0,1,0,0)|0|0;do if(y<<24>>24>-1)y=y<<24>>24;else{y=da(H|0,4,0,0)|0|0;ea(y+4|0,da(B|0,4,0,0)|0|0,4,0);if(!(da(y+17>>0|0,1,0,0)|0)){y=0;break}y=(da(y+18>>0|0,1,0,0)|0|0)==0?1:2}while(0);un(F,y)|0;h=vn(ee,ce,42536)|0;if(h)break;h=vn(ee,ce,42688)|0;if(h)break;h=vn(ee,ce,42792)|0;if(h)break;h=vn(ee,ce,42912)|0;if(h)break;h=vn(ee,ce,43112)|0;if(h)break;h=vn(ee,ce,43232)|0;if(h)break;h=sn(ee,ce,43392)|0;if(!h)y=0;else break;do{h=da(43576+y>>0|0,1,0,1)|0|0;vm(B,h,Uc);h=Cg(F,h,(da(43576+(y|1)>>0|0,1,0,1)|0|0)+(da(Uc|0,4,0,0)|0|0)|0)|0;y=y+2|0;if(h)break i}while((y|0)<10);w=da(H|0,4,0,0)|0|0;ea(w+4|0,da(B|0,4,0,0)|0|0,4,0);y=da(F|0,4,0,0)|0|0;z=F+4|0;x=da(z|0,4,0,0)|0|0;ea(x+4|0,y|0,4,0);w=da((da(w|0,4,0,0)|0|0)+60|0,4,0,0)|0|0;v=da(w|0,4,0,0)|0|0;if(v){J=da(x+32|0,4,0,0)|0|0;J=rw(da(x+44|0,4,0,0)|0|0,0,J|0,((J|0)<0)<<31>>31|0)|0;h=Yc;ea(h|0,J|0,4,0);ea(h+4|0,C|0,4,0);h=$b[(fa(da(v+40|0,4,0,0)|0|0,63|0)|0)&63](w,11,Yc)|0;h=(h|0)==12?0:h;if(h)break;y=da(F|0,4,0,0)|0|0}I=Mc+0|0;J=I+48|0;do{ea(I|0,0|0,4,0);I=I+4|0}while((I|0)<(J|0));ea(Oa|0,y|0,4,0);ea(Pa|0,F|0,4,0);ea(Qa|0,B|0,4,0);ea(Ra|0,1|0,4,0);fd(Mc,2147483647)|0;h=gd(Mc)|0;if(h){s=da(da((da(Qa|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,4,0,0)|0|0;if(da(s+15>>0|0,1,0,0)|0)break;if(da(s+12>>0|0,1,0,0)|0)break;wn(s);break}h=(da(H|0,4,0,0)|0|0)+22|0;ea(h|0,(da(h|0,2,0,1)|0)&65533|0,2,0);h=tn(F)|0;if(h)break;y=da(z|0,4,0,0)|0|0;ea(y+4|0,da(F|0,4,0,0)|0|0,4,0);if(!(da(y+17>>0|0,1,0,0)|0))u=0;else u=(da(y+18>>0|0,1,0,0)|0|0)==0?1:2;un(B,u)|0;h=wg(B,da((da(z|0,4,0,0)|0|0)+32|0,4,0,0)|0|0,G,1)|0}else h=7}}}}while(0);ea(Mb|0,D|0,4,0);ea(ob|0,m|0,4,0);ea(pb|0,l|0,4,0);ea(La|0,b|0,4,0);wg(B,-1,-1,1)|0;ea(Zd>>0|0,1|0,1,0);if(E){J=E+4|0;Ll(da(J|0,4,0,0)|0|0);ea(J|0,0|0,4,0);ea(E+12|0,0|0,4,0)}Dg(ee);s=A;H=g;break}case 143:{J=da((da(Qd|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<4)+4|0,4,0,0)|0|0;x=da(J+4|0,4,0,0)|0|0;ea(x+4|0,da(J|0,4,0,0)|0|0,4,0);if(!(da(x+17>>0|0,1,0,0)|0)){b=d;d=e;h=A;be=1157;break d}u=x+44|0;w=da(u|0,4,0,0)|0|0;q=x+12|0;s=da((da(q|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;s=(da(s+37>>0|0,1,0,1)|0)<<16|(da(s+36>>0|0,1,0,1)|0)<<24|(da(s+38>>0|0,1,0,1)|0)<<8|(da(s+39>>0|0,1,0,1)|0);v=Dl(x,w,s)|0;if(w>>>0>>0){b=d;d=e;h=n;be=1145;break c}if(!s){b=d;d=e;h=A;be=1157;break d}y=x+8|0;b=da(y|0,4,0,0)|0|0;do if(b){s=b;do{if(s){be=1150;break}s=da(2*4|0,4,0,0)|0|0}while((s|0)!=0);if((be|0)==1150){be=0;h=El(s,0,0)|0;if(h)break;b=da(y|0,4,0,0)|0|0}if(b){do{J=b+72|0;ea(J>>0|0,(da(J>>0|0,1,0,1)|0)&251|0,1,0);b=da(b+8|0,4,0,0)|0|0}while((b|0)!=0);be=1154}else be=1154}else be=1154;while(0);if((be|0)==1154){be=0;h=Fl(x,v,w,0)|0;if(!h){h=Fg(da((da(q|0,4,0,0)|0|0)+68|0,4,0,0)|0|0)|0;I=da((da(q|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;J=da(u|0,4,0,0)|0|0;ea(I+28>>0|0,J>>>24|0,1,0);ea(I+29>>0|0,J>>>16|0,1,0);ea(I+30>>0|0,J>>>8|0,1,0);ea(I+31>>0|0,J|0,1,0)}}if((h|0)==101){b=d;d=e;h=A;be=1157;break d}else{s=A;H=g}break}case 145:{b=da(f+(g*20|0)+12|0,4,0,0)|0|0;if((b&255|0)==0?((da(Mb|0,4,0,0)|0)&16384|0)!=0:0){b=d;d=e;G=p;H=f;I=K;J=L;h=A;e=g;break d}s=da((da(Qd|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<4)+4|0,4,0,0)|0|0;q=da(f+(g*20|0)+8|0,4,0,0)|0|0;if(!(da(s+9>>0|0,1,0,0)|0)){b=d;d=e;G=p;H=f;I=K;J=L;h=A;e=g;break d}l=b+1&255;m=s+4|0;ea((da(m|0,4,0,0)|0|0)+4|0,da(s|0,4,0,0)|0|0,4,0);h=al(s,q,l)|0;if(!h){b=d;d=e;h=A;e=g;be=1166;break d}if((h&255|0)!=6){b=d;d=e;f=h;h=n;be=1309;break c}ea(de|0,da(f+(g*20|0)+16|0,4,0,0)|0|0,4,0);ch(ce,ee,42224,de);s=A;H=g;break}case 144:{b=d;d=e;h=A;e=g;be=1158;break d}case 146:{y=da(f+(g*20|0)+16|0,4,0,0)|0|0;l=da(Sa|0,4,0,0)|0|0;h=(l|0)>0;if(h?(da(Ta|0,4,0,0)|0|0)==0:0){h=6;be=1188}else be=1179;j:do if((be|0)==1179){be=0;if(!y){b=d;d=e;G=p;H=f;I=K;J=L;h=A;e=g;break d}b=y+8|0;m=(da(da(b|0,4,0,0)|0|0,4,0,0)|0|0)+56|0;if(da(m|0,4,0,0)|0){if(h){s=da(Ta|0,4,0,0)|0|0;q=0;do{if((da(s+(q<<2)|0,4,0,0)|0|0)==(y|0)){h=0;be=1188;break j}q=q+1|0}while((q|0)<(l|0))}h=xn(ee)|0;if(!h){h=kc[(fa(da(m|0,4,0,0)|0|0,127|0)|0)&127](da(b|0,4,0,0)|0|0)|0;if(!h){h=da(Sa|0,4,0,0)|0|0;ea(Sa|0,h+1|0,4,0);ea((da(Ta|0,4,0,0)|0|0)+(h<<2)|0,y|0,4,0);h=y+12|0;ea(h|0,(da(h|0,4,0,0)|0|0)+1|0,4,0);h=0}}else be=1188}else h=0}while(0);if((be|0)==1188){be=0;if(!y){s=A;H=g;break e}b=y+8|0}Lm(a,da(b|0,4,0,0)|0|0);s=A;H=g;break}case 147:{I=Dd+0|0;J=I+40|0;do{ea(I|0,0|0,4,0);I=I+4|0}while((I|0)<(J|0));ea(Ua|0,ee|0,4,0);b=Zg(Dd,p+((da(f+(g*20|0)+8|0,4,0,0)|0|0)*40|0)|0)|0;h=Rg(Dd,1)|0;k:do if(h){l=Zh(ee,h,da((da(Qd|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<4)|0,4,0,0)|0|0)|0;b=da(da(l+56|0,4,0,0)|0|0,4,0,0)|0|0;h=an(Xa,b,Pc)|0;if((h|0)!=0?(Hc=da(h+8|0,4,0,0)|0|0,(Hc|0)!=0):0){b=yn(ee,l,Hc,da((da(Hc|0,4,0,0)|0|0)+4|0,4,0,0)|0|0,ce)|0;if(b)break;h=l+60|0;b=da(h|0,4,0,0)|0|0;if(!b){b=0;break}while(1){if((da(b|0,4,0,0)|0|0)==(ee|0))break;b=da(b+24|0,4,0,0)|0|0;if(!b){b=0;break k}}b=xn(ee)|0;if(b)break;b=da(h|0,4,0,0)|0|0;l:do if(!b)b=0;else while(1){if((da(b|0,4,0,0)|0|0)==(ee|0))break l;b=da(b+24|0,4,0,0)|0|0;if(!b){b=0;break}}while(0);J=da(Sa|0,4,0,0)|0|0;ea(Sa|0,J+1|0,4,0);ea((da(Ta|0,4,0,0)|0|0)+(J<<2)|0,b|0,4,0);b=b+12|0;ea(b|0,(da(b|0,4,0,0)|0|0)+1|0,4,0);b=0;break}ea(de|0,b|0,4,0);ea(ce|0,th(ee,28320,de)|0|0,4,0);b=1}while(0);if(((da(Va|0,2,0,0)|0)&9312)==0&(da(Wa|0,4,0,0)|0|0)==0){s=A;H=g;h=b}else{Pg(Dd);s=A;H=g;h=b}break}case 148:{ea(V|0,(da(V|0,4,0,0)|0|0)+1|0,4,0);b=Zh(ee,da(f+(g*20|0)+16|0,4,0,0)|0|0,da((da(Qd|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<4)|0,4,0,0)|0|0)|0;m:do if((b|0)!=0?(Ic=b+60|0,Jc=da(Ic|0,4,0,0)|0|0,(Jc|0)!=0):0){h=Jc;do{if((da((da(h+8|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)>0){h=6;break m}h=da(h+24|0,4,0,0)|0|0}while((h|0)!=0);b=Nk(ee,b)|0;l=b+8|0;h=kc[(fa(da((da(da(b+4|0,4,0,0)|0|0,4,0,0)|0|0)+20|0,4,0,0)|0|0,127|0)|0)&127](da(l|0,4,0,0)|0|0)|0;if(!h){ea(l|0,0|0,4,0);ea(Ic|0,0|0,4,0);zn(b);h=0}}else h=0;while(0);ea(V|0,(da(V|0,4,0,0)|0|0)+-1|0,4,0);s=A;H=g;break}case 149:{b=d;d=e;h=A;e=g;be=1213;break d}case 150:{b=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;s=da(f+(g*20|0)+12|0,4,0,0)|0|0;q=p+(s*40|0)|0;if(da(b+25>>0|0,1,0,0)|0){b=d;d=e;h=A;e=g;be=1226;break d}J=b+32|0;h=da(da(J|0,4,0,0)|0|0,4,0,0)|0|0;I=da(h|0,4,0,0)|0|0;ea(Bd+0|0,0|0,4,0);ea(Bd+4|0,0|0,4,0);ea(Bd+8|0,0|0,4,0);ea(Bd+12|0,0|0,4,0);ea(Bd+16|0,0|0,4,0);ea(Bd+20|0,0|0,4,0);ea(Bd+24|0,0|0,4,0);ea(Bd|0,q|0,4,0);l=p+(s*40|0)+8|0;ea(l|0,(da(l|0,2,0,1)|0)&48640|1|0,2,0);J=$b[(fa(da(I+44|0,4,0,0)|0|0,63|0)|0)&63](da(J|0,4,0,0)|0|0,Bd,da(f+(g*20|0)+8|0,4,0,0)|0|0)|0;Lm(a,h);h=da(Ya|0,4,0,0)|0|0;h=(h|0)==0?J:h;Xl(q,qb)|0;l=da(l|0,2,0,1)|0|0;if(l&18){b=da(p+(s*40|0)+12|0,4,0,0)|0|0;if(l&16384)b=(da(q|0,4,0,0)|0|0)+b|0;if((b|0)>(da((da(p+(s*40|0)+32|0,4,0,0)|0|0)+88|0,4,0,0)|0|0)){b=d;d=e;h=n;be=1316;break c}else{s=A;H=g}}else{s=A;H=g}break}case 14:{q=da(f+(g*20|0)+12|0,4,0,0)|0|0;s=q+1|0;v=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;y=da(v+32|0,4,0,0)|0|0;x=da(y|0,4,0,0)|0|0;w=da(x|0,4,0,0)|0|0;u=da(p+(s*40|0)|0,4,0,0)|0|0;q=da(p+(q*40|0)|0,4,0,0)|0|0;b=da(ub|0,4,0,0)|0|0;if((u|0)>0){h=0;do{J=h;h=h+1|0;ea(b+(J<<2)|0,p+((h+s|0)*40|0)|0,4,0)}while((h|0)!=(u|0))}h=sc[(fa(da(w+32|0,4,0,0)|0|0,31|0)|0)&31](y,q,da(f+(g*20|0)+16|0,4,0,0)|0|0,u,b)|0;Lm(a,x);if((h|0)==0?(kc[(fa(da(w+40|0,4,0,0)|0|0,127|0)|0)&127](y)|0)!=0:0)g=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;ea(v+25>>0|0,0|0,1,0);s=A;H=g;break}case 151:{b=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;if(da(b+25>>0|0,1,0,0)|0){b=d;d=e;G=p;H=f;I=K;J=L;h=A;e=g;break d}b=b+32|0;l=da(b|0,4,0,0)|0|0;J=da(l|0,4,0,0)|0|0;h=da(J|0,4,0,0)|0|0;l=kc[(fa(da(h+36|0,4,0,0)|0|0,127|0)|0)&127](l)|0;Lm(a,J);if((l|0)==0?(kc[(fa(da(h+40|0,4,0,0)|0|0,127|0)|0)&127](da(b|0,4,0,0)|0|0)|0)!=0:0){h=0;be=19;break e}g=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;h=l;be=19;break}case 15:{v=f+(g*20|0)+16|0;l=da((da(v|0,4,0,0)|0|0)+8|0,4,0,0)|0|0;if(!l){b=d;d=e;f=6;h=n;be=1309;break c}b=da(l|0,4,0,0)|0|0;if(!b){b=d;d=e;f=6;h=n;be=1309;break c}x=da(f+(g*20|0)+8|0,4,0,0)|0|0;u=b+52|0;s=da(u|0,4,0,0)|0|0;if(!s){b=d;d=e;G=p;H=f;I=K;J=L;h=A;e=g;break d}w=da(Za>>0|0,1,0,0)|0|0;y=da(ub|0,4,0,0)|0|0;if((x|0)>0){s=0;q=p+((da(f+(g*20|0)+12|0,4,0,0)|0|0)*40|0)|0;while(1){ea(y+(s<<2)|0,q|0,4,0);s=s+1|0;if((s|0)==(x|0))break;else q=q+40|0}s=da(u|0,4,0,0)|0|0}q=f+(g*20|0)+3|0;ea(Za>>0|0,da(q>>0|0,1,0,0)|0|0|0,1,0);h=oc[(fa(s|0,31|0)|0)&31](l,x,y,Ad)|0;ea(Za>>0|0,w|0,1,0);Lm(a,l);if(!h){if(da(f+(g*20|0)+4|0,4,0,0)|0){c=Ad;e=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;J=ge;ea(J|0,e|0,4,0);ea(J+4|0,c|0,4,0)}}else if((h&255|0)==19?(da((da(v|0,4,0,0)|0|0)+16>>0|0,1,0,0)|0|0)!=0:0){b=da(q>>0|0,1,0,0)|0|0;if(b<<24>>24==5)b=2;else if(b<<24>>24==4){b=d;d=e;G=p;H=f;I=K;J=L;h=A;e=g;break d}ea(_d>>0|0,b|0,1,0);s=A;H=g;break e}ea(nb|0,(da(nb|0,4,0,0)|0|0)+1|0,4,0);s=A;H=g;break}case 152:{b=da((da(f+(g*20|0)+16|0,4,0,0)|0|0)+8|0,4,0,0)|0|0;h=da(f+(g*20|0)+4|0,4,0,0)|0|0;l=p+(h*40|0)|0;if((((da(p+(h*40|0)+8|0,2,0,0)|0)&2)!=0?(da(p+(h*40|0)+10>>0|0,1,0,0)|0|0)!=1:0)?(Pd=An(l,1)|0,(Pd|0)!=0):0){b=d;d=e;f=Pd;h=n;be=1309;break c}h=qc[(fa(da((da(b|0,4,0,0)|0|0)+76|0,4,0,0)|0|0,127|0)|0)&127](b,da(p+(h*40|0)+16|0,4,0,0)|0|0)|0;Lm(a,b);ea(Rd|0,(da(Rd|0,2,0,0)|0)&-9|0,2,0);s=A;H=g;break}case 153:{b=d;d=e;h=A;e=g;be=1257;break d}case 155:{b=d;d=e;be=1264;break d}case 154:{b=d;d=e;y=A;e=g;be=1258;break d}default:{b=d;d=e;G=p;H=f;I=K;J=L;h=A;e=g;break d}}while(0);n:do if((be|0)==57){be=0;m=A+8|0;ea(m|0,2562|0,2,0);ea(A+16|0,l|0,4,0);ea(A+12|0,b|0,4,0);ea(A+10>>0|0,Cc|0,1,0);if((da(f+(g*20|0)+3>>0|0,1,0,0)|0|0)!=0?(J=p+((da(f+(g*20|0)+12|0,4,0,0)|0|0)*40|0)|0,!((da(J|0,4,0,0)|0|0)==0&(da(J+4|0,4,0,0)|0|0)==0)):0){ea(m|0,2576|0,2,0);s=A;H=g}else{s=A;H=g}}else if((be|0)==536){if((da(Rd|0,2,0,0)|0)&8){b=d;d=e;f=516;h=n;be=1309;break c}s=da(f+(g*20|0)+8|0,4,0,0)|0|0;x=da(f+(g*20|0)+12|0,4,0,0)|0|0;b=da(Qd|0,4,0,0)|0|0;w=da(b+(x<<4)+4|0,4,0,0)|0|0;if(y<<24>>24==55){b=da((da(b+(x<<4)+12|0,4,0,0)|0|0)+76>>0|0,1,0,0)|0|0;if((b&255)<(da(Fb>>0|0,1,0,1)|0|0)){ea(Fb>>0|0,b|0,1,0);y=1}else y=1}else y=0;l=f+(g*20|0)+3|0;if((da(l>>0|0,1,0,0)|0)&4){J=p+(s*40|0)|0;b=Ug(J)|0;ea(J|0,b|0,4,0);ea(J+4|0,C|0,4,0);J=p+(s*40|0)+8|0;ea(J|0,(da(J|0,2,0,1)|0)&48640|4|0,2,0);if((b|0)<2){b=d;d=e;f=n;be=542;break c}else u=b}else u=s;h=f+(g*20|0)+1|0;s=da(h>>0|0,1,0,0)|0|0;if(s<<24>>24==-6){q=da(f+(g*20|0)+16|0,4,0,0)|0|0;s=(da(q+8|0,2,0,1)|0|0)+(da(q+6|0,2,0,1)|0|0)|0}else if(s<<24>>24==-14){s=da(f+(g*20|0)+16|0,4,0,0)|0|0;q=0}else{s=0;q=0}b=wm(a,da(f+(g*20|0)+4|0,4,0,0)|0|0,s,x,1)|0;if(!b){o=$d;p=ce;b=d;d=n;be=1317;break a}ea(b+25>>0|0,1|0,1,0);J=b+27|0;ea(J>>0|0,da(J>>0|0,1,0,0)|0|8|0,1,0);ea(b+28|0,u|0,4,0);be=xm(w,u,y,q,da(b|0,4,0,0)|0|0)|0;ea(b+8|0,q|0,4,0);ea(J>>0|0,((da(h>>0|0,1,0,0)|0|0)!=-6&1)<<2&255|(da(J>>0|0,1,0,0)|0)&-5|0,1,0);h=be;be=548}else if((be|0)==715){be=0;B=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;J=da(B+56|0,4,0,0)|0|0;do if(!J){h=da(B|0,4,0,0)|0|0;b=pm(h)|0;if(!b)if(!(da(h+73>>0|0,1,0,0)|0)){l=1;b=0}else{l=0;b=Um(h)|0}else l=1;ea(B+26>>0|0,0|0,1,0);ea(B+60|0,0|0,4,0);ea(B+25>>0|0,l|0,1,0);if(!l){s=A;H=g;h=b;break n}}else{do if(!(da(J+56>>0|0,1,0,0)|0)){b=J+36|0;if(!(da(b|0,4,0,0)|0)){b=0;be=756}else{b=Mm(J+64|0,b)|0;be=755}}else{b=Nm(J)|0;if(!b){I=J+59|0;o:do if(!(da(I>>0|0,1,0,0)|0)){h=0;b=0}else{m=0;l=0;p:while(1){H=J+(m<<6)+64|0;ea(de|0,0|0,4,0);G=J+(m<<6)+92|0;s=da(G|0,4,0,0)|0|0;y=((s|0)<0)<<31>>31;do if((s|0)>16){x=16;w=0;u=0;while(1){x=hw(x|0,w|0,4)|0;w=C;v=u+1|0;if(!((w|0)<(y|0)|(w|0)==(y|0)&x>>>0>>0)){w=u;break}else u=v}F=Ld;ea(F|0,0|0,4,0);ea(F+4|0,0|0,4,0);if((s|0)<17){be=726;break}h=Pm(16)|0;ea(de|0,h|0,4,0);y=(h|0)==0;x=da(G|0,4,0,0)|0|0;if(!((x|0)>0&(y^1))){b=y?7:0;break}D=(w|0)>0;F=0;E=0;do{ea(jd|0,0|0,4,0);b=x-F|0;b=Om(H,(b|0)<16?b:16,Ld,jd)|0;if(b){be=747;break p}b=Qm(H,da(jd|0,4,0,0)|0|0,id)|0;do if(D){x=1;y=1;do{y=y<<4;x=x+1|0}while((x|0)!=(v|0));if(!b){w=1;x=h}else{y=da(id|0,4,0,0)|0|0;be=743;break}while(1){z=(da(x+12|0,4,0,0)|0|0)+((((E|0)/(y|0)|0|0)%16|0)*56|0)+48|0;x=da(z|0,4,0,0)|0|0;if(!x){x=Pm(16)|0;if(!x){b=7;be=738;break}b=Qm(H,x,z)|0;if(b){be=738;break}x=da(z|0,4,0,0)|0|0}x=da(x+4|0,4,0,0)|0|0;w=w+1|0;if((w|0)>=(v|0)){be=740;break}else y=(y|0)/16|0}if((be|0)==738){y=da(id|0,4,0,0)|0|0;be=743;break}else if((be|0)==740){y=da(id|0,4,0,0)|0|0;be=742;break}}else{y=da(id|0,4,0,0)|0|0;if(!b){x=h;be=742}else be=743}while(0);if((be|0)==742){be=0;ea((da(x+12|0,4,0,0)|0|0)+(((E|0)%16|0)*56|0)+48|0,y|0,4,0);b=0}else if((be|0)==743){be=0;Rm(y)}E=E+1|0;F=F+16|0;x=da(G|0,4,0,0)|0|0}while((F|0)<(x|0)&(b|0)==0)}else{be=Ld;ea(be|0,0|0,4,0);ea(be+4|0,0|0,4,0);be=726}while(0);if((be|0)==726){be=0;b=Om(H,s,Ld,de)|0;h=da(de|0,4,0,0)|0|0}m=m+1|0;if(b){be=746;break}if((m|0)>=(da(I>>0|0,1,0,1)|0|0)){b=0;break o}else l=h}if((be|0)==746)Sm(h);else if((be|0)==747)Sm(h);Sm(l);h=0}while(0);if(!b){b=Tm(J+64|0,h)|0;ea(J+20|0,h|0,4,0);if(!b){b=0;be=755;break}else h=0}Sm(h);be=755}else be=756}while(0);if((be|0)==755){be=0;ea(B+25>>0|0,0|0,1,0);s=A;H=g;h=b;break n}else if((be|0)==756){be=0;ea(B+25>>0|0,1|0,1,0);break}}while(0);s=A;H=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;h=b}else if((be|0)==765){h=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;ea(yd|0,da(f+(g*20|0)+12|0,4,0,0)|0|0,4,0);b=h;h=qc[(fa(da(f+(g*20|0)+16|0,4,0,0)|0|0,127|0)|0)&127](da(h|0,4,0,0)|0|0,yd)|0;be=766}while(0);do if((be|0)==548){be=0;ea((da(b|0,4,0,0)|0|0)+74>>0|0,(da(l>>0|0,1,0,1)|0)&3|0,1,0);s=A;H=g}else if((be|0)==766){ea(b+60|0,0|0,4,0);b=b+25|0;if(!(da(yd|0,4,0,0)|0)){ea(b>>0|0,0|0,1,0);be=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;g=a+((da(f+(g*20|0)+3>>0|0,1,0,1)|0)<<2)+108|0;ea(g|0,(da(g|0,4,0,0)|0|0)+1|0,4,0);g=be;be=19;break}else{ea(b>>0|0,1|0,1,0);be=19;break}}while(0);if((be|0)==19){be=0;if(da(vc|0,4,0,0)|0){h=ce;b=d;d=n;break b}b=da(Wd|0,4,0,0)|0|0;if(!((b|0)==0|d>>>0>>0)){o=da(pc|0,4,0,0)|0|0;if(!(kc[(fa(b|0,127|0)|0)&127](da(Sd|0,4,0,0)|0|0)|0)){o=o+d-((d>>>0)%(o>>>0)|0)|0;s=A;H=g}else{b=d;f=9;d=n;be=1311;break a}}else{s=A;H=g}}g=H+1|0;if(!h){b=d;h=s}else{b=d;f=h;d=n;be=1311;break a}}q:switch(be|0){case 22:{be=0;G=da(f+(g*20|0)+4|0,4,0,0)|0|0;ea(p+(G*40|0)+8|0,4|0,2,0);G=p+(G*40|0)|0;ea(G|0,g|0,4,0);ea(G+4|0,((g|0)<0)<<31>>31|0,4,0);G=p;H=f;I=K;J=L;e=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;break}case 23:{be=0;G=da(f+(g*20|0)+4|0,4,0,0)|0|0;e=da(p+(G*40|0)|0,4,0,0)|0|0;ea(p+(G*40|0)+8|0,128|0,2,0);G=p;H=f;I=K;J=L;break}case 24:{be=0;e=da(f+(g*20|0)+4|0,4,0,0)|0|0;h=p+(e*40|0)|0;G=(da(f+(g*20|0)+12|0,4,0,0)|0|0)+-1|0;H=h;ea(H|0,G|0,4,0);ea(H+4|0,((G|0)<0)<<31>>31|0,4,0);ea(p+(e*40|0)+8|0,4|0,2,0);e=da(f+(g*20|0)+8|0,4,0,0)|0|0;G=p;H=f;I=K;J=L;e=(e|0)==0?g:e+-1|0;break}case 25:{be=0;G=da(f+(g*20|0)+4|0,4,0,0)|0|0;e=(da(f+((da(p+(G*40|0)|0,4,0,0)|0|0)*20|0)+8|0,4,0,0)|0|0)+-1|0;ea(p+(G*40|0)+8|0,128|0,2,0);G=p;H=f;I=K;J=L;break}case 26:{be=0;G=da(f+(g*20|0)+4|0,4,0,0)|0|0;ea(p+(G*40|0)+8|0,4|0,2,0);G=p+(G*40|0)|0;e=da(G|0,4,0,0)|0|0;ea(G|0,g|0,4,0);ea(G+4|0,((g|0)<0)<<31>>31|0,4,0);G=p;H=f;I=K;J=L;break}case 27:{be=0;if(!((da(p+((da(f+(e*20|0)+12|0,4,0,0)|0|0)*40|0)+8|0,2,0,0)|0)&1)){G=p;H=f;I=K;J=L}else be=28;break}case 44:{be=0;G=da(f+(e*20|0)+4|0,4,0,0)|0|0;H=h;ea(H|0,G|0,4,0);ea(H+4|0,((G|0)<0)<<31>>31|0,4,0);G=p;H=f;I=K;J=L;break}case 45:{be=0;I=da(f+(e*20|0)+16|0,4,0,0)|0|0;G=da(I+4|0,4,0,0)|0|0;H=h;ea(H|0,da(I|0,4,0,0)|0|0,4,0);ea(H+4|0,G|0,4,0);G=p;H=f;I=K;J=L;break}case 46:{be=0;ea(h+8|0,8|0,2,0);ea(h|0,+(+(+da(da(f+(e*20|0)+16|0,4,0,0)|0|0,8,1,0))),8,1);G=p;H=f;I=K;J=L;break}case 60:{be=0;y=(da(f+(e*20|0)+12|0,4,0,0)|0|0)-(da(f+(e*20|0)+8|0,4,0,0)|0|0)|0;g=(da(f+(e*20|0)+4|0,4,0,0)|0|0)!=0?257:1;ea(h+8|0,g|0,2,0);if((y|0)>0){m=y;q=h;do{l=q+48|0;q=q+40|0;if(!((da(l|0,2,0,0)|0)&9312))ea(l|0,1|0,2,0);else ug(q);ea(l|0,g|0,2,0);m=m+-1|0}while((m|0)>0);G=p;H=f;I=K;J=L;h=h+(y*40|0)|0}else{G=p;H=f;I=K;J=L}break}case 65:{be=0;h=da(f+(e*20|0)+4|0,4,0,0)|0|0;G=p+(h*40|0)+8|0;ea(G|0,(da(G|0,2,0,1)|0)&65406|1|0,2,0);G=p;H=f;I=K;J=L;h=p+(h*40|0)|0;break}case 66:{be=0;Wg(h,da(f+(e*20|0)+16|0,4,0,0)|0|0,da(f+(e*20|0)+4|0,4,0,0)|0|0,0,0)|0;ea(h+10>>0|0,Cc|0,1,0);G=p;H=f;I=K;J=L;break}case 67:{be=0;s=(da(f+(e*20|0)+4|0,4,0,0)|0|0)+-1|0;q=da(tb|0,4,0,0)|0|0;m=q+(s*40|0)|0;l=da(q+(s*40|0)+8|0,2,0,1)|0|0;if(l&18){g=da(q+(s*40|0)+12|0,4,0,0)|0|0;if(l&16384)g=(da(m|0,4,0,0)|0|0)+g|0;if((g|0)>(da((da(q+(s*40|0)+32|0,4,0,0)|0|0)+88|0,4,0,0)|0|0)){g=e;h=n;be=1316;break c}}Yl(h,m,2048);G=p;H=f;I=K;J=L;break}case 72:{be=0;g=da(f+(e*20|0)+12|0,4,0,0)|0|0;l=da(f+(e*20|0)+8|0,4,0,0)|0|0;y=g+l|0;h=p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0;l=p+(l*40|0)|0;while(1){Zl(l,h);g=g+-1|0;if(!g)break;else{h=h+40|0;l=l+40|0}}G=p;H=f;I=K;J=L;h=p+(y*40|0)|0;break}case 74:{be=0;e=da(f+(g*20|0)+12|0,4,0,0)|0|0;h=p+((da(f+(g*20|0)+4|0,4,0,0)|0|0)*40|0)|0;y=p+((da(f+(g*20|0)+8|0,4,0,0)|0|0)*40|0)|0;while(1){Yl(y,h,4096);if(((da(y+8|0,2,0,0)|0)&4096)!=0?(Ul(y)|0)!=0:0){o=$d;p=ce;e=d;d=n;be=1317;break a}if(!e){G=p;H=f;I=K;J=L;h=y;e=g;break q}e=e+-1|0;h=h+40|0;y=y+40|0}}case 79:{be=0;h=p+((da(f+(e*20|0)+8|0,4,0,0)|0|0)*40|0)|0;Yl(h,p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0,4096);G=p;H=f;I=K;J=L;break}case 94:{be=0;z=da(f+(g*20|0)+4|0,4,0,0)|0|0;y=p+(z*40|0)|0;A=da(f+(g*20|0)+8|0,4,0,0)|0|0;x=p+(A*40|0)|0;B=da(f+(g*20|0)+12|0,4,0,0)|0|0;h=p+(B*40|0)|0;w=p+(z*40|0)+8|0;u=da(w|0,2,0,0)|0|0;v=p+(A*40|0)+8|0;s=da(v|0,2,0,0)|0|0;if((s|u)&1){e=p+(B*40|0)+8|0;if(!((da(e|0,2,0,0)|0)&9312)){ea(e|0,1|0,2,0);G=p;H=f;I=K;J=L;e=g;break}else{ug(h);G=p;H=f;I=K;J=L;e=g;break}}if(u&16384){if(Qg(y)|0){o=$d;p=ce;e=d;d=n;be=1317;break a}s=da(v|0,2,0,0)|0|0}if((s&16384)!=0?(Qg(x)|0)!=0:0){o=$d;p=ce;e=d;d=n;be=1317;break a}if(((da(w|0,2,0,0)|0)&18)==0?(am(y,Cc,0)|0)!=0:0){o=$d;p=ce;e=d;d=n;be=1317;break a}if(((da(v|0,2,0,0)|0)&18)==0?(am(x,Cc,0)|0)!=0:0){o=$d;p=ce;e=d;d=n;be=1317;break a}u=p+(z*40|0)+12|0;q=p+(A*40|0)+12|0;e=(da(q|0,4,0,0)|0|0)+(da(u|0,4,0,0)|0|0)|0;if((e|0)>(da(sb|0,4,0,0)|0|0)){h=n;be=1316;break c}l=(B|0)==(A|0);if(dh(h,e+2|0,l&1)|0){o=$d;p=ce;e=d;d=n;be=1317;break a}m=p+(B*40|0)+8|0;ea(m|0,(da(m|0,2,0,1)|0)&48640|2|0,2,0);s=p+(B*40|0)+16|0;if(!l)jw(da(s|0,4,0,0)|0|0,da(p+(A*40|0)+16|0,4,0,0)|0|0,da(q|0,4,0,0)|0|0)|0;jw((da(s|0,4,0,0)|0|0)+(da(q|0,4,0,0)|0|0)|0,da(p+(z*40|0)+16|0,4,0,0)|0|0,da(u|0,4,0,0)|0|0)|0;ea((da(s|0,4,0,0)|0|0)+e>>0|0,0|0,1,0);ea((da(s|0,4,0,0)|0|0)+(e+1)>>0|0,0|0,1,0);ea(m|0,da(m|0,2,0,1)|0|512|0,2,0);ea(p+(B*40|0)+12|0,e|0,4,0);ea(p+(B*40|0)+10>>0|0,Cc|0,1,0);G=p;H=f;I=K;J=L;e=g;break}case 112:{be=0;J=da(f+(e*20|0)+4|0,4,0,0)|0|0;D=p+(J*40|0)|0;G=bm(D)|0;m=da(f+(e*20|0)+8|0,4,0,0)|0|0;E=p+(m*40|0)|0;H=bm(E)|0;I=da(f+(e*20|0)+12|0,4,0,0)|0|0;h=p+(I*40|0)|0;r:do if(!((da(p+(m*40|0)+8|0,2,0,0)|0|(da(p+(J*40|0)+8|0,2,0,0)|0))&1)){s:do if(!((G&4&H)<<16>>16))A=0;else{g=D;s=da(g|0,4,0,0)|0|0;g=da(g+4|0,4,0,0)|0|0;v=E;l=da(v|0,4,0,0)|0|0;v=da(v+4|0,4,0,0)|0|0;y=da(F>>0|0,1,0,1)|0|0;t:do if((y|0)==89){if((g|0)>-1|(g|0)==-1&s>>>0>4294967295){J=cw(-1,2147483647,l|0,v|0)|0;m=C;if(((v|0)>0|(v|0)==0&l>>>0>0)&((m|0)<(g|0)|(m|0)==(g|0)&J>>>0>>0)){A=1;break s}}else if((v|0)<0?(m=cw(1,-2147483648,l|0,v|0)|0,q=C,J=iw(s|0,g|0,1,0)|0,B=C,(q|0)>(B|0)|(q|0)==(B|0)&m>>>0>J>>>0):0){A=1;break s}l=iw(l|0,v|0,s|0,g|0)|0;g=C}else if((y|0)==90){if((s|0)==0&(g|0)==-2147483648){if((v|0)>-1|(v|0)==-1&l>>>0>4294967295){A=1;break s}g=v^-2147483648;break}if((g|0)<0|(g|0)==0&s>>>0<1){J=cw(0,0,s|0,g|0)|0;B=C;m=cw(-1,2147483647,l|0,v|0)|0;q=C;if(((v|0)>0|(v|0)==0&l>>>0>0)&((q|0)<(B|0)|(q|0)==(B|0)&m>>>0>>0)){A=1;break s}}else if((v|0)<0?(m=cw(1,-2147483648,l|0,v|0)|0,q=C,J=cw(1,0,s|0,g|0)|0,B=C,(q|0)>(B|0)|(q|0)==(B|0)&m>>>0>J>>>0):0){A=1;break s}l=cw(l|0,v|0,s|0,g|0)|0;g=C}else if((y|0)==91){A=pw(l|0,v|0,0,1)|0;z=C;u=qw(l|0,v|0,0,1)|0;q=C;y=pw(s|0,g|0,0,1)|0;x=C;B=qw(s|0,g|0,0,1)|0;m=C;J=iw(l|0,v|0,-1,0)|0;ie=C;w=iw(s|0,g|0,-1,0)|0;je=C;w=je>>>0<1|(je|0)==1&w>>>0<4294967295;do if(ie>>>0<1|(ie|0)==1&J>>>0<4294967295)if(w){l=rw(l|0,v|0,s|0,g|0)|0;g=C;break t}else{w=rw(y|0,x|0,u|0,q|0)|0;v=C;break}else{if(!w){A=1;break s}w=rw(B|0,m|0,A|0,z|0)|0;v=C}while(0);J=iw(w|0,v|0,-2147483648,0)|0;l=C;if(l>>>0>0|(l|0)==0&J>>>0>4294967295){A=1;break s}y=rw(B|0,m|0,u|0,q|0)|0;x=C;if((x|0)>-1|(x|0)==-1&y>>>0>4294967295){J=cw(-1,2147483647,0,w|0)|0;m=C;if(((v|0)>0|(v|0)==0&w>>>0>0)&((m|0)<(x|0)|(m|0)==(x|0)&J>>>0>>0)){A=1;break s}}else if((v|0)<0?(m=cw(1,-2147483648,0,w|0)|0,g=C,J=iw(y|0,x|0,1,0)|0,l=C,(g|0)>(l|0)|(g|0)==(l|0)&m>>>0>J>>>0):0){A=1;break s}l=iw(0,w|0,y|0,x|0)|0;g=C}else if((y|0)==92){if((s|0)==0&(g|0)==0)break r;if((s|0)==-1&(g|0)==-1&((l|0)==0&(v|0)==-2147483648)){A=1;break s}l=pw(l|0,v|0,s|0,g|0)|0;g=C}else{if((s|0)==-1){if((g|0)==-1){s=1;g=0}}else if((s|0)==0?(g|0)==0:0)break r;l=qw(l|0,v|0,s|0,g|0)|0;g=C}while(0);G=h;ea(G|0,l|0,4,0);ea(G+4|0,g|0,4,0);G=p+(I*40|0)+8|0;ea(G|0,(da(G|0,2,0,1)|0)&48640|4|0,2,0);G=p;H=f;I=K;J=L;break q}while(0);t=+Tg(D);r=+Tg(E);s=da(F>>0|0,1,0,1)|0|0;if((s|0)==89)r=t+r;else if((s|0)==90)r=r-t;else if((s|0)==91)r=t*r;else if((s|0)==92){if(t==0.0)break;r=r/t}else{u=~~t>>>0;s=+N(t)>=1.0?(t>0.0?~~+$(+M(t/4294967296.0),4294967295.0)>>>0:~~+Z((t-+(~~t>>>0))/4294967296.0)>>>0):0;x=~~r>>>0;y=+N(r)>=1.0?(r>0.0?~~+$(+M(r/4294967296.0),4294967295.0)>>>0:~~+Z((r-+(~~r>>>0))/4294967296.0)>>>0):0;if(!u){if(!s)break}else if((u|0)==-1?(s|0)==-1:0){u=1;s=0}J=qw(x|0,y|0,u|0,s|0)|0;r=+(J>>>0)+4294967296.0*+(C|0)}ea(de|0,+r,8,1);ea(Ld|0,+(+(+da(de|0,8,1,0))),8,1);if(!(+(+da(de|0,8,1,0))!=+(+da(Ld|0,8,1,0)))){ea(h|0,+r,8,1);J=p+(I*40|0)+8|0;ea(J|0,(da(J|0,2,0,1)|0)&48640|8|0,2,0);if(((H|G)&8)!=0|A<<24>>24!=0){G=p;H=f;I=K;J=L;break q}cm(h);G=p;H=f;I=K;J=L;break q}}while(0);g=p+(I*40|0)+8|0;if(!((da(g|0,2,0,0)|0)&9312)){ea(g|0,1|0,2,0);G=p;H=f;I=K;J=L;break}else{ug(h);G=p;H=f;I=K;J=L;break}}case 166:{be=0;g=da(f+(e*20|0)+4|0,4,0,0)|0|0;if(g){h=p+(g*40|0)|0;g=p+(g*40|0)+8|0;if(!((da(g|0,2,0,0)|0)&9312)){G=h;ea(G|0,0|0,4,0);ea(G+4|0,0|0,4,0);ea(g|0,4|0,2,0);G=p;H=f;I=K;J=L;h=y;break}else{Yg(h,0,0);G=p;H=f;I=K;J=L;h=y;break}}else{G=p;H=f;I=K;J=L;h=y}break}case 184:{be=0;s=da(f+(e*20|0)+4|0,4,0,0)|0|0;g=da(f+(e*20|0)+8|0,4,0,0)|0|0;z=da(f+(e*20|0)+12|0,4,0,0)|0|0;h=p+(z*40|0)|0;if((da(p+(g*40|0)+8|0,2,0,0)|0|(da(p+(s*40|0)+8|0,2,0,0)|0))&1){g=p+(z*40|0)+8|0;if(!((da(g|0,2,0,0)|0)&9312)){ea(g|0,1|0,2,0);G=p;H=f;I=K;J=L;break}else{ug(h);G=p;H=f;I=K;J=L;break}}q=Ug(p+(g*40|0)|0)|0;A=C;y=Ug(p+(s*40|0)|0)|0;x=C;g=da(w>>0|0,1,0,0)|0|0;s=g&255;do if(g<<24>>24==86){q=y|q;g=x|A}else if(g<<24>>24!=85)if(!((y|0)==0&(x|0)==0)){if((x|0)<0){g=175-s&255;s=cw(0,0,y|0,x|0)|0;if((x|0)>-1|(x|0)==-1&y>>>0>4294967232){x=C;be=194}}else{s=y;be=194}if((be|0)==194){be=0;if(!((x|0)>0|(x|0)==0&s>>>0>63)){if(g<<24>>24==87){q=hw(q|0,A|0,s|0)|0;g=C;break}q=lw(q|0,A|0,s|0)|0;g=C;if((A|0)>=0)break;J=cw(64,0,s|0,x|0)|0;J=hw(-1,-1,J|0)|0;q=J|q;g=C|g;break}}if((A|0)>-1|(A|0)==-1&q>>>0>4294967295){q=0;g=0}else{g=(g<<24>>24!=87)<<31>>31;q=g;g=((g|0)<0)<<31>>31}}else g=A;else{q=y&q;g=x&A}while(0);G=h;ea(G|0,q|0,4,0);ea(G+4|0,g|0,4,0);G=p+(z*40|0)+8|0;ea(G|0,(da(G|0,2,0,1)|0)&48640|4|0,2,0);G=p;H=f;I=K;J=L;break}case 202:{be=0;H=da(f+(e*20|0)+4|0,4,0,0)|0|0;G=p+(H*40|0)|0;I=Ug(G)|0;H=p+(H*40|0)+8|0;ea(H|0,(da(H|0,2,0,1)|0)&48640|4|0,2,0);H=da(f+(e*20|0)+8|0,4,0,0)|0|0;H=iw(I|0,C|0,H|0,((H|0)<0)<<31>>31|0)|0;ea(G|0,H|0,4,0);ea(G+4|0,C|0,4,0);G=p;H=f;I=K;J=L;break}case 203:{be=0;h=da(f+(e*20|0)+4|0,4,0,0)|0|0;l=p+(h*40|0)+8|0;g=da(l|0,2,0,0)|0|0;if(!(g&4)){em(p+(h*40|0)|0,67,Cc);g=da(l|0,2,0,0)|0|0;if(!(g&4)){u=da(f+(e*20|0)+8|0,4,0,0)|0|0;if(!u){g=e;h=20;be=1318;break c}G=p;H=f;I=K;J=L;h=y;e=u+-1|0;break}}ea(l|0,g&48640|4|0,2,0);G=p;H=f;I=K;J=L;h=y;break}case 208:{be=0;g=da(f+(e*20|0)+4|0,4,0,0)|0|0;h=p+(g*40|0)+8|0;if(!((da(h|0,2,0,0)|0)&4)){G=p;H=f;I=K;J=L;h=y}else{G=p+(g*40|0)|0;ea(G|0,+(+Tg(G)),8,1);ea(h|0,(da(h|0,2,0,1)|0)&48640|8|0,2,0);G=p;H=f;I=K;J=L;h=y}break}case 213:{be=0;D=da(f+(g*20|0)+4|0,4,0,0)|0|0;A=p+(D*40|0)|0;m=da(f+(g*20|0)+12|0,4,0,0)|0|0;z=p+(m*40|0)|0;D=p+(D*40|0)+8|0;v=da(D|0,2,0,0)|0|0;m=p+(m*40|0)+8|0;B=da(m|0,2,0,0)|0|0;w=v&65535;q=B&65535;l=f+(g*20|0)+3|0;y=da(l>>0|0,1,0,1)|0|0;do if(!((B|v)&1)){y=y&71;if(y>>>0>66){if((w&14|0)==2){qh(A,0);q=da(m|0,2,0,0)|0|0}else q=B;if((q&14)==2){qh(z,0);y=v;u=B}else{y=v;u=B}}else if((y|0)==66){if((w&2|0)!=0|(w&12|0)==0){x=B;y=v}else{am(A,Cc,1)|0;x=da(m|0,2,0,0)|0|0;y=((da(D|0,2,0,1)|0)&65024|w&511)&65535}J=x&65535;if((J&2|0)!=0|(J&12|0)==0)u=B;else{am(z,Cc,1)|0;u=((da(m|0,2,0,1)|0)&65024|q&511)&65535}}else{y=v;u=B}if((da(D|0,2,0,0)|0)&16384){Qg(A)|0;y=y&49151}if((da(m|0,2,0,0)|0)&16384){Qg(z)|0;u=u&49151}if(da($d>>0|0,1,0,0)|0){o=$d;p=ce;e=d;d=n;be=1317;break a}J=gm(z,A,da(f+(g*20|0)+16|0,4,0,0)|0|0)|0;x=da(s>>0|0,1,0,0)|0|0;e=g;s=J}else{if(y&128){y=v;u=B;e=g;s=(v&1&B)<<16>>16!=0&(q&256|0)==0&1^1;break}if(y&32){h=da(f+(g*20|0)+8|0,4,0,0)|0|0;G=p+(h*40|0)+8|0;ea(G|0,(da(G|0,2,0,1)|0)&48640|1|0,2,0);G=p;H=f;I=K;J=L;h=p+(h*40|0)|0;e=g;break q}if(!(y&16)){G=p;H=f;I=K;J=L;e=g;break q}G=p;H=f;I=K;J=L;e=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;break q}while(0);switch(x&255|0){case 79:{s=(s|0)==0&1;break}case 78:{s=(s|0)!=0&1;break}case 82:{s=s>>>31;break}case 81:{s=(s|0)<1&1;break}case 80:{s=(s|0)>0&1;break}default:s=s>>>31^1}if(!((da(l>>0|0,1,0,0)|0)&32)){if(s)e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}else{J=da(f+(e*20|0)+8|0,4,0,0)|0|0;h=p+(J*40|0)|0;J=p+(J*40|0)+8|0;ea(J|0,(da(J|0,2,0,1)|0)&48640|4|0,2,0);J=h;ea(J|0,s|0,4,0);ea(J+4|0,0|0,4,0)}ea(D|0,y|0,2,0);ea(m|0,u|0,2,0);G=p;H=f;I=K;J=L;break}case 248:{be=0;G=p;H=f;I=da(f+(e*20|0)+16|0,4,0,0)|0|0;J=L;break}case 249:{be=0;m=((da(f+(e*20|0)+3>>0|0,1,0,0)|0)&1)==0?0:K;v=da(f+(e*20|0)+12|0,4,0,0)|0|0;w=da(f+(e*20|0)+16|0,4,0,0)|0|0;x=da(f+(e*20|0)+4|0,4,0,0)|0|0;y=da(f+(e*20|0)+8|0,4,0,0)|0|0;if((v|0)>0){g=(m|0)==0;l=w+16|0;u=0;while(1){if(g)q=u;else q=da(m+(u<<2)|0,4,0,0)|0|0;s=da((da(l|0,4,0,0)|0|0)+u>>0|0,1,0,0)|0|0;q=gm(p+((q+x|0)*40|0)|0,p+((q+y|0)*40|0)|0,da(w+(u<<2)+20|0,4,0,0)|0|0)|0;u=u+1|0;if(q)break;if((u|0)>=(v|0)){G=p;H=f;I=0;J=0;break q}}G=p;H=f;I=0;J=s<<24>>24==0?q:0-q|0}else{G=p;H=f;I=0;J=L}break}case 256:{be=0;if((L|0)<0){G=p;H=f;I=K;J=L;e=(da(f+(g*20|0)+4|0,4,0,0)|0|0)+-1|0;break}if(!L){G=p;H=f;I=K;J=0;e=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;break}else{G=p;H=f;I=K;J=L;e=(da(f+(g*20|0)+12|0,4,0,0)|0|0)+-1|0;break}}case 261:{be=0;g=da(f+(e*20|0)+4|0,4,0,0)|0|0;if(!((da(p+(g*40|0)+8|0,2,0,0)|0)&1)){h=Ug(p+(g*40|0)|0)|0;h=(h|0)!=0|(C|0)!=0?3:0}else h=6;g=da(f+(e*20|0)+8|0,4,0,0)|0|0;if(!((da(p+(g*40|0)+8|0,2,0,0)|0)&1)){g=Ug(p+(g*40|0)|0)|0;g=((g|0)!=0|(C|0)!=0)&1}else g=2;g=da(((da(s>>0|0,1,0,0)|0|0)==72?41680:41696)+(g+h)>>0|0,1,0,0)|0|0;h=da(f+(e*20|0)+12|0,4,0,0)|0|0;y=p+(h*40|0)|0;if(g<<24>>24==2){G=p+(h*40|0)+8|0;ea(G|0,(da(G|0,2,0,1)|0)&48640|1|0,2,0);G=p;H=f;I=K;J=L;h=y;break}else{G=y;ea(G|0,g&255|0,4,0);ea(G+4|0,0|0,4,0);G=p+(h*40|0)+8|0;ea(G|0,(da(G|0,2,0,1)|0)&48640|4|0,2,0);G=p;H=f;I=K;J=L;h=y;break}}case 268:{be=0;g=da(f+(e*20|0)+4|0,4,0,0)|0|0;h=da(f+(e*20|0)+8|0,4,0,0)|0|0;y=p+(h*40|0)|0;h=p+(h*40|0)+8|0;if(!((da(h|0,2,0,0)|0)&9312))ea(h|0,1|0,2,0);else ug(y);if(!((da(p+(g*40|0)+8|0,2,0,0)|0)&1)){ea(h|0,4|0,2,0);H=Ug(p+(g*40|0)|0)|0;G=y;ea(G|0,(H|0)==0&(C|0)==0&1|0,4,0);ea(G+4|0,0|0,4,0);G=p;H=f;I=K;J=L;h=y}else{G=p;H=f;I=K;J=L;h=y}break}case 273:{be=0;g=da(f+(e*20|0)+4|0,4,0,0)|0|0;h=da(f+(e*20|0)+8|0,4,0,0)|0|0;y=p+(h*40|0)|0;h=p+(h*40|0)+8|0;if(!((da(h|0,2,0,0)|0)&9312))ea(h|0,1|0,2,0);else ug(y);if(!((da(p+(g*40|0)+8|0,2,0,0)|0)&1)){ea(h|0,4|0,2,0);H=Ug(p+(g*40|0)|0)|0;G=y;ea(G|0,~H|0,4,0);ea(G+4|0,~C|0,4,0);G=p;H=f;I=K;J=L;h=y}else{G=p;H=f;I=K;J=L;h=y}break}case 278:{be=0;g=(da(Ab|0,4,0,0)|0|0)+(da(f+(e*20|0)+4|0,4,0,0)|0|0)|0;if(!(da(g>>0|0,1,0,0)|0)){ea(g>>0|0,1|0,1,0);G=p;H=f;I=K;J=L;break}else{G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0;break}}case 281:{be=0;g=da(f+(e*20|0)+4|0,4,0,0)|0|0;if(!((da(p+(g*40|0)+8|0,2,0,0)|0)&1)){g=+Tg(p+(g*40|0)|0)!=0.0;g=(g^(da(s>>0|0,1,0,0)|0|0)==46)&1}else g=da(f+(e*20|0)+12|0,4,0,0)|0|0;if(!g){G=p;H=f;I=K;J=L}else{G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}break}case 286:{be=0;if(!((da(p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)+8|0,2,0,0)|0)&1)){G=p;H=f;I=K;J=L}else{G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}break}case 288:{be=0;if(!((da(p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)+8|0,2,0,0)|0)&1)){G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}else{G=p;H=f;I=K;J=L}break}case 290:{be=0;H=da(f+(g*20|0)+8|0,4,0,0)|0|0;B=da(f+(g*20|0)+12|0,4,0,0)|0|0;q=p+(B*40|0)|0;G=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;m=da(G+80|0,4,0,0)|0|0;l=da(G|0,4,0,0)|0|0;if(!(da(G+26>>0|0,1,0,0)|0)){if((l|0)!=0?(da(l+73>>0|0,1,0,0)|0|0)!=1:0){Md=im(G)|0;be=295}}else{Md=hm(G)|0;be=295}if((be|0)==295?(be=0,(Md|0)!=0):0){h=Md;be=1318;break c}A=G+60|0;s=da(Ud|0,4,0,0)|0|0;u:do if((da(A|0,4,0,0)|0|0)==(s|0)){s=da(G+22|0,2,0,0)|0|0;if((s&65535|0)>(H|0))be=350;else{x=G+72|0;be=318}}else{do if(da(G+25>>0|0,1,0,0)|0){if(!l){y=da(G+16|0,4,0,0)|0|0;v=da(p+(y*40|0)+12|0,4,0,0)|0|0;ea(G+68|0,v|0,4,0);ea(G+64|0,v|0,4,0);y=da(p+(y*40|0)+16|0,4,0,0)|0|0;z=G+76|0;ea(z|0,y|0,4,0);break}e=p+(B*40|0)+8|0;if(!((da(e|0,2,0,0)|0)&9312)){ea(e|0,1|0,2,0);break u}else{ug(q);break u}}else{if(!((da(G+27>>0|0,1,0,0)|0)&4)){jm(l,md);x=da(l+40|0,2,0,1)|0|0;y=da(l+32|0,4,0,0)|0|0;ea(G+76|0,y|0,4,0);s=da(md|0,4,0,0)|0|0;ea(G+64|0,s|0,4,0)}else{s=G+64|0;km(l,s);x=da(l+40|0,2,0,1)|0|0;y=da(l+32|0,4,0,0)|0|0;ea(G+76|0,y|0,4,0);s=da(s|0,4,0,0)|0|0}ea(G+68|0,(s>>>0>x>>>0?x:s)|0,4,0);if(s>>>0>(da(sb|0,4,0,0)|0|0)>>>0){h=n;be=1316;break c}z=G+76|0;s=da(Ud|0,4,0,0)|0|0;v=x}while(0);ea(A|0,s|0,4,0);s=da(y>>0|0,1,0,0)|0|0;if(s<<24>>24>-1){w=s&255;ea(_c|0,w|0,4,0);y=1}else{y=lm(y,_c)|0;w=da(_c|0,4,0,0)|0|0}x=G+72|0;ea(x|0,y&255|0,4,0);ea(G+22|0,0|0,2,0);ea(m|0,w|0,4,0);if(w>>>0>98307){h=n;be=313;break c}if(w>>>0>(da(G+64|0,4,0,0)|0|0)>>>0){h=n;be=313;break c}if(v>>>0>>0){ea(z|0,0|0,4,0);ea(G+68|0,0|0,4,0);s=0;be=318}else{s=0;be=318}}while(0);do if((be|0)==318){be=0;y=da(x|0,4,0,0)|0|0;w=da(m|0,4,0,0)|0|0;if(y>>>0>>0){F=G+76|0;v=da(F|0,4,0,0)|0|0;if(!v){I=Cd+0|0;J=I+40|0;do{ea(I|0,0|0,4,0);I=I+4|0}while((I|0)<(J|0));y=mm(l,0,da(m|0,4,0,0)|0|0,((da(G+27>>0|0,1,0,1)|0|0)>>>2&1^1)&255,Cd)|0;if(y){f=y;h=n;be=1309;break c}s=G+22|0;E=s;s=da(s|0,2,0,0)|0|0;y=da(x|0,4,0,0)|0|0;w=da(m|0,4,0,0)|0|0;D=da(Cb|0,4,0,0)|0|0}else{E=G+22|0;D=v}u=s&65535;z=da(m+(u<<2)|0,4,0,0)|0|0;ea(_c|0,z|0,4,0);s=D+w|0;y=D+y|0;while(1){v=da(y>>0|0,1,0,0)|0|0;if(v<<24>>24>-1){A=v&255;ea(Ed|0,A|0,4,0);y=y+1|0}else{y=y+((lm(y,Ed)|0)&255)|0;A=da(Ed|0,4,0,0)|0|0}ea(G+(u<<2)+84|0,A|0,4,0);if(A>>>0>11)v=(A+-12|0)>>>1;else v=da(34336+A>>0|0,1,0,1)|0|0;A=z+v|0;ea(_c|0,A|0,4,0);if(A>>>0>>0){y=A;v=u;be=331;break}v=u+1|0;ea(m+(v<<2)|0,A|0,4,0);if((u|0)<(H|0)&y>>>0>>0){z=A;u=v}else break}if((be|0)==331){be=0;A=y;y=D+(w+1)|0}ea(E|0,v|0,2,0);ea(x|0,y-D|0,4,0);if(!(da(F|0,4,0,0)|0)){if(!(((da(Db|0,2,0,0)|0)&9312)==0&(da(Eb|0,4,0,0)|0|0)==0))Pg(Cd);ea(Db|0,1|0,2,0)}if(y>>>0>=s>>>0){if(y>>>0>s>>>0){h=n;be=343;break c}if((A|0)==(da(G+64|0,4,0,0)|0|0))s=A;else{h=n;be=343;break c}}else s=da(G+64|0,4,0,0)|0|0;if(A>>>0>s>>>0){h=n;be=343;break c}s=da(E|0,2,0,0)|0|0}if((s&65535|0)<=(H|0)){if((da(f+(g*20|0)+1>>0|0,1,0,0)|0|0)==-8){Yl(q,da(f+(g*20|0)+16|0,4,0,0)|0|0,2048);e=p+(B*40|0)+8|0;break}e=p+(B*40|0)+8|0;if(!((da(e|0,2,0,0)|0)&9312)){ea(e|0,1|0,2,0);break}else{ug(q);break}}else be=350}while(0);if((be|0)==350){be=0;e=p+(B*40|0)+8|0;if((da(e|0,2,0,0)|0)&9312)ug(q);y=da(G+(H<<2)+84|0,4,0,0)|0|0;ea(Ed|0,y|0,4,0);do if((da(G+68|0,4,0,0)|0|0)>>>0<(da(m+(H+1<<2)|0,4,0,0)|0|0)>>>0){J=da(f+(g*20|0)+3>>0|0,1,0,0)|0|0;if(!((J&255)>63?y>>>0>11&(y&1|0)==0|J<<24>>24<0:0)){if(y>>>0>11)s=(y+-12|0)>>>1;else s=da(34336+y>>0|0,1,0,1)|0|0;if(s){s=mm(l,da(m+(H<<2)|0,4,0,0)|0|0,s,((da(G+27>>0|0,1,0,1)|0|0)>>>2&1^1)&255,q)|0;if(s){f=s;h=n;be=1309;break c}nm(da(p+(B*40|0)+16|0,4,0,0)|0|0,y,q)|0;ea(e|0,(da(e|0,2,0,1)|0)&61439|0,2,0);break}}nm(y>>>0<14?md:0,y,q)|0}else nm((da(G+76|0,4,0,0)|0|0)+(da(m+(H<<2)|0,4,0,0)|0|0)|0,y,q)|0;while(0);ea(p+(B*40|0)+10>>0|0,Cc|0,1,0)}m=da(e|0,2,0,1)|0|0;if((m&4096|0)!=0?(tc=p+(B*40|0)+16|0,uc=da(tc|0,4,0,0)|0|0,(uc|0)!=0):0){l=da(p+(B*40|0)+12|0,4,0,0)|0|0;if(eh(q,l+2|0)|0){o=$d;p=ce;e=d;d=n;be=1317;break a}jw(da(tc|0,4,0,0)|0|0,uc|0,l|0)|0;ea((da(tc|0,4,0,0)|0|0)+l>>0|0,0|0,1,0);ea((da(tc|0,4,0,0)|0|0)+(l+1)>>0|0,0|0,1,0);ea(e|0,m&18|512|0,2,0);G=p;H=f;I=K;J=L;e=g}else{G=p;H=f;I=K;J=L;e=g}break}case 368:{be=0;l=da(f+(e*20|0)+16|0,4,0,0)|0|0;g=da(l>>0|0,1,0,0)|0|0;if(!(g<<24>>24)){G=p;H=f;I=K;J=L}else{m=p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0;while(1){l=l+1|0;em(m,g,Cc);g=da(l>>0|0,1,0,0)|0|0;if(!(g<<24>>24)){G=p;H=f;I=K;J=L;break}else m=m+40|0}}break}case 371:{be=0;I=da(f+(g*20|0)+4|0,4,0,0)|0|0;s=da(f+(g*20|0)+16|0,4,0,0)|0|0;J=p+(I*40|0)|0;I=p+((I+-1+(da(f+(g*20|0)+8|0,4,0,0)|0|0)|0)*40|0)|0;q=da(Fb>>0|0,1,0,0)|0|0;H=da(f+(g*20|0)+12|0,4,0,0)|0|0;h=p+(H*40|0)|0;if(s){e=da(s>>0|0,1,0,0)|0|0;l=J;while(1){s=s+1|0;em(l,e,Cc);e=da(s>>0|0,1,0,0)|0|0;if(!(e<<24>>24))break;else l=l+40|0}}D=(q&255)>3;A=0;z=0;E=0;s=0;m=I;while(1){u=da(m+8|0,2,0,0)|0|0;x=u&65535;v:do if(!(x&1)){do if(!(x&4)){if(x&8){y=7;be=388;break v}y=da(m+12|0,4,0,0)|0|0;if(x&16384)y=(da(m|0,4,0,0)|0|0)+y|0;y=(y<<1)+12|x>>>1&1}else{x=m;y=da(x|0,4,0,0)|0|0;x=da(x+4|0,4,0,0)|0|0;w=dw(y|0,x|0,63)|0;w=w^y;v=C^x;if(v>>>0<0|(v|0)==0&w>>>0<128){if(!((y&1|0)==(y|0)&0==(x|0)&D)){y=1;be=388;break v}y=w+8|0;break}if(v>>>0<0|(v|0)==0&w>>>0<32768){y=2;be=388;break v}if(v>>>0<0|(v|0)==0&w>>>0<8388608){y=3;be=388;break v}if(v>>>0<0|(v|0)==0&w>>>0<2147483648){y=4;be=388;break v}y=v>>>0<32768|(v|0)==32768&w>>>0<0?5:6;be=388;break v}while(0);ea(m+28|0,y|0,4,0);if(y>>>0>11){x=y;y=(y+-12|0)>>>1}else be=391}else{y=0;be=388}while(0);if((be|0)==388){ea(m+28|0,y|0,4,0);be=391}if((be|0)==391){be=0;x=y;y=da(34336+y>>0|0,1,0,1)|0|0}do if(u&16384)if((A|0)==0&(z|0)==0){u=da(m|0,4,0,0)|0|0;y=y-u|0;u=u+s|0;break}else{Qg(m)|0;u=s;break}else u=s;while(0);A=iw(y|0,((y|0)<0)<<31>>31|0,A|0,z|0)|0;z=C;if(x>>>0<128)y=1;else{w=0;y=0;do{y=y+1|0;x=lw(x|0,w|0,7)|0;w=C}while(((x|0)!=0|(w|0)!=0)&(y|0)<9)}y=y+E|0;m=m+-40|0;if(m>>>0>>0){v=y;F=u;break}else{E=y;s=u}}if((v|0)<127)x=v+1|0;else{x=v;w=((v|0)<0)<<31>>31;y=0;do{y=y+1|0;x=lw(x|0,w|0,7)|0;w=C}while(((x|0)!=0|(w|0)!=0)&(y|0)<9);v=y+v|0;x=v;w=((v|0)<0)<<31>>31;s=0;do{s=s+1|0;x=lw(x|0,w|0,7)|0;w=C}while(((x|0)!=0|(w|0)!=0)&(s|0)<9);x=((y|0)<(s|0)&1)+v|0}y=((x|0)<0)<<31>>31;u=iw(x|0,y|0,A|0,z|0)|0;D=C;G=da(sb|0,4,0,0)|0|0;E=((G|0)<0)<<31>>31;if((D|0)>(E|0)|(D|0)==(E|0)&u>>>0>G>>>0){h=n;be=1316;break c}if(eh(h,u)|0){o=$d;p=ce;e=d;d=n;be=1317;break a}q=da(p+(H*40|0)+16|0,4,0,0)|0|0;if(x>>>0<128){ea(q>>0|0,x|0,1,0);z=1;A=J}else{z=(om(q,x,y)|0)&255;A=J}while(1){w=da(A+28|0,4,0,0)|0|0;if(w>>>0<128){ea(q+z>>0|0,w|0,1,0);y=1}else y=(om(q+z|0,w,0)|0)&255;z=y+z|0;y=q+x|0;if(!(w>>>0<8&(w|0)!=0))if(w>>>0>11){s=da(A+12|0,4,0,0)|0|0;jw(y|0,da(A+16|0,4,0,0)|0|0,s|0)|0}else s=0;else{y=A;if(w>>>0>11)s=(w+-12|0)>>>1;else s=da(34336+w>>0|0,1,0,1)|0|0;v=da(y|0,4,0,0)|0|0;y=da(y+4|0,4,0,0)|0|0;w=s;while(1){w=w+-1|0;ea(q+(w+x)>>0|0,v|0,1,0);v=lw(v|0,y|0,8)|0;if(!w)break;else y=C}}A=A+40|0;if(A>>>0>I>>>0)break;else x=s+x|0}ea(p+(H*40|0)+12|0,u|0,4,0);e=p+(H*40|0)+8|0;ea(e|0,16|0,2,0);if(F){ea(h|0,F|0,4,0);ea(e|0,16400|0,2,0)}ea(p+(H*40|0)+10>>0|0,1|0,1,0);G=p;H=f;I=K;J=L;e=g;break}case 446:{be=0;if((da(Vd|0,4,0,0)|0|0)>0){h=n;be=447;break c}if(!l)m=0;else{g=l;while(1)if(!(da(g>>0|0,1,0,0)|0))break;else g=g+1|0;m=g-l&1073741823}h=rm(ee,0,(da(Hb|0,4,0,0)|0|0)+(da(Gb|0,4,0,0)|0|0)|0)|0;if(h){g=e;be=1318;break c}g=lh(ee,m+33|0,0)|0;if(!g){G=p;H=f;I=K;J=L;h=A}else{J=g+32|0;ea(g|0,J|0,4,0);jw(J|0,l|0,m+1|0)|0;if(!(da(Zd>>0|0,1,0,0)|0))ea(Hb|0,(da(Hb|0,4,0,0)|0|0)+1|0,4,0);else{ea(Zd>>0|0,0|0,1,0);ea(Lb>>0|0,1|0,1,0)}ea(g+24|0,da(Ib|0,4,0,0)|0|0,4,0);ea(Ib|0,g|0,4,0);H=Jb;I=da(H+4|0,4,0,0)|0|0;G=g+8|0;ea(G|0,da(H|0,4,0,0)|0|0,4,0);ea(G+4|0,I|0,4,0);I=Kb;G=da(I+4|0,4,0,0)|0|0;H=g+16|0;ea(H|0,da(I|0,4,0,0)|0|0,4,0);ea(H+4|0,G|0,4,0);G=p;H=f;I=K;J=L;h=A}break}case 486:{ea(Hb|0,(da(Hb|0,4,0,0)|0|0)+-1|0,4,0);be=488;break}case 525:{be=0;vm(da((da(Qd|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<4)+4|0,4,0,0)|0|0,da(f+(e*20|0)+12|0,4,0,0)|0|0,Qc);G=da(Qc|0,4,0,0)|0|0;H=h;ea(H|0,G|0,4,0);ea(H+4|0,((G|0)<0)<<31>>31|0,4,0);G=p;H=f;I=K;J=L;break}case 558:{be=0;l=wm(a,da(f+(g*20|0)+4|0,4,0,0)|0|0,da(f+(g*20|0)+8|0,4,0,0)|0|0,-1,1)|0;if(!l){o=$d;p=ce;e=d;d=n;be=1317;break a}e=da(f+(g*20|0)+16|0,4,0,0)|0|0;s=l+8|0;ea(s|0,e|0,4,0);q=da(f+(g*20|0)+12|0,4,0,0)|0|0;e=(da(e+6|0,2,0,1)|0)<<2;h=e+148|0;m=lh(ee,h,0)|0;if(!m){f=l;h=n;be=560;break c}ew(m|0,0,h|0)|0;ea(l+56|0,m|0,4,0);J=m+128|0;ea(m+28|0,J|0,4,0);jw(J|0,da(s|0,4,0,0)|0|0,e+20|0)|0;ea(m+140|0,0|0,4,0);if(q)ea(m+134|0,q|0,2,0);e=da(Qd|0,4,0,0)|0|0;h=da((da((da(e+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+32|0,4,0,0)|0|0;ea(m+12|0,h|0,4,0);ea(m+59>>0|0,1|0,1,0);ea(m+57>>0|0,0|0,1,0);ea(m+24|0,ee|0,4,0);ea(m+72|0,m|0,4,0);if(((da(Tb>>0|0,1,0,0)|0|0)!=2?(wc=da(2242*4|0,4,0,0)|0|0,ea(m|0,_(wc,h)|0|0,4,0),J=da((da(e+12|0,4,0,0)|0|0)+80|0,4,0,0)|0|0,J=(J|0)<(wc|0)?wc:J,wc=((h|0)<0)<<31>>31,J=rw(J|0,((J|0)<0)<<31>>31|0,h|0,wc|0)|0,I=C,ea(m+4|0,((I|0)<0|(I|0)==0&J>>>0<536870912?J:536870912)|0,4,0),(da(2234*4|0,4,0,0)|0|0)==0):0)?(ea(m+52|0,h|0,4,0),J=pg(h,wc)|0,ea(m+40|0,J|0,4,0),(J|0)==0):0){f=7;h=n;be=1309;break c}else{G=p;H=f;I=K;J=L;h=A;e=g}break}case 566:{be=0;H=(da((da(Bb|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0)+40|0;J=H;I=da(J|0,4,0,0)|0|0;J=da(J+4|0,4,0,0)|0|0;G=iw(I|0,J|0,1,0)|0;ea(H|0,G|0,4,0);ea(H+4|0,C|0,4,0);if((I|0)==0&(J|0)==0){G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}else{G=p;H=f;I=K;J=L}break}case 568:{be=0;e=wm(a,da(f+(g*20|0)+4|0,4,0,0)|0|0,da(f+(g*20|0)+12|0,4,0,0)|0|0,-1,0)|0;if(!e){o=$d;p=ce;e=d;d=n;be=1317;break a}ea(e+25>>0|0,1|0,1,0);ea(e+16|0,da(f+(g*20|0)+8|0,4,0,0)|0|0,4,0);G=e+27|0;ea(G>>0|0,da(G>>0|0,1,0,0)|0|4|0,1,0);G=p;H=f;I=K;J=L;e=g;break}case 570:{be=0;G=f+(e*20|0)+4|0;Am(a,da((da(Bb|0,4,0,0)|0|0)+((da(G|0,4,0,0)|0)<<2)|0,4,0,0)|0|0);ea((da(Bb|0,4,0,0)|0|0)+((da(G|0,4,0,0)|0)<<2)|0,0|0,4,0);G=p;H=f;I=K;J=L;break}case 571:{be=0;w=da((da(Bb|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;ea(w+25>>0|0,0|0,1,0);if(!((da(w+27>>0|0,1,0,0)|0)&4)){J=da(f+(e*20|0)+16|0,4,0,0)|0|0;ea(pd|0,da(w+8|0,4,0,0)|0|0,4,0);ea(Ub|0,J|0,2,0);ea(Vb>>0|0,(z<<1&2^2)+255|0,1,0);J=da(f+(e*20|0)+12|0,4,0,0)|0|0;g=p+(J*40|0)|0;ea(Wb|0,g|0,4,0);if((da(p+(J*40|0)+8|0,2,0,0)|0)&16384)Qg(g)|0;h=Bm(da(w|0,4,0,0)|0|0,pd,0,0,0,td)|0;if(!h){h=z;y=A}else{g=e;be=1318;break c}}else{s=da(f+(e*20|0)+12|0,4,0,0)|0|0;q=p+(s*40|0)|0;s=p+(s*40|0)+8|0;if(((da(s|0,2,0,0)|0)&14)==2)qh(q,0);y=Ug(q)|0;x=C;s=da(s|0,2,0,1)|0|0;do if(!(s&4)){if(!(s&8)){G=p;H=f;I=K;J=L;h=A;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0;break q}r=+(+da(q|0,8,1,0));t=+(y>>>0)+4294967296.0*+(x|0);if(r>31)+z|0;break}else{s=(r>t&(z&1|0)==0&1)+z|0;break}}else s=z;while(0);h=Bm(da(w|0,4,0,0)|0|0,0,y,x,0,td)|0;J=w+48|0;ea(J|0,y|0,4,0);ea(J+4|0,x|0,4,0);if(!h){h=s;y=A}else{g=e;be=1318;break c}}ea(w+26>>0|0,0|0,1,0);ea(w+60|0,0|0,4,0);g=da(td|0,4,0,0)|0|0;do if((h|0)>63){if((g|0)>=0?!((g|0)==0&(h|0)==65):0){ea(td|0,0|0,4,0);G=p;H=f;I=K;J=L;h=y;break q}ea(td|0,0|0,4,0);h=Cm(da(w|0,4,0,0)|0|0,td)|0;if(!h)be=593;else{g=e;be=1318;break c}}else{if((g|0)<=0?!((g|0)==0&(h|0)==62):0){g=(da((da(w|0,4,0,0)|0|0)+73>>0|0,1,0,0)|0|0)!=1&1;ea(td|0,g|0,4,0);break}ea(td|0,0|0,4,0);h=Dm(da(w|0,4,0,0)|0|0,td)|0;if(!h)be=593;else{g=e;be=1318;break c}}while(0);if((be|0)==593){be=0;g=da(td|0,4,0,0)|0|0}if(!g){G=p;H=f;I=K;J=L;h=y}else{G=p;H=f;I=K;J=L;h=y;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}break}case 596:{be=0;G=da((da(Bb|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;ea(G+25>>0|0,0|0,1,0);I=Ug(p+((da(f+(e*20|0)+8|0,4,0,0)|0|0)*40|0)|0)|0;H=G+48|0;ea(H|0,I|0,4,0);ea(H+4|0,C|0,4,0);ea(G+26>>0|0,1|0,1,0);G=p;H=f;I=K;J=L;break}case 597:{be=0;x=da((da(Bb|0,4,0,0)|0|0)+((da(f+(g*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;e=da(f+(g*20|0)+12|0,4,0,0)|0|0;y=p+(e*40|0)|0;ea(hd|0,0|0,4,0);z=f+(g*20|0)+16|0;s=da(z|0,4,0,0)|0|0;l=x+8|0;q=da(l|0,4,0,0)|0|0;w:do if((s|0)>0){ea(qd|0,q|0,4,0);s=s&65535;ea(Xb|0,s|0,2,0);ea(Yb|0,y|0,4,0);if(!(s<<16>>16))l=qd;else{e=y;q=0;while(1){if((da(e+(q*40|0)+8|0,2,0,0)|0)&16384){Qg(e+(q*40|0)|0)|0;s=da(Xb|0,2,0,0)|0|0}q=q+1|0;if((q|0)>=(s&65535|0)){l=qd;break w}e=da(Yb|0,4,0,0)|0|0}}}else{s=Em(q,Lc,191,hd)|0;if(!s){o=$d;p=ce;e=d;d=n;be=1317;break a}if((da(p+(e*40|0)+8|0,2,0,0)|0)&16384)Qg(y)|0;Fm(da(l|0,4,0,0)|0|0,da(p+(e*40|0)+12|0,4,0,0)|0|0,da(p+(e*40|0)+16|0,4,0,0)|0|0,s);l=s}while(0);ea(l+6>>0|0,0|0,1,0);x:do if((da(w>>0|0,1,0,0)|0|0)==67?(xc=da(l+4|0,2,0,0)|0|0,xc<<16>>16!=0):0){s=da(l+8|0,4,0,0)|0|0;q=0;while(1){if((da(s+(q*40|0)+8|0,2,0,0)|0)&1)break;q=q+1|0;if((q|0)>=(xc&65535|0)){A=g;e=g;break x}}A=g;e=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0}else{A=g;e=g}while(0);s=Bm(da(x|0,4,0,0)|0|0,l,0,0,0,ud)|0;if(!(da(z|0,4,0,0)|0))lg(ee,da(hd|0,4,0,0)|0|0);if(s){g=e;f=s;h=n;be=1309;break c}g=da(ud|0,4,0,0)|0|0;ea(x+12|0,g|0,4,0);g=(g|0)==0;ea(x+25>>0|0,g&1^1|0,1,0);ea(x+26>>0|0,0|0,1,0);ea(x+60|0,0|0,4,0);if((da(w>>0|0,1,0,0)|0|0)==69){if(!g){G=p;H=f;I=K;J=L;break}G=p;H=f;I=K;J=L;e=(da(f+(A*20|0)+8|0,4,0,0)|0|0)+-1|0;break}else{if(g){G=p;H=f;I=K;J=L;break}G=p;H=f;I=K;J=L;e=(da(f+(A*20|0)+8|0,4,0,0)|0|0)+-1|0;break}}case 624:{be=0;H=(da((da(Bb|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0)+40|0;G=H;I=da(G|0,4,0,0)|0|0;G=da(G+4|0,4,0,0)|0|0;J=iw(I|0,G|0,1,0)|0;ea(H|0,J|0,4,0);ea(H+4|0,C|0,4,0);H=h;ea(H|0,I|0,4,0);ea(H+4|0,G|0,4,0);G=p;H=f;I=K;J=L;break}case 647:{be=0;x=da(f+(e*20|0)+8|0,4,0,0)|0|0;l=da((da(Bb|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;g=da(f+(e*20|0)+12|0,4,0,0)|0|0;if(s<<24>>24==75){v=p+(g*40|0)|0;u=da(v|0,4,0,0)|0|0;v=da(v+4|0,4,0,0)|0|0}else{u=g;v=((g|0)<0)<<31>>31}w=f+(e*20|0)+3|0;y=da(w>>0|0,1,0,0)|0|0;if(y&1)ea(nb|0,(da(nb|0,4,0,0)|0|0)+1|0,4,0);if(y&2){d=ge;ea(d|0,u|0,4,0);ea(d+4|0,v|0,4,0);d=u;c=v}s=da(p+(x*40|0)+8|0,2,0,0)|0|0;if(s&1){ea(p+(x*40|0)+16|0,0|0,4,0);ea(p+(x*40|0)+12|0,0|0,4,0)}if(!(y&16))q=0;else q=da(l+12|0,4,0,0)|0|0;if(!(s&16384))s=0;else s=da(p+(x*40|0)|0,4,0,0)|0|0;s=Hm(da(l|0,4,0,0)|0|0,0,u,v,da(p+(x*40|0)+16|0,4,0,0)|0|0,da(p+(x*40|0)+12|0,4,0,0)|0|0,s,(y&255)>>>3&1,q)|0;ea(l+26>>0|0,0|0,1,0);ea(l+60|0,0|0,4,0);if(s){g=e;f=s;h=n;be=1309;break c}g=da(Zb|0,4,0,0)|0|0;if((g|0)!=0?(yc=da(f+(e*20|0)+16|0,4,0,0)|0|0,(yc|0)!=0):0){ac[(fa(g|0,1|0)|0)&1](da(_b|0,4,0,0)|0|0,((da(w>>0|0,1,0,0)|0)&4)!=0?23:18,da((da(Qd|0,4,0,0)|0|0)+((da(l+24>>0|0,1,0,0)|0)<<4)|0,4,0,0)|0|0,yc,u,v);G=p;H=f;I=K;J=L}else{G=p;H=f;I=K;J=L}break}case 671:{be=0;G=da(nb|0,4,0,0)|0|0;ea(ob|0,G|0,4,0);ea(pb|0,(da(pb|0,4,0,0)|0|0)+G|0,4,0);ea(nb|0,0|0,4,0);G=p;H=f;I=K;J=L;break}case 672:{be=0;y=da((da(Bb|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;x=da(f+(e*20|0)+12|0,4,0,0)|0|0;w=da(f+(e*20|0)+16|0,4,0,0)|0|0;g=da(y+56|0,4,0,0)|0|0;q=g+32|0;s=da(q|0,4,0,0)|0|0;y=da(y+8|0,4,0,0)|0|0;if(!s){s=Em(y,0,0,dd)|0;ea(q|0,s|0,4,0);if(!s){g=e;f=7;h=n;be=1309;break c}ea(s+4|0,w|0,2,0)}if(!(da(g+56>>0|0,1,0,0)|0)){g=da(g+36|0,4,0,0)|0|0;q=g;g=g+8|0}else{J=da(g+20|0,4,0,0)|0|0;g=da((da(J+8|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;J=da(J+12|0,4,0,0)|0|0;q=J+(g*56|0)+20|0;g=da(J+(g*56|0)+32|0,4,0,0)|0|0}Fm(y,da(q|0,4,0,0)|0|0,g,s);y:do if((w|0)>0){g=da(s+8|0,4,0,0)|0|0;l=0;while(1){if((da(g+(l*40|0)+8|0,2,0,0)|0)&1)break y;l=l+1|0;if((l|0)>=(w|0)){be=682;break}}}else be=682;while(0);if((be|0)==682){be=0;if(!(Jm(da(p+(x*40|0)+12|0,4,0,0)|0|0,da(p+(x*40|0)+16|0,4,0,0)|0|0,s,0)|0)){G=p;H=f;I=K;J=L;break}}G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0;break}case 700:{be=0;ea(h+8|0,1|0,2,0);G=p;H=f;I=K;J=L;break}case 708:{be=0;ea(h+8|0,1|0,2,0);G=p;H=f;I=K;J=L;break}case 711:{be=0;g=da((da(Bb|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;ea(g+25>>0|0,1|0,1,0);ea(g+60|0,0|0,4,0);g=da(g|0,4,0,0)|0|0;if(!g){G=p;H=f;I=K;J=L}else{G=g+56|0;Vc(da(G|0,4,0,0)|0|0);ea(G|0,0|0,4,0);ea(g+73>>0|0,0|0,1,0);G=p;H=f;I=K;J=L}break}case 801:{be=0;g=da((da(Bb|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<2)|0,4,0,0)|0|0;h=da(g|0,4,0,0)|0|0;z=A+8|0;ea(z|0,1|0,2,0);if((da(h+73>>0|0,1,0,0)|0|0)!=1?(Od=im(g)|0,(Od|0)!=0):0){g=e;h=Od;be=1318;break c}if(!(da(g+25>>0|0,1,0,0)|0)){J=Ld;ea(J|0,0|0,4,0);ea(J+4|0,0|0,4,0);jm(h,Ld);ea(fc|0,0|0,2,0);ea(gc|0,ee|0,4,0);ea(hc|0,0|0,4,0);h=mm(h,0,da(Ld|0,4,0,0)|0|0,1,Tc)|0;do if(!h){g=da(jc|0,4,0,0)|0|0;h=da(g>>0|0,1,0,0)|0|0;if(h<<24>>24>-1){s=h&255;ea(jd|0,s|0,4,0)}else{lm(g,jd)|0;s=da(jd|0,4,0,0)|0|0}if(!(s>>>0<3?1:(s|0)>(da(mc|0,4,0,0)|0|0))){g=(da(jc|0,4,0,0)|0|0)+(s+-1)|0;h=da(g>>0|0,1,0,0)|0|0;if(h<<24>>24>-1){h=h&255;ea(Gd|0,h|0,4,0)}else{lm(g,Gd)|0;h=da(Gd|0,4,0,0)|0|0}if(!((h+-1|0)>>>0>8|(h|0)==7)){if(h>>>0>11)g=(h+-12|0)>>>1;else g=da(34336+h>>0|0,1,0,1)|0|0;l=da(mc|0,4,0,0)|0|0;if(l>>>0>=(g+s|0)>>>0){nm((da(jc|0,4,0,0)|0|0)+(l-g)|0,h,Jd)|0;l=Jd;g=da(l|0,4,0,0)|0|0;l=da(l+4|0,4,0,0)|0|0;if(((da(fc|0,2,0,0)|0)&9312)==0&(da(hc|0,4,0,0)|0|0)==0){h=0;break}Pg(Tc);h=0;break}}}if(!(((da(fc|0,2,0,0)|0)&9312)==0&(da(hc|0,4,0,0)|0|0)==0))Pg(Tc);ea(de|0,68698|0,4,0);ea(de+4|0,10788|0,4,0);ad(11,13600,de);h=11;g=0;l=0}else{g=0;l=0}while(0);if(h){g=e;be=1318;break c}G=A;ea(G|0,g|0,4,0);ea(G+4|0,l|0,4,0);ea(z|0,4|0,2,0);G=p;H=f;I=K;J=L;h=A}else{G=p;H=f;I=K;J=L;h=A}break}case 865:{be=0;m=da(s|0,4,0,0)|0|0;s=da((da(Qd|0,4,0,0)|0|0)+(z<<4)+12|0,4,0,0)|0|0;g=da(s+16|0,4,0,0)|0|0;if(g)do{l=(da(g+8|0,4,0,0)|0|0)+32|0;if((da(l|0,4,0,0)|0|0)==(q|0))ea(l|0,m|0,4,0);g=da(g|0,4,0,0)|0|0}while((g|0)!=0);g=da(s+32|0,4,0,0)|0|0;if(g)do{l=(da(g+8|0,4,0,0)|0|0)+40|0;if((da(l|0,4,0,0)|0|0)==(q|0))ea(l|0,m|0,4,0);g=da(g|0,4,0,0)|0|0}while((g|0)!=0);G=p;H=f;I=K;J=L;n=z+1&255;break}case 878:{be=0;Zm(ee,h);G=p;H=f;I=K;J=L;h=y;break}case 881:{be=0;J=da(f+(e*20|0)+4|0,4,0,0)|0|0;ea(Rc|0,ee|0,4,0);ea(W|0,J|0,4,0);ea(X|0,ce|0,4,0);h=da(f+(e*20|0)+16|0,4,0,0)|0|0;ea(de|0,da((da(Qd|0,4,0,0)|0|0)+(J<<4)|0,4,0,0)|0|0,4,0);ea(de+4|0,((J|0)==1?13184:13208)|0,4,0);ea(de+8|0,h|0,4,0);h=th(ee,42048,de)|0;if(!h){g=e;h=n;be=882;break c}ea(Y>>0|0,1|0,1,0);ea(aa|0,0|0,4,0);g=Pe(ee,h,22,Rc,0)|0;g=(g|0)==0?da(aa|0,4,0,0)|0|0:g;lg(ee,h);ea(Y>>0|0,0|0,1,0);if(!g){G=p;H=f;I=K;J=L;h=y}else{f=g;g=e;h=n;be=884;break c}break}case 886:{be=0;jg(ee,Hk((da((da(Qd|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<4)+12|0,4,0,0)|0|0)+8|0,da(f+(e*20|0)+16|0,4,0,0)|0|0,0)|0);ea(Mb|0,da(Mb|0,4,0,0)|0|2|0,4,0);G=p;H=f;I=K;J=L;break}case 887:{be=0;s=Hk((da((da(Qd|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<4)+12|0,4,0,0)|0|0)+24|0,da(f+(e*20|0)+16|0,4,0,0)|0|0,0)|0;if(s){g=(da(s+12|0,4,0,0)|0|0)+8|0;h=da(g|0,4,0,0)|0|0;z:do if((h|0)==(s|0))ea(g|0,da(s+20|0,4,0,0)|0|0,4,0);else{do{if(!h)break z;g=h+20|0;h=da(g|0,4,0,0)|0|0}while((h|0)!=(s|0));ea(g|0,da(s+20|0,4,0,0)|0|0,4,0)}while(0);Ik(ee,s)}ea(Mb|0,da(Mb|0,4,0,0)|0|2|0,4,0);G=p;H=f;I=K;J=L;h=y;break}case 895:{be=0;s=Hk((da((da(Qd|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<4)+12|0,4,0,0)|0|0)+40|0,da(f+(e*20|0)+16|0,4,0,0)|0|0,0)|0;if(!s){G=p;H=f;I=K;J=L}else{g=da(s+20|0,4,0,0)|0|0;if((g|0)==(da(s+24|0,4,0,0)|0|0)){g=an(g+8|0,da(s+4|0,4,0,0)|0|0,de)|0;if(!g)g=0;else g=da(g+8|0,4,0,0)|0|0;l=g+64|0;while(1){J=da(l|0,4,0,0)|0|0;g=J+32|0;if((J|0)==(s|0))break;else l=g}ea(l|0,da(g|0,4,0,0)|0|0,4,0)}ig(ee,s);ea(Mb|0,da(Mb|0,4,0,0)|0|2|0,4,0);G=p;H=f;I=K;J=L}break}case 903:{be=0;A=da(f+(g*20|0)+8|0,4,0,0)|0|0;H=lh(ee,(A<<2)+4|0,0)|0;if(!H){o=$d;p=ce;e=d;d=n;be=1317;break a}q=da(f+(g*20|0)+12|0,4,0,0)|0|0;G=da(f+(g*20|0)+4|0,4,0,0)|0|0;l=p+(G*40|0)|0;if((A|0)>0){s=0;do{J=Ug(p+((s+G|0)*40|0)|0)|0;ea(H+(s<<2)|0,J|0,4,0);s=s+1|0}while((s|0)!=(A|0));s=A}else s=0;ea(H+(s<<2)|0,0|0,4,0);x=da((da(Qd|0,4,0,0)|0|0)+((da(f+(g*20|0)+3>>0|0,1,0,1)|0)<<4)+4|0,4,0,0)|0|0;F=p+(q*40|0)|0;J=da(F|0,4,0,0)|0|0;D=da(x+4|0,4,0,0)|0|0;ea(D+4|0,da(x|0,4,0,0)|0|0,4,0);x=da(D|0,4,0,0)|0|0;m=da((da(x+204|0,4,0,0)|0|0)+12|0,4,0,0)|0|0;ea(Ld|0,D|0,4,0);ea(ca|0,x|0,4,0);x=da(D+44|0,4,0,0)|0|0;ea(ga|0,x|0,4,0);ea(ha|0,J|0,4,0);ea(ia+0|0,0|0,4,0);ea(ia+4|0,0|0,4,0);ea(ia+8|0,0|0,4,0);ea(ia+12|0,0|0,4,0);ea(ia+16|0,0|0,4,0);do if(!x){q=0;s=0}else{y=(x>>>3)+1|0;w=pg(y,0)|0;if(!w){ea(la|0,0|0,4,0);q=0;s=1;break}ew(w|0,0,y|0)|0;ea(la|0,w|0,4,0);E=D+32|0;y=(((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(E|0,4,0,0)|0|0)>>>0)|0)+1|0;if(y>>>0<=x>>>0){J=w+(y>>>3)|0;ea(J>>0|0,da(J>>0|0,1,0,1)|0|1<<(y&7)|0,1,0)}ea(na|0,Gd|0,4,0);ea(oa|0,Gd|0,4,0);ea(ma|0,0|0,4,0);ea(pa|0,0|0,4,0);ea(qa|0,100|0,4,0);ea(ra|0,1e9|0,4,0);ea(ta>>0|0,0|0,1,0);ea(sa>>0|0,2|0,1,0);ea(ka|0,43592|0,4,0);s=da((da(D+12|0,4,0,0)|0|0)+56|0,4,0,0)|0|0;bn(Ld,1,(da(s+33>>0|0,1,0,1)|0)<<16|(da(s+32>>0|0,1,0,1)|0)<<24|(da(s+34>>0|0,1,0,1)|0)<<8|(da(s+35>>0|0,1,0,1)|0),(da(s+37>>0|0,1,0,1)|0)<<16|(da(s+36>>0|0,1,0,1)|0)<<24|(da(s+38>>0|0,1,0,1)|0)<<8|(da(s+39>>0|0,1,0,1)|0));ea(ka|0,0|0,4,0);s=da(ha|0,4,0,0)|0|0;if(!((A|0)<1|(s|0)==0)){v=D+17|0;w=0;do{x=H+(w<<2)|0;y=da(x|0,4,0,0)|0|0;if(y){if((da(v>>0|0,1,0,0)|0|0)!=0&(y|0)>1){cn(Ld,y,1,0);y=da(x|0,4,0,0)|0|0}ea(ka|0,43608|0,4,0);dn(Ld,y,0,0)|0;ea(ka|0,0|0,4,0);s=da(ha|0,4,0,0)|0|0}w=w+1|0}while(!((w|0)>=(A|0)|(s|0)==0))}if(!((da(ga|0,4,0,0)|0|0)==0|(s|0)==0)){A=D+17|0;z=D+36|0;u=1;do{w=u>>>3;y=da((da(la|0,4,0,0)|0|0)+w>>0|0,1,0,0)|0|0;v=1<<(u&7);do if(!(y&255&v)){if(u>>>0<2)x=0;else{x=u+-2|0;x=x-((x>>>0)%(((((da(z|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;x=((x+1|0)==(((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(E|0,4,0,0)|0|0)>>>0)|0|0)?3:2)+x|0}if((x|0)==(u|0)?(da(A>>0|0,1,0,0)|0|0)!=0:0)break;ea(de|0,u|0,4,0);en(Ld,43632,de);y=da((da(la|0,4,0,0)|0|0)+w>>0|0,1,0,0)|0|0}while(0);do if(y&255&v){if(u>>>0<2)y=0;else{y=u+-2|0;y=y-((y>>>0)%(((((da(z|0,4,0,0)|0|0)>>>0)/5|0)+1|0)>>>0)|0)|0;y=((y+1|0)==(((da(2514*4|0,4,0,0)|0|0)>>>0)/((da(E|0,4,0,0)|0|0)>>>0)|0|0)?3:2)+y|0}if((y|0)!=(u|0))break;if(!(da(A>>0|0,1,0,0)|0))break;ea(de|0,u|0,4,0);en(Ld,43656,de)}while(0);u=u+1|0}while(!((da(ha|0,4,0,0)|0|0)==0?1:u>>>0>(da(ga|0,4,0,0)|0|0)>>>0))}s=da((da((da(D|0,4,0,0)|0|0)+204|0,4,0,0)|0|0)+12|0,4,0,0)|0|0;if((m|0)!=(s|0)){ea(de|0,m|0,4,0);ea(de+4|0,s|0,4,0);en(Ld,43696,de)}Vc(da(la|0,4,0,0)|0|0);if(da(ja|0,4,0,0)|0){fn(ma);q=0;s=(da(ia|0,4,0,0)|0|0)+1|0;break}s=da(ia|0,4,0,0)|0|0;if(!s)fn(ma);q=sg(ma)|0}while(0);lg(ee,H);J=F;J=cw(da(J|0,4,0,0)|0|0,da(J+4|0,4,0,0)|0|0,s|0,((s|0)<0)<<31>>31|0)|0;e=F;ea(e|0,J|0,4,0);ea(e+4|0,C|0,4,0);e=p+(G*40|0)+8|0;if(!((da(e|0,2,0,0)|0)&9312))ea(e|0,1|0,2,0);else ug(l);if(s){if(!q){o=$d;p=ce;e=d;d=n;be=1317;break a}Wg(l,q,-1,1,1)|0}Xl(l,qb)|0;G=p;H=f;I=K;J=L;e=g;break}case 947:{be=0;l=da(f+(g*20|0)+4|0,4,0,0)|0|0;e=p+(l*40|0)|0;h=da(f+(g*20|0)+8|0,4,0,0)|0|0;l=p+(l*40|0)+8|0;if(((da(l|0,2,0,0)|0)&32)==0?(gn(e),((da(l|0,2,0,0)|0)&32)==0):0){o=$d;p=ce;e=d;d=n;be=1317;break a}G=p+(h*40|0)|0;hn(da(e|0,4,0,0)|0|0,da(G|0,4,0,0)|0|0,da(G+4|0,4,0,0)|0|0);G=p;H=f;I=K;J=L;h=y;e=g;break}case 966:{be=0;e=da(f+(g*20|0)+4|0,4,0,0)|0|0;F=p+(e*40|0)|0;E=p+((da(f+(g*20|0)+12|0,4,0,0)|0|0)*40|0)|0;D=da(f+(g*20|0)+16|0,4,0,0)|0|0;e=p+(e*40|0)+8|0;if(((da(e|0,2,0,0)|0)&32)==0?(gn(F),((da(e|0,2,0,0)|0)&32)==0):0){o=$d;p=ce;e=d;d=n;be=1317;break a}if(D){A=da(F|0,4,0,0)|0|0;l=E;B=da(l|0,4,0,0)|0|0;l=da(l+4|0,4,0,0)|0|0;z=A+28|0;if((da(z|0,4,0,0)|0|0)!=(D|0)){s=A+8|0;y=da(s|0,4,0,0)|0|0;if(y){x=A+20|0;q=A+26|0;if(!((da(q|0,2,0,0)|0)&1))y=jn(y)|0;w=da(x|0,4,0,0)|0|0;A:do if(!w){$c=y;kd=x;be=978}else{while(1){x=w+12|0;v=da(x|0,4,0,0)|0|0;if(!v)break;u=w+8|0;kn(v,de,Ld);ea(x|0,0|0,4,0);y=ln(da(de|0,4,0,0)|0|0,y)|0;w=da(u|0,4,0,0)|0|0;if(!w){$c=y;kd=u;be=978;break A}}ea(x|0,mn(y)|0|0,4,0)}while(0);if((be|0)==978?(be=0,Dc=nn(A)|0,ea(kd|0,Dc|0,4,0),(Dc|0)!=0):0){J=Dc;ea(J|0,0|0,4,0);ea(J+4|0,0|0,4,0);ea(Dc+8|0,0|0,4,0);ea(Dc+12|0,mn($c)|0|0,4,0)}ea(s|0,0|0,4,0);ea(A+12|0,0|0,4,0);ea(q|0,da(q|0,2,0,1)|0|1|0,2,0)}ea(z|0,D|0,4,0)}s=da(A+20|0,4,0,0)|0|0;B:do if(s){C:while(1){q=da(s+12|0,4,0,0)|0|0;if(q)do{e=q;u=da(e|0,4,0,0)|0|0;e=da(e+4|0,4,0,0)|0|0;if((e|0)<(l|0)|(e|0)==(l|0)&u>>>0>>0)q=q+8|0;else{if(!((e|0)>(l|0)|(e|0)==(l|0)&u>>>0>B>>>0))break C;q=q+12|0}q=da(q|0,4,0,0)|0|0}while((q|0)!=0);s=da(s+8|0,4,0,0)|0|0;if(!s)break B}G=p;H=f;I=K;J=L;e=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;break q}while(0);if((D|0)>-1)s=E;else{G=p;H=f;I=K;J=L;e=g;break}}else s=E;G=s;hn(da(F|0,4,0,0)|0|0,da(G|0,4,0,0)|0|0,da(G+4|0,4,0,0)|0|0);G=p;H=f;I=K;J=L;e=g;break}case 993:{be=0;z=da(f+(e*20|0)+16|0,4,0,0)|0|0;x=da(f+(e*20|0)+12|0,4,0,0)|0|0;A=p+(x*40|0)|0;if((da(f+(e*20|0)+3>>0|0,1,0,0)|0|0)!=0?(Ec=da(z+20|0,4,0,0)|0|0,ed=da(lb|0,4,0,0)|0|0,(ed|0)!=0):0){g=ed;while(1){if((da(g+28|0,4,0,0)|0|0)==(Ec|0)){G=p;H=f;I=K;J=L;break q}g=da(g+4|0,4,0,0)|0|0;if(!g){g=e;break}}}else g=e;e=da(mb|0,4,0,0)|0|0;if((e|0)>=(da(ua|0,4,0,0)|0|0)){h=n;be=998;break c}u=p+(x*40|0)+8|0;if(!((da(u|0,2,0,0)|0)&64)){s=z+12|0;q=da(s|0,4,0,0)|0|0;e=q+(da(z+8|0,4,0,0)|0|0)|0;f=z+16|0;q=(q<<2)+80+(da(f|0,4,0,0)|0|0)+(e*40|0)|0;y=lh(ee,q,((q|0)<0)<<31>>31)|0;if(!y){o=$d;p=ce;e=d;d=n;be=1317;break a}ew(y|0,0,q|0)|0;if(!(((da(u|0,2,0,0)|0)&9312)==0?(da(p+(x*40|0)+24|0,4,0,0)|0|0)==0:0))Pg(A);ea(u|0,64|0,2,0);ea(A|0,y|0,4,0);ea(y|0,a|0,4,0);ea(y+60|0,e|0,4,0);ea(y+64|0,da(s|0,4,0,0)|0|0,4,0);ea(y+44|0,g|0,4,0);ea(y+16|0,da(Gc|0,4,0,0)|0|0,4,0);ea(y+52|0,da(va|0,4,0,0)|0|0,4,0);ea(y+24|0,da(Bb|0,4,0,0)|0|0,4,0);ea(y+40|0,da(wa|0,4,0,0)|0|0,4,0);ea(y+8|0,da(rc|0,4,0,0)|0|0,4,0);ea(y+48|0,da(xa|0,4,0,0)|0|0,4,0);ea(y+28|0,da(z+20|0,4,0,0)|0|0,4,0);ea(y+20|0,da(Ab|0,4,0,0)|0|0,4,0);ea(y+56|0,da(ya|0,4,0,0)|0|0,4,0);p=y+80|0;e=p+(e*40|0)|0;if((p|0)!=(e|0))do{ea(p+8|0,128|0,2,0);ea(p+32|0,ee|0,4,0);p=p+40|0}while((p|0)!=(e|0));e=da(mb|0,4,0,0)|0|0;p=y}else{f=z+16|0;p=da(A|0,4,0,0)|0|0}ea(mb|0,e+1|0,4,0);ea(p+4|0,da(lb|0,4,0,0)|0|0,4,0);G=p+32|0;ea(G|0,d|0,4,0);ea(G+4|0,c|0,4,0);ea(p+68|0,da(nb|0,4,0,0)|0|0,4,0);ea(p+72|0,da((da(a|0,4,0,0)|0|0)+80|0,4,0,0)|0|0,4,0);ea(nb|0,0|0,4,0);ea(lb|0,p|0,4,0);G=p+40|0;ea(Gc|0,G|0,4,0);I=da(p+60|0,4,0,0)|0|0;ea(va|0,I|0,4,0);J=(da(p+64|0,4,0,0)|0)&65535;ea(wa|0,J|0,4,0);I=G+((I+1|0)*40|0)|0;ea(Bb|0,I|0,4,0);H=da(z|0,4,0,0)|0|0;ea(rc|0,H|0,4,0);ea(xa|0,da(z+4|0,4,0,0)|0|0,4,0);J=I+(J<<2)|0;ea(Ab|0,J|0,4,0);I=da(f|0,4,0,0)|0|0;ea(ya|0,I|0,4,0);ew(J|0,0,I|0)|0;I=K;J=L;e=-1;break}case 1009:{be=0;G=da(lb|0,4,0,0)|0|0;Yl(h,(da(G+16|0,4,0,0)|0|0)+(((da((da(G+8|0,4,0,0)|0|0)+((da(G+44|0,4,0,0)|0|0)*20|0)+4|0,4,0,0)|0|0)+(da(f+(e*20|0)+4|0,4,0,0)|0|0)|0)*40|0)|0,4096);G=p;H=f;I=K;J=L;break}case 1010:{be=0;if((da(Mb|0,4,0,0)|0)&16777216){H=da(f+(e*20|0)+8|0,4,0,0)|0|0;G=Kb;H=iw(da(G|0,4,0,0)|0|0,da(G+4|0,4,0,0)|0|0,H|0,((H|0)<0)<<31>>31|0)|0;G=Kb;ea(G|0,H|0,4,0);ea(G+4|0,C|0,4,0);G=p;H=f;I=K;J=L;h=y;break}g=da(f+(e*20|0)+8|0,4,0,0)|0|0;h=((g|0)<0)<<31>>31;if(!(da(f+(e*20|0)+4|0,4,0,0)|0)){H=Td;H=iw(da(H|0,4,0,0)|0|0,da(H+4|0,4,0,0)|0|0,g|0,h|0)|0;G=Td;ea(G|0,H|0,4,0);ea(G+4|0,C|0,4,0);G=p;H=f;I=K;J=L;h=y;break}else{H=Jb;H=iw(da(H|0,4,0,0)|0|0,da(H+4|0,4,0,0)|0|0,g|0,h|0)|0;G=Jb;ea(G|0,H|0,4,0);ea(G+4|0,C|0,4,0);G=p;H=f;I=K;J=L;h=y;break}}case 1015:{be=0;if(!(da(f+(e*20|0)+4|0,4,0,0)|0)){J=Td;if(!((da(J|0,4,0,0)|0|0)==0&(da(J+4|0,4,0,0)|0|0)==0)){G=p;H=f;I=K;J=L;break}J=Kb;if(!((da(J|0,4,0,0)|0|0)==0&(da(J+4|0,4,0,0)|0|0)==0)){G=p;H=f;I=K;J=L;break}G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0;break}else{J=Jb;if(!((da(J|0,4,0,0)|0|0)==0&(da(J+4|0,4,0,0)|0|0)==0)){G=p;H=f;I=K;J=L;break}J=Kb;if(!((da(J|0,4,0,0)|0|0)==0&(da(J+4|0,4,0,0)|0|0)==0)){G=p;H=f;I=K;J=L;break}G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0;break}}case 1022:{be=0;g=da(lb|0,4,0,0)|0|0;if(!g)m=p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0;else{while(1){h=da(g+4|0,4,0,0)|0|0;if(!h)break;else g=h}m=(da(g+16|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0}J=Ug(m)|0;l=m;ea(l|0,J|0,4,0);ea(l+4|0,C|0,4,0);l=m+8|0;ea(l|0,(da(l|0,2,0,1)|0)&48640|4|0,2,0);l=da(f+(e*20|0)+8|0,4,0,0)|0|0;J=p+(l*40|0)|0;g=Ug(J)|0;h=C;ea(J|0,g|0,4,0);ea(J+4|0,h|0,4,0);l=p+(l*40|0)+8|0;ea(l|0,(da(l|0,2,0,1)|0)&48640|4|0,2,0);l=m;J=da(l+4|0,4,0,0)|0|0;if((J|0)<(h|0)|((J|0)==(h|0)?(da(l|0,4,0,0)|0|0)>>>0>>0:0)){G=m;ea(G|0,g|0,4,0);ea(G+4|0,h|0,4,0);G=p;H=f;I=K;J=L;h=A}else{G=p;H=f;I=K;J=L;h=A}break}case 1028:{be=0;J=p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0;I=da(J+4|0,4,0,0)|0|0;if((I|0)>0|(I|0)==0&(da(J|0,4,0,0)|0|0)>>>0>0){G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}else{G=p;H=f;I=K;J=L}break}case 1030:{be=0;H=da(f+(e*20|0)+12|0,4,0,0)|0|0;I=p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0;J=I;H=iw(da(J|0,4,0,0)|0|0,da(J+4|0,4,0,0)|0|0,H|0,((H|0)<0)<<31>>31|0)|0;J=C;ea(I|0,H|0,4,0);ea(I+4|0,J|0,4,0);if((J|0)<0){G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}else{G=p;H=f;I=K;J=L}break}case 1032:{be=0;g=p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0;l=g;h=da(l|0,4,0,0)|0|0;l=da(l+4|0,4,0,0)|0|0;if((h|0)==0&(l|0)==0){G=p;H=f;I=K;J=L;h=y}else{H=da(f+(e*20|0)+12|0,4,0,0)|0|0;H=iw(H|0,((H|0)<0)<<31>>31|0,h|0,l|0)|0;G=g;ea(G|0,H|0,4,0);ea(G+4|0,C|0,4,0);G=p;H=f;I=K;J=L;h=y;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}break}case 1034:{be=0;H=p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0;I=H;I=iw(da(I|0,4,0,0)|0|0,da(I+4|0,4,0,0)|0|0,-1,-1)|0;J=C;ea(H|0,I|0,4,0);ea(H+4|0,J|0,4,0);if((I|0)==0&(J|0)==0){G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}else{G=p;H=f;I=K;J=L}break}case 1036:{be=0;H=p+((da(f+(e*20|0)+4|0,4,0,0)|0|0)*40|0)|0;J=H;I=da(J|0,4,0,0)|0|0;J=da(J+4|0,4,0,0)|0|0;G=iw(I|0,J|0,1,0)|0;ea(H|0,G|0,4,0);ea(H+4|0,C|0,4,0);if((I|0)==0&(J|0)==0){G=p;H=f;I=K;J=L;e=(da(f+(e*20|0)+8|0,4,0,0)|0|0)+-1|0}else{G=p;H=f;I=K;J=L}break}case 1157:{be=0;G=p;H=f;I=K;J=L;e=(da(f+(g*20|0)+8|0,4,0,0)|0|0)+-1|0;break}case 1158:{be=0;if(da(f+(e*20|0)+4|0,4,0,0)|0){ea(Rd|0,da(Rd|0,2,0,0)|0|8|0,2,0);G=p;H=f;I=K;J=L;break}g=da(Ob|0,4,0,0)|0|0;if(!g){G=p;H=f;I=K;J=L}else{do{J=g+88|0;ea(J|0,da(J|0,2,0,0)|0|8|0,2,0);g=da(g+52|0,4,0,0)|0|0}while((g|0)!=0);G=p;H=f;I=K;J=L}break}case 1166:{be=0;y=(da(m|0,4,0,0)|0|0)+72|0;g=da(y|0,4,0,0)|0|0;D:do if(g){while(1){if((da(g+4|0,4,0,0)|0|0)==(q|0)?(da(g|0,4,0,0)|0|0)==(s|0):0)break;g=da(g+12|0,4,0,0)|0|0;if(!g){be=1171;break D}}if(!g)be=1171}else be=1171;while(0);if((be|0)==1171){be=0;g=pg(16,0)|0;if(!g){g=e;f=7;h=n;be=1309;break c}I=g+0|0;J=I+12|0;do{ea(I>>0|0,0|0,1,0);I=I+1|0}while((I|0)<(J|0));ea(g+4|0,q|0,4,0);ea(g|0,s|0,4,0);ea(g+12|0,da(y|0,4,0,0)|0|0,4,0);ea(y|0,g|0,4,0)}g=g+8|0;if((da(g>>0|0,1,0,1)|0|0)<(l&255)){ea(g>>0|0,l|0,1,0);G=p;H=f;I=K;J=L}else{G=p;H=f;I=K;J=L}break}case 1213:{be=0;ea(ld|0,0|0,4,0);l=da((da(f+(e*20|0)+16|0,4,0,0)|0|0)+8|0,4,0,0)|0|0;if(!l){g=e;f=6;h=n;be=1309;break c}m=da(l|0,4,0,0)|0|0;if(!m){g=e;f=6;h=n;be=1309;break c}s=qc[(fa(da(m+24|0,4,0,0)|0|0,127|0)|0)&127](l,ld)|0;Lm(a,l);if(s){g=e;f=s;h=n;be=1309;break c}ea(da(ld|0,4,0,0)|0|0,l|0,4,0);g=wm(a,da(f+(e*20|0)+4|0,4,0,0)|0|0,0,-1,0)|0;if(!g){ea($d>>0|0,1|0,1,0);kc[(fa(da(m+28|0,4,0,0)|0|0,127|0)|0)&127](da(ld|0,4,0,0)|0|0)|0;G=p;H=f;I=K;J=L;break}else{ea(g+32|0,da(ld|0,4,0,0)|0|0,4,0);G=l+4|0;ea(G|0,(da(G|0,4,0,0)|0|0)+1|0,4,0);G=p;H=f;I=K;J=L;break}}case 1226:{be=0;g=p+(s*40|0)+8|0;if(!((da(g|0,2,0,0)|0)&9312)){ea(g|0,1|0,2,0);G=p;H=f;I=K;J=L;break}else{ug(q);G=p;H=f;I=K;J=L;break}}case 1257:{be=0;G=h;ea(G|0,da((da((da((da(Qd|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<4)+4|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+44|0,4,0,0)|0|0,4,0);ea(G+4|0,0|0,4,0);G=p;H=f;I=K;J=L;break}case 1258:{be=0;l=da((da(Qd|0,4,0,0)|0|0)+((da(f+(e*20|0)+4|0,4,0,0)|0)<<4)+4|0,4,0,0)|0|0;g=da(f+(e*20|0)+12|0,4,0,0)|0|0;h=da(l+4|0,4,0,0)|0|0;if(!g)g=0;else{J=da(h+44|0,4,0,0)|0|0;g=J>>>0>>0?g:J}ea(h+4|0,da(l|0,4,0,0)|0|0,4,0);h=(da(h|0,4,0,0)|0|0)+156|0;if((g|0)>0)ea(h|0,g|0,4,0);else g=da(h|0,4,0,0)|0|0;G=y;ea(G|0,g|0,4,0);ea(G+4|0,((g|0)<0)<<31>>31|0,4,0);G=p;H=f;I=K;J=L;h=y;break}case 1264:{be=0;e=da(f+(g*20|0)+8|0,4,0,0)|0|0;e=(e|0)==0?g:e+-1|0;if((da(La|0,4,0,0)|0|0)!=0?((da(Rd|0,2,0,0)|0)&512)==0:0){g=da(f+(g*20|0)+16|0,4,0,0)|0|0;if(!g){g=da(Xd|0,4,0,0)|0|0;if(!g){G=p;H=f;I=K;J=L;h=A;break}}ea(Ld|0,0|0,4,0);v=da(a|0,4,0,0)|0|0;l=da(v+88|0,4,0,0)|0|0;ea(_a|0,Gd|0,4,0);ea($a|0,Gd|0,4,0);ea(ab|0,0|0,4,0);ea(bb|0,100|0,4,0);ea(cb|0,l|0,4,0);ea(db>>0|0,1|0,1,0);ea(eb>>0|0,0|0,1,0);ea(jd|0,v|0,4,0);l=da(g>>0|0,1,0,0)|0|0;h=l<<24>>24==0;E:do if((da(v+160|0,4,0,0)|0|0)>1){if(!h)while(1){h=g;do{h=h+1|0;if(l<<24>>24==10)break;l=da(h>>0|0,1,0,0)|0|0}while(l<<24>>24!=0);Rk(jd,42288,3);Rk(jd,g,h-g|0);l=da(h>>0|0,1,0,0)|0|0;if(!(l<<24>>24))break;else g=h}}else if(!h){w=v+62|0;z=1;do{F:do if(!(l<<24>>24)){q=0;h=0}else{s=g;h=0;while(1){q=Bn(s,de)|0;if((da(de|0,4,0,0)|0|0)==135)break F;h=q+h|0;s=s+q|0;if(!(da(s>>0|0,1,0,0)|0)){q=0;break}}}while(0);Rk(jd,g,h);s=g+h|0;if(!q)break E;do if((da(s>>0|0,1,0,0)|0|0)==63)if((q|0)>1){Cn(g+(h+1)|0,Ld)|0;s=da(Ld|0,4,0,0)|0|0;break}else{ea(Ld|0,z|0,4,0);s=z;break}else{s=ph(a,s,q)|0;ea(Ld|0,s|0,4,0)}while(0);g=g+(h+q)|0;z=s+1|0;y=s+-1|0;x=da(tb|0,4,0,0)|0|0;s=x+(y*40|0)|0;q=da(x+(y*40|0)+8|0,2,0,1)|0|0;do if(!(q&1)){if(q&4){H=s;J=da(H+4|0,4,0,0)|0|0;I=de;ea(I|0,da(H|0,4,0,0)|0|0,4,0);ea(I+4|0,J|0,4,0);Dn(jd,0,19920,de);break}if(q&8){ea(k|0,+(+(+da(s|0,8,1,0))),8,1);ea(de|0,da(k|0,4,0,0)|0|0,4,0);ea(de+4|0,da(k+4|0,4,0,0)|0|0,4,0);Dn(jd,0,20272,de);break}if(!(q&2)){if(q&16384){ea(de|0,da(s|0,4,0,0)|0|0,4,0);Dn(jd,0,42304,de);break}Rk(jd,42320,2);u=da(x+(y*40|0)+12|0,4,0,0)|0|0;if((u|0)>0){s=x+(y*40|0)+16|0;q=0;do{ea(de|0,da((da(s|0,4,0,0)|0|0)+q>>0|0,1,0,1)|0|0,4,0);Dn(jd,0,42328,de);q=q+1|0}while((q|0)!=(u|0))}Rk(jd,42336,1);break}else{u=da(w>>0|0,1,0,0)|0|0;if(u<<24>>24==1){J=da(x+(y*40|0)+16|0,4,0,0)|0|0;ea(de|0,da(x+(y*40|0)+12|0,4,0,0)|0|0,4,0);ea(de+4|0,J|0,4,0);Dn(jd,0,42296,de);break}I=Hd+0|0;J=I+40|0;do{ea(I|0,0|0,4,0);I=I+4|0}while((I|0)<(J|0));ea(gb|0,v|0,4,0);Wg(Hd,da(x+(y*40|0)+16|0,4,0,0)|0|0,da(x+(y*40|0)+12|0,4,0,0)|0|0,u,0)|0;J=da(hb|0,4,0,0)|0|0;if(!((J&2|0)==0|(J&16711680|0)==65536))An(Hd,1)|0;J=da(jb|0,4,0,0)|0|0;ea(de|0,da(ib|0,4,0,0)|0|0,4,0);ea(de+4|0,J|0,4,0);Dn(jd,0,42296,de);if(((da(hb|0,2,0,0)|0)&9312)==0&(da(kb|0,4,0,0)|0|0)==0)break;Pg(Hd);break}}else Rk(jd,20304,4);while(0);l=da(g>>0|0,1,0,0)|0|0}while(l<<24>>24!=0)}while(0);G=sg(jd)|0;ic[(fa(da(La|0,4,0,0)|0|0,15|0)|0)&15](da(fb|0,4,0,0)|0|0,G);lg(ee,G);G=p;H=f;I=K;J=L;h=A}else{G=p;H=f;I=K;J=L;h=A}break}}if((be|0)==28){be=0;p=f+(e*20|0)+4|0;g=da(p|0,4,0,0)|0|0;if(g){o=p;be=34;break}p=da(lb|0,4,0,0)|0|0;if(!p){be=30;break}ea(lb|0,da(p+4|0,4,0,0)|0|0,4,0);ea(mb|0,(da(mb|0,4,0,0)|0|0)+-1|0,4,0);c=da(nb|0,4,0,0)|0|0;ea(ob|0,c|0,4,0);ea(pb|0,(da(pb|0,4,0,0)|0|0)+c|0,4,0);p=Wl(p)|0;c=ge;g=da(rc|0,4,0,0)|0|0;if((da(f+(e*20|0)+8|0,4,0,0)|0|0)==4)e=(da(g+(p*20|0)+8|0,4,0,0)|0|0)+-1|0;else e=p;d=da(c|0,4,0,0)|0|0;c=da(c+4|0,4,0,0)|0|0;G=da(Gc|0,4,0,0)|0|0;H=g;I=K;J=L}else if((be|0)==488){be=0;h=rm(ee,s,q)|0;if(!h){G=p;H=f;I=K;J=L;h=u}else{g=e;be=1318;break}}p=G;f=H;K=I;L=J;g=e+1|0}switch(be|0){case 30:{ea(fe|0,g|0,4,0);ea(_d>>0|0,da(f+(e*20|0)+8|0,4,0,0)|0|0,1,0);ea(ae|0,e|0,4,0);be=41;break}case 34:{ea(fe|0,g|0,4,0);ea(_d>>0|0,da(f+(e*20|0)+8|0,4,0,0)|0|0,1,0);ea(ae|0,e|0,4,0);g=da(f+(e*20|0)+3>>0|0,1,0,0)|0|0;if(!(g<<24>>24)){f=da(f+(e*20|0)+16|0,4,0,0)|0|0;if(!f){f=0;be=39}else{ea(de|0,f|0,4,0);ch(ce,ee,10344,de)}}else{h=da(41536+((g&255)+-1<<2)|0,4,0,0)|0|0;g=da(f+(e*20|0)+16|0,4,0,0)|0|0;if(!g){f=h;be=39}else{ea(de|0,h|0,4,0);ea(de+4|0,g|0,4,0);ch(ce,ee,41624,de)}}if((be|0)==39){ea(de|0,f|0,4,0);ch(ce,ee,41656,de)}be=da(o|0,4,0,0)|0|0;jd=da(Xd|0,4,0,0)|0|0;kd=da(ce|0,4,0,0)|0|0;ea(de|0,e|0,4,0);ea(de+4|0,jd|0,4,0);ea(de+8|0,kd|0,4,0);ad(be,41600,de);be=41;break}case 80:{n=da(Wd|0,4,0,0)|0|0;if(!((n|0)==0|b>>>0>>0)?(kc[(fa(n|0,127|0)|0)&127](da(Sd|0,4,0,0)|0|0)|0)!=0:0){e=d;f=9;d=h;be=1311;break a}kd=Td;jd=da(kd+4|0,4,0,0)|0|0;if((jd|0)>0|(jd|0)==0&(da(kd|0,4,0,0)|0|0)>>>0>0){f=da(a|0,4,0,0)|0|0;ea(fe|0,787|0,4,0);ea(_d>>0|0,2|0,1,0);ch(ce,f,34376,de);f=1;be=1309;break}n=_l(a,1)|0;if(!n){ea(Ud|0,(da(Ud|0,4,0,0)|0|0)+2|1|0,4,0);o=da(f+(g*20|0)+4|0,4,0,0)|0|0;ea(Yd|0,p+(o*40|0)|0,4,0);e=f+(g*20|0)+8|0;if((da(e|0,4,0,0)|0|0)>0){n=0;do{l=n+o|0;m=p+(l*40|0)|0;l=p+(l*40|0)+8|0;f=da(l|0,2,0,0)|0|0;if(f&4096){if(Ul(m)|0){o=$d;p=ce;e=d;d=h;be=1317;break a}f=da(l|0,2,0,0)|0|0}if((f&514)==2)$l(m)|0;n=n+1|0}while((n|0)<(da(e|0,4,0,0)|0|0))}if(da($d>>0|0,1,0,0)|0){o=$d;p=ce;e=d;d=h;be=1317;break a}ea(ae|0,g+1|0,4,0);e=d;d=b;b=100;break a}else{f=n;be=1309}break}case 313:{ea(de|0,73058|0,4,0);ea(de+4|0,10788|0,4,0);ad(11,13600,de);f=11;be=1309;break}case 343:{ea(de|0,73142|0,4,0);ea(de+4|0,10788|0,4,0);ad(11,13600,de);f=11;be=1309;break}case 447:{ch(ce,ee,41712,de);g=e;f=5;be=1309;break}case 460:{ea(de|0,f|0,4,0);ch(ce,ee,41768,de);f=1;be=1309;break}case 462:{ch(ce,ee,41792,de);f=5;be=1309;break}case 467:{ea(ae|0,b|0,4,0);ea(Zd>>0|0,0|0,1,0);ea(fe|0,5|0,4,0);b=5;break a}case 489:{l=da(f+(g*20|0)+4|0,4,0,0)|0|0;f=da(f+(g*20|0)+8|0,4,0,0)|0|0;b=(l|0)!=0;if(b){f=(f|0)!=0;if(!(f|(da(Zd>>0|0,1,0,0)|0|0)!=0))if((da(Vd|0,4,0,0)|0|0)>0){ch(ce,ee,41848,de);b=d;d=e;f=5;be=1309;break}else f=0}else f=(f|0)!=0;if((l|0)==(da(Zd>>0|0,1,0,1)|0|0)){if(b)b=f?41952:42e3;else b=41904;ch(ce,ee,b,de);b=d;d=e;f=1;be=1309;break}if(!f){b=sm(a,1)|0;if(b)break a;ea(Zd>>0|0,l|0,1,0);if((Ql(a)|0)==5){ea(ae|0,g|0,4,0);ea(Zd>>0|0,1-l|0,1,0);ea(fe|0,5|0,4,0);b=5;break a}}else{Jl(ee,516);ea(Zd>>0|0,1|0,1,0)}Kl(ee);b=(da(fe|0,4,0,0)|0|0)==0?101:1;break a}case 508:{ea(ae|0,b|0,4,0);ea(fe|0,5|0,4,0);b=5;break a}case 522:{lg(ee,da(ce|0,4,0,0)|0|0);ea(ce|0,jh(ee,16040)|0|0,4,0);f=da(f|0,4,0,0)|0|0;if((da(da((da(Qd|0,4,0,0)|0|0)+(f<<4)+12|0,4,0,0)|0|0,4,0,0)|0|0)!=(l|0))um(ee,f);ea(Rd|0,da(Rd|0,2,0,0)|0|8|0,2,0);f=17;be=1309;break}case 542:{ea(de|0,73997|0,4,0);ea(de+4|0,10788|0,4,0);ad(11,13600,de);h=11;n=f;be=1318;break}case 560:{ea(f+56|0,0|0,4,0);f=7;be=1309;break}case 832:{ea(_d>>0|0,2|0,1,0);f=6;be=1309;break}case 882:{Dg(ee);o=$d;p=ce;e=d;d=h;be=1317;break a}case 884:{Dg(ee);if((f|0)==7){o=$d;p=ce;e=d;d=h;be=1317;break a}else be=1309;break}case 998:{ch(ce,ee,42112,de);f=1;be=1309;break}case 1080:{ea(de|0,(f?42208:42216)|0,4,0);ch(ce,ee,42152,de);f=1;be=1309;break}case 1101:{ch(ce,ee,42344,de);f=1;be=1309;break}case 1103:{ch(ce,ee,42384,de);f=1;be=1309;break}case 1145:{ea(de|0,56343|0,4,0);ea(de+4|0,10788|0,4,0);ad(11,13600,de);f=11;be=1309;break}case 1316:{ch(ce,ee,10096,de);e=d;f=18;d=h;be=1311;break a}}if((be|0)==41)if((Ql(a)|0)==5){ea(fe|0,5|0,4,0);e=d;d=b;b=5;break a}else{e=d;d=b;b=(da(fe|0,4,0,0)|0|0)!=0?1:101;break a}else if((be|0)==1309){e=d;g=g+1|0;d=h;be=1311;break a}else if((be|0)==1318){h=(da($d>>0|0,1,0,0)|0|0)==0?h:7;if((h|0)==3082){e=d;f=3082;d=n;be=1311;break a}else if((h|0)!=516){e=h&255;if(e>>>0>26|(e|0)==2)f=16328;else f=da(15488+(e<<2)|0,4,0,0)|0|0}else f=16344;ea(de|0,f|0,4,0);ch(ce,ee,10344,de);e=d;f=h;d=n;be=1311;break a}}else{h=a+44|0;e=d;b=0;g=0;d=0}while(0);ea(fe|0,9|0,4,0);ea(de|0,15832|0,4,0);ch(h,ee,10344,de);f=9;be=1311}while(0);if((be|0)==1317){ea(o>>0|0,1|0,1,0);ch(p,ee,15776,de);f=7;be=1311}if((be|0)==1311){ea(fe|0,f|0,4,0);jd=da(a+168|0,4,0,0)|0|0;kd=da(a+44|0,4,0,0)|0|0;ea(de|0,g|0,4,0);ea(de+4|0,jd|0,4,0);ea(de+8|0,kd|0,4,0);ad(f,42256,de);Ql(a)|0;if((f|0)==3082)ea(ee+65>>0|0,1|0,1,0);if(!(d<<24>>24)){d=b;b=1}else{um(ee,(d&255)+-1|0);d=b;b=1}}kd=ge;ea(kd|0,e|0,4,0);ea(kd+4|0,c|0,4,0);kd=a+124|0;ea(kd|0,(da(kd|0,4,0,0)|0|0)+d|0,4,0);i=he;return b|0} -function Dv(a){a=a|0;var 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;w=a+20|0;n=a+14|0;b=da(n>>0|0,1,0,0)|0|0;s=a+13|0;c=da(s>>0|0,1,0,0)|0|0;a:do if((b&255)>(c&255))b=0;else{u=a+4|0;v=a+16|0;o=a+8|0;p=a+12|0;q=a+24|0;r=a+28|0;e=b&255;f=da(u|0,4,0,0)|0|0;d=da(w|0,4,0,0)|0|0;b:while(1){m=da(a+(e+-2<<2)+24|0,4,0,0)|0|0;l=da(a+(e+-1<<2)+24|0,4,0,0)|0|0;if(f){while(1){k=f+12|0;if((d|0)<(da(k|0,4,0,0)|0|0)){c=d;b=(da(f+20|0,4,0,0)|0|0)+(d*48|0)|0;while(1){do if((da(b+8|0,4,0,0)|0|0)==(m|0)?(da(b+12|0,4,0,0)|0|0)==(l|0):0){if((da(n>>0|0,1,0,1)|0|0)>=3?((da((da(b|0,4,0,0)|0|0)+4|0,4,0,0)|0)&1|0)!=0:0)break;j=b+18|0;d=da(j|0,2,0,0)|0|0;if((d&1024)!=0?(t=da(s>>0|0,1,0,0)|0|0,(t&255)<22):0){e=da((da(b|0,4,0,0)|0|0)+16|0,4,0,0)|0|0;c:do if(!e)e=0;else while(1){g=da(e+4|0,4,0,0)|0|0;if(!(g&4096))break c;if(!(g&262144))e=e+12|0;else e=da((da(e+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;e=da(e|0,4,0,0)|0|0;if(!e){e=0;break}}while(0);d:do if(!(t<<24>>24)){i=0;g=0}else{h=da(e+28|0,4,0,0)|0|0;i=e+32|0;g=0;while(1){if((da(a+(g<<2)+24|0,4,0,0)|0|0)==(h|0)?(da(a+((g|1)<<2)+24|0,4,0,0)|0|0)==(da(i|0,2,0,0)|0|0):0){i=t;break d}g=g+2|0;if((g|0)>=(t&255|0)){i=t;break}}}while(0);if((g|0)==(i&255|0)){ea(a+(g<<2)+24|0,da(e+28|0,4,0,0)|0|0,4,0);ea(a+((g|1)<<2)+24|0,da(e+32|0,2,0,0)|0|0,4,0);ea(s>>0|0,(da(s>>0|0,1,0,1)|0|0)+2|0,1,0)}}e=d&65535;if(e&(da(v|0,4,0,0)|0)){if((da(o|0,4,0,0)|0|0)!=0&(e&128|0)==0){h=da(da(f|0,4,0,0)|0|0,4,0,0)|0|0;g=da(b|0,4,0,0)|0|0;e=da(p>>0|0,1,0,0)|0|0;d=(mv(g)|0)<<24>>24;if((d|0)==66){if(e<<24>>24!=66)break}else if((d|0)!=65?e<<24>>24<=66:0)break;d=Nu(h,da(g+12|0,4,0,0)|0|0,da(g+16|0,4,0,0)|0|0)|0;if(!d)d=da((da(h|0,4,0,0)|0|0)+8|0,4,0,0)|0|0;if(cd(da(d|0,4,0,0)|0|0,da(o|0,4,0,0)|0|0)|0)break;d=da(j|0,2,0,0)|0|0}if(!(d&2))break b;d=da((da(b|0,4,0,0)|0|0)+16|0,4,0,0)|0|0;if((da(d>>0|0,1,0,0)|0|0)!=-102)break b;if((da(d+28|0,4,0,0)|0|0)!=(da(q|0,4,0,0)|0|0))break b;if((da(d+32|0,2,0,0)|0|0)!=(da(r|0,4,0,0)|0|0))break b}}while(0);c=c+1|0;if((c|0)>=(da(k|0,4,0,0)|0|0))break;else b=b+48|0}c=da(u|0,4,0,0)|0|0}else c=f;f=da(c+4|0,4,0,0)|0|0;ea(u|0,f|0,4,0);if(!f)break;else d=0}b=da(n>>0|0,1,0,0)|0|0;c=da(s>>0|0,1,0,0)|0|0}f=da(a|0,4,0,0)|0|0;ea(u|0,f|0,4,0);d=(b&255)+2|0;b=d&255;ea(n>>0|0,b|0,1,0);if((b&255)>(c&255)){b=0;break a}else{e=d&255;d=0}}ea(w|0,c+1|0,4,0)}while(0);return b|0}function Ev(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;c=da(a|0,4,0,0)|0|0;h=da(da(c|0,4,0,0)|0|0,4,0,0)|0|0;a=da(a+16|0,4,0,0)|0|0;a:do if(!a){c=c+16|0;e=da(c|0,4,0,0)|0|0;g=b+36|0;if(((da(g|0,4,0,0)|0)&512|0)!=0&(e|0)!=0){a=b+20|0;f=b+22|0;d=da(b+16>>0|0,1,0,0)|0|0;do{do if((da(e+16>>0|0,1,0,0)|0|0)==d<<24>>24?((da(e+36|0,4,0,0)|0)&512|0)!=0:0){if(Sv(e,b)|0){ea(a|0,da(e+20|0,2,0,0)|0|0|0,2,0);ea(f|0,(da(e+22|0,2,0,1)|0|0)+65535|0,2,0);break}if(Sv(b,e)|0){ea(a|0,da(e+20|0,2,0,0)|0|0|0,2,0);ea(f|0,(da(e+22|0,2,0,1)|0|0)+1|0,2,0)}}while(0);e=da(e+52|0,4,0,0)|0|0}while((e|0)!=0)}a=Tv(c,b)|0;if(a){c=da(a|0,4,0,0)|0|0;b:do if(c){a=c+52|0;if(da(a|0,4,0,0)|0)do{a=Tv(a,b)|0;if(!a)break b;d=da(a|0,4,0,0)|0|0;if(!d)break b;ea(a|0,da(d+52|0,4,0,0)|0|0,4,0);Iu(h,d);lg(h,d)}while((da(a|0,4,0,0)|0|0)!=0)}else{c=lh(h,72,0)|0;ea(a|0,c|0,4,0);if(!c){a=7;break a}ea(c+48|0,c+56|0,4,0);ea(c+40|0,0|0,2,0);ea(c+44|0,3|0,2,0);ea(c+36|0,0|0,4,0);ea(c+52|0,0|0,4,0)}while(0);Kv(h,c);do if(!(Mu(h,c,da(b+40|0,2,0,1)|0|0)|0)){d=c+0|0;a=b+0|0;e=d+44|0;do{ea(d|0,da(a|0,4,0,0)|0|0,4,0);d=d+4|0;a=a+4|0}while((d|0)<(e|0));jw(da(c+48|0,4,0,0)|0|0,da(b+48|0,4,0,0)|0|0,(da(c+40|0,2,0,1)|0)<<2|0)|0;a=da(g|0,4,0,0)|0|0;if(a&1024){ea(b+28>>0|0,0|0,1,0);break}if(a&16384)ea(b+28|0,0|0,4,0)}else{a=c+24|0;ea(a+0|0,0|0,4,0);ea(a+4|0,0|0,4,0);ea(a+8|0,0|0,4,0)}while(0);if((((da(c+36|0,4,0,0)|0)&1024|0)==0?(i=c+28|0,j=da(i|0,4,0,0)|0|0,(j|0)!=0):0)?(da(j+40|0,4,0,0)|0|0)==0:0){ea(i|0,0|0,4,0);a=0}else a=0}else a=0}else{c=b;Jv(a,da(c|0,4,0,0)|0|0,da(c+4|0,4,0,0)|0|0,da(b+20|0,2,0,0)|0|0,da(b+22|0,2,0,0)|0|0);a=0}while(0);return a|0}function Fv(a,b){a=a|0;b=b|0;var c=0,d=0;c=a<<16>>16;d=b<<16>>16;do if(a<<16>>16>16)if((d|0)<=(c+49|0))if((d|0)>(c+31|0)){a=d+1&65535;break}else{a=(da(34032+(d-c)>>0|0,1,0,1)|0|0)+d&65535;break}else a=b;else if((c|0)<=(d+49|0))if((c|0)>(d+31|0)){a=c+1&65535;break}else{a=(da(34032+(c-d)>>0|0,1,0,1)|0|0)+c&65535;break}while(0);return a|0}function Gv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;do if(!(Bu(a,b,c)|0))d=1;else{d=da(b>>0|0,1,0,0)|0|0;if(d<<24>>24==77)e=6;else if(d<<24>>24==71){if(Gv(a,da(b+12|0,4,0,0)|0|0,c)|0){d=1;break}if(Gv(a,da(b+16|0,4,0,0)|0|0,c)|0){d=1;break}if(d<<24>>24==77)e=6}if(((e|0)==6?(Bu(da(a+12|0,4,0,0)|0|0,da(b+12|0,4,0,0)|0|0,c)|0)==0:0)?(d=da(a>>0|0,1,0,0)|0|0,!(d<<24>>24==73|d<<24>>24==76)):0){d=1;break}d=0}while(0);return d|0}function Hv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();r=s;p=b;q=b+8|0;d=q;o=~(da(d|0,4,0,0)|0|(da(p|0,4,0,0)|0));p=~(da(d+4|0,4,0,0)|0|(da(p+4|0,4,0,0)|0));d=da(a+12|0,4,0,0)|0|0;m=a+20|0;a:do if((d|0)>0){n=b+40|0;a=b+22|0;l=b+48|0;b=0;k=da(m|0,4,0,0)|0|0;while(1){if((da(k+20|0,2,0,0)|0)&2)break a;f=k+40|0;e=da(f|0,4,0,0)|0|0;f=da(f+4|0,4,0,0)|0|0;g=q;b:do if((((da(g|0,4,0,0)|0)&e|0)!=0?1:((da(g+4|0,4,0,0)|0)&f|0)!=0)&((e&o|0)==0&(f&p|0)==0)){e=da(n|0,2,0,0)|0|0;c:do if(e<<16>>16){h=da(l|0,4,0,0)|0|0;f=e&65535;while(1){e=f;f=f+-1|0;g=da(h+(f<<2)|0,4,0,0)|0|0;if(g){if((g|0)==(k|0))break;g=da(g+4|0,4,0,0)|0|0;if((g|0)>-1?((da(m|0,4,0,0)|0|0)+(g*48|0)|0)==(k|0):0)break}if((f|0)<=0)break c}if((e|0)>=1)break b}while(0);e=da(k+16|0,2,0,0)|0|0;if(e<<16>>16<1){ea(a|0,(da(a|0,2,0,1)|0|0)+(e&65535)|0,2,0);break}ea(a|0,(da(a|0,2,0,0)|0|0)+-1<<16>>16|0,2,0);if((da(k+18|0,2,0,0)|0)&2){g=(Ls(da((da(k|0,4,0,0)|0|0)+16|0,4,0,0)|0|0,r)|0)!=0;h=da(r|0,4,0,0)|0|0;h=g&(h|0)>-2&(h|0)<2?10:20;ea(r|0,h|0,4,0);b=(b<<16>>16|0)<(h|0)?h&65535:b}}while(0);d=d+-1|0;if((d|0)<=0)break;else k=k+48|0}}else{a=b+22|0;b=0}while(0);b=(c<<16>>16)-(b<<16>>16)|0;if((da(a|0,2,0,0)|0|0)>(b|0))ea(a|0,b|0,2,0);i=s;return}function Iv(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,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,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;aa=i;i=i+112|0;if((i|0)>=(j|0))ba();L=aa;P=da(da(da(a|0,4,0,0)|0|0,4,0,0)|0|0,4,0,0)|0|0;_=da(a+12|0,4,0,0)|0|0;if(!(da(P+65>>0|0,1,0,0)|0)){$=_+36|0;if(!((da($|0,4,0,0)|0)&32))if((da(c+40|0,4,0,0)|0|0)<1)e=63;else e=((da(b+36>>0|0,1,0,0)|0)&8)<<4^191;else e=24;Q=c+51|0;Y=_+24|0;f=da((da(c+4|0,4,0,0)|0|0)+((da(Y|0,2,0,1)|0)<<1)|0,2,0,0)|0|0;H=f<<16>>16;I=a+4|0;e=Cv(L,da(I|0,4,0,0)|0|0,da(b+40|0,4,0,0)|0|0,H,((da(Q>>0|0,1,0,0)|0)&4)==0?e:e&131,c)|0;R=da(Y|0,2,0,0)|0|0;S=_+42|0;N=da(S|0,2,0,0)|0|0;T=_+40|0;O=da(T|0,2,0,0)|0|0;U=da($|0,4,0,0)|0|0;K=_;J=da(K|0,4,0,0)|0|0;K=da(K+4|0,4,0,0)|0|0;V=_+22|0;W=da(V|0,2,0,0)|0|0;ea(_+18|0,0|0,2,0);X=c+8|0;x=da(da(X|0,4,0,0)|0|0,2,0,0)|0|0;if(x<<16>>16<11)w=0;else{w=x<<16>>16;w=((es(w,((w|0)<0)<<31>>31)|0)&65535)+65503&65535}a:do if(!e)e=0;else{y=f<<16>>16<0;z=b+16|0;A=_+8|0;B=(O&65535)+1|0;C=_+48|0;D=d<<16>>16==0;E=c+46|0;q=f<<16>>16>-1;r=c+50|0;s=c+44|0;t=_+20|0;u=d<<16>>16;v=c+48|0;g=0;p=e;l=0;while(1){f=da(p+18|0,2,0,0)|0|0;m=f&65535;if(f<<16>>16==128)if(!y?(da((da((da(z|0,4,0,0)|0|0)+4|0,4,0,0)|0|0)+(H*24|0)+20>>0|0,1,0,0)|0|0)==0:0)M=12;else{f=l;e=0}else M=12;if((M|0)==12){M=0;k=p+32|0;e=k;h=A;if((((da(h|0,4,0,0)|0)&(da(e|0,4,0,0)|0)|0)==0?((da(h+4|0,4,0,0)|0)&(da(e+4|0,4,0,0)|0)|0)==0:0)?(F=p+20|0,!(((da(F|0,2,0,0)|0)&256)!=0&f<<16>>16==16)):0){ea($|0,U|0,4,0);ea(Y|0,R|0,2,0);ea(T|0,O|0,2,0);if(Mu(P,_,B)|0){e=0;break a}f=da(T|0,2,0,0)|0|0;h=f+1<<16>>16;ea(T|0,h|0,2,0);ea((da(C|0,4,0,0)|0|0)+((f&65535)<<2)|0,p|0,4,0);f=k;k=A;o=(da(f+4|0,4,0,0)|0|K)&~(da(k+4|0,4,0,0)|0);n=_;ea(n|0,(da(f|0,4,0,0)|0|J)&~(da(k|0,4,0,0)|0)|0,4,0);ea(n+4|0,o|0,4,0);b:do if(!(m&1)){if(m&2){e=da($|0,4,0,0)|0|0;f=e|1;ea($|0,f|0,4,0);do if(!y){if(!D){n=0;o=g;break b}if((da(Y|0,2,0,1)|0|0)!=((da(E|0,2,0,1)|0|0)+-1|0)){n=0;o=g;break b}if(!q)break;if(da(r>>0|0,1,0,0)|0)break;f=e|65537;ea($|0,f|0,4,0);n=0;o=g;break b}while(0);f=e|4097;ea($|0,f|0,4,0);n=0;o=g;break}if(m&128){f=da($|0,4,0,0)|0|8;ea($|0,f|0,4,0);n=0;o=g;break}e=da($|0,4,0,0)|0|0;if(!(m&36)){f=e|18;ea($|0,f|0,4,0);if(!(e&32)){n=0;o=0;l=p;break}n=0;o=da((da(C|0,4,0,0)|0|0)+((h&65535)+-2<<2)|0,4,0,0)|0|0;l=p;break}f=e|34;ea($|0,f|0,4,0);if(!((da(F|0,2,0,0)|0)&256)){n=0;o=p;l=0}else{e=p+48|0;if(Mu(P,_,(h&65535)+1|0)|0){e=0;break a}f=da(T|0,2,0,0)|0|0;ea(T|0,f+1<<16>>16|0,2,0);ea((da(C|0,4,0,0)|0|0)+((f&65535)<<2)|0,e|0,4,0);f=da($|0,4,0,0)|0|16;ea($|0,f|0,4,0);n=0;o=p;l=e}}else{e=da(p|0,4,0,0)|0|0;f=da($|0,4,0,0)|0|4;ea($|0,f|0,4,0);if(!((da(e+4|0,4,0,0)|0)&2048)){e=da(e+20|0,4,0,0)|0|0;if((e|0)!=0?(G=da(e|0,4,0,0)|0|0,(G|0)!=0):0){n=(es(G,((G|0)<0)<<31>>31)|0)<<16>>16;o=g}else{n=0;o=g}}else{n=46;o=g}}while(0);do if(!(f&2)){e=(da(Y|0,2,0,0)|0|0)+1<<16>>16;ea(Y|0,e|0,2,0);e=e&65535;g=da(p+16|0,2,0,0)|0|0;if(g<<16>>16<1&q){k=(g&65535)-n+(da(V|0,2,0,1)|0|0)&65535;ea(V|0,k|0,2,0);break}g=da(X|0,4,0,0)|0|0;g=(da(V|0,2,0,1)|0|0)+((da(g+(e<<1)|0,2,0,1)|0|0)-(da(g+(e+-1<<1)|0,2,0,1)|0|0))|0;e=g&65535;ea(V|0,e|0,2,0);if(!(m&128))k=e;else{k=g+10&65535;ea(V|0,k|0,2,0)}}else{e=da(V|0,2,0,0)|0|0;k=e<<16>>16;do if(o){g=da(o+16|0,2,0,0)|0|0;if(g<<16>>16<1){e=(g&65535)+(e&65535)&65535;break}else{e=(e&65535)+65516&65535;break}}while(0);do if(l){g=da(l+16|0,2,0,0)|0|0;if(g<<16>>16<1){e=(g&65535)+(e&65535)&65535;break}else{e=(e&65535)+65516&65535;break}}while(0);g=(o|0)!=0;do if(g?(da(o+16|0,2,0,0)|0|0)>0&(l|0)!=0:0){if((da(l+16|0,2,0,0)|0|0)<=0)break;e=(e&65535)+65516&65535}while(0);k=(((l|0)!=0)<<31>>31)+(g<<31>>31)+k|0;p=e<<16>>16<10?10:e<<16>>16;k=((p|0)<(k|0)?p:k)&65535;ea(V|0,k|0,2,0)}while(0);h=k&65535;g=Fv(w,h+1+(((da(s|0,2,0,0)|0|0)*15|0)/(da((da(z|0,4,0,0)|0|0)+42|0,2,0,0)|0|0)|0)&65535)|0;if(!(f&320))g=Fv(g,h+16&65535)|0;f=n+u|0;ea(t|0,(g&65535)+f|0,2,0);ea(V|0,h+f|0,2,0);Hv(da(I|0,4,0,0)|0|0,_,x);e=Ev(a,_)|0;p=da($|0,4,0,0)|0|0;ea(V|0,((p&2|0)==0?k:W)|0,2,0);if((p&16|0)==0?(da(Y|0,2,0,1)|0|0)<(da(v|0,2,0,1)|0|0):0)Iv(a,b,c,f&65535)|0;ea(V|0,W|0,2,0);g=o;f=l}else{f=l;e=0}}p=Dv(L)|0;if(!((e|0)==0&(p|0)!=0))break;else l=f}}while(0);f=_;ea(f|0,J|0,4,0);ea(f+4|0,K|0,4,0);ea(Y|0,R|0,2,0);ea(S|0,N|0,2,0);ea($|0,U|0,4,0);ea(V|0,W|0,2,0);ea(T|0,O|0,2,0);f=R&65535;if(((R<<16>>16==N<<16>>16?(Z=f+1|0,Z>>>0<(da(c+46|0,2,0,1)|0|0)>>>0):0)?((da(Q>>0|0,1,0,0)|0)&64)==0:0)?(da((da(X|0,4,0,0)|0|0)+(Z<<1)|0,2,0,0)|0|0)>41:0){e=Mu(P,_,(O&65535)+1|0)|0;if(!e){ea(Y|0,(da(Y|0,2,0,0)|0|0)+1<<16>>16|0,2,0);ea(S|0,(da(S|0,2,0,0)|0|0)+1<<16>>16|0,2,0);e=da(T|0,2,0,0)|0|0;ea(T|0,e+1<<16>>16|0,2,0);ea((da(_+48|0,4,0,0)|0|0)+((e&65535)<<2)|0,0|0,4,0);ea($|0,da($|0,4,0,0)|0|32768|0,4,0);e=da(X|0,4,0,0)|0|0;e=(da(e+(f<<1)|0,2,0,1)|0|0)-(da(e+(Z<<1)|0,2,0,1)|0|0)|0;ea(V|0,(da(V|0,2,0,1)|0|0)-e|0,2,0);Iv(a,b,c,(((e<<16)+327680|0)>>>16)+(d&65535)&65535)|0;ea(V|0,W|0,2,0);ea(Y|0,R|0,2,0);ea(S|0,R|0,2,0);ea($|0,U|0,4,0);e=0}}}else e=7;i=aa;return e|0}function Jv(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,k=0,l=0,m=0,n=0;k=da(a|0,2,0,0)|0|0;f=a+8|0;a:do if(k<<16>>16){i=k;j=f;while(1){g=da(j+8|0,2,0,0)|0|0;if(g<<16>>16>=d<<16>>16?(h=j,((da(h|0,4,0,0)|0)&b|0)==(b|0)?((da(h+4|0,4,0,0)|0)&c|0)==(c|0):0):0){m=j;n=14;break a}if(g<<16>>16<=d<<16>>16?(h=j,g=da(h|0,4,0,0)|0|0,h=da(h+4|0,4,0,0)|0|0,(g&b|0)==(g|0)&(h&c|0)==(h|0)):0)break a;i=i+-1<<16>>16;if(!(i<<16>>16))break;else j=j+16|0}if((k&65535)>=3){g=da(a+16|0,2,0,0)|0|0;j=1;do{if(g<<16>>16>(da(a+(j<<4)+16|0,2,0,0)|0|0))f=a+(j<<4)+8|0;j=j+1|0;g=da(f+8|0,2,0,0)|0|0}while((j&65535)<(k&65535));if(g<<16>>16>d<<16>>16){m=f;n=14}}else n=9}else n=9;while(0);if((n|0)==9){m=k&65535;ea(a|0,k+1<<16>>16|0,2,0);ea(a+(m<<4)+18|0,e|0,2,0);m=a+(m<<4)+8|0;n=14}if((n|0)==14?(l=m,ea(l|0,b|0,4,0),ea(l+4|0,c|0,4,0),ea(m+8|0,d|0,2,0),l=m+10|0,(da(l|0,2,0,0)|0|0)>e<<16>>16):0)ea(l|0,e|0,2,0);return}function Kv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=da(b+36|0,4,0,0)|0|0;do if(c&17408){if((c&1024|0)!=0?(f=b+28|0,(da(f>>0|0,1,0,0)|0|0)!=0):0){c=b+32|0;Vc(da(c|0,4,0,0)|0|0);ea(f>>0|0,0|0,1,0);ea(c|0,0|0,4,0);break}if((c&16384|0)!=0?(d=b+28|0,e=da(d|0,4,0,0)|0|0,(e|0)!=0):0){lg(a,da(e+16|0,4,0,0)|0|0);lg(a,da(d|0,4,0,0)|0|0);ea(d|0,0|0,4,0)}}while(0);return}function Lv(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;var h=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,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,ca=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;na=i;i=i+32|0;if((i|0)>=(j|0))ba();ia=na;k=da(da(a|0,4,0,0)|0|0,4,0,0)|0|0;ha=e&65535;if(e<<16>>16!=0?((da(k+60|0,2,0,0)|0)&128)!=0:0)h=0;else ja=3;a:do if((ja|0)==3){ma=da(b|0,4,0,0)|0|0;h=ma&65535;if(h>>>0<=63){ka=hw(1,0,h|0)|0;ka=iw(ka|0,C|0,-1,-1)|0;la=C;b:do if((ka|0)==0&(la|0)==0){b=0;c=0;k=1}else{_=c+24|0;$=a+4|0;aa=(h|0)==0;Y=b+4|0;Z=(d&768)==0;X=k+8|0;O=(d&256)==0;P=a+68|0;Q=ia+20|0;R=ia+4|0;U=ia+24|0;V=a+328|0;S=0;T=0;b=0;c=0;d=0;l=0;W=0;k=1;e=0;while(1){if((W|0)>0){M=e+8|0;N=da(M|0,4,0,0)|0|d;l=da(M+4|0,4,0,0)|0|l}else N=d;if((W|0)<(ha|0))e=da((da(_|0,4,0,0)|0|0)+(W<<2)|0,4,0,0)|0|0;else e=f;t=e+36|0;d=da(t|0,4,0,0)|0|0;if(d&1024)break;M=da((da($|0,4,0,0)|0|0)+((da(e+16>>0|0,1,0,1)|0|0)*72|0)+48|0,4,0,0)|0|0;if(!aa){d=~N;n=~l;q=0;do{s=hw(1,0,q|0)|0;r=C;c:do if((s&b|0)==0&(r&c|0)==0){m=da((da(Y|0,4,0,0)|0|0)+(q*20|0)|0,4,0,0)|0|0;p=da(m+4|0,4,0,0)|0|0;if(p&4096)do{if(!(p&262144))m=m+12|0;else m=da((da(m+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;m=da(m|0,4,0,0)|0|0;p=da(m+4|0,4,0,0)|0|0}while((p&4096|0)!=0);if(((da(m>>0|0,1,0,0)|0|0)==-102?(da(m+28|0,4,0,0)|0|0)==(M|0):0)?(ca=m+32|0,fa=Eu(V,M,da(ca|0,2,0,0)|0|0,d,n,130,0)|0,(fa|0)!=0):0){do if((da(fa+18|0,2,0,0)|0)&2){if((da(ca|0,2,0,0)|0|0)<=-1)break;m=bu(da(a|0,4,0,0)|0|0,da((da(Y|0,4,0,0)|0|0)+(q*20|0)|0,4,0,0)|0|0)|0;if(!m)m=da(X|0,4,0,0)|0|0;p=da(m|0,4,0,0)|0|0;o=bu(da(a|0,4,0,0)|0|0,da(fa|0,4,0,0)|0|0)|0;if(!o)o=da(X|0,4,0,0)|0|0;if(cd(p,da(o|0,4,0,0)|0|0)|0)break c}while(0);b=s|b;c=r|c}}while(0);q=q+1|0}while((q|0)<(h|0));d=da(t|0,4,0,0)|0|0}do if(!(d&4096)){if(!(d&256)){m=da(e+28|0,4,0,0)|0|0;if(!m){h=0;break a}if((da(m+51>>0|0,1,0,0)|0)&4){h=0;break a}d=da(m+48|0,2,0,0)|0|0;k=(da(m+50>>0|0,1,0,0)|0|0)!=0&1;if(!(d<<16>>16)){ja=71;break}else{K=d&65535;L=da(m+46|0,2,0,0)|0|0}}else{K=1;L=0;m=0}A=e+24|0;B=e+42|0;D=e+48|0;E=(m|0)==0;F=m+32|0;G=hw(1,0,W|0)|0;H=C;I=m+4|0;J=m+28|0;z=m+12|0;d=0;m=0;s=0;y=0;d:while(1){q=(m|0)<(da(A|0,2,0,1)|0|0);if((q?(da(B|0,2,0,0)|0|0)==0:0)?(ga=da((da((da(D|0,4,0,0)|0|0)+(m<<2)|0,4,0,0)|0|0)+18|0,2,0,1)|0|0,(ga&130|0)!=0):0){k=(ga&128|0)==0?k:0;r=y}else{if(!E){r=da((da(I|0,4,0,0)|0|0)+(m<<1)|0,2,0,0)|0|0;o=da((da(J|0,4,0,0)|0|0)+m>>0|0,1,0,0)|0|0;n=da(z|0,4,0,0)|0|0;p=r<<16>>16==(da(n+36|0,2,0,0)|0|0)?-1:r<<16>>16;r=(p|0)>-1;if(k<<24>>24!=0&r)if(q){r=1;x=p}else{r=1;x=p;k=(da((da(n+4|0,4,0,0)|0|0)+(p*24|0)+20>>0|0,1,0,0)|0|0)==0?0:k}else x=p}else{r=0;x=-1;o=0}if(aa){ja=68;break}else{q=1;w=0}e:while(1){u=hw(1,0,w|0)|0;v=C;do if((u&b|0)==0&(v&c|0)==0){n=da((da(Y|0,4,0,0)|0|0)+(w*20|0)|0,4,0,0)|0|0;p=da(n+4|0,4,0,0)|0|0;if(!(p&4096))t=n;else{t=n;do{if(!(p&262144))p=t+12|0;else p=da((da(t+20|0,4,0,0)|0|0)+4|0,4,0,0)|0|0;t=da(p|0,4,0,0)|0|0;p=da(t+4|0,4,0,0)|0|0}while((p&4096|0)!=0)}q=Z?0:q;if((da(t>>0|0,1,0,0)|0|0)!=-102)break;if((da(t+28|0,4,0,0)|0|0)!=(M|0))break;if((da(t+32|0,2,0,0)|0|0)!=(x|0))break;if(!r){t=u;q=v;r=w;break e}p=bu(da(a|0,4,0,0)|0|0,n)|0;if(!p)p=da(X|0,4,0,0)|0|0;if(!(cd(da(p|0,4,0,0)|0|0,da((da(F|0,4,0,0)|0|0)+(m<<2)|0,4,0,0)|0|0)|0)){t=u;q=v;r=w;break e}}while(0);w=w+1|0;if(!(q<<24>>24!=0&(w|0)<(h|0))){ja=68;break d}}do if(O){if(y<<24>>24)if((o^s)<<24>>24==(da((da(Y|0,4,0,0)|0|0)+(r*20|0)+12>>0|0,1,0,0)|0|0)){r=y;break}else{ja=68;break d}n=da((da(Y|0,4,0,0)|0|0)+(r*20|0)+12>>0|0,1,0,0)|0|0;s=n^o;if(o<<24>>24==n<<24>>24){r=1;break}n=g;r=da(n+4|0,4,0,0)|0|H;o=g;ea(o|0,da(n|0,4,0,0)|0|G|0,4,0);ea(o+4|0,r|0,4,0);r=1}else r=y;while(0);b=t|b;c=q|c;d=(x|0)<0?1:d}m=m+1|0;if((m|0)>=(K|0))break;else y=r}if((ja|0)==68){ja=0;k=(m|0)==0|(m|0)<(L&65535|0)?0:k}if(!(d<<24>>24))ja=71;else k=1}else ja=71;while(0);if((ja|0)==71){ja=0;if(!(k<<24>>24)){k=0;break b}}M=e+8|0;S=da(M|0,4,0,0)|0|S;T=da(M+4|0,4,0,0)|0|T;if(!aa){r=~S;s=~T;q=0;do{m=hw(1,0,q|0)|0;p=C;do if((m&b|0)==0&(p&c|0)==0){d=da((da(Y|0,4,0,0)|0|0)+(q*20|0)|0,4,0,0)|0|0;n=zv(P,d)|0;o=C;if((n|0)==0&(o|0)==0?(ea(ia+0|0,0|0,4,0),ea(ia+4|0,0|0,4,0),ea(ia+8|0,0|0,4,0),ea(ia+12|0,0|0,4,0),ea(ia+16|0,0|0,4,0),ea(ia+20|0,0|0,4,0),ea(Q>>0|0,1|0,1,0),ea(ia|0,78|0,4,0),ea(R|0,79|0,4,0),ea(U|0,0|0,4,0),qs(ia,d)|0,(da(Q>>0|0,1,0,0)|0|0)==0):0)break;M=(n&r|0)==0&(o&s|0)==0;b=(M?m:0)|b;c=(M?p:0)|c}while(0);q=q+1|0}while((q|0)<(h|0))}if(c>>>0>la>>>0|(c|0)==(la|0)&b>>>0>=ka>>>0|k<<24>>24==0|(W|0)>=(ha|0))break b;else{d=N;W=W+1|0}}Z=(da(e+29>>0|0,1,0,0)|0|0)==0;b=Z?b:ka;c=Z?c:la}while(0);if((b|0)==(ka|0)&(c|0)==(la|0)){h=ma&255;break}if(!(k<<24>>24)){do{h=h+-1|0;if((h|0)<=0){h=0;break a}Y=hw(1,0,h|0)|0;Y=iw(Y|0,C|0,-1,-1)|0;Z=C}while(!((Y&b|0)==(Y|0)&(Z&c|0)==(Z|0)));h=h&255}else h=-1}else h=0}while(0);i=na;return h|0}function Mv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(b)Rk(a,33920,5);if(!c)b=0;else{b=c;while(1)if(!(da(b>>0|0,1,0,0)|0))break;else b=b+1|0;b=b-c&1073741823}Rk(a,c,b);Rk(a,d,1);Rk(a,13552,1);return}function Nv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=da(da(da(a|0,4,0,0)|0|0,4,0,0)|0|0,4,0,0)|0|0;b=da(a+12|0,4,0,0)|0|0;e=a+20|0;if((b|0)>0){f=da(e|0,4,0,0)|0|0;while(1){b=b+-1|0;d=f+20|0;c=da(d|0,2,0,0)|0|0;if(c&1){Fk(g,da(f|0,4,0,0)|0|0);c=da(d|0,2,0,0)|0|0}c=c&65535;if(!(c&16)){if(c&32){c=da(f+12|0,4,0,0)|0|0;Nv(c);lg(g,c)}}else{c=da(f+12|0,4,0,0)|0|0;Nv(c);lg(g,c)}if((b|0)<=0)break;else f=f+48|0}}b=da(e|0,4,0,0)|0|0;if((b|0)!=(a+24|0))lg(g,b);return}function Ov(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();o=p;e=da(a+8|0,4,0,0)|0|0;f=da(a|0,4,0,0)|0|0;if(b){g=(c|0)==10;h=a+437|0;k=o+4|0;l=o+1|0;m=o+8|0;n=o+12|0;d=c&255;do{if(g)c=da(b+1>>0|0,1,0,0)|0|0;else c=d;ea(h>>0|0,c|0,1,0);c=da(b>>0|0,1,0,1)|0|0;if((c|0)==110){r=Uv(a,b)|0;q=Or(f,da(b+24|0,4,0,0)|0|0,0)|0;c=Lr(f,da(b+20|0,4,0,0)|0|0,0,0)|0;rr(a,r,q,c,da(h>>0|0,1,0,1)|0|0)}else if((c|0)==109){c=Uv(a,b)|0;qr(a,c,Lr(f,da(b+20|0,4,0,0)|0|0,0,0)|0)}else if((c|0)==108){r=Uv(a,b)|0;q=fr(f,da(b+8|0,4,0,0)|0|0,0)|0;c=Mr(f,da(b+28|0,4,0,0)|0|0)|0;sr(a,r,q,c,da(h>>0|0,1,0,1)|0|0)}else{c=fr(f,da(b+8|0,4,0,0)|0|0,0)|0;ea(o>>0|0,4|0,1,0);ea(k|0,0|0,4,0);ea(l>>0|0,0|0,1,0);ea(m|0,0|0,4,0);ea(n|0,0|0,4,0);hr(a,c,o)|0;Lk(f,c,1)}if((da(b>>0|0,1,0,0)|0|0)!=119)vh(e,98,0,0,0)|0;b=da(b+32|0,4,0,0)|0|0}while((b|0)!=0)}i=p;return}function Pv(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;h=i;i=i+16|0;if((i|0)>=(j|0))ba();e=h;g=da(a|0,4,0,0)|0|0;ea(e|0,0|0,4,0);ea(e+4|0,0|0,4,0);e=mr(g,159,e,0)|0;do if(!e)e=0;else{f=d<<16>>16;if(d<<16>>16>-1?(da(b+36|0,2,0,0)|0|0)!=d<<16>>16:0){d=da(b+4|0,4,0,0)|0|0;ea(e+28|0,c+1+f|0,4,0);ea(e+1>>0|0,da(d+(f*24|0)+21>>0|0,1,0,0)|0|0|0,1,0);f=da(d+(f*24|0)+16|0,4,0,0)|0|0;if(!f)f=da(da(g+8|0,4,0,0)|0|0,4,0,0)|0|0;e=wv(a,e,f)|0;break}ea(e+28|0,c|0,4,0);ea(e+1>>0|0,68|0,1,0)}while(0);i=h;return e|0}function Qv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a=lh(a,48,0)|0;if(a){e=a+0|0;f=e+44|0;do{ea(e>>0|0,0|0,1,0);e=e+1|0}while((e|0)<(f|0));ea(a>>0|0,-102|0,1,0);ea(a+34|0,-1|0,2,0);ea(a+24|0,1|0,4,0);e=da(b+(c*72|0)+24|0,4,0,0)|0|0;ea(a+44|0,e|0,4,0);ea(a+28|0,da(b+(c*72|0)+48|0,4,0,0)|0|0,4,0);if((da(e+36|0,2,0,0)|0|0)==(d|0))ea(a+32|0,-1|0,2,0);else{ea(a+32|0,d|0,2,0);g=(d|0)>63;d=hw(1,0,d|0)|0;f=b+(c*72|0)+64|0;c=f;e=da(c+4|0,4,0,0)|0|(g?-2147483648:C);ea(f|0,da(c|0,4,0,0)|0|(g?0:d)|0,4,0);ea(f+4|0,e|0,4,0)}e=a+4|0;ea(e|0,da(e|0,4,0,0)|0|4|0,4,0)}return a|0}function Rv(a,b){a=a|0;b=b|0;if((da(b>>0|0,1,0,0)|0|0)==-101){b=b+38|0;ea(b>>0|0,(da(b>>0|0,1,0,1)|0|0)+(da(a+24|0,4,0,0)|0|0)|0,1,0)}return 0}function Sv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=da(a+40|0,2,0,0)|0|0;f=c&65535;e=da(a+42|0,2,0,0)|0|0;h=da(b+40|0,2,0,1)|0|0;d=da(b+42|0,2,0,0)|0|0;a:do if(!((d&65535)>(e&65535)?1:(f-(e&65535)|0)>=(h-(d&65535)|0))){d=da(a+20|0,2,0,0)|0|0;e=da(b+20|0,2,0,0)|0|0;if(d<<16>>16>=e<<16>>16){if(d<<16>>16>e<<16>>16){c=0;break}if((da(a+22|0,2,0,0)|0|0)>(da(b+22|0,2,0,0)|0|0)){c=0;break}}if(!(c<<16>>16))c=1;else{g=da(a+48|0,4,0,0)|0|0;b=b+48|0;a=f;while(1){a=a+-1|0;e=da(g+(a<<2)|0,4,0,0)|0|0;if(e){c=h;while(1){d=c+-1|0;if((c|0)<=0){c=0;break a}if((da((da(b|0,4,0,0)|0|0)+(d<<2)|0,4,0,0)|0|0)==(e|0))break;else c=d}if((c|0)<1){c=0;break a}}if((a|0)<=0){c=1;break}}}}else c=0;while(0);return c|0}function Tv(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,k=0,l=0,m=0,n=0,o=0,p=0;c=da(a|0,4,0,0)|0|0;a:do if(c){h=da(b+16>>0|0,1,0,0)|0|0;i=b+17|0;j=b+18|0;k=b+20|0;l=b+22|0;m=b+42|0;n=b+36|0;do{if((da(c+16>>0|0,1,0,0)|0|0)==h<<24>>24?(da(c+17>>0|0,1,0,0)|0|0)==(da(i>>0|0,1,0,0)|0|0):0){if(((((da(c+36|0,4,0,0)|0)&16384|0)!=0?(da(m|0,2,0,0)|0|0)==0:0)?((da(n|0,4,0,0)|0)&513|0)==513:0)?(d=c,e=b,g=da(e|0,4,0,0)|0|0,e=da(e+4|0,4,0,0)|0|0,(g&(da(d|0,4,0,0)|0)|0)==(g|0)?(e&(da(d+4|0,4,0,0)|0)|0)==(e|0):0):0)break a;o=c;p=da(o|0,4,0,0)|0|0;o=da(o+4|0,4,0,0)|0|0;d=b;e=da(d|0,4,0,0)|0|0;d=da(d+4|0,4,0,0)|0|0;f=e&p;g=d&o;if((((f|0)==(p|0)&(g|0)==(o|0)?(da(c+18|0,2,0,0)|0|0)<=(da(j|0,2,0,0)|0|0):0)?(da(c+20|0,2,0,0)|0|0)<=(da(k|0,2,0,0)|0|0):0)?(da(c+22|0,2,0,0)|0|0)<=(da(l|0,2,0,0)|0|0):0){a=0;break a}if(((f|0)==(e|0)&(g|0)==(d|0)?(da(c+20|0,2,0,0)|0|0)>=(da(k|0,2,0,0)|0|0):0)?(da(c+22|0,2,0,0)|0|0)>=(da(l|0,2,0,0)|0|0):0)break a}a=c+52|0;c=da(a|0,4,0,0)|0|0}while((c|0)!=0)}while(0);return a|0}function Uv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=or(da(a|0,4,0,0)|0|0,0,b+12|0,0)|0;do if(g){f=da(a|0,4,0,0)|0|0;e=da((da(b+4|0,4,0,0)|0|0)+20|0,4,0,0)|0|0;a:do if(e){d=da(f+20|0,4,0,0)|0|0;if((d|0)>0){b=da(f+16|0,4,0,0)|0|0;c=0;while(1){a=c+1|0;if((da(b+(c<<4)+12|0,4,0,0)|0|0)==(e|0)){a=c;c=7;break a}if((a|0)<(d|0))c=a;else{c=7;break}}}else a=0}else{a=-1e6;c=7}while(0);if((c|0)==7)if(!((a|0)==0|(a|0)>1))break;a=jh(f,da((da(f+16|0,4,0,0)|0|0)+(a<<4)|0,4,0,0)|0|0)|0;ea(g+(((da(g|0,4,0,0)|0|0)+-1|0)*72|0)+12|0,a|0,4,0)}while(0);return g|0}function Vv(a){a=a|0;var 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,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;do if(a>>>0<245){if(a>>>0<11)o=16;else o=a+11&-8;a=o>>>3;k=da(12266*4|0,4,0,0)|0|0;h=k>>>a;if(h&3){d=(h&1^1)+a|0;e=d<<1;b=49104+(e<<2)|0;e=49104+(e+2<<2)|0;f=da(e|0,4,0,0)|0|0;g=f+8|0;h=da(g|0,4,0,0)|0|0;do if((b|0)!=(h|0)){if(h>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();c=h+12|0;if((da(c|0,4,0,0)|0|0)==(f|0)){ea(c|0,b|0,4,0);ea(e|0,h|0,4,0);break}else Nb()}else ea(12266*4|0,k&~(1<>>0>j>>>0){if(h){e=2<>>12&16;e=e>>>a;d=e>>>5&8;e=e>>>d;c=e>>>2&4;e=e>>>c;f=e>>>1&2;e=e>>>f;g=e>>>1&1;g=(d|a|c|f|g)+(e>>>g)|0;e=g<<1;f=49104+(e<<2)|0;e=49104+(e+2<<2)|0;c=da(e|0,4,0,0)|0|0;a=c+8|0;d=da(a|0,4,0,0)|0|0;do if((f|0)!=(d|0)){if(d>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();h=d+12|0;if((da(h|0,4,0,0)|0|0)==(c|0)){ea(h|0,f|0,4,0);ea(e|0,d|0,4,0);l=da(12268*4|0,4,0,0)|0|0;break}else Nb()}else{ea(12266*4|0,k&~(1<>>3;h=f<<1;e=49104+(h<<2)|0;g=da(12266*4|0,4,0,0)|0|0;f=1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{m=g;n=h}}else{ea(12266*4|0,g|f|0,4,0);m=49104+(h+2<<2)|0;n=e}ea(m|0,d|0,4,0);ea(n+12|0,d|0,4,0);ea(d+8|0,n|0,4,0);ea(d+12|0,e|0,4,0)}ea(12268*4|0,b|0,4,0);ea(12271*4|0,i|0,4,0);v=a;return v|0}a=da(12267*4|0,4,0,0)|0|0;if(a){g=(a&0-a)+-1|0;u=g>>>12&16;g=g>>>u;t=g>>>5&8;g=g>>>t;v=g>>>2&4;g=g>>>v;h=g>>>1&2;g=g>>>h;f=g>>>1&1;f=da(49368+((t|u|v|h|f)+(g>>>f)<<2)|0,4,0,0)|0|0;g=((da(f+4|0,4,0,0)|0)&-8)-o|0;h=f;while(1){c=da(h+16|0,4,0,0)|0|0;if(!c){c=da(h+20|0,4,0,0)|0|0;if(!c){k=g;j=f;break}}h=((da(c+4|0,4,0,0)|0)&-8)-o|0;v=h>>>0>>0;g=v?h:g;h=c;f=v?c:f}a=da(12270*4|0,4,0,0)|0|0;if(j>>>0>>0)Nb();b=j+o|0;if(j>>>0>=b>>>0)Nb();i=da(j+24|0,4,0,0)|0|0;f=da(j+12|0,4,0,0)|0|0;do if((f|0)==(j|0)){g=j+20|0;h=da(g|0,4,0,0)|0|0;if(!h){g=j+16|0;h=da(g|0,4,0,0)|0|0;if(!h){d=0;break}}while(1){f=h+20|0;e=da(f|0,4,0,0)|0|0;if(e){h=e;g=f;continue}f=h+16|0;e=da(f|0,4,0,0)|0|0;if(!e)break;else{h=e;g=f}}if(g>>>0>>0)Nb();else{ea(g|0,0|0,4,0);d=h;break}}else{e=da(j+8|0,4,0,0)|0|0;if(e>>>0>>0)Nb();h=e+12|0;if((da(h|0,4,0,0)|0|0)!=(j|0))Nb();g=f+8|0;if((da(g|0,4,0,0)|0|0)==(j|0)){ea(h|0,f|0,4,0);ea(g|0,e|0,4,0);d=f;break}else Nb()}while(0);do if(i){h=da(j+28|0,4,0,0)|0|0;g=49368+(h<<2)|0;if((j|0)==(da(g|0,4,0,0)|0|0)){ea(g|0,d|0,4,0);if(!d){ea(12267*4|0,(da(12267*4|0,4,0,0)|0)&~(1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();h=i+16|0;if((da(h|0,4,0,0)|0|0)==(j|0))ea(h|0,d|0,4,0);else ea(i+20|0,d|0,4,0);if(!d)break}g=da(12270*4|0,4,0,0)|0|0;if(d>>>0>>0)Nb();ea(d+24|0,i|0,4,0);h=da(j+16|0,4,0,0)|0|0;do if(h)if(h>>>0>>0)Nb();else{ea(d+16|0,h|0,4,0);ea(h+24|0,d|0,4,0);break}while(0);h=da(j+20|0,4,0,0)|0|0;if(h)if(h>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(d+20|0,h|0,4,0);ea(h+24|0,d|0,4,0);break}}while(0);if(k>>>0<16){v=k+o|0;ea(j+4|0,v|3|0,4,0);v=j+(v+4)|0;ea(v|0,da(v|0,4,0,0)|0|1|0,4,0)}else{ea(j+4|0,o|3|0,4,0);ea(j+(o|4)|0,k|1|0,4,0);ea(j+(k+o)|0,k|0,4,0);c=da(12268*4|0,4,0,0)|0|0;if(c){d=da(12271*4|0,4,0,0)|0|0;f=c>>>3;h=f<<1;e=49104+(h<<2)|0;g=da(12266*4|0,4,0,0)|0|0;f=1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{p=h;q=g}}else{ea(12266*4|0,g|f|0,4,0);p=49104+(h+2<<2)|0;q=e}ea(p|0,d|0,4,0);ea(q+12|0,d|0,4,0);ea(d+8|0,q|0,4,0);ea(d+12|0,e|0,4,0)}ea(12268*4|0,k|0,4,0);ea(12271*4|0,b|0,4,0)}v=j+8|0;return v|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;q=a&-8;j=da(12267*4|0,4,0,0)|0|0;if(j){g=0-q|0;a=a>>>8;if(a)if(q>>>0>16777215)c=31;else{o=(a+1048320|0)>>>16&8;p=a<>>16&4;p=p<>>16&2;c=14-(n|o|c)+(p<>>15)|0;c=q>>>(c+7|0)&1|c<<1}else c=0;e=da(49368+(c<<2)|0,4,0,0)|0|0;a:do if(!e){a=0;h=0}else{if((c|0)==31)h=0;else h=25-(c>>>1)|0;k=g;a=0;b=q<>>0>>0)if((d|0)==(q|0)){a=e;h=e;break a}else h=e;else g=k;p=da(e+20|0,4,0,0)|0|0;e=da(e+(b>>>31<<2)+16|0,4,0,0)|0|0;a=(p|0)==0|(p|0)==(e|0)?a:p;if(!e)break;else{k=g;b=b<<1}}}while(0);if((a|0)==0&(h|0)==0){a=2<>>12&16;p=p>>>m;l=p>>>5&8;p=p>>>l;n=p>>>2&4;p=p>>>n;o=p>>>1&2;p=p>>>o;a=p>>>1&1;a=da(49368+((l|m|n|o|a)+(p>>>a)<<2)|0,4,0,0)|0|0}if(!a){n=g;o=h}else while(1){p=((da(a+4|0,4,0,0)|0)&-8)-q|0;e=p>>>0>>0;g=e?p:g;h=e?a:h;e=da(a+16|0,4,0,0)|0|0;if(e){a=e;continue}a=da(a+20|0,4,0,0)|0|0;if(!a){n=g;o=h;break}}if((o|0)!=0?n>>>0<((da(12268*4|0,4,0,0)|0|0)-q|0)>>>0:0){a=da(12270*4|0,4,0,0)|0|0;if(o>>>0>>0)Nb();l=o+q|0;if(o>>>0>=l>>>0)Nb();i=da(o+24|0,4,0,0)|0|0;f=da(o+12|0,4,0,0)|0|0;do if((f|0)==(o|0)){g=o+20|0;h=da(g|0,4,0,0)|0|0;if(!h){g=o+16|0;h=da(g|0,4,0,0)|0|0;if(!h){s=0;break}}while(1){f=h+20|0;e=da(f|0,4,0,0)|0|0;if(e){h=e;g=f;continue}f=h+16|0;e=da(f|0,4,0,0)|0|0;if(!e)break;else{h=e;g=f}}if(g>>>0>>0)Nb();else{ea(g|0,0|0,4,0);s=h;break}}else{e=da(o+8|0,4,0,0)|0|0;if(e>>>0>>0)Nb();h=e+12|0;if((da(h|0,4,0,0)|0|0)!=(o|0))Nb();g=f+8|0;if((da(g|0,4,0,0)|0|0)==(o|0)){ea(h|0,f|0,4,0);ea(g|0,e|0,4,0);s=f;break}else Nb()}while(0);do if(i){h=da(o+28|0,4,0,0)|0|0;g=49368+(h<<2)|0;if((o|0)==(da(g|0,4,0,0)|0|0)){ea(g|0,s|0,4,0);if(!s){ea(12267*4|0,(da(12267*4|0,4,0,0)|0)&~(1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();h=i+16|0;if((da(h|0,4,0,0)|0|0)==(o|0))ea(h|0,s|0,4,0);else ea(i+20|0,s|0,4,0);if(!s)break}g=da(12270*4|0,4,0,0)|0|0;if(s>>>0>>0)Nb();ea(s+24|0,i|0,4,0);h=da(o+16|0,4,0,0)|0|0;do if(h)if(h>>>0>>0)Nb();else{ea(s+16|0,h|0,4,0);ea(h+24|0,s|0,4,0);break}while(0);h=da(o+20|0,4,0,0)|0|0;if(h)if(h>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(s+20|0,h|0,4,0);ea(h+24|0,s|0,4,0);break}}while(0);b:do if(n>>>0>=16){ea(o+4|0,q|3|0,4,0);ea(o+(q|4)|0,n|1|0,4,0);ea(o+(n+q)|0,n|0,4,0);h=n>>>3;if(n>>>0<256){g=h<<1;e=49104+(g<<2)|0;f=da(12266*4|0,4,0,0)|0|0;h=1<>>0>=(da(12270*4|0,4,0,0)|0|0)>>>0){t=h;u=g;break}Nb()}while(0);ea(t|0,l|0,4,0);ea(u+12|0,l|0,4,0);ea(o+(q+8)|0,u|0,4,0);ea(o+(q+12)|0,e|0,4,0);break}c=n>>>8;if(c)if(n>>>0>16777215)e=31;else{u=(c+1048320|0)>>>16&8;v=c<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=n>>>(e+7|0)&1|e<<1}else e=0;h=49368+(e<<2)|0;ea(o+(q+28)|0,e|0,4,0);ea(o+(q+20)|0,0|0,4,0);ea(o+(q+16)|0,0|0,4,0);g=da(12267*4|0,4,0,0)|0|0;f=1<>>1)|0;c:do if(((da(c+4|0,4,0,0)|0)&-8|0)!=(n|0)){g=n<>>31<<2)+16|0;h=da(b|0,4,0,0)|0|0;if(!h)break;if(((da(h+4|0,4,0,0)|0)&-8|0)==(n|0)){A=h;break c}else{g=g<<1;c=h}}if(b>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(b|0,l|0,4,0);ea(o+(q+24)|0,c|0,4,0);ea(o+(q+12)|0,l|0,4,0);ea(o+(q+8)|0,l|0,4,0);break b}}else A=c;while(0);c=A+8|0;b=da(c|0,4,0,0)|0|0;v=da(12270*4|0,4,0,0)|0|0;if(A>>>0>=v>>>0&b>>>0>=v>>>0){ea(b+12|0,l|0,4,0);ea(c|0,l|0,4,0);ea(o+(q+8)|0,b|0,4,0);ea(o+(q+12)|0,A|0,4,0);ea(o+(q+24)|0,0|0,4,0);break}else Nb()}else{v=n+q|0;ea(o+4|0,v|3|0,4,0);v=o+(v+4)|0;ea(v|0,da(v|0,4,0,0)|0|1|0,4,0)}while(0);v=o+8|0;return v|0}}}else q=-1;while(0);a=da(12268*4|0,4,0,0)|0|0;if(a>>>0>=q>>>0){b=a-q|0;c=da(12271*4|0,4,0,0)|0|0;if(b>>>0>15){ea(12271*4|0,c+q|0,4,0);ea(12268*4|0,b|0,4,0);ea(c+(q+4)|0,b|1|0,4,0);ea(c+a|0,b|0,4,0);ea(c+4|0,q|3|0,4,0)}else{ea(12268*4|0,0|0,4,0);ea(12271*4|0,0|0,4,0);ea(c+4|0,a|3|0,4,0);v=c+(a+4)|0;ea(v|0,da(v|0,4,0,0)|0|1|0,4,0)}v=c+8|0;return v|0}a=da(12269*4|0,4,0,0)|0|0;if(a>>>0>q>>>0){u=a-q|0;ea(12269*4|0,u|0,4,0);v=da(12272*4|0,4,0,0)|0|0;ea(12272*4|0,v+q|0,4,0);ea(v+(q+4)|0,u|1|0,4,0);ea(v+4|0,q|3|0,4,0);v=v+8|0;return v|0}do if(!(da(12384*4|0,4,0,0)|0)){a=vb(30)|0;if(!(a+-1&a)){ea(12386*4|0,a|0,4,0);ea(12385*4|0,a|0,4,0);ea(12387*4|0,-1|0,4,0);ea(12388*4|0,-1|0,4,0);ea(12389*4|0,0|0,4,0);ea(12377*4|0,0|0,4,0);ea(12384*4|0,(Ob(0)|0)&-16^1431655768|0,4,0);break}else Nb()}while(0);k=q+48|0;b=da(12386*4|0,4,0,0)|0|0;j=q+47|0;c=b+j|0;b=0-b|0;l=c&b;if(l>>>0<=q>>>0){v=0;return v|0}a=da(12376*4|0,4,0,0)|0|0;if((a|0)!=0?(t=da(12374*4|0,4,0,0)|0|0,u=t+l|0,u>>>0<=t>>>0|u>>>0>a>>>0):0){v=0;return v|0}d:do if(!((da(12377*4|0,4,0,0)|0)&4)){a=da(12272*4|0,4,0,0)|0|0;e:do if(a){e=49512|0;while(1){h=da(e|0,4,0,0)|0|0;if(h>>>0<=a>>>0?(r=e+4|0,(h+(da(r|0,4,0,0)|0|0)|0)>>>0>a>>>0):0){d=e;g=r;a=e;break}e=da(e+8|0,4,0,0)|0|0;if(!e){F=181;break e}}if(a){a=c-(da(12269*4|0,4,0,0)|0|0)&b;if(a>>>0<2147483647){h=rb(a|0)|0;if((h|0)==((da(d|0,4,0,0)|0|0)+(da(g|0,4,0,0)|0|0)|0))F=190;else F=191}else a=0}else F=181}else F=181;while(0);do if((F|0)==181){h=rb(0)|0;if((h|0)!=(-1|0)){a=h;g=da(12385*4|0,4,0,0)|0|0;e=g+-1|0;if(!(e&a))a=l;else a=l-a+(e+a&0-g)|0;g=da(12374*4|0,4,0,0)|0|0;e=g+a|0;if(a>>>0>q>>>0&a>>>0<2147483647){u=da(12376*4|0,4,0,0)|0|0;if((u|0)!=0?e>>>0<=g>>>0|e>>>0>u>>>0:0){a=0;break}g=rb(a|0)|0;if((g|0)==(h|0))F=190;else{h=g;F=191}}else a=0}else a=0}while(0);f:do if((F|0)==190){if((h|0)!=(-1|0)){w=h;F=201;break d}}else if((F|0)==191){g=0-a|0;do if((h|0)!=(-1|0)&a>>>0<2147483647&k>>>0>a>>>0?(v=da(12386*4|0,4,0,0)|0|0,v=j-a+v&0-v,v>>>0<2147483647):0)if((rb(v|0)|0)==(-1|0)){rb(g|0)|0;a=0;break f}else{a=v+a|0;break}while(0);if((h|0)==(-1|0))a=0;else{w=h;F=201;break d}}while(0);ea(12377*4|0,da(12377*4|0,4,0,0)|0|4|0,4,0);F=198}else{a=0;F=198}while(0);if((((F|0)==198?l>>>0<2147483647:0)?(w=rb(l|0)|0,x=rb(0)|0,(w|0)!=(-1|0)&(x|0)!=(-1|0)&w>>>0>>0):0)?(y=x-w|0,z=y>>>0>(q+40|0)>>>0,z):0){a=z?y:a;F=201}if((F|0)==201){h=(da(12374*4|0,4,0,0)|0|0)+a|0;ea(12374*4|0,h|0,4,0);if(h>>>0>(da(12375*4|0,4,0,0)|0|0)>>>0)ea(12375*4|0,h|0,4,0);k=da(12272*4|0,4,0,0)|0|0;g:do if(k){d=49512|0;do{h=da(d|0,4,0,0)|0|0;g=d+4|0;e=da(g|0,4,0,0)|0|0;if((w|0)==(h+e|0)){B=h;C=g;D=e;E=d;F=213;break}d=da(d+8|0,4,0,0)|0|0}while((d|0)!=0);if(((F|0)==213?((da(E+12|0,4,0,0)|0)&8|0)==0:0)?k>>>0>=B>>>0&k>>>0>>0:0){ea(C|0,D+a|0,4,0);b=(da(12269*4|0,4,0,0)|0|0)+a|0;c=k+8|0;if(!(c&7))c=0;else c=0-c&7;v=b-c|0;ea(12272*4|0,k+c|0,4,0);ea(12269*4|0,v|0,4,0);ea(k+(c+4)|0,v|1|0,4,0);ea(k+(b+4)|0,40|0,4,0);ea(12273*4|0,da(12388*4|0,4,0,0)|0|0,4,0);break}h=da(12270*4|0,4,0,0)|0|0;if(w>>>0>>0){ea(12270*4|0,w|0,4,0);j=w}else j=h;h=w+a|0;g=49512|0;do{if((da(g|0,4,0,0)|0|0)==(h|0)){G=g;H=g;F=223;break}g=da(g+8|0,4,0,0)|0|0}while((g|0)!=0);if((F|0)==223?((da(H+12|0,4,0,0)|0)&8|0)==0:0){ea(G|0,w|0,4,0);h=H+4|0;ea(h|0,(da(h|0,4,0,0)|0|0)+a|0,4,0);h=w+8|0;if(!(h&7))o=0;else o=0-h&7;h=w+(a+8)|0;if(!(h&7))c=0;else c=0-h&7;h=w+(c+a)|0;n=o+q|0;m=w+n|0;l=h-(w+o)-q|0;ea(w+(o+4)|0,q|3|0,4,0);h:do if((h|0)!=(k|0)){if((h|0)==(da(12271*4|0,4,0,0)|0|0)){v=(da(12268*4|0,4,0,0)|0|0)+l|0;ea(12268*4|0,v|0,4,0);ea(12271*4|0,m|0,4,0);ea(w+(n+4)|0,v|1|0,4,0);ea(w+(v+n)|0,v|0,4,0);break}k=a+4|0;i=da(w+(k+c)|0,4,0,0)|0|0;if((i&3|0)==1){b=i&-8;e=i>>>3;i:do if(i>>>0>=256){d=da(w+((c|24)+a)|0,4,0,0)|0|0;f=da(w+(a+12+c)|0,4,0,0)|0|0;do if((f|0)==(h|0)){f=c|16;g=w+(k+f)|0;i=da(g|0,4,0,0)|0|0;if(!i){g=w+(f+a)|0;i=da(g|0,4,0,0)|0|0;if(!i){M=0;break}}while(1){f=i+20|0;e=da(f|0,4,0,0)|0|0;if(e){i=e;g=f;continue}f=i+16|0;e=da(f|0,4,0,0)|0|0;if(!e)break;else{i=e;g=f}}if(g>>>0>>0)Nb();else{ea(g|0,0|0,4,0);M=i;break}}else{e=da(w+((c|8)+a)|0,4,0,0)|0|0;if(e>>>0>>0)Nb();i=e+12|0;if((da(i|0,4,0,0)|0|0)!=(h|0))Nb();g=f+8|0;if((da(g|0,4,0,0)|0|0)==(h|0)){ea(i|0,f|0,4,0);ea(g|0,e|0,4,0);M=f;break}else Nb()}while(0);if(!d)break;i=da(w+(a+28+c)|0,4,0,0)|0|0;g=49368+(i<<2)|0;do if((h|0)!=(da(g|0,4,0,0)|0|0)){if(d>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();i=d+16|0;if((da(i|0,4,0,0)|0|0)==(h|0))ea(i|0,M|0,4,0);else ea(d+20|0,M|0,4,0);if(!M)break i}else{ea(g|0,M|0,4,0);if(M)break;ea(12267*4|0,(da(12267*4|0,4,0,0)|0)&~(1<>>0>>0)Nb();ea(M+24|0,d|0,4,0);i=c|16;h=da(w+(i+a)|0,4,0,0)|0|0;do if(h)if(h>>>0>>0)Nb();else{ea(M+16|0,h|0,4,0);ea(h+24|0,M|0,4,0);break}while(0);h=da(w+(k+i)|0,4,0,0)|0|0;if(!h)break;if(h>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(M+20|0,h|0,4,0);ea(h+24|0,M|0,4,0);break}}else{g=da(w+((c|8)+a)|0,4,0,0)|0|0;f=da(w+(a+12+c)|0,4,0,0)|0|0;i=49104+(e<<1<<2)|0;do if((g|0)!=(i|0)){if(g>>>0>>0)Nb();if((da(g+12|0,4,0,0)|0|0)==(h|0))break;Nb()}while(0);if((f|0)==(g|0)){ea(12266*4|0,(da(12266*4|0,4,0,0)|0)&~(1<>>0>>0)Nb();i=f+8|0;if((da(i|0,4,0,0)|0|0)==(h|0)){I=i;break}Nb()}while(0);ea(g+12|0,f|0,4,0);ea(I|0,g|0,4,0)}while(0);h=w+((b|c)+a)|0;i=b+l|0}else i=l;h=h+4|0;ea(h|0,(da(h|0,4,0,0)|0)&-2|0,4,0);ea(w+(n+4)|0,i|1|0,4,0);ea(w+(i+n)|0,i|0,4,0);h=i>>>3;if(i>>>0<256){g=h<<1;e=49104+(g<<2)|0;f=da(12266*4|0,4,0,0)|0|0;h=1<>>0>=(da(12270*4|0,4,0,0)|0|0)>>>0){N=h;O=g;break}Nb()}while(0);ea(N|0,m|0,4,0);ea(O+12|0,m|0,4,0);ea(w+(n+8)|0,O|0,4,0);ea(w+(n+12)|0,e|0,4,0);break}c=i>>>8;do if(!c)e=0;else{if(i>>>0>16777215){e=31;break}u=(c+1048320|0)>>>16&8;v=c<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=i>>>(e+7|0)&1|e<<1}while(0);h=49368+(e<<2)|0;ea(w+(n+28)|0,e|0,4,0);ea(w+(n+20)|0,0|0,4,0);ea(w+(n+16)|0,0|0,4,0);g=da(12267*4|0,4,0,0)|0|0;f=1<>>1)|0;j:do if(((da(c+4|0,4,0,0)|0)&-8|0)!=(i|0)){g=i<>>31<<2)+16|0;h=da(b|0,4,0,0)|0|0;if(!h)break;if(((da(h+4|0,4,0,0)|0)&-8|0)==(i|0)){P=h;break j}else{g=g<<1;c=h}}if(b>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(b|0,m|0,4,0);ea(w+(n+24)|0,c|0,4,0);ea(w+(n+12)|0,m|0,4,0);ea(w+(n+8)|0,m|0,4,0);break h}}else P=c;while(0);c=P+8|0;b=da(c|0,4,0,0)|0|0;v=da(12270*4|0,4,0,0)|0|0;if(P>>>0>=v>>>0&b>>>0>=v>>>0){ea(b+12|0,m|0,4,0);ea(c|0,m|0,4,0);ea(w+(n+8)|0,b|0,4,0);ea(w+(n+12)|0,P|0,4,0);ea(w+(n+24)|0,0|0,4,0);break}else Nb()}else{v=(da(12269*4|0,4,0,0)|0|0)+l|0;ea(12269*4|0,v|0,4,0);ea(12272*4|0,m|0,4,0);ea(w+(n+4)|0,v|1|0,4,0)}while(0);v=w+(o|8)|0;return v|0}g=49512|0;while(1){h=da(g|0,4,0,0)|0|0;if(h>>>0<=k>>>0?(f=da(g+4|0,4,0,0)|0|0,i=h+f|0,i>>>0>k>>>0):0)break;g=da(g+8|0,4,0,0)|0|0}g=h+(f+-39)|0;if(!(g&7))g=0;else g=0-g&7;f=h+(f+-47+g)|0;f=f>>>0<(k+16|0)>>>0?k:f;g=f+8|0;h=w+8|0;if(!(h&7))h=0;else h=0-h&7;v=a+-40-h|0;ea(12272*4|0,w+h|0,4,0);ea(12269*4|0,v|0,4,0);ea(w+(h+4)|0,v|1|0,4,0);ea(w+(a+-36)|0,40|0,4,0);ea(12273*4|0,da(12388*4|0,4,0,0)|0|0,4,0);ea(f+4|0,27|0,4,0);ea(g+0|0,da(12378*4|0,4,0,0)|0|0,4,0);ea(g+4|0,da(12379*4|0,4,0,0)|0|0,4,0);ea(g+8|0,da(12380*4|0,4,0,0)|0|0,4,0);ea(g+12|0,da(12381*4|0,4,0,0)|0|0,4,0);ea(12378*4|0,w|0,4,0);ea(12379*4|0,a|0,4,0);ea(12381*4|0,0|0,4,0);ea(12380*4|0,g|0,4,0);h=f+28|0;ea(h|0,7|0,4,0);if((f+32|0)>>>0>>0)do{v=h;h=h+4|0;ea(h|0,7|0,4,0)}while((v+8|0)>>>0>>0);if((f|0)!=(k|0)){i=f-k|0;h=k+(i+4)|0;ea(h|0,(da(h|0,4,0,0)|0)&-2|0,4,0);ea(k+4|0,i|1|0,4,0);ea(k+i|0,i|0,4,0);h=i>>>3;if(i>>>0<256){g=h<<1;e=49104+(g<<2)|0;f=da(12266*4|0,4,0,0)|0|0;h=1<>>0>=(da(12270*4|0,4,0,0)|0|0)>>>0){J=c;K=b;break}Nb()}while(0);ea(J|0,k|0,4,0);ea(K+12|0,k|0,4,0);ea(k+8|0,K|0,4,0);ea(k+12|0,e|0,4,0);break}c=i>>>8;if(c)if(i>>>0>16777215)h=31;else{u=(c+1048320|0)>>>16&8;v=c<>>16&4;v=v<>>16&2;h=14-(t|u|h)+(v<>>15)|0;h=i>>>(h+7|0)&1|h<<1}else h=0;c=49368+(h<<2)|0;ea(k+28|0,h|0,4,0);ea(k+20|0,0|0,4,0);ea(k+16|0,0|0,4,0);b=da(12267*4|0,4,0,0)|0|0;d=1<>>1)|0;k:do if(((da(c+4|0,4,0,0)|0)&-8|0)!=(i|0)){h=i<>>31<<2)+16|0;d=da(b|0,4,0,0)|0|0;if(!d)break;if(((da(d+4|0,4,0,0)|0)&-8|0)==(i|0)){L=d;break k}else{h=h<<1;c=d}}if(b>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(b|0,k|0,4,0);ea(k+24|0,c|0,4,0);ea(k+12|0,k|0,4,0);ea(k+8|0,k|0,4,0);break g}}else L=c;while(0);c=L+8|0;b=da(c|0,4,0,0)|0|0;v=da(12270*4|0,4,0,0)|0|0;if(L>>>0>=v>>>0&b>>>0>=v>>>0){ea(b+12|0,k|0,4,0);ea(c|0,k|0,4,0);ea(k+8|0,b|0,4,0);ea(k+12|0,L|0,4,0);ea(k+24|0,0|0,4,0);break}else Nb()}}else{v=da(12270*4|0,4,0,0)|0|0;if((v|0)==0|w>>>0>>0)ea(12270*4|0,w|0,4,0);ea(12378*4|0,w|0,4,0);ea(12379*4|0,a|0,4,0);ea(12381*4|0,0|0,4,0);ea(12275*4|0,da(12384*4|0,4,0,0)|0|0,4,0);ea(12274*4|0,-1|0,4,0);c=0;do{u=c<<1;v=49104+(u<<2)|0;ea(49104+(u+3<<2)|0,v|0,4,0);ea(49104+(u+2<<2)|0,v|0,4,0);c=c+1|0}while((c|0)!=32);c=w+8|0;if(!(c&7))c=0;else c=0-c&7;v=a+-40-c|0;ea(12272*4|0,w+c|0,4,0);ea(12269*4|0,v|0,4,0);ea(w+(c+4)|0,v|1|0,4,0);ea(w+(a+-36)|0,40|0,4,0);ea(12273*4|0,da(12388*4|0,4,0,0)|0|0,4,0)}while(0);b=da(12269*4|0,4,0,0)|0|0;if(b>>>0>q>>>0){u=b-q|0;ea(12269*4|0,u|0,4,0);v=da(12272*4|0,4,0,0)|0|0;ea(12272*4|0,v+q|0,4,0);ea(v+(q+4)|0,u|1|0,4,0);ea(v+4|0,q|3|0,4,0);v=v+8|0;return v|0}}ea(Gb()|0|0,12|0,4,0);v=0;return v|0}function Wv(a){a=a|0;var 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;if(!a)return;f=a+-8|0;g=da(12270*4|0,4,0,0)|0|0;if(f>>>0>>0)Nb();e=da(a+-4|0,4,0,0)|0|0;d=e&3;if((d|0)==1)Nb();n=e&-8;p=a+(n+-8)|0;do if(!(e&1)){f=da(f|0,4,0,0)|0|0;if(!d)return;h=-8-f|0;k=a+h|0;l=f+n|0;if(k>>>0>>0)Nb();if((k|0)==(da(12271*4|0,4,0,0)|0|0)){f=a+(n+-4)|0;e=da(f|0,4,0,0)|0|0;if((e&3|0)!=3){t=k;j=l;break}ea(12268*4|0,l|0,4,0);ea(f|0,e&-2|0,4,0);ea(a+(h+4)|0,l|1|0,4,0);ea(p|0,l|0,4,0);return}c=f>>>3;if(f>>>0<256){d=da(a+(h+8)|0,4,0,0)|0|0;e=da(a+(h+12)|0,4,0,0)|0|0;f=49104+(c<<1<<2)|0;if((d|0)!=(f|0)){if(d>>>0>>0)Nb();if((da(d+12|0,4,0,0)|0|0)!=(k|0))Nb()}if((e|0)==(d|0)){ea(12266*4|0,(da(12266*4|0,4,0,0)|0)&~(1<>>0>>0)Nb();f=e+8|0;if((da(f|0,4,0,0)|0|0)==(k|0))b=f;else Nb()}else b=e+8|0;ea(d+12|0,e|0,4,0);ea(b|0,d|0,4,0);t=k;j=l;break}b=da(a+(h+24)|0,4,0,0)|0|0;d=da(a+(h+12)|0,4,0,0)|0|0;do if((d|0)==(k|0)){e=a+(h+20)|0;f=da(e|0,4,0,0)|0|0;if(!f){e=a+(h+16)|0;f=da(e|0,4,0,0)|0|0;if(!f){i=0;break}}while(1){d=f+20|0;c=da(d|0,4,0,0)|0|0;if(c){f=c;e=d;continue}d=f+16|0;c=da(d|0,4,0,0)|0|0;if(!c)break;else{f=c;e=d}}if(e>>>0>>0)Nb();else{ea(e|0,0|0,4,0);i=f;break}}else{c=da(a+(h+8)|0,4,0,0)|0|0;if(c>>>0>>0)Nb();f=c+12|0;if((da(f|0,4,0,0)|0|0)!=(k|0))Nb();e=d+8|0;if((da(e|0,4,0,0)|0|0)==(k|0)){ea(f|0,d|0,4,0);ea(e|0,c|0,4,0);i=d;break}else Nb()}while(0);if(b){f=da(a+(h+28)|0,4,0,0)|0|0;e=49368+(f<<2)|0;if((k|0)==(da(e|0,4,0,0)|0|0)){ea(e|0,i|0,4,0);if(!i){ea(12267*4|0,(da(12267*4|0,4,0,0)|0)&~(1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();f=b+16|0;if((da(f|0,4,0,0)|0|0)==(k|0))ea(f|0,i|0,4,0);else ea(b+20|0,i|0,4,0);if(!i){t=k;j=l;break}}e=da(12270*4|0,4,0,0)|0|0;if(i>>>0>>0)Nb();ea(i+24|0,b|0,4,0);f=da(a+(h+16)|0,4,0,0)|0|0;do if(f)if(f>>>0>>0)Nb();else{ea(i+16|0,f|0,4,0);ea(f+24|0,i|0,4,0);break}while(0);f=da(a+(h+20)|0,4,0,0)|0|0;if(f)if(f>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(i+20|0,f|0,4,0);ea(f+24|0,i|0,4,0);t=k;j=l;break}else{t=k;j=l}}else{t=k;j=l}}else{t=f;j=n}while(0);if(t>>>0>=p>>>0)Nb();f=a+(n+-4)|0;e=da(f|0,4,0,0)|0|0;if(!(e&1))Nb();if(!(e&2)){if((p|0)==(da(12272*4|0,4,0,0)|0|0)){k=(da(12269*4|0,4,0,0)|0|0)+j|0;ea(12269*4|0,k|0,4,0);ea(12272*4|0,t|0,4,0);ea(t+4|0,k|1|0,4,0);if((t|0)!=(da(12271*4|0,4,0,0)|0|0))return;ea(12271*4|0,0|0,4,0);ea(12268*4|0,0|0,4,0);return}if((p|0)==(da(12271*4|0,4,0,0)|0|0)){k=(da(12268*4|0,4,0,0)|0|0)+j|0;ea(12268*4|0,k|0,4,0);ea(12271*4|0,t|0,4,0);ea(t+4|0,k|1|0,4,0);ea(t+k|0,k|0,4,0);return}g=(e&-8)+j|0;b=e>>>3;do if(e>>>0>=256){b=da(a+(n+16)|0,4,0,0)|0|0;f=da(a+(n|4)|0,4,0,0)|0|0;do if((f|0)==(p|0)){e=a+(n+12)|0;f=da(e|0,4,0,0)|0|0;if(!f){e=a+(n+8)|0;f=da(e|0,4,0,0)|0|0;if(!f){o=0;break}}while(1){d=f+20|0;c=da(d|0,4,0,0)|0|0;if(c){f=c;e=d;continue}d=f+16|0;c=da(d|0,4,0,0)|0|0;if(!c)break;else{f=c;e=d}}if(e>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(e|0,0|0,4,0);o=f;break}}else{e=da(a+n|0,4,0,0)|0|0;if(e>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();d=e+12|0;if((da(d|0,4,0,0)|0|0)!=(p|0))Nb();c=f+8|0;if((da(c|0,4,0,0)|0|0)==(p|0)){ea(d|0,f|0,4,0);ea(c|0,e|0,4,0);o=f;break}else Nb()}while(0);if(b){f=da(a+(n+20)|0,4,0,0)|0|0;e=49368+(f<<2)|0;if((p|0)==(da(e|0,4,0,0)|0|0)){ea(e|0,o|0,4,0);if(!o){ea(12267*4|0,(da(12267*4|0,4,0,0)|0)&~(1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();f=b+16|0;if((da(f|0,4,0,0)|0|0)==(p|0))ea(f|0,o|0,4,0);else ea(b+20|0,o|0,4,0);if(!o)break}f=da(12270*4|0,4,0,0)|0|0;if(o>>>0>>0)Nb();ea(o+24|0,b|0,4,0);e=da(a+(n+8)|0,4,0,0)|0|0;do if(e)if(e>>>0>>0)Nb();else{ea(o+16|0,e|0,4,0);ea(e+24|0,o|0,4,0);break}while(0);c=da(a+(n+12)|0,4,0,0)|0|0;if(c)if(c>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(o+20|0,c|0,4,0);ea(c+24|0,o|0,4,0);break}}}else{c=da(a+n|0,4,0,0)|0|0;d=da(a+(n|4)|0,4,0,0)|0|0;f=49104+(b<<1<<2)|0;if((c|0)!=(f|0)){if(c>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();if((da(c+12|0,4,0,0)|0|0)!=(p|0))Nb()}if((d|0)==(c|0)){ea(12266*4|0,(da(12266*4|0,4,0,0)|0)&~(1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();e=d+8|0;if((da(e|0,4,0,0)|0|0)==(p|0))m=e;else Nb()}else m=d+8|0;ea(c+12|0,d|0,4,0);ea(m|0,c|0,4,0)}while(0);ea(t+4|0,g|1|0,4,0);ea(t+g|0,g|0,4,0);if((t|0)==(da(12271*4|0,4,0,0)|0|0)){ea(12268*4|0,g|0,4,0);return}else f=g}else{ea(f|0,e&-2|0,4,0);ea(t+4|0,j|1|0,4,0);ea(t+j|0,j|0,4,0);f=j}e=f>>>3;if(f>>>0<256){d=e<<1;f=49104+(d<<2)|0;b=da(12266*4|0,4,0,0)|0|0;c=1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{q=c;r=b}}else{ea(12266*4|0,b|c|0,4,0);q=49104+(d+2<<2)|0;r=f}ea(q|0,t|0,4,0);ea(r+12|0,t|0,4,0);ea(t+8|0,r|0,4,0);ea(t+12|0,f|0,4,0);return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{j=(b+1048320|0)>>>16&8;k=b<>>16&4;k=k<>>16&2;e=14-(i|j|e)+(k<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;c=49368+(e<<2)|0;ea(t+28|0,e|0,4,0);ea(t+20|0,0|0,4,0);ea(t+16|0,0|0,4,0);b=da(12267*4|0,4,0,0)|0|0;d=1<>>1)|0;b:do if(((da(c+4|0,4,0,0)|0)&-8|0)!=(f|0)){e=f<>>31<<2)+16|0;d=da(b|0,4,0,0)|0|0;if(!d)break;if(((da(d+4|0,4,0,0)|0)&-8|0)==(f|0)){s=d;break b}else{e=e<<1;c=d}}if(b>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(b|0,t|0,4,0);ea(t+24|0,c|0,4,0);ea(t+12|0,t|0,4,0);ea(t+8|0,t|0,4,0);break a}}else s=c;while(0);b=s+8|0;c=da(b|0,4,0,0)|0|0;k=da(12270*4|0,4,0,0)|0|0;if(s>>>0>=k>>>0&c>>>0>=k>>>0){ea(c+12|0,t|0,4,0);ea(b|0,t|0,4,0);ea(t+8|0,c|0,4,0);ea(t+12|0,s|0,4,0);ea(t+24|0,0|0,4,0);break}else Nb()}else{ea(12267*4|0,b|d|0,4,0);ea(c|0,t|0,4,0);ea(t+24|0,c|0,4,0);ea(t+12|0,t|0,4,0);ea(t+8|0,t|0,4,0)}while(0);k=(da(12274*4|0,4,0,0)|0|0)+-1|0;ea(12274*4|0,k|0,4,0);if(!k)b=49520|0;else return;while(1){b=da(b|0,4,0,0)|0|0;if(!b)break;else b=b+8|0}ea(12274*4|0,-1|0,4,0);return}function Xv(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a){c=Vv(b)|0;return c|0}if(b>>>0>4294967231){ea(Gb()|0|0,12|0,4,0);c=0;return c|0}if(b>>>0<11)c=16;else c=b+11&-8;c=$v(a+-8|0,c)|0;if(c){c=c+8|0;return c|0}c=Vv(b)|0;if(!c){c=0;return c|0}d=da(a+-4|0,4,0,0)|0|0;d=(d&-8)-((d&3|0)==0?8:4)|0;jw(c|0,a|0,(d>>>0>>0?d:b)|0)|0;Wv(a);return c|0}function Yv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!c){a=0;return a|0}else{e=c;d=a}while(1){c=da(d>>0|0,1,0,0)|0|0;a=da(b>>0|0,1,0,0)|0|0;if(c<<24>>24!=a<<24>>24)break;e=e+-1|0;if(!e){a=0;f=5;break}else{d=d+1|0;b=b+1|0}}if((f|0)==5)return a|0;a=(c&255)-(a&255)|0;return a|0}function Zv(a,b){a=a|0;b=b|0;var c=0,d=0;d=da(a>>0|0,1,0,0)|0|0;c=da(b>>0|0,1,0,0)|0|0;if(d<<24>>24==0?1:d<<24>>24!=c<<24>>24)b=d;else{do{a=a+1|0;b=b+1|0;d=da(a>>0|0,1,0,0)|0|0;c=da(b>>0|0,1,0,0)|0|0}while(!(d<<24>>24==0?1:d<<24>>24!=c<<24>>24));b=d}return (b&255)-(c&255)|0}function _v(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(!c){b=0;return b|0}d=da(a>>0|0,1,0,0)|0|0;a:do if(!(d<<24>>24))d=0;else while(1){c=c+-1|0;e=da(b>>0|0,1,0,0)|0|0;if(!(e<<24>>24!=0&(c|0)!=0&d<<24>>24==e<<24>>24))break a;a=a+1|0;b=b+1|0;d=da(a>>0|0,1,0,0)|0|0;if(!(d<<24>>24)){d=0;break}}while(0);b=(d&255)-(da(b>>0|0,1,0,1)|0|0)|0;return b|0}function $v(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,k=0,l=0,m=0,n=0,o=0;n=a+4|0;o=da(n|0,4,0,0)|0|0;i=o&-8;k=a+i|0;h=da(12270*4|0,4,0,0)|0|0;d=o&3;if(!((d|0)!=1&a>>>0>=h>>>0&a>>>0>>0))Nb();c=a+(i|4)|0;f=da(c|0,4,0,0)|0|0;if(!(f&1))Nb();if(!d){if(b>>>0<256){l=0;return l|0}if(i>>>0>=(b+4|0)>>>0?(i-b|0)>>>0<=(da(12386*4|0,4,0,0)|0)<<1>>>0:0){l=a;return l|0}l=0;return l|0}if(i>>>0>=b>>>0){d=i-b|0;if(d>>>0<=15){l=a;return l|0}ea(n|0,o&1|b|2|0,4,0);ea(a+(b+4)|0,d|3|0,4,0);ea(c|0,da(c|0,4,0,0)|0|1|0,4,0);aw(a+b|0,d);l=a;return l|0}if((k|0)==(da(12272*4|0,4,0,0)|0|0)){d=(da(12269*4|0,4,0,0)|0|0)+i|0;if(d>>>0<=b>>>0){l=0;return l|0}l=d-b|0;ea(n|0,o&1|b|2|0,4,0);ea(a+(b+4)|0,l|1|0,4,0);ea(12272*4|0,a+b|0,4,0);ea(12269*4|0,l|0,4,0);l=a;return l|0}if((k|0)==(da(12271*4|0,4,0,0)|0|0)){d=(da(12268*4|0,4,0,0)|0|0)+i|0;if(d>>>0>>0){l=0;return l|0}c=d-b|0;if(c>>>0>15){ea(n|0,o&1|b|2|0,4,0);ea(a+(b+4)|0,c|1|0,4,0);ea(a+d|0,c|0,4,0);d=a+(d+4)|0;ea(d|0,(da(d|0,4,0,0)|0)&-2|0,4,0);d=a+b|0}else{ea(n|0,o&1|d|2|0,4,0);d=a+(d+4)|0;ea(d|0,da(d|0,4,0,0)|0|1|0,4,0);d=0;c=0}ea(12268*4|0,c|0,4,0);ea(12271*4|0,d|0,4,0);l=a;return l|0}if(f&2){l=0;return l|0}l=(f&-8)+i|0;if(l>>>0>>0){l=0;return l|0}m=l-b|0;e=f>>>3;do if(f>>>0>=256){g=da(a+(i+24)|0,4,0,0)|0|0;f=da(a+(i+12)|0,4,0,0)|0|0;do if((f|0)==(k|0)){c=a+(i+20)|0;d=da(c|0,4,0,0)|0|0;if(!d){c=a+(i+16)|0;d=da(c|0,4,0,0)|0|0;if(!d){j=0;break}}while(1){e=d+20|0;f=da(e|0,4,0,0)|0|0;if(f){d=f;c=e;continue}f=d+16|0;e=da(f|0,4,0,0)|0|0;if(!e)break;else{d=e;c=f}}if(c>>>0>>0)Nb();else{ea(c|0,0|0,4,0);j=d;break}}else{e=da(a+(i+8)|0,4,0,0)|0|0;if(e>>>0>>0)Nb();d=e+12|0;if((da(d|0,4,0,0)|0|0)!=(k|0))Nb();c=f+8|0;if((da(c|0,4,0,0)|0|0)==(k|0)){ea(d|0,f|0,4,0);ea(c|0,e|0,4,0);j=f;break}else Nb()}while(0);if(g){d=da(a+(i+28)|0,4,0,0)|0|0;c=49368+(d<<2)|0;if((k|0)==(da(c|0,4,0,0)|0|0)){ea(c|0,j|0,4,0);if(!j){ea(12267*4|0,(da(12267*4|0,4,0,0)|0)&~(1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();d=g+16|0;if((da(d|0,4,0,0)|0|0)==(k|0))ea(d|0,j|0,4,0);else ea(g+20|0,j|0,4,0);if(!j)break}c=da(12270*4|0,4,0,0)|0|0;if(j>>>0>>0)Nb();ea(j+24|0,g|0,4,0);d=da(a+(i+16)|0,4,0,0)|0|0;do if(d)if(d>>>0>>0)Nb();else{ea(j+16|0,d|0,4,0);ea(d+24|0,j|0,4,0);break}while(0);d=da(a+(i+20)|0,4,0,0)|0|0;if(d)if(d>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(j+20|0,d|0,4,0);ea(d+24|0,j|0,4,0);break}}}else{f=da(a+(i+8)|0,4,0,0)|0|0;c=da(a+(i+12)|0,4,0,0)|0|0;d=49104+(e<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Nb();if((da(f+12|0,4,0,0)|0|0)!=(k|0))Nb()}if((c|0)==(f|0)){ea(12266*4|0,(da(12266*4|0,4,0,0)|0)&~(1<>>0>>0)Nb();d=c+8|0;if((da(d|0,4,0,0)|0|0)==(k|0))g=d;else Nb()}else g=c+8|0;ea(f+12|0,c|0,4,0);ea(g|0,f|0,4,0)}while(0);if(m>>>0<16){ea(n|0,l|o&1|2|0,4,0);l=a+(l|4)|0;ea(l|0,da(l|0,4,0,0)|0|1|0,4,0);l=a;return l|0}else{ea(n|0,o&1|b|2|0,4,0);ea(a+(b+4)|0,m|3|0,4,0);l=a+(l|4)|0;ea(l|0,da(l|0,4,0,0)|0|1|0,4,0);aw(a+b|0,m);l=a;return l|0}return 0}function aw(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=a+b|0;g=da(a+4|0,4,0,0)|0|0;do if(!(g&1)){i=da(a|0,4,0,0)|0|0;if(!(g&3))return;m=a+(0-i)|0;l=i+b|0;h=da(12270*4|0,4,0,0)|0|0;if(m>>>0>>0)Nb();if((m|0)==(da(12271*4|0,4,0,0)|0|0)){f=a+(b+4)|0;g=da(f|0,4,0,0)|0|0;if((g&3|0)!=3){s=m;k=l;break}ea(12268*4|0,l|0,4,0);ea(f|0,g&-2|0,4,0);ea(a+(4-i)|0,l|1|0,4,0);ea(p|0,l|0,4,0);return}d=i>>>3;if(i>>>0<256){e=da(a+(8-i)|0,4,0,0)|0|0;f=da(a+(12-i)|0,4,0,0)|0|0;g=49104+(d<<1<<2)|0;if((e|0)!=(g|0)){if(e>>>0>>0)Nb();if((da(e+12|0,4,0,0)|0|0)!=(m|0))Nb()}if((f|0)==(e|0)){ea(12266*4|0,(da(12266*4|0,4,0,0)|0)&~(1<>>0>>0)Nb();g=f+8|0;if((da(g|0,4,0,0)|0|0)==(m|0))c=g;else Nb()}else c=f+8|0;ea(e+12|0,f|0,4,0);ea(c|0,e|0,4,0);s=m;k=l;break}c=da(a+(24-i)|0,4,0,0)|0|0;e=da(a+(12-i)|0,4,0,0)|0|0;do if((e|0)==(m|0)){e=16-i|0;f=a+(e+4)|0;g=da(f|0,4,0,0)|0|0;if(!g){f=a+e|0;g=da(f|0,4,0,0)|0|0;if(!g){j=0;break}}while(1){e=g+20|0;d=da(e|0,4,0,0)|0|0;if(d){g=d;f=e;continue}e=g+16|0;d=da(e|0,4,0,0)|0|0;if(!d)break;else{g=d;f=e}}if(f>>>0>>0)Nb();else{ea(f|0,0|0,4,0);j=g;break}}else{d=da(a+(8-i)|0,4,0,0)|0|0;if(d>>>0>>0)Nb();g=d+12|0;if((da(g|0,4,0,0)|0|0)!=(m|0))Nb();f=e+8|0;if((da(f|0,4,0,0)|0|0)==(m|0)){ea(g|0,e|0,4,0);ea(f|0,d|0,4,0);j=e;break}else Nb()}while(0);if(c){g=da(a+(28-i)|0,4,0,0)|0|0;f=49368+(g<<2)|0;if((m|0)==(da(f|0,4,0,0)|0|0)){ea(f|0,j|0,4,0);if(!j){ea(12267*4|0,(da(12267*4|0,4,0,0)|0)&~(1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();g=c+16|0;if((da(g|0,4,0,0)|0|0)==(m|0))ea(g|0,j|0,4,0);else ea(c+20|0,j|0,4,0);if(!j){s=m;k=l;break}}e=da(12270*4|0,4,0,0)|0|0;if(j>>>0>>0)Nb();ea(j+24|0,c|0,4,0);g=16-i|0;f=da(a+g|0,4,0,0)|0|0;do if(f)if(f>>>0>>0)Nb();else{ea(j+16|0,f|0,4,0);ea(f+24|0,j|0,4,0);break}while(0);g=da(a+(g+4)|0,4,0,0)|0|0;if(g)if(g>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(j+20|0,g|0,4,0);ea(g+24|0,j|0,4,0);s=m;k=l;break}else{s=m;k=l}}else{s=m;k=l}}else{s=a;k=b}while(0);h=da(12270*4|0,4,0,0)|0|0;if(p>>>0>>0)Nb();g=a+(b+4)|0;f=da(g|0,4,0,0)|0|0;if(!(f&2)){if((p|0)==(da(12272*4|0,4,0,0)|0|0)){l=(da(12269*4|0,4,0,0)|0|0)+k|0;ea(12269*4|0,l|0,4,0);ea(12272*4|0,s|0,4,0);ea(s+4|0,l|1|0,4,0);if((s|0)!=(da(12271*4|0,4,0,0)|0|0))return;ea(12271*4|0,0|0,4,0);ea(12268*4|0,0|0,4,0);return}if((p|0)==(da(12271*4|0,4,0,0)|0|0)){l=(da(12268*4|0,4,0,0)|0|0)+k|0;ea(12268*4|0,l|0,4,0);ea(12271*4|0,s|0,4,0);ea(s+4|0,l|1|0,4,0);ea(s+l|0,l|0,4,0);return}i=(f&-8)+k|0;c=f>>>3;do if(f>>>0>=256){c=da(a+(b+24)|0,4,0,0)|0|0;e=da(a+(b+12)|0,4,0,0)|0|0;do if((e|0)==(p|0)){f=a+(b+20)|0;g=da(f|0,4,0,0)|0|0;if(!g){f=a+(b+16)|0;g=da(f|0,4,0,0)|0|0;if(!g){o=0;break}}while(1){e=g+20|0;d=da(e|0,4,0,0)|0|0;if(d){g=d;f=e;continue}e=g+16|0;d=da(e|0,4,0,0)|0|0;if(!d)break;else{g=d;f=e}}if(f>>>0>>0)Nb();else{ea(f|0,0|0,4,0);o=g;break}}else{d=da(a+(b+8)|0,4,0,0)|0|0;if(d>>>0>>0)Nb();g=d+12|0;if((da(g|0,4,0,0)|0|0)!=(p|0))Nb();f=e+8|0;if((da(f|0,4,0,0)|0|0)==(p|0)){ea(g|0,e|0,4,0);ea(f|0,d|0,4,0);o=e;break}else Nb()}while(0);if(c){g=da(a+(b+28)|0,4,0,0)|0|0;f=49368+(g<<2)|0;if((p|0)==(da(f|0,4,0,0)|0|0)){ea(f|0,o|0,4,0);if(!o){ea(12267*4|0,(da(12267*4|0,4,0,0)|0)&~(1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();f=c+16|0;if((da(f|0,4,0,0)|0|0)==(p|0))ea(f|0,o|0,4,0);else ea(c+20|0,o|0,4,0);if(!o)break}e=da(12270*4|0,4,0,0)|0|0;if(o>>>0>>0)Nb();ea(o+24|0,c|0,4,0);f=da(a+(b+16)|0,4,0,0)|0|0;do if(f)if(f>>>0>>0)Nb();else{ea(o+16|0,f|0,4,0);ea(f+24|0,o|0,4,0);break}while(0);e=da(a+(b+20)|0,4,0,0)|0|0;if(e)if(e>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{ea(o+20|0,e|0,4,0);ea(e+24|0,o|0,4,0);break}}}else{d=da(a+(b+8)|0,4,0,0)|0|0;e=da(a+(b+12)|0,4,0,0)|0|0;g=49104+(c<<1<<2)|0;if((d|0)!=(g|0)){if(d>>>0>>0)Nb();if((da(d+12|0,4,0,0)|0|0)!=(p|0))Nb()}if((e|0)==(d|0)){ea(12266*4|0,(da(12266*4|0,4,0,0)|0)&~(1<>>0>>0)Nb();f=e+8|0;if((da(f|0,4,0,0)|0|0)==(p|0))n=f;else Nb()}else n=e+8|0;ea(d+12|0,e|0,4,0);ea(n|0,d|0,4,0)}while(0);ea(s+4|0,i|1|0,4,0);ea(s+i|0,i|0,4,0);if((s|0)==(da(12271*4|0,4,0,0)|0|0)){ea(12268*4|0,i|0,4,0);return}else g=i}else{ea(g|0,f&-2|0,4,0);ea(s+4|0,k|1|0,4,0);ea(s+k|0,k|0,4,0);g=k}f=g>>>3;if(g>>>0<256){d=f<<1;g=49104+(d<<2)|0;c=da(12266*4|0,4,0,0)|0|0;e=1<>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();else{q=e;r=d}}else{ea(12266*4|0,c|e|0,4,0);q=49104+(d+2<<2)|0;r=g}ea(q|0,s|0,4,0);ea(r+12|0,s|0,4,0);ea(s+8|0,r|0,4,0);ea(s+12|0,g|0,4,0);return}c=g>>>8;if(c)if(g>>>0>16777215)f=31;else{k=(c+1048320|0)>>>16&8;l=c<>>16&4;l=l<>>16&2;f=14-(j|k|f)+(l<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;e=49368+(f<<2)|0;ea(s+28|0,f|0,4,0);ea(s+20|0,0|0,4,0);ea(s+16|0,0|0,4,0);d=da(12267*4|0,4,0,0)|0|0;c=1<>>1)|0;a:do if(((da(c+4|0,4,0,0)|0)&-8|0)!=(g|0)){f=g<>>31<<2)+16|0;e=da(d|0,4,0,0)|0|0;if(!e)break;if(((da(e+4|0,4,0,0)|0)&-8|0)==(g|0)){c=e;break a}else{f=f<<1;c=e}}if(d>>>0<(da(12270*4|0,4,0,0)|0|0)>>>0)Nb();ea(d|0,s|0,4,0);ea(s+24|0,c|0,4,0);ea(s+12|0,s|0,4,0);ea(s+8|0,s|0,4,0);return}while(0);d=c+8|0;e=da(d|0,4,0,0)|0|0;l=da(12270*4|0,4,0,0)|0|0;if(!(c>>>0>=l>>>0&e>>>0>=l>>>0))Nb();ea(e+12|0,s|0,4,0);ea(d|0,s|0,4,0);ea(s+8|0,e|0,4,0);ea(s+12|0,c|0,4,0);ea(s+24|0,0|0,4,0);return}function bw(){}function cw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=b-d-(c>>>0>a>>>0|0)>>>0;return (C=b,a-c>>>0|0)|0}function dw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>c;return a>>>c|(b&(1<>c-32|0}function ew(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)){ea(a|0,b|0,1,0)|0;a=a+1|0}}while((a|0)<(e|0)){ea(a|0,g|0,4,0)|0;a=a+4|0}}while((a|0)<(d|0)){ea(a|0,b|0,1,0)|0;a=a+1|0}return a-c|0}function fw(a){a=a|0;var b=0;b=a;while(da(b|0,1,0,0)|0)b=b+1|0;return b-a|0}function gw(a,b){a=a|0;b=b|0;var c=0,d=0;d=a+(fw(a)|0)|0;do{ea(d+c|0,da(b+c|0,1,0,0)|0,1,0)|0;c=c+1|0}while(da(b+(c-1)|0,1,0,0)|0);return a|0}function hw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b<>>32-c;return a<>>0;return (C=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function jw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return tb(a|0,b|0,c|0)|0;d=a|0;if((a&3)==(b&3)){while(a&3){if(!c)return d|0;ea(a|0,da(b|0,1,0,0)|0,1,0)|0;a=a+1|0;b=b+1|0;c=c-1|0}while((c|0)>=4){ea(a|0,da(b|0,4,0,0)|0,4,0)|0;a=a+4|0;b=b+4|0;c=c-4|0}}while((c|0)>0){ea(a|0,da(b|0,1,0,0)|0,1,0)|0;a=a+1|0;b=b+1|0;c=c-1|0}return d|0}function kw(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;ea(a|0,da(b|0,1,0,0)|0,1,0)|0}a=d}else jw(a,b,c)|0;return a|0}function lw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>>c;return a>>>c|(b&(1<>>c-32|0}function mw(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function nw(a){a=a|0;var b=0;b=da(m+(a&255)|0,1,0,0)|0;if((b|0)<8)return b|0;b=da(m+(a>>8&255)|0,1,0,0)|0;if((b|0)<8)return b+8|0;b=da(m+(a>>16&255)|0,1,0,0)|0;if((b|0)<8)return b+16|0;return (da(m+(a>>>24)|0,1,0,0)|0)+24|0}function ow(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=_(d,f)|0;e=a>>>16;d=(c>>>16)+(_(d,e)|0)|0;b=b>>>16;a=_(b,f)|0;return (C=(d>>>16)+(_(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function pw(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=cw(j^a,i^b,j,i)|0;g=C;b=f^j;a=e^i;a=cw((uw(h,g,cw(f^c,e^d,f,e)|0,C,0)|0)^b,C^a,b,a)|0;return a|0}function qw(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,k=0;e=i;i=i+8|0;h=e|0;g=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;k=d>>31|((d|0)<0?-1:0)<<1;j=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;b=cw(g^a,f^b,g,f)|0;a=C;uw(b,a,cw(k^c,j^d,k,j)|0,C,h)|0;a=cw((da(h|0,4,0,0)|0)^g,(da(h+4|0,4,0,0)|0)^f,g,f)|0;b=C;i=e;return (C=b,a)|0}function rw(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;a=ow(e,f)|0;c=C;return (C=(_(b,f)|0)+(_(d,e)|0)+c|c&0,a|0|0)|0}function sw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=uw(a,b,c,d,0)|0;return a|0}function tw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;i=i+8|0;e=f|0;uw(a,b,c,d,e)|0;i=f;return (C=da(e+4|0,4,0,0)|0|0,da(e|0,4,0,0)|0|0)|0}function uw(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,k=0,l=0,m=0,n=0,o=0;m=a;k=b;l=k;j=c;n=d;h=n;if(!l){f=(e|0)!=0;if(!h){if(f){ea(e|0,(m>>>0)%(j>>>0)|0,4,0);ea(e+4|0,0|0,4,0)}k=0;l=(m>>>0)/(j>>>0)>>>0;return (C=k,l)|0}else{if(!f){k=0;l=0;return (C=k,l)|0}ea(e|0,a|0|0,4,0);ea(e+4|0,b&0|0,4,0);k=0;l=0;return (C=k,l)|0}}i=(h|0)==0;do if(j){if(!i){g=(aa(h|0)|0)-(aa(l|0)|0)|0;if(g>>>0<=31){f=g+1|0;k=31-g|0;j=g-31>>31;h=f;i=m>>>(f>>>0)&j|l<>>(f>>>0)&j;f=0;g=m<>31;b=g-32|0;j=b>>31;h=g;i=k-1>>31&l>>>(b>>>0)|(l<>>(g>>>0))&j;j=j&l>>>(g>>>0);f=m<>>(b>>>0))&a|m<>31;break}if(e){ea(e|0,i&m|0,4,0);ea(e+4|0,0|0,4,0)}if((j|0)==1){k=k|b&0;l=a|0|0;return (C=k,l)|0}else{a=nw(j|0)|0;k=l>>>(a>>>0)|0;l=l<<32-a|m>>>(a>>>0)|0;return (C=k,l)|0}}else{if(i){if(e){ea(e|0,(l>>>0)%(j>>>0)|0,4,0);ea(e+4|0,0|0,4,0)}k=0;l=(l>>>0)/(j>>>0)>>>0;return (C=k,l)|0}if(!m){if(e){ea(e|0,0|0,4,0);ea(e+4|0,(l>>>0)%(h>>>0)|0,4,0)}k=0;l=(l>>>0)/(h>>>0)>>>0;return (C=k,l)|0}i=h-1|0;if(!(i&h)){if(e){ea(e|0,a|0|0,4,0);ea(e+4|0,i&l|b&0|0,4,0)}k=0;l=l>>>((nw(h|0)|0)>>>0);return (C=k,l)|0}g=(aa(h|0)|0)-(aa(l|0)|0)|0;if(g>>>0<=30){j=g+1|0;g=31-g|0;h=j;i=l<>>(j>>>0);j=l>>>(j>>>0);f=0;g=m<>>31|c<<1;f=g|f<<1;o=i<<1|o>>>31|0;n=i>>>31|j<<1|0;cw(b,a,o,n)|0;m=C;d=m>>31|((m|0)<0?-1:0)<<1;g=d&1;i=cw(o,n,d&l,(((m|0)<0?-1:0)>>31|((m|0)<0?-1:0)<<1)&k)|0;j=C;h=h-1|0}while((h|0)!=0);k=c;h=0}c=0;if(e){ea(e|0,i|0,4,0);ea(e+4|0,j|0,4,0)}k=(f|0)>>>31|(k|c)<<1|(c<<1|f>>>31)&0|h;l=(f<<1|0>>>31)&-2|g;return (C=k,l)|0}function vw(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return _b[(fa(a|0,1|0)|0)&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function ww(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return $b[(fa(a|0,63|0)|0)&63](b|0,c|0,d|0)|0}function xw(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;ac[(fa(a|0,1|0)|0)&1](b|0,c|0,d|0,e|0,f|0,g|0)}function yw(a,b){a=a|0;b=b|0;bc[(fa(a|0,31|0)|0)&31](b|0)}function zw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;cc[(fa(a|0,1|0)|0)&1](b|0,c|0,d|0,e|0,f|0)}function Aw(a,b,c){a=a|0;b=b|0;c=c|0;return +dc[(fa(a|0,1|0)|0)&1](b|0,c|0)}function Bw(a,b,c){a=a|0;b=b|0;c=+c;ec[(fa(a|0,1|0)|0)&1](b|0,+c)}function Cw(a,b){a=a|0;b=b|0;return +fc[(fa(a|0,1|0)|0)&1](b|0)}function Dw(a){a=a|0;return gc[(fa(a|0,7|0)|0)&7]()|0}function Ew(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return hc[(fa(a|0,3|0)|0)&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function Fw(a,b,c){a=a|0;b=b|0;c=c|0;ic[(fa(a|0,15|0)|0)&15](b|0,c|0)}function Gw(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 jc[(fa(a|0,7|0)|0)&7](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Hw(a,b){a=a|0;b=b|0;return kc[(fa(a|0,127|0)|0)&127](b|0)|0}function Iw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;lc[(fa(a|0,63|0)|0)&63](b|0,c|0,d|0)}function Jw(a){a=a|0;mc[(fa(a|0,3|0)|0)&3]()}function Kw(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return nc[(fa(a|0,3|0)|0)&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function Lw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return oc[(fa(a|0,31|0)|0)&31](b|0,c|0,d|0,e|0)|0}function Mw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;pc[(fa(a|0,15|0)|0)&15](b|0,c|0,d|0,e|0)}function Nw(a,b,c){a=a|0;b=b|0;c=c|0;return qc[(fa(a|0,127|0)|0)&127](b|0,c|0)|0}function Ow(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return rc[(fa(a|0,1|0)|0)&1](b|0,c|0,+d)|0}function Pw(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 sc[(fa(a|0,31|0)|0)&31](b|0,c|0,d|0,e|0,f|0)|0}function Qw(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;ga(0);return 0}function Rw(a,b,c){a=a|0;b=b|0;c=c|0;ha(1);return 0}function Sw(a,b,c){a=a|0;b=b|0;c=c|0;return sb(a|0,b|0,c|0)|0}function Tw(a,b,c){a=a|0;b=b|0;c=c|0;return Xb(a|0,b|0,c|0)|0}function Uw(a,b,c){a=a|0;b=b|0;c=c|0;return Eb(a|0,b|0,c|0)|0}function Vw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ia(2)}function Ww(a){a=a|0;ja(3)}function Xw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ka(4)}function Yw(a,b){a=a|0;b=b|0;la(5);return 0.0}function Zw(a,b){a=a|0;b=+b;ma(6)}function _w(a){a=a|0;na(7);return 0.0}function $w(){oa(8);return 0}function ax(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;pa(9);return 0}function bx(a,b){a=a|0;b=b|0;qa(10)}function cx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ra(11);return 0}function dx(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 Tb(a|0,b|0,c|0,d|0,e|0,f|0)|0}function ex(a){a=a|0;sa(12);return 0}function fx(a){a=a|0;return Wb(a|0)|0}function gx(a){a=a|0;return ub(a|0)|0}function hx(a){a=a|0;return gb(a|0)|0}function ix(a,b,c){a=a|0;b=b|0;c=c|0;ta(13)}function jx(){ua(14)}function kx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;va(15);return 0}function lx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;wa(16);return 0}function mx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;xa(17)}function nx(a,b){a=a|0;b=b|0;ya(18);return 0}function ox(a,b){a=a|0;b=b|0;return db(a|0,b|0)|0}function px(a,b){a=a|0;b=b|0;return Vb(a|0,b|0)|0}function qx(a,b){a=a|0;b=b|0;return Hb(a|0,b|0)|0}function rx(a,b){a=a|0;b=b|0;return eb(a|0,b|0)|0}function sx(a,b){a=a|0;b=b|0;return yb(a|0,b|0)|0}function tx(a,b){a=a|0;b=b|0;return wb(a|0,b|0)|0}function ux(a,b){a=a|0;b=b|0;return zb(a|0,b|0)|0}function vx(a,b){a=a|0;b=b|0;return Sb(a|0,b|0)|0}function wx(a,b,c){a=a|0;b=b|0;c=+c;za(19);return 0}function xx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Aa(20);return 0} -// EMSCRIPTEN_END_FUNCS -var _b=[Qw,te];var $b=[Rw,ki,pi,ri,ui,wi,pe,ve,uf,Wf,Xf,Ef,Df,Gf,Ne,Cf,Ff,Bf,we,Pf,of,Fe,Ec,If,Me,df,eg,Xc,Fi,Ki,Ni,dk,jk,rk,Sw,Tw,Uw,tk,Ap,Bp,zp,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw,Rw];var ac=[Vw,Id];var bc=[Ww,Vc,_e,xf,Gd,Qd,Pd,Qc,Ji,Ri,Si,Ui,Zi,bj,Ej,Fj,Gj,Ij,Kj,nk,po,xp,pl,Ww,Ww,Ww,Ww,Ww,Ww,Ww,Ww,Ww];var cc=[Xw,Ad];var dc=[Yw,be];var ec=[Zw,Bd];var fc=[_w,sd];var gc=[$w,gf,jf,Pc,kf,hf,uk,$w];var hc=[ax,_f,zf,ax];var ic=[bx,qi,Ed,Md,Nd,Od,bd,Li,Qi,qu,ru,bx,bx,bx,bx,bx];var jc=[cx,Ze,Uf,ne,dx,cx,cx,cx];var kc=[ex,Xd,xe,qf,sf,Yd,ef,ff,Zd,Be,dd,Mf,Re,Lf,kd,ld,Yf,pf,Sc,md,Rd,rf,Sd,od,qd,rd,td,ud,Ge,pd,vd,wd,xd,yd,nd,Le,Ie,Rc,Nc,$f,Jc,Mc,Td,jd,gd,id,hd,Fc,Dc,mf,Nf,cf,tf,nf,Of,De,Ce,Te,Ue,Uc,Ci,Ii,Mi,Ti,Wi,Xi,Yi,ak,kk,lk,fx,gx,hx,vk,zk,Wk,fl,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex,ex];var lc=[ix,oi,Cd,Dd,Fd,ad,Oi,_i,$i,aj,cj,dj,ej,fj,gj,hj,ij,jj,kj,lj,mj,nj,oj,pj,qj,rj,sj,tj,uj,vj,wj,xj,yj,zj,Aj,Bj,Cj,Dj,Hj,Jj,Lj,Mj,Nj,Oj,Pj,Qj,Rj,Sj,Tj,Uj,Vj,Wj,Xj,Yj,Zj,_j,$j,Sh,ix,ix,ix,ix,ix,ix];var mc=[jx,Zf,Ve,jx];var nc=[kx,yf,Af,He];var oc=[lx,li,mi,qe,$e,$c,Je,Ke,bg,Rf,Hc,ed,fg,_c,Se,mk,qk,Cc,Ch,Eh,Ih,Th,_m,cq,lx,lx,lx,lx,lx,lx,lx,lx];var pc=[mx,vf,zd,Hd,Jd,Kd,Ld,Wd,Pi,og,mx,mx,mx,mx,mx,mx];var qc=[nx,ni,si,ti,vi,xi,yi,zi,Ai,Bi,Ud,re,ze,ye,wf,_d,$d,ae,ke,le,ce,de,ie,je,ee,ge,he,fe,bf,Vd,Zc,Qf,Sf,Wc,Ae,Yc,Lc,cg,ag,Ee,fd,Oc,Hf,Kf,gg,hg,cd,dg,Tc,Oe,Gi,Hi,Vi,ek,fk,gk,hk,ik,ok,ox,px,qx,rx,sx,tx,sk,ux,vx,wk,xk,yk,Ak,Bk,Ck,Oh,wp,Cm,Dm,os,ps,Ys,Zs,fu,gu,nu,ou,pu,ov,Rv,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx];var rc=[wx,oe];var sc=[xx,ji,me,se,ue,Tf,Vf,Pe,We,Xe,Qe,Ye,af,Ic,Jf,Di,Ei,bk,ck,pk,Dk,Tn,Un,xx,xx,xx,xx,xx,xx,xx,xx,xx];return{_i64Subtract:cw,_strcat:gw,_free:Wv,_main:Bc,_realloc:Xv,_i64Add:iw,_memmove:kw,_bitshift64Ashr:dw,_strlen:fw,_memset:ew,_malloc:Vv,_memcpy:jw,_bitshift64Lshr:lw,_llvm_bswap_i32:mw,_bitshift64Shl:hw,runPostSets:bw,stackAlloc:tc,stackSave:uc,stackRestore:vc,setThrew:wc,setTempRet0:zc,getTempRet0:Ac,dynCall_iiiiiiii:vw,dynCall_iiii:ww,dynCall_viiiiii:xw,dynCall_vi:yw,dynCall_viiiii:zw,dynCall_dii:Aw,dynCall_vid:Bw,dynCall_di:Cw,dynCall_i:Dw,dynCall_iiiiiiiiii:Ew,dynCall_vii:Fw,dynCall_iiiiiii:Gw,dynCall_ii:Hw,dynCall_viii:Iw,dynCall_v:Jw,dynCall_iiiiiiiii:Kw,dynCall_iiiii:Lw,dynCall_viiii:Mw,dynCall_iii:Nw,dynCall_iiid:Ow,dynCall_iiiiii:Pw}}) -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var real__i64Subtract=asm["_i64Subtract"];asm["_i64Subtract"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Subtract.apply(null,arguments)});var real__strcat=asm["_strcat"];asm["_strcat"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__strcat.apply(null,arguments)});var real__main=asm["_main"];asm["_main"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__main.apply(null,arguments)});var real__realloc=asm["_realloc"];asm["_realloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__realloc.apply(null,arguments)});var real__i64Add=asm["_i64Add"];asm["_i64Add"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Add.apply(null,arguments)});var real__memmove=asm["_memmove"];asm["_memmove"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__memmove.apply(null,arguments)});var real__bitshift64Ashr=asm["_bitshift64Ashr"];asm["_bitshift64Ashr"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Ashr.apply(null,arguments)});var real__strlen=asm["_strlen"];asm["_strlen"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__strlen.apply(null,arguments)});var real__bitshift64Lshr=asm["_bitshift64Lshr"];asm["_bitshift64Lshr"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Lshr.apply(null,arguments)});var real__llvm_bswap_i32=asm["_llvm_bswap_i32"];asm["_llvm_bswap_i32"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__llvm_bswap_i32.apply(null,arguments)});var real__bitshift64Shl=asm["_bitshift64Shl"];asm["_bitshift64Shl"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Shl.apply(null,arguments)});var real_runPostSets=asm["runPostSets"];asm["runPostSets"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_runPostSets.apply(null,arguments)});var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _strcat=Module["_strcat"]=asm["_strcat"];var _free=Module["_free"]=asm["_free"];var _main=Module["_main"]=asm["_main"];var _realloc=Module["_realloc"]=asm["_realloc"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memmove=Module["_memmove"]=asm["_memmove"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _strlen=Module["_strlen"]=asm["_strlen"];var _memset=Module["_memset"]=asm["_memset"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=asm["dynCall_iiiiiiiiii"];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_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiid=Module["dynCall_iiid"]=asm["dynCall_iiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=(function(){var goog={math:{}};goog.math.Long=(function(low,high){this.low_=low|0;this.high_=high|0});goog.math.Long.IntCache_={};goog.math.Long.fromInt=(function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj){return cachedObj}}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128){goog.math.Long.IntCache_[value]=obj}return obj});goog.math.Long.fromNumber=(function(value){if(isNaN(value)||!isFinite(value)){return goog.math.Long.ZERO}else if(value<=-goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MIN_VALUE}else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MAX_VALUE}else if(value<0){return goog.math.Long.fromNumber(-value).negate()}else{return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)}});goog.math.Long.fromBits=(function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)});goog.math.Long.fromString=(function(str,opt_radix){if(str.length==0){throw Error("number format error: empty string")}var radix=opt_radix||10;if(radix<2||36=0){throw Error('number format error: interior "-" character: '+str)}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_});goog.math.Long.prototype.getNumBitsAbs=(function(){if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){return 64}else{return this.negate().getNumBitsAbs()}}else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--){if((val&1<0});goog.math.Long.prototype.greaterThanOrEqual=(function(other){return this.compare(other)>=0});goog.math.Long.prototype.compare=(function(other){if(this.equals(other)){return 0}var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg){return-1}if(!thisNeg&&otherNeg){return 1}if(this.subtract(other).isNegative()){return-1}else{return 1}});goog.math.Long.prototype.negate=(function(){if(this.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.MIN_VALUE}else{return this.not().add(goog.math.Long.ONE)}});goog.math.Long.prototype.add=(function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.subtract=(function(other){return this.add(other.negate())});goog.math.Long.prototype.multiply=(function(other){if(this.isZero()){return goog.math.Long.ZERO}else if(other.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}else if(other.equals(goog.math.Long.MIN_VALUE)){return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().multiply(other.negate())}else{return this.negate().multiply(other).negate()}}else if(other.isNegative()){return this.multiply(other.negate()).negate()}if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_)){return goog.math.Long.fromNumber(this.toNumber()*other.toNumber())}var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.div=(function(other){if(other.isZero()){throw Error("division by zero")}else if(this.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE)){return goog.math.Long.MIN_VALUE}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ONE}else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO)){return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE}else{var rem=this.subtract(other.multiply(approx));var result=approx.add(rem.div(other));return result}}}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().div(other.negate())}else{return this.negate().div(other).negate()}}else if(other.isNegative()){return this.div(other.negate()).negate()}var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero()){approxRes=goog.math.Long.ONE}res=res.add(approxRes);rem=rem.subtract(approxRem)}return res});goog.math.Long.prototype.modulo=(function(other){return this.subtract(this.div(other).multiply(other))});goog.math.Long.prototype.not=(function(){return goog.math.Long.fromBits(~this.low_,~this.high_)});goog.math.Long.prototype.and=(function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)});goog.math.Long.prototype.or=(function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)});goog.math.Long.prototype.xor=(function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)});goog.math.Long.prototype.shiftLeft=(function(numBits){numBits&=63;if(numBits==0){return this}else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<>>32-numBits)}else{return goog.math.Long.fromBits(0,low<>>numBits|high<<32-numBits,high>>numBits)}else{return goog.math.Long.fromBits(high>>numBits-32,high>=0?0:-1)}}});goog.math.Long.prototype.shiftRightUnsigned=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32){return goog.math.Long.fromBits(high,0)}else{return goog.math.Long.fromBits(high>>>numBits-32,0)}}});var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<>this.DB-sh}else this[this.t-1]|=x<=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<0){if(p>p)>0){m=true;r=int2char(d)}while(i>=0){if(p>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<>bs;for(var i=ds+1;i>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i=0)r[i]=0;for(i=0;i=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<1?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&1<0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:(function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative()){ret=x.negate()}else{ret=x}HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_}),ensureTemps:(function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=new BigInteger}),lh2bignum:(function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d}),stringify:(function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret}),fromString:(function(str,base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error"})};return Wrapper})();if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");function applyMemoryInitializer(data){if(data.byteLength)data=new Uint8Array(data);for(var i=0;i0){Module.printErr("run() called, but dependencies remain, so not running");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(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}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){if(Module["noExitRuntime"]){Module.printErr("exit("+status+") called, but noExitRuntime, so not exiting (you can use emscripten_force_exit, if you want to force a true shutdown)");return}ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status);if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}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="";var output="abort("+what+") at "+stackTrace()+extra;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() diff --git a/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite.js b/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite.js deleted file mode 100644 index 16636f44bb3..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/sqlite3/sqlite.js +++ /dev/null @@ -1,18 +0,0 @@ -var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function";var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};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}}))}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 (jsc?)"}}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};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.log(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]}}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,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){assert(args.length==sig.length-1);if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].apply(null,args)}else{assert(sig.length==1);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i0),size)|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success)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};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;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 cwrap,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){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!=="array",'Return type should not be "array".');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)}}Module["setValue"]=setValue;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}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;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=[_malloc,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)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){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)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;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}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;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}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);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)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}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(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;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)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;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}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.");chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}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["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"];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_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=="undefined"){runDependencyWatcher=setInterval((function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;Module.printErr("still waiting on run dependencies:")}Module.printErr("dependency: "+dep)}if(shown){Module.printErr("(end of list)")}}),1e4)}}else{Module.printErr("warning: run dependency added without ID")}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{Module.printErr("warning: run dependency removed without ID")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;STATIC_BASE=8;STATICTOP=STATIC_BASE+49568;__ATINIT__.push();allocate([32,0,0,0,88,0,0,0,168,0,0,0,224,0,0,0,0,1,0,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,116,49,40,97,32,73,78,84,69,71,69,82,44,32,98,32,73,78,84,69,71,69,82,44,32,99,32,86,65,82,67,72,65,82,40,49,48,48,41,41,59,0,0,73,78,83,69,82,84,32,73,78,84,79,32,116,49,32,86,65,76,85,69,83,40,49,44,49,51,49,53,51,44,39,116,104,105,114,116,101,101,110,32,116,104,111,117,115,97,110,100,32,111,110,101,32,104,117,110,100,114,101,100,32,102,105,102,116,121,32,116,104,114,101,101,39,41,59,0,0,0,0,0,73,78,83,69,82,84,32,73,78,84,79,32,116,49,32,86,65,76,85,69,83,40,49,44,57,56,55,44,39,115,111,109,101,32,111,116,104,101,114,32,110,117,109,98,101,114,39,41,59,0,0,0,0,0,0,0,83,69,76,69,67,84,32,99,111,117,110,116,40,42,41,32,70,82,79,77,32,116,49,59,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,97,44,32,98,44,32,99,32,70,82,79,77,32,116,49,59],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([114,99,32,61,61,32,83,81,76,73,84,69,95,79,75,0,116,101,115,116,46,99,0,0,116,101,115,116,49,0,0,0,99,111,117,110,116,40,42,41,61,50,97,61,49,98,61,49,51,49,53,51,99,61,116,104,105,114,116,101,101,110,32,116,104,111,117,115,97,110,100,32,111,110,101,32,104,117,110,100,114,101,100,32,102,105,102,116,121,32,116,104,114,101,101,97,61,49,98,61,57,56,55,99,61,115,111,109,101,32,111,116,104,101,114,32,110,117,109,98,101,114,0,0,0,0,0,0,115,116,114,99,109,112,40,98,117,102,102,101,114,44,32,69,88,80,69,67,84,69,68,41,32,61,61,32,48,0,0,0,51,46,56,46,57,0,0,0,83,81,76,73,84,69,95,0,104,191,0,0,120,191,0,0,136,191,0,0,152,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,254,255,255,127,0,0,0,0,128,0,0,0,244,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,208,38,0,0,216,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,224,38,0,0,240,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,248,38,0,0,8,39,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,16,39,0,0,216,38,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,117,110,105,120,0,0,0,0,7,0,0,0,0,0,0,0,117,110,105,120,45,110,111,110,101,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,117,110,105,120,45,100,111,116,102,105,108,101,0,0,0,0,9,0,0,0,0,0,0,0,117,110,105,120,45,101,120,99,108,0,0,0,0,0,0,0,115,111,117,114,99,101,32,97,110,100,32,100,101,115,116,105,110,97,116,105,111,110,32,109,117,115,116,32,98,101,32,100,105,115,116,105,110,99,116,0,0,0,0,64,0,0,0,0,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,115,116,114,105,110,103,32,111,114,32,98,108,111,98,32,116,111,111,32,98,105,103,0,0,145,0,0,0,54,0,0,0,55,0,0,0,31,1,1,1,70,0,10,1,47,0,0,1,35,1,0,0,16,0,4,0,61,0,0,0,24,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,58,32,37,115,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,116,97,98,108,101,32,119,105,116,104,111,117,116,32,114,111,119,105,100,58,32,37,115,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,101,119,58,32,37,115,0,0,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,34,37,115,34,0,0,0,0,102,111,114,101,105,103,110,32,107,101,121,0,0,0,0,0,105,110,100,101,120,101,100,0,99,97,110,110,111,116,32,111,112,101,110,32,37,115,32,99,111,108,117,109,110,32,102,111,114,32,119,114,105,116,105,110,103,0,0,0,0,0,0,0,37,115,0,0,0,0,0,0,42,63,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,10,10,10,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,64,0,42,42,42,42,42,42,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,3,2,5,0,0,0,1,0,2,3,4,2,2,2,1,1,2,3,4,2,2,2,1,2,2,2,2,2,2,2,1,3,3,2,4,2,2,2,1,4,2,2,2,4,5,2,6,5,5,5,5,5,5,5,6,6,5,5,5,5,5,7,1,7,5,5,5,5,5,5,99,114,101,97,116,101,0,0,116,114,105,103,103,101,114,0,116,101,109,112,0,0,0,0,116,101,109,112,111,114,97,114,121,0,0,0,0,0,0,0,101,110,100,0,0,0,0,0,101,120,112,108,97,105,110,0,50,48,49,53,45,48,52,45,48,56,32,49,50,58,49,54,58,51,51,32,56,97,56,102,102,99,56,54,50,101,57,54,102,53,55,97,97,54,57,56,102,57,51,100,101,49,48,100,101,101,50,56,101,54,57,102,54,101,48,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,3,0,0,0,0,8,0,235,3,0,0,0,0,128,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,109,0,101,0,109,0,111,0,114,0,121,0,0,0,0,0,0,0,108,0,105,0,98,0,114,0,97,0,114,0,121,0,32,0,114,0,111,0,117,0,116,0,105,0,110,0,101,0,32,0,99,0,97,0,108,0,108,0,101,0,100,0,32,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,115,0,101,0,113,0,117,0,101,0,110,0,99,0,101,0,0,0,0,0,0,202,154,59,0,202,154,59,208,7,0,0,232,3,0,0,244,1,0,0,168,97,0,0,127,0,0,0,10,0,0,0,80,195,0,0,231,3,0,0,232,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,78,84,69,71,69,82,0,66,73,78,65,82,89,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,32,99,111,108,117,109,110,58,32,37,115,46,37,115,0,0,0,0,0,57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,56,48,0,0,0,0,0,0,111,110,111,102,102,97,108,115,101,121,101,115,116,114,117,101,102,117,108,108,0,0,0,0,0,1,2,4,9,12,16,0,2,2,3,5,3,4,4,0,1,0,0,0,1,1,2,0,82,69,73,78,68,69,88,69,68,69,83,67,65,80,69,65,67,72,69,67,75,69,89,66,69,70,79,82,69,73,71,78,79,82,69,71,69,88,80,76,65,73,78,83,84,69,65,68,68,65,84,65,66,65,83,69,76,69,67,84,65,66,76,69,70,84,72,69,78,68,69,70,69,82,82,65,66,76,69,76,83,69,88,67,69,80,84,82,65,78,83,65,67,84,73,79,78,65,84,85,82,65,76,84,69,82,65,73,83,69,88,67,76,85,83,73,86,69,88,73,83,84,83,65,86,69,80,79,73,78,84,69,82,83,69,67,84,82,73,71,71,69,82,69,70,69,82,69,78,67,69,83,67,79,78,83,84,82,65,73,78,84,79,70,70,83,69,84,69,77,80,79,82,65,82,89,85,78,73,81,85,69,82,89,87,73,84,72,79,85,84,69,82,69,76,69,65,83,69,65,84,84,65,67,72,65,86,73,78,71,82,79,85,80,68,65,84,69,66,69,71,73,78,78,69,82,69,67,85,82,83,73,86,69,66,69,84,87,69,69,78,79,84,78,85,76,76,73,75,69,67,65,83,67,65,68,69,76,69,84,69,67,65,83,69,67,79,76,76,65,84,69,67,82,69,65,84,69,67,85,82,82,69,78,84,95,68,65,84,69,68,69,84,65,67,72,73,77,77,69,68,73,65,84,69,74,79,73,78,83,69,82,84,77,65,84,67,72,80,76,65,78,65,76,89,90,69,80,82,65,71,77,65,66,79,82,84,86,65,76,85,69,83,86,73,82,84,85,65,76,73,77,73,84,87,72,69,78,87,72,69,82,69,78,65,77,69,65,70,84,69,82,69,80,76,65,67,69,65,78,68,69,70,65,85,76,84,65,85,84,79,73,78,67,82,69,77,69,78,84,67,65,83,84,67,79,76,85,77,78,67,79,77,77,73,84,67,79,78,70,76,73,67,84,67,82,79,83,83,67,85,82,82,69,78,84,95,84,73,77,69,83,84,65,77,80,82,73,77,65,82,89,68,69,70,69,82,82,69,68,73,83,84,73,78,67,84,68,82,79,80,70,65,73,76,70,82,79,77,70,85,76,76,71,76,79,66,89,73,70,73,83,78,85,76,76,79,82,68,69,82,69,83,84,82,73,67,84,82,73,71,72,84,82,79,76,76,66,65,67,75,82,79,87,85,78,73,79,78,85,83,73,78,71,86,65,67,85,85,77,86,73,69,87,73,78,73,84,73,65,76,76,89,0,0,0,0,0,0,0,76,105,117,74,0,45,0,0,82,0,77,0,0,42,12,78,15,0,116,85,54,112,0,19,0,0,121,0,119,115,0,22,93,0,9,0,0,70,71,0,69,6,0,48,90,102,0,118,101,0,0,44,0,103,24,0,17,0,122,53,23,0,5,110,25,96,0,0,124,106,60,123,57,28,55,0,91,0,100,26,0,99,0,0,0,95,92,97,88,109,14,39,108,0,81,0,18,89,111,32,0,120,80,113,62,46,84,0,0,94,40,59,114,0,36,0,0,29,0,86,63,64,0,20,61,0,56,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,13,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,21,0,0,0,0,0,50,0,43,3,47,0,0,0,0,30,0,58,0,38,0,0,0,1,66,0,0,67,0,41,0,0,0,0,0,0,49,65,0,0,0,0,31,52,16,34,10,0,0,0,0,0,0,0,11,72,79,0,8,0,104,98,0,107,0,87,0,75,51,0,27,37,73,83,0,35,68,0,0,0,0,0,0,7,7,5,4,6,4,5,3,6,7,3,6,6,7,7,3,8,2,6,5,4,4,3,10,4,6,11,6,2,7,5,5,9,6,9,9,7,10,10,4,6,2,3,9,4,2,6,5,7,4,5,7,6,6,5,6,5,5,9,7,7,3,2,4,4,7,3,6,4,7,6,12,6,9,4,6,5,4,7,6,5,6,7,5,4,5,6,5,7,3,7,13,2,2,4,6,6,8,5,17,12,7,8,8,2,4,4,4,4,4,2,2,6,5,8,5,8,3,5,5,6,4,9,3,0,0,0,0,0,0,2,0,2,0,8,0,9,0,14,0,16,0,20,0,23,0,25,0,25,0,29,0,33,0,36,0,41,0,46,0,48,0,53,0,54,0,59,0,62,0,65,0,67,0,69,0,78,0,81,0,86,0,91,0,95,0,96,0,101,0,105,0,109,0,117,0,122,0,128,0,136,0,142,0,152,0,159,0,162,0,162,0,165,0,167,0,167,0,171,0,176,0,179,0,184,0,184,0,188,0,192,0,199,0,204,0,209,0,212,0,218,0,221,0,225,0,234,0,240,0,240,0,240,0,243,0,246,0,250,0,251,0,255,0,5,1,9,1,16,1,22,1,34,1,40,1,49,1,51,1,57,1,62,1,64,1,71,1,76,1,81,1,87,1,93,1,98,1,102,1,105,1,111,1,115,1,122,1,124,1,131,1,133,1,135,1,144,1,148,1,154,1,160,1,168,1,173,1,173,1,189,1,196,1,203,1,204,1,211,1,215,1,219,1,223,1,227,1,230,1,232,1,234,1,240,1,244,1,252,1,1,2,9,2,12,2,17,2,22,2,28,2,32,2,37,2,67,28,140,42,84,44,104,53,35,113,46,47,50,2,49,142,41,24,119,16,98,138,11,112,139,117,6,30,107,98,141,57,9,20,13,118,62,105,99,131,55,54,111,21,21,71,103,3,25,66,98,14,34,128,127,110,5,98,58,74,77,19,52,101,50,37,33,109,136,95,17,69,43,8,124,108,51,4,32,56,29,120,65,129,137,130,68,31,59,72,100,106,15,75,38,39,10,40,98,69,69,102,7,121,73,114,45,123,98,50,36,18,76,126,60,98,12,61,115,125,63,64,48,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,82,79,87,73,68,95,0,82,79,87,73,68,0,0,0,79,73,68,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,115,113,108,105,116,101,95,109,97,115,116,101,114,40,10,32,32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116,98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,67,82,69,65,84,69,32,84,69,77,80,32,84,65,66,76,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,40,10,32,32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116,98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,0,0,0,0,0,0,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,0,0,0,0,0,0,115,113,108,105,116,101,95,109,97,115,116,101,114,0,0,0,49,0,0,0,0,0,0,0,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,109,117,115,116,32,117,115,101,32,116,104,101,32,115,97,109,101,32,116,101,120,116,32,101,110,99,111,100,105,110,103,32,97,115,32,109,97,105,110,32,100,97,116,97,98,97,115,101,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,102,105,108,101,32,102,111,114,109,97,116,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,0,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,83,69,76,69,67,84,32,116,98,108,44,105,100,120,44,115,116,97,116,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,0,0,0,0,117,110,111,114,100,101,114,101,100,42,0,0,0,0,0,0,115,122,61,91,48,45,57,93,42,0,0,0,0,0,0,0,110,111,115,107,105,112,115,99,97,110,42,0,0,0,0,0,0,0,2,0,3,0,5,0,6,0,7,0,8,0,9,0,33,0,32,0,30,0,28,0,26,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,114,111,111,116,112,97,103,101,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,40,37,115,41,0,0,37,115,32,45,32,37,115,0,100,97,116,97,98,97,115,101,32,99,111,114,114,117,112,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,0,0,0,109,105,115,117,115,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,0,0,0,78,79,67,65,83,69,0,0,82,84,82,73,77,0,0,0,109,97,105,110,0,0,0,0,10,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,6,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,13,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,8,0,0,0,14,0,0,0,3,0,0,0,4,0,0,0,9,0,0,0,10,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,19,0,0,0,1,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,11,0,0,0,6,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,9,0,0,0,28,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,2,0,0,0,16,0,0,0,29,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,17,0,0,0,1,0,0,0,2,0,0,0,18,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,8,0,0,0,9,0,0,0,12,0,0,0,1,0,0,0,33,0,0,0,19,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,3,0,0,0,13,0,0,0,14,0,0,0,7,0,0,0,5,0,0,0,20,0,0,0,1,0,0,0,1,0,0,0,21,0,0,0,15,0,0,0,34,0,0,0,16,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,1,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,35,0,0,0,17,0,0,0,10,0,0,0,11,0,0,0,34,0,0,0,12,0,0,0,18,0,0,0,35,0,0,0,36,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,37,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,38,0,0,0,5,0,0,0,6,0,0,0,39,0,0,0,7,0,0,0,40,0,0,0,36,0,0,0,41,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,37,0,0,0,6,0,0,0,42,0,0,0,38,0,0,0,19,0,0,0,39,0,0,0,43,0,0,0,10,0,0,0,44,0,0,0,11,0,0,0,45,0,0,0,46,0,0,0,40,0,0,0,47,0,0,0,48,0,0,0,2,0,0,0,20,0,0,0,49,0,0,0,13,0,0,0,50,0,0,0,5,0,0,0,41,0,0,0,5,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,42,0,0,0,43,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,51,0,0,0,52,0,0,0,44,0,0,0,45,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,46,0,0,0,26,0,0,0,12,0,0,0,47,0,0,0,13,0,0,0,14,0,0,0,57,0,0,0,3,0,0,0,1,0,0,0,58,0,0,0,14,0,0,0,48,0,0,0,59,0,0,0,27,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,49,0,0,0,97,117,116,111,109,97,116,105,99,32,101,120,116,101,110,115,105,111,110,32,108,111,97,100,105,110,103,32,102,97,105,108,101,100,58,32,37,115,0,0,77,65,84,67,72,0,0,0,58,109,101,109,111,114,121,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,60,0,0,0,15,0,0,0,16,0,0,0,28,0,0,0,50,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,112,97,103,101,115,32,102,114,111,109,32,37,115,0,0,0,0,0,0,217,213,5,249,32,161,99,215,99,97,110,110,111,116,32,108,105,109,105,116,32,87,65,76,32,115,105,122,101,58,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,102,114,97,109,101,115,32,102,114,111,109,32,87,65,76,32,102,105,108,101,32,37,115,0,0,0,0,45,106,111,117,114,110,97,108,0,0,0,0,0,0,0,0,45,119,97,108,0,0,0,0,110,111,108,111,99,107,0,0,105,109,109,117,116,97,98,108,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,105,108,101,58,0,0,0,108,111,99,97,108,104,111,115,116,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,117,114,105,32,97,117,116,104,111,114,105,116,121,58,32,37,46,42,115,0,0,0,0,0,118,102,115,0,0,0,0,0,99,97,99,104,101,0,0,0,232,58,0,0,0,0,2,0,240,58,0,0,0,0,4,0,0,0,0,0,0,0,0,0,115,104,97,114,101,100,0,0,112,114,105,118,97,116,101,0,109,111,100,101,0,0,0,0,40,59,0,0,1,0,0,0,48,59,0,0,2,0,0,0,56,59,0,0,6,0,0,0,64,59,0,0,128,0,0,0,0,0,0,0,0,0,0,0,114,111,0,0,0,0,0,0,114,119,0,0,0,0,0,0,114,119,99,0,0,0,0,0,109,101,109,111,114,121,0,0,97,99,99,101,115,115,0,0,110,111,32,115,117,99,104,32,37,115,32,109,111,100,101,58,32,37,115,0,0,0,0,0,37,115,32,109,111,100,101,32,110,111,116,32,97,108,108,111,119,101,100,58,32,37,115,0,110,111,32,115,117,99,104,32,118,102,115,58,32,37,115,0,105,110,118,97,108,105,100,0,65,80,73,32,99,97,108,108,32,119,105,116,104,32,37,115,32,100,97,116,97,98,97,115,101,32,99,111,110,110,101,99,116,105,111,110,32,112,111,105,110,116,101,114,0,0,0,0,117,110,97,98,108,101,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,32,37,115,32,105,110,32,116,104,101,32,114,101,113,117,101,115,116,101,100,32,99,111,110,116,101,120,116,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,0,1,2,3,0,1,0,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,117,115,101,114,45,102,117,110,99,116,105,111,110,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,240,60,0,0,0,61,0,0,0,0,0,0,40,61,0,0,72,61,0,0,104,61,0,0,128,61,0,0,160,61,0,0,176,61,0,0,216,61,0,0,232,61,0,0,248,61,0,0,32,62,0,0,56,62,0,0,88,62,0,0,120,62,0,0,144,62,0,0,168,62,0,0,112,39,0,0,200,62,0,0,224,62,0,0,248,62,0,0,32,63,0,0,64,63,0,0,88,63,0,0,120,63,0,0,160,63,0,0,0,0,0,0,110,111,116,32,97,110,32,101,114,114,111,114,0,0,0,0,83,81,76,32,108,111,103,105,99,32,101,114,114,111,114,32,111,114,32,109,105,115,115,105,110,103,32,100,97,116,97,98,97,115,101,0,0,0,0,0,97,99,99,101,115,115,32,112,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,0,0,0,0,0,0,0,99,97,108,108,98,97,99,107,32,114,101,113,117,101,115,116,101,100,32,113,117,101,114,121,32,97,98,111,114,116,0,0,100,97,116,97,98,97,115,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,97,32,114,101,97,100,111,110,108,121,32,100,97,116,97,98,97,115,101,0,0,0,0,105,110,116,101,114,114,117,112,116,101,100,0,0,0,0,0,100,105,115,107,32,73,47,79,32,101,114,114,111,114,0,0,100,97,116,97,98,97,115,101,32,100,105,115,107,32,105,109,97,103,101,32,105,115,32,109,97,108,102,111,114,109,101,100,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,111,112,101,114,97,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,111,114,32,100,105,115,107,32,105,115,32,102,117,108,108,0,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,32,102,105,108,101,0,0,0,0,108,111,99,107,105,110,103,32,112,114,111,116,111,99,111,108,0,0,0,0,0,0,0,0,116,97,98,108,101,32,99,111,110,116,97,105,110,115,32,110,111,32,100,97,116,97,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,104,97,115,32,99,104,97,110,103,101,100,0,0,0,0,0,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,100,97,116,97,116,121,112,101,32,109,105,115,109,97,116,99,104,0,0,0,0,0,0,0,108,105,98,114,97,114,121,32,114,111,117,116,105,110,101,32,99,97,108,108,101,100,32,111,117,116,32,111,102,32,115,101,113,117,101,110,99,101,0,0,108,97,114,103,101,32,102,105,108,101,32,115,117,112,112,111,114,116,32,105,115,32,100,105,115,97,98,108,101,100,0,0,97,117,116,104,111,114,105,122,97,116,105,111,110,32,100,101,110,105,101,100,0,0,0,0,97,117,120,105,108,105,97,114,121,32,100,97,116,97,98,97,115,101,32,102,111,114,109,97,116,32,101,114,114,111,114,0,98,105,110,100,32,111,114,32,99,111,108,117,109,110,32,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,102,105,108,101,32,105,115,32,101,110,99,114,121,112,116,101,100,32,111,114,32,105,115,32,110,111,116,32,97,32,100,97,116,97,98,97,115,101,0,0,117,110,107,110,111,119,110,32,101,114,114,111,114,0,0,0,97,98,111,114,116,32,100,117,101,32,116,111,32,82,79,76,76,66,65,67,75,0,0,0,117,110,97,98,108,101,32,116,111,32,99,108,111,115,101,32,100,117,101,32,116,111,32,117,110,102,105,110,97,108,105,122,101,100,32,115,116,97,116,101,109,101,110,116,115,32,111,114,32,117,110,102,105,110,105,115,104,101,100,32,98,97,99,107,117,112,115,0,0,0,0,0,1,0,0,0,0,0,0,0,61,0,0,0,8,0,0,0,29,0,0,0,7,0,0,0,62,0,0,0,30,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,63,0,0,0,11,0,0,0,52,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,12,0,0,0,0,0,0,0,102,97,105,108,101,100,32,109,101,109,111,114,121,32,114,101,115,105,122,101,32,37,117,32,116,111,32,37,117,32,98,121,116,101,115,0,0,0,0,0,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,117,32,98,121,116,101,115,32,111,102,32,109,101,109,111,114,121,0,0,0,1,0,1,8,1,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,1,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,2,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,56,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,2,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,56,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,64,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,64,73,0,0,0,0,0,0,0,0,0,0,255,255,33,8,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,0,0,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,1,0,33,16,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0,72,73,0,0,0,0,0,0,0,0,0,0,255,255,33,8,1,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,0,0,33,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,1,0,33,16,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0,80,73,0,0,0,0,0,0,0,0,0,0,1,0,129,8,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,88,73,0,0,0,0,0,0,0,0,0,0,1,0,65,8,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,96,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,104,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,112,73,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,112,73,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,120,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,128,73,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,136,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,144,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,152,73,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,152,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,160,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,168,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,255,255,1,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,176,73,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,192,73,0,0,0,0,0,0,0,0,0,0,2,0,1,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,200,73,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,208,73,0,0,0,0,0,0,0,0,0,0,2,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,224,73,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,240,73,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,248,73,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,2,0,33,8,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,16,74,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,24,74,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,40,74,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,64,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,80,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,112,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,144,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,152,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,176,74,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,184,74,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,200,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,208,74,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,224,74,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,224,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,14,0,0,0,240,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,15,0,0,0,248,74,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,16,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,17,0,0,0,8,75,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,17,0,0,0,8,75,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,18,0,0,0,16,75,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,18,0,0,0,16,75,0,0,0,0,0,0,0,0,0,0,2,0,13,8,112,40,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,32,75,0,0,0,0,0,0,0,0,0,0,2,0,5,8,40,75,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,48,75,0,0,0,0,0,0,0,0,0,0,3,0,5,8,40,75,0,0,0,0,0,0,40],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+8464);allocate([48,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,116,114,105,109,0,0,0,114,116,114,105,109,0,0,0,116,114,105,109,0,0,0,0,109,105,110,0,0,0,0,0,109,97,120,0,0,0,0,0,116,121,112,101,111,102,0,0,108,101,110,103,116,104,0,0,105,110,115,116,114,0,0,0,115,117,98,115,116,114,0,0,112,114,105,110,116,102,0,0,117,110,105,99,111,100,101,0,99,104,97,114,0,0,0,0,97,98,115,0,0,0,0,0,114,111,117,110,100,0,0,0,117,112,112,101,114,0,0,0,108,111,119,101,114,0,0,0,99,111,97,108,101,115,99,101,0,0,0,0,0,0,0,0,104,101,120,0,0,0,0,0,105,102,110,117,108,108,0,0,117,110,108,105,107,101,108,121,0,0,0,0,0,0,0,0,108,105,107,101,108,105,104,111,111,100,0,0,0,0,0,0,108,105,107,101,108,121,0,0,114,97,110,100,111,109,0,0,114,97,110,100,111,109,98,108,111,98,0,0,0,0,0,0,110,117,108,108,105,102,0,0,115,113,108,105,116,101,95,118,101,114,115,105,111,110,0,0,115,113,108,105,116,101,95,115,111,117,114,99,101,95,105,100,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,108,111,103,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,117,115,101,100,0,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,103,101,116,0,0,0,0,0,0,0,0,113,117,111,116,101,0,0,0,108,97,115,116,95,105,110,115,101,114,116,95,114,111,119,105,100,0,0,0,0,0,0,0,99,104,97,110,103,101,115,0,116,111,116,97,108,95,99,104,97,110,103,101,115,0,0,0,114,101,112,108,97,99,101,0,122,101,114,111,98,108,111,98,0,0,0,0,0,0,0,0,108,111,97,100,95,101,120,116,101,110,115,105,111,110,0,0,115,117,109,0,0,0,0,0,116,111,116,97,108,0,0,0,97,118,103,0,0,0,0,0,99,111,117,110,116,0,0,0,103,114,111,117,112,95,99,111,110,99,97,116,0,0,0,0,103,108,111,98,0,0,0,0,37,95,0,1,0,0,0,0,108,105,107,101,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,168,75,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,192,75,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,216,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,0,0,0,0,37,115,37,46,42,115,34,37,119,34,0,0,0,0,0,0,37,115,37,115,0,0,0,0,37,46,42,115,34,37,119,34,37,115,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,56,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,72,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,80,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,88,77,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,104,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,120,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,136,77,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,160,77,0,0,0,0,0,0,0,0,0,0,106,117,108,105,97,110,100,97,121,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,116,105,109,101,0,0,0,0,100,97,116,101,116,105,109,101,0,0,0,0,0,0,0,0,115,116,114,102,116,105,109,101,0,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,115,116,97,109,112,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,100,97,116,101,0,0,0,0,37,48,50,100,0,0,0,0,37,48,54,46,51,102,0,0,37,48,51,100,0,0,0,0,37,46,49,54,103,0,0,0,37,108,108,100,0,0,0,0,37,48,52,100,0,0,0,0,108,111,99,97,108,116,105,109,101,0,0,0,0,0,0,0,117,110,105,120,101,112,111,99,104,0,0,0,0,0,0,0,117,116,99,0,0,0,0,0,119,101,101,107,100,97,121,32,0,0,0,0,0,0,0,0,115,116,97,114,116,32,111,102,32,0,0,0,0,0,0,0,109,111,110,116,104,0,0,0,121,101,97,114,0,0,0,0,100,97,121,0,0,0,0,0,104,111,117,114,0,0,0,0,109,105,110,117,116,101,0,0,115,101,99,111,110,100,0,0,108,111,99,97,108,32,116,105,109,101,32,117,110,97,118,97,105,108,97,98,108,101,0,0,110,111,119,0,0,0,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,32,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,0,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,0,0,76,73,75,69,32,111,114,32,71,76,79,66,32,112,97,116,116,101,114,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,0,0,0,69,83,67,65,80,69,32,101,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,97,32,115,105,110,103,108,101,32,99,104,97,114,97,99,116,101,114,0,0,0,0,44,0,0,0,0,0,0,0,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,37,33,46,49,53,103,0,0,37,33,46,50,48,101,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,78,85,76,76,0,0,0,0,37,46,42,102,0,0,0,0,105,110,116,101,103,101,114,0,116,101,120,116,0,0,0,0,114,101,97,108,0,0,0,0,98,108,111,98,0,0,0,0,110,117,108,108,0,0,0,0,1,0,0,0,0,0,0,0,152,79,0,0,0,0,0,0,32,0,0,0,0,0,0,0,105,110,116,101,114,114,117,112,116,0,0,0,0,0,0,0,117,110,114,101,99,111,103,110,105,122,101,100,32,116,111,107,101,110,58,32,34,37,84,34,0,0,0,0,0,0,0,0,110,101,97,114,32,34,37,84,34,58,32,115,121,110,116,97,120,32,101,114,114,111,114,0,114,111,119,105,100,0,0,0,117,110,107,110,111,119,110,32,116,97,98,108,101,32,111,112,116,105,111,110,58,32,37,46,42,115,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,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,99,111,109,112,111,117,110,100,32,83,69,76,69,67,84,0,0,0,0,0,0,0,115,101,116,32,108,105,115,116,0,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,111,110,32,102,117,110,99,116,105,111,110,32,37,84,0,0,0,0,0,0,0,8,130,0,0,1,0,0,0,168,51,0,0,1,0,0,0,105,110,100,101,120,0,0,0,113,117,97,108,105,102,105,101,100,32,116,97,98,108,101,32,110,97,109,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,73,78,83,69,82,84,44,32,85,80,68,65,84,69,44,32,97,110,100,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,116,104,101,32,73,78,68,69,88,69,68,32,66,89,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,0,116,104,101,32,78,79,84,32,73,78,68,69,88,69,68,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,144,1,145,2,145,1,146,1,146,3,147,0,147,1,147,3,148,1,149,3,151,0,151,1,151,2,150,0,150,1,150,1,150,1,149,2,149,2,149,2,153,1,153,0,149,2,149,3,149,5,149,2,154,6,156,1,158,0,158,3,157,1,157,0,155,5,155,2,162,0,162,2,160,3,160,1,164,3,165,1,152,1,152,1,152,1,166,0,166,1,168,1,168,4,168,6,169,1,169,2,170,1,170,1,167,2,167,0,173,2,173,2,173,4,173,3,173,3,173,2,173,2,173,3,173,5,173,2,173,4,173,4,173,1,173,2,178,0,178,1,180,0,180,2,182,2,182,3,182,3,182,3,183,2,183,2,183,1,183,1,183,2,181,3,181,2,184,0,184,2,184,2,161,0,161,2,185,3,185,1,186,1,186,0,187,2,187,7,187,5,187,5,187,10,189,0,189,1,176,0,176,3,190,0,190,2,191,1,191,1,191,1,149,4,193,2,193,0,149,8,149,4,149,1,163,2,195,1,195,3,198,1,198,2,198,1,196,9,196,1,207,4,207,5,199,1,199,1,199,0,210,2,210,0,200,3,200,2,200,4,211,2,211,1,211,0,201,0,201,2,213,2,213,0,212,7,212,7,212,7,159,0,159,2,194,2,214,1,214,2,214,3,214,4,216,2,216,0,215,0,215,3,215,2,217,4,217,0,205,0,205,3,220,4,220,2,177,1,177,1,177,0,203,0,203,3,204,0,204,2,206,0,206,2,206,4,206,4,149,6,202,0,202,2,149,8,221,5,221,3,149,6,149,7,222,2,222,1,223,0,223,3,219,3,219,1,175,1,175,3,174,1,175,1,175,1,175,3,175,5,174,1,174,1,175,1,175,3,175,6,175,5,175,4,174,1,175,3,175,3,175,3,175,3,175,3,175,3,175,3,175,3,224,1,224,2,175,3,175,5,175,2,175,3,175,3,175,4,175,2,175,2,175,2,175,2,225,1,225,2,175,5,226,1,226,2,175,5,175,3,175,5,175,4,175,4,175,5,228,5,228,4,229,2,229,0,227,1,227,0,209,1,209,0,208,3,208,1,149,12,230,1,230,0,179,0,179,3,188,5,188,3,231,0,231,2,149,4,149,1,149,2,149,3,149,5,149,6,149,5,149,6,232,1,232,1,232,1,232,1,232,1,171,2,171,1,172,2,149,5,233,11,235,1,235,1,235,2,235,0,236,1,236,1,236,3,237,0,237,3,238,0,238,2,234,3,234,2,240,1,240,3,241,0,241,3,241,2,239,7,239,5,239,5,239,1,175,4,175,6,192,1,192,1,192,1,149,4,149,6,149,3,243,0,243,2,242,1,242,0,149,1,149,3,149,1,149,3,149,6,149,6,244,1,245,0,245,1,149,1,149,4,246,8,247,1,247,3,248,0,248,2,249,1,249,3,250,1,251,0,251,4,251,2,197,0,197,2,197,3,252,6,252,8,0,0,238,0,186,3,213,0,33,1,54,1,234,0,144,0,61,1,147,255,126,1,121,1,47,1,205,1,133,1,122,1,112,1,46,1,38,1,253,0,139,1,37,1,68,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,254,3,244,3,237,3,230,3,195,3,193,3,191,3,189,3,182,3,179,3,162,3,144,3,105,3,93,3,55,3,42,3,3,3,247,2,208,2,196,2,158,2,145,2,107,2,102,2,100,2,98,2,96,2,94,2,92,2,86,2,83,2,81,2,68,2,30,2,28,2,25,2,23,2,21,2,19,2,17,2,15,2,247,1,130,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,95,0,191,1,82,0,78,1,248,1,211,1,147,1,221,1,208,1,147,1,147,1,147,1,147,1,92,3,235,2,232,2,17,3,126,2,126,2,158,3,123,3,132,3,131,3,119,3,76,3,72,3,67,3,80,3,62,3,75,3,61,3,24,3,71,3,58,3,225,2,70,3,27,3,21,3,47,0,222,2,18,2,184,2,9,3,199,2,165,2,221,2,218,2,217,2,216,2,215,2,115,2,192,1,64,0,187,0,25,5,22,5,228,4,10,5,249,4,43,5,42,5,41,5,39,5,38,5,36,5,35,5,34,5,33,5,32,5,31,5,30,5,28,5,27,5,24,5,23,5,21,5,18,5,14,5,12,5,9,5,242,4,240,4,235,4,8,5,7,5,214,4,5,5,1,5,0,5,255,4,254,4,227,4,253,4,252,4,251,4,249,4,244,4,243,4,241,4,239,4,237,4,233,4,224,4,213,4,223,4,222,4,219,4,214,4,216,4,211,4,225,4,210,4,209,4,206,4,196,4,190,4,186,4,201,4,195,4,208,4,207,4,173,4,171,4,203,4,200,4,177,4,184,4,218,4,113,4,212,4,205,4,169,4,157,4,197,4,153,4,172,4,155,4,167,4,166,4,162,4,158,4,194,4,192,4,152,4,138,4,159,4,156,4,136,4,175,4,179,4,109,4,71,4,174,4,170,4,164,4,168,4,147,4,145,4,144,4,149,4,150,4,142,4,135,4,117,4,146,4,134,4,143,4,133,4,108,4,121,4,119,4,100,4,104,4,79,4,78,4,76,4,72,4,126,4,125,4,61,4,101,4,56,4,40,4,96,4,73,4,58,4,54,4,49,4,43,4,85,4,83,4,95,4,93,4,92,4,89,4,87,4,84,4,239,3,232,3,234,3,52,4,51,4,57,4,0,0,0,0,50,1,212,0,176,1,187,3,127,2,191,0,187,3,39,1,47,2,88,0,88,0,88,0,88,0,81,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,185,0,184,0,183,0,123,2,123,2,36,1,94,2,94,2,88,0,88,0,88,0,88,0,171,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,16,0,180,1,85,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,172,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,47,2,84,0,84,0,84,0,83,0,74,1,65,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,123,2,123,2,122,2,121,2,182,0,170,2,38,2,123,1,120,1,119,1,17,0,66,1,94,2,94,2,115,1,198,0,223,1,91,0,118,1,82,0,79,0,165,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,86,2,123,2,123,2,107,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,186,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,82,2,82,2,142,0,72,1,71,1,228,1,249,0,88,1,238,0,123,2,123,2,122,2,121,2,73,2,192,1,14,2,13,2,229,0,132,1,1,0,138,1,194,1,72,2,193,1,123,2,123,2,123,2,123,2,63,1,139,1,94,2,94,2,199,0,157,0,17,1,126,1,12,1,125,1,187,0,123,2,123,2,122,2,121,2,55,1,43,2,10,1,81,2,81,2,10,1,91,1,76,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,222,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,16,1,24,2,122,2,121,2,146,0,98,2,197,0,54,1,63,2,182,0,226,1,15,1,123,1,120,1,119,1,250,1,21,0,122,2,121,2,122,2,121,2,123,2,123,2,118,1,99,2,62,2,36,2,184,1,111,0,51,2,94,2,94,2,122,2,121,2,68,1,223,1,96,2,96,2,96,2,44,1,179,1,61,2,119,0,151,1,210,0,162,0,50,2,115,3,80,2,80,2,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,250,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,108,2,111,0,123,2,123,2,105,1,94,2,94,2,102,1,249,0,93,1,248,0,177,1,243,0,223,1,74,2,122,2,121,2,195,0,99,2,93,0,119,0,221,0,63,2,241,1,22,2,22,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,62,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,77,0,173,1,126,2,61,2,77,2,18,2,240,0,230,0,242,0,105,0,249,0,93,1,248,0,3,2,76,2,208,0,204,1,17,2,52,2,173,0,122,2,121,2,202,3,144,0,174,1,2,0,168,1,228,0,124,1,45,2,94,2,94,2,190,0,153,0,159,0,158,0,2,2,51,0,120,2,119,2,118,2,71,0,24,2,176,1,186,3,196,0,98,2,186,3,102,2,45,0,18,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,5,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,96,2,96,2,96,2,30,2,168,1,146,1,129,1,241,0,250,1,195,1,64,1,211,0,31,2,164,0,180,1,130,1,37,1,195,1,75,2,108,0,240,1,111,0,78,1,135,1,79,2,168,1,102,2,27,0,196,1,197,1,94,2,94,2,72,0,1,1,70,0,3,1,196,1,83,1,86,1,52,2,70,2,68,0,159,1,213,1,72,1,71,1,62,0,102,2,45,0,110,0,137,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,152,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,110,0,243,1,8,2,26,2,146,1,133,1,168,1,110,0,54,2,244,1,81,2,81,2,198,1,82,0,79,0,165,0,168,1,79,2,128,1,52,2,84,1,103,2,188,0,162,0,168,1,94,1,104,2,168,1,102,2,44,0,94,2,94,2,189,1,70,2,44,1,178,1,151,0,19,0,102,2,9,0,56,2,68,2,92,1,103,2,213,1,55,2,102,2,26,0,104,2,102,2,45,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,155,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,67,2,110,0,66,2,9,2,26,1,177,1,142,1,144,1,255,0,230,1,82,0,79,0,165,0,231,1,164,0,82,0,79,0,165,0,232,1,232,1,108,1,131,1,168,1,32,2,32,2,253,1,94,1,106,1,155,0,191,0,94,2,94,2,47,2,130,2,128,2,77,1,82,0,79,0,165,0,49,1,52,2,251,1,56,1,101,1,102,2,45,0,73,1,84,2,83,2,194,0,81,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,20,0,67,1,150,0,7,1,211,0,31,2,165,1,84,2,83,2,102,2,22,0,168,1,193,0,168,1,28,1,168,1,135,1,168,1,253,1,168,1,65,2,168,1,186,0,79,1,168,1,47,2,168,1,57,1,120,0,34,2,94,2,94,2,67,0,102,2,47,0,102,2,50,0,102,2,48,0,102,2,100,0,102,2,99,0,102,2,101,0,64,2,102,2,102,0,102,2,109,0,70,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,168,1,55,1,168,1,73,2,54,0,168,1,4,2,5,2,78,2,102,2,112,0,168,1,72,2,168,1,60,2,168,1,195,0,168,1,59,2,168,1,67,0,168,1,102,2,94,0,102,2,98,0,168,1,102,2,97,0,8,1,94,2,94,2,195,0,102,2,46,0,102,2,96,0,102,2,30,0,102,2,49,0,102,2,115,0,102,2,114,0,162,1,229,0,132,1,102,2,113,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,119,0,168,1,78,2,110,0,116,1,94,2,94,2,195,0,53,0,250,0,102,2,29,0,195,0,216,1,182,1,217,2,190,0,46,1,242,1,14,0,11,2,129,2,2,0,102,2,43,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,101,2,196,3,196,3,98,1,94,2,94,2,164,1,56,1,64,0,102,2,42,0,135,1,99,1,27,1,181,1,45,1,255,0,158,1,154,1,239,1,236,1,102,2,28,0,215,1,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,110,0,110,0,110,0,110,0,94,2,94,2,110,0,254,0,13,0,102,2,41,0,20,2,19,2,27,1,225,1,19,2,201,1,28,1,119,0,49,2,100,1,102,2,40,0,28,1,50,1,89,0,78,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,110,0,168,1,85,1,220,0,43,2,94,2,94,2,95,1,43,2,62,1,102,2,95,0,157,1,255,0,83,0,74,1,28,1,28,1,255,0,128,2,77,1,100,1,255,0,102,2,39,0,50,1,100,1,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,61,1,60,1,141,0,209,1,94,2,94,2,219,0,107,2,207,1,102,2,10,0,161,1,206,1,255,0,189,0,254,1,41,2,95,1,207,0,107,1,161,0,102,2,38,0,59,1,218,0,255,0,255,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,76,0,163,1,255,0,3,0,110,3,205,1,168,1,247,0,75,1,75,1,102,2,37,0,217,0,76,0,163,1,134,1,3,0,216,0,215,0,166,1,4,0,75,1,75,1,168,1,35,2,12,0,168,1,33,2,102,2,36,0,168,1,29,2,166,1,168,1,28,2,168,1,214,0,168,1,152,1,168,1,27,2,147,1,93,2,93,2,237,0,102,2,25,0,119,0,102,2,24,0,76,2,152,1,102,2,45,0,118,0,102,2,35,0,102,2,34,0,102,2,33,0,102,2,23,0,76,2,60,0,223,0,91,2,90,2,1,2,122,1,73,0,74,0,140,0,139,0,168,1,110,0,9,1,75,0,170,1,169,1,59,0,168,1,98,2,73,0,74,0,37,2,146,1,148,1,168,1,117,1,75,0,170,1,169,1,92,2,138,0,98,2,102,2,11,0,136,1,76,0,163,1,181,0,3,0,102,2,32,0,15,1,113,1,75,1,75,1,237,1,102,2,31,0,149,0,96,2,96,2,96,2,95,2,15,0,166,1,109,1,102,2,8,0,137,0,233,1,136,0,190,0,96,2,96,2,96,2,95,2,15,0,229,1,176,0,135,0,7,0,252,0,221,1,152,1,174,0,133,0,175,0,218,1,57,0,56,0,132,0,130,0,119,0,76,0,163,1,76,2,3,0,212,1,245,0,208,1,171,0,75,1,75,1,125,0,123,0,200,1,191,1,122,0,190,1,104,0,80,1,231,0,166,1,166,0,154,0,73,0,74,0,76,1,116,0,175,1,121,0,53,1,75,0,170,1,169,1,222,0,106,0,98,2,52,1,125,2,204,0,152,1,117,2,115,2,116,2,6,0,200,0,172,1,171,1,34,1,203,0,110,2,201,0,76,2,62,0,63,0,33,1,66,0,163,1,143,1,3,0,145,1,32,1,92,0,143,0,75,1,75,1,31,1,96,2,96,2,96,2,95,2,15,0,73,0,74,0,227,0,166,1,69,1,69,0,160,1,75,0,170,1,169,1,100,2,156,1,98,2,192,0,61,0,57,2,209,0,140,1,226,0,22,1,225,0,127,1,152,1,15,2,46,2,20,1,21,2,40,2,16,2,65,1,11,2,114,1,252,1,180,0,76,2,238,1,179,0,110,1,117,0,253,0,13,1,10,2,247,1,96,2,96,2,96,2,95,2,15,0,39,2,246,1,58,0,18,1,12,2,178,0,73,0,74,0,48,1,245,1,112,1,47,1,206,0,75,0,170,1,169,1,235,1,104,1,98,2,213,0,177,0,227,1,131,0,89,1,42,1,41,1,40,1,202,0,38,1,224,1,234,1,210,1,134,0,172,0,129,0,188,1,90,1,214,1,128,0,58,1,203,1,103,0,127,0,126,0,148,0,124,0,167,0,187,1,235,0,96,2,96,2,96,2,95,2,15,0,186,1,183,1,111,2,234,0,43,1,145,0,71,2,35,1,121,1,69,2,160,0,119,0,156,0,14,1,124,2,203,3,169,0,23,1,114,2,8,2,113,2,217,1,112,2,170,0,109,2,106,2,119,0,168,0,55,0,153,1,167,1,25,2,97,2,30,1,29,1,149,1,58,2,48,2,44,2,5,0,52,0,202,1,42,2,147,0,11,1,7,2,248,1,6,2,150,1,6,1,239,0,4,1,0,2,87,1,255,1,2,1,97,1,53,2,0,1,224,0,251,0,103,1,21,1,19,1,220,1,219,1,246,0,96,1,244,0,211,1,199,1,236,0,233,0,232,0,51,1,185,1,25,1,205,0,163,0,141,1,24,1,23,2,249,1,74,1,105,2,203,3,203,3,203,3,203,3,111,1,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,82,1,0,0,0,0,0,0,100,117,112,108,105,99,97,116,101,32,87,73,84,72,32,116,97,98,108,101,32,110,97,109,101,58,32,37,115,0,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,0,0,97,117,116,104,111,114,105,122,101,114,32,109,97,108,102,117,110,99,116,105,111,110,0,0,67,82,69,65,84,69,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,37,84,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,116,97,98,108,101,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,48,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,116,97,98,108,101,39,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,116,111,32,97,32,118,105,101,119,0,0,0,115,113,108,105,116,101,95,97,108,116,101,114,116,97,98,95,37,115,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,97,32,116,101,109,112,111,114,97,114,121,32,100,97,116,97,98,97,115,101,32,102,105,108,101,32,102,111,114,32,115,116,111,114,105,110,103,32,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,115,0,0,0,115,113,108,105,116,101,95,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,108,117,109,110,0,67,97,110,110,111,116,32,97,100,100,32,97,32,85,78,73,81,85,69,32,99,111,108,117,109,110,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,82,69,70,69,82,69,78,67,69,83,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,78,85,76,76,32,100,101,102,97,117,108,116,32,118,97,108,117,101,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,78,79,84,32,78,85,76,76,32,99,111,108,117,109,110,32,119,105,116,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,32,78,85,76,76,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,99,111,110,115,116,97,110,116,32,100,101,102,97,117,108,116,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,117,98,115,116,114,40,115,113,108,44,49,44,37,100,41,32,124,124,32,39,44,32,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,37,100,41,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,32,61,32,37,81,0,0,0,0,116,98,108,95,110,97,109,101,61,37,81,0,0,0,0,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,40,37,115,41,0,110,97,109,101,61,37,81,0,37,115,32,79,82,32,110,97,109,101,61,37,81,0,0,0,45,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,111,116,104,101,114,32,116,97,98,108,101,32,111,114,32,105,110,100,101,120,32,119,105,116,104,32,116,104,105,115,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,118,105,101,119,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,40,115,113,108,44,32,37,81,44,32,37,81,41,32,87,72,69,82,69,32,37,115,59,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,115,113,108,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,32,61,32,39,116,114,105,103,103,101,114,39,32,84,72,69,78,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,69,76,83,69,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,40,115,113,108,44,32,37,81,41,32,69,78,68,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,44,32,110,97,109,101,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,61,39,116,97,98,108,101,39,32,84,72,69,78,32,37,81,32,87,72,69,78,32,110,97,109,101,32,76,73,75,69,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,37,37,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,32,84,72,69,78,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,110,97,109,101,44,37,100,43,49,56,41,32,69,76,83,69,32,110,97,109,101,32,69,78,68,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,67,79,76,76,65,84,69,32,110,111,99,97,115,101,32,65,78,68,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,79,82,32,116,121,112,101,61,39,105,110,100,101,120,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,41,59,0,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,0,85,80,68,65,84,69,32,34,37,119,34,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,115,101,116,32,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,110,97,109,101,32,61,32,37,81,0,0,0,0,0,0,0,85,80,68,65,84,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,37,115,59,0,0,0,0,0,118,105,101,119,32,37,115,32,105,115,32,99,105,114,99,117,108,97,114,108,121,32,100,101,102,105,110,101,100,0,0,0,110,111,32,115,117,99,104,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,58,32,37,115,0,0,3,2,1,0,0,0,0,0,37,115,58,37,100,0,0,0,97,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,72,65,86,73,78,71,0,0,0,0,0,79,82,68,69,82,0,0,0,71,82,79,85,80,0,0,0,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,116,104,101,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,0,37,114,32,79,82,68,69,82,32,66,89,32,116,101,114,109,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,97,110,121,32,99,111,108,117,109,110,32,105,110,32,116,104,101,32,114,101,115,117,108,116,32,115,101,116,0,0,0,0,37,114,32,37,115,32,66,89,32,116,101,114,109,32,111,117,116,32,111,102,32,114,97,110,103,101,32,45,32,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,49,32,97,110,100,32,37,100,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,37,115,32,66,89,32,99,108,97,117,115,101,0,0,69,120,112,114,101,115,115,105,111,110,32,116,114,101,101,32,105,115,32,116,111,111,32,108,97,114,103,101,32,40,109,97,120,105,109,117,109,32,100,101,112,116,104,32,37,100,41,0,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,32,116,111,32,108,105,107,101,108,105,104,111,111,100,40,41,32,109,117,115,116,32,98,101,32,97,32,99,111,110,115,116,97,110,116,32,98,101,116,119,101,101,110,32,48,46,48,32,97,110,100,32,49,46,48,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,58,32,37,115,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,0,110,111,32,115,117,99,104,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,115,117,98,113,117,101,114,105,101,115,0,0,0,0,0,0,112,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,67,72,69,67,75,32,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,112,97,114,116,105,97,108,32,105,110,100,101,120,32,87,72,69,82,69,32,99,108,97,117,115,101,115,0,0,0,0,110,101,119,0,0,0,0,0,111,108,100,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,108,105,97,115,101,100,32,97,103,103,114,101,103,97,116,101,32,37,115,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,0,0,97,109,98,105,103,117,111,117,115,32,99,111,108,117,109,110,32,110,97,109,101,0,0,0,37,115,58,32,37,115,46,37,115,46,37,115,0,0,0,0,37,115,58,32,37,115,46,37,115,0,0,0,0,0,0,0,37,115,58,32,37,115,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,0,0,0,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,115,113,108,105,116,101,95,115,113,95,37,112,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,34,37,115,34,58,32,109,97,120,32,54,53,53,51,53,0,0,42,0,0,0,0,0,0,0,37,115,46,37,115,0,0,0,37,115,46,37,115,46,37,115,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,0,110,111,32,116,97,98,108,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,114,101,115,117,108,116,32,115,101,116,0,0,97,32,78,65,84,85,82,65,76,32,106,111,105,110,32,109,97,121,32,110,111,116,32,104,97,118,101,32,97,110,32,79,78,32,111,114,32,85,83,73,78,71,32,99,108,97,117,115,101,0,0,0,0,0,0,0,99,97,110,110,111,116,32,104,97,118,101,32,98,111,116,104,32,79,78,32,97,110,100,32,85,83,73,78,71,32,99,108,97,117,115,101,115,32,105,110,32,116,104,101,32,115,97,109,101,32,106,111,105,110,0,0,99,97,110,110,111,116,32,106,111,105,110,32,117,115,105,110,103,32,99,111,108,117,109,110,32,37,115,32,45,32,99,111,108,117,109,110,32,110,111,116,32,112,114,101,115,101,110,116,32,105,110,32,98,111,116,104,32,116,97,98,108,101,115,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,115,0,0,0,0,0,0,0,109,117,108,116,105,112,108,101,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,114,101,99,117,114,115,105,118,101,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,99,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110,99,101,58,32,37,115,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,109,117,108,116,105,112,108,101,32,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,115,58,32,37,115,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,32,105,110,32,97,32,115,117,98,113,117,101,114,121,58,32,37,115,0,0,0,110,111,32,115,117,99,104,32,109,111,100,117,108,101,58,32,37,115,0,0,0,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,102,97,105,108,101,100,58,32,37,115,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,100,105,100,32,110,111,116,32,100,101,99,108,97,114,101,32,115,99,104,101,109,97,58,32,37,115,0,0,0,104,105,100,100,101,110,0,0,32,104,105,100,100,101,110,0,111,98,106,101,99,116,32,110,97,109,101,32,114,101,115,101,114,118,101,100,32,102,111,114,32,105,110,116,101,114,110,97,108,32,117,115,101,58,32,37,115,0,0,0,0,0,0,0,99,111,114,114,117,112,116,32,100,97,116,97,98,97,115,101,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,84,0,0,0,0,0,105,100,120,0,0,0,0,0,116,98,108,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,56,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,40,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,66,66,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,0,0,0,0,8,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,116,97,116,95,103,101,116,0,0,0,0,0,0,0,0,37,108,108,117,0,0,0,0,32,37,108,108,117,0,0,0,115,116,97,116,95,112,117,115,104,0,0,0,0,0,0,0,115,116,97,116,95,105,110,105,116,0,0,0,0,0,0,0,72,52,0,0,96,112,0,0,112,112,0,0,0,0,0,0,128,112,0,0,0,0,0,0,116,98,108,44,105,100,120,44,115,116,97,116,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,51,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,52,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,37,115,40,37,115,41,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,37,115,61,37,81,0,0,0,117,110,97,98,108,101,32,116,111,32,105,100,101,110,116,105,102,121,32,116,104,101,32,111,98,106,101,99,116,32,116,111,32,98,101,32,114,101,105,110,100,101,120,101,100,0,0,0,44,32,0,0,0,0,0,0,46,0,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,58,32,37,115,40],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+18712);allocate([41,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,40,41,0,0,0,0,0,0,0,0,82,65,73,83,69,40,41,32,109,97,121,32,111,110,108,121,32,98,101,32,117,115,101,100,32,119,105,116,104,105,110,32,97,32,116,114,105,103,103,101,114,45,112,114,111,103,114,97,109,0,0,0,0,0,0,0,69,88,69,67,85,84,69,32,37,115,37,115,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,0,0,0,0,67,79,82,82,69,76,65,84,69,68,32,0,0,0,0,0,76,73,83,84,0,0,0,0,83,67,65,76,65,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,120,0,0,0,0,0,0,104,101,120,32,108,105,116,101,114,97,108,32,116,111,111,32,98,105,103,58,32,37,115,0,1,0,1,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,32,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,100,101,116,97,99,104,0,0,0,110,111,32,115,117,99,104,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,99,97,110,110,111,116,32,100,101,116,97,99,104,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,68,69,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,108,111,99,107,101,100,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,216,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,97,116,116,97,99,104,0,0,0,116,111,111,32,109,97,110,121,32,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,45,32,109,97,120,32,37,100,0,0,0,0,99,97,110,110,111,116,32,65,84,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,97,108,114,101,97,100,121,32,105,110,32,117,115,101,0,0,0,100,97,116,97,98,97,115,101,32,105,115,32,97,108,114,101,97,100,121,32,97,116,116,97,99,104,101,100,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,0,110,111,32,115,117,99,104,32,116,114,105,103,103,101,114,58,32,37,83,0,0,0,0,0,108,0,246,0,97,0,1,0,47,0,1,2,78,2,247,1,97,0,1,0,47,0,0,2,78,2,247,1,95,0,0,0,9,0,254,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,116,114,105,103,103,101,114,32,109,97,121,32,110,111,116,32,104,97,118,101,32,113,117,97,108,105,102,105,101,100,32,110,97,109,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,115,32,111,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,115,0,0,0,0,0,0,0,0,116,114,105,103,103,101,114,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,32,111,110,32,115,121,115,116,101,109,32,116,97,98,108,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,37,115,32,116,114,105,103,103,101,114,32,111,110,32,118,105,101,119,58,32,37,83,0,0,0,0,66,69,70,79,82,69,0,0,65,70,84,69,82,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,73,78,83,84,69,65,68,32,79,70,32,116,114,105,103,103,101,114,32,111,110,32,116,97,98,108,101,58,32,37,83,0,0,0,37,115,32,37,84,32,99,97,110,110,111,116,32,114,101,102,101,114,101,110,99,101,32,111,98,106,101,99,116,115,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,37,115,32,99,97,110,110,111,116,32,117,115,101,32,118,97,114,105,97,98,108,101,115,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,116,114,105,103,103,101,114,39,44,37,81,44,37,81,44,48,44,39,67,82,69,65,84,69,32,84,82,73,71,71,69,82,32,37,113,39,41,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,110,97,109,101,61,39,37,113,39,0,0,0,0,45,37,84,0,0,0,0,0,114,101,115,117,108,116,0,0,16,126,0,0,0,0,0,0,8,0,0,0,0,121,0,0,1,1,0,0,0,0,0,0,32,126,0,0,2,0,0,0,0,0,16,0,48,126,0,0,3,0,0,0,0,0,0,0,128,120,0,0,4,1,0,0,0,0,0,0,64,126,0,0,2,0,0,0,16,0,0,0,80,126,0,0,5,0,0,0,0,0,0,0,104,126,0,0,2,0,0,0,8,0,0,0,128,126,0,0,6,0,0,0,0,0,0,0,144,126,0,0,7,0,0,0,0,0,0,0,160,126,0,0,2,0,0,0,128,0,0,0,176,126,0,0,0,2,0,0,15,0,0,0,192,126,0,0,9,1,0,0,0,0,0,0,208,126,0,0,10,1,0,0,0,0,0,0,232,126,0,0,2,0,0,0,0,0,0,1,0,127,0,0,2,0,0,0,0,1,0,0,40,124,0,0,11,0,0,0,0,0,0,0,24,127,0,0,12,1,0,0,0,0,0,0,48,127,0,0,13,1,0,0,0,0,0,0,72,127,0,0,2,0,0,0,0,0,8,0,88,127,0,0,0,2,0,0,0,0,0,0,104,127,0,0,2,0,0,0,32,0,0,0,128,127,0,0,2,0,0,0,4,0,0,0,144,127,0,0,2,0,0,0,0,32,0,0,176,127,0,0,14,1,0,0,0,0,0,0,200,127,0,0,15,1,0,0,0,0,0,0,216,127,0,0,16,1,0,0,0,0,0,0,232,127,0,0,15,1,0,0,1,0,0,0,232,122,0,0,17,1,0,0,0,0,0,0,216,120,0,0,18,1,0,0,0,0,0,0,232,120,0,0,19,0,0,0,0,0,0,0,248,127,0,0,2,0,0,0,0,128,0,0,200,120,0,0,21,0,0,0,0,0,0,0,16,128,0,0,22,1,0,0,0,0,0,0,40,121,0,0,23,0,0,0,0,0,0,0,32,128,0,0,22,1,0,0,0,0,0,0,144,120,0,0,24,0,0,0,0,0,0,0,48,128,0,0,2,0,0,0,0,0,0,2,64,128,0,0,17,1,0,0,0,0,0,0,80,128,0,0,2,0,0,0,0,64,0,0,104,128,0,0,2,0,0,0,0,0,4,0,128,128,0,0,2,0,0,0,0,0,2,0,160,128,0,0,0,0,0,0,1,0,0,0,160,120,0,0,25,0,0,0,0,0,0,0,176,128,0,0,2,0,0,0,64,0,0,0,200,128,0,0,26,0,0,0,0,0,0,0,232,124,0,0,27,0,0,0,0,0,0,0,216,128,0,0,28,1,0,0,0,0,0,0,128,121,0,0,29,1,0,0,0,0,0,0,224,128,0,0,30,1,0,0,0,0,0,0,56,121,0,0,31,0,0,0,0,0,0,0,72,121,0,0,32,0,0,0,0,0,0,0,248,124,0,0,33,0,0,0,0,0,0,0,240,128,0,0,0,0,0,0,6,0,0,0,200,124,0,0,34,0,0,0,0,0,0,0,0,129,0,0,35,1,0,0,0,0,0,0,16,129,0,0,2,0,0,0,0,8,1,0,0,0,0,0,4,0,0,0,51,0,1,3,137,1,8,0,25,0,2,0,90,1,2,1,137,1,8,0,25,0,1,0,156,0,0,0,35,1,1,0,0,0,0,0,99,97,99,104,101,95,115,105,122,101,0,0,0,0,0,0,112,97,103,101,95,115,105,122,101,0,0,0,0,0,0,0,115,101,99,117,114,101,95,100,101,108,101,116,101,0,0,0,110,111,114,109,97,108,0,0,101,120,99,108,117,115,105,118,101,0,0,0,0,0,0,0,108,111,99,107,105,110,103,95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108,95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108,95,115,105,122,101,95,108,105,109,105,116,0,0,0,0,0,0,97,117,116,111,95,118,97,99,117,117,109,0,0,0,0,0,4,0,1,0,51,0,1,4,45,1,0,0,24,0,2,0,25,0,1,0,52,0,7,1,109,109,97,112,95,115,105,122,101,0,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,95,100,105,114,101,99,116,111,114,121,0,0,0,0,110,111,116,32,97,32,119,114,105,116,97,98,108,101,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,0,0,0,115,121,110,99,104,114,111,110,111,117,115,0,0,0,0,0,83,97,102,101,116,121,32,108,101,118,101,108,32,109,97,121,32,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,105,110,115,105,100,101,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,99,105,100,0,0,0,0,0,110,97,109,101,0,0,0,0,116,121,112,101,0,0,0,0,110,111,116,110,117,108,108,0,100,102,108,116,95,118,97,108,117,101,0,0,0,0,0,0,112,107,0,0,0,0,0,0,116,97,98,108,101,0,0,0,119,105,100,116,104,0,0,0,104,101,105,103,104,116,0,0,115,101,113,110,111,0,0,0,100,101,115,99,0,0,0,0,99,111,108,108,0,0,0,0,107,101,121,0,0,0,0,0,115,101,113,0,0,0,0,0,117,110,105,113,117,101,0,0,111,114,105,103,105,110,0,0,112,97,114,116,105,97,108,0,99,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,88,122,0,0,96,122,0,0,248,121,0,0,0,0,0,0,102,105,108,101,0,0,0,0,105,100,0,0,0,0,0,0,102,114,111,109,0,0,0,0,116,111,0,0,0,0,0,0,111,110,95,117,112,100,97,116,101,0,0,0,0,0,0,0,111,110,95,100,101,108,101,116,101,0,0,0,0,0,0,0,109,97,116,99,104,0,0,0,78,79,78,69,0,0,0,0,112,97,114,101,110,116,0,0,102,107,105,100,0,0,0,0,138,1,0,0,97,0,3,0,35,3,1,0,0,0,0,0,105,110,116,101,103,114,105,116,121,95,99,104,101,99,107,0,42,42,42,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,32,42,42,42,10,0,78,85,76,76,32,118,97,108,117,101,32,105,110,32,37,115,46,37,115,0,0,0,0,0,114,111,119,32,0,0,0,0,32,109,105,115,115,105,110,103,32,102,114,111,109,32,105,110,100,101,120,32,0,0,0,0,110,111,110,45,117,110,105,113,117,101,32,101,110,116,114,121,32,105,110,32,105,110,100,101,120,32,0,0,0,0,0,0,119,114,111,110,103,32,35,32,111,102,32,101,110,116,114,105,101,115,32,105,110,32,105,110,100,101,120,32,0,0,0,0,111,107,0,0,0,0,0,0,216,123,0,0,1,0,0,0,224,123,0,0,1,0,0,0,232,123,0,0,2,0,0,0,248,123,0,0,3,0,0,0,8,124,0,0,2,0,0,0,16,124,0,0,3,0,0,0,24,124,0,0,0,0,0,0,32,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,84,70,56,0,0,0,0,85,84,70,45,56,0,0,0,85,84,70,45,49,54,108,101,0,0,0,0,0,0,0,0,85,84,70,45,49,54,98,101,0,0,0,0,0,0,0,0,85,84,70,49,54,108,101,0,85,84,70,49,54,98,101,0,85,84,70,45,49,54,0,0,85,84,70,49,54,0,0,0,101,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,101,110,99,111,100,105,110,103,58,32,37,115,0,0,0,0,0,0,0,0,4,0,1,0,25,0,1,0,52,0,0,1,0,0,0,0,4,0,0,0,51,0,1,0,35,1,1,0,0,0,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,0,0,102,117,108,108,0,0,0,0,114,101,115,116,97,114,116,0,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,0,98,117,115,121,0,0,0,0,108,111,103,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,101,100,0,0,0,0,119,97,108,95,97,117,116,111,99,104,101,99,107,112,111,105,110,116,0,0,0,0,0,0,116,105,109,101,111,117,116,0,115,111,102,116,95,104,101,97,112,95,108,105,109,105,116,0,116,104,114,101,97,100,115,0,37,95,0,0,0,0,0,0,102,111,114,101,105,103,110,32,107,101,121,32,109,105,115,109,97,116,99,104,32,45,32,34,37,119,34,32,114,101,102,101,114,101,110,99,105,110,103,32,34,37,119,34,0,0,0,0,83,69,84,32,78,85,76,76,0,0,0,0,0,0,0,0,83,69,84,32,68,69,70,65,85,76,84,0,0,0,0,0,67,65,83,67,65,68,69,0,82,69,83,84,82,73,67,84,0,0,0,0,0,0,0,0,78,79,32,65,67,84,73,79,78,0,0,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,115,116,111,114,97,103,101,32,99,97,110,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,110,111,110,101,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,0,0,0,0,0,240,125,0,0,248,125,0,0,0,126,0,0,152,124,0,0,64,59,0,0,8,126,0,0,100,101,108,101,116,101,0,0,112,101,114,115,105,115,116,0,111,102,102,0,0,0,0,0,119,97,108,0,0,0,0,0,97,112,112,108,105,99,97,116,105,111,110,95,105,100,0,0,97,117,116,111,109,97,116,105,99,95,105,110,100,101,120,0,98,117,115,121,95,116,105,109,101,111,117,116,0,0,0,0,99,97,99,104,101,95,115,112,105,108,108,0,0,0,0,0,99,97,115,101,95,115,101,110,115,105,116,105,118,101,95,108,105,107,101,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,95,102,117,108,108,102,115,121,110,99,0,0,0,0,99,111,108,108,97,116,105,111,110,95,108,105,115,116,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,115,0,99,111,117,110,116,95,99,104,97,110,103,101,115,0,0,0,100,97,116,97,95,118,101,114,115,105,111,110,0,0,0,0,100,97,116,97,98,97,115,101,95,108,105,115,116,0,0,0,100,101,102,97,117,108,116,95,99,97,99,104,101,95,115,105,122,101,0,0,0,0,0,0,100,101,102,101,114,95,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,0,0,101,109,112,116,121,95,114,101,115,117,108,116,95,99,97,108,108,98,97,99,107,115,0,0,102,111,114,101,105,103,110,95,107,101,121,95,99,104,101,99,107,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,95,108,105,115,116,0,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,102,114,101,101,108,105,115,116,95,99,111,117,110,116,0,0,102,117,108,108,95,99,111,108,117,109,110,95,110,97,109,101,115,0,0,0,0,0,0,0,102,117,108,108,102,115,121,110,99,0,0,0,0,0,0,0,105,103,110,111,114,101,95,99,104,101,99,107,95,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,95,118,97,99,117,117,109,0,0,0,0,0,0,105,110,100,101,120,95,105,110,102,111,0,0,0,0,0,0,105,110,100,101,120,95,108,105,115,116,0,0,0,0,0,0,105,110,100,101,120,95,120,105,110,102,111,0,0,0,0,0,108,101,103,97,99,121,95,102,105,108,101,95,102,111,114,109,97,116,0,0,0,0,0,0,109,97,120,95,112,97,103,101,95,99,111,117,110,116,0,0,112,97,103,101,95,99,111,117,110,116,0,0,0,0,0,0,113,117,101,114,121,95,111,110,108,121,0,0,0,0,0,0,113,117,105,99,107,95,99,104,101,99,107,0,0,0,0,0,114,101,97,100,95,117,110,99,111,109,109,105,116,116,101,100,0,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,95,116,114,105,103,103,101,114,115,0,0,0,0,0,0,114,101,118,101,114,115,101,95,117,110,111,114,100,101,114,101,100,95,115,101,108,101,99,116,115,0,0,0,0,0,0,0,115,99,104,101,109,97,95,118,101,114,115,105,111,110,0,0,115,104,111,114,116,95,99,111,108,117,109,110,95,110,97,109,101,115,0,0,0,0,0,0,115,104,114,105,110,107,95,109,101,109,111,114,121,0,0,0,115,116,97,116,115,0,0,0,116,97,98,108,101,95,105,110,102,111,0,0,0,0,0,0,117,115,101,114,95,118,101,114,115,105,111,110,0,0,0,0,119,97,108,95,99,104,101,99,107,112,111,105,110,116,0,0,119,114,105,116,97,98,108,101,95,115,99,104,101,109,97,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,83,0,0,0,0,0,0,0,105,110,100,101,120,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32,85,78,73,81,85,69,32,111,114,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,99,97,110,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,110,97,109,101,61,37,81,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,114,111,111,116,112,97,103,101,61,37,100,32,87,72,69,82,69,32,35,37,100,32,65,78,68,32,114,111,111,116,112,97,103,101,61,35,37,100,0,115,113,108,105,116,101,95,115,116,97,116,37,100,0,0,0,48,0,0,0,0,0,0,0,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,109,117,115,116,32,98,101,32,98,101,116,119,101,101,110,32,63,49,32,97,110,100,32,63,37,100,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,83,81,76,32,118,97,114,105,97,98,108,101,115,0,0,116,97,98,108,101,32,37,83,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,116,97,98,108,101,32,37,83,32,104,97,115,32,37,100,32,99,111,108,117,109,110,115,32,98,117,116,32,37,100,32,118,97,108,117,101,115,32,119,101,114,101,32,115,117,112,112,108,105,101,100,0,0,0,0,0,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,0,114,111,119,115,32,105,110,115,101,114,116,101,100,0,0,0,97,116,32,109,111,115,116,32,37,100,32,116,97,98,108,101,115,32,105,110,32,97,32,106,111,105,110,0,0,0,0,0,65,63,62,64,0,0,0,0,0,0,108,105,65,62,64,63,116,114,113,115,0,0,0,0,9,8,0,0,0,0,0,0,108,105,0,0,0,0,0,0,83,69,65,82,67,72,0,0,83,67,65,78,0,0,0,0,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,32,84,65,66,76,69,32,37,115,0,0,0,0,0,0,0,32,65,83,32,37,115,0,0,80,82,73,77,65,82,89,32,75,69,89,0,0,0,0,0,65,85,84,79,77,65,84,73,67,32,80,65,82,84,73,65,76,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,0,0,0,0,0,0,0,65,85,84,79,77,65,84,73,67,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,0,0,0,0,0,0,0,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,0,32,85,83,73,78,71,32,0,40,114,111,119,105,100,61,63,41,0,0,0,0,0,0,0,40,114,111,119,105,100,62,63,32,65,78,68,32,114,111,119,105,100,60,63,41,0,0,0,40,114,111,119,105,100,62,63,41,0,0,0,0,0,0,0,40,114,111,119,105,100,60,63,41,0,0,0,0,0,0,0,32,85,83,73,78,71,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,32,0,0,0,0,0,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,73,78,68,69,88,32,37,100,58,37,115,0,0,0,0,0,0,32,40,0,0,0,0,0,0,61,0,0,0,0,0,0,0,32,65,78,68,32,0,0,0,65,78,89,40,37,115,41,0,62,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,97,117,116,111,109,97,116,105,99,32,105,110,100,101,120,32,111,110,32,37,115,40,37,115,41,0,0,0,0,0,0,0,97,117,116,111,45,105,110,100,101,120,0,0,0,0,0,0,110,111,32,113,117,101,114,121,32,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,10,10,9,9,8,8,7,7,7,6,6,6,5,5,5,4,4,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,37,115,46,120,66,101,115,116,73,110,100,101,120,40,41,32,109,97,108,102,117,110,99,116,105,111,110,0,0,0,0,0,116,97,98,108,101,32,37,115,58,32,120,66,101,115,116,73,110,100,101,120,32,114,101,116,117,114,110,101,100,32,97,110,32,105,110,118,97,108,105,100,32,112,108,97,110,0,0,0,83,81,0,0,0,0,0,0,45,45,32,84,82,73,71,71,69,82,32,37,115,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,2,0,1,0,1,1,4,36,1,4,5,16,0,2,2,2,2,0,2,2,0,0,32,0,0,4,5,4,4,0,0,1,1,5,5,0,0,0,2,2,16,0,0,0,0,0,0,0,0,0,17,17,17,17,8,17,17,17,17,76,76,2,2,0,5,5,21,21,21,21,21,21,0,76,76,76,76,76,76,76,76,76,76,0,36,2,0,0,0,0,0,2,0,1,1,1,1,8,8,0,2,1,1,1,1,2,0,0,2,2,0,0,0,0,0,0,12,69,21,1,2,2,0,1,8,5,5,5,5,5,0,1,0,0,0,0,0,0,0,1,0,2,2,1,0,0,0,0,16,16,2,16,0,0,0,0,0,1,2,3,4,6,8,8,0,0,0,0,0,0,0,0,176,107,0,0,3,0,0,0,168,107,0,0,3,0,0,0,111,105,100,0,0,0,0,0,70,79,82,69,73,71,78,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,37,115,46,114,111,119,105,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,109,111,100,105,102,105,101,100,0,0,0,0,99,97,110,110,111,116,32,109,111,100,105,102,121,32,37,115,32,98,101,99,97,117,115,101,32,105,116,32,105,115,32,97,32,118,105,101,119,0,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,37,115,0,0,0,0,0,0,114,111,119,115,32,117,112,100,97,116,101,100,0,0,0,0,95,114,111,119,105,100,95,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,37,115,0,0,114,111,119,115,32,100,101,108,101,116,101,100,0,0,0,0,110,97,116,117,114,97,108,101,102,116,111,117,116,101,114,105,103,104,116,102,117,108,108,105,110,110,101,114,99,114,111,115,115,0,0,0,0,0,0,0,0,7,4,6,4,40,10,5,32,14,5,48,19,4,56,23,5,1,28,5,3,0,0,0,117,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,106,111,105,110,32,116,121,112,101,58,32,37,84,32,37,84,37,115,37,84,0,0,0,0,0,82,73,71,72,84,32,97,110,100,32,70,85,76,76,32,79,85,84,69,82,32,74,79,73,78,115,32,97,114,101,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,0,0,97,32,74,79,73,78,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,37,115,0,0,0,0,0,79,78,0,0,0,0,0,0,85,83,73,78,71,0,0,0,68,73,83,84,73,78,67,84,0,0,0,0,0,0,0,0,71,82,79,85,80,32,66,89,0,0,0,0,0,0,0,0,82,73,71,72,84,32,80,65,82,84,32,79,70,32,79,82,68,69,82,32,66,89,0,0,79,82,68,69,82,32,66,89,0,0,0,0,0,0,0,0,99,111,108,117,109,110,37,100,0,0,0,0,0,0,0,0,83,67,65,78,32,84,65,66,76,69,32,37,115,37,115,37,115,0,0,0,0,0,0,0,32,85,83,73,78,71,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,0,0,68,73,83,84,73,78,67,84,32,97,103,103,114,101,103,97,116,101,115,32,109,117,115,116,32,104,97,118,101,32,101,120,97,99,116,108,121,32,111,110,101,32,97,114,103,117,109,101,110,116,0,0,0,0,0,0,85,83,69,32,84,69,77,80,32,66,45,84,82,69,69,32,70,79,82,32,37,115,0,0,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,76,73,77,73,84,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,0,0,0,67,79,77,80,79,85,78,68,32,83,85,66,81,85,69,82,73,69,83,32,37,100,32,65,78,68,32,37,100,32,37,115,40,37,115,41,0,0,0,0,85,83,73,78,71,32,84,69,77,80,32,66,45,84,82,69,69,32,0,0,0,0,0,0,97,108,108,32,86,65,76,85,69,83,32,109,117,115,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,116,101,114,109,115,0,0,0,83,69,76,69,67,84,115,32,116,111,32,116,104,101,32,108,101,102,116,32,97,110,100,32,114,105,103,104,116,32,111,102,32,37,115,32,100,111,32,110,111,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,117,108,116,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,85,78,73,79,78,32,65,76,76,0,0,0,0,0,0,0,73,78,84,69,82,83,69,67,84,0,0,0,0,0,0,0,69,88,67,69,80,84,0,0,85,78,73,79,78,0,0,0,111,110,108,121,32,97,32,115,105,110,103,108,101,32,114,101,115,117,108,116,32,97,108,108,111,119,101,100,32,102,111,114,32,97,32,83,69,76,69,67,84,32,116,104,97,116,32,105,115,32,112,97,114,116,32,111,102,32,97,110,32,101,120,112,114,101,115,115,105,111,110,0,112,97,114,97,109,101,116,101,114,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,118,105,101,119,115,0,0,0,0,0,118,105,101,119,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,117,115,101,32,68,82,79,80,32,84,65,66,76,69,32,116,111,32,100,101,108,101,116,101,32,116,97,98,108,101,32,37,115,0,0,0,0,0,0,0,117,115,101,32,68,82,79,80,32,86,73,69,87,32,116,111,32,100,101,108,101,116,101,32,118,105,101,119,32,37,115,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,87,72,69,82,69,32,110,97,109,101,61,37,81,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,97,110,100,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,102,111,114,101,105,103,110,32,107,101,121,32,111,110,32,37,115,32,115,104,111,117,108,100,32,114,101,102,101,114,101,110,99,101,32,111,110,108,121,32,111,110,101,32,99,111,108,117,109,110,32,111,102,32,116,97,98,108,101,32,37,84,0,0,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,116,104,101,32,114,101,102,101,114,101,110,99,101,100,32,116,97,98,108,101,0,0,0,117,110,107,110,111,119,110,32,99,111,108,117,109,110,32,34,37,115,34,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,101,102,105,110,105,116,105,111,110,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32,84,69,77,80,32,105,110,100,101,120,32,111,110,32,110,111,110,45,84,69,77,80,32,116,97,98,108,101,32,34,37,115,34,0,0,0,0,0,0,0,97,108,116,101,114,116,97,98,95,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,118,105,101,119,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,32,116,97,98,108,101,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,0,105,110,100,101,120,32,37,115,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,37,115,95,37,100,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,99,111,110,102,108,105,99,116,105,110,103,32,79,78,32,67,79,78,70,76,73,67,84,32,99,108,97,117,115,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,0,67,82,69,65,84,69,37,115,32,73,78,68,69,88,32,37,46,42,115,0,0,0,0,0,32,85,78,73,81,85,69,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,105,110,100,101,120,39,44,37,81,44,37,81,44,35,37,100,44,37,81,41,59,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,116,97,98,108,101,32,34,37,115,34,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,112,114,105,109,97,114,121,32,107,101,121,0,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,105,115,32,111,110,108,121,32,97,108,108,111,119,101,100,32,111,110,32,97,110,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,0,100,101,102,97,117,108,116,32,118,97,108,117,101,32,111,102,32,99,111,108,117,109,110,32,91,37,115,93,32,105,115,32,110,111,116,32,99,111,110,115,116,97,110,116,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,111,110,32,37,115,0,0,100,117,112,108,105,99,97,116,101,32,99,111,108,117,109,110,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,87,73,84,72,79,85,84,32,82,79,87,73,68,32,116,97,98,108,101,115,0,0,0,0,0,0,0,80,82,73,77,65,82,89,32,75,69,89,32,109,105,115,115,105,110,103,32,111,110,32,116,97,98,108,101,32,37,115,0,84,65,66,76,69,0,0,0,86,73,69,87,0,0,0,0,67,82,69,65,84,69,32,37,115,32,37,46,42,115,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,37,115,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,35,37,100,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,40,110,97,109,101,44,115,101,113,41,0,0,0,0,0,0,0,116,98,108,95,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,0,0,0,0,0,0,10,32,32,0,0,0,0,0,44,10,32,32,0,0,0,0,10,41,0,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,0,0,0,120,40,0,0,80,144,0,0,88,144,0,0,96,144,0,0,104,144,0,0,0,0,0,0,32,84,69,88,84,0,0,0,32,78,85,77,0,0,0,0,32,73,78,84,0,0,0,0,32,82,69,65,76,0,0,0,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,117,110,113,117,97,108,105,102,105,101,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,32,105,110,100,101,120,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,240,144,0,0,248,144,0,0,0,145,0,0,0,0,0,0,66,69,71,73,78,0,0,0,82,69,76,69,65,83,69,0,82,79,76,76,66,65,67,75,0,0,0,0,0,0,0,0,67,79,77,77,73,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,97,114,115,101,114,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,0,224,3,33,4,75,5,132,4,180,4,180,4,1,0,6,1,237,255,135,0,135,0,8,3,180,4,180,4,180,4,180,4,69,0,69,0,53,0,208,0,27,1,243,2,58,0,213,2,136,2,59,2,238,1,161,1,84,1,7,1,212,0,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,110,3,59,3,161,3,212,3,212,3,46,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,234,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,185,255,209,255,209,255,209,255,209,255,209,255,0,0,29,0,244,255,27,1,27,1,139,0,91,0,136,1,136,1,126,3,160,2,214,2,103,5,170,255,170,255,170,255,88,0,62,1,62,1,99,0,125,1,236,255,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,112,2,108,3,214,2,160,2,60,5,60,5,60,5,60,5,60,5,60,5,170,255,170,255,170,255,49,1,136,0,136,0,142,0,167,0,226,0,154,0,137,0,152,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,80,1,80,1,80,1,27,1,27,1,96,1,27,1,27,1,27,1,27,1,27,1,228,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,245,1,57,2,84,2,84,2,84,2,251,1,241,1,185,1,135,1,97,1,156,0,156,0,89,3,97,1,89,3,223,2,45,3,127,2,203,2,156,0,76,1,203,2,203,2,240,1,163,1,134,2,77,5,160,4,160,4,55,5,55,5,160,4,61,5,236,4,120,4,66,5,66,5,66,5,66,5,160,4,26,5,120,4,61,5,236,4,236,4,120,4,160,4,26,5,182,4,4,5,160,4,160,4,26,5,160,4,26,5,160,4,26,5,238,4,183,4,183,4,183,4,250,4,238,4,183,4,193,4,183,4,250,4,183,4,183,4,161,4,176,4,161,4,176,4,161,4,176,4,160,4,160,4,137,4,238,4,178,4,178,4,238,4,130,4,131,4,123,4,128,4,120,4,217,4,215,4,226,4,226,4,230,4,230,4,230,4,230,4,170,255,170,255,170,255,170,255,170,255,170,255,44,4,48,1,14,2,249,0,152,1,173,255,178,1,44,3,27,0,43,3,39,3,34,3,239,2,77,2,139,2,163,0,131,0,162,2,110,1,194,1,43,1,148,0,23,0,102,0,229,0,235,255,221,4,220,4,198,4,75,4,204,4,148,4,199,4,191,4,189,4,91,4,82,4,99,4,86,4,185,4,81,4,188,4,202,4,74,4,65,4,116,4,115,4,80,4,165,4,154,4,70,4,187,4,181,4,163,4,77,4,47,4,129,4,151,4,122,4,114,4,127,4,67,4,140,4,141,4,139,4,45,4,48,4,124,4,88,4,110,4,103,4,105,4,102,4,68,4,90,4,94,4,64,4,66,4,69,4,63,4,60,4,219,3,55,4,53,4,50,4,41,4,156,3,253,3,246,3,236,3,238,3,51,3,227,2,128,3,87,3,36,3,227,2,228,2,224,2,178,2,142,2,153,2,106,2,70,2,56,2,16,2,42,2,123,1,20,2,223,1,199,1,123,1,176,1,115,1,85,1,28,0,82,1,116,0,245,255,199,255,171,255,7,0,248,255,3,0,0,0,0,0,135,2,196,3,196,3,196,3,110,3,110,3,201,3,196,3,6,3,34,3,34,3,170,3,201,3,201,3,201,3,108,3,201,3,201,3,201,3,196,3,201,3,10,3,40,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,169,3,171,3,48,3,47,3,150,3,21,3,45,3,38,3,42,3,111,3,104,3,105,3,103,3,107,3,112,3,201,3,41,3,73,3,88,3,72,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,82,3,87,3,94,3,86,3,83,3,75,3,74,3,76,3,77,3,201,3,201,3,161,2,227,2,201,3,201,3,78,3,201,3,173,2,79,3,91,3,90,3,89,3,168,2,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,135,2,196,3,201,3,201,3,196,3,196,3,196,3,196,3,196,3,196,3,188,3,10,3,0,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,176,3,174,3,201,3,123,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,141,2,201,3,143,3,6,3,6,3,6,3,8,3,242,2,254,2,143,2,44,3,23,3,23,3,155,3,44,3,155,3,198,2,221,2,195,2,34,3,23,3,106,3,34,3,34,3,7,3,254,2,201,3,181,3,14,3,14,3,173,3,173,3,14,3,53,3,231,2,44,3,238,2,238,2,238,2,238,2,14,3,158,2,44,3,53,3,231,2,231,2,44,3,14,3,158,2,149,3,147,3,14,3,14,3,158,2,14,3,158,2,14,3,158,2,116,3,229,2,229,2,229,2,213,2,116,3,229,2,198,2,229,2,213,2,229,2,229,2,27,3,22,3,27,3,22,3,27,3,22,3,14,3,14,3,201,3,116,3,120,3,120,3,116,3,39,3,28,3,37,3,35,3,44,3,164,2,216,2,151,2,151,2,140,2,140,2,140,2,140,2,193,3,193,3,188,3,200,2,200,2,183,2,201,3,201,3,201,3,201,3,201,3,201,3,175,2,201,3,125,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,60,3,201,3,136,2,183,3,201,3,201,3,180,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,153,3,201,3,201,3,201,3,201,3,201,3,201,3,146,3,145,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,245,2,201,3,201,3,201,3,249,2,201,3,201,3,201,3,201,3,201,3,201,3,36,3,201,3,29,3,201,3,109,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,198,3,201,3,201,3,201,3,197,3,201,3,201,3,201,3,201,3,201,3,62,3,201,3,61,3,65,3,201,3,149,2,201,3,132,2,137,2,192,3,195,3,194,3,191,3,190,3,189,3,184,3,182,3,179,3,178,3,177,3,175,3,172,3,168,3,129,3,127,3,134,3,133,3,132,3,131,3,130,3,128,3,126,3,124,3,50,3,49,3,46,3,43,3,241,2,167,3,122,3,240,2,237,2,236,2,157,2,185,3,152,3,161,3,160,3,159,3,54,3,158,3,157,3,156,3,154,3,151,3,138,3,52,3,51,3,232,2,114,3,113,3,160,2,142,3,141,3,140,3,144,3,148,3,139,3,16,3,239,2,159,2,156,2,163,2,167,2,219,2,220,2,228,2,226,2,225,2,224,2,223,2,222,2,218,2,169,2,174,2,212,2,197,2,196,2,205,2,204,2,210,2,209,2,208,2,207,2,206,2,203,2,202,2,201,2,194,2,193,2,199,2,192,2,215,2,214,2,211,2,191,2,235,2,234,2,233,2,230,2,190,2,189,2,188,2,65,3,187,2,186,2,70,3,69,3,98,3,58,3,243,2,247,2,246,2,250,2,251,2,3,3,2,3,1,3,12,3,13,3,25,3,24,3,56,3,55,3,26,3,11,3,5,3,4,3,20,3,19,3,18,3,17,3,9,3,255,2,31,3,30,3,100,3,15,3,99,3,97,3,166,3,165,3,164,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+28952);allocate([163,3,162,3,102,3,199,3,200,3,119,3,121,3,118,3,33,3,32,3,117,3,101,3,71,3,68,3,178,2,179,2,137,3,136,3,135,3,181,2,180,2,177,2,176,2,95,3,92,3,84,3,96,3,93,3,85,3,81,3,80,3,66,3,64,3,63,3,59,3,67,3,248,2,244,2,57,3,253,2,252,2,185,2,184,2,182,2,166,2,165,2,162,2,155,2,153,2,152,2,154,2,150,2,148,2,147,2,146,2,145,2,144,2,172,2,171,2,170,2,142,2,139,2,138,2,134,2,133,2,131,2,0,0,0,0,19,22,22,23,1,24,26,15,27,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,108,109,110,27,28,23,50,51,80,81,82,83,122,85,86,87,88,89,90,91,92,93,94,95,22,70,23,71,72,73,74,75,76,77,78,79,80,81,82,83,122,85,86,87,88,89,90,91,92,93,94,95,19,97,91,92,93,94,95,26,85,86,87,88,89,90,91,92,93,94,95,27,28,97,98,99,122,211,102,103,104,79,19,50,51,19,122,59,55,113,224,225,226,89,90,91,92,93,94,95,23,27,28,26,71,72,73,74,75,76,77,78,79,80,81,82,83,51,85,86,87,88,89,90,91,92,93,94,95,19,132,133,58,89,90,21,108,109,110,27,28,97,98,33,100,7,8,119,120,22,19,107,42,109,27,28,27,28,95,28,50,51,99,100,101,102,103,104,105,27,28,97,98,107,152,112,132,133,112,65,69,71,72,73,74,75,76,77,78,79,80,81,82,83,11,85,86,87,88,89,90,91,92,93,94,95,19,101,97,97,98,24,101,122,157,12,99,103,112,102,103,104,152,22,97,98,97,98,27,28,113,27,29,91,164,165,124,50,51,97,98,219,59,132,133,134,22,23,45,66,47,212,213,124,140,132,133,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,164,165,27,28,230,50,51,233,108,109,110,70,16,59,23,97,98,26,97,22,66,185,12,187,27,28,71,72,73,74,75,76,77,78,79,80,81,82,83,29,85,86,87,88,89,90,91,92,93,94,95,19,22,148,149,45,23,47,62,154,64,156,108,109,110,37,69,23,163,59,26,26,97,98,144,145,146,147,152,200,52,23,50,51,26,22,89,90,60,210,7,8,9,138,97,22,23,26,101,26,174,175,197,71,72,73,74,75,76,77,78,79,80,81,82,83,16,85,86,87,88,89,90,91,92,93,94,95,19,132,133,134,23,152,208,209,140,152,152,111,195,196,98,70,163,160,152,23,22,164,165,246,207,27,152,174,175,171,172,50,51,137,62,139,64,171,172,222,124,27,138,24,163,89,90,130,174,175,197,163,71,72,73,74,75,76,77,78,79,80,81,82,83,22,85,86,87,88,89,90,91,92,93,94,95,19,197,181,182,23,208,209,152,197,26,189,132,133,232,224,225,226,152,97,91,26,232,116,212,213,152,222,121,152,174,175,50,51,243,97,22,23,22,234,174,175,177,23,239,116,163,177,174,175,121,174,175,71,72,73,74,75,76,77,78,79,80,81,82,83,24,85,86,87,88,89,90,91,92,93,94,95,19,23,197,11,23,227,70,208,220,152,31,224,225,226,35,98,224,225,226,108,109,110,115,152,117,118,27,222,49,123,24,50,51,27,0,1,2,224,225,226,166,124,168,169,239,174,175,170,171,172,22,194,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,22,208,24,23,195,196,170,171,172,174,175,152,26,152,152,152,207,152,97,152,23,152,51,244,152,97,152,247,248,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,23,174,175,174,175,188,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,152,107,152,33,24,152,100,101,27,174,175,152,42,152,23,152,26,152,23,152,26,152,174,175,174,175,152,174,175,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,163,119,120,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,66,152,97,197,23,50,51,26,53,23,174,175,26,23,23,23,26,26,26,36,106,146,147,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,196,119,120,19,50,51,168,169,26,174,175,207,28,152,249,250,152,163,163,163,163,174,175,163,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,197,197,197,197,50,51,197,194,36,174,175,191,192,152,191,192,163,152,66,124,152,174,175,152,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,197,152,100,188,152,50,51,152,152,188,174,175,252,152,94,95,152,152,152,1,2,152,152,174,175,19,152,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,188,188,22,194,50,51,240,173,194,174,175,252,194,152,36,181,28,152,23,219,122,174,175,219,221,152,152,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,20,152,22,23,194,152,240,27,28,174,175,240,19,20,26,22,194,194,38,22,27,28,152,23,22,152,116,174,175,152,23,38,152,23,152,221,152,57,152,23,163,50,51,194,174,175,66,174,175,69,57,174,175,40,174,175,174,175,174,175,174,175,69,22,53,74,75,30,53,89,90,22,22,152,197,23,96,97,98,22,152,101,89,90,91,208,209,152,53,96,97,98,101,22,101,174,175,152,19,20,105,22,174,175,112,19,27,28,20,174,175,24,132,133,134,135,136,38,44,174,175,107,61,54,26,132,133,134,135,136,54,107,22,5,140,1,57,36,111,122,28,79,79,131,123,66,19,20,69,22,1,16,20,125,27,28,123,111,120,23,131,23,16,68,142,38,15,22,89,90,3,167,4,248,251,96,97,98,180,180,101,251,151,6,57,151,13,151,26,25,151,161,202,153,162,153,69,130,128,203,19,20,127,22,126,204,129,22,27,28,205,132,133,134,135,136,89,90,231,38,95,137,179,96,97,98,206,179,101,122,107,159,159,125,231,216,228,107,57,184,217,216,176,217,176,48,106,18,184,158,69,159,158,46,71,237,176,176,176,132,133,134,135,136,217,176,137,216,178,158,89,90,179,176,159,179,159,96,97,98,159,159,101,5,158,202,22,18,10,11,12,13,14,190,238,17,190,158,193,41,159,202,193,159,202,245,193,193,223,190,32,159,34,132,133,134,135,136,159,39,155,43,150,223,177,201,178,177,186,66,199,177,152,253,56,215,152,182,152,202,152,63,152,152,66,67,242,229,152,174,152,152,152,152,152,152,152,199,242,202,152,198,152,152,152,183,192,152,215,152,183,215,183,152,241,214,152,211,152,152,211,211,152,152,241,152,152,152,152,152,152,152,114,152,152,235,152,152,152,174,187,95,174,253,253,253,253,236,253,253,253,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,27,27,27,27,0,27,27,27,0,27,27,27,27,0,0,0,27,0,0,27,0,0,0,27,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,115,113,108,105,116,101,51,95,103,101,116,95,116,97,98,108,101,40,41,32,99,97,108,108,101,100,32,119,105,116,104,32,116,119,111,32,111,114,32,109,111,114,101,32,105,110,99,111,109,112,97,116,105,98,108,101,32,113,117,101,114,105,101,115,0,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,115,116,97,116,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,128,160,0,0,136,160,0,0,144,160,0,0,152,160,0,0,160,160,0,0,168,160,0,0,176,160,0,0,184,160,0,0,192,160,0,0,208,160,0,0,136,122,0,0,216,160,0,0,97,100,100,114,0,0,0,0,111,112,99,111,100,101,0,0,112,49,0,0,0,0,0,0,112,50,0,0,0,0,0,0,112,51,0,0,0,0,0,0,112,52,0,0,0,0,0,0,112,53,0,0,0,0,0,0,99,111,109,109,101,110,116,0,115,101,108,101,99,116,105,100,0,0,0,0,0,0,0,0,111,114,100,101,114,0,0,0,100,101,116,97,105,108,0,0,115,111,0,0,0,0,0,0,115,113,108,105,116,101,51,95,101,120,116,101,110,115,105,111,110,95,105,110,105,116,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,115,104,97,114,101,100,32,108,105,98,114,97,114,121,32,91,37,115,93,0,0,0,0,0,0,108,105,98,0,0,0,0,0,95,105,110,105,116,0,0,0,110,111,32,101,110,116,114,121,32,112,111,105,110,116,32,91,37,115,93,32,105,110,32,115,104,97,114,101,100,32,108,105,98,114,97,114,121,32,91,37,115,93,0,0,0,0,0,0,101,114,114,111,114,32,100,117,114,105,110,103,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,58,32,37,115,0,117,110,111,112,101,110,101,100,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,118,105,101,119,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,118,97,108,117,101,32,111,102,32,116,121,112,101,32,37,115,0,0,0,0,110,111,32,115,117,99,104,32,114,111,119,105,100,58,32,37,108,108,100,0,0,0,0,0,98,105,110,100,32,111,110,32,97,32,98,117,115,121,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,58,32,91,37,115,93,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,162,0,0,96,162,0,0,104,162,0,0,112,162,0,0,78,79,84,32,78,85,76,76,0,0,0,0,0,0,0,0,85,78,73,81,85,69,0,0,67,72,69,67,75,0,0,0,70,79,82,69,73,71,78,32,75,69,89,0,0,0,0,0,97,98,111,114,116,32,97,116,32,37,100,32,105,110,32,91,37,115,93,58,32,37,115,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,58,32,37,115,0,0,0,0,0,0,0,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,1,2,0,2,2,0,0,0,0,0,0,0,0,1,2,1,1,1,2,1,2,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,110,111,32,115,117,99,104,32,115,97,118,101,112,111,105,110,116,58,32,37,115,0,0,0,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,116,114,97,110,115,97,99,116,105,111,110,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,99,97,110,110,111,116,32,115,116,97,114,116,32,97,32,116,114,97,110,115,97,99,116,105,111,110,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,114,111,108,108,98,97,99,107,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,87,72,69,82,69,32,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,116,111,111,32,109,97,110,121,32,108,101,118,101,108,115,32,111,102,32,116,114,105,103,103,101,114,32,114,101,99,117,114,115,105,111,110,0,0,0,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,37,115,32,119,97,108,32,109,111,100,101,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,105,110,116,111,0,0,0,0,111,117,116,32,111,102,0,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,0,115,116,97,116,101,109,101,110,116,32,97,98,111,114,116,115,32,97,116,32,37,100,58,32,91,37,115,93,32,37,115,0,45,45,32,0,0,0,0,0,39,37,46,42,113,39,0,0,122,101,114,111,98,108,111,98,40,37,100,41,0,0,0,0,120,39,0,0,0,0,0,0,37,48,50,120,0,0,0,0,39,0,0,0,0,0,0,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,65,84,84,65,67,72,32,39,58,109,101,109,111,114,121,58,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,65,84,84,65,67,72,32,39,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,80,82,65,71,77,65,32,118,97,99,117,117,109,95,100,98,46,115,121,110,99,104,114,111,110,111,117,115,61,79,70,70,0,0,0,0,0,0,0,0,66,69,71,73,78,59,0,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,84,65,66,76,69,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,37,39,32,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,50,49,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,37,39,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,68,69,76,69,84,69,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,59,0,0,0,0,0,0,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,83,69,76,69,67,84,32,116,121,112,101,44,32,110,97,109,101,44,32,116,98,108,95,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,32,32,32,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,87,72,69,82,69,32,116,121,112,101,61,39,118,105,101,119,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,32,32,32,32,32,79,82,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,114,111,111,116,112,97,103,101,61,48,41,0,1,1,3,0,5,0,6,0,8,0,0,0,0,0,0,0,77,97,105,110,32,102,114,101,101,108,105,115,116,58,32,0,76,105,115,116,32,111,102,32,116,114,101,101,32,114,111,111,116,115,58,32,0,0,0,0,80,97,103,101,32,37,100,32,105,115,32,110,101,118,101,114,32,117,115,101,100,0,0,0,80,111,105,110,116,101,114,32,109,97,112,32,112,97,103,101,32,37,100,32,105,115,32,114,101,102,101,114,101,110,99,101,100,0,0,0,0,0,0,0,79,117,116,115,116,97,110,100,105,110,103,32,112,97,103,101,32,99,111,117,110,116,32,103,111,101,115,32,102,114,111,109,32,37,100,32,116,111,32,37,100,32,100,117,114,105,110,103,32,116,104,105,115,32,97,110,97,108,121,115,105,115,0,0,10,0,0,0,0,0,0,0,80,97,103,101,32,37,100,58,32,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,103,101,116,32,116,104,101,32,112,97,103,101,46,32,101,114,114,111,114,32,99,111,100,101,61,37,100,0,0,0,98,116,114,101,101,73,110,105,116,80,97,103,101,40,41,32,114,101,116,117,114,110,115,32,101,114,114,111,114,32,99,111,100,101,32,37,100,0,0,0,79,110,32,116,114,101,101,32,112,97,103,101,32,37,100,32,99,101,108,108,32,37,100,58,32,0,0,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,112,114,101,118,105,111,117,115,32,119,97,115,32,37,108,108,100,41,0,0,0,0,0,67,104,105,108,100,32,112,97,103,101,32,100,101,112,116,104,32,100,105,102,102,101,114,115,0,0,0,0,0,0,0,0,79,110,32,112,97,103,101,32,37,100,32,97,116,32,114,105,103,104,116,32,99,104,105,108,100,58,32,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114,32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114,32,116,104,97,110,32,112,97,114,101,110,116,32,109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,67,111,114,114,117,112,116,105,111,110,32,100,101,116,101,99,116,101,100,32,105,110,32,99,101,108,108,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,77,117,108,116,105,112,108,101,32,117,115,101,115,32,102,111,114,32,98,121,116,101,32,37,100,32,111,102,32,112,97,103,101,32,37,100,0,0,0,0,70,114,97,103,109,101,110,116,97,116,105,111,110,32,111,102,32,37,100,32,98,121,116,101,115,32,114,101,112,111,114,116,101,100,32,97,115,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,105,110,118,97,108,105,100,32,112,97,103,101,32,110,117,109,98,101,114,32,37,100,0,0,50,110,100,32,114,101,102,101,114,101,110,99,101,32,116,111,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,112,116,114,109,97,112,32,107,101,121,61,37,100,0,0,0,0,66,97,100,32,112,116,114,32,109,97,112,32,101,110,116,114,121,32,107,101,121,61,37,100,32,101,120,112,101,99,116,101,100,61,40,37,100,44,37,100,41,32,103,111,116,61,40,37,100,44,37,100,41,0,0,0,37,100,32,111,102,32,37,100,32,112,97,103,101,115,32,109,105,115,115,105,110,103,32,102,114,111,109,32,111,118,101,114,102,108,111,119,32,108,105,115,116,32,115,116,97,114,116,105,110,103,32,97,116,32,37,100,0,0,0,0,0,0,0,0,102,97,105,108,101,100,32,116,111,32,103,101,116,32,112,97,103,101,32,37,100,0,0,0,102,114,101,101,108,105,115,116,32,108,101,97,102,32,99,111,117,110,116,32,116,111,111,32,98,105,103,32,111,110,32,112,97,103,101,32,37,100,0,0,83,81,76,105,116,101,32,102,111,114,109,97,116,32,51,0,37,115,45,109,106,88,88,88,88,88,88,57,88,88,122,0,77,74,32,100,101,108,101,116,101,58,32,37,115,0,0,0,77,74,32,99,111,108,108,105,100,101,58,32,37,115,0,0,45,109,106,37,48,54,88,57,37,48,50,88,0,0,0,0,37,46,50,120,0,0,0,0,107,40,37,100,0,0,0,0,110,105,108,0,0,0,0,0,66,0,0,0,0,0,0,0,40,37,46,50,48,115,41,0,37,115,40,37,100,41,0,0,37,100,0,0,0,0,0,0,40,98,108,111,98,41,0,0,118,116,97,98,58,37,112,0,105,110,116,97,114,114,97,121,0,0,0,0,0,0,0,0,112,114,111,103,114,97,109,0,240,52,0,0,176,177,0,0,192,177,0,0,208,177,0,0,224,177,0,0,240,177,0,0,0,178,0,0,16,178,0,0,32,178,0,0,40,178,0,0,48,178,0,0,56,178,0,0,72,178,0,0,88,178,0,0,96,178,0,0,104,178,0,0,112,178,0,0,120,178,0,0,128,178,0,0,136,178,0,0,144,178,0,0,160,178,0,0,176,178,0,0,184,178,0,0,200,178,0,0,208,178,0,0,216,178,0,0,224,178,0,0,232,178,0,0,240,178,0,0,0,179,0,0,8,179,0,0,24,179,0,0,32,179,0,0,40,179,0,0,48,179,0,0,64,179,0,0,72,179,0,0,80,179,0,0,96,179,0,0,112,179,0,0,120,179,0,0,136,179,0,0,144,179,0,0,152,179,0,0,160,179,0,0,168,179,0,0,176,179,0,0,184,179,0,0,200,179,0,0,216,179,0,0,224,179,0,0,240,179,0,0,0,180,0,0,16,180,0,0,32,180,0,0,48,180,0,0,64,180,0,0,80,180,0,0,96,180,0,0,112,180,0,0,128,180,0,0,136,180,0,0,144,180,0,0,152,180,0,0,160,180,0,0,168,180,0,0,176,180,0,0,192,180,0,0,208,180,0,0,216,180,0,0,232,180,0,0,240,180,0,0,248,180,0,0,8,181,0,0,24,181,0,0,32,181,0,0,40,181,0,0,48,181,0,0,56,181,0,0,64,181,0,0,72,181,0,0,80,181,0,0,88,181,0,0,96,181,0,0,112,181,0,0,120,181,0,0,128,181,0,0,144,181,0,0,160,181,0,0,168,181,0,0,184,181,0,0,200,181,0,0,208,181,0,0,224,181,0,0,232,181,0,0,240,181,0,0,248,181,0,0,0,182,0,0,16,182,0,0,32,182,0,0,48,182,0,0,56,182,0,0,64,182,0,0,72,182,0,0,80,182,0,0,88,182,0,0,104,182,0,0,112,182,0,0,120,182,0,0,136,182,0,0,152,182,0,0,168,182,0,0,184,182,0,0,192,182,0,0,200,182,0,0,208,182,0,0,216,182,0,0,224,182,0,0,232,182,0,0,248,182,0,0,8,183,0,0,24,183,0,0,40,183,0,0,56,183,0,0,72,183,0,0,88,183,0,0,104,183,0,0,120,183,0,0,136,183,0,0,152,183,0,0,168,183,0,0,176,183,0,0,184,183,0,0,192,183,0,0,208,183,0,0,224,183,0,0,232,183,0,0,240,183,0,0,248,183,0,0,8,184,0,0,24,184,0,0,40,184,0,0,56,184,0,0,72,184,0,0,80,184,0,0,96,184,0,0,104,184,0,0,112,184,0,0,128,184,0,0,136,184,0,0,144,184,0,0,152,184,0,0,160,184,0,0,176,184,0,0,192,184,0,0,200,184,0,0,208,184,0,0,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,83,97,118,101,112,111,105,110,116,0,0,0,0,0,0,0,65,117,116,111,67,111,109,109,105,116,0,0,0,0,0,0,84,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,83,111,114,116,101,114,78,101,120,116,0,0,0,0,0,0,80,114,101,118,73,102,79,112,101,110,0,0,0,0,0,0,78,101,120,116,73,102,79,112,101,110,0,0,0,0,0,0,80,114,101,118,0,0,0,0,78,101,120,116,0,0,0,0,65,103,103,83,116,101,112,0,67,104,101,99,107,112,111,105,110,116,0,0,0,0,0,0,74,111,117,114,110,97,108,77,111,100,101,0,0,0,0,0,86,97,99,117,117,109,0,0,86,70,105,108,116,101,114,0,86,85,112,100,97,116,101,0,71,111,116,111,0,0,0,0,71,111,115,117,98,0,0,0,82,101,116,117,114,110,0,0,78,111,116,0,0,0,0,0,73,110,105,116,67,111,114,111,117,116,105,110,101,0,0,0,69,110,100,67,111,114,111,117,116,105,110,101,0,0,0,0,89,105,101,108,100,0,0,0,72,97,108,116,73,102,78,117,108,108,0,0,0,0,0,0,72,97,108,116,0,0,0,0,73,110,116,101,103,101,114,0,73,110,116,54,52,0,0,0,83,116,114,105,110,103,0,0,78,117,108,108,0,0,0,0,83,111,102,116,78,117,108,108,0,0,0,0,0,0,0,0,66,108,111,98,0,0,0,0,86,97,114,105,97,98,108,101,0,0,0,0,0,0,0,0,77,111,118,101,0,0,0,0,67,111,112,121,0,0,0,0,83,67,111,112,121,0,0,0,82,101,115,117,108,116,82,111,119,0,0,0,0,0,0,0,67,111,108,108,83,101,113,0,65,100,100,73,109,109,0,0,77,117,115,116,66,101,73,110,116,0,0,0,0,0,0,0,82,101,97,108,65,102,102,105,110,105,116,121,0,0,0,0,67,97,115,116,0,0,0,0,80,101,114,109,117,116,97,116,105,111,110,0,0,0,0,0,67,111,109,112,97,114,101,0,74,117,109,112,0,0,0,0,79,110,99,101,0,0,0,0,73,102,0,0,0,0,0,0,73,102,78,111,116,0,0,0,67,111,108,117,109,110,0,0,65,102,102,105,110,105,116,121,0,0,0,0,0,0,0,0,77,97,107,101,82,101,99,111,114,100,0,0,0,0,0,0,67,111,117,110,116,0,0,0,82,101,97,100,67,111,111,107,105,101,0,0,0,0,0,0,83,101,116,67,111,111,107,105,101,0,0,0,0,0,0,0,82,101,111,112,101,110,73,100,120,0,0,0,0,0,0,0,79,112,101,110,82,101,97,100,0,0,0,0,0,0,0,0,79,112,101,110,87,114,105,116,101,0,0,0,0,0,0,0,79,112,101,110,65,117,116,111,105,110,100,101,120,0,0,0,79,112,101,110,69,112,104,101,109,101,114,97,108,0,0,0,83,111,114,116,101,114,79,112,101,110,0,0,0,0,0,0,83,101,113,117,101,110,99,101,84,101,115,116,0,0,0,0,79,112,101,110,80,115,101,117,100,111,0,0,0,0,0,0,67,108,111,115,101,0,0,0,83,101,101,107,76,84,0,0,83,101,101,107,76,69,0,0,83,101,101,107,71,69,0,0,83,101,101,107,71,84,0,0,83,101,101,107,0,0,0,0,78,111,67,111,110,102,108,105,99,116,0,0,0,0,0,0,78,111,116,70,111,117,110,100,0,0,0,0,0,0,0,0,70,111,117,110,100,0,0,0,78,111,116,69,120,105,115,116,115,0,0,0,0,0,0,0,79,114,0,0,0,0,0,0,65,110,100,0,0,0,0,0,83,101,113,117,101,110,99,101,0,0,0,0,0,0,0,0,78,101,119,82,111,119,105,100,0,0,0,0,0,0,0,0,73,110,115,101,114,116,0,0,73,115,78,117,108,108,0,0,78,111,116,78,117,108,108,0,78,101,0,0,0,0,0,0,69,113,0,0,0,0,0,0,71,116,0,0,0,0,0,0,76,101,0,0,0,0,0,0,76,116,0,0,0,0,0,0,71,101,0,0,0,0,0,0,73,110,115,101,114,116,73,110,116,0,0,0,0,0,0,0,66,105,116,65,110,100,0,0,66,105,116,79,114,0,0,0,83,104,105,102,116,76,101,102,116,0,0,0,0,0,0,0,83,104,105,102,116,82,105,103,104,116,0,0,0,0,0,0,65,100,100,0,0,0,0,0,83,117,98,116,114,97,99,116,0,0,0,0,0,0,0,0,77,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,68,105,118,105,100,101,0,0,82,101,109,97,105,110,100,101,114,0,0,0,0,0,0,0,67,111,110,99,97,116,0,0,68,101,108,101,116,101,0,0,66,105,116,78,111,116,0,0,83,116,114,105,110,103,56,0,82,101,115,101,116,67,111,117,110,116,0,0,0,0,0,0,83,111,114,116,101,114,67,111,109,112,97,114,101,0,0,0,83,111,114,116,101,114,68,97,116,97,0,0,0,0,0,0,82,111,119,75,101,121,0,0,82,111,119,68,97,116,97,0,82,111,119,105,100,0,0,0,78,117,108,108,82,111,119,0,76,97,115,116,0,0,0,0,83,111,114,116,101,114,83,111,114,116,0,0,0,0,0,0,83,111,114,116,0,0,0,0,82,101,119,105,110,100,0,0,83,111,114,116,101,114,73,110,115,101,114,116,0,0,0,0,73,100,120,73,110,115,101,114,116,0,0,0,0,0,0,0,73,100,120,68,101,108,101,116,101,0,0,0,0,0,0,0,73,100,120,82,111,119,105,100,0,0,0,0,0,0,0,0,73,100,120,76,69,0,0,0,73,100,120,71,84,0,0,0,73,100,120,76,84,0,0,0,73,100,120,71,69,0,0,0,68,101,115,116,114,111,121,0,67,108,101,97,114,0,0,0,82,101,115,101,116,83,111,114,116,101,114,0,0,0,0,0,67,114,101,97,116,101,73,110,100,101,120,0,0,0,0,0,67,114,101,97,116,101,84,97,98,108,101,0,0,0,0,0,80,97,114,115,101,83,99,104,101,109,97,0,0,0,0,0,76,111,97,100,65,110,97,108,121,115,105,115,0,0,0,0,68,114,111,112,84,97,98,108,101,0,0,0,0,0,0,0,68,114,111,112,73,110,100,101,120,0,0,0,0,0,0,0,68,114,111,112,84,114,105,103,103,101,114,0,0,0,0,0,73,110,116,101,103,114,105,116,121,67,107,0,0,0,0,0,82,111,119,83,101,116,65,100,100,0,0,0,0,0,0,0,82,111,119,83,101,116,82,101,97,100,0,0,0,0,0,0,82,111,119,83,101,116,84,101,115,116,0,0,0,0,0,0,80,114,111,103,114,97,109,0,80,97,114,97,109,0,0,0,82,101,97,108,0,0,0,0,70,107,67,111,117,110,116,101,114,0,0,0,0,0,0,0,70,107,73,102,90,101,114,111,0,0,0,0,0,0,0,0,77,101,109,77,97,120,0,0,73,102,80,111,115,0,0,0,73,102,78,101,103,0,0,0,73,102,78,111,116,90,101,114,111,0,0,0,0,0,0,0,68,101,99,114,74,117,109,112,90,101,114,111,0,0,0,0,74,117,109,112,90,101,114,111,73,110,99,114,0,0,0,0,65,103,103,70,105,110,97,108,0,0,0,0,0,0,0,0,73,110,99,114,86,97,99,117,117,109,0,0,0,0,0,0,69,120,112,105,114,101,0,0,84,97,98,108,101,76,111,99,107,0,0,0,0,0,0,0,86,66,101,103,105,110,0,0,86,67,114,101,97,116,101,0,86,68,101,115,116,114,111,121,0,0,0,0,0,0,0,0,86,79,112,101,110,0,0,0,86,67,111,108,117,109,110,0,86,78,101,120,116,0,0,0,86,82,101,110,97,109,101,0,80,97,103,101,99,111,117,110,116,0,0,0,0,0,0,0,77,97,120,80,103,99,110,116,0,0,0,0,0,0,0,0,73,110,105,116,0,0,0,0,78,111,111,112,0,0,0,0,69,120,112,108,97,105,110,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,78,85,76,76,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,102,105,110,97,108,105,122,101,100,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,0,0,0,64,32,32,0,0,0,0,0,100,101,115,116,105,110,97,116,105,111,110,32,100,97,116,97,98,97,115,101,32,105,115,32,105,110,32,117,115,101,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,0,0,1,0,0,0,67,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,24,187,0,0,33,0,0,0,0,0,0,0,240,186,0,0,70,0,0,0,0,0,0,0,72,59,0,0,59,0,0,0,0,0,0,0,32,187,0,0,60,0,0,0,0,0,0,0,40,187,0,0,61,0,0,0,0,0,0,0,48,187,0,0,62,0,0,0,0,0,0,0,56,187,0,0,63,0,0,0,0,0,0,0,72,187,0,0,34,0,0,0,0,0,0,0,80,187,0,0,35,0,0,0,0,0,0,0,88,187,0,0,0,0,0,0,0,0,0,0,96,187,0,0,0,0,0,0,0,0,0,0,104,187,0,0,36,0,0,0,0,0,0,0,112,187,0,0,0,0,0,0,0,0,0,0,120,187,0,0,0,0,0,0,0,0,0,0,136,187,0,0,64,0,0,0,0,0,0,0,144,187,0,0,0,0,0,0,0,0,0,0,160,187,0,0,71,0,0,0,0,0,0,0,168,187,0,0,65,0,0,0,0,0,0,0,184,187,0,0,66,0,0,0,0,0,0,0,192,187,0,0,72,0,0,0,0,0,0,0,200,187,0,0,37,0,0,0,0,0,0,0,208,187,0,0,4,0,0,0,0,0,0,0,216,187,0,0,67,0,0,0,0,0,0,0,224,187,0,0,0,0,0,0,0,0,0,0,232,187,0,0,6,0,0,0,0,0,0,0,0,0,0,0,99,108,111,115,101,0,0,0,111,115,95,117,110,105,120,46,99,58,37,100,58,32,40,37,100,41,32,37,115,40,37,115,41,32,45,32,37,115,0,0,111,112,101,110,0,0,0,0,103,101,116,99,119,100,0,0,115,116,97,116,0,0,0,0,102,115,116,97,116,0,0,0,102,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,102,99,110,116,108,0,0,0,114,101,97,100,0,0,0,0,112,114,101,97,100,0,0,0,112,114,101,97,100,54,52,0,119,114,105,116,101,0,0,0,112,119,114,105,116,101,0,0,112,119,114,105,116,101,54,52,0,0,0,0,0,0,0,0,102,99,104,109,111,100,0,0,102,97,108,108,111,99,97,116,101,0,0,0,0,0,0,0,117,110,108,105,110,107,0,0,111,112,101,110,68,105,114,101,99,116,111,114,121,0,0,0,109,107,100,105,114,0,0,0,114,109,100,105,114,0,0,0,102,99,104,111,119,110,0,0,109,109,97,112,0,0,0,0,109,117,110,109,97,112,0,0,109,114,101,109,97,112,0,0,103,101,116,112,97,103,101,115,105,122,101,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,111,112,101,110,32,34,37,115,34,32,97,115,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,37,100,0,0,0,0,0,0,47,100,101,118,47,110,117,108,108,0,0,0,0,0,0,0,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,48,49,50,51,52,53,54,55,56,57,0,0,37,115,47,101,116,105,108,113,115,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,188,0,0,184,188,0,0,200,188,0,0,0,0,0,0,0,0,0,0,47,118,97,114,47,116,109,112,0,0,0,0,0,0,0,0,47,117,115,114,47,116,109,112,0,0,0,0,0,0,0,0,47,116,109,112,0,0,0,0,83,81,76,73,84,69,95,84,77,80,68,73,82,0,0,0,84,77,80,68,73,82,0,0,102,117,108,108,95,102,115,121,110,99,0,0,0,0,0,0,3,0,0,0,73,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,100,101,118,47,117,114,97,110,100,111,109,0,0,0,0,47,37,115,0,0,0,0,0,102,115,121,110,99,0,0,0,112,115,111,119,0,0,0,0,3,0,0,0,74,0,0,0,17,0,0,0,18,0,0,0,31,0,0,0,53,0,0,0,54,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,32,0,0,0,68,0,0,0,69,0,0,0,20,0,0,0,15,0,0,0,19,0,0,0,58,0,0,0,19,0,0,0,16,0,0,0,0,0,0,0,37,115,46,108,111,99,107,0,99,97,110,110,111,116,32,102,115,116,97,116,32,100,98,32,102,105,108,101,32,37,115,0,102,105,108,101,32,117,110,108,105,110,107,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,0,0,0,109,117,108,116,105,112,108,101,32,108,105,110,107,115,32,116,111,32,102,105,108,101,58,32,37,115,0,0,0,0,0,0,102,105,108,101,32,114,101,110,97,109,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,45,115,104,109,0,0,114,101,97,100,111,110,108,121,95,115,104,109,0,0,0,0,37,0,0,0,0,0,0,0,100,10,1,1,0,0,115,0,4,6,0,0,103,0,1,4,30,0,122,0,4,7,0,0,113,0,4,10,0,0,81,0,4,11,0,0,119,0,4,15,0,0,99,0,0,9,0,0,111,8,0,1,0,2,117,10,0,1,0,0,120,16,0,1,16,1,88,16,0,1,0,4,102,0,1,2,0,0,101,0,1,3,30,0,69,0,1,3,14,0,71,0,1,4,14,0,105,10,1,1,0,0,110,0,0,5,0,0,37,0,0,8,0,0,112,16,0,14,0,1,84,0,2,12,0,0,83,0,2,13,0,0,114,10,3,16,0,0,0,0,0,0,0,0,116,104,115,116,110,100,114,100,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,0,0,0,0,0,0,0,0,45,120,48,0,88,48,0,0,78,97,78,0,0,0,0,0,45,73,110,102,0,0,0,0,43,73,110,102,0,0,0,0,73,110,102,0,0,0,0,0,40,78,85,76,76,41,0,0,68,73,83,65,66,76,69,95,76,70,83,0,0,0,0,0,73,78,84,54,52,95,84,89,80,69,0,0,0,0,0,0,83,89,83,84,69,77,95,77,65,76,76,79,67,0,0,0,84,72,82,69,65,68,83,65,70,69,61,48],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+39192);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}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};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var ___errno_state=0;function ___setErrNo(value){HEAP32[___errno_state>>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{return flags}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),getStreamFromPtr:(function(ptr){return FS.streams[ptr-1]}),getPtrForStream:(function(stream){return stream?stream.fd+1:0}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(lookup.node.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(){return 0})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");HEAP32[_stdin>>2]=FS.getPtrForStream(stdin);assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)this.stack=demangleAll(this.stack)};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;ibuflen-1){return ___setErrNo(ERRNO_CODES.ERANGE)}else{var msg=ERRNO_MESSAGES[errnum];writeAsciiToMemory(msg,strerrbuf);return 0}}else{return ___setErrNo(ERRNO_CODES.EINVAL)}}function _strerror(errnum){if(!_strerror.buffer)_strerror.buffer=_malloc(256);_strerror_r(errnum,_strerror.buffer,256);return _strerror.buffer}var _DtoIHigh=true;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _usleep(useconds){var msec=useconds/1e3;if((ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]){var start=self["performance"]["now"]();while(self["performance"]["now"]()-start>2];path=Pointer_stringify(path);try{var stream=FS.open(path,oflag,mode);return stream.fd}catch(e){FS.handleFSError(e);return-1}}function _getuid(){return 0}function _geteuid(){return _getuid.apply(null,arguments)}function _mknod(path,mode,dev){path=Pointer_stringify(path);switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:___setErrNo(ERRNO_CODES.EINVAL);return-1}try{FS.mknod(path,mode,dev);return 0}catch(e){FS.handleFSError(e);return-1}}function _mkdir(path,mode){path=Pointer_stringify(path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);try{FS.mkdir(path,mode,0);return 0}catch(e){FS.handleFSError(e);return-1}}function _mkport(){throw"TODO"}var SOCKFS={mount:(function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=(function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this});Module["websocket"].emit=(function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}});return FS.createNode(null,"/",16384|511,0)}),createSocket:(function(family,type,protocol){var streaming=type==1;if(protocol){assert(streaming==(protocol==6))}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:FS.modeStringToFlags("r+"),seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock}),getSocket:(function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock}),stream_ops:{poll:(function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)}),ioctl:(function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)}),read:(function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length}),write:(function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)}),close:(function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)})},nextname:(function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current++ +"]"}),websocket_sock_ops:{createPeer:(function(sock,addr,port){var ws;if(typeof addr==="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);var opts=ENVIRONMENT_IS_NODE?{"protocol":subProtocols.toString()}:subProtocols;var WebSocket=ENVIRONMENT_IS_NODE?require("ws"):window["WebSocket"];ws=new WebSocket(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!=="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;if(typeof Browser.vrDevice==="undefined")Browser.vrDevice=null;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);if(vrDevice){canvasContainer.requestFullScreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullScreen()}}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;assert(typeof scrollX!=="undefined"&&typeof scrollY!=="undefined","Unable to retrieve scroll position, mouse positions likely broken.");if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(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)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2]=ret}return ret}function _munmap(start,num){if(!_mmap.mappings)_mmap.mappings={};var info=_mmap.mappings[start];if(!info)return 0;if(num==info.num){_mmap.mappings[start]=null;if(info.allocated){_free(info.malloc)}}return 0}function _stat(path,buf,dontResolveLastLink){path=typeof path!=="string"?Pointer_stringify(path):path;try{var stat=dontResolveLastLink?FS.lstat(path):FS.stat(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}catch(e){if(e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){e.setErrno(ERRNO_CODES.ENOTDIR)}FS.handleFSError(e);return-1}}function _fstat(fildes,buf){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}return _stat(stream.path,buf)}var ___tm_current=allocate(44,"i8",ALLOC_STATIC);var ___tm_timezone=allocate(intArrayFromString("GMT"),"i8",ALLOC_STATIC);var _tzname=allocate(8,"i32*",ALLOC_STATIC);var _daylight=allocate(1,"i32*",ALLOC_STATIC);var _timezone=allocate(1,"i32*",ALLOC_STATIC);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[_timezone>>2]=-(new Date).getTimezoneOffset()*60;var winter=new Date(2e3,0,1);var summer=new Date(2e3,6,1);HEAP32[_daylight>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[_tzname+4>>2]=summerNamePtr}else{HEAP32[_tzname>>2]=summerNamePtr;HEAP32[_tzname+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=(new Date(2e3,6,1)).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=date.getTimezoneOffset()==Math.min(winterOffset,summerOffset)|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[_tzname+(dst?Runtime.QUANTUM_SIZE:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _fcntl(fildes,cmd,varargs,dup2){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}switch(cmd){case 0:var arg=HEAP32[varargs>>2];if(arg<0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var newStream;try{newStream=FS.open(stream.path,stream.flags,0,arg)}catch(e){FS.handleFSError(e);return-1}return newStream.fd;case 1:case 2:return 0;case 3:return stream.flags;case 4:var arg=HEAP32[varargs>>2];stream.flags|=arg;return 0;case 12:case 12:var arg=HEAP32[varargs>>2];var offset=0;HEAP16[arg+offset>>1]=2;return 0;case 13:case 14:case 13:case 14:return 0;case 8:case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:___setErrNo(ERRNO_CODES.EINVAL);return-1}return-1}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _recv(fd,buf,len,flags){var sock=SOCKFS.getSocket(fd);if(!sock){___setErrNo(ERRNO_CODES.EBADF);return-1}return _read(fd,buf,len)}function _pread(fildes,buf,nbyte,offset){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte,offset)}catch(e){FS.handleFSError(e);return-1}}function _read(fildes,buf,nbyte){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte)}catch(e){FS.handleFSError(e);return-1}}var _BDtoIHigh=true;function _getcwd(buf,size){if(size==0){___setErrNo(ERRNO_CODES.EINVAL);return 0}var cwd=FS.cwd();if(size>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),"i8",ALLOC_NORMAL);return _getenv.ret}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _chown(path,owner,group,dontResolveLastLink){if(typeof path!=="string")path=Pointer_stringify(path);try{FS.chown(path,owner,group);return 0}catch(e){FS.handleFSError(e);return-1}}function _fchown(fildes,owner,group){try{FS.fchown(fildes,owner,group);return 0}catch(e){FS.handleFSError(e);return-1}}function _dlclose(handle){if(!DLFCN.loadedLibs[handle]){DLFCN.errorMsg="Tried to dlclose() unopened handle: "+handle;return 1}else{var lib_record=DLFCN.loadedLibs[handle];if(--lib_record.refcount==0){if(lib_record.module.cleanups){lib_record.module.cleanups.forEach((function(cleanup){cleanup()}))}delete DLFCN.loadedLibNames[lib_record.name];delete DLFCN.loadedLibs[handle]}return 0}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function _dlopen(filename,flag){filename=filename===0?"__self__":(ENV["LD_LIBRARY_PATH"]||"/")+Pointer_stringify(filename);abort("need to build with DLOPEN_SUPPORT=1 to get dlopen support in asm.js");if(DLFCN.loadedLibNames[filename]){var handle=DLFCN.loadedLibNames[filename];DLFCN.loadedLibs[handle].refcount++;return handle}if(filename==="__self__"){var handle=-1;var lib_module=Module;var cached_functions=SYMBOL_TABLE}else{var target=FS.findObject(filename);if(!target||target.isFolder||target.isDevice){DLFCN.errorMsg="Could not find dynamic lib: "+filename;return 0}else{FS.forceLoadFile(target);var lib_data=FS.readFile(filename,{encoding:"utf8"})}try{var lib_module=eval(lib_data)(DLFCN.functionTable.length,Module)}catch(e){Module.printErr("Error in loading dynamic library: "+e);DLFCN.errorMsg="Could not evaluate dynamic lib: "+filename;return 0}var handle=1;for(var key in DLFCN.loadedLibs){if(DLFCN.loadedLibs.hasOwnProperty(key))handle++}if(flag&256){for(var ident in lib_module){if(lib_module.hasOwnProperty(ident)){Module[ident]=lib_module[ident]}}}var cached_functions={}}DLFCN.loadedLibs[handle]={refcount:1,name:filename,module:lib_module,cached_functions:cached_functions};DLFCN.loadedLibNames[filename]=handle;return handle}function _fsync(fildes){var stream=FS.getStream(fildes);if(stream){return 0}else{___setErrNo(ERRNO_CODES.EBADF);return-1}}function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}Module["_memmove"]=_memmove;function _dlerror(){if(DLFCN.errorMsg===null){return 0}else{if(DLFCN.error)_free(DLFCN.error);var msgArr=intArrayFromString(DLFCN.errorMsg);DLFCN.error=allocate(msgArr,"i8",ALLOC_NORMAL);DLFCN.errorMsg=null;return DLFCN.error}}function ___errno_location(){return ___errno_state}var _BItoD=true;Module["_bitshift64Lshr"]=_bitshift64Lshr;Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function _mmap(start,num,prot,flags,fd,offset){var MAP_PRIVATE=2;var ptr;var allocated=false;if(!_mmap.mappings)_mmap.mappings={};if(fd==-1){ptr=_malloc(num);if(!ptr)return-1;_memset(ptr,0,num);allocated=true}else{var info=FS.getStream(fd);if(!info)return-1;try{var res=FS.mmap(info,HEAPU8,start,num,offset,prot,flags);ptr=res.ptr;allocated=res.allocated}catch(e){FS.handleFSError(e);return-1}}_mmap.mappings[ptr]={malloc:ptr,num:num,allocated:allocated};return ptr}function _truncate(path,length){if(typeof path!=="string")path=Pointer_stringify(path);try{FS.truncate(path,length);return 0}catch(e){FS.handleFSError(e);return-1}}function _ftruncate(fildes,length){try{FS.ftruncate(fildes,length);return 0}catch(e){FS.handleFSError(e);return-1}}function _utimes(path,times){var time;if(times){var offset=8+0;time=HEAP32[times+offset>>2]*1e3;offset=8+4;time+=HEAP32[times+offset>>2]/1e3}else{time=Date.now()}path=Pointer_stringify(path);try{FS.utime(path,time,time);return 0}catch(e){FS.handleFSError(e);return-1}}FS.staticInit();__ATINIT__.unshift({func:(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()})});__ATMAIN__.push({func:(function(){FS.ignorePermissions=false})});__ATEXIT__.push({func:(function(){FS.quit()})});Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;___errno_state=Runtime.staticAlloc(4);HEAP32[___errno_state>>2]=0;__ATINIT__.unshift({func:(function(){TTY.init()})});__ATEXIT__.push({func:(function(){TTY.shutdown()})});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}__ATINIT__.push({func:(function(){SOCKFS.root=FS.mount(SOCKFS,{},null)})});Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};___buildEnvironment(ENV);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]|0;l=c[d+80>>2]|0;h=d+44|0;do if(!(c[h>>2]|0)){c[k+52>>2]=l;e=c[k+236>>2]|0;if(e){d=e+8|0;if(!(b[d>>1]&9312)){b[d>>1]=1;break}else{rg(e);break}}}else{i=k+65|0;j=a[i>>0]|0;d=c[3164]|0;if(d)jc[d&3]();g=k+236|0;d=c[g>>2]|0;do if(!d){d=ih(k,40,0)|0;if(!d){c[g>>2]=d;break}else{e=d+0|0;f=e+40|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));b[d+8>>1]=1;c[d+32>>2]=k;c[g>>2]=d;f=8;break}}else f=8;while(0);if((f|0)==8)Tg(d,c[h>>2]|0,-1,1,-1)|0;d=c[3166]|0;if(d)jc[d&3]();a[i>>0]=j;c[k+52>>2]=l}while(0);return l|0}function eh(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();k=o;c[g>>2]=0;if(!((Dh(a)|0)==0|(b|0)==0)){k=c[a+20>>2]|0;if((k|0)>0){l=c[a+16>>2]|0;n=0;do{m=c[l+(n<<4)+4>>2]|0;if(m)c[(c[m+4>>2]|0)+4>>2]=c[m>>2];n=n+1|0}while((n|0)!=(k|0))}k=Bn(a,b,d,e,f,g,h)|0;if((k|0)==17){id(c[g>>2]|0)|0;k=Bn(a,b,d,e,f,g,h)|0}}else{c[k>>2]=105892;c[k+4>>2]=10788;Zc(21,13648,k);k=21}i=o;return k|0}function fh(a,d){a=a|0;d=d|0;var e=0,f=0;f=a+68|0;if((b[f>>1]|0)>0){e=d+60|0;d=a+60|0;a=0;do{Wl((c[e>>2]|0)+(a*40|0)|0,(c[d>>2]|0)+(a*40|0)|0);a=a+1|0}while((a|0)<(b[f>>1]|0))}return}function gh(b,c){b=b|0;c=c|0;var d=0,e=0;if(c){d=c;while(1)if(!(a[d>>0]|0))break;else d=d+1|0;e=(d-c&1073741823)+1|0;d=ih(b,e,0)|0;if(d)gw(d|0,c|0,e|0)|0;else d=0}else d=0;return d|0}function hh(a,d){a=a|0;d=d|0;var e=0,f=0;f=c[a+8>>2]|0;if((d|0)>=1){bh(f,d)|0;b[f+8>>1]=8192;c[f>>2]=c[a+4>>2];e=f+16|0;a=c[e>>2]|0;if(!a)e=0;else{bw(a|0,0,d|0)|0;e=c[e>>2]|0}}else{e=f+8|0;if(!(b[e>>1]&9312))b[e>>1]=1;else rg(f);c[f+16>>2]=0;e=0}return e|0}function ih(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0;a:do if(b){i=b+65|0;if(!(a[i>>0]|0)){do if(a[b+250>>0]|0){if(0>>0|(0==(f|0)?(e[b+248>>1]|0)>>>0>>0:0)){g=b+264|0;c[g>>2]=(c[g>>2]|0)+1;break}h=b+272|0;g=c[h>>2]|0;if(!g){g=b+268|0;c[g>>2]=(c[g>>2]|0)+1;break}c[h>>2]=c[g>>2];f=b+252|0;h=c[f>>2]|0;d=h+1|0;c[f>>2]=d;f=b+260|0;c[f>>2]=(c[f>>2]|0)+1;f=b+256|0;if((h|0)>=(c[f>>2]|0))c[f>>2]=d;break a}while(0);g=mg(d,f)|0;if(!g){a[i>>0]=1;g=0}}else g=0}else g=mg(d,f)|0;while(0);return g|0}function jh(a,d){a=a|0;d=d|0;var f=0,g=0;do if(a){f=c[a+20>>2]|0;if((f|0)!=0?((d|0)>-1?(e[a+84>>1]|0|0)>(d|0):0):0){f=f+(d*40|0)|0;break}f=c[a>>2]|0;if((f|0)!=0?(c[f+52>>2]=25,g=c[f+236>>2]|0,(g|0)!=0):0){f=g+8|0;if(!(b[f>>1]&9312)){b[f>>1]=1;f=41496;break}else{rg(g);f=41496;break}}else f=41496}else f=41496;while(0);return f|0}function kh(a,e,f,g,h,i){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;j=lh(a,e)|0;if(!j)if(!f)j=0;else{e=(c[a+60>>2]|0)+((e+-1|0)*40|0)|0;j=Tg(e,f,g,i,h)|0;if((j|0)!=0|i<<24>>24==0)e=j;else e=Ul(e,d[(c[a>>2]|0)+62>>0]|0)|0;j=c[a>>2]|0;c[j+52>>2]=e;h=c[j+236>>2]|0;do if(h){g=h+8|0;if(!(b[g>>1]&9312)){b[g>>1]=1;break}else{rg(h);j=c[a>>2]|0;break}}while(0);j=Kg(j,e)|0}else{g=h;if(!((g|0)==0|(g|0)==-1))_b[h&31](f)}return j|0}function lh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;do if(!(Yg(a)|0)){if((c[a+40>>2]|0)==-1108210269?(c[a+76>>2]|0)<=-1:0){if((d|0)>=1?(b[a+68>>1]|0)>=(d|0):0){h=d+-1|0;g=c[a+60>>2]|0;f=g+(h*40|0)|0;e=g+(h*40|0)+8|0;if(!((b[e>>1]&9312)==0?(c[g+(h*40|0)+24>>2]|0)==0:0))Mg(f);b[e>>1]=1;f=c[a>>2]|0;c[f+52>>2]=0;f=c[f+236>>2]|0;do if(f){e=f+8|0;if(!(b[e>>1]&9312)){b[e>>1]=1;break}else{rg(f);break}}while(0);g=a+88|0;e=b[g>>1]|0;if(!(e&256)){e=0;break}f=c[a+188>>2]|0;if((d|0)<33){if(!((f&1<>1]=e|8;e=0;break}e=c[a>>2]|0;c[e+52>>2]=25;e=c[e+236>>2]|0;if(!e){e=25;break}f=e+8|0;if(!(b[f>>1]&9312)){b[f>>1]=1;e=25;break}else{rg(e);e=25;break}}f=c[a>>2]|0;c[f+52>>2]=21;f=c[f+236>>2]|0;do if(f){e=f+8|0;if(!(b[e>>1]&9312)){b[e>>1]=1;break}else{rg(f);break}}while(0);c[g>>2]=c[a+168>>2];Zc(21,41456,g);c[g>>2]=69987;c[g+4>>2]=10788;Zc(21,13648,g);e=21}else{c[g>>2]=69979;c[g+4>>2]=10788;Zc(21,13648,g);e=21}while(0);i=k;return e|0}function mh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do if(!((d|0)==0|(e|0)==0)?(i=b[d+70>>1]|0,i<<16>>16>0):0){g=c[d+64>>2]|0;d=0;while(1){h=c[g+(d<<2)>>2]|0;if(((h|0)!=0?(Xv(h,e,f)|0)==0:0)?(a[h+f>>0]|0)==0:0)break;d=d+1|0;if((d|0)>=(i<<16>>16|0)){d=0;break a}}d=d+1|0}else d=0;while(0);return d|0}function nh(d,f){d=d|0;f=f|0;var g=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o+8|0;m=o;g=a[d+10>>0]|0;k=d+16|0;l=d+12|0;do if(Pl(c[k>>2]|0,n,c[l>>2]|0,g)|0){if(!(Ql(c[k>>2]|0,m,c[l>>2]|0,g)|0)){l=m;k=c[l+4>>2]|0;g=d;c[g>>2]=c[l>>2];c[g+4>>2]=k;g=d+8|0;b[g>>1]=e[g>>1]|0|4;break}h[d>>3]=+h[n>>3];g=d+8|0;b[g>>1]=e[g>>1]|0|8;if(f)$l(d)}while(0);i=o;return}function oh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;if(!(Cn(b)|0)){g=Wh(c[b>>2]|0,e,f)|0;if(!g){g=(d|0)!=0?41368:41384;if(!f){c[h>>2]=g;c[h+4>>2]=e;ph(b,27680,h)}else{c[h>>2]=g;c[h+4>>2]=f;c[h+8>>2]=e;ph(b,27664,h)}a[b+17>>0]=1;g=0}}else g=0;i=k;return g|0}function ph(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();h=g;f=c[b>>2]|0;c[h>>2]=e;e=Sk(f,d,h)|0;if(!(a[f+68>>0]|0)){d=b+64|0;c[d>>2]=(c[d>>2]|0)+1;d=b+4|0;ig(f,c[d>>2]|0);c[d>>2]=e;c[b+12>>2]=1}else ig(f,e);i=g;return}function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e;c[f>>2]=d;a=Sk(a,b,f)|0;i=e;return a|0}function rh(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;b=ih(d,208,0)|0;if(!b)b=0;else{bw(b|0,0,208)|0;c[b>>2]=d;d=d+4|0;e=c[d>>2]|0;if(e)c[e+48>>2]=b;c[b+52>>2]=e;c[b+48>>2]=0;c[d>>2]=b;c[b+40>>2]=649915045;c[b+24>>2]=a}return b|0}function sh(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;i=b+32|0;h=c[i>>2]|0;if((c[(c[b+24>>2]|0)+84>>2]|0)<=(h|0))if(!(Dn(b)|0)){j=c[i>>2]|0;k=4}else h=1;else{j=h;k=4}if((k|0)==4){c[i>>2]=j+1;i=c[b+4>>2]|0;a[i+(h*20|0)>>0]=d;a[i+(h*20|0)+3>>0]=0;c[i+(h*20|0)+4>>2]=e;c[i+(h*20|0)+8>>2]=f;c[i+(h*20|0)+12>>2]=g;c[i+(h*20|0)+16>>2]=0;a[i+(h*20|0)+1>>0]=0}return h|0}function th(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=c[b>>2]|0;g=c[b+4>>2]|0;do if((g|0)!=0?(a[j+65>>0]|0)==0:0){if((d|0)<0)d=(c[b+32>>2]|0)+-1|0;i=g+(d*20|0)+1|0;h=g+(d*20|0)+16|0;En(j,a[i>>0]|0,c[h>>2]|0);c[h>>2]=0;if((f|0)==-14){c[h>>2]=e;a[i>>0]=-14;break}if(!e){c[h>>2]=0;a[i>>0]=0;break}if((f|0)==-6){c[h>>2]=e;a[i>>0]=-6;break}else if((f|0)==-10){c[h>>2]=e;a[i>>0]=-10;d=e+12|0;c[d>>2]=(c[d>>2]|0)+1;break}else{if((f|0)<0){c[h>>2]=e;a[i>>0]=f;break}if(!f){d=e;while(1)if(!(a[d>>0]|0))break;else d=d+1|0;g=d-e&1073741823}else g=f;b=c[b>>2]|0;d=fw(g|0,((g|0)<0)<<31>>31|0,1,0)|0;d=ih(b,d,C)|0;if(!d)d=0;else{gw(d|0,e|0,g|0)|0;a[d+g>>0]=0}c[h>>2]=d;a[i>>0]=-1;break}}else k=3;while(0);if((k|0)==3?(f|0)!=-10:0)En(j,f,e);return}function uh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=b+32|0;f=c[k>>2]|0;if((f+d|0)>(c[(c[b+24>>2]|0)+84>>2]|0))if(!(Dn(b)|0)){f=c[k>>2]|0;g=4}else f=0;else g=4;if((g|0)==4)if((d|0)>0){i=b+4|0;j=0;while(1){l=a[e+2>>0]|0;g=l<<24>>24;b=j+f|0;h=c[i>>2]|0;a[h+(b*20|0)>>0]=a[e>>0]|0;c[h+(b*20|0)+4>>2]=a[e+1>>0];if(l<<24>>24<0)g=f+~g|0;c[h+(b*20|0)+8>>2]=g;c[h+(b*20|0)+12>>2]=a[e+3>>0];a[h+(b*20|0)+1>>0]=0;c[h+(b*20|0)+16>>2]=0;a[h+(b*20|0)+3>>0]=0;j=j+1|0;if((j|0)==(d|0))break;else e=e+4|0}c[k>>2]=(c[k>>2]|0)+d}return f|0}function vh(b,d){b=b|0;d=d|0;var e=0,f=0;e=b+32|0;if((c[e>>2]|0)>(d|0)?(f=c[b+4>>2]|0,En(c[b>>2]|0,a[f+(d*20|0)+1>>0]|0,c[f+(d*20|0)+16>>2]|0),b=f+(d*20|0)|0,c[b+0>>2]=0,c[b+4>>2]=0,c[b+8>>2]=0,c[b+12>>2]=0,c[b+16>>2]=0,a[b>>0]=-100,((c[e>>2]|0)+-1|0)==(d|0)):0)c[e>>2]=d;return}function wh(e,f){e=e|0;f=f|0;var g=0,h=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;K=i;i=i+16|0;if((i|0)>=(j|0))ba();k=K;I=c[e>>2]|0;C=c[f+440>>2]|0;g=c[f+72>>2]|0;B=c[f+68>>2]|0;c[k>>2]=c[f+392>>2];A=c[f+80>>2]|0;A=(A|0)==0?1:A;g=B+g|0;m=c[e+4>>2]|0;l=m+((c[e+32>>2]|0)*20|0)|0;m=m+((c[f+84>>2]|0)*20|0)|0;Fn(e,k);if(!(a[f+20>>0]|0))h=0;else h=((a[f+21>>0]|0)!=0&1)<<5&65535;J=e+88|0;b[J>>1]=b[J>>1]&-33|h;H=f+450|0;E=(a[H>>0]|0)!=0&(g|0)<10?10:g;g=l;bw(l|0,0,m-g|0)|0;b[J>>1]=b[J>>1]&-9;D=e+8|0;v=E*40|0;w=e+60|0;x=C*40|0;y=e+12|0;n=(c[k>>2]<<2)+7&-8;z=e+64|0;o=(C<<2)+7&-8;p=e+56|0;q=(B<<2)+7&-8;r=e+200|0;s=A+7&-8;t=e+172|0;u=I+65|0;l=l+(g&7)|0;while(1){k=c[D>>2]|0;if(!k){h=l+v|0;g=h>>>0>m>>>0;k=g?0:l;l=g?l:h;g=g?v:0}else g=0;c[D>>2]=k;k=c[w>>2]|0;if(!k){L=l+x|0;h=L>>>0>m>>>0;k=h?0:l;l=h?l:L;g=(h?x:0)+g|0}c[w>>2]=k;k=c[y>>2]|0;if(!k){L=l+n|0;h=L>>>0>m>>>0;k=h?0:l;l=h?l:L;g=(h?n:0)+g|0}c[y>>2]=k;k=c[z>>2]|0;if(!k){L=l+o|0;h=L>>>0>m>>>0;k=h?0:l;l=h?l:L;g=(h?o:0)+g|0}c[z>>2]=k;k=c[p>>2]|0;if(!k){L=l+q|0;h=L>>>0>m>>>0;k=h?0:l;l=h?l:L;g=(h?q:0)+g|0}c[p>>2]=k;k=c[r>>2]|0;if(!k){h=(l+s|0)>>>0>m>>>0;k=h?0:l;g=(h?s:0)+g|0}c[r>>2]=k;if(!g)break;h=ih(I,g,((g|0)<0)<<31>>31)|0;if(!h)k=0;else{bw(h|0,0,g|0)|0;k=h}c[t>>2]=k;if(!(a[u>>0]|0)){l=h;m=h+g|0}else break}c[e+36>>2]=B;c[e+196>>2]=A;h=c[w>>2]|0;if((h|0)!=0?(b[e+68>>1]=C,(C|0)>0):0){g=0;do{b[h+(g*40|0)+8>>1]=1;c[h+(g*40|0)+32>>2]=I;g=g+1|0}while((g|0)!=(C|0))}h=c[z>>2]|0;if((h|0)!=0?(F=f+444|0,G=c[F>>2]|0,(G|0)>0):0){b[e+70>>1]=G;C=f+472|0;gw(h|0,c[C>>2]|0,G<<16>>14|0)|0;bw(c[C>>2]|0,0,c[F>>2]<<2|0)|0}h=c[D>>2]|0;if((h|0)!=0?(c[D>>2]=h+-40,c[e+28>>2]=E,(E|0)>=1):0){g=1;while(1){b[h+((g+-1|0)*40|0)+8>>1]=128;c[h+((g+-1|0)*40|0)+32>>2]=I;if((g|0)==(E|0))break;else g=g+1|0}}b[J>>1]=b[J>>1]&-4|d[H>>0]&3;c[e+76>>2]=-1;c[e+80>>2]=0;a[e+86>>0]=2;c[e+40>>2]=-1108210269;c[e+92>>2]=0;c[e+72>>2]=1;a[e+87>>0]=-1;c[e+104>>2]=0;D=e+144|0;c[D>>2]=0;c[D+4>>2]=0;i=K;return}function xh(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();o=p;n=e+20|0;m=c[n>>2]|0;l=c[m+60>>2]|0;c[l>>2]=f;c[l+4>>2]=g;l=Od(m)|0;do if((l|0)!=100){k=c[n>>2]|0;if(k){l=id(k)|0;c[n>>2]=0;k=c[e+24>>2]|0;if(!l){l=o;c[l>>2]=f;c[l+4>>2]=g;l=1;k=qh(k,41432,o)|0;break}else{c[o>>2]=Oe(k)|0;k=qh(k,10344,o)|0;break}}else k=0}else{l=c[c[m+56>>2]>>2]|0;k=c[e+12>>2]|0;m=c[l+(k<<2)+84>>2]|0;if(m>>>0>=12){c[e+8>>2]=c[l+((b[l+20>>1]|0)+k<<2)+84>>2];c[e+4>>2]=(m+-12|0)>>>1;l=c[l>>2]|0;c[e+16>>2]=l;l=l+72|0;a[l>>0]=d[l>>0]|16;l=0;k=0;break}l=c[e+24>>2]|0;if(!m)k=20352;else k=(m|0)==7?20336:20320;c[o>>2]=k;k=qh(l,41400,o)|0;id(c[n>>2]|0)|0;c[n>>2]=0;l=1}while(0);c[h>>2]=k;i=p;return l|0}function yh(a){a=a|0;var b=0;if(a){b=c[a>>2]|0;ig(b,c[a+112>>2]|0);Jk(b,c[a+316>>2]|0)}return}function zh(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a[b+73>>0]|0;do if(!(g<<24>>24))f=4;else{if((g&255)>2?(f=Gn(b)|0,(f|0)!=0):0)break;f=Hm(b,c,d,e,0)|0}while(0);return f|0}function Ah(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();k=m;if(!a){c[k>>2]=77646;c[k+4>>2]=10788;Zc(21,13648,k);f=21}else{l=c[a+24>>2]|0;k=a+20|0;h=c[k>>2]|0;do if((f|e|0)>=0?(o=fw(f|0,((f|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0,q=C,n=c[a+4>>2]|0,p=((n|0)<0)<<31>>31,!((q|0)>(p|0)|(q|0)==(p|0)&o>>>0>n>>>0)):0)if(h){f=lc[g&31](c[a+16>>2]|0,(c[a+8>>2]|0)+f|0,e,d)|0;if((f|0)==4){Jg(h)|0;c[k>>2]=0;f=4;break}else{c[h+80>>2]=f;break}}else f=4;else f=1;while(0);c[l+52>>2]=f;h=c[l+236>>2]|0;do if(h){k=h+8|0;if(!(b[k>>1]&9312)){b[k>>1]=1;break}else{rg(h);break}}while(0);f=Kg(l,f)|0}i=m;return f|0}function Bh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=b+73|0;g=a[h>>0]|0;if((g&255)>2){g=Gn(b)|0;if(!g){g=a[h>>0]|0;i=4}}else i=4;if((i|0)==4)if(g<<24>>24==1){Hn(c[b+4>>2]|0,c[b+60>>2]|0,b)|0;if(!(a[b+72>>0]&1))g=8;else g=Hm(b,d,e,f,1)|0}else g=4;return g|0}function Ch(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;y=i;i=i+16|0;if((i|0)>=(j|0))ba();w=y+4|0;x=y;c[w>>2]=b;c[x>>2]=e;r=d[f+1>>0]|0;s=d[f>>0]|0;v=a[f+3>>0]|0;u=(g|0)!=0;if(u)t=g;else t=d[f+2>>0]|0;o=v<<24>>24!=0;m=0;a:while(1){while(1){k=In(w)|0;if(!k){q=60;break a}if((k|0)==(s|0)){q=7;break a}if((k|0)!=(t|0))break;if(u){q=40;break}e=In(x)|0;if(!e){h=0;break a}l=In(w)|0;if((l|0)==94){l=In(w)|0;h=1}else h=0;if((l|0)==93){l=In(w)|0;n=(e|0)==93&1}else n=0;k=(l|0)==0;if((l|0)!=93&(k^1)){k=0;while(1){if(((l|0)==45?(p=a[c[w>>2]>>0]|0,p<<24>>24!=93):0)?p<<24>>24!=0&(k|0)!=0:0){l=e>>>0>>0|e>>>0>(In(w)|0)>>>0;b=0;n=l?n:1}else{b=l;n=(e|0)==(l|0)?1:n}l=In(w)|0;k=(l|0)==0;if(!((l|0)!=93&(k^1))){l=k;break}else k=b}}else l=k;if(l|(n|0)==(h|0)){h=0;break a}}if((q|0)==40){q=0;k=In(w)|0;if(!k){h=0;break}m=c[w>>2]|0}l=In(x)|0;if((k|0)==(l|0))continue;if(o&k>>>0<128&l>>>0<128?(a[9328+(k&255)>>0]|0)==(a[9328+(l&255)>>0]|0):0)continue;if((k|0)!=(r|0)){h=0;break}if(!((l|0)!=0?(c[w>>2]|0)!=(m|0):0)){h=0;break}}b:do if((q|0)==7){e=In(w)|0;b=(e|0)==(r|0);if((e|0)==(s|0)|b)do{if(b?(In(x)|0)==0:0){h=0;break b}e=In(w)|0;b=(e|0)==(r|0)}while((e|0)==(s|0)|b);if(e){do if((e|0)==(t|0)){if(u){e=In(w)|0;if(!e){h=0;break b}else break}h=c[x>>2]|0;c:do if(!(a[h>>0]|0))h=0;else{b=c[w>>2]|0;while(1){if(Ch(b+-1|0,h,f,0)|0)break;e=h+1|0;c[x>>2]=e;if((d[h>>0]|0)>191?(a[e>>0]&-64)<<24>>24==-128:0){while(1){h=h+2|0;if((a[h>>0]&-64)<<24>>24==-128){q=e;e=h;h=q}else break}c[x>>2]=h}else h=e;if(!(a[h>>0]|0)){h=0;break c}}h=(a[h>>0]|0)!=0}while(0);h=h&1;break b}while(0);if(e>>>0>=129){h=In(x)|0;if(!h){h=0;break}b=c[w>>2]|0;while(1){if((h|0)==(e|0)?(Ch(b,c[x>>2]|0,f,g)|0)!=0:0){h=1;break b}h=In(x)|0;if(!h){h=0;break b}}}if(!(v<<24>>24)){n=e;m=e}else{m=e&255;n=d[9328+m>>0]|0;m=((d[10368+m>>0]|-33)^32)&e}b=c[x>>2]|0;h=b+1|0;c[x>>2]=h;e=a[b>>0]|0;if(!(e<<24>>24))h=0;else{l=c[w>>2]|0;k=e&255;while(1){if((k|0)==(n|0)|(k|0)==(m|0)?(Ch(l,h,f,g)|0)!=0:0){h=1;break b}e=b+2|0;c[x>>2]=e;b=a[h>>0]|0;if(!(b<<24>>24)){h=0;break}else{q=h;k=b&255;h=e;b=q}}}}else h=1}else if((q|0)==60)h=(a[c[x>>2]>>0]|0)==0&1;while(0);i=y;return h|0}function Dh(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();b=d;do if(a){a=c[a+76>>2]|0;if((a|0)==-1607883113){a=1;break}else if((a|0)==1266094736|(a|0)==-264537850){c[b>>2]=41352;Zc(21,15256,b);a=0;break}else{c[b>>2]=15248;Zc(21,15256,b);a=0;break}}else{c[b>>2]=20304;Zc(21,15256,b);a=0}while(0);i=d;return a|0}function Eh(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();k=n;l=n+8|0;c[l>>2]=0;c[g>>2]=0;if((Dh(b)|0)==0|(d|0)==0){c[k>>2]=106003;c[k+4>>2]=10788;Zc(21,13648,k);f=21}else{a:do if((e|0)>-1)if((e|0)>0){k=0;do{if((a[d+k>>0]|0)==0?(a[d+(k|1)>>0]|0)==0:0)break a;k=k+2|0}while((k|0)<(e|0))}else k=0;else k=e;while(0);m=Nh(b,d,k)|0;if(m){f=eh(b,m,-1,f,0,g,l)|0;k=c[l>>2]|0;if((k|0)!=0&(h|0)!=0){g=Jn(m,k-m|0)|0;if((g|0)>0){e=0;k=d;do{k=(a[k+1>>0]&-8)<<24>>24==-40?k+4|0:k+2|0;e=e+1|0}while((e|0)!=(g|0))}else k=d;c[h>>2]=d+(k-d)}}else f=0;ig(b,m);f=Kg(b,f)|0}i=n;return f|0}function Fh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();o=r;p=b+12|0;h=c[p>>2]|0;n=(e|0)!=0;g=d<<((h|0)==0&n&1);q=b+20|0;l=b+8|0;k=c[l>>2]|0;if((g+(c[q>>2]|0)|0)>>>0>k>>>0){g=g+(k<<1)|0;c[l>>2]=g;h=c[b>>2]|0;if((Hc()|0)==0?(m=ng(h,g<<2,0)|0,(m|0)!=0):0){c[b>>2]=m;h=c[p>>2]|0;m=5}else m=21}else m=5;a:do if((m|0)==5){g=b+16|0;if(!h){c[g>>2]=d;if((d|0)>0){g=0;do{c[o>>2]=c[f+(g<<2)>>2];h=Wc(10344,o)|0;if(!h){m=21;break a}l=c[q>>2]|0;c[q>>2]=l+1;c[(c[b>>2]|0)+(l<<2)>>2]=h;g=g+1|0}while((g|0)<(d|0))}}else if((c[g>>2]|0)!=(d|0)){g=b+4|0;Sc(c[g>>2]|0);c[g>>2]=Wc(40912,o)|0;c[b+24>>2]=1;g=1;break}if(n){if((d|0)>0){l=0;do{k=e+(l<<2)|0;g=c[k>>2]|0;if(!g)g=0;else{h=g;while(1)if(!(a[h>>0]|0))break;else h=h+1|0;h=(h-g&1073741823)+1|0;g=Pc(h)|0;if(!g){m=21;break a}gw(g|0,c[k>>2]|0,h|0)|0}o=c[q>>2]|0;c[q>>2]=o+1;c[(c[b>>2]|0)+(o<<2)>>2]=g;l=l+1|0}while((l|0)<(d|0))}c[p>>2]=(c[p>>2]|0)+1;g=0}else g=0}while(0);if((m|0)==21){c[b+24>>2]=7;g=1}i=r;return g|0}function Gh(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();m=o;if(!d)k=0;else{h=d;while(1)if(!(a[h>>0]|0))break;else h=h+1|0;k=h-d&1073741823}l=b+308|0;h=Zm(l,d,m)|0;if((h|0)!=0?(c[h+8>>2]|0)!=0:0){c[m>>2]=114188;c[m+4>>2]=10788;Zc(21,13648,m);h=21}else{h=ih(b,k+17|0,0)|0;if((h|0)!=0?(n=h+16|0,gw(n|0,d|0,k+1|0)|0,c[h+4>>2]=n,c[h>>2]=e,c[h+8>>2]=f,c[h+12>>2]=g,n=Ek(l,n,h)|0,(n|0)!=0):0){a[b+65>>0]=1;ig(b,n);h=0}else h=0}h=Kg(b,h)|0;if((h|0)!=0&(g|0)!=0)_b[g&31](f);i=o;return h|0}function Hh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;A=i;i=i+16|0;if((i|0)>=(j|0))ba();x=A;n=A+8|0;y=c[b>>2]|0;l=c[y+92>>2]|0;if(!(c[y+148>>2]|0))c[y+240>>2]=0;z=b+12|0;c[z>>2]=0;p=b+480|0;c[p>>2]=d;t=mg(1612,0)|0;if(t){c[t>>2]=-1;q=y+250|0;r=a[q>>0]|0;if(c[y+276>>2]|0)a[q>>0]=1;s=y+65|0;o=b+504|0;f=b+508|0;m=y+240|0;k=0;h=-1;a:while(1){while(1){if(a[s>>0]|0){v=19;break a}g=d+k|0;if(!(a[g>>0]|0)){v=19;break a}c[o>>2]=g;g=yn(g,n)|0;c[f>>2]=g;k=g+k|0;if((k|0)>(l|0)){v=12;break a}g=c[n>>2]|0;if((g|0)==150){v=16;break a}else if((g|0)==1){h=g;v=17;break}else if((g|0)!=151){h=g;break}if(c[m>>2]|0){v=15;break a}}if((v|0)==17){v=0;c[p>>2]=d+k};c[x+0>>2]=c[o+0>>2];c[x+4>>2]=c[o+4>>2];Kn(t,h,x,b);h=c[n>>2]|0;if(c[z>>2]|0){v=19;break}}if((v|0)==12){c[z>>2]=18;v=19}else if((v|0)==15){ph(b,20384,x);c[z>>2]=9;v=19}else if((v|0)==16){ig(y,c[e>>2]|0);c[x>>2]=o;c[e>>2]=qh(y,20400,x)|0;f=1}if((v|0)==19){k=d+k|0;if((a[k>>0]|0)==0?(c[z>>2]|0)==0:0){if((h|0)!=1){c[x+0>>2]=c[o+0>>2];c[x+4>>2]=c[o+4>>2];Kn(t,1,x,b);c[p>>2]=k};c[x+0>>2]=c[o+0>>2];c[x+4>>2]=c[o+4>>2];Kn(t,0,x,b);f=0}else f=0}if((c[t>>2]|0)>-1)do Ln(t);while((c[t>>2]|0)>-1);Sc(t);a[q>>0]=r;if(!(a[s>>0]|0)){h=c[z>>2]|0;if(!((h|0)==101|(h|0)==0)){u=h;v=29}}else{c[z>>2]=7;u=7;v=29}if((v|0)==29?(w=b+4|0,(c[w>>2]|0)==0):0){if((u|0)!=516){h=u&255;if(h>>>0>26|(h|0)==2)h=16328;else h=c[15488+(h<<2)>>2]|0}else h=16344;c[x>>2]=h;$g(w,y,10344,x)}h=b+4|0;g=c[h>>2]|0;if(g){c[e>>2]=g;e=c[z>>2]|0;c[x>>2]=g;Zc(e,10344,x);c[h>>2]=0;f=f+1|0}h=b+8|0;g=c[h>>2]|0;if(((g|0)!=0?(c[b+64>>2]|0)>0:0)?(a[b+18>>0]|0)==0:0){Ll(g);c[h>>2]=0}if(!(a[b+18>>0]|0)){e=b+400|0;ig(y,c[e>>2]|0);c[e>>2]=0;c[b+396>>2]=0}Sc(c[b+520>>2]|0);if(!(a[b+451>>0]|0))gg(y,c[b+484>>2]|0);if(a[b+449>>0]|0)Mn(y,c[b+532>>2]|0);fg(y,c[b+488>>2]|0);h=c[b+444>>2]|0;k=b+472|0;g=c[k>>2]|0;if((h|0)>0)do{h=h+-1|0;ig(y,c[g+(h<<2)>>2]|0);g=c[k>>2]|0}while((h|0)>0);ig(y,g);h=b+404|0;g=c[h>>2]|0;if(g)do{c[h>>2]=c[g>>2];ig(y,g);g=c[h>>2]|0}while((g|0)!=0);h=b+524|0;g=c[h>>2]|0;if(g)do{c[h>>2]=c[g+72>>2];gg(y,g);g=c[h>>2]|0}while((g|0)!=0);if((f|0)>0?(c[z>>2]|0)==0:0)c[z>>2]=1}else{a[y+65>>0]=1;f=7}i=A;return f|0}function Ih(a){a=a|0;if(a){if(!((b[a+8>>1]&9312)==0?(c[a+24>>2]|0)==0:0))Mg(a);ig(c[a+32>>2]|0,a)}return}function Jh(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[d+252>>2]|0)){n=d+251|0;if(a[n>>0]|0)Sc(c[d+276>>2]|0);j=f&-8;h=(j|0)<5?0:j;i=(g|0)<0?0:g;if(!((h|0)==0|(i|0)==0))if(!e){f=c[3164]|0;if(f)jc[f&3]();f=_(h,i)|0;f=mg(f,((f|0)<0)<<31>>31)|0;g=c[3166]|0;if(g)jc[g&3]();if(!f)f=0;else i=(hc[c[8744+48>>2]&127](f)|0)/(j|0)|0}else f=e;else{h=0;f=0}g=d+276|0;c[g>>2]=f;m=d+272|0;c[m>>2]=0;b[d+248>>1]=h;if(!f){c[g>>2]=d;c[d+280>>2]=d;a[d+250>>0]=0;f=0}else{if((i|0)>0){g=_(h,i)|0;l=f+(_(h,i+-1|0)|0)|0;k=0;j=f;while(1){i=i+-1|0;c[j>>2]=k;if((i|0)<=0)break;else{k=j;j=j+h|0}}c[m>>2]=l;f=f+g|0}c[d+280>>2]=f;a[d+250>>0]=1;f=(e|0)==0&1}a[n>>0]=f;f=0}else f=5;return f|0}function Kh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();p=q;do if(!b)e=0;else{l=b+76|0;n=c[l>>2]|0;if(!((n|0)==1266094736|(n|0)==-1607883113|(n|0)==-264537850)){c[p>>2]=15248;Zc(21,15256,p);c[p>>2]=128509;c[p+4>>2]=10788;Zc(21,13648,p);e=21;break}m=b+20|0;e=c[m>>2]|0;a:do if((e|0)>0){n=b+16|0;f=c[n>>2]|0;h=0;do{g=c[f+(h<<4)+4>>2]|0;if(g)c[(c[g+4>>2]|0)+4>>2]=c[g>>2];h=h+1|0}while((h|0)!=(e|0));k=0;while(1){e=c[f+(k<<4)+12>>2]|0;if((e|0)!=0?(o=c[e+16>>2]|0,(o|0)!=0):0){e=o;do{f=c[e+8>>2]|0;b:do if(a[f+44>>0]&16){g=f+60|0;while(1){f=c[g>>2]|0;if(!f)break b;h=f+24|0;if((c[f>>2]|0)==(b|0))break;else g=h}c[g>>2]=c[h>>2];wn(f)}while(0);e=c[e>>2]|0}while((e|0)!=0)}e=k+1|0;if((e|0)>=(c[m>>2]|0))break a;f=c[n>>2]|0;k=e}}while(0);nl(b);Nn(b,68);if((d|0)==0?(Fl(b)|0)!=0:0){qg(b,5,16368,p);e=5;break}c[l>>2]=1691352191;Ig(b);e=0}while(0);i=q;return e|0}function Lh(a,b){a=a|0;b=b|0;if(((b*1e3|0)+1e3|0)>(c[a+492>>2]|0))b=0;else{b=c[a>>2]|0;nc[c[b+60>>2]&127](b,1e6)|0;b=1}return b|0}function Mh(d,f,g,h,k,l,m,n,o){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();t=v;do if(f){r=(l|0)!=0;p=(n|0)!=0;if(r)if(p|(m|0)!=0){u=8;break}else{p=0;q=0}else{q=(m|0)!=0;if(!(q|p^1)){u=8;break}}if(!(q&((r|p)^1)|(g|0)<-1|(g|0)>127)){p=f;while(1)if(!(a[p>>0]|0))break;else p=p+1|0;q=p-f&1073741823;if(q>>>0<=255){s=h&2048;p=h&7;if((p|0)!=4){if((p|0)==5){p=Mh(d,f,g,s|1,k,l,m,n,o)|0;if(p)break;p=Mh(d,f,g,s|2,k,l,m,n,o)|0;if(!p)p=3;else break}}else p=2;r=p&255;h=Oh(d,f,q,g,r,0)|0;if(((h|0)!=0?(e[h+2>>1]&3|0)==(p|0):0)?(b[h>>1]|0)==(g|0):0){if(c[d+148>>2]|0){qg(d,5,15424,t);p=5;break}p=c[d+4>>2]|0;if(p)do{t=p+88|0;b[t>>1]=b[t>>1]|8;p=c[p+52>>2]|0}while((p|0)!=0)}p=Oh(d,f,q,g,r,1)|0;if(!p)p=7;else{Jl(d,p);if(o)c[o>>2]=(c[o>>2]|0)+1;c[p+32>>2]=o;o=p+2|0;b[o>>1]=e[o>>1]&3|s;c[p+12>>2]=l;c[p+16>>2]=m;c[p+20>>2]=n;c[p+4>>2]=k;b[p>>1]=g;p=0}}else u=8}else u=8}else u=8;while(0);if((u|0)==8){c[t>>2]=129075;c[t+4>>2]=10788;Zc(21,13648,t);p=21}i=v;return p|0}function Nh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;l=i;i=i+48|0;if((i|0)>=(j|0))ba();k=l;g=k+0|0;h=g+40|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[k+32>>2]=d;Tg(k,e,f,2,0)|0;f=k+8|0;e=c[f>>2]|0;if(!((e&2|0)==0|(e&16711680|0)==65536))xn(k,1)|0;if(!(a[d+65>>0]|0))f=c[k+16>>2]|0;else{if(!((b[f>>1]&9312)==0?(c[k+24>>2]|0)==0:0))Mg(k);c[k+16>>2]=0;f=0}i=l;return f|0}function Oh(e,f,g,h,i,j){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=((d[9328+(d[f>>0]|0)>>0]|0)+g|0)%23|0;o=e+336|0;l=Nk(o,n,f,g)|0;if(!l){m=0;k=0}else{m=0;k=0;do{q=On(l,h,i)|0;p=(q|0)>(m|0);m=p?q:m;k=p?l:k;l=c[l+8>>2]|0}while((l|0)!=0)}do if(!(j<<24>>24)){if((k|0)!=0?(c[e+24>>2]&2097152|0)==0:0){l=0;n=12;break}l=Nk(10840,n,f,g)|0;if(!l){m=0;n=8}else{m=0;do{p=On(l,h,i)|0;n=(p|0)>(m|0);m=n?p:m;k=n?l:k;l=c[l+8>>2]|0}while((l|0)!=0);n=8}}else n=8;while(0);do if((n|0)==8){l=j<<24>>24!=0;if(l&(m|0)<6){l=g+37|0;k=ih(e,l,0)|0;if(!k){n=14;break}bw(k|0,0,l|0)|0;l=k+36|0;c[k+24>>2]=l;b[k>>1]=h;b[k+2>>1]=i&255;gw(l|0,f|0,g|0)|0;a[k+(g+36)>>0]=0;jg(o,k);l=1}if(!k)n=14;else n=12}while(0);if((n|0)==12)if((c[k+16>>2]|0)==0?!((c[k+12>>2]|0)!=0|l):0)n=14;if((n|0)==14)k=0;return k|0}function Ph(b,d,e){b=b|0;d=d|0;e=e|0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();e=d;c[e>>2]=c[(c[b+4>>2]|0)+24>>2];e=Wc(15304,e)|0;c[b+20>>2]=1;a[b+25>>0]=1;Tg(c[b>>2]|0,e,-1,1,-1)|0;Sc(e);i=d;return}function Qh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)<=(e|0)){e=c[3164]|0;if(e)jc[e&3]();Gf(b,d,0,0,0)|0;e=c[3166]|0;if(e)jc[e&3]()}return 0}function Rh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if(d){e=d;while(1)if(!(a[e>>0]|0))break;else e=e+1|0;g=e-d&1073741823;f=c[b+20>>2]|0;e=f+-1|0;if((f|0)>0){h=e;f=(c[b+16>>2]|0)+(e<<4)|0;while(1){b=c[f>>2]|0;if(!b)e=0;else{e=b;while(1)if(!(a[e>>0]|0))break;else e=e+1|0;e=e-b&1073741823}if((g|0)==(e|0)?($c(b,d)|0)==0:0){e=h;break a}e=h+-1|0;if((h|0)>0){h=e;f=f+-16|0}else break}}}else e=-1;while(0);return e|0}function Sh(b,e,f,g,h){b=b|0;e=e|0;f=f|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;q=b+20|0;i=c[q>>2]|0;if((i|0)>0){r=(e|0)==10;o=b+16|0;p=(f|0)==0;m=g;b=i;g=0;n=0;while(1){if((n|0)==(e|0)|r){j=c[(c[o>>2]|0)+(n<<4)+4>>2]|0;if(j){i=c[j+4>>2]|0;c[i+4>>2]=c[j>>2];if(!(a[i+20>>0]|0)){j=c[i>>2]|0;k=c[j+208>>2]|0;if(!k)k=0;else{if(p)i=0;else i=c[j+176>>2]|0;k=Pn(k,f,i,c[j+180>>2]|0,d[j+9>>0]|0,c[j+152>>2]|0,c[j+200>>2]|0,m,h)|0;b=c[q>>2]|0}}else k=6}else k=0;h=(k|0)==5;l=0;j=0;i=b;g=h?1:g;h=h?0:k}else{l=h;j=m;i=b;h=0}n=n+1|0;b=(h|0)==0;if(!((n|0)<(i|0)&b))break;else{m=j;h=l;b=i}}}else{b=1;g=0;h=0}return (b&(g|0)!=0?5:h)|0}function Th(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=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;w=i;i=i+32|0;if((i|0)>=(j|0))ba();s=w;t=w+20|0;o=w+16|0;n=w+12|0;m=w+8|0;c[o>>2]=f;c[n>>2]=0;c[m>>2]=0;c[e>>2]=0;h=Hc()|0;do if(!h){if(!(1<<(f&7)&70)){c[s>>2]=130207;c[s+4>>2]=10788;Zc(21,13648,s);h=21;break}if((c[2187]|0)!=0&(f&32768|0)==0)l=(f&65536|0)==0?c[2188]|0:1;else l=0;if(!(f&262144)){if(c[2241]|0){f=f|131072;c[o>>2]=f}}else{f=f&-131073;c[o>>2]=f}f=f&-655129;c[o>>2]=f;v=mg(528,0)|0;a:do if(v){bw(v|0,0,528)|0;if(l)c[v+12>>2]=8;c[v+56>>2]=255;c[v+20>>2]=2;p=v+76|0;c[p>>2]=-264537850;q=v+16|0;c[q>>2]=v+456;k=v+88|0;l=11088;h=k+44|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(h|0));c[v+132>>2]=0;a[v+63>>0]=1;a[v+67>>0]=-1;k=8920;r=c[k+4>>2]|0;l=v+40|0;c[l>>2]=c[k>>2];c[l+4>>2]=r;c[v+72>>2]=0;c[v+136>>2]=2147483647;c[v+24>>2]=9437264;l=v+428|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;r=v+308|0;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;Uh(v,11152,1,0,21,0)|0;Uh(v,11152,3,0,21,0)|0;Uh(v,11152,2,0,21,0)|0;Uh(v,13752,1,0,22,0)|0;Uh(v,13760,1,1,21,0)|0;r=v+65|0;if(!(a[r>>0]|0)){l=Zm(l,11152,s)|0;if(!l)l=0;else l=c[l+8>>2]|0;c[v+8>>2]=l;c[v+48>>2]=f;l=Sn(g,d,o,v,n,m)|0;if((l|0)==7)a[r>>0]=1;else if(!l){d=c[n>>2]|0;h=vm(c[v>>2]|0,d,v,(c[q>>2]|0)+4|0,0,c[o>>2]|256)|0;if(!h){f=c[(c[q>>2]|0)+4>>2]|0;c[(c[f+4>>2]|0)+4>>2]=c[f>>2];f=Tn(v,f)|0;c[(c[q>>2]|0)+12>>2]=f;if(!(a[r>>0]|0))a[v+62>>0]=a[f+77>>0]|0;f=mg(84,0)|0;if(!f){a[r>>0]=1;f=0}else{k=f+0|0;h=k+84|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(h|0));l=f+77|0;k=f+8|0;h=k+64|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(h|0));a[l>>0]=1}o=c[q>>2]|0;c[o+28>>2]=f;c[o>>2]=13768;a[o+8>>0]=3;c[o+16>>2]=10728;a[o+24>>0]=1;c[p>>2]=-1607883113;if(a[r>>0]|0){h=v;break}k=v+52|0;c[k>>2]=0;l=v+236|0;f=c[l>>2]|0;do if(f){h=f+8|0;if(!(b[h>>1]&9312)){b[h>>1]=1;break}else{rg(f);break}}while(0);if((yf(v,14632,2)|0)==7)a[r>>0]=1;f=Jf(v)|0;do if(!f){f=c[2656]|0;if(f){b:do if((f|0)>0){k=0;while(1){f=c[(c[2658]|0)+(k<<2)>>2]|0;c[t>>2]=0;if(f){h=Yb[f&63](v,t,13776)|0;f=c[t>>2]|0;if(h)break}else f=0;Sc(f);k=k+1|0;if((k|0)>=(c[2656]|0)){u=40;break b}}c[s>>2]=f;qg(v,h,14592,s);h=c[t>>2]|0}else u=40;while(0);if((u|0)==40){c[t>>2]=0;h=0}Sc(h)}if(Jf(v)|0){h=v;break a}}else{c[k>>2]=f;h=c[l>>2]|0;if(h){f=h+8|0;if(!(b[f>>1]&9312)){b[f>>1]=1;break}else{rg(h);break}}}while(0);Jh(v,0,c[2193]|0,c[2194]|0)|0;c[v+216>>2]=21;c[v+220>>2]=1e3;h=v;break}else if((h|0)==3082)h=7;c[v+52>>2]=h;f=c[v+236>>2]|0;if(!f){h=v;break}h=f+8|0;if(!(b[h>>1]&9312)){b[h>>1]=1;h=v;break}else{rg(f);h=v;break}}d=c[m>>2]|0;c[s>>2]=d;qg(v,l,(d|0)!=0?10344:0,s);Sc(d);d=c[n>>2]|0;h=v}else{d=0;h=v}}else{d=0;h=0}while(0);Sc(d);f=Jf(h)|0;if((f|0)==7){Kh(h,0)|0;h=0}else if(f)c[v+76>>2]=1266094736;c[e>>2]=h;h=f&255}while(0);i=w;return h|0}function Uh(e,f,g,h,k,l){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();m=s;r=g&255;if(!(g<<24>>24==4|g<<24>>24==8))if((r+-1|0)>>>0>2){c[m>>2]=129758;c[m+4>>2]=10788;Zc(21,13648,m);m=21}else{q=r;n=4}else{q=2;n=4}do if((n|0)==4){p=q&255;n=Un(e,p,f,0)|0;if((n|0)!=0?(c[n+12>>2]|0)!=0:0){if(c[e+148>>2]|0){qg(e,5,13680,m);m=5;break}g=c[e+4>>2]|0;if(g)do{o=g+88|0;b[o>>1]=b[o>>1]|8;g=c[g+52>>2]|0}while((g|0)!=0);o=n+4|0;if((d[o>>0]&247|0)==(q|0)){g=Zm(e+428|0,f,m)|0;if(!g)n=0;else n=c[g+8>>2]|0;m=0;do{if((a[n+(m*20|0)+4>>0]|0)==(a[o>>0]|0)){g=c[n+(m*20|0)+16>>2]|0;if(g)_b[g&31](c[n+(m*20|0)+8>>2]|0);c[n+(m*20|0)+12>>2]=0}m=m+1|0}while((m|0)!=3)}}g=Un(e,p,f,1)|0;if(g){c[g+12>>2]=k;c[g+8>>2]=h;c[g+16>>2]=l;a[g+4>>0]=q|r&8;c[e+52>>2]=0;m=c[e+236>>2]|0;if(m){g=m+8|0;if(!(b[g>>1]&9312)){b[g>>1]=1;m=0;break}else{rg(m);m=0;break}}else m=0}else m=7}while(0);i=s;return m|0}function Vh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=d+24|0;m=c[l>>2]&2;n=d+145|0;a[n>>0]=1;k=d+16|0;i=c[k>>2]|0;a[d+62>>0]=a[(c[i+12>>2]|0)+77>>0]|0;h=d+20|0;g=0;while(1){if((g|0)>=(c[h>>2]|0)){g=i;i=6;break}if(!((g|0)==1?1:(b[(c[i+(g<<4)+12>>2]|0)+78>>1]&1)!=0)?(f=Vn(d,g,e)|0,(f|0)!=0):0){i=9;break}i=c[k>>2]|0;g=g+1|0}if((i|0)==6)if((b[(c[g+28>>2]|0)+78>>1]&1)==0?(j=Vn(d,1,e)|0,(j|0)!=0):0){ml(c[(c[k>>2]|0)+28>>2]|0);f=j}else f=0;else if((i|0)==9)rm(d,g);a[n>>0]=0;if(!(f|m))c[l>>2]=c[l>>2]&-3;return f|0}function Wh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;k=a+20|0;a:do if((c[k>>2]|0)>0){l=(d|0)==0;g=a+16|0;h=0;a=0;do{f=(h|0)<2^h;e=c[g>>2]|0;if(!(!l?($c(d,c[e+(f<<4)>>2]|0)|0)!=0:0)){a=Zm((c[e+(f<<4)+12>>2]|0)+8|0,b,m)|0;if(a){a=c[a+8>>2]|0;if(a)break a}else a=0}h=h+1|0}while((h|0)<(c[k>>2]|0))}else a=0;while(0);i=n;return a|0}function Xh(a){a=a|0;if(($c(a,12936)|0)!=0?($c(a,12944)|0)!=0:0)a=($c(a,12952)|0)==0&1;else a=1;return a|0}function Yh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=c[a+20>>2]|0;a:do if((g|0)>0){d=c[a+16>>2]|0;e=(b|0)==0;f=0;while(1){a=c[d+(f<<4)+4>>2]|0;if(a){if(e)break a;if(!($c(b,c[d+(f<<4)>>2]|0)|0))break a}f=f+1|0;if((f|0)>=(g|0)){a=0;break}}}else a=0;while(0);return a|0}function Zh(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:do if(!b)e=0;else{e=e+-1|0;b:do if((c[b>>2]|0)>>>0>4e3){g=b;f=e;while(1){e=g+8|0;h=c[e>>2]|0;if(!h){j=b;break}e=(f>>>0)%(h>>>0)|0;f=g+12+(((f>>>0)/(h>>>0)|0)<<2)|0;b=c[f>>2]|0;if(!b){b=mg(512,0)|0;if(!b){e=b;l=21;break}bw(b|0,0,512)|0;c[b>>2]=h;c[f>>2]=b}if((c[b>>2]|0)>>>0>4e3){g=b;f=e}else break b}if((l|0)==21){c[f>>2]=e;e=7;break a}k=f+1|0;f=(f>>>0)%125|0;i=g+12|0;b=c[g+(f<<2)+12>>2]|0;if(!b){b=c[g+4>>2]|0;if(b>>>0<124){e=g;l=20}}else{do{if((b|0)==(k|0)){e=0;break a}f=f+1|0;f=f>>>0>124?0:f;b=c[g+(f<<2)+12>>2]|0}while((b|0)!=0);b=c[g+4>>2]|0;if(b>>>0<=61){e=g;l=20}}if((l|0)==20){c[g+4>>2]=b+1;c[e+(f<<2)+12>>2]=k;e=0;break a}h=mg(500,0)|0;if(!h){e=7;break a}gw(h|0,i|0,500)|0;bw(i|0,0,500)|0;c[e>>2]=(((c[j>>2]|0)+124|0)>>>0)/125|0;b=0;e=Zh(g,k)|0;do{f=c[h+(b<<2)>>2]|0;if(f)e=Zh(g,f)|0|e;b=b+1|0}while((b|0)!=125);Sc(h);break a}while(0);b=b+12+(e>>>3)|0;a[b>>0]=d[b>>0]|0|1<<(e&7);e=0}while(0);return e|0}function _h(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;a:do if(b){g=e+-1|0;while(1){e=c[b+8>>2]|0;if(!e)break;b=c[b+12+(((g>>>0)/(e>>>0)|0)<<2)>>2]|0;if(!b)break a;else g=(g>>>0)%(e>>>0)|0}if((c[b>>2]|0)>>>0<4001){b=b+12+(g>>>3)|0;a[b>>0]=(d[b>>0]|0)&(1<<(g&7)^255);break}k=b+12|0;gw(f|0,k|0,500)|0;bw(k|0,0,500)|0;k=b+4|0;c[k>>2]=0;h=g+1|0;j=0;do{i=f+(j<<2)|0;e=c[i>>2]|0;if(!((e|0)==0|(e|0)==(h|0))){g=((e+-1|0)>>>0)%125|0;c[k>>2]=(c[k>>2]|0)+1;e=b+(g<<2)+12|0;if(c[e>>2]|0)do{e=g+1|0;g=e>>>0>124?0:e;e=b+(g<<2)+12|0}while((c[e>>2]|0)!=0);c[e>>2]=c[i>>2]}j=j+1|0}while((j|0)!=125)}while(0);return}function $h(a,b){a=a|0;b=b|0;var e=0,f=0;a:do if((a|0)!=0?(e=b+-1|0,e>>>0<(c[a>>2]|0)>>>0):0){while(1){b=c[a+8>>2]|0;if(!b)break;a=c[a+12+(((e>>>0)/(b>>>0)|0)<<2)>>2]|0;if(!a){e=0;break a}else e=(e>>>0)%(b>>>0)|0}if((c[a>>2]|0)>>>0<4001){e=((d[a+12+(e>>>3)>>0]|0)&1<<(e&7)|0)!=0&1;break}f=e+1|0;e=(e>>>0)%125|0;b=c[a+(e<<2)+12>>2]|0;if(b)while(1){if((b|0)==(f|0)){e=1;break a}e=((e+1|0)>>>0)%125|0;b=c[a+(e<<2)+12>>2]|0;if(!b){e=0;break}}else e=0}else e=0;while(0);return e|0}function ai(a){a=a|0;var b=0,d=0;if(a){if(c[a+8>>2]|0){b=a+12|0;d=0;do{ai(c[b+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=125)}Sc(a)}return}function bi(b,c){b=b|0;c=c|0;var f=0;a:do if((c|0)>=2?(f=a[11824+(((d[9328+(d[b>>0]|0)>>0]|0)<<2^c^(d[9328+(d[b+(c+-1)>>0]|0)>>0]|0)*3|0)%127|0)>>0]|0,f<<24>>24!=0):0){f=f&255;while(1){f=f+-1|0;if((d[12080+f>>0]|0|0)==(c|0)?(Bc(11264+(e[12208+(f<<1)>>1]|0)|0,b,c)|0)==0:0)break;f=a[11952+f>>0]|0;if(!(f<<24>>24)){f=27;break a}else f=f&255}f=d[12456+f>>0]|0}else f=27;while(0);return f|0}function ci(a){a=a|0;var b=0,d=0,e=0;c[2174]=a;if((c[2184]|0)>>>0>>0)c[2184]=a;d=c[2264]|0;if((d|0)==0|(c[2235]|0)<(a|0)){b=mg(a,((a|0)<0)<<31>>31)|0;if((c[2186]|0)!=0&(b|0)!=0?(e=hc[c[8744+48>>2]&127](b)|0,e=(c[2170]|0)+e|0,c[2170]=e,e>>>0>(c[2180]|0)>>>0):0)c[2180]=e}else{b=c[2263]|0;c[2263]=c[b>>2];c[2264]=d+-1;a=(c[2169]|0)+1|0;c[2169]=a;if(a>>>0>(c[2179]|0)>>>0)c[2179]=a}return b|0}function di(a){a=a|0;var b=0;do if(a){if((c[2234]|0)>>>0<=a>>>0&(c[2262]|0)>>>0>a>>>0){c[a>>2]=c[2263];c[2263]=a;c[2264]=(c[2264]|0)+1;c[2169]=(c[2169]|0)+-1;break}if(!(c[2186]|0)){_b[c[8744+40>>2]&31](a);break}else{b=hc[c[8744+48>>2]&127](a)|0;c[2170]=(c[2170]|0)-b;c[2166]=(c[2166]|0)-b;c[2175]=(c[2175]|0)+-1;_b[c[8744+40>>2]&31](a);break}}while(0);return}function ei(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();h=l;g=a[b>>0]|0;a:do if(((g&255)+-48|0)>>>0>=10){k=g;g=b;while(1){h=g+1|0;if(!(k<<24>>24))break;k=a[h>>0]|0;g=h}k=g-b&1073741823;g=7-e|0;if((g|0)>0){h=0;while(1){if((d[11248+h>>0]|0|0)==(k|0)?(Bc(11216+(d[11240+h>>0]|0)|0,b,k)|0)==0:0){f=h;break}h=h+1|0;if((h|0)>=(g|0))break a}f=a[11256+f>>0]|0}}else{c[h>>2]=0;zn(b,h)|0;f=c[h>>2]&255}while(0);i=l;return f|0}function fi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=a[b>>0]|0;do if(e<<24>>24==48){f=a[b+1>>0]|0;if(!(f<<24>>24==88|f<<24>>24==120))if(!b){e=0;k=15;break}else{g=e;e=b;k=12;break}e=a[b+2>>0]|0;if(!(a[10368+(e&255)>>0]&8)){g=48;e=b;k=12}else{g=2;while(1){f=g+1|0;if(e<<24>>24!=48)break;e=a[b+f>>0]|0;g=f}if(!(a[10368+(e&255)>>0]&8)){h=b+g|0;i=0;e=0;f=g}else{i=0;h=0;f=g;while(1){i=ew(i|0,h|0,4)|0;j=C;h=e<<24>>24;i=(0-(h>>>6&1)&9)+h&15|i;f=f+1|0;h=b+f|0;e=a[h>>0]|0;if(!(a[10368+(e&255)>>0]&8)){e=j;break}else h=j}}j=d;c[j>>2]=i;c[j+4>>2]=e;if(!(a[h>>0]|0))e=(f-g|0)<17;else e=0;e=e&1^1}}else{g=e;e=b;k=12}while(0);if((k|0)==12){while(1){f=e+1|0;if(!(g<<24>>24))break;g=a[f>>0]|0;e=f;k=12}e=e-b&1073741823;k=15}if((k|0)==15)e=Ql(b,d,e,1)|0;return e|0}function gi(d,f,g,h,k){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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;D=i;i=i+1264|0;if((i|0)>=(j|0))ba();B=D;A=D+152|0;u=D+742|0;v=D+76|0;r=D+228|0;o=h&-256;s=h&16;z=h&8;t=h&4;n=h&1;w=h&2;if((t|0)!=0?(o|0)==524288|(o|0)==2048|(o|0)==16384:0)y=1;else y=0;x=c[12114]|0;if((x|0)!=(nb()|0)?(c[12114]=nb()|0,(Hc()|0)==0):0)a[9064]=0;p=g+0|0;q=p+44|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));x=(o|0)==256;do if(x){a:do if((nc[c[47552+52>>2]&127](f,B)|0)==0?(l=c[12178]|0,(l|0)!=0):0){o=c[B>>2]|0;p=c[B+72>>2]|0;while(1){if((c[l>>2]|0)==(o|0)?(c[l+4>>2]|0)==(p|0):0)break;l=c[l+32>>2]|0;if(!l){C=18;break a}}o=l+28|0;l=c[o>>2]|0;if(l){while(1){q=o;o=l+8|0;p=l;l=c[o>>2]|0;if((c[p+4>>2]|0)==(h|0)){o=q;break}if(!l){C=18;break a}}c[o>>2]=l;r=c[p>>2]|0;l=p}else C=18}else C=18;while(0);if((C|0)==18){l=Pc(12)|0;if(!l){l=7;break}else r=-1}c[g+28>>2]=l;o=t<<4|w;l=(s|0)!=0;if((r|0)<0){t=l;s=l?o|131200:o;l=f;C=23}else{q=r;l=f;C=36}}else{if(!f){l=Wn(514,r)|0;if(!l)l=r;else break}else l=f;C=t<<4|w;s=(s|0)!=0;t=s;s=s?C|131200:C;C=23}while(0);b:do if((C|0)==23){if(!(h&526336)){o=(z|0)==0?0:384;r=0;q=0}else{if(!l)o=0;else{o=l;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;o=o-l&1073741823}do o=o+-1|0;while((a[l+o>>0]|0)!=45);gw(u|0,l|0,o|0)|0;a[u+o>>0]=0;if(nc[c[47552+52>>2]&127](u,v)|0){l=1802;break}o=c[v+12>>2]&511;r=c[v+20>>2]|0;q=c[v+24>>2]|0}p=Xn(l,s,o)|0;do if((p|0)<0){if(!(t|((w|0)==0|(c[(Db()|0)>>2]|0)==21))?(m=Xn(l,s&131200,o)|0,(m|0)>=0):0){h=h&-8|1;n=1;break}c[B>>2]=31186;c[B+4>>2]=10788;Zc(14,14848,B);l=_n(14,47896,l,31186)|0;if(!l){l=0;break b}m=g+28|0;C=70;break b}else m=p;while(0);if(!(h&526336)){q=m;C=36}else{Yb[c[47552+244>>2]&63](m,r,q)|0;q=m;C=36}}while(0);c:do if((C|0)==36){if(k)c[k>>2]=h;r=g+28|0;m=c[r>>2]|0;if(m){c[m>>2]=q;c[m+4>>2]=h}if(z)hc[c[47552+196>>2]&127](l)|0;l=z<<2;l=(n|0)==0?l:l|2;l=x?l:l|128;l=y?l|8:l;z=l|h&64;c[g+12>>2]=q;c[g+4>>2]=d;c[g+32>>2]=f;m=g+18|0;b[m>>1]=z&255;if(bg((z&64|0)!=0?f:0,48496,1)|0)b[m>>1]=e[m>>1]|16;if(!(Wv(c[d+16>>2]|0,1e4)|0))b[m>>1]=e[m>>1]|1;d:do if(!(l&128)){l=nc[c[c[d+20>>2]>>2]&127](f,g)|0;if((l|0)!=48504){if((l|0)!=47472){C=64;break}m=(cw(f|0)|0)+6|0;l=Pc(m)|0;if(l){c[B>>2]=f;Yc(m,l,48584,B)|0;c[g+24>>2]=l;c[g+20>>2]=0;l=47472;break}c[g+24>>2]=0;c[g+20>>2]=0;if((q|0)<=-1){m=r;l=7;C=70;break c}Yn(g,q,30794);m=r;l=7;C=70;break c}do if(!(nc[c[47552+64>>2]&127](c[g+12>>2]|0,A)|0)){l=B;c[l>>2]=0;c[l+4>>2]=0;c[B>>2]=c[A>>2];c[B+4>>2]=c[A+72>>2];l=c[12178]|0;e:do if(!l)C=53;else{while(1){if(!(Vv(B,l,8)|0))break;l=c[l+32>>2]|0;if(!l){C=53;break e}}B=l+16|0;c[B>>2]=(c[B>>2]|0)+1}while(0);if((C|0)==53){m=Pc(40)|0;if(!m){l=7;m=g+20|0;break}p=m+0|0;q=p+40|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));C=c[B+4>>2]|0;l=m;c[l>>2]=c[B>>2];c[l+4>>2]=C;c[m+16>>2]=1;c[m+32>>2]=c[12178];c[m+36>>2]=0;l=c[12178]|0;if(l)c[l+36>>2]=m;c[12178]=m;l=m}c[g+8>>2]=l;l=48504;C=64;break d}else{l=c[(Db()|0)>>2]|0;m=g+20|0;c[m>>2]=l;l=(l|0)==75?22:10}while(0);Yn(g,q,30709);c[m>>2]=0;m=r;C=70;break c}else{l=48376;C=64}while(0);if((C|0)==64)c[g+20>>2]=0;c[g>>2]=l;Zn(g);l=0}while(0);if((C|0)==70)Sc(c[m>>2]|0);i=D;return l|0}function hi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;do if((hc[c[47552+196>>2]&127](b)|0)==-1)if((c[(Db()|0)>>2]|0)==2)a=5898;else a=_n(2570,48032,b,31314)|0;else if(d&1){a=nc[c[47552+208>>2]&127](b,e)|0;if((a|0)==14){a=0;break}else if(a)break;if(!(Cb(c[e>>2]|0)|0))a=0;else a=_n(1290,48488,b,31329)|0;if(hc[c[47552+16>>2]&127](c[e>>2]|0)|0)_n(4106,47856,0,31331)|0}else a=0;while(0);i=f;return a|0}function ii(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+80|0;if((i|0)>=(j|0))ba();f=g;if((d|0)==2)a=4;else if((d|0)==1)a=6;else a=0;a=(nc[c[47552+28>>2]&127](b,a)|0)==0;c[e>>2]=a&1;if((!((d|0)!=0|a^1)?(nc[c[47552+52>>2]&127](b,f)|0)==0:0)?(c[f+36>>2]|0)==0:0)c[e>>2]=0;i=g;return 0}function ji(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;b=e+-1|0;a[f+b>>0]=0;do if((a[d>>0]|0)!=47)if(!(nc[c[47552+40>>2]&127](f,b)|0)){c[g>>2]=31416;c[g+4>>2]=10788;Zc(14,14848,g);b=_n(14,47904,d,31416)|0;break}else{b=cw(f|0)|0;c[g>>2]=d;Yc(e-b|0,f+b|0,48480,g)|0;b=0;break}else{c[g>>2]=d;Yc(e,f,10344,g)|0;b=0}while(0);i=h;return b|0}function ki(a,b){a=a|0;b=b|0;return zb(b|0,258)|0}function li(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;a=Ta()|0;if(a){c[e>>2]=a;Yc(b,d,10344,e)|0}i=f;return}function mi(a,b,c){a=a|0;b=b|0;c=c|0;return Xa(b|0,c|0)|0}function ni(a,b){a=a|0;b=b|0;Ab(b|0)|0;return}function oi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;bw(e|0,0,d|0)|0;c[12114]=nb()|0;b=Xn(48464,0,0)|0;if((b|0)>=0){do if((Yb[c[47552+100>>2]&63](b,e,d)|0)>=0)break;while((c[(Db()|0)>>2]|0)==4);if(hc[c[47552+16>>2]&127](b)|0)_n(4106,47856,0,31521)|0}else{Lb(f|0)|0;d=c[f>>2]|0;a[e>>0]=d;a[e+1>>0]=d>>8;a[e+2>>0]=d>>16;a[e+3>>0]=d>>24;d=e+4|0;b=c[12114]|0;a[d>>0]=b;a[d+1>>0]=b>>8;a[d+2>>0]=b>>16;a[d+3>>0]=b>>24;d=8}i=g;return d|0}function pi(a,b){a=a|0;b=b|0;a=(b+999999|0)/1e6|0;Ib(a|0)|0;return a*1e6|0}function qi(a,b){a=a|0;b=b|0;var d=0,e=0;a=i;i=i+16|0;if((i|0)>=(j|0))ba();e=a;d=e;c[d>>2]=0;c[d+4>>2]=0;d=si(0,e)|0;h[b>>3]=(+((c[e>>2]|0)>>>0)+4294967296.0*+(c[e+4>>2]|0))/864.0e5;i=a;return d|0}function ri(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function si(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();a=d;if(!(Ob(a|0,0)|0)){f=c[a>>2]|0;f=ow(f|0,((f|0)<0)<<31>>31|0,1e3,0)|0;f=fw(f|0,C|0,1045635584,49096)|0;e=(c[a+4>>2]|0)/1e3|0;e=fw(f|0,C|0,e|0,((e|0)<0)<<31>>31|0)|0;a=b;c[a>>2]=e;c[a+4>>2]=C;a=0}else a=1;i=d;return a|0}function ti(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(!b){a=0;do{b=c[47560+(a*12|0)>>2]|0;if(b)c[47556+(a*12|0)>>2]=b;a=a+1|0}while((a|0)!=25);b=0}else{a=0;while(1){if(!(Wv(b,c[47552+(a*12|0)>>2]|0)|0)){e=a;break}a=a+1|0;if(a>>>0>=25){b=12;break a}}b=47560+(e*12|0)|0;a=c[b>>2]|0;if(!a){a=c[47556+(e*12|0)>>2]|0;c[b>>2]=a}c[47556+(e*12|0)>>2]=(d|0)==0?a:d;b=0}while(0);return b|0}function ui(a,b){a=a|0;b=b|0;var d=0;a=0;while(1){if(!(Wv(b,c[47552+(a*12|0)>>2]|0)|0)){d=4;break}a=a+1|0;if(a>>>0>=25){a=0;break}}if((d|0)==4)a=c[47556+(a*12|0)>>2]|0;return a|0}function vi(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if(!b)a=-1;else{d=0;while(1){a=d+1|0;if(!(Wv(b,c[47552+(d*12|0)>>2]|0)|0)){a=d;break a}if((a|0)<24)d=a;else break}}while(0);while(1){a=a+1|0;if((a|0)>=25){a=0;break}if(c[47556+(a*12|0)>>2]|0){e=6;break}}if((e|0)==6)a=c[47552+(a*12|0)>>2]|0;return a|0}function wi(a,b){a=a|0;b=b|0;return 48504}function xi(a,b){a=a|0;b=b|0;return 48376}function yi(a,b){a=a|0;b=b|0;return 47472}function zi(a){a=a|0;var b=0,d=0;b=c[a+4>>2]|0;if(b)do{d=b;b=c[b>>2]|0;Sc(d)}while((b|0)!=0);b=a+0|0;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));c[a>>2]=14696;return 0}function Ai(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=a+24|0;k=l;if(((c[k>>2]|0)!=(e|0)?1:(c[k+4>>2]|0)!=(f|0))|(e|0)==0&(f|0)==0){g=c[a+4>>2]|0;if(!((g|0)==0|((f|0)<0|(f|0)==0&e>>>0<1020))){h=1020;i=0;do{h=fw(h|0,i|0,1020,0)|0;i=C;g=c[g>>2]|0}while(!((g|0)==0|((i|0)>(f|0)|(i|0)==(f|0)&h>>>0>e>>>0)))}}else g=c[a+32>>2]|0;j=nw(e|0,f|0,1020,0)|0;k=d;h=b;while(1){b=1020-j|0;i=(k|0)<(b|0)?k:b;gw(h|0,g+j+4|0,i|0)|0;k=k-b|0;if((k|0)<=-1)break;g=c[g>>2]|0;if(!((g|0)!=0&(k|0)>0))break;else{j=0;h=h+i|0}}f=fw(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0;d=l;c[d>>2]=f;c[d+4>>2]=C;c[a+32>>2]=g;return 0}function Bi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a:do if((d|0)>0){i=a+8|0;j=a+16|0;h=a+4|0;e=i;f=c[e>>2]|0;e=c[e+4>>2]|0;while(1){a=c[j>>2]|0;e=nw(f|0,e|0,1020,0)|0;g=1020-e|0;g=(d|0)<(g|0)?d:g;if(!e){f=Pc(1024)|0;if(!f){e=3082;break a}c[f>>2]=0;if(!a){c[h>>2]=f;a=f}else{c[a>>2]=f;a=f}c[j>>2]=a}gw(a+e+4|0,b|0,g|0)|0;d=d-g|0;f=i;f=fw(c[f>>2]|0,c[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;e=C;a=i;c[a>>2]=f;c[a+4>>2]=e;if((d|0)<=0){e=0;break}else b=b+g|0}}else e=0;while(0);return e|0}function Ci(a,b,d){a=a|0;b=b|0;d=d|0;b=c[a+4>>2]|0;if(b)do{d=b;b=c[b>>2]|0;Sc(d)}while((b|0)!=0);d=a+0|0;b=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(b|0));c[a>>2]=14696;return 0}function Di(a,b){a=a|0;b=b|0;return 0}function Ei(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+8|0;d=c[e+4>>2]|0;a=b;c[a>>2]=c[e>>2];c[a+4>>2]=d;return 0}function Fi(a){a=a|0;var b=0;a=12584|0;b=a+68|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));if(c[2187]|0){c[3146]=8;c[3159]=8}c[3149]=10;c[3153]=1;return 0}function Gi(a){a=a|0;var b=0;a=12584|0;b=a+68|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Hi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=mg(48,0)|0;if(f){g=f+0|0;h=g+48|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));c[f>>2]=12584;c[f+4>>2]=b;c[f+8>>2]=d;e=(e|0)!=0;c[f+12>>2]=e&1;$n(f);if(e){c[f+16>>2]=10;e=c[3148]|0;c[3148]=e+10;c[3149]=(c[3147]|0)+10+(-10-e)}if(!(c[f+40>>2]|0)){Oi(f);f=0}}else f=0;return f|0}function Ii(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(c[a+12>>2]|0){d=c[a>>2]|0;e=a+20|0;g=d+4|0;f=(c[g>>2]|0)+(b-(c[e>>2]|0))|0;c[g>>2]=f;c[d+12>>2]=f+10-(c[d+8>>2]|0);c[e>>2]=b;c[a+24>>2]=((b*9|0)>>>0)/10|0;ao(d)}return}function Ji(a){a=a|0;return c[a+36>>2]|0}function Ki(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[(c[b+44>>2]|0)+(((d>>>0)%((c[b+40>>2]|0)>>>0)|0)<<2)>>2]|0;a:do if(f){while(1){if((c[f+8>>2]|0)==(d|0))break;f=c[f+16>>2]|0;if(!f){g=6;break a}}if(!(a[f+12>>0]|0))bo(f)}else g=6;while(0);if((g|0)==6)if(!e)f=0;else f=co(b,d,e)|0;return f|0}function Li(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;if((e|0)==0?(c[g+16>>2]|0)>>>0<=(c[g+4>>2]|0)>>>0:0){e=g+20|0;f=c[e>>2]|0;if(!f)c[g+24>>2]=d;else{c[f+28>>2]=d;c[d+24>>2]=f}c[e>>2]=d;f=b+32|0;c[f>>2]=(c[f>>2]|0)+1;a[d+12>>0]=0}else{g=c[d+20>>2]|0;e=(c[g+44>>2]|0)+((((c[d+8>>2]|0)>>>0)%((c[g+40>>2]|0)>>>0)|0)<<2)|0;while(1){b=c[e>>2]|0;f=b+16|0;if((b|0)==(d|0))break;else e=f}c[e>>2]=c[f>>2];f=g+36|0;c[f>>2]=(c[f>>2]|0)+-1;eo(d)}return}function Mi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=c[a+40>>2]|0;h=a+44|0;d=(c[h>>2]|0)+(((d>>>0)%(g>>>0)|0)<<2)|0;while(1){f=c[d>>2]|0;if((f|0)==(b|0))break;else d=f+16|0}f=b+16|0;c[d>>2]=c[f>>2];c[b+8>>2]=e;d=(c[h>>2]|0)+(((e>>>0)%(g>>>0)|0)<<2)|0;c[f>>2]=c[d>>2];c[d>>2]=b;d=a+28|0;if((c[d>>2]|0)>>>0>>0)c[d>>2]=e;return}function Ni(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;if((c[d>>2]|0)>>>0>=b>>>0){fo(a,b);c[d>>2]=b+-1}return}function Oi(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;fo(a,0);f=b+4|0;e=(c[f>>2]|0)-(c[a+20>>2]|0)|0;c[f>>2]=e;f=b+8|0;d=(c[f>>2]|0)-(c[a+16>>2]|0)|0;c[f>>2]=d;c[b+12>>2]=e+10-d;ao(b);Sc(c[a+44>>2]|0);Sc(a);return}function Pi(a){a=a|0;var b=0,d=0;if(c[a+12>>2]|0){d=c[a>>2]|0;a=d+4|0;b=c[a>>2]|0;c[a>>2]=0;ao(d);c[a>>2]=b}return}function Qi(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;b=a+7&-8;a=Sv(b+8|0)|0;if(!a){c[d>>2]=b;Zc(7,16568,d)}else{d=a;c[d>>2]=b;c[d+4>>2]=((b|0)<0)<<31>>31;a=a+8|0}i=e;return a|0}function Ri(a){a=a|0;Tv(a+-8|0);return}function Si(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;e=a+-8|0;d=Uv(e,b+8|0)|0;if(!d){if(!a)e=0;else e=c[e>>2]|0;c[f>>2]=e;c[f+4>>2]=b;Zc(7,16528,f)}else{e=d;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;d=d+8|0}i=g;return d|0}function Ti(a){a=a|0;if(!a)a=0;else a=c[a+-8>>2]|0;return a|0}function Ui(a){a=a|0;return a+7&-8|0}function Vi(a){a=a|0;return 0}function Wi(a){a=a|0;return}function Xi(b,f,g){b=b|0;f=f|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;i=c[g>>2]|0;do if((-1431655766>>>(e[i+8>>1]&31)&1|0)==0?(h=Og(i,1)|0,(h|0)!=0):0){i=Pg(c[g>>2]|0,1)|0;if((f|0)!=1){o=Og(c[g+4>>2]|0,1)|0;if(!o)break;f=a[o>>0]|0;if(f<<24>>24){g=0;j=o;while(1){k=j+1|0;if((f&255)>191)while(1){f=a[k>>0]|0;if((f&-64)<<24>>24==-128){n=k;k=j+2|0;j=n}else{j=k;break}}else{f=a[k>>0]|0;j=k}k=g+1|0;if(!(f<<24>>24)){f=k;break}else g=k}if((g|0)>-1){m=ow(f|0,((f|0)<0)<<31>>31|0,5,0)|0;m=go(b,m,C)|0;if(!m)break;l=m+(f<<2)|0;if(a[o>>0]|0){f=o;g=0;while(1){c[m+(g<<2)>>2]=f;k=f+1|0;if((d[f>>0]|0)>191){j=f;while(1)if((a[k>>0]&-64)<<24>>24==-128){n=k;k=j+2|0;j=n}else break}a[l+g>>0]=k-f;j=g+1|0;if(!(a[k>>0]|0))break;else{f=k;g=j}}if((g|0)>-1){n=j;p=17}}}}}else{l=20360;m=20368;n=1;o=0;p=17}if((p|0)==17){f=c[(c[b+4>>2]|0)+4>>2]|0;a:do if((f&1|0)!=0&(i|0)>0){g=(n|0)>0;do{if(g)j=0;else{p=24;break a}while(1){k=d[l+j>>0]|0;if((i|0)>=(k|0)?(Vv(h,c[m+(j<<2)>>2]|0,k)|0)==0:0)break;j=j+1|0;if((j|0)>=(n|0)){p=24;break a}}h=h+k|0;i=i-k|0}while((i|0)>0)}else p=24;while(0);b:do if((p|0)==24)if((f&2|0)!=0&(i|0)>0){g=(n|0)>0;do{if(g)j=0;else break b;while(1){k=d[l+j>>0]|0;if((i|0)>=(k|0)?(q=i-k|0,(Vv(h+q|0,c[m+(j<<2)>>2]|0,k)|0)==0):0){i=q;break}j=j+1|0;if((j|0)>=(n|0))break b}}while((i|0)>0)}while(0);if(o)Sc(m)}Sg(b,h,i,1,-1)}while(0);return}function Yi(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=((c[(c[a+4>>2]|0)+4>>2]|0)!=0)<<31>>31;i=c[(c[(c[a+12>>2]|0)+4>>2]|0)+(((c[a+16>>2]|0)+-1|0)*20|0)+16>>2]|0;f=c[d>>2]|0;a:do if(!(-1431655766>>>((e[f+8>>1]|0)&31)&1)){if((b|0)>1){h=1;f=0;do{g=c[d+(h<<2)>>2]|0;if(-1431655766>>>((e[g+8>>1]|0)&31)&1)break a;g=((dm(c[d+(f<<2)>>2]|0,g,i)|0)^j|0)>-1;f=g?h:f;h=h+1|0}while((h|0)<(b|0));f=c[d+(f<<2)>>2]|0}Wg(c[a>>2]|0,f)|0}while(0);return}function Zi(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0;i=c[g>>2]|0;f=c[d+8>>2]|0;if(!(b[f+8>>1]&8192))f=hh(d,40)|0;else f=c[f+16>>2]|0;do if(f){h=(b[f+8>>1]|0)!=0;if(-1431655766>>>(e[(c[g>>2]|0)+8>>1]&31)&1){if(!h)break;a[d+24>>0]=1;break}if(!h){c[f+32>>2]=c[(c[d>>2]|0)+32>>2];Wg(f,i)|0;break}h=(c[(c[d+4>>2]|0)+4>>2]|0)!=0;g=dm(f,i,c[(c[(c[d+12>>2]|0)+4>>2]|0)+(((c[d+16>>2]|0)+-1|0)*20|0)+16>>2]|0)|0;if(!(h&(g|0)<0)?!((g|0)>0&(h^1)):0){a[d+24>>0]=1;break}Wg(f,i)|0}while(0);return}function _i(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=hh(a,0)|0;else d=c[d+16>>2]|0;do if(d){e=d+8|0;if(!((b[e>>1]|0)!=0?(Wg(c[a>>2]|0,d)|0,(b[e>>1]&9312)!=0):0))f=7;if((f|0)==7?(c[d+24>>2]|0)==0:0)break;Mg(d)}while(0);return}function $i(a,b,f){a=a|0;b=b|0;f=f|0;b=d[10064+((e[(c[f>>2]|0)+8>>1]|0)&31)>>0]|0;if((b|0)==2)b=20336;else if((b|0)==4)b=20344;else if((b|0)==1)b=20320;else if((b|0)==3)b=20328;else b=20352;Sg(a,b,-1,1,0);return}function aj(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;g=c[h>>2]|0;h=d[10064+((e[g+8>>1]|0)&31)>>0]|0;do if((h|0)==2|(h|0)==1|(h|0)==4){j=Pg(g,1)|0;i=c[f>>2]|0;g=((j|0)<0)<<31>>31;h=i+8|0;if(!(b[h>>1]&9312)){c[i>>2]=j;c[i+4>>2]=g;b[h>>1]=4;break}else{Vg(i,j,g);break}}else if((h|0)==3){i=Og(g,1)|0;if(i){g=a[i>>0]|0;if(!(g<<24>>24)){j=0;i=0}else{h=g;g=0;do{g=g+1|0;k=i+1|0;if((h&255)>191){j=i;i=k;while(1){h=a[i>>0]|0;if((h&-64)<<24>>24==-128){h=i;i=j+2|0;j=h}else break}}else{h=a[k>>0]|0;i=k}}while(h<<24>>24!=0);j=g;i=((g|0)<0)<<31>>31}g=c[f>>2]|0;h=g+8|0;if(!(b[h>>1]&9312)){c[g>>2]=j;c[g+4>>2]=i;b[h>>1]=4;break}else{Vg(g,j,i);break}}}else{h=c[f>>2]|0;g=h+8|0;if(!(b[g>>1]&9312)){b[g>>1]=1;break}else{rg(h);break}}while(0);return}function bj(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=c[f>>2]|0;h=b[g+8>>1]|0;i=f+4|0;e=b[(c[i>>2]|0)+8>>1]|0;do if(!((-1431655766>>>(e&31)|-1431655766>>>(h&31))&1)){j=Pg(g,1)|0;l=Pg(c[i>>2]|0,1)|0;f=c[f>>2]|0;if(!((e|h)&15)){e=ld(f)|0;f=0;k=ld(c[i>>2]|0)|0}else{e=Og(f,1)|0;f=1;k=Og(c[i>>2]|0,1)|0}a:do if((l|0)>(j|0)){e=1;g=1}else{g=1;h=j;while(1){if(!(Vv(e,k,l)|0)){e=0;break a}g=g+1|0;i=(f|0)==0;do{h=h+-1|0;e=e+1|0;if(i){f=0;break}}while((a[e>>0]&-64)<<24>>24==-128);if((l|0)>(h|0)){e=1;break}}}while(0);h=c[d>>2]|0;f=e?0:g;e=e?0:((g|0)<0)<<31>>31;g=h+8|0;if(!(b[g>>1]&9312)){c[h>>2]=f;c[h+4>>2]=e;b[g>>1]=4;break}else{Vg(h,f,e);break}}while(0);return}function cj(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=c[g+4>>2]|0;do if(!(-1431655766>>>((e[h+8>>1]|0)&31)&1)){n=(f|0)==3;if(n?(-1431655766>>>((e[(c[g+8>>2]|0)+8>>1]|0)&31)&1|0)!=0:0)break;p=b[(c[g>>2]|0)+8>>1]|0;k=Rg(h)|0;l=((k|0)<0)<<31>>31;p=(p&15)==0;i=c[g>>2]|0;if(p){i=Pg(i,1)|0;j=ld(c[g>>2]|0)|0;if(!j)break;else o=i}else{j=Og(i,1)|0;if(!j)break;if((k|0)<0?(m=a[j>>0]|0,m<<24>>24!=0):0){i=0;h=j;do{f=h+1|0;if((m&255)>191)while(1){m=a[f>>0]|0;if((m&-64)<<24>>24==-128){o=f;f=h+2|0;h=o}else{h=f;break}}else{m=a[f>>0]|0;h=f}i=i+1|0}while(m<<24>>24!=0);o=i}else o=0}if(n){n=Rg(c[g+8>>2]|0)|0;f=((n|0)<0)<<31>>31;g=(n|0)<0;h=$v(0,0,n|0,f|0)|0;h=g?h:n;f=g?C:f;n=n>>>31}else{f=c[(c[(c[d>>2]|0)+32>>2]|0)+88>>2]|0;h=f;f=((f|0)<0)<<31>>31;n=0}do if((k|0)<0){k=fw(o|0,((o|0)<0)<<31>>31|0,k|0,l|0)|0;l=C;if((l|0)<0){h=fw(h|0,f|0,k|0,l|0)|0;f=C;g=(f|0)<0;k=0;l=0;h=g?0:h;f=g?0:f}}else if((k|0)>0){k=fw(k|0,l|0,-1,-1)|0;l=C;break}else{g=((f|0)>0|(f|0)==0&h>>>0>0)<<31>>31;h=fw(g|0,((g|0)<0)<<31>>31|0,h|0,f|0)|0;f=C;break}while(0);if(!n){n=k;m=l}else{n=$v(k|0,l|0,h|0,f|0)|0;m=C;g=(m|0)<0;n=g?0:n;m=g?0:m;h=g?k:h;f=g?l:f}if(p){g=fw(h|0,f|0,n|0,m|0)|0;l=C;i=((o|0)<0)<<31>>31;if((l|0)>(i|0)|(l|0)==(i|0)&g>>>0>o>>>0){h=$v(o|0,i|0,n|0,m|0)|0;f=C;g=(f|0)<0;h=g?0:h;f=g?0:f}xd(d,j+n|0,h,f,-1);break}i=a[j>>0]|0;if(((n|0)!=0|(m|0)!=0)&i<<24>>24!=0)do{l=j+1|0;if((i&255)>191){k=j;j=l;while(1){i=a[j>>0]|0;if((i&-64)<<24>>24==-128){g=j;j=k+2|0;k=g}else break}}else{i=a[l>>0]|0;j=l}n=fw(n|0,m|0,-1,-1)|0;m=C}while(((n|0)!=0|(m|0)!=0)&i<<24>>24!=0);if(i<<24>>24!=0&((h|0)!=0|(f|0)!=0)){m=f;f=j;do{k=f+1|0;if((i&255)>191)while(1){i=a[k>>0]|0;if((i&-64)<<24>>24==-128){g=k;k=f+2|0;f=g}else{f=k;break}}else{i=a[k>>0]|0;f=k}h=fw(h|0,m|0,-1,-1)|0;m=C}while(i<<24>>24!=0&((h|0)!=0|(m|0)!=0))}else f=j;g=f-j|0;Fd(d,j,g,((g|0)<0)<<31>>31,-1,1)}while(0);return}function dj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+48|0;if((i|0)>=(j|0))ba();h=l;k=l+32|0;g=l+4|0;if((d|0)>0?(f=Og(c[e>>2]|0,1)|0,(f|0)!=0):0){c[k>>2]=d+-1;c[k+4>>2]=0;c[k+8>>2]=e+4;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=1e9;a[g+24>>0]=1;a[g+25>>0]=0;c[g>>2]=c[(c[b>>2]|0)+32>>2];c[h>>2]=k;An(g,2,f,h);f=c[g+12>>2]|0;Sg(b,pg(g)|0,f,1,75)}i=l;return}function ej(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();e=h;f=Og(c[f>>2]|0,1)|0;c[e>>2]=f;do if((f|0)!=0?(a[f>>0]|0)!=0:0){g=In(e)|0;e=c[d>>2]|0;d=((g|0)<0)<<31>>31;f=e+8|0;if(!(b[f>>1]&9312)){c[e>>2]=g;c[e+4>>2]=d;b[f>>1]=4;break}else{Vg(e,g,d);break}}while(0);i=h;return}function fj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=Pc(d<<2|1)|0;if(!i)Nd(b);else{if((d|0)>0){h=0;f=i;do{g=Rg(c[e+(h<<2)>>2]|0)|0;j=C;g=j>>>0>0|(j|0)==0&g>>>0>1114111?65533:g&2097151;do if(g>>>0>=128){if(g>>>0<2048){a[f>>0]=g>>>6&31|192;a[f+1>>0]=g&63|128;f=f+2|0;break}if(g>>>0<65536){a[f>>0]=g>>>12&15|224;a[f+1>>0]=g>>>6&63|128;a[f+2>>0]=g&63|128;f=f+3|0;break}else{a[f>>0]=g>>>18|240;a[f+1>>0]=g>>>12&63|128;a[f+2>>0]=g>>>6&63|128;a[f+3>>0]=g&63|128;f=f+4|0;break}}else{a[f>>0]=g;f=f+1|0}while(0);h=h+1|0}while((h|0)!=(d|0))}else f=i;f=f-i|0;Fd(b,i,f,((f|0)<0)<<31>>31,1,1)}return}function gj(f,g,h){f=f|0;g=g|0;h=h|0;var i=0.0,j=0,k=0;g=c[h>>2]|0;h=d[10064+((e[g+8>>1]|0)&31)>>0]|0;a:do if((h|0)==5){h=c[f>>2]|0;g=h+8|0;if(!(b[g>>1]&9312)){b[g>>1]=1;break}else{rg(h);break}}else if((h|0)==1){g=Rg(g)|0;j=C;do if((j|0)<0)if((g|0)==0&(j|0)==-2147483648){c[f+20>>2]=1;a[f+25>>0]=1;Tg(c[f>>2]|0,20248,-1,1,-1)|0;break a}else{g=$v(0,0,g|0,j|0)|0;k=C;break}else k=j;while(0);h=c[f>>2]|0;j=h+8|0;if(!(b[j>>1]&9312)){c[h>>2]=g;c[h+4>>2]=k;b[j>>1]=4;break}else{Vg(h,g,k);break}}else{i=+Qg(g);if(i<0.0)i=-i;Ug(c[f>>2]|0,i)}while(0);return}function hj(b,d,f){b=b|0;d=d|0;f=f|0;var g=0.0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;if((i|0)>=(j|0))ba();o=q+8|0;p=q;if((d|0)==2){d=c[f+4>>2]|0;if(!(-1431655766>>>(e[d+8>>1]&31)&1)){n=Rg(d)|0;n=(n|0)>30?30:n;n=(n|0)<0?0:n;m=4}}else{n=0;m=4}a:do if((m|0)==4?(l=c[f>>2]|0,(-1431655766>>>(e[l+8>>1]&31)&1|0)==0):0){g=+Qg(l);h[p>>3]=g;d=(n|0)==0;do if(d&g>=0.0&g<9223372036854775808.0){g=g+.5;g=+(~~g>>>0>>>0)+4294967296.0*+((+N(g)>=1.0?(g>0.0?~~+$(+M(g/4294967296.0),4294967295.0)>>>0:~~+Z((g-+(~~g>>>0))/4294967296.0)>>>0):0)|0);h[p>>3]=g}else{if(d&g<0.0&g>-9223372036854775808.0){g=.5-g;g=-(+(~~g>>>0>>>0)+4294967296.0*+((+N(g)>=1.0?(g>0.0?~~+$(+M(g/4294967296.0),4294967295.0)>>>0:~~+Z((g-+(~~g>>>0))/4294967296.0)>>>0):0)|0));h[p>>3]=g;break}c[o>>2]=n;d=o+4|0;h[k>>3]=g;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];d=Wc(20312,o)|0;if(!d){Nd(b);break a}else l=d;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;Pl(d,p,l-d&1073741823,1)|0;Sc(d);g=+h[p>>3]}while(0);Ug(c[b>>2]|0,g)}while(0);i=q;return}function ij(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=Og(c[f>>2]|0,1)|0;e=Pg(c[f>>2]|0,1)|0;if((g|0)!=0?(h=fw(e|0,((e|0)<0)<<31>>31|0,1,0)|0,h=go(b,h,C)|0,(h|0)!=0):0){if((e|0)>0){f=0;do{i=d[g+f>>0]|0;a[h+f>>0]=((d[10368+i>>0]|0|223)^32)&i;f=f+1|0}while((f|0)!=(e|0))}Sg(b,h,e,1,1)}return}function jj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=Og(c[f>>2]|0,1)|0;e=Pg(c[f>>2]|0,1)|0;if((g|0)!=0?(h=fw(e|0,((e|0)<0)<<31>>31|0,1,0)|0,h=go(b,h,C)|0,(h|0)!=0):0){if((e|0)>0){f=0;do{a[h+f>>0]=a[9328+(d[g+f>>0]|0)>>0]|0;f=f+1|0}while((f|0)!=(e|0))}Sg(b,h,e,1,1)}return}function kj(a,b,c){a=a|0;b=b|0;c=c|0;Sg(a,8632,-1,1,0);return}function lj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;e=ld(c[f>>2]|0)|0;i=Pg(c[f>>2]|0,1)|0;j=ew(i|0,((i|0)<0)<<31>>31|0,1)|0;j=go(b,j|1,C)|0;if(j){if((i|0)>0){g=i<<1;h=0;f=j;while(1){k=d[e>>0]|0;a[f>>0]=a[20288+(k>>>4)>>0]|0;a[f+1>>0]=a[20288+(k&15)>>0]|0;h=h+1|0;if((h|0)==(i|0))break;else{e=e+1|0;f=f+2|0}}f=j+g|0}else f=j;a[f>>0]=0;Sg(b,j,i<<1,1,1)}return}function mj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();d=h;_c(8,d);f=d;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)<0){g=$v(0,0,e|0,f&2147483647|0)|0;f=C;c[d>>2]=g;c[d+4>>2]=f}else g=e;e=c[a>>2]|0;d=e+8|0;if(!(b[d>>1]&9312)){c[e>>2]=g;c[e+4>>2]=f;b[d>>1]=4}else Vg(e,g,f);i=h;return}function nj(a,b,d){a=a|0;b=b|0;d=d|0;d=Rg(c[d>>2]|0)|0;d=(d|0)<1?1:d;b=go(a,d,((d|0)<0)<<31>>31)|0;if(b){_c(d,b);Sg(a,b,d,0,1)}return}function oj(a,b,d){a=a|0;b=b|0;d=d|0;if(dm(c[d>>2]|0,c[d+4>>2]|0,c[(c[(c[a+12>>2]|0)+4>>2]|0)+(((c[a+16>>2]|0)+-1|0)*20|0)+16>>2]|0)|0)Wg(c[a>>2]|0,c[d>>2]|0)|0;return}function pj(a,b,c){a=a|0;b=b|0;c=c|0;Sg(a,10768,-1,1,0);return}function qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=i;i=i+16|0;if((i|0)>=(j|0))ba();a=b;e=Rg(c[d>>2]|0)|0;c[a>>2]=Og(c[d+4>>2]|0,1)|0;Zc(e,10344,a);i=b;return}function rj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=Og(c[e>>2]|0,1)|0;do if(d){f=Ac(d)|0;e=c[a>>2]|0;d=((f|0)<0)<<31>>31;a=e+8|0;if(!(b[a>>1]&9312)){c[e>>2]=f;c[e+4>>2]=d;b[a>>1]=4;break}else{Vg(e,f,d);break}}while(0);return}function sj(a,b,d){a=a|0;b=b|0;d=d|0;b=Rg(c[d>>2]|0)|0;if(b>>>0<4)b=c[8648+(b<<2)>>2]|0;else b=0;Sg(a,b,-1,1,0);return}function tj(b,f,g){b=b|0;f=f|0;g=g|0;var l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+80|0;if((i|0)>=(j|0))ba();f=s+8|0;l=s;p=s+16|0;o=c[g>>2]|0;n=d[10064+(e[o+8>>1]&31)>>0]|0;if((n|0)==3){r=Og(o,1)|0;if(r){f=0;l=0;n=0;while(1){o=a[r+n>>0]|0;if(o<<24>>24==39){o=fw(f|0,l|0,1,0)|0;l=C}else if(!(o<<24>>24)){o=l;break}else o=f;f=o;n=n+1|0}q=fw(f|0,o|0,3,0)|0;q=fw(q|0,C|0,n|0,((n|0)<0)<<31>>31|0)|0;q=go(b,q,C)|0;if(q){a[q>>0]=39;l=a[r>>0]|0;f=q+1|0;if(!(l<<24>>24))n=2;else{p=r;n=2;o=0;g=1;do{a[f>>0]=l;if((a[p>>0]|0)==39){a[q+n>>0]=39;g=g+2|0}else g=n;o=o+1|0;p=r+o|0;l=a[p>>0]|0;n=g+1|0;f=q+g|0}while(l<<24>>24!=0)}a[f>>0]=39;a[q+n>>0]=0;Sg(b,q,n,1,1)}}}else if((n|0)==1)Wg(c[b>>2]|0,o)|0;else if((n|0)==2){m=+Qg(o);h[k>>3]=m;c[f>>2]=c[k>>2];c[f+4>>2]=c[k+4>>2];Yc(50,p,20272,f)|0;Pl(p,l,20,1)|0;if(m!=+h[l>>3]){h[k>>3]=m;c[f>>2]=c[k>>2];c[f+4>>2]=c[k+4>>2];Yc(50,p,20280,f)|0}Sg(b,p,-1,1,-1)}else if((n|0)==4){o=ld(o)|0;f=Pg(c[g>>2]|0,1)|0;l=ew(f|0,((f|0)<0)<<31>>31|0,1)|0;l=fw(l|0,C|0,4,0)|0;l=go(b,l,C)|0;if(l){if((f|0)>0){n=0;do{g=o+n|0;p=n<<1;a[l+(p+2)>>0]=a[20288+((d[g>>0]|0)>>>4)>>0]|0;a[l+(p+3)>>0]=a[20288+(d[g>>0]&15)>>0]|0;n=n+1|0}while((n|0)!=(f|0))}f=f<<1;a[l+(f+2)>>0]=39;a[l+(f+3)>>0]=0;a[l>>0]=88;a[l+1>>0]=39;Sg(b,l,-1,1,-1);Sc(l)}}else Sg(b,20304,4,1,0);i=s;return}function uj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[a>>2]|0;f=(c[a+32>>2]|0)+32|0;d=c[f>>2]|0;f=c[f+4>>2]|0;e=a+8|0;if(!(b[e>>1]&9312)){c[a>>2]=d;c[a+4>>2]=f;b[e>>1]=4}else Vg(a,d,f);return}function vj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[a>>2]|0;e=c[(c[a+32>>2]|0)+80>>2]|0;d=((e|0)<0)<<31>>31;f=a+8|0;if(!(b[f>>1]&9312)){c[a>>2]=e;c[a+4>>2]=d;b[f>>1]=4}else Vg(a,e,d);return}function wj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[a>>2]|0;e=c[(c[a+32>>2]|0)+84>>2]|0;d=((e|0)<0)<<31>>31;f=a+8|0;if(!(b[f>>1]&9312)){c[a>>2]=e;c[a+4>>2]=d;b[f>>1]=4}else Vg(a,e,d);return}function xj(b,d,e){b=b|0;d=d|0;e=e|0;var 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;t=Og(c[e>>2]|0,1)|0;a:do if((t|0)!=0?(u=Pg(c[e>>2]|0,1)|0,g=e+4|0,s=Og(c[g>>2]|0,1)|0,(s|0)!=0):0){if(!(a[s>>0]|0)){Wg(c[b>>2]|0,c[e>>2]|0)|0;break}q=Pg(c[g>>2]|0,1)|0;g=e+8|0;p=Og(c[g>>2]|0,1)|0;if((p|0)!=0?(r=Pg(c[g>>2]|0,1)|0,h=u+1|0,i=((h|0)<0)<<31>>31,f=go(b,h,i)|0,(f|0)!=0):0){l=u-q|0;b:do if((l|0)>=0){m=r-q|0;n=((m|0)<0)<<31>>31;o=q+-1|0;e=0;k=0;while(1){g=t+e|0;d=a[g>>0]|0;if(d<<24>>24==(a[s>>0]|0)?(Vv(g,s,q)|0)==0:0){d=c[b>>2]|0;j=c[d+32>>2]|0;h=fw(h|0,i|0,m|0,n|0)|0;i=C;g=fw(h|0,i|0,-1,-1)|0;w=C;j=c[j+88>>2]|0;v=((j|0)<0)<<31>>31;if((w|0)>(v|0)|(w|0)==(v|0)&g>>>0>j>>>0){g=13;break}j=Tc(f,h)|0;if(!j){g=15;break}gw(j+k|0,p|0,r|0)|0;g=o+e|0;d=k+r|0;f=j}else{a[f+k>>0]=d;g=e;d=k+1|0}e=g+1|0;if((g|0)<(l|0))k=d;else break b}if((g|0)==13){c[b+20>>2]=18;a[b+25>>0]=1;Tg(d,10096,-1,1,0)|0;Sc(f);break a}else if((g|0)==15){Nd(b);Sc(f);break a}}else{e=0;d=0}while(0);m=u-e|0;gw(f+d|0,t+e|0,m|0)|0;m=d+m|0;a[f+m>>0]=0;Sg(b,f,m,1,1)}}while(0);return}function yj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[(c[b>>2]|0)+32>>2]|0;d=Rg(c[e>>2]|0)|0;g=C;e=c[f+88>>2]|0;f=((e|0)<0)<<31>>31;if((g|0)>(f|0)|(g|0)==(f|0)&d>>>0>e>>>0){c[b+20>>2]=18;a[b+25>>0]=1;Tg(c[b>>2]|0,10096,-1,1,0)|0}else Xg(c[b>>2]|0,d);return}function zj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;f=Og(c[e>>2]|0,1)|0;g=c[(c[b>>2]|0)+32>>2]|0;c[h>>2]=0;if((d|0)==2)d=Og(c[e+4>>2]|0,1)|0;else d=0;if((f|0)!=0?(Pe(g,f,d,h)|0)!=0:0){d=c[h>>2]|0;c[b+20>>2]=1;a[b+25>>0]=1;Tg(c[b>>2]|0,d,-1,1,-1)|0;Sc(c[h>>2]|0)}i=k;return}function Aj(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))g=hh(d,32)|0;else g=c[e+16>>2]|0;d=De(c[f>>2]|0)|0;do if((g|0)!=0&(d|0)!=5){e=g+16|0;i=e;i=fw(c[i>>2]|0,c[i+4>>2]|0,1,0)|0;c[e>>2]=i;c[e+4>>2]=C;e=c[f>>2]|0;if((d|0)!=1){l=+Qg(e);h[g>>3]=l+ +h[g>>3];a[g+25>>0]=1;break}i=Rg(e)|0;j=C;h[g>>3]=+h[g>>3]+(+(i>>>0)+4294967296.0*+(j|0));k=g+24|0;if(!((a[k>>0]|a[g+25>>0])<<24>>24)){g=g+8|0;d=g;f=c[d>>2]|0;d=c[d+4>>2]|0;if((j|0)>-1|(j|0)==-1&i>>>0>4294967295){e=$v(-1,2147483647,f|0,d|0)|0;m=C;if(((d|0)>0|(d|0)==0&f>>>0>0)&((m|0)<(j|0)|(m|0)==(j|0)&e>>>0>>0))e=12;else e=11}else if((d|0)<0?(m=$v(1,-2147483648,f|0,d|0)|0,o=C,e=fw(i|0,j|0,1,0)|0,n=C,(o|0)>(n|0)|(o|0)==(n|0)&m>>>0>e>>>0):0)e=12;else e=11;if((e|0)==11){d=fw(f|0,d|0,i|0,j|0)|0;e=g;c[e>>2]=d;c[e+4>>2]=C;break}else if((e|0)==12){a[k>>0]=1;break}}}while(0);return}function Bj(d){d=d|0;var e=0,f=0,g=0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=hh(d,0)|0;else e=c[e+16>>2]|0;do if((e|0)!=0?(f=e+16|0,g=c[f+4>>2]|0,(g|0)>0|(g|0)==0&(c[f>>2]|0)>>>0>0):0){if(a[e+24>>0]|0){c[d+20>>2]=1;a[d+25>>0]=1;Tg(c[d>>2]|0,20248,-1,1,-1)|0;break}if(a[e+25>>0]|0){Ug(c[d>>2]|0,+h[e>>3]);break}g=e+8|0;f=c[g>>2]|0;g=c[g+4>>2]|0;e=c[d>>2]|0;d=e+8|0;if(!(b[d>>1]&9312)){c[e>>2]=f;c[e+4>>2]=g;b[d>>1]=4;break}else{Vg(e,f,g);break}}while(0);return}function Cj(a){a=a|0;var d=0,e=0.0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=hh(a,0)|0;else d=c[d+16>>2]|0;if(!d)e=0.0;else e=+h[d>>3];Ug(c[a>>2]|0,e);return}function Dj(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=hh(a,0)|0;else d=c[d+16>>2]|0;if((d|0)!=0?(f=d+16|0,e=c[f>>2]|0,f=c[f+4>>2]|0,(f|0)>0|(f|0)==0&e>>>0>0):0)Ug(c[a>>2]|0,+h[d>>3]/(+(e>>>0)+4294967296.0*+(f|0)));return}function Ej(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;g=c[a+8>>2]|0;if(!(b[g+8>>1]&8192))g=hh(a,8)|0;else g=c[g+16>>2]|0;if(!d){if(g)h=7}else if((g|0)!=0?(1431655765>>>((e[(c[f>>2]|0)+8>>1]|0)&31)&1|0)!=0:0)h=7;if((h|0)==7){a=g;a=fw(c[a>>2]|0,c[a+4>>2]|0,1,0)|0;c[g>>2]=a;c[g+4>>2]=C}return}function Fj(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=hh(a,0)|0;else d=c[d+16>>2]|0;if(!d){e=0;f=0}else{f=d;e=c[f>>2]|0;f=c[f+4>>2]|0}d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9312)){c[d>>2]=e;c[d+4>>2]=f;b[a>>1]=4}else Vg(d,e,f);return}function Gj(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0;if(!(-1431655766>>>(e[(c[g>>2]|0)+8>>1]&31)&1)){h=c[d+8>>2]|0;if(!(b[h+8>>1]&8192))i=hh(d,28)|0;else i=c[h+16>>2]|0;if(i){d=c[(c[d>>2]|0)+32>>2]|0;j=i+24|0;h=(a[j>>0]|0)==0;a[j>>0]=2;c[i+20>>2]=c[d+88>>2];do if(!h){if((f|0)==2){f=g+4|0;h=Og(c[f>>2]|0,1)|0;f=Pg(c[f>>2]|0,1)|0;if(!f)break}else{f=1;h=20240}Ok(i,h,f)}while(0);h=Og(c[g>>2]|0,1)|0;f=Pg(c[g>>2]|0,1)|0;if(h)Ok(i,h,f)}}return}function Hj(d){d=d|0;var e=0,f=0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=hh(d,0)|0;else e=c[e+16>>2]|0;do if(e){f=a[e+25>>0]|0;if(f<<24>>24==2){c[d+20>>2]=18;a[d+25>>0]=1;Tg(c[d>>2]|0,10096,-1,1,0)|0;break}else if(f<<24>>24==1){Nd(d);break}else{Sg(d,pg(e)|0,-1,1,1);break}}while(0);return}function Ij(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();h=l;m=c[(c[d>>2]|0)+32>>2]|0;g=Og(c[f>>2]|0,1)|0;k=Og(c[f+4>>2]|0,1)|0;n=Pg(c[f>>2]|0,1)|0;a:do if((n|0)<=(c[m+120>>2]|0)){do if((e|0)==3){f=Og(c[f+8>>2]|0,1)|0;c[h>>2]=f;if(!f)break a;if((Jn(f,-1)|0)==1){f=In(h)|0;break}else{c[d+20>>2]=1;a[d+25>>0]=1;Tg(c[d>>2]|0,20192,-1,1,-1)|0;break a}}else f=0;while(0);if((k|0)!=0&(g|0)!=0){e=Ch(g,k,c[(c[d+4>>2]|0)+4>>2]|0,f)|0;g=c[d>>2]|0;h=((e|0)<0)<<31>>31;f=g+8|0;if(!(b[f>>1]&9312)){c[g>>2]=e;c[g+4>>2]=h;b[f>>1]=4;break}else{Vg(g,e,h);break}}}else{c[d+20>>2]=1;a[d+25>>0]=1;Tg(c[d>>2]|0,20152,-1,1,-1)|0}while(0);i=l;return}function Jj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();o=p;k=p+16|0;n=Og(c[e>>2]|0,1)|0;l=Og(c[e+4>>2]|0,1)|0;m=c[(c[b>>2]|0)+32>>2]|0;a:do if((n|0)!=0?(a[n>>0]|0)!=0:0){d=0;e=n;b:while(1){g=d;f=e;while(1){f=f+g|0;h=yn(f,k)|0;g=c[k>>2]|0;if((g|0)==22|(g|0)==125)break b;else if((g|0)==151)g=h;else{e=f;d=h;break}}if(!(a[e>>0]|0))break a}c[o>>2]=e-n;c[o+4>>2]=n;c[o+8>>2]=l;c[o+12>>2]=e+d;Sg(b,qh(m,19464,o)|0,-1,1,75)}while(0);i=p;return}function Kj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;if((i|0)>=(j|0))ba();q=r;m=r+16|0;p=Og(c[e>>2]|0,1)|0;n=Og(c[e+4>>2]|0,1)|0;o=c[(c[b>>2]|0)+32>>2]|0;a:do if((p|0)!=0?(a[p>>0]|0)!=0:0){l=3;d=0;e=p;while(1){g=d;f=e;do{f=f+g|0;g=yn(f,m)|0;h=c[m>>2]|0}while((h|0)==151);k=g;g=(h|0)==122|(h|0)==107?0:l+1|0;if((g|0)==2)if((h|0)==5|(h|0)==46|(h|0)==137)break;else e=2;else e=g;if(!(a[f>>0]|0))break a;else{l=e;d=k;e=f}}c[q>>2]=e-p;c[q+4>>2]=p;c[q+8>>2]=n;c[q+12>>2]=e+d;Sg(b,qh(o,19464,q)|0,-1,1,75)}while(0);i=r;return}function Lj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+32|0;if((i|0)>=(j|0))ba();q=r;o=r+16|0;p=c[(c[b>>2]|0)+32>>2]|0;f=Og(c[e>>2]|0,1)|0;n=Og(c[e+4>>2]|0,1)|0;m=Og(c[e+8>>2]|0,1)|0;if(!((f|0)==0|(n|0)==0)){a:do if(!(a[f>>0]|0))d=0;else{g=f;d=0;do{e=yn(g,o)|0;if((c[o>>2]|0)==105){k=g;while(1){g=k+e|0;h=yn(g,o)|0;if((c[o>>2]|0)==151){e=h;k=g}else break}if(!g)break a;l=fw(h|0,((h|0)<0)<<31>>31|0,1,0)|0;l=ih(p,l,C)|0;if(!l)break a;gw(l|0,g|0,h|0)|0;a[l+h>>0]=0;ho(l);if(!($c(n,l)|0)){c[q>>2]=(d|0)!=0?d:10360;c[q+4>>2]=g-f;c[q+8>>2]=f;c[q+12>>2]=m;s=qh(p,19440,q)|0;ig(p,d);f=k+(h+e)|0;d=s}ig(p,l);e=h}g=g+e|0}while((a[g>>0]|0)!=0)}while(0);c[q>>2]=(d|0)!=0?d:10360;c[q+4>>2]=f;Sg(b,qh(p,19456,q)|0,-1,1,75);ig(p,d)}i=r;return}function Mj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+48|0;if((i|0)>=(j|0))ba();e=f;if(!(io(a,b,d,e)|0)){jo(e);b=e;Ug(c[a>>2]|0,(+((c[b>>2]|0)>>>0)+4294967296.0*+(c[b+4>>2]|0))/864.0e5)}i=f;return}function Nj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+160|0;if((i|0)>=(j|0))ba();e=h+48|0;f=h;g=h+60|0;if(!(io(a,b,d,f)|0)){ko(f);d=c[f+12>>2]|0;b=c[f+16>>2]|0;c[e>>2]=c[f+8>>2];c[e+4>>2]=d;c[e+8>>2]=b;Yc(100,g,20136,e)|0;Sg(a,g,-1,1,-1)}i=h;return}function Oj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,k=0;k=i;i=i+160|0;if((i|0)>=(j|0))ba();e=k+48|0;f=k;g=k+60|0;if(!(io(a,b,d,f)|0)){lo(f);d=c[f+24>>2]|0;b=~~+h[f+32>>3];c[e>>2]=c[f+20>>2];c[e+4>>2]=d;c[e+8>>2]=b;Yc(100,g,20120,e)|0;Sg(a,g,-1,1,-1)}i=k;return}function Pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,k=0,l=0,m=0,n=0;k=i;i=i+176|0;if((i|0)>=(j|0))ba();e=k+48|0;f=k;g=k+72|0;if(!(io(a,b,d,f)|0)){ko(f);lo(f);n=c[f+12>>2]|0;m=c[f+16>>2]|0;l=c[f+20>>2]|0;d=c[f+24>>2]|0;b=~~+h[f+32>>3];c[e>>2]=c[f+8>>2];c[e+4>>2]=n;c[e+8>>2]=m;c[e+12>>2]=l;c[e+16>>2]=d;c[e+20>>2]=b;Yc(100,g,20088,e)|0;Sg(a,g,-1,1,-1)}i=k;return}function Qj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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,D=0,E=0,F=0.0;D=i;i=i+208|0;if((i|0)>=(j|0))ba();y=D+96|0;z=D+48|0;B=D+104|0;A=D;a:do if(((d|0)!=0?(x=Og(c[e>>2]|0,1)|0,(x|0)!=0):0)?(io(b,d+-1|0,e+4|0,z)|0)==0:0){m=c[b>>2]|0;l=c[m+32>>2]|0;e=1;d=0;g=0;b:while(1){f=a[x+g>>0]|0;c:do if(f<<24>>24==37){f=g+1|0;switch(a[x+f>>0]|0){case 106:{e=fw(e|0,d|0,3,0)|0;d=C;break c}case 89:{e=fw(e|0,d|0,8,0)|0;d=C;break c}case 74:case 115:{e=fw(e|0,d|0,50,0)|0;d=C;break c}case 37:case 119:break c;case 87:case 83:case 77:case 109:case 72:case 100:{e=fw(e|0,d|0,1,0)|0;d=C;break c}case 102:{e=fw(e|0,d|0,8,0)|0;d=C;break c}default:break a}}else if(!(f<<24>>24))break b;else f=g;while(0);e=fw(e|0,d|0,1,0)|0;d=C;g=f+1|0}if(!(d>>>0<0|(d|0)==0&e>>>0<100)){w=c[l+88>>2]|0;v=((w|0)<0)<<31>>31;if(d>>>0>v>>>0|(d|0)==(v|0)&e>>>0>w>>>0){c[b+20>>2]=18;a[b+25>>0]=1;Tg(m,10096,-1,1,0)|0;break}d=aw(0,e|0,32)|0;d=ih(l,d,C)|0;if(!d){Nd(b);break}else w=d}else w=B;jo(z);ko(z);lo(z);n=z+16|0;o=z+32|0;p=z+20|0;q=A+42|0;r=A+12|0;s=A+16|0;t=z+12|0;u=z+24|0;v=z+8|0;l=0;d=0;d:while(1){m=a[x+l>>0]|0;e:do if(!(m<<24>>24))break d;else if(m<<24>>24==37){l=l+1|0;e=x+l|0;do switch(a[e>>0]|0){case 106:case 87:{m=A+0|0;g=z+0|0;f=m+48|0;do{c[m>>2]=c[g>>2];m=m+4|0;g=g+4|0}while((m|0)<(f|0));a[q>>0]=0;c[r>>2]=1;c[s>>2]=1;jo(A);m=z;f=A;E=c[f>>2]|0;f=c[f+4>>2]|0;m=fw(c[m>>2]|0,c[m+4>>2]|0,432e5,0)|0;g=C;f=mw($v(m|0,g|0,E|0,f|0)|0,C|0,864e5,0)|0;if((a[e>>0]|0)==87){e=mw(m|0,g|0,864e5,0)|0;e=nw(e|0,C|0,7,0)|0;c[y>>2]=(f+7-e|0)/7|0;Yc(3,w+d|0,19888,y)|0;d=d+2|0;break e}else{c[y>>2]=f+1;Yc(4,w+d|0,19904,y)|0;d=d+3|0;break e}}case 102:{F=+h[o>>3];g=w+d|0;h[k>>3]=F>59.999?59.999:F;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];Yc(7,g,19896,y)|0;if(!g)m=0;else{m=g;while(1)if(!(a[m>>0]|0))break;else m=m+1|0;m=m-g&1073741823}d=m+d|0;break e}case 100:{c[y>>2]=c[n>>2];Yc(3,w+d|0,19888,y)|0;d=d+2|0;break e}case 83:{c[y>>2]=~~+h[o>>3];Yc(3,w+d|0,19888,y)|0;d=d+2|0;break e}case 119:{e=z;e=fw(c[e>>2]|0,c[e+4>>2]|0,1296e5,0)|0;e=mw(e|0,C|0,864e5,0)|0;e=nw(e|0,C|0,7,0)|0;a[w+d>>0]=e+48;d=d+1|0;break e}case 89:{g=w+d|0;c[y>>2]=c[v>>2];Yc(5,g,19928,y)|0;if(!g)m=0;else{m=g;while(1)if(!(a[m>>0]|0))break;else m=m+1|0;m=m-g&1073741823}d=m+d|0;break e}case 72:{c[y>>2]=c[p>>2];Yc(3,w+d|0,19888,y)|0;d=d+2|0;break e}case 109:{c[y>>2]=c[t>>2];Yc(3,w+d|0,19888,y)|0;d=d+2|0;break e}case 77:{c[y>>2]=c[u>>2];Yc(3,w+d|0,19888,y)|0;d=d+2|0;break e}case 74:{g=w+d|0;e=z;h[k>>3]=(+((c[e>>2]|0)>>>0)+4294967296.0*+(c[e+4>>2]|0))/864.0e5;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];Yc(20,g,19912,y)|0;if(!g)m=0;else{m=g;while(1)if(!(a[m>>0]|0))break;else m=m+1|0;m=m-g&1073741823}d=m+d|0;break e}case 115:{g=w+d|0;f=z;f=mw(c[f>>2]|0,c[f+4>>2]|0,1e3,0)|0;f=fw(f|0,C|0,-413362496,-50)|0;e=y;c[e>>2]=f;c[e+4>>2]=C;Yc(30,g,19920,y)|0;if(!g)m=0;else{m=g;while(1)if(!(a[m>>0]|0))break;else m=m+1|0;m=m-g&1073741823}d=m+d|0;break e}default:{a[w+d>>0]=37;d=d+1|0;break e}}while(0)}else{a[w+d>>0]=m;d=d+1|0}while(0);l=l+1|0}a[w+d>>0]=0;Sg(b,w,-1,1,(w|0)==(B|0)?-1:75)}while(0);i=D;return}function Rj(a,b,c){a=a|0;b=b|0;c=c|0;Oj(a,0,0);return}function Sj(a,b,c){a=a|0;b=b|0;c=c|0;Pj(a,0,0);return}function Tj(a,b,c){a=a|0;b=b|0;c=c|0;Nj(a,0,0);return}function Uj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=Rg(c[d>>2]|0)|0;h=g+1&-2;e=Rg(c[d+4>>2]|0)|0;f=(h<<3)+56|0;d=c[(c[a>>2]|0)+32>>2]|0;b=ih(d,f,((f|0)<0)<<31>>31)|0;if(!b)Nd(a);else{bw(b|0,0,f|0)|0;c[b+52>>2]=d;c[b>>2]=0;c[b+8>>2]=g;c[b+12>>2]=e;d=b+56|0;c[b+24>>2]=d;c[b+20>>2]=d+(h<<2);Sg(a,b,56,0,20)}return}function Vj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=ld(c[d>>2]|0)|0;f=Rg(c[d+4>>2]|0)|0;if(!(c[g>>2]|0)){a=g+8|0;if((c[a>>2]|0)>0){b=c[g+20>>2]|0;d=0;do{c[b+(d<<2)>>2]=1;d=d+1|0}while((d|0)<(c[a>>2]|0))}}else{if((f|0)>0){a=c[g+20>>2]|0;d=0;do{b=a+(d<<2)|0;c[b>>2]=(c[b>>2]|0)+1;d=d+1|0}while((d|0)!=(f|0))}a=g+8|0;if((f|0)<(c[a>>2]|0)){b=c[g+24>>2]|0;e=c[g+20>>2]|0;d=f;do{f=b+(d<<2)|0;c[f>>2]=(c[f>>2]|0)+1;c[e+(d<<2)>>2]=1;d=d+1|0}while((d|0)<(c[a>>2]|0))}}c[g>>2]=(c[g>>2]|0)+1;return}function Wj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;h=ld(c[e>>2]|0)|0;k=h+12|0;e=((c[k>>2]|0)*25|0)+25|0;l=mg(e,((e|0)<0)<<31>>31)|0;if(!l)Nd(b);else{bw(l|0,0,e|0)|0;e=m;c[e>>2]=c[h>>2];c[e+4>>2]=0;Yc(24,l,28696,m)|0;e=l;while(1)if(!(a[e>>0]|0))break;else e=e+1|0;if((c[k>>2]|0)>0){f=h+24|0;g=0;d=l+(e-l&1073741823)|0;while(1){o=(c[(c[f>>2]|0)+(g<<2)>>2]|0)+1|0;e=c[h>>2]|0;p=fw(o|0,0,-1,-1)|0;e=fw(p|0,C|0,e|0,0)|0;o=pw(e|0,C|0,o|0,0)|0;e=m;c[e>>2]=o;c[e+4>>2]=C;Yc(24,d,28704,m)|0;if(!d)e=0;else{e=d;while(1)if(!(a[e>>0]|0))break;else e=e+1|0;e=e-d&1073741823}g=g+1|0;if((g|0)>=(c[k>>2]|0))break;else d=d+e|0}}Sg(b,l,-1,1,1)}i=n;return}function Xj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+144|0;if((i|0)>=(j|0))ba();l=n;m=n+8|0;h=Og(c[e>>2]|0,1)|0;k=c[(c[b>>2]|0)+32>>2]|0;h=(h|0)==0?10360:h;g=c[k+20>>2]|0;a:do if((g|0)>0){d=c[k+16>>2]|0;e=0;do{f=d+(e<<4)|0;if((c[d+(e<<4)+4>>2]|0)!=0?($c(c[f>>2]|0,h)|0)==0:0)break a;e=e+1|0}while((e|0)<(g|0))}else{e=0;f=0}while(0);do if((e|0)<(g|0)){if((e|0)<2){c[l>>2]=h;Yc(128,m,29256,l)|0;o=16;break}if(!(a[k+63>>0]|0)){Yc(128,m,29288,l)|0;o=16;break}e=f+4|0;d=c[e>>2]|0;if((a[d+8>>0]|0)==0?(c[d+16>>2]|0)==0:0){Il(d);c[e>>2]=0;c[f+12>>2]=0;Ag(k);break}c[l>>2]=h;Yc(128,m,29336,l)|0;o=16}else{c[l>>2]=h;Yc(128,m,29232,l)|0;o=16}while(0);if((o|0)==16){c[b+20>>2]=1;a[b+25>>0]=1;Tg(c[b>>2]|0,m,-1,1,-1)|0}i=n;return}function Yj(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=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=i;i=i+32|0;if((i|0)>=(j|0))ba();v=z;l=z+20|0;d=z+16|0;k=z+12|0;y=z+8|0;m=z+4|0;x=c[(c[b>>2]|0)+32>>2]|0;c[l>>2]=0;c[d>>2]=0;c[y>>2]=0;u=Og(c[f>>2]|0,1)|0;q=Og(c[f+4>>2]|0,1)|0;u=(u|0)==0?10360:u;q=(q|0)==0?10360:q;t=x+20|0;g=c[t>>2]|0;h=c[x+116>>2]|0;a:do if((g|0)<(h+2|0)){if(!(a[x+63>>0]|0)){g=qh(x,29456,v)|0;c[y>>2]=g;d=0;w=42;break}r=x+16|0;h=c[r>>2]|0;b:do if((g|0)>0){f=0;while(1){if(!($c(c[h+(f<<4)>>2]|0,q)|0))break;f=f+1|0;if((f|0)>=(g|0))break b}c[v>>2]=q;g=qh(x,29504,v)|0;c[y>>2]=g;d=0;w=42;break a}while(0);if((h|0)!=(x+456|0)){h=no(x,h,(g<<4)+16|0,0)|0;if(!h)break;else p=h}else{h=ih(x,48,0)|0;if(!h)break;p=c[r>>2]|0;c[h+0>>2]=c[p+0>>2];c[h+4>>2]=c[p+4>>2];c[h+8>>2]=c[p+8>>2];c[h+12>>2]=c[p+12>>2];c[h+16>>2]=c[p+16>>2];c[h+20>>2]=c[p+20>>2];c[h+24>>2]=c[p+24>>2];c[h+28>>2]=c[p+28>>2];p=h}c[r>>2]=p;n=c[t>>2]|0;o=p+(n<<4)|0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[k>>2]=c[x+48>>2];h=Sn(c[(c[x>>2]|0)+16>>2]|0,u,k,m,l,d)|0;if(!h){h=c[k>>2]|256;c[k>>2]=h;l=c[l>>2]|0;k=p+(n<<4)+4|0;h=vm(c[m>>2]|0,l,x,k,0,h)|0;Sc(l);c[t>>2]=(c[t>>2]|0)+1;if((h|0)==19){c[y>>2]=qh(x,29536,v)|0;h=1}else if(!h){h=Tn(x,c[k>>2]|0)|0;c[p+(n<<4)+12>>2]=h;if(h)if((a[h+76>>0]|0)!=0?(a[h+77>>0]|0)!=(a[x+62>>0]|0):0){c[y>>2]=qh(x,13232,v)|0;h=1}else h=0;else h=7;d=c[k>>2]|0;f=c[d+4>>2]|0;c[f+4>>2]=c[d>>2];f=c[f>>2]|0;g=a[x+66>>0]|0;do if(!(a[f+12>>0]|0)){m=c[f+208>>2]|0;if((m|0)!=0?(a[m+43>>0]|0)==2:0)break;a[f+4>>0]=g}while(0);f=c[(c[r>>2]|0)+4>>2]|0;if(!f)f=0;else{m=c[f+4>>2]|0;c[m+4>>2]=c[f>>2];f=(e[m+22>>1]|0)>>>2&1}oo(d,f)|0;po(c[k>>2]|0,c[x+24>>2]&28|3)}a[p+(n<<4)+8>>0]=3;d=gh(x,q)|0;c[o>>2]=d;d=(h|0)==0&(d|0)==0?7:h;if(!d){f=c[t>>2]|0;if((f|0)>0){g=c[r>>2]|0;h=0;do{d=c[g+(h<<4)+4>>2]|0;if(d)c[(c[d+4>>2]|0)+4>>2]=c[d>>2];h=h+1|0}while((h|0)!=(f|0))}d=Vh(x,y)|0;if(!d)break}g=(c[t>>2]|0)+-1|0;f=c[(c[r>>2]|0)+(g<<4)+4>>2]|0;if(f){Il(f);p=c[r>>2]|0;c[p+(g<<4)+4>>2]=0;c[p+(g<<4)+12>>2]=0}Ag(x);c[t>>2]=g;if((d|0)==7|(d|0)==3082){a[x+65>>0]=1;ig(x,c[y>>2]|0);g=qh(x,15776,v)|0;c[y>>2]=g;w=42;break}g=c[y>>2]|0;if(g){w=43;break}c[v>>2]=u;g=qh(x,29568,v)|0;c[y>>2]=g;w=42;break}else if((h|0)==7)a[x+65>>0]=1;p=c[d>>2]|0;c[b+20>>2]=1;a[b+25>>0]=1;Tg(c[b>>2]|0,p,-1,1,-1)|0;Sc(p)}else{c[v>>2]=h;g=qh(x,29416,v)|0;c[y>>2]=g;d=0;w=42}while(0);if((w|0)==42)if(!g){s=d;w=44}else w=43;if((w|0)==43){c[b+20>>2]=1;a[b+25>>0]=1;Tg(c[b>>2]|0,g,-1,1,-1)|0;ig(x,c[y>>2]|0);s=d;w=44}if((w|0)==44?(s|0)!=0:0)Ld(b,s);i=z;return}function Zj(a){a=a|0;if(a){ek(a,0)|0;Sc(c[a+24>>2]|0);qo(a)}return 0}function _j(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=a+12|0;g=d&131071;k=b;i=f;j=0;a:while(1){while(1){f=_a(c[l>>2]|0,e|0,0)|0;if(!((f|0)==(e|0)&(((f|0)<0)<<31>>31|0)==(i|0))){e=4;break a}h=Yb[c[47552+100>>2]&63](c[l>>2]|0,k,g)|0;if((g|0)==(h|0)){f=j;e=13;break a}if((h|0)>=0){f=h;break}f=c[(Db()|0)>>2]|0;if((f|0)!=4){g=h;e=10;break a}}if((f|0)<=0){g=0;f=j;e=13;break}h=fw(f|0,((f|0)<0)<<31>>31|0,e|0,i|0)|0;g=g-f|0;k=k+f|0;i=C;e=h;j=f+j|0}do if((e|0)==4)if((f|0)==-1){c[a+20>>2]=c[(Db()|0)>>2];f=-1;break}else{c[a+20>>2]=0;f=-1;break}else if((e|0)==10){c[a+20>>2]=f;f=0;e=13}while(0);if((e|0)==13)f=f+g|0;if((f|0)!=(d|0))if((f|0)<0)f=266;else{c[a+20>>2]=0;bw(b+f|0,0,d-f|0)|0;f=522}else f=0;return f|0}function $j(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do if((d|0)>0){h=a+12|0;i=a+20|0;g=d;while(1){d=ro(c[h>>2]|0,e,f,b,g,i)|0;if((d|0)<=0)break;g=g-d|0;e=fw(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0;if((g|0)<=0){d=0;break a}else{b=b+d|0;f=C}}if((d|0)<0?(c[i>>2]|0)!=28:0){d=778;break}c[a+20>>2]=0;d=13}else d=0;while(0);return d|0}function ak(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+40>>2]|0;if((e|0)>0){f=((e|0)<0)<<31>>31;d=fw(b|0,d|0,-1,-1)|0;d=fw(d|0,C|0,e|0,f|0)|0;b=C;e=nw(d|0,b|0,e|0,f|0)|0;e=$v(d|0,b|0,e|0,C|0)|0}else e=b;d=c[a+12>>2]|0;while(1){b=nc[c[47552+76>>2]&127](d,e)|0;if((b|0)>=0){e=6;break}b=Db()|0;if((c[b>>2]|0)!=4){e=8;break}}if((e|0)==6)if(!b)b=0;else{b=Db()|0;e=8}if((e|0)==8){c[a+20>>2]=c[b>>2];b=_n(1546,47928,c[a+32>>2]|0,29004)|0}return b|0}function bk(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;if(!(Cb(c[a+12>>2]|0)|0)){h=a+18|0;if(!(b[h>>1]&8))d=0;else{d=nc[c[47552+208>>2]&127](c[a+32>>2]|0,g)|0;f=c[g>>2]|0;if((d|0)==0&(f|0)>-1){Cb(f|0)|0;Yn(a,c[g>>2]|0,28974);d=0}else d=(d|0)==14?0:d;b[h>>1]=(e[h>>1]|0)&65527}}else{c[a+20>>2]=c[(Db()|0)>>2];d=_n(1034,48360,c[a+32>>2]|0,28960)|0}i=k;return d|0}function ck(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+80|0;if((i|0)>=(j|0))ba();d=e;if(!(nc[c[47552+64>>2]&127](c[a+12>>2]|0,d)|0)){a=c[d+36>>2]|0;f=(a|0)==1;d=b;c[d>>2]=f?0:a;c[d+4>>2]=f?0:((a|0)<0)<<31>>31;d=0}else{c[a+20>>2]=c[(Db()|0)>>2];d=1802}i=e;return d|0}function dk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+24>>2]|0;g=b+16|0;a:do if(!(a[g>>0]|0)){e=nc[c[47552+220>>2]&127](f,511)|0;if((e|0)>=0){a[g>>0]=d;break}f=c[(Db()|0)>>2]|0;switch(f|0){case 1:{e=3;break}case 13:case 37:case 4:case 16:case 110:case 11:case 17:{e=5;break a}default:e=3850}c[b+20>>2]=f}else{a[g>>0]=d;Ua(f|0,0)|0;e=0}while(0);return e|0}function ek(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;g=c[b+24>>2]|0;h=b+16|0;a:do if((d[h>>0]|0|0)==(e|0))f=0;else{if((e|0)==1){a[h>>0]=1;f=0;break}do if((hc[c[47552+232>>2]&127](g)|0)<0){f=Db()|0;e=c[f>>2]|0;if((e|0)==20){if((hc[c[47552+196>>2]&127](g)|0)>=0)break;e=c[f>>2]|0}g=(e|0)!=2;f=g?2058:0;if(!g)break a;c[b+20>>2]=e;break a}while(0);a[h>>0]=0;f=0}while(0);return f|0}function fk(a,b){a=a|0;b=b|0;if((d[a+16>>0]|0)>1)a=1;else a=(nc[c[47552+28>>2]&127](c[a+24>>2]|0,0)|0)==0&1;c[b>>2]=a;return 0}function gk(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+80|0;if((i|0)>=(j|0))ba();g=n;a:do switch(b|0){case 6:{c[a+40>>2]=c[e>>2];f=0;break}case 20:{c[e>>2]=to(a)|0;f=0;break}case 16:{f=a+4|0;b=Pc(c[(c[f>>2]|0)+8>>2]|0)|0;if(!b)f=0;else{Wn(c[(c[f>>2]|0)+8>>2]|0,b)|0;c[e>>2]=b;f=0}break}case 12:{c[g>>2]=c[(c[a+4>>2]|0)+16>>2];c[e>>2]=Wc(10344,g)|0;f=0;break}case 1:{c[e>>2]=d[a+16>>0];f=0;break}case 24:{f=0;break}case 10:{so(a,4,e);f=0;break}case 13:{so(a,16,e);f=0;break}case 5:{b=e;e=c[b>>2]|0;b=c[b+4>>2]|0;f=a+40|0;if((c[f>>2]|0)>0){m=a+12|0;if(!(nc[c[47552+64>>2]&127](c[m>>2]|0,g)|0)){f=c[f>>2]|0;k=((f|0)<0)<<31>>31;e=fw(e|0,b|0,-1,-1)|0;e=fw(e|0,C|0,f|0,k|0)|0;l=C;k=nw(e|0,l|0,f|0,k|0)|0;k=$v(e|0,l|0,k|0,C|0)|0;l=C;e=c[g+36>>2]|0;f=((e|0)<0)<<31>>31;do if((l|0)>(f|0)|(l|0)==(f|0)&k>>>0>e>>>0){h=c[g+40>>2]|0;b=e+-1+(h<<1)|0;b=b+~((b|0)%(h|0)|0)|0;e=((b|0)<0)<<31>>31;f=a+20|0;if((e|0)<(l|0)|(e|0)==(l|0)&b>>>0>>0){g=((h|0)<0)<<31>>31;do{a=(ro(c[m>>2]|0,b,e,10360,1,f)|0)==1;b=fw(b|0,e|0,h|0,g|0)|0;e=C;if(!a){f=778;break a}}while((e|0)<(l|0)|(e|0)==(l|0)&b>>>0>>0);b=nw(k|0,l|0,h|0,g|0)|0;if((b|0)==0&(C|0)==0)break}b=fw(k|0,l|0,-1,-1)|0;if((ro(c[m>>2]|0,b,C,10360,1,f)|0)!=1){f=778;break a}}while(0);f=0}else f=1802}else f=0;break}case 4:{c[e>>2]=c[a+20>>2];f=0;break}default:f=12}while(0);i=n;return f|0}function hk(a){a=a|0;return 4096}function ik(a){a=a|0;return (b[a+18>>1]&16)<<8|0}function jk(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;l=c[a+36>>2]|0;i=c[l>>2]|0;m=(1<>2]|0;i=(j|0)==0;if(g&4){if(i)g=0;else{g=0;i=j;do{if(m&(e[i+12>>1]|0)){h=5;break a}g=b[i+10>>1]|g;i=c[i+4>>2]|0}while((i|0)!=0)}if((m&(g&65535)|0)==0?(k=uo(a,0,d+120|0,f)|0,(k|0)!=0):0){h=k;break}h=l+10|0;b[h>>1]=e[h>>1]|0|m;h=0;break}if(!i){h=m&65535;g=j;do{if((e[g+12>>1]|0)&h){h=5;break a}if((e[g+10>>1]|0)&h){h=5;break a}g=c[g+4>>2]|0}while((g|0)!=0)}h=uo(a,1,d+120|0,f)|0;if(!h){h=l+12|0;b[h>>1]=e[h>>1]|0|m;h=0}}else{i=c[i+32>>2]|0;if(!i)g=0;else{g=0;do{if((i|0)!=(l|0))g=b[i+10>>1]|g;i=c[i+4>>2]|0}while((i|0)!=0)}if((g&65535&m|0)==0?(h=uo(a,2,d+120|0,f)|0,(h|0)!=0):0)break;g=(m|-65536)^65535;h=l+12|0;b[h>>1]=(e[h>>1]|0)&g;h=l+10|0;b[h>>1]=(e[h>>1]|0)&g;h=0}while(0);return h|0}function kk(a){a=a|0;return}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+36|0;g=c[f>>2]|0;if(g){h=c[g>>2]|0;d=h+32|0;while(1){e=c[d>>2]|0;if((e|0)==(g|0))break;else d=e+4|0}c[d>>2]=c[g+4>>2];Sc(g);c[f>>2]=0;e=h+28|0;d=(c[e>>2]|0)+-1|0;c[e>>2]=d;if(!d){if((b|0)!=0?(c[h+12>>2]|0)>-1:0)hc[c[47552+196>>2]&127](c[h+8>>2]|0)|0;vo(a)}}return 0}function mk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=0;return 0}function nk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function ok(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e;c[f>>2]=d;b=mb(a|0,b|0,f|0)|0;i=e;return b|0}function pk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+528|0;if((i|0)>=(j|0))ba();f=k;g=k+8|0;c[f>>2]=b;Yc(512,g,10344,f)|0;b=cw(g|0)|0;a:do if((b|0)>1)while(1){e=b+-1|0;if((a[g+b>>0]|0)==47)break a;if((e|0)>1)b=e;else{b=e;break}}while(0);if((b|0)>0){a[g+b>>0]=0;b=Xn(g,0,0)|0;c[d>>2]=b;if((b|0)>-1)b=0;else h=7}else{c[d>>2]=-1;h=7}if((h|0)==7){c[f>>2]=28919;c[f+4>>2]=10788;Zc(14,14848,f);b=_n(14,47896,g,28919)|0}i=k;return b|0}function qk(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Gb()|0))a=Mb(a|0,b|0,c|0)|0;else a=0;return a|0}function rk(){return sb(30)|0}function sk(a){a=a|0;qo(a);return 0}function tk(a,b){a=a|0;b=b|0;return 0}function uk(a,b){a=a|0;b=b|0;return 0}function vk(a,b){a=a|0;b=b|0;c[b>>2]=0;return 0}function wk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;Zn(a);yk(a,0)|0;f=c[a+8>>2]|0;if(f){if(c[f+24>>2]|0){b=a+28|0;e=c[b>>2]|0;d=f+28|0;c[e+8>>2]=c[d>>2];c[d>>2]=e;c[a+12>>2]=-1;c[b>>2]=0}d=f+16|0;b=(c[d>>2]|0)+-1|0;c[d>>2]=b;if(!b){wo(a);g=f+36|0;b=c[g>>2]|0;d=f+32|0;e=c[d>>2]|0;if(!b)c[12178]=e;else c[b+32>>2]=e;b=c[d>>2]|0;if(b)c[b+36>>2]=c[g>>2];Sc(f)}}qo(a);return 0}function xk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();m=q;o=d+16|0;f=a[o>>0]|0;a:do if((f&255|0)<(e|0)){l=c[d+8>>2]|0;p=l+12|0;g=a[p>>0]|0;if(f<<24>>24!=g<<24>>24?(g&255)>2|(e|0)>1:0){f=5;break}h=(e|0)==1;do if(h)if((g+-1&255)<2){a[o>>0]=1;f=l+8|0;c[f>>2]=(c[f>>2]|0)+1;f=l+24|0;c[f>>2]=(c[f>>2]|0)+1;f=0;break a}else{g=m+8|0;c[g>>2]=1;b[m+2>>1]=0;n=10;break}else{g=m+8|0;c[g>>2]=1;b[m+2>>1]=0;if((e|0)==4)if((f&255)<3)n=10;else{k=g;n=14}else{h=g;n=24}}while(0);if((n|0)==10){b[m>>1]=h&1^1;c[m+4>>2]=c[2514];if(!(xo(d,m)|0)){k=g;n=14}else{g=c[(Db()|0)>>2]|0;switch(g|0){case 13:case 37:case 4:case 16:case 110:case 11:{f=5;break a}case 1:{f=3;break}default:f=3850}c[d+20>>2]=g;break}}b:do if((n|0)==14)if(h){h=m+4|0;c[h>>2]=(c[2514]|0)+2;c[k>>2]=510;c:do if(!(xo(d,m)|0)){f=0;g=0}else{g=c[(Db()|0)>>2]|0;switch(g|0){case 1:{f=3;g=1;break c}case 13:case 37:case 4:case 16:case 110:case 11:{f=5;break c}default:{f=3850;break c}}}while(0);c[h>>2]=c[2514];c[k>>2]=1;b[m>>1]=2;do if((xo(d,m)|0)!=0&(f|0)==0){f=2058;g=c[(Db()|0)>>2]|0}else{if((f|0)==5){f=5;break a}else if(f)break;a[o>>0]=1;m=l+24|0;c[m>>2]=(c[m>>2]|0)+1;c[l+8>>2]=1;break b}while(0);c[d+20>>2]=g;break a}else{h=k;n=24}while(0);do if((n|0)==24){k=(e|0)==4;if(k)if((c[l+8>>2]|0)>1)f=5;else{b[m>>1]=1;g=c[2514]|0;n=29}else{b[m>>1]=1;g=c[2514]|0;if((e|0)==2){c[m+4>>2]=g+1;g=1;n=30}else n=29}if((n|0)==29){c[m+4>>2]=g+2;g=510;n=30}if((n|0)==30){c[h>>2]=g;if(!(xo(d,m)|0))break;g=c[(Db()|0)>>2]|0;switch(g|0){case 13:case 37:case 4:case 16:case 110:case 11:{f=5;break}case 1:{f=3;n=33;break}default:{f=3850;n=33}}if((n|0)==33)c[d+20>>2]=g;if(!k)break a}a[o>>0]=3;a[p>>0]=3;break a}while(0);f=e&255;a[o>>0]=f;a[p>>0]=f;f=0}else f=0;while(0);i=q;return f|0}function yk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();k=n;l=d+16|0;f=a[l>>0]|0;a:do if((f&255|0)>(e|0)){m=c[d+8>>2]|0;do if((f&255)>1){if((e|0)==1){b[k>>1]=0;h=k+2|0;b[h>>1]=0;f=k+4|0;c[f>>2]=(c[2514]|0)+2;g=k+8|0;c[g>>2]=510;if(xo(d,k)|0){c[d+20>>2]=c[(Db()|0)>>2];f=2314;break a}}else{g=k+8|0;h=k+2|0;f=k+4|0}b[k>>1]=2;b[h>>1]=0;c[f>>2]=c[2514];c[g>>2]=2;if(!(xo(d,k)|0)){a[m+12>>0]=1;break}else{c[d+20>>2]=c[(Db()|0)>>2];f=2058;break a}}while(0);if(!e){g=m+8|0;f=(c[g>>2]|0)+-1|0;c[g>>2]=f;do if(!f){b[k>>1]=2;b[k+2>>1]=0;c[k+8>>2]=0;c[k+4>>2]=0;if(!(xo(d,k)|0)){a[m+12>>0]=0;f=0;break}else{c[d+20>>2]=c[(Db()|0)>>2];a[m+12>>0]=0;a[l>>0]=0;f=2058;break}}else f=0;while(0);h=m+24|0;g=(c[h>>2]|0)+-1|0;c[h>>2]=g;if(!g)wo(d);if(f)break}a[l>>0]=e;f=0}else f=0;while(0);i=n;return f|0}function zk(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();k=m;l=m+8|0;h=c[e+8>>2]|0;n=(d[h+12>>0]|0)>1;g=n&1;do if(!n)if(!(a[h+13>>0]|0)){b[l+2>>1]=0;c[l+4>>2]=(c[2514]|0)+1;c[l+8>>2]=1;b[l>>1]=1;n=c[11910]|0;h=c[e+12>>2]|0;c[k>>2]=l;if(!(Yb[n&63](h,12,k)|0)){h=0;g=(b[l>>1]|0)==2?g:1;break}else{c[e+20>>2]=c[(Db()|0)>>2];h=3594;break}}else{h=0;g=0}else{h=0;g=1}while(0);c[f>>2]=g;i=m;return h|0}function Ak(d,f,g,h,k){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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;A=i;i=i+160|0;if((i|0)>=(j|0))ba();y=A;t=A+76|0;m=dc[c[47552+292>>2]&7]()|0;if((m|0)<32768)z=1;else z=(m|0)/32768|0;w=d+36|0;m=c[w>>2]|0;a:do if(!m){m=Pc(16)|0;if(!m)l=7;else{c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;s=d+8|0;q=c[s>>2]|0;l=c[q+20>>2]|0;b:do if(!l){r=d+32|0;n=c[r>>2]|0;if((nc[c[47552+64>>2]&127](c[d+12>>2]|0,t)|0)!=0?(a[q+13>>0]|0)==0:0)l=1802;else x=8;c:do if((x|0)==8){l=cw(n|0)|0;o=l+42|0;u=Pc(o)|0;if(u){bw(u|0,0,o|0)|0;p=u+36|0;c[u+8>>2]=p;c[y>>2]=n;Yc(l+6|0,p,48720,y)|0;l=u+12|0;c[l>>2]=-1;s=c[s>>2]|0;c[s+20>>2]=u;c[u>>2]=s;c[u+4>>2]=8;if(a[q+13>>0]|0){l=u;break b}if(!(bg(c[r>>2]|0,48728,0)|0))o=66;else{a[u+22>>0]=1;o=0}n=Xn(p,o,c[t+12>>2]&511)|0;c[l>>2]=n;if((n|0)<0){c[y>>2]=29706;c[y+4>>2]=10788;Zc(14,14848,y);l=_n(14,47896,p,29706)|0;break}Yb[c[47552+244>>2]&63](n,c[t+20>>2]|0,c[t+24>>2]|0)|0;do if(!(uo(d,1,128,1)|0)){l=c[l>>2]|0;do{n=nc[c[47552+76>>2]&127](l,0)|0;if((n|0)>=0){v=n;x=18;break}}while((c[(Db()|0)>>2]|0)==4);if((x|0)==18?(v|0)==0:0)break;l=_n(4618,47928,p,29722)|0;if(l)break c}while(0);l=uo(d,0,128,1)|0;if(!l){l=u;break b}}else l=7}while(0);vo(d);Sc(m);if(l)break a;m=c[w>>2]|0;x=24;break a}while(0);c[m>>2]=l;x=l+28|0;c[x>>2]=(c[x>>2]|0)+1;c[d+36>>2]=m;x=l+32|0;c[m+4>>2]=c[x>>2];c[x>>2]=m;x=24}}else x=24;while(0);if((x|0)==24){u=c[m>>2]|0;w=z+f|0;w=w-((w|0)%(z|0)|0)|0;t=u+20|0;d:do if((e[t>>1]|0)<(w|0)){l=_(w,g)|0;c[u+16>>2]=g;v=u+12|0;m=c[v>>2]|0;e:do if((m|0)>-1){if(nc[c[47552+64>>2]&127](m,y)|0){m=4874;break d}m=c[y+36>>2]|0;if((m|0)<(l|0)){if(!h){m=0;break d}m=(m|0)/4096|0;l=(l|0)/4096|0;if((m|0)<(l|0)){while(1){s=m<<12|4095;m=m+1|0;if((ro(c[v>>2]|0,s,((s|0)<0)<<31>>31,10360,1,0)|0)!=1)break;if((m|0)>=(l|0))break e}m=_n(4874,47976,c[u+8>>2]|0,29853)|0;break d}}}while(0);s=u+24|0;m=Tc(c[s>>2]|0,w<<2)|0;if(m){c[s>>2]=m;m=e[t>>1]|0;if((m|0)<(w|0)){p=_(z,g)|0;q=u+22|0;r=(z|0)>0;while(1){l=c[v>>2]|0;if((l|0)>-1){m=_(m,g)|0;m=gc[c[47552+256>>2]&7](0,p,(a[q>>0]|0)!=0?1:3,1,l,m)|0;if((m|0)==(-1|0))break}else{m=Pc(g)|0;if(!m){m=7;break d}bw(m|0,0,g|0)|0}n=b[t>>1]|0;if(r){l=n&65535;o=0;do{d=m+(_(o,g)|0)|0;c[(c[s>>2]|0)+(l+o<<2)>>2]=d;o=o+1|0}while((o|0)!=(z|0))}m=(n&65535)+z|0;b[t>>1]=m;m=m&65535;if((m|0)>=(w|0)){m=0;break d}}m=_n(5386,48080,c[u+8>>2]|0,29880)|0}else m=0}else m=3082}else m=0;while(0);if((e[t>>1]|0)>(f|0))l=c[(c[u+24>>2]|0)+(f<<2)>>2]|0;else l=0;c[k>>2]=l;l=(a[u+22>>0]|0)!=0&(m|0)==0?8:m}i=A;return l|0}function Bk(a,b){a=a|0;b=b|0;var d=0;if(b)do{d=b;b=c[b+32>>2]|0;Ck(a,c[d+20>>2]|0);Jk(a,c[d+24>>2]|0);Ik(a,c[d+8>>2]|0,1);Dk(a,c[d+28>>2]|0);ig(a,d)}while((b|0)!=0);return}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(b){f=b+4|0;do if(!(c[f>>2]&16384)){Ck(a,c[b+12>>2]|0);Ck(a,c[b+16>>2]|0);d=c[f>>2]|0;if(d&65536){ig(a,c[b+8>>2]|0);d=c[f>>2]|0}e=b+20|0;if(!(d&2048)){Jk(a,c[e>>2]|0);break}else{Ik(a,c[e>>2]|0,1);break}}while(0);if(!(c[f>>2]&32768))ig(a,b)}return}function Dk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(b){f=b+4|0;d=c[b>>2]|0;if((c[f>>2]|0)>0){e=0;do{ig(a,c[d+(e<<3)>>2]|0);e=e+1|0;d=c[b>>2]|0}while((e|0)<(c[f>>2]|0))}ig(a,d);ig(a,b)}return}function Ek(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();p=q;m=Zm(b,e,p)|0;do if(!m)if(f){o=mg(16,0)|0;if(!o)g=f;else{c[o+12>>2]=e;c[o+8>>2]=f;n=b+4|0;k=(c[n>>2]|0)+1|0;c[n>>2]=k;if((k>>>0>9?(h=c[b>>2]|0,k>>>0>h<<1>>>0):0)?(l=k<<4>>>0>1024?128:k<<1,(l|0)!=(h|0)):0){g=c[3164]|0;if(g)jc[g&3]();n=mg(l<<3,0)|0;g=c[3166]|0;if(g)jc[g&3]();if(n){m=b+12|0;Sc(c[m>>2]|0);c[m>>2]=n;m=(hc[c[8744+48>>2]&127](n)|0)>>>3;c[b>>2]=m;bw(n|0,0,m<<3|0)|0;f=b+8|0;k=c[f>>2]|0;c[f>>2]=0;if(k)do{l=c[k+12>>2]|0;h=a[l>>0]|0;if(!(h<<24>>24))h=0;else{f=h;h=0;do{l=l+1|0;h=h<<3^h^(d[9328+(f&255)>>0]|0);f=a[l>>0]|0}while(f<<24>>24!=0)}f=k;k=c[k>>2]|0;yo(b,n+(((h>>>0)%(m>>>0)|0)<<3)|0,f)}while((k|0)!=0);g=a[e>>0]|0;if(!(g<<24>>24))g=0;else{k=g;g=0;do{e=e+1|0;g=g<<3^g^(d[9328+(k&255)>>0]|0);k=a[e>>0]|0}while(k<<24>>24!=0)}c[p>>2]=(g>>>0)%((c[b>>2]|0)>>>0)|0}}g=c[b+12>>2]|0;if(!g)g=0;else g=g+(c[p>>2]<<3)|0;yo(b,g,o);g=0}}else g=0;else{k=m+8|0;g=c[k>>2]|0;if(f){c[k>>2]=f;c[m+12>>2]=e;break}l=c[p>>2]|0;k=c[m+4>>2]|0;h=c[m>>2]|0;if(!k)c[b+8>>2]=h;else{c[k>>2]=h;h=c[m>>2]|0}if(h)c[h+4>>2]=k;e=c[b+12>>2]|0;if(e){k=e+(l<<3)+4|0;if((c[k>>2]|0)==(m|0))c[k>>2]=h;p=e+(l<<3)|0;c[p>>2]=(c[p>>2]|0)+-1}Sc(m);o=b+4|0;p=(c[o>>2]|0)+-1|0;c[o>>2]=p;if(!p)Kl(b)}while(0);i=q;return g|0}function Fk(b,d){b=b|0;d=d|0;Ck(b,c[d+36>>2]|0);ig(b,c[d+16>>2]|0);if(a[d+51>>0]&16)ig(b,c[d+32>>2]|0);ig(b,d);return}function Gk(a,b){a=a|0;b=b|0;var d=0;if(b){d=c[b+28>>2]|0;Ck(a,c[d+20>>2]|0);Jk(a,c[d+24>>2]|0);Ik(a,c[d+8>>2]|0,1);Ck(a,c[b+12>>2]|0);ig(a,b)}return}function Hk(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;e=c[g>>2]|0;if(e){d=d+38|0;if((b[d>>1]|0)>0){f=0;while(1){ig(a,c[e>>2]|0);Ck(a,c[e+4>>2]|0);ig(a,c[e+8>>2]|0);ig(a,c[e+12>>2]|0);ig(a,c[e+16>>2]|0);f=f+1|0;if((f|0)>=(b[d>>1]|0))break;else e=e+24|0}e=c[g>>2]|0}ig(a,e)}return}function Ik(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=(d|0)==0;d=b;while(1){b=d;d=c[d+52>>2]|0;Jk(a,c[b>>2]|0);zo(a,c[b+32>>2]|0);Ck(a,c[b+36>>2]|0);Jk(a,c[b+40>>2]|0);Ck(a,c[b+44>>2]|0);Jk(a,c[b+48>>2]|0);Ck(a,c[b+60>>2]|0);Ck(a,c[b+64>>2]|0);Mn(a,c[b+68>>2]|0);if(!e)ig(a,b);if(!d)break;else e=0}}return}function Jk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(b){d=b+4|0;if((c[b>>2]|0)>0){e=0;f=c[d>>2]|0;while(1){Ck(a,c[f>>2]|0);ig(a,c[f+4>>2]|0);ig(a,c[f+8>>2]|0);e=e+1|0;if((e|0)>=(c[b>>2]|0))break;else f=f+20|0}}ig(a,c[d>>2]|0);ig(a,b)}return}function Kk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+60|0;d=c[h>>2]|0;c[h>>2]=0;a:do if(!d)b=0;else{b=0;do{while(1){f=c[d>>2]|0;e=d+24|0;g=d;d=c[e>>2]|0;if((f|0)==(a|0)){b=g;break}f=f+332|0;c[e>>2]=c[f>>2];c[f>>2]=g;if(!d)break a}c[h>>2]=b;c[e>>2]=0}while((d|0)!=0)}while(0);return b|0}function Lk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((d|0)!=0?(f=d+(e*20|0)|0,(e|0)>0):0){e=d;do{En(b,a[e+1>>0]|0,c[e+16>>2]|0);e=e+20|0}while(e>>>0>>0)}ig(b,d);return}function Mk(a,b){a=a|0;b=b|0;do if(!a)b=hc[c[8744+48>>2]&127](b)|0;else{if((c[a+276>>2]|0)>>>0<=b>>>0?(c[a+280>>2]|0)>>>0>b>>>0:0){b=e[a+248>>1]|0;break}b=hc[c[8744+48>>2]&127](b)|0}while(0);a=c[a+520>>2]|0;c[a>>2]=(c[a>>2]|0)+b;return}function Nk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;b=c[b+(d<<2)>>2]|0;a:do if(!b)b=0;else while(1){d=c[b+24>>2]|0;if((Bc(d,e,f)|0)==0?(a[d+f>>0]|0)==0:0)break a;b=c[b+28>>2]|0;if(!b){b=0;break}}while(0);return b|0}function Ok(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+12|0;f=c[e>>2]|0;g=f+d|0;if((g|0)<(c[a+16>>2]|0)){c[e>>2]=g;gw((c[a+8>>2]|0)+f|0,b|0,d|0)|0}else Ao(a,b,d);return}function Pk(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;if((c[a>>2]|0)>(b|0)){c[d>>2]=b+1;d=Rg(c[(c[a+8>>2]|0)+(b<<2)>>2]|0)|0;b=C}else{b=0;d=0}C=b;return d|0}function Qk(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[b>>2]|0;if((c[a>>2]|0)>(d|0)){c[b>>2]=d+1;b=Og(c[(c[a+8>>2]|0)+(d<<2)>>2]|0,1)|0}else b=0;return b|0}function Rk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=b+12|0;i=c[g>>2]|0;i=fw(i|0,((i|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;k=C;h=c[b+16>>2]|0;j=((h|0)<0)<<31>>31;if((k|0)<(j|0)|(k|0)==(j|0)&i>>>0>>0){if((d|0)>0)f=4}else{d=Bo(b,d)|0;if((d|0)>=1)f=4}if((f|0)==4){b=b+8|0;do{d=d+-1|0;f=c[g>>2]|0;c[g>>2]=f+1;a[(c[b>>2]|0)+f>>0]=e}while((d|0)>0)}return}function Sk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;f=i;i=i+112|0;if((i|0)>=(j|0))ba();k=f+28|0;h=f;g=c[b+88>>2]|0;c[h+4>>2]=k;c[h+8>>2]=k;c[h+12>>2]=0;c[h+16>>2]=70;c[h+20>>2]=g;a[h+24>>0]=1;g=h+25|0;a[g>>0]=0;c[h>>2]=b;og(h,1,d,e);e=pg(h)|0;if((a[g>>0]|0)==1)a[b+65>>0]=1;i=f;return e|0}function Tk(a){a=a|0;return hc[c[8744+48>>2]&127](a)|0}function Uk(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+80|0;if((i|0)>=(j|0))ba();l=m+40|0;g=m;if((d|0)!=0?(f=c[d+20>>2]|0,(f|0)!=0):0){c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;c[l+24>>2]=0;h=g+0|0;k=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(k|0));b[g+8>>1]=1;e=a+32|0;c[g+32>>2]=c[e>>2];c[l>>2]=g;c[l+8>>2]=a;c[l+4>>2]=d;_b[f&31](l);if((c[a+24>>2]|0)>0)ig(c[e>>2]|0,c[a+20>>2]|0);h=a+0|0;e=g+0|0;k=h+40|0;do{c[h>>2]=c[e>>2];h=h+4|0;e=e+4|0}while((h|0)<(k|0));e=c[l+20>>2]|0}else e=0;i=m;return e|0}function Vk(a){a=a|0;var d=0,e=0,f=0;d=c[a>>2]|0;if(d){e=a+4|0;do{f=d;d=c[d>>2]|0;ig(c[e>>2]|0,f)}while((d|0)!=0)}c[a>>2]=0;b[a+24>>1]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+20>>2]=0;b[a+26>>1]=1;return}function Wk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;g=k+4|0;d=c[b>>2]|0;e=d+16|0;do if((c[(c[e>>2]|0)+20>>2]|0)==0?(a[b+450>>0]|0)==0:0){f=vm(c[d>>2]|0,0,d,g,0,542)|0;if(f){ph(b,25496,h);c[b+12>>2]=f;d=1;break}f=c[g>>2]|0;c[(c[e>>2]|0)+20>>2]=f;if((tg(f,c[d+72>>2]|0,-1,0)|0)==7){a[d+65>>0]=1;d=1}else d=0}else d=0;while(0);i=k;return d|0}function Xk(a){a=a|0;var b=0;do if(a)if((c[3157]|0)>>>0<=a>>>0&(c[3158]|0)>>>0>a>>>0){c[2167]=(c[2167]|0)+-1;c[a>>2]=c[3160];c[3160]=a;a=(c[3161]|0)+1|0;c[3161]=a;c[3162]=(a|0)<(c[3156]|0)&1;break}else{b=hc[c[8744+48>>2]&127](a)|0;c[2168]=(c[2168]|0)-b;Sc(a);break}while(0);return}function Yk(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();n=q;m=c[e>>2]|0;if((a[d+15>>0]|0)!=0?(c[d+24>>2]|0)!=0:0)p=12;else p=3;do if((p|0)==3){l=d+204|0;if(((m|0)!=0?(c[(c[l>>2]|0)+12>>2]|0)==0:0)?(o=d+152|0,(m|0)!=(c[o>>2]|0)):0){r=n;c[r>>2]=0;c[r+4>>2]=0;if(((a[d+16>>0]|0)!=0?(h=c[d+60>>2]|0,g=c[h>>2]|0,(g|0)!=0):0)?(k=nc[c[g+24>>2]&127](h,n)|0,(k|0)!=0):0){g=0;f=k}else{g=Co(m)|0;if(g){tn(d);h=Do(c[l>>2]|0,m)|0;if(!h){p=d+200|0;Xk(c[p>>2]|0);c[p>>2]=g;p=n;n=c[p>>2]|0;p=c[p+4>>2]|0;l=fw(m|0,0,-1,-1)|0;p=fw(l|0,C|0,n|0,p|0)|0;p=mw(p|0,C|0,m|0,0)|0;c[d+24>>2]=p;c[o>>2]=m;p=12;break}else f=h}else{g=0;f=7}}Xk(g);c[e>>2]=c[o>>2]}else p=12}while(0);if((p|0)==12){c[e>>2]=c[d+152>>2];g=d+142|0;if((f|0)<0)f=b[g>>1]|0;b[g>>1]=f;f=0}i=q;return f|0}function Zk(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0;i=c[d+4>>2]|0;a:do if(a[d+9>>0]|0){if((c[i+76>>2]|0)!=(d|0)?(b[i+22>>1]&32)!=0:0){h=262;break}h=c[i+72>>2]|0;if(h){while(1){if(((c[h>>2]|0)!=(d|0)?(c[h+4>>2]|0)==(f|0):0)?(a[h+8>>0]|0)!=g<<24>>24:0)break;h=c[h+12>>2]|0;if(!h){h=0;break a}}if(g<<24>>24==2){h=i+22|0;b[h>>1]=e[h>>1]|64;h=262}else h=262}else h=0}else h=0;while(0);return h|0}function _k(b){b=b|0;var e=0,f=0,g=0,h=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;F=i;i=i+64|0;if((i|0)>=(j|0))ba();E=F;B=F+28|0;A=F+24|0;m=F+20|0;r=F+48|0;t=F+16|0;u=F+12|0;y=F+8|0;z=F+32|0;if(!((a[b+15>>0]|0)!=0?(e=c[b+40>>2]|0,(e|0)!=0):0))D=3;do if((D|0)==3){C=b+208|0;f=c[C>>2]|0;a:do if(!f){x=b+16|0;do if(!(a[x>>0]|0)){h=b+176|0;g=b+180|0;while(1){e=bl(b,1)|0;if(!e)break;else if((e|0)!=5)break a;if(!(hc[c[h>>2]&127](c[g>>2]|0)|0)){e=5;break a}}s=b+17|0;if((d[s>>0]|0)<2){f=c[b>>2]|0;c[E>>2]=1;k=b+64|0;l=(c[c[k>>2]>>2]|0)!=0;if(l){h=1;e=0}else{e=lc[c[f+32>>2]&31](f,c[b+172>>2]|0,0,E)|0;h=(c[E>>2]|0)!=0}b:do if((e|0)==0&h){c[B>>2]=0;g=b+60|0;e=c[g>>2]|0;e=nc[c[(c[e>>2]|0)+36>>2]&127](e,B)|0;if(!(c[B>>2]|e)){e=Eo(b,A)|0;if(!e){if((c[A>>2]|0)!=0|l){do if(!l){c[m>>2]=2049;e=pc[c[f+24>>2]&31](f,c[b+172>>2]|0,c[k>>2]|0,2049,m)|0;if(!e)break;else if((e|0)!=14){h=0;break b}h=1;e=0;break b}while(0);a[r>>0]=0;e=c[k>>2]|0;e=pc[c[(c[e>>2]|0)+8>>2]&31](e,r,1,0,0)|0;e=(e|0)==522?0:e;if(!l?(p=c[k>>2]|0,q=c[p>>2]|0,(q|0)!=0):0){hc[c[q+4>>2]&127](p)|0;c[p>>2]=0}h=(a[r>>0]|0)!=0&1;break}h=c[3164]|0;if(h)jc[h&3]();do if(((bl(b,2)|0)==0?(Yb[c[f+28>>2]&63](f,c[b+172>>2]|0,0)|0,(a[b+4>>0]|0)==0):0)?(n=c[g>>2]|0,o=c[n>>2]|0,(o|0)!=0):0){if(!(a[b+13>>0]|0))nc[c[o+32>>2]&127](n,1)|0;if((a[s>>0]|0)==5)break;a[s>>0]=1}while(0);h=c[3166]|0;if(!h){h=0;e=0}else{jc[h&3]();h=0;e=0}}else h=0}else h=0}else h=0;while(0);if(e)break a;if(h)D=35}else D=35;do if((D|0)==35){if(a[b+14>>0]|0){e=776;break a}e=bl(b,4)|0;if(e)break a;f=b+64|0;if(!(c[c[f>>2]>>2]|0)){h=c[b>>2]|0;g=b+172|0;e=lc[c[h+32>>2]&31](h,c[g>>2]|0,0,t)|0;if((e|0)==0&(c[t>>2]|0)!=0){c[u>>2]=0;e=pc[c[h+24>>2]&31](h,c[g>>2]|0,c[f>>2]|0,2050,u)|0;if(!e)if(c[u>>2]&1){c[E>>2]=46645;c[E+4>>2]=10788;Zc(14,14848,E);h=c[f>>2]|0;g=c[h>>2]|0;if(!g)e=14;else{hc[c[g+4>>2]&127](h)|0;c[h>>2]=0;e=14}}else e=0}}else e=0;if(!(c[c[f>>2]>>2]|0))if((a[b+4>>0]|0)==0?(v=c[b+60>>2]|0,w=c[v>>2]|0,(w|0)!=0):0){if(!(a[b+13>>0]|0))nc[c[w+32>>2]&127](v,1)|0;if((a[s>>0]|0)!=5){a[s>>0]=1;D=52}else D=52}else D=52;else{e=Fo(b)|0;if(!e){e=Go(b,1)|0;a[x>>0]=0;D=52}}if((D|0)==52)if(!e)break;B=e&255;if(!((B|0)==10|(B|0)==13))break a;c[b+40>>2]=e;a[x>>0]=6;break a}while(0);h=b+12|0;if((a[h>>0]|0)==0?(a[b+23>>0]|0)!=0:0){c[y>>2]=0;e=Eo(b,y)|0;if(e)break a;if(c[y>>2]|0){e=c[b+60>>2]|0;e=pc[c[(c[e>>2]|0)+8>>2]&31](e,z,16,24,0)|0;if(!((e|0)==0|(e|0)==522))break a}else{g=z+0|0;f=g+16|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(f|0))}if(Vv(b+104|0,z,16)|0)tn(b)}if(!(a[h>>0]|0)){e=Eo(b,A)|0;if(!e){g=c[b>>2]|0;f=c[b+212>>2]|0;if(!(c[A>>2]|0)){e=Yb[c[g+28>>2]&63](g,f,0)|0;c[B>>2]=0;if((e|0)!=5898)D=68}else{e=lc[c[g+32>>2]&31](g,f,0,B)|0;D=68}if((D|0)==68){if(e)break;if(c[B>>2]|0){e=al(b,0)|0;break}}e=b+5|0;if((a[e>>0]|0)==5){a[e>>0]=0;e=0}else e=0}}else e=0}else e=0;while(0);f=c[C>>2]|0;if(!f)D=78;else D=74}else D=74;while(0);if((D|0)==74){c[E>>2]=0;Ho(f);f=c[C>>2]|0;g=0;do{g=g+1|0;e=Io(f,E,0,g)|0}while((e|0)==-1);if(!(c[E>>2]|e))D=78;else{tn(b);D=78}}if((D|0)==78){if((a[b+16>>0]|0)==0&(e|0)==0)e=Eo(b,b+24|0)|0;if(!e){a[b+16>>0]=1;e=0;break}}Jo(b)}while(0);i=F;return e|0}function $k(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;f=vg(c[b>>2]|0,d,g,f)|0;if(!f){g=c[g>>2]|0;f=c[g+8>>2]|0;c[f+56>>2]=c[g+4>>2];c[f+68>>2]=g;c[f+52>>2]=b;c[f+72>>2]=d;a[f+6>>0]=(d|0)==1?100:0;c[e>>2]=f;f=0}i=h;return f|0}function al(b,d){b=b|0;d=d|0;var e=0,f=0;do if((a[b+12>>0]|0)==0?(c[b+208>>2]|0)==0:0){d=c[c[b+60>>2]>>2]|0;if(!(a[b+4>>0]|0)){if((c[d>>2]|0)<=1){d=14;break}if(!(c[d+52>>2]|0)){d=14;break}}d=c[b+64>>2]|0;e=c[d>>2]|0;if(e){hc[c[e+4>>2]&127](d)|0;c[d>>2]=0}d=ln(b)|0;if(!d){a[b+5>>0]=5;a[b+16>>0]=0;d=0}}else f=10;while(0);if((f|0)==10){c[d>>2]=1;d=0}return d|0}function bl(b,d){b=b|0;d=d|0;var e=0,f=0;f=b+17|0;e=a[f>>0]|0;do if((e&255|0)<(d|0)|e<<24>>24==5){if(!(a[b+13>>0]|0)){e=c[b+60>>2]|0;e=nc[c[(c[e>>2]|0)+28>>2]&127](e,d)|0;if(e)break;e=a[f>>0]|0}if(e<<24>>24!=5|(d|0)==4){a[f>>0]=d;e=0}else e=0}else e=0;while(0);return e|0}function cl(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;a=c[b+444>>2]|0;if((a|0)!=0?(e=b+452|0,d=c[e>>2]|0,(d|0)>=0):0){a=nc[a&127](c[b+448>>2]|0,d)|0;if(!a)b=-1;else b=(c[e>>2]|0)+1|0;c[e>>2]=b}else a=0;return a|0}function dl(b,d){b=b|0;d=d|0;var 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;n=b+96|0;e=c[n>>2]|0;a:do if((e|0)<(d|0)?(a[b+6>>0]|0)!=0:0){f=b+92|0;q=ng(c[f>>2]|0,d*48|0,0)|0;if(!q)e=7;else{bw(q+(e*48|0)|0,0,(d-e|0)*48|0)|0;c[f>>2]=q;i=b+24|0;j=b+64|0;k=b+148|0;l=b+52|0;m=b+208|0;h=b+72|0;while(1){g=c[i>>2]|0;b=q+(e*48|0)|0;c[q+(e*48|0)+20>>2]=g;if((c[c[j>>2]>>2]|0)!=0?(p=h,o=c[p>>2]|0,p=c[p+4>>2]|0,(p|0)>0|(p|0)==0&o>>>0>0):0){c[b>>2]=o;c[b+4>>2]=p}else{c[b>>2]=c[k>>2];c[b+4>>2]=0}c[q+(e*48|0)+24>>2]=c[l>>2];f=mg(512,0)|0;if(!f)break;bw(f|0,0,512)|0;c[f>>2]=g;c[q+(e*48|0)+16>>2]=f;f=c[m>>2]|0;if(f){c[q+(e*48|0)+28>>2]=c[f+68>>2];c[q+(e*48|0)+32>>2]=c[f+76>>2];c[q+(e*48|0)+36>>2]=c[f+80>>2];c[q+(e*48|0)+40>>2]=c[f+104>>2]}e=e+1|0;c[n>>2]=e;if((e|0)>=(d|0)){e=0;break a}}c[q+(e*48|0)+16>>2]=f;e=7}}else e=0;while(0);return e|0}function el(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;do if(e){f=c[e+4>>2]|0;if(!(c[f>>2]|0)){f=Ko(a,d,e)|0;break}e=f+26|0;g=b[e>>1]|0;if(!(g<<16>>16)){h=a+12|0;c[h>>2]=(c[h>>2]|0)+1}b[e>>1]=g+1<<16>>16;if((d|0)==1)c[a+44>>2]=f}else f=0;while(0);return f|0}function fl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=a+96|0;d=c[h>>2]|0;if((d|0)>0){g=a+92|0;f=0;a=0;do{e=c[g>>2]|0;if((c[e+(f*48|0)+20>>2]|0)>>>0>=b>>>0){a=Zh(c[e+(f*48|0)+16>>2]|0,b)|0|a;d=c[h>>2]|0}f=f+1|0}while((f|0)<(d|0))}else a=0;return a|0}function gl(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=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;y=i;i=i+32|0;if((i|0)>=(j|0))ba();w=y;s=y+16|0;t=y+12|0;v=y+8|0;q=c[a+68>>2]|0;a:do if((q|0)!=0?(b[a+40>>1]|0)!=0:0){r=d*383&8191;u=(q+33|0)>>>12;b:while(1){g=Lo(a,u,s,t,v)|0;if(g)break a;g=(c[s>>2]|0)+(r<<1)|0;if(!(b[g>>1]|0))g=0;else{n=c[v>>2]|0;o=c[s>>2]|0;p=c[t>>2]|0;k=g;l=r;g=0;m=8192;while(1){h=(e[k>>1]|0)+n|0;if(h>>>0<=q>>>0)g=(c[p+(e[k>>1]<<2)>>2]|0)==(d|0)?h:g;if(!m){x=11;break b}l=l+1&8191;k=o+(l<<1)|0;if(!(b[k>>1]|0))break;else m=m+-1|0}}if((u|0)>0&(g|0)==0)u=u+-1|0;else{x=14;break}}if((x|0)==11){c[w>>2]=51262;c[w+4>>2]=10788;Zc(11,13600,w);g=11;break}else if((x|0)==14){c[f>>2]=g;g=0;break}}else x=3;while(0);if((x|0)==3){c[f>>2]=0;g=0}i=y;return g|0}function hl(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=c[b+16>>2]|0;i=c[b+20>>2]|0;f=c[h+152>>2]|0;b=b+4|0;g=c[b>>2]|0;if(!d){d=ow(i+-1|0,0,f|0,((f|0)<0)<<31>>31|0)|0;j=c[h+60>>2]|0;d=pc[c[(c[j>>2]|0)+8>>2]&31](j,g,f,d,C)|0;d=(d|0)==522?0:d}else{k=c[h+208>>2]|0;j=e[k+66>>1]|0;j=j<<16&65536|j&65024;d=ow(j|24|0,0,d+-1|0,0)|0;d=fw(d|0,C|0,56,0)|0;k=c[k+8>>2]|0;d=pc[c[(c[k>>2]|0)+8>>2]&31](k,g,(j|0)<(f|0)?j:f,d,C)|0}do if((i|0)==1)if(!d){g=h+104|0;f=(c[b>>2]|0)+24|0;b=g+16|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(b|0));break}else{g=h+104|0;b=g+16|0;do{a[g>>0]=255;g=g+1|0}while((g|0)<(b|0));break}while(0);return d|0}function il(a){a=a|0;var d=0,e=0;if(b[a+24>>1]&2)Mo(a,1);d=c[a+28>>2]|0;e=d+12|0;c[e>>2]=(c[e>>2]|0)+-1;if((c[a+20>>2]|0)==1)c[d+44>>2]=0;ic[c[8744+136>>2]&63](c[d+40>>2]|0,c[a>>2]|0,1);return}function jl(b){b=b|0;var d=0;d=a[b+16>>0]|0;do if(!(d<<24>>24==0|d<<24>>24==6)){if((d&255)<=1){if(a[b+4>>0]|0)break;yl(b,0,0)|0;break}d=c[3164]|0;if(d)jc[d&3]();Dl(b)|0;d=c[3166]|0;if(d)jc[d&3]()}while(0);Jo(b);return}function kl(d){d=d|0;var e=0,f=0;f=d+26|0;e=(b[f>>1]|0)+-1<<16>>16;b[f>>1]=e;do if(!(e<<16>>16)){e=c[d+28>>2]|0;f=e+12|0;c[f>>2]=(c[f>>2]|0)+-1;if(b[d+24>>1]&2){if(!(c[d+36>>2]|0))break;Mo(d,3);break}if(a[e+28>>0]|0){if((c[d+20>>2]|0)==1)c[e+44>>2]=0;ic[c[8744+136>>2]&63](c[e+40>>2]|0,c[d>>2]|0,0)}}while(0);return}function ll(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;j=c[e+56>>2]|0;k=c[e+52>>2]|0;g=d[e+6>>0]|0;h=j+g|0;i=k+36|0;if(b[k+22>>1]&4)bw(h|0,0,(c[i>>2]|0)-g|0)|0;a[h>>0]=f;h=g+(f>>>1&4^12)|0;l=j+(g+1)|0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=0;a[j+(g+7)>>0]=0;a[j+(g+5)>>0]=(c[i>>2]|0)>>>8;a[j+(g+6)>>0]=c[i>>2];b[e+16>>1]=(c[i>>2]|0)-h;No(e,f)|0;b[e+14>>1]=h;c[e+60>>2]=j+(c[i>>2]|0);c[e+64>>2]=j+(h&65535);a[e+1>>0]=0;b[e+20>>1]=(c[k+32>>2]|0)+65535;b[e+18>>1]=0;a[e>>0]=1;return}function ml(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;if((i|0)>=(j|0))ba();g=h+16|0;f=h;d=a+8|0;c[g+0>>2]=c[d+0>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];e=a+40|0;c[f+0>>2]=c[e+0>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;Kl(a+24|0);e=c[f+8>>2]|0;if(e)do{fg(0,c[e+8>>2]|0);e=c[e>>2]|0}while((e|0)!=0);Kl(f);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;d=c[g+8>>2]|0;if(d)do{gg(0,c[d+8>>2]|0);d=c[d>>2]|0}while((d|0)!=0);Kl(g);Kl(a+56|0);c[a+72>>2]=0;d=a+78|0;e=b[d>>1]|0;if(e&1){f=a+4|0;c[f>>2]=(c[f>>2]|0)+1;b[d>>1]=e&65534}i=h;return}function nl(a){a=a|0;var d=0,e=0;e=a+332|0;d=c[e>>2]|0;c[e>>2]=0;if(d){a=c[a+4>>2]|0;if(a)do{e=a+88|0;b[e>>1]=b[e>>1]|8;a=c[a+52>>2]|0}while((a|0)!=0);do{a=d;d=c[d+24>>2]|0;wn(a)}while((d|0)!=0)}return}function ol(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=a+20|0;b=c[g>>2]|0;j=a+16|0;d=c[j>>2]|0;if((b|0)>2){f=2;e=2;do{b=d+(f<<4)|0;if(!(c[d+(f<<4)+4>>2]|0)){ig(a,c[b>>2]|0);c[b>>2]=0}else{if((e|0)<(f|0)){d=d+(e<<4)|0;c[d+0>>2]=c[b+0>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2]}e=e+1|0}f=f+1|0;b=c[g>>2]|0;d=c[j>>2]|0}while((f|0)<(b|0))}else e=2;bw(d+(e<<4)|0,0,b-e<<4|0)|0;c[g>>2]=e;if((e|0)<3?(h=c[j>>2]|0,i=a+456|0,(h|0)!=(i|0)):0){c[i+0>>2]=c[h+0>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];c[i+16>>2]=c[h+16>>2];c[i+20>>2]=c[h+20>>2];c[i+24>>2]=c[h+24>>2];c[i+28>>2]=c[h+28>>2];ig(a,h);c[j>>2]=i}return}function pl(f){f=f|0;var g=0,h=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;v=i;i=i+16|0;if((i|0)>=(j|0))ba();s=v;p=c[f+16>>2]|0;r=p+152|0;k=((c[p+148>>2]|0)>>>0)/((c[r>>2]|0)>>>0)|0;u=p+20|0;a[u>>0]=d[u>>0]|0|4;o=f+20|0;l=c[o>>2]|0;f=l+-1&0-k;t=f+1|0;h=~f;g=c[p+24>>2]|0;if(l>>>0<=g>>>0){if((f+k|0)>>>0>g>>>0)k=g+1+h|0}else k=l+1+h|0;a:do if((k|0)>0){n=p+56|0;q=p+204|0;m=0;f=0;while(1){h=m+t|0;if((h|0)!=(l|0)?($h(c[n>>2]|0,h)|0)!=0:0){l=Yb[c[8744+132>>2]&63](c[(c[q>>2]|0)+40>>2]|0,h,0)|0;h=el(c[q>>2]|0,h,l)|0;c[s>>2]=h;if(!h)g=0;else{f=(b[h+24>>1]&4)==0?f:1;xg(h);g=0}}else if((h|0)==(((c[2514]|0)/(c[r>>2]|0)|0)+1|0))g=0;else{g=vg(p,h,s,0)|0;if(g)break a;l=c[s>>2]|0;g=ql(l)|0;f=(b[l+24>>1]&4)==0?f:1;xg(l)}m=m+1|0;h=(g|0)==0;if(!((m|0)<(k|0)&h))break;l=c[o>>2]|0}if(h&(f|0)!=0){f=0;do{p=f+t|0;g=Yb[c[8744+132>>2]&63](c[(c[q>>2]|0)+40>>2]|0,p,0)|0;g=el(c[q>>2]|0,p,g)|0;if(g){p=g+24|0;b[p>>1]=e[p>>1]|0|4;xg(g)}f=f+1|0}while((f|0)!=(k|0));g=0}}else g=0;while(0);a[u>>0]=(d[u>>0]|0)&251;i=v;return g|0}function ql(f){f=f|0;var g=0,h=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;B=i;i=i+16|0;if((i|0)>=(j|0))ba();z=B+4|0;q=B;A=c[f+16>>2]|0;u=A+16|0;a:do if((a[u>>0]|0)==2){p=c[A>>2]|0;k=c[A+40>>2]|0;if(!k){do if((c[A+208>>2]|0)==0?(n=A+5|0,(a[n>>0]|0)!=2):0){o=A+24|0;k=c[o>>2]|0;h=mg(512,0)|0;if(!h){c[A+56>>2]=0;g=7;break a}bw(h|0,0,512)|0;c[h>>2]=k;r=A+56|0;c[r>>2]=h;l=A+64|0;m=c[l>>2]|0;do if(!(c[m>>2]|0)){if((a[n>>0]|0)==4){k=m+0|0;h=k+40|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(h|0));c[m>>2]=14696;t=17;break}h=a[A+12>>0]|0;c[q>>2]=0;if((h<<24>>24==0?(c[o>>2]|0)!=0:0)?(g=c[A+60>>2]|0,g=Yb[c[(c[g>>2]|0)+40>>2]&63](g,20,q)|0,(g|0)!=12):0){k=(g|0)==0;if(k&(c[q>>2]|0)!=0){g=1032;break}if(k)t=15}else t=15;if((t|0)==15)g=pc[c[p+24>>2]&31](p,c[A+172>>2]|0,c[l>>2]|0,h<<24>>24!=0?4110:2054,0)|0;if(!g)t=17}else t=17;while(0);if((t|0)==17){c[A+44>>2]=0;g=A+72|0;a[A+19>>0]=0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;g=Oo(A)|0;if(!g)break}ai(c[r>>2]|0);c[r>>2]=0;if(!g){t=20;break a}else break a}while(0);a[u>>0]=3;t=20}else g=k}else t=20;while(0);b:do if((t|0)==20){Po(f);v=A+56|0;w=f+20|0;m=c[w>>2]|0;do if(!($h(c[v>>2]|0,m)|0))if(!(c[A+208>>2]|0)){if(m>>>0<=(c[A+28>>2]|0)>>>0?(y=A+64|0,x=c[y>>2]|0,(c[x>>2]|0)!=0):0){t=A+72|0;n=t;r=c[n>>2]|0;n=c[n+4>>2]|0;s=c[f+4>>2]|0;k=c[A+48>>2]|0;u=A+152|0;l=(c[u>>2]|0)+-200|0;if((l|0)>0)do{k=(d[s+l>>0]|0)+k|0;l=l+-200|0}while((l|0)>0);q=f+24|0;b[q>>1]=e[q>>1]|4;a[z>>0]=m>>>24;q=z+1|0;a[q>>0]=m>>>16;p=z+2|0;a[p>>0]=m>>>8;o=z+3|0;a[o>>0]=m;g=pc[c[(c[x>>2]|0)+12>>2]&31](x,z,4,r,n)|0;if(g)break b;m=c[y>>2]|0;g=c[u>>2]|0;h=fw(r|0,n|0,4,0)|0;l=C;g=pc[c[(c[m>>2]|0)+12>>2]&31](m,s,g,h,l)|0;if(g)break b;r=c[y>>2]|0;g=c[u>>2]|0;g=fw(h|0,l|0,g|0,((g|0)<0)<<31>>31|0)|0;a[z>>0]=k>>>24;a[q>>0]=k>>>16;a[p>>0]=k>>>8;a[o>>0]=k;g=pc[c[(c[r>>2]|0)+12>>2]&31](r,z,4,g,C)|0;if(g)break b;g=(c[u>>2]|0)+8|0;r=t;r=fw(g|0,((g|0)<0)<<31>>31|0,c[r>>2]|0,c[r+4>>2]|0)|0;g=t;c[g>>2]=r;c[g+4>>2]=C;g=A+44|0;c[g>>2]=(c[g>>2]|0)+1;g=Zh(c[v>>2]|0,c[w>>2]|0)|0;g=fl(A,c[w>>2]|0)|0|g;if(!g){t=34;break}else break b}if((a[u>>0]|0)!=4){t=f+24|0;b[t>>1]=e[t>>1]|4;t=34}else t=34}else t=34;else if((c[A+96>>2]|0)!=0?(Qo(f)|0)!=0:0)t=34;else g=0;while(0);if((t|0)==34)if((c[A+96>>2]|0)>0?(Qo(f)|0)!=0:0)g=Ro(f)|0;else g=0;k=A+24|0;h=c[w>>2]|0;if((c[k>>2]|0)>>>0>>0)c[k>>2]=h}while(0);i=B;return g|0}function rl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+128|0;if((i|0)>=(j|0))ba();k=l;e=c[a>>2]|0;d=(e|0)==0;if(!d){b=e;do{a=b;b=c[b+32>>2]|0;c[a+12>>2]=b}while((b|0)!=0);b=k+0|0;a=b+128|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));if(d)a=0;else{g=k+124|0;do{b=e+12|0;a=e;e=c[b>>2]|0;c[b>>2]=0;b=0;do{f=k+(b<<2)|0;d=c[f>>2]|0;if(!d){d=f;h=8;break}a=So(d,a)|0;c[f>>2]=0;b=b+1|0}while((b|0)<31);if((h|0)==8){h=0;c[d>>2]=a}if((b|0)==31)c[g>>2]=So(c[g>>2]|0,a)|0}while((e|0)!=0);a=c[k>>2]|0}}else{b=k+0|0;a=b+128|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));a=0}b=1;do{a=So(a,c[k+(b<<2)>>2]|0)|0;b=b+1|0}while((b|0)!=32);i=l;return a|0}function sl(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var 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,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+80|0;if((i|0)>=(j|0))ba();p=J+32|0;q=J+28|0;z=J;s=J+40|0;H=J+24|0;c[H>>2]=f;w=(h|0)==0;if(!w){c[H>>2]=f;if(!f){f=0;n=0}else{n=0;m=H;do{x=(c[f+20>>2]|0)>>>0>g>>>0;E=f+12|0;n=n+(x&1^1)|0;m=x?m:E;f=c[E>>2]|0;c[m>>2]=f}while((f|0)!=0);f=c[H>>2]|0}}else n=1;E=e+192|0;c[E>>2]=(c[E>>2]|0)+n;if((c[f+20>>2]|0)==1)ul(f);F=c[e+208>>2]|0;G=c[e+152>>2]|0;r=a[e+10>>0]|0;x=r&255;l=F+40|0;if(!(b[l>>1]|0)){do if(c[(c[c[F+32>>2]>>2]|0)+96>>2]|0){_c(4,p);m=F+43|0;if(!(a[m>>0]|0)){n=c[F+4>>2]|0;n=lc[c[(c[n>>2]|0)+56>>2]&31](n,4,4,10)|0;if((n|0)==5){n=m;y=14;break}else if(n)break}To(F,c[p>>2]|0);if(!(a[m>>0]|0)){n=c[F+4>>2]|0;lc[c[(c[n>>2]|0)+56>>2]&31](n,4,4,9)|0;n=m;y=14}else{n=m;y=14}}else{n=F+43|0;y=14}while(0);if((y|0)==14){if(!(a[n>>0]|0)){E=c[F+4>>2]|0;lc[c[(c[E>>2]|0)+56>>2]&31](E,3,1,5)|0}b[l>>1]=-1;m=0;do{m=m+1|0;n=Io(F,q,1,m)|0}while((n|0)==-1)}if(n)k=n;else y=19}else y=19;a:do if((y|0)==19){E=F+68|0;q=c[E>>2]|0;if(!q){a[s>>0]=55;a[s+1>>0]=127;a[s+2>>0]=6;a[s+3>>0]=-126;a[s+4>>0]=0;a[s+5>>0]=45;a[s+6>>0]=-30;a[s+7>>0]=24;a[s+8>>0]=G>>>24;a[s+9>>0]=G>>>16;a[s+10>>0]=G>>>8;a[s+11>>0]=G;v=c[F+104>>2]|0;a[s+12>>0]=v>>>24;a[s+13>>0]=v>>>16;a[s+14>>0]=v>>>8;a[s+15>>0]=v;if(!v)_c(8,F+84|0);l=F+84|0;n=l;n=d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24;l=l+4|0;l=d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24;p=s+16|0;m=p;a[m>>0]=n;a[m+1>>0]=n>>8;a[m+2>>0]=n>>16;a[m+3>>0]=n>>24;p=p+4|0;a[p>>0]=l;a[p+1>>0]=l>>8;a[p+2>>0]=l>>16;a[p+3>>0]=l>>24;p=s+24|0;l=s;m=0;n=0;do{m=m+n+(c[l>>2]|0)|0;n=m+n+(c[l+4>>2]|0)|0;l=l+8|0}while(l>>>0

>>0);a[p>>0]=m>>>24;a[s+25>>0]=m>>>16;a[s+26>>0]=m>>>8;a[s+27>>0]=m;a[s+28>>0]=n>>>24;a[s+29>>0]=n>>>16;a[s+30>>0]=n>>>8;a[s+31>>0]=n;c[F+36>>2]=G;a[F+65>>0]=0;c[F+76>>2]=m;c[F+80>>2]=n;a[F+47>>0]=1;m=F+8|0;n=c[m>>2]|0;n=pc[c[(c[n>>2]|0)+12>>2]&31](n,s,32,0,0)|0;if(n){k=n;break}if((a[F+48>>0]|0)!=0&r<<24>>24!=0?(k=c[m>>2]|0,k=nc[c[(c[k>>2]|0)+20>>2]&127](k,x&19)|0,(k|0)!=0):0)break}else m=F+8|0;c[z>>2]=F;s=c[m>>2]|0;c[z+4>>2]=s;t=z+8|0;u=t;c[u>>2]=0;c[u+4>>2]=0;c[z+16>>2]=x;c[z+20>>2]=G;u=G+24|0;v=((u|0)<0)<<31>>31;n=ow(q|0,0,u|0,v|0)|0;n=fw(n|0,C|0,32,0)|0;k=C;if(!f){l=n;r=0}else{o=k;l=q;r=f;while(1){q=l+1|0;if(w)l=0;else l=(c[r+12>>2]|0)==0?g:0;k=Uo(z,r,l,n,o)|0;if(k)break a;n=fw(n|0,o|0,u|0,v|0)|0;k=C;p=c[r+12>>2]|0;if(!p){l=n;break}else{o=k;l=q;r=p}}}w=(h|0)!=0;do if(!((x&32|0)==0|w^1)){if(!(a[F+49>>0]|0)){m=0;k=nc[c[(c[s>>2]|0)+20>>2]&127](s,x&19)|0;break}n=c[m>>2]|0;m=c[(c[n>>2]|0)+44>>2]|0;if(m){n=hc[m&127](n)|0;if((n|0)<32){m=512;n=0}else y=37}else{n=4096;y=37}if((y|0)==37){y=(n|0)>65536;m=y?65536:n;n=y?0:((n|0)<0)<<31>>31}y=fw(l|0,k|0,-1,-1)|0;y=fw(y|0,C|0,m|0,n|0)|0;p=C;o=nw(y|0,p|0,m|0,n|0)|0;o=$v(y|0,p|0,o|0,C|0)|0;p=C;y=t;c[y>>2]=o;c[y+4>>2]=p;if((k|0)<(p|0)|(k|0)==(p|0)&l>>>0>>0){n=k;m=0;while(1){k=Uo(z,r,g,l,n)|0;if(k)break a;l=fw(l|0,n|0,u|0,v|0)|0;n=C;m=m+1|0;if(!((n|0)<(p|0)|(n|0)==(p|0)&l>>>0>>0)){k=0;break}}}else{m=0;k=0}}else{m=0;k=0}while(0);if((w?(A=F+47|0,(a[A>>0]|0)!=0):0)?(D=F+16|0,B=c[D>>2]|0,D=c[D+4>>2]|0,(D|0)>-1|(D|0)==-1&B>>>0>4294967295):0){h=ow(m+q|0,0,u|0,v|0)|0;h=fw(h|0,C|0,32,0)|0;z=C;y=(z|0)>(D|0)|(z|0)==(D|0)&h>>>0>B>>>0;Vo(F,y?h:B,y?z:D);a[A>>0]=0}l=c[E>>2]|0;if((f|0)!=0&(k|0)==0)do{l=l+1|0;k=Wo(F,l,c[f+20>>2]|0)|0;f=c[f+12>>2]|0}while((f|0)!=0&(k|0)==0);f=(k|0)==0;if(f&(m|0)>0){n=r+20|0;do{l=l+1|0;m=m+-1|0;k=Wo(F,l,c[n>>2]|0)|0;f=(k|0)==0}while(f&(m|0)>0)}if(f){b[F+66>>1]=G&65280|G>>>16;c[E>>2]=l;if(w){E=F+60|0;c[E>>2]=(c[E>>2]|0)+1;c[F+72>>2]=g;Xo(F);c[F+12>>2]=l}}else if(k)break;l=e+88|0;k=c[l>>2]|0;if((k|0)!=0?(I=c[H>>2]|0,(I|0)!=0):0){f=k;k=I;while(1){Yo(f,c[k+20>>2]|0,c[k+4>>2]|0);k=c[k+12>>2]|0;if(!k){k=0;break a}f=c[l>>2]|0}}else k=0}while(0);i=J;return k|0}function tl(d){d=d|0;var f=0,g=0;f=d+24|0;if(((b[f>>1]&2)!=0?(Mo(d,1),b[f>>1]=e[f>>1]&65529,(b[d+26>>1]|0)==0):0)?(g=c[d+28>>2]|0,(a[g+28>>0]|0)!=0):0){if((c[d+20>>2]|0)==1)c[g+44>>2]=0;ic[c[8744+136>>2]&63](c[g+40>>2]|0,c[d>>2]|0,0)}return}function ul(b){b=b|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+16>>2]|0;f=((d[f+105>>0]|0)<<16|(d[f+104>>0]|0)<<24|(d[f+106>>0]|0)<<8|(d[f+107>>0]|0))+1|0;b=b+4|0;e=c[b>>2]|0;i=f>>>24&255;a[e+24>>0]=i;h=f>>>16&255;a[e+25>>0]=h;g=f>>>8&255;a[e+26>>0]=g;f=f&255;a[e+27>>0]=f;e=c[b>>2]|0;a[e+92>>0]=i;a[e+93>>0]=h;a[e+94>>0]=g;a[e+95>>0]=f;b=c[b>>2]|0;a[b+96>>0]=0;a[b+97>>0]=45;a[b+98>>0]=-26;a[b+99>>0]=9;return}function vl(f,g){f=f|0;g=g|0;var h=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;v=i;i=i+32|0;if((i|0)>=(j|0))ba();o=v+16|0;r=v;k=Zo(f)|0;a:do if(!k){do if(!(a[f+7>>0]|0)){t=f+64|0;if((c[c[t>>2]>>2]|0)!=0?(a[f+5>>0]|0)!=4:0){n=c[f+60>>2]|0;n=hc[c[(c[n>>2]|0)+48>>2]&127](n)|0;s=(n&512|0)==0;if(s){l=r;c[l>>2]=-117058087;c[l+4>>2]=-681336544;l=c[f+44>>2]|0;a[r+8>>0]=l>>>24;a[r+9>>0]=l>>>16;a[r+10>>0]=l>>>8;a[r+11>>0]=l;l=f+72|0;k=c[l>>2]|0;l=c[l+4>>2]|0;if((k|0)==0&(l|0)==0){l=0;k=0}else{k=fw(k|0,l|0,-1,-1)|0;l=c[f+148>>2]|0;k=mw(k|0,C|0,l|0,0)|0;k=fw(k|0,C|0,1,0)|0;l=ow(k|0,C|0,l|0,0)|0;k=C}m=c[t>>2]|0;m=pc[c[(c[m>>2]|0)+8>>2]&31](m,o,8,l,k)|0;if(!m){if(!(Vv(o,14808,8)|0)){p=c[t>>2]|0;p=pc[c[(c[p>>2]|0)+12>>2]&31](p,14976,1,l,k)|0;q=12}}else{p=m;q=12}if((q|0)==12?!((p|0)==0|(p|0)==522):0){h=p;break a}k=n&1024;if((a[f+8>>0]|0)!=0&(k|0)==0?(h=c[t>>2]|0,h=nc[c[(c[h>>2]|0)+20>>2]&127](h,d[f+11>>0]|0)|0,(h|0)!=0):0)break a;q=c[t>>2]|0;h=f+80|0;h=pc[c[(c[q>>2]|0)+12>>2]&31](q,r,12,c[h>>2]|0,c[h+4>>2]|0)|0;if(h)break a}else k=n&1024;if((k|0)==0?(r=c[t>>2]|0,u=a[f+11>>0]|0,u=nc[c[(c[r>>2]|0)+20>>2]&127](r,(u<<24>>24==3?16:0)|u&255)|0,(u|0)!=0):0){h=u;break a}p=f+72|0;q=c[p+4>>2]|0;r=f+80|0;c[r>>2]=c[p>>2];c[r+4>>2]=q;if((g|0)==0|s^1)break;c[f+44>>2]=0;h=Oo(f)|0;if(!h)break;else break a}q=f+72|0;r=c[q+4>>2]|0;s=f+80|0;c[s>>2]=c[q>>2];c[s+4>>2]=r}while(0);k=c[f+204>>2]|0;h=c[k>>2]|0;if(h)do{s=h+24|0;b[s>>1]=e[s>>1]&65531;h=c[h+32>>2]|0}while((h|0)!=0);c[k+8>>2]=c[k+4>>2];a[f+16>>0]=4;h=0}else h=k;while(0);i=v;return h|0}function wl(d,e){d=d|0;e=e|0;var f=0,g=0,h=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;v=i;i=i+16|0;if((i|0)>=(j|0))ba();l=v;u=d+60|0;g=c[u>>2]|0;if(!((c[g>>2]|0)==0?(f=c[d>>2]|0,f=pc[c[f+24>>2]&31](f,0,g,c[d+144>>2]&556897|30,0)|0,(f|0)!=0):0)){g=d+36|0;f=c[g>>2]|0;h=d+24|0;k=c[h>>2]|0;do if(f>>>0>>0){if((c[e+12>>2]|0)==0?(c[e+20>>2]|0)>>>0<=f>>>0:0)break;n=c[d+152>>2]|0;n=ow(k|0,0,n|0,((n|0)<0)<<31>>31|0)|0;o=l;c[o>>2]=n;c[o+4>>2]=C;o=c[u>>2]|0;Yb[c[(c[o>>2]|0)+40>>2]&63](o,5,l)|0;c[g>>2]=c[h>>2]}while(0);if(!e)f=0;else{p=d+24|0;q=d+152|0;r=d+104|0;s=d+32|0;t=d+192|0;o=d+88|0;do{n=c[e+20>>2]|0;if(n>>>0<=(c[p>>2]|0)>>>0?(b[e+24>>1]&32)==0:0){l=c[q>>2]|0;d=ow(l|0,((l|0)<0)<<31>>31|0,n+-1|0,0)|0;k=C;h=(n|0)==1;if(h){ul(e);l=c[q>>2]|0}m=e+4|0;g=c[m>>2]|0;f=c[u>>2]|0;f=pc[c[(c[f>>2]|0)+12>>2]&31](f,g,l,d,k)|0;if(h){d=r+0|0;l=g+24|0;k=d+16|0;do{a[d>>0]=a[l>>0]|0;d=d+1|0;l=l+1|0}while((d|0)<(k|0))}if(n>>>0>(c[s>>2]|0)>>>0)c[s>>2]=n;c[t>>2]=(c[t>>2]|0)+1;Yo(c[o>>2]|0,n,c[m>>2]|0)}else f=0;e=c[e+12>>2]|0}while((f|0)==0&(e|0)!=0)}}i=v;return f|0}function xl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();m=q;n=b+60|0;f=c[n>>2]|0;g=c[f>>2]|0;do if((g|0)!=0?((a[b+16>>0]|0)+-1&255)>2:0){o=c[b+152>>2]|0;g=nc[c[g+24>>2]&127](f,m)|0;h=((o|0)<0)<<31>>31;k=ow(o|0,h|0,d|0,0)|0;l=C;if(!g){f=m;g=c[f>>2]|0;f=c[f+4>>2]|0;if((g|0)==(k|0)&(f|0)==(l|0))e=0;else{if(!((f|0)>(l|0)|(f|0)==(l|0)&g>>>0>k>>>0)){m=fw(g|0,f|0,o|0,h|0)|0;g=C;if(!((g|0)>(l|0)|(g|0)==(l|0)&m>>>0>k>>>0)){p=c[b+200>>2]|0;bw(p|0,0,o|0)|0;n=c[n>>2]|0;e=$v(k|0,l|0,o|0,h|0)|0;e=pc[c[(c[n>>2]|0)+12>>2]&31](n,p,o,e,C)|0;p=9}}else{e=c[n>>2]|0;e=Yb[c[(c[e>>2]|0)+16>>2]&63](e,k,l)|0;p=9}if((p|0)==9?(e|0)!=0:0)break;c[b+32>>2]=d;e=0}}else e=g}else e=0;while(0);i=q;return e|0} -function Vr(f,g,k,l,m){f=f|0;g=g|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;if((i|0)>=(j|0))ba();u=x;v=x+8|0;c[v>>2]=0;a:do if(!g){c[m>>2]=0;n=0}else{o=a[g>>0]|0;if(o<<24>>24==-98)do{g=c[g+12>>2]|0;o=a[g>>0]|0}while(o<<24>>24==-98);if(o<<24>>24==-97)q=d[g+38>>0]|0;else q=o&255;if((q|0)==38){p=Tq(c[g+8>>2]|0,0)|0;n=Vr(f,c[g+12>>2]|0,k,p,m)|0;o=c[m>>2]|0;if(!o)break;cm(o,p,1);bm(c[m>>2]|0,l,1);break}else if((q|0)==157){g=c[g+12>>2]|0;q=a[g>>0]|0;if((q&-2)<<24>>24==-124){p=-1;o=-1;t=q&255;q=26016;w=12}else w=30}else{p=1;o=0;t=q;q=10360;w=12}b:do if((w|0)==12){c:do switch(t|0){case 134:{n=ih(f,40,0)|0;if(!n){c[v>>2]=n;break c}r=n+0|0;s=r+40|0;do{a[r>>0]=0;r=r+1|0}while((r|0)<(s|0));b[n+8>>1]=1;c[n+32>>2]=f;c[v>>2]=n;o=(c[g+8>>2]|0)+2|0;g=o;while(1)if(!(a[g>>0]|0))break;else g=g+1|0;v=(g-o&1073741823)+-1|0;Tg(n,Ut(f,o,v)|0,(v|0)/2|0,0,75)|0;o=n;n=0;break b}case 157:{g=c[g+12>>2]|0;w=30;break b}case 101:{n=ih(f,40,0)|0;if(!n){c[v>>2]=n;break c}else{r=n+0|0;s=r+40|0;do{a[r>>0]=0;r=r+1|0}while((r|0)<(s|0));b[n+8>>1]=1;c[n+32>>2]=f;c[v>>2]=n;o=n;n=0;break b}}case 97:case 132:case 133:{n=ih(f,40,0)|0;if(!n){c[v>>2]=n;break c}r=n+0|0;s=r+40|0;do{a[r>>0]=0;r=r+1|0}while((r|0)<(s|0));b[n+8>>1]=1;c[n+32>>2]=f;c[v>>2]=n;do if(!(c[g+4>>2]&1024)){p=c[g+8>>2]|0;c[u>>2]=q;c[u+4>>2]=p;p=qh(f,19456,u)|0;if(!p)break c;if(n)Tg(n,p,-1,1,75)|0}else{q=c[g+8>>2]|0;q=ow(q|0,((q|0)<0)<<31>>31|0,p|0,o|0)|0;p=C;g=n+8|0;if(!(b[g>>1]&9312)){v=n;c[v>>2]=q;c[v+4>>2]=p;b[g>>1]=4;break}else{Vg(n,q,p);break}}while(0);if((t&-2|0)==132&l<<24>>24==65)bm(n,67,1);else bm(n,l,1);o=n+8|0;g=e[o>>1]|0;if(g&12)b[o>>1]=g&65533;if(k<<24>>24==1){o=n;n=0;break b}o=n;n=Ul(n,k&255)|0;break b}default:{o=0;n=0;break b}}while(0);a[f+65>>0]=1;ig(f,0);Ih(n);n=7;break a}while(0);if((w|0)==30){u=(Vr(f,g,k,l,v)|0)==0;o=c[v>>2]|0;if(u&(o|0)!=0){kp(o);p=o+8|0;g=b[p>>1]|0;do if(!(g&8)){q=o;n=c[q>>2]|0;q=c[q+4>>2]|0;if((n|0)==0&(q|0)==-2147483648){h[o>>3]=9223372036854775808.0;b[p>>1]=g&48640|8;break}else{u=$v(0,0,n|0,q|0)|0;v=o;c[v>>2]=u;c[v+4>>2]=C;break}}else h[o>>3]=-+h[o>>3];while(0);bm(o,l,k);n=0}else n=0}c[m>>2]=o}while(0);i=x;return n|0}function Wr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;do if((d|0)!=0?(g=b+19|0,h=a[g>>0]|0,(h&255)<8):0){f=0;e=b+116|0;while(1){if((c[e+12>>2]|0)==(d|0)){f=5;break}f=f+1|0;if((f|0)>=10){f=7;break}else e=e+20|0}if((f|0)==5){a[e+6>>0]=1;break}else if((f|0)==7){a[g>>0]=h+1<<24>>24;c[b+((h&255)<<2)+24>>2]=d;break}}while(0);return}function Xr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;if((i|0)>=(j|0))ba();n=o;e=b+484|0;l=c[e>>2]|0;m=c[b>>2]|0;do if((l|0)!=0?(Zr(b),c[b+512>>2]=0,(c[l+52>>2]|0)>=1):0){if(a[m+145>>0]|0)if(!(Ek((c[l+68>>2]|0)+8|0,c[l>>2]|0,l)|0)){c[e>>2]=0;break}else{a[m+65>>0]=1;break}if(d)c[b+500>>2]=(c[d>>2]|0)-(c[b+496>>2]|0)+(c[d+4>>2]|0);c[n>>2]=b+496;k=qh(m,25256,n)|0;d=c[l+68>>2]|0;a:do if(d){f=c[m+20>>2]|0;if((f|0)>0){g=c[m+16>>2]|0;h=0;while(1){e=h+1|0;if((c[g+(h<<4)+12>>2]|0)==(d|0)){e=h;break a}if((e|0)<(f|0))h=e;else break}}else e=0}else e=-1e6;while(0);g=c[l>>2]|0;h=c[b+384>>2]|0;c[n>>2]=c[(c[m+16>>2]|0)+(e<<4)>>2];c[n+4>>2]=(e|0)==1?13184:13208;c[n+8>>2]=g;c[n+12>>2]=g;c[n+16>>2]=k;c[n+20>>2]=h;xr(b,25280,n);ig(m,k);k=Kq(b)|0;zr(b,e);sh(k,144,0,0,0)|0;c[n>>2]=c[l>>2];Er(k,e,qh(m,25368,n)|0);b=b+72|0;n=(c[b>>2]|0)+1|0;c[b>>2]=n;b=c[l>>2]|0;th(k,sh(k,97,0,n,0)|0,b,0);sh(k,147,e,n,0)|0}while(0);i=o;return}function Yr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=b+52|0;i=c[h>>2]|0;e=i+1|0;c[h>>2]=e;g=(i<<2)+8|0;f=b+56|0;g=no(a,c[f>>2]|0,g,((g|0)<0)<<31>>31)|0;if(!g){if((i|0)>0){b=0;do{ig(a,c[(c[f>>2]|0)+(b<<2)>>2]|0);b=b+1|0}while((b|0)!=(i|0))}ig(a,d);ig(a,c[f>>2]|0);c[h>>2]=0}else{c[g+(i<<2)>>2]=d;c[g+(e<<2)>>2]=0}c[f>>2]=g;return}function Zr(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b+512>>2]|0;if((d|0)!=0?(g=c[b+484>>2]|0,(g|0)!=0):0){e=c[b+516>>2]|0;f=c[b>>2]|0;b=fw(e|0,((e|0)<0)<<31>>31|0,1,0)|0;b=ih(f,b,C)|0;if(!b)b=0;else{gw(b|0,d|0,e|0)|0;a[b+e>>0]=0}Yr(f,g,b)}return}function _r(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();l=o;m=c[b>>2]|0;n=Sq(m,e)|0;k=(d|0)!=0;if((n|0)!=0&k?(h=c[d>>2]|0,(h|0)>0):0){e=h;h=0;do{if(!($c(n,c[d+(h<<4)+8>>2]|0)|0)){c[l>>2]=n;ph(b,25184,l);e=c[d>>2]|0}h=h+1|0}while((h|0)<(e|0))}if(k){h=(c[d>>2]<<4)+24|0;h=no(m,d,h,((h|0)<0)<<31>>31)|0;if(!h)e=10;else{d=h;e=11}}else{e=ih(m,24,0)|0;if(!e)e=10;else{h=e+0|0;d=h+24|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(d|0));d=e;e=11}}if((e|0)==10){Jk(m,f);Ik(m,g,1);ig(m,n)}else if((e|0)==11){m=d+8|0;c[m+(c[d>>2]<<4)+8>>2]=g;g=c[d>>2]|0;c[m+(g<<4)+4>>2]=f;c[m+(g<<4)>>2]=n;c[m+(g<<4)+12>>2]=0;c[d>>2]=g+1}i=o;return d|0}function $r(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+96|0;if((i|0)>=(j|0))ba();m=n+48|0;f=n;g=c[c[b+32>>2]>>2]|0;h=m+0|0;k=g+0|0;l=h+48|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));if((a[b+43>>0]|0)!=2){h=c[b+4>>2]|0;_b[c[(c[h>>2]|0)+60>>2]&31](h)}h=f+0|0;k=g+48|0;l=h+48|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));if((Vv(m,f,48)|0)==0?(a[m+12>>0]|0)!=0:0){k=m+40|0;l=m;g=0;f=0;do{g=g+f+(c[l>>2]|0)|0;f=g+f+(c[l+4>>2]|0)|0;l=l+8|0}while(l>>>0>>0);if((g|0)==(c[k>>2]|0)?(f|0)==(c[m+44>>2]|0):0){f=b+52|0;if(!(Vv(f,m,48)|0))f=0;else{c[d>>2]=1;h=f+0|0;k=m+0|0;l=h+48|0;do{c[h>>2]=c[k>>2];h=h+4|0;k=k+4|0}while((h|0)<(l|0));f=e[b+66>>1]|0;c[b+36>>2]=f<<16&65536|f&65024;f=0}}else f=1}else f=1;i=n;return f|0}function as(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;b=pc[c[(c[a>>2]|0)+8>>2]&31](a,g,4,b,e)|0;if(!b)c[f>>2]=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);i=h;return b|0}function bs(a,b){a=a|0;b=b|0;var c=0,d=0,f=0;if(b>>>0<0|(b|0)==0&a>>>0<8)if(b>>>0<0|(b|0)==0&a>>>0<2)a=0;else{c=40;do{c=(c&65535)+65526|0;a=ew(a|0,b|0,1)|0;b=C}while(b>>>0<0|(b|0)==0&a>>>0<8);c=c&65535;d=11}else{if(b>>>0>0|(b|0)==0&a>>>0>255){f=a;d=b;c=40;while(1){c=(c&65535)+40|0;a=iw(f|0,d|0,4)|0;b=C;if(d>>>0>0|(d|0)==0&f>>>0>4095){f=a;d=b}else break}c=c&65535}else c=40;if(b>>>0>0|(b|0)==0&a>>>0>15){f=a;while(1){c=(c&65535)+10&65535;a=iw(f|0,b|0,1)|0;if(b>>>0>0|(b|0)==0&f>>>0>31){f=a;b=C}else break}d=11}else d=11}if((d|0)==11)a=(c&65535)+65526+(e[13496+((a&7)<<1)>>1]|0)&65535;return a|0}function cs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=c[b+408>>2]|0;k=(k|0)==0?b:k;i=k+396|0;h=c[i>>2]|0;j=c[k+400>>2]|0;a:do if((h|0)>0){b=0;while(1){if((c[j+(b<<4)>>2]|0)==(d|0)?(c[j+(b<<4)+4>>2]|0)==(e|0):0)break;b=b+1|0;if((b|0)>=(h|0)){l=8;break a}}b=j+(b<<4)+8|0;if(!(a[b>>0]|0))h=f<<24>>24!=0&1;else h=1;a[b>>0]=h}else l=8;while(0);do if((l|0)==8){b=(h<<4)+16|0;b=Sl(c[k>>2]|0,j,b,((b|0)<0)<<31>>31)|0;c[k+400>>2]=b;if(!b){c[i>>2]=0;a[(c[k>>2]|0)+65>>0]=1;break}else{h=c[i>>2]|0;c[i>>2]=h+1;c[b+(h<<4)>>2]=d;c[b+(h<<4)+4>>2]=e;a[b+(h<<4)+8>>0]=f;c[b+(h<<4)+12>>2]=g;break}}while(0);return}function ds(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=b[f+48>>1]|0;l=i&65535;h=e[f+46>>1]|0;m=d+64|0;if(!(c[m>>2]|0)){g=c[d>>2]|0;if(!(a[f+51>>0]&8))k=Ns(g,l,0)|0;else k=Ns(g,h,l-h|0)|0;if(k){if(i<<16>>16){j=f+32|0;f=f+28|0;h=k+16|0;g=0;do{i=c[(c[j>>2]|0)+(g<<2)>>2]|0;if(!(Wv(i,11152)|0))i=0;else i=_q(d,i)|0;c[k+(g<<2)+20>>2]=i;a[(c[h>>2]|0)+g>>0]=a[(c[f>>2]|0)+g>>0]|0;g=g+1|0}while((g|0)<(l|0))}g=(c[m>>2]|0)==0;if(!g){g=(c[k>>2]|0)+-1|0;c[k>>2]=g;if(!g){Sc(k);g=0}else g=0}else g=g?k:0}else g=0}else g=0;return g|0}function es(d,f,g){d=d|0;f=f|0;g=g|0;var h=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;F=i;i=i+112|0;if((i|0)>=(j|0))ba();A=F;C=F+100|0;D=F+96|0;m=F+48|0;B=c[d+8>>2]|0;c[C>>2]=0;c[D>>2]=0;z=c[d>>2]|0;a:do if(!B)g=0;else{b:do if(!f)E=16;else{q=a[f>>0]|0;p=q&255;do switch(p|0){case 19:case 96:{sh(B,p,Xt(d,c[f+12>>2]|0,C)|0,g,0)|0;break b}case 157:{k=f+12|0;h=c[k>>2]|0;l=a[h>>0]|0;if(l<<24>>24==-124){Vt(d,h,1,g);break b}else if(l<<24>>24==-123){Wt(B,c[h+8>>2]|0,1,g);break b}else{a[m>>0]=-124;c[m+4>>2]=17408;c[m+8>>2]=0;A=Xt(d,m,C)|0;sh(B,90,Xt(d,c[k>>2]|0,D)|0,A,g)|0;break b}}case 134:{h=(c[f+8>>2]|0)+2|0;k=h;while(1)if(!(a[k>>0]|0))break;else k=k+1|0;z=(k-h&1073741823)+-1|0;A=Ut(c[B>>2]|0,h,z)|0;th(B,sh(B,30,(z|0)/2|0,g,0)|0,A,-1);break b}case 94:case 88:case 87:case 92:case 86:case 85:case 93:case 90:case 91:case 89:case 71:case 72:{A=Xt(d,c[f+12>>2]|0,C)|0;sh(B,p,Xt(d,c[f+16>>2]|0,D)|0,A,g)|0;break b}case 79:case 78:case 83:case 80:case 81:case 82:{y=f+12|0;A=Xt(d,c[y>>2]|0,C)|0;z=f+16|0;B=Xt(d,c[z>>2]|0,D)|0;Yt(d,c[y>>2]|0,c[z>>2]|0,p,A,B,g,32);break b}case 97:{A=c[f+8>>2]|0;th(B,sh(B,97,0,g,0)|0,A,0);break b}case 133:{Wt(B,c[f+8>>2]|0,0,g);break b}case 24:{g=es(d,c[f+12>>2]|0,g)|0;break b}case 155:{k=c[f+40>>2]|0;if(!k){c[A>>2]=c[f+8>>2];ph(d,28936,A);break b}else{g=c[(c[k+40>>2]|0)+(b[f+34>>1]<<4)+8>>2]|0;break b}}case 135:{k=f+32|0;sh(B,31,b[k>>1]|0,g,0)|0;if(!(a[(c[f+8>>2]|0)+1>>0]|0))break b;th(B,-1,c[(c[d+472>>2]|0)+((b[k>>1]|0)+-1<<2)>>2]|0,-2);break b}case 74:{q=c[f+12>>2]|0;n=c[(c[f+20>>2]|0)+4>>2]|0;h=c[n>>2]|0;o=Xt(d,q,C)|0;p=Xt(d,h,D)|0;m=d+19|0;k=a[m>>0]|0;if(k<<24>>24){A=k+-1<<24>>24;a[m>>0]=A;l=c[d+((A&255)<<2)+24>>2]|0;if(!(A<<24>>24))E=103;else{A=k+-2<<24>>24;a[m>>0]=A;m=c[d+((A&255)<<2)+24>>2]|0}}else{E=d+72|0;l=(c[E>>2]|0)+1|0;c[E>>2]=l;E=103}if((E|0)==103){A=d+72|0;m=(c[A>>2]|0)+1|0;c[A>>2]=m}Yt(d,q,h,83,o,p,l,32);A=c[n+20>>2]|0;Wr(d,c[D>>2]|0);Yt(d,q,A,81,o,Xt(d,A,D)|0,m,32);sh(B,72,l,m,g)|0;Wr(d,l);Wr(d,m);break b}case 119:case 20:{g=au(d,f,0,0)|0;break b}case 101:{E=16;break b}case 159:{g=c[f+28>>2]|0;break b}case 156:{h=c[f+40>>2]|0;k=b[f+34>>1]|0;l=c[h+28>>2]|0;if(!(a[h>>0]|0)){g=c[l+(k*24|0)+16>>2]|0;break b}if(a[h+1>>0]|0){sh(B,47,c[h+8>>2]|0,c[l+(k*24|0)+12>>2]|0,g)|0;break b}break}case 154:break;case 148:case 73:{y=f+12|0;A=Xt(d,c[y>>2]|0,C)|0;z=f+16|0;B=Xt(d,c[z>>2]|0,D)|0;Yt(d,c[y>>2]|0,c[z>>2]|0,q<<24>>24==73?79:78,A,B,g,160);break b}case 62:{h=c[f+44>>2]|0;A=_((b[h+38>>1]|0)+1|0,c[f+28>>2]|0)|0;k=f+32|0;sh(B,132,(b[k>>1]|0)+1+A|0,g,0)|0;k=b[k>>1]|0;if(k<<16>>16<=-1)break b;if((a[(c[h+4>>2]|0)+((k<<16>>16)*24|0)+21>>0]|0)!=69)break b;sh(B,39,g,0,0)|0;break b}case 57:{if(!(c[d+412>>2]|0)){ph(d,29e3,A);g=0;break a}l=a[f+1>>0]|0;if(l<<24>>24!=2){h=c[f+8>>2]|0;if(l<<24>>24==4){th(B,sh(B,24,0,4,0)|0,h,0);break b}}else{h=c[d+408>>2]|0;a[((h|0)==0?d:h)+21>>0]=1;h=c[f+8>>2]|0}vs(d,1811,l<<24>>24,h,0,0);break b}case 77:case 76:{sh(B,25,1,g,0)|0;h=sh(B,p,Xt(d,c[f+12>>2]|0,C)|0,0,0)|0;sh(B,25,0,g,0)|0;k=c[B+32>>2]|0;if(k>>>0>h>>>0)c[(c[B+4>>2]|0)+(h*20|0)+8>>2]=k;c[(c[B+24>>2]|0)+88>>2]=k+-1;break b}case 153:{o=a[z+62>>0]|0;x=f+4|0;if((c[x>>2]&16384|0)==0?(n=c[f+20>>2]|0,(n|0)!=0):0){y=c[n>>2]|0;v=1;w=n}else{y=0;v=0;w=0}q=c[f+8>>2]|0;if(!q)p=0;else{p=q;while(1)if(!(a[p>>0]|0))break;else p=p+1|0;p=p-q&1073741823}m=Oh(z,q,p,y,o,0)|0;if((m|0)!=0?(c[m+12>>2]|0)!=0:0){u=m+2|0;n=e[u>>1]|0;if(n&512){m=ts(B)|0;l=w+4|0;Nq(d,c[c[l>>2]>>2]|0,g);if((y|0)>1){k=d+100|0;h=1;do{sh(B,77,g,m,0)|0;$s(d,g,1);c[k>>2]=(c[k>>2]|0)+1;Nq(d,c[(c[l>>2]|0)+(h*20|0)>>2]|0,g);Zt(d);h=h+1|0}while((h|0)!=(y|0))}l=c[B+24>>2]|0;k=~m;if((m|0)<0?(t=c[l+112>>2]|0,(t|0)!=0):0)c[t+(k<<2)>>2]=c[B+32>>2];c[l+88>>2]=(c[B+32>>2]|0)+-1;break b}if(n&1024){Nq(d,c[c[w+4>>2]>>2]|0,g);break b}t=(y|0)>0;if(t){p=w+4|0;o=A+20|0;n=A+4|0;k=A+24|0;q=0;h=0;l=0;do{if((h|0)<32?(f=c[(c[p>>2]|0)+(h*20|0)>>2]|0,c[A+0>>2]=0,c[A+4>>2]=0,c[A+8>>2]=0,c[A+12>>2]=0,c[A+16>>2]=0,c[A+20>>2]=0,a[o>>0]=1,c[A>>2]=78,c[n>>2]=79,c[k>>2]=0,ns(A,f)|0,(a[o>>0]|0)!=0):0)q=q|1<>1]&32)==0|(l|0)!=0))l=_t(d,c[(c[p>>2]|0)+(h*20|0)>>2]|0)|0;h=h+1|0}while((h|0)!=(y|0));r=q}else{r=0;l=0}if(v){do if(!r){p=d+60|0;q=c[p>>2]|0;o=d+56|0;n=c[o>>2]|0;if((n|0)<(y|0)){A=d+72|0;q=c[A>>2]|0;c[A>>2]=q+y;q=q+1|0;break}else{c[p>>2]=q+y;c[o>>2]=n-y;break}}else{A=d+72|0;q=c[A>>2]|0;c[A>>2]=q+y;q=q+1|0}while(0);n=b[u>>1]|0;if((n&192)!=0?(s=c[c[w+4>>2]>>2]|0,A=a[s>>0]|0,A<<24>>24==-100|A<<24>>24==-102):0)a[s+38>>0]=n&192;A=d+100|0;c[A>>2]=(c[A>>2]|0)+1;Zs(d,w,q,3);Zt(d)}else q=0;if((y|0)>1?(c[x>>2]&128|0)!=0:0)m=$t(z,m,y,c[(c[w+4>>2]|0)+20>>2]|0)|0;else if(t)m=$t(z,m,y,c[c[w+4>>2]>>2]|0)|0;if(b[m+2>>1]&32){if(!l)l=c[z+8>>2]|0;th(B,sh(B,36,0,0,0)|0,l,-4)}th(B,sh(B,1,r,q,g)|0,m,-5);l=c[B+4>>2]|0;if(l)a[l+(((c[B+32>>2]|0)+-1|0)*20|0)+3>>0]=y;if(!((y|0)!=0&(r|0)==0))break b;$s(d,q,y);k=d+56|0;if((c[k>>2]|0)>=(y|0))break b;c[k>>2]=y;c[d+60>>2]=q;break b}c[A>>2]=p;c[A+4>>2]=q;ph(d,28968,A);break b}case 75:{A=ts(B)|0;n=ts(B)|0;sh(B,28,0,g,0)|0;bu(d,f,A,n);sh(B,25,1,g,0)|0;k=B+24|0;h=c[k>>2]|0;l=~A;if((A|0)<0?(o=c[h+112>>2]|0,(o|0)!=0):0)c[o+(l<<2)>>2]=c[B+32>>2];m=B+32|0;c[h+88>>2]=(c[m>>2]|0)+-1;sh(B,37,g,0,0)|0;l=c[k>>2]|0;k=~n;if((n|0)<0?(r=c[l+112>>2]|0,(r|0)!=0):0)c[r+(k<<2)>>2]=c[m>>2];c[l+88>>2]=(c[m>>2]|0)+-1;break b}case 158:case 95:{g=es(d,c[f+12>>2]|0,g)|0;break b}case 132:{Vt(d,f,0,g);break b}case 38:{k=es(d,c[f+12>>2]|0,g)|0;if((k|0)!=(g|0))sh(B,34,k,g,0)|0;sh(B,40,g,(Tq(c[f+8>>2]|0,0)|0)<<24>>24,0)|0;$s(d,g,1);break b}default:{u=c[f+20>>2]|0;s=u+4|0;t=c[s>>2]|0;u=c[u>>2]|0;v=ts(B)|0;q=c[f+12>>2]|0;f=(q|0)!=0;if(f){p=m+0|0;o=q+0|0;n=p+48|0;do{c[p>>2]=c[o>>2];p=p+4|0;o=o+4|0}while((p|0)<(n|0));q=Xt(d,q,C)|0;a[m+38>>0]=a[m>>0]|0;a[m>>0]=-97;c[m+28>>2]=q;q=m+4|0;c[q>>2]=c[q>>2]&-4097;a[A>>0]=79;c[A+12>>2]=m;c[C>>2]=0;q=A}else q=0;r=u+-1|0;if((r|0)>0){h=d+100|0;n=A+16|0;m=B+24|0;l=B+32|0;k=0;p=q;while(1){c[h>>2]=(c[h>>2]|0)+1;q=c[t+(k*20|0)>>2]|0;if(f){c[n>>2]=q;q=p}A=ts(B)|0;ct(d,q,A,16);Nq(d,c[t+((k|1)*20|0)>>2]|0,g);sh(B,16,0,v,0)|0;Zt(d);p=c[m>>2]|0;o=~A;if((A|0)<0?(w=c[p+112>>2]|0,(w|0)!=0):0)c[w+(o<<2)>>2]=c[l>>2];c[p+88>>2]=(c[l>>2]|0)+-1;k=k+2|0;if((k|0)>=(r|0))break;else p=q}}if(!(u&1))sh(B,28,0,g,0)|0;else{A=d+100|0;c[A>>2]=(c[A>>2]|0)+1;Nq(d,c[(c[s>>2]|0)+(r*20|0)>>2]|0,g);Zt(d)}l=c[B+24>>2]|0;k=~v;if((v|0)<0?(x=c[l+112>>2]|0,(x|0)!=0):0)c[x+(k<<2)>>2]=c[B+32>>2];c[l+88>>2]=(c[B+32>>2]|0)+-1;break b}}while(0);h=c[f+28>>2]|0;do if((h|0)<0){h=c[d+92>>2]|0;if((h|0)>0){g=(b[f+32>>1]|0)+h|0;break b}else{h=c[d+96>>2]|0;break}}while(0);g=_s(d,c[f+44>>2]|0,b[f+32>>1]|0,h,g,a[f+38>>0]|0)|0}while(0);if((E|0)==16)sh(B,28,0,g,0)|0;Wr(d,c[C>>2]|0);Wr(d,c[D>>2]|0)}while(0);i=F;return g|0}function fs(a,b){a=a|0;b=b|0;var d=0;d=Kq(a)|0;cs(a,b,1,1,(b|0)==1?13184:13208);th(d,sh(d,55,0,1,b)|0,5,-14);b=a+68|0;if(!(c[b>>2]|0))c[b>>2]=1;return}function gs(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=f+48|0;if((e[h>>1]|0|0)<(g|0)){i=g*7|0;d=ih(d,i,((i|0)<0)<<31>>31)|0;if(!d)d=7;else{bw(d|0,0,i|0)|0;j=f+32|0;gw(d|0,c[j>>2]|0,(e[h>>1]|0)<<2|0)|0;c[j>>2]=d;j=d+(g<<2)|0;i=f+4|0;gw(j|0,c[i>>2]|0,(e[h>>1]|0)<<1|0)|0;c[i>>2]=j;i=d+(g*6|0)|0;d=f+28|0;gw(i|0,c[d>>2]|0,e[h>>1]|0|0)|0;c[d>>2]=i;b[h>>1]=g;d=f+51|0;a[d>>0]=a[d>>0]|16;d=0}}else d=0;return d|0}function hs(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();k=p;o=p+4|0;do if(!d)f=0;else{l=c[a>>2]|0;n=d+24|0;h=l+460|0;g=(c[h>>2]|0)+(c[n>>2]|0)|0;f=c[(c[l>>2]|0)+100>>2]|0;if((f|0)<(g|0)){c[k>>2]=f;ph(l,27152,k);f=1;break}c[h>>2]=g;k=a+28|0;h=e[k>>1]|0;m=h&4098;b[k>>1]=h&61437;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o+16>>2]=0;c[o+20>>2]=0;c[o>>2]=82;c[o+4>>2]=83;h=o+12|0;c[h>>2]=l;c[o+24>>2]=a;ns(o,d)|0;o=(c[a>>2]|0)+460|0;c[o>>2]=(c[o>>2]|0)-(c[n>>2]|0);if(!((c[a+24>>2]|0)<=0?(c[(c[h>>2]|0)+64>>2]|0)<=0:0)){o=d+4|0;c[o>>2]=c[o>>2]|8}h=b[k>>1]|0;g=d+4|0;f=c[g>>2]|0;if(h&2){f=f|2;c[g>>2]=f}b[k>>1]=h&65535|m;f=f>>>3&1}while(0);i=p;return f|0}function is(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[(c[a+12>>2]|0)+4>>2]|0;f=b[a+48>>1]|0;if(!(f<<16>>16)){e=0;f=0}else{j=c[a+4>>2]|0;g=f&65535;h=0;e=0;do{f=b[j+(h<<1)>>1]|0;if(f<<16>>16<0)f=1;else f=d[i+((f<<16>>16)*24|0)+22>>0]|0;e=f+e|0;h=h+1|0}while((h|0)<(g|0));e=e<<2;f=0}b[a+44>>1]=bs(e,f)|0;return}function js(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[d>>2]|0;g=j+24|0;i=c[g>>2]|0;c[g>>2]=i&-97|64;zs(d,e,0);if(!(c[d+64>>2]|0)){while(1){f=c[e+52>>2]|0;if(!f){h=e;break}else e=f}c[g>>2]=i;e=ih(j,76,0)|0;if(e){f=e+0|0;g=f+76|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));b[e+40>>1]=1;c[e>>2]=0;b[e+28>>1]=200;eu(d,c[h>>2]|0,e+38|0,e+4|0);fu(d,e,h);b[e+36>>1]=-1;if(a[j+65>>0]|0){gg(j,e);e=0}}else e=0}else e=0;return e|0}function ks(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[d>>2]|0;g=a[e>>0]|0;a:do if(!(g<<24>>24)){i=0;h=0}else{i=g;j=0;while(1){h=j+1|0;if(!(i<<24>>24==95?1:(a[10368+(i&255)>>0]&6)!=0)){h=j;break a}i=a[e+h>>0]|0;if(!(i<<24>>24)){i=0;break}else j=h}}while(0);if((((g&255)+-48|0)>>>0>=10?(bi(e,h)|0)==27:0)?!((h|0)==0|i<<24>>24!=0):0)k=0;else{a[b+f>>0]=34;k=1;g=a[e>>0]|0;f=f+1|0}if(g<<24>>24){h=e;j=0;do{i=f+1|0;a[b+f>>0]=g;if((a[h>>0]|0)==34){a[b+i>>0]=34;f=f+2|0}else f=i;j=j+1|0;h=e+j|0;g=a[h>>0]|0}while(g<<24>>24!=0)}if(k){a[b+f>>0]=34;f=f+1|0}a[b+f>>0]=0;c[d>>2]=f;return}function ls(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=b+20|0;g=a[f>>0]|0;if(g<<24>>24==2?(c[e+4>>2]&1|0)!=0:0){a[f>>0]=0;f=2}else h=4;a:do if((h|0)==4)switch(d[e>>0]|0|0){case 135:if(g<<24>>24==5){a[e>>0]=101;f=0;break a}else if(g<<24>>24==4){a[f>>0]=0;f=2;break a}else{f=0;break a}case 153:{if((g&255)>3){f=0;break a}if(c[e+4>>2]&524288){f=0;break a}a[f>>0]=0;f=2;break a}case 156:case 155:case 154:case 27:{if(g<<24>>24==3?(c[e+28>>2]|0)==(c[b+24>>2]|0):0){f=0;break a}a[f>>0]=0;f=2;break a}default:{f=0;break a}}while(0);return f|0}function ms(b,c){b=b|0;c=c|0;a[b+20>>0]=0;return 2}function ns(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if(!b)b=0;else{d=nc[c[a>>2]&127](a,b)|0;do if((d|0)==0?(e=b+4|0,(c[e>>2]&16384|0)==0):0){if(ns(a,c[b+12>>2]|0)|0){b=2;break a}if(ns(a,c[b+16>>2]|0)|0){b=2;break a}b=b+20|0;if(!(c[e>>2]&2048))if(!(hu(a,c[b>>2]|0)|0))break;else{b=2;break a}else if(!(gu(a,c[b>>2]|0)|0))break;else{b=2;break a}}while(0);b=d&2}while(0);return b|0}function os(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;do if(e)if(!f)g=e;else{if((iu(e)|0)==0?(iu(f)|0)==0:0){g=ih(d,48,0)|0;if(g){h=g+0|0;i=h+48|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(i|0));a[g>>0]=72;b[g+34>>1]=-1;c[g+24>>2]=1}ps(d,g,e,f);break}Ck(d,e);Ck(d,f);g=jr(d,132,20616,0)|0}else g=f;while(0);return g|0}function ps(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(!b){Ck(a,d);Ck(a,e)}else{if(e){c[b+16>>2]=e;a=b+4|0;c[a>>2]=c[a>>2]|c[e+4>>2]&2097408}if(d){c[b+12>>2]=d;a=b+4|0;c[a>>2]=c[a>>2]|c[d+4>>2]&2097408}Et(b)}return}function qs(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;h=d<<16>>16;j=(h<<2)+63&-8;k=h<<1;l=k+2|0;i=(h+7+k+l&-8)+j|0;g=i+e|0;e=ih(a,g,((g|0)<0)<<31>>31)|0;if(e){bw(e|0,0,g|0)|0;c[e+32>>2]=e+56;c[e+8>>2]=e+j;g=j+l|0;c[e+4>>2]=e+g;c[e+28>>2]=e+(g+k);b[e+48>>1]=d;b[e+46>>1]=h+65535;c[f>>2]=e+i}return e|0}function rs(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=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=i;i=i+16|0;if((i|0)>=(j|0))ba();t=z;p=c[d+12>>2]|0;o=b+68|0;w=c[o>>2]|0;y=w+1|0;c[o>>2]=w+2;n=c[b>>2]|0;l=c[d+24>>2]|0;a:do if(l){h=c[n+20>>2]|0;if((h|0)>0){g=c[n+16>>2]|0;m=0;while(1){k=m+1|0;if((c[g+(m<<4)+12>>2]|0)==(l|0)){k=m;break a}if((k|0)<(h|0))m=k;else break}}else k=0}else k=-1e6;while(0);if((Oq(b,27,c[d>>2]|0,0,c[(c[n+16>>2]|0)+(k<<4)>>2]|0)|0)==0?(cs(b,k,c[p+32>>2]|0,1,c[p>>2]|0),x=Kq(b)|0,(x|0)!=0):0){if((f|0)>-1)q=f;else q=c[d+40>>2]|0;u=ds(b,d)|0;v=c[o>>2]|0;c[o>>2]=v+1;s=d+46|0;h=e[s>>1]|0;if(u)c[u>>2]=(c[u>>2]|0)+1;th(x,sh(x,58,v,0,h)|0,u,-6);Mq(b,w,k,p,54);n=sh(x,108,w,0,0)|0;h=b+19|0;g=a[h>>0]|0;if(!(g<<24>>24)){p=b+72|0;r=(c[p>>2]|0)+1|0;c[p>>2]=r}else{r=g+-1<<24>>24;a[h>>0]=r;r=c[b+((r&255)<<2)+24>>2]|0}Lt(b,d,w,r,0,t,0,0)|0;sh(x,109,v,r,0)|0;Mt(b,c[t>>2]|0);sh(x,9,w,n+1|0,0)|0;p=x+32|0;m=c[p>>2]|0;if(m>>>0>n>>>0)c[(c[x+4>>2]|0)+(n*20|0)+8>>2]=m;l=x+24|0;c[(c[l>>2]|0)+88>>2]=m+-1;if((f|0)<0)sh(x,118,q,k,0)|0;th(x,sh(x,55,y,q,k)|0,u,-6);o=x+4|0;h=c[o>>2]|0;if(h)a[h+(((c[p>>2]|0)+-1|0)*20|0)+3>>0]=(f>>31)+4&252|1;n=sh(x,106,v,0,0)|0;h=c[p>>2]|0;if((a[d+50>>0]|0)!=0&(u|0)!=0){m=h+3|0;sh(x,16,0,m,0)|0;h=c[p>>2]|0;q=e[s>>1]|0;th(x,sh(x,99,v,m,r)|0,q,-14);ju(b,2,d)}sh(x,100,v,r,y)|0;sh(x,110,y,r,1)|0;g=c[o>>2]|0;if(g)a[g+(((c[p>>2]|0)+-1|0)*20|0)+3>>0]=16;Wr(b,r);sh(x,5,v,h,0)|0;g=c[p>>2]|0;if(g>>>0>n>>>0)c[(c[o>>2]|0)+(n*20|0)+8>>2]=g;c[(c[l>>2]|0)+88>>2]=g+-1;sh(x,61,w,0,0)|0;sh(x,61,y,0,0)|0;sh(x,61,v,0,0)|0}i=z;return}function ss(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();q=r;p=c[e>>2]|0;if(!g){g=Un(p,f,h,0)|0;if(!g)n=4;else n=3}else n=3;if((n|0)==3)if(!(c[g+12>>2]|0))n=4;else n=14;if((n|0)==4){l=f&255;k=p+224|0;if(c[k>>2]|0){m=gh(p,h)|0;if(m){mc[c[k>>2]&15](c[p+232>>2]|0,p,l,m);ig(p,m);n=7}}else n=7;if((n|0)==7?(o=p+228|0,(c[o>>2]|0)!=0):0){k=ih(p,40,0)|0;if(!k)k=0;else{m=k+0|0;l=m+40|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(l|0));b[k+8>>1]=1;c[k+32>>2]=p;Tg(k,h,-1,1,0)|0}g=Og(k,2)|0;if(g)mc[c[o>>2]&15](c[p+232>>2]|0,p,d[p+62>>0]|0,g);Ih(k)}g=Un(p,f,h,0)|0;if(!g)n=19;else n=14}a:do if((n|0)==14)if(!(c[g+12>>2]|0)){l=c[g>>2]|0;m=0;while(1){k=Un(p,a[26816+m>>0]|0,l,0)|0;m=m+1|0;if(c[k+12>>2]|0)break;if((m|0)>=3){n=19;break a}}c[g+0>>2]=c[k+0>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[g+16>>2]=0}while(0);if((n|0)==19){c[q>>2]=h;ph(e,26784,q);g=0}i=r;return g|0}function ts(a){a=a|0;var b=0,d=0;a=c[a+24>>2]|0;d=a+108|0;b=c[d>>2]|0;c[d>>2]=b+1;if(!(b+-1&b)){d=a+112|0;a=Sl(c[a>>2]|0,c[d>>2]|0,b<<3|4,0)|0;c[d>>2]=a}else a=c[a+112>>2]|0;if(a)c[a+(b<<2)>>2]=-1;return ~b|0}function us(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;if(e){g=c[e>>2]|0;if((g|0)>0){h=(g*72|0)+8|0;g=h;h=((h|0)<0)<<31>>31}else{g=80;h=0}g=ih(d,g,h)|0;if(g){h=c[e>>2]|0;c[g+4>>2]=h;c[g>>2]=h;if((c[e>>2]|0)>0){h=g+8|0;j=0;do{c[h+(j*72|0)>>2]=c[e+(j*72|0)+8>>2];c[h+(j*72|0)+4>>2]=gh(d,c[e+(j*72|0)+12>>2]|0)|0;c[h+(j*72|0)+8>>2]=gh(d,c[e+(j*72|0)+16>>2]|0)|0;c[h+(j*72|0)+12>>2]=gh(d,c[e+(j*72|0)+20>>2]|0)|0;a[h+(j*72|0)+36>>0]=a[e+(j*72|0)+44>>0]|0;c[h+(j*72|0)+40>>2]=c[e+(j*72|0)+48>>2];c[h+(j*72|0)+24>>2]=c[e+(j*72|0)+32>>2];c[h+(j*72|0)+28>>2]=c[e+(j*72|0)+36>>2];k=e+(j*72|0)+45|0;i=h+(j*72|0)+37|0;l=a[i>>0]&-3|a[k>>0]&2;a[i>>0]=l;l=l&-5|a[k>>0]&4;a[i>>0]=l;a[i>>0]=l&-9|a[k>>0]&8;c[h+(j*72|0)+64>>2]=gh(d,c[e+(j*72|0)+72>>2]|0)|0;a[i>>0]=a[i>>0]&-2|a[k>>0]&1;c[h+(j*72|0)+68>>2]=c[e+(j*72|0)+76>>2];i=c[e+(j*72|0)+24>>2]|0;c[h+(j*72|0)+16>>2]=i;if(i){i=i+40|0;b[i>>1]=(b[i>>1]|0)+1<<16>>16}c[h+(j*72|0)+20>>2]=cr(d,c[e+(j*72|0)+28>>2]|0,f)|0;c[h+(j*72|0)+44>>2]=Ir(d,c[e+(j*72|0)+52>>2]|0,f,0)|0;c[h+(j*72|0)+48>>2]=Jr(d,c[e+(j*72|0)+56>>2]|0)|0;l=e+(j*72|0)+64|0;k=c[l+4>>2]|0;i=h+(j*72|0)+56|0;c[i>>2]=c[l>>2];c[i+4>>2]=k;j=j+1|0}while((j|0)<(c[e>>2]|0))}}else g=0}else g=0;return g|0}function vs(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;i=Kq(b)|0;if((e|0)==2){k=c[b+408>>2]|0;a[((k|0)==0?b:k)+21>>0]=1}th(i,sh(i,24,d,e,0)|0,f,g<<24>>24);if(h<<24>>24!=0?(j=c[i+4>>2]|0,(j|0)!=0):0)a[j+(((c[i+32>>2]|0)+-1|0)*20|0)+3>>0]=h;return}function ws(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[(c[(c[b>>2]|0)+16>>2]|0)+28>>2]|0;do if(!(a[b+438>>0]|0)){h=c[d+68>>2]|0;if((e|0)!=(h|0)?(f=c[e+48>>2]|0,(f|0)!=0):0){g=d+64|0;e=0;while(1){b=c[f+8>>2]|0;if((c[b+24>>2]|0)==(h|0)?($c(c[b+4>>2]|0,c[d>>2]|0)|0)==0:0){if(!e)e=c[g>>2]|0;c[b+32>>2]=e}else b=e;f=c[f>>2]|0;if(!f)break;else e=b}if(b)break}b=c[d+64>>2]|0}else b=0;while(0);return b|0}function xs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=c[b+32>>2]|0;k=b+8|0;i=b+68|0;f=0;while(1){g=(f|0)==0;b=g|(j|0)<(f|0)?j:0;d=c[k>>2]|0;if(!d)h=b;else{do{e=c[d+40>>2]|0;b=(g|(e|0)<(f|0))&(e|0)>(b|0)?e:b;d=c[d+20>>2]|0}while((d|0)!=0);h=b}if(!h)break;b=c[a>>2]|0;f=c[i>>2]|0;a:do if(f){g=c[b+20>>2]|0;if((g|0)>0){d=c[b+16>>2]|0;e=0;while(1){b=e+1|0;if((c[d+(e<<4)+12>>2]|0)==(f|0)){b=e;break a}if((b|0)<(g|0))e=b;else break}}else b=0}else b=-1e6;while(0);Ar(a,h,b);f=h}return}function ys(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a:do if((b|0)!=0?(d=c[b>>2]|0,(d|0)>0):0){h=a+68|0;f=0;g=b+8|0;while(1){e=g+40|0;if((c[e>>2]|0)>-1)break a;i=c[h>>2]|0;c[h>>2]=i+1;c[e>>2]=i;e=c[g+20>>2]|0;if(e){ys(a,c[e+32>>2]|0);d=c[b>>2]|0}f=f+1|0;if((f|0)>=(d|0))break;else g=g+72|0}}while(0);return}function zs(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;if((i|0)>=(j|0))ba();m=n;if(((e|0)!=0?(l=(c[d>>2]|0)+65|0,(a[l>>0]|0)==0):0)?(h=e+6|0,g=b[h>>1]|0,(g&32)==0):0){c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m+24>>2]=0;c[m>>2]=84;c[m+12>>2]=d;k=m+4|0;if(a[d+22>>0]|0){c[k>>2]=85;gu(m,e)|0;g=b[h>>1]|0}c[k>>2]=86;if(!(g&256))c[m+8>>2]=9;gu(m,e)|0;g=d+64|0;if((((c[g>>2]|0)==0?(a[l>>0]|0)==0:0)?(c[m+0>>2]=0,c[m+4>>2]=0,c[m+8>>2]=0,c[m+12>>2]=0,c[m+16>>2]=0,c[m+20>>2]=0,c[m>>2]=82,c[m+4>>2]=83,c[m+12>>2]=d,c[m+24>>2]=f,gu(m,e)|0,(c[g>>2]|0)==0):0)?(a[l>>0]|0)==0:0){c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m+24>>2]=0;c[m+8>>2]=10;c[m>>2]=84;c[m+12>>2]=d;gu(m,e)|0}}i=n;return}function As(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if(a)do{d=c[a+36>>2]|0;if((d|0)!=0?(h=c[d+24>>2]|0,(h|0)>(c[b>>2]|0)):0)c[b>>2]=h;d=c[a+44>>2]|0;if((d|0)!=0?(e=c[d+24>>2]|0,(e|0)>(c[b>>2]|0)):0)c[b>>2]=e;d=c[a+60>>2]|0;if((d|0)!=0?(f=c[d+24>>2]|0,(f|0)>(c[b>>2]|0)):0)c[b>>2]=f;d=c[a+64>>2]|0;if((d|0)!=0?(g=c[d+24>>2]|0,(g|0)>(c[b>>2]|0)):0)c[b>>2]=g;pu(c[a>>2]|0,b);pu(c[a+40>>2]|0,b);pu(c[a+48>>2]|0,b);a=c[a+52>>2]|0}while((a|0)!=0);return}function Bs(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=c[b>>2]|0;h=g+d|0;if(h>>>0>(c[b+4>>2]|0)>>>0){i=no(a,b,(h*72|0)+8|0,0)|0;if(i){do if(!a)b=hc[c[8744+48>>2]&127](i)|0;else{if((c[a+276>>2]|0)>>>0<=i>>>0?(c[a+280>>2]|0)>>>0>i>>>0:0){b=e[a+248>>1]|0;break}b=hc[c[8744+48>>2]&127](i)|0}while(0);c[i+4>>2]=(((b+-80|0)>>>0)/72|0)+1;b=i;g=c[i>>2]|0;j=10}}else j=10;if((j|0)==10){if((g|0)>(f|0)){do{g=g+-1|0;h=b+((g+d|0)*72|0)+8|0;a=b+(g*72|0)+8|0;i=h+72|0;do{c[h>>2]=c[a>>2];h=h+4|0;a=a+4|0}while((h|0)<(i|0))}while((g|0)>(f|0));g=c[b>>2]|0}c[b>>2]=g+d;bw(b+(f*72|0)+8|0,0,d*72|0)|0;g=f+d|0;if((d|0)>0)do{c[b+(f*72|0)+48>>2]=-1;f=f+1|0}while((f|0)<(g|0))}return b|0}function Cs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((b|0)!=0?(c[b>>2]|0)>0:0){f=b+4|0;g=c[f>>2]|0;h=0;do{i=Ds(a,c[g+(h*20|0)>>2]|0,d,e)|0;g=c[f>>2]|0;c[g+(h*20|0)>>2]=i;h=h+1|0}while((h|0)<(c[b>>2]|0))}return}function Ds(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do if(e){if((a[e>>0]|0)==-102?(c[e+28>>2]|0)==(f|0):0){h=b[e+32>>1]|0;if(h<<16>>16<0){a[e>>0]=101;break}else{h=Ir(d,c[(c[g+4>>2]|0)+((h<<16>>16)*20|0)>>2]|0,0,0)|0;Ck(d,e);e=h;break}}h=e+12|0;c[h>>2]=Ds(d,c[h>>2]|0,f,g)|0;h=e+16|0;c[h>>2]=Ds(d,c[h>>2]|0,f,g)|0;h=e+20|0;if(!(c[e+4>>2]&2048)){Cs(d,c[h>>2]|0,f,g);break}else{qu(d,c[h>>2]|0,f,g);break}}else e=0;while(0);return e|0}function Es(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[c[b>>2]>>2]|0;e=b;g=1;while(1){b=c[e+52>>2]|0;if(!b){f=5;break}if((c[c[b>>2]>>2]|0)==(f|0)){e=b;g=g+1|0}else{f=3;break}}a:do if((f|0)==3){Fs(a,b);b=1}else if((f|0)==5)if(!e)b=0;else{h=((g|0)<0)<<31>>31;f=0;while(1){i=e+52|0;c[i>>2]=0;b=er(a,e,d)|0;c[i>>2]=f;if(b)break a;b=e+24|0;c[b>>2]=g;c[b+4>>2]=h;b=c[e+56>>2]|0;if(!b){b=0;break a}e=b;f=c[b+52>>2]|0}}while(0);return b|0}function Fs(a,e){a=a|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;if(!(b[e+6>>1]&128)){e=d[e+4>>0]|0;if((e|0)==117)e=35352;else if((e|0)==118)e=35336;else if((e|0)==116)e=35320;else e=35360;c[f>>2]=e;ph(a,35232,f)}else ph(a,35184,f);i=g;return}function Gs(d,f,g){d=d|0;f=f|0;g=g|0;var h=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;E=i;i=i+32|0;if((i|0)>=(j|0))ba();v=E;k=c[f+32>>2]|0;n=c[c[f>>2]>>2]|0;s=c[d+8>>2]|0;t=f+52|0;u=c[t>>2]|0;if(!(Oq(d,33,0,0,0)|0)){w=ts(s)|0;Ks(d,f,w);x=f+60|0;y=c[x>>2]|0;z=f+64|0;A=c[z>>2]|0;B=f+8|0;p=c[B>>2]|0;C=f+12|0;q=c[C>>2]|0;c[z>>2]=0;c[x>>2]=0;c[C>>2]=0;c[B>>2]=0;B=f+48|0;C=c[B>>2]|0;l=c[k>>2]|0;a:do if((l|0)>0){m=0;while(1){if(a[k+(m*72|0)+45>>0]&8)break;m=m+1|0;if((m|0)>=(l|0)){o=0;break a}}o=c[k+(m*72|0)+48>>2]|0}else o=0;while(0);m=d+68|0;k=c[m>>2]|0;l=k+1|0;c[m>>2]=l;h=(C|0)!=0;if((a[f+4>>0]|0)==115){c[m>>2]=k+2;m=h?8:6}else{m=h?7:5;l=0}a[v>>0]=m;c[v+4>>2]=k;a[v+1>>0]=0;c[v+8>>2]=0;c[v+12>>2]=0;F=d+72|0;m=(c[F>>2]|0)+1|0;c[F>>2]=m;sh(s,60,o,m,n)|0;if(h){n=ru(d,f)|0;th(s,sh(s,57,k,(c[C>>2]|0)+2|0,0)|0,n,-6);c[v+16>>2]=C}else sh(s,57,k,n,0)|0;if(l){c[f+16>>2]=sh(s,57,l,0,0)|0;l=f+6|0;b[l>>1]=e[l>>1]|8}c[B>>2]=0;n=u+56|0;c[n>>2]=0;l=er(d,u,v)|0;c[n>>2]=f;if(!l){n=sh(s,108,k,w,0)|0;sh(s,104,o,0,0)|0;if(h)sh(s,47,k,(c[C>>2]|0)+1|0,m)|0;else sh(s,102,k,m,0)|0;sh(s,95,k,0,0)|0;l=ts(s)|0;et(s,q,l);Ls(d,f,c[f>>2]|0,o,0,0,g,l,w);if(p)sh(s,140,p,w,0)|0;h=s+24|0;m=c[h>>2]|0;k=~l;if((l|0)<0?(r=c[m+112>>2]|0,(r|0)!=0):0)c[r+(k<<2)>>2]=c[s+32>>2];l=s+32|0;c[m+88>>2]=(c[l>>2]|0)+-1;c[t>>2]=0;er(d,f,v)|0;c[t>>2]=u;sh(s,16,0,n,0)|0;h=c[h>>2]|0;k=~w;if((w|0)<0?(D=c[h+112>>2]|0,(D|0)!=0):0)c[D+(k<<2)>>2]=c[l>>2];c[h+88>>2]=(c[l>>2]|0)+-1}Jk(c[d>>2]|0,c[B>>2]|0);c[B>>2]=C;c[x>>2]=y;c[z>>2]=A}i=E;return}function Hs(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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;Y=i;i=i+48|0;if((i|0)>=(j|0))ba();r=Y+40|0;K=Y+20|0;L=Y;U=c[f>>2]|0;R=c[f+8>>2]|0;T=ts(R)|0;Q=ts(R)|0;V=g+4|0;M=a[V>>0]|0;W=g+52|0;X=c[W>>2]|0;t=g+48|0;m=c[t>>2]|0;l=c[m>>2]|0;O=M<<24>>24==116;a:do if(!O?(p=U+65|0,(a[p>>0]|0)==0):0){n=r+4|0;q=1;while(1){if((q|0)>(c[c[g>>2]>>2]|0)){N=l;s=14;break a}b:do if((l|0)>0){k=0;o=c[m+4>>2]|0;while(1){if((e[o+16>>1]|0)==(q|0))break b;k=k+1|0;if((k|0)<(l|0))o=o+20|0;else break}}else k=0;while(0);if((k|0)==(l|0)){c[r>>2]=0;c[n>>2]=0;k=jr(U,132,r,0)|0;if(!k){k=7;break a}G=k+4|0;c[G>>2]=c[G>>2]|1024;c[k+8>>2]=q;k=hr(f,m,k)|0;if(!k)k=0;else{b[(c[k+4>>2]|0)+(l*20|0)+16>>1]=q;l=l+1|0}}else k=m;if(!(a[p>>0]|0)){q=q+1|0;m=k}else{N=l;m=k;s=14;break}}}else{N=l;s=14}while(0);if((s|0)==14){J=ih(U,N<<2,0)|0;if(!J)H=0;else{if((N|0)>0){l=0;k=c[m+4>>2]|0;while(1){c[J+(l<<2)>>2]=(e[k+16>>1]|0)+-1;l=l+1|0;if((l|0)==(N|0))break;else k=k+20|0}}H=ru(f,g)|0}c[t>>2]=m;p=X+48|0;c[p>>2]=Lr(c[f>>2]|0,m,0)|0;if(!O){m=c[c[g>>2]>>2]|0;l=f+72|0;G=c[l>>2]|0;o=G+1|0;c[l>>2]=m+1+G;sh(R,25,0,o,0)|0;l=Ns(U,m,1)|0;if(l)if((m|0)>0){k=l+16|0;n=0;do{c[l+(n<<2)+20>>2]=Os(f,g,n)|0;a[(c[k>>2]|0)+n>>0]=0;n=n+1|0}while((n|0)!=(m|0));u=l}else u=l;else u=0}else{u=0;o=0}c[W>>2]=0;I=X+56|0;c[I>>2]=0;su(f,g,c[t>>2]|0,26880)|0;if(!(c[X+52>>2]|0))su(f,X,c[p>>2]|0,26880)|0;Ks(f,g,T);n=g+8|0;l=c[n>>2]|0;p=f+72|0;if((l|0)!=0&O){s=c[p>>2]|0;q=s+1|0;s=s+2|0;c[p>>2]=s;G=c[g+12>>2]|0;sh(R,33,(G|0)==0?l:G+1|0,q,0)|0;sh(R,33,q,s,0)|0}else{q=0;s=0}x=g+60|0;Ck(U,c[x>>2]|0);c[x>>2]=0;x=g+64|0;Ck(U,c[x>>2]|0);c[x>>2]=0;x=c[p>>2]|0;y=x+1|0;z=x+2|0;v=x+3|0;x=x+4|0;c[p>>2]=x;a[K>>0]=13;c[K+4>>2]=y;a[K+1>>0]=0;B=K+8|0;c[B>>2]=0;c[K+12>>2]=0;a[L>>0]=13;c[L+4>>2]=z;a[L+1>>0]=0;D=L+8|0;c[D>>2]=0;c[L+12>>2]=0;F=R+32|0;r=sh(R,20,y,0,(c[F>>2]|0)+1|0)|0;c[X+8>>2]=q;p=f+468|0;G=c[p>>2]|0;er(f,X,K)|0;sh(R,21,y,0,0)|0;q=c[F>>2]|0;if(q>>>0>r>>>0)c[(c[R+4>>2]|0)+(r*20|0)+8>>2]=q;A=R+24|0;c[(c[A>>2]|0)+88>>2]=q+-1;w=sh(R,20,z,0,q+1|0)|0;k=c[n>>2]|0;m=g+12|0;t=c[m>>2]|0;c[n>>2]=s;c[m>>2]=0;E=c[p>>2]|0;er(f,g,L)|0;c[n>>2]=k;c[m>>2]=t;sh(R,21,z,0,0)|0;m=tu(f,g,K,h,v,o,u,T)|0;t=(M+-115&255)<2;if(t)k=tu(f,g,L,h,x,o,u,T)|0;else k=0;if((u|0)!=0?(l=(c[u>>2]|0)+-1|0,c[u>>2]=l,(l|0)==0):0)Sc(u);o=M<<24>>24==118;if((M+-117&255)<2){s=T;l=T}else{s=sh(R,17,x,k,0)|0;l=sh(R,22,z,T,0)|0;sh(R,16,0,s,0)|0;n=X+24|0;u=g+24|0;p=u;n=fw(c[p>>2]|0,c[p+4>>2]|0,c[n>>2]|0,c[n+4>>2]|0)|0;c[u>>2]=n;c[u+4>>2]=C}if(o){r=g+24|0;u=r;n=c[u+4>>2]|0;p=X+24|0;q=c[p>>2]|0;p=c[p+4>>2]|0;if(n>>>0>p>>>0|((n|0)==(p|0)?(c[u>>2]|0)>>>0>q>>>0:0)){n=r;c[n>>2]=q;c[n+4>>2]=p;n=s}else n=s}else{n=sh(R,17,v,m,0)|0;sh(R,22,y,T,0)|0;sh(R,16,0,n,0)|0}r=sh(R,17,v,m,0)|0;sh(R,22,y,s,0)|0;sh(R,16,0,Q,0)|0;do if(!O)if(o){s=r;r=r+1|0;break}else{s=sh(R,22,y,s,0)|0;sh(R,16,0,Q,0)|0;break}else s=r;while(0);q=c[F>>2]|0;if(t)sh(R,17,x,k,0)|0;sh(R,22,z,n,0)|0;sh(R,16,0,Q,0)|0;p=c[F>>2]|0;if(p>>>0>w>>>0)c[(c[R+4>>2]|0)+(w*20|0)+8>>2]=p;c[(c[A>>2]|0)+88>>2]=p+-1;sh(R,22,y,l,0)|0;sh(R,22,z,n,0)|0;n=c[A>>2]|0;m=~Q;if((Q|0)<0?(P=c[n+112>>2]|0,(P|0)!=0):0)c[P+(m<<2)>>2]=c[F>>2];c[n+88>>2]=(c[F>>2]|0)+-1;th(R,sh(R,41,0,0,0)|0,J,-15);th(R,sh(R,42,c[B>>2]|0,c[D>>2]|0,N)|0,H,-6);l=c[R+4>>2]|0;if(l)a[l+(((c[F>>2]|0)+-1|0)*20|0)+3>>0]=1;sh(R,43,r,s,q)|0;l=c[A>>2]|0;k=~T;if((T|0)<0?(S=c[l+112>>2]|0,(S|0)!=0):0)c[S+(k<<2)>>2]=c[F>>2];c[l+88>>2]=(c[F>>2]|0)+-1;if((a[h>>0]|0)==9){k=X;while(1){l=c[k+52>>2]|0;if(!l)break;else k=l}Js(f,0,c[k>>2]|0)}k=c[W>>2]|0;if(k)Ik(U,k,1);c[W>>2]=X;c[I>>2]=g;Ms(f,d[V>>0]|0,G,E,0);k=0}i=Y;return k|0}function Is(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;do if(!(c[a+4>>2]&1024)){e=d[a>>0]|0;if((e|0)==158){e=Is(c[a+12>>2]|0,b)|0;break}else if((e|0)!=157){e=0;break}if(!(Is(c[a+12>>2]|0,f)|0))e=0;else{c[b>>2]=0-(c[f>>2]|0);e=1}}else{c[b>>2]=c[a+8>>2];e=1}while(0);i=g;return e|0}function Js(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=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;A=i;i=i+32|0;if((i|0)>=(j|0))ba();z=A;y=d+8|0;v=c[y>>2]|0;w=c[d>>2]|0;if(((a[d+450>>0]|0)==0?(k=d+16|0,!((a[k>>0]|0)!=0|(v|0)==0)):0)?(a[w+65>>0]|0)==0:0){a[k>>0]=1;k=c[w+24>>2]|0;u=(k&32|0)==0;eq(v,c[f>>2]|0);h=c[f>>2]|0;if((h|0)>0){t=f+4|0;s=(e|0)==0;p=(k&96|0)==0;q=(e|0)!=0;r=0;do{o=c[t>>2]|0;h=c[o+(r*20|0)>>2]|0;do if(h){k=c[o+(r*20|0)+4>>2]|0;if(k){fq(v,r,0,k,-1);break}k=a[h>>0]|0;if(k<<24>>24==-102){if(s)x=25}else if(!(k<<24>>24==-100&q))x=25;if((x|0)==25){x=0;k=c[o+(r*20|0)+8>>2]|0;if(!k){c[z>>2]=r+1;k=qh(w,34880,z)|0}else k=gh(w,k)|0;fq(v,r,0,k,75);break}n=b[h+32>>1]|0;k=n<<16>>16;m=c[e>>2]|0;a:do if((m|0)>0){g=c[h+28>>2]|0;l=0;while(1){h=l+1|0;if((c[e+(l*72|0)+48>>2]|0)==(g|0)){h=l;break a}if((h|0)<(m|0))l=h;else break}}else h=0;while(0);h=c[e+(h*72|0)+24>>2]|0;if(n<<16>>16<0)k=b[h+36>>1]|0;if((k|0)<0)k=20456;else k=c[(c[h+4>>2]|0)+(k*24|0)>>2]|0;if(p){fq(v,r,0,gh(w,c[o+(r*20|0)+8>>2]|0)|0,75);break}if(u){fq(v,r,0,k,-1);break}else{c[z>>2]=c[h>>2];c[z+4>>2]=k;fq(v,r,0,qh(w,27824,z)|0,75);break}}while(0);r=r+1|0;h=c[f>>2]|0}while((r|0)<(h|0))}k=c[y>>2]|0;c[z+4>>2]=e;c[z>>2]=d;if((h|0)>0){g=f+4|0;h=0;do{fq(k,h,1,uu(z,c[(c[g>>2]|0)+(h*20|0)>>2]|0,0)|0,-1);h=h+1|0}while((h|0)<(c[f>>2]|0))}}i=A;return}function Ks(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();f=o;h=b+8|0;if((c[h>>2]|0)==0?(Ys(a),g=b+60|0,(c[g>>2]|0)!=0):0){l=a+72|0;m=(c[l>>2]|0)+1|0;c[l>>2]=m;c[h>>2]=m;n=Kq(a)|0;do if(Is(c[g>>2]|0,f)|0){f=c[f>>2]|0;sh(n,25,f,m,0)|0;if(!f){sh(n,16,0,d,0)|0;break}if((f|0)>-1?(e=b+24|0,d=e,h=c[d+4>>2]|0,k=((f|0)<0)<<31>>31,h>>>0>k>>>0|((h|0)==(k|0)?(c[d>>2]|0)>>>0>f>>>0:0)):0){d=e;c[d>>2]=f;c[d+4>>2]=k}}else{Nq(a,c[g>>2]|0,m);sh(n,38,m,0,0)|0;sh(n,46,m,d,0)|0}while(0);f=c[b+64>>2]|0;if(f){k=c[l>>2]|0;d=k+1|0;c[b+12>>2]=d;c[l>>2]=k+2;Nq(a,f,d);sh(n,38,d,0,0)|0;f=sh(n,137,d,0,0)|0;sh(n,25,0,d,0)|0;g=n+32|0;e=c[g>>2]|0;if(e>>>0>f>>>0)c[(c[n+4>>2]|0)+(f*20|0)+8>>2]=e;h=n+24|0;c[(c[h>>2]|0)+88>>2]=e+-1;e=k+2|0;sh(n,89,m,d,e)|0;f=sh(n,137,m,0,0)|0;sh(n,25,-1,e,0)|0;e=c[g>>2]|0;if(e>>>0>f>>>0)c[(c[n+4>>2]|0)+(f*20|0)+8>>2]=e;c[(c[h>>2]|0)+88>>2]=e+-1}}i=o;return}function Ls(b,f,g,h,i,j,k,l,m){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var 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;F=c[b+8>>2]|0;A=a[k>>0]|0;u=A&255;w=k+4|0;D=c[w>>2]|0;if(!j)n=0;else n=d[j+1>>0]|0;if(!i)E=0;else E=(c[i>>2]|0)==0?0:i;z=(E|0)!=0;v=(n|0)!=0;if(!(z|v))et(F,c[f+12>>2]|0,l);B=c[g>>2]|0;q=k+8|0;i=c[q>>2]|0;if(i){p=b+72|0;o=c[p>>2]|0;if((i+B|0)>(o|0)){c[p>>2]=o+B;C=i;x=0}else{C=i;x=0}}else{if(z){o=((a[E+24>>0]&1^1)&255)+(c[c[E>>2]>>2]|0)|0;C=b+72|0;p=o+(c[C>>2]|0)|0;c[C>>2]=p}else{p=c[b+72>>2]|0;o=0}C=p+1|0;c[q>>2]=C;c[b+72>>2]=p+B;x=o}c[k+12>>2]=B;do if((h|0)>-1){if((B|0)>0){p=0;do{sh(F,47,h,p,p+C|0)|0;p=p+1|0}while((p|0)!=(B|0))}}else{if(A<<24>>24==3)break;else if(A<<24>>24==9)o=1;else o=A<<24>>24==13&1;Zs(b,g,C,o)}while(0);if(v){o=d[j+1>>0]|0;if((o|0)==2){o=b+72|0;h=c[o>>2]|0;t=h+1|0;c[o>>2]=h+B;o=j+8|0;vh(F,c[o>>2]|0);o=c[o>>2]|0;if((o|0)<0)o=(c[F+32>>2]|0)+-1|0;if(!(a[(c[F>>2]|0)+65>>0]|0))o=(c[F+4>>2]|0)+(o*20|0)|0;else o=29120;a[o>>0]=28;c[o+4>>2]=1;c[o+8>>2]=t;h=F+32|0;i=(c[h>>2]|0)+B|0;if((B|0)>0){p=g+4|0;o=B+-1|0;q=F+4|0;s=0;do{v=_t(b,c[(c[p>>2]|0)+(s*20|0)>>2]|0)|0;j=s+C|0;n=s+t|0;if((s|0)<(o|0))sh(F,78,j,i,n)|0;else sh(F,79,j,l,n)|0;th(F,-1,v,-4);r=c[q>>2]|0;if(r)a[r+(((c[h>>2]|0)+-1|0)*20|0)+3>>0]=-128;s=s+1|0}while((s|0)!=(B|0))}else o=B+-1|0;sh(F,33,C,t,o)|0}else if((o|0)==1)vh(F,c[j+8>>2]|0);else vu(b,c[j+4>>2]|0,l,B,C);if(!E)et(F,c[f+12>>2]|0,l)}a:do switch(u|0){case 12:case 14:case 6:case 5:{p=x+1|0;o=b+60|0;i=c[o>>2]|0;q=b+56|0;n=c[q>>2]|0;if((n|0)<(p|0)){y=b+72|0;i=c[y>>2]|0;c[y>>2]=i+p;i=i+1|0}else{c[o>>2]=i+p;c[q>>2]=n-p}n=i+x|0;sh(F,49,C,B,n)|0;if(A<<24>>24==6){C=D+1|0;th(F,sh(F,69,C,(c[F+32>>2]|0)+4|0,i)|0,0,-14);sh(F,110,C,i,0)|0}if(z)wu(b,E,f,n,1,x);else{n=b+19|0;j=a[n>>0]|0;if(!(j<<24>>24)){C=b+72|0;j=(c[C>>2]|0)+1|0;c[C>>2]=j}else{j=j+-1<<24>>24;a[n>>0]=j;j=c[b+((j&255)<<2)+24>>2]|0}sh(F,74,D,j,0)|0;sh(F,75,D,i,j)|0;n=c[F+4>>2]|0;if(n)a[n+(((c[F+32>>2]|0)+-1|0)*20|0)+3>>0]=8;Wr(b,j)}$s(b,i,p);if((c[q>>2]|0)<(p|0)){c[q>>2]=p;c[o>>2]=i;y=94}else y=94;break}case 1:{n=b+19|0;j=a[n>>0]|0;if(!(j<<24>>24)){A=b+72|0;j=(c[A>>2]|0)+1|0;c[A>>2]=j}else{j=j+-1<<24>>24;a[n>>0]=j;j=c[b+((j&255)<<2)+24>>2]|0}sh(F,49,C,B,j)|0;sh(F,110,D,j,0)|0;Wr(b,j);y=94;break}case 2:{sh(F,111,D,C,B)|0;y=94;break}case 11:{i=k+1|0;a[i>>0]=xu(c[c[g+4>>2]>>2]|0,a[i>>0]|0)|0;if(z){wu(b,E,f,C,1,x);break a}j=b+19|0;n=a[j>>0]|0;if(!(n<<24>>24)){B=b+72|0;j=(c[B>>2]|0)+1|0;c[B>>2]=j}else{B=n+-1<<24>>24;a[j>>0]=B;j=c[b+((B&255)<<2)+24>>2]|0}th(F,sh(F,49,C,1,j)|0,i,1);$s(b,C,1);sh(F,110,D,j,0)|0;Wr(b,j);y=94;break}case 3:{sh(F,25,1,D,0)|0;y=94;break}case 10:{if(z)wu(b,E,f,C,1,x);else y=95;break}case 9:case 13:{if(z){wu(b,E,f,C,B,x);break a}if(A<<24>>24==13){sh(F,22,c[w>>2]|0,0,0)|0;y=95;break a}else{sh(F,35,C,B,0)|0;$s(b,C,B);y=94;break a}}case 7:case 8:{r=c[k+16>>2]|0;h=c[r>>2]|0;n=b+19|0;j=a[n>>0]|0;if(!(j<<24>>24)){z=b+72|0;s=(c[z>>2]|0)+1|0;c[z>>2]=s}else{s=j+-1<<24>>24;a[n>>0]=s;s=c[b+((s&255)<<2)+24>>2]|0}t=h+2|0;u=b+60|0;i=c[u>>2]|0;v=b+56|0;n=c[v>>2]|0;if((n|0)<(t|0)){z=b+72|0;i=c[z>>2]|0;c[z>>2]=i+t;i=i+1|0}else{c[u>>2]=i+t;c[v>>2]=n-t}q=i+h|0;o=q+1|0;if(A<<24>>24==8){n=D+1|0;j=sh(F,69,n,0,C)|0;th(F,j,B,-14);sh(F,49,C,B,o)|0;sh(F,110,n,o,0)|0;n=c[F+4>>2]|0;if(!n)p=j;else{a[n+(((c[F+32>>2]|0)+-1|0)*20|0)+3>>0]=16;p=j}}else{sh(F,49,C,B,o)|0;p=0}if((h|0)>0){o=r+4|0;n=C+-1|0;j=0;do{sh(F,34,n+(e[(c[o>>2]|0)+(j*20|0)+16>>1]|0)|0,j+i|0,0)|0;j=j+1|0}while((j|0)!=(h|0))}sh(F,73,D,q,0)|0;sh(F,49,i,t,s)|0;sh(F,110,D,s,0)|0;if(p){n=c[F+32>>2]|0;if(n>>>0>p>>>0)c[(c[F+4>>2]|0)+(p*20|0)+8>>2]=n;c[(c[F+24>>2]|0)+88>>2]=n+-1}Wr(b,s);$s(b,i,t);if((c[v>>2]|0)<(t|0)){c[v>>2]=t;c[u>>2]=i;y=94}else y=94;break}default:y=94}while(0);if((y|0)==94?(E|0)==0:0)y=95;if((y|0)==95?(G=c[f+8>>2]|0,(G|0)!=0):0)sh(F,140,G,m,0)|0;return}function Ms(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;if((a[b+450>>0]|0)==2){k=c[b+8>>2]|0;l=c[b>>2]|0;h=(g|0)!=0?35160:10360;if((d|0)==117)g=35352;else if((d|0)==118)g=35336;else if((d|0)==116)g=35320;else g=35360;c[m>>2]=e;c[m+4>>2]=f;c[m+8>>2]=h;c[m+12>>2]=g;g=qh(l,35120,m)|0;th(k,sh(k,157,c[b+464>>2]|0,0,0)|0,g,-1)}i=n;return}function Ns(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=f+e|0;h=(g*5|0)+24|0;i=mg(h,0)|0;if(!i)a[d+65>>0]=1;else{bw(i|0,0,h|0)|0;c[i+16>>2]=i+20+(g<<2);b[i+6>>1]=e;b[i+8>>1]=f;a[i+4>>0]=a[d+62>>0]|0;c[i+12>>2]=d;c[i>>2]=1}return i|0}function Os(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=c[b+52>>2]|0;if(!((f|0)!=0?(e=Os(a,f,d)|0,(e|0)!=0):0)){e=c[b>>2]|0;if((c[e>>2]|0)>(d|0))e=_t(a,c[(c[e+4>>2]|0)+(d*20|0)>>2]|0)|0;else e=0}return e|0}function Ps(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=(b|0)==0;f=(d|0)==0;a:do if(!(g&f))if(!(g|f)?(h=c[b>>2]|0,(h|0)==(c[d>>2]|0)):0)if((h|0)>0){b=c[b+4>>2]|0;f=c[d+4>>2]|0;g=0;while(1){if((a[b+(g*20|0)+12>>0]|0)!=(a[f+(g*20|0)+12>>0]|0)){f=1;break a}if(yu(c[b+(g*20|0)>>2]|0,c[f+(g*20|0)>>2]|0,e)|0){f=1;break a}g=g+1|0;if((g|0)>=(h|0)){f=0;break}}}else f=0;else f=1;else f=0;while(0);return f|0}function Qs(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=c[b>>2]|0;l=c[d>>2]|0;k=Ns(g,l-e|0,f+1|0)|0;if((k|0)!=0&(l|0)>(e|0)){h=g+8|0;i=k+16|0;j=e;f=(c[d+4>>2]|0)+(e*20|0)|0;while(1){g=_t(b,c[f>>2]|0)|0;if(!g)g=c[h>>2]|0;d=j-e|0;c[k+(d<<2)+20>>2]=g;a[(c[i>>2]|0)+d>>0]=a[f+12>>0]|0;j=j+1|0;if((j|0)==(l|0))break;else f=f+20|0}}return k|0}function Rs(f,g,h,k,l,m,n){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;var 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,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,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,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;Ma=i;i=i+64|0;if((i|0)>=(j|0))ba();Ka=Ma;La=Ma+48|0;Ja=Ma+52|0;Y=Ma+28|0;Ha=f+8|0;ea=c[Ha>>2]|0;Ia=c[f>>2]|0;c[Y+0>>2]=0;c[Y+4>>2]=0;c[Y+8>>2]=0;c[Y+12>>2]=0;c[Y+16>>2]=0;if(!k)P=0;else P=(c[k>>2]|0)>63?0:k;Z=Y+8|0;c[Z>>2]=P;_=Ia+60|0;if(b[_>>1]&32)m=m&64511;k=c[g>>2]|0;a:do if((k|0)<=64){I=m&65535;L=(I&64|0)!=0;U=L?1:k;u=(U*80|0)+743&-16;o=u+72|0;k=ih(Ia,o,0)|0;Ga=(k|0)==0;if(!Ga)bw(k|0,0,o|0)|0;xa=Ia+65|0;if(a[xa>>0]|0){ig(Ia,k);k=0;break}ca=k+60|0;da=k+64|0;c[da>>2]=-1;c[ca>>2]=-1;ya=k+41|0;a[ya>>0]=U;c[k>>2]=f;za=k+4|0;c[za>>2]=g;$=k+8|0;c[$>>2]=P;c[k+12>>2]=l;Ba=ts(ea)|0;Aa=k+48|0;c[Aa>>2]=Ba;q=k+52|0;c[q>>2]=Ba;Ba=k+34|0;b[Ba>>1]=m;Ca=f+424|0;Da=k+56|0;c[Da>>2]=c[Ca>>2];Ea=k+68|0;c[Y>>2]=k;Fa=k+328|0;X=Y+4|0;c[X>>2]=Fa;S=Y+12|0;c[S>>2]=k+u;c[k+(u+48)>>2]=k+(u+56);b[k+(u+40)>>1]=0;b[k+(u+44)>>1]=3;c[k+(u+36)>>2]=0;c[Ea>>2]=0;c[Fa>>2]=k;c[k+332>>2]=0;va=k+340|0;c[va>>2]=0;c[k+344>>2]=8;wa=k+348|0;c[wa>>2]=k+352;zu(Fa,h,72);y=(U|0)==0;if((c[k+340>>2]|0)>0){x=Ka+20|0;w=Ka+4|0;o=Ka+24|0;h=Fa;p=0;do{if(!y){h=c[(c[h+20>>2]|0)+(p*48|0)>>2]|0;c[Ka+0>>2]=0;c[Ka+4>>2]=0;c[Ka+8>>2]=0;c[Ka+12>>2]=0;c[Ka+16>>2]=0;c[Ka+20>>2]=0;a[x>>0]=2;c[Ka>>2]=78;c[w>>2]=79;c[o>>2]=0;ns(Ka,h)|0;h=c[X>>2]|0;if(a[x>>0]|0)ua=15}else ua=15;if((ua|0)==15){ua=0;ct(f,c[(c[h+20>>2]|0)+(p*48|0)>>2]|0,c[q>>2]|0,16);h=c[X>>2]|0;aa=(c[h+20>>2]|0)+(p*48|0)+20|0;b[aa>>1]=e[aa>>1]|4}p=p+1|0}while((p|0)<(c[h+12>>2]|0))}if(y){if(P)a[k+36>>0]=c[P>>2];if(I&1024)a[k+40>>0]=1}if((c[g>>2]|0)>0){u=0;do{O=c[g+(u*72|0)+48>>2]|0;aa=c[Ea>>2]|0;c[Ea>>2]=aa+1;c[Ea+(aa<<2)+4>>2]=O;u=u+1|0}while((u|0)<(c[g>>2]|0))}r=c[va>>2]|0;if((r|0)>0)do{r=r+-1|0;Au(Fa,r)}while((r|0)>0);b:do if(!(a[xa>>0]|0)){aa=(I&1024|0)==0;c:do if(!aa){d:do if((c[g>>2]|0)==1){H=c[g+48>>2]|0;p=c[g+24>>2]|0;x=c[l>>2]|0;e:do if((x|0)>0){w=c[l+4>>2]|0;o=0;while(1){h=c[w+(o*20|0)>>2]|0;f:do if(!h)h=0;else while(1){y=c[h+4>>2]|0;if(!(y&4096))break f;if(!(y&262144))h=h+12|0;else h=c[(c[h+20>>2]|0)+4>>2]|0;h=c[h>>2]|0;if(!h){h=0;break}}while(0);do if((a[h>>0]|0)==-102){if((c[h+28>>2]|0)!=(H|0))break;if((b[h+32>>1]|0)<0)break e}while(0);o=o+1|0;if((o|0)>=(x|0)){ua=41;break}}}else ua=41;while(0);g:do if((ua|0)==41){h=c[p+8>>2]|0;if(!h)break d;q=l+4|0;p=p+4|0;while(1){if(a[h+50>>0]|0){D=h+46|0;h:do if(!(b[D>>1]|0))y=0;else{F=h+4|0;E=h+32|0;y=0;do{B=b[(c[F>>2]|0)+(y<<1)>>1]|0;if(!(Bu(Fa,H,B,-1,-1,2,h)|0)){o=c[(c[E>>2]|0)+(y<<2)>>2]|0;if((c[l>>2]|0)>0)x=0;else break h;i:while(1){z=c[(c[q>>2]|0)+(x*20|0)>>2]|0;j:do if(!z)w=0;else{w=z;while(1){A=c[w+4>>2]|0;if(!(A&4096))break j;if(!(A&262144))w=w+12|0;else w=c[(c[w+20>>2]|0)+4>>2]|0;w=c[w>>2]|0;if(!w){w=0;break}}}while(0);do if((a[w>>0]|0)==-102){if((b[w+32>>1]|0)!=(b[(c[F>>2]|0)+(y<<1)>>1]|0))break;if((c[w+28>>2]|0)!=(H|0))break;w=_t(f,z)|0;if(!w)break;if(!($c(c[w>>2]|0,o)|0))break i}while(0);x=x+1|0;if((x|0)>=(c[l>>2]|0))break h}if((x|0)<0)break h;if(!(a[(c[p>>2]|0)+(B*24|0)+20>>0]|0))break h}y=y+1|0}while((y|0)<(e[D>>1]|0))}while(0);if((y|0)==(e[D>>1]|0))break g}h=c[h+20>>2]|0;if(!h)break d}}while(0);a[k+40>>0]=1;break c}while(0);if(!P){b[Ba>>1]=e[Ba>>1]|512;c[$>>2]=l}}while(0);k:do if((((U|0)==1?(W=c[Y>>2]|0,V=W+34|0,(b[V>>1]&32)==0):0)?(R=c[W+4>>2]|0,N=c[R+24>>2]|0,(a[N+44>>0]&16)==0):0)?(c[R+72>>2]|0)==0:0){P=c[R+48>>2]|0;z=W+328|0;O=c[S>>2]|0;H=O+36|0;c[H>>2]=0;b[O+42>>1]=0;v=Bu(z,P,-1,0,0,2,0)|0;l:do if(!v){x=c[N+8>>2]|0;m:do if(x){A=O+48|0;n:while(1){do if(a[x+50>>0]|0){if(c[x+36>>2]|0)break;w=x+46|0;h=b[w>>1]|0;if((h&65535)>3)break;q=x+4|0;o:do if(!(h<<16>>16)){h=0;y=0}else{y=0;while(1){h=Bu(z,P,b[(c[q>>2]|0)+(y<<1)>>1]|0,0,0,2,x)|0;if(!h)break;c[(c[A>>2]|0)+(y<<2)>>2]=h;y=y+1|0;h=b[w>>1]|0;if((y|0)>=(h&65535|0))break o}h=b[w>>1]|0}while(0);if((y|0)==(h&65535|0)){A=y;break n}}while(0);x=c[x+20>>2]|0;if(!x)break m}c[H>>2]=4609;if(!(a[x+51>>0]&32)){p=R+64|0;o=c[p>>2]|0;p=c[p+4>>2]|0;w=0;v=0;h=e[x+48>>1]|0;p:while(1){y=h;while(1){h=y+-1|0;if((y|0)<=0)break p;y=b[(c[q>>2]|0)+(h<<1)>>1]|0;if((y&65535)<63)break;else y=h}Y=ew(1,0,y<<16>>16|0)|0;w=Y|w;v=C|v}if((o&~w|0)==0&(p&~v|0)==0)ua=91}else ua=91;if((ua|0)==91)c[H>>2]=4673;Y=A&65535;b[O+40>>1]=Y;b[O+24>>1]=Y;c[O+28>>2]=x;b[O+20>>1]=39;break l}while(0);if(!(c[H>>2]|0)){ua=103;break k}}else{c[H>>2]=4353;c[c[O+48>>2]>>2]=v;b[O+40>>1]=1;b[O+24>>1]=1;b[O+20>>1]=33}while(0);b[O+22>>1]=1;c[W+800>>2]=O;q=c[W+68>>2]|0;q:do if((q|0)>0){r=0;while(1){if((c[W+(r<<2)+72>>2]|0)==(P|0))break;r=r+1|0;if((r|0)>=(q|0)){r=0;q=0;break q}}r=ew(1,0,r|0)|0;q=C}else{r=0;q=0}while(0);p=O+8|0;c[p>>2]=r;c[p+4>>2]=q;c[W+740>>2]=P;b[W+32>>1]=1;p=c[W+8>>2]|0;if(p)a[W+36>>0]=c[p>>2];if(!(b[V>>1]&1024)){ua=120;break}a[W+40>>0]=1;ua=120}else ua=103;while(0);if((ua|0)==103){D=c[Y>>2]|0;h=c[D+4>>2]|0;E=c[c[D>>2]>>2]|0;W=a[D+41>>0]|0;F=W&255;w=c[S>>2]|0;c[w+48>>2]=w+56;b[w+40>>1]=0;b[w+44>>1]=3;c[w+36>>2]=0;o=E+65|0;r:do if(W<<24>>24){p=w+16|0;q=D+68|0;r=w+8|0;s=0;t=0;u=0;v=0;B=0;A=h+8|0;z=0;while(1){a[p>>0]=B;y=c[A+40>>2]|0;x=c[q>>2]|0;s:do if((x|0)>0){h=0;while(1){if((c[D+(h<<2)+72>>2]|0)==(y|0))break;h=h+1|0;if((h|0)>=(x|0)){h=0;y=0;break s}}h=ew(1,0,h|0)|0;y=C}else{h=0;y=0}while(0);W=r;c[W>>2]=h;c[W+4>>2]=y;W=z;z=a[A+36>>0]|0;W=((z|W)&10)==0;t=W?t:s;v=W?v:u;if(!(a[(c[A+16>>2]|0)+44>>0]&16))h=Du(Y,t,v)|0;else h=Cu(Y,t,v)|0;if(h)break;W=Eu(Y,t,v)|0;h=r;if(W)break;if(a[o>>0]|0)break r;B=B+1|0;if((B|0)>=(F|0))break r;else{s=c[h>>2]|s;u=c[h+4>>2]|u;A=A+72|0}}Fu(E,w);break b}while(0);Fu(E,w);Gu(k,0);if(a[xa>>0]|0)break;if(c[$>>2]|0){Gu(k,(e[k+32>>1]|0)+1&65535);if(!(a[xa>>0]|0))ua=120;else break}else ua=121}if((ua|0)==120?(c[$>>2]|0)==0:0)ua=121;if((ua|0)==121?(c[Ia+24>>2]&131072|0)!=0:0){$=k+24|0;c[$>>2]=-1;c[$+4>>2]=-1}if((c[f+64>>2]|0)==0?(a[xa>>0]|0)==0:0){u=a[ya>>0]|0;t:do if((u&255)>1&(l|0)!=0?(b[_>>1]&1024)==0:0){p=Hu(Ea,l)|0;q=C;o=c[Z>>2]|0;if(o){$=Hu(Ea,o)|0;p=$|p;q=C|q}y=k+736|0;h=c[za>>2]|0;x=c[X>>2]|0;w=x+20|0;x=x+12|0;v=u;o=U;do{r=c[y+(((v&255)+-1|0)*80|0)+64>>2]|0;if(!(a[h+((d[r+16>>0]|0)*72|0)+44>>0]&8))break t;if(aa?(c[r+36>>2]&4096|0)==0:0)break t;t=r+8|0;s=c[t>>2]|0;t=c[t+4>>2]|0;if(!((s&p|0)==0&(t&q|0)==0))break t;r=c[w>>2]|0;$=c[x>>2]|0;u=r+($*48|0)|0;if(($|0)>0)do{$=r+40|0;if(!((s&c[$>>2]|0)==0?(t&c[$+4>>2]|0)==0:0)?(c[(c[r>>2]|0)+4>>2]&1|0)==0:0)break t;r=r+48|0}while(r>>>0>>0);v=v+-1<<24>>24;a[ya>>0]=v;o=o+-1|0}while((v&255)>1)}else o=U;while(0);aa=(c[k>>2]|0)+424|0;c[aa>>2]=(c[aa>>2]|0)+(b[k+32>>1]|0);do if((I&4|0)!=0?(T=(c[k+800>>2]|0)+36|0,Q=c[T>>2]|0,(Q&4096|0)!=0):0){a[k+38>>0]=1;if(a[(c[g+24>>2]|0)+44>>0]&32)break;c[T>>2]=Q&-65}while(0);ta=k+736|0;P=(o|0)>0;if(P){M=I&16;N=k+38|0;O=ea+32|0;J=L^1;L=(n|0)==0|J;K=f+68|0;H=54-(I>>>12&1)|0;G=ea+4|0;B=Ia+20|0;z=Ia+16|0;s=0;I=ta;while(1){A=d[I+44>>0]|0;D=g+(A*72|0)+24|0;q=c[D>>2]|0;h=c[q+68>>2]|0;u:do if(!h)w=-1e6;else{y=c[B>>2]|0;if((y|0)<=0){w=0;break}x=c[z>>2]|0;p=0;while(1){w=p+1|0;if((c[x+(p<<4)+12>>2]|0)==(h|0)){w=p;break u}if((w|0)<(y|0))p=w;else break}}while(0);F=c[I+64>>2]|0;E=q+44|0;h=d[E>>0]|0;do if(!(h&2)){if(c[q+12>>2]|0)break;y=c[F+36>>2]|0;if(y&1024){v=c[q+60>>2]|0;v:do if(!v)v=0;else while(1){if((c[v>>2]|0)==(Ia|0))break v;v=c[v+24>>2]|0;if(!v){v=0;break}}while(0);th(ea,sh(ea,149,c[g+(A*72|0)+48>>2]|0,0,0)|0,v,-10);break}if(h&16)break;if(y&64|M){cs(f,w,c[q+32>>2]|0,0,c[q>>2]|0);break}x=g+(A*72|0)+48|0;if(!(a[N>>0]|0))h=54;else{c[ca>>2]=c[x>>2];h=55}Mq(f,c[x>>2]|0,w,q,h);if(a[N>>0]|0)break;if((b[q+38>>1]|0)>=64)break;if(a[E>>0]&32)break;x=g+(A*72|0)+64|0;v=c[x>>2]|0;x=c[x+4>>2]|0;if((v|0)==0&(x|0)==0)u=0;else{u=0;do{v=iw(v|0,x|0,1)|0;x=C;u=u+1|0}while(!((v|0)==0&(x|0)==0))}th(ea,(c[O>>2]|0)+-1|0,u,-14)}while(0);y=F+36|0;w:do if(c[y>>2]&512){h=c[F+28>>2]|0;do if(a[E>>0]&32){if((a[h+51>>0]&3)!=2|J)break;c[I+8>>2]=c[I+4>>2];break w}while(0);do if(!(a[N>>0]|0)){if(!L){u=n;t=H;break}u=c[K>>2]|0;c[K>>2]=u+1;t=54}else{t=c[(c[D>>2]|0)+8>>2]|0;if((t|0)==0|(t|0)==(h|0))u=n;else{u=n;do{u=u+1|0;t=c[t+20>>2]|0}while(!((t|0)==0|(t|0)==(h|0)))}c[da>>2]=u;t=55}while(0);c[I+8>>2]=u;sh(ea,t,u,c[h+40>>2]|0,w)|0;aa=c[Ha>>2]|0;th(aa,-1,ds(f,h)|0,-6);aa=c[y>>2]|0;if(!((aa&15|0)!=0&(aa&32770|0)==0))break;if(b[Ba>>1]&1)break;r=c[G>>2]|0;if(!r)break;a[r+(((c[O>>2]|0)+-1|0)*20|0)+3>>0]=2}while(0);if((w|0)>-1)wr(f,w);s=s+1|0;if((s|0)==(o|0))break;else I=I+80|0}da=(a[xa>>0]|0)==0;c[k+44>>2]=c[O>>2];if(!da)break}else{O=ea+32|0;c[k+44>>2]=c[O>>2]}if(!P)break a;ha=k+24|0;ia=k+36|0;ja=k+39|0;ka=f+80|0;la=f+68|0;ma=f+100|0;na=f+19|0;oa=f+72|0;pa=Ka+20|0;qa=Ka+4|0;ra=Ka+24|0;q=-1;p=-1;sa=0;while(1){V=ta+(sa*80|0)|0;h=ta+(sa*80|0)+64|0;X=ta+(sa*80|0)+44|0;if(c[(c[h>>2]|0)+36>>2]&16384){H=d[X>>0]|0;R=g+(H*72|0)+8|0;W=c[Ha>>2]|0;v=Kq(f)|0;Y=c[ka>>2]|0;c[ka>>2]=Y+1;Y=sh(v,44,Y,0,0)|0;v=c[g+(H*72|0)+24>>2]|0;da=c[va>>2]|0;y=c[wa>>2]|0;Q=y+(da*48|0)|0;J=c[h>>2]|0;x:do if((da|0)>0){w=g+(H*72|0)+48|0;s=v+4|0;t=J+48|0;D=0;z=0;x=0;r=0;B=0;while(1){A=c[y>>2]|0;da=J;do if((c[da>>2]|0)==0&(c[da+4>>2]|0)==0){if(b[y+20>>1]&2)break;if(c[A+4>>2]&1)break;da=c[w>>2]|0;c[Ka+0>>2]=0;c[Ka+4>>2]=0;c[Ka+8>>2]=0;c[Ka+12>>2]=0;c[Ka+16>>2]=0;c[Ka+20>>2]=0;a[pa>>0]=3;c[Ka>>2]=78;c[qa>>2]=79;c[ra>>2]=da;ns(Ka,A)|0;if(!(a[pa>>0]|0))break;da=c[f>>2]|0;r=os(da,r,Ir(da,A,0,0)|0)|0}while(0);do if(!(Iu(y,R,q,p)|0)){F=D;A=z;h=x}else{A=c[y+12>>2]|0;if((A|0)>63){F=0;E=-2147483648}else{F=ew(1,0,A|0)|0;E=C}if(!(B<<24>>24)){B=c[(c[s>>2]|0)+(A*24|0)>>2]|0;c[Ka>>2]=c[v>>2];c[Ka+4>>2]=B;Zc(284,33960,Ka);B=1}if(!((F&D|0)==0&(E&z|0)==0)){F=D;A=z;h=x;break}h=x+1|0;if(Ju(c[f>>2]|0,J,h)|0)break x;c[(c[t>>2]|0)+(x<<2)>>2]=y;F=F|D;A=E|z}while(0);y=y+48|0;if(y>>>0>=Q>>>0){y=F;ua=207;break}else{D=F;z=A;x=h}}}else{A=0;y=0;h=0;r=0;ua=207}while(0);do if((ua|0)==207){ua=0;s=h&65535;b[J+40>>1]=s;b[J+24>>1]=s;s=J+36|0;c[s>>2]=16961;I=g+(H*72|0)+64|0;K=I;E=c[K+4>>2]|0;K=c[K>>2]&~y;M=E&((A|-2147483648)^2147483647);u=v+38|0;N=b[u>>1]|0;F=N<<16>>16;N=N<<16>>16>63?63:F;P=(N|0)>0;if(P){A=0;do{da=ew(1,0,A|0)|0;h=(((da&K|0)!=0|(C&M|0)!=0)&1)+h|0;A=A+1|0}while((A|0)!=(N|0))}if((E|0)<0)h=h+-63+F|0;L=h+1|0;G=qs(c[f>>2]|0,L&65535,0,La)|0;if(!G)break;c[J+28>>2]=G;c[G>>2]=33992;c[G+12>>2]=v;A=c[wa>>2]|0;if(A>>>0>>0){h=G+4|0;y=G+32|0;E=0;F=0;x=0;do{do if(Iu(A,R,q,p)|0){D=c[A+12>>2]|0;if((D|0)>63){B=0;z=-2147483648}else{B=ew(1,0,D|0)|0;z=C}if(!((B&E|0)==0&(z&F|0)==0))break;da=c[A>>2]|0;b[(c[h>>2]|0)+(x<<1)>>1]=D;D=Ku(f,c[da+12>>2]|0,c[da+16>>2]|0)|0;if(!D)D=11152;else D=c[D>>2]|0;c[(c[y>>2]|0)+(x<<2)>>2]=D;E=B|E;F=z|F;x=x+1|0}while(0);A=A+48|0}while(A>>>0>>0)}else x=0;if(P){A=G+4|0;z=G+32|0;h=0;do{da=ew(1,0,h|0)|0;if(!((da&K|0)==0&(C&M|0)==0)){b[(c[A>>2]|0)+(x<<1)>>1]=h;c[(c[z>>2]|0)+(x<<2)>>2]=11152;x=x+1|0}h=h+1|0}while((h|0)!=(N|0))}do if((c[I+4>>2]|0)<0){if((b[u>>1]|0)<=63)break;h=G+4|0;y=G+32|0;w=63;do{b[(c[h>>2]|0)+(x<<1)>>1]=w;c[(c[y>>2]|0)+(x<<2)>>2]=11152;x=x+1|0;w=w+1|0}while((w|0)<(b[u>>1]|0))}while(0);b[(c[G+4>>2]|0)+(x<<1)>>1]=-1;c[(c[G+32>>2]|0)+(x<<2)>>2]=11152;A=c[la>>2]|0;c[la>>2]=A+1;y=ta+(sa*80|0)+8|0;c[y>>2]=A;sh(W,56,A,L,0)|0;A=c[Ha>>2]|0;th(A,-1,ds(f,G)|0,-6);c[ma>>2]=(c[ma>>2]|0)+1;A=ta+(sa*80|0)+4|0;t=sh(W,108,c[A>>2]|0,0,0)|0;x=(r|0)!=0;if(x){w=ts(W)|0;ct(f,r,w,16);c[s>>2]=c[s>>2]|131072}else w=0;h=a[na>>0]|0;if(!(h<<24>>24)){s=(c[oa>>2]|0)+1|0;c[oa>>2]=s}else{s=h+-1<<24>>24;a[na>>0]=s;s=c[f+((s&255)<<2)+24>>2]|0}Lt(f,G,c[A>>2]|0,s,0,0,0,0)|0;sh(W,110,c[y>>2]|0,s,0)|0;z=W+4|0;h=c[z>>2]|0;if(h)a[h+(((c[W+32>>2]|0)+-1|0)*20|0)+3>>0]=16;if(x){y=c[W+24>>2]|0;x=~w;do if((w|0)<0){h=c[y+112>>2]|0;if(!h)break;c[h+(x<<2)>>2]=c[W+32>>2]}while(0);c[y+88>>2]=(c[W+32>>2]|0)+-1}sh(W,9,c[A>>2]|0,t+1|0,0)|0;h=c[z>>2]|0;y=c[W+32>>2]|0;if(h)a[h+((y+-1|0)*20|0)+3>>0]=3;if(y>>>0>t>>>0)c[h+(t*20|0)+8>>2]=y;h=W+24|0;c[(c[h>>2]|0)+88>>2]=y+-1;Wr(f,s);Zt(f);u=c[W+32>>2]|0;if(u>>>0>Y>>>0)c[(c[z>>2]|0)+(Y*20|0)+8>>2]=u;c[(c[h>>2]|0)+88>>2]=u+-1}while(0);Ck(c[f>>2]|0,r);if(a[xa>>0]|0)break b}Lu(f,g,V,sa,d[X>>0]|0,m);c[ta+(sa*80|0)+32>>2]=c[O>>2];ga=c[k>>2]|0;L=ga+8|0;ca=c[L>>2]|0;ea=c[ga>>2]|0;r=k+(sa*80|0)+736|0;K=c[k+(sa*80|0)+800>>2]|0;$=k+(sa*80|0)+780|0;H=d[$>>0]|0;F=c[za>>2]|0;N=F+(H*72|0)+8|0;n=c[F+(H*72|0)+48>>2]|0;y=c[Ea>>2]|0;y:do if((y|0)>0){h=0;while(1){if((c[Ea+(h<<2)+4>>2]|0)==(n|0))break;h=h+1|0;if((h|0)>=(y|0)){h=-1;y=-1;break y}}h=ew(1,0,h|0)|0;h=~h;y=~C}else{h=-1;y=-1}while(0);fa=k+(sa*80|0)+808|0;M=fa;c[M>>2]=h&q;c[M+4>>2]=y&p;M=ha;M=iw(c[M>>2]|0,c[M+4>>2]|0,sa|0)|0;_=M&1;T=K+36|0;if(!(c[T>>2]&64))v=0;else v=(b[Ba>>1]&32)==0;G=ts(ca)|0;P=k+(sa*80|0)+752|0;c[P>>2]=G;aa=k+(sa*80|0)+748|0;c[aa>>2]=G;da=ts(ca)|0;c[k+(sa*80|0)+760>>2]=da;do if(a[$>>0]|0){if(!(a[F+(H*72|0)+44>>0]&8))break;Z=ga+72|0;l=(c[Z>>2]|0)+1|0;c[Z>>2]=l;c[r>>2]=l;sh(ca,25,0,l,0)|0}while(0);A=a[F+(H*72|0)+45>>0]|0;z:do if(!(A&4)){D=c[T>>2]|0;if(D&1024){s=b[K+40>>1]|0;t=s&65535;v=ga+100|0;c[v>>2]=(c[v>>2]|0)+1;v=t+2|0;G=ga+60|0;h=c[G>>2]|0;H=ga+56|0;y=c[H>>2]|0;if((y|0)<(v|0)){$=ga+72|0;u=c[$>>2]|0;c[$>>2]=u+v;u=u+1|0}else{c[G>>2]=h+v;c[H>>2]=y-v;u=h}h=c[aa>>2]|0;B=s<<16>>16==0;if(!B){E=u+2|0;D=K+48|0;F=0;do{A=E+F|0;z=c[(c[D>>2]|0)+(F<<2)>>2]|0;do if(z)if(!(b[z+18>>1]&1)){Nq(ga,c[(c[z>>2]|0)+16>>2]|0,A);break}else{Mu(ga,z,r,F,_,A)|0;h=c[P>>2]|0;break}while(0);F=F+1|0}while((F|0)<(t|0))}sh(ca,25,c[K+24>>2]|0,u,0)|0;sh(ca,25,t,u+1|0,0)|0;_=c[K+32>>2]|0;aa=K+28|0;$=(a[aa>>0]|0)!=0?-11:-2;th(ca,sh(ca,14,n,h,u)|0,_,$);a[aa>>0]=0;if(!B){w=K+30|0;x=K+48|0;h=(s&65535)>1?0-t|0:-1;h=h>>>0>4294967280?0-h|0:16;y=0;do{if(e[w>>1]&1<>2]|0)+(y<<2)>>2]|0);y=y+1|0}while((y|0)!=(h|0))}a[k+(sa*80|0)+781>>0]=-105;c[k+(sa*80|0)+784>>2]=n;c[k+(sa*80|0)+788>>2]=c[ca+32>>2];$s(ga,u,v);if((c[H>>2]|0)<(v|0)){c[H>>2]=v;c[G>>2]=u}Zt(ga);ua=459;break}if(!((D&256|0)==0|(D&5|0)==0)){v=c[c[K+48>>2]>>2]|0;aa=ga+72|0;x=(c[aa>>2]|0)+1|0;c[aa>>2]=x;v=Mu(ga,v,r,0,_,x)|0;if((v|0)!=(x|0))Wr(ga,x);ua=c[P>>2]|0;sh(ca,38,v,ua,0)|0;sh(ca,70,n,ua,v)|0;$s(ga,v,1);Ou(ga,n,-1,v);a[k+(sa*80|0)+781>>0]=-100;ua=459;break}if((D&258|0)==258){if(!(D&32)){h=0;x=0}else{h=1;x=c[c[K+48>>2]>>2]|0}if(!(D&16))h=0;else h=c[(c[K+48>>2]|0)+(h<<2)>>2]|0;y=(_|0)!=0;w=y?x:h;h=y?h:x;if(!h)sh(ca,y?105:108,n,G,0)|0;else{$=c[h>>2]|0;aa=Xt(ga,c[$+16>>2]|0,Ka)|0;sh(ca,d[33536+((d[$>>0]|0)+-80)>>0]|0,n,G,aa)|0;$s(ga,aa,1);Wr(ga,c[Ka>>2]|0);Nu(r,h)}if(!w){h=0;y=156}else{aa=c[w>>2]|0;$=ga+72|0;h=(c[$>>2]|0)+1|0;c[$>>2]=h;Nq(ga,c[aa+16>>2]|0,h);aa=a[aa>>0]|0;if(aa<<24>>24==80|aa<<24>>24==82)y=_<<1^83;else y=_<<1|80;Nu(r,w)}x=ca+32|0;aa=c[x>>2]|0;a[k+(sa*80|0)+781>>0]=_^9;c[k+(sa*80|0)+784>>2]=n;c[k+(sa*80|0)+788>>2]=aa;if((y|0)==156){ua=459;break}aa=ga+72|0;u=(c[aa>>2]|0)+1|0;c[aa>>2]=u;sh(ca,103,n,u,0)|0;Ou(ga,n,-1,u);sh(ca,y,h,G,u)|0;u=c[ca+4>>2]|0;if(!u){ua=459;break}a[u+(((c[x>>2]|0)+-1|0)*20|0)+3>>0]=83;ua=459;break}if(D&512){L=b[K+24>>1]|0;a[Ja>>0]=0;S=c[K+28>>2]|0;U=c[k+(sa*80|0)+744>>2]|0;do if(!(b[Ba>>1]&1)){E=0;A=0}else{if((a[ia>>0]|0)<=0){E=0;A=0;break}A=(e[S+46>>1]|0)>(L&65535);E=A&1;A=A&1}while(0);h=L&65535;if(!(D&32)){F=h;H=0}else{F=h+1|0;A=1;H=c[(c[K+48>>2]|0)+(h<<2)>>2]|0}do if(!(D&16))z=0;else{z=c[(c[K+48>>2]|0)+(F<<2)>>2]|0;if(b[z+20>>1]&256){$=ga+72|0;aa=(c[$>>2]|0)+1|0;c[$>>2]=aa;c[k+(sa*80|0)+772>>2]=aa;sh(ca,25,(a[(c[S+28>>2]|0)+h>>0]|0)==1^_,aa,0)|0;c[k+(sa*80|0)+776>>2]=c[ca+32>>2]}if(H){A=1;break}A=b[(c[S+4>>2]|0)+(h<<1)>>1]|0;if(A<<16>>16<=-1){A=1;break}E=(a[(c[(c[S+12>>2]|0)+4>>2]|0)+((A<<16>>16)*24|0)+20>>0]|0)==0?1:E;A=1}while(0);J=Pu(ga,r,_,A,La)|0;I=c[La>>2]|0;G=(I|0)==0;if(!G)a[Ja>>0]=a[I+h>>0]|0;K=c[P>>2]|0;B=b[S+46>>1]|0;if((L&65535)<(B&65535)?!((a[(c[S+28>>2]|0)+h>>0]|0)==0^((M&1|0)!=0|0!=0)):0)ua=318;else if((_|0)!=0?B<<16>>16==L<<16>>16:0)ua=318;else{N=E;E=0;M=z;P=H}if((ua|0)==318){N=0;M=H;P=z}z=(P|0)!=0;if(z)B=(b[P+18>>1]&40)!=0;else B=1;D=B&1;H=(M|0)!=0;if(H)F=(b[M+18>>1]&40)!=0;else F=1;A=F&1;F=(z|L<<16>>16!=0)&1;do if(z){y=c[(c[P>>2]|0)+16>>2]|0;z=J+h|0;Nq(ga,y,z);if(b[P+20>>1]&256){if(!(a[(c[ca>>2]|0)+65>>0]|0))B=(c[ca+4>>2]|0)+(((c[ca+32>>2]|0)+-1|0)*20|0)|0;else B=29120;c[B+12>>2]=c[k+(sa*80|0)+772>>2];a[B+3>>0]=1}if(Qu(y)|0)sh(ca,76,z,K,0)|0;do if(!G){B=I+h|0;if((xu(y,a[B>>0]|0)|0)<<24>>24==65){a[B>>0]=65;z=65}else z=a[B>>0]|0;if(!(Ru(y,z)|0))break;a[B>>0]=65}while(0);B=h+1|0}else{if(!(N<<24>>24)){B=h;break}sh(ca,28,0,J+h|0,0)|0;B=h+1|0;D=0;F=1}while(0);Su(ga,J,B-(N&255)|0,I);th(ca,sh(ca,d[33544+(F<<2|_|D<<1)>>0]|0,U,K,J)|0,B,-14);do if(H){y=c[(c[M>>2]|0)+16>>2]|0;x=J+h|0;$s(ga,x,1);Nq(ga,y,x);if(b[M+20>>1]&256){if(!(a[(c[ca>>2]|0)+65>>0]|0))z=(c[ca+4>>2]|0)+(((c[ca+32>>2]|0)+-1|0)*20|0)|0;else z=29120;c[z+12>>2]=c[k+(sa*80|0)+772>>2];a[z+3>>0]=1}if(Qu(y)|0)sh(ca,76,x,K,0)|0;do if((xu(y,a[Ja>>0]|0)|0)<<24>>24!=65){if(Ru(y,a[Ja>>0]|0)|0)break;Su(ga,x,1,Ja)}while(0);h=h+1|0}else{if(!(E<<24>>24))break;sh(ca,28,0,J+h|0,0)|0;A=0;h=h+1|0}while(0);ig(ea,I);c[k+(sa*80|0)+788>>2]=c[ca+32>>2];if(h)th(ca,sh(ca,d[33552+(A|_<<1)>>0]|0,U,K,J)|0,h,-14);Nu(r,P);Nu(r,M);do if(!v){h=c[S+12>>2]|0;if(!(a[h+44>>0]&32)){$=ga+72|0;aa=(c[$>>2]|0)+1|0;c[$>>2]=aa;sh(ca,112,U,aa,0)|0;Ou(ga,n,-1,aa);sh(ca,66,n,aa,0)|0;break}if((n|0)==(U|0))break;h=c[h+8>>2]|0;A:do if(!h)A=0;else while(1){if((a[h+51>>0]&3)==2){A=h;break A}h=c[h+20>>2]|0;if(!h){A=0;break}}while(0);F=A+46|0;t=b[F>>1]|0;h=t&65535;y=ga+60|0;x=c[y>>2]|0;w=ga+56|0;s=c[w>>2]|0;if((s|0)<(h|0)){aa=ga+72|0;x=c[aa>>2]|0;c[aa>>2]=x+h;x=x+1|0}else{c[y>>2]=x+h;c[w>>2]=s-h}if(t<<16>>16){s=A+4|0;t=S+48|0;w=S+4|0;B=0;do{A=b[(c[s>>2]|0)+(B<<1)>>1]|0;h=b[t>>1]|0;B:do if(!(h<<16>>16))h=-1;else{z=c[w>>2]|0;y=h&65535;h=0;while(1){if((b[z+(h<<1)>>1]|0)==A<<16>>16)break B;h=h+1|0;if((h|0)>=(y|0)){h=-1;break}}}while(0);sh(ca,47,U,h<<16>>16,B+x|0)|0;B=B+1|0;h=e[F>>1]|0}while((B|0)<(h|0))}th(ca,sh(ca,68,n,da,x)|0,h,-14)}while(0);x=c[T>>2]|0;do if(!(x&4096)){w=k+(sa*80|0)+781|0;if(!_){a[w>>0]=9;break}else{a[w>>0]=8;break}}else a[k+(sa*80|0)+781>>0]=-100;while(0);c[k+(sa*80|0)+784>>2]=U;a[k+(sa*80|0)+782>>0]=x>>>16&1;if(x&15){ua=459;break}a[k+(sa*80|0)+783>>0]=1;ua=459;break}if(!(D&8192))if(!(A&8)){a[k+(sa*80|0)+781>>0]=a[33560+_>>0]|0;c[k+(sa*80|0)+784>>2]=n;c[k+(sa*80|0)+788>>2]=(sh(ca,d[33568+_>>0]|0,n,G,0)|0)+1;a[k+(sa*80|0)+783>>0]=1;ua=459;break}else{a[k+(sa*80|0)+781>>0]=-100;ua=459;break}G=ga+68|0;Z=c[G>>2]|0;c[G>>2]=Z+1;X=ga+72|0;Y=(c[X>>2]|0)+1|0;c[X>>2]=Y;_=ts(ca)|0;W=c[F+(H*72|0)+24>>2]|0;l=c[c[K+48>>2]>>2]|0;P=c[l+12>>2]|0;a[k+(sa*80|0)+781>>0]=18;c[k+(sa*80|0)+784>>2]=Y;A=a[ya>>0]|0;do if((A&255)>1){F=(A&255)-sa|0;D=F+-1|0;B=ih(ea,(D*72|0)+80|0,0)|0;if(!B)break z;A=F&255;c[B+4>>2]=A;c[B>>2]=A;A=B+8|0;H=A+0|0;z=N+0|0;h=H+72|0;do{c[H>>2]=c[z>>2];H=H+4|0;z=z+4|0}while((H|0)<(h|0));E=c[za>>2]|0;if((F|0)<2){V=B;break}else F=1;while(1){H=A+(F*72|0)+0|0;z=E+((d[k+((F+sa|0)*80|0)+780>>0]|0)*72|0)+8|0;h=H+72|0;do{c[H>>2]=c[z>>2];H=H+4|0;z=z+4|0}while((H|0)<(h|0));if((F|0)<(D|0))F=F+1|0;else{V=B;break}}}else V=c[za>>2]|0;while(0);if(!(b[Ba>>1]&8)){if(!(a[W+44>>0]&32)){A=(c[X>>2]|0)+1|0;c[X>>2]=A;sh(ca,28,0,A,0)|0}else{A=c[W+8>>2]|0;C:do if(!A)A=0;else while(1){if((a[A+51>>0]&3)==2)break C;A=c[A+20>>2]|0;if(!A){A=0;break}}while(0);U=c[G>>2]|0;c[G>>2]=U+1;sh(ca,57,U,e[A+46>>1]|0,0)|0;T=c[L>>2]|0;th(T,-1,ds(ga,A)|0,-6);A=U}T=(c[X>>2]|0)+1|0;c[X>>2]=T}else{T=0;A=0}U=sh(ca,25,0,Y,0)|0;z=c[va>>2]|0;do if((z|0)>1){B=0;F=0;do{E=c[wa>>2]|0;S=E+(B*48|0)|0;D=c[S>>2]|0;do if((S|0)!=(l|0)){if(c[D+4>>2]&1)break;if(b[E+(B*48|0)+20>>1]&2)break;if(!(b[E+(B*48|0)+18>>1]&4095))break;F=os(ea,F,Ir(ea,D,0,0)|0)|0;z=c[va>>2]|0}while(0);B=B+1|0}while((B|0)<(z|0));z=F;if(!z){S=0;break}S=Vq(ga,72,0,z,0)|0}else S=0;while(0);R=P+12|0;do if((c[R>>2]|0)>0){u=P+20|0;t=(S|0)==0;s=W+44|0;w=ca+32|0;x=ca+4|0;z=ca+24|0;B=W+8|0;D=ga+60|0;E=ga+56|0;F=S+12|0;Q=0;y=0;h=0;v=240;while(1){H=c[u>>2]|0;if((c[H+(Q*48|0)+8>>2]|0)!=(n|0)?(b[H+(Q*48|0)+18>>1]&512)==0:0)H=v;else ua=407;do if((ua|0)==407){ua=0;H=c[H+(Q*48|0)>>2]|0;do if(!t){if(c[H+4>>2]&1)break;c[F>>2]=H;H=S}while(0);I=Rs(ga,V,H,0,0,v,Z)|0;if(!I){H=v;break}Lu(ga,V,I+736|0,sa,d[$>>0]|0,0);do if(!(b[Ba>>1]&8)){L=(Q|0)==((c[R>>2]|0)+-1|0)?-1:Q;do if(!(a[s>>0]&32)){G=sh(ca,130,A,0,_s(ga,W,-1,n,T,0)|0)|0;th(ca,G,L,-14)}else{H=c[B>>2]|0;D:do if(!H)H=0;else while(1){if((a[H+51>>0]&3)==2)break D;H=c[H+20>>2]|0;if(!H){H=0;break}}while(0);M=b[H+46>>1]|0;J=M&65535;P=c[D>>2]|0;N=c[E>>2]|0;if((N|0)<(J|0)){K=c[X>>2]|0;c[X>>2]=K+J;K=K+1|0}else{c[D>>2]=P+J;c[E>>2]=N-J;K=P}if(M<<16>>16){N=H+4|0;P=0;do{_s(ga,W,b[(c[N>>2]|0)+(P<<1)>>1]|0,n,P+K|0,0)|0;P=P+1|0}while((P|0)<(J|0))}P=(L|0)!=0;if(P){G=sh(ca,69,A,0,K)|0;th(ca,G,J,-14);if((L|0)>-1)ua=426}else{G=0;ua=426}do if((ua|0)==426){ua=0;sh(ca,49,K,J,T)|0;sh(ca,110,A,T,0)|0;if(!P)break;L=c[x>>2]|0;if(!L)break;a[L+(((c[w>>2]|0)+-1|0)*20|0)+3>>0]=16}while(0);$s(ga,K,J);if((c[E>>2]|0)>=(J|0))break;c[E>>2]=J;c[D>>2]=K}while(0);sh(ca,17,Y,_,0)|0;if(!G)break;H=c[w>>2]|0;if(H>>>0>G>>>0)c[(c[x>>2]|0)+(G*20|0)+8>>2]=H;c[(c[z>>2]|0)+88>>2]=H+-1}else sh(ca,17,Y,_,0)|0;while(0);h=(a[I+39>>0]|0)==0?h:1;H=c[I+800>>2]|0;do if(!(c[H+36>>2]&512)){y=0;H=v}else{if((Q|0)!=0?(c[H+28>>2]|0)!=(y|0):0){y=0;H=v;break}y=c[H+28>>2]|0;if((a[s>>0]&32)!=0?(a[y+51>>0]&3)==2:0){y=0;H=v;break}H=(v&65535|4096)&65535}while(0);Ts(I)}while(0);Q=Q+1|0;if((Q|0)>=(c[R>>2]|0))break;else v=H}c[k+(sa*80|0)+792>>2]=y;if(!y){s=h;break}c[k+(sa*80|0)+744>>2]=Z;s=h}else{c[k+(sa*80|0)+792>>2]=0;s=0}while(0);if(S){c[S+12>>2]=0;Ck(ea,S)}w=ca+32|0;h=c[w>>2]|0;if(h>>>0>U>>>0)c[(c[ca+4>>2]|0)+(U*20|0)+4>>2]=h;sh(ca,16,0,c[aa>>2]|0,0)|0;y=c[ca+24>>2]|0;x=~_;do if((_|0)<0){h=c[y+112>>2]|0;if(!h)break;c[h+(x<<2)>>2]=c[w>>2]}while(0);c[y+88>>2]=(c[w>>2]|0)+-1;if((d[ya>>0]|0)>1)ig(ea,V);if(s){ua=459;break}Nu(r,l);ua=459}else{ua=c[F+(H*72|0)+36>>2]|0;sh(ca,20,ua,0,c[F+(H*72|0)+32>>2]|0)|0;c[k+(sa*80|0)+788>>2]=sh(ca,22,ua,G,0)|0;a[k+(sa*80|0)+781>>0]=16;ua=459}while(0);if((ua|0)==459){ua=0;h=c[va>>2]|0;do if((h|0)>0){u=k+(sa*80|0)+772|0;v=ca+32|0;z=ca+4|0;A=ca+24|0;t=c[wa>>2]|0;while(1){s=t+20|0;y=b[s>>1]|0;do if(!(y&6)){aa=t+40|0;$=fa;if(!((c[$>>2]&c[aa>>2]|0)==0?(c[$+4>>2]&c[aa+4>>2]|0)==0:0)){a[ja>>0]=1;break}x=c[t>>2]|0;if((c[r>>2]|0)!=0?(c[x+4>>2]&1|0)==0:0)break;do if(!(y&512))ct(ga,x,da,16);else{w=sh(ca,46,c[u>>2]|0,0,0)|0;ct(ga,x,da,16);if(!w)break;y=c[v>>2]|0;if(y>>>0>w>>>0)c[(c[z>>2]|0)+(w*20|0)+8>>2]=y;c[(c[A>>2]|0)+88>>2]=y+-1}while(0);b[s>>1]=e[s>>1]|4}while(0);h=h+-1|0;if((h|0)<=0)break;else t=t+48|0}u=c[va>>2]|0;if((u|0)<=0){ua=475;break}w=c[wa>>2]|0;while(1){do if(!(b[w+20>>1]&6)){if((b[w+18>>1]|0)!=1026)break;if((c[w+8>>2]|0)!=(n|0))break;if(c[r>>2]|0)break;y=c[w>>2]|0;h=Bu(Fa,n,c[w+12>>2]|0,q,p,3,0)|0;if(!h)break;if(b[h+20>>1]&4)break;x=ih(ea,48,0)|0;if(!x)break;H=x+0|0;z=(c[h>>2]|0)+0|0;h=H+48|0;do{c[H>>2]=c[z>>2];H=H+4|0;z=z+4|0}while((H|0)<(h|0));c[x+12>>2]=c[y+12>>2];ct(ga,x,da,16);ig(ea,x)}while(0);u=u+-1|0;if((u|0)<=0)break;else w=w+48|0}}else ua=475;while(0);if((ua|0)==475)ua=0;r=c[r>>2]|0;do if(r){c[k+(sa*80|0)+764>>2]=c[ca+32>>2];sh(ca,25,1,r,0)|0;Ys(ga);r=c[va>>2]|0;if((r|0)<=0)break;u=0;t=c[wa>>2]|0;while(1){q=t+20|0;do if(!(b[q>>1]&6)){ca=t+40|0;aa=fa;if(!((c[aa>>2]&c[ca>>2]|0)==0?(c[aa+4>>2]&c[ca+4>>2]|0)==0:0))break;ct(ga,c[t>>2]|0,da,16);b[q>>1]=e[q>>1]|4;r=c[va>>2]|0}while(0);u=u+1|0;if((u|0)>=(r|0))break;else t=t+48|0}}while(0);p=fa;q=c[p>>2]|0;p=c[p+4>>2]|0}c[Aa>>2]=c[ta+(sa*80|0)+24>>2];sa=sa+1|0;if((sa|0)>=(o|0))break a}}}while(0);if(Ga)k=0;else{c[Ca>>2]=c[Da>>2];Tu(Ia,k);k=0}}else{c[Ka>>2]=64;ph(f,33504,Ka);k=0}while(0);i=Ma;return k|0}function Ss(a){a=a|0;var b=0,c=0,d=0,e=0;e=a<<16>>16;do if(a<<16>>16>=10){a=(e|0)%10|0;b=((a|0)<0)<<31>>31;if(a>>>0>4){c=fw(a|0,b|0,-2,-1)|0;d=C}else{c=((a|0)!=0)<<31>>31;c=fw(c|0,((c|0)<0)<<31>>31|0,a|0,b|0)|0;d=C}b=((e|0)/10|0)<<16;a=b>>16;if((b|0)<=131072){b=fw(c|0,d|0,8,0)|0;a=iw(b|0,C|0,3-a|0)|0;b=C;break}if((b|0)>3932160){b=2147483647;a=-1}else{b=fw(c|0,d|0,8,0)|0;a=ew(b|0,C|0,a+-3|0)|0;b=C}}else{b=0;a=1}while(0);C=b;return a|0}function Ts(e){e=e|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;C=c[e>>2]|0;D=c[C+8>>2]|0;F=c[e+4>>2]|0;G=c[C>>2]|0;Ys(C);H=e+41|0;g=a[H>>0]|0;if(!(g<<24>>24))f=D+24|0;else{f=D+24|0;p=D+32|0;r=D+4|0;o=g&255;do{o=o+-1|0;i=c[e+(o*80|0)+800>>2]|0;A=c[e+(o*80|0)+760>>2]|0;g=c[f>>2]|0;h=~A;if((A|0)<0?(s=c[g+112>>2]|0,(s|0)!=0):0)c[s+(h<<2)>>2]=c[p>>2];c[g+88>>2]=(c[p>>2]|0)+-1;B=e+(o*80|0)+781|0;h=a[B>>0]|0;if(h<<24>>24!=-100?(sh(D,h&255,c[e+(o*80|0)+784>>2]|0,c[e+(o*80|0)+788>>2]|0,d[e+(o*80|0)+782>>0]|0)|0,u=c[r>>2]|0,(u|0)!=0):0)a[u+(((c[p>>2]|0)+-1|0)*20|0)+3>>0]=a[e+(o*80|0)+783>>0]|0;t=i+36|0;if((c[t>>2]&2048|0)!=0?(v=e+(o*80|0)+792|0,w=c[v>>2]|0,(w|0)>0):0){A=c[e+(o*80|0)+752>>2]|0;k=c[f>>2]|0;h=~A;if((A|0)<0?(x=c[k+112>>2]|0,(x|0)!=0):0){c[x+(h<<2)>>2]=c[p>>2];l=c[v>>2]|0;j=c[p>>2]|0;c[k+88>>2]=j+-1;g=e+(o*80|0)+796|0;if((l|0)>0)I=16}else{j=c[p>>2]|0;c[k+88>>2]=j+-1;g=e+(o*80|0)+796|0;l=w;I=16}if((I|0)==16){I=0;h=k;n=l;m=(c[g>>2]|0)+((l+-1|0)*12|0)|0;while(1){l=m+4|0;k=c[l>>2]|0;i=k+1|0;if(j>>>0>i>>>0)c[(c[r>>2]|0)+(i*20|0)+8>>2]=j;c[h+88>>2]=j+-1;sh(D,d[m+8>>0]|0,c[m>>2]|0,k,0)|0;l=(c[l>>2]|0)+-1|0;j=c[p>>2]|0;if(j>>>0>l>>>0)c[(c[r>>2]|0)+(l*20|0)+8>>2]=j;h=c[f>>2]|0;c[h+88>>2]=j+-1;n=n+-1|0;if((n|0)<=0)break;else m=m+-12|0}}ig(G,c[g>>2]|0)}A=c[e+(o*80|0)+748>>2]|0;i=c[f>>2]|0;h=~A;if((A|0)<0?(q=c[i+112>>2]|0,(q|0)!=0):0)c[q+(h<<2)>>2]=c[p>>2];h=c[p>>2]|0;c[i+88>>2]=h+-1;i=e+(o*80|0)+756|0;g=c[i>>2]|0;if(g){sh(D,16,0,g,0)|0;i=c[i>>2]|0;h=c[p>>2]|0;if(h>>>0>i>>>0)c[(c[r>>2]|0)+(i*20|0)+8>>2]=h;j=h+-1|0;g=(c[f>>2]|0)+88|0;c[g>>2]=j;i=i+-2|0;if(h>>>0>i>>>0)c[(c[r>>2]|0)+(i*20|0)+8>>2]=h;c[g>>2]=j}i=c[e+(o*80|0)+776>>2]|0;if(i){if(!(a[(c[D>>2]|0)+65>>0]|0))h=(c[r>>2]|0)+((((i|0)<1?h:i)+-1|0)*20|0)|0;else h=29120;sh(D,(c[h+4>>2]|0)==0?141:140,c[e+(o*80|0)+772>>2]|0,i,0)|0}g=c[e+(o*80|0)+736>>2]|0;if(g){j=sh(D,137,g,0,0)|0;g=c[t>>2]|0;if(!(g&64)){sh(D,104,c[F+(o*72|0)+48>>2]|0,0,0)|0;g=c[t>>2]|0}if(g&512)sh(D,104,c[e+(o*80|0)+744>>2]|0,0,0)|0;g=c[e+(o*80|0)+764>>2]|0;if((a[B>>0]|0)==18)sh(D,17,c[e+(o*80|0)+784>>2]|0,g,0)|0;else sh(D,16,0,g,0)|0;g=c[p>>2]|0;if(g>>>0>j>>>0)c[(c[r>>2]|0)+(j*20|0)+8>>2]=g;c[(c[f>>2]|0)+88>>2]=g+-1}}while((o|0)>0)}A=c[e+52>>2]|0;g=c[f>>2]|0;f=~A;if((A|0)<0?(y=c[g+112>>2]|0,(y|0)!=0):0)c[y+(f<<2)>>2]=c[D+32>>2];B=D+32|0;c[g+88>>2]=(c[B>>2]|0)+-1;if(a[H>>0]|0){u=e+34|0;v=e+38|0;w=e+64|0;x=G+65|0;y=D+4|0;z=0;A=e+736|0;while(1){i=d[A+44>>0]|0;j=c[F+(i*72|0)+24>>2]|0;h=c[A+64>>2]|0;if((a[F+(i*72|0)+45>>0]&4)!=0?(a[x>>0]|0)==0:0){k=c[B>>2]|0;h=c[A+32>>2]|0;if(!(a[(c[D>>2]|0)+65>>0]|0))g=(c[y>>2]|0)+(((h|0)<0?k+-1|0:h)*20|0)|0;else g=29120;if((h|0)<(k|0)){l=c[A+4>>2]|0;j=F+(i*72|0)+40|0;i=g;while(1){g=i+4|0;do if((c[g>>2]|0)==(l|0)){f=a[i>>0]|0;if(f<<24>>24==47){a[i>>0]=33;s=i+8|0;c[g>>2]=(c[j>>2]|0)+(c[s>>2]|0);t=i+12|0;c[s>>2]=c[t>>2];c[t>>2]=0;break}else if(f<<24>>24==103){a[i>>0]=28;c[g>>2]=0;c[i+12>>2]=0;break}else break}while(0);h=h+1|0;if((h|0)==(k|0))break;else i=i+20|0}}}else I=64;do if((I|0)==64){I=0;t=j+44|0;if(((a[t>>0]&2)==0?(c[j+12>>2]|0)==0:0)?(b[u>>1]&16)==0:0){g=c[h+36>>2]|0;if((a[v>>0]|0)==0&(g&64|0)==0)sh(D,61,c[F+(i*72|0)+48>>2]|0,0,0)|0;if((g&17152|0)==512?(E=c[A+8>>2]|0,(E|0)!=(c[w>>2]|0)):0)sh(D,61,E,0,0)|0}g=c[h+36>>2]|0;if(!(g&576)){if(!(g&8192))break;g=A+56|0}else g=h+28|0;h=c[g>>2]|0;if((h|0)!=0?(a[x>>0]|0)==0:0){r=c[B>>2]|0;l=c[A+32>>2]|0;if(!(a[(c[D>>2]|0)+65>>0]|0))k=(c[y>>2]|0)+(((l|0)<0?r+-1|0:l)*20|0)|0;else k=29120;if((l|0)<(r|0)){s=h+48|0;p=h+4|0;q=A+8|0;o=j+8|0;f=c[A+4>>2]|0;g=k;while(1){h=g+4|0;a:do if((c[h>>2]|0)==(f|0)){k=a[g>>0]|0;if(k<<24>>24==103){c[h>>2]=c[q>>2];a[g>>0]=112;break}else if(k<<24>>24!=47)break;i=g+8|0;k=c[i>>2]|0;if(a[t>>0]&32){j=o;while(1){j=c[j>>2]|0;if((a[j+51>>0]&3)==2)break;else j=j+20|0}k=b[(c[j+4>>2]|0)+(k<<1)>>1]|0}n=k&65535;k=b[s>>1]|0;if(k<<16>>16){j=c[p>>2]|0;m=k&65535;k=0;while(1){if((b[j+(k<<1)>>1]|0)==n<<16>>16)break;k=k+1|0;if((k|0)>=(m|0))break a}if((k&65535)<<16>>16>-1){c[i>>2]=k<<16>>16;c[h>>2]=c[q>>2]}}}while(0);l=l+1|0;if((l|0)==(r|0))break;else g=g+20|0}}}}while(0);z=z+1|0;if((z|0)>=(d[H>>0]|0))break;else A=A+80|0}}c[C+424>>2]=c[e+56>>2];Tu(G,e);return}function Us(a,b){a=a|0;b=b|0;var d=0,e=0;if((b|0)!=0?(c[b>>2]|0)>0:0){d=0;e=c[b+4>>2]|0;while(1){Uu(a,c[e>>2]|0);d=d+1|0;if((d|0)>=(c[b>>2]|0))break;else e=e+20|0}}return}function Vs(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))ba();r=u;h=c[e+24>>2]|0;s=c[h>>2]|0;m=c[h+4>>2]|0;t=c[h+12>>2]|0;g=d[f>>0]|0;a:do if((g|0)==154|(g|0)==156)if((m|0)!=0?(l=c[m>>2]|0,(l|0)>0):0){p=f+28|0;o=c[p>>2]|0;g=0;h=m+8|0;while(1){if((o|0)==(c[h+40>>2]|0))break;g=g+1|0;if((g|0)>=(l|0)){e=1;break a}else h=h+72|0}n=t+28|0;k=t+32|0;h=c[k>>2]|0;b:do if((h|0)>0){m=f+32|0;e=0;l=c[n>>2]|0;while(1){if((c[l+4>>2]|0)==(o|0)?(c[l+8>>2]|0)==(b[m>>1]|0):0)break b;e=e+1|0;if((e|0)<(h|0))l=l+24|0;else break}}else e=0;while(0);c:do if((e|0)>=(h|0)){h=Dt(c[s>>2]|0,c[n>>2]|0,24,k,r)|0;c[n>>2]=h;e=c[r>>2]|0;if((e|0)>-1){c[h+(e*24|0)>>2]=c[f+44>>2];k=c[p>>2]|0;c[h+(e*24|0)+4>>2]=k;l=b[f+32>>1]|0;c[h+(e*24|0)+8>>2]=l<<16>>16;p=s+72|0;m=(c[p>>2]|0)+1|0;c[p>>2]=m;c[h+(e*24|0)+16>>2]=m;m=h+(e*24|0)+12|0;c[m>>2]=-1;c[h+(e*24|0)+20>>2]=f;h=c[t+24>>2]|0;d:do if((h|0)!=0?(q=c[h>>2]|0,(q|0)>0):0){g=0;h=c[h+4>>2]|0;while(1){p=c[h>>2]|0;if(((a[p>>0]|0)==-102?(c[p+28>>2]|0)==(k|0):0)?(b[p+32>>1]|0)==l<<16>>16:0)break;g=g+1|0;if((g|0)>=(q|0))break d;else h=h+20|0}c[m>>2]=g;if((g|0)>=0)break c}while(0);p=t+12|0;q=c[p>>2]|0;c[p>>2]=q+1;c[m>>2]=q}}while(0);c[f+40>>2]=t;a[f>>0]=-100;b[f+34>>1]=e;e=1}else e=1;else if(((g|0)==155?(b[h+28>>1]&8)==0:0)?(c[e+16>>2]|0)==(d[f+38>>0]|0):0){l=t+40|0;m=t+44|0;g=c[m>>2]|0;e:do if((g|0)>0){e=0;h=c[l>>2]|0;while(1){if(!(yu(c[h>>2]|0,f,-1)|0))break e;e=e+1|0;if((e|0)<(g|0))h=h+16|0;else break}}else e=0;while(0);do if((e|0)>=(g|0)){k=c[s>>2]|0;n=a[k+62>>0]|0;k=Dt(k,c[l>>2]|0,16,m,r)|0;c[l>>2]=k;e=c[r>>2]|0;if((e|0)>-1){c[k+(e<<4)>>2]=f;l=s+72|0;m=(c[l>>2]|0)+1|0;c[l>>2]=m;c[k+(e<<4)+8>>2]=m;m=c[s>>2]|0;l=c[f+8>>2]|0;if(!l)g=0;else{h=l;while(1)if(!(a[h>>0]|0))break;else h=h+1|0;g=h-l&1073741823}h=c[f+20>>2]|0;if(!h)h=0;else h=c[h>>2]|0;c[k+(e<<4)+4>>2]=Oh(m,l,g,h,n,0)|0;if(!(c[f+4>>2]&16)){c[k+(e<<4)+12>>2]=-1;break}else{p=s+68|0;q=c[p>>2]|0;c[p>>2]=q+1;c[k+(e<<4)+12>>2]=q;break}}}while(0);b[f+34>>1]=e;c[f+40>>2]=t;e=1}else e=0;while(0);i=u;return e|0}function Ws(a,b){a=a|0;b=b|0;return 0}function Xs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;if((a[b+450>>0]|0)==2){g=c[b+8>>2]|0;h=c[b>>2]|0;c[e>>2]=d;e=qh(h,35e3,e)|0;th(g,sh(g,157,c[b+464>>2]|0,0,0)|0,e,-1)}i=f;return}function Ys(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=b+19|0;i=0;j=b+116|0;while(1){e=j+12|0;f=c[e>>2]|0;if(f){g=j+6|0;if(a[g>>0]|0){h=a[d>>0]|0;if((h&255)<8){a[d>>0]=h+1<<24>>24;c[b+((h&255)<<2)+24>>2]=f}a[g>>0]=0}c[e>>2]=0}i=i+1|0;if((i|0)==10)break;else j=j+20|0}return}function Zs(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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=i;i=i+32|0;if((i|0)>=(j|0))ba();x=z;g=f&255;q=34-(g&1)|0;t=c[d>>2]|0;if(!(a[b+23>>0]|0))f=g&253;if((t|0)>0){h=(f&2)==0;k=b+8|0;l=(q|0)==33;m=x+20|0;n=x+4|0;o=x+24|0;p=0;d=c[d+4>>2]|0;while(1){g=c[d>>2]|0;if(!h?(c[x+0>>2]=0,c[x+4>>2]=0,c[x+8>>2]=0,c[x+12>>2]=0,c[x+16>>2]=0,c[x+20>>2]=0,a[m>>0]=1,c[x>>2]=78,c[n>>2]=79,c[o>>2]=0,ns(x,g)|0,(a[m>>0]|0)!=0):0)Ct(b,g,p+e|0,0);else y=8;do if((y|0)==8?(y=0,r=p+e|0,s=es(b,g,r)|0,(s|0)!=(r|0)):0){f=c[k>>2]|0;if(l){if(!(a[(c[f>>2]|0)+65>>0]|0))g=(c[f+4>>2]|0)+(((c[f+32>>2]|0)+-1|0)*20|0)|0;else g=29120;if(((a[g>>0]|0)==33?(u=g+12|0,v=c[u>>2]|0,((c[g+4>>2]|0)+1+v|0)==(s|0)):0)?(w=v+1|0,(w+(c[g+8>>2]|0)|0)==(r|0)):0){c[u>>2]=w;break}}sh(f,q,s,r,0)|0}while(0);p=p+1|0;if((p|0)==(t|0))break;else d=d+20|0}}i=z;return}function _s(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0;n=c[d+8>>2]|0;j=d+116|0;m=0;k=j;while(1){l=c[k+12>>2]|0;if(((l|0)>0?(c[k>>2]|0)==(g|0):0)?(b[k+4>>1]|0)==(f|0):0){h=l;m=5;break}m=m+1|0;if((m|0)>=10){m=10;break}else k=k+20|0}do if((m|0)==5){n=d+104|0;i=c[n>>2]|0;c[n>>2]=i+1;c[k+16>>2]=i;k=0;while(1){if((c[j+12>>2]|0)==(h|0))a[j+6>>0]=0;k=k+1|0;if((k|0)==10)break;else j=j+20|0}}else if((m|0)==10){jt(n,e,g,f,h);if(!(i<<24>>24)){Ou(d,g,f,h);break}j=c[n+4>>2]|0;if(j)a[j+(((c[n+32>>2]|0)+-1|0)*20|0)+3>>0]=i}while(0);return h|0}function $s(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=d+-1+e|0;g=b+19|0;k=0;l=b+116|0;while(1){h=l+12|0;i=c[h>>2]|0;if(!((i|0)<(d|0)|(i|0)>(e|0))){j=l+6|0;if(a[j>>0]|0){f=a[g>>0]|0;if((f&255)<8){a[g>>0]=f+1<<24>>24;c[b+((f&255)<<2)+24>>2]=i}a[j>>0]=0}c[h>>2]=0}k=k+1|0;if((k|0)==10)break;else l=l+20|0}return}function at(d,e){d=d|0;e=e|0;var 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,A=0;A=c[d+8>>2]|0;a[e>>0]=1;s=e+44|0;if((c[s>>2]|0)>0){t=A+4|0;v=d+56|0;w=d+60|0;o=A+24|0;p=A+32|0;q=e+36|0;r=d+72|0;x=0;y=c[e+40>>2]|0;f=0;while(1){k=c[(c[y>>2]|0)+20>>2]|0;if(!k){g=0;i=0}else{g=c[k>>2]|0;i=c[w>>2]|0;h=c[v>>2]|0;if((h|0)<(g|0)){i=c[r>>2]|0;c[r>>2]=i+g;i=i+1|0}else{c[w>>2]=i+g;c[v>>2]=h-g}Zs(d,k,i,1)}h=y+12|0;if((c[h>>2]|0)>-1){n=ts(A)|0;vu(d,c[h>>2]|0,n,1,i)}else n=0;m=y+4|0;h=c[m>>2]|0;if(b[h+2>>1]&32){if((g|0)>0){l=0;k=c[k+4>>2]|0;while(1){h=_t(d,c[k>>2]|0)|0;l=l+1|0;j=(h|0)!=0;if(!((l|0)<(g|0)&(j^1)))break;else k=k+20|0}if(!j)z=15}else z=15;if((z|0)==15){z=0;h=c[(c[d>>2]|0)+8>>2]|0}if(!f)if(!(c[q>>2]|0))f=0;else{f=(c[r>>2]|0)+1|0;c[r>>2]=f}th(A,sh(A,36,f,0,0)|0,h,-4);h=c[m>>2]|0}th(A,sh(A,10,0,i,c[y+8>>2]|0)|0,h,-5);h=c[t>>2]|0;if(h)a[h+(((c[p>>2]|0)+-1|0)*20|0)+3>>0]=g;$s(d,i,g);$s(d,i,g);if((c[v>>2]|0)<(g|0)){c[v>>2]=g;c[w>>2]=i}if(n){i=c[o>>2]|0;h=~n;if((n|0)<0?(u=c[i+112>>2]|0,(u|0)!=0):0)c[u+(h<<2)>>2]=c[p>>2];c[i+88>>2]=(c[p>>2]|0)+-1;Ys(d)}x=x+1|0;if((x|0)>=(c[s>>2]|0))break;else y=y+16|0}if(f)i=sh(A,45,f,0,0)|0;else i=0}else i=0;Ys(d);f=e+36|0;if((c[f>>2]|0)>0){g=0;h=c[e+28>>2]|0;while(1){Nq(d,c[h+20>>2]|0,c[h+16>>2]|0);g=g+1|0;if((g|0)>=(c[f>>2]|0))break;else h=h+24|0}}a[e>>0]=0;Ys(d);if(i){f=c[A+32>>2]|0;if(f>>>0>i>>>0)c[(c[A+4>>2]|0)+(i*20|0)+8>>2]=f;c[(c[A+24>>2]|0)+88>>2]=f+-1}return}function bt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=c[a+8>>2]|0;e=b+44|0;if((c[e>>2]|0)>0){f=0;b=c[b+40>>2]|0;while(1){a=c[(c[b>>2]|0)+20>>2]|0;if(!a)a=0;else a=c[a>>2]|0;g=c[b+4>>2]|0;th(d,sh(d,142,c[b+8>>2]|0,a,0)|0,g,-5);f=f+1|0;if((f|0)>=(c[e>>2]|0))break;else b=b+16|0}}return}function ct(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();n=p+4|0;o=p;m=c[b+8>>2]|0;c[n>>2]=0;c[o>>2]=0;if(!((m|0)==0|(e|0)==0)){q=d[e>>0]|0;h=q^1;a:do switch(q|0){case 71:{l=ts(m)|0;Vu(b,c[e+12>>2]|0,l,g^16);h=b+100|0;c[h>>2]=(c[h>>2]|0)+1;ct(b,c[e+16>>2]|0,f,g);f=c[m+24>>2]|0;h=~l;if((l|0)<0?(k=c[f+112>>2]|0,(k|0)!=0):0)c[k+(h<<2)>>2]=c[m+32>>2];c[f+88>>2]=(c[m+32>>2]|0)+-1;Zt(b);break}case 74:{Wu(b,e,f,0,g);break}case 19:{Vu(b,c[e+12>>2]|0,f,g);break}case 72:{ct(b,c[e+12>>2]|0,f,g);m=b+100|0;c[m>>2]=(c[m>>2]|0)+1;ct(b,c[e+16>>2]|0,f,g);Zt(b);break}case 77:case 76:{sh(m,h,Xt(b,c[e+12>>2]|0,n)|0,f,0)|0;break}case 79:case 78:case 83:case 80:case 81:case 82:{q=e+12|0;l=Xt(b,c[q>>2]|0,n)|0;k=e+16|0;m=Xt(b,c[k>>2]|0,o)|0;Yt(b,c[q>>2]|0,c[k>>2]|0,h,l,m,f,g);break}case 148:case 73:{g=e+12|0;l=Xt(b,c[g>>2]|0,n)|0;k=e+16|0;m=Xt(b,c[k>>2]|0,o)|0;Yt(b,c[g>>2]|0,c[k>>2]|0,(a[e>>0]|0)==73?78:79,l,m,f,128);break}case 75:{if(g){bu(b,e,f,f);break a}k=ts(m)|0;bu(b,e,f,k);h=c[m+24>>2]|0;f=~k;if((k|0)<0?(l=c[h+112>>2]|0,(l|0)!=0):0)c[l+(f<<2)>>2]=c[m+32>>2];c[h+88>>2]=(c[m+32>>2]|0)+-1;break}default:{if(iu(e)|0){sh(m,16,0,f,0)|0;break a}if(!(Xu(e)|0))sh(m,46,Xt(b,e,n)|0,f,(g|0)!=0&1)|0}}while(0);Wr(b,c[n>>2]|0);Wr(b,c[o>>2]|0)}i=p;return}function dt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;f=c[a+8>>2]|0;g=b+44|0;if((c[g>>2]|0)!=(0-(c[b+32>>2]|0)|0)?(sh(f,28,0,c[b+16>>2]|0,c[b+20>>2]|0)|0,(c[g>>2]|0)>0):0){h=0;e=c[b+40>>2]|0;while(1){b=e+12|0;do if((c[b>>2]|0)>-1){d=c[(c[e>>2]|0)+20>>2]|0;if((d|0)!=0?(c[d>>2]|0)==1:0){d=Qs(a,d,0,0)|0;th(f,sh(f,57,c[b>>2]|0,0,0)|0,d,-6);break}ph(a,34944,k);c[b>>2]=-1}while(0);h=h+1|0;if((h|0)>=(c[g>>2]|0))break;else e=e+16|0}}i=l;return}function et(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)>0){e=sh(a,138,b,0,-1)|0;sh(a,16,0,d,0)|0;b=c[a+32>>2]|0;if(b>>>0>e>>>0)c[(c[a+4>>2]|0)+(e*20|0)+8>>2]=b;c[(c[a+24>>2]|0)+88>>2]=b+-1}return}function ft(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0;if((c[(c[a>>2]|0)+24>>2]&8388608|0)!=0?(h=ws(a,b)|0,(h|0)!=0):0){a=0;b=h;do{if((d[b+8>>0]|0|0)==(e|0)?(Yu(c[b+16>>2]|0,f)|0)!=0:0)a=d[b+9>>0]|0|a;b=c[b+32>>2]|0}while((b|0)!=0)}else{a=0;h=0}if(g)c[g>>2]=a;return ((a|0)!=0?h:0)|0}function gt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;h=a[d+44>>0]|0;if(h&16){g=c[b>>2]|0;f=d+60|0;while(1){f=c[f>>2]|0;if((c[f>>2]|0)==(g|0))break;else f=f+24|0}if(!(c[(c[c[f+4>>2]>>2]|0)+52>>2]|0))g=8;else g=5}else g=5;do if((g|0)==5){if(((h&1)!=0?(c[(c[b>>2]|0)+24>>2]&2048|0)==0:0)?(a[b+18>>0]|0)==0:0){g=8;break}if((e|0)==0?(c[d+12>>2]|0)!=0:0){c[k>>2]=c[d>>2];ph(b,34456,k);f=1}else f=0}while(0);if((g|0)==8){c[k>>2]=c[d>>2];ph(b,34424,k);f=1}i=l;return f|0}function ht(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();o=p;n=c[b>>2]|0;h=c[d+68>>2]|0;a:do if(h){g=c[n+20>>2]|0;if((g|0)>0){l=c[n+16>>2]|0;m=0;while(1){k=m+1|0;if((c[l+(m<<4)+12>>2]|0)==(h|0)){k=m;break a}if((k|0)<(g|0))m=k;else break}}else k=0}else k=-1e6;while(0);g=Ir(n,e,0,0)|0;h=lr(n,0,0,0)|0;if(h){c[h+16>>2]=gh(n,c[d>>2]|0)|0;c[h+12>>2]=gh(n,c[(c[n+16>>2]|0)+(k<<4)>>2]|0)|0}e=gr(b,0,h,g,0,0,0,0,0,0)|0;a[o>>0]=12;c[o+4>>2]=f;a[o+1>>0]=0;c[o+8>>2]=0;c[o+12>>2]=0;er(b,e,o)|0;Ik(n,e,1);i=p;return}function it(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();o=p+4|0;h=p;a:do if(c[(c[a>>2]|0)+24>>2]&524288){if(!e){f=Zm((c[d+68>>2]|0)+56|0,c[d>>2]|0,h)|0;if((f|0)!=0?(c[f+8>>2]|0)!=0:0)g=1;else g=(c[d+16>>2]|0)!=0;g=g&1;break}a=c[d+16>>2]|0;if(a){m=d+36|0;n=(f|0)!=0;do{h=c[a+20>>2]|0;if((h|0)>0){l=0;do{k=c[a+(l<<3)+36>>2]|0;if((c[e+(k<<2)>>2]|0)>-1){g=1;break a}l=l+1|0;if((k|0)==(b[m>>1]|0)&n){g=1;break a}}while((l|0)<(h|0))}a=c[a+4>>2]|0}while((a|0)!=0)}h=Zm((c[d+68>>2]|0)+56|0,c[d>>2]|0,o)|0;if((h|0)!=0?(g=c[h+8>>2]|0,(g|0)!=0):0)while(1){if(Zu(d,g,e,f)|0){g=1;break a}g=c[g+12>>2]|0;if(!g){g=0;break}}else g=0}else g=0;while(0);i=p;return g|0}function jt(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0;if((h|0)>=0?(b[f+36>>1]|0)!=(h|0):0){j=d[f+44>>0]|0;n=(j&16|0)!=0?150:47;if(!(j&32))j=h;else{j=c[f+8>>2]|0;a:do if(!j)j=0;else while(1){if((a[j+51>>0]&3)==2)break a;j=c[j+20>>2]|0;if(!j){j=0;break}}while(0);m=h&65535;k=b[j+48>>1]|0;b:do if(!(k<<16>>16))j=-1;else{l=c[j+4>>2]|0;k=k&65535;j=0;while(1){if((b[l+(j<<1)>>1]|0)==m<<16>>16)break b;j=j+1|0;if((j|0)>=(k|0)){j=-1;break}}}while(0);j=j<<16>>16}sh(e,n,g,j,i)|0}else sh(e,103,g,i,0)|0;if((h|0)>-1)Jt(e,f,h,i);return}function kt(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=f+16|0;g=c[j>>2]|0;do if(!g){h=c[f+12>>2]|0;g=c[d>>2]|0;i=f+48|0;d=mg((e[i>>1]|0)+1|0,0)|0;c[j>>2]=d;if(!d){a[g+65>>0]=1;g=0;break}if(!(b[i>>1]|0))g=0;else{f=f+4|0;h=h+4|0;g=0;do{d=b[(c[f>>2]|0)+(g<<1)>>1]|0;if(d<<16>>16<0)d=68;else d=a[(c[h>>2]|0)+((d<<16>>16)*24|0)+21>>0]|0;a[(c[j>>2]|0)+g>>0]=d;g=g+1|0}while((g|0)<(e[i>>1]|0));d=c[j>>2]|0}a[d+g>>0]=0;g=c[j>>2]|0}while(0);return g|0}function lt(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=d+44|0;if(!(a[r>>0]&16)){k=c[b>>2]|0;m=c[d+68>>2]|0;a:do if(m){n=c[k+20>>2]|0;if((n|0)>0){k=c[k+16>>2]|0;l=0;while(1){j=l+1|0;if((c[k+(l<<4)+12>>2]|0)==(m|0))break a;if((j|0)<(n|0))l=j;else{l=j;break}}}else l=0}else l=-1e6;while(0);q=Kq(b)|0;if((f|0)<0)f=c[b+68>>2]|0;k=f+1|0;p=(h|0)!=0;if(p)c[h>>2]=f;do if(!(a[r>>0]&32)){if((g|0)!=0?(a[g>>0]|0)==0:0){o=15;break}Mq(b,f,l,d,e)}else o=15;while(0);if((o|0)==15)cs(b,l,c[d+32>>2]|0,(e|0)==55&1,c[d>>2]|0);if(i)c[i>>2]=k;f=c[d+8>>2]|0;if(!f)j=0;else{m=(g|0)==0;d=b+8|0;n=k;j=0;while(1){k=n+1|0;if((a[f+51>>0]&3)==2?(a[r>>0]&32)!=0&p:0)c[h>>2]=n;j=j+1|0;if(!(!m?(a[g+j>>0]|0)==0:0)){sh(q,e,n,c[f+40>>2]|0,l)|0;o=c[d>>2]|0;th(o,-1,ds(b,f)|0,-6)}f=c[f+20>>2]|0;if(!f)break;else n=k}}f=b+68|0;if((k|0)>(c[f>>2]|0))c[f>>2]=k}else j=0;return j|0}function mt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[b+408>>2]|0;h=(h|0)==0?b:h;g=h+452|0;b=c[g>>2]|0;e=c[h+520>>2]|0;a:do if((b|0)>0){f=0;while(1){if((c[e+(f<<2)>>2]|0)==(d|0))break a;f=f+1|0;if((f|0)>=(b|0)){i=4;break}}}else i=4;while(0);do if((i|0)==4){b=Tc(e,(b<<2)+4|0)|0;if(!b){a[(c[h>>2]|0)+65>>0]=1;break}else{c[h+520>>2]=b;e=c[g>>2]|0;c[g>>2]=e+1;c[b+(e<<2)>>2]=d;break}}while(0);return}function nt(d,e,f,g,h,i,j,k,l,m){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=c[d+8>>2]|0;x=ts(w)|0;u=(a[e+44>>0]&32)>>>4^70;if(!(m<<24>>24))th(w,sh(w,u,g,x,i)|0,j<<16>>16,-14);if((it(d,e,0,0)|0)!=0|(f|0)!=0){q=l&255;r=rt(d,f,0,0,3,e,q)|0;r=qt(d,e)|0|r;o=d+72|0;n=c[o>>2]|0;m=n+1|0;s=e+38|0;c[o>>2]=m+(b[s>>1]|0);sh(w,33,i,m,0)|0;o=b[s>>1]|0;if(o<<16>>16>0){t=(r|0)==-1;p=n+2|0;n=0;do{if(!t){if((n|0)<32?(1<>1]|0}n=n+1|0}while((n|0)<(o<<16>>16|0))}t=w+32|0;s=c[t>>2]|0;tt(d,f,109,0,1,e,m,q,x);if((s|0)<(c[t>>2]|0))th(w,sh(w,u,g,x,i)|0,j<<16>>16,-14);vt(d,e,m,0,0,0)}else m=0;if((c[e+12>>2]|0)==0?(wt(d,e,g,h,0),sh(w,95,g,k<<24>>24!=0&1,0)|0,k<<24>>24!=0):0)th(w,-1,c[e>>2]|0,0);yt(d,e,0,m,0,0);tt(d,f,109,0,2,e,m,l&255,x);n=c[w+24>>2]|0;m=~x;if((x|0)<0?(y=c[n+112>>2]|0,(y|0)!=0):0)c[y+(m<<2)>>2]=c[w+32>>2];c[n+88>>2]=(c[w+32>>2]|0)+-1;return}function ot(b){b=b|0;var 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;j=c[b+8>>2]|0;d=c[b+404>>2]|0;if(d){l=(c[b>>2]|0)+16|0;m=b+19|0;n=b+72|0;o=j+32|0;p=j+4|0;k=j+24|0;do{f=c[d+8>>2]|0;g=c[l>>2]|0;i=c[d+12>>2]|0;e=a[m>>0]|0;if(!(e<<24>>24)){h=(c[n>>2]|0)+1|0;c[n>>2]=h}else{h=e+-1<<24>>24;a[m>>0]=h;h=c[b+((h&255)<<2)+24>>2]|0}Mq(b,0,f,c[(c[g+(f<<4)+12>>2]|0)+72>>2]|0,55);g=i+1|0;f=sh(j,77,g,0,0)|0;sh(j,74,0,g,0)|0;e=c[o>>2]|0;if(e>>>0>f>>>0)c[(c[p>>2]|0)+(f*20|0)+8>>2]=e;c[(c[k>>2]|0)+88>>2]=e+-1;sh(j,49,i+-1|0,2,h)|0;sh(j,75,0,h,g)|0;e=c[p>>2]|0;if(e)a[e+(((c[o>>2]|0)+-1|0)*20|0)+3>>0]=8;sh(j,61,0,0,0)|0;Wr(b,h);d=c[d>>2]|0}while((d|0)!=0)}return}function pt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;c[g>>2]=e;if(!e)f=0;else{f=e;while(1)if(!(a[f>>0]|0))break;else f=f+1|0;f=f-e&1073741823}c[g+4>>2]=f;f=jr(b,d,g,0)|0;i=h;return f|0}function qt(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();k=o+4|0;n=o;if(c[(c[a>>2]|0)+24>>2]&524288){f=c[d+16>>2]|0;if(!f)e=0;else{e=0;do{g=c[f+20>>2]|0;if((g|0)>0){h=0;do{p=c[f+(h<<3)+36>>2]|0;e=((p|0)>31?-1:1<>2]|0}while((f|0)!=0)}f=Zm((c[d+68>>2]|0)+56|0,c[d>>2]|0,k)|0;if((f|0)!=0?(l=c[f+8>>2]|0,(l|0)!=0):0)do{c[n>>2]=0;It(a,d,l,n,0)|0;f=c[n>>2]|0;if((f|0)!=0?(m=b[f+46>>1]|0,m<<16>>16!=0):0){k=m&65535;h=c[f+4>>2]|0;g=0;do{f=b[h+(g<<1)>>1]|0;if(f<<16>>16>31)f=-1;else f=1<<(f<<16>>16);e=f|e;g=g+1|0}while((g|0)<(k|0))}l=c[l+12>>2]|0}while((l|0)!=0)}else e=0;i=o;return e|0}function rt(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;k=(e|0)!=0?110:109;if(!b)j=0;else{j=0;do{if((((d[b+8>>0]|0|0)==(k|0)?((d[b+9>>0]|0)&g|0)!=0:0)?(Yu(c[b+16>>2]|0,e)|0)!=0:0)?(l=_u(a,b,h,i)|0,(l|0)!=0):0)j=c[l+(f<<2)+16>>2]|j;b=c[b+32>>2]|0}while((b|0)!=0)}return j|0}function st(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=e+20|0;g=c[l>>2]|0;do if(!g){i=c[d>>2]|0;k=e+38|0;h=(b[k>>1]|0)+1|0;h=mg(h,((h|0)<0)<<31>>31)|0;if(!h){a[i+65>>0]=1;break}if((b[k>>1]|0)>0){i=e+4|0;g=0;do{a[h+g>>0]=a[(c[i>>2]|0)+(g*24|0)+21>>0]|0;g=g+1|0}while((g|0)<(b[k>>1]|0))}else g=0;do{a[h+g>>0]=0;if((g|0)<=0)break;g=g+-1|0}while((a[h+g>>0]|0)==65);c[l>>2]=h;j=10}else{h=g;j=10}while(0);do if((j|0)==10){g=h;while(1)if(!(a[g>>0]|0))break;else g=g+1|0;g=g-h&1073741823;if(g)if(!f){th(d,-1,h,g);break}else{th(d,sh(d,48,f,g,0)|0,h,g);break}}while(0);return}function tt(a,b,e,f,g,h,i,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;if(b)do{if(((d[b+8>>0]|0|0)==(e|0)?(d[b+9>>0]|0|0)==(g|0):0)?(Yu(c[b+16>>2]|0,f)|0)!=0:0)$u(a,b,h,i,j,k);b=c[b+32>>2]|0}while((b|0)!=0);return}function ut(d,f,g,h,k,l,m,n,o,p,q){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var 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,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,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=i;i=i+16|0;if((i|0)>=(j|0))ba();I=la;fa=(m|0)!=0;N=c[d>>2]|0;ka=Kq(d)|0;A=b[f+38>>1]|0;ia=f+44|0;if(!(a[ia>>0]&32)){ea=1;da=0}else{u=f+8|0;while(1){u=c[u>>2]|0;if((a[u+51>>0]&3)==2)break;else u=u+20|0}ea=e[u+46>>1]|0;da=u}if(A<<16>>16>0){w=f+36|0;v=f+4|0;u=o<<24>>24==10;t=d+408|0;s=l+1|0;B=ka+4|0;C=ka+32|0;D=ka+24|0;E=o&255;y=A<<16>>16;x=0;do{a:do if((x|0)!=(b[w>>1]|0)?(F=c[v>>2]|0,G=a[F+(x*24|0)+20>>0]|0,H=G&255,G<<24>>24!=0):0){if(u)if(G<<24>>24==10)ja=14;else{A=H;ja=11}else{A=E;ja=11}do if((ja|0)==11){ja=0;if((A|0)==5)A=(c[F+(x*24|0)+4>>2]|0)==0?2:5;if((A|0)==4){sh(ka,76,s+x|0,p,0)|0;break a}else if((A|0)==3|(A|0)==1)break;else if((A|0)==2){ja=14;break}z=s+x|0;A=sh(ka,77,z,0,0)|0;Nq(d,c[(c[v>>2]|0)+(x*24|0)+4>>2]|0,z);z=c[C>>2]|0;if(z>>>0>A>>>0)c[(c[B>>2]|0)+(A*20|0)+8>>2]=z;c[(c[D>>2]|0)+88>>2]=z+-1;break a}while(0);if((ja|0)==14){ja=0;A=c[t>>2]|0;a[((A|0)==0?d:A)+21>>0]=1;A=2}ca=c[F+(x*24|0)>>2]|0;c[I>>2]=c[f>>2];c[I+4>>2]=ca;ca=qh(N,27824,I)|0;th(ka,sh(ka,23,1299,A,s+x|0)|0,ca,-1);A=c[B>>2]|0;if(A)a[A+(((c[C>>2]|0)+-1|0)*20|0)+3>>0]=1}while(0);x=x+1|0}while((x|0)!=(y|0))}x=c[f+24>>2]|0;if(((x|0)!=0?(c[N+24>>2]&8192|0)==0:0)?(c[d+92>>2]=l+1,(c[x>>2]|0)>0):0){w=x+4|0;s=ka+24|0;y=ka+32|0;A=0;u=o<<24>>24==10?2:o&255;while(1){z=ts(ka)|0;Vu(d,c[(c[w>>2]|0)+(A*20|0)>>2]|0,z,16);if((u|0)==4){sh(ka,16,0,p,0)|0;t=4}else{v=c[(c[w>>2]|0)+(A*20|0)+4>>2]|0;if(!v)v=c[f>>2]|0;t=(u|0)==5?2:u;vs(d,275,t,v,0,3)}v=c[s>>2]|0;u=~z;if((z|0)<0?(J=c[v+112>>2]|0,(J|0)!=0):0)c[J+(u<<2)>>2]=c[y>>2];c[v+88>>2]=(c[y>>2]|0)+-1;A=A+1|0;if((A|0)>=(c[x>>2]|0))break;else u=t}}if(n<<24>>24!=0&(da|0)==0){w=ts(ka)|0;s=a[f+45>>0]|0;if(o<<24>>24==10)s=s<<24>>24==10?2:s&255;else s=o&255;if(fa?(sh(ka,79,l,w,m)|0,K=c[ka+4>>2]|0,(K|0)!=0):0)a[K+(((c[ka+32>>2]|0)+-1|0)*20|0)+3>>0]=-112;b:do if(!((s|0)!=5|o<<24>>24==5)?(r=c[f+8>>2]|0,(r|0)!=0):0){while(1){if(((a[r+50>>0]|0)+-3&255)<2)break;r=c[r+20>>2]|0;if(!r){x=0;break b}}x=sh(ka,16,0,0,0)|0}else x=0;while(0);sh(ka,70,h,w,l)|0;c:do switch(s|0){case 4:{sh(ka,16,0,p,0)|0;s=0;break}case 3:case 2:case 1:{ja=49;break}case 5:{if((c[N+24>>2]&262144|0)!=0?(L=ft(d,f,109,0,0)|0,(L|0)!=0):0)s=L;else if(!(it(d,f,0,0)|0)){if(!(c[f+8>>2]|0)){s=1;break c}s=c[d+408>>2]|0;a[((s|0)==0?d:s)+20>>0]=1;wt(d,f,h,k,0);s=1;break c}else s=0;ca=c[d+408>>2]|0;a[((ca|0)==0?d:ca)+20>>0]=1;nt(d,f,s,h,k,l,1,0,5,1);s=1;break}default:{s=2;ja=49}}while(0);if((ja|0)==49){Bt(d,s,f);s=0}v=ka+24|0;u=c[v>>2]|0;t=~w;if((w|0)<0?(M=c[u+112>>2]|0,(M|0)!=0):0)c[M+(t<<2)>>2]=c[ka+32>>2];r=ka+32|0;c[u+88>>2]=(c[r>>2]|0)+-1;if(!x){t=0;x=0}else{t=sh(ka,16,0,0,0)|0;r=c[r>>2]|0;if(r>>>0>x>>>0)c[(c[ka+4>>2]|0)+(x*20|0)+8>>2]=r;c[(c[v>>2]|0)+88>>2]=r+-1}}else{t=0;x=0;s=0}A=c[f+8>>2]|0;if(A){_=l+1|0;$=d+60|0;aa=d+56|0;ca=d+72|0;Q=n<<24>>24==0;R=ka+24|0;S=ka+32|0;T=o<<24>>24==10;U=ka+4|0;V=da+46|0;W=da+32|0;X=da+4|0;Y=m+1|0;Z=d+408|0;O=N+24|0;P=ea&65535;w=o&255;v=f+36|0;u=d+92|0;E=0;r=0;z=-1;while(1){L=g+(r<<2)|0;do if(c[L>>2]|0){if(!(E<<24>>24)){st(ka,f,_);E=1}M=r+k|0;o=ts(ka)|0;K=A+36|0;if(c[K>>2]|0){sh(ka,28,0,c[L>>2]|0,0)|0;c[u>>2]=_;ct(d,c[K>>2]|0,o,16);c[u>>2]=0}N=A+48|0;F=b[N>>1]|0;I=F&65535;H=c[$>>2]|0;G=c[aa>>2]|0;if((G|0)<(I|0)){n=c[ca>>2]|0;c[ca>>2]=n+I;n=n+1|0}else{c[$>>2]=H+I;c[aa>>2]=G-I;n=H}if(!(F<<16>>16))J=z;else{J=A+4|0;G=0;do{y=b[(c[J>>2]|0)+(G<<1)>>1]|0;I=y<<16>>16;if(y<<16>>16>=0?y<<16>>16!=(b[v>>1]|0):0){H=G+n|0;I=_+I|0;ja=81}else{I=G+n|0;if((z|0)!=(I|0)){H=I;z=(c[K>>2]|0)==0?I:-1;I=l;ja=81}}if((ja|0)==81){ja=0;sh(ka,34,I,H,0)|0;F=b[N>>1]|0}G=G+1|0;I=F&65535}while((G|0)<(I|0));J=z}sh(ka,49,n,I,c[L>>2]|0)|0;$s(d,n,e[N>>1]|0);K=(da|0)==(A|0);if(fa&K&Q){z=c[R>>2]|0;y=~o;if((o|0)<0?(ga=c[z+112>>2]|0,(ga|0)!=0):0)c[ga+(y<<2)>>2]=c[S>>2];c[z+88>>2]=(c[S>>2]|0)+-1;z=J;break}D=a[A+50>>0]|0;C=D&255;if(!(D<<24>>24)){z=e[N>>1]|0;$s(d,n,z);if((c[aa>>2]|0)<(z|0)){c[aa>>2]=z;c[$>>2]=n}z=c[R>>2]|0;y=~o;if((o|0)<0?(ha=c[z+112>>2]|0,(ha|0)!=0):0)c[ha+(y<<2)>>2]=c[S>>2];c[z+88>>2]=(c[S>>2]|0)+-1;z=J;break}if(T)L=D<<24>>24==10?2:C;else L=w;z=e[A+46>>1]|0;th(ka,sh(ka,67,M,o,n)|0,z,-14);do if(!K){I=c[$>>2]|0;H=c[aa>>2]|0;if((H|0)<(ea|0)){I=c[ca>>2]|0;c[ca>>2]=I+ea;I=I+1|0;break}else{c[$>>2]=I+ea;c[aa>>2]=H-ea;break}}else I=n;while(0);do if(fa|(L|0)==5){if(!(a[ia>>0]&32)){sh(ka,112,M,I,0)|0;if(!fa)break;sh(ka,79,I,o,m)|0;D=c[U>>2]|0;if(!D)break;a[D+(((c[S>>2]|0)+-1|0)*20|0)+3>>0]=-112;break}do if(!K){if(!(b[V>>1]|0))break;C=A+4|0;B=0;do{F=b[(c[X>>2]|0)+(B<<1)>>1]|0;H=b[N>>1]|0;d:do if(!(H<<16>>16))H=-1;else{D=c[C>>2]|0;G=H&65535;H=0;while(1){if((b[D+(H<<1)>>1]|0)==F<<16>>16)break d;H=H+1|0;if((H|0)>=(G|0)){H=-1;break}}}while(0);sh(ka,47,M,H<<16>>16,B+I|0)|0;B=B+1|0}while((B|0)<(e[V>>1]|0))}while(0);if(!fa)break;C=(a[A+51>>0]&3)==2?n:I;H=b[V>>1]|0;if(!(H<<16>>16))break;G=(H&65535)+(c[S>>2]|0)|0;F=0;D=78;do{H=_q(d,c[(c[W>>2]|0)+(F<<2)>>2]|0)|0;z=(F|0)==((e[V>>1]|0)+-1|0);G=z?o:G;D=z?79:D;th(ka,sh(ka,D,Y+(b[(c[X>>2]|0)+(F<<1)>>1]|0)|0,G,F+C|0)|0,H,-4);H=c[U>>2]|0;if(H)a[H+(((c[S>>2]|0)+-1|0)*20|0)+3>>0]=-112;F=F+1|0}while((F|0)<(e[V>>1]|0))}while(0);if((L|0)==3|(L|0)==2|(L|0)==1)ju(d,L,A);else if((L|0)==4)sh(ka,16,0,p,0)|0;else{z=c[Z>>2]|0;a[((z|0)==0?d:z)+20>>0]=1;if(!(c[O>>2]&262144))D=0;else D=ft(d,f,109,0,0)|0;nt(d,f,D,h,k,I,P,0,5,K&1);s=1}H=c[R>>2]|0;G=~o;do if((o|0)<0){D=c[H+112>>2]|0;if(!D)break;c[D+(G<<2)>>2]=c[S>>2]}while(0);c[H+88>>2]=(c[S>>2]|0)+-1;z=e[N>>1]|0;$s(d,n,z);if((c[aa>>2]|0)<(z|0)){c[aa>>2]=z;c[$>>2]=n}if((I|0)==(n|0)){z=J;break}$s(d,I,ea);if((c[aa>>2]|0)>=(ea|0)){z=J;break}c[aa>>2]=ea;c[$>>2]=I;z=J}while(0);A=c[A+20>>2]|0;if(!A)break;else r=r+1|0}}if(x){sh(ka,16,0,x+1|0,0)|0;r=c[ka+32>>2]|0;if(r>>>0>t>>>0)c[(c[ka+4>>2]|0)+(t*20|0)+8>>2]=r;c[(c[ka+24>>2]|0)+88>>2]=r+-1}c[q>>2]=s;i=la;return}function vt(e,f,g,h,k,l){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var 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,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=i;i=i+32|0;if((i|0)>=(j|0))ba();Q=Z+20|0;O=Z+16|0;M=Z+12|0;N=Z+8|0;X=Z+4|0;W=Z;S=c[e>>2]|0;L=e+438|0;R=a[L>>0]|0;V=S+24|0;a:do if(c[V>>2]&524288){P=f+68|0;m=c[P>>2]|0;b:do if(m){o=c[S+20>>2]|0;if((o|0)>0){n=c[S+16>>2]|0;r=0;while(1){q=r+1|0;if((c[n+(r<<4)+12>>2]|0)==(m|0)){q=r;break b}if((q|0)<(o|0))r=q;else break}}else q=0}else q=-1e6;while(0);K=c[(c[S+16>>2]|0)+(q<<4)>>2]|0;x=c[f+16>>2]|0;if(!x)n=f;else{z=(k|0)==0;A=R<<24>>24==0;B=S+65|0;C=g+1|0;D=e+68|0;E=(g|0)==0;F=(h|0)==0;G=e+408|0;H=f+36|0;I=S+284|0;J=(l|0)!=0;y=x;do{c[O>>2]=0;c[M>>2]=0;c:do if(!z){x=c[y+8>>2]|0;if($c(c[f>>2]|0,x)|0){w=c[y+20>>2]|0;if((w|0)>0){n=0;do{m=c[y+(n<<3)+36>>2]|0;if((c[k+(m<<2)>>2]|0)>-1){Y=17;break c}n=n+1|0;if((m|0)==(b[H>>1]|0)&J){Y=17;break c}}while((n|0)<(w|0))}}else Y=17}else{x=c[y+8>>2]|0;Y=17}while(0);do if((Y|0)==17){Y=0;if(!(a[L>>0]|0))v=oh(e,0,x,K)|0;else v=Wh(S,x,K)|0;x=(v|0)==0;if(!x?(It(e,v,y,O,M)|0)==0:0){x=c[M>>2]|0;if(!x){c[N>>2]=c[y+36>>2];x=N}n=y+20|0;if((c[n>>2]|0)>0){t=c[O>>2]|0;o=(t|0)==0;r=v+36|0;s=v+4|0;t=t+4|0;m=0;u=0;do{w=x+(u<<2)|0;if((c[w>>2]|0)==(b[H>>1]|0))c[w>>2]=-1;if(c[I>>2]|0){if(o)w=r;else w=(c[t>>2]|0)+(u<<1)|0;m=(av(e,c[v>>2]|0,c[(c[s>>2]|0)+((b[w>>1]|0)*24|0)>>2]|0,q)|0)==2&1}u=u+1|0}while((u|0)<(c[n>>2]|0));w=v}else{w=v;m=0}cs(e,q,c[v+32>>2]|0,0,c[w>>2]|0);c[D>>2]=(c[D>>2]|0)+1;if(!E)bv(e,q,v,c[O>>2]|0,y,x,g,-1,m);d:do if(!F){w=c[G>>2]|0;w=c[((w|0)==0?e:w)+528>>2]|0;do if(w){w=c[w>>2]|0;if((w|0)==(c[y+28>>2]|0)?(a[y+25>>0]|0)==7:0)break d;if((w|0)!=(c[y+32>>2]|0))break;if((a[y+26>>0]|0)==7)break d}while(0);bv(e,q,v,c[O>>2]|0,y,x,h,1,m)}while(0);ig(S,c[M>>2]|0);break}if(A)break a;if(a[B>>0]|0)break a;if(x){x=Kq(e)|0;w=y+20|0;n=c[w>>2]|0;m=(c[x+32>>2]|0)+1+n|0;if((n|0)>0){n=0;do{sh(x,76,C+(c[y+(n<<3)+36>>2]|0)|0,m,0)|0;n=n+1|0}while((n|0)<(c[w>>2]|0))}sh(x,134,d[y+24>>0]|0,-1,0)|0}}while(0);y=c[y+4>>2]|0}while((y|0)!=0);n=f;m=c[P>>2]|0}m=Zm(m+56|0,c[n>>2]|0,Q)|0;if((m|0)!=0?(p=c[m+8>>2]|0,T=S+65|0,(p|0)!=0):0){r=(k|0)!=0;s=e+408|0;t=e+20|0;u=e+68|0;v=(h|0)==0;w=(g|0)==0;x=r&1;q=R<<24>>24==0;do{c[X>>2]=0;c[W>>2]=0;if(!(r?(Zu(f,p,k,l)|0)==0:0))Y=57;do if((Y|0)==57){Y=0;n=p+24|0;if((((a[n>>0]|0)==0?(c[V>>2]&16777216|0)==0:0)?(c[s>>2]|0)==0:0)?(a[t>>0]|0)==0:0)break;if(It(e,f,p,X,W)|0){if(q)break a;if(!(a[T>>0]|0))break;else break a}m=lr(S,0,0,0)|0;if(m){H=c[p>>2]|0;c[m+24>>2]=H;o=m+16|0;c[o>>2]=c[H>>2];H=H+40|0;b[H>>1]=(b[H>>1]|0)+1<<16>>16;H=c[u>>2]|0;c[u>>2]=H+1;c[m+48>>2]=H;if(!v)cv(e,m,f,c[X>>2]|0,p,c[W>>2]|0,h,-1);if((!w?(U=a[p+x+25>>0]|0,cv(e,m,f,c[X>>2]|0,p,c[W>>2]|0,g,1),(a[n>>0]|0)==0):0)?!(U<<24>>24==7|U<<24>>24==9):0){H=c[s>>2]|0;a[((H|0)==0?e:H)+21>>0]=1}c[o>>2]=0;zo(S,m)}ig(S,c[W>>2]|0)}while(0);p=c[p+12>>2]|0}while((p|0)!=0)}}while(0);i=Z;return}function wt(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();r=s;q=c[b+8>>2]|0;l=c[d+8>>2]|0;a:do if(a[d+44>>0]&32){if(l){k=l;while(1){if((a[k+51>>0]&3)==2){p=5;break a}k=c[k+20>>2]|0;if(!k){k=0;p=5;break}}}}else{k=0;p=5}while(0);if((p|0)==5?(l|0)!=0:0){n=(h|0)==0;o=0;d=0;m=-1;while(1){if(n){if((l|0)!=(k|0))p=10}else if(!((l|0)==(k|0)?1:(c[h+(o<<2)>>2]|0)==0))p=10;if((p|0)==10){p=0;m=Lt(b,l,f,0,1,r,d,m)|0;sh(q,111,o+g|0,m,e[((a[l+51>>0]&8)==0?l+48|0:l+46|0)>>1]|0)|0;Mt(b,c[r>>2]|0);d=l}l=c[l+20>>2]|0;if(!l)break;else o=o+1|0}}i=s;return}function xt(d,e,f,g,h,i,j,k,l){d=d|0;e=e|0;f=f|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,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=Kq(d)|0;q=c[e+8>>2]|0;if(!q){n=e+44|0;p=0}else{r=(l|0)!=0;n=e+44|0;s=r?17:1;t=w+4|0;u=w+32|0;p=0;v=0;m=q;while(1){o=i+(v<<2)|0;q=c[o>>2]|0;do if(q){if(c[m+36>>2]|0){sh(w,76,q,(c[u>>2]|0)+2|0,0)|0;q=c[o>>2]|0}sh(w,110,v+g|0,q,0)|0;if((a[m+51>>0]&3)==2){q=(a[n>>0]&32)!=0;if(q|r)p=q?s:16;else{p=1;break}}else if(r)p=16;else{p=1;break}q=c[t>>2]|0;if(!q)p=1;else{a[q+(((c[u>>2]|0)+-1|0)*20|0)+3>>0]=p;p=1}}while(0);m=c[m+20>>2]|0;if(!m)break;else v=v+1|0}}if(!(a[n>>0]&32)){o=h+1|0;n=d+19|0;m=a[n>>0]|0;if(!(m<<24>>24)){i=d+72|0;q=(c[i>>2]|0)+1|0;c[i>>2]=q}else{q=m+-1<<24>>24;a[n>>0]=q;q=c[d+((q&255)<<2)+24>>2]|0}n=e+38|0;sh(w,49,o,b[n>>1]|0,q)|0;if(!(p<<24>>24))st(w,e,0);$s(d,o,b[n>>1]|0);o=d+18|0;if(!(a[o>>0]|0))m=(j|0)!=0?5:3;else m=0;if(k)m=(m&255|8)&255;if(!l)n=m;else n=(m&255|16)&255;sh(w,75,f,q,h)|0;if(!(a[o>>0]|0))th(w,-1,c[e>>2]|0,0);m=c[w+4>>2]|0;if(m)a[m+(((c[w+32>>2]|0)+-1|0)*20|0)+3>>0]=n}return}function yt(d,e,f,g,h,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=i;i=i+64|0;if((i|0)>=(j|0))ba();R=Y+52|0;Q=Y+48|0;V=Y+8|0;U=Y;T=Y+40|0;W=Y+32|0;S=Y+24|0;if(((c[(c[d>>2]|0)+24>>2]&524288|0)!=0?(P=e+68|0,l=Zm((c[P>>2]|0)+56|0,c[e>>2]|0,Y+16|0)|0,(l|0)!=0):0)?(m=c[l+8>>2]|0,(m|0)!=0):0){O=(h|0)==0;H=(f|0)!=0;I=H&1;J=W+4|0;K=T+4|0;L=e+4|0;M=S+4|0;N=H?110:109;do{if(!(!O?(Zu(e,m,h,k)|0)==0:0)){E=c[d>>2]|0;D=a[m+I+25>>0]|0;F=D&255;G=m+(I<<2)+28|0;f=c[G>>2]|0;do if(!(D<<24>>24==0|(f|0)!=0)){c[R>>2]=0;c[Q>>2]=0;if(!(It(d,e,m,R,Q)|0)){r=m+20|0;if((c[r>>2]|0)>0){x=34352;w=c[x>>2]|0;x=c[x+4>>2]|0;z=34360;y=c[z>>2]|0;z=c[z+4>>2]|0;A=m+36|0;C=D<<24>>24!=6&(D<<24>>24!=9|H);B=0;o=0;l=0;n=0;do{f=V;c[f>>2]=w;c[f+4>>2]=x;f=U;c[f>>2]=y;c[f+4>>2]=z;f=c[Q>>2]|0;if(!f)f=A;else f=f+(B<<2)|0;q=c[f>>2]|0;s=c[R>>2]|0;if(!s)u=34368;else u=c[(c[L>>2]|0)+((b[(c[s+4>>2]|0)+(B<<1)>>1]|0)*24|0)>>2]|0;c[W>>2]=u;f=c[(c[(c[m>>2]|0)+4>>2]|0)+(q*24|0)>>2]|0;c[T>>2]=f;if(!u)t=0;else{v=u;while(1)if(!(a[v>>0]|0))break;else v=v+1|0;t=v-u&1073741823}c[J>>2]=t;if(!f)p=0;else{u=f;while(1)if(!(a[u>>0]|0))break;else u=u+1|0;p=u-f&1073741823}c[K>>2]=p;v=Vq(d,27,0,0,V)|0;v=Vq(d,122,v,Vq(d,27,0,0,W)|0,0)|0;n=os(E,n,Vq(d,79,v,Vq(d,27,0,0,T)|0,0)|0)|0;if(H){u=Vq(d,27,0,0,V)|0;u=Vq(d,122,u,Vq(d,27,0,0,W)|0,0)|0;v=Vq(d,27,0,0,U)|0;l=os(E,l,Vq(d,73,u,Vq(d,122,v,Vq(d,27,0,0,W)|0,0)|0,0)|0)|0}if(C){do if(D<<24>>24==8){f=c[(c[(c[m>>2]|0)+4>>2]|0)+(q*24|0)+4>>2]|0;if(!f){f=Vq(d,101,0,0,0)|0;break}else{f=Ir(E,f,0,0)|0;break}}else if(D<<24>>24==9){f=Vq(d,27,0,0,U)|0;f=Vq(d,122,f,Vq(d,27,0,0,W)|0,0)|0}else f=Vq(d,101,0,0,0)|0;while(0);o=hr(d,o,f)|0;ir(d,o,T,0)}B=B+1|0}while((B|0)<(c[r>>2]|0));f=m}else{f=m;o=0;l=0;n=0}ig(E,c[Q>>2]|0);v=c[c[f>>2]>>2]|0;if(!v)p=0;else{f=v;while(1)if(!(a[f>>0]|0))break;else f=f+1|0;p=f-v&1073741823}if(D<<24>>24==6){c[S>>2]=v;c[M>>2]=p;f=pt(E,57,34376)|0;if(f)a[f+1>>0]=2;u=hr(d,0,f)|0;u=gr(d,u,lr(E,0,S,0)|0,n,0,0,0,0,0,0)|0;t=0}else{u=0;t=n}q=E+250|0;r=a[q>>0]|0;a[q>>0]=0;f=p+77|0;s=ih(E,f,0)|0;if(s){bw(s|0,0,f|0)|0;n=s+36|0;c[s+28>>2]=n;D=s+76|0;c[s+48>>2]=D;c[s+52>>2]=p;gw(D|0,v|0,p|0)|0;c[s+56>>2]=Ir(E,t,1,0)|0;c[s+60>>2]=Lr(E,o,1)|0;c[s+44>>2]=cr(E,u,1)|0;if(!l){f=s;l=0}else{l=Vq(d,19,l,0,0)|0;c[s+12>>2]=Ir(E,l,1,0)|0;f=s}}else{f=0;n=0}a[q>>0]=r;Ck(E,t);Ck(E,l);Jk(E,o);Ik(E,u,1);if((a[E+65>>0]|0)==1){Gk(E,f);f=0;break}if((F|0)==6)a[n>>0]=119;else if((F|0)==9?!H:0)a[n>>0]=109;else X=49;if((X|0)==49){X=0;a[n>>0]=110}c[n+4>>2]=f;F=c[P>>2]|0;c[s+20>>2]=F;c[s+24>>2]=F;c[G>>2]=f;a[s+8>>0]=N}else f=0}while(0);if(f)$u(d,f,e,g,2,0)}m=c[m+12>>2]|0}while((m|0)!=0)}i=Y;return}function zt(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=b[d+46>>1]|0;a:do if(f<<16>>16==(b[e+46>>1]|0)?(a[d+50>>0]|0)==(a[e+50>>0]|0):0){if(f<<16>>16){g=c[e+4>>2]|0;h=c[d+4>>2]|0;i=e+28|0;j=d+28|0;k=e+32|0;l=d+32|0;p=0;do{if((b[g+(p<<1)>>1]|0)!=(b[h+(p<<1)>>1]|0)){f=0;break a}if((a[(c[i>>2]|0)+p>>0]|0)!=(a[(c[j>>2]|0)+p>>0]|0)){f=0;break a}m=c[(c[k>>2]|0)+(p<<2)>>2]|0;n=c[(c[l>>2]|0)+(p<<2)>>2]|0;o=(n|0)==0;if(!m){if(!o){f=0;break a}}else{if(o){f=0;break a}if($c(m,n)|0){f=0;break a}}p=p+1|0}while((p|0)<(f&65535|0))}f=(yu(c[e+36>>2]|0,c[d+36>>2]|0,-1)|0)==0&1}else f=0;while(0);return f|0}function At(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!(a[e+44>>0]&8))f=0;else{h=c[b+408>>2]|0;h=(h|0)==0?b:h;g=h+404|0;f=c[g>>2]|0;a:do if(!f)i=5;else while(1){if((c[f+4>>2]|0)==(e|0))break a;f=c[f>>2]|0;if(!f){i=5;break}}while(0);if((i|0)==5){f=ih(c[b>>2]|0,16,0)|0;if(!f){f=0;break}c[f>>2]=c[g>>2];c[g>>2]=f;c[f+4>>2]=e;c[f+8>>2]=d;b=h+72|0;g=c[b>>2]|0;c[f+12>>2]=g+2;c[b>>2]=g+3}f=c[f+12>>2]|0}while(0);return f|0}function Bt(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;g=b[e+36>>1]|0;h=c[a>>2]|0;f=c[e>>2]|0;if(g<<16>>16>-1){g=c[(c[e+4>>2]|0)+((g<<16>>16)*24|0)>>2]|0;c[k>>2]=f;c[k+4>>2]=g;g=1555;f=qh(h,27824,k)|0}else{c[k>>2]=f;g=2579;f=qh(h,34408,k)|0}vs(a,g,d,f,-1,2);i=l;return}function Ct(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=b+316|0;h=c[g>>2]|0;d=hr(b,h,Ir(c[b>>2]|0,d,0,0)|0)|0;if(d){b=(c[d>>2]|0)+-1|0;h=c[d+4>>2]|0;c[h+(b*20|0)+16>>2]=e;b=h+(b*20|0)+13|0;a[b>>0]=a[b>>0]&-5|f<<2&4}c[g>>2]=d;return}function Dt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[e>>2]|0;if(!(g+-1&g)){i=_((g|0)==0?1:g<<1,d)|0;a=no(a,b,i,((i|0)<0)<<31>>31)|0;if(!a){c[f>>2]=-1;a=b}else h=4}else{a=b;h=4}if((h|0)==4){bw(a+(_(g,d)|0)|0,0,d|0)|0;c[f>>2]=g;c[e>>2]=(c[e>>2]|0)+1}return a|0}function Et(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;c[h>>2]=0;b=c[a+12>>2]|0;if((b|0)!=0?(d=c[b+24>>2]|0,(d|0)>0):0){c[h>>2]=d;b=d}else b=0;d=c[a+16>>2]|0;if((d|0)!=0?(e=c[d+24>>2]|0,(e|0)>(b|0)):0)c[h>>2]=e;f=a+4|0;b=a+20|0;if(!(c[f>>2]&2048)){d=c[b>>2]|0;if(d){pu(d,h);b=c[b>>2]|0;if((b|0)!=0?(g=c[b>>2]|0,(g|0)>0):0){e=c[b+4>>2]|0;d=0;b=0;do{b=c[(c[e+(d*20|0)>>2]|0)+4>>2]|b;d=d+1|0}while((d|0)!=(g|0));b=b&2097408}else b=0;c[f>>2]=c[f>>2]|b}}else As(c[b>>2]|0,h);c[a+24>>2]=(c[h>>2]|0)+1;i=k;return}function Ft(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=Kq(b)|0;i=b+72|0;h=(c[i>>2]|0)+1|0;c[i>>2]=h;b=ih(c[b>>2]|0,8,0)|0;if(b){i=b;c[i>>2]=e;c[i+4>>2]=f}th(g,sh(g,26,0,h,0)|0,b,-13);eq(g,1);if(!(a[(c[g>>2]|0)+65>>0]|0))Tg(c[g+16>>2]|0,d,-1,1,0)|0;sh(g,35,h,1,0)|0;return}function Gt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;d=c[b>>2]|0;e=d+16|0;f=c[(c[e>>2]|0)+20>>2]|0;do if(!f)d=0;else{if((a[d+63>>0]|0)!=0?(a[f+8>>0]|0)==0:0){Il(f);c[(c[e>>2]|0)+20>>2]=0;Ag(d);d=0;break}ph(b,32128,g);d=1}while(0);i=h;return d|0}function Ht(b){b=b|0;var e=0,f=0,g=0;if((a[b+63>>0]|0)!=0?(e=c[b+20>>2]|0,(e|0)>0):0){g=b+24|0;f=c[b+16>>2]|0;while(1){e=e+-1|0;b=c[f+4>>2]|0;if(b)po(b,c[g>>2]&28|d[f+8>>0]);if((e|0)<=0)break;else f=f+16|0}}return}function It(d,f,g,h,k){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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=i;i=i+16|0;if((i|0)>=(j|0))ba();w=z;x=c[g+20>>2]|0;m=c[g+40>>2]|0;if((x|0)==1){s=b[f+36>>1]|0;l=s<<16>>16;if(s<<16>>16>-1)if((m|0)!=0?($c(c[(c[f+4>>2]|0)+(l*24|0)>>2]|0,m)|0)!=0:0){v=0;y=8}else k=0;else{v=0;y=8}}else if(k){l=ih(c[d>>2]|0,x<<2,0)|0;if(!l)k=1;else{c[k>>2]=l;v=l;y=8}}else{v=0;y=8}a:do if((y|0)==8){k=c[f+8>>2]|0;b:do if(k){s=(m|0)==0;u=(x|0)>0;r=f+4|0;t=(v|0)==0;c:while(1){do if((e[k+46>>1]|0)==(x|0)?(a[k+50>>0]|0)!=0:0){if(s)if((a[k+51>>0]&3)==2){y=16;break c}else break;d:do if(u){n=c[k+4>>2]|0;o=c[r>>2]|0;p=c[k+32>>2]|0;q=0;while(1){f=b[n+(q<<1)>>1]|0;m=c[o+(f*24|0)+16>>2]|0;if($c(c[p+(q<<2)>>2]|0,(m|0)!=0?m:11152)|0){m=q;break d}m=c[o+(f*24|0)>>2]|0;l=0;while(1){f=l+1|0;if(!($c(c[g+(l<<3)+40>>2]|0,m)|0)){f=l;y=23;break}if((f|0)<(x|0))l=f;else break}if((y|0)==23){y=0;if(!t)c[v+(q<<2)>>2]=c[g+(f<<3)+36>>2]}m=q+1|0;if((f|0)==(x|0)){m=q;break d}if((m|0)<(x|0))q=m;else break}}else m=0;while(0);if((m|0)==(x|0))break c}while(0);k=c[k+20>>2]|0;if(!k)break b}if((y|0)==16)if(!(t|u^1)){l=0;do{c[v+(l<<2)>>2]=c[g+(l<<3)+36>>2];l=l+1|0}while((l|0)!=(x|0))}c[h>>2]=k;k=0;break a}while(0);if(!(a[d+438>>0]|0)){s=c[g+8>>2]|0;c[w>>2]=c[c[g>>2]>>2];c[w+4>>2]=s;ph(d,32008,w)}ig(c[d>>2]|0,v);k=1}while(0);i=z;return k|0}function Jt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;if(!(c[d+12>>2]|0)){c[h>>2]=0;l=c[b>>2]|0;g=d+4|0;d=c[g>>2]|0;Vr(l,c[d+(e*24|0)+4>>2]|0,a[l+62>>0]|0,a[d+(e*24|0)+21>>0]|0,h)|0;d=c[h>>2]|0;if(d)th(b,-1,d,-8);if((a[(c[g>>2]|0)+(e*24|0)+21>>0]|0)==69)sh(b,39,f,0,0)|0}i=k;return}function Kt(c,d,f){c=c|0;d=d|0;f=f|0;var g=0;if(!d)g=0;else{g=d;while(1)if(!(a[g>>0]|0))break;else g=g+1|0;g=g-d&1073741823}g=Oh(c,d,g,2,1,0)|0;if(g){g=g+2|0;b[g>>1]=e[g>>1]|f&255}return}function Lt(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=c[d+8>>2]|0;r=c[e+12>>2]|0;do if(i){l=e+36|0;if(!(c[l>>2]|0)){c[i>>2]=0;break}else{c[i>>2]=ts(q)|0;c[d+96>>2]=f;p=d+100|0;c[p>>2]=(c[p>>2]|0)+1;ct(d,c[l>>2]|0,c[i>>2]|0,16);break}}while(0);if((h|0)!=0?(a[e+51>>0]&8)!=0:0)l=e+46|0;else l=e+48|0;l=b[l>>1]|0;n=l&65535;o=d+60|0;h=c[o>>2]|0;p=d+56|0;i=c[p>>2]|0;if((i|0)<(n|0)){h=d+72|0;m=c[h>>2]|0;c[h>>2]=m+n;m=m+1|0}else{c[o>>2]=h+n;c[p>>2]=i-n;m=h}do if(!j)h=0;else{if((m|0)==(k|0)?(c[j+36>>2]|0)==0:0){h=j;break}h=0}while(0);if(l<<16>>16){j=(h|0)==0;k=e+4|0;i=h+4|0;l=0;do{if(!j){h=b[(c[k>>2]|0)+(l<<1)>>1]|0;if((b[(c[i>>2]|0)+(l<<1)>>1]|0)!=h<<16>>16)s=21}else{h=b[(c[k>>2]|0)+(l<<1)>>1]|0;s=21}if((s|0)==21){s=0;jt(q,r,f,h<<16>>16,l+m|0);Lq(q,39)|0}l=l+1|0}while((l|0)<(n|0))}if(g)sh(q,49,m,n,g)|0;$s(d,m,n);if((c[p>>2]|0)<(n|0)){c[p>>2]=n;c[o>>2]=m}return m|0}function Mt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(b){d=c[a+8>>2]|0;e=c[d+24>>2]|0;f=~b;if((b|0)<0?(g=c[e+112>>2]|0,(g|0)!=0):0)c[g+(f<<2)>>2]=c[d+32>>2];c[e+88>>2]=(c[d+32>>2]|0)+-1;Zt(a)}return}function Nt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;e=c[d+16>>2]|0;a:do if((e|0)!=0?(f=c[d+64>>2]|0,(f|0)!=0):0){e=c[e+8>>2]|0;b:do if(e){while(1){if(!($c(c[e>>2]|0,f)|0))break;e=c[e+20>>2]|0;if(!e)break b}c[d+68>>2]=e;e=0;break a}while(0);c[g>>2]=f;c[g+4>>2]=0;ph(b,28104,g);a[b+17>>0]=1;e=1}else e=0;while(0);i=h;return e|0}function Ot(a,b){a=a|0;b=b|0;var d=0,e=0;if(a){d=Pt(a,b)|0;if(b&1){e=Ot(c[a+12>>2]|0,b)|0;return e+d+(Ot(c[a+16>>2]|0,b)|0)|0}}else d=0;return d|0} -function Pt(b,d){b=b|0;d=d|0;var e=0;if(d&1)if(!(c[b+12>>2]|0))d=(c[b+20>>2]|0)==0?12:28;else d=28;else d=48;if((c[b+4>>2]&1024|0)==0?(e=c[b+8>>2]|0,(e|0)!=0):0){b=e;while(1)if(!(a[b>>0]|0))break;else b=b+1|0;d=(d|1)+(b-e&1073741823)|0}return d+7&-8|0}function Qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=e+20|0;d=c[h>>2]|0;if((d|0)>0){g=0;f=c[e+16>>2]|0;while(1){e=c[(c[f+12>>2]|0)+16>>2]|0;if(e){d=e;do{Rt(a,c[d+8>>2]|0,b);d=c[d>>2]|0}while((d|0)!=0);d=c[h>>2]|0}g=g+1|0;if((g|0)>=(d|0))break;else f=f+16|0}}return}function Rt(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=c[d+8>>2]|0;if(f){m=(e|0)==0;k=d+68|0;l=a+408|0;do{a:do if(!m){i=f+32|0;d=b[f+48>>1]|0;if(d<<16>>16){h=c[f+4>>2]|0;d=d&65535;g=0;do{if((b[h+(g<<1)>>1]|0)>-1?($c(c[(c[i>>2]|0)+(g<<2)>>2]|0,e)|0)==0:0){n=9;break a}g=g+1|0}while((g|0)<(d|0))}}else n=9;while(0);if((n|0)==9){n=0;d=c[a>>2]|0;g=c[k>>2]|0;b:do if(g){j=c[d+20>>2]|0;if((j|0)>0){h=c[d+16>>2]|0;i=0;while(1){d=i+1|0;if((c[h+(i<<4)+12>>2]|0)==(g|0)){d=i;break b}if((d|0)<(j|0))i=d;else break}}else d=0}else d=-1e6;while(0);j=c[l>>2]|0;wr(a,d);j=((j|0)==0?a:j)+328|0;c[j>>2]=c[j>>2]|1<>2]|0}while((f|0)!=0)}return}function St(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=c[(c[(c[a>>2]|0)+16>>2]|0)+(b<<4)+12>>2]|0;g=c[a+408>>2]|0;wr(a,b);g=((g|0)==0?a:g)+328|0;c[g>>2]=c[g>>2]|1<>2]|0;c[g>>2]=e+3;dv(a,b,e,0,0);f=(c[a+72>>2]|0)+1|0;g=c[g>>2]|0;d=c[d+16>>2]|0;if(d)do{ev(a,c[d+8>>2]|0,0,e,f,g);d=c[d>>2]|0}while((d|0)!=0);fv(a,b);return}function Tt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[a>>2]|0;h=c[b+68>>2]|0;a:do if(h){i=c[e+20>>2]|0;if((i|0)>0){f=c[e+16>>2]|0;e=0;while(1){g=e+1|0;if((c[f+(e<<4)+12>>2]|0)==(h|0)){g=e;break a}if((g|0)<(i|0))e=g;else break}}else g=0}else g=-1e6;while(0);e=c[a+408>>2]|0;wr(a,g);e=((e|0)==0?a:e)+328|0;c[e>>2]=c[e>>2]|1<>2]|0;c[e>>2]=f+3;if(!d)dv(a,g,f,c[b>>2]|0,28544);else dv(a,g,f,c[d>>2]|0,28536);ev(a,b,d,f,(c[a+72>>2]|0)+1|0,c[e>>2]|0);fv(a,g);return}function Ut(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=((d|0)/2|0)+1|0;f=ih(b,f,((f|0)<0)<<31>>31)|0;b=d+-1|0;if(f){if((b|0)>0){e=0;do{g=a[c+e>>0]|0;h=a[c+(e|1)>>0]|0;a[f+((e|0)/2|0)>>0]=(0-(h>>>6&1)&9)+h&15|(0-(g>>>6&1)&9)+g<<4;e=e+2|0}while((e|0)<(b|0));b=(d&-2|0)/2|0}else b=0;a[f+b>>0]=0}return f|0}function Vt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();h=m+8|0;l=m;k=c[b+8>>2]|0;g=d+8|0;do if(!(c[d+4>>2]&1024)){g=c[g>>2]|0;d=fi(g,l)|0;if((d|0)!=0?!((d|0)==2&(e|0)!=0):0)if(!(Bc(g,29144,2)|0)){c[h>>2]=g;ph(b,29152,h);break}else{Wt(k,g,e,f);break}if(e){if((d|0)==2){d=0;g=-2147483648}else{d=l;d=$v(0,0,c[d>>2]|0,c[d+4>>2]|0)|0;g=C}e=l;c[e>>2]=d;c[e+4>>2]=g}d=ih(c[k>>2]|0,8,0)|0;if(d){e=l;h=c[e>>2]|0;e=c[e+4>>2]|0;g=d;b=g;a[b>>0]=h;a[b+1>>0]=h>>8;a[b+2>>0]=h>>16;a[b+3>>0]=h>>24;g=g+4|0;a[g>>0]=e;a[g+1>>0]=e>>8;a[g+2>>0]=e>>16;a[g+3>>0]=e>>24}th(k,sh(k,26,0,f,0)|0,d,-13)}else{d=c[g>>2]|0;sh(k,25,(e|0)==0?d:0-d|0,f,0)|0}while(0);i=m;return}function Wt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,k=0,l=0,m=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;if(d){g=d;while(1)if(!(a[g>>0]|0))break;else g=g+1|0;Pl(d,k,g-d&1073741823,1)|0;if(e)h[k>>3]=-+h[k>>3];g=ih(c[b>>2]|0,8,0)|0;if(g){d=k;m=c[d>>2]|0;d=c[d+4>>2]|0;e=g;k=e;a[k>>0]=m;a[k+1>>0]=m>>8;a[k+2>>0]=m>>16;a[k+3>>0]=m>>24;e=e+4|0;a[e>>0]=d;a[e+1>>0]=d>>8;a[e+2>>0]=d>>16;a[e+3>>0]=d>>24}th(b,sh(b,133,0,f,0)|0,g,-12)}i=l;return}function Xt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();g=m;a:do if(!d)k=0;else while(1){f=c[d+4>>2]|0;if(!(f&4096)){k=d;break a}if(!(f&262144))d=d+12|0;else d=c[(c[d+20>>2]|0)+4>>2]|0;d=c[d>>2]|0;if(!d){k=0;break}}while(0);b:do if(((a[b+23>>0]|0)!=0?(a[k>>0]|0)!=-97:0)?(c[g+0>>2]=0,c[g+4>>2]=0,c[g+8>>2]=0,c[g+12>>2]=0,c[g+16>>2]=0,c[g+20>>2]=0,f=g+20|0,a[f>>0]=2,c[g>>2]=78,c[g+4>>2]=79,c[g+24>>2]=0,ns(g,k)|0,(a[f>>0]|0)!=0):0){f=c[b+316>>2]|0;c[e>>2]=0;c:do if((f|0)!=0?(h=c[f>>2]|0,(h|0)>0):0){d=h;f=c[f+4>>2]|0;while(1){if((a[f+13>>0]&4)!=0?(yu(c[f>>2]|0,k,-1)|0)==0:0)break;d=d+-1|0;if((d|0)<=0)break c;else f=f+20|0}f=c[f+16>>2]|0;break b}while(0);d=b+72|0;f=(c[d>>2]|0)+1|0;c[d>>2]=f;Ct(b,k,f,1)}else l=18;while(0);do if((l|0)==18){d=b+19|0;f=a[d>>0]|0;if(!(f<<24>>24)){d=b+72|0;f=(c[d>>2]|0)+1|0;c[d>>2]=f}else{f=f+-1<<24>>24;a[d>>0]=f;f=c[b+((f&255)<<2)+24>>2]|0}d=es(b,k,f)|0;if((d|0)==(f|0)){c[e>>2]=f;break}else{Wr(b,f);c[e>>2]=0;f=d;break}}while(0);i=m;return f|0}function Yt(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;l=Ku(b,d,e)|0;k=xu(d,gv(e)|0)|0;e=b+8|0;d=c[e>>2]|0;th(d,sh(d,f,h,i,g)|0,l,-4);e=c[e>>2]|0;d=c[e+4>>2]|0;if(d)a[d+(((c[e+32>>2]|0)+-1|0)*20|0)+3>>0]=k&255|j;return}function Zt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=b+100|0;c[d>>2]=(c[d>>2]|0)+-1;g=b+19|0;j=0;k=b+116|0;while(1){h=k+12|0;i=c[h>>2]|0;if((i|0)!=0?(c[k+8>>2]|0)>(c[d>>2]|0):0){e=k+6|0;if(a[e>>0]|0){f=a[g>>0]|0;if((f&255)<8){a[g>>0]=f+1<<24>>24;c[b+((f&255)<<2)+24>>2]=i}a[e>>0]=0}c[h>>2]=0}j=j+1|0;if((j|0)==10)break;else k=k+20|0}return}function _t(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[d>>2]|0;a:do if(e){b:while(1){g=c[e+4>>2]|0;if(g&512){e=0;k=21;break a}switch(a[e>>0]|0){case -97:{if((a[e+38>>0]|0)==95){k=7;break b}else k=8;break}case 38:case -98:{e=c[e+12>>2]|0;break}case 95:{k=7;break b}case 62:case -102:case -100:{k=8;break}default:k=11}if((k|0)==8){f=c[e+44>>2]|0;if(!f)k=11;else{k=9;break}}c:do if((k|0)==11){k=0;if(!(g&256)){e=0;k=21;break a}f=c[e+12>>2]|0;if((f|0)!=0?(c[f+4>>2]&256|0)!=0:0){e=f;continue b}h=c[e+16>>2]|0;f=c[e+20>>2]|0;if((f|0)!=0&(g&2048|0)==0?(i=c[f>>2]|0,(i|0)>0):0){f=c[f+4>>2]|0;g=0;while(1){e=c[f+(g*20|0)>>2]|0;g=g+1|0;if(c[e+4>>2]&256)break c;if((g|0)>=(i|0)){e=h;break}}}else e=h}while(0);if(!e){e=0;k=21;break a}}if((k|0)==7)e=ss(d,a[j+62>>0]|0,0,c[e+8>>2]|0)|0;else if((k|0)==9){e=b[e+32>>1]|0;if(e<<16>>16<=-1){e=0;k=21;break}e=Un(j,a[j+62>>0]|0,c[(c[f+4>>2]|0)+((e<<16>>16)*24|0)+16>>2]|0,0)|0}if(e)if(!(ss(d,a[(c[d>>2]|0)+62>>0]|0,e,c[e>>2]|0)|0))e=0;else k=21;else{e=0;k=21}}else{e=0;k=21}while(0);return e|0}function $t(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();q=r+4|0;p=r;c[q>>2]=0;c[p>>2]=0;if((((h|0)!=0?(a[h>>0]|0)==-102:0)?(m=c[h+44>>2]|0,(m|0)!=0):0)?(a[m+44>>0]&16)!=0:0){h=m+60|0;while(1){h=c[h>>2]|0;if((c[h>>2]|0)==(d|0))break;else h=h+24|0}l=c[h+8>>2]|0;k=(c[l>>2]|0)+72|0;if((c[k>>2]|0)!=0?(o=f+24|0,n=gh(d,c[o>>2]|0)|0,(n|0)!=0):0){m=a[n>>0]|0;if(m<<24>>24){h=n;do{a[h>>0]=a[9328+(m&255)>>0]|0;h=h+1|0;m=a[h>>0]|0}while(m<<24>>24!=0)}g=pc[c[k>>2]&31](l,g,n,q,p)|0;ig(d,n);if(g){h=c[o>>2]|0;if(!h){h=37;l=0}else{l=h;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;h=(l-h&1073741823)+37|0;l=0}k=ih(d,h,l)|0;if(k){bw(k|0,0,h|0)|0;m=k+0|0;l=f+0|0;h=m+36|0;do{c[m>>2]=c[l>>2];m=m+4|0;l=l+4|0}while((m|0)<(h|0));m=k+36|0;c[k+24>>2]=m;h=c[o>>2]|0;if(!h)l=1;else{l=h;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;l=(l-h&1073741823)+1|0}gw(m|0,h|0,l|0)|0;c[k+12>>2]=c[q>>2];c[k+4>>2]=c[p>>2];p=k+2|0;b[p>>1]=e[p>>1]|16}else k=f}else k=f}else k=f}else k=f;i=r;return k|0}function au(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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=i;i=i+80|0;if((i|0)>=(j|0))ba();x=z;v=z+72|0;o=z+52|0;w=z+48|0;n=z+28|0;y=Kq(b)|0;a:do if(!y)g=0;else{g=b+100|0;c[g>>2]=(c[g>>2]|0)+1;g=d+4|0;if(!(c[g>>2]&32)){q=Kq(b)|0;m=b+80|0;h=c[m>>2]|0;c[m>>2]=h+1;h=sh(q,44,h,0,0)|0}else h=-1;if((a[b+450>>0]|0)==2){l=c[b>>2]|0;m=(a[d>>0]|0)==75?29104:29112;q=c[b+468>>2]|0;c[x>>2]=(h|0)>-1?10360:29088;c[x+4>>2]=m;c[x+8>>2]=q;l=qh(l,29056,x)|0;th(y,sh(y,157,c[b+464>>2]|0,0,0)|0,l,-1);l=d}else l=d;m=a[l>>0]|0;b:do if(m<<24>>24==75){n=d+12|0;k=gv(c[n>>2]|0)|0;a[v>>0]=k;s=b+68|0;t=c[s>>2]|0;c[s>>2]=t+1;s=d+28|0;c[s>>2]=t;r=(f|0)!=0;t=sh(y,57,t,r&1^1,0)|0;if(r)u=0;else u=Ns(c[b>>2]|0,1,1)|0;m=d+20|0;do if(!(c[g>>2]&2048)){m=c[m>>2]|0;if(m){if(!(k<<24>>24))a[v>>0]=65;if(u)c[u+20>>2]=_t(b,c[n>>2]|0)|0;f=b+19|0;k=a[f>>0]|0;if(k<<24>>24){q=k+-1<<24>>24;a[f>>0]=q;l=c[b+((q&255)<<2)+24>>2]|0;if(!(q<<24>>24))p=24;else{q=k+-2<<24>>24;a[f>>0]=q;q=c[b+((q&255)<<2)+24>>2]|0}}else{p=b+72|0;l=(c[p>>2]|0)+1|0;c[p>>2]=l;p=24}if((p|0)==24){p=b+72|0;q=(c[p>>2]|0)+1|0;c[p>>2]=q}if(r)sh(y,28,0,q,0)|0;n=c[m>>2]|0;if((n|0)>0){k=x+20|0;g=x+4|0;p=x+24|0;o=y+32|0;f=c[m+4>>2]|0;while(1){m=c[f>>2]|0;do if((h|0)>-1){c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[x+20>>2]=0;a[k>>0]=1;c[x>>2]=78;c[g>>2]=79;c[p>>2]=0;ns(x,m)|0;if(a[k>>0]|0)break;vh(y,h);h=-1}while(0);do if(r)if(!(Is(m,w)|0)){m=es(b,m,l)|0;sh(y,38,m,(c[o>>2]|0)+2|0,0)|0;sh(y,75,c[s>>2]|0,q,m)|0;break}else{sh(y,84,c[s>>2]|0,q,c[w>>2]|0)|0;break}else{m=es(b,m,l)|0;th(y,sh(y,49,m,1,q)|0,v,1);$s(b,m,1);sh(y,110,c[s>>2]|0,q,0)|0}while(0);n=n+-1|0;if((n|0)<=0)break;else f=f+20|0}}Wr(b,l);Wr(b,q)}if(!u){k=h;g=0;break b}}else{l=c[m>>2]|0;q=c[s>>2]|0;a[o>>0]=11;c[o+4>>2]=q;c[o+8>>2]=0;c[o+12>>2]=0;a[o+1>>0]=k;c[l+8>>2]=0;if(!(er(b,l,o)|0)){c[u+20>>2]=Ku(b,c[n>>2]|0,c[c[(c[l>>2]|0)+4>>2]>>2]|0)|0;break}if(!u){g=0;break a}q=(c[u>>2]|0)+-1|0;c[u>>2]=q;if(q){g=0;break a}Sc(u);g=0;break a}while(0);th(y,t,u,-6);k=h;g=0}else{k=c[d+20>>2]|0;l=b+72|0;g=(c[l>>2]|0)+1|0;c[l>>2]=g;a[n>>0]=0;l=n+4|0;c[l>>2]=g;a[n+1>>0]=0;f=n+8|0;c[f>>2]=0;c[n+12>>2]=0;if(m<<24>>24==119){a[n>>0]=10;c[f>>2]=g;sh(y,28,0,g,0)|0}else{a[n>>0]=3;sh(y,25,0,g,0)|0}q=k+60|0;Ck(c[b>>2]|0,c[q>>2]|0);c[q>>2]=Vq(b,132,0,0,20624)|0;c[k+8>>2]=0;if(er(b,k,n)|0){g=0;break a}k=h;g=c[l>>2]|0}while(0);if(e)hv(y,c[d+28>>2]|0,e);if((k|0)>-1){h=c[y+32>>2]|0;if(h>>>0>k>>>0)c[(c[y+4>>2]|0)+(k*20|0)+8>>2]=h;c[(c[y+24>>2]|0)+88>>2]=h+-1}Zt(b)}while(0);i=z;return g|0}function bu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;y=i;i=i+16|0;if((i|0)>=(j|0))ba();m=y+4|0;v=y+8|0;t=y;c[m>>2]=0;x=c[b+8>>2]|0;h=(f|0)==(g|0);l=iv(b,e,3,h?0:m)|0;a[v>>0]=jv(e)|0;n=b+100|0;c[n>>2]=(c[n>>2]|0)+1;n=b+19|0;k=a[n>>0]|0;if(!(k<<24>>24)){r=b+72|0;w=(c[r>>2]|0)+1|0;c[r>>2]=w}else{w=k+-1<<24>>24;a[n>>0]=w;w=c[b+((w&255)<<2)+24>>2]|0}k=e+12|0;Nq(b,c[k>>2]|0,w);do if((l|0)==5){r=c[e+20>>2]|0;p=_t(b,c[k>>2]|0)|0;s=ts(x)|0;q=(g|0)!=(f|0);if(q){k=a[n>>0]|0;if(!(k<<24>>24)){o=b+72|0;k=(c[o>>2]|0)+1|0;c[o>>2]=k}else{k=k+-1<<24>>24;a[n>>0]=k;k=c[b+((k&255)<<2)+24>>2]|0}sh(x,85,w,w,k)|0;o=k}else o=0;if((c[r>>2]|0)>0){n=r+4|0;m=(o|0)==0;l=x+4|0;k=x+32|0;h=0;do{e=Xt(b,c[(c[n>>2]|0)+(h*20|0)>>2]|0,t)|0;if(!m?(Qu(c[(c[n>>2]|0)+(h*20|0)>>2]|0)|0)!=0:0)sh(x,85,o,e,o)|0;if((h|0)<((c[r>>2]|0)+-1|0)|q){th(x,sh(x,79,w,s,e)|0,p,-4);e=c[l>>2]|0;if(e)a[e+(((c[k>>2]|0)+-1|0)*20|0)+3>>0]=a[v>>0]|0}else{th(x,sh(x,78,w,f,e)|0,p,-4);e=c[l>>2]|0;if(e)a[e+(((c[k>>2]|0)+-1|0)*20|0)+3>>0]=d[v>>0]|0|16}Wr(b,c[t>>2]|0);h=h+1|0}while((h|0)<(c[r>>2]|0))}if(o){sh(x,76,o,g,0)|0;sh(x,16,0,f,0)|0}k=c[x+24>>2]|0;h=~s;if((s|0)<0?(u=c[k+112>>2]|0,(u|0)!=0):0)c[u+(h<<2)>>2]=c[x+32>>2];c[k+88>>2]=(c[x+32>>2]|0)+-1;Wr(b,o)}else{do if(Qu(c[k>>2]|0)|0){if(h){sh(x,76,w,f,0)|0;break}k=sh(x,77,w,0,0)|0;sh(x,108,c[e+28>>2]|0,f,0)|0;sh(x,16,0,g,0)|0;h=c[x+32>>2]|0;if(h>>>0>k>>>0)c[(c[x+4>>2]|0)+(k*20|0)+8>>2]=h;c[(c[x+24>>2]|0)+88>>2]=h+-1}while(0);if((l|0)==1){sh(x,38,w,f,0)|0;sh(x,70,c[e+28>>2]|0,f,w)|0;break}th(x,sh(x,48,w,1,0)|0,v,1);h=c[e+28>>2]|0;if(!(c[m>>2]|0)){th(x,sh(x,68,h,f,w)|0,1,-14);break}k=sh(x,69,h,0,w)|0;th(x,k,1,-14);sh(x,76,c[m>>2]|0,g,0)|0;sh(x,16,0,f,0)|0;h=c[x+32>>2]|0;if(h>>>0>k>>>0)c[(c[x+4>>2]|0)+(k*20|0)+8>>2]=h;c[(c[x+24>>2]|0)+88>>2]=h+-1}while(0);Wr(b,w);Zt(b);i=y;return}function cu(f,g){f=f|0;g=g|0;var k=0,l=0,m=0,n=0,o=0,p=0.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;C=i;i=i+48|0;if((i|0)>=(j|0))ba();B=C;z=C+28|0;k=c[f+24>>2]|0;A=c[k>>2]|0;x=g+4|0;n=c[x>>2]|0;a:do if(!(n&4)){c[x>>2]=n|4;switch(d[g>>0]|0){case 27:{k=kv(A,0,0,c[g+8>>2]|0,k,g)|0;break a}case 122:{l=c[g+16>>2]|0;if((a[l>>0]|0)==27){n=l;l=g;m=0}else{n=c[l+16>>2]|0;m=c[(c[g+12>>2]|0)+8>>2]|0}k=kv(A,m,c[(c[l+12>>2]|0)+8>>2]|0,c[n+8>>2]|0,k,g)|0;break a}case 135:{l=k+28|0;k=b[l>>1]|0;if(k&4){c[B>>2]=27456;ph(A,27472,B);k=b[l>>1]|0}if(k&16){c[B>>2]=27456;ph(A,27512,B)}break}case 153:{w=g+20|0;t=c[w>>2]|0;if(!t)m=0;else m=c[t>>2]|0;n=a[(c[A>>2]|0)+62>>0]|0;y=k+28|0;if(b[y>>1]&16){c[B>>2]=27200;ph(A,27512,B)}u=c[g+8>>2]|0;if(!u)r=0;else{o=u;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;r=o-u&1073741823}l=Oh(c[A>>2]|0,u,r,m,n,0)|0;do if(!l){if(Oh(c[A>>2]|0,u,r,-2,n,0)|0){c[B>>2]=r;c[B+4>>2]=u;ph(A,27392,B);u=k+24|0;c[u>>2]=(c[u>>2]|0)+1;break}if(!(a[(c[A>>2]|0)+145>>0]|0)){c[B>>2]=r;c[B+4>>2]=u;ph(A,27368,B);u=k+24|0;c[u>>2]=(c[u>>2]|0)+1}}else{q=(c[l+12>>2]|0)==0;v=l+2|0;do if(b[v>>1]&1024){c[x>>2]=c[x>>2]|266240;if((m|0)!=2){c[g+28>>2]=(a[c[l+24>>2]>>0]|0)==117?8388608:125829120;break}o=c[(c[t+4>>2]|0)+20>>2]|0;h[B>>3]=-1.0;if((a[o>>0]|0)==-123){n=c[o+8>>2]|0;if(!n)o=0;else{o=n;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;o=o-n&1073741823}Pl(n,B,o,1)|0;p=+h[B>>3];if(!(p>1.0)){o=~~(p*134217728.0);c[g+28>>2]=o;if((o|0)>=0)break}else s=22}else s=22;if((s|0)==22)c[g+28>>2]=-1;ph(A,27216,B);s=k+24|0;c[s>>2]=(c[s>>2]|0)+1}while(0);o=l+24|0;n=Oq(A,31,0,c[o>>2]|0,0)|0;if(!n){if(b[v>>1]&2048)c[x>>2]=c[x>>2]|524288;if(!q)break;o=b[y>>1]|0;if(!(o&1)){c[B>>2]=r;c[B+4>>2]=u;ph(A,27328,B);u=k+24|0;c[u>>2]=(c[u>>2]|0)+1;break}b[y>>1]=o&65534;hu(f,t)|0;a[g>>0]=-101;n=g+38|0;a[n>>0]=0;b:do if(k){m=B+24|0;l=z+4|0;o=z+8|0;while(1){u=c[k+4>>2]|0;c[B+0>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=0;c[B+16>>2]=0;c[B+20>>2]=0;c[B>>2]=87;c[m>>2]=z;c[z>>2]=u;c[l>>2]=0;c[o>>2]=0;hu(B,c[w>>2]|0)|0;if((c[l>>2]|0)>0)break;if(!(c[o>>2]|0))break;a[n>>0]=(a[n>>0]|0)+1<<24>>24;k=c[k+16>>2]|0;if(!k)break b}u=k+28|0;b[u>>1]=e[v>>1]&4096|e[u>>1]|2}while(0);b[y>>1]=e[y>>1]|1;k=1;break a}else if((n|0)==1){c[B>>2]=c[o>>2];ph(A,27288,B);u=k+24|0;c[u>>2]=(c[u>>2]|0)+1}a[g>>0]=101;k=1;break a}while(0);hu(f,t)|0;k=1;break a}case 75:case 20:case 119:{if(n&2048){o=k+20|0;l=c[o>>2]|0;m=k+28|0;n=b[m>>1]|0;if(n&4){c[B>>2]=27440;ph(A,27472,B);n=b[m>>1]|0}if(n&16){c[B>>2]=27440;ph(A,27512,B)}gu(f,c[g+20>>2]|0)|0;if((l|0)!=(c[o>>2]|0))c[x>>2]=c[x>>2]|32}break}default:{}}if(!(c[A+64>>2]|0))k=(a[(c[A>>2]|0)+65>>0]|0)!=0?2:0;else k=2}else k=1;while(0);i=C;return k|0}function du(d,f){d=d|0;f=f|0;var g=0,h=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;M=i;i=i+80|0;if((i|0)>=(j|0))ba();L=M;J=M+64|0;E=M+32|0;m=b[f+6>>1]|0;h=m&65535;a:do if(!(h&2)){D=c[d+24>>2]|0;K=c[d+12>>2]|0;d=c[K>>2]|0;if(!(h&16)){zs(K,f,D);if(c[K+64>>2]|0){g=2;break}g=(a[d+65>>0]|0)!=0?2:1;break}F=f+52|0;g=(c[F>>2]|0)!=0;G=(f|0)==0;b:do if(!G){h=E+28|0;o=E+4|0;A=E+16|0;B=E+8|0;w=d+65|0;v=K+492|0;u=(D|0)==0;t=L+4|0;s=L+12|0;r=L+24|0;q=K+64|0;x=f;c:while(1){y=x+6|0;b[y>>1]=m&65535|2;c[E+0>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;c[E+16>>2]=0;c[E+20>>2]=0;c[E+24>>2]=0;c[E+28>>2]=0;c[E>>2]=K;if(hs(E,c[x+60>>2]|0)|0){g=2;break a}if(hs(E,c[x+64>>2]|0)|0){g=2;break a}m=c[x+32>>2]|0;if(b[y>>1]&8192){z=x+48|0;c[(c[m+28>>2]|0)+48>>2]=c[z>>2];c[z>>2]=0}z=x+32|0;if((c[m>>2]|0)>0){p=0;do{k=c[m+(p*72|0)+28>>2]|0;if(k){d=c[v>>2]|0;if(u)n=0;else{n=0;l=D;do{n=(c[l+20>>2]|0)+n|0;l=c[l+16>>2]|0}while((l|0)!=0)}l=c[m+(p*72|0)+16>>2]|0;if(l)c[v>>2]=l;c[L+0>>2]=0;c[L+4>>2]=0;c[L+8>>2]=0;c[L+12>>2]=0;c[L+16>>2]=0;c[L+20>>2]=0;c[L>>2]=82;c[t>>2]=83;c[s>>2]=K;c[r>>2]=D;gu(L,k)|0;c[v>>2]=d;if(c[q>>2]|0){g=2;break a}if(a[w>>0]|0){g=2;break a}if(!u){l=D;do{n=n-(c[l+20>>2]|0)|0;l=c[l+16>>2]|0}while((l|0)!=0)}m=m+(p*72|0)+45|0;a[m>>0]=a[m>>0]&-3|((n|0)!=0&1)<<1&255;m=c[z>>2]|0}p=p+1|0}while((p|0)<(c[m>>2]|0))}b[h>>1]=1;c[o>>2]=m;c[A>>2]=D;n=c[x>>2]|0;if((c[n>>2]|0)>0){m=n+4|0;l=0;do{if(hs(E,c[(c[m>>2]|0)+(l*20|0)>>2]|0)|0){g=2;break a}l=l+1|0}while((l|0)<(c[n>>2]|0))}k=c[x+40>>2]|0;m=(k|0)!=0;n=b[h>>1]|0;if(!m?(C=n&65535,(C&2|0)==0):0)b[h>>1]=C&65534;else b[y>>1]=n&4096|e[y>>1]|4;n=c[x+44>>2]|0;if(!((n|0)==0|m)){H=32;break}c[B>>2]=c[x>>2];if(hs(E,n)|0){g=2;break a}if(hs(E,c[x+36>>2]|0)|0){g=2;break a}c[A>>2]=0;b[h>>1]=e[h>>1]|1;if(b[y>>1]&8192){z=(c[(c[z>>2]|0)+28>>2]|0)+48|0;c[x+48>>2]=c[z>>2];c[z>>2]=0}if(!g?(mv(E,x,c[x+48>>2]|0,26880)|0)!=0:0){g=2;break a}if(a[w>>0]|0){g=2;break a}do if(m){if(mv(E,x,k,26888)|0){g=2;break a}if(a[w>>0]|0){g=2;break a}l=c[k>>2]|0;if((l|0)<=0)break;n=0;m=c[k+4>>2]|0;while(1){if(c[(c[m>>2]|0)+4>>2]&2){H=46;break c}n=n+1|0;if((n|0)>=(l|0))break;else m=m+20|0}}while(0);l=c[x+52>>2]|0;if(!l)break b;x=l;m=b[l+6>>1]|0}if((H|0)==32){ph(K,26832,L);g=2;break a}else if((H|0)==46){ph(K,26896,L);g=2;break a}}while(0);if(g?(I=c[f+48>>2]|0,(I|0)!=0):0){C=c[K>>2]|0;h=c[I>>2]|0;if((h|0)>(c[C+96>>2]|0)){ph(K,26960,L);g=2;break}if((h|0)>0){d=I+4|0;g=0;do{h=(c[d>>2]|0)+(g*20|0)+13|0;a[h>>0]=a[h>>0]&-2;g=g+1|0;h=c[I>>2]|0}while((g|0)<(h|0))}c[f+56>>2]=0;g=c[F>>2]|0;if(!g)if(G)d=I+4|0;else H=60;else while(1){c[g+56>>2]=f;f=c[g+52>>2]|0;if(!f){f=g;H=60;break}else{B=g;g=f;f=B}}d:do if((H|0)==60){d=I+4|0;u=C+65|0;v=L+4|0;w=L+8|0;x=L+28|0;y=L+24|0;z=L+4|0;t=f;e:while(1){s=c[t>>2]|0;if((h|0)<=0)break d;q=t+32|0;g=0;p=0;r=c[d>>2]|0;while(1){c[J>>2]=-1;o=r+13|0;do if(!(a[o>>0]&1)){h=c[r>>2]|0;f:do if(!h)h=0;else while(1){f=c[h+4>>2]|0;if(!(f&4096))break f;if(!(f&262144))h=h+12|0;else h=c[(c[h+20>>2]|0)+4>>2]|0;h=c[h>>2]|0;if(!h){h=0;break}}while(0);if(!(Is(h,J)|0)){f=nv(s,h)|0;c[J>>2]=f;if(!f){n=Ir(C,h,0,0)|0;if(!(a[u>>0]|0)){k=c[t>>2]|0;c[L+0>>2]=0;c[L+4>>2]=0;c[L+8>>2]=0;c[L+12>>2]=0;c[L+16>>2]=0;c[L+20>>2]=0;c[L+24>>2]=0;c[L+28>>2]=0;c[L>>2]=K;c[v>>2]=c[q>>2];c[w>>2]=k;b[x>>1]=1;c[y>>2]=0;A=(c[K>>2]|0)+68|0;f=a[A>>0]|0;a[A>>0]=1;B=hs(L,n)|0;a[A>>0]=f;g:do if(!B){m=k+4|0;l=c[k>>2]|0;k=0;while(1){if((k|0)>=(l|0)){f=0;break g}f=k+1|0;if((yu(c[(c[m>>2]|0)+(k*20|0)>>2]|0,n,-1)|0)<2)break;else k=f}}else f=0;while(0);c[J>>2]=f}else f=0;Ck(C,n)}if((f|0)<=0){f=1;break}}else{k=c[J>>2]|0;f=c[s>>2]|0;if((k|0)<1|(k|0)>(f|0))break e;else f=k}c[L>>2]=0;c[z>>2]=0;k=jr(C,132,L,0)|0;if(!k){g=2;break a}l=k+4|0;c[l>>2]=c[l>>2]|1024;c[k+8>>2]=f;l=c[r>>2]|0;if((l|0)==(h|0))c[r>>2]=k;else c[l+12>>2]=k;Ck(C,h);b[r+16>>1]=f;a[o>>0]=a[o>>0]|1;f=p}else f=p;while(0);g=g+1|0;h=c[I>>2]|0;if((g|0)>=(h|0))break;else{p=f;r=r+20|0}}t=c[t+56>>2]|0;if(!((t|0)!=0&(f|0)!=0))break d}c[L>>2]=g+1;c[L+4>>2]=26880;c[L+8>>2]=f;ph(K,27064,L);g=2;break a}while(0);f=0;while(1){if((f|0)>=(h|0)){g=1;break a}g=f+1|0;if(!(a[(c[d>>2]|0)+(f*20|0)+13>>0]&1))break;else f=g}c[L>>2]=g;ph(K,27e3,L);g=2}else g=1}else g=1;while(0);i=M;return g|0}function eu(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var 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=i;i=i+16|0;if((i|0)>=(j|0))ba();w=z;x=c[e>>2]|0;a:do if(f){s=c[f>>2]|0;e=s*24|0;k=ih(x,e,0)|0;if(k)bw(k|0,0,e|0)|0;b[g>>1]=s;c[h>>2]=k;if((s|0)>0){q=f+4|0;t=x+65|0;e=0;r=k;while(1){n=c[q>>2]|0;f=c[n+(e*20|0)>>2]|0;b:do if(!f)f=0;else while(1){l=c[f+4>>2]|0;if(!(l&4096))break b;if(!(l&262144))f=f+12|0;else f=c[(c[f+20>>2]|0)+4>>2]|0;f=c[f>>2]|0;if(!f){f=0;break}}while(0);l=c[n+(e*20|0)+4>>2]|0;do if(!l){while(1){l=a[f>>0]|0;if(l<<24>>24==27){y=24;break}else if(l<<24>>24==-102){v=f;y=18;break}else if(l<<24>>24!=122)break;f=c[f+16>>2]|0}if((y|0)==24){y=0;c[w>>2]=c[f+8>>2];f=qh(x,10344,w)|0;break}if((y|0)==18?(y=0,u=c[v+44>>2]|0,(u|0)!=0):0){f=b[v+32>>1]|0;if(f<<16>>16<0)f=b[u+36>>1]|0;else f=f<<16>>16;if((f|0)>-1)f=c[(c[u+4>>2]|0)+(f*24|0)>>2]|0;else f=20456;c[w>>2]=f;f=qh(x,10344,w)|0;break}c[w>>2]=c[n+(e*20|0)+8>>2];f=qh(x,10344,w)|0}else f=gh(x,l)|0;while(0);if(a[t>>0]|0)break;if(!f){m=0;f=0}else{l=f;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;m=l-f&1073741823}c:do if((e|0)>0){l=0;n=0;o=m;p=f;while(1){if(!($c(c[k+(n*24|0)>>2]|0,p)|0)){f=o;while(1){m=f+-1|0;if((m|0)<=1)break;if(((d[p+m>>0]|0)+-48|0)>>>0<10)f=m;else break}if((f|0)>0)m=(a[p+m>>0]|0)==58?m:o;else m=o;a[p+m>>0]=0;l=l+1|0;c[w>>2]=p;c[w+4>>2]=l;f=qh(x,26824,w)|0;ig(x,p);if(!f){f=0;break c}else n=-1}else{m=o;f=p}n=n+1|0;if((n|0)>=(e|0))break;else{o=m;p=f}}}while(0);c[r>>2]=f;e=e+1|0;if((e|0)<(s|0))r=r+24|0;else{f=t;break a}}ig(x,f);f=t}else y=6}else{b[g>>1]=0;c[h>>2]=0;k=0;y=6}while(0);if((y|0)==6){f=x+65|0;e=0}if(a[f>>0]|0){if((e|0)>0){f=0;do{ig(x,c[k+(f*24|0)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}ig(x,k);c[h>>2]=0;b[g>>1]=0}i=z;return}function fu(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+32|0;if((i|0)>=(j|0))ba();q=r;p=c[e>>2]|0;if(!(a[p+65>>0]|0)){c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q+28>>2]=0;c[q+4>>2]=c[g+32>>2];m=c[(c[g>>2]|0)+4>>2]|0;l=f+38|0;if((b[l>>1]|0)>0){g=0;h=0;n=0;o=c[f+4>>2]|0;while(1){k=c[m+(n*20|0)>>2]|0;s=o+22|0;c[o+12>>2]=gh(p,uu(q,k,s)|0)|0;g=fw(d[s>>0]|0,0,g|0,h|0)|0;h=C;s=gv(k)|0;a[o+21>>0]=s<<24>>24==0?65:s;k=_t(e,k)|0;if(k)c[o+16>>2]=gh(p,c[k>>2]|0)|0;n=n+1|0;if((n|0)>=(b[l>>1]|0))break;else o=o+24|0}h=ew(g|0,h|0,2)|0;g=C}else{h=0;g=0}b[f+42>>1]=bs(h,g)|0}i=r;return}function gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;do if(!b)d=0;else{g=a+4|0;e=c[g>>2]|0;if((e|0)==0?(c[a+8>>2]|0)==0:0){d=0;break}j=a+16|0;c[j>>2]=(c[j>>2]|0)+1;h=a+8|0;a:while(1){if((e|0)!=0?(d=nc[e&127](a,b)|0,(d|0)!=0):0){k=24;break}if(hu(a,c[b>>2]|0)|0){k=19;break}if(ns(a,c[b+36>>2]|0)|0){k=19;break}if(hu(a,c[b+40>>2]|0)|0){k=19;break}if(ns(a,c[b+44>>2]|0)|0){k=19;break}if(hu(a,c[b+48>>2]|0)|0){k=19;break}if(ns(a,c[b+60>>2]|0)|0){k=19;break}if(ns(a,c[b+64>>2]|0)|0){k=19;break}e=c[b+32>>2]|0;if((e|0)!=0?(i=c[e>>2]|0,(i|0)>0):0){f=i;e=e+8|0;while(1){if(gu(a,c[e+20>>2]|0)|0){k=19;break a}f=f+-1|0;if((f|0)<=0)break;else e=e+72|0}}e=c[h>>2]|0;if(e)fc[e&15](a,b);b=c[b+52>>2]|0;if(!b){d=0;break}e=c[g>>2]|0}if((k|0)==19){c[j>>2]=(c[j>>2]|0)+-1;d=2;break}else if((k|0)==24)d=d&2;c[j>>2]=(c[j>>2]|0)+-1}while(0);return d|0}function hu(a,b){a=a|0;b=b|0;var d=0;a:do if((b|0)!=0?(d=c[b>>2]|0,(d|0)>0):0){b=c[b+4>>2]|0;while(1){if(ns(a,c[b>>2]|0)|0){d=2;break a}d=d+-1|0;if((d|0)<=0){d=0;break}else b=b+20|0}}else d=0;while(0);return d|0}function iu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();b=d;c[b>>2]=0;if((c[a+4>>2]&1|0)==0?(Is(a,b)|0)!=0:0)a=(c[b>>2]|0)==0&1;else a=0;i=d;return a|0}function ju(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();q=s;l=c[g+12>>2]|0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=200;a[q+24>>0]=1;a[q+25>>0]=0;c[q>>2]=c[d>>2];o=g+46|0;if(b[o>>1]|0){p=g+4|0;m=l+4|0;r=0;do{n=c[(c[m>>2]|0)+((b[(c[p>>2]|0)+(r<<1)>>1]|0)*24|0)>>2]|0;if(r)Ok(q,28920,2);k=c[l>>2]|0;if(!k)h=0;else{h=k;while(1)if(!(a[h>>0]|0))break;else h=h+1|0;h=h-k&1073741823}Ok(q,k,h);Ok(q,28928,1);if(!n)h=0;else{h=n;while(1)if(!(a[h>>0]|0))break;else h=h+1|0;h=h-n&1073741823}Ok(q,n,h);r=r+1|0}while((r|0)<(e[o>>1]|0))}r=pg(q)|0;vs(d,(a[g+51>>0]&3)==2?1555:2067,f,r,-1,2);i=s;return}function ku(a,b){a=a|0;b=b|0;return 0}function lu(d,f){d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();q=r+8|0;o=r;p=f+52|0;a:do if((c[p>>2]|0)!=0?(h=c[f+48>>2]|0,!((h|0)==0|(f|0)==0)):0){g=f;while(1){n=a[g+4>>0]|0;if(!(n<<24>>24==119|n<<24>>24==116))break;g=c[g+52>>2]|0;if(!g){g=0;break a}}k=c[h+4>>2]|0;g=c[h>>2]|0;while(1){h=g+-1|0;if((g|0)<=0){g=0;break a}if(!(c[(c[k+(h*20|0)>>2]|0)+4>>2]&256))g=h;else break}if((g|0)>=1){g=c[d+12>>2]|0;l=c[g>>2]|0;d=ih(l,72,0)|0;if(d){m=d+0|0;n=m+72|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));k=o;c[k>>2]=0;c[k+4>>2]=0;k=fr(g,0,0,0,o,d,0,0)|0;if(k){m=d+0|0;h=f+0|0;n=m+72|0;do{c[m>>2]=c[h>>2];m=m+4|0;h=h+4|0}while((m|0)<(n|0));c[f+32>>2]=k;c[q>>2]=0;c[q+4>>2]=0;c[f>>2]=hr(g,0,jr(l,116,q,0)|0)|0;a[f+4>>0]=119;c[f+36>>2]=0;c[d+40>>2]=0;c[d+44>>2]=0;c[d+48>>2]=0;c[p>>2]=0;c[f+56>>2]=0;g=f+6|0;b[g>>1]=(e[g>>1]|0)&57279|8192;c[(c[d+52>>2]|0)+56>>2]=d;c[d+60>>2]=0;c[d+64>>2]=0;g=0}else g=2}else g=2}else g=0}else g=0;while(0);i=r;return g|0}function mu(f,g){f=f|0;g=g|0;var h=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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=i;i=i+32|0;if((i|0)>=(j|0))ba();W=X;T=X+16|0;G=f+12|0;V=c[G>>2]|0;U=c[V>>2]|0;R=g+6|0;n=e[R>>1]|0;b[R>>1]=n|16;S=U+65|0;a:do if(!(a[S>>0]|0)){F=g+32|0;P=c[F>>2]|0;if((P|0)!=0&(n&16|0)==0){Q=c[g>>2]|0;if((c[f+8>>2]|0)==9){n=g;while(1){m=c[n+56>>2]|0;if(!m)break;else n=m}n=c[n+68>>2]|0;if(n){C=V+532|0;c[n+4>>2]=c[C>>2];c[C>>2]=n;a[V+449>>0]=0}}ys(V,P);O=P+8|0;n=c[P>>2]|0;b:do if((n|0)>0){B=0;v=O;c:while(1){if(!(a[v+37>>0]&8)){C=v+16|0;h=c[G>>2]|0;if(c[C>>2]|0){k=h;N=10;break}s=c[h>>2]|0;m=h+532|0;o=c[m>>2]|0;d:do if((c[v+4>>2]|0)==0?(E=c[v+8>>2]|0,!((E|0)==0|(o|0)==0)):0){e:while(1){p=c[o>>2]|0;if((p|0)>0){l=0;do{n=o+(l<<4)+8|0;k=c[n>>2]|0;if(!($c(E,k)|0)){z=l;break e}l=l+1|0}while((l|0)<(p|0))}o=c[o+4>>2]|0;if(!o){N=46;break d}}w=o+(z<<4)+20|0;p=c[w>>2]|0;if(p){g=p;N=21;break c}y=ih(s,76,0)|0;if(!y){g=C;N=23;break c}q=y+0|0;p=q+76|0;do{a[q>>0]=0;q=q+1|0}while((q|0)<(p|0));c[C>>2]=y;t=y+40|0;b[t>>1]=1;c[y>>2]=gh(s,c[n>>2]|0)|0;b[y+36>>1]=-1;b[y+28>>1]=200;A=y+44|0;a[A>>0]=d[A>>0]|2;A=cr(s,c[o+(z<<4)+16>>2]|0,0)|0;c[v+20>>2]=A;if(a[s+65>>0]|0){g=2;break a}x=((a[A+4>>0]|0)+-115&255)<2;if(x?(u=c[A+32>>2]|0,D=c[u>>2]|0,(D|0)>0):0){p=A+6|0;q=D;s=0;do{do if(!(c[u+(s*72|0)+12>>2]|0)){r=c[u+(s*72|0)+16>>2]|0;if(!r)break;if($c(r,c[n>>2]|0)|0)break;c[u+(s*72|0)+24>>2]=y;q=u+(s*72|0)+45|0;a[q>>0]=a[q>>0]|8;b[t>>1]=(b[t>>1]|0)+1<<16>>16;b[p>>1]=e[p>>1]|2048;q=c[u>>2]|0}while(0);s=s+1|0}while((s|0)<(q|0))}if((e[t>>1]|0)>2){g=n;N=34;break c}c[w>>2]=28176;l=c[m>>2]|0;c[m>>2]=o;if(x)p=c[A+52>>2]|0;else p=A;gu(f,p)|0;p=A;while(1){k=c[p+52>>2]|0;if(!k)break;else p=k}k=c[p>>2]|0;p=c[o+(z<<4)+12>>2]|0;do if(p){if(!k)break;r=c[k>>2]|0;k=c[p>>2]|0;if((r|0)!=(k|0)){g=r;N=42;break c}}else p=k;while(0);eu(h,p,y+38|0,y+4|0);if(x){c[w>>2]=(b[A+6>>1]&2048)==0?28280:28240;gu(f,A)|0}c[w>>2]=0;c[m>>2]=l;if(!(c[C>>2]|0))N=46}else N=46;while(0);do if((N|0)==46){N=0;if(!(c[v+8>>2]|0)){o=c[v+20>>2]|0;if(gu(f,o)|0){g=2;break a}m=ih(U,76,0)|0;if(!m){g=C;N=49;break c}q=m+0|0;p=q+76|0;do{a[q>>0]=0;q=q+1|0}while((q|0)<(p|0));c[C>>2]=m;b[m+40>>1]=1;c[W>>2]=m;c[m>>2]=qh(U,27760,W)|0;while(1){n=c[o+52>>2]|0;if(!n)break;else o=n}eu(V,c[o>>2]|0,m+38|0,m+4|0);b[m+36>>1]=-1;b[m+28>>1]=200;C=m+44|0;a[C>>0]=d[C>>0]|2;break}h=Qr(V,0,v)|0;c[C>>2]=h;if(!h){g=2;break a}o=h+40|0;n=b[o>>1]|0;if(n<<16>>16==-1){g=C;N=55;break c}b[o>>1]=n+1<<16>>16;o=h+12|0;if((c[o>>2]|0)==0?(a[h+44>>0]&16)==0:0)break;if(dr(V,h)|0){g=2;break a}C=cr(U,c[o>>2]|0,0)|0;c[v+20>>2]=C;gu(f,C)|0}while(0);if(Nt(V,v)|0){g=2;break a}n=c[P>>2]|0}B=B+1|0;if((B|0)>=(n|0))break b;else v=v+72|0}if((N|0)==10){while(1){h=c[g+56>>2]|0;if(!h)break;else g=h}g=c[g+68>>2]|0;if(!g){g=1;break a}c[k+532>>2]=c[g+4>>2];g=1;break a}else if((N|0)==21){c[W>>2]=k;ph(h,g,W);g=2;break a}else if((N|0)==23){c[g>>2]=0;g=2;break a}else if((N|0)==34){c[W>>2]=c[g>>2];ph(h,28128,W);g=2;break a}else if((N|0)==42){c[W>>2]=c[n>>2];c[W+4>>2]=g;c[W+8>>2]=k;ph(h,28200,W);c[m>>2]=l;g=2;break a}else if((N|0)==49){c[g>>2]=0;g=2;break a}else if((N|0)==55){c[W>>2]=c[h>>2];ph(V,27776,W);c[g>>2]=0;g=2;break a}}while(0);if(!(a[S>>0]|0)){v=c[F>>2]|0;f:do if(((c[v>>2]|0)+-1|0)>0){w=g+36|0;y=0;z=v+8|0;A=v+80|0;g:while(1){x=c[A+16>>2]|0;if(!((c[z+16>>2]|0)==0|(x|0)==0)){D=d[A+36>>0]|0;u=D&32;s=(u|0)==0;u=u>>>5;t=A+44|0;if(D&4){if(c[t>>2]|0){N=73;break}n=A+48|0;if(c[n>>2]|0){N=73;break}k=x+38|0;o=b[k>>1]|0;if(o<<16>>16>0){h=x+4|0;r=y+1|0;q=0;do{m=c[(c[h>>2]|0)+(q*24|0)>>2]|0;l=0;do{p=ov(c[v+(l*72|0)+24>>2]|0,m)|0;if((p|0)>-1){o=l;N=77;break}l=l+1|0}while((l|0)<(r|0));if((N|0)==77){N=0;pv(V,v,o,p,r,q,u,w);o=b[k>>1]|0}q=q+1|0}while((q|0)<(o<<16>>16|0))}}else n=A+48|0;o=c[t>>2]|0;if(o){if(c[n>>2]|0){N=81;break}if(!s){qv(o,c[A+40>>2]|0);o=c[t>>2]|0}c[w>>2]=os(c[V>>2]|0,c[w>>2]|0,o)|0;c[t>>2]=0}m=c[n>>2]|0;if((m|0)!=0?(M=m+4|0,(c[M>>2]|0)>0):0){l=y+1|0;p=0;do{h=c[(c[m>>2]|0)+(p<<3)>>2]|0;k=ov(x,h)|0;if((k|0)<0){N=91;break g}else o=0;while(1){n=ov(c[v+(o*72|0)+24>>2]|0,h)|0;if((n|0)>-1)break;o=o+1|0;if((o|0)>=(l|0)){N=91;break g}}pv(V,v,o,n,l,k,u,w);p=p+1|0}while((p|0)<(c[M>>2]|0))}}y=y+1|0;if((y|0)>=((c[v>>2]|0)+-1|0))break f;else{z=z+72|0;A=A+72|0}}if((N|0)==73){c[W>>2]=0;ph(V,27928,W);g=2;break a}else if((N|0)==81){ph(V,27984,W);g=2;break a}else if((N|0)==91){c[W>>2]=h;ph(V,28040,W);g=2;break a}}while(0);h=c[Q>>2]|0;o=(h|0)>0;h:do if(o){k=c[Q+4>>2]|0;n=0;do{m=c[k+(n*20|0)>>2]|0;l=a[m>>0]|0;if(l<<24>>24==122){if((a[c[m+16>>2]>>0]|0)==116)break h}else if(l<<24>>24==116)break h;n=n+1|0}while((n|0)<(h|0))}else n=0;while(0);if((n|0)<(h|0)){M=c[Q+4>>2]|0;n=c[(c[V>>2]|0)+24>>2]|0;if(!(n&32))L=0;else L=(n&64|0)==0;if(o){H=U+20|0;I=U+16|0;J=T+4|0;K=0;h=0;do{m=M+(K*20|0)|0;o=c[m>>2]|0;n=a[o>>0]|0;if(n<<24>>24==122)if((a[c[o+16>>2]>>0]|0)==116){f=c[(c[o+12>>2]|0)+8>>2]|0;N=110}else N=106;else if(n<<24>>24==116){f=0;N=110}else N=106;do if((N|0)==106){h=hr(V,h,o)|0;if(h){C=M+(K*20|0)+4|0;B=(c[h>>2]|0)+-1|0;A=c[h+4>>2]|0;c[A+(B*20|0)+4>>2]=c[C>>2];D=M+(K*20|0)+8|0;c[A+(B*20|0)+8>>2]=c[D>>2];c[C>>2]=0;c[D>>2]=0}c[m>>2]=0}else if((N|0)==110){if((c[P>>2]|0)>0){D=(f|0)==0;E=(f|0)!=0;F=0;G=O;n=0;while(1){s=c[G+16>>2]|0;m=c[G+20>>2]|0;o=c[G+12>>2]|0;if(!o)o=c[s>>2]|0;if(a[S>>0]|0)break;if((m|0)!=0?(b[m+6>>1]&512)!=0:0){C=0;N=125}else N=117;do if((N|0)==117){N=0;if(!D?($c(f,o)|0)!=0:0)break;p=c[s+68>>2]|0;if(!p){m=0;C=27816;N=125;break}l=c[H>>2]|0;q=c[I>>2]|0;if((l|0)>0){k=0;while(1){m=k+1|0;if((c[q+(k<<4)+12>>2]|0)==(p|0)){m=k;break}if((m|0)<(l|0))k=m;else break}if((m|0)>-1)l=m;else{m=0;C=27816;N=125;break}}else l=0;m=0;C=c[q+(l<<4)>>2]|0;N=125}while(0);do if((N|0)==125){N=0;B=s+38|0;t=b[B>>1]|0;if(t<<16>>16<=0)break;x=s+4|0;w=(m|0)!=0;q=E&w;y=(F|0)>0;r=y&D;v=G+36|0;y=y^1;u=G+48|0;p=(C|0)==0;z=0;do{s=c[x>>2]|0;k=c[s+(z*24|0)>>2]|0;if(!(q?(rv(c[(c[(c[m>>2]|0)+4>>2]|0)+(z*20|0)+8>>2]|0,0,f,0)|0)==0:0))N=129;i:do if((N|0)==129){N=0;if(a[s+(z*24|0)+23>>0]&2)break;if(r){if(!((a[v>>0]&4)==0|y)){s=0;do{if((ov(c[P+(s*72|0)+24>>2]|0,k)|0)>-1){n=1;break i}s=s+1|0}while((s|0)<(F|0))}if((sv(c[u>>2]|0,k)|0)>-1){n=1;break}}t=pt(U,27,k)|0;if(!L?(c[P>>2]|0)<=1:0){l=k;A=0}else N=137;do if((N|0)==137){N=0;t=Vq(V,122,pt(U,27,o)|0,t,0)|0;if(!p)t=Vq(V,122,pt(U,27,C)|0,t,0)|0;if(!L){l=k;A=0;break}c[W>>2]=o;c[W+4>>2]=k;A=qh(U,27824,W)|0;l=A}while(0);h=hr(V,h,t)|0;c[T>>2]=l;if(!l)t=0;else{t=l;while(1)if(!(a[t>>0]|0))break;else t=t+1|0;t=t-l&1073741823}c[J>>2]=t;ir(V,h,T,0);do if(h){if(!(b[R>>1]&512))break;s=(c[h>>2]|0)+-1|0;k=c[h+4>>2]|0;if(w)t=gh(U,c[(c[(c[m>>2]|0)+4>>2]|0)+(z*20|0)+8>>2]|0)|0;else{c[W>>2]=C;c[W+4>>2]=o;c[W+8>>2]=l;t=qh(U,27832,W)|0}c[k+(s*20|0)+8>>2]=t;t=k+(s*20|0)+13|0;a[t>>0]=a[t>>0]|2}while(0);ig(U,A);t=b[B>>1]|0;n=1}while(0);z=z+1|0}while((z|0)<(t<<16>>16|0))}while(0);F=F+1|0;if((F|0)>=(c[P>>2]|0))break;else G=G+72|0}if(n)break}if(!f){ph(V,27872,W);break}else{c[W>>2]=f;ph(V,27848,W);break}}while(0);K=K+1|0}while((K|0)<(c[Q>>2]|0))}else h=0;Jk(U,Q);c[g>>2]=h}else h=c[g>>2]|0;if((h|0)!=0?(c[h>>2]|0)>(c[U+96>>2]|0):0){ph(V,27896,W);g=0}else g=0}else g=2}else g=1}else g=2;while(0);i=X;return g|0}function nu(a,b){a=a|0;b=b|0;var d=0;d=c[a+12>>2]|0;while(1){a=c[b+56>>2]|0;if(!a)break;else b=a}b=c[b+68>>2]|0;if(b)c[d+532>>2]=c[b+4>>2];return}function ou(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;h=f+6|0;i=e[h>>1]|0;if((i&32|0)==0?(b[h>>1]=i|32,l=c[d+12>>2]|0,j=c[f+32>>2]|0,g=c[j>>2]|0,(g|0)>0):0){f=0;h=j+8|0;while(1){d=c[h+16>>2]|0;if(((d|0)!=0?(a[d+44>>0]&2)!=0:0)?(k=c[h+20>>2]|0,(k|0)!=0):0){g=k;while(1){i=c[g+52>>2]|0;if(!i)break;else g=i}fu(l,d,g);g=c[j>>2]|0}f=f+1|0;if((f|0)>=(g|0))break;else h=h+72|0}}return}function pu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)!=0?(d=c[a>>2]|0,(d|0)>0):0){g=c[a+4>>2]|0;f=0;do{e=c[g+(f*20|0)>>2]|0;if((e|0)!=0?(h=c[e+24>>2]|0,(h|0)>(c[b>>2]|0)):0){c[b>>2]=h;d=c[a>>2]|0}f=f+1|0}while((f|0)<(d|0))}return}function qu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if(((b|0)!=0?(Cs(a,c[b>>2]|0,d,e),Cs(a,c[b+40>>2]|0,d,e),Cs(a,c[b+48>>2]|0,d,e),g=b+44|0,c[g>>2]=Ds(a,c[g>>2]|0,d,e)|0,g=b+36|0,c[g>>2]=Ds(a,c[g>>2]|0,d,e)|0,qu(a,c[b+52>>2]|0,d,e),g=c[b+32>>2]|0,(g|0)!=0):0)?(f=c[g>>2]|0,(f|0)>0):0){b=f;f=g+8|0;while(1){qu(a,c[f+20>>2]|0,d,e);b=b+-1|0;if((b|0)<=0)break;else f=f+72|0}}return}function ru(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[d+48>>2]|0;l=c[f>>2]|0;g=c[b>>2]|0;m=Ns(g,l+1|0,1)|0;if((m|0)!=0&(l|0)>0){k=f+4|0;i=g+8|0;h=m+16|0;j=0;do{g=c[k>>2]|0;f=c[g+(j*20|0)>>2]|0;if(!(c[f+4>>2]&256)){g=Os(b,d,(e[g+(j*20|0)+16>>1]|0)+-1|0)|0;if(!g)g=c[i>>2]|0;f=tv(b,f,c[g>>2]|0)|0;c[(c[k>>2]|0)+(j*20|0)>>2]=f}else g=_t(b,f)|0;c[m+(j<<2)+20>>2]=g;a[(c[h>>2]|0)+j>>0]=a[(c[k>>2]|0)+(j*20|0)+12>>0]|0;j=j+1|0}while((j|0)!=(l|0))}return m|0}function su(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;h=c[d>>2]|0;a:do if((f|0)!=0?(a[h+65>>0]|0)==0:0){k=c[f>>2]|0;if((k|0)>(c[h+96>>2]|0)){c[n>>2]=g;ph(d,27120,n);e=1;break}m=c[e>>2]|0;if((k|0)>0){h=k;e=0;l=c[f+4>>2]|0;while(1){k=b[l+16>>1]|0;if(k<<16>>16){k=k&65535;h=c[m>>2]|0;if((k|0)>(h|0))break;uv(d,m,k+-1|0,c[l>>2]|0,g,0);h=c[f>>2]|0}e=e+1|0;if((e|0)>=(h|0)){e=0;break a}else l=l+20|0}c[n>>2]=e+1;c[n+4>>2]=g;c[n+8>>2]=h;ph(d,27064,n);e=1}else e=0}else e=0;while(0);i=o;return e|0}function tu(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var 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;t=b+8|0;u=c[t>>2]|0;w=u+32|0;l=c[w>>2]|0;x=ts(u)|0;if(i){n=sh(u,46,i,0,0)|0;m=f+8|0;p=c[m>>2]|0;r=i+1|0;o=f+12|0;q=c[o>>2]|0;if(j)c[j>>2]=(c[j>>2]|0)+1;p=sh(u,42,p,r,q)|0;th(u,p,j,-6);p=p+2|0;sh(u,43,p,x,p)|0;p=c[w>>2]|0;if(p>>>0>n>>>0)c[(c[u+4>>2]|0)+(n*20|0)+8>>2]=p;c[(c[u+24>>2]|0)+88>>2]=p+-1;sh(u,33,c[m>>2]|0,r,(c[o>>2]|0)+-1|0)|0;sh(u,25,1,i,0)|0}if(!(a[(c[b>>2]|0)+65>>0]|0)){et(u,c[e+12>>2]|0,x);switch(d[g>>0]|0){case 12:case 14:{m=b+19|0;o=a[m>>0]|0;if(o<<24>>24){i=o+-1<<24>>24;a[m>>0]=i;n=c[b+((i&255)<<2)+24>>2]|0;if(!(i<<24>>24))s=12;else{o=o+-2<<24>>24;a[m>>0]=o;o=c[b+((o&255)<<2)+24>>2]|0;m=n}}else{s=b+72|0;n=(c[s>>2]|0)+1|0;c[s>>2]=n;s=12}if((s|0)==12){m=b+72|0;o=(c[m>>2]|0)+1|0;c[m>>2]=o;m=n}sh(u,49,c[f+8>>2]|0,c[f+12>>2]|0,m)|0;n=g+4|0;sh(u,74,c[n>>2]|0,o,0)|0;sh(u,75,c[n>>2]|0,m,o)|0;n=c[u+4>>2]|0;if(n)a[n+(((c[w>>2]|0)+-1|0)*20|0)+3>>0]=8;Wr(b,o);Wr(b,m);break}case 11:{o=g+1|0;a[o>>0]=xu(c[c[(c[e>>2]|0)+4>>2]>>2]|0,a[o>>0]|0)|0;n=b+19|0;m=a[n>>0]|0;if(!(m<<24>>24)){s=b+72|0;n=(c[s>>2]|0)+1|0;c[s>>2]=n}else{s=m+-1<<24>>24;a[n>>0]=s;n=c[b+((s&255)<<2)+24>>2]|0}s=f+8|0;th(u,sh(u,49,c[s>>2]|0,1,n)|0,o,1);$s(b,c[s>>2]|0,1);sh(u,110,c[g+4>>2]|0,n,0)|0;Wr(b,n);break}case 10:{s=c[f+8>>2]|0;sh(c[t>>2]|0,32,s,c[g+4>>2]|0,1)|0;$s(b,s,1);break}case 13:{q=g+8|0;n=c[q>>2]|0;if(!n){n=c[f+12>>2]|0;o=b+60|0;m=c[o>>2]|0;j=b+56|0;p=c[j>>2]|0;if((p|0)<(n|0)){s=b+72|0;m=c[s>>2]|0;c[s>>2]=m+n;m=m+1|0}else{c[o>>2]=m+n;c[j>>2]=p-n}c[q>>2]=m;c[g+12>>2]=n}else{m=n;n=c[g+12>>2]|0}s=c[f+8>>2]|0;sh(c[t>>2]|0,32,s,m,n)|0;$s(b,s,n);sh(u,22,c[g+4>>2]|0,0,0)|0;break}default:{i=f+8|0;s=f+12|0;sh(u,35,c[i>>2]|0,c[s>>2]|0,0)|0;$s(b,c[i>>2]|0,c[s>>2]|0)}}m=c[e+8>>2]|0;if(m)sh(u,140,m,k,0)|0;m=c[u+24>>2]|0;n=~x;if((x|0)<0?(v=c[m+112>>2]|0,(v|0)!=0):0)c[v+(n<<2)>>2]=c[w>>2];c[m+88>>2]=(c[w>>2]|0)+-1;sh(u,18,h,0,0)|0}else l=0;return l|0}function uu(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+80|0;if((i|0)>=(j|0))ba();r=s+64|0;q=s+32|0;h=s;a[r>>0]=1;if((f|0)!=0?(c[e+4>>2]|0)!=0:0){k=d[f>>0]|0;a:do if((k|0)==154|(k|0)==156){p=b[f+32>>1]|0;h=p<<16>>16;if(e){o=f+28|0;b:while(1){while(1){n=c[e+4>>2]|0;m=c[n>>2]|0;c:do if((m|0)>0){f=c[o>>2]|0;k=0;while(1){l=k+1|0;if((c[n+(k*72|0)+48>>2]|0)==(f|0)){l=k;break c}if((l|0)<(m|0))k=l;else break}}else l=0;while(0);if((l|0)>=(m|0))break;m=c[n+(l*72|0)+24>>2]|0;l=c[n+(l*72|0)+28>>2]|0;f=(m|0)==0;if(!((e|0)!=0&f))break b}e=c[e+16>>2]|0;if(!e){h=0;break a}}if(!f){if(l){if(p<<16>>16<=-1){h=0;break}k=c[l>>2]|0;if((h|0)>=(c[k>>2]|0)){h=0;break}h=c[(c[k+4>>2]|0)+(h*20|0)>>2]|0;c[q+4>>2]=c[l+32>>2];c[q+16>>2]=e;c[q>>2]=c[e>>2];h=uu(q,h,r)|0;break}if(c[m+68>>2]|0){if(p<<16>>16<0)h=b[m+36>>1]|0;if((h|0)<0)h=11144;else{p=c[m+4>>2]|0;q=c[p+(h*24|0)+12>>2]|0;a[r>>0]=a[p+(h*24|0)+22>>0]|0;h=q}}else h=0}else h=0}else h=0}else if((k|0)==119){p=c[f+20>>2]|0;q=c[c[(c[p>>2]|0)+4>>2]>>2]|0;c[h+4>>2]=c[p+32>>2];c[h+16>>2]=e;c[h>>2]=c[e>>2];h=uu(h,q,r)|0}else h=0;while(0);if(g)a[g>>0]=a[r>>0]|0}else h=0;i=s;return h|0}function vu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=c[b+8>>2]|0;h=b+19|0;i=a[h>>0]|0;if(!(i<<24>>24)){i=b+72|0;h=(c[i>>2]|0)+1|0;c[i>>2]=h}else{i=i+-1<<24>>24;a[h>>0]=i;h=c[b+((i&255)<<2)+24>>2]|0}th(j,sh(j,69,d,e,g)|0,f,-14);sh(j,49,g,f,h)|0;sh(j,110,d,h,0)|0;Wr(b,h);return}function wu(b,d,f,g,h,i){b=b|0;d=d|0;f=f|0;g=g|0;h=h|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,u=0,v=0,w=0,x=0,y=0,z=0;u=b+8|0;z=c[u>>2]|0;y=d+24|0;k=a[y>>0]&1;n=k<<24>>24==0;k=(k^1)&255;j=c[d>>2]|0;o=c[j>>2]|0;p=o+h+k|0;s=b+72|0;m=c[s>>2]|0;x=m+1|0;c[s>>2]=x;v=d+4|0;q=c[v>>2]|0;i=(i|0)==0;if(i){c[s>>2]=x+p;t=m+2|0}else t=g-o-k|0;Zs(b,j,t,1);if(n)sh(z,73,c[d+8>>2]|0,t+o|0,0)|0;if(i){sh(c[u>>2]|0,32,g,k+o+t|0,h)|0;$s(b,g,h)}sh(z,49,t+q|0,p-q|0,x)|0;if((q|0)>0){j=c[s>>2]|0;h=j+1|0;i=c[v>>2]|0;c[s>>2]=i+j;if(n)g=sh(z,46,t+o|0,0,0)|0;else g=sh(z,59,c[d+8>>2]|0,0,0)|0;sh(z,42,h,t,c[v>>2]|0)|0;m=c[d+20>>2]|0;if((m|0)<0)m=(c[z+32>>2]|0)+-1|0;if(!(a[(c[z>>2]|0)+65>>0]|0))m=(c[z+4>>2]|0)+(m*20|0)|0;else m=29120;if(!(a[(c[b>>2]|0)+65>>0]|0)){c[m+8>>2]=p-i;m=m+16|0;i=c[m>>2]|0;bw(c[i+16>>2]|0,0,e[i+6>>1]|0)|0;th(z,-1,i,-6);c[m>>2]=Qs(b,c[d>>2]|0,q,(e[i+8>>1]|0)+-1|0)|0;m=z+32|0;i=c[m>>2]|0;l=i+1|0;sh(z,43,l,0,l)|0;l=ts(z)|0;c[d+16>>2]=l;k=(c[s>>2]|0)+1|0;c[s>>2]=k;c[d+12>>2]=k;sh(z,17,k,l,0)|0;l=d+8|0;sh(z,119,c[l>>2]|0,0,0)|0;k=c[m>>2]|0;if(k>>>0>g>>>0)c[(c[z+4>>2]|0)+(g*20|0)+8>>2]=k;j=z+24|0;c[(c[j>>2]|0)+88>>2]=k+-1;k=c[v>>2]|0;sh(c[u>>2]|0,32,t,h,k)|0;$s(b,t,k);k=c[m>>2]|0;if(k>>>0>i>>>0)c[(c[z+4>>2]|0)+(i*20|0)+8>>2]=k;c[(c[j>>2]|0)+88>>2]=k+-1;r=23}}else{l=d+8|0;r=23}if((r|0)==23?(sh(z,110-(a[y>>0]&1)|0,c[l>>2]|0,x,0)|0,w=c[f+8>>2]|0,(w|0)!=0):0){k=c[f+12>>2]|0;k=sh(z,139,(k|0)==0?w:k+1|0,0,-1)|0;sh(z,105,c[l>>2]|0,0,0)|0;sh(z,95,c[l>>2]|0,0,0)|0;j=c[z+32>>2]|0;if(j>>>0>k>>>0)c[(c[z+4>>2]|0)+(k*20|0)+8>>2]=j;c[(c[z+24>>2]|0)+88>>2]=j+-1}return}function xu(a,b){a=a|0;b=b|0;a=gv(a)|0;if(!(a<<24>>24==0|b<<24>>24==0))return (a<<24>>24>66|b<<24>>24>66?67:65)|0;if(!((a|b)<<24>>24))a=65;else a=(b&255)+(a&255)&255;return a|0}function yu(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;do if(!((d|0)==0|(e|0)==0)){j=c[d+4>>2]|0;k=c[e+4>>2]|0;l=k|j;if(l&1024){if((j&1024&k|0)!=0?(c[d+8>>2]|0)==(c[e+8>>2]|0):0){g=0;break}g=2;break}g=a[d>>0]|0;h=a[e>>0]|0;if(g<<24>>24!=h<<24>>24){if(g<<24>>24==95?(yu(c[d+12>>2]|0,e,f)|0)<2:0){g=1;break}if(h<<24>>24==95?(yu(d,c[e+12>>2]|0,f)|0)<2:0){g=1;break}g=2;break}if((!(g<<24>>24==-100|g<<24>>24==-102)?(i=c[d+8>>2]|0,(i|0)!=0):0)?(Wv(i,c[e+8>>2]|0)|0)!=0:0){g=g<<24>>24==95?1:2;break}if(!((k^j)&16)){if(!(l&16384)){if(l&2048){g=2;break}if(yu(c[d+12>>2]|0,c[e+12>>2]|0,f)|0){g=2;break}if(yu(c[d+16>>2]|0,c[e+16>>2]|0,f)|0){g=2;break}if(Ps(c[d+20>>2]|0,c[e+20>>2]|0,f)|0){g=2;break}if(!(l&8192)){if((b[d+32>>1]|0)!=(b[e+32>>1]|0)){g=2;break}h=c[d+28>>2]|0;g=c[e+28>>2]|0;if((h|0)!=(g|0)?(h|0)!=(f|0)|(g|0)>-1:0){g=2;break}}}g=0}else g=2}else g=(e|0)==(d|0)?0:2;while(0);return g|0}function zu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b+8|0;a[f>>0]=e;a:do if(d){while(1){if((a[d>>0]|0)!=e<<24>>24)break;zu(b,c[d+12>>2]|0,e);d=c[d+16>>2]|0;a[f>>0]=e;if(!d)break a}vv(b,d,0)|0}while(0);return}function Au(f,g){f=f|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,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;D=c[f>>2]|0;Q=c[D>>2]|0;S=c[Q>>2]|0;L=S+65|0;do if(!(a[L>>0]|0)){T=f+20|0;k=c[T>>2]|0;h=k+(g*48|0)|0;_=D+68|0;R=c[h>>2]|0;s=R+12|0;l=c[s>>2]|0;x=wv(_,l)|0;w=C;j=a[R>>0]|0;u=j&255;do if(j<<24>>24==76){i=k+(g*48|0)+32|0;c[i>>2]=0;c[i+4>>2]=0;i=0;t=0}else if(j<<24>>24==75){m=R+20|0;if(!(c[R+4>>2]&2048)){i=Hu(_,c[m>>2]|0)|0;t=C;P=k+(g*48|0)+32|0;c[P>>2]=i;c[P+4>>2]=t;break}else{i=xv(_,c[m>>2]|0)|0;t=C;P=k+(g*48|0)+32|0;c[P>>2]=i;c[P+4>>2]=t;break}}else{i=wv(_,c[R+16>>2]|0)|0;t=C;P=k+(g*48|0)+32|0;c[P>>2]=i;c[P+4>>2]=t}while(0);q=wv(_,R)|0;m=C;N=R+4|0;if(!(c[N>>2]&1)){O=0;P=0;v=m}else{o=b[R+36>>1]|0;n=c[_>>2]|0;a:do if((n|0)>0){p=0;while(1){if((c[D+(p<<2)+72>>2]|0)==(o|0))break;p=p+1|0;if((p|0)>=(n|0)){p=0;o=0;break a}}p=ew(1,0,p|0)|0;o=C}else{p=0;o=0}while(0);O=fw(p|0,o|0,-1,-1)|0;P=C;q=p|q;v=o|m}r=k+(g*48|0)+40|0;c[r>>2]=q;c[r+4>>2]=v;r=k+(g*48|0)+8|0;c[r>>2]=-1;c[k+(g*48|0)+4>>2]=-1;z=k+(g*48|0)+18|0;b[z>>1]=0;p=u+-75|0;if(p>>>0<9?(499>>>(p&511)&1)!=0:0){b:do if(!l)l=0;else while(1){p=c[l+4>>2]|0;if(!(p&4096))break b;if(!(p&262144))n=l+12|0;else n=c[(c[l+20>>2]|0)+4>>2]|0;l=c[n>>2]|0;if(!l){l=0;break}}while(0);p=c[R+16>>2]|0;c:do if(!p)p=0;else while(1){o=c[p+4>>2]|0;if(!(o&4096))break c;if(!(o&262144))p=p+12|0;else p=c[(c[p+20>>2]|0)+4>>2]|0;p=c[p>>2]|0;if(!p){p=0;break}}while(0);t=(i&x|0)==0&(t&w|0)==0?4095:1024;if((a[l>>0]|0)==-102){m=c[l+28>>2]|0;c[r>>2]=m;c[k+(g*48|0)+12>>2]=b[l+32>>1];if((u|0)==75)n=1;else if((u|0)==76)n=128;else n=2<>1]=n&t}else m=-1;if((p|0)!=0?(a[p>>0]|0)==-102:0){if((m|0)>-1){l=Ir(S,R,0,0)|0;if(a[L>>0]|0){Ck(S,l);break}m=vv(f,l,3)|0;if(!m)break;n=c[T>>2]|0;k=n+(m*48|0)|0;c[n+(m*48|0)+4>>2]=g;b[n+(m*48|0)+16>>1]=b[n+(g*48|0)+16>>1]|0;h=n+(g*48|0)+22|0;a[h>>0]=(a[h>>0]|0)+1<<24>>24;h=n+(g*48|0)|0;p=n+(g*48|0)+20|0;b[p>>1]=e[p>>1]|8;if(((a[R>>0]|0)==79?(c[N>>2]&1|0)==0:0)?(b[S+60>>1]&512)==0:0){s=n+(g*48|0)+18|0;b[s>>1]=e[s>>1]|1024;s=1024}else s=0}else{s=0;l=R;k=h}j=l+16|0;o=(c[j>>2]|0)+4|0;n=c[o>>2]|0;m=n&256;i=l+12|0;p=c[i>>2]|0;do if((m|0)==(c[p+4>>2]&256|0)){if(m){c[o>>2]=n&-257;break}p=(_t(Q,p)|0)==0;n=c[i>>2]|0;if(p)p=n;else{p=n+4|0;c[p>>2]=c[p>>2]|256;p=n}}while(0);n=c[j>>2]|0;c[j>>2]=p;c[i>>2]=n;m=a[l>>0]|0;if((m&255)>79){m=((m&255)+176^2)+80&255;a[l>>0]=m}l=c[n+4>>2]|0;if(l&4096)do{if(!(l&262144))n=n+12|0;else n=c[(c[n+20>>2]|0)+4>>2]|0;n=c[n>>2]|0;l=c[n+4>>2]|0}while((l&4096|0)!=0);c[k+8>>2]=c[n+28>>2];c[k+12>>2]=b[n+32>>1];l=k+32|0;c[l>>2]=O|x;c[l+4>>2]=P|w;l=k+40|0;c[l>>2]=q;c[l+4>>2]=v;l=m&255;if((l|0)==76)l=128;else if((l|0)==75)l=1;else l=2<>1]=l+s&(t&65535)}}else H=59;do if((H|0)==59){if(j<<24>>24==74){if((a[f+8>>0]|0)!=72)break;m=(c[R+20>>2]|0)+4|0;i=R+36|0;j=0;while(1){q=d[34144+j>>0]|0;l=Ir(S,l,0,0)|0;l=Vq(Q,q,l,Ir(S,c[(c[m>>2]|0)+(j*20|0)>>2]|0,0,0)|0,0)|0;if(l){q=l+4|0;c[q>>2]=c[q>>2]|c[N>>2]&1;b[l+36>>1]=b[i>>1]|0}q=vv(f,l,3)|0;Au(f,q);k=c[T>>2]|0;c[k+(q*48|0)+4>>2]=g;b[k+(q*48|0)+16>>1]=b[k+(g*48|0)+16>>1]|0;q=k+(g*48|0)+22|0;a[q>>0]=(a[q>>0]|0)+1<<24>>24;j=j+1|0;if((j|0)==2)break;l=c[s>>2]|0}h=k+(g*48|0)|0;break}else if(j<<24>>24!=71)break;x=ih(S,416,0)|0;d:do if(x){bw(x|0,0,416)|0;c[k+(g*48|0)+12>>2]=x;A=k+(g*48|0)+20|0;b[A>>1]=e[A>>1]|16;c[x>>2]=D;c[x+4>>2]=0;A=x+12|0;c[A>>2]=0;c[x+16>>2]=8;B=x+20|0;c[B>>2]=x+24;zu(x,R,71);m=c[A>>2]|0;if((m|0)>0)do{m=m+-1|0;Au(x,m)}while((m|0)>0);if(!(a[L>>0]|0)){p=c[A>>2]|0;if((p|0)>0){w=D+68|0;v=-1;u=-1;i=-1;h=-1;t=c[B>>2]|0;while(1){p=p+-1|0;o=t+18|0;s=b[o>>1]|0;if(!(s&255)){l=ih(S,408,0)|0;if(!l){m=v;n=u;i=0;h=0}else{c[t+12>>2]=l;n=t+20|0;b[n>>1]=e[n>>1]|32;b[o>>1]=512;c[l>>2]=c[f>>2];n=l+4|0;c[n>>2]=0;m=l+12|0;c[m>>2]=0;c[l+16>>2]=8;q=l+20|0;c[q>>2]=l+24;zu(l,c[t>>2]|0,72);o=c[m>>2]|0;if((o|0)>0)do{o=o+-1|0;Au(l,o)}while((o|0)>0);c[n>>2]=f;if((a[L>>0]|0)==0?(y=c[m>>2]|0,(y|0)>0):0){o=0;n=0;h=0;r=c[q>>2]|0;while(1){m=(d[c[r>>2]>>0]|0)+-75|0;do if(m>>>0<9){if(!(499>>>(m&511)&1))break;l=c[r+8>>2]|0;j=c[w>>2]|0;e:do if((j|0)>0){m=0;while(1){if((c[D+(m<<2)+72>>2]|0)==(l|0))break;m=m+1|0;if((m|0)>=(j|0)){m=0;l=0;break e}}m=ew(1,0,m|0)|0;l=C}else{m=0;l=0}while(0);o=m|o;n=l|n}while(0);h=h+1|0;if((h|0)>=(y|0))break;else r=r+48|0}}else{o=0;n=0}m=o&v;n=n&u;i=0;h=0}}else{n=b[t+20>>1]|0;if(!(n&8)){q=c[t+8>>2]|0;l=c[w>>2]|0;m=(l|0)>0;f:do if(m){o=0;while(1){if((c[D+(o<<2)+72>>2]|0)==(q|0))break;o=o+1|0;if((o|0)>=(l|0)){j=0;r=0;break f}}j=ew(1,0,o|0)|0;r=C}else{j=0;r=0}while(0);if(!(n&2)){o=j;q=r}else{q=c[(c[B>>2]|0)+((c[t+4>>2]|0)*48|0)+8>>2]|0;g:do if(m){o=0;while(1){if((c[D+(o<<2)+72>>2]|0)==(q|0))break;o=o+1|0;if((o|0)>=(l|0)){o=0;q=0;break g}}o=ew(1,0,o|0)|0;q=C}else{o=0;q=0}while(0);o=o|j;q=q|r}l=(s&2)==0;m=o&v;n=q&u;i=l?0:o&i;h=l?0:q&h}else{m=v;n=u}}o=(m|0)!=0|(n|0)!=0;if(!((p|0)>0&o))break;else{v=m;u=n;t=t+48|0}}q=x+408|0;c[q>>2]=m;c[q+4>>2]=n;b[z>>1]=(m|0)==0&(n|0)==0?0:256;if(o)H=104}else{i=x+408|0;c[i>>2]=-1;c[i+4>>2]=-1;b[z>>1]=256;i=-1;h=-1;H=104}h:do if((H|0)==104)if((c[A>>2]|0)==2){l=c[B>>2]|0;m=0;i:while(1){j=m+1|0;if((b[l+18>>1]|0)!=512)if(!m)o=l;else break h;else{n=c[l+12>>2]|0;if((c[n+12>>2]|0)<=(m|0))break h;o=(c[n+20>>2]|0)+(m*48|0)|0}if(!o)break h;else p=0;while(1){if((b[l+66>>1]|0)==512){n=c[l+60>>2]|0;if((c[n+12>>2]|0)<=(p|0)){m=j;continue i}n=(c[n+20>>2]|0)+(p*48|0)|0;if(!n){m=j;continue i}}else if(!p)n=l+48|0;else{m=j;continue i}yv(f,o,n);l=c[B>>2]|0;p=p+1|0}}}while(0);if(!((i|0)==0&(h|0)==0)){r=D+68|0;q=-1;s=0;while(1){n=c[A>>2]|0;if((n|0)<=0)break d;p=c[B>>2]|0;while(1){j=n;n=n+-1|0;l=p+20|0;b[l>>1]=e[l>>1]&65471;l=c[p+8>>2]|0;if((l|0)!=(q|0)){m=c[r>>2]|0;j:do if((m|0)>0){o=0;while(1){if((c[D+(o<<2)+72>>2]|0)==(l|0))break;o=o+1|0;if((o|0)>=(m|0)){o=0;m=0;break j}}o=ew(1,0,o|0)|0;m=C}else{o=0;m=0}while(0);if(!((o&i|0)==0&(m&h|0)==0)){o=j;break}}if((n|0)<=0)break d;else p=p+48|0}m=c[p+12>>2]|0;if((o|0)<1)break d;else o=l;while(1){if((o|0)==(l|0)){if((c[p+12>>2]|0)!=(m|0)){n=l;m=1;break}q=gv(c[(c[p>>2]|0)+16>>2]|0)|0;if(!(q<<24>>24==0|q<<24>>24==(gv(c[(c[p>>2]|0)+12>>2]|0)|0)<<24>>24)){n=l;m=1;break}q=p+20|0;b[q>>1]=e[q>>1]|64}else{q=p+20|0;b[q>>1]=e[q>>1]&65471}if((n|0)<=0){n=l;m=0;break}o=c[p+56>>2]|0;n=n+-1|0;p=p+48|0}s=s+1|0;if(!((s|0)<2&m))break;else q=n}if(!m){l=c[A>>2]|0;if((l|0)>0){m=0;i=0;j=c[B>>2]|0;while(1){l=l+-1|0;if(b[j+20>>1]&64){m=Ir(S,c[(c[j>>2]|0)+16>>2]|0,0,0)|0;i=hr(c[D>>2]|0,i,m)|0;m=c[(c[j>>2]|0)+12>>2]|0}if((l|0)<=0){l=m;break}else j=j+48|0}}else{l=0;i=0}j=Vq(Q,75,Ir(S,l,0,0)|0,0,0)|0;if(!j)Jk(S,i);else{q=j+4|0;c[q>>2]=c[q>>2]|c[N>>2]&1;b[j+36>>1]=b[R+36>>1]|0;c[j+20>>2]=i;q=vv(f,j,3)|0;Au(f,q);k=c[T>>2]|0;c[k+(q*48|0)+4>>2]=g;b[k+(q*48|0)+16>>1]=b[k+(g*48|0)+16>>1]|0;q=k+(g*48|0)+22|0;a[q>>0]=(a[q>>0]|0)+1<<24>>24}b[k+(g*48|0)+18>>1]=2048}}}}else c[k+(g*48|0)+12>>2]=0;while(0);h=(c[T>>2]|0)+(g*48|0)|0}while(0);k:do if((a[f+8>>0]|0)==72){u=c[Q>>2]|0;if((a[R>>0]|0)==-103){t=R+20|0;q=c[t>>2]|0;if((q|0)!=0?(c[q>>2]|0)==2:0){m=c[R+8>>2]|0;if(!m)l=0;else{l=m;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;l=l-m&1073741823}l=Oh(u,m,l,2,1,0)|0;if(((((l|0)!=0?(E=b[l+2>>1]|0,(E&4)!=0):0)?(K=c[l+4>>2]|0,I=a[K>>0]|0,J=a[K+1>>0]|0,K=a[K+2>>0]|0,M=(E&65535)>>>3&1,F=(c[t>>2]|0)+4|0,G=c[(c[F>>2]|0)+20>>2]|0,(a[G>>0]|0)==-102):0)?(gv(G)|0)<<24>>24==66:0)?(a[(c[G+44>>2]|0)+44>>0]&16)==0:0){k=c[c[F>>2]>>2]|0;l:do if(!k)k=0;else while(1){j=c[k+4>>2]|0;if(!(j&4096))break l;if(!(j&262144))k=k+12|0;else k=c[(c[k+20>>2]|0)+4>>2]|0;k=c[k>>2]|0;if(!k){k=0;break}}while(0);j=a[k>>0]|0;r=j<<24>>24==-121;do if(r){l=c[Q+476>>2]|0;o=b[k+32>>1]|0;p=o<<16>>16;do if(!l){i=0;m=0}else{H=p+-1|0;G=c[l+60>>2]|0;i=G+(H*40|0)|0;if(b[G+(H*40|0)+8>>1]&1){i=0;m=0;break}m=c[l>>2]|0;n=ih(m,40,0)|0;if(!n){i=0;m=0;break}l=n+0|0;j=l+40|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(j|0));H=n+8|0;b[H>>1]=1;c[n+32>>2]=m;Wg(n,i)|0;if((b[H>>1]&15)!=2){i=n;m=0;break}i=n;m=Og(n,1)|0}while(0);l=c[Q+8>>2]|0;if(o<<16>>16>32){c[l+188>>2]=-1;q=m;H=177;break}else{q=l+188|0;c[q>>2]=c[q>>2]|1<>24==97){i=0;q=c[k+8>>2]|0;H=177}else i=0;while(0);do if((H|0)==177)if(q){m=0;while(1){H=a[q+m>>0]|0;j=H<<24>>24==I<<24>>24;l=m+1|0;if(H<<24>>24!=K<<24>>24&((H<<24>>24==0|j|H<<24>>24==J<<24>>24)^1))m=l;else break}if(m){if((a[q+(m+-1)>>0]|0)==-1)break;if(j)l=(a[q+l>>0]|0)==0;else l=0;n=l&1;s=pt(u,97,q)|0;if(s)a[(c[s+8>>2]|0)+m>>0]=0;do if(r){m=c[Q+8>>2]|0;j=b[k+32>>1]|0;if(j<<16>>16>32)c[m+188>>2]=-1;else{K=m+188|0;c[K>>2]=c[K>>2]|1<<(j<<16>>16)+-1}if(!l){n=0;break}if(!(a[(c[k+8>>2]|0)+1>>0]|0))break;j=Q+19|0;l=a[j>>0]|0;if(!(l<<24>>24)){K=Q+72|0;j=(c[K>>2]|0)+1|0;c[K>>2]=j}else{K=l+-1<<24>>24;a[j>>0]=K;j=c[Q+((K&255)<<2)+24>>2]|0}es(Q,k,j)|0;k=c[m+32>>2]|0;if(k>>>0>0)c[(c[m+4>>2]|0)+((k+-1|0)*20|0)+12>>2]=0;Wr(Q,j)}while(0);Ih(i);if(!q){H=217;break k}o=c[(c[(c[t>>2]|0)+4>>2]|0)+20>>2]|0;m=Ir(S,s,0,0)|0;p=M<<16>>16!=0;do if(!p){if(a[(c[Q>>2]|0)+65>>0]|0)break;i=h+20|0;b[i>>1]=e[i>>1]|1024;i=s+8|0;l=c[i>>2]|0;k=a[l>>0]|0;if(!(k<<24>>24))break;h=m+8|0;j=0;do{K=k&255;a[l>>0]=((d[10368+K>>0]|223)^32)&K;a[(c[h>>2]|0)+j>>0]=a[9328+K>>0]|0;j=j+1|0;l=(c[i>>2]|0)+j|0;k=a[l>>0]|0}while(k<<24>>24!=0)}while(0);if(!(a[L>>0]|0)){k=c[m+8>>2]|0;if(!k)j=-1;else{j=k;while(1)if(!(a[j>>0]|0))break;else j=j+1|0;j=(j-k&1073741823)+-1|0}k=k+j|0;j=a[k>>0]|0;if(p)i=n;else{i=j<<24>>24==64?0:n;j=a[9328+(j&255)>>0]|0}a[k>>0]=(j&255)+1;l=i}else l=n;i=M<<16>>16==0?13752:11152;j=Vq(Q,83,tv(Q,Ir(S,o,0,0)|0,i)|0,s,0)|0;if(j){M=j+4|0;c[M>>2]=c[M>>2]|c[N>>2]&1;b[j+36>>1]=b[R+36>>1]|0}k=vv(f,j,259)|0;Au(f,k);i=Vq(Q,82,tv(Q,Ir(S,o,0,0)|0,i)|0,m,0)|0;if(i){M=i+4|0;c[M>>2]=c[M>>2]|c[N>>2]&1;b[i+36>>1]=b[R+36>>1]|0}i=vv(f,i,259)|0;Au(f,i);j=c[T>>2]|0;h=j+(g*48|0)|0;if(!l){H=217;break k}c[j+(k*48|0)+4>>2]=g;N=j+(g*48|0)+16|0;b[j+(k*48|0)+16>>1]=b[N>>1]|0;H=j+(g*48|0)+22|0;a[H>>0]=(a[H>>0]|0)+1<<24>>24;c[j+(i*48|0)+4>>2]=g;b[j+(i*48|0)+16>>1]=b[N>>1]|0;a[H>>0]=(a[H>>0]|0)+1<<24>>24;H=217;break k}}while(0);Ih(i);H=217}else H=217}else H=217}}else H=217;while(0);if((H|0)==217)if(((((a[R>>0]|0)==-103?($c(c[R+8>>2]|0,31416)|0)==0:0)?(U=c[R+20>>2]|0,(c[U>>2]|0)==2):0)?(V=c[U+4>>2]|0,W=c[V+20>>2]|0,(a[W>>0]|0)==-102):0)?(X=c[V>>2]|0,Y=wv(_,X)|0,Z=C,_=wv(_,W)|0,(_&Y|0)==0&(C&Z|0)==0):0){_=vv(f,Vq(Q,51,0,Ir(S,X,0,0)|0,0)|0,3)|0;h=c[T>>2]|0;X=h+(_*48|0)+32|0;c[X>>2]=Y;c[X+4>>2]=Z;c[h+(_*48|0)+8>>2]=c[W+28>>2];c[h+(_*48|0)+12>>2]=b[W+32>>1];b[h+(_*48|0)+18>>1]=64;c[h+(_*48|0)+4>>2]=g;b[h+(_*48|0)+16>>1]=b[h+(g*48|0)+16>>1]|0;Y=h+(g*48|0)+22|0;a[Y>>0]=(a[Y>>0]|0)+1<<24>>24;Y=h+(g*48|0)+20|0;b[Y>>1]=e[Y>>1]|8;Y=h+(g*48|0)+40|0;Z=c[Y+4>>2]|0;_=h+(_*48|0)+40|0;c[_>>2]=c[Y>>2];c[_+4>>2]=Z;h=h+(g*48|0)|0}g=h+32|0;Z=g;_=c[Z+4>>2]|P;c[g>>2]=c[Z>>2]|O;c[g+4>>2]=_}while(0);return}function Bu(a,d,e,f,g,h,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0;m=i;i=i+112|0;if((i|0)>=(j|0))ba();l=m;h=zv(l,a,d,e,h,k)|0;a:do if(!h)h=0;else{k=h;h=0;do{d=k+32|0;e=c[d>>2]|0;d=c[d+4>>2]|0;if((e&f|0)==0&(d&g|0)==0){if((e|0)==0&(d|0)==0?(b[k+18>>1]&2)!=0:0){h=k;break a}h=(h|0)==0?k:h}k=Av(l)|0}while((k|0)!=0)}while(0);i=m;return h|0}function Cu(e,f,g){e=e|0;f=f|0;g=g|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,aa=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;la=i;i=i+16|0;if((i|0)>=(j|0))ba();ia=la;v=c[e>>2]|0;ga=c[v>>2]|0;ja=c[ga>>2]|0;fa=c[e+4>>2]|0;ha=c[e+12>>2]|0;u=d[ha+16>>0]|0;v=c[v+4>>2]|0;da=c[v+(u*72|0)+24>>2]|0;x=c[e+8>>2]|0;ea=fa+20|0;fa=fa+12|0;l=c[fa>>2]|0;if((l|0)>0){n=c[v+(u*72|0)+48>>2]|0;o=0;m=0;p=c[ea>>2]|0;while(1){if((c[p+8>>2]|0)==(n|0))m=((b[p+18>>1]&-1153)<<16>>16!=0&1)+m|0;o=o+1|0;if((o|0)==(l|0))break;else p=p+48|0}}else m=0;if(!x)t=0;else{r=c[x>>2]|0;a:do if((r|0)>0){p=c[x+4>>2]|0;o=v+(u*72|0)+48|0;q=0;while(1){n=c[p+(q*20|0)>>2]|0;if((a[n>>0]|0)!=-102){l=q;break a}l=q+1|0;if((c[n+28>>2]|0)!=(c[o>>2]|0)){l=q;break a}if((l|0)<(r|0))q=l;else break}}else l=0;while(0);t=(l|0)==(r|0)?r:0}l=(m*20|0)+56+(t<<3)|0;ca=ih(ja,l,0)|0;do if(!ca){ph(ga,15776,ia);l=7}else{bw(ca|0,0,l|0)|0;l=ca+56|0;s=l+(m*12|0)|0;c[ca>>2]=m;Y=ca+8|0;c[Y>>2]=t;_=ca+4|0;c[_>>2]=l;c[ca+12>>2]=s;aa=ca+16|0;c[aa>>2]=s+(t<<3);n=c[fa>>2]|0;if((n|0)>0){q=c[v+(u*72|0)+48>>2]|0;p=0;r=0;o=c[ea>>2]|0;while(1){if((c[o+8>>2]|0)==(q|0)?(y=b[o+18>>1]|0,(y&-1153)<<16>>16!=0):0){c[l+(r*12|0)>>2]=c[o+12>>2];c[l+(r*12|0)+8>>2]=p;a[l+(r*12|0)+4>>0]=(y&255)==1?2:y&255;r=r+1|0}p=p+1|0;if((p|0)==(n|0))break;else o=o+48|0}}if((t|0)>0){l=c[x+4>>2]|0;m=0;do{c[s+(m<<3)>>2]=b[(c[l+(m*20|0)>>2]|0)+32>>1];a[s+(m<<3)+4>>0]=a[l+(m*20|0)+12>>0]|0;m=m+1|0}while((m|0)!=(t|0))}A=ha;c[A>>2]=0;c[A+4>>2]=0;A=ha+18|0;b[A>>1]=0;c[ha+36>>2]=1024;B=ha+40|0;b[B>>1]=0;D=ha+28|0;a[D>>0]=0;E=c[aa>>2]|0;F=c[ca>>2]|0;if(Ju(ja,ha,F)|0){ig(ja,ca);l=7;break}W=ca+28|0;X=ca+24|0;G=ca+20|0;H=ca+32|0;I=ca+40|0;J=ca+48|0;K=da+60|0;L=ga+64|0;O=(F|0)>0;P=ha+30|0;Q=ha+24|0;R=ha+32|0;S=ha+29|0;T=ha+20|0;U=ha+22|0;V=ha+48|0;v=0;y=0;x=0;b:while(1){if(!((y|0)!=0|(v&1|0)==0))if((v|0)>2){l=0;break}else z=v+1|0;else z=v;if((x|0)==0&(z|0)>1){l=0;break}p=c[ca>>2]|0;if((p|0)>0){m=c[ea>>2]|0;n=0;o=c[_>>2]|0;while(1){v=c[o+8>>2]|0;if(!z){l=o+5|0;a[l>>0]=0;u=(b[m+(v*48|0)+18>>1]&1)==0;y=u?y:1;v=m+(v*48|0)+32|0;v=(c[v>>2]|0)!=0|(c[v+4>>2]|0)!=0;if(v|u^1)x=v?1:x;else a[l>>0]=1}else if((z|0)==1){u=m+(v*48|0)+32|0;a[o+5>>0]=(c[u>>2]|0)==0&(c[u+4>>2]|0)==0&1}else if((z|0)==2)a[o+5>>0]=b[m+(v*48|0)+18>>1]&1^1;else a[o+5>>0]=1;n=n+1|0;if((n|0)>=(p|0)){u=y;break}else o=o+12|0}}else u=y;bw(E|0,0,p<<3|0)|0;if(c[W>>2]|0)Sc(c[X>>2]|0);c[G+0>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;h[I>>3]=5.e+98;l=J;c[l>>2]=25;c[l+4>>2]=0;l=c[ga>>2]|0;v=K;while(1){v=c[v>>2]|0;if((c[v>>2]|0)==(l|0))break;else v=v+24|0}y=c[v+8>>2]|0;v=nc[c[(c[y>>2]|0)+12>>2]&127](y,ca)|0;do if((v|0)==7)a[(c[ga>>2]|0)+65>>0]=1;else if(v){l=c[y+8>>2]|0;if(l){c[ia>>2]=l;ph(ga,10344,ia);break}if((v|0)!=516){v=v&255;if(v>>>0>26|(v|0)==2)v=16328;else v=c[15488+(v<<2)>>2]|0}else v=16344;c[ia>>2]=v;ph(ga,10344,ia)}while(0);v=y+8|0;Sc(c[v>>2]|0);c[v>>2]=0;v=c[ca>>2]|0;if((v|0)>0){l=0;do{if((a[(c[_>>2]|0)+(l*12|0)+5>>0]|0)==0?(c[(c[aa>>2]|0)+(l<<3)>>2]|0)>0:0){c[ia>>2]=c[da>>2];ph(ga,34096,ia);v=c[ca>>2]|0}l=l+1|0}while((l|0)<(v|0))}l=c[L>>2]|0;if(l)break;y=c[_>>2]|0;t=ha;c[t>>2]=f;c[t+4>>2]=g;c:do if(O){v=0;do{c[(c[V>>2]|0)+(v<<2)>>2]=0;v=v+1|0}while((v|0)!=(F|0));b[P>>1]=0;if(O){n=f;m=g;l=0;t=0;v=-1;while(1){p=c[E+(t<<3)>>2]|0;q=p+-1|0;do if((p|0)>0){r=c[y+8>>2]|0;if((p|0)>(F|0)|(r|0)<0){ka=65;break b}if((r|0)>=(c[fa>>2]|0)){ka=65;break b}o=(c[V>>2]|0)+(q<<2)|0;if(c[o>>2]|0){ka=65;break b}s=c[ea>>2]|0;ma=s+(r*48|0)+32|0;n=n|c[ma>>2];m=m|c[ma+4>>2];ma=ha;c[ma>>2]=n;c[ma+4>>2]=m;c[o>>2]=s+(r*48|0);v=(q|0)>(v|0)?q:v;do if((p|0)<17){if(!(a[E+(t<<3)+4>>0]|0))break;l=(l&65535|1<>1]=l}while(0);if(!(b[s+(r*48|0)+18>>1]&1))break;if(!(a[E+(t<<3)+4>>0]|0))break c;c[H>>2]=0}while(0);t=t+1|0;if((t|0)>=(F|0)){ka=73;break}else y=y+12|0}}else{v=-1;ka=73}}else{b[P>>1]=0;v=-1;ka=73}while(0);if((ka|0)==73){ka=0;b[B>>1]=v+1;c[Q>>2]=c[G>>2];a[D>>0]=c[W>>2];c[W>>2]=0;c[R>>2]=c[X>>2];if(!(c[H>>2]|0))v=0;else v=c[Y>>2]&255;a[S>>0]=v;b[A>>1]=0;w=+h[I>>3];h[k>>3]=w;v=c[k>>2]|0;l=c[k+4>>2]|0;do if(!(w<=1.0))if(!(w<=2.0e9)){v=iw(v|0,l|0,52)|0;v=fw(v|0,C|0,64514,0)|0;v=(v<<16>>16)*10&65535;break}else{v=bs(~~w>>>0,+N(w)>=1.0?(w>0.0?~~+$(+M(w/4294967296.0),4294967295.0)>>>0:~~+Z((w-+(~~w>>>0))/4294967296.0)>>>0):0)|0;break}else v=0;while(0);b[T>>1]=v;t=J;b[U>>1]=bs(c[t>>2]|0,c[t+4>>2]|0)|0;Bv(e,ha)|0;if(a[D>>0]|0){Sc(c[R>>2]|0);a[D>>0]=0}}v=z+1|0;if((v|0)>=4){l=0;break}else y=u}if((ka|0)==65){c[ia>>2]=c[da>>2];ph(ga,34064,ia);l=1}if(c[W>>2]|0)Sc(c[X>>2]|0);ig(ja,ca)}while(0);i=la;return l|0}function Du(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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,ca=0,da=0;da=i;i=i+64|0;if((i|0)>=(j|0))ba();p=da;o=da+56|0;n=da+52|0;b[n>>1]=-1;$=c[f+12>>2]|0;aa=c[f>>2]|0;G=c[aa+4>>2]|0;H=d[$+16>>0]|0;W=G+(H*72|0)+8|0;m=G+(H*72|0)+24|0;I=c[m>>2]|0;X=c[f+4>>2]|0;Y=G+(H*72|0)+76|0;k=c[Y>>2]|0;do if(!k){if(a[I+44>>0]&32){p=c[I+8>>2]|0;break}k=p+0|0;l=k+52|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));b[p+46>>1]=1;b[p+48>>1]=1;c[p+4>>2]=n;c[p+8>>2]=o;a[p+50>>0]=5;c[p+12>>2]=I;b[p+44>>1]=b[I+42>>1]|0;b[o>>1]=b[I+28>>1]|0;b[o+2>>1]=0;if(!(a[G+(H*72|0)+45>>0]&1))c[p+20>>2]=c[(c[m>>2]|0)+8>>2]}else p=k;while(0);o=b[I+28>>1]|0;if(o<<16>>16<11)B=0;else{B=o<<16>>16;B=((bs(B,((B|0)<0)<<31>>31)|0)&65535)+65503&65535}if(((((((c[f+16>>2]|0)==0?(b[aa+34>>1]&128)==0:0)?(c[(c[c[aa>>2]>>2]|0)+24>>2]&1048576|0)!=0:0)?(c[Y>>2]|0)==0:0)?(q=a[G+(H*72|0)+45>>0]|0,(q&5)==0):0)?(F=I+44|0,(q&10|a[F>>0]&32)<<24>>24==0):0)?(D=c[X+20>>2]|0,V=c[X+12>>2]|0,E=D+(V*48|0)|0,(V|0)>0):0){v=$+8|0;w=$+24|0;x=$+42|0;y=$+28|0;z=$+40|0;A=$+48|0;r=(B&65535)+(o&65535)|0;n=r+4&65535;m=$+18|0;l=I+12|0;r=r+28&65535;s=$+22|0;t=$+20|0;u=$+36|0;o=D;do{q=o+32|0;V=q;U=v;if(((c[U>>2]&c[V>>2]|0)==0?(c[U+4>>2]&c[V+4>>2]|0)==0:0)?(Iu(o,W,0,0)|0)!=0:0){b[w>>1]=1;b[x>>1]=0;c[y>>2]=0;b[z>>1]=1;c[c[A>>2]>>2]=o;b[m>>1]=n;if((c[l>>2]|0)==0?(a[F>>0]&2)==0:0)b[m>>1]=r;b[s>>1]=43;b[t>>1]=Cv(B,43)|0;c[u>>2]=16384;U=q;V=c[U+4>>2]|h;k=$;c[k>>2]=c[U>>2]|g;c[k+4>>2]=V;k=Bv(f,$)|0}else k=0;o=o+48|0}while((k|0)==0&o>>>0>>0)}else k=0;V=$+36|0;a:do if((k|0)==0&(p|0)!=0){M=$+24|0;N=$+42|0;O=$+40|0;P=$+17|0;Q=$+18|0;R=$+22|0;S=$+28|0;T=G+(H*72|0)+48|0;U=$+20|0;K=G+(H*72|0)+64|0;L=I+42|0;t=I+44|0;s=aa+34|0;r=X+12|0;G=X+20|0;J=1;while(1){u=c[p+36>>2]|0;v=c[T>>2]|0;b:do if(u){k=c[r>>2]|0;if((k|0)>0){m=0;n=c[G>>2]|0;while(1){l=c[n>>2]|0;if(Dv(l,u,v)|0){if(!(c[l+4>>2]&1)){ca=32;break b}if((b[l+36>>1]|0)==(v|0)){ca=32;break b}}m=m+1|0;if((m|0)>=(k|0)){k=0;break}else n=n+48|0}}else k=0}else ca=32;while(0);if((ca|0)==32){ca=0;H=b[c[p+8>>2]>>1]|0;b[M>>1]=0;b[N>>1]=0;b[O>>1]=0;a[P>>0]=0;b[Q>>1]=0;I=$;c[I>>2]=g;c[I+4>>2]=h;b[R>>1]=H;c[S>>2]=p;I=p+51|0;w=a[I>>0]|0;c:do if(((w&4)==0?(Z=c[(c[f>>2]|0)+8>>2]|0,(Z|0)!=0):0)?(_=c[Z>>2]|0,(_|0)>0):0){F=c[Z+4>>2]|0;E=p+46|0;y=p+4|0;x=0;while(1){B=c[F+(x*20|0)>>2]|0;d:do if(!B)B=0;else while(1){A=c[B+4>>2]|0;if(!(A&4096))break d;if(!(A&262144))B=B+12|0;else B=c[(c[B+20>>2]|0)+4>>2]|0;B=c[B>>2]|0;if(!B){B=0;break}}while(0);if((a[B>>0]|0)!=-102){x=0;break c}if((c[B+28>>2]|0)==(v|0)){A=b[B+32>>1]|0;if(A<<16>>16<0){x=1;break c}B=b[E>>1]|0;if(B<<16>>16){z=c[y>>2]|0;B=B&65535;D=0;do{if(A<<16>>16==(b[z+(D<<1)>>1]|0)){x=1;break c}D=D+1|0}while((D|0)<(B|0))}}x=x+1|0;if((x|0)>=(_|0)){x=0;break}}}else x=0;while(0);do if((c[p+40>>2]|0)<1){c[V>>2]=256;a[P>>0]=(x|0)!=0?J&255:0;b[U>>1]=(H&65535)+16;Ev(X,$,H);k=Bv(f,$)|0;b[R>>1]=H;if(k)break a}else{if(!(w&32)){E=K;F=c[E>>2]|0;E=c[E+4>>2]|0;D=p+4|0;B=0;A=0;z=e[p+48>>1]|0;e:while(1){y=z;while(1){z=y+-1|0;if((y|0)<=0)break e;y=b[(c[D>>2]|0)+(z<<1)>>1]|0;if((y&65535)<63)break;else y=z}q=ew(1,0,y<<16>>16|0)|0;B=q|B;A=C|A}q=F&~B;u=E&~A;B=q;A=u;u=(q|0)==0&(u|0)==0?576:512}else{B=0;A=0;u=576}c[V>>2]=u;q=(x|0)!=0;if(!q?(a[t>>0]&32)==0:0){if(!((B|0)==0&(A|0)==0))break;if(a[I>>0]&4)break;if((b[p+44>>1]|0)>=(b[L>>1]|0))break;if(!((b[s>>1]&4)==0&(c[2190]|0)!=0))break;if(b[(c[c[aa>>2]>>2]|0)+60>>1]&64)break}a[P>>0]=q?J&255:0;o=H<<16>>16;q=o+1+(((b[p+44>>1]|0)*15|0)/(b[L>>1]|0)|0)&65535;if(!((B|0)==0&(A|0)==0))q=Cv(q,o+16&65535)|0;b[U>>1]=q;Ev(X,$,H);k=Bv(f,$)|0;b[R>>1]=H;if(k)break a}while(0);k=Fv(f,W,p,0)|0;if(c[Y>>2]|0)break a}p=c[p+20>>2]|0;if(!((k|0)==0&(p|0)!=0))break;else J=J+1|0}}while(0);i=da;return k|0}function Eu(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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,ca=0;$=i;i=i+608|0;if((i|0)>=(j|0))ba();Z=$+168|0;X=$+576|0;Y=$+112|0;V=$+56|0;W=$;k=c[f>>2]|0;S=c[f+4>>2]|0;o=c[S+20>>2]|0;n=c[S+12>>2]|0;U=o+(n*48|0)|0;R=c[f+12>>2]|0;l=Y+0|0;m=l+56|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));m=c[k+4>>2]|0;l=d[R+16>>0]|0;Q=c[m+(l*72|0)+48>>2]|0;a:do if((n|0)>0){A=R+8|0;B=X+8|0;C=X+16|0;D=R+40|0;E=R+48|0;F=R+36|0;G=R+18|0;H=R+17|0;I=R+24|0;J=R+20|0;K=R+22|0;L=Z+4|0;M=Z+8|0;N=Z+12|0;O=Z+20|0;P=X+4|0;w=m+(l*72|0)+24|0;x=W+8|0;y=Y+8|0;z=V+8|0;while(1){b:do if((b[o+18>>1]&256)!=0?(T=c[o+12>>2]|0,t=T+408|0,s=A,!((c[s>>2]&c[t>>2]|0)==0?(c[s+4>>2]&c[t+4>>2]|0)==0:0)):0){n=T+20|0;v=(c[n>>2]|0)+((c[T+12>>2]|0)*48|0)|0;c[X+0>>2]=c[f+0>>2];c[X+4>>2]=c[f+4>>2];c[X+8>>2]=c[f+8>>2];c[X+12>>2]=c[f+12>>2];c[B>>2]=0;c[C>>2]=V;n=c[n>>2]|0;c:do if(n>>>0>>0){l=1;k=0;d:while(1){if(!(b[n+18>>1]&512))if((c[n+8>>2]|0)==(Q|0)){c[Z>>2]=c[S>>2];c[L>>2]=S;a[M>>0]=72;c[N>>2]=1;c[O>>2]=n;m=Z;_=10}else m=l;else{m=c[n+12>>2]|0;_=10}do if((_|0)==10){_=0;c[P>>2]=m;b[V>>1]=0;if(!(a[(c[w>>2]|0)+44>>0]&16))k=Du(X,g,h)|0;else k=Cu(X,g,h)|0;if(!k)k=Eu(X,g,h)|0;m=b[V>>1]|0;if(!(m<<16>>16))break d;if(l){b[Y>>1]=m;gw(y|0,z|0,(m&65535)<<4|0)|0;m=0;break}t=b[Y>>1]|0;b[W>>1]=t;u=t&65535;gw(x|0,y|0,u<<4|0)|0;b[Y>>1]=0;if(!(t<<16>>16))m=0;else{t=0;do{if(!(m<<16>>16))m=0;else{p=W+(t<<4)+8|0;l=c[p>>2]|0;p=c[p+4>>2]|0;q=b[W+(t<<4)+16>>1]|0;r=b[W+(t<<4)+18>>1]|0;s=0;do{aa=V+(s<<4)+8|0;ca=c[aa>>2]|l;aa=c[aa+4>>2]|p;m=Cv(q,b[V+(s<<4)+16>>1]|0)|0;Gv(Y,ca,aa,m,Cv(r,b[V+(s<<4)+18>>1]|0)|0);s=s+1|0;m=b[V>>1]|0}while((s|0)<(m&65535|0))}t=t+1|0}while((t|0)<(u|0));m=0}}while(0);n=n+48|0;if(n>>>0>=v>>>0)break c;else l=m}b[Y>>1]=0}else k=0;while(0);b[D>>1]=1;c[c[E>>2]>>2]=o;c[F>>2]=8192;b[G>>1]=0;a[H>>0]=0;c[I+0>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;if(k)break a;n=e[Y>>1]|0;m=0;while(1){if((m|0)>=(n|0))break b;b[J>>1]=(e[Y+(m<<4)+16>>1]|0)+1;b[K>>1]=b[Y+(m<<4)+18>>1]|0;s=Y+(m<<4)+8|0;t=c[s+4>>2]|0;k=R;c[k>>2]=c[s>>2];c[k+4>>2]=t;k=Bv(f,R)|0;if(!k)m=m+1|0;else break a}}while(0);o=o+48|0;if(o>>>0>=U>>>0){k=0;break}}}else k=0;while(0);i=$;return k|0}function Fu(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=d+48|0;f=c[e>>2]|0;g=d+56|0;if((f|0)!=(g|0))ig(a,f);Hv(a,d);c[e>>2]=g;b[d+40>>1]=0;b[d+44>>1]=3;c[d+36>>2]=0;return}function Gu(d,f){d=d|0;f=f|0;var g=0,h=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,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,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=i;i=i+32|0;if((i|0)>=(j|0))ba();ca=la+24|0;Z=la+16|0;fa=la+8|0;ka=la;aa=c[d>>2]|0;ha=c[aa>>2]|0;o=a[d+41>>0]|0;ia=o&255;if((o&255)<2)V=1;else V=o<<24>>24==2?5:10;ja=d+8|0;l=c[ja>>2]|0;da=f<<16>>16==0;if((l|0)==0|da)U=0;else U=c[l>>2]|0;m=U<<1;ga=m+(_((ia<<3)+64|0,V)|0)|0;ga=ih(ha,ga,((ga|0)<0)<<31>>31)|0;do if(ga){l=ga+(V<<5)|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;c[l+24>>2]=0;c[l+28>>2]=0;g=V<<1;n=_(V,-2)|0;n=ga+((_((((n|0)>-1?n:1073741823)+(V<<1)<<2)+4|0,ia)|0)+(V<<6))|0;k=g;h=ga;g=ga+(g<<5)|0;while(1){c[h+24>>2]=g;k=k+-1|0;if((k|0)<=0)break;else{h=h+32|0;g=g+(ia<<2)|0}}k=(U|0)!=0;if(k)bw(n|0,0,m|0)|0;else n=0;T=c[aa+424>>2]|0;b[ga+(V<<5)+16>>1]=T>>>0<48?T&65535:48;if(k)a[ga+(V<<5)+22>>0]=o<<24>>24!=0?-1:U&255;T=o<<24>>24==0;if(!T){P=d+16|0;Q=d+34|0;R=f<<16>>16<11;S=(f&65535)+16|0;M=f<<16>>16;N=((M|0)<0)<<31>>31;O=V>>>0>1;g=ga;L=0;m=0;o=0;f=0;h=1;while(1){if((h|0)>0){G=L&65535;H=L<<2;I=g+18|0;J=g+16|0;K=0;k=0;F=l;while(1){p=c[P>>2]|0;if(p){A=F+22|0;B=F+16|0;C=F+20|0;D=F+24|0;E=F+8|0;z=k;while(1){r=a[A>>0]|0;s=Z;c[s>>2]=0;c[s+4>>2]=0;s=p;k=F;q=c[k>>2]|0;k=c[k+4>>2]|0;a:do if(((c[s>>2]&~q|0)==0?(c[s+4>>2]&~k|0)==0:0)?(W=p+8|0,Y=W,X=c[Y>>2]|0,Y=c[Y+4>>2]|0,(X&q|0)==0&(Y&k|0)==0):0){v=e[B>>1]|0;x=Cv(b[p+18>>1]|0,v+(e[p+20>>1]|0)&65535)|0;x=Cv(x,b[C>>1]|0)|0;v=(e[p+22>>1]|0)+v|0;y=v&65535;u=X|q;s=Y|k;if(r<<24>>24<0)w=Iv(d,c[ja>>2]|0,F,b[Q>>1]|0,G,p,Z)|0;else{k=E;q=c[k+4>>2]|0;w=Z;c[w>>2]=c[k>>2];c[w+4>>2]=q;w=r}r=w<<24>>24;if(w<<24>>24>-1&(U|0)>(r|0)){t=n+(r<<1)|0;q=b[t>>1]|0;if(!(q<<16>>16)){r=((U-r|0)*100|0)/(U|0)|0;r=(bs(r,((r|0)<0)<<31>>31)|0)&65535;if(R)k=0;else k=((bs(M,N)|0)&65535)+65503&65535;r=S+(((r<<16)+-4325376|0)>>>16)+k|0;if(b[Q>>1]&1024)r=(r&65535)+16|0;q=r&65535;b[t>>1]=q}t=Cv(x,q)|0}else t=x;b:do if((z|0)>0){r=0;q=g;while(1){k=q;if(((c[k>>2]|0)==(u|0)?(c[k+4>>2]|0)==(s|0):0)?(a[q+22>>0]^w)<<24>>24>-1:0)break;r=r+1|0;if((r|0)>=(z|0)){$=35;break b}else q=q+32|0}k=b[q+18>>1]|0;if(k<<16>>16>16){k=z;break a}if(k<<16>>16!=t<<16>>16){k=z;break}if((b[q+16>>1]|0)>(v<<16>>16|0))k=z;else{k=z;break a}}else $=35;while(0);if(($|0)==35){$=0;q=(z|0)<(V|0);if(!q){if(t<<16>>16>m<<16>>16){k=z;break}if(!(t<<16>>16!=m<<16>>16?1:x<<16>>16>16)){k=z;break}}k=(q&1)+z|0;q=g+((q?z:o)<<5)|0}r=F;v=W;s=c[v+4>>2]|c[r+4>>2];u=q;c[u>>2]=c[v>>2]|c[r>>2];c[u+4>>2]=s;u=Z;s=c[u+4>>2]|0;r=q+8|0;c[r>>2]=c[u>>2];c[r+4>>2]=s;b[q+16>>1]=y;b[q+18>>1]=t;b[q+20>>1]=x;a[q+22>>0]=w;q=q+24|0;gw(c[q>>2]|0,c[D>>2]|0,H|0)|0;c[(c[q>>2]|0)+(L<<2)>>2]=p;if((k|0)<(V|0))break;m=b[I>>1]|0;f=b[J>>1]|0;if(O){s=g;t=1;r=m;o=0;q=f}else{o=0;break}while(1){m=b[s+50>>1]|0;do if(m<<16>>16<=r<<16>>16){if(m<<16>>16!=r<<16>>16){m=r;f=q;break}f=b[s+52>>1]|0;if(f<<16>>16>q<<16>>16)$=48;else{m=r;f=q}}else{f=b[s+52>>1]|0;$=48}while(0);s=s+32|0;if(($|0)==48){$=0;o=t}t=t+1|0;if((t|0)>=(V|0))break;else{r=m;q=f}}}else k=z;while(0);p=c[p+52>>2]|0;if(!p)break;else z=k}}K=K+1|0;if((K|0)==(h|0)){h=k;break}else F=F+32|0}}else h=0;L=L+1|0;if((L|0)>=(ia|0))break;else{K=g;g=l;l=K}}if(!h){ph(aa,34008,ca);ig(ha,ga);break}if((h|0)>1){k=1;l=g;do{if((b[l+18>>1]|0)>(b[g+(k<<5)+18>>1]|0))l=g+(k<<5)|0;k=k+1|0}while((k|0)!=(h|0))}else l=g;if(!T){h=d+4|0;k=c[l+24>>2]|0;g=0;do{$=c[k+(g<<2)>>2]|0;c[d+(g*80|0)+800>>2]=$;$=a[$+16>>0]|0;a[d+(g*80|0)+780>>0]=$;c[d+(g*80|0)+740>>2]=c[(c[h>>2]|0)+(($&255)*72|0)+48>>2];g=g+1|0}while((g|0)<(ia|0))}}h=d+34|0;if(((b[h>>1]&1536)==1024?(ea=d+40|0,!((a[ea>>0]|0)!=0|da)):0)?($=d+12|0,Z=ia+-1|0,Z=(Iv(d,c[$>>2]|0,l,512,Z&65535,c[(c[l+24>>2]|0)+(Z<<2)>>2]|0,fa)|0)<<24>>24,(Z|0)==(c[c[$>>2]>>2]|0)):0)a[ea>>0]=2;k=c[ja>>2]|0;if(k){g=b[h>>1]|0;h=a[l+22>>0]|0;if(g&512){if((h<<24>>24|0)==(c[k>>2]|0))a[d+40>>0]=2}else{a[d+36>>0]=h<<24>>24<0?0:h;Y=l+8|0;Z=c[Y+4>>2]|0;$=d+24|0;c[$>>2]=c[Y>>2];c[$+4>>2]=Z}if(((g&2048)!=0?(a[d+36>>0]|0)==(c[k>>2]|0):0)?($=ka,c[$>>2]=0,c[$+4>>2]=0,$=ia+-1|0,$=(Iv(d,k,l,0,$&65535,c[(c[l+24>>2]|0)+($<<2)>>2]|0,ka)|0)<<24>>24,($|0)==(c[c[ja>>2]>>2]|0)):0){a[d+37>>0]=1;Y=ka;Z=c[Y+4>>2]|0;$=d+24|0;c[$>>2]=c[Y>>2];c[$+4>>2]=Z}}b[d+32>>1]=b[l+16>>1]|0;ig(ha,ga)}while(0);i=la;return}function Hu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((b|0)!=0?(g=c[b>>2]|0,(g|0)>0):0){e=c[b+4>>2]|0;d=0;b=0;f=0;do{h=wv(a,c[e+(f*20|0)>>2]|0)|0;d=h|d;b=C|b;f=f+1|0}while((f|0)<(g|0))}else{b=0;d=0}C=b;return d|0}function Iu(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;do if((((c[d+8>>2]|0)==(c[e+40>>2]|0)?(b[d+18>>1]&2)!=0:0)?(i=d+32|0,(c[i>>2]&f|0)==0?(c[i+4>>2]&g|0)==0:0):0)?(h=c[d+12>>2]|0,(h|0)>=0):0){f=a[(c[(c[e+16>>2]|0)+4>>2]|0)+(h*24|0)+21>>0]|0;g=(jv(c[d>>2]|0)|0)<<24>>24;if((g|0)==65){g=1;break}else if((g|0)==66){g=f<<24>>24==66&1;break}else{g=f<<24>>24>66&1;break}}else g=0;while(0);return g|0}function Ju(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=d+44|0;if((e[j>>1]|0|0)<(f|0)){g=f+7&-8;h=ih(a,g<<2,0)|0;if(!h)f=7;else{i=d+48|0;gw(h|0,c[i>>2]|0,(e[j>>1]|0)<<2|0)|0;f=c[i>>2]|0;if((f|0)!=(d+56|0))ig(a,f);c[i>>2]=h;b[j>>1]=g;f=0}}else f=0;return f|0}function Ku(a,b,d){a=a|0;b=b|0;d=d|0;do if(!(c[b+4>>2]&256)){if((d|0)!=0?(c[d+4>>2]&256|0)!=0:0){b=_t(a,d)|0;break}b=_t(a,b)|0;if(!b)b=_t(a,d)|0}else b=_t(a,b)|0;while(0);return b|0}function Lu(e,f,g,h,k,l){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var 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;y=i;i=i+144|0;if((i|0)>=(j|0))ba();t=y;x=y+8|0;o=y+36|0;if(((a[e+450>>0]|0)==2?(q=d[g+44>>0]|0,w=c[e+8>>2]|0,n=c[e>>2]|0,v=c[e+464>>2]|0,s=c[g+64>>2]|0,u=s+36|0,r=c[u>>2]|0,(r&8192|0)==0):0)?(m=l&65535,(m&64|0)==0):0){l=r&48;do if(!l){if((r&1024|0)==0?(b[s+24>>1]|0)!=0:0){p=1;break}p=(m&3|0)!=0}else p=1;while(0);c[x+4>>2]=o;c[x+8>>2]=o;c[x+12>>2]=0;c[x+16>>2]=100;c[x+20>>2]=1e9;a[x+24>>0]=1;a[x+25>>0]=0;c[x>>2]=n;e=p?33576:33584;g=e;while(1)if(!(a[g>>0]|0))break;else g=g+1|0;Ok(x,e,g-e&1073741823);if(!(c[f+(q*72|0)+28>>2]|0)){c[t>>2]=c[f+(q*72|0)+16>>2];An(x,0,33608,t)}else{c[t>>2]=d[f+(q*72|0)+46>>0];An(x,0,33592,t)}e=c[f+(q*72|0)+20>>2]|0;if(e){c[t>>2]=e;An(x,0,33624,t)}do if(!(r&1280)){m=s+28|0;g=c[m>>2]|0;l=f+(q*72|0)+24|0;if((a[(c[l>>2]|0)+44>>0]&32)!=0?(a[g+51>>0]&3)==2:0)if(p)e=33632;else break;else if(!(r&131072))if(!(r&16384))e=(r&64|0)==0?33744:33720;else e=33688;else e=33648;Ok(x,33760,7);c[t>>2]=c[g>>2];An(x,0,e,t);r=b[s+24>>1]|0;p=c[(c[l>>2]|0)+4>>2]|0;o=c[(c[m>>2]|0)+4>>2]|0;g=r&65535;if(!(r<<16>>16)){if(!(c[u>>2]&48))break;Ok(x,33904,2);m=0}else{l=b[s+42>>1]|0;Ok(x,33904,2);l=l&65535;m=0;do{e=b[o+(m<<1)>>1]|0;if(e<<16>>16<0)e=20456;else e=c[p+((e<<16>>16)*24|0)>>2]|0;if((m|0)<(l|0)){if(m)Ok(x,33920,5);c[t>>2]=e;An(x,0,33928,t)}else Jv(x,m,e,33912);m=m+1|0}while((m|0)<(g|0));m=g>>>0>1?g:1}l=c[u>>2]|0;if(!(l&32))e=m;else{l=b[o+(m<<1)>>1]|0;if(l<<16>>16<0)l=20456;else l=c[p+((l<<16>>16)*24|0)>>2]|0;Jv(x,m,l,33936);l=c[u>>2]|0;e=m+1|0}if(l&16){m=b[o+(m<<1)>>1]|0;if(m<<16>>16<0)m=20456;else m=c[p+((m<<16>>16)*24|0)>>2]|0;Jv(x,e,m,33944)}Ok(x,33952,1)}else{if((r&256|0)==0|(r&15|0)==0){if(!(r&1024))break;r=c[s+32>>2]|0;c[t>>2]=c[s+24>>2];c[t+4>>2]=r;An(x,0,33872,t);break}if(!(r&5))if((l|0)==48)l=33784;else l=(r&32|0)==0?33824:33808;else l=33768;Ok(x,33840,27);m=l;while(1)if(!(a[m>>0]|0))break;else m=m+1|0;Ok(x,l,m-l&1073741823)}while(0);r=pg(x)|0;th(w,sh(w,157,v,h,k)|0,r,-1)}i=y;return}function Mu(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=c[d>>2]|0;n=c[b+8>>2]|0;i=a[l>>0]|0;do if(i<<24>>24==79)h=es(b,c[l+16>>2]|0,h)|0;else if(i<<24>>24==76)sh(n,28,0,h,0)|0;else{j=c[e+64>>2]|0;i=j+36|0;if(((c[i>>2]&1024|0)==0?(k=c[j+28>>2]|0,(k|0)!=0):0)?(a[(c[k+28>>2]|0)+f>>0]|0)!=0:0)g=(g|0)==0&1;m=iv(b,l,4,0)|0;if((m|0)==4)g=(g|0)==0&1;l=c[l+28>>2]|0;f=(g|0)!=0;sh(n,f?105:108,l,0,0)|0;c[i>>2]=c[i>>2]|2048;k=e+56|0;i=c[k>>2]|0;if(!i){c[e+16>>2]=ts(n)|0;i=c[k>>2]|0}j=i+1|0;c[k>>2]=j;i=e+60|0;j=Sl(c[b>>2]|0,c[i>>2]|0,j*12|0,0)|0;c[i>>2]=j;if(!j){c[k>>2]=0;break}i=(c[k>>2]|0)+-1|0;c[j+(i*12|0)>>2]=l;if((m|0)==1)g=sh(n,103,l,h,0)|0;else g=sh(n,47,l,0,h)|0;c[j+(i*12|0)+4>>2]=g;a[j+(i*12|0)+8>>0]=f?6:7;sh(n,76,h,0,0)|0}while(0);Nu(e,d);return h|0}function Nu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a:do if(e){i=d+72|0;h=0;while(1){f=e+20|0;g=b[f>>1]|0;if(g&4)break a;if((c[d>>2]|0)!=0?(c[(c[e>>2]|0)+4>>2]&1|0)==0:0)break a;j=i;k=e+40|0;if(!((c[k>>2]&c[j>>2]|0)==0?(c[k+4>>2]&c[j+4>>2]|0)==0:0))break a;g=g&65535;b[f>>1]=g|((h|0)==0|(g&1024|0)==0?4:512);g=c[e+4>>2]|0;if((g|0)<0)break a;e=c[(c[e+24>>2]|0)+20>>2]|0;j=e+(g*48|0)+22|0;f=(a[j>>0]|0)+-1<<24>>24;a[j>>0]=f;if(f<<24>>24)break a;e=e+(g*48|0)|0;if(!e)break;else h=h+1|0}}while(0);return}function Ou(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;do if(!(b[(c[d>>2]|0)+60>>1]&2)){k=d+116|0;j=0;h=k;while(1){i=h+12|0;if(!(c[i>>2]|0)){n=4;break}j=j+1|0;if((j|0)>=10){l=0;h=-1;m=2147483647;break}else h=h+20|0}if((n|0)==4){c[h+8>>2]=c[d+100>>2];c[h>>2]=e;b[h+4>>1]=f;c[i>>2]=g;a[h+6>>0]=0;g=d+104|0;e=c[g>>2]|0;c[g>>2]=e+1;c[h+16>>2]=e;break}while(1){j=c[k+16>>2]|0;i=(j|0)<(m|0);h=i?l:h;l=l+1|0;if((l|0)==10)break;else{m=i?j:m;k=k+20|0}}if((h|0)>-1){c[d+(h*20|0)+124>>2]=c[d+100>>2];c[d+(h*20|0)+116>>2]=e;b[d+(h*20|0)+120>>1]=f;c[d+(h*20|0)+128>>2]=g;a[d+(h*20|0)+122>>0]=0;g=d+104|0;e=c[g>>2]|0;c[g>>2]=e+1;c[d+(h*20|0)+132>>2]=e}}while(0);return}function Pu(d,e,f,g,h){d=d|0;e=e|0;f=f|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,t=0;r=c[d+8>>2]|0;m=c[e+64>>2]|0;n=b[m+24>>1]|0;p=b[m+42>>1]|0;t=c[m+28>>2]|0;q=d+72|0;l=c[q>>2]|0;i=l+1|0;s=n&65535;o=s+g|0;c[q>>2]=l+o;q=c[d>>2]|0;t=gh(q,kt(r,t)|0)|0;q=(t|0)!=0;if(!q)a[(c[d>>2]|0)+65>>0]=1;if(p<<16>>16){g=c[e+8>>2]|0;j=(f|0)!=0;sh(r,j?105:108,g,0,0)|0;k=sh(r,16,0,0,0)|0;l=p&65535;j=sh(r,j?62:65,g,0,i)|0;th(r,j,l,-14);c[e+20>>2]=j;j=c[r+32>>2]|0;if(j>>>0>k>>>0)c[(c[r+4>>2]|0)+(k*20|0)+8>>2]=j;c[(c[r+24>>2]|0)+88>>2]=j+-1;k=0;do{sh(r,47,g,k,k+i|0)|0;k=k+1|0}while((k|0)<(l|0))}if((p&65535)<(n&65535)){m=m+48|0;l=e+12|0;n=(o|0)==1;o=p&65535;k=i;while(1){j=c[(c[m>>2]|0)+(o<<2)>>2]|0;g=o+k|0;i=Mu(d,j,e,o,f,g)|0;do if((i|0)!=(g|0))if(n){Wr(d,k);break}else{sh(r,34,i,g,0)|0;i=k;break}else i=k;while(0);if(!(b[j+18>>1]&129)){g=c[(c[j>>2]|0)+16>>2]|0;if(Qu(g)|0)sh(r,76,i+o|0,c[l>>2]|0,0)|0;if(q){j=t+o|0;if((xu(g,a[j>>0]|0)|0)<<24>>24==65){a[j>>0]=65;k=65}else k=a[j>>0]|0;if(Ru(g,k)|0)a[j>>0]=65}}o=o+1|0;if((o|0)>=(s|0))break;else k=i}}c[h>>2]=t;return i|0}function Qu(d){d=d|0;var e=0;e=a[d>>0]|0;if((e+99&255)<2)do{d=c[d+12>>2]|0;e=a[d>>0]|0}while((e+99&255)<2);if(e<<24>>24==-97)e=a[d+38>>0]|0;switch(e&255|0){case 134:case 133:case 97:case 132:{d=0;break}case 154:{if(!(c[d+4>>2]&1048576)){e=b[d+32>>1]|0;if(e<<16>>16>-1)d=(a[(c[(c[d+44>>2]|0)+4>>2]|0)+((e<<16>>16)*24|0)+20>>0]|0)==0;else d=0}else d=1;d=d&1;break}default:d=1}return d|0}function Ru(d,e){d=d|0;e=e|0;var f=0;a:do if(e<<24>>24==65)d=1;else{f=a[d>>0]|0;if((f+99&255)<2)do{d=c[d+12>>2]|0;f=a[d>>0]|0}while((f+99&255)<2);if(f<<24>>24==-97)f=a[d+38>>0]|0;switch(f&255|0){case 154:{if((b[d+32>>1]|0)<0)d=(e+-67&255)<2;else d=0;d=d&1;break a}case 97:{d=e<<24>>24==66&1;break a}case 132:{d=(e+-67&255)<2&1;break a}case 134:{d=1;break a}case 133:{d=(e<<24>>24==69|e<<24>>24==67)&1;break a}default:{d=0;break a}}}while(0);return d|0}function Su(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=c[b+8>>2]|0;do if(f){a:do if((e|0)>0)while(1){if((a[f>>0]|0)!=65){g=f;break a}e=e+-1|0;d=d+1|0;f=f+1|0;if((e|0)<=0){g=f;break}}else g=f;while(0);while(1){if((e|0)<=1){i=8;break}f=e+-1|0;if((a[g+f>>0]|0)==65)e=f;else break}if((i|0)==8)if((e|0)<=0)break;sh(h,48,d,e,0)|0;th(h,-1,g,e);$s(b,d,e)}while(0);return}function Tu(a,b){a=a|0;b=b|0;var d=0,e=0;if(b){Kv(b+328|0);e=b+16|0;d=c[e>>2]|0;if(d)do{c[e>>2]=c[d+52>>2];Fu(a,d);ig(a,d);d=c[e>>2]|0}while((d|0)!=0);ig(a,b)}return}function Uu(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+32|0;if((i|0)>=(j|0))ba();e=d;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e>>2]=80;c[e+4>>2]=81;c[e+24>>2]=a;ns(e,b)|0;i=d;return}function Vu(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();n=p+4|0;o=p;m=c[b+8>>2]|0;c[n>>2]=0;c[o>>2]=0;if(!((m|0)==0|(d|0)==0)){h=a[d>>0]|0;g=h&255;a:do switch(g|0){case 72:{l=ts(m)|0;ct(b,c[d+12>>2]|0,l,f^16);g=b+100|0;c[g>>2]=(c[g>>2]|0)+1;Vu(b,c[d+16>>2]|0,e,f);g=c[m+24>>2]|0;h=~l;if((l|0)<0?(k=c[g+112>>2]|0,(k|0)!=0):0)c[k+(h<<2)>>2]=c[m+32>>2];c[g+88>>2]=(c[m+32>>2]|0)+-1;Zt(b);break}case 71:{Vu(b,c[d+12>>2]|0,e,f);m=b+100|0;c[m>>2]=(c[m>>2]|0)+1;Vu(b,c[d+16>>2]|0,e,f);Zt(b);break}case 19:{ct(b,c[d+12>>2]|0,e,f);break}case 148:case 73:{f=d+12|0;l=Xt(b,c[f>>2]|0,n)|0;k=d+16|0;m=Xt(b,c[k>>2]|0,o)|0;Yt(b,c[f>>2]|0,c[k>>2]|0,h<<24>>24==73?79:78,l,m,e,128);break}case 75:{k=ts(m)|0;bu(b,d,k,(f|0)!=0?e:k);sh(m,16,0,e,0)|0;h=c[m+24>>2]|0;g=~k;if((k|0)<0?(l=c[h+112>>2]|0,(l|0)!=0):0)c[l+(g<<2)>>2]=c[m+32>>2];c[h+88>>2]=(c[m+32>>2]|0)+-1;break}case 79:case 78:case 83:case 80:case 81:case 82:{h=d+12|0;l=Xt(b,c[h>>2]|0,n)|0;k=d+16|0;m=Xt(b,c[k>>2]|0,o)|0;Yt(b,c[h>>2]|0,c[k>>2]|0,g,l,m,e,f);break}case 77:case 76:{sh(m,g,Xt(b,c[d+12>>2]|0,n)|0,e,0)|0;break}case 74:{Wu(b,d,e,1,f);break}default:{if(Xu(d)|0){sh(m,16,0,e,0)|0;break a}if(!(iu(d)|0))sh(m,45,Xt(b,d,n)|0,e,(f|0)!=0&1)|0}}while(0);Wr(b,c[n>>2]|0);Wr(b,c[o>>2]|0)}i=p;return}function Wu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;i=i+208|0;if((i|0)>=(j|0))ba();l=p+152|0;h=p+104|0;k=p+56|0;m=p+8|0;n=p;c[n>>2]=0;o=m+0|0;q=(c[d+12>>2]|0)+0|0;r=o+48|0;do{c[o>>2]=c[q>>2];o=o+4|0;q=q+4|0}while((o|0)<(r|0));a[l>>0]=72;c[l+12>>2]=h;c[l+16>>2]=k;a[h>>0]=83;c[h+12>>2]=m;d=c[(c[d+20>>2]|0)+4>>2]|0;c[h+16>>2]=c[d>>2];a[k>>0]=81;c[k+12>>2]=m;c[k+16>>2]=c[d+20>>2];d=Xt(b,m,n)|0;a[m+38>>0]=a[m>>0]|0;a[m>>0]=-97;c[m+28>>2]=d;d=m+4|0;c[d>>2]=c[d>>2]&-4097;if(!f)ct(b,l,e,g);else Vu(b,l,e,g);Wr(b,c[n>>2]|0);i=p;return}function Xu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();b=d;c[b>>2]=0;if((c[a+4>>2]&1|0)==0?(Is(a,b)|0)!=0:0)a=(c[b>>2]|0)!=0&1;else a=0;i=d;return a|0}function Yu(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if(!((a|0)==0|(b|0)==0)){e=c[b>>2]|0;if((e|0)>0){b=c[b+4>>2]|0;d=0;while(1){if((sv(a,c[b+(d*20|0)+4>>2]|0)|0)>-1){b=1;break a}d=d+1|0;if((d|0)>=(e|0)){b=0;break}}}else b=0}else b=1;while(0);return b|0}function Zu(d,e,f,g){d=d|0;e=e|0;f=f|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;m=c[e+20>>2]|0;a:do if((m|0)>0){n=b[d+38>>1]|0;o=n<<16>>16>0;p=d+4|0;l=d+36|0;i=(g|0)!=0;j=0;while(1){g=c[e+(j<<3)+40>>2]|0;if(o){d=(g|0)==0;k=0;do{if(!((c[f+(k<<2)>>2]|0)<=-1?!((k|0)==(b[l>>1]|0)&i):0))q=7;do if((q|0)==7){q=0;h=c[p>>2]|0;if(d)if(!(a[h+(k*24|0)+23>>0]&1))break;else{d=1;break a}else if(!($c(c[h+(k*24|0)>>2]|0,g)|0)){d=1;break a}else break}while(0);k=k+1|0}while((k|0)<(n<<16>>16|0))}j=j+1|0;if((j|0)>=(m|0)){d=0;break}}}else d=0;while(0);return d|0}function _u(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;v=i;i=i+48|0;if((i|0)>=(j|0))ba();m=v;q=v+8|0;u=c[b+408>>2]|0;u=(u|0)==0?b:u;l=u+528|0;g=c[l>>2]|0;a:do if(!g)k=5;else while(1){if((c[g>>2]|0)==(d|0)?(c[g+12>>2]|0)==(f|0):0)break a;g=c[g+4>>2]|0;if(!g){k=5;break}}while(0);do if((k|0)==5){s=c[b>>2]|0;g=ih(s,24,0)|0;if(g){k=g+0|0;h=k+24|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(h|0));c[g+4>>2]=c[l>>2];c[l>>2]=g;r=ih(s,28,0)|0;if(!r){c[g+8>>2]=0;g=0;break}k=r+0|0;h=k+24|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(h|0));c[g+8>>2]=r;n=(c[u+8>>2]|0)+192|0;c[r+24>>2]=c[n>>2];c[n>>2]=r;c[g>>2]=d;c[g+12>>2]=f;n=g+16|0;c[n>>2]=-1;o=g+20|0;c[o>>2]=-1;p=ih(s,536,0)|0;if(p){bw(p|0,0,536)|0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q+28>>2]=0;c[q>>2]=p;c[p>>2]=s;c[p+412>>2]=e;c[p+408>>2]=u;c[p+492>>2]=c[d>>2];a[p+436>>0]=a[d+8>>0]|0;c[p+424>>2]=c[b+424>>2];e=Kq(p)|0;if(e){c[m>>2]=c[d>>2];th(e,-1,qh(s,34152,m)|0,-1);k=c[d+12>>2]|0;if(!k)l=0;else{h=Ir(s,k,0,0)|0;if((hs(q,h)|0)==0?(a[s+65>>0]|0)==0:0){k=ts(e)|0;ct(p,h,k,16)}else k=0;Ck(s,h);l=k}Lv(p,c[d+28>>2]|0,f);if(l){k=c[e+24>>2]|0;h=~l;if((l|0)<0?(t=c[k+112>>2]|0,(t|0)!=0):0)c[t+(h<<2)>>2]=c[e+32>>2];c[k+88>>2]=(c[e+32>>2]|0)+-1}sh(e,24,0,0,0)|0;h=b+64|0;k=c[p+4>>2]|0;if(!(c[h>>2]|0)){c[b+4>>2]=k;c[h>>2]=c[p+64>>2]}else ig(c[p>>2]|0,k);if(!(a[s+65>>0]|0)){m=e+4|0;q=c[m>>2]|0;Fn(e,u+392|0);c[r+4>>2]=c[e+32>>2];c[m>>2]=0;c[r>>2]=q}c[r+8>>2]=c[p+72>>2];c[r+12>>2]=c[p+68>>2];c[r+16>>2]=c[p+80>>2];c[r+20>>2]=d;c[n>>2]=c[p+428>>2];c[o>>2]=c[p+432>>2];Ll(e)}yh(p);ig(s,p)}else g=0}else g=0}while(0);i=v;return g|0}function $u(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=Kq(b)|0;e=_u(b,d,e,g)|0;if(e){if(!(c[d>>2]|0))g=0;else g=((c[(c[b>>2]|0)+24>>2]|0)>>>18&1^1)&255;b=b+72|0;d=(c[b>>2]|0)+1|0;c[b>>2]=d;sh(i,131,f,h,d)|0;th(i,-1,c[e+8>>2]|0,-18);e=c[i+4>>2]|0;if(e)a[e+(((c[i+32>>2]|0)+-1|0)*20|0)+3>>0]=g}return}function av(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;f=c[a>>2]|0;h=c[(c[f+16>>2]|0)+(e<<4)>>2]|0;g=gc[c[f+284>>2]&7](c[f+288>>2]|0,20,b,d,h,c[a+492>>2]|0)|0;if((g|0)==1){if((e|0)!=0?1:(c[f+20>>2]|0)>2){c[k>>2]=h;c[k+4>>2]=b;c[k+8>>2]=d;ph(a,27688,k)}else{c[k>>2]=b;c[k+4>>2]=d;ph(a,27728,k)}c[a+12>>2]=23}else if(!((g|0)==0|(g|0)==2)){ph(a,25232,k);c[a+12>>2]=1}i=l;return g|0}function bv(e,f,g,h,i,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var 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=Kq(e)|0;A=(c[e+68>>2]|0)+-1|0;B=ts(y)|0;if((l|0)<0)sh(y,135,d[i+24>>0]|0,B,0)|0;n=i+20|0;o=c[n>>2]|0;if((o|0)>0){q=k+1|0;p=0;do{sh(y,76,q+(c[j+(p<<2)>>2]|0)|0,B,0)|0;p=p+1|0;o=c[n>>2]|0}while((p|0)<(o|0))}do if(!m){if(!h){o=e+19|0;n=a[o>>0]|0;if(!(n<<24>>24)){h=e+72|0;q=(c[h>>2]|0)+1|0;c[h>>2]=q}else{q=n+-1<<24>>24;a[o>>0]=q;q=c[e+((q&255)<<2)+24>>2]|0}sh(y,34,k+1+(c[j>>2]|0)|0,q,0)|0;p=sh(y,38,q,0,0)|0;if(((l|0)==1?(c[i>>2]|0)==(g|0):0)?(sh(y,79,k,B,q)|0,r=c[y+4>>2]|0,(r|0)!=0):0)a[r+(((c[y+32>>2]|0)+-1|0)*20|0)+3>>0]=-112;Mq(e,A,f,g,54);sh(y,70,A,0,q)|0;sh(y,16,0,B,0)|0;n=c[y+32>>2]|0;if(n>>>0>1)c[(c[y+4>>2]|0)+((n+-2|0)*20|0)+8>>2]=n;m=n+-1|0;o=(c[y+24>>2]|0)+88|0;c[o>>2]=m;if(n>>>0>p>>>0)c[(c[y+4>>2]|0)+(p*20|0)+8>>2]=n;c[o>>2]=m;Wr(e,q);break}w=e+60|0;q=c[w>>2]|0;x=e+56|0;p=c[x>>2]|0;if((p|0)<(o|0)){v=e+72|0;q=c[v>>2]|0;c[v>>2]=q+o;q=q+1|0}else{c[w>>2]=q+o;c[x>>2]=p-o}p=e+19|0;n=a[p>>0]|0;if(!(n<<24>>24)){m=e+72|0;v=(c[m>>2]|0)+1|0;c[m>>2]=v}else{v=n+-1<<24>>24;a[p>>0]=v;v=c[e+((v&255)<<2)+24>>2]|0}sh(y,54,A,c[h+40>>2]|0,f)|0;m=c[e+8>>2]|0;th(m,-1,ds(e,h)|0,-6);m=(o|0)>0;if(m){p=k+1|0;n=0;do{sh(y,33,p+(c[j+(n<<2)>>2]|0)|0,n+q|0,0)|0;n=n+1|0}while((n|0)!=(o|0))}if((l|0)==1?(c[i>>2]|0)==(g|0):0){t=y+32|0;u=o+1+(c[t>>2]|0)|0;if(m){f=k+1|0;s=h+4|0;p=g+36|0;n=y+4|0;r=0;do{m=b[(c[s>>2]|0)+(r<<1)>>1]|0;sh(y,78,f+(c[j+(r<<2)>>2]|0)|0,u,(m<<16>>16==(b[p>>1]|0)?0:(m<<16>>16)+1|0)+k|0)|0;m=c[n>>2]|0;if(m)a[m+(((c[t>>2]|0)+-1|0)*20|0)+3>>0]=16;r=r+1|0}while((r|0)!=(o|0))}sh(y,16,0,B,0)|0}k=kt(y,h)|0;th(y,sh(y,49,q,o,v)|0,k,o);th(y,sh(y,69,A,B,v)|0,0,-14);Wr(e,v);$s(e,q,o);if((c[x>>2]|0)<(o|0)){c[x>>2]=o;c[w>>2]=q}}while(0);n=a[i+24>>0]|0;m=n<<24>>24==0;if(((m?(c[(c[e>>2]|0)+24>>2]&16777216|0)==0:0)?(c[e+408>>2]|0)==0:0)?(a[e+20>>0]|0)==0:0)vs(e,787,2,0,-2,4);else{if(!((l|0)<1|m^1)){i=c[e+408>>2]|0;a[((i|0)==0?e:i)+21>>0]=1}sh(y,134,n&255,l,0)|0}m=c[y+24>>2]|0;n=~B;if((B|0)<0?(z=c[m+112>>2]|0,(z|0)!=0):0)c[z+(n<<2)>>2]=c[y+32>>2];c[m+88>>2]=(c[y+32>>2]|0)+-1;sh(y,61,A,0,0)|0;return}function cv(f,g,h,k,l,m,n,o){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var 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;D=i;i=i+48|0;if((i|0)>=(j|0))ba();y=D+32|0;z=D;A=c[f>>2]|0;B=Kq(f)|0;if((o|0)<0)C=sh(B,135,d[l+24>>0]|0,0,0)|0;else C=0;x=l+20|0;if((c[x>>2]|0)>0){w=(k|0)==0;v=(m|0)==0;u=l+36|0;t=k+4|0;s=0;p=0;do{if(w)r=-1;else r=b[(c[t>>2]|0)+(s<<1)>>1]|0;q=Mv(f,h,n,r)|0;if(v)r=u;else r=m+(s<<2)|0;p=os(A,p,Vq(f,79,q,pt(A,27,c[(c[(c[l>>2]|0)+4>>2]|0)+((c[r>>2]<<16>>16)*24|0)>>2]|0)|0,0)|0)|0;s=s+1|0}while((s|0)<(c[x>>2]|0));r=l}else{r=l;p=0}if((o|0)>0?(c[r>>2]|0)==(h|0):0){if(!(a[h+44>>0]&32)){m=c[f>>2]|0;c[y>>2]=0;c[y+4>>2]=0;m=jr(m,159,y,0)|0;if(!m)m=0;else{c[m+28>>2]=n;a[m+1>>0]=68}r=c[g+48>>2]|0;c[y>>2]=0;c[y+4>>2]=0;q=jr(A,154,y,0)|0;if(q){c[q+44>>2]=h;c[q+28>>2]=r;b[q+32>>1]=-1}m=Vq(f,78,m,q,0)|0}else{r=h+8|0;while(1){r=c[r>>2]|0;if((a[r+51>>0]&3)==2)break;r=r+20|0}x=r+46|0;if(!(b[x>>1]|0))m=0;else{t=k+4|0;u=g+48|0;v=y+4|0;w=0;m=0;do{r=b[(c[t>>2]|0)+(w<<1)>>1]|0;q=Mv(f,h,n,r)|0;s=c[u>>2]|0;c[y>>2]=0;c[v>>2]=0;k=jr(A,154,y,0)|0;if(k){c[k+44>>2]=h;c[k+28>>2]=s;b[k+32>>1]=r}m=os(A,m,Vq(f,79,q,k,0)|0)|0;w=w+1|0}while((w|0)<(e[x>>1]|0))}m=Vq(f,19,m,0,0)|0}p=os(A,p,m)|0};c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;c[z+20>>2]=0;c[z+24>>2]=0;c[z+28>>2]=0;c[z+4>>2]=g;c[z>>2]=f;hs(z,p)|0;m=Rs(f,g,p,0,0,0,0)|0;sh(B,134,d[l+24>>0]|0,o,0)|0;if(m)Ts(m);Ck(A,p);if(C){m=c[B+32>>2]|0;if(m>>>0>C>>>0)c[(c[B+4>>2]|0)+(C*20|0)+8>>2]=m;c[(c[B+24>>2]|0)+88>>2]=m+-1}i=D;return}function dv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+32|0;if((i|0)>=(j|0))ba();r=u;p=u+16|0;t=u+28|0;k=c[b>>2]|0;s=Kq(b)|0;if(s){m=(c[k+16>>2]|0)+(d<<4)|0;n=b+388|0;o=(f|0)==0;q=0;a:while(1){l=c[28744+(q<<3)>>2]|0;h=Wh(k,l,c[m>>2]|0)|0;do if(!h){if(!q){c[r>>2]=c[m>>2];c[r+4>>2]=l;c[r+8>>2]=28768;xr(b,28816,r);c[p>>2]=c[n>>2];a[t>>0]=4;q=q+1|0;continue a}}else{h=c[h+32>>2]|0;c[p+(q<<2)>>2]=h;a[t+q>>0]=0;cs(b,d,h,1,l);if(o){sh(s,118,h,d,0)|0;break}else{c[r>>2]=c[m>>2];c[r+4>>2]=l;c[r+8>>2]=g;c[r+12>>2]=f;xr(b,28840,r);break}}while(0);q=q+1|0;if((q|0)==3)break}th(s,sh(s,55,e,c[p>>2]|0,d)|0,3,-14);h=c[s+4>>2]|0;if(h)a[h+(((c[s+32>>2]|0)+-1|0)*20|0)+3>>0]=a[t>>0]|0}i=u;return}function ev(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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;D=c[d>>2]|0;E=i+1|0;F=i+2|0;J=i+3|0;K=i+4|0;L=i+5|0;I=i+6|0;G=i+7|0;H=d+72|0;M=c[H>>2]|0;c[H>>2]=(M|0)>(G|0)?M:G;M=Kq(d)|0;if((!((M|0)==0|(f|0)==0)?(p=f+32|0,(c[p>>2]|0)!=0):0)?(q=c[f>>2]|0,(Bc(q,25568,7)|0)!=0):0){m=c[f+68>>2]|0;a:do if(m){l=c[D+20>>2]|0;if((l|0)>0){k=c[D+16>>2]|0;o=0;while(1){n=o+1|0;if((c[k+(o<<4)+12>>2]|0)==(m|0)){n=o;break a}if((n|0)<(l|0))o=n;else break}}else n=0}else n=-1e6;while(0);if(!(Oq(d,28,q,0,c[(c[D+16>>2]|0)+(n<<4)>>2]|0)|0)){cs(d,n,c[p>>2]|0,0,c[f>>2]|0);w=j+1|0;C=j+2|0;q=d+68|0;B=c[q>>2]|0;c[q>>2]=(B|0)>(C|0)?B:C;Mq(d,j,n,f,54);q=c[f>>2]|0;th(M,sh(M,97,0,K,0)|0,q,0);q=c[f+8>>2]|0;C=(g|0)==0;if(!q)m=1;else{x=f+44|0;y=d+8|0;z=M+4|0;A=M+32|0;B=M+24|0;m=1;do{do if(C|(q|0)==(g|0)){m=(c[q+36>>2]|0)==0?0:m;p=a[q+51>>0]|0;if(!((a[x>>0]&32)!=0&(p&3)==2)){k=e[q+48>>1]|0;o=c[q>>2]|0;l=q+46|0;if(!(p&8)){s=l;r=k;p=k}else{s=l;r=k;p=e[l>>1]|0}}else{s=q+46|0;p=e[s>>1]|0;r=p;o=c[f>>2]|0}u=p+-1|0;th(M,sh(M,97,0,L,0)|0,o,0);v=c[H>>2]|0;p=u+G|0;c[H>>2]=(v|0)>(p|0)?v:p;sh(M,54,w,c[q+40>>2]|0,n)|0;p=c[y>>2]|0;th(p,-1,ds(d,q)|0,-6);sh(M,25,r,F,0)|0;sh(M,25,e[s>>1]|0,J,0)|0;sh(M,1,0,F,E)|0;th(M,-1,28552,-5);p=c[z>>2]|0;if(p)a[p+(((c[A>>2]|0)+-1|0)*20|0)+3>>0]=2;v=sh(M,108,w,0,0)|0;sh(M,25,0,F,0)|0;o=c[A>>2]|0;if((u|0)>0){r=ts(M)|0;t=ih(D,u<<2,0)|0;if(!t)break;sh(M,16,0,0,0)|0;o=c[A>>2]|0;if(((u|0)==1?(b[s>>1]|0)==1:0)?(a[q+50>>0]|0)!=0:0)sh(M,77,G,r,0)|0;p=q+32|0;k=0;do{s=_q(d,c[(c[p>>2]|0)+(k<<2)>>2]|0)|0;sh(M,25,k,F,0)|0;sh(M,47,w,k,J)|0;l=sh(M,78,J,0,k+G|0)|0;th(M,l,s,-4);c[t+(k<<2)>>2]=l;l=c[z>>2]|0;if(l)a[l+(((c[A>>2]|0)+-1|0)*20|0)+3>>0]=-128;k=k+1|0}while((k|0)!=(u|0));sh(M,25,u,F,0)|0;sh(M,16,0,r,0)|0;p=o+-1|0;l=c[A>>2]|0;if(l>>>0>p>>>0)c[(c[z>>2]|0)+(p*20|0)+8>>2]=l;c[(c[B>>2]|0)+88>>2]=l+-1;p=0;while(1){k=c[t+(p<<2)>>2]|0;if(l>>>0>k>>>0)c[(c[z>>2]|0)+(k*20|0)+8>>2]=l;c[(c[B>>2]|0)+88>>2]=l+-1;sh(M,47,w,p,p+G|0)|0;p=p+1|0;if((p|0)==(u|0))break;l=c[A>>2]|0}l=c[B>>2]|0;k=~r;do if((r|0)<0){p=c[l+112>>2]|0;if(!p)break;c[p+(k<<2)>>2]=c[A>>2]}while(0);c[l+88>>2]=(c[A>>2]|0)+-1;ig(D,t)}sh(M,1,1,E,J)|0;th(M,-1,28592,-5);p=c[z>>2]|0;if(p)a[p+(((c[A>>2]|0)+-1|0)*20|0)+3>>0]=2;sh(M,9,w,o,0)|0;sh(M,1,0,E,I)|0;th(M,-1,28640,-5);p=c[z>>2]|0;if(p)a[p+(((c[A>>2]|0)+-1|0)*20|0)+3>>0]=1;th(M,sh(M,49,K,3,J)|0,28632,0);sh(M,74,h,i,0)|0;sh(M,75,h,J,i)|0;o=c[z>>2]|0;p=c[A>>2]|0;if(o)a[o+((p+-1|0)*20|0)+3>>0]=8;if(p>>>0>v>>>0)c[o+(v*20|0)+8>>2]=p;c[(c[B>>2]|0)+88>>2]=p+-1}while(0);q=c[q+20>>2]|0}while((q|0)!=0)}if(!(m<<24>>24==0|C^1)){sh(M,50,j,I,0)|0;m=sh(M,46,I,0,0)|0;sh(M,28,0,L,0)|0;th(M,sh(M,49,K,3,J)|0,28632,0);sh(M,74,h,i,0)|0;sh(M,75,h,J,i)|0;l=c[M+4>>2]|0;k=c[M+32>>2]|0;if(l)a[l+((k+-1|0)*20|0)+3>>0]=8;if(k>>>0>m>>>0)c[l+(m*20|0)+8>>2]=k;c[(c[M+24>>2]|0)+88>>2]=k+-1}}}return}function fv(a,b){a=a|0;b=b|0;a=Kq(a)|0;if(a)sh(a,123,b,0,0)|0;return}function gv(d){d=d|0;var e=0,f=0,g=0;a:while(1){e=c[d+4>>2]|0;do if(e&4096)if(!(e&262144)){d=d+12|0;break}else{d=c[(c[d+20>>2]|0)+4>>2]|0;break}else{if(e&512){d=0;break a}switch(a[d>>0]|0){case -102:case -100:case -97:{g=11;break a}case 119:break;case 38:{g=10;break a}default:{g=14;break a}}d=c[(c[c[d+20>>2]>>2]|0)+4>>2]|0}while(0);d=c[d>>2]|0}if((g|0)==10)d=Tq(c[d+8>>2]|0,0)|0;else if((g|0)==11){f=c[d+44>>2]|0;if(f){e=b[d+32>>1]|0;if(e<<16>>16<0)d=68;else d=a[(c[f+4>>2]|0)+((e<<16>>16)*24|0)+21>>0]|0}else g=14}if((g|0)==14)d=a[d+1>>0]|0;return d|0}function hv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;sh(b,25,0,e,0)|0;f=sh(b,108,d,0,0)|0;sh(b,47,d,0,e)|0;d=c[b+4>>2]|0;e=c[b+32>>2]|0;if(d)a[d+((e+-1|0)*20|0)+3>>0]=-128;if(e>>>0>f>>>0)c[d+(f*20|0)+8>>2]=e;c[(c[b+24>>2]|0)+88>>2]=e+-1;return}function iv(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var 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;E=i;i=i+32|0;if((i|0)>=(j|0))ba();z=E;C=e+68|0;D=c[C>>2]|0;c[C>>2]=D+1;C=Kq(e)|0;A=(g&4|0)!=0;B=f+4|0;a:do if((((((((((((c[B>>2]&2048|0)!=0?(n=c[f+20>>2]|0,!((c[e+64>>2]|0)!=0|(n|0)==0)):0)?(c[n+52>>2]|0)==0:0)?(b[n+6>>1]&5)==0:0)?(c[n+60>>2]|0)==0:0)?(c[n+36>>2]|0)==0:0)?(m=c[n+32>>2]|0,(c[m>>2]|0)==1):0)?(c[m+28>>2]|0)==0:0)?(t=c[m+24>>2]|0,(t|0)!=0):0)?(a[t+44>>0]&16)==0:0)?(l=c[n>>2]|0,(c[l>>2]|0)==1):0)?(p=c[c[l+4>>2]>>2]|0,(a[p>>0]|0)==-102):0){x=c[e>>2]|0;y=b[p+32>>1]|0;o=c[t+68>>2]|0;b:do if(o){m=c[x+20>>2]|0;if((m|0)>0){l=c[x+16>>2]|0;k=0;while(1){n=k+1|0;if((c[l+(k<<4)+12>>2]|0)==(o|0)){n=k;break b}if((n|0)<(m|0))k=n;else break}}else n=0}else n=-1e6;while(0);v=n<<16>>16;wr(e,v);cs(e,v,c[t+32>>2]|0,0,c[t>>2]|0);w=y<<16>>16;if(y<<16>>16<0){k=Kq(e)|0;h=e+80|0;l=c[h>>2]|0;c[h>>2]=l+1;l=sh(k,44,l,0,0)|0;Mq(e,D,v,t,54);k=c[C+32>>2]|0;if(k>>>0>l>>>0)c[(c[C+4>>2]|0)+(l*20|0)+8>>2]=k;c[(c[C+24>>2]|0)+88>>2]=k+-1;k=1;o=49;break}k=Ku(e,c[f+12>>2]|0,p)|0;u=t+4|0;o=a[(c[u>>2]|0)+(w*24|0)+21>>0]|0;n=(jv(f)|0)<<24>>24;if((n|0)==66)n=o<<24>>24==66&1;else if((n|0)==65)n=1;else n=o<<24>>24>66&1;o=c[t+8>>2]|0;if((o|0)!=0&(n|0)!=0){p=x+62|0;n=e+80|0;m=e+8|0;l=(h|0)==0;q=C+32|0;s=C+4|0;t=C+24|0;r=e+72|0;c:while(1){do if((b[c[o+4>>2]>>1]|0)==y<<16>>16?(Un(x,a[p>>0]|0,c[c[o+32>>2]>>2]|0,0)|0)==(k|0):0){if(!A)break c;if((b[o+46>>1]|0)!=1)break;if(a[o+50>>0]|0)break c}while(0);o=c[o+20>>2]|0;if(!o){o=38;break a}}B=Kq(e)|0;k=c[n>>2]|0;c[n>>2]=k+1;n=sh(B,44,k,0,0)|0;sh(C,54,D,c[o+40>>2]|0,v)|0;k=c[m>>2]|0;th(k,-1,ds(e,o)|0,-6);k=(d[c[o+28>>2]>>0]|0)+3|0;if(!l?(a[(c[u>>2]|0)+(w*24|0)+20>>0]|0)==0:0){B=(c[r>>2]|0)+1|0;c[r>>2]=B;c[h>>2]=B;hv(C,D,B)}l=c[q>>2]|0;if(l>>>0>n>>>0)c[(c[s>>2]|0)+(n*20|0)+8>>2]=l;c[(c[t>>2]|0)+88>>2]=l+-1;o=49}else o=38}else o=38;while(0);do if((o|0)==38){if((g&1|0)!=0?(c[B>>2]&2048|0)==0:0){g=f+12|0;y=c[g>>2]|0;c[g>>2]=0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;c[z+20>>2]=0;C=z+20|0;a[C>>0]=1;c[z>>2]=78;c[z+4>>2]=79;c[z+24>>2]=0;ns(z,f)|0;C=a[C>>0]|0;c[g>>2]=y;if(!(C<<24>>24)){k=5;o=49;break}if((c[c[f+20>>2]>>2]|0)<3){k=5;o=49;break}}m=e+424|0;n=c[m>>2]|0;if(A){c[m>>2]=0;if((b[(c[f+12>>2]|0)+32>>1]|0)<0){k=((c[B>>2]|0)>>>11&1)+1|0;l=0}else{k=2;l=0}}else if(!h){k=2;l=0}else{k=e+72|0;l=(c[k>>2]|0)+1|0;c[k>>2]=l;c[h>>2]=l;k=2}au(e,f,l,(k|0)==1&1)|0;c[m>>2]=n}while(0);if((o|0)==49)c[f+28>>2]=D;i=E;return k|0}function jv(a){a=a|0;var b=0,d=0;b=gv(c[a+12>>2]|0)|0;d=c[a+16>>2]|0;do if(!d)if(!(c[a+4>>2]&2048))return (b<<24>>24==0?65:b)|0;else{b=xu(c[c[(c[c[a+20>>2]>>2]|0)+4>>2]>>2]|0,b)|0;break}else b=xu(d,b)|0;while(0);return b|0}function kv(d,e,f,g,h,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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,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=i;i=i+16|0;if((i|0)>=(j|0))ba();W=Z;U=c[d>>2]|0;X=k+28|0;c[X>>2]=-1;T=k+44|0;c[T>>2]=0;a:do if((e|0)!=0?(b[h+28>>1]&20)==0:0){q=c[U+20>>2]|0;if((q|0)>0){o=c[U+16>>2]|0;p=0;while(1){if(!($c(c[o+(p<<4)>>2]|0,e)|0))break;p=p+1|0;if((p|0)>=(q|0)){S=e;e=0;break a}}S=e;e=c[o+(p<<4)+12>>2]|0}else{S=e;e=0}}else{S=0;e=0}while(0);Q=(S|0)==0;N=Q&(f|0)!=0;m=d+412|0;J=d+436|0;K=k+1|0;Y=k+32|0;L=d+428|0;M=d+432|0;R=(f|0)==0;P=k+4|0;l=h;r=0;n=0;q=0;p=0;b:while(1){I=(l|0)!=0;o=l+4|0;H=l+8|0;s=0;t=r;while(1){r=(s|0)==0;if(!(I&r)){V=82;break b}s=c[o>>2]|0;if(s){G=c[s>>2]|0;if((G|0)>0){r=0;F=0;E=s+8|0;while(1){D=c[E+16>>2]|0;u=c[E+20>>2]|0;if((u|0)!=0?(b[u+6>>1]&512)!=0:0){u=c[u>>2]|0;A=c[u>>2]|0;if((A|0)>0){B=c[u+4>>2]|0;u=0;w=0;do{if(rv(c[B+(w*20|0)+8>>2]|0,g,f,S)|0){b[Y>>1]=w;r=r+1|0;t=2;u=1;p=E}w=w+1|0}while((w|0)<(A|0))}else u=0;if(!((u|0)!=0|R)){v=t;V=21}}else{v=t;V=21}c:do if((V|0)==21){V=0;if(!Q?(c[D+68>>2]|0)!=(e|0):0){t=v;break}if(!R){u=c[E+12>>2]|0;if(!u)u=c[D>>2]|0;if($c(u,f)|0){t=v;break}}t=v+1|0;p=(v|0)==0?E:p;u=b[D+38>>1]|0;if(u<<16>>16>0){s=(r|0)==1;x=E+36|0;y=E+48|0;A=0;B=c[D+4>>2]|0;d:while(1){e:do if(!($c(c[B>>2]|0,g)|0)){if(!s){p=A;break d}if(!(a[x>>0]&4)){w=c[y>>2]|0;if(!w){p=A;break d}z=c[w+4>>2]|0;if((z|0)<=0){p=A;break d}w=c[w>>2]|0;v=0;while(1){if(!($c(c[w+(v<<3)>>2]|0,g)|0))break e;v=v+1|0;if((v|0)>=(z|0)){p=A;break d}}}}while(0);A=A+1|0;if((A|0)>=(u<<16>>16|0))break c;else B=B+24|0}b[Y>>1]=(p|0)==(b[D+36>>1]|0)?-1:p&65535;r=r+1|0;p=E}}while(0);F=F+1|0;if((F|0)>=(G|0))break;else E=E+72|0}}else r=0;if(!p)B=0;else{c[X>>2]=c[p+40>>2];s=c[p+16>>2]|0;c[T>>2]=s;if(a[p+36>>0]&8)c[P>>2]=c[P>>2]|1048576;B=p;e=c[s+68>>2]|0}}else{r=0;B=p}do if(N&(t|0)==0)if(c[m>>2]|0){s=a[J>>0]|0;if(s<<24>>24!=109)if($c(27560,f)|0)if(s<<24>>24==108){v=r;t=0;w=n;break}else V=49;else w=1;else V=49;if((V|0)==49){V=0;if(!($c(27568,f)|0))w=0;else{v=r;t=0;w=n;break}}c[X>>2]=w;v=c[m>>2]|0;if(v){e=c[v+68>>2]|0;u=b[v+38>>1]|0;f:do if(u<<16>>16>0){s=0;t=c[v+4>>2]|0;while(1){if(!($c(c[t>>2]|0,g)|0))break;s=s+1|0;if((s|0)<(u<<16>>16|0))t=t+24|0;else break f}s=(s|0)==(b[v+36>>1]|0)?-1:s}else s=0;while(0);p=u<<16>>16;if((s|0)>=(p|0)?(Xh(g)|0)!=0:0)t=(a[v+44>>0]&32)==0?-1:s;else t=s;if((t|0)<(p|0)){r=r+1|0;do if((t|0)>=0){s=(t|0)>31?-1:1<>2]=c[L>>2]|s;break}else{c[M>>2]=c[M>>2]|s;break}}else a[K>>0]=68;while(0);b[Y>>1]=t;c[T>>2]=v;t=1;n=1;V=66}else{t=1;V=66}}else{v=r;t=0;w=n}}else{v=r;t=0;w=n}else V=66;while(0);if((V|0)==66){V=0;if((r|0)==0&(t|0)==1&(B|0)!=0)if((Xh(g)|0)!=0?(a[(c[B+16>>2]|0)+44>>0]&32)==0:0){b[Y>>1]=-1;a[K>>0]=68;s=1;p=B;continue}else{v=0;w=n}else{v=r;w=n}}r=c[H>>2]|0;u=(v|0)==0;if((r|0)!=0&R&u?(O=c[r>>2]|0,(O|0)>0):0){n=c[r+4>>2]|0;p=0;do{s=c[n+(p*20|0)+4>>2]|0;if((s|0)!=0?($c(s,g)|0)==0:0){V=75;break b}p=p+1|0}while((p|0)<(O|0))}if(u){s=t;n=w;p=B;break}else{s=v;n=w;p=B}}l=c[l+16>>2]|0;r=s;q=q+1|0}do if((V|0)==75){if((b[l+28>>1]&1)==0?(c[(c[n+(p*20|0)>>2]|0)+4>>2]&2|0)!=0:0){c[W>>2]=s;ph(d,27576,W);h=2;break}uv(d,r,p,k,10360,q);if((a[k>>0]|0)==24)V=115;else V=96}else if((V|0)==82){if(r&R?(c[P>>2]&64|0)!=0:0){a[k>>0]=97;c[T>>2]=0;h=1;break}s=(s|0)==1;if(!s){r=r?27608:27624;do if(Q)if(R){c[W>>2]=r;c[W+4>>2]=g;ph(d,27680,W);break}else{c[W>>2]=r;c[W+4>>2]=f;c[W+8>>2]=g;ph(d,27664,W);break}else{c[W>>2]=r;c[W+4>>2]=S;c[W+8>>2]=f;c[W+12>>2]=g;ph(d,27648,W)}while(0);a[d+17>>0]=1;F=h+24|0;c[F>>2]=(c[F>>2]|0)+1}q=b[Y>>1]|0;if(q<<16>>16>-1&(p|0)!=0){B=q<<16>>16>63;D=ew(1,0,q<<16>>16|0)|0;F=p+56|0;A=F;E=c[A+4>>2]|(B?-2147483648:C);c[F>>2]=c[A>>2]|(B?0:D);c[F+4>>2]=E}F=k+12|0;Ck(U,c[F>>2]|0);c[F>>2]=0;F=k+16|0;Ck(U,c[F>>2]|0);c[F>>2]=0;a[k>>0]=(n|0)!=0?62:-102;if(s)V=96;else h=2}while(0);g:do if((V|0)==96){r=c[o>>2]|0;n=c[d>>2]|0;if(!((c[n+284>>2]|0)==0|(e|0)==0)){q=c[n+20>>2]|0;if((q|0)>0){o=c[n+16>>2]|0;p=0;while(1){n=p+1|0;if((c[o+(p<<4)+12>>2]|0)==(e|0)){n=p;break}if((n|0)<(q|0))p=n;else break}if((n|0)<0){V=115;break}else e=n}else e=0;if((a[k>>0]|0)!=62){o=c[r>>2]|0;if((o|0)<=0){V=115;break}m=c[X>>2]|0;n=0;while(1){if((m|0)==(c[r+(n*72|0)+48>>2]|0))break;n=n+1|0;if((n|0)>=(o|0)){V=115;break g}}m=r+(n*72|0)+24|0}o=c[m>>2]|0;m=b[Y>>1]|0;n=m<<16>>16;if(o){if(m<<16>>16<=-1){m=b[o+36>>1]|0;if(m<<16>>16>-1)m=c[(c[o+4>>2]|0)+((m<<16>>16)*24|0)>>2]|0;else m=12944}else m=c[(c[o+4>>2]|0)+(n*24|0)>>2]|0;if((av(d,c[o>>2]|0,m,e)|0)==2){a[k>>0]=101;V=115}else V=115}else V=115}else V=115}while(0);if((V|0)==115){F=h+20|0;c[F>>2]=(c[F>>2]|0)+1;if((l|0)==(h|0))h=1;else{do{h=c[h+16>>2]|0;F=h+20|0;c[F>>2]=(c[F>>2]|0)+1}while((h|0)!=(l|0));h=1}}i=Z;return h|0}function lv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=a[d>>0]|0;a:do if(e<<24>>24==-100|e<<24>>24==-102){e=c[b+24>>2]|0;f=c[e>>2]|0;b:do if((f|0)!=0?(g=c[f>>2]|0,(g|0)>0):0){b=c[d+28>>2]|0;d=0;while(1){if((b|0)==(c[f+(d*72|0)+48>>2]|0))break;d=d+1|0;if((d|0)>=(g|0))break b}b=e+4|0;c[b>>2]=(c[b>>2]|0)+1;break a}while(0);b=e+8|0;c[b>>2]=(c[b>>2]|0)+1}while(0);return 0}function mv(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=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;w=i;i=i+16|0;if((i|0)>=(j|0))ba();v=w;q=w+12|0;a:do if(!f)h=0;else{t=c[c[e>>2]>>2]|0;u=c[d>>2]|0;b:do if((c[f>>2]|0)>0){h=0;r=c[f+4>>2]|0;c:while(1){o=c[r>>2]|0;d:do if(!o)k=0;else{k=o;while(1){l=c[k+4>>2]|0;if(!(l&4096))break d;if(!(l&262144))k=k+12|0;else k=c[(c[k+20>>2]|0)+4>>2]|0;k=c[k>>2]|0;if(!k){k=0;break}}}while(0);if((a[g>>0]|0)!=71?(p=nv(c[e>>2]|0,k)|0,c[q>>2]=p,(p|0)>0):0)b[r+16>>1]=p;else s=13;do if((s|0)==13){s=0;if(Is(k,q)|0){k=c[q>>2]|0;if((k+-1|0)>>>0>65534)break c;b[r+16>>1]=k;break}m=r+16|0;b[m>>1]=0;if(hs(d,o)|0){h=1;break a}l=c[e>>2]|0;n=c[l>>2]|0;if((n|0)>0){l=c[l+4>>2]|0;k=0;do{x=k;k=k+1|0;if(!(yu(o,c[l+(x*20|0)>>2]|0,-1)|0))b[m>>1]=k}while((k|0)<(n|0))}}while(0);h=h+1|0;if((h|0)>=(c[f>>2]|0))break b;else r=r+20|0}c[v>>2]=h+1;c[v+4>>2]=g;c[v+8>>2]=t;ph(u,27064,v);h=1;break a}while(0);h=su(u,e,f,g)|0}while(0);i=w;return h|0}function nv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[d>>0]|0)==27?(f=c[d+8>>2]|0,g=c[b>>2]|0,(g|0)>0):0){b=c[b+4>>2]|0;d=0;while(1){e=c[b+(d*20|0)+4>>2]|0;if((e|0)!=0?($c(e,f)|0)==0:0)break;d=d+1|0;if((d|0)>=(g|0)){d=0;break a}}d=d+1|0}else d=0;while(0);return d|0}function ov(a,d){a=a|0;d=d|0;var e=0,f=0;e=b[a+38>>1]|0;a:do if(e<<16>>16>0){f=c[a+4>>2]|0;e=e<<16>>16;a=0;while(1){if(!($c(c[f+(a*24|0)>>2]|0,d)|0))break a;a=a+1|0;if((a|0)>=(e|0)){a=-1;break}}}else a=-1;while(0);return a|0}function pv(a,d,e,f,g,h,i,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0;k=c[a>>2]|0;e=Nv(k,d,e,f)|0;f=Nv(k,d,g,h)|0;h=Vq(a,79,e,f,0)|0;if((h|0)!=0&(i|0)!=0){e=h+4|0;c[e>>2]=c[e>>2]|1;b[h+36>>1]=c[f+28>>2]}c[j>>2]=os(k,c[j>>2]|0,h)|0;return}function qv(a,d){a=a|0;d=d|0;var e=0,f=0;if(a){e=d&65535;do{f=a+4|0;c[f>>2]=c[f>>2]|1;b[a+36>>1]=e;qv(c[a+12>>2]|0,d);a=c[a+16>>2]|0}while((a|0)!=0)}return}function rv(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=0;while(1){g=a[b+f>>0]|0;if(g<<24>>24==46|g<<24>>24==0)break;f=f+1|0}if(e)if((Bc(b,e,f)|0)==0?(a[e+f>>0]|0)==0:0)h=7;else f=0;else h=7;do if((h|0)==7){e=f+1|0;h=b+e|0;g=0;while(1){i=a[b+(g+e)>>0]|0;if(i<<24>>24==46|i<<24>>24==0)break;g=g+1|0}if(d){if(Bc(h,d,g)|0){f=0;break}if(a[d+g>>0]|0){f=0;break}}if((c|0)!=0?($c(b+(f+2+g)|0,c)|0)!=0:0){f=0;break}f=1}while(0);return f|0}function sv(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((a|0)!=0?(e=c[a+4>>2]|0,(e|0)>0):0){d=c[a>>2]|0;a=0;while(1){if(!($c(c[d+(a<<3)>>2]|0,b)|0))break a;a=a+1|0;if((a|0)>=(e|0)){a=-1;break}}}else a=-1;while(0);return a|0}function tv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;c[g>>2]=e;if(!e)f=0;else{f=e;while(1)if(!(a[f>>0]|0))break;else f=f+1|0;f=f-e&1073741823}c[g+4>>2]=f;f=rr(b,d,g,0)|0;i=h;return f|0}function uv(d,e,f,g,h,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();o=s;m=e+4|0;n=c[(c[m>>2]|0)+(f*20|0)>>2]|0;p=c[d>>2]|0;l=Ir(p,n,0,0)|0;do if(l){if((a[n>>0]|0)!=-102?(a[h>>0]|0)!=71:0){if((k|0)>0){c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o+16>>2]=0;c[o+20>>2]=0;c[o>>2]=88;c[o+24>>2]=k;ns(o,l)|0}l=Vq(d,24,l,0,0)|0;if(!l)break;e=l+4|0;c[e>>2]=c[e>>2]|4096;e=(c[m>>2]|0)+(f*20|0)+18|0;k=b[e>>1]|0;if(!(k<<16>>16)){f=d+456|0;k=(c[f>>2]|0)+1|0;c[f>>2]=k;k=k&65535;b[e>>1]=k}c[l+28>>2]=k&65535}if((a[g>>0]|0)==95)l=tv(d,l,c[g+8>>2]|0)|0;e=g+4|0;c[e>>2]=c[e>>2]|32768;Ck(p,g);k=g+0|0;m=l+0|0;n=k+48|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(n|0));if((c[e>>2]&1024|0)==0?(q=g+8|0,r=c[q>>2]|0,(r|0)!=0):0){c[q>>2]=gh(p,r)|0;c[e>>2]=c[e>>2]|65536}ig(p,l)}while(0);i=s;return}function vv(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+12|0;g=c[n>>2]|0;k=a+16|0;i=c[k>>2]|0;m=a+20|0;do if((g|0)<(i|0))l=15;else{g=c[m>>2]|0;j=c[c[c[a>>2]>>2]>>2]|0;h=ih(j,i*96|0,0)|0;c[m>>2]=h;if(!h){if(f&1)Ck(j,d);c[m>>2]=g;g=0;break}gw(h|0,g|0,(c[n>>2]|0)*48|0)|0;if((g|0)!=(a+24|0))ig(j,g);h=c[m>>2]|0;do if(!j)h=hc[c[8744+48>>2]&127](h)|0;else{if((c[j+276>>2]|0)>>>0<=h>>>0?(c[j+280>>2]|0)>>>0>h>>>0:0){h=e[j+248>>1]|0;break}h=hc[c[8744+48>>2]&127](h)|0}while(0);l=(h>>>0)/48|0;c[k>>2]=l;g=c[n>>2]|0;bw((c[m>>2]|0)+(g*48|0)|0,0,(l-g|0)*48|0)|0;g=c[n>>2]|0;l=15}while(0);if((l|0)==15){c[n>>2]=g+1;i=c[m>>2]|0;a:do if(!d){b[i+(g*48|0)+16>>1]=1;d=0}else{if(!(c[d+4>>2]&262144))h=1;else{h=c[d+28>>2]|0;h=((bs(h,((h|0)<0)<<31>>31)|0)&65535)+65266&65535}b[i+(g*48|0)+16>>1]=h;while(1){h=c[d+4>>2]|0;if(!(h&4096))break a;if(!(h&262144))d=d+12|0;else d=c[(c[d+20>>2]|0)+4>>2]|0;d=c[d>>2]|0;if(!d){d=0;break}}}while(0);c[i+(g*48|0)>>2]=d;b[i+(g*48|0)+20>>1]=f;c[i+(g*48|0)+24>>2]=a;c[i+(g*48|0)+4>>2]=-1}return g|0}function wv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if(d)if((a[d>>0]|0)==-102){d=c[d+28>>2]|0;f=c[b>>2]|0;if((f|0)>0)e=0;else{f=0;e=0;break}while(1){if((c[b+(e<<2)+4>>2]|0)==(d|0))break;e=e+1|0;if((e|0)>=(f|0)){f=0;e=0;break a}}e=ew(1,0,e|0)|0;f=C;break}else{g=wv(b,c[d+16>>2]|0)|0;e=C;h=wv(b,c[d+12>>2]|0)|0;e=C|e;f=d+20|0;if(!(c[d+4>>2]&2048)){d=Hu(b,c[f>>2]|0)|0;f=C}else{d=xv(b,c[f>>2]|0)|0;f=C}f=e|f;e=h|g|d;break}else{f=0;e=0}while(0);C=f;return e|0}function xv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!b){b=0;d=0}else{g=b;d=0;b=0;do{f=c[g+32>>2]|0;l=Hu(a,c[g>>2]|0)|0;b=C|b;k=Hu(a,c[g+40>>2]|0)|0;b=b|C;j=Hu(a,c[g+48>>2]|0)|0;b=b|C;i=wv(a,c[g+36>>2]|0)|0;b=b|C;e=wv(a,c[g+44>>2]|0)|0;d=l|d|k|j|i|e;b=b|C;if((f|0)!=0?(h=c[f>>2]|0,(h|0)>0):0){e=0;do{j=xv(a,c[f+(e*72|0)+28>>2]|0)|0;b=C|b;k=wv(a,c[f+(e*72|0)+52>>2]|0)|0;d=j|d|k;b=b|C;e=e+1|0}while((e|0)<(h|0))}g=c[g+52>>2]|0}while((g|0)!=0)}C=b;return d|0}function yv(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=b[e+18>>1]|0;k=b[f+18>>1]|0;h=k|l;if(((!((l&62)==0|(k&62)==0)?(g=h&65535,(g&26|0)==(g|0)|(g&38|0)==(g|0)):0)?(j=c[e>>2]|0,i=c[f>>2]|0,(yu(c[j+12>>2]|0,c[i+12>>2]|0,-1)|0)==0):0)?(yu(c[j+16>>2]|0,c[i+16>>2]|0,-1)|0)==0:0){if(g+65535&g)h=(g&24|0)==0?32:8;i=Ir(c[c[c[d>>2]>>2]>>2]|0,j,0,0)|0;if(i){h=h&65535;g=79;while(1)if((h|0)==(2<>0]=g;Au(d,vv(d,i,3)|0)}}return}function zv(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0;c[d>>2]=f;c[d+4>>2]=f;a:do if((j|0)!=0&(h|0)>-1){a[d+12>>0]=a[(c[(c[j+12>>2]|0)+4>>2]|0)+(h*24|0)+21>>0]|0;k=c[j+4>>2]|0;if((b[k>>1]|0)==(h|0))f=0;else{l=e[j+48>>1]|0;m=0;while(1){f=m+1|0;if((m|0)>(l|0)){f=0;break a}if((b[k+(f<<1)>>1]|0)==(h|0))break;else m=f}}c[d+8>>2]=c[(c[j+32>>2]|0)+(f<<2)>>2];n=8}else{a[d+12>>0]=0;c[d+8>>2]=0;n=8}while(0);if((n|0)==8){c[d+16>>2]=i;c[d+20>>2]=0;c[d+24>>2]=g;c[d+28>>2]=h;a[d+13>>0]=2;a[d+14>>0]=2;f=Av(d)|0}return f|0} -function Pn(d,f,g,h,k,l,m,n,o){d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var 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,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;aa=i;i=i+160|0;if((i|0)>=(j|0))ba();O=aa+16|0;K=aa+152|0;M=aa+48|0;J=aa+40|0;N=aa+36|0;L=aa+32|0;R=aa+8|0;Q=aa;W=aa+28|0;_=aa+24|0;c[_>>2]=0;do if(!(a[d+46>>0]|0)){$=d+43|0;if((a[$>>0]|0)==0?(p=c[d+4>>2]|0,p=lc[c[(c[p>>2]|0)+56>>2]&31](p,1,1,10)|0,(p|0)!=0):0)break;Z=d+45|0;a[Z>>0]=1;a:do if(!f){t=0;X=11}else{r=d+4|0;p=(g|0)!=0;while(1){if(a[$>>0]|0)break;t=c[r>>2]|0;t=lc[c[(c[t>>2]|0)+56>>2]&31](t,0,1,10)|0;if(!(p&(t|0)==5)){X=9;break}if(!(hc[g&127](h)|0)){t=0;g=0;X=11;break a}}if((X|0)==9)if((t|0)==5){t=0;g=0;X=11;break}else if(t){Y=f;break}a[d+44>>0]=1;t=f;X=11}while(0);if((X|0)==11){Y=t;t=jq(d,_)|0}do if(!t){V=d+68|0;t=b[d+66>>1]|0;if((c[V>>2]|0)!=0?(U=t&65535,(U<<16&65536|U&65024|0)!=(l|0)):0){c[O>>2]=51863;c[O+4>>2]=10788;Zc(11,13600,O);q=11;break}S=t&65535;S=S<<16&65536|S&65024;U=d+32|0;T=(c[c[U>>2]>>2]|0)+96|0;w=c[V>>2]|0;b:do if((c[T>>2]|0)>>>0>>0){H=(w+33|0)>>>12;I=H+1|0;l=w<<1;v=l+28+(H*20|0)|0;p=Pc(v)|0;c:do if(!p){t=7;p=0}else{bw(p|0,0,v|0)|0;v=p+4|0;c[v>>2]=I;l=Pc(w>>>0>4096?8192:l)|0;do if(l){G=p+8|0;u=0;while(1){t=Lo(d,u,J,L,N)|0;if(t){X=21;break}F=(c[L>>2]|0)+4|0;c[L>>2]=F;if((u|0)==(H|0)){E=c[N>>2]|0;t=E;E=w-E|0}else{t=c[N>>2]|0;E=(c[J>>2]|0)-F>>2}r=G+((c[v>>2]|0)*20|0)|0;D=r+(t<<1)|0;B=t+1|0;c[N>>2]=B;if((E|0)>0){y=0;do{b[r+(y+t<<1)>>1]=y;y=y+1|0}while((y|0)!=(E|0));c[O>>2]=0;c[K>>2]=0;z=M+0|0;y=z+104|0;do{c[z>>2]=0;z=z+4|0}while((z|0)<(y|0));A=0;do{c[O>>2]=1;z=r+(A+t<<1)|0;c[K>>2]=z;if(!(A&1)){x=1;y=0}else{y=0;do{kq(F,c[M+(y<<3)+4>>2]|0,c[M+(y<<3)>>2]|0,K,O,l);y=y+1|0}while((1<>2]|0;z=c[K>>2]|0}c[M+(y<<3)+4>>2]=z;c[M+(y<<3)>>2]=x;A=A+1|0}while((A|0)!=(E|0));y=y+1|0;if((y|0)<13)X=34}else{c[O>>2]=0;c[K>>2]=0;z=M+0|0;y=z+104|0;do{c[z>>2]=0;z=z+4|0}while((z|0)<(y|0));y=1;X=34}if((X|0)==34){while(1){X=0;if(1<>2]|0,c[M+(y<<3)>>2]|0,K,O,l);y=y+1|0;if((y|0)==13)break;else X=34}x=c[O>>2]|0}c[G+(u*20|0)+16>>2]=B;c[G+(u*20|0)+12>>2]=x;c[G+(u*20|0)+4>>2]=D;c[G+(u*20|0)+8>>2]=F;u=u+1|0;if((u|0)>=(I|0)){X=39;break}}if((X|0)==21){Sc(l);break}else if((X|0)==39){Sc(l);t=0;break c}}else{Sc(0);t=7}while(0);Sc(p)}while(0);if(!t){O=d+72|0;N=c[O>>2]|0;M=d+4|0;x=1;w=c[V>>2]|0;t=0;while(1){l=T+(x<<2)+4|0;r=c[l>>2]|0;d:do if(w>>>0>r>>>0){v=x+3|0;u=(g|0)!=0;while(1){if(a[$>>0]|0)break;t=c[M>>2]|0;t=lc[c[(c[t>>2]|0)+56>>2]&31](t,v,1,10)|0;if(!(u&(t|0)==5)){X=49;break}if(!(hc[g&127](h)|0)){g=0;t=5;break d}}if((X|0)==49){X=0;if((t|0)==5){g=0;t=5;break}else if(t){q=t;X=100;break b}}c[l>>2]=(x|0)==1?w:-1;if(!(a[$>>0]|0)){r=c[M>>2]|0;lc[c[(c[r>>2]|0)+56>>2]&31](r,v,1,9)|0;r=w;t=0}else{r=w;t=0}}else r=w;while(0);x=x+1|0;if((x|0)>=5){I=r;break}else w=r}e:do if((c[T>>2]|0)>>>0>>0){t=(g|0)!=0;while(1){if(a[$>>0]|0)break;r=c[M>>2]|0;r=lc[c[(c[r>>2]|0)+56>>2]&31](r,3,1,10)|0;if(!(t&(r|0)==5)){s=r;X=58;break}if(!(hc[g&127](h)|0)){s=5;break e}}if((X|0)==58?(s|0)!=0:0)break;F=c[T>>2]|0;G=(k|0)!=0;if(G?(P=c[d+8>>2]|0,P=nc[c[(c[P>>2]|0)+20>>2]&127](P,k)|0,(P|0)!=0):0)s=P;else X=61;f:do if((X|0)==61){P=ow(N|0,0,S|0,0)|0;s=Q;c[s>>2]=P;c[s+4>>2]=C;s=c[M>>2]|0;s=nc[c[(c[s>>2]|0)+24>>2]&127](s,R)|0;if(!s){P=R;K=c[P+4>>2]|0;R=Q;L=c[R+4>>2]|0;if((K|0)<(L|0)|((K|0)==(L|0)?(c[P>>2]|0)>>>0<(c[R>>2]|0)>>>0:0)){R=c[M>>2]|0;Yb[c[(c[R>>2]|0)+40>>2]&63](R,5,Q)|0}B=p+4|0;D=S|24;E=d+8|0;t=c[B>>2]|0;g:do if((t|0)>0){s=0;while(1){A=c[p>>2]|0;z=-1;h:while(1){i:while(1){t=t+-1|0;x=p+(t*20|0)+8|0;l=c[x>>2]|0;r=c[p+(t*20|0)+20>>2]|0;j:do if((l|0)<(r|0)){w=c[p+(t*20|0)+12>>2]|0;y=c[p+(t*20|0)+16>>2]|0;while(1){u=e[w+(l<<1)>>1]|0;v=c[y+(u<<2)>>2]|0;if(v>>>0>A>>>0)break;l=l+1|0;c[x>>2]=l;if((l|0)>=(r|0))break j}if(v>>>0>>0)break i}while(0);if((t|0)<=0){l=s;t=z;break h}}s=(c[p+(t*20|0)+24>>2]|0)+u|0;if((t|0)>0)z=v;else{l=s;t=v;break}}c[p>>2]=t;if((t|0)==-1)break g;if(!(l>>>0<=F>>>0|l>>>0>I>>>0|t>>>0>N>>>0)){s=ow(l+-1|0,0,D|0,0)|0;s=fw(s|0,C|0,56,0)|0;R=c[E>>2]|0;s=pc[c[(c[R>>2]|0)+8>>2]&31](R,m,S,s,C)|0;if(s)break f;s=ow(t+-1|0,0,S|0,0)|0;R=c[M>>2]|0;s=pc[c[(c[R>>2]|0)+12>>2]&31](R,m,S,s,C)|0;if(s)break f}t=c[B>>2]|0;if((t|0)<=0){X=66;break}else s=l}}else X=66;while(0);if((X|0)==66)c[p>>2]=-1;if((I|0)==(c[(c[c[U>>2]>>2]|0)+16>>2]|0)){s=ow(c[O>>2]|0,0,S|0,0)|0;X=c[M>>2]|0;s=Yb[c[(c[X>>2]|0)+16>>2]&63](X,s,C)|0;if((s|0)==0&G){s=c[M>>2]|0;s=nc[c[(c[s>>2]|0)+20>>2]&127](s,k)|0}if(s)break}c[T>>2]=I;s=0}}while(0);if(!(a[$>>0]|0)){X=c[M>>2]|0;lc[c[(c[X>>2]|0)+56>>2]&31](X,3,1,9)|0}}else s=t;while(0);s=(s|0)==5?0:s;X=88}else q=t}else{p=0;s=0;X=88}while(0);k:do if((X|0)==88)if((s|0)==0&(Y|0)!=0)if((c[T>>2]|0)>>>0>=(c[V>>2]|0)>>>0)if((Y|0)>1){_c(4,W);t=d+4|0;r=(g|0)!=0;while(1){if(a[$>>0]|0)break;s=c[t>>2]|0;s=lc[c[(c[s>>2]|0)+56>>2]&31](s,4,4,10)|0;if(!(r&(s|0)==5)){q=s;X=95;break}if(!(hc[g&127](h)|0)){q=5;X=100;break k}}if((X|0)==95?(q|0)!=0:0){X=100;break}if((Y|0)==3){To(d,c[W>>2]|0);q=c[d+8>>2]|0;q=Yb[c[(c[q>>2]|0)+16>>2]&63](q,0,0)|0}else q=0;if(!(a[$>>0]|0)){X=c[t>>2]|0;lc[c[(c[X>>2]|0)+56>>2]&31](X,4,4,9)|0;X=100}else X=100}else{q=0;X=100}else{q=5;X=100}else{q=s;X=100}while(0);if((X|0)==100)Sc(p);if((q|0)==0|(q|0)==5){if(n)c[n>>2]=c[V>>2];if(o)c[o>>2]=c[(c[c[U>>2]>>2]|0)+96>>2]}}else q=t;while(0);if(c[_>>2]|0){z=d+52|0;y=z+48|0;do{c[z>>2]=0;z=z+4|0}while((z|0)<(y|0))}p=d+44|0;if(a[p>>0]|0){if(!(a[$>>0]|0)){_=c[d+4>>2]|0;lc[c[(c[_>>2]|0)+56>>2]&31](_,0,1,9)|0}a[p>>0]=0;a[d+47>>0]=0}if(!(a[$>>0]|0)){$=c[d+4>>2]|0;lc[c[(c[$>>2]|0)+56>>2]&31]($,1,1,9)|0}a[Z>>0]=0;p=(q|0)!=0|(Y|0)==(f|0)?q:5}else p=8;while(0);i=aa;return p|0}function Qn(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=(c|0)<(e|0)?c:e;g=Vv(d,f,h)|0;a:do if(!g){b:do if(b){g=c-h|0;while(1){if((g|0)<=0)break;g=g+-1|0;if((a[d+(g+h)>>0]|0)!=32)break b}if(!g){g=e-h|0;while(1){if((g|0)<=0)break;g=g+-1|0;if((a[f+(g+h)>>0]|0)!=32)break b}if(!g){g=0;break a}}}while(0);g=c-e|0}while(0);return g|0}function Rn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=Bc(c,e,(b|0)<(d|0)?b:d)|0;return ((a|0)==0?b-d|0:a)|0}function Sn(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;y=i;i=i+16|0;if((i|0)>=(j|0))ba();w=y;p=c[e>>2]|0;a:do if(d){n=d;while(1)if(!(a[n>>0]|0))break;else n=n+1|0;o=n-d&1073741823;if((c[2189]|p&64|0)!=0&o>>>0>4?(Vv(d,14984,5)|0)==0:0){n=o+2|0;m=p|64;if(o){p=0;do{n=((a[d+p>>0]|0)==38&1)+n|0;p=p+1|0}while((p|0)<(o|0))}l=Pc(n)|0;if(l){do if((a[d+5>>0]|0)==47?(a[d+6>>0]|0)==47:0){n=7;while(1){s=a[d+n>>0]|0;if(s<<24>>24==0|s<<24>>24==47)break;n=n+1|0}if((n|0)==16){k=d+7|0;if(!(Vv(14992,k,9)|0)){n=0;p=16;k=0;break}}else if((n|0)==7){n=0;p=7;k=0;break}else k=d+7|0;c[w>>2]=n+-7;c[w+4>>2]=k;c[h>>2]=Wc(15008,w)|0;k=1;x=74;break a}else{n=0;p=5;k=0}while(0);b:while(1){u=l+(k+-1)|0;c:while(1){d:while(1){o=a[d+p>>0]|0;if(o<<24>>24==35|o<<24>>24==0)break b;q=p+1|0;if((o<<24>>24==37?(v=a[d+q>>0]|0,(a[10368+(v&255)>>0]&8)!=0):0)?(t=a[d+(p+2)>>0]|0,(a[10368+(t&255)>>0]&8)!=0):0){o=v;q=t;break}if(!n){p=q;x=38;break c}else if((n|0)==2){p=q;x=39;break c}else if((n|0)!=1){p=q;break c}if(!(o<<24>>24==38|o<<24>>24==61)){n=1;p=q;break c}if(!(a[u>>0]|0))p=q;else{p=q;x=36;break c}while(1){s=a[d+p>>0]|0;if(s<<24>>24==35|s<<24>>24==0)continue d;if((a[d+(p+-1)>>0]|0)==38)continue d;else p=p+1|0}}o=o<<24>>24;p=p+3|0;s=q<<24>>24;o=(0-(s>>>6&1)&9)+s&15|(0-(o>>>6&1)&9)+o<<4&240;if(o){x=30;break}q=(n|0)==0;while(1){o=a[d+p>>0]|0;if(o<<24>>24==35|o<<24>>24==0)continue c;if(q&o<<24>>24==63){n=0;continue c}if((n|0)==1){if(o<<24>>24==38|o<<24>>24==61){n=1;continue c}}else if((n|0)==2?o<<24>>24==38:0){n=2;continue c}p=p+1|0}}if((x|0)==30){x=0;o=o&255}else if((x|0)==36){x=0;if(o<<24>>24==38){a[l+k>>0]=0;o=0;n=1;k=k+1|0}else{o=0;n=2}}else if((x|0)==38){x=0;if(o<<24>>24==63)x=40;else n=0}else if((x|0)==39){x=0;if(o<<24>>24==38)x=40;else n=2}if((x|0)==40){x=0;o=0;n=1}a[l+k>>0]=o;k=k+1|0}if((n|0)==1){a[l+k>>0]=0;k=k+1|0}a[l+k>>0]=0;a[l+(k+1)>>0]=0;k=l;while(1)if(!(a[k>>0]|0))break;else k=k+1|0;k=(k-l&1073741823)+1|0;n=a[l+k>>0]|0;if(n<<24>>24){v=l+k|0;e:while(1){o=v;while(1){k=o+1|0;if(!(n<<24>>24)){n=o;break}n=a[k>>0]|0;o=k}u=n-v&1073741823;n=v+(u+1)|0;o=n;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;t=o-n&1073741823;if((u|0)==5)if(!(Vv(15048,v,5)|0)){d=15056;r=393216;s=-393217;k=15048;x=58}else k=b;else if((u|0)==4)if(!(Vv(15096,v,4)|0)){d=15104;r=m&135;s=-136;k=15176;x=58}else k=b;else if((u|0)==3){k=(Vv(15040,v,3)|0)==0;k=k?n:b}else k=b;if((x|0)==58){x=0;p=c[d>>2]|0;if(!p){x=65;break}else o=0;while(1){q=p;while(1)if(!(a[q>>0]|0))break;else q=q+1|0;if((t|0)==(q-p&1073741823|0)?(Vv(n,p,t)|0)==0:0){p=o;break}o=o+1|0;p=c[d+(o<<3)>>2]|0;if(!p){x=65;break e}}p=c[d+(p<<3)+4>>2]|0;if(!p){x=65;break}if((p&-129|0)>(r|0)){x=67;break}m=p|s&m;k=b}v=v+(u+2+t)|0;n=a[v>>0]|0;if(!(n<<24>>24)){x=72;break a}else b=k}if((x|0)==65){c[w>>2]=k;c[w+4>>2]=n;c[h>>2]=Wc(15184,w)|0;k=1;x=74;break}else if((x|0)==67){c[w>>2]=k;c[w+4>>2]=n;c[h>>2]=Wc(15208,w)|0;k=3;x=74;break}}else{k=b;x=72}}else k=7}else{m=o;x=70}}else{m=0;x=70}while(0);if((x|0)==70){l=Pc(m+2|0)|0;if(!l)k=7;else{gw(l|0,d|0,m|0)|0;a[l+m>>0]=0;a[l+(m+1)>>0]=0;m=p&-65;k=b;x=72}}if((x|0)==72){s=Gc(k)|0;c[f>>2]=s;if(!s){c[w>>2]=k;c[h>>2]=Wc(15232,w)|0;k=1;x=74}else{k=0;x=75}}if((x|0)==74){Sc(l);l=0;x=75}if((x|0)==75){c[e>>2]=m;c[g>>2]=l}i=y;return k|0}function Tn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;do if(!d){d=mg(84,0)|0;if(!d)e=8;else{b=d+0|0;g=b+84|0;do{a[b>>0]=0;b=b+1|0}while((b|0)<(g|0));e=9}}else{f=c[d+4>>2]|0;c[f+4>>2]=c[d>>2];e=f+48|0;d=c[e>>2]|0;if(!d){d=mg(84,0)|0;if(!d){c[e>>2]=0;c[f+52>>2]=22;e=8;break}else{b=d+0|0;g=b+84|0;do{a[b>>0]=0;b=b+1|0}while((b|0)<(g|0));c[e>>2]=d;c[f+52>>2]=22;e=9;break}}else e=9}while(0);if((e|0)==8){a[b+65>>0]=1;d=0}else if((e|0)==9)if(!(a[d+76>>0]|0)){e=d+77|0;b=d+8|0;g=b+64|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(g|0));a[e>>0]=1}return d|0}function Un(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();if(e){k=b+428|0;h=Zm(k,e,m)|0;if(!h)g=0;else g=c[h+8>>2]|0;if((g|0)==0&(f|0)!=0){h=e;while(1)if(!(a[h>>0]|0))break;else h=h+1|0;h=h-e&1073741823;f=h+61|0;g=ih(b,f,0)|0;if(g){bw(g|0,0,f|0)|0;f=g+60|0;c[g>>2]=f;a[g+4>>0]=1;c[g+20>>2]=f;a[g+24>>0]=2;c[g+40>>2]=f;a[g+44>>0]=3;gw(f|0,e|0,h|0)|0;a[g+(h+60)>>0]=0;h=Ek(k,c[g>>2]|0,g)|0;if(!h)l=10;else{a[b+65>>0]=1;ig(b,h);g=0}}else g=0}else l=10}else{g=c[b+8>>2]|0;l=10}if((l|0)==10)if(!g)g=0;else g=g+(((d&255)+-1|0)*20|0)|0;i=m;return g|0}function Vn(f,g,h){f=f|0;g=g|0;h=h|0;var 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;A=i;i=i+64|0;if((i|0)>=(j|0))ba();y=A;m=A+48|0;q=A+24|0;v=A+8|0;n=(g|0)==1;t=n?13184:13208;c[m>>2]=t;c[m+4>>2]=13224;c[m+8>>2]=n?13064:12960;c[m+12>>2]=0;c[v>>2]=f;c[v+8>>2]=g;u=v+12|0;c[u>>2]=0;c[v+4>>2]=h;Xm(v,3,m,0)|0;m=c[u>>2]|0;a:do if(!m){w=f+16|0;m=Wh(f,t,c[(c[w>>2]|0)+(g<<4)>>2]|0)|0;if(m){s=m+44|0;a[s>>0]=d[s>>0]|1}l=c[w>>2]|0;x=l+(g<<4)+4|0;m=c[x>>2]|0;if(!m){if(!n){k=0;break}k=(c[l+28>>2]|0)+78|0;b[k>>1]=e[k>>1]|1;k=0;break}c[(c[m+4>>2]|0)+4>>2]=c[m>>2];do if(!(a[m+8>>0]|0)){m=ug(m,0)|0;if((m|0)==516)k=16344;else if(!m){m=c[x>>2]|0;s=1;break}else z=10;if((z|0)==10){k=m&255;if(k>>>0>26|(k|0)==2)k=16328;else k=c[15488+(k<<2)>>2]|0}c[y>>2]=k;$g(h,f,10344,y);k=m;z=38;break a}else s=0;while(0);sm(m,1,q);r=q+4|0;sm(c[x>>2]|0,2,r);o=q+8|0;sm(c[x>>2]|0,3,o);sm(c[x>>2]|0,4,q+12|0);n=q+16|0;sm(c[x>>2]|0,5,n);p=l+(g<<4)+12|0;m=c[p>>2]|0;c[m>>2]=c[q>>2];l=c[n>>2]|0;do if(l){if(!g){n=l&3;n=(n|0)==0?1:n&255;a[f+62>>0]=n;z=19;break}n=a[f+62>>0]|0;if((l|0)==(n&255|0))z=19;else{$g(h,f,13232,y);k=1}}else{n=(c[(c[w>>2]|0)+(g<<4)+12>>2]|0)+78|0;b[n>>1]=e[n>>1]|4;n=a[f+62>>0]|0;z=19}while(0);do if((z|0)==19){a[m+77>>0]=n;n=m+80|0;if(!(c[n>>2]|0)){m=c[o>>2]|0;if((m|0)<=-1)m=(m|0)==-2147483648?2147483647:0-m|0;m=(m|0)==0?2e3:m;c[n>>2]=m;lq(c[x>>2]|0,m);m=c[p>>2]|0}l=c[r>>2]|0;n=l&255;m=m+76|0;if(n<<24>>24){a[m>>0]=n;if((n&255)>4){$g(h,f,13304,y);k=1;break}}else a[m>>0]=1;if((g|0)==0&(l|0)>3){r=f+24|0;c[r>>2]=c[r>>2]&-32769}c[y>>2]=c[(c[w>>2]|0)+(g<<4)>>2];c[y+4>>2]=t;m=qh(f,13328,y)|0;t=f+284|0;r=c[t>>2]|0;c[t>>2]=0;l=Me(f,m,22,v,0)|0;c[t>>2]=r;l=(l|0)==0?c[u>>2]|0:l;ig(f,m);m=(l|0)==0;if(m)Ym(f,g)|0;if(!(a[f+65>>0]|0)){if(!m){k=l;z=34}}else{Ag(f);k=7;z=34}if((z|0)==34?(c[f+24>>2]&65536|0)==0:0)break;k=(c[(c[w>>2]|0)+(g<<4)+12>>2]|0)+78|0;b[k>>1]=e[k>>1]|1;k=0}while(0);if(!s)z=38;else{qn(c[x>>2]|0)|0;z=38}}else{k=m;z=38}while(0);if((z|0)==38)if((k|0)==7|(k|0)==3082)a[f+65>>0]=1;i=A;return k|0}function Wn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+80|0;if((i|0)>=(j|0))ba();n=o;c[12066]=c[2708];if(!(c[12067]|0))c[12067]=Hb(48336)|0;if(!(c[12068]|0))c[12068]=Hb(48352)|0;g=n+12|0;h=0;f=0;do{if((((f|0)!=0?(nc[c[47552+52>>2]&127](f,n)|0)==0:0)?(c[g>>2]&61440|0)==16384:0)?(nc[c[47552+28>>2]&127](f,7)|0)==0:0)break;f=c[48264+(h<<2)>>2]|0;h=h+1|0}while(h>>>0<7);m=(f|0)==0?28928:f;if(((cw(m|0)|0)+25|0)>>>0>>0){b=b+-18|0;do{c[n>>2]=m;Yc(b,e,48248,n)|0;g=cw(e|0)|0;f=e+g|0;_c(15,f);l=e+(g+15)|0;k=0;h=g;while(1){a[f>>0]=a[48184+(((d[f>>0]|0)%62|0)&255)>>0]|0;k=k+1|0;h=h+1|0;if((k|0)==15)break;else f=e+h|0}a[l>>0]=0;a[e+(g+16)>>0]=0}while((nc[c[47552+28>>2]&127](e,0)|0)==0);f=0}else f=1;i=o;return f|0}function Xn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+80|0;if((i|0)>=(j|0))ba();k=m;h=(d|0)!=0;f=h?d:420;g=b|524288;while(1){e=Yb[c[47552+4>>2]&63](a,g,f)|0;if((e|0)<0)if((c[(Db()|0)>>2]|0)==4)continue;else break;if((e|0)>2){l=6;break}hc[c[47552+16>>2]&127](e)|0;c[k>>2]=a;c[k+4>>2]=e;Zc(28,48120,k);if((Yb[c[47552+4>>2]&63](48168,b,d)|0)<0){e=-1;break}}if((l|0)==6)if(((h?(nc[c[47552+64>>2]&127](e,k)|0)==0:0)?(c[k+36>>2]|0)==0:0)?(c[k+12>>2]&511|0)!=(d|0):0)nc[c[47552+172>>2]&127](e,d)|0;i=m;return e|0}function Yn(a,b,d){a=a|0;b=b|0;d=d|0;if(hc[c[47552+16>>2]&127](b)|0){if(!a)b=0;else b=c[a+32>>2]|0;_n(4106,47856,b,d)|0}return}function Zn(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+80|0;if((i|0)>=(j|0))ba();g=h;d=h+4|0;f=a+18|0;do if(!(b[f>>1]&256)){if(nc[c[47552+64>>2]&127](c[a+12>>2]|0,d)|0){c[g>>2]=c[a+32>>2];Zc(28,48592,g);b[f>>1]=e[f>>1]|0|256;break}d=c[d+16>>2]|0;if(!d){if(!(b[f>>1]&32)){c[g>>2]=c[a+32>>2];Zc(28,48616,g);b[f>>1]=e[f>>1]|0|256;break}}else if(d>>>0>1){c[g>>2]=c[a+32>>2];Zc(28,48648,g);b[f>>1]=e[f>>1]|0|256;break}if(to(a)|0){c[g>>2]=c[a+32>>2];Zc(28,48680,g);b[f>>1]=e[f>>1]|0|256}}while(0);i=h;return}function _n(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;f=i;i=i+32|0;if((i|0)>=(j|0))ba();g=f;k=c[(Db()|0)>>2]|0;h=Nb(k|0)|0;c[g>>2]=e;c[g+4>>2]=k;c[g+8>>2]=b;c[g+12>>2]=(d|0)==0?10360:d;c[g+16>>2]=h;Zc(a,47864,g);i=f;return a|0}function $n(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=a+40|0;d=c[i>>2]|0;h=d<<1;h=h>>>0<256?256:h;if((d|0)!=0?(b=c[3164]|0,(b|0)!=0):0)jc[b&3]();b=h<<2;g=mg(b,0)|0;d=(g|0)==0;if(!d)bw(g|0,0,b|0)|0;if((c[i>>2]|0)!=0?(e=c[3166]|0,(e|0)!=0):0)jc[e&3]();if(!d){e=c[i>>2]|0;f=a+44|0;b=c[f>>2]|0;if(e){a=0;do{d=c[b+(a<<2)>>2]|0;if(d){do{k=d+16|0;j=d;d=c[k>>2]|0;b=g+((((c[j+8>>2]|0)>>>0)%(h>>>0)|0)<<2)|0;c[k>>2]=c[b>>2];c[b>>2]=j}while((d|0)!=0);b=c[f>>2]|0}a=a+1|0}while(a>>>0>>0)}Sc(b);c[f>>2]=g;c[i>>2]=h}return}function ao(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=a+24|0;h=a+16|0;d=a+4|0;a:do if((c[h>>2]|0)>>>0>(c[d>>2]|0)>>>0)do{e=c[g>>2]|0;if(!e)break a;bo(e);f=c[e+20>>2]|0;b=(c[f+44>>2]|0)+((((c[e+8>>2]|0)>>>0)%((c[f+40>>2]|0)>>>0)|0)<<2)|0;while(1){i=c[b>>2]|0;a=i+16|0;if((i|0)==(e|0))break;else b=a}c[b>>2]=c[a>>2];a=f+36|0;c[a>>2]=(c[a>>2]|0)+-1;eo(e)}while((c[h>>2]|0)>>>0>(c[d>>2]|0)>>>0);while(0);return}function bo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[b+20>>2]|0;f=c[e>>2]|0;g=b+28|0;h=c[g>>2]|0;i=b+24|0;d=c[i>>2]|0;if(!h)c[f+20>>2]=d;else{c[h+24>>2]=d;d=c[i>>2]|0}if(!d)c[f+24>>2]=h;else c[d+28>>2]=h;c[i>>2]=0;c[g>>2]=0;a[b+12>>0]=1;d=e+32|0;c[d>>2]=(c[d>>2]|0)+-1;return}function co(b,d,e){b=b|0;d=d|0;e=e|0;var 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;k=c[b>>2]|0;q=b+36|0;i=c[q>>2]|0;g=c[b+32>>2]|0;h=i-g|0;o=(e|0)==1;if(o)if(h>>>0<(c[k+12>>2]|0)>>>0?h>>>0<(c[b+24>>2]|0)>>>0:0){if((c[3155]|0)!=0?((c[b+8>>2]|0)+(c[b+4>>2]|0)|0)<=(c[3154]|0):0)e=12648|0;else e=9060|0;if(!((c[e>>2]|0)!=0&g>>>0>>0))n=8;else f=0}else f=0;else n=8;do if((n|0)==8){m=b+40|0;if(i>>>0>=(c[m>>2]|0)>>>0)$n(b);j=b+12|0;do if((c[j>>2]|0)!=0?(f=c[k+24>>2]|0,(f|0)!=0):0){if(((c[q>>2]|0)+1|0)>>>0<(c[b+20>>2]|0)>>>0?(c[k+16>>2]|0)>>>0<(c[k+4>>2]|0)>>>0:0){if((c[3155]|0)!=0?((c[b+8>>2]|0)+(c[b+4>>2]|0)|0)<=(c[3154]|0):0)e=12648|0;else e=9060|0;if(!(c[e>>2]|0)){n=23;break}}e=f+20|0;g=c[e>>2]|0;h=(c[g+44>>2]|0)+((((c[f+8>>2]|0)>>>0)%((c[g+40>>2]|0)>>>0)|0)<<2)|0;while(1){r=c[h>>2]|0;i=r+16|0;if((r|0)==(f|0))break;else h=i}c[h>>2]=c[i>>2];i=g+36|0;c[i>>2]=(c[i>>2]|0)+-1;bo(f);e=c[e>>2]|0;if(((c[e+8>>2]|0)+(c[e+4>>2]|0)|0)==((c[b+8>>2]|0)+(c[b+4>>2]|0)|0)){l=k+16|0;c[l>>2]=(c[j>>2]|0)-(c[e+12>>2]|0)+(c[l>>2]|0);break}else{eo(f);n=23;break}}else n=23;while(0);if((n|0)==23){if(o?(l=c[3164]|0,(l|0)!=0):0)jc[l&3]();e=b+4|0;g=Co((c[e>>2]|0)+32+(c[b+8>>2]|0)|0)|0;e=c[e>>2]|0;f=g+e|0;if(g){c[f>>2]=g;c[g+(e+4)>>2]=g+(e+32);if(c[j>>2]|0){n=(c[b>>2]|0)+16|0;c[n>>2]=(c[n>>2]|0)+1}}else f=0;if(o?(p=c[3166]|0,(p|0)!=0):0)jc[p&3]();if(!f){f=0;break}}g=(d>>>0)%((c[m>>2]|0)>>>0)|0;c[q>>2]=(c[q>>2]|0)+1;c[f+8>>2]=d;n=b+44|0;c[f+16>>2]=c[(c[n>>2]|0)+(g<<2)>>2];c[f+20>>2]=b;c[f+28>>2]=0;c[f+24>>2]=0;a[f+12>>0]=1;c[c[f+4>>2]>>2]=0;c[(c[n>>2]|0)+(g<<2)>>2]=f;g=b+28|0;if((c[g>>2]|0)>>>0>>0)c[g>>2]=d}while(0);return f|0}function eo(a){a=a|0;var b=0;if((a|0)!=0?(b=c[a+20>>2]|0,Xk(c[a>>2]|0),(c[b+12>>2]|0)!=0):0){b=(c[b>>2]|0)+16|0;c[b>>2]=(c[b>>2]|0)+-1}return}function fo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=b+40|0;if(c[h>>2]|0){i=b+44|0;f=b+36|0;g=0;do{e=(c[i>>2]|0)+(g<<2)|0;b=c[e>>2]|0;a:do if(b)do{while(1){if((c[b+8>>2]|0)>>>0>>0)break;c[f>>2]=(c[f>>2]|0)+-1;c[e>>2]=c[b+16>>2];if(!(a[b+12>>0]|0))bo(b);eo(b);b=c[e>>2]|0;if(!b)break a}e=b+16|0;b=c[e>>2]|0}while((b|0)!=0);while(0);g=g+1|0}while(g>>>0<(c[h>>2]|0)>>>0)}return}function go(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=c[b>>2]|0;g=c[(c[f+32>>2]|0)+88>>2]|0;h=((g|0)<0)<<31>>31;if(!((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0)){d=mg(d,e)|0;if(!d){Nd(b);d=0}}else{c[b+20>>2]=18;a[b+25>>0]=1;Tg(f,10096,-1,1,0)|0;d=0}return d|0}function ho(b){b=b|0;var c=0,d=0,e=0,f=0;do if(b){c=a[b>>0]|0;d=c<<24>>24;if((d|0)==96|(d|0)==34|(d|0)==39)f=c;else if((d|0)==91)f=93;else break;d=1;e=0;while(1){c=a[b+d>>0]|0;if(c<<24>>24==f<<24>>24){d=d+1|0;c=b+e|0;if((a[b+d>>0]|0)!=f<<24>>24)break;a[c>>0]=f}else a[b+e>>0]=c;d=d+1|0;e=e+1|0}a[c>>0]=0}while(0);return}function io(b,f,g,k){b=b|0;f=f|0;g=g|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,O=0,P=0,Q=0,R=0,S=0,T=0;S=i;i=i+176|0;if((i|0)>=(j|0))ba();P=S+64|0;q=S+132|0;p=S+128|0;o=S+124|0;r=S+56|0;L=S+48|0;Q=S+136|0;O=S;n=k+0|0;m=n+48|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(m|0));a:do if(f){l=c[g>>2]|0;b:do if(((d[10064+(e[l+8>>1]&31)>>0]|0)+-1|0)>>>0>=2){n=Og(l,1)|0;if(!n){l=1;break a}m=(a[n>>0]|0)==45;l=m?n+1|0:n;c[P>>2]=4;c[P+4>>2]=0;c[P+8>>2]=9999;c[P+12>>2]=45;c[P+16>>2]=q;c[P+20>>2]=2;c[P+24>>2]=1;c[P+28>>2]=12;c[P+32>>2]=45;c[P+36>>2]=p;c[P+40>>2]=2;c[P+44>>2]=1;c[P+48>>2]=31;c[P+52>>2]=0;c[P+56>>2]=o;do if((nq(l,P)|0)==3){l=l+10|0;while(1){I=a[l>>0]|0;if(I<<24>>24==84?1:(a[10368+(I&255)>>0]&1)!=0)l=l+1|0;else break}if(oq(l,k)|0){if(a[l>>0]|0)break;a[k+41>>0]=0}a[k+42>>0]=0;a[k+40>>0]=1;I=c[q>>2]|0;c[k+8>>2]=m?0-I|0:I;c[k+12>>2]=c[p>>2];c[k+16>>2]=c[o>>2];if(!(a[k+43>>0]|0))break b;jo(k);break b}while(0);if(oq(n,k)|0){if(!($c(n,20080)|0))if(!(mq(b,k)|0))break;else{l=1;break a}else l=n;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;if(!(Pl(n,r,l-n&1073741823,1)|0)){l=1;break a}s=+h[r>>3]*864.0e5+.5;H=+N(s)>=1.0?(s>0.0?~~+$(+M(s/4294967296.0),4294967295.0)>>>0:~~+Z((s-+(~~s>>>0))/4294967296.0)>>>0):0;I=k;c[I>>2]=~~s>>>0;c[I+4>>2]=H;a[k+42>>0]=1}}else{s=+Qg(l)*864.0e5+.5;H=+N(s)>=1.0?(s>0.0?~~+$(+M(s/4294967296.0),4294967295.0)>>>0:~~+Z((s-+(~~s>>>0))/4294967296.0)>>>0):0;I=k;c[I>>2]=~~s>>>0;c[I+4>>2]=H;a[k+42>>0]=1}while(0);if((f|0)>1){l=k+40|0;v=k+41|0;w=k+43|0;x=k+42|0;y=Q+8|0;z=y;A=Q+9|0;B=k+24|0;D=k+20|0;E=k+32|0;F=k+16|0;G=k+12|0;H=Q+1|0;I=k+8|0;J=1;while(1){p=Og(c[g+(J<<2)>>2]|0,1)|0;if(!p){l=1;break a}c[P>>2]=1;r=0;do{q=a[p+r>>0]|0;if(!(q<<24>>24))break;a[Q+r>>0]=a[9328+(q&255)>>0]|0;r=r+1|0}while((r|0)<29);a[Q+r>>0]=0;c:do switch(a[Q>>0]|0){case 108:{if(!(Wv(Q,19936)|0)){jo(k);m=pq(k,b,P)|0;R=k;m=fw(c[R>>2]|0,c[R+4>>2]|0,m|0,C|0)|0;R=k;c[R>>2]=m;c[R+4>>2]=C;a[l>>0]=0;a[v>>0]=0;a[w>>0]=0;R=82}else R=82;break}case 117:{if((Wv(Q,19952)|0)==0?(a[x>>0]|0)!=0:0){m=k;m=fw(c[m>>2]|0,c[m+4>>2]|0,43200,0)|0;m=mw(m|0,C|0,86400,0)|0;m=fw(m|0,C|0,1045635584,49096)|0;r=k;c[r>>2]=m;c[r+4>>2]=C;a[l>>0]=0;a[v>>0]=0;a[w>>0]=0;c[P>>2]=0;r=0;break c}if(!(Wv(Q,19968)|0)){jo(k);q=pq(k,b,P)|0;p=C;r=c[P>>2]|0;if(!r){m=k;m=$v(c[m>>2]|0,c[m+4>>2]|0,q|0,p|0)|0;R=k;c[R>>2]=m;c[R+4>>2]=C;a[l>>0]=0;a[v>>0]=0;a[w>>0]=0;R=pq(k,b,P)|0;R=$v(q|0,p|0,R|0,C|0)|0;m=k;m=fw(R|0,C|0,c[m>>2]|0,c[m+4>>2]|0)|0;R=k;c[R>>2]=m;c[R+4>>2]=C;R=82}}else R=82;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 45:case 43:{p=1;while(1){r=Q+p|0;q=a[r>>0]|0;if(q<<24>>24==58|q<<24>>24==0){q=r;break}if(!(a[10368+(q&255)>>0]&1))p=p+1|0;else{q=r;break}}if(!(Pl(Q,L,p,1)|0)){c[P>>2]=1;r=1;break c}r=a[q>>0]|0;if(r<<24>>24==58){r=((d[Q>>0]|0)+-48|0)>>>0<10?Q:H;n=O+0|0;m=n+48|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(m|0));if(oq(r,O)|0){R=82;break c}jo(O);r=O;r=fw(c[r>>2]|0,c[r+4>>2]|0,-432e5,-1)|0;r=nw(r|0,C|0,864e5,0)|0;q=C;m=O;c[m>>2]=r;c[m+4>>2]=q;if((a[Q>>0]|0)==45){r=$v(0,0,r|0,q|0)|0;q=C;m=O;c[m>>2]=r;c[m+4>>2]=q}jo(k);a[l>>0]=0;a[v>>0]=0;a[w>>0]=0;m=k;m=fw(c[m>>2]|0,c[m+4>>2]|0,r|0,q|0)|0;r=k;c[r>>2]=m;c[r+4>>2]=C;c[P>>2]=0;r=0;break c}if(a[10368+(r&255)>>0]&1){q=Q+(p+1)|0;while(1){r=a[q>>0]|0;if(!(a[10368+(r&255)>>0]&1))break;else q=q+1|0}}if(!(r<<24>>24))r=q;else{r=q;do r=r+1|0;while((a[r>>0]|0)!=0)}r=r-q&1073741823;if((r+-3|0)>>>0>7)R=82;else{p=r+-1|0;o=q+p|0;if((a[o>>0]|0)==115){a[o>>0]=0;r=p}jo(k);c[P>>2]=0;t=+h[L>>3];u=t<0.0?-.5:.5;do if((r|0)==3)if(!(Wv(q,20024)|0)){s=t*864.0e5+u;n=+N(s)>=1.0?(s>0.0?~~+$(+M(s/4294967296.0),4294967295.0)>>>0:~~+Z((s-+(~~s>>>0))/4294967296.0)>>>0):0;m=k;n=fw(c[m>>2]|0,c[m+4>>2]|0,~~s>>>0|0,n|0)|0;m=k;c[m>>2]=n;c[m+4>>2]=C}else R=80;else if((r|0)==4){if(!(Wv(q,20032)|0)){s=t*36.0e5+u;n=+N(s)>=1.0?(s>0.0?~~+$(+M(s/4294967296.0),4294967295.0)>>>0:~~+Z((s-+(~~s>>>0))/4294967296.0)>>>0):0;m=k;n=fw(c[m>>2]|0,c[m+4>>2]|0,~~s>>>0|0,n|0)|0;m=k;c[m>>2]=n;c[m+4>>2]=C;break}if(!(Wv(q,20016)|0)){m=~~t;ko(k);lo(k);c[I>>2]=(c[I>>2]|0)+m;a[x>>0]=0;jo(k);s=+(m|0);if(s!=t){s=u+(t-s)*365.0*864.0e5;n=+N(s)>=1.0?(s>0.0?~~+$(+M(s/4294967296.0),4294967295.0)>>>0:~~+Z((s-+(~~s>>>0))/4294967296.0)>>>0):0;m=k;n=fw(c[m>>2]|0,c[m+4>>2]|0,~~s>>>0|0,n|0)|0;m=k;c[m>>2]=n;c[m+4>>2]=C}}else R=80}else if((r|0)==6){if(!(Wv(q,20040)|0)){s=t*6.0e4+u;n=+N(s)>=1.0?(s>0.0?~~+$(+M(s/4294967296.0),4294967295.0)>>>0:~~+Z((s-+(~~s>>>0))/4294967296.0)>>>0):0;m=k;n=fw(c[m>>2]|0,c[m+4>>2]|0,~~s>>>0|0,n|0)|0;m=k;c[m>>2]=n;c[m+4>>2]=C;break}if(!(Wv(q,20048)|0)){s=t*1.0e3+u;n=+N(s)>=1.0?(s>0.0?~~+$(+M(s/4294967296.0),4294967295.0)>>>0:~~+Z((s-+(~~s>>>0))/4294967296.0)>>>0):0;m=k;n=fw(c[m>>2]|0,c[m+4>>2]|0,~~s>>>0|0,n|0)|0;m=k;c[m>>2]=n;c[m+4>>2]=C}else R=80}else if((r|0)==5?(Wv(q,20008)|0)==0:0){ko(k);lo(k);m=~~t;n=(c[G>>2]|0)+m|0;o=(((n|0)>0?-1:-12)+n|0)/12|0;c[I>>2]=(c[I>>2]|0)+o;c[G>>2]=(_(o,-12)|0)+n;a[x>>0]=0;jo(k);s=+(m|0);if(s!=t){s=u+(t-s)*30.0*864.0e5;n=+N(s)>=1.0?(s>0.0?~~+$(+M(s/4294967296.0),4294967295.0)>>>0:~~+Z((s-+(~~s>>>0))/4294967296.0)>>>0):0;m=k;n=fw(c[m>>2]|0,c[m+4>>2]|0,~~s>>>0|0,n|0)|0;m=k;c[m>>2]=n;c[m+4>>2]=C}}else R=80;while(0);if((R|0)==80)c[P>>2]=1;a[l>>0]=0;a[v>>0]=0;a[w>>0]=0;R=82}break}case 119:{if(!(Xv(Q,19976,8)|0)){r=y;while(1)if(!(a[r>>0]|0))break;else r=r+1|0;if((Pl(y,L,r-z&1073741823,1)|0)!=0?(s=+h[L>>3],K=~~s,+(K|0)==s&(K|0)>-1&s<7.0):0){ko(k);lo(k);a[w>>0]=0;a[x>>0]=0;jo(k);m=k;r=c[m>>2]|0;m=c[m+4>>2]|0;p=fw(r|0,m|0,1296e5,0)|0;p=mw(p|0,C|0,864e5,0)|0;p=nw(p|0,C|0,7,0)|0;n=C;T=((K|0)<0)<<31>>31;o=(n|0)>(T|0)|(n|0)==(T|0)&p>>>0>K>>>0;q=fw(p|0,n|0,-7,-1)|0;n=$v(K|0,T|0,(o?q:p)|0,(o?C:n)|0)|0;n=ow(n|0,C|0,864e5,0)|0;m=fw(n|0,C|0,r|0,m|0)|0;r=k;c[r>>2]=m;c[r+4>>2]=C;a[l>>0]=0;a[v>>0]=0;a[w>>0]=0;c[P>>2]=0;r=0}else R=82}else R=82;break}case 115:{if(!(Xv(Q,19992,9)|0)){ko(k);a[v>>0]=1;c[B>>2]=0;c[D>>2]=0;h[E>>3]=0.0;a[w>>0]=0;a[x>>0]=0;if(!(Wv(A,20008)|0)){c[F>>2]=1;c[P>>2]=0;r=0;break c}if(!(Wv(A,20016)|0)){ko(k);c[G>>2]=1;c[F>>2]=1;c[P>>2]=0;r=0;break c}if(!(Wv(A,20024)|0)){c[P>>2]=0;r=0}else R=82}else R=82;break}default:R=82}while(0);if((R|0)==82){R=0;r=c[P>>2]|0}J=J+1|0;if(r){l=1;break a}if((J|0)>=(f|0)){l=0;break a}}}else l=0}else l=mq(b,k)|0;while(0);i=S;return l|0}function jo(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0;i=b+42|0;if(!(a[i>>0]|0)){j=b+40|0;if(a[j>>0]|0){e=c[b+8>>2]|0;d=c[b+12>>2]|0;f=c[b+16>>2]|0;if((d|0)<3)g=4}else{f=1;d=1;e=2e3;g=4}if((g|0)==4){d=d+12|0;e=e+-1|0}n=(+(f+2+((e|0)/-100|0)+((e|0)/400|0)+(((e*36525|0)+172251900|0)/100|0)+(((d*306001|0)+306001|0)/1e4|0)|0)+-1524.5)*864.0e5;e=~~n>>>0;f=+N(n)>=1.0?(n>0.0?~~+$(+M(n/4294967296.0),4294967295.0)>>>0:~~+Z((n-+(~~n>>>0))/4294967296.0)>>>0):0;d=b;c[d>>2]=e;c[d+4>>2]=f;a[i>>0]=1;d=b+41|0;if((a[d>>0]|0)!=0?(k=_(c[b+20>>2]|0,36e5)|0,k=((c[b+24>>2]|0)*6e4|0)+k|0,n=+h[b+32>>3]*1.0e3,l=fw(~~n>>>0|0,(+N(n)>=1.0?(n>0.0?~~+$(+M(n/4294967296.0),4294967295.0)>>>0:~~+Z((n-+(~~n>>>0))/4294967296.0)>>>0):0)|0,e|0,f|0)|0,k=fw(l|0,C|0,k|0,((k|0)<0)<<31>>31|0)|0,l=C,m=b,c[m>>2]=k,c[m+4>>2]=l,m=b+43|0,(a[m>>0]|0)!=0):0){f=(c[b+28>>2]|0)*6e4|0;f=$v(k|0,l|0,f|0,((f|0)<0)<<31>>31|0)|0;e=b;c[e>>2]=f;c[e+4>>2]=C;a[j>>0]=0;a[d>>0]=0;a[m>>0]=0}}return}function ko(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=b+40|0;if(!(a[g>>0]|0)){if(!(a[b+42>>0]|0)){d=2e3;e=1;f=1}else{d=b;d=fw(c[d>>2]|0,c[d+4>>2]|0,432e5,0)|0;d=mw(d|0,C|0,864e5,0)|0;h=~~((+(d|0)+-1867216.25)/36524.25);h=d+1525+h+((h|0)/-4|0)|0;d=~~((+(h|0)+-122.1)/365.25);h=h-((d*36525|0)/100|0)|0;f=~~(+(h|0)/30.6001);e=((f|0)<14?-1:-13)+f|0;d=((e|0)>2?-4716:-4715)+d|0;f=h-~~(+(f|0)*30.6001)|0}c[b+16>>2]=f;c[b+12>>2]=e;c[b+8>>2]=d;a[g>>0]=1}return}function lo(b){b=b|0;var d=0,e=0,f=0,g=0,i=0.0;d=b+41|0;if(!(a[d>>0]|0)){jo(b);g=b;g=fw(c[g>>2]|0,c[g+4>>2]|0,432e5,0)|0;g=nw(g|0,C|0,864e5,0)|0;i=+(g|0)/1.0e3;g=~~i;f=(g|0)/3600|0;c[b+20>>2]=f;f=(_(f,-3600)|0)+g|0;e=(f|0)/60|0;c[b+24>>2]=e;h[b+32>>3]=i-+(g|0)+ +(f+(_(e,-60)|0)|0);a[d>>0]=1}return}function mo(a){a=a|0;ig(c[a+52>>2]|0,a);return}function no(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;i=b+65|0;do if(!(a[i>>0]|0)){if(!d){h=ih(b,f,g)|0;break}if((c[b+276>>2]|0)>>>0<=d>>>0?(c[b+280>>2]|0)>>>0>d>>>0:0){i=b+248|0;if(!(0>>0|(0==(g|0)?(e[i>>1]|0)>>>0>>0:0))){h=d;break}h=ih(b,f,g)|0;if(!h){h=0;break}gw(h|0,d|0,e[i>>1]|0)|0;ig(b,d);break}if((Hc()|0)==0?(h=ng(d,f,g)|0,(h|0)!=0):0)break;a[i>>0]=1;h=0}else h=0;while(0);return h|0}function oo(a,d){a=a|0;d=d|0;var e=0,f=0;if(!a)a=0;else{f=c[a+4>>2]|0;c[f+4>>2]=c[a>>2];f=f+22|0;a=b[f>>1]|0;if((d|0)>-1){e=a&65535;a=e&65531;b[f>>1]=a;if(d){a=(e|4)&65535;b[f>>1]=a}}a=(a&65535)>>>2&1}return a|0}function po(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=c[b+4>>2]|0;c[h+4>>2]=c[b>>2];h=c[h>>2]|0;f=e&3;if((f|0)!=1){g=a[h+12>>0]|0;b=h+7|0;a[b>>0]=g<<24>>24!=0&1;if((f|0)==3)g=g<<24>>24==0&1;else g=0}else{b=h+7|0;a[b>>0]=1;g=0}a[h+8>>0]=g;do if(!(a[b>>0]|0)){if(e&4){a[h+11>>0]=3;a[h+9>>0]=3;b=3;break}a[h+11>>0]=2;b=h+9|0;if(!(e&8)){a[b>>0]=2;b=2;break}else{a[b>>0]=3;b=2;break}}else{a[h+11>>0]=0;a[h+9>>0]=0;b=0}while(0);if(g<<24>>24)b=(b&255|32)&255;a[h+10>>0]=b;b=h+20|0;f=d[b>>0]|0;a[b>>0]=(e&16|0)==0?f|1:f&254;return}function qo(a){a=a|0;var b=0,d=0;d=a+12|0;b=c[d>>2]|0;if((b|0)>-1){Yn(a,b,27311);c[d>>2]=-1}Sc(c[a+28>>2]|0);b=a+0|0;d=b+44|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));return}function ro(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=f&131071;while(1){h=_a(a|0,b|0,0)|0;if(!((h|0)==(b|0)&(((h|0)<0)<<31>>31|0)==(d|0))){j=3;break}h=Yb[c[47552+136>>2]&63](a,e,i)|0;if((h|0)>=0)break;f=c[(Db()|0)>>2]|0;if((f|0)!=4){j=9;break}}if((j|0)==3)if(!g)h=-1;else{if((h|0)==-1)h=c[(Db()|0)>>2]|0;else h=0;c[g>>2]=h;h=-1}else if((j|0)==9)if(g)c[g>>2]=f;return h|0}function so(a,d,f){a=a|0;d=d|0;f=f|0;var g=0;g=c[f>>2]|0;do if((g|0)>=0){d=d&255;if(!g){f=a+18|0;b[f>>1]=(e[f>>1]|0)&(d^65535);break}else{f=a+18|0;b[f>>1]=e[f>>1]|0|d;break}}else c[f>>2]=((e[a+18>>1]|0)&(d&255)|0)!=0&1;while(0);return}function to(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+80|0;if((i|0)>=(j|0))ba();d=e;b=a+8|0;if(c[b>>2]|0)if(!(nc[c[47552+52>>2]&127](c[a+32>>2]|0,d)|0))b=(c[d+72>>2]|0)!=(c[(c[b>>2]|0)+4>>2]|0);else b=1;else b=0;i=e;return b&1|0}function uo(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();l=m;k=m+8|0;h=(c[(c[a+8>>2]|0)+20>>2]|0)+12|0;if((c[h>>2]|0)>-1){c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;b[k>>1]=d;b[k+2>>1]=0;c[k+4>>2]=f;c[k+8>>2]=g;d=a+18|0;g=((b[d>>1]&512)>>>9)+13|0;f=c[11910]|0;h=c[h>>2]|0;c[l>>2]=k;h=(Yb[f&63](h,g,l)|0)!=-1;b[d>>1]=(e[d>>1]|0)&65023;h=h?0:5}else h=0;i=m;return h|0}function vo(a){a=a|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0;k=c[(c[a+8>>2]|0)+20>>2]|0;if((k|0)!=0?(c[k+28>>2]|0)==0:0){d=dc[c[47552+292>>2]&7]()|0;if((d|0)<32768)g=1;else g=(d|0)/32768|0;h=k+20|0;if(!(b[h>>1]|0)){f=k+12|0;d=k+24|0}else{f=k+12|0;d=k+24|0;i=k+16|0;j=0;do{if((c[f>>2]|0)>-1)nc[c[47552+268>>2]&127](c[(c[d>>2]|0)+(j<<2)>>2]|0,c[i>>2]|0)|0;else Sc(c[(c[d>>2]|0)+(j<<2)>>2]|0);j=j+g|0}while((j|0)<(e[h>>1]|0))}Sc(c[d>>2]|0);d=c[f>>2]|0;if((d|0)>-1){Yn(a,d,29591);c[f>>2]=-1}c[(c[k>>2]|0)+20>>2]=0;Sc(k)}return}function wo(a){a=a|0;var b=0,d=0,e=0;d=(c[a+8>>2]|0)+28|0;b=c[d>>2]|0;if(b)do{e=b;b=c[b+8>>2]|0;Yn(a,c[e>>2]|0,26573);Sc(e)}while((b|0)!=0);c[d>>2]=0;return}function xo(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;l=i;i=i+32|0;if((i|0)>=(j|0))ba();h=l;g=l+8|0;k=c[d+8>>2]|0;f=b[d+18>>1]|0;if(!(f&1))if((a[k+13>>0]|0)!=0&(f&2)==0)f=4;else f=7;else if(!(f&2))f=4;else f=7;if((f|0)==4){f=k+13|0;if(!(a[f>>0]|0)){b[g+2>>1]=0;c[g+4>>2]=(c[2514]|0)+2;c[g+8>>2]=510;b[g>>1]=1;m=c[11910]|0;e=c[d+12>>2]|0;c[h>>2]=g;e=Yb[m&63](e,13,h)|0;if((e|0)>=0){a[f>>0]=1;f=k+24|0;c[f>>2]=(c[f>>2]|0)+1}}else e=0}else if((f|0)==7){g=c[11910]|0;f=c[d+12>>2]|0;c[h>>2]=e;e=Yb[g&63](f,13,h)|0}i=l;return e|0}function yo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;do if(b){f=c[b>>2]|0;if(!f){c[b>>2]=1;c[b+4>>2]=d;g=9;break}h=b+4|0;e=c[h>>2]|0;c[b>>2]=f+1;c[h>>2]=d;if(e){c[d>>2]=e;e=e+4|0;c[d+4>>2]=c[e>>2];f=c[e>>2]|0;if(!f)c[a+8>>2]=d;else c[f>>2]=d;c[e>>2]=d}else g=9}else g=9;while(0);if((g|0)==9){e=a+8|0;f=c[e>>2]|0;c[d>>2]=f;if(f)c[f+4>>2]=d;c[d+4>>2]=0;c[e>>2]=d}return}function zo(a,b){a=a|0;b=b|0;var d=0,e=0;if(b){if((c[b>>2]|0)>0){d=0;e=b+8|0;while(1){ig(a,c[e+4>>2]|0);ig(a,c[e+8>>2]|0);ig(a,c[e+12>>2]|0);ig(a,c[e+64>>2]|0);gg(a,c[e+16>>2]|0);Ik(a,c[e+20>>2]|0,1);Ck(a,c[e+44>>2]|0);Dk(a,c[e+48>>2]|0);d=d+1|0;if((d|0)>=(c[b>>2]|0))break;else e=e+72|0}}ig(a,b)}return}function Ao(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;d=Bo(a,d)|0;if((d|0)>0){e=a+12|0;gw((c[a+8>>2]|0)+(c[e>>2]|0)|0,b|0,d|0)|0;c[e>>2]=(c[e>>2]|0)+d}return}function Bo(b,d){b=b|0;d=d|0;var 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;i=b+25|0;do if(!(a[i>>0]|0)){g=a[b+24>>0]|0;if(!(g<<24>>24)){f=b+16|0;d=(c[f>>2]|0)+-1-(c[b+12>>2]|0)|0;a[i>>0]=2;c[f>>2]=0;break}j=b+8|0;h=c[j>>2]|0;h=(h|0)==(c[b+4>>2]|0)?0:h;k=b+12|0;o=c[k>>2]|0;f=((o|0)<0)<<31>>31;r=d+1|0;r=fw(o|0,f|0,r|0,((r|0)<0)<<31>>31|0)|0;p=C;f=fw(r|0,p|0,o|0,f|0)|0;o=C;m=c[b+20>>2]|0;n=((m|0)<0)<<31>>31;q=(o|0)>(n|0)|(o|0)==(n|0)&f>>>0>m>>>0;f=q?r:f;o=q?p:o;if((o|0)>(n|0)|(o|0)==(n|0)&f>>>0>m>>>0){cn(b);a[i>>0]=2;c[b+16>>2]=0;d=0;break}m=b+16|0;c[m>>2]=f;if(g<<24>>24==1)g=no(c[b>>2]|0,h,f,((f|0)<0)<<31>>31)|0;else g=Tc(h,f)|0;if(!g){cn(b);a[i>>0]=1;c[m>>2]=0;d=0;break}if((h|0)==0?(l=c[k>>2]|0,(l|0)>0):0)gw(g|0,c[j>>2]|0,l|0)|0;c[j>>2]=g;f=c[b>>2]|0;do if(!f)f=hc[c[8744+48>>2]&127](g)|0;else{if((c[f+276>>2]|0)>>>0<=g>>>0?(c[f+280>>2]|0)>>>0>g>>>0:0){f=e[f+248>>1]|0;break}f=hc[c[8744+48>>2]&127](g)|0}while(0);c[m>>2]=f}else d=0;while(0);return d|0}function Co(a){a=a|0;var b=0,d=0;if((c[3154]|0)>=(a|0)?(b=c[3160]|0,(b|0)!=0):0){c[3160]=c[b>>2];d=c[3161]|0;c[3161]=d+-1;c[3162]=(d|0)<=(c[3156]|0)&1;c[2173]=a;if((c[2183]|0)>>>0>>0)c[2183]=a;d=(c[2167]|0)+1|0;c[2167]=d;if(d>>>0>(c[2177]|0)>>>0)c[2177]=d}else{b=mg(a,((a|0)<0)<<31>>31)|0;if(b){d=hc[c[8744+48>>2]&127](b)|0;c[2173]=a;if((c[2183]|0)>>>0>>0)c[2183]=a;d=(c[2168]|0)+d|0;c[2168]=d;if(d>>>0>(c[2178]|0)>>>0)c[2178]=d}else b=0}return b|0}function Do(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=a+20|0;if(c[h>>2]|0){f=a+24|0;i=Yb[c[8744+120>>2]&63](b,(c[f>>2]|0)+40|0,d[a+28>>0]|0)|0;if(!i)e=7;else{g=c[2217]|0;e=c[a+16>>2]|0;if((e|0)<=-1){j=ow(e|0,((e|0)<0)<<31>>31|0,-1024,-1)|0;e=(c[f>>2]|0)+(c[h>>2]|0)|0;e=mw(j|0,C|0,e|0,((e|0)<0)<<31>>31|0)|0}fc[g&15](i,e);e=a+40|0;f=c[e>>2]|0;if(f)_b[c[8744+148>>2]&31](f);c[e>>2]=i;c[a+44>>2]=0;c[h>>2]=b;e=0}}else e=0;return e|0}function Eo(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;f=c[a+208>>2]|0;if(((f|0)!=0?(b[f+40>>1]|0)>-1:0)?(e=c[f+72>>2]|0,(e|0)!=0):0){f=e;h=8}else h=4;do if((h|0)==4){f=g;c[f>>2]=0;c[f+4>>2]=0;f=c[a+60>>2]|0;e=c[f>>2]|0;if(!e){e=-1;f=-1}else{e=nc[c[e+24>>2]&127](f,g)|0;if(e)break;e=g;e=fw(c[e>>2]|0,c[e+4>>2]|0,-1,-1)|0;f=C}g=c[a+152>>2]|0;h=((g|0)<0)<<31>>31;f=fw(e|0,f|0,g|0,h|0)|0;f=mw(f|0,C|0,g|0,h|0)|0;h=8}while(0);if((h|0)==8){e=a+156|0;if(f>>>0>(c[e>>2]|0)>>>0)c[e>>2]=f;c[d>>2]=f;e=0}i=k;return e|0}function Fo(b){b=b|0;var d=0,e=0;e=b+64|0;if(!((a[b+7>>0]|0)==0?(d=c[e>>2]|0,d=nc[c[(c[d>>2]|0)+20>>2]&127](d,2)|0,(d|0)!=0):0)){d=c[e>>2]|0;d=nc[c[(c[d>>2]|0)+24>>2]&127](d,b+80|0)|0}return d|0}function Go(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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,D=0,E=0,F=0,G=0;G=i;i=i+48|0;if((i|0)>=(j|0))ba();E=G+16|0;D=G+8|0;B=G+36|0;w=G;v=G+32|0;u=G+28|0;A=G+24|0;g=c[b>>2]|0;c[u>>2]=0;c[A>>2]=1;y=b+64|0;e=c[y>>2]|0;e=nc[c[(c[e>>2]|0)+24>>2]&127](e,w)|0;a:do if(!e){x=b+200|0;f=c[x>>2]|0;e=qq(c[y>>2]|0,f,(c[(c[b>>2]|0)+8>>2]|0)+1|0)|0;if(!e){if(!(a[f>>0]|0))e=0;else e=lc[c[g+32>>2]&31](g,f,0,A)|0;b:do if((e|0)==0&(c[A>>2]|0)!=0){t=b+72|0;r=t;c[r>>2]=0;c[r+4>>2]=0;r=b+148|0;k=b+152|0;n=b+80|0;p=b+24|0;f=0;s=d;c:while(1){do{e=w;e=rq(b,d,c[e>>2]|0,c[e+4>>2]|0,v,u)|0;if((e|0)==101)break c;else if(e){F=27;break b}g=c[v>>2]|0;if((g|0)==-1){q=w;q=$v(c[q>>2]|0,c[q+4>>2]|0,c[r>>2]|0,0)|0;g=(c[k>>2]|0)+8|0;g=mw(q|0,C|0,g|0,((g|0)<0)<<31>>31|0)|0;c[v>>2]=g}if(!(g|d)){h=n;l=c[r>>2]|0;h=fw(l|0,0,c[h>>2]|0,c[h+4>>2]|0)|0;o=C;m=t;q=c[m>>2]|0;m=c[m+4>>2]|0;if((h|0)==(q|0)&(o|0)==(m|0)){m=w;m=$v(c[m>>2]|0,c[m+4>>2]|0,h|0,o|0)|0;g=(c[k>>2]|0)+8|0;g=mw(m|0,C|0,g|0,((g|0)<0)<<31>>31|0)|0;c[v>>2]=g;m=o}else h=q}else{h=t;l=c[r>>2]|0;m=c[h+4>>2]|0;h=c[h>>2]|0}if((h|0)==(l|0)&(m|0)==0){h=c[u>>2]|0;e=xl(b,h)|0;if(e){F=25;break a}c[p>>2]=h}}while((g|0)==0);e=s;h=0;while(1){if(e)tn(b);e=sq(b,t,0,1,0)|0;if((e|0)==101)break;else if((e|0)==522)break c;else if(e){F=27;break b}f=f+1|0;h=h+1|0;if(h>>>0>>0)e=0;else{s=0;continue c}}e=w;q=c[e+4>>2]|0;s=t;c[s>>2]=c[e>>2];c[s+4>>2]=q;s=0}a[b+18>>0]=a[b+12>>0]|0;u=f}else{f=0;F=27}while(0);if((F|0)==27){a[b+18>>0]=a[b+12>>0]|0;if(!e)u=f;else break}t=c[x>>2]|0;e=qq(c[y>>2]|0,t,(c[(c[b>>2]|0)+8>>2]|0)+1|0)|0;if(!e){if(((a[b+16>>0]|0)+-1&255)>2?(z=Eg(b,0)|0,(z|0)!=0):0){f=u;e=z;break}e=yl(b,(a[t>>0]|0)!=0&1,0)|0;if(!e)if((a[t>>0]|0)!=0&(c[A>>2]|0)!=0){r=c[b>>2]|0;f=r+4|0;e=c[f>>2]<<1;s=mg(e,((e|0)<0)<<31>>31)|0;if(!s){f=u;e=7}else{bw(s|0,0,e|0)|0;p=s+(c[f>>2]|0)|0;q=r+24|0;e=pc[c[q>>2]&31](r,t,s,16385,0)|0;d:do if(!e){e=nc[c[(c[s>>2]|0)+24>>2]&127](s,D)|0;if(!e){n=(c[r+8>>2]|0)+1|0;f=D;f=fw(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;f=fw(f|0,C|0,n|0,((n|0)<0)<<31>>31|0)|0;f=mg(f,C)|0;if(f){o=D;e=c[o>>2]|0;o=fw(e|0,c[o+4>>2]|0,1,0)|0;o=f+o|0;e=pc[c[(c[s>>2]|0)+8>>2]&31](s,f,e,0,0)|0;if(!e){a[f+(c[D>>2]|0)>>0]=0;k=f;A=D;z=c[A+4>>2]|0;if((z|0)>0|(z|0)==0&(c[A>>2]|0)>>>0>0){l=r+32|0;h=k;m=f;do{e=lc[c[l>>2]&31](r,m,0,B)|0;if(e){F=55;break d}do if(c[B>>2]|0){e=pc[c[q>>2]&31](r,m,p,2049,0)|0;if(e){F=55;break d}e=qq(p,o,n)|0;g=c[p>>2]|0;if(g){hc[c[g+4>>2]&127](p)|0;c[p>>2]=0}if(e){F=55;break d}if(!(a[o>>0]|0))break;if(!(Wv(o,t)|0)){e=0;F=55;break d}}while(0);if(!m)g=1;else{g=m;while(1)if(!(a[g>>0]|0))break;else g=g+1|0;g=(g-h&1073741823)+1|0}m=m+g|0;h=m;z=h-k|0;x=((z|0)<0)<<31>>31;A=D;y=c[A+4>>2]|0}while((x|0)<(y|0)|((x|0)==(y|0)?z>>>0<(c[A>>2]|0)>>>0:0))}e=c[s>>2]|0;if(e){hc[c[e+4>>2]&127](s)|0;c[s>>2]=0}e=Yb[c[r+28>>2]&63](r,t,0)|0;Sc(f)}else F=55}else{e=7;f=0;F=55}}else{f=0;F=55}}else{f=0;F=55}while(0);if((F|0)==55)Sc(f);f=c[s>>2]|0;if(f){hc[c[f+4>>2]&127](s)|0;c[s>>2]=0}Sc(s);f=u}}else{f=u;e=0}else f=u}else f=u}else{f=0;F=25}}else{f=0;F=25}while(0);if((F|0)==25)a[b+18>>0]=a[b+12>>0]|0;if((d|0)!=0&(f|0)!=0){B=c[b+172>>2]|0;c[E>>2]=f;c[E+4>>2]=B;Zc(539,14776,E)}sp(b);i=G;return e|0}function Ho(d){d=d|0;var e=0,f=0;e=d+44|0;if(a[e>>0]|0){if(!(a[d+43>>0]|0)){f=c[d+4>>2]|0;lc[c[(c[f>>2]|0)+56>>2]&31](f,0,1,9)|0}a[e>>0]=0;a[d+47>>0]=0}e=d+40|0;f=b[e>>1]|0;if(f<<16>>16>-1){if(!(a[d+43>>0]|0)){d=c[d+4>>2]|0;lc[c[(c[d>>2]|0)+56>>2]&31](d,(f<<16>>16)+3|0,1,5)|0}b[e>>1]=-1}return}function Io(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((g|0)>5)if((g|0)>100)f=15;else{if((g|0)>9){g=g+-9|0;g=_(g*39|0,g)|0}else g=1;h=c[d>>2]|0;nc[c[h+60>>2]&127](h,g)|0;h=6}else h=6;a:do if((h|0)==6){do if(!f){f=jq(d,e)|0;do if((f|0)==5){if(!(c[c[d+32>>2]>>2]|0)){f=-1;break a}e=d+43|0;if(a[e>>0]|0){f=-1;break a}g=d+4|0;f=c[g>>2]|0;f=lc[c[(c[f>>2]|0)+56>>2]&31](f,2,1,6)|0;if((f|0)==5){f=261;break a}else if(f)break;if(a[e>>0]|0){f=-1;break a}f=c[g>>2]|0;lc[c[(c[f>>2]|0)+56>>2]&31](f,2,1,5)|0;f=-1;break a}while(0);if(f)break a;g=d+32|0;j=(c[c[g>>2]>>2]|0)+96|0;e=d+52|0;if((c[j>>2]|0)==(c[d+68>>2]|0)){i=d+43|0;h=a[i>>0]|0;if(!(h<<24>>24)){f=c[d+4>>2]|0;f=lc[c[(c[f>>2]|0)+56>>2]&31](f,3,1,6)|0;h=a[i>>0]|0}else f=0;if(h<<24>>24!=2){n=c[d+4>>2]|0;_b[c[(c[n>>2]|0)+60>>2]&31](n)}if((f|0)==5){n=g;g=5;break}else if(f)break a;if(!(Vv(c[c[g>>2]>>2]|0,e,48)|0)){b[d+40>>1]=0;f=0;break a}if(a[i>>0]|0){f=-1;break a}f=c[d+4>>2]|0;lc[c[(c[f>>2]|0)+56>>2]&31](f,3,1,5)|0;f=-1;break a}else{n=g;g=0}}else{j=d+32|0;n=j;j=(c[c[j>>2]>>2]|0)+96|0;g=0}while(0);m=d+68|0;e=c[j+8>>2]|0;i=e>>>0>(c[m>>2]|0)>>>0;e=i?0:e;i=i&1^1;h=c[j+12>>2]|0;if(e>>>0<=h>>>0){l=h>>>0>(c[m>>2]|0)>>>0;i=l?i:2;e=l?e:h}h=c[j+16>>2]|0;if(e>>>0<=h>>>0){l=h>>>0>(c[m>>2]|0)>>>0;i=l?i:3;e=l?e:h}h=c[j+20>>2]|0;if(e>>>0<=h>>>0){l=h>>>0>(c[m>>2]|0)>>>0;i=l?i:4;e=l?e:h}b:do if((a[d+46>>0]&2)==0?((i|0)==0?1:e>>>0<(c[m>>2]|0)>>>0):0){l=d+43|0;k=d+4|0;h=1;while(1){g=h+3|0;if(a[l>>0]|0){i=h;break}f=c[k>>2]|0;f=lc[c[(c[f>>2]|0)+56>>2]&31](f,g,1,10)|0;if(!f){i=h;break}else if((f|0)!=5)break a;h=h+1|0;if((h|0)>=5){g=5;break b}}h=c[m>>2]|0;c[j+(i<<2)+4>>2]=h;if(!(a[l>>0]|0)){e=c[k>>2]|0;lc[c[(c[e>>2]|0)+56>>2]&31](e,g,1,9)|0;e=h;g=0}else{e=h;g=0}}while(0);if(!i){f=(g|0)==5?-1:520;break}g=i+3|0;f=d+43|0;h=a[f>>0]|0;do if(!(h<<24>>24)){h=c[d+4>>2]|0;h=lc[c[(c[h>>2]|0)+56>>2]&31](h,g,1,6)|0;if(!h){h=a[f>>0]|0;break}else{f=(h|0)==5?-1:h;break a}}while(0);if(h<<24>>24!=2){m=c[d+4>>2]|0;_b[c[(c[m>>2]|0)+60>>2]&31](m)}if((c[j+(i<<2)+4>>2]|0)==(e|0)?(Vv(c[c[n>>2]>>2]|0,d+52|0,48)|0)==0:0){b[d+40>>1]=i;f=0;break}if(!(a[f>>0]|0)){f=c[d+4>>2]|0;lc[c[(c[f>>2]|0)+56>>2]&31](f,g,1,5)|0;f=-1}else f=-1}while(0);return f|0}function Jo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b+56|0;ai(c[e>>2]|0);c[e>>2]=0;_o(b);e=c[b+208>>2]|0;if(!e){if(!(a[b+4>>0]|0)){f=b+60|0;e=c[f>>2]|0;d=c[e>>2]|0;if(!(((d|0)!=0?((hc[c[d+48>>2]&127](e)|0)&2048|0)!=0:0)?(a[b+5>>0]&5)==1:0))i=7;if((i|0)==7?(g=c[b+64>>2]|0,h=c[g>>2]|0,(h|0)!=0):0){hc[c[h+4>>2]&127](g)|0;c[g>>2]=0}d=c[f>>2]|0;e=c[d>>2]|0;if(e){if(!(a[b+13>>0]|0))d=nc[c[e+32>>2]&127](d,0)|0;else d=0;e=b+17|0;if((a[e>>0]|0)!=5)a[e>>0]=0;if((d|0)!=0?(a[b+16>>0]|0)==6:0)a[e>>0]=5}a[b+18>>0]=0;a[b+16>>0]=0}}else{Ho(e);a[b+16>>0]=0}d=b+40|0;if(c[d>>2]|0){tn(b);a[b+18>>0]=a[b+12>>0]|0;a[b+16>>0]=0;c[d>>2]=0}d=b+72|0;a[b+19>>0]=0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;return}function Ko(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[d+4>>2]|0;f=e+0|0;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[e>>2]=d;c[e+4>>2]=c[d>>2];f=e+40|0;c[e+8>>2]=f;bw(f|0,0,c[a+24>>2]|0)|0;c[e+28>>2]=a;c[e+20>>2]=b;return el(a,b,d)|0}function Lo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();g=l;h=tq(a,b,g)|0;if(!h){k=c[g>>2]|0;if(!b){a=k+136|0;c[g>>2]=a;g=a;a=0}else{g=k;a=(b<<12)+-34|0}c[e>>2]=g+-4;c[d>>2]=k+16384;c[f>>2]=a}i=l;return h|0}function Mo(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=c[d+28>>2]|0;j=e&255;if(j&1){f=k+8|0;if((c[f>>2]|0)==(d|0)){e=d;do{e=c[e+36>>2]|0;if(!e){e=0;break}}while((b[e+24>>1]&4)!=0);c[f>>2]=e}e=d+32|0;g=c[e>>2]|0;h=(g|0)==0;i=d+36|0;f=c[i>>2]|0;if(h)c[k+4>>2]=f;else c[g+36>>2]=f;f=c[i>>2]|0;if(!f){c[k>>2]=g;if(h?(a[k+28>>0]|0)!=0:0)a[k+29>>0]=2}else c[f+32>>2]=g;c[e>>2]=0;c[i>>2]=0}if(j&2){e=c[k>>2]|0;c[d+32>>2]=e;if(!e){c[k+4>>2]=d;if(a[k+28>>0]|0)a[k+29>>0]=1}else c[e+36>>2]=d;c[k>>2]=d;e=k+8|0;if((c[e>>2]|0)==0?(b[d+24>>1]&4)==0:0)c[e>>2]=d}return}function No(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();h=l;f=e>>>3;g=f&255;a[d+5>>0]=g;e=e&-9;a[d+7>>0]=4-(f<<2);f=c[d+52>>2]|0;if((e|0)==5){a[d+2>>0]=1;a[d+3>>0]=g;a[d+4>>0]=g<<24>>24==0&1;b[d+10>>1]=b[f+28>>1]|0;b[d+12>>1]=b[f+30>>1]|0;k=5}else if((e|0)==2){a[d+2>>0]=0;a[d+3>>0]=0;a[d+4>>0]=0;b[d+10>>1]=b[f+24>>1]|0;b[d+12>>1]=b[f+26>>1]|0;k=5}else{c[h>>2]=54521;c[h+4>>2]=10788;Zc(11,13600,h);e=11}if((k|0)==5){a[d+8>>0]=a[f+21>>0]|0;e=0}i=l;return e|0}function Oo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=c[b+200>>2]|0;j=b+152|0;k=c[j>>2]|0;m=b+148|0;i=c[m>>2]|0;k=k>>>0>i>>>0?i:k;g=c[b+96>>2]|0;if((g|0)>0){f=c[b+92>>2]|0;e=b+72|0;h=0;do{d=f+(h*48|0)+8|0;n=d;if((c[n>>2]|0)==0&(c[n+4>>2]|0)==0){o=e;n=c[o+4>>2]|0;c[d>>2]=c[o>>2];c[d+4>>2]=n}h=h+1|0}while((h|0)<(g|0));h=e}else h=b+72|0;e=h;f=c[e>>2]|0;e=c[e+4>>2]|0;if((f|0)==0&(e|0)==0){f=0;e=0}else{f=fw(f|0,e|0,-1,-1)|0;f=mw(f|0,C|0,i|0,0)|0;f=fw(f|0,C|0,1,0)|0;f=ow(f|0,C|0,i|0,0)|0;e=C}i=h;c[i>>2]=f;c[i+4>>2]=e;i=b+80|0;c[i>>2]=f;c[i+4>>2]=e;if(((a[b+7>>0]|0)==0?(a[b+5>>0]|0)!=4:0)?(i=c[b+60>>2]|0,((hc[c[(c[i>>2]|0)+48>>2]&127](i)|0)&512|0)==0):0){f=l+0|0;e=f+12|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(e|0))}else{i=l;g=i;a[g>>0]=-117058087;a[g+1>>0]=-117058087>>8;a[g+2>>0]=-117058087>>16;a[g+3>>0]=-117058087>>24;i=i+4|0;a[i>>0]=-681336544;a[i+1>>0]=-681336544>>8;a[i+2>>0]=-681336544>>16;a[i+3>>0]=-681336544>>24;i=l+8|0;a[i>>0]=-1;a[i+1>>0]=-1>>8;a[i+2>>0]=-1>>16;a[i+3>>0]=-1>>24}e=b+48|0;_c(4,e);e=c[e>>2]|0;a[l+12>>0]=e>>>24;a[l+13>>0]=e>>>16;a[l+14>>0]=e>>>8;a[l+15>>0]=e;e=c[b+28>>2]|0;a[l+16>>0]=e>>>24;a[l+17>>0]=e>>>16;a[l+18>>0]=e>>>8;a[l+19>>0]=e;e=c[m>>2]|0;a[l+20>>0]=e>>>24;a[l+21>>0]=e>>>16;a[l+22>>0]=e>>>8;a[l+23>>0]=e;e=c[j>>2]|0;a[l+24>>0]=e>>>24;a[l+25>>0]=e>>>16;a[l+26>>0]=e>>>8;a[l+27>>0]=e;bw(l+28|0,0,k+-28|0)|0;e=b+64|0;f=0;while(1){if(f>>>0>=(c[m>>2]|0)>>>0){d=0;break}j=c[e>>2]|0;d=h;d=pc[c[(c[j>>2]|0)+12>>2]&31](j,l,k,c[d>>2]|0,c[d+4>>2]|0)|0;j=h;j=fw(c[j>>2]|0,c[j+4>>2]|0,k|0,0)|0;b=h;c[b>>2]=j;c[b+4>>2]=C;if(!d)f=f+k|0;else break}return d|0}function Po(a){a=a|0;var c=0,d=0,f=0;c=a+24|0;f=e[c>>1]|0;d=f&65503;b[c>>1]=d;if(!(f&2)){b[c>>1]=d|2;Mo(a,2)}return}function Qo(a){a=a|0;var b=0,d=0,e=0;b=c[a+16>>2]|0;d=c[a+20>>2]|0;e=c[b+96>>2]|0;a:do if((e|0)>0){b=c[b+92>>2]|0;a=0;while(1){if((c[b+(a*48|0)+20>>2]|0)>>>0>=d>>>0?($h(c[b+(a*48|0)+16>>2]|0,d)|0)==0:0){a=1;break a}a=a+1|0;if((a|0)>=(e|0)){a=0;break}}}else a=0;while(0);return a|0}function Ro(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();m=q;o=c[b+16>>2]|0;e=a[o+5>>0]|0;a:do if(e<<24>>24!=2){n=o+68|0;f=c[n>>2]|0;do if(!(c[f>>2]|0)){if(e<<24>>24!=4?(a[o+21>>0]|0)==0:0){d=c[o>>2]|0;d=pc[c[d+24>>2]&31](d,0,f,8222,0)|0;if(!d)break;else break a}e=f+0|0;d=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(d|0));c[f>>2]=14696}while(0);f=c[b+4>>2]|0;l=o+52|0;g=o+152|0;h=(c[g>>2]|0)+4|0;h=ow(h|0,((h|0)<0)<<31>>31|0,c[l>>2]|0,0)|0;k=C;d=c[n>>2]|0;e=b+20|0;b=c[e>>2]|0;a[m>>0]=b>>>24;a[m+1>>0]=b>>>16;a[m+2>>0]=b>>>8;a[m+3>>0]=b;d=pc[c[(c[d>>2]|0)+12>>2]&31](d,m,4,h,k)|0;if(!d){m=c[n>>2]|0;n=c[g>>2]|0;d=fw(h|0,k|0,4,0)|0;d=pc[c[(c[m>>2]|0)+12>>2]&31](m,f,n,d,C)|0;if(!d){d=l;p=10}}}else{e=b+20|0;d=o+52|0;p=10}while(0);if((p|0)==10){c[d>>2]=(c[d>>2]|0)+1;d=fl(o,c[e>>2]|0)|0}i=q;return d|0}function So(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+48|0;if((i|0)>=(j|0))ba();g=h;d=(a|0)!=0;a:do if(d&(b|0)!=0){d=g;while(1){f=c[b+20>>2]|0;e=a;a=d;while(1){a=a+12|0;if((c[e+20>>2]|0)>>>0>=f>>>0)break;c[a>>2]=e;a=c[e+12>>2]|0;if(!a){d=b;a=e;e=8;break a}else{d=e;e=a;a=d}}c[a>>2]=b;f=c[b+12>>2]|0;d=(e|0)!=0;if(d&(f|0)!=0){d=b;a=e;b=f}else{a=e;e=6;break}}}else{f=b;b=g;e=6}while(0);if((e|0)==6)if(d)c[b+12>>2]=a;else{d=f;a=b;e=8}do if((e|0)==8){a=a+12|0;if(!d){c[a>>2]=0;break}else{c[a>>2]=d;break}}while(0);i=h;return c[g+12>>2]|0}function To(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[c[b+32>>2]>>2]|0;k=b+84|0;j=b+104|0;c[j>>2]=(c[j>>2]|0)+1;c[b+68>>2]=0;j=k+1|0;i=k+2|0;g=k+3|0;h=((d[j>>0]|0)<<16|(d[k>>0]|0)<<24|(d[i>>0]|0)<<8|(d[g>>0]|0))+1|0;a[k>>0]=h>>>24;a[j>>0]=h>>>16;a[i>>0]=h>>>8;a[g>>0]=h;c[b+88>>2]=e;Xo(b);c[f+96>>2]=0;c[f+104>>2]=0;c[f+108>>2]=-1;c[f+112>>2]=-1;c[f+116>>2]=-1;return}function Uo(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;l=i;i=i+32|0;if((i|0)>=(j|0))ba();m=l;k=c[e+4>>2]|0;n=c[b>>2]|0;o=c[e+20>>2]|0;e=n+76|0;a[m>>0]=o>>>24;a[m+1>>0]=o>>>16;a[m+2>>0]=o>>>8;a[m+3>>0]=o;a[m+4>>0]=f>>>24;a[m+5>>0]=f>>>16;a[m+6>>0]=f>>>8;a[m+7>>0]=f;o=n+84|0;q=o;q=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;o=o+4|0;o=d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24;f=m+8|0;p=f;a[p>>0]=q;a[p+1>>0]=q>>8;a[p+2>>0]=q>>16;a[p+3>>0]=q>>24;f=f+4|0;a[f>>0]=o;a[f+1>>0]=o>>8;a[f+2>>0]=o>>16;a[f+3>>0]=o>>24;f=(a[n+65>>0]|0)==0&1;uq(f,m,8,e,e);uq(f,k,c[n+36>>2]|0,e,e);f=c[e>>2]|0;a[m+16>>0]=f>>>24;a[m+17>>0]=f>>>16;a[m+18>>0]=f>>>8;a[m+19>>0]=f;f=c[n+80>>2]|0;a[m+20>>0]=f>>>24;a[m+21>>0]=f>>>16;a[m+22>>0]=f>>>8;a[m+23>>0]=f;f=vq(b,m,24,g,h)|0;if(!f){o=c[b+20>>2]|0;f=fw(g|0,h|0,24,0)|0;f=vq(b,k,o,f,C)|0}i=l;return f|0}function Vo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k+8|0;g=k;f=c[3164]|0;if(f)jc[f&3]();e=a+8|0;f=c[e>>2]|0;f=nc[c[(c[f>>2]|0)+24>>2]&127](f,g)|0;l=c[g+4>>2]|0;if((f|0)==0&((l|0)>(d|0)|((l|0)==(d|0)?(c[g>>2]|0)>>>0>b>>>0:0))){f=c[e>>2]|0;f=Yb[c[(c[f>>2]|0)+16>>2]&63](f,b,d)|0}e=c[3166]|0;if(e)jc[e&3]();if(f){c[h>>2]=c[a+100>>2];Zc(f,14816,h)}i=k;return}function Wo(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;if((i|0)>=(j|0))ba();k=n;g=n+16|0;m=n+12|0;l=n+8|0;c[g>>2]=0;c[m>>2]=0;c[l>>2]=0;f=Lo(a,(d+33|0)>>>12,l,m,g)|0;a:do if(!f){h=d-(c[g>>2]|0)|0;if((h|0)==1){f=c[m>>2]|0;d=f+4|0;bw(d|0,0,(c[l>>2]|0)+16384-d|0)|0}else f=c[m>>2]|0;if(c[f+(h<<2)>>2]|0)wq(a);f=e*383&8191;b:do if(b[(c[l>>2]|0)+(f<<1)>>1]|0){d=c[l>>2]|0;g=h;while(1){if(!g)break;f=f+1&8191;if(!(b[d+(f<<1)>>1]|0))break b;else g=g+-1|0}c[k>>2]=49852;c[k+4>>2]=10788;Zc(11,13600,k);f=11;break a}while(0);c[(c[m>>2]|0)+(h<<2)>>2]=e;b[(c[l>>2]|0)+(f<<1)>>1]=h;f=0}while(0);i=n;return f|0}function Xo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=c[c[b+32>>2]>>2]|0;k=b+52|0;a[b+64>>0]=1;c[k>>2]=3007e3;i=b+92|0;g=3007e3;h=k;f=0;d=0;while(1){f=f+d+g|0;e=h+8|0;d=f+d+(c[h+4>>2]|0)|0;if(e>>>0>=i>>>0)break;g=c[e>>2]|0;h=e}c[i>>2]=f;c[b+96>>2]=d;d=j+48|0;e=k+0|0;f=d+48|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if((a[b+43>>0]|0)!=2){d=c[b+4>>2]|0;_b[c[(c[d>>2]|0)+60>>2]&31](d)}d=j+0|0;e=k+0|0;f=d+48|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));return}function Yo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(a)do{e=a+28|0;g=c[e>>2]|0;if(((g>>>0<7?(30>>>(g&127)&1)==0:0)?(c[a+16>>2]|0)>>>0>b>>>0:0)?(f=wg(a,b,d,1)|0,(f|0)!=0):0)c[e>>2]=f;a=c[a+44>>2]|0}while((a|0)!=0);return}function Zo(a){a=a|0;var b=0,d=0,e=0;a:do if(!(c[a+208>>2]|0)){d=a+176|0;e=a+180|0;while(1){b=bl(a,4)|0;if((b|0)!=5)break a;if(!(hc[c[d>>2]&127](c[e>>2]|0)|0)){b=5;break}}}else b=0;while(0);return b|0}function _o(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+96|0;if((c[f>>2]|0)>0){d=b+92|0;e=0;do{ai(c[(c[d>>2]|0)+(e*48|0)+16>>2]|0);e=e+1|0}while((e|0)<(c[f>>2]|0))}e=c[b+68>>2]|0;d=c[e>>2]|0;if(!(a[b+4>>0]|0)){if(d)g=7}else if((d|0)==14696){d=14696;g=7}if((g|0)==7){hc[c[d+4>>2]&127](e)|0;c[e>>2]=0}d=b+92|0;Sc(c[d>>2]|0);c[d>>2]=0;c[f>>2]=0;c[b+52>>2]=0;return}function $o(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+40|0;if(c[f>>2]|0){d=c[a>>2]|0;if(d)do{e=d;d=c[d+32>>2]|0;if((c[e+20>>2]|0)>>>0>b>>>0)tl(e)}while((d|0)!=0);if(!b){b=c[a+44>>2]|0;if(!b)b=0;else{bw(c[b+4>>2]|0,0,c[a+20>>2]|0)|0;b=1}}fc[c[8744+144>>2]&15](c[f>>2]|0,b+1|0)}return}function ap(d,e){d=d|0;e=e|0;var f=0,g=0;do if(!e){f=d+43|0;if(!(a[f>>0]|0))f=0;else{a[f>>0]=0;g=c[d+4>>2]|0;if(!(lc[c[(c[g>>2]|0)+56>>2]&31](g,(b[d+40>>1]|0)+3|0,1,6)|0))f=(a[f>>0]|0)==0;else{a[f>>0]=1;f=0}f=f&1}}else{f=d+43|0;g=(a[f>>0]|0)==0;if((e|0)<=0){f=g&1;break}if(g){g=c[d+4>>2]|0;lc[c[(c[g>>2]|0)+56>>2]&31](g,(b[d+40>>1]|0)+3|0,1,5)|0}a[f>>0]=1;f=1}while(0);return f|0}function bp(b){b=b|0;var e=0,f=0,g=0,h=0;f=b+73|0;if((a[f>>0]|0)==2)a[f>>0]=1;else c[b+68>>2]=0;e=b+48|0;gm(b,e);do if(!(a[(c[b+120>>2]|0)+2>>0]|0)){g=e;g=mg(c[g>>2]|0,c[g+4>>2]|0)|0;if(g){e=Hm(b,0,c[e>>2]|0,g,0)|0;if(!e){c[b+56>>2]=g;h=9;break}else{Sc(g);break}}else e=7}else h=9;while(0);if((h|0)==9){cp(b);a[f>>0]=3;e=0}f=b+72|0;a[f>>0]=d[f>>0]&251;return e|0}function cp(a){a=a|0;var d=0,e=0,f=0,g=0;d=a+76|0;if((b[d>>1]|0)>=0){g=0;while(1){e=a+(g<<2)+120|0;f=c[e>>2]|0;if(f)xg(c[f+68>>2]|0);c[e>>2]=0;if((g|0)<(b[d>>1]|0))g=g+1|0;else break}}b[d>>1]=-1;return}function dp(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;k=o+8|0;if(e>>>0<2)m=0;else{m=e+-2|0;m=m-((m>>>0)%(((((c[b+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;m=((m+1|0)==(((c[2514]|0)>>>0)/((c[b+32>>2]|0)>>>0)|0|0)?3:2)+m|0}h=vg(c[b>>2]|0,m,k,0)|0;do if(!h){k=c[k>>2]|0;l=c[k+4>>2]|0;h=(e-m|0)*5|0;b=h+-5|0;if((b|0)<0){if(k)xg(k);c[n>>2]=53912;c[n+4>>2]=10788;Zc(11,13600,n);h=11;break}a[f>>0]=a[l+b>>0]|0;if(g)c[g>>2]=(d[l+(h+-3)>>0]|0)<<16|(d[l+(h+-4)>>0]|0)<<24|(d[l+(h+-2)>>0]|0)<<8|(d[l+(h+-1)>>0]|0);if(k)xg(k);if(((a[f>>0]|0)+-1&255)>4){c[n>>2]=53920;c[n+4>>2]=10788;Zc(11,13600,n);h=11}else h=0}while(0);i=o;return h|0}function ep(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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;K=i;i=i+32|0;if((i|0)>=(j|0))ba();J=K;I=K+16|0;p=K+20|0;H=K+12|0;q=K+8|0;c[I>>2]=0;s=e+12|0;o=c[s>>2]|0;r=e+44|0;F=c[r>>2]|0;G=o+56|0;n=c[G>>2]|0;n=d[n+37>>0]<<16|d[n+36>>0]<<24|d[n+38>>0]<<8|d[n+39>>0];do if(n>>>0>>0){if(!n){k=(a[e+19>>0]|0)==0&1;o=Cg(c[o+68>>2]|0)|0;if(o){l=o;break}p=c[r>>2]|0;n=p+1|0;c[r>>2]=n;m=e+32|0;o=c[m>>2]|0;if((p|0)==(((c[2514]|0)>>>0)/(o>>>0)|0|0)){n=p+2|0;c[r>>2]=n}if(a[e+17>>0]|0){if(n>>>0<2)p=0;else{p=n+-2|0;p=p-((p>>>0)%(((((c[e+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;p=((p+1|0)==(((c[2514]|0)>>>0)/(o>>>0)|0|0)?3:2)+p|0}if((p|0)==(n|0)){c[q>>2]=0;p=$k(e,n,q,k)|0;if(p){l=p;break}F=c[q>>2]|0;p=F+68|0;o=Cg(c[p>>2]|0)|0;if(F)xg(c[p>>2]|0);if(o){l=o;break}p=c[r>>2]|0;n=p+1|0;c[r>>2]=n;if((p|0)==(((c[2514]|0)>>>0)/((c[m>>2]|0)>>>0)|0|0)){n=p+2|0;c[r>>2]=n}}}m=c[(c[s>>2]|0)+56>>2]|0;a[m+28>>0]=n>>>24;a[m+29>>0]=n>>>16;a[m+30>>0]=n>>>8;a[m+31>>0]=n;m=c[r>>2]|0;c[g>>2]=m;m=$k(e,m,f,k)|0;if(m){l=m;break}m=Cg(c[(c[f>>2]|0)+68>>2]|0)|0;if(m){l=c[f>>2]|0;if(!l){l=m;A=98}else{xg(c[l+68>>2]|0);l=m;A=92}}}else{if(k<<24>>24==2)p=1;else if(k<<24>>24==1?F>>>0>=h>>>0:0){l=dp(e,h,p,0)|0;if(l)break;p=(a[p>>0]|0)==2&1}else p=0;l=Cg(c[o+68>>2]|0)|0;if(l)break;C=c[G>>2]|0;D=n+-1|0;a[C+36>>0]=D>>>24;a[C+37>>0]=D>>>16;a[C+38>>0]=D>>>8;a[C+39>>0]=D;C=e+36|0;D=(h|0)==0;E=e+60|0;B=k<<24>>24==2;m=0;a:while(1){t=(m|0)!=0;if(t){s=c[m+56>>2]|0;s=d[s+1>>0]<<16|d[s>>0]<<24|d[s+2>>0]<<8|d[s+3>>0]}else{s=c[G>>2]|0;s=d[s+33>>0]<<16|d[s+32>>0]<<24|d[s+34>>0]<<8|d[s+35>>0]}if(s>>>0>F>>>0){A=15;break}l=$k(e,s,I,0)|0;if(l){A=17;break}n=c[I>>2]|0;u=n+56|0;y=c[u>>2]|0;z=y+4|0;v=y+5|0;w=y+6|0;x=y+7|0;A=d[v>>0]<<16|d[z>>0]<<24|d[w>>0]<<8|d[x>>0];q=p<<24>>24!=0;do if((A|0)!=0|q){if(A>>>0>(((c[C>>2]|0)>>>2)+-2|0)>>>0){l=n;A=22;break a}if(p<<24>>24!=0?(s|0)==(h|0)|s>>>0>>0&B:0){c[g>>2]=s;c[f>>2]=n;l=Cg(c[n+68>>2]|0)|0;if(l){A=88;break a}do if(!A){if(!t){A=(c[G>>2]|0)+32|0;z=c[u>>2]|0;z=d[z>>0]|d[z+1>>0]<<8|d[z+2>>0]<<16|d[z+3>>0]<<24;a[A>>0]=z;a[A+1>>0]=z>>8;a[A+2>>0]=z>>16;a[A+3>>0]=z>>24;break}l=Cg(c[m+68>>2]|0)|0;if(l){A=88;break a}A=c[m+56>>2]|0;z=c[u>>2]|0;z=d[z>>0]|d[z+1>>0]<<8|d[z+2>>0]<<16|d[z+3>>0]<<24;a[A>>0]=z;a[A+1>>0]=z>>8;a[A+2>>0]=z>>16;a[A+3>>0]=z>>24}else{s=c[u>>2]|0;q=a[s+8>>0]|0;k=a[s+9>>0]|0;r=a[s+10>>0]|0;s=a[s+11>>0]|0;p=(k&255)<<16|(q&255)<<24|(r&255)<<8|s&255;if(p>>>0>F>>>0){l=n;A=32;break a}l=$k(e,p,H,0)|0;if(l){A=88;break a}p=c[H>>2]|0;o=p+68|0;l=Cg(c[o>>2]|0)|0;if(l){A=35;break a}z=p+56|0;y=c[z>>2]|0;x=c[u>>2]|0;x=d[x>>0]|d[x+1>>0]<<8|d[x+2>>0]<<16|d[x+3>>0]<<24;a[y>>0]=x;a[y+1>>0]=x>>8;a[y+2>>0]=x>>16;a[y+3>>0]=x>>24;y=c[z>>2]|0;A=A+-1|0;a[y+4>>0]=A>>>24;a[y+5>>0]=A>>>16;a[y+6>>0]=A>>>8;a[y+7>>0]=A;gw((c[z>>2]|0)+8|0,(c[u>>2]|0)+12|0,A<<2|0)|0;if(p)xg(c[o>>2]|0);if(!t){A=c[G>>2]|0;a[A+32>>0]=q;a[A+33>>0]=k;a[A+34>>0]=r;a[A+35>>0]=s;break}l=Cg(c[m+68>>2]|0)|0;if(l){A=88;break a}A=c[m+56>>2]|0;a[A>>0]=q;a[A+1>>0]=k;a[A+2>>0]=r;a[A+3>>0]=s}while(0);c[I>>2]=0;n=0;l=0;p=0;break}if(A){b:do if(!D){if(B){k=0;while(1){u=k<<2;if((d[y+(u+9)>>0]<<16|d[y+(u+8)>>0]<<24|d[y+(u+10)>>0]<<8|d[y+(u+11)>>0])>>>0<=h>>>0)break b;k=k+1|0;if(k>>>0>=A>>>0){k=0;break b}}}o=(d[y+9>>0]<<16|d[y+8>>0]<<24|d[y+10>>0]<<8|d[y+11>>0])-h|0;if((o|0)<=-1)o=(o|0)==-2147483648?2147483647:0-o|0;if(A>>>0>1){k=0;r=1;while(1){l=r<<2;l=(d[y+(l+9)>>0]<<16|d[y+(l+8)>>0]<<24|d[y+(l+10)>>0]<<8|d[y+(l+11)>>0])-h|0;if((l|0)<=-1)l=(l|0)==-2147483648?2147483647:0-l|0;s=(l|0)<(o|0);k=s?r:k;r=r+1|0;if((r|0)==(A|0))break;else o=s?l:o}}else k=0}else k=0;while(0);o=k<<2;s=y+(o+8)|0;o=d[y+(o+9)>>0]<<16|d[s>>0]<<24|d[y+(o+10)>>0]<<8|d[y+(o+11)>>0];if(o>>>0>F>>>0){l=n;A=56;break a}if((o|0)==(h|0)|q^1|o>>>0>>0&B){c[g>>2]=o;l=Cg(c[n+68>>2]|0)|0;if(l){A=88;break a}p=A+-1|0;if(k>>>0

>>0){A=y+((A<<2)+4)|0;A=d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24;a[s>>0]=A;a[s+1>>0]=A>>8;a[s+2>>0]=A>>16;a[s+3>>0]=A>>24}a[z>>0]=p>>>24;a[v>>0]=p>>>16;a[w>>0]=p>>>8;a[x>>0]=p;o=c[g>>2]|0;p=c[E>>2]|0;do if(!p)p=0;else{if((c[p>>2]|0)>>>0>>0){p=1;break}p=($h(p,o)|0)!=0}while(0);l=$k(e,o,f,p&1^1)|0;if(l){p=0;break}l=Cg(c[(c[f>>2]|0)+68>>2]|0)|0;if(!l){l=0;p=0;break}p=c[f>>2]|0;if(!p){p=0;break}xg(c[p+68>>2]|0);p=0}else l=0}else l=0}else{l=Cg(c[n+68>>2]|0)|0;if(l){A=89;break a}c[g>>2]=s;l=(c[G>>2]|0)+32|0;p=c[u>>2]|0;p=d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24;a[l>>0]=p;a[l+1>>0]=p>>8;a[l+2>>0]=p>>16;a[l+3>>0]=p>>24;c[f>>2]=n;c[I>>2]=0;n=0;l=0;p=0}while(0);if(m)xg(c[m+68>>2]|0);if(!(p<<24>>24)){m=0;A=88;break}else m=n}if((A|0)==15){c[J>>2]=58314;c[J+4>>2]=10788;Zc(11,13600,J);l=11;A=17}else if((A|0)==22){c[J>>2]=58343;c[J+4>>2]=10788;Zc(11,13600,J);n=l;l=11;A=88}else if((A|0)==32){c[J>>2]=58377;c[J+4>>2]=10788;Zc(11,13600,J);n=l;l=11;A=88}else if((A|0)==35)if(!p)A=88;else{xg(c[o>>2]|0);A=88}else if((A|0)==56){c[J>>2]=58442;c[J+4>>2]=10788;Zc(11,13600,J);n=l;l=11;A=88}if((A|0)==17)c[I>>2]=0;else if((A|0)==88)if(n)A=89;if((A|0)==89)xg(c[n+68>>2]|0);if(!m)A=92;else{xg(c[m+68>>2]|0);A=92}}if((A|0)==92?(l|0)!=0:0)A=98;if((A|0)==98){c[f>>2]=0;break}l=c[f>>2]|0;m=c[l+68>>2]|0;if((b[m+26>>1]|0)<=1){a[l>>0]=0;l=0;break}if(l)xg(m);c[f>>2]=0;c[J>>2]=58541;c[J+4>>2]=10788;Zc(11,13600,J);l=11}else{c[J>>2]=58259;c[J+4>>2]=10788;Zc(11,13600,J);l=11}while(0);i=K;return l|0}function fp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;y=i;i=i+16|0;if((i|0)>=(j|0))ba();t=y+12|0;s=y+8|0;x=y;f=c[b+40>>2]|0;a:do if(!f){h=b+96|0;g=c[h>>2]|0;if((g|0)>(e|0)){f=(d|0)==1;e=(f&1^1)+e|0;if((e|0)<(g|0)){d=b+92|0;g=e;do{ai(c[(c[d>>2]|0)+(g*48|0)+16>>2]|0);g=g+1|0}while((g|0)<(c[h>>2]|0))}c[h>>2]=e;if(f){if(e){f=0;break}f=c[b+68>>2]|0;g=c[f>>2]|0;if(!g){f=0;break}if((g|0)==14696)f=Ci(f,0,0)|0;else f=0;c[b+52>>2]=0;break}r=b+208|0;if((c[r>>2]|0)==0?(c[c[b+64>>2]>>2]|0)==0:0){f=0;break}if(!e)u=0;else u=(c[b+92>>2]|0)+((e+-1|0)*48|0)|0;q=(u|0)!=0;f=u+20|0;if(q){d=c[f>>2]|0;g=mg(512,0)|0;if(!g){f=7;break}bw(g|0,0,512)|0;c[g>>2]=d;w=g}else w=0;h=b+28|0;e=b+24|0;c[e>>2]=c[(q?f:h)>>2];a[b+18>>0]=a[b+12>>0]|0;b:do if(q){h=b+72|0;e=h;k=c[e>>2]|0;e=c[e+4>>2]|0;if(!(c[r>>2]|0)){g=u+8|0;l=c[g>>2]|0;g=c[g+4>>2]|0;d=(l|0)==0&(g|0)==0;l=d?k:l;g=d?e:g;d=u;f=c[d>>2]|0;d=c[d+4>>2]|0;o=h;c[o>>2]=f;c[o+4>>2]=d;if((d|0)<(g|0)|(d|0)==(g|0)&f>>>0>>0)while(1){f=sq(b,h,w,1,1)|0;if(f){n=k;m=e;break b}d=h;f=c[d>>2]|0;d=c[d+4>>2]|0;if(!((d|0)<(g|0)|(d|0)==(g|0)&f>>>0>>0)){v=39;break}}else v=39}else v=38}else{p=c[r>>2]|0;if(!p){h=b+72|0;e=h;k=c[e>>2]|0;e=c[e+4>>2]|0;v=38;break}c[e>>2]=c[h>>2];if(a[p+44>>0]|0){k=p+68|0;m=c[k>>2]|0;l=p+32|0;e=c[l>>2]|0;g=p+52|0;f=(c[e>>2]|0)+0|0;d=g+48|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(d|0));g=c[k>>2]|0;f=g+1|0;if(f>>>0>m>>>0)f=0;else{h=f;while(1){g=g+34|0;f=g>>>12;if(!f)g=(c[e>>2]|0)+(g<<2)|0;else g=(c[e+(f<<2)>>2]|0)+((g&4095)<<2)|0;f=xq(b,c[g>>2]|0)|0;g=h+1|0;if((f|0)!=0|g>>>0>m>>>0)break;o=h;e=c[l>>2]|0;h=g;g=o}g=c[k>>2]|0}if((m|0)!=(g|0))wq(p)}else f=0;g=rl(c[b+204>>2]|0)|0;if(!((g|0)!=0&(f|0)==0))break a;while(1){f=g;g=c[g+12>>2]|0;f=xq(b,c[f+20>>2]|0)|0;if(!((g|0)!=0&(f|0)==0))break a}}while(0);if((v|0)==38){d=h;c[d>>2]=0;c[d+4>>2]=0;d=0;f=0;v=39}c:do if((v|0)==39){n=b+80|0;o=b+148|0;p=b+152|0;if((d|0)<(e|0)|(d|0)==(e|0)&f>>>0>>0)while(1){c[t>>2]=0;f=rq(b,0,k,e,t,s)|0;d=c[t>>2]|0;if(!d){d=n;d=fw(c[o>>2]|0,0,c[d>>2]|0,c[d+4>>2]|0)|0;g=C;m=h;if((d|0)==(c[m>>2]|0)?(g|0)==(c[m+4>>2]|0):0){v=$v(k|0,e|0,d|0,g|0)|0;d=(c[p>>2]|0)+8|0;d=mw(v|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;c[t>>2]=d;v=46}else v=40}else v=46;d:do if((v|0)==46){v=0;if((f|0)==0&(d|0)!=0){m=0;while(1){g=h;l=c[g>>2]|0;g=c[g+4>>2]|0;if(!((g|0)<(e|0)|(g|0)==(e|0)&l>>>0>>0)){d=l;break d}f=sq(b,h,w,1,1)|0;m=m+1|0;if(!((f|0)==0&m>>>0>>0)){v=40;break}}}else v=40}while(0);if((v|0)==40){v=0;if(f){n=k;m=e;break c}d=h;g=c[d+4>>2]|0;d=c[d>>2]|0}if(!((g|0)<(e|0)|(g|0)==(e|0)&d>>>0>>0)){n=k;m=e;f=0;break}}else{n=k;m=e;f=0}}while(0);e:do if(!q){ai(w);if(f)break a}else{l=u+24|0;g=c[l>>2]|0;o=(c[b+152>>2]|0)+4|0;o=ow(o|0,((o|0)<0)<<31>>31|0,g|0,0)|0;k=x;c[k>>2]=o;c[k+4>>2]=C;k=c[r>>2]|0;if(!k){if(!f)v=57}else{e=u+28|0;d=u+40|0;f=k+104|0;if((c[d>>2]|0)==(c[f>>2]|0))d=c[e>>2]|0;else{c[e>>2]=0;c[d>>2]=c[f>>2];d=0}e=k+68|0;if(d>>>0<(c[e>>2]|0)>>>0){c[e>>2]=d;c[k+76>>2]=c[u+32>>2];c[k+80>>2]=c[u+36>>2];wq(k);g=c[l>>2]|0;v=57}else v=57}f:do if((v|0)==57){d=b+52|0;while(1){if(g>>>0>=(c[d>>2]|0)>>>0)break;f=sq(b,x,w,0,1)|0;if(!f)g=g+1|0;else break f}ai(w);break e}while(0);ai(w);break a}while(0);f=h;c[f>>2]=n;c[f+4>>2]=m;f=0}else f=0}while(0);i=y;return f|0}function gp(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[d>>2]|0;if(e){i=c[d+4>>2]|0;c[(c[e+4>>2]|0)+4>>2]=c[e>>2];g=d+56|0;Sc(c[g>>2]|0);c[g>>2]=0;a[d+73>>0]=0;g=c[d+12>>2]|0;f=d+8|0;e=c[f>>2]|0;if(!g)c[i+8>>2]=e;else{c[g+8>>2]=e;e=c[f>>2]|0}if(e)c[e+12>>2]=g;h=d+76|0;e=b[h>>1]|0;if(e<<16>>16>=0){f=0;while(1){g=c[d+(f<<2)+120>>2]|0;if(g){xg(c[g+68>>2]|0);e=b[h>>1]|0}if((f|0)<(e<<16>>16|0))f=f+1|0;else break}}if((a[i+20>>0]|0)==0?(j=i+12|0,k=c[j>>2]|0,(k|0)!=0):0){c[j>>2]=0;xg(c[k+68>>2]|0)}Sc(c[d+20>>2]|0)}return}function hp(b){b=b|0;var e=0,f=0,g=0,h=0;h=c[b+200>>2]|0;e=c[3164]|0;if(e)jc[e&3]();f=c[b+136>>2]|0;if(f)do{e=f;f=c[f+12>>2]|0;Sc(e)}while((f|0)!=0);a[b+4>>0]=0;e=b+208|0;nn(c[e>>2]|0,d[b+9>>0]|0,c[b+152>>2]|0,h)|0;c[e>>2]=0;tn(b);if(!(a[b+15>>0]|0)){if((c[c[b+64>>2]>>2]|0)!=0?(g=Fo(b)|0,e=g&255,(e|0)==10|(e|0)==13):0){c[b+40>>2]=g;a[b+16>>0]=6}jl(b)}else Jo(b);e=c[3166]|0;if(e)jc[e&3]();e=c[b+64>>2]|0;f=c[e>>2]|0;if(f){hc[c[f+4>>2]&127](e)|0;c[e>>2]=0}f=c[b+60>>2]|0;e=c[f>>2]|0;if(e){hc[c[e+4>>2]&127](f)|0;c[f>>2]=0}Xk(h);_b[c[8744+148>>2]&31](c[(c[b+204>>2]|0)+40>>2]|0);Sc(b);return}function ip(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[a+4>>2]|0;h=mg(g,((g|0)<0)<<31>>31)|0;do if(h){bw(h|0,0,g|0)|0;g=pc[c[a+24>>2]&31](a,b,h,e&556927,f)|0;if(!g){c[d>>2]=h;g=0;break}else{Sc(h);break}}else g=7;while(0);return g|0}function jp(b){b=b|0;var d=0,e=0,f=0;d=b+16|0;e=b+12|0;f=b+10|0;if(!(Pl(c[d>>2]|0,b,c[e>>2]|0,a[f>>0]|0)|0))d=0;else{d=(Ql(c[d>>2]|0,b,c[e>>2]|0,a[f>>0]|0)|0)==0;d=d?4:8}return d|0}function kp(d){d=d|0;var f=0,g=0;g=d+8|0;f=b[g>>1]|0;do if(!(f&13))if(!(Ql(c[d+16>>2]|0,d,c[d+12>>2]|0,a[d+10>>0]|0)|0)){f=((e[g>>1]|0)&48640|4)&65535;b[g>>1]=f;break}else{h[d>>3]=+Qg(d);b[g>>1]=(e[g>>1]|0)&48640|8;$l(d);f=b[g>>1]|0;break}while(0);b[g>>1]=f&65517;return}function lp(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+80|0;if((i|0)>=(j|0))ba();r=t+40|0;s=t;h=f+4|0;if((a[d+10>>0]|0)!=(a[h>>0]|0)){q=c[d+32>>2]|0;n=r+8|0;b[n>>1]=1;c[r+32>>2]=q;o=r+24|0;c[o>>2]=0;p=s+8|0;b[p>>1]=1;c[s+32>>2]=q;q=s+24|0;c[q>>2]=0;Vl(r,d,4096);Vl(s,e,4096);d=Og(r,a[h>>0]|0)|0;m=(d|0)==0;if(m)l=0;else l=c[r+12>>2]|0;h=Og(s,a[h>>0]|0)|0;k=(h|0)==0;if(k)e=0;else e=c[s+12>>2]|0;d=pc[c[f+12>>2]&31](c[f+8>>2]|0,l,d,e,h)|0;if(!((b[n>>1]&9312)==0&(c[o>>2]|0)==0))Mg(r);if(!((b[p>>1]&9312)==0&(c[q>>2]|0)==0))Mg(s);if((m|k)&(g|0)!=0)a[g>>0]=7}else d=pc[c[f+12>>2]&31](c[f+8>>2]|0,c[d+12>>2]|0,c[d+16>>2]|0,c[e+12>>2]|0,c[e+16>>2]|0)|0;i=t;return d|0}function mp(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+12>>2]|0;d=c[b+12>>2]|0;a=Vv(c[a+16>>2]|0,c[b+16>>2]|0,(e|0)>(d|0)?d:e)|0;return ((a|0)==0?e-d|0:a)|0}function np(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;do if(!(a[f+3>>0]|0)){if(a[f+4>>0]|0){b[h+20>>1]=((op(g+4|0,h)|0)&255)+4;l=h+8|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;break}m=d[f+7>>0]|0;l=g+m|0;k=a[l>>0]|0;if(k<<24>>24>-1){l=k&255;c[n>>2]=l;k=1}else{k=im(l,n)|0;l=c[n>>2]|0}n=h;c[n>>2]=l;c[n+4>>2]=0;m=(k&255)+m|0;k=12}else{k=a[g>>0]|0;if(k<<24>>24>-1){l=k&255;c[n>>2]=l;k=1}else{k=im(g,n)|0;l=c[n>>2]|0}m=k&255;m=((op(g+m|0,h)|0)&255)+m|0;k=12}while(0);do if((k|0)==12){c[h+12>>2]=l;c[h+8>>2]=g+m;k=e[f+10>>1]|0;if(l>>>0>k>>>0){n=b[f+12>>1]|0;g=n&65535;l=(((l-g|0)>>>0)%(((c[(c[f+52>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+g|0;k=(l|0)>(k|0)?n:l&65535;b[h+16>>1]=k;k=m+(k&65535)|0;b[h+18>>1]=k;b[h+20>>1]=k+4;break}else{k=l+m|0;b[h+20>>1]=(k&65532)>>>0<4?4:k&65535;b[h+16>>1]=l;b[h+18>>1]=0;break}}while(0);i=o;return}function op(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=a[b>>0]|0;g=f&255;do if(g&128){f=d[b+1>>0]|0;if(!(f&128)){h=e;c[h>>2]=f|g<<7&16256;c[h+4>>2]=0;f=2;break}h=d[b+2>>0]|0;g=(h|g<<14)&2080895;if(!(h&128)){h=e;c[h>>2]=g|f<<7&16256;c[h+4>>2]=0;f=3;break}h=d[b+3>>0]|0;f=(h|f<<14)&2080895;if(!(h&128)){h=e;c[h>>2]=f|g<<7;c[h+4>>2]=0;f=4;break}k=d[b+4>>0]|0;h=k|g<<14;if(!(k&128)){i=e;c[i>>2]=h|f<<7;c[i+4>>2]=g>>>18;f=5;break}j=f|g<<7;g=d[b+5>>0]|0;i=g|f<<14;if(!(g&128)){f=e;c[f>>2]=i|h<<7&266354560;c[f+4>>2]=j>>>18;f=6;break}f=d[b+6>>0]|0;g=f|h<<14;if(!(f&128)){f=e;c[f>>2]=g&-266354561|i<<7&266354560;c[f+4>>2]=j>>>11;f=7;break}f=g&2080895;h=d[b+7>>0]|0;g=h|i<<14;if(!(h&128)){h=e;c[h>>2]=g&-266354561|f<<7;c[h+4>>2]=j>>>4;f=8;break}else{h=e;c[h>>2]=g<<8&532709120|f<<15|(d[b+8>>0]|0);c[h+4>>2]=k>>>3&15|j<<4;f=9;break}}else{g=e;c[g>>2]=f&255;c[g+4>>2]=0;f=1}while(0);return f|0}function pp(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();l=n+8|0;m=n;g=(d[a+1>>0]|0)<<16|(d[a>>0]|0)<<24|(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);a=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);o=f;c[o>>2]=a;c[o+4>>2]=g;if((e|0)==6)a=4;else{c[k>>2]=a;c[k+4>>2]=g;h[l>>3]=+h[k>>3];h[m>>3]=+h[l>>3];a=+h[l>>3]!=+h[m>>3]?1:8}b[f+8>>1]=a;i=n;return}function qp(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;if(!(e>>>0>16777215|(e|0)==16777215&c>>>0>4294967295)){f=c;g=0;while(1){c=g+1|0;a[h+g>>0]=f|128;f=iw(f|0,e|0,7)|0;e=C;if((f|0)==0&(e|0)==0){e=g;break}else g=c}a[h>>0]=(d[h>>0]|0)&127;if((e|0)>-1){f=0;while(1){a[b+f>>0]=a[h+e>>0]|0;if((e|0)>0){f=f+1|0;e=e+-1|0}else break}}}else{a[b+8>>0]=c;c=iw(c|0,e|0,8)|0;f=C;e=7;while(1){a[b+e>>0]=c|128;c=iw(c|0,f|0,7)|0;if((e|0)<=0){c=9;break}else{f=C;e=e+-1|0}}}i=k;return c|0}function rp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;if((c[b+44>>2]|0)>>>0>=d>>>0){f=$k(b,d,e,f)|0;if(!f){f=c[e>>2]|0;if((a[f>>0]|0)==0?(g=Xp(f)|0,(g|0)!=0):0){f=c[e>>2]|0;if(f)xg(c[f+68>>2]|0)}else g=0}else g=f}else{c[h>>2]=54788;c[h+4>>2]=10788;Zc(11,13600,h);g=11}i=k;return g|0}function sp(b){b=b|0;var d=0,e=0,f=0;if((a[b+12>>0]|0)==0?(d=b+60|0,e=c[d>>2]|0,((hc[c[(c[e>>2]|0)+48>>2]&127](e)|0)&4096|0)==0):0){d=c[d>>2]|0;e=c[(c[d>>2]|0)+44>>2]|0;if(e){d=hc[e&127](d)|0;if((d|0)<32)d=512;else f=6}else{d=4096;f=6}if((f|0)==6)d=(d|0)>65536?65536:d;c[b+148>>2]=d}else c[b+148>>2]=512;return}function tp(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=d+40|0;do if(!(c[j>>2]|0)){i=a[d+20>>0]|0;if(i<<24>>24){if(i&3){f=0;break}if(b[e+24>>1]&4){f=0;break}}c[e+12>>2]=0;do if(!(c[d+208>>2]|0)){if(!((b[e+24>>1]&4)==0?(a[d+16>>0]|0)!=3:0))k=11;if((k|0)==11?(g=vl(d,1)|0,(g|0)!=0):0){f=g;break}if(((c[e+20>>2]|0)>>>0>(c[d+24>>2]|0)>>>0?(Qo(e)|0)!=0:0)?(h=Ro(e)|0,(h|0)!=0):0){f=h;break}f=wl(d,e)|0;k=16}else{if((Qo(e)|0)!=0?(f=Ro(e)|0,(f|0)!=0):0)break;f=sl(d,e,0,0)|0;k=16}while(0);if((k|0)==16)if(!f){tl(e);f=0;break}g=f&255;if((g|0)==10|(g|0)==13){c[j>>2]=f;a[d+16>>0]=6}}else f=0;while(0);return f|0}function up(d){d=d|0;var e=0;e=c[d+8>>2]|0;if((a[e>>0]|0)!=0?(a[e>>0]=0,(b[d+26>>1]|0)>1):0)Xp(e)|0;return}function vp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;m=o+8|0;do if(!(c[h>>2]|0)){if(!e){c[n>>2]=53856;c[n+4>>2]=10788;Zc(11,13600,n);c[h>>2]=11;break}if(e>>>0<2)k=0;else{k=e+-2|0;k=k-((k>>>0)%(((((c[b+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(((c[2514]|0)>>>0)/((c[b+32>>2]|0)>>>0)|0|0)?3:2)+k|0}l=vg(c[b>>2]|0,k,m,0)|0;if(l){c[h>>2]=l;break}e=(e-k|0)*5|0;l=e+-5|0;do if((l|0)>=0){k=c[m>>2]|0;b=c[k+4>>2]|0;l=b+l|0;if((a[l>>0]|0)==f<<24>>24?(d[b+(e+-3)>>0]<<16|d[b+(e+-4)>>0]<<24|d[b+(e+-2)>>0]<<8|d[b+(e+-1)>>0]|0)==(g|0):0)break;m=Cg(k)|0;c[h>>2]=m;if(!m){a[l>>0]=f;a[b+(e+-4)>>0]=g>>>24;a[b+(e+-3)>>0]=g>>>16;a[b+(e+-2)>>0]=g>>>8;a[b+(e+-1)>>0]=g}}else{c[n>>2]=53867;c[n+4>>2]=10788;Zc(11,13600,n);c[h>>2]=11;k=c[m>>2]|0}while(0);if(k)xg(k)}while(0);i=o;return}function wp(a,b,c){a=a|0;b=b|0;c=c|0;return Gm(a,b,c,0)|0}function xp(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;j=d[f>>0]&63;h=f+j|0;l=c[g+8>>2]|0;k=c[l>>2]|0;l=c[l+4>>2]|0;switch(d[f+1>>0]|0){case 1:{h=a[h>>0]|0;i=((h|0)<0)<<31>>31;m=11;break}case 6:{i=d[f+(j+1)>>0]<<16|d[h>>0]<<24|d[f+(j+2)>>0]<<8|d[f+(j+3)>>0];h=d[f+(j+5)>>0]<<16|d[f+(j+4)>>0]<<24|d[f+(j+6)>>0]<<8|d[f+(j+7)>>0];m=11;break}case 7:case 0:{h=Gm(b,f,g,0)|0;break}case 9:{i=0;h=1;m=11;break}case 3:{h=d[f+(j+1)>>0]<<8|a[h>>0]<<16|d[f+(j+2)>>0];i=((h|0)<0)<<31>>31;m=11;break}case 4:{h=d[f+(j+1)>>0]<<16|d[h>>0]<<24|d[f+(j+2)>>0]<<8|d[f+(j+3)>>0];i=((h|0)<0)<<31>>31;m=11;break}case 8:{i=0;h=0;m=11;break}case 2:{h=a[h>>0]<<8|d[f+(j+1)>>0];i=((h|0)<0)<<31>>31;m=11;break}case 5:{i=a[h>>0]<<8|d[f+(j+1)>>0];h=d[f+(j+3)>>0]<<16|d[f+(j+2)>>0]<<24|d[f+(j+4)>>0]<<8|d[f+(j+5)>>0];m=11;break}default:h=Gm(b,f,g,0)|0}do if((m|0)==11){if((l|0)>(i|0)|(l|0)==(i|0)&k>>>0>h>>>0){h=c[g+12>>2]|0;break}if((l|0)<(i|0)|(l|0)==(i|0)&k>>>0>>0){h=c[g+16>>2]|0;break}if((e[g+4>>1]|0)>1){h=Gm(b,f,g,1)|0;break}else{h=a[g+6>>0]|0;break}}while(0);return h|0}function yp(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;l=o+8|0;h=f+1|0;k=a[h>>0]|0;if(k<<24>>24>-1){h=k&255;c[l>>2]=h}else{im(h,l)|0;h=c[l>>2]|0}do if((h|0)>=12){if(!(h&1)){h=c[g+16>>2]|0;break}l=d[f>>0]|0;m=(h+-12|0)/2|0;if((l+m|0)>(b|0)){c[n>>2]=68550;c[n+4>>2]=10788;Zc(11,13600,n);a[g+7>>0]=11;h=0;break}h=c[g+8>>2]|0;k=c[h+12>>2]|0;h=Vv(f+l|0,c[h+16>>2]|0,(m|0)>(k|0)?k:m)|0;if(h)if((h|0)>0){h=c[g+16>>2]|0;break}else{h=c[g+12>>2]|0;break}if((m|0)==(k|0))if((e[g+4>>1]|0)>1){h=Gm(b,f,g,1)|0;break}else{h=a[g+6>>0]|0;break}else if((m-k|0)>0){h=c[g+16>>2]|0;break}else{h=c[g+12>>2]|0;break}}else h=c[g+12>>2]|0;while(0);i=o;return h|0}function zp(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=f+73|0;h=a[m>>0]|0;do if(h<<24>>24!=1){if((h&255)>2){h=Gn(f)|0;if(h)break;h=a[m>>0]|0}if(!(h<<24>>24)){c[g>>2]=1;h=0;break}h=f+68|0;i=c[h>>2]|0;if((i|0)!=0?(a[m>>0]=1,c[h>>2]=0,(i|0)>0):0)h=0;else n=9}else n=9;while(0);do if((n|0)==9){l=f+76|0;h=b[l>>1]|0;i=c[f+(h<<2)+120>>2]|0;h=f+(h<<1)+78|0;j=(b[h>>1]|0)+1<<16>>16;b[h>>1]=j;h=(a[i+5>>0]|0)!=0;if((j&65535)<(e[i+18>>1]|0)){if(h){h=0;break}h=Rm(f)|0;break}if(!h){h=d[i+6>>0]|0;i=c[i+56>>2]|0;h=nm(f,d[i+(h+9)>>0]<<16|d[i+(h+8)>>0]<<24|d[i+(h+10)>>0]<<8|d[i+(h+11)>>0])|0;if(h)break;h=Rm(f)|0;break}j=f+44|0;k=f+72|0;i=b[l>>1]|0;do{if(!(i<<16>>16)){n=15;break}h=c[f+(i<<16>>16<<2)+120>>2]|0;if(h){xg(c[h+68>>2]|0);i=b[l>>1]|0}i=i+-1<<16>>16;b[l>>1]=i;b[j>>1]=0;a[k>>0]=d[k>>0]&249;o=i<<16>>16;h=c[f+(o<<2)+120>>2]|0}while((e[f+(o<<1)+78>>1]|0)>=(e[h+18>>1]|0));if((n|0)==15){c[g>>2]=1;a[m>>0]=0;h=0;break}if(!(a[h+2>>0]|0))h=0;else h=zm(f,g)|0}while(0);return h|0}function Ap(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=f+73|0;h=a[p>>0]|0;do if(h<<24>>24!=1){if((h&255)>2){h=Gn(f)|0;if(h)break;h=a[p>>0]|0}if(!(h<<24>>24)){c[g>>2]=1;h=0;break}h=f+68|0;i=c[h>>2]|0;if((i|0)!=0?(a[p>>0]=1,c[h>>2]=0,(i|0)<0):0)h=0;else j=9}else j=9;while(0);a:do if((j|0)==9){o=f+76|0;k=b[o>>1]|0;l=k<<16>>16;j=c[f+(l<<2)+120>>2]|0;i=f+(l<<1)+78|0;h=b[i>>1]|0;if(!(a[j+5>>0]|0)){g=c[j+56>>2]|0;h=(h&65535)<<1;p=c[j+64>>2]|0;h=(d[p+h>>0]<<8|d[p+(h|1)>>0])&e[j+20>>1];h=nm(f,d[g+(h+1)>>0]<<16|d[g+h>>0]<<24|d[g+(h+2)>>0]<<8|d[g+(h+3)>>0])|0;if(h)break;h=Bp(f)|0;break}b:do if(!(h<<16>>16)){m=f+44|0;n=f+72|0;j=l;while(1){if(!(k<<16>>16))break;i=c[f+(j<<2)+120>>2]|0;if(!i)i=k;else{xg(c[i+68>>2]|0);i=b[o>>1]|0}k=i+-1<<16>>16;b[o>>1]=k;b[m>>1]=0;a[n>>0]=d[n>>0]&249;j=k<<16>>16;i=f+(j<<1)+78|0;h=b[i>>1]|0;if(h<<16>>16)break b}a[p>>0]=0;c[g>>2]=1;h=0;break a}while(0);b[i>>1]=h+-1<<16>>16;p=c[f+(b[o>>1]<<2)+120>>2]|0;if((a[p+2>>0]|0)!=0?(a[p+5>>0]|0)==0:0)h=Am(f,g)|0;else h=0}while(0);return h|0}function Bp(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;i=f+76|0;do{h=b[i>>1]|0;g=c[f+(h<<2)+120>>2]|0;if(a[g+5>>0]|0){j=4;break}k=d[g+6>>0]|0;l=c[g+56>>2]|0;k=d[l+(k+9)>>0]<<16|d[l+(k+8)>>0]<<24|d[l+(k+10)>>0]<<8|d[l+(k+11)>>0];b[f+(h<<1)+78>>1]=b[g+18>>1]|0;g=nm(f,k)|0}while((g|0)==0);if((j|0)==4){b[f+(h<<1)+78>>1]=(e[g+18>>1]|0)+65535;g=0}return g|0}function Cp(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0;o=i;i=i+224|0;if((i|0)>=(j|0))ba();m=o;k=o+8|0;c[k>>2]=0;do if(d){l=a+16|0;n=Bm(c[l>>2]|0,o+16|0,200,k)|0;if(n){Cm(c[l>>2]|0,e,d,n);if(!(b[n+4>>1]|0)){ig(c[(c[l>>2]|0)+12>>2]|0,c[k>>2]|0);c[m>>2]=53713;c[m+4>>2]=10788;Zc(11,13600,m);k=11;break}l=c[k>>2]|0;k=ym(a,n,e,f,g,h)|0;if(l)ig(c[(c[a+16>>2]|0)+12>>2]|0,l)}else k=7}else k=ym(a,0,e,f,g,h)|0;while(0);i=o;return k|0}function Dp(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;if((i|0)>=(j|0))ba();r=s+24|0;h=s;p=s+36|0;q=s+32|0;n=c[a+52>>2]|0;np(a,f,h);b[g>>1]=b[h+20>>1]|0;g=b[h+18>>1]|0;a:do if(g<<16>>16){k=g&65535;l=f+(k+3)|0;if(l>>>0>((c[a+56>>2]|0)+(e[a+20>>1]|0)|0)>>>0){c[r>>2]=58720;c[r+4>>2]=10788;Zc(11,13600,r);g=11;break}g=(c[n+36>>2]|0)+-4|0;g=(((c[h+12>>2]|0)+-1+g-(e[h+16>>1]|0)|0)>>>0)/(g>>>0)|0;if(g){m=n+44|0;a=g;k=d[f+(k+1)>>0]<<16|d[f+k>>0]<<24|d[f+(k+2)>>0]<<8|d[l>>0];while(1){a=a+-1|0;c[p>>2]=0;c[q>>2]=0;if(k>>>0<2)break;if(k>>>0>(c[m>>2]|0)>>>0)break;f=(a|0)==0;if(!f){g=Ip(n,k,q,p)|0;if(g)break a;g=c[q>>2]|0;if(g)l=13;else l=12}else l=12;if((l|0)==12){g=Up(n,k)|0;c[q>>2]=g;if(!g){g=0;l=15}else l=13}if((l|0)==13){l=0;if((b[(c[g+68>>2]|0)+26>>1]|0)==1)l=15;else{c[r>>2]=58754;c[r+4>>2]=10788;Zc(11,13600,r);g=11}}if((l|0)==15)g=Um(n,g,k)|0;h=c[q>>2]|0;if((h|0)!=0?(o=c[h+68>>2]|0,(o|0)!=0):0)xg(o);if(g)break a;if(f){g=0;break a}else k=c[p>>2]|0}c[r>>2]=58734;c[r+4>>2]=10788;Zc(11,13600,r);g=11}else g=0}else g=0;while(0);i=s;return g|0}function Ep(f,g,h,k){f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;if((i|0)>=(j|0))ba();m=w;do if(!(c[k>>2]|0)){s=c[f+56>>2]|0;t=g<<1;u=c[f+64>>2]|0;v=u+t|0;l=(d[v>>0]|0)<<8|(d[u+(t|1)>>0]|0);n=f+6|0;o=d[n>>0]|0;p=s+(o+5)|0;q=s+(o+6)|0;if(l>>>0>=((d[p>>0]|0)<<8|(d[q>>0]|0))>>>0?(r=f+52|0,(l+h|0)>>>0<=(c[(c[r>>2]|0)+36>>2]|0)>>>0):0){h=yq(f,l&65535,h&65535)|0;if(h){c[k>>2]=h;break}h=f+18|0;l=(b[h>>1]|0)+-1<<16>>16;b[h>>1]=l;if(!(l<<16>>16)){k=s+(o+1)|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;a[s+(o+7)>>0]=0;a[p>>0]=(c[(c[r>>2]|0)+36>>2]|0)>>>8;a[q>>0]=c[(c[r>>2]|0)+36>>2];b[f+16>>1]=(c[(c[r>>2]|0)+36>>2]|0)+65528-(d[n>>0]|0)-(d[f+7>>0]|0);break}else{hw(v|0,u+(t+2)|0,(l&65535)-g<<1|0)|0;a[s+(o+3)>>0]=(e[h>>1]|0)>>>8;a[s+(o+4)>>0]=b[h>>1];s=f+16|0;b[s>>1]=(e[s>>1]|0)+2;break}}c[m>>2]=58991;c[m+4>>2]=10788;Zc(11,13600,m);c[k>>2]=11}while(0);i=w;return}function Fp(f,g,h,k,l,m,n){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;var 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;D=i;i=i+16|0;if((i|0)>=(j|0))ba();p=D;z=D+12|0;v=D+8|0;a:do if(!(c[n>>2]|0)){o=f+1|0;if((a[o>>0]|0)==0?(B=k+2|0,C=f+16|0,(B|0)<=(e[C>>1]|0)):0){l=Cg(c[f+68>>2]|0)|0;if(l){c[n>>2]=l;break}w=c[f+56>>2]|0;q=e[f+14>>1]|0;x=f+18|0;y=e[x>>1]<<1;s=g<<1;t=q+s|0;u=f+6|0;l=d[u>>0]|0;c[z>>2]=0;g=y+q|0;q=w+(l+5)|0;r=w+(l+6)|0;o=((d[q>>0]<<8|d[r>>0])+65535&65535)+1|0;b:do if((g|0)>(o|0)){c[p>>2]=54326;c[p+4>>2]=10788;Zc(11,13600,p);l=11}else{p=g+2|0;do if((p|0)<=(o|0)){if((a[w+(l+1)>>0]|0)==0?(a[w+(l+2)>>0]|0)==0:0){A=20;break}c[v>>2]=0;g=zq(f,k,z,v)|0;l=c[z>>2]|0;if(l)break b;if(!(c[v>>2]|0))if(!g)A=20;else o=g-w|0;else A=21}else A=20;while(0);if((A|0)==20)if((p+k|0)>(o|0))A=21;else A=23;if((A|0)==21){l=Aq(f)|0;c[z>>2]=l;if(l)break;o=((d[q>>0]<<8|d[r>>0])+65535&65535)+1|0;A=23}if((A|0)==23){o=o-k|0;a[q>>0]=o>>>8;a[r>>0]=o}b[x>>1]=(b[x>>1]|0)+1<<16>>16;b[C>>1]=(e[C>>1]|0)-B;l=w+o|0;gw(l|0,h|0,k|0)|0;if(m){a[l>>0]=m>>>24;a[w+(o+1)>>0]=m>>>16;a[w+(o+2)>>0]=m>>>8;a[w+(o+3)>>0]=m}m=w+t|0;hw(w+(t+2)|0,m|0,y-s|0)|0;a[m>>0]=o>>>8;a[w+(t+1)>>0]=o;a[w+((d[u>>0]|0)+3)>>0]=(e[x>>1]|0)>>>8;a[w+((d[u>>0]|0)+4)>>0]=b[x>>1];if(!(a[(c[f+52>>2]|0)+17>>0]|0))break a;Bq(f,h,n);break a}while(0);c[n>>2]=l;break}if(!l)l=h;else gw(l|0,h|0,k|0)|0;if(m){a[l>>0]=m>>>24;a[l+1>>0]=m>>>16;a[l+2>>0]=m>>>8;a[l+3>>0]=m}n=a[o>>0]|0;a[o>>0]=n+1<<24>>24;n=n&255;c[f+(n<<2)+32>>2]=l;b[f+(n<<1)+22>>1]=g}while(0);i=D;return}function Gp(f){f=f|0;var g=0,h=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,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,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,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=i;i=i+240|0;if((i|0)>=(j|0))ba();Na=Oa+24|0;Ka=Oa+200|0;Aa=Oa+188|0;za=Oa+168|0;ya=Oa+160|0;Ba=Oa+136|0;Ca=Oa+116|0;Ma=Oa+96|0;Ha=Oa+92|0;xa=Oa+229|0;wa=Oa+72|0;va=Oa+52|0;ua=Oa+206|0;Ga=Oa+48|0;Da=Oa;Fa=Oa+44|0;Ja=Oa+40|0;Ia=Oa+36|0;Ea=Oa+32|0;La=Oa+204|0;ta=Oa+216|0;ea=f+4|0;ma=(c[(c[ea>>2]|0)+36>>2]<<1>>>0)/3|0;na=f+76|0;qa=f+74|0;ra=ta+4|0;sa=ta;fa=f+124|0;ka=f+78|0;la=f+80|0;l=b[na>>1]|0;da=0;while(1){m=l<<16>>16;n=c[f+(m<<2)+120>>2]|0;o=n+1|0;h=(a[o>>0]|0)==0;if(!(l<<16>>16)){if(h){h=da;g=0;break}c[Ka>>2]=0;c[Aa>>2]=0;k=c[n+52>>2]|0;g=Cg(c[n+68>>2]|0)|0;c[Na>>2]=g;do if(!g){h=n+72|0;c[Na>>2]=ep(k,Ka,Aa,c[h>>2]|0,0)|0;l=c[Ka>>2]|0;Cq(n,l,Na);if(a[k+17>>0]|0)vp(k,c[Aa>>2]|0,5,c[h>>2]|0,Na);g=c[Na>>2]|0;if(!g){gw(l+22|0,n+22|0,d[o>>0]<<1|0)|0;gw(l+32|0,n+32|0,d[o>>0]<<2|0)|0;a[l+1>>0]=a[o>>0]|0;ll(n,d[c[l+56>>2]>>0]&247);g=d[n+6>>0]|0;$=c[n+56>>2]|0;_=c[Aa>>2]|0;a[$+(g+8)>>0]=_>>>24;a[$+(g+9)>>0]=_>>>16;a[$+(g+10)>>0]=_>>>8;a[$+(g+11)>>0]=_;c[fa>>2]=l;g=0;break}c[fa>>2]=0;if(l)xg(c[l+68>>2]|0)}else c[fa>>2]=0;while(0);if(g){h=da;break}b[na>>1]=1;b[ka>>1]=0;b[la>>1]=0;l=c[fa>>2]|0;k=l+1|0;if(!(a[k>>0]|0)){h=1;m=1;ca=15}else{p=1;m=1;o=k}}else if(h){h=l;l=n;k=o;ca=15}else{p=l;l=n}if((ca|0)==15){ca=0;if((e[l+16>>1]|0)>>>0>ma>>>0){p=h;o=k}else{h=da;g=0;break}}k=m+-1|0;aa=c[f+(k<<2)+120>>2]|0;k=b[f+(k<<1)+78>>1]|0;q=k&65535;g=Cg(c[aa+68>>2]|0)|0;do if(!g){if(((((a[l+3>>0]|0)!=0?(a[o>>0]|0)==1:0)?(ga=b[l+22>>1]|0,ha=l+18|0,ga<<16>>16==(b[ha>>1]|0)):0)?(ia=aa+72|0,(c[ia>>2]|0)!=1):0)?(ja=aa+18|0,(b[ja>>1]|0)==k<<16>>16):0){k=c[l+52>>2]|0;if(!(ga<<16>>16)){c[Na>>2]=59423;c[Na+4>>2]=10788;Zc(11,13600,Na);h=da;g=11;break}$=ep(k,Fa,Ia,0,0)|0;c[Ja>>2]=$;if(!$){h=c[l+32>>2]|0;c[Ea>>2]=h;g=Hp(l,h)|0;b[La>>1]=g;m=c[Fa>>2]|0;ll(m,13);Dq(m,1,Ea,La);b[m+16>>1]=65534-(g&65535)+(c[k+36>>2]|0)-(e[m+14>>1]|0);if((a[k+17>>0]|0)!=0?(vp(k,c[Ia>>2]|0,5,c[ia>>2]|0,Ja),(g&65535)>(e[m+12>>1]|0)):0)Bq(m,h,Ja);$=c[l+56>>2]|0;k=e[ha>>1]<<1;h=c[l+64>>2]|0;k=(d[h+(k+-2)>>0]<<8|d[h+(k+-1)>>0])&e[l+20>>1];h=$+k|0;c[Ea>>2]=h;k=$+(k+9)|0;while(1){g=h+1|0;if((a[h>>0]|0)<0&g>>>0>>0)h=g;else break}c[Ea>>2]=g;k=h+10|0;m=ra;while(1){c[Ea>>2]=g+1;$=a[g>>0]|0;h=m+1|0;a[m>>0]=$;g=c[Ea>>2]|0;if(!($<<24>>24<0&g>>>0>>0))break;else m=h}Fp(aa,e[ja>>1]|0,ta,h-sa|0,0,c[l+72>>2]|0,Ja);h=d[aa+6>>0]|0;$=c[aa+56>>2]|0;_=c[Ia>>2]|0;a[$+(h+8)>>0]=_>>>24;a[$+(h+9)>>0]=_>>>16;a[$+(h+10)>>0]=_>>>8;a[$+(h+11)>>0]=_;h=c[Fa>>2]|0;if(h)xg(c[h+68>>2]|0)}h=da;g=c[Ja>>2]|0;break}h=Co(c[(c[ea>>2]|0)+32>>2]|0)|0;X=p<<16>>16==1;n=d[qa>>0]|0;K=n&1;c[Ka>>2]=0;a[xa+0>>0]=0;a[xa+1>>0]=0;a[xa+2>>0]=0;a[xa+3>>0]=0;a[xa+4>>0]=0;Z=c[aa+52>>2]|0;if(!h)g=7;else{B=aa+1|0;p=d[B>>0]|0;Y=aa+18|0;g=e[Y>>1]|0;m=g+p|0;if((m|0)<2){_=m;T=0}else{do if(k<<16>>16)if((m|0)==(q|0)){n=(n|-2)+q|0;break}else{n=q+-1|0;break}else n=0;while(0);_=2-K|0;T=n}$=_+1|0;n=T-p+_|0;A=aa+56|0;p=c[A>>2]|0;if((n|0)==(g|0))q=(d[aa+6>>0]|0)+8|0;else{q=n<<1;W=c[aa+64>>2]|0;q=(d[W+q>>0]<<8|d[W+(q|1)>>0])&e[aa+20>>1]}Q=p+q|0;O=p+(q+1)|0;P=p+(q+2)|0;D=p+(q+3)|0;W=d[O>>0]<<16|d[Q>>0]<<24|d[P>>0]<<8|d[D>>0];c[Ha>>2]=W;q=Aa+(_<<2)|0;W=rp(Z,W,q,0)|0;c[Ka>>2]=W;a:do if(!W){t=aa+22|0;w=aa+32|0;x=aa+20|0;y=aa+64|0;z=Z+22|0;N=Z+36|0;u=_;p=0;while(1){k=c[q>>2]|0;p=p+1+(e[k+18>>1]|0)+(d[k+1>>0]|0)|0;k=u+-1|0;if(!u)break;v=k+T|0;q=a[B>>0]|0;if((v|0)==(e[t>>1]|0))if(!(q<<24>>24)){q=0;ca=52}else{W=c[w>>2]|0;c[ya+(k<<2)>>2]=W;n=d[W+1>>0]<<16|d[W>>0]<<24|d[W+2>>0]<<8|d[W+3>>0];c[Ha>>2]=n;c[Ma+(k<<2)>>2]=(Hp(aa,W)|0)&65535;a[B>>0]=0}else ca=52;if((ca|0)==52){ca=0;n=c[A>>2]|0;r=v-(q&255)<<1;m=c[y>>2]|0;r=(d[m+r>>0]<<8|d[m+(r|1)>>0])&e[x>>1];m=n+r|0;g=ya+(k<<2)|0;c[g>>2]=m;n=d[n+(r+1)>>0]<<16|d[m>>0]<<24|d[n+(r+2)>>0]<<8|d[n+(r+3)>>0];c[Ha>>2]=n;s=(Hp(aa,m)|0)&65535;c[Ma+(k<<2)>>2]=s;if(b[z>>1]&4){if((s+r|0)>(c[N>>2]|0)){k=u;ca=54;break}gw(h+r|0,m|0,s|0)|0;c[g>>2]=h+(m-(c[A>>2]|0));q=a[B>>0]|0}Ep(aa,v-(q&255)|0,s,Ka)}q=Aa+(k<<2)|0;W=rp(Z,n,q,0)|0;c[Ka>>2]=W;if(W){ca=47;break a}else u=k}if((ca|0)==54){ca=0;c[Na>>2]=59766;c[Na+4>>2]=10788;Zc(11,13600,Na);c[Ka>>2]=11;bw(Aa|0,0,k<<2|0)|0;m=0;n=0;break}q=p+3&-4;W=ci((c[Z+32>>2]|0)+(q*6|0)|0)|0;if(!W){c[Ka>>2]=7;m=W;n=0;break}U=W+(q<<2)|0;G=U+(q<<1)|0;J=c[Aa>>2]|0;R=d[J+5>>0]<<2;V=R&65535;S=a[J+3>>0]|0;C=S&255;if((_|0)>-1){F=S<<24>>24!=0;H=J;n=0;I=0;p=0;while(1){E=e[H+18>>1]|0;M=a[H+1>>0]|0;A=M&255;B=A+E|0;if(!(M<<24>>24)){g=c[H+56>>2]|0;if((B|0)>0){v=e[H+20>>1]|0;u=e[H+14>>1]|0;t=0;s=p;while(1){M=(t<<1)+u|0;M=g+((d[g+M>>0]<<8|d[g+(M+1)>>0])&v)|0;c[W+(s<<2)>>2]=M;b[U+(s<<1)>>1]=Hp(H,M)|0;t=t+1|0;if((t|0)==(E|0))break;else s=s+1|0}p=E+p|0}}else if((B|0)>0){w=H+56|0;u=H+20|0;t=H+64|0;s=0;g=p;while(1){v=s;z=A;b:while(1){while(1){x=z+-1|0;if((z|0)<=0){ca=72;break b}z=e[H+(x<<1)+22>>1]|0;if((z|0)>(v|0))z=x;else{y=z;z=x;break}}if((y|0)==(v|0)){ca=71;break}else v=v+-1|0}if((ca|0)==71){ca=0;v=c[H+(z<<2)+32>>2]|0}else if((ca|0)==72){ca=0;v=v<<1;M=c[t>>2]|0;v=(c[w>>2]|0)+((d[M+v>>0]<<8|d[M+(v|1)>>0])&e[u>>1])|0}c[W+(g<<2)>>2]=v;b[U+(g<<1)>>1]=Hp(H,v)|0;s=s+1|0;if((s|0)==(B|0))break;else g=g+1|0}p=E+p+A|0}c[Ca+(n<<2)>>2]=p;if((n|0)>=(_|0)|F)q=I;else{k=c[Ma+(n<<2)>>2]|0;r=U+(p<<1)|0;b[r>>1]=k;k=k&65535;q=k+I|0;gw(G+I|0,c[ya+(n<<2)>>2]|0,k|0)|0;k=W+(p<<2)|0;c[k>>2]=G+(I+R);m=(e[r>>1]|0)-R|0;b[r>>1]=m;do if(!(a[H+5>>0]|0)){M=c[k>>2]|0;L=(c[H+56>>2]|0)+8|0;L=d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24;a[M>>0]=L;a[M+1>>0]=L>>8;a[M+2>>0]=L>>16;a[M+3>>0]=L>>24}else{if((m&65532)>>>0>=4)break;a[G+q>>0]=0;b[r>>1]=4;q=q+1|0}while(0);p=p+1|0}n=n+1|0;if((n|0)>=($|0))break;H=c[Aa+(n<<2)>>2]|0;I=q}q=R+-12+(c[N>>2]|0)|0;if((p|0)>0){r=F<<31>>31;m=0;k=0;n=0;do{g=n+2+(e[U+(m<<1)>>1]|0)|0;if((g|0)>(q|0)){c[Ma+(k<<2)>>2]=n;c[Ba+(k<<2)>>2]=m;if((k|0)>3){ca=91;break}else{m=m+r|0;k=k+1|0;n=0}}else n=g;m=m+1|0}while((m|0)<(p|0));if((ca|0)==91){ca=0;c[Na>>2]=59904;c[Na+4>>2]=10788;Zc(11,13600,Na);c[Ka>>2]=11;m=W;n=0;break}c[Ma+(k<<2)>>2]=n;c[Ba+(k<<2)>>2]=p;if((k|0)>0){B=(K|0)==0;m=k;do{s=Ma+(m<<2)|0;m=m+-1|0;g=Ma+(m<<2)|0;t=Ba+(m<<2)|0;x=c[t>>2]|0;A=c[g>>2]|0;r=n;while(1){w=x+-1|0;v=x-C|0;if(r){if(!B){n=A;break}y=b[U+(v<<1)>>1]|0;z=r+2|0;v=b[U+(w<<1)>>1]|0;u=A+-2|0;if(((y&65535)+z|0)>(u-(v&65535)|0)){n=A;break}}else{u=A+-2|0;z=2;y=b[U+(v<<1)>>1]|0;v=b[U+(w<<1)>>1]|0}c[t>>2]=w;x=w;A=u-(v&65535)|0;r=(y&65535)+z|0}c[s>>2]=r;c[g>>2]=n}while((m|0)>0);I=1;M=q;L=p}else{I=1;M=q;L=p}}else ca=93}else{q=R+-12+(c[N>>2]|0)|0;p=0;ca=93}if((ca|0)==93){ca=0;c[Ma>>2]=0;c[Ba>>2]=p;I=0;M=q;k=0;L=p}if((c[J+72>>2]|0)>>>0<2){c[Na>>2]=59963;c[Na+4>>2]=10788;Zc(11,13600,Na);c[Ka>>2]=11;m=W;n=0;break}E=d[c[J+56>>2]>>0]|0;if((k|0)>-1){s=(K|0)!=0;g=Z+17|0;m=aa+72|0;u=0;n=0;while(1){do if((u|0)<($|0)){J=Aa+(u<<2)|0;K=c[J>>2]|0;c[za+(u<<2)>>2]=K;c[Ga>>2]=K;c[J>>2]=0;K=Cg(c[K+68>>2]|0)|0;c[Ka>>2]=K;n=n+1|0;if(K){m=W;break a}}else{K=ep(Z,Ga,Ha,s?1:c[Ha>>2]|0,0)|0;c[Ka>>2]=K;if(K){m=W;break a}q=c[Ga>>2]|0;ll(q,E);c[za+(u<<2)>>2]=q;n=n+1|0;c[Ca+(u<<2)>>2]=L;if(!(a[g>>0]|0))break;vp(Z,c[q+72>>2]|0,5,c[m>>2]|0,Ka);if(c[Ka>>2]|0){m=W;break a}}while(0);if((u|0)<(k|0))u=u+1|0;else break}if((n|0)>0){p=0;c:do{K=c[za+(p<<2)>>2]|0;q=c[K+72>>2]|0;c[wa+(p<<2)>>2]=q;c[va+(p<<2)>>2]=q;b[ua+(p<<1)>>1]=b[(c[K+68>>2]|0)+24>>1]|0;if((p|0)>0){m=0;do{if((c[wa+(m<<2)>>2]|0)==(q|0)){ca=118;break c}m=m+1|0}while((m|0)<(p|0))}p=p+1|0}while((p|0)<(n|0));if((ca|0)==118){ca=0;c[Na>>2]=60018;c[Na+4>>2]=10788;Zc(11,13600,Na);c[Ka>>2]=11;m=W;break}r=(n|0)>1;m=Z+44|0;k=0;do{if(r){p=0;q=1;do{p=(c[va+(q<<2)>>2]|0)>>>0<(c[va+(p<<2)>>2]|0)>>>0?q:p;q=q+1|0}while((q|0)!=(n|0))}else p=0;K=va+(p<<2)|0;q=c[K>>2]|0;c[K>>2]=-1;if((p|0)!=(k|0)){if((p|0)>(k|0)){J=c[(c[za+(p<<2)>>2]|0)+68>>2]|0;K=p+1+(c[m>>2]|0)|0;b[J+24>>1]=0;Vp(J,K)}K=c[za+(k<<2)>>2]|0;J=c[K+68>>2]|0;b[J+24>>1]=b[ua+(p<<1)>>1]|0;Vp(J,q);c[K+72>>2]=q}k=k+1|0}while((k|0)!=(n|0));c[Ha>>2]=q;K=0}else K=1}else{K=1;n=0}H=n+-1|0;q=c[za+(H<<2)>>2]|0;J=c[q+72>>2]|0;a[Q>>0]=J>>>24;a[O>>0]=J>>>16;a[P>>0]=J>>>8;a[D>>0]=J;if(!((E&8|0)!=0|($|0)==(n|0))){Q=(c[q+56>>2]|0)+8|0;P=(c[(c[((n|0)>($|0)?za:Aa)+(_<<2)>>2]|0)+56>>2]|0)+8|0;P=d[P>>0]|d[P+1>>0]<<8|d[P+2>>0]<<16|d[P+3>>0]<<24;a[Q>>0]=P;a[Q+1>>0]=P>>8;a[Q+2>>0]=P>>16;a[Q+3>>0]=P>>24}J=Z+17|0;if((a[J>>0]|0)!=0?(oa=c[za>>2]|0,pa=c[N>>2]|0,I):0){A=S<<24>>24==0;y=A&1;x=V<<16>>16==0;v=c[oa+56>>2]|0;u=(e[oa+18>>1]|0)+(d[oa+1>>0]|0)|0;w=0;t=0;p=0;r=oa;while(1){z=c[W+(w<<2)>>2]|0;if((w|0)==(u|0)){p=p+1|0;if((p|0)<(n|0))q=za+(p<<2)|0;else q=Aa+(p<<2)|0;u=c[q>>2]|0;v=c[u+56>>2]|0;u=w+y+(e[u+18>>1]|0)+(d[u+1>>0]|0)|0}if((w|0)==(c[Ba+(t<<2)>>2]|0)){q=t+1|0;r=c[za+(q<<2)>>2]|0;if(!A)ca=142}else{q=t;ca=142}do if((ca|0)==142){ca=0;if((p|0)<(n|0)?(z>>>0>=v>>>0?(c[r+72>>2]|0)==(c[wa+(p<<2)>>2]|0):0)&z>>>0<(v+pa|0)>>>0:0)break;if(x)vp(Z,d[z+1>>0]<<16|d[z>>0]<<24|d[z+2>>0]<<8|d[z+3>>0],5,c[r+72>>2]|0,Ka);if((e[U+(w<<1)>>1]|0)<=(e[r+12>>1]|0))break;Bq(r,z,Ka)}while(0);w=w+1|0;if((w|0)==(L|0))break;else t=q}}if((H|0)>0){s=S<<24>>24==0;u=0;v=0;while(1){t=c[za+(u<<2)>>2]|0;p=c[Ba+(u<<2)>>2]|0;m=c[W+(p<<2)>>2]|0;k=b[U+(p<<1)>>1]|0;q=(k&65535)+R|0;r=h+v|0;do if(!(a[t+5>>0]|0)){p=(c[t+56>>2]|0)+8|0;Q=d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24;a[p>>0]=Q;a[p+1>>0]=Q>>8;a[p+2>>0]=Q>>16;a[p+3>>0]=Q>>24;p=r}else{if(!s){np(t,c[W+(p+-1<<2)>>2]|0,Da);q=Da;m=r;p=0;q=(lm(h+(v+4)|0,c[q>>2]|0,c[q+4>>2]|0)|0)+4|0;break}g=m+-4|0;if(k<<16>>16!=4){m=g;p=r;break}m=g;p=r;q=(Hp(aa,g)|0)&65535}while(0);Fp(aa,u+T|0,m,q,p,c[t+72>>2]|0,Ka);if(c[Ka>>2]|0){m=W;break a}u=u+1|0;if((u|0)>=(H|0))break;else v=q+v|0}}q=1-n|0;if((q|0)<(n|0)){I=c[Ba>>2]|0;H=S<<24>>24==0&1;do{F=(q|0)<0?0-q|0:q;G=xa+F|0;do if(!(a[G>>0]|0)){if((q|0)<=-1?(T=F+-1|0,(c[Ca+(T<<2)>>2]|0)<(c[Ba+(T<<2)>>2]|0)):0)break;if(!F){E=0;m=0;D=I}else{p=F+-1|0;if((F|0)<($|0))m=(c[Ca+(p<<2)>>2]|0)+H|0;else m=L;D=(c[Ba+(p<<2)>>2]|0)+H|0;E=D;D=(c[Ba+(F<<2)>>2]|0)-D|0}B=c[za+(F<<2)>>2]|0;s=c[B+56>>2]|0;g=d[B+6>>0]|0;k=B+64|0;p=(c[k>>2]|0)+(D<<1)|0;r=B+18|0;v=e[r>>1]|0;C=B+1|0;u=v+m+(d[C>>0]|0)|0;t=D+E|0;if((m|0)<(E|0)){T=Eq(B,E-m|0,W+(m<<2)|0,U+(m<<1)|0)|0;S=c[k>>2]|0;hw(S|0,S+(T<<1)|0,v<<1|0)|0;v=v-T|0}if((u|0)>(t|0))v=v-(Eq(B,u-t|0,W+(t<<2)|0,U+(t<<1)|0)|0)|0;x=s+(g+5)|0;w=s+(g+6)|0;T=s+(((d[x>>0]<<8|d[w>>0])+65535&65535)+1)|0;c[Na>>2]=T;d:do if(T>>>0

>>0)ca=181;else{if((E|0)<(m|0)){u=m-E|0;u=(u|0)>(D|0)?D:u;T=c[k>>2]|0;hw(T+(u<<1)|0,T|0,v<<1|0)|0;if(Fq(B,p,Na,T,u,W+(E<<2)|0,U+(E<<1)|0)|0){ca=181;break}v=v+u|0}u=a[C>>0]|0;if(u<<24>>24){A=0;do{z=(e[B+(A<<1)+22>>1]|0)+m|0;y=z-E|0;if((y|0)>-1&(y|0)<(D|0)){S=y<<1;R=c[k>>2]|0;T=R+S|0;hw(R+(S+2)|0,T|0,v-y<<1|0)|0;if(Fq(B,p,Na,T,1,W+(z<<2)|0,U+(z<<1)|0)|0){ca=181;break d}u=a[C>>0]|0;v=v+1|0}A=A+1|0}while((A|0)<(u&255|0))}T=v+E|0;if(Fq(B,p,Na,(c[k>>2]|0)+(v<<1)|0,D-v|0,W+(T<<2)|0,U+(T<<1)|0)|0){ca=181;break}T=D&65535;b[r>>1]=T;a[C>>0]=0;a[s+(g+3)>>0]=(T&65535)>>>8;a[s+(g+4)>>0]=b[r>>1];T=(c[Na>>2]|0)-s|0;a[x>>0]=T>>>8;a[w>>0]=T}while(0);if((ca|0)==181){ca=0;Dq(B,D,W+(E<<2)|0,U+(E<<1)|0)}a[G>>0]=1;b[B+16>>1]=M-(c[Ma+(F<<2)>>2]|0)}while(0);q=q+1|0}while((q|0)!=(n|0))}do if(X){if(b[Y>>1]|0){ca=191;break}m=c[za>>2]|0;if((d[aa+6>>0]|0)>>>0>(e[m+16>>1]|0)>>>0){ca=191;break}c[Ka>>2]=Aq(m)|0;Cq(m,aa,Ka);if(c[Ka>>2]|0)break;c[Ka>>2]=Um(c[m+52>>2]|0,m,c[m+72>>2]|0)|0}else ca=191;while(0);do if((ca|0)==191){ca=0;if((a[J>>0]|0)==0|V<<16>>16!=0|K)break;else m=0;do{Y=c[za+(m<<2)>>2]|0;X=c[Y+56>>2]|0;vp(Z,d[X+9>>0]<<16|d[X+8>>0]<<24|d[X+10>>0]<<8|d[X+11>>0],5,c[Y+72>>2]|0,Ka);m=m+1|0}while((m|0)!=(n|0))}while(0);if((n|0)>=($|0)){m=W;break}m=c[Ka>>2]|0;g=n;do{k=c[Aa+(g<<2)>>2]|0;if(!m){m=Um(c[k+52>>2]|0,k,c[k+72>>2]|0)|0;c[Ka>>2]=m}g=g+1|0}while((g|0)!=($|0));m=W}else{k=_;ca=47}while(0);if((ca|0)==47){ca=0;bw(Aa|0,0,(k<<2)+4|0)|0;m=0;n=0}di(m);if((_|0)>-1){k=0;do{m=c[Aa+(k<<2)>>2]|0;if(m)xg(c[m+68>>2]|0);k=k+1|0}while((k|0)<($|0))}if((n|0)>0){k=0;do{g=c[za+(k<<2)>>2]|0;if(g)xg(c[g+68>>2]|0);k=k+1|0}while((k|0)!=(n|0))}g=c[Ka>>2]|0}if(da)Xk(da)}else h=da;while(0);a[o>>0]=0;if(l)xg(c[l+68>>2]|0);l=(b[na>>1]|0)+-1<<16>>16;b[na>>1]=l;if(g)break;else da=h}if(h)Xk(h);i=Oa;return g|0}function Hp(b,f){b=b|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=d[b+7>>0]|0;h=f+g|0;do if(!(a[b+4>>0]|0)){j=a[h>>0]|0;i=j&255;if(j<<24>>24<0){j=f+(g+9)|0;g=i&127;do{h=h+1|0;i=a[h>>0]|0;g=i&127|g<<7}while(i<<24>>24<0&h>>>0>>0)}else g=i;i=h+1|0;if(a[b+2>>0]|0){k=h+10|0;j=i;while(1){i=h+2|0;if((a[j>>0]|0)<0&i>>>0>>0){h=j;j=i}else break}}h=e[b+10>>1]|0;if(g>>>0>h>>>0){j=e[b+12>>1]|0;g=(((g-j|0)>>>0)%(((c[(c[b+52>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+j|0;g=(i-f&65535)+4+(g>>>0>h>>>0?j:g)|0;break}else{g=i-f+g|0;g=g>>>0<4?4:g;break}}else{i=f+(g+9)|0;while(1){g=h+1|0;if((a[h>>0]|0)<0&g>>>0>>0)h=g;else break}g=g-f|0}while(0);return g&65535|0}function Ip(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();q=s+4|0;p=s;o=s+8|0;c[q>>2]=0;if(a[b+17>>0]|0){h=((c[2514]|0)>>>0)/((c[b+32>>2]|0)>>>0)|0;m=b+36|0;n=e;while(1){l=n+1|0;if(l>>>0<2)k=0;else{k=n+-1|0;k=k-((k>>>0)%(((((c[m>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(h|0)?3:2)+k|0}if((k|0)==(l|0)|(n|0)==(h|0))n=l;else break}if(l>>>0<=(c[b+44>>2]|0)>>>0){n=dp(b,l,o,p)|0;m=(n|0)==0;k=m&(a[o>>0]|0)==4&(c[p>>2]|0)==(e|0);l=k?l:0;if(k|m^1){h=0;k=k?101:n}else r=8}else{l=0;r=8}}else{l=0;r=8}if((r|0)==8){k=$k(b,e,q,(f|0)==0?2:0)|0;h=c[q>>2]|0;if(!k){l=c[h+56>>2]|0;l=d[l+1>>0]<<16|d[l>>0]<<24|d[l+2>>0]<<8|d[l+3>>0];k=0}}c[g>>2]=l;if(!f){if(h)xg(c[h+68>>2]|0)}else c[f>>2]=h;i=s;return ((k|0)==101?0:k)|0}function Jp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;c[h>>2]=0;f=(b|0)!=0;a:do if(d)if(f){f=h;while(1){g=d+8|0;while(1){if((Sp(a,b+8|0,c[b>>2]|0,g,c[d>>2]|0)|0)>=1)break;c[f>>2]=b;f=b+4|0;b=c[f>>2]|0;if(!b){b=0;g=0;break a}else g=0}c[f>>2]=d;f=d+4|0;d=c[f>>2]|0;if(!d){d=0;g=1;break a}if(!b){b=0;g=0;break}}}else{g=f;f=h}else{d=0;g=f;f=h}while(0);c[f>>2]=g?b:d;c[e>>2]=c[h>>2];i=k;return}function Kp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g+8|0;e=g;d=c[2252]|0;if((d|0)!=0?(hc[d&127](202)|0)!=0:0)d=3338;else{d=ip(c[a>>2]|0,0,b,4126,f)|0;c[f>>2]=d;if(!d){d=e;c[d>>2]=0;c[d+4>>2]=0;d=c[b>>2]|0;Yb[c[(c[d>>2]|0)+40>>2]&63](d,18,e)|0;d=c[f>>2]|0}}i=g;return d|0}function Lp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=b+0|0;h=g+40|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));g=((d|0)<0)<<31>>31;h=mg(d,g)|0;c[b+4>>2]=h;if(!h)c[b>>2]=7;else{h=nw(e|0,f|0,d|0,g|0)|0;c[b+12>>2]=h;c[b+16>>2]=h;h=$v(e|0,f|0,h|0,((h|0)<0)<<31>>31|0)|0;g=b+24|0;c[g>>2]=h;c[g+4>>2]=C;c[b+8>>2]=d;c[b+32>>2]=a}return}function Mp(a,b,d){a=a|0;b=b|0;d=d|0;var 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;a:do if((d|0)>0){f=a+8|0;h=a+16|0;i=a+4|0;j=a+32|0;k=a+12|0;l=a+24|0;m=d;do{if(c[a>>2]|0)break a;g=c[h>>2]|0;e=(c[f>>2]|0)-g|0;e=(m|0)>(e|0)?e:m;gw((c[i>>2]|0)+g|0,b+(d-m)|0,e|0)|0;g=(c[h>>2]|0)+e|0;c[h>>2]=g;if((g|0)==(c[f>>2]|0)){q=c[j>>2]|0;o=c[k>>2]|0;p=(c[i>>2]|0)+o|0;n=l;n=fw(c[n>>2]|0,c[n+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;c[a>>2]=pc[c[(c[q>>2]|0)+12>>2]&31](q,p,g-o|0,n,C)|0;c[h>>2]=0;c[k>>2]=0;n=c[f>>2]|0;g=l;n=fw(c[g>>2]|0,c[g+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;g=l;c[g>>2]=n;c[g+4>>2]=C}m=m-e|0}while((m|0)>0)}while(0);return}function Np(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;if(((c[a>>2]|0)==0?(e=c[f>>2]|0,(e|0)!=0):0)?(d=c[a+16>>2]|0,g=c[a+12>>2]|0,(d|0)>(g|0)):0){i=c[a+32>>2]|0;h=a+24|0;h=fw(c[h>>2]|0,c[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;c[a>>2]=pc[c[(c[i>>2]|0)+12>>2]&31](i,e+g|0,d-g|0,h,C)|0}e=a+24|0;d=c[a+16>>2]|0;e=fw(d|0,((d|0)<0)<<31>>31|0,c[e>>2]|0,c[e+4>>2]|0)|0;d=b;c[d>>2]=e;c[d+4>>2]=C;Sc(c[f>>2]|0);f=c[a>>2]|0;d=a+0|0;e=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));return f|0}function Op(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[2252]|0;if((g|0)!=0?(hc[g&127](201)|0)!=0:0)g=266;else{h=b+44|0;if(c[h>>2]|0)c[h>>2]=0;n=b;c[n>>2]=e;c[n+4>>2]=f;n=d+8|0;l=c[n>>2]|0;n=c[n+4>>2]|0;j=b+8|0;k=j;c[k>>2]=l;c[k+4>>2]=n;d=c[d>>2]|0;k=b+24|0;c[k>>2]=d;a=a+8|0;g=c[a>>2]|0;i=c[(c[g+24>>2]|0)+136>>2]|0;m=((i|0)<0)<<31>>31;if(!((n|0)>(m|0)|(n|0)==(m|0)&l>>>0>i>>>0)?(c[c[d>>2]>>2]|0)>2:0){c[h>>2]=0;g=c[a>>2]|0}i=c[g+12>>2]|0;d=((i|0)<0)<<31>>31;f=nw(e|0,f|0,i|0,d|0)|0;a=b+36|0;g=c[a>>2]|0;if(!g){g=mg(i,d)|0;c[a>>2]=g;c[b+40>>2]=i;e=g;g=(g|0)==0?7:0}else{e=g;g=0}if((g|0)==0&(f|0)!=0){g=i-f|0;i=b;h=c[i>>2]|0;i=c[i+4>>2]|0;b=fw(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;l=C;d=j;a=c[d>>2]|0;d=c[d+4>>2]|0;if((l|0)>(d|0)|(l|0)==(d|0)&b>>>0>a>>>0)g=$v(a|0,d|0,h|0,i|0)|0;k=c[k>>2]|0;g=pc[c[(c[k>>2]|0)+8>>2]&31](k,e+f|0,g,h,i)|0}}return g|0}function Pp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+32|0;if((i|0)>=(j|0))ba();k=l+8|0;h=l;f=c[b+44>>2]|0;e=b;g=c[e>>2]|0;a:do if(!f){f=c[b+40>>2]|0;e=nw(g|0,c[e+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;if((e|0)!=0&(f-e|0)>8){f=(op((c[b+36>>2]|0)+e|0,d)|0)&255;e=b;f=fw(c[e>>2]|0,c[e+4>>2]|0,f|0,0)|0;e=b;c[e>>2]=f;c[e+4>>2]=C;e=0;break}else f=0;while(1){e=Gq(b,1,h)|0;if(e)break a;e=a[c[h>>2]>>0]|0;a[k+(f&15)>>0]=e;if(e<<24>>24<0)f=f+1|0;else break}op(k,d)|0;e=0}else{f=(op(f+g|0,d)|0)&255;e=b;f=fw(c[e>>2]|0,c[e+4>>2]|0,f|0,0)|0;e=b;c[e>>2]=f;c[e+4>>2]=C;e=0}while(0);i=l;return e|0}function Qp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;d=g;c[d>>2]=0;c[d+4>>2]=0;d=a;f=c[d+4>>2]|0;b=a+8|0;e=c[b+4>>2]|0;do if((f|0)<(e|0)|((f|0)==(e|0)?(c[d>>2]|0)>>>0<(c[b>>2]|0)>>>0:0))h=9;else{d=c[a+48>>2]|0;if(d){b=Hq(d)|0;l=d+32|0;f=d+48|0;c[l+0>>2]=c[f+0>>2];c[l+4>>2]=c[f+4>>2];c[l+8>>2]=c[f+8>>2];c[l+12>>2]=c[f+12>>2];l=d+40|0;f=d+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;if((c[l>>2]|0)==(e|0)?(c[l+4>>2]|0)==(f|0):0)c[d+20>>2]=1;if(!b)if(!(c[d+20>>2]|0)){b=Op(c[d>>2]|0,a,d+32|0,e,f)|0;if(!b){h=9;break}else break}else b=0}else b=0;Rp(a)}while(0);if((h|0)==9){b=Pp(a,g)|0;if(!b){b=c[g>>2]|0;c[a+20>>2]=b;b=Gq(a,b,a+32|0)|0}}i=k;return b|0}function Rp(a){a=a|0;var b=0;Sc(c[a+28>>2]|0);Sc(c[a+36>>2]|0);Om(c[a+48>>2]|0);a=a+0|0;b=a+56|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Sp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+12>>2]|0;if(e)Cm(c[(c[a+8>>2]|0)+28>>2]|0,f,e,g);return Gm(d,b,g,0)|0}function Tp(f,g,h,k){f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;if((i|0)>=(j|0))ba();m=w;l=w+8|0;s=w+12|0;do if((c[f+44>>2]|0)>>>0>=g>>>0){g=rp(f,g,l,0)|0;if(!g){u=c[l>>2]|0;t=u+9|0;a:do if(!(a[t>>0]|0)){a[t>>0]=1;q=d[u+6>>0]|0;o=u+18|0;l=b[o>>1]|0;if(!(l<<16>>16)){l=l&65535;g=u+5|0}else{n=0;while(1){m=c[u+56>>2]|0;l=n<<1;g=c[u+64>>2]|0;l=(d[g+l>>0]<<8|d[g+(l|1)>>0])&e[u+20>>1];g=m+l|0;p=u+5|0;if((a[p>>0]|0)==0?(r=Tp(f,d[m+(l+1)>>0]<<16|d[g>>0]<<24|d[m+(l+2)>>0]<<8|d[m+(l+3)>>0],1,k)|0,(r|0)!=0):0){g=r;v=21;break a}g=Dp(u,g,s)|0;n=n+1|0;if(g){v=21;break a}l=e[o>>1]|0;if((n|0)>=(l|0)){g=p;break}}}if(!(a[g>>0]|0)){g=c[u+56>>2]|0;g=Tp(f,d[g+(q+9)>>0]<<16|d[g+(q+8)>>0]<<24|d[g+(q+10)>>0]<<8|d[g+(q+11)>>0],1,k)|0;if(!g)v=16}else if(!k)v=16;else{c[k>>2]=(c[k>>2]|0)+l;v=16}if((v|0)==16){if(h){g=Um(c[u+52>>2]|0,u,c[u+72>>2]|0)|0;v=21;break}g=Cg(c[u+68>>2]|0)|0;if(!g){ll(u,d[(c[u+56>>2]|0)+q>>0]|8);g=0;v=21;break}}a[t>>0]=0}else{c[m>>2]=60971;c[m+4>>2]=10788;Zc(11,13600,m);g=11;v=21}while(0);if((v|0)==21){a[t>>0]=0;if(!u)break}xg(c[u+68>>2]|0)}}else{c[m>>2]=60966;c[m+4>>2]=10788;Zc(11,13600,m);g=11}while(0);i=w;return g|0}function Up(b,d){b=b|0;d=d|0;var e=0,f=0;f=(c[b>>2]|0)+204|0;e=Yb[c[8744+132>>2]&63](c[(c[f>>2]|0)+40>>2]|0,d,0)|0;e=el(c[f>>2]|0,d,e)|0;if(!e)e=0;else{f=c[e+8>>2]|0;c[f+56>>2]=c[e+4>>2];c[f+68>>2]=e;c[f+52>>2]=b;c[f+72>>2]=d;a[f+6>>0]=(d|0)==1?100:0;e=f}return e|0}function Vp(a,d){a=a|0;d=d|0;var e=0;e=a+20|0;mc[c[8744+140>>2]&15](c[(c[a+28>>2]|0)+40>>2]|0,c[a>>2]|0,c[e>>2]|0,d);c[e>>2]=d;if((b[a+24>>1]&6)==6)Mo(a,3);return}function Wp(f){f=f|0;var g=0,h=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;v=i;i=i+16|0;if((i|0)>=(j|0))ba();u=v;r=c[f+52>>2]|0;s=a[f>>0]|0;t=c[f+72>>2]|0;q=Xp(f)|0;c[u>>2]=q;if(!q){q=b[f+18>>1]|0;p=q&65535;if(!(q<<16>>16))g=f+5|0;else{h=f+56|0;k=f+20|0;l=f+64|0;g=f+5|0;q=0;do{m=c[h>>2]|0;n=q<<1;o=c[l>>2]|0;n=(d[o+n>>0]<<8|d[o+(n|1)>>0])&e[k>>1];o=m+n|0;Bq(f,o,u);if(!(a[g>>0]|0))vp(r,d[m+(n+1)>>0]<<16|d[o>>0]<<24|d[m+(n+2)>>0]<<8|d[m+(n+3)>>0],5,t,u);q=q+1|0}while((q|0)<(p|0))}if(!(a[g>>0]|0)){q=d[f+6>>0]|0;p=c[f+56>>2]|0;vp(r,d[p+(q+9)>>0]<<16|d[p+(q+8)>>0]<<24|d[p+(q+10)>>0]<<8|d[p+(q+11)>>0],5,t,u)}}a[f>>0]=s;i=v;return c[u>>2]|0}function Xp(e){e=e|0;var f=0,g=0,h=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;v=i;i=i+16|0;if((i|0)>=(j|0))ba();u=v;a:do if(!(a[e>>0]|0)){f=c[e+52>>2]|0;r=c[e+56>>2]|0;l=d[e+6>>0]|0;if(No(e,d[r+l>>0]|0)|0){c[u>>2]=54562;c[u+4>>2]=10788;Zc(11,13600,u);f=11;break}n=c[f+32>>2]|0;b[e+20>>1]=n+65535;a[e+1>>0]=0;q=c[f+36>>2]|0;f=l+8+(d[e+7>>0]|0)|0;b[e+14>>1]=f;c[e+60>>2]=r+q;f=f&65535;c[e+64>>2]=r+f;k=a[r+(l+5)>>0]|0;h=a[r+(l+6)>>0]|0;g=d[r+(l+3)>>0]<<8|d[r+(l+4)>>0];b[e+18>>1]=g;if(g>>>0>(((n+-8|0)>>>0)/6|0)>>>0){c[u>>2]=54579;c[u+4>>2]=10788;Zc(11,13600,u);f=11;break}n=(g<<1)+f|0;m=q+-4|0;g=d[r+(l+1)>>0]<<8|d[r+(l+2)>>0];f=(((k&255)<<8|h&255)+65535&65535)+1+(d[r+(l+7)>>0]|0)|0;do if(g){while(1){if((g|0)<(n|0)|(g|0)>(m|0)){t=8;break}h=d[r+g>>0]<<8|d[r+(g+1)>>0];k=d[r+(g+2)>>0]<<8|d[r+(g+3)>>0];g=k+g|0;if(!h){o=k;p=g;s=f;t=12;break}if((h|0)<=(g+3|0)|(g|0)>(q|0))break;g=h;f=k+f|0}if((t|0)==8){c[u>>2]=54634;c[u+4>>2]=10788;Zc(11,13600,u);f=11;break a}if((t|0)==12?(p|0)<=(q|0):0){f=o+s|0;break}c[u>>2]=54641;c[u+4>>2]=10788;Zc(11,13600,u);f=11;break a}while(0);if((f|0)>(q|0)){c[u>>2]=54655;c[u+4>>2]=10788;Zc(11,13600,u);f=11;break}else{b[e+16>>1]=f-n;a[e>>0]=1;f=0;break}}else f=0;while(0);i=v;return f|0}function Yp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;f=c[b>>2]|0;g=f+65|0;if(!(a[g>>0]|0)){if((c[f+24>>2]&65536|0)==0?(h=b+4|0,m=c[h>>2]|0,c[k>>2]=(d|0)==0?13552:d,$g(m,f,13560,k),(e|0)!=0):0){d=c[c[h>>2]>>2]|0;c[k>>2]=d;c[k+4>>2]=e;f=Iq(f,d,0,k)|0;c[c[h>>2]>>2]=f}if(!(a[g>>0]|0)){c[k>>2]=105209;c[k+4>>2]=10788;Zc(11,13600,k);f=11}else f=7}else f=7;c[b+12>>2]=f;i=l;return}function Zp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;m=a+20|0;a:do if((c[m>>2]|0)>0){h=a+16|0;k=(d|0)==0;l=0;a=0;do{f=(l|0)<2^l;g=c[h>>2]|0;e=c[g+(f<<4)+12>>2]|0;if(!(!k?($c(d,c[g+(f<<4)>>2]|0)|0)!=0:0)){a=Zm(e+24|0,b,n)|0;if(a){a=c[a+8>>2]|0;if(a)break a}else a=0}l=l+1|0}while((l|0)<(c[m>>2]|0))}else a=0;while(0);i=o;return a|0}function _p(d){d=d|0;var f=0,g=0,h=0,i=0;i=c[d+8>>2]|0;h=d+46|0;g=b[h>>1]|0;g=(g&65535)>5?5:g&65535;f=b[(c[d+12>>2]|0)+28>>1]|0;b[i>>1]=f<<16>>16<33?33:f;gw(i+2|0,13512,g<<1|0)|0;f=e[h>>1]|0;if(g>>>0>>0)do{g=g+1|0;b[i+(g<<1)>>1]=23;f=e[h>>1]|0}while((g|0)<(f|0));if(a[d+50>>0]|0)b[i+(f<<1)>>1]=0;return}function $p(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+64|0;if((i|0)>=(j|0))ba();n=p;a:do if((((g|0)!=0?(l=c[g>>2]|0,(l|0)!=0):0)?(o=g+8|0,(c[o>>2]|0)!=0):0)?(k=d+4|0,q=Wh(c[d>>2]|0,l,c[k>>2]|0)|0,(q|0)!=0):0){h=c[g+4>>2]|0;b:do if(!h)m=11;else{if(!($c(c[g>>2]|0,h)|0)){k=c[q+8>>2]|0;if(!k){m=11;break}while(1){l=a[k+51>>0]|0;if((l&3)==2)break;k=c[k+20>>2]|0;if(!k){m=11;break b}}h=c[o>>2]|0;f=k}else{f=Zp(c[d>>2]|0,h,c[k>>2]|0)|0;k=c[o>>2]|0;if(!f)break;l=a[f+51>>0]|0;h=k}o=(e[f+46>>1]|0)+1|0;a[f+51>>0]=l&-5;k=f+8|0;Jq(h,o,c[k>>2]|0,f);if(c[f+36>>2]|0)break a;b[q+28>>1]=b[c[k>>2]>>1]|0;break a}while(0);if((m|0)==11)k=c[o>>2]|0;o=q+42|0;m=n+44|0;b[m>>1]=b[o>>1]|0;Jq(k,1,q+28|0,n);b[o>>1]=b[m>>1]|0}while(0);i=p;return 0}function aq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;do if(e){if((c[b+12>>2]|0)>>>0>>0){c[k>>2]=e;bn(b,44408,k);f=1;break}g=(c[b+8>>2]|0)+(e>>>3)|0;h=d[g>>0]|0;f=1<<(e&7);if(!(h&f)){a[g>>0]=h|f;f=0;break}else{c[k>>2]=e;bn(b,44432,k);f=1;break}}else f=1;while(0);i=l;return f|0}function bq(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;do if(d){if((b|0)==1){b=d+8|0;c[a>>2]=c[b>>2];c[b>>2]=0;c[d+12>>2]=0;break}b=b+-1|0;d=bq(a,b)|0;e=c[a>>2]|0;if(e){c[e+12>>2]=d;d=e+8|0;c[a>>2]=c[d>>2];c[d>>2]=bq(a,b)|0;return e|0}}else d=0;while(0);return d|0}function cq(b,d){b=b|0;d=d|0;var e=0;if((a[b+43>>0]|0)==2){e=b+24|0;if((c[e>>2]|0)>0){d=b+32|0;b=0;do{Sc(c[(c[d>>2]|0)+(b<<2)>>2]|0);c[(c[d>>2]|0)+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(c[e>>2]|0))}}else{b=c[b+4>>2]|0;nc[c[(c[b>>2]|0)+64>>2]&127](b,d)|0}return}function dq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();b=Jg(b)|0;if(b)$g(c,a,Oe(a)|0,d);i=d;return b|0}function eq(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;f=c[a>>2]|0;g=a+16|0;h=a+84|0;_g(c[g>>2]|0,(e[h>>1]|0)<<1);ig(f,c[g>>2]|0);b[h>>1]=d;h=d*80|0;f=ih(f,h,0)|0;if(f){bw(f|0,0,h|0)|0;c[g>>2]=f;if((d|0)>0){h=c[a>>2]|0;g=d<<1;while(1){g=g+-1|0;b[f+8>>1]=1;c[f+32>>2]=h;if((g|0)<=0)break;else f=f+40|0}}}else c[g>>2]=0;return}function fq(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;if(!(a[(c[b>>2]|0)+65>>0]|0)){d=(_(e[b+84>>1]|0,f)|0)+d|0;Tg((c[b+16>>2]|0)+(d*40|0)|0,g,-1,1,h)|0}return}function gq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;k=c[d>>2]|0;h=k+1|0;c[d>>2]=h;if((k|0)>98){f=d+8|0;h=c[f>>2]|0;c[d>>2]=k;do Ln(d);while((c[d>>2]|0)>-1);ph(h,37160,l);c[f>>2]=h}else{b[d+(h<<4)+12>>1]=e;a[d+(h<<4)+14>>0]=f;f=d+(h<<4)+16|0;c[f+0>>2]=c[g+0>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2]}i=m;return}function hq(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+8>>2]|0;switch(b&255|0){case 207:case 196:case 195:case 163:{Ik(c[a>>2]|0,c[d>>2]|0,1);break}case 223:case 219:case 217:{Dk(c[a>>2]|0,c[d>>2]|0);break}case 243:case 238:case 229:case 227:case 216:case 204:case 202:{Ck(c[a>>2]|0,c[d>>2]|0);break}case 175:case 174:{Ck(c[a>>2]|0,c[d>>2]|0);break}case 236:{Dk(c[a>>2]|0,c[d+4>>2]|0);break}case 213:case 212:case 201:case 194:{zo(c[a>>2]|0,c[d>>2]|0);break}case 228:case 221:case 220:case 210:case 209:case 208:case 205:case 203:case 200:case 188:case 179:{Jk(c[a>>2]|0,c[d>>2]|0);break}case 252:case 197:{Mn(c[a>>2]|0,c[d>>2]|0);break}case 239:case 234:{Bk(c[a>>2]|0,c[d>>2]|0);break}default:{}}return} -function yl(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();n=q;p=b+16|0;if((d[p>>0]|0)<2?(d[b+17>>0]|0)<2:0)g=0;else{_o(b);o=b+64|0;l=c[o>>2]|0;h=c[l>>2]|0;do if(!h)h=0;else{if((h|0)==14696){Ci(l,0,0)|0;c[l>>2]=0;h=0;break}k=a[b+5>>0]|0;if(k<<24>>24==3){k=b+72|0;n=k;if(!((c[n>>2]|0)==0&(c[n+4>>2]|0)==0)){h=Yb[c[h+16>>2]&63](l,0,0)|0;if(!h)if(!(a[b+8>>0]|0))h=0;else{h=c[o>>2]|0;h=nc[c[(c[h>>2]|0)+20>>2]&127](h,d[b+11>>0]|0)|0}}else h=0;o=k;c[o>>2]=0;c[o+4>>2]=0;break}else if(k<<24>>24!=1?(a[b+4>>0]|0)==0|k<<24>>24==5:0){o=(a[b+12>>0]|0)==0;hc[c[h+4>>2]&127](l)|0;c[l>>2]=0;if(!o){h=0;break}h=c[b>>2]|0;h=Yb[c[h+28>>2]&63](h,c[b+172>>2]|0,0)|0;break}m=b+72|0;k=m;if(!((c[k>>2]|0)==0&(c[k+4>>2]|0)==0)){g=b+160|0;k=c[g>>2]|0;g=c[g+4>>2]|0;if((e|0)!=0|(k|0)==0&(g|0)==0)h=Yb[c[h+16>>2]&63](l,0,0)|0;else h=pc[c[h+12>>2]&31](l,14664,28,0,0)|0;if(!h){if(!(a[b+7>>0]|0)){h=c[o>>2]|0;h=nc[c[(c[h>>2]|0)+20>>2]&127](h,d[b+11>>0]|16)|0}else h=0;if((h|0)==0&((g|0)>0|(g|0)==0&k>>>0>0)){h=c[o>>2]|0;h=nc[c[(c[h>>2]|0)+24>>2]&127](h,n)|0;l=c[n+4>>2]|0;if((h|0)==0&((l|0)>(g|0)|((l|0)==(g|0)?(c[n>>2]|0)>>>0>k>>>0:0))){h=c[o>>2]|0;h=Yb[c[(c[h>>2]|0)+16>>2]&63](h,k,g)|0}}}}else h=0;o=m;c[o>>2]=0;c[o+4>>2]=0}while(0);k=b+56|0;ai(c[k>>2]|0);c[k>>2]=0;c[b+44>>2]=0;k=b+204|0;g=c[k>>2]|0;e=c[g>>2]|0;if(e){do{tl(e);e=c[g>>2]|0}while((e|0)!=0);g=c[k>>2]|0}k=b+24|0;$o(g,c[k>>2]|0);l=b+208|0;g=c[l>>2]|0;if(!g){if((h|0)==0&(f|0)!=0){g=c[k>>2]|0;if((c[b+32>>2]|0)>>>0>g>>>0)h=xl(b,g)|0;else h=0}}else{e=g+44|0;if(a[e>>0]|0){if(!(a[g+43>>0]|0)){o=c[g+4>>2]|0;lc[c[(c[o>>2]|0)+56>>2]&31](o,0,1,9)|0}a[e>>0]=0;a[g+47>>0]=0}}if((h|0)==0&(f|0)!=0){g=c[b+60>>2]|0;h=c[g>>2]|0;if(!h)k=0;else{k=Yb[c[h+40>>2]&63](g,22,0)|0;k=(k|0)==12?0:k}}else k=h;do if(!(a[b+4>>0]|0)){g=c[l>>2]|0;if((g|0)!=0?(ap(g,0)|0)==0:0){g=0;break}h=c[b+60>>2]|0;g=c[h>>2]|0;if(g){if(!(a[b+13>>0]|0))g=nc[c[g+32>>2]&127](h,1)|0;else g=0;h=b+17|0;if((a[h>>0]|0)!=5)a[h>>0]=1}else g=0;a[b+18>>0]=0}else g=0;while(0);a[p>>0]=1;a[b+19>>0]=0;g=(k|0)==0?g:k}i=q;return g|0}function zl(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[d+4>>2]|0;g=c[d>>2]|0;a[j+19>>0]=0;k=d+8|0;do if(a[k>>0]|0){if((c[g+152>>2]|0)>1){g=j+76|0;if((c[g>>2]|0)==(d|0)?(c[g>>2]=0,f=j+22|0,b[f>>1]=e[f>>1]&65439,f=c[j+72>>2]|0,(f|0)!=0):0)do{a[f+8>>0]=1;f=c[f+12>>2]|0}while((f|0)!=0);a[k>>0]=1;break}g=j+72|0;f=c[g>>2]|0;a:do if(f)do while(1){h=f+12|0;i=c[h>>2]|0;if((c[f>>2]|0)!=(d|0)){g=h;f=i;break}c[g>>2]=i;if((c[f+4>>2]|0)==1)f=i;else{Sc(f);f=c[g>>2]|0}if(!f)break a}while((f|0)!=0);while(0);f=j+76|0;if((c[f>>2]|0)!=(d|0)){f=c[j+40>>2]|0;if((f|0)==2){i=j+22|0;b[i>>1]=e[i>>1]&65471;c[j+40>>2]=1;i=20;break}}else{c[f>>2]=0;f=j+22|0;b[f>>1]=e[f>>1]&65439;f=c[j+40>>2]|0}f=f+-1|0;c[j+40>>2]=f;if(!f){a[j+20>>0]=0;i=20}else i=20}else i=20;while(0);if(((i|0)==20?(a[k>>0]=0,(a[j+20>>0]|0)==0):0)?(l=j+12|0,m=c[l>>2]|0,(m|0)!=0):0){c[l>>2]=0;xg(c[m+68>>2]|0)}return}function Al(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=((c[a+36>>2]|0)>>>0)/5|0;if(b>>>0<2){e=0;g=c[a+32>>2]|0;i=c[2514]|0}else{e=b+-2|0;e=e-((e>>>0)%((h+1|0)>>>0)|0)|0;i=c[2514]|0;g=c[a+32>>2]|0;e=((e+1|0)==((i>>>0)/(g>>>0)|0|0)?3:2)+e|0}e=b-d-(((d-b+h+e|0)>>>0)/(h>>>0)|0)|0;f=a+32|0;a=((i>>>0)/(g>>>0)|0)+1|0;d=((i>>>0)/(g>>>0)|0)+1|0;a=((a>>>0>>0&e>>>0>>0)<<31>>31)+e|0;while(1){if(a>>>0<2)e=0;else{e=a+-2|0;e=e-((e>>>0)%((h+1|0)>>>0)|0)|0;e=((e+1|0)==((i>>>0)/((c[f>>2]|0)>>>0)|0|0)?3:2)+e|0}if(!((e|0)==(a|0)|(a|0)==(d|0)))break;a=a+-1|0}return a|0}function Bl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=(d|0)==0;f=b;a:while(1){do if((f|0)!=(e|0)){if(!g?(c[f+60>>2]|0)!=(d|0):0)break;if(((a[f+73>>0]|0)+-1&255)<2){b=bp(f)|0;if(!b)break;else break a}else{cp(f);break}}while(0);f=c[f+8>>2]|0;if(!f){b=0;break}}return b|0}function Cl(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;v=i;i=i+48|0;if((i|0)>=(j|0))ba();k=v;m=v+32|0;s=v+28|0;l=v+24|0;o=v+20|0;q=v+16|0;t=v+12|0;r=v+8|0;if(f>>>0<2)n=0;else{n=f+-2|0;n=n-((n>>>0)%(((((c[b+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;n=((n+1|0)==(((c[2514]|0)>>>0)/((c[b+32>>2]|0)>>>0)|0|0)?3:2)+n|0}do if((n|0)!=(f|0)?((((c[2514]|0)>>>0)/((c[b+32>>2]|0)>>>0)|0)+1|0)!=(f|0):0){p=c[(c[b+12>>2]|0)+56>>2]|0;if((d[p+37>>0]|0)<<16|(d[p+36>>0]|0)<<24|(d[p+38>>0]|0)<<8|(d[p+39>>0]|0)){h=dp(b,f,m,s)|0;if(!h){p=a[m>>0]|0;if(p<<24>>24==2){if(g){h=0;break}h=ep(b,o,l,f,1)|0;if(h)break;k=c[o>>2]|0;if(!k){u=24;break}xg(c[k+68>>2]|0);u=24;break}else if(p<<24>>24!=1){h=$k(b,f,t,0)|0;if(h)break;k=(g|0)==0;m=k?2:0;k=k?e:0;l=(g|0)!=0;do{h=ep(b,r,q,k,m)|0;if(h){u=16;break}n=c[r>>2]|0;if(n)xg(c[n+68>>2]|0);n=c[q>>2]|0}while(l&n>>>0>e>>>0);if((u|0)==16){k=c[t>>2]|0;if(!k)break;xg(c[k+68>>2]|0);break}m=c[t>>2]|0;h=Vm(b,m,p,c[s>>2]|0,n,g)|0;if(m)xg(c[m+68>>2]|0);if(!h){u=24;break}else break}else{c[k>>2]=56228;c[k+4>>2]=10788;Zc(11,13600,k);h=11;break}}}else h=101}else u=24;while(0);if((u|0)==24)if(!g){l=((c[2514]|0)>>>0)/((c[b+32>>2]|0)>>>0)|0;m=l+1|0;n=b+36|0;k=f;while(1){h=k+-1|0;if((h|0)==(m|0)){k=h;continue}if(h>>>0<2)k=0;else{k=k+-3|0;k=k-((k>>>0)%(((((c[n>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(l|0)?3:2)+k|0}if((k|0)==(h|0))k=h;else break}a[b+19>>0]=1;c[b+44>>2]=h;h=0}else h=0;i=v;return h|0}function Dl(b){b=b|0;var e=0,f=0,g=0;g=b+16|0;f=a[g>>0]|0;a:do if(f<<24>>24!=6)if((f&255)>=2){do if(!(c[b+208>>2]|0)){if(!(f<<24>>24==2?1:(c[c[b+64>>2]>>2]|0)==0)){e=Go(b,0)|0;break}e=yl(b,0,0)|0;if((a[b+15>>0]|0)==0&(f&255)>2){c[b+40>>2]=4;a[g>>0]=6;break a}}else{e=fp(b,2,-1)|0;f=yl(b,d[b+19>>0]|0,0)|0;e=(e|0)==0?f:e}while(0);f=e&255;if((f|0)==10|(f|0)==13){c[b+40>>2]=e;a[g>>0]=6}}else e=0;else e=c[b+40>>2]|0;while(0);return e|0}function El(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;a:do if((d|0)!=0?(h=c[d+4>>2]|0,c[h+4>>2]=c[d>>2],h=c[h+8>>2]|0,(h|0)!=0):0){l=(f|0)==0;while(1){if(!l?(a[h+72>>0]&1)==0:0){if(((a[h+73>>0]|0)+-1&255)<2?(g=bp(h)|0,(g|0)!=0):0)break}else{f=h+56|0;Sc(c[f>>2]|0);c[f>>2]=0;a[h+73>>0]=4;c[h+68>>2]=e}f=h+76|0;if((b[f>>1]|0)>=0){k=0;while(1){i=h+(k<<2)+120|0;j=c[i>>2]|0;if(j)xg(c[j+68>>2]|0);c[i>>2]=0;if((k|0)<(b[f>>1]|0))k=k+1|0;else break}}h=c[h+8>>2]|0;if(!h)break a}El(d,g,0)|0;return g|0}while(0);return 0}function Fl(a){a=a|0;var b=0,d=0,e=0;a:do if(!(c[a+4>>2]|0)){d=c[a+20>>2]|0;if((d|0)>0){a=c[a+16>>2]|0;b=0;while(1){e=c[a+(b<<4)+4>>2]|0;if((e|0)!=0?(c[e+16>>2]|0)!=0:0){a=1;break a}b=b+1|0;if((b|0)>=(d|0)){a=0;break}}}else a=0}else a=1;while(0);return a|0}function Gl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[3164]|0;if(f)jc[f&3]();l=d+20|0;j=c[l>>2]|0;i=(j|0)>0;if(i){f=c[d+16>>2]|0;h=0;do{g=c[f+(h<<4)+4>>2]|0;if(g)c[(c[g+4>>2]|0)+4>>2]=c[g>>2];h=h+1|0}while((h|0)!=(j|0))}m=d+24|0;if(!(c[m>>2]&2))f=1;else f=(a[d+145>>0]|0)!=0;if(i){k=d+16|0;f=f&1;i=j;j=0;h=0;while(1){g=c[(c[k>>2]|0)+(j<<4)+4>>2]|0;if(!g)g=i;else{h=(a[g+8>>0]|0)==2?1:h;Hg(g,e,f);g=c[l>>2]|0}j=j+1|0;if((j|0)>=(g|0))break;else i=g}}else h=0;Nn(d,68);f=c[3166]|0;if(f)jc[f&3]();f=c[m>>2]|0;if((f&2|0)!=0?(a[d+145>>0]|0)==0:0){f=c[d+4>>2]|0;if(f)do{g=f+88|0;b[g>>1]=b[g>>1]|8;f=c[f+52>>2]|0}while((f|0)!=0);Ag(d);f=c[m>>2]|0}g=d+504|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[m>>2]=f&-16777217;f=c[d+204>>2]|0;do if(f){if((h|0)==0?(a[d+63>>0]|0)!=0:0)break;_b[f&31](c[d+200>>2]|0)}while(0);return}function Hl(b){b=b|0;var d=0,e=0;e=b+488|0;d=c[e>>2]|0;if(d)do{c[e>>2]=c[d+24>>2];ig(b,d);d=c[e>>2]|0}while((d|0)!=0);c[b+496>>2]=0;c[b+500>>2]=0;a[b+70>>0]=0;return}function Il(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=c[b+4>>2]|0;c[h+4>>2]=c[b>>2];e=c[h+8>>2]|0;if(e)do{d=e;e=c[e+8>>2]|0;if((c[d>>2]|0)==(b|0))gp(d)}while((e|0)!=0);Hg(b,0,0);a:do if(a[b+9>>0]|0){e=h+64|0;d=c[e>>2]|0;c[e>>2]=d+-1;if((d|0)<2){d=c[3664]|0;if((d|0)==(h|0)){c[3664]=c[h+68>>2];f=12;break}else e=d;do{if(!e){f=12;break a}d=e+68|0;e=c[d>>2]|0}while((e|0)!=(h|0));c[d>>2]=c[h+68>>2];f=12}}else f=12;while(0);if((f|0)==12){hp(c[h>>2]|0);d=c[h+52>>2]|0;e=h+48|0;if((d|0)!=0?(g=c[e>>2]|0,(g|0)!=0):0)_b[d&31](g);d=c[e>>2]|0;if(d)Sc(d);d=h+80|0;e=c[d>>2]|0;if(e){e=e+-4|0;c[d>>2]=e;Xk(e);c[d>>2]=0}Sc(h)}e=c[b+28>>2]|0;d=b+24|0;if(e)c[e+24>>2]=c[d>>2];d=c[d>>2]|0;if(d)c[d+28>>2]=e;Sc(b);return}function Jl(a,b){a=a|0;b=b|0;var d=0;b=c[b+32>>2]|0;if((b|0)!=0?(d=(c[b>>2]|0)+-1|0,c[b>>2]=d,(d|0)==0):0){_b[c[b+4>>2]&31](c[b+8>>2]|0);ig(a,b)}return}function Kl(a){a=a|0;var b=0,d=0;d=a+8|0;b=c[d>>2]|0;c[d>>2]=0;d=a+12|0;Sc(c[d>>2]|0);c[d>>2]=0;c[a>>2]=0;if(b)do{d=b;b=c[b>>2]|0;Sc(d)}while((b|0)!=0);c[a+4>>2]=0;return}function Ll(a){a=a|0;var b=0,d=0,e=0,f=0;if(a){e=c[a>>2]|0;hg(e,a);f=c[a+48>>2]|0;d=a+52|0;b=c[d>>2]|0;if(!f)c[e+4>>2]=b;else{c[f+52>>2]=b;b=c[d>>2]|0}if(b)c[b+48>>2]=f;c[a+40>>2]=-1241070648;c[a>>2]=0;ig(e,a)}return}function Ml(d){d=d|0;var e=0;a[d+65>>0]=0;c[d+52>>2]=7;d=c[d+236>>2]|0;do if(d){e=d+8|0;if(!(b[e>>1]&9312)){b[e>>1]=1;break}else{rg(d);break}}while(0);return}function Nl(d){d=d|0;var f=0,g=0,h=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,D=0,E=0,F=0;F=i;i=i+32|0;if((i|0)>=(j|0))ba();u=F;x=F+16|0;q=F+12|0;r=F+8|0;E=c[d>>2]|0;if(a[E+65>>0]|0)c[d+80>>2]=7;g=c[d+200>>2]|0;if(g)bw(g|0,0,c[d+196>>2]|0)|0;k=d+176|0;g=c[k>>2]|0;if(g){while(1){h=c[g+4>>2]|0;if(!h)break;else g=h}Tl(g)|0;c[k>>2]=0;c[d+184>>2]=0}o=d+56|0;g=c[o>>2]|0;a:do if((g|0)!=0?(p=d+36|0,f=c[p>>2]|0,(f|0)>0):0){k=0;while(1){h=c[g+(k<<2)>>2]|0;if(!h)h=f;else{xm(d,h);c[(c[o>>2]|0)+(k<<2)>>2]=0;h=c[p>>2]|0}k=k+1|0;if((k|0)>=(h|0))break a;g=c[o>>2]|0;f=h}}while(0);g=c[d+8>>2]|0;if(g)_g(g+40|0,c[d+28>>2]|0);p=d+180|0;g=c[p>>2]|0;if(g)do{c[p>>2]=c[g+4>>2];o=g+80|0;f=g+60|0;h=c[f>>2]|0;m=o+(h*40|0)|0;n=g+64|0;if((c[n>>2]|0)>0){k=0;do{xm(c[g>>2]|0,c[m+(k<<2)>>2]|0);k=k+1|0}while((k|0)<(c[n>>2]|0));h=c[f>>2]|0}_g(o,h);ig(c[c[g>>2]>>2]|0,g);g=c[p>>2]|0}while((g|0)!=0);if(c[d+204>>2]|0)am(d,-1,0);B=d+40|0;b:do if((c[B>>2]|0)==-1108210269){z=d+76|0;if((c[z>>2]|0)>-1){A=d+88|0;n=b[A>>1]|0;if(n&128){y=d+80|0;k=c[y>>2]|0;m=k&255;h=m+-7|0;do if(h>>>0<7?(l=(77>>>(h&127)&1)!=0,l):0)if((n&64)==0|(m|0)!=9){if((m|0)==7|(m|0)==13?(n&32)!=0:0){f=2;break}Gl(E,516);Hl(E);a[E+63>>0]=1;c[d+92>>2]=0;k=c[y>>2]|0;f=0}else{l=1;f=0}else{l=0;f=0}while(0);if((k|0)==0?(w=d+144|0,v=c[w+4>>2]|0,(v|0)>0|(v|0)==0&(c[w>>2]|0)>>>0>0):0){w=c[d>>2]|0;c[y>>2]=787;a[d+86>>0]=2;$g(d+44|0,w,34376,u)}m=E+304|0;if((c[m>>2]|0)>0?(c[E+328>>2]|0)==0:0)D=141;else if((a[E+63>>0]|0)!=0?(c[E+156>>2]|0)==(((e[A>>1]|0)>>>6&1^1)&65535|0):0){do if(!(c[y>>2]|0))D=41;else{if(!((a[d+86>>0]|0)!=3|l)){D=41;break}Gl(E,0);c[d+92>>2]=0}while(0);c:do if((D|0)==41){d:do if(pm(d,1)|0)if(!(b[A>>1]&64))g=787;else{f=1;break b}else{l=E+328|0;h=c[l>>2]|0;c[l>>2]=0;k=c[m>>2]|0;e:do if((k|0)>0){n=0;f:while(1){p=c[(c[h+(n<<2)>>2]|0)+8>>2]|0;do if(p){o=c[(c[p>>2]|0)+60>>2]|0;if(!o)break;g=hc[o&127](p)|0;Im(d,p);if(g)break f;k=c[m>>2]|0}while(0);n=n+1|0;if((n|0)>=(k|0)){D=50;break e}}c[l>>2]=h;D=135}else D=50;while(0);g:do if((D|0)==50){c[l>>2]=h;v=E+20|0;w=E+16|0;o=0;k=0;n=0;h:while(1){m=c[v>>2]|0;if((o|0)>=(m|0)){h=k;break}l=c[w>>2]|0;p=o;while(1){o=c[l+(p<<4)+4>>2]|0;if((o|0)!=0?(a[o+8>>0]|0)==2:0)break;p=p+1|0;if((p|0)>=(m|0)){h=k;break h}}g=c[o+4>>2]|0;c[g+4>>2]=c[o>>2];g=Zo(c[g>>2]|0)|0;if(!g){o=p+1|0;k=((p|0)!=1&1)+k|0;n=1}else{D=135;break g}}do if(n){l=c[E+196>>2]|0;if(!l)break;if(hc[l&127](c[E+192>>2]|0)|0){g=531;break d}}while(0);k=c[(c[w>>2]|0)+4>>2]|0;n=c[c[k+4>>2]>>2]|0;m=(a[n+15>>0]|0)==0;if(m){p=c[n+168>>2]|0;if(p)D=62}else{p=10360;D=62}do if((D|0)==62){o=p;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;if((o-p&1073741823|0)==0|(h|0)<2)break;t=c[E>>2]|0;if(m){l=c[n+168>>2]|0;c[x>>2]=0;if(!l){p=0;l=0}else D=80}else{c[x>>2]=0;l=10360;D=80}if((D|0)==80){n=l;while(1)if(!(a[n>>0]|0))break;else n=n+1|0;p=n-l&1073741823}c[u>>2]=l;s=qh(E,44696,u)|0;if(!s){g=7;break d}p=s+p|0;o=t+32|0;n=0;i:while(1){do if(n){if((n|0)>100){D=87;break i}if((n|0)!=1)break;c[u>>2]=s;Zc(13,44728,u)}while(0);_c(4,r);g=c[r>>2]|0;c[u>>2]=g>>>8;c[u+4>>2]=g&255;Yc(13,p,44744,u)|0;g=lc[c[o>>2]&31](t,s,0,q)|0;m=(g|0)==0;if(m&(c[q>>2]|0)!=0)n=n+1|0;else{D=91;break}}if((D|0)==87){c[u>>2]=s;Zc(13,44712,u);Yb[c[t+28>>2]&63](t,s,0)|0;D=92}else if((D|0)==91)if(m)D=92;do if((D|0)==92){g=ip(t,s,x,16406,0)|0;if(g)break;l=c[v>>2]|0;j:do if((l|0)>0){q=0;o=0;r=0;n=0;k:while(1){p=c[(c[w>>2]|0)+(r<<4)+4>>2]|0;do if(!p)p=q;else{if((a[p+8>>0]|0)!=2){p=q;break}m=c[p+4>>2]|0;k=c[m>>2]|0;h=c[k+172>>2]|0;if(!h){p=q;break}if(!n){c[m+4>>2]=c[p>>2];n=(a[k+7>>0]|0)==0&1}k=c[x>>2]|0;p=h;while(1)if(!(a[p>>0]|0))break;else p=p+1|0;m=h;g=pc[c[(c[k>>2]|0)+12>>2]&31](k,h,(p-m&1073741823)+1|0,q,o)|0;p=h;while(1)if(!(a[p>>0]|0))break;else p=p+1|0;if(g){l=k;D=106;break k}p=fw((p-m&1073741823)+1|0,0,q|0,o|0)|0;l=c[v>>2]|0;o=C}while(0);r=r+1|0;if((r|0)>=(l|0))break;else q=p}if((D|0)==106){h=c[l>>2]|0;if(h){hc[c[h+4>>2]&127](k)|0;c[l>>2]=0}Sc(k);Yb[c[t+28>>2]&63](t,s,0)|0;ig(E,s);D=135;break g}do if(!n)n=0;else{m=c[x>>2]|0;if((hc[c[(c[m>>2]|0)+48>>2]&127](m)|0)&1024)break;g=nc[c[(c[m>>2]|0)+20>>2]&127](m,2)|0;if(!g)break;h=c[m>>2]|0;if(h){hc[c[h+4>>2]&127](m)|0;c[m>>2]=0}Sc(m);Yb[c[t+28>>2]&63](t,s,0)|0;ig(E,s);D=135;break g}while(0);k=c[v>>2]|0;if((k|0)>0)p=0;else{p=1;g=0;break}while(1){m=c[(c[w>>2]|0)+(p<<4)+4>>2]|0;if(m){g=Gg(m,s)|0;if(g){p=0;break j}k=c[v>>2]|0}p=p+1|0;if((p|0)>=(k|0)){p=1;g=0;break}}}else{p=1;n=0;g=0}while(0);m=c[x>>2]|0;l=c[m>>2]|0;if(l){hc[c[l+4>>2]&127](m)|0;c[m>>2]=0}Sc(m);if(!p){ig(E,s);D=135;break g}g=Yb[c[t+28>>2]&63](t,s,n)|0;ig(E,s);if(g){D=135;break g}g=c[3164]|0;if(g)jc[g&3]();g=c[v>>2]|0;if((g|0)>0){k=0;do{h=c[(c[w>>2]|0)+(k<<4)+4>>2]|0;if(h){Fg(h,1)|0;g=c[v>>2]|0}k=k+1|0}while((k|0)<(g|0))}g=c[3166]|0;if(g)jc[g&3]();Nn(E,64);break g}while(0);ig(E,s);D=135;break g}while(0);g=c[v>>2]|0;do if((g|0)>0){h=1;while(1){if(k){g=Gg(k,0)|0;if(g){D=135;break g}g=c[v>>2]|0}if((h|0)>=(g|0))break;k=c[(c[w>>2]|0)+(h<<4)+4>>2]|0;h=h+1|0}if((g|0)>0)k=0;else break;do{h=c[(c[w>>2]|0)+(k<<4)+4>>2]|0;if(h){g=Fg(h,0)|0;if(g){D=135;break g}g=c[v>>2]|0}k=k+1|0}while((k|0)<(g|0))}while(0);Nn(E,64)}while(0);do if((D|0)==135){if(!g)break;else if((g|0)!=5)break d;if(!(b[A>>1]&64)){g=5;break d}else{f=5;break b}}while(0);x=E+504|0;D=E+24|0;c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[D>>2]=c[D>>2]&-16777219;break c}while(0);c[y>>2]=g;Gl(E,0);c[d+92>>2]=0}while(0);c[E+500>>2]=0;D=146}else D=141;do if((D|0)==141)if(!f)if(c[y>>2]|0){g=a[d+86>>0]|0;if(g<<24>>24==2){f=2;D=147;break}else if(g<<24>>24==3){f=1;D=147;break}else{Gl(E,516);Hl(E);a[E+63>>0]=1;c[d+92>>2]=0;D=146;break}}else{f=1;D=147}else D=147;while(0);if((D|0)==146)if(!f)f=0;else D=147;if((D|0)==147){g=Xl(d,f)|0;if(g){D=c[y>>2]|0;if((D|0)==0|(D&255|0)==19){c[y>>2]=g;D=d+44|0;ig(E,c[D>>2]|0);c[D>>2]=0}Gl(E,516);Hl(E);a[E+63>>0]=1;c[d+92>>2]=0}}if(b[A>>1]&4){if((f|0)==2){c[E+80>>2]=0;f=d+92|0}else{f=d+92|0;y=c[f>>2]|0;c[E+80>>2]=y;D=E+84|0;c[D>>2]=(c[D>>2]|0)+y}c[f>>2]=0}}if((c[z>>2]|0)>-1){f=E+148|0;c[f>>2]=(c[f>>2]|0)+-1;f=b[A>>1]|0;if(!(f&64)){f=E+156|0;c[f>>2]=(c[f>>2]|0)+-1;f=b[A>>1]|0}if(f&128){D=E+152|0;c[D>>2]=(c[D>>2]|0)+-1}}}c[B>>2]=1369188723;f=d+80|0;if(!(a[(c[d>>2]|0)+65>>0]|0)){f=(c[f>>2]|0)==5?5:0;break}else{c[f>>2]=7;f=0;break}}else f=0;while(0);i=F;return f|0}function Ol(a,f){a=a|0;f=f|0;var g=0,h=0,i=0,j=0;i=a+8|0;h=e[i>>1]|0;do if(h&18){b[i>>1]=h|2;if(h&16384)Ng(a)|0;g=a+10|0;f=f&255;h=f&247;if((d[g>>0]|0|0)!=(h|0))Ul(a,h)|0;if(((f&8|0)!=0?(c[a+16>>2]&1|0)!=0:0)?(Rl(a)|0)!=0:0){g=0;break}if((b[i>>1]&514)==2){Yl(a)|0;j=12}else j=12}else{Zl(a,f,0)|0;h=f&247;g=a+10|0;j=12}while(0);if((j|0)==12)if((d[g>>0]|0|0)==(h|0))g=c[a+16>>2]|0;else g=0;return g|0}function Pl(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,t=0;h[c>>3]=0.0;j=f&255;if(f<<24>>24==1){f=b;g=e;p=1;t=0}else{g=3-j|0;a:do if((g|0)<(e|0))while(1){f=g+2|0;if(a[b+g>>0]|0){e=1;break a}if((f|0)<(e|0))g=f;else{e=0;g=f;break}}else e=0;while(0);f=b+(j&1)|0;g=j+-3+g|0;p=2;t=e}r=b+g|0;b:do if(f>>>0>>0){while(1){g=a[f>>0]|0;if(!(a[10368+(g&255)>>0]&1))break;f=f+p|0;if(f>>>0>=r>>>0){f=0;break b}}if(g<<24>>24==43){f=f+p|0;q=1}else if(g<<24>>24==45){f=f+p|0;q=-1}else q=1;c:do if(f>>>0>>0){g=0;do{if((a[f>>0]|0)!=48)break c;f=f+p|0;g=g+1|0}while(f>>>0>>0)}else g=0;while(0);d:do if(f>>>0>>0){b=0;j=0;while(1){e=a[f>>0]|0;if(!(((e&255)+-48|0)>>>0<10&((b|0)<214748364|(b|0)==214748364&j>>>0<3435973835))){l=b;break d}j=ow(j|0,b|0,10,0)|0;b=(e<<24>>24)+-48|0;j=fw(b|0,((b|0)<0)<<31>>31|0,j|0,C|0)|0;b=C;f=f+p|0;g=g+1|0;if(f>>>0>=r>>>0){l=b;break}}}else{j=0;l=0}while(0);e:do if(f>>>0>>0){e=0;while(1){b=a[f>>0]|0;if(((b&255)+-48|0)>>>0>=10){m=e;break}f=f+p|0;g=g+1|0;b=e+1|0;if(f>>>0>>0)e=b;else{n=l;m=b;b=0;l=1;e=1;break e}}f:do if(b<<24>>24==46){e=f+p|0;g:do if(e>>>0>>0){n=e;while(1){b=a[n>>0]|0;if(!(((b&255)+-48|0)>>>0<10&((l|0)<214748364|(l|0)==214748364&j>>>0<3435973835))){e=n;n=l;break g}j=ow(j|0,l|0,10,0)|0;l=(b<<24>>24)+-48|0;j=fw(l|0,((l|0)<0)<<31>>31|0,j|0,C|0)|0;l=C;g=g+1|0;b=m+-1|0;e=f+(p<<1)|0;if(e>>>0>>0){f=n;n=e;m=b}else{f=n;n=l;m=b;break}}}else n=l;while(0);if(e>>>0>>0){l=p<<1;while(1){if(((d[e>>0]|0)+-48|0)>>>0>=10)break f;b=f+l|0;g=g+1|0;if(b>>>0>>0){f=e;e=b}else{e=b;break}}}}else{e=f;n=l}while(0);if(e>>>0>>0){o=a[e>>0]|0;h:do if(o<<24>>24==69|o<<24>>24==101){f=e+p|0;if(f>>>0>=r>>>0){b=0;l=0;e=1;break e}b=a[f>>0]|0;if(b<<24>>24==45){f=e+(p<<1)|0;o=-1}else if(b<<24>>24==43){f=e+(p<<1)|0;o=1}else o=1;if(f>>>0>>0){e=0;l=0}else{b=0;l=0;e=o;break e}while(1){b=a[f>>0]|0;if(((b&255)+-48|0)>>>0>=10){b=e;e=o;break h}if((e|0)<1e4)b=(e*10|0)+-48+(b<<24>>24)|0;else b=1e4;f=f+p|0;if(f>>>0>>0){e=b;l=1}else{l=1;e=o;break}}}else{f=e;b=0;l=1;e=1}while(0);if((g|0)!=0&(l|0)!=0&f>>>0>>0)do{if(!(a[10368+(d[f>>0]|0)>>0]&1))break e;f=f+p|0}while(f>>>0>>0)}else{f=e;b=0;l=1;e=1}}else{n=l;m=0;b=0;l=1;e=1}while(0);b=(_(b,e)|0)+m|0;o=(b|0)<0;e=o?0-b|0:b;do if((j|0)==0&(n|0)==0)if((q|0)<0)i=(g|0)!=0?-0.0:0.0;else i=0.0;else{if((b>>31|1|0)>0)if(((n|0)<214748364|(n|0)==214748364&j>>>0<3435973836)&(e|0)>0){b=n;do{e=e+-1|0;j=ow(j|0,b|0,10,0)|0;b=C}while(((b|0)<214748364|(b|0)==214748364&j>>>0<3435973836)&(e|0)>0)}else b=n;else{m=nw(j|0,n|0,10,0)|0;if((m|0)==0&(C|0)==0&(e|0)>0){b=n;do{e=e+-1|0;j=mw(j|0,b|0,10,0)|0;b=C;n=nw(j|0,b|0,10,0)|0}while((n|0)==0&(C|0)==0&(e|0)>0)}else b=n}n=(q|0)<0;m=$v(0,0,j|0,b|0)|0;m=n?m:j;n=n?C:b;if(!e){i=+(m>>>0)+4294967296.0*+(n|0);break}if((e+-308|0)>>>0<34){if(!((e|0)%308|0))k=1.0;else{i=1.0;do{i=i*10.0;e=e+-1|0}while(((e|0)%308|0|0)!=0);k=i}i=+(m>>>0)+4294967296.0*+(n|0);if(o){i=i/k/1.e+308;break}else{i=i*k*1.e+308;break}}if((e|0)>341){i=+(m>>>0)+4294967296.0*+(n|0);if(o){i=i*0.0;break}else{i=i*s;break}}if(!((e|0)%22|0)){j=e;i=1.0}else{j=e;i=1.0;do{i=i*10.0;j=j+-1|0}while(((j|0)%22|0|0)!=0)}if((j|0)>0){do{i=i*1.0e22;j=j+-22|0}while((j|0)>0);k=i}else k=i;i=+(m>>>0)+4294967296.0*+(n|0);if(o){i=i/k;break}else{i=i*k;break}}while(0);h[c>>3]=i;f=f>>>0>=r>>>0&(g|0)>0&(l|0)!=0&(t|0)==0&1}else f=0;while(0);return f|0}function Ql(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;i=f&255;if(f<<24>>24==1){g=b;h=e;n=1;e=0}else{h=3-i|0;a:do if((h|0)<(e|0))while(1){f=h+2|0;if(a[b+h>>0]|0){e=1;break a}if((f|0)<(e|0))h=f;else{e=0;h=f;break}}else e=0;while(0);g=b+(i&1)|0;h=i+-3+h|0;n=2}k=b+h|0;b:do if(g>>>0>>0){while(1){h=a[g>>0]|0;if(!(a[10368+(h&255)>>0]&1))break;g=g+n|0;if(g>>>0>=k>>>0){l=0;break b}}if(h<<24>>24==45){g=g+n|0;l=1;break}else if(h<<24>>24==43){g=g+n|0;l=0;break}else{l=0;break}}else l=0;while(0);c:do if(g>>>0>>0){h=g;while(1){if((a[h>>0]|0)!=48){m=h;break c}h=h+n|0;if(h>>>0>=k>>>0){m=h;break}}}else m=g;while(0);do if(m>>>0>>0){b=m;j=0;i=0;h=0;while(1){f=a[b>>0]|0;if((f+-48&255)>=10){b=0;k=i;break}i=ow(j|0,i|0,10,0)|0;j=f<<24>>24;i=fw(i|0,C|0,-48,-1)|0;j=fw(i|0,C|0,j|0,((j|0)<0)<<31>>31|0)|0;i=C;h=h+n|0;b=m+h|0;if(b>>>0>=k>>>0){b=1;k=i;break}}i=f<<24>>24;f=(l|0)!=0;if((k|0)>=0)if(f){f=k;p=22;break}else{f=k;p=23;break}else{j=d;c[j>>2]=f?0:-1;c[j+4>>2]=f?-2147483648:2147483647;j=f?0:2;break}}else if(!l){b=1;j=0;f=0;i=0;h=0;p=23}else{b=1;j=0;f=0;i=0;h=0;p=22}while(0);if((p|0)==22){l=$v(0,0,j|0,f|0)|0;j=d;c[j>>2]=l;c[j+4>>2]=C;j=0}else if((p|0)==23){l=d;c[l>>2]=j;c[l+4>>2]=f;j=2}if(((i|0)==0|b?!((h|0)==0&(g|0)==(m|0)):0)?(o=n*19|0,!((h|0)>(o|0)|(e|0)!=0)):0)if((h|0)>=(o|0)){h=0;do{g=a[m+(_(h,n)|0)>>0]|0;e=a[11192+h>>0]|0;h=h+1|0;f=g<<24>>24==e<<24>>24}while(f&(h|0)<18);if(f)g=(a[m+(n*18|0)>>0]|0)+-56|0;else g=((g<<24>>24)-(e<<24>>24)|0)*10|0;if((g|0)>=0)return ((g|0)>0?1:j)|0;else g=0}else g=0;else g=1;return g|0}function Rl(d){d=d|0;var f=0,g=0;g=d+8|0;f=b[g>>1]|0;if(f&16384){Ng(d)|0;f=b[g>>1]|0}do if(f&18){if((c[d+24>>2]|0)!=0?(c[d+16>>2]|0)==(c[d+20>>2]|0):0){f=0;break}f=d+12|0;if(!(ah(d,(c[f>>2]|0)+2|0,1)|0)){d=d+16|0;a[(c[d>>2]|0)+(c[f>>2]|0)>>0]=0;a[(c[d>>2]|0)+((c[f>>2]|0)+1)>>0]=0;b[g>>1]=e[g>>1]|0|512;f=0}else f=7}else f=0;while(0);return f|0}function Sl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=no(a,b,c,d)|0;if(!c)ig(a,b);return c|0}function Tl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=c[a>>2]|0;c[d+200>>2]=c[a+20>>2];c[d+196>>2]=c[a+56>>2];c[d+4>>2]=c[a+8>>2];c[d+32>>2]=c[a+48>>2];c[d+8>>2]=c[a+16>>2];c[d+28>>2]=c[a+52>>2];c[d+56>>2]=c[a+24>>2];c[d+36>>2]=c[a+40>>2];g=a+32|0;f=c[g+4>>2]|0;b=c[d>>2]|0;e=b+32|0;c[e>>2]=c[g>>2];c[e+4>>2]=f;c[d+92>>2]=c[a+68>>2];c[b+80>>2]=c[a+72>>2];return c[a+44>>2]|0}function Ul(a,c){a=a|0;c=c|0;if((b[a+8>>1]&2)!=0?(d[a+10>>0]|0|0)!=(c|0):0)c=xn(a,c&255)|0;else c=0;return c|0}function Vl(a,d,f){a=a|0;d=d|0;f=f|0;var g=0;g=a+8|0;if(b[g>>1]&9312)rg(a);c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];if(!(b[d+8>>1]&2048))b[g>>1]=(e[g>>1]|0)&58367|f;return}function Wl(a,d){a=a|0;d=d|0;var e=0,f=0;if(!((b[a+8>>1]&9312)==0?(c[a+24>>2]|0)==0:0))Mg(a);a=a+0|0;e=d+0|0;f=a+40|0;do{c[a>>2]=c[e>>2];a=a+4|0;e=e+4|0}while((a|0)<(f|0));b[d+8>>1]=1;c[d+24>>2]=0;return}function Xl(a,b){a=a|0;b=b|0;var 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=c[a>>2]|0;m=p+500|0;f=c[m>>2]|0;do if((f|0)!=0?(n=a+104|0,e=c[n>>2]|0,(e|0)!=0):0){o=e+-1|0;k=p+20|0;e=c[k>>2]|0;if((e|0)>0){i=p+16|0;j=(b|0)==2;g=e;h=0;e=0;do{f=c[(c[i>>2]|0)+(h<<4)+4>>2]|0;if(f){if(j?(l=qm(f,2,o)|0,(l|0)!=0):0)f=l;else f=qm(f,1,o)|0;g=c[k>>2]|0;e=(e|0)==0?f:e}h=h+1|0}while((h|0)<(g|0));c[m>>2]=(c[m>>2]|0)+-1;c[n>>2]=0;if(!e)e=13;else{d=e;e=16}}else{c[m>>2]=f+-1;c[n>>2]=0;e=13}do if((e|0)==13){if((b|0)==2?(d=om(p,2,o)|0,(d|0)!=0):0)break;d=om(p,1,o)|0;e=16}while(0);if((e|0)==16)if((b|0)!=2)break;m=a+152|0;l=c[m+4>>2]|0;k=p+504|0;c[k>>2]=c[m>>2];c[k+4>>2]=l;k=a+160|0;l=c[k+4>>2]|0;m=p+512|0;c[m>>2]=c[k>>2];c[m+4>>2]=l}else d=0;while(0);return d|0}function Yl(d){d=d|0;var f=0,g=0;f=d+12|0;if(!(ah(d,(c[f>>2]|0)+2|0,1)|0)){g=d+16|0;a[(c[g>>2]|0)+(c[f>>2]|0)>>0]=0;a[(c[g>>2]|0)+((c[f>>2]|0)+1)>>0]=0;f=d+8|0;b[f>>1]=e[f>>1]|0|512;f=0}else f=7;return f|0}function Zl(d,f,g){d=d|0;f=f|0;g=g|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();o=q;p=d+8|0;m=b[p>>1]|0;if(!(bh(d,32)|0)){l=d+16|0;n=c[l>>2]|0;if(!(m&4)){h[k>>3]=+h[d>>3];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];Yc(32,n,20272,o)|0}else{s=d;r=c[s+4>>2]|0;m=o;c[m>>2]=c[s>>2];c[m+4>>2]=r;Yc(32,n,19920,o)|0}m=c[l>>2]|0;if(!m)l=0;else{l=m;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;l=l-m&1073741823}c[d+12>>2]=l;a[d+10>>0]=1;l=e[p>>1]|514;b[p>>1]=g<<24>>24==0?l:l&65523;Ul(d,f&255)|0;l=0}else l=7;i=q;return l|0}function _l(a){a=a|0;var b=0,c=0;b=e[a+8>>1]|0;c=b&12;if(!c)if(!(b&18))b=0;else b=jp(a)|0;else b=c&65535;return b|0}function $l(a){a=a|0;var d=0.0,f=0,g=0,i=0,j=0;d=+h[a>>3];if(!(d<=-9223372036854775808.0)&!(d>=9223372036854775808.0)?(f=~~d>>>0,g=+N(d)>=1.0?(d>0.0?~~+$(+M(d/4294967296.0),4294967295.0)>>>0:~~+Z((d-+(~~d>>>0))/4294967296.0)>>>0):0,i=fw(f|0,g|0,1,-2147483648)|0,j=C,!(d!=+(f>>>0)+4294967296.0*+(g|0)|(j>>>0<0|(j|0)==0&i>>>0<2))):0){i=a;c[i>>2]=f;c[i+4>>2]=g;f=a+8|0;b[f>>1]=(e[f>>1]|0)&48640|4}return}function am(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=a+204|0;e=c[f>>2]|0;a:do if(e){h=(b|0)<0;do{while(1){if(!h){if((c[e>>2]|0)!=(b|0))break;g=c[e+4>>2]|0;if((g|0)<=31?(1<>2]|0;if(g)_b[g&31](c[e+8>>2]|0);c[f>>2]=c[e+16>>2];ig(c[a>>2]|0,e);e=c[f>>2]|0;if(!e)break a}f=e+16|0;e=c[f>>2]|0}while((e|0)!=0)}while(0);return}function bm(a,b,c){a=a|0;b=b|0;c=c|0;do if(b<<24>>24>66){b=e[a+8>>1]|0;if(!(b&4)){if(b&8){$l(a);break}if(b&2)nh(a,1)}}else if(b<<24>>24==66?(b=e[a+8>>1]|0,!((b&2|0)!=0|(b&12|0)==0)):0)Zl(a,c,1)|0;while(0);return}function cm(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,i=0,j=0;j=a+8|0;g=b[j>>1]|0;i=g&65535;do if(!(i&1)){d=d&255;if((d|0)==67){kp(a);break}else if((d|0)==65){if(i&16){b[j>>1]=i&65040;break}if(!((i&2|0)!=0|(i&12|0)==0)){Zl(a,f,1)|0;g=b[j>>1]|0}b[j>>1]=g&48640|16;break}else if((d|0)==68){d=Rg(a)|0;g=a;c[g>>2]=d;c[g+4>>2]=C;b[j>>1]=(e[j>>1]|0)&48640|4;break}else if((d|0)==69){h[a>>3]=+Qg(a);b[j>>1]=(e[j>>1]|0)&48640|8;break}else{d=i>>>3&2|i;g=d&65535;b[j>>1]=g;if(!((d&2|0)!=0|(i&12|0)==0)){Zl(a,f,1)|0;g=b[j>>1]|0}b[j>>1]=g&49123;break}}while(0);return}function dm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0.0,k=0,l=0,m=0;l=b[a+8>>1]|0;k=l&65535;i=b[d+8>>1]|0;m=i&65535;f=(i|l)&65535;do if(!(f&1)){if(!(f&12)){if(f&2){if(!(k&2)){f=1;break}if(!(m&2)){f=-1;break}if(e){f=lp(a,d,e,0)|0;break}}f=mp(a,d)|0;break}if((l&4&i)<<16>>16){l=a;k=c[l>>2]|0;l=c[l+4>>2]|0;i=d;f=c[i>>2]|0;i=c[i+4>>2]|0;if((l|0)<(i|0)|(l|0)==(i|0)&k>>>0>>0){f=-1;break}f=((l|0)>(i|0)|(l|0)==(i|0)&k>>>0>f>>>0)&1;break}if(!(k&8)){if(!(k&4)){f=1;break}f=a;j=+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0)}else j=+h[a>>3];if(!(m&8)){if(!(m&4)){f=-1;break}f=d;g=+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0)}else g=+h[d>>3];if(jg&1}else f=(m&1)-(k&1)|0;while(0);return f|0}function em(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;e=g+8|0;d=b+48|0;d=ym(c[b>>2]|0,0,c[d>>2]|0,c[d+4>>2]|0,0,e)|0;do if(!d)if(!(c[e>>2]|0)){a[b+26>>0]=0;c[b+60>>2]=0;d=0;break}else{c[f>>2]=67421;c[f+4>>2]=10788;Zc(11,13600,f);d=11;break}while(0);i=g;return d|0}function fm(b){b=b|0;var d=0,e=0,f=0;e=c[b>>2]|0;f=e+73|0;d=a[f>>0]|0;do if((d&255)>2){d=Gn(e)|0;if(!d){d=a[f>>0]|0;f=5;break}else{c[b+60>>2]=0;f=6;break}}else f=5;while(0);if((f|0)==5){c[b+60>>2]=0;if(d<<24>>24==1)d=0;else{d=0;f=6}}if((f|0)==6)a[b+25>>0]=1;return d|0}function gm(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=f+24|0;if(!(b[f+44>>1]|0)){j=b[f+76>>1]|0;i=c[f+(j<<2)+120>>2]|0;j=e[f+(j<<1)+78>>1]<<1;k=c[i+64>>2]|0;np(i,(c[i+56>>2]|0)+((d[k+j>>0]<<8|d[k+(j|1)>>0])&e[i+20>>1])|0,h);f=f+72|0;a[f>>0]=d[f>>0]|2}i=h;f=c[i+4>>2]|0;h=g;c[h>>2]=c[i>>2];c[h+4>>2]=f;return}function hm(f,g){f=f|0;g=g|0;var h=0,i=0,j=0;if(!(b[f+44>>1]|0)){i=b[f+76>>1]|0;h=c[f+(i<<2)+120>>2]|0;i=e[f+(i<<1)+78>>1]<<1;j=c[h+64>>2]|0;np(h,(c[h+56>>2]|0)+((d[j+i>>0]<<8|d[j+(i|1)>>0])&e[h+20>>1])|0,f+24|0);h=f+72|0;a[h>>0]=d[h>>0]|2}c[g>>2]=c[f+36>>2];return}function im(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;e=d[a>>0]|0;g=d[a+1>>0]|0;do if(g&128){f=d[a+2>>0]|0;if(!(f&128)){c[b>>2]=(f|e<<14)&2080895|g<<7&16256;e=3;break}else{e=op(a,h)|0;g=h;f=c[g>>2]|0;c[b>>2]=((f|0)==(f|0)?0==(c[g+4>>2]|0):0)?f:-1;break}}else{c[b>>2]=e<<7&16256|g;e=2}while(0);i=k;return e|0}function jm(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=(h|0)==0;do if((g+f|0)>>>0>(e[d+40>>1]|0)>>>0){l=i+8|0;b[l>>1]=1;h=bh(i,g+2|0)|0;if(!h){k=i+16|0;h=c[k>>2]|0;if(j)h=zh(d,f,g,h)|0;else h=Hm(d,f,g,h,0)|0;if(!h){a[(c[k>>2]|0)+g>>0]=0;a[(c[k>>2]|0)+(g+1)>>0]=0;b[l>>1]=528;c[i+12>>2]=g;h=0;break}if((b[l>>1]&9312)==0?(c[i+24>>2]|0)==0:0)break;Mg(i)}}else{c[i+16>>2]=(c[d+32>>2]|0)+f;b[i+8>>1]=4112;c[i+12>>2]=g;h=0}while(0);return h|0}function km(e,f,g){e=e|0;f=f|0;g=g|0;var h=0;switch(f|0){case 3:{f=d[e+1>>0]<<8|a[e>>0]<<16|d[e+2>>0];e=g;c[e>>2]=f;c[e+4>>2]=((f|0)<0)<<31>>31;b[g+8>>1]=4;e=3;break}case 9:case 8:{e=g;c[e>>2]=f+-8;c[e+4>>2]=0;b[g+8>>1]=4;e=0;break}case 5:{h=a[e>>0]<<8|d[e+1>>0];f=g;c[f>>2]=d[e+3>>0]<<16|d[e+2>>0]<<24|d[e+4>>0]<<8|d[e+5>>0];c[f+4>>2]=h;b[g+8>>1]=4;e=6;break}case 7:case 6:{pp(e,f,g);e=8;break}case 2:{f=a[e>>0]<<8|d[e+1>>0];e=g;c[e>>2]=f;c[e+4>>2]=((f|0)<0)<<31>>31;b[g+8>>1]=4;e=2;break}case 4:{f=d[e+1>>0]<<16|a[e>>0]<<24|d[e+2>>0]<<8|d[e+3>>0];e=g;c[e>>2]=f;c[e+4>>2]=((f|0)<0)<<31>>31;b[g+8>>1]=4;e=4;break}case 0:case 11:case 10:{b[g+8>>1]=1;e=0;break}case 1:{f=a[e>>0]|0;e=g;c[e>>2]=f;c[e+4>>2]=((f|0)<0)<<31>>31;b[g+8>>1]=4;e=1;break}default:{c[g+16>>2]=e;e=(f+-12|0)>>>1;c[g+12>>2]=e;b[g+8>>1]=b[34328+((f&1)<<1)>>1]|0}}return e|0}function lm(b,c,d){b=b|0;c=c|0;d=d|0;do if(!(d>>>0<0|(d|0)==0&c>>>0<128))if(d>>>0<0|(d|0)==0&c>>>0<16384){d=iw(c|0,d|0,7)|0;a[b>>0]=d|128;a[b+1>>0]=c&127;c=2;break}else{c=qp(b,c,d)|0;break}else{a[b>>0]=c&127;c=1}while(0);return c|0}function mm(e){e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;k=e+73|0;f=a[k>>0]|0;do if((f&255)>2)if(f<<24>>24==4){f=c[e+68>>2]|0;break}else{g=e+56|0;Sc(c[g>>2]|0);c[g>>2]=0;a[k>>0]=0;g=5;break}else g=5;while(0);a:do if((g|0)==5){h=e+76|0;f=b[h>>1]|0;do if(f<<16>>16<=-1){f=c[e+60>>2]|0;if(!f){a[k>>0]=0;f=0;break a}g=e+120|0;f=rp(c[(c[e>>2]|0)+4>>2]|0,f,g,(a[e+72>>0]&1)<<1^2)|0;if(!f){b[h>>1]=0;f=g;break}else{a[k>>0]=0;break a}}else{if(f<<16>>16)do{g=f+-1<<16>>16;b[h>>1]=g;f=c[e+(f<<16>>16<<2)+120>>2]|0;if(!f)f=g;else{xg(c[f+68>>2]|0);f=b[h>>1]|0}}while(f<<16>>16!=0);f=e+120|0}while(0);f=c[f>>2]|0;if((a[f>>0]|0)!=0?((c[e+16>>2]|0)==0|0)==(d[f+2>>0]|0):0){b[e+78>>1]=0;b[e+44>>1]=0;g=e+72|0;a[g>>0]=d[g>>0]&241;if(b[f+18>>1]|0){a[k>>0]=1;f=0;break}if(a[f+5>>0]|0){a[k>>0]=0;f=0;break}if((c[f+72>>2]|0)==1){g=d[f+6>>0]|0;f=c[f+56>>2]|0;f=d[f+(g+9)>>0]<<16|d[f+(g+8)>>0]<<24|d[f+(g+10)>>0]<<8|d[f+(g+11)>>0];a[k>>0]=1;f=nm(e,f)|0;break}else{c[l>>2]=57629;c[l+4>>2]=10788;Zc(11,13600,l);f=11;break}}c[l>>2]=57618;c[l+4>>2]=10788;Zc(11,13600,l);f=11}while(0);i=m;return f|0}function nm(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;l=n+8|0;g=e+76|0;k=b[g>>1]|0;h=k<<16>>16;do if(k<<16>>16<=18){k=e+72|0;f=rp(c[e+4>>2]|0,f,l,(a[k>>0]&1)<<1^2)|0;if(!f){f=c[l>>2]|0;l=h+1|0;c[e+(l<<2)+120>>2]=f;b[e+(l<<1)+78>>1]=0;b[g>>1]=(b[g>>1]|0)+1<<16>>16;b[e+44>>1]=0;a[k>>0]=d[k>>0]&249;if((b[f+18>>1]|0)!=0?(a[f+2>>0]|0)==(a[(c[e+(h<<2)+120>>2]|0)+2>>0]|0):0){f=0;break}c[m>>2]=57499;c[m+4>>2]=10788;Zc(11,13600,m);f=11}}else{c[m>>2]=57487;c[m+4>>2]=10788;Zc(11,13600,m);f=11}while(0);i=n;return f|0}function om(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=a+328|0;a:do if(!(c[j>>2]|0))a=0;else{g=a+304|0;h=d+1|0;i=0;while(1){if((i|0)>=(c[g>>2]|0)){a=0;break a}f=c[(c[j>>2]|0)+(i<<2)>>2]|0;a=c[c[f+4>>2]>>2]|0;e=c[f+8>>2]|0;if((e|0)!=0?(c[a>>2]|0)>1:0){if(!b){a=c[a+80>>2]|0;c[f+20>>2]=h}else if((b|0)==2)a=c[a+88>>2]|0;else a=c[a+84>>2]|0;if((a|0)!=0?(c[f+20>>2]|0)>(d|0):0){a=nc[a&127](e,d)|0;if(!a){i=i+1|0;continue}else break a}}i=i+1|0}}while(0);return a|0}function pm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h;e=c[b>>2]|0;if(!d){d=b+144|0;k=c[d+4>>2]|0;if((k|0)>0|(k|0)==0&(c[d>>2]|0)>>>0>0)g=4;else e=0}else{d=e+504|0;k=e+512|0;d=fw(c[k>>2]|0,c[k+4>>2]|0,c[d>>2]|0,c[d+4>>2]|0)|0;k=C;if((k|0)>0|(k|0)==0&d>>>0>0)g=4;else e=0}if((g|0)==4){c[b+80>>2]=787;a[b+86>>0]=2;$g(b+44|0,e,34376,f);e=1}i=h;return e|0}function qm(e,f,g){e=e|0;f=f|0;g=g|0;var h=0;if((e|0)!=0?(a[e+8>>0]|0)==2:0){h=c[e+4>>2]|0;c[h+4>>2]=c[e>>2];f=fp(c[h>>2]|0,f,g)|0;if(!f){if((g|0)<0?(b[h+22>>1]&8)!=0:0)c[h+44>>2]=0;f=yg(h)|0;e=c[(c[h+12>>2]|0)+56>>2]|0;c[h+44>>2]=d[e+29>>0]<<16|d[e+28>>0]<<24|d[e+30>>0]<<8|d[e+31>>0]}}else f=0;return f|0}function rm(a,b){a=a|0;b=b|0;a=a+16|0;ml(c[(c[a>>2]|0)+(b<<4)+12>>2]|0);if((b|0)!=1)ml(c[(c[a>>2]|0)+28>>2]|0);return}function sm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;f=c[a+4>>2]|0;c[f+4>>2]=c[a>>2];if((b|0)==15)f=(c[a+20>>2]|0)+(c[(c[f>>2]|0)+100>>2]|0)|0;else{b=b<<2;f=c[(c[f+12>>2]|0)+56>>2]|0;f=(d[f+(b+37)>>0]|0)<<16|(d[f+(b+36)>>0]|0)<<24|(d[f+(b+38)>>0]|0)<<8|(d[f+(b+39)>>0]|0)}c[e>>2]=f;return}function tm(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;k=(c[d+28>>2]|0)-e|0;i=c[d+8>>2]|0;n=(f<<3)+88|0;m=(h|0)!=0;l=d+56|0;j=c[(c[l>>2]|0)+(e<<2)>>2]|0;if(j){xm(d,j);c[(c[l>>2]|0)+(e<<2)>>2]=0}if(!(bh(i+(k*40|0)|0,(m?200:0)+n|0)|0)){k=i+(k*40|0)+16|0;h=c[k>>2]|0;c[(c[l>>2]|0)+(e<<2)>>2]=h;i=h+0|0;j=i+88|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));a[h+24>>0]=g;b[h+20>>1]=f;c[h+80>>2]=h+84+(f<<2);if(m){i=(c[k>>2]|0)+n|0;c[h>>2]=i;i=i+0|0;j=i+76|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0))}}else h=0;return h|0}function um(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=c[d+4>>2]|0;c[k+4>>2]=c[d>>2];if(f)if(!(b[k+22>>1]&1)){j=k+80|0;if(!(c[j>>2]|0)){i=Co(c[k+32>>2]|0)|0;c[j>>2]=i;if(!i)i=7;else{l=i;i=l;a[i>>0]=0;a[i+1>>0]=0;a[i+2>>0]=0;a[i+3>>0]=0;l=l+4|0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=0;c[j>>2]=(c[j>>2]|0)+4;l=6}}else l=6}else i=8;else l=6;if((l|0)==6){if((e|0)==1)e=(c[k+44>>2]|0)!=0&1;c[h+60>>2]=e;b[h+76>>1]=-1;c[h+16>>2]=g;c[h>>2]=d;c[h+4>>2]=k;a[h+72>>0]=f;i=k+8|0;e=c[i>>2]|0;c[h+8>>2]=e;if(e)c[e+12>>2]=h;c[i>>2]=h;a[h+73>>0]=0;i=0}return i|0}function vm(f,g,h,k,l,m){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,O=0,P=0;P=i;i=i+128|0;if((i|0)>=(j|0))ba();A=P;H=P+12|0;E=P+8|0;M=P+16|0;K=(g|0)==0;if(!K){o=(a[g>>0]|0)==0;if(Wv(g,14640)|0)if(o)G=4;else{o=0;G=5}else L=1}else G=4;if((G|0)==4)if((a[h+64>>0]|0)==2){L=1;o=1}else{o=1;G=5}if((G|0)==5)L=(m&128|0)!=0;J=L?l|2:l;if((m&256|0)!=0&(L|o))m=m&-769|512;O=mg(48,0)|0;a:do if(O){u=O+0|0;t=u+48|0;do{a[u>>0]=0;u=u+1|0}while((u|0)<(t|0));c[O>>2]=h;c[O+32>>2]=O;c[O+36>>2]=1;b:do if(!o?!(L&(m&64|0)==0|(m&131072|0)==0):0){if(K)o=1;else{o=g;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;o=(o-g&1073741823)+1|0}l=(c[f+8>>2]|0)+1|0;r=(l|0)>(o|0)?l:o;r=mg(r,((r|0)<0)<<31>>31)|0;q=O+9|0;a[q>>0]=1;if(!r){Sc(O);n=7;break a}if(!L){a[r>>0]=0;o=lc[c[f+36>>2]&31](f,g,l,r)|0;if(o){Sc(r);Sc(O);n=o;break a}}else gw(r|0,g|0,o|0)|0;o=c[3664]|0;c:do if(o){while(1){l=c[o>>2]|0;if((Wv(r,c[l+168>>2]|0)|0)==0?(c[l>>2]|0)==(f|0):0)break;o=c[o+68>>2]|0;if(!o)break c}l=c[h+20>>2]|0;d:do if((l|0)>0){p=c[h+16>>2]|0;while(1){l=l+-1|0;D=c[p+(l<<4)+4>>2]|0;if((D|0)!=0?(c[D+4>>2]|0)==(o|0):0)break;if((l|0)<=0)break d}Sc(r);Sc(O);n=19;break a}while(0);c[O+4>>2]=o;D=o+64|0;c[D>>2]=(c[D>>2]|0)+1;Sc(r);if(!o){G=32;break b}if(!(a[q>>0]|0))break b;else{G=105;break b}}while(0);Sc(r);G=32}else G=32;while(0);e:do if((G|0)==32){I=mg(84,0)|0;if(I){u=I+0|0;t=u+84|0;do{a[u>>0]=0;u=u+1|0}while((u|0)<(t|0));C=J&1;D=(C|0)==0;c[H>>2]=1024;B=f+4|0;o=c[B>>2]|0;if((o|0)>40)l=o+7&-8;else l=40;c[I>>2]=0;do if(!(J&2))if(!K)if(a[g>>0]|0){v=f+8|0;q=(c[v>>2]|0)+1|0;x=q<<1;x=mg(x,((x|0)<0)<<31>>31)|0;if(!x)n=7;else{a[x>>0]=0;o=lc[c[f+36>>2]&31](f,g,q,x)|0;q=x;while(1)if(!(a[q>>0]|0))break;else q=q+1|0;u=q-x&1073741823;r=g;while(1)if(!(a[r>>0]|0))break;else r=r+1|0;t=(r-g&1073741823)+1|0;r=a[g+t>>0]|0;t=g+t|0;if(!(r<<24>>24))q=t;else{q=t;do{if(!(r<<24>>24))r=q;else{r=q;do r=r+1|0;while((a[r>>0]|0)!=0)}r=r-q&1073741823;p=q+(r+1)|0;s=p;while(1)if(!(a[s>>0]|0))break;else s=s+1|0;q=q+(r+2+(s-p&1073741823))|0;r=a[q>>0]|0}while(r<<24>>24!=0)}if(!o){if((u+8|0)<=(c[v>>2]|0)){w=1;A=0;v=u;u=q+1-t|0;r=x;G=58;break}c[A>>2]=46171;c[A+4>>2]=10788;Zc(14,14848,A);o=14}Sc(x);G=89}}else{w=1;A=0;v=0;u=0;r=0;t=0;G=58}else{g=0;w=0;A=0;v=0;u=0;r=0;t=0;G=58}else if(!K)if(a[g>>0]|0){r=gh(0,g)|0;if(!r)n=7;else{o=r;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;g=0;w=0;A=1;v=o-r&1073741823;u=0;t=0;G=58}}else{w=1;A=1;v=0;u=0;r=0;t=0;G=58}else{g=0;w=0;A=1;v=0;u=0;r=0;t=0;G=58}while(0);do if((G|0)==58){q=(l<<1)+17+(v*3|0)+u+((c[B>>2]|0)+271&-8)|0;z=mg(q,0)|0;if(!z){if(!r){n=7;break}Sc(r);n=7;break}bw(z|0,0,q|0)|0;x=z+204|0;c[x>>2]=z+216;y=z+60|0;c[y>>2]=z+264;s=(c[B>>2]|0)+271&-8;c[z+68>>2]=z+s;s=s+l|0;c[z+64>>2]=z+s;s=s+l|0;q=z+s|0;o=z+168|0;c[o>>2]=q;if(r){p=v+1|0;l=z+172|0;c[l>>2]=z+(u+p+s);gw(q|0,r|0,v|0)|0;if(u)gw((c[o>>2]|0)+p|0,t|0,u|0)|0;gw(c[l>>2]|0,r|0,v|0)|0;u=(c[l>>2]|0)+v+0|0;s=14928;t=u+10|0;do{a[u>>0]=a[s>>0]|0;u=u+1|0;s=s+1|0}while((u|0)<(t|0));l=(c[l>>2]|0)+(v+9)|0;B=z+212|0;c[B>>2]=l;gw(l|0,r|0,v|0)|0;B=(c[B>>2]|0)+v|0;a[B+0>>0]=a[14944]|0;a[B+1>>0]=a[14945]|0;a[B+2>>0]=a[14946]|0;a[B+3>>0]=a[14947]|0;a[B+4>>0]=a[14948]|0;Sc(r)}c[z>>2]=f;c[z+144>>2]=m;do if(w?(a[g>>0]|0)!=0:0){c[E>>2]=0;o=pc[c[f+24>>2]&31](f,c[o>>2]|0,c[y>>2]|0,m&556927,E)|0;p=c[E>>2]&1;if(!o){o=c[y>>2]|0;o=hc[c[(c[o>>2]|0)+48>>2]&127](o)|0;do if((p|0)==0?(sp(z),F=c[z+148>>2]|0,F>>>0>1024):0)if(F>>>0>8192){c[H>>2]=8192;break}else{c[H>>2]=F;break}while(0);a[z+13>>0]=bg(g,14952,0)|0;if((o&8192|0)==0?(bg(g,14960,0)|0)==0:0){s=0;G=77;break}o=m|1;G=76}}else{o=m;G=76}while(0);if((G|0)==76){a[z+16>>0]=1;a[z+17>>0]=4;a[z+13>>0]=1;p=o&1;s=1;G=77}if((G|0)==77){o=Yk(z,H,-1)|0;if(!o){l=c[H>>2]|0;r=(A|0)==0;m=A^1;q=r?75:0;o=c[x>>2]|0;u=o+0|0;t=u+48|0;do{c[u>>2]=0;u=u+4|0}while((u|0)<(t|0));c[o+20>>2]=1;c[o+24>>2]=80;a[o+28>>0]=m;a[o+29>>0]=2;c[o+32>>2]=q;c[o+36>>2]=z;c[o+16>>2]=100;o=Do(o,l)|0;if(!o){a[z+6>>0]=C^1;c[z+156>>2]=1073741823;a[z+12>>0]=s;a[z+4>>0]=s;a[z+18>>0]=s;a[z+15>>0]=A;a[z+14>>0]=p;a[z+7>>0]=s;if(!(s<<24>>24)){a[z+8>>0]=1;a[z+11>>0]=2;a[z+10>>0]=34;a[z+9>>0]=2}b[z+140>>1]=80;E=z+160|0;c[E>>2]=-1;c[E+4>>2]=-1;sp(z);do if(D){if(r)break;a[z+5>>0]=4}else a[z+5>>0]=2;while(0);c[z+196>>2]=21;c[I>>2]=z;G=90;break}}}l=c[y>>2]|0;m=c[l>>2]|0;if(m){hc[c[m+4>>2]&127](l)|0;c[l>>2]=0}Xk(c[z+200>>2]|0);Sc(z);G=89}while(0);if((G|0)==89)if(!o)G=90;else n=o;do if((G|0)==90){o=c[I>>2]|0;E=h+40|0;t=c[E+4>>2]|0;u=o+128|0;c[u>>2]=c[E>>2];c[u+4>>2]=t;u=M+0|0;t=u+100|0;do{a[u>>0]=0;u=u+1|0}while((u|0)<(t|0));o=c[o+60>>2]|0;l=c[o>>2]|0;if((l|0)!=0?(n=pc[c[l+8>>2]&31](o,M,100,0,0)|0,!((n|0)==0|(n|0)==522)):0)break;a[I+16>>0]=J;c[I+4>>2]=h;o=c[I>>2]|0;l=o+176|0;c[l>>2]=76;c[o+180>>2]=I;m=c[o+60>>2]|0;n=c[m>>2]|0;if(!n)l=o;else{Yb[c[n+40>>2]&63](m,15,l)|0;l=c[I>>2]|0}c[O+4>>2]=I;c[I+8>>2]=0;c[I+12>>2]=0;if(a[l+14>>0]|0){E=I+22|0;b[E>>1]=e[E>>1]|1}E=d[M+17>>0]<<16|d[M+16>>0]<<8;m=I+32|0;c[m>>2]=E;if((E+-512|0)>>>0<=65024?(E+16777215&E|0)==0:0){o=a[M+20>>0]|0;E=I+22|0;b[E>>1]=e[E>>1]|2;a[I+17>>0]=(d[M+53>>0]<<16|d[M+52>>0]<<24|d[M+54>>0]<<8|d[M+55>>0]|0)!=0&1;a[I+18>>0]=(d[M+65>>0]<<16|d[M+64>>0]<<24|d[M+66>>0]<<8|d[M+67>>0]|0)!=0&1}else{c[m>>2]=0;if(K|L)o=0;else{a[I+17>>0]=0;a[I+18>>0]=0;o=0}}o=o&255;n=Yk(l,m,o)|0;if(!n){c[I+36>>2]=(c[m>>2]|0)-o;if(!(a[O+9>>0]|0))break e;c[I+64>>2]=1;c[I+68>>2]=c[3664];c[3664]=I;G=105;break e}}while(0);if(I){m=c[I>>2]|0;if(!m)m=I;else{hp(m);m=I}}else m=0}else{m=0;n=7}Sc(m);Sc(O);c[k>>2]=0;break a}while(0);f:do if((G|0)==105?(N=c[h+20>>2]|0,(N|0)>0):0){m=c[h+16>>2]|0;l=0;while(1){n=c[m+(l<<4)+4>>2]|0;if((n|0)!=0?(a[n+9>>0]|0)!=0:0){l=n;break}l=l+1|0;if((l|0)>=(N|0))break f}while(1){n=l+28|0;m=c[n>>2]|0;if(!m){m=l;break}else l=m}o=c[O+4>>2]|0;if(o>>>0<(c[m+4>>2]|0)>>>0){c[O+24>>2]=m;c[O+28>>2]=0;c[n>>2]=O;break}while(1){n=m+24|0;l=c[n>>2]|0;if(!l){G=113;break}if((c[l+4>>2]|0)>>>0>>0)m=l;else{G=115;break}}if((G|0)==113){c[O+24>>2]=0;c[O+28>>2]=m}else if((G|0)==115){c[O+24>>2]=l;c[O+28>>2]=m;c[l+28>>2]=O}c[n>>2]=O}while(0);c[k>>2]=O;n=c[O+4>>2]|0;c[n+4>>2]=c[O>>2];if(!(c[n+48>>2]|0)){n=c[(c[n>>2]|0)+204>>2]|0;c[n+16>>2]=2e3;fc[c[8744+124>>2]&15](c[n+40>>2]|0,2e3);n=0}else n=0}else n=7;while(0);i=P;return n|0}function wm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;y=i;i=i+48|0;if((i|0)>=(j|0))ba();r=y;v=y+28|0;w=y+24|0;u=y+20|0;n=y+16|0;p=y+12|0;q=y+32|0;s=y+8|0;h=c[b>>2]|0;t=c[b+4>>2]|0;g=t+4|0;c[g>>2]=h;a:do if(!(a[t+17>>0]|0)){g=ep(t,v,w,1,0)|0;c[u>>2]=g;if(!g){h=c[v>>2]|0;x=39}}else{o=t+8|0;k=c[o>>2]|0;if(k)do{m=k+72|0;a[m>>0]=d[m>>0]&251;k=c[k+8>>2]|0}while((k|0)!=0);c[g>>2]=h;m=c[(c[t+12>>2]|0)+56>>2]|0;m=d[m+53>>0]<<16|d[m+52>>0]<<24|d[m+54>>0]<<8|d[m+55>>0];c[w>>2]=m;h=((c[2514]|0)>>>0)/((c[t+32>>2]|0)>>>0)|0;g=t+36|0;while(1){l=m+1|0;if(l>>>0<2)k=0;else{k=m+-1|0;k=k-((k>>>0)%(((((c[g>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(h|0)?3:2)+k|0}if((l|0)==(k|0)|(m|0)==(h|0))m=l;else break}c[w>>2]=l;g=ep(t,p,n,l,1)|0;c[u>>2]=g;if(!g){m=c[n>>2]|0;do if((m|0)==(l|0)){h=c[p>>2]|0;c[v>>2]=h}else{a[q>>0]=0;c[s>>2]=0;k=c[o>>2]|0;b:do if(!k)g=0;else{while(1){if(k)break;k=c[2]|0;if(!k){g=0;break b}}g=Bl(k,0,0)|0}while(0);c[u>>2]=g;k=c[p>>2]|0;if(k)xg(c[k+68>>2]|0);if(g)break a;g=$k(t,l,v,0)|0;c[u>>2]=g;if(g)break a;g=dp(t,l,q,s)|0;c[u>>2]=g;k=a[q>>0]|0;if((k+-1&255)>=2){h=c[v>>2]|0;if(!g){g=Vm(t,h,k,c[s>>2]|0,m,0)|0;c[u>>2]=g;if(h)xg(c[h+68>>2]|0);if(g)break a;g=$k(t,l,v,0)|0;c[u>>2]=g;if(g)break a;h=c[v>>2]|0;k=h+68|0;g=Cg(c[k>>2]|0)|0;c[u>>2]=g;if(!g)break;if(!h)break a;xg(c[k>>2]|0);break a}}else{c[r>>2]=60876;c[r+4>>2]=10788;Zc(11,13600,r);c[u>>2]=11;g=11;h=c[v>>2]|0}if(!h)break a;xg(c[h+68>>2]|0);break a}while(0);vp(t,l,1,0,u);g=c[u>>2]|0;if(g){if(!h)break;xg(c[h+68>>2]|0);break}g=zg(b,4,l)|0;c[u>>2]=g;if(g){if(h)xg(c[h+68>>2]|0)}else x=39}}while(0);if((x|0)==39){ll(h,(f&1|0)==0?10:13);g=c[(c[v>>2]|0)+68>>2]|0;if(g)xg(g);c[e>>2]=c[w>>2];g=0}i=y;return g|0}function xm(a,b){a=a|0;b=b|0;var d=0,e=0;do if(b){a=c[a>>2]|0;d=b+56|0;e=c[d>>2]|0;if(e){Wm(a,e);Sc(c[e+40>>2]|0);ig(a,e);c[d>>2]=0}a=c[b+4>>2]|0;if(a){Il(a);break}a=c[b>>2]|0;if(a){gp(a);break}a=c[b+32>>2]|0;if(a){e=c[a>>2]|0;d=c[e>>2]|0;e=e+4|0;c[e>>2]=(c[e>>2]|0)+-1;hc[c[d+28>>2]&127](a)|0}}while(0);return}function ym(f,g,h,k,l,m){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,O=0;N=i;i=i+16|0;if((i|0)>=(j|0))ba();L=N+8|0;K=N;q=f+73|0;do if(((a[q>>0]|0)==1?(p=d[f+72>>0]|0,(p&2|0)!=0):0)?(a[(c[f+120>>2]|0)+2>>0]|0)!=0:0){n=f+24|0;o=c[n>>2]|0;n=c[n+4>>2]|0;if((o|0)==(h|0)&(n|0)==(k|0)){c[m>>2]=0;n=0;break}if((p&8|0)!=0&((n|0)<(k|0)|(n|0)==(k|0)&o>>>0>>0)){c[m>>2]=-1;n=0}else M=8}else M=8;while(0);do if((M|0)==8){if(!g)G=0;else{o=c[g>>2]|0;if(((e[o+8>>1]|0)+(e[o+6>>1]|0)|0)<14){n=e[(c[g+8>>2]|0)+8>>1]|0;H=(a[c[o+16>>2]>>0]|0)==0;c[g+12>>2]=H?-1:1;c[g+16>>2]=H?1:-1;if(!(n&4))if((n&25|0)==0?(c[o+20>>2]|0)==0:0)o=39;else M=13;else o=38}else M=13;if((M|0)==13)o=40;a[g+7>>0]=0;G=o}n=mm(f)|0;if(!n){if(!(a[q>>0]|0)){c[m>>2]=-1;n=0;break}H=f+76|0;C=1-l|0;D=(G|0)==0;I=f+72|0;E=f+24|0;F=f+24|0;a:do{l=b[H>>1]|0;A=c[f+(l<<2)+120>>2]|0;B=A+18|0;p=(e[B>>1]|0)+-1|0;o=p>>C;b[f+(l<<1)+78>>1]=o;l=A+56|0;x=A+20|0;y=A+64|0;z=A+7|0;b:do if(D){s=A+3|0;r=A+60|0;q=0;t=p;while(1){p=o<<1;w=c[y>>2]|0;p=(c[l>>2]|0)+(((d[w+p>>0]<<8|d[w+(p|1)>>0])&e[x>>1])+(d[z>>0]|0))|0;c:do if(a[s>>0]|0)while(1){w=p;p=p+1|0;if((a[w>>0]|0)>=0)break c;if(p>>>0>=(c[r>>2]|0)>>>0){M=25;break a}}while(0);op(p,K)|0;n=K;p=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)<(k|0)|(n|0)==(k|0)&p>>>0>>0){q=o+1|0;if((o|0)<(t|0))p=t;else{n=-1;M=49;break b}}else{if(!((n|0)>(k|0)|(n|0)==(k|0)&p>>>0>h>>>0)){q=n;break}p=o+-1|0;if((q|0)>(p|0)){n=1;M=49;break b}}o=p+q>>1;t=p}a[I>>0]=d[I>>0]|2;z=E;c[z>>2]=p;c[z+4>>2]=q;b[f+(b[H>>1]<<1)+78>>1]=o;if(a[A+5>>0]|0){M=31;break a}}else{u=A+8|0;v=A+10|0;w=o;q=0;while(1){n=c[l>>2]|0;s=w<<1;o=c[y>>2]|0;s=(d[o+s>>0]<<8|d[o+(s|1)>>0])&e[x>>1];o=s+(d[z>>0]|0)|0;O=a[n+o>>0]|0;t=O&255;r=n+(o+1)|0;do if((O&255)>(d[u>>0]|0)){r=d[r>>0]|0;if((r&128|0)==0?(J=r+(t<<7&16256)|0,(J|0)<=(e[v>>1]|0)):0){n=Yb[G&63](J,n+(o+2)|0,g)|0;break}np(A,n+s|0,F);r=c[F>>2]|0;o=mg(r,((r|0)<0)<<31>>31)|0;if(!o){n=7;break a}b[f+(b[H>>1]<<1)+78>>1]=w;n=Hm(f,0,r,o,2)|0;if(n){M=40;break a}n=Yb[G&63](r,o,g)|0;Sc(o)}else n=Yb[G&63](t,r,g)|0;while(0);if((n|0)<0)q=w+1|0;else{if((n|0)<=0){o=w;M=46;break a}p=w+-1|0}if((q|0)>(p|0)){o=w;M=49;break b}w=p+q>>1}}while(0);if((M|0)==49){M=0;if(a[A+5>>0]|0){M=51;break}l=A+56|0;o=q}q=c[l>>2]|0;if((o|0)<(e[B>>1]|0)){p=o<<1;B=c[A+64>>2]|0;p=(d[B+p>>0]<<8|d[B+(p|1)>>0])&e[A+20>>1];p=d[q+(p+1)>>0]<<16|d[q+p>>0]<<24|d[q+(p+2)>>0]<<8|d[q+(p+3)>>0]}else{p=d[A+6>>0]|0;p=d[q+(p+9)>>0]<<16|d[q+(p+8)>>0]<<24|d[q+(p+10)>>0]<<8|d[q+(p+11)>>0]}b[f+(b[H>>1]<<1)+78>>1]=o;n=nm(f,p)|0}while((n|0)==0);if((M|0)==25){c[L>>2]=57865;c[L+4>>2]=10788;Zc(11,13600,L);n=11;break}else if((M|0)==31){c[m>>2]=0;n=0}else if((M|0)==40)Sc(o);else if((M|0)==46){c[m>>2]=0;b[f+(b[H>>1]<<1)+78>>1]=o;n=(a[g+7>>0]|0)==0?0:11}else if((M|0)==51){b[f+(b[H>>1]<<1)+78>>1]=o;c[m>>2]=n;n=0}b[f+44>>1]=0;a[I>>0]=d[I>>0]&249}}while(0);i=N;return n|0}function zm(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0;b[f+44>>1]=0;h=f+72|0;a[h>>0]=d[h>>0]&249;c[g>>2]=0;do if((a[f+73>>0]|0)==1){h=f+76|0;k=b[h>>1]|0;i=c[f+(k<<2)+120>>2]|0;k=f+(k<<1)+78|0;j=(b[k>>1]|0)+1<<16>>16;b[k>>1]=j;if((j&65535)>=(e[i+18>>1]|0)){h=f+(b[h>>1]<<1)+78|0;b[h>>1]=(b[h>>1]|0)+-1<<16>>16;h=zp(f,g)|0;break}if(!(a[i+5>>0]|0))h=Rm(f)|0;else h=0}else h=zp(f,g)|0;while(0);return h|0}function Am(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0;c[f>>2]=0;j=e+72|0;a[j>>0]=d[j>>0]&241;b[e+44>>1]=0;if(((a[e+73>>0]|0)==1?(g=b[e+76>>1]|0,h=e+(g<<1)+78|0,i=b[h>>1]|0,i<<16>>16!=0):0)?(a[(c[e+(g<<2)+120>>2]|0)+5>>0]|0)!=0:0){b[h>>1]=i+-1<<16>>16;g=0}else g=Ap(e,f)|0;return g|0}function Bm(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=0-d&7;j=a+6|0;h=b[j>>1]|0;g=((h&65535)*40|0)+64|0;if((g|0)>(i+e|0)){g=ih(c[a+12>>2]|0,g,0)|0;c[f>>2]=g;if(!g)g=0;else{h=b[j>>1]|0;k=5}}else{c[f>>2]=0;g=d+i|0;k=5}if((k|0)==5){c[g+8>>2]=g+24;c[g>>2]=a;b[g+4>>1]=(h&65535)+1}return g|0}function Cm(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))ba();t=u+4|0;s=u;m=c[h+8>>2]|0;a[h+6>>0]=0;k=a[g>>0]|0;if(k<<24>>24>-1){k=k&255;c[t>>2]=k;l=1}else{l=im(g,t)|0;k=c[t>>2]|0}r=d+4|0;p=d+12|0;q=h+4|0;d=k;o=k;n=l&255;k=0;while(1){if(n>>>0>=d>>>0|(o|0)>(f|0))break;h=g+n|0;d=a[h>>0]|0;if(d<<24>>24>-1){c[s>>2]=d&255;h=1}else h=im(h,s)|0;a[m+10>>0]=a[r>>0]|0;c[m+32>>2]=c[p>>2];c[m+24>>2]=0;l=km(g+o|0,c[s>>2]|0,m)|0;k=k+1<<16>>16;if((k&65535)>=(e[q>>1]|0))break;d=c[t>>2]|0;o=l+o|0;n=(h&255)+n|0;m=m+40|0}b[q>>1]=k;i=u;return}function Dm(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;g=b+73|0;if((a[g>>0]|0)==1?(a[b+72>>0]&8)!=0:0)f=0;else h=3;do if((h|0)==3){f=mm(b)|0;if(!f){if(!(a[g>>0]|0)){c[e>>2]=1;f=0;break}c[e>>2]=0;f=Bp(b)|0;e=b+72|0;g=d[e>>0]|0;if(!f){a[e>>0]=g|8;f=0;break}else{a[e>>0]=g&247;break}}}while(0);return f|0}function Em(f,g,h,k,l,m,n,o,p){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+32|0;if((i|0)>=(j|0))ba();u=L;A=L+24|0;B=L+20|0;z=L+16|0;K=L+12|0;H=L+8|0;I=L+28|0;c[H>>2]=p;r=(c[f>>2]|0)+4|0;t=c[r>>2]|0;J=f+73|0;do if((a[J>>0]|0)!=4){s=Hn(t,c[f+60>>2]|0,f)|0;c[K>>2]=s;if(!s){if(!(c[f+16>>2]|0)){s=c[(c[r>>2]|0)+8>>2]|0;if(s)do{if((a[s+72>>0]&16)!=0?(E=s+24|0,(c[E>>2]|0)==(h|0)?(c[E+4>>2]|0)==(k|0):0):0)a[s+73>>0]=0;s=c[s+8>>2]|0}while((s|0)!=0);if((a[f+72>>0]&2)!=0&((k|0)>0|(k|0)==0&h>>>0>0)?(E=f+24|0,x=c[E>>2]|0,E=c[E+4>>2]|0,y=fw(h|0,k|0,-1,-1)|0,(x|0)==(y|0)&(E|0)==(C|0)):0)c[H>>2]=-1;else D=13}else D=13;if(((D|0)==13?(p|0)==0:0)?(q=Cp(f,g,h,k,o,H)|0,c[K>>2]=q,(q|0)!=0):0)break;F=f+76|0;G=c[f+(b[F>>1]<<2)+120>>2]|0;E=c[t+80>>2]|0;c[B>>2]=0;o=G+52|0;y=c[o>>2]|0;c[z>>2]=0;s=d[G+7>>0]|0;t=n+m|0;if(a[G+3>>0]|0){if(t>>>0<128){a[E+s>>0]=t;r=1}else r=(lm(E+s|0,t,((t|0)<0)<<31>>31)|0)&255;s=r+s|0}p=(lm(E+s|0,h,k)|0)+s|0;do if(!(a[G+2>>0]|0))if((k|0)>0|(k|0)==0&h>>>0>2147483647|(g|0)==0){c[u>>2]=58825;c[u+4>>2]=10788;Zc(11,13600,u);q=11;s=0;break}else{x=m;t=h;m=h;n=g;D=24;break}else{x=0;n=l;D=24}while(0);do if((D|0)==24){s=e[G+10>>1]|0;if((t|0)>(s|0)){r=e[G+12>>1]|0;o=(((t-r|0)>>>0)%(((c[(c[o>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+r|0;o=(o|0)>(s|0)?r:o;r=o+p|0;s=r+4|0;r=E+r|0}else{s=t+p|0;s=(s|0)<4?4:s;r=E;o=t}if((t|0)>0){h=y+17|0;v=y+36|0;w=y+32|0;g=m;u=E+p|0;k=r;p=0;m=o;while(1){if(!m){u=c[z>>2]|0;if(!(a[h>>0]|0))r=u;else{q=((c[2514]|0)>>>0)/((c[w>>2]|0)>>>0)|0;m=u;while(1){r=m+1|0;if(r>>>0<2)o=0;else{o=m+-1|0;o=o-((o>>>0)%(((((c[v>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;o=((o+1|0)==(q|0)?3:2)+o|0}if((o|0)==(r|0)|(m|0)==(q|0))m=r;else break}c[z>>2]=r}q=ep(y,B,z,r,0)|0;c[A>>2]=q;r=(q|0)==0;if((a[h>>0]|0)!=0&r){r=c[z>>2]|0;vp(y,r,(u|0)!=0?4:3,u,A);q=c[A>>2]|0;if(q){o=p;D=38;break}}else{if(!r)break;r=c[z>>2]|0}a[k>>0]=r>>>24;a[k+1>>0]=r>>>16;a[k+2>>0]=r>>>8;a[k+3>>0]=r;if(p)xg(c[p+68>>2]|0);q=c[B>>2]|0;u=q+56|0;k=c[u>>2]|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;u=(c[u>>2]|0)+4|0;m=(c[v>>2]|0)+-4|0}else q=p;r=(t|0)>(m|0)?m:t;if((g|0)>0){r=(r|0)>(g|0)?g:r;gw(u|0,n|0,r|0)|0}else bw(u|0,0,r|0)|0;t=t-r|0;o=(g|0)==(r|0);if((t|0)<=0){D=51;break}else{g=o?x:g-r|0;u=u+r|0;n=o?l:n+r|0;p=q;m=m-r|0}}if((D|0)==38){p=c[B>>2]|0;if(!p)p=o;else{xg(c[p+68>>2]|0);p=o}}else if((D|0)==51){if(!q){q=0;break}xg(c[q+68>>2]|0);q=0;break}if(p)xg(c[p+68>>2]|0)}else q=0}while(0);c[K>>2]=q;if(!q){q=f+(b[F>>1]<<1)+78|0;o=b[q>>1]|0;r=o&65535;p=c[H>>2]|0;if(!p){q=Cg(c[G+68>>2]|0)|0;c[K>>2]=q;if(q)break;q=r<<1;D=c[G+64>>2]|0;q=(c[G+56>>2]|0)+((d[D+q>>0]<<8|d[D+(q|1)>>0])&e[G+20>>1])|0;if(!(a[G+5>>0]|0)){D=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;a[E>>0]=D;a[E+1>>0]=D>>8;a[E+2>>0]=D>>16;a[E+3>>0]=D>>24}c[K>>2]=Dp(G,q,I)|0;Ep(G,r,e[I>>1]|0,K);q=c[K>>2]|0;if(!q)q=r;else break}else if((p|0)<0?(b[G+18>>1]|0)!=0:0){D=o+1<<16>>16;b[q>>1]=D;q=D&65535}else q=r;Fp(G,q,E,s,0,0,K);b[f+44>>1]=0;q=c[K>>2]|0;if(!q)if(!(a[G+1>>0]|0))q=0;else{q=f+72|0;a[q>>0]=d[q>>0]&253;q=Gp(f)|0;c[K>>2]=q;a[(c[f+(b[F>>1]<<2)+120>>2]|0)+1>>0]=0;a[J>>0]=0}}}else q=s}else q=c[f+68>>2]|0;while(0);i=L;return q|0}function Fm(f){f=f|0;var g=0,h=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=i;i=i+16|0;if((i|0)>=(j|0))ba();y=z+4|0;q=z+8|0;l=z;m=(c[f>>2]|0)+4|0;s=c[m>>2]|0;w=f+76|0;x=b[w>>1]|0;u=x<<16>>16;p=b[f+(u<<1)+78>>1]|0;v=p&65535;r=c[f+(u<<2)+120>>2]|0;do if((p&65535)<(e[r+18>>1]|0)?(a[f+73>>0]|0)==1:0){p=v<<1;t=c[r+64>>2]|0;p=(c[r+56>>2]|0)+((d[t+p>>0]<<8|d[t+(p|1)>>0])&e[r+20>>1])|0;t=r+5|0;if((a[t>>0]|0)==0?(c[l>>2]=0,k=Am(f,l)|0,c[y>>2]=k,(k|0)!=0):0){g=k;break}k=Hn(s,c[f+60>>2]|0,f)|0;c[y>>2]=k;if(!k){if((c[f+16>>2]|0)==0?(o=f+24|0,n=c[o>>2]|0,o=c[o+4>>2]|0,h=c[(c[m>>2]|0)+8>>2]|0,(h|0)!=0):0)do{if((a[h+72>>0]&16)!=0?(m=h+24|0,(c[m>>2]|0)==(n|0)?(c[m+4>>2]|0)==(o|0):0):0)a[h+73>>0]=0;h=c[h+8>>2]|0}while((h|0)!=0);h=Cg(c[r+68>>2]|0)|0;c[y>>2]=h;if(!h){c[y>>2]=Dp(r,p,q)|0;Ep(r,v,e[q>>1]|0,y);h=c[y>>2]|0;if(!h){if((a[t>>0]|0)==0?(p=c[f+(b[w>>1]<<2)+120>>2]|0,o=c[(c[f+(u+1<<2)+120>>2]|0)+72>>2]|0,l=c[p+56>>2]|0,q=p+18|0,m=e[q>>1]<<1,g=c[p+64>>2]|0,m=(d[g+(m+-2)>>0]<<8|d[g+(m+-1)>>0])&e[p+20>>1],g=(Hp(p,l+m|0)|0)&65535,n=c[s+80>>2]|0,c[y>>2]=Cg(c[p+68>>2]|0)|0,Fp(r,v,l+(m+-4)|0,g+4|0,n,o,y),Ep(p,(e[q>>1]|0)+-1|0,g,y),g=c[y>>2]|0,(g|0)!=0):0)break;g=Gp(f)|0;c[y>>2]=g;if(!g){g=b[w>>1]|0;if(g<<16>>16>x<<16>>16){do{h=g+-1<<16>>16;b[w>>1]=h;g=c[f+(g<<16>>16<<2)+120>>2]|0;if(!g)g=h;else{xg(c[g+68>>2]|0);g=b[w>>1]|0}}while(g<<16>>16>x<<16>>16);g=Gp(f)|0;c[y>>2]=g;if(g)break}mm(f)|0;g=0}}else g=h}else g=h}else g=k}else g=1;while(0);i=z;return g|0}function Gm(f,g,k,l){f=f|0;g=g|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+64|0;if((i|0)>=(j|0))ba();J=L+40|0;p=L+56|0;H=L;n=L+52|0;I=L+48|0;s=c[k+8>>2]|0;K=c[k>>2]|0;do if(!l){l=a[g>>0]|0;if(l<<24>>24>-1){l=l&255;c[p>>2]=l;m=1}else{m=im(g,p)|0;l=c[p>>2]|0}if(l>>>0>f>>>0){c[J>>2]=68267;c[J+4>>2]=10788;Zc(11,13600,J);a[k+7>>0]=11;m=0;break}else{G=l;p=l;l=0;n=m&255;o=15;break}}else{l=g+1|0;m=a[l>>0]|0;if(m<<24>>24>-1){l=m&255;c[n>>2]=l;o=1}else{o=im(l,n)|0;l=c[n>>2]|0}m=d[g>>0]|0;c[p>>2]=m;if(l>>>0>11)l=(l+-12|0)>>>1;else l=d[34336+l>>0]|0;G=m;p=l+m|0;l=1;n=(o&255)+1|0;s=s+40|0;o=15}while(0);do if((o|0)==15){w=H+12|0;x=K+4|0;y=H+10|0;z=K+12|0;A=H+32|0;B=H+8|0;D=H+16|0;F=k+7|0;E=k+4|0;v=p;u=n;a:while(1){n=e[s+8>>1]|0;do if(!(n&4)){if(n&8){o=a[g+u>>0]|0;p=o&255;c[I>>2]=p;if((o&255)>11){m=1;o=62;break a}if(!(o<<24>>24)){m=-1;o=62;break a}q=+h[s>>3];km(g+v|0,p,H)|0;if(o<<24>>24==7)r=+h[H>>3];else{m=H;r=+((c[m>>2]|0)>>>0)+4294967296.0*+(c[m+4>>2]|0)}if(rq){m=1;o=62;break a}else break}do if(!(n&2)){o=g+u|0;t=a[o>>0]|0;p=t&255;if(!(n&16)){c[I>>2]=p;m=t<<24>>24!=0&1;break}if(t<<24>>24>-1)c[I>>2]=p;else{im(o,I)|0;p=c[I>>2]|0}if(!(p>>>0>11&(p&1|0)==0)){m=-1;o=62;break a}t=(p+-12|0)>>>1;if((t+v|0)>>>0>f>>>0){o=57;break a}o=c[s+12>>2]|0;m=Vv(g+v|0,c[s+16>>2]|0,(t|0)<(o|0)?t:o)|0;if(m){o=62;break a}m=t-o|0}else{p=g+u|0;o=a[p>>0]|0;if(o<<24>>24>-1){p=o&255;c[I>>2]=p}else{im(p,I)|0;p=c[I>>2]|0}if(p>>>0<12){m=-1;o=62;break a}if(!(p&1)){m=1;o=62;break a}n=(p+-12|0)>>>1;c[w>>2]=n;if((n+v|0)>>>0>f>>>0){o=46;break a}o=c[K+(l<<2)+20>>2]|0;if(o){a[y>>0]=a[x>>0]|0;c[A>>2]=c[z>>2];b[B>>1]=2;c[D>>2]=g+v;m=lp(H,s,o,F)|0;break}t=c[s+12>>2]|0;m=Vv(g+v|0,c[s+16>>2]|0,(n|0)<(t|0)?n:t)|0;if(m){o=62;break a}m=n-t|0}while(0);if(m){o=62;break a}}else{o=a[g+u>>0]|0;p=o&255;c[I>>2]=p;if((o&255)>11){m=1;o=62;break a}if(o<<24>>24==7){m=s;q=+((c[m>>2]|0)>>>0)+4294967296.0*+(c[m+4>>2]|0);km(g+v|0,p,H)|0;r=+h[H>>3];if(rq){m=1;o=62;break a}else break}else if(!(o<<24>>24)){m=-1;o=62;break a}o=g+v|0;switch(p|0){case 1:case 0:{t=a[o>>0]|0;m=((t|0)<0)<<31>>31;break}case 4:{t=d[g+(v+1)>>0]<<16|d[o>>0]<<24|d[g+(v+2)>>0]<<8|d[g+(v+3)>>0];m=((t|0)<0)<<31>>31;break}case 3:{t=d[g+(v+1)>>0]<<8|a[o>>0]<<16|d[g+(v+2)>>0];m=((t|0)<0)<<31>>31;break}case 6:{m=d[g+(v+1)>>0]<<16|d[o>>0]<<24|d[g+(v+2)>>0]<<8|d[g+(v+3)>>0];t=d[g+(v+5)>>0]<<16|d[g+(v+4)>>0]<<24|d[g+(v+6)>>0]<<8|d[g+(v+7)>>0];break}case 2:{t=a[o>>0]<<8|d[g+(v+1)>>0];m=((t|0)<0)<<31>>31;break}case 5:{m=a[o>>0]<<8|d[g+(v+1)>>0];t=d[g+(v+3)>>0]<<16|d[g+(v+2)>>0]<<24|d[g+(v+4)>>0]<<8|d[g+(v+5)>>0];break}default:{m=0;t=p+-8|0}}n=s;o=c[n>>2]|0;n=c[n+4>>2]|0;if((m|0)<(n|0)|(m|0)==(n|0)&t>>>0>>0){m=-1;o=62;break a}if((m|0)>(n|0)|(m|0)==(n|0)&t>>>0>o>>>0){m=1;o=62;break a}}while(0);l=l+1|0;s=s+40|0;if(p>>>0>11)n=(p+-12|0)>>>1;else n=d[34336+p>>0]|0;t=p;o=0;p=0;do{p=p+1|0;t=iw(t|0,o|0,7)|0;o=C}while(((t|0)!=0|(o|0)!=0)&(p|0)<9);v=n+v|0;u=p+u|0;if(u>>>0>=G>>>0){o=70;break}if(v>>>0>f>>>0?1:(l|0)>=(e[E>>1]|0)){o=70;break}}if((o|0)==46){c[J>>2]=68346;c[J+4>>2]=10788;Zc(11,13600,J);a[F>>0]=11;m=0;break}else if((o|0)==57){c[J>>2]=68375;c[J+4>>2]=10788;Zc(11,13600,J);a[F>>0]=11;m=0;break}else if((o|0)==62){m=(a[(c[K+16>>2]|0)+l>>0]|0)==0?m:0-m|0;break}else if((o|0)==70){m=a[k+6>>0]|0;break}}while(0);i=L;return m|0}function Hm(f,g,h,k,l){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var 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;B=i;i=i+16|0;if((i|0)>=(j|0))ba();A=B;y=B+12|0;z=B+8|0;m=b[f+76>>1]|0;o=c[f+(m<<2)+120>>2]|0;x=c[f+4>>2]|0;if(!(b[f+44>>1]|0)){s=o+56|0;m=e[f+(m<<1)+78>>1]<<1;r=c[o+64>>2]|0;np(o,(c[s>>2]|0)+((d[r+m>>0]<<8|d[r+(m|1)>>0])&e[o+20>>1])|0,f+24|0);m=f+72|0;a[m>>0]=d[m>>0]|2;m=s}else m=o+56|0;s=c[f+32>>2]|0;q=f+40|0;n=e[q>>1]|0;r=x+36|0;if((s+n|0)>>>0<=((c[m>>2]|0)+(c[r>>2]|0)|0)>>>0){if(n>>>0>g>>>0){p=(h+g|0)>>>0>n>>>0?n-g|0:h;n=s+g|0;if(l&1){m=Cg(c[o+68>>2]|0)|0;if(!m){gw(n|0,k|0,p|0)|0;m=0}}else{gw(k|0,n|0,p|0)|0;m=0}k=k+p|0;t=0;h=h-p|0}else{t=g-n|0;m=0}a:do if((m|0)==0&(h|0)!=0){m=c[r>>2]|0;w=m+-4|0;n=e[q>>1]|0;q=d[s+(n+1)>>0]<<16|d[s+n>>0]<<24|d[s+(n+2)>>0]<<8|d[s+(n+3)>>0];c[y>>2]=q;s=f+72|0;do if((l|0)!=2?(a[s>>0]&4)==0:0){m=((m+-5+(c[f+36>>2]|0)-n|0)>>>0)/(w>>>0)|0;g=f+64|0;if((m|0)>(c[g>>2]|0)){o=f+20|0;n=ng(c[o>>2]|0,m<<3,0)|0;if(!n){m=7;break}c[g>>2]=m<<1;c[o>>2]=n}bw(c[f+20>>2]|0,0,m<<2|0)|0;a[s>>0]=d[s>>0]|4;m=0}else m=0;while(0);g=a[s>>0]|0;if((g&4)!=0?(v=(t>>>0)/(w>>>0)|0,u=c[(c[f+20>>2]|0)+(v<<2)>>2]|0,(u|0)!=0):0){c[y>>2]=u;p=(t>>>0)%(w>>>0)|0;o=u;q=v}else{p=t;o=q;q=0}if((m|0)==0&(o|0)!=0){u=l&1;v=u<<1^2;u=(u|0)==0;l=f+20|0;while(1){if(g&4)c[(c[l>>2]|0)+(q<<2)>>2]=o;if(p>>>0>>0){r=(p+h|0)>>>0>w>>>0?w-p|0:h;m=vg(c[x>>2]|0,o,z,v)|0;if(!m){g=c[z>>2]|0;n=c[g+4>>2]|0;o=d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|d[n+3>>0];c[y>>2]=o;n=n+(p+4)|0;if(!u){m=Cg(g)|0;if(!m){gw(n|0,k|0,r|0)|0;m=0}}else{gw(k|0,n|0,r|0)|0;m=0}if(!g)p=0;else{xg(g);p=0}}h=h-r|0;k=k+r|0;q=q+1|0}else{g=q+1|0;m=c[(c[l>>2]|0)+(g<<2)>>2]|0;if(!m){m=Ip(x,o,0,y)|0;o=c[y>>2]|0}else{c[y>>2]=m;o=m;m=0}p=p-w|0;q=g}if(!((m|0)==0&(h|0)!=0&(o|0)!=0))break a;g=a[s>>0]|0}}}while(0);if((m|0)==0&(h|0)!=0){c[A>>2]=57357;c[A+4>>2]=10788;Zc(11,13600,A);m=11}}else{c[A>>2]=57202;c[A+4>>2]=10788;Zc(11,13600,A);m=11}i=B;return m|0}function Im(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a>>2]|0;d=a+44|0;ig(e,c[d>>2]|0);a=b+8|0;c[d>>2]=gh(e,c[a>>2]|0)|0;Sc(c[a>>2]|0);c[a>>2]=0;return}function Jm(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();k=r+4|0;p=r;q=e+12|0;if(!(c[q>>2]|0)){h=e+8|0;g=Bm(c[(c[h>>2]|0)+28>>2]|0,0,0,k)|0;c[q>>2]=g;if(!(c[k>>2]|0))g=7;else{b[g+4>>1]=b[(c[(c[h>>2]|0)+28>>2]|0)+6>>1]|0;a[g+7>>0]=0;l=4}}else l=4;if((l|0)==4){o=mg(256,0)|0;if(!o)g=7;else{bw(o|0,0,256)|0;g=c[f>>2]|0;c[p>>2]=g;if(g){n=f+4|0;while(1){h=c[n>>2]|0;if(h)if((g|0)==(h|0))m=0;else m=h+(c[g+4>>2]|0)|0;else m=c[g+4>>2]|0;c[g+4>>2]=0;l=c[o>>2]|0;k=c[p>>2]|0;if(!l)l=o;else{h=o;g=0;do{Jp(e,k,l,p);c[h>>2]=0;g=g+1|0;h=o+(g<<2)|0;l=c[h>>2]|0;k=c[p>>2]|0}while((l|0)!=0);l=h}c[l>>2]=k;c[p>>2]=m;if(!m)break;else g=m}}c[p>>2]=0;g=0;h=0;do{Jp(e,g,c[o+(h<<2)>>2]|0,p);h=h+1|0;g=c[p>>2]|0}while((h|0)!=64);c[f>>2]=g;Sc(o);g=d[(c[q>>2]|0)+7>>0]|0}}i=r;return g|0}function Km(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+64|0;if((i|0)>=(j|0))ba();m=o+40|0;n=o;a[b+56>>0]=1;g=b+64|0;l=b+36|0;k=b+72|0;h=c[(c[k>>2]|0)+24>>2]|0;f=n+0|0;e=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(e|0));f=b+96|0;if(!((c[f>>2]|0)==0?(d=Kp(h,f)|0,(d|0)!=0):0)){d=Jm(g,l)|0;if(!d){g=b+104|0;d=g;Lp(c[f>>2]|0,n,c[(c[k>>2]|0)+12>>2]|0,c[d>>2]|0,c[d+4>>2]|0);d=b+92|0;c[d>>2]=(c[d>>2]|0)+1;d=c[b+44>>2]|0;Mp(n,m,lm(m,d,((d|0)<0)<<31>>31)|0);d=c[l>>2]|0;if(d){f=b+40|0;do{e=d;d=c[d+4>>2]|0;b=c[e>>2]|0;Mp(n,m,lm(m,b,((b|0)<0)<<31>>31)|0);Mp(n,e+8|0,c[e>>2]|0);if(!(c[f>>2]|0))Sc(e)}while((d|0)!=0)}c[l>>2]=0;d=Np(n,g)|0}}i=o;return d|0}function Lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();p=r;g=d;k=c[g>>2]|0;g=c[g+4>>2]|0;q=Mm(b)|0;c[e>>2]=q;h=(q|0)==0;f=h?7:0;h=h^1;if((b|0)>0&h){o=q+12|0;n=a+32|0;m=0;do{h=c[o>>2]|0;l=h+(m*56|0)|0;f=Op(a,l,n,k,g)|0;if(!f){f=Pp(l,p)|0;g=l;k=p;g=fw(c[k>>2]|0,c[k+4>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;k=h+(m*56|0)+8|0;h=k;c[h>>2]=g;c[h+4>>2]=C;if(!f)f=Qp(l)|0}else k=h+(m*56|0)+8|0;g=k;k=c[g>>2]|0;g=c[g+4>>2]|0;m=m+1|0;h=(f|0)==0}while((m|0)<(b|0)&h)}if(!h){Pm(q);c[e>>2]=0}b=d;c[b>>2]=k;c[b+4>>2]=g;i=r;return f|0}function Mm(a){a=a|0;var b=0,d=0;b=2;while(1)if((b|0)<(a|0))b=b<<1;else{d=b;break}b=c[2252]|0;if((b|0)!=0?(hc[b&127](100)|0)!=0:0)b=0;else{a=(d*60|0)+16|0;b=mg(a,((a|0)<0)<<31>>31)|0;if(!b)b=0;else{bw(b|0,0,a|0)|0;c[b>>2]=d;c[b+4>>2]=0;a=b+16|0;c[b+12>>2]=a;c[b+8>>2]=a+(d*56|0)}}return b|0}function Nm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[2252]|0;if((f|0)!=0?(hc[f&127](100)|0)!=0:0){f=0;i=6}else i=3;do if((i|0)==3){f=mg(64,0)|0;if(!f){i=6;break}else{g=f+0|0;h=g+64|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));c[e>>2]=f;c[f+4>>2]=d;c[f>>2]=b;h=c[b+8>>2]|0;g=(c[h+8>>2]|0)+9|0;h=(c[h+4>>2]|0)/2|0;h=(g|0)>(h|0)?g:h;c[f+16>>2]=h;f=b+56|0;g=f;g=fw(h|0,((h|0)<0)<<31>>31|0,c[g>>2]|0,c[g+4>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=C;f=0;break}}while(0);if((i|0)==6){c[e>>2]=f;Pm(d);f=7}return f|0}function Om(a){a=a|0;if(a){Pm(c[a+4>>2]|0);Sc(a)}return}function Pm(a){a=a|0;var b=0,d=0;if((a|0)!=0?(c[a>>2]|0)>0:0){b=a+12|0;d=0;do{Rp((c[b>>2]|0)+(d*56|0)|0);d=d+1|0}while((d|0)<(c[a>>2]|0))}Sc(a);return}function Qm(a,b){a=a|0;b=b|0;var 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;n=c[b>>2]|0;r=b+4|0;c[r>>2]=a;a:do if((n|0)>0){o=b+12|0;p=0;do{l=c[o>>2]|0;j=l+(p*56|0)|0;l=c[l+(p*56|0)+48>>2]|0;if(l){m=c[l>>2]|0;i=c[(c[m+8>>2]|0)+24>>2]|0;e=Qm(m,c[l+4>>2]|0)|0;if(e)break a;k=c[l+16>>2]|0;g=m+48|0;h=c[g>>2]|0;f=m+56|0;if(!h){e=Kp(i,g)|0;i=f;c[i>>2]=0;c[i+4>>2]=0;if(e)break a;h=c[g>>2]|0;g=0;f=0}else{g=c[f>>2]|0;f=c[f+4>>2]|0}c[l+48>>2]=h;l=l+8|0;c[l>>2]=g;c[l+4>>2]=f;l=fw(g|0,f|0,k|0,((k|0)<0)<<31>>31|0)|0;e=m+56|0;c[e>>2]=l;c[e+4>>2]=C;e=Qp(j)|0;if(e)break a}p=p+1|0}while((p|0)<(n|0));e=c[b>>2]|0;q=12}else{e=n;q=12}while(0);if((q|0)==12){f=e+-1|0;b:do if((f|0)>0){j=b+12|0;k=b+8|0;h=e;g=e;i=f;while(1){e=(h|0)/2|0;if((g|0)>(e|0)){g=i-e<<1;e=g;g=g|1}else{g=i<<1;n=c[k>>2]|0;e=c[n+(g<<2)>>2]|0;g=c[n+((g|1)<<2)>>2]|0}f=c[j>>2]|0;if(c[f+(e*56|0)+24>>2]|0){if(c[f+(g*56|0)+24>>2]|0){n=(Sp(c[r>>2]|0,c[f+(e*56|0)+32>>2]|0,c[f+(e*56|0)+20>>2]|0,c[f+(g*56|0)+32>>2]|0,c[f+(g*56|0)+20>>2]|0)|0)<1;e=n?e:g}}else e=g;c[(c[k>>2]|0)+(i<<2)>>2]=e;e=i+-1|0;if((e|0)<=0)break b;g=i;h=c[b>>2]|0;i=e}}while(0);e=d[(c[a+12>>2]|0)+7>>0]|0}return e|0}function Rm(f){f=f|0;var g=0,h=0,i=0,j=0,k=0;i=f+76|0;do{g=b[i>>1]|0;h=c[f+(g<<2)+120>>2]|0;if(a[h+5>>0]|0){g=0;break}j=c[h+56>>2]|0;g=e[f+(g<<1)+78>>1]<<1;k=c[h+64>>2]|0;g=(d[k+g>>0]<<8|d[k+(g|1)>>0])&e[h+20>>1];g=nm(f,d[j+(g+1)>>0]<<16|d[j+g>>0]<<24|d[j+(g+2)>>0]<<8|d[j+(g+3)>>0])|0}while((g|0)==0);return g|0}function Sm(a,b){a=a|0;b=b|0;var 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;q=a+8|0;g=c[(c[q>>2]|0)+4>>2]|0;u=c[a+4>>2]|0;s=a+12|0;e=Qp((c[s>>2]|0)+(g*56|0)|0)|0;if(!e){e=c[s>>2]|0;f=g|1;a=(c[a>>2]|0)+g|0;a:do if((a|0)>1){m=e;n=a;i=c[e+(f*56|0)+32>>2]|0;o=e+((g&65534)*56|0)|0;g=e+(f*56|0)|0;while(1){p=o+24|0;j=o;k=o+32|0;l=o+20|0;e=m;h=n;a=i;while(1){f=h;h=(h|0)/2|0;if(!(c[p>>2]|0)){i=a;break}if(((c[g+24>>2]|0)!=0?(r=Sp(u,c[k>>2]|0,c[l>>2]|0,a,c[g+20>>2]|0)|0,(r|0)>=0):0)?!((r|0)==0&o>>>0>>0):0){t=10;break}i=c[s>>2]|0;a=c[q>>2]|0;c[a+(h<<2)>>2]=(j-i|0)/56|0;g=c[a+((h^1)<<2)>>2]|0;if((f|0)<=3){e=i;break a}else{e=i;a=c[i+(g*56|0)+32>>2]|0;g=i+(g*56|0)|0}}if((t|0)==10){t=0;e=c[s>>2]|0;i=(c[p>>2]|0)==0?a:0}a=c[q>>2]|0;c[a+(h<<2)>>2]=(g-e|0)/56|0;if((f|0)>3){m=e;n=h;o=e+((c[a+((h^1)<<2)>>2]|0)*56|0)|0}else break}}else a=c[q>>2]|0;while(0);c[b>>2]=(c[e+((c[a+4>>2]|0)*56|0)+24>>2]|0)==0&1;e=d[(c[u+12>>2]|0)+7>>0]|0}return e|0}function Tm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=b+4|0;g=c[f>>2]|0;c[g+4>>2]=c[b>>2];b=Hn(g,d,0)|0;if(!b){b=c[(c[f>>2]|0)+8>>2]|0;if(b)do{if(a[b+72>>0]&16)a[b+73>>0]=0;b=c[b+8>>2]|0}while((b|0)!=0);b=Tp(g,d,0,e)|0}return b|0}function Um(f,g,h){f=f|0;g=g|0;h=h|0;var 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;z=i;i=i+32|0;if((i|0)>=(j|0))ba();q=z;y=z+16|0;x=z+12|0;w=z+8|0;c[y>>2]=0;m=c[f+12>>2]|0;if(!g){g=Up(f,h)|0;c[x>>2]=g}else{c[x>>2]=g;r=(c[g+68>>2]|0)+26|0;b[r>>1]=(b[r>>1]|0)+1<<16>>16}l=Cg(c[m+68>>2]|0)|0;c[w>>2]=l;do if(!l){r=m+56|0;p=c[r>>2]|0;A=p+36|0;l=p+37|0;m=p+38|0;p=p+39|0;n=d[l>>0]<<16|d[A>>0]<<24|d[m>>0]<<8|d[p>>0];o=n+1|0;a[A>>0]=o>>>24;a[l>>0]=o>>>16;a[m>>0]=o>>>8;a[p>>0]=o;p=f+22|0;if(b[p>>1]&4){if(!g){m=$k(f,h,x,0)|0;c[w>>2]=m;if(m){k=m;break}g=c[x>>2]|0}m=Cg(c[g+68>>2]|0)|0;c[w>>2]=m;if(m){k=m;break}bw(c[g+56>>2]|0,0,c[(c[g+52>>2]|0)+32>>2]|0)|0}if((a[f+17>>0]|0)!=0?(vp(f,h,2,0,w),k=c[w>>2]|0,(k|0)!=0):0)break;if(n){l=c[r>>2]|0;l=d[l+33>>0]<<16|d[l+32>>0]<<24|d[l+34>>0]<<8|d[l+35>>0];k=$k(f,l,y,0)|0;c[w>>2]=k;if(k)break;k=c[y>>2]|0;o=k+56|0;n=c[o>>2]|0;n=d[n+5>>0]<<16|d[n+4>>0]<<24|d[n+6>>0]<<8|d[n+7>>0];m=(c[f+36>>2]|0)>>>2;if(n>>>0>(m+-2|0)>>>0){c[q>>2]=58627;c[q+4>>2]=10788;Zc(11,13600,q);c[w>>2]=11;k=11;break}if(n>>>0<(m+-8|0)>>>0){k=Cg(c[k+68>>2]|0)|0;c[w>>2]=k;if(k)break;r=c[o>>2]|0;q=n+1|0;a[r+4>>0]=q>>>24;a[r+5>>0]=q>>>16;a[r+6>>0]=q>>>8;a[r+7>>0]=q;r=n<<2;q=c[o>>2]|0;a[q+(r+8)>>0]=h>>>24;a[q+(r+9)>>0]=h>>>16;a[q+(r+10)>>0]=h>>>8;a[q+(r+11)>>0]=h;if((((g|0)!=0?(b[p>>1]&4)==0:0)?(s=c[g+68>>2]|0,t=s+24|0,u=e[t>>1]|0,(u&2|0)!=0):0)?(c[(c[s+16>>2]|0)+96>>2]|0)==0:0)b[t>>1]=u|32;l=f+60|0;k=c[l>>2]|0;do if(!k){g=c[f+44>>2]|0;k=mg(512,0)|0;if(!k){c[l>>2]=0;k=7;break}else{bw(k|0,0,512)|0;c[k>>2]=g;c[l>>2]=k;v=28;break}}else v=28;while(0);if((v|0)==28)if((c[k>>2]|0)>>>0>>0)k=0;else k=Zh(k,h)|0;c[w>>2]=k;break}}else l=0;if(!g){k=$k(f,h,x,0)|0;c[w>>2]=k;if(k)break;g=c[x>>2]|0}k=Cg(c[g+68>>2]|0)|0;c[w>>2]=k;if(!k){k=g+56|0;s=c[k>>2]|0;a[s>>0]=l>>>24;a[s+1>>0]=l>>>16;a[s+2>>0]=l>>>8;a[s+3>>0]=l;k=(c[k>>2]|0)+4|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;k=c[r>>2]|0;a[k+32>>0]=h>>>24;a[k+33>>0]=h>>>16;a[k+34>>0]=h>>>8;a[k+35>>0]=h;k=0}}else k=l;while(0);g=c[x>>2]|0;if(g){a[g>>0]=0;xg(c[g+68>>2]|0)}g=c[y>>2]|0;if(g)xg(c[g+68>>2]|0);i=z;return k|0}function Vm(f,g,h,k,l,m){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,O=0,P=0;P=i;i=i+48|0;if((i|0)>=(j|0))ba();M=P+24|0;D=P;w=P+36|0;N=P+32|0;t=g+72|0;L=c[t>>2]|0;u=c[f>>2]|0;r=c[g+68>>2]|0;s=u+15|0;if((a[s>>0]|0)!=0?(n=Cg(r)|0,(n|0)!=0):0)O=20;else O=3;a:do if((O|0)==3){o=r+24|0;q=b[o>>1]|0;if((q&2)!=0?(Qo(r)|0)!=0:0){n=Ro(r)|0;if(n){O=20;break}q=b[o>>1]|0}if((q&4)==0|(m|0)!=0)p=0;else p=c[r+20>>2]|0;b[o>>1]=q&65531;A=u+204|0;m=Yb[c[8744+132>>2]&63](c[(c[A>>2]|0)+40>>2]|0,l,0)|0;m=el(c[A>>2]|0,l,m)|0;do if(m){b[o>>1]=e[o>>1]|e[m+24>>1]&4;if(!(a[s>>0]|0)){il(m);break}else{Vp(m,(c[u+24>>2]|0)+1|0);break}}while(0);q=c[r+20>>2]|0;Vp(r,l);Po(r);if(a[s>>0]|0){Vp(m,q);xg(m)}do if(p){n=vg(u,p,M,0)|0;if(!n){A=c[M>>2]|0;z=A+24|0;b[z>>1]=e[z>>1]|4;Po(A);xg(A);break}if(p>>>0>(c[u+28>>2]|0)>>>0){O=20;break a}_h(c[u+56>>2]|0,p,c[u+200>>2]|0);O=20;break a}while(0);c[N>>2]=0;c[t>>2]=l;if(h<<24>>24==1|h<<24>>24==5){n=Wp(g)|0;c[N>>2]=n;if(!n)O=25;else break}else{m=c[g+56>>2]|0;m=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0];if(m){vp(f,m,4,l,N);n=c[N>>2]|0;if(!n)O=25;else break}}if((O|0)==25?h<<24>>24==1:0){n=0;break}n=$k(f,k,w,0)|0;c[N>>2]=n;if(!n){z=c[w>>2]|0;A=z+68|0;n=Cg(c[A>>2]|0)|0;c[N>>2]=n;if(n){if(!z)break;xg(c[A>>2]|0);break}b:do if(h<<24>>24==4){n=c[z+56>>2]|0;o=n+1|0;p=n+2|0;m=n+3|0;if((d[o>>0]<<16|d[n>>0]<<24|d[p>>0]<<8|d[m>>0]|0)==(L|0)){a[n>>0]=l>>>24;a[o>>0]=l>>>16;a[p>>0]=l>>>8;a[m>>0]=l;n=0;break}else{c[M>>2]=56060;c[M+4>>2]=10788;Zc(11,13600,M);n=11;break}}else{x=a[z>>0]|0;Xp(z)|0;w=b[z+18>>1]|0;y=w&65535;c:do if(w<<16>>16){g=z+56|0;u=z+20|0;r=z+64|0;v=h<<24>>24==3;w=D+18|0;m=0;while(1){t=c[g>>2]|0;s=m<<1;q=c[r>>2]|0;s=(d[q+s>>0]<<8|d[q+(s|1)>>0])&e[u>>1];q=t+s|0;if(v){np(z,q,D);q=b[w>>1]|0;if((q<<16>>16!=0?(B=(q&65535)+s|0,C=t+(B+3)|0,C>>>0<=((c[g>>2]|0)+(e[u>>1]|0)|0)>>>0):0)?(E=t+B|0,F=t+(B+1)|0,G=t+(B+2)|0,(d[F>>0]<<16|d[E>>0]<<24|d[G>>0]<<8|d[C>>0]|0)==(L|0)):0){q=C;n=E;o=F;p=G;O=40;break}}else{n=t+(s+1)|0;o=t+(s+2)|0;p=t+(s+3)|0;if((d[n>>0]<<16|d[q>>0]<<24|d[o>>0]<<8|d[p>>0]|0)==(L|0)){O=42;break}}m=m+1|0;if((m|0)>=(y|0))break c}if((O|0)==40){a[n>>0]=l>>>24;a[o>>0]=l>>>16;a[p>>0]=l>>>8;a[q>>0]=l;break}else if((O|0)==42){a[q>>0]=l>>>24;a[n>>0]=l>>>16;a[o>>0]=l>>>8;a[p>>0]=l;break}}else m=0;while(0);do if((m|0)==(y|0)){if(h<<24>>24==5?(K=d[z+6>>0]|0,G=c[z+56>>2]|0,H=G+(K+8)|0,I=G+(K+9)|0,J=G+(K+10)|0,K=G+(K+11)|0,(d[I>>0]<<16|d[H>>0]<<24|d[J>>0]<<8|d[K>>0]|0)==(L|0)):0){a[H>>0]=l>>>24;a[I>>0]=l>>>16;a[J>>0]=l>>>8;a[K>>0]=l;break}c[M>>2]=56094;c[M+4>>2]=10788;Zc(11,13600,M);n=11;break b}while(0);a[z>>0]=x;n=0}while(0);c[N>>2]=n;if(z)xg(c[A>>2]|0);if(!n){vp(f,l,h,k,N);n=c[N>>2]|0}}}while(0);if((O|0)==20)c[N>>2]=n;i=P;return n|0}function Wm(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=e+20|0;Pm(c[j>>2]|0);c[j>>2]=0;j=e+59|0;if(a[j>>0]|0){k=0;do{g=e+(k<<6)+76|0;ig(b,c[g>>2]|0);c[g>>2]=0;g=e+(k<<6)+80|0;h=c[g>>2]|0;if(h)do{i=h;h=c[h+4>>2]|0;if(i)Sc(i)}while((h|0)!=0);c[g>>2]=0;h=e+(k<<6)+96|0;g=c[h>>2]|0;if(g){i=c[g>>2]|0;if(i){hc[c[i+4>>2]&127](g)|0;c[g>>2]=0}Sc(g);c[h>>2]=0;g=e+(k<<6)+104|0;c[g>>2]=0;c[g+4>>2]=0}i=e+(k<<6)+112|0;h=c[i>>2]|0;if(h){g=c[h>>2]|0;if(g){hc[c[g+4>>2]&127](h)|0;c[h>>2]=0}Sc(h);c[i>>2]=0;g=e+(k<<6)+120|0;c[g>>2]=0;c[g+4>>2]=0}k=k+1|0}while((k|0)<(d[j>>0]|0))}h=e+36|0;if((c[e+40>>2]|0)==0?(f=c[h>>2]|0,(f|0)!=0):0)do{g=f;f=c[f+4>>2]|0;if(g)Sc(g)}while((f|0)!=0);c[h>>2]=0;c[e+44>>2]=0;a[e+56>>0]=0;c[e+48>>2]=0;c[e+8>>2]=0;f=e+32|0;ig(b,c[f>>2]|0);c[f>>2]=0;return}function Xm(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();k=r+4|0;o=r;p=c[d>>2]|0;m=c[d+8>>2]|0;n=c[p+16>>2]|0;l=(c[n+(m<<4)+12>>2]|0)+78|0;b[l>>1]=e[l>>1]&65531;l=p+65|0;do if(!(a[l>>0]|0))if(g){q=g+4|0;f=c[q>>2]|0;if(!f){Yp(d,c[g>>2]|0,0);h=0;break}h=g+8|0;s=c[h>>2]|0;if((s|0)!=0?(a[s>>0]|0)!=0:0){n=p+144|0;a[n>>0]=m;c[k>>2]=0;zn(f,k)|0;f=c[h>>2]|0;c[p+140>>2]=c[k>>2];q=p+146|0;a[q>>0]=0;eh(p,f,-1,0,0,o,0)|0;f=c[p+52>>2]|0;a[n>>0]=0;do if((f|0)!=0?(a[q>>0]|0)==0:0){c[d+12>>2]=f;if((f|0)==7){a[l>>0]=1;break}else if((f|0)==9)break;if((f&255|0)!=6){q=c[g>>2]|0;Yp(d,q,Oe(p)|0)}}while(0);id(c[o>>2]|0)|0;h=0;break}f=c[g>>2]|0;if(!f){Yp(d,0,0);h=0;break}f=Zp(p,f,c[n+(m<<4)>>2]|0)|0;if((f|0)!=0?(zn(c[q>>2]|0,f+40|0)|0)==0:0){Yp(d,c[g>>2]|0,13528);h=0}else h=0}else h=0;else{Yp(d,c[g>>2]|0,0);h=1}while(0);i=r;return h|0}function Ym(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();k=m;l=m+8|0;h=b+16|0;f=c[h>>2]|0;g=c[(c[f+(d<<4)+12>>2]|0)+32>>2]|0;if(g){f=g;do{_p(c[f+8>>2]|0);f=c[f>>2]|0}while((f|0)!=0);f=c[h>>2]|0}c[l>>2]=b;f=c[f+(d<<4)>>2]|0;c[l+4>>2]=f;do if(!(Wh(b,13384,f)|0))e=1;else{c[k>>2]=f;f=qh(b,13400,k)|0;if((f|0)!=0?(e=Me(b,f,23,l,0)|0,ig(b,f),(e|0)!=7):0)break;a[b+65>>0]=1;e=7}while(0);i=m;return e|0}function Zm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=c[b+12>>2]|0;if(!j){h=b+4|0;g=b+8|0;i=0}else{h=a[e>>0]|0;if(!(h<<24>>24))h=0;else{g=e;i=h;h=0;do{g=g+1|0;h=h<<3^h^(d[9328+(i&255)>>0]|0);i=a[g>>0]|0}while(i<<24>>24!=0)}i=(h>>>0)%((c[b>>2]|0)>>>0)|0;h=j+(i<<3)|0;g=j+(i<<3)+4|0}h=c[h>>2]|0;g=c[g>>2]|0;c[f>>2]=i;a:do if(!h)g=0;else while(1){h=h+-1|0;if(!($c(c[g+12>>2]|0,e)|0))break a;if(!h){g=0;break}else g=c[g>>2]|0}while(0);return g|0}function _m(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))ba();t=u;s=u+12|0;a:do if((g|0)>0){q=b+16|0;r=b+4|0;p=(e|0)==0;h=f;e=g;while(1){m=e+-1|0;if(!(c[q>>2]|0))break a;if((h|0)<1){h=e;e=5;break}if(aq(b,h)|0)break a;if(vg(c[r>>2]|0,h,s,0)|0){e=8;break}n=c[s>>2]|0;o=c[n+4>>2]|0;do if(p)if((m|0)>0?(a[(c[b>>2]|0)+17>>0]|0)!=0:0){$m(b,d[o+1>>0]<<16|d[o>>0]<<24|d[o+2>>0]<<8|d[o+3>>0],4,h);e=m}else e=m;else{l=d[o+5>>0]<<16|d[o+4>>0]<<24|d[o+6>>0]<<8|d[o+7>>0];k=c[b>>2]|0;if(a[k+17>>0]|0){$m(b,h,2,0);k=c[b>>2]|0}if((l|0)>(((c[k+36>>2]|0)/4|0)+-2|0)){c[t>>2]=h;bn(b,44640,t);e=e+-2|0;break}b:do if((l|0)>0){e=0;while(1){h=e<<2;h=d[o+(h+9)>>0]<<16|d[o+(h+8)>>0]<<24|d[o+(h+10)>>0]<<8|d[o+(h+11)>>0];if(a[k+17>>0]|0)$m(b,h,2,0);aq(b,h)|0;e=e+1|0;if((e|0)==(l|0))break b;k=c[b>>2]|0}}while(0);e=m-l|0}while(0);h=d[o+1>>0]<<16|d[o>>0]<<24|d[o+2>>0]<<8|d[o+3>>0];if(n)xg(n);if((e|0)<=0)break a}if((e|0)==5){c[t>>2]=h;c[t+4>>2]=g;c[t+8>>2]=f;bn(b,44552,t);break}else if((e|0)==8){c[t>>2]=h;bn(b,44616,t);break}}while(0);i=u;return}function $m(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;if((i|0)>=(j|0))ba();l=n;h=n+24|0;k=n+20|0;g=dp(c[b>>2]|0,d,h,k)|0;if((g|0)==7|(g|0)==3082){c[b+24>>2]=1;m=3}else if(!g){h=a[h>>0]|0;g=c[k>>2]|0;if(!((g|0)==(f|0)?h<<24>>24==e<<24>>24:0)){c[l>>2]=d;c[l+4>>2]=e&255;c[l+8>>2]=f;c[l+12>>2]=h&255;c[l+16>>2]=g;bn(b,44496,l)}}else m=3;if((m|0)==3){c[l>>2]=d;bn(b,44464,l)}i=n;return}function an(f,g,h,k){f=f|0;g=g|0;h=h|0;k=k|0;var 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,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=i;i=i+64|0;if((i|0)>=(j|0))ba();S=Z+40|0;o=Z+56|0;N=Z+32|0;O=Z+24|0;K=Z;X=N;c[X>>2]=0;c[X+4>>2]=0;X=O;c[X>>2]=0;c[X+4>>2]=0;X=f+28|0;Y=c[X>>2]|0;T=f+32|0;U=c[T>>2]|0;V=f+36|0;W=c[V>>2]|0;P=c[f>>2]|0;J=P+36|0;Q=c[J>>2]|0;if((g|0)!=0?(aq(f,g)|0)==0:0){c[X>>2]=43768;c[T>>2]=g;p=$k(P,g,o,0)|0;do if(!p){R=c[o>>2]|0;a[R>>0]=0;p=Xp(R)|0;if(p){c[S>>2]=p;bn(f,43824,S);if(!R){l=-1;break}xg(c[R+68>>2]|0);l=-1;break}w=f+16|0;L=R+18|0;p=b[L>>1]|0;a:do if(!(p<<16>>16)){q=R+5|0;p=0;l=0}else{x=R+56|0;y=R+20|0;z=R+64|0;A=K+12|0;B=R+2|0;C=K+16|0;D=Q+-5|0;E=Q+-4|0;F=P+17|0;G=R+5|0;t=0;u=0;while(1){if(!(c[w>>2]|0)){q=G;l=t;break a}c[X>>2]=43864;c[T>>2]=g;c[V>>2]=u;o=c[x>>2]|0;p=u<<1;q=c[z>>2]|0;p=(d[q+p>>0]<<8|d[q+(p|1)>>0])&e[y>>1];q=o+p|0;np(R,q,K);r=c[A>>2]|0;if(a[B>>0]|0){l=K;v=c[l>>2]|0;l=c[l+4>>2]|0;if(u){n=O;m=c[n>>2]|0;n=c[n+4>>2]|0;if(!((l|0)>(n|0)|(l|0)==(n|0)&v>>>0>m>>>0)){s=S;c[s>>2]=v;c[s+4>>2]=l;s=S+8|0;c[s>>2]=m;c[s+4>>2]=n;bn(f,43896,S)}}else{m=O;c[m>>2]=v;c[m+4>>2]=l;m=N;c[m>>2]=v;c[m+4>>2]=l}m=O;c[m>>2]=v;c[m+4>>2]=l}v=c[C>>2]|0;l=v&65535;if(r>>>0>l>>>0?(H=(v>>>16)+p|0,I=o+H|0,I>>>0<=((c[x>>2]|0)+(c[J>>2]|0)|0)>>>0):0){v=d[o+(H+1)>>0]<<16|d[I>>0]<<24|d[o+(H+2)>>0]<<8|d[o+(H+3)>>0];if(a[F>>0]|0)$m(f,v,3,g);_m(f,0,v,((D+r-l|0)>>>0)/(E>>>0)|0)}if(!(a[G>>0]|0)){s=d[o+(p+1)>>0]<<16|d[q>>0]<<24|d[o+(p+2)>>0]<<8|d[o+(p+3)>>0];if(a[F>>0]|0)$m(f,s,5,g);l=an(f,s,N,(u|0)==0?0:O)|0;if(!((u|0)<1|(l|0)==(t|0)))bn(f,43944,S)}else l=t;u=u+1|0;p=b[L>>1]|0;if((u|0)>=(p&65535|0)){q=G;break}else t=l}}while(0);if(!(a[q>>0]|0)){o=d[R+6>>0]|0;G=c[R+56>>2]|0;o=d[G+(o+9)>>0]<<16|d[G+(o+8)>>0]<<24|d[G+(o+10)>>0]<<8|d[G+(o+11)>>0];c[X>>2]=43976;c[T>>2]=g;if(a[P+17>>0]|0){$m(f,o,5,g);p=b[L>>1]|0}an(f,o,0,p<<16>>16!=0?O:0)|0;G=a[q>>0]|0;c[X>>2]=43768;c[T>>2]=g;if(G<<24>>24)M=34}else{c[X>>2]=43768;c[T>>2]=g;M=34}do if((M|0)==34?(a[R+2>>0]|0)!=0:0){o=(k|0)!=0;if(!h){if(!o)break;o=N;p=c[o>>2]|0;o=c[o+4>>2]|0;m=k;n=c[m>>2]|0;m=c[m+4>>2]|0;if((o|0)>(m|0)|(o|0)==(m|0)&p>>>0>n>>>0)break;G=S;c[G>>2]=p;c[G+4>>2]=o;G=S+8|0;c[G>>2]=n;c[G+4>>2]=m;bn(f,44200,S);break}if(!o){p=O;o=c[p>>2]|0;p=c[p+4>>2]|0;m=h;n=c[m>>2]|0;m=c[m+4>>2]|0;if(!((p|0)>(m|0)|(p|0)==(m|0)&o>>>0>n>>>0))break;G=S;c[G>>2]=o;c[G+4>>2]=p;G=S+8|0;c[G>>2]=n;c[G+4>>2]=m;bn(f,44008,S);break}o=N;p=c[o>>2]|0;o=c[o+4>>2]|0;m=h;n=c[m>>2]|0;m=c[m+4>>2]|0;if(!((o|0)>(m|0)|(o|0)==(m|0)&p>>>0>n>>>0)){G=S;c[G>>2]=p;c[G+4>>2]=o;G=S+8|0;c[G>>2]=n;c[G+4>>2]=m;bn(f,44072,S)}n=O;m=c[n>>2]|0;n=c[n+4>>2]|0;o=k;p=c[o>>2]|0;o=c[o+4>>2]|0;if((n|0)>(o|0)|(n|0)==(o|0)&m>>>0>p>>>0){G=S;c[G>>2]=m;c[G+4>>2]=n;n=S+8|0;c[n>>2]=p;c[n+4>>2]=o;bn(f,44136,S);n=O;m=c[n>>2]|0;n=c[n+4>>2]|0}G=h;c[G>>2]=m;c[G+4>>2]=n}while(0);t=c[R+56>>2]|0;u=d[R+6>>0]|0;v=Co(c[P+32>>2]|0)|0;c[X>>2]=0;if(v){s=((d[t+(u+5)>>0]<<8|d[t+(u+6)>>0])+65535&65535)+1|0;bw(v+s|0,0,Q-s|0)|0;bw(v|0,1,s|0)|0;s=d[t+(u+3)>>0]<<8|d[t+(u+4)>>0];n=u+12-(d[q>>0]<<2)|0;if(s){m=Q+-4|0;r=0;do{q=n+(r<<1)|0;q=d[t+q>>0]<<8|d[t+(q+1)>>0];if((q|0)>(m|0))o=65536;else o=(Hp(R,t+q|0)|0)&65535;p=o+q|0;if((p|0)<=(Q|0)){if(o)do{p=p+-1|0;G=v+p|0;a[G>>0]=(a[G>>0]|0)+1<<24>>24}while((p|0)>(q|0))}else{c[X>>2]=0;c[S>>2]=r;c[S+4>>2]=g;bn(f,44264,S)}r=r+1|0}while((r|0)<(s|0))}m=d[t+(u+1)>>0]<<8|d[t+(u+2)>>0];if(m)do{n=d[t+(m+2)>>0]<<8|d[t+(m+3)>>0];if(n){n=n+m|0;do{n=n+-1|0;G=v+n|0;a[G>>0]=(a[G>>0]|0)+1<<24>>24}while((n|0)>(m|0))}m=d[t+m>>0]<<8|d[t+(m+1)>>0]}while((m|0)!=0);b:do if((Q|0)>0){n=0;m=0;while(1){o=a[v+m>>0]|0;if(o<<24>>24){if(o<<24>>24>1)break}else n=n+1|0;m=m+1|0;if((m|0)>=(Q|0))break b}c[S>>2]=m;c[S+4>>2]=g;bn(f,44312,S)}else n=0;while(0);m=d[t+(u+7)>>0]|0;if((n|0)!=(m|0)){c[S>>2]=n;c[S+4>>2]=m;c[S+8>>2]=g;bn(f,44352,S)}}else c[f+24>>2]=1;Xk(v);if(R)xg(c[R+68>>2]|0)}else{c[S>>2]=p;bn(f,43784,S);l=-1}while(0);c[X>>2]=Y;c[T>>2]=U;c[V>>2]=W;l=l+1|0}else l=0;i=Z;return l|0}function bn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+224|0;if((i|0)>=(j|0))ba();h=m;k=m+8|0;l=m+24|0;f=b+16|0;g=c[f>>2]|0;if(g){c[f>>2]=g+-1;f=b+20|0;c[f>>2]=(c[f>>2]|0)+1;c[k>>2]=e;e=b+40|0;if(c[b+52>>2]|0)Ok(e,43760,1);f=c[b+28>>2]|0;if(f){g=c[b+36>>2]|0;c[h>>2]=c[b+32>>2];c[h+4>>2]=g;Yc(200,l,f,h)|0;f=l;while(1)if(!(a[f>>0]|0))break;else f=f+1|0;Ok(e,l,f-l&1073741823)}og(e,1,d,k);if((a[b+65>>0]|0)==1)c[b+24>>2]=1}i=m;return}function cn(b){b=b|0;var d=0,e=0;d=b+8|0;e=c[d>>2]|0;do if((e|0)!=(c[b+4>>2]|0))if((a[b+24>>0]|0)==1){ig(c[b>>2]|0,e);break}else{Sc(e);break}while(0);c[d>>2]=0;return}function dn(d){d=d|0;var f=0,g=0,h=0,i=0;g=c[d+32>>2]|0;i=d+8|0;if(!((b[i>>1]&9312)==0?(c[d+24>>2]|0)==0:0))Mg(d);f=ih(g,64,0)|0;h=d+20|0;c[h>>2]=f;if(!(a[g+65>>0]|0)){do if(!g)f=hc[c[8744+48>>2]&127](f)|0;else{if((c[g+276>>2]|0)>>>0<=f>>>0?(c[g+280>>2]|0)>>>0>f>>>0:0){f=e[g+248>>1]|0;break}f=hc[c[8744+48>>2]&127](f)|0}while(0);c[d+24>>2]=f;h=c[h>>2]|0;c[h>>2]=0;c[h+4>>2]=g;c[h+8>>2]=0;c[h+12>>2]=0;c[h+20>>2]=0;c[h+16>>2]=h+32;b[h+24>>1]=(f+1048544|0)>>>4;b[h+26>>1]=1;c[h+28>>2]=0;c[d>>2]=h;b[i>>1]=32}else{b[i>>1]=1;c[d+24>>2]=0}return}function en(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;i=kn(a)|0;if(i){j=i;c[j>>2]=d;c[j+4>>2]=f;c[i+8>>2]=0;j=a+12|0;h=c[j>>2]|0;if(!h)c[a+8>>2]=i;else{a=a+26|0;g=e[a>>1]|0;if((g&1|0)!=0?(k=h,l=c[k+4>>2]|0,!((l|0)<(f|0)|((l|0)==(f|0)?(c[k>>2]|0)>>>0>>0:0))):0)b[a>>1]=g&65534;c[h+8>>2]=i}c[j>>2]=i}return}function fn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+160|0;if((i|0)>=(j|0))ba();g=h;bw(g|0,0,160)|0;a:do if(!a){a=0;b=0}else{b=0;while(1){d=a+8|0;f=c[d>>2]|0;c[d>>2]=0;if(!b)b=g;else{d=b;b=g;e=0;do{a=hn(d,a)|0;c[b>>2]=0;e=e+1|0;b=g+(e<<2)|0;d=c[b>>2]|0}while((d|0)!=0)}c[b>>2]=a;if(!f){a=0;b=0;break a}a=f;b=c[g>>2]|0}}while(0);do{a=hn(a,c[g+(b<<2)>>2]|0)|0;b=b+1|0}while((b|0)!=40);i=h;return a|0}function gn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;f=c[a+12>>2]|0;if(!f)c[b>>2]=a;else{gn(f,b,e);c[(c[e>>2]|0)+8>>2]=a}e=a+8|0;f=c[e>>2]|0;if(!f)c[d>>2]=a;else gn(f,e,d);i=g;return}function hn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;d=(a|0)!=0;a:do if(d&(b|0)!=0){e=a;a=l;while(1){h=e;g=c[h>>2]|0;h=c[h+4>>2]|0;while(1){f=b;d=c[f>>2]|0;f=c[f+4>>2]|0;if((h|0)<(f|0)|(h|0)==(f|0)&g>>>0>>0){k=4;break}if(!((f|0)<(h|0)|(f|0)==(h|0)&d>>>0>>0))break;c[a+8>>2]=b;d=c[b+8>>2]|0;if(!d){f=0;d=1;break a}else{a=b;b=d}}if((k|0)==4){k=0;c[a+8>>2]=e;a=e}e=c[e+8>>2]|0;d=(e|0)!=0;if(!(d&(b|0)!=0)){f=b;b=a;break}}}else{f=b;e=a;b=l}while(0);c[b+8>>2]=d?e:f;i=m;return c[l+8>>2]|0}function jn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;d=a+8|0;b=c[d>>2]|0;c[e>>2]=b;c[d>>2]=0;c[a+12>>2]=0;if(!b)b=a;else{d=1;while(1){g=b+8|0;c[e>>2]=c[g>>2];c[b+12>>2]=a;c[g>>2]=bq(e,d)|0;a=c[e>>2]|0;if(!a)break;else{g=b;b=a;d=d+1|0;a=g}}}i=f;return b|0}function kn(a){a=a|0;var d=0,e=0,f=0,g=0;f=a+24|0;d=b[f>>1]|0;if(!(d<<16>>16)){d=ih(c[a+4>>2]|0,1016,0)|0;if(!d)d=0;else{c[d>>2]=c[a>>2];c[a>>2]=d;d=d+8|0;c[a+16>>2]=d;b[f>>1]=63;e=62;g=5}}else{e=d+-1<<16>>16;d=c[a+16>>2]|0;g=5}if((g|0)==5){b[f>>1]=e;c[a+16>>2]=d+16}return d|0}function ln(d){d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();p=q;g=d+4|0;if(a[g>>0]|0){e=mn(d)|0;if(!e){m=a[g>>0]|0;f=4}}else{m=0;f=4}do if((f|0)==4){h=c[d>>2]|0;n=c[d+60>>2]|0;k=c[d+212>>2]|0;e=d+160|0;f=c[e>>2]|0;e=c[e+4>>2]|0;l=d+208|0;c[l>>2]=0;g=(c[h+4>>2]|0)+112|0;o=mg(g,0)|0;if(!o)e=7;else{bw(o|0,0,g|0)|0;c[o>>2]=h;r=o+112|0;g=o+8|0;c[g>>2]=r;c[o+4>>2]=n;b[o+40>>1]=-1;d=o+16|0;c[d>>2]=f;c[d+4>>2]=e;c[o+100>>2]=k;d=o+48|0;a[d>>0]=1;f=o+49|0;a[f>>0]=1;a[o+43>>0]=m<<24>>24!=0?2:0;c[p>>2]=524294;e=pc[c[h+24>>2]&31](h,k,r,524294,p)|0;if(e){cq(o,0);f=c[g>>2]|0;g=c[f>>2]|0;if(g){hc[c[g+4>>2]&127](f)|0;c[f>>2]=0}Sc(o);break}if(c[p>>2]&1)a[o+46>>0]=1;g=hc[c[(c[n>>2]|0)+48>>2]&127](n)|0;if(g&1024)a[d>>0]=0;if(g&4096)a[f>>0]=0;c[l>>2]=o;e=0}}while(0);i=q;return e|0}function mn(b){b=b|0;var d=0,e=0,f=0;f=bl(b,4)|0;if((f|0)!=0?(d=c[b+60>>2]|0,e=c[d>>2]|0,(e|0)!=0):0){if(!(a[b+13>>0]|0))nc[c[e+32>>2]&127](d,1)|0;d=b+17|0;if((a[d>>0]|0)!=5)a[d>>0]=1}return f|0}function nn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;if(!b)g=0;else{k=b+4|0;g=c[k>>2]|0;g=nc[c[(c[g>>2]|0)+28>>2]&127](g,4)|0;if(!g){h=b+43|0;if(!(a[h>>0]|0))a[h>>0]=1;g=Pn(b,0,0,0,d,e,f,0,0)|0;if(!g){c[l>>2]=-1;g=c[k>>2]|0;Yb[c[(c[g>>2]|0)+40>>2]&63](g,10,l)|0;if((c[l>>2]|0)==1){g=b+16|0;d=c[g+4>>2]|0;if((d|0)>-1|(d|0)==-1&(c[g>>2]|0)>>>0>4294967295){Vo(b,0,0);e=0;g=0}else{e=0;g=0}}else{e=1;g=0}}else e=0}else e=0;cq(b,e);d=c[b+8>>2]|0;h=c[d>>2]|0;if(h){hc[c[h+4>>2]&127](d)|0;c[d>>2]=0}if(e){d=c[3164]|0;if(d)jc[d&3]();d=c[b>>2]|0;Yb[c[d+28>>2]&63](d,c[b+100>>2]|0,0)|0;d=c[3166]|0;if(d)jc[d&3]()}Sc(c[b+32>>2]|0);Sc(b)}i=m;return g|0}function on(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=b+5|0;g=a[k>>0]|0;if(!((a[b+15>>0]|0)!=0?!((e|0)==2|(e|0)==4):0))h=3;do if(((h|0)==3?(f=g&255,(f|0)!=(e|0)):0)?(a[k>>0]=e,(a[b+4>>0]|0)==0&(f&5|0)==1&(e&1|0)==0):0){f=c[b+64>>2]|0;g=c[f>>2]|0;if(g){hc[c[g+4>>2]&127](f)|0;c[f>>2]=0}j=b+17|0;if((d[j>>0]|0)>1){f=c[b>>2]|0;Yb[c[f+28>>2]&63](f,c[b+172>>2]|0,0)|0;break}g=b+16|0;f=a[g>>0]|0;i=f<<24>>24==0;if(i){e=_k(b)|0;h=a[g>>0]|0}else{h=f;e=0}if(h<<24>>24==1)e=bl(b,2)|0;if((e|0)==0?(g=c[b>>2]|0,Yb[c[g+28>>2]&63](g,c[b+172>>2]|0,0)|0,f<<24>>24==1):0){g=c[b+60>>2]|0;f=c[g>>2]|0;if(!f)break;if(!(a[b+13>>0]|0))nc[c[f+32>>2]&127](g,1)|0;if((a[j>>0]|0)==5)break;a[j>>0]=1;break}if(i)Jo(b)}while(0);return d[k>>0]|0}function pn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;e=g+4|0;do if(d)if(!(eh(a,d,-1,0,0,e,0)|0)){e=c[e>>2]|0;Od(e)|0;a=dq(a,e,b)|0;break}else{$g(b,a,Oe(a)|0,f);a=Jf(a)|0;break}else a=7;while(0);i=g;return a|0}function qn(a){a=a|0;var b=0;c[(c[a+4>>2]|0)+4>>2]=c[a>>2];b=Gg(a,0)|0;if(!b)b=Fg(a,0)|0;return b|0}function rn(e,f){e=e|0;f=f|0;var g=0,h=0;g=c[e+4>>2]|0;c[g+4>>2]=c[e>>2];e=f&255;if(b[g+22>>1]&2){f=g+17|0;if(((e|0)!=0|0)==(d[f>>0]|0|0))h=4;else f=8}else{f=g+17|0;h=4}if((h|0)==4){a[f>>0]=(e|0)!=0&1;a[g+18>>0]=(e|0)==2&1;f=0}return f|0}function sn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;d=eh(a,d,-1,0,0,e,0)|0;do if(!d){e=c[e>>2]|0;while(1){if((Od(e)|0)!=100){f=6;break}d=pn(a,b,be(e,0)|0)|0;if(d){f=5;break}}if((f|0)==5){dq(a,e,b)|0;break}else if((f|0)==6){d=dq(a,e,b)|0;break}}while(0);i=g;return d|0}function tn(a){a=a|0;var b=0;b=a+100|0;c[b>>2]=(c[b>>2]|0)+1;b=c[a+88>>2]|0;if(b)do{c[b+16>>2]=1;b=c[b+44>>2]|0}while((b|0)!=0);$o(c[a+204>>2]|0,0);return}function un(a){a=a|0;var b=0,d=0,e=0;e=a+304|0;b=c[e>>2]|0;if(!((b|0)%5|0)){b=(b<<2)+20|0;d=a+328|0;b=no(a,c[d>>2]|0,b,((b|0)<0)<<31>>31)|0;if(!b)b=7;else{a=b+(c[e>>2]<<2)|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[d>>2]=b;b=0}}else b=0;return b|0}function vn(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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=i;i=i+16|0;if((i|0)>=(j|0))ba();w=z;r=z+8|0;u=z+4|0;l=f+56|0;s=c[l>>2]|0;t=c[f+52>>2]|0;c[u>>2]=0;c[w>>2]=c[f>>2];y=qh(e,10344,w)|0;do if(!y)l=7;else{v=ih(e,28,0)|0;if(!v){ig(e,y);l=7;break}p=v+0|0;o=p+28|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(o|0));c[v>>2]=e;c[v+4>>2]=g;q=c[f+68>>2]|0;a:do if(q){p=c[e+20>>2]|0;if((p|0)>0){n=c[e+16>>2]|0;m=0;while(1){o=m+1|0;if((c[n+(m<<4)+12>>2]|0)==(q|0)){o=m;break a}if((o|0)<(p|0))m=o;else break}}else o=0}else o=-1e6;while(0);c[(c[l>>2]|0)+4>>2]=c[(c[e+16>>2]|0)+(o<<4)>>2];p=r+4|0;c[p>>2]=f;c[r>>2]=v;q=e+324|0;n=c[q>>2]|0;c[q>>2]=r;o=v+8|0;l=gc[h&7](e,c[g+8>>2]|0,t,s,o,u)|0;c[q>>2]=n;do if(!l){n=c[o>>2]|0;if(n){c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[c[o>>2]>>2]=c[g>>2];c[v+12>>2]=1;if(c[p>>2]|0){c[w>>2]=c[f>>2];c[k>>2]=qh(e,28376,w)|0;wn(v);l=1;break}u=f+60|0;c[v+24>>2]=c[u>>2];c[u>>2]=v;u=f+38|0;l=b[u>>1]|0;if(l<<16>>16>0){t=f+4|0;m=c[t>>2]|0;h=0;while(1){r=c[m+(h*24|0)+12>>2]|0;if(r){n=r;while(1)if(!(a[n>>0]|0))break;else n=n+1|0;o=n-r|0;q=o&1073741823;if((Bc(28424,r,6)|0)==0?(s=a[r+6>>0]|0,s<<24>>24==32|s<<24>>24==0):0)n=0;else x=24;b:do if((x|0)==24){x=0;if(!q)n=0;else{n=0;while(1){if((Bc(28432,r+n|0,7)|0)==0?(s=a[r+(n+7)>>0]|0,s<<24>>24==32|s<<24>>24==0):0)break;n=n+1|0;if((n|0)>=(q|0))break b}n=n+1|0}}while(0);if((n|0)<(q|0)){p=(a[r+(n+6)>>0]|0)!=0|6;m=n+p|0;if((m|0)<=(q|0)){o=(o&1073741823)+1-p|0;l=m;m=n;while(1){a[r+m>>0]=a[r+l>>0]|0;m=m+1|0;if((m|0)==(o|0))break;else l=m+p|0}}if((a[r+n>>0]|0)==0&(n|0)>0)a[r+(n+-1)>>0]=0;m=c[t>>2]|0;l=m+(h*24|0)+23|0;a[l>>0]=d[l>>0]|2;l=b[u>>1]|0}}h=h+1|0;if((h|0)>=(l<<16>>16|0)){l=0;break}}}else l=0}else l=0}else if((l|0)==7){a[e+65>>0]=1;x=11}else x=11;while(0);if((x|0)==11){m=c[u>>2]|0;if(!m){c[w>>2]=y;c[k>>2]=qh(e,28344,w)|0}else{c[w>>2]=m;c[k>>2]=qh(e,10344,w)|0;Sc(c[u>>2]|0)}ig(e,v)}ig(e,y)}while(0);i=z;return l|0}function wn(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;e=a+12|0;d=(c[e>>2]|0)+-1|0;c[e>>2]=d;if(!d){d=c[a+8>>2]|0;if(d)hc[c[(c[d>>2]|0)+16>>2]&127](d)|0;ig(b,a)}return}function xn(f,g){f=f|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;s=f+10|0;i=g<<24>>24==1;if((a[s>>0]|0)==1|i){o=f+12|0;h=c[o>>2]|0;if(i){i=h&-2;c[o>>2]=i;l=i;i=i<<1|1}else{l=h;i=(h<<1)+2|0}p=f+16|0;h=c[p>>2]|0;n=h+l|0;q=f+32|0;r=ih(c[q>>2]|0,i,((i|0)<0)<<31>>31)|0;if(!r)h=7;else{i=a[s>>0]|0;if(i<<24>>24==2)if((l|0)>0){i=r;do{j=d[h>>0]|0;l=h+2|0;m=d[h+1>>0]<<8;k=m|j;if((m&63488|0)==55296&l>>>0>>0){k=(k<<10&983040)+65536|j<<10&64512|d[l>>0]|d[h+3>>0]<<8&768;h=h+4|0}else h=l;do if(k>>>0>=128){if(k>>>0<2048){a[i>>0]=k>>>6&31|192;a[i+1>>0]=k&63|128;i=i+2|0;break}if(k>>>0<65536){a[i>>0]=k>>>12&15|224;a[i+1>>0]=k>>>6&63|128;a[i+2>>0]=k&63|128;i=i+3|0;break}else{a[i>>0]=k>>>18&7|240;a[i+1>>0]=k>>>12&63|128;a[i+2>>0]=k>>>6&63|128;a[i+3>>0]=k&63|128;i=i+4|0;break}}else{a[i>>0]=k;i=i+1|0}while(0)}while(h>>>0>>0);m=55}else{i=r;m=55}else if(i<<24>>24!=1)if((l|0)>0){i=r;do{m=d[h>>0]<<8;l=h+2|0;k=d[h+1>>0]|0;j=m|k;if((m&63488|0)==55296&l>>>0>>0){j=(j<<10&983040)+65536|k<<10&64512|d[h+3>>0]|d[l>>0]<<8&768;h=h+4|0}else h=l;do if(j>>>0>=128){if(j>>>0<2048){a[i>>0]=j>>>6&31|192;a[i+1>>0]=j&63|128;i=i+2|0;break}if(j>>>0<65536){a[i>>0]=j>>>12&15|224;a[i+1>>0]=j>>>6&63|128;a[i+2>>0]=j&63|128;i=i+3|0;break}else{a[i>>0]=j>>>18&7|240;a[i+1>>0]=j>>>12&63|128;a[i+2>>0]=j>>>6&63|128;a[i+3>>0]=j&63|128;i=i+4|0;break}}else{a[i>>0]=j;i=i+1|0}while(0)}while(h>>>0>>0);m=55}else{i=r;m=55}else{i=(l|0)>0;if(g<<24>>24==2)if(i){i=r;l=h;while(1){h=l+1|0;j=a[l>>0]|0;k=j&255;if((j&255)>191){k=d[15360+(k+-192)>>0]|0;a:do if((h|0)==(n|0))h=n;else while(1){j=a[h>>0]|0;if((j&-64)<<24>>24!=-128)break a;l=l+2|0;k=j&63|k<<6;if((l|0)==(n|0)){h=n;break}else{j=h;h=l;l=j}}while(0);if(!(k>>>0<128|(k&-2048|0)==55296|(k&-2|0)==65534))if(k>>>0<65536)m=22;else{l=k+-65536|0;a[i>>0]=l>>>10&192|k>>>10&63;a[i+1>>0]=l>>>18&3|216;a[i+2>>0]=k;a[i+3>>0]=k>>>8&3|220;i=i+4|0}else{k=65533;m=22}}else m=22;if((m|0)==22){m=0;a[i>>0]=k;a[i+1>>0]=k>>>8;i=i+2|0}if(h>>>0>>0)l=h;else break}}else i=r;else if(i){i=r;do{l=h+1|0;k=a[h>>0]|0;j=k&255;if((k&255)>191){j=d[15360+(j+-192)>>0]|0;b:do if((l|0)==(n|0))h=n;else{k=h;h=l;while(1){l=a[h>>0]|0;if((l&-64)<<24>>24!=-128)break b;k=k+2|0;j=l&63|j<<6;if((k|0)==(n|0)){h=n;break}else{l=h;h=k;k=l}}}while(0);if(!(j>>>0<128|(j&-2048|0)==55296|(j&-2|0)==65534))if(j>>>0<65536)m=31;else{l=j+-65536|0;a[i>>0]=l>>>18&3|216;a[i+1>>0]=l>>>10&192|j>>>10&63;a[i+2>>0]=j>>>8&3|220;a[i+3>>0]=j;i=i+4|0}else{j=65533;m=31}}else{h=l;m=31}if((m|0)==31){m=0;a[i>>0]=j>>>8;a[i+1>>0]=j;i=i+2|0}}while(h>>>0>>0)}else i=r;c[o>>2]=i-r;a[i>>0]=0;i=i+1|0}if((m|0)==55)c[o>>2]=i-r;a[i>>0]=0;i=f+8|0;o=b[i>>1]|0;h=o&65535;if(!((o&9312)==0?(c[f+24>>2]|0)==0:0))Mg(f);b[i>>1]=h&29|514;a[s>>0]=g;c[p>>2]=r;c[f+20>>2]=r;h=c[q>>2]|0;do if(!h)h=hc[c[8744+48>>2]&127](r)|0;else{if((c[h+276>>2]|0)>>>0<=r>>>0?(c[h+280>>2]|0)>>>0>r>>>0:0){h=e[h+248>>1]|0;break}h=hc[c[8744+48>>2]&127](r)|0}while(0);c[f+24>>2]=h;h=0}}else if(!(Rl(f)|0)){h=c[f+16>>2]|0;q=c[f+12>>2]&-2;i=h+q|0;if((q|0)>0)do{p=a[h>>0]|0;q=h+1|0;a[h>>0]=a[q>>0]|0;h=h+2|0;a[q>>0]=p}while(h>>>0>>0);a[s>>0]=g;h=0}else h=7;return h|0}function yn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a[b>>0]|0;g=i&255;a:do switch(g|0){case 13:case 12:case 10:case 9:case 32:{f=1;while(1)if(!(a[10368+(d[b+f>>0]|0)>>0]&1))break;else f=f+1|0;c[e>>2]=151;break}case 91:{f=1;while(1){g=a[b+f>>0]|0;if(!(g<<24>>24)){g=g&255;break}f=f+1|0;if(g<<24>>24==93){g=93;break}}c[e>>2]=(g|0)==93?27:150;break}case 37:{c[e>>2]=93;f=1;break}case 61:{c[e>>2]=79;f=(a[b+1>>0]|0)==61?2:1;break}case 62:{f=a[b+1>>0]|0;if(f<<24>>24==61){c[e>>2]=83;f=2;break a}else if(f<<24>>24==62){c[e>>2]=88;f=2;break a}else{c[e>>2]=80;f=1;break a}}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{j=51;break}case 40:{c[e>>2]=22;f=1;break}case 41:{c[e>>2]=23;f=1;break}case 34:case 39:case 96:{g=a[b+1>>0]|0;b:do if(g<<24>>24){f=1;while(1){if(g<<24>>24==i<<24>>24){f=f+1|0;if((a[b+f>>0]|0)!=i<<24>>24)break}f=f+1|0;g=a[b+f>>0]|0;if(!(g<<24>>24))break b}if(i<<24>>24==39){c[e>>2]=97;break a}else{c[e>>2]=27;break a}}else f=1;while(0);c[e>>2]=150;break}case 60:{f=a[b+1>>0]|0;if(f<<24>>24==60){c[e>>2]=87;f=2;break a}else if(f<<24>>24==61){c[e>>2]=81;f=2;break a}else if(f<<24>>24==62){c[e>>2]=78;f=2;break a}else{c[e>>2]=82;f=1;break a}}case 63:{c[e>>2]=135;f=1;while(1)if(((d[b+f>>0]|0)+-48|0)>>>0<10)f=f+1|0;else break;break}case 58:case 35:case 64:case 36:{c[e>>2]=135;g=a[b+1>>0]|0;if(g<<24>>24){f=1;i=0;while(1){if(!(a[10368+(g&255)>>0]&70)){if(g<<24>>24==40&(i|0)>0){g=i;j=78;break}if(g<<24>>24!=58){g=i;break}g=f+1|0;if((a[b+g>>0]|0)==58)f=g;else{g=i;break}}else i=i+1|0;f=f+1|0;g=a[b+f>>0]|0;if(!(g<<24>>24)){g=i;break}}do if((j|0)==78){h=f;while(1){f=h+1|0;i=a[b+f>>0]|0;if(!(i<<24>>24))break;if(i<<24>>24!=41?(a[10368+(i&255)>>0]&1)==0:0)h=f;else{j=81;break}}if((j|0)==81)if(i<<24>>24==41){f=h+2|0;break}c[e>>2]=150}while(0);if(g)break a}else f=1;c[e>>2]=150;break}case 44:{c[e>>2]=26;f=1;break}case 38:{c[e>>2]=85;f=1;break}case 126:{c[e>>2]=96;f=1;break}case 33:if((a[b+1>>0]|0)==61){c[e>>2]=78;f=2;break a}else{c[e>>2]=150;f=2;break a}case 45:{if((a[b+1>>0]|0)==45)f=2;else{c[e>>2]=90;f=1;break a}while(1){g=a[b+f>>0]|0;if(g<<24>>24==0|g<<24>>24==10)break;f=f+1|0}c[e>>2]=151;break}case 88:case 120:{if((a[b+1>>0]|0)==39){c[e>>2]=134;f=2;while(1){g=a[b+f>>0]|0;if(!(a[10368+(g&255)>>0]&8))break;else f=f+1|0}if(g<<24>>24==39&(f&1|0)==0)g=1;else{c[e>>2]=150;while(1){g=a[b+f>>0]|0;if(g<<24>>24==39|g<<24>>24==0)break;f=f+1|0}g=g<<24>>24!=0}f=(g&1)+f|0}else j=98;break}case 59:{c[e>>2]=1;f=1;break}case 43:{c[e>>2]=89;f=1;break}case 124:if((a[b+1>>0]|0)==124){c[e>>2]=94;f=2;break a}else{c[e>>2]=86;f=1;break a}case 42:{c[e>>2]=91;f=1;break}case 47:{if((a[b+1>>0]|0)==42?(f=a[b+2>>0]|0,f<<24>>24!=0):0){f=f&255;g=3;while(1){i=a[b+g>>0]|0;if((f|0)==42&i<<24>>24==47){f=42;break}f=i&255;if(!(i<<24>>24))break;else g=g+1|0}c[e>>2]=151;f=((f|0)!=0&1)+g|0;break a}c[e>>2]=92;f=1;break}case 46:{if(((d[b+1>>0]|0)+-48|0)>>>0<10)j=51;else{c[e>>2]=122;f=1}break}default:j=98}while(0);c:do if((j|0)==51){c[e>>2]=132;f=a[b>>0]|0;if(f<<24>>24==48){g=a[b+1>>0]|0;if(g<<24>>24==88|g<<24>>24==120)if(!(a[10368+(d[b+2>>0]|0)>>0]&8))h=0;else{f=3;while(1)if(!(a[10368+(d[b+f>>0]|0)>>0]&8))break c;else f=f+1|0}else{f=48;h=0}}else h=0;while(1){g=h+1|0;if(((f&255)+-48|0)>>>0>=10){g=h;break}f=a[b+g>>0]|0;h=g}if(f<<24>>24==46){f=g;do{f=f+1|0;g=b+f|0}while(((d[g>>0]|0)+-48|0)>>>0<10);c[e>>2]=133;h=a[g>>0]|0;i=f}else{h=f;i=g}do if(h<<24>>24==69|h<<24>>24==101){g=a[b+(i+1)>>0]|0;if(((g&255)+-48|0)>>>0>=10){if(!(g<<24>>24==45|g<<24>>24==43)){g=h;f=i;break}f=i+2|0;if(((d[b+f>>0]|0)+-48|0)>>>0>=10){g=h;f=i;break}}else f=i+2|0;while(1){g=b+f|0;if(((d[g>>0]|0)+-48|0)>>>0<10)f=f+1|0;else break}c[e>>2]=133;g=a[g>>0]|0}else{g=h;f=i}while(0);if(a[10368+(g&255)>>0]&70)do{c[e>>2]=150;f=f+1|0}while((a[10368+(d[b+f>>0]|0)>>0]&70)!=0)}else if((j|0)==98){if(!(a[10368+g>>0]&70)){c[e>>2]=150;f=1;break}else f=1;while(1)if(!(a[10368+(d[b+f>>0]|0)>>0]&70))break;else f=f+1|0;c[e>>2]=bi(b,f)|0}while(0);return f|0}function zn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=a[b>>0]|0;if(f<<24>>24==45){b=b+1|0;i=1;j=13}else if(f<<24>>24==43){b=b+1|0;i=0;j=13}else if((f<<24>>24==48?(f=a[b+1>>0]|0,f<<24>>24==88|f<<24>>24==120):0)?(g=b+2|0,e=a[g>>0]|0,(a[10368+(e&255)>>0]&8)!=0):0){while(1){f=g+1|0;if(e<<24>>24!=48)break;g=f;e=a[f>>0]|0}if(!(a[10368+(e&255)>>0]&8)){e=0;f=0}else{h=e;b=0;f=0;do{e=h<<24>>24;f=(0-(e>>>6&1)&9)+e&15|f<<4;b=b+1|0;h=a[g+b>>0]|0;e=(a[10368+(h&255)>>0]&8)==0}while((b|0)<8&(e^1));e=e^1}if((f|0)<0|e)e=0;else{c[d>>2]=f;e=1}}else{i=0;j=13}a:do if((j|0)==13){e=0;f=0;h=0;while(1){g=(a[b+h>>0]|0)+-48|0;if(g>>>0>=10)break;f=ow(e|0,f|0,10,0)|0;e=fw(g|0,((g|0)<0)<<31>>31|0,f|0,C|0)|0;h=h+1|0;if((h|0)>=11){e=0;break a}else f=C}g=$v(e|0,f|0,i|0,0)|0;b=C;if((b|0)>0|(b|0)==0&g>>>0>2147483647)e=0;else{if(i)e=$v(0,0,e|0,f|0)|0;c[d>>2]=e;e=1}}while(0);return e|0}function An(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();g=f;c[g>>2]=e;og(a,b,d,g);i=f;return}function Bn(e,f,g,h,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,D=0,E=0,F=0;F=i;i=i+16|0;if((i|0)>=(j|0))ba();D=F;A=F+4|0;c[A>>2]=0;E=ih(e,536,0)|0;a:do if(E){bw(E|0,0,536)|0;c[E+476>>2]=k;r=e+20|0;k=c[r>>2]|0;b:do if((k|0)>0){s=e+16|0;p=0;while(1){q=c[(c[s>>2]|0)+(p<<4)+4>>2]|0;if(q){c[(c[q+4>>2]|0)+4>>2]=c[q>>2];n=Zk(q,1,1)|0;if(n)break;k=c[r>>2]|0}p=p+1|0;if((p|0)>=(k|0))break b}c[D>>2]=c[(c[s>>2]|0)+(p<<4)>>2];qg(e,n,40984,D);p=E;break a}while(0);nl(e);c[E>>2]=e;c[E+424>>2]=0;do if((g|0)>-1){if((g|0)!=0?(a[f+(g+-1)>>0]|0)==0:0){B=21;break}if((c[e+92>>2]|0)<(g|0)){qg(e,18,41016,D);if(!e){p=E;n=18;break a}if(!(a[e+65>>0]|0)){p=E;n=c[e+56>>2]&18;break a}else{Ml(e);p=E;n=7;break a}}else{if((f|0)!=0?(o=fw(g|0,((g|0)<0)<<31>>31|0,1,0)|0,o=ih(e,o,C)|0,(o|0)!=0):0){gw(o|0,f|0,g|0)|0;a[o+g>>0]=0;Hh(E,o,A)|0;ig(e,o);n=E+480|0;c[n>>2]=f+((c[n>>2]|0)-o);break}c[E+480>>2]=f+g;break}}else B=21;while(0);if((B|0)==21)Hh(E,f,A)|0;s=e+65|0;k=E+12|0;if(!(a[s>>0]|0)){p=E+12|0;if((c[k>>2]|0)==101)c[p>>2]=0}else{c[k>>2]=7;p=E+12|0}c:do if((a[E+17>>0]|0)!=0?(t=c[E>>2]|0,u=t+20|0,(c[u>>2]|0)>0):0){o=t+16|0;r=0;while(1){k=c[o>>2]|0;n=c[k+(r<<4)+4>>2]|0;if(n){if(!(a[n+8>>0]|0)){k=ug(n,0)|0;if((k|0)==7|(k|0)==3082)break;else if(k)break c;k=c[o>>2]|0;q=1}else q=0;g=c[n+4>>2]|0;c[g+4>>2]=c[n>>2];g=c[(c[g+12>>2]|0)+56>>2]|0;if((d[g+41>>0]<<16|d[g+40>>0]<<24|d[g+42>>0]<<8|d[g+43>>0]|0)!=(c[c[k+(r<<4)+12>>2]>>2]|0)){rm(t,r);c[p>>2]=17}if(q)qn(n)|0}r=r+1|0;if((r|0)>=(c[u>>2]|0))break c}a[t+65>>0]=1}while(0);if(a[s>>0]|0)c[p>>2]=7;if(m)c[m>>2]=c[E+480>>2];n=c[p>>2]|0;q=(n|0)==0;do if(q?(w=E+8|0,v=c[w>>2]|0,(v|0)!=0):0){p=a[E+450>>0]|0;if(!(p<<24>>24))break;else if(p<<24>>24==2){eq(v,4);o=8;k=12}else{eq(v,8);o=0;k=8}p=o;do{fq(c[w>>2]|0,p-o|0,0,c[41040+(p<<2)>>2]|0,0);p=p+1|0}while((p|0)<(k|0))}while(0);o=E+8|0;if((a[e+145>>0]|0)==0?(z=c[o>>2]|0,x=(c[E+480>>2]|0)-f|0,(z|0)!=0):0){if((f|0)!=0?(w=c[z>>2]|0,y=fw(x|0,((x|0)<0)<<31>>31|0,1,0)|0,y=ih(w,y,C)|0,(y|0)!=0):0){gw(y|0,f|0,x|0)|0;a[y+x>>0]=0;p=y}else p=0;c[z+168>>2]=p;z=z+88|0;b[z>>1]=b[z>>1]&-257|(h&65535)<<8&256}p=c[o>>2]|0;do if(!p)B=60;else{if(q?(a[s>>0]|0)==0:0){B=60;break}Jg(p)|0}while(0);if((B|0)==60)c[l>>2]=p;o=c[A>>2]|0;do if(!o){c[e+52>>2]=n;o=c[e+236>>2]|0;if(o){p=o+8|0;if(!(b[p>>1]&9312)){b[p>>1]=1;break}else{rg(o);break}}}else{c[D>>2]=o;qg(e,n,10344,D);ig(e,o)}while(0);o=E+528|0;p=c[o>>2]|0;if(!p)p=E;else{do{c[o>>2]=c[p+4>>2];ig(e,p);p=c[o>>2]|0}while((p|0)!=0);p=E}}else{p=0;n=7}while(0);yh(p);ig(e,E);D=Kg(e,n)|0;i=F;return D|0}function Cn(b){b=b|0;var d=0,e=0;e=c[b>>2]|0;if((a[e+145>>0]|0)==0?(d=Vh(e,b+4|0)|0,(d|0)!=0):0){c[b+12>>2]=d;e=b+64|0;c[e>>2]=(c[e>>2]|0)+1}else d=0;return d|0}function Dn(a){a=a|0;var b=0,d=0,f=0,g=0,h=0;f=c[a+24>>2]|0;h=f+84|0;b=c[h>>2]|0;if(!b){b=1020;d=0}else{b=b*40|0;d=0}g=a+4|0;a=no(c[f>>2]|0,c[g>>2]|0,b,d)|0;d=(a|0)!=0;if(d){b=c[f>>2]|0;do if(!b)b=hc[c[8744+48>>2]&127](a)|0;else{if((c[b+276>>2]|0)>>>0<=a>>>0?(c[b+280>>2]|0)>>>0>a>>>0:0){b=e[b+248>>1]|0;break}b=hc[c[8744+48>>2]&127](a)|0}while(0);c[h>>2]=(b>>>0)/20|0;c[g>>2]=a}return (d?0:7)|0}function En(a,d,e){a=a|0;d=d|0;e=e|0;a:do if(e)switch(d|0){case -10:{if(c[a+520>>2]|0)break a;wn(e);break a}case -11:{if(c[a+520>>2]|0)break a;Sc(e);break a}case -15:case -1:case -13:case -12:{ig(a,e);break a}case -5:{if(!(b[e+2>>1]&16))break a;ig(a,e);break a}case -6:{if(c[a+520>>2]|0)break a;a=(c[e>>2]|0)+-1|0;c[e>>2]=a;if(a)break a;Sc(e);break a}case -8:{if(!(c[a+520>>2]|0)){Ih(e);break a}if(c[e+24>>2]|0)ig(a,c[e+20>>2]|0);ig(a,e);break a}default:break a}while(0);return}function Fn(e,f){e=e|0;f=f|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;g=c[f>>2]|0;p=c[e+24>>2]|0;q=p+112|0;k=c[q>>2]|0;n=e+88|0;b[n>>1]=b[n>>1]&-193|64;h=c[e+32>>2]|0;a:do if((h|0)>0){j=c[e+4>>2]|0;while(1){h=h+-1|0;i=d[j>>0]|0;switch(i|0){case 2:case 3:{o=7;break}case 12:case 13:case 11:{b[n>>1]=b[n>>1]&-193|128;break}case 15:{r=c[j+8>>2]|0;g=(r|0)>(g|0)?r:g;break}case 6:case 8:{c[j+16>>2]=77;a[j+1>>0]=-19;break}case 5:case 7:case 9:{c[j+16>>2]=76;a[j+1>>0]=-19;break}case 10:case 1:{r=d[j+3>>0]|0;g=(r|0)>(g|0)?r:g;break}case 14:{r=c[j+-16>>2]|0;g=(r|0)>(g|0)?r:g;break}case 4:{if(!(c[j+8>>2]|0))o=7;else{b[n>>1]=b[n>>1]&-65;o=7}break}default:{}}if((o|0)==7){o=0;b[n>>1]=b[n>>1]|128}i=a[34168+i>>0]|0;a[j+2>>0]=i;if((i&1)!=0?(l=j+8|0,m=c[l>>2]|0,(m|0)<0):0)c[l>>2]=c[k+(~m<<2)>>2];if((h|0)<=0)break a;else j=j+20|0}}while(0);ig(c[e>>2]|0,c[q>>2]|0);c[q>>2]=0;c[p+108>>2]=0;c[f>>2]=g;return}function Gn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;e=b+73|0;if((a[e>>0]|0)!=4){a[e>>0]=0;f=b+56|0;d=b+48|0;d=Cp(b,c[f>>2]|0,c[d>>2]|0,c[d+4>>2]|0,0,g)|0;if(!d){Sc(c[f>>2]|0);c[f>>2]=0;f=b+68|0;d=c[f>>2]|c[g>>2];c[f>>2]=d;if((d|0)!=0?(a[e>>0]|0)==1:0){a[e>>0]=2;d=0}else d=0}}else d=c[b+68>>2]|0;i=h;return d|0}function Hn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[a+8>>2]|0;a:do if(!a)a=0;else{e=(b|0)==0;while(1){if((a|0)!=(d|0)){if(e)break;if((c[a+60>>2]|0)==(b|0))break}a=c[a+8>>2]|0;if(!a){a=0;break a}}a=Bl(a,b,d)|0}while(0);return a|0}function In(b){b=b|0;var e=0,f=0,g=0,h=0;f=c[b>>2]|0;g=f+1|0;c[b>>2]=g;h=a[f>>0]|0;e=h&255;if((h&255)<=191)return e|0;e=d[15360+(e+-192)>>0]|0;if((a[g>>0]&-64)<<24>>24==-128)while(1){f=f+2|0;c[b>>2]=f;e=(d[g>>0]|0)&63|e<<6;if((a[f>>0]&-64)<<24>>24==-128){h=g;g=f;f=h}else break}return (e>>>0<128|(e&-2048|0)==55296|(e&-2|0)==65534?65533:e)|0}function Jn(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;if((c|0)>-1)g=b+c|0;else g=-1;c=a[b>>0]|0;if(c<<24>>24!=0&g>>>0>b>>>0){d=c;c=0;do{f=b+1|0;if((d&255)>191){e=b;b=f;while(1){d=a[b>>0]|0;if((d&-64)<<24>>24==-128){d=b;b=e+2|0;e=d}else break}}else{d=a[f>>0]|0;b=f}c=c+1|0}while(d<<24>>24!=0&b>>>0>>0)}else c=0;return c|0}function Kn(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var 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;x=i;i=i+48|0;if((i|0)>=(j|0))ba();t=x+32|0;u=x+16|0;v=x;k=c[d>>2]|0;if((k|0)<0){c[d>>2]=0;c[d+4>>2]=-1;b[d+12>>1]=0;a[d+14>>0]=0;k=0}p=g;o=c[p+4>>2]|0;q=v;c[q>>2]=c[p>>2];c[q+4>>2]=o;q=d+8|0;c[q>>2]=h;o=f&255;p=(f|0)==254;do{n=b[d+(k<<4)+12>>1]|0;h=n&65535;g=37184+(h<<1)|0;a:do if((n&65535)>429)w=6;else{n=o;while(1){m=b[g>>1]|0;l=m<<16>>16;if(m<<16>>16==-86){w=6;break a}m=n&255;k=l+m|0;if(k>>>0<=1496?(a[39336+k>>0]|0)==n<<24>>24:0){w=16;break}if(!(n<<24>>24))break;if((n&255)>=70){r=l;w=12;break}n=a[40840+m>>0]|0;if(!(n<<24>>24)){r=l;w=12;break}}if((w|0)==16){w=0;k=e[22184+(k<<1)>>1]|0;break}if(((w|0)==12?(w=0,s=r+70|0,(s|0)>-1):0)?(a[39336+s>>0]|0)==70:0){k=e[22184+(s<<1)>>1]|0;break}k=e[38048+(h<<1)>>1]|0}while(0);if((w|0)==6){w=0;k=e[38048+(h<<1)>>1]|0}if(k>>>0<642){w=18;break}if(k>>>0>=969){w=20;break}iq(d,k+-642|0);if(p)break;k=c[d>>2]|0}while((k|0)>-1);if((w|0)==18){gq(d,k,f,v);r=d+4|0;c[r>>2]=(c[r>>2]|0)+-1}else if((w|0)==20){c[u+0>>2]=c[v+0>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];r=c[q>>2]|0;c[t>>2]=u;ph(r,20432,t);c[q>>2]=r;hq(d,o,v)}i=x;return}function Ln(b){b=b|0;var d=0;d=c[b>>2]|0;if((d|0)>=0){hq(b,a[b+(d<<4)+14>>0]|0,b+(d<<4)+16|0);c[b>>2]=(c[b>>2]|0)+-1}return}function Mn(a,b){a=a|0;b=b|0;var d=0;if(b){if((c[b>>2]|0)>0){d=0;do{Jk(a,c[b+(d<<4)+12>>2]|0);Ik(a,c[b+(d<<4)+16>>2]|0,1);ig(a,c[b+(d<<4)+8>>2]|0);d=d+1|0}while((d|0)<(c[b>>2]|0))}ig(a,b)}return}function Nn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+328|0;d=c[h>>2]|0;if(d){i=a+304|0;if((c[i>>2]|0)>0){f=0;do{e=c[d+(f<<2)>>2]|0;d=c[e+8>>2]|0;if((d|0)!=0?(g=c[(c[d>>2]|0)+b>>2]|0,(g|0)!=0):0)hc[g&127](d)|0;c[e+20>>2]=0;wn(e);f=f+1|0;d=c[h>>2]|0}while((f|0)<(c[i>>2]|0))}ig(a,d);c[i>>2]=0;c[h>>2]=0}return}function On(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;do if((d|0)==-2)if(!(c[a+12>>2]|0))d=(c[a+16>>2]|0)==0?0:6;else d=6;else{h=b[a>>1]|0;g=h<<16>>16;if(!((g|0)!=(d|0)&h<<16>>16>-1)){h=(g|0)==(d|0)?4:1;g=f&255;d=e[a+2>>1]|0;if((g|0)==(d&3|0)){d=h|2;break}else return ((d&g)>>>1&1)+h|0}else d=0}while(0);return d|0} -function qc(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;if((i|0)>=(j|0))ba();return b|0}function rc(){return i|0}function sc(a){a=a|0;i=a}function tc(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function uc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function vc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function wc(a){a=a|0;C=a}function xc(){return C|0}function yc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();e=h+4|0;f=h;g=0;a:while(1){c[e>>2]=0;c[f>>2]=0;a[280]=0;if(Nf(14640,e)|0){d=4;break}d=c[e>>2]|0;b=0;do{if(Me(d,c[8+(b<<2)>>2]|0,17,0,f)|0){d=7;break a}b=b+1|0;d=c[e>>2]|0}while((b|0)!=5);pf(d)|0;if(Wv(280,8504)|0){d=9;break}g=g+1|0;if((g|0)>=3){d=11;break}}if((d|0)==4)eb(8472,8488,47,8496);else if((d|0)==7)eb(8472,8488,50,8496);else if((d|0)==9)eb(8600,8488,53,8496);else if((d|0)==11){i=h;return 0}return 0}function zc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;if((d|0)>0)while(1){d=d+-1|0;dw(280,c[f>>2]|0)|0;b=280+(cw(280)|0)|0;a[b>>0]=61;a[b+1>>0]=0;b=c[e>>2]|0;dw(280,((b|0)==0?20304:b)|0)|0;if((d|0)<=0)break;else{e=e+4|0;f=f+4|0}}return 0}function Ac(b){b=b|0;var e=0,f=0,g=0;g=(Bc(b,8640,7)|0)==0;g=g?b+7|0:b;if(!g)b=0;else{b=g;while(1)if(!(a[b>>0]|0))break;else b=b+1|0;b=b-g&1073741823}f=0;while(1){e=c[8648+(f<<2)>>2]|0;if((Bc(g,e,b)|0)==0?(a[10368+(d[e+b>>0]|0)>>0]&70)==0:0){b=1;break}f=f+1|0;if((f|0)>=4){b=0;break}}return b|0}function Bc(b,c,e){b=b|0;c=c|0;e=e|0;var f=0;a:do if(b)if(c)if((e|0)>0){f=b;while(1){b=a[f>>0]|0;if(!(b<<24>>24))break;if((a[9328+(b&255)>>0]|0)!=(a[9328+(d[c>>0]|0)>>0]|0))break;e=e+-1|0;if((e|0)<=0){e=0;break a}else{f=f+1|0;c=c+1|0}}if((e|0)>=1)e=(d[9328+(b&255)>>0]|0)-(d[9328+(d[c>>0]|0)>>0]|0)|0;else e=0}else e=0;else e=1;else e=((c|0)!=0)<<31>>31;while(0);return e|0}function Cc(a){a=a|0;if(a>>>0<4)a=c[8648+(a<<2)>>2]|0;else a=0;return a|0}function Dc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h;if(a>>>0<=9){g=c[8664+(a<<2)>>2]|0;f=b;c[f>>2]=g;c[f+4>>2]=0;f=8704+(a<<2)|0;a=d;c[a>>2]=c[f>>2];c[a+4>>2]=0;if(!e)f=0;else{c[f>>2]=g;f=0}}else{c[f>>2]=15033;c[f+4>>2]=10788;Zc(21,13648,f);f=21}i=h;return f|0}function Ec(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h+8|0;g=h;a=Dc(a,f,g,e)|0;if(!a){c[b>>2]=c[f>>2];c[d>>2]=c[g>>2]}i=h;return a|0}function Fc(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();n=p+4|0;l=p;switch(b|0){case 2:{c[n>>2]=0;o=a+20|0;g=c[o>>2]|0;h=(g|0)>0;if(h){l=c[a+16>>2]|0;k=0;do{b=c[l+(k<<4)+4>>2]|0;if(b)c[(c[b+4>>2]|0)+4>>2]=c[b>>2];k=k+1|0}while((k|0)!=(g|0));k=a+520|0;c[k>>2]=n;if(h){m=a+16|0;h=0;do{b=c[(c[m>>2]|0)+(h<<4)+12>>2]|0;if(b){l=hc[c[8744+52>>2]&127](16)|0;l=_((c[b+44>>2]|0)+(c[b+12>>2]|0)+(c[b+28>>2]|0)+(c[b+60>>2]|0)|0,l)|0;c[n>>2]=l+(c[n>>2]|0);l=hc[c[8744+48>>2]&127](c[b+20>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+l;l=hc[c[8744+48>>2]&127](c[b+52>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+l;l=hc[c[8744+48>>2]&127](c[b+36>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+l;l=hc[c[8744+48>>2]&127](c[b+68>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+l;l=c[b+48>>2]|0;if(l)do{fg(a,c[l+8>>2]|0);l=c[l>>2]|0}while((l|0)!=0);l=c[b+16>>2]|0;if(l)do{gg(a,c[l+8>>2]|0);l=c[l>>2]|0}while((l|0)!=0);g=c[o>>2]|0}h=h+1|0}while((h|0)<(g|0));h=c[n>>2]|0}else h=0}else{k=a+520|0;c[k>>2]=n;h=0}c[k>>2]=0;c[f>>2]=0;c[d>>2]=h;h=0;break}case 9:case 8:case 7:{o=a+20|0;l=c[o>>2]|0;if((l|0)>0){n=c[a+16>>2]|0;m=b+-7|0;k=(g|0)==0;h=0;b=l;g=0;while(1){l=c[n+(g<<4)+4>>2]|0;if(l){l=(c[c[l+4>>2]>>2]|0)+(m<<2)+184|0;h=(c[l>>2]|0)+h|0;if(k)l=b;else{c[l>>2]=0;l=c[o>>2]|0}}else l=b;g=g+1|0;if((g|0)>=(l|0))break;else b=l}}else h=0;c[f>>2]=0;c[d>>2]=h;h=0;break}case 0:{k=a+252|0;c[d>>2]=c[k>>2];h=a+256|0;c[f>>2]=c[h>>2];if(!g)h=0;else{c[h>>2]=c[k>>2];h=0}break}case 6:case 5:case 4:{c[d>>2]=0;h=a+(b+-4<<2)+260|0;c[f>>2]=c[h>>2];if(!g)h=0;else{c[h>>2]=0;h=0}break}case 1:{m=a+20|0;k=c[m>>2]|0;g=(k|0)>0;if(g){h=c[a+16>>2]|0;l=0;do{b=c[h+(l<<4)+4>>2]|0;if(b)c[(c[b+4>>2]|0)+4>>2]=c[b>>2];l=l+1|0}while((l|0)!=(k|0));if(g){b=a+16|0;l=0;h=0;while(1){g=c[(c[b>>2]|0)+(l<<4)+4>>2]|0;if(!g)g=k;else{o=c[c[g+4>>2]>>2]|0;a=o+152|0;n=(c[a>>2]|0)+60+(e[o+140>>1]|0)|0;n=_(hc[c[8744+128>>2]&127](c[(c[o+204>>2]|0)+40>>2]|0)|0,n)|0;o=hc[c[8744+48>>2]&127](o)|0;g=c[m>>2]|0;h=n+h+o+(c[a>>2]|0)|0}l=l+1|0;if((l|0)>=(g|0))break;else k=g}}else h=0}else h=0;c[d>>2]=h;c[f>>2]=0;h=0;break}case 3:{c[l>>2]=0;g=a+520|0;c[g>>2]=l;k=c[a+4>>2]|0;if(!k)h=0;else{do{hg(a,k);ig(a,k);k=c[k+52>>2]|0}while((k|0)!=0);h=c[l>>2]|0}c[g>>2]=0;c[f>>2]=0;c[d>>2]=h;h=0;break}case 10:{c[f>>2]=0;o=a+512|0;n=c[o+4>>2]|0;if((n|0)>0|(n|0)==0&(c[o>>2]|0)>>>0>0)h=1;else{h=a+504|0;a=c[h+4>>2]|0;h=(a|0)>0|(a|0)==0&(c[h>>2]|0)>>>0>0}c[d>>2]=h&1;h=0;break}default:h=1}i=p;return h|0}function Gc(a){a=a|0;var b=0;a:do if(!(Hc()|0)){b=c[2254]|0;if(!((b|0)==0|(a|0)==0))while(1){if(!(Wv(a,c[b+16>>2]|0)|0))break a;b=c[b+12>>2]|0;if(!b){b=0;break}}}else b=0;while(0);return b|0}function Hc(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();k=m;do if(!(c[2243]|0)){c[2245]=1;if(!(c[2246]|0)){if(!(c[2195]|0)){c[k>>2]=16496;hf(4,k)|0}b=9024|0;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));if(c[2187]|0)c[2256]=8;h=c[2234]|0;d=c[2235]|0;b=c[2236]|0;if((h|0)!=0&(d|0)>99&(b|0)>0){g=d&-8;c[2235]=g;c[2263]=h;c[2264]=b;f=b+-1|0;if((f|0)>0){b=h+(_(d>>>3,(b<<3)+-8|0)|0)|0;e=0;d=h;do{a=d;d=d+g|0;c[a>>2]=d;e=e+1|0}while((e|0)!=(f|0))}else b=h;c[b>>2]=0;c[2262]=b+4}else{c[2262]=0;c[2234]=0;c[2235]=0;c[2236]=0}if((c[2237]|0)==0|(c[2238]|0)<512|(c[2239]|0)<1){c[2237]=0;c[2238]=0;c[2239]=0}a=hc[c[8744+56>>2]&127](c[2202]|0)|0;if(a){b=9024|0;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));break}}c[2246]=1;if(!(c[2249]|0))c[2249]=8;a=(c[2248]|0)+1|0;c[2248]=a;if(!(c[2244]|c[2243])){c[2244]=1;b=10840|0;d=b+92|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));b=0;do{jg(10840,16608+(b*36|0)|0);b=b+1|0}while((b|0)!=59);b=0;do{jg(10840,19480+(b*36|0)|0);b=b+1|0}while((b|0)!=8);jg(10840,19256);jg(10840,19292|0);jg(10840,19328|0);if(!(c[2247]|0)){a=c[2214]|0;if(!a){c[k>>2]=16440;hf(18,k)|0;a=c[2214]|0}a=hc[a&127](c[2213]|0)|0;if(!a)l=28}else l=28;if((l|0)==28){c[2247]=1;a=Pc(10)|0;if(!a)a=7;else{Sc(a);Ic(9584,1)|0;Ic(9672|0,0)|0;Ic(9760|0,0)|0;Ic(9848|0,0)|0;a=c[2237]|0;b=c[2238]|0;d=c[2239]|0;if(c[3153]|0){k=b&-8;c[3154]=k;c[3161]=d;c[3155]=d;if((d|0)<=90){c[3156]=((d|0)/10|0)+1;c[3157]=a;c[3160]=0;c[3162]=0;if(d)l=33}else{c[3156]=10;c[3157]=a;c[3160]=0;c[3162]=0;l=33}if((l|0)==33){f=b>>>3;g=d<<3;h=_(f<<3,d+-1|0)|0;b=a;e=0;while(1){d=d+-1|0;c[b>>2]=e;if(!d)break;else{e=b;b=b+k|0}}b=a+(_(g,f)|0)|0;c[3160]=a+h;a=b}c[3158]=a}c[2243]=1;a=0}}c[2244]=0;b=c[2248]|0}else{b=a;a=0}c[2248]=b+-1;if((b|0)<2)c[2249]=0}else a=0;while(0);i=m;return a|0}function Ic(a,b){a=a|0;b=b|0;var d=0;d=Hc()|0;do if(!d){kg(a);d=c[2254]|0;if((b|0)!=0|(d|0)==0){c[a+12>>2]=d;c[2254]=a;d=0;break}else{c[a+12>>2]=c[d+12>>2];c[(c[2254]|0)+12>>2]=a;d=0;break}}while(0);return d|0}function Jc(a){a=a|0;kg(a);return 0}function Kc(a){a=a|0;return 0}function Lc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;do if(!(Hc()|0)){e=9032|0;d=c[e>>2]|0;e=c[e+4>>2]|0;if((b|0)>=0)if((b|0)>0|(b|0)==0&a>>>0>0){c[2260]=9;c[2261]=0;f=9032|0;c[f>>2]=a;c[f+4>>2]=b;c[2265]=(0>(b|0)|0==(b|0)&(c[2166]|0)>>>0>=a>>>0)&1;break}else{c[2265]=0;c[2258]=0;c[2259]=0;c[2260]=0;c[2261]=0;break}}else{e=-1;d=-1}while(0);C=e;return d|0}function Mc(){var a=0;a=c[2166]|0;C=((a|0)<0)<<31>>31;return a|0}function Nc(a){a=a|0;var b=0;b=(a|0)<0;Lc(b?0:a,b?0:((a|0)<0)<<31>>31)|0;return}function Oc(a){a=a|0;var b=0;b=c[2176]|0;if(a)c[2176]=c[2166];C=((b|0)<0)<<31>>31;return b|0}function Pc(a){a=a|0;if((Hc()|0)!=0|(a|0)<1)a=0;else a=mg(a,((a|0)<0)<<31>>31)|0;return a|0}function Qc(a,b){a=a|0;b=b|0;if(!(Hc()|0))a=mg(a,b)|0;else a=0;return a|0}function Rc(a){a=a|0;a=hc[c[8744+48>>2]&127](a)|0;C=((a|0)<0)<<31>>31;return a|0}function Sc(a){a=a|0;var b=0;do if(a)if(!(c[2186]|0)){_b[c[8744+40>>2]&31](a);break}else{b=hc[c[8744+48>>2]&127](a)|0;c[2166]=(c[2166]|0)-b;c[2175]=(c[2175]|0)+-1;_b[c[8744+40>>2]&31](a);break}while(0);return}function Tc(a,b){a=a|0;b=b|0;var c=0;if(!(Hc()|0)){c=(b|0)<0;b=ng(a,c?0:b,c?0:((b|0)<0)<<31>>31)|0}else b=0;return b|0}function Uc(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Hc()|0))b=ng(a,b,c)|0;else b=0;return b|0}function Vc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+112|0;if((i|0)>=(j|0))ba();f=g+28|0;e=g;if(!(Hc()|0)){c[e+4>>2]=f;c[e+8>>2]=f;c[e>>2]=0;c[e+12>>2]=0;c[e+16>>2]=70;c[e+20>>2]=1e9;a[e+25>>0]=0;a[e+24>>0]=2;og(e,0,b,d);e=pg(e)|0}else e=0;i=g;return e|0}function Wc(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;if(!(Hc()|0)){c[d>>2]=b;d=Vc(a,d)|0}else d=0;i=e;return d|0}function Xc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+32|0;if((i|0)>=(j|0))ba();g=h;if((b|0)>=1){c[g+4>>2]=d;c[g+8>>2]=d;c[g>>2]=0;c[g+12>>2]=0;c[g+16>>2]=b;c[g+20>>2]=0;a[g+25>>0]=0;a[g+24>>0]=0;og(g,0,e,f);d=pg(g)|0}i=h;return d|0}function Yc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();g=f;c[g>>2]=e;a=Xc(a,b,d,g)|0;i=f;return a|0}function Zc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+256|0;if((i|0)>=(j|0))ba();f=k+16|0;h=k+44|0;g=k;if(c[2250]|0){c[g>>2]=e;c[f+4>>2]=h;c[f+8>>2]=h;c[f>>2]=0;c[f+12>>2]=0;c[f+16>>2]=210;c[f+20>>2]=0;a[f+25>>0]=0;a[f+24>>0]=0;og(f,0,d,g);e=c[2250]|0;g=c[2251]|0;f=pg(f)|0;ic[e&63](g,b,f)}i=k;return}function _c(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;h=i;i=i+256|0;if((i|0)>=(j|0))ba();g=h;do if(!(Hc()|0)){if((b|0)<1|(e|0)==0){a[9064]=0;break}if(!(a[9064]|0)){a[9066]=0;a[9065]=0;f=(Hc()|0)==0;f=f?c[2254]|0:0;Yb[c[f+56>>2]&63](f,256,g)|0;f=0;do{a[9067+f>>0]=f;f=f+1|0}while((f|0)!=256);f=0;do{k=9067+f|0;m=(d[g+f>>0]|0)+(d[k>>0]|0)+(d[9066]|0)|0;a[9066]=m;m=9067+(m&255)|0;l=a[m>>0]|0;a[m>>0]=a[k>>0]|0;a[k>>0]=l;f=f+1|0}while((f|0)!=256);a[9064]=1}while(1){k=(a[9065]|0)+1<<24>>24;a[9065]=k;k=9067+(k&255)|0;g=a[k>>0]|0;f=g&255;l=(d[9066]|0)+f|0;a[9066]=l;a[k>>0]=a[9067+(l&255)>>0]|0;a[9067+(d[9066]|0)>>0]=g;a[e>>0]=a[9067+((d[9067+(d[9065]|0)>>0]|0)+f&255)>>0]|0;b=b+-1|0;if(!b)break;else e=e+1|0}}while(0);i=h;return}function $c(b,c){b=b|0;c=c|0;var e=0;if(b)if(!c)c=1;else{e=a[b>>0]|0;a:do if(!(e<<24>>24))e=0;else while(1){if((a[9328+(e&255)>>0]|0)!=(a[9328+(d[c>>0]|0)>>0]|0))break a;b=b+1|0;c=c+1|0;e=a[b>>0]|0;if(!(e<<24>>24)){e=0;break}}while(0);c=(d[9328+(e&255)>>0]|0)-(d[9328+(d[c>>0]|0)>>0]|0)|0}else c=((c|0)!=0)<<31>>31;return c|0}function ad(a){a=a|0;c[2241]=a;return 0}function bd(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;a:do if((f|0)==(d|0)){qg(f,1,10016,n);h=0}else{h=mg(48,0)|0;if(!h){c[d+52>>2]=7;h=c[d+236>>2]|0;if(!h){h=0;break}e=h+8|0;if(!(b[e>>1]&9312)){b[e>>1]=1;h=0;break}else{rg(h);h=0;break}}l=h+0|0;k=l+48|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(k|0));m=h+24|0;c[m>>2]=sg(d,f,g)|0;k=sg(d,d,e)|0;l=h+4|0;c[l>>2]=k;c[h>>2]=d;c[h+20>>2]=f;c[h+16>>2]=1;c[h+40>>2]=0;e=c[m>>2]|0;do if(!((e|0)==0|(k|0)==0)?(tg(k,c[(c[e+4>>2]|0)+32>>2]|0,-1,0)|0)!=7:0)if(!(a[(c[l>>2]|0)+8>>0]|0)){e=(c[m>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+1;break a}else{qg(d,1,47416,n);break}while(0);Sc(h);h=0}while(0);i=o;return h|0}function cd(b,e){b=b|0;e=e|0;var f=0,g=0,h=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,D=0,E=0;E=i;i=i+32|0;if((i|0)>=(j|0))ba();z=E;p=E+16|0;s=E+12|0;w=E+8|0;B=b+24|0;g=c[B>>2]|0;h=c[g+4>>2]|0;c[h+4>>2]=c[g>>2];D=b+28|0;f=c[D>>2]|0;if(f>>>0<7?(30>>>(f&127)&1)==0:0){v=c[h>>2]|0;A=b+4|0;f=c[A>>2]|0;y=c[c[f+4>>2]>>2]|0;if((c[b>>2]|0)!=0?(a[h+20>>0]|0)==2:0){x=0;g=5}else t=5;do if((t|0)==5){h=b+12|0;if(!(c[h>>2]|0)){g=ug(f,2)|0;if(g){x=0;break}c[h>>2]=1;x=c[A>>2]|0;g=c[x+4>>2]|0;c[g+4>>2]=c[x>>2];g=c[(c[g+12>>2]|0)+56>>2]|0;c[b+8>>2]=d[g+41>>0]<<16|d[g+40>>0]<<24|d[g+42>>0]<<8|d[g+43>>0];g=c[B>>2]|0}if(!(a[g+8>>0]|0)){x=1;g=ug(g,0)|0}else{x=0;g=0}}while(0);l=c[(c[B>>2]|0)+4>>2]|0;u=c[l+32>>2]|0;o=c[(c[A>>2]|0)+4>>2]|0;r=c[o+32>>2]|0;o=(a[(c[o>>2]|0)+5>>0]|0)==5;f=(u|0)==(r|0)|(g|0)==0&o^1?g:8;l=c[l+44>>2]|0;h=(e|0)<0;a:do if(e){g=b+16|0;m=c[g>>2]|0;n=0;do{if(!(m>>>0<=l>>>0&(f|0)==0))break a;if((m|0)!=((((c[2514]|0)>>>0)/((c[(c[(c[B>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){f=vg(v,m,p,2)|0;if(!f){k=c[p>>2]|0;f=wg(b,m,c[k+4>>2]|0,0)|0;if(k)xg(k)}}else f=0;m=(c[g>>2]|0)+1|0;c[g>>2]=m;n=n+1|0}while(h|(n|0)<(e|0))}while(0);if(!f){c[b+36>>2]=l;f=c[b+16>>2]|0;c[b+32>>2]=l+1-f;if(f>>>0<=l>>>0){f=b+40|0;if(!(c[f>>2]|0)){A=(c[c[(c[B>>2]|0)+4>>2]>>2]|0)+88|0;c[b+44>>2]=c[A>>2];c[A>>2]=b;c[f>>2]=1;f=0}else f=0}else t=22}else if((f|0)==101)t=22;do if((t|0)==22){if(!l){g=c[A>>2]|0;f=c[g+4>>2]|0;c[f+4>>2]=c[g>>2];c[f+44>>2]=0;f=yg(f)|0;if((f|0)==0|(f|0)==101)l=1;else break}f=zg(c[A>>2]|0,1,(c[b+8>>2]|0)+1|0)|0;if(!f){g=c[b>>2]|0;if(g)Ag(g);if(o?(q=Bg(c[A>>2]|0,2)|0,(q|0)!=0):0){f=q;break}if((u|0)<(r|0)){g=(r|0)/(u|0)|0;g=(l+-1+g|0)/(g|0)|0;h=c[2514]|0;k=c[(c[(c[A>>2]|0)+4>>2]|0)+32>>2]|0;g=(((g|0)==(((h>>>0)/(k>>>0)|0)+1|0))<<31>>31)+g|0;b=((u|0)<0)<<31>>31;q=ow(l|0,((l|0)<0)<<31>>31|0,u|0,b|0)|0;o=C;e=c[y+60>>2]|0;n=c[y+24>>2]|0;b:do if(g>>>0<=n>>>0){f=0;while(1){if((g|0)!=(((h>>>0)/(k>>>0)|0)+1|0)){f=vg(y,g,s,0)|0;if(f)break b;h=c[s>>2]|0;f=Cg(h)|0;if(h)xg(h)}g=g+1|0;h=(f|0)==0;if(g>>>0>n>>>0|h^1)break;k=c[(c[(c[A>>2]|0)+4>>2]|0)+32>>2]|0;h=c[2514]|0}if(h)t=38}else t=38;while(0);if((t|0)==38)f=Dg(y,0,1)|0;h=c[2514]|0;l=h+r|0;m=((l|0)<0)<<31>>31;k=(m|0)<(o|0)|(m|0)==(o|0)&l>>>0>>0;l=k?l:q;m=k?m:o;h=h+u|0;k=((h|0)<0)<<31>>31;g=(f|0)==0;if(g&((k|0)<(m|0)|(k|0)==(m|0)&h>>>0>>0))do{c[w>>2]=0;f=mw(h|0,k|0,u|0,b|0)|0;f=fw(f|0,C|0,1,0)|0;f=vg(v,f,w,0)|0;g=c[w>>2]|0;if(!f)f=pc[c[(c[e>>2]|0)+12>>2]&31](e,c[g+4>>2]|0,u,h,k)|0;if(g)xg(g);h=fw(h|0,k|0,u|0,b|0)|0;k=C;g=(f|0)==0}while(g&((k|0)<(m|0)|(k|0)==(m|0)&h>>>0>>0));if(!g)break;f=nc[c[(c[e>>2]|0)+24>>2]&127](e,z)|0;w=c[z+4>>2]|0;if((f|0)==0&((w|0)>(o|0)|((w|0)==(o|0)?(c[z>>2]|0)>>>0>q>>>0:0)))f=Yb[c[(c[e>>2]|0)+16>>2]&63](e,q,o)|0;if(f)break;f=Eg(y,0)|0}else{c[y+24>>2]=_((u|0)/(r|0)|0,l)|0;f=Dg(y,0,0)|0}if(!f){f=Fg(c[A>>2]|0,0)|0;f=(f|0)==0?101:f}}}while(0);if(x){Gg(c[B>>2]|0,0)|0;Fg(c[B>>2]|0,0)|0}f=(f|0)==3082?7:f;c[D>>2]=f}i=E;return f|0}function dd(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;if(!a)d=0;else{h=c[a+20>>2]|0;e=c[a+24>>2]|0;d=c[e+4>>2]|0;c[d+4>>2]=c[e>>2];if(c[a>>2]|0){e=e+16|0;c[e>>2]=(c[e>>2]|0)+-1}if(c[a+40>>2]|0){d=(c[d>>2]|0)+88|0;while(1){e=c[d>>2]|0;if((e|0)==(a|0))break;else d=e+44|0}c[d>>2]=c[a+44>>2]}Hg(c[a+4>>2]|0,0,0);d=c[a+28>>2]|0;d=(d|0)==101?0:d;e=c[a>>2]|0;if(e){c[e+52>>2]=d;f=c[e+236>>2]|0;do if(f){g=f+8|0;if(!(b[g>>1]&9312)){b[g>>1]=1;break}else{rg(f);e=c[a>>2]|0;break}}while(0);Ig(e);if(c[a>>2]|0)Sc(a)}Ig(h)}return d|0}function ed(a){a=a|0;return c[a+32>>2]|0}function fd(a){a=a|0;return c[a+36>>2]|0}function gd(a){a=a|0;if((a|0)!=0?(b[a+88>>1]&256)!=0:0)a=c[a+168>>2]|0;else a=0;return a|0}function hd(a){a=a|0;if(!a)a=1;else a=(b[a+88>>1]&8)!=0;return a&1|0}function id(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;do if(a){b=c[a>>2]|0;if(!b){Zc(21,47360,d);c[d>>2]=68910;c[d+4>>2]=10788;Zc(21,13648,d);b=21;break}else{a=Kg(b,Jg(a)|0)|0;Ig(b);b=a;break}}else b=0;while(0);i=e;return b|0}function jd(b){b=b|0;var d=0,e=0;if(!b)b=0;else{d=Lg(b)|0;c[b+76>>2]=-1;c[b+80>>2]=0;a[b+86>>0]=2;c[b+40>>2]=-1108210269;c[b+92>>2]=0;c[b+72>>2]=1;a[b+87>>0]=-1;c[b+104>>2]=0;e=b+144|0;c[e>>2]=0;c[e+4>>2]=0;b=Kg(c[b>>2]|0,d)|0}return b|0}function kd(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+68|0;e=b[h>>1]|0;if(e<<16>>16>0){i=a+60|0;d=c[i>>2]|0;g=0;do{f=d+(g*40|0)|0;if(!((b[d+(g*40|0)+8>>1]&9312)==0?(c[d+(g*40|0)+24>>2]|0)==0:0)){Mg(f);d=c[i>>2]|0;e=b[h>>1]|0}b[d+(g*40|0)+8>>1]=1;g=g+1|0}while((g|0)<(e<<16>>16|0))}d=a+88|0;e=b[d>>1]|0;if((e&256)!=0?(c[a+188>>2]|0)!=0:0)b[d>>1]=e|8;return 0}function ld(a){a=a|0;var d=0;d=a+8|0;if(b[d>>1]&18){Ng(a)|0;b[d>>1]=e[d>>1]|0|16;if(!(c[a+12>>2]|0))d=0;else d=c[a+16>>2]|0}else d=Og(a,1)|0;return d|0}function md(a){a=a|0;return Og(a,1)|0}function nd(a){a=a|0;return Pg(a,1)|0}function od(a){a=a|0;return Pg(a,2)|0}function pd(a){a=a|0;return +(+Qg(a))}function qd(a){a=a|0;a=Rg(a)|0;return a|0}function rd(a){a=a|0;a=Rg(a)|0;return a|0}function sd(a){a=a|0;return Og(a,2)|0}function td(a){a=a|0;return Og(a,3)|0}function ud(a){a=a|0;return Og(a,2)|0}function vd(a){a=a|0;return d[10064+((e[a+8>>1]|0)&31)>>0]|0|0}function wd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Sg(a,b,c,0,d);return}function xd(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(f>>>0>0|(f|0)==0&e>>>0>2147483647){e=g;if(!((e|0)==0|(e|0)==-1))_b[g&31](d);if(b){c[b+20>>2]=18;a[b+25>>0]=1;Tg(c[b>>2]|0,10096,-1,1,0)|0}}else Sg(b,d,e,0,g);return}function yd(a,b){a=a|0;b=+b;Ug(c[a>>2]|0,b);return}function zd(b,d,e){b=b|0;d=d|0;e=e|0;c[b+20>>2]=1;a[b+25>>0]=1;Tg(c[b>>2]|0,d,e,1,-1)|0;return}function Ad(b,d,e){b=b|0;d=d|0;e=e|0;c[b+20>>2]=1;a[b+25>>0]=1;Tg(c[b>>2]|0,d,e,2,-1)|0;return}function Bd(a,d){a=a|0;d=d|0;var e=0,f=0;a=c[a>>2]|0;e=((d|0)<0)<<31>>31;f=a+8|0;if(!(b[f>>1]&9312)){c[a>>2]=d;c[a+4>>2]=e;b[f>>1]=4}else Vg(a,d,e);return}function Cd(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[a>>2]|0;f=a+8|0;if(!(b[f>>1]&9312)){c[a>>2]=d;c[a+4>>2]=e;b[f>>1]=4}else Vg(a,d,e);return}function Dd(a){a=a|0;var d=0;a=c[a>>2]|0;d=a+8|0;if(!(b[d>>1]&9312))b[d>>1]=1;else rg(a);return}function Ed(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Sg(a,b,c,1,d);return}function Fd(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;if(f>>>0>0|(f|0)==0&e>>>0>2147483647){e=g;if(!((e|0)==0|(e|0)==-1))_b[g&31](d);if(b){c[b+20>>2]=18;a[b+25>>0]=1;Tg(c[b>>2]|0,10096,-1,1,0)|0}}else Sg(b,d,e,h<<24>>24==4?2:h,g);return}function Gd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Sg(a,b,c,2,d);return}function Hd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Sg(a,b,c,3,d);return}function Id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Sg(a,b,c,2,d);return}function Jd(a,b){a=a|0;b=b|0;Wg(c[a>>2]|0,b)|0;return}function Kd(a,b){a=a|0;b=b|0;Xg(c[a>>2]|0,b);return}function Ld(d,e){d=d|0;e=e|0;var f=0;c[d+20>>2]=e;a[d+25>>0]=1;f=c[d>>2]|0;if(b[f+8>>1]&1){if((e|0)!=516){d=e&255;if(d>>>0>26|(d|0)==2)d=16328;else d=c[15488+(d<<2)>>2]|0}else d=16344;Tg(f,d,-1,1,0)|0}return}function Md(b){b=b|0;c[b+20>>2]=18;a[b+25>>0]=1;Tg(c[b>>2]|0,10096,-1,1,0)|0;return}function Nd(d){d=d|0;var e=0,f=0;e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9312))b[f>>1]=1;else{rg(e);e=c[d>>2]|0}c[d+20>>2]=7;a[d+25>>0]=1;a[(c[e+32>>2]|0)+65>>0]=1;return}function Od(f){f=f|0;var g=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,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;W=i;i=i+224|0;if((i|0)>=(j|0))ba();R=W+8|0;Q=W;if(!(Yg(f)|0)){V=c[f>>2]|0;J=f+88|0;b[J>>1]=b[J>>1]&-513;N=f+40|0;O=f+76|0;P=f+128|0;U=f+80|0;z=f+168|0;A=f+8|0;B=f+20|0;D=f+32|0;E=f+4|0;F=f+84|0;T=f+44|0;G=(f|0)==0;H=f+52|0;I=f+48|0;y=0;while(1){if((c[N>>2]|0)!=-1108210269)jd(f)|0;x=c[f>>2]|0;if(a[x+65>>0]|0){S=7;break}l=c[O>>2]|0;do if((l|0)<1){if(b[J>>1]&8){c[U>>2]=17;l=1;break}if((l|0)<0){l=x+148|0;if(!(c[l>>2]|0))c[x+240>>2]=0;if((c[x+184>>2]|0)!=0?(a[x+145>>0]|0)==0:0)Zg(c[x>>2]|0,P)|0;c[l>>2]=(c[l>>2]|0)+1;l=b[J>>1]|0;if(!(l&64)){l=x+156|0;c[l>>2]=(c[l>>2]|0)+1;l=b[J>>1]|0}if(l&128){w=x+152|0;c[w>>2]=(c[w>>2]|0)+1}c[O>>2]=0;S=22}else S=22}else S=22;while(0);if((S|0)==22){S=0;do if(!(b[J>>1]&3)){w=x+160|0;c[w>>2]=(c[w>>2]|0)+1;l=ch(f)|0;c[w>>2]=(c[w>>2]|0)+-1;if((l|0)==100)l=100;else S=101}else{p=c[f>>2]|0;v=c[A>>2]|0;u=v+40|0;_g(u,8);c[B>>2]=0;if((c[U>>2]|0)==7){a[p+65>>0]=1;l=1;S=101;break}n=c[D>>2]|0;q=b[J>>1]&3;if(q<<16>>16==1){o=c[A>>2]|0;r=o+360|0;if(b[o+368>>1]&16){s=(c[o+372>>2]|0)>>>2;m=c[o+376>>2]|0;if(!s){t=m;o=n;g=0}else{l=0;o=n;do{o=(c[(c[m+(l<<2)>>2]|0)+4>>2]|0)+o|0;l=l+1|0}while((l|0)<(s|0));t=m;g=s}}else{t=0;o=n;g=0}}else{t=0;o=n;g=0;r=0}n=q<<16>>16==2;m=c[O>>2]|0;while(1){l=m+1|0;if((m|0)>=(o|0)){S=33;break}if(!n)break;if((a[(c[E>>2]|0)+(m*20|0)>>0]|0)==-99)break;else m=l}if((S|0)==33){c[O>>2]=l;c[U>>2]=0;l=101;S=101;break}c[O>>2]=l;if(c[p+240>>2]|0){c[U>>2]=9;c[R>>2]=15832;$g(T,p,10344,R);l=1;S=101;break}o=c[D>>2]|0;if((m|0)<(o|0)){l=m;w=(c[E>>2]|0)+(m*20|0)|0}else{m=m-o|0;o=c[t>>2]|0;n=c[o+4>>2]|0;if((m|0)<(n|0))n=m;else{o=m;l=0;while(1){m=o-n|0;l=l+1|0;o=c[t+(l<<2)>>2]|0;n=c[o+4>>2]|0;if((m|0)<(n|0)){n=m;break}else o=m}}l=n;w=(c[o>>2]|0)+(n*20|0)|0}if((b[J>>1]&3)==1){b[v+48>>1]=4;n=u;c[n>>2]=l;c[n+4>>2]=((l|0)<0)<<31>>31;b[v+88>>1]=2562;n=c[44856+(d[w>>0]<<2)>>2]|0;c[v+96>>2]=n;o=n;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;s=v+80|0;c[v+92>>2]=o-n&1073741823;a[v+90>>0]=1;if((a[w+1>>0]|0)==-18){l=(g<<2)+4|0;a:do if(!g)o=0;else{n=c[w+16>>2]|0;m=0;while(1){o=m+1|0;if((c[t+(m<<2)>>2]|0)==(n|0)){o=m;break a}if((o|0)<(g|0))m=o;else break}}while(0);if((o|0)==(g|0)?(ah(r,l,(g|0)!=0&1)|0)==0:0){c[(c[r+16>>2]|0)+(g<<2)>>2]=c[w+16>>2];v=r+8|0;b[v>>1]=e[v>>1]|16;c[r+12>>2]=l;v=s}else v=s}else v=s}b[v+48>>1]=4;u=c[w+4>>2]|0;t=v+40|0;c[t>>2]=u;c[t+4>>2]=((u|0)<0)<<31>>31;b[v+88>>1]=4;t=c[w+8>>2]|0;u=v+80|0;c[u>>2]=t;c[u+4>>2]=((t|0)<0)<<31>>31;b[v+128>>1]=4;u=c[w+12>>2]|0;t=v+120|0;c[t>>2]=u;c[t+4>>2]=((u|0)<0)<<31>>31;t=v+160|0;if(!(bh(t,32)|0)){b[v+168>>1]=514;u=v+176|0;g=c[u>>2]|0;b:do switch(a[w+1>>0]|0){case -6:{p=c[w+16>>2]|0;l=p+6|0;c[R>>2]=e[l>>1];Yc(32,g,44768,R)|0;if(!g)o=0;else{o=g;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;o=o-g&1073741823}c:do if(b[l>>1]|0){q=p+16|0;r=0;while(1){n=c[p+(r<<2)+20>>2]|0;if(n){n=c[n>>2]|0;if(!n){m=0;n=0}else S=61}else{n=44776;S=61}do if((S|0)==61){S=0;s=n;while(1)if(!(a[s>>0]|0))break;else s=s+1|0;m=s-n&1073741823;if((m|0)!=6)break;s=(Vv(n,11152,6)|0)==0;m=s?1:6;n=s?44784:n}while(0);if((m+o|0)>26)break;s=o+1|0;a[g+o>>0]=44;if(a[(c[q>>2]|0)+r>>0]|0){a[g+s>>0]=45;s=o+2|0}gw(g+s|0,n|0,m+1|0)|0;o=s+m|0;r=r+1|0;if((r|0)>=(e[l>>1]|0))break c}l=g+o|0;a[l>>0]=44;a[l+1>>0]=46;a[l+2>>0]=46;a[l+3>>0]=46}while(0);a[g+o>>0]=41;a[g+(o+1)>>0]=0;n=g;break}case -15:{Yc(32,g,44832,R)|0;n=g;break}case -18:{Yc(32,g,44848,R)|0;n=g;break}case -4:{c[R>>2]=c[c[w+16>>2]>>2];Yc(32,g,44792,R)|0;n=g;break}case -5:{l=c[w+16>>2]|0;n=b[l>>1]|0;c[R>>2]=c[l+24>>2];c[R+4>>2]=n;Yc(32,g,44800,R)|0;n=g;break}case -13:{m=c[w+16>>2]|0;l=c[m+4>>2]|0;n=R;c[n>>2]=c[m>>2];c[n+4>>2]=l;Yc(32,g,19920,R)|0;n=g;break}case -14:{c[R>>2]=c[w+16>>2];Yc(32,g,44808,R)|0;n=g;break}case -12:{h[k>>3]=+h[c[w+16>>2]>>3];c[R>>2]=c[k>>2];c[R+4>>2]=c[k+4>>2];Yc(32,g,19912,R)|0;n=g;break}case -8:{o=c[w+16>>2]|0;n=e[o+8>>1]|0;if(n&2){n=c[o+16>>2]|0;break b}if(n&4){m=o;l=c[m+4>>2]|0;n=R;c[n>>2]=c[m>>2];c[n+4>>2]=l;Yc(32,g,19920,R)|0;n=g;break b}if(n&8){h[k>>3]=+h[o>>3];c[R>>2]=c[k>>2];c[R+4>>2]=c[k+4>>2];Yc(32,g,19912,R)|0;n=g;break b}if(!(n&1))n=44816;else{Yc(32,g,20304,R)|0;n=g}break}case -19:{a[g>>0]=0;n=g;break}case -10:{c[R>>2]=c[(c[w+16>>2]|0)+8>>2];Yc(32,g,44824,R)|0;n=g;break}default:{o=c[w+16>>2]|0;if(!o){a[g>>0]=0;n=g}else n=o}}while(0);if((n|0)==(c[u>>2]|0)){if(!n)l=0;else{o=n;while(1)if(!(a[o>>0]|0))break;else o=o+1|0;l=o-n&1073741823}c[v+172>>2]=l;a[v+170>>0]=1}else Tg(t,n,-1,1,0)|0;l=b[J>>1]|0;if((l&3)==1){if(bh(v+200|0,4)|0){l=1;S=101;break}b[v+208>>1]=514;c[v+212>>2]=2;l=c[v+216>>2]|0;c[R>>2]=d[w+3>>0];Yc(3,l,44760,R)|0;a[v+210>>0]=1;b[v+248>>1]=1;l=b[J>>1]|0}b[F>>1]=12-((l&3)<<2);c[B>>2]=(c[A>>2]|0)+40;c[U>>2]=0;l=100}else{l=1;S=101}}while(0);if((S|0)==101){S=0;g=x+184|0;if(((c[g>>2]|0)!=0?(a[x+145>>0]|0)==0:0)?(c[z>>2]|0)!=0:0){Zg(c[x>>2]|0,Q)|0;g=c[g>>2]|0;u=c[x+188>>2]|0;v=c[z>>2]|0;m=Q;w=P;w=$v(c[m>>2]|0,c[m+4>>2]|0,c[w>>2]|0,c[w+4>>2]|0)|0;w=ow(w|0,C|0,1e6,0)|0;mc[g&15](u,v,w,C)}if((l|0)==101){p=x+20|0;o=c[p>>2]|0;if((o|0)>0){q=x+16|0;r=x+216|0;s=x+220|0;g=0;l=0;do{n=c[q>>2]|0;m=c[n+(g<<4)+4>>2]|0;if(((m|0)!=0?(K=c[m+4>>2]|0,c[K+4>>2]=c[m>>2],K=c[(c[K>>2]|0)+208>>2]|0,(K|0)!=0):0)?(M=K+12|0,L=c[M>>2]|0,c[M>>2]=0,M=c[r>>2]|0,(M|0)!=0&(L|0)>0&(l|0)==0):0){l=lc[M&31](c[s>>2]|0,x,c[n+(g<<4)>>2]|0,L)|0;o=c[p>>2]|0}g=g+1|0}while((g|0)<(o|0))}else l=0;c[U>>2]=l;l=(l|0)==0?101:1}}c[x+52>>2]=l;if((Kg(c[f>>2]|0,c[U>>2]|0)|0)==7)c[U>>2]=7}if((b[J>>1]&256)!=0&(l|0)!=100&(l|0)!=101)l=dh(f)|0;g=c[x+56>>2]&l;if((g|0)!=17)break;o=y+1|0;if((y|0)>=50){g=17;break}m=c[O>>2]|0;if(!G?(b[J>>1]&256)!=0:0)l=c[z>>2]|0;else l=0;n=c[f>>2]|0;g=eh(n,l,-1,0,f,Q,0)|0;if((g|0)==7){g=n;S=124;break}else if(g){S=127;break}y=c[Q>>2]|0;gw(R|0,y|0,208)|0;gw(y|0,f|0,208)|0;gw(f|0,R|0,208)|0;w=y+52|0;x=c[w>>2]|0;c[w>>2]=c[H>>2];c[H>>2]=x;x=y+48|0;w=c[x>>2]|0;c[x>>2]=c[I>>2];c[I>>2]=w;w=y+168|0;x=c[w>>2]|0;c[w>>2]=c[z>>2];c[z>>2]=x;b[J>>1]=b[J>>1]&-257|b[y+88>>1]&256;fh(y,f);c[y+80>>2]=0;Jg(y)|0;jd(f)|0;if((m|0)<=-1){y=o;continue}b[J>>1]=b[J>>1]|512;y=o}if((S|0)==7){c[U>>2]=7;g=7}else if((S|0)==124){a[g+65>>0]=1;g=7;S=127}do if((S|0)==127){l=Og(c[V+236>>2]|0,1)|0;ig(V,c[T>>2]|0);if(!(a[V+65>>0]|0)){c[T>>2]=gh(V,l)|0;c[U>>2]=g;break}else{c[T>>2]=0;c[U>>2]=7;g=7;break}}while(0);g=Kg(V,g)|0}else{c[R>>2]=69408;c[R+4>>2]=10788;Zc(21,13648,R);g=21}i=W;return g|0}function Pd(a){a=a|0;return c[(c[a+4>>2]|0)+4>>2]|0}function Qd(a){a=a|0;return c[(c[a>>2]|0)+32>>2]|0}function Rd(a,d){a=a|0;d=d|0;var e=0;e=c[a+8>>2]|0;if(!(b[e+8>>1]&8192))e=hh(a,d)|0;else e=c[e+16>>2]|0;return e|0}function Sd(a,b){a=a|0;b=b|0;var d=0;d=c[(c[a+12>>2]|0)+204>>2]|0;a:do if(!d)d=0;else{a=c[a+16>>2]|0;while(1){if((c[d>>2]|0)==(a|0)?(c[d+4>>2]|0)==(b|0):0)break;d=c[d+16>>2]|0;if(!d){d=0;break a}}d=c[d+8>>2]|0}while(0);return d|0}function Td(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=c[b+12>>2]|0;do if((d|0)<0)k=14;else{j=h+204|0;g=c[j>>2]|0;a:do if(g){i=c[b+16>>2]|0;while(1){if((c[g>>2]|0)==(i|0)?(c[g+4>>2]|0)==(d|0):0)break;g=c[g+16>>2]|0;if(!g){k=8;break a}}if(g){h=c[g+12>>2]|0;if(h)_b[h&31](c[g+8>>2]|0)}else k=8}else k=8;while(0);if((k|0)==8){g=ih(c[h>>2]|0,20,0)|0;if(!g){k=14;break}h=g+0|0;i=h+16|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(i|0));c[g>>2]=c[b+16>>2];c[g+4>>2]=d;c[g+16>>2]=c[j>>2];c[j>>2]=g;h=b+25|0;if(!(a[h>>0]|0)){c[b+20>>2]=0;a[h>>0]=1}}c[g+8>>2]=e;c[g+12>>2]=f}while(0);if((k|0)==14?(f|0)!=0:0)_b[f&31](e);return}function Ud(a){a=a|0;return c[(c[a+8>>2]|0)+12>>2]|0}function Vd(a){a=a|0;if(!a)a=0;else a=e[a+84>>1]|0;return a|0}function Wd(a){a=a|0;if((a|0)!=0?(c[a+20>>2]|0)!=0:0)a=e[a+84>>1]|0;else a=0;return a|0}function Xd(a,b){a=a|0;b=b|0;var d=0;b=ld(jh(a,b)|0)|0;if(a){d=a+80|0;c[d>>2]=Kg(c[a>>2]|0,c[d>>2]|0)|0}return b|0}function Yd(a,b){a=a|0;b=b|0;var d=0;b=Pg(jh(a,b)|0,1)|0;if(a){d=a+80|0;c[d>>2]=Kg(c[a>>2]|0,c[d>>2]|0)|0}return b|0}function Zd(a,b){a=a|0;b=b|0;var d=0;b=Pg(jh(a,b)|0,2)|0;if(a){d=a+80|0;c[d>>2]=Kg(c[a>>2]|0,c[d>>2]|0)|0}return b|0}function _d(a,b){a=a|0;b=b|0;var d=0.0;d=+Qg(jh(a,b)|0);if(a){b=a+80|0;c[b>>2]=Kg(c[a>>2]|0,c[b>>2]|0)|0}return +d}function $d(a,b){a=a|0;b=b|0;var d=0;b=Rg(jh(a,b)|0)|0;if(a){d=a+80|0;c[d>>2]=Kg(c[a>>2]|0,c[d>>2]|0)|0}return b|0}function ae(a,b){a=a|0;b=b|0;var d=0,e=0;b=Rg(jh(a,b)|0)|0;d=C;if(a){e=a+80|0;c[e>>2]=Kg(c[a>>2]|0,c[e>>2]|0)|0}C=d;return b|0}function be(a,b){a=a|0;b=b|0;var d=0;b=Og(jh(a,b)|0,1)|0;if(a){d=a+80|0;c[d>>2]=Kg(c[a>>2]|0,c[d>>2]|0)|0}return b|0}function ce(a,d){a=a|0;d=d|0;var f=0,g=0;d=jh(a,d)|0;f=d+8|0;g=e[f>>1]|0;if(g&2048)b[f>>1]=g&59391|4096;if(a){f=a+80|0;c[f>>2]=Kg(c[a>>2]|0,c[f>>2]|0)|0}return d|0}function de(a,b){a=a|0;b=b|0;var d=0;b=Og(jh(a,b)|0,2)|0;if(a){d=a+80|0;c[d>>2]=Kg(c[a>>2]|0,c[d>>2]|0)|0}return b|0}function ee(a,b){a=a|0;b=b|0;var f=0;b=d[10064+((e[(jh(a,b)|0)+8>>1]|0)&31)>>0]|0;if(a){f=a+80|0;c[f>>2]=Kg(c[a>>2]|0,c[f>>2]|0)|0}return b|0}function fe(b,d){b=b|0;d=d|0;var f=0,g=0;g=c[b>>2]|0;if(!b)f=0;else f=e[b+84>>1]|0;if((f|0)>(d|0)&(d|0)>-1){d=Og((c[b+16>>2]|0)+(d*40|0)|0,1)|0;f=g+65|0;if(a[f>>0]|0){a[f>>0]=0;d=0}}else d=0;return d|0}function ge(b,d){b=b|0;d=d|0;var f=0,g=0;g=c[b>>2]|0;if(!b)f=0;else f=e[b+84>>1]|0;if((f|0)>(d|0)&(d|0)>-1){d=Og((c[b+16>>2]|0)+(d*40|0)|0,2)|0;f=g+65|0;if(a[f>>0]|0){a[f>>0]=0;d=0}}else d=0;return d|0}function he(b,d){b=b|0;d=d|0;var f=0,g=0;g=c[b>>2]|0;if(!b)f=0;else f=e[b+84>>1]|0;if((f|0)>(d|0)&(d|0)>-1){d=Og((c[b+16>>2]|0)+((f+d|0)*40|0)|0,1)|0;f=g+65|0;if(a[f>>0]|0){a[f>>0]=0;d=0}}else d=0;return d|0}function ie(b,d){b=b|0;d=d|0;var f=0,g=0;g=c[b>>2]|0;if(!b)f=0;else f=e[b+84>>1]|0;if((f|0)>(d|0)&(d|0)>-1){d=Og((c[b+16>>2]|0)+((f+d|0)*40|0)|0,2)|0;f=g+65|0;if(a[f>>0]|0){a[f>>0]=0;d=0}}else d=0;return d|0}function je(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return kh(a,b,c,d,e,0)|0}function ke(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(e>>>0>0|(e|0)==0&d>>>0>2147483647){d=f;if((d|0)==0|(d|0)==-1)d=18;else{_b[f&31](c);d=18}}else d=kh(a,b,c,d,f,0)|0;return d|0}function le(a,b,d){a=a|0;b=b|0;d=+d;var e=0;e=lh(a,b)|0;if(!e)Ug((c[a+60>>2]|0)+((b+-1|0)*40|0)|0,d);return e|0}function me(a,b,c){a=a|0;b=b|0;c=c|0;return ne(a,b,c,((c|0)<0)<<31>>31)|0}function ne(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=lh(a,d)|0;do if(!g){d=d+-1|0;h=c[a+60>>2]|0;a=h+(d*40|0)|0;d=h+(d*40|0)+8|0;if(!(b[d>>1]&9312)){c[a>>2]=e;c[a+4>>2]=f;b[d>>1]=4;break}else{Vg(a,e,f);break}}while(0);return g|0}function oe(a,b){a=a|0;b=b|0;return lh(a,b)|0}function pe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return kh(a,b,c,d,e,1)|0}function qe(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;if(e>>>0>0|(e|0)==0&d>>>0>2147483647){d=f;if((d|0)==0|(d|0)==-1)d=18;else{_b[f&31](c);d=18}}else d=kh(a,b,c,d,f,g<<24>>24==4?2:g)|0;return d|0}function re(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return kh(a,b,c,d,e,2)|0}function se(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0;i=b[g+8>>1]|0;j=d[10064+(i&31)>>0]|0;do if((j|0)==3)i=kh(e,f,c[g+16>>2]|0,c[g+12>>2]|0,-1,a[g+10>>0]|0)|0;else if((j|0)==2)i=le(e,f,+h[g>>3])|0;else if((j|0)==4)if(!(i&16384)){i=kh(e,f,c[g+16>>2]|0,c[g+12>>2]|0,-1,0)|0;break}else{i=te(e,f,c[g>>2]|0)|0;break}else if((j|0)==1){i=g;i=ne(e,f,c[i>>2]|0,c[i+4>>2]|0)|0}else i=lh(e,f)|0;while(0);return i|0}function te(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=lh(a,b)|0;if(!e)Xg((c[a+60>>2]|0)+((b+-1|0)*40|0)|0,d);return e|0}function ue(a){a=a|0;if(!a)a=0;else a=b[a+68>>1]|0;return a|0}function ve(a,d){a=a|0;d=d|0;if(!((a|0)==0|(d|0)<1)?(b[a+70>>1]|0)>=(d|0):0)d=c[(c[a+64>>2]|0)+(d+-1<<2)>>2]|0;else d=0;return d|0}function we(b,c){b=b|0;c=c|0;var d=0;if(!c)d=0;else{d=c;while(1)if(!(a[d>>0]|0))break;else d=d+1|0;d=d-c&1073741823}return mh(b,c,d)|0}function xe(a,d){a=a|0;d=d|0;var e=0,f=0;if((b[a+68>>1]|0)==(b[d+68>>1]|0)){f=d+88|0;e=b[f>>1]|0;if((e&256)!=0?(c[d+188>>2]|0)!=0:0)b[f>>1]=e|8;e=a+88|0;f=b[e>>1]|0;if((f&256)!=0?(c[a+188>>2]|0)!=0:0)b[e>>1]=f|8;fh(a,d);e=0}else e=1;return e|0}function ye(a){a=a|0;if(!a)a=0;else a=c[a>>2]|0;return a|0}function ze(a){a=a|0;if(!a)a=1;else a=(e[a+88>>1]|0)>>>6&1;return a|0}function Ae(a){a=a|0;if((a|0)!=0?(c[a+76>>2]|0)>-1:0)a=(c[a+40>>2]|0)==-1108210269;else a=0;return a&1|0}function Be(a,b){a=a|0;b=b|0;if(!b)a=a+4|0;else a=b+52|0;return c[a>>2]|0}function Ce(a,b,d){a=a|0;b=b|0;d=d|0;a=a+(b<<2)+108|0;b=c[a>>2]|0;if(d)c[a>>2]=0;return b|0}function De(a){a=a|0;var b=0,c=0,f=0;c=a+8|0;f=e[c>>1]|0;b=d[10064+(f&31)>>0]|0;if((f&15|0)==2){nh(a,0);b=d[10064+((e[c>>1]|0)&31)>>0]|0}return b|0}function Ee(d,e,f,g,h,k,l,m){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var 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,O=0,P=0,Q=0,R=0;R=i;i=i+16|0;if((i|0)>=(j|0))ba();P=R;Q=R+4|0;c[Q>>2]=0;c[m>>2]=0;K=(l|0)!=0;L=K&1;N=ih(d,28,0)|0;do if(N){l=N+0|0;p=l+28|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(p|0));p=ih(d,536,0)|0;if(p){H=d+20|0;I=d+16|0;y=d+24|0;l=N+20|0;z=N+12|0;A=N+24|0;B=d+65|0;C=L^3;D=L|2;E=p+440|0;F=p+72|0;G=p+68|0;o=0;J=1;n=0;while(1){bw(p|0,0,536)|0;c[p>>2]=d;ig(d,o);c[Q>>2]=0;o=c[H>>2]|0;if((o|0)>0){q=c[I>>2]|0;s=0;do{r=c[q+(s<<4)+4>>2]|0;if(r)c[(c[r+4>>2]|0)+4>>2]=c[r>>2];s=s+1|0}while((s|0)!=(o|0))}x=oh(p,0,f,e)|0;if(!x)break;o=a[x+44>>0]|0;if(o&16){O=11;break}if(o&32){O=13;break}if(c[x+12>>2]|0){O=17;break}w=x+38|0;t=b[w>>1]|0;a:do if(t<<16>>16>0){s=c[x+4>>2]|0;r=t<<16>>16;o=0;while(1){q=o+1|0;if(!($c(c[s+(o*24|0)>>2]|0,g)|0)){q=o;break a}if((q|0)<(r|0))o=q;else break}}else q=0;while(0);if((q|0)==(t<<16>>16|0)){O=23;break}if(K){if((c[y>>2]&524288|0)!=0?(M=c[x+16>>2]|0,(M|0)!=0):0){u=M;o=0;do{t=c[u+20>>2]|0;if((t|0)>0){s=0;do{o=(c[u+(s<<3)+36>>2]|0)==(q|0)?10280:o;s=s+1|0}while((s|0)<(t|0))}u=c[u+4>>2]|0}while((u|0)!=0)}else o=0;s=c[x+8>>2]|0;if(s)do{r=b[s+46>>1]|0;if(r<<16>>16){v=c[s+4>>2]|0;t=r&65535;u=0;do{o=(b[v+(u<<1)>>1]|0)==(q|0)?10296:o;u=u+1|0}while((u|0)<(t|0))}s=c[s+20>>2]|0}while((s|0)!=0);if(o){O=36;break}}v=rh(p)|0;c[l>>2]=v;if(v){u=c[x+68>>2]|0;b:do if(u){t=c[H>>2]|0;if((t|0)>0){s=c[I>>2]|0;o=0;while(1){r=o+1|0;if((c[s+(o<<4)+12>>2]|0)==(u|0)){r=o;break b}if((r|0)<(t|0))o=r;else break}}else r=0}else r=-1e6;while(0);o=c[u+4>>2]|0;th(v,sh(v,4,r,L,c[u>>2]|0)|0,o,-14);o=v+4|0;s=c[o>>2]|0;t=v+32|0;if(s)a[s+(((c[t>>2]|0)+-1|0)*20|0)+3>>0]=1;uh(v,10,10120)|0;s=v+96|0;c[s>>2]=c[s>>2]|1<>2]|0)>>>0>1){u=c[o>>2]|0;c[u+24>>2]=r;s=x+32|0;c[u+28>>2]=c[s>>2];c[(c[o>>2]|0)+32>>2]=L}else s=x+32|0;th(v,1,c[x>>2]|0,0);vh(v,C);if((c[t>>2]|0)>>>0>D>>>0){c[(c[o>>2]|0)+(D*20|0)+8>>2]=c[s>>2];c[(c[o>>2]|0)+(D*20|0)+12>>2]=r}th(v,D,(b[w>>1]|0)+1|0,-14);if((c[t>>2]|0)>>>0>6)c[(c[o>>2]|0)+128>>2]=b[w>>1];if(!(a[B>>0]|0)){c[E>>2]=1;c[F>>2]=1;c[G>>2]=1;wh(v,p)}}c[N>>2]=L;c[z>>2]=q;c[A>>2]=d;if(a[B>>0]|0){O=57;break}ne(c[l>>2]|0,1,h,k)|0;n=xh(N,h,k,Q)|0;if(!((J|0)<50&(n|0)==17)){O=57;break}o=c[Q>>2]|0;J=J+1|0;n=17}if((O|0)==11){c[P>>2]=f;ph(p,10160,P)}else if((O|0)==13){c[P>>2]=f;ph(p,10192,P)}else if((O|0)==17){c[P>>2]=f;ph(p,10232,P)}else if((O|0)==23){ig(d,0);c[P>>2]=g;c[Q>>2]=qh(d,10256,P)|0;n=1;O=62;break}else if((O|0)==36){ig(d,0);c[P>>2]=o;c[Q>>2]=qh(d,10304,P)|0;n=1;O=62;break}else if((O|0)==57)if(!n){n=1;o=p;O=58;break}else{o=p;O=61;break}o=p+4|0;if(!(c[o>>2]|0)){n=1;O=62}else{ig(d,0);c[Q>>2]=c[o>>2];c[o>>2]=0;n=1;O=62}}else{n=1;o=p;O=58}}else{n=0;o=0;O=58}while(0);do if((O|0)==58)if(a[d+65>>0]|0)if(n){n=0;O=61;break}else{n=0;O=64;break}else{c[m>>2]=N;n=0;break}while(0);if((O|0)==61){l=N+20|0;p=o;O=62}if((O|0)==62){o=c[l>>2]|0;if(!o){o=p;O=64}else{Jg(o)|0;o=p;O=64}}if((O|0)==64)ig(d,N);H=c[Q>>2]|0;c[P>>2]=H;qg(d,n,(H|0)!=0?10344:0,P);ig(d,H);yh(o);ig(d,o);H=Kg(d,n)|0;i=R;return H|0}function Fe(a){a=a|0;var b=0,d=0;if(!a)a=0;else{d=c[a+24>>2]|0;b=id(c[a+20>>2]|0)|0;ig(d,a);a=b}return a|0}function Ge(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ah(a,b,c,d,18)|0}function He(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ah(a,b,c,d,19)|0}function Ie(a){a=a|0;if((a|0)!=0?(c[a+20>>2]|0)!=0:0)a=c[a+4>>2]|0;else a=0;return a|0}function Je(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();e=h;f=h+8|0;if(!a){c[e>>2]=77720;c[e+4>>2]=10788;Zc(21,13648,e);b=21}else{g=c[a+24>>2]|0;if(c[a+20>>2]|0){b=xh(a,b,d,f)|0;if(!b)b=0;else{d=c[f>>2]|0;c[e>>2]=d;qg(g,b,(d|0)!=0?10344:0,e);ig(g,d)}}else b=4;b=Kg(g,b)|0}i=h;return b|0}function Ke(a,d,e){a=a|0;d=d|0;e=e|0;c[a+284>>2]=d;c[a+288>>2]=e;a=c[a+4>>2]|0;if(a)do{e=a+88|0;b[e>>1]=b[e>>1]|8;a=c[a+52>>2]|0}while((a|0)!=0);return 0}function Le(a,b){a=a|0;b=b|0;return (Ch(a,b,10352,0)|0)==0|0}function Me(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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;B=i;i=i+16|0;if((i|0)>=(j|0))ba();m=B;x=B+12|0;y=B+8|0;c[y>>2]=0;do if(Dh(e)|0){l=(f|0)==0?10360:f;z=e+52|0;c[z>>2]=0;A=e+236|0;m=c[A>>2]|0;do if(m){f=m+8|0;if(!(b[f>>1]&9312)){b[f>>1]=1;break}else{rg(m);break}}while(0);u=(g|0)==0;v=e+24|0;m=0;a:while(1){do{if(m){n=39;break a}if(!(a[l>>0]|0)){m=0;n=39;break a}c[y>>2]=0;m=eh(e,l,-1,1,0,y,x)|0}while((m|0)!=0);l=c[y>>2]|0;if(!l){l=c[x>>2]|0;m=0;continue}t=b[l+84>>1]|0;r=t&65535;s=r<<3|1;t=t<<16>>16==0;f=0;n=0;o=0;b:do{m=Od(l)|0;do if(!u){p=(m|0)==100;if(!p){if((m|0)!=101|(o|0)!=0)break b;if(!(c[v>>2]&256)){o=0;break}}if(!o){f=ih(e,s,0)|0;if(!f){f=0;n=40;break a}bw(f|0,0,s|0)|0;if(t)q=1;else{o=0;do{c[f+(o<<2)>>2]=fe(l,o)|0;o=o+1|0}while((o|0)<(r|0));q=1}}else q=o;c:do if(p){n=f+(r<<2)|0;if(!t){o=0;while(1){p=be(l,o)|0;c[f+(o+r<<2)>>2]=p;if((p|0)==0?(w=c[y>>2]|0,(ee(w,o)|0)!=5):0){m=w;n=27;break a}o=o+1|0;if((o|0)>=(r|0))break c;l=c[y>>2]|0}}}while(0);if(!(lc[g&31](h,r,n,f)|0))o=q;else{l=f;n=31;break a}}while(0);l=c[y>>2]|0}while((m|0)==100);m=Jg(l)|0;c[y>>2]=0;l=c[x>>2]|0;while(1)if(!(a[10368+(d[l>>0]|0)>>0]&1))break;else l=l+1|0;ig(e,f)}do if((n|0)==27){a[e+65>>0]=1;l=m;m=100;n=40}else if((n|0)==31){Jg(c[y>>2]|0)|0;c[y>>2]=0;c[z>>2]=4;m=c[A>>2]|0;if(m){f=m+8|0;if(!(b[f>>1]&9312)){b[f>>1]=1;f=l;m=4;break}else{rg(m);f=l;m=4;break}}else{f=l;m=4}}else if((n|0)==39){l=c[y>>2]|0;f=0;n=40}while(0);if((n|0)==40)if(l)Jg(l)|0;ig(e,f);l=Kg(e,m)|0;f=(k|0)!=0;if(!((l|0)!=0&f)){if(!f)break;c[k>>2]=0;break}f=Oe(e)|0;if(!f)f=1;else{m=f;while(1)if(!(a[m>>0]|0))break;else m=m+1|0;f=(m-f&1073741823)+1|0}m=mg(f,((f|0)<0)<<31>>31)|0;c[k>>2]=m;if(m){gw(m|0,Oe(e)|0,f|0)|0;break}c[z>>2]=7;l=c[A>>2]|0;if(l){f=l+8|0;if(!(b[f>>1]&9312)){b[f>>1]=1;l=7;break}else{rg(l);l=7;break}}else l=7}else{c[m>>2]=101334;c[m+4>>2]=10788;Zc(21,13648,m);l=21}while(0);i=B;return l|0}function Ne(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return eh(a,b,c,1,0,d,e)|0}function Oe(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;do if(b){f=c[b+76>>2]|0;if(!((f|0)==1266094736|(f|0)==-1607883113|(f|0)==-264537850)){c[d>>2]=15248;Zc(21,15256,d);c[d>>2]=129635;c[d+4>>2]=10788;Zc(21,13648,d);d=16120;break}if(!(a[b+65>>0]|0)){d=Og(c[b+236>>2]|0,1)|0;if(!d){d=c[b+52>>2]|0;if((d|0)!=516){d=d&255;if(d>>>0>26|(d|0)==2)d=16328;else d=c[15488+(d<<2)>>2]|0}else d=16344}}else d=15776}else d=15776;while(0);i=e;return d|0}function Pe(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))ba();s=u;t=u+8|0;r=c[b>>2]|0;c[t>>2]=0;m=(d|0)==0;if(m)g=0;else{l=d;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;g=l-d&1073741823}p=g+300|0;o=(f|0)!=0;if(o)c[f>>2]=0;do if(!(c[b+24>>2]&4194304))if(o){c[f>>2]=Wc(25216,s)|0;g=1}else g=1;else{n=(e|0)!=0?e:41192;k=r+40|0;l=nc[c[k>>2]&127](r,d)|0;if(!l){c[s>>2]=d;c[s+4>>2]=41184;h=Wc(27824,s)|0;if(!h){g=7;break}l=nc[c[k>>2]&127](r,h)|0;Sc(h);if(!l){if(!o){g=1;break}l=Pc(p)|0;c[t>>2]=l;c[f>>2]=l;if(!l){g=1;break}c[s>>2]=d;Yc(p,l,41216,s)|0;ic[c[r+44>>2]&63](r,g+299|0,l);g=1;break}else q=l}else q=l;g=r+48|0;l=Yb[c[g>>2]&63](r,q,n)|0;if((l|0)==0&(e|0)==0){if(m)l=0;else{l=d;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;l=l-d&1073741823}e=Pc(l+30|0)|0;if(!e){fc[c[r+52>>2]&15](r,q);g=7;break}n=e;m=n;a[m>>0]=115;a[m+1>>0]=113;a[m+2>>0]=108;a[m+3>>0]=105;n=n+4|0;a[n>>0]=116;a[n+1>>0]=101;a[n+2>>0]=51;a[n+3>>0]=95;while(1){k=l+-1|0;if((l|0)<=0)break;if((a[d+k>>0]|0)==47)break;else l=k}h=(Bc(d+l|0,41256,3)|0)==0;k=8;h=h?l+3|0:l;while(1){l=a[d+h>>0]|0;if(l<<24>>24==0|l<<24>>24==46){l=k;break}if(!(a[10368+(l&255)>>0]&2))l=k;else{a[e+k>>0]=a[9328+(l<<24>>24)>>0]|0;l=k+1|0}k=l;h=h+1|0}l=e+l|0;a[l+0>>0]=a[41264]|0;a[l+1>>0]=a[41265]|0;a[l+2>>0]=a[41266]|0;a[l+3>>0]=a[41267]|0;a[l+4>>0]=a[41268]|0;a[l+5>>0]=a[41269]|0;l=Yb[c[g>>2]&63](r,q,e)|0;g=e;h=e}else{g=0;h=n}if(!l){if(o){if(!h)l=0;else{l=h;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;l=l-h&1073741823}l=l+p|0;k=Pc(l)|0;c[t>>2]=k;c[f>>2]=k;if(k){c[s>>2]=h;c[s+4>>2]=d;Yc(l,k,41272,s)|0;ic[c[r+44>>2]&63](r,l+-1|0,k)}}fc[c[r+52>>2]&15](r,q);Sc(g);g=1;break}Sc(g);if(Yb[l&63](b,t,13776)|0){if(o){c[s>>2]=c[t>>2];c[f>>2]=Wc(41320,s)|0}Sc(c[t>>2]|0);fc[c[r+52>>2]&15](r,q);g=1;break}k=b+168|0;g=(c[k>>2]<<2)+4|0;l=ih(b,g,0)|0;if(!l)g=7;else{bw(l|0,0,g|0)|0;g=c[k>>2]|0;h=b+172|0;if((g|0)>0)gw(l|0,c[h>>2]|0,g<<2|0)|0;ig(b,c[h>>2]|0);c[h>>2]=l;g=c[k>>2]|0;c[k>>2]=g+1;c[l+(g<<2)>>2]=q;g=0}}while(0);q=Kg(b,g)|0;i=u;return q|0}function Qe(a){a=a|0;var b=0,d=0,e=0,f=0;b=Hc()|0;if(!b){f=c[2656]|0;a:do if((f|0)>0){d=c[2658]|0;e=0;while(1){b=e+1|0;if((c[d+(e<<2)>>2]|0)==(a|0)){b=e;break a}if((b|0)<(f|0))e=b;else break}}else b=0;while(0);if((b|0)==(f|0)){b=Tc(c[2658]|0,(f<<2)+4|0)|0;if(!b)b=7;else{c[2658]=b;d=c[2656]|0;c[b+(d<<2)>>2]=a;c[2656]=d+1;b=0}}else b=0}return b|0}function Re(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=c[2656]|0;f=c[2658]|0;d=e;while(1){if((d|0)<=0){b=0;break}d=d+-1|0;b=f+(d<<2)|0;if((c[b>>2]|0)==(a|0)){g=4;break}}if((g|0)==4){d=e+-1|0;c[2656]=d;c[b>>2]=c[f+(d<<2)>>2];b=1}return b|0}function Se(){if(!(Hc()|0)){Sc(c[2658]|0);c[2658]=0;c[2656]=0}return}function Te(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return eh(a,b,c,0,0,d,e)|0}function Ue(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Eh(a,b,c,0,d,e)|0}function Ve(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Eh(a,b,c,1,d,e)|0}function We(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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;v=i;i=i+32|0;if((i|0)>=(j|0))ba();n=v;q=v+4|0;c[d>>2]=0;r=(f|0)!=0;if(r)c[f>>2]=0;s=(e|0)!=0;if(s)c[e>>2]=0;l=(g|0)!=0;if(l)c[g>>2]=0;m=q+4|0;c[m>>2]=0;t=q+12|0;c[t>>2]=0;u=q+16|0;c[u>>2]=0;k=q+20|0;c[k>>2]=1;o=q+8|0;c[o>>2]=20;p=q+24|0;c[p>>2]=0;h=Pc(80)|0;c[q>>2]=h;a:do if(h){c[h>>2]=0;b=Me(a,b,20,q,g)|0;c[c[q>>2]>>2]=c[k>>2];if((b&255|0)==4){Xe((c[q>>2]|0)+4|0);b=c[m>>2]|0;if(b){if(l){Sc(c[g>>2]|0);c[n>>2]=c[m>>2];c[g>>2]=Wc(10344,n)|0;b=c[m>>2]|0}Sc(b)}b=c[p>>2]|0;c[a+52>>2]=b;break}Sc(c[m>>2]|0);if(b){Xe((c[q>>2]|0)+4|0);break}h=c[k>>2]|0;b=c[q>>2]|0;do if((c[o>>2]|0)>>>0>h>>>0){b=Tc(b,h<<2)|0;if(!b){Xe((c[q>>2]|0)+4|0);c[a+52>>2]=7;b=7;break a}else{c[q>>2]=b;break}}while(0);c[d>>2]=b+4;if(r)c[f>>2]=c[u>>2];if(s){c[e>>2]=c[t>>2];b=0}else b=0}else{c[a+52>>2]=7;b=7}while(0);i=v;return b|0}function Xe(a){a=a|0;var b=0,d=0,e=0,f=0;if(a){b=a+-4|0;e=c[b>>2]|0;d=e;if((e|0)>1){f=1;do{e=c[a+(f+-1<<2)>>2]|0;if(e)Sc(e);f=f+1|0}while((f|0)<(d|0))}Sc(b)}return}function Ye(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Gh(a,b,c,d,0)|0}function Ze(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Gh(a,b,c,d,e)|0}function _e(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();o=p;g=p+8|0;c[g>>2]=0;h=d+324|0;f=c[h>>2]|0;if((f|0)!=0?(m=c[f+4>>2]|0,(m|0)!=0):0){n=ih(d,536,0)|0;if(!n)e=7;else{bw(n|0,0,536)|0;k=n+451|0;a[k>>0]=1;c[n>>2]=d;c[n+424>>2]=1;if(((((Hh(n,e,g)|0)==0?(l=c[n+484>>2]|0,(l|0)!=0):0)?(a[d+65>>0]|0)==0:0)?(c[l+12>>2]|0)==0:0)?(a[l+44>>0]&16)==0:0){f=m+4|0;if(!(c[f>>2]|0)){o=l+4|0;c[f>>2]=c[o>>2];l=l+38|0;b[m+38>>1]=b[l>>1]|0;b[l>>1]=0;c[o>>2]=0}c[(c[h>>2]|0)+4>>2]=0;e=0}else{e=c[g>>2]|0;c[o>>2]=e;qg(d,1,(e|0)!=0?10344:0,o);ig(d,e);e=1}a[k>>0]=0;f=c[n+8>>2]|0;if(f)Jg(f)|0;gg(d,c[n+484>>2]|0);yh(n);ig(d,n)}e=Kg(d,e)|0}else{c[d+52>>2]=21;f=c[d+236>>2]|0;do if(f){e=f+8|0;if(!(b[e>>1]&9312)){b[e>>1]=1;break}else{rg(f);break}}while(0);c[o>>2]=114865;c[o+4>>2]=10788;Zc(21,13648,o);e=21}i=p;return e|0}function $e(a){a=a|0;return d[10640+((d[a+69>>0]|0)+-1)>>0]|0|0}function af(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;l=i;i=i+32|0;if((i|0)>=(j|0))ba();h=l;g=l+8|0;c[g>>2]=f;do if((e|0)==1){e=c[d+324>>2]|0;if(!e){c[h>>2]=115248;c[h+4>>2]=10788;Zc(21,13648,h);k=6;break}else{d=c[g>>2]|0;f=c[d>>2]|0;c[g>>2]=d+4;a[(c[e>>2]|0)+16>>0]=f;e=0;break}}else{c[h>>2]=115256;c[h+4>>2]=10788;Zc(21,13648,h);k=6}while(0);do if((k|0)==6){c[d+52>>2]=21;e=c[d+236>>2]|0;if(e){f=e+8|0;if(!(b[f>>1]&9312)){b[f>>1]=1;e=21;break}else{rg(e);e=21;break}}else e=21}while(0);i=l;return e|0}function bf(b){b=b|0;var c=0,e=0,f=0,g=0,h=0;c=a[b>>0]|0;a:do if(c<<24>>24){g=c;c=0;b:while(1){f=g<<24>>24;switch(f|0){case 45:{if((a[b+1>>0]|0)==45){e=g;while(1){f=e<<24>>24==0;g=b+1|0;if(!(e<<24>>24!=10&(f^1)))break;b=g;e=a[g>>0]|0}if(f){h=13;break b}else e=1}else e=2;break}case 91:{do{b=b+1|0;f=a[b>>0]|0;e=f<<24>>24==0}while(f<<24>>24!=93&(e^1));if(e){c=0;break a}else e=2;break}case 12:case 10:case 9:case 13:case 32:{e=1;break}case 39:case 34:case 96:{do{b=b+1|0;f=a[b>>0]|0;e=f<<24>>24==0}while(f<<24>>24!=g<<24>>24&(e^1));if(e){c=0;break a}else e=2;break}case 47:{if((a[b+1>>0]|0)==42){b=b+2|0;while(1){e=a[b>>0]|0;if(e<<24>>24==42){b=b+1|0;if((a[b>>0]|0)==47){e=1;break}else continue}else if(!(e<<24>>24)){c=0;break a}else{b=b+1|0;continue}}}else e=2;break}case 59:{e=0;break}default:if(!(a[10368+(g&255)>>0]&70))e=2;else{e=1;while(1)if(!(a[10368+(d[b+e>>0]|0)>>0]&70)){g=e;break}else e=e+1|0;c:do switch(f|0){case 67:case 99:{if((g|0)==6?(Bc(b,10712,6)|0)==0:0){e=4;break c}e=2;break}case 84:case 116:{if((g|0)==7){if(!(Bc(b,10720,7)|0)){e=6;break c}}else if((g|0)==4){if(!(Bc(b,10728,4)|0)){e=5;break c}}else if((g|0)==9?(Bc(b,10736,9)|0)==0:0){e=5;break c}e=2;break}case 69:case 101:{if((g|0)==3){if(!(Bc(b,10752,3)|0)){e=7;break c}}else if((g|0)==7?(Bc(b,10760,7)|0)==0:0){e=3;break c}e=2;break}default:e=2}while(0);b=b+(g+-1)|0}}c=a[(e&255)+(10648+((c&255)<<3))>>0]|0;b=b+1|0;g=a[b>>0]|0;if(!(g<<24>>24)){h=35;break}}if((h|0)==13){c=c<<24>>24==1&1;break}else if((h|0)==35){c=c<<24>>24==1;h=36;break}}else{c=0;h=36}while(0);if((h|0)==36)c=c&1;return c|0}function cf(d){d=d|0;var e=0,f=0,g=0;e=Hc()|0;if(!e){f=mg(40,0)|0;if(f){e=f+0|0;g=e+40|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(g|0));b[f+8>>1]=1;c[f+32>>2]=0;Tg(f,d,-1,2,0)|0}e=Og(f,1)|0;if(!e)e=7;else e=(bf(e)|0)&255;Ih(f)}return e|0}function df(){return 8632}function ef(){return 10768}function ff(){return 3008009}function gf(){return 0}function hf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+32|0;if((i|0)>=(j|0))ba();d=f;e=f+8|0;if(!(c[2243]|0)){c[e>>2]=b;do switch(a|0){case 5:{if(!(c[2195]|0)){c[d>>2]=16496;hf(4,d)|0}a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[d+0>>2]=c[2195];c[d+4>>2]=c[2196];c[d+8>>2]=c[2197];c[d+12>>2]=c[2198];c[d+16>>2]=c[2199];c[d+20>>2]=c[2200];c[d+24>>2]=c[2201];c[d+28>>2]=c[2202];d=0;break}case 17:{a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2189]=d;d=0;break}case 20:{a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2190]=d;d=0;break}case 19:{if(!(c[2214]|0)){c[d>>2]=16440;hf(18,d)|0}a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;d=d+0|0;a=8848|0;e=d+52|0;do{c[d>>2]=c[a>>2];d=d+4|0;a=a+4|0}while((d|0)<(e|0));d=0;break}case 16:{d=c[e>>2]|0;a=c[d>>2]|0;c[e>>2]=d+4;c[2250]=a;a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2251]=d;d=0;break}case 13:{d=c[e>>2]|0;a=c[d>>2]|0;c[e>>2]=d+4;c[2193]=a;a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2194]=d;d=0;break}case 7:{a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2237]=d;d=c[e>>2]|0;a=c[d>>2]|0;c[e>>2]=d+4;c[2238]=a;a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2239]=d;d=0;break}case 24:{a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[d>>2]=152;d=0;break}case 15:{d=1;break}case 4:{a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2195]=c[d+0>>2];c[2196]=c[d+4>>2];c[2197]=c[d+8>>2];c[2198]=c[d+12>>2];c[2199]=c[d+16>>2];c[2200]=c[d+20>>2];c[2201]=c[d+24>>2];c[2202]=c[d+28>>2];d=0;break}case 18:{d=c[e>>2]|0;a=c[d>>2]|0;c[e>>2]=d+4;d=8848|0;a=a+0|0;e=d+52|0;do{c[d>>2]=c[a>>2];d=d+4|0;a=a+4|0}while((d|0)<(e|0));d=0;break}case 6:{a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2234]=d;d=c[e>>2]|0;a=c[d>>2]|0;c[e>>2]=d+4;c[2235]=a;a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2236]=d;d=0;break}case 9:{a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2186]=d;d=0;break}case 22:{c[e>>2]=(c[e>>2]|0)+8;c[e>>2]=(c[e>>2]|0)+8;c[2230]=0;c[2231]=0;c[2232]=0;c[2233]=0;d=0;break}case 25:{a=c[e>>2]|0;d=c[a>>2]|0;c[e>>2]=a+4;c[2242]=d;d=0;break}case 14:{d=0;break}default:d=1}while(0)}else{c[d>>2]=127883;c[d+4>>2]=10788;Zc(21,13648,d);d=21}i=f;return d|0}function jf(a){a=a|0;return c[a+12>>2]|0}function kf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=a+20|0;b=c[h>>2]|0;f=(b|0)>0;if(f){e=c[a+16>>2]|0;g=0;do{d=c[e+(g<<4)+4>>2]|0;if(d)c[(c[d+4>>2]|0)+4>>2]=c[d>>2];g=g+1|0}while((g|0)!=(b|0));if(f){f=a+16|0;e=0;do{d=c[(c[f>>2]|0)+(e<<4)+4>>2]|0;if(d){_b[c[8744+152>>2]&31](c[(c[(c[c[d+4>>2]>>2]|0)+204>>2]|0)+40>>2]|0);b=c[h>>2]|0}e=e+1|0}while((e|0)<(b|0))}}return 0}function lf(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();h=l;c[h>>2]=e;a:do if((d|0)!=1001){e=0;while(1){if((c[10936+(e<<3)>>2]|0)==(d|0))break;e=e+1|0;if(e>>>0>=2){f=1;break a}}g=c[h>>2]|0;d=c[g>>2]|0;c[h>>2]=g+4;g=c[h>>2]|0;k=c[g>>2]|0;c[h>>2]=g+4;h=a+24|0;g=c[h>>2]|0;if((d|0)<=0)if(!d){d=g&~c[10940+(e<<3)>>2];c[h>>2]=d}else d=g;else{d=c[10940+(e<<3)>>2]|g;c[h>>2]=d}if((g|0)!=(d|0)?(f=c[a+4>>2]|0,(f|0)!=0):0)do{d=f+88|0;b[d>>1]=b[d>>1]|8;f=c[f+52>>2]|0}while((f|0)!=0);if(!k)f=0;else{c[k>>2]=(c[10940+(e<<3)>>2]&c[h>>2]|0)!=0&1;f=0}}else{g=c[h>>2]|0;d=c[g>>2]|0;c[h>>2]=g+4;g=c[h>>2]|0;e=c[g>>2]|0;c[h>>2]=g+4;g=c[h>>2]|0;f=c[g>>2]|0;c[h>>2]=g+4;f=Jh(a,d,e,f)|0}while(0);i=l;return f|0}function mf(a){a=a|0;a=a+32|0;C=c[a+4>>2]|0;return c[a>>2]|0}function nf(a){a=a|0;return c[a+80>>2]|0}function of(a){a=a|0;return c[a+84>>2]|0}function pf(a){a=a|0;return Kh(a,0)|0}function qf(a){a=a|0;return Kh(a,1)|0}function rf(a,b,d){a=a|0;b=b|0;d=d|0;c[a+444>>2]=b;c[a+448>>2]=d;c[a+452>>2]=0;c[a+492>>2]=0;return 0}function sf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)>0;c[a+292>>2]=f?d:0;c[a+300>>2]=f?b:0;c[a+296>>2]=f?e:0;return}function tf(a,b){a=a|0;b=b|0;var d=0;d=(b|0)>0;c[a+444>>2]=d?74:0;c[a+448>>2]=d?a:0;c[a+452>>2]=0;c[a+492>>2]=d?b:0;return 0}function uf(a){a=a|0;c[a+240>>2]=1;return}function vf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Kg(a,Mh(a,b,c,d,e,f,g,h,0)|0)|0}function wf(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0;do if(k){l=ih(b,12,0)|0;if(!l){_b[k&31](g);f=1;break}m=l;n=m;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;c[l+4>>2]=k;c[l+8>>2]=g;f=Mh(b,d,e,f,g,h,i,j,l)|0;if(!(c[l>>2]|0)){_b[k&31](g);ig(b,l)}}else f=Mh(b,d,e,f,g,h,i,j,0)|0;while(0);return Kg(b,f)|0}function xf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;b=Nh(a,b,-1)|0;d=Mh(a,b,c,d,e,f,g,h,0)|0;ig(a,b);return Kg(a,d)|0}function yf(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(!c)e=0;else{e=c;while(1)if(!(a[e>>0]|0))break;else e=e+1|0;e=e-c&1073741823}if(!(Oh(b,c,e,d,1,0)|0))e=Mh(b,c,d,1,0,57,0,0,0)|0;else e=0;return Kg(b,e)|0}function zf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+180|0;e=c[f>>2]|0;c[a+176>>2]=b;c[f>>2]=d;return e|0}function Af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+188|0;e=c[f>>2]|0;c[a+184>>2]=b;c[f>>2]=d;return e|0}function Bf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+192|0;e=c[f>>2]|0;c[a+196>>2]=b;c[f>>2]=d;return e|0}function Cf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+208|0;e=c[f>>2]|0;c[a+212>>2]=b;c[f>>2]=d;return e|0}function Df(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+200|0;e=c[f>>2]|0;c[a+204>>2]=b;c[f>>2]=d;return e|0}function Ef(a,b){a=a|0;b=b|0;var d=0;if((b|0)>0)d=21;else{b=0;d=0}c[a+216>>2]=d;c[a+220>>2]=b;return 0}function Ff(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+220|0;e=c[f>>2]|0;c[a+216>>2]=b;c[f>>2]=d;return e|0}function Gf(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();k=n;if(g)c[g>>2]=-1;if(h)c[h>>2]=-1;if(f>>>0>3)e=21;else{if((e|0)!=0?(a[e>>0]|0)!=0:0){l=Rh(d,e)|0;if((l|0)<0){c[k>>2]=e;qg(d,1,10952,k);e=1}else m=10}else{l=10;m=10}do if((m|0)==10){c[d+452>>2]=0;e=Sh(d,l,f,g,h)|0;c[d+52>>2]=e;k=c[d+236>>2]|0;if(k){l=k+8|0;if(!(b[l>>1]&9312)){b[l>>1]=1;break}else{rg(k);break}}}while(0);e=Kg(d,e)|0}i=n;return e|0}function Hf(a,b){a=a|0;b=b|0;return Gf(a,b,0,0,0)|0}function If(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;do if(b){d=c[b+76>>2]|0;if(!((d|0)==1266094736|(d|0)==-1607883113|(d|0)==-264537850)){c[g>>2]=15248;Zc(21,15256,g);d=11008;break}h=b+65|0;if(!(a[h>>0]|0)){f=b+236|0;d=Og(c[f>>2]|0,2)|0;if(!d){e=c[b+52>>2]|0;if((e|0)!=516){d=e&255;if(d>>>0>26|(d|0)==2)d=16328;else d=c[15488+(d<<2)>>2]|0}else d=16344;qg(b,e,d,g);d=Og(c[f>>2]|0,2)|0}a[h>>0]=0}else d=10976}else d=10976;while(0);i=k;return d|0}function Jf(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;do if(b){f=c[b+76>>2]|0;if(!((f|0)==1266094736|(f|0)==-1607883113|(f|0)==-264537850)){c[d>>2]=15248;Zc(21,15256,d);c[d>>2]=129704;c[d+4>>2]=10788;Zc(21,13648,d);b=21;break}if(!(a[b+65>>0]|0))b=c[b+56>>2]&c[b+52>>2];else b=7}else b=7;while(0);i=e;return b|0}function Kf(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;do if(b){f=c[b+76>>2]|0;if(!((f|0)==1266094736|(f|0)==-1607883113|(f|0)==-264537850)){c[d>>2]=15248;Zc(21,15256,d);c[d>>2]=129713;c[d+4>>2]=10788;Zc(21,13648,d);b=21;break}if(!(a[b+65>>0]|0))b=c[b+52>>2]|0;else b=7}else b=7;while(0);i=e;return b|0}function Lf(a){a=a|0;if((a|0)!=516){a=a&255;if(a>>>0>26|(a|0)==2)a=16328;else a=c[15488+(a<<2)>>2]|0}else a=16344;return a|0}function Mf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b>>>0<=11){e=a+(b<<2)+88|0;a=c[e>>2]|0;if((d|0)>-1){b=c[11088+(b<<2)>>2]|0;c[e>>2]=(b|0)<(d|0)?b:d}}else a=-1;return a|0}function Nf(a,b){a=a|0;b=b|0;return Th(a,b,6,0)|0}function Of(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Th(a,b,c,d)|0}function Pf(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;c[e>>2]=0;f=Hc()|0;if(!f){h=mg(40,0)|0;if(h){d=(d|0)==0?11136:d;f=h+0|0;g=f+40|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));b[h+8>>1]=1;c[h+32>>2]=0;Tg(h,d,-1,2,0)|0}d=Og(h,1)|0;if(d){f=Th(d,e,6,0)|0;if(!f){f=c[e>>2]|0;d=c[(c[f+16>>2]|0)+12>>2]|0;if(!(b[d+78>>1]&1)){a[f+62>>0]=2;a[d+77>>0]=2;f=0}else f=0}}else f=7;Ih(h);f=f&255}return f|0}function Qf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Kg(a,Uh(a,b,c&255,d,e,0)|0)|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;return Kg(a,Uh(a,b,c&255,d,e,f)|0)|0}function Sf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Nh(a,b,-1)|0;if(!b)b=0;else{c=Uh(a,b,c&255,d,e,0)|0;ig(a,b);b=c}return Kg(a,b)|0}function Tf(a,b,d){a=a|0;b=b|0;d=d|0;c[a+224>>2]=d;c[a+228>>2]=0;c[a+232>>2]=b;return 0}function Uf(a,b,d){a=a|0;b=b|0;d=d|0;c[a+224>>2]=0;c[a+228>>2]=d;c[a+232>>2]=b;return 0}function Vf(a){a=a|0;return d[a+63>>0]|0|0}function Wf(){return}function Xf(d,e,f,g,h,k,l,m,n){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;var 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=i;i=i+16|0;if((i|0)>=(j|0))ba();x=z;y=z+8|0;c[y>>2]=0;p=c[d+20>>2]|0;if((p|0)>0){o=c[d+16>>2]|0;r=0;do{q=c[o+(r<<4)+4>>2]|0;if(q)c[(c[q+4>>2]|0)+4>>2]=c[q>>2];r=r+1|0}while((r|0)!=(p|0))}o=Vh(d,y)|0;w=(o|0)!=0;a:do if((!w?(u=Wh(d,f,e)|0,(u|0)!=0):0)?(c[u+12>>2]|0)==0:0){do if(g){t=b[u+38>>1]|0;b:do if(t<<16>>16>0){e=c[u+4>>2]|0;p=t<<16>>16;s=0;while(1){q=e+(s*24|0)|0;r=s+1|0;if(!($c(c[q>>2]|0,g)|0)){r=s;break b}if((r|0)<(p|0))s=r;else break}}else{r=0;q=0}while(0);if((r|0)==(t<<16>>16|0)){if(a[u+44>>0]&32){e=0;t=0;u=0;q=0;s=0;r=0;break a}if(!(Xh(g)|0)){e=0;t=0;u=0;q=0;s=0;r=0;break a}v=b[u+36>>1]|0;p=v<<16>>16;if(v<<16>>16<=-1){e=0;s=0;p=1;v=0;r=11144;break}r=p;q=(c[u+4>>2]|0)+(p*24|0)|0}if(q){if((b[u+36>>1]|0)==(r|0))p=(a[u+44>>0]&8)!=0;else p=0;e=p&1;s=(a[q+20>>0]|0)!=0&1;p=a[q+23>>0]&1;v=c[q+16>>2]|0;r=c[q+12>>2]|0}else{e=0;s=0;p=1;v=0;r=11144}}else{e=0;s=0;p=1;v=0;r=11144}while(0);t=s;q=p;s=(v|0)==0?11152:v}else{e=0;t=0;u=0;q=0;s=0;r=0}while(0);if(h)c[h>>2]=r;if(k)c[k>>2]=s;if(l)c[l>>2]=t;if(m)c[m>>2]=q;if(n)c[n>>2]=e;p=c[y>>2]|0;if(!(w|(u|0)!=0)){ig(d,p);c[x>>2]=f;c[x+4>>2]=g;p=qh(d,11160,x)|0;c[y>>2]=p;o=1}c[x>>2]=p;qg(d,o,(p|0)!=0?10344:0,x);ig(d,c[y>>2]|0);w=Kg(d,o)|0;i=z;return w|0}function Yf(a){a=a|0;var b=0;if((Hc()|0)==0?(b=c[2254]|0,(b|0)!=0):0)a=(nc[c[b+60>>2]&127](b,a*1e3|0)|0)/1e3|0;else a=0;return a|0}function Zf(a,b){a=a|0;b=b|0;c[a+56>>2]=(b|0)!=0?-1:255;return 0}function _f(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=Yh(a,b)|0;do if(b){a=c[b+4>>2]|0;c[a+4>>2]=c[b>>2];a=c[(c[a>>2]|0)+60>>2]|0;if((d|0)==7){c[e>>2]=a;b=0;break}b=c[a>>2]|0;if(!b)b=12;else b=Yb[c[b+40>>2]&63](a,d,e)|0}else b=1;while(0);return b|0}function $f(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=i;i=i+32|0;if((i|0)>=(j|0))ba();p=q+24|0;h=q+8|0;g=q;c[h>>2]=f;do switch(e|0){case 8:{o=c[h>>2]|0;n=c[o>>2]|0;c[h>>2]=o+4;o=c[h>>2]|0;k=c[o>>2]|0;c[h>>2]=o+4;o=mg(512,0)|0;g=(o|0)==0;if(!g){bw(o|0,0,512)|0;c[o>>2]=n}e=((n+7|0)/8|0)+1|0;m=mg(e,((e|0)<0)<<31>>31)|0;f=(m|0)==0;if(!f)bw(m|0,0,e|0)|0;l=Pc(512)|0;a:do if(!(g|f|(l|0)==0)){h=0;while(1){g=c[k+(h<<2)>>2]|0;if((g|0)==5|(g|0)==2|(g|0)==1){f=k+(h+2<<2)|0;r=c[f>>2]|0;e=r+-1|0;c[p>>2]=e;c[f>>2]=(c[k+(h+3<<2)>>2]|0)+r;f=4}else if(!g)break;else{_c(4,p);e=c[p>>2]|0;f=2}s=k+((h|1)<<2)|0;r=(c[s>>2]|0)+-1|0;c[s>>2]=r;h=((r|0)>0?0:f)+h|0;e=(e&2147483647|0)%(n|0)|0;c[p>>2]=e;e=e+1|0;f=1<<(e&7);if(!(g&1)){e=m+(e>>>3)|0;a[e>>0]=d[e>>0]&(f^255);_h(o,(c[p>>2]|0)+1|0,l);continue}e=m+(e>>>3)|0;a[e>>0]=d[e>>0]|f;if((g|0)==5)continue;if(Zh(o,(c[p>>2]|0)+1|0)|0){g=-1;break a}}k=$h(o,n+1|0)|0;g=$h(o,0)|0;g=k-n+g+(c[o>>2]|0)|0;c[p>>2]=1;if((n|0)>=1){e=1;do{k=(d[m+(e>>3)>>0]&1<<(e&7)|0)!=0&1;f=e;e=e+1|0;if((k|0)!=($h(o,f)|0)){g=f;break a}c[p>>2]=e}while((f|0)<(n|0))}}else g=-1;while(0);Sc(l);Sc(m);ai(o);break}case 11:{g=c[2514]|0;p=c[h>>2]|0;f=c[p>>2]|0;c[h>>2]=p+4;if(f)c[2514]=f;break}case 12:{c[g>>2]=0;g=c[g>>2]|0;break}case 13:{p=c[h>>2]|0;g=c[p>>2]|0;c[h>>2]=p+4;break}case 22:{g=10;break}case 5:{gw(12672,9064,259)|0;g=0;break}case 6:{gw(9064,12672,259)|0;g=0;break}case 7:{if(!(Hc()|0)){a[9064]=0;g=0}else g=0;break}case 14:{o=c[h>>2]|0;p=c[o>>2]|0;c[h>>2]=o+4;o=c[h>>2]|0;g=c[o>>2]|0;c[h>>2]=o+4;tg(c[(c[p+16>>2]|0)+4>>2]|0,0,g,0)|0;g=0;break}case 15:{o=c[h>>2]|0;g=c[o>>2]|0;c[h>>2]=o+4;o=c[h>>2]|0;p=c[o>>2]|0;c[h>>2]=o+4;b[g+60>>1]=p;g=0;break}case 16:{p=c[h>>2]|0;e=c[p>>2]|0;c[h>>2]=p+4;if(!e)g=0;else{g=e;while(1)if(!(a[g>>0]|0))break;else g=g+1|0;g=g-e&1073741823}g=(bi(e,g)|0)!=27;g=g?124:0;break}case 24:{o=c[h>>2]|0;g=c[o>>2]|0;c[h>>2]=o+4;o=c[h>>2]|0;p=c[o>>2]|0;c[h>>2]=o+4;c[g+136>>2]=p;g=0;break}case 23:{g=(c[2243]|0)==0&1;break}case 25:{n=c[h>>2]|0;g=c[n>>2]|0;c[h>>2]=n+4;n=c[h>>2]|0;o=c[n>>2]|0;c[h>>2]=n+4;a[g+144>>0]=Rh(g,o)|0;o=c[h>>2]|0;n=c[o>>2]|0;c[h>>2]=o+4;n=n&255;a[g+147>>0]=n;o=g+145|0;a[o>>0]=n;n=c[h>>2]|0;p=c[n>>2]|0;c[h>>2]=n+4;c[g+140>>2]=p;if((a[o>>0]|0)==0&(p|0)>0){Ag(g);g=0}else g=0;break}case 17:{p=c[h>>2]|0;f=c[p>>2]|0;c[h>>2]=p+4;p=c[h>>2]|0;g=c[p>>2]|0;c[h>>2]=p+4;p=c[h>>2]|0;e=c[p>>2]|0;c[h>>2]=p+4;if(f)c[g>>2]=ci(f)|0;di(e);g=0;break}case 18:{p=c[h>>2]|0;g=c[p>>2]|0;c[h>>2]=p+4;c[2253]=g;g=0;break}case 20:{p=c[h>>2]|0;g=c[p>>2]|0;c[h>>2]=p+4;c[2192]=g;g=0;break}case 9:{p=c[h>>2]|0;g=c[p>>2]|0;c[h>>2]=p+4;c[2252]=g;if(!g)g=0;else g=hc[g&127](0)|0;break}case 10:{o=c[h>>2]|0;p=c[o>>2]|0;c[h>>2]=o+4;o=c[h>>2]|0;g=c[o>>2]|0;c[h>>2]=o+4;c[3164]=p;c[3166]=g;g=0;break}default:g=0}while(0);i=q;return g|0}function ag(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:do if(!((b|0)==0|(c|0)==0)){d=b;while(1)if(!(a[d>>0]|0))break;else d=d+1|0;e=(d-b&1073741823)+1|0;d=a[b+e>>0]|0;if(d<<24>>24){g=b+e|0;while(1){f=Wv(g,c)|0;e=g;while(1){b=e+1|0;if(!(d<<24>>24))break;d=a[b>>0]|0;e=b}b=e-g&1073741823;d=g+(b+1)|0;if(!f)break a;else e=d;while(1)if(!(a[e>>0]|0))break;else e=e+1|0;g=g+(b+2+(e-d&1073741823))|0;d=a[g>>0]|0;if(!(d<<24>>24)){d=0;break}}}else d=0}else d=0;while(0);return d|0}function bg(a,b,c){a=a|0;b=b|0;c=c|0;a=ag(a,b)|0;b=(c|0)!=0;if(a)b=(ei(a,1,b&1)|0)<<24>>24!=0;return b&1|0}function cg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;a=ag(a,b)|0;if(!a){C=e;i=g;return d|0}else{b=(fi(a,f)|0)==0;a=f;C=b?c[a+4>>2]|0:e;i=g;return (b?c[a>>2]|0:d)|0}return 0}function dg(b,d){b=b|0;d=d|0;b=Yh(b,d)|0;if(b){b=c[c[b+4>>2]>>2]|0;if(!(a[b+15>>0]|0))b=c[b+168>>2]|0;else b=10360}else b=0;return b|0}function eg(a,d){a=a|0;d=d|0;a=Yh(a,d)|0;if(!a)a=-1;else a=b[(c[a+4>>2]|0)+22>>1]&1;return a|0}function fg(a,b){a=a|0;b=b|0;if(b){Bk(a,c[b+28>>2]|0);ig(a,c[b>>2]|0);ig(a,c[b+4>>2]|0);Ck(a,c[b+12>>2]|0);Dk(a,c[b+16>>2]|0);ig(a,b)}return}function gg(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;do if(d){h=(a|0)!=0;if(!(h?(c[a+520>>2]|0)!=0:0))e=4;if((e|0)==4?(f=d+40|0,e=(b[f>>1]|0)+-1<<16>>16,b[f>>1]=e,e<<16>>16!=0):0)break;e=c[d+8>>2]|0;if(e){g=a+520|0;do{f=e;e=c[e+20>>2]|0;if(!(h?(c[g>>2]|0)!=0:0))Ek((c[f+24>>2]|0)+24|0,c[f>>2]|0,0)|0;Fk(a,f)}while((e|0)!=0)}e=c[d+16>>2]|0;if(e){j=(a|0)==0;k=d+68|0;l=a+520|0;do{if(!(!j?(c[l>>2]|0)!=0:0)){f=e+16|0;i=c[f>>2]|0;h=e+12|0;g=c[h>>2]|0;if(!i)Ek((c[k>>2]|0)+56|0,c[((g|0)==0?e:g)+8>>2]|0,g)|0;else c[i+12>>2]=g;h=c[h>>2]|0;if(h)c[h+16>>2]=c[f>>2]}Gk(a,c[e+28>>2]|0);Gk(a,c[e+32>>2]|0);f=e;e=c[e+4>>2]|0;ig(a,f)}while((e|0)!=0)}Hk(a,d);ig(a,c[d>>2]|0);ig(a,c[d+20>>2]|0);Ik(a,c[d+12>>2]|0,1);Jk(a,c[d+24>>2]|0);if(!((a|0)!=0?(c[a+520>>2]|0)!=0:0))Kk(0,d)|0;h=d+56|0;e=c[h>>2]|0;if(e){i=d+52|0;f=c[i>>2]|0;if((f|0)>0){g=0;do{if((g|0)!=1){ig(a,c[(c[h>>2]|0)+(g<<2)>>2]|0);f=c[i>>2]|0}g=g+1|0}while((g|0)<(f|0));e=c[h>>2]|0}ig(a,e)}ig(a,d)}while(0);return}function hg(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;_g(c[d+60>>2]|0,b[d+68>>1]|0);h=d+16|0;_g(c[h>>2]|0,e[d+84>>1]<<1);f=c[d+192>>2]|0;if(f)do{g=f;f=c[f+24>>2]|0;Lk(a,c[g>>2]|0,c[g+4>>2]|0);ig(a,g)}while((f|0)!=0);f=b[d+70>>1]|0;if(f<<16>>16>0){g=d+64|0;f=f<<16>>16;do{f=f+-1|0;ig(a,c[(c[g>>2]|0)+(f<<2)>>2]|0)}while((f|0)>0)}Lk(a,c[d+4>>2]|0,c[d+32>>2]|0);ig(a,c[h>>2]|0);ig(a,c[d+168>>2]|0);ig(a,c[d+172>>2]|0);return}function ig(a,b){a=a|0;b=b|0;var d=0;do if(b){if(a){if(c[a+520>>2]|0){Mk(a,b);break}if((c[a+276>>2]|0)>>>0<=b>>>0?(c[a+280>>2]|0)>>>0>b>>>0:0){d=a+272|0;c[b>>2]=c[d>>2];c[d>>2]=b;a=a+252|0;c[a>>2]=(c[a>>2]|0)+-1;break}}Sc(b)}while(0);return}function jg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=c[e+24>>2]|0;if(!h)f=0;else{f=h;while(1)if(!(a[f>>0]|0))break;else f=f+1|0;f=f-h&1073741823}g=(((d[9328+(d[h>>0]|0)>>0]|0)+f|0)>>>0)%23|0;f=Nk(b,g,h,f)|0;if(!f){c[e+8>>2]=0;f=b+(g<<2)|0;c[e+28>>2]=c[f>>2];c[f>>2]=e}else{f=f+8|0;c[e+8>>2]=c[f>>2];c[f>>2]=e}return}function kg(a){a=a|0;var b=0,d=0;do if(a){b=c[2254]|0;if((b|0)==(a|0)){c[2254]=c[a+12>>2];break}if(b){do{d=b+12|0;b=c[d>>2]|0}while((b|0)!=(a|0)&(b|0)!=0);if((b|0)==(a|0))c[d>>2]=c[a+12>>2]}}while(0);return}function lg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;b=fw(a|0,b|0,-1,-1)|0;d=C;do if(!(d>>>0>0|(d|0)==0&b>>>0>2147483390)){if(!(c[2186]|0)){b=hc[c[8744+36>>2]&127](a)|0;break}d=hc[c[8744+52>>2]&127](a)|0;c[2171]=a;if((c[2181]|0)>>>0>>0)c[2181]=a;a=c[2260]|0;do if(a){b=c[2166]|0;e=9032|0;e=$v(c[e>>2]|0,c[e+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;f=C;if(0<(f|0)|0==(f|0)&b>>>0>>0){c[2265]=0;break}else{c[2265]=1;e=c[2261]|0;c[2260]=0;mc[a&15](e,b,0,d);c[2260]=a;c[2261]=e;break}}while(0);b=hc[c[8744+36>>2]&127](d)|0;if(b){a=hc[c[8744+48>>2]&127](b)|0;a=(c[2166]|0)+a|0;c[2166]=a;if(a>>>0>(c[2176]|0)>>>0)c[2176]=a;a=(c[2175]|0)+1|0;c[2175]=a;if(a>>>0>(c[2185]|0)>>>0)c[2185]=a}else b=0}else b=0;while(0);return b|0}function ng(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;do if(a){if((b|0)==0&(d|0)==0){Sc(a);e=0;break}if(!(d>>>0>0|(d|0)==0&b>>>0>2147483391)){h=hc[c[8744+48>>2]&127](a)|0;g=hc[c[8744+52>>2]&127](b)|0;if((g|0)!=(h|0)){if(!(c[2186]|0)){e=nc[c[8744+44>>2]&127](a,g)|0;break}c[2171]=b;if((c[2181]|0)>>>0>>0)c[2181]=b;d=g-h|0;e=c[2166]|0;i=9032|0;i=$v(c[i>>2]|0,c[i+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;j=C;if(!(0<(j|0)|0==(j|0)&e>>>0>>0)?(f=c[2260]|0,(f|0)!=0):0){i=c[2261]|0;c[2260]=0;mc[f&15](i,e,0,d);c[2260]=f;c[2261]=i}e=nc[c[8744+44>>2]&127](a,g)|0;d=c[2260]|0;if((e|0)==0&(d|0)!=0){f=c[2166]|0;e=c[2261]|0;c[2260]=0;mc[d&15](e,f,0,b);c[2260]=d;c[2261]=e;e=nc[c[8744+44>>2]&127](a,g)|0}if(e){d=(hc[c[8744+48>>2]&127](e)|0)-h|0;d=(c[2166]|0)+d|0;c[2166]=d;if(d>>>0>(c[2176]|0)>>>0)c[2176]=d}else e=0}else e=a}else e=0}else e=mg(b,d)|0;while(0);return e|0}function og(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=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;Y=i;i=i+96|0;if((i|0)>=(j|0))ba();W=Y+8|0;X=Y;V=Y+16|0;if(!e){l=0;m=0;Q=0}else{l=e&2;if(!l)m=0;else{G=c[g>>2]|0;m=c[G>>2]|0;c[g>>2]=G+4}l=l&255;Q=(e&1|0)!=0}P=l<<24>>24==0;M=l<<24>>24!=0;N=m+4|0;O=m+8|0;L=b+12|0;l=0;a:while(1){e=a[f>>0]|0;if(e<<24>>24==37){e=f;f=l}else if(e<<24>>24){e=f;do{e=e+1|0;G=a[e>>0]|0}while(!(G<<24>>24==37|G<<24>>24==0));Ok(b,f,e-f|0);if(!(a[e>>0]|0))break}else break;l=e+1|0;n=a[l>>0]|0;if(!(n<<24>>24)){R=10;break}o=n<<24>>24;s=0;p=0;v=0;n=0;x=0;y=0;b:while(1){switch(o|0){case 45:{w=p;n=1;break}case 32:{w=p;v=1;break}case 35:{s=1;w=p;break}case 33:{w=1;break}case 48:{w=p;y=1;break}case 43:{w=p;x=1;break}default:{z=s;w=p;break b}}p=e+2|0;G=a[p>>0]|0;o=G<<24>>24;if(!(G<<24>>24)){l=p;z=s;break}else{e=l;l=p;p=w}}if((o|0)!=42)if((o+-48|0)>>>0<10){p=0;do{p=o+-48+(p*10|0)|0;l=l+1|0;o=a[l>>0]|0}while((o+-48|0)>>>0<10);K=n;J=p&2147483647}else{K=n;J=0}else{if(P){G=c[g>>2]|0;p=c[G>>2]|0;c[g>>2]=G+4}else p=Pk(m)|0;if((p|0)<0){n=1;p=(p|0)==-2147483648?0:0-p|0}o=l+1|0;l=o;o=a[o>>0]|0;K=n;J=p}do if((o|0)==46){p=l+1|0;n=a[p>>0]|0;if(n<<24>>24!=42){o=n<<24>>24;if((n+-48&255)<10)n=0;else{l=p;D=0;break}while(1){n=o+-48+(n*10|0)|0;l=l+2|0;G=a[l>>0]|0;o=G<<24>>24;if((G+-48&255)<10){G=p;p=l;l=G}else break}D=n&2147483647;break}if(P){G=c[g>>2]|0;p=c[G>>2]|0;c[g>>2]=G+4}else p=Pk(m)|0;l=l+2|0;o=a[l>>0]|0;if((p|0)<0)D=(p|0)==-2147483648?-1:0-p|0;else D=p}else D=-1;while(0);do if((o|0)==108){p=l+1|0;o=a[p>>0]|0;if(o<<24>>24==108){o=l+2|0;l=o;o=a[o>>0]|0;p=1;break}else{l=p;o=o<<24>>24;p=0;break}}else p=0;while(0);s=0;while(1){n=48752+(s*6|0)|0;if((o|0)==(a[n>>0]|0)){o=n;n=s;R=46;break}s=s+1|0;if((s|0)>=23){I=48752;G=0;break}}if((R|0)==46){R=0;if(!(Q|n>>>0<20))break;I=o;G=a[48755+(n*6|0)>>0]|0}c:do switch(G&255|0){case 14:{p=0;R=50;break}case 1:case 16:{R=50;break}case 13:{p=c[g>>2]|0;e=c[p>>2]|0;c[g>>2]=p+4;p=c[g>>2]|0;o=c[p>>2]|0;c[g>>2]=p+4;p=c[e+(o*72|0)+12>>2]|0;if(p){n=p;while(1)if(!(a[n>>0]|0))break;else n=n+1|0;Ok(b,p,n-p&1073741823);Ok(b,28928,1)}n=c[e+(o*72|0)+16>>2]|0;if(!n)e=0;else{e=n;while(1)if(!(a[e>>0]|0))break;else e=e+1|0;e=e-n&1073741823}Ok(b,n,e);v=f;o=0;e=0;p=0;break}case 4:case 3:case 2:{do if(!P){p=c[N>>2]|0;if((c[m>>2]|0)>(p|0)){c[N>>2]=p+1;q=+Qg(c[(c[O>>2]|0)+(p<<2)>>2]|0);R=92;break}else{p=(D|0)<0?6:D;q=0.0;R=94;break}}else{R=c[g>>2]|0;c[k>>2]=c[R>>2];c[k+4>>2]=c[R+4>>2];q=+h[k>>3];c[g>>2]=R+8;R=92}while(0);if((R|0)==92){R=0;p=(D|0)<0?6:D;if(q<0.0){q=-q;H=45}else R=94}if((R|0)==94){R=0;if(!(x<<24>>24))H=v<<24>>24==0?0:32;else H=43}D=G<<24>>24==4;n=((D&(p|0)>0)<<31>>31)+p|0;p=n&4095;if(!p)r=.5;else{r=.5;do{p=p+-1|0;r=r*.1}while((p|0)>0)}B=G<<24>>24==2;if(B)q=q+r;h[W>>3]=q;h[X>>3]=+h[W>>3];if(+h[W>>3]!=+h[X>>3]){v=48960;o=3;e=J;p=0}else{if(q>0.0){s=0;t=1.0;while(1){u=t*1.e+100;if(q>=u&(s|0)<351){s=s+100|0;t=u}else break}while(1){u=t*1.e+64;if(q>=u&(s|0)<351){s=s+64|0;t=u}else break}while(1){u=t*1.0e8;if(q>=u&(s|0)<351){s=s+8|0;t=u}else break}while(1){u=t*10.0;if((s|0)<351&q>=u){s=s+1|0;t=u}else break}q=q/t;if(q<1.0e-08)do{q=q*1.0e8;s=s+-8|0}while(q<1.0e-08);if(q<1.0)do{q=q*10.0;s=s+-1|0}while(q<1.0);if((s|0)>350){if(H<<24>>24==43)n=48976;else if(H<<24>>24==45)n=48968;else n=48984;f=n;while(1)if(!(a[f>>0]|0))break;else f=f+1|0;v=n;o=f-n&1073741823;e=J;p=0;break c}}else s=0;if(!B){q=r+q;if(!(q>=10.0))F=s;else{q=q*.1;F=s+1|0}}else F=s;if(D){p=(F|0)<-4|(n|0)<(F|0);D=z<<24>>24==0&1;n=n-(p?0:F)|0;p=p?3:2}else{D=w;p=G}E=p<<24>>24==3;f=E?0:F;s=(f|0)>0;p=fw(n|0,((n|0)<0)<<31>>31|0,J|0,((J|0)<0)<<31>>31|0)|0;s=fw(p|0,C|0,(s?f:0)|0,(s?((f|0)<0)<<31>>31:0)|0)|0;p=C;if((p|0)>0|(p|0)==0&s>>>0>55){s=fw(s|0,p|0,15,0)|0;s=mg(s,C)|0;if(!s){R=124;break a}else{v=s;G=s}}else{v=V;G=0}s=((w&255)*10|0)+16|0;A=(w|z)&255|(n|0)>0;if(!(H<<24>>24))B=v;else{a[v>>0]=H;B=v+1|0}if((f|0)<0){a[B>>0]=48;e=2;p=B+1|0;x=f}else{z=~f;z=(z|0)>-1?z:-1;x=-2-z|0;z=f+z|0;o=B;while(1){if((s|0)<1)e=48;else{p=~~q;e=p+48&255;q=(q-+(p|0))*10.0;s=s+-1|0}a[o>>0]=e;if((f|0)>0){o=o+1|0;f=f+-1|0}else break}e=z+3|0;p=B+(z+2)|0}o=(A|0)==0;if(!o){a[p>>0]=46;p=B+e|0}if((x+1|0)<0){bw(p|0,48,~x|0)|0;p=p+~x|0;n=n+1+x|0}if((n|0)>0){e=p;f=n;while(1){f=f+-1|0;if((s|0)<1)x=48;else{B=~~q;x=B+48&255;q=(q-+(B|0))*10.0;s=s+-1|0}a[e>>0]=x;if((f|0)<=0)break;else e=e+1|0}p=p+n|0}d:do if(!(D<<24>>24==0|o)){o=p;while(1){p=o+-1|0;n=a[p>>0]|0;if(n<<24>>24==46)break;else if(n<<24>>24!=48){p=o;break d}a[p>>0]=0;o=p}if(!(w<<24>>24)){a[p>>0]=0;break}else{a[o>>0]=48;p=o+1|0;break}}while(0);if(E){o=p+1|0;a[p>>0]=a[48912+(d[I+4>>0]|0)>>0]|0;n=p+2|0;if((F|0)<0){a[o>>0]=45;o=0-F|0}else{a[o>>0]=43;o=F}if((o|0)>99){a[n>>0]=((o|0)/100|0)+48;f=4;e=5;n=p+3|0;o=(o|0)%100|0}else{f=3;e=4}a[n>>0]=((o|0)/10|0)+48;a[p+f>>0]=((o|0)%10|0)+48;p=p+e|0}a[p>>0]=0;e=v;o=p-e|0;if(!(K<<24>>24==0&y<<24>>24!=0&(J|0)>(o|0))){e=J;p=G;break c}n=J-o|0;if((o|0)>=0){f=J;while(1){a[v+f>>0]=a[v+(f-n)>>0]|0;if((f|0)>(n|0))f=f+-1|0;else break}}if((J|0)==(o|0)){o=J;e=J;p=G;break c}bw(v+(H<<24>>24!=0&1)|0,48,J+e-p|0)|0;o=J;e=J;p=G}break}case 5:{if(P){o=c[L>>2]|0;e=c[g>>2]|0;v=c[e>>2]|0;c[g>>2]=e+4;c[v>>2]=o;v=f;o=0;e=0;p=0}else{v=f;o=0;e=0;p=0}break}case 8:{a[V>>0]=37;v=V;o=1;e=J;p=0;break}case 9:{if(!P){e=Qk(m)|0;if(!e)p=0;else p=a[e>>0]|0}else{G=c[g>>2]|0;p=c[G>>2]|0;c[g>>2]=G+4}if((D|0)>1){n=D+-1|0;e=J-n|0;if(!((e|0)<2|K<<24>>24!=0)){Rk(b,e+-1|0,32);e=0}f=p&255;Rk(b,n,f)}else{f=p&255;e=J}a[V>>0]=f;v=V;o=1;p=0;break}case 7:case 6:{if(M)n=Qk(m)|0;else{F=c[g>>2]|0;n=c[F>>2]|0;c[g>>2]=F+4}if(!n){f=10360;p=0}else{f=n;p=G<<24>>24!=7|M?0:n}if((D|0)>-1){if((D|0)>0)n=0;else{v=f;o=0;e=J;break c}while(1){o=n+1|0;if(!(a[f+n>>0]|0)){v=f;o=n;e=J;break c}if((o|0)<(D|0))n=o;else{v=f;e=J;break}}}else{if(!f){v=0;o=0;e=J;break c}else n=f;while(1)if(!(a[n>>0]|0))break;else n=n+1|0;v=f;o=n-f&1073741823;e=J;break c}break}case 15:case 11:case 10:{z=G<<24>>24==15?34:39;if(P){F=c[g>>2]|0;p=c[F>>2]|0;c[g>>2]=F+4}else p=Qk(m)|0;v=(p|0)==0;if(v)p=G<<24>>24==11?20304:48992;e:do if(!D){y=0;o=0}else{s=z&255;n=0;e=D;o=0;while(1){f=a[p+n>>0]|0;if(!(f<<24>>24)){y=n;break e}o=((f<<24>>24|0)==(s|0)&1)+o|0;n=n+1|0;e=e+-1|0;if(!e){y=n;break}}}while(0);w=G<<24>>24==11&(v^1);n=((w&1)<<1|1)+y+o|0;if((n|0)>70){o=mg(n,((n|0)<0)<<31>>31)|0;if(!o){R=197;break a}else{v=o;x=o}}else{v=V;x=0}if(w){a[v>>0]=z;n=1}else n=0;if((y|0)>0){s=z&255;e=0;do{o=a[p+e>>0]|0;f=n+1|0;a[v+n>>0]=o;if((o<<24>>24|0)==(s|0)){a[v+f>>0]=o;n=n+2|0}else n=f;e=e+1|0}while((e|0)!=(y|0))}if(w){a[v+n>>0]=z;n=n+1|0}a[v+n>>0]=0;o=n;e=J;p=x;break}case 12:{G=c[g>>2]|0;e=c[G>>2]|0;c[g>>2]=G+4;if((e|0)!=0?(U=c[e+4>>2]|0,(U|0)!=0):0){Ok(b,c[e>>2]|0,U);v=f;o=0;e=0;p=0}else{v=f;o=0;e=0;p=0}break}default:break a}while(0);if((R|0)==50){R=0;do if(!(a[I+2>>0]&1)){if(M){f=Pk(m)|0;s=C;B=0;break}if(!(p<<24>>24)){s=c[g>>2]|0;f=c[s>>2]|0;c[g>>2]=s+4;s=0;B=0;break}else{B=c[g>>2]|0;s=B;f=c[s>>2]|0;s=c[s+4>>2]|0;c[g>>2]=B+8;B=0;break}}else{do if(!M)if(!(p<<24>>24)){o=c[g>>2]|0;p=c[o>>2]|0;c[g>>2]=o+4;o=((p|0)<0)<<31>>31;break}else{F=c[g>>2]|0;o=F;p=c[o>>2]|0;o=c[o+4>>2]|0;c[g>>2]=F+8;break}else{p=Pk(m)|0;o=C}while(0);if((o|0)<0){f=$v(0,0,p|0,o|0)|0;s=C;B=45;break}if(!(x<<24>>24)){f=p;s=o;B=v<<24>>24==0?0:32}else{f=p;s=o;B=43}}while(0);A=(f|0)==0&(s|0)==0;if(!(y<<24>>24))x=D;else{x=J-(B<<24>>24!=0&1)|0;x=(D|0)<(x|0)?x:D}if((x|0)>=60){p=x+10|0;o=mg(p,((p|0)<0)<<31>>31)|0;if(!o){R=69;break}else{e=p;p=o;n=o}}else{e=70;p=0;n=V}y=n+(e+-1)|0;if(G<<24>>24==16){o=qw(f|0,s|0,10,0)|0;if(!(o>>>0<=3?(G=pw(f|0,s|0,10,0)|0,G=qw(G|0,C|0,10,0)|0,!((G|0)==1&(C|0)==0)):0))o=0;G=o<<1;a[n+(e+-2)>>0]=a[48896+(G|1)>>0]|0;o=n+(e+-3)|0;a[o>>0]=a[48896+G>>0]|0}else o=y;e=d[I+4>>0]|0;v=d[I+1>>0]|0;while(1){G=qw(f|0,s|0,v|0,0)|0;n=o+-1|0;a[n>>0]=a[48912+(G+e)>>0]|0;f=pw(f|0,s|0,v|0,0)|0;s=C;if((f|0)==0&(s|0)==0)break;else o=n}f=x-y+n|0;if((f|0)>0){e=o;o=n;while(1){n=e+-2|0;a[n>>0]=48;f=f+-1|0;if((f|0)<=0)break;else{e=o;o=n}}}if(B<<24>>24){n=o+-2|0;a[n>>0]=B}if((!(A|z<<24>>24==0)?(S=a[I+5>>0]|0,S<<24>>24!=0):0)?(T=48952+(S&255)|0,!(S<<24>>24==3|S<<24>>24==6)):0){f=a[T>>0]|0;o=T;do{n=n+-1|0;a[n>>0]=f;o=o+1|0;f=a[o>>0]|0}while(f<<24>>24!=0)}v=n;o=y-n|0;e=J}n=e-o|0;f=(n|0)<1;if(!(f|K<<24>>24!=0))Rk(b,n,32);Ok(b,v,o);if(!(f|K<<24>>24==0))Rk(b,n,32);if(p)Sc(p);f=l+1|0;l=v}if((R|0)==10)Ok(b,48744,1);else if((R|0)==69){a[b+25>>0]=1;c[b+16>>2]=0}else if((R|0)==124){a[b+25>>0]=1;c[b+16>>2]=0}else if((R|0)==197){a[b+25>>0]=1;c[b+16>>2]=0}i=Y;return}function pg(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=b+8|0;d=c[f>>2]|0;do if(((d|0)!=0?(h=b+12|0,a[d+(c[h>>2]|0)>>0]=0,e=a[b+24>>0]|0,e<<24>>24!=0):0)?(g=b+4|0,(c[f>>2]|0)==(c[g>>2]|0)):0){if(e<<24>>24==1){d=(c[h>>2]|0)+1|0;d=ih(c[b>>2]|0,d,((d|0)<0)<<31>>31)|0}else d=Pc((c[h>>2]|0)+1|0)|0;c[f>>2]=d;if(!d){a[b+25>>0]=1;c[b+16>>2]=0;break}else{gw(d|0,c[g>>2]|0,(c[h>>2]|0)+1|0)|0;break}}while(0);return c[f>>2]|0}function qg(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;h=d+52|0;c[h>>2]=e;a:do if(!f){c[h>>2]=e;e=c[d+236>>2]|0;if(e){h=e+8|0;if(!(b[h>>1]&9312)){b[h>>1]=1;break}else{rg(e);break}}}else{l=d+236|0;do if(!(c[l>>2]|0)){h=ih(d,40,0)|0;if(!h){c[l>>2]=h;break a}else{e=h+0|0;k=e+40|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(k|0));b[h+8>>1]=1;c[h+32>>2]=d;c[l>>2]=h;break}}while(0);c[m>>2]=g;h=Sk(d,f,m)|0;e=c[l>>2]|0;if(e)Tg(e,h,-1,1,75)|0}while(0);i=n;return}function rg(a){a=a|0;var d=0,e=0;e=a+8|0;d=b[e>>1]|0;if(d&8192){Uk(a,c[a>>2]|0)|0;d=b[e>>1]|0}d=d&65535;do if(!(d&1024)){if(d&32){Vk(c[a>>2]|0);break}if(d&64){a=c[a>>2]|0;d=(c[a>>2]|0)+180|0;c[a+4>>2]=c[d>>2];c[d>>2]=a}}else _b[c[a+36>>2]&31](c[a+16>>2]|0);while(0);b[e>>1]=1;return}function sg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;e=Rh(b,d)|0;do if((e|0)==1){f=ih(a,536,0)|0;if(!f){qg(a,7,15776,g);e=0;break}bw(f|0,0,536)|0;c[f>>2]=b;if(!(Wk(f)|0)){ig(a,c[f+4>>2]|0);yh(f);ig(a,f);h=7;break}else{b=c[f+12>>2]|0;e=f+4|0;c[g>>2]=c[e>>2];qg(a,b,10344,g);ig(a,c[e>>2]|0);yh(f);ig(a,f);e=0;break}}else h=7;while(0);do if((h|0)==7)if((e|0)<0){c[g>>2]=d;qg(a,1,47448,g);e=0;break}else{e=c[(c[b+16>>2]|0)+(e<<4)+4>>2]|0;break}while(0);i=k;return e|0}function tg(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[a+4>>2]|0;c[k+4>>2]=c[a>>2];j=k+22|0;if(!(b[j>>1]&2)){if((f|0)<0)f=(c[k+32>>2]|0)-(c[k+36>>2]|0)|0;if(((d+-512|0)>>>0<65025?(d+-1&d|0)==0:0)?(c[k+32>>2]=d,h=k+80|0,i=c[h>>2]|0,(i|0)!=0):0){a=i+-4|0;c[h>>2]=a;Xk(a);c[h>>2]=0}h=k+32|0;a=Yk(c[k>>2]|0,h,f)|0;c[k+36>>2]=(c[h>>2]|0)-(f&65535);if(g)b[j>>1]=e[j>>1]|0|2}else a=8;return a|0}function ug(f,g){f=f|0;g=g|0;var h=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,O=0,P=0,Q=0;Q=i;i=i+16|0;if((i|0)>=(j|0))ba();K=Q;J=Q+12|0;I=Q+8|0;O=c[f+4>>2]|0;F=O+4|0;c[F>>2]=c[f>>2];L=f+8|0;l=a[L>>0]|0;do if(l<<24>>24!=2?(M=(g|0)!=0,l<<24>>24!=1|M):0){N=O+22|0;l=b[N>>1]|0;if(!((l&1)!=0&M)){if(M)if((a[O+20>>0]|0)!=2&(l&64)==0)P=8;else P=7;else if(!(l&64))P=8;else P=7;a:do if((P|0)==7){h=c[O+76>>2]|0;P=12}else if(((P|0)==8?(g|0)>1:0)?(k=c[O+72>>2]|0,(k|0)!=0):0)do{l=c[k>>2]|0;if((l|0)!=(f|0)){h=l;P=12;break a}k=c[k+12>>2]|0}while((k|0)!=0);while(0);if((P|0)==12?(c[h>>2]|0)!=0:0){h=262;break}h=Zk(f,1,1)|0;if(!h){l=e[N>>1]|0;b[N>>1]=l&65527;H=O+44|0;if(!(c[H>>2]|0))b[N>>1]=l|8;B=O+12|0;r=O+32|0;s=O+36|0;t=O+17|0;u=O+18|0;v=O+80|0;w=O+24|0;x=O+26|0;y=O+28|0;z=O+30|0;A=O+21|0;C=O+20|0;D=(g|0)>1;h=0;b:while(1){c:do if(!(c[B>>2]|0)){h=_k(c[O>>2]|0)|0;if(!h){h=$k(O,1,J,0)|0;if(!h){q=c[J>>2]|0;n=c[q+56>>2]|0;l=d[n+29>>0]<<16|d[n+28>>0]<<24|d[n+30>>0]<<8|d[n+31>>0];m=c[O>>2]|0;o=c[m+24>>2]|0;if((l|0)!=0?(Vv(n+24|0,n+92|0,4)|0)==0:0)p=l;else p=o;d:do if((p|0)>0){e:do if(!(Vv(n,44680,16)|0)){if((d[n+18>>0]|0)>2)b[N>>1]=e[N>>1]|1;l=a[n+19>>0]|0;if((l&255)<=2){do if(l<<24>>24==2){if(b[N>>1]&16)break;c[I>>2]=0;h=al(m,I)|0;if(h){P=48;break e}if(c[I>>2]|0)break;if(!q){h=0;continue b}xg(c[q+68>>2]|0);h=0;continue b}while(0);if(Vv(n+21|0,47408,3)|0){h=26;P=48;break}k=d[n+17>>0]<<16|d[n+16>>0]<<8;if((k+16777215&k|0)!=0|k>>>0>65536|k>>>0<257){h=26;P=48;break}m=d[n+20>>0]|0;l=k-m|0;if((k|0)==(c[r>>2]|0)){if((p|0)>(o|0)?(c[(c[F>>2]|0)+24>>2]&65536|0)==0:0){c[K>>2]=55672;c[K+4>>2]=10788;Zc(11,13600,K);h=11;P=48;break}if(l>>>0<480){h=26;P=48;break}c[r>>2]=k;c[s>>2]=l;a[t>>0]=(d[n+53>>0]<<16|d[n+52>>0]<<24|d[n+54>>0]<<8|d[n+55>>0]|0)!=0&1;a[u>>0]=(d[n+65>>0]<<16|d[n+64>>0]<<24|d[n+66>>0]<<8|d[n+67>>0]|0)!=0&1;break d}if(q)xg(c[q+68>>2]|0);c[s>>2]=l;c[r>>2]=k;l=c[v>>2]|0;if(l){h=l+-4|0;c[v>>2]=h;Xk(h);c[v>>2]=0}h=Yk(c[O>>2]|0,r,m)|0}else{h=26;P=48}}else{h=26;P=48}while(0);if((P|0)==48){P=0;if(q)xg(c[q+68>>2]|0);c[B>>2]=0}if(!h){h=0;continue b}else{P=77;break c}}else l=c[s>>2]|0;while(0);h=((((l<<6)+-768|0)>>>0)/255|0)+65513|0;k=h&65535;b[w>>1]=k;m=((((l<<5)+-384|0)>>>0)/255|0)+65513&65535;b[x>>1]=m;b[y>>1]=l+65501;b[z>>1]=m;a[A>>0]=(k&65535)>127?127:h&255;c[B>>2]=q;c[H>>2]=p;h=0;continue b}else l=0}else l=0}else{f:do if((h|0)==0&M){if(b[N>>1]&1){h=8;P=77;break c}p=c[O>>2]|0;h=c[p+40>>2]|0;g:do if(!h){a[p+21>>0]=(a[(c[f>>2]|0)+64>>0]|0)==2&1;q=p+16|0;if((a[q>>0]|0)==1){m=p+208|0;l=c[m>>2]|0;do if(!l){h=bl(p,2)|0;h:do if((h|0)==0&D){l=p+176|0;k=p+180|0;while(1){h=bl(p,4)|0;if((h|0)!=5)break h;if(!(hc[c[l>>2]&127](c[k>>2]|0)|0)){h=5;break g}}}while(0);if(h)break g}else{do if(a[p+4>>0]|0){if(a[l+43>>0]|0)break;h=bl(p,4)|0;if(h)break g;l=c[m>>2]|0;k=l+43|0;if(!(a[k>>0]|0)){h=c[l+4>>2]|0;lc[c[(c[h>>2]|0)+56>>2]&31](h,(b[l+40>>1]|0)+3|0,1,5)|0;l=c[m>>2]|0}a[k>>0]=1}while(0);if(a[l+46>>0]|0){h=8;break g}k=l+43|0;if((a[k>>0]|0)==0?(E=c[l+4>>2]|0,E=lc[c[(c[E>>2]|0)+56>>2]&31](E,0,1,10)|0,(E|0)!=0):0){h=E;break g}h=l+44|0;a[h>>0]=1;if(!(Vv(l+52|0,c[c[l+32>>2]>>2]|0,48)|0))break;if(!(a[k>>0]|0)){k=c[l+4>>2]|0;lc[c[(c[k>>2]|0)+56>>2]&31](k,0,1,9)|0}a[h>>0]=0;h=517;break g}while(0);a[q>>0]=2;h=c[p+24>>2]|0;c[p+36>>2]=h;c[p+32>>2]=h;c[p+28>>2]=h;h=p+72|0;c[h>>2]=0;c[h+4>>2]=0}h=yg(O)|0;break f}while(0);l=(h|0)==0;break c}while(0);if(!h){h=0;break b}else l=0}while(0);if((P|0)==77){P=0;l=(h|0)==0}if((a[C>>0]|0)==0?(G=c[B>>2]|0,(G|0)!=0):0){c[B>>2]=0;xg(c[G+68>>2]|0)}if((h&255|0)!=5){P=86;break}if(a[C>>0]|0){P=86;break}if(!(cl(O)|0)){P=86;break}}if((P|0)==86)if(!l){P=96;break}if((a[L>>0]|0)==0?(E=O+40|0,c[E>>2]=(c[E>>2]|0)+1,(a[f+9>>0]|0)!=0):0){a[f+40>>0]=1;E=O+72|0;c[f+44>>2]=c[E>>2];c[E>>2]=f+32}l=M?2:1;a[L>>0]=l;if((l&255)>(d[C>>0]|0))a[C>>0]=l;if(M){l=c[B>>2]|0;c[O+76>>2]=f;k=e[N>>1]|0;b[N>>1]=D?k|32:k&65503;k=l+56|0;E=c[k>>2]|0;if((c[H>>2]|0)!=(d[E+29>>0]<<16|d[E+28>>0]<<24|d[E+30>>0]<<8|d[E+31>>0]|0)){h=Cg(c[l+68>>2]|0)|0;if(!h){h=c[k>>2]|0;P=c[H>>2]|0;a[h+28>>0]=P>>>24;a[h+29>>0]=P>>>16;a[h+30>>0]=P>>>8;a[h+31>>0]=P;h=0;P=96}}else P=96}}}else h=8}else{h=0;P=96}while(0);if((P|0)==96)if((h|0)==0&(g|0)!=0)h=dl(c[O>>2]|0,c[(c[f>>2]|0)+496>>2]|0)|0;i=Q;return h|0}function vg(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();r=v;t=v+8|0;c[t>>2]=0;q=h&1;a:do if(!f){c[r>>2]=46865;c[r+4>>2]=10788;Zc(11,13600,r);k=11}else{a[e+23>>0]=1;h=c[e+40>>2]|0;do if(!h){p=e+204|0;h=c[p>>2]|0;h=Yb[c[8744+132>>2]&63](c[h+40>>2]|0,f,d[h+29>>0]&3)|0;if(!h){m=c[p>>2]|0;if((a[m+29>>0]|0)!=2){l=m+8|0;h=c[l>>2]|0;b:do if(!h)u=11;else{while(1){if((b[h+26>>1]|0)==0?(b[h+24>>1]&4)==0:0)break;h=c[h+36>>2]|0;if(!h){u=11;break b}}c[l>>2]=h;o=h;u=14}while(0);c:do if((u|0)==11?(c[l>>2]=0,n=c[m+4>>2]|0,(n|0)!=0):0){h=n;do{if(!(b[h+26>>1]|0)){o=h;u=14;break c}h=c[h+36>>2]|0}while((h|0)!=0)}while(0);if((u|0)==14?(k=nc[c[m+32>>2]&127](c[m+36>>2]|0,o)|0,!((k|0)==0|(k|0)==5)):0)break;k=Yb[c[8744+132>>2]&63](c[m+40>>2]|0,f,2)|0;if(!k){k=7;break}}else k=0}else k=h;m=el(c[p>>2]|0,f,k)|0;c[g>>2]=m;if(!m)k=7;else{h=m+16|0;k=(q|0)!=0;if(!((c[h>>2]|0)==0|k)){k=e+184|0;c[k>>2]=(c[k>>2]|0)+1;k=0;break a}c[h>>2]=e;do if((f|0)>=0?(s=e+152|0,(((c[2514]|0)/(c[s>>2]|0)|0)+1|0)!=(f|0)):0){if(((a[e+15>>0]|0)==0?!((c[e+24>>2]|0)>>>0>>0|k):0)?(c[c[e+60>>2]>>2]|0)!=0:0){k=c[e+208>>2]|0;if(!k)k=0;else{k=gl(k,f,t)|0;if(k)break;k=c[t>>2]|0}s=e+188|0;c[s>>2]=(c[s>>2]|0)+1;k=hl(m,k)|0;if(!k){k=0;break a}else break}if((c[e+156>>2]|0)>>>0>>0)k=13;else{if(k){k=c[3164]|0;if(k)jc[k&3]();if((c[e+28>>2]|0)>>>0>=f>>>0)Zh(c[e+56>>2]|0,f)|0;fl(e,f)|0;k=c[3166]|0;if(k)jc[k&3]()}bw(c[m+4>>2]|0,0,c[s>>2]|0)|0;k=0;break a}}else u=21;while(0);if((u|0)==21){c[r>>2]=46945;c[r+4>>2]=10788;Zc(11,13600,r);k=11}il(m)}}else k=h;while(0);if((c[e+120>>2]|0)==0?(c[(c[e+204>>2]|0)+12>>2]|0)==0:0)jl(e);c[g>>2]=0}while(0);i=v;return k|0}function wg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;w=i;i=i+16|0;if((i|0)>=(j|0))ba();v=w;t=b+4|0;p=c[(c[t>>2]|0)+4>>2]|0;u=c[p>>2]|0;s=b+24|0;o=c[(c[(c[s>>2]|0)+4>>2]|0)+32>>2]|0;p=c[p+32>>2]|0;q=(o|0)<(p|0)?o:p;r=((o|0)<0)<<31>>31;m=ow(o|0,r|0,d|0,0)|0;n=C;if((o|0)==(p|0))b=0;else b=(a[u+15>>0]|0)==0?0:8;a:do if((b|0)==0&(o|0)>0){d=$v(m|0,n|0,o|0,r|0)|0;l=((p|0)<0)<<31>>31;k=(f|0)==0;h=C;b=p;while(1){c[v>>2]=0;f=mw(d|0,h|0,p|0,l|0)|0;if((f|0)!=(((c[2514]|0)>>>0)/(b>>>0)|0|0)){b=vg(u,f+1|0,v,0)|0;g=c[v>>2]|0;if(!b){b=Cg(g)|0;if(!b){x=nw(d|0,h|0,o|0,r|0)|0;f=c[g+4>>2]|0;b=nw(d|0,h|0,p|0,l|0)|0;gw(f+b|0,e+x|0,q|0)|0;a[c[g+8>>2]>>0]=0;if((d|0)==0&(h|0)==0&k){x=c[(c[(c[s>>2]|0)+4>>2]|0)+44>>2]|0;a[f+(b+28)>>0]=x>>>24;a[f+(b+29)>>0]=x>>>16;a[f+(b+30)>>0]=x>>>8;a[f+(b+31)>>0]=x;b=0}else b=0}}if(g)xg(g)}else b=0;d=fw(d|0,h|0,p|0,l|0)|0;f=C;if(!((b|0)==0&((f|0)<(n|0)|(f|0)==(n|0)&d>>>0>>0)))break a;h=f;b=c[(c[(c[t>>2]|0)+4>>2]|0)+32>>2]|0}}while(0);i=w;return b|0}function xg(a){a=a|0;var d=0,e=0,f=0;d=c[a+16>>2]|0;if(!(b[a+24>>1]&64)){kl(a);a=c[d+120>>2]|0}else{f=d+120|0;e=(c[f>>2]|0)+-1|0;c[f>>2]=e;f=d+136|0;c[a+12>>2]=c[f>>2];c[f>>2]=a;a=e}if((a|0)==0?(c[(c[d+204>>2]|0)+12>>2]|0)==0:0)jl(d);return}function yg(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;i=d+44|0;if(!(c[i>>2]|0)){j=c[d+12>>2]|0;k=c[j+56>>2]|0;f=Cg(c[j+68>>2]|0)|0;if(!f){f=k+0|0;g=44680|0;h=f+16|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));f=d+32|0;a[k+16>>0]=(c[f>>2]|0)>>>8;a[k+17>>0]=(c[f>>2]|0)>>>16;a[k+18>>0]=1;a[k+19>>0]=1;a[k+20>>0]=(c[f>>2]|0)-(c[d+36>>2]|0);a[k+21>>0]=64;a[k+22>>0]=32;a[k+23>>0]=32;f=k+24|0;h=f+76|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(h|0));ll(j,13);f=d+22|0;b[f>>1]=e[f>>1]|0|2;f=a[d+17>>0]|0;a[k+52>>0]=0;a[k+53>>0]=0;a[k+54>>0]=0;a[k+55>>0]=f;f=a[d+18>>0]|0;a[k+64>>0]=0;a[k+65>>0]=0;a[k+66>>0]=0;a[k+67>>0]=f;c[i>>2]=1;a[k+31>>0]=1;f=0}}else f=0;return f|0}function zg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=c[b+4>>2]|0;c[g+4>>2]=c[b>>2];b=c[g+12>>2]|0;f=c[b+56>>2]|0;b=Cg(c[b+68>>2]|0)|0;if((b|0)==0?(i=d<<2,a[f+(i+36)>>0]=e>>>24,a[f+(i+37)>>0]=e>>>16,a[f+(i+38)>>0]=e>>>8,h=e&255,a[f+(i+39)>>0]=h,(d|0)==7):0)a[g+18>>0]=h;return b|0}function Ag(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=a+20|0;b=c[h>>2]|0;d=(b|0)>0;if(d){e=c[a+16>>2]|0;g=0;do{f=c[e+(g<<4)+4>>2]|0;if(f)c[(c[f+4>>2]|0)+4>>2]=c[f>>2];g=g+1|0}while((g|0)!=(b|0));if(d){g=a+16|0;f=0;do{d=c[(c[g>>2]|0)+(f<<4)+12>>2]|0;if(d){ml(d);b=c[h>>2]|0}f=f+1|0}while((f|0)<(b|0))}}b=a+24|0;c[b>>2]=c[b>>2]&-3;nl(a);ol(a);return}function Bg(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=c[d+4>>2]|0;k=h+22|0;g=e[k>>1]|0;b[k>>1]=(f|0)==1?g|16:g&65519;g=ug(d,0)|0;do if(!g){h=h+12|0;i=c[(c[h>>2]|0)+56>>2]|0;j=i+18|0;g=a[j>>0]|0;f=f&255;if(g<<24>>24==f<<24>>24?(a[i+19>>0]|0)==g<<24>>24:0){g=0;break}g=ug(d,2)|0;if(!g){g=Cg(c[(c[h>>2]|0)+68>>2]|0)|0;if(!g){a[j>>0]=f;a[i+19>>0]=f;g=0}}}while(0);b[k>>1]=e[k>>1]&65519;return g|0}function Cg(a){a=a|0;var b=0;b=c[a+16>>2]|0;if((c[b+148>>2]|0)>>>0>(c[b+152>>2]|0)>>>0)a=pl(a)|0;else a=ql(a)|0;return a|0}function Dg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;y=i;i=i+32|0;if((i|0)>=(j|0))ba();s=y+16|0;t=y;k=y+12|0;m=y+8|0;g=c[b+40>>2]|0;a:do if(!g){x=b+16|0;if((d[x>>0]|0)>=3){b:do if(!(a[b+15>>0]|0)){if(c[b+208>>2]|0){l=b+204|0;h=rl(c[l>>2]|0)|0;c[m>>2]=0;if(!h){g=vg(b,1,m,0)|0;h=c[m>>2]|0;c[h+12>>2]=0;if(h){k=h;w=9}}else{k=0;w=9}if((w|0)==9){g=sl(b,h,c[b+24>>2]|0,1)|0;if(k)xg(k)}if(g)break a;h=c[l>>2]|0;g=c[h>>2]|0;if(!g)break;while(1){tl(g);g=c[h>>2]|0;if(!g)break b}}l=b+18|0;if((a[l>>0]|0)==0?(c[b+24>>2]|0)!=0:0){g=vg(b,1,k,0)|0;k=c[k>>2]|0;if(!g){g=Cg(k)|0;if(!g){ul(k);a[l>>0]=1;g=0}}if(k)xg(k);if(g)break a}if(((e|0)!=0?(a[b+5>>0]|0)!=4:0)?(v=b+64|0,r=c[v>>2]|0,(c[r>>2]|0)!=0):0){a[b+19>>0]=1;k=a[e>>0]|0;if(!(k<<24>>24)){l=0;h=0}else{l=0;h=0;do{l=(k<<24>>24)+l|0;h=h+1|0;k=a[e+h>>0]|0}while(k<<24>>24!=0)}q=b+72|0;g=q;k=c[g>>2]|0;g=c[g+4>>2]|0;if(!(a[b+8>>0]|0))m=g;else{if((k|0)==0&(g|0)==0){k=0;g=0}else{g=fw(k|0,g|0,-1,-1)|0;k=c[b+148>>2]|0;g=mw(g|0,C|0,k|0,0)|0;g=fw(g|0,C|0,1,0)|0;k=ow(g|0,C|0,k|0,0)|0;g=C}m=q;c[m>>2]=k;c[m+4>>2]=g;m=g}g=((c[2514]|0)/(c[b+152>>2]|0)|0)+1|0;a[s>>0]=g>>>24;n=s+1|0;a[n>>0]=g>>>16;o=s+2|0;a[o>>0]=g>>>8;p=s+3|0;a[p>>0]=g;g=pc[c[(c[r>>2]|0)+12>>2]&31](r,s,4,k,m)|0;if(g)break a;g=c[v>>2]|0;m=fw(k|0,m|0,4,0)|0;k=C;g=pc[c[(c[g>>2]|0)+12>>2]&31](g,e,h,m,k)|0;if(g)break a;g=c[v>>2]|0;m=fw(m|0,k|0,h|0,((h|0)<0)<<31>>31|0)|0;k=C;a[s>>0]=h>>>24;a[n>>0]=h>>>16;a[o>>0]=h>>>8;a[p>>0]=h;g=pc[c[(c[g>>2]|0)+12>>2]&31](g,s,4,m,k)|0;if(g)break a;r=c[v>>2]|0;g=fw(m|0,k|0,4,0)|0;a[s>>0]=l>>>24;a[n>>0]=l>>>16;a[o>>0]=l>>>8;a[p>>0]=l;g=pc[c[(c[r>>2]|0)+12>>2]&31](r,s,4,g,C)|0;if(g)break a;r=c[v>>2]|0;g=fw(m|0,k|0,8,0)|0;g=pc[c[(c[r>>2]|0)+12>>2]&31](r,14808,8,g,C)|0;if(g)break a;r=h+20|0;g=q;r=fw(c[g>>2]|0,c[g+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;g=q;c[g>>2]=r;c[g+4>>2]=C;g=c[v>>2]|0;g=nc[c[(c[g>>2]|0)+24>>2]&127](g,t)|0;if(g)break a;r=t;p=c[r+4>>2]|0;g=q;h=c[g>>2]|0;g=c[g+4>>2]|0;if((p|0)>(g|0)|((p|0)==(g|0)?(c[r>>2]|0)>>>0>h>>>0:0)?(u=c[v>>2]|0,u=Yb[c[(c[u>>2]|0)+16>>2]&63](u,h,g)|0,(u|0)!=0):0){g=u;break a}}g=vl(b,0)|0;if(g)break a;h=b+204|0;g=wl(b,rl(c[h>>2]|0)|0)|0;if(g)break a;g=c[h>>2]|0;h=c[g>>2]|0;if(h)do{tl(h);h=c[g>>2]|0}while((h|0)!=0);h=c[b+24>>2]|0;if(h>>>0>(c[b+32>>2]|0)>>>0){g=xl(b,h-((h|0)==(((c[2514]|0)/(c[b+152>>2]|0)|0)+1|0)&1)|0)|0;if(!(g|f))w=46}else if(!f)w=46;else break;if((w|0)==46)g=Eg(b,e)|0;if(g)break a}else{g=c[b+88>>2]|0;if(g)do{c[g+16>>2]=1;g=c[g+44>>2]|0}while((g|0)!=0)}while(0);if(!(c[b+208>>2]|0)){a[x>>0]=5;g=0}else g=0}else g=0}while(0);i=y;return g|0}function Eg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=b+60|0;h=c[g>>2]|0;i=c[h>>2]|0;if(!((i|0)!=0?(f=Yb[c[i+40>>2]&63](h,21,e)|0,!((f|0)==0|(f|0)==12)):0))if(!(a[b+7>>0]|0)){f=c[g>>2]|0;f=nc[c[(c[f>>2]|0)+20>>2]&127](f,d[b+11>>0]|0)|0}else f=0;return f|0}function Fg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=a[b+8>>0]|0;do if(!(g<<24>>24))f=0;else{k=c[b+4>>2]|0;c[k+4>>2]=c[b>>2];if(g<<24>>24==2){h=c[k>>2]|0;i=h+40|0;g=c[i>>2]|0;do if(!g){g=h+16|0;if(((a[g>>0]|0)==2?(a[h+4>>0]|0)!=0:0)?(a[h+5>>0]|0)==1:0){a[g>>0]=1;break}f=h+100|0;c[f>>2]=(c[f>>2]|0)+1;f=yl(h,d[h+19>>0]|0,1)|0;h=f&255;if((h|0)==10|(h|0)==13){c[i>>2]=f;a[g>>0]=6;j=10}else j=10}else{f=g;j=10}while(0);if((j|0)==10?(f|0)!=0&(e|0)==0:0)break;f=b+20|0;c[f>>2]=(c[f>>2]|0)+-1;a[k+20>>0]=1;f=k+60|0;ai(c[f>>2]|0);c[f>>2]=0}zl(b);f=0}while(0);return f|0}function Gg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();h=q;a:do if((a[b+8>>0]|0)==2){p=c[b+4>>2]|0;c[p+4>>2]=c[b>>2];do if(a[p+17>>0]|0){o=c[p>>2]|0;f=p+8|0;b=c[f>>2]|0;if(b)do{n=b+72|0;a[n>>0]=d[n>>0]&251;b=c[b+8>>2]|0}while((b|0)!=0);if(!(a[p+18>>0]|0)){n=p+44|0;g=c[n>>2]|0;if(g>>>0<2)b=0;else{b=g+-2|0;b=b-((b>>>0)%(((((c[p+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;b=((b+1|0)==(((c[2514]|0)>>>0)/((c[p+32>>2]|0)>>>0)|0|0)?3:2)+b|0}if((b|0)!=(g|0)?(g|0)!=((((c[2514]|0)>>>0)/((c[p+32>>2]|0)>>>0)|0)+1|0):0){k=p+12|0;l=c[(c[k>>2]|0)+56>>2]|0;l=d[l+37>>0]<<16|d[l+36>>0]<<24|d[l+38>>0]<<8|d[l+39>>0];m=Al(p,g,l)|0;if(m>>>0>g>>>0){c[h>>2]=56396;c[h+4>>2]=10788;Zc(11,13600,h);b=11;break a}b:do if(m>>>0>>0){b=c[f>>2]|0;c:do if(b){while(1){if(b)break;b=c[2]|0;if(!b)break c}b=Bl(b,0,0)|0;if(b){f=0;break b}}while(0);do{b=Cl(p,m,g,1)|0;g=g+-1|0;f=(b|0)==0}while(g>>>0>m>>>0&f)}else{f=1;b=0}while(0);if(((b|0)==101|f)&(l|0)!=0){b=Cg(c[(c[k>>2]|0)+68>>2]|0)|0;l=(c[(c[k>>2]|0)+56>>2]|0)+32|0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=0;l=(c[(c[k>>2]|0)+56>>2]|0)+36|0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=0;l=c[(c[k>>2]|0)+56>>2]|0;a[l+28>>0]=m>>>24;a[l+29>>0]=m>>>16;a[l+30>>0]=m>>>8;a[l+31>>0]=m;a[p+19>>0]=1;c[n>>2]=m}if(!b)break;Dl(o)|0;break a}c[h>>2]=56391;c[h+4>>2]=10788;Zc(11,13600,h);b=11;break a}}while(0);b=c[p>>2]|0;if(a[p+19>>0]|0)c[b+24>>2]=c[p+44>>2];b=Dg(b,e,0)|0}else b=0;while(0);i=q;return b|0}function Hg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();h=m;l=c[b+4>>2]|0;c[l+4>>2]=c[b>>2];a:do if(!e){e=c[l+8>>2]|0;if(e){while(1){if(e)break;e=c[2]|0;if(!e)break a}e=Bl(e,0,0)|0;g=(e|0)==0;if(!g){g=g?f:0;k=6}}}else{g=f;k=6}while(0);if((k|0)==6)El(b,e,g)|0;if((a[b+8>>0]|0)==2){Dl(c[l>>2]|0)|0;if(!($k(l,1,h,0)|0)){e=c[h>>2]|0;g=c[e+56>>2]|0;g=d[g+29>>0]<<16|d[g+28>>0]<<24|d[g+30>>0]<<8|d[g+31>>0];if(!g)g=c[(c[l>>2]|0)+24>>2]|0;c[l+44>>2]=g;if(e)xg(c[e+68>>2]|0)}a[l+20>>0]=1;g=l+60|0;ai(c[g>>2]|0);c[g>>2]=0}zl(b);i=m;return}function Ig(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=d+76|0;if((c[j>>2]|0)==1691352191?(Fl(d)|0)==0:0){Gl(d,0);Hl(d);i=d+20|0;k=d+16|0;e=c[k>>2]|0;if((c[i>>2]|0)>0){h=0;do{g=e+(h<<4)+4|0;f=c[g>>2]|0;if((f|0)!=0?(Il(f),c[g>>2]=0,(h|0)!=1):0)c[e+(h<<4)+12>>2]=0;h=h+1|0;e=c[k>>2]|0}while((h|0)<(c[i>>2]|0))}e=c[e+28>>2]|0;if(e)ml(e);nl(d);ol(d);h=0;do{e=c[d+(h<<2)+336>>2]|0;if(e)do{g=e;e=c[e+28>>2]|0;if(g)do{Jl(d,g);f=g;g=c[g+8>>2]|0;ig(d,f)}while((g|0)!=0)}while((e|0)!=0);h=h+1|0}while((h|0)!=23);f=d+428|0;e=c[d+436>>2]|0;if(e)do{h=c[e+8>>2]|0;g=c[h+16>>2]|0;if(g)_b[g&31](c[h+8>>2]|0);g=c[h+36>>2]|0;if(g)_b[g&31](c[h+28>>2]|0);g=c[h+56>>2]|0;if(g)_b[g&31](c[h+48>>2]|0);ig(d,h);e=c[e>>2]|0}while((e|0)!=0);Kl(f);h=d+308|0;e=c[d+316>>2]|0;if(e)do{g=c[e+8>>2]|0;f=c[g+12>>2]|0;if(f)_b[f&31](c[g+8>>2]|0);ig(d,g);e=c[e>>2]|0}while((e|0)!=0);Kl(h);c[d+52>>2]=0;f=d+236|0;e=c[f>>2]|0;do if(e){g=e+8|0;if(!(b[g>>1]&9312)){b[g>>1]=1;break}else{rg(e);e=c[f>>2]|0;break}}else e=0;while(0);Ih(e);g=d+168|0;if((c[g>>2]|0)>0){e=d+172|0;f=0;do{h=c[d>>2]|0;fc[c[h+52>>2]&15](h,c[(c[e>>2]|0)+(f<<2)>>2]|0);f=f+1|0}while((f|0)<(c[g>>2]|0))}else e=d+172|0;ig(d,c[e>>2]|0);c[j>>2]=-1254786768;ig(d,c[(c[k>>2]|0)+28>>2]|0);c[j>>2]=-1623446221;if(a[d+251>>0]|0)Sc(c[d+276>>2]|0);Sc(d)}return}function Jg(a){a=a|0;var b=0;b=c[a+40>>2]|0;if((b|0)==1369188723|(b|0)==-1108210269)b=Lg(a)|0;else b=0;Ll(a);return b|0}function Kg(b,d){b=b|0;d=d|0;do if(b)if((a[b+65>>0]|0)!=0|(d|0)==3082){Ml(b);b=7;break}else{b=c[b+56>>2]&d;break}else b=d&255;while(0);return b|0}function Lg(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,k=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;f=c[a>>2]|0;Nl(a)|0;if((c[a+76>>2]|0)>-1){dh(a)|0;d=a+44|0;ig(f,c[d>>2]|0);c[d>>2]=0;d=a+88|0;e=b[d>>1]|0;if(e&16)b[d>>1]=e|8}else{d=c[a+80>>2]|0;if((d|0)!=0?(b[a+88>>1]&8)!=0:0){h=a+44|0;k=c[h>>2]|0;c[e>>2]=k;qg(f,d,(k|0)!=0?10344:0,e);ig(f,c[h>>2]|0);c[h>>2]=0}}d=a+44|0;ig(c[a>>2]|0,c[d>>2]|0);c[d>>2]=0;c[a+20>>2]=0;d=a+136|0;c[d>>2]=0;c[d+4>>2]=0;c[a+40>>2]=649915045;i=g;return c[f+56>>2]&c[a+80>>2]|0}function Mg(a){a=a|0;var d=0;if(b[a+8>>1]&9312)rg(a);d=a+24|0;if(c[d>>2]|0){ig(c[a+32>>2]|0,c[a+20>>2]|0);c[d>>2]=0}c[a+16>>2]=0;return}function Ng(a){a=a|0;var d=0,f=0,g=0;d=a+8|0;if(b[d>>1]&16384){f=a+12|0;g=(c[a>>2]|0)+(c[f>>2]|0)|0;if(!(ah(a,(g|0)<1?1:g,1)|0)){bw((c[a+16>>2]|0)+(c[f>>2]|0)|0,0,c[a>>2]|0)|0;c[f>>2]=(c[f>>2]|0)+(c[a>>2]|0);b[d>>1]=(e[d>>1]|0)&48639;d=0}else d=7}else d=0;return d|0}function Og(d,e){d=d|0;e=e|0;var f=0;do if(d){f=b[d+8>>1]|0;if((f&514)==514?(a[d+10>>0]|0)==e<<24>>24:0){f=c[d+16>>2]|0;break}if(!(f&1))f=Ol(d,e)|0;else f=0}else f=0;while(0);return f|0}function Pg(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=a+8|0;f=b[e>>1]|0;if(!(f&16))if(!(Og(a,d)|0))e=0;else{f=b[e>>1]|0;g=4}else g=4;if((g|0)==4){e=c[a+12>>2]|0;if(f&16384)e=(c[a>>2]|0)+e|0}return e|0}function Qg(b){b=b|0;var d=0.0,f=0,g=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;f=e[b+8>>1]|0;do if(!(f&8)){if(f&4){f=b;d=+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0);break}if(!(f&18))d=0.0;else{h[g>>3]=0.0;Pl(c[b+16>>2]|0,g,c[b+12>>2]|0,a[b+10>>0]|0)|0;d=+h[g>>3]}}else d=+h[b>>3];while(0);i=k;return +d}function Rg(b){b=b|0;var d=0.0,f=0,g=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k;f=e[b+8>>1]|0;do if(!(f&4)){if(!(f&8)){if(!(f&18)){b=0;f=0;break}f=g;c[f>>2]=0;c[f+4>>2]=0;Ql(c[b+16>>2]|0,g,c[b+12>>2]|0,a[b+10>>0]|0)|0;f=g;b=c[f+4>>2]|0;f=c[f>>2]|0;break}d=+h[b>>3];if(!(d<=-9223372036854775808.0))if(!(d>=9223372036854775808.0)){b=+N(d)>=1.0?(d>0.0?~~+$(+M(d/4294967296.0),4294967295.0)>>>0:~~+Z((d-+(~~d>>>0))/4294967296.0)>>>0):0;f=~~d>>>0}else{b=2147483647;f=-1}else{b=-2147483648;f=0}}else{f=b;b=c[f+4>>2]|0;f=c[f>>2]|0}while(0);C=b;i=k;return f|0}function Sg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((Tg(c[b>>2]|0,d,e,f,g)|0)==18){c[b+20>>2]=18;a[b+25>>0]=1;Tg(c[b>>2]|0,10096,-1,1,0)|0}return}function Tg(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(!f){j=d+8|0;if(!(b[j>>1]&9312)){b[j>>1]=1;j=0;break}else{rg(d);j=0;break}}else{o=d+32|0;j=c[o>>2]|0;if(!j)r=1e9;else r=c[j+88>>2]|0;q=h<<24>>24==0;n=q?16:2;if((g|0)<0){b:do if(h<<24>>24!=1)if((r|0)<0)k=0;else{g=0;while(1){k=g+2|0;if(!((a[f+(g|1)>>0]|a[f+g>>0])<<24>>24)){k=g;break b}if((k|0)>(r|0))break;else g=k}}else{k=f;while(1)if(!(a[k>>0]|0))break;else k=k+1|0;k=k-f&1073741823;k=(k|0)>(r|0)?r+1|0:k}while(0);p=k;m=(n&65535|512)&65535}else{p=g;m=n}do if((i|0)==(-1|0)){if(!(m&512))j=p;else j=p+(h<<24>>24==1?1:2)|0;if((p|0)>(r|0)){j=18;break a}if(bh(d,(j|0)>32?j:32)|0){j=7;break a}gw(c[d+16>>2]|0,f|0,j|0)|0;n=d+8|0;j=m}else{g=(i|0)==75;l=d+8|0;if(!((b[l>>1]&9312)==0?(c[d+24>>2]|0)==0:0))Mg(d);c[d+16>>2]=f;if(!g){c[d+36>>2]=i;n=l;j=(m&65535|((i|0)==0?2048:1024))&65535;break}c[d+20>>2]=f;j=c[o>>2]|0;do if(!j)j=hc[c[8744+48>>2]&127](f)|0;else{if((c[j+276>>2]|0)>>>0<=f>>>0?(c[j+280>>2]|0)>>>0>f>>>0:0){j=e[j+248>>1]|0;break}j=hc[c[8744+48>>2]&127](f)|0}while(0);c[d+24>>2]=j;n=l;j=m}while(0);m=d+12|0;c[m>>2]=p;b[n>>1]=j;f=q?1:h;l=d+10|0;a[l>>0]=f;do if(f<<24>>24!=1&(p|0)>1){g=d+16|0;k=c[g>>2]|0;j=a[k>>0]|0;k=a[k+1>>0]|0;if(!(j<<24>>24==-1&k<<24>>24==-2))if(k<<24>>24!=-1|j<<24>>24!=-2)break;else j=3;else j=2;if(Rl(d)|0){j=7;break a}f=(c[m>>2]|0)+-2|0;c[m>>2]=f;i=c[g>>2]|0;hw(i|0,i+2|0,f|0)|0;a[(c[g>>2]|0)+(c[m>>2]|0)>>0]=0;a[(c[g>>2]|0)+((c[m>>2]|0)+1)>>0]=0;b[n>>1]=e[n>>1]|512;a[l>>0]=j}while(0);j=(p|0)>(r|0)?18:0}while(0);return j|0}function Ug(a,c){a=a|0;c=+c;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g+8|0;f=g;d=a+8|0;if(!(b[d>>1]&9312))b[d>>1]=1;else rg(a);h[e>>3]=c;h[f>>3]=+h[e>>3];if(!(+h[e>>3]!=+h[f>>3])){h[a>>3]=c;b[d>>1]=8}i=g;return}function Vg(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=a+8|0;if(!(b[f>>1]&9312))b[f>>1]=1;else rg(a);c[a>>2]=d;c[a+4>>2]=e;b[f>>1]=4;return}function Wg(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;f=a+8|0;if(b[f>>1]&9312)rg(a);c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];h=e[f>>1]|0;g=h&64511;b[f>>1]=g;if((h&18|0)!=0?(b[d+8>>1]&2048)==0:0){b[f>>1]=g|4096;f=Rl(a)|0}else f=0;return f|0}function Xg(d,e){d=d|0;e=e|0;var f=0;f=d+8|0;if(!((b[f>>1]&9312)==0?(c[d+24>>2]|0)==0:0))Mg(d);b[f>>1]=16400;c[d+12>>2]=0;c[d>>2]=(e|0)<0?0:e;a[d+10>>0]=1;c[d+16>>2]=0;return}function Yg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();b=d;if(a)if(!(c[a>>2]|0)){Zc(21,47360,b);a=1}else a=0;else{Zc(21,47320,b);a=1}i=d;return a|0}function Zg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;if((c[a>>2]|0)>1?(d=c[a+72>>2]|0,(d|0)!=0):0)d=nc[d&127](a,b)|0;else{d=nc[c[a+64>>2]&127](a,e)|0;g=+h[e>>3]*864.0e5;a=+N(g)>=1.0?(g>0.0?~~+$(+M(g/4294967296.0),4294967295.0)>>>0:~~+Z((g-+(~~g>>>0))/4294967296.0)>>>0):0;c[b>>2]=~~g>>>0;c[b+4>>2]=a}i=f;return d|0}function _g(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;a:do if((d|0)!=0&(e|0)!=0){i=d+(e*40|0)|0;j=c[d+32>>2]|0;g=j+65|0;h=a[g>>0]|0;if(c[j+520>>2]|0){e=d;while(1){if(c[e+24>>2]|0)ig(j,c[e+20>>2]|0);e=e+40|0;if(e>>>0>=i>>>0)break a}}do{e=d+8|0;if(!(b[e>>1]&9312)){f=d+24|0;if(c[f>>2]|0){ig(j,c[d+20>>2]|0);c[f>>2]=0}}else Mg(d);b[e>>1]=128;d=d+40|0}while(d>>>0>>0);a[g>>0]=h}while(0);return}function $g(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();g=f;c[g>>2]=e;e=Sk(b,d,g)|0;ig(b,c[a>>2]|0);c[a>>2]=e;i=f;return}function ah(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=a+24|0;g=c[l>>2]|0;do if((g|0)<(d|0)){k=(d|0)<32?32:d;d=(g|0)>0;if((f|0)!=0&d?(h=a+16|0,i=c[h>>2]|0,j=a+20|0,(i|0)==(c[j>>2]|0)):0){g=Sl(c[a+32>>2]|0,i,k,((k|0)<0)<<31>>31)|0;c[j>>2]=g;c[h>>2]=g;f=0}else{g=a+32|0;if(d){d=a+20|0;ig(c[g>>2]|0,c[d>>2]|0)}else d=a+20|0;g=ih(c[g>>2]|0,k,((k|0)<0)<<31>>31)|0;c[d>>2]=g}if(!g){f=a+8|0;if(!(b[f>>1]&9312))b[f>>1]=1;else rg(a);c[a+16>>2]=0;c[l>>2]=0;f=7;break}d=c[a+32>>2]|0;do if(!d)d=hc[c[8744+48>>2]&127](g)|0;else{if((c[d+276>>2]|0)>>>0<=g>>>0?(c[d+280>>2]|0)>>>0>g>>>0:0){d=e[d+248>>1]|0;break}d=hc[c[8744+48>>2]&127](g)|0}while(0);c[l>>2]=d;o=21}else o=21;while(0);if((o|0)==21){if(((f|0)!=0?(m=c[a+16>>2]|0,(m|0)!=0):0)?(n=c[a+20>>2]|0,(m|0)!=(n|0)):0)gw(n|0,m|0,c[a+12>>2]|0)|0;d=a+8|0;f=b[d>>1]|0;if(!(f&1024))g=a+16|0;else{g=a+16|0;_b[c[a+36>>2]&31](c[g>>2]|0);f=b[d>>1]|0}c[g>>2]=c[a+20>>2];b[d>>1]=f&58367;f=0}return f|0}function bh(a,d){a=a|0;d=d|0;if((c[a+24>>2]|0)<(d|0))a=ah(a,d,0)|0;else{c[a+16>>2]=c[a+20>>2];a=a+8|0;b[a>>1]=(e[a>>1]|0)&13;a=0}return a|0} -function iq(f,g){f=f|0;g=g|0;var h=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,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,ca=0,da=0,ea=0;ea=i;i=i+192|0;if((i|0)>=(j|0))ba();_=ea+48|0;Y=ea+24|0;X=ea+160|0;F=ea+156|0;P=ea+152|0;I=ea+148|0;S=ea+144|0;L=ea+140|0;E=ea+16|0;ca=ea;v=ea+128|0;u=ea+116|0;w=ea+96|0;l=ea+88|0;da=f+8|0;$=c[da>>2]|0;aa=c[f>>2]|0;c[ca+0>>2]=c[9286];c[ca+4>>2]=c[9287];c[ca+8>>2]=c[9288];a:do switch(g|0){case 5:{a[$+450>>0]=0;c[$+440>>2]=0;break}case 7:{a[$+450>>0]=2;c[$+440>>2]=0;break}case 6:{a[$+450>>0]=1;c[$+440>>2]=0;break}case 38:{_=c[f+(aa+-2<<4)+16>>2]|0;c[ca>>2]=_;c[ca+4>>2]=(c[$+504>>2]|0)-_+(c[$+508>>2]|0);break}case 39:{u=f+(aa<<4)+16|0;s=c[$>>2]|0;k=c[$+484>>2]|0;b:do if(k){t=k+38|0;if((b[t>>1]|0)>=(c[s+96>>2]|0)){c[_>>2]=c[k>>2];ph($,36528,_);break}r=Sq(s,u)|0;if(r){p=b[t>>1]|0;h=p<<16>>16;c:do if(p<<16>>16>0){q=a[9328+(d[r>>0]|0)>>0]|0;n=c[k+4>>2]|0;o=r+1|0;l=0;while(1){m=c[n+(l*24|0)>>2]|0;if(q<<24>>24==(a[9328+(d[m>>0]|0)>>0]|0)?($c(o,m+1|0)|0)==0:0)break;l=l+1|0;if((l|0)>=(h|0))break c}c[_>>2]=r;ph($,36552,_);ig(s,r);break b}else n=c[k+4>>2]|0;while(0);o=k+4|0;do if(!(h&7)){n=no(s,n,(h*24|0)+192|0,0)|0;if(!n){ig(s,r);break b}else{c[o>>2]=n;p=b[t>>1]|0;break}}while(0);_=p<<16>>16;Z=n+(_*24|0)|0;c[Z+0>>2]=0;c[Z+4>>2]=0;c[Z+8>>2]=0;c[Z+12>>2]=0;c[Z+16>>2]=0;c[Z+20>>2]=0;c[Z>>2]=r;a[n+(_*24|0)+21>>0]=65;a[n+(_*24|0)+22>>0]=1;b[t>>1]=(b[t>>1]|0)+1<<16>>16}}while(0);Y=u;Z=c[Y+4>>2]|0;_=ca;c[_>>2]=c[Y>>2];c[_+4>>2]=Z;c[$+324>>2]=0;break}case 22:{Pq($,0,f+(aa<<4)+16|0);break}case 23:{Pq($,1,f+(aa<<4)+16|0);break}case 8:{v=c[$>>2]|0;z=v+65|0;if(((a[z>>0]|0)==0?(a[$+18>>0]|0)==0:0)?(V=$+64|0,(c[V>>2]|0)==0):0){y=Kq($)|0;if(y){do{}while((Lq(y,61)|0)!=0);sh(y,24,0,0,0)|0;do if(!(a[z>>0]|0)){o=$+332|0;s=c[o>>2]|0;if((s|0)==0?(c[$+316>>2]|0)==0:0)break;p=y+32|0;q=c[p>>2]|0;if(q)c[(c[y+4>>2]|0)+8>>2]=q;c[(c[y+24>>2]|0)+88>>2]=q+-1;t=v+20|0;d:do if((c[t>>2]|0)>0){h=y+96|0;k=$+328|0;l=v+16|0;m=v+145|0;n=y+4|0;r=0;while(1){u=1<>2]=c[h>>2]|u,_=c[(c[(c[l>>2]|0)+(r<<4)+12>>2]|0)+4>>2]|0,th(y,sh(y,4,r,(c[k>>2]&u|0)!=0&1,c[$+(r<<2)+336>>2]|0)|0,_,-14),(a[m>>0]|0)==0):0)?(K=c[n>>2]|0,(K|0)!=0):0)a[K+(((c[p>>2]|0)+-1|0)*20|0)+3>>0]=1;r=r+1|0;if((r|0)>=(c[t>>2]|0))break d;s=c[o>>2]|0}}while(0);p=$+452|0;if((c[p>>2]|0)>0){o=$+520|0;n=0;do{q=c[(c[(c[o>>2]|0)+(n<<2)>>2]|0)+60>>2]|0;e:do if(!q)q=0;else while(1){if((c[q>>2]|0)==(v|0))break e;q=c[q+24>>2]|0;if(!q){q=0;break}}while(0);th(y,sh(y,146,0,0,0)|0,q,-10);n=n+1|0}while((n|0)<(c[p>>2]|0))}c[p>>2]=0;p=Kq($)|0;o=$+396|0;if((c[o>>2]|0)>0){n=$+400|0;m=0;do{Y=c[n>>2]|0;_=c[Y+(m<<4)+12>>2]|0;th(p,sh(p,145,c[Y+(m<<4)>>2]|0,c[Y+(m<<4)+4>>2]|0,d[Y+(m<<4)+8>>0]|0)|0,_,-2);m=m+1|0}while((m|0)<(c[o>>2]|0))}k=c[$+8>>2]|0;q=c[$+404>>2]|0;if(q){h=(c[$>>2]|0)+16|0;r=k+32|0;s=k+4|0;do{o=c[q+8>>2]|0;p=c[q+12>>2]|0;Mq($,0,o,c[(c[(c[h>>2]|0)+(o<<4)+12>>2]|0)+72>>2]|0,54);o=p+1|0;sh(k,28,0,p,o)|0;n=c[r>>2]|0;l=p+-1|0;m=c[c[q+4>>2]>>2]|0;th(k,sh(k,97,0,l,0)|0,m,0);m=n+9|0;sh(k,108,0,m,0)|0;sh(k,47,0,0,p)|0;sh(k,78,l,n+7|0,p)|0;l=c[s>>2]|0;if(l)a[l+(((c[r>>2]|0)+-1|0)*20|0)+3>>0]=16;sh(k,103,0,o,0)|0;sh(k,47,0,1,p)|0;sh(k,16,0,m,0)|0;sh(k,9,0,n+2|0,0)|0;sh(k,25,0,p,0)|0;sh(k,61,0,0,0)|0;q=c[q>>2]|0}while((q|0)!=0)}p=c[$+316>>2]|0;if((p|0)!=0?(a[$+23>>0]=0,(c[p>>2]|0)>0):0){o=p+4|0;n=0;do{_=c[o>>2]|0;Nq($,c[_+(n*20|0)>>2]|0,c[_+(n*20|0)+16>>2]|0);n=n+1|0}while((n|0)<(c[p>>2]|0))}sh(y,16,0,1,0)|0}while(0);if((c[V>>2]|0)==0?(a[z>>0]|0)==0:0){if((c[$+404>>2]|0)!=0?(W=$+68|0,(c[W>>2]|0)==0):0)c[W>>2]=1;wh(y,$);c[$+12>>2]=101;a[$+16>>0]=0}else Z=48}else Z=48;if((Z|0)==48)c[$+12>>2]=1;c[$+68>>2]=0;c[$+72>>2]=0;c[$+76>>2]=0;c[$+440>>2]=0;c[$+332>>2]=0}break}case 58:{c[v>>2]=Vq($,157,c[f+(aa<<4)+16>>2]|0,0,0)|0;c[v+4>>2]=c[f+(aa+-1<<4)+16>>2];c[v+8>>2]=c[f+(aa<<4)+24>>2];Uq($,v);break}case 59:{_=f+(aa<<4)+16|0;c[u>>2]=Vq($,97,0,0,_)|0;_=c[_>>2]|0;c[u+4>>2]=_;c[u+8>>2]=_+(c[f+(aa<<4)+20>>2]|0);Uq($,u);break}case 61:{k=c[f+(aa<<4)+16>>2]|0;l=c[$+484>>2]|0;if((l|0)!=0?(s=b[l+38>>1]|0,s<<16>>16>=1):0)a[(c[l+4>>2]|0)+(((s<<16>>16)+-1|0)*24|0)+20>>0]=k;break}case 70:{c[ca>>2]=0;break}case 62:{Wq($,0,c[f+(aa+-1<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0,c[f+(aa+-2<<4)+16>>2]|0);break}case 63:{Xq($,0,0,0,0,c[f+(aa<<4)+16>>2]|0,0,0,0,0)|0;break}case 64:{Yq($,c[f+(aa+-1<<4)+16>>2]|0);break}case 9:{l=c[f+(aa+-1<<4)+16>>2]|0;k=c[$>>2]|0;if((Oq($,22,37104,0,0)|0)==0?(B=Kq($)|0,(B|0)!=0):0){if((l|0)!=7?(D=k+20|0,(c[D>>2]|0)>0):0){l=(l|0)==9?2:1;k=B+96|0;n=0;do{sh(B,4,n,l,0)|0;c[k>>2]=c[k>>2]|1<>2]|0))}sh(B,3,0,0,0)|0}break}case 24:{Pq($,2,f+(aa<<4)+16|0);break}case 26:{Qq($,f+(aa+-1<<4)+16|0,f+(aa<<4)+16|0,c[f+(aa+-4<<4)+16>>2]|0,0,0,c[f+(aa+-2<<4)+16>>2]|0);break}case 221:case 218:case 108:case 97:case 85:case 83:case 81:case 68:case 31:case 28:{c[ca>>2]=0;break}case 27:{a[(c[$>>2]|0)+250>>0]=0;Z=f+(aa<<4)+16|0;_=c[Z+4>>2]|0;$=ca;c[$>>2]=c[Z>>2];c[$+4>>2]=_;break}case 222:case 219:case 107:case 84:case 69:case 30:case 29:{c[ca>>2]=1;break}case 32:{Rq($,f+(aa+-2<<4)+16|0,f+(aa+-1<<4)+16|0,a[f+(aa<<4)+16>>0]|0,0);break}case 33:{_=f+(aa<<4)+16|0;Rq($,0,0,0,c[_>>2]|0);Ik(c[$>>2]|0,c[_>>2]|0,1);break}case 34:{a[ca>>0]=0;break}case 35:{l=c[f+(aa<<4)+20>>2]|0;k=c[f+(aa<<4)+16>>2]|0;if((l|0)==5?(Bc(k,20456,5)|0)==0:0){a[ca>>0]=32;break a}a[ca>>0]=0;c[_>>2]=l;c[_+4>>2]=k;ph($,20464,_);break}case 44:{l=f+(aa<<4)+16|0;k=c[$+484>>2]|0;if((k|0)!=0?(G=b[k+38>>1]|0,G<<16>>16>=1):0){_=(G<<16>>16)+-1|0;Z=c[k+4>>2]|0;$=Sq(c[$>>2]|0,l)|0;c[Z+(_*24|0)+12>>2]=$;a[Z+(_*24|0)+21>>0]=Tq($,Z+(_*24|0)+22|0)|0}break}case 65:{Zq($,0,f+(aa+-2<<4)+16|0,c[f+(aa+-1<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0);break}case 66:{k=c[f+(aa<<4)+16>>2]|0;l=c[$+484>>2]|0;if((l|0)!=0?(r=c[l+16>>2]|0,(r|0)!=0):0)a[r+24>>0]=k;break}case 67:{n=c[$+484>>2]|0;if((n|0)!=0?(A=(b[n+38>>1]|0)+-1|0,o=c[$>>2]|0,m=Sq(o,f+(aa<<4)+16|0)|0,(m|0)!=0):0){if(!(_q($,m)|0)){ig(o,m);break a}p=n+4|0;ig(o,c[(c[p>>2]|0)+(A*24|0)+16>>2]|0);c[(c[p>>2]|0)+(A*24|0)+16>>2]=m;l=c[n+8>>2]|0;if(l)do{if((b[c[l+4>>2]>>1]|0)==(A|0))c[c[l+32>>2]>>2]=c[(c[p>>2]|0)+(A*24|0)+16>>2];l=c[l+20>>2]|0}while((l|0)!=0)}break}case 47:{$=c[f+(aa+-5<<4)+16>>2]|0;c[ca>>2]=$;c[ca+4>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0)-$;break}case 49:{$=c[f+(aa+-1<<4)+16>>2]|0;c[ca>>2]=$;c[ca+4>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0)-$;break}case 92:case 54:{Z=f+(aa<<4)+16|0;_=c[Z+4>>2]|0;$=$+320|0;c[$>>2]=c[Z>>2];c[$+4>>2]=_;break}case 57:case 55:{Uq($,f+(aa<<4)+16|0);break}case 56:{Uq($,f+(aa+-1<<4)+16|0);break}case 279:case 263:case 262:case 261:case 260:case 259:case 258:case 257:case 256:case 247:case 150:case 141:case 131:case 130:case 48:case 45:case 42:case 41:case 40:{Z=f+(aa<<4)+16|0;_=c[Z+4>>2]|0;$=ca;c[$>>2]=c[Z>>2];c[$+4>>2]=_;break}case 46:{$=c[f+(aa+-3<<4)+16>>2]|0;c[ca>>2]=$;c[ca+4>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0)-$;break}case 224:{h=Vq($,119,0,0,0)|0;c[ca>>2]=h;if(!h)Ik(c[$>>2]|0,c[f+(aa+-1<<4)+16>>2]|0,1);else{c[h+20>>2]=c[f+(aa+-1<<4)+16>>2];_=c[ca>>2]|0;Z=_+4|0;c[Z>>2]=c[Z>>2]|2099200;ur($,_)}c[ca+4>>2]=c[f+(aa+-2<<4)+16>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 226:{l=aa+-1|0;k=f+(l<<4)+16|0;o=f+(aa<<4)+16|0;n=lr(c[$>>2]|0,0,k,o)|0;p=aa+-3|0;m=Vq($,75,c[f+(p<<4)+16>>2]|0,0,0)|0;c[ca>>2]=m;if(!m){zo(c[$>>2]|0,n);n=0}else{c[m+20>>2]=gr($,0,n,0,0,0,0,0,0,0)|0;n=c[ca>>2]|0;_=n+4|0;c[_>>2]=c[_>>2]|2099200;ur($,n)}if(c[f+(aa+-2<<4)+16>>2]|0)c[ca>>2]=Vq($,19,n,0,0)|0;c[ca+4>>2]=c[f+(p<<4)+20>>2];h=c[o>>2]|0;if(!h)h=(c[k>>2]|0)+(c[f+(l<<4)+20>>2]|0)|0;else h=h+(c[f+(aa<<4)+20>>2]|0)|0;c[ca+8>>2]=h;break}case 225:{l=aa+-4|0;h=Vq($,75,c[f+(l<<4)+16>>2]|0,0,0)|0;c[ca>>2]=h;if(!h){Ik(c[$>>2]|0,c[f+(aa+-1<<4)+16>>2]|0,1);h=0}else{c[h+20>>2]=c[f+(aa+-1<<4)+16>>2];h=c[ca>>2]|0;_=h+4|0;c[_>>2]=c[_>>2]|2099200;ur($,h)}if(c[f+(aa+-3<<4)+16>>2]|0)c[ca>>2]=Vq($,19,h,0,0)|0;c[ca+4>>2]=c[f+(l<<4)+20>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 227:{h=Vq($,20,0,0,0)|0;c[ca>>2]=h;if(!h)Ik(c[$>>2]|0,c[f+(aa+-1<<4)+16>>2]|0,1);else{c[h+20>>2]=c[f+(aa+-1<<4)+16>>2];_=h+4|0;c[_>>2]=c[_>>2]|2099200;ur($,h)}c[ca+4>>2]=c[f+(aa+-3<<4)+16>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 228:{k=Vq($,136,c[f+(aa+-3<<4)+16>>2]|0,0,0)|0;c[ca>>2]=k;if(!k){Jk(c[$>>2]|0,c[f+(aa+-2<<4)+16>>2]|0);Ck(c[$>>2]|0,c[f+(aa+-1<<4)+16>>2]|0)}else{l=c[f+(aa+-1<<4)+16>>2]|0;h=c[f+(aa+-2<<4)+16>>2]|0;if(l)h=hr($,h,l)|0;c[k+20>>2]=h;ur($,c[ca>>2]|0)}c[ca+4>>2]=c[f+(aa+-4<<4)+16>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 291:case 240:{c[ca>>2]=2;break}case 241:{c[ca>>2]=0;break}case 239:{Xq($,f+(aa+-7<<4)+16|0,f+(aa+-6<<4)+16|0,lr(c[$>>2]|0,0,f+(aa+-4<<4)+16|0,0)|0,c[f+(aa+-2<<4)+16>>2]|0,c[f+(aa+-10<<4)+16>>2]|0,f+(aa+-11<<4)+16|0,c[f+(aa<<4)+16>>2]|0,0,c[f+(aa+-8<<4)+16>>2]|0)|0;break}case 229:{c[ca>>2]=hr($,hr($,c[f+(aa+-4<<4)+16>>2]|0,c[f+(aa+-2<<4)+16>>2]|0)|0,c[f+(aa<<4)+16>>2]|0)|0;break}case 230:{c[ca>>2]=hr($,hr($,0,c[f+(aa+-2<<4)+16>>2]|0)|0,c[f+(aa<<4)+16>>2]|0)|0;break}case 237:{c[ca>>2]=hr($,c[f+(aa+-2<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0)|0;break}case 238:{c[ca>>2]=hr($,0,c[f+(aa<<4)+16>>2]|0)|0;break}case 245:{h=hr($,0,rr($,0,f+(aa+-1<<4)+16|0,1)|0)|0;c[ca>>2]=h;ir($,h,f+(aa+-2<<4)+16|0,1);if(h){if((c[h>>2]|0)>(c[(c[$>>2]|0)+96>>2]|0)){c[_>>2]=20632;ph($,34544,_)}a[(c[h+4>>2]|0)+(((c[h>>2]|0)+-1|0)*20|0)+12>>0]=c[f+(aa<<4)+16>>2]}break}case 244:{h=rr($,0,f+(aa+-1<<4)+16|0,1)|0;h=hr($,c[f+(aa+-4<<4)+16>>2]|0,h)|0;c[ca>>2]=h;ir($,h,f+(aa+-2<<4)+16|0,1);if(h){if((c[h>>2]|0)>(c[(c[$>>2]|0)+96>>2]|0)){c[_>>2]=20632;ph($,34544,_)}a[(c[h+4>>2]|0)+(((c[h>>2]|0)+-1|0)*20|0)+12>>0]=c[f+(aa<<4)+16>>2]}break}case 248:{s=c[f+(aa<<4)+16>>2]|0;p=c[f+(aa+-1<<4)+16>>2]|0;r=c[$>>2]|0;do if((a[r+65>>0]|0)==0?(Cn($)|0)==0:0){o=s+12|0;k=Zp(r,c[s+16>>2]|0,c[o>>2]|0)|0;if(!k){if(!p){c[_>>2]=s;c[_+4>>2]=0;ph($,33056,_)}else vr($,c[o>>2]|0);a[$+17>>0]=1;break}if(a[k+51>>0]&3){c[_>>2]=0;ph($,33080,_);break}p=c[k+24>>2]|0;f:do if(p){o=c[r+20>>2]|0;if((o|0)>0){n=c[r+16>>2]|0;q=0;while(1){m=q+1|0;if((c[n+(q<<4)+12>>2]|0)==(p|0)){m=q;break f}if((m|0)<(o|0))q=m;else break}}else m=0}else m=-1e6;while(0);p=c[k+12>>2]|0;o=r+16|0;n=c[(c[o>>2]|0)+(m<<4)>>2]|0;l=(m|0)==1?13184:13208;if(((Oq($,9,l,0,n)|0)==0?(Oq($,(m|0)==0?10:12,c[k>>2]|0,c[p>>2]|0,n)|0)==0:0)?(H=Kq($)|0,(H|0)!=0):0){Z=c[$+408>>2]|0;Z=(Z|0)==0?$:Z;wr($,m);Y=Z+328|0;c[Y>>2]=c[Y>>2]|1<>0]=d[Z>>0]|1;Z=c[k>>2]|0;c[_>>2]=c[(c[o>>2]|0)+(m<<4)>>2];c[_+4>>2]=l;c[_+8>>2]=Z;xr($,33160,_);yr($,m,28536,c[k>>2]|0);zr($,m);Ar($,c[k+40>>2]|0,m);$=c[k>>2]|0;th(H,sh(H,125,m,0,0)|0,$,0)}}while(0);zo(r,s);break}case 246:{c[ca>>2]=0;c[ca+4>>2]=0;break}case 250:case 249:{h=Kq($)|0;if(h){sh(h,13,0,0,0)|0;$=h+96|0;c[$>>2]=c[$>>2]|1}break}case 251:{Br($,f+(aa+-1<<4)+16|0,f+(aa<<4)+16|0,0,0);break}case 252:{Br($,f+(aa+-3<<4)+16|0,f+(aa+-2<<4)+16|0,f+(aa<<4)+16|0,0);break}case 253:{Br($,f+(aa+-4<<4)+16|0,f+(aa+-3<<4)+16|0,f+(aa+-1<<4)+16|0,0);break}case 254:{Br($,f+(aa+-3<<4)+16|0,f+(aa+-2<<4)+16|0,f+(aa<<4)+16|0,1);break}case 255:{Br($,f+(aa+-4<<4)+16|0,f+(aa+-3<<4)+16|0,f+(aa+-1<<4)+16|0,1);break}case 264:{h=c[f+(aa+-3<<4)+16>>2]|0;l=(c[f+(aa<<4)+16>>2]|0)-h+(c[f+(aa<<4)+20>>2]|0)|0;k=c[f+(aa+-1<<4)+16>>2]|0;Z=$+488|0;w=c[Z>>2]|0;x=c[$>>2]|0;c[Z>>2]=0;g:do if((c[$+64>>2]|0)==0&(w|0)!=0){v=c[w>>2]|0;m=w+20|0;s=c[m>>2]|0;h:do if(s){r=c[x+20>>2]|0;if((r|0)>0){p=c[x+16>>2]|0;n=0;while(1){o=n+1|0;if((c[p+(n<<4)+12>>2]|0)==(s|0))break h;if((o|0)<(r|0))n=o;else{n=o;break}}}else n=0}else n=-1e6;while(0);c[w+28>>2]=k;u=(k|0)==0;if(!u){p=k;do{c[p+4>>2]=w;p=c[p+32>>2]|0}while((p|0)!=0)}c[X>>2]=v;if(!v)p=0;else{p=v;while(1)if(!(a[p>>0]|0))break;else p=p+1|0;p=p-v&1073741823}c[X+4>>2]=p;c[Y>>2]=$;t=x+16|0;s=c[t>>2]|0;c[Y+12>>2]=c[s+(n<<4)>>2];c[Y+4>>2]=c[s+(n<<4)+12>>2];c[Y+16>>2]=10720;c[Y+20>>2]=X;s=(n|0)==1;c[Y+8>>2]=s&1;if(!u)do{if(br(Y,c[k+8>>2]|0)|0){k=0;l=w;break g}if(Cr(Y,c[k+20>>2]|0)|0){k=0;l=w;break g}if(Dr(Y,c[k+24>>2]|0)|0){k=0;l=w;break g}k=c[k+32>>2]|0}while((k|0)!=0);if(!(Cr(Y,c[w+12>>2]|0)|0)){p=x+145|0;if(!(a[p>>0]|0)){o=Kq($)|0;if(!o){k=0;l=w;break}Z=c[$+408>>2]|0;wr($,n);Z=((Z|0)==0?$:Z)+328|0;c[Z>>2]=c[Z>>2]|1<>0]=0}else q=0;Z=c[w+4>>2]|0;c[_>>2]=c[(c[t>>2]|0)+(n<<4)>>2];c[_+4>>2]=s?13184:13208;c[_+8>>2]=v;c[_+12>>2]=Z;c[_+16>>2]=q;xr($,30008,_);ig(x,q);zr($,n);c[_>>2]=v;Er(o,n,qh(x,30072,_)|0);if(!(a[p>>0]|0)){k=0;l=w;break}}l=Ek((c[(c[t>>2]|0)+(n<<4)+12>>2]|0)+40|0,v,w)|0;if(l){a[x+65>>0]=1;k=0;break}k=c[m>>2]|0;if((k|0)==(c[w+24>>2]|0)){k=Zm(k+8|0,c[w+4>>2]|0,_)|0;if(!k)k=0;else k=c[k+8>>2]|0;k=k+64|0;c[w+32>>2]=c[k>>2];c[k>>2]=w;k=0}else k=0}else{k=0;l=w}}else l=w;while(0);fg(x,l);Bk(x,k);break}case 265:{A=f+(aa+-7<<4)+16|0;z=aa+-6|0;B=f+(z<<4)+16|0;o=c[f+(aa+-5<<4)+16>>2]|0;D=aa+-4|0;y=c[f+(D<<4)+16>>2]|0;D=c[f+(D<<4)+20>>2]|0;E=c[f+(aa+-2<<4)+16>>2]|0;F=c[f+(aa<<4)+16>>2]|0;k=c[f+(aa+-8<<4)+16>>2]|0;G=c[$>>2]|0;w=(c[f+(aa+-10<<4)+16>>2]|0)!=0;do if(w)if(!(c[f+(z<<4)+20>>2]|0)){c[Y>>2]=A;if(!E){p=0;q=0;break}else{s=1;Z=483;break}}else{ph($,29664,_);p=0;q=0;break}else{s=ar($,A,B,Y)|0;if((s|0)>-1&(E|0)!=0)Z=483;else{p=0;q=0}}while(0);do if((Z|0)==483){h=G+65|0;if(!(a[h>>0]|0)){u=G+145|0;if((a[u>>0]|0)!=0&(s|0)!=1){Z=E+12|0;ig(G,c[Z>>2]|0);c[Z>>2]=0}t=Fr($,E)|0;if((a[u>>0]|0)==0?((t|0)!=0?(c[f+(z<<4)+20>>2]|0)==0:0):0)s=(c[t+68>>2]|0)==(c[(c[G+16>>2]|0)+28>>2]|0)?1:s;if((a[h>>0]|0)==0?(O=c[Y>>2]|0,Z=c[$>>2]|0,c[X>>2]=$,Z=c[Z+16>>2]|0,c[X+12>>2]=c[Z+(s<<4)>>2],c[X+4>>2]=c[Z+(s<<4)+12>>2],c[X+16>>2]=10720,c[X+20>>2]=O,c[X+8>>2]=(s|0)==1&1,(Gr(X,E)|0)==0):0){u=Fr($,E)|0;if(!u){if((a[G+144>>0]|0)!=1){p=0;q=0;break}a[G+146>>0]=1;p=0;q=0;break}if(a[u+44>>0]&16){ph($,29712,_);p=0;q=0;break}q=Sq(G,O)|0;if(q)if(!(Hr($,q)|0)){x=G+16|0;Z=Zm((c[(c[x>>2]|0)+(s<<4)+12>>2]|0)+40|0,q,P)|0;if((Z|0)!=0?(c[Z+8>>2]|0)!=0:0)if(!k){c[_>>2]=O;ph($,29760,_);p=0;break}else{wr($,s);p=0;break}v=c[u>>2]|0;if(!(Bc(v,25568,7)|0)){ph($,29792,_);p=$+64|0;c[p>>2]=(c[p>>2]|0)+1;p=0;break}r=c[u+12>>2]|0;if((r|0)!=0&(o|0)!=49){c[_>>2]=(o|0)==35?29872:29880;c[_+4>>2]=E;c[_+8>>2]=0;ph($,29832,_);p=0;break}n=(o|0)==49;if((r|0)==0&n){c[_>>2]=E;c[_+4>>2]=0;ph($,29888,_);p=0;break}m=u+68|0;u=c[m>>2]|0;i:do if(u){t=c[G+20>>2]|0;if((t|0)>0){k=c[x>>2]|0;l=0;while(1){h=l+1|0;if((c[k+(l<<4)+12>>2]|0)==(u|0)){h=l;break i}if((h|0)<(t|0))l=h;else break}}else h=0}else h=-1e6;while(0);u=c[x>>2]|0;k=c[u+(h<<4)>>2]|0;if(w)t=c[u+16>>2]|0;else t=k;u=(h|0)==1;if((Oq($,u|w?5:7,q,v,t)|0)==0?(Oq($,18,u?13184:13208,0,k)|0)==0:0){p=ih(G,36,0)|0;if(!p){p=0;break}v=p+0|0;k=v+36|0;do{a[v>>0]=0;v=v+1|0}while((v|0)<(k|0));c[p>>2]=q;c[p+4>>2]=gh(G,c[E+16>>2]|0)|0;c[p+20>>2]=c[(c[x>>2]|0)+(s<<4)+12>>2];c[p+24>>2]=c[m>>2];a[p+8>>0]=y;a[p+9>>0]=n|(o|0)==35?1:2;c[p+12>>2]=Ir(G,F,1,0)|0;c[p+16>>2]=Jr(G,D)|0;c[$+488>>2]=p;q=0}else p=0}else p=0;else{p=0;q=0}}else{p=0;q=0}}else{p=0;q=0}}while(0);ig(G,q);zo(G,E);Dk(G,D);Ck(G,F);if(!(c[$+488>>2]|0))fg(G,p);if(!(c[f+(z<<4)+20>>2]|0)){Z=A;_=c[Z+4>>2]|0;$=ca;c[$>>2]=c[Z>>2];c[$+4>>2]=_;break a}else{Z=B;_=c[Z+4>>2]|0;$=ca;c[$>>2]=c[Z>>2];c[$+4>>2]=_;break a}}case 269:case 266:{c[ca>>2]=35;break}case 267:{c[ca>>2]=31;break}case 268:{c[ca>>2]=49;break}case 284:{l=c[$>>2]|0;k=c[f+(aa+-1<<4)+16>>2]|0;h=c[f+(aa<<4)+16>>2]|0;m=a[f+(aa+-5<<4)+16>>0]|0;n=Kr(l,110,f+(aa+-4<<4)+16|0)|0;if(n){c[n+24>>2]=Lr(l,k,1)|0;c[n+20>>2]=Ir(l,h,1,0)|0;a[n+1>>0]=m}Jk(l,k);Ck(l,h);c[ca>>2]=n;break}case 271:case 270:{c[ca>>2]=d[f+(aa<<4)+14>>0];c[ca+4>>2]=0;break}case 272:{c[ca>>2]=110;c[ca+4>>2]=c[f+(aa<<4)+16>>2];break}case 296:case 275:{c[ca>>2]=0;break}case 297:case 276:{c[ca>>2]=c[f+(aa<<4)+16>>2];break}case 277:{_=f+(aa+-1<<4)+16|0;$=f+(aa+-2<<4)+16|0;c[(c[(c[$>>2]|0)+36>>2]|0)+32>>2]=c[_>>2];c[(c[$>>2]|0)+36>>2]=c[_>>2];c[ca>>2]=c[$>>2];break}case 278:{$=f+(aa+-1<<4)+16|0;_=c[$>>2]|0;c[_+36>>2]=_;c[ca>>2]=c[$>>2];break}case 282:{ph($,20736,_);break}case 280:{X=f+(aa<<4)+16|0;Y=c[X+4>>2]|0;Z=ca;c[Z>>2]=c[X>>2];c[Z+4>>2]=Y;ph($,20640,_);break}case 283:{ph($,20824,_);break}case 286:{h=c[$>>2]|0;k=c[f+(aa<<4)+16>>2]|0;l=Kr(h,109,f+(aa+-2<<4)+16|0)|0;if(l){c[l+20>>2]=Ir(h,k,1,0)|0;a[l+1>>0]=10}Ck(h,k);c[ca>>2]=l;break}case 287:{l=c[$>>2]|0;n=c[f+(aa<<4)+16>>2]|0;h=ih(l,40,0)|0;if(!h){Ik(l,n,1);h=0}else{v=h+0|0;k=v+40|0;do{a[v>>0]=0;v=v+1|0}while((v|0)<(k|0));a[h>>0]=119;c[h+8>>2]=n;a[h+1>>0]=10}c[ca>>2]=h;break}case 285:{n=c[$>>2]|0;m=c[f+(aa+-1<<4)+16>>2]|0;l=c[f+(aa<<4)+16>>2]|0;k=a[f+(aa+-4<<4)+16>>0]|0;h=Kr(n,108,f+(aa+-2<<4)+16|0)|0;if(!h)Dk(n,m);else{c[h+8>>2]=cr(n,l,1)|0;c[h+28>>2]=m;a[h+1>>0]=k}Ik(n,l,1);c[ca>>2]=h;break}case 288:{h=Vq($,57,0,0,0)|0;c[ca>>2]=h;if(h)a[h+1>>0]=4;c[ca+4>>2]=c[f+(aa+-3<<4)+16>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 289:{h=Vq($,57,0,0,f+(aa+-1<<4)+16|0)|0;c[ca>>2]=h;if(h)a[h+1>>0]=c[f+(aa+-3<<4)+16>>2];c[ca+4>>2]=c[f+(aa+-5<<4)+16>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 290:{c[ca>>2]=1;break}case 292:{c[ca>>2]=3;break}case 293:{k=c[f+(aa<<4)+16>>2]|0;h=c[f+(aa+-1<<4)+16>>2]|0;t=c[$>>2]|0;do if((a[t+65>>0]|0)==0?(Cn($)|0)==0:0){u=c[k+12>>2]|0;s=c[k+16>>2]|0;r=t+20|0;if((c[r>>2]|0)>0){n=(u|0)==0;m=t+16|0;l=0;p=0;do{o=(l|0)<2^l;q=c[m>>2]|0;if(!(!n?($c(c[q+(o<<4)>>2]|0,u)|0)!=0:0)){q=Zm((c[q+(o<<4)+12>>2]|0)+40|0,s,I)|0;if(q){p=c[q+8>>2]|0;if(p)break}else p=0}l=l+1|0}while((l|0)<(c[r>>2]|0));if(p){Mr($,p);break}}if(!h){c[_>>2]=k;c[_+4>>2]=0;ph($,29600,_)}else vr($,u);a[$+17>>0]=1}while(0);zo(t,k);break}case 294:{_=c[f+(aa+-3<<4)+16>>2]|0;Nr($,24,29360,_,_,c[f+(aa+-1<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0);break}case 303:{Pr($,f+(aa+-1<<4)+16|0,f+(aa<<4)+16|0);break}case 304:{w=c[f+(aa+-3<<4)+16>>2]|0;u=f+(aa<<4)+16|0;v=c[$>>2]|0;k=v+24|0;l=c[k>>2]|0;do if((a[v+65>>0]|0)==0?(U=Qr($,0,w+8|0)|0,(U|0)!=0):0){q=c[$>>2]|0;x=U+68|0;s=c[x>>2]|0;j:do if(s){r=c[q+20>>2]|0;if((r|0)>0){q=c[q+16>>2]|0;o=0;while(1){p=o+1|0;if((c[q+(o<<4)+12>>2]|0)==(s|0)){p=o;break j}if((p|0)<(r|0))o=p;else break}}else p=0}else p=-1e6;while(0);h=c[(c[v+16>>2]|0)+(p<<4)>>2]|0;c[k>>2]=c[k>>2]|2097152;n=Sq(v,u)|0;if(n){if((Wh(v,n,h)|0)==0?(Zp(v,n,h)|0)==0:0){if(Rr($,c[U>>2]|0)|0)break;if(Hr($,n)|0)break;q=c[U>>2]|0;if(c[U+12>>2]|0){c[_>>2]=q;ph($,26088,_);break}if(Oq($,26,h,q,0)|0)break;if(dr($,U)|0)break;if(!(a[U+44>>0]&16))m=0;else{q=c[U+60>>2]|0;k:do if(!q)q=0;else while(1){if((c[q>>2]|0)==(v|0))break k;q=c[q+24>>2]|0;if(!q){q=0;break}}while(0);m=(c[(c[c[q+8>>2]>>2]|0)+76>>2]|0)==0?0:q}q=Kq($)|0;if(!q)break;Z=(m|0)!=0;o=$+408|0;Y=c[o>>2]|0;Y=(Y|0)==0?$:Y;wr($,p);X=Y+328|0;c[X>>2]=c[X>>2]|1<>0]=d[Y>>0]|Z&1;zr($,p);if(Z){Y=$+72|0;Z=(c[Y>>2]|0)+1|0;c[Y>>2]=Z;th(q,sh(q,97,0,Z,0)|0,n,0);th(q,sh(q,152,Z,0,0)|0,m,-10);Z=c[o>>2]|0;a[((Z|0)==0?$:Z)+21>>0]=1}u=c[U>>2]|0;t=Jn(u,-1)|0;do if((c[k>>2]&524288|0)!=0?(Q=Zm((c[x>>2]|0)+56|0,u,S)|0,(Q|0)!=0):0){q=c[Q+8>>2]|0;if(!q)break;o=q;q=0;do{q=Sr(c[$>>2]|0,q,c[c[o>>2]>>2]|0)|0;o=c[o+12>>2]|0}while((o|0)!=0);if(!q)break;c[_>>2]=h;c[_+4>>2]=(p|0)==1?13184:13208;c[_+8>>2]=u;c[_+12>>2]=n;c[_+16>>2]=q;xr($,26120,_);ig(v,q)}while(0);c[_>>2]=h;c[_+4>>2]=(p|0)==1?13184:13208;c[_+8>>2]=n;c[_+12>>2]=n;c[_+16>>2]=n;c[_+20>>2]=n;c[_+24>>2]=n;c[_+28>>2]=t;c[_+32>>2]=u;xr($,26192,_);if(Wh(v,26576,h)|0){Z=c[U>>2]|0;c[_>>2]=h;c[_+4>>2]=n;c[_+8>>2]=Z;xr($,26592,_)}p=Tr($,U)|0;if(p){c[_>>2]=n;c[_+4>>2]=n;c[_+8>>2]=p;xr($,26656,_);ig(v,p)}do if(c[k>>2]&524288){p=Zm((c[x>>2]|0)+56|0,c[U>>2]|0,_)|0;if(!p)break;p=c[p+8>>2]|0;if(!p)break;do{o=c[p>>2]|0;if((o|0)!=(U|0))Ur($,o,c[o>>2]|0);p=c[p+12>>2]|0}while((p|0)!=0)}while(0);Ur($,U,n);break}c[_>>2]=n;ph($,26024,_)}else n=0}else n=0;while(0);zo(v,w);ig(v,n);c[k>>2]=l;break}case 295:{_=c[f+(aa<<4)+16>>2]|0;Nr($,25,29176,_,0,0,_);break}case 300:{Or($,0,0);break}case 302:{Pr($,0,0);break}case 301:{Or($,f+(aa+-1<<4)+16|0,f+(aa<<4)+16|0);break}case 305:{v=c[$>>2]|0;if((c[$+64>>2]|0)==0?(J=v+65|0,(a[J>>0]|0)==0):0){l=c[$+484>>2]|0;q=c[l+68>>2]|0;l:do if(q){p=c[v+20>>2]|0;if((p|0)>0){o=c[v+16>>2]|0;m=0;while(1){n=m+1|0;if((c[o+(m<<4)+12>>2]|0)==(q|0)){x=m;break l}if((n|0)<(p|0))m=n;else{x=n;break}}}else x=0}else x=-1e6;while(0);h=c[(c[v+16>>2]|0)+(x<<4)>>2]|0;k=(c[l>>2]|0)+16|0;r=(b[l+38>>1]|0)+-1|0;p=c[l+4>>2]|0;q=c[p+(r*24|0)+4>>2]|0;w=Wh(v,k,h)|0;if(!(Oq($,26,h,c[w>>2]|0,0)|0)){if(!q)s=0;else s=(a[q>>0]|0)==101?0:q;if(a[p+(r*24|0)+23>>0]&1){ph($,25608,_);break a}if(c[l+8>>2]|0){ph($,25640,_);break a}u=v+24|0;if((c[u>>2]&524288|0)!=0?(c[l+16>>2]|0)!=0&(s|0)!=0:0){ph($,25672,_);break a}t=(s|0)!=0;if(!((a[p+(r*24|0)+20>>0]|0)==0|t)){ph($,25736,_);break a}do if(t){c[L>>2]=0;if(Vr(v,s,1,65,L)|0){a[J>>0]=1;break a}q=c[L>>2]|0;if(!q){ph($,25792,_);break a}else{Ih(q);break}}while(0);q=c[f+(aa<<4)+16>>2]|0;p=f+(aa<<4)+20|0;o=c[p>>2]|0;if((q|0)!=0?(R=fw(o|0,0,1,0)|0,R=ih(v,R,C)|0,(R|0)!=0):0){gw(R|0,q|0,o|0)|0;a[R+o>>0]=0;q=(c[p>>2]|0)+-1|0;p=c[u>>2]|0;m:do if((q|0)>0){q=R+q|0;do{Y=a[q>>0]|0;if(Y<<24>>24!=59?(a[10368+(Y&255)>>0]&1)==0:0)break m;a[q>>0]=0;q=q+-1|0}while(q>>>0>R>>>0)}while(0);c[u>>2]=c[u>>2]|2097152;Y=c[l+48>>2]|0;c[_>>2]=h;c[_+4>>2]=(x|0)==1?13184:13208;c[_+8>>2]=Y;c[_+12>>2]=R;c[_+16>>2]=Y+1;c[_+20>>2]=k;xr($,25840,_);ig(v,R);c[u>>2]=p}q=t?3:2;s=Kq($)|0;if(s){p=$+19|0;n=a[p>>0]|0;do if(n<<24>>24){_=n+-1<<24>>24;a[p>>0]=_;o=c[$+((_&255)<<2)+24>>2]|0;if(!(_<<24>>24)){p=c[$+72>>2]|0;Z=663;break}else{k=n+-2<<24>>24;a[p>>0]=k;k=c[$+((k&255)<<2)+24>>2]|0;break}}else{o=$+72|0;p=(c[o>>2]|0)+1|0;c[o>>2]=p;o=p;Z=663}while(0);if((Z|0)==663){k=p+1|0;c[$+72>>2]=k}sh(s,51,x,o,2)|0;m=s+96|0;c[m>>2]=c[m>>2]|1<>2]|0;p=s+32|0;if(n)a[n+(((c[p>>2]|0)+-1|0)*20|0)+3>>0]=-112;sh(s,52,x,2,k)|0;p=c[p>>2]|0;if(p>>>0>m>>>0)c[(c[l>>2]|0)+(m*20|0)+8>>2]=p;c[(c[s+24>>2]|0)+88>>2]=p+-1;Wr($,o);Wr($,k)}Ur($,w,c[w>>2]|0)}}break}case 306:{t=c[$>>2]|0;a[t+250>>0]=0;h=c[f+(aa<<4)+16>>2]|0;u=t+65|0;do if((a[u>>0]|0)==0?(N=Qr($,0,h+8|0)|0,(N|0)!=0):0){if(a[N+44>>0]&16){ph($,25400,_);break}if(c[N+12>>2]|0){ph($,25440,_);break}if(!(Rr($,c[N>>2]|0)|0)){p=c[N+68>>2]|0;n:do if(p){o=c[t+20>>2]|0;if((o|0)>0){n=c[t+16>>2]|0;q=0;while(1){m=q+1|0;if((c[n+(q<<4)+12>>2]|0)==(p|0)){m=q;break n}if((m|0)<(o|0))q=m;else break}}else m=0}else m=-1e6;while(0);s=ih(t,76,0)|0;if(s){v=s+0|0;k=v+76|0;do{a[v>>0]=0;v=v+1|0}while((v|0)<(k|0));c[$+484>>2]=s;o=s+40|0;b[o>>1]=1;q=b[N+38>>1]|0;n=s+38|0;b[n>>1]=q;q=((((q<<16>>16)+-1|0)/8|0)*192|0)+192|0;p=ih(t,q,0)|0;if(p)bw(p|0,0,q|0)|0;q=s+4|0;c[q>>2]=p;c[_>>2]=c[N>>2];_=qh(t,25472,_)|0;c[s>>2]=_;p=c[q>>2]|0;if((p|0)==0|(_|0)==0){a[u>>0]=1;break}gw(p|0,c[N+4>>2]|0,(b[n>>1]|0)*24|0)|0;if((b[n>>1]|0)>0){p=0;do{_=c[q>>2]|0;Z=_+(p*24|0)|0;c[Z>>2]=gh(t,c[Z>>2]|0)|0;_=_+(p*24|0)+4|0;p=p+1|0;c[_+0>>2]=0;c[_+4>>2]=0;c[_+8>>2]=0;c[_+12>>2]=0}while((p|0)<(b[n>>1]|0))}c[s+68>>2]=c[(c[t+16>>2]|0)+(m<<4)+12>>2];c[s+48>>2]=c[N+48>>2];b[o>>1]=1;_=c[$+408>>2]|0;wr($,m);_=((_|0)==0?$:_)+328|0;c[_>>2]=c[_>>2]|1<>2]|0);q=c[$+484>>2]|0;if(q){h=c[$>>2]|0;p=c[q+68>>2]|0;o:do if(p){o=c[h+20>>2]|0;if((o|0)>0){m=c[h+16>>2]|0;l=0;while(1){n=l+1|0;if((c[m+(l<<4)+12>>2]|0)==(p|0)){n=l;break o}if((n|0)<(o|0))l=n;else break}}else n=0}else n=-1e6;while(0);l=q+44|0;a[l>>0]=d[l>>0]|16;c[q+52>>2]=0;Yr(h,q,Sq(h,k)|0);Yr(h,q,0);Yr(h,q,gh(h,c[q>>2]|0)|0);c[$+500>>2]=(c[k>>2]|0)+(c[f+(aa<<4)+20>>2]|0)-(c[$+496>>2]|0);l=c[q+56>>2]|0;if(l)Oq($,29,c[q>>2]|0,c[l>>2]|0,c[(c[(c[$>>2]|0)+16>>2]|0)+(n<<4)>>2]|0)|0}break}case 322:{c[ca>>2]=0;break}case 324:case 323:{c[ca>>2]=c[f+(aa<<4)+16>>2];break}case 325:{c[ca>>2]=_r($,0,f+(aa+-5<<4)+16|0,c[f+(aa+-4<<4)+16>>2]|0,c[f+(aa+-1<<4)+16>>2]|0)|0;break}case 326:{c[ca>>2]=_r($,c[f+(aa+-7<<4)+16>>2]|0,f+(aa+-5<<4)+16|0,c[f+(aa+-4<<4)+16>>2]|0,c[f+(aa+-1<<4)+16>>2]|0)|0;break}case 314:{Zr($);c[$+512>>2]=0;c[$+516>>2]=0;break}case 318:case 317:case 316:{l=$+512|0;k=c[l>>2]|0;h=c[f+(aa<<4)+16>>2]|0;if(!k){c[l>>2]=h;h=c[f+(aa<<4)+20>>2]|0}else h=h+(c[f+(aa<<4)+20>>2]|0)-k|0;c[$+516>>2]=h;break}case 13:{c[ca>>2]=7;break}case 117:case 115:case 16:case 15:case 14:{c[ca>>2]=d[f+(aa<<4)+14>>0];break}case 18:case 17:{if((Oq($,22,37136,0,0)|0)==0?(y=Kq($)|0,(y|0)!=0):0)sh(y,3,1,0,0)|0;break}case 19:{if((Oq($,22,37120,0,0)|0)==0?(x=Kq($)|0,(x|0)!=0):0)sh(x,3,1,1,0)|0;break}case 74:{c[ca>>2]=c[f+(aa<<4)+16>>2];c[ca+4>>2]=255;break}case 76:{c[ca>>2]=7;break}case 75:{c[ca>>2]=c[f+(aa<<4)+16>>2]<<8;c[ca+4>>2]=65280;break}case 77:{c[ca>>2]=8;break}case 78:{c[ca>>2]=9;break}case 79:{c[ca>>2]=6;break}case 80:{c[ca>>2]=0;break}case 103:case 100:case 98:case 82:{c[ca>>2]=c[f+(aa<<4)+16>>2];break}case 86:{c[ca+4>>2]=0;c[ca>>2]=0;break}case 71:{c[ca>>2]=c[f+(aa+-1<<4)+16>>2]&~c[f+(aa<<4)+20>>2]|c[f+(aa<<4)+16>>2];break}case 73:case 72:{c[ca>>2]=0;c[ca+4>>2]=0;break}case 93:{Wq($,c[f+(aa+-3<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0,c[f+(aa+-2<<4)+16>>2]|0,0);break}case 94:{Xq($,0,0,0,c[f+(aa+-2<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0,0,0,0,0)|0;break}case 95:{Yq($,c[f+(aa+-2<<4)+16>>2]|0);break}case 87:{Z=f+(aa+-1<<4)+16|0;_=c[Z+4>>2]|0;$=ca;c[$>>2]=c[Z>>2];c[$+4>>2]=_;break}case 90:{c[$+324>>2]=0;break}case 104:{c[ca>>2]=4;break}case 105:{c[ca>>2]=5;break}case 106:{$q($,c[f+(aa<<4)+16>>2]|0,0,c[f+(aa+-1<<4)+16>>2]|0);break}case 109:{h=aa+-7|0;o=f+(aa+-3<<4)+16|0;n=f+(aa+-2<<4)+16|0;u=c[f+(aa<<4)+16>>2]|0;q=c[f+(aa+-6<<4)+16>>2]|0;p=c[f+(aa+-4<<4)+16>>2]|0;c[F>>2]=0;t=c[$>>2]|0;if((c[$+440>>2]|0)>0){ph($,35440,_);Ik(t,u,1);break a}Qq($,o,n,q,1,0,p);l=c[$+484>>2]|0;if((l|0)!=0?(c[$+64>>2]|0)==0:0){ar($,o,n,F)|0;q=c[l+68>>2]|0;p:do if(q){o=c[t+20>>2]|0;if((o|0)>0){n=c[t+16>>2]|0;m=0;while(1){p=m+1|0;if((c[n+(m<<4)+12>>2]|0)==(q|0)){p=m;break p}if((p|0)<(o|0))m=p;else break}}else p=0}else p=-1e6;while(0);_=c[F>>2]|0;Z=c[$>>2]|0;c[X>>2]=$;Z=c[Z+16>>2]|0;c[X+12>>2]=c[Z+(p<<4)>>2];c[X+4>>2]=c[Z+(p<<4)+12>>2];c[X+16>>2]=35480;c[X+20>>2]=_;c[X+8>>2]=(p|0)==1&1;if(br(X,u)|0){Ik(t,u,1);break a}c[l+12>>2]=cr(t,u,1)|0;Ik(t,u,1);if(a[t+65>>0]|0)break a;if(!(a[t+145>>0]|0))dr($,l)|0;n=$+504|0;m=c[n>>2]|0;n=c[n+4>>2]|0;_=Y;c[_>>2]=m;c[_+4>>2]=n;_=a[m>>0]|0;if(!(_<<24>>24==59|_<<24>>24==0)){m=m+n|0;c[Y>>2]=m}o=Y+4|0;c[o>>2]=0;p=c[f+(h<<4)+16>>2]|0;n=m-p|0;do{_=n;n=n+-1|0;l=p+n|0;if((_|0)<=0)break}while((a[10368+(d[l>>0]|0)>>0]&1)!=0);c[Y>>2]=l;c[o>>2]=1;Rq($,0,Y,0,0);break a}Ik(t,u,1);break}case 96:{Zq($,c[f+(aa+-6<<4)+16>>2]|0,f+(aa+-3<<4)+16|0,c[f+(aa+-2<<4)+16>>2]|0,c[f+(aa+-1<<4)+16>>2]|0);k=c[f+(aa<<4)+16>>2]|0;l=c[$+484>>2]|0;if((l|0)!=0?(n=c[l+16>>2]|0,(n|0)!=0):0)a[n+24>>0]=k;break}case 99:{c[ca>>2]=10;break}case 101:{a[ca>>0]=10;break}case 102:{a[ca>>0]=c[f+(aa<<4)+16>>2];break}case 110:{$q($,c[f+(aa<<4)+16>>2]|0,1,c[f+(aa+-1<<4)+16>>2]|0);break}case 111:{c[w+0>>2]=c[5124];c[w+4>>2]=c[5125];c[w+8>>2]=c[5126];c[w+12>>2]=c[5127];c[w+16>>2]=c[5128];_=f+(aa<<4)+16|0;er($,c[_>>2]|0,w)|0;Ik(c[$>>2]|0,c[_>>2]|0,1);break}case 112:{q=c[f+(aa<<4)+16>>2]|0;do if(q){c[q+68>>2]=c[f+(aa+-1<<4)+16>>2];l=c[q+52>>2]|0;if(l){m=128;n=1;o=q;p=0;while(1){c[o+56>>2]=p;Y=o+6|0;Z=e[Y>>1]|64;b[Y>>1]=Z;m=Z&m;if(!l)break;Z=l;l=c[l+52>>2]|0;n=n+1|0;p=o;o=Z}if(m){$=q+6|0;b[$>>1]=e[$>>1]|256;break}Z=c[(c[$>>2]|0)+104>>2]|0;if((Z|0)>0&(n|0)>(Z|0))ph($,20520,_)}}else Mn(c[$>>2]|0,c[f+(aa+-1<<4)+16>>2]|0);while(0);c[ca>>2]=q;break}case 120:{c[ca>>2]=gr($,c[f+(aa+-1<<4)+16>>2]|0,0,0,0,0,0,128,0,0)|0;break}case 118:{c[ca>>2]=gr($,c[f+(aa+-6<<4)+16>>2]|0,c[f+(aa+-5<<4)+16>>2]|0,c[f+(aa+-4<<4)+16>>2]|0,c[f+(aa+-3<<4)+16>>2]|0,c[f+(aa+-2<<4)+16>>2]|0,c[f+(aa+-1<<4)+16>>2]|0,b[f+(aa+-7<<4)+16>>1]|0,c[f+(aa<<4)+16>>2]|0,c[f+(aa<<4)+20>>2]|0)|0;break}case 119:case 113:{c[ca>>2]=c[f+(aa<<4)+16>>2];break}case 114:{h=c[f+(aa<<4)+16>>2]|0;do if(h){if(c[h+52>>2]|0){c[l+4>>2]=0;h=gr($,0,fr($,0,0,0,l,h,0,0)|0,0,0,0,0,0,0,0)|0;if(!h){Z=192;break}}_=c[f+(aa+-1<<4)+16>>2]|0;a[h+4>>0]=_;c[h+52>>2]=c[f+(aa+-2<<4)+16>>2];if((_|0)!=116)a[$+22>>0]=1}else Z=192;while(0);if((Z|0)==192){Ik(c[$>>2]|0,c[f+(aa+-2<<4)+16>>2]|0,1);h=0}c[ca>>2]=h;break}case 160:case 158:{c[ca>>2]=0;break}case 159:{c[ca>>2]=1;break}case 165:{c[ca>>2]=0;c[ca+4>>2]=0;break}case 172:{l=c[f+(aa+-7<<4)+16>>2]|0;if(l){Z=$+532|0;c[l+4>>2]=c[Z>>2];c[Z>>2]=l;a[$+449>>0]=1}m=f+(aa+-4<<4)+16|0;kr($,c[m>>2]|0,f+(aa+-3<<4)+16|0);n=f+(aa+-1<<4)+16|0;l=c[n>>2]|0;if(l){if((c[l>>2]|0)>(c[(c[$>>2]|0)+96>>2]|0)){c[_>>2]=20560;ph($,34544,_);l=c[n>>2]|0}}else l=0;or($,c[m>>2]|0,l,c[f+(aa<<4)+16>>2]|0,d[f+(aa+-5<<4)+16>>0]|0);break}case 176:{h=c[f+(aa+-6<<4)+16>>2]|0;if(h){_=$+532|0;c[h+4>>2]=c[_>>2];c[_>>2]=h;a[$+449>>0]=1}pr($,c[f+(aa+-3<<4)+16>>2]|0,0,c[f+(aa+-2<<4)+16>>2]|0,d[f+(aa+-5<<4)+16>>0]|0);break}case 173:{_=hr($,c[f+(aa+-4<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0)|0;c[ca>>2]=_;ir($,_,f+(aa+-2<<4)+16|0,1);break}case 174:{_=hr($,0,c[f+(aa<<4)+16>>2]|0)|0;c[ca>>2]=_;ir($,_,f+(aa+-2<<4)+16|0,1);break}case 175:{h=c[f+(aa+-5<<4)+16>>2]|0;if(h){_=$+532|0;c[h+4>>2]=c[_>>2];c[_>>2]=h;a[$+449>>0]=1}pr($,c[f+(aa+-2<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0,c[f+(aa+-1<<4)+16>>2]|0,d[f+(aa+-4<<4)+16>>0]|0);break}case 181:{c[ca>>2]=qr(c[$>>2]|0,c[f+(aa+-2<<4)+16>>2]|0,f+(aa<<4)+16|0)|0;break}case 182:{c[ca>>2]=qr(c[$>>2]|0,0,f+(aa<<4)+16|0)|0;break}case 183:{$=f+(aa<<4)+16|0;c[ca+0>>2]=c[$+0>>2];c[ca+4>>2]=c[$+4>>2];c[ca+8>>2]=c[$+8>>2];break}case 177:{a[ca>>0]=a[f+(aa<<4)+16>>0]|0;break}case 178:{a[ca>>0]=5;break}case 184:{c[ca>>2]=c[f+(aa+-1<<4)+16>>2];c[ca+4>>2]=c[f+(aa+-2<<4)+16>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 191:case 190:case 185:{_=f+(aa<<4)+16|0;c[ca>>2]=Vq($,d[f+(aa<<4)+14>>0]|0,0,0,_)|0;$=c[_>>2]|0;c[ca+4>>2]=$;c[ca+8>>2]=$+(c[f+(aa<<4)+20>>2]|0);break}case 187:case 186:{_=f+(aa<<4)+16|0;c[ca>>2]=Vq($,27,0,0,_)|0;$=c[_>>2]|0;c[ca+4>>2]=$;c[ca+8>>2]=$+(c[f+(aa<<4)+20>>2]|0);break}case 188:{Z=f+(aa+-2<<4)+16|0;_=f+(aa<<4)+16|0;c[ca>>2]=Vq($,122,Vq($,27,0,0,Z)|0,Vq($,27,0,0,_)|0,0)|0;c[ca+4>>2]=c[Z>>2];c[ca+8>>2]=(c[_>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 189:{Z=f+(aa+-4<<4)+16|0;_=f+(aa<<4)+16|0;c[ca>>2]=Vq($,122,Vq($,27,0,0,Z)|0,Vq($,122,Vq($,27,0,0,f+(aa+-2<<4)+16|0)|0,Vq($,27,0,0,_)|0,0)|0,0)|0;c[ca+4>>2]=c[Z>>2];c[ca+8>>2]=(c[_>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 192:{u=f+(aa<<4)+16|0;t=f+(aa<<4)+20|0;do if(((c[t>>2]|0)>>>0>1?(z=c[u>>2]|0,(a[z>>0]|0)==35):0)?((d[z+1>>0]|0)+-48|0)>>>0<10:0){if(!(a[$+18>>0]|0)){c[_>>2]=u;ph($,20432,_);c[ca>>2]=0;break}o=Vq($,159,0,0,u)|0;c[ca>>2]=o;if(o)zn((c[u>>2]|0)+1|0,o+28|0)|0}else Z=298;while(0);q:do if((Z|0)==298?(M=Vq($,135,0,0,u)|0,c[ca>>2]=M,T=c[u>>2]|0,c[ca+4>>2]=T,c[ca+8>>2]=T+(c[t>>2]|0),T=c[$>>2]|0,(M|0)!=0):0){w=c[M+8>>2]|0;o=w+1|0;do if(a[o>>0]|0){v=(w|0)==0;if(v)x=0;else{q=w;while(1)if(!(a[q>>0]|0))break;else q=q+1|0;x=q-w&1073741823}r:do if((a[w>>0]|0)==63){Y=Ql(o,E,x+-1|0,1)|0;m=E;n=c[m>>2]|0;m=c[m+4>>2]|0;q=n&65535;b[M+32>>1]=q;o=c[T+124>>2]|0;Z=((o|0)<0)<<31>>31;if((m|0)<0|(m|0)==0&n>>>0<1|(Y|0)!=0|((m|0)>(Z|0)|(m|0)==(Z|0)&n>>>0>o>>>0)){c[_>>2]=o;ph($,33296,_);q=0}o=$+440|0;Z=c[o>>2]|0;Y=((Z|0)<0)<<31>>31;if((m|0)>(Y|0)|(m|0)==(Y|0)&n>>>0>Z>>>0)c[o>>2]=n}else{o=c[$+444>>2]|0;s:do if((o|0)>0){n=c[$+472>>2]|0;q=0;l=0;while(1){m=c[n+(q<<2)>>2]|0;if((m|0)!=0?(Wv(m,w)|0)==0:0)break;l=l+1<<16>>16;q=l<<16>>16;if((q|0)>=(o|0)){Z=315;break s}}q=q+1&65535;o=M+32|0;b[o>>1]=q;if(q<<16>>16)break r}else Z=315;while(0);if((Z|0)==315)o=M+32|0;Z=$+440|0;q=(c[Z>>2]|0)+1|0;c[Z>>2]=q;q=q&65535;b[o>>1]=q}while(0);m=q<<16>>16;if(q<<16>>16>0){q=$+444|0;if((m|0)>(c[q>>2]|0)){o=$+472|0;n=no(T,c[o>>2]|0,m<<2,0)|0;if(!n)break q;c[o>>2]=n;Z=c[q>>2]|0;bw(n+(Z<<2)|0,0,m-Z<<2|0)|0;c[q>>2]=m}if((a[w>>0]|0)==63){o=m+-1|0;if(!(c[(c[$+472>>2]|0)+(o<<2)>>2]|0))q=0;else break}else{q=m+-1|0;o=q;q=c[(c[$+472>>2]|0)+(q<<2)>>2]|0}n=$+472|0;ig(T,q);if(!v?(p=fw(x|0,0,1,0)|0,p=ih(T,p,C)|0,(p|0)!=0):0){gw(p|0,w|0,x|0)|0;a[p+x>>0]=0}else p=0;c[(c[n>>2]|0)+(o<<2)>>2]=p}}else{Y=$+440|0;Z=(c[Y>>2]|0)+1|0;c[Y>>2]=Z;b[M+32>>1]=Z}while(0);if((c[$+64>>2]|0)==0?(c[$+440>>2]|0)>(c[T+124>>2]|0):0)ph($,33344,_)}while(0);$=c[u>>2]|0;c[ca+4>>2]=$;c[ca+8>>2]=$+(c[t>>2]|0);break}case 196:{_=f+(aa+-3<<4)+16|0;c[ca>>2]=sr($,0,_)|0;c[ca+4>>2]=c[_>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 197:{_=f+(aa<<4)+16|0;c[ca>>2]=sr($,0,_)|0;$=c[_>>2]|0;c[ca+4>>2]=$;c[ca+8>>2]=$+(c[f+(aa<<4)+20>>2]|0);break}case 193:{Z=aa+-2|0;_=f+(aa<<4)+16|0;c[ca>>2]=rr($,c[f+(Z<<4)+16>>2]|0,_,1)|0;c[ca+4>>2]=c[f+(Z<<4)+20>>2];c[ca+8>>2]=(c[_>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 194:{c[ca>>2]=Vq($,38,c[f+(aa+-3<<4)+16>>2]|0,0,f+(aa+-1<<4)+16|0)|0;c[ca+4>>2]=c[f+(aa+-5<<4)+16>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 195:{l=f+(aa+-1<<4)+16|0;h=c[l>>2]|0;if(h){if((c[h>>2]|0)>(c[(c[$>>2]|0)+112>>2]|0)){c[_>>2]=f+(aa+-4<<4)+16;ph($,20576,_);h=c[l>>2]|0}}else h=0;_=f+(aa+-4<<4)+16|0;h=sr($,h,_)|0;c[ca>>2]=h;c[ca+4>>2]=c[_>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);if(!((h|0)==0?1:(b[f+(aa+-2<<4)+16>>1]|0)==0)){$=h+4|0;c[$>>2]=c[$>>2]|16}break}case 205:case 204:case 203:case 202:case 201:case 200:case 199:case 198:{_=aa+-2|0;c[ca>>2]=Vq($,d[f+(aa+-1<<4)+14>>0]|0,c[f+(_<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0,0)|0;c[ca+4>>2]=c[f+(_<<4)+20>>2];c[ca+8>>2]=c[f+(aa<<4)+24>>2];break}case 206:{Z=f+(aa<<4)+16|0;_=c[Z+4>>2]|0;$=ca;c[$>>2]=c[Z>>2];c[$+4>>2]=_;c[ca+8>>2]=0;break}case 207:{Z=f+(aa<<4)+16|0;_=c[Z+4>>2]|0;$=ca;c[$>>2]=c[Z>>2];c[$+4>>2]=_;c[ca+8>>2]=1;break}case 208:{l=aa+-2|0;_=aa+-1|0;h=sr($,hr($,hr($,0,c[f+(aa<<4)+16>>2]|0)|0,c[f+(l<<4)+16>>2]|0)|0,f+(_<<4)+16|0)|0;c[ca>>2]=h;if(c[f+(_<<4)+24>>2]|0){h=Vq($,19,h,0,0)|0;c[ca>>2]=h}c[ca+4>>2]=c[f+(l<<4)+20>>2];c[ca+8>>2]=c[f+(aa<<4)+24>>2];if(h){$=h+4|0;c[$>>2]=c[$>>2]|128}break}case 210:{_=aa+-1|0;c[ca>>2]=Vq($,d[f+(aa<<4)+14>>0]|0,c[f+(_<<4)+16>>2]|0,0,0)|0;c[ca+4>>2]=c[f+(_<<4)+20>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 209:{l=aa+-4|0;_=aa+-3|0;h=sr($,hr($,hr($,hr($,0,c[f+(aa+-2<<4)+16>>2]|0)|0,c[f+(l<<4)+16>>2]|0)|0,c[f+(aa<<4)+16>>2]|0)|0,f+(_<<4)+16|0)|0;c[ca>>2]=h;if(c[f+(_<<4)+24>>2]|0){h=Vq($,19,h,0,0)|0;c[ca>>2]=h}c[ca+4>>2]=c[f+(l<<4)+20>>2];c[ca+8>>2]=c[f+(aa<<4)+24>>2];if(h){$=h+4|0;c[$>>2]=c[$>>2]|128}break}case 223:{l=f+(aa+-1<<4)+16|0;h=c[l>>2]|0;do if(h){if((c[h>>2]|0)==1){_=c[h+4>>2]|0;h=c[_>>2]|0;c[_>>2]=0;Jk(c[$>>2]|0,c[l>>2]|0);if(h){_=h+4|0;c[_>>2]=c[_>>2]&-769|512}c[ca>>2]=Vq($,(c[f+(aa+-3<<4)+16>>2]|0)!=0?78:79,c[f+(aa+-4<<4)+16>>2]|0,h,0)|0;break}h=Vq($,75,c[f+(aa+-4<<4)+16>>2]|0,0,0)|0;c[ca>>2]=h;if(!h){Jk(c[$>>2]|0,c[l>>2]|0);h=0}else{c[h+20>>2]=c[l>>2];h=c[ca>>2]|0;ur($,h)}if(c[f+(aa+-3<<4)+16>>2]|0)c[ca>>2]=Vq($,19,h,0,0)|0}else{c[ca>>2]=Vq($,132,0,0,20616+(c[f+(aa+-3<<4)+16>>2]<<3)|0)|0;Ck(c[$>>2]|0,c[f+(aa+-4<<4)+16>>2]|0)}while(0);c[ca+4>>2]=c[f+(aa+-4<<4)+20>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 211:{_=aa+-2|0;c[ca>>2]=Vq($,77,c[f+(_<<4)+16>>2]|0,0,0)|0;c[ca+4>>2]=c[f+(_<<4)+20>>2];c[ca+8>>2]=(c[f+(aa<<4)+16>>2]|0)+(c[f+(aa<<4)+20>>2]|0);break}case 212:{Y=aa+-2|0;Z=f+(aa<<4)+16|0;_=Vq($,73,c[f+(Y<<4)+16>>2]|0,c[Z>>2]|0,0)|0;c[ca>>2]=_;c[ca+4>>2]=c[f+(Y<<4)+20>>2];c[ca+8>>2]=c[f+(aa<<4)+24>>2];tr($,c[Z>>2]|0,_,76);break}case 213:{Y=aa+-3|0;Z=f+(aa<<4)+16|0;_=Vq($,148,c[f+(Y<<4)+16>>2]|0,c[Z>>2]|0,0)|0;c[ca>>2]=_;c[ca+4>>2]=c[f+(Y<<4)+20>>2];c[ca+8>>2]=c[f+(aa<<4)+24>>2];tr($,c[Z>>2]|0,_,77);break}case 215:case 214:{_=aa+-1|0;c[ca>>2]=Vq($,d[f+(_<<4)+14>>0]|0,c[f+(aa<<4)+16>>2]|0,0,0)|0;c[ca+4>>2]=c[f+(_<<4)+16>>2];c[ca+8>>2]=c[f+(aa<<4)+24>>2];break}case 216:{c[ca>>2]=Vq($,157,c[f+(aa<<4)+16>>2]|0,0,0)|0;c[ca+4>>2]=c[f+(aa+-1<<4)+16>>2];c[ca+8>>2]=c[f+(aa<<4)+24>>2];break}case 217:{c[ca>>2]=Vq($,158,c[f+(aa<<4)+16>>2]|0,0,0)|0;c[ca+4>>2]=c[f+(aa+-1<<4)+16>>2];c[ca+8>>2]=c[f+(aa<<4)+24>>2];break}case 220:{k=hr($,hr($,0,c[f+(aa+-2<<4)+16>>2]|0)|0,c[f+(aa<<4)+16>>2]|0)|0;l=aa+-4|0;h=Vq($,74,c[f+(l<<4)+16>>2]|0,0,0)|0;c[ca>>2]=h;if(!h)Jk(c[$>>2]|0,k);else c[h+20>>2]=k;if(c[f+(aa+-3<<4)+16>>2]|0)c[ca>>2]=Vq($,19,c[ca>>2]|0,0,0)|0;c[ca+4>>2]=c[f+(l<<4)+20>>2];c[ca+8>>2]=c[f+(aa<<4)+24>>2];break}case 116:{c[ca>>2]=116;break}case 121:{h=gr($,c[f+(aa+-1<<4)+16>>2]|0,0,0,0,0,0,128,0,0)|0;if(!h){c[ca>>2]=c[f+(aa+-4<<4)+16>>2];break a}else{a[h+4>>0]=116;c[h+52>>2]=c[f+(aa+-4<<4)+16>>2];c[ca>>2]=h;break a}}case 122:{b[ca>>1]=1;break}case 124:case 123:{b[ca>>1]=0;break}case 243:case 125:{c[ca>>2]=c[f+(aa+-1<<4)+16>>2];break}case 242:case 236:case 161:case 154:case 126:{c[ca>>2]=0;break}case 127:{l=aa+-1|0;n=hr($,c[f+(aa+-2<<4)+16>>2]|0,c[f+(l<<4)+16>>2]|0)|0;c[ca>>2]=n;if(c[f+(aa<<4)+20>>2]|0)ir($,n,f+(aa<<4)+16|0,1);p=c[$>>2]|0;if(n){o=(c[n+4>>2]|0)+(((c[n>>2]|0)+-1|0)*20|0)+8|0;ig(p,c[o>>2]|0);m=c[f+(l<<4)+20>>2]|0;n=(c[f+(l<<4)+24>>2]|0)-m|0;if((m|0)!=0?(h=fw(n|0,((n|0)<0)<<31>>31|0,1,0)|0,h=ih(p,h,C)|0,(h|0)!=0):0){gw(h|0,m|0,n|0)|0;a[h+n>>0]=0}else h=0;c[o>>2]=h}break}case 133:{l=ih(c[$>>2]|0,80,0)|0;if(l){v=l+0|0;k=v+80|0;do{a[v>>0]=0;v=v+1|0}while((v|0)<(k|0))}c[ca>>2]=l;break}case 134:{n=c[f+(aa<<4)+16>>2]|0;c[ca>>2]=n;if(n){l=c[n>>2]|0;k=l+-1|0;if((k|0)>0)while(1){a[n+(k*72|0)+44>>0]=a[n+((l+-2|0)*72|0)+44>>0]|0;l=k+-1|0;if((l|0)>0){$=k;k=l;l=$}else break}a[n+44>>0]=0}break}case 128:{Z=c[$>>2]|0;c[_>>2]=0;c[_+4>>2]=0;_=jr(Z,116,_,0)|0;c[ca>>2]=hr($,c[f+(aa+-1<<4)+16>>2]|0,_)|0;break}case 132:{c[ca+4>>2]=0;break}case 129:{_=Vq($,116,0,0,f+(aa<<4)+16|0)|0;_=Vq($,122,Vq($,27,0,0,f+(aa+-2<<4)+16|0)|0,_,0)|0;c[ca>>2]=hr($,c[f+(aa+-3<<4)+16>>2]|0,_)|0;break}case 136:{c[ca>>2]=0;break}case 137:{_=fr($,c[f+(aa+-6<<4)+16>>2]|0,f+(aa+-5<<4)+16|0,f+(aa+-4<<4)+16|0,f+(aa+-3<<4)+16|0,0,c[f+(aa+-1<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0)|0;c[ca>>2]=_;kr($,_,f+(aa+-2<<4)+16|0);break}case 135:{h=c[f+(aa+-1<<4)+16>>2]|0;c[ca>>2]=h;if((h|0)!=0?(t=c[h>>2]|0,(t|0)>0):0)a[h+((t+-1|0)*72|0)+44>>0]=c[f+(aa<<4)+16>>2];break}case 138:{c[ca>>2]=fr($,c[f+(aa+-6<<4)+16>>2]|0,0,0,f+(aa+-2<<4)+16|0,c[f+(aa+-4<<4)+16>>2]|0,c[f+(aa+-1<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0)|0;break}case 139:{l=f+(aa+-6<<4)+16|0;n=c[l>>2]|0;if((((n|0)==0?(c[f+(aa+-2<<4)+20>>2]|0)==0:0)?(c[f+(aa+-1<<4)+16>>2]|0)==0:0)?(c[f+(aa<<4)+16>>2]|0)==0:0){c[ca>>2]=c[f+(aa+-4<<4)+16>>2];break a}p=f+(aa+-4<<4)+16|0;k=c[p>>2]|0;o=c[k>>2]|0;if((o|0)==1){l=fr($,n,0,0,f+(aa+-2<<4)+16|0,0,c[f+(aa+-1<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0)|0;c[ca>>2]=l;if(l){X=(c[l>>2]|0)+-1|0;_=c[p>>2]|0;Z=_+16|0;c[l+(X*72|0)+16>>2]=c[Z>>2];Y=_+12|0;c[l+(X*72|0)+12>>2]=c[Y>>2];_=_+28|0;c[l+(X*72|0)+28>>2]=c[_>>2];c[Y>>2]=0;c[Z>>2]=0;c[_>>2]=0}zo(c[$>>2]|0,c[p>>2]|0);break a}if(k){m=o+-1|0;if((m|0)>0){n=o;while(1){a[k+(m*72|0)+44>>0]=a[k+((n+-2|0)*72|0)+44>>0]|0;n=m+-1|0;if((n|0)>0){_=m;m=n;n=_}else break}}a[k+44>>0]=0}_=gr($,0,k,0,0,0,0,512,0,0)|0;c[ca>>2]=fr($,c[l>>2]|0,0,0,f+(aa+-2<<4)+16|0,_,c[f+(aa+-1<<4)+16>>2]|0,c[f+(aa<<4)+16>>2]|0)|0;break}case 149:case 140:{c[ca>>2]=0;c[ca+4>>2]=0;break}case 144:{c[ca>>2]=mr($,f+(aa+-1<<4)+16|0,0,0)|0;break}case 145:{c[ca>>2]=mr($,f+(aa+-2<<4)+16|0,f+(aa+-1<<4)+16|0,0)|0;break}case 146:{c[ca>>2]=mr($,f+(aa+-3<<4)+16|0,f+(aa+-2<<4)+16|0,f+(aa+-1<<4)+16|0)|0;break}case 233:case 231:case 171:case 164:case 147:{c[ca>>2]=c[f+(aa<<4)+16>>2];break}case 234:case 232:case 170:case 163:case 148:{c[ca>>2]=0;break}case 151:{c[ca>>2]=0;c[ca+4>>2]=1;break}case 143:{c[ca>>2]=1;break}case 142:{c[ca>>2]=lr(c[$>>2]|0,0,f+(aa+-1<<4)+16|0,f+(aa<<4)+16|0)|0;break}case 156:{h=hr($,c[f+(aa+-3<<4)+16>>2]|0,c[f+(aa+-1<<4)+16>>2]|0)|0;c[ca>>2]=h;if(h)a[(c[h+4>>2]|0)+(((c[h>>2]|0)+-1|0)*20|0)+12>>0]=c[f+(aa<<4)+16>>2];break}case 157:{h=hr($,0,c[f+(aa+-1<<4)+16>>2]|0)|0;c[ca>>2]=h;if((h|0)!=0?(k=c[h+4>>2]|0,(k|0)!=0):0)a[k+12>>0]=c[f+(aa<<4)+16>>2];break}case 179:case 153:{c[ca>>2]=0;break}case 180:case 152:{c[ca>>2]=c[f+(aa+-1<<4)+16>>2];break}case 166:{c[ca>>2]=c[f+(aa<<4)+16>>2];c[ca+4>>2]=0;break}case 167:{c[ca>>2]=c[f+(aa+-2<<4)+16>>2];c[ca+4>>2]=c[f+(aa<<4)+16>>2];break}case 168:{c[ca+4>>2]=c[f+(aa+-2<<4)+16>>2];c[ca>>2]=c[f+(aa<<4)+16>>2];break}case 169:{h=c[f+(aa+-5<<4)+16>>2]|0;if(h){_=$+532|0;c[h+4>>2]=c[_>>2];c[_>>2]=h;a[$+449>>0]=1}_=f+(aa+-2<<4)+16|0;kr($,c[_>>2]|0,f+(aa+-1<<4)+16|0);nr($,c[_>>2]|0,c[f+(aa<<4)+16>>2]|0);break}case 235:case 162:case 155:{c[ca>>2]=c[f+(aa<<4)+16>>2];break}default:{}}while(0);h=a[20912+(g<<1)>>0]|0;o=h&255;n=a[20913+(g<<1)>>0]|0;m=n&255;p=(c[f>>2]|0)-m|0;c[f>>2]=p;l=b[22184+((b[21568+(e[f+(aa-m<<4)+12>>1]<<1)>>1]|0)+o<<1)>>1]|0;k=l&65535;do if((l&65535)<642)if(!(n<<24>>24)){gq(f,k,o,ca);break}else{c[f>>2]=p+1;aa=1-m+aa|0;b[f+(aa<<4)+12>>1]=l;a[f+(aa<<4)+14>>0]=h;aa=f+(aa<<4)+16|0;c[aa+0>>2]=c[ca+0>>2];c[aa+4>>2]=c[ca+4>>2];c[aa+8>>2]=c[ca+8>>2];break}else{h=c[da>>2]|0;if((p|0)>-1)do Ln(f);while((c[f>>2]|0)>-1);c[da>>2]=h}while(0);i=ea;return}function jq(e,f){e=e|0;f=f|0;var g=0,h=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,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,ca=0,da=0;aa=i;i=i+64|0;if((i|0)>=(j|0))ba();$=aa+8|0;W=aa;n=aa+24|0;h=aa+16|0;l=tq(e,0,h)|0;do if(!l){if(c[h>>2]|0){l=$r(e,f)|0;if(!l)g=0;else k=4}else{l=1;k=4}if((k|0)==4){_=e+43|0;k=(a[_>>0]|0)==0;do if(!(a[e+46>>0]&2)){if(k?(m=e+4|0,Z=c[m>>2]|0,Yb[c[(c[Z>>2]|0)+40>>2]&63](Z,24,0)|0,m=c[m>>2]|0,m=lc[c[(c[m>>2]|0)+56>>2]&31](m,0,1,10)|0,(m|0)!=0):0){h=l;g=m;break}Z=e+44|0;a[Z>>0]=1;k=tq(e,0,h)|0;if(!k){h=$r(e,f)|0;if(!h){h=0;g=0}else{Y=d[e+45>>0]|0;X=Y+1|0;Y=7-Y|0;if(!((a[_>>0]|0)==0?(g=c[e+4>>2]|0,g=lc[c[(c[g>>2]|0)+56>>2]&31](g,X,Y,10)|0,(g|0)!=0):0)){l=e+52|0;k=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(k|0));Q=e+8|0;g=c[Q>>2]|0;g=nc[c[(c[g>>2]|0)+24>>2]&127](g,W)|0;a:do if(!g){R=W;P=c[R+4>>2]|0;b:do if((P|0)>0|(P|0)==0&(c[R>>2]|0)>>>0>32){g=c[Q>>2]|0;g=pc[c[(c[g>>2]|0)+8>>2]&31](g,n,32,0,0)|0;if(g)break a;m=d[n+3>>0]|0;k=d[n+9>>0]<<16|d[n+8>>0]<<24;g=d[n+10>>0]<<8;l=k|g|d[n+11>>0];if(((d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|m&254|0)==931071618?!((l+-1&l|0)!=0|(l|0)>65536|(l|0)<512):0)?(R=m&1,S=e+65|0,a[S>>0]=R,T=e+36|0,c[T>>2]=l,c[e+104>>2]=d[n+13>>0]<<16|d[n+12>>0]<<24|d[n+14>>0]<<8|d[n+15>>0],U=e+84|0,P=n+16|0,N=P,N=d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24,P=P+4|0,P=d[P>>0]|d[P+1>>0]<<8|d[P+2>>0]<<16|d[P+3>>0]<<24,V=U,O=V,a[O>>0]=N,a[O+1>>0]=N>>8,a[O+2>>0]=N>>16,a[O+3>>0]=N>>24,V=V+4|0,a[V>>0]=P,a[V+1>>0]=P>>8,a[V+2>>0]=P>>16,a[V+3>>0]=P>>24,V=e+76|0,uq(R^1,n,24,0,V),(c[V>>2]|0)==(d[n+25>>0]<<16|d[n+24>>0]<<24|d[n+26>>0]<<8|d[n+27>>0]|0)):0){P=e+80|0;if((c[P>>2]|0)!=(d[n+29>>0]<<16|d[n+28>>0]<<24|d[n+30>>0]<<8|d[n+31>>0]|0)){l=0;g=0;break}if((d[n+5>>0]<<16|d[n+4>>0]<<24|d[n+6>>0]<<8|d[n+7>>0]|0)!=3007e3){c[$>>2]=49983;c[$+4>>2]=10788;Zc(14,14848,$);g=14;break a}t=l+24|0;R=Pc(t)|0;if(!R){g=7;break a}u=R+24|0;v=((t|0)<0)<<31>>31;n=fw(t|0,v|0,32,0)|0;m=C;O=W;N=c[O+4>>2]|0;c:do if(!((m|0)>(N|0)|((m|0)==(N|0)?n>>>0>(c[O>>2]|0)>>>0:0))){w=R+8|0;x=R+1|0;y=R+2|0;z=R+3|0;A=R+16|0;B=R+17|0;D=R+18|0;E=R+19|0;F=R+20|0;G=R+21|0;H=R+22|0;I=R+23|0;J=R+4|0;K=R+5|0;L=R+6|0;M=R+7|0;N=e+68|0;O=e+72|0;r=(k>>>16|g)&65535;s=e+66|0;o=32;k=0;l=0;p=0;q=1;while(1){g=c[Q>>2]|0;g=pc[c[(c[g>>2]|0)+8>>2]&31](g,R,t,o,k)|0;if(g){k=36;break}if(Vv(U,w,8)|0){g=p;k=37;break}k=d[x>>0]<<16|d[R>>0]<<24|d[y>>0]<<8|d[z>>0];if(!k){g=p;k=37;break}o=(a[S>>0]|0)==0&1;uq(o,R,8,V,V);uq(o,u,c[T>>2]|0,V,V);if((c[V>>2]|0)!=(d[B>>0]<<16|d[A>>0]<<24|d[D>>0]<<8|d[E>>0]|0)){g=p;k=37;break}if((c[P>>2]|0)!=(d[G>>0]<<16|d[F>>0]<<24|d[H>>0]<<8|d[I>>0]|0)){g=p;break c}o=d[K>>0]<<16|d[J>>0]<<24|d[L>>0]<<8|d[M>>0];g=Wo(e,q,k)|0;if(g){k=36;break}if(!o)g=p;else{c[N>>2]=q;c[O>>2]=o;b[s>>1]=r;l=c[V>>2]|0;g=c[P>>2]|0}k=fw(n|0,m|0,t|0,v|0)|0;o=C;p=W;ca=c[p+4>>2]|0;if((o|0)>(ca|0)|((o|0)==(ca|0)?k>>>0>(c[p>>2]|0)>>>0:0))break c;else{da=m;ca=n;n=k;m=o;p=g;q=q+1|0;k=da;o=ca}}if((k|0)==36){Sc(R);break a}else if((k|0)==37){Sc(R);break b}}else{l=0;g=0}while(0);Sc(R)}else{l=0;g=0}}else{l=0;g=0}while(0);c[e+76>>2]=l;c[e+80>>2]=g;Xo(e);k=c[c[e+32>>2]>>2]|0;c[k+96>>2]=0;c[k+100>>2]=0;g=k+104|0;c[g>>2]=-1;c[k+108>>2]=-1;c[k+112>>2]=-1;c[k+116>>2]=-1;k=e+68|0;l=c[k>>2]|0;if(l)c[g>>2]=l;if(!(c[e+72>>2]|0))g=0;else{g=c[e+100>>2]|0;c[$>>2]=c[k>>2];c[$+4>>2]=g;Zc(283,14888,$);g=0}}while(0);if(!(a[_>>0]|0)){W=c[e+4>>2]|0;lc[c[(c[W>>2]|0)+56>>2]&31](W,X,Y,9)|0}}c[f>>2]=1}}else{h=l;g=k}a[Z>>0]=0;if(!(a[_>>0]|0)){_=c[e+4>>2]|0;lc[c[(c[_>>2]|0)+56>>2]&31](_,0,1,9)|0}}else if(k){h=e+4|0;g=c[h>>2]|0;g=lc[c[(c[g>>2]|0)+56>>2]&31](g,0,1,6)|0;if(!g)if(!(a[_>>0]|0)){h=c[h>>2]|0;lc[c[(c[h>>2]|0)+56>>2]&31](h,0,1,5)|0;h=l;g=264}else{h=l;g=264}else h=l}else{h=l;g=264}while(0);if(h)break}if((c[e+52>>2]|0)!=3007e3){c[$>>2]=50909;c[$+4>>2]=10788;Zc(14,14848,$);g=14}}else g=l;while(0);i=aa;return g|0}function kq(a,d,f,g,h,i){a=a|0;d=d|0;f=f|0;g=g|0;h=h|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;p=c[h>>2]|0;q=c[g>>2]|0;k=(p|0)>0;j=(f|0)>0;if(k|j){n=j;l=0;o=0;m=0;while(1){do if(n){j=d+(l<<1)|0;if(k?(r=q+(m<<1)|0,(c[a+((e[j>>1]|0)<<2)>>2]|0)>>>0>=(c[a+((e[r>>1]|0)<<2)>>2]|0)>>>0):0){k=r;s=7;break}l=l+1|0;k=j}else{k=q+(m<<1)|0;s=7}while(0);if((s|0)==7){s=0;m=m+1|0}n=b[k>>1]|0;k=c[a+((n&65535)<<2)>>2]|0;j=o+1|0;b[i+(o<<1)>>1]=n;if((l|0)<(f|0))l=((c[a+((e[d+(l<<1)>>1]|0)<<2)>>2]|0)==(k|0)&1)+l|0;k=(m|0)<(p|0);n=(l|0)<(f|0);if(!(k|n))break;else o=j}}else j=0;c[g>>2]=d;c[h>>2]=j;gw(d|0,i|0,j<<1|0)|0;return}function lq(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+4>>2]|0;c[e+4>>2]=c[a>>2];a=c[(c[e>>2]|0)+204>>2]|0;c[a+16>>2]=b;e=c[2217]|0;d=c[a+40>>2]|0;if((b|0)>-1)a=b;else{b=ow(b|0,((b|0)<0)<<31>>31|0,-1024,-1)|0;a=(c[a+24>>2]|0)+(c[a+20>>2]|0)|0;a=mw(b|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0}fc[e&15](d,a);return}function mq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=(c[b+12>>2]|0)+136|0;e=g;f=c[e>>2]|0;e=c[e+4>>2]|0;do if((f|0)==0&(e|0)==0)if(!(Zg(c[c[(c[b>>2]|0)+32>>2]>>2]|0,g)|0)){e=g;f=c[e>>2]|0;e=c[e+4>>2]|0;h=5;break}else{e=g;c[e>>2]=0;c[e+4>>2]=0;e=d;c[e>>2]=0;c[e+4>>2]=0;e=1;break}else h=5;while(0);if((h|0)==5){g=d;c[g>>2]=f;c[g+4>>2]=e;if((e|0)>0|(e|0)==0&f>>>0>0){a[d+42>>0]=1;e=0}else e=1}return e|0}function nq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();n=p;c[n>>2]=d;d=b;b=0;a:while(1){h=c[n>>2]|0;g=c[h>>2]|0;c[n>>2]=h+4;h=c[n>>2]|0;k=c[h>>2]|0;c[n>>2]=h+4;h=c[n>>2]|0;l=c[h>>2]|0;c[n>>2]=h+4;h=c[n>>2]|0;m=c[h>>2]|0;c[n>>2]=h+4;h=c[n>>2]|0;e=c[h>>2]|0;c[n>>2]=h+4;if(!g){f=d;d=0}else{f=d;d=0;do{g=g+-1|0;h=a[f>>0]|0;if(((h&255)+-48|0)>>>0>=10)break a;d=(d*10|0)+-48+(h<<24>>24)|0;f=f+1|0}while((g|0)!=0)}if((d|0)<(k|0)|(d|0)>(l|0))break;if(!m){o=9;break}if((m|0)!=(a[f>>0]|0))break;c[e>>2]=d;d=f+1|0;b=b+1|0}if((o|0)==9){c[e>>2]=d;b=b+1|0}i=p;return b|0}function oq(b,e){b=b|0;e=e|0;var f=0,g=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;if((i|0)>=(j|0))ba();s=u;q=u+56|0;r=u+52|0;f=u+48|0;o=u+44|0;p=u+40|0;c[s>>2]=2;c[s+4>>2]=0;c[s+8>>2]=24;c[s+12>>2]=58;c[s+16>>2]=f;c[s+20>>2]=2;c[s+24>>2]=0;c[s+28>>2]=59;c[s+32>>2]=0;c[s+36>>2]=o;do if((nq(b,s)|0)==2){m=b+5|0;if((a[m>>0]|0)==58){c[s>>2]=2;c[s+4>>2]=0;c[s+8>>2]=59;c[s+12>>2]=0;c[s+16>>2]=p;if((nq(b+6|0,s)|0)!=1){f=1;break}m=b+8|0;if((a[m>>0]|0)==46?(g=b+9|0,k=a[g>>0]|0,((k&255)+-48|0)>>>0<10):0){n=0.0;l=1.0;do{n=n*10.0+ +(k<<24>>24)+-48.0;l=l*10.0;g=g+1|0;k=a[g>>0]|0}while(((k&255)+-48|0)>>>0<10);l=n/l}else{g=m;l=0.0}}else{c[p>>2]=0;g=m;l=0.0}a[e+42>>0]=0;a[e+41>>0]=1;c[e+20>>2]=c[f>>2];c[e+24>>2]=c[o>>2];h[e+32>>3]=l+ +(c[p>>2]|0);while(1){f=g+1|0;if(!(a[10368+(d[g>>0]|0)>>0]&1)){m=g;break}else g=f}b=e+28|0;c[b>>2]=0;g=a[m>>0]|0;if(g<<24>>24==43){k=1;t=14}else if(g<<24>>24!=45)if((g&-33)<<24>>24==90){k=0;t=16}else f=0;else{k=-1;t=14}if((t|0)==14){c[s>>2]=2;c[s+4>>2]=0;c[s+8>>2]=14;c[s+12>>2]=58;c[s+16>>2]=q;c[s+20>>2]=2;c[s+24>>2]=0;c[s+28>>2]=59;c[s+32>>2]=0;c[s+36>>2]=r;if((nq(f,s)|0)!=2){f=1;break}k=_(((c[q>>2]|0)*60|0)+(c[r>>2]|0)|0,k)|0;c[b>>2]=k;f=m+6|0;t=16}if((t|0)==16)while(1){g=a[f>>0]|0;if(!(a[10368+(g&255)>>0]&1)){f=k;break}else f=f+1|0}if(!(g<<24>>24)){a[e+43>>0]=(f|0)!=0&1;f=0}else f=1}else f=1;while(0);i=u;return f|0}function pq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,k=0,l=0,m=0,n=0,o=0.0,p=0;n=i;i=i+112|0;if((i|0)>=(j|0))ba();k=n+48|0;m=n;l=n+96|0;f=k+0|0;b=b+0|0;g=f+48|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(g|0));ko(k);lo(k);g=k+8|0;if(((c[g>>2]|0)+-1971|0)>>>0>66){c[g>>2]=2e3;c[k+12>>2]=1;c[k+16>>2]=1;c[k+20>>2]=0;c[k+24>>2]=0;h[k+32>>3]=0.0}else{f=k+32|0;h[f>>3]=+(~~(+h[f>>3]+.5)|0)}c[k+28>>2]=0;a[k+42>>0]=0;jo(k);b=k;f=c[b>>2]|0;b=c[b+4>>2]|0;g=mw(f|0,b|0,1e3,0)|0;g=fw(g|0,C|0,-413362496,0)|0;c[l>>2]=g;g=Rb(l|0)|0;g=(c[2253]|0)!=0?0:g;if(!g){c[d+20>>2]=1;a[d+25>>0]=1;Tg(c[d>>2]|0,20056,-1,1,-1)|0;c[e>>2]=1;f=0;g=0}else{k=c[g+4>>2]|0;l=c[g+8>>2]|0;d=c[g+12>>2]|0;p=(c[g+16>>2]|0)+1|0;o=+(c[g>>2]|0);c[m+8>>2]=(c[g+20>>2]|0)+1900;c[m+12>>2]=p;c[m+16>>2]=d;c[m+20>>2]=l;c[m+24>>2]=k;h[m+32>>3]=o;a[m+40>>0]=1;a[m+41>>0]=1;a[m+42>>0]=0;a[m+43>>0]=0;jo(m);c[e>>2]=0;g=m;g=$v(c[g>>2]|0,c[g+4>>2]|0,f|0,b|0)|0;f=C}C=f;i=n;return g|0}function qq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();o=p+12|0;l=p;n=p+8|0;k=p+16|0;a[d>>0]=0;f=nc[c[(c[b>>2]|0)+24>>2]&127](b,l)|0;h=l;g=c[h>>2]|0;h=c[h+4>>2]|0;if(!((f|0)!=0|((h|0)<0|(h|0)==0&g>>>0<16))){f=fw(g|0,h|0,-16,-1)|0;f=as(b,f,C,o)|0;if(!f){m=c[o>>2]|0;if(!(m>>>0>=e>>>0|(m|0)==0)){f=l;f=fw(c[f>>2]|0,c[f+4>>2]|0,-12,-1)|0;f=as(b,f,C,n)|0;if(!f){f=l;f=fw(c[f>>2]|0,c[f+4>>2]|0,-8,-1)|0;f=pc[c[(c[b>>2]|0)+8>>2]&31](b,k,8,f,C)|0;if(!f)if(!(Vv(k,14808,8)|0)){f=l;f=fw(c[f>>2]|0,c[f+4>>2]|0,-16,-1)|0;f=$v(f|0,C|0,m|0,0)|0;f=pc[c[(c[b>>2]|0)+8>>2]&31](b,d,m,f,C)|0;if(!f){g=c[n>>2]|0;h=0;while(1){e=a[d+h>>0]|0;f=g-e|0;h=h+1|0;if(h>>>0>=m>>>0)break;else g=f}c[n>>2]=f;if((g|0)==(e|0))f=m;else{c[o>>2]=0;f=0}a[d+f>>0]=0;f=0}}else f=0}}else f=0}}i=p;return f|0}function rq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();l=s+8|0;q=s+4|0;o=s;r=a+72|0;h=r;k=c[h>>2]|0;h=c[h+4>>2]|0;if((k|0)==0&(h|0)==0){m=0;n=0;k=c[a+148>>2]|0}else{m=fw(k|0,h|0,-1,-1)|0;k=c[a+148>>2]|0;m=mw(m|0,C|0,k|0,0)|0;m=fw(m|0,C|0,1,0)|0;m=ow(m|0,C|0,k|0,0)|0;n=C}p=r;c[p>>2]=m;c[p+4>>2]=n;p=a+148|0;k=fw(k|0,0,m|0,n|0)|0;h=C;do if(!((h|0)>(e|0)|(h|0)==(e|0)&k>>>0>d>>>0)){if((b|0)==0?(b=a+80|0,(m|0)==(c[b>>2]|0)?(n|0)==(c[b+4>>2]|0):0):0)d=a+64|0;else{k=a+64|0;e=c[k>>2]|0;e=pc[c[(c[e>>2]|0)+8>>2]&31](e,l,8,m,n)|0;if(e)break;if(!(Vv(l,14808,8)|0))d=k;else{e=101;break}}l=c[d>>2]|0;e=fw(m|0,n|0,8,0)|0;e=as(l,e,C,f)|0;if(!e){f=c[d>>2]|0;e=fw(m|0,n|0,12,0)|0;e=as(f,e,C,a+48|0)|0;if(!e){f=c[d>>2]|0;e=fw(m|0,n|0,16,0)|0;e=as(f,e,C,g)|0;if(!e){h=r;k=c[h>>2]|0;h=c[h+4>>2]|0;if((k|0)==0&(h|0)==0){g=c[d>>2]|0;e=fw(m|0,n|0,20,0)|0;e=as(g,e,C,o)|0;if(e)break;g=c[d>>2]|0;e=fw(m|0,n|0,24,0)|0;e=as(g,e,C,q)|0;if(e)break;d=c[q>>2]|0;if(!d){h=c[a+152>>2]|0;c[q>>2]=h}else h=d;d=c[o>>2]|0;if(h>>>0<512|d>>>0<32|h>>>0>65536|d>>>0>65536){e=101;break}if(h+-1&h){e=101;break}if(d+-1&d){e=101;break}e=Yk(a,q,-1)|0;c[p>>2]=d;h=r;k=c[h>>2]|0;h=c[h+4>>2]|0}else{d=c[p>>2]|0;e=0}m=fw(k|0,h|0,d|0,0)|0;n=r;c[n>>2]=m;c[n+4>>2]=C}}}}else e=101;while(0);i=s;return e|0}function sq(f,g,h,k,l){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var 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;A=i;i=i+16|0;if((i|0)>=(j|0))ba();v=A+8|0;o=A+4|0;r=A;y=c[f+200>>2]|0;z=(k|0)!=0;n=c[(z?f+64|0:f+68|0)>>2]|0;q=g;q=as(n,c[q>>2]|0,c[q+4>>2]|0,o)|0;do if(!q){x=f+152|0;u=c[x>>2]|0;q=g;q=fw(c[q>>2]|0,c[q+4>>2]|0,4,0)|0;q=pc[c[(c[n>>2]|0)+8>>2]&31](n,y,u,q,C)|0;if(!q){B=c[x>>2]|0;p=(k<<2)+4+B|0;q=g;q=fw(p|0,((p|0)<0)<<31>>31|0,c[q>>2]|0,c[q+4>>2]|0)|0;p=C;u=g;c[u>>2]=q;c[u+4>>2]=p;u=c[o>>2]|0;if((u|0)!=0?(u|0)!=(((c[2514]|0)/(B|0)|0)+1|0):0)if(u>>>0<=(c[f+24>>2]|0)>>>0?($h(h,u)|0)==0:0){if(z){q=fw(q|0,p|0,-4,-1)|0;q=as(n,q,C,r)|0;if(q){m=q;break}if(!l){q=c[f+48>>2]|0;p=(c[x>>2]|0)+-200|0;if((p|0)>0)do{q=(d[y+p>>0]|0)+q|0;p=p+-200|0}while((p|0)>0);if((q|0)!=(c[r>>2]|0)){m=101;break}}}if((h|0)!=0?(m=Zh(h,u)|0,(m|0)!=0):0)break;r=(u|0)==1;if(r?(s=f+142|0,t=a[y+20>>0]|0,(b[s>>1]|0)!=(t&255|0)):0)b[s>>1]=t&255;if(!(c[f+208>>2]|0)){t=f+204|0;q=Yb[c[8744+132>>2]&63](c[(c[t>>2]|0)+40>>2]|0,u,0)|0;q=el(c[t>>2]|0,u,q)|0}else q=0;c[v>>2]=q;if(z)if(!(a[f+7>>0]|0)){t=g;h=c[t+4>>2]|0;p=f+80|0;s=c[p+4>>2]|0;p=(h|0)<(s|0)|((h|0)==(s|0)?(c[t>>2]|0)>>>0<=(c[p>>2]|0)>>>0:0)}else p=1;else if(!q)p=1;else p=(b[q+24>>1]&4)==0;o=c[f+60>>2]|0;n=c[o>>2]|0;do if(n){m=a[f+16>>0]|0;if((m&255)>3){if(!p){w=33;break}}else if(!(m<<24>>24==0&p)){w=33;break}p=c[x>>2]|0;m=ow(p|0,((p|0)<0)<<31>>31|0,u+-1|0,0)|0;m=pc[c[n+12>>2]&31](o,y,p,m,C)|0;p=f+32|0;if(u>>>0>(c[p>>2]|0)>>>0)c[p>>2]=u;p=c[f+88>>2]|0;if(p)Yo(p,u,y)}else w=33;while(0);if((w|0)==33)if((k|0)==0&(q|0)==0){t=f+20|0;a[t>>0]=d[t>>0]|2;m=vg(f,u,v,1)|0;a[t>>0]=d[t>>0]&253;if(m)break;q=c[v>>2]|0;m=q+24|0;b[m>>1]=e[m>>1]&65527;Po(q);m=0}else m=0;if(q){o=c[q+4>>2]|0;gw(o|0,y|0,c[x>>2]|0)|0;_b[c[f+196>>2]&31](q);do if(z){if((l|0)!=0?(t=g,h=c[t+4>>2]|0,u=f+80|0,s=c[u+4>>2]|0,(h|0)>(s|0)|((h|0)==(s|0)?(c[t>>2]|0)>>>0>(c[u>>2]|0)>>>0:0)):0)break;tl(q)}while(0);if(r){p=f+104|0;n=o+24|0;o=p+16|0;do{a[p>>0]=a[n>>0]|0;p=p+1|0;n=n+1|0}while((p|0)<(o|0))}kl(q)}}else m=0;else m=101}else m=q}else m=q;while(0);i=A;return m|0}function tq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=b+24|0;if((c[g>>2]|0)<=(e|0)){i=e+1|0;j=b+32|0;h=Tc(c[j>>2]|0,i<<2)|0;if(!h){g=7;h=0}else{k=c[g>>2]|0;bw(h+(k<<2)|0,0,i-k<<2|0)|0;c[j>>2]=h;c[g>>2]=i;k=5}}else{h=c[b+32>>2]|0;k=5}if((k|0)==5){j=b+32|0;h=h+(e<<2)|0;do if(!(c[h>>2]|0)){if((a[b+43>>0]|0)!=2){g=c[b+4>>2]|0;g=pc[c[(c[g>>2]|0)+52>>2]&31](g,e,32768,d[b+44>>0]|0,h)|0;if((g|0)!=8)break;g=b+46|0;a[g>>0]=d[g>>0]|2;g=0;break}g=mg(32768,0)|0;if(g)bw(g|0,0,32768)|0;c[(c[j>>2]|0)+(e<<2)>>2]=g;g=(c[(c[j>>2]|0)+(e<<2)>>2]|0)==0?7:0}else g=0;while(0);h=c[(c[j>>2]|0)+(e<<2)>>2]|0}c[f>>2]=h;return g|0}function uq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=b+d|0;if(!e){g=0;d=0}else{g=c[e>>2]|0;d=c[e+4>>2]|0}if(!a)do{g=g+d+(jw(c[b>>2]|0)|0)|0;d=g+d+(jw(c[b+4>>2]|0)|0)|0;b=b+8|0}while(b>>>0>>0);else do{g=g+d+(c[b>>2]|0)|0;d=g+d+(c[b+4>>2]|0)|0;b=b+8|0}while(b>>>0>>0);c[f>>2]=g;c[f+4>>2]=d;return}function vq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=a+8|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>(f|0)|(h|0)==(f|0)&g>>>0>e>>>0?(i=fw(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0,k=C,!((k|0)<(h|0)|(k|0)==(h|0)&i>>>0>>0)):0){i=$v(g|0,h|0,e|0,f|0)|0;h=a+4|0;g=c[h>>2]|0;g=pc[c[(c[g>>2]|0)+12>>2]&31](g,b,i,e,f)|0;if(!g){e=fw(i|0,((i|0)<0)<<31>>31|0,e|0,f|0)|0;f=C;g=c[h>>2]|0;g=nc[c[(c[g>>2]|0)+20>>2]&127](g,c[a+16>>2]&19)|0;if(!((i|0)==(d|0)|(g|0)!=0)){d=d-i|0;h=b+i|0;g=f;j=5}}}else{h=b;g=f;j=5}if((j|0)==5){f=c[a+4>>2]|0;g=pc[c[(c[f>>2]|0)+12>>2]&31](f,h,d,e,g)|0}return g|0}function wq(a){a=a|0;var d=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();h=l+8|0;k=l+4|0;g=l;c[h>>2]=0;c[k>>2]=0;c[g>>2]=0;f=a+68|0;d=c[f>>2]|0;if(d){Lo(a,(d+33|0)>>>12,h,k,g)|0;g=(c[f>>2]|0)-(c[g>>2]|0)|0;a=c[h>>2]|0;f=0;do{d=a+(f<<1)|0;if((e[d>>1]|0|0)>(g|0))b[d>>1]=0;f=f+1|0}while((f|0)!=8192);d=(c[k>>2]|0)+(g+1<<2)|0;bw(d|0,0,a-d|0)|0}i=l;return}function xq(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();e=g;h=a+204|0;f=Yb[c[8744+132>>2]&63](c[(c[h>>2]|0)+40>>2]|0,d,0)|0;f=el(c[h>>2]|0,d,f)|0;do if(!f)e=0;else{if((b[f+26>>1]|0)==1){il(f);e=0;break}c[e>>2]=0;d=gl(c[a+208>>2]|0,c[f+20>>2]|0,e)|0;if(!d){d=hl(f,c[e>>2]|0)|0;if(!d){_b[c[a+196>>2]&31](f);d=0}}xg(f);e=d}while(0);d=c[a+88>>2]|0;if(d)do{c[d+16>>2]=1;d=c[d+44>>2]|0}while((d|0)!=0);i=g;return e|0}function yq(f,g,h){f=f|0;g=g|0;h=h|0;var 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;D=i;i=i+16|0;if((i|0)>=(j|0))ba();C=D;z=c[f+52>>2]|0;q=(c[z+36>>2]|0)+-4|0;v=g&65535;A=h&65535;u=A+v|0;B=c[f+56>>2]|0;if(b[z+22>>1]&4)bw(B+v|0,0,A|0)|0;y=d[f+6>>0]|0;z=y+1|0;n=z&65535;x=z&65535;if((a[B+(x+1)>>0]|0)==0?(a[B+x>>0]|0)==0:0){s=h&255;q=(h&65535)>>>8&255;r=u;p=0;o=0;x=23}else{s=n;x=6}a:do if((x|0)==6){while(1){x=0;m=s&65535;o=a[B+(m+1)>>0]|0;l=o&255;r=d[B+m>>0]<<8|l;n=s;s=r&65535;if(!(r>>>0>>0&(r|0)!=0)){p=o;t=r;break}if(r>>>0<(m+4|0)>>>0){x=8;break}else x=6}if((x|0)==8){c[C>>2]=54420;c[C+4>>2]=10788;Zc(11,13600,C);k=11;break}if(t>>>0>q>>>0){c[C>>2]=54423;c[C+4>>2]=10788;Zc(11,13600,C);k=11;break}k=h&255;q=(h&65535)>>>8&255;o=(s&65535)>>>8&255;do if((t+-1|0)>>>0<(u+3|0)>>>0)if(u>>>0>t>>>0){c[C>>2]=54434;c[C+4>>2]=10788;Zc(11,13600,C);k=11;break a}else{r=(d[B+(t+2)>>0]<<8|d[B+(t+3)>>0])+t|0;q=r-v|0;s=q&255;q=(q&65535)>>>8&255;p=a[B+(t+1)>>0]|0;o=a[B+t>>0]|0;k=l-u&255;break}else{s=k;r=u;k=0}while(0);do if(m>>>0>z>>>0?(w=(d[B+(m+2)>>0]<<8|d[B+(m+3)>>0])+m|0,(w+3|0)>=(v|0)):0)if((v|0)<(w|0)){c[C>>2]=54447;c[C+4>>2]=10788;Zc(11,13600,C);k=11;break a}else{q=r-m|0;g=n;s=q&255;q=(q&65535)>>>8&255;k=(k&255)+v-w&255;break}while(0);m=B+(y+7)|0;l=a[m>>0]|0;if((l&255)<(k&255)){c[C>>2]=54453;c[C+4>>2]=10788;Zc(11,13600,C);k=11;break}else{a[m>>0]=(l&255)-(k&255);x=23;break}}while(0);b:do if((x|0)==23){k=g&65535;l=B+(y+5)|0;m=B+(y+6)|0;do if((k|0)==(d[l>>0]<<8|d[m>>0]|0))if((n&65535|0)==(z|0)){a[B+z>>0]=o;a[B+(y+2)>>0]=p;a[l>>0]=r>>>8;a[m>>0]=r;break}else{c[C>>2]=54460;c[C+4>>2]=10788;Zc(11,13600,C);k=11;break b}else{C=n&65535;a[B+C>>0]=(g&65535)>>>8;a[B+(C+1)>>0]=g;a[B+k>>0]=o;a[B+(k+1)>>0]=p;a[B+(k+2)>>0]=q;a[B+(k+3)>>0]=s}while(0);k=f+16|0;b[k>>1]=(e[k>>1]|0)+A;k=0}while(0);i=D;return k|0}function zq(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;if((i|0)>=(j|0))ba();r=u;q=d[b+6>>0]|0;t=c[b+56>>2]|0;p=c[(c[b+52>>2]|0)+36>>2]|0;l=p+-4|0;b=q+1|0;while(1){m=t+b|0;n=(d[m>>0]|0)<<8|(d[t+(b+1)>>0]|0);if(!n){b=0;break}if((n|0)>(l|0)|(n|0)<(b+4|0)){s=4;break}h=t+(n+2)|0;k=t+(n+3)|0;b=(d[h>>0]|0)<<8|(d[k>>0]|0);if((b|0)<(e|0))b=n;else{o=h;l=n;s=6;break}}a:do if((s|0)==4){c[r>>2]=54252;c[r+4>>2]=10788;Zc(11,13600,r);c[f>>2]=11;b=0}else if((s|0)==6){h=b-e|0;do if((h|0)>=4)if((b+l|0)>(p|0)){c[r>>2]=54275;c[r+4>>2]=10788;Zc(11,13600,r);c[f>>2]=11;b=0;break a}else{a[o>>0]=h>>>8;a[k>>0]=h;break}else{b=t+(q+7)|0;if((d[b>>0]|0)<=59){q=t+l|0;q=d[q>>0]|d[q+1>>0]<<8;a[m>>0]=q;a[m+1>>0]=q>>8;a[b>>0]=(d[b>>0]|0)+h;break}if(!g){b=0;break a}c[g>>2]=1;b=0;break a}while(0);b=t+(h+l)|0}while(0);i=u;return b|0}function Aq(f){f=f|0;var g=0,h=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;D=i;i=i+16|0;if((i|0)>=(j|0))ba();B=D;y=c[f+56>>2]|0;A=d[f+6>>0]|0;u=e[f+14>>1]|0;v=b[f+18>>1]|0;q=v&65535;r=f+52|0;s=c[(c[r>>2]|0)+36>>2]|0;z=(q<<1)+u|0;t=s+-4|0;w=y+(A+5)|0;x=y+(A+6)|0;a:do if(v<<16>>16){p=s;v=0;h=y;k=0;while(1){m=(v<<1)+u|0;l=y+m|0;m=y+(m+1)|0;n=(d[l>>0]|0)<<8|(d[m>>0]|0);if((n|0)<(z|0)|(n|0)>(t|0)){C=3;break}o=(Hp(f,h+n|0)|0)&65535;g=p-o|0;if((g|0)<(z|0)|(o+n|0)>(s|0)){C=5;break}a[l>>0]=g>>>8;a[m>>0]=g;if(!k)if((g|0)==(n|0))k=0;else{k=c[(c[c[r>>2]>>2]|0)+200>>2]|0;h=(d[w>>0]|0)<<8|(d[x>>0]|0);gw(k+h|0,y+h|0,p-h|0)|0;h=k;C=9}else C=9;if((C|0)==9){C=0;gw(y+g|0,h+n|0,o|0)|0}v=v+1|0;if((v|0)>=(q|0)){C=11;break a}else p=g}if((C|0)==3){c[B>>2]=54184;c[B+4>>2]=10788;Zc(11,13600,B);g=11;break}else if((C|0)==5){c[B>>2]=54196;c[B+4>>2]=10788;Zc(11,13600,B);g=11;break}}else{g=s;C=11}while(0);if((C|0)==11){a[w>>0]=g>>>8;a[x>>0]=g;a[y+(A+1)>>0]=0;a[y+(A+2)>>0]=0;a[y+(A+7)>>0]=0;C=g-z|0;bw(y+z|0,0,C|0)|0;if((C|0)==(e[f+16>>1]|0|0))g=0;else{c[B>>2]=54221;c[B+4>>2]=10788;Zc(11,13600,B);g=11}}i=D;return g|0}function Bq(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,k=0;k=i;i=i+32|0;if((i|0)>=(j|0))ba();h=k;if((c[f>>2]|0)==0?(np(a,e,h),g=b[h+18>>1]|0,g<<16>>16!=0):0){g=g&65535;vp(c[a+52>>2]|0,(d[e+(g+1)>>0]|0)<<16|(d[e+g>>0]|0)<<24|(d[e+(g+2)>>0]|0)<<8|(d[e+(g+3)>>0]|0),3,c[a+72>>2]|0,f)}i=k;return}function Cq(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;do if(!(c[g>>2]|0)){h=c[b+52>>2]|0;j=c[b+56>>2]|0;l=c[f+56>>2]|0;i=d[b+6>>0]|0;k=(c[f+72>>2]|0)==1?100:0;m=d[j+(i+5)>>0]<<8|d[j+(i+6)>>0];gw(l+m|0,j+m|0,(c[h+36>>2]|0)-m|0)|0;gw(l+k|0,j+i|0,(e[b+18>>1]<<1)+(e[b+14>>1]|0)|0)|0;a[f>>0]=0;b=Xp(f)|0;if(b){c[g>>2]=b;break}if(a[h+17>>0]|0)c[g>>2]=Wp(f)|0}while(0);return}function Dq(f,g,h,i){f=f|0;g=g|0;h=h|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,u=0;q=d[f+6>>0]|0;t=c[f+56>>2]|0;m=c[f+52>>2]|0;o=c[m+36>>2]|0;n=t+o|0;j=c[f+64>>2]|0;m=c[(c[m>>2]|0)+200>>2]|0;p=t+(q+5)|0;r=t+(q+6)|0;s=(d[p>>0]|0)<<8|(d[r>>0]|0);gw(m+s|0,t+s|0,o-s|0)|0;s=t;if((g|0)>0){o=0;l=j;j=n;while(1){k=c[h+(o<<2)>>2]|0;if(k>>>0>t>>>0&k>>>0>>0)k=m+(k-s)|0;u=e[i+(o<<1)>>1]|0;j=j+(0-u)|0;gw(j|0,k|0,u|0)|0;k=j-s|0;a[l>>0]=k>>>8;a[l+1>>0]=k;o=o+1|0;if((o|0)==(g|0))break;else l=l+2|0}}else j=n;i=f+18|0;b[i>>1]=g;a[f+1>>0]=0;a[t+(q+1)>>0]=0;a[t+(q+2)>>0]=0;a[t+(q+3)>>0]=(e[i>>1]|0)>>>8;a[t+(q+4)>>0]=b[i>>1];i=j-s|0;a[p>>0]=i>>>8;a[r>>0]=i;a[t+(q+7)>>0]=0;return}function Eq(a,b,f,g){a=a|0;b=b|0;f=f|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;r=c[a+56>>2]|0;p=r+(c[(c[a+52>>2]|0)+36>>2]|0)|0;n=r+((d[a+6>>0]|0)+8+(d[a+7>>0]|0))|0;a:do if((b|0)>0){o=r;q=0;h=0;l=0;m=0;while(1){j=c[f+(q<<2)>>2]|0;if(j>>>0>=n>>>0&j>>>0

>>0){i=e[g+(q<<1)>>1]|0;k=j+i|0;if((l|0)!=(k|0)){if(l)yq(a,l-o&65535,m&65535)|0;if(k>>>0>p>>>0){h=0;break a}}else i=i+m|0;h=h+1|0}else{j=l;i=m}q=q+1|0;if((q|0)>=(b|0))break;else{l=j;m=i}}if(j)yq(a,j-r&65535,i&65535)|0}else h=0;while(0);return h|0}function Fq(b,d,f,g,h,k,l){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();t=v;n=c[b+56>>2]|0;m=c[f>>2]|0;if(!(a[n+1>>0]|0))s=(a[n+2>>0]|0)!=0;else s=1;a:do if((h|0)>0){q=0;while(1){p=e[l+(q<<1)>>1]|0;if(s?(r=zq(b,p,t,0)|0,(r|0)!=0):0)o=r;else{o=m+(0-p)|0;if(o>>>0>>0){m=1;break a}else m=o}gw(o|0,c[k+(q<<2)>>2]|0,p|0)|0;p=o-n|0;a[g>>0]=p>>>8;a[g+1>>0]=p;q=q+1|0;if((q|0)>=(h|0)){u=9;break}else g=g+2|0}}else u=9;while(0);if((u|0)==9){c[f>>2]=m;m=0}i=v;return m|0}function Gq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;e=c[a+44>>2]|0;h=a;f=c[h>>2]|0;h=c[h+4>>2]|0;a:do if(!e){m=a+40|0;e=c[m>>2]|0;g=((e|0)<0)<<31>>31;l=nw(f|0,h|0,e|0,g|0)|0;if(!l){k=a+8|0;k=$v(c[k>>2]|0,c[k+4>>2]|0,f|0,h|0)|0;p=C;q=c[a+24>>2]|0;e=pc[c[(c[q>>2]|0)+8>>2]&31](q,c[a+36>>2]|0,(p|0)>(g|0)|(p|0)==(g|0)&k>>>0>e>>>0?e:k,f,h)|0;if(e)break;e=c[m>>2]|0}k=e-l|0;if((k|0)>=(b|0)){c[d>>2]=(c[a+36>>2]|0)+l;e=a;b=fw(c[e>>2]|0,c[e+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;e=a;c[e>>2]=b;c[e+4>>2]=C;e=0;break}e=a+16|0;f=c[e>>2]|0;if((f|0)<(b|0)){f=f<<1;f=(f|0)<128?128:f;while(1)if((f|0)<(b|0))f=f<<1;else{h=f;break}g=a+28|0;f=ng(c[g>>2]|0,h,((h|0)<0)<<31>>31)|0;if(!f){e=7;break}c[e>>2]=h;c[g>>2]=f}else f=c[a+28>>2]|0;h=a+28|0;gw(f|0,(c[a+36>>2]|0)+l|0,k|0)|0;l=a;l=fw(c[l>>2]|0,c[l+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;e=a;c[e>>2]=l;c[e+4>>2]=C;e=b-k|0;if((e|0)>0){g=e;do{f=c[m>>2]|0;f=(g|0)>(f|0)?f:g;e=Gq(a,f,n)|0;if(e)break a;gw((c[h>>2]|0)+(b-g)|0,c[n>>2]|0,f|0)|0;g=g-f|0}while((g|0)>0)}c[d>>2]=c[h>>2];e=0}else{c[d>>2]=e+f;b=fw(f|0,h|0,b|0,((b|0)<0)<<31>>31|0)|0;e=a;c[e>>2]=b;c[e+4>>2]=C;e=0}while(0);i=o;return e|0}function Hq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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=i;i=i+64|0;if((i|0)>=(j|0))ba();w=z+44|0;y=z;x=z+40|0;u=a+8|0;t=c[u>>2]|0;u=c[u+4>>2]|0;v=a+4|0;p=c[v>>2]|0;Lp(c[a+48>>2]|0,y,c[(c[(c[a>>2]|0)+8>>2]|0)+12>>2]|0,t,u);o=p+8|0;p=p+12|0;q=y+24|0;r=y+16|0;s=a+16|0;while(1){f=c[(c[o>>2]|0)+4>>2]|0;g=c[p>>2]|0;h=c[g+(f*56|0)+20>>2]|0;if(!(c[g+(f*56|0)+24>>2]|0)){d=1;b=0;break}l=q;k=c[l>>2]|0;l=c[l+4>>2]|0;m=c[r>>2]|0;n=((h|0)<0)<<31>>31;b=h;e=n;d=0;do{d=d+1|0;b=iw(b|0,e|0,7)|0;e=C}while(((b|0)!=0|(e|0)!=0)&(d|0)<9);k=fw(k|0,l|0,h|0,n|0)|0;k=fw(k|0,C|0,m|0,((m|0)<0)<<31>>31|0)|0;d=fw(k|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;k=C;b=c[s>>2]|0;b=fw(b|0,((b|0)<0)<<31>>31|0,t|0,u|0)|0;e=C;if((k|0)>(e|0)|(k|0)==(e|0)&d>>>0>b>>>0){d=1;b=0;break}Mp(y,w,lm(w,h,n)|0);Mp(y,c[g+(f*56|0)+32>>2]|0,h);b=Sm(c[v>>2]|0,x)|0;if(b){d=0;break}}y=Np(y,a+56|0)|0;i=z;return (d?y:b)|0}function Iq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();f=d;c[f>>2]=e;e=Sk(a,13592,f)|0;ig(a,b);i=d;return e|0}function Jq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;h=a[d>>0]|0;if(h<<24>>24!=0&(e|0)>0){l=0;do{if((h+-48&255)<10){k=0;do{k=(k*10|0)+-48+(h<<24>>24)|0;d=d+1|0;h=a[d>>0]|0}while((h+-48&255)<10);h=0}else{k=0;h=0}b[f+(l<<1)>>1]=bs(k,h)|0;d=(a[d>>0]|0)==32?d+1|0:d;l=l+1|0;h=a[d>>0]|0}while(h<<24>>24!=0&(l|0)<(e|0))}l=g+51|0;a[l>>0]=a[l>>0]&-69;a:do if(a[d>>0]|0){f=g+44|0;b:while(1){do if(!(Ch(13448,d,10352,0)|0)){if(Ch(13464,d,10352,0)|0){c[m>>2]=0;zn(d+3|0,m)|0;h=c[m>>2]|0;b[f>>1]=bs(h,((h|0)<0)<<31>>31)|0;break}if(Ch(13480,d,10352,0)|0)a[l>>0]=a[l>>0]|64}else a[l>>0]=a[l>>0]|4;while(0);while(1){h=a[d>>0]|0;if(h<<24>>24==32|h<<24>>24==0)break;d=d+1|0}while(1){k=d+1|0;if(!(h<<24>>24))break a;else if(h<<24>>24!=32)continue b;h=a[k>>0]|0;d=k}}}while(0);i=n;return}function Kq(d){d=d|0;var e=0,f=0;f=d+8|0;e=c[f>>2]|0;if(!e){e=rh(d)|0;c[f>>2]=e;if(e)sh(e,155,0,0,0)|0;if((c[d+408>>2]|0)==0?(b[(c[d>>2]|0)+60>>1]&8)==0:0)a[d+23>>0]=1}return e|0}function Lq(b,d){b=b|0;d=d|0;var e=0;e=(c[b+32>>2]|0)+-1|0;if((e|0)>(c[(c[b+24>>2]|0)+88>>2]|0)?(a[(c[b+4>>2]|0)+(e*20|0)>>0]|0)==d<<24>>24:0){vh(b,e);e=1}else e=0;return e|0}function Mq(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;j=Kq(d)|0;i=g+32|0;cs(d,f,c[i>>2]|0,(h|0)==55&1,c[g>>2]|0);if(!(a[g+44>>0]&32)){g=b[g+38>>1]|0;th(j,sh(j,h,e,c[i>>2]|0,f)|0,g,-14)}else{i=c[g+8>>2]|0;a:do if(!i)i=0;else while(1){if((a[i+51>>0]&3)==2)break a;i=c[i+20>>2]|0;if(!i){i=0;break}}while(0);sh(j,h,e,c[i+40>>2]|0,f)|0;g=c[d+8>>2]|0;th(g,-1,ds(d,i)|0,-6)}return}function Nq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((d|0)!=0?(a[d>>0]|0)==-97:0)sh(c[b+8>>2]|0,33,c[d+28>>2]|0,e,0)|0;else h=4;if(((h|0)==4?(g=es(b,d,e)|0,(g|0)!=(e|0)):0)?(f=c[b+8>>2]|0,(f|0)!=0):0)sh(f,34,g,e,0)|0;return}function Oq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;h=c[b>>2]|0;do if(((a[h+145>>0]|0)==0?(a[b+451>>0]|0)==0:0)?(k=c[h+284>>2]|0,(k|0)!=0):0){h=gc[k&7](c[h+288>>2]|0,d,e,f,g,c[b+492>>2]|0)|0;if((h|0)==0|(h|0)==2)break;else if((h|0)==1){ph(b,25216,l);c[b+12>>2]=23;h=1;break}else{ph(b,25232,l);c[b+12>>2]=1;h=1;break}}else h=0;while(0);i=m;return h|0}function Pq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;d=Sq(c[a>>2]|0,d)|0;do if(d){e=Kq(a)|0;if((e|0)!=0?(Oq(a,32,c[37088+(b<<2)>>2]|0,d,0)|0)==0:0){th(e,sh(e,2,b,0,0)|0,d,-1);break}ig(c[a>>2]|0,d)}while(0);return}function Qq(e,f,g,h,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();r=v;p=v+4|0;u=c[e>>2]|0;f=ar(e,f,g,p)|0;a:do if((f|0)>=0){q=(h|0)!=0;if(q?(c[g+4>>2]|0)!=0&(f|0)!=1:0){ph(e,36976,r);break}t=q?1:f;g=c[p>>2]|0;q=g;f=c[q+4>>2]|0;p=e+496|0;c[p>>2]=c[q>>2];c[p+4>>2]=f;p=Sq(u,g)|0;if(p){b:do if((Hr(e,p)|0)==0?(o=(a[u+144>>0]|0)==1?1:h,s=u+16|0,n=c[(c[s>>2]|0)+(t<<4)>>2]|0,(Oq(e,18,(o|0)==1?13184:13208,0,n)|0)==0):0){h=(o|0)!=0;if(!k)f=h?4:2;else f=h?6:8;q=(l|0)!=0;if(!q?(Oq(e,f,p,0,n)|0)!=0:0)break;do if(!(a[e+451>>0]|0)){h=c[(c[s>>2]|0)+(t<<4)>>2]|0;if(Cn(e)|0)break b;if(!(Wh(u,p,h)|0)){if(!(Zp(u,p,h)|0))break;c[r>>2]=p;ph(e,37048,r);break b}if(!m){c[r>>2]=g;ph(e,37024,r);break b}else{wr(e,t);break b}}while(0);o=ih(u,76,0)|0;if(!o){a[u+65>>0]=1;c[e+12>>2]=7;s=e+64|0;c[s>>2]=(c[s>>2]|0)+1;break}n=o+0|0;h=n+76|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(h|0));c[o>>2]=p;b[o+36>>1]=-1;n=c[(c[s>>2]|0)+(t<<4)+12>>2]|0;c[o+68>>2]=n;b[o+40>>1]=1;b[o+28>>1]=200;c[e+484>>2]=o;if((a[e+18>>0]|0)==0?(Wv(p,26576)|0)==0:0)c[n+72>>2]=o;if(a[u+145>>0]|0)break a;g=Kq(e)|0;if(!g)break a;s=c[e+408>>2]|0;wr(e,t);n=1<>2]=c[s>>2]|n;if(q)sh(g,146,0,0,0)|0;o=e+72|0;f=c[o>>2]|0;p=f+1|0;c[e+384>>2]=p;q=f+2|0;c[e+388>>2]=q;f=f+3|0;c[o>>2]=f;sh(g,51,t,f,2)|0;o=g+96|0;c[o>>2]=c[o>>2]|n;o=sh(g,45,f,0,0)|0;sh(g,25,(c[u+24>>2]&32768|0)!=0?1:4,f,0)|0;sh(g,52,t,2,f)|0;sh(g,25,d[u+62>>0]|0,f,0)|0;sh(g,52,t,5,f)|0;h=g+32|0;n=c[h>>2]|0;if(n>>>0>o>>>0)c[(c[g+4>>2]|0)+(o*20|0)+8>>2]=n;c[(c[g+24>>2]|0)+88>>2]=n+-1;if(!(l|k))c[e+416>>2]=sh(g,121,t,q,0)|0;else sh(g,25,0,q,0)|0;fs(e,t);sh(g,74,0,p,0)|0;sh(g,28,0,f,0)|0;sh(g,75,0,f,p)|0;n=c[g+4>>2]|0;if(n)a[n+(((c[h>>2]|0)+-1|0)*20|0)+3>>0]=8;sh(g,61,0,0,0)|0;break a}while(0);ig(u,p)}}while(0);i=v;return}function Rq(f,g,h,k,l){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var 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,O=0;O=i;i=i+176|0;if((i|0)>=(j|0))ba();J=O+80|0;G=O+168|0;D=O;E=O+136|0;F=O+112|0;K=c[f>>2]|0;a:do if((!((h|0)==0&(l|0)==0)?(L=K+65|0,(a[L>>0]|0)==0):0)?(M=f+484|0,N=c[M>>2]|0,(N|0)!=0):0){I=K+145|0;if(a[I>>0]|0)c[N+32>>2]=c[K+140>>2];b:do if(k&32){p=N+44|0;o=d[p>>0]|0;if(o&8){ph(f,36584,J);break a}if(!(o&4)){c[J>>2]=c[N>>2];ph(f,36640,J);break}a[p>>0]=o|32;q=c[f+8>>2]|0;p=c[f+416>>2]|0;if(p){if((p|0)<0)p=(c[q+32>>2]|0)+-1|0;if(!(a[(c[q>>2]|0)+65>>0]|0))p=(c[q+4>>2]|0)+(p*20|0)|0;else p=29120;a[p>>0]=120}p=c[f+420>>2]|0;if(p){if((p|0)<0)p=(c[q+32>>2]|0)+-1|0;if(!(a[(c[q>>2]|0)+65>>0]|0))o=(c[q+4>>2]|0)+(p*20|0)|0;else o=29120;a[o>>0]=16}o=N+36|0;if((b[o>>1]|0)>-1){p=hr(f,0,0)|0;if(!p)break;z=gh(c[f>>2]|0,c[(c[N+4>>2]|0)+((b[o>>1]|0)*24|0)>>2]|0)|0;A=c[p+4>>2]|0;c[A+4>>2]=z;a[A+12>>0]=a[f+448>>0]|0;p=Xq(f,0,0,0,p,d[N+45>>0]|0,0,0,0,0)|0;if(!p)break;u=p+51|0;a[u>>0]=a[u>>0]&-4|2;b[o>>1]=-1;u=b[p+46>>1]|0}else{p=c[N+8>>2]|0;c:do if(!p)p=0;else while(1){if((a[p+51>>0]&3)==2)break c;p=c[p+20>>2]|0;if(!p){p=0;break}}while(0);v=p+46|0;q=b[v>>1]|0;if((q&65535)>1){t=c[p+4>>2]|0;s=p+48|0;u=1;o=1;do{m=b[t+(u<<1)>>1]|0;r=o;n=t;while(1){if((r|0)<=0){C=36;break}if((b[n>>1]|0)==m<<16>>16){C=35;break}else{r=r+-1|0;n=n+2|0}}if((C|0)==35){C=0;b[s>>1]=(b[s>>1]|0)+-1<<16>>16}else if((C|0)==36){C=0;b[t+(o<<1)>>1]=m;q=b[v>>1]|0;o=o+1|0}u=u+1|0}while((u|0)<(q&65535|0))}else o=1;u=o&65535;b[v>>1]=u}r=p+51|0;q=a[r>>0]|32;a[r>>0]=q;A=u&65535;if(!(a[K+147>>0]|0)){if(u<<16>>16){q=c[p+4>>2]|0;o=c[N+4>>2]|0;n=0;do{a[o+((b[q+(n<<1)>>1]|0)*24|0)+20>>0]=1;n=n+1|0}while((n|0)<(A|0));q=a[r>>0]|0}a[r>>0]=q|8}c[p+40>>2]=c[N+32>>2];r=c[N+8>>2]|0;if(r){x=u<<16>>16==0;y=p+4|0;z=p+32|0;do{d:do if((a[r+51>>0]&3)!=2){do if(x)q=b[r+46>>1]|0;else{s=c[r+4>>2]|0;q=b[r+46>>1]|0;n=q&65535;m=c[y>>2]|0;w=0;o=0;do{t=b[m+(w<<1)>>1]|0;v=n;u=s;while(1){if((v|0)<=0){u=1;break}if((b[u>>1]|0)==t<<16>>16){u=0;break}else{v=v+-1|0;u=u+2|0}}o=u+o|0;w=w+1|0}while((w|0)<(A|0));n=r+46|0;if(!o)break;if(gs(K,r,(q&65535)+o|0)|0)break b;if(x)break d;t=b[n>>1]|0;w=r+4|0;m=r+32|0;v=t;u=0;t=t&65535;while(1){q=c[w>>2]|0;o=b[(c[y>>2]|0)+(u<<1)>>1]|0;v=v&65535;s=q;while(1){if((v|0)<=0){C=63;break}if((b[s>>1]|0)==o<<16>>16)break;else{v=v+-1|0;s=s+2|0}}if((C|0)==63){C=0;b[q+(t<<1)>>1]=o;c[(c[m>>2]|0)+(t<<2)>>2]=c[(c[z>>2]|0)+(u<<2)>>2];t=t+1|0}u=u+1|0;if((u|0)>=(A|0))break d;v=b[n>>1]|0}}while(0);b[r+48>>1]=q}while(0);r=c[r+20>>2]|0}while((r|0)!=0)}v=N+38|0;q=b[v>>1]|0;o=q<<16>>16;if((A|0)>=(o|0)){b[p+48>>1]=q;break}if((gs(K,p,o)|0)==0?(B=b[v>>1]|0,B<<16>>16>0):0){s=p+4|0;u=p+32|0;q=B;t=0;p=A;do{n=c[s>>2]|0;r=p;o=n;while(1){if((r|0)<=0){C=74;break}if((b[o>>1]|0)==(t|0))break;else{r=r+-1|0;o=o+2|0}}if((C|0)==74){C=0;b[n+(p<<1)>>1]=t;c[(c[u>>2]|0)+(p<<2)>>2]=11152;q=b[v>>1]|0;p=p+1|0}t=t+1|0}while((t|0)<(q<<16>>16|0))}}while(0);C=N+68|0;p=c[C>>2]|0;e:do if(p){o=c[K+20>>2]|0;if((o|0)>0){n=c[K+16>>2]|0;q=0;while(1){m=q+1|0;if((c[n+(q<<4)+12>>2]|0)==(p|0))break e;if((m|0)<(o|0))q=m;else{q=m;break}}}else q=0}else q=-1e6;while(0);n=c[N+24>>2]|0;f:do if(n){c[E+0>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;c[E+16>>2]=0;c[E+20>>2]=0;c[E+24>>2]=0;c[E+28>>2]=0;p=D+0|0;o=p+80|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(o|0));c[D>>2]=1;c[D+16>>2]=c[N>>2];c[D+24>>2]=N;c[D+48>>2]=-1;c[E>>2]=f;c[E+4>>2]=D;b[E+28>>1]=4;p=n+4|0;if((c[n>>2]|0)>0){o=0;do{if(hs(E,c[(c[p>>2]|0)+(o*20|0)>>2]|0)|0)break f;o=o+1|0}while((o|0)<(c[n>>2]|0))}}while(0);A=N+38|0;m=b[A>>1]|0;if(m<<16>>16>0){p=m<<16>>16;o=c[N+4>>2]|0;n=0;while(1){n=(d[o+22>>0]|0)+n|0;p=p+-1|0;if((p|0)<=0)break;else o=o+24|0}}else n=0;b[N+42>>1]=bs(((e[N+36>>1]|0)>>>15&65535)+n<<2,0)|0;n=c[N+8>>2]|0;if(n)do{is(n);n=c[n+20>>2]|0}while((n|0)!=0);if(!(a[I>>0]|0)){B=Kq(f)|0;if(!B)break;sh(B,61,0,0,0)|0;y=(c[N+12>>2]|0)==0;o=y?36672:36680;y=y?31232:35480;do if(!l){n=k<<24>>24==0?h:f+504|0;l=c[n>>2]|0;p=c[f+496>>2]|0;m=l-p|0;if((a[l>>0]|0)!=59)m=(c[n+4>>2]|0)+m|0;c[J>>2]=o;c[J+4>>2]=m;c[J+8>>2]=p;p=f+388|0;m=N;o=qh(K,36688,J)|0}else{p=f+388|0;sh(B,55,1,c[p>>2]|0,q)|0;o=c[B+4>>2]|0;if(o)a[o+(((c[B+32>>2]|0)+-1|0)*20|0)+3>>0]=4;c[f+68>>2]=2;a[F>>0]=14;c[F+4>>2]=1;a[F+1>>0]=0;c[F+8>>2]=0;c[F+12>>2]=0;er(f,l,F)|0;sh(B,61,1,0,0)|0;if(!(c[f+64>>2]|0)){m=js(f,l)|0;if(!m)break a;F=m+38|0;b[A>>1]=b[F>>1]|0;l=m+4|0;c[N+4>>2]=c[l>>2];b[F>>1]=0;c[l>>2]=0;gg(K,m)}z=N+4|0;w=b[A>>1]|0;if(w<<16>>16>0){s=w<<16>>16;t=0;o=0;u=c[z>>2]|0;while(1){m=c[u>>2]|0;n=0;while(1){r=a[m>>0]|0;if(!(r<<24>>24))break;else if(r<<24>>24==34)n=n+1|0;m=m+1|0;n=n+1|0}o=o+7+n|0;t=t+1|0;if((t|0)==(s|0))break;else u=u+24|0}r=o+2|0}else r=2;m=c[N>>2]|0;o=0;while(1){n=a[m>>0]|0;if(n<<24>>24==34)o=o+1|0;else if(!(n<<24>>24))break;m=m+1|0;o=o+1|0}u=o+r|0;x=(u|0)<50;r=x?10360:36880;v=x?20240:36888;x=x?33952:36896;u=((w<<16>>16)*6|0)+35+u|0;o=mg(u,((u|0)<0)<<31>>31)|0;if(!o){a[L>>0]=1;m=N;o=0;break}Yc(u,o,36904,J)|0;n=o;while(1)if(!(a[n>>0]|0))break;else n=n+1|0;c[G>>2]=n-o&1073741823;ks(o,G,c[N>>2]|0);m=c[G>>2]|0;s=m+1|0;c[G>>2]=s;a[o+m>>0]=40;m=u-s|0;n=o+s|0;if((b[A>>1]|0)>0){w=0;t=c[z>>2]|0;while(1){Yc(m,n,r,J)|0;n=o+s|0;if(!n)n=0;else{r=n;while(1)if(!(a[r>>0]|0))break;else r=r+1|0;n=r-n&1073741823}c[G>>2]=n+s;ks(o,G,c[t>>2]|0);n=c[36920+((a[t+21>>0]|0)+-65<<2)>>2]|0;r=n;while(1)if(!(a[r>>0]|0))break;else r=r+1|0;s=r-n&1073741823;r=c[G>>2]|0;gw(o+r|0,n|0,s|0)|0;s=r+s|0;c[G>>2]=s;r=w+1|0;m=u-s|0;n=o+s|0;if((r|0)<(b[A>>1]|0)){w=r;t=t+24|0;r=v}else break}}c[J>>2]=x;Yc(m,n,10344,J)|0;m=N}while(0);n=K+16|0;k=c[m>>2]|0;F=c[p>>2]|0;l=c[f+384>>2]|0;c[J>>2]=c[(c[n>>2]|0)+(q<<4)>>2];c[J+4>>2]=(q|0)==1?13184:13208;c[J+8>>2]=y;c[J+12>>2]=k;c[J+16>>2]=k;c[J+20>>2]=F;c[J+24>>2]=o;c[J+28>>2]=l;xr(f,36704,J);ig(K,o);zr(f,q);if((a[N+44>>0]&8)!=0?(H=c[n>>2]|0,(c[(c[H+(q<<4)+12>>2]|0)+72>>2]|0)==0):0){c[J>>2]=c[H+(q<<4)>>2];xr(f,36792,J)}c[J>>2]=c[m>>2];Er(B,q,qh(K,36840,J)|0);if(!(a[I>>0]|0))break}else m=N;if(Ek((c[C>>2]|0)+8|0,c[m>>2]|0,N)|0){a[L>>0]=1;break}c[M>>2]=0;l=K+24|0;c[l>>2]=c[l>>2]|2;if(!(c[N+12>>2]|0)){l=c[f+496>>2]|0;c[N+48>>2]=(Jn(l,(c[((c[g>>2]|0)==0?h:g)>>2]|0)-l|0)|0)+13}}while(0);i=O;return}function Sq(b,d){b=b|0;d=d|0;var e=0,f=0;if(!d)e=0;else{f=c[d>>2]|0;d=c[d+4>>2]|0;if((f|0)!=0?(e=fw(d|0,0,1,0)|0,e=ih(b,e,C)|0,(e|0)!=0):0){gw(e|0,f|0,d|0)|0;a[e+d>>0]=0}else e=0;ho(e)}return e|0}function Tq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;a:do if(b){g=a[b>>0]|0;b:do if(!(g<<24>>24)){f=67;g=0}else{k=g;f=67;h=0;g=0;do{h=d[9328+(k&255)>>0]|0|h<<8;b=b+1|0;if((h|0)==1919246700)if(f<<24>>24==67){f=69;h=1919246700;l=5}else l=14;else if((h|0)==1952807028){f=66;l=5}else if((h|0)==1668050786){f=66;l=5}else if((h|0)==1718382433)if(f<<24>>24==67){f=69;h=1718382433;l=5}else l=13;else if((h|0)==1667785074){f=66;h=1667785074;g=b;l=5}else if((h|0)==1651273570)if(f<<24>>24==69|f<<24>>24==67){o=a[b>>0]|0;k=o;f=65;h=1651273570;g=o<<24>>24==40?b:g}else l=14;else if((h|0)==1685026146)if(f<<24>>24==67){f=69;h=1685026146;l=5}else l=13;else if((h&16777215|0)==6909556){f=68;break b}else l=5;if((l|0)==13)l=5;else if((l|0)==14)l=5;if((l|0)==5){l=0;k=a[b>>0]|0}}while(k<<24>>24!=0)}while(0);if((e|0)!=0?(a[e>>0]=1,f<<24>>24<67):0){if(!g){a[e>>0]=5;break}b=a[g>>0]|0;if(b<<24>>24){while(1){if(((b&255)+-48|0)>>>0<10)break;g=g+1|0;b=a[g>>0]|0;if(!(b<<24>>24))break a}c[m>>2]=0;zn(g,m)|0;g=((c[m>>2]|0)/4|0)+1|0;g=(g|0)>255?255:g;c[m>>2]=g;a[e>>0]=g}}}else f=67;while(0);i=n;return f|0}function Uq(e,f){e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+32|0;if((i|0)>=(j|0))ba();m=o;n=c[e>>2]|0;k=c[e+484>>2]|0;do if(k){h=(b[k+38>>1]|0)+-1|0;l=c[k+4>>2]|0;p=c[f>>2]|0;q=(d[n+145>>0]|0)+4|0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;k=m+20|0;a[k>>0]=q;c[m>>2]=78;c[m+4>>2]=79;c[m+24>>2]=0;ns(m,p)|0;if(!(a[k>>0]|0)){c[m>>2]=c[l+(h*24|0)>>2];ph(e,36480,m);break}k=l+(h*24|0)+4|0;Ck(n,c[k>>2]|0);c[k>>2]=Ir(n,c[f>>2]|0,1,0)|0;l=l+(h*24|0)+8|0;ig(n,c[l>>2]|0);h=c[f+4>>2]|0;k=(c[f+8>>2]|0)-h|0;if((h|0)!=0?(g=fw(k|0,((k|0)<0)<<31>>31|0,1,0)|0,g=ih(n,g,C)|0,(g|0)!=0):0){gw(g|0,h|0,k|0)|0;a[g+k>>0]=0}else g=0;c[l>>2]=g}while(0);Ck(n,c[f>>2]|0);i=o;return}function Vq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;if((b|0)==72&(d|0)!=0&(e|0)!=0?(c[a+64>>2]|0)==0:0)b=os(c[a>>2]|0,d,e)|0;else{b=jr(c[a>>2]|0,b,f,1)|0;ps(c[a>>2]|0,b,d,e)}if((b|0)!=0?(g=c[(c[a>>2]|0)+100>>2]|0,(g|0)<(c[b+24>>2]|0)):0){c[h>>2]=g;ph(a,27152,h)}i=k;return b|0}function Wq(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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;A=i;i=i+16|0;if((i|0)>=(j|0))ba();z=A;x=c[e+484>>2]|0;do if((x|0)!=0?(a[e+451>>0]|0)==0:0){y=x+44|0;m=d[y>>0]|0;if(m&4){c[z>>2]=c[x>>2];ph(e,36376,z);break}v=m|4;a[y>>0]=v;w=(f|0)==0;if(w){m=(b[x+38>>1]|0)+-1|0;t=c[x+4>>2]|0;l=t+(m*24|0)+23|0;a[l>>0]=d[l>>0]|1;l=m;n=1;m=c[t+(m*24|0)+12>>2]|0}else{u=c[f>>2]|0;if((u|0)>0){r=f+4|0;s=x+4|0;q=b[x+38>>1]|0;t=0;m=0;do{a:do if(q<<16>>16>0){o=c[(c[r>>2]|0)+(t*20|0)+4>>2]|0;p=c[s>>2]|0;n=0;while(1){l=n+1|0;if(!($c(o,c[p+(n*24|0)>>2]|0)|0))break;if((l|0)<(q<<16>>16|0))n=l;else break a}l=p+(n*24|0)+23|0;a[l>>0]=d[l>>0]|1;l=n;m=c[p+(n*24|0)+12>>2]|0}else l=0;while(0);t=t+1|0}while((t|0)!=(u|0))}else{l=-1;m=0}n=(u|0)==1}if(n&(m|0)!=0?($c(m,11144)|0|k|0)==0:0){b[x+36>>1]=l;a[x+45>>0]=g;a[y>>0]=v|h<<3;if(w){f=0;break}a[e+448>>0]=a[(c[f+4>>2]|0)+12>>0]|0;break}if(h){ph(e,36424,z);break}m=c[e+8>>2]|0;l=(m|0)!=0;if(l)c[e+420>>2]=sh(m,156,0,0,0)|0;f=Xq(e,0,0,0,f,g,0,0,k,0)|0;if((f|0)!=0?(t=f+51|0,a[t>>0]=a[t>>0]&-4|2,l):0){f=c[e+420>>2]|0;l=c[m+32>>2]|0;if(l>>>0>f>>>0)c[(c[m+4>>2]|0)+(f*20|0)+8>>2]=l;c[(c[m+24>>2]|0)+88>>2]=l+-1;f=0}else f=0}while(0);Jk(c[e>>2]|0,f);i=A;return}function Xq(f,g,h,k,l,m,n,o,p,q){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var 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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=i;i=i+144|0;if((i|0)>=(j|0))ba();S=V;B=V+112|0;u=V+88|0;Q=V+84|0;K=V+80|0;U=c[f>>2]|0;c[Q>>2]=0;c[K>>2]=0;P=U+65|0;a:do if(((a[P>>0]|0)==0?(a[f+451>>0]|0)==0:0)?(Cn(f)|0)==0:0){R=(k|0)!=0;b:do if(R){g=ar(f,g,h,Q)|0;if((g|0)<0){r=0;h=0;break a}if((a[U+145>>0]|0)==0?(r=Fr(f,k)|0,(c[h+4>>2]|0)==0&(r|0)!=0):0)g=(c[r+68>>2]|0)==(c[(c[U+16>>2]|0)+28>>2]|0)?1:g;h=c[Q>>2]|0;r=c[f>>2]|0;c[u>>2]=f;r=c[r+16>>2]|0;c[u+12>>2]=c[r+(g<<4)>>2];c[u+4>>2]=c[r+(g<<4)+12>>2];c[u+16>>2]=20632;c[u+20>>2]=h;r=(g|0)==1;c[u+8>>2]=r&1;Gr(u,k)|0;t=Qr(f,0,k+8|0)|0;if(!t){r=0;h=0;break a}if(r?(c[(c[U+16>>2]|0)+28>>2]|0)!=(c[t+68>>2]|0):0){c[S>>2]=c[t>>2];ph(f,35920,S);r=0;h=0;break a}if((a[t+44>>0]&32)!=0?(s=c[t+8>>2]|0,(s|0)!=0):0){r=s;while(1){if((a[r+51>>0]&3)==2){s=g;J=r;u=t;break b}r=c[r+20>>2]|0;if(!r){s=g;J=0;u=t;break}}}else{s=g;J=0;u=t}}else{u=c[f+484>>2]|0;if(!u){r=0;h=0;break a}g=c[u+68>>2]|0;if(g){r=c[U+20>>2]|0;if((r|0)>0){h=c[U+16>>2]|0;t=0;while(1){s=t+1|0;if((c[h+(t<<4)+12>>2]|0)==(g|0)){h=0;s=t;J=0;break b}if((s|0)<(r|0))t=s;else{h=0;J=0;break}}}else{h=0;s=0;J=0}}else{h=0;s=-1e6;J=0}}while(0);O=U+16|0;C=c[O>>2]|0;g=C+(s<<4)|0;x=c[u>>2]|0;if(((Bc(x,25568,7)|0)==0?(a[U+145>>0]|0)==0:0)?(Bc(x+7|0,35976,9)|0)!=0:0){c[S>>2]=x;ph(f,35992,S);r=0;h=0;break}if(c[u+12>>2]|0){ph(f,36024,S);r=0;h=0;break}N=u+44|0;if(a[N>>0]&16){ph(f,36056,S);r=0;h=0;break}D=(h|0)==0;if(!D){h=Sq(U,h)|0;if(!h){r=0;h=0;break}if(Hr(f,h)|0){r=0;break}if((a[U+145>>0]|0)==0?(Wh(U,h,0)|0)!=0:0){c[S>>2]=h;ph(f,36096,S);r=0;break}if(Zp(U,h,c[g>>2]|0)|0)if(!q){c[S>>2]=h;ph(f,36136,S);r=0;break}else{wr(f,s);r=0;break}else t=h}else{r=c[u+8>>2]|0;if(!r)t=1;else{t=1;do{t=t+1|0;r=c[r+20>>2]|0}while((r|0)!=0)}c[S>>2]=x;c[S+4>>2]=t;t=qh(U,36160,S)|0;if(!t){r=0;h=0;break}}g=c[g>>2]|0;r=(s|0)==1;L=r?13184:13208;if((Oq(f,18,L,0,g)|0)==0?(Oq(f,r?3:1,t,c[u>>2]|0,g)|0)==0:0){if(!l){l=hr(f,0,0)|0;if(!l){l=0;r=0;h=t;break}F=gh(c[f>>2]|0,c[(c[u+4>>2]|0)+(((b[u+38>>1]|0)+-1|0)*24|0)>>2]|0)|0;G=c[l+4>>2]|0;c[G+4>>2]=F;a[G+12>>0]=p}A=c[l>>2]|0;if((A|0)>0){x=c[l+4>>2]|0;v=0;g=0;do{r=c[x+(v*20|0)>>2]|0;if(r){h=c[r+8>>2]|0;if(!h)r=1;else{r=h;while(1)if(!(a[r>>0]|0))break;else r=r+1|0;r=(r-h&1073741823)+1|0}g=r+g|0}v=v+1|0}while((v|0)<(A|0));h=g}else h=0;if(!t)r=0;else{g=t;while(1)if(!(a[g>>0]|0))break;else g=g+1|0;r=g-t&1073741823}F=(J|0)!=0;if(F)g=e[J+46>>1]|0;else g=1;M=qs(U,A+g&65535,h+1+r|0,K)|0;c:do if(!(a[P>>0]|0)){E=c[K>>2]|0;c[M>>2]=E;I=r+1|0;z=E+I|0;c[K>>2]=z;gw(E|0,t|0,I|0)|0;c[M+12>>2]=u;I=M+50|0;a[I>>0]=m;E=M+51|0;a[E>>0]=a[E>>0]&-12|((m|0)!=0&1)<<3&255|D&1;H=M+24|0;c[H>>2]=c[(c[O>>2]|0)+(s<<4)+12>>2];g=c[l>>2]|0;G=M+46|0;b[G>>1]=g;if(o){c[B+0>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=0;c[B+16>>2]=0;c[B+20>>2]=0;c[B+24>>2]=0;c[B+28>>2]=0;x=S+0|0;h=x+80|0;do{c[x>>2]=0;x=x+4|0}while((x|0)<(h|0));c[S>>2]=1;c[S+16>>2]=c[u>>2];c[S+24>>2]=u;c[S+48>>2]=-1;c[B>>2]=f;c[B+4>>2]=S;b[B+28>>1]=16;hs(B,o)|0;c[M+36>>2]=o;g=c[l>>2]|0}w=(d[(c[C+(s<<4)+12>>2]|0)+76>>0]|0)>3;d:do if((g|0)>0){D=u+4|0;C=u+38|0;B=M+4|0;o=U+145|0;g=M+32|0;v=M+28|0;h=0;p=c[l+4>>2]|0;while(1){r=c[p+4>>2]|0;x=b[C>>1]|0;e:do if(x<<16>>16>0){A=0;y=c[D>>2]|0;while(1){if(!($c(r,c[y>>2]|0)|0)){q=A;break e}A=A+1|0;if((A|0)<(x<<16>>16|0))y=y+24|0;else{q=A;break}}}else q=0;while(0);if((q|0)>=(x<<16>>16|0))break;b[(c[B>>2]|0)+(h<<1)>>1]=q;A=c[p>>2]|0;if(!A){A=c[(c[D>>2]|0)+(q*24|0)+16>>2]|0;A=(A|0)!=0?A:11152}else{y=c[A+8>>2]|0;if(!y)A=1;else{A=y;while(1)if(!(a[A>>0]|0))break;else A=A+1|0;A=(A-y&1073741823)+1|0}gw(z|0,y|0,A|0)|0;y=c[K>>2]|0;z=y+A|0;c[K>>2]=z;A=y}if((a[o>>0]|0)==0?(_q(f,A)|0)==0:0){h=0;r=0;T=134;break c}c[(c[g>>2]|0)+(h<<2)>>2]=A;a[(c[v>>2]|0)+h>>0]=w?a[p+12>>0]|0:0;if(!(a[(c[D>>2]|0)+(q*24|0)+20>>0]|0))a[E>>0]=a[E>>0]&-9;h=h+1|0;if((h|0)<(c[l>>2]|0))p=p+20|0;else break d}c[S>>2]=c[u>>2];c[S+4>>2]=r;ph(f,36184,S);a[f+17>>0]=1;h=0;r=0;T=134;break c}else h=0;while(0);do if(F){w=J+46|0;x=b[w>>1]|0;if(!(x<<16>>16))break;B=J+4|0;C=M+4|0;D=M+48|0;p=J+32|0;q=M+32|0;g=J+28|0;v=M+28|0;o=0;do{y=b[(c[B>>2]|0)+(o<<1)>>1]|0;r=c[C>>2]|0;A=e[G>>1]|0;z=r;while(1){if((A|0)<=0){T=92;break}if((b[z>>1]|0)==y<<16>>16){T=91;break}else{A=A+-1|0;z=z+2|0}}if((T|0)==91){T=0;b[D>>1]=(b[D>>1]|0)+-1<<16>>16}else if((T|0)==92){T=0;b[r+(h<<1)>>1]=y;c[(c[q>>2]|0)+(h<<2)>>2]=c[(c[p>>2]|0)+(o<<2)>>2];a[(c[v>>2]|0)+h>>0]=a[(c[g>>2]|0)+o>>0]|0;x=b[w>>1]|0;h=h+1|0}o=o+1|0}while((o|0)<(x&65535|0))}else{b[(c[M+4>>2]|0)+(h<<1)>>1]=-1;c[(c[M+32>>2]|0)+(h<<2)>>2]=11152}while(0);_p(M);o=f+484|0;g=c[o>>2]|0;if(!g){is(M);g=c[o>>2]|0}f:do if((u|0)==(g|0)){r=c[u+8>>2]|0;if(!r)break;y=b[G>>1]|0;z=M+4|0;A=M+32|0;while(1){if((b[r+46>>1]|0)==y<<16>>16){g:do if(!(y<<16>>16)){o=0;g=0}else{v=c[r+4>>2]|0;w=c[z>>2]|0;x=r+32|0;g=0;while(1){if((b[v+(g<<1)>>1]|0)!=(b[w+(g<<1)>>1]|0)){o=y;break g}o=c[(c[x>>2]|0)+(g<<2)>>2]|0;h=c[(c[A>>2]|0)+(g<<2)>>2]|0;if((o|0)!=(h|0)?($c(o,h)|0)!=0:0){o=y;break g}g=g+1|0;if((g|0)>=(y&65535|0)){o=y;break}}}while(0);if((g|0)==(o&65535|0))break}r=c[r+20>>2]|0;if(!r)break f}g=r+50|0;h=a[g>>0]|0;o=a[I>>0]|0;if(h<<24>>24==o<<24>>24){h=0;break c}if(!(h<<24>>24==10|o<<24>>24==10)){c[S>>2]=0;ph(f,36216,S);h=a[g>>0]|0}if(h<<24>>24!=10){h=0;T=134;break c}a[g>>0]=a[I>>0]|0;h=0;break c}while(0);h=U+145|0;do if(!(a[h>>0]|0)){if(c[f+64>>2]|0){T=126;break}if(!((a[N>>0]&32)==0|R)){T=126;break}r=f+72|0;o=(c[r>>2]|0)+1|0;c[r>>2]=o;r=Kq(f)|0;if(!r){h=0;r=0;T=134;break c}G=c[f+408>>2]|0;G=(G|0)==0?f:G;wr(f,s);F=G+328|0;c[F>>2]=c[F>>2]|1<>0]=d[G>>0]|1;sh(r,120,s,o,0)|0;if(!n)g=0;else{g=c[c[Q>>2]>>2]|0;G=(c[f+504>>2]|0)-g+(c[f+508>>2]|0)|0;F=G+-1|0;G=(a[g+F>>0]|0)==59?F:G;c[S>>2]=(m|0)==0?10360:36288;c[S+4>>2]=G;c[S+8>>2]=g;g=qh(U,36264,S)|0}F=c[M>>2]|0;G=c[u>>2]|0;c[S>>2]=c[(c[O>>2]|0)+(s<<4)>>2];c[S+4>>2]=L;c[S+8>>2]=F;c[S+12>>2]=G;c[S+16>>2]=o;c[S+20>>2]=g;xr(f,36296,S);ig(U,g);if(!R)break;rs(f,M,o);zr(f,s);c[S>>2]=c[M>>2];Er(r,s,qh(U,36344,S)|0);sh(r,144,0,0,0)|0;T=126}else{if(Ek((c[H>>2]|0)+24|0,c[M>>2]|0,M)|0){a[P>>0]=1;h=0;r=0;T=134;break c}G=U+24|0;c[G>>2]=c[G>>2]|2;if(!R)break;c[M+40>>2]=c[U+140>>2];T=126}while(0);if((T|0)==126?!((a[h>>0]|0)!=0|(k|0)==0):0){h=0;r=0;T=134;break}h=c[u+8>>2]|0;do if((m|0)==5){if(!h){h=0;break}if((a[h+50>>0]|0)==5)break;do{r=h+20|0;h=c[r>>2]|0;if(!h){h=0;break}}while((a[h+50>>0]|0)!=5);c[M+20>>2]=h;c[r>>2]=M;o=0;r=M;h=t;break a}while(0);c[M+20>>2]=h;c[u+8>>2]=M;o=0;r=M;h=t;break a}else{h=o;r=0;T=134}while(0);if((T|0)==134)if(!M){o=h;h=t;break}Fk(U,M);o=h;h=t}else{r=0;h=t}}else{r=0;h=0}while(0);Ck(U,o);Jk(U,l);zo(U,k);ig(U,h);i=V;return r|0}function Yq(e,f){e=e|0;f=f|0;var g=0,h=0;g=c[e+484>>2]|0;h=c[e>>2]|0;if(((g|0)!=0?(a[e+451>>0]|0)==0:0)?(b[(c[(c[(c[h+16>>2]|0)+(d[h+144>>0]<<4)+4>>2]|0)+4>>2]|0)+22>>1]&1)==0:0){h=g+24|0;g=hr(e,c[h>>2]|0,f)|0;c[h>>2]=g;if(c[e+324>>2]|0)ir(e,g,e+320|0,1)}else Ck(h,f);return}function Zq(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;C=i;i=i+16|0;if((i|0)>=(j|0))ba();z=C;B=c[d>>2]|0;A=c[d+484>>2]|0;a:do if((A|0)!=0?(a[d+451>>0]|0)==0:0){w=(e|0)==0;do if(w){y=b[A+38>>1]|0;l=(y<<16>>16)+-1|0;if(y<<16>>16<1){k=0;break a}if(g)if((c[g>>2]|0)==1){l=1;k=13}else{c[z>>2]=c[(c[A+4>>2]|0)+(l*24|0)>>2];c[z+4>>2]=f;ph(d,35712,z);k=0;break a}else{l=1;k=12}}else{if(!g){l=c[e>>2]|0;k=12;break}l=c[g>>2]|0;if((l|0)==(c[e>>2]|0))k=13;else{ph(d,35776,z);k=0;break a}}while(0);if((k|0)==12){m=f+4|0;p=m;t=0;m=(l<<3)+37+(c[m>>2]|0)|0;y=l}else if((k|0)==13){p=f+4|0;m=(l<<3)+37+(c[p>>2]|0)|0;q=c[g>>2]|0;if((q|0)>0){r=c[g+4>>2]|0;s=0;do{o=c[r+(s*20|0)+4>>2]|0;if(!o)k=1;else{n=o;while(1)if(!(a[n>>0]|0))break;else n=n+1|0;k=(n-o&1073741823)+1|0}m=k+m|0;s=s+1|0}while((s|0)<(q|0));t=1;y=l}else{t=1;y=l}}k=ih(B,m,((m|0)<0)<<31>>31)|0;if(k){bw(k|0,0,m|0)|0;c[k>>2]=A;x=A+16|0;c[k+4>>2]=c[x>>2];u=k+36|0;n=u+(y<<3)|0;v=k+8|0;c[v>>2]=n;gw(n|0,c[f>>2]|0,c[p>>2]|0)|0;a[n+(c[p>>2]|0)>>0]=0;ho(n);n=n+((c[p>>2]|0)+1)|0;c[k+20>>2]=y;b:do if(!w){if((y|0)>0){m=A+4|0;f=e+4|0;o=b[A+38>>1]|0;l=0;while(1){c:do if(o<<16>>16>0){s=c[m>>2]|0;r=c[(c[f>>2]|0)+(l*20|0)+4>>2]|0;q=0;while(1){p=q+1|0;if(!($c(c[s+(q*24|0)>>2]|0,r)|0)){p=q;break}if((p|0)<(o<<16>>16|0))q=p;else break c}c[u+(l<<3)>>2]=p}else p=0;while(0);if((p|0)>=(o<<16>>16|0))break;l=l+1|0;if((l|0)>=(y|0))break b}c[z>>2]=c[(c[f>>2]|0)+(l*20|0)+4>>2];ph(d,35872,z);break a}}else c[u>>2]=(b[A+38>>1]|0)+-1;while(0);if(t&(y|0)>0){o=g+4|0;p=0;while(1){m=c[(c[o>>2]|0)+(p*20|0)+4>>2]|0;if(!m)l=0;else{l=m;while(1)if(!(a[l>>0]|0))break;else l=l+1|0;l=l-m&1073741823}c[u+(p<<3)+4>>2]=n;gw(n|0,m|0,l|0)|0;a[n+l>>0]=0;p=p+1|0;if((p|0)==(y|0))break;else n=n+(l+1)|0}}a[k+24>>0]=0;a[k+25>>0]=h;a[k+26>>0]=h>>>8;l=Ek((c[A+68>>2]|0)+56|0,c[v>>2]|0,k)|0;if((l|0)==(k|0)){a[B+65>>0]=1;break}if(l){c[k+12>>2]=l;c[l+16>>2]=k}c[x>>2]=k;k=0}else k=0}else k=0;while(0);ig(B,k);Jk(B,e);Jk(B,g);i=C;return}function _q(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b>>2]|0;f=a[e+62>>0]|0;g=a[e+145>>0]|0;e=Un(e,f,d,g&255)|0;do if(!(g<<24>>24)){if((e|0)!=0?(c[e+12>>2]|0)!=0:0)break;e=ss(b,f,e,d)|0}while(0);return e|0}function $q(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var 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;y=i;i=i+16|0;if((i|0)>=(j|0))ba();w=y;s=y+12|0;x=c[e>>2]|0;do if(!(a[x+65>>0]|0)){h=(h|0)!=0;if(h){r=x+68|0;a[r>>0]=(a[r>>0]|0)+1<<24>>24;v=Qr(e,g,f+8|0)|0;a[r>>0]=(a[r>>0]|0)+-1<<24>>24}else v=Qr(e,g,f+8|0)|0;if(!v){if(!h)break;vr(e,c[f+12>>2]|0);break}p=v+68|0;l=c[p>>2]|0;a:do if(l){h=c[x+20>>2]|0;if((h|0)>0){k=c[x+16>>2]|0;n=0;while(1){m=n+1|0;if((c[k+(n<<4)+12>>2]|0)==(l|0)){m=n;break a}if((m|0)<(h|0))n=m;else break}}else m=0}else m=-1e6;while(0);t=v+44|0;if((a[t>>0]&16)!=0?(dr(e,v)|0)!=0:0)break;n=(m|0)==1;u=n?13184:13208;h=c[(c[x+16>>2]|0)+(m<<4)>>2]|0;if(!(Oq(e,9,u,0,h)|0)){k=(g|0)!=0;do if(k){l=n?15:17;n=0}else{if(!(a[t>>0]&16)){l=n?13:11;n=0;break}n=v+60|0;while(1){n=c[n>>2]|0;if((c[n>>2]|0)==(x|0))break;else n=n+24|0}l=30;n=c[(c[n+4>>2]|0)+4>>2]|0}while(0);if((Oq(e,l,c[v>>2]|0,n,h)|0)==0?(Oq(e,9,c[v>>2]|0,0,h)|0)==0:0){n=c[v>>2]|0;if((Bc(n,25568,7)|0)==0?(Bc(n,35488,11)|0)!=0:0){c[w>>2]=n;ph(e,35504,w);break}h=v+12|0;l=(c[h>>2]|0)==0;if(k){if(l){c[w>>2]=n;ph(e,35536,w);break}}else if(!l){c[w>>2]=n;ph(e,35576,w);break}if(Kq(e)|0){q=e+408|0;l=c[q>>2]|0;l=(l|0)==0?e:l;wr(e,m);r=1<>2]=c[k>>2]|r;l=l+20|0;a[l>>0]=d[l>>0]|1;yr(e,m,28544,c[v>>2]|0);l=c[e>>2]|0;k=l+24|0;b:do if(((c[k>>2]&524288|0)!=0?(a[t>>0]&16)==0:0)?(c[h>>2]|0)==0:0){o=Kq(e)|0;s=Zm((c[p>>2]|0)+56|0,c[v>>2]|0,s)|0;if((s|0)!=0?(c[s+8>>2]|0)!=0:0)n=0;else{n=c[v+16>>2]|0;if(!n)break;while(1){if(a[n+24>>0]|0)break;if(c[k>>2]&16777216)break;n=c[n+4>>2]|0;if(!n)break b}n=ts(o)|0;sh(o,135,1,n,0)|0}s=e+438|0;a[s>>0]=1;nr(e,us(l,f,0)|0,0);a[s>>0]=0;if(!(c[k>>2]&16777216)){sh(o,135,0,(c[o+32>>2]|0)+2|0,0)|0;vs(e,787,2,0,-2,4)}if(n){l=c[o+24>>2]|0;h=~n;do if((n|0)<0){n=c[l+112>>2]|0;if(!n)break;c[n+(h<<2)>>2]=c[o+32>>2]}while(0);c[l+88>>2]=(c[o+32>>2]|0)+-1}}while(0);o=c[e>>2]|0;p=o+16|0;l=c[p>>2]|0;h=Kq(e)|0;s=c[q>>2]|0;s=(s|0)==0?e:s;wr(e,m);q=s+328|0;c[q>>2]=c[q>>2]|r;s=s+20|0;a[s>>0]=d[s>>0]|1;if(a[t>>0]&16)sh(h,146,0,0,0)|0;n=ws(e,v)|0;if(n)do{Mr(e,n);n=c[n+32>>2]|0}while((n|0)!=0);l=l+(m<<4)|0;if(a[t>>0]&8){s=c[v>>2]|0;c[w>>2]=c[l>>2];c[w+4>>2]=s;xr(e,35608,w)}s=c[v>>2]|0;c[w>>2]=c[l>>2];c[w+4>>2]=u;c[w+8>>2]=s;xr(e,35656,w);if((g|0)==0?(a[t>>0]&16)==0:0)xs(e,v);if(a[t>>0]&16){s=c[v>>2]|0;th(h,sh(h,148,m,0,0)|0,s,0)}k=c[v>>2]|0;th(h,sh(h,124,m,0,0)|0,k,0);zr(e,m);h=c[(c[p>>2]|0)+(m<<4)+12>>2]|0;k=b[h+78>>1]|0;if(k&2){l=c[h+16>>2]|0;if(l){k=l;do{h=c[k+8>>2]|0;if(c[h+12>>2]|0){Hk(o,h);c[h+4>>2]=0;b[h+38>>1]=0}k=c[k>>2]|0}while((k|0)!=0);k=c[(c[p>>2]|0)+(m<<4)+12>>2]|0;h=k;k=b[k+78>>1]|0}b[h+78>>1]=k&65533}}}}}while(0);zo(x,f);i=y;return}function ar(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();k=m;h=c[b>>2]|0;do if((f|0)!=0?(c[f+4>>2]|0)!=0:0){if(a[h+145>>0]|0){ph(b,28488,k);f=b+64|0;c[f>>2]=(c[f>>2]|0)+1;f=-1;break}c[g>>2]=f;g=Sq(h,e)|0;f=Rh(h,g)|0;ig(h,g);if((f|0)<0){c[k>>2]=e;ph(b,28512,k);f=b+64|0;c[f>>2]=(c[f>>2]|0)+1;f=-1}}else l=7;while(0);if((l|0)==7){f=d[h+144>>0]|0;c[g>>2]=e}i=m;return f|0}function br(a,b){a=a|0;b=b|0;a:do if(!b)b=0;else while(1){if(Dr(a,c[b>>2]|0)|0){b=1;break a}if(Gr(a,c[b+32>>2]|0)|0){b=1;break a}if(Cr(a,c[b+36>>2]|0)|0){b=1;break a}if(Dr(a,c[b+40>>2]|0)|0){b=1;break a}if(Cr(a,c[b+44>>2]|0)|0){b=1;break a}if(Dr(a,c[b+48>>2]|0)|0){b=1;break a}if(Cr(a,c[b+60>>2]|0)|0){b=1;break a}if(Cr(a,c[b+64>>2]|0)|0){b=1;break a}b=c[b+52>>2]|0;if(!b){b=0;break}}while(0);return b|0}function cr(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;if((f|0)!=0?(h=ih(d,72,0)|0,(h|0)!=0):0){c[h>>2]=Lr(d,c[f>>2]|0,g)|0;c[h+32>>2]=us(d,c[f+32>>2]|0,g)|0;c[h+36>>2]=Ir(d,c[f+36>>2]|0,g,0)|0;c[h+40>>2]=Lr(d,c[f+40>>2]|0,g)|0;c[h+44>>2]=Ir(d,c[f+44>>2]|0,g,0)|0;c[h+48>>2]=Lr(d,c[f+48>>2]|0,g)|0;a[h+4>>0]=a[f+4>>0]|0;j=cr(d,c[f+52>>2]|0,g)|0;c[h+52>>2]=j;if(j)c[j+56>>2]=h;c[h+56>>2]=0;c[h+60>>2]=Ir(d,c[f+60>>2]|0,g,0)|0;c[h+64>>2]=Ir(d,c[f+64>>2]|0,g,0)|0;c[h+8>>2]=0;c[h+12>>2]=0;b[h+6>>1]=(e[f+6>>1]|0)&65527;c[h+16>>2]=-1;c[h+20>>2]=-1;l=f+24|0;j=c[l+4>>2]|0;g=h+24|0;c[g>>2]=c[l>>2];c[g+4>>2]=j;g=c[f+68>>2]|0;if((g|0)!=0?(k=c[g>>2]<<4|8,i=ih(d,k,((k|0)<0)<<31>>31)|0,(i|0)!=0):0){bw(i|0,0,k|0)|0;c[i>>2]=c[g>>2];if((c[g>>2]|0)>0){f=i+8|0;j=0;do{c[f+(j<<4)+8>>2]=cr(d,c[g+(j<<4)+16>>2]|0,0)|0;c[f+(j<<4)+4>>2]=Lr(d,c[g+(j<<4)+12>>2]|0,0)|0;c[f+(j<<4)>>2]=gh(d,c[g+(j<<4)+8>>2]|0)|0;j=j+1|0}while((j|0)<(c[g>>2]|0))}}else i=0;c[h+68>>2]=i}else h=0;return h|0}function dr(d,f){d=d|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))ba();p=t;k=t+8|0;m=t+4|0;s=c[d>>2]|0;n=f+44|0;h=a[n>>0]|0;a:do if(!(h&16))q=11;else{g=c[f+60>>2]|0;if(g)do{if((c[g>>2]|0)==(s|0)){q=11;break a}g=c[g+24>>2]|0}while((g|0)!=0);g=f+56|0;h=Zm(s+308|0,c[c[g>>2]>>2]|0,k)|0;if((h|0)!=0?(l=c[h+8>>2]|0,(l|0)!=0):0){c[m>>2]=0;l=(vn(s,f,l,c[(c[l>>2]|0)+8>>2]|0,m)|0)==0;h=c[m>>2]|0;if(l){ig(s,h);h=a[n>>0]|0;q=11;break}else{c[p>>2]=h;ph(d,10344,p);ig(s,h);g=1;break}}c[p>>2]=c[c[g>>2]>>2];ph(d,28320,p);g=1}while(0);do if((q|0)==11)if((h&16)==0?(r=f+38|0,o=b[r>>1]|0,o<<16>>16<=0):0){if(o<<16>>16<0){c[p>>2]=c[f>>2];ph(d,26752,p);g=1;break}h=cr(s,c[f+12>>2]|0,0)|0;if(!h)g=1;else{o=s+250|0;n=a[o>>0]|0;q=d+68|0;p=c[q>>2]|0;ys(d,c[h+32>>2]|0);b[r>>1]=-1;a[o>>0]=0;m=s+284|0;l=c[m>>2]|0;c[m>>2]=0;g=js(d,h)|0;c[m>>2]=l;a[o>>0]=n;c[q>>2]=p;if(!g){b[r>>1]=0;g=1}else{d=g+38|0;b[r>>1]=b[d>>1]|0;q=g+4|0;c[f+4>>2]=c[q>>2];b[d>>1]=0;c[q>>2]=0;gg(s,g);g=(c[f+68>>2]|0)+78|0;b[g>>1]=e[g>>1]|0|2;g=0}Ik(s,h,1)}}else g=0;while(0);i=t;return g|0} -function er(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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,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=i;i=i+240|0;if((i|0)>=(j|0))ba();oa=za;pa=za+220|0;ha=za+216|0;fa=za+196|0;ga=za+176|0;ra=za+164|0;sa=za+136|0;va=za+88|0;da=za+64|0;ja=za+32|0;xa=f+464|0;ya=c[xa>>2]|0;la=f+468|0;ua=c[la>>2]|0;c[la>>2]=ua+1;c[xa>>2]=ua;ua=c[f>>2]|0;a:do if((((g|0)!=0?(ma=ua+65|0,(a[ma>>0]|0)==0):0)?(k=f+64|0,(c[k>>2]|0)==0):0)?(Oq(f,21,0,0,0)|0)==0:0){A=va+0|0;z=A+48|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(z|0));ia=g+48|0;if((d[h>>0]|0)<9){Jk(ua,c[ia>>2]|0);c[ia>>2]=0;ca=g+6|0;b[ca>>1]=e[ca>>1]&65534}zs(f,g,0);c[sa+0>>2]=0;c[sa+4>>2]=0;c[sa+8>>2]=0;c[sa+12>>2]=0;c[sa+16>>2]=0;c[sa+20>>2]=0;c[sa+24>>2]=0;c[sa>>2]=c[ia>>2];ka=g+32|0;u=c[ka>>2]|0;t=c[g>>2]|0;b:do if(((c[k>>2]|0)==0?(a[ma>>0]|0)==0:0)?(qa=g+6|0,w=(e[qa>>1]|0)>>>2&1,ta=Kq(f)|0,(ta|0)!=0):0){if((c[t>>2]|0)>1?(a[h>>0]&-2)<<24>>24==10:0){ph(f,35368,oa);wa=444;break}na=g+52|0;t=c[na>>2]|0;c:do if(!t){o=f+460|0;n=f+492|0;m=g+36|0;l=f+408|0;k=g+60|0;Q=g+64|0;R=g+4|0;S=ua+60|0;T=ta+32|0;U=f+72|0;V=da+4|0;W=da+1|0;X=da+8|0;Y=da+12|0;Z=ta+4|0;_=ta+24|0;$=f+19|0;aa=f+56|0;ca=f+80|0;P=0;v=w;while(1){if((P|0)>=(c[u>>2]|0)){E=m;N=0;w=v;R=u;break c}K=c[u+(P*72|0)+28>>2]|0;do if(!K)w=P;else{M=u+(P*72|0)+32|0;x=c[M>>2]|0;if(x){if(a[u+(P*72|0)+45>>0]&4){w=P;break}sh(ta,17,c[u+(P*72|0)+36>>2]|0,x,0)|0;w=P;break}c[oa>>2]=0;As(g,oa);c[o>>2]=(c[o>>2]|0)+(c[oa>>2]|0);s=b[K+6>>1]&4;N=c[n>>2]|0;r=c[f>>2]|0;d:do if(!(b[r+60>>1]&1)){I=c[ka>>2]|0;q=c[I+(P*72|0)+48>>2]|0;H=I+(P*72|0)+28|0;L=c[H>>2]|0;p=s<<16>>16!=0;do if(p){if(v){wa=120;break d}if((c[I>>2]|0)>1){wa=120;break d}O=c[m>>2]|0;if((O|0)!=0?(c[O+4>>2]&2097152|0)!=0:0){wa=120;break d}E=c[g>>2]|0;do if(E){B=c[E>>2]|0;if((B|0)<=0)break;F=c[E+4>>2]|0;E=0;D=0;do{D=c[(c[F+(E*20|0)>>2]|0)+4>>2]|D;E=E+1|0}while((E|0)!=(B|0));if(D&2097152){wa=120;break d}}while(0);E=c[ia>>2]|0;if(!E)break;B=c[E>>2]|0;if((B|0)<=0)break;F=c[E+4>>2]|0;E=0;D=0;do{D=c[(c[F+(E*20|0)>>2]|0)+4>>2]|D;E=E+1|0}while((E|0)!=(B|0));if(D&2097152){wa=120;break d}}while(0);F=c[L+32>>2]|0;E=(c[L+60>>2]|0)==0;if(!E?(c[k>>2]|0)!=0:0){wa=120;break}if(c[L+64>>2]|0){wa=120;break}B=b[qa>>1]|0;D=(B&64)==0;if(!(D|E)){wa=120;break}if(!(c[F>>2]|0)){wa=120;break}A=b[L+6>>1]|0;if(A&1){wa=120;break}F=E|D^1;if(!F?(c[I>>2]|0)>1|(v|0)!=0:0){wa=120;break}E=B&1;if(E<<16>>16!=0&p){wa=120;break}y=c[ia>>2]|0;z=(y|0)==0;if(!z?(c[L+48>>2]|0)!=0:0){wa=120;break}G=(v|0)!=0;if(G?(c[L+48>>2]|0)!=0:0){wa=120;break}if(F){if(A&6144){wa=120;break}}else if(!((c[m>>2]|0)==0&E<<16>>16==0&(A&6144)==0)){wa=120;break}if((B&2048)!=0?(c[L+52>>2]|0)!=0:0){wa=120;break}O=I+(P*72|0)+44|0;if(a[O>>0]&32){wa=120;break}B=L+52|0;F=c[B>>2]|0;do if(F){if(!(E<<16>>16==0&(((c[L+48>>2]|0)!=0|G)^1))){wa=120;break d}if((c[I>>2]|0)!=1){wa=120;break d}e:do if(L){if(!(A&5))D=L;else{wa=120;break d}while(1){E=(F|0)==0;if(!E?(a[D+4>>0]|0)!=116:0){wa=120;break d}if((c[c[D+32>>2]>>2]|0)<1){wa=120;break d}if((c[c[L>>2]>>2]|0)!=(c[c[D>>2]>>2]|0)){wa=120;break d}if(E)break e;if(b[F+6>>1]&5){wa=120;break d}D=F;F=c[F+52>>2]|0}}while(0);if(z)break;D=c[y>>2]|0;if((D|0)<=0)break;F=c[y+4>>2]|0;E=0;do{if(!(b[F+(E*20|0)+16>>1]|0)){wa=120;break d}E=E+1|0}while((E|0)<(D|0))}while(0);x=I+(P*72|0)+16|0;c[n>>2]=c[x>>2];Oq(f,21,0,0,0)|0;c[n>>2]=N;F=c[B>>2]|0;f:do if(!F)wa=81;else{y=r+65|0;B=c[ia>>2]|0;A=c[k>>2]|0;z=c[Q>>2]|0;D=c[na>>2]|0;while(1){c[ia>>2]=0;c[ka>>2]=0;c[na>>2]=0;c[k>>2]=0;c[Q>>2]=0;E=cr(r,g,0)|0;c[Q>>2]=z;c[k>>2]=A;c[ia>>2]=B;c[ka>>2]=I;a[R>>0]=116;if(!E)E=D;else{c[E+52>>2]=D;if(D)c[D+56>>2]=E;c[E+56>>2]=g}c[na>>2]=E;if(a[y>>0]|0)break f;F=c[F+52>>2]|0;if(!F){wa=81;break}else D=E}}while(0);if((wa|0)==81){wa=0;J=c[H>>2]|0;B=I+(P*72|0)+12|0;ig(r,c[B>>2]|0);ig(r,c[x>>2]|0);D=I+(P*72|0)+20|0;ig(r,c[D>>2]|0);c[B>>2]=0;c[x>>2]=0;c[D>>2]=0;c[H>>2]=0;D=I+(P*72|0)+24|0;B=c[D>>2]|0;if(B){A=B+40|0;z=b[A>>1]|0;if(z<<16>>16==1){N=c[l>>2]|0;N=((N|0)==0?f:N)+524|0;c[B+72>>2]=c[N>>2];c[N>>2]=B}else b[A>>1]=z+-1<<16>>16;c[D>>2]=0}N=P+1|0;M=r+65|0;L=g;K=J;while(1){y=c[K+32>>2]|0;x=c[y>>2]|0;E=L+32|0;F=c[E>>2]|0;if(!F){F=lr(r,0,0,0)|0;c[E>>2]=F;if(!F)break;else w=0}else w=a[O>>0]|0;if((x|0)>1){F=Bs(r,F,x+-1|0,N)|0;c[E>>2]=F;if(a[M>>0]|0)break}if((x|0)>0){D=0;do{A=D+P|0;Dk(r,c[F+(A*72|0)+56>>2]|0);E=y+(D*72|0)+8|0;A=F+(A*72|0)+8|0;B=E+0|0;z=A+72|0;do{c[A>>2]=c[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(z|0));A=E+0|0;z=A+72|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(z|0));D=D+1|0}while((D|0)!=(x|0))}a[F+(P*72|0)+44>>0]=w;E=c[L>>2]|0;F=c[E>>2]|0;if((F|0)>0){A=E+4|0;D=c[A>>2]|0;B=0;do{if(!(c[D+(B*20|0)+4>>2]|0)){F=gh(r,c[D+(B*20|0)+8>>2]|0)|0;ho(F);D=c[A>>2]|0;c[D+(B*20|0)+4>>2]=F;F=c[E>>2]|0}B=B+1|0}while((B|0)<(F|0));E=c[L>>2]|0}Cs(r,E,q,c[K>>2]|0);if(G){Cs(r,c[L+40>>2]|0,q,c[K>>2]|0);I=L+44|0;c[I>>2]=Ds(r,c[I>>2]|0,q,c[K>>2]|0)|0}F=K+48|0;E=c[F>>2]|0;do if(!E){E=c[L+48>>2]|0;if(!E)break;Cs(r,E,q,c[K>>2]|0)}else{D=c[E>>2]|0;if((D|0)>0){B=c[E+4>>2]|0;A=0;do{b[B+(A*20|0)+16>>1]=0;A=A+1|0}while((A|0)!=(D|0))}c[L+48>>2]=E;c[F>>2]=0}while(0);E=c[K+36>>2]|0;if(!E)D=0;else D=Ir(r,E,0,0)|0;F=L+36|0;E=c[F>>2]|0;if(p){I=L+44|0;c[I>>2]=E;c[F>>2]=D;H=Ds(r,E,q,c[K>>2]|0)|0;c[I>>2]=H;c[I>>2]=os(r,H,Ir(r,c[K+44>>2]|0,0,0)|0)|0;c[L+40>>2]=Lr(r,c[K+40>>2]|0,0)|0}else{I=Ds(r,E,q,c[K>>2]|0)|0;c[F>>2]=I;c[F>>2]=os(r,I,D)|0}E=L+6|0;b[E>>1]=e[E>>1]|e[K+6>>1]&1;E=K+60|0;D=c[E>>2]|0;if(D){c[L+60>>2]=D;c[E>>2]=0}L=c[L+52>>2]|0;if(!L)break;else K=c[K+52>>2]|0}Ik(r,J,1)}if(!(s<<16>>16)){w=-1;break}b[qa>>1]=e[qa>>1]|4;w=-1;v=1}else wa=120;while(0);g:do if((wa|0)==120){wa=0;do if((c[u>>2]|0)==1){if(b[S>>1]&256)break;A=c[T>>2]|0;O=A+1|0;N=(c[U>>2]|0)+1|0;c[U>>2]=N;w=u+(P*72|0)+36|0;c[w>>2]=N;sh(ta,20,N,0,O)|0;c[M>>2]=O;O=c[w>>2]|0;a[da>>0]=13;c[V>>2]=O;a[W>>0]=0;c[X>>2]=0;c[Y>>2]=0;a[u+(P*72|0)+46>>0]=c[la>>2];er(f,K,da)|0;O=K+24|0;O=bs(c[O>>2]|0,c[O+4>>2]|0)|0;b[(c[u+(P*72|0)+24>>2]|0)+28>>1]=O;O=u+(P*72|0)+45|0;a[O>>0]=a[O>>0]|4;c[u+(P*72|0)+40>>2]=c[X>>2];sh(ta,21,c[w>>2]|0,0,0)|0;w=c[T>>2]|0;if(w>>>0>A>>>0)c[(c[Z>>2]|0)+(A*20|0)+8>>2]=w;c[(c[_>>2]|0)+88>>2]=w+-1;a[$>>0]=0;c[aa>>2]=0;w=P;break g}while(0);z=(c[U>>2]|0)+1|0;c[U>>2]=z;B=u+(P*72|0)+36|0;c[B>>2]=z;z=sh(ta,25,0,z,0)|0;c[M>>2]=z+1;if(!(a[u+(P*72|0)+45>>0]&2)){O=Kq(f)|0;A=c[ca>>2]|0;c[ca>>2]=A+1;A=sh(O,44,A,0,0)|0}else A=0;O=c[u+(P*72|0)+48>>2]|0;a[da>>0]=12;c[V>>2]=O;a[W>>0]=0;c[X>>2]=0;c[Y>>2]=0;a[u+(P*72|0)+46>>0]=c[la>>2];er(f,K,da)|0;O=K+24|0;O=bs(c[O>>2]|0,c[O+4>>2]|0)|0;b[(c[u+(P*72|0)+24>>2]|0)+28>>1]=O;if(A){x=c[T>>2]|0;if(x>>>0>A>>>0)c[(c[Z>>2]|0)+(A*20|0)+8>>2]=x;c[(c[_>>2]|0)+88>>2]=x+-1}w=sh(ta,18,c[B>>2]|0,0,0)|0;if((c[T>>2]|0)>>>0>z>>>0)c[(c[Z>>2]|0)+(z*20|0)+4>>2]=w;a[$>>0]=0;c[aa>>2]=0;w=P}while(0);if(a[ma>>0]|0){wa=444;break b}c[oa>>2]=0;As(g,oa);c[o>>2]=(c[o>>2]|0)-(c[oa>>2]|0);u=c[ka>>2]|0;if((d[h>>0]|0)<9)break;c[sa>>2]=c[ia>>2]}while(0);t=c[na>>2]|0;if(!t)P=w+1|0;else{E=m;N=t;w=v;R=u;break}}}else{E=g+36|0;N=t;R=u}while(0);Q=c[g>>2]|0;y=c[E>>2]|0;l=g+40|0;t=c[l>>2]|0;F=g+44|0;da=c[F>>2]|0;m=b[qa>>1]|0;a[ra>>0]=m&1;if(N){L=c[f>>2]|0;c[pa+0>>2]=c[h+0>>2];c[pa+4>>2]=c[h+4>>2];c[pa+8>>2]=c[h+8>>2];c[pa+12>>2]=c[h+12>>2];c[pa+16>>2]=c[h+16>>2];h:do if(!(c[N+48>>2]|0)){u=N+60|0;if(c[u>>2]|0){k=d[g+4>>0]|0;if((k|0)==118)k=35336;else if((k|0)==117)k=35352;else if((k|0)==116)k=35320;else k=35360;c[oa>>2]=k;ph(f,35072,oa);m=0;k=1;wa=227;break}O=Kq(f)|0;q=a[pa>>0]|0;if(q<<24>>24==12){sh(O,57,c[pa+4>>2]|0,c[c[g>>2]>>2]|0,0)|0;q=c[O+4>>2]|0;if(q)a[q+(((c[O+32>>2]|0)+-1|0)*20|0)+3>>0]=8;a[pa>>0]=14;q=14}p=e[qa>>1]|0;if(p&256){m=0;k=Es(f,g,pa)|0;wa=227;break}if((c[c[g>>2]>>2]|0)!=(c[c[N>>2]>>2]|0)){Fs(f,g);m=0;k=1;wa=227;break}do if(!(p&2048)){if(c[ia>>2]|0){k=Hs(f,g,h)|0;break h}M=g+4|0;p=d[M>>0]|0;if((p|0)==116){s=g+8|0;q=N+8|0;c[q>>2]=c[s>>2];r=g+12|0;p=N+12|0;c[p>>2]=c[r>>2];aa=g+60|0;c[u>>2]=c[aa>>2];ca=g+64|0;c[N+64>>2]=c[ca>>2];n=c[la>>2]|0;k=er(f,N,pa)|0;c[aa>>2]=0;c[ca>>2]=0;if(k){m=0;wa=227;break h}c[na>>2]=0;q=c[q>>2]|0;c[s>>2]=q;c[r>>2]=c[p>>2];if(!q)t=0;else t=sh(O,46,q,0,0)|0;l=c[la>>2]|0;k=er(f,g,pa)|0;m=c[na>>2]|0;c[na>>2]=N;ca=N+24|0;o=g+24|0;q=o;ca=fw(c[q>>2]|0,c[q+4>>2]|0,c[ca>>2]|0,c[ca+4>>2]|0)|0;q=o;c[q>>2]=ca;c[q+4>>2]=C;q=c[u>>2]|0;do if(q){ca=(Is(q,ha)|0)!=0;q=c[ha>>2]|0;if(!(ca&(q|0)>0))break;ca=o;aa=c[ca+4>>2]|0;p=((q|0)<0)<<31>>31;if(!(aa>>>0>p>>>0|((aa|0)==(p|0)?(c[ca>>2]|0)>>>0>q>>>0:0)))break;ca=o;c[ca>>2]=q;c[ca+4>>2]=p}while(0);if(!t){t=M;s=n;q=l;break}o=c[O+32>>2]|0;if(o>>>0>t>>>0)c[(c[O+4>>2]|0)+(t*20|0)+8>>2]=o;c[(c[O+24>>2]|0)+88>>2]=o+-1;t=M;s=n;q=l;break}else if((p|0)==115|(p|0)==117){if(q<<24>>24==1)p=c[pa+4>>2]|0;else{o=f+68|0;p=c[o>>2]|0;c[o>>2]=p+1;c[g+16>>2]=sh(O,57,p,0,0)|0;o=g;while(1){q=c[o+56>>2]|0;if(!q)break;else o=q}ca=o+6|0;b[ca>>1]=e[ca>>1]|8}a[fa>>0]=1;c[fa+4>>2]=p;a[fa+1>>0]=0;c[fa+8>>2]=0;c[fa+12>>2]=0;v=c[la>>2]|0;k=er(f,N,fa)|0;if(k){m=0;wa=227;break h}u=(a[M>>0]|0)==117?2:1;c[na>>2]=0;s=g+60|0;r=c[s>>2]|0;c[s>>2]=0;q=g+64|0;o=c[q>>2]|0;c[q>>2]=0;a[fa>>0]=u;u=c[la>>2]|0;k=er(f,g,fa)|0;Jk(L,c[ia>>2]|0);m=c[na>>2]|0;c[na>>2]=N;c[ia>>2]=0;if((a[M>>0]|0)==115){aa=N+24|0;ca=g+24|0;$=ca;aa=fw(c[$>>2]|0,c[$+4>>2]|0,c[aa>>2]|0,c[aa+4>>2]|0)|0;c[ca>>2]=aa;c[ca+4>>2]=C}Ck(L,c[s>>2]|0);c[s>>2]=r;c[q>>2]=o;c[g+8>>2]=0;c[g+12>>2]=0;o=a[pa>>0]|0;if(o<<24>>24==9){o=g;while(1){n=c[o+52>>2]|0;if(!n)break;else o=n}Js(f,0,c[o>>2]|0)}else if(o<<24>>24==1){t=M;s=v;q=u;break}l=ts(O)|0;ca=ts(O)|0;Ks(f,g,l);sh(O,108,p,l,0)|0;t=O+32|0;s=c[t>>2]|0;Ls(f,g,c[g>>2]|0,p,0,0,pa,ca,l);r=O+24|0;q=c[r>>2]|0;o=~ca;do if((ca|0)<0){n=c[q+112>>2]|0;if(!n)break;c[n+(o<<2)>>2]=c[t>>2]}while(0);c[q+88>>2]=(c[t>>2]|0)+-1;sh(O,9,p,s,0)|0;o=c[r>>2]|0;n=~l;do if((l|0)<0){q=c[o+112>>2]|0;if(!q)break;c[q+(n<<2)>>2]=c[t>>2]}while(0);c[o+88>>2]=(c[t>>2]|0)+-1;sh(O,61,p,0,0)|0;t=M;s=v;q=u;break}else{o=f+68|0;x=c[o>>2]|0;c[o>>2]=x+2;c[g+16>>2]=sh(O,57,x,0,0)|0;o=g;while(1){n=c[o+56>>2]|0;if(!n)break;else o=n}v=x+1|0;s=o+6|0;b[s>>1]=e[s>>1]|8;a[ga>>0]=1;s=ga+4|0;c[s>>2]=x;a[ga+1>>0]=0;c[ga+8>>2]=0;c[ga+12>>2]=0;u=c[la>>2]|0;k=er(f,N,ga)|0;if(k){m=0;wa=227;break h}c[g+20>>2]=sh(O,57,v,0,0)|0;c[na>>2]=0;t=g+60|0;l=c[t>>2]|0;c[t>>2]=0;n=g+64|0;o=c[n>>2]|0;c[n>>2]=0;c[s>>2]=v;w=c[la>>2]|0;k=er(f,g,ga)|0;m=c[na>>2]|0;c[na>>2]=N;q=g+24|0;ca=q;aa=c[ca+4>>2]|0;r=N+24|0;s=c[r>>2]|0;r=c[r+4>>2]|0;if(aa>>>0>r>>>0|((aa|0)==(r|0)?(c[ca>>2]|0)>>>0>s>>>0:0)){ca=q;c[ca>>2]=s;c[ca+4>>2]=r}Ck(L,c[t>>2]|0);c[t>>2]=l;c[n>>2]=o;if((a[pa>>0]|0)==9){q=g;while(1){p=c[q+52>>2]|0;if(!p)break;else q=p}Js(f,0,c[q>>2]|0)}n=ts(O)|0;t=ts(O)|0;Ks(f,g,n);sh(O,108,x,n,0)|0;q=f+19|0;p=a[q>>0]|0;if(!(p<<24>>24)){ca=f+72|0;q=(c[ca>>2]|0)+1|0;c[ca>>2]=q}else{ca=p+-1<<24>>24;a[q>>0]=ca;q=c[f+((ca&255)<<2)+24>>2]|0}l=sh(O,101,x,q,0)|0;th(O,sh(O,68,v,t,q)|0,0,-14);Wr(f,q);Ls(f,g,c[g>>2]|0,x,0,0,pa,t,n);q=O+24|0;p=c[q>>2]|0;r=~t;do if((t|0)<0){s=c[p+112>>2]|0;if(!s)break;c[s+(r<<2)>>2]=c[O+32>>2]}while(0);s=O+32|0;c[p+88>>2]=(c[s>>2]|0)+-1;sh(O,9,x,l,0)|0;p=c[q>>2]|0;o=~n;do if((n|0)<0){q=c[p+112>>2]|0;if(!q)break;c[q+(o<<2)>>2]=c[s>>2]}while(0);c[p+88>>2]=(c[s>>2]|0)+-1;sh(O,61,v,0,0)|0;sh(O,61,x,0,0)|0;t=M;s=u;q=w;break}}else{Gs(f,g,pa);t=g+4|0;s=0;q=0;m=0;k=0}while(0);ca=a[t>>0]|0;Ms(f,ca&255,s,q,ca<<24>>24!=116&1);if(!(b[qa>>1]&8)){wa=227;break}r=c[c[g>>2]>>2]|0;s=Ns(L,r,1)|0;if(!s){k=7;wa=227;break}if((r|0)>0){l=L+8|0;n=s+20|0;o=0;while(1){ca=Os(f,g,o)|0;c[n>>2]=ca;if(!ca)c[n>>2]=c[l>>2];o=o+1|0;if((o|0)==(r|0))break;else n=n+4|0}}p=O+32|0;q=O+4|0;do{l=0;do{o=g+(l<<2)+16|0;n=c[o>>2]|0;if((n|0)<0)break;if((c[p>>2]|0)>>>0>n>>>0)c[(c[q>>2]|0)+(n*20|0)+8>>2]=r;c[s>>2]=(c[s>>2]|0)+1;th(O,n,s,-6);c[o>>2]=-1;l=l+1|0}while((l|0)<2);g=c[g+52>>2]|0}while((g|0)!=0);ca=(c[s>>2]|0)+-1|0;c[s>>2]=ca;if(ca){wa=227;break}Sc(s);wa=227}else{k=d[g+4>>0]|0;if((k|0)==118)k=35336;else if((k|0)==117)k=35352;else if((k|0)==116)k=35320;else k=35360;c[oa>>2]=k;ph(f,35024,oa);m=0;k=1;wa=227}while(0);if((wa|0)==227){c[h+8>>2]=c[pa+8>>2];c[h+12>>2]=c[pa+12>>2];Ik(L,m,1)}c[xa>>2]=ya;break a}if((m&5)==1){k=c[sa>>2]|0;if(!(Ps(k,Q,-1)|0)){b[qa>>1]=m&65534;t=Lr(ua,Q,0)|0;c[l>>2]=t;wa=232}}else wa=232;if((wa|0)==232)k=c[sa>>2]|0;if(!k)k=-1;else{ca=Qs(f,k,0,c[Q>>2]|0)|0;aa=f+68|0;k=c[aa>>2]|0;c[aa>>2]=k+1;c[sa+8>>2]=k;k=sh(ta,57,k,(c[c[sa>>2]>>2]|0)+1+(c[Q>>2]|0)|0,0)|0;th(ta,k,ca,-6)}O=sa+20|0;c[O>>2]=k;if((a[h>>0]|0)==12)sh(ta,57,c[h+4>>2]|0,c[Q>>2]|0,0)|0;na=ts(ta)|0;v=g+24|0;ca=v;c[ca>>2]=-1;c[ca+4>>2]=2147483647;Ks(f,g,na);if((c[g+8>>2]|0)==0?(ea=c[O>>2]|0,(ea|0)>-1):0){if(!(a[(c[ta>>2]|0)+65>>0]|0))k=(c[ta+4>>2]|0)+(ea*20|0)|0;else k=29120;a[k>>0]=58;ca=sa+24|0;a[ca>>0]=d[ca>>0]|1}if(!(b[qa>>1]&1))a[ra+1>>0]=0;else{ca=f+68|0;k=c[ca>>2]|0;c[ca>>2]=k+1;c[ra+4>>2]=k;ca=Qs(f,c[g>>2]|0,0,0)|0;k=sh(ta,57,k,0,0)|0;th(ta,k,ca,-6);c[ra+8>>2]=k;k=c[ta+4>>2]|0;if(k)a[k+(((c[ta+32>>2]|0)+-1|0)*20|0)+3>>0]=8;a[ra+1>>0]=3}if((w|0)==0&(t|0)==0){s=Rs(f,R,y,c[sa>>2]|0,c[g>>2]|0,(a[ra>>0]|0)!=0?1024:0,0)|0;if(!s){wa=444;break}q=Ss(b[s+32>>1]|0)|0;p=C;ca=v;aa=c[ca+4>>2]|0;if(p>>>0>>0|((p|0)==(aa|0)?q>>>0<(c[ca>>2]|0)>>>0:0)){ca=v;c[ca>>2]=q;c[ca+4>>2]=p}do if(a[ra>>0]|0){q=a[s+40>>0]|0;if(!(q<<24>>24))break;a[ra+1>>0]=q}while(0);q=c[sa>>2]|0;do if(!q)wa=257;else{ca=a[s+36>>0]|0;c[sa+4>>2]=ca;if((ca|0)!=(c[q>>2]|0))break;c[sa>>2]=0;wa=257}while(0);do if((wa|0)==257){o=c[O>>2]|0;if((o|0)<=-1)break;vh(ta,o)}while(0);Ls(f,g,Q,-1,sa,ra,h,c[s+48>>2]|0,c[s+52>>2]|0);Ts(s)}else{w=(t|0)!=0;do if(w){l=c[g>>2]|0;k=c[l>>2]|0;if((k|0)>0){l=c[l+4>>2]|0;while(1){b[l+18>>1]=0;k=k+-1|0;if((k|0)<=0)break;else l=l+20|0}}k=c[t>>2]|0;if((k|0)>0){l=c[t+4>>2]|0;while(1){b[l+18>>1]=0;k=k+-1|0;if((k|0)<=0)break;else l=l+20|0}}ca=v;aa=c[ca+4>>2]|0;if(!(aa>>>0>0|(aa|0)==0&(c[ca>>2]|0)>>>0>100))break;ca=v;c[ca>>2]=100;c[ca+4>>2]=0}else{ca=v;c[ca>>2]=1;c[ca+4>>2]=0}while(0);M=(Ps(t,c[sa>>2]|0,-1)|0)==0;P=ts(ta)|0;c[ja+0>>2]=0;c[ja+4>>2]=0;c[ja+8>>2]=0;c[ja+12>>2]=0;c[ja+16>>2]=0;c[ja+20>>2]=0;c[ja+24>>2]=0;c[ja+28>>2]=0;c[ja>>2]=f;c[ja+4>>2]=R;c[ja+12>>2]=va;H=f+72|0;c[va+16>>2]=(c[H>>2]|0)+1;if(w)k=c[t>>2]|0;else k=0;v=va+12|0;c[v>>2]=k;c[va+24>>2]=t;Us(ja,Q);Us(ja,c[sa>>2]|0);if(da){c[oa+0>>2]=0;c[oa+4>>2]=0;c[oa+8>>2]=0;c[oa+12>>2]=0;c[oa+16>>2]=0;c[oa+20>>2]=0;c[oa>>2]=80;c[oa+4>>2]=81;c[oa+24>>2]=ja;ns(oa,da)|0}x=va+32|0;c[va+36>>2]=c[x>>2];o=va+44|0;k=c[o>>2]|0;if((k|0)>0){u=ja+28|0;l=va+40|0;m=b[u>>1]|0;n=0;do{b[u>>1]=m&65535|8;Us(ja,c[(c[(c[l>>2]|0)+(n<<4)>>2]|0)+20>>2]|0);m=e[u>>1]&65527;b[u>>1]=m;n=n+1|0;k=c[o>>2]|0}while((n|0)<(k|0))}c[va+20>>2]=c[H>>2];if(a[ma>>0]|0){wa=444;break}if(w){F=f+68|0;E=c[F>>2]|0;c[F>>2]=E+1;s=va+4|0;c[s>>2]=E;E=Qs(f,t,0,c[x>>2]|0)|0;r=sh(ta,58,c[s>>2]|0,c[v>>2]|0,0)|0;th(ta,r,E,-6);K=c[H>>2]|0;J=K+1|0;G=K+2|0;K=K+3|0;c[H>>2]=K;I=ts(ta)|0;N=(c[H>>2]|0)+1|0;c[H>>2]=N;L=ts(ta)|0;q=c[H>>2]|0;o=q+1|0;ca=c[t>>2]|0;aa=ca+q|0;p=aa+1|0;c[H>>2]=aa+ca;sh(ta,25,0,G,0)|0;sh(ta,25,0,J,0)|0;sh(ta,28,0,o,(c[t>>2]|0)+q|0)|0;sh(ta,17,N,L,0)|0;q=Rs(f,R,y,t,0,M?2304:256,0)|0;if(!q){wa=444;break}if((a[q+36>>0]|0)==(c[t>>2]|0)){u=0;k=0;v=0}else{if(!(a[ra>>0]|0))k=34824;else k=(b[qa>>1]&1)==0?34808:34824;Xs(f,k);A=c[t>>2]|0;k=c[x>>2]|0;if((k|0)>0){l=c[va+28>>2]|0;m=0;v=A;u=A;do{if((c[l+(m*24|0)+12>>2]|0)>=(v|0)){v=v+1|0;u=u+1|0}m=m+1|0}while((m|0)<(k|0));D=u}else D=A;B=f+60|0;u=c[B>>2]|0;y=f+56|0;k=c[y>>2]|0;if((k|0)<(D|0)){z=c[H>>2]|0;c[H>>2]=z+D;z=z+1|0}else{c[B>>2]=u+D;c[y>>2]=k-D;z=u}Ys(f);Zs(f,t,z,0);v=c[x>>2]|0;if((v|0)>0){m=va+28|0;w=0;u=A;do{k=c[m>>2]|0;if((c[k+(w*24|0)+12>>2]|0)>=(u|0)){l=u+z|0;v=_s(f,c[k+(w*24|0)>>2]|0,c[k+(w*24|0)+8>>2]|0,c[k+(w*24|0)+4>>2]|0,l,0)|0;if((l|0)!=(v|0))sh(ta,34,v,l,0)|0;v=c[x>>2]|0;u=u+1|0}w=w+1|0}while((w|0)<(v|0))}v=f+19|0;u=a[v>>0]|0;if(!(u<<24>>24)){u=(c[H>>2]|0)+1|0;c[H>>2]=u}else{u=u+-1<<24>>24;a[v>>0]=u;u=c[f+((u&255)<<2)+24>>2]|0}sh(ta,49,z,D,u)|0;sh(ta,109,c[s>>2]|0,u,0)|0;Wr(f,u);$s(f,z,D);if((c[y>>2]|0)<(D|0)){c[y>>2]=D;c[B>>2]=z}Ts(q);l=c[F>>2]|0;c[F>>2]=l+1;c[va+8>>2]=l;k=a[v>>0]|0;if(!(k<<24>>24)){k=(c[H>>2]|0)+1|0;c[H>>2]=k}else{k=k+-1<<24>>24;a[v>>0]=k;k=c[f+((k&255)<<2)+24>>2]|0}sh(ta,60,l,k,D)|0;sh(ta,106,c[s>>2]|0,P,0)|0;a[va+1>>0]=1;Ys(f);u=1;v=l}do if(M){if(b[ua+60>>1]&4)break;if((u|0)==0?(a[q+37>>0]|0)==0:0)break;c[sa>>2]=0;vh(ta,c[O>>2]|0)}while(0);x=ta+32|0;n=c[x>>2]|0;Ys(f);u=(u|0)!=0;if(u)sh(ta,100,c[s>>2]|0,k,v)|0;k=c[t>>2]|0;if((k|0)>0){l=t+4|0;m=0;do{if(u)sh(ta,47,v,m,m+p|0)|0;else{a[va>>0]=1;Nq(f,c[(c[l>>2]|0)+(m*20|0)>>2]|0,m+p|0)}m=m+1|0;k=c[t>>2]|0}while((m|0)<(k|0))}if(E)c[E>>2]=(c[E>>2]|0)+1;th(ta,sh(ta,42,o,p,k)|0,E,-6);k=c[x>>2]|0;ca=k+1|0;sh(ta,43,ca,0,ca)|0;t=c[t>>2]|0;sh(c[f+8>>2]|0,32,p,o,t)|0;$s(f,p,t);sh(ta,17,K,I,0)|0;sh(ta,137,G,P,0)|0;sh(ta,17,N,L,0)|0;t=c[x>>2]|0;if(t>>>0>k>>>0)c[(c[ta+4>>2]|0)+(k*20|0)+8>>2]=t;o=ta+24|0;c[(c[o>>2]|0)+88>>2]=t+-1;at(f,va);sh(ta,25,1,J,0)|0;if(u)sh(ta,5,c[s>>2]|0,n,0)|0;else{Ts(q);vh(ta,r)}sh(ta,17,K,I,0)|0;sh(ta,16,0,P,0)|0;m=c[x>>2]|0;sh(ta,25,1,G,0)|0;sh(ta,18,K,0,0)|0;k=c[o>>2]|0;l=~I;do if((I|0)<0){t=c[k+112>>2]|0;if(!t)break;c[t+(l<<2)>>2]=c[x>>2]}while(0);s=c[x>>2]|0;c[k+88>>2]=s+-1;sh(ta,137,J,s+2|0,0)|0;sh(ta,18,K,0,0)|0;bt(f,va);s=s+1|0;ct(f,da,s,16);Ls(f,g,c[g>>2]|0,-1,sa,ra,h,s,m);sh(ta,18,K,0,0)|0;s=c[o>>2]|0;r=~L;do if((L|0)<0){q=c[s+112>>2]|0;if(!q)break;c[q+(r<<2)>>2]=c[x>>2]}while(0);c[s+88>>2]=(c[x>>2]|0)+-1;dt(f,va);sh(ta,18,N,0,0)|0}else{do if(!(c[E>>2]|0)){r=c[g>>2]|0;if((c[r>>2]|0)!=1){wa=372;break}s=c[ka>>2]|0;if((c[s>>2]|0)!=1){wa=372;break}if(c[s+28>>2]|0){wa=372;break}x=c[s+24>>2]|0;s=c[c[r+4>>2]>>2]|0;w=x+44|0;if(a[w>>0]&16){wa=372;break}if((a[s>>0]|0)!=-101|(k|0)==0){wa=372;break}v=va+40|0;if(!(b[(c[(c[v>>2]|0)+4>>2]|0)+2>>1]&256)){wa=372;break}if((x|0)==0?1:(c[s+4>>2]&16|0)!=0){wa=372;break}s=c[f>>2]|0;k=c[x+68>>2]|0;i:do if(!k)r=-1e6;else{l=c[s+20>>2]|0;if((l|0)<=0){r=0;break}s=c[s+16>>2]|0;t=0;while(1){r=t+1|0;if((c[s+(t<<4)+12>>2]|0)==(k|0)){r=t;break i}if((r|0)<(l|0))t=r;else break}}while(0);t=f+68|0;n=c[t>>2]|0;c[t>>2]=n+1;t=x+32|0;k=c[t>>2]|0;wr(f,r);cs(f,r,c[t>>2]|0,0,c[x>>2]|0);t=c[x+8>>2]|0;j:do if(!(a[w>>0]&32)){s=0;wa=351}else{if(!t){l=1;m=0;t=0;break}else s=t;while(1){if((a[s+51>>0]&3)==2){wa=351;break j}s=c[s+20>>2]|0;if(!s){s=0;wa=351;break}}}while(0);do if((wa|0)==351){if(t){m=x+42|0;l=t;do{do if(!(a[l+51>>0]&4)){t=b[l+44>>1]|0;if(t<<16>>16>=(b[m>>1]|0))break;if(c[l+36>>2]|0)break;if((s|0)!=0?t<<16>>16>=(b[s+44>>1]|0):0)break;s=l}while(0);l=c[l+20>>2]|0}while((l|0)!=0)}if(!s){l=1;m=0;t=0;break}k=c[s+40>>2]|0;l=0;m=s;t=ds(f,s)|0}while(0);th(ta,sh(ta,54,n,k,r)|0,1,-14);if(t)th(ta,-1,t,-6);sh(ta,50,n,c[(c[v>>2]|0)+8>>2]|0,0)|0;sh(ta,61,n,0,0)|0;if((a[f+450>>0]|0)!=2){q=0;break}do if(l){s=c[x>>2]|0;r=10360;p=10360;q=c[f>>2]|0}else{if(a[w>>0]&32){ca=(a[m+51>>0]&3)!=2;q=c[f>>2]|0;s=c[x>>2]|0;r=ca?34920:10360;if(!ca){p=10360;break}}else{r=34920;s=c[x>>2]|0;q=c[f>>2]|0}p=c[m>>2]|0}while(0);c[oa>>2]=s;c[oa+4>>2]=r;c[oa+8>>2]=p;q=qh(q,34896,oa)|0;ca=c[f+8>>2]|0;th(ca,sh(ca,157,c[xa>>2]|0,0,0)|0,q,-1);q=0}else wa=372;while(0);if((wa|0)==372){do if((c[F>>2]|0)==0&(k|0)==1){q=c[c[va+40>>2]>>2]|0;s=c[q+20>>2]|0;if(!s){q=0;p=0;break}if((c[s>>2]|0)!=1){q=0;p=0;break}if((a[c[c[s+4>>2]>>2]>>0]|0)!=-100){q=0;p=0;break}q=c[q+8>>2]|0;if($c(q,18760)|0)if(!($c(q,18768)|0))p=2;else{q=0;p=0;break}else p=1;q=Lr(ua,s,0)|0;if(!q){q=0;break}if(a[ma>>0]|0)break;ca=c[q+4>>2]|0;a[ca+12>>0]=p<<24>>24!=1&1;a[c[ca>>2]>>0]=-102}else{q=0;p=0}while(0);dt(f,va);p=Rs(f,R,y,q,0,p&255,0)|0;if(!p){Jk(ua,q);wa=444;break}at(f,va);if((a[p+36>>0]|0)>0)sh(ta,16,0,c[p+52>>2]|0,0)|0;Ts(p);bt(f,va)}c[sa>>2]=0;ct(f,da,P,16);Ls(f,g,c[g>>2]|0,-1,0,0,h,P,P);Jk(ua,q);o=ta+24|0}q=c[o>>2]|0;p=~P;do if((P|0)<0){o=c[q+112>>2]|0;if(!o)break;c[o+(p<<2)>>2]=c[ta+32>>2]}while(0);c[q+88>>2]=(c[ta+32>>2]|0)+-1}if((a[ra+1>>0]|0)==3)Xs(f,34808);if(c[sa>>2]|0){u=sa+4|0;Xs(f,(c[u>>2]|0)>0?34840:34864);x=c[Q>>2]|0;s=f+8|0;E=c[s>>2]|0;F=ts(E)|0;D=ts(E)|0;n=c[sa>>2]|0;m=a[h>>0]|0;y=m&255;z=h+4|0;A=c[z>>2]|0;v=sa+16|0;t=c[v>>2]|0;if(t){sh(E,17,c[sa+12>>2]|0,t,0)|0;sh(E,16,0,F,0)|0;ca=c[v>>2]|0;t=c[E+24>>2]|0;k=~ca;do if((ca|0)<0){l=c[t+112>>2]|0;if(!l)break;c[l+(k<<2)>>2]=c[E+32>>2]}while(0);c[t+88>>2]=(c[E+32>>2]|0)+-1}B=c[sa+8>>2]|0;q=m<<24>>24==9;k:do if((m&-5)<<24>>24==9){p=x;r=c[h+8>>2]|0;k=0}else{t=f+19|0;k=a[t>>0]|0;do if(k<<24>>24){ca=k+-1<<24>>24;a[t>>0]=ca;l=c[f+((ca&255)<<2)+24>>2]|0;if(!(ca<<24>>24)){k=l;t=c[f+72>>2]|0;break}else{r=k+-2<<24>>24;a[t>>0]=r;p=1;r=c[f+((r&255)<<2)+24>>2]|0;k=l;break k}}else{k=f+72|0;t=(c[k>>2]|0)+1|0;c[k>>2]=t;k=t}while(0);r=t+1|0;c[f+72>>2]=r;p=1}while(0);o=(c[n>>2]|0)-(c[u>>2]|0)|0;w=sa+24|0;if(!(a[w>>0]&1)){t=sh(E,107,B,F,0)|0;et(E,c[g+12>>2]|0,D);l=1;m=B}else{ca=f+72|0;m=(c[ca>>2]|0)+1|0;c[ca>>2]=m;ca=f+68|0;n=c[ca>>2]|0;c[ca>>2]=n+1;if(!(c[v>>2]|0))l=0;else{ca=Kq(f)|0;aa=f+80|0;l=c[aa>>2]|0;c[aa>>2]=l+1;l=sh(ca,44,l,0,0)|0}sh(E,60,n,m,p+1+o|0)|0;if(l){t=c[E+32>>2]|0;if(t>>>0>l>>>0)c[(c[E+4>>2]|0)+(l*20|0)+8>>2]=t;c[(c[E+24>>2]|0)+88>>2]=t+-1}t=sh(E,106,B,F,0)|0;et(E,c[g+12>>2]|0,D);sh(E,100,B,m,n)|0;l=0;m=n}u=t+1|0;if((p|0)>0){t=l+o|0;l=0;do{sh(E,47,m,t+l|0,l+r|0)|0;l=l+1|0}while((l|0)!=(p|0))}do if((y|0)==12|(y|0)==14){sh(E,74,A,k,0)|0;sh(E,75,A,r,k)|0;q=c[E+4>>2]|0;if(!q)break;a[q+(((c[E+32>>2]|0)+-1|0)*20|0)+3>>0]=8}else if((y|0)==11){th(E,sh(E,49,r,1,k)|0,h+1|0,1);$s(f,r,1);sh(E,110,A,k,0)|0}else if((y|0)!=10)if(q){ca=h+8|0;sh(E,35,c[ca>>2]|0,x,0)|0;$s(f,c[ca>>2]|0,x);break}else{sh(E,22,c[z>>2]|0,0,0)|0;break}else{sh(c[s>>2]|0,32,r,A,1)|0;$s(f,r,1)}while(0);if(k){Wr(f,r);Wr(f,k)}p=E+24|0;r=c[p>>2]|0;s=~D;do if((D|0)<0){q=c[r+112>>2]|0;if(!q)break;c[q+(s<<2)>>2]=c[E+32>>2]}while(0);s=E+32|0;c[r+88>>2]=(c[s>>2]|0)+-1;if(!(a[w>>0]&1))sh(E,9,B,u,0)|0;else sh(E,5,B,u,0)|0;o=c[sa+12>>2]|0;if(o)sh(E,18,o,0,0)|0;o=c[p>>2]|0;n=~F;do if((F|0)<0){m=c[o+112>>2]|0;if(!m)break;c[m+(n<<2)>>2]=c[s>>2]}while(0);c[o+88>>2]=(c[s>>2]|0)+-1}l=c[ta+24>>2]|0;m=~na;do if((na|0)<0){k=c[l+112>>2]|0;if(!k)break;c[k+(m<<2)>>2]=c[ta+32>>2]}while(0);c[l+88>>2]=(c[ta+32>>2]|0)+-1;c[xa>>2]=ya;if((a[h>>0]|0)!=9){k=0;break}Js(f,R,Q);k=0}else wa=444;while(0);if((wa|0)==444){c[xa>>2]=ya;k=1}ig(ua,c[va+28>>2]|0);ig(ua,c[va+40>>2]|0)}else k=1;while(0);i=za;return k|0}function fr(a,b,d,e,f,g,h,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();m=q;o=c[a>>2]|0;if((b|0)==0?(l=(h|0)!=0,l|(k|0)!=0):0){c[m>>2]=l?34792:34800;ph(a,34752,m);p=9}else{b=lr(o,b,d,e)|0;if((b|0)!=0?(n=c[b>>2]|0,(n|0)!=0):0){l=n+-1|0;if(c[f+4>>2]|0)c[b+(l*72|0)+20>>2]=Sq(o,f)|0;c[b+(l*72|0)+28>>2]=g;c[b+(l*72|0)+52>>2]=h;c[b+(l*72|0)+56>>2]=k}else p=9}if((p|0)==9){Ck(o,h);Dk(o,k);Ik(o,g,1);b=0}i=q;return b|0}function gr(d,e,f,g,h,k,l,m,n,o){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+80|0;if((i|0)>=(j|0))ba();q=v+72|0;u=v;t=c[d>>2]|0;p=ih(t,72,0)|0;if(!p){r=u+0|0;s=r+72|0;do{c[r>>2]=0;r=r+4|0}while((r|0)<(s|0));p=u}else{r=p+0|0;s=r+72|0;do{a[r>>0]=0;r=r+1|0}while((r|0)<(s|0))}if(!e){c[q>>2]=0;c[q+4>>2]=0;e=hr(d,0,jr(t,116,q,0)|0)|0}c[p>>2]=e;if(!f){f=ih(t,80,0)|0;if(f){r=f+0|0;s=r+80|0;do{a[r>>0]=0;r=r+1|0}while((r|0)<(s|0))}}c[p+32>>2]=f;c[p+36>>2]=g;c[p+40>>2]=h;c[p+44>>2]=k;c[p+48>>2]=l;b[p+6>>1]=m;a[p+4>>0]=119;c[p+60>>2]=n;c[p+64>>2]=o;c[p+16>>2]=-1;c[p+20>>2]=-1;if(a[t+65>>0]|0){Ik(t,p,(p|0)!=(u|0)&1);p=0}i=v;return p|0}function hr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;if(!d){d=ih(g,8,0)|0;if(d){b=d;f=b;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;b=b+4|0;a[b>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;b=ih(g,20,0)|0;c[d+4>>2]=b;if(!b)f=8;else f=7}else{d=0;f=8}}else{b=c[d>>2]|0;if(!(b+-1&b)){f=d+4|0;b=no(g,c[f>>2]|0,b*40|0,0)|0;if(!b)f=8;else{c[f>>2]=b;f=7}}else f=7}if((f|0)==7){b=c[d>>2]|0;c[d>>2]=b+1;b=(c[d+4>>2]|0)+(b*20|0)|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b>>2]=e}else if((f|0)==8){Ck(g,e);Jk(g,d);d=0}return d|0}function ir(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;do if(d){j=(c[d>>2]|0)+-1|0;g=c[d+4>>2]|0;h=c[e>>2]|0;d=c[e+4>>2]|0;if((h|0)!=0?(e=c[b>>2]|0,i=fw(d|0,0,1,0)|0,i=ih(e,i,C)|0,(i|0)!=0):0){gw(i|0,h|0,d|0)|0;a[i+d>>0]=0;c[g+(j*20|0)+4>>2]=i;if(!f)break;ho(i);break}c[g+(j*20|0)+4>>2]=0}while(0);return}function jr(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();m=q;c[m>>2]=0;k=(f|0)!=0;do if(k){if(((e|0)==132?(h=c[f>>2]|0,(h|0)!=0):0)?(zn(h,m)|0)!=0:0){o=0;break}o=(c[f+4>>2]|0)+1|0}else o=0;while(0);l=o+48|0;n=ih(d,l,0)|0;if(n){bw(n|0,0,l|0)|0;a[n>>0]=e;b[n+34>>1]=-1;do if(k){if(!o){g=n+4|0;c[g>>2]=c[g>>2]|1024;c[n+8>>2]=c[m>>2];break}h=n+48|0;l=n+8|0;c[l>>2]=h;k=f+4|0;d=c[k>>2]|0;if(!d)h=48;else{gw(h|0,c[f>>2]|0,d|0)|0;h=(c[k>>2]|0)+48|0}a[n+h>>0]=0;if(((g|0)!=0&(o|0)>2?(g=a[c[f>>2]>>0]|0,p=g<<24>>24==34,g<<24>>24==34|g<<24>>24==39|g<<24>>24==91|g<<24>>24==96):0)?(ho(c[l>>2]|0),p):0){g=n+4|0;c[g>>2]=c[g>>2]|64}}while(0);c[n+24>>2]=1}i=q;return n|0}function kr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;do if((d|0)!=0?(f=c[d>>2]|0,(f|0)>0):0){f=f+-1|0;if((c[e+4>>2]|0)==1?(c[e>>2]|0)==0:0){f=d+(f*72|0)+45|0;a[f>>0]=a[f>>0]|1;break}c[d+(f*72|0)+72>>2]=Sq(c[b>>2]|0,e)|0}while(0);return}function lr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;if(!d){d=ih(b,80,0)|0;if(!d)d=0;else{h=d+0|0;g=h+80|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(g|0));c[d+4>>2]=1;h=4}}else h=4;do if((h|0)==4){d=Bs(b,d,1,c[d>>2]|0)|0;if(a[b+65>>0]|0){zo(b,d);d=0;break}h=(c[d>>2]|0)+-1|0;if(!f)g=0;else g=(c[f>>2]|0)==0?0:f;f=(g|0)==0;c[d+(h*72|0)+16>>2]=Sq(b,f?e:g)|0;c[d+(h*72|0)+12>>2]=Sq(b,f?0:e)|0}while(0);return d|0}function mr(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;if((i|0)>=(j|0))ba();o=q;m=q+16|0;c[m>>2]=b;c[m+4>>2]=e;c[m+8>>2]=f;l=b;n=1;g=0;a:while(1){if(!l)break;k=c[l+4>>2]|0;h=0;while(1){if((k|0)==(d[34625+(h*3|0)>>0]|0|0)?(Bc(c[l>>2]|0,34584+(d[34624+(h*3|0)>>0]|0)|0,k)|0)==0:0)break;h=h+1|0;if((h|0)>=7){p=10;break a}}g=d[34626+(h*3|0)>>0]|0|g;if((h|0)>6){p=10;break}if((n|0)>=3)break;l=c[m+(n<<2)>>2]|0;n=n+1|0}if((p|0)==10)g=g|64;if((g&33|0)!=33&(g&64|0)==0){if(!((g&32|0)==0|(g&24|0)==8)){ph(a,34696,o);g=1}}else{c[o>>2]=b;c[o+4>>2]=e;c[o+8>>2]=(f|0)==0?20377|0:20376;c[o+12>>2]=f;ph(a,34648,o);g=1}i=q;return g|0}function nr(e,f,g){e=e|0;f=f|0;g=g|0;var h=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,O=0,P=0,Q=0;Q=i;i=i+48|0;if((i|0)>=(j|0))ba();N=Q+36|0;O=Q+32|0;o=Q;c[N>>2]=0;c[O>>2]=0;P=c[e>>2]|0;if(((((c[e+64>>2]|0)==0?(a[P+65>>0]|0)==0:0)?(E=Fr(e,f)|0,(E|0)!=0):0)?(D=ft(e,E,109,0,0)|0,M=(c[E+12>>2]|0)!=0,(dr(e,E)|0)==0):0)?(q=(D|0)!=0,(gt(e,E,q&1)|0)==0):0){l=c[E+68>>2]|0;a:do if(l){k=c[P+20>>2]|0;if((k|0)>0){h=c[P+16>>2]|0;n=0;while(1){m=n+1|0;if((c[h+(n<<4)+12>>2]|0)==(l|0)){m=n;break a}if((m|0)<(k|0))n=m;else break}}else m=0}else m=-1e6;while(0);h=Oq(e,9,c[E>>2]|0,0,c[(c[P+16>>2]|0)+(m<<4)>>2]|0)|0;if((h|0)!=1){p=e+68|0;z=c[p>>2]|0;r=z+1|0;c[p>>2]=r;c[f+48>>2]=z;F=E+8|0;l=c[F>>2]|0;if(!l)n=0;else{k=r;n=0;do{k=k+1|0;c[p>>2]=k;n=n+1|0;l=c[l+20>>2]|0}while((l|0)!=0)}if(M){K=e+492|0;L=c[K>>2]|0;c[K>>2]=c[E>>2];K=e}else{K=0;L=0}I=Kq(e)|0;b:do if(I){J=e+18|0;if(!(a[J>>0]|0)){B=I+88|0;b[B>>1]=b[B>>1]|4}A=e+408|0;B=c[A>>2]|0;B=(B|0)==0?e:B;wr(e,m);y=B+328|0;c[y>>2]=c[y>>2]|1<>0]=d[B>>0]|1;if(M){ht(e,E,g,z);c[O>>2]=z;c[N>>2]=z};c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o+16>>2]=0;c[o+20>>2]=0;c[o+24>>2]=0;c[o+28>>2]=0;c[o>>2]=e;c[o+4>>2]=f;if(!(hs(o,g)|0)){G=P+24|0;if(!(c[G>>2]&128))H=-1;else{B=e+72|0;H=(c[B>>2]|0)+1|0;c[B>>2]=H;sh(I,25,0,H,0)|0}B=E+44|0;do if((!((g|0)!=0|(h|0)!=0|q)?(a[B>>0]&16)==0:0)?(it(e,E,0,0)|0)==0:0){l=E+32|0;cs(e,m,c[l>>2]|0,1,c[E>>2]|0);if(!(a[B>>0]&32)){E=c[E>>2]|0;th(I,sh(I,118,c[l>>2]|0,m,H)|0,E,-2)}h=c[F>>2]|0;if(!h){h=0;break}do{sh(I,118,c[h+40>>2]|0,m,0)|0;h=c[h+20>>2]|0}while((h|0)!=0);h=0}else C=31;while(0);do if((C|0)==31){if(!(a[B>>0]&32)){s=e+72|0;w=(c[s>>2]|0)+1|0;c[s>>2]=w;sh(I,28,0,w,0)|0;s=0;x=0;h=0;u=1;m=0}else{m=c[F>>2]|0;c:do if(!m)m=0;else while(1){if((a[m+51>>0]&3)==2)break c;m=c[m+20>>2]|0;if(!m){m=0;break}}while(0);u=b[m+46>>1]|0;x=e+72|0;h=c[x>>2]|0;s=u<<16>>16;c[x>>2]=h+s;x=c[p>>2]|0;c[p>>2]=x+1;s=sh(I,57,x,s,0)|0;w=c[e+8>>2]|0;th(w,-1,ds(e,m)|0,-6);h=h+1|0;w=0}t=Rs(e,f,g,0,0,12,r)|0;if(!t){h=0;break b}r=t+60|0;q=c[r>>2]|0;r=c[r+4>>2]|0;v=a[t+38>>0]|0;if(c[G>>2]&128)sh(I,37,H,1,0)|0;y=(m|0)!=0;do if(y){if(u<<16>>16<=0){k=h;break}o=m+4|0;l=u<<16>>16;p=0;do{jt(I,E,z,b[(c[o>>2]|0)+(p<<1)>>1]|0,p+h|0);p=p+1|0}while((p|0)!=(l|0));k=h}else{l=e+72|0;k=_s(e,E,-1,z,(c[l>>2]|0)+1|0,0)|0;if((k|0)<=(c[l>>2]|0))break;c[l>>2]=k}while(0);o=v<<24>>24!=0;do if(!o)if(y){l=e+72|0;k=(c[l>>2]|0)+1|0;c[l>>2]=k;l=u<<16>>16;p=kt(I,m)|0;th(I,sh(I,49,h,l,k)|0,p,l);sh(I,110,x,k,0)|0;h=0;l=0;p=0;C=59;break}else{sh(I,128,w,k,0)|0;Ts(t);h=0;r=0;m=1;break}else{h=n+2|0;h=ih(P,h,((h|0)<0)<<31>>31)|0;if(!h){Ts(t);h=0;break b}C=n+1|0;bw(h|0,1,C|0)|0;a[h+C>>0]=0;if((q|0)>-1)a[h+(q-z)>>0]=0;if((r|0)>-1)a[h+(r-z)>>0]=0;if(s)vh(I,s);l=sh(I,16,0,0,0)|0;p=u;C=59}while(0);do if((C|0)==59){Ts(t);if(!o){r=0;m=p;break}m=ts(I)|0;sh(I,16,0,m,0)|0;n=c[I+32>>2]|0;if(n>>>0>l>>>0)c[(c[I+4>>2]|0)+(l*20|0)+8>>2]=n;c[(c[I+24>>2]|0)+88>>2]=n+-1;r=m;m=p}while(0);if(!M)lt(e,E,55,z,h,N,O)|0;do if(!o)if(y){l=sh(I,108,x,0,0)|0;sh(I,101,x,k,0)|0;break}else{l=sh(I,129,w,0,k)|0;break}else{n=c[N>>2]|0;if(!(a[h+(n-z)>>0]|0)){l=0;break}th(I,sh(I,68,n,r,k)|0,m<<16>>16,-14);l=0}while(0);if(!(a[B>>0]&16))nt(e,E,D,c[N>>2]|0,c[O>>2]|0,k,m,(a[J>>0]|0)==0&1,10,v);else{n=c[E+60>>2]|0;d:do if(!n)n=0;else while(1){if((c[n>>2]|0)==(P|0))break d;n=c[n+24>>2]|0;if(!n){n=0;break}}while(0);mt(e,E);th(I,sh(I,15,0,1,k)|0,n,-10);n=c[I+4>>2]|0;if(n)a[n+(((c[I+32>>2]|0)+-1|0)*20|0)+3>>0]=2;E=c[A>>2]|0;a[((E|0)==0?e:E)+21>>0]=1}do if(!o)if(y){sh(I,9,x,l+1|0,0)|0;n=c[I+32>>2]|0;if(n>>>0>l>>>0)c[(c[I+4>>2]|0)+(l*20|0)+8>>2]=n;c[(c[I+24>>2]|0)+88>>2]=n+-1;break}else{sh(I,16,0,l,0)|0;n=c[I+32>>2]|0;if(n>>>0>l>>>0)c[(c[I+4>>2]|0)+(l*20|0)+8>>2]=n;c[(c[I+24>>2]|0)+88>>2]=n+-1;break}else{m=c[I+24>>2]|0;l=~r;do if((r|0)<0){n=c[m+112>>2]|0;if(!n)break;c[n+(l<<2)>>2]=c[I+32>>2]}while(0);c[m+88>>2]=(c[I+32>>2]|0)+-1}while(0);if(M)break;if(a[B>>0]&16)break;if(!y)sh(I,61,c[N>>2]|0,0,0)|0;k=c[F>>2]|0;if(!k)break;else l=0;while(1){sh(I,61,(c[O>>2]|0)+l|0,0,0)|0;k=c[k+20>>2]|0;if(!k)break;else l=l+1|0}}while(0);if((a[J>>0]|0)==0?(c[e+412>>2]|0)==0:0)ot(e);if((c[G>>2]&128|0)!=0?(a[J>>0]|0)==0:0){if(c[e+412>>2]|0)break;sh(I,35,H,1,0)|0;eq(I,1);if(a[(c[I>>2]|0)+65>>0]|0)break;Tg(c[I+16>>2]|0,34568,-1,1,0)|0}}else h=0}else h=0;while(0);if(K)c[K+492>>2]=L}else h=0}else h=0;zo(P,f);Ck(P,g);ig(P,h);i=Q;return}function or(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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,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,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=i;i=i+64|0;if((i|0)>=(j|0))ba();Q=ja;V=ja+32|0;ca=ja+24|0;ea=ja+20|0;ia=c[e>>2]|0;a:do if(((c[e+64>>2]|0)==0?(a[ia+65>>0]|0)==0:0)?(ha=Fr(e,f)|0,(ha|0)!=0):0){m=c[e>>2]|0;o=c[ha+68>>2]|0;b:do if(o){p=c[m+20>>2]|0;if((p|0)>0){m=c[m+16>>2]|0;n=0;while(1){l=n+1|0;if((c[m+(n<<4)+12>>2]|0)==(o|0))break b;if((l|0)<(p|0))n=l;else{n=l;break}}}else n=0}else n=-1e6;while(0);da=ft(e,ha,110,g,ca)|0;$=(c[ha+12>>2]|0)!=0;if((dr(e,ha)|0)==0?(gt(e,ha,c[ca>>2]|0)|0)==0:0){X=e+68|0;Y=c[X>>2]|0;fa=Y+1|0;c[X>>2]=fa;o=f+48|0;c[o>>2]=Y;H=ha+44|0;r=c[ha+8>>2]|0;c:do if(!(a[H>>0]&32)){p=0;_=16}else{if(!r){t=ha+8|0;p=0;q=Y;s=0;break}else p=r;while(1){if((a[p+51>>0]&3)==2){_=16;break c}p=c[p+20>>2]|0;if(!p){p=0;_=16;break}}}while(0);if((_|0)==16){t=ha+8|0;if(!r){q=Y;s=0}else{l=(p|0)!=0;m=fa;q=Y;s=0;do{if((a[r+51>>0]&3)==2&l){c[o>>2]=m;q=m}m=m+1|0;c[X>>2]=m;s=s+1|0;r=c[r+20>>2]|0}while((r|0)!=0)}}ga=ha+38|0;l=ih(ia,s+2+((b[ga>>1]|0)+s<<2)|0,0)|0;if(l){F=b[ga>>1]|0;Z=l+(F<<2)|0;aa=l+(F+s<<2)|0;W=s+1|0;bw(aa|0,1,W|0)|0;a[aa+W>>0]=0;s=b[ga>>1]|0;if(s<<16>>16>0)bw(l|0,-1,(s<<16>>16>1?s<<16>>16<<2:4)|0)|0;c[V+0>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;c[V+12>>2]=0;c[V+16>>2]=0;c[V+20>>2]=0;c[V+24>>2]=0;c[V+28>>2]=0;c[V>>2]=e;c[V+4>>2]=f;d:do if((c[g>>2]|0)>0){B=g+4|0;A=ha+4|0;z=ia+16|0;C=(p|0)==0;D=ha+36|0;v=0;u=0;E=0;m=0;while(1){if(hs(V,c[(c[B>>2]|0)+(E*20|0)>>2]|0)|0)break a;x=b[ga>>1]|0;e:do if(x<<16>>16>0){s=c[A>>2]|0;y=c[B>>2]|0;o=c[y+(E*20|0)+4>>2]|0;r=0;while(1){w=r+1|0;if(!($c(c[s+(r*24|0)>>2]|0,o)|0))break;if((w|0)<(x<<16>>16|0))r=w;else{r=w;o=m;break e}}if((r|0)!=(b[D>>1]|0)){if(!C)v=(a[s+(r*24|0)+23>>0]&1)==0?v:1}else{u=1;m=c[y+(E*20|0)>>2]|0}c[l+(r<<2)>>2]=E;o=m}else{r=0;o=m}while(0);if((r|0)<(x<<16>>16|0)){m=c[ha>>2]|0;if((r|0)<0)s=12944;else s=c[(c[A>>2]|0)+(r*24|0)>>2]|0}else{o=c[B>>2]|0;m=c[o+(E*20|0)+4>>2]|0;if(!C)break;if(!(Xh(m)|0))break;m=c[ha>>2]|0;s=12944;u=1;r=-1;o=c[o+(E*20|0)>>2]|0}m=Oq(e,23,m,s,c[(c[z>>2]|0)+(n<<4)>>2]|0)|0;if((m|0)==2)c[l+(r<<2)>>2]=-1;else if((m|0)==1)break a;E=E+1|0;if((E|0)>=(c[g>>2]|0)){O=o;break d}else m=o}c[Q>>2]=m;ph(e,34496,Q);a[e+17>>0]=1;break a}else{v=0;u=0;O=0}while(0);U=(v&255)+(u&255)|0;R=U&255;z=f+64|0;c[z>>2]=0;c[z+4>>2]=0;U=U&255;z=it(e,ha,l,U)|0;m=c[t>>2]|0;if(m){w=(z|U|0)==0;x=e+72|0;y=0;while(1){f:do if(w?!((c[m+36>>2]|0)!=0|(m|0)==(p|0)):0){o=b[m+46>>1]|0;if(!(o<<16>>16))_=56;else{r=c[m+4>>2]|0;s=0;while(1){if((c[l+(b[r+(s<<1)>>1]<<2)>>2]|0)>-1){_=54;break f}s=s+1|0;if((s|0)>=(o&65535|0)){_=56;break}}}}else _=54;while(0);if((_|0)==54){_=0;o=(c[x>>2]|0)+1|0;c[x>>2]=o;if(!o)_=56;else r=y+1|0}if((_|0)==56){_=0;r=y+1|0;a[aa+r>>0]=0;o=0}c[l+(y+F<<2)>>2]=o;m=c[m+20>>2]|0;if(!m)break;else y=r}}S=Kq(e)|0;if(S){T=e+18|0;if(!(a[T>>0]|0)){P=S+88|0;b[P>>1]=b[P>>1]|4}E=e+408|0;P=c[E>>2]|0;P=(P|0)==0?e:P;wr(e,n);N=P+328|0;c[N>>2]=c[N>>2]|1<>0]=d[P>>0]|1;if(a[H>>0]&16){u=c[e+8>>2]|0;v=c[e>>2]|0;m=c[ha+60>>2]|0;g:do if(!m)m=0;else while(1){if((c[m>>2]|0)==(v|0))break g;m=c[m+24>>2]|0;if(!m){m=0;break}}while(0);n=hr(e,0,pt(v,27,34536)|0)|0;t=(O|0)!=0;if(t)n=hr(e,n,Ir(v,O,0,0)|0)|0;if((b[ga>>1]|0)>0){o=g+4|0;q=ha+4|0;r=0;do{p=c[l+(r<<2)>>2]|0;if((p|0)>-1)p=Ir(v,c[(c[o>>2]|0)+(p*20|0)>>2]|0,0,0)|0;else p=pt(v,27,c[(c[q>>2]|0)+(r*24|0)>>2]|0)|0;n=hr(e,n,p)|0;r=r+1|0}while((r|0)<(b[ga>>1]|0))}q=gr(e,n,f,h,0,0,0,0,0,0)|0;s=c[X>>2]|0;c[X>>2]=s+1;f=t&1;sh(u,57,s,(b[ga>>1]|0)+(t?2:1)|0,0)|0;r=u+4|0;h=c[r>>2]|0;if(h)a[h+(((c[u+32>>2]|0)+-1|0)*20|0)+3>>0]=8;a[Q>>0]=14;c[Q+4>>2]=s;a[Q+1>>0]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;er(e,q,Q)|0;h=e+72|0;p=c[h>>2]|0;n=p+1|0;aa=p+2|0;c[h>>2]=(b[ga>>1]|0)+aa;h=sh(u,108,s,0,0)|0;sh(u,47,s,0,n)|0;sh(u,47,s,f,aa)|0;if((b[ga>>1]|0)>0){p=p+3|0;o=0;do{aa=o;o=o+1|0;sh(u,47,s,o+f|0,p+aa|0)|0}while((o|0)<(b[ga>>1]|0))}mt(e,ha);th(u,sh(u,15,0,(b[ga>>1]|0)+2|0,n)|0,m,-10);m=c[r>>2]|0;if(!m)m=u+32|0;else{aa=u+32|0;a[m+(((c[aa>>2]|0)+-1|0)*20|0)+3>>0]=(k|0)==10?2:k&255;m=aa}aa=c[E>>2]|0;a[((aa|0)==0?e:aa)+21>>0]=1;sh(u,9,s,h+1|0,0)|0;m=c[m>>2]|0;if(m>>>0>h>>>0)c[(c[r>>2]|0)+(h*20|0)+8>>2]=m;c[(c[u+24>>2]|0)+88>>2]=m+-1;sh(u,61,s,0,0)|0;Ik(v,q,1);h=0;f=0;break}E=e+72|0;m=c[E>>2]|0;D=m+1|0;N=m+2|0;c[E>>2]=N;F=v<<24>>24!=0;G=(da|0)!=0;M=(z|0)!=0;if(F|G|M){n=(b[ga>>1]|0)+N|0;c[E>>2]=n;I=m+3|0}else{n=N;I=0}K=(U|0)!=0;if(K|G|M){L=n+1|0;c[E>>2]=L;n=L}else L=N;J=n+1|0;c[E>>2]=(b[ga>>1]|0)+n;if($){P=e+492|0;Q=c[P>>2]|0;c[P>>2]=c[ha>>2];ht(e,ha,h,q);P=e}else{P=0;Q=0}do if(!(hs(V,h)|0)){if(!(a[H>>0]&32)){sh(S,28,0,D,N)|0;v=Rs(e,f,h,0,0,4,fa)|0;if(!v)break;x=v+60|0;m=c[x>>2]|0;x=c[x+4>>2]|0;y=a[v+38>>0]|0;sh(S,103,q,N,0)|0;if(!(y<<24>>24))sh(S,128,D,N,0)|0;Ts(v);A=0;z=0;w=y&255;B=0}else{y=b[p+46>>1]|0;r=c[E>>2]|0;v=r+1|0;z=y<<16>>16;r=z+1+r|0;c[E>>2]=r;A=c[X>>2]|0;c[X>>2]=A+1;sh(S,28,0,v,0)|0;n=sh(S,57,A,z,0)|0;s=c[e+8>>2]|0;th(s,-1,ds(e,p)|0,-6);s=Rs(e,f,h,0,0,4,fa)|0;if(!s)break;x=s+60|0;m=c[x>>2]|0;x=c[x+4>>2]|0;o=a[s+38>>0]|0;B=o&255;if(y<<16>>16>0){y=p+4|0;w=0;do{jt(S,ha,q,b[(c[y>>2]|0)+(w<<1)>>1]|0,w+v|0);w=w+1|0}while((w|0)!=(z|0))}if(!(o<<24>>24)){y=kt(S,p)|0;th(S,sh(S,49,v,z,r)|0,y,z);sh(S,110,A,r,0)|0;y=0;v=r}else{vh(S,n);y=z}Ts(s);z=y;w=B;B=v}H=ia+24|0;do if(!(c[H>>2]&128))s=0;else{if(c[e+412>>2]|0){s=0;break}s=(c[E>>2]|0)+1|0;c[E>>2]=s;sh(S,25,0,s,0)|0}while(0);r=ts(S)|0;if(!$){h:do if((k|0)==5)bw(aa|0,1,W|0)|0;else{y=c[t>>2]|0;if(!y)break;while(1){if((a[y+50>>0]|0)==5)break;y=c[y+20>>2]|0;if(!y)break h}bw(aa|0,1,W|0)|0}while(0);do if(w){if((m|0)>-1)a[aa+(m-Y)>>0]=0;if((x|0)<=-1)break;a[aa+(x-Y)>>0]=0}while(0);lt(e,ha,55,Y,aa,0,0)|0}E=(w|0)!=0;do if(!E)if(!p){D=sh(S,129,D,r,N)|0;sh(S,70,q,D,N)|0;C=0;break}else{D=ts(S)|0;sh(S,108,A,r,0)|0;C=sh(S,101,A,B,0)|0;th(S,sh(S,68,q,D,B)|0,0,-14);break}else{if(!((a[aa+(q-Y)>>0]|0)==0|$))th(S,sh(S,68,q,r,B)|0,z,-14);sh(S,76,(p|0)!=0?B:N,r,0)|0;C=0;D=r}while(0);u=u<<24>>24==0;if(!u){Nq(e,O,L);sh(S,38,L,0,0)|0}do if(F|M|G){if(M)v=qt(e,ha)|0;else v=0;y=rt(e,da,g,0,3,ha,k)|0|v;if((b[ga>>1]|0)>0){x=(y|0)==-1;w=ha+4|0;v=0;do{do if(x)_=138;else{if((v|0)<32?(1<>2]|0)+(v*24|0)+23>>0]&1){_=138;break}sh(S,28,0,v+I|0,0)|0}while(0);if((_|0)==138){_=0;jt(S,ha,q,v,v+I|0)}v=v+1|0}while((v|0)<(b[ga>>1]|0))}if(!(u&(p|0)==0))break;sh(S,33,N,L,0)|0}while(0);v=rt(e,da,g,1,1,ha,k)|0;if((b[ga>>1]|0)>0){u=ha+36|0;m=g+4|0;o=0;do{i:do if((o|0)==(b[u>>1]|0))sh(S,28,0,o+J|0,0)|0;else{n=c[l+(o<<2)>>2]|0;if((n|0)>-1){Nq(e,c[(c[m>>2]|0)+(n*20|0)>>2]|0,o+J|0);break}do if(!((c[ca>>2]&1|0)==0|(o|0)>31)){if(1<>1]|0))}do if(c[ca>>2]&1){st(S,ha,J);tt(e,da,110,g,1,ha,N,k,D);if(!p)sh(S,70,q,D,N)|0;else th(S,sh(S,68,q,D,B)|0,z,-14);m=b[ga>>1]|0;if(m<<16>>16<=0)break;u=ha+36|0;v=0;do{do if((c[l+(v<<2)>>2]|0)<0){if((v|0)==(b[u>>1]|0))break;jt(S,ha,q,v,v+J|0);m=b[ga>>1]|0}while(0);v=v+1|0}while((v|0)<(m<<16>>16|0))}while(0);do if(!$){c[ea>>2]=0;ut(e,ha,Z,q,fa,L,N,R,k&255,D,ea);if(M)vt(e,ha,N,0,l,U);m=(c[ea>>2]|U|0)==0;do if(!m)if(!p){n=sh(S,70,q,0,N)|0;break}else{n=sh(S,68,q,0,B)|0;th(S,n,z,-14);break}else n=0;while(0);wt(e,ha,q,fa,Z);if(M|(K|(p|0)!=0))sh(S,95,q,0,0)|0;if(!m){m=c[S+32>>2]|0;if(m>>>0>n>>>0)c[(c[S+4>>2]|0)+(n*20|0)+8>>2]=m;c[(c[S+24>>2]|0)+88>>2]=m+-1}if(M){vt(e,ha,0,L,l,U);xt(e,ha,q,fa,L,Z,1,0,0);yt(e,ha,g,N,l,U);break}else{xt(e,ha,q,fa,L,Z,1,0,0);break}}while(0);do if(c[H>>2]&128){if(c[e+412>>2]|0)break;sh(S,37,s,1,0)|0}while(0);tt(e,da,110,g,2,ha,N,k,D);do if(!E){if(!p){sh(S,16,0,D,0)|0;break}o=c[S+24>>2]|0;n=~D;do if((D|0)<0){p=c[o+112>>2]|0;if(!p)break;c[p+(n<<2)>>2]=c[S+32>>2]}while(0);c[o+88>>2]=(c[S+32>>2]|0)+-1;sh(S,9,A,C,0)|0}while(0);o=c[S+24>>2]|0;n=~r;do if((r|0)<0){p=c[o+112>>2]|0;if(!p)break;c[p+(n<<2)>>2]=c[S+32>>2]}while(0);c[o+88>>2]=(c[S+32>>2]|0)+-1;n=c[t>>2]|0;if(n){o=0;do{p=o;o=o+1|0;if(a[aa+o>>0]|0)sh(S,61,p+fa|0,0,0)|0;n=c[n+20>>2]|0}while((n|0)!=0)}if((q|0)<(fa|0))sh(S,61,q,0,0)|0;do if(!(a[T>>0]|0)){if(c[e+412>>2]|0)break;ot(e)}while(0);if(!(c[H>>2]&128))break;if(c[e+412>>2]|0)break;if(a[T>>0]|0)break;sh(S,35,s,1,0)|0;eq(S,1);if(a[(c[S>>2]|0)+65>>0]|0)break;Tg(c[S+16>>2]|0,34520,-1,1,0)|0}while(0);if(P)c[P+492>>2]=Q}}}else l=0}else l=0;while(0);ig(ia,l);zo(ia,f);Jk(ia,g);Ck(ia,h);i=ja;return}function pr(e,f,g,h,k){e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var 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,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,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=i;i=i+96|0;if((i|0)>=(j|0))ba();$=la;ga=la+92|0;ia=la+88|0;I=la+68|0;V=la+64|0;L=la+32|0;_=la+28|0;c[ga>>2]=0;c[ia>>2]=0;ka=c[e>>2]|0;c[I+0>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;c[I+16>>2]=0;a:do if((c[e+64>>2]|0)==0?(K=ka+65|0,(a[K>>0]|0)==0):0){if(g)if((b[g+6>>1]&128)!=0?(c[g+52>>2]|0)==0:0){l=c[g>>2]|0;c[g>>2]=0;Ik(ka,g,1);g=0}else l=0;else{g=0;l=0}if((c[f+16>>2]|0)!=0?(ha=Fr(e,f)|0,(ha|0)!=0):0){r=c[ha+68>>2]|0;b:do if(r){q=c[ka+20>>2]|0;if((q|0)>0){p=c[ka+16>>2]|0;n=0;while(1){o=n+1|0;if((c[p+(n<<4)+12>>2]|0)==(r|0)){o=n;break b}if((o|0)<(q|0))n=o;else break}}else o=0}else o=-1e6;while(0);if((((Oq(e,18,c[ha>>2]|0,0,c[(c[ka+16>>2]|0)+(o<<4)>>2]|0)|0)==0?(da=ha+44|0,W=(d[da>>0]|0)>>>5&1,ca=ft(e,ha,108,0,V)|0,ea=(c[ha+12>>2]|0)!=0,(dr(e,ha)|0)==0):0)?(gt(e,ha,c[V>>2]|0)|0)==0:0)?(ja=Kq(e)|0,(ja|0)!=0):0){fa=e+18|0;if(!(a[fa>>0]|0)){aa=ja+88|0;b[aa>>1]=b[aa>>1]|4}aa=(g|0)!=0;Z=e+408|0;Y=c[Z>>2]|0;Y=(Y|0)==0?e:Y;wr(e,o);U=Y+328|0;c[U>>2]=c[U>>2]|1<>0]=d[Y>>0]|(aa|(ca|0)!=0)&1;Y=(h|0)==0;c:do if((((!((g|0)==0|Y^1)?(c[e+532>>2]|0)==0:0)?(c[g+68>>2]|0)==0:0)?(ws(e,ha)|0)==0:0)?(a[da>>0]&16)==0:0){if((k|0)==10){if((b[ha+36>>1]|0)>-1)r=d[ha+45>>0]|0;else r=10;v=(r|0)==10?2:r}else v=k;q=c[g+32>>2]|0;if((c[q>>2]|0)==1){if(c[q+28>>2]|0){X=117;break}if(c[g+36>>2]|0){X=117;break}if(c[g+48>>2]|0){X=117;break}if(c[g+40>>2]|0){X=117;break}if(c[g+60>>2]|0){X=117;break}if(c[g+52>>2]|0){X=117;break}if(b[g+6>>1]&1){X=117;break}r=c[g>>2]|0;if((c[r>>2]|0)!=1){X=117;break}if((a[c[c[r+4>>2]>>2]>>0]|0)!=116){X=117;break}u=Qr(e,0,q+8|0)|0;if((u|0)==0|(u|0)==(ha|0)){X=117;break}y=u+44|0;U=d[y>>0]|0;if(!((U&16|0)==0?(((d[da>>0]|0)>>>5&1^1)&255|0)==(U>>>5&1^1|0):0)){X=117;break}if(c[u+12>>2]|0){X=117;break}s=b[ha+38>>1]|0;if(s<<16>>16!=(b[u+38>>1]|0)){X=117;break}x=ha+36|0;if((b[x>>1]|0)!=(b[u+36>>1]|0)){X=117;break}if(s<<16>>16>0){n=c[ha+4>>2]|0;m=c[u+4>>2]|0;t=0;do{if((a[n+(t*24|0)+21>>0]|0)!=(a[m+(t*24|0)+21>>0]|0)){X=117;break c}r=c[n+(t*24|0)+16>>2]|0;q=c[m+(t*24|0)+16>>2]|0;p=(q|0)==0;if(!r){if(!p){X=117;break c}}else{if(p){X=117;break c}if($c(r,q)|0){X=117;break c}}if((a[n+(t*24|0)+20>>0]|0)!=0?(a[m+(t*24|0)+20>>0]|0)==0:0){X=117;break c}do if((t|0)>0){r=c[n+(t*24|0)+8>>2]|0;q=(r|0)==0;p=c[m+(t*24|0)+8>>2]|0;if(q^(p|0)==0){X=117;break c}if(q)break;if(Wv(r,p)|0){X=117;break c}}while(0);t=t+1|0}while((t|0)<(s<<16>>16|0))}B=ha+8|0;r=c[B>>2]|0;if(!r)q=0;else{s=c[u+8>>2]|0;if(!s){X=117;break}else q=0;do{q=(a[r+50>>0]|0)==0?q:1;p=s;while(1){if(zt(r,p)|0)break;p=c[p+20>>2]|0;if(!p){X=117;break c}}if(!p){X=117;break c}r=c[r+20>>2]|0}while((r|0)!=0)}r=c[ha+24>>2]|0;if((r|0)!=0?(Ps(c[u+24>>2]|0,r,-1)|0)!=0:0){X=117;break}p=c[e>>2]|0;r=c[p+24>>2]|0;if(!(r&524288)){if(r&128){X=117;break}}else if(!((c[ha+16>>2]|0)==0&(r&128|0)==0)){X=117;break}m=c[u+68>>2]|0;d:do if(!m)p=-1e6;else{s=c[p+20>>2]|0;if((s|0)<=0){p=0;break}r=c[p+16>>2]|0;n=0;while(1){p=n+1|0;if((c[r+(n<<4)+12>>2]|0)==(m|0)){p=n;break d}if((p|0)<(s|0))n=p;else break}}while(0);A=Kq(e)|0;wr(e,p);w=e+68|0;C=c[w>>2]|0;z=C+1|0;c[w>>2]=C+2;w=At(e,o,ha)|0;s=e+19|0;n=a[s>>0]|0;do if(!(n<<24>>24)){X=e+72|0;r=(c[X>>2]|0)+1|0;c[X>>2]=r;X=78}else{U=n+-1<<24>>24;a[s>>0]=U;r=c[e+((U&255)<<2)+24>>2]|0;if(!(U<<24>>24)){X=78;break}D=n+-2<<24>>24;a[s>>0]=D;E=r;D=c[e+((D&255)<<2)+24>>2]|0}while(0);if((X|0)==78){E=e+72|0;D=(c[E>>2]|0)+1|0;c[E>>2]=D;E=r}Mq(e,z,o,ha,55);if((b[x>>1]|0)<0)if((c[B>>2]|0)!=0|(q|0)!=0|(v+-1|0)>>>0>1)X=83;else F=0;else if((q|0)!=0|(v+-1|0)>>>0>1)X=83;else F=0;if((X|0)==83){t=sh(A,108,z,0,0)|0;s=sh(A,16,0,0,0)|0;r=c[A+32>>2]|0;if(r>>>0>t>>>0)c[(c[A+4>>2]|0)+(t*20|0)+8>>2]=r;c[(c[A+24>>2]|0)+88>>2]=r+-1;F=s}if(!(a[y>>0]&32)){Mq(e,C,p,u,54);q=sh(A,108,C,0,0)|0;do if((b[x>>1]|0)<=-1)if(!(c[B>>2]|0)){r=sh(A,74,z,D,0)|0;break}else{r=sh(A,103,C,D,0)|0;break}else{r=sh(A,103,C,D,0)|0;t=sh(A,70,z,0,D)|0;Bt(e,v,ha);s=c[A+32>>2]|0;if(s>>>0>t>>>0)c[(c[A+4>>2]|0)+(t*20|0)+8>>2]=s;c[(c[A+24>>2]|0)+88>>2]=s+-1;if((w|0)<=0)break;sh(c[e+8>>2]|0,136,w,D,0)|0}while(0);sh(A,102,C,E,0)|0;sh(A,75,z,E,D)|0;s=c[A+4>>2]|0;if(s)a[s+(((c[A+32>>2]|0)+-1|0)*20|0)+3>>0]=11;th(A,-1,c[ha>>2]|0,0);sh(A,9,C,r,0)|0;sh(A,61,C,0,0)|0;sh(A,61,z,0,0)|0}else{cs(e,o,c[ha+32>>2]|0,1,c[ha>>2]|0);cs(e,p,c[u+32>>2]|0,0,c[u>>2]|0);q=0}t=c[B>>2]|0;if(t){n=u+8|0;m=e+8|0;u=A+4|0;v=A+32|0;w=A+24|0;r=t;do{t=n;while(1){t=c[t>>2]|0;if(zt(r,t)|0)break;t=t+20|0}sh(A,54,C,c[t+40>>2]|0,p)|0;U=c[m>>2]|0;th(U,-1,ds(e,t)|0,-6);sh(A,55,z,c[r+40>>2]|0,o)|0;t=c[m>>2]|0;th(t,-1,ds(e,r)|0,-6);t=c[u>>2]|0;if(t)a[t+(((c[v>>2]|0)+-1|0)*20|0)+3>>0]=1;t=sh(A,108,C,0,0)|0;sh(A,101,C,E,0)|0;sh(A,110,z,E,1)|0;sh(A,9,C,t+1|0,0)|0;s=c[v>>2]|0;if(s>>>0>t>>>0)c[(c[u>>2]|0)+(t*20|0)+8>>2]=s;c[(c[w>>2]|0)+88>>2]=s+-1;sh(A,61,C,0,0)|0;sh(A,61,z,0,0)|0;r=c[r+20>>2]|0}while((r|0)!=0)}if(q){r=c[A+32>>2]|0;if(r>>>0>q>>>0)c[(c[A+4>>2]|0)+(q*20|0)+8>>2]=r;c[(c[A+24>>2]|0)+88>>2]=r+-1}Wr(e,D);Wr(e,E);if(!F){m=0;n=0;break}sh(A,24,0,0,0)|0;r=c[A+32>>2]|0;if(r>>>0>F>>>0)c[(c[A+4>>2]|0)+(F*20|0)+8>>2]=r;c[(c[A+24>>2]|0)+88>>2]=r+-1;sh(A,61,z,0,0)|0;X=117}else X=117}else X=117;while(0);do if((X|0)==117){P=At(e,o,ha)|0;O=e+72|0;q=c[O>>2]|0;T=q+1|0;U=ha+38|0;F=b[U>>1]|0;E=F<<16>>16;r=T+E|0;c[O>>2]=r;if(!(a[da>>0]&16))S=T;else{r=r+1|0;c[O>>2]=r;S=q+2|0}Q=S+1|0;R=(h|0)!=0;e:do if(R?(M=c[h+4>>2]|0,N=(M|0)>0,N):0){s=c[h>>2]|0;q=0;do{c[s+(q<<3)+4>>2]=-1;q=q+1|0}while((q|0)<(M|0));if(N){A=W<<24>>24!=0;z=ha+4|0;y=ha+36|0;q=1;x=0;s=-1;while(1){f:do if(F<<16>>16>0){w=c[h>>2]|0;p=c[w+(x<<3)>>2]|0;n=c[z>>2]|0;m=0;while(1){t=m+1|0;if(!($c(p,c[n+(m*24|0)>>2]|0)|0)){t=m;break}if((t|0)<(E|0))m=t;else break f}c[w+(x<<3)+4>>2]=t;q=(x|0)==(t|0)?q:0;s=(t|0)==(b[y>>1]|0)?x:s}else t=0;while(0);if((t|0)>=(E|0)){m=c[(c[h>>2]|0)+(x<<3)>>2]|0;if((Xh(m)|0)==0|A)break;else{q=0;t=x}}else t=s;x=x+1|0;if((x|0)>=(M|0)){B=t;break e}else s=t}c[$>>2]=f;c[$+4>>2]=0;c[$+8>>2]=m;ph(e,33368,$);a[e+17>>0]=1;m=0;break a}else{q=1;B=-1}}else{q=1;B=-1}while(0);g:do if(!aa){c[L+0>>2]=0;c[L+4>>2]=0;c[L+8>>2]=0;c[L+12>>2]=0;c[L+16>>2]=0;c[L+20>>2]=0;c[L+24>>2]=0;c[L+28>>2]=0;c[L>>2]=e;if(l){p=c[l>>2]|0;if((p|0)>0){r=l+4|0;q=0;while(1){if(hs(L,c[(c[r>>2]|0)+(q*20|0)>>2]|0)|0){g=0;m=0;break a}q=q+1|0;if((q|0)>=(p|0)){r=0;q=-1;o=0;X=169;break}}}else{M=B;L=0;N=-1;w=0}}else{M=B;p=0;L=0;N=-1;w=0}}else{r=r+1|0;c[O>>2]=r;D=ja+32|0;s=c[D>>2]|0;sh(ja,20,r,0,s+1|0)|0;a[I>>0]=13;E=I+4|0;c[E>>2]=r;a[I+1>>0]=0;C=I+8|0;c[C>>2]=q<<24>>24!=0?Q:0;c[I+12>>2]=b[U>>1];N=er(e,g,I)|0;C=c[C>>2]|0;if(N){m=0;break a}if(a[K>>0]|0){m=0;break a}sh(ja,21,r,0,0)|0;r=c[D>>2]|0;if(r>>>0>s>>>0)c[(c[ja+4>>2]|0)+(s*20|0)+8>>2]=r;F=ja+24|0;c[(c[F>>2]|0)+88>>2]=r+-1;p=c[c[g>>2]>>2]|0;h:do if(!ca){t=Kq(e)|0;q=c[t+32>>2]|0;i:do if(!(a[da>>0]&16))s=0;else{r=c[e>>2]|0;s=c[ha+60>>2]|0;if(!s){s=0;break}while(1){if((c[s>>2]|0)==(r|0))break i;s=c[s+24>>2]|0;if(!s){s=0;break}}}while(0);if((q|0)<=1){r=C;q=0;o=0;X=169;break g}n=(a[(c[t>>2]|0)+65>>0]|0)==0;w=t+4|0;v=ha+32|0;u=ha+8|0;m=1;while(1){if(n)t=(c[w>>2]|0)+(m*20|0)|0;else t=29120;r=a[t>>0]|0;do if(r<<24>>24==54){if((c[t+12>>2]|0)!=(o|0))break;r=c[t+8>>2]|0;if((r|0)==(c[v>>2]|0))break h;t=c[u>>2]|0;if(!t)break;do{if((r|0)==(c[t+40>>2]|0))break h;t=c[t+20>>2]|0}while((t|0)!=0)}else if(r<<24>>24==-107?(c[t+16>>2]|0)==(s|0):0)break h;while(0);m=m+1|0;if((m|0)>=(q|0)){r=C;q=0;o=0;X=169;break g}}}while(0);s=e+68|0;t=c[s>>2]|0;c[s>>2]=t+1;s=e+19|0;q=a[s>>0]|0;do if(!(q<<24>>24)){r=(c[O>>2]|0)+1|0;c[O>>2]=r;X=159}else{N=q+-1<<24>>24;a[s>>0]=N;r=c[e+((N&255)<<2)+24>>2]|0;if(!(N<<24>>24)){X=159;break}N=q+-2<<24>>24;a[s>>0]=N;s=c[e+((N&255)<<2)+24>>2]|0}while(0);if((X|0)==159){s=(c[O>>2]|0)+1|0;c[O>>2]=s}sh(ja,57,t,p,0)|0;o=sh(ja,22,c[E>>2]|0,0,0)|0;sh(ja,49,C,p,r)|0;sh(ja,74,t,s,0)|0;sh(ja,75,t,r,s)|0;sh(ja,16,0,o,0)|0;q=c[D>>2]|0;if(q>>>0>o>>>0)c[(c[ja+4>>2]|0)+(o*20|0)+8>>2]=q;c[(c[F>>2]|0)+88>>2]=q+-1;Wr(e,r);Wr(e,s);r=C;q=t;o=1;X=169}while(0);if((X|0)==169)if(Y&(p|0)>0){M=b[ha+36>>1]|0;L=r;N=q;w=o}else{M=B;L=r;N=q;w=o}if((a[da>>0]&16)!=0?(J=b[U>>1]|0,J<<16>>16>0):0){s=c[ha+4>>2]|0;q=J<<16>>16;o=0;r=0;do{r=((d[s+(o*24|0)+23>>0]|0)>>>1&1)+r|0;o=o+1|0}while((o|0)<(q|0))}else r=0;do if(Y&(p|0)!=0){r=(b[U>>1]|0)-r|0;if((p|0)==(r|0))break;c[$>>2]=f;c[$+4>>2]=0;c[$+8>>2]=r;c[$+12>>2]=p;ph(e,33400,$);m=0;break a}while(0);do if(R){r=c[h+4>>2]|0;if((p|0)==(r|0))break;c[$>>2]=p;c[$+4>>2]=r;ph(e,33456,$);m=0;break a}while(0);H=ka+24|0;if(!(c[H>>2]&128))n=0;else{n=(c[O>>2]|0)+1|0;c[O>>2]=n;sh(ja,25,0,n,0)|0}do if(ea)m=0;else{r=lt(e,ha,55,-1,0,ga,ia)|0;m=ih(ka,(r<<2)+4|0,0)|0;if(!m)break a;if((r|0)>0)q=0;else break;do{K=(c[O>>2]|0)+1|0;c[O>>2]=K;c[m+(q<<2)>>2]=K;q=q+1|0}while((q|0)!=(r|0))}while(0);J=w<<24>>24!=0;do if(J){K=sh(ja,108,N,0,0)|0;I=c[ja+32>>2]|0}else{if(!aa){I=0;K=0;break}K=sh(ja,22,c[I+4>>2]|0,0,0)|0;I=K}while(0);G=ts(ja)|0;do if(c[V>>2]&1){t=(b[U>>1]|0)+1|0;E=e+60|0;s=c[E>>2]|0;D=e+56|0;r=c[D>>2]|0;if((r|0)<(t|0)){F=c[O>>2]|0;c[O>>2]=F+t;F=F+1|0}else{c[E>>2]=t+s;c[D>>2]=r-t;F=s}if((M|0)<0)sh(ja,25,-1,F,0)|0;else{if(J)sh(ja,47,N,M,F)|0;else Nq(e,c[(c[l+4>>2]|0)+(M*20|0)>>2]|0,F);t=sh(ja,77,F,0,0)|0;sh(ja,25,-1,F,0)|0;s=c[ja+32>>2]|0;if(s>>>0>t>>>0)c[(c[ja+4>>2]|0)+(t*20|0)+8>>2]=s;c[(c[ja+24>>2]|0)+88>>2]=s+-1;sh(ja,38,F,0,0)|0}s=b[U>>1]|0;if(s<<16>>16>0){A=J|(l|0)!=0;q=h+4|0;r=F+1|0;t=l+4|0;x=e+8|0;y=ha+4|0;z=0;do{j:do if(Y)w=z;else{v=c[q>>2]|0;if((v|0)<=0){w=0;break}u=c[h>>2]|0;o=0;while(1){w=o+1|0;if((c[u+(o<<3)+4>>2]|0)==(z|0)){w=o;break j}if((w|0)<(v|0))o=w;else break}}while(0);do if(A){if(R?(w|0)>=(c[q>>2]|0):0){X=213;break}if(J){sh(ja,47,N,w,r+z|0)|0;break}else{V=c[(c[t>>2]|0)+(w*20|0)>>2]|0;o=r+z|0;u=c[x>>2]|0;Nq(e,V,o);s=(c[O>>2]|0)+1|0;c[O>>2]=s;sh(u,33,o,s,0)|0;a[V+38>>0]=a[V>>0]|0;a[V>>0]=-97;c[V+28>>2]=s;V=V+4|0;c[V>>2]=c[V>>2]&-4097;break}}else X=213;while(0);if((X|0)==213){X=0;Nq(e,c[(c[y>>2]|0)+(z*24|0)+4>>2]|0,r+z|0)}z=z+1|0;s=b[U>>1]|0}while((z|0)<(s<<16>>16|0))}if(!ea){st(ja,ha,F+1|0);s=b[U>>1]|0}tt(e,ca,108,0,1,ha,F+-1-(s<<16>>16)|0,k,G);s=(b[U>>1]|0)+1|0;$s(e,F,s);if((c[D>>2]|0)>=(s|0))break;c[D>>2]=s;c[E>>2]=F}while(0);do if(!ea){if(a[da>>0]&16)sh(ja,28,0,T,0)|0;k:do if((M|0)<=-1)if(!((a[da>>0]&16|W)<<24>>24)){sh(ja,74,c[ga>>2]|0,S,P)|0;F=1;break}else{sh(ja,28,0,S,0)|0;F=0;break}else{do if(J)sh(ja,47,N,M,S)|0;else{if(aa){sh(ja,33,M+L|0,S,0)|0;break}Nq(e,c[(c[l+4>>2]|0)+(M*20|0)>>2]|0,S);if(!(a[(c[ja>>2]|0)+65>>0]|0)){r=(c[ja+4>>2]|0)+(((c[ja+32>>2]|0)+-1|0)*20|0)|0;if(!r)break}else r=29120;if((a[r>>0]|0)!=28)break;if(a[da>>0]&16)break;a[r>>0]=74;c[r+4>>2]=c[ga>>2];c[r+8>>2]=S;c[r+12>>2]=P;F=1;break k}while(0);if(!(a[da>>0]&16)){r=sh(ja,77,S,0,0)|0;sh(ja,74,c[ga>>2]|0,S,P)|0;q=c[ja+32>>2]|0;if(q>>>0>r>>>0)c[(c[ja+4>>2]|0)+(r*20|0)+8>>2]=q;c[(c[ja+24>>2]|0)+88>>2]=q+-1}else sh(ja,76,S,(c[ja+32>>2]|0)+2|0,0)|0;sh(ja,38,S,0,0)|0;F=0}while(0);if((P|0)>0)sh(c[e+8>>2]|0,136,P,S,0)|0;if((b[U>>1]|0)>0){D=ha+36|0;E=ha+4|0;z=(p|0)==0;y=h+4|0;x=(L|0)==(Q|0);p=l+4|0;q=e+23|0;r=$+20|0;s=$+4|0;B=$+24|0;C=0;t=0;do{A=C+Q|0;l:do if((C|0)==(b[D>>1]|0))sh(ja,29,A,0,0)|0;else{m:do if(Y)if(!(a[(c[E>>2]|0)+(C*24|0)+23>>0]&2)){w=C-t|0;X=258;break}else{t=t+1|0;break}else{v=c[y>>2]|0;if((v|0)<=0){w=0;X=258;break}u=c[h>>2]|0;o=0;while(1){w=o+1|0;if((c[u+(o<<3)+4>>2]|0)==(C|0)){w=o;X=258;break m}if((w|0)<(v|0))o=w;else{X=258;break}}}while(0);do if((X|0)==258){X=0;if((w|0)<0|z)break;if(R?(w|0)>=(c[y>>2]|0):0)break;if(J){sh(ja,47,N,w,A)|0;break l}if(!aa){Nq(e,c[(c[p>>2]|0)+(w*20|0)>>2]|0,A);break l}if(x)break l;sh(ja,34,w+L|0,A,0)|0;break l}while(0);w=c[(c[E>>2]|0)+(C*24|0)+4>>2]|0;do if(a[q>>0]|0){c[$+0>>2]=0;c[$+4>>2]=0;c[$+8>>2]=0;c[$+12>>2]=0;c[$+16>>2]=0;c[$+20>>2]=0;a[r>>0]=1;c[$>>2]=78;c[s>>2]=79;c[B>>2]=0;ns($,w)|0;if(!(a[r>>0]|0))break;Ct(e,w,A,0);break l}while(0);Nq(e,w,A)}while(0);C=C+1|0}while((C|0)<(b[U>>1]|0))}if(!(a[da>>0]&16)){ut(e,ha,m,c[ga>>2]|0,c[ia>>2]|0,T,0,M>>>31&255^1,k&255,G,_);vt(e,ha,0,T,0,0);xt(e,ha,c[ga>>2]|0,c[ia>>2]|0,T,m,0,F,(c[_>>2]|0)==0&1);break}r=c[ha+60>>2]|0;n:do if(!r)r=0;else while(1){if((c[r>>2]|0)==(ka|0))break n;r=c[r+24>>2]|0;if(!r){r=0;break}}while(0);mt(e,ha);th(ja,sh(ja,15,1,(b[U>>1]|0)+2|0,T)|0,r,-10);q=c[ja+4>>2]|0;if(q)a[q+(((c[ja+32>>2]|0)+-1|0)*20|0)+3>>0]=(k|0)==10?2:k&255;$=c[Z>>2]|0;a[(($|0)==0?e:$)+21>>0]=1}while(0);if(c[H>>2]&128)sh(ja,37,n,1,0)|0;if(ca)tt(e,ca,108,0,2,ha,S+-1-(b[U>>1]|0)|0,k,G);r=ja+24|0;q=c[r>>2]|0;o=~G;do if((G|0)<0){p=c[q+112>>2]|0;if(!p)break;c[p+(o<<2)>>2]=c[ja+32>>2]}while(0);p=ja+32|0;c[q+88>>2]=(c[p>>2]|0)+-1;do if(J){sh(ja,9,N,I,0)|0;p=c[p>>2]|0;if(p>>>0>K>>>0)c[(c[ja+4>>2]|0)+(K*20|0)+8>>2]=p;c[(c[r>>2]|0)+88>>2]=p+-1;sh(ja,61,N,0,0)|0}else{if(!aa)break;sh(ja,16,0,I,0)|0;p=c[p>>2]|0;if(p>>>0>K>>>0)c[(c[ja+4>>2]|0)+(K*20|0)+8>>2]=p;c[(c[r>>2]|0)+88>>2]=p+-1}while(0);if((a[da>>0]&16)!=0|ea)break;o=c[ga>>2]|0;if((o|0)<(c[ia>>2]|0))sh(ja,61,o,0,0)|0;o=c[ha+8>>2]|0;if(!o)break;else p=0;while(1){sh(ja,61,(c[ia>>2]|0)+p|0,0,0)|0;o=c[o+20>>2]|0;if(!o)break;else p=p+1|0}}while(0);if((a[fa>>0]|0)==0?(c[e+412>>2]|0)==0:0)ot(e);if((((c[ka+24>>2]&128|0)!=0?(a[fa>>0]|0)==0:0)?(c[e+412>>2]|0)==0:0)?(sh(ja,35,n,1,0)|0,eq(ja,1),(a[(c[ja>>2]|0)+65>>0]|0)==0):0)Tg(c[ja+16>>2]|0,33488,-1,1,0)|0}else m=0}else m=0}else{m=0;l=0}while(0);zo(ka,f);Jk(ka,l);Ik(ka,g,1);Dk(ka,h);ig(ka,m);i=la;return}function qr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h;if(!d){d=ih(b,8,0)|0;if(!d)d=0;else{g=d;k=g;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;g=g+4|0;a[g>>0]=0;a[g+1>>0]=0;a[g+2>>0]=0;a[g+3>>0]=0;g=4}}else g=4;do if((g|0)==4){c[d>>2]=Dt(b,c[d>>2]|0,8,d+4|0,f)|0;f=c[f>>2]|0;if((f|0)<0){Dk(b,d);d=0;break}else{b=Sq(b,e)|0;c[(c[d>>2]|0)+(f<<3)>>2]=b;break}}while(0);i=h;return d|0}function rr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((c[d+4>>2]|0)!=0?(f=jr(c[a>>2]|0,95,d,e)|0,(f|0)!=0):0){c[f+12>>2]=b;b=f+4|0;c[b>>2]=c[b>>2]|4352;b=f}return b|0}function sr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a>>2]|0;d=jr(e,153,d,1)|0;if(!d){Jk(e,b);d=0}else{c[d+20>>2]=b;ur(a,d)}return d|0}function tr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;b=c[b>>2]|0;if((d|0)!=0&(e|0)!=0?(a[d>>0]|0)==101:0){a[e>>0]=f;f=e+16|0;Ck(b,c[f>>2]|0);c[f>>2]=0}return}function ur(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;if((c[a+64>>2]|0)==0?(Et(b),d=c[(c[a>>2]|0)+100>>2]|0,(d|0)<(c[b+24>>2]|0)):0){c[e>>2]=d;ph(a,27152,e)}i=f;return}function vr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[a>>2]|0;i=d+20|0;e=c[i>>2]|0;if((e|0)>0){g=d+16|0;h=(b|0)==0;d=e;f=0;do{e=c[g>>2]|0;do if(c[e+(f<<4)+4>>2]|0){if(!h?($c(b,c[e+(f<<4)>>2]|0)|0)!=0:0)break;wr(a,f);d=c[i>>2]|0}while(0);f=f+1|0}while((f|0)<(d|0))}return}function wr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+408>>2]|0;f=(f|0)==0?a:f;a=f+332|0;d=c[a>>2]|0;e=1<>2]|0,c[a>>2]=d|e,c[f+(b<<2)+336>>2]=c[c[(c[g+16>>2]|0)+(b<<4)+12>>2]>>2],(b|0)==1):0)Wk(f)|0;return}function xr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+128|0;if((i|0)>=(j|0))ba();f=o+8|0;n=o;m=o+24|0;c[n>>2]=0;k=c[b>>2]|0;if((c[b+64>>2]|0)==0?(c[f>>2]=e,l=Sk(k,d,f)|0,(l|0)!=0):0){d=b+18|0;a[d>>0]=(a[d>>0]|0)+1<<24>>24;e=b+440|0;f=m+0|0;g=e+0|0;h=f+96|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));f=e+0|0;h=f+96|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));Hh(b,l,n)|0;ig(k,c[n>>2]|0);ig(k,l);f=e+0|0;g=m+0|0;h=f+96|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));a[d>>0]=(a[d>>0]|0)+-1<<24>>24}i=o;return}function yr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;k=i;i=i+48|0;if((i|0)>=(j|0))ba();g=k;h=k+16|0;b=c[(c[(c[a>>2]|0)+16>>2]|0)+(b<<4)>>2]|0;f=1;do{c[g>>2]=f;Yc(24,h,33272,g)|0;if(Wh(c[a>>2]|0,h,b)|0){c[g>>2]=b;c[g+4>>2]=h;c[g+8>>2]=d;c[g+12>>2]=e;xr(a,28840,g)}f=f+1|0}while((f|0)!=5);i=k;return}function zr(b,d){b=b|0;d=d|0;var e=0,f=0;e=b+19|0;f=a[e>>0]|0;if(!(f<<24>>24)){f=b+72|0;e=(c[f>>2]|0)+1|0;c[f>>2]=e}else{f=f+-1<<24>>24;a[e>>0]=f;e=c[b+((f&255)<<2)+24>>2]|0}f=c[b+8>>2]|0;sh(f,25,(c[c[(c[(c[b>>2]|0)+16>>2]|0)+(d<<4)+12>>2]>>2]|0)+1|0,e,0)|0;sh(f,52,d,1,e)|0;Wr(b,e);return}function Ar(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0;l=i;i=i+32|0;if((i|0)>=(j|0))ba();k=l;h=Kq(b)|0;f=b+19|0;g=a[f>>0]|0;if(!(g<<24>>24)){g=b+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f}else{g=g+-1<<24>>24;a[f>>0]=g;f=c[b+((g&255)<<2)+24>>2]|0}sh(h,117,d,f,e)|0;g=c[b+408>>2]|0;a[((g|0)==0?b:g)+21>>0]=1;c[k>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(e<<4)>>2];c[k+4>>2]=(e|0)==1?13184:13208;c[k+8>>2]=d;c[k+12>>2]=f;c[k+16>>2]=f;xr(b,33216,k);Wr(b,f);i=l;return}function Br(f,g,h,k,l){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var 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,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=i;i=i+96|0;if((i|0)>=(j|0))ba();D=U+24|0;t=U+80|0;n=U+64|0;x=U+16|0;q=U+60|0;r=U+56|0;L=U+52|0;K=U+48|0;w=U+44|0;A=U+40|0;B=U+36|0;C=U+32|0;u=U+8|0;p=U;T=c[f>>2]|0;Q=Kq(f)|0;do if((Q|0)!=0?(P=Q+88|0,b[P>>1]=b[P>>1]|16,P=f+72|0,c[P>>2]=2,N=ar(f,g,h,t)|0,(N|0)>=0):0){O=T+16|0;z=c[O>>2]|0;if((N|0)==1?(Wk(f)|0)!=0:0)break;S=Sq(T,c[t>>2]|0)|0;if(S){if(!l)R=Sq(T,k)|0;else{c[D>>2]=k;R=qh(T,30104,D)|0}y=h+4|0;if(!(c[y>>2]|0))I=0;else I=c[z+(N<<4)>>2]|0;a:do if(!(Oq(f,19,S,R,I)|0)){c[n>>2]=0;c[n+4>>2]=S;c[n+8>>2]=R;c[n+12>>2]=0;o=T+452|0;c[o>>2]=0;g=_f(T,I,14,n)|0;if(!g){k=c[n>>2]|0;if(!k)break;m=(c[P>>2]|0)+1|0;c[P>>2]=m;th(Q,sh(Q,97,0,m,0)|0,k,0);eq(Q,1);if(!(a[(c[Q>>2]|0)+65>>0]|0))Tg(c[Q+16>>2]|0,30112,-1,1,0)|0;sh(Q,35,m,1,0)|0;Sc(c[n>>2]|0);break}else if((g|0)==12){t=0;n=56;b:while(1){while(1){l=(t+n|0)/2|0;g=c[30120+(l*12|0)>>2]|0;k=$c(S,g)|0;if(!k){t=l;break b}if((k|0)<0){g=l;break}if((l|0)<(n|0))t=l+1|0;else break a}g=g+-1|0;if((t|0)>(g|0))break a;else n=g}if((a[30125+(t*12|0)>>0]&1)!=0?(Cn(f)|0)!=0:0)break;do switch(d[30124+(t*12|0)>>0]|0){case 25:{l=c[z+(N<<4)+4>>2]|0;if(R){m=(ei(R,1,0)|0)<<24>>24!=0&1;if((c[y>>2]|0)==0?(v=T+20|0,(c[v>>2]|0)>0):0){k=0;do{oo(c[(c[O>>2]|0)+(k<<4)+4>>2]|0,m)|0;k=k+1|0}while((k|0)<(c[v>>2]|0))}}else m=-1;D=oo(l,m)|0;Ft(f,30880,D,((D|0)<0)<<31>>31);break a}case 22:{wr(f,N);k=(c[P>>2]|0)+1|0;c[P>>2]=k;if((a[S>>0]&-33)<<24>>24==80)sh(Q,153,N,k,0)|0;else{c[D>>2]=0;if(R){zn(R,D)|0;m=c[D>>2]|0;if((m|0)<=-1)m=(m|0)==-2147483648?2147483647:0-m|0}else m=0;sh(Q,154,N,k,m)|0}sh(Q,35,k,1,0)|0;eq(Q,1);if(a[(c[Q>>2]|0)+65>>0]|0)break a;Tg(c[Q+16>>2]|0,S,-1,1,-1)|0;break a}case 30:{if(!R)break a;h=Wh(T,R,I)|0;if(!h)break a;k=c[h+8>>2]|0;c:do if(!k)k=0;else while(1){if((a[k+51>>0]&3)==2)break c;k=c[k+20>>2]|0;if(!k){k=0;break}}while(0);eq(Q,6);c[P>>2]=6;wr(f,N);do if((((a[(c[Q>>2]|0)+65>>0]|0)==0?(Tg(c[Q+16>>2]|0,31176,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)?(Tg((c[Q+16>>2]|0)+40|0,31184,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)?(Tg((c[Q+16>>2]|0)+80|0,31192,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0){Tg((c[Q+16>>2]|0)+120|0,31200,-1,1,0)|0;if(a[(c[Q>>2]|0)+65>>0]|0)break;Tg((c[Q+16>>2]|0)+160|0,31208,-1,1,0)|0;if(a[(c[Q>>2]|0)+65>>0]|0)break;Tg((c[Q+16>>2]|0)+200|0,31224,-1,1,0)|0}while(0);dr(f,h)|0;q=h+38|0;m=b[q>>1]|0;if(m<<16>>16<=0)break a;r=(k|0)==0;l=k+4|0;t=0;o=0;g=c[h+4>>2]|0;while(1){p=g+23|0;if(!(a[p>>0]&2)){sh(Q,25,t-o|0,1,0)|0;n=c[g>>2]|0;th(Q,sh(Q,97,0,2,0)|0,n,0);n=c[g+12>>2]|0;th(Q,sh(Q,97,0,3,0)|0,(n|0)==0?10360:n,0);sh(Q,25,(a[g+20>>0]|0)!=0&1,4,0)|0;n=c[g+8>>2]|0;if(!n)sh(Q,28,0,5,0)|0;else th(Q,sh(Q,97,0,5,0)|0,n,0);k=a[p>>0]&1;d:do if(k<<24>>24==0|r)n=(k^1)&255^1;else{n=b[q>>1]|0;if(n<<16>>16<1){n=1;break}m=c[l>>2]|0;p=n<<16>>16;k=1;while(1){n=k+1|0;if((b[m+(k+-1<<1)>>1]|0)==(t|0)){n=k;break d}if((k|0)<(p|0))k=n;else break}}while(0);sh(Q,25,n,6,0)|0;sh(Q,35,1,6,0)|0;m=b[q>>1]|0}else o=o+1|0;t=t+1|0;if((t|0)>=(m<<16>>16|0))break;else g=g+24|0}break}case 29:{if(!R){D=(d[z+(N<<4)+8>>0]|0)+-1|0;Ft(f,31104,D,((D|0)<0)<<31>>31);break a}if(!(a[T+63>>0]|0)){ph(f,31120,D);break a}else{a[z+(N<<4)+8>>0]=((ei(R,0,1)|0)&255)+1;Ht(T);break a}}case 21:{do if(R){if($c(R,30904)|0)if(!($c(R,30896)|0))k=0;else{M=66;break}else k=1;if(!(c[y>>2]|0)){p=c[T+20>>2]|0;if((p|0)>2){n=c[O>>2]|0;m=k&255;o=2;do{l=c[c[(c[n+(o<<4)+4>>2]|0)+4>>2]>>2]|0;do if(!(a[l+12>>0]|0)){D=c[l+208>>2]|0;if((D|0)!=0?(a[D+43>>0]|0)==2:0)break;a[l+4>>0]=m}while(0);o=o+1|0}while((o|0)<(p|0))}else m=k&255;a[T+66>>0]=m;M=74}else M=74}else M=66;while(0);if((M|0)==66)if(!(c[y>>2]|0))l=T+66|0;else{k=-1;M=74}if((M|0)==74){m=c[c[(c[z+(N<<4)+4>>2]|0)+4>>2]>>2]|0;do if((k|0)>-1?(a[m+12>>0]|0)==0:0){D=c[m+208>>2]|0;if((D|0)!=0?(a[D+43>>0]|0)==2:0)break;a[m+4>>0]=k}while(0);l=m+4|0}l=(a[l>>0]|0)==1?30904:30896;eq(Q,1);if(!(a[(c[Q>>2]|0)+65>>0]|0))Tg(c[Q+16>>2]|0,30920,-1,1,0)|0;th(Q,sh(Q,97,0,1,0)|0,l,0);sh(Q,35,1,1,0)|0;break a}case 19:{k=c[c[(c[z+(N<<4)+4>>2]|0)+4>>2]>>2]|0;D=x;c[D>>2]=-2;c[D+4>>2]=-1;if(R){fi(R,x)|0;m=x;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)<-1|(m|0)==-1&l>>>0<4294967295){l=x;c[l>>2]=-1;c[l+4>>2]=-1;l=-1;m=-1}D=k+160|0;c[D>>2]=l;c[D+4>>2]=m;k=c[k+208>>2]|0;if(k){D=k+16|0;c[D>>2]=l;c[D+4>>2]=m}}else{m=k+160|0;l=c[m>>2]|0;m=c[m+4>>2]|0}D=x;c[D>>2]=l;c[D+4>>2]=m;Ft(f,30952,l,m);break a}case 2:{if(!R){Ft(f,g,(c[30128+(t*12|0)>>2]&c[T+24>>2]|0)!=0&1,0);break a}l=c[30128+(t*12|0)>>2]|0;l=(a[T+63>>0]|0)==0?l&-524289:l;if(!((ei(R,1,0)|0)<<24>>24)){D=T+24|0;c[D>>2]=c[D>>2]&~l;if((l|0)==16777216){D=T+512|0;c[D>>2]=0;c[D+4>>2]=0}}else{D=T+24|0;c[D>>2]=c[D>>2]|l}sh(Q,144,0,0,0)|0;Ht(T);break a}case 28:{n=Kq(f)|0;eq(n,4);c[P>>2]=4;wr(f,N);if((((a[(c[n>>2]|0)+65>>0]|0)==0?(Tg(c[n+16>>2]|0,31232,-1,1,0)|0,(a[(c[n>>2]|0)+65>>0]|0)==0):0)?(Tg((c[n+16>>2]|0)+40|0,20632,-1,1,0)|0,(a[(c[n>>2]|0)+65>>0]|0)==0):0)?(Tg((c[n+16>>2]|0)+80|0,31240,-1,1,0)|0,(a[(c[n>>2]|0)+65>>0]|0)==0):0)Tg((c[n+16>>2]|0)+120|0,31248,-1,1,0)|0;l=c[(c[z+(N<<4)+12>>2]|0)+16>>2]|0;if(!l)break a;do{m=c[l+8>>2]|0;D=c[m>>2]|0;th(n,sh(n,97,0,1,0)|0,D,0);sh(n,28,0,2,0)|0;D=Ss(b[m+42>>1]|0)|0;sh(n,25,D,3,0)|0;D=Ss(b[m+28>>1]|0)|0;sh(n,25,D,4,0)|0;sh(n,35,1,4,0)|0;m=c[m+8>>2]|0;if(m)do{D=c[m>>2]|0;th(n,sh(n,97,0,2,0)|0,D,0);D=Ss(b[m+44>>1]|0)|0;sh(n,25,D,3,0)|0;D=Ss(b[c[m+8>>2]>>1]|0)|0;sh(n,25,D,4,0)|0;sh(n,35,1,4,0)|0;m=c[m+20>>2]|0}while((m|0)!=0);l=c[l>>2]|0}while((l|0)!=0);break}case 15:{if(!R)break a;p=Zp(T,R,I)|0;if(!p)break a;t=(c[30128+(t*12|0)>>2]|0)==0;q=p+46|0;D=t?3:6;o=b[(t?q:p+48|0)>>1]|0;r=o&65535;c[P>>2]=D;n=c[p+12>>2]|0;eq(Q,D);wr(f,N);if(((a[(c[Q>>2]|0)+65>>0]|0)==0?(Tg(c[Q+16>>2]|0,31256,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)?(Tg((c[Q+16>>2]|0)+40|0,31176,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)Tg((c[Q+16>>2]|0)+80|0,31184,-1,1,0)|0;if(((!t?(a[(c[Q>>2]|0)+65>>0]|0)==0:0)?(Tg((c[Q+16>>2]|0)+120|0,31264,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)?(Tg((c[Q+16>>2]|0)+160|0,31272,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)Tg((c[Q+16>>2]|0)+200|0,31280,-1,1,0)|0;if(!(o<<16>>16))break a;m=p+4|0;l=p+28|0;k=p+32|0;p=n+4|0;n=0;do{D=b[(c[m>>2]|0)+(n<<1)>>1]|0;sh(Q,25,n,1,0)|0;o=D<<16>>16;sh(Q,25,o,2,0)|0;if(D<<16>>16<0)sh(Q,28,0,3,0)|0;else{D=c[(c[p>>2]|0)+(o*24|0)>>2]|0;th(Q,sh(Q,97,0,3,0)|0,D,0)}if(!t){sh(Q,25,d[(c[l>>2]|0)+n>>0]|0,4,0)|0;D=c[(c[k>>2]|0)+(n<<2)>>2]|0;th(Q,sh(Q,97,0,5,0)|0,D,0);sh(Q,25,(n|0)<(e[q>>1]|0)&1,6,0)|0}sh(Q,35,1,c[P>>2]|0,0)|0;n=n+1|0}while((n|0)<(r|0));break}case 5:{if(!R)break a;D=(ei(R,1,0)|0)<<24>>24!=0;C=D?32e3:19240;Mh(T,19248,2,1,C,40,0,0,0)|0;Mh(T,19248,3,1,C,40,0,0,0)|0;Mh(T,19232,2,1,10352,40,0,0,0)|0;Kt(T,19232,12);Kt(T,19248,D?12:4);break a}case 17:{g=a[S>>0]|0;x=(c[h>>2]|0)==0?-1:N;c[P>>2]=6;eq(Q,1);if(!(a[(c[Q>>2]|0)+65>>0]|0))Tg(c[Q+16>>2]|0,31464,-1,1,0)|0;c[w>>2]=100;if(R){zn(R,w)|0;p=c[w>>2]|0;if((p|0)<1){c[w>>2]=100;p=100}}else p=100;sh(Q,25,p,1,0)|0;J=T+20|0;t=c[J>>2]|0;if((t|0)>0){I=(x|0)<0;m=Q+32|0;F=Q+4|0;E=Q+24|0;K=(g&-33)<<24>>24==81;L=0;do{if(I|(L|0)==(x|0)){wr(f,L);t=sh(Q,137,1,0,0)|0;sh(Q,24,0,0,0)|0;l=c[m>>2]|0;if(l>>>0>t>>>0)c[(c[F>>2]|0)+(t*20|0)+8>>2]=l;c[(c[E>>2]|0)+88>>2]=l+-1;k=(c[(c[O>>2]|0)+(L<<4)+12>>2]|0)+16|0;t=c[k>>2]|0;if(!t)g=0;else{g=0;do{l=c[t+8>>2]|0;if(!(a[l+44>>0]&32)){sh(Q,25,c[l+32>>2]|0,g+2|0,0)|0;g=g+1|0}l=c[l+8>>2]|0;if(l)do{sh(Q,25,c[l+40>>2]|0,g+2|0,0)|0;g=g+1|0;l=c[l+20>>2]|0}while((l|0)!=0);t=c[t>>2]|0}while((t|0)!=0)}z=c[P>>2]|0;t=g+8|0;c[P>>2]=(z|0)>(t|0)?z:t;sh(Q,127,2,g,1)|0;t=c[F>>2]|0;if(t)a[t+(((c[m>>2]|0)+-1|0)*20|0)+3>>0]=L;g=sh(Q,76,2,0,0)|0;c[D>>2]=c[(c[O>>2]|0)+(L<<4)>>2];t=qh(T,31480,D)|0;th(Q,sh(Q,97,0,3,0)|0,t,-1);sh(Q,32,2,4,1)|0;sh(Q,94,4,3,2)|0;sh(Q,35,2,1,0)|0;t=c[m>>2]|0;if(t>>>0>g>>>0)c[(c[F>>2]|0)+(g*20|0)+8>>2]=t;c[(c[E>>2]|0)+88>>2]=t+-1;t=c[k>>2]|0;if(!((t|0)==0|K))do{u=c[t+8>>2]|0;G=u+8|0;g=c[G>>2]|0;do if(g){e:do if(!(a[u+44>>0]&32))g=0;else while(1){if((a[g+51>>0]&3)==2)break e;g=c[g+20>>2]|0;if(!g){g=0;break}}while(0);l=sh(Q,137,1,0,0)|0;sh(Q,24,0,0,0)|0;k=c[m>>2]|0;if(k>>>0>l>>>0)c[(c[F>>2]|0)+(l*20|0)+8>>2]=k;c[(c[E>>2]|0)+88>>2]=k+-1;Ys(f);lt(f,u,54,1,0,A,B)|0;sh(Q,25,0,7,0)|0;k=c[G>>2]|0;if(!k)l=8;else{l=0;while(1){sh(Q,25,0,l+8|0,0)|0;k=c[k+20>>2]|0;if(!k)break;else l=l+1|0}l=l+9|0}H=c[P>>2]|0;c[P>>2]=(H|0)>(l|0)?H:l;sh(Q,108,c[A>>2]|0,0,0)|0;H=sh(Q,37,7,1,0)|0;r=u+38|0;l=b[r>>1]|0;if(l<<16>>16>0){h=u+36|0;s=u+4|0;q=0;do{do if((q|0)!=(b[h>>1]|0)){if(!(a[(c[s>>2]|0)+(q*24|0)+20>>0]|0))break;jt(Q,u,c[A>>2]|0,q,3);l=c[F>>2]|0;if(l)a[l+(((c[m>>2]|0)+-1|0)*20|0)+3>>0]=-128;l=sh(Q,77,3,0,0)|0;sh(Q,37,1,-1,0)|0;n=c[(c[s>>2]|0)+(q*24|0)>>2]|0;c[D>>2]=c[u>>2];c[D+4>>2]=n;n=qh(T,31504,D)|0;th(Q,sh(Q,97,0,3,0)|0,n,-1);sh(Q,35,3,1,0)|0;n=sh(Q,137,1,0,0)|0;sh(Q,24,0,0,0)|0;o=c[m>>2]|0;if(o>>>0>l>>>0)c[(c[F>>2]|0)+(l*20|0)+8>>2]=o;l=o+-1|0;k=(c[E>>2]|0)+88|0;c[k>>2]=l;if(o>>>0>n>>>0)c[(c[F>>2]|0)+(n*20|0)+8>>2]=o;c[k>>2]=l;l=b[r>>1]|0}while(0);q=q+1|0}while((q|0)<(l<<16>>16|0))}l=c[G>>2]|0;if(l){w=u+4|0;v=0;o=0;k=-1;while(1){n=ts(Q)|0;if((g|0)!=(l|0)){k=Lt(f,l,c[A>>2]|0,0,0,C,o,k)|0;sh(Q,37,v+8|0,1,0)|0;u=e[l+48>>1]|0;n=sh(Q,69,(c[B>>2]|0)+v|0,n,k)|0;th(Q,n,u,-14);sh(Q,37,1,-1,0)|0;th(Q,sh(Q,97,0,3,0)|0,31528,-2);sh(Q,94,7,3,3)|0;th(Q,sh(Q,97,0,4,0)|0,31536,-2);sh(Q,94,4,3,3)|0;u=c[l>>2]|0;s=sh(Q,97,0,4,0)|0;th(Q,s,u,0);sh(Q,94,4,3,3)|0;sh(Q,35,3,1,0)|0;u=sh(Q,137,1,0,0)|0;sh(Q,24,0,0,0)|0;o=c[m>>2]|0;if(o>>>0>n>>>0)c[(c[F>>2]|0)+(n*20|0)+8>>2]=o;n=c[E>>2]|0;c[n+88>>2]=o+-1;if(a[l+50>>0]|0){h=ts(Q)|0;r=l+46|0;n=b[r>>1]|0;if(n<<16>>16){q=l+4|0;o=0;do{if(!(a[(c[w>>2]|0)+((b[(c[q>>2]|0)+(o<<1)>>1]|0)*24|0)+20>>0]|0)){sh(Q,76,o+k|0,h,0)|0;n=b[r>>1]|0}o=o+1|0}while((o|0)<(n&65535|0))}n=sh(Q,9,(c[B>>2]|0)+v|0,0,0)|0;sh(Q,16,0,h,0)|0;o=c[m>>2]|0;if(o>>>0>n>>>0)c[(c[F>>2]|0)+(n*20|0)+8>>2]=o;c[(c[E>>2]|0)+88>>2]=o+-1;n=e[r>>1]|0;th(Q,sh(Q,114,(c[B>>2]|0)+v|0,h,k)|0,n,-14);sh(Q,37,1,-1,0)|0;th(Q,sh(Q,97,0,3,0)|0,31560,-2);sh(Q,16,0,s,0)|0;n=c[E>>2]|0;q=~h;do if((h|0)<0){o=c[n+112>>2]|0;if(!o)break;c[o+(q<<2)>>2]=c[m>>2]}while(0);o=c[m>>2]|0;c[n+88>>2]=o+-1}if(o>>>0>u>>>0)c[(c[F>>2]|0)+(u*20|0)+8>>2]=o;c[n+88>>2]=o+-1;Mt(f,c[C>>2]|0);o=l}l=c[l+20>>2]|0;if(!l)break;else v=v+1|0}}sh(Q,9,c[A>>2]|0,H,0)|0;l=H+-1|0;k=c[m>>2]|0;if(k>>>0>l>>>0)c[(c[F>>2]|0)+(l*20|0)+8>>2]=k;c[(c[E>>2]|0)+88>>2]=k+-1;th(Q,sh(Q,97,0,2,0)|0,31592,-2);l=c[G>>2]|0;if(!l)break;else n=0;while(1){if((g|0)!=(l|0)){k=c[m>>2]|0;sh(Q,137,1,k+2|0,0)|0;sh(Q,24,0,0,0)|0;sh(Q,50,(c[B>>2]|0)+n|0,3,0)|0;sh(Q,79,n+8|0,k+8|0,3)|0;k=c[F>>2]|0;if(k)a[k+(((c[m>>2]|0)+-1|0)*20|0)+3>>0]=-112;sh(Q,37,1,-1,0)|0;z=c[l>>2]|0;th(Q,sh(Q,97,0,3,0)|0,z,0);sh(Q,94,3,2,7)|0;sh(Q,35,7,1,0)|0}l=c[l+20>>2]|0;if(!l)break;else n=n+1|0}}while(0);t=c[t>>2]|0}while((t|0)!=0);t=c[J>>2]|0}L=L+1|0}while((L|0)<(t|0))}else m=Q+32|0;l=uh(Q,3,31448)|0;m=c[m>>2]|0;if(m>>>0>l>>>0){c[(c[Q+4>>2]|0)+(l*20|0)+12>>2]=0-p;c[(c[Q+4>>2]|0)+(l*20|0)+8>>2]=m}c[(c[Q+24>>2]|0)+88>>2]=m+-1;th(Q,l+1|0,31624,-2);break a}case 23:{Ft(f,31016,0,0);break a}case 31:{if(!R){Ft(f,31032,d[T+64>>0]|0,0);break a}l=a[R>>0]|0;if((l+-48&255)>=3)if(!($c(R,31352)|0))l=1;else{l=($c(R,15168)|0)==0;l=l?2:0}else l=(l<<24>>24)+-48|0;m=(c[f>>2]|0)+64|0;if((d[m>>0]|0)==(l|0))break a;if(Gt(f)|0)break a;a[m>>0]=l;break a}case 4:if(!R){D=c[(c[z+(N<<4)+12>>2]|0)+80>>2]|0;Ft(f,30848,D,((D|0)<0)<<31>>31);break a}else{c[D>>2]=0;zn(R,D)|0;D=c[D>>2]|0;c[(c[z+(N<<4)+12>>2]|0)+80>>2]=D;lq(c[z+(N<<4)+4>>2]|0,D);break a}case 32:{if(!R){if(!(c[2708]|0))break a;eq(Q,1);if(!(a[(c[Q>>2]|0)+65>>0]|0))Tg(c[Q+16>>2]|0,31048,-1,1,0)|0;D=c[2708]|0;th(Q,sh(Q,97,0,1,0)|0,D,0);sh(Q,35,1,1,0)|0;break a}if((a[R>>0]|0)!=0?(C=c[T>>2]|0,C=(lc[c[C+32>>2]&31](C,R,1,r)|0)!=0,C|(c[r>>2]|0)==0):0){ph(f,31072,D);break a}if((d[T+64>>0]|0)<2)Gt(f)|0;Sc(c[2708]|0);if(!(a[R>>0]|0)){c[2708]=0;break a}else{c[D>>2]=R;c[2708]=Wc(10344,D)|0;break a}}case 24:{l=c[z+(N<<4)+4>>2]|0;if(R){c[D>>2]=0;zn(R,D)|0;D=c[D>>2]|0;c[T+72>>2]=D;if((tg(l,D,-1,0)|0)!=7)break a;a[T+65>>0]=1;break a}if(!l){l=0;m=0}else{m=c[(c[l+4>>2]|0)+32>>2]|0;l=m;m=((m|0)<0)<<31>>31}Ft(f,30864,l,m);break a}case 9:{eq(Q,3);c[P>>2]=3;if(((a[(c[Q>>2]|0)+65>>0]|0)==0?(Tg(c[Q+16>>2]|0,31288,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)?(Tg((c[Q+16>>2]|0)+40|0,31184,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)Tg((c[Q+16>>2]|0)+80|0,31352,-1,1,0)|0;l=T+20|0;m=c[l>>2]|0;if((m|0)>0)n=0;else break a;do{if(c[(c[O>>2]|0)+(n<<4)+4>>2]|0){sh(Q,25,n,1,0)|0;k=c[(c[O>>2]|0)+(n<<4)>>2]|0;th(Q,sh(Q,97,0,2,0)|0,k,0);k=c[c[(c[(c[O>>2]|0)+(n<<4)+4>>2]|0)+4>>2]>>2]|0;if(!(a[k+15>>0]|0))k=c[k+168>>2]|0;else k=10360;th(Q,sh(Q,97,0,3,0)|0,k,0);sh(Q,35,1,3,0)|0;m=c[l>>2]|0}n=n+1|0}while((n|0)<(m|0));break}case 6:{eq(Q,2);c[P>>2]=2;if((a[(c[Q>>2]|0)+65>>0]|0)==0?(Tg(c[Q+16>>2]|0,31288,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)Tg((c[Q+16>>2]|0)+40|0,31184,-1,1,0)|0;m=c[T+436>>2]|0;if(!m)break a;else l=0;while(1){D=c[m+8>>2]|0;sh(Q,25,l,1,0)|0;D=c[D>>2]|0;th(Q,sh(Q,97,0,2,0)|0,D,0);sh(Q,35,1,2,0)|0;m=c[m>>2]|0;if(!m)break;else l=l+1|0}break}case 13:{if(!R)break a;k=Wh(T,R,I)|0;if(!k)break a;g=Kq(f)|0;n=c[k+16>>2]|0;if(!n)break a;eq(g,8);c[P>>2]=8;wr(f,N);do if((((a[(c[g>>2]|0)+65>>0]|0)==0?(Tg(c[g+16>>2]|0,31360,-1,1,0)|0,(a[(c[g>>2]|0)+65>>0]|0)==0):0)?(Tg((c[g+16>>2]|0)+40|0,31288,-1,1,0)|0,(a[(c[g>>2]|0)+65>>0]|0)==0):0)?(Tg((c[g+16>>2]|0)+80|0,31232,-1,1,0)|0,(a[(c[g>>2]|0)+65>>0]|0)==0):0){Tg((c[g+16>>2]|0)+120|0,31368,-1,1,0)|0;if(a[(c[g>>2]|0)+65>>0]|0)break;Tg((c[g+16>>2]|0)+160|0,31376,-1,1,0)|0;if(a[(c[g>>2]|0)+65>>0]|0)break;Tg((c[g+16>>2]|0)+200|0,31384,-1,1,0)|0;if(a[(c[g>>2]|0)+65>>0]|0)break;Tg((c[g+16>>2]|0)+240|0,31400,-1,1,0)|0;if(a[(c[g>>2]|0)+65>>0]|0)break;Tg((c[g+16>>2]|0)+280|0,31416,-1,1,0)|0}while(0);s=k+4|0;t=0;while(1){k=n+20|0;if((c[k>>2]|0)>0){m=n+25|0;l=n+26|0;q=n+8|0;h=0;do{r=c[n+(h<<3)+40>>2]|0;p=d[m>>0]|0;if((p|0)==8)o=32072;else if((p|0)==9)o=32088;else if((p|0)==6)o=32096;else if((p|0)==7)o=32056;else o=32112;p=d[l>>0]|0;if((p|0)==8)p=32072;else if((p|0)==9)p=32088;else if((p|0)==6)p=32096;else if((p|0)==7)p=32056;else p=32112;sh(g,25,t,1,0)|0;sh(g,25,h,2,0)|0;D=c[q>>2]|0;th(g,sh(g,97,0,3,0)|0,D,0);D=c[(c[s>>2]|0)+((c[n+(h<<3)+36>>2]|0)*24|0)>>2]|0;th(g,sh(g,97,0,4,0)|0,D,0);th(g,sh(g,(r|0)!=0?97:28,0,5,0)|0,r,0);th(g,sh(g,97,0,6,0)|0,p,0);th(g,sh(g,97,0,7,0)|0,o,0);th(g,sh(g,97,0,8,0)|0,31424,0);sh(g,35,1,8,0)|0;h=h+1|0}while((h|0)<(c[k>>2]|0))}n=c[n+4>>2]|0;if(!n)break;else t=t+1|0}break}case 16:{if(!R)break a;k=Wh(T,R,I)|0;if(!k)break a;n=Kq(f)|0;eq(n,5);c[P>>2]=5;wr(f,N);if(((((a[(c[n>>2]|0)+65>>0]|0)==0?(Tg(c[n+16>>2]|0,31288,-1,1,0)|0,(a[(c[n>>2]|0)+65>>0]|0)==0):0)?(Tg((c[n+16>>2]|0)+40|0,31184,-1,1,0)|0,(a[(c[n>>2]|0)+65>>0]|0)==0):0)?(Tg((c[n+16>>2]|0)+80|0,31296,-1,1,0)|0,(a[(c[n>>2]|0)+65>>0]|0)==0):0)?(Tg((c[n+16>>2]|0)+120|0,31304,-1,1,0)|0,(a[(c[n>>2]|0)+65>>0]|0)==0):0)Tg((c[n+16>>2]|0)+160|0,31312,-1,1,0)|0;m=c[k+8>>2]|0;if(!m)break a;else l=0;while(1){sh(n,25,l,1,0)|0;D=c[m>>2]|0;th(n,sh(n,97,0,2,0)|0,D,0);sh(n,25,(a[m+50>>0]|0)!=0&1,3,0)|0;D=c[31336+((a[m+51>>0]&3)<<2)>>2]|0;th(n,sh(n,97,0,4,0)|0,D,0);sh(n,25,(c[m+36>>2]|0)!=0&1,5,0)|0;sh(n,35,1,5,0)|0;m=c[m+20>>2]|0;if(!m)break;else l=l+1|0}break}case 11:{if(!R){if(Cn(f)|0)break a;eq(Q,1);if(!(a[(c[Q>>2]|0)+65>>0]|0))Tg(c[Q+16>>2]|0,31784,-1,1,0)|0;sh(Q,97,0,1,0)|0;th(Q,-1,c[31632+(d[(c[f>>2]|0)+62>>0]<<3)>>2]|0,-2);sh(Q,35,1,1,0)|0;break a}k=c[(c[O>>2]|0)+12>>2]|0;if((b[k+78>>1]&5)==1)break a;else{m=31632;l=31704}do{if(!($c(R,l)|0)){s=m;M=415;break}m=m+8|0;l=c[m>>2]|0}while((l|0)!=0);if((M|0)==415?(C=a[s+4>>0]|0,C=C<<24>>24==0?2:C,a[T+62>>0]=C,a[k+77>>0]=C,(c[s>>2]|0)!=0):0)break a;c[D>>2]=R;ph(f,31800,D);break a}case 0:{p=c[30128+(t*12|0)>>2]|0;C=Q+96|0;c[C>>2]=c[C>>2]|1<>2]|0)>>>0>m>>>0)c[(c[Q+4>>2]|0)+(m*20|0)+4>>2]=N;l=m+1|0;c[D>>2]=0;zn(R,D)|0;k=c[k>>2]|0;if(k>>>0>l>>>0)c[(c[Q+4>>2]|0)+(l*20|0)+4>>2]=c[D>>2];m=m+2|0;if(k>>>0<=m>>>0)break a;c[(c[Q+4>>2]|0)+(m*20|0)+4>>2]=N;c[(c[Q+4>>2]|0)+(m*20|0)+8>>2]=p;break a}m=uh(Q,3,31848)|0;k=c[Q+32>>2]|0;if(k>>>0>m>>>0)c[(c[Q+4>>2]|0)+(m*20|0)+4>>2]=N;m=m+1|0;if(k>>>0>m>>>0){c[(c[Q+4>>2]|0)+(m*20|0)+4>>2]=N;c[(c[Q+4>>2]|0)+(m*20|0)+12>>2]=p}eq(Q,1);if(a[(c[Q>>2]|0)+65>>0]|0)break a;Tg(c[Q+16>>2]|0,S,-1,1,-1)|0;break a}case 7:{eq(Q,1);c[P>>2]=1;if(!(a[(c[Q>>2]|0)+65>>0]|0)){Tg(c[Q+16>>2]|0,31864,-1,1,0)|0;l=0}else l=0;do{D=c[8648+(l<<2)>>2]|0;l=l+1|0;th(Q,sh(Q,97,0,1,0)|0,D,0);sh(Q,35,1,1,0)|0}while((l|0)!=4);break}case 35:{m=(c[h>>2]|0)!=0?N:10;if(R)if($c(R,31880)|0)if(!($c(R,31888)|0))l=2;else{l=($c(R,31896)|0)==0;l=l?3:0}else l=1;else l=0;eq(Q,3);c[P>>2]=3;if(((a[(c[Q>>2]|0)+65>>0]|0)==0?(Tg(c[Q+16>>2]|0,31912,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)?(Tg((c[Q+16>>2]|0)+40|0,31920,-1,1,0)|0,(a[(c[Q>>2]|0)+65>>0]|0)==0):0)Tg((c[Q+16>>2]|0)+80|0,31928,-1,1,0)|0;sh(Q,11,m,l,1)|0;sh(Q,35,1,3,0)|0;break a}case 26:{kf(T)|0;break a}case 34:{if(!R)l=c[T+216>>2]|0;else{c[D>>2]=0;zn(R,D)|0;l=c[D>>2]|0;if((l|0)>0)m=21;else{l=0;m=0}c[T+216>>2]=m;c[T+220>>2]=l;l=m}if((l|0)==21){l=c[T+220>>2]|0;m=l;l=((l|0)<0)<<31>>31}else{m=0;l=0}Ft(f,31944,m,l);break a}case 27:{if((R|0)!=0?(fi(R,u)|0)==0:0){D=u;Lc(c[D>>2]|0,c[D+4>>2]|0)|0}C=(Hc()|0)==0;D=9032;Ft(f,31976,C?c[D>>2]|0:-1,C?c[D+4>>2]|0:-1);break a}case 33:{if((R|0)!=0?(B=(fi(R,p)|0)==0,D=p,C=c[D+4>>2]|0,B&((C|0)>-1|(C|0)==-1&(c[D>>2]|0)>>>0>4294967295)):0)c[T+132>>2]=0;D=c[T+132>>2]|0;Ft(f,31992,D,((D|0)<0)<<31>>31);break a}case 12:{g=c[P>>2]|0;E=g+1|0;F=g+5|0;G=g+6|0;c[P>>2]=G;H=Kq(f)|0;eq(H,4);if((((a[(c[H>>2]|0)+65>>0]|0)==0?(Tg(c[H+16>>2]|0,31232,-1,1,0)|0,(a[(c[H>>2]|0)+65>>0]|0)==0):0)?(Tg((c[H+16>>2]|0)+40|0,20456,-1,1,0)|0,(a[(c[H>>2]|0)+65>>0]|0)==0):0)?(Tg((c[H+16>>2]|0)+80|0,31432,-1,1,0)|0,(a[(c[H>>2]|0)+65>>0]|0)==0):0)Tg((c[H+16>>2]|0)+120|0,31440,-1,1,0)|0;wr(f,N);t=c[(c[(c[O>>2]|0)+(N<<4)+12>>2]|0)+16>>2]|0;if(!t)break a;r=(R|0)==0;h=f+68|0;s=H+32|0;A=H+4|0;B=H+24|0;C=g+2|0;D=g+3|0;x=g+4|0;q=f+8|0;while(1){if(r){y=c[t>>2]|0;z=c[t+8>>2]|0}else{y=0;z=oh(f,0,R,I)|0}if((z|0)!=0?(J=z+16|0,(c[J>>2]|0)!=0):0){cs(f,N,c[z+32>>2]|0,0,c[z>>2]|0);g=(b[z+38>>1]|0)+G|0;if((g|0)>(c[P>>2]|0))c[P>>2]=g;Mq(f,0,N,z,54);t=c[z>>2]|0;th(H,sh(H,97,0,E,0)|0,t,0);t=c[J>>2]|0;if(!t)g=1;else{g=1;do{l=Wh(T,c[t+8>>2]|0,I)|0;do if(l){c[L>>2]=0;cs(f,N,c[l+32>>2]|0,0,c[l>>2]|0);if(It(f,l,t,L,0)|0)break a;m=c[L>>2]|0;if(!m){Mq(f,g,N,l,54);break}else{sh(H,54,g,c[m+40>>2]|0,N)|0;w=c[q>>2]|0;th(w,-1,ds(f,m)|0,-6);break}}while(0);g=g+1|0;t=c[t+4>>2]|0}while((t|0)!=0)}if((c[h>>2]|0)<(g|0))c[h>>2]=g;p=sh(H,108,0,0,0)|0;g=c[J>>2]|0;if(g){w=z+36|0;v=1;while(1){u=g+8|0;t=Wh(T,c[u>>2]|0,I)|0;c[L>>2]=0;c[K>>2]=0;o=(t|0)!=0;do if(o){It(f,t,g,L,K)|0;l=c[L>>2]|0;m=ts(H)|0;if(!(o&(l|0)==0)){t=m;M=306;break}t=c[g+36>>2]|0;if((t|0)==(b[w>>1]|0))sh(H,103,0,G,0)|0;else{sh(H,47,0,t,G)|0;Jt(H,z,t,G);sh(H,76,G,m,0)|0;sh(H,38,G,(c[s>>2]|0)+3|0,0)|0}sh(H,70,v,0,G)|0;sh(H,16,0,m,0)|0;t=c[s>>2]|0;if(t>>>0>1)c[(c[A>>2]|0)+((t+-2|0)*20|0)+8>>2]=t;c[(c[B>>2]|0)+88>>2]=t+-1;t=m}else{t=ts(H)|0;l=0;M=306}while(0);do if((M|0)==306){M=0;n=g+20|0;m=c[n>>2]|0;if((m|0)>0){k=0;do{m=c[K>>2]|0;if(!m)m=g+(k<<3)+36|0;else m=m+(k<<2)|0;O=k+G|0;jt(H,z,0,c[m>>2]|0,O);sh(H,76,O,t,0)|0;k=k+1|0;m=c[n>>2]|0}while((k|0)<(m|0))}if(!o)break;k=kt(H,l)|0;l=c[n>>2]|0;th(H,sh(H,49,G,m,F)|0,k,l);th(H,sh(H,69,v,t,F)|0,0,-14)}while(0);sh(H,103,0,C,0)|0;l=c[u>>2]|0;th(H,sh(H,97,0,D,0)|0,l,0);sh(H,25,v+-1|0,x,0)|0;sh(H,35,E,4,0)|0;l=c[B>>2]|0;m=~t;do if((t|0)<0){t=c[l+112>>2]|0;if(!t)break;c[t+(m<<2)>>2]=c[s>>2]}while(0);c[l+88>>2]=(c[s>>2]|0)+-1;ig(T,c[K>>2]|0);g=c[g+4>>2]|0;if(!g)break;else v=v+1|0}}sh(H,9,0,p+1|0,0)|0;g=c[s>>2]|0;if(g>>>0>p>>>0)c[(c[A>>2]|0)+(p*20|0)+8>>2]=g;c[(c[B>>2]|0)+88>>2]=g+-1}if(!y)break;else t=y}break}case 10:{n=1<>2]=c[C>>2]|n;if(R){c[D>>2]=0;zn(R,D)|0;k=c[D>>2]|0;if((k|0)<=-1)k=(k|0)==-2147483648?2147483647:0-k|0;D=c[f+408>>2]|0;wr(f,N);D=((D|0)==0?f:D)+328|0;c[D>>2]=c[D>>2]|n;sh(Q,25,k,1,0)|0;sh(Q,52,N,3,1)|0;c[(c[z+(N<<4)+12>>2]|0)+80>>2]=k;lq(c[z+(N<<4)+4>>2]|0,k);break a}eq(Q,1);if(!(a[(c[Q>>2]|0)+65>>0]|0))Tg(c[Q+16>>2]|0,30848,-1,1,0)|0;c[P>>2]=(c[P>>2]|0)+2;k=uh(Q,9,30808)|0;l=c[Q+32>>2]|0;if(l>>>0>k>>>0)c[(c[Q+4>>2]|0)+(k*20|0)+4>>2]=N;m=k+1|0;if(l>>>0>m>>>0)c[(c[Q+4>>2]|0)+(m*20|0)+4>>2]=N;m=k+6|0;if(l>>>0<=m>>>0)break a;c[(c[Q+4>>2]|0)+(m*20|0)+4>>2]=2e3;break a}case 1:{k=c[z+(N<<4)+4>>2]|0;if(!R){m=c[k+4>>2]|0;c[m+4>>2]=c[k>>2];if(!(a[m+17>>0]|0)){m=0;l=0}else{l=(a[m+18>>0]|0)==0;m=l?1:2;l=l?0:0}Ft(f,30976,m,l);break a}if($c(R,32192)|0)if($c(R,31880)|0)if(!($c(R,32200)|0))m=2;else{c[D>>2]=0;zn(R,D)|0;m=c[D>>2]|0;m=m>>>0<3?m&255:0}else m=1;else m=0;a[T+67>>0]=m;o=m+-1|0;if(!((rn(k,m)|0)==0&o>>>0<2))break a;l=uh(Q,6,30992)|0;n=c[Q+32>>2]|0;if(n>>>0>l>>>0)c[(c[Q+4>>2]|0)+(l*20|0)+4>>2]=N;k=l+1|0;if(n>>>0>k>>>0)c[(c[Q+4>>2]|0)+(k*20|0)+4>>2]=N;k=l+2|0;m=l+4|0;if(n>>>0>k>>>0)c[(c[Q+4>>2]|0)+(k*20|0)+8>>2]=m;if(n>>>0>m>>>0)c[(c[Q+4>>2]|0)+(m*20|0)+4>>2]=o;m=l+5|0;if(n>>>0>m>>>0)c[(c[Q+4>>2]|0)+(m*20|0)+4>>2]=N;D=Q+96|0;c[D>>2]=c[D>>2]|1<>2]|0,!(D|(m|0)<1)):0)){c[q>>2]=2147483647;m=2147483647}l=c[f+408>>2]|0;wr(f,N);l=((l|0)==0?f:l)+328|0;c[l>>2]=c[l>>2]|1<>2]|0;if(l>>>0>m>>>0)c[(c[Q+4>>2]|0)+(m*20|0)+8>>2]=l;c[(c[Q+24>>2]|0)+88>>2]=l+-1;break a}case 18:{eq(Q,1);if(!(a[(c[Q>>2]|0)+65>>0]|0))Tg(c[Q+16>>2]|0,30936,-1,1,0)|0;f:do if(R){k=R;while(1)if(!(a[k>>0]|0))break;else k=k+1|0;m=k-R&1073741823;k=0;while(1){if(!(Bc(R,c[32216+(k<<2)>>2]|0,m)|0))break;k=k+1|0;if((k|0)==6){M=91;break f}}if((k|0)!=-1)n=N;else M=91}else M=91;while(0);if((M|0)==91)if(!(c[y>>2]|0)){c[y>>2]=1;k=-1;n=0}else{k=-1;n=N}m=c[T+20>>2]|0;if((m|0)>0){l=Q+96|0;do{m=m+-1|0;do if(c[(c[O>>2]|0)+(m<<4)+4>>2]|0){if((m|0)!=(n|0)?(c[y>>2]|0)!=0:0)break;c[l>>2]=c[l>>2]|1<0)}sh(Q,35,1,1,0)|0;break a}default:{if(!R)l=c[T+492>>2]|0;else{c[D>>2]=0;zn(R,D)|0;l=c[D>>2]|0;D=(l|0)>0;l=D?l:0;c[T+444>>2]=D?74:0;c[T+448>>2]=D?T:0;c[o>>2]=0;c[T+492>>2]=l}Ft(f,31968,l,((l|0)<0)<<31>>31);break a}}while(0)}else{k=c[n>>2]|0;if(k){c[D>>2]=k;ph(f,10344,D);Sc(c[n>>2]|0)}D=f+64|0;c[D>>2]=(c[D>>2]|0)+1;c[f+12>>2]=g;break}}while(0);ig(T,S);ig(T,R)}}while(0);i=U;return}function Cr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;a:do if(!d)d=0;else{f=d;while(1){if((a[f>>0]|0)==-121){d=c[b>>2]|0;if(!(a[(c[d>>2]|0)+145>>0]|0))break;a[f>>0]=101}d=c[f+4>>2]|0;if(d&16384){d=0;break a}e=f+20|0;if(!(d&2048)){if(Dr(b,c[e>>2]|0)|0){d=1;break a}}else if(br(b,c[e>>2]|0)|0){d=1;break a}if(Cr(b,c[f+16>>2]|0)|0){d=1;break a}f=c[f+12>>2]|0;if(!f){d=0;break a}}c[g>>2]=c[b+16>>2];ph(d,29984,g);d=1}while(0);i=h;return d|0}function Dr(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((b|0)!=0?(c[b>>2]|0)>0:0){d=0;e=c[b+4>>2]|0;while(1){if(Cr(a,c[e>>2]|0)|0){d=1;break a}d=d+1|0;if((d|0)>=(c[b>>2]|0)){d=0;break}else e=e+20|0}}else d=0;while(0);return d|0}function Er(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;th(a,sh(a,122,b,0,0)|0,d,-1);d=c[(c[a>>2]|0)+20>>2]|0;if((d|0)>0){e=a+96|0;b=c[e>>2]|0;a=0;do{b=b|1<>2]=b}return}function Fr(a,d){a=a|0;d=d|0;var e=0,f=0;e=d+8|0;f=Qr(a,0,e)|0;d=d+24|0;gg(c[a>>2]|0,c[d>>2]|0);c[d>>2]=f;if(f){d=f+40|0;b[d>>1]=(b[d>>1]|0)+1<<16>>16}e=(Nt(a,e)|0)==0;return (e?f:0)|0}function Gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;a:do if((b|0)!=0?(f=c[a+12>>2]|0,(c[b>>2]|0)>0):0){g=a+8|0;h=a+4|0;k=0;l=b+8|0;while(1){if(!(c[g>>2]|0)){e=l+4|0;d=c[e>>2]|0;if((d|0)!=0?($c(d,f)|0)!=0:0)break;ig(c[c[a>>2]>>2]|0,d);c[e>>2]=0;c[l>>2]=c[h>>2]}if(br(a,c[l+20>>2]|0)|0){d=1;break a}if(Cr(a,c[l+44>>2]|0)|0){d=1;break a}k=k+1|0;if((k|0)>=(c[b>>2]|0)){d=0;break a}else l=l+72|0}b=c[a>>2]|0;l=c[a+20>>2]|0;c[m>>2]=c[a+16>>2];c[m+4>>2]=l;c[m+8>>2]=d;ph(b,29936,m);d=1}else d=0;while(0);i=n;return d|0}function Hr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;g=c[b>>2]|0;if((((a[g+145>>0]|0)==0?(a[b+18>>0]|0)==0:0)?(c[g+24>>2]&2048|0)==0:0)?(Bc(d,25568,7)|0)==0:0){c[e>>2]=d;ph(b,28440,e);b=1}else b=0;i=f;return b|0}function Ir(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;v=i;i=i+16|0;if((i|0)>=(j|0))ba();u=v;do if(d){r=e&1;t=(f|0)!=0;if(t){g=c[f>>2]|0;p=32768}else{g=Ot(d,e)|0;g=ih(b,g,((g|0)<0)<<31>>31)|0;p=0}c[u>>2]=g;if(g){l=(r|0)==0;if(!l)if(!(c[d+12>>2]|0))o=(c[d+20>>2]|0)==0?16396:8220;else o=8220;else o=48;q=o&60;s=d+4|0;m=c[s>>2]|0;if((m&1024|0)==0?(h=c[d+8>>2]|0,(h|0)!=0):0){k=h;while(1)if(!(a[k>>0]|0))break;else k=k+1|0;n=(k-h&1073741823)+1|0}else n=0;if(l){if(!(m&16384))k=(m&8192|0)==0?48:28;else k=12;gw(g|0,d|0,k|0)|0;bw(g+k|0,0,48-k|0)|0}else gw(g|0,d|0,q|0)|0;m=g+4|0;h=o&24576|p|c[m>>2]&-122881;c[m>>2]=h;if(n){h=g+q|0;c[g+8>>2]=h;gw(h|0,c[d+8>>2]|0,n|0)|0;h=c[m>>2]|0}k=c[s>>2]|0;do if(!((h|k)&16384)){h=d+20|0;if(!(k&2048)){c[g+20>>2]=Lr(b,c[h>>2]|0,r)|0;break}else{c[g+20>>2]=cr(b,c[h>>2]|0,r)|0;break}}while(0);h=c[m>>2]|0;if(!(h&24576)){if(c[s>>2]&16384)break;c[g+12>>2]=Ir(b,c[d+12>>2]|0,0,0)|0;c[g+16>>2]=Ir(b,c[d+16>>2]|0,0,0)|0;break}r=Pt(d,e)|0;c[u>>2]=(c[u>>2]|0)+r;if(h&8192){c[g+12>>2]=Ir(b,c[d+12>>2]|0,1,u)|0;c[g+16>>2]=Ir(b,c[d+16>>2]|0,1,u)|0}if(t)c[f>>2]=c[u>>2]}}else g=0;while(0);i=v;return g|0}function Jr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;a:do if((b|0)!=0?(d=ih(a,8,0)|0,(d|0)!=0):0){g=b+4|0;c[d+4>>2]=c[g>>2];e=ih(a,c[g>>2]<<3,0)|0;c[d>>2]=e;if(!e){ig(a,d);d=0;break}if((c[g>>2]|0)>0){f=0;while(1){h=c[b>>2]|0;c[e+(f<<3)>>2]=gh(a,c[h+(f<<3)>>2]|0)|0;c[e+(f<<3)+4>>2]=c[h+(f<<3)+4>>2];f=f+1|0;if((f|0)>=(c[g>>2]|0))break a;e=c[d>>2]|0}}}else d=0;while(0);return d|0}function Kr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=e+4|0;g=(c[f>>2]|0)+40|0;b=ih(b,g,0)|0;if(b){bw(b|0,0,g|0)|0;g=b+40|0;gw(g|0,c[e>>2]|0,c[f>>2]|0)|0;c[b+12>>2]=g;c[b+16>>2]=c[f>>2];a[b>>0]=d}return b|0}function Lr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;do if((d|0)!=0?(f=ih(b,8,0)|0,(f|0)!=0):0){g=c[d>>2]|0;c[f>>2]=g;if(!(e&1)){h=c[d>>2]|0;g=1;while(1)if((g|0)<(h|0))g=g<<1;else break}g=ih(b,g*20|0,0)|0;c[f+4>>2]=g;if(!g){ig(b,f);f=0;break}if((c[d>>2]|0)>0){i=0;h=c[d+4>>2]|0;while(1){c[g>>2]=Ir(b,c[h>>2]|0,e,0)|0;c[g+4>>2]=gh(b,c[h+4>>2]|0)|0;c[g+8>>2]=gh(b,c[h+8>>2]|0)|0;a[g+12>>0]=a[h+12>>0]|0;j=g+13|0;k=a[j>>0]|0;a[j>>0]=k&-2;a[j>>0]=a[h+13>>0]&2|k&-4;c[g+16>>2]=c[h+16>>2];i=i+1|0;if((i|0)>=(c[d>>2]|0))break;else{g=g+20|0;h=h+20|0}}}}else f=0;while(0);return f|0}function Mr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();k=o;l=c[a>>2]|0;f=c[b+20>>2]|0;a:do if(f){e=c[l+20>>2]|0;if((e|0)>0){d=c[l+16>>2]|0;h=0;while(1){g=h+1|0;if((c[d+(h<<4)+12>>2]|0)==(f|0)){g=h;break a}if((g|0)<(e|0))h=g;else break}}else g=0}else g=-1e6;while(0);d=Zm((c[b+24>>2]|0)+8|0,c[b+4>>2]|0,k)|0;if(!d)f=0;else f=c[d+8>>2]|0;d=c[(c[l+16>>2]|0)+(g<<4)>>2]|0;e=(g|0)==1;if((((Oq(a,e?14:16,c[b>>2]|0,c[f>>2]|0,d)|0)==0?(Oq(a,9,e?13184:13208,0,d)|0)==0:0)?(m=Kq(a)|0,(m|0)!=0):0)?(n=c[a+408>>2]|0,wr(a,g),n=((n|0)==0?a:n)+328|0,c[n>>2]=c[n>>2]|1<>2]|0,0),th(m,n+4|0,10720,-2),zr(a,g),sh(m,61,0,0,0)|0,n=c[b>>2]|0,th(m,sh(m,126,g,0,0)|0,n,0),n=a+72|0,(c[n>>2]|0)<3):0)c[n>>2]=3;i=o;return}function Nr(d,e,f,g,h,k,l){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();m=s;q=c[d>>2]|0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m+24>>2]=0;c[m+28>>2]=0;c[m>>2]=d;do if(h)if((a[h>>0]|0)!=27)if(!(hs(m,h)|0)){r=5;break}else{r=13;break}else{a[h>>0]=97;r=5;break}else r=5;while(0);a:do if((r|0)==5){do if(k)if((a[k>>0]|0)!=27)if(!(hs(m,k)|0))break;else{r=13;break a}else{a[k>>0]=97;break}while(0);do if(l)if((a[l>>0]|0)!=27)if(!(hs(m,l)|0))break;else{r=13;break a}else{a[l>>0]=97;break}while(0);if(g){if((a[g>>0]|0)==97)g=c[g+8>>2]|0;else g=0;if(Oq(d,e,g,0,0)|0)break}p=Kq(d)|0;m=d+60|0;g=c[m>>2]|0;n=d+56|0;o=c[n>>2]|0;if((o|0)<4){o=d+72|0;g=c[o>>2]|0;c[o>>2]=g+4;g=g+1|0}else{c[m>>2]=g+4;c[n>>2]=o+-4}Nq(d,h,g);Nq(d,k,g+1|0);Nq(d,l,g+2|0);if(p){g=g+3|0;sh(p,1,0,g-(b[f>>1]|0)|0,g)|0;g=c[p+4>>2]|0;if(g)a[g+(((c[p+32>>2]|0)+-1|0)*20|0)+3>>0]=b[f>>1];th(p,-1,f,-5);sh(p,144,(e|0)==24&1,0,0)|0}}while(0);if((r|0)==13){f=d+64|0;c[f>>2]=(c[f>>2]|0)+1}Ck(q,h);Ck(q,k);Ck(q,l);i=s;return}function Or(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;g=m+4|0;h=c[b>>2]|0;a:do if(!(Cn(b)|0)){if(!d){Qt(b,0);break}if(!((e|0)!=0?(c[e>>2]|0)!=0:0))f=6;do if((f|0)==6){f=Sq(c[b>>2]|0,d)|0;if(!f)break a;if(!(Un(h,a[h+62>>0]|0,f,0)|0)){ig(h,f);break}else{Qt(b,f);ig(h,f);break a}}while(0);d=ar(b,d,e,g)|0;if((d|0)>=0?(k=Sq(h,c[g>>2]|0)|0,(k|0)!=0):0){e=c[(c[h+16>>2]|0)+(d<<4)>>2]|0;f=Wh(h,k,e)|0;if(f){Rt(b,f,0);ig(h,k);break}e=Zp(h,k,e)|0;ig(h,k);if(!e){ph(b,28872,l);break}else{f=c[b+408>>2]|0;wr(b,d);f=((f|0)==0?b:f)+328|0;c[f>>2]=c[f>>2]|1<=(j|0))ba();f=h;g=c[a>>2]|0;if(!(Cn(a)|0)){do if(!b){b=g+20|0;e=c[b>>2]|0;if((e|0)>0){d=0;do{if((d|0)!=1){St(a,d);e=c[b>>2]|0}d=d+1|0}while((d|0)<(e|0))}}else{if(c[d+4>>2]|0){e=ar(a,b,d,f)|0;if((e|0)<=-1)break;e=c[(c[g+16>>2]|0)+(e<<4)>>2]|0;b=Sq(g,c[f>>2]|0)|0;if(!b)break;d=Zp(g,b,e)|0;if(!d){e=oh(a,0,b,e)|0;if(e)Tt(a,e,0)}else Tt(a,c[d+12>>2]|0,d);ig(g,b);break}d=Sq(g,b)|0;e=Rh(g,d)|0;ig(g,d);if((e|0)>-1){St(a,e);break}d=Sq(g,b)|0;if(d){e=Zp(g,d,0)|0;if(!e){e=oh(a,0,d,0)|0;if(e)Tt(a,e,0)}else Tt(a,c[e+12>>2]|0,e);ig(g,d)}}while(0);e=Kq(a)|0;if(e)sh(e,144,0,0,0)|0}i=h;return}function Qr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[d>>2]|0;if(!f)e=d+4|0;else{i=c[a>>2]|0;g=c[i+20>>2]|0;i=c[i+16>>2]|0;a:do if((g|0)>0){h=0;while(1){e=h+1|0;if((c[i+(h<<4)+12>>2]|0)==(f|0)){e=h;break a}if((e|0)<(g|0))h=e;else break}}else e=0;while(0);e=i+(e<<4)|0}return oh(a,b,c[d+8>>2]|0,c[e>>2]|0)|0}function Rr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;if(d){e=d;while(1)if(!(a[e>>0]|0))break;else e=e+1|0;if((e-d&1073741823)>>>0>6?(Bc(d,25568,7)|0)==0:0){c[f>>2]=d;ph(b,25576,f);e=1}else e=0}else e=0;i=g;return e|0}function Sr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;if(!b){c[e>>2]=d;a=qh(a,25992,e)|0}else{c[e>>2]=b;c[e+4>>2]=d;e=qh(a,26e3,e)|0;ig(a,b);a=e}i=f;return a|0}function Tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;e=c[a>>2]|0;f=c[(c[e+16>>2]|0)+28>>2]|0;if((c[b+68>>2]|0)!=(f|0)?(d=ws(a,b)|0,(d|0)!=0):0){b=d;d=0;do{if((c[b+20>>2]|0)==(f|0))d=Sr(e,d,c[b>>2]|0)|0;b=c[b+32>>2]|0}while((b|0)!=0);if(d){b=c[a>>2]|0;c[g>>2]=d;b=qh(b,25968,g)|0;ig(c[a>>2]|0,d);d=b}else d=0}else d=0;i=h;return d|0}function Ur(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();n=q;o=Kq(a)|0;if(o){e=c[a>>2]|0;h=c[b+68>>2]|0;a:do if(h){k=c[e+20>>2]|0;if((k|0)>0){f=c[e+16>>2]|0;g=0;while(1){e=g+1|0;if((c[f+(g<<4)+12>>2]|0)==(h|0))break a;if((e|0)<(k|0))g=e;else{g=e;break}}}else g=0}else g=-1e6;while(0);e=ws(a,b)|0;if(e)do{f=c[a>>2]|0;l=c[e+20>>2]|0;b:do if(l){m=c[f+20>>2]|0;if((m|0)>0){k=c[f+16>>2]|0;h=0;while(1){f=h+1|0;if((c[k+(h<<4)+12>>2]|0)==(l|0)){f=h;break b}if((f|0)<(m|0))h=f;else break}}else f=0}else f=-1e6;while(0);m=c[e>>2]|0;th(o,sh(o,126,f,0,0)|0,m,0);e=c[e+32>>2]|0}while((e|0)!=0);e=c[b>>2]|0;th(o,sh(o,124,g,0,0)|0,e,0);e=c[a>>2]|0;c[n>>2]=d;e=qh(e,25952,n)|0;if((e|0)!=0?(Er(o,g,e),p=Tr(a,b)|0,(p|0)!=0):0)Er(o,1,p)}i=q;return} -function ch(f){f=f|0;var g=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.0,z=0,A=0.0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,aa=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,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,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,gc=0,jc=0,kc=0,mc=0,oc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,ad=0,bd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0;ke=i;i=i+1040|0;if((i|0)>=(j|0))ba();ge=ke+400|0;Qc=ke+792|0;fd=ke+392|0;ad=ke+788|0;Pd=ke+320|0;jd=ke+784|0;md=ke+780|0;nd=ke+280|0;Kd=ke+680|0;Yc=ke+240|0;Nd=ke+200|0;Xc=ke+676|0;Uc=ke+672|0;Ld=ke+160|0;Rc=ke+644|0;qd=ke+152|0;Gd=ke+112|0;hd=ke+640|0;Id=ke+636|0;Vc=ke+632|0;rd=ke+628|0;xd=ke+624|0;td=ke+604|0;yd=ke+600|0;ld=ke+596|0;ud=ke+576|0;Pc=ke+840|0;zd=ke+572|0;Md=ke+104|0;Ad=ke+568|0;bd=ke+564|0;ed=ke+96|0;Od=ke+88|0;Bd=ke+560|0;Cd=ke+556|0;Dd=ke+552|0;vd=ke+532|0;wd=ke+512|0;gd=ke+508|0;sd=ke+504|0;Wc=ke+488|0;Jd=ke+48|0;Tc=ke+456|0;Oc=ke+444|0;Hd=ke+8|0;pd=ke+440|0;Fd=ke+412|0;Ed=ke;wc=f+4|0;o=c[wc>>2]|0;he=c[f>>2]|0;Gc=a[he+62>>0]|0;Kc=f+8|0;v=c[Kc>>2]|0;je=he+32|0;l=je;m=c[l>>2]|0;l=c[l+4>>2]|0;ie=f+80|0;a:do if((c[ie>>2]|0)==7){u=he+65|0;v=f+44|0;n=m;g=0;p=0;m=0;ee=1317}else{c[ie>>2]=0;$d=f+136|0;c[$d>>2]=0;c[$d+4>>2]=0;$d=f+20|0;c[$d>>2]=0;c[he+452>>2]=0;zc=he+240|0;b:do if(!(c[zc>>2]|0)){Zd=he+292|0;if(c[Zd>>2]|0){n=c[f+124>>2]|0;g=he+300|0;u=c[g>>2]|0;if(!n)vc=g;else{vc=g;u=(n>>>0)%(u>>>0)|0}}else{vc=he+300|0;u=0}de=f+76|0;ce=he+65|0;Vd=he+296|0;pb=f+176|0;qb=f+184|0;rb=f+92|0;sb=he+80|0;tb=he+84|0;ub=Gc&255;vb=Gc<<24>>24==1;wb=he+88|0;xb=f+60|0;Wd=f+144|0;be=f+86|0;fe=f+44|0;yb=f+12|0;zb=Rc+4|0;Ab=Rc+16|0;Bb=Rc+12|0;Cb=Rc+25|0;Db=Rc+20|0;Eb=f+200|0;Fb=f+56|0;Xd=f+72|0;Gb=Gd+16|0;Hb=Gd+8|0;Ib=Gd+24|0;Jb=f+87|0;Yd=he+156|0;Kb=he+500|0;Lb=he+496|0;ae=he+63|0;Mb=he+488|0;Nb=he+504|0;Ob=he+512|0;Pb=he+70|0;Qb=he+24|0;Rb=he+20|0;Td=he+16|0;Sb=he+4|0;Ud=f+88|0;Tb=f+104|0;Ub=f+152|0;Vb=f+160|0;Wb=he+152|0;Xb=he+64|0;_b=td+4|0;$b=td+6|0;ac=td+8|0;bc=ud+4|0;cc=ud+8|0;dc=he+212|0;ec=he+208|0;gc=f+116|0;jc=vd+4|0;kc=vd+6|0;mc=vd+8|0;oc=Yc+8|0;qc=Yc+32|0;rc=Yc+24|0;sc=Yc+16|0;tc=Yc+12|0;uc=wd+4|0;V=wd+6|0;W=wd+8|0;X=nd+8|0;Y=nd+32|0;aa=nd+24|0;ca=nd+12|0;da=nd+16|0;ea=he+164|0;fa=Wc+8|0;ga=Wc+4|0;ha=he+145|0;ia=Wc+12|0;ja=Pd+4|0;ka=Pd+12|0;la=Pd+16|0;ma=Pd+20|0;na=Pd+24|0;oa=Pd+28|0;pa=Pd+8|0;qa=Pd+40|0;ra=Pd+44|0;sa=Pd+48|0;ta=Pd+52|0;ua=Pd+56|0;va=Pd+60|0;wa=Pd+64|0;xa=Pd+65|0;ya=he+128|0;za=f+28|0;Aa=f+36|0;Ba=f+32|0;Ca=f+196|0;Da=Tc+4|0;Ea=Tc+8|0;Fa=Jd+8|0;Ga=Jd+32|0;Ha=Jd+24|0;Ia=Tc+20|0;Ja=Tc+12|0;Ka=Tc+16|0;La=Tc+24|0;Ma=Oc+8|0;Na=Oc+4|0;Oa=he+148|0;Pa=he+176|0;Qa=he+72|0;Ra=he+67|0;Sa=Qc+20|0;Ta=Qc+24|0;Ua=Qc+4|0;Va=Qc+16|0;Wa=he+304|0;Xa=he+328|0;Ya=Hd+32|0;Za=Hd+8|0;_a=Hd+24|0;$a=he+308|0;ab=Fd+20|0;bb=he+69|0;_d=f+168|0;cb=nd+4|0;db=nd+8|0;eb=nd+12|0;fb=nd+16|0;gb=nd+20|0;hb=nd+24|0;ib=nd+25|0;jb=he+180|0;kb=Ld+32|0;lb=Ld+8|0;mb=Ld+12|0;nb=Ld+16|0;ob=Ld+24|0;T=0;U=0;g=0;r=0;p=c[de>>2]|0;t=0;c:while(1){n=m;d:while(1){if(a[ce>>0]|0){u=ce;v=fe;m=t;ee=1317;break a}m=g+1|0;if(!(a[o+(p*20|0)+2>>0]&2))J=r;else{r=c[o+(p*20|0)+8>>2]|0;g=v+(r*40|0)|0;r=v+(r*40|0)+8|0;if(b[r>>1]&9312)rg(g);b[r>>1]=4;J=g}z=o+(p*20|0)|0;G=a[z>>0]|0;r=G&255;e:do switch(r|0){case 20:{g=m;m=n;ee=24;break d}case 21:{g=m;m=n;r=J;ee=25;break d}case 22:{g=m;m=n;r=J;ee=26;break d}case 23:{g=m;m=n;r=J;n=p;ee=27;break d}case 24:{g=m;m=n;r=J;n=p;ee=28;break d}case 29:{g=m;m=n;n=p;ee=65;break d}case 30:{g=m;m=n;r=J;n=p;ee=66;break d}case 28:{g=m;m=n;r=J;n=p;ee=60;break d}case 32:{g=m;m=n;n=p;ee=72;break d}case 17:{g=m;m=n;r=J;ee=22;break d}case 18:{g=m;m=n;r=J;ee=23;break d}case 25:{g=m;m=n;r=J;n=p;ee=44;break d}case 26:{g=m;m=n;r=J;n=p;ee=45;break d}case 133:{g=m;m=n;r=J;n=p;ee=46;break d}case 97:{a[z>>0]=27;z=o+(p*20|0)+16|0;s=c[z>>2]|0;if(!s)g=0;else{g=s;while(1)if(!(a[g>>0]|0))break;else g=g+1|0;g=g-s&1073741823}w=o+(p*20|0)+4|0;c[w>>2]=g;if(vb)r=0;else{r=Tg(J,s,-1,1,0)|0;if((r|0)==18){g=m;m=n;q=t;ee=1316;break c}if(Ul(J,ub)|0){u=ce;v=fe;g=m;m=t;ee=1317;break a}c[J+24>>2]=0;g=J+8|0;b[g>>1]=e[g>>1]|2048;g=o+(p*20|0)+1|0;if((a[g>>0]|0)==-1)ig(he,c[z>>2]|0);a[g>>0]=-1;s=c[J+16>>2]|0;c[z>>2]=s;g=c[J+12>>2]|0;c[w>>2]=g}if((g|0)>(c[wb>>2]|0)){g=m;m=n;q=t;ee=1316;break c}else ee=57;break}case 31:{g=m;m=n;r=J;n=p;ee=67;break d}case 34:{g=m;m=n;n=p;ee=79;break d}case 35:{g=m;m=n;q=t;ee=80;break c}case 33:{g=m;m=n;ee=74;break d}case 94:{g=m;m=n;ee=94;break d}case 93:case 92:case 91:case 90:case 89:{g=m;P=z;m=n;n=p;ee=112;break d}case 27:{s=c[o+(p*20|0)+16>>2]|0;g=c[o+(p*20|0)+4>>2]|0;r=0;ee=57;break}case 16:{p=(c[o+(p*20|0)+8>>2]|0)+-1|0;r=0;ee=19;break}case 36:{g=m;m=n;G=J;n=p;ee=166;break d}case 1:{S=a[o+(p*20|0)+3>>0]|0;z=S&255;x=c[yb>>2]|0;g=v+((c[o+(p*20|0)+12>>2]|0)*40|0)|0;c[Rc>>2]=g;if(S<<24>>24){w=0;g=v+((c[o+(p*20|0)+8>>2]|0)*40|0)|0;while(1){c[x+(w<<2)>>2]=g;if((b[g+8>>1]&4096)!=0?(Rl(g)|0)!=0:0){u=ce;v=fe;g=m;m=t;ee=1317;break a}w=w+1|0;if((w|0)>=(z|0))break;else g=g+40|0}g=c[Rc>>2]|0}S=c[o+(p*20|0)+16>>2]|0;c[zb>>2]=S;c[Ab>>2]=p;c[Bb>>2]=f;R=g+8|0;b[R>>1]=e[R>>1]&48640|1;a[Cb>>0]=0;R=je;c[R>>2]=n;c[R+4>>2]=l;ic[c[S+12>>2]&63](Rc,z,x);l=je;n=c[l>>2]|0;l=c[l+4>>2]|0;if(!(a[Cb>>0]|0))g=0;else{if(!(c[Db>>2]|0))g=0;else{c[ge>>2]=Og(c[Rc>>2]|0,1)|0;$g(fe,he,10344,ge);g=c[Db>>2]|0}am(f,p,c[o+(p*20|0)+4>>2]|0)}Ul(c[Rc>>2]|0,ub)|0;s=c[Rc>>2]|0;w=e[s+8>>1]|0;if(w&18){r=c[s+12>>2]|0;if(w&16384)r=(c[s>>2]|0)+r|0;if((r|0)>(c[(c[s+32>>2]|0)+88>>2]|0)){g=m;m=n;q=t;ee=1316;break c}else{z=J;R=p;r=g}}else{z=J;R=p;r=g}break}case 88:case 87:case 86:case 85:{g=m;E=z;m=n;n=p;ee=184;break d}case 39:{g=m;m=n;G=J;n=p;ee=208;break d}case 37:{g=m;m=n;r=J;n=p;ee=202;break d}case 38:{g=m;m=n;G=J;n=p;ee=203;break d}case 83:case 80:case 81:case 82:case 78:case 79:{g=m;F=G;m=n;r=J;ee=213;break d}case 40:{S=c[o+(p*20|0)+4>>2]|0;g=v+(S*40|0)|0;if(!(b[v+(S*40|0)+8>>1]&16384))r=0;else r=Ng(g)|0;cm(g,c[o+(p*20|0)+8>>2]&255,Gc);z=J;R=p;break}case 41:{g=m;m=n;r=J;n=p;ee=248;break d}case 42:{g=m;m=n;r=J;n=p;ee=249;break d}case 43:{g=m;m=n;r=J;ee=256;break d}case 71:case 72:{g=m;m=n;n=p;ee=261;break d}case 76:{g=m;m=n;r=J;n=p;ee=286;break d}case 19:{g=m;m=n;n=p;ee=268;break d}case 96:{g=m;m=n;n=p;ee=273;break d}case 44:{g=m;m=n;r=J;n=p;ee=278;break d}case 46:case 45:{g=m;m=n;r=J;n=p;ee=281;break d}case 77:{g=m;m=n;r=J;n=p;ee=288;break d}case 47:{g=m;m=n;r=J;ee=290;break d}case 48:{g=m;m=n;r=J;n=p;ee=368;break d}case 49:{g=m;m=n;ee=371;break d}case 50:{B=c[c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]>>2]|0;f:do if(c[B+60>>2]|0){g=mm(B)|0;if(!g){K=B+76|0;I=B+44|0;w=B+72|0;s=0;r=0;g:while(1){z=b[K>>1]|0;G=c[B+(z<<16>>16<<2)+120>>2]|0;if(!(a[G+5>>0]|0)){if(!(a[G+2>>0]|0)){s=fw(e[G+18>>1]|0,0,s|0,r|0)|0;r=C}}else{s=fw(e[G+18>>1]|0,0,s|0,r|0)|0;r=C;while(1){if(!(z<<16>>16))break g;if(G){xg(c[G+68>>2]|0);z=b[K>>1]|0}z=z+-1<<16>>16;b[K>>1]=z;b[I>>1]=0;a[w>>0]=d[w>>0]&249;G=z<<16>>16;x=B+(G<<1)+78|0;F=b[x>>1]|0;G=c[B+(G<<2)+120>>2]|0;if((F&65535)<(e[G+18>>1]|0)){z=F;break}}b[x>>1]=z+1<<16>>16;G=b[K>>1]|0;z=G;G=c[B+(G<<16>>16<<2)+120>>2]|0}z=b[B+(z<<16>>16<<1)+78>>1]|0;x=c[G+56>>2]|0;if(z<<16>>16==(b[G+18>>1]|0)){g=d[G+6>>0]|0;g=nm(B,d[x+(g+9)>>0]<<16|d[x+(g+8)>>0]<<24|d[x+(g+10)>>0]<<8|d[x+(g+11)>>0])|0}else{g=(z&65535)<<1;S=c[G+64>>2]|0;g=(d[S+g>>0]<<8|d[S+(g|1)>>0])&e[G+20>>1];g=nm(B,d[x+(g+1)>>0]<<16|d[x+g>>0]<<24|d[x+(g+2)>>0]<<8|d[x+(g+3)>>0])|0}if(g){s=0;r=0;break f}}g=mm(B)|0}else{s=0;r=0}}else{g=0;s=0;r=0}while(0);z=J;c[z>>2]=s;c[z+4>>2]=r;z=J;R=p;r=g;break}case 2:{O=c[o+(p*20|0)+4>>2]|0;s=c[o+(p*20|0)+16>>2]|0;if(!O){g=m;m=n;r=J;n=p;ee=446;break d}w=c[Mb>>2]|0;if(!w){o=s;g=m;m=n;q=t;ee=460;break c}else g=0;while(1){if(!($c(c[w>>2]|0,s)|0)){G=g;break}w=c[w+24>>2]|0;if(!w){o=s;g=m;m=n;q=t;ee=460;break c}else g=g+1|0}K=(O|0)==1;if((c[Yd>>2]|0)>0&K){g=m;m=n;q=t;ee=462;break c}I=w+24|0;if(!(c[I>>2]|0)){x=(a[Pb>>0]|0)!=0;if(x&K){g=pm(f,1)|0;if(g)break a;a[ae>>0]=1;if((Nl(f)|0)==5){g=p;ee=467;break c}a[Pb>>0]=0;x=1;r=c[ie>>2]|0}else ee=469}else{x=0;ee=469}if((ee|0)==469){ee=0;s=(c[Lb>>2]|0)-G+-1|0;if((O|0)==2){z=(c[Qb>>2]|0)>>>1&1;if((c[Rb>>2]|0)>0){G=z^1;F=0;while(1){E=El(c[(c[Td>>2]|0)+(F<<4)+4>>2]|0,516,G)|0;F=F+1|0;if(E){g=m;m=n;q=E;ee=1318;break c}g=c[Rb>>2]|0;if((F|0)>=(g|0)){ee=475;break}}}}else{g=c[Rb>>2]|0;z=0;ee=475}if((ee|0)==475){ee=0;if((g|0)>0){B=0;do{G=qm(c[(c[Td>>2]|0)+(B<<4)+4>>2]|0,O,s)|0;B=B+1|0;if(G){g=m;m=n;q=G;ee=1318;break c}}while((B|0)<(c[Rb>>2]|0))}}if(!z){G=s;r=0}else{z=c[Sb>>2]|0;if(z)do{S=z+88|0;b[S>>1]=b[S>>1]|8;z=c[z+52>>2]|0}while((z|0)!=0);Ag(he);c[Qb>>2]=c[Qb>>2]|2;G=s;r=0}}z=c[Mb>>2]|0;if((z|0)!=(w|0))do{c[Mb>>2]=c[z+24>>2];ig(he,z);c[Lb>>2]=(c[Lb>>2]|0)+-1;z=c[Mb>>2]|0}while((z|0)!=(w|0));if(K){c[Mb>>2]=c[I>>2];ig(he,w);if(x){z=J;R=p;break e}else{g=m;z=O;m=n;x=G;r=J;n=p;ee=486;break d}}else{S=w+8|0;R=c[S+4>>2]|0;Q=Nb;c[Q>>2]=c[S>>2];c[Q+4>>2]=R;Q=w+16|0;R=c[Q+4>>2]|0;S=Ob;c[S>>2]=c[Q>>2];c[S+4>>2]=R;if(x){z=J;R=p;break e}else{z=O;g=m;m=n;x=G;r=J;n=p;ee=488;break d}}}case 3:{q=t;ee=489;break c}case 4:{w=o+(p*20|0)+8|0;g=c[w>>2]|0;if((g|0)!=0?(c[Qb>>2]&33554432|0)!=0:0){g=m;m=n;q=8;ee=1318;break c}F=o+(p*20|0)+4|0;G=c[(c[Td>>2]|0)+(c[F>>2]<<4)+4>>2]|0;if(!G){r=0;w=0;g=0}else{z=ug(G,g)|0;if((z|0)==5){g=p;ee=508;break c}else if(z){g=m;m=n;q=z;ee=1318;break c}do if((c[w>>2]|0)!=0?(b[Ud>>1]&32)!=0:0){if((a[ae>>0]|0)!=0?(c[Wb>>2]|0)<=1:0){g=0;break}g=c[Tb>>2]|0;if(!g){g=(c[Kb>>2]|0)+1|0;c[Kb>>2]=g;g=(c[Lb>>2]|0)+g|0;c[Tb>>2]=g}g=om(he,0,g+-1|0)|0;if(!g){g=c[Tb>>2]|0;S=c[G+4>>2]|0;c[S+4>>2]=c[G>>2];g=dl(c[S>>2]|0,g)|0}S=Nb;R=c[S+4>>2]|0;Q=Ub;c[Q>>2]=c[S>>2];c[Q+4>>2]=R;Q=Ob;R=c[Q+4>>2]|0;S=Vb;c[S>>2]=c[Q>>2];c[S+4>>2]=R}else g=0;while(0);r=c[G+4>>2]|0;c[r+4>>2]=c[G>>2];r=c[(c[r+12>>2]|0)+56>>2]|0;r=d[r+41>>0]<<16|d[r+40>>0]<<24|d[r+42>>0]<<8|d[r+43>>0];w=c[(c[(c[Td>>2]|0)+(c[F>>2]<<4)+12>>2]|0)+4>>2]|0}if(a[o+(p*20|0)+3>>0]|0){if((r|0)!=(c[o+(p*20|0)+12>>2]|0)){g=m;o=F;m=n;q=t;ee=522;break c}if((w|0)!=(c[o+(p*20|0)+16>>2]|0)){g=m;o=F;m=n;q=t;ee=522;break c}else{z=J;R=p;r=g}}else{z=J;R=p;r=g}break}case 53:{g=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;if((g|0)!=0?(c[g+28>>2]|0)==(c[o+(p*20|0)+8>>2]|0):0){w=o+(p*20|0)+3|0;r=0;ee=548}else ee=536;break}case 51:{g=m;m=n;r=J;n=p;ee=525;break d}case 52:{x=o+(p*20|0)+4|0;w=c[x>>2]|0;g=c[Td>>2]|0;z=c[o+(p*20|0)+12>>2]|0;s=v+(z*40|0)|0;r=Rg(s)|0;S=s;c[S>>2]=r;c[S+4>>2]=C;z=v+(z*40|0)+8|0;b[z>>1]=e[z>>1]&48640|4;z=o+(p*20|0)+8|0;r=zg(c[g+(w<<4)+4>>2]|0,c[z>>2]|0,r)|0;z=c[z>>2]|0;if((z|0)==1){c[c[g+(w<<4)+12>>2]>>2]=c[s>>2];c[Qb>>2]=c[Qb>>2]|2}else if((z|0)==2)a[(c[g+(w<<4)+12>>2]|0)+76>>0]=c[s>>2];if((c[x>>2]|0)==1){g=c[Sb>>2]|0;if(g)do{S=g+88|0;b[S>>1]=b[S>>1]|8;g=c[g+52>>2]|0}while((g|0)!=0);b[Ud>>1]=b[Ud>>1]&-9;z=J;R=p}else{z=J;R=p}break}case 55:case 54:{ee=536;break}case 57:case 56:{w=tm(f,c[o+(p*20|0)+4>>2]|0,c[o+(p*20|0)+8>>2]|0,-1,1)|0;if(!w){u=ce;v=fe;g=m;m=t;ee=1317;break a}a[w+25>>0]=1;G=w+27|0;a[G>>0]=a[G>>0]|1;g=w+4|0;F=o+(p*20|0)+3|0;r=vm(c[he>>2]|0,0,he,g,d[F>>0]|5,1054)|0;do if(!r){r=ug(c[g>>2]|0,1)|0;if(!r){x=c[o+(p*20|0)+16>>2]|0;z=c[g>>2]|0;if(!x){r=um(z,1,1,0,c[w>>2]|0)|0;a[G>>0]=a[G>>0]|4;break}r=wm(z,rd,d[F>>0]|2)|0;if(!r){c[w+8>>2]=x;r=um(c[g>>2]|0,c[rd>>2]|0,1,x,c[w>>2]|0)|0}a[G>>0]=a[G>>0]&-5}}while(0);a[G>>0]=((a[F>>0]|0)!=8&1)<<3&255|a[G>>0]&-9;z=J;R=p;break}case 58:{g=m;m=n;ee=558;break d}case 60:{g=m;m=n;r=J;ee=568;break d}case 61:{g=m;m=n;r=J;n=p;ee=570;break d}case 59:{g=m;m=n;r=J;n=p;ee=566;break d}case 65:case 64:case 63:case 62:{g=m;w=r;m=n;r=J;n=p;ee=571;break d}case 66:{g=m;m=n;r=J;n=p;ee=596;break d}case 69:case 68:case 67:{g=m;I=z;m=n;r=J;ee=597;break d}case 73:{g=m;m=n;r=J;n=p;ee=624;break d}case 70:{S=c[o+(p*20|0)+12>>2]|0;g=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;r=c[g>>2]|0;c[zd>>2]=0;S=v+(S*40|0)|0;R=c[S>>2]|0;S=c[S+4>>2]|0;r=ym(r,0,R,S,0,zd)|0;s=g+48|0;c[s>>2]=R;c[s+4>>2]=S;a[g+25>>0]=0;c[g+60>>2]=0;a[g+26>>0]=0;s=c[zd>>2]|0;if(s)p=(c[o+(p*20|0)+8>>2]|0)+-1|0;c[g+12>>2]=s;z=J;R=p;break}case 74:{K=Md;c[K>>2]=0;c[K+4>>2]=0;c[Ad>>2]=0;K=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;g=c[K>>2]|0;if(!g){r=0;s=0;g=0}else{s=K+27|0;do if(!(a[s>>0]&2)){z=Dm(g,Ad)|0;if(z){g=m;m=n;q=z;ee=1318;break c}if(c[Ad>>2]|0){S=Md;c[S>>2]=1;c[S+4>>2]=0;break}gm(c[K>>2]|0,Md);r=Md;g=c[r>>2]|0;r=c[r+4>>2]|0;if((g|0)==-1&(r|0)==2147483647){a[s>>0]=a[s>>0]|2;break}else{R=fw(g|0,r|0,1,0)|0;S=Md;c[S>>2]=R;c[S+4>>2]=C;break}}while(0);G=c[o+(p*20|0)+12>>2]|0;if(G){g=c[pb>>2]|0;if(!g)z=v;else{while(1){w=c[g+4>>2]|0;if(!w)break;else g=w}z=c[g+16>>2]|0}F=z+(G*40|0)|0;x=Rg(F)|0;g=C;S=F;c[S>>2]=x;c[S+4>>2]=g;S=z+(G*40|0)+8|0;b[S>>1]=e[S>>1]&48640|4;if((x|0)==-1&(g|0)==2147483647){g=m;m=n;q=13;ee=1318;break c}if(a[s>>0]&2){g=m;m=n;q=13;ee=1318;break c}w=Md;r=c[w>>2]|0;w=c[w+4>>2]|0;z=fw(x|0,g|0,1,0)|0;x=C;if((w|0)<(x|0)|(w|0)==(x|0)&r>>>0>>0){w=Md;c[w>>2]=z;c[w+4>>2]=x;w=x}else z=r;S=F;c[S>>2]=z;c[S+4>>2]=w}h:do if(!(a[s>>0]&2))g=0;else{r=0;while(1){_c(8,Md);S=Md;S=fw(c[S>>2]|0,c[S+4>>2]&1073741823|0,1,0)|0;g=C;R=Md;c[R>>2]=S;c[R+4>>2]=g;g=ym(c[K>>2]|0,0,S,g,0,Ad)|0;if(c[Ad>>2]|g)break h;r=r+1|0;if((r|0)>=100){g=m;m=n;q=13;ee=1318;break c}}}while(0);a[K+26>>0]=0;c[K+60>>2]=0;s=Md;r=c[s>>2]|0;s=c[s+4>>2]|0}z=J;c[z>>2]=r;c[z+4>>2]=s;z=J;R=p;r=g;break}case 84:case 75:{g=m;z=G;m=n;r=J;n=p;ee=647;break d}case 95:{g=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;r=Fm(c[g>>2]|0)|0;c[g+60>>2]=0;if((((r|0)==0?(Dc=c[dc>>2]|0,(Dc|0)!=0):0)?(Ec=c[o+(p*20|0)+16>>2]|0,(Ec|0)!=0):0)?(a[g+27>>0]&4)!=0:0){S=g+48|0;Zb[Dc&1](c[ec>>2]|0,9,c[(c[Td>>2]|0)+(a[g+24>>0]<<4)>>2]|0,Ec,c[S>>2]|0,c[S+4>>2]|0)}if(!(c[o+(p*20|0)+8>>2]&1)){z=J;R=p}else{c[rb>>2]=(c[rb>>2]|0)+1;z=J;R=p}break}case 98:{g=m;m=n;r=J;n=p;ee=671;break d}case 99:{g=m;m=n;r=J;n=p;ee=672;break d}case 100:{r=c[o+(p*20|0)+8>>2]|0;z=v+(r*40|0)|0;g=c[(c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0)+56>>2]|0;if(!(a[g+56>>0]|0)){w=c[g+36>>2]|0;g=w;w=w+8|0}else{S=c[g+20>>2]|0;w=c[(c[S+8>>2]|0)+4>>2]|0;S=c[S+12>>2]|0;g=S+(w*56|0)+20|0;w=c[S+(w*56|0)+32>>2]|0}g=c[g>>2]|0;if(!(bh(z,g)|0)){c[v+(r*40|0)+12>>2]=g;S=v+(r*40|0)+8|0;b[S>>1]=e[S>>1]&48640|16;gw(c[v+(r*40|0)+16>>2]|0,w|0,g|0)|0;r=0}else r=7;c[(c[(c[Fb>>2]|0)+(c[o+(p*20|0)+12>>2]<<2)>>2]|0)+60>>2]=0;R=p;break}case 102:case 101:{s=c[o+(p*20|0)+8>>2]|0;G=v+(s*40|0)|0;x=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;z=c[x>>2]|0;x=x+27|0;if(a[x>>0]&4){hm(z,bd);g=c[bd>>2]|0;if(g>>>0>(c[wb>>2]|0)>>>0){g=m;m=n;q=t;ee=1316;break c}}else{gm(z,ed);Q=ed;g=c[Q>>2]|0;Q=c[Q+4>>2]|0;S=c[wb>>2]|0;R=((S|0)<0)<<31>>31;if((Q|0)>(R|0)|(Q|0)==(R|0)&g>>>0>S>>>0){g=m;m=n;q=t;ee=1316;break c}c[bd>>2]=g}if(bh(G,g>>>0>32?g:32)|0){u=ce;v=fe;g=m;m=t;ee=1317;break a}c[v+(s*40|0)+12>>2]=g;w=v+(s*40|0)+8|0;b[w>>1]=e[w>>1]&48640|16;w=c[bd>>2]|0;g=c[v+(s*40|0)+16>>2]|0;if(!(a[x>>0]&4))r=Hm(z,0,w,g,0)|0;else r=zh(z,0,w,g)|0;a[v+(s*40|0)+10>>0]=1;z=G;R=p;break}case 103:{r=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;s=r+25|0;if(a[s>>0]|0){g=m;m=n;r=J;n=p;ee=700;break d}do if(!(a[r+26>>0]|0)){g=c[r+32>>2]|0;if(g){S=c[g>>2]|0;r=nc[c[(c[S>>2]|0)+48>>2]&127](g,Od)|0;Im(f,S);break}if((a[(c[r>>2]|0)+73>>0]|0)!=1){z=fm(r)|0;if(z){g=m;m=n;q=z;ee=1318;break c}if(a[s>>0]|0){g=m;m=n;r=J;n=p;ee=708;break d}}gm(c[r>>2]|0,Od);r=0}else{R=r+48|0;S=c[R+4>>2]|0;r=Od;c[r>>2]=c[R>>2];c[r+4>>2]=S;r=0}while(0);S=Od;R=c[S+4>>2]|0;z=J;c[z>>2]=c[S>>2];c[z+4>>2]=R;z=J;R=p;break}case 108:{ee=715;break}case 104:{g=m;m=n;r=J;n=p;ee=711;break d}case 107:case 106:{c[gc>>2]=(c[gc>>2]|0)+1;ee=715;break}case 105:{R=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;r=c[R>>2]|0;c[Bd>>2]=0;r=Dm(r,Bd)|0;S=c[Bd>>2]|0;a[R+25>>0]=S;a[R+26>>0]=0;c[R+60>>2]=0;R=c[o+(p*20|0)+8>>2]|0;z=J;R=(R|0)>0&(S|0)!=0?R+-1|0:p;break}case 7:case 6:{if(!(c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0)){g=m;m=n;Q=v;w=o;R=T;S=U;r=J;n=p;break d}else ee=765;break}case 5:{g=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;c[Cd>>2]=0;w=c[g+56>>2]|0;if(a[w+56>>0]|0){r=Sm(c[w+20>>2]|0,Cd)|0;ee=766;break e}r=w+36|0;s=c[r>>2]|0;S=s+4|0;c[r>>2]=c[S>>2];c[S>>2]=0;if(!((c[w+40>>2]|0)!=0|(s|0)==0))ig(he,s);c[Cd>>2]=(c[r>>2]|0)==0&1;r=0;ee=766;break}case 9:case 8:{ee=765;break}case 110:case 109:{x=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;Q=c[o+(p*20|0)+8>>2]|0;g=c[x>>2]|0;z=o+(p*20|0)+3|0;if(a[z>>0]&1)c[rb>>2]=(c[rb>>2]|0)+1;if((b[v+(Q*40|0)+8>>1]&16384)!=0?(Rd=Ng(v+(Q*40|0)|0)|0,(Rd|0)!=0):0){g=m;m=n;o=Rd;q=t;ee=1309;break c}B=c[x+56>>2]|0;R=v+(Q*40|0)+12|0;P=c[R>>2]|0;if(!B){if(!(a[z>>0]&16))w=0;else w=c[x+12>>2]|0;r=Em(g,c[v+(Q*40|0)+16>>2]|0,P,((P|0)<0)<<31>>31,10360,0,0,c[o+(p*20|0)+12>>2]|0,w)|0;c[x+60>>2]=0;z=J;R=p;break e}z=P;w=((P|0)<0)<<31>>31;x=0;do{x=x+1|0;z=iw(z|0,w|0,7)|0;w=C}while(((z|0)!=0|(w|0)!=0)&(x|0)<9);s=P+8|0;F=x+P|0;K=B+4|0;x=c[K>>2]|0;do if(!x)r=0;else{if(!(c[B+40>>2]|0)){z=B+44|0;S=c[z>>2]|0;if((S|0)<=(x|0)?!((c[2265]|0)!=0?(S|0)>(c[B>>2]|0):0):0){r=0;break}}else{S=c[B+48>>2]|0;if(!((S|0)!=0&(S+s|0)>(x|0))){r=0;break}z=B+44|0}r=Km(B)|0;c[z>>2]=0;c[B+48>>2]=0}while(0);z=B+36|0;G=B+44|0;c[G>>2]=(c[G>>2]|0)+F;G=B+8|0;if((F|0)>(c[G>>2]|0))c[G>>2]=F;I=B+40|0;G=c[I>>2]|0;if(!G){w=mg(s,((s|0)<0)<<31>>31)|0;if(!w){g=m;m=n;o=7;q=t;ee=1309;break c}c[w+4>>2]=c[z>>2]}else{w=B+48|0;F=c[w>>2]|0;s=F+s|0;g=B+52|0;E=c[g>>2]|0;if((s|0)>(E|0)){F=E;do F=F<<1;while((F|0)<(s|0));S=c[K>>2]|0;F=(F|0)>(S|0)?S:F;F=(F|0)<(s|0)?s:F;G=ng(G,F,((F|0)<0)<<31>>31)|0;if(!G){g=m;m=n;o=7;q=t;ee=1309;break c}x=G+((c[z>>2]|0)-(c[I>>2]|0))|0;c[z>>2]=x;c[I>>2]=G;c[g>>2]=F;F=c[w>>2]|0}else x=c[z>>2]|0;c[w>>2]=F+(P+15&-8);c[G+(F+4)>>2]=x-G;w=G+F|0}gw(w+8|0,c[v+(Q*40|0)+16>>2]|0,c[R>>2]|0)|0;c[w>>2]=c[R>>2];c[z>>2]=w;z=J;R=p;break}case 112:{g=m;m=n;n=p;ee=801;break d}case 111:{w=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;g=c[w>>2]|0;c[vd>>2]=c[w+8>>2];b[jc>>1]=c[o+(p*20|0)+12>>2];a[kc>>0]=0;c[mc>>2]=v+((c[o+(p*20|0)+8>>2]|0)*40|0);r=ym(g,vd,0,0,0,Dd)|0;if(!(c[Dd>>2]|r))r=Fm(g)|0;c[w+60>>2]=0;z=J;R=p;break}case 116:case 115:case 114:case 113:{w=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;c[wd>>2]=c[w+8>>2];b[uc>>1]=c[o+(p*20|0)+16>>2];a[V>>0]=((G&255)<115)<<31>>31;c[W>>2]=v+((c[o+(p*20|0)+12>>2]|0)*40|0);S=Pd;c[S>>2]=0;c[S+4>>2]=0;gm(c[w>>2]|0,Pd);S=Pd;g=c[S>>2]|0;S=fw(g|0,c[S+4>>2]|0,-1,-1)|0;R=C;if(!(R>>>0>0|(R|0)==0&S>>>0>2147483646)){b[X>>1]=0;c[Y>>2]=he;c[aa>>2]=0;g=jm(c[w>>2]|0,0,g,1,nd)|0;if(!g){r=Gm(c[ca>>2]|0,c[da>>2]|0,wd,0)|0;if((b[X>>1]&9312)==0&(c[aa>>2]|0)==0)g=0;else{Mg(nd);g=0}}else r=0}else{c[ge>>2]=68730;c[ge+4>>2]=10788;Zc(11,13600,ge);g=11;r=0}if((((a[z>>0]&1)==0?r+1|0:0-r|0)|0)>0){z=J;R=(c[o+(p*20|0)+8>>2]|0)+-1|0;r=g}else{z=J;R=p;r=g}break}case 117:{O=J+8|0;b[O>>1]=1;if((c[Wb>>2]|0)>((c[ea>>2]|0)+1|0)){g=m;m=n;q=t;ee=832;break c}L=c[o+(p*20|0)+12>>2]|0;K=c[(c[Td>>2]|0)+(L<<4)+4>>2]|0;P=o+(p*20|0)+4|0;F=c[P>>2]|0;z=K+4|0;s=c[z>>2]|0;c[s+4>>2]=c[K>>2];c[ge>>2]=0;do if(!(c[s+8>>2]|0)){r=$k(s,F,ge,0)|0;if(!r){r=Tm(K,F,0)|0;if(r){w=c[ge>>2]|0;if(!w){x=0;break}xg(c[w+68>>2]|0);x=0;break}if(F>>>0<=1){w=c[ge>>2]|0;ll(w,9);if(!w){r=0;x=0;break}xg(c[w+68>>2]|0);r=0;x=0;break}if(!(a[s+17>>0]|0)){w=c[ge>>2]|0;r=Um(c[w+52>>2]|0,w,c[w+72>>2]|0)|0;if(!w){x=0;break}xg(c[w+68>>2]|0);x=0;break}G=c[z>>2]|0;c[G+4>>2]=c[K>>2];G=c[(c[G+12>>2]|0)+56>>2]|0;G=d[G+53>>0]<<16|d[G+52>>0]<<24|d[G+54>>0]<<8|d[G+55>>0];z=c[ge>>2]|0;if((G|0)==(F|0)){r=Um(c[z+52>>2]|0,z,c[z+72>>2]|0)|0;if(z)xg(c[z+68>>2]|0);if(!r)x=0;else{x=0;break}}else{if(z)xg(c[z+68>>2]|0);r=$k(s,G,Pd,0)|0;if(r){x=0;break}z=c[Pd>>2]|0;r=Vm(s,z,1,0,F,0)|0;if(z)xg(c[z+68>>2]|0);if(r){x=0;break}c[Pd>>2]=0;r=$k(s,G,Pd,0)|0;z=c[Pd>>2]|0;if(r){if(!z){x=0;break}}else r=Um(c[z+52>>2]|0,z,c[z+72>>2]|0)|0;xg(c[z+68>>2]|0);if(!r)x=G;else{x=0;break}}E=((c[2514]|0)>>>0)/((c[s+32>>2]|0)>>>0)|0;D=E+1|0;F=s+36|0;while(1){z=G+-1|0;if((z|0)==(D|0)){G=z;continue}if(z>>>0<2)B=0;else{B=G+-3|0;B=B-((B>>>0)%(((((c[F>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;B=((B+1|0)==(E|0)?3:2)+B|0}if((B|0)==(z|0))G=z;else break}r=zg(K,4,z)|0}else x=0}else{r=262;x=0}while(0);b[O>>1]=4;S=J;c[S>>2]=x;c[S+4>>2]=((x|0)<0)<<31>>31;if((r|0)==0&(x|0)!=0){g=m;K=L;z=P;m=n;r=J;n=p;ee=865;break d}else{z=J;R=p}break}case 118:{c[gd>>2]=0;g=o+(p*20|0)+12|0;r=Tm(c[(c[Td>>2]|0)+(c[o+(p*20|0)+8>>2]<<4)+4>>2]|0,c[o+(p*20|0)+4>>2]|0,(c[g>>2]|0)!=0?gd:0)|0;g=c[g>>2]|0;if((g|0)!=0?(Fc=c[gd>>2]|0,c[rb>>2]=(c[rb>>2]|0)+Fc,(g|0)>0):0){z=v+(g*40|0)|0;R=z;R=fw(c[R>>2]|0,c[R+4>>2]|0,Fc|0,((Fc|0)<0)<<31>>31|0)|0;c[z>>2]=R;c[z+4>>2]=C;z=J;R=p}else{z=J;R=p}break}case 121:case 120:{c[sd>>2]=0;r=wm(c[(c[Td>>2]|0)+(c[o+(p*20|0)+4>>2]<<4)+4>>2]|0,sd,G<<24>>24==121?1:2)|0;R=c[sd>>2]|0;z=J;c[z>>2]=R;c[z+4>>2]=((R|0)<0)<<31>>31;z=J;R=p;break}case 119:{g=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;r=c[g+56>>2]|0;if(r){g=m;m=n;G=J;n=p;ee=878;break d}r=c[g>>2]|0;z=J;R=p;r=Tm(c[r>>2]|0,c[r+60>>2]|0,0)|0;break}case 123:{z=J;R=p;r=Ym(he,c[o+(p*20|0)+4>>2]|0)|0;break}case 124:{g=m;m=n;r=J;n=p;ee=886;break d}case 122:{g=m;m=n;G=J;n=p;ee=881;break d}case 126:{g=m;m=n;r=J;n=p;ee=895;break d}case 125:{g=m;m=n;G=J;n=p;ee=887;break d}case 127:{g=m;m=n;r=J;ee=903;break d}case 128:{g=m;m=n;G=J;ee=947;break d}case 129:{s=c[o+(p*20|0)+4>>2]|0;r=v+(s*40|0)|0;s=v+(s*40|0)+8|0;g=b[s>>1]|0;do if(g&32){B=c[r>>2]|0;g=B+26|0;w=b[g>>1]|0;if(!(w&2)){if(!(w&1)){w=B+8|0;c[w>>2]=fn(c[w>>2]|0)|0;w=b[g>>1]|0}b[g>>1]=w&65535|2}z=B+8|0;x=c[z>>2]|0;if(!x){g=b[s>>1]|0;break}s=x;w=c[s>>2]|0;s=c[s+4>>2]|0;S=c[x+8>>2]|0;c[z>>2]=S;if(!S)Vk(B);r=c[o+(p*20|0)+12>>2]|0;g=v+(r*40|0)|0;r=v+(r*40|0)+8|0;if(!(b[r>>1]&9312)){ee=g;c[ee>>2]=w;c[ee+4>>2]=s;b[r>>1]=4;r=0;ee=19;break e}else{Vg(g,w,s);r=0;ee=19;break e}}while(0);if(!(g&9312))b[s>>1]=1;else rg(r);p=(c[o+(p*20|0)+8>>2]|0)+-1|0;r=0;ee=19;break}case 130:{g=m;m=n;r=J;ee=966;break d}case 131:{g=m;m=n;r=J;n=p;ee=993;break d}case 132:{g=m;m=n;r=J;n=p;ee=1009;break d}case 134:{g=m;m=n;G=J;n=p;ee=1010;break d}case 135:{g=m;m=n;r=J;n=p;ee=1015;break d}case 136:{g=m;m=n;n=p;ee=1022;break d}case 137:{g=m;m=n;r=J;n=p;ee=1028;break d}case 138:{g=m;m=n;r=J;n=p;ee=1030;break d}case 139:{g=m;m=n;G=J;n=p;ee=1032;break d}case 140:{g=m;m=n;r=J;n=p;ee=1034;break d}case 141:{g=m;m=n;r=J;n=p;ee=1036;break d}case 10:{S=a[o+(p*20|0)+3>>0]|0;w=S&255;g=c[yb>>2]|0;if(S<<24>>24){r=0;s=v+((c[o+(p*20|0)+8>>2]|0)*40|0)|0;while(1){c[g+(r<<2)>>2]=s;r=r+1|0;if((r|0)>=(w|0))break;else s=s+40|0}}S=c[o+(p*20|0)+16>>2]|0;c[Da>>2]=S;R=c[o+(p*20|0)+12>>2]|0;c[Ea>>2]=v+(R*40|0);R=v+(R*40|0)+12|0;c[R>>2]=(c[R>>2]|0)+1;b[Fa>>1]=1;c[Ga>>2]=he;c[Ha>>2]=0;c[Tc>>2]=Jd;c[Ia>>2]=0;c[Ja>>2]=f;c[Ka>>2]=p;a[La>>0]=0;ic[c[S+16>>2]&63](Tc,w,g);if(!(c[Ia>>2]|0))r=0;else{c[ge>>2]=Og(Jd,1)|0;$g(fe,he,10344,ge);r=c[Ia>>2]|0}do if((a[La>>0]|0)!=0?(Jc=c[o+((p+-1|0)*20|0)+4>>2]|0,(Jc|0)!=0):0){g=v+(Jc*40|0)|0;s=v+(Jc*40|0)+8|0;if(!(b[s>>1]&9312)){S=g;c[S>>2]=1;c[S+4>>2]=0;b[s>>1]=4;break}else{Vg(g,1,0);break}}while(0);if((b[Fa>>1]&9312)==0&(c[Ha>>2]|0)==0){z=J;R=p}else{Mg(Jd);z=J;R=p}break}case 11:{c[Oc>>2]=0;c[Ma>>2]=-1;c[Na>>2]=-1;g=Sh(he,c[o+(p*20|0)+4>>2]|0,c[o+(p*20|0)+8>>2]|0,Na,Ma)|0;if((g|0)==5){c[Oc>>2]=1;g=0}r=0;s=v+((c[o+(p*20|0)+12>>2]|0)*40|0)|0;while(1){z=c[Oc+(r<<2)>>2]|0;x=((z|0)<0)<<31>>31;w=s+8|0;if(!(b[w>>1]&9312)){S=s;c[S>>2]=z;c[S+4>>2]=x;b[w>>1]=4}else Vg(s,z,x);r=r+1|0;if((r|0)==3){z=J;R=p;r=g;break}else s=s+40|0}break}case 142:{z=c[o+(p*20|0)+4>>2]|0;w=v+(z*40|0)|0;r=Uk(w,c[o+(p*20|0)+16>>2]|0)|0;if(r){c[ge>>2]=Og(w,1)|0;$g(fe,he,10344,ge)}Ul(w,ub)|0;s=e[v+(z*40|0)+8>>1]|0;if(s&18){g=c[v+(z*40|0)+12>>2]|0;if(s&16384)g=(c[w>>2]|0)+g|0;if((g|0)>(c[(c[v+(z*40|0)+32>>2]|0)+88>>2]|0)){g=m;m=n;q=t;ee=1316;break c}else{z=J;R=p}}else{z=J;R=p}break}case 12:{g=c[o+(p*20|0)+12>>2]|0;J=c[(c[Td>>2]|0)+(c[o+(p*20|0)+4>>2]<<4)+4>>2]|0;I=c[c[J+4>>2]>>2]|0;G=a[I+5>>0]|0;w=G&255;g=(g|0)==-1?w:g;do if((d[I+16>>0]|0)>2)g=w;else if((c[c[I+64>>2]>>2]|0)!=0?(S=I+72|0,R=c[S+4>>2]|0,(R|0)>0|(R|0)==0&(c[S>>2]|0)>>>0>0):0){g=w;break}while(0);if(!(a[I+15>>0]|0))x=c[I+168>>2]|0;else x=10360;s=(g|0)==5;if(s)if(x){z=x;while(1)if(!(a[z>>0]|0))break;else z=z+1|0;if(z-x&1073741823){z=c[c[I+60>>2]>>2]|0;if(!(a[I+4>>0]|0))if((c[z>>2]|0)>1?!((c[z+52>>2]|0)==0|(g|0)==(w|0)):0)ee=1077;else{g=w;r=0}else ee=1076}else{g=w;r=0}}else{g=w;r=0}else ee=1076;if((ee|0)==1076){ee=0;if((g|0)==(w|0)){g=w;r=0}else ee=1077}do if((ee|0)==1077){ee=0;z=G<<24>>24==5;if(z|s){if(!(a[ae>>0]|0)){g=m;o=s;m=n;q=t;ee=1080;break c}if((c[Wb>>2]|0)>1){g=m;o=s;m=n;q=t;ee=1080;break c}if(!z){if(G<<24>>24==4)on(I,2)|0}else{G=I+208|0;if(!(c[G>>2]|0)){c[Xc>>2]=0;r=bl(I,1)|0;if(r)break;r=c[I>>2]|0;r=lc[c[r+32>>2]&31](r,c[I+212>>2]|0,0,Xc)|0;if((r|0)==0&(c[Xc>>2]|0)!=0)r=ln(I)|0;if(r)break;if(c[G>>2]|0)ee=1088}else ee=1088;if((ee|0)==1088){ee=0;r=mn(I)|0;if(r)break;r=nn(c[G>>2]|0,d[I+9>>0]|0,c[I+152>>2]|0,c[I+200>>2]|0)|0;c[G>>2]=0;if(r)break}on(I,g)|0}r=Bg(J,s?2:1)|0}else r=0}while(0);g=on(I,(r|0)==0?g:w)|0;z=c[o+(p*20|0)+8>>2]|0;G=v+(z*40|0)|0;b[v+(z*40|0)+8>>1]=2562;if((g|0)==6){c[v+(z*40|0)+16>>2]=0;g=0}else{g=c[32216+(g<<2)>>2]|0;c[v+(z*40|0)+16>>2]=g;w=g;while(1)if(!(a[w>>0]|0))break;else w=w+1|0;g=w-g&1073741823}c[v+(z*40|0)+12>>2]=g;a[v+(z*40|0)+10>>0]=1;Ul(G,ub)|0;z=G;R=p;break}case 13:{if(!(a[ae>>0]|0)){g=m;m=n;q=t;ee=1101;break c}if((c[Oa>>2]|0)>1){g=m;m=n;q=t;ee=1103;break c}Q=c[Qb>>2]|0;L=c[sb>>2]|0;s=c[tb>>2]|0;g=c[Pa>>2]|0;c[Qb>>2]=Q&-2762753|2107392;c[Pa>>2]=0;I=c[(c[Td>>2]|0)+4>>2]|0;P=I+4|0;F=a[(c[c[P>>2]>>2]|0)+15>>0]|0;S=c[Rb>>2]|0;r=pn(he,fe,(a[Xb>>0]|0)==2?42432:42464)|0;G=c[Rb>>2]|0;if((G|0)>(S|0))w=(c[Td>>2]|0)+(G+-1<<4)|0;else w=0;i:do if(!r){O=c[(c[Td>>2]|0)+(G+-1<<4)+4>>2]|0;qn(O)|0;R=c[P>>2]|0;c[R+4>>2]=c[I>>2];R=(c[R+32>>2]|0)-(c[R+36>>2]|0)|0;r=pn(he,fe,42488)|0;if(!r){r=pn(he,fe,42528)|0;if(!r){r=ug(I,2)|0;if(!r){G=c[P>>2]|0;if((a[(c[G>>2]|0)+5>>0]|0)==5)c[Qa>>2]=0;if(!(tg(O,c[G+32>>2]|0,R,0)|0)){if(F<<24>>24==0?(tg(O,c[Qa>>2]|0,R,0)|0)!=0:0){r=7;break}if(a[ce>>0]|0){r=7;break}G=a[Ra>>0]|0;do if(G<<24>>24>-1)G=G<<24>>24;else{G=c[P>>2]|0;c[G+4>>2]=c[I>>2];if(!(a[G+17>>0]|0)){G=0;break}G=(a[G+18>>0]|0)==0?1:2}while(0);rn(O,G)|0;r=sn(he,fe,42536)|0;if(r)break;r=sn(he,fe,42688)|0;if(r)break;r=sn(he,fe,42792)|0;if(r)break;r=sn(he,fe,42912)|0;if(r)break;r=sn(he,fe,43112)|0;if(r)break;r=sn(he,fe,43232)|0;if(r)break;r=pn(he,fe,43392)|0;if(!r)G=0;else break;do{r=d[43576+G>>0]|0;sm(I,r,ad);r=zg(O,r,(d[43576+(G|1)>>0]|0)+(c[ad>>2]|0)|0)|0;G=G+2|0;if(r)break i}while((G|0)<10);E=c[P>>2]|0;c[E+4>>2]=c[I>>2];G=c[O>>2]|0;K=O+4|0;F=c[K>>2]|0;c[F+4>>2]=G;E=c[(c[E>>2]|0)+60>>2]|0;D=c[E>>2]|0;if(D){S=c[F+32>>2]|0;S=ow(c[F+44>>2]|0,0,S|0,((S|0)<0)<<31>>31|0)|0;r=fd;c[r>>2]=S;c[r+4>>2]=C;r=Yb[c[D+40>>2]&63](E,11,fd)|0;r=(r|0)==12?0:r;if(r)break;G=c[O>>2]|0}S=Qc+0|0;D=S+48|0;do{c[S>>2]=0;S=S+4|0}while((S|0)<(D|0));c[Sa>>2]=G;c[Ta>>2]=O;c[Ua>>2]=I;c[Va>>2]=1;cd(Qc,2147483647)|0;r=dd(Qc)|0;if(r){z=c[c[(c[Ua>>2]|0)+4>>2]>>2]|0;if(a[z+15>>0]|0)break;if(a[z+12>>0]|0)break;tn(z);break}r=(c[P>>2]|0)+22|0;b[r>>1]=e[r>>1]&65533;r=qn(O)|0;if(r)break;G=c[K>>2]|0;c[G+4>>2]=c[O>>2];if(!(a[G+17>>0]|0))B=0;else B=(a[G+18>>0]|0)==0?1:2;rn(I,B)|0;r=tg(I,c[(c[K>>2]|0)+32>>2]|0,R,1)|0}else r=7}}}}while(0);c[Qb>>2]=Q;c[sb>>2]=L;c[tb>>2]=s;c[Pa>>2]=g;tg(I,-1,-1,1)|0;a[ae>>0]=1;if(w){S=w+4|0;Il(c[S>>2]|0);c[S>>2]=0;c[w+12>>2]=0}Ag(he);z=J;R=p;break}case 143:{S=c[(c[Td>>2]|0)+(c[o+(p*20|0)+4>>2]<<4)+4>>2]|0;F=c[S+4>>2]|0;c[F+4>>2]=c[S>>2];if(!(a[F+17>>0]|0)){g=m;m=n;r=J;ee=1157;break d}B=F+44|0;E=c[B>>2]|0;x=F+12|0;z=c[(c[x>>2]|0)+56>>2]|0;z=d[z+37>>0]<<16|d[z+36>>0]<<24|d[z+38>>0]<<8|d[z+39>>0];D=Al(F,E,z)|0;if(E>>>0>>0){g=m;m=n;q=t;ee=1145;break c}if(!z){g=m;m=n;r=J;ee=1157;break d}G=F+8|0;w=c[G>>2]|0;do if(w){z=w;do{if(z){ee=1150;break}z=c[2]|0}while((z|0)!=0);if((ee|0)==1150){ee=0;r=Bl(z,0,0)|0;if(r)break;w=c[G>>2]|0}if(w){do{S=w+72|0;a[S>>0]=d[S>>0]&251;w=c[w+8>>2]|0}while((w|0)!=0);ee=1154}else ee=1154}else ee=1154;while(0);if((ee|0)==1154){ee=0;r=Cl(F,D,E,0)|0;if(!r){r=Cg(c[(c[x>>2]|0)+68>>2]|0)|0;S=c[(c[x>>2]|0)+56>>2]|0;R=c[B>>2]|0;a[S+28>>0]=R>>>24;a[S+29>>0]=R>>>16;a[S+30>>0]=R>>>8;a[S+31>>0]=R}}if((r|0)==101){g=m;m=n;r=J;ee=1157;break d}else{z=J;R=p}break}case 145:{g=c[o+(p*20|0)+12>>2]|0;if((g&255|0)==0?(c[Qb>>2]&16384|0)!=0:0){g=m;m=n;Q=v;w=o;R=T;S=U;r=J;n=p;break d}z=c[(c[Td>>2]|0)+(c[o+(p*20|0)+4>>2]<<4)+4>>2]|0;x=c[o+(p*20|0)+8>>2]|0;if(!(a[z+9>>0]|0)){g=m;m=n;Q=v;w=o;R=T;S=U;r=J;n=p;break d}w=g+1&255;s=z+4|0;c[(c[s>>2]|0)+4>>2]=c[z>>2];r=Zk(z,x,w)|0;if(!r){g=m;m=n;r=J;n=p;ee=1166;break d}if((r&255|0)!=6){g=m;m=n;o=r;q=t;ee=1309;break c}c[ge>>2]=c[o+(p*20|0)+16>>2];$g(fe,he,42224,ge);z=J;R=p;break}case 144:{g=m;m=n;r=J;n=p;ee=1158;break d}case 146:{G=c[o+(p*20|0)+16>>2]|0;r=c[Wa>>2]|0;w=(r|0)>0;if(w?(c[Xa>>2]|0)==0:0){r=6;ee=1188}else ee=1179;j:do if((ee|0)==1179){ee=0;if(!G){g=m;m=n;Q=v;w=o;R=T;S=U;r=J;n=p;break d}g=G+8|0;s=(c[c[g>>2]>>2]|0)+56|0;if(c[s>>2]|0){if(w){z=c[Xa>>2]|0;x=0;do{if((c[z+(x<<2)>>2]|0)==(G|0)){r=0;ee=1188;break j}x=x+1|0}while((x|0)<(r|0))}r=un(he)|0;if(!r){r=hc[c[s>>2]&127](c[g>>2]|0)|0;if(!r){r=c[Wa>>2]|0;c[Wa>>2]=r+1;c[(c[Xa>>2]|0)+(r<<2)>>2]=G;r=G+12|0;c[r>>2]=(c[r>>2]|0)+1;r=0}}else ee=1188}else r=0}while(0);if((ee|0)==1188){ee=0;if(!G){z=J;R=p;break e}g=G+8|0}Im(f,c[g>>2]|0);z=J;R=p;break}case 147:{S=Hd+0|0;D=S+40|0;do{c[S>>2]=0;S=S+4|0}while((S|0)<(D|0));c[Ya>>2]=he;g=Wg(Hd,v+((c[o+(p*20|0)+8>>2]|0)*40|0)|0)|0;r=Og(Hd,1)|0;k:do if(r){w=Wh(he,r,c[(c[Td>>2]|0)+(c[o+(p*20|0)+4>>2]<<4)>>2]|0)|0;g=c[c[w+56>>2]>>2]|0;r=Zm($a,g,Uc)|0;if((r|0)!=0?(Lc=c[r+8>>2]|0,(Lc|0)!=0):0){g=vn(he,w,Lc,c[(c[Lc>>2]|0)+4>>2]|0,fe)|0;if(g)break;w=w+60|0;g=c[w>>2]|0;if(!g){g=0;break}while(1){if((c[g>>2]|0)==(he|0))break;g=c[g+24>>2]|0;if(!g){g=0;break k}}g=un(he)|0;if(g)break;g=c[w>>2]|0;l:do if(!g)g=0;else while(1){if((c[g>>2]|0)==(he|0))break l;g=c[g+24>>2]|0;if(!g){g=0;break}}while(0);S=c[Wa>>2]|0;c[Wa>>2]=S+1;c[(c[Xa>>2]|0)+(S<<2)>>2]=g;g=g+12|0;c[g>>2]=(c[g>>2]|0)+1;g=0;break}c[ge>>2]=g;c[fe>>2]=qh(he,28320,ge)|0;g=1}while(0);if((b[Za>>1]&9312)==0&(c[_a>>2]|0)==0){z=J;R=p;r=g}else{Mg(Hd);z=J;R=p;r=g}break}case 148:{c[ea>>2]=(c[ea>>2]|0)+1;g=Wh(he,c[o+(p*20|0)+16>>2]|0,c[(c[Td>>2]|0)+(c[o+(p*20|0)+4>>2]<<4)>>2]|0)|0;m:do if((g|0)!=0?(Mc=g+60|0,Nc=c[Mc>>2]|0,(Nc|0)!=0):0){r=Nc;do{if((c[(c[r+8>>2]|0)+4>>2]|0)>0){r=6;break m}r=c[r+24>>2]|0}while((r|0)!=0);g=Kk(he,g)|0;s=g+8|0;r=hc[c[(c[c[g+4>>2]>>2]|0)+20>>2]&127](c[s>>2]|0)|0;if(!r){c[s>>2]=0;c[Mc>>2]=0;wn(g);r=0}}else r=0;while(0);c[ea>>2]=(c[ea>>2]|0)+-1;z=J;R=p;break}case 149:{g=m;m=n;r=J;n=p;ee=1213;break d}case 150:{g=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;z=c[o+(p*20|0)+12>>2]|0;x=v+(z*40|0)|0;if(a[g+25>>0]|0){g=m;m=n;r=J;n=p;ee=1226;break d}S=g+32|0;r=c[c[S>>2]>>2]|0;R=c[r>>2]|0;c[Fd+0>>2]=0;c[Fd+4>>2]=0;c[Fd+8>>2]=0;c[Fd+12>>2]=0;c[Fd+16>>2]=0;c[Fd+20>>2]=0;c[Fd+24>>2]=0;c[Fd>>2]=x;w=v+(z*40|0)+8|0;b[w>>1]=e[w>>1]&48640|1;S=Yb[c[R+44>>2]&63](c[S>>2]|0,Fd,c[o+(p*20|0)+8>>2]|0)|0;Im(f,r);r=c[ab>>2]|0;r=(r|0)==0?S:r;Ul(x,ub)|0;w=e[w>>1]|0;if(w&18){g=c[v+(z*40|0)+12>>2]|0;if(w&16384)g=(c[x>>2]|0)+g|0;if((g|0)>(c[(c[v+(z*40|0)+32>>2]|0)+88>>2]|0)){g=m;m=n;q=t;ee=1316;break c}else{z=J;R=p}}else{z=J;R=p}break}case 14:{x=c[o+(p*20|0)+12>>2]|0;z=x+1|0;D=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;G=c[D+32>>2]|0;F=c[G>>2]|0;E=c[F>>2]|0;B=c[v+(z*40|0)>>2]|0;x=c[v+(x*40|0)>>2]|0;w=c[yb>>2]|0;if((B|0)>0){g=0;do{S=g;g=g+1|0;c[w+(S<<2)>>2]=v+((g+z|0)*40|0)}while((g|0)!=(B|0))}r=pc[c[E+32>>2]&31](G,x,c[o+(p*20|0)+16>>2]|0,B,w)|0;Im(f,F);if((r|0)==0?(hc[c[E+40>>2]&127](G)|0)!=0:0)p=(c[o+(p*20|0)+8>>2]|0)+-1|0;a[D+25>>0]=0;z=J;R=p;break}case 151:{g=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;if(a[g+25>>0]|0){g=m;m=n;Q=v;w=o;R=T;S=U;r=J;n=p;break d}g=g+32|0;s=c[g>>2]|0;S=c[s>>2]|0;r=c[S>>2]|0;s=hc[c[r+36>>2]&127](s)|0;Im(f,S);if((s|0)==0?(hc[c[r+40>>2]&127](c[g>>2]|0)|0)!=0:0){r=0;ee=19;break e}p=(c[o+(p*20|0)+8>>2]|0)+-1|0;r=s;ee=19;break}case 15:{D=o+(p*20|0)+16|0;g=c[(c[D>>2]|0)+8>>2]|0;if(!g){g=m;m=n;o=6;q=t;ee=1309;break c}w=c[g>>2]|0;if(!w){g=m;m=n;o=6;q=t;ee=1309;break c}F=c[o+(p*20|0)+8>>2]|0;B=w+52|0;z=c[B>>2]|0;if(!z){g=m;m=n;Q=v;w=o;R=T;S=U;r=J;n=p;break d}E=a[bb>>0]|0;G=c[yb>>2]|0;if((F|0)>0){z=0;x=v+((c[o+(p*20|0)+12>>2]|0)*40|0)|0;while(1){c[G+(z<<2)>>2]=x;z=z+1|0;if((z|0)==(F|0))break;else x=x+40|0}z=c[B>>2]|0}x=o+(p*20|0)+3|0;a[bb>>0]=a[x>>0]|0;r=lc[z&31](g,F,G,Ed)|0;a[bb>>0]=E;Im(f,g);if(!r){if(c[o+(p*20|0)+4>>2]|0){l=Ed;n=c[l>>2]|0;l=c[l+4>>2]|0;S=je;c[S>>2]=n;c[S+4>>2]=l}}else if((r&255|0)==19?(a[(c[D>>2]|0)+16>>0]|0)!=0:0){g=a[x>>0]|0;if(g<<24>>24==5)g=2;else if(g<<24>>24==4){g=m;m=n;Q=v;w=o;R=T;S=U;r=J;n=p;break d}a[be>>0]=g;z=J;R=p;break e}c[rb>>2]=(c[rb>>2]|0)+1;z=J;R=p;break}case 152:{g=c[(c[o+(p*20|0)+16>>2]|0)+8>>2]|0;r=c[o+(p*20|0)+4>>2]|0;s=v+(r*40|0)|0;if(((b[v+(r*40|0)+8>>1]&2)!=0?(a[v+(r*40|0)+10>>0]|0)!=1:0)?(Sd=xn(s,1)|0,(Sd|0)!=0):0){g=m;m=n;o=Sd;q=t;ee=1309;break c}r=nc[c[(c[g>>2]|0)+76>>2]&127](g,c[v+(r*40|0)+16>>2]|0)|0;Im(f,g);b[Ud>>1]=b[Ud>>1]&-9;z=J;R=p;break}case 153:{g=m;m=n;r=J;n=p;ee=1257;break d}case 155:{g=m;m=n;ee=1264;break d}case 154:{g=m;m=n;G=J;n=p;ee=1258;break d}default:{g=m;m=n;Q=v;w=o;R=T;S=U;r=J;n=p;break d}}while(0);n:do if((ee|0)==57){ee=0;w=J+8|0;b[w>>1]=2562;c[J+16>>2]=s;c[J+12>>2]=g;a[J+10>>0]=Gc;if((a[o+(p*20|0)+3>>0]|0)!=0?(S=v+((c[o+(p*20|0)+12>>2]|0)*40|0)|0,!((c[S>>2]|0)==0&(c[S+4>>2]|0)==0)):0){b[w>>1]=2576;z=J;R=p}else{z=J;R=p}}else if((ee|0)==536){if(b[Ud>>1]&8){g=m;m=n;o=516;q=t;ee=1309;break c}z=c[o+(p*20|0)+8>>2]|0;F=c[o+(p*20|0)+12>>2]|0;g=c[Td>>2]|0;E=c[g+(F<<4)+4>>2]|0;if(G<<24>>24==55){g=a[(c[g+(F<<4)+12>>2]|0)+76>>0]|0;if((g&255)<(d[Jb>>0]|0)){a[Jb>>0]=g;G=1}else G=1}else G=0;w=o+(p*20|0)+3|0;if(a[w>>0]&4){S=v+(z*40|0)|0;g=Rg(S)|0;c[S>>2]=g;c[S+4>>2]=C;S=v+(z*40|0)+8|0;b[S>>1]=e[S>>1]&48640|4;if((g|0)<2){g=m;m=n;o=t;ee=542;break c}else B=g}else B=z;r=o+(p*20|0)+1|0;z=a[r>>0]|0;if(z<<24>>24==-6){x=c[o+(p*20|0)+16>>2]|0;z=(e[x+8>>1]|0)+(e[x+6>>1]|0)|0}else if(z<<24>>24==-14){z=c[o+(p*20|0)+16>>2]|0;x=0}else{z=0;x=0}g=tm(f,c[o+(p*20|0)+4>>2]|0,z,F,1)|0;if(!g){u=ce;v=fe;g=m;m=t;ee=1317;break a}a[g+25>>0]=1;S=g+27|0;a[S>>0]=a[S>>0]|8;c[g+28>>2]=B;ee=um(E,B,G,x,c[g>>2]|0)|0;c[g+8>>2]=x;a[S>>0]=((a[r>>0]|0)!=-6&1)<<2&255|a[S>>0]&-5;r=ee;ee=548}else if((ee|0)==715){ee=0;H=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;x=c[H+56>>2]|0;do if(!x){r=c[H>>2]|0;g=mm(r)|0;if(!g)if(!(a[r+73>>0]|0)){w=1;g=0}else{w=0;g=Rm(r)|0}else w=1;a[H+26>>0]=0;c[H+60>>2]=0;a[H+25>>0]=w;if(!w){z=J;R=p;r=g;break n}}else{do if(!(a[x+56>>0]|0)){g=x+36|0;if(!(c[g>>2]|0)){g=0;ee=756}else{g=Jm(x+64|0,g)|0;ee=755}}else{g=Km(x)|0;if(!g){S=x+59|0;o:do if(!(a[S>>0]|0)){r=0;g=0}else{I=0;w=0;p:while(1){R=x+(I<<6)+64|0;c[ge>>2]=0;Q=x+(I<<6)+92|0;z=c[Q>>2]|0;G=((z|0)<0)<<31>>31;do if((z|0)>16){F=16;E=0;B=0;while(1){F=ew(F|0,E|0,4)|0;E=C;D=B+1|0;if(!((E|0)<(G|0)|(E|0)==(G|0)&F>>>0>>0)){E=B;break}else B=D}P=Pd;c[P>>2]=0;c[P+4>>2]=0;if((z|0)<17){ee=726;break}r=Mm(16)|0;c[ge>>2]=r;G=(r|0)==0;F=c[Q>>2]|0;if(!((F|0)>0&(G^1))){g=G?7:0;break}L=(E|0)>0;P=0;O=0;do{c[nd>>2]=0;g=F-P|0;g=Lm(R,(g|0)<16?g:16,Pd,nd)|0;if(g){ee=747;break p}g=Nm(R,c[nd>>2]|0,md)|0;do if(L){F=1;G=1;do{G=G<<4;F=F+1|0}while((F|0)!=(D|0));if(!g){K=1;F=r}else{G=c[md>>2]|0;ee=743;break}while(1){s=(c[F+12>>2]|0)+((((O|0)/(G|0)|0|0)%16|0)*56|0)+48|0;F=c[s>>2]|0;if(!F){F=Mm(16)|0;if(!F){g=7;ee=738;break}g=Nm(R,F,s)|0;if(g){ee=738;break}F=c[s>>2]|0}F=c[F+4>>2]|0;K=K+1|0;if((K|0)>=(D|0)){ee=740;break}else G=(G|0)/16|0}if((ee|0)==738){G=c[md>>2]|0;ee=743;break}else if((ee|0)==740){G=c[md>>2]|0;ee=742;break}}else{G=c[md>>2]|0;if(!g){F=r;ee=742}else ee=743}while(0);if((ee|0)==742){ee=0;c[(c[F+12>>2]|0)+(((O|0)%16|0)*56|0)+48>>2]=G;g=0}else if((ee|0)==743){ee=0;Om(G)}O=O+1|0;P=P+16|0;F=c[Q>>2]|0}while((P|0)<(F|0)&(g|0)==0)}else{ee=Pd;c[ee>>2]=0;c[ee+4>>2]=0;ee=726}while(0);if((ee|0)==726){ee=0;g=Lm(R,z,Pd,ge)|0;r=c[ge>>2]|0}I=I+1|0;if(g){ee=746;break}if((I|0)>=(d[S>>0]|0)){g=0;break o}else w=r}if((ee|0)==746)Pm(r);else if((ee|0)==747)Pm(r);Pm(w);r=0}while(0);if(!g){g=Qm(x+64|0,r)|0;c[x+20>>2]=r;if(!g){g=0;ee=755;break}else r=0}Pm(r);ee=755}else ee=756}while(0);if((ee|0)==755){ee=0;a[H+25>>0]=0;z=J;R=p;r=g;break n}else if((ee|0)==756){ee=0;a[H+25>>0]=1;break}}while(0);z=J;R=(c[o+(p*20|0)+8>>2]|0)+-1|0;r=g}else if((ee|0)==765){r=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;c[Cd>>2]=c[o+(p*20|0)+12>>2];g=r;r=nc[c[o+(p*20|0)+16>>2]&127](c[r>>2]|0,Cd)|0;ee=766}while(0);do if((ee|0)==548){ee=0;a[(c[g>>2]|0)+74>>0]=d[w>>0]&3;z=J;R=p}else if((ee|0)==766){c[g+60>>2]=0;g=g+25|0;if(!(c[Cd>>2]|0)){a[g>>0]=0;ee=(c[o+(p*20|0)+8>>2]|0)+-1|0;p=f+(d[o+(p*20|0)+3>>0]<<2)+108|0;c[p>>2]=(c[p>>2]|0)+1;p=ee;ee=19;break}else{a[g>>0]=1;ee=19;break}}while(0);if((ee|0)==19){ee=0;if(c[zc>>2]|0){q=fe;g=m;m=t;break b}g=c[Zd>>2]|0;if(!((g|0)==0|m>>>0>>0)){u=c[vc>>2]|0;if(!(hc[g&127](c[Vd>>2]|0)|0)){u=u+m-((m>>>0)%(u>>>0)|0)|0;z=J;R=p}else{g=m;o=9;m=t;ee=1311;break a}}else{z=J;R=p}}p=R+1|0;if(!r){g=m;r=z}else{g=m;o=r;m=t;ee=1311;break a}}q:switch(ee|0){case 22:{ee=0;Q=c[o+(p*20|0)+4>>2]|0;b[v+(Q*40|0)+8>>1]=4;Q=v+(Q*40|0)|0;c[Q>>2]=p;c[Q+4>>2]=((p|0)<0)<<31>>31;Q=v;w=o;R=T;S=U;n=(c[o+(p*20|0)+8>>2]|0)+-1|0;break}case 23:{ee=0;Q=c[o+(p*20|0)+4>>2]|0;n=c[v+(Q*40|0)>>2]|0;b[v+(Q*40|0)+8>>1]=128;Q=v;w=o;R=T;S=U;break}case 24:{ee=0;n=c[o+(p*20|0)+4>>2]|0;r=v+(n*40|0)|0;w=(c[o+(p*20|0)+12>>2]|0)+-1|0;Q=r;c[Q>>2]=w;c[Q+4>>2]=((w|0)<0)<<31>>31;b[v+(n*40|0)+8>>1]=4;n=c[o+(p*20|0)+8>>2]|0;Q=v;w=o;R=T;S=U;n=(n|0)==0?p:n+-1|0;break}case 25:{ee=0;Q=c[o+(p*20|0)+4>>2]|0;n=(c[o+((c[v+(Q*40|0)>>2]|0)*20|0)+8>>2]|0)+-1|0;b[v+(Q*40|0)+8>>1]=128;Q=v;w=o;R=T;S=U;break}case 26:{ee=0;Q=c[o+(p*20|0)+4>>2]|0;b[v+(Q*40|0)+8>>1]=4;Q=v+(Q*40|0)|0;n=c[Q>>2]|0;c[Q>>2]=p;c[Q+4>>2]=((p|0)<0)<<31>>31;Q=v;w=o;R=T;S=U;break}case 27:{ee=0;if(!(b[v+((c[o+(n*20|0)+12>>2]|0)*40|0)+8>>1]&1)){Q=v;w=o;R=T;S=U}else ee=28;break}case 44:{ee=0;w=c[o+(n*20|0)+4>>2]|0;Q=r;c[Q>>2]=w;c[Q+4>>2]=((w|0)<0)<<31>>31;Q=v;w=o;R=T;S=U;break}case 45:{ee=0;R=c[o+(n*20|0)+16>>2]|0;w=c[R+4>>2]|0;Q=r;c[Q>>2]=c[R>>2];c[Q+4>>2]=w;Q=v;w=o;R=T;S=U;break}case 46:{ee=0;b[r+8>>1]=8;h[r>>3]=+h[c[o+(n*20|0)+16>>2]>>3];Q=v;w=o;R=T;S=U;break}case 60:{ee=0;G=(c[o+(n*20|0)+12>>2]|0)-(c[o+(n*20|0)+8>>2]|0)|0;w=(c[o+(n*20|0)+4>>2]|0)!=0?257:1;b[r+8>>1]=w;if((G|0)>0){s=G;x=r;do{p=x+48|0;x=x+40|0;if(!(b[p>>1]&9312))b[p>>1]=1;else rg(x);b[p>>1]=w;s=s+-1|0}while((s|0)>0);Q=v;w=o;R=T;S=U;r=r+(G*40|0)|0}else{Q=v;w=o;R=T;S=U}break}case 65:{ee=0;r=c[o+(n*20|0)+4>>2]|0;Q=v+(r*40|0)+8|0;b[Q>>1]=e[Q>>1]&65406|1;Q=v;w=o;R=T;S=U;r=v+(r*40|0)|0;break}case 66:{ee=0;Tg(r,c[o+(n*20|0)+16>>2]|0,c[o+(n*20|0)+4>>2]|0,0,0)|0;a[r+10>>0]=Gc;Q=v;w=o;R=T;S=U;break}case 67:{ee=0;z=(c[o+(n*20|0)+4>>2]|0)+-1|0;x=c[xb>>2]|0;s=x+(z*40|0)|0;p=e[x+(z*40|0)+8>>1]|0;if(p&18){w=c[x+(z*40|0)+12>>2]|0;if(p&16384)w=(c[s>>2]|0)+w|0;if((w|0)>(c[(c[x+(z*40|0)+32>>2]|0)+88>>2]|0)){p=n;q=t;ee=1316;break c}}Vl(r,s,2048);Q=v;w=o;R=T;S=U;break}case 72:{ee=0;p=c[o+(n*20|0)+12>>2]|0;s=c[o+(n*20|0)+8>>2]|0;G=p+s|0;r=v+((c[o+(n*20|0)+4>>2]|0)*40|0)|0;s=v+(s*40|0)|0;while(1){Wl(s,r);p=p+-1|0;if(!p)break;else{r=r+40|0;s=s+40|0}}Q=v;w=o;R=T;S=U;r=v+(G*40|0)|0;break}case 74:{ee=0;n=c[o+(p*20|0)+12>>2]|0;r=v+((c[o+(p*20|0)+4>>2]|0)*40|0)|0;G=v+((c[o+(p*20|0)+8>>2]|0)*40|0)|0;while(1){Vl(G,r,4096);if((b[G+8>>1]&4096)!=0?(Rl(G)|0)!=0:0){u=ce;v=fe;n=m;m=t;ee=1317;break a}if(!n){Q=v;w=o;R=T;S=U;r=G;n=p;break q}n=n+-1|0;r=r+40|0;G=G+40|0}}case 79:{ee=0;r=v+((c[o+(n*20|0)+8>>2]|0)*40|0)|0;Vl(r,v+((c[o+(n*20|0)+4>>2]|0)*40|0)|0,4096);Q=v;w=o;R=T;S=U;break}case 94:{ee=0;H=c[o+(p*20|0)+4>>2]|0;G=v+(H*40|0)|0;I=c[o+(p*20|0)+8>>2]|0;F=v+(I*40|0)|0;J=c[o+(p*20|0)+12>>2]|0;r=v+(J*40|0)|0;E=v+(H*40|0)+8|0;B=b[E>>1]|0;D=v+(I*40|0)+8|0;z=b[D>>1]|0;if((z|B)&1){n=v+(J*40|0)+8|0;if(!(b[n>>1]&9312)){b[n>>1]=1;Q=v;w=o;R=T;S=U;n=p;break}else{rg(r);Q=v;w=o;R=T;S=U;n=p;break}}if(B&16384){if(Ng(G)|0){u=ce;v=fe;n=m;m=t;ee=1317;break a}z=b[D>>1]|0}if((z&16384)!=0?(Ng(F)|0)!=0:0){u=ce;v=fe;n=m;m=t;ee=1317;break a}if((b[E>>1]&18)==0?(Zl(G,Gc,0)|0)!=0:0){u=ce;v=fe;n=m;m=t;ee=1317;break a}if((b[D>>1]&18)==0?(Zl(F,Gc,0)|0)!=0:0){u=ce;v=fe;n=m;m=t;ee=1317;break a}B=v+(H*40|0)+12|0;x=v+(I*40|0)+12|0;w=(c[x>>2]|0)+(c[B>>2]|0)|0;if((w|0)>(c[wb>>2]|0)){q=t;ee=1316;break c}n=(J|0)==(I|0);if(ah(r,w+2|0,n&1)|0){u=ce;v=fe;n=m;m=t;ee=1317;break a}s=v+(J*40|0)+8|0;b[s>>1]=e[s>>1]&48640|2;z=v+(J*40|0)+16|0;if(!n)gw(c[z>>2]|0,c[v+(I*40|0)+16>>2]|0,c[x>>2]|0)|0;gw((c[z>>2]|0)+(c[x>>2]|0)|0,c[v+(H*40|0)+16>>2]|0,c[B>>2]|0)|0;a[(c[z>>2]|0)+w>>0]=0;a[(c[z>>2]|0)+(w+1)>>0]=0;b[s>>1]=e[s>>1]|512;c[v+(J*40|0)+12>>2]=w;a[v+(J*40|0)+10>>0]=Gc;Q=v;w=o;R=T;S=U;n=p;break}case 112:{ee=0;K=c[o+(n*20|0)+4>>2]|0;L=v+(K*40|0)|0;Q=_l(L)|0;J=c[o+(n*20|0)+8>>2]|0;O=v+(J*40|0)|0;R=_l(O)|0;S=c[o+(n*20|0)+12>>2]|0;r=v+(S*40|0)|0;r:do if(!((b[v+(J*40|0)+8>>1]|b[v+(K*40|0)+8>>1])&1)){s:do if(!((Q&4&R)<<16>>16))J=0;else{p=L;z=c[p>>2]|0;p=c[p+4>>2]|0;D=O;w=c[D>>2]|0;D=c[D+4>>2]|0;G=d[P>>0]|0;t:do if((G|0)==89){if((p|0)>-1|(p|0)==-1&z>>>0>4294967295){K=$v(-1,2147483647,w|0,D|0)|0;J=C;if(((D|0)>0|(D|0)==0&w>>>0>0)&((J|0)<(p|0)|(J|0)==(p|0)&K>>>0>>0)){J=1;break s}}else if((D|0)<0?(J=$v(1,-2147483648,w|0,D|0)|0,I=C,K=fw(z|0,p|0,1,0)|0,s=C,(I|0)>(s|0)|(I|0)==(s|0)&J>>>0>K>>>0):0){J=1;break s}w=fw(w|0,D|0,z|0,p|0)|0;p=C}else if((G|0)==90){if((z|0)==0&(p|0)==-2147483648){if((D|0)>-1|(D|0)==-1&w>>>0>4294967295){J=1;break s}p=D^-2147483648;break}if((p|0)<0|(p|0)==0&z>>>0<1){K=$v(0,0,z|0,p|0)|0;s=C;J=$v(-1,2147483647,w|0,D|0)|0;I=C;if(((D|0)>0|(D|0)==0&w>>>0>0)&((I|0)<(s|0)|(I|0)==(s|0)&J>>>0>>0)){J=1;break s}}else if((D|0)<0?(J=$v(1,-2147483648,w|0,D|0)|0,I=C,K=$v(1,0,z|0,p|0)|0,s=C,(I|0)>(s|0)|(I|0)==(s|0)&J>>>0>K>>>0):0){J=1;break s}w=$v(w|0,D|0,z|0,p|0)|0;p=C}else if((G|0)==91){J=mw(w|0,D|0,0,1)|0;s=C;F=nw(w|0,D|0,0,1)|0;G=C;I=mw(z|0,p|0,0,1)|0;x=C;H=nw(z|0,p|0,0,1)|0;K=C;E=fw(w|0,D|0,-1,0)|0;le=C;B=fw(z|0,p|0,-1,0)|0;me=C;B=me>>>0<1|(me|0)==1&B>>>0<4294967295;do if(le>>>0<1|(le|0)==1&E>>>0<4294967295)if(B){w=ow(w|0,D|0,z|0,p|0)|0;p=C;break t}else{E=ow(I|0,x|0,F|0,G|0)|0;D=C;break}else{if(!B){J=1;break s}E=ow(H|0,K|0,J|0,s|0)|0;D=C}while(0);J=fw(E|0,D|0,-2147483648,0)|0;s=C;if(s>>>0>0|(s|0)==0&J>>>0>4294967295){J=1;break s}G=ow(H|0,K|0,F|0,G|0)|0;F=C;if((F|0)>-1|(F|0)==-1&G>>>0>4294967295){K=$v(-1,2147483647,0,E|0)|0;J=C;if(((D|0)>0|(D|0)==0&E>>>0>0)&((J|0)<(F|0)|(J|0)==(F|0)&K>>>0>>0)){J=1;break s}}else if((D|0)<0?(J=$v(1,-2147483648,0,E|0)|0,p=C,K=fw(G|0,F|0,1,0)|0,s=C,(p|0)>(s|0)|(p|0)==(s|0)&J>>>0>K>>>0):0){J=1;break s}w=fw(0,E|0,G|0,F|0)|0;p=C}else if((G|0)==92){if((z|0)==0&(p|0)==0)break r;if((z|0)==-1&(p|0)==-1&((w|0)==0&(D|0)==-2147483648)){J=1;break s}w=mw(w|0,D|0,z|0,p|0)|0;p=C}else{if((z|0)==-1){if((p|0)==-1){z=1;p=0}}else if((z|0)==0?(p|0)==0:0)break r;w=nw(w|0,D|0,z|0,p|0)|0;p=C}while(0);Q=r;c[Q>>2]=w;c[Q+4>>2]=p;Q=v+(S*40|0)+8|0;b[Q>>1]=e[Q>>1]&48640|4;Q=v;w=o;R=T;S=U;break q}while(0);A=+Qg(L);y=+Qg(O);z=d[P>>0]|0;if((z|0)==89)y=A+y;else if((z|0)==90)y=y-A;else if((z|0)==91)y=A*y;else if((z|0)==92){if(A==0.0)break;y=y/A}else{B=~~A>>>0;z=+N(A)>=1.0?(A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0):0;F=~~y>>>0;G=+N(y)>=1.0?(y>0.0?~~+$(+M(y/4294967296.0),4294967295.0)>>>0:~~+Z((y-+(~~y>>>0))/4294967296.0)>>>0):0;if(!B){if(!z)break}else if((B|0)==-1?(z|0)==-1:0){B=1;z=0}P=nw(F|0,G|0,B|0,z|0)|0;y=+(P>>>0)+4294967296.0*+(C|0)}h[ge>>3]=y;h[Pd>>3]=+h[ge>>3];if(!(+h[ge>>3]!=+h[Pd>>3])){h[r>>3]=y;S=v+(S*40|0)+8|0;b[S>>1]=e[S>>1]&48640|8;if(((R|Q)&8)!=0|J<<24>>24!=0){Q=v;w=o;R=T;S=U;break q}$l(r);Q=v;w=o;R=T;S=U;break q}}while(0);p=v+(S*40|0)+8|0;if(!(b[p>>1]&9312)){b[p>>1]=1;Q=v;w=o;R=T;S=U;break}else{rg(r);Q=v;w=o;R=T;S=U;break}}case 166:{ee=0;p=c[o+(n*20|0)+4>>2]|0;if(p){r=v+(p*40|0)|0;p=v+(p*40|0)+8|0;if(!(b[p>>1]&9312)){Q=r;c[Q>>2]=0;c[Q+4>>2]=0;b[p>>1]=4;Q=v;w=o;R=T;S=U;r=G;break}else{Vg(r,0,0);Q=v;w=o;R=T;S=U;r=G;break}}else{Q=v;w=o;R=T;S=U;r=G}break}case 184:{ee=0;z=c[o+(n*20|0)+4>>2]|0;w=c[o+(n*20|0)+8>>2]|0;s=c[o+(n*20|0)+12>>2]|0;r=v+(s*40|0)|0;if((b[v+(w*40|0)+8>>1]|b[v+(z*40|0)+8>>1])&1){p=v+(s*40|0)+8|0;if(!(b[p>>1]&9312)){b[p>>1]=1;Q=v;w=o;R=T;S=U;break}else{rg(r);Q=v;w=o;R=T;S=U;break}}x=Rg(v+(w*40|0)|0)|0;J=C;G=Rg(v+(z*40|0)|0)|0;F=C;w=a[E>>0]|0;z=w&255;do if(w<<24>>24==86){x=G|x;p=F|J}else if(w<<24>>24!=85)if(!((G|0)==0&(F|0)==0)){if((F|0)<0){w=175-z&255;z=$v(0,0,G|0,F|0)|0;if((F|0)>-1|(F|0)==-1&G>>>0>4294967232){F=C;ee=194}}else{z=G;ee=194}if((ee|0)==194){ee=0;if(!((F|0)>0|(F|0)==0&z>>>0>63)){if(w<<24>>24==87){x=ew(x|0,J|0,z|0)|0;p=C;break}x=iw(x|0,J|0,z|0)|0;p=C;if((J|0)>=0)break;S=$v(64,0,z|0,F|0)|0;S=ew(-1,-1,S|0)|0;x=S|x;p=C|p;break}}if((J|0)>-1|(J|0)==-1&x>>>0>4294967295){x=0;p=0}else{p=(w<<24>>24!=87)<<31>>31;x=p;p=((p|0)<0)<<31>>31}}else p=J;else{x=G&x;p=F&J}while(0);Q=r;c[Q>>2]=x;c[Q+4>>2]=p;Q=v+(s*40|0)+8|0;b[Q>>1]=e[Q>>1]&48640|4;Q=v;w=o;R=T;S=U;break}case 202:{ee=0;w=c[o+(n*20|0)+4>>2]|0;Q=v+(w*40|0)|0;R=Rg(Q)|0;w=v+(w*40|0)+8|0;b[w>>1]=e[w>>1]&48640|4;w=c[o+(n*20|0)+8>>2]|0;w=fw(R|0,C|0,w|0,((w|0)<0)<<31>>31|0)|0;c[Q>>2]=w;c[Q+4>>2]=C;Q=v;w=o;R=T;S=U;break}case 203:{ee=0;r=c[o+(n*20|0)+4>>2]|0;w=v+(r*40|0)+8|0;p=b[w>>1]|0;if(!(p&4)){bm(v+(r*40|0)|0,67,Gc);p=b[w>>1]|0;if(!(p&4)){B=c[o+(n*20|0)+8>>2]|0;if(!B){p=n;q=20;ee=1318;break c}Q=v;w=o;R=T;S=U;r=G;n=B+-1|0;break}}b[w>>1]=p&48640|4;Q=v;w=o;R=T;S=U;r=G;break}case 208:{ee=0;p=c[o+(n*20|0)+4>>2]|0;r=v+(p*40|0)+8|0;if(!(b[r>>1]&4)){Q=v;w=o;R=T;S=U;r=G}else{Q=v+(p*40|0)|0;h[Q>>3]=+Qg(Q);b[r>>1]=e[r>>1]&48640|8;Q=v;w=o;R=T;S=U;r=G}break}case 213:{ee=0;L=c[o+(p*20|0)+4>>2]|0;J=v+(L*40|0)|0;H=c[o+(p*20|0)+12>>2]|0;s=v+(H*40|0)|0;L=v+(L*40|0)+8|0;I=b[L>>1]|0;H=v+(H*40|0)+8|0;K=b[H>>1]|0;E=I&65535;w=K&65535;D=o+(p*20|0)+3|0;G=d[D>>0]|0;do if(!((K|I)&1)){G=G&71;if(G>>>0>66){if((E&14|0)==2){nh(J,0);x=b[H>>1]|0}else x=K;if((x&14)==2){nh(s,0);G=I;B=K}else{G=I;B=K}}else if((G|0)==66){if((E&2|0)!=0|(E&12|0)==0){F=K;G=I}else{Zl(J,Gc,1)|0;F=b[H>>1]|0;G=(e[L>>1]&65024|E&511)&65535}S=F&65535;if((S&2|0)!=0|(S&12|0)==0)B=K;else{Zl(s,Gc,1)|0;B=(e[H>>1]&65024|w&511)&65535}}else{G=I;B=K}if(b[L>>1]&16384){Ng(J)|0;G=G&49151}if(b[H>>1]&16384){Ng(s)|0;B=B&49151}if(a[ce>>0]|0){u=ce;v=fe;n=m;m=t;ee=1317;break a}S=dm(s,J,c[o+(p*20|0)+16>>2]|0)|0;F=a[z>>0]|0;n=p;z=S}else{if(G&128){G=I;B=K;n=p;z=(I&1&K)<<16>>16!=0&(w&256|0)==0&1^1;break}if(G&32){r=c[o+(p*20|0)+8>>2]|0;Q=v+(r*40|0)+8|0;b[Q>>1]=e[Q>>1]&48640|1;Q=v;w=o;R=T;S=U;r=v+(r*40|0)|0;n=p;break q}if(!(G&16)){Q=v;w=o;R=T;S=U;n=p;break q}Q=v;w=o;R=T;S=U;n=(c[o+(p*20|0)+8>>2]|0)+-1|0;break q}while(0);switch(F&255|0){case 79:{z=(z|0)==0&1;break}case 78:{z=(z|0)!=0&1;break}case 82:{z=z>>>31;break}case 81:{z=(z|0)<1&1;break}case 80:{z=(z|0)>0&1;break}default:z=z>>>31^1}if(!(a[D>>0]&32)){if(z)n=(c[o+(n*20|0)+8>>2]|0)+-1|0}else{S=c[o+(n*20|0)+8>>2]|0;r=v+(S*40|0)|0;S=v+(S*40|0)+8|0;b[S>>1]=e[S>>1]&48640|4;S=r;c[S>>2]=z;c[S+4>>2]=0}b[L>>1]=G;b[H>>1]=B;Q=v;w=o;R=T;S=U;break}case 248:{ee=0;Q=v;w=o;R=c[o+(n*20|0)+16>>2]|0;S=U;break}case 249:{ee=0;s=(a[o+(n*20|0)+3>>0]&1)==0?0:T;D=c[o+(n*20|0)+12>>2]|0;E=c[o+(n*20|0)+16>>2]|0;F=c[o+(n*20|0)+4>>2]|0;G=c[o+(n*20|0)+8>>2]|0;if((D|0)>0){w=(s|0)==0;p=E+16|0;B=0;while(1){if(w)x=B;else x=c[s+(B<<2)>>2]|0;z=a[(c[p>>2]|0)+B>>0]|0;x=dm(v+((x+F|0)*40|0)|0,v+((x+G|0)*40|0)|0,c[E+(B<<2)+20>>2]|0)|0;B=B+1|0;if(x)break;if((B|0)>=(D|0)){Q=v;w=o;R=0;S=0;break q}}Q=v;w=o;R=0;S=z<<24>>24==0?x:0-x|0}else{Q=v;w=o;R=0;S=U}break}case 256:{ee=0;if((U|0)<0){Q=v;w=o;R=T;S=U;n=(c[o+(p*20|0)+4>>2]|0)+-1|0;break}if(!U){Q=v;w=o;R=T;S=0;n=(c[o+(p*20|0)+8>>2]|0)+-1|0;break}else{Q=v;w=o;R=T;S=U;n=(c[o+(p*20|0)+12>>2]|0)+-1|0;break}}case 261:{ee=0;p=c[o+(n*20|0)+4>>2]|0;if(!(b[v+(p*40|0)+8>>1]&1)){r=Rg(v+(p*40|0)|0)|0;r=(r|0)!=0|(C|0)!=0?3:0}else r=6;p=c[o+(n*20|0)+8>>2]|0;if(!(b[v+(p*40|0)+8>>1]&1)){p=Rg(v+(p*40|0)|0)|0;p=((p|0)!=0|(C|0)!=0)&1}else p=2;p=a[((a[z>>0]|0)==72?41680:41696)+(p+r)>>0]|0;r=c[o+(n*20|0)+12>>2]|0;G=v+(r*40|0)|0;if(p<<24>>24==2){Q=v+(r*40|0)+8|0;b[Q>>1]=e[Q>>1]&48640|1;Q=v;w=o;R=T;S=U;r=G;break}else{Q=G;c[Q>>2]=p&255;c[Q+4>>2]=0;Q=v+(r*40|0)+8|0;b[Q>>1]=e[Q>>1]&48640|4;Q=v;w=o;R=T;S=U;r=G;break}}case 268:{ee=0;p=c[o+(n*20|0)+4>>2]|0;r=c[o+(n*20|0)+8>>2]|0;G=v+(r*40|0)|0;r=v+(r*40|0)+8|0;if(!(b[r>>1]&9312))b[r>>1]=1;else rg(G);if(!(b[v+(p*40|0)+8>>1]&1)){b[r>>1]=4;w=Rg(v+(p*40|0)|0)|0;Q=G;c[Q>>2]=(w|0)==0&(C|0)==0&1;c[Q+4>>2]=0;Q=v;w=o;R=T;S=U;r=G}else{Q=v;w=o;R=T;S=U;r=G}break}case 273:{ee=0;p=c[o+(n*20|0)+4>>2]|0;r=c[o+(n*20|0)+8>>2]|0;G=v+(r*40|0)|0;r=v+(r*40|0)+8|0;if(!(b[r>>1]&9312))b[r>>1]=1;else rg(G);if(!(b[v+(p*40|0)+8>>1]&1)){b[r>>1]=4;w=Rg(v+(p*40|0)|0)|0;Q=G;c[Q>>2]=~w;c[Q+4>>2]=~C;Q=v;w=o;R=T;S=U;r=G}else{Q=v;w=o;R=T;S=U;r=G}break}case 278:{ee=0;p=(c[Eb>>2]|0)+(c[o+(n*20|0)+4>>2]|0)|0;if(!(a[p>>0]|0)){a[p>>0]=1;Q=v;w=o;R=T;S=U;break}else{Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0;break}}case 281:{ee=0;p=c[o+(n*20|0)+4>>2]|0;if(!(b[v+(p*40|0)+8>>1]&1)){p=+Qg(v+(p*40|0)|0)!=0.0;p=(p^(a[z>>0]|0)==46)&1}else p=c[o+(n*20|0)+12>>2]|0;if(!p){Q=v;w=o;R=T;S=U}else{Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}break}case 286:{ee=0;if(!(b[v+((c[o+(n*20|0)+4>>2]|0)*40|0)+8>>1]&1)){Q=v;w=o;R=T;S=U}else{Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}break}case 288:{ee=0;if(!(b[v+((c[o+(n*20|0)+4>>2]|0)*40|0)+8>>1]&1)){Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}else{Q=v;w=o;R=T;S=U}break}case 290:{ee=0;R=c[o+(p*20|0)+8>>2]|0;x=c[o+(p*20|0)+12>>2]|0;B=v+(x*40|0)|0;Q=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;I=c[Q+80>>2]|0;w=c[Q>>2]|0;if(!(a[Q+26>>0]|0)){if((w|0)!=0?(a[w+73>>0]|0)!=1:0){Qd=fm(Q)|0;ee=295}}else{Qd=em(Q)|0;ee=295}if((ee|0)==295?(ee=0,(Qd|0)!=0):0){q=Qd;ee=1318;break c}J=Q+60|0;z=c[Xd>>2]|0;u:do if((c[J>>2]|0)==(z|0)){z=b[Q+22>>1]|0;if((z&65535|0)>(R|0))ee=350;else{F=Q+72|0;ee=318}}else{do if(a[Q+25>>0]|0){if(!w){G=c[Q+16>>2]|0;D=c[v+(G*40|0)+12>>2]|0;c[Q+68>>2]=D;c[Q+64>>2]=D;G=c[v+(G*40|0)+16>>2]|0;s=Q+76|0;c[s>>2]=G;break}n=v+(x*40|0)+8|0;if(!(b[n>>1]&9312)){b[n>>1]=1;break u}else{rg(B);break u}}else{if(!(a[Q+27>>0]&4)){gm(w,qd);F=e[w+40>>1]|0;G=c[w+32>>2]|0;c[Q+76>>2]=G;z=c[qd>>2]|0;c[Q+64>>2]=z}else{z=Q+64|0;hm(w,z);F=e[w+40>>1]|0;G=c[w+32>>2]|0;c[Q+76>>2]=G;z=c[z>>2]|0}c[Q+68>>2]=z>>>0>F>>>0?F:z;if(z>>>0>(c[wb>>2]|0)>>>0){q=t;ee=1316;break c}s=Q+76|0;z=c[Xd>>2]|0;D=F}while(0);c[J>>2]=z;z=a[G>>0]|0;if(z<<24>>24>-1){E=z&255;c[hd>>2]=E;G=1}else{G=im(G,hd)|0;E=c[hd>>2]|0}F=Q+72|0;c[F>>2]=G&255;b[Q+22>>1]=0;c[I>>2]=E;if(E>>>0>98307){q=t;ee=313;break c}if(E>>>0>(c[Q+64>>2]|0)>>>0){q=t;ee=313;break c}if(D>>>0>>0){c[s>>2]=0;c[Q+68>>2]=0;z=0;ee=318}else{z=0;ee=318}}while(0);do if((ee|0)==318){ee=0;G=c[F>>2]|0;E=c[I>>2]|0;if(G>>>0>>0){P=Q+76|0;D=c[P>>2]|0;if(!D){S=Gd+0|0;D=S+40|0;do{c[S>>2]=0;S=S+4|0}while((S|0)<(D|0));G=jm(w,0,c[I>>2]|0,((d[Q+27>>0]|0)>>>2&1^1)&255,Gd)|0;if(G){o=G;q=t;ee=1309;break c}z=Q+22|0;O=z;z=b[z>>1]|0;G=c[F>>2]|0;E=c[I>>2]|0;L=c[Gb>>2]|0}else{O=Q+22|0;L=D}s=z&65535;K=c[I+(s<<2)>>2]|0;c[hd>>2]=K;n=L+E|0;G=L+G|0;while(1){D=a[G>>0]|0;if(D<<24>>24>-1){J=D&255;c[Id>>2]=J;G=G+1|0}else{G=G+((im(G,Id)|0)&255)|0;J=c[Id>>2]|0}c[Q+(s<<2)+84>>2]=J;if(J>>>0>11)D=(J+-12|0)>>>1;else D=d[34336+J>>0]|0;J=K+D|0;c[hd>>2]=J;if(J>>>0>>0){G=J;D=s;ee=331;break}D=s+1|0;c[I+(D<<2)>>2]=J;if((s|0)<(R|0)&G>>>0>>0){K=J;s=D}else break}if((ee|0)==331){ee=0;J=G;G=L+(E+1)|0}b[O>>1]=D;c[F>>2]=G-L;if(!(c[P>>2]|0)){if(!((b[Hb>>1]&9312)==0&(c[Ib>>2]|0)==0))Mg(Gd);b[Hb>>1]=1}if(G>>>0>=n>>>0){if(G>>>0>n>>>0){q=t;ee=343;break c}if((J|0)==(c[Q+64>>2]|0))z=J;else{q=t;ee=343;break c}}else z=c[Q+64>>2]|0;if(J>>>0>z>>>0){q=t;ee=343;break c}z=b[O>>1]|0}if((z&65535|0)<=(R|0)){if((a[o+(p*20|0)+1>>0]|0)==-8){Vl(B,c[o+(p*20|0)+16>>2]|0,2048);n=v+(x*40|0)+8|0;break}n=v+(x*40|0)+8|0;if(!(b[n>>1]&9312)){b[n>>1]=1;break}else{rg(B);break}}else ee=350}while(0);if((ee|0)==350){ee=0;n=v+(x*40|0)+8|0;if(b[n>>1]&9312)rg(B);G=c[Q+(R<<2)+84>>2]|0;c[Id>>2]=G;do if((c[Q+68>>2]|0)>>>0<(c[I+(R+1<<2)>>2]|0)>>>0){S=a[o+(p*20|0)+3>>0]|0;if(!((S&255)>63?G>>>0>11&(G&1|0)==0|S<<24>>24<0:0)){if(G>>>0>11)z=(G+-12|0)>>>1;else z=d[34336+G>>0]|0;if(z){z=jm(w,c[I+(R<<2)>>2]|0,z,((d[Q+27>>0]|0)>>>2&1^1)&255,B)|0;if(z){o=z;q=t;ee=1309;break c}km(c[v+(x*40|0)+16>>2]|0,G,B)|0;b[n>>1]=e[n>>1]&61439;break}}km(G>>>0<14?qd:0,G,B)|0}else km((c[Q+76>>2]|0)+(c[I+(R<<2)>>2]|0)|0,G,B)|0;while(0);a[v+(x*40|0)+10>>0]=Gc}w=e[n>>1]|0;if((w&4096|0)!=0?(xc=v+(x*40|0)+16|0,yc=c[xc>>2]|0,(yc|0)!=0):0){s=c[v+(x*40|0)+12>>2]|0;if(bh(B,s+2|0)|0){u=ce;v=fe;n=m;m=t;ee=1317;break a}gw(c[xc>>2]|0,yc|0,s|0)|0;a[(c[xc>>2]|0)+s>>0]=0;a[(c[xc>>2]|0)+(s+1)>>0]=0;b[n>>1]=w&18|512;Q=v;w=o;R=T;S=U;n=p}else{Q=v;w=o;R=T;S=U;n=p}break}case 368:{ee=0;s=c[o+(n*20|0)+16>>2]|0;p=a[s>>0]|0;if(!(p<<24>>24)){Q=v;w=o;R=T;S=U}else{w=v+((c[o+(n*20|0)+4>>2]|0)*40|0)|0;while(1){s=s+1|0;bm(w,p,Gc);p=a[s>>0]|0;if(!(p<<24>>24)){Q=v;w=o;R=T;S=U;break}else w=w+40|0}}break}case 371:{ee=0;R=c[o+(p*20|0)+4>>2]|0;z=c[o+(p*20|0)+16>>2]|0;S=v+(R*40|0)|0;R=v+((R+-1+(c[o+(p*20|0)+8>>2]|0)|0)*40|0)|0;x=a[Jb>>0]|0;Q=c[o+(p*20|0)+12>>2]|0;r=v+(Q*40|0)|0;if(z){w=a[z>>0]|0;n=S;while(1){z=z+1|0;bm(n,w,Gc);w=a[z>>0]|0;if(!(w<<24>>24))break;else n=n+40|0}}L=(x&255)>3;J=0;s=0;O=0;n=0;I=R;while(1){K=b[I+8>>1]|0;F=K&65535;v:do if(!(F&1)){do if(!(F&4)){if(F&8){G=7;ee=388;break v}G=c[I+12>>2]|0;if(F&16384)G=(c[I>>2]|0)+G|0;G=(G<<1)+12|F>>>1&1}else{F=I;G=c[F>>2]|0;F=c[F+4>>2]|0;E=aw(G|0,F|0,63)|0;E=E^G;D=C^F;if(D>>>0<0|(D|0)==0&E>>>0<128){if(!((G&1|0)==(G|0)&0==(F|0)&L)){G=1;ee=388;break v}G=E+8|0;break}if(D>>>0<0|(D|0)==0&E>>>0<32768){G=2;ee=388;break v}if(D>>>0<0|(D|0)==0&E>>>0<8388608){G=3;ee=388;break v}if(D>>>0<0|(D|0)==0&E>>>0<2147483648){G=4;ee=388;break v}G=D>>>0<32768|(D|0)==32768&E>>>0<0?5:6;ee=388;break v}while(0);c[I+28>>2]=G;if(G>>>0>11){F=G;G=(G+-12|0)>>>1}else ee=391}else{G=0;ee=388}while(0);if((ee|0)==388){c[I+28>>2]=G;ee=391}if((ee|0)==391){ee=0;F=G;G=d[34336+G>>0]|0}do if(K&16384)if((J|0)==0&(s|0)==0){K=c[I>>2]|0;G=G-K|0;K=K+n|0;break}else{Ng(I)|0;K=n;break}else K=n;while(0);J=fw(G|0,((G|0)<0)<<31>>31|0,J|0,s|0)|0;s=C;if(F>>>0<128)G=1;else{E=0;G=0;do{G=G+1|0;F=iw(F|0,E|0,7)|0;E=C}while(((F|0)!=0|(E|0)!=0)&(G|0)<9)}G=G+O|0;I=I+-40|0;if(I>>>0>>0){D=G;break}else{O=G;n=K}}if((D|0)<127)F=D+1|0;else{F=D;E=((D|0)<0)<<31>>31;G=0;do{G=G+1|0;F=iw(F|0,E|0,7)|0;E=C}while(((F|0)!=0|(E|0)!=0)&(G|0)<9);D=G+D|0;F=D;E=((D|0)<0)<<31>>31;z=0;do{z=z+1|0;F=iw(F|0,E|0,7)|0;E=C}while(((F|0)!=0|(E|0)!=0)&(z|0)<9);F=((G|0)<(z|0)&1)+D|0}G=((F|0)<0)<<31>>31;n=fw(F|0,G|0,J|0,s|0)|0;L=C;P=c[wb>>2]|0;O=((P|0)<0)<<31>>31;if((L|0)>(O|0)|(L|0)==(O|0)&n>>>0>P>>>0){q=t;ee=1316;break c}if(bh(r,n)|0){u=ce;v=fe;n=m;m=t;ee=1317;break a}I=c[v+(Q*40|0)+16>>2]|0;if(F>>>0<128){a[I>>0]=F;s=1;J=S}else{s=(lm(I,F,G)|0)&255;J=S}while(1){E=c[J+28>>2]|0;if(E>>>0<128){a[I+s>>0]=E;G=1}else G=(lm(I+s|0,E,0)|0)&255;s=G+s|0;G=I+F|0;if(!(E>>>0<8&(E|0)!=0))if(E>>>0>11){z=c[J+12>>2]|0;gw(G|0,c[J+16>>2]|0,z|0)|0}else z=0;else{G=J;if(E>>>0>11)z=(E+-12|0)>>>1;else z=d[34336+E>>0]|0;D=c[G>>2]|0;G=c[G+4>>2]|0;E=z;while(1){E=E+-1|0;a[I+(E+F)>>0]=D;D=iw(D|0,G|0,8)|0;if(!E)break;else G=C}}J=J+40|0;if(J>>>0>R>>>0)break;else F=z+F|0}c[v+(Q*40|0)+12>>2]=n;n=v+(Q*40|0)+8|0;b[n>>1]=16;if(K){c[r>>2]=K;b[n>>1]=16400}a[v+(Q*40|0)+10>>0]=1;Q=v;w=o;R=T;S=U;n=p;break}case 446:{ee=0;if((c[Yd>>2]|0)>0){q=t;ee=447;break c}if(!s)w=0;else{p=s;while(1)if(!(a[p>>0]|0))break;else p=p+1|0;w=p-s&1073741823}z=om(he,0,(c[Lb>>2]|0)+(c[Kb>>2]|0)|0)|0;if(z){p=n;q=z;ee=1318;break c}p=ih(he,w+33|0,0)|0;if(!p){Q=v;w=o;R=T;S=U}else{S=p+32|0;c[p>>2]=S;gw(S|0,s|0,w+1|0)|0;if(!(a[ae>>0]|0))c[Lb>>2]=(c[Lb>>2]|0)+1;else{a[ae>>0]=0;a[Pb>>0]=1}c[p+24>>2]=c[Mb>>2];c[Mb>>2]=p;Q=Nb;w=c[Q+4>>2]|0;R=p+8|0;c[R>>2]=c[Q>>2];c[R+4>>2]=w;R=Ob;w=c[R+4>>2]|0;Q=p+16|0;c[Q>>2]=c[R>>2];c[Q+4>>2]=w;Q=v;w=o;R=T;S=U}break}case 486:{c[Lb>>2]=(c[Lb>>2]|0)+-1;ee=488;break}case 525:{ee=0;sm(c[(c[Td>>2]|0)+(c[o+(n*20|0)+4>>2]<<4)+4>>2]|0,c[o+(n*20|0)+12>>2]|0,Vc);w=c[Vc>>2]|0;Q=r;c[Q>>2]=w;c[Q+4>>2]=((w|0)<0)<<31>>31;Q=v;w=o;R=T;S=U;break}case 558:{ee=0;r=tm(f,c[o+(p*20|0)+4>>2]|0,c[o+(p*20|0)+8>>2]|0,-1,1)|0;if(!r){u=ce;v=fe;n=m;m=t;ee=1317;break a}w=c[o+(p*20|0)+16>>2]|0;z=r+8|0;c[z>>2]=w;x=c[o+(p*20|0)+12>>2]|0;w=e[w+6>>1]<<2;n=w+148|0;s=ih(he,n,0)|0;if(!s){o=r;q=t;ee=560;break c}bw(s|0,0,n|0)|0;c[r+56>>2]=s;S=s+128|0;c[s+28>>2]=S;gw(S|0,c[z>>2]|0,w+20|0)|0;c[s+140>>2]=0;if(x)b[s+134>>1]=x;n=c[Td>>2]|0;r=c[(c[(c[n+4>>2]|0)+4>>2]|0)+32>>2]|0;c[s+12>>2]=r;a[s+59>>0]=1;a[s+57>>0]=0;c[s+24>>2]=he;c[s+72>>2]=s;if(((a[Xb>>0]|0)!=2?(Ac=c[2242]|0,c[s>>2]=_(Ac,r)|0,S=c[(c[n+12>>2]|0)+80>>2]|0,S=(S|0)<(Ac|0)?Ac:S,Ac=((r|0)<0)<<31>>31,S=ow(S|0,((S|0)<0)<<31>>31|0,r|0,Ac|0)|0,R=C,c[s+4>>2]=(R|0)<0|(R|0)==0&S>>>0<536870912?S:536870912,(c[2234]|0)==0):0)?(c[s+52>>2]=r,S=mg(r,Ac)|0,c[s+40>>2]=S,(S|0)==0):0){o=7;q=t;ee=1309;break c}else{Q=v;w=o;R=T;S=U;r=J;n=p}break}case 566:{ee=0;Q=(c[(c[Fb>>2]|0)+(c[o+(n*20|0)+4>>2]<<2)>>2]|0)+40|0;S=Q;R=c[S>>2]|0;S=c[S+4>>2]|0;P=fw(R|0,S|0,1,0)|0;c[Q>>2]=P;c[Q+4>>2]=C;if((R|0)==0&(S|0)==0){Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}else{Q=v;w=o;R=T;S=U}break}case 568:{ee=0;n=tm(f,c[o+(p*20|0)+4>>2]|0,c[o+(p*20|0)+12>>2]|0,-1,0)|0;if(!n){u=ce;v=fe;n=m;m=t;ee=1317;break a}a[n+25>>0]=1;c[n+16>>2]=c[o+(p*20|0)+8>>2];Q=n+27|0;a[Q>>0]=a[Q>>0]|4;Q=v;w=o;R=T;S=U;n=p;break}case 570:{ee=0;Q=o+(n*20|0)+4|0;xm(f,c[(c[Fb>>2]|0)+(c[Q>>2]<<2)>>2]|0);c[(c[Fb>>2]|0)+(c[Q>>2]<<2)>>2]=0;Q=v;w=o;R=T;S=U;break}case 571:{ee=0;J=c[(c[Fb>>2]|0)+(c[o+(n*20|0)+4>>2]<<2)>>2]|0;a[J+25>>0]=0;if(!(a[J+27>>0]&4)){S=c[o+(n*20|0)+16>>2]|0;c[td>>2]=c[J+8>>2];b[_b>>1]=S;a[$b>>0]=(w<<1&2^2)+255;S=c[o+(n*20|0)+12>>2]|0;p=v+(S*40|0)|0;c[ac>>2]=p;if(b[v+(S*40|0)+8>>1]&16384)Ng(p)|0;z=ym(c[J>>2]|0,td,0,0,0,xd)|0;if(z){p=n;q=z;ee=1318;break c}}else{z=c[o+(n*20|0)+12>>2]|0;x=v+(z*40|0)|0;z=v+(z*40|0)+8|0;if((b[z>>1]&14)==2)nh(x,0);G=Rg(x)|0;F=C;z=e[z>>1]|0;do if(!(z&4)){if(!(z&8)){Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0;break q}y=+h[x>>3];A=+(G>>>0)+4294967296.0*+(F|0);if(y>31)+w|0;break}else{w=(y>A&(w&1|0)==0&1)+w|0;break}}while(0);z=ym(c[J>>2]|0,0,G,F,0,xd)|0;S=J+48|0;c[S>>2]=G;c[S+4>>2]=F;if(z){p=n;q=z;ee=1318;break c}}a[J+26>>0]=0;c[J+60>>2]=0;p=c[xd>>2]|0;do if((w|0)>63){if((p|0)>=0?!((p|0)==0&(w|0)==65):0){c[xd>>2]=0;Q=v;w=o;R=T;S=U;break q}c[xd>>2]=0;s=zm(c[J>>2]|0,xd)|0;if(!s)ee=593;else{p=n;q=s;ee=1318;break c}}else{if((p|0)<=0?!((p|0)==0&(w|0)==62):0){p=(a[(c[J>>2]|0)+73>>0]|0)!=1&1;c[xd>>2]=p;break}c[xd>>2]=0;s=Am(c[J>>2]|0,xd)|0;if(!s)ee=593;else{p=n;q=s;ee=1318;break c}}while(0);if((ee|0)==593){ee=0;p=c[xd>>2]|0}if(!p){Q=v;w=o;R=T;S=U}else{Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}break}case 596:{ee=0;Q=c[(c[Fb>>2]|0)+(c[o+(n*20|0)+4>>2]<<2)>>2]|0;a[Q+25>>0]=0;R=Rg(v+((c[o+(n*20|0)+8>>2]|0)*40|0)|0)|0;w=Q+48|0;c[w>>2]=R;c[w+4>>2]=C;a[Q+26>>0]=1;Q=v;w=o;R=T;S=U;break}case 597:{ee=0;K=c[(c[Fb>>2]|0)+(c[o+(p*20|0)+4>>2]<<2)>>2]|0;w=c[o+(p*20|0)+12>>2]|0;G=v+(w*40|0)|0;c[ld>>2]=0;s=o+(p*20|0)+16|0;z=c[s>>2]|0;n=K+8|0;x=c[n>>2]|0;w:do if((z|0)>0){c[ud>>2]=x;z=z&65535;b[bc>>1]=z;c[cc>>2]=G;if(!(z<<16>>16))w=ud;else{w=G;x=0;while(1){if(b[w+(x*40|0)+8>>1]&16384){Ng(w+(x*40|0)|0)|0;z=b[bc>>1]|0}x=x+1|0;if((x|0)>=(z&65535|0)){w=ud;break w}w=c[cc>>2]|0}}}else{z=Bm(x,Pc,191,ld)|0;if(!z){u=ce;v=fe;n=m;m=t;ee=1317;break a}if(b[v+(w*40|0)+8>>1]&16384)Ng(G)|0;Cm(c[n>>2]|0,c[v+(w*40|0)+12>>2]|0,c[v+(w*40|0)+16>>2]|0,z);w=z}while(0);a[w+6>>0]=0;x:do if((a[I>>0]|0)==67?(Bc=b[w+4>>1]|0,Bc<<16>>16!=0):0){z=c[w+8>>2]|0;x=0;while(1){if(b[z+(x*40|0)+8>>1]&1)break;x=x+1|0;if((x|0)>=(Bc&65535|0)){J=p;n=p;break x}}J=p;n=(c[o+(p*20|0)+8>>2]|0)+-1|0}else{J=p;n=p}while(0);z=ym(c[K>>2]|0,w,0,0,0,yd)|0;if(!(c[s>>2]|0))ig(he,c[ld>>2]|0);if(z){p=n;o=z;q=t;ee=1309;break c}p=c[yd>>2]|0;c[K+12>>2]=p;p=(p|0)==0;a[K+25>>0]=p&1^1;a[K+26>>0]=0;c[K+60>>2]=0;if((a[I>>0]|0)==69){if(!p){Q=v;w=o;R=T;S=U;break}Q=v;w=o;R=T;S=U;n=(c[o+(J*20|0)+8>>2]|0)+-1|0;break}else{if(p){Q=v;w=o;R=T;S=U;break}Q=v;w=o;R=T;S=U;n=(c[o+(J*20|0)+8>>2]|0)+-1|0;break}}case 624:{ee=0;Q=(c[(c[Fb>>2]|0)+(c[o+(n*20|0)+4>>2]<<2)>>2]|0)+40|0;w=Q;R=c[w>>2]|0;w=c[w+4>>2]|0;S=fw(R|0,w|0,1,0)|0;c[Q>>2]=S;c[Q+4>>2]=C;Q=r;c[Q>>2]=R;c[Q+4>>2]=w;Q=v;w=o;R=T;S=U;break}case 647:{ee=0;F=c[o+(n*20|0)+8>>2]|0;p=c[(c[Fb>>2]|0)+(c[o+(n*20|0)+4>>2]<<2)>>2]|0;w=c[o+(n*20|0)+12>>2]|0;if(z<<24>>24==75){D=v+(w*40|0)|0;B=c[D>>2]|0;D=c[D+4>>2]|0}else{B=w;D=((w|0)<0)<<31>>31}E=o+(n*20|0)+3|0;G=a[E>>0]|0;if(G&1)c[rb>>2]=(c[rb>>2]|0)+1;if(G&2){m=je;c[m>>2]=B;c[m+4>>2]=D;m=B;l=D}z=b[v+(F*40|0)+8>>1]|0;if(z&1){c[v+(F*40|0)+16>>2]=0;c[v+(F*40|0)+12>>2]=0}if(!(G&16))x=0;else x=c[p+12>>2]|0;if(!(z&16384))z=0;else z=c[v+(F*40|0)>>2]|0;z=Em(c[p>>2]|0,0,B,D,c[v+(F*40|0)+16>>2]|0,c[v+(F*40|0)+12>>2]|0,z,(G&255)>>>3&1,x)|0;a[p+26>>0]=0;c[p+60>>2]=0;if(z){p=n;o=z;q=t;ee=1309;break c}w=c[dc>>2]|0;if((w|0)!=0?(Cc=c[o+(n*20|0)+16>>2]|0,(Cc|0)!=0):0){Zb[w&1](c[ec>>2]|0,(a[E>>0]&4)!=0?23:18,c[(c[Td>>2]|0)+(a[p+24>>0]<<4)>>2]|0,Cc,B,D);Q=v;w=o;R=T;S=U}else{Q=v;w=o;R=T;S=U}break}case 671:{ee=0;Q=c[rb>>2]|0;c[sb>>2]=Q;c[tb>>2]=(c[tb>>2]|0)+Q;c[rb>>2]=0;Q=v;w=o;R=T;S=U;break}case 672:{ee=0;G=c[(c[Fb>>2]|0)+(c[o+(n*20|0)+4>>2]<<2)>>2]|0;F=c[o+(n*20|0)+12>>2]|0;E=c[o+(n*20|0)+16>>2]|0;w=c[G+56>>2]|0;x=w+32|0;z=c[x>>2]|0;G=c[G+8>>2]|0;if(!z){z=Bm(G,0,0,jd)|0;c[x>>2]=z;if(!z){p=n;o=7;q=t;ee=1309;break c}b[z+4>>1]=E}if(!(a[w+56>>0]|0)){w=c[w+36>>2]|0;x=w;w=w+8|0}else{S=c[w+20>>2]|0;w=c[(c[S+8>>2]|0)+4>>2]|0;S=c[S+12>>2]|0;x=S+(w*56|0)+20|0;w=c[S+(w*56|0)+32>>2]|0}Cm(G,c[x>>2]|0,w,z);y:do if((E|0)>0){w=c[z+8>>2]|0;p=0;while(1){if(b[w+(p*40|0)+8>>1]&1)break y;p=p+1|0;if((p|0)>=(E|0)){ee=682;break}}}else ee=682;while(0);if((ee|0)==682){ee=0;if(!(Gm(c[v+(F*40|0)+12>>2]|0,c[v+(F*40|0)+16>>2]|0,z,0)|0)){Q=v;w=o;R=T;S=U;break}}Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0;break}case 700:{ee=0;b[r+8>>1]=1;Q=v;w=o;R=T;S=U;break}case 708:{ee=0;b[r+8>>1]=1;Q=v;w=o;R=T;S=U;break}case 711:{ee=0;p=c[(c[Fb>>2]|0)+(c[o+(n*20|0)+4>>2]<<2)>>2]|0;a[p+25>>0]=1;c[p+60>>2]=0;p=c[p>>2]|0;if(!p){Q=v;w=o;R=T;S=U}else{Q=p+56|0;Sc(c[Q>>2]|0);c[Q>>2]=0;a[p+73>>0]=0;Q=v;w=o;R=T;S=U}break}case 801:{ee=0;p=c[(c[Fb>>2]|0)+(c[o+(n*20|0)+4>>2]<<2)>>2]|0;r=c[p>>2]|0;s=J+8|0;b[s>>1]=1;if((a[r+73>>0]|0)!=1?(q=fm(p)|0,(q|0)!=0):0){p=n;ee=1318;break c}if(!(a[p+25>>0]|0)){p=Pd;c[p>>2]=0;c[p+4>>2]=0;gm(r,Pd);b[oc>>1]=0;c[qc>>2]=he;c[rc>>2]=0;p=jm(r,0,c[Pd>>2]|0,1,Yc)|0;do if(!p){p=c[sc>>2]|0;r=a[p>>0]|0;if(r<<24>>24>-1){z=r&255;c[nd>>2]=z}else{im(p,nd)|0;z=c[nd>>2]|0}if(!(z>>>0<3?1:(z|0)>(c[tc>>2]|0))){w=(c[sc>>2]|0)+(z+-1)|0;p=a[w>>0]|0;if(p<<24>>24>-1){p=p&255;c[Kd>>2]=p}else{im(w,Kd)|0;p=c[Kd>>2]|0}if(!((p+-1|0)>>>0>8|(p|0)==7)){if(p>>>0>11)w=(p+-12|0)>>>1;else w=d[34336+p>>0]|0;r=c[tc>>2]|0;if(r>>>0>=(w+z|0)>>>0){km((c[sc>>2]|0)+(r-w)|0,p,Nd)|0;p=Nd;w=c[p>>2]|0;p=c[p+4>>2]|0;if((b[oc>>1]&9312)==0&(c[rc>>2]|0)==0){B=0;break}Mg(Yc);B=0;break}}}if(!((b[oc>>1]&9312)==0&(c[rc>>2]|0)==0))Mg(Yc);c[ge>>2]=68698;c[ge+4>>2]=10788;Zc(11,13600,ge);B=11;w=0;p=0}else{B=p;w=0;p=0}while(0);if(B){p=n;q=B;ee=1318;break c}Q=J;c[Q>>2]=w;c[Q+4>>2]=p;b[s>>1]=4;Q=v;w=o;R=T;S=U;r=J}else{Q=v;w=o;R=T;S=U;r=J}break}case 865:{ee=0;s=c[z>>2]|0;z=c[(c[Td>>2]|0)+(K<<4)+12>>2]|0;w=c[z+16>>2]|0;if(w)do{p=(c[w+8>>2]|0)+32|0;if((c[p>>2]|0)==(x|0))c[p>>2]=s;w=c[w>>2]|0}while((w|0)!=0);p=c[z+32>>2]|0;if(p)do{w=(c[p+8>>2]|0)+40|0;if((c[w>>2]|0)==(x|0))c[w>>2]=s;p=c[p>>2]|0}while((p|0)!=0);Q=v;w=o;R=T;S=U;t=K+1&255;break}case 878:{ee=0;Wm(he,r);Q=v;w=o;R=T;S=U;r=G;break}case 881:{ee=0;S=c[o+(n*20|0)+4>>2]|0;c[Wc>>2]=he;c[fa>>2]=S;c[ga>>2]=fe;r=c[o+(n*20|0)+16>>2]|0;c[ge>>2]=c[(c[Td>>2]|0)+(S<<4)>>2];c[ge+4>>2]=(S|0)==1?13184:13208;c[ge+8>>2]=r;r=qh(he,42048,ge)|0;if(!r){p=n;q=t;ee=882;break c}a[ha>>0]=1;c[ia>>2]=0;p=Me(he,r,22,Wc,0)|0;p=(p|0)==0?c[ia>>2]|0:p;ig(he,r);a[ha>>0]=0;if(!p){Q=v;w=o;R=T;S=U;r=G}else{o=p;p=n;q=t;ee=884;break c}break}case 886:{ee=0;gg(he,Ek((c[(c[Td>>2]|0)+(c[o+(n*20|0)+4>>2]<<4)+12>>2]|0)+8|0,c[o+(n*20|0)+16>>2]|0,0)|0);c[Qb>>2]=c[Qb>>2]|2;Q=v;w=o;R=T;S=U;break}case 887:{ee=0;z=Ek((c[(c[Td>>2]|0)+(c[o+(n*20|0)+4>>2]<<4)+12>>2]|0)+24|0,c[o+(n*20|0)+16>>2]|0,0)|0;if(z){p=(c[z+12>>2]|0)+8|0;r=c[p>>2]|0;z:do if((r|0)==(z|0))c[p>>2]=c[z+20>>2];else{do{if(!r)break z;p=r+20|0;r=c[p>>2]|0}while((r|0)!=(z|0));c[p>>2]=c[z+20>>2]}while(0);Fk(he,z)}c[Qb>>2]=c[Qb>>2]|2;Q=v;w=o;R=T;S=U;r=G;break}case 895:{ee=0;z=Ek((c[(c[Td>>2]|0)+(c[o+(n*20|0)+4>>2]<<4)+12>>2]|0)+40|0,c[o+(n*20|0)+16>>2]|0,0)|0;if(!z){Q=v;w=o;R=T;S=U}else{p=c[z+20>>2]|0;if((p|0)==(c[z+24>>2]|0)){p=Zm(p+8|0,c[z+4>>2]|0,ge)|0;if(!p)p=0;else p=c[p+8>>2]|0;s=p+64|0;while(1){S=c[s>>2]|0;p=S+32|0;if((S|0)==(z|0))break;else s=p}c[s>>2]=c[p>>2]}fg(he,z);c[Qb>>2]=c[Qb>>2]|2;Q=v;w=o;R=T;S=U}break}case 903:{ee=0;K=c[o+(p*20|0)+8>>2]|0;n=ih(he,(K<<2)+4|0,0)|0;if(!n){u=ce;v=fe;n=m;m=t;ee=1317;break a}x=c[o+(p*20|0)+12>>2]|0;I=c[o+(p*20|0)+4>>2]|0;H=v+(I*40|0)|0;if((K|0)>0){z=0;do{S=Rg(v+((z+I|0)*40|0)|0)|0;c[n+(z<<2)>>2]=S;z=z+1|0}while((z|0)!=(K|0));z=K}else z=0;c[n+(z<<2)>>2]=0;F=c[(c[Td>>2]|0)+(d[o+(p*20|0)+3>>0]<<4)+4>>2]|0;P=v+(x*40|0)|0;S=c[P>>2]|0;O=c[F+4>>2]|0;c[O+4>>2]=c[F>>2];F=c[O>>2]|0;s=c[(c[F+204>>2]|0)+12>>2]|0;c[Pd>>2]=O;c[ja>>2]=F;F=c[O+44>>2]|0;c[ka>>2]=F;c[la>>2]=S;c[ma+0>>2]=0;c[ma+4>>2]=0;c[ma+8>>2]=0;c[ma+12>>2]=0;c[ma+16>>2]=0;do if(!F){x=0;z=0}else{G=(F>>>3)+1|0;E=mg(G,0)|0;if(!E){c[pa>>2]=0;x=0;z=1;break}bw(E|0,0,G|0)|0;c[pa>>2]=E;L=O+32|0;G=(((c[2514]|0)>>>0)/((c[L>>2]|0)>>>0)|0)+1|0;if(G>>>0<=F>>>0){S=E+(G>>>3)|0;a[S>>0]=d[S>>0]|1<<(G&7)}c[ra>>2]=Kd;c[sa>>2]=Kd;c[qa>>2]=0;c[ta>>2]=0;c[ua>>2]=100;c[va>>2]=1e9;a[xa>>0]=0;a[wa>>0]=2;c[oa>>2]=43592;z=c[(c[O+12>>2]|0)+56>>2]|0;_m(Pd,1,d[z+33>>0]<<16|d[z+32>>0]<<24|d[z+34>>0]<<8|d[z+35>>0],d[z+37>>0]<<16|d[z+36>>0]<<24|d[z+38>>0]<<8|d[z+39>>0]);c[oa>>2]=0;z=c[la>>2]|0;if(!((K|0)<1|(z|0)==0)){D=O+17|0;E=0;do{F=n+(E<<2)|0;G=c[F>>2]|0;if(G){if((a[D>>0]|0)!=0&(G|0)>1){$m(Pd,G,1,0);G=c[F>>2]|0}c[oa>>2]=43608;an(Pd,G,0,0)|0;c[oa>>2]=0;z=c[la>>2]|0}E=E+1|0}while(!((E|0)>=(K|0)|(z|0)==0))}if(!((c[ka>>2]|0)==0|(z|0)==0)){B=O+17|0;z=O+36|0;J=1;do{E=J>>>3;G=a[(c[pa>>2]|0)+E>>0]|0;D=1<<(J&7);do if(!(G&255&D)){if(J>>>0<2)F=0;else{F=J+-2|0;F=F-((F>>>0)%(((((c[z>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;F=((F+1|0)==(((c[2514]|0)>>>0)/((c[L>>2]|0)>>>0)|0|0)?3:2)+F|0}if((F|0)==(J|0)?(a[B>>0]|0)!=0:0)break;c[ge>>2]=J;bn(Pd,43632,ge);G=a[(c[pa>>2]|0)+E>>0]|0}while(0);do if(G&255&D){if(J>>>0<2)G=0;else{G=J+-2|0;G=G-((G>>>0)%(((((c[z>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;G=((G+1|0)==(((c[2514]|0)>>>0)/((c[L>>2]|0)>>>0)|0|0)?3:2)+G|0}if((G|0)!=(J|0))break;if(!(a[B>>0]|0))break;c[ge>>2]=J;bn(Pd,43656,ge)}while(0);J=J+1|0}while(!((c[la>>2]|0)==0?1:J>>>0>(c[ka>>2]|0)>>>0))}z=c[(c[(c[O>>2]|0)+204>>2]|0)+12>>2]|0;if((s|0)!=(z|0)){c[ge>>2]=s;c[ge+4>>2]=z;bn(Pd,43696,ge)}Sc(c[pa>>2]|0);if(c[na>>2]|0){cn(qa);x=0;z=(c[ma>>2]|0)+1|0;break}z=c[ma>>2]|0;if(!z)cn(qa);x=pg(qa)|0}while(0);ig(he,n);S=P;S=$v(c[S>>2]|0,c[S+4>>2]|0,z|0,((z|0)<0)<<31>>31|0)|0;w=P;c[w>>2]=S;c[w+4>>2]=C;w=v+(I*40|0)+8|0;if(!(b[w>>1]&9312))b[w>>1]=1;else rg(H);if(z){if(!x){u=ce;v=fe;n=m;m=t;ee=1317;break a}Tg(H,x,-1,1,1)|0}Ul(H,ub)|0;Q=v;w=o;R=T;S=U;n=p;break}case 947:{ee=0;s=c[o+(p*20|0)+4>>2]|0;n=v+(s*40|0)|0;r=c[o+(p*20|0)+8>>2]|0;s=v+(s*40|0)+8|0;if((b[s>>1]&32)==0?(dn(n),(b[s>>1]&32)==0):0){u=ce;v=fe;n=m;m=t;ee=1317;break a}Q=v+(r*40|0)|0;en(c[n>>2]|0,c[Q>>2]|0,c[Q+4>>2]|0);Q=v;w=o;R=T;S=U;r=G;n=p;break}case 966:{ee=0;w=c[o+(p*20|0)+4>>2]|0;P=v+(w*40|0)|0;O=v+((c[o+(p*20|0)+12>>2]|0)*40|0)|0;L=c[o+(p*20|0)+16>>2]|0;w=v+(w*40|0)+8|0;if((b[w>>1]&32)==0?(dn(P),(b[w>>1]&32)==0):0){u=ce;v=fe;n=m;m=t;ee=1317;break a}if(L){J=c[P>>2]|0;H=O;K=c[H>>2]|0;H=c[H+4>>2]|0;s=J+28|0;if((c[s>>2]|0)!=(L|0)){n=J+8|0;G=c[n>>2]|0;if(G){F=J+20|0;I=J+26|0;if(!(b[I>>1]&1))G=fn(G)|0;E=c[F>>2]|0;A:do if(!E){id=G;od=F;ee=978}else{while(1){F=E+12|0;D=c[F>>2]|0;if(!D)break;B=E+8|0;gn(D,ge,Pd);c[F>>2]=0;G=hn(c[ge>>2]|0,G)|0;E=c[B>>2]|0;if(!E){id=G;od=B;ee=978;break A}}c[F>>2]=jn(G)|0}while(0);if((ee|0)==978?(ee=0,Hc=kn(J)|0,c[od>>2]=Hc,(Hc|0)!=0):0){S=Hc;c[S>>2]=0;c[S+4>>2]=0;c[Hc+8>>2]=0;c[Hc+12>>2]=jn(id)|0}c[n>>2]=0;c[J+12>>2]=0;b[I>>1]=e[I>>1]|1}c[s>>2]=L}z=c[J+20>>2]|0;B:do if(z){C:while(1){x=c[z+12>>2]|0;if(x)do{w=x;B=c[w>>2]|0;w=c[w+4>>2]|0;if((w|0)<(H|0)|(w|0)==(H|0)&B>>>0>>0)x=x+8|0;else{if(!((w|0)>(H|0)|(w|0)==(H|0)&B>>>0>K>>>0))break C;x=x+12|0}x=c[x>>2]|0}while((x|0)!=0);z=c[z+8>>2]|0;if(!z)break B}Q=v;w=o;R=T;S=U;n=(c[o+(p*20|0)+8>>2]|0)+-1|0;break q}while(0);if((L|0)>-1)z=O;else{Q=v;w=o;R=T;S=U;n=p;break}}else z=O;Q=z;en(c[P>>2]|0,c[Q>>2]|0,c[Q+4>>2]|0);Q=v;w=o;R=T;S=U;n=p;break}case 993:{ee=0;s=c[o+(n*20|0)+16>>2]|0;F=c[o+(n*20|0)+12>>2]|0;J=v+(F*40|0)|0;if((a[o+(n*20|0)+3>>0]|0)!=0?(Ic=c[s+20>>2]|0,kd=c[pb>>2]|0,(kd|0)!=0):0){w=kd;while(1){if((c[w+28>>2]|0)==(Ic|0)){Q=v;w=o;R=T;S=U;break q}w=c[w+4>>2]|0;if(!w){p=n;break}}}else p=n;n=c[qb>>2]|0;if((n|0)>=(c[ya>>2]|0)){q=t;ee=998;break c}B=v+(F*40|0)+8|0;if(!(b[B>>1]&64)){z=s+12|0;x=c[z>>2]|0;w=x+(c[s+8>>2]|0)|0;o=s+16|0;x=(x<<2)+80+(c[o>>2]|0)+(w*40|0)|0;G=ih(he,x,((x|0)<0)<<31>>31)|0;if(!G){u=ce;v=fe;n=m;m=t;ee=1317;break a}bw(G|0,0,x|0)|0;if(!((b[B>>1]&9312)==0?(c[v+(F*40|0)+24>>2]|0)==0:0))Mg(J);b[B>>1]=64;c[J>>2]=G;c[G>>2]=f;c[G+60>>2]=w;c[G+64>>2]=c[z>>2];c[G+44>>2]=p;c[G+16>>2]=c[Kc>>2];c[G+52>>2]=c[za>>2];c[G+24>>2]=c[Fb>>2];c[G+40>>2]=c[Aa>>2];c[G+8>>2]=c[wc>>2];c[G+48>>2]=c[Ba>>2];c[G+28>>2]=c[s+20>>2];c[G+20>>2]=c[Eb>>2];c[G+56>>2]=c[Ca>>2];v=G+80|0;n=v+(w*40|0)|0;if((v|0)!=(n|0))do{b[v+8>>1]=128;c[v+32>>2]=he;v=v+40|0}while((v|0)!=(n|0));n=c[qb>>2]|0;v=G}else{o=s+16|0;v=c[J>>2]|0}c[qb>>2]=n+1;c[v+4>>2]=c[pb>>2];Q=v+32|0;c[Q>>2]=m;c[Q+4>>2]=l;c[v+68>>2]=c[rb>>2];c[v+72>>2]=c[(c[f>>2]|0)+80>>2];c[rb>>2]=0;c[pb>>2]=v;Q=v+40|0;c[Kc>>2]=Q;R=c[v+60>>2]|0;c[za>>2]=R;S=c[v+64>>2]&65535;c[Aa>>2]=S;R=Q+((R+1|0)*40|0)|0;c[Fb>>2]=R;w=c[s>>2]|0;c[wc>>2]=w;c[Ba>>2]=c[s+4>>2];S=R+(S<<2)|0;c[Eb>>2]=S;R=c[o>>2]|0;c[Ca>>2]=R;bw(S|0,0,R|0)|0;R=T;S=U;n=-1;break}case 1009:{ee=0;Q=c[pb>>2]|0;Vl(r,(c[Q+16>>2]|0)+(((c[(c[Q+8>>2]|0)+((c[Q+44>>2]|0)*20|0)+4>>2]|0)+(c[o+(n*20|0)+4>>2]|0)|0)*40|0)|0,4096);Q=v;w=o;R=T;S=U;break}case 1010:{ee=0;if(c[Qb>>2]&16777216){w=c[o+(n*20|0)+8>>2]|0;Q=Ob;w=fw(c[Q>>2]|0,c[Q+4>>2]|0,w|0,((w|0)<0)<<31>>31|0)|0;Q=Ob;c[Q>>2]=w;c[Q+4>>2]=C;Q=v;w=o;R=T;S=U;r=G;break}p=c[o+(n*20|0)+8>>2]|0;r=((p|0)<0)<<31>>31;if(!(c[o+(n*20|0)+4>>2]|0)){w=Wd;w=fw(c[w>>2]|0,c[w+4>>2]|0,p|0,r|0)|0;Q=Wd;c[Q>>2]=w;c[Q+4>>2]=C;Q=v;w=o;R=T;S=U;r=G;break}else{w=Nb;w=fw(c[w>>2]|0,c[w+4>>2]|0,p|0,r|0)|0;Q=Nb;c[Q>>2]=w;c[Q+4>>2]=C;Q=v;w=o;R=T;S=U;r=G;break}}case 1015:{ee=0;if(!(c[o+(n*20|0)+4>>2]|0)){S=Wd;if(!((c[S>>2]|0)==0&(c[S+4>>2]|0)==0)){Q=v;w=o;R=T;S=U;break}S=Ob;if(!((c[S>>2]|0)==0&(c[S+4>>2]|0)==0)){Q=v;w=o;R=T;S=U;break}Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0;break}else{S=Nb;if(!((c[S>>2]|0)==0&(c[S+4>>2]|0)==0)){Q=v;w=o;R=T;S=U;break}S=Ob;if(!((c[S>>2]|0)==0&(c[S+4>>2]|0)==0)){Q=v;w=o;R=T;S=U;break}Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0;break}}case 1022:{ee=0;p=c[pb>>2]|0;if(!p)s=v+((c[o+(n*20|0)+4>>2]|0)*40|0)|0;else{while(1){r=c[p+4>>2]|0;if(!r)break;else p=r}s=(c[p+16>>2]|0)+((c[o+(n*20|0)+4>>2]|0)*40|0)|0}R=Rg(s)|0;S=s;c[S>>2]=R;c[S+4>>2]=C;S=s+8|0;b[S>>1]=e[S>>1]&48640|4;S=c[o+(n*20|0)+8>>2]|0;R=v+(S*40|0)|0;p=Rg(R)|0;r=C;c[R>>2]=p;c[R+4>>2]=r;S=v+(S*40|0)+8|0;b[S>>1]=e[S>>1]&48640|4;S=s;R=c[S+4>>2]|0;if((R|0)<(r|0)|((R|0)==(r|0)?(c[S>>2]|0)>>>0

>>0:0)){Q=s;c[Q>>2]=p;c[Q+4>>2]=r;Q=v;w=o;R=T;S=U;r=J}else{Q=v;w=o;R=T;S=U;r=J}break}case 1028:{ee=0;S=v+((c[o+(n*20|0)+4>>2]|0)*40|0)|0;R=c[S+4>>2]|0;if((R|0)>0|(R|0)==0&(c[S>>2]|0)>>>0>0){Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}else{Q=v;w=o;R=T;S=U}break}case 1030:{ee=0;Q=c[o+(n*20|0)+12>>2]|0;R=v+((c[o+(n*20|0)+4>>2]|0)*40|0)|0;S=R;Q=fw(c[S>>2]|0,c[S+4>>2]|0,Q|0,((Q|0)<0)<<31>>31|0)|0;S=C;c[R>>2]=Q;c[R+4>>2]=S;if((S|0)<0){Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}else{Q=v;w=o;R=T;S=U}break}case 1032:{ee=0;p=v+((c[o+(n*20|0)+4>>2]|0)*40|0)|0;s=p;r=c[s>>2]|0;s=c[s+4>>2]|0;if((r|0)==0&(s|0)==0){Q=v;w=o;R=T;S=U;r=G}else{w=c[o+(n*20|0)+12>>2]|0;w=fw(w|0,((w|0)<0)<<31>>31|0,r|0,s|0)|0;Q=p;c[Q>>2]=w;c[Q+4>>2]=C;Q=v;w=o;R=T;S=U;r=G;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}break}case 1034:{ee=0;Q=v+((c[o+(n*20|0)+4>>2]|0)*40|0)|0;R=Q;R=fw(c[R>>2]|0,c[R+4>>2]|0,-1,-1)|0;S=C;c[Q>>2]=R;c[Q+4>>2]=S;if((R|0)==0&(S|0)==0){Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}else{Q=v;w=o;R=T;S=U}break}case 1036:{ee=0;Q=v+((c[o+(n*20|0)+4>>2]|0)*40|0)|0;S=Q;R=c[S>>2]|0;S=c[S+4>>2]|0;P=fw(R|0,S|0,1,0)|0;c[Q>>2]=P;c[Q+4>>2]=C;if((R|0)==0&(S|0)==0){Q=v;w=o;R=T;S=U;n=(c[o+(n*20|0)+8>>2]|0)+-1|0}else{Q=v;w=o;R=T;S=U}break}case 1157:{ee=0;Q=v;w=o;R=T;S=U;n=(c[o+(p*20|0)+8>>2]|0)+-1|0;break}case 1158:{ee=0;if(c[o+(n*20|0)+4>>2]|0){b[Ud>>1]=b[Ud>>1]|8;Q=v;w=o;R=T;S=U;break}p=c[Sb>>2]|0;if(!p){Q=v;w=o;R=T;S=U}else{do{S=p+88|0;b[S>>1]=b[S>>1]|8;p=c[p+52>>2]|0}while((p|0)!=0);Q=v;w=o;R=T;S=U}break}case 1166:{ee=0;G=(c[s>>2]|0)+72|0;p=c[G>>2]|0;D:do if(p){while(1){if((c[p+4>>2]|0)==(x|0)?(c[p>>2]|0)==(z|0):0)break;p=c[p+12>>2]|0;if(!p){ee=1171;break D}}if(!p)ee=1171}else ee=1171;while(0);if((ee|0)==1171){ee=0;p=mg(16,0)|0;if(!p){p=n;o=7;q=t;ee=1309;break c}S=p+0|0;D=S+12|0;do{a[S>>0]=0;S=S+1|0}while((S|0)<(D|0));c[p+4>>2]=x;c[p>>2]=z;c[p+12>>2]=c[G>>2];c[G>>2]=p}p=p+8|0;if((d[p>>0]|0)<(w&255)){a[p>>0]=w;Q=v;w=o;R=T;S=U}else{Q=v;w=o;R=T;S=U}break}case 1213:{ee=0;c[pd>>2]=0;w=c[(c[o+(n*20|0)+16>>2]|0)+8>>2]|0;if(!w){p=n;o=6;q=t;ee=1309;break c}s=c[w>>2]|0;if(!s){p=n;o=6;q=t;ee=1309;break c}z=nc[c[s+24>>2]&127](w,pd)|0;Im(f,w);if(z){p=n;o=z;q=t;ee=1309;break c}c[c[pd>>2]>>2]=w;p=tm(f,c[o+(n*20|0)+4>>2]|0,0,-1,0)|0;if(!p){a[ce>>0]=1;hc[c[s+28>>2]&127](c[pd>>2]|0)|0;Q=v;w=o;R=T;S=U;break}else{c[p+32>>2]=c[pd>>2];Q=w+4|0;c[Q>>2]=(c[Q>>2]|0)+1;Q=v;w=o;R=T;S=U;break}}case 1226:{ee=0;p=v+(z*40|0)+8|0;if(!(b[p>>1]&9312)){b[p>>1]=1;Q=v;w=o;R=T;S=U;break}else{rg(x);Q=v;w=o;R=T;S=U;break}}case 1257:{ee=0;Q=r;c[Q>>2]=c[(c[(c[(c[Td>>2]|0)+(c[o+(n*20|0)+4>>2]<<4)+4>>2]|0)+4>>2]|0)+44>>2];c[Q+4>>2]=0;Q=v;w=o;R=T;S=U;break}case 1258:{ee=0;w=c[(c[Td>>2]|0)+(c[o+(n*20|0)+4>>2]<<4)+4>>2]|0;p=c[o+(n*20|0)+12>>2]|0;r=c[w+4>>2]|0;if(!p)p=0;else{S=c[r+44>>2]|0;p=S>>>0

>>0?p:S}c[r+4>>2]=c[w>>2];r=(c[r>>2]|0)+156|0;if((p|0)>0)c[r>>2]=p;else p=c[r>>2]|0;Q=G;c[Q>>2]=p;c[Q+4>>2]=((p|0)<0)<<31>>31;Q=v;w=o;R=T;S=U;r=G;break}case 1264:{ee=0;n=c[o+(p*20|0)+8>>2]|0;n=(n|0)==0?p:n+-1|0;if((c[Pa>>2]|0)!=0?(b[Ud>>1]&512)==0:0){p=c[o+(p*20|0)+16>>2]|0;if(!p){p=c[_d>>2]|0;if(!p){Q=v;w=o;R=T;S=U;r=J;break}}c[Pd>>2]=0;r=c[f>>2]|0;z=c[r+88>>2]|0;c[cb>>2]=Kd;c[db>>2]=Kd;c[eb>>2]=0;c[fb>>2]=100;c[gb>>2]=z;a[hb>>0]=1;a[ib>>0]=0;c[nd>>2]=r;z=a[p>>0]|0;w=z<<24>>24==0;E:do if((c[r+160>>2]|0)>1){if(!w){w=z;while(1){r=p;do{r=r+1|0;if(w<<24>>24==10)break;w=a[r>>0]|0}while(w<<24>>24!=0);Ok(nd,42288,3);Ok(nd,p,r-p|0);w=a[r>>0]|0;if(!(w<<24>>24))break;else p=r}}}else if(!w){s=r+62|0;w=z;K=1;do{F:do if(!(w<<24>>24)){x=0;w=0}else{z=p;w=0;while(1){x=yn(z,ge)|0;if((c[ge>>2]|0)==135)break F;w=x+w|0;z=z+x|0;if(!(a[z>>0]|0)){x=0;break}}}while(0);Ok(nd,p,w);z=p+w|0;if(!x)break E;do if((a[z>>0]|0)==63)if((x|0)>1){zn(p+(w+1)|0,Pd)|0;z=c[Pd>>2]|0;break}else{c[Pd>>2]=K;z=K;break}else{z=mh(f,z,x)|0;c[Pd>>2]=z}while(0);p=p+(w+x)|0;K=z+1|0;G=z+-1|0;F=c[xb>>2]|0;z=F+(G*40|0)|0;x=e[F+(G*40|0)+8>>1]|0;do if(!(x&1)){if(x&4){Q=z;R=c[Q+4>>2]|0;S=ge;c[S>>2]=c[Q>>2];c[S+4>>2]=R;An(nd,0,19920,ge);break}if(x&8){h[k>>3]=+h[z>>3];c[ge>>2]=c[k>>2];c[ge+4>>2]=c[k+4>>2];An(nd,0,20272,ge);break}if(!(x&2)){if(x&16384){c[ge>>2]=c[z>>2];An(nd,0,42304,ge);break}Ok(nd,42320,2);B=c[F+(G*40|0)+12>>2]|0;if((B|0)>0){z=F+(G*40|0)+16|0;x=0;do{c[ge>>2]=d[(c[z>>2]|0)+x>>0];An(nd,0,42328,ge);x=x+1|0}while((x|0)!=(B|0))}Ok(nd,42336,1);break}else{B=a[s>>0]|0;if(B<<24>>24==1){S=c[F+(G*40|0)+16>>2]|0;c[ge>>2]=c[F+(G*40|0)+12>>2];c[ge+4>>2]=S;An(nd,0,42296,ge);break}S=Ld+0|0;D=S+40|0;do{c[S>>2]=0;S=S+4|0}while((S|0)<(D|0));c[kb>>2]=r;Tg(Ld,c[F+(G*40|0)+16>>2]|0,c[F+(G*40|0)+12>>2]|0,B,0)|0;S=c[lb>>2]|0;if(!((S&2|0)==0|(S&16711680|0)==65536))xn(Ld,1)|0;S=c[nb>>2]|0;c[ge>>2]=c[mb>>2];c[ge+4>>2]=S;An(nd,0,42296,ge);if((b[lb>>1]&9312)==0&(c[ob>>2]|0)==0)break;Mg(Ld);break}}else Ok(nd,20304,4);while(0);w=a[p>>0]|0}while(w<<24>>24!=0)}while(0);Q=pg(nd)|0;fc[c[Pa>>2]&15](c[jb>>2]|0,Q);ig(he,Q);Q=v;w=o;R=T;S=U;r=J}else{Q=v;w=o;R=T;S=U;r=J}break}}if((ee|0)==28){ee=0;v=o+(n*20|0)+4|0;p=c[v>>2]|0;if(p){u=v;ee=34;break}v=c[pb>>2]|0;if(!v){ee=30;break}c[pb>>2]=c[v+4>>2];c[qb>>2]=(c[qb>>2]|0)+-1;l=c[rb>>2]|0;c[sb>>2]=l;c[tb>>2]=(c[tb>>2]|0)+l;v=Tl(v)|0;l=je;w=c[wc>>2]|0;if((c[o+(n*20|0)+8>>2]|0)==4)n=(c[w+(v*20|0)+8>>2]|0)+-1|0;else n=v;m=c[l>>2]|0;l=c[l+4>>2]|0;Q=c[Kc>>2]|0;R=T;S=U}else if((ee|0)==488){ee=0;w=om(he,z,x)|0;if(!w){Q=v;w=o;R=T;S=U}else{p=n;q=w;ee=1318;break}}v=Q;o=w;T=R;U=S;p=n+1|0}switch(ee|0){case 30:{c[ie>>2]=p;a[be>>0]=c[o+(n*20|0)+8>>2];c[de>>2]=n;ee=41;break}case 34:{c[ie>>2]=p;a[be>>0]=c[o+(n*20|0)+8>>2];c[de>>2]=n;p=a[o+(n*20|0)+3>>0]|0;if(!(p<<24>>24)){o=c[o+(n*20|0)+16>>2]|0;if(!o){o=0;ee=39}else{c[ge>>2]=o;$g(fe,he,10344,ge)}}else{q=c[41536+((p&255)+-1<<2)>>2]|0;p=c[o+(n*20|0)+16>>2]|0;if(!p){o=q;ee=39}else{c[ge>>2]=q;c[ge+4>>2]=p;$g(fe,he,41624,ge)}}if((ee|0)==39){c[ge>>2]=o;$g(fe,he,41656,ge)}ee=c[u>>2]|0;md=c[_d>>2]|0;nd=c[fe>>2]|0;c[ge>>2]=n;c[ge+4>>2]=md;c[ge+8>>2]=nd;Zc(ee,41600,ge);ee=41;break}case 80:{t=c[Zd>>2]|0;if(!((t|0)==0|g>>>0>>0)?(hc[t&127](c[Vd>>2]|0)|0)!=0:0){n=m;o=9;m=q;ee=1311;break a}nd=Wd;md=c[nd+4>>2]|0;if((md|0)>0|(md|0)==0&(c[nd>>2]|0)>>>0>0){o=c[f>>2]|0;c[ie>>2]=787;a[be>>0]=2;$g(fe,o,34376,ge);o=1;ee=1309;break}t=Xl(f,1)|0;if(!t){c[Xd>>2]=(c[Xd>>2]|0)+2|1;u=c[o+(p*20|0)+4>>2]|0;c[$d>>2]=v+(u*40|0);n=o+(p*20|0)+8|0;if((c[n>>2]|0)>0){t=0;do{r=t+u|0;s=v+(r*40|0)|0;r=v+(r*40|0)+8|0;o=b[r>>1]|0;if(o&4096){if(Rl(s)|0){u=ce;v=fe;n=m;m=q;ee=1317;break a}o=b[r>>1]|0}if((o&514)==2)Yl(s)|0;t=t+1|0}while((t|0)<(c[n>>2]|0))}if(a[ce>>0]|0){u=ce;v=fe;n=m;m=q;ee=1317;break a}c[de>>2]=p+1;n=m;m=g;g=100;break a}else{o=t;ee=1309}break}case 313:{c[ge>>2]=73058;c[ge+4>>2]=10788;Zc(11,13600,ge);o=11;ee=1309;break}case 343:{c[ge>>2]=73142;c[ge+4>>2]=10788;Zc(11,13600,ge);o=11;ee=1309;break}case 447:{$g(fe,he,41712,ge);p=n;o=5;ee=1309;break}case 460:{c[ge>>2]=o;$g(fe,he,41768,ge);o=1;ee=1309;break}case 462:{$g(fe,he,41792,ge);o=5;ee=1309;break}case 467:{c[de>>2]=g;a[ae>>0]=0;c[ie>>2]=5;g=5;break a}case 489:{r=c[o+(p*20|0)+4>>2]|0;o=c[o+(p*20|0)+8>>2]|0;g=(r|0)!=0;if(g){o=(o|0)!=0;if(!(o|(a[ae>>0]|0)!=0))if((c[Yd>>2]|0)>0){$g(fe,he,41848,ge);g=m;m=n;o=5;ee=1309;break}else o=0}else o=(o|0)!=0;if((r|0)==(d[ae>>0]|0)){if(g)g=o?41952:42e3;else g=41904;$g(fe,he,g,ge);g=m;m=n;o=1;ee=1309;break}if(!o){g=pm(f,1)|0;if(g)break a;a[ae>>0]=r;if((Nl(f)|0)==5){c[de>>2]=p;a[ae>>0]=1-r;c[ie>>2]=5;g=5;break a}}else{Gl(he,516);a[ae>>0]=1}Hl(he);g=(c[ie>>2]|0)==0?101:1;break a}case 508:{c[de>>2]=g;c[ie>>2]=5;g=5;break a}case 522:{ig(he,c[fe>>2]|0);c[fe>>2]=gh(he,16040)|0;o=c[o>>2]|0;if((c[c[(c[Td>>2]|0)+(o<<4)+12>>2]>>2]|0)!=(r|0))rm(he,o);b[Ud>>1]=b[Ud>>1]|8;o=17;ee=1309;break}case 542:{c[ge>>2]=73997;c[ge+4>>2]=10788;Zc(11,13600,ge);q=11;t=o;ee=1318;break}case 560:{c[o+56>>2]=0;o=7;ee=1309;break}case 832:{a[be>>0]=2;o=6;ee=1309;break}case 882:{Ag(he);u=ce;v=fe;n=m;m=q;ee=1317;break a}case 884:{Ag(he);if((o|0)==7){u=ce;v=fe;n=m;m=q;ee=1317;break a}else ee=1309;break}case 998:{$g(fe,he,42112,ge);o=1;ee=1309;break}case 1080:{c[ge>>2]=o?42208:42216;$g(fe,he,42152,ge);o=1;ee=1309;break}case 1101:{$g(fe,he,42344,ge);o=1;ee=1309;break}case 1103:{$g(fe,he,42384,ge);o=1;ee=1309;break}case 1145:{c[ge>>2]=56343;c[ge+4>>2]=10788;Zc(11,13600,ge);o=11;ee=1309;break}case 1316:{$g(fe,he,10096,ge);n=m;o=18;m=q;ee=1311;break a}}if((ee|0)==41)if((Nl(f)|0)==5){c[ie>>2]=5;n=m;m=g;g=5;break a}else{n=m;m=g;g=(c[ie>>2]|0)!=0?1:101;break a}else if((ee|0)==1309){n=m;p=p+1|0;m=q;ee=1311;break a}else if((ee|0)==1318){q=(a[ce>>0]|0)==0?q:7;if((q|0)==3082){n=m;o=3082;m=t;ee=1311;break a}else if((q|0)!=516){n=q&255;if(n>>>0>26|(n|0)==2)o=16328;else o=c[15488+(n<<2)>>2]|0}else o=16344;c[ge>>2]=o;$g(fe,he,10344,ge);n=m;o=q;m=t;ee=1311;break a}}else{q=f+44|0;n=m;g=0;p=0;m=0}while(0);c[ie>>2]=9;c[ge>>2]=15832;$g(q,he,10344,ge);o=9;ee=1311}while(0);if((ee|0)==1317){a[u>>0]=1;$g(v,he,15776,ge);o=7;ee=1311}if((ee|0)==1311){c[ie>>2]=o;md=c[f+168>>2]|0;nd=c[f+44>>2]|0;c[ge>>2]=p;c[ge+4>>2]=md;c[ge+8>>2]=nd;Zc(o,42256,ge);Nl(f)|0;if((o|0)==3082)a[he+65>>0]=1;if(!(m<<24>>24)){m=g;g=1}else{rm(he,(m&255)+-1|0);m=g;g=1}}nd=je;c[nd>>2]=n;c[nd+4>>2]=l;nd=f+124|0;c[nd>>2]=(c[nd>>2]|0)+m;i=ke;return g|0} -function Av(e){e=e|0;var 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,A=0;A=e+20|0;r=e+14|0;f=a[r>>0]|0;w=e+13|0;g=a[w>>0]|0;a:do if((f&255)>(g&255))f=0;else{y=e+4|0;z=e+16|0;s=e+8|0;t=e+12|0;u=e+24|0;v=e+28|0;i=f&255;j=c[y>>2]|0;h=c[A>>2]|0;b:while(1){q=c[e+(i+-2<<2)+24>>2]|0;p=c[e+(i+-1<<2)+24>>2]|0;if(j){while(1){o=j+12|0;if((h|0)<(c[o>>2]|0)){g=h;f=(c[j+20>>2]|0)+(h*48|0)|0;while(1){do if((c[f+8>>2]|0)==(q|0)?(c[f+12>>2]|0)==(p|0):0){if((d[r>>0]|0)>=3?(c[(c[f>>2]|0)+4>>2]&1|0)!=0:0)break;n=f+18|0;h=b[n>>1]|0;if((h&1024)!=0?(x=a[w>>0]|0,(x&255)<22):0){i=c[(c[f>>2]|0)+16>>2]|0;c:do if(!i)i=0;else while(1){k=c[i+4>>2]|0;if(!(k&4096))break c;if(!(k&262144))i=i+12|0;else i=c[(c[i+20>>2]|0)+4>>2]|0;i=c[i>>2]|0;if(!i){i=0;break}}while(0);d:do if(!(x<<24>>24)){m=0;k=0}else{l=c[i+28>>2]|0;m=i+32|0;k=0;while(1){if((c[e+(k<<2)+24>>2]|0)==(l|0)?(c[e+((k|1)<<2)+24>>2]|0)==(b[m>>1]|0):0){m=x;break d}k=k+2|0;if((k|0)>=(x&255|0)){m=x;break}}}while(0);if((k|0)==(m&255|0)){c[e+(k<<2)+24>>2]=c[i+28>>2];c[e+((k|1)<<2)+24>>2]=b[i+32>>1];a[w>>0]=(d[w>>0]|0)+2}}i=h&65535;if(i&c[z>>2]){if((c[s>>2]|0)!=0&(i&128|0)==0){l=c[c[j>>2]>>2]|0;k=c[f>>2]|0;i=a[t>>0]|0;h=(jv(k)|0)<<24>>24;if((h|0)==66){if(i<<24>>24!=66)break}else if((h|0)!=65?i<<24>>24<=66:0)break;h=Ku(l,c[k+12>>2]|0,c[k+16>>2]|0)|0;if(!h)h=c[(c[l>>2]|0)+8>>2]|0;if($c(c[h>>2]|0,c[s>>2]|0)|0)break;h=b[n>>1]|0}if(!(h&2))break b;h=c[(c[f>>2]|0)+16>>2]|0;if((a[h>>0]|0)!=-102)break b;if((c[h+28>>2]|0)!=(c[u>>2]|0))break b;if((b[h+32>>1]|0)!=(c[v>>2]|0))break b}}while(0);g=g+1|0;if((g|0)>=(c[o>>2]|0))break;else f=f+48|0}g=c[y>>2]|0}else g=j;j=c[g+4>>2]|0;c[y>>2]=j;if(!j)break;else h=0}f=a[r>>0]|0;g=a[w>>0]|0}j=c[e>>2]|0;c[y>>2]=j;h=(f&255)+2|0;f=h&255;a[r>>0]=f;if((f&255)>(g&255)){f=0;break a}else{i=h&255;h=0}}c[A>>2]=g+1}while(0);return f|0}function Bv(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[d>>2]|0;l=c[c[g>>2]>>2]|0;d=c[d+16>>2]|0;a:do if(!d){g=g+16|0;i=c[g>>2]|0;k=f+36|0;if((c[k>>2]&512|0)!=0&(i|0)!=0){d=f+20|0;j=f+22|0;h=a[f+16>>0]|0;do{do if((a[i+16>>0]|0)==h<<24>>24?(c[i+36>>2]&512|0)!=0:0){if(Pv(i,f)|0){b[d>>1]=b[i+20>>1]|0;b[j>>1]=(e[i+22>>1]|0)+65535;break}if(Pv(f,i)|0){b[d>>1]=b[i+20>>1]|0;b[j>>1]=(e[i+22>>1]|0)+1}}while(0);i=c[i+52>>2]|0}while((i|0)!=0)}d=Qv(g,f)|0;if(d){g=c[d>>2]|0;b:do if(g){d=g+52|0;if(c[d>>2]|0)do{d=Qv(d,f)|0;if(!d)break b;h=c[d>>2]|0;if(!h)break b;c[d>>2]=c[h+52>>2];Fu(l,h);ig(l,h)}while((c[d>>2]|0)!=0)}else{g=ih(l,72,0)|0;c[d>>2]=g;if(!g){d=7;break a}c[g+48>>2]=g+56;b[g+40>>1]=0;b[g+44>>1]=3;c[g+36>>2]=0;c[g+52>>2]=0}while(0);Hv(l,g);do if(!(Ju(l,g,e[f+40>>1]|0)|0)){h=g+0|0;d=f+0|0;i=h+44|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(i|0));gw(c[g+48>>2]|0,c[f+48>>2]|0,e[g+40>>1]<<2|0)|0;d=c[k>>2]|0;if(d&1024){a[f+28>>0]=0;break}if(d&16384)c[f+28>>2]=0}else{d=g+24|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0}while(0);if(((c[g+36>>2]&1024|0)==0?(m=g+28|0,n=c[m>>2]|0,(n|0)!=0):0)?(c[n+40>>2]|0)==0:0){c[m>>2]=0;d=0}else d=0}else d=0}else{g=f;Gv(d,c[g>>2]|0,c[g+4>>2]|0,b[f+20>>1]|0,b[f+22>>1]|0);d=0}while(0);return d|0}function Cv(a,b){a=a|0;b=b|0;var c=0,e=0;c=a<<16>>16;e=b<<16>>16;do if(a<<16>>16>16)if((e|0)<=(c+49|0))if((e|0)>(c+31|0)){a=e+1&65535;break}else{a=(d[34032+(e-c)>>0]|0)+e&65535;break}else a=b;else if((c|0)<=(e+49|0))if((c|0)>(e+31|0)){a=c+1&65535;break}else{a=(d[34032+(c-e)>>0]|0)+c&65535;break}while(0);return a|0}function Dv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;do if(!(yu(b,d,e)|0))f=1;else{f=a[d>>0]|0;if(f<<24>>24==77)g=6;else if(f<<24>>24==71){if(Dv(b,c[d+12>>2]|0,e)|0){f=1;break}if(Dv(b,c[d+16>>2]|0,e)|0){f=1;break}if(f<<24>>24==77)g=6}if(((g|0)==6?(yu(c[b+12>>2]|0,c[d+12>>2]|0,e)|0)==0:0)?(f=a[b>>0]|0,!(f<<24>>24==73|f<<24>>24==76)):0){f=1;break}f=0}while(0);return f|0}function Ev(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=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;v=i;i=i+16|0;if((i|0)>=(j|0))ba();u=v;s=d;t=d+8|0;g=t;r=~(c[g>>2]|c[s>>2]);s=~(c[g+4>>2]|c[s+4>>2]);g=c[a+12>>2]|0;p=a+20|0;a:do if((g|0)>0){q=d+40|0;a=d+22|0;o=d+48|0;d=0;n=c[p>>2]|0;while(1){if(b[n+20>>1]&2)break a;m=n+40|0;l=c[m>>2]|0;m=c[m+4>>2]|0;k=t;b:do if(((c[k>>2]&l|0)!=0?1:(c[k+4>>2]&m|0)!=0)&((l&r|0)==0&(m&s|0)==0)){h=b[q>>1]|0;c:do if(h<<16>>16){m=c[o>>2]|0;l=h&65535;while(1){h=l;l=l+-1|0;k=c[m+(l<<2)>>2]|0;if(k){if((k|0)==(n|0))break;k=c[k+4>>2]|0;if((k|0)>-1?((c[p>>2]|0)+(k*48|0)|0)==(n|0):0)break}if((l|0)<=0)break c}if((h|0)>=1)break b}while(0);h=b[n+16>>1]|0;if(h<<16>>16<1){b[a>>1]=(e[a>>1]|0)+(h&65535);break}b[a>>1]=(b[a>>1]|0)+-1<<16>>16;if(b[n+18>>1]&2){l=(Is(c[(c[n>>2]|0)+16>>2]|0,u)|0)!=0;m=c[u>>2]|0;m=l&(m|0)>-2&(m|0)<2?10:20;c[u>>2]=m;d=(d<<16>>16|0)<(m|0)?m&65535:d}}while(0);g=g+-1|0;if((g|0)<=0)break;else n=n+48|0}}else{a=d+22|0;d=0}while(0);d=(f<<16>>16)-(d<<16>>16)|0;if((b[a>>1]|0)>(d|0))b[a>>1]=d;i=v;return}function Fv(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var 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,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,ca=0,da=0,ea=0;ea=i;i=i+112|0;if((i|0)>=(j|0))ba();O=ea;S=c[c[c[d>>2]>>2]>>2]|0;ca=c[d+12>>2]|0;if(!(a[S+65>>0]|0)){da=ca+36|0;if(!(c[da>>2]&32))if((c[g+40>>2]|0)<1)k=63;else k=(a[f+36>>0]&8)<<4^191;else k=24;T=g+51|0;$=ca+24|0;l=b[(c[g+4>>2]|0)+(e[$>>1]<<1)>>1]|0;K=l<<16>>16;L=d+4|0;k=zv(O,c[L>>2]|0,c[f+40>>2]|0,K,(a[T>>0]&4)==0?k:k&131,g)|0;U=b[$>>1]|0;V=ca+42|0;Q=b[V>>1]|0;W=ca+40|0;R=b[W>>1]|0;X=c[da>>2]|0;N=ca;M=c[N>>2]|0;N=c[N+4>>2]|0;Y=ca+22|0;Z=b[Y>>1]|0;b[ca+18>>1]=0;_=g+8|0;A=b[c[_>>2]>>1]|0;if(A<<16>>16<11)z=0;else{z=A<<16>>16;z=((bs(z,((z|0)<0)<<31>>31)|0)&65535)+65503&65535}a:do if(!k)k=0;else{B=l<<16>>16<0;C=f+16|0;D=ca+8|0;E=(R&65535)+1|0;F=ca+48|0;G=h<<16>>16==0;H=g+46|0;t=l<<16>>16>-1;u=g+50|0;v=g+44|0;w=ca+20|0;x=h<<16>>16;y=g+48|0;o=0;r=k;p=0;while(1){l=b[r+18>>1]|0;q=l&65535;if(l<<16>>16==128)if(!B?(a[(c[(c[C>>2]|0)+4>>2]|0)+(K*24|0)+20>>0]|0)==0:0)P=12;else{m=o;l=p;k=0}else P=12;if((P|0)==12){P=0;m=r+32|0;s=m;n=D;if(((c[n>>2]&c[s>>2]|0)==0?(c[n+4>>2]&c[s+4>>2]|0)==0:0)?(I=r+20|0,!((b[I>>1]&256)!=0&l<<16>>16==16)):0){c[da>>2]=X;b[$>>1]=U;b[W>>1]=R;if(Ju(S,ca,E)|0){k=0;break a}k=b[W>>1]|0;n=k+1<<16>>16;b[W>>1]=n;c[(c[F>>2]|0)+((k&65535)<<2)>>2]=r;k=m;l=D;m=(c[k+4>>2]|N)&~c[l+4>>2];s=ca;c[s>>2]=(c[k>>2]|M)&~c[l>>2];c[s+4>>2]=m;b:do if(!(q&1)){if(q&2){k=c[da>>2]|0;l=k|1;c[da>>2]=l;do if(!B){if(!G){s=0;break b}if((e[$>>1]|0)!=((e[H>>1]|0)+-1|0)){s=0;break b}if(!t)break;if(a[u>>0]|0)break;l=k|65537;c[da>>2]=l;s=0;break b}while(0);l=k|4097;c[da>>2]=l;s=0;break}if(q&128){l=c[da>>2]|8;c[da>>2]=l;s=0;break}k=c[da>>2]|0;if(!(q&36)){l=k|18;c[da>>2]=l;if(!(k&32)){s=0;o=0;p=r;break}s=0;o=c[(c[F>>2]|0)+((n&65535)+-2<<2)>>2]|0;p=r;break}l=k|34;c[da>>2]=l;if(!(b[I>>1]&256)){s=0;o=r;p=0}else{k=r+48|0;if(Ju(S,ca,(n&65535)+1|0)|0){k=0;break a}l=b[W>>1]|0;b[W>>1]=l+1<<16>>16;c[(c[F>>2]|0)+((l&65535)<<2)>>2]=k;l=c[da>>2]|16;c[da>>2]=l;s=0;o=r;p=k}}else{k=c[r>>2]|0;l=c[da>>2]|4;c[da>>2]=l;if(!(c[k+4>>2]&2048)){k=c[k+20>>2]|0;if((k|0)!=0?(J=c[k>>2]|0,(J|0)!=0):0)s=(bs(J,((J|0)<0)<<31>>31)|0)<<16>>16;else s=0}else s=46}while(0);do if(!(l&2)){k=(b[$>>1]|0)+1<<16>>16;b[$>>1]=k;k=k&65535;m=b[r+16>>1]|0;if(m<<16>>16<1&t){n=(m&65535)-s+(e[Y>>1]|0)&65535;b[Y>>1]=n;break}m=c[_>>2]|0;m=(e[Y>>1]|0)+((e[m+(k<<1)>>1]|0)-(e[m+(k+-1<<1)>>1]|0))|0;k=m&65535;b[Y>>1]=k;if(!(q&128))n=k;else{n=m+10&65535;b[Y>>1]=n}}else{k=b[Y>>1]|0;n=k<<16>>16;do if(o){m=b[o+16>>1]|0;if(m<<16>>16<1){k=(m&65535)+(k&65535)&65535;break}else{k=(k&65535)+65516&65535;break}}while(0);do if(p){m=b[p+16>>1]|0;if(m<<16>>16<1){k=(m&65535)+(k&65535)&65535;break}else{k=(k&65535)+65516&65535;break}}while(0);m=(o|0)!=0;do if(m?(b[o+16>>1]|0)>0&(p|0)!=0:0){if((b[p+16>>1]|0)<=0)break;k=(k&65535)+65516&65535}while(0);n=(((p|0)!=0)<<31>>31)+(m<<31>>31)+n|0;r=k<<16>>16<10?10:k<<16>>16;n=((r|0)<(n|0)?r:n)&65535;b[Y>>1]=n}while(0);k=n&65535;m=Cv(z,k+1+(((b[v>>1]|0)*15|0)/(b[(c[C>>2]|0)+42>>1]|0)|0)&65535)|0;if(!(l&320))m=Cv(m,k+16&65535)|0;l=s+x|0;b[w>>1]=(m&65535)+l;b[Y>>1]=k+l;Ev(c[L>>2]|0,ca,A);k=Bv(d,ca)|0;s=c[da>>2]|0;b[Y>>1]=(s&2|0)==0?n:Z;if((s&16|0)==0?(e[$>>1]|0)<(e[y>>1]|0):0)Fv(d,f,g,l&65535)|0;b[Y>>1]=Z;m=o;l=p}else{m=o;l=p;k=0}}r=Av(O)|0;if(!((k|0)==0&(r|0)!=0))break;else{o=m;p=l}}}while(0);l=ca;c[l>>2]=M;c[l+4>>2]=N;b[$>>1]=U;b[V>>1]=Q;c[da>>2]=X;b[Y>>1]=Z;b[W>>1]=R;l=U&65535;if(((U<<16>>16==Q<<16>>16?(aa=l+1|0,aa>>>0<(e[g+46>>1]|0)>>>0):0)?(a[T>>0]&64)==0:0)?(b[(c[_>>2]|0)+(aa<<1)>>1]|0)>41:0){k=Ju(S,ca,(R&65535)+1|0)|0;if(!k){b[$>>1]=(b[$>>1]|0)+1<<16>>16;b[V>>1]=(b[V>>1]|0)+1<<16>>16;k=b[W>>1]|0;b[W>>1]=k+1<<16>>16;c[(c[ca+48>>2]|0)+((k&65535)<<2)>>2]=0;c[da>>2]=c[da>>2]|32768;k=c[_>>2]|0;k=(e[k+(l<<1)>>1]|0)-(e[k+(aa<<1)>>1]|0)|0;b[Y>>1]=(e[Y>>1]|0)-k;Fv(d,f,g,(((k<<16)+327680|0)>>>16)+(h&65535)&65535)|0;b[Y>>1]=Z;b[$>>1]=U;b[V>>1]=U;c[da>>2]=X;k=0}}}else k=7;i=ea;return k|0}function Gv(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=b[a>>1]|0;h=a+8|0;a:do if(l<<16>>16){j=l;k=h;while(1){i=b[k+8>>1]|0;if(i<<16>>16>=f<<16>>16?(p=k,(c[p>>2]&d|0)==(d|0)?(c[p+4>>2]&e|0)==(e|0):0):0){n=k;o=14;break a}if(i<<16>>16<=f<<16>>16?(i=k,p=c[i>>2]|0,i=c[i+4>>2]|0,(p&d|0)==(p|0)&(i&e|0)==(i|0)):0)break a;j=j+-1<<16>>16;if(!(j<<16>>16))break;else k=k+16|0}if((l&65535)>=3){i=b[a+16>>1]|0;k=1;do{if(i<<16>>16>(b[a+(k<<4)+16>>1]|0))h=a+(k<<4)+8|0;k=k+1|0;i=b[h+8>>1]|0}while((k&65535)<(l&65535));if(i<<16>>16>f<<16>>16){n=h;o=14}}else o=9}else o=9;while(0);if((o|0)==9){n=l&65535;b[a>>1]=l+1<<16>>16;b[a+(n<<4)+18>>1]=g;n=a+(n<<4)+8|0;o=14}if((o|0)==14?(m=n,c[m>>2]=d,c[m+4>>2]=e,b[n+8>>1]=f,m=n+10|0,(b[m>>1]|0)>g<<16>>16):0)b[m>>1]=g;return}function Hv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[d+36>>2]|0;do if(e&17408){if((e&1024|0)!=0?(h=d+28|0,(a[h>>0]|0)!=0):0){e=d+32|0;Sc(c[e>>2]|0);a[h>>0]=0;c[e>>2]=0;break}if((e&16384|0)!=0?(f=d+28|0,g=c[f>>2]|0,(g|0)!=0):0){ig(b,c[g+16>>2]|0);ig(b,c[f>>2]|0);c[f>>2]=0}}while(0);return}function Iv(f,g,h,k,l,m,n){f=f|0;g=g|0;h=h|0;k=k|0;l=l|0;m=m|0;n=n|0;var 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,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,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;qa=i;i=i+32|0;if((i|0)>=(j|0))ba();la=qa;p=c[c[f>>2]>>2]|0;ka=l&65535;if(l<<16>>16!=0?(b[p+60>>1]&128)!=0:0)o=0;else ma=3;a:do if((ma|0)==3){pa=c[g>>2]|0;o=pa&65535;if(o>>>0<=63){na=ew(1,0,o|0)|0;na=fw(na|0,C|0,-1,-1)|0;oa=C;b:do if((na|0)==0&(oa|0)==0){g=0;h=0;p=1}else{ea=h+24|0;fa=f+4|0;ga=(o|0)==0;ca=g+4|0;da=(k&768)==0;aa=p+8|0;T=(k&256)==0;U=f+68|0;V=la+20|0;W=la+4|0;Z=la+24|0;_=f+328|0;X=0;Y=0;g=0;h=0;k=0;q=0;$=0;p=1;l=0;while(1){if(($|0)>0){R=l+8|0;S=c[R>>2]|k;q=c[R+4>>2]|q}else S=k;if(($|0)<(ka|0))l=c[(c[ea>>2]|0)+($<<2)>>2]|0;else l=m;y=l+36|0;k=c[y>>2]|0;if(k&1024)break;R=c[(c[fa>>2]|0)+((d[l+16>>0]|0)*72|0)+48>>2]|0;if(!ga){k=~S;s=~q;v=0;do{x=ew(1,0,v|0)|0;w=C;c:do if((x&g|0)==0&(w&h|0)==0){r=c[(c[ca>>2]|0)+(v*20|0)>>2]|0;u=c[r+4>>2]|0;if(u&4096)do{if(!(u&262144))r=r+12|0;else r=c[(c[r+20>>2]|0)+4>>2]|0;r=c[r>>2]|0;u=c[r+4>>2]|0}while((u&4096|0)!=0);if(((a[r>>0]|0)==-102?(c[r+28>>2]|0)==(R|0):0)?(ha=r+32|0,ia=Bu(_,R,b[ha>>1]|0,k,s,130,0)|0,(ia|0)!=0):0){do if(b[ia+18>>1]&2){if((b[ha>>1]|0)<=-1)break;r=_t(c[f>>2]|0,c[(c[ca>>2]|0)+(v*20|0)>>2]|0)|0;if(!r)r=c[aa>>2]|0;u=c[r>>2]|0;t=_t(c[f>>2]|0,c[ia>>2]|0)|0;if(!t)t=c[aa>>2]|0;if($c(u,c[t>>2]|0)|0)break c}while(0);g=x|g;h=w|h}}while(0);v=v+1|0}while((v|0)<(o|0));k=c[y>>2]|0}do if(!(k&4096)){if(!(k&256)){r=c[l+28>>2]|0;if(!r){o=0;break a}if(a[r+51>>0]&4){o=0;break a}k=b[r+48>>1]|0;p=(a[r+50>>0]|0)!=0&1;if(!(k<<16>>16)){ma=71;break}else{P=k&65535;Q=b[r+46>>1]|0}}else{P=1;Q=0;r=0}G=l+24|0;H=l+42|0;I=l+48|0;J=(r|0)==0;K=r+32|0;L=ew(1,0,$|0)|0;M=C;N=r+4|0;O=r+28|0;F=r+12|0;k=0;r=0;x=0;E=0;d:while(1){w=(r|0)<(e[G>>1]|0);if((w?(b[H>>1]|0)==0:0)?(ja=e[(c[(c[I>>2]|0)+(r<<2)>>2]|0)+18>>1]|0,(ja&130|0)!=0):0){p=(ja&128|0)==0?p:0;w=E}else{if(!J){u=b[(c[N>>2]|0)+(r<<1)>>1]|0;t=a[(c[O>>2]|0)+r>>0]|0;s=c[F>>2]|0;u=u<<16>>16==(b[s+36>>1]|0)?-1:u<<16>>16;v=(u|0)>-1;if(p<<24>>24!=0&v)if(w){v=1;D=u}else{v=1;D=u;p=(a[(c[s+4>>2]|0)+(u*24|0)+20>>0]|0)==0?0:p}else D=u}else{v=0;D=-1;t=0}if(ga){ma=68;break}else{w=1;B=0}e:while(1){z=ew(1,0,B|0)|0;A=C;do if((z&g|0)==0&(A&h|0)==0){s=c[(c[ca>>2]|0)+(B*20|0)>>2]|0;u=c[s+4>>2]|0;if(!(u&4096))y=s;else{y=s;do{if(!(u&262144))u=y+12|0;else u=c[(c[y+20>>2]|0)+4>>2]|0;y=c[u>>2]|0;u=c[y+4>>2]|0}while((u&4096|0)!=0)}w=da?0:w;if((a[y>>0]|0)!=-102)break;if((c[y+28>>2]|0)!=(R|0))break;if((b[y+32>>1]|0)!=(D|0))break;if(!v){y=z;v=A;w=B;break e}u=_t(c[f>>2]|0,s)|0;if(!u)u=c[aa>>2]|0;if(!($c(c[u>>2]|0,c[(c[K>>2]|0)+(r<<2)>>2]|0)|0)){y=z;v=A;w=B;break e}}while(0);B=B+1|0;if(!(w<<24>>24!=0&(B|0)<(o|0))){ma=68;break d}}do if(T){if(E<<24>>24)if((t^x)<<24>>24==(a[(c[ca>>2]|0)+(w*20|0)+12>>0]|0)){w=E;break}else{ma=68;break d}s=a[(c[ca>>2]|0)+(w*20|0)+12>>0]|0;x=s^t;if(t<<24>>24==s<<24>>24){w=1;break}s=n;t=c[s+4>>2]|M;w=n;c[w>>2]=c[s>>2]|L;c[w+4>>2]=t;w=1}else w=E;while(0);g=y|g;h=v|h;k=(D|0)<0?1:k}r=r+1|0;if((r|0)>=(P|0))break;else E=w}if((ma|0)==68){ma=0;p=(r|0)==0|(r|0)<(Q&65535|0)?0:p}if(!(k<<24>>24))ma=71;else p=1}else ma=71;while(0);if((ma|0)==71){ma=0;if(!(p<<24>>24)){p=0;break b}}R=l+8|0;X=c[R>>2]|X;Y=c[R+4>>2]|Y;if(!ga){w=~X;x=~Y;v=0;do{r=ew(1,0,v|0)|0;u=C;do if((r&g|0)==0&(u&h|0)==0){k=c[(c[ca>>2]|0)+(v*20|0)>>2]|0;s=wv(U,k)|0;t=C;if((s|0)==0&(t|0)==0?(c[la+0>>2]=0,c[la+4>>2]=0,c[la+8>>2]=0,c[la+12>>2]=0,c[la+16>>2]=0,c[la+20>>2]=0,a[V>>0]=1,c[la>>2]=78,c[W>>2]=79,c[Z>>2]=0,ns(la,k)|0,(a[V>>0]|0)==0):0)break;R=(s&w|0)==0&(t&x|0)==0;g=(R?r:0)|g;h=(R?u:0)|h}while(0);v=v+1|0}while((v|0)<(o|0))}if(h>>>0>oa>>>0|(h|0)==(oa|0)&g>>>0>=na>>>0|p<<24>>24==0|($|0)>=(ka|0))break b;else{k=S;$=$+1|0}}da=(a[l+29>>0]|0)==0;g=da?g:na;h=da?h:oa}while(0);if((g|0)==(na|0)&(h|0)==(oa|0)){o=pa&255;break}if(!(p<<24>>24)){do{o=o+-1|0;if((o|0)<=0){o=0;break a}ca=ew(1,0,o|0)|0;ca=fw(ca|0,C|0,-1,-1)|0;da=C}while(!((ca&g|0)==(ca|0)&(da&h|0)==(da|0)));o=o&255}else o=-1}else o=0}while(0);i=qa;return o|0}function Jv(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;if(c)Ok(b,33920,5);if(!d)c=0;else{c=d;while(1)if(!(a[c>>0]|0))break;else c=c+1|0;c=c-d&1073741823}Ok(b,d,c);Ok(b,e,1);Ok(b,13552,1);return}function Kv(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=c[c[c[a>>2]>>2]>>2]|0;d=c[a+12>>2]|0;g=a+20|0;if((d|0)>0){h=c[g>>2]|0;while(1){d=d+-1|0;f=h+20|0;e=b[f>>1]|0;if(e&1){Ck(i,c[h>>2]|0);e=b[f>>1]|0}e=e&65535;if(!(e&16)){if(e&32){e=c[h+12>>2]|0;Kv(e);ig(i,e)}}else{e=c[h+12>>2]|0;Kv(e);ig(i,e)}if((d|0)<=0)break;else h=h+48|0}}d=c[g>>2]|0;if((d|0)!=(a+24|0))ig(i,d);return}function Lv(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();r=s;h=c[b+8>>2]|0;k=c[b>>2]|0;if(e){l=(f|0)==10;m=b+437|0;n=r+4|0;o=r+1|0;p=r+8|0;q=r+12|0;g=f&255;do{if(l)f=a[e+1>>0]|0;else f=g;a[m>>0]=f;f=d[e>>0]|0;if((f|0)==108){u=Rv(b,e)|0;t=cr(k,c[e+8>>2]|0,0)|0;f=Jr(k,c[e+28>>2]|0)|0;pr(b,u,t,f,d[m>>0]|0)}else if((f|0)==109){f=Rv(b,e)|0;nr(b,f,Ir(k,c[e+20>>2]|0,0,0)|0)}else if((f|0)==110){u=Rv(b,e)|0;t=Lr(k,c[e+24>>2]|0,0)|0;f=Ir(k,c[e+20>>2]|0,0,0)|0;or(b,u,t,f,d[m>>0]|0)}else{f=cr(k,c[e+8>>2]|0,0)|0;a[r>>0]=4;c[n>>2]=0;a[o>>0]=0;c[p>>2]=0;c[q>>2]=0;er(b,f,r)|0;Ik(k,f,1)}if((a[e>>0]|0)!=119)sh(h,98,0,0,0)|0;e=c[e+32>>2]|0}while((e|0)!=0)}i=s;return}function Mv(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();h=m;l=c[d>>2]|0;c[h>>2]=0;c[h+4>>2]=0;h=jr(l,159,h,0)|0;do if(!h)h=0;else{k=g<<16>>16;if(g<<16>>16>-1?(b[e+36>>1]|0)!=g<<16>>16:0){g=c[e+4>>2]|0;c[h+28>>2]=f+1+k;a[h+1>>0]=a[g+(k*24|0)+21>>0]|0;k=c[g+(k*24|0)+16>>2]|0;if(!k)k=c[c[l+8>>2]>>2]|0;h=tv(d,h,k)|0;break}c[h+28>>2]=f;a[h+1>>0]=68}while(0);i=m;return h|0}function Nv(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;d=ih(d,48,0)|0;if(d){h=d+0|0;i=h+44|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(i|0));a[d>>0]=-102;b[d+34>>1]=-1;c[d+24>>2]=1;h=c[e+(f*72|0)+24>>2]|0;c[d+44>>2]=h;c[d+28>>2]=c[e+(f*72|0)+48>>2];if((b[h+36>>1]|0)==(g|0))b[d+32>>1]=-1;else{b[d+32>>1]=g;j=(g|0)>63;g=ew(1,0,g|0)|0;h=e+(f*72|0)+64|0;f=h;i=c[f+4>>2]|(j?-2147483648:C);c[h>>2]=c[f>>2]|(j?0:g);c[h+4>>2]=i}h=d+4|0;c[h>>2]=c[h>>2]|4}return d|0}function Ov(b,e){b=b|0;e=e|0;if((a[e>>0]|0)==-101){e=e+38|0;a[e>>0]=(d[e>>0]|0)+(c[b+24>>2]|0)}return 0}function Pv(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=b[a+40>>1]|0;i=f&65535;h=b[a+42>>1]|0;k=e[d+40>>1]|0;g=b[d+42>>1]|0;a:do if(!((g&65535)>(h&65535)?1:(i-(h&65535)|0)>=(k-(g&65535)|0))){g=b[a+20>>1]|0;h=b[d+20>>1]|0;if(g<<16>>16>=h<<16>>16){if(g<<16>>16>h<<16>>16){f=0;break}if((b[a+22>>1]|0)>(b[d+22>>1]|0)){f=0;break}}if(!(f<<16>>16))f=1;else{j=c[a+48>>2]|0;d=d+48|0;a=i;while(1){a=a+-1|0;h=c[j+(a<<2)>>2]|0;if(h){f=k;while(1){g=f+-1|0;if((f|0)<=0){f=0;break a}if((c[(c[d>>2]|0)+(g<<2)>>2]|0)==(h|0))break;else f=g}if((f|0)<1){f=0;break a}}if((a|0)<=0){f=1;break}}}}else f=0;while(0);return f|0}function Qv(d,e){d=d|0;e=e|0;var 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;f=c[d>>2]|0;a:do if(f){k=a[e+16>>0]|0;l=e+17|0;m=e+18|0;n=e+20|0;o=e+22|0;p=e+42|0;q=e+36|0;do{if((a[f+16>>0]|0)==k<<24>>24?(a[f+17>>0]|0)==(a[l>>0]|0):0){if((((c[f+36>>2]&16384|0)!=0?(b[p>>1]|0)==0:0)?(c[q>>2]&513|0)==513:0)?(i=f,j=e,h=c[j>>2]|0,j=c[j+4>>2]|0,(h&c[i>>2]|0)==(h|0)?(j&c[i+4>>2]|0)==(j|0):0):0)break a;r=f;s=c[r>>2]|0;r=c[r+4>>2]|0;h=e;g=c[h>>2]|0;h=c[h+4>>2]|0;i=g&s;j=h&r;if((((i|0)==(s|0)&(j|0)==(r|0)?(b[f+18>>1]|0)<=(b[m>>1]|0):0)?(b[f+20>>1]|0)<=(b[n>>1]|0):0)?(b[f+22>>1]|0)<=(b[o>>1]|0):0){d=0;break a}if(((i|0)==(g|0)&(j|0)==(h|0)?(b[f+20>>1]|0)>=(b[n>>1]|0):0)?(b[f+22>>1]|0)>=(b[o>>1]|0):0)break a}d=f+52|0;f=c[d>>2]|0}while((f|0)!=0)}while(0);return d|0}function Rv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=lr(c[a>>2]|0,0,b+12|0,0)|0;do if(h){g=c[a>>2]|0;f=c[(c[b+4>>2]|0)+20>>2]|0;a:do if(f){e=c[g+20>>2]|0;if((e|0)>0){b=c[g+16>>2]|0;d=0;while(1){a=d+1|0;if((c[b+(d<<4)+12>>2]|0)==(f|0)){a=d;d=7;break a}if((a|0)<(e|0))d=a;else{d=7;break}}}else a=0}else{a=-1e6;d=7}while(0);if((d|0)==7)if(!((a|0)==0|(a|0)>1))break;a=gh(g,c[(c[g+16>>2]|0)+(a<<4)>>2]|0)|0;c[h+(((c[h>>2]|0)+-1|0)*72|0)+12>>2]=a}while(0);return h|0}function Sv(a){a=a|0;var b=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,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;do if(a>>>0<245){if(a>>>0<11)p=16;else p=a+11&-8;a=p>>>3;l=c[12266]|0;i=l>>>a;if(i&3){e=(i&1^1)+a|0;f=e<<1;b=49104+(f<<2)|0;f=49104+(f+2<<2)|0;g=c[f>>2]|0;h=g+8|0;i=c[h>>2]|0;do if((b|0)!=(i|0)){if(i>>>0<(c[12270]|0)>>>0)Kb();d=i+12|0;if((c[d>>2]|0)==(g|0)){c[d>>2]=b;c[f>>2]=i;break}else Kb()}else c[12266]=l&~(1<>2]=w|3;w=g+(w|4)|0;c[w>>2]=c[w>>2]|1;w=h;return w|0}k=c[12268]|0;if(p>>>0>k>>>0){if(i){f=2<>>12&16;f=f>>>a;e=f>>>5&8;f=f>>>e;d=f>>>2&4;f=f>>>d;g=f>>>1&2;f=f>>>g;h=f>>>1&1;h=(e|a|d|g|h)+(f>>>h)|0;f=h<<1;g=49104+(f<<2)|0;f=49104+(f+2<<2)|0;d=c[f>>2]|0;a=d+8|0;e=c[a>>2]|0;do if((g|0)!=(e|0)){if(e>>>0<(c[12270]|0)>>>0)Kb();i=e+12|0;if((c[i>>2]|0)==(d|0)){c[i>>2]=g;c[f>>2]=e;m=c[12268]|0;break}else Kb()}else{c[12266]=l&~(1<>2]=p|3;j=d+p|0;c[d+(p|4)>>2]=b|1;c[d+w>>2]=b;if(m){e=c[12271]|0;g=m>>>3;i=g<<1;f=49104+(i<<2)|0;h=c[12266]|0;g=1<>2]|0;if(i>>>0<(c[12270]|0)>>>0)Kb();else{n=h;o=i}}else{c[12266]=h|g;n=49104+(i+2<<2)|0;o=f}c[n>>2]=e;c[o+12>>2]=e;c[e+8>>2]=o;c[e+12>>2]=f}c[12268]=b;c[12271]=j;w=a;return w|0}a=c[12267]|0;if(a){h=(a&0-a)+-1|0;v=h>>>12&16;h=h>>>v;u=h>>>5&8;h=h>>>u;w=h>>>2&4;h=h>>>w;i=h>>>1&2;h=h>>>i;g=h>>>1&1;g=c[49368+((u|v|w|i|g)+(h>>>g)<<2)>>2]|0;h=(c[g+4>>2]&-8)-p|0;i=g;while(1){d=c[i+16>>2]|0;if(!d){d=c[i+20>>2]|0;if(!d){l=h;k=g;break}}i=(c[d+4>>2]&-8)-p|0;w=i>>>0>>0;h=w?i:h;i=d;g=w?d:g}a=c[12270]|0;if(k>>>0>>0)Kb();b=k+p|0;if(k>>>0>=b>>>0)Kb();j=c[k+24>>2]|0;g=c[k+12>>2]|0;do if((g|0)==(k|0)){h=k+20|0;i=c[h>>2]|0;if(!i){h=k+16|0;i=c[h>>2]|0;if(!i){e=0;break}}while(1){g=i+20|0;f=c[g>>2]|0;if(f){i=f;h=g;continue}g=i+16|0;f=c[g>>2]|0;if(!f)break;else{i=f;h=g}}if(h>>>0>>0)Kb();else{c[h>>2]=0;e=i;break}}else{f=c[k+8>>2]|0;if(f>>>0>>0)Kb();i=f+12|0;if((c[i>>2]|0)!=(k|0))Kb();h=g+8|0;if((c[h>>2]|0)==(k|0)){c[i>>2]=g;c[h>>2]=f;e=g;break}else Kb()}while(0);do if(j){i=c[k+28>>2]|0;h=49368+(i<<2)|0;if((k|0)==(c[h>>2]|0)){c[h>>2]=e;if(!e){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Kb();i=j+16|0;if((c[i>>2]|0)==(k|0))c[i>>2]=e;else c[j+20>>2]=e;if(!e)break}h=c[12270]|0;if(e>>>0>>0)Kb();c[e+24>>2]=j;i=c[k+16>>2]|0;do if(i)if(i>>>0>>0)Kb();else{c[e+16>>2]=i;c[i+24>>2]=e;break}while(0);i=c[k+20>>2]|0;if(i)if(i>>>0<(c[12270]|0)>>>0)Kb();else{c[e+20>>2]=i;c[i+24>>2]=e;break}}while(0);if(l>>>0<16){w=l+p|0;c[k+4>>2]=w|3;w=k+(w+4)|0;c[w>>2]=c[w>>2]|1}else{c[k+4>>2]=p|3;c[k+(p|4)>>2]=l|1;c[k+(l+p)>>2]=l;d=c[12268]|0;if(d){e=c[12271]|0;g=d>>>3;i=g<<1;f=49104+(i<<2)|0;h=c[12266]|0;g=1<>2]|0;if(h>>>0<(c[12270]|0)>>>0)Kb();else{q=i;r=h}}else{c[12266]=h|g;q=49104+(i+2<<2)|0;r=f}c[q>>2]=e;c[r+12>>2]=e;c[e+8>>2]=r;c[e+12>>2]=f}c[12268]=l;c[12271]=b}w=k+8|0;return w|0}else r=p}else r=p}else if(a>>>0<=4294967231){a=a+11|0;r=a&-8;k=c[12267]|0;if(k){h=0-r|0;a=a>>>8;if(a)if(r>>>0>16777215)d=31;else{p=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;d=14-(o|p|d)+(q<>>15)|0;d=r>>>(d+7|0)&1|d<<1}else d=0;f=c[49368+(d<<2)>>2]|0;a:do if(!f){a=0;i=0}else{if((d|0)==31)i=0;else i=25-(d>>>1)|0;l=h;a=0;b=r<>2]&-8;h=e-r|0;if(h>>>0>>0)if((e|0)==(r|0)){a=f;i=f;break a}else i=f;else h=l;q=c[f+20>>2]|0;f=c[f+(b>>>31<<2)+16>>2]|0;a=(q|0)==0|(q|0)==(f|0)?a:q;if(!f)break;else{l=h;b=b<<1}}}while(0);if((a|0)==0&(i|0)==0){a=2<>>12&16;q=q>>>n;m=q>>>5&8;q=q>>>m;o=q>>>2&4;q=q>>>o;p=q>>>1&2;q=q>>>p;a=q>>>1&1;a=c[49368+((m|n|o|p|a)+(q>>>a)<<2)>>2]|0}if(!a){o=h;p=i}else while(1){q=(c[a+4>>2]&-8)-r|0;f=q>>>0>>0;h=f?q:h;i=f?a:i;f=c[a+16>>2]|0;if(f){a=f;continue}a=c[a+20>>2]|0;if(!a){o=h;p=i;break}}if((p|0)!=0?o>>>0<((c[12268]|0)-r|0)>>>0:0){a=c[12270]|0;if(p>>>0>>0)Kb();m=p+r|0;if(p>>>0>=m>>>0)Kb();j=c[p+24>>2]|0;g=c[p+12>>2]|0;do if((g|0)==(p|0)){h=p+20|0;i=c[h>>2]|0;if(!i){h=p+16|0;i=c[h>>2]|0;if(!i){t=0;break}}while(1){g=i+20|0;f=c[g>>2]|0;if(f){i=f;h=g;continue}g=i+16|0;f=c[g>>2]|0;if(!f)break;else{i=f;h=g}}if(h>>>0>>0)Kb();else{c[h>>2]=0;t=i;break}}else{f=c[p+8>>2]|0;if(f>>>0>>0)Kb();i=f+12|0;if((c[i>>2]|0)!=(p|0))Kb();h=g+8|0;if((c[h>>2]|0)==(p|0)){c[i>>2]=g;c[h>>2]=f;t=g;break}else Kb()}while(0);do if(j){i=c[p+28>>2]|0;h=49368+(i<<2)|0;if((p|0)==(c[h>>2]|0)){c[h>>2]=t;if(!t){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Kb();i=j+16|0;if((c[i>>2]|0)==(p|0))c[i>>2]=t;else c[j+20>>2]=t;if(!t)break}h=c[12270]|0;if(t>>>0>>0)Kb();c[t+24>>2]=j;i=c[p+16>>2]|0;do if(i)if(i>>>0>>0)Kb();else{c[t+16>>2]=i;c[i+24>>2]=t;break}while(0);i=c[p+20>>2]|0;if(i)if(i>>>0<(c[12270]|0)>>>0)Kb();else{c[t+20>>2]=i;c[i+24>>2]=t;break}}while(0);b:do if(o>>>0>=16){c[p+4>>2]=r|3;c[p+(r|4)>>2]=o|1;c[p+(o+r)>>2]=o;i=o>>>3;if(o>>>0<256){h=i<<1;f=49104+(h<<2)|0;g=c[12266]|0;i=1<>2]|0;if(h>>>0>=(c[12270]|0)>>>0){u=i;v=h;break}Kb()}while(0);c[u>>2]=m;c[v+12>>2]=m;c[p+(r+8)>>2]=v;c[p+(r+12)>>2]=f;break}d=o>>>8;if(d)if(o>>>0>16777215)f=31;else{v=(d+1048320|0)>>>16&8;w=d<>>16&4;w=w<>>16&2;f=14-(u|v|f)+(w<>>15)|0;f=o>>>(f+7|0)&1|f<<1}else f=0;i=49368+(f<<2)|0;c[p+(r+28)>>2]=f;c[p+(r+20)>>2]=0;c[p+(r+16)>>2]=0;h=c[12267]|0;g=1<>2]=m;c[p+(r+24)>>2]=i;c[p+(r+12)>>2]=m;c[p+(r+8)>>2]=m;break}d=c[i>>2]|0;if((f|0)==31)b=0;else b=25-(f>>>1)|0;c:do if((c[d+4>>2]&-8|0)!=(o|0)){h=o<>>31<<2)+16|0;i=c[b>>2]|0;if(!i)break;if((c[i+4>>2]&-8|0)==(o|0)){B=i;break c}else{h=h<<1;d=i}}if(b>>>0<(c[12270]|0)>>>0)Kb();else{c[b>>2]=m;c[p+(r+24)>>2]=d;c[p+(r+12)>>2]=m;c[p+(r+8)>>2]=m;break b}}else B=d;while(0);d=B+8|0;b=c[d>>2]|0;w=c[12270]|0;if(B>>>0>=w>>>0&b>>>0>=w>>>0){c[b+12>>2]=m;c[d>>2]=m;c[p+(r+8)>>2]=b;c[p+(r+12)>>2]=B;c[p+(r+24)>>2]=0;break}else Kb()}else{w=o+r|0;c[p+4>>2]=w|3;w=p+(w+4)|0;c[w>>2]=c[w>>2]|1}while(0);w=p+8|0;return w|0}}}else r=-1;while(0);a=c[12268]|0;if(a>>>0>=r>>>0){b=a-r|0;d=c[12271]|0;if(b>>>0>15){c[12271]=d+r;c[12268]=b;c[d+(r+4)>>2]=b|1;c[d+a>>2]=b;c[d+4>>2]=r|3}else{c[12268]=0;c[12271]=0;c[d+4>>2]=a|3;w=d+(a+4)|0;c[w>>2]=c[w>>2]|1}w=d+8|0;return w|0}a=c[12269]|0;if(a>>>0>r>>>0){v=a-r|0;c[12269]=v;w=c[12272]|0;c[12272]=w+r;c[w+(r+4)>>2]=v|1;c[w+4>>2]=r|3;w=w+8|0;return w|0}do if(!(c[12384]|0)){a=sb(30)|0;if(!(a+-1&a)){c[12386]=a;c[12385]=a;c[12387]=-1;c[12388]=-1;c[12389]=0;c[12377]=0;c[12384]=(Lb(0)|0)&-16^1431655768;break}else Kb()}while(0);l=r+48|0;b=c[12386]|0;k=r+47|0;d=b+k|0;b=0-b|0;m=d&b;if(m>>>0<=r>>>0){w=0;return w|0}a=c[12376]|0;if((a|0)!=0?(u=c[12374]|0,v=u+m|0,v>>>0<=u>>>0|v>>>0>a>>>0):0){w=0;return w|0}d:do if(!(c[12377]&4)){a=c[12272]|0;e:do if(a){f=49512|0;while(1){i=c[f>>2]|0;if(i>>>0<=a>>>0?(s=f+4|0,(i+(c[s>>2]|0)|0)>>>0>a>>>0):0){e=f;h=s;a=f;break}f=c[f+8>>2]|0;if(!f){G=181;break e}}if(a){a=d-(c[12269]|0)&b;if(a>>>0<2147483647){i=ob(a|0)|0;if((i|0)==((c[e>>2]|0)+(c[h>>2]|0)|0))G=190;else G=191}else a=0}else G=181}else G=181;while(0);do if((G|0)==181){i=ob(0)|0;if((i|0)!=(-1|0)){a=i;h=c[12385]|0;f=h+-1|0;if(!(f&a))a=m;else a=m-a+(f+a&0-h)|0;h=c[12374]|0;f=h+a|0;if(a>>>0>r>>>0&a>>>0<2147483647){v=c[12376]|0;if((v|0)!=0?f>>>0<=h>>>0|f>>>0>v>>>0:0){a=0;break}h=ob(a|0)|0;if((h|0)==(i|0))G=190;else{i=h;G=191}}else a=0}else a=0}while(0);f:do if((G|0)==190){if((i|0)!=(-1|0)){x=i;G=201;break d}}else if((G|0)==191){h=0-a|0;do if((i|0)!=(-1|0)&a>>>0<2147483647&l>>>0>a>>>0?(w=c[12386]|0,w=k-a+w&0-w,w>>>0<2147483647):0)if((ob(w|0)|0)==(-1|0)){ob(h|0)|0;a=0;break f}else{a=w+a|0;break}while(0);if((i|0)==(-1|0))a=0;else{x=i;G=201;break d}}while(0);c[12377]=c[12377]|4;G=198}else{a=0;G=198}while(0);if((((G|0)==198?m>>>0<2147483647:0)?(x=ob(m|0)|0,y=ob(0)|0,(x|0)!=(-1|0)&(y|0)!=(-1|0)&x>>>0>>0):0)?(z=y-x|0,A=z>>>0>(r+40|0)>>>0,A):0){a=A?z:a;G=201}if((G|0)==201){i=(c[12374]|0)+a|0;c[12374]=i;if(i>>>0>(c[12375]|0)>>>0)c[12375]=i;l=c[12272]|0;g:do if(l){e=49512|0;do{i=c[e>>2]|0;h=e+4|0;f=c[h>>2]|0;if((x|0)==(i+f|0)){C=i;D=h;E=f;F=e;G=213;break}e=c[e+8>>2]|0}while((e|0)!=0);if(((G|0)==213?(c[F+12>>2]&8|0)==0:0)?l>>>0>=C>>>0&l>>>0>>0:0){c[D>>2]=E+a;b=(c[12269]|0)+a|0;d=l+8|0;if(!(d&7))d=0;else d=0-d&7;w=b-d|0;c[12272]=l+d;c[12269]=w;c[l+(d+4)>>2]=w|1;c[l+(b+4)>>2]=40;c[12273]=c[12388];break}i=c[12270]|0;if(x>>>0>>0){c[12270]=x;k=x}else k=i;i=x+a|0;h=49512|0;do{if((c[h>>2]|0)==(i|0)){H=h;I=h;G=223;break}h=c[h+8>>2]|0}while((h|0)!=0);if((G|0)==223?(c[I+12>>2]&8|0)==0:0){c[H>>2]=x;i=I+4|0;c[i>>2]=(c[i>>2]|0)+a;i=x+8|0;if(!(i&7))p=0;else p=0-i&7;i=x+(a+8)|0;if(!(i&7))d=0;else d=0-i&7;i=x+(d+a)|0;o=p+r|0;n=x+o|0;m=i-(x+p)-r|0;c[x+(p+4)>>2]=r|3;h:do if((i|0)!=(l|0)){if((i|0)==(c[12271]|0)){w=(c[12268]|0)+m|0;c[12268]=w;c[12271]=n;c[x+(o+4)>>2]=w|1;c[x+(w+o)>>2]=w;break}l=a+4|0;j=c[x+(l+d)>>2]|0;if((j&3|0)==1){b=j&-8;f=j>>>3;i:do if(j>>>0>=256){e=c[x+((d|24)+a)>>2]|0;g=c[x+(a+12+d)>>2]|0;do if((g|0)==(i|0)){g=d|16;h=x+(l+g)|0;j=c[h>>2]|0;if(!j){h=x+(g+a)|0;j=c[h>>2]|0;if(!j){N=0;break}}while(1){g=j+20|0;f=c[g>>2]|0;if(f){j=f;h=g;continue}g=j+16|0;f=c[g>>2]|0;if(!f)break;else{j=f;h=g}}if(h>>>0>>0)Kb();else{c[h>>2]=0;N=j;break}}else{f=c[x+((d|8)+a)>>2]|0;if(f>>>0>>0)Kb();j=f+12|0;if((c[j>>2]|0)!=(i|0))Kb();h=g+8|0;if((c[h>>2]|0)==(i|0)){c[j>>2]=g;c[h>>2]=f;N=g;break}else Kb()}while(0);if(!e)break;j=c[x+(a+28+d)>>2]|0;h=49368+(j<<2)|0;do if((i|0)!=(c[h>>2]|0)){if(e>>>0<(c[12270]|0)>>>0)Kb();j=e+16|0;if((c[j>>2]|0)==(i|0))c[j>>2]=N;else c[e+20>>2]=N;if(!N)break i}else{c[h>>2]=N;if(N)break;c[12267]=c[12267]&~(1<>>0>>0)Kb();c[N+24>>2]=e;j=d|16;i=c[x+(j+a)>>2]|0;do if(i)if(i>>>0>>0)Kb();else{c[N+16>>2]=i;c[i+24>>2]=N;break}while(0);i=c[x+(l+j)>>2]|0;if(!i)break;if(i>>>0<(c[12270]|0)>>>0)Kb();else{c[N+20>>2]=i;c[i+24>>2]=N;break}}else{h=c[x+((d|8)+a)>>2]|0;g=c[x+(a+12+d)>>2]|0;j=49104+(f<<1<<2)|0;do if((h|0)!=(j|0)){if(h>>>0>>0)Kb();if((c[h+12>>2]|0)==(i|0))break;Kb()}while(0);if((g|0)==(h|0)){c[12266]=c[12266]&~(1<>>0>>0)Kb();j=g+8|0;if((c[j>>2]|0)==(i|0)){J=j;break}Kb()}while(0);c[h+12>>2]=g;c[J>>2]=h}while(0);i=x+((b|d)+a)|0;j=b+m|0}else j=m;i=i+4|0;c[i>>2]=c[i>>2]&-2;c[x+(o+4)>>2]=j|1;c[x+(j+o)>>2]=j;i=j>>>3;if(j>>>0<256){h=i<<1;f=49104+(h<<2)|0;g=c[12266]|0;i=1<>2]|0;if(h>>>0>=(c[12270]|0)>>>0){O=i;P=h;break}Kb()}while(0);c[O>>2]=n;c[P+12>>2]=n;c[x+(o+8)>>2]=P;c[x+(o+12)>>2]=f;break}d=j>>>8;do if(!d)f=0;else{if(j>>>0>16777215){f=31;break}v=(d+1048320|0)>>>16&8;w=d<>>16&4;w=w<>>16&2;f=14-(u|v|f)+(w<>>15)|0;f=j>>>(f+7|0)&1|f<<1}while(0);i=49368+(f<<2)|0;c[x+(o+28)>>2]=f;c[x+(o+20)>>2]=0;c[x+(o+16)>>2]=0;h=c[12267]|0;g=1<>2]=n;c[x+(o+24)>>2]=i;c[x+(o+12)>>2]=n;c[x+(o+8)>>2]=n;break}d=c[i>>2]|0;if((f|0)==31)i=0;else i=25-(f>>>1)|0;j:do if((c[d+4>>2]&-8|0)!=(j|0)){h=j<>>31<<2)+16|0;i=c[b>>2]|0;if(!i)break;if((c[i+4>>2]&-8|0)==(j|0)){Q=i;break j}else{h=h<<1;d=i}}if(b>>>0<(c[12270]|0)>>>0)Kb();else{c[b>>2]=n;c[x+(o+24)>>2]=d;c[x+(o+12)>>2]=n;c[x+(o+8)>>2]=n;break h}}else Q=d;while(0);d=Q+8|0;b=c[d>>2]|0;w=c[12270]|0;if(Q>>>0>=w>>>0&b>>>0>=w>>>0){c[b+12>>2]=n;c[d>>2]=n;c[x+(o+8)>>2]=b;c[x+(o+12)>>2]=Q;c[x+(o+24)>>2]=0;break}else Kb()}else{w=(c[12269]|0)+m|0;c[12269]=w;c[12272]=n;c[x+(o+4)>>2]=w|1}while(0);w=x+(p|8)|0;return w|0}h=49512|0;while(1){i=c[h>>2]|0;if(i>>>0<=l>>>0?(g=c[h+4>>2]|0,j=i+g|0,j>>>0>l>>>0):0)break;h=c[h+8>>2]|0}h=i+(g+-39)|0;if(!(h&7))h=0;else h=0-h&7;g=i+(g+-47+h)|0;g=g>>>0<(l+16|0)>>>0?l:g;h=g+8|0;i=x+8|0;if(!(i&7))i=0;else i=0-i&7;w=a+-40-i|0;c[12272]=x+i;c[12269]=w;c[x+(i+4)>>2]=w|1;c[x+(a+-36)>>2]=40;c[12273]=c[12388];c[g+4>>2]=27;c[h+0>>2]=c[12378];c[h+4>>2]=c[12379];c[h+8>>2]=c[12380];c[h+12>>2]=c[12381];c[12378]=x;c[12379]=a;c[12381]=0;c[12380]=h;i=g+28|0;c[i>>2]=7;if((g+32|0)>>>0>>0)do{w=i;i=i+4|0;c[i>>2]=7}while((w+8|0)>>>0>>0);if((g|0)!=(l|0)){j=g-l|0;i=l+(j+4)|0;c[i>>2]=c[i>>2]&-2;c[l+4>>2]=j|1;c[l+j>>2]=j;i=j>>>3;if(j>>>0<256){h=i<<1;f=49104+(h<<2)|0;g=c[12266]|0;i=1<>2]|0;if(b>>>0>=(c[12270]|0)>>>0){K=d;L=b;break}Kb()}while(0);c[K>>2]=l;c[L+12>>2]=l;c[l+8>>2]=L;c[l+12>>2]=f;break}d=j>>>8;if(d)if(j>>>0>16777215)i=31;else{v=(d+1048320|0)>>>16&8;w=d<>>16&4;w=w<>>16&2;i=14-(u|v|i)+(w<>>15)|0;i=j>>>(i+7|0)&1|i<<1}else i=0;d=49368+(i<<2)|0;c[l+28>>2]=i;c[l+20>>2]=0;c[l+16>>2]=0;b=c[12267]|0;e=1<>2]=l;c[l+24>>2]=d;c[l+12>>2]=l;c[l+8>>2]=l;break}d=c[d>>2]|0;if((i|0)==31)b=0;else b=25-(i>>>1)|0;k:do if((c[d+4>>2]&-8|0)!=(j|0)){i=j<>>31<<2)+16|0;e=c[b>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(j|0)){M=e;break k}else{i=i<<1;d=e}}if(b>>>0<(c[12270]|0)>>>0)Kb();else{c[b>>2]=l;c[l+24>>2]=d;c[l+12>>2]=l;c[l+8>>2]=l;break g}}else M=d;while(0);d=M+8|0;b=c[d>>2]|0;w=c[12270]|0;if(M>>>0>=w>>>0&b>>>0>=w>>>0){c[b+12>>2]=l;c[d>>2]=l;c[l+8>>2]=b;c[l+12>>2]=M;c[l+24>>2]=0;break}else Kb()}}else{w=c[12270]|0;if((w|0)==0|x>>>0>>0)c[12270]=x;c[12378]=x;c[12379]=a;c[12381]=0;c[12275]=c[12384];c[12274]=-1;d=0;do{w=d<<1;v=49104+(w<<2)|0;c[49104+(w+3<<2)>>2]=v;c[49104+(w+2<<2)>>2]=v;d=d+1|0}while((d|0)!=32);d=x+8|0;if(!(d&7))d=0;else d=0-d&7;w=a+-40-d|0;c[12272]=x+d;c[12269]=w;c[x+(d+4)>>2]=w|1;c[x+(a+-36)>>2]=40;c[12273]=c[12388]}while(0);b=c[12269]|0;if(b>>>0>r>>>0){v=b-r|0;c[12269]=v;w=c[12272]|0;c[12272]=w+r;c[w+(r+4)>>2]=v|1;c[w+4>>2]=r|3;w=w+8|0;return w|0}}c[(Db()|0)>>2]=12;w=0;return w|0}function Tv(a){a=a|0;var b=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;if(!a)return;g=a+-8|0;h=c[12270]|0;if(g>>>0>>0)Kb();f=c[a+-4>>2]|0;e=f&3;if((e|0)==1)Kb();o=f&-8;q=a+(o+-8)|0;do if(!(f&1)){g=c[g>>2]|0;if(!e)return;i=-8-g|0;l=a+i|0;m=g+o|0;if(l>>>0>>0)Kb();if((l|0)==(c[12271]|0)){g=a+(o+-4)|0;f=c[g>>2]|0;if((f&3|0)!=3){u=l;k=m;break}c[12268]=m;c[g>>2]=f&-2;c[a+(i+4)>>2]=m|1;c[q>>2]=m;return}d=g>>>3;if(g>>>0<256){e=c[a+(i+8)>>2]|0;f=c[a+(i+12)>>2]|0;g=49104+(d<<1<<2)|0;if((e|0)!=(g|0)){if(e>>>0>>0)Kb();if((c[e+12>>2]|0)!=(l|0))Kb()}if((f|0)==(e|0)){c[12266]=c[12266]&~(1<>>0>>0)Kb();g=f+8|0;if((c[g>>2]|0)==(l|0))b=g;else Kb()}else b=f+8|0;c[e+12>>2]=f;c[b>>2]=e;u=l;k=m;break}b=c[a+(i+24)>>2]|0;e=c[a+(i+12)>>2]|0;do if((e|0)==(l|0)){f=a+(i+20)|0;g=c[f>>2]|0;if(!g){f=a+(i+16)|0;g=c[f>>2]|0;if(!g){j=0;break}}while(1){e=g+20|0;d=c[e>>2]|0;if(d){g=d;f=e;continue}e=g+16|0;d=c[e>>2]|0;if(!d)break;else{g=d;f=e}}if(f>>>0>>0)Kb();else{c[f>>2]=0;j=g;break}}else{d=c[a+(i+8)>>2]|0;if(d>>>0>>0)Kb();g=d+12|0;if((c[g>>2]|0)!=(l|0))Kb();f=e+8|0;if((c[f>>2]|0)==(l|0)){c[g>>2]=e;c[f>>2]=d;j=e;break}else Kb()}while(0);if(b){g=c[a+(i+28)>>2]|0;f=49368+(g<<2)|0;if((l|0)==(c[f>>2]|0)){c[f>>2]=j;if(!j){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Kb();g=b+16|0;if((c[g>>2]|0)==(l|0))c[g>>2]=j;else c[b+20>>2]=j;if(!j){u=l;k=m;break}}f=c[12270]|0;if(j>>>0>>0)Kb();c[j+24>>2]=b;g=c[a+(i+16)>>2]|0;do if(g)if(g>>>0>>0)Kb();else{c[j+16>>2]=g;c[g+24>>2]=j;break}while(0);g=c[a+(i+20)>>2]|0;if(g)if(g>>>0<(c[12270]|0)>>>0)Kb();else{c[j+20>>2]=g;c[g+24>>2]=j;u=l;k=m;break}else{u=l;k=m}}else{u=l;k=m}}else{u=g;k=o}while(0);if(u>>>0>=q>>>0)Kb();g=a+(o+-4)|0;f=c[g>>2]|0;if(!(f&1))Kb();if(!(f&2)){if((q|0)==(c[12272]|0)){l=(c[12269]|0)+k|0;c[12269]=l;c[12272]=u;c[u+4>>2]=l|1;if((u|0)!=(c[12271]|0))return;c[12271]=0;c[12268]=0;return}if((q|0)==(c[12271]|0)){l=(c[12268]|0)+k|0;c[12268]=l;c[12271]=u;c[u+4>>2]=l|1;c[u+l>>2]=l;return}h=(f&-8)+k|0;b=f>>>3;do if(f>>>0>=256){b=c[a+(o+16)>>2]|0;g=c[a+(o|4)>>2]|0;do if((g|0)==(q|0)){f=a+(o+12)|0;g=c[f>>2]|0;if(!g){f=a+(o+8)|0;g=c[f>>2]|0;if(!g){p=0;break}}while(1){e=g+20|0;d=c[e>>2]|0;if(d){g=d;f=e;continue}e=g+16|0;d=c[e>>2]|0;if(!d)break;else{g=d;f=e}}if(f>>>0<(c[12270]|0)>>>0)Kb();else{c[f>>2]=0;p=g;break}}else{f=c[a+o>>2]|0;if(f>>>0<(c[12270]|0)>>>0)Kb();e=f+12|0;if((c[e>>2]|0)!=(q|0))Kb();d=g+8|0;if((c[d>>2]|0)==(q|0)){c[e>>2]=g;c[d>>2]=f;p=g;break}else Kb()}while(0);if(b){g=c[a+(o+20)>>2]|0;f=49368+(g<<2)|0;if((q|0)==(c[f>>2]|0)){c[f>>2]=p;if(!p){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Kb();g=b+16|0;if((c[g>>2]|0)==(q|0))c[g>>2]=p;else c[b+20>>2]=p;if(!p)break}g=c[12270]|0;if(p>>>0>>0)Kb();c[p+24>>2]=b;f=c[a+(o+8)>>2]|0;do if(f)if(f>>>0>>0)Kb();else{c[p+16>>2]=f;c[f+24>>2]=p;break}while(0);d=c[a+(o+12)>>2]|0;if(d)if(d>>>0<(c[12270]|0)>>>0)Kb();else{c[p+20>>2]=d;c[d+24>>2]=p;break}}}else{d=c[a+o>>2]|0;e=c[a+(o|4)>>2]|0;g=49104+(b<<1<<2)|0;if((d|0)!=(g|0)){if(d>>>0<(c[12270]|0)>>>0)Kb();if((c[d+12>>2]|0)!=(q|0))Kb()}if((e|0)==(d|0)){c[12266]=c[12266]&~(1<>>0<(c[12270]|0)>>>0)Kb();f=e+8|0;if((c[f>>2]|0)==(q|0))n=f;else Kb()}else n=e+8|0;c[d+12>>2]=e;c[n>>2]=d}while(0);c[u+4>>2]=h|1;c[u+h>>2]=h;if((u|0)==(c[12271]|0)){c[12268]=h;return}else g=h}else{c[g>>2]=f&-2;c[u+4>>2]=k|1;c[u+k>>2]=k;g=k}f=g>>>3;if(g>>>0<256){e=f<<1;g=49104+(e<<2)|0;b=c[12266]|0;d=1<>2]|0;if(b>>>0<(c[12270]|0)>>>0)Kb();else{r=d;s=b}}else{c[12266]=b|d;r=49104+(e+2<<2)|0;s=g}c[r>>2]=u;c[s+12>>2]=u;c[u+8>>2]=s;c[u+12>>2]=g;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{k=(b+1048320|0)>>>16&8;l=b<>>16&4;l=l<>>16&2;f=14-(j|k|f)+(l<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;d=49368+(f<<2)|0;c[u+28>>2]=f;c[u+20>>2]=0;c[u+16>>2]=0;b=c[12267]|0;e=1<>2]|0;if((f|0)==31)b=0;else b=25-(f>>>1)|0;b:do if((c[d+4>>2]&-8|0)!=(g|0)){f=g<>>31<<2)+16|0;e=c[b>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(g|0)){t=e;break b}else{f=f<<1;d=e}}if(b>>>0<(c[12270]|0)>>>0)Kb();else{c[b>>2]=u;c[u+24>>2]=d;c[u+12>>2]=u;c[u+8>>2]=u;break a}}else t=d;while(0);b=t+8|0;d=c[b>>2]|0;l=c[12270]|0;if(t>>>0>=l>>>0&d>>>0>=l>>>0){c[d+12>>2]=u;c[b>>2]=u;c[u+8>>2]=d;c[u+12>>2]=t;c[u+24>>2]=0;break}else Kb()}else{c[12267]=b|e;c[d>>2]=u;c[u+24>>2]=d;c[u+12>>2]=u;c[u+8>>2]=u}while(0);l=(c[12274]|0)+-1|0;c[12274]=l;if(!l)b=49520|0;else return;while(1){b=c[b>>2]|0;if(!b)break;else b=b+8|0}c[12274]=-1;return}function Uv(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){d=Sv(b)|0;return d|0}if(b>>>0>4294967231){c[(Db()|0)>>2]=12;d=0;return d|0}if(b>>>0<11)d=16;else d=b+11&-8;d=Yv(a+-8|0,d)|0;if(d){d=d+8|0;return d|0}d=Sv(b)|0;if(!d){d=0;return d|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;gw(d|0,a|0,(e>>>0>>0?e:b)|0)|0;Tv(a);return d|0}function Vv(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(!d){b=0;return b|0}else{f=d;e=b}while(1){d=a[e>>0]|0;b=a[c>>0]|0;if(d<<24>>24!=b<<24>>24)break;f=f+-1|0;if(!f){b=0;g=5;break}else{e=e+1|0;c=c+1|0}}if((g|0)==5)return b|0;b=(d&255)-(b&255)|0;return b|0}function Wv(b,c){b=b|0;c=c|0;var d=0,e=0;e=a[b>>0]|0;d=a[c>>0]|0;if(e<<24>>24==0?1:e<<24>>24!=d<<24>>24)c=e;else{do{b=b+1|0;c=c+1|0;e=a[b>>0]|0;d=a[c>>0]|0}while(!(e<<24>>24==0?1:e<<24>>24!=d<<24>>24));c=e}return (c&255)-(d&255)|0}function Xv(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e){c=0;return c|0}f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(g<<24>>24!=0&(e|0)!=0&f<<24>>24==g<<24>>24))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);c=(f&255)-(d[c>>0]|0)|0;return c|0}function Yv(a,b){a=a|0;b=b|0;var 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;o=a+4|0;p=c[o>>2]|0;j=p&-8;l=a+j|0;i=c[12270]|0;e=p&3;if(!((e|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Kb();d=a+(j|4)|0;g=c[d>>2]|0;if(!(g&1))Kb();if(!e){if(b>>>0<256){m=0;return m|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[12386]<<1>>>0:0){m=a;return m|0}m=0;return m|0}if(j>>>0>=b>>>0){e=j-b|0;if(e>>>0<=15){m=a;return m|0}c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=e|3;c[d>>2]=c[d>>2]|1;Zv(a+b|0,e);m=a;return m|0}if((l|0)==(c[12272]|0)){e=(c[12269]|0)+j|0;if(e>>>0<=b>>>0){m=0;return m|0}m=e-b|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=m|1;c[12272]=a+b;c[12269]=m;m=a;return m|0}if((l|0)==(c[12271]|0)){e=(c[12268]|0)+j|0;if(e>>>0>>0){m=0;return m|0}d=e-b|0;if(d>>>0>15){c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|1;c[a+e>>2]=d;e=a+(e+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[o>>2]=p&1|e|2;e=a+(e+4)|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[12268]=d;c[12271]=e;m=a;return m|0}if(g&2){m=0;return m|0}m=(g&-8)+j|0;if(m>>>0>>0){m=0;return m|0}n=m-b|0;f=g>>>3;do if(g>>>0>=256){h=c[a+(j+24)>>2]|0;g=c[a+(j+12)>>2]|0;do if((g|0)==(l|0)){d=a+(j+20)|0;e=c[d>>2]|0;if(!e){d=a+(j+16)|0;e=c[d>>2]|0;if(!e){k=0;break}}while(1){f=e+20|0;g=c[f>>2]|0;if(g){e=g;d=f;continue}g=e+16|0;f=c[g>>2]|0;if(!f)break;else{e=f;d=g}}if(d>>>0>>0)Kb();else{c[d>>2]=0;k=e;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Kb();e=f+12|0;if((c[e>>2]|0)!=(l|0))Kb();d=g+8|0;if((c[d>>2]|0)==(l|0)){c[e>>2]=g;c[d>>2]=f;k=g;break}else Kb()}while(0);if(h){e=c[a+(j+28)>>2]|0;d=49368+(e<<2)|0;if((l|0)==(c[d>>2]|0)){c[d>>2]=k;if(!k){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Kb();e=h+16|0;if((c[e>>2]|0)==(l|0))c[e>>2]=k;else c[h+20>>2]=k;if(!k)break}d=c[12270]|0;if(k>>>0>>0)Kb();c[k+24>>2]=h;e=c[a+(j+16)>>2]|0;do if(e)if(e>>>0>>0)Kb();else{c[k+16>>2]=e;c[e+24>>2]=k;break}while(0);e=c[a+(j+20)>>2]|0;if(e)if(e>>>0<(c[12270]|0)>>>0)Kb();else{c[k+20>>2]=e;c[e+24>>2]=k;break}}}else{g=c[a+(j+8)>>2]|0;d=c[a+(j+12)>>2]|0;e=49104+(f<<1<<2)|0;if((g|0)!=(e|0)){if(g>>>0>>0)Kb();if((c[g+12>>2]|0)!=(l|0))Kb()}if((d|0)==(g|0)){c[12266]=c[12266]&~(1<>>0>>0)Kb();e=d+8|0;if((c[e>>2]|0)==(l|0))h=e;else Kb()}else h=d+8|0;c[g+12>>2]=d;c[h>>2]=g}while(0);if(n>>>0<16){c[o>>2]=m|p&1|2;m=a+(m|4)|0;c[m>>2]=c[m>>2]|1;m=a;return m|0}else{c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|3;m=a+(m|4)|0;c[m>>2]=c[m>>2]|1;Zv(a+b|0,n);m=a;return m|0}return 0}function Zv(a,b){a=a|0;b=b|0;var 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;q=a+b|0;h=c[a+4>>2]|0;do if(!(h&1)){j=c[a>>2]|0;if(!(h&3))return;n=a+(0-j)|0;m=j+b|0;i=c[12270]|0;if(n>>>0>>0)Kb();if((n|0)==(c[12271]|0)){g=a+(b+4)|0;h=c[g>>2]|0;if((h&3|0)!=3){t=n;l=m;break}c[12268]=m;c[g>>2]=h&-2;c[a+(4-j)>>2]=m|1;c[q>>2]=m;return}e=j>>>3;if(j>>>0<256){f=c[a+(8-j)>>2]|0;g=c[a+(12-j)>>2]|0;h=49104+(e<<1<<2)|0;if((f|0)!=(h|0)){if(f>>>0>>0)Kb();if((c[f+12>>2]|0)!=(n|0))Kb()}if((g|0)==(f|0)){c[12266]=c[12266]&~(1<>>0>>0)Kb();h=g+8|0;if((c[h>>2]|0)==(n|0))d=h;else Kb()}else d=g+8|0;c[f+12>>2]=g;c[d>>2]=f;t=n;l=m;break}d=c[a+(24-j)>>2]|0;f=c[a+(12-j)>>2]|0;do if((f|0)==(n|0)){f=16-j|0;g=a+(f+4)|0;h=c[g>>2]|0;if(!h){g=a+f|0;h=c[g>>2]|0;if(!h){k=0;break}}while(1){f=h+20|0;e=c[f>>2]|0;if(e){h=e;g=f;continue}f=h+16|0;e=c[f>>2]|0;if(!e)break;else{h=e;g=f}}if(g>>>0>>0)Kb();else{c[g>>2]=0;k=h;break}}else{e=c[a+(8-j)>>2]|0;if(e>>>0>>0)Kb();h=e+12|0;if((c[h>>2]|0)!=(n|0))Kb();g=f+8|0;if((c[g>>2]|0)==(n|0)){c[h>>2]=f;c[g>>2]=e;k=f;break}else Kb()}while(0);if(d){h=c[a+(28-j)>>2]|0;g=49368+(h<<2)|0;if((n|0)==(c[g>>2]|0)){c[g>>2]=k;if(!k){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Kb();h=d+16|0;if((c[h>>2]|0)==(n|0))c[h>>2]=k;else c[d+20>>2]=k;if(!k){t=n;l=m;break}}f=c[12270]|0;if(k>>>0>>0)Kb();c[k+24>>2]=d;h=16-j|0;g=c[a+h>>2]|0;do if(g)if(g>>>0>>0)Kb();else{c[k+16>>2]=g;c[g+24>>2]=k;break}while(0);h=c[a+(h+4)>>2]|0;if(h)if(h>>>0<(c[12270]|0)>>>0)Kb();else{c[k+20>>2]=h;c[h+24>>2]=k;t=n;l=m;break}else{t=n;l=m}}else{t=n;l=m}}else{t=a;l=b}while(0);i=c[12270]|0;if(q>>>0>>0)Kb();h=a+(b+4)|0;g=c[h>>2]|0;if(!(g&2)){if((q|0)==(c[12272]|0)){m=(c[12269]|0)+l|0;c[12269]=m;c[12272]=t;c[t+4>>2]=m|1;if((t|0)!=(c[12271]|0))return;c[12271]=0;c[12268]=0;return}if((q|0)==(c[12271]|0)){m=(c[12268]|0)+l|0;c[12268]=m;c[12271]=t;c[t+4>>2]=m|1;c[t+m>>2]=m;return}j=(g&-8)+l|0;d=g>>>3;do if(g>>>0>=256){d=c[a+(b+24)>>2]|0;f=c[a+(b+12)>>2]|0;do if((f|0)==(q|0)){g=a+(b+20)|0;h=c[g>>2]|0;if(!h){g=a+(b+16)|0;h=c[g>>2]|0;if(!h){p=0;break}}while(1){f=h+20|0;e=c[f>>2]|0;if(e){h=e;g=f;continue}f=h+16|0;e=c[f>>2]|0;if(!e)break;else{h=e;g=f}}if(g>>>0>>0)Kb();else{c[g>>2]=0;p=h;break}}else{e=c[a+(b+8)>>2]|0;if(e>>>0>>0)Kb();h=e+12|0;if((c[h>>2]|0)!=(q|0))Kb();g=f+8|0;if((c[g>>2]|0)==(q|0)){c[h>>2]=f;c[g>>2]=e;p=f;break}else Kb()}while(0);if(d){h=c[a+(b+28)>>2]|0;g=49368+(h<<2)|0;if((q|0)==(c[g>>2]|0)){c[g>>2]=p;if(!p){c[12267]=c[12267]&~(1<>>0<(c[12270]|0)>>>0)Kb();g=d+16|0;if((c[g>>2]|0)==(q|0))c[g>>2]=p;else c[d+20>>2]=p;if(!p)break}f=c[12270]|0;if(p>>>0>>0)Kb();c[p+24>>2]=d;g=c[a+(b+16)>>2]|0;do if(g)if(g>>>0>>0)Kb();else{c[p+16>>2]=g;c[g+24>>2]=p;break}while(0);f=c[a+(b+20)>>2]|0;if(f)if(f>>>0<(c[12270]|0)>>>0)Kb();else{c[p+20>>2]=f;c[f+24>>2]=p;break}}}else{e=c[a+(b+8)>>2]|0;f=c[a+(b+12)>>2]|0;h=49104+(d<<1<<2)|0;if((e|0)!=(h|0)){if(e>>>0>>0)Kb();if((c[e+12>>2]|0)!=(q|0))Kb()}if((f|0)==(e|0)){c[12266]=c[12266]&~(1<>>0>>0)Kb();g=f+8|0;if((c[g>>2]|0)==(q|0))o=g;else Kb()}else o=f+8|0;c[e+12>>2]=f;c[o>>2]=e}while(0);c[t+4>>2]=j|1;c[t+j>>2]=j;if((t|0)==(c[12271]|0)){c[12268]=j;return}else h=j}else{c[h>>2]=g&-2;c[t+4>>2]=l|1;c[t+l>>2]=l;h=l}g=h>>>3;if(h>>>0<256){e=g<<1;h=49104+(e<<2)|0;d=c[12266]|0;f=1<>2]|0;if(e>>>0<(c[12270]|0)>>>0)Kb();else{r=f;s=e}}else{c[12266]=d|f;r=49104+(e+2<<2)|0;s=h}c[r>>2]=t;c[s+12>>2]=t;c[t+8>>2]=s;c[t+12>>2]=h;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{l=(d+1048320|0)>>>16&8;m=d<>>16&4;m=m<>>16&2;g=14-(k|l|g)+(m<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;f=49368+(g<<2)|0;c[t+28>>2]=g;c[t+20>>2]=0;c[t+16>>2]=0;e=c[12267]|0;d=1<>2]=t;c[t+24>>2]=f;c[t+12>>2]=t;c[t+8>>2]=t;return}d=c[f>>2]|0;if((g|0)==31)e=0;else e=25-(g>>>1)|0;a:do if((c[d+4>>2]&-8|0)!=(h|0)){g=h<>>31<<2)+16|0;f=c[e>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(h|0)){d=f;break a}else{g=g<<1;d=f}}if(e>>>0<(c[12270]|0)>>>0)Kb();c[e>>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}while(0);e=d+8|0;f=c[e>>2]|0;m=c[12270]|0;if(!(d>>>0>=m>>>0&f>>>0>=m>>>0))Kb();c[f+12>>2]=t;c[e>>2]=t;c[t+8>>2]=f;c[t+12>>2]=d;c[t+24>>2]=0;return}function _v(){}function $v(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=b-d-(c>>>0>a>>>0|0)>>>0;return (C=b,a-c>>>0|0)|0}function aw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>c;return a>>>c|(b&(1<>c-32|0}function bw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function cw(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function dw(b,c){b=b|0;c=c|0;var d=0,e=0;e=b+(cw(b)|0)|0;do{a[e+d>>0]=a[c+d>>0];d=d+1|0}while(a[c+(d-1)>>0]|0);return b|0}function ew(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b<>>32-c;return a<>>0;return (C=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function gw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return qb(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function hw(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else gw(b,c,d)|0;return b|0}function iw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>>c;return a>>>c|(b&(1<>>c-32|0}function jw(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function kw(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function lw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=_(d,f)|0;e=a>>>16;d=(c>>>16)+(_(d,e)|0)|0;b=b>>>16;a=_(b,f)|0;return (C=(d>>>16)+(_(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function mw(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=$v(j^a,i^b,j,i)|0;g=C;b=f^j;a=e^i;a=$v((rw(h,g,$v(f^c,e^d,f,e)|0,C,0)|0)^b,C^a,b,a)|0;return a|0}function nw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;b=$v(h^a,g^b,h,g)|0;a=C;rw(b,a,$v(l^d,k^e,l,k)|0,C,j)|0;a=$v(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;b=C;i=f;return (C=b,a)|0}function ow(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;a=lw(e,f)|0;c=C;return (C=(_(b,f)|0)+(_(d,e)|0)+c|c&0,a|0|0)|0}function pw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=rw(a,b,c,d,0)|0;return a|0}function qw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;rw(a,b,d,e,f)|0;i=g;return (C=c[f+4>>2]|0,c[f>>2]|0)|0}function rw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=a;l=b;m=l;k=d;o=e;i=o;if(!m){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(n>>>0)%(k>>>0);c[f+4>>2]=0}l=0;m=(n>>>0)/(k>>>0)>>>0;return (C=l,m)|0}else{if(!g){l=0;m=0;return (C=l,m)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;l=0;m=0;return (C=l,m)|0}}j=(i|0)==0;do if(k){if(!j){h=(aa(i|0)|0)-(aa(m|0)|0)|0;if(h>>>0<=31){g=h+1|0;l=31-h|0;k=h-31>>31;i=g;j=n>>>(g>>>0)&k|m<>>(g>>>0)&k;g=0;h=n<>2]=a|0;c[f+4>>2]=l|b&0;l=0;m=0;return (C=l,m)|0}j=k-1|0;if(j&k){h=(aa(k|0)|0)+33-(aa(m|0)|0)|0;p=64-h|0;l=32-h|0;a=l>>31;b=h-32|0;k=b>>31;i=h;j=l-1>>31&m>>>(b>>>0)|(m<>>(h>>>0))&k;k=k&m>>>(h>>>0);g=n<>>(b>>>0))&a|n<>31;break}if(f){c[f>>2]=j&n;c[f+4>>2]=0}if((k|0)==1){l=l|b&0;m=a|0|0;return (C=l,m)|0}else{a=kw(k|0)|0;l=m>>>(a>>>0)|0;m=m<<32-a|n>>>(a>>>0)|0;return (C=l,m)|0}}else{if(j){if(f){c[f>>2]=(m>>>0)%(k>>>0);c[f+4>>2]=0}l=0;m=(m>>>0)/(k>>>0)>>>0;return (C=l,m)|0}if(!n){if(f){c[f>>2]=0;c[f+4>>2]=(m>>>0)%(i>>>0)}l=0;m=(m>>>0)/(i>>>0)>>>0;return (C=l,m)|0}j=i-1|0;if(!(j&i)){if(f){c[f>>2]=a|0;c[f+4>>2]=j&m|b&0}l=0;m=m>>>((kw(i|0)|0)>>>0);return (C=l,m)|0}h=(aa(i|0)|0)-(aa(m|0)|0)|0;if(h>>>0<=30){k=h+1|0;h=31-h|0;i=k;j=m<>>(k>>>0);k=m>>>(k>>>0);g=0;h=n<>2]=a|0;c[f+4>>2]=l|b&0;l=0;m=0;return (C=l,m)|0}while(0);if(!i){l=h;i=0;h=0}else{m=d|0|0;l=o|e&0;b=fw(m,l,-1,-1)|0;a=C;d=h;h=0;do{p=d;d=g>>>31|d<<1;g=h|g<<1;p=j<<1|p>>>31|0;o=j>>>31|k<<1|0;$v(b,a,p,o)|0;n=C;e=n>>31|((n|0)<0?-1:0)<<1;h=e&1;j=$v(p,o,e&m,(((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1)&l)|0;k=C;i=i-1|0}while((i|0)!=0);l=d;i=0}d=0;if(f){c[f>>2]=j;c[f+4>>2]=k}l=(g|0)>>>31|(l|d)<<1|(d<<1|g>>>31)&0|i;m=(g<<1|0>>>31)&-2|h;return (C=l,m)|0}function sw(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Xb[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function tw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Yb[a&63](b|0,c|0,d|0)|0}function uw(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;Zb[a&1](b|0,c|0,d|0,e|0,f|0,g|0)}function vw(a,b){a=a|0;b=b|0;_b[a&31](b|0)}function ww(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$b[a&1](b|0,c|0,d|0,e|0,f|0)}function xw(a,b,c){a=a|0;b=b|0;c=c|0;return +ac[a&1](b|0,c|0)}function yw(a,b,c){a=a|0;b=b|0;c=+c;bc[a&1](b|0,+c)}function zw(a,b){a=a|0;b=b|0;return +cc[a&1](b|0)}function Aw(a){a=a|0;return dc[a&7]()|0}function Bw(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return ec[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function Cw(a,b,c){a=a|0;b=b|0;c=c|0;fc[a&15](b|0,c|0)}function Dw(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 gc[a&7](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Ew(a,b){a=a|0;b=b|0;return hc[a&127](b|0)|0}function Fw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ic[a&63](b|0,c|0,d|0)}function Gw(a){a=a|0;jc[a&3]()}function Hw(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return kc[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function Iw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return lc[a&31](b|0,c|0,d|0,e|0)|0}function Jw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;mc[a&15](b|0,c|0,d|0,e|0)}function Kw(a,b,c){a=a|0;b=b|0;c=c|0;return nc[a&127](b|0,c|0)|0}function Lw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return oc[a&1](b|0,c|0,+d)|0}function Mw(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 pc[a&31](b|0,c|0,d|0,e|0,f|0)|0}function Nw(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;da(0);return 0}function Ow(a,b,c){a=a|0;b=b|0;c=c|0;ea(1);return 0}function Pw(a,b,c){a=a|0;b=b|0;c=c|0;return pb(a|0,b|0,c|0)|0}function Qw(a,b,c){a=a|0;b=b|0;c=c|0;return Ub(a|0,b|0,c|0)|0}function Rw(a,b,c){a=a|0;b=b|0;c=c|0;return Bb(a|0,b|0,c|0)|0}function Sw(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(2)}function Tw(a){a=a|0;ga(3)}function Uw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ha(4)}function Vw(a,b){a=a|0;b=b|0;ia(5);return 0.0}function Ww(a,b){a=a|0;b=+b;ja(6)}function Xw(a){a=a|0;ka(7);return 0.0}function Yw(){la(8);return 0}function Zw(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ma(9);return 0}function _w(a,b){a=a|0;b=b|0;na(10)}function $w(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(11);return 0}function ax(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 Qb(a|0,b|0,c|0,d|0,e|0,f|0)|0}function bx(a){a=a|0;pa(12);return 0}function cx(a){a=a|0;return Tb(a|0)|0}function dx(a){a=a|0;return rb(a|0)|0}function ex(a){a=a|0;return db(a|0)|0}function fx(a,b,c){a=a|0;b=b|0;c=c|0;qa(13)}function gx(){ra(14)}function hx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;sa(15);return 0}function ix(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ta(16);return 0}function jx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ua(17)}function kx(a,b){a=a|0;b=b|0;va(18);return 0}function lx(a,b){a=a|0;b=b|0;return ab(a|0,b|0)|0}function mx(a,b){a=a|0;b=b|0;return Sb(a|0,b|0)|0}function nx(a,b){a=a|0;b=b|0;return Eb(a|0,b|0)|0}function ox(a,b){a=a|0;b=b|0;return bb(a|0,b|0)|0}function px(a,b){a=a|0;b=b|0;return vb(a|0,b|0)|0}function qx(a,b){a=a|0;b=b|0;return tb(a|0,b|0)|0}function rx(a,b){a=a|0;b=b|0;return wb(a|0,b|0)|0}function sx(a,b){a=a|0;b=b|0;return Pb(a|0,b|0)|0}function tx(a,b,c){a=a|0;b=b|0;c=+c;wa(19);return 0}function ux(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xa(20);return 0} -// EMSCRIPTEN_END_FUNCS -var Xb=[Nw,qe];var Yb=[Ow,hi,mi,oi,ri,ti,me,se,rf,Tf,Uf,Bf,Af,Df,Ke,zf,Cf,yf,te,Mf,lf,Ce,Bc,Ff,Je,af,bg,Uc,Ci,Hi,Ki,ak,gk,ok,Pw,Qw,Rw,qk,xp,yp,wp,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow,Ow];var Zb=[Sw,Fd];var _b=[Tw,Sc,Xe,uf,Dd,Nd,Md,Nc,Gi,Oi,Pi,Ri,Wi,_i,Bj,Cj,Dj,Fj,Hj,kk,mo,up,ml,Tw,Tw,Tw,Tw,Tw,Tw,Tw,Tw,Tw];var $b=[Uw,xd];var ac=[Vw,_d];var bc=[Ww,yd];var cc=[Xw,pd];var dc=[Yw,df,ff,Mc,gf,ef,rk,Yw];var ec=[Zw,Xf,wf,Zw];var fc=[_w,ni,Bd,Jd,Kd,Ld,_c,Ii,Ni,nu,ou,_w,_w,_w,_w,_w];var gc=[$w,We,Rf,ke,ax,$w,$w,$w];var hc=[bx,Ud,ue,nf,pf,Vd,bf,cf,Wd,ye,ad,Jf,Oe,If,hd,id,Vf,mf,Pc,jd,Od,of,Pd,ld,nd,od,qd,rd,De,md,sd,td,ud,vd,kd,Ie,Fe,Oc,Kc,Yf,Gc,Jc,Qd,gd,dd,fd,ed,Cc,Ac,jf,Kf,$e,qf,kf,Lf,Ae,ze,Qe,Re,Rc,zi,Fi,Ji,Qi,Ti,Ui,Vi,Zj,hk,ik,cx,dx,ex,sk,wk,Tk,cl,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx,bx];var ic=[fx,li,zd,Ad,Cd,Zc,Li,Xi,Yi,Zi,$i,aj,bj,cj,dj,ej,fj,gj,hj,ij,jj,kj,lj,mj,nj,oj,pj,qj,rj,sj,tj,uj,vj,wj,xj,yj,zj,Aj,Ej,Gj,Ij,Jj,Kj,Lj,Mj,Nj,Oj,Pj,Qj,Rj,Sj,Tj,Uj,Vj,Wj,Xj,Yj,Ph,fx,fx,fx,fx,fx,fx];var jc=[gx,Wf,Se,gx];var kc=[hx,vf,xf,Ee];var lc=[ix,ii,ji,ne,Ye,Yc,Ge,He,_f,Of,Ec,bd,cg,Xc,Pe,jk,nk,zc,zh,Bh,Fh,Qh,Xm,$p,ix,ix,ix,ix,ix,ix,ix,ix];var mc=[jx,sf,wd,Ed,Gd,Hd,Id,Td,Mi,lg,jx,jx,jx,jx,jx,jx];var nc=[kx,ki,pi,qi,si,ui,vi,wi,xi,yi,Rd,oe,we,ve,tf,Xd,Yd,Zd,he,ie,$d,ae,fe,ge,be,de,ee,ce,_e,Sd,Wc,Nf,Pf,Tc,xe,Vc,Ic,$f,Zf,Be,cd,Lc,Ef,Hf,dg,eg,$c,ag,Qc,Le,Di,Ei,Si,bk,ck,dk,ek,fk,lk,lx,mx,nx,ox,px,qx,pk,rx,sx,tk,uk,vk,xk,yk,zk,Lh,tp,zm,Am,ls,ms,Vs,Ws,cu,du,ku,lu,mu,lv,Ov,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx,kx];var oc=[tx,le];var pc=[ux,gi,je,pe,re,Qf,Sf,Me,Te,Ue,Ne,Ve,Ze,Fc,Gf,Ai,Bi,_j,$j,mk,Ak,Qn,Rn,ux,ux,ux,ux,ux,ux,ux,ux,ux];return{_i64Subtract:$v,_strcat:dw,_free:Tv,_main:yc,_realloc:Uv,_i64Add:fw,_memmove:hw,_bitshift64Ashr:aw,_strlen:cw,_memset:bw,_malloc:Sv,_memcpy:gw,_bitshift64Lshr:iw,_llvm_bswap_i32:jw,_bitshift64Shl:ew,runPostSets:_v,stackAlloc:qc,stackSave:rc,stackRestore:sc,setThrew:tc,setTempRet0:wc,getTempRet0:xc,dynCall_iiiiiiii:sw,dynCall_iiii:tw,dynCall_viiiiii:uw,dynCall_vi:vw,dynCall_viiiii:ww,dynCall_dii:xw,dynCall_vid:yw,dynCall_di:zw,dynCall_i:Aw,dynCall_iiiiiiiiii:Bw,dynCall_vii:Cw,dynCall_iiiiiii:Dw,dynCall_ii:Ew,dynCall_viii:Fw,dynCall_v:Gw,dynCall_iiiiiiiii:Hw,dynCall_iiiii:Iw,dynCall_viiii:Jw,dynCall_iii:Kw,dynCall_iiid:Lw,dynCall_iiiiii:Mw}}) -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var real__i64Subtract=asm["_i64Subtract"];asm["_i64Subtract"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Subtract.apply(null,arguments)});var real__strcat=asm["_strcat"];asm["_strcat"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__strcat.apply(null,arguments)});var real__main=asm["_main"];asm["_main"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__main.apply(null,arguments)});var real__realloc=asm["_realloc"];asm["_realloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__realloc.apply(null,arguments)});var real__i64Add=asm["_i64Add"];asm["_i64Add"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Add.apply(null,arguments)});var real__memmove=asm["_memmove"];asm["_memmove"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__memmove.apply(null,arguments)});var real__bitshift64Ashr=asm["_bitshift64Ashr"];asm["_bitshift64Ashr"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Ashr.apply(null,arguments)});var real__strlen=asm["_strlen"];asm["_strlen"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__strlen.apply(null,arguments)});var real__bitshift64Lshr=asm["_bitshift64Lshr"];asm["_bitshift64Lshr"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Lshr.apply(null,arguments)});var real__llvm_bswap_i32=asm["_llvm_bswap_i32"];asm["_llvm_bswap_i32"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__llvm_bswap_i32.apply(null,arguments)});var real__bitshift64Shl=asm["_bitshift64Shl"];asm["_bitshift64Shl"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Shl.apply(null,arguments)});var real_runPostSets=asm["runPostSets"];asm["runPostSets"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_runPostSets.apply(null,arguments)});var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _strcat=Module["_strcat"]=asm["_strcat"];var _free=Module["_free"]=asm["_free"];var _main=Module["_main"]=asm["_main"];var _realloc=Module["_realloc"]=asm["_realloc"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memmove=Module["_memmove"]=asm["_memmove"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _strlen=Module["_strlen"]=asm["_strlen"];var _memset=Module["_memset"]=asm["_memset"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=asm["dynCall_iiiiiiiiii"];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_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiid=Module["dynCall_iiid"]=asm["dynCall_iiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=(function(){var goog={math:{}};goog.math.Long=(function(low,high){this.low_=low|0;this.high_=high|0});goog.math.Long.IntCache_={};goog.math.Long.fromInt=(function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj){return cachedObj}}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128){goog.math.Long.IntCache_[value]=obj}return obj});goog.math.Long.fromNumber=(function(value){if(isNaN(value)||!isFinite(value)){return goog.math.Long.ZERO}else if(value<=-goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MIN_VALUE}else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MAX_VALUE}else if(value<0){return goog.math.Long.fromNumber(-value).negate()}else{return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)}});goog.math.Long.fromBits=(function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)});goog.math.Long.fromString=(function(str,opt_radix){if(str.length==0){throw Error("number format error: empty string")}var radix=opt_radix||10;if(radix<2||36=0){throw Error('number format error: interior "-" character: '+str)}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_});goog.math.Long.prototype.getNumBitsAbs=(function(){if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){return 64}else{return this.negate().getNumBitsAbs()}}else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--){if((val&1<0});goog.math.Long.prototype.greaterThanOrEqual=(function(other){return this.compare(other)>=0});goog.math.Long.prototype.compare=(function(other){if(this.equals(other)){return 0}var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg){return-1}if(!thisNeg&&otherNeg){return 1}if(this.subtract(other).isNegative()){return-1}else{return 1}});goog.math.Long.prototype.negate=(function(){if(this.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.MIN_VALUE}else{return this.not().add(goog.math.Long.ONE)}});goog.math.Long.prototype.add=(function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.subtract=(function(other){return this.add(other.negate())});goog.math.Long.prototype.multiply=(function(other){if(this.isZero()){return goog.math.Long.ZERO}else if(other.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}else if(other.equals(goog.math.Long.MIN_VALUE)){return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().multiply(other.negate())}else{return this.negate().multiply(other).negate()}}else if(other.isNegative()){return this.multiply(other.negate()).negate()}if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_)){return goog.math.Long.fromNumber(this.toNumber()*other.toNumber())}var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.div=(function(other){if(other.isZero()){throw Error("division by zero")}else if(this.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE)){return goog.math.Long.MIN_VALUE}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ONE}else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO)){return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE}else{var rem=this.subtract(other.multiply(approx));var result=approx.add(rem.div(other));return result}}}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().div(other.negate())}else{return this.negate().div(other).negate()}}else if(other.isNegative()){return this.div(other.negate()).negate()}var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero()){approxRes=goog.math.Long.ONE}res=res.add(approxRes);rem=rem.subtract(approxRem)}return res});goog.math.Long.prototype.modulo=(function(other){return this.subtract(this.div(other).multiply(other))});goog.math.Long.prototype.not=(function(){return goog.math.Long.fromBits(~this.low_,~this.high_)});goog.math.Long.prototype.and=(function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)});goog.math.Long.prototype.or=(function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)});goog.math.Long.prototype.xor=(function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)});goog.math.Long.prototype.shiftLeft=(function(numBits){numBits&=63;if(numBits==0){return this}else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<>>32-numBits)}else{return goog.math.Long.fromBits(0,low<>>numBits|high<<32-numBits,high>>numBits)}else{return goog.math.Long.fromBits(high>>numBits-32,high>=0?0:-1)}}});goog.math.Long.prototype.shiftRightUnsigned=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32){return goog.math.Long.fromBits(high,0)}else{return goog.math.Long.fromBits(high>>>numBits-32,0)}}});var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<>this.DB-sh}else this[this.t-1]|=x<=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<0){if(p>p)>0){m=true;r=int2char(d)}while(i>=0){if(p>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<>bs;for(var i=ds+1;i>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i=0)r[i]=0;for(i=0;i=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<1?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&1<0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:(function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative()){ret=x.negate()}else{ret=x}HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_}),ensureTemps:(function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=new BigInteger}),lh2bignum:(function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d}),stringify:(function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret}),fromString:(function(str,base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error"})};return Wrapper})();if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");function applyMemoryInitializer(data){if(data.byteLength)data=new Uint8Array(data);for(var i=0;i0){Module.printErr("run() called, but dependencies remain, so not running");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(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}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){if(Module["noExitRuntime"]){Module.printErr("exit("+status+") called, but noExitRuntime, so not exiting (you can use emscripten_force_exit, if you want to force a true shutdown)");return}ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status);if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}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="";var output="abort("+what+") at "+stackTrace()+extra;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() diff --git a/implementation-contributed/v8/mjsunit/asm/switch.js b/implementation-contributed/v8/mjsunit/asm/switch.js deleted file mode 100644 index d02e661eeb7..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/switch.js +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - - -var switch1 = (function(stdlib, foreign, heap) { - "use asm"; - function switch1(i) { - i = i|0; - switch (i | 0) { - case 0: return 1; - case 1: return 2; - default: return i|0; - } - return i | 0; - } - return { switch1: switch1 }; -})(stdlib, foreign, heap).switch1; - -assertEquals(1, switch1(0)); -assertEquals(2, switch1(1)); -for (var i = -2147483648; i < 2147483648; i += 3999773) { - assertEquals(i, switch1(i)); -} - - -var switch2 = (function(stdlib, foreign, heap) { - "use asm"; - function switch2(i) { - i = i|0; - var j = 0; - switch (i | 0) { - case 0: j = 1; break; - case 1: j = 2; break; - case 2: j = 3; break; - default: j = i|0; break; - } - return j|0; - } - return { switch2: switch2 }; -})(stdlib, foreign, heap).switch2; - -assertEquals(1, switch2(0)); -assertEquals(2, switch2(1)); -assertEquals(3, switch2(2)); -for (var i = -2147483648; i < 2147483648; i += 3999773) { - assertEquals(i, switch2(i)); -} - - -var switch3 = (function(stdlib, foreign, heap) { - "use asm"; - function switch3(i) { - i = i|0; - var j = 0; - switch (i | 0) { - case 0: - case 1: j = 1; break; - case 2: - case 3: j = 2; break; - case 4: - case 5: j = 3; break; - default: j = 0; break; - } - return j|0; - } - return { switch3: switch3 }; -})(stdlib, foreign, heap).switch3; - -assertEquals(1, switch3(0)); -assertEquals(1, switch3(1)); -assertEquals(2, switch3(2)); -assertEquals(2, switch3(3)); -assertEquals(3, switch3(4)); -assertEquals(3, switch3(5)); -for (var i = -2147483648; i < 2147483648; i += 3999773) { - assertEquals(0, switch3(i)); -} - - -var switch4 = (function(stdlib, foreign, heap) { - "use asm"; - function switch4(i) { - i = i|0; - switch (i | 0) { - case -1: - case 1: - return 0; - - case -2: - case 2: - return 1; - - case -3: - case 3: - return 2; - - case -8: - case 8: - return 3; - - default: - return 4; - } - return 0; // needed for validation - } - return { switch4: switch4 }; -})(stdlib, foreign, heap).switch4; - -assertEquals(4, switch4(0)); -assertEquals(0, switch4(-1)); -assertEquals(0, switch4(1)); -assertEquals(1, switch4(-2)); -assertEquals(1, switch4(2)); -assertEquals(3, switch4(-8)); -assertEquals(3, switch4(8)); -assertEquals(4, switch4(-123456789)); -assertEquals(4, switch4(123456789)); diff --git a/implementation-contributed/v8/mjsunit/asm/uint32-less-than-shift.js b/implementation-contributed/v8/mjsunit/asm/uint32-less-than-shift.js deleted file mode 100644 index fb201bb5f00..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/uint32-less-than-shift.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - 'use asm'; - - function foo1(i1) { - i1 = i1 | 0; - var i10 = 0; - i10 = (i1 >> 5) | 0; - if (i10 >>> 0 < 5) { - return 1; - } else { - return 0; - } - return 0; - } - - function foo2(i1) { - i1 = i1 | 0; - var i10 = 0; - i10 = ((i1 | 0) / 32) | 0; - if (i10 >>> 0 < 5) { - return 1; - } else { - return 0; - } - return 0; - } - - function foo3(i1) { - i1 = i1 | 0; - var i10 = 0; - i10 = (i1 + 32 | 0) / 32 | 0; - if (i10 >>> 0 < 5) { - return 1; - } else { - return 0; - } - return 0; - } - return {foo1: foo1, foo2: foo2, foo3: foo3}; -} - -var m = Module(this, {}, undefined); - -for (var i = 0; i < 4 * 32; i++) { - assertEquals(1, m.foo1(i)); - assertEquals(1, m.foo2(i)); - assertEquals(1, m.foo3(i)); -} - -for (var i = 4 * 32; i < 5 * 32; i++) { - assertEquals(1, m.foo1(i)); - assertEquals(1, m.foo2(i)); - assertEquals(0, m.foo3(i)); -} - -for (var i = 5 * 32; i < 10 * 32; i++) { - assertEquals(0, m.foo1(i)); - assertEquals(0, m.foo2(i)); - assertEquals(0, m.foo3(i)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/uint32div.js b/implementation-contributed/v8/mjsunit/asm/uint32div.js deleted file mode 100644 index 04b31a6dbbb..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/uint32div.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -function Uint32Div(divisor) { - var name = "div_"; - name += divisor; - var m = eval( - 'function Module(stdlib, foreign, heap) {\n' + - ' "use asm";\n' + - ' function ' + name + '(dividend) {\n' + - ' dividend = dividend | 0;\n' + - ' return ((dividend >>> 0) / ' + divisor + ') | 0;\n' + - ' }\n' + - ' return { f: ' + name + '}\n' + - '}; Module'); - return m(stdlib, foreign, heap).f; -} - -var divisors = [0, 1, 3, 4, 10, 42, 64, 100, 1024, 2147483647, 4294967295]; -for (var i in divisors) { - var divisor = divisors[i]; - var div = Uint32Div(divisor); - for (var dividend = 0; dividend < 4294967296; dividend += 3999773) { - assertEquals((dividend / divisor) | 0, div(dividend)); - } -} - -var div = (function(stdlib, foreign, heap) { - "use asm"; - function div(dividend, divisor) { - dividend = dividend | 0; - divisor = divisor | 0; - return (dividend >>> 0) / (divisor >>> 0) | 0; - } - return {div: div}; -})(stdlib, foreign, heap).div; - -for (var i in divisors) { - var divisor = divisors[i]; - for (var dividend = 0; dividend < 4294967296; dividend += 3999773) { - assertEquals((dividend >>> 0) / (divisor >>> 0) | 0, - div(dividend, divisor)); - } -} diff --git a/implementation-contributed/v8/mjsunit/asm/uint32mod-constant.js b/implementation-contributed/v8/mjsunit/asm/uint32mod-constant.js deleted file mode 100644 index 562dcd11f92..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/uint32mod-constant.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -function Uint32Mod(divisor) { - var name = "mod_"; - name += divisor; - var m = eval( - 'function Module(stdlib, foreign, heap) {\n' + - ' "use asm";\n' + - ' function ' + name + '(dividend) {\n' + - ' dividend = dividend | 0;\n' + - ' return ((dividend >>> 0) % ' + divisor + ') | 0;\n' + - ' }\n' + - ' return { f: ' + name + '}\n' + - '}; Module'); - return m(stdlib, foreign, heap).f; -} - -var divisors = [0, 1, 3, 4, 10, 42, 64, 100, 1024, 2147483647, 4294967295]; -for (var i in divisors) { - var divisor = divisors[i]; - var mod = Uint32Mod(divisor); - for (var dividend = 0; dividend < 4294967296; dividend += 3999773) { - assertEquals((dividend % divisor) | 0, mod(dividend)); - } -} diff --git a/implementation-contributed/v8/mjsunit/asm/uint32mod.js b/implementation-contributed/v8/mjsunit/asm/uint32mod.js deleted file mode 100644 index 137e64d7f91..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/uint32mod.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -var mod = (function Module(stdlib, foreign, heap) { - "use asm"; - function mod(dividend, divisor) { - dividend = dividend | 0; - divisor = divisor | 0; - return ((dividend >>> 0) % (divisor >>> 0)) | 0; - } - return { mod: mod }; -})(stdlib, foreign, heap).mod; - -var divisors = [0, 1, 3, 4, 10, 42, 64, 100, 1024, 2147483647, 4294967295]; -for (var i in divisors) { - var divisor = divisors[i]; - for (var dividend = 0; dividend < 4294967296; dividend += 3999773) { - assertEquals((dividend % divisor) | 0, mod(dividend, divisor)); - } -} diff --git a/implementation-contributed/v8/mjsunit/asm/uint8array-outofbounds.js b/implementation-contributed/v8/mjsunit/asm/uint8array-outofbounds.js deleted file mode 100644 index a4ab6bb4f08..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/uint8array-outofbounds.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM8 = new stdlib.Uint8Array(heap); - function load(i) { - i = i|0; - i = MEM8[i] | 0; - return i | 0; - } - function store(i, v) { - i = i|0; - v = v|0; - MEM8[i] = v; - } - return { load: load, store: store }; -} - -var m = Module(this, {}, new ArrayBuffer(1)); - -m.store(0, 255); -for (var i = 1; i < 64; ++i) { - m.store(i * 1 * 32 * 1024, i); -} -assertEquals(255, m.load(0)); -for (var i = 1; i < 64; ++i) { - assertEquals(0, m.load(i * 1 * 32 * 1024)); -} diff --git a/implementation-contributed/v8/mjsunit/asm/word32and.js b/implementation-contributed/v8/mjsunit/asm/word32and.js deleted file mode 100644 index 392dba3c849..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/word32and.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -function Word32And(rhs) { - var name = "and_0x" + Number(rhs).toString(16); - var m = eval( - 'function Module(stdlib, foreign, heap) {\n' + - ' "use asm";\n' + - ' function ' + name + '(lhs) {\n' + - ' lhs = lhs | 0;\n' + - ' return (lhs & 0x' + Number(rhs).toString(16) + ') | 0;\n' + - ' }\n' + - ' return { f: ' + name + '}\n' + - '}; Module'); - return m(stdlib, foreign, heap).f; -} - -var masks = [0xffffffff, 0xf0f0f0f0, 0x80ffffff, 0x07f77f0f, 0xdeadbeef, - 0x0fffff00, 0x0ff0, 0xff, 0x00]; -for (var i in masks) { - var rhs = masks[i]; - var and = Word32And(rhs); - for (var lhs = -2147483648; lhs < 2147483648; lhs += 3999773) { - assertEquals(lhs & rhs, and(lhs)); - } -} diff --git a/implementation-contributed/v8/mjsunit/asm/word32ror.js b/implementation-contributed/v8/mjsunit/asm/word32ror.js deleted file mode 100644 index 6891cd124f3..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/word32ror.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -var rol = (function Module(stdlib, foreign, heap) { - "use asm"; - function rol(x, y) { - x = x | 0; - y = y | 0; - return (x << y) | (x >>> (32 - y)) | 0; - } - return { rol: rol }; -})(stdlib, foreign, heap).rol; - -assertEquals(10, rol(10, 0)); -assertEquals(2, rol(1, 1)); -assertEquals(0x40000000, rol(1, 30)); -assertEquals(-0x80000000, rol(1, 31)); - -var ror = (function Module(stdlib, foreign, heap) { - "use asm"; - function ror(x, y) { - x = x | 0; - y = y | 0; - return (x << (32 - y)) | (x >>> y) | 0; - } - return { ror: ror }; -})(stdlib, foreign, heap).ror; - -assertEquals(10, ror(10, 0)); -assertEquals(-0x80000000, ror(1, 1)); -assertEquals(0x40000000, ror(1, 2)); -assertEquals(2, ror(1, 31)); diff --git a/implementation-contributed/v8/mjsunit/asm/zero-extend.js b/implementation-contributed/v8/mjsunit/asm/zero-extend.js deleted file mode 100644 index 3e34aac88bd..00000000000 --- a/implementation-contributed/v8/mjsunit/asm/zero-extend.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - - -var zext8 = (function Module(stdlib, foreign, heap) { - "use asm"; - function zext8(i) { - i = i | 0; - return (i & 0xff) | 0; - } - return { zext8: zext8 }; -})(stdlib, foreign, buffer).zext8; - -assertEquals(0, zext8(0)); -assertEquals(0, zext8(0x100)); -assertEquals(0xff, zext8(-1)); -assertEquals(0xff, zext8(0xff)); - - -var zext16 = (function Module(stdlib, foreign, heap) { - "use asm"; - function zext16(i) { - i = i | 0; - return (i & 0xffff) | 0; - } - return { zext16: zext16 }; -})(stdlib, foreign, buffer).zext16; - -assertEquals(0, zext16(0)); -assertEquals(0, zext16(0x10000)); -assertEquals(0xffff, zext16(-1)); -assertEquals(0xffff, zext16(0xffff)); diff --git a/implementation-contributed/v8/mjsunit/async-hooks/api-methods.js b/implementation-contributed/v8/mjsunit/async-hooks/api-methods.js deleted file mode 100644 index c013b7a50a9..00000000000 --- a/implementation-contributed/v8/mjsunit/async-hooks/api-methods.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-async-hooks - -// Check for invalid arguments handling -(function() { - assertTrue(async_hooks.hasOwnProperty('createHook'), - 'Async hooks missing createHook method'); - - assertThrows(() => async_hooks.createHook()); - assertThrows(() => async_hooks.createHook(123)); - assertThrows(() => async_hooks.createHook('str')); -})(); - -// Check for correct API methods -(function() { - assertTrue(async_hooks.hasOwnProperty('executionAsyncId'), - 'Async hooks missing executionAsyncId method'); - assertTrue(async_hooks.hasOwnProperty('triggerAsyncId'), - 'Async hooks missing triggerAsyncId method'); - - let ah = async_hooks.createHook({}); - assertTrue(ah.hasOwnProperty('enable'), 'Async hooks missing enable method'); - assertTrue(ah.hasOwnProperty('disable'), - 'Async hooks missing disable method'); -})(); - -// Check for correct enabling/disabling of async hooks -(function() { - let storedPromise; - let ah = async_hooks.createHook({ - init(asyncId, type, triggerAsyncId, resource) { - storedPromise = resource.promise || resource; - } - }); - ah.enable(); - - let createdPromise = new Promise(function(resolve) { - resolve(42); - }); - assertSame(storedPromise, createdPromise, - "Async hooks weren't enabled correctly"); - ah.disable(); - createdPromise = Promise.resolve(52); - assertNotSame(storedPromise, createdPromise, - "Async hooks weren't disabled correctly"); - ah.enable(); - createdPromise = Promise.resolve(62); - assertSame(storedPromise, createdPromise, - "Async hooks weren't enabled correctly"); -})(); diff --git a/implementation-contributed/v8/mjsunit/async-hooks/async-await-tree.js b/implementation-contributed/v8/mjsunit/async-hooks/async-await-tree.js deleted file mode 100644 index 230c40e4e03..00000000000 --- a/implementation-contributed/v8/mjsunit/async-hooks/async-await-tree.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-async-hooks --harmony-await-optimization - -// Check for async/await asyncIds relation -(function() { - let asyncIds = [], triggerIds = []; - let ah = async_hooks.createHook({ - init(asyncId, type, triggerAsyncId, resource) { - if (type !== 'PROMISE') { - return; - } - asyncIds.push(asyncId); - triggerIds.push(triggerAsyncId); - }, - }); - ah.enable(); - - // Simplified version of Node.js util.promisify(setTimeout), - // but d8 ignores the timeout of setTimeout. - function sleep0() { - const promise = new Promise(function(resolve, reject) { - try { - setTimeout((err, ...values) => { - if (err) { - reject(err); - } else { - resolve(values[0]); - } - }, 0); - } catch (err) { - reject(err); - } - }); - return promise; - } - - async function foo() { - await sleep0(); - } - - assertPromiseResult( - foo().then(function() { - assertEquals(triggerIds[2], asyncIds[1]); - assertEquals(triggerIds[3], asyncIds[0]); - assertEquals(triggerIds[4], asyncIds[3]); - assertEquals(triggerIds[6], asyncIds[5]); - })); -})(); diff --git a/implementation-contributed/v8/mjsunit/async-hooks/chained-promises.js b/implementation-contributed/v8/mjsunit/async-hooks/chained-promises.js deleted file mode 100644 index a2746dcf0d9..00000000000 --- a/implementation-contributed/v8/mjsunit/async-hooks/chained-promises.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-async-hooks - -// Check for chained promises asyncIds relation -(function() { - let asyncIds = [], triggerIds = []; - let ah = async_hooks.createHook({ - init(asyncId, type, triggerAsyncId, resource) { - asyncIds.push(asyncId); - triggerIds.push(triggerAsyncId); - }, - }); - ah.enable(); - let createdPromise = new Promise(function(resolve) { - resolve(42); - }).then(function() { - assertEquals(3, asyncIds.length, 'Exactly 3 promises should be inited'); - assertEquals(3, triggerIds.length, 'Exactly 3 promises should be inited'); - assertEquals(triggerIds[1], asyncIds[0], - "Parent promise asyncId doesn't correspond to child triggerAsyncId"); - }).catch((err) => { - setTimeout(() => { - throw err; - }, 0); - }); -})(); diff --git a/implementation-contributed/v8/mjsunit/async-hooks/execution-order.js b/implementation-contributed/v8/mjsunit/async-hooks/execution-order.js deleted file mode 100644 index 7eb055e708e..00000000000 --- a/implementation-contributed/v8/mjsunit/async-hooks/execution-order.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-async-hooks - -// Check for correct execution of available hooks and asyncIds -(function() { - let calledHooks = []; - let rootAsyncId = 0; - - let ah = async_hooks.createHook({ - init: function init(asyncId, type, triggerAsyncId, resource) { - if (type !== 'PROMISE') { - return; - } - if (triggerAsyncId === 0) { - rootAsyncId = asyncId; - } - calledHooks.push(['init', asyncId]); - }, - promiseResolve: function promiseResolve(asyncId) { - calledHooks.push(['resolve', asyncId]); - }, - before: function before(asyncId) { - calledHooks.push(['before', asyncId]); - }, - after: function after(asyncId) { - calledHooks.push(['after', asyncId]); - }, - }); - ah.enable(); - - new Promise(function(resolve) { - resolve(42); - }).then(function() { - // [hook type, async Id] - const expectedHooks = [ - ['init', rootAsyncId], // the promise that we create initially - ['resolve', rootAsyncId], - ['init', rootAsyncId + 1], // the chained promise with the assertions - ['init', rootAsyncId + 2], // the chained promise from the catch block - ['before', rootAsyncId + 1], - // ['after', rootAsyncId + 1] will get called after the assertions - ]; - - assertArrayEquals(expectedHooks, calledHooks, - 'Mismatch in async hooks execution order'); - }).catch((err) => { - setTimeout(() => { - throw err; - }, 0); - }); -})(); diff --git a/implementation-contributed/v8/mjsunit/async-hooks/promises-async-await.js b/implementation-contributed/v8/mjsunit/async-hooks/promises-async-await.js deleted file mode 100644 index 27148e7cd8e..00000000000 --- a/implementation-contributed/v8/mjsunit/async-hooks/promises-async-await.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-async-hooks - -// Check for executionAsyncId/triggerAsyncId when chained promises and -// async/await are combined -(function() { - let p; - let outerExecutionAsyncId = -1, outerTriggerAsyncId = -1; - - function inIrrelevantContext(resolve) { - resolve(42); - } - - function inContext1(foo) { - foo(); - } - - function inContext2(foo) { - foo(); - } - - outerExecutionAsyncId = async_hooks.executionAsyncId(); - outerTriggerAsyncId = async_hooks.triggerAsyncId(); - - inContext1(() => { - p = new Promise(resolve => { - assertEquals(outerExecutionAsyncId, async_hooks.executionAsyncId()); - assertEquals(outerTriggerAsyncId, async_hooks.triggerAsyncId()); - inIrrelevantContext(resolve); - }).then(() => { - assertNotEquals(outerExecutionAsyncId, async_hooks.executionAsyncId()); - assertNotEquals(outerTriggerAsyncId, async_hooks.triggerAsyncId()); - }).catch((err) => { - setTimeout(() => { - throw err; - }, 0); - }); - }); - - inContext2(async () => { - assertEquals(outerExecutionAsyncId, async_hooks.executionAsyncId()); - assertEquals(outerTriggerAsyncId, async_hooks.triggerAsyncId()); - await p; - assertNotEquals(outerExecutionAsyncId, async_hooks.executionAsyncId()); - assertNotEquals(outerTriggerAsyncId, async_hooks.triggerAsyncId()); - }); - -})(); diff --git a/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-1.js b/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-1.js deleted file mode 100644 index 42482595ccb..00000000000 --- a/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-1.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --async-stack-traces - -// Check that Error.prepareStackTrace doesn't expose strict -// mode closures, even in the presence of async frames. -Error.prepareStackTrace = (e, frames) => { - assertEquals(two, frames[0].getFunction()); - assertEquals(two.name, frames[0].getFunctionName()); - assertEquals(undefined, frames[1].getFunction()); - assertEquals(one.name, frames[1].getFunctionName()); - return frames; -}; - -async function one(x) { - "use strict"; - return await two(x); -} - -async function two(x) { - try { - x = await x; - throw new Error(); - } catch (e) { - return e.stack; - } -} - -one(1).catch(e => setTimeout(_ => {throw e}, 0)); diff --git a/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-2.js b/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-2.js deleted file mode 100644 index 8126a83dc91..00000000000 --- a/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-2.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --async-stack-traces - -// Check that Error.prepareStackTrace doesn't expose strict -// mode closures, even in the presence of async frames. -Error.prepareStackTrace = (e, frames) => { - assertEquals(undefined, frames[0].getFunction()); - assertEquals(two.name, frames[0].getFunctionName()); - assertEquals(undefined, frames[1].getFunction()); - assertEquals(one.name, frames[1].getFunctionName()); - return frames; -}; - -async function one(x) { - return await two(x); -} - -async function two(x) { - "use strict"; - try { - x = await x; - throw new Error(); - } catch (e) { - return e.stack; - } -} - -one(1).catch(e => setTimeout(_ => {throw e}, 0)); diff --git a/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-3.js b/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-3.js deleted file mode 100644 index 429b0f64c36..00000000000 --- a/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-3.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --async-stack-traces - -// Check that Error.prepareStackTrace properly marks async frames. -Error.prepareStackTrace = (e, frames) => { - assertEquals(two, frames[0].getFunction()); - assertEquals(two.name, frames[0].getFunctionName()); - assertFalse(frames[0].isAsync()); - assertEquals(two, frames[1].getFunction()); - assertEquals(one.name, frames[1].getFunctionName()); - assertTrue(frames[1].isAsync()); - return frames; -}; - -async function one(x) { - return await two(x); -} - -async function two(x) { - try { - x = await x; - throw new Error(); - } catch (e) { - return e.stack; - } -} - -one(1).catch(e => setTimeout(_ => {throw e}, 0)); diff --git a/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-4.js b/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-4.js deleted file mode 100644 index a4484cdc890..00000000000 --- a/implementation-contributed/v8/mjsunit/async-stack-traces-prepare-stacktrace-4.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --async-stack-traces - -// Check that Error.prepareStackTrace properly exposes async -// stack frames and special Promise.all() stack frames. -Error.prepareStackTrace = (e, frames) => { - assertEquals(two, frames[0].getFunction()); - assertEquals(two.name, frames[0].getFunctionName()); - assertEquals(null, frames[0].getPromiseIndex()); - assertFalse(frames[0].isAsync()); - assertEquals(Promise.all, frames[1].getFunction()); - assertEquals(0, frames[1].getPromiseIndex()); - assertTrue(frames[1].isAsync()); - assertTrue(frames[1].isPromiseAll()); - assertEquals(one, frames[2].getFunction()); - assertEquals(one.name, frames[2].getFunctionName()); - assertEquals(null, frames[2].getPromiseIndex()); - assertTrue(frames[2].isAsync()); - assertFalse(frames[2].isPromiseAll()); - return frames; -}; - -async function one(x) { - return await Promise.all([two(x)]); -} - -async function two(x) { - try { - x = await x; - throw new Error(); - } catch (e) { - return e.stack; - } -} - -one(1).catch(e => setTimeout(_ => {throw e}, 0)); diff --git a/implementation-contributed/v8/mjsunit/async-stack-traces-promise-all.js b/implementation-contributed/v8/mjsunit/async-stack-traces-promise-all.js deleted file mode 100644 index 7f8457c961a..00000000000 --- a/implementation-contributed/v8/mjsunit/async-stack-traces-promise-all.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --async-stack-traces - -// Basic test with Promise.all(). -(function() { - async function fine() { } - - async function thrower() { - await fine(); - throw new Error(); - } - - async function driver() { - await Promise.all([fine(), fine(), thrower(), thrower()]); - } - - async function test(f) { - try { - await f(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, Error); - assertMatches(/Error.+at thrower.+at async Promise.all \(index 2\).+at async driver.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async () => { - await test(driver); - await test(driver); - %OptimizeFunctionOnNextCall(thrower); - await test(driver); - %OptimizeFunctionOnNextCall(driver); - await test(driver); - })()); -})(); diff --git a/implementation-contributed/v8/mjsunit/async-stack-traces.js b/implementation-contributed/v8/mjsunit/async-stack-traces.js deleted file mode 100644 index c945f4e37bc..00000000000 --- a/implementation-contributed/v8/mjsunit/async-stack-traces.js +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --async-stack-traces - -// Basic test with an explicit throw. -(function() { - async function one(x) { - await two(x); - } - - async function two(x) { - await x; - throw new Error(); - } - - async function test(f) { - try { - await f(1); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, Error); - assertMatches(/Error.+at two.+at async one.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async () => { - await test(one); - await test(one); - %OptimizeFunctionOnNextCall(two); - await test(one); - %OptimizeFunctionOnNextCall(one); - await test(one); - })()); -})(); - -// Basic test with an implicit throw (via ToNumber on Symbol). -(function() { - async function one(x) { - return await two(x); - } - - async function two(x) { - await x; - return +x; // This will raise a TypeError. - } - - async function test(f) { - try { - await f(Symbol()); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, TypeError); - assertMatches(/TypeError.+at two.+at async one.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async() => { - await test(one); - await test(one); - %OptimizeFunctionOnNextCall(two); - await test(one); - %OptimizeFunctionOnNextCall(one); - await test(one); - })()); -})(); - -// Basic test with throw in inlined function. -(function() { - function throwError() { - throw new Error(); - } - - async function one(x) { - return await two(x); - } - - async function two(x) { - await x; - return throwError(); - } - - async function test(f) { - try { - await f(1); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, Error); - assertMatches(/Error.+at two.+at async one.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async() => { - await test(one); - await test(one); - %OptimizeFunctionOnNextCall(two); - await test(one); - %OptimizeFunctionOnNextCall(one); - await test(one); - })()); -})(); - -// Basic test with async function inlined into sync function. -(function() { - function callOne(x) { - return one(x); - } - - function callTwo(x) { - return two(x); - } - - async function one(x) { - return await callTwo(x); - } - - async function two(x) { - await x; - throw new Error(); - } - - async function test(f) { - try { - await f(1); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, Error); - assertMatches(/Error.+at two.+at async one.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async() => { - await test(callOne); - await test(callOne); - %OptimizeFunctionOnNextCall(callTwo); - await test(callOne); - %OptimizeFunctionOnNextCall(callOne); - await test(callOne); - })()); -})(); - -// Basic test with async functions and promises chained via -// Promise.prototype.then(), which should still work following -// the generic chain upwards. -(function() { - async function one(x) { - return await two(x).then(x => x); - } - - async function two(x) { - await x.then(x => x); - throw new Error(); - } - - async function test(f) { - try { - await f(Promise.resolve(1)); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, Error); - assertMatches(/Error.+at two.+at async one.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async() => { - await test(one); - await test(one); - %OptimizeFunctionOnNextCall(two); - await test(one); - %OptimizeFunctionOnNextCall(one); - await test(one); - })()); -})(); - -// Basic test for async generators called from async -// functions with an explicit throw. -(function() { - async function one(x) { - for await (const y of two(x)) {} - } - - async function* two(x) { - await x; - throw new Error(); - } - - async function test(f) { - try { - await f(1); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, Error); - assertMatches(/Error.+at two.+at async one.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async () => { - await test(one); - await test(one); - %OptimizeFunctionOnNextCall(two); - await test(one); - %OptimizeFunctionOnNextCall(one); - await test(one); - })()); -})(); - -// Basic test for async functions called from async -// generators with an explicit throw. -(function() { - async function* one(x) { - await two(x); - } - - async function two(x) { - await x; - throw new Error(); - } - - async function test(f) { - try { - for await (const x of f(1)) {} - assertUnreachable(); - } catch (e) { - assertInstanceof(e, Error); - assertMatches(/Error.+at two.+at async one.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async () => { - await test(one); - await test(one); - %OptimizeFunctionOnNextCall(two); - await test(one); - %OptimizeFunctionOnNextCall(one); - await test(one); - })()); -})(); - -// Basic test for async functions called from async -// generators with an explicit throw (with yield). -(function() { - async function* one(x) { - yield two(x); - } - - async function two(x) { - await x; - throw new Error(); - } - - async function test(f) { - try { - for await (const x of f(1)) {} - assertUnreachable(); - } catch (e) { - assertInstanceof(e, Error); - assertMatches(/Error.+at two.+at async one.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async () => { - await test(one); - await test(one); - %OptimizeFunctionOnNextCall(two); - await test(one); - %OptimizeFunctionOnNextCall(one); - await test(one); - })()); -})(); - -// Basic test to check that we also follow initial -// promise chains created via Promise#then(). -(function() { - async function one(p) { - return await p.then(two); - } - - function two() { - throw new Error(); - } - - async function test(f) { - try { - await f(Promise.resolve()); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, Error); - assertMatches(/Error.+at two.+at async one.+at async test/ms, e.stack); - } - } - - assertPromiseResult((async () => { - await test(one); - await test(one); - %OptimizeFunctionOnNextCall(two); - await test(one); - %OptimizeFunctionOnNextCall(one); - await test(one); - })()); -})(); diff --git a/implementation-contributed/v8/mjsunit/basic-promise.js b/implementation-contributed/v8/mjsunit/basic-promise.js deleted file mode 100644 index da12f281986..00000000000 --- a/implementation-contributed/v8/mjsunit/basic-promise.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// We have to patch mjsunit because normal assertion failures just throw -// exceptions which are swallowed in a then clause. -failWithMessage = (msg) => %AbortJS(msg); - -function newPromise() { - var outerResolve; - var outerReject; - let promise = new Promise((resolve, reject) => { - outerResolve = resolve; - outerReject = reject; - }); - Promise.resolve(promise); - return { - resolve: outerResolve, - reject: outerReject, - then: (f, g) => promise.then(f, g) - }; -} - -(function ResolveOK() { - let promise = newPromise(); - promise.then(msg => {print("resolved: " + msg); assertEquals("ok", msg); }, - ex => {print("rejected: " + ex); %AbortJS("" + ex); }); - - promise.resolve("ok"); - promise.reject(11); // ignored -})(); - -(function RejectOK() { - let promise = newPromise(); - promise.then(msg => {print("resolved: " + msg); %AbortJS("fail"); }, - ex => {print("rejected: " + ex); assertEquals(42, ex); }); - - promise.reject(42); - promise.resolve("fail"); // ignored -})(); diff --git a/implementation-contributed/v8/mjsunit/big-array-literal.js b/implementation-contributed/v8/mjsunit/big-array-literal.js deleted file mode 100644 index 624e9b704de..00000000000 --- a/implementation-contributed/v8/mjsunit/big-array-literal.js +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// On MacOS X 10.7.5, this test needs a stack size of at least 788 kBytes. -// On PPC64, this test needs a stack size of at least 698 kBytes. -// Flags: --stack-size=1000 -// -// The above stack limits were written assuming no lazy parsing, so turn -// off lazy parsing for this test. -// See https://bugs.chromium.org/p/v8/issues/detail?id=5729 for details. -// Flags: --no-lazy - -// Test that we can make large object literals that work. -// Also test that we can attempt to make even larger object literals without -// crashing. -function testLiteral(size, array_in_middle) { - print(size); - - var f; - - // Build object-literal string. - var literal = "function f() { return "; - - for (var i = 0; i < size; i++) { - literal += "["; - } - - literal += array_in_middle ? " [42.2]" : "{a:42.2}"; - - for (var i = 0; i < size; i++) { - literal += "]"; - } - - literal += "; }"; - - // Create the object literal. - eval(literal); - - var x = f(); - - // Check that the properties have the expected values. - for (var i = 0; i < size; i++) { - x = x[0]; - } - - if (array_in_middle) { - assertEquals(42.2, x[0]), "x array in middle"; - x[0] = 41.2; - } else { - assertEquals(42.2, x.a, "x object in middle"); - x.a = 41.2; - } - - var y = f(); - for (var i = 0; i < size; i++) { - y = y[0]; - } - - if (array_in_middle) { - assertEquals(42.2, y[0], "y array in middle"); - y[0] = 41.2; - } else { - assertEquals(42.2, y.a, "y object in middle"); - y.a = 41.2; - } -} - -// The sizes to test. -var sizes = [1, 2, 100, 200, 300]; - -// Run the test. -for (var i = 0; i < sizes.length; i++) { - testLiteral(sizes[i], false); - testLiteral(sizes[i], true); -} - - -function checkExpectedException(e) { - assertInstanceof(e, RangeError); - assertTrue(e.message.indexOf("Maximum call stack size exceeded") >= 0); -} - - -function testLiteralAndCatch(size) { - var big_enough = false; - try { - testLiteral(size, false); - } catch (e) { - checkExpectedException(e); - big_enough = true; - } - try { - testLiteral(size, true); - } catch (e) { - checkExpectedException(e); - big_enough = true; - } - return big_enough; -} - -// Catch stack overflows. - -testLiteralAndCatch(1000) || -testLiteralAndCatch(20000) || -testLiteralAndCatch(200000); diff --git a/implementation-contributed/v8/mjsunit/big-object-literal.js b/implementation-contributed/v8/mjsunit/big-object-literal.js deleted file mode 100644 index 92c6ab7b7b2..00000000000 --- a/implementation-contributed/v8/mjsunit/big-object-literal.js +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we can make large object literals that work. -// Also test that we can attempt to make even larger object literals without -// crashing. -function testLiteral(size, array_in_middle) { - print(size); - - var f; - - // Build object-literal string. - var literal = "function f() { return "; - - for (var i = 0; i < size; i++) { - literal += "{a:"; - } - - literal += array_in_middle ? " [42.2]" : "{a:42.2}"; - - for (var i = 0; i < size; i++) { - literal += "}"; - if (i < size - 1) { - literal += ", b:42, c:/asd/, x:'foo', y:[], z:new Object()"; - } - } - - literal += "; }"; - - // Create the object literal. - eval(literal); - - var x = f(); - - // Check that the properties have the expected values. - for (var i = 0; i < size; i++) { - x = x.a; - } - - if (array_in_middle) { - assertEquals(42.2, x[0]), "x array in middle"; - x[0] = 41.2; - } else { - assertEquals(42.2, x.a, "x object in middle"); - x.a = 41.2; - } - - var y = f(); - for (var i = 0; i < size; i++) { - y = y.a; - } - - if (array_in_middle) { - assertEquals(42.2, y[0], "y array in middle"); - y[0] = 41.2; - } else { - assertEquals(42.2, y.a, "y object in middle"); - y.a = 41.2; - } -} - -// The sizes to test. -var sizes = [1, 2, 100, 200]; - -// Run the test. -for (var i = 0; i < sizes.length; i++) { - testLiteral(sizes[i], false); - testLiteral(sizes[i], true); -} - - -function checkExpectedException(e) { - assertInstanceof(e, RangeError); - assertTrue(e.message.indexOf("Maximum call stack size exceeded") >= 0); -} - - -function testLiteralAndCatch(size) { - var big_enough = false; - try { - testLiteral(size, false); - } catch (e) { - checkExpectedException(e); - big_enough = true; - } - try { - testLiteral(size, true); - } catch (e) { - checkExpectedException(e); - big_enough = true; - } - return big_enough; -} - -// Catch stack overflows. - -testLiteralAndCatch(1000) || -testLiteralAndCatch(20000) || -testLiteralAndCatch(200000); diff --git a/implementation-contributed/v8/mjsunit/binary-op-newspace.js b/implementation-contributed/v8/mjsunit/binary-op-newspace.js deleted file mode 100644 index 52903f051a3..00000000000 --- a/implementation-contributed/v8/mjsunit/binary-op-newspace.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --max-semi-space-size=1 --noopt - -// Check that a mod where the stub code hits a failure in heap number -// allocation still works. - -function f(x) { - return x % 3; -} - -function testMod() { - for (var i = 0; i < 40000; i++) { - assertEquals(-1 / 0, 1 / f(-3)); - } -} - -testMod(); - - -// Check that an add where the stub code hits a failure in heap number -// allocation still works. - -function g(x, y) { - return x + y; -} - -function testAdd() { - var lhs = 17.42; - var rhs = 42.17; - for (var i = 0; i < 40000; i++) { - assertEquals(59.59, g(lhs, rhs)); - } -} - -testAdd(); diff --git a/implementation-contributed/v8/mjsunit/binary-operation-overwrite.js b/implementation-contributed/v8/mjsunit/binary-operation-overwrite.js deleted file mode 100644 index 8d217c58060..00000000000 --- a/implementation-contributed/v8/mjsunit/binary-operation-overwrite.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Ensure that literals are not overwritten. -function f1() { return (1.2, 3.4) + 5.6; } -function f2() { return (1, 2) + 3; } -function f3() { return (1.2 || 3.4) + 5.6; } -function f4() { return (1 || 2) + 3; } -assertTrue(f1() === f1()); -assertTrue(f2() === f2()); -assertTrue(f3() === f3()); -assertTrue(f4() === f4()); diff --git a/implementation-contributed/v8/mjsunit/bit-not.js b/implementation-contributed/v8/mjsunit/bit-not.js deleted file mode 100644 index d0316a71eaa..00000000000 --- a/implementation-contributed/v8/mjsunit/bit-not.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function testBitNot(x, name) { - // The VM constant folds so we use that to check the result. - var expected = eval("~(" + x + ")"); - var actual = ~x; - assertEquals(expected, actual, "x: " + name); - - // Test the path where we can overwrite the result. Use - - // to avoid concatenating strings. - expected = eval("~(" + x + " - 0.01)"); - actual = ~(x - 0.01); - assertEquals(expected, actual, "x - 0.01: " + name); -} - - -testBitNot(0, 0); -testBitNot(1, 1); -testBitNot(-1, 1); -testBitNot(100, 100); -testBitNot(0x40000000, "0x40000000"); -testBitNot(0x7fffffff, "0x7fffffff"); -testBitNot(0x80000000, "0x80000000"); - -testBitNot(2.2, 2.2); -testBitNot(-2.3, -2.3); -testBitNot(Infinity, "Infinity"); -testBitNot(NaN, "NaN"); -testBitNot(-Infinity, "-Infinity"); -testBitNot(0x40000000 + 0.12345, "float1"); -testBitNot(0x40000000 - 0.12345, "float2"); -testBitNot(0x7fffffff + 0.12345, "float3"); -testBitNot(0x7fffffff - 0.12345, "float4"); -testBitNot(0x80000000 + 0.12345, "float5"); -testBitNot(0x80000000 - 0.12345, "float6"); - -testBitNot("0", "string0"); -testBitNot("2.3", "string2.3"); -testBitNot("-9.4", "string-9.4"); - - -// Try to test that we can deal with allocation failures in -// the fast path and just use the slow path instead. -function TryToGC() { - var x = 0x40000000; - // Put in an eval to foil Crankshaft. - eval(""); - for (var i = 0; i < 1000000; i++) { - assertEquals(~0x40000000, ~x); - } -} -TryToGC(); diff --git a/implementation-contributed/v8/mjsunit/bitops-info.js b/implementation-contributed/v8/mjsunit/bitops-info.js deleted file mode 100644 index 4b114c54e9a..00000000000 --- a/implementation-contributed/v8/mjsunit/bitops-info.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function non_int32() { - return 2600822924; // It's not a signed Int32. -} - -function hidden_smi() { - return 46512102; // It's a Smi -} - -function hidden_int32() { - return 1600822924; // It's a signed Int32. -} - -function f() { - var x = non_int32(); // Not a constant. - var y = hidden_smi(); // Not a constant. - var z = hidden_int32(); - assertEquals(46512102 & 2600822924, 46512102 & x, "1"); - assertEquals(1600822924 & 2600822924, 1600822924 & x, "2"); - assertEquals(2600822924 & 2600822924, 2600822924 & x, "3"); - assertEquals(46512102 & 46512102, 46512102 & y, "4"); - assertEquals(1600822924 & 46512102, 1600822924 & y, "5"); - assertEquals(2600822924 & 46512102, 2600822924 & y, "6"); - assertEquals(46512102 & 1600822924, 46512102 & z, "7"); - assertEquals(1600822924 & 1600822924, 1600822924 & z, "8"); - assertEquals(2600822924 & 1600822924, 2600822924 & z, "9"); - assertEquals(46512102 & 2600822924, y & x, "10"); - assertEquals(1600822924 & 2600822924, z & x, "11"); - - assertEquals(46512102 & 2600822924, x & 46512102, "1rev"); - assertEquals(1600822924 & 2600822924, x & 1600822924, "2rev"); - assertEquals(2600822924 & 2600822924, x & 2600822924, "3rev"); - assertEquals(46512102 & 46512102, y & 46512102, "4rev"); - assertEquals(1600822924 & 46512102, y & 1600822924, "5rev"); - assertEquals(2600822924 & 46512102, y & 2600822924, "6rev"); - assertEquals(46512102 & 1600822924, z & 46512102, "7rev"); - assertEquals(1600822924 & 1600822924, z & 1600822924, "8rev"); - assertEquals(2600822924 & 1600822924, z & 2600822924, "9rev"); - assertEquals(46512102 & 2600822924, x & y, "10rev"); - assertEquals(1600822924 & 2600822924, x & z, "11rev"); - - assertEquals((46512102 & -0x20123456) | 1, (y & -0x20123456) | 1, "12"); - assertEquals((1600822924 & -0x20123456) | 1, (z & -0x20123456) | 1, "13"); - assertEquals((2600822924 & -0x20123456) | 1, (x & -0x20123456) | 1, "14"); - assertEquals((46512102 & -0x20123456) | 1, (-0x20123456 & y) | 1, "12rev"); - assertEquals((1600822924 & -0x20123456) | 1, (-0x20123456 & z) | 1, "13rev"); - assertEquals((2600822924 & -0x20123456) | 1, (-0x20123456 & x) | 1, "14rev"); - - assertEquals(2600822924 & 2600822924, x & x, "xx"); - assertEquals(y, y & y, "yy"); - assertEquals(z, z & z, "zz"); -} - - -for (var i = 0; i < 5; i++) { - f(); -} diff --git a/implementation-contributed/v8/mjsunit/bitwise-operations-bools.js b/implementation-contributed/v8/mjsunit/bitwise-operations-bools.js deleted file mode 100644 index 6c7da110b05..00000000000 --- a/implementation-contributed/v8/mjsunit/bitwise-operations-bools.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test bitwise operations with booleans. - -var t = 1; - -function testFalseLeftHandSide() { - var b; - if (t) b = false; - assertEquals(b | 1, 1); - assertEquals(b & 1, 0); - assertEquals(b ^ 1, 1); - assertEquals(b << 1, 0); - assertEquals(b >> 1, 0); - assertEquals(b >>> 1, 0); -} - -function testFalseRightHandSide() { - if (t) b = false; - assertEquals(1 | b, 1); - assertEquals(1 & b, 0); - assertEquals(1 ^ b, 1); - assertEquals(1 << b, 1); - assertEquals(1 >> b, 1); - assertEquals(1 >>> b, 1); -} - -function testTrueLeftHandSide() { - if (t) b = true; - assertEquals(b | 1, 1); - assertEquals(b & 1, 1); - assertEquals(b ^ 1, 0); - assertEquals(b << 1, 2); - assertEquals(b >> 1, 0); - assertEquals(b >>> 1, 0); -} - -function testTrueRightHandSide() { - if (t) b = true; - assertEquals(1 | b, 1); - assertEquals(1 & b, 1); - assertEquals(1 ^ b, 0); - assertEquals(1 << b, 2); - assertEquals(1 >> b, 0); - assertEquals(1 >>> b, 0); -} - -function testBothSides() { - if (t) a = true; - if (t) b = false; - assertEquals(a | b, 1); - assertEquals(a & b, 0); - assertEquals(a ^ b, 1); - assertEquals(a << b, 1); - assertEquals(a >> b, 1); - assertEquals(a >>> b, 1); -} - - -testFalseLeftHandSide(); -testFalseRightHandSide(); -testTrueLeftHandSide(); -testTrueRightHandSide(); -testFalseLeftHandSide(); -testFalseRightHandSide(); -testTrueLeftHandSide(); -testTrueRightHandSide(); -testBothSides(); -testBothSides(); diff --git a/implementation-contributed/v8/mjsunit/bitwise-operations-undefined.js b/implementation-contributed/v8/mjsunit/bitwise-operations-undefined.js deleted file mode 100644 index 716e52dfe2f..00000000000 --- a/implementation-contributed/v8/mjsunit/bitwise-operations-undefined.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test bitwise operations with undefined. - -function testUndefinedLeftHandSide() { - assertEquals(undefined | 1, 1); - assertEquals(undefined & 1, 0); - assertEquals(undefined ^ 1, 1); - assertEquals(undefined << 1, 0); - assertEquals(undefined >> 1, 0); - assertEquals(undefined >>> 1, 0); -} - -function testUndefinedRightHandSide() { - assertEquals(1 | undefined, 1); - assertEquals(1 & undefined, 0); - assertEquals(1 ^ undefined, 1); - assertEquals(1 << undefined, 1); - assertEquals(1 >> undefined, 1); - assertEquals(1 >>> undefined, 1); -} - -testUndefinedLeftHandSide(); -testUndefinedRightHandSide(); diff --git a/implementation-contributed/v8/mjsunit/body-not-visible.js b/implementation-contributed/v8/mjsunit/body-not-visible.js deleted file mode 100644 index c681ab3dd98..00000000000 --- a/implementation-contributed/v8/mjsunit/body-not-visible.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure we cannot see the local variables in NewFunction when -// compiling functions using new Function(). - -var caught = false; -try { - (new Function("return body;"))(); - assertTrue(false); -} catch (e) { - caught = true; - assertTrue(e instanceof ReferenceError); -} -assertTrue(caught); diff --git a/implementation-contributed/v8/mjsunit/bool-concat.js b/implementation-contributed/v8/mjsunit/bool-concat.js deleted file mode 100644 index 1306dcbbbca..00000000000 --- a/implementation-contributed/v8/mjsunit/bool-concat.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function format(a) { - if (a) { - return "X"+true+"Y"; - } else { - return "X"+false+"Y"; - } -} - -for (var i = 0; i < 1000; i++) { - assertEquals("XtrueY", format(true)); - assertEquals("XfalseY", format(false)); -} diff --git a/implementation-contributed/v8/mjsunit/boolean.js b/implementation-contributed/v8/mjsunit/boolean.js deleted file mode 100644 index 9b9edd2e019..00000000000 --- a/implementation-contributed/v8/mjsunit/boolean.js +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(Boolean(void 0), false); -assertEquals(Boolean(null), false); -assertEquals(Boolean(false), false); -assertEquals(Boolean(true), true); -assertEquals(Boolean(0), false); -assertEquals(Boolean(1), true); -assertEquals(Boolean(assertEquals), true); -assertEquals(Boolean(new Object()), true); -assertTrue(new Boolean(false) !== false); -assertTrue(new Boolean(false) == false); -assertTrue(new Boolean(true) !== true); -assertTrue(new Boolean(true) == true); - -assertEquals(true, !false); -assertEquals(false, !true); -assertEquals(true, !!true); -assertEquals(false, !!false); - -assertEquals(true, true ? true : false); -assertEquals(false, false ? true : false); - -assertEquals(false, true ? false : true); -assertEquals(true, false ? false : true); - - -assertEquals(true, true && true); -assertEquals(false, true && false); -assertEquals(false, false && true); -assertEquals(false, false && false); - -// Regression. -var t = 42; -assertEquals(void 0, t.p); -assertEquals(void 0, t.p && true); -assertEquals(void 0, t.p && false); -assertEquals(void 0, t.p && (t.p == 0)); -assertEquals(void 0, t.p && (t.p == null)); -assertEquals(void 0, t.p && (t.p == t.p)); - -var o = new Object(); -o.p = 'foo'; -assertEquals('foo', o.p); -assertEquals('foo', o.p || true); -assertEquals('foo', o.p || false); -assertEquals('foo', o.p || (o.p == 0)); -assertEquals('foo', o.p || (o.p == null)); -assertEquals('foo', o.p || (o.p == o.p)); - -// JSToBoolean(x:string) -function f(x) { return !!("" + x); } -assertEquals(false, f("")); -assertEquals(true, f("narf")); -assertEquals(true, f(12345678)); -assertEquals(true, f(undefined)); diff --git a/implementation-contributed/v8/mjsunit/bounds-checks-elimination.js b/implementation-contributed/v8/mjsunit/bounds-checks-elimination.js deleted file mode 100644 index 622e791fa50..00000000000 --- a/implementation-contributed/v8/mjsunit/bounds-checks-elimination.js +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = [] -for (var i = 0; i < 9; i++) a[i] = i + 1; - -function test(f, arg1, arg2, expected) { - assertEquals(expected, f(arg1)); - f(arg2); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f(arg1)); -} - -test(function f0() { - return a[7] * a[6] * a[5] * a[4] * a[3] * a[2] * a[1] * a[0]; -}, 0, 1, 40320); - -test(function f1() { - return a[7] * a[6] * a[5] * a[4] * a[10] * a[2] * a[1] * a[0]; -}, 0, 1, NaN); - -test(function f2() { - return a[0] * a[1] * a[2] * a[3] * a[4] * a[5] * a[6] * a[7]; -}, 0, 1, 40320); - -test(function f3() { - return a[3] * a[0] * a[6] * a[7] * a[5] * a[1] * a[4] * a[2]; -}, 0, 1, 40320); - -test(function f4(b) { - return a[b+3] * a[0] * a[b+6] * a[7] * a[b+5] * a[1] * a[b+4] * a[2]; -}, 0, 1, 40320); - -test(function f5(b) { - return a[b+1] * a[0] * a[b+4] * a[7] * a[b+3] * a[1] * a[b+2] * a[2]; -}, 2, 3, 40320); - -test(function f6(b) { - var c; - if (b) c = a[3] * a[0] * a[6] * a[7]; - return c * a[5] * a[1] * a[4] * a[2]; -}, true, false, 40320); - -test(function f7(b) { - var c = a[7]; - if (b) c *= a[3] * a[0] * a[6]; - return c * a[5] * a[1] * a[4] * a[2]; -}, true, false, 40320); - -test(function f8(b) { - var c = a[7]; - if (b) c *= a[3] * a[0] * a[6]; - return c * a[5] * a[10] * a[4] * a[2]; -}, true, false, NaN); - -test(function f9(b) { - var c = a[1]; - if (b) { - c *= a[3] * a[0] * a[6]; - } else { - c = a[6] * a[5] * a[4]; - } - return c * a[5] * a[7] * a[4] * a[2]; -}, true, false, 40320); - -test(function fa(b) { - var c = a[1]; - if (b) { - c = a[6] * a[b+5] * a[4]; - } else { - c *= a[b+3] * a[0] * a[b+6]; - } - return c * a[5] * a[b+7] * a[4] * a[2]; -}, 0, 1, 40320); - -test(function fb(b) { - var c = a[b-3]; - if (b != 4) { - c = a[6] * a[b+1] * a[4]; - } else { - c *= a[b-1] * a[0] * a[b+2]; - } - return c * a[5] * a[b+3] * a[4] * a[b-2]; -}, 4, 3, 40320); - -test(function fc(b) { - var c = a[b-3]; - if (b != 4) { - c = a[6] * a[b+1] * a[4]; - } else { - c *= a[b-1] * a[0] * a[b+2]; - } - return c * a[5] * a[b+3] * a[4] * a[b-2]; -}, 6, 3, NaN); - -test(function fd(b) { - var c = a[b-3]; - if (b != 4) { - c = a[6] * a[b+1] * a[4]; - } else { - c *= a[b-1] * a[0] * a[b+2]; - } - return c * a[5] * a[b+3] * a[4] * a[b-2]; -}, 1, 4, NaN); - -test(function fe(b) { - var c = 1; - for (var i = 1; i < b-1; i++) { - c *= a[i-1] * a[i] * a[i+1]; - } - return c; -}, 8, 4, (40320 / 8 / 7) * (40320 / 8) * (40320 / 2)); - -test(function ff(b) { - var c = 0; - for (var i = 0; i < b; i++) { - c += a[3] * a[0] * a[6] * a[7] * a[5] * a[1] * a[4] * a[2]; - } - return c; -}, 100, 4, 40320 * 100); diff --git a/implementation-contributed/v8/mjsunit/break.js b/implementation-contributed/v8/mjsunit/break.js deleted file mode 100644 index 741263d9e35..00000000000 --- a/implementation-contributed/v8/mjsunit/break.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - var i = 10; - var c = 0; - while (i-- > 0) { - c++; - if (i == 5) ; - } - assertEquals(10, c); -} -f(); - - -function f2() { - var i = 10; - var c = 0; - while (i-- > 0) { - c++; - if (i == 5) break; - } - assertEquals(5, c); -} -f2(); - - -function f3() { - var i = 10; - var c = 0; - outer: while (i-- > 0) { - var j = 10; - inner1: inner2: inner3: while (j-- > 0) { - c++; - if (i == 8) - break inner2; - if (i == 6) - break outer; - } - } - assertEquals(22, c); -} -f3(); - -outer2: { - break outer2; - assertUnreachable(); -} - - -outer3: break outer3; // nop -l1: l2: l3: break l2; // nop diff --git a/implementation-contributed/v8/mjsunit/bugs/bug-1344252.js b/implementation-contributed/v8/mjsunit/bugs/bug-1344252.js deleted file mode 100644 index 747ce199ce2..00000000000 --- a/implementation-contributed/v8/mjsunit/bugs/bug-1344252.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that setter accessors added to the prototype chain are called -// when setting properties. - -// Test that accessors added to the prototype chain are called -// eventhough there are inline caches for setting the property - -function F() { - this.x = 42; - this.y = 87; -} - -// Force the inline caches to monomorphic state. -new F(); new F(); - -// Add a setter for x to Object.prototype and make sure it gets -// called. -var result_x; -Object.prototype.__defineSetter__('x', function(value) { result_x = value; }); -var f = new F(); -assertEquals(42, result_x); -assertTrue(typeof f.x == 'undefined'); - -// Add a setter for y by changing the prototype of f and make sure -// that gets called too. -var result_y; -var proto = new Object(); -proto.__defineSetter__('y', function (value) { result_y = value; }); -var f = new F(); -f.y = undefined; -f.__proto__ = proto; -F.call(f); -assertEquals(87, result_y); -assertTrue(typeof f.y == 'undefined'); - - -// Test the same issue in the runtime system. Make sure that -// accessors added to the prototype chain are called instead of -// following map transitions. -// -// Create two objects. -var result_z; -var o1 = new Object(); -var o2 = new Object(); -// Add a z property to o1 to create a map transition. -o1.z = 32; -// Add a z accessor in the prototype chain for o1 and o2. -Object.prototype.__defineSetter__('z', function(value) { result_z = value; }); -// The accessor should be called for o2. -o2.z = 27; -assertEquals(27, result_z); -assertTrue(typeof o2.z == 'undefined'); diff --git a/implementation-contributed/v8/mjsunit/bugs/bug-222.js b/implementation-contributed/v8/mjsunit/bugs/bug-222.js deleted file mode 100644 index 0df7dd687e1..00000000000 --- a/implementation-contributed/v8/mjsunit/bugs/bug-222.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function Foo(a, b) { } -Foo(); -var oldArgs = Foo.arguments; -Foo(); -var newArgs = Foo.arguments - -assertTrue(oldArgs !== newArgs); - -// Don't allow arguments to be overwritten. -Foo.arguments = oldArgs; -assertEquals(Foo.arguments, newArgs); - -// Don't allow arguments to be deleted. -assertFalse(delete Foo.arguments); -assertEquals(Foo.arguments, newArgs); diff --git a/implementation-contributed/v8/mjsunit/bugs/bug-617.js b/implementation-contributed/v8/mjsunit/bugs/bug-617.js deleted file mode 100644 index f69d4ad55cb..00000000000 --- a/implementation-contributed/v8/mjsunit/bugs/bug-617.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=617 comment 5 - -var got_here = 0; - -function make_sure_we_dont_get_here() { - got_here = 1; -} - -RegExp.prototype.exec = make_sure_we_dont_get_here; - -var re = /foo/; - -re.exec = make_sure_we_dont_get_here; - -re("foo"); - -assertEquals(got_here, 0); diff --git a/implementation-contributed/v8/mjsunit/bugs/bug-941049.js b/implementation-contributed/v8/mjsunit/bugs/bug-941049.js deleted file mode 100644 index f68c37a69fd..00000000000 --- a/implementation-contributed/v8/mjsunit/bugs/bug-941049.js +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This test fails because we copy the arguments array on indirect -// access - -function g(f) { - assertEquals(100, f.arguments = 100); // read-only - assertEquals(3, f.arguments.length); - assertEquals(1, f.arguments[0]); - assertEquals(2, f.arguments[1]); - assertEquals(3, f.arguments[2]); - f.arguments[0] = 999; - f.arguments.extra = 'kallevip'; -} - -function h(f) { - assertEquals('kallevip', f.arguments.extra); - return f.arguments; -} - -// Test function with a materialized arguments array. -function f0() { - g(f0); - var result = h(f0); - var a = arguments; - assertEquals(999, a[0]); - return result; -} - - -// Test function without a materialized arguments array. -function f1(x) { - g(f1); - var result = h(f1); - assertEquals(999, x); - return result; -} - - -function test(f) { - assertTrue(null === f.arguments); - var args = f(1,2,3); - assertTrue(null === f.arguments); - - assertEquals(3, args.length); - assertEquals(999, args[0]); - assertEquals(2, args[1]); - assertEquals(3, args[2]); - assertEquals('kallevip', args.extra); -} - -test(f0); -test(f1); - - - - -function w() { - return q.arguments; -} - -function q(x, y) { - x = 2; - var result = w(); - y = 3; - return result; -} - -var a = q(0, 1); -// x is set locally *before* the last use of arguments before the -// activation of q is popped from the stack. -assertEquals(2, a[0]); -// y is set locally *after* the last use of arguments before the -// activation of q is popped from the stack. -assertEquals(1, a[1]); diff --git a/implementation-contributed/v8/mjsunit/bugs/bug-proto.js b/implementation-contributed/v8/mjsunit/bugs/bug-proto.js deleted file mode 100644 index 5638336c45f..00000000000 --- a/implementation-contributed/v8/mjsunit/bugs/bug-proto.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var realmA = Realm.current(); -var realmB = Realm.create(); -assertEquals(0, realmA); -assertEquals(1, realmB); - -// The global objects match the realms' this binding. -assertSame(this, Realm.global(realmA)); -assertSame(Realm.eval(realmB, "this"), Realm.global(realmB)); -assertFalse(this === Realm.global(realmB)); - -// The global object is not accessible cross-realm. -var x = 3; -Realm.shared = this; -assertThrows("Realm.eval(realmB, 'x')"); -assertSame(undefined, Realm.eval(realmB, "this.x")); -assertSame(undefined, Realm.eval(realmB, "Realm.shared.x")); - -Realm.eval(realmB, "Realm.global(0).y = 1"); -assertThrows("y"); -assertSame(undefined, this.y); - -// Can get or set other objects' properties cross-realm. -var p = {a: 1}; -var o = {__proto__: p, b: 2}; -Realm.shared = o; -assertSame(1, Realm.eval(realmB, "Realm.shared.a")); -assertSame(2, Realm.eval(realmB, "Realm.shared.b")); - -// Cannot get or set a prototype cross-realm. -assertSame(undefined, Realm.eval(realmB, "Realm.shared.__proto__")); - -Realm.eval(realmB, "Realm.shared.__proto__ = {c: 3}"); -assertSame(1, o.a); -assertSame(undefined, o.c); diff --git a/implementation-contributed/v8/mjsunit/call-cross-realm.js b/implementation-contributed/v8/mjsunit/call-cross-realm.js deleted file mode 100644 index 68e5b1682b5..00000000000 --- a/implementation-contributed/v8/mjsunit/call-cross-realm.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Realm.create(); -var object = Realm.eval(1, "Object"); -var f = Realm.eval(1, "function f() { return this }; f"); - -Number.prototype.f = f; -var number = 1; -assertEquals(object.prototype, f.call(number).__proto__.__proto__); -assertEquals(object.prototype, number.f().__proto__.__proto__); -assertEquals(Realm.global(1), f()); diff --git a/implementation-contributed/v8/mjsunit/call-intrinsic-type-error.js b/implementation-contributed/v8/mjsunit/call-intrinsic-type-error.js deleted file mode 100644 index 9d586977d92..00000000000 --- a/implementation-contributed/v8/mjsunit/call-intrinsic-type-error.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -try { - %Call(1, 0); -} catch (e) { - assertTrue(e instanceof TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/call-non-function-call.js b/implementation-contributed/v8/mjsunit/call-non-function-call.js deleted file mode 100644 index 6088fc35969..00000000000 --- a/implementation-contributed/v8/mjsunit/call-non-function-call.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Throw exception when invoking Function.prototype.call with a -// non-function receiver. -var caught = false; -try { - Function.prototype.call.call({}); - assertTrue(false); -} catch (e) { - caught = true; - assertTrue(e instanceof TypeError); -} -assertTrue(caught); diff --git a/implementation-contributed/v8/mjsunit/call-non-function.js b/implementation-contributed/v8/mjsunit/call-non-function.js deleted file mode 100644 index 9fe3b0fba21..00000000000 --- a/implementation-contributed/v8/mjsunit/call-non-function.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function TryCall(x) { - var caught = []; - try { - x(); - } catch (e) { - caught.push(e); - } - - try { - new x(); - } catch (e) { - caught.push(e); - } - - assertTrue(caught[0] instanceof TypeError); - assertTrue(caught[1] instanceof TypeError); -}; - - -TryCall(this); -TryCall(Math); -TryCall(true); -TryCall(1234); -TryCall("hest"); - - -// Make sure that calling a non-function global doesn't crash the -// system while building the IC for it. -var NonFunction = 42; -function WillThrow() { - NonFunction(); -} -assertThrows(WillThrow); -assertThrows(WillThrow); -assertThrows(WillThrow); -assertThrows(WillThrow); diff --git a/implementation-contributed/v8/mjsunit/call-stub.js b/implementation-contributed/v8/mjsunit/call-stub.js deleted file mode 100644 index 9d11649e7a8..00000000000 --- a/implementation-contributed/v8/mjsunit/call-stub.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function Hash() { - for (var i = 0; i < 100; i++) { - this['a' + i] = i; - } - - delete this.a50; // Ensure it's a normal object. -} - -Hash.prototype.m = function() { - return 1; -}; - -var h = new Hash(); - -for (var i = 1; i < 100; i++) { - if (i == 50) { - h.m = function() { - return 2; - }; - } else if (i == 70) { - delete h.m; - } - assertEquals(i < 50 || i >= 70 ? 1 : 2, h.m()); -} - - -var nonsymbol = 'wwwww '.split(' ')[0]; -Hash.prototype.wwwww = Hash.prototype.m; - -for (var i = 1; i < 100; i++) { - if (i == 50) { - h[nonsymbol] = function() { - return 2; - }; - } else if (i == 70) { - delete h[nonsymbol]; - } - assertEquals(i < 50 || i >= 70 ? 1 : 2, h.wwwww()); -} diff --git a/implementation-contributed/v8/mjsunit/call.js b/implementation-contributed/v8/mjsunit/call.js deleted file mode 100644 index b873d7d12dd..00000000000 --- a/implementation-contributed/v8/mjsunit/call.js +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f0() { - return this; -} - -assertTrue(this === f0.call(), "1"); - -assertTrue(this === f0.call(this), "w"); -assertTrue(this === f0.call(this, 1), "w"); -assertTrue(this === f0.call(this, 1, 2), "w"); - -assertTrue(this === f0.call(null), "3a"); -assertTrue(this === f0.call(null, 1), "3b"); -assertTrue(this === f0.call(null, 1, 2), "3c"); - -assertTrue(this === f0.call(void 0), "4a"); -assertTrue(this === f0.call(void 0, 1), "4b"); -assertTrue(this === f0.call(void 0, 1, 2), "4c"); - -var x = {}; -assertTrue(x === f0.call(x)); -assertTrue(x === f0.call(x, 1)); -assertTrue(x === f0.call(x, 1, 2)); - - -function f1(a) { - a = a || 'i'; - return this[a]; -} - -assertEquals(1, f1.call({i:1})); -assertEquals(42, f1.call({i:42}, 'i')); -assertEquals(87, f1.call({j:87}, 'j', 1)); -assertEquals(99, f1.call({k:99}, 'k', 1, 2)); - - -function f2(a, b) { - a = a || 'n'; - b = b || 2; - return this[a] + b; -} - -var x = {n: 1}; -assertEquals(3, f2.call(x)); -assertEquals(14, f2.call({i:12}, 'i')); -assertEquals(42, f2.call(x, 'n', 41)); -assertEquals(87, f2.call(x, 'n', 86, 1)); -assertEquals(99, f2.call(x, 'n', 98, 1, 2)); - - -function fn() { - return arguments.length; -} - -assertEquals(0, fn.call()); -assertEquals(0, fn.call(this)); -assertEquals(0, fn.call(null)); -assertEquals(0, fn.call(void 0)); -assertEquals(1, fn.call(this, 1)); -assertEquals(2, fn.call(this, 1, 2)); -assertEquals(3, fn.call(this, 1, 2, 3)); diff --git a/implementation-contributed/v8/mjsunit/char-escape.js b/implementation-contributed/v8/mjsunit/char-escape.js deleted file mode 100644 index a1b342977ed..00000000000 --- a/implementation-contributed/v8/mjsunit/char-escape.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that character escapes are understood as one char -var escapes = ["\b", "\t", "\n", "\v", "\f", "\r", "\"", "\'", "\\", "\x4a", "\u005f"]; -for (var i = 0; i < escapes.length; i++) { - var str = escapes[i]; - assertEquals(1, str.length); - assertEquals(str, str.charAt(0)); -} - -function code(str) { - return str.charCodeAt(0); -} - -// Do the single escape chars have the right value? -assertEquals(0x08, code("\b")); -assertEquals(0x09, code("\t")); -assertEquals(0x0A, code("\n")); -assertEquals(0x0B, code("\v")); -assertEquals(0x0C, code("\f")); -assertEquals(0x0D, code("\r")); -assertEquals(0x22, code("\"")); -assertEquals(0x27, code("\'")); -assertEquals(0x5c, code("\\")); - -// Do the hex and unicode escape chars have the right value? -assertEquals(0x4a, code("\x4a")); -assertEquals(0x5f, code("\u005f")); diff --git a/implementation-contributed/v8/mjsunit/class-of-builtins.js b/implementation-contributed/v8/mjsunit/class-of-builtins.js deleted file mode 100644 index 59fefffa758..00000000000 --- a/implementation-contributed/v8/mjsunit/class-of-builtins.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// The [[Class]] property of (instances of) builtin functions must be -// correctly set. -var funs = { - Object: [ Object ], - Function: [ Function ], - Array: [ Array ], - String: [ String ], - Boolean: [ Boolean ], - Number: [ Number ], - Date: [ Date ], - RegExp: [ RegExp ], - Error: [ Error, TypeError, RangeError, SyntaxError, ReferenceError, EvalError, URIError ] -} -for (f in funs) { - for (i in funs[f]) { - assertEquals("[object " + f + "]", - Object.prototype.toString.call(new funs[f][i]), - funs[f][i]); - assertEquals("[object Function]", - Object.prototype.toString.call(funs[f][i]), - funs[f][i]); - } -} diff --git a/implementation-contributed/v8/mjsunit/closure.js b/implementation-contributed/v8/mjsunit/closure.js deleted file mode 100644 index b1460d39e6b..00000000000 --- a/implementation-contributed/v8/mjsunit/closure.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This test is lifted an old bug (ic_context_bug.js). - -function f(n) { - return function () { return n; } -} - -for (var i = 0; i < 10; i++) { - var a = f(i); - assertEquals(i, a()); -} diff --git a/implementation-contributed/v8/mjsunit/closures.js b/implementation-contributed/v8/mjsunit/closures.js deleted file mode 100644 index 5ce26ca7474..00000000000 --- a/implementation-contributed/v8/mjsunit/closures.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function runner(f, expected) { - assertEquals(expected, f.call(this)); -} - -function test(n) { - function MyFunction() { - var result = n * 2 + arguments.length; - return result; - } - for (var i = 0; i < 5; ++i) MyFunction(); - %OptimizeFunctionOnNextCall(MyFunction) - runner(MyFunction, n * 2); -} - -test(1); -test(42); -test(239); diff --git a/implementation-contributed/v8/mjsunit/code-comments.js b/implementation-contributed/v8/mjsunit/code-comments.js deleted file mode 100644 index 7c013c1f154..00000000000 --- a/implementation-contributed/v8/mjsunit/code-comments.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --code-comments --print-code - -(function simple_test() { - function fib(n) { - return n < 2 ? n : fib(n - 1) + fib(n - 2); - } - - // Call a number of times to trigger optimization. - for (let i = 0; i < 100; ++i) { - fib(8); - } -})(); - -(function test_asm() { - function asm() { - 'use asm'; - function f() {} - return f; - } - - var m = asm(); -})(); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-ad-hoc.js b/implementation-contributed/v8/mjsunit/code-coverage-ad-hoc.js deleted file mode 100644 index 184c7d52b7c..00000000000 --- a/implementation-contributed/v8/mjsunit/code-coverage-ad-hoc.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode -// Files: test/mjsunit/code-coverage-utils.js - -// Test code coverage without explicitly activating it upfront. - -TestCoverageNoGC( -"call simple function twice", -` -function f() {} -f(); -f(); -`, -[{"start":0,"end":25,"count":1}, - {"start":0,"end":15,"count":1}] -); - -TestCoverageNoGC( -"call arrow function twice", -` -var f = () => 1; -f(); -f(); -`, -[{"start":0,"end":26,"count":1}, - {"start":8,"end":15,"count":1}] -); - -TestCoverageNoGC( -"call nested function", -` -function f() { - function g() {} - g(); - g(); -} -f(); -f(); -`, -[{"start":0,"end":58,"count":1}, - {"start":0,"end":48,"count":1}, - {"start":17,"end":32,"count":1}] -); - -TestCoverageNoGC( -"call recursive function", -` -function fib(x) { - if (x < 2) return 1; - return fib(x-1) + fib(x-2); -} -fib(5); -`, -[{"start":0,"end":80,"count":1}, - {"start":0,"end":72,"count":1}] -); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-block-noopt.js b/implementation-contributed/v8/mjsunit/code-coverage-block-noopt.js deleted file mode 100644 index 9865e6ee27b..00000000000 --- a/implementation-contributed/v8/mjsunit/code-coverage-block-noopt.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode -// Flags: --no-opt -// Files: test/mjsunit/code-coverage-utils.js - -%DebugToggleBlockCoverage(true); - -TestCoverage( -"optimized and inlined functions", -` -function g() { if (true) nop(); } // 0000 -function f() { g(); g(); } // 0050 -f(); f(); %OptimizeFunctionOnNextCall(f); // 0100 -f(); f(); f(); f(); f(); f(); // 0150 -`, -[{"start":0,"end":199,"count":1}, - {"start":0,"end":33,"count":16}, - {"start":50,"end":76,"count":8}] -); - -// In contrast to the corresponding test in -opt.js, f is not optimized here -// and therefore reports its invocation count correctly. -TestCoverage("Partial coverage collection", -` -!function() { // 0000 - function f(x) { // 0050 - if (x) { nop(); } else { nop(); } // 0100 - } // 0150 - f(true); f(true); // 0200 - %OptimizeFunctionOnNextCall(f); // 0250 - %DebugCollectCoverage(); // 0300 - f(false); // 0350 -}(); // 0400 -`, -[{"start":52,"end":153,"count":1}, - {"start":111,"end":121,"count":0}] -); - - -%DebugToggleBlockCoverage(false); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-block-opt.js b/implementation-contributed/v8/mjsunit/code-coverage-block-opt.js deleted file mode 100644 index ee21ff6a80d..00000000000 --- a/implementation-contributed/v8/mjsunit/code-coverage-block-opt.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt --opt -// Flags: --no-stress-flush-bytecode -// Files: test/mjsunit/code-coverage-utils.js - -if (isNeverOptimizeLiteMode()) { - print("Warning: skipping test that requires optimization in Lite mode."); - quit(0); -} - -%DebugToggleBlockCoverage(true); - -TestCoverage( -"optimized and inlined functions", -` -function g() { if (true) nop(); } // 0000 -function f() { g(); g(); } // 0050 -f(); f(); %OptimizeFunctionOnNextCall(f); // 0100 -f(); f(); f(); f(); f(); f(); // 0150 -`, -[{"start":0,"end":199,"count":1}, - {"start":0,"end":33,"count":4}, // TODO(jgruber): Invocation count is off. - {"start":25,"end":31,"count":16}, - {"start":50,"end":76,"count":2}] // TODO(jgruber): Invocation count is off. -); - -// This test is tricky: it requires a non-toplevel, optimized function. -// After initial collection, counts are cleared. Further invocation_counts -// are not collected for optimized functions, and on the next coverage -// collection we and up with an uncovered function with an uncovered parent -// but with non-trivial block coverage. -TestCoverage("Partial coverage collection", -` -!function() { // 0000 - function f(x) { // 0050 - if (x) { nop(); } else { nop(); } // 0100 - } // 0150 - f(true); f(true); // 0200 - %OptimizeFunctionOnNextCall(f); // 0250 - %DebugCollectCoverage(); // 0300 - f(false); // 0350 -}(); // 0400 -`, -[{"start":52,"end":153,"count":0}, - {"start":121,"end":137,"count":1}] -); - -%DebugToggleBlockCoverage(false); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-block.js b/implementation-contributed/v8/mjsunit/code-coverage-block.js deleted file mode 100644 index 0547d54a426..00000000000 --- a/implementation-contributed/v8/mjsunit/code-coverage-block.js +++ /dev/null @@ -1,1007 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode -// Files: test/mjsunit/code-coverage-utils.js - -%DebugToggleBlockCoverage(true); - -TestCoverage( -"call an IIFE", -` -(function f() {})(); -`, -[{"start":0,"end":20,"count":1},{"start":1,"end":16,"count":1}] -); - -TestCoverage( -"call locally allocated function", -`let f = () => 1; f();`, -[{"start":0,"end":21,"count":1},{"start":8,"end":15,"count":1}] -); - -TestCoverage( -"if statements", -` -function g() {} // 0000 -function f(x) { // 0050 - if (x == 42) { // 0100 - if (x == 43) g(); else g(); // 0150 - } // 0200 - if (x == 42) { g(); } else { g(); } // 0250 - if (x == 42) g(); else g(); // 0300 - if (false) g(); else g(); // 0350 - if (false) g(); // 0400 - if (true) g(); else g(); // 0450 - if (true) g(); // 0500 -} // 0550 -f(42); // 0600 -f(43); // 0650 -if (true) { // 0700 - const foo = 'bar'; // 0750 -} else { // 0800 - const bar = 'foo'; // 0850 -} // 0900 -`, -[{"start":0,"end":949,"count":1}, - {"start":801,"end":901,"count":0}, - {"start":0,"end":15,"count":11}, - {"start":50,"end":551,"count":2}, - {"start":115,"end":203,"count":1}, - {"start":167,"end":171,"count":0}, - {"start":265,"end":287,"count":1}, - {"start":315,"end":329,"count":1}, - {"start":363,"end":367,"count":0}, - {"start":413,"end":417,"count":0}, - {"start":466,"end":476,"count":0}] -); - -TestCoverage( -"if statement (early return)", -` -!function() { // 0000 - if (true) { // 0050 - nop(); // 0100 - return; // 0150 - nop(); // 0200 - } // 0250 - nop(); // 0300 -}() // 0350 -`, -[{"start":0,"end":399,"count":1}, - {"start":1,"end":351,"count":1}, - {"start":161,"end":350,"count":0}] -); - -TestCoverage( -"if statement (no semi-colon)", -` -!function() { // 0000 - if (true) nop() // 0050 - if (true) nop(); else nop() // 0100 - nop(); // 0150 -}() // 0200 -`, -[{"start":0,"end":249,"count":1}, - {"start":1,"end":201,"count":1}, - {"start":118,"end":129,"count":0}] -); - -TestCoverage( -"for statements", -` -function g() {} // 0000 -!function() { // 0050 - for (var i = 0; i < 12; i++) g(); // 0100 - for (var i = 0; i < 12; i++) { // 0150 - g(); // 0200 - } // 0250 - for (var i = 0; false; i++) g(); // 0300 - for (var i = 0; true; i++) break; // 0350 - for (var i = 0; i < 12; i++) { // 0400 - if (i % 3 == 0) g(); else g(); // 0450 - } // 0500 -}(); // 0550 -`, -[{"start":0,"end":599,"count":1}, - {"start":0,"end":15,"count":36}, - {"start":51,"end":551,"count":1}, - {"start":131,"end":135,"count":12}, - {"start":181,"end":253,"count":12}, - {"start":330,"end":334,"count":0}, - {"start":431,"end":503,"count":12}, - {"start":470,"end":474,"count":4}, - {"start":474,"end":484,"count":8}] -); - -TestCoverage( -"for statements pt. 2", -` -function g() {} // 0000 -!function() { // 0050 - let j = 0; // 0100 - for (let i = 0; i < 12; i++) g(); // 0150 - for (const i = 0; j < 12; j++) g(); // 0200 - for (j = 0; j < 12; j++) g(); // 0250 - for (;;) break; // 0300 -}(); // 0350 -`, -[{"start":0,"end":399,"count":1}, - {"start":0,"end":15,"count":36}, - {"start":51,"end":351,"count":1}, - {"start":181,"end":185,"count":12}, - {"start":233,"end":237,"count":12}, - {"start":277,"end":281,"count":12}] -); - -TestCoverage( -"for statements (no semicolon)", -` -function g() {} // 0000 -!function() { // 0050 - for (let i = 0; i < 12; i++) g() // 0100 - for (let i = 0; i < 12; i++) break // 0150 - for (let i = 0; i < 12; i++) break; g() // 0200 -}(); // 0250 -`, -[{"start":0,"end":299,"count":1}, - {"start":0,"end":15,"count":13}, - {"start":51,"end":251,"count":1}, - {"start":131,"end":134,"count":12}] -); - -TestCoverage( -"for statement (early return)", -` -!function() { // 0000 - for (var i = 0; i < 10; i++) { // 0050 - nop(); // 0100 - continue; // 0150 - nop(); // 0200 - } // 0250 - nop(); // 0300 - for (;;) { // 0350 - nop(); // 0400 - break; // 0450 - nop(); // 0500 - } // 0550 - nop(); // 0600 - for (;;) { // 0650 - nop(); // 0700 - return; // 0750 - nop(); // 0800 - } // 0850 - nop(); // 0900 -}() // 0950 -`, -[{"start":0,"end":999,"count":1}, - {"start":1,"end":951,"count":1}, - {"start":81,"end":253,"count":10}, - {"start":163,"end":253,"count":0}, - {"start":460,"end":553,"count":0}, - {"start":761,"end":950,"count":0}] -); - -TestCoverage( -"for-of and for-in statements", -` -!function() { // 0000 - var i; // 0050 - for (i of [0,1,2,3]) { nop(); } // 0100 - for (let j of [0,1,2,3]) { nop(); } // 0150 - for (i in [0,1,2,3]) { nop(); } // 0200 - for (let j in [0,1,2,3]) { nop(); } // 0250 - var xs = [{a:0, b:1}, {a:1,b:0}]; // 0300 - for (var {a: x, b: y} of xs) { nop(); } // 0350 -}(); // 0400 -`, -[{"start":0,"end":449,"count":1}, - {"start":1,"end":401,"count":1}, - {"start":123,"end":133,"count":4}, - {"start":177,"end":187,"count":4}, - {"start":223,"end":233,"count":4}, - {"start":277,"end":287,"count":4}, - {"start":381,"end":391,"count":2}] -); - -TestCoverage( -"for-await-of statements", -` -!async function() { // 0000 - for await (var x of [0,1,2,3]) { // 0050 - nop(); // 0100 - } // 0150 -}(); // 0200 -%PerformMicrotaskCheckpoint(); // 0250 -`, -[{"start":0,"end":299,"count":1}, - {"start":1,"end":201,"count":6}, // TODO(jgruber): Invocation count is off. - {"start":83,"end":153,"count":4}, - {"start":153,"end":200,"count":1}] -); - -TestCoverage( -"while and do-while statements", -` -function g() {} // 0000 -!function() { // 0050 - var i; // 0100 - i = 0; while (i < 12) i++; // 0150 - i = 0; while (i < 12) { g(); i++; } // 0200 - i = 0; while (false) g(); // 0250 - i = 0; while (true) break; // 0300 - // 0350 - i = 0; do i++; while (i < 12); // 0400 - i = 0; do { g(); i++; } // 0450 - while (i < 12); // 0500 - i = 0; do { g(); } while (false); // 0550 - i = 0; do { break; } while (true); // 0600 -}(); // 0650 -`, -[{"start":0,"end":699,"count":1}, - {"start":0,"end":15,"count":25}, - {"start":51,"end":651,"count":1}, - {"start":174,"end":178,"count":12}, - {"start":224,"end":237,"count":12}, - {"start":273,"end":277,"count":0}, - {"start":412,"end":416,"count":12}, - {"start":462,"end":475,"count":12}] -); - -TestCoverage( -"while statement (early return)", -` -!function() { // 0000 - let i = 0; // 0050 - while (i < 10) { // 0100 - i++; // 0150 - continue; // 0200 - nop(); // 0250 - } // 0300 - nop(); // 0350 - while (true) { // 0400 - nop(); // 0450 - break; // 0500 - nop(); // 0550 - } // 0600 - nop(); // 0650 - while (true) { // 0700 - nop(); // 0750 - return; // 0800 - nop(); // 0850 - } // 0900 - nop(); // 0950 -}() // 1000 -`, -[{"start":0,"end":1049,"count":1}, - {"start":1,"end":1001,"count":1}, - {"start":117,"end":303,"count":10}, - {"start":213,"end":303,"count":0}, - {"start":510,"end":603,"count":0}, - {"start":811,"end":1000,"count":0}] -); - -TestCoverage( -"do-while statement (early return)", -` -!function() { // 0000 - let i = 0; // 0050 - do { // 0100 - i++; // 0150 - continue; // 0200 - nop(); // 0250 - } while (i < 10); // 0300 - nop(); // 0350 - do { // 0400 - nop(); // 0450 - break; // 0500 - nop(); // 0550 - } while (true); // 0600 - nop(); // 0650 - do { // 0700 - nop(); // 0750 - return; // 0800 - nop(); // 0850 - } while (true); // 0900 - nop(); // 0950 -}() // 1000 -`, -[{"start":0,"end":1049,"count":1}, - {"start":1,"end":1001,"count":1}, - {"start":105,"end":303,"count":10}, - {"start":213,"end":303,"count":0}, - {"start":510,"end":603,"count":0}, - {"start":811,"end":1000,"count":0}] -); - -TestCoverage( -"return statements", -` -!function() { nop(); return; nop(); }(); // 0000 -!function() { nop(); return 42; // 0050 - nop(); }(); // 0100 -`, -[{"start":0,"end":149,"count":1}, - {"start":1,"end":37,"count":1}, - {"start":28,"end":36,"count":0}, - {"start":51,"end":122,"count":1}, - {"start":81,"end":121,"count":0}] -); - -TestCoverage( -"try/catch/finally statements", -` -!function() { // 0000 - try { nop(); } catch (e) { nop(); } // 0050 - try { nop(); } finally { nop(); } // 0100 - try { // 0150 - try { throw 42; } catch (e) { nop(); }// 0200 - } catch (e) { nop(); } // 0250 - try { // 0300 - try { throw 42; } finally { nop(); } // 0350 - } catch (e) { nop(); } // 0400 - try { // 0450 - throw 42; // 0500 - } catch (e) { // 0550 - nop(); // 0600 - } finally { // 0650 - nop(); // 0700 - } // 0750 -}(); // 0800 -`, -[{"start":0,"end":849,"count":1}, - {"start":1,"end":801,"count":1}, - {"start":67,"end":87,"count":0}, - {"start":219,"end":222,"count":0}, - {"start":254,"end":274,"count":0}, - {"start":369,"end":372,"count":0}, - {"start":403,"end":404,"count":0}, - {"start":513,"end":554,"count":0}] -); - -TestCoverage("try/catch/finally statements with early return", -` -!function() { // 0000 - try { throw 42; } catch (e) { return; } // 0050 - nop(); // 0100 -}(); // 0150 -!function() { // 0200 - try { throw 42; } catch (e) {} // 0250 - finally { return; } // 0300 - nop(); // 0350 -}(); // 0400 -`, -[{"start":0,"end":449,"count":1}, - {"start":1,"end":151,"count":1}, - {"start":67,"end":70,"count":0}, - {"start":91,"end":150,"count":0}, - {"start":201,"end":401,"count":1}, - {"start":267,"end":270,"count":0}, - {"start":321,"end":400,"count":0}] -); - -TestCoverage( -"early return in blocks", -` -!function() { // 0000 - try { throw 42; } catch (e) { return; } // 0050 - nop(); // 0100 -}(); // 0150 -!function() { // 0200 - try { nop(); } finally { return; } // 0250 - nop(); // 0300 -}(); // 0350 -!function() { // 0400 - { // 0450 - let x = 42; // 0500 - return () => x; // 0550 - } // 0600 - nop(); // 0650 -}(); // 0700 -!function() { // 0750 - try { throw 42; } catch (e) { // 0800 - return; // 0850 - nop(); // 0900 - } // 0950 - nop(); // 1000 -}(); // 1050 -`, -[{"start":0,"end":1099,"count":1}, - {"start":1,"end":151,"count":1}, - {"start":67,"end":70,"count":0}, - {"start":91,"end":150,"count":0}, - {"start":201,"end":351,"count":1}, - {"start":286,"end":350,"count":0}, - {"start":401,"end":701,"count":1}, - {"start":603,"end":700,"count":0}, - {"start":561,"end":568,"count":0}, // TODO(jgruber): Sorting. - {"start":751,"end":1051,"count":1}, - {"start":817,"end":820,"count":0}, - {"start":861,"end":1050,"count":0}] -); - -TestCoverage( -"switch statements", -` -!function() { // 0000 - var x = 42; // 0050 - switch (x) { // 0100 - case 41: nop(); break; // 0150 - case 42: nop(); break; // 0200 - default: nop(); break; // 0250 - } // 0300 -}(); // 0350 -`, -[{"start":0,"end":399,"count":1}, - {"start":1,"end":351,"count":1}, - {"start":154,"end":204,"count":0}, - {"start":226,"end":350,"count":0}] -); - -TestCoverage( -"labeled break statements", -` -!function() { // 0000 - var x = 42; // 0050 - l0: switch (x) { // 0100 - case 41: return; // 0150 - case 42: // 0200 - switch (x) { case 42: break l0; } // 0250 - break; // 0300 - } // 0350 - l1: for (;;) { // 0400 - for (;;) break l1; // 0450 - } // 0500 - l2: while (true) { // 0550 - while (true) break l2; // 0600 - } // 0650 - l3: do { // 0700 - do { break l3; } while (true); // 0750 - } while (true); // 0800 - l4: { break l4; } // 0850 - l5: for (;;) for (;;) break l5; // 0900 -}(); // 0950 -`, -[{"start":0,"end":999,"count":1}, - {"start":1,"end":951,"count":1}, - {"start":152,"end":202,"count":0}, - {"start":285,"end":353,"count":0}] -); - -TestCoverage( -"labeled continue statements", -` -!function() { // 0000 - l0: for (var i0 = 0; i0 < 2; i0++) { // 0050 - for (;;) continue l0; // 0100 - } // 0150 - var i1 = 0; // 0200 - l1: while (i1 < 2) { // 0250 - i1++; // 0300 - while (true) continue l1; // 0350 - } // 0400 - var i2 = 0; // 0450 - l2: do { // 0500 - i2++; // 0550 - do { continue l2; } while (true); // 0600 - } while (i2 < 2); // 0650 -}(); // 0700 -`, -[{"start":0,"end":749,"count":1}, - {"start":1,"end":701,"count":1}, - {"start":87,"end":153,"count":2}, - {"start":271,"end":403,"count":2}, - {"start":509,"end":653,"count":2}] -); - -TestCoverage( -"conditional expressions", -` -var TRUE = true; // 0000 -var FALSE = false; // 0050 -!function() { // 0100 - TRUE ? nop() : nop(); // 0150 - true ? nop() : nop(); // 0200 - false ? nop() : nop(); // 0250 - FALSE ? TRUE ? nop() // 0300 - : nop() // 0350 - : nop(); // 0400 - TRUE ? FALSE ? nop() // 0450 - : nop() // 0500 - : nop(); // 0550 - TRUE ? nop() : FALSE ? nop() // 0600 - : nop(); // 0650 - FALSE ? nop() : TRUE ? nop() // 0700 - : nop(); // 0750 -}(); // 0800 -`, -[{"start":0,"end":849,"count":1}, - {"start":101,"end":801,"count":1}, - {"start":165,"end":172,"count":0}, - {"start":215,"end":222,"count":0}, - {"start":258,"end":265,"count":0}, - {"start":308,"end":372,"count":0}, - {"start":465,"end":472,"count":0}, - {"start":557,"end":564,"count":0}, - {"start":615,"end":680,"count":0}, - {"start":708,"end":715,"count":0}, - {"start":773,"end":780,"count":0}] -); - -TestCoverage( -"yield expressions", -` -const it = function*() { // 0000 - yield nop(); // 0050 - yield nop() ? nop() : nop() // 0100 - return nop(); // 0150 -}(); // 0200 -it.next(); it.next(); // 0250 -`, -[{"start":0,"end":299,"count":1}, - {"start":11,"end":201,"count":3}, - {"start":64,"end":114,"count":1}, - {"start":114,"end":121,"count":0}, - {"start":122,"end":129,"count":1}, - {"start":129,"end":200,"count":0}] -); - -TestCoverage( -"yield expressions (.return and .throw)", -` -const it0 = function*() { // 0000 - yield 1; yield 2; yield 3; // 0050 -}(); // 0100 -it0.next(); it0.return(); // 0150 -try { // 0200 - const it1 = function*() { // 0250 - yield 1; yield 2; yield 3; // 0300 - }(); // 0350 - it1.next(); it1.throw(); // 0400 -} catch (e) {} // 0450 -`, -[{"start":0,"end":499,"count":1}, - {"start":451,"end":452,"count":0}, - {"start":12,"end":101,"count":3}, - {"start":60,"end":100,"count":0}, - {"start":264,"end":353,"count":3}, - {"start":312,"end":352,"count":0}] -); - -TestCoverage("yield expressions (.return and try/catch/finally)", -` -const it = function*() { // 0000 - try { // 0050 - yield 1; yield 2; yield 3; // 0100 - } catch (e) { // 0150 - nop(); // 0200 - } finally { nop(); } // 0250 - yield 4; // 0300 -}(); // 0350 -it.next(); it.return(); // 0450 -`, -[{"start":0,"end":449,"count":1}, - {"start":11,"end":351,"count":3}, - {"start":112,"end":254,"count":0}, - {"start":254,"end":272,"count":1}, - {"start":272,"end":350,"count":0}] -); - -TestCoverage("yield expressions (.throw and try/catch/finally)", -` -const it = function*() { // 0000 - try { // 0050 - yield 1; yield 2; yield 3; // 0100 - } catch (e) { // 0150 - nop(); // 0200 - } finally { nop(); } // 0250 - yield 4; // 0300 -}(); // 0350 -it.next(); it.throw(42); // 0550 -`, -[{"start":0,"end":449,"count":1}, - {"start":11,"end":351,"count":3}, - {"start":112,"end":154,"count":0}, - {"start":154,"end":310,"count":1}, - {"start":310,"end":350,"count":0}] -); - -TestCoverage( -"yield* expressions", -` -const it = function*() { // 0000 - yield* gen(); // 0050 - yield* nop() ? gen() : gen() // 0100 - return gen(); // 0150 -}(); // 0200 -it.next(); it.next(); it.next(); // 0250 -it.next(); it.next(); it.next(); // 0300 -`, -[{"start":0,"end":349,"count":1}, - {"start":11,"end":201,"count":7}, - {"start":65,"end":115,"count":1}, - {"start":115,"end":122,"count":0}, - {"start":123,"end":130,"count":1}, - {"start":130,"end":200,"count":0}] -); - -TestCoverage( -"yield* expressions (.return and .throw)", -` -const it0 = function*() { // 0000 - yield* gen(); yield* gen(); yield 3; // 0050 -}(); // 0100 -it0.next(); it0.return(); // 0150 -try { // 0200 - const it1 = function*() { // 0250 - yield* gen(); yield* gen(); yield 3; // 0300 - }(); // 0350 - it1.next(); it1.throw(); // 0400 -} catch (e) {} // 0450 -`, -[{"start":0,"end":499,"count":1}, - {"start":451,"end":452,"count":0}, - {"start":12,"end":101,"count":3}, - {"start":65,"end":100,"count":0}, - {"start":264,"end":353,"count":3}, - {"start":317,"end":352,"count":0}] -); - -TestCoverage( -"await expressions", -` -async function f() { // 0000 - await 42; // 0050 - await 42; // 0100 -}; // 0150 -f(); // 0200 -%PerformMicrotaskCheckpoint(); // 0250 -`, -[{"start":0,"end":299,"count":1}, - {"start":0,"end":151,"count":3}, - {"start":61,"end":150,"count":1}] -); - -TestCoverage( -"LogicalOrExpression assignment", -` -const a = true || 99 // 0000 -function b () { // 0050 - const b = a || 2 // 0100 -} // 0150 -b() // 0200 -b() // 0250 -`, -[{"start":0,"end":299,"count":1}, - {"start":15,"end":20,"count":0}, - {"start":50,"end":151,"count":2}, - {"start":114,"end":118,"count":0}]); - -TestCoverage( -"LogicalOrExpression IsTest()", -` -true || false // 0000 -const a = 99 // 0050 -a || 50 // 0100 -const b = false // 0150 -if (b || true) {} // 0200 -`, -[{"start":0,"end":249,"count":1}, - {"start":5,"end":13,"count":0}, - {"start":102,"end":107,"count":0}]); - -TestCoverage( -"LogicalAndExpression assignment", -` -const a = false && 99 // 0000 -function b () { // 0050 - const b = a && 2 // 0100 -} // 0150 -b() // 0200 -b() // 0250 -const c = true && 50 // 0300 -`, -[{"start":0,"end":349,"count":1}, - {"start":16,"end":21,"count":0}, - {"start":50,"end":151,"count":2}, - {"start":114,"end":118,"count":0}]); - -TestCoverage( -"LogicalAndExpression IsTest()", -` -false && true // 0000 -const a = 0 // 0050 -a && 50 // 0100 -const b = true // 0150 -if (b && true) {} // 0200 -true && true // 0250 -`, -[{"start":0,"end":299,"count":1}, - {"start":6,"end":13,"count":0}, - {"start":102,"end":107,"count":0}]); - -TestCoverage( -"NaryLogicalOr assignment", -` -const a = true // 0000 -const b = false // 0050 -const c = false || false || 99 // 0100 -const d = false || true || 99 // 0150 -const e = true || true || 99 // 0200 -const f = b || b || 99 // 0250 -const g = b || a || 99 // 0300 -const h = a || a || 99 // 0350 -const i = a || (b || c) || d // 0400 -`, -[{"start":0,"end":449,"count":1}, - {"start":174,"end":179,"count":0}, - {"start":215,"end":222,"count":0}, - {"start":223,"end":228,"count":0}, - {"start":317,"end":322,"count":0}, - {"start":362,"end":366,"count":0}, - {"start":367,"end":372,"count":0}, - {"start":412,"end":423,"count":0}, - {"start":424,"end":428,"count":0}]); - -TestCoverage( -"NaryLogicalOr IsTest()", -` -const a = true // 0000 -const b = false // 0050 -false || false || 99 // 0100 -false || true || 99 // 0150 -true || true || 99 // 0200 -b || b || 99 // 0250 -b || a || 99 // 0300 -a || a || 99 // 0350 -`, -[{"start":0,"end":399,"count":1}, - {"start":164,"end":169,"count":0}, - {"start":205,"end":212,"count":0}, - {"start":213,"end":218,"count":0}, - {"start":307,"end":312,"count":0}, - {"start":352,"end":356,"count":0}, - {"start":357,"end":362,"count":0}]); - -TestCoverage( -"NaryLogicalAnd assignment", -` -const a = true // 0000 -const b = false // 0050 -const c = false && false && 99 // 0100 -const d = false && true && 99 // 0150 -const e = true && true && 99 // 0200 -const f = true && false || true // 0250 -const g = true || false && true // 0300 -`, -[{"start":0,"end":349,"count":1}, - {"start":116,"end":124,"count":0}, - {"start":125,"end":130,"count":0}, - {"start":166,"end":173,"count":0}, - {"start":174,"end":179,"count":0}, - {"start":315,"end":331,"count":0} -]); - -TestCoverage( -"NaryLogicalAnd IsTest()", -` -const a = true // 0000 -const b = false // 0050 -false && false && 99 // 0100 -false && true && 99 // 0150 -true && true && 99 // 0200 -true && false || true // 0250 -true || false && true // 0300 -false || false || 99 || 55 // 0350 -`, -[{"start":0,"end":399,"count":1}, - {"start":106,"end":114,"count":0}, - {"start":115,"end":120,"count":0}, - {"start":156,"end":163,"count":0}, - {"start":164,"end":169,"count":0}, - {"start":305,"end":321,"count":0}, - {"start":371,"end":376,"count":0}]); - -// see regression: https://bugs.chromium.org/p/chromium/issues/detail?id=785778 -TestCoverage( -"logical expressions + conditional expressions", -` -const a = true // 0000 -const b = 99 // 0050 -const c = false // 0100 -const d = '' // 0150 -const e = a && (b ? 'left' : 'right') // 0200 -const f = a || (b ? 'left' : 'right') // 0250 -const g = c || d ? 'left' : 'right' // 0300 -const h = a && b && (b ? 'left' : 'right')// 0350 -const i = d || c || (c ? 'left' : 'right')// 0400 -`, -[{"start":0,"end":449,"count":1}, - {"start":227,"end":236,"count":0}, - {"start":262,"end":287,"count":0}, - {"start":317,"end":325,"count":0}, - {"start":382,"end":391,"count":0}, - {"start":423,"end":431,"count":0} -]); - -TestCoverage( -"https://crbug.com/827530", -` -Util = {}; // 0000 -Util.escape = function UtilEscape(str) { // 0050 - if (!str) { // 0100 - return 'if'; // 0150 - } else { // 0200 - return 'else'; // 0250 - } // 0300 -}; // 0350 -Util.escape("foo.bar"); // 0400 -`, -[{"start":0,"end":449,"count":1}, - {"start":64,"end":351,"count":1}, - {"start":112,"end":203,"count":0}] -); - -TestCoverage( -"https://crbug.com/v8/8237", -` -!function() { // 0000 - if (true) // 0050 - while (false) return; else nop(); // 0100 -}(); // 0150 -!function() { // 0200 - if (true) l0: { break l0; } else // 0250 - if (nop()) { } // 0300 -}(); // 0350 -!function() { // 0400 - if (true) { if (false) { return; } // 0450 - } else if (nop()) { } }(); // 0500 -!function(){ // 0550 - if(true)while(false)return;else nop() // 0600 -}(); // 0650 -!function(){ // 0700 - if(true) l0:{break l0}else if (nop()){} // 0750 -}(); // 0800 -!function(){ // 0850 - if(true){if(false){return}}else // 0900 - if(nop()){} // 0950 -}(); // 1000 -`, -[{"start":0,"end":1049,"count":1}, - {"start":1,"end":151,"count":1}, - {"start":118,"end":137,"count":0}, - {"start":201,"end":351,"count":1}, - {"start":279,"end":318,"count":0}, - {"start":401,"end":525,"count":1}, - {"start":475,"end":486,"count":0}, - {"start":503,"end":523,"count":0}, - {"start":551,"end":651,"count":1}, - {"start":622,"end":639,"count":0}, - {"start":701,"end":801,"count":1}, - {"start":774,"end":791,"count":0}, - {"start":851,"end":1001,"count":1}, - {"start":920,"end":928,"count":0}, - {"start":929,"end":965,"count":0}] -); - -TestCoverage( -"terminal break statement", -` -while (true) { // 0000 - const b = false // 0050 - break // 0100 -} // 0150 -let stop = false // 0200 -while (true) { // 0250 - if (stop) { // 0300 - break // 0350 - } // 0400 - stop = true // 0450 -} // 0500 -`, -[{"start":0,"end":549,"count":1}, - {"start":263,"end":501,"count":2}, - {"start":312,"end":501,"count":1}] -); - -TestCoverage( -"terminal return statement", -` -function a () { // 0000 - const b = false // 0050 - return 1 // 0100 -} // 0150 -const b = (early) => { // 0200 - if (early) { // 0250 - return 2 // 0300 - } // 0350 - return 3 // 0400 -} // 0450 -const c = () => { // 0500 - if (true) { // 0550 - return // 0600 - } // 0650 -} // 0700 -a(); b(false); b(true); c() // 0750 -`, -[{"start":0,"end":799,"count":1}, - {"start":0,"end":151,"count":1}, - {"start":210,"end":451,"count":2}, - {"start":263,"end":450,"count":1}, - {"start":510,"end":701,"count":1}] -); - -TestCoverage( -"terminal blocks", -` -function a () { // 0000 - { // 0050 - return 'a' // 0100 - } // 0150 -} // 0200 -function b () { // 0250 - { // 0300 - { // 0350 - return 'b' // 0400 - } // 0450 - } // 0500 -} // 0550 -a(); b() // 0600 -`, -[{"start":0,"end":649,"count":1}, - {"start":0,"end":201,"count":1}, - {"start":250,"end":551,"count":1}] -); - -TestCoverage( -"terminal if statements", -` -function a (branch) { // 0000 - if (branch) { // 0050 - return 'a' // 0100 - } else { // 0150 - return 'b' // 0200 - } // 0250 -} // 0300 -function b (branch) { // 0350 - if (branch) { // 0400 - if (branch) { // 0450 - return 'c' // 0500 - } // 0550 - } // 0600 -} // 0650 -function c (branch) { // 0700 - if (branch) { // 0750 - return 'c' // 0800 - } else { // 0850 - return 'd' // 0900 - } // 0950 -} // 1000 -function d (branch) { // 1050 - if (branch) { // 1100 - if (!branch) { // 1150 - return 'e' // 1200 - } else { // 1250 - return 'f' // 1300 - } // 1350 - } else { // 1400 - // noop // 1450 - } // 1500 -} // 1550 -a(true); a(false); b(true); b(false) // 1600 -c(true); d(true); // 1650 -`, -[{"start":0,"end":1699,"count":1}, - {"start":0,"end":301,"count":2}, - {"start":64,"end":253,"count":1}, - {"start":350,"end":651,"count":2}, - {"start":414,"end":603,"count":1}, - {"start":700,"end":1001,"count":1}, - {"start":853,"end":953,"count":0}, - {"start":1050,"end":1551,"count":1}, - {"start":1167,"end":1255,"count":0}, - {"start":1403,"end":1503,"count":0}] -); - -%DebugToggleBlockCoverage(false); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-class-fields.js b/implementation-contributed/v8/mjsunit/code-coverage-class-fields.js deleted file mode 100644 index 8db45d142b8..00000000000 --- a/implementation-contributed/v8/mjsunit/code-coverage-class-fields.js +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt --harmony-public-fields -// Flags: --harmony-static-fields --no-stress-flush-bytecode -// Files: test/mjsunit/code-coverage-utils.js - -%DebugToggleBlockCoverage(true); - -TestCoverage( -"class with no fields", -`class X { // 000 -}; // 050 -`, - [ - { start: 0, end: 98, count: 1 }, - { start: 0, end: 0, count: 0 }, - ] -); - -TestCoverage( -"class that's not created", -`class X { // 000 - x = function() { } // 050 -}; // 100 -`, - [ - { start: 0, end: 148, count: 1 }, - { start: 0, end: 0, count: 0 }, - { start: 51, end: 69, count: 0 }, - ] -); - -TestCoverage( -"class with field thats not called", -`class X { // 000 - x = function() { } // 050 -}; // 100 -let x = new X(); // 150 -`, - [ - { start: 0, end: 198, count: 1 }, - { start: 0, end: 0, count: 1 }, - { start: 51, end: 69, count: 1 }, - { start: 55, end: 69, count: 0 } - ] -); - -TestCoverage( -"class field", -`class X { // 000 - x = function() { } // 050 -}; // 100 -let x = new X(); // 150 -x.x(); // 200 -`, - [ - { start: 0, end: 248, count: 1 }, - { start: 0, end: 0, count: 1 }, - { start: 51, end: 69, count: 1 }, - { start: 55, end: 69, count: 1 } - ] -); - -TestCoverage( -"non contiguous class field", -`class X { // 000 - x = function() { } // 050 - foo() { } // 100 - y = function() {} // 150 -}; // 200 -let x = new X(); // 250 -x.x(); // 300 -x.y(); // 350 -`, - [ - { start: 0, end: 398, count: 1 }, - { start: 0, end: 0, count: 1 }, - { start: 51, end: 168, count: 1 }, - { start: 55, end: 69, count: 1 }, - { start: 101, end: 110, count: 0 }, - { start: 155, end: 168, count: 1 }, - ] -); - -TestCoverage( -"non contiguous class field thats called", -`class X { // 000 - x = function() { } // 050 - foo() { } // 100 - y = function() {} // 150 -}; // 200 -let x = new X(); // 250 -x.x(); // 300 -x.y(); // 350 -x.foo(); // 400 -`, - [ - { start: 0, end: 448, count: 1 }, - { start: 0, end: 0, count: 1 }, - { start: 51, end: 168, count: 1 }, - { start: 55, end: 69, count: 1 }, - { start: 101, end: 110, count: 1 }, - { start: 155, end: 168, count: 1 }, - ] -); - -TestCoverage( -"class with initializer iife", -`class X { // 000 - x = (function() { })() // 050 -}; // 100 -let x = new X(); // 150 -`, - [ - { start: 0, end: 198, count: 1 }, - { start: 0, end: 0, count: 1 }, - { start: 51, end: 73, count: 1 }, - { start: 56, end: 70, count: 1 } - ] -); - -TestCoverage( -"class with computed field", -` -function f() {}; // 000 -class X { // 050 - [f()] = (function() { })() // 100 -}; // 150 -let x = new X(); // 200 -`, - [ - { start: 0, end: 249, count: 1 }, - { start: 0, end: 15, count: 1 }, - { start: 50, end: 50, count: 1 }, - { start: 102, end: 128, count: 1 }, - { start: 111, end: 125, count: 1 } - ] -); - -TestCoverage( -"static class field that's not called", -`class X { // 000 - static x = function() { } // 050 -}; // 100 -`, - [ - { start: 0, end: 148, count: 1 }, - { start: 0, end: 0, count: 0 }, - { start: 51, end: 76, count: 1 }, - { start: 62, end: 76, count: 0 } - ] -); - -TestCoverage( -"static class field", -`class X { // 000 - static x = function() { } // 050 -}; // 100 -X.x(); // 150 -`, - [ - { start: 0, end: 198, count: 1 }, - { start: 0, end: 0, count: 0 }, - { start: 51, end: 76, count: 1 }, - { start: 62, end: 76, count: 1 } - ] -); - -TestCoverage( -"static class field with iife", -`class X { // 000 - static x = (function() { })() // 050 -}; // 100 -`, - [ - { start: 0, end: 148, count: 1 }, - { start: 0, end: 0, count: 0 }, - { start: 51, end: 80, count: 1 }, - { start: 63, end: 77, count: 1 } - ] -); - -TestCoverage( -"computed static class field", -` -function f() {} // 000 -class X { // 050 - static [f()] = (function() { })() // 100 -}; // 150 -`, - [ - { start: 0, end: 199, count: 1 }, - { start: 0, end: 15, count: 1 }, - { start: 50, end: 50, count: 0 }, - { start: 102, end: 135, count: 1 }, - { start: 118, end: 132, count: 1 } - ] -); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-precise.js b/implementation-contributed/v8/mjsunit/code-coverage-precise.js deleted file mode 100644 index 2593ed64a09..00000000000 --- a/implementation-contributed/v8/mjsunit/code-coverage-precise.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode -// Flags: --no-stress-incremental-marking -// Files: test/mjsunit/code-coverage-utils.js - -// Test precise code coverage. - -// Without precise coverage enabled, we lose coverage data to the GC. -TestCoverage( -"call an IIFE", -` -(function f() {})(); -`, -undefined // The IIFE has been garbage-collected. -); - -TestCoverage( -"call locally allocated function", -` -for (var i = 0; i < 10; i++) { - let f = () => 1; - i += f(); -} -`, -undefined -); - -// This does not happen with precise coverage enabled. -%DebugTogglePreciseCoverage(true); - -TestCoverage( -"call an IIFE", -` -(function f() {})(); -`, -[{"start":0,"end":20,"count":1},{"start":1,"end":16,"count":1}] -); - -TestCoverage( -"call locally allocated function", -` -for (var i = 0; i < 10; i++) { - let f = () => 1; - i += f(); -} -`, -[{"start":0,"end":63,"count":1},{"start":41,"end":48,"count":5}] -); - -%DebugTogglePreciseCoverage(false); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-utils.js b/implementation-contributed/v8/mjsunit/code-coverage-utils.js deleted file mode 100644 index 57833902220..00000000000 --- a/implementation-contributed/v8/mjsunit/code-coverage-utils.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let TestCoverage; -let TestCoverageNoGC; - -let nop; -let gen; - -!function() { - function GetCoverage(source) { - for (var script of %DebugCollectCoverage()) { - if (script.script === source) return script; - } - return undefined; - }; - - function TestCoverageInternal(name, source, expectation, collect_garbage) { - source = source.trim(); - eval(source); - if (collect_garbage) %CollectGarbage("collect dead objects"); - var covfefe = GetCoverage(source); - var stringified_result = JSON.stringify(covfefe); - var stringified_expectation = JSON.stringify(expectation); - if (stringified_result != stringified_expectation) { - print(stringified_result.replace(/[}],[{]/g, "},\n {")); - } - assertEquals(stringified_expectation, stringified_result, name + " failed"); - }; - - TestCoverage = function(name, source, expectation) { - TestCoverageInternal(name, source, expectation, true); - }; - - TestCoverageNoGC = function(name, source, expectation) { - TestCoverageInternal(name, source, expectation, false); - }; - - nop = function() {}; - - gen = function*() { - yield 1; - yield 2; - yield 3; - }; -}(); diff --git a/implementation-contributed/v8/mjsunit/codegen-coverage.js b/implementation-contributed/v8/mjsunit/codegen-coverage.js deleted file mode 100644 index cd538635d6e..00000000000 --- a/implementation-contributed/v8/mjsunit/codegen-coverage.js +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test paths in the code generator where values in specific registers -// get moved around. -function identity(x) { - return x; -} - -function lookup(w, a) { - // This function tests a code path in the generation of a keyed load IC - // where the key and the value are both in the same register. - a = a; - w[a] = a; -} - -function cover_codegen_paths() { - var x = 1; - - // This test depends on the fixed order of register allocation. We try to - // get values in specific registers (ia32, x64): - var a; // Register eax, rax. - var b; // Register ebx, rbx. - var c; // Register ecx, rcx. - var d; // Register edx, rdx. - var di; // Register edi, rdi. - - while (x == 1) { - // The call will spill registers and leave x in {eax,rax}. - x = identity(1); - // The add will spill x and reuse {eax,rax} for the result. - a = x + 1; - // A fresh register {ebx,rbx} will be allocated for x, then reused for - // the result. - b = x + 1; - // Et cetera. - c = x + 1; - d = x + 1; - di = x + 1; - // Locals are in the corresponding registers here. - assertEquals(8, c << a); - - x = identity(1); - a = x + 1; - b = x + 1; - c = x + 1; - d = x + 1; - di = x + 1; - assertEquals(8, a << c); - - x = identity(1); - a = x + 1; - b = x + 1; - c = x + 1; - d = x + 1; - di = x + 1; - c = 0; // Free register ecx. - assertEquals(8, a << d); - - x = identity(1); - a = x + 1; - b = x + 1; - c = x + 1; - d = x + 1; - di = x + 1; - b = 0; // Free register ebx. - assertEquals(8, a << d); - - // Test the non-commutative subtraction operation with a smi on the - // left, all available registers on the right, and a non-smi result. - x = identity(-1073741824); // Least (31-bit) smi. - a = x + 1; // Still a smi, the greatest smi negated. - b = x + 1; - c = x + 1; - d = x + 1; - di = x + 1; - // Subtraction should overflow the 31-bit smi range. The result - // (1073741824) is outside the 31-bit smi range so it doesn't hit the - // "unsafe smi" code that spills a register. - assertEquals(1073741824, 1 - a); - - x = identity(-1073741824); - a = x + 1; - b = x + 1; - c = x + 1; - d = x + 1; - di = x + 1; - assertEquals(1073741824, 1 - b); - - x = identity(-1073741824); - a = x + 1; - b = x + 1; - c = x + 1; - d = x + 1; - di = x + 1; - assertEquals(1073741824, 1 - c); - - x = identity(-1073741824); - a = x + 1; - b = x + 1; - c = x + 1; - d = x + 1; - di = x + 1; - assertEquals(1073741824, 1 - d); - - x = identity(-1073741824); - a = x + 1; - b = x + 1; - c = x + 1; - d = x + 1; - di = x + 1; - assertEquals(1073741824, 1 - di); - - x = 3; - var w = { }; - lookup(w, x); - lookup(w, x); - lookup(w, x); - - x = 3; // Terminate while loop. - } -} - -cover_codegen_paths(); diff --git a/implementation-contributed/v8/mjsunit/compare-character.js b/implementation-contributed/v8/mjsunit/compare-character.js deleted file mode 100644 index 8c812eec0e9..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-character.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the optimized implementation of comparison with single-character -// strings. - -var a = ['', String.fromCharCode(0), ' ', 'e', 'erik', 'f', 'foo', 'g', 'goo', - -1, 0, 1, 1.2, -7.9, true, false, 'foo', '0', 'NaN' ]; -for (var i in a) { - var x = a[i]; - var f = 'f'; - - assertEquals(x == f, x == 'f', "==" + x); - assertEquals(x === f, x === 'f', "===" + x); - assertEquals(x < f, x < 'f', "<" + x); - assertEquals(x <= f, x <= 'f', "<=" + x); - assertEquals(x > f, x > 'f', ">" + x); - assertEquals(x >= f, x >= 'f', ">=" + x); - assertEquals(f == x, 'f' == x, "==r" + x); - assertEquals(f === x, 'f' === x, "===r" + x); - assertEquals(f > x, 'f' > x, "= x, 'f' >= x, "<=r" + x); - assertEquals(f < x, 'f' < x, ">r" + x); - assertEquals(f <= x, 'f' <= x, ">=r" + x); -} diff --git a/implementation-contributed/v8/mjsunit/compare-known-objects-slow.js b/implementation-contributed/v8/mjsunit/compare-known-objects-slow.js deleted file mode 100644 index 41e9fb4ad7a..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-known-objects-slow.js +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test CompareIC stubs for normal and strict equality comparison of known -// objects in slow mode. These objects share the same map even though they -// might have completely different properties. - -function eq(a, b) { - return a == b; -} - -function eq_strict(a, b) { - return a === b; -} - -function le(a, b) { - return a <= b; -} - -function lt(a, b) { - return a < b; -} - -function ge(a, b) { - return a >= b; -} - -function gt(a, b) { - return a > b; -} - -function test(a, b) { - // Check CompareIC for equality of known objects. - assertTrue(eq(a, a)); - assertTrue(eq(b, b)); - assertFalse(eq(a, b)); - // Check CompareIC for strict equality of known objects. - assertTrue(eq_strict(a, a)); - assertTrue(eq_strict(b, b)); - assertFalse(eq_strict(a, b)); - // Check CompareIC for less than or equal of known objects. - assertTrue(le(a, a)); - assertTrue(le(a, b)); - assertTrue(le(b, a)); - // Check CompareIC for less than of known objects. - assertFalse(lt(a, a)); - assertFalse(lt(a, b)); - assertFalse(lt(b, a)); - // Check CompareIC for greater than or equal of known objects. - assertTrue(ge(a, a)); - assertTrue(ge(a, b)); - assertTrue(ge(b, a)); - // Check CompareIC for greater than of known objects. - assertFalse(gt(a, a)); - assertFalse(gt(a, b)); - assertFalse(gt(b, a)); -} - -// Prepare two objects in slow mode that have the same map. -var obj1 = %OptimizeObjectForAddingMultipleProperties({}, 1); -var obj2 = %OptimizeObjectForAddingMultipleProperties({}, 1); - -// Test original objects. -assertTrue(%HaveSameMap(obj1, obj2)); -test(obj1, obj2); - -// Test after adding property to first object. -obj1.x = 1; -assertTrue(%HaveSameMap(obj1, obj2)); -test(obj1, obj2); - -// Test after adding property to second object. -obj2.y = 2; -assertTrue(%HaveSameMap(obj1, obj2)); -test(obj1, obj2); diff --git a/implementation-contributed/v8/mjsunit/compare-known-objects-tostringtag.js b/implementation-contributed/v8/mjsunit/compare-known-objects-tostringtag.js deleted file mode 100644 index 4eacc8a8bea..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-known-objects-tostringtag.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function le(a, b) { - return a <= b; -} - -function lt(a, b) { - return a < b; -} - -function ge(a, b) { - return a >= b; -} - -function gt(a, b) { - return a > b; -} - -function test(a, b) { - // Check CompareIC for less than or equal of known objects. - assertThrows(function() {le(a, a)}); - assertThrows(function() {le(a, b)}); - assertThrows(function() {le(b, a)}); - // Check CompareIC for less than of known objects. - assertThrows(function() {lt(a, a)}); - assertThrows(function() {lt(a, b)}); - assertThrows(function() {lt(b, a)}); - // Check CompareIC for greater than or equal of known objects. - assertThrows(function() {ge(a, a)}); - assertThrows(function() {ge(a, b)}); - assertThrows(function() {ge(b, a)}); - // Check CompareIC for greater than of known objects. - assertThrows(function() {gt(a, a)}); - assertThrows(function() {gt(a, b)}); - assertThrows(function() {gt(b, a)}); -} - -function O() { } -Object.defineProperty(O.prototype, Symbol.toStringTag, { - get: function() { throw "@@toStringTag called!" } -}); - -var obj1 = new O; -var obj2 = new O; - -assertTrue(%HaveSameMap(obj1, obj2)); -test(obj1, obj2); -test(obj1, obj2); -%OptimizeFunctionOnNextCall(le); -%OptimizeFunctionOnNextCall(lt); -%OptimizeFunctionOnNextCall(ge); -%OptimizeFunctionOnNextCall(gt); -test(obj1, obj2); diff --git a/implementation-contributed/v8/mjsunit/compare-known-objects.js b/implementation-contributed/v8/mjsunit/compare-known-objects.js deleted file mode 100644 index 051b12d700d..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-known-objects.js +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test CompareIC stubs for normal and strict equality comparison of known -// objects in slow mode. These objects share the same map even though they -// might have completely different properties. - -function eq(a, b) { - return a == b; -} - -function eq_strict(a, b) { - return a === b; -} - -function le(a, b) { - return a <= b; -} - -function lt(a, b) { - return a < b; -} - -function ge(a, b) { - return a >= b; -} - -function gt(a, b) { - return a > b; -} - -function test(a, b) { - // Check CompareIC for equality of known objects. - assertTrue(eq(a, a)); - assertTrue(eq(b, b)); - assertFalse(eq(a, b)); - // Check CompareIC for strict equality of known objects. - assertTrue(eq_strict(a, a)); - assertTrue(eq_strict(b, b)); - assertFalse(eq_strict(a, b)); - // Check CompareIC for less than or equal of known objects. - assertTrue(le(a, a)); - assertTrue(le(a, b)); - assertTrue(le(b, a)); - // Check CompareIC for less than of known objects. - assertFalse(lt(a, a)); - assertFalse(lt(a, b)); - assertFalse(lt(b, a)); - // Check CompareIC for greater than or equal of known objects. - assertTrue(ge(a, a)); - assertTrue(ge(a, b)); - assertTrue(ge(b, a)); - // Check CompareIC for greater than of known objects. - assertFalse(gt(a, a)); - assertFalse(gt(a, b)); - assertFalse(gt(b, a)); -} - -function O(){}; -O.prototype.t = function() {} - -var obj1 = new O; -var obj2 = new O; - -// Test original objects. -assertTrue(%HaveSameMap(obj1, obj2)); -test(obj1, obj2); - -// Test after adding property to first object. -obj1.x = 1; -test(obj1, obj2); diff --git a/implementation-contributed/v8/mjsunit/compare-nan.js b/implementation-contributed/v8/mjsunit/compare-nan.js deleted file mode 100644 index a4224ff1b32..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-nan.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var a = [NaN, -1, 0, 1, 1.2, -7.9, true, false, 'foo', '0', 'NaN' ]; -for (var i in a) { - var x = a[i]; - assertFalse(NaN == x, "NaN == " + x); - assertFalse(NaN === x, "NaN === " + x); - assertFalse(NaN < x, "NaN < " + x); - assertFalse(NaN > x, "NaN > " + x); - assertFalse(NaN <= x, "NaN <= " + x); - assertFalse(NaN >= x, "NaN >= " + x); - - assertFalse(x == NaN, "" + x + " == NaN"); - assertFalse(x === NaN, "" + x + " === NaN"); - assertFalse(x < NaN, "" + x + " < NaN"); - assertFalse(x > NaN, "" + x + " > NaN"); - assertFalse(x <= NaN, "" + x + " <= NaN"); - assertFalse(x >= NaN, "" + x + " >= NaN"); -} - -var b = ["NaN", "-1", "0", "1", "1.2", "-7.9", "true", "false", "'foo'", "'0'", - "'NaN'" ]; -for (var i in b) { - var x = b[i]; - var program = - "assertFalse(NaN == " + x + ", 'NaN == ' + " + x + ");\n" + - "assertFalse(NaN === " + x + ", 'NaN === ' + " + x + ");\n" + - "assertFalse(NaN < " + x + ", 'NaN < ' + " + x + ");\n" + - "assertFalse(NaN > " + x + ", 'NaN > ' + " + x + ");\n" + - "assertFalse(NaN <= " + x + ", 'NaN <= ' + " + x + ");\n" + - "assertFalse(NaN >= " + x + ", 'NaN >= ' + " + x + ");\n" + - - "assertFalse(" + x + " == NaN, '' + " + x + " + ' == NaN');\n" + - "assertFalse(" + x + " === NaN, '' + " + x + " + ' === NaN');\n" + - "assertFalse(" + x + " < NaN, '' + " + x + " + ' < NaN');\n" + - "assertFalse(" + x + " > NaN, '' + " + x + " + ' > NaN');\n" + - "assertFalse(" + x + " <= NaN, '' + " + x + " + ' <= NaN');\n" + - "assertFalse(" + x + " >= NaN, '' + " + x + " + ' >= NaN');\n"; - eval(program); -} diff --git a/implementation-contributed/v8/mjsunit/compare-nil.js b/implementation-contributed/v8/mjsunit/compare-nil.js deleted file mode 100644 index 0895a31fb80..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-nil.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function test(v) { - return (v == null); -} -assertFalse(test(true)); -assertFalse(test(true)); -assertTrue(test(null)); -assertTrue(test(null)); diff --git a/implementation-contributed/v8/mjsunit/compare-objects.js b/implementation-contributed/v8/mjsunit/compare-objects.js deleted file mode 100644 index fb31203b746..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-objects.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test CompareIC stubs for normal and strict equality comparison of known -// objects in hydrogen. - -function lt(a, b) { - return a < b; -} - -function gt(a, b) { - return a > b; -} - -function eq(a, b) { - return a == b; -} - -function eq_strict(a, b) { - return a === b; -} - -function test(a, b, less, greater) { - // Check CompareIC for equality of known objects. - assertTrue(eq(a, a)); - assertTrue(eq(b, b)); - assertFalse(eq(a, b)); - assertTrue(eq_strict(a, a)); - assertTrue(eq_strict(b, b)); - assertFalse(eq_strict(a, b)); - assertEquals(lt(a, b), less); - assertEquals(gt(a, b), greater); - assertEquals(lt(b, a), greater); - assertEquals(gt(b, a), less); -} - -var obj1 = {toString: function() {return "1";}}; -var obj2 = {toString: function() {return "2";}}; - -var less = obj1 < obj2; -var greater = obj1 > obj2; - -test(obj1, obj2, less, greater); -test(obj1, obj2, less, greater); -test(obj1, obj2, less, greater); -%OptimizeFunctionOnNextCall(test); -test(obj1, obj2, less, greater); -test(obj1, obj2, less, greater); - -obj1.x = 1; -test(obj1, obj2, less, greater); - -obj2.y = 2; -test(obj1, obj2, less, greater); - -var obj1 = {test: 3}; -var obj2 = {test2: 3}; - -var less = obj1 < obj2; -var greater = obj1 > obj2; - -test(obj1, obj2, less, greater); -test(obj1, obj2, less, greater); -test(obj1, obj2, less, greater); -%OptimizeFunctionOnNextCall(test); -test(obj1, obj2, less, greater); -test(obj1, obj2, less, greater); - -obj1.toString = function() {return "1"}; -var less = obj1 < obj2; -var greater = obj1 > obj2; -test(obj1, obj2, less, greater); -%OptimizeFunctionOnNextCall(test); -test(obj1, obj2, less, greater); - -obj2.toString = function() {return "2"}; -var less = true; -var greater = false; - -test(obj1, obj2, less, greater); -obj2.y = 2; -test(obj1, obj2, less, greater); diff --git a/implementation-contributed/v8/mjsunit/compare-table-eq.js b/implementation-contributed/v8/mjsunit/compare-table-eq.js deleted file mode 100644 index fa7bef7738e..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-table-eq.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [true ,false,false,false,false,false,false,false,false,false,true ,false,false,false,false,false,false], - [false,true ,false,false,true ,true ,true ,true ,false,false,false,false,false,false,false,false,false], - [false,false,true ,true ,false,false,false,false,false,false,false,false,false,false,false,false,false], - [false,false,true ,true ,false,false,false,false,false,false,false,false,false,false,false,false,false], - [false,true ,false,false,true ,true ,true ,true ,false,false,false,false,false,false,false,false,false], - [false,true ,false,false,true ,true ,true ,true ,false,false,false,false,false,false,false,false,false], - [false,true ,false,false,true ,true ,true ,true ,false,false,false,false,false,false,false,false,false], - [false,true ,false,false,true ,true ,true ,true ,false,false,false,false,false,false,false,false,false], - [false,false,false,false,false,false,false,false,true ,false,false,false,false,false,false,false,false], - [false,false,false,false,false,false,false,false,false,true ,false,false,false,false,false,false,false], - [true ,false,false,false,false,false,false,false,false,false,true ,false,false,false,false,false,false], - [false,false,false,false,false,false,false,false,false,false,false,true ,false,false,false,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false] -]; -var func = (function eq(a,b) { return a == b; }); -var left_funcs = [ - (function eq_L0(b) { return true == b; }), - (function eq_L1(b) { return false == b; }), - (function eq_L2(b) { return null == b; }), - (function eq_L3(b) { return void 0 == b; }), - (function eq_L4(b) { return 0 == b; }), - (function eq_L5(b) { return 0.0 == b; }), - (function eq_L6(b) { return -0 == b; }), - (function eq_L7(b) { return "" == b; }), - (function eq_L8(b) { return -1 == b; }), - (function eq_L9(b) { return -1.25 == b; }), - (function eq_L10(b) { return 1 == b; }), - (function eq_L11(b) { return 1.25 == b; }), - (function eq_L12(b) { return -2147483648 == b; }), - (function eq_L13(b) { return 2147483648 == b; }), - (function eq_L14(b) { return Infinity == b; }), - (function eq_L15(b) { return -Infinity == b; }), - (function eq_L16(b) { return NaN == b; }) -]; -var right_funcs = [ - (function eq_R0(a) { return a == true; }), - (function eq_R1(a) { return a == false; }), - (function eq_R2(a) { return a == null; }), - (function eq_R3(a) { return a == void 0; }), - (function eq_R4(a) { return a == 0; }), - (function eq_R5(a) { return a == 0.0; }), - (function eq_R6(a) { return a == -0; }), - (function eq_R7(a) { return a == ""; }), - (function eq_R8(a) { return a == -1; }), - (function eq_R9(a) { return a == -1.25; }), - (function eq_R10(a) { return a == 1; }), - (function eq_R11(a) { return a == 1.25; }), - (function eq_R12(a) { return a == -2147483648; }), - (function eq_R13(a) { return a == 2147483648; }), - (function eq_R14(a) { return a == Infinity; }), - (function eq_R15(a) { return a == -Infinity; }), - (function eq_R16(a) { return a == NaN; }) -]; -function matrix() { - return [ - [true == true,true == false,true == null,true == void 0,true == 0,true == 0.0,true == -0,true == "",true == -1,true == -1.25,true == 1,true == 1.25,true == -2147483648,true == 2147483648,true == Infinity,true == -Infinity,true == NaN], - [false == true,false == false,false == null,false == void 0,false == 0,false == 0.0,false == -0,false == "",false == -1,false == -1.25,false == 1,false == 1.25,false == -2147483648,false == 2147483648,false == Infinity,false == -Infinity,false == NaN], - [null == true,null == false,null == null,null == void 0,null == 0,null == 0.0,null == -0,null == "",null == -1,null == -1.25,null == 1,null == 1.25,null == -2147483648,null == 2147483648,null == Infinity,null == -Infinity,null == NaN], - [void 0 == true,void 0 == false,void 0 == null,void 0 == void 0,void 0 == 0,void 0 == 0.0,void 0 == -0,void 0 == "",void 0 == -1,void 0 == -1.25,void 0 == 1,void 0 == 1.25,void 0 == -2147483648,void 0 == 2147483648,void 0 == Infinity,void 0 == -Infinity,void 0 == NaN], - [0 == true,0 == false,0 == null,0 == void 0,0 == 0,0 == 0.0,0 == -0,0 == "",0 == -1,0 == -1.25,0 == 1,0 == 1.25,0 == -2147483648,0 == 2147483648,0 == Infinity,0 == -Infinity,0 == NaN], - [0.0 == true,0.0 == false,0.0 == null,0.0 == void 0,0.0 == 0,0.0 == 0.0,0.0 == -0,0.0 == "",0.0 == -1,0.0 == -1.25,0.0 == 1,0.0 == 1.25,0.0 == -2147483648,0.0 == 2147483648,0.0 == Infinity,0.0 == -Infinity,0.0 == NaN], - [-0 == true,-0 == false,-0 == null,-0 == void 0,-0 == 0,-0 == 0.0,-0 == -0,-0 == "",-0 == -1,-0 == -1.25,-0 == 1,-0 == 1.25,-0 == -2147483648,-0 == 2147483648,-0 == Infinity,-0 == -Infinity,-0 == NaN], - ["" == true,"" == false,"" == null,"" == void 0,"" == 0,"" == 0.0,"" == -0,"" == "","" == -1,"" == -1.25,"" == 1,"" == 1.25,"" == -2147483648,"" == 2147483648,"" == Infinity,"" == -Infinity,"" == NaN], - [-1 == true,-1 == false,-1 == null,-1 == void 0,-1 == 0,-1 == 0.0,-1 == -0,-1 == "",-1 == -1,-1 == -1.25,-1 == 1,-1 == 1.25,-1 == -2147483648,-1 == 2147483648,-1 == Infinity,-1 == -Infinity,-1 == NaN], - [-1.25 == true,-1.25 == false,-1.25 == null,-1.25 == void 0,-1.25 == 0,-1.25 == 0.0,-1.25 == -0,-1.25 == "",-1.25 == -1,-1.25 == -1.25,-1.25 == 1,-1.25 == 1.25,-1.25 == -2147483648,-1.25 == 2147483648,-1.25 == Infinity,-1.25 == -Infinity,-1.25 == NaN], - [1 == true,1 == false,1 == null,1 == void 0,1 == 0,1 == 0.0,1 == -0,1 == "",1 == -1,1 == -1.25,1 == 1,1 == 1.25,1 == -2147483648,1 == 2147483648,1 == Infinity,1 == -Infinity,1 == NaN], - [1.25 == true,1.25 == false,1.25 == null,1.25 == void 0,1.25 == 0,1.25 == 0.0,1.25 == -0,1.25 == "",1.25 == -1,1.25 == -1.25,1.25 == 1,1.25 == 1.25,1.25 == -2147483648,1.25 == 2147483648,1.25 == Infinity,1.25 == -Infinity,1.25 == NaN], - [-2147483648 == true,-2147483648 == false,-2147483648 == null,-2147483648 == void 0,-2147483648 == 0,-2147483648 == 0.0,-2147483648 == -0,-2147483648 == "",-2147483648 == -1,-2147483648 == -1.25,-2147483648 == 1,-2147483648 == 1.25,-2147483648 == -2147483648,-2147483648 == 2147483648,-2147483648 == Infinity,-2147483648 == -Infinity,-2147483648 == NaN], - [2147483648 == true,2147483648 == false,2147483648 == null,2147483648 == void 0,2147483648 == 0,2147483648 == 0.0,2147483648 == -0,2147483648 == "",2147483648 == -1,2147483648 == -1.25,2147483648 == 1,2147483648 == 1.25,2147483648 == -2147483648,2147483648 == 2147483648,2147483648 == Infinity,2147483648 == -Infinity,2147483648 == NaN], - [Infinity == true,Infinity == false,Infinity == null,Infinity == void 0,Infinity == 0,Infinity == 0.0,Infinity == -0,Infinity == "",Infinity == -1,Infinity == -1.25,Infinity == 1,Infinity == 1.25,Infinity == -2147483648,Infinity == 2147483648,Infinity == Infinity,Infinity == -Infinity,Infinity == NaN], - [-Infinity == true,-Infinity == false,-Infinity == null,-Infinity == void 0,-Infinity == 0,-Infinity == 0.0,-Infinity == -0,-Infinity == "",-Infinity == -1,-Infinity == -1.25,-Infinity == 1,-Infinity == 1.25,-Infinity == -2147483648,-Infinity == 2147483648,-Infinity == Infinity,-Infinity == -Infinity,-Infinity == NaN], - [NaN == true,NaN == false,NaN == null,NaN == void 0,NaN == 0,NaN == 0.0,NaN == -0,NaN == "",NaN == -1,NaN == -1.25,NaN == 1,NaN == 1.25,NaN == -2147483648,NaN == 2147483648,NaN == Infinity,NaN == -Infinity,NaN == NaN] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/compare-table-gt.js b/implementation-contributed/v8/mjsunit/compare-table-gt.js deleted file mode 100644 index b7830ecdbf2..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-table-gt.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [false,true ,true ,false,true ,true ,true ,true ,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false], - [false,false,false,false,false,false,false,false,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false,true ,false], - [false,true ,true ,false,true ,true ,true ,true ,true ,true ,false,false,true ,false,false,true ,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,false,true ,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false] -]; -var func = (function gt(a,b) { return a > b; }); -var left_funcs = [ - (function gt_L0(b) { return true > b; }), - (function gt_L1(b) { return false > b; }), - (function gt_L2(b) { return null > b; }), - (function gt_L3(b) { return void 0 > b; }), - (function gt_L4(b) { return 0 > b; }), - (function gt_L5(b) { return 0.0 > b; }), - (function gt_L6(b) { return -0 > b; }), - (function gt_L7(b) { return "" > b; }), - (function gt_L8(b) { return -1 > b; }), - (function gt_L9(b) { return -1.25 > b; }), - (function gt_L10(b) { return 1 > b; }), - (function gt_L11(b) { return 1.25 > b; }), - (function gt_L12(b) { return -2147483648 > b; }), - (function gt_L13(b) { return 2147483648 > b; }), - (function gt_L14(b) { return Infinity > b; }), - (function gt_L15(b) { return -Infinity > b; }), - (function gt_L16(b) { return NaN > b; }) -]; -var right_funcs = [ - (function gt_R0(a) { return a > true; }), - (function gt_R1(a) { return a > false; }), - (function gt_R2(a) { return a > null; }), - (function gt_R3(a) { return a > void 0; }), - (function gt_R4(a) { return a > 0; }), - (function gt_R5(a) { return a > 0.0; }), - (function gt_R6(a) { return a > -0; }), - (function gt_R7(a) { return a > ""; }), - (function gt_R8(a) { return a > -1; }), - (function gt_R9(a) { return a > -1.25; }), - (function gt_R10(a) { return a > 1; }), - (function gt_R11(a) { return a > 1.25; }), - (function gt_R12(a) { return a > -2147483648; }), - (function gt_R13(a) { return a > 2147483648; }), - (function gt_R14(a) { return a > Infinity; }), - (function gt_R15(a) { return a > -Infinity; }), - (function gt_R16(a) { return a > NaN; }) -]; -function matrix() { - return [ - [true > true,true > false,true > null,true > void 0,true > 0,true > 0.0,true > -0,true > "",true > -1,true > -1.25,true > 1,true > 1.25,true > -2147483648,true > 2147483648,true > Infinity,true > -Infinity,true > NaN], - [false > true,false > false,false > null,false > void 0,false > 0,false > 0.0,false > -0,false > "",false > -1,false > -1.25,false > 1,false > 1.25,false > -2147483648,false > 2147483648,false > Infinity,false > -Infinity,false > NaN], - [null > true,null > false,null > null,null > void 0,null > 0,null > 0.0,null > -0,null > "",null > -1,null > -1.25,null > 1,null > 1.25,null > -2147483648,null > 2147483648,null > Infinity,null > -Infinity,null > NaN], - [void 0 > true,void 0 > false,void 0 > null,void 0 > void 0,void 0 > 0,void 0 > 0.0,void 0 > -0,void 0 > "",void 0 > -1,void 0 > -1.25,void 0 > 1,void 0 > 1.25,void 0 > -2147483648,void 0 > 2147483648,void 0 > Infinity,void 0 > -Infinity,void 0 > NaN], - [0 > true,0 > false,0 > null,0 > void 0,0 > 0,0 > 0.0,0 > -0,0 > "",0 > -1,0 > -1.25,0 > 1,0 > 1.25,0 > -2147483648,0 > 2147483648,0 > Infinity,0 > -Infinity,0 > NaN], - [0.0 > true,0.0 > false,0.0 > null,0.0 > void 0,0.0 > 0,0.0 > 0.0,0.0 > -0,0.0 > "",0.0 > -1,0.0 > -1.25,0.0 > 1,0.0 > 1.25,0.0 > -2147483648,0.0 > 2147483648,0.0 > Infinity,0.0 > -Infinity,0.0 > NaN], - [-0 > true,-0 > false,-0 > null,-0 > void 0,-0 > 0,-0 > 0.0,-0 > -0,-0 > "",-0 > -1,-0 > -1.25,-0 > 1,-0 > 1.25,-0 > -2147483648,-0 > 2147483648,-0 > Infinity,-0 > -Infinity,-0 > NaN], - ["" > true,"" > false,"" > null,"" > void 0,"" > 0,"" > 0.0,"" > -0,"" > "","" > -1,"" > -1.25,"" > 1,"" > 1.25,"" > -2147483648,"" > 2147483648,"" > Infinity,"" > -Infinity,"" > NaN], - [-1 > true,-1 > false,-1 > null,-1 > void 0,-1 > 0,-1 > 0.0,-1 > -0,-1 > "",-1 > -1,-1 > -1.25,-1 > 1,-1 > 1.25,-1 > -2147483648,-1 > 2147483648,-1 > Infinity,-1 > -Infinity,-1 > NaN], - [-1.25 > true,-1.25 > false,-1.25 > null,-1.25 > void 0,-1.25 > 0,-1.25 > 0.0,-1.25 > -0,-1.25 > "",-1.25 > -1,-1.25 > -1.25,-1.25 > 1,-1.25 > 1.25,-1.25 > -2147483648,-1.25 > 2147483648,-1.25 > Infinity,-1.25 > -Infinity,-1.25 > NaN], - [1 > true,1 > false,1 > null,1 > void 0,1 > 0,1 > 0.0,1 > -0,1 > "",1 > -1,1 > -1.25,1 > 1,1 > 1.25,1 > -2147483648,1 > 2147483648,1 > Infinity,1 > -Infinity,1 > NaN], - [1.25 > true,1.25 > false,1.25 > null,1.25 > void 0,1.25 > 0,1.25 > 0.0,1.25 > -0,1.25 > "",1.25 > -1,1.25 > -1.25,1.25 > 1,1.25 > 1.25,1.25 > -2147483648,1.25 > 2147483648,1.25 > Infinity,1.25 > -Infinity,1.25 > NaN], - [-2147483648 > true,-2147483648 > false,-2147483648 > null,-2147483648 > void 0,-2147483648 > 0,-2147483648 > 0.0,-2147483648 > -0,-2147483648 > "",-2147483648 > -1,-2147483648 > -1.25,-2147483648 > 1,-2147483648 > 1.25,-2147483648 > -2147483648,-2147483648 > 2147483648,-2147483648 > Infinity,-2147483648 > -Infinity,-2147483648 > NaN], - [2147483648 > true,2147483648 > false,2147483648 > null,2147483648 > void 0,2147483648 > 0,2147483648 > 0.0,2147483648 > -0,2147483648 > "",2147483648 > -1,2147483648 > -1.25,2147483648 > 1,2147483648 > 1.25,2147483648 > -2147483648,2147483648 > 2147483648,2147483648 > Infinity,2147483648 > -Infinity,2147483648 > NaN], - [Infinity > true,Infinity > false,Infinity > null,Infinity > void 0,Infinity > 0,Infinity > 0.0,Infinity > -0,Infinity > "",Infinity > -1,Infinity > -1.25,Infinity > 1,Infinity > 1.25,Infinity > -2147483648,Infinity > 2147483648,Infinity > Infinity,Infinity > -Infinity,Infinity > NaN], - [-Infinity > true,-Infinity > false,-Infinity > null,-Infinity > void 0,-Infinity > 0,-Infinity > 0.0,-Infinity > -0,-Infinity > "",-Infinity > -1,-Infinity > -1.25,-Infinity > 1,-Infinity > 1.25,-Infinity > -2147483648,-Infinity > 2147483648,-Infinity > Infinity,-Infinity > -Infinity,-Infinity > NaN], - [NaN > true,NaN > false,NaN > null,NaN > void 0,NaN > 0,NaN > 0.0,NaN > -0,NaN > "",NaN > -1,NaN > -1.25,NaN > 1,NaN > 1.25,NaN > -2147483648,NaN > 2147483648,NaN > Infinity,NaN > -Infinity,NaN > NaN] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/compare-table-gteq.js b/implementation-contributed/v8/mjsunit/compare-table-gteq.js deleted file mode 100644 index 6d500e4d388..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-table-gteq.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,false,true ,false,false,true ,false], - [false,true ,true ,false,true ,true ,true ,true ,true ,true ,false,false,true ,false,false,true ,false], - [false,true ,true ,false,true ,true ,true ,true ,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false], - [false,true ,true ,false,true ,true ,true ,true ,true ,true ,false,false,true ,false,false,true ,false], - [false,true ,true ,false,true ,true ,true ,true ,true ,true ,false,false,true ,false,false,true ,false], - [false,true ,true ,false,true ,true ,true ,true ,true ,true ,false,false,true ,false,false,true ,false], - [false,true ,true ,false,true ,true ,true ,true ,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,true ,true ,false,false,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,true ,false,false,true ,false,false,true ,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,false,true ,false,false,true ,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false,true ,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false] -]; -var func = (function gteq(a,b) { return a >= b; }); -var left_funcs = [ - (function gteq_L0(b) { return true >= b; }), - (function gteq_L1(b) { return false >= b; }), - (function gteq_L2(b) { return null >= b; }), - (function gteq_L3(b) { return void 0 >= b; }), - (function gteq_L4(b) { return 0 >= b; }), - (function gteq_L5(b) { return 0.0 >= b; }), - (function gteq_L6(b) { return -0 >= b; }), - (function gteq_L7(b) { return "" >= b; }), - (function gteq_L8(b) { return -1 >= b; }), - (function gteq_L9(b) { return -1.25 >= b; }), - (function gteq_L10(b) { return 1 >= b; }), - (function gteq_L11(b) { return 1.25 >= b; }), - (function gteq_L12(b) { return -2147483648 >= b; }), - (function gteq_L13(b) { return 2147483648 >= b; }), - (function gteq_L14(b) { return Infinity >= b; }), - (function gteq_L15(b) { return -Infinity >= b; }), - (function gteq_L16(b) { return NaN >= b; }) -]; -var right_funcs = [ - (function gteq_R0(a) { return a >= true; }), - (function gteq_R1(a) { return a >= false; }), - (function gteq_R2(a) { return a >= null; }), - (function gteq_R3(a) { return a >= void 0; }), - (function gteq_R4(a) { return a >= 0; }), - (function gteq_R5(a) { return a >= 0.0; }), - (function gteq_R6(a) { return a >= -0; }), - (function gteq_R7(a) { return a >= ""; }), - (function gteq_R8(a) { return a >= -1; }), - (function gteq_R9(a) { return a >= -1.25; }), - (function gteq_R10(a) { return a >= 1; }), - (function gteq_R11(a) { return a >= 1.25; }), - (function gteq_R12(a) { return a >= -2147483648; }), - (function gteq_R13(a) { return a >= 2147483648; }), - (function gteq_R14(a) { return a >= Infinity; }), - (function gteq_R15(a) { return a >= -Infinity; }), - (function gteq_R16(a) { return a >= NaN; }) -]; -function matrix() { - return [ - [true >= true,true >= false,true >= null,true >= void 0,true >= 0,true >= 0.0,true >= -0,true >= "",true >= -1,true >= -1.25,true >= 1,true >= 1.25,true >= -2147483648,true >= 2147483648,true >= Infinity,true >= -Infinity,true >= NaN], - [false >= true,false >= false,false >= null,false >= void 0,false >= 0,false >= 0.0,false >= -0,false >= "",false >= -1,false >= -1.25,false >= 1,false >= 1.25,false >= -2147483648,false >= 2147483648,false >= Infinity,false >= -Infinity,false >= NaN], - [null >= true,null >= false,null >= null,null >= void 0,null >= 0,null >= 0.0,null >= -0,null >= "",null >= -1,null >= -1.25,null >= 1,null >= 1.25,null >= -2147483648,null >= 2147483648,null >= Infinity,null >= -Infinity,null >= NaN], - [void 0 >= true,void 0 >= false,void 0 >= null,void 0 >= void 0,void 0 >= 0,void 0 >= 0.0,void 0 >= -0,void 0 >= "",void 0 >= -1,void 0 >= -1.25,void 0 >= 1,void 0 >= 1.25,void 0 >= -2147483648,void 0 >= 2147483648,void 0 >= Infinity,void 0 >= -Infinity,void 0 >= NaN], - [0 >= true,0 >= false,0 >= null,0 >= void 0,0 >= 0,0 >= 0.0,0 >= -0,0 >= "",0 >= -1,0 >= -1.25,0 >= 1,0 >= 1.25,0 >= -2147483648,0 >= 2147483648,0 >= Infinity,0 >= -Infinity,0 >= NaN], - [0.0 >= true,0.0 >= false,0.0 >= null,0.0 >= void 0,0.0 >= 0,0.0 >= 0.0,0.0 >= -0,0.0 >= "",0.0 >= -1,0.0 >= -1.25,0.0 >= 1,0.0 >= 1.25,0.0 >= -2147483648,0.0 >= 2147483648,0.0 >= Infinity,0.0 >= -Infinity,0.0 >= NaN], - [-0 >= true,-0 >= false,-0 >= null,-0 >= void 0,-0 >= 0,-0 >= 0.0,-0 >= -0,-0 >= "",-0 >= -1,-0 >= -1.25,-0 >= 1,-0 >= 1.25,-0 >= -2147483648,-0 >= 2147483648,-0 >= Infinity,-0 >= -Infinity,-0 >= NaN], - ["" >= true,"" >= false,"" >= null,"" >= void 0,"" >= 0,"" >= 0.0,"" >= -0,"" >= "","" >= -1,"" >= -1.25,"" >= 1,"" >= 1.25,"" >= -2147483648,"" >= 2147483648,"" >= Infinity,"" >= -Infinity,"" >= NaN], - [-1 >= true,-1 >= false,-1 >= null,-1 >= void 0,-1 >= 0,-1 >= 0.0,-1 >= -0,-1 >= "",-1 >= -1,-1 >= -1.25,-1 >= 1,-1 >= 1.25,-1 >= -2147483648,-1 >= 2147483648,-1 >= Infinity,-1 >= -Infinity,-1 >= NaN], - [-1.25 >= true,-1.25 >= false,-1.25 >= null,-1.25 >= void 0,-1.25 >= 0,-1.25 >= 0.0,-1.25 >= -0,-1.25 >= "",-1.25 >= -1,-1.25 >= -1.25,-1.25 >= 1,-1.25 >= 1.25,-1.25 >= -2147483648,-1.25 >= 2147483648,-1.25 >= Infinity,-1.25 >= -Infinity,-1.25 >= NaN], - [1 >= true,1 >= false,1 >= null,1 >= void 0,1 >= 0,1 >= 0.0,1 >= -0,1 >= "",1 >= -1,1 >= -1.25,1 >= 1,1 >= 1.25,1 >= -2147483648,1 >= 2147483648,1 >= Infinity,1 >= -Infinity,1 >= NaN], - [1.25 >= true,1.25 >= false,1.25 >= null,1.25 >= void 0,1.25 >= 0,1.25 >= 0.0,1.25 >= -0,1.25 >= "",1.25 >= -1,1.25 >= -1.25,1.25 >= 1,1.25 >= 1.25,1.25 >= -2147483648,1.25 >= 2147483648,1.25 >= Infinity,1.25 >= -Infinity,1.25 >= NaN], - [-2147483648 >= true,-2147483648 >= false,-2147483648 >= null,-2147483648 >= void 0,-2147483648 >= 0,-2147483648 >= 0.0,-2147483648 >= -0,-2147483648 >= "",-2147483648 >= -1,-2147483648 >= -1.25,-2147483648 >= 1,-2147483648 >= 1.25,-2147483648 >= -2147483648,-2147483648 >= 2147483648,-2147483648 >= Infinity,-2147483648 >= -Infinity,-2147483648 >= NaN], - [2147483648 >= true,2147483648 >= false,2147483648 >= null,2147483648 >= void 0,2147483648 >= 0,2147483648 >= 0.0,2147483648 >= -0,2147483648 >= "",2147483648 >= -1,2147483648 >= -1.25,2147483648 >= 1,2147483648 >= 1.25,2147483648 >= -2147483648,2147483648 >= 2147483648,2147483648 >= Infinity,2147483648 >= -Infinity,2147483648 >= NaN], - [Infinity >= true,Infinity >= false,Infinity >= null,Infinity >= void 0,Infinity >= 0,Infinity >= 0.0,Infinity >= -0,Infinity >= "",Infinity >= -1,Infinity >= -1.25,Infinity >= 1,Infinity >= 1.25,Infinity >= -2147483648,Infinity >= 2147483648,Infinity >= Infinity,Infinity >= -Infinity,Infinity >= NaN], - [-Infinity >= true,-Infinity >= false,-Infinity >= null,-Infinity >= void 0,-Infinity >= 0,-Infinity >= 0.0,-Infinity >= -0,-Infinity >= "",-Infinity >= -1,-Infinity >= -1.25,-Infinity >= 1,-Infinity >= 1.25,-Infinity >= -2147483648,-Infinity >= 2147483648,-Infinity >= Infinity,-Infinity >= -Infinity,-Infinity >= NaN], - [NaN >= true,NaN >= false,NaN >= null,NaN >= void 0,NaN >= 0,NaN >= 0.0,NaN >= -0,NaN >= "",NaN >= -1,NaN >= -1.25,NaN >= 1,NaN >= 1.25,NaN >= -2147483648,NaN >= 2147483648,NaN >= Infinity,NaN >= -Infinity,NaN >= NaN] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/compare-table-lt.js b/implementation-contributed/v8/mjsunit/compare-table-lt.js deleted file mode 100644 index acb8a221656..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-table-lt.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [false,false,false,false,false,false,false,false,false,false,false,true ,false,true ,true ,false,false], - [true ,false,false,false,false,false,false,false,false,false,true ,true ,false,true ,true ,false,false], - [true ,false,false,false,false,false,false,false,false,false,true ,true ,false,true ,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false], - [true ,false,false,false,false,false,false,false,false,false,true ,true ,false,true ,true ,false,false], - [true ,false,false,false,false,false,false,false,false,false,true ,true ,false,true ,true ,false,false], - [true ,false,false,false,false,false,false,false,false,false,true ,true ,false,true ,true ,false,false], - [true ,false,false,false,false,false,false,false,false,false,true ,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,false,false,true ,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,false,true ,true ,false,true ,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,true ,false,true ,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false] -]; -var func = (function lt(a,b) { return a < b; }); -var left_funcs = [ - (function lt_L0(b) { return true < b; }), - (function lt_L1(b) { return false < b; }), - (function lt_L2(b) { return null < b; }), - (function lt_L3(b) { return void 0 < b; }), - (function lt_L4(b) { return 0 < b; }), - (function lt_L5(b) { return 0.0 < b; }), - (function lt_L6(b) { return -0 < b; }), - (function lt_L7(b) { return "" < b; }), - (function lt_L8(b) { return -1 < b; }), - (function lt_L9(b) { return -1.25 < b; }), - (function lt_L10(b) { return 1 < b; }), - (function lt_L11(b) { return 1.25 < b; }), - (function lt_L12(b) { return -2147483648 < b; }), - (function lt_L13(b) { return 2147483648 < b; }), - (function lt_L14(b) { return Infinity < b; }), - (function lt_L15(b) { return -Infinity < b; }), - (function lt_L16(b) { return NaN < b; }) -]; -var right_funcs = [ - (function lt_R0(a) { return a < true; }), - (function lt_R1(a) { return a < false; }), - (function lt_R2(a) { return a < null; }), - (function lt_R3(a) { return a < void 0; }), - (function lt_R4(a) { return a < 0; }), - (function lt_R5(a) { return a < 0.0; }), - (function lt_R6(a) { return a < -0; }), - (function lt_R7(a) { return a < ""; }), - (function lt_R8(a) { return a < -1; }), - (function lt_R9(a) { return a < -1.25; }), - (function lt_R10(a) { return a < 1; }), - (function lt_R11(a) { return a < 1.25; }), - (function lt_R12(a) { return a < -2147483648; }), - (function lt_R13(a) { return a < 2147483648; }), - (function lt_R14(a) { return a < Infinity; }), - (function lt_R15(a) { return a < -Infinity; }), - (function lt_R16(a) { return a < NaN; }) -]; -function matrix() { - return [ - [true < true,true < false,true < null,true < void 0,true < 0,true < 0.0,true < -0,true < "",true < -1,true < -1.25,true < 1,true < 1.25,true < -2147483648,true < 2147483648,true < Infinity,true < -Infinity,true < NaN], - [false < true,false < false,false < null,false < void 0,false < 0,false < 0.0,false < -0,false < "",false < -1,false < -1.25,false < 1,false < 1.25,false < -2147483648,false < 2147483648,false < Infinity,false < -Infinity,false < NaN], - [null < true,null < false,null < null,null < void 0,null < 0,null < 0.0,null < -0,null < "",null < -1,null < -1.25,null < 1,null < 1.25,null < -2147483648,null < 2147483648,null < Infinity,null < -Infinity,null < NaN], - [void 0 < true,void 0 < false,void 0 < null,void 0 < void 0,void 0 < 0,void 0 < 0.0,void 0 < -0,void 0 < "",void 0 < -1,void 0 < -1.25,void 0 < 1,void 0 < 1.25,void 0 < -2147483648,void 0 < 2147483648,void 0 < Infinity,void 0 < -Infinity,void 0 < NaN], - [0 < true,0 < false,0 < null,0 < void 0,0 < 0,0 < 0.0,0 < -0,0 < "",0 < -1,0 < -1.25,0 < 1,0 < 1.25,0 < -2147483648,0 < 2147483648,0 < Infinity,0 < -Infinity,0 < NaN], - [0.0 < true,0.0 < false,0.0 < null,0.0 < void 0,0.0 < 0,0.0 < 0.0,0.0 < -0,0.0 < "",0.0 < -1,0.0 < -1.25,0.0 < 1,0.0 < 1.25,0.0 < -2147483648,0.0 < 2147483648,0.0 < Infinity,0.0 < -Infinity,0.0 < NaN], - [-0 < true,-0 < false,-0 < null,-0 < void 0,-0 < 0,-0 < 0.0,-0 < -0,-0 < "",-0 < -1,-0 < -1.25,-0 < 1,-0 < 1.25,-0 < -2147483648,-0 < 2147483648,-0 < Infinity,-0 < -Infinity,-0 < NaN], - ["" < true,"" < false,"" < null,"" < void 0,"" < 0,"" < 0.0,"" < -0,"" < "","" < -1,"" < -1.25,"" < 1,"" < 1.25,"" < -2147483648,"" < 2147483648,"" < Infinity,"" < -Infinity,"" < NaN], - [-1 < true,-1 < false,-1 < null,-1 < void 0,-1 < 0,-1 < 0.0,-1 < -0,-1 < "",-1 < -1,-1 < -1.25,-1 < 1,-1 < 1.25,-1 < -2147483648,-1 < 2147483648,-1 < Infinity,-1 < -Infinity,-1 < NaN], - [-1.25 < true,-1.25 < false,-1.25 < null,-1.25 < void 0,-1.25 < 0,-1.25 < 0.0,-1.25 < -0,-1.25 < "",-1.25 < -1,-1.25 < -1.25,-1.25 < 1,-1.25 < 1.25,-1.25 < -2147483648,-1.25 < 2147483648,-1.25 < Infinity,-1.25 < -Infinity,-1.25 < NaN], - [1 < true,1 < false,1 < null,1 < void 0,1 < 0,1 < 0.0,1 < -0,1 < "",1 < -1,1 < -1.25,1 < 1,1 < 1.25,1 < -2147483648,1 < 2147483648,1 < Infinity,1 < -Infinity,1 < NaN], - [1.25 < true,1.25 < false,1.25 < null,1.25 < void 0,1.25 < 0,1.25 < 0.0,1.25 < -0,1.25 < "",1.25 < -1,1.25 < -1.25,1.25 < 1,1.25 < 1.25,1.25 < -2147483648,1.25 < 2147483648,1.25 < Infinity,1.25 < -Infinity,1.25 < NaN], - [-2147483648 < true,-2147483648 < false,-2147483648 < null,-2147483648 < void 0,-2147483648 < 0,-2147483648 < 0.0,-2147483648 < -0,-2147483648 < "",-2147483648 < -1,-2147483648 < -1.25,-2147483648 < 1,-2147483648 < 1.25,-2147483648 < -2147483648,-2147483648 < 2147483648,-2147483648 < Infinity,-2147483648 < -Infinity,-2147483648 < NaN], - [2147483648 < true,2147483648 < false,2147483648 < null,2147483648 < void 0,2147483648 < 0,2147483648 < 0.0,2147483648 < -0,2147483648 < "",2147483648 < -1,2147483648 < -1.25,2147483648 < 1,2147483648 < 1.25,2147483648 < -2147483648,2147483648 < 2147483648,2147483648 < Infinity,2147483648 < -Infinity,2147483648 < NaN], - [Infinity < true,Infinity < false,Infinity < null,Infinity < void 0,Infinity < 0,Infinity < 0.0,Infinity < -0,Infinity < "",Infinity < -1,Infinity < -1.25,Infinity < 1,Infinity < 1.25,Infinity < -2147483648,Infinity < 2147483648,Infinity < Infinity,Infinity < -Infinity,Infinity < NaN], - [-Infinity < true,-Infinity < false,-Infinity < null,-Infinity < void 0,-Infinity < 0,-Infinity < 0.0,-Infinity < -0,-Infinity < "",-Infinity < -1,-Infinity < -1.25,-Infinity < 1,-Infinity < 1.25,-Infinity < -2147483648,-Infinity < 2147483648,-Infinity < Infinity,-Infinity < -Infinity,-Infinity < NaN], - [NaN < true,NaN < false,NaN < null,NaN < void 0,NaN < 0,NaN < 0.0,NaN < -0,NaN < "",NaN < -1,NaN < -1.25,NaN < 1,NaN < 1.25,NaN < -2147483648,NaN < 2147483648,NaN < Infinity,NaN < -Infinity,NaN < NaN] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/compare-table-lteq.js b/implementation-contributed/v8/mjsunit/compare-table-lteq.js deleted file mode 100644 index 164f26a4e95..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-table-lteq.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [true ,false,false,false,false,false,false,false,false,false,true ,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,false,false,true ,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,false,false,true ,true ,false,true ,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,false,false,true ,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,false,false,true ,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,false,false,true ,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,false,false,true ,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,false,true ,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,false,false], - [true ,false,false,false,false,false,false,false,false,false,true ,true ,false,true ,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,true ,false,true ,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,true ,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false] -]; -var func = (function lteq(a,b) { return a <= b; }); -var left_funcs = [ - (function lteq_L0(b) { return true <= b; }), - (function lteq_L1(b) { return false <= b; }), - (function lteq_L2(b) { return null <= b; }), - (function lteq_L3(b) { return void 0 <= b; }), - (function lteq_L4(b) { return 0 <= b; }), - (function lteq_L5(b) { return 0.0 <= b; }), - (function lteq_L6(b) { return -0 <= b; }), - (function lteq_L7(b) { return "" <= b; }), - (function lteq_L8(b) { return -1 <= b; }), - (function lteq_L9(b) { return -1.25 <= b; }), - (function lteq_L10(b) { return 1 <= b; }), - (function lteq_L11(b) { return 1.25 <= b; }), - (function lteq_L12(b) { return -2147483648 <= b; }), - (function lteq_L13(b) { return 2147483648 <= b; }), - (function lteq_L14(b) { return Infinity <= b; }), - (function lteq_L15(b) { return -Infinity <= b; }), - (function lteq_L16(b) { return NaN <= b; }) -]; -var right_funcs = [ - (function lteq_R0(a) { return a <= true; }), - (function lteq_R1(a) { return a <= false; }), - (function lteq_R2(a) { return a <= null; }), - (function lteq_R3(a) { return a <= void 0; }), - (function lteq_R4(a) { return a <= 0; }), - (function lteq_R5(a) { return a <= 0.0; }), - (function lteq_R6(a) { return a <= -0; }), - (function lteq_R7(a) { return a <= ""; }), - (function lteq_R8(a) { return a <= -1; }), - (function lteq_R9(a) { return a <= -1.25; }), - (function lteq_R10(a) { return a <= 1; }), - (function lteq_R11(a) { return a <= 1.25; }), - (function lteq_R12(a) { return a <= -2147483648; }), - (function lteq_R13(a) { return a <= 2147483648; }), - (function lteq_R14(a) { return a <= Infinity; }), - (function lteq_R15(a) { return a <= -Infinity; }), - (function lteq_R16(a) { return a <= NaN; }) -]; -function matrix() { - return [ - [true <= true,true <= false,true <= null,true <= void 0,true <= 0,true <= 0.0,true <= -0,true <= "",true <= -1,true <= -1.25,true <= 1,true <= 1.25,true <= -2147483648,true <= 2147483648,true <= Infinity,true <= -Infinity,true <= NaN], - [false <= true,false <= false,false <= null,false <= void 0,false <= 0,false <= 0.0,false <= -0,false <= "",false <= -1,false <= -1.25,false <= 1,false <= 1.25,false <= -2147483648,false <= 2147483648,false <= Infinity,false <= -Infinity,false <= NaN], - [null <= true,null <= false,null <= null,null <= void 0,null <= 0,null <= 0.0,null <= -0,null <= "",null <= -1,null <= -1.25,null <= 1,null <= 1.25,null <= -2147483648,null <= 2147483648,null <= Infinity,null <= -Infinity,null <= NaN], - [void 0 <= true,void 0 <= false,void 0 <= null,void 0 <= void 0,void 0 <= 0,void 0 <= 0.0,void 0 <= -0,void 0 <= "",void 0 <= -1,void 0 <= -1.25,void 0 <= 1,void 0 <= 1.25,void 0 <= -2147483648,void 0 <= 2147483648,void 0 <= Infinity,void 0 <= -Infinity,void 0 <= NaN], - [0 <= true,0 <= false,0 <= null,0 <= void 0,0 <= 0,0 <= 0.0,0 <= -0,0 <= "",0 <= -1,0 <= -1.25,0 <= 1,0 <= 1.25,0 <= -2147483648,0 <= 2147483648,0 <= Infinity,0 <= -Infinity,0 <= NaN], - [0.0 <= true,0.0 <= false,0.0 <= null,0.0 <= void 0,0.0 <= 0,0.0 <= 0.0,0.0 <= -0,0.0 <= "",0.0 <= -1,0.0 <= -1.25,0.0 <= 1,0.0 <= 1.25,0.0 <= -2147483648,0.0 <= 2147483648,0.0 <= Infinity,0.0 <= -Infinity,0.0 <= NaN], - [-0 <= true,-0 <= false,-0 <= null,-0 <= void 0,-0 <= 0,-0 <= 0.0,-0 <= -0,-0 <= "",-0 <= -1,-0 <= -1.25,-0 <= 1,-0 <= 1.25,-0 <= -2147483648,-0 <= 2147483648,-0 <= Infinity,-0 <= -Infinity,-0 <= NaN], - ["" <= true,"" <= false,"" <= null,"" <= void 0,"" <= 0,"" <= 0.0,"" <= -0,"" <= "","" <= -1,"" <= -1.25,"" <= 1,"" <= 1.25,"" <= -2147483648,"" <= 2147483648,"" <= Infinity,"" <= -Infinity,"" <= NaN], - [-1 <= true,-1 <= false,-1 <= null,-1 <= void 0,-1 <= 0,-1 <= 0.0,-1 <= -0,-1 <= "",-1 <= -1,-1 <= -1.25,-1 <= 1,-1 <= 1.25,-1 <= -2147483648,-1 <= 2147483648,-1 <= Infinity,-1 <= -Infinity,-1 <= NaN], - [-1.25 <= true,-1.25 <= false,-1.25 <= null,-1.25 <= void 0,-1.25 <= 0,-1.25 <= 0.0,-1.25 <= -0,-1.25 <= "",-1.25 <= -1,-1.25 <= -1.25,-1.25 <= 1,-1.25 <= 1.25,-1.25 <= -2147483648,-1.25 <= 2147483648,-1.25 <= Infinity,-1.25 <= -Infinity,-1.25 <= NaN], - [1 <= true,1 <= false,1 <= null,1 <= void 0,1 <= 0,1 <= 0.0,1 <= -0,1 <= "",1 <= -1,1 <= -1.25,1 <= 1,1 <= 1.25,1 <= -2147483648,1 <= 2147483648,1 <= Infinity,1 <= -Infinity,1 <= NaN], - [1.25 <= true,1.25 <= false,1.25 <= null,1.25 <= void 0,1.25 <= 0,1.25 <= 0.0,1.25 <= -0,1.25 <= "",1.25 <= -1,1.25 <= -1.25,1.25 <= 1,1.25 <= 1.25,1.25 <= -2147483648,1.25 <= 2147483648,1.25 <= Infinity,1.25 <= -Infinity,1.25 <= NaN], - [-2147483648 <= true,-2147483648 <= false,-2147483648 <= null,-2147483648 <= void 0,-2147483648 <= 0,-2147483648 <= 0.0,-2147483648 <= -0,-2147483648 <= "",-2147483648 <= -1,-2147483648 <= -1.25,-2147483648 <= 1,-2147483648 <= 1.25,-2147483648 <= -2147483648,-2147483648 <= 2147483648,-2147483648 <= Infinity,-2147483648 <= -Infinity,-2147483648 <= NaN], - [2147483648 <= true,2147483648 <= false,2147483648 <= null,2147483648 <= void 0,2147483648 <= 0,2147483648 <= 0.0,2147483648 <= -0,2147483648 <= "",2147483648 <= -1,2147483648 <= -1.25,2147483648 <= 1,2147483648 <= 1.25,2147483648 <= -2147483648,2147483648 <= 2147483648,2147483648 <= Infinity,2147483648 <= -Infinity,2147483648 <= NaN], - [Infinity <= true,Infinity <= false,Infinity <= null,Infinity <= void 0,Infinity <= 0,Infinity <= 0.0,Infinity <= -0,Infinity <= "",Infinity <= -1,Infinity <= -1.25,Infinity <= 1,Infinity <= 1.25,Infinity <= -2147483648,Infinity <= 2147483648,Infinity <= Infinity,Infinity <= -Infinity,Infinity <= NaN], - [-Infinity <= true,-Infinity <= false,-Infinity <= null,-Infinity <= void 0,-Infinity <= 0,-Infinity <= 0.0,-Infinity <= -0,-Infinity <= "",-Infinity <= -1,-Infinity <= -1.25,-Infinity <= 1,-Infinity <= 1.25,-Infinity <= -2147483648,-Infinity <= 2147483648,-Infinity <= Infinity,-Infinity <= -Infinity,-Infinity <= NaN], - [NaN <= true,NaN <= false,NaN <= null,NaN <= void 0,NaN <= 0,NaN <= 0.0,NaN <= -0,NaN <= "",NaN <= -1,NaN <= -1.25,NaN <= 1,NaN <= 1.25,NaN <= -2147483648,NaN <= 2147483648,NaN <= Infinity,NaN <= -Infinity,NaN <= NaN] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/compare-table-ne.js b/implementation-contributed/v8/mjsunit/compare-table-ne.js deleted file mode 100644 index 0dd5b512dc7..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-table-ne.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [false,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ,true ], - [true ,false,true ,true ,false,false,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,false,true ,true ,false,false,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,false,true ,true ,false,false,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,false,true ,true ,false,false,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,false,true ,true ,false,false,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ], - [false,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ] -]; -var func = (function ne(a,b) { return a != b; }); -var left_funcs = [ - (function ne_L0(b) { return true != b; }), - (function ne_L1(b) { return false != b; }), - (function ne_L2(b) { return null != b; }), - (function ne_L3(b) { return void 0 != b; }), - (function ne_L4(b) { return 0 != b; }), - (function ne_L5(b) { return 0.0 != b; }), - (function ne_L6(b) { return -0 != b; }), - (function ne_L7(b) { return "" != b; }), - (function ne_L8(b) { return -1 != b; }), - (function ne_L9(b) { return -1.25 != b; }), - (function ne_L10(b) { return 1 != b; }), - (function ne_L11(b) { return 1.25 != b; }), - (function ne_L12(b) { return -2147483648 != b; }), - (function ne_L13(b) { return 2147483648 != b; }), - (function ne_L14(b) { return Infinity != b; }), - (function ne_L15(b) { return -Infinity != b; }), - (function ne_L16(b) { return NaN != b; }) -]; -var right_funcs = [ - (function ne_R0(a) { return a != true; }), - (function ne_R1(a) { return a != false; }), - (function ne_R2(a) { return a != null; }), - (function ne_R3(a) { return a != void 0; }), - (function ne_R4(a) { return a != 0; }), - (function ne_R5(a) { return a != 0.0; }), - (function ne_R6(a) { return a != -0; }), - (function ne_R7(a) { return a != ""; }), - (function ne_R8(a) { return a != -1; }), - (function ne_R9(a) { return a != -1.25; }), - (function ne_R10(a) { return a != 1; }), - (function ne_R11(a) { return a != 1.25; }), - (function ne_R12(a) { return a != -2147483648; }), - (function ne_R13(a) { return a != 2147483648; }), - (function ne_R14(a) { return a != Infinity; }), - (function ne_R15(a) { return a != -Infinity; }), - (function ne_R16(a) { return a != NaN; }) -]; -function matrix() { - return [ - [true != true,true != false,true != null,true != void 0,true != 0,true != 0.0,true != -0,true != "",true != -1,true != -1.25,true != 1,true != 1.25,true != -2147483648,true != 2147483648,true != Infinity,true != -Infinity,true != NaN], - [false != true,false != false,false != null,false != void 0,false != 0,false != 0.0,false != -0,false != "",false != -1,false != -1.25,false != 1,false != 1.25,false != -2147483648,false != 2147483648,false != Infinity,false != -Infinity,false != NaN], - [null != true,null != false,null != null,null != void 0,null != 0,null != 0.0,null != -0,null != "",null != -1,null != -1.25,null != 1,null != 1.25,null != -2147483648,null != 2147483648,null != Infinity,null != -Infinity,null != NaN], - [void 0 != true,void 0 != false,void 0 != null,void 0 != void 0,void 0 != 0,void 0 != 0.0,void 0 != -0,void 0 != "",void 0 != -1,void 0 != -1.25,void 0 != 1,void 0 != 1.25,void 0 != -2147483648,void 0 != 2147483648,void 0 != Infinity,void 0 != -Infinity,void 0 != NaN], - [0 != true,0 != false,0 != null,0 != void 0,0 != 0,0 != 0.0,0 != -0,0 != "",0 != -1,0 != -1.25,0 != 1,0 != 1.25,0 != -2147483648,0 != 2147483648,0 != Infinity,0 != -Infinity,0 != NaN], - [0.0 != true,0.0 != false,0.0 != null,0.0 != void 0,0.0 != 0,0.0 != 0.0,0.0 != -0,0.0 != "",0.0 != -1,0.0 != -1.25,0.0 != 1,0.0 != 1.25,0.0 != -2147483648,0.0 != 2147483648,0.0 != Infinity,0.0 != -Infinity,0.0 != NaN], - [-0 != true,-0 != false,-0 != null,-0 != void 0,-0 != 0,-0 != 0.0,-0 != -0,-0 != "",-0 != -1,-0 != -1.25,-0 != 1,-0 != 1.25,-0 != -2147483648,-0 != 2147483648,-0 != Infinity,-0 != -Infinity,-0 != NaN], - ["" != true,"" != false,"" != null,"" != void 0,"" != 0,"" != 0.0,"" != -0,"" != "","" != -1,"" != -1.25,"" != 1,"" != 1.25,"" != -2147483648,"" != 2147483648,"" != Infinity,"" != -Infinity,"" != NaN], - [-1 != true,-1 != false,-1 != null,-1 != void 0,-1 != 0,-1 != 0.0,-1 != -0,-1 != "",-1 != -1,-1 != -1.25,-1 != 1,-1 != 1.25,-1 != -2147483648,-1 != 2147483648,-1 != Infinity,-1 != -Infinity,-1 != NaN], - [-1.25 != true,-1.25 != false,-1.25 != null,-1.25 != void 0,-1.25 != 0,-1.25 != 0.0,-1.25 != -0,-1.25 != "",-1.25 != -1,-1.25 != -1.25,-1.25 != 1,-1.25 != 1.25,-1.25 != -2147483648,-1.25 != 2147483648,-1.25 != Infinity,-1.25 != -Infinity,-1.25 != NaN], - [1 != true,1 != false,1 != null,1 != void 0,1 != 0,1 != 0.0,1 != -0,1 != "",1 != -1,1 != -1.25,1 != 1,1 != 1.25,1 != -2147483648,1 != 2147483648,1 != Infinity,1 != -Infinity,1 != NaN], - [1.25 != true,1.25 != false,1.25 != null,1.25 != void 0,1.25 != 0,1.25 != 0.0,1.25 != -0,1.25 != "",1.25 != -1,1.25 != -1.25,1.25 != 1,1.25 != 1.25,1.25 != -2147483648,1.25 != 2147483648,1.25 != Infinity,1.25 != -Infinity,1.25 != NaN], - [-2147483648 != true,-2147483648 != false,-2147483648 != null,-2147483648 != void 0,-2147483648 != 0,-2147483648 != 0.0,-2147483648 != -0,-2147483648 != "",-2147483648 != -1,-2147483648 != -1.25,-2147483648 != 1,-2147483648 != 1.25,-2147483648 != -2147483648,-2147483648 != 2147483648,-2147483648 != Infinity,-2147483648 != -Infinity,-2147483648 != NaN], - [2147483648 != true,2147483648 != false,2147483648 != null,2147483648 != void 0,2147483648 != 0,2147483648 != 0.0,2147483648 != -0,2147483648 != "",2147483648 != -1,2147483648 != -1.25,2147483648 != 1,2147483648 != 1.25,2147483648 != -2147483648,2147483648 != 2147483648,2147483648 != Infinity,2147483648 != -Infinity,2147483648 != NaN], - [Infinity != true,Infinity != false,Infinity != null,Infinity != void 0,Infinity != 0,Infinity != 0.0,Infinity != -0,Infinity != "",Infinity != -1,Infinity != -1.25,Infinity != 1,Infinity != 1.25,Infinity != -2147483648,Infinity != 2147483648,Infinity != Infinity,Infinity != -Infinity,Infinity != NaN], - [-Infinity != true,-Infinity != false,-Infinity != null,-Infinity != void 0,-Infinity != 0,-Infinity != 0.0,-Infinity != -0,-Infinity != "",-Infinity != -1,-Infinity != -1.25,-Infinity != 1,-Infinity != 1.25,-Infinity != -2147483648,-Infinity != 2147483648,-Infinity != Infinity,-Infinity != -Infinity,-Infinity != NaN], - [NaN != true,NaN != false,NaN != null,NaN != void 0,NaN != 0,NaN != 0.0,NaN != -0,NaN != "",NaN != -1,NaN != -1.25,NaN != 1,NaN != 1.25,NaN != -2147483648,NaN != 2147483648,NaN != Infinity,NaN != -Infinity,NaN != NaN] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/compare-table-seq.js b/implementation-contributed/v8/mjsunit/compare-table-seq.js deleted file mode 100644 index 524024b47e8..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-table-seq.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [true ,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false], - [false,true ,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false], - [false,false,true ,false,false,false,false,false,false,false,false,false,false,false,false,false,false], - [false,false,false,true ,false,false,false,false,false,false,false,false,false,false,false,false,false], - [false,false,false,false,true ,true ,true ,false,false,false,false,false,false,false,false,false,false], - [false,false,false,false,true ,true ,true ,false,false,false,false,false,false,false,false,false,false], - [false,false,false,false,true ,true ,true ,false,false,false,false,false,false,false,false,false,false], - [false,false,false,false,false,false,false,true ,false,false,false,false,false,false,false,false,false], - [false,false,false,false,false,false,false,false,true ,false,false,false,false,false,false,false,false], - [false,false,false,false,false,false,false,false,false,true ,false,false,false,false,false,false,false], - [false,false,false,false,false,false,false,false,false,false,true ,false,false,false,false,false,false], - [false,false,false,false,false,false,false,false,false,false,false,true ,false,false,false,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true ,false], - [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false] -]; -var func = (function seq(a,b) { return a === b; }); -var left_funcs = [ - (function seq_L0(b) { return true === b; }), - (function seq_L1(b) { return false === b; }), - (function seq_L2(b) { return null === b; }), - (function seq_L3(b) { return void 0 === b; }), - (function seq_L4(b) { return 0 === b; }), - (function seq_L5(b) { return 0.0 === b; }), - (function seq_L6(b) { return -0 === b; }), - (function seq_L7(b) { return "" === b; }), - (function seq_L8(b) { return -1 === b; }), - (function seq_L9(b) { return -1.25 === b; }), - (function seq_L10(b) { return 1 === b; }), - (function seq_L11(b) { return 1.25 === b; }), - (function seq_L12(b) { return -2147483648 === b; }), - (function seq_L13(b) { return 2147483648 === b; }), - (function seq_L14(b) { return Infinity === b; }), - (function seq_L15(b) { return -Infinity === b; }), - (function seq_L16(b) { return NaN === b; }) -]; -var right_funcs = [ - (function seq_R0(a) { return a === true; }), - (function seq_R1(a) { return a === false; }), - (function seq_R2(a) { return a === null; }), - (function seq_R3(a) { return a === void 0; }), - (function seq_R4(a) { return a === 0; }), - (function seq_R5(a) { return a === 0.0; }), - (function seq_R6(a) { return a === -0; }), - (function seq_R7(a) { return a === ""; }), - (function seq_R8(a) { return a === -1; }), - (function seq_R9(a) { return a === -1.25; }), - (function seq_R10(a) { return a === 1; }), - (function seq_R11(a) { return a === 1.25; }), - (function seq_R12(a) { return a === -2147483648; }), - (function seq_R13(a) { return a === 2147483648; }), - (function seq_R14(a) { return a === Infinity; }), - (function seq_R15(a) { return a === -Infinity; }), - (function seq_R16(a) { return a === NaN; }) -]; -function matrix() { - return [ - [true === true,true === false,true === null,true === void 0,true === 0,true === 0.0,true === -0,true === "",true === -1,true === -1.25,true === 1,true === 1.25,true === -2147483648,true === 2147483648,true === Infinity,true === -Infinity,true === NaN], - [false === true,false === false,false === null,false === void 0,false === 0,false === 0.0,false === -0,false === "",false === -1,false === -1.25,false === 1,false === 1.25,false === -2147483648,false === 2147483648,false === Infinity,false === -Infinity,false === NaN], - [null === true,null === false,null === null,null === void 0,null === 0,null === 0.0,null === -0,null === "",null === -1,null === -1.25,null === 1,null === 1.25,null === -2147483648,null === 2147483648,null === Infinity,null === -Infinity,null === NaN], - [void 0 === true,void 0 === false,void 0 === null,void 0 === void 0,void 0 === 0,void 0 === 0.0,void 0 === -0,void 0 === "",void 0 === -1,void 0 === -1.25,void 0 === 1,void 0 === 1.25,void 0 === -2147483648,void 0 === 2147483648,void 0 === Infinity,void 0 === -Infinity,void 0 === NaN], - [0 === true,0 === false,0 === null,0 === void 0,0 === 0,0 === 0.0,0 === -0,0 === "",0 === -1,0 === -1.25,0 === 1,0 === 1.25,0 === -2147483648,0 === 2147483648,0 === Infinity,0 === -Infinity,0 === NaN], - [0.0 === true,0.0 === false,0.0 === null,0.0 === void 0,0.0 === 0,0.0 === 0.0,0.0 === -0,0.0 === "",0.0 === -1,0.0 === -1.25,0.0 === 1,0.0 === 1.25,0.0 === -2147483648,0.0 === 2147483648,0.0 === Infinity,0.0 === -Infinity,0.0 === NaN], - [-0 === true,-0 === false,-0 === null,-0 === void 0,-0 === 0,-0 === 0.0,-0 === -0,-0 === "",-0 === -1,-0 === -1.25,-0 === 1,-0 === 1.25,-0 === -2147483648,-0 === 2147483648,-0 === Infinity,-0 === -Infinity,-0 === NaN], - ["" === true,"" === false,"" === null,"" === void 0,"" === 0,"" === 0.0,"" === -0,"" === "","" === -1,"" === -1.25,"" === 1,"" === 1.25,"" === -2147483648,"" === 2147483648,"" === Infinity,"" === -Infinity,"" === NaN], - [-1 === true,-1 === false,-1 === null,-1 === void 0,-1 === 0,-1 === 0.0,-1 === -0,-1 === "",-1 === -1,-1 === -1.25,-1 === 1,-1 === 1.25,-1 === -2147483648,-1 === 2147483648,-1 === Infinity,-1 === -Infinity,-1 === NaN], - [-1.25 === true,-1.25 === false,-1.25 === null,-1.25 === void 0,-1.25 === 0,-1.25 === 0.0,-1.25 === -0,-1.25 === "",-1.25 === -1,-1.25 === -1.25,-1.25 === 1,-1.25 === 1.25,-1.25 === -2147483648,-1.25 === 2147483648,-1.25 === Infinity,-1.25 === -Infinity,-1.25 === NaN], - [1 === true,1 === false,1 === null,1 === void 0,1 === 0,1 === 0.0,1 === -0,1 === "",1 === -1,1 === -1.25,1 === 1,1 === 1.25,1 === -2147483648,1 === 2147483648,1 === Infinity,1 === -Infinity,1 === NaN], - [1.25 === true,1.25 === false,1.25 === null,1.25 === void 0,1.25 === 0,1.25 === 0.0,1.25 === -0,1.25 === "",1.25 === -1,1.25 === -1.25,1.25 === 1,1.25 === 1.25,1.25 === -2147483648,1.25 === 2147483648,1.25 === Infinity,1.25 === -Infinity,1.25 === NaN], - [-2147483648 === true,-2147483648 === false,-2147483648 === null,-2147483648 === void 0,-2147483648 === 0,-2147483648 === 0.0,-2147483648 === -0,-2147483648 === "",-2147483648 === -1,-2147483648 === -1.25,-2147483648 === 1,-2147483648 === 1.25,-2147483648 === -2147483648,-2147483648 === 2147483648,-2147483648 === Infinity,-2147483648 === -Infinity,-2147483648 === NaN], - [2147483648 === true,2147483648 === false,2147483648 === null,2147483648 === void 0,2147483648 === 0,2147483648 === 0.0,2147483648 === -0,2147483648 === "",2147483648 === -1,2147483648 === -1.25,2147483648 === 1,2147483648 === 1.25,2147483648 === -2147483648,2147483648 === 2147483648,2147483648 === Infinity,2147483648 === -Infinity,2147483648 === NaN], - [Infinity === true,Infinity === false,Infinity === null,Infinity === void 0,Infinity === 0,Infinity === 0.0,Infinity === -0,Infinity === "",Infinity === -1,Infinity === -1.25,Infinity === 1,Infinity === 1.25,Infinity === -2147483648,Infinity === 2147483648,Infinity === Infinity,Infinity === -Infinity,Infinity === NaN], - [-Infinity === true,-Infinity === false,-Infinity === null,-Infinity === void 0,-Infinity === 0,-Infinity === 0.0,-Infinity === -0,-Infinity === "",-Infinity === -1,-Infinity === -1.25,-Infinity === 1,-Infinity === 1.25,-Infinity === -2147483648,-Infinity === 2147483648,-Infinity === Infinity,-Infinity === -Infinity,-Infinity === NaN], - [NaN === true,NaN === false,NaN === null,NaN === void 0,NaN === 0,NaN === 0.0,NaN === -0,NaN === "",NaN === -1,NaN === -1.25,NaN === 1,NaN === 1.25,NaN === -2147483648,NaN === 2147483648,NaN === Infinity,NaN === -Infinity,NaN === NaN] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/compare-table-sne.js b/implementation-contributed/v8/mjsunit/compare-table-sne.js deleted file mode 100644 index b9c80712132..00000000000 --- a/implementation-contributed/v8/mjsunit/compare-table-sne.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,false,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,false,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,false,false,false,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,false,true ], - [true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ] -]; -var func = (function sne(a,b) { return a !== b; }); -var left_funcs = [ - (function sne_L0(b) { return true !== b; }), - (function sne_L1(b) { return false !== b; }), - (function sne_L2(b) { return null !== b; }), - (function sne_L3(b) { return void 0 !== b; }), - (function sne_L4(b) { return 0 !== b; }), - (function sne_L5(b) { return 0.0 !== b; }), - (function sne_L6(b) { return -0 !== b; }), - (function sne_L7(b) { return "" !== b; }), - (function sne_L8(b) { return -1 !== b; }), - (function sne_L9(b) { return -1.25 !== b; }), - (function sne_L10(b) { return 1 !== b; }), - (function sne_L11(b) { return 1.25 !== b; }), - (function sne_L12(b) { return -2147483648 !== b; }), - (function sne_L13(b) { return 2147483648 !== b; }), - (function sne_L14(b) { return Infinity !== b; }), - (function sne_L15(b) { return -Infinity !== b; }), - (function sne_L16(b) { return NaN !== b; }) -]; -var right_funcs = [ - (function sne_R0(a) { return a !== true; }), - (function sne_R1(a) { return a !== false; }), - (function sne_R2(a) { return a !== null; }), - (function sne_R3(a) { return a !== void 0; }), - (function sne_R4(a) { return a !== 0; }), - (function sne_R5(a) { return a !== 0.0; }), - (function sne_R6(a) { return a !== -0; }), - (function sne_R7(a) { return a !== ""; }), - (function sne_R8(a) { return a !== -1; }), - (function sne_R9(a) { return a !== -1.25; }), - (function sne_R10(a) { return a !== 1; }), - (function sne_R11(a) { return a !== 1.25; }), - (function sne_R12(a) { return a !== -2147483648; }), - (function sne_R13(a) { return a !== 2147483648; }), - (function sne_R14(a) { return a !== Infinity; }), - (function sne_R15(a) { return a !== -Infinity; }), - (function sne_R16(a) { return a !== NaN; }) -]; -function matrix() { - return [ - [true !== true,true !== false,true !== null,true !== void 0,true !== 0,true !== 0.0,true !== -0,true !== "",true !== -1,true !== -1.25,true !== 1,true !== 1.25,true !== -2147483648,true !== 2147483648,true !== Infinity,true !== -Infinity,true !== NaN], - [false !== true,false !== false,false !== null,false !== void 0,false !== 0,false !== 0.0,false !== -0,false !== "",false !== -1,false !== -1.25,false !== 1,false !== 1.25,false !== -2147483648,false !== 2147483648,false !== Infinity,false !== -Infinity,false !== NaN], - [null !== true,null !== false,null !== null,null !== void 0,null !== 0,null !== 0.0,null !== -0,null !== "",null !== -1,null !== -1.25,null !== 1,null !== 1.25,null !== -2147483648,null !== 2147483648,null !== Infinity,null !== -Infinity,null !== NaN], - [void 0 !== true,void 0 !== false,void 0 !== null,void 0 !== void 0,void 0 !== 0,void 0 !== 0.0,void 0 !== -0,void 0 !== "",void 0 !== -1,void 0 !== -1.25,void 0 !== 1,void 0 !== 1.25,void 0 !== -2147483648,void 0 !== 2147483648,void 0 !== Infinity,void 0 !== -Infinity,void 0 !== NaN], - [0 !== true,0 !== false,0 !== null,0 !== void 0,0 !== 0,0 !== 0.0,0 !== -0,0 !== "",0 !== -1,0 !== -1.25,0 !== 1,0 !== 1.25,0 !== -2147483648,0 !== 2147483648,0 !== Infinity,0 !== -Infinity,0 !== NaN], - [0.0 !== true,0.0 !== false,0.0 !== null,0.0 !== void 0,0.0 !== 0,0.0 !== 0.0,0.0 !== -0,0.0 !== "",0.0 !== -1,0.0 !== -1.25,0.0 !== 1,0.0 !== 1.25,0.0 !== -2147483648,0.0 !== 2147483648,0.0 !== Infinity,0.0 !== -Infinity,0.0 !== NaN], - [-0 !== true,-0 !== false,-0 !== null,-0 !== void 0,-0 !== 0,-0 !== 0.0,-0 !== -0,-0 !== "",-0 !== -1,-0 !== -1.25,-0 !== 1,-0 !== 1.25,-0 !== -2147483648,-0 !== 2147483648,-0 !== Infinity,-0 !== -Infinity,-0 !== NaN], - ["" !== true,"" !== false,"" !== null,"" !== void 0,"" !== 0,"" !== 0.0,"" !== -0,"" !== "","" !== -1,"" !== -1.25,"" !== 1,"" !== 1.25,"" !== -2147483648,"" !== 2147483648,"" !== Infinity,"" !== -Infinity,"" !== NaN], - [-1 !== true,-1 !== false,-1 !== null,-1 !== void 0,-1 !== 0,-1 !== 0.0,-1 !== -0,-1 !== "",-1 !== -1,-1 !== -1.25,-1 !== 1,-1 !== 1.25,-1 !== -2147483648,-1 !== 2147483648,-1 !== Infinity,-1 !== -Infinity,-1 !== NaN], - [-1.25 !== true,-1.25 !== false,-1.25 !== null,-1.25 !== void 0,-1.25 !== 0,-1.25 !== 0.0,-1.25 !== -0,-1.25 !== "",-1.25 !== -1,-1.25 !== -1.25,-1.25 !== 1,-1.25 !== 1.25,-1.25 !== -2147483648,-1.25 !== 2147483648,-1.25 !== Infinity,-1.25 !== -Infinity,-1.25 !== NaN], - [1 !== true,1 !== false,1 !== null,1 !== void 0,1 !== 0,1 !== 0.0,1 !== -0,1 !== "",1 !== -1,1 !== -1.25,1 !== 1,1 !== 1.25,1 !== -2147483648,1 !== 2147483648,1 !== Infinity,1 !== -Infinity,1 !== NaN], - [1.25 !== true,1.25 !== false,1.25 !== null,1.25 !== void 0,1.25 !== 0,1.25 !== 0.0,1.25 !== -0,1.25 !== "",1.25 !== -1,1.25 !== -1.25,1.25 !== 1,1.25 !== 1.25,1.25 !== -2147483648,1.25 !== 2147483648,1.25 !== Infinity,1.25 !== -Infinity,1.25 !== NaN], - [-2147483648 !== true,-2147483648 !== false,-2147483648 !== null,-2147483648 !== void 0,-2147483648 !== 0,-2147483648 !== 0.0,-2147483648 !== -0,-2147483648 !== "",-2147483648 !== -1,-2147483648 !== -1.25,-2147483648 !== 1,-2147483648 !== 1.25,-2147483648 !== -2147483648,-2147483648 !== 2147483648,-2147483648 !== Infinity,-2147483648 !== -Infinity,-2147483648 !== NaN], - [2147483648 !== true,2147483648 !== false,2147483648 !== null,2147483648 !== void 0,2147483648 !== 0,2147483648 !== 0.0,2147483648 !== -0,2147483648 !== "",2147483648 !== -1,2147483648 !== -1.25,2147483648 !== 1,2147483648 !== 1.25,2147483648 !== -2147483648,2147483648 !== 2147483648,2147483648 !== Infinity,2147483648 !== -Infinity,2147483648 !== NaN], - [Infinity !== true,Infinity !== false,Infinity !== null,Infinity !== void 0,Infinity !== 0,Infinity !== 0.0,Infinity !== -0,Infinity !== "",Infinity !== -1,Infinity !== -1.25,Infinity !== 1,Infinity !== 1.25,Infinity !== -2147483648,Infinity !== 2147483648,Infinity !== Infinity,Infinity !== -Infinity,Infinity !== NaN], - [-Infinity !== true,-Infinity !== false,-Infinity !== null,-Infinity !== void 0,-Infinity !== 0,-Infinity !== 0.0,-Infinity !== -0,-Infinity !== "",-Infinity !== -1,-Infinity !== -1.25,-Infinity !== 1,-Infinity !== 1.25,-Infinity !== -2147483648,-Infinity !== 2147483648,-Infinity !== Infinity,-Infinity !== -Infinity,-Infinity !== NaN], - [NaN !== true,NaN !== false,NaN !== null,NaN !== void 0,NaN !== 0,NaN !== 0.0,NaN !== -0,NaN !== "",NaN !== -1,NaN !== -1.25,NaN !== 1,NaN !== 1.25,NaN !== -2147483648,NaN !== 2147483648,NaN !== Infinity,NaN !== -Infinity,NaN !== NaN] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/comparison-ops-and-undefined.js b/implementation-contributed/v8/mjsunit/comparison-ops-and-undefined.js deleted file mode 100644 index 06db076580d..00000000000 --- a/implementation-contributed/v8/mjsunit/comparison-ops-and-undefined.js +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function test_helper_for_ics(func, b1, b2, b3, b4) { - assertEquals(b1, func(.5, .5)); - assertEquals(b2, func(.5, undefined)); - assertEquals(b3, func(undefined, .5)); - assertEquals(b4, func(undefined, undefined)); -} - -function test_helper_for_crankshaft(func, b1, b2, b3, b4) { - assertEquals(b1, func(.5, .5)); - %OptimizeFunctionOnNextCall(func); - assertEquals(b1, func(.5, .5)); - assertEquals(b2, func(.5, undefined)); - assertEquals(b3, func(undefined, .5)); - assertEquals(b4, func(undefined, undefined)); -} - -function less_1(a, b) { - return a < b; -} - -test_helper_for_ics(less_1, false, false, false, false); - -function less_2(a, b) { - return a < b; -} - -test_helper_for_crankshaft(less_1, false, false, false, false); - -function greater_1(a, b) { - return a > b; -} - -test_helper_for_ics(greater_1, false, false, false, false); - -function greater_2(a, b) { - return a > b; -} - -test_helper_for_crankshaft(greater_1, false, false, false, false); - -function less_equal_1(a, b) { - return a <= b; -} - -test_helper_for_ics(less_equal_1, true, false, false, false); - -function less_equal_2(a, b) { - return a <= b; -} - -test_helper_for_crankshaft(less_equal_1, true, false, false, false); - -function greater_equal_1(a, b) { - return a >= b; -} - -test_helper_for_ics(greater_equal_1, true, false, false, false); - -function greater_equal_2(a, b) { - return a >= b; -} - -test_helper_for_crankshaft(greater_equal_1, true, false, false, false); - -function equal_1(a, b) { - return a == b; -} - -test_helper_for_ics(equal_1, true, false, false, true); - -function equal_2(a, b) { - return a == b; -} - -test_helper_for_crankshaft(equal_2, true, false, false, true); - -function strict_equal_1(a, b) { - return a === b; -} - -test_helper_for_ics(strict_equal_1, true, false, false, true); - -function strict_equal_2(a, b) { - return a === b; -} - -test_helper_for_crankshaft(strict_equal_2, true, false, false, true); - -function not_equal_1(a, b) { - return a != b; -} - -test_helper_for_ics(not_equal_1, false, true, true, false); - -function not_equal_2(a, b) { - return a != b; -} - -test_helper_for_crankshaft(not_equal_2, false, true, true, false); diff --git a/implementation-contributed/v8/mjsunit/compiler-regress-787301.js b/implementation-contributed/v8/mjsunit/compiler-regress-787301.js deleted file mode 100644 index 851e22a0cbc..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler-regress-787301.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function opt(b) { - let iterator = new Set().values(); - iterator.x = 0; - - let arr = [iterator, iterator]; - if (b) - return arr.slice(); -} - -opt(false); -opt(false); -%OptimizeFunctionOnNextCall(opt); - -let res = opt(true); -let a = res[0]; -let b = res[1]; - -assertTrue(a === b); -a.x = 7; -assertEquals(7, b.x); diff --git a/implementation-contributed/v8/mjsunit/compiler/abstract-equal-receiver.js b/implementation-contributed/v8/mjsunit/compiler/abstract-equal-receiver.js deleted file mode 100644 index 1026b683423..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/abstract-equal-receiver.js +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --noalways-opt - -// Known receivers abstract equality. -(function() { - const a = {}; - const b = {}; - - function foo() { return a == b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known receiver/null abstract equality. -(function() { - const a = {}; - const b = null; - - function foo() { return a == b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known null/receiver abstract equality. -(function() { - const a = null; - const b = {}; - - function foo() { return a == b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known receiver/undefined abstract equality. -(function() { - const a = {}; - const b = undefined; - - function foo() { return a == b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known undefined/receiver abstract equality. -(function() { - const a = undefined; - const b = {}; - - function foo() { return a == b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known receiver on one side strict equality. -(function() { - const a = {}; - const b = {}; - - function foo(a) { return a == b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); - - // TurboFan bakes in feedback for the (unknown) left hand side. - assertFalse(foo(null)); - assertUnoptimized(foo); -})(); - -// Known receiver on one side strict equality with null. -(function() { - const a = null; - const b = {}; - - function foo(a) { return a == b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); - - // TurboFan bakes in feedback for the (unknown) left hand side. - assertFalse(foo(1)); - assertUnoptimized(foo); -})(); - -// Known receiver on one side strict equality with undefined. -(function() { - const a = undefined; - const b = {}; - - function foo(a) { return a == b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); - - // TurboFan bakes in feedback for the (unknown) left hand side. - assertFalse(foo(1)); - assertUnoptimized(foo); -})(); - -// Known null on one side strict equality with receiver. -(function() { - const a = {}; - const b = null; - - function foo(a) { return a == b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(null)); - assertTrue(foo(undefined)); - assertOptimized(foo); - - // TurboFan doesn't need to bake in feedback, since it sees the null. - assertFalse(foo(1)); - assertOptimized(foo); -})(); - -// Known undefined on one side strict equality with receiver. -(function() { - const a = {}; - const b = undefined; - - function foo(a) { return a == b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(null)); - assertTrue(foo(undefined)); - assertOptimized(foo); - - // TurboFan needs to bake in feedback, since undefined cannot - // be context specialized. - assertFalse(foo(1)); - assertUnoptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/abstract-equal-symbol.js b/implementation-contributed/v8/mjsunit/compiler/abstract-equal-symbol.js deleted file mode 100644 index c1057e1d1b7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/abstract-equal-symbol.js +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --noalways-opt - -// Known symbols abstract equality. -(function() { - const a = Symbol("a"); - const b = Symbol("b"); - - function foo() { return a == b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known symbols abstract in-equality. -(function() { - const a = Symbol("a"); - const b = Symbol("b"); - - function foo() { return a != b; } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -// Known symbol on one side abstract equality. -(function() { - const a = Symbol("a"); - const b = Symbol("b"); - - function foo(a) { return a == b; } - - // Warmup - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); - assertOptimized(foo); - - // Make optimized code bail out - assertFalse(foo("a")); - assertUnoptimized(foo); - - // Make sure TurboFan learns the new feedback - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo("a")); - assertOptimized(foo); -})(); - -// Known symbol on one side abstract in-equality. -(function() { - const a = Symbol("a"); - const b = Symbol("b"); - - function foo(a) { return a != b; } - - // Warmup - assertFalse(foo(b)); - assertTrue(foo(a)); - assertFalse(foo(b)); - assertTrue(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(b)); - assertTrue(foo(a)); - - // Make optimized code bail out - assertTrue(foo("a")); - assertUnoptimized(foo); - - // Make sure TurboFan learns the new feedback - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo("a")); - assertOptimized(foo); -})(); - -// Feedback based symbol abstract equality. -(function() { - const a = Symbol("a"); - const b = Symbol("b"); - - function foo(a, b) { return a == b; } - - // Warmup - assertTrue(foo(b, b)); - assertFalse(foo(a, b)); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - - // Make optimized code bail out - assertFalse(foo("a", b)); - assertUnoptimized(foo); - - // Make sure TurboFan learns the new feedback - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo("a", b)); - assertOptimized(foo); -})(); - -// Feedback based symbol abstract in-equality. -(function() { - const a = Symbol("a"); - const b = Symbol("b"); - - function foo(a, b) { return a != b; } - - assertFalse(foo(b, b)); - assertTrue(foo(a, b)); - assertFalse(foo(a, a)); - assertTrue(foo(b, a)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(a, a)); - assertTrue(foo(b, a)); - - // Make optimized code bail out - assertTrue(foo("a", b)); - assertUnoptimized(foo); - - // Make sure TurboFan learns the new feedback - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo("a", b)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/abstract-equal-undetectable.js b/implementation-contributed/v8/mjsunit/compiler/abstract-equal-undetectable.js deleted file mode 100644 index 1e1bb6ba2d8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/abstract-equal-undetectable.js +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --noalways-opt - -const undetectable = %GetUndetectable(); - -// Known undetectable abstract equality. -(function() { - const a = undetectable; - const b = {}; - - function foo() { return a == b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known undetectable/null abstract equality. -(function() { - const a = undetectable; - const b = null; - - function foo() { return a == b; } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -// Known undetectable/receiver abstract equality. -(function() { - const a = null; - const b = undetectable; - - function foo() { return a == b; } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -// Known undetectable/undefined abstract equality. -(function() { - const a = undetectable; - const b = undefined; - - function foo() { return a == b; } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -// Known undefined/undetectable abstract equality. -(function() { - const a = undefined; - const b = undetectable; - - function foo() { return a == b; } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -// Known undetectable on one side strict equality with receiver. -(function() { - const a = {}; - const b = undetectable; - - function foo(a) { return a == b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); - - // TurboFan doesn't need to bake in feedback, since it sees the undetectable. - assertFalse(foo(1)); - assertOptimized(foo); -})(); - -// Unknown undetectable on one side strict equality with receiver. -(function() { - const a = undetectable; - const b = {}; - - function foo(a, b) { return a == b; } - - assertTrue(foo(b, b)); - assertFalse(foo(a, b)); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - assertTrue(foo(a, null)); - assertFalse(foo(b, null)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b, b)); - assertFalse(foo(a, b)); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - assertTrue(foo(a, null)); - assertFalse(foo(b, null)); - assertOptimized(foo); - - // TurboFan bakes in feedback on the inputs. - assertFalse(foo(1)); - assertUnoptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/accessor-exceptions1.js b/implementation-contributed/v8/mjsunit/compiler/accessor-exceptions1.js deleted file mode 100644 index 716d229abab..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/accessor-exceptions1.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {} -Object.defineProperty(o, "x", { - get: function() { throw 7; } -}); - -function foo(o) { - var x = 1; - try { o.x; } catch (e) { x = e; } - return x; -} - -assertEquals(7, foo(o)); -assertEquals(7, foo(o)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(7, foo(o)); diff --git a/implementation-contributed/v8/mjsunit/compiler/accessor-exceptions2.js b/implementation-contributed/v8/mjsunit/compiler/accessor-exceptions2.js deleted file mode 100644 index ed6e3e21c0a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/accessor-exceptions2.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {} -Object.defineProperty(o, "x", { - set: function(v) { throw 7; } -}); - -function foo(o) { - var x = 1; - try { o.x = 2; } catch (e) { x = e; } - return x; -} - -assertEquals(7, foo(o)); -assertEquals(7, foo(o)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(7, foo(o)); diff --git a/implementation-contributed/v8/mjsunit/compiler/alloc-number-debug.js b/implementation-contributed/v8/mjsunit/compiler/alloc-number-debug.js deleted file mode 100644 index ccfcc0c185a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/alloc-number-debug.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Try to get a GC because of a heap number allocation while we -// have live values (o) in a register. -function f(o) { - var x = 1.5; - var y = 2.5; - for (var i = 1; i < 3; i += 1) { - %SetAllocationTimeout(1, 0, false); - o.val = x + y + i; - %SetAllocationTimeout(-1, -1, true); - } - return o; -} - -var o = { val: 0 }; -f(o); diff --git a/implementation-contributed/v8/mjsunit/compiler/alloc-number.js b/implementation-contributed/v8/mjsunit/compiler/alloc-number.js deleted file mode 100644 index cd062cafba8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/alloc-number.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --max-semi-space-size=1 --max-old-space-size=10 - -// This test is specific to release builds. alloc-number-debug.js -// has a fast version for debug builds. - -// Try to get a GC because of a heap number allocation while we -// have live values (o) in a register. -function f(o) { - var x = 1.5; - var y = 2.5; - for (var i = 1; i < 10000; i+=2) o.val = x + y + i; - return o; -} - -var o = { val: 0 }; -for (var i = 0; i < 10; i++) f(o); diff --git a/implementation-contributed/v8/mjsunit/compiler/alloc-object-huge.js b/implementation-contributed/v8/mjsunit/compiler/alloc-object-huge.js deleted file mode 100644 index 74b600cc7db..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/alloc-object-huge.js +++ /dev/null @@ -1,310 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// Flags: --max-inlined-bytecode-size=999999 -// Flags: --max-inlined-bytecode-size-cumulative=999999 - -// Test that huge constructors (more than 256 this assignments) are -// handled correctly. - -// Test huge constructor when being inlined into hydrogen. -function test() { - return new huge(); -} -test(); -test(); -%OptimizeFunctionOnNextCall(test); -var o = test(); -assertEquals(1, o.foo1); -assertEquals(257, o.foo257); - -// Test huge constructor with specialized constructor stub. -var o = new huge(); -assertEquals(1, o.foo1); -assertEquals(257, o.foo257); - -// The huge constructor, nothing interesting beyond this point. -function huge() { - this.foo1 = 1; - this.foo2 = 2; - this.foo3 = 3; - this.foo4 = 4; - this.foo5 = 5; - this.foo6 = 6; - this.foo7 = 7; - this.foo8 = 8; - this.foo9 = 9; - this.foo10 = 10; - this.foo11 = 11; - this.foo12 = 12; - this.foo13 = 13; - this.foo14 = 14; - this.foo15 = 15; - this.foo16 = 16; - this.foo17 = 17; - this.foo18 = 18; - this.foo19 = 19; - this.foo20 = 20; - this.foo21 = 21; - this.foo22 = 22; - this.foo23 = 23; - this.foo24 = 24; - this.foo25 = 25; - this.foo26 = 26; - this.foo27 = 27; - this.foo28 = 28; - this.foo29 = 29; - this.foo30 = 30; - this.foo31 = 31; - this.foo32 = 32; - this.foo33 = 33; - this.foo34 = 34; - this.foo35 = 35; - this.foo36 = 36; - this.foo37 = 37; - this.foo38 = 38; - this.foo39 = 39; - this.foo40 = 40; - this.foo41 = 41; - this.foo42 = 42; - this.foo43 = 43; - this.foo44 = 44; - this.foo45 = 45; - this.foo46 = 46; - this.foo47 = 47; - this.foo48 = 48; - this.foo49 = 49; - this.foo50 = 50; - this.foo51 = 51; - this.foo52 = 52; - this.foo53 = 53; - this.foo54 = 54; - this.foo55 = 55; - this.foo56 = 56; - this.foo57 = 57; - this.foo58 = 58; - this.foo59 = 59; - this.foo60 = 60; - this.foo61 = 61; - this.foo62 = 62; - this.foo63 = 63; - this.foo64 = 64; - this.foo65 = 65; - this.foo66 = 66; - this.foo67 = 67; - this.foo68 = 68; - this.foo69 = 69; - this.foo70 = 70; - this.foo71 = 71; - this.foo72 = 72; - this.foo73 = 73; - this.foo74 = 74; - this.foo75 = 75; - this.foo76 = 76; - this.foo77 = 77; - this.foo78 = 78; - this.foo79 = 79; - this.foo80 = 80; - this.foo81 = 81; - this.foo82 = 82; - this.foo83 = 83; - this.foo84 = 84; - this.foo85 = 85; - this.foo86 = 86; - this.foo87 = 87; - this.foo88 = 88; - this.foo89 = 89; - this.foo90 = 90; - this.foo91 = 91; - this.foo92 = 92; - this.foo93 = 93; - this.foo94 = 94; - this.foo95 = 95; - this.foo96 = 96; - this.foo97 = 97; - this.foo98 = 98; - this.foo99 = 99; - this.foo100 = 100; - this.foo101 = 101; - this.foo102 = 102; - this.foo103 = 103; - this.foo104 = 104; - this.foo105 = 105; - this.foo106 = 106; - this.foo107 = 107; - this.foo108 = 108; - this.foo109 = 109; - this.foo110 = 110; - this.foo111 = 111; - this.foo112 = 112; - this.foo113 = 113; - this.foo114 = 114; - this.foo115 = 115; - this.foo116 = 116; - this.foo117 = 117; - this.foo118 = 118; - this.foo119 = 119; - this.foo120 = 120; - this.foo121 = 121; - this.foo122 = 122; - this.foo123 = 123; - this.foo124 = 124; - this.foo125 = 125; - this.foo126 = 126; - this.foo127 = 127; - this.foo128 = 128; - this.foo129 = 129; - this.foo130 = 130; - this.foo131 = 131; - this.foo132 = 132; - this.foo133 = 133; - this.foo134 = 134; - this.foo135 = 135; - this.foo136 = 136; - this.foo137 = 137; - this.foo138 = 138; - this.foo139 = 139; - this.foo140 = 140; - this.foo141 = 141; - this.foo142 = 142; - this.foo143 = 143; - this.foo144 = 144; - this.foo145 = 145; - this.foo146 = 146; - this.foo147 = 147; - this.foo148 = 148; - this.foo149 = 149; - this.foo150 = 150; - this.foo151 = 151; - this.foo152 = 152; - this.foo153 = 153; - this.foo154 = 154; - this.foo155 = 155; - this.foo156 = 156; - this.foo157 = 157; - this.foo158 = 158; - this.foo159 = 159; - this.foo160 = 160; - this.foo161 = 161; - this.foo162 = 162; - this.foo163 = 163; - this.foo164 = 164; - this.foo165 = 165; - this.foo166 = 166; - this.foo167 = 167; - this.foo168 = 168; - this.foo169 = 169; - this.foo170 = 170; - this.foo171 = 171; - this.foo172 = 172; - this.foo173 = 173; - this.foo174 = 174; - this.foo175 = 175; - this.foo176 = 176; - this.foo177 = 177; - this.foo178 = 178; - this.foo179 = 179; - this.foo180 = 180; - this.foo181 = 181; - this.foo182 = 182; - this.foo183 = 183; - this.foo184 = 184; - this.foo185 = 185; - this.foo186 = 186; - this.foo187 = 187; - this.foo188 = 188; - this.foo189 = 189; - this.foo190 = 190; - this.foo191 = 191; - this.foo192 = 192; - this.foo193 = 193; - this.foo194 = 194; - this.foo195 = 195; - this.foo196 = 196; - this.foo197 = 197; - this.foo198 = 198; - this.foo199 = 199; - this.foo200 = 200; - this.foo201 = 201; - this.foo202 = 202; - this.foo203 = 203; - this.foo204 = 204; - this.foo205 = 205; - this.foo206 = 206; - this.foo207 = 207; - this.foo208 = 208; - this.foo209 = 209; - this.foo210 = 210; - this.foo211 = 211; - this.foo212 = 212; - this.foo213 = 213; - this.foo214 = 214; - this.foo215 = 215; - this.foo216 = 216; - this.foo217 = 217; - this.foo218 = 218; - this.foo219 = 219; - this.foo220 = 220; - this.foo221 = 221; - this.foo222 = 222; - this.foo223 = 223; - this.foo224 = 224; - this.foo225 = 225; - this.foo226 = 226; - this.foo227 = 227; - this.foo228 = 228; - this.foo229 = 229; - this.foo230 = 230; - this.foo231 = 231; - this.foo232 = 232; - this.foo233 = 233; - this.foo234 = 234; - this.foo235 = 235; - this.foo236 = 236; - this.foo237 = 237; - this.foo238 = 238; - this.foo239 = 239; - this.foo240 = 240; - this.foo241 = 241; - this.foo242 = 242; - this.foo243 = 243; - this.foo244 = 244; - this.foo245 = 245; - this.foo246 = 246; - this.foo247 = 247; - this.foo248 = 248; - this.foo249 = 249; - this.foo250 = 250; - this.foo251 = 251; - this.foo252 = 252; - this.foo253 = 253; - this.foo254 = 254; - this.foo255 = 255; - this.foo256 = 256; - this.foo257 = 257; -} diff --git a/implementation-contributed/v8/mjsunit/compiler/alloc-object.js b/implementation-contributed/v8/mjsunit/compiler/alloc-object.js deleted file mode 100644 index 8d19816536d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/alloc-object.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that inlined object allocation works for different layouts of -// objects (e.g. in object properties, slack tracking in progress or -// changing of function prototypes) - -function test_helper(construct, a, b) { - return new construct(a, b); -} - -function test(construct) { - %DeoptimizeFunction(test); - test_helper(construct, 0, 0); - test_helper(construct, 0, 0); - %OptimizeFunctionOnNextCall(test_helper); - // Test adding a new property after allocation was inlined. - var o = test_helper(construct, 1, 2); - o.z = 3; - assertEquals(1, o.x); - assertEquals(2, o.y); - assertEquals(3, o.z); - // Test changing the prototype after allocation was inlined. - construct.prototype = { z:6 }; - var o = test_helper(construct, 4, 5); - assertEquals(4, o.x); - assertEquals(5, o.y); - assertEquals(6, o.z); - %DeoptimizeFunction(test_helper); - %ClearFunctionFeedback(test_helper); -} - -function finalize_slack_tracking(construct) { - // Value chosen based on kGenerousAllocationCount = 8. - for (var i = 0; i < 8; i++) { - new construct(0, 0); - } -} - - -// Both properties are pre-allocated in object properties. -function ConstructInObjectPreAllocated(a, b) { - this.x = a; - this.y = b; -} -finalize_slack_tracking(ConstructInObjectPreAllocated); -test(ConstructInObjectPreAllocated); - - -// Both properties are unused in object properties. -function ConstructInObjectUnused(a, b) { - this.x = a < 0 ? 0 : a; - this.y = b > 0 ? b : 0; -} -finalize_slack_tracking(ConstructInObjectUnused); -test(ConstructInObjectUnused); - - -// Test inlined allocation while slack tracking is still in progress. -function ConstructWhileSlackTracking(a, b) { - this.x = a; - this.y = b; -} -test(ConstructWhileSlackTracking); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-access.js b/implementation-contributed/v8/mjsunit/compiler/array-access.js deleted file mode 100644 index 65b3c99b422..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-access.js +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function Get0(a) { - return a[0]; -} - -function GetN(a,n) { - return a[n]; -} - -function GetA0(a) { - return a[a[0]]; -} - -function GetAN(a,n) { - return a[a[n]]; -} - -function GetAAN(a,n) { - return a[a[a[n]]]; -} - -function RunGetTests() { - var a = [2,0,1]; - assertEquals(2, Get0(a)); - - assertEquals(2, GetN(a, 0)); - assertEquals(0, GetN(a, 1)); - assertEquals(1, GetN(a, 2)); - - assertEquals(1, GetA0(a)); - - assertEquals(1, GetAN(a,0)); - assertEquals(2, GetAN(a,1)); - assertEquals(0, GetAN(a,2)); - - assertEquals(0, GetAAN(a,0)); - assertEquals(1, GetAAN(a,1)); - assertEquals(2, GetAAN(a,2)); -} - - -function Set07(a) { - a[0] = 7; -} - -function Set0V(a, v) { - a[0] = v; -} - -function SetN7(a, n) { - a[n] = 7; -} - -function SetNX(a, n, x) { - a[n] = x; -} - -function RunSetTests(a) { - Set07(a); - assertEquals(7, a[0]); - assertEquals(0, a[1]); - assertEquals(0, a[2]); - - Set0V(a, 1); - assertEquals(1, a[0]); - assertEquals(0, a[1]); - assertEquals(0, a[2]); - - SetN7(a, 2); - assertEquals(1, a[0]); - assertEquals(0, a[1]); - assertEquals(7, a[2]); - - SetNX(a, 1, 5); - assertEquals(1, a[0]); - assertEquals(5, a[1]); - assertEquals(7, a[2]); - - for (var i = 0; i < 3; i++) SetNX(a, i, 0); - assertEquals(0, a[0]); - assertEquals(0, a[1]); - assertEquals(0, a[2]); -} - -function RunArrayBoundsCheckTest() { - var g = [1,2,3]; - - function f(a, i) { a[i] = 42; } - - for (var i = 0; i < 100000; i++) { f(g, 0); } - - f(g, 4); - - assertEquals(42, g[0]); - assertEquals(42, g[4]); -} - -var a = [0,0,0]; -var o = {0: 0, 1: 0, 2: 0}; -for (var i = 0; i < 1000; i++) { - RunGetTests(); - RunSetTests(a); - RunSetTests(o); -} - -RunArrayBoundsCheckTest(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-buffer-is-view.js b/implementation-contributed/v8/mjsunit/compiler/array-buffer-is-view.js deleted file mode 100644 index b56763b5b2a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-buffer-is-view.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that ObjectIsArrayBufferView lowering works correctly -// in EffectControlLinearizer in the case that the input is -// known to be a HeapObject by TurboFan. For this we use the -// simple trick with an object literal whose field `x` will -// only ever contain HeapObjects and so the representation -// tracking is going to pick it up. -(function() { - function foo(x) { - return ArrayBuffer.isView({x}.x); - } - - assertFalse(foo(Symbol())); - assertFalse(foo("some string")); - assertFalse(foo(new Object())); - assertFalse(foo(new Array())); - assertFalse(foo(new ArrayBuffer(1))); - assertTrue(foo(new Int32Array(1))); - assertTrue(foo(new DataView(new ArrayBuffer(1)))); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(Symbol())); - assertFalse(foo("some string")); - assertFalse(foo(new Object())); - assertFalse(foo(new Array())); - assertFalse(foo(new ArrayBuffer(1))); - assertTrue(foo(new Int32Array(1))); - assertTrue(foo(new DataView(new ArrayBuffer(1)))); - assertOptimized(foo); -})(); - -// Test that ObjectIsArrayBufferView lowering works correctly -// in EffectControlLinearizer in the case that the input is -// some arbitrary tagged value. -(function() { - function foo(x) { - return ArrayBuffer.isView(x); - } - - assertFalse(foo(1)); - assertFalse(foo(1.1)); - assertFalse(foo(Symbol())); - assertFalse(foo("some string")); - assertFalse(foo(new Object())); - assertFalse(foo(new Array())); - assertFalse(foo(new ArrayBuffer(1))); - assertTrue(foo(new Int32Array(1))); - assertTrue(foo(new DataView(new ArrayBuffer(1)))); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1)); - assertFalse(foo(1.1)); - assertFalse(foo(Symbol())); - assertFalse(foo("some string")); - assertFalse(foo(new Object())); - assertFalse(foo(new Array())); - assertFalse(foo(new ArrayBuffer(1))); - assertTrue(foo(new Int32Array(1))); - assertTrue(foo(new DataView(new ArrayBuffer(1)))); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-constructor.js b/implementation-contributed/v8/mjsunit/compiler/array-constructor.js deleted file mode 100644 index eef242714bb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-constructor.js +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test Array call with known Boolean. -(() => { - function foo(x) { return Array(!!x); } - - assertEquals([true], foo(true)); - assertEquals([false], foo(false)); - %OptimizeFunctionOnNextCall(foo); - assertEquals([true], foo(true)); - assertEquals([false], foo(false)); -})(); - -// Test Array construct with known Boolean. -(() => { - function foo(x) { return new Array(!!x); } - - assertEquals([true], foo(true)); - assertEquals([false], foo(false)); - %OptimizeFunctionOnNextCall(foo); - assertEquals([true], foo(true)); - assertEquals([false], foo(false)); -})(); - -// Test Array call with known String. -(() => { - function foo(x) { return Array("" + x); } - - assertEquals(["a"], foo("a")); - assertEquals(["b"], foo("b")); - %OptimizeFunctionOnNextCall(foo); - assertEquals(["a"], foo("a")); - assertEquals(["b"], foo("b")); -})(); - -// Test Array construct with known String. -(() => { - function foo(x) { return new Array("" + x); } - - assertEquals(["a"], foo("a")); - assertEquals(["b"], foo("b")); - %OptimizeFunctionOnNextCall(foo); - assertEquals(["a"], foo("a")); - assertEquals(["b"], foo("b")); -})(); - -// Test Array call with known fixed small integer. -(() => { - function foo() { return Array(2); } - - assertEquals(2, foo().length); - assertEquals(2, foo().length); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo().length); -})(); - -// Test Array construct with known fixed small integer. -(() => { - function foo() { return new Array(2); } - - assertEquals(2, foo().length); - assertEquals(2, foo().length); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo().length); -})(); - -// Test Array call with multiple parameters. -(() => { - function foo(x, y, z) { return Array(x, y, z); } - - assertEquals([1, 2, 3], foo(1, 2, 3)); - assertEquals([1, 2, 3], foo(1, 2, 3)); - %OptimizeFunctionOnNextCall(foo); - assertEquals([1, 2, 3], foo(1, 2, 3)); -})(); - -// Test Array construct with multiple parameters. -(() => { - function foo(x, y, z) { return new Array(x, y, z); } - - assertEquals([1, 2, 3], foo(1, 2, 3)); - assertEquals([1, 2, 3], foo(1, 2, 3)); - %OptimizeFunctionOnNextCall(foo); - assertEquals([1, 2, 3], foo(1, 2, 3)); -})(); - -// Test Array construct inside try-catch block. -(() => { - function foo(x) { try { return new Array(x) } catch (e) { return e } } - - assertEquals([], foo(0)); - assertEquals([], foo(0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals([], foo(0)); - assertInstanceof(foo(-1), RangeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-every.js b/implementation-contributed/v8/mjsunit/compiler/array-every.js deleted file mode 100644 index 5064bd557dc..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-every.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Basic loop peeling test case with Array.prototype.every(). -(function() { - function foo(a, o) { - return a.every(x => x === o.x); - } - - assertTrue(foo([3, 3, 3], {x:3})); - assertFalse(foo([3, 3, 2], {x:3})); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo([3, 3, 3], {x:3})); - assertFalse(foo([3, 3, 2], {x:3})); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-find.js b/implementation-contributed/v8/mjsunit/compiler/array-find.js deleted file mode 100644 index 419a758ac79..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-find.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Basic loop peeling test case with Array.prototype.find(). -(function() { - function foo(a, o) { - return a.find(x => x === o.x); - } - - assertEquals(3, foo([1, 2, 3], {x:3})); - assertEquals(undefined, foo([0, 1, 2], {x:3})); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo([1, 2, 3], {x:3})); - assertEquals(undefined, foo([0, 1, 2], {x:3})); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-findindex.js b/implementation-contributed/v8/mjsunit/compiler/array-findindex.js deleted file mode 100644 index 583f553ce43..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-findindex.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Basic loop peeling test case with Array.prototype.findIndex(). -(function() { - function foo(a, o) { - return a.findIndex(x => x === o.x); - } - - assertEquals(2, foo([1, 2, 3], {x:3})); - assertEquals(-1, foo([0, 1, 2], {x:3})); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo([1, 2, 3], {x:3})); - assertEquals(-1, foo([0, 1, 2], {x:3})); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-is-array.js b/implementation-contributed/v8/mjsunit/compiler/array-is-array.js deleted file mode 100644 index 37c916ddac5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-is-array.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test JSObjectIsArray in JSTypedLowering for the case that the -// input value is known to be an Array literal. -(function() { - function foo() { - return Array.isArray([]); - } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -// Test JSObjectIsArray in JSTypedLowering for the case that the -// input value is known to be a Proxy for an Array literal. -(function() { - function foo() { - return Array.isArray(new Proxy([], {})); - } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -// Test JSObjectIsArray in JSTypedLowering for the case that the -// input value is known to be an Object literal. -(function() { - function foo() { - return Array.isArray({}); - } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Test JSObjectIsArray in JSTypedLowering for the case that the -// input value is known to be a Proxy for an Object literal. -(function() { - function foo() { - return Array.isArray(new Proxy({}, {})); - } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Test JSObjectIsArray in JSTypedLowering for the case that -// TurboFan doesn't know anything about the input value. -(function() { - function foo(x) { - return Array.isArray(x); - } - - assertFalse(foo({})); - assertFalse(foo(new Proxy({}, {}))); - assertTrue(foo([])); - assertTrue(foo(new Proxy([], {}))); - assertThrows(() => { - const {proxy, revoke} = Proxy.revocable([], {}); - revoke(); - foo(proxy); - }, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo({})); - assertFalse(foo(new Proxy({}, {}))); - assertTrue(foo([])); - assertTrue(foo(new Proxy([], {}))); - assertThrows(() => { - const {proxy, revoke} = Proxy.revocable([], {}); - revoke(); - foo(proxy); - }, TypeError); -})(); - -// Test JSObjectIsArray in JSTypedLowering for the case that -// we pass a revoked proxy and catch the exception locally. -(function() { - function foo(x) { - const {proxy, revoke} = Proxy.revocable(x, {}); - revoke(); - try { - return Array.isArray(proxy); - } catch (e) { - return e; - } - } - - assertInstanceof(foo([]), TypeError); - assertInstanceof(foo({}), TypeError); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo([]), TypeError); - assertInstanceof(foo({}), TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-length.js b/implementation-contributed/v8/mjsunit/compiler/array-length.js deleted file mode 100644 index 462a1e77392..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-length.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function ArrayLength(a) { return a.length; } - -function Test(a0, a2, a5) { - assertEquals(0, ArrayLength(a0)); - assertEquals(2, ArrayLength(a2)); - assertEquals(5, ArrayLength(a5)); -} - -var a0 = []; -var a2 = [1,2]; -var a5 = [1,2,3,4,5]; -for (var i = 0; i < 5; i++) Test(a0, a2, a5); -%OptimizeFunctionOnNextCall(ArrayLength); -%OptimizeFunctionOnNextCall(Test); -Test(a0, a2, a5); -assertEquals("undefined", typeof(ArrayLength(0))); -for (var i = 0; i < 5; i++) Test(a0, a2, a5); -%OptimizeFunctionOnNextCall(Test); -Test(a0, a2, a5); -assertEquals(4, ArrayLength("hest")); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-multiple-receiver-maps.js b/implementation-contributed/v8/mjsunit/compiler/array-multiple-receiver-maps.js deleted file mode 100644 index c26aeda7dc8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-multiple-receiver-maps.js +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt -// Flags: --no-stress-background-compile --trace-opt --trace-deopt - -let id = 0; - -function runTest(f, message, mkICTraining, deoptArg) { - function test(f, message, ictraining, deoptArg) { - // Train the call ic to the maps. - let t = ictraining; - - // We put the training data into local variables - // to ensure their maps are kepts alive. If the - // maps die, gc *may* deoptimize {f}, which makes - // the test flaky. - let t1 = t(); - let t2 = t(); - let t3 = t(); - - for (let a of t1) { - f(a.arr, () => a.el); - } - for (let a of t2) { - f(a.arr, () => a.el); - } - %OptimizeFunctionOnNextCall(f); - message += " trained with" + JSON.stringify(t()); - if (deoptArg == undefined) { - // Make sure the optimized function can handle - // all trained maps without deopt. - for (let a of t3) { - message += " for args " + JSON.stringify(a) + " should have been optimized"; - f(a.arr, () => a.el); - assertOptimized(f, undefined, message); - } - } else { - // Trigger deopt, causing no-speculation bit to be set. - let a1 = deoptArg; - let a2 = deoptArg; - message += " for args " + JSON.stringify(a1); - message_unoptimized = message + " should have been unoptimized" - message_optimized = message + " should have been unoptimized" - f(a1.arr, () => a1.el); - assertUnoptimized(f, undefined, message_unoptimized); - %OptimizeFunctionOnNextCall(f); - // No speculation should protect against further deopts. - f(a2.arr, () => a2.el); - assertOptimized(f, undefined, message_optimized); - } - } - - // Get function as a string. - var testString = test.toString(); - // Remove the function header.. - testString = testString.replace(new RegExp("[^\n]*"), "let f = " + f.toString() + ";"); - // ..and trailing '}'. - testString = testString.replace(new RegExp("[^\n]*$"), ""); - // Substitute parameters. - testString = testString.replace(new RegExp("ictraining", 'g'), mkICTraining.toString()); - testString = testString.replace(new RegExp("deoptArg", 'g'), - deoptArg ? JSON.stringify(deoptArg).replace(/"/g,'') : "undefined"); - - // Make field names unique to avoid learning of types. - id = id + 1; - testString = testString.replace(/[.]el/g, '.el' + id); - testString = testString.replace(/el:/g, 'el' + id + ':'); - testString = testString.replace(/[.]arr/g, '.arr' + id); - testString = testString.replace(/arr:/g, 'arr' + id + ':'); - - var modTest = new Function("message", testString); - //print(modTest); - modTest(message); -} - -let checks = { - smiReceiver: - { mkTrainingArguments : () => [{arr:[1], el:3}], - deoptingArguments : [{arr:[0.1], el:1}, {arr:[{}], el:1}] - }, - objectReceiver: - { mkTrainingArguments : () => [{arr:[{}], el:0.1}], - deoptingArguments : [] - }, - multipleSmiReceivers: - { mkTrainingArguments : () => { let b = [1]; b.x=3; return [{arr:[1], el:3}, {arr:b, el:3}] }, - deoptingArguments : [{arr:[0.1], el:1}, {arr:[{}], el:1}] - }, - multipleSmiReceiversPackedUnpacked: - { mkTrainingArguments : () => { let b = [1]; b[100] = 3; return [{arr:[1], el:3}, {arr:b, el:3}] }, - deoptingArguments : [{arr:[0.1], el:1}, {arr:[{}], el:1}] - }, - multipleDoubleReceivers: - { mkTrainingArguments : () => { let b = [0.1]; b.x=0.3; return [{arr:[0.1], el:0.3}, {arr:b, el:0.3}] }, - deoptingArguments : [{arr:[{}], el:true}, {arr:[1], el:true}] - }, - multipleDoubleReceiversPackedUnpacked: - { mkTrainingArguments : () => { let b = [0.1]; b[100] = 0.3; return [{arr:[0.1], el:0.3}, {arr:b, el:0.3}] }, - deoptingArguments : [{arr:[{}], el:true}, {arr:[1], el:true}] - }, - multipleMixedReceivers: - { mkTrainingArguments : () => { let b = [0.1]; b.x=0.3; return [{arr:[1], el:0.3}, {arr:[{}], el:true}, {arr:b, el:0.3}] }, - deoptingArguments : [] - }, - multipleMixedReceiversPackedUnpacked: - { mkTrainingArguments : () => { let b = [0.1]; b[100] = 0.3; return [{arr:[1], el:0.3}, {arr:[{}], el:true}, {arr:b, el:0.3}] }, - deoptingArguments : [] - }, -}; - -const functions = { - push_reliable: (a,g) => { let b = g(); return a.push(2, b); }, - push_unreliable: (a,g) => { return a.push(2, g()); }, - pop_reliable: (a,g) => { let b = g(); return a.pop(2, b); }, - pop_unreliable: (a,g) => { return a.pop(2, g()); }, - shift_reliable: (a,g) => { let b = g(); return a.shift(2, b); }, - shift_unreliable: (a,g) => { return a.shift(2, g()); } -} - -Object.keys(checks).forEach( - key => { - let check = checks[key]; - - for (fnc in functions) { - runTest(functions[fnc], "test-" + fnc + "-" + key, check.mkTrainingArguments); - // Test each deopting arg separately. - for (let deoptArg of check.deoptingArguments) { - runTest(functions[fnc], "testDeopt-" + fnc + "-" + key, check.mkTrainingArguments, deoptArg); - } - } - } -); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-push-1.js b/implementation-contributed/v8/mjsunit/compiler/array-push-1.js deleted file mode 100644 index 58afd6ffe6a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-push-1.js +++ /dev/null @@ -1,239 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test multiple arguments push for PACKED_SMI_ELEMENTS. -(function() { - function push0(a) { - return a.push(); - } - - assertEquals(0, push0([])); - assertEquals(1, push0([1])); - %OptimizeFunctionOnNextCall(push0); - assertEquals(2, push0([1, 2])); - - function push1(a) { - return a.push(1); - } - - assertEquals(1, push1([])); - assertEquals(2, push1([1])); - %OptimizeFunctionOnNextCall(push1); - assertEquals(3, push1([1, 2])); - - function push2(a) { - return a.push(1, 2); - } - - assertEquals(2, push2([])); - assertEquals(3, push2([1])); - %OptimizeFunctionOnNextCall(push2); - assertEquals(4, push2([1, 2])); - - function push3(a) { - return a.push(1, 2, 3); - } - - assertEquals(3, push3([])); - assertEquals(4, push3([1])); - %OptimizeFunctionOnNextCall(push3); - assertEquals(5, push3([1, 2])); -})(); - -// Test multiple arguments push for HOLEY_SMI_ELEMENTS. -(function() { - function push0(a) { - return a.push(); - } - - assertEquals(1, push0(new Array(1))); - assertEquals(2, push0(new Array(2))); - %OptimizeFunctionOnNextCall(push0); - assertEquals(3, push0(new Array(3))); - - function push1(a) { - return a.push(1); - } - - assertEquals(2, push1(new Array(1))); - assertEquals(3, push1(new Array(2))); - %OptimizeFunctionOnNextCall(push1); - assertEquals(4, push1(new Array(3))); - - function push2(a) { - return a.push(1, 2); - } - - assertEquals(3, push2(new Array(1))); - assertEquals(4, push2(new Array(2))); - %OptimizeFunctionOnNextCall(push2); - assertEquals(5, push2(new Array(3))); - - function push3(a) { - return a.push(1, 2, 3); - } - - assertEquals(4, push3(new Array(1))); - assertEquals(5, push3(new Array(2))); - %OptimizeFunctionOnNextCall(push3); - assertEquals(6, push3(new Array(3))); -})(); - -// Test multiple arguments push for PACKED_DOUBLE_ELEMENTS. -(function() { - function push0(a) { - return a.push(); - } - - assertEquals(1, push0([1.1])); - assertEquals(2, push0([1.1, 2.2])); - %OptimizeFunctionOnNextCall(push0); - assertEquals(3, push0([1.1, 2.2, 3.3])); - - function push1(a) { - return a.push(1.1); - } - - assertEquals(2, push1([1.1])); - assertEquals(3, push1([1.1, 2.2])); - %OptimizeFunctionOnNextCall(push1); - assertEquals(4, push1([1.1, 2.2, 3.3])); - - function push2(a) { - return a.push(1.1, 2.2); - } - - assertEquals(3, push2([1.1])); - assertEquals(4, push2([1.1, 2.2])); - %OptimizeFunctionOnNextCall(push2); - assertEquals(5, push2([1.1, 2.2, 3.3])); - - function push3(a) { - return a.push(1.1, 2.2, 3.3); - } - - assertEquals(4, push3([1.1])); - assertEquals(5, push3([1.1, 2.2])); - %OptimizeFunctionOnNextCall(push3); - assertEquals(6, push3([1.1, 2.2, 3.3])); -})(); - -// Test multiple arguments push for HOLEY_DOUBLE_ELEMENTS. -(function() { - function push0(a) { - return a.push(); - } - - assertEquals(2, push0([, 1.1])); - assertEquals(3, push0([, 1.1, 2.2])); - %OptimizeFunctionOnNextCall(push0); - assertEquals(4, push0([, 1.1, 2.2, 3.3])); - - function push1(a) { - return a.push(1.1); - } - - assertEquals(3, push1([, 1.1])); - assertEquals(4, push1([, 1.1, 2.2])); - %OptimizeFunctionOnNextCall(push1); - assertEquals(5, push1([, 1.1, 2.2, 3.3])); - - function push2(a) { - return a.push(1.1, 2.2); - } - - assertEquals(4, push2([, 1.1])); - assertEquals(5, push2([, 1.1, 2.2])); - %OptimizeFunctionOnNextCall(push2); - assertEquals(6, push2([, 1.1, 2.2, 3.3])); - - function push3(a) { - return a.push(1.1, 2.2, 3.3); - } - - assertEquals(5, push3([, 1.1])); - assertEquals(6, push3([, 1.1, 2.2])); - %OptimizeFunctionOnNextCall(push3); - assertEquals(7, push3([, 1.1, 2.2, 3.3])); -})(); - -// Test multiple arguments push for PACKED_ELEMENTS. -(function() { - function push0(a) { - return a.push(); - } - - assertEquals(1, push0(['1'])); - assertEquals(2, push0(['1', '2'])); - %OptimizeFunctionOnNextCall(push0); - assertEquals(3, push0(['1', '2', '3'])); - - function push1(a) { - return a.push('1'); - } - - assertEquals(2, push1(['1'])); - assertEquals(3, push1(['1', '2'])); - %OptimizeFunctionOnNextCall(push1); - assertEquals(4, push1(['1', '2', '3'])); - - function push2(a) { - return a.push('1', '2'); - } - - assertEquals(3, push2(['1'])); - assertEquals(4, push2(['1', '2'])); - %OptimizeFunctionOnNextCall(push2); - assertEquals(5, push2(['1', '2', '3'])); - - function push3(a) { - return a.push('1', '2', '3'); - } - - assertEquals(4, push3(['1'])); - assertEquals(5, push3(['1', '2'])); - %OptimizeFunctionOnNextCall(push3); - assertEquals(6, push3(['1', '2', '3'])); -})(); - -// Test multiple arguments push for HOLEY_ELEMENTS. -(function() { - function push0(a) { - return a.push(); - } - - assertEquals(2, push0([, '1'])); - assertEquals(3, push0([, '1', '2'])); - %OptimizeFunctionOnNextCall(push0); - assertEquals(4, push0([, '1', '2', '3'])); - - function push1(a) { - return a.push('1'); - } - - assertEquals(3, push1([, '1'])); - assertEquals(4, push1([, '1', '2'])); - %OptimizeFunctionOnNextCall(push1); - assertEquals(5, push1([, '1', '2', '3'])); - - function push2(a) { - return a.push('1', '2'); - } - - assertEquals(4, push2([, '1'])); - assertEquals(5, push2([, '1', '2'])); - %OptimizeFunctionOnNextCall(push2); - assertEquals(6, push2([, '1', '2', '3'])); - - function push3(a) { - return a.push('1', '2', '3'); - } - - assertEquals(5, push3([, '1'])); - assertEquals(6, push3([, '1', '2'])); - %OptimizeFunctionOnNextCall(push3); - assertEquals(7, push3([, '1', '2', '3'])); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-push-2.js b/implementation-contributed/v8/mjsunit/compiler/array-push-2.js deleted file mode 100644 index cb18d71d636..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-push-2.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test elements transition from SMI to DOUBLE. -(function() { - const a = []; - const foo = (x, y) => a.push(x, y); - foo(1, 2); - foo(3, 4); - %OptimizeFunctionOnNextCall(foo); - foo(5, 6.6); - assertEquals([1, 2, 3, 4, 5, 6.6], a); -})(); -(function() { - const a = []; - const foo = (x, y) => a.push(x, y); - foo(1, 2); - foo(3, 4); - %OptimizeFunctionOnNextCall(foo); - foo(5.5, 6.6); - assertEquals([1, 2, 3, 4, 5.5, 6.6], a); -})(); - -// Test elements transition from SMI to OBJECT. -(function() { - const a = []; - const foo = (x, y) => a.push(x, y); - foo(1, 2); - foo(3, 4); - %OptimizeFunctionOnNextCall(foo); - foo(5, '6'); - assertEquals([1, 2, 3, 4, 5, '6'], a); -})(); -(function() { - const a = []; - const foo = (x, y) => a.push(x, y); - foo(1, 2); - foo(3, 4); - %OptimizeFunctionOnNextCall(foo); - foo('5', '6'); - assertEquals([1, 2, 3, 4, '5', '6'], a); -})(); - -// Test elements transition from DOUBLE to OBJECT. -(function() { - const a = [0.5]; - const foo = (x, y) => a.push(x, y); - foo(1, 2); - foo(3, 4); - %OptimizeFunctionOnNextCall(foo); - foo(5, '6'); - assertEquals([0.5, 1, 2, 3, 4, 5, '6'], a); -})(); -(function() { - const a = [0.5]; - const foo = (x, y) => a.push(x, y); - foo(1, 2); - foo(3, 4); - %OptimizeFunctionOnNextCall(foo); - foo('5', '6'); - assertEquals([0.5, 1, 2, 3, 4, '5', '6'], a); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-push-3.js b/implementation-contributed/v8/mjsunit/compiler/array-push-3.js deleted file mode 100644 index f648eb9ed9a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-push-3.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test side effects on arguments evaluation. -(function() { - const a = []; - const bar = x => { a.push(x); return x; }; - const foo = x => a.push(bar(x), bar(x)); - foo(1); - foo(2); - %OptimizeFunctionOnNextCall(foo); - foo(3); - assertEquals([1,1,1,1, 2,2,2,2, 3,3,3,3], a); -})(); - -// Test invalidation on arguments evaluation. -(function() { - let y = 1; - const a = []; - const bar = x => { a.push(y); return x; } - const foo = x => a.push(bar(x), bar(x)); - foo(1); - y = 2; - foo(2); - %OptimizeFunctionOnNextCall(foo); - y = 3; - foo(3); - assertOptimized(foo); - y = 4.4; - foo(4); - assertEquals([1,1,1,1, 2,2,2,2, 3,3,3,3, 4.4,4.4,4,4], a); -})(); -(function() { - let y = 1; - const a = [0.5]; - const bar = x => { a.push(y); return x; } - const foo = x => a.push(bar(x), bar(x)); - foo(1); - y = 2; - foo(2); - %OptimizeFunctionOnNextCall(foo); - y = 3; - foo(3); - assertOptimized(foo); - y = '4'; - foo(4); - assertEquals([0.5, 1,1,1,1, 2,2,2,2, 3,3,3,3, '4','4',4,4], a); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-slice-clone.js b/implementation-contributed/v8/mjsunit/compiler/array-slice-clone.js deleted file mode 100644 index 610fa17c1aa..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-slice-clone.js +++ /dev/null @@ -1,365 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - - -// Test CloneFastJSArray inserted by JSCallReducer for Array.prototype.slice. -// CloneFastJSArray produces COW arrays if the original array is COW. - -// Trigger JSCallReducer on slice() and slice(0) -(function() { - const arr = [1,2,3,4,5]; - - function slice() { - return arr.slice(); - } - - function slice0() { - return arr.slice(0); - } - - assertEquals(arr, slice()); - assertFalse(arr === slice()); - assertEquals(slice(), slice0()); - assertEquals(slice0(), slice()); - - %OptimizeFunctionOnNextCall(slice0); - %OptimizeFunctionOnNextCall(slice); - - assertEquals(slice(), slice0()); - assertOptimized(slice); assertOptimized(slice0); -})(); - -// This will cause deopt of slice by a CheckMap installed by -// JSNativeContextSpecialization::ReduceNamedAccess -(function() { - const arr = [1,2,3,4,5]; - - function slice() { - return arr.slice(); - } - - assertEquals(arr, slice()); - assertEquals(slice(), arr); - - %OptimizeFunctionOnNextCall(slice); - slice(); - - // Trigger deopt here - arr.push(7.2); - assertEquals(slice()[5], 7.2); -})(); - -// There should not be a deopt cycle. -(function() { - const arr = [1,2,3,4,5]; - - function slice() { - return arr.slice(); - } - - assertEquals(arr, slice()); - assertEquals(slice(), arr); - - %OptimizeFunctionOnNextCall(slice); - // Trigger opt - assertEquals(slice(), arr); - - // Trigger deopt by CheckMap from JSNativeContextSpecialization - arr.push(7.2); - slice(); - - %OptimizeFunctionOnNextCall(slice); - // Trigger opt again - slice(); - - // Should not deopt again - arr.push(8.2); - slice(); - assertOptimized(slice); -})(); - -// JSCallReducer will not reduce because the species has been modified -(function() { - const array = [3,4,5]; - - function slice(){ - return array.slice(); - } - - class MyArray extends Array {}; - array.constructor = MyArray; - - slice(); slice(); - - %OptimizeFunctionOnNextCall(slice); - var narr = slice(); - assertInstanceof(narr, MyArray); -})(); - -(function() { - const array = [3,4,5]; - - function slice(){ - return array.slice(); - } - - slice(); slice(); - - %OptimizeFunctionOnNextCall(slice); - - slice(); - - class MyArray extends Array {}; - array.constructor = MyArray; - // deopt - var narr = slice(); - // if not deopt, narr will be instanceof Array - assertTrue(narr instanceof MyArray); -})(); - -// JSCallReducer adds check for UnreliableReceiverMaps -(function() { - const arr = [1,2,3,4,5]; - - function slice() { - return arr.slice(); - } - - slice(); slice(); - arr.foo = 6.2; - - %OptimizeFunctionOnNextCall(slice); - // JSCallReducer will add check for UnreliableReceiverMaps - slice(); - - // Trigger deopt because of DependOnStableMaps - // installed by JSNativeContextSpecialization, - // but not the check installed by ReduceArrayPrototypeSlice itself - arr.bar = 7.2; - - let narr = slice(); - assertEquals(arr, narr); - assertEquals(narr.foo, undefined); - assertEquals(narr.bar, undefined); -})(); - -// Multiple maps -(function() { - const iarr = [1,2,3]; - const darr = [2.1, 3.3, 0.2]; - - function slice(arr) { - return arr.slice(); - } - - slice(iarr); slice(darr); - slice(iarr); slice(darr); - - %OptimizeFunctionOnNextCall(slice); - // The optimization works for both maps - assertEquals(iarr, slice(iarr)); - assertEquals(darr, slice(darr)); - assertOptimized(slice); -})(); - -// Tests for the branch of CanInlineArrayIteratingBuiltin - -// JSCallReducer will not reduce to CloneFastJSArray -// if array's prototype is not JS_ARRAY_TYPE -(function () { - class MyArray extends Array { - constructor() { - super(); - this[6]= 6; - } - } - let array = new MyArray(3, 5, 4); - - function slice() { - return array.slice(); - } - - assertEquals(slice(),array); - slice(); - - %OptimizeFunctionOnNextCall(slice); - let narr = slice(); - // here, slice supposes to call MyArray's constructor. - // If we optimize with CloneFastJSArray, Array's constructor is called instead. - assertEquals(narr[6], 6); - assertTrue(narr instanceof MyArray); -})(); - -// JSCallReducer will not reduce to CloneFastJSArray -// if array's instance type is not JS_ARRAY_TYPE. -// CloneFastJSArray does not work with non JS_ARRAY_TYPE. -// Check : receiver_map->instance_type() == JS_ARRAY_TYPE -(function () { - var x = {"0" : 0, "2": 2} ; - x.__proto__ = Array.prototype; - - function slice() { - return x.slice(); - } - - slice(); slice(); - - %OptimizeFunctionOnNextCall(slice); - assertEquals(slice(), []); -})(); - -// JSCallReducer will not reduce to CloneFastJSArray -// since array is not Fast Elements Kind -// Check : IsFastElementsKind(receiver_map->elements_kind()) -(function () { - var array = [3, 4, 5]; - - function slice() { - return array.slice(); - } - - assertEquals(slice(),array); - slice(); - - // a sparse array switches to Dictionary Elements - array[9999] = 0; - %OptimizeFunctionOnNextCall(slice); - var narr = slice(); - assertEquals(narr, array); -})(); - -(function () { - var array = [3, 4, 5]; - - function slice() { - return array.slice(); - } - - assertEquals(slice(),array); - slice(); - - %OptimizeFunctionOnNextCall(slice); - slice(); - - // a sparse array switches to Dictionary Elements - array[9999] = 0; - // trigger deopt because map changes - assertEquals(slice(),array); -})(); - -// JSCallReducer will not reduce to CloneFastJSArray -// if array is used as a prototype and has unstable map -(function () { - var array = [3, 5, 4]; - - function slice(arr) { - return arr.slice(); - } - - // make array's map is_prototype_map() - var x = {__proto__ : array}; - - assertEquals(slice(array),array); - slice(array); - - // make array's map unstable - array.push(6.3); - slice(array); - - %OptimizeFunctionOnNextCall(slice); - - assertEquals(slice(array),array); -})(); - -// JSCallReducer will not reduce to CloneFastJSArray -// if the Array prototype got some elements. -// Check: isolate->IsNoElementsProtectorIntact() -(function () { - var array = [, 6, 6]; - - function slice() { - return array.slice(); - } - - assertEquals(slice(),array); - slice(); - - array.__proto__.push(6); - - %OptimizeFunctionOnNextCall(slice); - - // if we optimized, we would get [ , 6, 6] - // here, slice copies elements from both the object and the prototype - let narr = slice(); - assertNotEquals(Object.getOwnPropertyDescriptor(narr,0), undefined); - assertEquals(narr, [6, 6, 6]); -})(); - -(function () { - var array = [, 6, 6]; - - function slice() { - return array.slice(); - } - - assertEquals(slice(),array); - slice(); - - %OptimizeFunctionOnNextCall(slice); - slice(); - - // Deopt - array.__proto__.push(6); - let narr = slice(); - assertNotEquals(Object.getOwnPropertyDescriptor(narr, 0), undefined); - assertEquals(narr[0], 6); -})(); - -// JSCallReducer will not reduce to CloneFastJSArray -// if the Array prototype is not original -// Check: isolate->IsAnyInitialArrayPrototype(receiver_prototype) -(function () { - var array = [6, , 6]; - - function slice() { - return array.slice(); - } - - assertEquals(slice(),array); - slice(); - - // change the prototype - array.__proto__ = [ , 6, ]; - - %OptimizeFunctionOnNextCall(slice); - let narr = slice(); - // if optimized, we would get [6, , 6] - assertNotEquals(Object.getOwnPropertyDescriptor(narr, 1), undefined); - assertEquals(narr, [6,6,6]); -})(); - -(function () { - var array = [6, ,6]; - - function slice() { - return array.slice(); - } - - assertEquals(slice(),array); - slice(); - - %OptimizeFunctionOnNextCall(slice); - slice(); - - // change the prototype - array.__proto__ = [,6,]; - // deopt because of map changed - let narr = slice(); - - // if optimized, we would get [6, , 6] - assertNotEquals(Object.getOwnPropertyDescriptor(narr, 1), undefined); - assertEquals(narr, [6,6,6]); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-some.js b/implementation-contributed/v8/mjsunit/compiler/array-some.js deleted file mode 100644 index 411a5881de9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-some.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Basic loop peeling test case with Array.prototype.some(). -(function() { - function foo(a, o) { - return a.some(x => x === o.x); - } - - assertTrue(foo([1, 2, 3], {x:3})); - assertFalse(foo([0, 1, 2], {x:3})); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo([1, 2, 3], {x:3})); - assertFalse(foo([0, 1, 2], {x:3})); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-species.js b/implementation-contributed/v8/mjsunit/compiler/array-species.js deleted file mode 100644 index d1e8a1d1803..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-species.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Foo() {} - -function f() { - return [42].map(_ => 88); -} - -let y; - -y = f(); -assertFalse(y instanceof Foo); -assertInstanceof(y, Array); - -y = f(); -assertFalse(y instanceof Foo); -assertInstanceof(y, Array); - -%OptimizeFunctionOnNextCall(f); - -y = f(); -assertFalse(y instanceof Foo); -assertInstanceof(y, Array); - -assertTrue(Reflect.defineProperty(Array, Symbol.species, {value: Foo})); - -y = f(); -assertInstanceof(y, Foo); -assertFalse(y instanceof Array); diff --git a/implementation-contributed/v8/mjsunit/compiler/array-subclass.js b/implementation-contributed/v8/mjsunit/compiler/array-subclass.js deleted file mode 100644 index d20b6696613..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/array-subclass.js +++ /dev/null @@ -1,396 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test Array subclass default constructor with no parameters. -(function() { - const A = class A extends Array { }; - - function foo() { return new A; } - - assertInstanceof(foo(), A); - assertEquals(0, foo().length); - assertInstanceof(foo(), A); - assertEquals(0, foo().length); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(0, foo().length); -})(); - -// Test Array subclass default constructor with small constant length. -(function() { - const A = class A extends Array { }; - const L = 4; - - function foo() { return new A(L); } - - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(L, foo().length); -})(); - -// Test Array subclass default constructor with large constant length. -(function() { - const A = class A extends Array { }; - const L = 1024 * 1024; - - function foo() { return new A(L); } - - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(L, foo().length); -})(); - -// Test Array subclass default constructor with known boolean. -(function() { - const A = class A extends Array { }; - - function foo() { return new A(true); } - - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals(true, foo()[0]); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals(true, foo()[0]); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals(true, foo()[0]); -})(); - -// Test Array subclass default constructor with known string. -(function() { - const A = class A extends Array { }; - - function foo() { return new A(""); } - - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals("", foo()[0]); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals("", foo()[0]); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals("", foo()[0]); -})(); - -// Test Array subclass default constructor with known object. -(function() { - const A = class A extends Array { }; - const O = {foo: "foo"}; - - function foo() { return new A(O); } - - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertSame(O, foo()[0]); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertSame(O, foo()[0]); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertSame(O, foo()[0]); -})(); - -// Test Array subclass default constructor with known small integers. -(function() { - const A = class A extends Array { }; - - function foo() { return new A(1, 2, 3); } - - assertInstanceof(foo(), A); - assertEquals(3, foo().length); - assertEquals(1, foo()[0]); - assertEquals(2, foo()[1]); - assertEquals(3, foo()[2]); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(3, foo().length); - assertEquals(1, foo()[0]); - assertEquals(2, foo()[1]); - assertEquals(3, foo()[2]); -})(); - -// Test Array subclass default constructor with known numbers. -(function() { - const A = class A extends Array { }; - - function foo() { return new A(1.1, 2.2, 3.3); } - - assertInstanceof(foo(), A); - assertEquals(3, foo().length); - assertEquals(1.1, foo()[0]); - assertEquals(2.2, foo()[1]); - assertEquals(3.3, foo()[2]); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(3, foo().length); - assertEquals(1.1, foo()[0]); - assertEquals(2.2, foo()[1]); - assertEquals(3.3, foo()[2]); -})(); - -// Test Array subclass default constructor with known strings. -(function() { - const A = class A extends Array { }; - - function foo() { return new A("a", "b", "c", "d"); } - - assertInstanceof(foo(), A); - assertEquals(4, foo().length); - assertEquals("a", foo()[0]); - assertEquals("b", foo()[1]); - assertEquals("c", foo()[2]); - assertEquals("d", foo()[3]); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(4, foo().length); - assertEquals("a", foo()[0]); - assertEquals("b", foo()[1]); - assertEquals("c", foo()[2]); - assertEquals("d", foo()[3]); -})(); - -// Test Array subclass constructor with no parameters. -(function() { - const A = class A extends Array { - constructor() { - super(); - this.bar = 1; - } - }; - - function foo() { return new A; } - - assertInstanceof(foo(), A); - assertEquals(0, foo().length); - assertEquals(1, foo().bar); - assertInstanceof(foo(), A); - assertEquals(0, foo().length); - assertEquals(1, foo().bar); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(0, foo().length); - assertEquals(1, foo().bar); -})(); - -// Test Array subclass constructor with small constant length. -(function() { - const A = class A extends Array { - constructor(n) { - super(n); - this.bar = 1; - } - }; - const L = 4; - - function foo() { return new A(L); } - - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - assertEquals(1, foo().bar); - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - assertEquals(1, foo().bar); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - assertEquals(1, foo().bar); -})(); - -// Test Array subclass constructor with large constant length. -(function() { - const A = class A extends Array { - constructor(n) { - super(n); - this.bar = 1; - } - }; - const L = 1024 * 1024; - - function foo() { return new A(L); } - - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - assertEquals(1, foo().bar); - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - assertEquals(1, foo().bar); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(L, foo().length); - assertEquals(1, foo().bar); -})(); - -// Test Array subclass constructor with known boolean. -(function() { - const A = class A extends Array { - constructor(n) { - super(n); - this.bar = 1; - } - }; - - function foo() { return new A(true); } - - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals(true, foo()[0]); - assertEquals(1, foo().bar); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals(true, foo()[0]); - assertEquals(1, foo().bar); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals(true, foo()[0]); - assertEquals(1, foo().bar); -})(); - -// Test Array subclass constructor with known string. -(function() { - const A = class A extends Array { - constructor(n) { - super(n); - this.bar = 1; - } - }; - - function foo() { return new A(""); } - - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals("", foo()[0]); - assertEquals(1, foo().bar); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals("", foo()[0]); - assertEquals(1, foo().bar); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertEquals("", foo()[0]); - assertEquals(1, foo().bar); -})(); - -// Test Array subclass constructor with known object. -(function() { - const A = class A extends Array { - constructor(n) { - super(n); - this.bar = 1; - } - }; - const O = {foo: "foo"}; - - function foo() { return new A(O); } - - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertSame(O, foo()[0]); - assertEquals(1, foo().bar); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertSame(O, foo()[0]); - assertEquals(1, foo().bar); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(1, foo().length); - assertSame(O, foo()[0]); - assertEquals(1, foo().bar); -})(); - -// Test Array subclass constructor with known small integers. -(function() { - const A = class A extends Array { - constructor(x, y, z) { - super(x, y, z); - this.bar = 1; - } - }; - - function foo() { return new A(1, 2, 3); } - - assertInstanceof(foo(), A); - assertEquals(3, foo().length); - assertEquals(1, foo()[0]); - assertEquals(2, foo()[1]); - assertEquals(3, foo()[2]); - assertEquals(1, foo().bar); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(3, foo().length); - assertEquals(1, foo()[0]); - assertEquals(2, foo()[1]); - assertEquals(3, foo()[2]); - assertEquals(1, foo().bar); -})(); - -// Test Array subclass constructor with known numbers. -(function() { - const A = class A extends Array { - constructor(x, y, z) { - super(x, y, z); - this.bar = 1; - } - }; - - function foo() { return new A(1.1, 2.2, 3.3); } - - assertInstanceof(foo(), A); - assertEquals(3, foo().length); - assertEquals(1.1, foo()[0]); - assertEquals(2.2, foo()[1]); - assertEquals(3.3, foo()[2]); - assertEquals(1, foo().bar); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(3, foo().length); - assertEquals(1.1, foo()[0]); - assertEquals(2.2, foo()[1]); - assertEquals(3.3, foo()[2]); - assertEquals(1, foo().bar); -})(); - -// Test Array subclass constructor with known strings. -(function() { - const A = class A extends Array { - constructor(a, b, c, d) { - super(a, b, c, d); - this.bar = 1; - } - }; - - function foo() { return new A("a", "b", "c", "d"); } - - assertInstanceof(foo(), A); - assertEquals(4, foo().length); - assertEquals("a", foo()[0]); - assertEquals("b", foo()[1]); - assertEquals("c", foo()[2]); - assertEquals("d", foo()[3]); - assertEquals(1, foo().bar); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(4, foo().length); - assertEquals("a", foo()[0]); - assertEquals("b", foo()[1]); - assertEquals("c", foo()[2]); - assertEquals("d", foo()[3]); - assertEquals(1, foo().bar); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/assignment-deopt.js b/implementation-contributed/v8/mjsunit/compiler/assignment-deopt.js deleted file mode 100644 index 2b006254171..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/assignment-deopt.js +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test deopt with count operation on parameter. -var max_smi = 1073741823; -var o = {x:0}; - -function assign1(x) { x += 1; o.x = x; } -assign1(max_smi); -assertEquals(max_smi + 1, o.x); - -assign1(1.1); -assertEquals(2.1, o.x); - - -// Test deopt with count operation on named property. -function assign2(p) { p.x += 1 } - -o.x = "42"; -assign2(o); -assertEquals("421", o.x); - -var s = max_smi - 10; -o.x = s; -for(var i = 0; i < 20; i++) { - assign2(o); - if (i == 4) { - %OptimizeFunctionOnNextCall(assign2); - } -} -assertEquals(max_smi + 10, o.x); - - -// Test deopt with count operation on keyed property. -function assign3(a, b) { a[b] += 1; } - -o = ["42"]; -assign3(o, 0); -assertEquals("421", o[0]); - -var s = max_smi - 10; -o[0] = s; -for(var i = 0; i < 20; i++) { - assign3(o, 0); - if (i == 4) { - %OptimizeFunctionOnNextCall(assign3); - } -} -assertEquals(max_smi + 10, o[0]); - -assign3(o, "0"); - -assertEquals(max_smi + 11, o[0]); - -// Test bailout when accessing a non-existing array element. -o[0] = 0; -for(var i = 0; i < 5; i++) { - assign3(o, 0); -} -%OptimizeFunctionOnNextCall(assign3); -assign3(o, 0); -assign3(o, 1); - -// Test bailout with count operation in a value context. -function assign5(x,y) { return (x += 1) + y; } -for (var i = 0; i < 5; ++i) assertEquals(4, assign5(2, 1)); -%OptimizeFunctionOnNextCall(assign5); -assertEquals(4, assign5(2, 1)); - -assertEquals(4.1, assign5(2, 1.1)); -assertEquals(4.1, assign5(2.1, 1)); - -function assign7(o,y) { return (o.x += 1) + y; } -o = {x:0}; -for (var i = 0; i < 5; ++i) { - o.x = 42; - assertEquals(44, assign7(o, 1)); -} -%OptimizeFunctionOnNextCall(assign7); -o.x = 42; -assertEquals(44, assign7(o, 1)); - -o.x = 42; -assertEquals(44.1, assign7(o, 1.1)); -o.x = 42.1; -assertEquals(44.1, assign7(o, 1)); - -function assign9(o,y) { return (o[0] += 1) + y; } -q = [0]; -for (var i = 0; i < 5; ++i) { - q[0] = 42; - assertEquals(44, assign9(q, 1)); -} -%OptimizeFunctionOnNextCall(assign9); -q[0] = 42; -assertEquals(44, assign9(q, 1)); - -q[0] = 42; -assertEquals(44.1, assign9(q, 1.1)); -q[0] = 42.1; -assertEquals(44.1, assign9(q, 1)); - -// Test deopt because of a failed map check on the load. -function assign10(p) { return p.x += 1 } -var g1 = {x:0}; -var g2 = {y:0, x:42}; -for (var i = 0; i < 5; ++i) { - g1.x = 42; - assertEquals(43, assign10(g1)); - assertEquals(43, g1.x); -} -%OptimizeFunctionOnNextCall(assign10); -g1.x = 42; -assertEquals(43, assign10(g1)); -assertEquals(43, g1.x); - -assertEquals(43, assign10(g2)); -assertEquals(43, g2.x); - -// Test deopt because of a failed map check on the store. -// The binary operation changes the map as a side effect. -o = {x:0}; -var g3 = { valueOf: function() { o.y = "bar"; return 42; }}; -function assign11(p) { return p.x += 1; } - -for (var i = 0; i < 5; i++) { - o.x = "a"; - assign11(o); -} -%OptimizeFunctionOnNextCall(assign11); -o.x = "a"; -assign11(o); - -assertEquals("a11", assign11(o)); -o.x = g3; -assertEquals(43, assign11(o)); -assertEquals("bar", o.y); - -o = [0]; -var g4 = { valueOf: function() { o.y = "bar"; return 42; }}; -function assign12(p) { return p[0] += 1; } - -for (var i = 0; i < 5; i++) { - o[0] = "a"; - assign12(o); -} -%OptimizeFunctionOnNextCall(assign12); -o[0] = "a"; -assign12(o); - -assertEquals("a11", assign12(o)); -o[0] = g4; -assertEquals(43, assign12(o)); -assertEquals("bar", o.y); diff --git a/implementation-contributed/v8/mjsunit/compiler/assignment.js b/implementation-contributed/v8/mjsunit/compiler/assignment.js deleted file mode 100644 index 1f3f28221bd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/assignment.js +++ /dev/null @@ -1,283 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests for compound assignments at the top level - -z = 2; -z += 4; - -assertEquals(z, 6); - -a = new Array(10); - -a[2] += 7; -a[2] = 15; -a[2] += 2; - -assertEquals(17, a[2]); - -b = new Object(); -b.foo = 5; -b.foo += 12; - -assertEquals(17, b.foo); - -// Test compound assignments in an anonymous function with local variables. -(function () { - var z = 2; - z += 4; - - assertEquals(z, 6); - - var a = new Array(10); - - a[2] += 7; - a[2] = 15; - a[2] += 2; - - assertEquals(17, a[2]); - - var b = new Object(); - b.foo = 5; - b.foo += 12; - - assertEquals(17, b.foo); -})(); - -// Test compound assignments in an anonymous function with global variables. -(function () { - z = 2; - z += 4; - - assertEquals(z, 6); - - a = new Array(10); - - a[2] += 7; - a[2] = 15; - a[2] += 2; - - assertEquals(17, a[2]); - - b = new Object(); - b.foo = 5; - b.foo += 12; - - assertEquals(17, b.foo); -})(); - -// Test compound assignments in a named function with local variables. -function foo() { - var z = 3; - z += 4; - - assertEquals(z, 7); - - var a = new Array(10); - - a[2] += 7; - a[2] = 15; - a[2] += 2; - - assertEquals(17, a[2]); - - var b = new Object(); - b.foo = 5; - b.foo += 12; - - assertEquals(17, b.foo); -} - -foo(); - -// Test compound assignments in a named function with global variables. -function bar() { - z = 2; - z += 5; - - assertEquals(z, 7); - - a = new Array(10); - - a[2] += 7; - a[2] = 15; - a[2] += 2; - - assertEquals(17, a[2]); - - b = new Object(); - b.foo = 5; - b.foo += 12; - - assertEquals(17, b.foo); -} - -bar(); - -// Entire series of tests repeated, in loops. -// ------------------------------------------- -// Tests for compound assignments in a loop at the top level - -for (i = 0; i < 5; ++i) { - z = 2; - z += 4; - - assertEquals(z, 6); - - a = new Array(10); - - a[2] += 7; - a[2] = 15; - a[2] += 2; - - assertEquals(17, a[2]); - - b = new Object(); - b.foo = 5; - b.foo += 12; - - assertEquals(17, b.foo); -} - -// Test compound assignments in an anonymous function with local variables. -(function () { - for (var i = 0; i < 5; ++i) { - var z = 2; - z += 4; - - assertEquals(z, 6); - - var a = new Array(10); - - a[2] += 7; - a[2] = 15; - a[2] += 2; - - assertEquals(17, a[2]); - - var b = new Object(); - b.foo = 5; - b.foo += 12; - - assertEquals(17, b.foo); - } -})(); - -// Test compound assignments in an anonymous function with global variables. -(function () { - for (i = 0; i < 5; ++i) { - z = 2; - z += 4; - - assertEquals(z, 6); - - a = new Array(10); - - a[2] += 7; - a[2] = 15; - a[2] += 2; - - assertEquals(17, a[2]); - - b = new Object(); - b.foo = 5; - b.foo += 12; - - assertEquals(17, b.foo); - } -})(); - -// Test compound assignments in a named function with local variables. -function foo_loop() { - for (i = 0; i < 5; ++i) { - var z = 3; - z += 4; - - assertEquals(z, 7); - - var a = new Array(10); - - a[2] += 7; - a[2] = 15; - a[2] += 2; - - assertEquals(17, a[2]); - - var b = new Object(); - b.foo = 5; - b.foo += 12; - - assertEquals(17, b.foo); - } -} - -foo_loop(); - -// Test compound assignments in a named function with global variables. -function bar_loop() { - for (i = 0; i < 5; ++i) { - z = 2; - z += 5; - - assertEquals(z, 7); - - a = new Array(10); - - a[2] += 7; - a[2] = 15; - a[2] += 2; - - assertEquals(17, a[2]); - - b = new Object(); - b.foo = 5; - b.foo += 12; - - assertEquals(17, b.foo); - } -} - -bar_loop(); - - -// Test assignment in test context. -function test_assign(x, y) { if (x = y) return x; } - -assertEquals(42, test_assign(0, 42)); - -assertEquals("undefined", typeof test_assign(42, 0)); - -// Test for assignment using a keyed store ic: -function store_i_in_element_i_of_object_i() { - var i = new Object(); - i[i] = i; -} - -// Run three times to exercise caches. -store_i_in_element_i_of_object_i(); -store_i_in_element_i_of_object_i(); -store_i_in_element_i_of_object_i(); diff --git a/implementation-contributed/v8/mjsunit/compiler/binary-ops.js b/implementation-contributed/v8/mjsunit/compiler/binary-ops.js deleted file mode 100644 index 27745c13fba..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/binary-ops.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Values in distinct spans. -function or_test0(x, y) { return x | y; } -function and_test0(x, y) { return x & y; } -function add_test0(x, y) { return x + y; } - -assertEquals(3, or_test0(1, 2)); // 1 | 2 -assertEquals(2, and_test0(3, 6)); // 3 & 6 -assertEquals(5, add_test0(2, 3)); // 2 + 3 - - -// Values in the same span. -function or_test1(x, y) { return x | x; } -function and_test1(x, y) { return x & x; } -function add_test1(x, y) { return x + x; } - -assertEquals(1, or_test1(1, 2)); // 1 | 1 -assertEquals(3, and_test1(3, 6)); // 3 & 3 -assertEquals(4, add_test1(2, 3)); // 2 + 2 - - -// Values in distinct spans that alias. -function or_test2(x, y) { x = y; return x | y; } -function and_test2(x, y) { x = y; return x & y; } -function add_test2(x, y) { x = y; return x + y; } - -assertEquals(2, or_test2(1, 2)); // 2 | 2 -assertEquals(6, and_test2(3, 6)); // 6 & 6 -assertEquals(6, add_test2(2, 3)); // 3 + 3 diff --git a/implementation-contributed/v8/mjsunit/compiler/boolean-protototype.js b/implementation-contributed/v8/mjsunit/compiler/boolean-protototype.js deleted file mode 100644 index 5e940d75aed..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/boolean-protototype.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test1(s) { - return s.toString; -} -assertSame(test1(false), Boolean.prototype.toString); -assertSame(test1(true), Boolean.prototype.toString); -%OptimizeFunctionOnNextCall(test1); -assertSame(test1(false), Boolean.prototype.toString); -assertSame(test1(true), Boolean.prototype.toString); - -function test2(s) { - return s.valueOf; -} -assertSame(test2(false), Boolean.prototype.valueOf); -assertSame(test2(true), Boolean.prototype.valueOf); -%OptimizeFunctionOnNextCall(test2); -assertSame(test2(false), Boolean.prototype.valueOf); -assertSame(test2(true), Boolean.prototype.valueOf); - -Boolean.prototype.foo = 42; -function test3(s) { - return s["foo"]; -} -assertEquals(test3(false), 42); -assertEquals(test3(true), 42); -%OptimizeFunctionOnNextCall(test3); -assertEquals(test3(false), 42); -assertEquals(test3(true), 42); - -Boolean.prototype.bar = function bar() { "use strict"; return this; } -function test4(s) { - return s.bar(); -} -assertEquals(test4(false), false); -assertEquals(test4(true), true); -%OptimizeFunctionOnNextCall(test4); -assertEquals(test4(false), false); -assertEquals(test4(true), true); diff --git a/implementation-contributed/v8/mjsunit/compiler/call-keyed.js b/implementation-contributed/v8/mjsunit/compiler/call-keyed.js deleted file mode 100644 index d44221286c1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/call-keyed.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -A = {} -A.i = []; -A.i.push(function () { }); -A.i.push(function () { }); - -function f (event) { - for(var i = 0, j = A.i.length; i < j; ++i) - A.i[i](); -} - -f(null); diff --git a/implementation-contributed/v8/mjsunit/compiler/capture-context.js b/implementation-contributed/v8/mjsunit/compiler/capture-context.js deleted file mode 100644 index dae6c42f32e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/capture-context.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var foo = (function() { - var x = 42; - function bar(s) { return x + s; } - return (function (s) { return bar(s); }) -})(); - -var baz = (function (s) { return foo(s) }); - -%OptimizeFunctionOnNextCall(baz); -assertEquals(42 + 12, baz(12)); diff --git a/implementation-contributed/v8/mjsunit/compiler/compare-map-elim.js b/implementation-contributed/v8/mjsunit/compiler/compare-map-elim.js deleted file mode 100644 index 288d4811a68..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/compare-map-elim.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --check-elimination - -a = { - f: function() { this.y = 3; } -}; -b = { - f: function() { this.y = 4; } -}; - -function x(z) { - return z.f(); -} - -x(a); -x(b); -x(a); -x(b); -x(a); -x(b); - -%OptimizeFunctionOnNextCall(x) - -x(a); -x(b); diff --git a/implementation-contributed/v8/mjsunit/compiler/compare-map-elim2.js b/implementation-contributed/v8/mjsunit/compiler/compare-map-elim2.js deleted file mode 100644 index 0c0540ccab3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/compare-map-elim2.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --check-elimination - - -function test_empty() { - function foo(o) { - return { value: o.value }; - } - - function Base() { - this.v_ = 5; - } - Base.prototype.__defineGetter__("value", function() { return 1; }); - - var a = new Base(); - a.a = 1; - foo(a); - - Base.prototype.__defineGetter__("value", function() { return this.v_; }); - - var b = new Base(); - b.b = 1; - foo(b); - - var d = new Base(); - d.d = 1; - d.value; - - %OptimizeFunctionOnNextCall(foo); - - var o = foo(b); -} - - -function test_narrow1() { - function foo(o) { - return { value: o.value }; - } - - function Base() { - this.v_ = 5; - } - Base.prototype.__defineGetter__("value", function() { return 1; }); - - var a = new Base(); - a.a = 1; - foo(a); - - Base.prototype.__defineGetter__("value", function() { return this.v_; }); - - var b = new Base(); - b.b = 1; - foo(b); - - var c = new Base(); - c.c = 1; - foo(c); - - var d = new Base(); - d.d = 1; - d.value; - - %OptimizeFunctionOnNextCall(foo); - - var o = foo(b); -} - - -function test_narrow2() { - function foo(o, flag) { - return { value: o.value(flag) }; - } - - function Base() { - this.v_ = 5; - } - Base.prototype.value = function(flag) { return flag ? this.v_ : this.v_; }; - - - var a = new Base(); - a.a = 1; - foo(a, false); - foo(a, false); - - var b = new Base(); - b.b = 1; - foo(b, true); - - var c = new Base(); - c.c = 1; - foo(c, true); - - var d = new Base(); - d.d = 1; - d.value(true); - - %OptimizeFunctionOnNextCall(foo); - - var o = foo(b); -} - -test_empty(); -test_narrow1(); -test_narrow2(); diff --git a/implementation-contributed/v8/mjsunit/compiler/compare-objeq-elim.js b/implementation-contributed/v8/mjsunit/compiler/compare-objeq-elim.js deleted file mode 100644 index 4492df45c32..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/compare-objeq-elim.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --check-elimination - -function A(x, y) { - this.x = x; - this.y = y; -} - -function B(x, y) { - this.x = x; - this.y = y; -} - -function F1(a, b) { - if (a == b) return a.x; - else return b.x; -} - -function F2(a, b) { - if (a == b) return a.x; - else return b.x; -} - -function F3(a, b) { - var f = a.y; - if (a == b) return a.x; - else return b.x; -} - -function F4(a, b) { - var f = b.y; - if (a == b) return a.x; - else return b.x; -} - -%NeverOptimizeFunction(test); - -function test(f, a, b) { - f(a, a); - f(a, b); - f(b, a); - f(b, c); - f(b, b); - f(c, c); - - %OptimizeFunctionOnNextCall(f) - - assertEquals(a.x, f(a, a)); - assertEquals(b.x, f(b, b)); -} - -var a = new A(3, 5); -var b = new B(2, 6); -var c = new A(1, 7); - -test(F1, a, c); -test(F2, a, b); -test(F3, a, b); -test(F4, a, b); diff --git a/implementation-contributed/v8/mjsunit/compiler/compare.js b/implementation-contributed/v8/mjsunit/compiler/compare.js deleted file mode 100644 index 460b0ab003c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/compare.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function MaxLT(x, y) { - if (x < y) return y; - return x; -} - -function MaxLE(x, y) { - if (x <= y) return y; - return x; -} - -function MaxGE(x, y) { - if (x >= y) return x; - return y; -} - -function MaxGT(x, y) { - if (x > y) return x; - return y; -} - - -// First test primitive values. -function TestPrimitive(max, x, y) { - assertEquals(max, MaxLT(x, y), "MaxLT - primitive"); - assertEquals(max, MaxLE(x, y), "MaxLE - primitive"); - assertEquals(max, MaxGE(x, y), "MaxGE - primitive"); - assertEquals(max, MaxGT(x, y), "MaxGT - primitive"); -} - -TestPrimitive(1, 0, 1); -TestPrimitive(1, 1, 0); -TestPrimitive(4, 3, 4); -TestPrimitive(4, 4, 3); -TestPrimitive(0, -1, 0); -TestPrimitive(0, 0, -1) -TestPrimitive(-2, -2, -3); -TestPrimitive(-2, -3, -2); - -TestPrimitive(1, 0.1, 1); -TestPrimitive(1, 1, 0.1); -TestPrimitive(4, 3.1, 4); -TestPrimitive(4, 4, 3.1); -TestPrimitive(0, -1.1, 0); -TestPrimitive(0, 0, -1.1) -TestPrimitive(-2, -2, -3.1); -TestPrimitive(-2, -3.1, -2); - - -// Test non-primitive values and watch for valueOf call order. -function TestNonPrimitive(order, f) { - var result = ""; - var x = { valueOf: function() { result += "x"; } }; - var y = { valueOf: function() { result += "y"; } }; - f(x, y); - assertEquals(order, result); -} - -TestNonPrimitive("xy", MaxLT); -TestNonPrimitive("xy", MaxLE); -TestNonPrimitive("xy", MaxGE); -TestNonPrimitive("xy", MaxGT); - -// Test compare in case of aliased registers. -function CmpX(x) { if (x == x) return 42; } -assertEquals(42, CmpX(0)); - -function CmpXY(x) { var y = x; if (x == y) return 42; } -assertEquals(42, CmpXY(0)); - - -// Test compare against null. -function CmpNullValue(x) { return x == null; } -assertEquals(false, CmpNullValue(42)); - -function CmpNullTest(x) { if (x == null) return 42; return 0; } -assertEquals(42, CmpNullTest(null)); - -var g1 = 0; -function CmpNullEffect() { (g1 = 42) == null; } -CmpNullEffect(); -assertEquals(42, g1); diff --git a/implementation-contributed/v8/mjsunit/compiler/complex-for-in.js b/implementation-contributed/v8/mjsunit/compiler/complex-for-in.js deleted file mode 100644 index 883f20a9ed1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/complex-for-in.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function TestNamed(m) { - var o = {}; - var result = []; - for (o.p in m) result.push(o.p); - return result; -} - -assertArrayEquals(['x','y'], TestNamed({x:0, y:1})); -assertArrayEquals(['0','1'], TestNamed([1,2])); - - -function TestKeyed(m) { - var a = []; - var result = []; - var i = 0; - for (a[i++] in m) result.push(a[i - 1]); - assertEquals(i, a.length); - return result; -} - - -assertArrayEquals(['x','y'], TestKeyed({x:0, y:1})); -assertArrayEquals(['0','1'], TestKeyed([1,2])); diff --git a/implementation-contributed/v8/mjsunit/compiler/concurrent-invalidate-transition-map.js b/implementation-contributed/v8/mjsunit/compiler/concurrent-invalidate-transition-map.js deleted file mode 100644 index 5d3c73b4e6b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/concurrent-invalidate-transition-map.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --track-fields --track-double-fields --allow-natives-syntax -// Flags: --concurrent-recompilation --block-concurrent-recompilation -// Flags: --no-always-opt - -if (!%IsConcurrentRecompilationSupported()) { - print("Concurrent recompilation is disabled. Skipping this test."); - quit(); -} - -function new_object() { - var o = {}; - o.a = 1; - o.b = 2; - return o; -} - -function add_field(obj) { - // Assign twice to make the field non-constant. - // TODO(ishell): update test once constant field tracking is done. - obj.c = 0; - obj.c = 3; -} -var obj1 = new_object(); -var obj2 = new_object(); -add_field(obj1); -add_field(obj2); -%OptimizeFunctionOnNextCall(add_field, "concurrent"); - -var o = new_object(); -// Kick off recompilation. -add_field(o); -// Invalidate transition map after compile graph has been created. -o.c = 2.2; -// In the mean time, concurrent recompiling is still blocked. -assertUnoptimized(add_field, "no sync"); -// Let concurrent recompilation proceed. -%UnblockConcurrentRecompilation(); -// Sync with background thread to conclude optimization that bailed out. -assertUnoptimized(add_field, "sync"); -// Clear type info for stress runs. -%ClearFunctionFeedback(add_field); diff --git a/implementation-contributed/v8/mjsunit/compiler/concurrent-proto-change.js b/implementation-contributed/v8/mjsunit/compiler/concurrent-proto-change.js deleted file mode 100644 index 0a016ac3cab..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/concurrent-proto-change.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --no-always-opt -// Flags: --concurrent-recompilation --block-concurrent-recompilation -// Flags: --no-always-opt - -if (!%IsConcurrentRecompilationSupported()) { - print("Concurrent recompilation is disabled. Skipping this test."); - quit(); -} - -function f(foo) { return foo.bar(); } - -var o = {}; -o.__proto__ = { __proto__: { bar: function() { return 1; } } }; - -assertEquals(1, f(o)); -assertEquals(1, f(o)); - -// Mark for concurrent optimization. -%OptimizeFunctionOnNextCall(f, "concurrent"); -// Kick off recompilation. -assertEquals(1, f(o)); -// Change the prototype chain after compile graph has been created. -o.__proto__.__proto__ = { bar: function() { return 2; } }; -// At this point, concurrent recompilation thread has not yet done its job. -assertUnoptimized(f, "no sync"); -// Let the background thread proceed. -%UnblockConcurrentRecompilation(); -// Optimization eventually bails out due to map dependency. -assertUnoptimized(f, "sync"); -assertEquals(2, f(o)); -//Clear type info for stress runs. -%ClearFunctionFeedback(f); diff --git a/implementation-contributed/v8/mjsunit/compiler/constant-fold-cow-array.js b/implementation-contributed/v8/mjsunit/compiler/constant-fold-cow-array.js deleted file mode 100644 index 1ab022611cd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/constant-fold-cow-array.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt --opt - -// Check that we properly deoptimize TurboFan'ed code when we constant-fold -// elements from a COW array and we change the length of the array. -(function() { - const a = [1, 2, 3]; - const foo = () => a[0]; - assertEquals(1, foo()); - assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo()); - assertOptimized(foo); - a.length = 1; - assertEquals(1, foo()); - assertUnoptimized(foo); -})(); - -// Check that we properly deoptimize TurboFan'ed code when we constant-fold -// elements from a COW array and we change the element of the array. -(function() { - const a = [1, 2, 3]; - const foo = () => a[0]; - assertEquals(1, foo()); - assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo()); - assertOptimized(foo); - a[0] = 42; - assertEquals(42, foo()); - assertUnoptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/constant-fold-tostring.js b/implementation-contributed/v8/mjsunit/compiler/constant-fold-tostring.js deleted file mode 100644 index e9c6d916cec..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/constant-fold-tostring.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt --opt - -// Check that constant-folding of ToString operations works properly for NaN. -(function() { - const foo = () => `${NaN}`; - assertEquals("NaN", foo()); - assertEquals("NaN", foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals("NaN", foo()); -})(); - -// Check that constant-folding of ToString operations works properly for 0/-0. -(function() { - const foo = x => `${x ? 0 : -0}`; - assertEquals("0", foo(true)); - assertEquals("0", foo(false)); - assertEquals("0", foo(true)); - assertEquals("0", foo(false)); - %OptimizeFunctionOnNextCall(foo); - assertEquals("0", foo(true)); - assertEquals("0", foo(false)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/constructor-inlining.js b/implementation-contributed/v8/mjsunit/compiler/constructor-inlining.js deleted file mode 100644 index 05b5762a53f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/constructor-inlining.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stress-inline - -var counter = 0; -var deopt_at = -1; - -class Base { - constructor(use, x){ - if (deopt_at-- == 0) { - %_DeoptimizeNow(); - %DeoptimizeFunction(testConstructorInlining); - } - counter++; - this.x = x; - if (use) { - return x; - } - } -} - -class Derived extends Base { - constructor(use, x, y, deopt = false) { - super(use, x); - counter++; - if (deopt_at-- == 0) %_DeoptimizeNow(); - this.y = y; - if (use) { - return y; - } - } -} - -var DerivedDeoptCreate = new Proxy(Derived, { - get: function(target, name) { - if (name=='prototype') { - counter++; - if (deopt_at-- == 0) %DeoptimizeFunction(Derived); - } - return target[name]; - } -}); - -function Constr(use, x){ - counter++; - if (deopt_at-- == 0) %_DeoptimizeNow(); - this.x = x; - if (use) { - return x; - } -} - - -var a = {}; -var b = {}; - -function testConstructorInlining(){ - assertEquals(a, new Constr(true, a)); - assertEquals(7, new Constr(false, 7).x); - assertEquals(5, new Constr(true, 5).x); - - assertEquals(a, new Base(true, a)); - assertEquals(7, new Base(false, 7).x); - assertEquals(5, new Base(true, 5).x); - - assertEquals(b, new Derived(true, a, b)); - assertEquals(a, new Derived(true, a, undefined)); - assertEquals(5, new Derived(false, 5, 7).x); - assertEquals(7, new Derived(false, 5, 7).y); - try { - new Derived(true, a, 7) - assertTrue(false); - } catch (e) { - if (!(e instanceof TypeError)) throw e; - } - assertEquals(a, new Derived(true, 5, a)); - - %OptimizeFunctionOnNextCall(Derived); - assertEquals(b, new DerivedDeoptCreate(true, a, b)); - %OptimizeFunctionOnNextCall(Derived); - assertEquals(a, new DerivedDeoptCreate(true, a, undefined)); - %OptimizeFunctionOnNextCall(Derived); - assertEquals(5, new DerivedDeoptCreate(false, 5, 7).x); - %OptimizeFunctionOnNextCall(Derived); - assertEquals(7, new DerivedDeoptCreate(false, 5, 7).y); -} - -testConstructorInlining(); -%OptimizeFunctionOnNextCall(testConstructorInlining); -testConstructorInlining(); - -var last = undefined; -for(var i = 0; deopt_at < 0; ++i) { - deopt_at = i; - counter = 0; - %OptimizeFunctionOnNextCall(testConstructorInlining); - testConstructorInlining(); - if (last !== undefined) { - assertEquals(counter, last) - } - last = counter; -} diff --git a/implementation-contributed/v8/mjsunit/compiler/context-sensitivity.js b/implementation-contributed/v8/mjsunit/compiler/context-sensitivity.js deleted file mode 100644 index 1f0f1f274ae..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/context-sensitivity.js +++ /dev/null @@ -1,550 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const object1 = {[Symbol.toPrimitive]() { return 1; }}; -const thrower = {[Symbol.toPrimitive]() { throw new Error(); }}; - -// Test that JSAdd is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y + x); - } - - assertEquals(1, foo(0)); - assertEquals(2, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(0)); - assertEquals(2, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSSubtract is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y - x); - } - - assertEquals(1, foo(0)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(0)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSMultiply is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y * x); - } - - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSDivide is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y / x); - } - - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSModulus is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y % x); - } - - assertEquals(0, foo(1)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(1)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSExponentiate is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y ** x); - } - - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSBitwiseOr is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y | x); - } - - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSBitwiseAnd is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y & x); - } - - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1)); - assertEquals(1, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSBitwiseXor is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y ^ x); - } - - assertEquals(0, foo(1)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(1)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSShiftLeft is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y << x); - } - - assertEquals(2, foo(1)); - assertEquals(2, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(1)); - assertEquals(2, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSShiftRight is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y >> x); - } - - assertEquals(0, foo(1)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(1)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSShiftRightLogical is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y >>> x); - } - - assertEquals(0, foo(1)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(1)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSEqual is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y == x); - } - - assertFalse(foo(0)); - assertTrue(foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(0)); - assertTrue(foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSLessThan is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y < x); - } - - assertFalse(foo(0)); - assertFalse(foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(0)); - assertFalse(foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSGreaterThan is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => x > y); - } - - assertFalse(foo(0)); - assertFalse(foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(0)); - assertFalse(foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSLessThanOrEqual is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => y <= x); - } - - assertFalse(foo(0)); - assertTrue(foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(0)); - assertTrue(foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSGreaterThanOrEqual is not context-sensitive. -(function() { - function bar(fn) { - return fn(1); - } - - function foo(x) { - return bar(y => x >= y); - } - - assertFalse(foo(0)); - assertTrue(foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(0)); - assertTrue(foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSInstanceOf is not context-sensitive. -(function() { - function bar(fn) { - return fn({}); - } - - function foo(c) { - return bar(o => o instanceof c); - } - - assertTrue(foo(Object)); - assertFalse(foo(Array)); - assertThrows(() => foo({[Symbol.hasInstance]() { throw new Error(); }})); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(Object)); - assertFalse(foo(Array)); - assertThrows(() => foo({[Symbol.hasInstance]() { throw new Error(); }})); -})(); - -// Test that JSBitwiseNot is not context-sensitive. -(function() { - function bar(fn) { - return fn(); - } - - function foo(x) { - return bar(() => ~x); - } - - assertEquals(0, foo(-1)); - assertEquals(~1, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(-1)); - assertEquals(~1, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSNegate is not context-sensitive. -(function() { - function bar(fn) { - return fn(); - } - - function foo(x) { - return bar(() => -x); - } - - assertEquals(1, foo(-1)); - assertEquals(-1, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(-1)); - assertEquals(-1, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSIncrement is not context-sensitive. -(function() { - function bar(fn) { - return fn(); - } - - function foo(x) { - return bar(() => ++x); - } - - assertEquals(1, foo(0)); - assertEquals(2, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(0)); - assertEquals(2, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSDecrement is not context-sensitive. -(function() { - function bar(fn) { - return fn(); - } - - function foo(x) { - return bar(() => --x); - } - - assertEquals(1, foo(2)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(2)); - assertEquals(0, foo(object1)); - assertThrows(() => foo(thrower)); -})(); - -// Test that JSCreateArguments[UnmappedArguments] is not context-sensitive. -(function() { - function bar(fn) { - return fn(); - } - - function foo() { - "use strict"; - return bar(() => arguments)[0]; - } - - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 2)); - assertEquals(undefined, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 2)); - assertEquals(undefined, foo()); -})(); - -// Test that JSCreateArguments[RestParameters] is not context-sensitive. -(function() { - function bar(fn) { - return fn(); - } - - function foo(...args) { - return bar(() => args)[0]; - } - - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 2)); - assertEquals(undefined, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 2)); - assertEquals(undefined, foo()); -})(); - -// Test that JSLoadGlobal/JSStoreGlobal are not context-sensitive. -(function(global) { - var actualValue = 'Some value'; - - Object.defineProperty(global, 'globalValue', { - configurable: true, - enumerable: true, - get: function() { - return actualValue; - }, - set: function(v) { - actualValue = v; - } - }); - - function bar(fn) { - return fn(); - } - - function foo(v) { - return bar(() => { - const o = globalValue; - globalValue = v; - return o; - }); - } - - assertEquals('Some value', foo('Another value')); - assertEquals('Another value', actualValue); - assertEquals('Another value', foo('Some value')); - assertEquals('Some value', actualValue); - %OptimizeFunctionOnNextCall(foo); - assertEquals('Some value', foo('Another value')); - assertEquals('Another value', actualValue); - assertEquals('Another value', foo('Some value')); - assertEquals('Some value', actualValue); -})(this); - -// Test that for..in is not context-sensitive. -(function() { - function bar(fn) { - return fn(); - } - - function foo(o) { - return bar(() => { - var s = ""; - for (var k in o) { s += k; } - return s; - }); - } - - assertEquals('abc', foo({a: 1, b: 2, c: 3})); - assertEquals('ab', foo(Object.create({a: 1, b: 2}))); - %OptimizeFunctionOnNextCall(foo); - assertEquals('abc', foo({a: 1, b: 2, c: 3})); - assertEquals("ab", foo(Object.create({a:1, b:2}))); -})(); - -// Test that most generator operations are not context-sensitive. -(function() { - function bar(fn) { - let s = undefined; - for (const x of fn()) { - if (s === undefined) s = x; - else s += x; - } - return s; - } - - function foo(x, y, z) { - return bar(function*() { - yield x; - yield y; - yield z; - }); - } - - assertEquals(6, foo(1, 2, 3)); - assertEquals("abc", foo("a", "b", "c")); - %OptimizeFunctionOnNextCall(foo); - assertEquals(6, foo(1, 2, 3)); - assertEquals("abc", foo("a", "b", "c")); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/control-flow-0.js b/implementation-contributed/v8/mjsunit/compiler/control-flow-0.js deleted file mode 100644 index bcf4f2dc998..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/control-flow-0.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - return (42 + (0 == 1 ? 1 : 2)); -} - - -function g(x) { - return (x + (0 == 1 ? 1 : 2)); -} - - -function h(x) { - return ((x + 1) + (0 == 1 ? 1 : 2)); -} - -assertEquals(44, f()); -assertEquals(45, g(43)); -assertEquals(47, h(44)); diff --git a/implementation-contributed/v8/mjsunit/compiler/control-flow-1.js b/implementation-contributed/v8/mjsunit/compiler/control-flow-1.js deleted file mode 100644 index ca7ad878501..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/control-flow-1.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var global = this; - -function f0(x) { - assertTrue(this === global); - return x; -} - -function g0(x, y) { - return f0(x == y); -} - -assertTrue(g0(0, 0)); -assertFalse(g0(0, 1)); - - -var o = {}; -o.f1 = f1; -function f1(x) { - assertTrue(this === o); - return x; -} - -function g1(x, y) { - return o.f1(x == y); -} - -assertTrue(g1(0, 0)); -assertFalse(g1(0, 1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/control-flow-2.js b/implementation-contributed/v8/mjsunit/compiler/control-flow-2.js deleted file mode 100644 index 26ed5643f48..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/control-flow-2.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f(a,b) { - return (b < a) - (a < b); -} - -assertEquals(0, f(0,0)); -assertEquals(1, f(1,0)); -assertEquals(-1, f(0,1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/count-deopt.js b/implementation-contributed/v8/mjsunit/compiler/count-deopt.js deleted file mode 100644 index 415dadc0cf4..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/count-deopt.js +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test deopt with count operation on parameter. -var max_smi = 1073741823; -var o = {x:0}; - -function inc1(x) { x++; o.x = x; } -inc1(max_smi); -assertEquals(max_smi + 1, o.x); - -inc1(1.1); -assertEquals(2.1, o.x); - - -// Test deopt with count operation on named property. -function inc2(p) { p.x++ } - -o.x = "42"; -inc2(o); -assertEquals(43, o.x); - -var s = max_smi - 10; -o.x = s; -for(var i = 0; i < 20; i++) { - inc2(o); - if (i == 4) { - %OptimizeFunctionOnNextCall(inc2); - } -} -assertEquals(max_smi + 10, o.x); - - -// Test deopt with count operation on keyed property. -function inc3(a, b) { a[b]++; } - -o = ["42"]; -inc3(o, 0); -assertEquals(43, o[0]); - -var s = max_smi - 10; -o[0] = s; -for(var i = 0; i < 20; i++) { - inc3(o, 0); - if (i == 4) { - %OptimizeFunctionOnNextCall(inc3); - } -} -assertEquals(max_smi + 10, o[0]); - -inc3(o,"0"); - -assertEquals(max_smi + 11, o[0]); - -// Test bailout when accessing a non-existing array element. -o[0] = 0; -for(var i = 0; i < 5; i++) { - inc3(o, 0); -} -%OptimizeFunctionOnNextCall(inc3); -inc3(o, 0); -inc3(o, 1); - -// Test bailout with count operation in a value context. -function inc4(x,y) { return (x++) + y; } -for (var i = 0; i < 5; ++i) assertEquals(3, inc4(2, 1)); -%OptimizeFunctionOnNextCall(inc4); -inc4(2, 1); -assertEquals(3.1, inc4(2, 1.1)); - -function inc5(x,y) { return (++x) + y; } -for (var i = 0; i < 5; ++i) assertEquals(4, inc5(2, 1)); -%OptimizeFunctionOnNextCall(inc5); -assertEquals(4, inc5(2, 1)); -assertEquals(4.1, inc5(2, 1.1)); -assertEquals(4.1, inc5(2.1, 1)); - -function inc6(o,y) { return (o.x++) + y; } -o = {x:0}; -for (var i = 0; i < 5; ++i) { - o.x = 42; - assertEquals(43, inc6(o, 1)); -} -%OptimizeFunctionOnNextCall(inc6); -o.x = 42; -assertEquals(43, inc6(o, 1)); -o.x = 42; -assertEquals(43.1, inc6(o, 1.1)); -o.x = 42.1; -assertEquals(43.1, inc6(o, 1)); - -function inc7(o,y) { return (++o.x) + y; } -o = {x:0}; -for (var i = 0; i < 5; ++i) { - o.x = 42; - assertEquals(44, inc7(o, 1)); -} -%OptimizeFunctionOnNextCall(inc7); -o.x = 42; -assertEquals(44, inc7(o, 1)); -o.x = 42; -assertEquals(44.1, inc7(o, 1.1)); -o.x = 42.1; -assertEquals(44.1, inc7(o, 1)); - -function inc8(o,y) { return (o[0]++) + y; } -var q = [0]; -for (var i = 0; i < 5; ++i) { - q[0] = 42; - assertEquals(43, inc8(q, 1)); -} -%OptimizeFunctionOnNextCall(inc8); -q[0] = 42; -assertEquals(43, inc8(q, 1)); -q[0] = 42; -assertEquals(43.1, inc8(q, 1.1)); -q[0] = 42.1; -assertEquals(43.1, inc8(q, 1)); - -function inc9(o,y) { return (++o[0]) + y; } -q = [0]; -for (var i = 0; i < 5; ++i) { - q[0] = 42; - assertEquals(44, inc9(q, 1)); -} -%OptimizeFunctionOnNextCall(inc9); -q[0] = 42; -assertEquals(44, inc9(q, 1)); -q[0] = 42; -assertEquals(44.1, inc9(q, 1.1)); -q[0] = 42.1; -assertEquals(44.1, inc9(q, 1)); - -// Test deopt because of a failed map check. -function inc10(p) { return p.x++ } -var g1 = {x:0}; -var g2 = {y:0, x:42} -for (var i = 0; i < 5; ++i) { - g1.x = 42; - assertEquals(42, inc10(g1)); - assertEquals(43, g1.x); -} -%OptimizeFunctionOnNextCall(inc10); -g1.x = 42; -assertEquals(42, inc10(g1)); -assertEquals(43, g1.x); -assertEquals(42, inc10(g2)); -assertEquals(43, g2.x); - -// Test deoptimization with postfix operation in a value context. -function inc11(a) { return a[this.x++]; } -var g3 = {x:null, f:inc11}; -var g4 = [42]; -assertEquals(42, g3.f(g4)); diff --git a/implementation-contributed/v8/mjsunit/compiler/countoperation.js b/implementation-contributed/v8/mjsunit/compiler/countoperation.js deleted file mode 100644 index dca4c11cf4f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/countoperation.js +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test pre- and postfix count operations. - -// Test value context. -var a = 42; -var b = {x:42}; -var c = "x"; -assertEquals(43, ++a); -assertEquals(43, a); -assertEquals(43, a++); -assertEquals(44, a); -assertEquals(43, ++b.x); -assertEquals(43, b.x); -assertEquals(43, b.x++); -assertEquals(44, b.x); -assertEquals(45, ++b[c]); -assertEquals(45, b[c]); -assertEquals(45, b[c]++); -assertEquals(46, b[c]); - -// Test effect context. -a = 42; -b = {x:42}; -c = "x"; -assertEquals(1, eval("++a; 1")); -assertEquals(43, a); -assertEquals(1, eval("a++; 1")); -assertEquals(44, a); -assertEquals(1, eval("++b.x; 1")); -assertEquals(43, b.x); -assertEquals(1, eval("b.x++; 1")); -assertEquals(44, b.x); -assertEquals(1, eval("++b[c]; 1")); -assertEquals(45, b[c]); -assertEquals(1, eval("b[c]++; 1")); -assertEquals(46, b[c]); - -// Test test context. -a = 42; -b = {x:42}; -c = "x"; -assertEquals(1, (++a) ? 1 : 0); -assertEquals(43, a); -assertEquals(1, (a++) ? 1 : 0); -assertEquals(44, a); -assertEquals(1, (++b.x) ? 1 : 0); -assertEquals(43, b.x); -assertEquals(1, (b.x++) ? 1 : 0); -assertEquals(44, b.x); -assertEquals(1, (++b[c]) ? 1 : 0); -assertEquals(45, b[c]); -assertEquals(1, (b[c]++) ? 1 : 0); -assertEquals(46, b[c]); - -// Test value/test and test/value contexts. -a = 42; -b = {x:42}; -c = "x"; -assertEquals(43, ++a || 1); -assertEquals(43, a); -assertEquals(43, a++ || 1); -assertEquals(44, a); -assertEquals(43, ++b.x || 1); -assertEquals(43, b.x); -assertEquals(43, (b.x++) || 1); -assertEquals(44, b.x); -assertEquals(45, ++b[c] || 1); -assertEquals(45, b[c]); -assertEquals(45, b[c]++ || 1); -assertEquals(46, b[c]); -a = 42; -b = {x:42}; -c = "x"; -assertEquals(1, ++a && 1); -assertEquals(43, a); -assertEquals(1, a++ && 1); -assertEquals(44, a); -assertEquals(1, ++b.x && 1); -assertEquals(43, b.x); -assertEquals(1, (b.x++) && 1); -assertEquals(44, b.x); -assertEquals(1, ++b[c] && 1); -assertEquals(45, b[c]); -assertEquals(1, b[c]++ && 1); -assertEquals(46, b[c]); - -// Test count operations with parameters. -function f(x) { x++; return x; } -assertEquals(43, f(42)); - -function g(x) { ++x; return x; } -assertEquals(43, g(42)); - -function h(x) { var y = x++; return y; } -assertEquals(42, h(42)); - -function k(x) { var y = ++x; return y; } -assertEquals(43, k(42)); - -// Test count operation in a test context. -function countTestPost(i) { var k = 0; while (i--) { k++; } return k; } -assertEquals(10, countTestPost(10)); - -function countTestPre(i) { var k = 0; while (--i) { k++; } return k; } -assertEquals(9, countTestPre(10)); diff --git a/implementation-contributed/v8/mjsunit/compiler/dataview-constant.js b/implementation-contributed/v8/mjsunit/compiler/dataview-constant.js deleted file mode 100644 index f5f0b5e9558..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dataview-constant.js +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test DataView.prototype.getInt8()/setInt8() for constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setInt8(0, 42); - dv.setInt8(1, 24); - - function foo(i) { - const x = dv.getInt8(i); - dv.setInt8(i, x+1); - return x; - } - - assertEquals(42, foo(0)); - assertEquals(24, foo(1)); - assertEquals(43, foo(0)); - assertEquals(25, foo(1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(0)); - assertEquals(26, foo(1)); -})(); - -// Test DataView.prototype.getUint8()/setUint8() for constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setUint8(0, 42); - dv.setUint8(1, 24); - - function foo(i) { - const x = dv.getUint8(i); - dv.setUint8(i, x+1); - return x; - } - - assertEquals(42, foo(0)); - assertEquals(24, foo(1)); - assertEquals(43, foo(0)); - assertEquals(25, foo(1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(0)); - assertEquals(26, foo(1)); -})(); - -// Test DataView.prototype.getInt16()/setInt16() for constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setInt16(0, 42, true); - dv.setInt16(2, 24, true); - - function foo(i) { - const x = dv.getInt16(i, true); - dv.setInt16(i, x+1, true); - return x; - } - - assertEquals(42, foo(0)); - assertEquals(24, foo(2)); - assertEquals(43, foo(0)); - assertEquals(25, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(0)); - assertEquals(26, foo(2)); -})(); - -// Test DataView.prototype.getUint16()/setUint16() for constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setUint16(0, 42, true); - dv.setUint16(2, 24, true); - - function foo(i) { - const x = dv.getUint16(i, true); - dv.setUint16(i, x+1, true); - return x; - } - - assertEquals(42, foo(0)); - assertEquals(24, foo(2)); - assertEquals(43, foo(0)); - assertEquals(25, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(0)); - assertEquals(26, foo(2)); -})(); - -// Test DataView.prototype.getInt32()/setInt32() for constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setInt32(0, 42, true); - dv.setInt32(4, 24, true); - - function foo(i) { - const x = dv.getInt32(i, true); - dv.setInt32(i, x+1, true); - return x; - } - - assertEquals(42, foo(0)); - assertEquals(24, foo(4)); - assertEquals(43, foo(0)); - assertEquals(25, foo(4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(0)); - assertEquals(26, foo(4)); -})(); - -// Test DataView.prototype.getUint32()/setUint32() for constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setUint32(0, 42, true); - dv.setUint32(4, 24, true); - - function foo(i) { - const x = dv.getUint32(i, true); - dv.setUint32(i, x+1, true); - return x; - } - - assertEquals(42, foo(0)); - assertEquals(24, foo(4)); - assertEquals(43, foo(0)); - assertEquals(25, foo(4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(0)); - assertEquals(26, foo(4)); -})(); - -// Test DataView.prototype.getFloat32()/setFloat32() for constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setFloat32(0, 42, true); - dv.setFloat32(4, 24, true); - - function foo(i) { - const x = dv.getFloat32(i, true); - dv.setFloat32(i, x+1, true); - return x; - } - - assertEquals(42, foo(0)); - assertEquals(24, foo(4)); - assertEquals(43, foo(0)); - assertEquals(25, foo(4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(0)); - assertEquals(26, foo(4)); -})(); - -// Test DataView.prototype.getFloat64()/setFloat64() for constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setFloat64(0, 42, true); - dv.setFloat64(8, 24, true); - - function foo(i) { - const x = dv.getFloat64(i, true); - dv.setFloat64(i, x+1, true); - return x; - } - - assertEquals(42, foo(0)); - assertEquals(24, foo(8)); - assertEquals(43, foo(0)); - assertEquals(25, foo(8)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(0)); - assertEquals(26, foo(8)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/dataview-deopt.js b/implementation-contributed/v8/mjsunit/compiler/dataview-deopt.js deleted file mode 100644 index b19de30e5d1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dataview-deopt.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -// Check that there are no deopt loops for DataView methods. - -var buffer = new ArrayBuffer(64); -var dataview = new DataView(buffer, 8, 24); - -// Check DataView getters. - -function readUint8(offset) { - return dataview.getUint8(offset); -} - -function warmupRead(f) { - f(0); - f(1); - %OptimizeFunctionOnNextCall(f); - f(2); - f(3); -} - -warmupRead(readUint8); -assertOptimized(readUint8); -readUint8(0.5); // Deopts. -assertUnoptimized(readUint8); - -warmupRead(readUint8); -assertOptimized(readUint8); -readUint8(1.5); // Doesn't deopt because getUint8 didn't get inlined this time. -assertOptimized(readUint8); - -// Check DataView setters. - -function writeUint8(offset, value) { - dataview.setUint8(offset, value); -} - -function warmupWrite(f) { - f(0, 0); - f(0, 1); - %OptimizeFunctionOnNextCall(f); - f(0, 2); - f(0, 3); -} - -warmupWrite(writeUint8); -assertOptimized(writeUint8); -writeUint8(0.5, 0); // Deopts. -assertUnoptimized(writeUint8); - -warmupWrite(writeUint8); -assertOptimized(writeUint8); -writeUint8(1.5, 0); // Doesn't deopt. -assertOptimized(writeUint8); diff --git a/implementation-contributed/v8/mjsunit/compiler/dataview-get.js b/implementation-contributed/v8/mjsunit/compiler/dataview-get.js deleted file mode 100644 index 09094399df6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dataview-get.js +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -var buffer = new ArrayBuffer(64); -var dataview = new DataView(buffer, 8, 24); - -var values = [-1, 2, -3, 42]; - -function readUint8(offset) { - return dataview.getUint8(offset); -} - -function readInt8Handled(offset) { - try { - return dataview.getInt8(offset); - } catch (e) { - return e; - } -} - -function readUint16(offset, little_endian) { - return dataview.getUint16(offset, little_endian); -} - -function readInt16Handled(offset, little_endian) { - try { - return dataview.getInt16(offset, little_endian); - } catch (e) { - return e; - } -} - -function readUint32(offset, little_endian) { - return dataview.getUint32(offset, little_endian); -} - -function readInt32Handled(offset, little_endian) { - try { - return dataview.getInt32(offset, little_endian); - } catch (e) { - return e; - } -} - -function readFloat32(offset, little_endian) { - return dataview.getFloat32(offset, little_endian); -} - -function readFloat64(offset, little_endian) { - return dataview.getFloat64(offset, little_endian); -} - -function warmup(f) { - f(0); - f(1); - %OptimizeFunctionOnNextCall(f); - f(2); - f(3); -} - -// TurboFan valid getInt8. -for (var i = 0; i < values.length; i++) { - dataview.setInt8(i, values[i]); -} -warmup(readInt8Handled); -assertOptimized(readInt8Handled); -assertEquals(values[0], readInt8Handled(0)); -assertEquals(values[1], readInt8Handled(1)); -assertEquals(values[2], readInt8Handled(2)); -assertEquals(values[3], readInt8Handled(3)); - -// TurboFan valid getUint8. -dataview.setUint32(4, 0xdeadbeef); -warmup(readUint8); -assertOptimized(readUint8); -assertEquals(0xde, readUint8(4)); -assertEquals(0xad, readUint8(5)); -assertEquals(0xbe, readUint8(6)); -assertEquals(0xef, readUint8(7)); - -// TurboFan valid getUint16. -dataview.setUint16(8, 0xabcd); -warmup(readUint16); -assertOptimized(readUint16); -assertEquals(0xabcd, readUint16(8)); -assertEquals(0xcdab, readUint16(8, true)); - -// TurboFan valid getInt16. -let b1 = -0x1234; -dataview.setInt16(10, b1); -warmup(readInt16Handled); -assertOptimized(readInt16Handled); -assertEquals(b1, readInt16Handled(10)); -dataview.setInt16(10, b1, true); -assertEquals(b1, readInt16Handled(10, true)); - -// TurboFan valid getUint32. -dataview.setUint32(12, 0xabcdef12); -warmup(readUint32); -assertOptimized(readUint32); -assertEquals(0xabcdef12, readUint32(12)); -assertEquals(0x12efcdab, readUint32(12, true)); - -// TurboFan valid getInt32. -let b2 = -0x12345678; -dataview.setInt32(16, b2); -warmup(readInt32Handled); -assertOptimized(readInt32Handled); -assertEquals(b2, readInt32Handled(16)); -dataview.setInt32(16, b2, true); -assertEquals(b2, readInt32Handled(16, true)); - -// TurboFan valid getFloat32. -let b3 = Math.fround(Math.E); // Round Math.E to float32. -dataview.setFloat32(16, b3); -warmup(readFloat32); -assertOptimized(readFloat32); -assertEquals(b3, readFloat32(16)); -dataview.setFloat32(16, b3, true); -assertEquals(b3, readFloat32(16, true)); - -// TurboFan valid getFloat64. -let b4 = Math.PI; -dataview.setFloat64(16, b4); -warmup(readFloat64); -assertOptimized(readFloat64); -assertEquals(b4, readFloat64(16)); -dataview.setFloat64(16, b4, true); -assertEquals(b4, readFloat64(16, true)); - -// TurboFan out of bounds reads deopt. -assertOptimized(readInt8Handled); -assertInstanceof(readInt8Handled(24), RangeError); -assertUnoptimized(readInt8Handled); -assertOptimized(readInt16Handled); -assertInstanceof(readInt16Handled(23), RangeError); -assertUnoptimized(readInt16Handled); -assertOptimized(readInt32Handled); -assertInstanceof(readInt32Handled(21), RangeError); -assertUnoptimized(readInt32Handled); - -// Without exception handler. -assertOptimized(readUint8); -assertThrows(() => readUint8(24)); -assertUnoptimized(readUint8); -assertOptimized(readFloat32); -assertThrows(() => readFloat32(21)); -assertUnoptimized(readFloat32); -assertOptimized(readFloat64); -assertThrows(() => readFloat64(17)); -assertUnoptimized(readFloat64); - -// Negative Smi deopts. -(function() { - function readInt8Handled(offset) { - try { return dataview.getInt8(offset); } catch (e) { return e; } - } - warmup(readInt8Handled); - assertOptimized(readInt8Handled); - assertInstanceof(readInt8Handled(-1), RangeError); - assertUnoptimized(readInt8Handled); -})(); - -// Non-Smi index deopts. -(function() { - function readUint8(offset) { return dataview.getUint8(offset); } - warmup(readUint8); - assertOptimized(readUint8); - assertEquals(values[3], readUint8(3.14)); - assertUnoptimized(readUint8); -})(); - -// TurboFan detached buffer deopts. -(function() { - function readInt8Handled(offset) { - try { return dataview.getInt8(offset); } catch (e) { return e; } - } - warmup(readInt8Handled); - assertOptimized(readInt8Handled); - %ArrayBufferDetach(buffer); - assertInstanceof(readInt8Handled(0), TypeError); - assertUnoptimized(readInt8Handled); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/dataview-neutered.js b/implementation-contributed/v8/mjsunit/compiler/dataview-neutered.js deleted file mode 100644 index ef485c69db8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dataview-neutered.js +++ /dev/null @@ -1,376 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --noalways-opt --no-stress-flush-bytecode - -// Invalidate the detaching protector. -%ArrayBufferDetach(new ArrayBuffer(1)); - -// Check DataView.prototype.getInt8() optimization. -(function() { - const ab = new ArrayBuffer(1); - const dv = new DataView(ab); - - function foo(dv) { - return dv.getInt8(0); - } - - assertEquals(0, foo(dv)); - assertEquals(0, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(dv)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.getUint8() optimization. -(function() { - const ab = new ArrayBuffer(1); - const dv = new DataView(ab); - - function foo(dv) { - return dv.getUint8(0); - } - - assertEquals(0, foo(dv)); - assertEquals(0, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(dv)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.getInt16() optimization. -(function() { - const ab = new ArrayBuffer(2); - const dv = new DataView(ab); - - function foo(dv) { - return dv.getInt16(0, true); - } - - assertEquals(0, foo(dv)); - assertEquals(0, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(dv)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.getUint16() optimization. -(function() { - const ab = new ArrayBuffer(2); - const dv = new DataView(ab); - - function foo(dv) { - return dv.getUint16(0, true); - } - - assertEquals(0, foo(dv)); - assertEquals(0, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(dv)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.getInt32() optimization. -(function() { - const ab = new ArrayBuffer(4); - const dv = new DataView(ab); - - function foo(dv) { - return dv.getInt32(0, true); - } - - assertEquals(0, foo(dv)); - assertEquals(0, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(dv)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.getUint32() optimization. -(function() { - const ab = new ArrayBuffer(4); - const dv = new DataView(ab); - - function foo(dv) { - return dv.getUint32(0, true); - } - - assertEquals(0, foo(dv)); - assertEquals(0, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(dv)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.getFloat32() optimization. -(function() { - const ab = new ArrayBuffer(4); - const dv = new DataView(ab); - - function foo(dv) { - return dv.getFloat32(0, true); - } - - assertEquals(0, foo(dv)); - assertEquals(0, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(dv)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.getFloat64() optimization. -(function() { - const ab = new ArrayBuffer(8); - const dv = new DataView(ab); - - function foo(dv) { - return dv.getFloat64(0, true); - } - - assertEquals(0, foo(dv)); - assertEquals(0, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(dv)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.setInt8() optimization. -(function() { - const ab = new ArrayBuffer(1); - const dv = new DataView(ab); - - function foo(dv, x) { - return dv.setInt8(0, x); - } - - assertEquals(undefined, foo(dv, 1)); - assertEquals(1, dv.getInt8(0)); - assertEquals(undefined, foo(dv, 2)); - assertEquals(2, dv.getInt8(0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(dv, 3)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv, 4), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv, 5), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.setUint8() optimization. -(function() { - const ab = new ArrayBuffer(1); - const dv = new DataView(ab); - - function foo(dv, x) { - return dv.setUint8(0, x); - } - - assertEquals(undefined, foo(dv, 1)); - assertEquals(1, dv.getUint8(0)); - assertEquals(undefined, foo(dv, 2)); - assertEquals(2, dv.getUint8(0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(dv, 3)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv, 4), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv, 5), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.setInt16() optimization. -(function() { - const ab = new ArrayBuffer(2); - const dv = new DataView(ab); - - function foo(dv, x) { - return dv.setInt16(0, x, true); - } - - assertEquals(undefined, foo(dv, 1)); - assertEquals(1, dv.getInt16(0, true)); - assertEquals(undefined, foo(dv, 2)); - assertEquals(2, dv.getInt16(0, true)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(dv, 3)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv, 4), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv, 5), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.setUint16() optimization. -(function() { - const ab = new ArrayBuffer(2); - const dv = new DataView(ab); - - function foo(dv, x) { - return dv.setUint16(0, x, true); - } - - assertEquals(undefined, foo(dv, 1)); - assertEquals(1, dv.getUint16(0, true)); - assertEquals(undefined, foo(dv, 2)); - assertEquals(2, dv.getUint16(0, true)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(dv, 3)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv, 4), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv, 5), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.setInt32() optimization. -(function() { - const ab = new ArrayBuffer(4); - const dv = new DataView(ab); - - function foo(dv, x) { - return dv.setInt32(0, x, true); - } - - assertEquals(undefined, foo(dv, 1)); - assertEquals(1, dv.getInt32(0, true)); - assertEquals(undefined, foo(dv, 2)); - assertEquals(2, dv.getInt32(0, true)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(dv, 3)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv, 4), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv, 5), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.setUint32() optimization. -(function() { - const ab = new ArrayBuffer(4); - const dv = new DataView(ab); - - function foo(dv, x) { - return dv.setUint32(0, x, true); - } - - assertEquals(undefined, foo(dv, 1)); - assertEquals(1, dv.getUint32(0, true)); - assertEquals(undefined, foo(dv, 2)); - assertEquals(2, dv.getUint32(0, true)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(dv, 3)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv, 4), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv, 5), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.setFloat32() optimization. -(function() { - const ab = new ArrayBuffer(4); - const dv = new DataView(ab); - - function foo(dv, x) { - return dv.setFloat32(0, x, true); - } - - assertEquals(undefined, foo(dv, 1)); - assertEquals(1, dv.getFloat32(0, true)); - assertEquals(undefined, foo(dv, 2)); - assertEquals(2, dv.getFloat32(0, true)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(dv, 3)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv, 4), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv, 5), TypeError); - assertOptimized(foo); -})(); - -// Check DataView.prototype.setFloat64() optimization. -(function() { - const ab = new ArrayBuffer(8); - const dv = new DataView(ab); - - function foo(dv, x) { - return dv.setFloat64(0, x, true); - } - - assertEquals(undefined, foo(dv, 1)); - assertEquals(1, dv.getFloat64(0, true)); - assertEquals(undefined, foo(dv, 2)); - assertEquals(2, dv.getFloat64(0, true)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(dv, 3)); - assertOptimized(foo); - %ArrayBufferDetach(ab); - assertThrows(() => foo(dv, 4), TypeError); - assertUnoptimized(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(dv, 5), TypeError); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/dataview-nonconstant.js b/implementation-contributed/v8/mjsunit/compiler/dataview-nonconstant.js deleted file mode 100644 index 0420660c83c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dataview-nonconstant.js +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test DataView.prototype.getInt8()/setInt8() for non-constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setInt8(0, 42); - dv.setInt8(1, 24); - - function foo(dv, i) { - const x = dv.getInt8(i); - dv.setInt8(i, x+1); - return x; - } - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 1)); - assertEquals(43, foo(dv, 0)); - assertEquals(25, foo(dv, 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(dv, 0)); - assertEquals(26, foo(dv, 1)); -})(); - -// Test DataView.prototype.getUint8()/setUint8() for non-constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setUint8(0, 42); - dv.setUint8(1, 24); - - function foo(dv, i) { - const x = dv.getUint8(i); - dv.setUint8(i, x+1); - return x; - } - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 1)); - assertEquals(43, foo(dv, 0)); - assertEquals(25, foo(dv, 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(dv, 0)); - assertEquals(26, foo(dv, 1)); -})(); - -// Test DataView.prototype.getInt16()/setInt16() for non-constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setInt16(0, 42, true); - dv.setInt16(2, 24, true); - - function foo(dv, i) { - const x = dv.getInt16(i, true); - dv.setInt16(i, x+1, true); - return x; - } - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 2)); - assertEquals(43, foo(dv, 0)); - assertEquals(25, foo(dv, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(dv, 0)); - assertEquals(26, foo(dv, 2)); -})(); - -// Test DataView.prototype.getUint16()/setUint16() for non-constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setUint16(0, 42, true); - dv.setUint16(2, 24, true); - - function foo(dv, i) { - const x = dv.getUint16(i, true); - dv.setUint16(i, x+1, true); - return x; - } - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 2)); - assertEquals(43, foo(dv, 0)); - assertEquals(25, foo(dv, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(dv, 0)); - assertEquals(26, foo(dv, 2)); -})(); - -// Test DataView.prototype.getInt32()/setInt32() for non-constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setInt32(0, 42, true); - dv.setInt32(4, 24, true); - - function foo(dv, i) { - const x = dv.getInt32(i, true); - dv.setInt32(i, x+1, true); - return x; - } - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 4)); - assertEquals(43, foo(dv, 0)); - assertEquals(25, foo(dv, 4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(dv, 0)); - assertEquals(26, foo(dv, 4)); -})(); - -// Test DataView.prototype.getUint32()/setUint32() for non-constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setUint32(0, 42, true); - dv.setUint32(4, 24, true); - - function foo(dv, i) { - const x = dv.getUint32(i, true); - dv.setUint32(i, x+1, true); - return x; - } - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 4)); - assertEquals(43, foo(dv, 0)); - assertEquals(25, foo(dv, 4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(dv, 0)); - assertEquals(26, foo(dv, 4)); -})(); - -// Test DataView.prototype.getFloat32()/setFloat32() for non-constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setFloat32(0, 42, true); - dv.setFloat32(4, 24, true); - - function foo(dv, i) { - const x = dv.getFloat32(i, true); - dv.setFloat32(i, x+1, true); - return x; - } - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 4)); - assertEquals(43, foo(dv, 0)); - assertEquals(25, foo(dv, 4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(dv, 0)); - assertEquals(26, foo(dv, 4)); -})(); - -// Test DataView.prototype.getFloat64()/setFloat64() for non-constant DataViews. -(function() { - const dv = new DataView(new ArrayBuffer(1024)); - dv.setFloat64(0, 42, true); - dv.setFloat64(8, 24, true); - - function foo(dv, i) { - const x = dv.getFloat64(i, true); - dv.setFloat64(i, x+1, true); - return x; - } - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 8)); - assertEquals(43, foo(dv, 0)); - assertEquals(25, foo(dv, 8)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(44, foo(dv, 0)); - assertEquals(26, foo(dv, 8)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/dataview-set.js b/implementation-contributed/v8/mjsunit/compiler/dataview-set.js deleted file mode 100644 index 4759597881a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dataview-set.js +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -var buffer = new ArrayBuffer(64); -var dataview = new DataView(buffer, 8, 24); - -function writeUint8(offset, value) { - dataview.setUint8(offset, value); -} - -function writeInt8Handled(offset, value) { - try { - dataview.setInt8(offset, value); - } catch(e) { - return e; - } -} - -function writeUint16(offset, value, little_endian) { - dataview.setUint16(offset, value, little_endian); -} - -function writeInt16(offset, value, little_endian) { - dataview.setInt16(offset, value, little_endian); -} - -function writeUint32(offset, value, little_endian) { - dataview.setUint32(offset, value, little_endian); -} - -function writeInt32(offset, value, little_endian) { - dataview.setInt32(offset, value, little_endian); -} - -function writeFloat32(offset, value, little_endian) { - dataview.setFloat32(offset, value, little_endian); -} - -function writeFloat64(offset, value, little_endian) { - dataview.setFloat64(offset, value, little_endian); -} - -function warmup(f) { - f(0, 0); - f(0, 1); - %OptimizeFunctionOnNextCall(f); - f(0, 2); - f(0, 3); -} - -// TurboFan valid setUint8. -warmup(writeUint8); -assertOptimized(writeUint8); -writeUint8(0, 0xde); -writeUint8(1, 0xad); -writeUint8(2, 0xbe); -writeUint8(3, 0xef); -assertEquals(0xdeadbeef, dataview.getUint32(0)); - -// TurboFan valid setInt8. -warmup(writeInt8Handled); -assertOptimized(writeInt8Handled); -writeInt8Handled(0, -34); -writeInt8Handled(1, -83); -writeInt8Handled(2, -66); -writeInt8Handled(3, -17); -assertEquals(0xdeadbeef, dataview.getUint32(0)); - -// TurboFan valid setUint16. -warmup(writeUint16); -assertOptimized(writeUint16); -writeUint16(0, 0xdead); -writeUint16(2, 0xefbe, true); -assertEquals(0xdeadbeef, dataview.getUint32(0)); - -// TurboFan valid setInt16. -warmup(writeInt16); -assertOptimized(writeInt16); -writeInt16(0, -8531); -writeInt16(2, -4162, true); -assertEquals(0xdeadbeef, dataview.getUint32(0)); - -// TurboFan valid setUint32. -warmup(writeUint32); -assertOptimized(writeUint32); -writeUint32(0, 0xdeadbeef); -assertEquals(0xdeadbeef, dataview.getUint32(0)); -writeUint32(0, 0xefbeadde, true); -assertEquals(0xdeadbeef, dataview.getUint32(0)); - -// TurboFan valid setInt32. -warmup(writeInt32); -assertOptimized(writeInt32); -writeInt32(0, -559038737); -assertEquals(0xdeadbeef, dataview.getUint32(0)); -writeInt32(0, -272716322, true); -assertEquals(0xdeadbeef, dataview.getUint32(0)); - -// TurboFan valid setFloat32. -let b3 = Math.fround(Math.E); // Round Math.E to float32. -warmup(writeFloat32); -assertOptimized(writeFloat32); -writeFloat32(4, b3); -assertEquals(b3, dataview.getFloat32(4)); -writeFloat32(4, b3, true); -assertEquals(b3, dataview.getFloat32(4, true)); - -// TurboFan valid setFloat64. -let b4 = Math.PI; -warmup(writeFloat64); -assertOptimized(writeFloat64); -writeFloat64(8, b4); -assertEquals(b4, dataview.getFloat64(8)); -writeFloat64(8, b4, true); -assertEquals(b4, dataview.getFloat64(8, true)); - -// TurboFan out of bounds read, deopt. -assertOptimized(writeInt8Handled); -assertInstanceof(writeInt8Handled(24, 0), RangeError); -assertUnoptimized(writeInt8Handled); - -// Without exception handler, deopt too. -assertOptimized(writeUint8); -assertThrows(() => writeUint8(24, 0)); -assertUnoptimized(writeUint8); - -// None of the stores wrote out of bounds. -var bytes = new Uint8Array(buffer); -for (var i = 0; i < 8; i++) assertEquals(0, bytes[i]); -for (var i = 32; i < 64; i++) assertEquals(0, bytes[i]); diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-code.js b/implementation-contributed/v8/mjsunit/compiler/dead-code.js deleted file mode 100644 index 8b5bd2cf90e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-code.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function dead1(a, b) { - var x = a + b; - return a; // x is dead -} - -function dead2(a, b) { - var x = a | 0; - var y = b | 0; - return a; // x and y are both dead -} - -function dead3(a, b) { - var z; - if(a == 2) z = a; - else z = b; - return a; // z is dead -} - -function dead4(a) { - var z = 3; - for (i = 0; i < 3; i++) { - z++; - } - return a; // z is dead -} - -function dead5(a) { - var z = 3; - for (i = 0; i < 3; i++) { - z++; - } - var w = z + a; - return a; // z is dead -} - -assertTrue(dead1(33, 32) == 33); -assertTrue(dead2(33, 32) == 33); -assertTrue(dead3(33, 32) == 33); -assertTrue(dead4(33) == 33); -assertTrue(dead5(33) == 33); - -assertTrue(dead1(34, 7) == 34); -assertTrue(dead2(34, 7) == 34); -assertTrue(dead3(34, 7) == 34); -assertTrue(dead4(34) == 34); -assertTrue(dead5(34) == 34); - -assertTrue(dead1(3.4, 0.1) == 3.4); -assertTrue(dead2(3.4, 0.1) == 3.4); -assertTrue(dead3(3.4, 0.1) == 3.4); -assertTrue(dead4(3.4) == 3.4); -assertTrue(dead5(3.4) == 3.4); diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-code2.js b/implementation-contributed/v8/mjsunit/compiler/dead-code2.js deleted file mode 100644 index b0580207edb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-code2.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function dead1(a, b) { - { var x = a + b; } - return a; // x is dead -} - -function dead2(a, b) { - { var x = a | 0; var y = b | 0; } - return a; // x and y are both dead -} - -function dead3(a, b) { - { - var z; - if(a == 2) z = a; - else z = b; - } - return a; // z is dead -} - -function dead4(a) { - { - var z = 3; - for (i = 0; i < 3; i++) { - z++; - } - } - return a; // z is dead -} - -function dead5(a) { - { - var z = 3; - for (i = 0; i < 3; i++) { - z++; - } - var w = z + a; - } - return a; // z and w are dead -} - -assertTrue(dead1(33, 32) == 33); -assertTrue(dead2(33, 32) == 33); -assertTrue(dead3(33, 32) == 33); -assertTrue(dead4(33) == 33); -assertTrue(dead5(33) == 33); - -assertTrue(dead1(34, 7) == 34); -assertTrue(dead2(34, 7) == 34); -assertTrue(dead3(34, 7) == 34); -assertTrue(dead4(34) == 34); -assertTrue(dead5(34) == 34); - -assertTrue(dead1(3.4, 0.1) == 3.4); -assertTrue(dead2(3.4, 0.1) == 3.4); -assertTrue(dead3(3.4, 0.1) == 3.4); -assertTrue(dead4(3.4) == 3.4); -assertTrue(dead5(3.4) == 3.4); diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-code3.js b/implementation-contributed/v8/mjsunit/compiler/dead-code3.js deleted file mode 100644 index d05797825b9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-code3.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function dead1(a, b) { - a + b; // dead - return a; -} - -function dead2(a, b) { - a | 0; // dead - b | 0; // dead - return a; // x and y are both dead -} - -function dead3(a, b) { - a == 2 ? a : b; // dead - return a; -} - -function dead4(a) { - var z = 3; - for (i = 0; i < 3; i++) { - z + 3; // dead - } - return a; -} - -function dead5(a) { - var z = 3; - for (i = 0; i < 3; i++) { - z + 3; // dead - z++; - } - var w = z + a; - return a; // z is dead -} - -assertTrue(dead1(33, 32) == 33); -assertTrue(dead2(33, 32) == 33); -assertTrue(dead3(33, 32) == 33); -assertTrue(dead4(33) == 33); -assertTrue(dead5(33) == 33); - -assertTrue(dead1(34, 7) == 34); -assertTrue(dead2(34, 7) == 34); -assertTrue(dead3(34, 7) == 34); -assertTrue(dead4(34) == 34); -assertTrue(dead5(34) == 34); - -assertTrue(dead1(3.4, 0.1) == 3.4); -assertTrue(dead2(3.4, 0.1) == 3.4); -assertTrue(dead3(3.4, 0.1) == 3.4); -assertTrue(dead4(3.4) == 3.4); -assertTrue(dead5(3.4) == 3.4); diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-code4.js b/implementation-contributed/v8/mjsunit/compiler/dead-code4.js deleted file mode 100644 index a5c20f81ced..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-code4.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function dead1(a, b) { - (a | 0) + (b | 0); // dead - return a; -} - -function dead2(a, b) { - a | 0; // dead - b | 0; // dead - return a; // x and y are both dead -} - -function dead3(a, b) { - a == 2 ? (a | 0) : (b | 0); // dead - return a; -} - -function dead4(a) { - var z = 3; - for (i = 0; i < 3; i++) { - (z | 0) + 3; // dead - } - return a; -} - -function dead5(a) { - var z = 3; - for (i = 0; i < 3; i++) { - (z | 0) + 3; // dead - z++; - } - var w = z + a; - return a; // z is dead -} - -assertTrue(dead1(33, 32) == 33); -assertTrue(dead2(33, 32) == 33); -assertTrue(dead3(33, 32) == 33); -assertTrue(dead4(33) == 33); -assertTrue(dead5(33) == 33); - -assertTrue(dead1(34, 7) == 34); -assertTrue(dead2(34, 7) == 34); -assertTrue(dead3(34, 7) == 34); -assertTrue(dead4(34) == 34); -assertTrue(dead5(34) == 34); - -assertTrue(dead1(3.4, 0.1) == 3.4); -assertTrue(dead2(3.4, 0.1) == 3.4); -assertTrue(dead3(3.4, 0.1) == 3.4); -assertTrue(dead4(3.4) == 3.4); -assertTrue(dead5(3.4) == 3.4); diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-code5.js b/implementation-contributed/v8/mjsunit/compiler/dead-code5.js deleted file mode 100644 index 834fa24f0e5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-code5.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function dead1(a, b) { - a * b; - a << b; - a >> b; - a >>> b; - a | b; - a & b; - a ^ b; - return a; -} - -function dead2(a, b) { - (a | 0) * b; - (a | 0) << b; - (a | 0) >> b; - (a | 0) >>> b; - (a | 0) | b; - (a | 0) & b; - (a | 0) ^ b; - return a; -} - -function dead3(a, b) { - a == 2 ? (a * b) : (b * a); // dead - return a; -} - -function dead4(a) { - var z = 3; - for (i = 0; i < 3; i++) { - z * 3; // dead - } - return a; -} - -function dead5(a) { - var z = 3; - for (i = 0; i < 3; i++) { - z * 3; // dead - z++; - } - var w = z * a; - return a; // w is dead -} - -assertTrue(dead1(33, 32) == 33); -assertTrue(dead2(33, 32) == 33); -assertTrue(dead3(33, 32) == 33); -assertTrue(dead4(33) == 33); -assertTrue(dead5(33) == 33); - -assertTrue(dead1(34, 7) == 34); -assertTrue(dead2(34, 7) == 34); -assertTrue(dead3(34, 7) == 34); -assertTrue(dead4(34) == 34); -assertTrue(dead5(34) == 34); - -assertTrue(dead1(3.4, 0.1) == 3.4); -assertTrue(dead2(3.4, 0.1) == 3.4); -assertTrue(dead3(3.4, 0.1) == 3.4); -assertTrue(dead4(3.4) == 3.4); -assertTrue(dead5(3.4) == 3.4); diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-code6.js b/implementation-contributed/v8/mjsunit/compiler/dead-code6.js deleted file mode 100644 index ec9b8433ddd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-code6.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// Test some dead code elimination scenarios - -function dead1(x, y) { - var a = x | 0, b = y | 0; - a * b; - a << b; - a >> b; - a >>> b; - a | b; - a & b; - a ^ b; - return x; -} - -function dead2(x, y) { - var a = x | 0, b = y | 0; - (a | 0) * b; - (a | 0) << b; - (a | 0) >> b; - (a | 0) >>> b; - (a | 0) | b; - (a | 0) & b; - (a | 0) ^ b; - return x; -} - -function dead3(a, b) { - a == 2 ? (a * b) : (b * a); // dead - return a; -} - -assertTrue(dead1(33, 32) == 33); -assertTrue(dead1(33, 32) == 33); -%OptimizeFunctionOnNextCall(dead1); -assertTrue(dead1(33, 32) == 33); - -assertTrue(dead2(34, 11) == 34); -assertTrue(dead2(34, 11) == 34); -%OptimizeFunctionOnNextCall(dead2); -assertTrue(dead2(34, 11) == 34); - -assertTrue(dead3(35, 12) == 35); -assertTrue(dead3(35, 12) == 35); -%OptimizeFunctionOnNextCall(dead3); -assertTrue(dead3(35, 12) == 35); diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-loops-neg.js b/implementation-contributed/v8/mjsunit/compiler/dead-loops-neg.js deleted file mode 100644 index dbf500b48e7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-loops-neg.js +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Presents negative opportunities for dead loop removal. - -function loop1() { - while (true) return; -} - -function loop2() { - var i = 0; - while (i++ < 10) ; - return i; // value of {i} escapes. - // can only remove the loop with induction variable analysis. -} - -function loop3() { - var i = 0; - for (; i < 10; i++) ; - return i; // value of {i} escapes. - // can only remove the loop with induction variable analysis. -} - -function loop4() { - var a = 0; - for (var i = 0; i < 10; i++) a++; - return a; // value of {a} escapes. - // can only remove the loop with induction variable analysis. -} - -function loop5() { - var a = new Int32Array(4), sum = 0; - for (var i = 0; i < a.length; i++) { - sum += a[i]; - } - return sum; // {sum} escapes. - // can only remove the loop by figuring out that all elements of {a} are 0. -} - -function loop6(a) { - for (var i = 0; i < a; i++) ; // implicit a.valueOf(). - // can only remove the loop by guarding on the type of a. -} - -function loop7(a) { - for (var i = 0; i < 10; i++) a.toString(); // unknown side-effect on a. - // can only remove the loop by guarding on the type of a. -} - -function loop8(a) { - for (var i = 0; i < 10; i++) a.valueOf(); // unknown side-effect on a. - // can only remove the loop by guarding on the type of a. -} - -var no_params_loops = [loop1, loop2, loop3, loop4, loop5, loop6]; -var params_loops = [loop6, loop7, loop8]; - -for (var i = 0; i < no_params_loops.length; i++) { - var f = no_params_loops[i]; - f(); - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); -} - -for (var i = 0; i < params_loops.length; i++) { - var f = params_loops[i]; - f(3); - f(7); - f(11); - %OptimizeFunctionOnNextCall(f); - f(9); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-loops.js b/implementation-contributed/v8/mjsunit/compiler/dead-loops.js deleted file mode 100644 index 2301b129dd7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-loops.js +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Presents opportunities for dead loop removal. - -function loop1() { - while (false) ; // doesn't even loop. -} - -function loop2() { - var i = 0; - while (i++ < 10) ; // nothing in the body. -} - -function loop3() { - for (var i = 0; i < 10; i++) ; // nothing in the body. -} - -function loop4() { - var a = 0; - for (var i = 0; i < 10; i++) a++; // {a} is dead after the loop. -} - -function loop5() { - var a = new Int32Array(4), sum = 0; - for (var i = 0; i < a.length; i++) { - // Involves only reads on typed arrays, and {i} doesn't overflow. - sum += a[i]; - } -} - -function loop6() { - var a = new Array(4), sum = 0; - for (var i = 0; i < a.length; i++) { - // Involves only in-bounds read on the array {a}. - // Have to prove that {a} doesn't have getters...? - sum += a[i]; - } -} - -function loop7() { - for (var i = 0; i < 10; i++) { - new Object(); // Have to prove the allocation doesn't escape. - } -} - -function loop8() { - for (var i = 0; i < 10; i++) { - var x = {}; // Have to prove the allocation doesn't escape. - } -} - -var loops = [loop1, loop2, loop3, loop4, loop5, loop6, loop7, loop8]; - -for (var i = 0; i < loops.length; i++) { - var f = loops[i]; - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-string-add-warm.js b/implementation-contributed/v8/mjsunit/compiler/dead-string-add-warm.js deleted file mode 100644 index c211ebddc59..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-string-add-warm.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function dead1(a, b) { - var x = "a" + "b"; - return a; // x, "a", and "b" are dead code -} - -function dead2(a, b) { - var x = "0" + a; - var y = "0" + b; - return a; // x and y are both dead -} - -function dead3(a, b) { - a = a ? "1" : "0"; - b = b ? "1" : "0"; - var x = a + "0"; - var y = b + "0"; - return a; // x and y are both dead -} - -function run() { - assertEquals(33, dead1(33, 32)); - assertEquals(33, dead2(33, 32)); - assertEquals("1", dead3(33, 32)); - - assertEquals(31, dead1(31, 30)); - assertEquals(31, dead2(31, 30)); - assertEquals("1", dead3(31, 32)); - - assertEquals(0, dead1(0, 30)); - assertEquals(0, dead2(0, 30)); - assertEquals("0", dead3(0, 32)); - - assertEquals(true, dead1(true, 0)); - assertEquals(true, dead2(true, 0)); - assertEquals("1", dead3(true, 0)); - - assertEquals("true", dead1("true", 0)); - assertEquals("true", dead2("true", 0)); - assertEquals("1", dead3("true", 0)); -} - -run(); -run(); -%OptimizeFunctionOnNextCall(dead1); -%OptimizeFunctionOnNextCall(dead2); -%OptimizeFunctionOnNextCall(dead3); -run(); diff --git a/implementation-contributed/v8/mjsunit/compiler/dead-string-add.js b/implementation-contributed/v8/mjsunit/compiler/dead-string-add.js deleted file mode 100644 index 04155efab68..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dead-string-add.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function dead1(a, b) { - var x = "a" + "b"; - return a; // x, "a", and "b" are dead code -} - -function dead2(a, b) { - var x = a + "0"; - var y = b + "0"; - return a; // x and y are both dead -} - -function dead3(a, b) { - a = a ? "1" : "0"; - b = b ? "1" : "0"; - var x = a + "0"; - var y = b + "0"; - return a; // x and y are both dead -} - -assertEquals(33, dead1(33, 32)); -assertEquals(33, dead2(33, 32)); -assertEquals("1", dead3(33, 32)); - -assertEquals(31, dead1(31, 30)); -assertEquals(31, dead2(31, 30)); -assertEquals("1", dead3(31, 32)); - -assertEquals(0, dead1(0, 30)); -assertEquals(0, dead2(0, 30)); -assertEquals("0", dead3(0, 32)); - -assertEquals(true, dead1(true, 0)); -assertEquals(true, dead2(true, 0)); -assertEquals("1", dead3(true, 0)); - -assertEquals("true", dead1("true", 0)); -assertEquals("true", dead2("true", 0)); -assertEquals("1", dead3("true", 0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/delete.js b/implementation-contributed/v8/mjsunit/compiler/delete.js deleted file mode 100644 index 2aaecb25b6b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/delete.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests of unary delete in cases where it is always true or always false. - -// In an effect context, expression is always true. -assertEquals(undefined, void (delete 0)); -// In an effect context, expression is always false. -assertEquals(undefined, (function (x) { delete x; })(0)); - -// In a pure test context, expression is always true. -assertEquals(1, (delete 0) ? 1 : 2); -// In a pure test context, expression is always false. -assertEquals(2, (function (x) { return (delete x) ? 1 : 2; })(0)); -// In a negated test context, expression is always false. -assertEquals(1, (function (x) { return !(delete x) ? 1 : 2; })(0)); - -// In a hybrid test/value context, expression is always true, value -// expected in accumulator. -assertEquals(3, 1 + ((delete 0) && 2)); -// In a hybrid test/value context, expression is always false, value -// expected in accumulator. -assertEquals(false, (function (x) { return (delete x) && 2; })(0)); -// In a hybrid test/value context, expression is always true, value -// expected on stack. -assertEquals(3, ((delete 0) && 2) + 1); -// In a hybrid test/value context, expression is always false, value -// expected on stack. -assertEquals(1, (function (x) { return ((delete x) && 2) + 1; })(0)); - -// In a hybrid value/test context, expression is always true, value -// expected in accumulator. -assertEquals(2, 1 + ((delete 0) || 2)); -// In a hybrid value/test context, expression is always false, value -// expected in accumulator. -assertEquals(2, (function (x) { return (delete x) || 2; })(0)); -// In a hybrid value/test context, expression is always true, value -// expected on stack. -assertEquals(2, ((delete 0) || 2) + 1); -// In a hybrid value/test context, expression is always false, value -// expected on stack. -assertEquals(3, (function (x) { return ((delete x) || 2) + 1; })(0)); - - -// 'this' is not a Reference so delete returns true (see section 11.4.1, -// step 2 of ES 5.1). -assertEquals(true, delete this); -assertEquals(true, (function () { return delete this; })()); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors1.js b/implementation-contributed/v8/mjsunit/compiler/deopt-accessors1.js deleted file mode 100644 index 3589258656a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors1.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {v:1}; -var deopt = false; - -Object.defineProperty(o, "x", { - get: function() { return this.v; }, - set: function(v) { - this.v = v; - if (deopt) { - %DeoptimizeFunction(foo); - } - } -}); - -function foo(o) { - return o.x++; -} - -assertEquals(1, foo(o)); -assertEquals(2, foo(o)); -%OptimizeFunctionOnNextCall(foo); -deopt = true; -assertEquals(3, foo(o)); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors2.js b/implementation-contributed/v8/mjsunit/compiler/deopt-accessors2.js deleted file mode 100644 index 74d41397bf9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors2.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {v:1}; -var deopt = false; - -Object.defineProperty(o, "x", { - get: function() { return this.v; }, - set: function(v) { - this.v = v; - if (deopt) { - %DeoptimizeFunction(foo); - } - } -}); - -function foo(o) { - return ++o.x; -} - -assertEquals(2, foo(o)); -assertEquals(3, foo(o)); -%OptimizeFunctionOnNextCall(foo); -deopt = true; -assertEquals(4, foo(o)); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors3.js b/implementation-contributed/v8/mjsunit/compiler/deopt-accessors3.js deleted file mode 100644 index 035cf2b3592..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors3.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {v:1}; -var deopt = false; - -Object.defineProperty(o, "x", { - get: function() { return this.v; }, - set: function(v) { - this.v = v; - if (deopt) { - %DeoptimizeFunction(foo); - } - } -}); - -function foo(o) { - var x = "x"; - return o[x]++; -} - -assertEquals(1, foo(o)); -assertEquals(2, foo(o)); -%OptimizeFunctionOnNextCall(foo); -deopt = true; -assertEquals(3, foo(o)); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors4.js b/implementation-contributed/v8/mjsunit/compiler/deopt-accessors4.js deleted file mode 100644 index 5a8453f237e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors4.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {v:1}; -var deopt = false; - -Object.defineProperty(o, "x", { - get: function() { return this.v; }, - set: function(v) { - this.v = v; - if (deopt) { - %DeoptimizeFunction(foo); - } - } -}); - -function foo(o) { - var x = "x"; - return ++o[x]; -} - -assertEquals(2, foo(o)); -assertEquals(3, foo(o)); -%OptimizeFunctionOnNextCall(foo); -deopt = true; -assertEquals(4, foo(o)); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors5.js b/implementation-contributed/v8/mjsunit/compiler/deopt-accessors5.js deleted file mode 100644 index bf71585e253..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors5.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; - -function f(v) { - %DeoptimizeFunction(test); - return 153; -} - -function test() { - var o = {}; - o.__defineSetter__('q', f); - assertEquals(1, o.q = 1); -} - -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors6.js b/implementation-contributed/v8/mjsunit/compiler/deopt-accessors6.js deleted file mode 100644 index 784123ae6c2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors6.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; - -function f(v) { - %DeoptimizeFunction(test); - return 153; -} - -function test() { - var o = {}; - var q = "q"; - o.__defineSetter__(q, f); - assertEquals(1, o[q] = 1); -} - -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors7.js b/implementation-contributed/v8/mjsunit/compiler/deopt-accessors7.js deleted file mode 100644 index 8c7d7a1e3cd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-accessors7.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {v:1}; -var deopt = false; -Object.defineProperty(o, "x", { - get: function() { - if (deopt) %DeoptimizeFunction(foo); - return 1; - } -}); - -function bar(x, y, z) { - return x + z; -} - -function foo(o, x) { - return bar(1, (o[x], 2), 3); -} - -assertEquals(4, foo(o, "v")); -assertEquals(4, foo(o, "v")); -assertEquals(4, foo(o, "x")); -assertEquals(4, foo(o, "x")); -%OptimizeFunctionOnNextCall(foo); -deopt = true; -assertEquals(4, foo(o, "x")); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-args.js b/implementation-contributed/v8/mjsunit/compiler/deopt-args.js deleted file mode 100644 index 17c397c1525..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-args.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function g(x) { - return x.f(0,1,2); -} - -function f(a,b,c) { - return 42; -} - -var object = { }; -object.f = f; -for (var i = 0; i < 5; i++) { - assertEquals(42, g(object)); -} -%OptimizeFunctionOnNextCall(g); -g(object); - -object.f = function(a,b,c) { return 87; }; -assertEquals(87, g(object)); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-builtins.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-builtins.js deleted file mode 100644 index b737b17ed08..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-builtins.js +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test MapCheck behavior */ - -(function testForEachMapCheck() { - function f(v,n,o) { - Object.freeze(o); - } - function g() { - [1,2,3].forEach(f); - } - g(); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertOptimized(g); -})(); - - -(function testFindMapCheck() { - function f(v,n,o) { - Object.freeze(o); - return false; - } - function g() { - [1,2,3].find(f); - } - g(); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertOptimized(g); -})(); - -(function testMapMapCheck() { - function f(v,n,o) { - Object.freeze(o); - return false; - } - function g() { - [1,2,3].map(f); - } - g(); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertOptimized(g); -})(); - -(function testFilterMapCheck() { - function f(v,n,o) { - Object.freeze(o); - return true; - } - function g() { - [1,2,3].filter(f); - } - g(); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertOptimized(g); -})(); - - -/* Test CheckBounds behavior */ - -(function testForEachCheckBounds() { - function f(v,n,o) { - o.length=2; - } - function g() { - [1,2,3].forEach(f); - } - g(); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertOptimized(g); -})(); - - -(function testFindCheckBounds() { - function f(v,n,o) { - o.length=2; - return false; - } - function g() { - [1,2,3].find(f); - } - g(); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertOptimized(g); -})(); - -(function testMapCheckBounds() { - function f(v,n,o) { - o.length=2; - return false; - } - function g() { - [1,2,3].map(f); - } - g(); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - assertOptimized(g); -})(); - -(function testFilterCheckBounds() { - function f(v,n,o) { - o.length = 2; - return true; - } - function g() { - [1,2,3].filter(f); - } - g(); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - g(); - %OptimizeFunctionOnNextCall(g); - g(); - g(); - assertOptimized(g); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-iterator-prototype-next.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-iterator-prototype-next.js deleted file mode 100644 index b75f3185ac8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-iterator-prototype-next.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -(function () { - var array = [,]; - - function next() { - return array[Symbol.iterator]().next(); - } - - assertEquals(next().value, undefined); - assertEquals(next().value, undefined); - - %OptimizeFunctionOnNextCall(next); - assertEquals(next().value, undefined); - - array.__proto__.push(5); - assertEquals(next().value, 5); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-every.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-every.js deleted file mode 100644 index 0ebf126fa6c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-every.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// every - -(function () { - var array = [,]; - - function every() { - return array.every(v => v > 0); - } - - every(); every(); - - %OptimizeFunctionOnNextCall(every); - assertEquals(every(), true); - - array.__proto__.push(-6); - //deopt - assertEquals(every(), false); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-filter.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-filter.js deleted file mode 100644 index fcae939eb8d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-filter.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// filter - -(function () { - var array = [,]; - - function filter() { - return array.filter(v => v > 0); - } - - filter(); filter(); - - %OptimizeFunctionOnNextCall(filter); - assertEquals(filter(), []); - - array.__proto__.push(6); - // deopt - var narr = filter(); - assertNotEquals(Object.getOwnPropertyDescriptor(narr, 0), undefined); - assertEquals(narr, [6]); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-find.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-find.js deleted file mode 100644 index e8b5b9bd1b9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-find.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// find - -(function () { - var array = [,]; - - function find() { - return array.find(v => v > 0); - } - - find(); find(); - - %OptimizeFunctionOnNextCall(find); - assertEquals(find(), undefined); - - array.__proto__.push(6); - // deopt - assertEquals(find(), 6); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-findindex.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-findindex.js deleted file mode 100644 index 37866a4506c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-findindex.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// findIndex - -(function () { - var array = [,]; - - function findIndex() { - return array.findIndex(v => v > 0); - } - - findIndex(); findIndex(); - - %OptimizeFunctionOnNextCall(findIndex); - assertEquals(findIndex(), -1); - - array.__proto__.push(6); - // deopt - assertEquals(findIndex(), 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-foreach.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-foreach.js deleted file mode 100644 index 6db9078e1b9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-foreach.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// forEach - -(function () { - var array = [,]; - - function increment (v, k, arr) { arr[k] = v + 1; } - function forEach() { - array.forEach(increment); - } - forEach(); forEach(); - - %OptimizeFunctionOnNextCall(forEach); - - forEach(); - assertEquals(array, [,]); - - array.__proto__.push(5); - assertEquals(Object.getOwnPropertyDescriptor(array, 0), undefined); - // deopt - forEach(); - assertNotEquals(Object.getOwnPropertyDescriptor(array, 0), undefined); - assertEquals(array[0], 6); // this reads from the prototype -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-includes.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-includes.js deleted file mode 100644 index 77aedfe1e62..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-includes.js +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// includes - -(function() { - const iarr = [0,1,2]; - const darr = [0.0, 2.0, 3.3]; - - function includes(arr, val) { - return arr.includes(val); - } - - assertTrue(includes(iarr, 0)); assertTrue(includes(darr, 0)); - assertTrue(includes(iarr, 2)); assertTrue(includes(darr, 2)); - - // JSCallReducer for includes not reduce because it only works with single map - %OptimizeFunctionOnNextCall(includes); - - assertTrue(includes(iarr, 0)); - assertTrue(includes(darr, 0)); -})(); - -(function() { - const iarr = [0,1,2]; - - function includes(arr, val) { - return arr.includes(val); - } - - assertTrue(includes(iarr, 0)); - assertTrue(includes(iarr, 2)); - - %OptimizeFunctionOnNextCall(includes); - - assertTrue(includes(iarr, 0)); - - const darr = [0.0, 2.0, 3.3]; - // deopt because of map change - assertTrue(includes(darr, 0)); -})(); - -(function() { - const iarr = [,3]; - - function includes(arr, val) { - return arr.includes(val); - } - - iarr.__proto__ = [2]; - - // get feedback - assertFalse(includes(iarr, 0)); - assertTrue(includes(iarr, 2)); - - %OptimizeFunctionOnNextCall(includes); - - assertFalse(includes(iarr, 0)); - - assertTrue(includes(iarr, 2)); -})(); - -(function() { - const iarr = [,3]; - - function includes(arr, val) { - return arr.includes(val); - } - - assertFalse(includes(iarr, 2)); - assertTrue(includes(iarr, 3)); - - %OptimizeFunctionOnNextCall(includes); - assertFalse(includes(iarr, 2)); - - // deopt because of map change - iarr.__proto__ = [2]; - assertTrue(includes(iarr, 2)); -})(); - -// This pollutes the Array prototype, so we should not run more tests -// in the same environment after this. -(function () { - var array = [,]; - - function includes(val) { - return array.includes(val); - } - - includes(6); includes(6); - - %OptimizeFunctionOnNextCall(includes); - assertFalse(includes(6)); - - array.__proto__.push(6); - // deopt because of no_elements_protector - assertTrue(includes(6)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-indexof.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-indexof.js deleted file mode 100644 index 78cf60507c7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-indexof.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// indexOf - -(function() { - const iarr = [0,1,2]; - const darr = [0.0, 2.0, 3.3]; - - function indexOf(arr, val) { - return arr.indexOf(val); - } - - assertEquals(0, indexOf(iarr, 0)); - assertEquals(0, indexOf(darr, 0)); - assertEquals(2, indexOf(iarr, 2)); - assertEquals(1, indexOf(darr, 2)); - - // JSCallReducer for indexOf will not reduce - // because it only works with single map - %OptimizeFunctionOnNextCall(indexOf); - - assertEquals(0, indexOf(iarr, 0)); - assertEquals(0, indexOf(darr, 0)); -})(); - -(function() { - const iarr = [0,1,2]; - - function indexOf(arr, val) { - return arr.indexOf(val); - } - - assertEquals(0, indexOf(iarr, 0)); - assertEquals(2, indexOf(iarr, 2)); - - %OptimizeFunctionOnNextCall(indexOf); - - assertEquals(0, indexOf(iarr, 0)); - - const darr = [0.0, 2.0, 3.3]; - // deopt because of map change - assertEquals(0, indexOf(darr, 0)); -})(); - -(function() { - const iarr = [,3]; - - function indexOf(arr, val) { - return arr.indexOf(val); - } - - iarr.__proto__ = [2]; - assertEquals(-1, indexOf(iarr, 0)); - assertEquals(0, indexOf(iarr, 2)); - - %OptimizeFunctionOnNextCall(indexOf); - - assertEquals(-1, indexOf(iarr, 0)); - - assertEquals(0, indexOf(iarr, 2)); -})(); - -(function() { - const iarr = [,3]; - - function indexOf(arr, val) { - return arr.indexOf(val); - } - - assertEquals(-1, indexOf(iarr, 2)); - assertEquals(1, indexOf(iarr, 3)); - - %OptimizeFunctionOnNextCall(indexOf); - assertEquals(-1, indexOf(iarr, 2)); - - // deopt because of map change - iarr.__proto__ = [2]; - assertEquals(0, indexOf(iarr, 2)); -})(); - -// This pollutes the Array prototype, so we should not run more tests -// in the same environment after this. -(function () { - var array = [,]; - - function indexOf(val) { - return array.indexOf(val); - } - - indexOf(6); indexOf(6); - - %OptimizeFunctionOnNextCall(indexOf); - assertEquals(indexOf(6), -1); - - array.__proto__.push(6); - // deopt because of no_elements_protector - assertEquals(indexOf(6), 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-lastindexof.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-lastindexof.js deleted file mode 100644 index d47926cd3d8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-lastindexof.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// lastIndexOf - -(function () { - var array = [,]; - - function lastIndexOf(val) { - return array.lastIndexOf(val); - } - - lastIndexOf(6); lastIndexOf(6); - - %OptimizeFunctionOnNextCall(lastIndexOf); - assertEquals(lastIndexOf(6), -1); - - array.__proto__.push(6); - // deopt - assertEquals(lastIndexOf(6), 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-map.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-map.js deleted file mode 100644 index 29c7d321745..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-map.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// map - -(function () { - var array = [,]; - - function map() { - return array.map(x => x + 1); - } - - map(); map(); - - %OptimizeFunctionOnNextCall(map); - - assertEquals(map(), [,]); - - array.__proto__.push(5); - // deopt - var narr = map(); - assertNotEquals(Object.getOwnPropertyDescriptor(narr, 0), undefined); - assertEquals(narr[0], 6); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-pop.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-pop.js deleted file mode 100644 index 6d0fe068e44..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-pop.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test behaviors when the prototype has elements */ - -// pop - -(function () { - var array = [, , , ,]; - - function pop() { - return array.pop(); - } - - assertEquals(pop(), undefined); - assertEquals(pop(), undefined); - - %OptimizeFunctionOnNextCall(pop); - assertEquals(pop(), undefined); - - array.__proto__.push(6); - assertEquals(pop(), 6); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-reduce.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-reduce.js deleted file mode 100644 index d2ba0db0f81..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-reduce.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// reduce - -(function () { - var array = [, 3]; - - function accumulate (prev, cur, curIdx, arr) { arr[curIdx] = cur + prev; } - function reduce() { - array.reduce(accumulate); - } - - reduce(); reduce(); - - %OptimizeFunctionOnNextCall(reduce); - - reduce(); - assertEquals(array, [,3]); - - array.__proto__.push(3); - // deopt - reduce(); - assertEquals(array, [, 6]); - assertEquals(Object.getOwnPropertyDescriptor(array, 0), undefined); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-slice.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-slice.js deleted file mode 100644 index 6b2d5fa22d9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-slice.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// slice - -(function () { - var array = [,]; - - function slice() { - return array.slice(); - } - - slice(); slice(); - - %OptimizeFunctionOnNextCall(slice); - - assertEquals(slice(), [,]); - - array.__proto__.push(5); - // deopt - var narr = slice(); - assertNotEquals(Object.getOwnPropertyDescriptor(narr, 0), undefined); - assertEquals(narr[0], 5); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-some.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-some.js deleted file mode 100644 index d9604d0c764..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-prototype-some.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -/* Test deopt behaviors when the prototype has elements */ - -// some - -(function () { - var array = [,]; - - function some() { - return array.some(v => v > 0); - } - - some(); some(); - - %OptimizeFunctionOnNextCall(some); - assertEquals(some(), false); - - array.__proto__.push(6); - //deopt - assertEquals(some(), true); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-array-push.js b/implementation-contributed/v8/mjsunit/compiler/deopt-array-push.js deleted file mode 100644 index e34d99a325a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-array-push.js +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -(function test() { - function foo(a) { a.push(a.length = 2); } - - foo([1]); - foo([1]); - %OptimizeFunctionOnNextCall(foo); - foo([1]); - %OptimizeFunctionOnNextCall(foo); - foo([1]); - assertOptimized(foo); -})(); - -(function testElementTypeCheckSmi() { - function foo(a) { a.push('a'); } - - foo([1]); - foo([1]); - %OptimizeFunctionOnNextCall(foo); - foo([1]); - %OptimizeFunctionOnNextCall(foo); - foo([1]); - assertOptimized(foo); -})(); - -(function testElementTypeCheckDouble() { - function foo(a) { a.push('a'); } - - foo([0.3413312]); - foo([0.3413312]); - %OptimizeFunctionOnNextCall(foo); - foo([0.3413312]); - %OptimizeFunctionOnNextCall(foo); - foo([0.3413312]); - assertOptimized(foo); -})(); -(function test() { - function bar(a) { a.x = 2 }; - %NeverOptimizeFunction(bar); - function foo(a) { a.push(bar(a)); } - - foo(["1"]); - foo(["1"]); - %OptimizeFunctionOnNextCall(foo); - foo(["1"]); - %OptimizeFunctionOnNextCall(foo); - foo(["1"]); - assertOptimized(foo); -})(); - -(function test() { - function foo(a) { a.push(a.length = 2); } - - foo([0.34234]); - foo([0.34234]); - %OptimizeFunctionOnNextCall(foo); - foo([0.34234]); - %OptimizeFunctionOnNextCall(foo); - foo([0.34234]); - assertOptimized(foo); -})(); - -(function test() { - const N = 128 * 1024; - - function foo(a) { a.push(1); } - - foo(new Array(N)); - foo(new Array(N)); - %OptimizeFunctionOnNextCall(foo); - foo(new Array(N)); - %OptimizeFunctionOnNextCall(foo); - foo(new Array(N)); - assertOptimized(foo); -})(); - -(function test() { - function mkArray() { - const N = 128 * 1024; - let a = [0.1]; - a.length = N; - return a; - } - function foo(a) { a.push(0.23441233123); } - foo(mkArray()); - foo(mkArray()); - %OptimizeFunctionOnNextCall(foo); - foo(mkArray()); - %OptimizeFunctionOnNextCall(foo); - foo(mkArray()); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-bool.js b/implementation-contributed/v8/mjsunit/compiler/deopt-bool.js deleted file mode 100644 index 13a4a970344..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-bool.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a, b) { - var passed = a == 3; - if (passed) { - if (passed) { - passed = b == 4; - } - } - %DeoptimizeFunction(foo); - return passed; -} - -assertTrue(foo(3, 4)); -assertTrue(foo(3, 4)); -assertFalse(foo(3.1, 4)); -assertFalse(foo(3, 4.1)); - -%OptimizeFunctionOnNextCall(foo); - -assertTrue(foo(3, 4)); -assertTrue(foo(3, 4)); -assertFalse(foo(3.1, 4)); -assertFalse(foo(3, 4.1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-bool2.js b/implementation-contributed/v8/mjsunit/compiler/deopt-bool2.js deleted file mode 100644 index 4d1c41e3235..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-bool2.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(expected, x) { - var passed = expected.length == x.length; - for (var i = 0; i < expected.length; i++) { - if (passed) - passed = expected[i] == x[i]; - } - print("a"); - print(passed); - - %DeoptimizeFunction(foo); - - print("b"); - print(passed); - return passed; -} - -assertTrue(foo([0,1], [0,1])); -assertTrue(foo([0,2], [0,2])); -assertFalse(foo([0,2.25], [0,2.75])); - -%OptimizeFunctionOnNextCall(foo); - -assertTrue(foo([0,1], [0,1])); -assertTrue(foo([0,2], [0,2])); -assertFalse(foo([0,2.25], [0,2.75])); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-closure.js b/implementation-contributed/v8/mjsunit/compiler/deopt-closure.js deleted file mode 100644 index 2ce531faf0e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-closure.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestMaterializeTargetOfInterpretedFrame() { - function f(x) { - function g() { - %_DeoptimizeNow(); - return x + 1; - } - return g(); - } - assertEquals(24, f(23)); - assertEquals(43, f(42)); - %OptimizeFunctionOnNextCall(f); - assertEquals(66, f(65)); -})(); - -(function TestMaterializeTargetOfArgumentsAdaptorFrame() { - function f(x) { - function g(a, b, c) { - %_DeoptimizeNow(); - return x + 1; - } - return g(); - } - assertEquals(24, f(23)); - assertEquals(43, f(42)); - %OptimizeFunctionOnNextCall(f); - assertEquals(66, f(65)); -})(); - -(function TestMaterializeTargetOfConstructStubFrame() { - function f(x) { - function g() { - %_DeoptimizeNow(); - this.val = x + 1; - } - return new g(); - } - assertEquals({ val: 24 }, f(23)); - assertEquals({ val: 43 }, f(42)); - %OptimizeFunctionOnNextCall(f); - assertEquals({ val: 66 }, f(65)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-during-eval-lookup.js b/implementation-contributed/v8/mjsunit/compiler/deopt-during-eval-lookup.js deleted file mode 100644 index 1df04bbad8a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-during-eval-lookup.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function g() { - return 100; -} - -function getter() { - // Test that we can deopt during the CallRuntimeForPair call to LoadLookupSlot - %DeoptimizeFunction(f); - return g; -} - -Object.defineProperty(this, "eval", {get: getter }); - -function f() { - return eval("200"); -} - -%OptimizeFunctionOnNextCall(f); -assertEquals(100, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-eager-and-lazy.js b/implementation-contributed/v8/mjsunit/compiler/deopt-eager-and-lazy.js deleted file mode 100644 index daea40a950e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-eager-and-lazy.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - - -function f() { - %DeoptimizeFunction(g); -} -%NeverOptimizeFunction(f); - -function g(o) { - f(); - return h(o); -} - -function h(o) { - return o.x; -} - -g({x : 1}); -g({x : 2}); -%OptimizeFunctionOnNextCall(g); -%OptimizeFunctionOnNextCall(h); -g({x : 3}); -g({y : 1, x : 3}); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-eager-var-mutation-ite.js b/implementation-contributed/v8/mjsunit/compiler/deopt-eager-var-mutation-ite.js deleted file mode 100644 index 17ce86ff4a5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-eager-var-mutation-ite.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -var foo = { x : 0, y : 1 } - -function f(b) { - h(b); - return foo.x; -} - -function h(b) { - g(b); - return foo.x; -} - -function g(b) { - if (b) { - foo = { x : 536 }; - } // It should trigger an eager deoptimization when b=true. -} - -f(false); f(false); -%OptimizeFunctionOnNextCall(f); -f(false); -assertEquals(f(true), 536); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-eager-with-freeze.js b/implementation-contributed/v8/mjsunit/compiler/deopt-eager-with-freeze.js deleted file mode 100644 index 538176d2e8d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-eager-with-freeze.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -function useObject(obj) { - if (!Object.isFrozen(obj)) { - var t = obj.f; - obj.f = t * 2; - } - return obj.f; -} - -var o = {f: 1, g: 2} -assertEquals(useObject(o), 2); -assertEquals(useObject(o), 4); -%OptimizeFunctionOnNextCall(useObject); -Object.freeze(o); -assertEquals(useObject(o), 4); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-followed-by-gc.js b/implementation-contributed/v8/mjsunit/compiler/deopt-followed-by-gc.js deleted file mode 100644 index a5ea622dfca..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-followed-by-gc.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax --expose-gc - -// Testing GC after setting the pc on the stack. -// There must be a safepoint for the trampoline. - -function opt_me() { - deopt(); -} - -function deopt() { - %DeoptimizeFunction(opt_me); - gc(); -} -%NeverOptimizeFunction(deopt); - -opt_me(); -opt_me(); -%OptimizeFunctionOnNextCall(opt_me); -opt_me(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-inlined-from-call.js b/implementation-contributed/v8/mjsunit/compiler/deopt-inlined-from-call.js deleted file mode 100644 index 8fa8af5a9be..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-inlined-from-call.js +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -var global = this; - -Array.prototype.f = function() { - return 0; -}; - -(function() { - var called = 0; - - function g(x, y, called) { - return called + 1; - } - - function f(deopt, called) { - return g([].f.call({}), deopt + 1, called); - } - - called = f(0, called); - called = f(0, called); - %OptimizeFunctionOnNextCall(f); - called = f(0, called); - assertOptimized(f); - called = f({}, called); - assertUnoptimized(f); - assertEquals(4, called); -})(); - -(function() { - // The array built-ins are only inlined if the receiver is a - // HConstant, this seems to require a *unique* global identifier - // each time. - global.a1 = [1,2,3,4]; - var obj = {value: 3}; - - function f(b) { - return [].pop.call(a1) + b.value; - } - - assertEquals(7, f(obj)); - assertEquals(6, f(obj)); - %OptimizeFunctionOnNextCall(f); - assertEquals(5, f(obj)); - assertOptimized(f); - assertEquals(4, f({d: 0, value: 3})); - assertUnoptimized(f); - assertEquals(0, a1.length); -})(); - - -(function() { - global.a2 = [1,2,3,4]; - var obj = {value: 3}; - - function f(b) { - return [].shift.call(a2) + b.value; - } - - assertEquals(4, f(obj)); - assertEquals(5, f(obj)); - %OptimizeFunctionOnNextCall(f); - assertEquals(6, f(obj)); - assertOptimized(f); - assertEquals(7, f({d: 0, value: 3})); - assertUnoptimized(f); - assertEquals(0, a2.length); -})(); - -(function() { - global.a3 = [1,2,3,4]; - var obj = {value: 3}; - - function f(b) { - return [].push.call(a3, b.value); - } - - assertEquals(5, f(obj)); - assertEquals(6, f(obj)); - %OptimizeFunctionOnNextCall(f); - assertEquals(7, f(obj)); - assertOptimized(f); - assertEquals(8, f({d: 0, value: 3})); - assertUnoptimized(f); - assertEquals(8, a3.length); - assertEquals(3, a3[7]); -})(); - -(function() { - global.a4 = [1,2,3,4]; - var obj = {value: 3}; - - function f(b) { - return [].indexOf.call(a4, b.value); - } - - f(obj); - f(obj); - %OptimizeFunctionOnNextCall(f); - var index1 = f(obj); - assertOptimized(f); - var index2 = f({d: 0, value: 3}); - assertUnoptimized(f); - - assertEquals(2, index1); - assertEquals(index1, index2); -})(); - -(function() { - global.a5 = [1,2,3,4]; - var obj = {value: 3}; - - function f(b) { - return [].lastIndexOf.call(a5, b.value); - } - - f(obj); - f(obj); - %OptimizeFunctionOnNextCall(f); - var index1 = f(obj); - assertOptimized(f); - var index2 = f({d: 0, value: 3}); - assertUnoptimized(f); - - assertEquals(2, index1); - assertEquals(index1, index2); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-inlined-smi.js b/implementation-contributed/v8/mjsunit/compiler/deopt-inlined-smi.js deleted file mode 100644 index 9c0dc99bcb1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-inlined-smi.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --always-opt - -// Test deoptimization into inlined smi code. - -function f(x) { - return ~x; -} - -f(42); -assertEquals(~12, f(12.45)); -assertEquals(~42, f(42.87)); - - -var a = 1, b = 2, c = 4, d = 8; -function g() { - return a | (b | (c | d)); -} - -g(); -c = "16"; -assertEquals(1 | 2 | 16 | 8, g()); - - -function h() { - return 1 | a; -} -a = "2"; -h(); -assertEquals(3, h()); - - -function k() { - return a | 1; -} -a = "4"; -k(); -assertEquals(5, k()); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-lazy-freeze.js b/implementation-contributed/v8/mjsunit/compiler/deopt-lazy-freeze.js deleted file mode 100644 index 592fca8ad20..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-lazy-freeze.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -var b = false; -var obj = {f: 1, g: 2}; - -function setMutability() { - if (b) Object.freeze(obj); -} -%NeverOptimizeFunction(setMutability); - -function setAndUseObject() { - setMutability(obj); - if (!Object.isFrozen(obj)) { - var t = obj.f; - obj.f = t * 2; - } - return obj.f; -} - -assertEquals(setAndUseObject(), 2); -assertEquals(setAndUseObject(), 4); -%OptimizeFunctionOnNextCall(setAndUseObject); -b = true; -assertEquals(setAndUseObject(), 4); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-lazy-shape-mutation.js b/implementation-contributed/v8/mjsunit/compiler/deopt-lazy-shape-mutation.js deleted file mode 100644 index df4878e9cfb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-lazy-shape-mutation.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -var b = false; - -function change_o() { - if (b) o = { y : 1, x : 0}; -} -%NeverOptimizeFunction(change_o); - -var o = { x : 1 }; -function f() { - change_o(); - return o.x; -} - -f(); f(); -%OptimizeFunctionOnNextCall(f); -b = true; -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-lazy-var-mutation.js b/implementation-contributed/v8/mjsunit/compiler/deopt-lazy-var-mutation.js deleted file mode 100644 index 93886f2ad79..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-lazy-var-mutation.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -var x = 1; -var y = 1; - -function g(a) { - x = a; - y = a; -} -%NeverOptimizeFunction(g); - -function foo(a) { - g(a); - return x + y; -} - -var o = 1; -assertEquals(foo(o), 2); -assertEquals(foo(o), 2); -%OptimizeFunctionOnNextCall(foo); -o = 2; -assertEquals(foo(o), 4); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-many-lazy.js b/implementation-contributed/v8/mjsunit/compiler/deopt-many-lazy.js deleted file mode 100644 index e8a0b04419d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-many-lazy.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - - -// It optimizes and lazily deoptimizes 2 functions several times. - -function f() { - g(); -} - -function g() { - %DeoptimizeFunction(f); -} - -function a() { - b(); -} - -function b() { - %DeoptimizeFunction(a); -} - -f(); f(); -a(); a(); -for(var i = 0; i < 5; i++) { - %OptimizeFunctionOnNextCall(f); - %OptimizeFunctionOnNextCall(a); - f(); - a(); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-materialize-accumulator.js b/implementation-contributed/v8/mjsunit/compiler/deopt-materialize-accumulator.js deleted file mode 100644 index 0b19df8a1cf..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-materialize-accumulator.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// -// Tests that Turbofan correctly materializes values which are in the -// interpreters accumulator during deopt. - -var global = 3; -function f(a) { - // This will trigger a deopt since global was previously a SMI, with the - // accumulator holding an unboxed double which needs materialized. - global = Math.sqrt(a); -} -%OptimizeFunctionOnNextCall(f); -f(0.25); -assertEquals(0.5, global); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-now-lazy.js b/implementation-contributed/v8/mjsunit/compiler/deopt-now-lazy.js deleted file mode 100644 index 6a86bcaf4de..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-now-lazy.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -function f() { - %DeoptimizeNow(); -} - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-numberoroddball-binop.js b/implementation-contributed/v8/mjsunit/compiler/deopt-numberoroddball-binop.js deleted file mode 100644 index 6f19d45bb86..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-numberoroddball-binop.js +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -(function() { - function foo(x, y) { return x << y; } - - foo(1.1, 0.1); - foo(0.1, 1.1); - foo(true, false); - %OptimizeFunctionOnNextCall(foo); - foo(undefined, 1.1); - assertOptimized(foo); - foo(1.1, undefined); - assertOptimized(foo); - foo(null, 1.1); - assertOptimized(foo); - foo(1.1, null); - assertOptimized(foo); - foo(true, 1.1); - assertOptimized(foo); - foo(1.1, true); - assertOptimized(foo); - foo(false, 1.1); - assertOptimized(foo); - foo(1.1, false); - assertOptimized(foo); -})(); - -(function() { - function foo(x, y) { return x >> y; } - - foo(1.1, 0.1); - foo(0.1, 1.1); - foo(true, false); - %OptimizeFunctionOnNextCall(foo); - foo(undefined, 1.1); - assertOptimized(foo); - foo(1.1, undefined); - assertOptimized(foo); - foo(null, 1.1); - assertOptimized(foo); - foo(1.1, null); - assertOptimized(foo); - foo(true, 1.1); - assertOptimized(foo); - foo(1.1, true); - assertOptimized(foo); - foo(false, 1.1); - assertOptimized(foo); - foo(1.1, false); - assertOptimized(foo); -})(); - -(function() { - function foo(x, y) { return x >>> y; } - - foo(1.1, 0.1); - foo(0.1, 1.1); - foo(true, false); - %OptimizeFunctionOnNextCall(foo); - foo(undefined, 1.1); - assertOptimized(foo); - foo(1.1, undefined); - assertOptimized(foo); - foo(null, 1.1); - assertOptimized(foo); - foo(1.1, null); - assertOptimized(foo); - foo(true, 1.1); - assertOptimized(foo); - foo(1.1, true); - assertOptimized(foo); - foo(false, 1.1); - assertOptimized(foo); - foo(1.1, false); - assertOptimized(foo); -})(); - -(function() { - function foo(x, y) { return x ^ y; } - - foo(1.1, 0.1); - foo(0.1, 1.1); - foo(true, false); - %OptimizeFunctionOnNextCall(foo); - foo(undefined, 1.1); - assertOptimized(foo); - foo(1.1, undefined); - assertOptimized(foo); - foo(null, 1.1); - assertOptimized(foo); - foo(1.1, null); - assertOptimized(foo); - foo(true, 1.1); - assertOptimized(foo); - foo(1.1, true); - assertOptimized(foo); - foo(false, 1.1); - assertOptimized(foo); - foo(1.1, false); - assertOptimized(foo); -})(); - -(function() { - function foo(x, y) { return x | y; } - - foo(1.1, 0.1); - foo(0.1, 1.1); - foo(true, false); - %OptimizeFunctionOnNextCall(foo); - foo(undefined, 1.1); - assertOptimized(foo); - foo(1.1, undefined); - assertOptimized(foo); - foo(null, 1.1); - assertOptimized(foo); - foo(1.1, null); - assertOptimized(foo); - foo(true, 1.1); - assertOptimized(foo); - foo(1.1, true); - assertOptimized(foo); - foo(false, 1.1); - assertOptimized(foo); - foo(1.1, false); - assertOptimized(foo); -})(); - -(function() { - function foo(x, y) { return x & y; } - - foo(1.1, 0.1); - foo(0.1, 1.1); - foo(true, false); - %OptimizeFunctionOnNextCall(foo); - foo(undefined, 1.1); - assertOptimized(foo); - foo(1.1, undefined); - assertOptimized(foo); - foo(null, 1.1); - assertOptimized(foo); - foo(1.1, null); - assertOptimized(foo); - foo(true, 1.1); - assertOptimized(foo); - foo(1.1, true); - assertOptimized(foo); - foo(false, 1.1); - assertOptimized(foo); - foo(1.1, false); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-simple-eager.js b/implementation-contributed/v8/mjsunit/compiler/deopt-simple-eager.js deleted file mode 100644 index 9928647c8a9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-simple-eager.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -// Simple eager deoptimization test. - -function f(o) { - return o.x; -} - -assertEquals(f({x : 2}), 2); -assertEquals(f({x : 2}), 2); -%OptimizeFunctionOnNextCall(f); -assertEquals(f({x : 2}), 2); -assertEquals(f({y : 1, x : 3}), 3); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-simple-lazy.js b/implementation-contributed/v8/mjsunit/compiler/deopt-simple-lazy.js deleted file mode 100644 index e3721a3159e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-simple-lazy.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -// Simple lazy deoptimization test. - -function f() { - g(); -} - -function g() { - %DeoptimizeFunction(f); -} - -f(); f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-simple-try-catch.js b/implementation-contributed/v8/mjsunit/compiler/deopt-simple-try-catch.js deleted file mode 100644 index b0e382e38cb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-simple-try-catch.js +++ /dev/null @@ -1,28 +0,0 @@ - -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -// Small program to test deoptimization with exception handling. - -function g() { - %DeoptimizeFunction(f); - throw 42; -} -%NeverOptimizeFunction(g); - -function f() { - var a = 1; - try { - g(); - } catch (e) { - return e + a; - } -} - -assertEquals(f(), 43); -assertEquals(f(), 43); -%OptimizeFunctionOnNextCall(f); -assertEquals(f(), 43); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-soft-simple.js b/implementation-contributed/v8/mjsunit/compiler/deopt-soft-simple.js deleted file mode 100644 index eaa1e3c6950..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-soft-simple.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - - -function change_o() { - o = { y : 0, x : 1 }; -} - -var o = { x : 1 }; - -function f() { - // It triggers a soft deoptimization. - change_o(); - return o.x; -} - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-string-outofbounds.js b/implementation-contributed/v8/mjsunit/compiler/deopt-string-outofbounds.js deleted file mode 100644 index e5ec075aa90..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-string-outofbounds.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -var s = "12345"; - -(function() { - function foo() { return s[5]; } - - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); - assertOptimized(foo); -})(); - -(function() { - function foo(i) { return s[i]; } - - foo(0); - foo(1); - %OptimizeFunctionOnNextCall(foo); - foo(5); - %OptimizeFunctionOnNextCall(foo); - foo(5); - assertOptimized(foo); -})(); - -(function() { - function foo(s) { return s[5]; } - - foo(s); - foo(s); - %OptimizeFunctionOnNextCall(foo); - foo(s); - %OptimizeFunctionOnNextCall(foo); - foo(s); - assertOptimized(foo); -})(); - -(function() { - function foo(s, i) { return s[i]; } - - foo(s, 0); - foo(s, 1); - %OptimizeFunctionOnNextCall(foo); - foo(s, 5); - %OptimizeFunctionOnNextCall(foo); - foo(s, 5); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-binop.js b/implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-binop.js deleted file mode 100644 index c93ef9dfd5a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-binop.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -// -var f = (function() { - "use asm"; - function f(x, y) { - return x - y; - } - return f; -})(); - -var counter = 0; - -var deopt = { toString : function() { - %DeoptimizeFunction(f); - counter++; - return "2"; -} }; - -var o = { toString : function() { - counter++; - return "1"; -} }; - -counter = 0; -assertEquals(1, f(deopt, o)); -assertEquals(2, counter); - -%OptimizeFunctionOnNextCall(f); -counter = 0; -assertEquals(-1, f(o, deopt)); -assertEquals(2, counter); - -%OptimizeFunctionOnNextCall(f); -counter = 0; -assertEquals(0, f(deopt, deopt)); -assertEquals(2, counter); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-compare.js b/implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-compare.js deleted file mode 100644 index 9a7e992ada2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-compare.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var m = (function() { - "use asm"; - function f(x) { - return x < 0; - } - function g(x) { - return 0 < x; - } - return { f: f, g: g }; -})(); -var f = m.f; -var g = m.g; - -var counter = 0; - -function deopt(f) { - return { - toString : function() { - %DeoptimizeFunction(f); - counter++; - return "2"; - } - }; -} - -assertEquals(false, f(deopt(f))); -assertEquals(1, counter); - -assertEquals(true, g(deopt(g))); -assertEquals(2, counter); - -%OptimizeFunctionOnNextCall(f); -assertEquals(false, f(deopt(f))); -assertEquals(3, counter); - -%OptimizeFunctionOnNextCall(g); -assertEquals(true, g(deopt(g))); -assertEquals(4, counter); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-shift.js b/implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-shift.js deleted file mode 100644 index bb4d1d5c1cd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-tonumber-shift.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var f = (function() { - "use asm"; - function f(x, y) { - return x << y; - } - return f; -})(); - -var counter = 0; - -var deopt = { toString : function() { - %DeoptimizeFunction(f); - counter++; - return "2"; -} }; - -var o = { toString : function() { - counter++; - return "1"; -} }; - -counter = 0; -assertEquals(4, f(deopt, o)); -assertEquals(2, counter); - -%OptimizeFunctionOnNextCall(f); -counter = 0; -assertEquals(4, f(o, deopt)); -assertEquals(2, counter); - -%OptimizeFunctionOnNextCall(f); -counter = 0; -assertEquals(8, f(deopt, deopt)); -assertEquals(2, counter); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-twice-on-call.js b/implementation-contributed/v8/mjsunit/compiler/deopt-twice-on-call.js deleted file mode 100644 index f30b7d0afff..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-twice-on-call.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -function f() { - g(); - h(); -} - -function g() { - %DeoptimizeFunction(f); -} - -function h() { - %DeoptimizeFunction(f); -} - -f(); f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deopt-twice.js b/implementation-contributed/v8/mjsunit/compiler/deopt-twice.js deleted file mode 100644 index 1ec9c9fab8b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deopt-twice.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file - -// Flags: --allow-natives-syntax - -function f() { - g(); -} - -function g() { - %DeoptimizeFunction(f); - %DeoptimizeFunction(f); -} - -f(); f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/deoptimize-lazy-weak.js b/implementation-contributed/v8/mjsunit/compiler/deoptimize-lazy-weak.js deleted file mode 100644 index c7740890988..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/deoptimize-lazy-weak.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --allow-natives-syntax --verify-heap - -var o = { f : 0 }; - -var shouldDeopt = true; - -// This tests a scenario where a function has an embedded object reference, -// the function is lazy-deoptimized, the object is then collected, but the -// code object keeps the dangling pointer. - -function deopt() { - if (shouldDeopt) { - // Change the global object. This deoptimizes function f because - // it optimistically embedded the reference to o as a constant. - o = { f : 2 }; - // Collect the original object o; at this point, f should invalidate - // its invalid reference to the original object. - gc(); - } -} - -// Forwarding function to make sure that function f is not the topomost -// optimized frame (GC treats reference from topmost optimized code strongly). -function dummy_opt() { deopt(); } -function dummy() { dummy_opt(); } -%NeverOptimizeFunction(deopt); -%NeverOptimizeFunction(dummy); - -// When optimized, the function f embeds the constant reference -// to the original object o. -function f() { - dummy(); - return o.f; -} - -shouldDeopt = false; -f(); -f(); - -%OptimizeFunctionOnNextCall(f); -%OptimizeFunctionOnNextCall(dummy_opt); -shouldDeopt = true; -assertEquals(2, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/division-by-constant.js b/implementation-contributed/v8/mjsunit/compiler/division-by-constant.js deleted file mode 100644 index 212bdb24b9c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/division-by-constant.js +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// ----------------------------------------------------------------------------- - -function ConstructDiv(divisor) { - return "return ((dividend | 0) / ((" + divisor + ") | 0)) | 0"; -} - -var RefDivByConstI = - new Function("dividend", "divisor", ConstructDiv("divisor")); - -%NeverOptimizeFunction(RefDivByConstI); - -// ----------------------------------------------------------------------------- - -function ConstructMod(divisor) { - return "return ((dividend | 0) % ((" + divisor + ") | 0)) | 0"; -} - -var RefModByConstI = - new Function("dividend", "divisor", ConstructMod("divisor")); - -%NeverOptimizeFunction(RefModByConstI); - -// ----------------------------------------------------------------------------- - -function ConstructFlooringDiv(divisor) { - return "return Math.floor(dividend / (" + divisor + ")) | 0"; -} - -var RefFlooringDivByConstI = - new Function("dividend", "divisor", ConstructFlooringDiv("divisor")); - -%NeverOptimizeFunction(RefFlooringDivByConstI); - -// ----------------------------------------------------------------------------- - -function PushSymmetric(values, x) { - values.push(x, -x); -} - -function PushRangeSymmetric(values, from, to) { - for (var x = from; x <= to; x++) { - PushSymmetric(values, x); - } -} - -function CreateTestValues() { - var values = [ - // -(2^31) - -2147483648, - // Some values from "Hacker's Delight", chapter 10-7. - 715827883, 1431655766, -1431655765, -1431655764, - // Some "randomly" chosen numbers. - 123, -1234, 12345, -123456, 1234567, -12345678, 123456789 - ]; - // Powers of 2 - for (var shift = 6; shift < 31; shift++) { - PushSymmetric(values, 1 << shift); - } - // Values near zero - PushRangeSymmetric(values, 1, 32); - // Various magnitudes - PushRangeSymmetric(values, 100, 109); - PushRangeSymmetric(values, 1000, 1009); - PushRangeSymmetric(values, 10000, 10009); - PushRangeSymmetric(values, 100000, 100009); - PushRangeSymmetric(values, 1000000, 1000009); - PushRangeSymmetric(values, 10000000, 10000009); - PushRangeSymmetric(values, 100000000, 100000009); - PushRangeSymmetric(values, 1000000000, 1000000009); - return values; -} - -// ----------------------------------------------------------------------------- - - -function TestDivisionLike(ref, construct, values, divisor) { - // Define the function to test. - var OptFun = new Function("dividend", construct(divisor)); - - // Warm up type feedback. - OptFun(7); - OptFun(11); - %OptimizeFunctionOnNextCall(OptFun); - OptFun(13); - -function dude(dividend) { - // Avoid deopt caused by overflow, we do not want to test this here. - if (dividend === -2147483648 && divisor === -1) return; - assertEquals(ref(dividend, divisor), OptFun(dividend)); - } - - // Check results. - values.forEach(dude); -} - -function Test(ref, construct) { - var values = CreateTestValues(); - values.forEach(function(divisor) { - TestDivisionLike(ref, construct, values, divisor); - }); -} - -Test(RefDivByConstI, ConstructDiv); -Test(RefModByConstI, ConstructMod); -Test(RefFlooringDivByConstI, ConstructFlooringDiv); diff --git a/implementation-contributed/v8/mjsunit/compiler/dont-constant-fold-deopting-checks.js b/implementation-contributed/v8/mjsunit/compiler/dont-constant-fold-deopting-checks.js deleted file mode 100644 index 02bd8d9a257..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/dont-constant-fold-deopting-checks.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(a) { a[0](true); } -function foo(a) { return bar(1); } -%OptimizeFunctionOnNextCall(foo); -assertThrows(function() {bar([foo])}, TypeError); diff --git a/implementation-contributed/v8/mjsunit/compiler/double-array-to-global.js b/implementation-contributed/v8/mjsunit/compiler/double-array-to-global.js deleted file mode 100644 index e221d90358e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/double-array-to-global.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = [-0, 0]; -var b; -function foo(a) { - for (var i = 0; i < 2; ++i) { - b = a[i]; - } -} -foo(a); -foo(a); -%OptimizeFunctionOnNextCall(foo); -foo(a); diff --git a/implementation-contributed/v8/mjsunit/compiler/eager-deopt-simple.js b/implementation-contributed/v8/mjsunit/compiler/eager-deopt-simple.js deleted file mode 100644 index 067400cfc62..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/eager-deopt-simple.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g(a, b, c) { - return a + b + c; -} - -function f() { - return g(1, (%_DeoptimizeNow(), 2), 3); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals(6, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-1.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-1.js deleted file mode 100644 index f05040bd02b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-1.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(a) { - "use strict"; - return arguments.length; -} - -function g() { - return f(1,2,3); -} - -assertEquals(3, g()); -assertEquals(3, g()); -%OptimizeFunctionOnNextCall(g); -assertEquals(3, g()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-10.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-10.js deleted file mode 100644 index 4f06d57dcf4..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-10.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -(function() { - "use strict"; - function f() { - for (let i = 0; i < 5; ++i) { - function g() { return i } - } - } - f(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-11.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-11.js deleted file mode 100644 index e922fc15c8a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-11.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function g() { - ({}).a += ''; - if (false) eval(); -} - -function f() { - g(); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-12.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-12.js deleted file mode 100644 index 16029a0ad3f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-12.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -var x = {}; -x = {}; -function f() { - var y = {b: -1.5}; - x.b = 1; - 0 <= y.b; -} -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-13.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-13.js deleted file mode 100644 index 5f281aaaa45..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-13.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function f() { - var x = {}; - x.a = "a"; - x.b = "b"; - assertEquals("a", x.a); - assertEquals("b", x.b); -} -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-15.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-15.js deleted file mode 100644 index 1960d74892d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-15.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape --no-turbo-load-elimination - -function f(i) { - var o1 = {a: 1, b: 2}; - var o2 = {a: 1, b: 3}; - var o3 = {a: o2.b}; - o3.a = ""; - o2.a = o1; - if (i == 4) return o3; -} -for (var i = 0; i < 100; ++i){ - f(i%5) -} -%OptimizeFunctionOnNextCall(f); -f(false); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-16.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-16.js deleted file mode 100644 index 4cd9ae43fd8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-16.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-turbo-loop-peeling --turbo-escape - -function foo(){ - var o = {a : 5} - for (var i = 0; i < 100; ++i) { - o.a = 5; - o.a = 7; - } -} - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo) -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-17.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-17.js deleted file mode 100644 index 5709d47129e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-17.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function foo() { - var a = {x:1}; - var b = {x:1.5, y: 1}; - var x = 0; - for (var i = 0; i < 1; i = {}) { - // The second iteration of this loop is dead code, leading to a - // contradiction between dynamic and static information. - x += a.x + 0.5; - x += a.x % 0.5; - x += Math.abs(a.x); - x += a.x < 6; - x += a.x === 7; - x += a.x <= 8; - a = b; - } - return x; -} -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-18.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-18.js deleted file mode 100644 index f2ff08299fe..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-18.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function bar(arr) { - var x = 0; - arr.forEach(function(el) { - x = el; - }); - return x; -} - -function foo(array) { - return bar(array); -} - -let array = [,.5,]; -foo(array); -foo(array); -%OptimizeFunctionOnNextCall(foo); -foo(array); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-2.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-2.js deleted file mode 100644 index 49f440e856e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-2.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(a) { - "use strict"; - if (arguments === a) - return 1; - return arguments.length; -} - -function g(a) { - return f(a,1,2,3); -} - -assertEquals(4, g()); -assertEquals(4, g()); -%OptimizeFunctionOnNextCall(g); -assertEquals(4, g()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-3.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-3.js deleted file mode 100644 index b92d1c38762..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-3.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(a) { - "use strict"; - return arguments.length; -} - -function g() { - "use strict"; - return arguments[f(1,2)]; -} - -assertEquals(6, g(4,5,6)); -assertEquals(6, g(4,5,6)); -%OptimizeFunctionOnNextCall(g); -assertEquals(6, g(4,5,6)); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-4.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-4.js deleted file mode 100644 index ef9f95fd36b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-4.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(a) { - "use strict"; - return arguments.length; -} - -function h() { - "use strict"; - return arguments; -} - -function g() { - return "" + f(1,2,3) + " " + h(4,5,6); -} - -assertEquals("3 [object Arguments]", g()); -assertEquals("3 [object Arguments]", g()); -%OptimizeFunctionOnNextCall(g); -assertEquals("3 [object Arguments]", g()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-5.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-5.js deleted file mode 100644 index 54b5e829582..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-5.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(h) { - "use strict"; - h(arguments); - return arguments.length; -} - -function g(h) { - return f(h,1,2,3); -} - -function h(x) { - assertEquals("[object Arguments]", ""+x) -} - -assertEquals(4, g(h)); -assertEquals(4, g(h)); -%OptimizeFunctionOnNextCall(g); -assertEquals(4, g(h)); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-6.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-6.js deleted file mode 100644 index c36e7d956e5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-6.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(a) { - "use strict"; - return arguments; -} - -function g() { - "use strict"; - var x = f(1,2,3); - while (x.length < 4) { - x = f(4,5,6,7,8); - } - return x.length; -} - -assertEquals(5, g()); -assertEquals(5, g()); -%OptimizeFunctionOnNextCall(g); -assertEquals(5, g()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-7.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-7.js deleted file mode 100644 index cfa30cbeb4a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-7.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f() { - this.x=0; -} - -function g(a) { - "use strict"; - var o = new f(); - if (a) { - o.x = 5; - } else { - o.x = 7; - } - - return o.x; -} - -assertEquals(5, g(true)); -assertEquals(7, g(false)); -%OptimizeFunctionOnNextCall(g); -assertEquals(5, g(true)); -assertEquals(7, g(false)); -assertEquals(7, g()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-8.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-8.js deleted file mode 100644 index d9c6d254efc..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-8.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(a) { - this.x=a; - this.y=1; -} - -function g() { - "use strict"; - var o = new f(2); - while (o.y < 4) { - o.x = 5; - o.y = 5; - } - return o.x; -} - -assertEquals(5, g()); -assertEquals(5, g()); -%OptimizeFunctionOnNextCall(g); -assertEquals(5, g()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-9.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-9.js deleted file mode 100644 index 0b8f75c5768..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-9.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f() { - return arguments; -} - -function g(a) { - "use strict"; - var o = f(1,2); - if (a) { - o[0] = 5; - } else { - o[0] = 7; - } - - return o[0]; -} - -assertEquals(7, g()); -assertEquals(7, g()); -%OptimizeFunctionOnNextCall(g); -assertEquals(5, g(true)); -assertEquals(7, g(false)); -assertEquals(7, g()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-arguments.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-arguments.js deleted file mode 100644 index 65e736c7062..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-arguments.js +++ /dev/null @@ -1,240 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - - -// Simple test of capture -(function testCapturedArguments() { - function h() { - return g.arguments[0]; - } - - function g(x) { - return h(); - } - - function f() { - var l = { y : { z : 4 }, x : 2 } - var r = g(l); - assertEquals(2, r.x); - assertEquals(2, l.x); - l.x = 3; - l.y.z = 5; - // Test that the arguments object is properly - // aliased - assertEquals(3, r.x); - assertEquals(3, l.x); - assertEquals(5, r.y.z); - } - - f(); f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); - - -// Get the arguments object twice, test aliasing -(function testTwoCapturedArguments() { - function h() { - return g.arguments[0]; - } - - function i() { - return g.arguments[0]; - } - - function g(x) { - return {h : h() , i : i()}; - } - - function f() { - var l = { y : { z : 4 }, x : 2 } - var r = g(l); - assertEquals(2, r.h.x) - l.y.z = 3; - assertEquals(3, r.h.y.z); - assertEquals(3, r.i.y.z); - } - - f(); f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); - - -// Nested arguments object test -(function testTwoCapturedArgumentsNested() { - function i() { - return { gx : g.arguments[0], hx : h.arguments[0] }; - } - - function h(x) { - return i(); - } - - function g(x) { - return h(x.y); - } - - function f() { - var l = { y : { z : 4 }, x : 2 } - var r = g(l); - assertEquals(2, r.gx.x) - assertEquals(4, r.gx.y.z) - assertEquals(4, r.hx.z) - l.y.z = 3; - assertEquals(3, r.gx.y.z) - assertEquals(3, r.hx.z) - assertEquals(3, l.y.z) - } - - f(); f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); f(); -})(); - - -// Nested arguments object test with different inlining -(function testTwoCapturedArgumentsNested2() { - function i() { - return { gx : g.arguments[0], hx : h.arguments[0] }; - } - - function h(x) { - return i(); - } - - function g(x) { - return h(x.y); - } - - function f() { - var l = { y : { z : 4 }, x : 2 } - var r = g(l); - assertEquals(2, r.gx.x) - assertEquals(4, r.gx.y.z) - assertEquals(4, r.hx.z) - l.y.z = 3; - assertEquals(3, r.gx.y.z) - assertEquals(3, r.hx.z) - assertEquals(3, l.y.z) - } - - %NeverOptimizeFunction(i); - f(); f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); f(); -})(); - - -// Multiple captured argument test -(function testTwoArgumentsCapture() { - function h() { - return { a : g.arguments[1], b : g.arguments[0] }; - } - - function g(x, y) { - return h(); - } - - function f() { - var l = { y : { z : 4 }, x : 2 } - var k = { t : { u : 3 } }; - var r = g(k, l); - assertEquals(2, r.a.x) - assertEquals(4, r.a.y.z) - assertEquals(3, r.b.t.u) - l.y.z = 6; - r.b.t.u = 7; - assertEquals(6, r.a.y.z) - assertEquals(7, k.t.u) - } - - f(); f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); f(); -})(); - -// Test variable index access to strict arguments -// with up to 2 elements. -(function testArgumentsVariableIndexStrict() { - function g() { - "use strict"; - var s = 0; - for (var i = 0; i < arguments.length; ++i) s += arguments[i]; - return s; - } - - function f(x, y) { - // (a) arguments[i] is dead code since arguments.length is 0. - const a = g(); - // (b) arguments[i] always yields the first element. - const b = g(x); - // (c) arguments[i] can yield either x or y. - const c = g(x, y); - return a + b + c; - } - - assertEquals(4, f(1, 2)); - assertEquals(5, f(2, 1)); - %OptimizeFunctionOnNextCall(f); - assertEquals(4, f(1, 2)); - assertEquals(5, f(2, 1)); -})(); - -// Test variable index access to sloppy arguments -// with up to 2 elements. -(function testArgumentsVariableIndexSloppy() { - function g() { - var s = 0; - for (var i = 0; i < arguments.length; ++i) s += arguments[i]; - return s; - } - - function f(x, y) { - // (a) arguments[i] is dead code since arguments.length is 0. - const a = g(); - // (b) arguments[i] always yields the first element. - const b = g(x); - // (c) arguments[i] can yield either x or y. - const c = g(x, y); - return a + b + c; - } - - assertEquals(4, f(1, 2)); - assertEquals(5, f(2, 1)); - %OptimizeFunctionOnNextCall(f); - assertEquals(4, f(1, 2)); - assertEquals(5, f(2, 1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-array.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-array.js deleted file mode 100644 index 2c44fa8c9b8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-array.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test variable index access to array with 1 element. -(function testOneElementArrayVariableIndex() { - function f(i) { - const a = new Array("first"); - return a[i]; - } - - assertEquals("first", f(0)); - assertEquals("first", f(0)); - %OptimizeFunctionOnNextCall(f); - assertEquals("first", f(0)); -})(); - -// Test variable index access to array with 2 elements. -(function testTwoElementArrayVariableIndex() { - function f(i) { - const a = new Array("first", "second"); - return a[i]; - } - - assertEquals("first", f(0)); - assertEquals("second", f(1)); - %OptimizeFunctionOnNextCall(f); - assertEquals("first", f(0)); - assertEquals("second", f(1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-cycle.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-cycle.js deleted file mode 100644 index ee3a4a721c3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-cycle.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function g(o) { - return {a : o, b: 42, c: o}; -} - -function f() { - var o = {a: {}, b: 43}; - o.a = g(g(o)); - o.c = o.a.c; - %DeoptimizeNow(); - return o.c.a.c.a.c.a.c.b; -} - -assertEquals(42, f()); -assertEquals(42, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(42, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-1.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-1.js deleted file mode 100644 index 7337264b856..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-1.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -// Test deoptimization with captured objects in local variables. -(function testDeoptLocal() { - "use strict"; - function constructor1(a) { - return arguments; - } - function func(a) { - var o1 = constructor1(1,2,3); - if (a) { %DeoptimizeNow(); } - assertEquals(1, o1[0]); - assertEquals(2, o1[1]); - assertEquals(3, o1[2]); - } - func(false); - func(false); - %OptimizeFunctionOnNextCall(func); - func(true); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-2.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-2.js deleted file mode 100644 index 306f3e7410a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-2.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -// Test deoptimization with captured objects in local variables. -(function testDeoptLocal() { - "use strict"; - function constructor1(a) { - return arguments; - } - function func() { - var o1 = constructor1(1,2,3); - var o2 = constructor1(4,o1); - %DeoptimizeNow(); - assertEquals(1, o1[0]); - assertEquals(2, o1[1]); - assertEquals(3, o1[2]); - assertEquals(4, o2[0]); - assertEquals(o1, o2[1]); - } - func(); - func(); - %OptimizeFunctionOnNextCall(func); - func(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-3.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-3.js deleted file mode 100644 index 9999e53178d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-3.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -// Test deoptimization with captured objects in local variables. -(function testDeoptLocal() { - "use strict"; - function constructor1(a) { - return arguments; - } - function func() { - var o1 = constructor1(1,2,3); - var o2 = constructor1(4,o1); - o1[0] = o1; - %DeoptimizeNow(); - assertEquals(o1, o1[0]); - assertEquals(2, o1[1]); - assertEquals(3, o1[2]); - assertEquals(4, o2[0]); - assertEquals(o1, o2[1]); - } - func(); - func(); - %OptimizeFunctionOnNextCall(func); - func(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-4.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-4.js deleted file mode 100644 index c80765706c5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-4.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -// Test deoptimization with captured objects in local variables. -(function testDeoptLocal() { - "use strict"; - function constructor1() { - this.x=1; - this.y=2; - this.z=3; - } - function constructor2(x) { - this.a=x; - this.b=4; - } - function func() { - var o1 = new constructor1(); - var o2 = new constructor2(o1); - o1.x = o1; - %DeoptimizeNow(); - assertEquals(o1, o1.x); - assertEquals(2, o1.y); - assertEquals(3, o1.z); - assertEquals(o1, o2.a); - assertEquals(4, o2.b); - } - func(); - func(); - %OptimizeFunctionOnNextCall(func); - func(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-5.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-5.js deleted file mode 100644 index e70f0b1221b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-5.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function f() { - var x = new Array(2); - x[0] = 23.1234; - x[1] = 25.1234; - %DeoptimizeNow(); - return x[0]; -} - -assertEquals(f(), 23.1234); -assertEquals(f(), 23.1234); -%OptimizeFunctionOnNextCall(f); -assertEquals(f(), 23.1234); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-6.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-6.js deleted file mode 100644 index 6a776286db6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-deopt-6.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(x) { - var a = [0.1, 0.2, 0.3]; - %_DeoptimizeNow(); - return a.length; -} - -assertEquals(3, f()); -assertEquals(3, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(3, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-framestate-use-at-branchpoint.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-framestate-use-at-branchpoint.js deleted file mode 100644 index c86674e52ee..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-framestate-use-at-branchpoint.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function foo() { - var o = {x:0}; - for (var i = 0; o.x < 1;) { - o.x++; - i+= 1; - } - function bar() {i}; - return o.x; -} -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-materialize.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-materialize.js deleted file mode 100644 index 6ad3a53218f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-materialize.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -(function TestMaterializeArray() { - function f() { - var a = [1,2,3]; - %_DeoptimizeNow(); - return a.length; - } - assertEquals(3, f()); - assertEquals(3, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(3, f()); -})(); - -(function TestMaterializeFunction() { - function g() { - function fun(a, b) {} - %_DeoptimizeNow(); - return fun.length; - } - assertEquals(2, g()); - assertEquals(2, g()); - %OptimizeFunctionOnNextCall(g); - assertEquals(2, g()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-phi-type-2.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-phi-type-2.js deleted file mode 100644 index 2c2135b6da1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-phi-type-2.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(x) { - var o = {a : 0, b: 0}; - if (x == 0) { - o.a = 1 - } else { - if (x <= 1) { - if (x == 2) { - o.a = 2; - } else { - o.a = 1 - } - o.a = 2; - } else { - if (x == 2) { - o.a = "x"; - } else { - o.a = "x"; - } - o.b = 22; - } - o.b = 22; - } - return o.a + 1; -} - -f(0,0); -f(1,0); -f(2,0); -f(3,0); -f(0,1); -f(1,1); -f(2,1); -f(3,1); -%OptimizeFunctionOnNextCall(f); -assertEquals(f(2), "x1"); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-phi-type.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-phi-type.js deleted file mode 100644 index 9d033b9640e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-phi-type.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape --no-turbo-loop-peeling - -function f(x) { - var o = {a : 0}; - var l = [1,2,3,4]; - var res; - for (var i = 0; i < 3; ++i) { - if (x%2 == 0) { o.a = 1; b = false} - res = l[o.a]; - o.a = x; - } - return res; -} - -f(0); -f(1); -f(0); -f(1); -%OptimizeFunctionOnNextCall(f); -assertEquals(undefined, f(101)); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-replacement.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-replacement.js deleted file mode 100644 index ffe95e30aa2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-replacement.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --turbo-escape - -function foo(x){ - var c = {c: {} === {}}; - if(x) c.c = true; - return c.c; -} - -foo(true); -foo(false); -foo(true); -foo(false); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(true)); -assertFalse(foo(false)); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-representation.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-representation.js deleted file mode 100644 index e6cc9f1ed2e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-representation.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// This tests that captured objects materialized through the deoptimizer -// have field descriptors with a representation matching the values that -// have actually been stored in the object. - -var values = [ function() { return {}; }, - function() { return 23; }, - function() { return 4.2; } ]; - -function constructor(value_track) { - this.x = value_track(); -} - -function access(value_track, value_break, deopt) { - var o = new constructor(value_track); - o.x = value_break; - deopt.deopt - assertEquals(value_break, o.x); -} - -function test(value_track, value_break) { - var deopt = { deopt:false }; - - // Warm-up field tracking to a certain representation. - access(value_track, value_track(), deopt); - access(value_track, value_track(), deopt); - %OptimizeFunctionOnNextCall(access); - access(value_track, value_track(), deopt); - - // Deoptimize on a run with a different representation. - delete deopt.deopt; - access(value_track, value_break(), deopt); - - // Clear type feedback of the access function for next run. - %ClearFunctionFeedback(access); - - // Also make sure the initial map of the constructor is reset. - constructor.prototype = {}; -} - -for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - test(values[i], values[j]) - } -} diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-rest-parameters.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-rest-parameters.js deleted file mode 100644 index 2ac1253a187..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-rest-parameters.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test variable index access to rest parameters -// with up to 2 elements. -(function testRestParametersVariableIndex() { - function g(...args) { - let s = 0; - for (let i = 0; i < args.length; ++i) s += args[i]; - return s; - } - - function f(x, y) { - // (a) args[i] is dead code since args.length is 0. - const a = g(); - // (b) args[i] always yields the first element. - const b = g(x); - // (c) args[i] can yield either x or y. - const c = g(x, y); - return a + b + c; - } - - assertEquals(4, f(1, 2)); - assertEquals(5, f(2, 1)); - %OptimizeFunctionOnNextCall(f); - assertEquals(4, f(1, 2)); - assertEquals(5, f(2, 1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-type-none-in-object-state.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-type-none-in-object-state.js deleted file mode 100644 index aee6485eed5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-type-none-in-object-state.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - if (x != "x") { - var o = {a: (x + 1) * 1.5}; - %DeoptimizeNow(); - return o.a; - } -} - -f(1.5); f(2.5); f(NaN); - -function g(x) { - f(""+x); -} - -g("x"); g("x"); -%OptimizeFunctionOnNextCall(g); -g("x"); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-typeguard.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis-typeguard.js deleted file mode 100644 index 8746a81f9eb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis-typeguard.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -class C { constructor(x) { this.a = x; } }; -class D { constructor(x) { this.a = x; } }; - -function foo(){ - var x = new C(7); - var y = new D(x); - var z = y.a; - %DeoptimizeNow(); - assertEquals(7, z.a); -} - -foo(); -foo(); -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo) -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/escape-analysis.js b/implementation-contributed/v8/mjsunit/compiler/escape-analysis.js deleted file mode 100644 index 111ed634fdb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/escape-analysis.js +++ /dev/null @@ -1,438 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - - -// Test stores on a join path. -(function testJoin() { - function constructor() { - this.a = 0; - } - function join(mode, expected) { - var object = new constructor(); - if (mode) { - object.a = 1; - } else { - object.a = 2; - } - assertEquals(expected, object.a); - } - join(true, 1); join(true, 1); - join(false, 2); join(false, 2); - %OptimizeFunctionOnNextCall(join); - join(true, 1); join(false, 2); -})(); - - -// Test loads and stores inside a loop. -(function testLoop() { - function constructor() { - this.a = 0; - this.b = 23; - } - function loop() { - var object = new constructor(); - for (var i = 1; i < 10; i++) { - object.a = object.a + i; - assertEquals(i*(i+1)/2, object.a); - assertEquals(23, object.b); - } - assertEquals(45, object.a); - assertEquals(23, object.b); - } - loop(); loop(); - %OptimizeFunctionOnNextCall(loop); - loop(); loop(); -})(); - - -// Test loads and stores inside nested loop. -(function testNested() { - function constructor() { - this.a = 0; - this.b = 0; - this.c = 23; - } - function nested() { - var object = new constructor(); - for (var i = 1; i < 10; i++) { - object.a = object.a + i; - assertEquals(i*(i+1)/2, object.a); - assertEquals((i-1)*6, object.b); - assertEquals(23, object.c); - for (var j = 1; j < 4; j++) { - object.b = object.b + j; - assertEquals(i*(i+1)/2, object.a); - assertEquals((i-1)*6+j*(j+1)/2, object.b); - assertEquals(23, object.c); - } - assertEquals(i*(i+1)/2, object.a); - assertEquals(i*6, object.b); - assertEquals(23, object.c); - } - assertEquals(45, object.a); - assertEquals(54, object.b); - assertEquals(23, object.c); - } - nested(); nested(); - %OptimizeFunctionOnNextCall(nested); - nested(); nested(); -})(); - - -// Test deoptimization with captured objects in local variables. -(function testDeoptLocal() { - var deopt = { deopt:false }; - function constructor1() { - this.a = 1.0; - this.b = 2.3; - this.c = 3.0; - } - function constructor2(o) { - this.d = o; - this.e = 4.5; - } - function func() { - var o1 = new constructor1(); - var o2 = new constructor2(o1); - deopt.deopt; - assertEquals(1.0, o1.a); - assertEquals(2.3, o2.d.b); - assertEquals(3.0, o2.d.c); - assertEquals(4.5, o2.e); - } - func(); func(); - %OptimizeFunctionOnNextCall(func); - func(); func(); - delete deopt.deopt; - func(); func(); -})(); - - -// Test deoptimization with captured objects on operand stack. -(function testDeoptOperand() { - var deopt = { deopt:false }; - function constructor1() { - this.a = 1.0; - this.b = 2.3; - deopt.deopt; - assertEquals(1.0, this.a); - assertEquals(2.3, this.b); - this.b = 2.7; - this.c = 3.0; - this.d = 4.5; - } - function constructor2() { - this.e = 5.0; - this.f = new constructor1(); - assertEquals(1.0, this.f.a); - assertEquals(2.7, this.f.b); - assertEquals(3.0, this.f.c); - assertEquals(4.5, this.f.d); - assertEquals(5.0, this.e); - this.e = 5.9; - this.g = 6.7; - } - function func() { - var o = new constructor2(); - assertEquals(1.0, o.f.a); - assertEquals(2.7, o.f.b); - assertEquals(3.0, o.f.c); - assertEquals(4.5, o.f.d); - assertEquals(5.9, o.e); - assertEquals(6.7, o.g); - } - func(); func(); - %OptimizeFunctionOnNextCall(func); - func(); func(); - delete deopt.deopt; - func(); func(); -})(); - - -// Test map checks on captured objects. -(function testMapCheck() { - var sum = 0; - function getter() { return 27; } - function setter(v) { sum += v; } - function constructor() { - this.x = 23; - this.y = 42; - } - function check(x, y) { - var o = new constructor(); - assertEquals(x, o.x); - assertEquals(y, o.y); - } - var monkey = Object.create(null, { - x: { get:getter, set:setter }, - y: { get:getter, set:setter } - }); - check(23, 42); check(23, 42); - %OptimizeFunctionOnNextCall(check); - check(23, 42); check(23, 42); - constructor.prototype = monkey; - check(27, 27); check(27, 27); - assertEquals(130, sum); -})(); - - -// Test OSR into a loop with captured objects. -(function testOSR() { - function constructor() { - this.a = 23; - } - function osr1(length) { - assertEquals(23, (new constructor()).a); - var result = 0; - for (var i = 0; i < length; i++) { - result = (result + i) % 99; - } - return result; - } - function osr2(length) { - var result = 0; - for (var i = 0; i < length; i++) { - result = (result + i) % 99; - } - assertEquals(23, (new constructor()).a); - return result; - } - function osr3(length) { - var result = 0; - var o = new constructor(); - for (var i = 0; i < length; i++) { - result = (result + i) % 99; - } - assertEquals(23, o.a); - return result; - } - function test(closure) { - assertEquals(45, closure(10)); - assertEquals(45, closure(10)); - assertEquals(10, closure(50000)); - } - test(osr1); - test(osr2); - test(osr3); -})(); - - -// Test out-of-bounds access on captured objects. -(function testOOB() { - function cons1() { - this.x = 1; - this.y = 2; - this.z = 3; - } - function cons2() { - this.a = 7; - } - function oob(constructor, branch) { - var o = new constructor(); - if (branch) { - return o.a; - } else { - return o.z; - } - } - assertEquals(3, oob(cons1, false)); - assertEquals(3, oob(cons1, false)); - assertEquals(7, oob(cons2, true)); - assertEquals(7, oob(cons2, true)); - gc(); // Clears type feedback of constructor call. - assertEquals(7, oob(cons2, true)); - assertEquals(7, oob(cons2, true)); - %OptimizeFunctionOnNextCall(oob); - assertEquals(7, oob(cons2, true)); -})(); - - -// Test non-shallow nested graph of captured objects. -(function testDeep() { - var deopt = { deopt:false }; - function constructor1() { - this.x = 23; - } - function constructor2(nested) { - this.a = 17; - this.b = nested; - this.c = 42; - } - function deep() { - var o1 = new constructor1(); - var o2 = new constructor2(o1); - assertEquals(17, o2.a); - assertEquals(23, o2.b.x); - assertEquals(42, o2.c); - o1.x = 99; - deopt.deopt; - assertEquals(99, o1.x); - assertEquals(99, o2.b.x); - } - deep(); deep(); - %OptimizeFunctionOnNextCall(deep); - deep(); deep(); - delete deopt.deopt; - deep(); deep(); -})(); - - -// Test non-shallow nested graph of captured objects with duplicates -(function testDeepDuplicate() { - function constructor1() { - this.x = 23; - } - function constructor2(nested) { - this.a = 17; - this.b = nested; - this.c = 42; - } - function deep(shouldDeopt) { - var o1 = new constructor1(); - var o2 = new constructor2(o1); - var o3 = new constructor2(o1); - assertEquals(17, o2.a); - assertEquals(23, o2.b.x); - assertEquals(42, o2.c); - o3.c = 54; - o1.x = 99; - if (shouldDeopt) %DeoptimizeFunction(deep); - assertEquals(99, o1.x); - assertEquals(99, o2.b.x); - assertEquals(99, o3.b.x); - assertEquals(54, o3.c); - assertEquals(17, o3.a); - assertEquals(42, o2.c); - assertEquals(17, o2.a); - o3.b.x = 1; - assertEquals(1, o1.x); - } - deep(false); deep(false); - %OptimizeFunctionOnNextCall(deep); - deep(false); deep(false); - deep(true); deep(true); -})(); - - -// Test non-shallow nested graph of captured objects with inline -(function testDeepInline() { - function h() { - return { y : 3 }; - } - - function g(x) { - var u = { x : h() }; - %DeoptimizeFunction(f); - return u; - } - - function f() { - var l = { dummy : { } }; - var r = g(l); - assertEquals(3, r.x.y); - } - - f(); f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); - - -// Test two nested objects -(function testTwoNestedObjects() { - function f() { - var l = { x : { y : 111 } }; - var l2 = { x : { y : 111 } }; - %DeoptimizeFunction(f); - assertEquals(111, l.x.y); - assertEquals(111, l2.x.y); - } - - f(); f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); - - -// Test a nested object and a duplicate -(function testTwoObjectsWithDuplicate() { - function f() { - var l = { x : { y : 111 } }; - var dummy = { d : 0 }; - var l2 = l.x; - %DeoptimizeFunction(f); - assertEquals(111, l.x.y); - assertEquals(111, l2.y); - assertEquals(0, dummy.d); - } - - f(); f(); f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); - - -// Test materialization of a field that requires a Smi value. -(function testSmiField() { - var deopt = { deopt:false }; - function constructor() { - this.x = 1; - } - function field(x) { - var o = new constructor(); - o.x = x; - deopt.deopt - assertEquals(x, o.x); - } - field(1); field(2); - %OptimizeFunctionOnNextCall(field); - field(3); field(4); - delete deopt.deopt; - field(5.5); field(6.5); -})(); - - -// Test materialization of a field that requires a heap object value. -(function testHeapObjectField() { - var deopt = { deopt:false }; - function constructor() { - this.x = {}; - } - function field(x) { - var o = new constructor(); - o.x = x; - deopt.deopt - assertEquals(x, o.x); - } - field({}); field({}); - %OptimizeFunctionOnNextCall(field); - field({}); field({}); - delete deopt.deopt; - field(1); field(2); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/eval-introduced-closure.js b/implementation-contributed/v8/mjsunit/compiler/eval-introduced-closure.js deleted file mode 100644 index 550c7c30eec..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/eval-introduced-closure.js +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that functions introduced by eval work both when there are -// strict mode and non-strict mode eval in scopes. - -// Flags: --allow-natives-syntax - -var x = 27; - -function f() { return x; } - -assertEquals(27, f()); - -function do_eval(str) { - "use strict"; - return eval(str); -} - -var eval_f = do_eval('(' + f + ')'); -for (var i = 0; i < 5; i++) assertEquals(27, eval_f()); -%OptimizeFunctionOnNextCall(eval_f); -assertEquals(27, eval_f()); - -function do_eval_local(str) { - "use strict"; - var x = 42; - return eval(str); -} - -eval_f = do_eval_local('(' + f + ')'); -for (var i = 0; i < 5; i++) assertEquals(42, eval_f()); -%OptimizeFunctionOnNextCall(eval_f); -assertEquals(42, eval_f()); - -function do_eval_with_other_eval_call(str) { - "use strict"; - var f = eval(str); - eval('var x = 1'); - return f; -} - -eval_f = do_eval_with_other_eval_call('(' + f + ')'); -for (var i = 0; i < 5; i++) assertEquals(27, eval_f()); -%OptimizeFunctionOnNextCall(eval_f); -assertEquals(27, eval_f()); - -function test_non_strict_outer_eval() { - function strict_eval(str) { "use strict"; return eval(str); } - var eval_f = strict_eval('(' + f + ')'); - for (var i = 0; i < 5; i++) assertEquals(27, eval_f()); - %OptimizeFunctionOnNextCall(eval_f); - assertEquals(27, eval_f()); - eval("var x = 3"); - assertEquals(3, eval_f()); -} - -test_non_strict_outer_eval(); - -function test_strict_outer_eval() { - "use strict"; - function strict_eval(str) { "use strict"; return eval(str); } - var eval_f = strict_eval('(' + f + ')'); - for (var i = 0; i < 5; i++) assertEquals(27, eval_f()); - %OptimizeFunctionOnNextCall(eval_f); - assertEquals(27, eval_f()); - eval("var x = 3"); - assertEquals(27, eval_f()); -} - -test_non_strict_outer_eval(); diff --git a/implementation-contributed/v8/mjsunit/compiler/expression-trees.js b/implementation-contributed/v8/mjsunit/compiler/expression-trees.js deleted file mode 100644 index 0d971a95b25..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/expression-trees.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --always-opt --nocompilation-cache - -// Given a binary operation string and an ordered array of leaf -// strings, return an array of all binary tree strings with the leaves -// (in order) as the fringe. -function makeTrees(op, leaves) { - var len = leaves.length; - if (len == 1) { - // One leaf is a leaf. - return leaves; - } else { - // More than one leaf requires an interior node. - var result = []; - // Split the leaves into left and right subtrees in all possible - // ways. For each split recursively compute all possible subtrees. - for (var i = 1; i < len; ++i) { - var leftTrees = makeTrees(op, leaves.slice(0, i)); - var rightTrees = makeTrees(op, leaves.slice(i, len)); - // Adjoin every possible left and right subtree. - for (var j = 0; j < leftTrees.length; ++j) { - for (var k = 0; k < rightTrees.length; ++k) { - var string = "(" + leftTrees[j] + op + rightTrees[k] + ")"; - result.push(string); - } - } - } - return result; - } -} - -// All possible bitwise OR trees with six leaves, i.e. CatalanNumber[5] = 42, -// see http://mathworld.wolfram.com/CatalanNumber.html. -var identifiers = ['a','b','c','d','e','f']; -var or_trees = makeTrees("|", identifiers); -var and_trees = makeTrees("&", identifiers); - -// Set up leaf masks to set 6 least-significant bits. -var a = 1 << 0; -var b = 1 << 1; -var c = 1 << 2; -var d = 1 << 3; -var e = 1 << 4; -var f = 1 << 5; - -for (var i = 0; i < or_trees.length; ++i) { - for (var j = 0; j < 6; ++j) { - var or_fun = new Function("return " + or_trees[i]); - if (j == 0) assertEquals(63, or_fun()); - - // Set the j'th variable to a string to force a bailout. - eval(identifiers[j] + "+= ''"); - assertEquals(63, or_fun()); - // Set it back to a number for the next iteration. - eval(identifiers[j] + "= +" + identifiers[j]); - } -} - -// Set up leaf masks to clear 6 least-significant bits. -a ^= 63; -b ^= 63; -c ^= 63; -d ^= 63; -e ^= 63; -f ^= 63; - -for (i = 0; i < and_trees.length; ++i) { - for (var j = 0; j < 6; ++j) { - var and_fun = new Function("return " + and_trees[i]); - if (j == 0) assertEquals(0, and_fun()); - - // Set the j'th variable to a string to force a bailout. - eval(identifiers[j] + "+= ''"); - assertEquals(0, and_fun()); - // Set it back to a number for the next iteration. - eval(identifiers[j] + "= +" + identifiers[j]); - } -} diff --git a/implementation-contributed/v8/mjsunit/compiler/feedback-after-throw.js b/implementation-contributed/v8/mjsunit/compiler/feedback-after-throw.js deleted file mode 100644 index 891e315c5c1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/feedback-after-throw.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo() { - throw "Error"; - return 1 > 5; -}; - -try { foo() } catch(e) {} -try { foo() } catch(e) {} -%OptimizeFunctionOnNextCall(foo); -try { foo() } catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/compiler/for-in-1.js b/implementation-contributed/v8/mjsunit/compiler/for-in-1.js deleted file mode 100644 index 80add89609a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/for-in-1.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Ensure that we properly check for elements on the receiver. -function foo(o) { - var s = ""; - for (var i in o) s += i; - return s; -} - -var a = []; -assertEquals("", foo(a)); -assertEquals("", foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertEquals("", foo(a)); -a[0] = 1; -assertEquals("0", foo(a)); diff --git a/implementation-contributed/v8/mjsunit/compiler/for-in-2.js b/implementation-contributed/v8/mjsunit/compiler/for-in-2.js deleted file mode 100644 index a586aff94e2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/for-in-2.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Ensure that we properly check for elements on the prototypes. -function foo(o) { - var s = ""; - for (var i in o) s += i; - return s; -} - -var a = []; -assertEquals("", foo(a)); -assertEquals("", foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertEquals("", foo(a)); -Array.prototype[0] = 1; -assertEquals("0", foo(a)); diff --git a/implementation-contributed/v8/mjsunit/compiler/for-in-3.js b/implementation-contributed/v8/mjsunit/compiler/for-in-3.js deleted file mode 100644 index 80f3fa50c92..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/for-in-3.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Ensure that we properly check for elements on the prototypes. -function foo(o) { - var s = ""; - for (var i in o) s += i; - return s; -} - -var o = {}; -assertEquals("", foo(o)); -assertEquals("", foo(o)); -%OptimizeFunctionOnNextCall(foo); -assertEquals("", foo(o)); -Object.prototype[0] = 1; -assertEquals("0", foo(o)); diff --git a/implementation-contributed/v8/mjsunit/compiler/for-in-4.js b/implementation-contributed/v8/mjsunit/compiler/for-in-4.js deleted file mode 100644 index d15c3484ddc..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/for-in-4.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Ensure that we properly check for properties on the prototypes. -function foo(o) { - var s = ""; - for (var i in o) s += i; - return s; -} - -var a = []; -assertEquals("", foo(a)); -assertEquals("", foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertEquals("", foo(a)); -Array.prototype.x = 4; -assertEquals("x", foo(a)); diff --git a/implementation-contributed/v8/mjsunit/compiler/for-in-5.js b/implementation-contributed/v8/mjsunit/compiler/for-in-5.js deleted file mode 100644 index 8f469ab1b3f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/for-in-5.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Ensure that we properly check for properties on the prototypes. -function foo(o) { - var s = ""; - for (var i in o) s += i; - return s; -} -var o = {a:1, b:2, c:3}; -assertEquals("abc", foo(o)); -assertEquals("abc", foo(o)); -%OptimizeFunctionOnNextCall(foo); -assertEquals("abc", foo(o)); -Object.prototype.d = 4; -assertEquals("abcd", foo(o)); diff --git a/implementation-contributed/v8/mjsunit/compiler/for-stmt.js b/implementation-contributed/v8/mjsunit/compiler/for-stmt.js deleted file mode 100644 index c8af01c6bb2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/for-stmt.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Test variants of for loops. -function f(i, p) { - for(; i < 10; ) { - p.x = p.x + 1; - i = i+1; - } -} -var o = {x:42}; -f(1, o); -assertEquals(51, o.x); - - -function g(i, p) { - for(; ; ) { - if (i == 10) return; - p.x = p.x + 1; - i = i+1; - } -} -o = {x:42}; -g(1, o); -assertEquals(51, o.x); - - -function h(p) { - for(; p.x < 10; p.x++) {} -} - -var o = {x:0}; -h(o); -assertEquals(10, o.x); diff --git a/implementation-contributed/v8/mjsunit/compiler/function-apply.js b/implementation-contributed/v8/mjsunit/compiler/function-apply.js deleted file mode 100644 index f9440dede10..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/function-apply.js +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test Function.prototype.apply with null/undefined argumentsList -(function() { - "use strict"; - function bar() { return this; } - function foo() { return bar.apply(this, null); } - - assertEquals(42, foo.call(42)); - assertEquals(42, foo.call(42)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(42, foo.call(42)); -})(); -(function() { - "use strict"; - function bar() { return this; } - function foo() { return bar.apply(this, undefined); } - - assertEquals(42, foo.call(42)); - assertEquals(42, foo.call(42)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(42, foo.call(42)); -})(); - -// Test Function.prototype.apply within try/catch. -(function() { - "use strict"; - function foo(bar) { - try { - return Function.prototype.apply.call(bar, bar, arguments); - } catch (e) { - return 1; - } - } - - assertEquals(1, foo()); - assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo()); -})(); -(function() { - "use strict"; - function foo(bar) { - try { - return Function.prototype.apply.call(bar, bar, bar); - } catch (e) { - return 1; - } - } - - assertEquals(1, foo()); - assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo()); -})(); - -// Test Function.prototype.apply with wrong number of arguments. -(function() { - "use strict"; - function bar() { return this; } - function foo() { return bar.apply(); } - - assertEquals(undefined, foo()); - assertEquals(undefined, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo()); -})(); -(function() { - "use strict"; - function bar() { return this; } - function foo() { return bar.apply(this); } - - assertEquals(42, foo.call(42)); - assertEquals(42, foo.call(42)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(42, foo.call(42)); -})(); -(function() { - "use strict"; - function bar() { return this; } - function foo() { return bar.apply(this, arguments, this); } - - assertEquals(42, foo.call(42)); - assertEquals(42, foo.call(42)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(42, foo.call(42)); -})(); - -// Test proper order of callable check and array-like iteration -// in Function.prototype.apply. -(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Function.prototype.apply.call(undefined, this, dummy); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})(); -(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Function.prototype.apply.call(null, this, dummy); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})(); -(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Function.prototype.apply.call(null, this, dummy); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/function-bind.js b/implementation-contributed/v8/mjsunit/compiler/function-bind.js deleted file mode 100644 index cc9451e0d5a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/function-bind.js +++ /dev/null @@ -1,286 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - "use strict"; - function bar() { return this; } - - function foo(x) { - return bar.bind(x); - } - - assertEquals(0, foo(0)()); - assertEquals(1, foo(1)()); - %OptimizeFunctionOnNextCall(foo); - assertEquals("", foo("")()); -})(); - -(function() { - "use strict"; - function bar(x) { return x; } - - function foo(x) { - return bar.bind(undefined, x); - } - - assertEquals(0, foo(0)()); - assertEquals(1, foo(1)()); - %OptimizeFunctionOnNextCall(foo); - assertEquals("", foo("")()); -})(); - -(function() { - function bar(x) { return x; } - - function foo(x) { - return bar.bind(undefined, x); - } - - assertEquals(0, foo(0)()); - assertEquals(1, foo(1)()); - %OptimizeFunctionOnNextCall(foo); - assertEquals("", foo("")()); -})(); - -(function() { - "use strict"; - function bar(x, y) { return x + y; } - - function foo(x, y) { - return bar.bind(undefined, x, y); - } - - assertEquals(0, foo(0, 0)()); - assertEquals(2, foo(1, 1)()); - %OptimizeFunctionOnNextCall(foo); - assertEquals("ab", foo("a", "b")()); - assertEquals(0, foo(0, 1).length); - assertEquals("bound bar", foo(1, 2).name) -})(); - -(function() { - function bar(x, y) { return x + y; } - - function foo(x, y) { - return bar.bind(undefined, x, y); - } - - assertEquals(0, foo(0, 0)()); - assertEquals(2, foo(1, 1)()); - %OptimizeFunctionOnNextCall(foo); - assertEquals("ab", foo("a", "b")()); - assertEquals(0, foo(0, 1).length); - assertEquals("bound bar", foo(1, 2).name) -})(); - -(function() { - function bar(f) { return f(1); } - - function foo(g) { return bar(g.bind(null, 2)); } - - assertEquals(3, foo((x, y) => x + y)); - assertEquals(1, foo((x, y) => x - y)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo((x, y) => x + y)); - assertEquals(1, foo((x, y) => x - y)); -})(); - -(function() { - function add(x, y) { return x + y; } - - function foo(a) { return a.map(add.bind(null, 1)); } - - assertEquals([1, 2, 3], foo([0, 1, 2])); - assertEquals([2, 3, 4], foo([1, 2, 3])); - %OptimizeFunctionOnNextCall(foo); - assertEquals([1, 2, 3], foo([0, 1, 2])); - assertEquals([2, 3, 4], foo([1, 2, 3])); -})(); - -(function() { - const add = (x, y) => x + y; - const inc = add.bind(null, 1); - - function foo(inc) { return inc(1); } - - assertEquals(2, foo(inc)); - assertEquals(2, foo(inc)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(inc)); -})(); - -(function() { - const A = class A {}; - const B = A.bind(); - - function foo() { return new B; } - - assertInstanceof(foo(), A); - assertInstanceof(foo(), B); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertInstanceof(foo(), B); -})(); - -(function() { - const A = class A { - constructor(x, y, z) { - this.x = x; - this.y = y; - this.z = z; - } - }; - const B = A.bind(null, 1, 2); - - function foo(z) { return new B(z); } - - assertEquals(1, foo(3).x); - assertEquals(2, foo(3).y); - assertEquals(3, foo(3).z); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(3).x); - assertEquals(2, foo(3).y); - assertEquals(3, foo(3).z); -})(); - -(function() { - const A = class A {}; - - function foo() { - const B = A.bind(); - return new B; - } - - assertInstanceof(foo(), A); - assertInstanceof(foo(), A); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); -})(); - -(function() { - const A = class A { - constructor(x, y, z) { - this.x = x; - this.y = y; - this.z = z; - } - }; - - function foo(z) { - const B = A.bind(null, 1, 2); - return new B(z); - } - - assertEquals(1, foo(3).x); - assertEquals(2, foo(3).y); - assertEquals(3, foo(3).z); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(3).x); - assertEquals(2, foo(3).y); - assertEquals(3, foo(3).z); -})(); - -(function() { - const A = class A {}; - const B = A.bind(); - - function foo(B) { - return new B; - } - - assertInstanceof(foo(B), A); - assertInstanceof(foo(B), A); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(B), A); -})(); - -(function() { - const A = class A { - constructor(x, y, z) { - this.x = x; - this.y = y; - this.z = z; - } - }; - const B = A.bind(null, 1, 2); - - function foo(B, z) { - return new B(z); - } - - assertEquals(1, foo(B, 3).x); - assertEquals(2, foo(B, 3).y); - assertEquals(3, foo(B, 3).z); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(B, 3).x); - assertEquals(2, foo(B, 3).y); - assertEquals(3, foo(B, 3).z); -})(); - -(function() { - const A = class A { - constructor(value) { - this.value = value; - } - }; - const C = class C extends A { - constructor() { super(1); } - }; - const B = C.__proto__ = A.bind(null, 1); - - assertInstanceof(new C(), A); - assertInstanceof(new C(), B); - assertInstanceof(new C(), C); - assertEquals(1, new C().value); - %OptimizeFunctionOnNextCall(C); - assertInstanceof(new C(), A); - assertInstanceof(new C(), B); - assertInstanceof(new C(), C); - assertEquals(1, new C().value); -})(); - -(function() { - const A = class A {}; - const B = A.bind(); - - function bar(B, ...args) { - return new B(...args); - } - function foo(B) { - return bar(B) - } - - assertInstanceof(foo(B), A); - assertInstanceof(foo(B), A); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(B), A); -})(); - -(function() { - const A = class A { - constructor(x, y, z) { - this.x = x; - this.y = y; - this.z = z; - } - }; - const B = A.bind(null, 1, 2); - - function bar(B, ...args) { - return new B(...args); - } - function foo(B, z) { - return bar(B, z); - } - - assertEquals(1, foo(B, 3).x); - assertEquals(2, foo(B, 3).y); - assertEquals(3, foo(B, 3).z); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(B, 3).x); - assertEquals(2, foo(B, 3).y); - assertEquals(3, foo(B, 3).z); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/function-call.js b/implementation-contributed/v8/mjsunit/compiler/function-call.js deleted file mode 100644 index b2e0702a75e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/function-call.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test of function calls. - -function f(x) { return x; } - -var a; - -// Call on global object. -a = f(8); -assertEquals(8, a); - -// Call on a named property. -var b; -b = {x:f}; -a = b.x(9); -assertEquals(9, a); - -// Call on a keyed property. -c = "x"; -a = b[c](10); -assertEquals(10, a); - -// Call on a function expression -function g() { return f; } -a = g()(8); -assertEquals(8, a); diff --git a/implementation-contributed/v8/mjsunit/compiler/function-caller.js b/implementation-contributed/v8/mjsunit/compiler/function-caller.js deleted file mode 100644 index 1192e680cbd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/function-caller.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestInlineAllocatedCaller() { - function g() { - var caller = g.caller; - caller.foo = 23; - assertEquals(23, caller.foo); - assertEquals(23, g.caller.foo); - assertSame(caller, g.caller); - } - %NeverOptimizeFunction(g); - - function f() { - (function caller() { g() })(); - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/generic-add.js b/implementation-contributed/v8/mjsunit/compiler/generic-add.js deleted file mode 100644 index f61cd10842c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/generic-add.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function dateL() { - var date = new Date(); - return (date + true) == date.toString() + true; -} - -function dateR() { - var date = new Date(); - return (true + date) == true + date.toString(); -} - -function strL() { - return (new String(1) + true) == "1true"; -} - -function strR() { - return (true + new String(1)) == "true1"; -} - -assertTrue(dateL()); -assertTrue(dateR()); -assertTrue(strL()); -assertTrue(strR()); diff --git a/implementation-contributed/v8/mjsunit/compiler/global-accessors.js b/implementation-contributed/v8/mjsunit/compiler/global-accessors.js deleted file mode 100644 index 337424dc419..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/global-accessors.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This test tests that no bailouts are missing by not hitting asserts in debug -// mode. - -test_count_operation() -test_compound_assignment() - -function f() {} -function test_count_operation() -{ - this.__defineSetter__('x', f); - this.__defineGetter__('x', f); - x = x++; -} - -function test_compound_assignment() -{ - this.__defineSetter__('y', f); - this.__defineGetter__('y', f); - y += y; -} diff --git a/implementation-contributed/v8/mjsunit/compiler/global-delete.js b/implementation-contributed/v8/mjsunit/compiler/global-delete.js deleted file mode 100644 index c32fda6dfaa..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/global-delete.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(expected, f) { - assertEquals(expected, f()); - assertEquals(expected, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); - assertEquals(expected, f()); -} - -function testThrows(f) { - assertThrows(f); - assertThrows(f); - %OptimizeFunctionOnNextCall(f); - assertThrows(f); - assertThrows(f); -} - -// --- Constant case. -a = 11; - -function f1() { return a; } -test(11, f1); - -delete a; - -testThrows(f1); - - -// --- SMI case. - -b = 11; -b = 12; -b = 13; - -function f2() { return b; } -test(13, f2); - -delete b; - -testThrows(f2); - - -// --- double case. - -c = 11; -c = 12.25; -c = 13.25; - -function f3() { return c; } -test(13.25, f3); - -delete c; - -testThrows(f3); - - -// --- tagged case. - -d = 11; -d = 12.25; -d = "hello"; - -function f4() { return d; } -test("hello", f4); - -delete d; - -testThrows(f4); diff --git a/implementation-contributed/v8/mjsunit/compiler/global-var-delete.js b/implementation-contributed/v8/mjsunit/compiler/global-var-delete.js deleted file mode 100644 index a7ea9ea4b11..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/global-var-delete.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(expected, f) { - assertEquals(expected, f()); - assertEquals(expected, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); - assertEquals(expected, f()); -} - -function testThrows(f) { - assertThrows(f); - assertThrows(f); - %OptimizeFunctionOnNextCall(f); - assertThrows(f); - assertThrows(f); -} - -// --- Constant case. -var a = 11; - -function f1() { return a; } -test(11, f1); - -delete a; - -test(11, f1); - - -// --- SMI case. - -var b = 11; -b = 12; -b = 13; - -function f2() { return b; } -test(13, f2); - -delete b; - -test(13, f2); - - -// --- double case. - -var c = 11; -c = 12.25; -c = 13.25; - -function f3() { return c; } -test(13.25, f3); - -delete c; - -test(13.25, f3); - - -// --- tagged case. - -var d = 11; -d = 12.25; -d = "hello"; - -function f4() { return d; } -test("hello", f4); - -delete d; - -test("hello", f4); diff --git a/implementation-contributed/v8/mjsunit/compiler/globals.js b/implementation-contributed/v8/mjsunit/compiler/globals.js deleted file mode 100644 index 3b778daaecd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/globals.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test references and assignments to global variables. -var g = 0; - -// Test compilation of a global variable store. -assertEquals(1, eval('g = 1')); -// Test that the store worked. -assertEquals(1, g); - -// Test that patching the IC in the compiled code works. -assertEquals(1, eval('g = 1')); -assertEquals(1, g); -assertEquals(1, eval('g = 1')); -assertEquals(1, g); - -// Test a second store. -assertEquals("2", eval('g = "2"')); -assertEquals("2", g); - -// Test a load. -assertEquals("2", eval('g')); - -// Test that patching the IC in the compiled code works. -assertEquals("2", eval('g')); -assertEquals("2", eval('g')); - -// Test a second load. -g = 3; -assertEquals(3, eval('g')); - -// Test postfix count operation -var t; -t = g++; -assertEquals(3, t); -assertEquals(4, g); - -code = "g--; 1"; -assertEquals(1, eval(code)); -assertEquals(3, g); - -// Test simple assignment to non-deletable and deletable globals. -var glo1 = 0; -function f1(x) { glo1 = x; } -f1(42); -assertEquals(glo1, 42); - -glo2 = 0; -function f2(x) { glo2 = x; } -f2(42); -assertEquals(42, glo2); diff --git a/implementation-contributed/v8/mjsunit/compiler/increment-typefeedback.js b/implementation-contributed/v8/mjsunit/compiler/increment-typefeedback.js deleted file mode 100644 index 53e5ed678f3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/increment-typefeedback.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -function f(x) { - x++; - return x; -} - -f(0.5); -f(0.5); -%OptimizeFunctionOnNextCall(f); -f(0.5); -assertOptimized(f); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-accessors1.js b/implementation-contributed/v8/mjsunit/compiler/inline-accessors1.js deleted file mode 100644 index daa01ec0226..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-accessors1.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - class O { - get x() { - return 1; - } - } - var o = new O; - - function foo(o) { - try { - return o.x; - } catch (e) { - return 0; - } - } - - assertEquals(1, foo(o)); - assertEquals(1, foo(o)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(o)); -})(); - -(function() { - class O { - get x() { - %DeoptimizeFunction(foo); - return 1; - } - } - var o = new O; - - function foo(o) { - try { - return o.x; - } catch (e) { - return 0; - } - } - - assertEquals(1, foo(o)); - assertEquals(1, foo(o)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(o)); -})(); - -(function() { - function bar(x) { - throw x; - } - - class O { - get x() { - %DeoptimizeFunction(foo); - return bar("x"); - } - } - var o = new O; - - function foo(o) { - try { - return o.x; - } catch (e) { - return 0; - } - } - - assertEquals(0, foo(o)); - assertEquals(0, foo(o)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(o)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-accessors2.js b/implementation-contributed/v8/mjsunit/compiler/inline-accessors2.js deleted file mode 100644 index b3985bf9dc8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-accessors2.js +++ /dev/null @@ -1,368 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --inline-accessors - -var accessorCallCount, setterArgument, setterValue, obj, forceDeopt; - -// ----------------------------------------------------------------------------- -// Helpers for testing inlining of getters. - -function TestInlinedGetter(context, obj, expected) { - forceDeopt = { deopt: 0 }; - accessorCallCount = 0; - - assertEquals(expected, context(obj)); - assertEquals(1, accessorCallCount); - - assertEquals(expected, context(obj)); - assertEquals(2, accessorCallCount); - - %OptimizeFunctionOnNextCall(context); - assertEquals(expected, context(obj)); - assertEquals(3, accessorCallCount); - - forceDeopt = { /* empty*/ }; - assertEquals(expected, context(obj)); - assertEquals(4, accessorCallCount); -} - - -function value_context_for_getter(obj) { - return obj.getterProperty; -} - -function test_context_for_getter(obj) { - if (obj.getterProperty) { - return 111; - } else { - return 222; - } -} - -function effect_context_for_getter(obj) { - obj.getterProperty; - return 5678; -} - -function TryGetter(context, getter, obj, expected, expectException) { - try { - TestInlinedGetter(context, obj, expected); - assertFalse(expectException); - } catch (exception) { - assertTrue(expectException); - assertEquals(7, exception.stack.split('\n').length); - } - %DeoptimizeFunction(context); - %ClearFunctionFeedback(context); - %ClearFunctionFeedback(getter); -} - -function TestGetterInAllContexts(getter, obj, expected, expectException) { - TryGetter(value_context_for_getter, getter, obj, expected, expectException); - TryGetter(test_context_for_getter, getter, obj, expected ? 111 : 222, - expectException); - TryGetter(effect_context_for_getter, getter, obj, 5678, expectException); -} - -// ----------------------------------------------------------------------------- -// Test getter returning something 'true'ish in all contexts. - -function getter1() { - assertSame(obj, this); - accessorCallCount++; - forceDeopt.deopt; - return 1234; -} - -function ConstrG1() { } -obj = Object.defineProperty(new ConstrG1(), "getterProperty", { get: getter1 }); -TestGetterInAllContexts(getter1, obj, 1234, false); -obj = Object.create(obj); -TestGetterInAllContexts(getter1, obj, 1234, false); - -// ----------------------------------------------------------------------------- -// Test getter returning false in all contexts. - -function getter2() { - assertSame(obj, this); - accessorCallCount++; - forceDeopt.deopt; - return false; -} - -function ConstrG2() { } -obj = Object.defineProperty(new ConstrG2(), "getterProperty", { get: getter2 }); -TestGetterInAllContexts(getter2, obj, false, false); -obj = Object.create(obj); -TestGetterInAllContexts(getter2, obj, false, false); - -// ----------------------------------------------------------------------------- -// Test getter without a return in all contexts. - -function getter3() { - assertSame(obj, this); - accessorCallCount++; - forceDeopt.deopt; -} - -function ConstrG3() { } -obj = Object.defineProperty(new ConstrG3(), "getterProperty", { get: getter3 }); -TestGetterInAllContexts(getter3, obj, undefined, false); -obj = Object.create(obj); -TestGetterInAllContexts(getter3, obj, undefined, false); - -// ----------------------------------------------------------------------------- -// Test getter with too many arguments without a return in all contexts. - -function getter4(a) { - assertSame(obj, this); - assertEquals(undefined, a); - accessorCallCount++; - forceDeopt.deopt; -} - -function ConstrG4() { } -obj = Object.defineProperty(new ConstrG4(), "getterProperty", { get: getter4 }); -TestGetterInAllContexts(getter4, obj, undefined, false); -obj = Object.create(obj); -TestGetterInAllContexts(getter4, obj, undefined, false); - -// ----------------------------------------------------------------------------- -// Test getter with too many arguments with a return in all contexts. - -function getter5(a) { - assertSame(obj, this); - assertEquals(undefined, a); - accessorCallCount++; - forceDeopt.deopt; - return 9876; -} - -function ConstrG5() { } -obj = Object.defineProperty(new ConstrG5(), "getterProperty", { get: getter5 }); -TestGetterInAllContexts(getter5, obj, 9876, false); -obj = Object.create(obj); -TestGetterInAllContexts(getter5, obj, 9876, false); - -// ----------------------------------------------------------------------------- -// Test getter which throws from optimized code. - -function getter6() { - assertSame(obj, this); - accessorCallCount++; - forceDeopt.deopt; - if (accessorCallCount == 4) { 123 in null; } - return 13579; -} - -function ConstrG6() { } -obj = Object.defineProperty(new ConstrG6(), "getterProperty", { get: getter6 }); -TestGetterInAllContexts(getter6, obj, 13579, true); -obj = Object.create(obj); -TestGetterInAllContexts(getter6, obj, 13579, true); - -// ----------------------------------------------------------------------------- -// Helpers for testing inlining of setters. - -function TestInlinedSetter(context, obj, value, expected) { - forceDeopt = { deopt: 0 }; - accessorCallCount = 0; - setterArgument = value; - - assertEquals(expected, context(obj, value)); - assertEquals(value, setterValue); - assertEquals(1, accessorCallCount); - - assertEquals(expected, context(obj, value)); - assertEquals(value, setterValue); - assertEquals(2, accessorCallCount); - - %OptimizeFunctionOnNextCall(context); - assertEquals(expected, context(obj, value)); - assertEquals(value, setterValue); - assertEquals(3, accessorCallCount); - - forceDeopt = { /* empty*/ }; - assertEquals(expected, context(obj, value)); - assertEquals(value, setterValue); - assertEquals(4, accessorCallCount); -} - -function value_context_for_setter(obj, value) { - return obj.setterProperty = value; -} - -function test_context_for_setter(obj, value) { - if (obj.setterProperty = value) { - return 333; - } else { - return 444; - } -} - -function effect_context_for_setter(obj, value) { - obj.setterProperty = value; - return 666; -} - -function TrySetter(context, setter, obj, expectException, value, expected) { - try { - TestInlinedSetter(context, obj, value, expected); - assertFalse(expectException); - } catch (exception) { - assertTrue(expectException); - assertEquals(7, exception.stack.split('\n').length); - } - %DeoptimizeFunction(context); - %ClearFunctionFeedback(context); - %ClearFunctionFeedback(setter); -} - -function TestSetterInAllContexts(setter, obj, expectException) { - TrySetter(value_context_for_setter, setter, obj, expectException, 111, 111); - TrySetter(test_context_for_setter, setter, obj, expectException, true, 333); - TrySetter(test_context_for_setter, setter, obj, expectException, false, 444); - TrySetter(effect_context_for_setter, setter, obj, expectException, 555, 666); -} - -// ----------------------------------------------------------------------------- -// Test setter without a return in all contexts. - -function setter1(value) { - assertSame(obj, this); - accessorCallCount++; - forceDeopt.deopt; - setterValue = value; -} - -function ConstrS1() { } -obj = Object.defineProperty(new ConstrS1(), "setterProperty", { set: setter1 }); -TestSetterInAllContexts(setter1, obj, false); -obj = Object.create(obj); -TestSetterInAllContexts(setter1, obj, false); - -// ----------------------------------------------------------------------------- -// Test setter returning something different than the RHS in all contexts. - -function setter2(value) { - assertSame(obj, this); - accessorCallCount++; - forceDeopt.deopt; - setterValue = value; - return 1000000; -} - -function ConstrS2() { } -obj = Object.defineProperty(new ConstrS2(), "setterProperty", { set: setter2 }); -TestSetterInAllContexts(setter2, obj, false); -obj = Object.create(obj); -TestSetterInAllContexts(setter2, obj, false); - -// ----------------------------------------------------------------------------- -// Test setter with too few arguments without a return in all contexts. - -function setter3() { - assertSame(obj, this); - accessorCallCount++; - forceDeopt.deopt; - setterValue = setterArgument; -} - -function ConstrS3() { } -obj = Object.defineProperty(new ConstrS3(), "setterProperty", { set: setter3 }); -TestSetterInAllContexts(setter3, obj, false); -obj = Object.create(obj); -TestSetterInAllContexts(setter3, obj, false); - -// ----------------------------------------------------------------------------- -// Test setter with too few arguments with a return in all contexts. - -function setter4() { - assertSame(obj, this); - accessorCallCount++; - forceDeopt.deopt; - setterValue = setterArgument; - return 2000000; -} - -function ConstrS4() { } -obj = Object.defineProperty(new ConstrS4(), "setterProperty", { set: setter4 }); -TestSetterInAllContexts(setter4, obj, false); -obj = Object.create(obj); -TestSetterInAllContexts(setter4, obj, false); - -// ----------------------------------------------------------------------------- -// Test setter with too many arguments without a return in all contexts. - -function setter5(value, foo) { - assertSame(obj, this); - assertEquals(undefined, foo); - accessorCallCount++; - forceDeopt.deopt; - setterValue = value; -} - -function ConstrS5() { } -obj = Object.defineProperty(new ConstrS5(), "setterProperty", { set: setter5 }); -TestSetterInAllContexts(setter5, obj, false); -obj = Object.create(obj); -TestSetterInAllContexts(setter5, obj, false); - -// ----------------------------------------------------------------------------- -// Test setter with too many arguments with a return in all contexts. - -function setter6(value, foo) { - assertSame(obj, this); - assertEquals(undefined, foo); - accessorCallCount++; - forceDeopt.deopt; - setterValue = value; - return 3000000; -} - -function ConstrS6() { } -obj = Object.defineProperty(new ConstrS6(), "setterProperty", { set: setter6 }); -TestSetterInAllContexts(setter6, obj, false); -obj = Object.create(obj); -TestSetterInAllContexts(setter6, obj, false); - -// ----------------------------------------------------------------------------- -// Test setter which throws from optimized code. - -function setter7(value) { - accessorCallCount++; - forceDeopt.deopt; - if (accessorCallCount == 4) { 123 in null; } - setterValue = value; -} - -function ConstrS7() { } -obj = Object.defineProperty(new ConstrS7(), "setterProperty", { set: setter7 }); -TestSetterInAllContexts(setter7, obj, true); -obj = Object.create(obj); -TestSetterInAllContexts(setter7, obj, true); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-arguments.js b/implementation-contributed/v8/mjsunit/compiler/inline-arguments.js deleted file mode 100644 index 13f4a33e7bf..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-arguments.js +++ /dev/null @@ -1,311 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function A() { -} - -A.prototype.X = function (a, b, c) { - assertTrue(this instanceof A); - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); -}; - -A.prototype.Y = function () { - this.X.apply(this, arguments); -}; - -A.prototype.Z = function () { - this.Y(1,2,3); -}; - -var a = new A(); -a.Z(4,5,6); -a.Z(4,5,6); -%OptimizeFunctionOnNextCall(a.Z); -a.Z(4,5,6); -A.prototype.X.apply = function (receiver, args) { - return Function.prototype.apply.call(this, receiver, args); -}; -a.Z(4,5,6); - - -// Ensure that HArgumentsObject is inserted in a correct place -// and dominates all uses. -function F1() { } -function F2() { F1.apply(this, arguments); } -function F3(x, y) { - if (x) { - F2(y); - } -} - -function F31() { - return F1.apply(this, arguments); -} - -function F4() { - F3(true, false); - return F31(1); -} - -F4(1); -F4(1); -F4(1); -%OptimizeFunctionOnNextCall(F4); -F4(1); - - -// Test correct adapation of arguments. -// Strict mode prevents arguments object from shadowing parameters. -(function () { - "use strict"; - - function G2() { - assertArrayEquals([1,2], arguments); - } - - function G4() { - assertArrayEquals([1,2,3,4], arguments); - } - - function adapt2to4(a, b, c, d) { - G2.apply(this, arguments); - } - - function adapt4to2(a, b) { - G4.apply(this, arguments); - } - - function test_adaptation() { - adapt2to4(1, 2); - adapt4to2(1, 2, 3, 4); - } - - test_adaptation(); - test_adaptation(); - %OptimizeFunctionOnNextCall(test_adaptation); - test_adaptation(); -})(); - -// Test arguments access from the inlined function. -%NeverOptimizeFunction(uninlinable); -function uninlinable(v) { - assertEquals(0, v); - return 0; -} - -function toarr_inner() { - var a = arguments; - var marker = a[0]; - uninlinable(uninlinable(0, 0), marker.x); - - var r = new Array(); - for (var i = a.length - 1; i >= 1; i--) { - r.push(a[i]); - } - - return r; -} - -function toarr1(marker, a, b, c) { - return toarr_inner(marker, a / 2, b / 2, c / 2); -} - -function toarr2(marker, a, b, c) { - var x = 0; - return uninlinable(uninlinable(0, 0), - x = toarr_inner(marker, a / 2, b / 2, c / 2)), x; -} - -function test_toarr(toarr) { - var marker = { x: 0 }; - assertArrayEquals([3, 2, 1], toarr(marker, 2, 4, 6)); - assertArrayEquals([3, 2, 1], toarr(marker, 2, 4, 6)); - %OptimizeFunctionOnNextCall(toarr); - assertArrayEquals([3, 2, 1], toarr(marker, 2, 4, 6)); - delete marker.x; - assertArrayEquals([3, 2, 1], toarr(marker, 2, 4, 6)); -} - -test_toarr(toarr1); -test_toarr(toarr2); - - -// Test that arguments access from inlined function uses correct values. -(function () { - function inner(x, y) { - "use strict"; - x = 10; - y = 20; - for (var i = 0; i < 1; i++) { - for (var j = 1; j <= arguments.length; j++) { - return arguments[arguments.length - j]; - } - } - } - - function outer(x, y) { - return inner(x, y); - } - - %OptimizeFunctionOnNextCall(outer); - %OptimizeFunctionOnNextCall(inner); - assertEquals(2, outer(1, 2)); -})(); - - -(function () { - function inner(x, y) { - "use strict"; - x = 10; - y = 20; - for (var i = 0; i < 1; i++) { - for (var j = 1; j <= arguments.length; j++) { - return arguments[arguments.length - j]; - } - } - } - - function outer(x, y) { - return inner(x, y); - } - - assertEquals(2, outer(1, 2)); - assertEquals(2, outer(1, 2)); - assertEquals(2, outer(1, 2)); - %OptimizeFunctionOnNextCall(outer); - assertEquals(2, outer(1, 2)); -})(); - - -// Test inlining and deoptimization of functions accessing and modifying -// the arguments object in strict mode with mismatched arguments count. -(function () { - "use strict"; - function test(outerCount, middleCount, innerCount) { - var forceDeopt = { deopt:false }; - function inner(x,y) { - x = 0; y = 0; - forceDeopt.deopt; - assertSame(innerCount, arguments.length); - for (var i = 0; i < arguments.length; i++) { - assertSame(30 + i, arguments[i]); - } - } - - function middle(x,y) { - x = 0; y = 0; - if (innerCount == 1) inner(30); - if (innerCount == 2) inner(30, 31); - if (innerCount == 3) inner(30, 31, 32); - assertSame(middleCount, arguments.length); - for (var i = 0; i < arguments.length; i++) { - assertSame(20 + i, arguments[i]); - } - } - - function outer(x,y) { - x = 0; y = 0; - if (middleCount == 1) middle(20); - if (middleCount == 2) middle(20, 21); - if (middleCount == 3) middle(20, 21, 22); - assertSame(outerCount, arguments.length); - for (var i = 0; i < arguments.length; i++) { - assertSame(10 + i, arguments[i]); - } - } - - for (var step = 0; step < 4; step++) { - if (outerCount == 1) outer(10); - if (outerCount == 2) outer(10, 11); - if (outerCount == 3) outer(10, 11, 12); - if (step == 1) %OptimizeFunctionOnNextCall(outer); - if (step == 2) delete forceDeopt.deopt; - } - - %DeoptimizeFunction(outer); - %DeoptimizeFunction(middle); - %DeoptimizeFunction(inner); - %ClearFunctionFeedback(outer); - %ClearFunctionFeedback(middle); - %ClearFunctionFeedback(inner); - } - - for (var a = 1; a <= 3; a++) { - for (var b = 1; b <= 3; b++) { - for (var c = 1; c <= 3; c++) { - test(a,b,c); - } - } - } -})(); - - -// Test materialization of arguments object with values in registers. -(function () { - "use strict"; - var forceDeopt = { deopt:false }; - function inner(a,b,c,d,e,f,g,h,i,j) { - var args = arguments; - forceDeopt.deopt; - assertSame(10, args.length); - assertSame(a, args[0]); - assertSame(b, args[1]); - assertSame(c, args[2]); - assertSame(d, args[3]); - assertSame(e, args[4]); - assertSame(f, args[5]); - assertSame(g, args[6]); - assertSame(h, args[7]); - assertSame(i, args[8]); - assertSame(j, args[9]); - } - - var a = 0.5; - var b = 1.7; - var c = 123; - function outer() { - inner( - a - 0.3, // double in double register - b + 2.3, // integer in double register - c + 321, // integer in general register - c - 456, // integer in stack slot - a + 0.1, a + 0.2, a + 0.3, a + 0.4, a + 0.5, - a + 0.6 // double in stack slot - ); - } - - outer(); - outer(); - %OptimizeFunctionOnNextCall(outer); - outer(); - delete forceDeopt.deopt; - outer(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-arity-mismatch.js b/implementation-contributed/v8/mjsunit/compiler/inline-arity-mismatch.js deleted file mode 100644 index 4a61fa3a62c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-arity-mismatch.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test inlining at call sites with mismatched arity. - -function f(a) { - return a.x; -} - -function g(a, b) { - return a.x; -} - -function h1(a, b) { - return f(a, a) * g(b); -} - -function h2(a, b) { - return f(a, a) * g(b); -} - - -var o = {x: 2}; - -assertEquals(4, h1(o, o)); -assertEquals(4, h1(o, o)); -assertEquals(4, h2(o, o)); -assertEquals(4, h2(o, o)); -%OptimizeFunctionOnNextCall(h1); -%OptimizeFunctionOnNextCall(h2); -assertEquals(4, h1(o, o)); -assertEquals(4, h2(o, o)); - -var u = {y:0, x:1}; -assertEquals(2, h1(u, o)); -assertEquals(2, h2(o, u)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-closures.js b/implementation-contributed/v8/mjsunit/compiler/inline-closures.js deleted file mode 100644 index 69161e505e5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-closures.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test inlining of multiple closures derived from one shared function. - -function mkClosure(continuation) { - return function(value) { - if (continuation == 'g') return this.g(value); - if (continuation == 'h') return this.h(value); - return value.value; - } -} - -var object = {}; -object.f = mkClosure('g'); -object.g = mkClosure('h'); -object.h = mkClosure('x'); - -assertSame(1, object.f({value:1})); -assertSame(2, object.f({value:2})); -%OptimizeFunctionOnNextCall(object.f); -assertSame(3, object.f({value:3})); -assertSame(undefined, object.f({})); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-compare.js b/implementation-contributed/v8/mjsunit/compiler/inline-compare.js deleted file mode 100644 index d97dce2e96b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-compare.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we can inline a function that returns the result of -// a compare operation. -function TestInlineCompare(o) { - // Effect context. - o.f(); - // Value context. - var x = o.f(); - assertFalse(x); - assertFalse(o.f()); - // Test context. - if (o.f()) { - assertTrue(false); // Should not happen. - } -} - -var o = {}; -o.f = function() { return 0 === 1; }; -for (var i = 0; i < 5; i++) TestInlineCompare(o); -%OptimizeFunctionOnNextCall(TestInlineCompare); -TestInlineCompare(o); -TestInlineCompare({f: o.f}); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-conditional.js b/implementation-contributed/v8/mjsunit/compiler/inline-conditional.js deleted file mode 100644 index 941f74a1156..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-conditional.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we can inline a function that returns the result of -// a conditional operation. -function TestInlineConditional(o) { - // Effect context. - o.f(); - // Value context. - var x = o.f(); - assertEquals(87, x); - assertEquals(87, o.f()); - // Test context. - if (!o.f()) { - assertTrue(false); // Should not happen. - } -} - -var o = {x:false,y:42,z:87}; -o.f = function() { return this.x ? this.y : this.z; }; -for (var i = 0; i < 10000; i++) TestInlineConditional(o); -TestInlineConditional({x:true,y:87,z:42,f: o.f}); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-construct.js b/implementation-contributed/v8/mjsunit/compiler/inline-construct.js deleted file mode 100644 index 111c0f32add..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-construct.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test inlining of constructor calls. - -function TestInlinedConstructor(constructor, closure) { - var result; - var counter = { value:0 }; - var noDeopt = { deopt:0 }; - var forceDeopt = { /*empty*/ }; - - result = closure(constructor, 11, noDeopt, counter); - assertEquals(11, result); - assertEquals(1, counter.value); - - result = closure(constructor, 23, noDeopt, counter); - assertEquals(23, result); - assertEquals(2, counter.value); - - %OptimizeFunctionOnNextCall(closure); - result = closure(constructor, 42, noDeopt, counter); - assertEquals(42, result); - assertEquals(3, counter.value); - - result = closure(constructor, 127, forceDeopt, counter); - assertEquals(127, result) - assertEquals(4, counter.value); - - %DeoptimizeFunction(closure); - %ClearFunctionFeedback(closure); - %ClearFunctionFeedback(constructor); -} - -function value_context(constructor, val, deopt, counter) { - var obj = new constructor(val, deopt, counter); - return obj.x; -} - -function test_context(constructor, val, deopt, counter) { - if (!new constructor(val, deopt, counter)) { - assertUnreachable("should not happen"); - } - return val; -} - -function effect_context(constructor, val, deopt, counter) { - new constructor(val, deopt, counter); - return val; -} - -function TestInAllContexts(constructor) { - TestInlinedConstructor(constructor, value_context); - TestInlinedConstructor(constructor, test_context); - TestInlinedConstructor(constructor, effect_context); -} - - -// Test constructor returning nothing in all contexts. -function c1(val, deopt, counter) { - deopt.deopt; - this.x = val; - counter.value++; -} -TestInAllContexts(c1); - - -// Test constructor returning an object in all contexts. -function c2(val, deopt, counter) { - var obj = {}; - deopt.deopt; - obj.x = val; - counter.value++; - return obj; -} -TestInAllContexts(c2); - - -// Test constructor returning a primitive value in all contexts. -function c3(val, deopt, counter) { - deopt.deopt; - this.x = val; - counter.value++; - return "not an object"; -} -TestInAllContexts(c3); - - -// Test constructor called with too many arguments. -function c_too_many(a, b) { - this.x = a + b; -} -function f_too_many(a, b, c) { - var obj = new c_too_many(a, b, c); - return obj.x; -} -assertEquals(23, f_too_many(11, 12, 1)); -assertEquals(42, f_too_many(23, 19, 1)); -%OptimizeFunctionOnNextCall(f_too_many); -assertEquals(43, f_too_many(1, 42, 1)); -assertEquals("foobar", f_too_many("foo", "bar", "baz")) - - -// Test constructor called with too few arguments. -function c_too_few(a, b) { - assertSame(undefined, b); - this.x = a + 1; -} -function f_too_few(a) { - var obj = new c_too_few(a); - return obj.x; -} -assertEquals(12, f_too_few(11)); -assertEquals(24, f_too_few(23)); -%OptimizeFunctionOnNextCall(f_too_few); -assertEquals(2, f_too_few(1)); -assertEquals("foo1", f_too_few("foo")) - - -// Test constructor that cannot be inlined. -function c_unsupported_syntax(val, deopt, counter) { - try { - deopt.deopt; - this.x = val; - counter.value++; - } catch(e) { - throw new Error(); - } -} -TestInAllContexts(c_unsupported_syntax); - - -// Regression test: Inlined constructors called as functions do not get their -// implicit receiver object set to undefined, even in strict mode. -function c_strict(val, deopt, counter) { - "use strict"; - deopt.deopt; - this.x = val; - counter.value++; -} -TestInAllContexts(c_strict); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-context-deopt.js b/implementation-contributed/v8/mjsunit/compiler/inline-context-deopt.js deleted file mode 100644 index ef134ad9704..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-context-deopt.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(s) { - %DeoptimizeFunction(bar); - var x = 12; - return s + x; -} - -function bar(s, t) { - return foo(s); -} - -%OptimizeFunctionOnNextCall(bar); -assertEquals(13, bar(1, 2)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-context-slots.js b/implementation-contributed/v8/mjsunit/compiler/inline-context-slots.js deleted file mode 100644 index d0e907b1e5e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-context-slots.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test inlining of functions with context slots. - -// Flags: --allow-natives-syntax - - -// Caller/callee without a local context. - -(function() { - var X = 5; - var Y = 10; - function F() {} - F.prototype.max = function() { - return X > Y ? X : Y; - } - F.prototype.run = function() { - return this.max(); - } - var f = new F(); - for (var i=0; i<5; i++) f.run(); - %OptimizeFunctionOnNextCall(f.run); - assertEquals(10, f.run()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-dead-jscreate.js b/implementation-contributed/v8/mjsunit/compiler/inline-dead-jscreate.js deleted file mode 100644 index a9778758c44..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-dead-jscreate.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var bar = 0; - -function baz() { return this; } - -function foo() { - bar += 1; - if (bar === 2) throw new baz(); -} - -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-exception-1.js b/implementation-contributed/v8/mjsunit/compiler/inline-exception-1.js deleted file mode 100644 index 8da6845c3bf..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-exception-1.js +++ /dev/null @@ -1,2219 +0,0 @@ -// Shard 1. - -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt - -// This test file was generated by tools/gen-inlining-tests.py . - -// Global variables -var deopt = undefined; // either true or false -var counter = 0; - -function resetState() { - counter = 0; -} - -function warmUp(f) { - try { - f(); - } catch (ex) { - // ok - } - try { - f(); - } catch (ex) { - // ok - } -} - -function resetOptAndAssertResultEquals(expected, f) { - warmUp(f); - resetState(); - // %DebugPrint(f); - eval("'dont optimize this function itself please, but do optimize f'"); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); -} - -function resetOptAndAssertThrowsWith(expected, f) { - warmUp(f); - resetState(); - // %DebugPrint(f); - eval("'dont optimize this function itself please, but do optimize f'"); - %OptimizeFunctionOnNextCall(f); - try { - var result = f(); - fail("resetOptAndAssertThrowsWith", - "exception: " + expected, - "result: " + result); - } catch (ex) { - assertEquals(expected, ex); - } -} - -function increaseAndReturn15() { - if (deopt) %DeoptimizeFunction(f); - counter++; - return 15; -} - -function increaseAndThrow42() { - if (deopt) %DeoptimizeFunction(f); - counter++; - throw 42; -} - -function increaseAndReturn15_noopt_inner() { - if (deopt) %DeoptimizeFunction(f); - counter++; - return 15; -} - -%NeverOptimizeFunction(increaseAndReturn15_noopt_inner); - -function increaseAndThrow42_noopt_inner() { - if (deopt) %DeoptimizeFunction(f); - counter++; - throw 42; -} - -%NeverOptimizeFunction(increaseAndThrow42_noopt_inner); - -// Alternative 1 - -function returnOrThrow(doReturn) { - if (doReturn) { - return increaseAndReturn15(); - } else { - return increaseAndThrow42(); - } -} - -// Alternative 2 - -function increaseAndReturn15_calls_noopt() { - return increaseAndReturn15_noopt_inner(); -} - -function increaseAndThrow42_calls_noopt() { - return increaseAndThrow42_noopt_inner(); -} - -// Alternative 3. -// When passed either {increaseAndReturn15} or {increaseAndThrow42}, it acts -// as the other one. -function invertFunctionCall(f) { - var result; - try { - result = f(); - } catch (ex) { - return ex - 27; - } - throw result + 27; -} - -// Alternative 4: constructor -function increaseAndStore15Constructor() { - if (deopt) %DeoptimizeFunction(f); - ++counter; - this.x = 15; -} - -function increaseAndThrow42Constructor() { - if (deopt) %DeoptimizeFunction(f); - ++counter; - this.x = 42; - throw this.x; -} - -// Alternative 5: property -var magic = {}; -Object.defineProperty(magic, 'prop', { - get: function () { - if (deopt) %DeoptimizeFunction(f); - return 15 + 0 * ++counter; - }, - - set: function(x) { - // argument should be 37 - if (deopt) %DeoptimizeFunction(f); - counter -= 36 - x; // increments counter - throw 42; - } -}) - -// Generate type feedback. - -assertEquals(15, increaseAndReturn15_calls_noopt()); -assertThrowsEquals(function() { return increaseAndThrow42_noopt_inner() }, 42); - -assertEquals(15, (new increaseAndStore15Constructor()).x); -assertThrowsEquals(function() { - return (new increaseAndThrow42Constructor()).x; - }, - 42); - -function runThisShard() { - - // Variant flags: [tryReturns, doFinally] - - f = function f_______r______f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(4, counter); - - // Variant flags: [tryReturns, doFinally, finallyThrows] - - f = function f_______r______f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryReturns, doFinally, finallyReturns] - - f = function f_______r______fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [tryReturns, doCatch] - - f = function f_______r__c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [tryReturns, doCatch, deopt] - - f = function f_______r__c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [tryReturns, doCatch, doFinally] - - f = function f_______r__c___f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(4, counter); - - // Variant flags: [tryReturns, doCatch, doFinally, finallyThrows] - - f = function f_______r__c___f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryReturns, doCatch, doFinally, finallyReturns] - - f = function f_______r__c___fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [tryReturns, doCatch, catchThrows] - - f = function f_______r__c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [tryReturns, doCatch, catchThrows, deopt] - - f = function f_______r__c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [tryReturns, doCatch, catchThrows, doFinally] - - f = function f_______r__c__tf____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(4, counter); - - // Variant flags: [tryReturns, doCatch, catchThrows, doFinally, - // finallyThrows] - - f = function f_______r__c__tf_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryReturns, doCatch, catchThrows, doFinally, - // finallyReturns] - - f = function f_______r__c__tfr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [tryReturns, doCatch, catchReturns] - - f = function f_______r__cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [tryReturns, doCatch, catchReturns, deopt] - - f = function f_______r__cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [tryReturns, doCatch, catchReturns, doFinally] - - f = function f_______r__cr__f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(4, counter); - - // Variant flags: [tryReturns, doCatch, catchReturns, doFinally, - // finallyThrows] - - f = function f_______r__cr__f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryReturns, doCatch, catchReturns, doFinally, - // finallyReturns] - - f = function f_______r__cr__fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, doFinally] - - f = function f______t_______f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(42, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, doFinally, finallyThrows] - - f = function f______t_______f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, doFinally, finallyReturns] - - f = function f______t_______fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, doCatch] - - f = function f______t___c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, doCatch, deopt] - - f = function f______t___c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, doCatch, doFinally] - - f = function f______t___c___f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(7, counter); - - // Variant flags: [tryThrows, doCatch, doFinally, finallyThrows] - - f = function f______t___c___f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, doCatch, doFinally, finallyReturns] - - f = function f______t___c___fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, doCatch, catchThrows] - - f = function f______t___c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, doCatch, catchThrows, deopt] - - f = function f______t___c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, doCatch, catchThrows, doFinally] - - f = function f______t___c__tf____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, doCatch, catchThrows, doFinally, - // finallyThrows] - - f = function f______t___c__tf_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, doCatch, catchThrows, doFinally, - // finallyReturns] - - f = function f______t___c__tfr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, doCatch, catchReturns] - - f = function f______t___cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, doCatch, catchReturns, deopt] - - f = function f______t___cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, doCatch, catchReturns, doFinally] - - f = function f______t___cr__f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, doCatch, catchReturns, doFinally, - // finallyThrows] - - f = function f______t___cr__f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, doCatch, catchReturns, doFinally, - // finallyReturns] - - f = function f______t___cr__fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, doFinally] - - f = function f______tr______f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(42, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, doFinally, finallyThrows] - - f = function f______tr______f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, doFinally, finallyReturns] - - f = function f______tr______fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch] - - f = function f______tr__c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, doFinally] - - f = function f______tr__c___f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(7, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, doFinally, - // finallyThrows] - - f = function f______tr__c___f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, doFinally, - // finallyReturns] - - f = function f______tr__c___fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, catchThrows] - - f = function f______tr__c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, catchThrows, - // doFinally] - - f = function f______tr__c__tf____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, catchThrows, - // doFinally, finallyThrows] - - f = function f______tr__c__tf_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, catchThrows, - // doFinally, finallyReturns] - - f = function f______tr__c__tfr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, catchReturns] - - f = function f______tr__cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, catchReturns, - // doFinally] - - f = function f______tr__cr__f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(5, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, catchReturns, - // doFinally, finallyThrows] - - f = function f______tr__cr__f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, doCatch, catchReturns, - // doFinally, finallyReturns] - - f = function f______tr__cr__fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndThrow42(); - return 4 + increaseAndReturn15(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, - // doFinally] - - f = function f______trf_____f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, - // doFinally, finallyThrows] - - f = function f______trf_____f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, - // doFinally, finallyReturns] - - f = function f______trf_____fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch] - - f = function f______trf_c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // doFinally] - - f = function f______trf_c___f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // doFinally, finallyThrows] - - f = function f______trf_c___f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // doFinally, finallyReturns] - - f = function f______trf_c___fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // catchThrows] - - f = function f______trf_c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // catchThrows, doFinally] - - f = function f______trf_c__tf____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // catchThrows, doFinally, finallyThrows] - - f = function f______trf_c__tf_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // catchThrows, doFinally, finallyReturns] - - f = function f______trf_c__tfr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // catchReturns] - - f = function f______trf_cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // catchReturns, doFinally] - - f = function f______trf_cr__f____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - local += 2; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(4, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // catchReturns, doFinally, finallyThrows] - - f = function f______trf_cr__f_t__ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - throw 25; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(25, f); - assertEquals(3, counter); - - // Variant flags: [tryThrows, tryReturns, tryFirstReturns, doCatch, - // catchReturns, doFinally, finallyReturns] - - f = function f______trf_cr__fr___ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + increaseAndReturn15(); - return 4 + increaseAndThrow42(); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } finally { - counter++; - return 3 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(891, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn1, tryReturns, doCatch] - - f = function f_____1_r__c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + returnOrThrow(true); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn1, tryReturns, doCatch, deopt] - - f = function f_____1_r__c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + returnOrThrow(true); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn1, tryReturns, doCatch, catchThrows] - - f = function f_____1_r__c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + returnOrThrow(true); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn1, tryReturns, doCatch, catchThrows, - // deopt] - - f = function f_____1_r__c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + returnOrThrow(true); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn1, tryReturns, doCatch, - // catchReturns] - - f = function f_____1_r__cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + returnOrThrow(true); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn1, tryReturns, doCatch, - // catchReturns, deopt] - - f = function f_____1_r__cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + returnOrThrow(true); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn1, tryThrows, doCatch] - - f = function f_____1t___c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + returnOrThrow(false); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn1, tryThrows, doCatch, deopt] - - f = function f_____1t___c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + returnOrThrow(false); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn1, tryThrows, doCatch, catchThrows] - - f = function f_____1t___c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + returnOrThrow(false); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn1, tryThrows, doCatch, catchThrows, - // deopt] - - f = function f_____1t___c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + returnOrThrow(false); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn1, tryThrows, doCatch, catchReturns] - - f = function f_____1t___cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + returnOrThrow(false); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn1, tryThrows, doCatch, catchReturns, - // deopt] - - f = function f_____1t___cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + returnOrThrow(false); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn2, tryReturns, doCatch, - // catchWithLocal, endReturnLocal, deopt] - - f = function f____2__r__c_l____ld () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + increaseAndReturn15_calls_noopt(); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn2, tryReturns, tryResultToLocal, - // doCatch, endReturnLocal, deopt] - - f = function f____2__r_lc______ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + increaseAndReturn15_calls_noopt(); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn2, tryReturns, tryResultToLocal, - // doCatch, catchWithLocal, endReturnLocal, deopt] - - f = function f____2__r_lc_l____ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + increaseAndReturn15_calls_noopt(); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn2, tryThrows, doCatch, - // catchWithLocal, endReturnLocal, deopt] - - f = function f____2_t___c_l____ld () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + increaseAndThrow42_calls_noopt(); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(935, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn2, tryThrows, tryResultToLocal, - // doCatch, endReturnLocal, deopt] - - f = function f____2_t__lc______ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + increaseAndThrow42_calls_noopt(); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(893, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn2, tryThrows, tryResultToLocal, - // doCatch, catchWithLocal, endReturnLocal, deopt] - - f = function f____2_t__lc_l____ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + increaseAndThrow42_calls_noopt(); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(935, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch] - - f = function f___3___r__c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, deopt] - - f = function f___3___r__c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, catchThrows] - - f = function f___3___r__c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, catchThrows, - // deopt] - - f = function f___3___r__c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchWithLocal] - - f = function f___3___r__c_l______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchWithLocal, deopt] - - f = function f___3___r__c_l_____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchWithLocal, endReturnLocal] - - f = function f___3___r__c_l____l_ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchWithLocal, endReturnLocal, deopt] - - f = function f___3___r__c_l____ld () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchWithLocal, catchThrows] - - f = function f___3___r__c_lt_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchWithLocal, catchThrows, deopt] - - f = function f___3___r__c_lt____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchWithLocal, catchThrows, endReturnLocal] - - f = function f___3___r__c_lt___l_ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchWithLocal, catchThrows, endReturnLocal, deopt] - - f = function f___3___r__c_lt___ld () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchReturns] - - f = function f___3___r__cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - -} -%NeverOptimizeFunction(runThisShard); - -// 97 tests in this shard. -// 97 tests up to here. - -runThisShard(); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-exception-2.js b/implementation-contributed/v8/mjsunit/compiler/inline-exception-2.js deleted file mode 100644 index 6dbc7a478b3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-exception-2.js +++ /dev/null @@ -1,2063 +0,0 @@ -// Shard 2. - -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt - -// This test file was generated by tools/gen-inlining-tests.py . - -// Global variables -var deopt = undefined; // either true or false -var counter = 0; - -function resetState() { - counter = 0; -} - -function warmUp(f) { - try { - f(); - } catch (ex) { - // ok - } - try { - f(); - } catch (ex) { - // ok - } -} - -function resetOptAndAssertResultEquals(expected, f) { - warmUp(f); - resetState(); - // %DebugPrint(f); - eval("'dont optimize this function itself please, but do optimize f'"); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); -} - -function resetOptAndAssertThrowsWith(expected, f) { - warmUp(f); - resetState(); - // %DebugPrint(f); - eval("'dont optimize this function itself please, but do optimize f'"); - %OptimizeFunctionOnNextCall(f); - try { - var result = f(); - fail("resetOptAndAssertThrowsWith", - "exception: " + expected, - "result: " + result); - } catch (ex) { - assertEquals(expected, ex); - } -} - -function increaseAndReturn15() { - if (deopt) %DeoptimizeFunction(f); - counter++; - return 15; -} - -function increaseAndThrow42() { - if (deopt) %DeoptimizeFunction(f); - counter++; - throw 42; -} - -function increaseAndReturn15_noopt_inner() { - if (deopt) %DeoptimizeFunction(f); - counter++; - return 15; -} - -%NeverOptimizeFunction(increaseAndReturn15_noopt_inner); - -function increaseAndThrow42_noopt_inner() { - if (deopt) %DeoptimizeFunction(f); - counter++; - throw 42; -} - -%NeverOptimizeFunction(increaseAndThrow42_noopt_inner); - -// Alternative 1 - -function returnOrThrow(doReturn) { - if (doReturn) { - return increaseAndReturn15(); - } else { - return increaseAndThrow42(); - } -} - -// Alternative 2 - -function increaseAndReturn15_calls_noopt() { - return increaseAndReturn15_noopt_inner(); -} - -function increaseAndThrow42_calls_noopt() { - return increaseAndThrow42_noopt_inner(); -} - -// Alternative 3. -// When passed either {increaseAndReturn15} or {increaseAndThrow42}, it acts -// as the other one. -function invertFunctionCall(f) { - var result; - try { - result = f(); - } catch (ex) { - return ex - 27; - } - throw result + 27; -} - -// Alternative 4: constructor -function increaseAndStore15Constructor() { - if (deopt) %DeoptimizeFunction(f); - ++counter; - this.x = 15; -} - -function increaseAndThrow42Constructor() { - if (deopt) %DeoptimizeFunction(f); - ++counter; - this.x = 42; - throw this.x; -} - -// Alternative 5: property -var magic = {}; -Object.defineProperty(magic, 'prop', { - get: function () { - if (deopt) %DeoptimizeFunction(f); - return 15 + 0 * ++counter; - }, - - set: function(x) { - // argument should be 37 - if (deopt) %DeoptimizeFunction(f); - counter -= 36 - x; // increments counter - throw 42; - } -}) - -// Generate type feedback. - -assertEquals(15, increaseAndReturn15_calls_noopt()); -assertThrowsEquals(function() { return increaseAndThrow42_noopt_inner() }, 42); - -assertEquals(15, (new increaseAndStore15Constructor()).x); -assertThrowsEquals(function() { - return (new increaseAndThrow42Constructor()).x; - }, - 42); - -function runThisShard() { - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchReturns, deopt] - - f = function f___3___r__cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchReturns, catchWithLocal] - - f = function f___3___r__crl______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchReturns, catchWithLocal, deopt] - - f = function f___3___r__crl_____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchReturns, catchWithLocal, endReturnLocal] - - f = function f___3___r__crl____l_ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, doCatch, - // catchReturns, catchWithLocal, endReturnLocal, deopt] - - f = function f___3___r__crl____ld () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch] - - f = function f___3___r_lc________ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, deopt] - - f = function f___3___r_lc_______d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, endReturnLocal] - - f = function f___3___r_lc______l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, endReturnLocal, deopt] - - f = function f___3___r_lc______ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchThrows] - - f = function f___3___r_lc__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchThrows, deopt] - - f = function f___3___r_lc__t____d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchThrows, endReturnLocal] - - f = function f___3___r_lc__t___l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchThrows, endReturnLocal, deopt] - - f = function f___3___r_lc__t___ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchWithLocal] - - f = function f___3___r_lc_l______ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchWithLocal, deopt] - - f = function f___3___r_lc_l_____d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchWithLocal, endReturnLocal] - - f = function f___3___r_lc_l____l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchWithLocal, endReturnLocal, deopt] - - f = function f___3___r_lc_l____ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchWithLocal, catchThrows] - - f = function f___3___r_lc_lt_____ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchWithLocal, catchThrows, deopt] - - f = function f___3___r_lc_lt____d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchWithLocal, catchThrows, endReturnLocal] - - f = function f___3___r_lc_lt___l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchWithLocal, catchThrows, endReturnLocal, deopt] - - f = function f___3___r_lc_lt___ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchReturns] - - f = function f___3___r_lcr_______ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchReturns, deopt] - - f = function f___3___r_lcr______d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchReturns, endReturnLocal] - - f = function f___3___r_lcr_____l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchReturns, endReturnLocal, deopt] - - f = function f___3___r_lcr_____ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchReturns, catchWithLocal] - - f = function f___3___r_lcrl______ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchReturns, catchWithLocal, deopt] - - f = function f___3___r_lcrl_____d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchReturns, catchWithLocal, endReturnLocal] - - f = function f___3___r_lcrl____l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryReturns, tryResultToLocal, - // doCatch, catchReturns, catchWithLocal, endReturnLocal, deopt] - - f = function f___3___r_lcrl____ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndThrow42); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(912, f); - assertEquals(4, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch] - - f = function f___3__t___c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, deopt] - - f = function f___3__t___c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, catchThrows] - - f = function f___3__t___c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, catchThrows, - // deopt] - - f = function f___3__t___c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, - // catchWithLocal] - - f = function f___3__t___c_l______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, - // catchWithLocal, deopt] - - f = function f___3__t___c_l_____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, - // catchWithLocal, endReturnLocal] - - f = function f___3__t___c_l____l_ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(935, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, - // catchWithLocal, endReturnLocal, deopt] - - f = function f___3__t___c_l____ld () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(935, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, - // catchWithLocal, catchThrows] - - f = function f___3__t___c_lt_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, - // catchWithLocal, catchThrows, deopt] - - f = function f___3__t___c_lt____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, - // catchWithLocal, catchThrows, endReturnLocal] - - f = function f___3__t___c_lt___l_ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, - // catchWithLocal, catchThrows, endReturnLocal, deopt] - - f = function f___3__t___c_lt___ld () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns] - - f = function f___3__t___cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns, - // deopt] - - f = function f___3__t___cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns, - // catchWithLocal] - - f = function f___3__t___crl______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(890, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns, - // catchWithLocal, deopt] - - f = function f___3__t___crl_____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(890, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns, - // catchWithLocal, endReturnLocal] - - f = function f___3__t___crl____l_ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(890, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, doCatch, catchReturns, - // catchWithLocal, endReturnLocal, deopt] - - f = function f___3__t___crl____ld () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(890, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch] - - f = function f___3__t__lc________ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, deopt] - - f = function f___3__t__lc_______d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, endReturnLocal] - - f = function f___3__t__lc______l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(893, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, endReturnLocal, deopt] - - f = function f___3__t__lc______ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(893, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchThrows] - - f = function f___3__t__lc__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchThrows, deopt] - - f = function f___3__t__lc__t____d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchThrows, endReturnLocal] - - f = function f___3__t__lc__t___l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchThrows, endReturnLocal, deopt] - - f = function f___3__t__lc__t___ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchWithLocal] - - f = function f___3__t__lc_l______ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchWithLocal, deopt] - - f = function f___3__t__lc_l_____d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchWithLocal, endReturnLocal] - - f = function f___3__t__lc_l____l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(935, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchWithLocal, endReturnLocal, deopt] - - f = function f___3__t__lc_l____ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - local += ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(935, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchWithLocal, catchThrows] - - f = function f___3__t__lc_lt_____ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchWithLocal, catchThrows, deopt] - - f = function f___3__t__lc_lt____d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchWithLocal, catchThrows, endReturnLocal] - - f = function f___3__t__lc_lt___l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchWithLocal, catchThrows, endReturnLocal, deopt] - - f = function f___3__t__lc_lt___ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchReturns] - - f = function f___3__t__lcr_______ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchReturns, deopt] - - f = function f___3__t__lcr______d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchReturns, endReturnLocal] - - f = function f___3__t__lcr_____l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchReturns, endReturnLocal, deopt] - - f = function f___3__t__lcr_____ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchReturns, catchWithLocal] - - f = function f___3__t__lcrl______ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(890, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchReturns, catchWithLocal, deopt] - - f = function f___3__t__lcrl_____d () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(890, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchReturns, catchWithLocal, endReturnLocal] - - f = function f___3__t__lcrl____l_ () { - var local = 888; - deopt = false; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(890, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn3, tryThrows, tryResultToLocal, - // doCatch, catchReturns, catchWithLocal, endReturnLocal, deopt] - - f = function f___3__t__lcrl____ld () { - var local = 888; - deopt = true; - try { - counter++; - local += 4 + invertFunctionCall(increaseAndReturn15); - counter++; - } catch (ex) { - counter++; - return 2 + local; - counter++; - } - counter++; - return 5 + local; - } - resetOptAndAssertResultEquals(890, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn4, tryReturns, doCatch] - - f = function f__4____r__c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + (new increaseAndStore15Constructor()).x; - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn4, tryReturns, doCatch, deopt] - - f = function f__4____r__c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + (new increaseAndStore15Constructor()).x; - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn4, tryReturns, doCatch, catchThrows] - - f = function f__4____r__c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + (new increaseAndStore15Constructor()).x; - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn4, tryReturns, doCatch, catchThrows, - // deopt] - - f = function f__4____r__c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + (new increaseAndStore15Constructor()).x; - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn4, tryReturns, doCatch, - // catchReturns] - - f = function f__4____r__cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + (new increaseAndStore15Constructor()).x; - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn4, tryReturns, doCatch, - // catchReturns, deopt] - - f = function f__4____r__cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + (new increaseAndStore15Constructor()).x; - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn4, tryThrows, doCatch] - - f = function f__4___t___c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + (new increaseAndThrow42Constructor()).x; - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn4, tryThrows, doCatch, deopt] - - f = function f__4___t___c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + (new increaseAndThrow42Constructor()).x; - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn4, tryThrows, doCatch, catchThrows] - - f = function f__4___t___c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + (new increaseAndThrow42Constructor()).x; - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn4, tryThrows, doCatch, catchThrows, - // deopt] - - f = function f__4___t___c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + (new increaseAndThrow42Constructor()).x; - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn4, tryThrows, doCatch, catchReturns] - - f = function f__4___t___cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + (new increaseAndThrow42Constructor()).x; - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn4, tryThrows, doCatch, catchReturns, - // deopt] - - f = function f__4___t___cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + (new increaseAndThrow42Constructor()).x; - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn5, tryReturns, doCatch] - - f = function f_5_____r__c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + magic.prop /* returns 15 */; - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn5, tryReturns, doCatch, deopt] - - f = function f_5_____r__c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + magic.prop /* returns 15 */; - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn5, tryReturns, doCatch, catchThrows] - - f = function f_5_____r__c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + magic.prop /* returns 15 */; - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn5, tryReturns, doCatch, catchThrows, - // deopt] - - f = function f_5_____r__c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + magic.prop /* returns 15 */; - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn5, tryReturns, doCatch, - // catchReturns] - - f = function f_5_____r__cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + magic.prop /* returns 15 */; - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn5, tryReturns, doCatch, - // catchReturns, deopt] - - f = function f_5_____r__cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + magic.prop /* returns 15 */; - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(19, f); - assertEquals(2, counter); - - // Variant flags: [alternativeFn5, tryThrows, doCatch] - - f = function f_5____t___c________ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + (magic.prop = 37 /* throws 42 */); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn5, tryThrows, doCatch, deopt] - - f = function f_5____t___c_______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + (magic.prop = 37 /* throws 42 */); - counter++; - } catch (ex) { - counter++; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(undefined, f); - assertEquals(5, counter); - - // Variant flags: [alternativeFn5, tryThrows, doCatch, catchThrows] - - f = function f_5____t___c__t_____ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + (magic.prop = 37 /* throws 42 */); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn5, tryThrows, doCatch, catchThrows, - // deopt] - - f = function f_5____t___c__t____d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + (magic.prop = 37 /* throws 42 */); - counter++; - } catch (ex) { - counter++; - throw 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertThrowsWith(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn5, tryThrows, doCatch, catchReturns] - - f = function f_5____t___cr_______ () { - var local = 888; - deopt = false; - try { - counter++; - return 4 + (magic.prop = 37 /* throws 42 */); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - - // Variant flags: [alternativeFn5, tryThrows, doCatch, catchReturns, - // deopt] - - f = function f_5____t___cr______d () { - var local = 888; - deopt = true; - try { - counter++; - return 4 + (magic.prop = 37 /* throws 42 */); - counter++; - } catch (ex) { - counter++; - return 2 + ex; - counter++; - } - counter++; - } - resetOptAndAssertResultEquals(44, f); - assertEquals(3, counter); - -} -%NeverOptimizeFunction(runThisShard); - -// 95 tests in this shard. -// 192 tests up to here. - -runThisShard(); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-function-apply.js b/implementation-contributed/v8/mjsunit/compiler/inline-function-apply.js deleted file mode 100644 index 12238e1c53b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-function-apply.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test inlining and deoptimization of function.apply(this, arguments) -// calls for which the exact number of arguments is known. -(function () { - "use strict"; - function test(argumentsCount) { - var dispatcher = {}; - var deoptimize = { deopt:false }; - dispatcher["const" + argumentsCount] = 0; - dispatcher.func = C; - - function A(x,y) { - var r = "A"; - if (argumentsCount == 1) r += B(10); - if (argumentsCount == 2) r += B(10, 11); - if (argumentsCount == 3) r += B(10, 11, 12); - assertSame(1, x); - assertSame(2, y); - return r; - } - - function B(x,y) { - x = 0; y = 0; - var r = "B" + dispatcher.func.apply(this, arguments); - assertSame(argumentsCount, arguments.length); - for (var i = 0; i < arguments.length; i++) { - assertSame(10 + i, arguments[i]); - } - return r; - } - - function C(x,y) { - x = 0; y = 0; - var r = "C" - deoptimize.deopt; - assertSame(argumentsCount, arguments.length); - for (var i = 0; i < arguments.length; i++) { - assertSame(10 + i, arguments[i]); - } - return r; - } - - assertEquals("ABC", A(1,2)); - assertEquals("ABC", A(1,2)); - %OptimizeFunctionOnNextCall(A); - assertEquals("ABC", A(1,2)); - delete deoptimize.deopt; - assertEquals("ABC", A(1,2)); - - %DeoptimizeFunction(A); - %ClearFunctionFeedback(A); - %DeoptimizeFunction(B); - %ClearFunctionFeedback(B); - %DeoptimizeFunction(C); - %ClearFunctionFeedback(C); - } - - for (var a = 1; a <= 3; a++) { - test(a); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-global-access.js b/implementation-contributed/v8/mjsunit/compiler/inline-global-access.js deleted file mode 100644 index b52652a764f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-global-access.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we can inline a function that returns the result of a -// global variable load. -var GLOBAL; -function TestInlineGlobalLoad(o) { - // Effect context. - GLOBAL = 42; - o.f(); - // Value context. - var x = o.f(); - assertEquals(42, x); - GLOBAL = 87; - assertEquals(87, o.f()); - // Test context. - if (!o.f()) { - assertTrue(false); // Should not happen. - } -} - -var o = {}; -o.f = function() { return GLOBAL; }; -for (var i = 0; i < 5; i++) TestInlineGlobalLoad(o); -%OptimizeFunctionOnNextCall(TestInlineGlobalLoad); -TestInlineGlobalLoad(o); -TestInlineGlobalLoad({f: o.f}); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-literals.js b/implementation-contributed/v8/mjsunit/compiler/inline-literals.js deleted file mode 100644 index 448799669ee..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-literals.js +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we can inline functions containing materialized literals. - -function a2(b, c) { - return [b, c, b + c]; -} - -function a1(a, b, c) { - return [a, a2(b, c)]; -} - -function TestArrayLiteral(a, b, c) { - var expected = [a, [b, c, b + c]]; - var result = a1(a, b, c); - assertEquals(expected, result, "TestArrayLiteral"); -} - -TestArrayLiteral(1, 2, 3); -TestArrayLiteral(1, 2, 3); -%OptimizeFunctionOnNextCall(TestArrayLiteral); -TestArrayLiteral(1, 2, 3); -TestArrayLiteral('a', 'b', 'c'); - -function o2(b, c) { - return { 'b':b, 'c':c, 'y':b + c }; -} - -function o1(a, b, c) { - return { 'a':a, 'x':o2(b, c) }; -} - -function TestObjectLiteral(a, b, c) { - var expected = { 'a':a, 'x':{ 'b':b, 'c':c, 'y':b + c } }; - var result = o1(a, b, c); - assertEquals(expected, result, "TestObjectLiteral"); -} - -TestObjectLiteral(1, 2, 3); -TestObjectLiteral(1, 2, 3); -%OptimizeFunctionOnNextCall(TestObjectLiteral); -TestObjectLiteral(1, 2, 3); -TestObjectLiteral('a', 'b', 'c'); - -function r2(s, x, y) { - return s.replace(/a/, x + y); -} - -function r1(s, x, y) { - return r2(s, x, y).replace(/b/, y + x); -} - -function TestRegExpLiteral(s, x, y, expected) { - var result = r1(s, x, y); - assertEquals(expected, result, "TestRegExpLiteral"); -} - -TestRegExpLiteral("a-", "reg", "exp", "regexp-"); -TestRegExpLiteral("-b", "reg", "exp", "-expreg"); -%OptimizeFunctionOnNextCall(TestRegExpLiteral); -TestRegExpLiteral("ab", "reg", "exp", "regexpexpreg"); -TestRegExpLiteral("ab", 12345, 54321, "6666666666"); - -function f2(b, c) { - var closure = function(b, c) { return b + c; } - var value = b + c; - return closure; -} - -function f1(a, b, c) { - return a + f2(b, c)(b, c); -} - -function TestFunctionLiteral(a, b, c, expected) { - var result = f1(a, b, c); - assertEquals(expected, result, "TestFunctionLiteral"); -} - -TestFunctionLiteral(1, 2, 3, 6); -TestFunctionLiteral(4, 5, 6, 15); -%OptimizeFunctionOnNextCall(TestFunctionLiteral); -TestFunctionLiteral(7, 8, 9, 24); -TestFunctionLiteral("a", "b", "c", "abc"); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments-deopt.js b/implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments-deopt.js deleted file mode 100644 index 65bfce715d6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments-deopt.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(s, t, u, v) { - %DeoptimizeFunction(bar); - return baz(); -} -function bar() { - return foo(11); -} -function baz() { - return foo.arguments.length == 1 && foo.arguments[0] == 11; -} - -%OptimizeFunctionOnNextCall(bar); -assertEquals(true, bar(12, 14)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments-object.js b/implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments-object.js deleted file mode 100644 index 342b78cac76..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments-object.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(s, t, u, v) { return arguments; } -function foo(s, t) { - var args = bar(s); - return args.length == 1 && args[0] == 11; -} - -%OptimizeFunctionOnNextCall(foo); -assertEquals(true, foo(11)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments.js b/implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments.js deleted file mode 100644 index d72e45303ba..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-omit-arguments.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var x = 42; -function bar(s, t, u, v) { return x + s; } -function foo(s, t) { return bar(s); } - -%OptimizeFunctionOnNextCall(foo); -assertEquals(42 + 12, foo(12)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-param.js b/implementation-contributed/v8/mjsunit/compiler/inline-param.js deleted file mode 100644 index 8fa80088feb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-param.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we can inline a call with a parameter. -function TestInlineOneParam(o, p) { - // Effect context. - o.f(p); - // Value context. - var x = o.f(p); - assertEquals(42, x); - assertEquals(42, o.f(p)); - // Test context. - if (!o.f(p)) { - assertTrue(false); // Should not happen. - } -} - -var obj = {x:42}; -var o1 = {}; -o1.f = function(o) { return o.x; }; -for (var i = 0; i < 5; i++) TestInlineOneParam(o1, obj); -%OptimizeFunctionOnNextCall(TestInlineOneParam); -TestInlineOneParam(o1, obj); -TestInlineOneParam({f: o1.f}, {x:42}); - - -function TestInlineTwoParams(o, p) { - var y = 43; - // Effect context. - o.h(y, y); - // Value context. - var x = o.h(p, y); - assertEquals(true, x); - assertEquals(false, o.h(y, p)); - // Test context. - if (!o.h(p, y)) { - assertTrue(false); // Should not happen. - } - - // Perform the same tests again, but this time with non-trivial - // expressions as the parameters. - - // Effect context. - o.h(y + 1, y + 1); - // Value context. - var x = o.h(p + 1, y + 1); - assertEquals(true, x); - assertEquals(false, o.h(y + 1, p + 1)); - // Test context. - if (!o.h(p + 1, y + 1)) { - assertTrue(false); // Should not happen. - } -} - -var o2 = {}; -o2.h = function(i, j) { return i < j; }; -for (var i = 0; i < 5; i++) TestInlineTwoParams(o2, 42); -%OptimizeFunctionOnNextCall(TestInlineTwoParams); -TestInlineTwoParams(o2, 42); -TestInlineTwoParams({h: o2.h}, 42); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments-deopt.js b/implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments-deopt.js deleted file mode 100644 index dfbdd8d06bb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments-deopt.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(s) { - %DeoptimizeFunction(bar); - return baz(); -} -function bar() { return foo(13, 14, 15); } -function baz() { - return foo.arguments.length == 3 && - foo.arguments[0] == 13 && - foo.arguments[1] == 14 && - foo.arguments[2] == 15; -} - -%OptimizeFunctionOnNextCall(bar); -assertEquals(true, bar(12, 14)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments-object.js b/implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments-object.js deleted file mode 100644 index fec77af0c0f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments-object.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(s) { return arguments; } -function bar(s, t) { - var args = foo(s, t, 13); - return args.length == 3 && - args[0] == 11 && - args[1] == 12 && - args[2] == 13; -} - -%OptimizeFunctionOnNextCall(bar); -assertEquals(true, bar(11, 12)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments.js b/implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments.js deleted file mode 100644 index c912acaa3f7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-surplus-arguments.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var x = 42; -function foo(s) { return x + s; } -function bar(s, t) { return foo(s, t, 13); } - -%OptimizeFunctionOnNextCall(bar); -assertEquals(42 + 12, bar(12)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-throw.js b/implementation-contributed/v8/mjsunit/compiler/inline-throw.js deleted file mode 100644 index 099b9d3351f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-throw.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test inlined functions contain throw. -function doThrow() { - throw "uha"; -} - -function f(x) { - if (x == 42) throw doThrow(); - if (x == 43) throw "wow"; - return x == 0; -} - -function g(x) { - return f(x); -} - -for (var i = 0; i < 5; i++) g(0); -%OptimizeFunctionOnNextCall(g); -assertEquals(true, g(0)); - -try { - g(42); -} catch(e) { - assertEquals("uha", e); -} - -// Test inlining in a test context. -function h(x) { - return f(x) ? "yes" : "no"; -} - -for (var i = 0; i < 5; i++) h(0); -%OptimizeFunctionOnNextCall(h); -assertEquals("yes", h(0)); - -try { - h(43); -} catch(e) { - assertEquals("wow", e); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/inline-two.js b/implementation-contributed/v8/mjsunit/compiler/inline-two.js deleted file mode 100644 index 68372a979e0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inline-two.js +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we can inline a function that calls another function. -function TestInlineX(o) { - // Effect context. - o.g(); - // Value context. - var x = o.g(); - assertEquals(42, x); - assertEquals(42, o.g()); - // Test context. - if (!o.g()) { - assertTrue(false); // Should not happen. - } -} - -var o2 = {}; -o2.size = function() { return 42; } -o2.g = function() { return this.size(); }; -for (var i = 0; i < 5; i++) TestInlineX(o2); -%OptimizeFunctionOnNextCall(TestInlineX); -TestInlineX(o2); -TestInlineX({g: o2.g, size:o2.size}); - - -// Test that we can inline a call on a non-variable receiver. -function TestInlineX2(o) { - // Effect context. - o.h(); - // Value context. - var x = o.h(); - assertEquals(42, x); - assertEquals(42, o.h()); - // Test context. - if (!o.h()) { - assertTrue(false); // Should not happen. - } -} - -var obj = {} -obj.foo = function() { return 42; } -var o3 = {}; -o3.v = obj; -o3.h = function() { return this.v.foo(); }; -for (var i = 0; i < 5; i++) TestInlineX2(o3); -%OptimizeFunctionOnNextCall(TestInlineX2); -TestInlineX2(o3); -TestInlineX2({h: o3.h, v:obj}); - - -// Test that we can inline a call on a non-variable receiver. -function TestInlineFG(o) { - // Effect context. - o.h(); - // Value context. - var x = o.h(); - assertEquals(42, x); - assertEquals(42, o.h()); - // Test context. - if (!o.h()) { - assertTrue(false); // Should not happen. - } -} - -var obj = {} -obj.g = function() { return 42; } -var o3 = {}; -o3.v = obj; -o3.f = function() { return this.v; } -o3.h = function() { return this.f().g(); }; -for (var i = 0; i < 5; i++) TestInlineFG(o3); -%OptimizeFunctionOnNextCall(TestInlineFG); -TestInlineFG(o3); -TestInlineFG({h: o3.h, f: o3.f, v:obj}); diff --git a/implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-getter1.js b/implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-getter1.js deleted file mode 100644 index 8eb1c308a30..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-getter1.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a) { - return a.pop(); -} - -var a = new Array(4); - -assertEquals(undefined, foo(a)); -assertEquals(undefined, foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo(a)); -Object.prototype.__defineGetter__(0, function() { return 1; }); -assertEquals(1, foo(a)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-getter2.js b/implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-getter2.js deleted file mode 100644 index 8ae642619e7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-getter2.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var pop = Array.prototype.pop; - -function foo(a) { - a.length; - return pop.call(a); -} - -var a = new Array(4); -var o = {} -o.__defineGetter__(0, function() { return 1; }); - -assertEquals(undefined, foo(a)); -assertEquals(undefined, foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo(a)); -Array.prototype.__proto__ = o; -assertEquals(1, foo(a)); diff --git a/implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-opt.js b/implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-opt.js deleted file mode 100644 index 08cbdbef8c9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inlined-array-pop-opt.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -(function() { - function foo(a) { return a.pop(); } - - var x = {}; - var a = [x,x,]; - - assertEquals(x, foo(a)); - assertEquals(x, foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(a)); - assertOptimized(foo); -})(); - -(function() { - function foo(a) { return a.pop(); } - - var x = 0; - var a = [x,x,]; - - assertEquals(x, foo(a)); - assertEquals(x, foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(a)); - assertOptimized(foo); -})(); - -(function() { - function foo(a) { return a.pop(); } - - var x = 0; - var a = [x,x,x]; - - assertEquals(x, foo(a)); - assertEquals(x, foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(x, foo(a)); - assertOptimized(foo); -})(); - -(function() { - function foo(a) { return a.pop(); } - - var x = {}; - var a = [x,x,x]; - - assertEquals(x, foo(a)); - assertEquals(x, foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(x, foo(a)); - assertOptimized(foo); -})(); - -(function() { - function foo(a) { return a.pop(); } - - var a = [,,]; - - assertEquals(undefined, foo(a)); - assertEquals(undefined, foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(a)); - assertOptimized(foo); -})(); - -(function() { - var pop = Array.prototype.pop; - - function foo(a) { return a.pop(); } - - var a = [1, 2, 3]; - - assertEquals(3, foo(a)); - assertEquals(2, foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(a)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/inlined-call-mapcheck.js b/implementation-contributed/v8/mjsunit/compiler/inlined-call-mapcheck.js deleted file mode 100644 index 1f7b2dad87f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inlined-call-mapcheck.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -(function() { - function f(x) { - for (i = 0; i < 1; i++) { - x.call(this); - } - } - - function g() {} - - f(g); - f(g); - %OptimizeFunctionOnNextCall(f); - assertThrows(function() { f('whatever') }, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/inlined-call.js b/implementation-contributed/v8/mjsunit/compiler/inlined-call.js deleted file mode 100644 index 772dcbee8b2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/inlined-call.js +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -var global = this; - -// For the HConstant -Array.prototype.fun = function() { - funRecv = this; - called++; - assertEquals(0, arguments.length); -}; - -Array.prototype.funStrict = function() { - "use strict"; - funStrictRecv = this; - called++; - assertEquals(0, arguments.length); -}; - -Array.prototype.manyArgs = function() { - "use strict"; - assertEquals(5, arguments.length); - assertEquals(0, this); - assertEquals(5, arguments[4]); - called++; -} - -Array.prototype.manyArgsSloppy = function() { - assertEquals(global, this); - assertEquals(5, arguments.length); - assertEquals(5, arguments[4]); - called++; -} - -var array = []; -for (var i = 0; i < 100; ++i) { - array[i] = i; -} - -var copy = array.slice(); - -function unshiftsArray(num) { - [].unshift.call(array, num); -} - -unshiftsArray(50); -unshiftsArray(60); -%OptimizeFunctionOnNextCall(unshiftsArray); -unshiftsArray(80); -unshiftsArray(50); -unshiftsArray(60); - -copy.unshift(50); -copy.unshift(60); -copy.unshift(80); -copy.unshift(50); -copy.unshift(60); - -assertOptimized(unshiftsArray); -assertArrayEquals(array, copy); - - -var called = 0; -var funRecv; - -function callNoArgs() { - [].fun.call(); -} - -callNoArgs(); -callNoArgs(); -assertEquals(this, funRecv); -%OptimizeFunctionOnNextCall(callNoArgs); -callNoArgs(); -assertEquals(this, funRecv); -assertEquals(3, called); -assertOptimized(callNoArgs); - -var funStrictRecv; -called = 0; - -function callStrictNoArgs() { - [].funStrict.call(); -} - -callStrictNoArgs(); -callStrictNoArgs(); -assertEquals(undefined, funStrictRecv); -%OptimizeFunctionOnNextCall(callStrictNoArgs); -callStrictNoArgs(); -assertEquals(undefined, funStrictRecv); -assertEquals(3, called); -assertOptimized(callStrictNoArgs); - -called = 0; - - -function callManyArgs() { - [].manyArgs.call(0, 1, 2, 3, 4, 5); -} - -callManyArgs(); -callManyArgs(); -%OptimizeFunctionOnNextCall(callManyArgs); -callManyArgs(); -assertOptimized(callManyArgs); -assertEquals(called, 3); - -called = 0; - - -function callManyArgsSloppy() { - [].manyArgsSloppy.call(null, 1, 2, 3, 4, 5); -} - -callManyArgsSloppy(); -callManyArgsSloppy(); -%OptimizeFunctionOnNextCall(callManyArgsSloppy); -callManyArgsSloppy(); -assertOptimized(callManyArgsSloppy); -assertEquals(called, 3); - -var str = "hello"; -var code = str.charCodeAt(3); -called = 0; -function callBuiltinIndirectly() { - called++; - return "".charCodeAt.call(str, 3); -} - -callBuiltinIndirectly(); -callBuiltinIndirectly(); -%OptimizeFunctionOnNextCall(callBuiltinIndirectly); -assertEquals(code, callBuiltinIndirectly()); -assertOptimized(callBuiltinIndirectly); -assertEquals(3, called); - -this.array = [1,2,3,4,5,6,7,8,9]; -var copy = this.array.slice(); -called = 0; - -function callInlineableBuiltinIndirectlyWhileInlined() { - called++; - return [].push.apply(array, arguments); -} - -function callInlined(num) { - return callInlineableBuiltinIndirectlyWhileInlined(num); -} - -callInlineableBuiltinIndirectlyWhileInlined(1); -callInlineableBuiltinIndirectlyWhileInlined(2); -%OptimizeFunctionOnNextCall(callInlineableBuiltinIndirectlyWhileInlined); -callInlineableBuiltinIndirectlyWhileInlined(3); -assertOptimized(callInlineableBuiltinIndirectlyWhileInlined); - -callInlined(1); -callInlined(2); -%OptimizeFunctionOnNextCall(callInlined); -callInlined(3); -copy.push(1, 2, 3, 1, 2, 3); -assertOptimized(callInlined); -assertArrayEquals(copy, this.array); -assertEquals(6, called); diff --git a/implementation-contributed/v8/mjsunit/compiler/instance-of-overridden-has-instance.js b/implementation-contributed/v8/mjsunit/compiler/instance-of-overridden-has-instance.js deleted file mode 100644 index 49c8899e693..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/instance-of-overridden-has-instance.js +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function NonConstHasInstance() { - var C = { - [Symbol.hasInstance] : () => true - }; - - function f() { - return {} instanceof C; - } - - assertTrue(f()); - assertTrue(f()); - %OptimizeFunctionOnNextCall(f); - assertTrue(f()); - C[Symbol.hasInstance] = () => false; - assertFalse(f()); -})(); - -(function NumberHasInstance() { - var C = { - [Symbol.hasInstance] : 0.1 - }; - - function f(b, C) { - if (b) return {} instanceof C; - return false; - } - - function g(b) { - return f(b, C); - } - - assertFalse(f(true, Number)); - assertFalse(f(true, Number)); - assertFalse(g(false)); - assertFalse(g(false)); - %OptimizeFunctionOnNextCall(g); - assertThrows(() => g(true)); -})(); - -(function NonFunctionHasInstance() { - var C = { - [Symbol.hasInstance] : {} - }; - - function f(b, C) { - if (b) return {} instanceof C; - return false; - } - - function g(b) { - return f(b, C); - } - - assertFalse(f(true, Number)); - assertFalse(f(true, Number)); - assertFalse(g(false)); - assertFalse(g(false)); - %OptimizeFunctionOnNextCall(g); - assertThrows(() => g(true)); -})(); - -(function NonConstHasInstanceProto() { - var B = { - [Symbol.hasInstance]() { return true; } - }; - - var C = { __proto__ : B }; - - function f() { - return {} instanceof C; - } - - assertTrue(f()); - assertTrue(f()); - %OptimizeFunctionOnNextCall(f); - assertTrue(f()); - B[Symbol.hasInstance] = () => { return false; }; - assertFalse(f()); -})(); - -(function HasInstanceOverwriteOnProto() { - var A = { - [Symbol.hasInstance] : () => false - } - - var B = { __proto__ : A }; - - var C = { __proto__ : B }; - - function f() { - return {} instanceof C; - } - - assertFalse(f()); - assertFalse(f()); - %OptimizeFunctionOnNextCall(f); - assertFalse(f()); - B[Symbol.hasInstance] = () => { return true; }; - assertTrue(f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/instanceof-opt1.js b/implementation-contributed/v8/mjsunit/compiler/instanceof-opt1.js deleted file mode 100644 index 6ffdfc0ab1b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/instanceof-opt1.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var Foo = { - [Symbol.hasInstance]: Function.prototype[Symbol.hasInstance] -}; - -// TurboFan will optimize this to false via constant-folding the -// OrdinaryHasInstance call inside Function.prototype[@@hasInstance]. -function foo() { return 1 instanceof Foo; } - -assertEquals(false, foo()); -assertEquals(false, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(false, foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/instanceof-opt2.js b/implementation-contributed/v8/mjsunit/compiler/instanceof-opt2.js deleted file mode 100644 index 6f57faf1fce..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/instanceof-opt2.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Foo() {} - -// TurboFan will optimize this to false via constant-folding the -// OrdinaryHasInstance call inside Function.prototype[@@hasInstance]. -function foo() { return 1 instanceof Foo; } - -assertEquals(false, foo()); -assertEquals(false, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(false, foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/instanceof-opt3.js b/implementation-contributed/v8/mjsunit/compiler/instanceof-opt3.js deleted file mode 100644 index 3317d8acf4d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/instanceof-opt3.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Bar() {} -var Foo = Bar.bind(null); - -// TurboFan will optimize this to false via constant-folding the -// OrdinaryHasInstance call inside Function.prototype[@@hasInstance]. -function foo() { return 1 instanceof Foo; } - -assertEquals(false, foo()); -assertEquals(false, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(false, foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/instanceof.js b/implementation-contributed/v8/mjsunit/compiler/instanceof.js deleted file mode 100644 index 67127cf88e9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/instanceof.js +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function A() {} -var a = new A(); - -var B = { - [Symbol.hasInstance](o) { - return false; - } -}; -%ToFastProperties(B.__proto__); - -var C = Object.create({ - [Symbol.hasInstance](o) { - return true; - } -}); -%ToFastProperties(C.__proto__); - -var D = Object.create({ - [Symbol.hasInstance](o) { - return o === a; - } -}); -%ToFastProperties(D.__proto__); - -var E = Object.create({ - [Symbol.hasInstance](o) { - if (o === a) throw o; - return true; - } -}); -%ToFastProperties(E.__proto__); - -function F() {} -F.__proto__ = null; - -(function() { - function foo(o) { return o instanceof A; } - - assertTrue(foo(a)); - assertTrue(foo(a)); - assertTrue(foo(new A())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(a)); - assertTrue(foo(new A())); -})(); - -(function() { - function foo(o) { - try { - return o instanceof A; - } catch (e) { - return e; - } - } - - assertTrue(foo(a)); - assertTrue(foo(a)); - assertTrue(foo(new A())); - assertEquals(1, foo(new Proxy({}, {getPrototypeOf() { throw 1; }}))); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(a)); - assertTrue(foo(new A())); - assertEquals(1, foo(new Proxy({}, {getPrototypeOf() { throw 1; }}))); -})(); - -(function() { - function foo(o) { return o instanceof B; } - - assertFalse(foo(a)); - assertFalse(foo(a)); - assertFalse(foo(new A())); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(a)); - assertFalse(foo(new A())); -})(); - -(function() { - function foo(o) { return o instanceof C; } - - assertTrue(foo(a)); - assertTrue(foo(a)); - assertTrue(foo(new A())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(a)); - assertTrue(foo(new A())); -})(); - -(function() { - function foo(o) { return o instanceof D; } - - assertTrue(foo(a)); - assertTrue(foo(a)); - assertFalse(foo(new A())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(a)); - assertFalse(foo(new A())); -})(); - -(function() { - function foo(o) { - try { - return o instanceof E; - } catch (e) { - return false; - } - } - - assertFalse(foo(a)); - assertTrue(foo(new A())); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(a)); - assertTrue(foo(new A())); -})(); - -(function() { - function foo(o) { - return o instanceof F; - } - - assertFalse(foo(a)); - assertFalse(foo(new A())); - assertTrue(foo(new F())); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(a)); - assertFalse(foo(new A())); - assertTrue(foo(new F())); -})(); - -(function() { - function foo() { - var a = new A(); - return a instanceof A; - } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -(function() { - class B extends A {}; - - function makeFoo() { - return function foo(b) { - return b instanceof B; - } - } - makeFoo(); - const foo = makeFoo(); - - assertTrue(foo(new B)); - assertFalse(foo(new A)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(new B)); - assertFalse(foo(new A)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/instanceof2.js b/implementation-contributed/v8/mjsunit/compiler/instanceof2.js deleted file mode 100644 index ca006e3046f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/instanceof2.js +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -// Without instance creation: - -(function() { - function Goo() {}; - const goo = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); -})(); - -(function() { - function Goo() {}; - const goo = {}; - Goo.prototype = Object.prototype; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertTrue(IsGoo(goo)); - assertTrue(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertTrue(IsGoo(goo)); -})(); - -(function() { - function Goo() {}; - const goo = {}; - Goo.prototype = 42 - - function IsGoo(x) { - return x instanceof Goo; - } - - assertThrows(_ => IsGoo(goo), TypeError); - assertThrows(_ => IsGoo(goo), TypeError); - %OptimizeFunctionOnNextCall(IsGoo); - assertThrows(_ => IsGoo(goo), TypeError); -})(); - -(function() { - function Goo() {}; - const goo = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); - Goo.prototype = Object.prototype; - assertTrue(IsGoo(goo)); -})(); - -(function() { - function Goo() {}; - const goo = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); - Goo.prototype = 42; - assertThrows(_ => IsGoo(goo), TypeError); -})(); - - -// With instance creation: - -(function() { - function Goo() {}; - const goo = new Goo(); - - function IsGoo(x) { - return x instanceof Goo; - } - - assertTrue(IsGoo(goo)); - assertTrue(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertTrue(IsGoo(goo)); -})(); - -(function() { - function Goo() {}; - const goo = new Goo(); - Goo.prototype = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); -})(); - -(function() { - function Goo() {}; - const goo = new Goo(); - Goo.prototype = 42; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertThrows(_ => IsGoo(goo), TypeError); - assertThrows(_ => IsGoo(goo), TypeError); - %OptimizeFunctionOnNextCall(IsGoo); - assertThrows(_ => IsGoo(goo), TypeError); -})(); - -(function() { - function Goo() {}; - const goo = new Goo(); - - function IsGoo(x) { - return x instanceof Goo; - } - - assertTrue(IsGoo(goo)); - assertTrue(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertTrue(IsGoo(goo)); - Goo.prototype = {}; - assertFalse(IsGoo(goo)); -})(); - -(function() { - function Goo() {}; - const goo = new Goo(); - - function IsGoo(x) { - return x instanceof Goo; - } - - assertTrue(IsGoo(goo)); - assertTrue(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertTrue(IsGoo(goo)); - Goo.prototype = 42 - assertThrows(_ => IsGoo(goo), TypeError); -})(); - -(function() { - function Goo() {}; - Goo.prototype = 42; - const goo = new Goo(); - - function IsGoo(x) { - return x instanceof Goo; - } - - assertThrows(_ => IsGoo(goo), TypeError); - assertThrows(_ => IsGoo(goo), TypeError); - %OptimizeFunctionOnNextCall(IsGoo); - assertThrows(_ => IsGoo(goo), TypeError); - Goo.prototype = {}; - assertFalse(IsGoo(goo)); -})(); - -(function() { - function Goo() {}; - Goo.prototype = 42; - const goo = new Goo(); - Goo.prototype = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); - Goo.prototype = Object.prototype; - assertTrue(IsGoo(goo)); -})(); - -(function() { - function Goo() {}; - Goo.prototype = {}; - const goo = new Goo(); - Goo.prototype = 42; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertThrows(_ => IsGoo(goo), TypeError); - assertThrows(_ => IsGoo(goo), TypeError); - %OptimizeFunctionOnNextCall(IsGoo); - assertThrows(_ => IsGoo(goo), TypeError); - Goo.prototype = Object.prototype; - assertTrue(IsGoo(goo)); -})(); - -(function() { - function Goo() {}; - Goo.prototype = {}; - const goo = new Goo(); - Goo.prototype = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - Goo.prototype = Object.prototype; - assertTrue(IsGoo(goo)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/instanceof3.js b/implementation-contributed/v8/mjsunit/compiler/instanceof3.js deleted file mode 100644 index e390c42092c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/instanceof3.js +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -// Without instance creation: - -(function() { - function* Goo() {}; - const goo = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); -})(); - -(function() { - function* Goo() {}; - const goo = {}; - Goo.prototype = Object.prototype; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertTrue(IsGoo(goo)); - assertTrue(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertTrue(IsGoo(goo)); -})(); - -(function() { - function* Goo() {}; - const goo = {}; - Goo.prototype = 42 - - function IsGoo(x) { - return x instanceof Goo; - } - - assertThrows(_ => IsGoo(goo), TypeError); - assertThrows(_ => IsGoo(goo), TypeError); - %OptimizeFunctionOnNextCall(IsGoo); - assertThrows(_ => IsGoo(goo), TypeError); -})(); - -(function() { - function* Goo() {}; - const goo = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); - Goo.prototype = Object.prototype; - assertTrue(IsGoo(goo)); -})(); - -(function() { - function* Goo() {}; - const goo = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); - Goo.prototype = 42; - assertThrows(_ => IsGoo(goo), TypeError); -})(); - - -// With instance creation: - -(function() { - function* Goo() {}; - const goo = Goo(); - - function IsGoo(x) { - return x instanceof Goo; - } - - assertTrue(IsGoo(goo)); - assertTrue(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertTrue(IsGoo(goo)); -})(); - -(function() { - function* Goo() {}; - const goo = Goo(); - Goo.prototype = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); -})(); - -(function() { - function* Goo() {}; - const goo = Goo(); - Goo.prototype = 42; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertThrows(_ => IsGoo(goo), TypeError); - assertThrows(_ => IsGoo(goo), TypeError); - %OptimizeFunctionOnNextCall(IsGoo); - assertThrows(_ => IsGoo(goo), TypeError); -})(); - -(function() { - function* Goo() {}; - const goo = Goo(); - - function IsGoo(x) { - return x instanceof Goo; - } - - assertTrue(IsGoo(goo)); - assertTrue(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertTrue(IsGoo(goo)); - Goo.prototype = {}; - assertFalse(IsGoo(goo)); -})(); - -(function() { - function* Goo() {}; - const goo = Goo(); - - function IsGoo(x) { - return x instanceof Goo; - } - - assertTrue(IsGoo(goo)); - assertTrue(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertTrue(IsGoo(goo)); - Goo.prototype = 42 - assertThrows(_ => IsGoo(goo), TypeError); -})(); - -(function() { - function* Goo() {}; - Goo.prototype = 42; - const goo = Goo(); - - function IsGoo(x) { - return x instanceof Goo; - } - - assertThrows(_ => IsGoo(goo), TypeError); - assertThrows(_ => IsGoo(goo), TypeError); - %OptimizeFunctionOnNextCall(IsGoo); - assertThrows(_ => IsGoo(goo), TypeError); - Goo.prototype = {}; - assertFalse(IsGoo(goo)); -})(); - -(function() { - function* Goo() {}; - Goo.prototype = 42; - const goo = Goo(); - Goo.prototype = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - assertFalse(IsGoo(goo)); - Goo.prototype = Object.prototype; - assertTrue(IsGoo(goo)); -})(); - -(function() { - function* Goo() {}; - Goo.prototype = {}; - const goo = Goo(); - Goo.prototype = 42; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertThrows(_ => IsGoo(goo), TypeError); - assertThrows(_ => IsGoo(goo), TypeError); - %OptimizeFunctionOnNextCall(IsGoo); - assertThrows(_ => IsGoo(goo), TypeError); - Goo.prototype = Object.prototype; - assertTrue(IsGoo(goo)); -})(); - -(function() { - function* Goo() {}; - Goo.prototype = {}; - const goo = Goo(); - Goo.prototype = {}; - - function IsGoo(x) { - return x instanceof Goo; - } - - assertFalse(IsGoo(goo)); - assertFalse(IsGoo(goo)); - %OptimizeFunctionOnNextCall(IsGoo); - Goo.prototype = Object.prototype; - assertTrue(IsGoo(goo)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/int64.js b/implementation-contributed/v8/mjsunit/compiler/int64.js deleted file mode 100644 index b2c53913da7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/int64.js +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test NumberAdd with PositiveSafeInteger -> PositiveSafeInteger (as Tagged). -(function() { - function foo(x) { - const i = x ? 0xFFFFFFFF : 0; - return i + 1; - } - - assertEquals(0x000000001, foo(false)); - assertEquals(0x000000001, foo(false)); - assertEquals(0x100000000, foo(true)); - assertEquals(0x100000000, foo(true)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0x000000001, foo(false)); - assertEquals(0x100000000, foo(true)); -})(); - -// Test NumberAdd with SafeInteger -> SafeInteger (as Tagged). -(function() { - function foo(x) { - const i = x ? 0xFFFFFFFF : -1; - return i + 1; - } - - assertEquals(0x000000000, foo(false)); - assertEquals(0x000000000, foo(false)); - assertEquals(0x100000000, foo(true)); - assertEquals(0x100000000, foo(true)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0x000000000, foo(false)); - assertEquals(0x100000000, foo(true)); -})(); - -// NumberAdd: Smi x Unsigned32 -> SafeInteger (as Float64). -(function() { - const a = new Float64Array(1); - - function foo(o) { - a[0] = o.x + 0xFFFFFFFF; - return a[0]; - } - - assertEquals(0x0FFFFFFFF, foo({x:0})); - assertEquals(0x100000000, foo({x:1})); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0x100000000, foo({x:1})); -})(); - -// NumberAdd: Smi x Unsigned32 -> SafeInteger (as TaggedSigned). -(function() { - function foo(o) { - return {x: Math.floor((o.x + 11123456789) + -11123456788)}.x; - } - - assertEquals(1, foo({x:0})); - assertEquals(2, foo({x:1})); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo({x:1})); -})(); - -// NumberSubtract: Unsigned32 x Unsigned32 -> SafeInteger (as Word32). -(function() { - function foo(a, i) { - i = ((i >>> 0)) - 0xFFFFFFFF; - return a[i]; - } - - assertEquals(1, foo([1], 0xFFFFFFFF)); - assertEquals(2, foo([2], 0xFFFFFFFF)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo([3], 0xFFFFFFFF)); -})(); - -// Test that the Deoptimizer can handle Word64 properly. -(function() { - function foo(b) { - const i = ((b >>> 0)) - 0xFFFFFFFF; - %DeoptimizeFunction(foo); - return i; - } - - assertEquals(0, foo(0xFFFFFFFF)); - assertEquals(0, foo(0xFFFFFFFF)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(0xFFFFFFFF)); -})(); - -// Test checked Float32->Word64 conversions. -(function() { - function foo(dv, i) { - i = dv.getFloat32(i, true); - return dv.getInt8(i, true); - } - - const dv = new DataView(new ArrayBuffer(10)); - dv.setFloat32(0, 8, true); - dv.setFloat32(4, 9, true); - dv.setInt8(8, 42); - dv.setInt8(9, 24); - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 4)); -})(); - -// Test checked Float64->Word64 conversions. -(function() { - function foo(dv, i) { - i = dv.getFloat64(i, true); - return dv.getInt8(i, true); - } - - const dv = new DataView(new ArrayBuffer(18)); - dv.setFloat64(0, 16, true); - dv.setFloat64(8, 17, true); - dv.setInt8(16, 42); - dv.setInt8(17, 24); - - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 8)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(42, foo(dv, 0)); - assertEquals(24, foo(dv, 8)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/integral32-add-sub.js b/implementation-contributed/v8/mjsunit/compiler/integral32-add-sub.js deleted file mode 100644 index 16515d39901..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/integral32-add-sub.js +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -(function() { - function foo(x) { - x = x >>> 0; - var y = 0 - 2147483648; - return x + y; - } - - assertEquals(-2147483648, foo(0)); - assertEquals(0, foo(2147483648)); - assertEquals(2147483647, foo(4294967295)); - assertEquals(-2147483648, foo(0)); - assertEquals(0, foo(2147483648)); - assertEquals(2147483647, foo(4294967295)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-2147483648, foo(0)); - assertEquals(0, foo(2147483648)); - assertEquals(2147483647, foo(4294967295)); - assertOptimized(foo); -})(); - -(function() { - function foo(x) { - x = x >>> 0; - var y = 2147483648; - return x - y; - } - - assertEquals(-2147483648, foo(0)); - assertEquals(0, foo(2147483648)); - assertEquals(2147483647, foo(4294967295)); - assertEquals(-2147483648, foo(0)); - assertEquals(0, foo(2147483648)); - assertEquals(2147483647, foo(4294967295)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-2147483648, foo(0)); - assertEquals(0, foo(2147483648)); - assertEquals(2147483647, foo(4294967295)); - assertOptimized(foo); -})(); - -(function() { - function foo(x) { - x = x | 0; - var y = 2147483648; - return x + y; - } - - assertEquals(2147483648, foo(0)); - assertEquals(0, foo(-2147483648)); - assertEquals(4294967295, foo(2147483647)); - assertEquals(2147483648, foo(0)); - assertEquals(0, foo(-2147483648)); - assertEquals(4294967295, foo(2147483647)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2147483648, foo(0)); - assertEquals(0, foo(-2147483648)); - assertEquals(4294967295, foo(2147483647)); - assertOptimized(foo); -})(); - -(function() { - function foo(x) { - x = x | 0; - var y = 0 - 2147483648; - return x - y; - } - - assertEquals(2147483648, foo(0)); - assertEquals(0, foo(-2147483648)); - assertEquals(4294967295, foo(2147483647)); - assertEquals(2147483648, foo(0)); - assertEquals(0, foo(-2147483648)); - assertEquals(4294967295, foo(2147483647)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2147483648, foo(0)); - assertEquals(0, foo(-2147483648)); - assertEquals(4294967295, foo(2147483647)); - assertOptimized(foo); -})(); - -(function() { - function foo(x) { - x = x | 0; - var y = -0; - return x + y; - } - - assertEquals(2147483647, foo(2147483647)); - assertEquals(-2147483648, foo(-2147483648)); - assertEquals(0, foo(0)); - assertEquals(2147483647, foo(2147483647)); - assertEquals(-2147483648, foo(-2147483648)); - assertEquals(0, foo(0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2147483647, foo(2147483647)); - assertEquals(-2147483648, foo(-2147483648)); - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); - -(function() { - function foo(x) { - var y = (x < 0) ? 4294967295 : 4294967296; - var z = (x > 0) ? 2147483647 : 2147483648; - return y - z; - } - - assertEquals(2147483647, foo(-1)); - assertEquals(2147483648, foo(0)); - assertEquals(2147483649, foo(1)); - assertEquals(2147483647, foo(-1)); - assertEquals(2147483648, foo(0)); - assertEquals(2147483649, foo(1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2147483647, foo(-1)); - assertEquals(2147483648, foo(0)); - assertEquals(2147483649, foo(1)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/lazy-const-lookup.js b/implementation-contributed/v8/mjsunit/compiler/lazy-const-lookup.js deleted file mode 100644 index ff4558e7efa..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/lazy-const-lookup.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function outer() { - const x = 1; - function inner() { - return x; - } - inner(); - %OptimizeFunctionOnNextCall(inner); - inner(); -} - -outer(); diff --git a/implementation-contributed/v8/mjsunit/compiler/lazy-deopt-async-function-resolve.js b/implementation-contributed/v8/mjsunit/compiler/lazy-deopt-async-function-resolve.js deleted file mode 100644 index faa5e632391..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/lazy-deopt-async-function-resolve.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test that the lazy deoptimization point for JSAsyncFunctionResolve -// works correctly, aka that we return the promise and not the result -// of the JSResolvePromise operation. -(function() { - async function foo(x) { - return x; - } - - assertPromiseResult((async () => { - await foo(1); - await foo(2); - %OptimizeFunctionOnNextCall(foo); - const p = new Proxy({}, { - get(...args) { - %DeoptimizeFunction(foo); - return Reflect.get(...args); - } - }); - assertEquals(p, await foo(p)); - })()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/lazy-deopt-in-literal.js b/implementation-contributed/v8/mjsunit/compiler/lazy-deopt-in-literal.js deleted file mode 100644 index 0a1481c571a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/lazy-deopt-in-literal.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function deopt() { - %DeoptimizeFunction(fun3); -} - -function fun3() { - var r = { 113: deopt(), 113: 7 }; - return r[113]; -} - -fun3(); -fun3(); -%OptimizeFunctionOnNextCall(fun3); -var y = fun3(); -assertEquals(7, y); diff --git a/implementation-contributed/v8/mjsunit/compiler/lazy-iife-no-parens.js b/implementation-contributed/v8/mjsunit/compiler/lazy-iife-no-parens.js deleted file mode 100644 index cbad4da4a64..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/lazy-iife-no-parens.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation - -// Test that IIFEs are compilable even under lazy conditions where the enclosing -// parentheses heuristic has not been triggered. - -function f() { - return function(){ return 0; }(); -} - -function g() { - function h() { - return function(){ return 0; }(); - } - return h(); -} - -f(); - -g(); - -0, function(){}(); - -(function(){ 0, function(){}(); })(); - -0, function(){ (function(){ 0, function(){}(); })(); }(); diff --git a/implementation-contributed/v8/mjsunit/compiler/literals-assignment.js b/implementation-contributed/v8/mjsunit/compiler/literals-assignment.js deleted file mode 100644 index d2996c7847b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/literals-assignment.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests for simple assignments and literals inside an anonymous function - -// Test simple return statement. -assertEquals(8, eval("(function() { return 8; })()")); - -// Test simple assignment -var code = "(function() {\ - var a;\ - a = 8;\ - return a;\ - })()"; -assertEquals(8, eval(code)); - -code = "(function() {\ - var x;\ - x = 'abc';\ - return x;\ - })()"; -assertEquals("abc", eval(code)); - -// Test assignment as an RHS expression - -code = "(function() {\ - var x, y;\ - x = y = 8;\ - return x;\ - })()"; -assertEquals(8, eval(code)); - - -code = "(function() {\ - var x, y;\ - x = y = 8;\ - return y;\ - })()"; -assertEquals(8, eval(code)); - - -code = "(function() {\ - var x,y,z;\ - return x = y = z = 8;\ - })()"; -assertEquals(8, eval(code)); - -// Test object literals. -var a, b; -code = "a = {x:8}"; -eval(code); -assertEquals(8, a.x); - -code = "b = {x:a, y:'abc'}"; -eval(code); -assertEquals(a, b.x); -assertEquals(8, b.x.x); -assertEquals("abc", b.y); - -code = "({x:8, y:9}); 10"; -assertEquals(10, eval(code)); - -code = "({x:8, y:9})"; -eval(code); -assertEquals(9, eval(code+".y")); - -code = "a = {2:8, x:9}"; -eval(code); -assertEquals(8, a[2]); -assertEquals(8, a["2"]); -assertEquals(9, a["x"]); - -// Test regexp literals. - -a = /abc/; - -assertEquals(/abc/, a); - -code = "/abc/; 8"; -assertEquals(8, eval(code)); diff --git a/implementation-contributed/v8/mjsunit/compiler/literals-optimized.js b/implementation-contributed/v8/mjsunit/compiler/literals-optimized.js deleted file mode 100644 index 049e21a3a5f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/literals-optimized.js +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test optimized versions of array and object literals. - -function TestOptimizedLiteral(create, verify) { - verify(create(1, 2, 3), 1, 2, 3); - verify(create(3, 5, 7), 3, 5, 7); - %OptimizeFunctionOnNextCall(create); - verify(create(11, 23, 42), 11, 23, 42); -} - - -// Test shallow array literal. -function create_arr_shallow(a, b, c) { - return [0, a, 0, b, 0, c]; -} -function verify_arr_shallow(array, a, b, c) { - assertSame(6, array.length); - assertSame(0, array[0]); - assertSame(a, array[1]); - assertSame(0, array[2]); - assertSame(b, array[3]); - assertSame(0, array[4]); - assertSame(c, array[5]); -} -TestOptimizedLiteral(create_arr_shallow, verify_arr_shallow); - - -// Test nested array literal. -function create_arr_nested(a, b, c) { - return [[0, a], [b, c], [1, 2], 3]; -} -function verify_arr_nested(array, a, b, c) { - assertSame(4, array.length); - assertSame(2, array[0].length); - assertSame(0, array[0][0]); - assertSame(a, array[0][1]); - assertSame(2, array[1].length); - assertSame(b, array[1][0]); - assertSame(c, array[1][1]); - assertSame(2, array[2].length); - assertSame(1, array[2][0]); - assertSame(2, array[2][1]); - assertSame(3, array[3]); -} -TestOptimizedLiteral(create_arr_nested, verify_arr_nested); - - -// Test shallow object literal. -function create_obj_shallow(a, b, c) { - return { x:a, y:b, z:c, v:'foo', 9:'bar' }; -} -function verify_obj_shallow(object, a, b, c) { - assertSame(a, object.x); - assertSame(b, object.y); - assertSame(c, object.z); - assertSame('foo', object.v); - assertSame('bar', object[9]); -} -TestOptimizedLiteral(create_obj_shallow, verify_obj_shallow); - - -// Test nested object literal. -function create_obj_nested(a, b, c) { - return { x:{ v:a, w:b }, y:{ v:1, w:2 }, z:c, v:'foo', 9:'bar' }; -} -function verify_obj_nested(object, a, b, c) { - assertSame(a, object.x.v); - assertSame(b, object.x.w); - assertSame(1, object.y.v); - assertSame(2, object.y.w); - assertSame(c, object.z); - assertSame('foo', object.v); - assertSame('bar', object[9]); -} -TestOptimizedLiteral(create_obj_nested, verify_obj_nested); - - -// Test mixed array and object literal. -function create_mixed_nested(a, b, c) { - return { x:[1, 2], y:[a, b], z:c, v:{ v:'foo' }, 9:'bar' }; -} -function verify_mixed_nested(object, a, b, c) { - assertSame(2, object.x.length); - assertSame(1, object.x[0]); - assertSame(2, object.x[1]); - assertSame(2, object.y.length); - assertSame(a, object.y[0]); - assertSame(b, object.y[1]); - assertSame(c, object.z); - assertSame('foo', object.v.v); - assertSame('bar', object[9]); -} -TestOptimizedLiteral(create_mixed_nested, verify_mixed_nested); diff --git a/implementation-contributed/v8/mjsunit/compiler/literals.js b/implementation-contributed/v8/mjsunit/compiler/literals.js deleted file mode 100644 index 49de2e10f23..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/literals.js +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test simple literals. -assertEquals(8, eval("8")); - -assertEquals(null, eval("null")); - -assertEquals("abc", eval("'abc'")); - -assertEquals(8, eval("6;'abc';8")); - -// Characters just outside the ranges of hex-escapes. -// "/" comes just before "0". -assertThrows('"\\x1/"'); -assertThrows('"\\u111/"'); -assertEquals("\\x1\\/", RegExp("\\x1/").source); -assertEquals("\\u111\\/", RegExp("\\u111/").source); - -// ":" comes just after "9". -assertThrows('"\\x1:"'); -assertThrows('"\\u111:"'); -assertEquals("\\x1:", /\x1:/.source); -assertEquals("\\u111:", /\u111:/.source); - -// "`" comes just before "a". -assertThrows('"\\x1`"'); -assertThrows('"\\u111`"'); -assertEquals("\\x1`", /\x1`/.source); -assertEquals("\\u111`", /\u111`/.source); - -// "g" comes just before "f". -assertThrows('"\\x1g"'); -assertThrows('"\\u111g"'); -assertEquals("\\x1g", /\x1g/.source); -assertEquals("\\u111g", /\u111g/.source); - -// "@" comes just before "A". -assertThrows('"\\x1@"'); -assertThrows('"\\u111@"'); -assertEquals("\\x1@", /\x1@/.source); -assertEquals("\\u111@", /\u111@/.source); - -// "G" comes just after "F". -assertThrows('"\\x1G"'); -assertThrows('"\\u111G"'); -assertEquals("\\x1G", /\x1G/.source); -assertEquals("\\u111G", /\u111G/.source); - -// Test that octal literals continue to be forbidden in template even -// when followed by a string containing an octal literal. -assertThrows('`\\1`\n"\\1"'); - -// Test some materialized array literals. -assertEquals([1,2,3,4], eval('[1,2,3,4]')); -assertEquals([[1,2],3,4], eval('[[1,2],3,4]')); -assertEquals([1,[2,3,4]], eval('[1,[2,3,4]]')); - -assertEquals([1,2,3,4], eval('var a=1, b=2; [a,b,3,4]')) -assertEquals([1,2,3,4], eval('var a=1, b=2, c = [a,b,3,4]; c')); - -function double(x) { return x + x; } -var s = 'var a = 1, b = 2; [double(a), double(b), double(3), double(4)]'; -assertEquals([2,4,6,8], eval(s)); - -// Test array literals in effect context. -assertEquals(17, eval('[1,2,3,4]; 17')); -assertEquals(19, eval('var a=1, b=2; [a,b,3,4]; 19')); -assertEquals(23, eval('var a=1, b=2; c=23; [a,b,3,4]; c')); - -// Test that literals work for non-smi indices. -// Ensure hash-map collision if using value as hash. -var o = {"2345678901" : 42, "2345678901" : 30}; diff --git a/implementation-contributed/v8/mjsunit/compiler/load-elimination-global.js b/implementation-contributed/v8/mjsunit/compiler/load-elimination-global.js deleted file mode 100644 index 9caaa9f7187..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/load-elimination-global.js +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --load-elimination - -// Test global load elimination of redundant loads and stores. - -var X = true; // For forcing branches. -X = false; -X = true; -X = false; - -function B(x, y) { - this.x = x; - this.y = y; - return this; -} - -function test_load() { - var a = new B(1, 2); - var f = a.x + a.x; - if (false) ; - return f + a.x + a.x; -} - -function test_load2() { - var a = new B(1, 2); - var f = a.x + a.x; - if (true) ; - return f + a.x + a.x; -} - -function test_store_load() { - var a = new B(1, 2); - a.x = 4; - var b = X ? a.x : a.x; - return b + a.x; -} - -function test_store_load2() { - var a = new B(1, 2); - var c = 6; - if (X) a.x = c; - else a.x = c; - return a.x + a.x; -} - -function test_nonaliasing_store1() { - var a = new B(2, 3), b = new B(3, 4); - if (X) ; - b.x = 4; - if (X) ; - var f = a.x; - if (X) ; - b.x = 5; - if (X) ; - var g = a.x; - if (X) ; - b.x = 6; - if (X) ; - var h = a.x; - if (X) ; - b.x = 7; - if (X) ; - return f + g + h + a.x; -} - -function test_loop(x) { - var a = new B(2, 3); - var v = a.x; - var total = v; - var i = 0; - while (i++ < 10) { - total = a.x; - a.y = 4; - } - return total; -} - -function test_loop2(x) { - var a = new B(2, 3); - var v = a.x; - var total = v; - var i = 0; - while (i++ < 10) { - total = a.x; // a.x not affected by loop - a.y = 4; - - var j = 0; - while (j++ < 10) { - total = a.x; // a.x not affected by loop - a.y = 5; - } - - total = a.x; - a.y = 6; - - j = 0; - while (j++ < 10) { - total = a.x; // a.x not affected by loop - a.y = 7; - } - } - return total; -} - -function killall() { - try { } catch(e) { } -} - -%NeverOptimizeFunction(killall); - -function test_store_load_kill() { - var a = new B(1, 2); - if (X) ; - a.x = 4; - if (X) ; - var f = a.x; - if (X) ; - a.x = 5; - if (X) ; - var g = a.x; - if (X) ; - killall(); - if (X) ; - a.x = 6; - if (X) ; - var h = a.x; - if (X) ; - a.x = 7; - if (X) ; - return f + g + h + a.x; -} - -function test_store_store() { - var a = new B(6, 7); - if (X) ; - a.x = 7; - if (X) ; - a.x = 7; - if (X) ; - a.x = 7; - if (X) ; - a.x = 7; - if (X) ; - return a.x; -} - -function test(x, f) { - X = true; - assertEquals(x, f()); - assertEquals(x, f()); - X = false; - assertEquals(x, f()); - assertEquals(x, f()); - X = true; - %OptimizeFunctionOnNextCall(f); - assertEquals(x, f()); - assertEquals(x, f()); - X = false; - assertEquals(x, f()); - assertEquals(x, f()); -} - -test(4, test_load); -test(8, test_store_load); -test(12, test_store_load2); -test(8, test_nonaliasing_store1); -test(22, test_store_load_kill); -test(7, test_store_store); -test(2, test_loop); -test(2, test_loop2); diff --git a/implementation-contributed/v8/mjsunit/compiler/load-elimination-osr.js b/implementation-contributed/v8/mjsunit/compiler/load-elimination-osr.js deleted file mode 100644 index a57fe173ee7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/load-elimination-osr.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --load-elimination - -// Test global load elimination in the presence of OSR compilation. - -function It(x, y) { } - -function foo_osr(x, limit) { - var o = new It(); - o.x = x; - o.y = x; - for (var i = 0; i < limit; i++) { - o.y += o.x; // Load of x cannot be hoisted due to OSR. - } - - return o.y; -} - -assertEquals(22, foo_osr(11, 1)); -assertEquals(24, foo_osr(12, 1)); -assertEquals(1300013, foo_osr(13, 100000)); - - -function foo_hot(x, limit) { - var o = new It(); - o.x = x; - o.y = x; - for (var i = 0; i < limit; i++) { - o.y += o.x; // Load of x can be hoisted without OSR. - } - - return o.y; -} - -assertEquals(22, foo_hot(11, 1)); -assertEquals(24, foo_hot(12, 1)); -%OptimizeFunctionOnNextCall(foo_hot); -assertEquals(32, foo_hot(16, 1)); -assertEquals(1300013, foo_hot(13, 100000)); diff --git a/implementation-contributed/v8/mjsunit/compiler/load-elimination-params.js b/implementation-contributed/v8/mjsunit/compiler/load-elimination-params.js deleted file mode 100644 index 13a4a8596d6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/load-elimination-params.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --load-elimination - -// Test local load elimination of redundant loads and stores. - -function B(x, y) { - this.x = x; - this.y = y; - return this; -} - -function test_params1(a, b) { - var i = a.x; - var j = a.x; - var k = b.x; - var l = b.x; - return i + j + k + l; -} - -assertEquals(14, test_params1(new B(3, 4), new B(4, 5))); -assertEquals(110, test_params1(new B(11, 7), new B(44, 8))); - -%OptimizeFunctionOnNextCall(test_params1); - -assertEquals(6, test_params1(new B(1, 7), new B(2, 8))); - -function test_params2(a, b) { - var o = new B(a + 1, b); - o.x = a; - var i = o.x; - o.x = a; - var j = o.x; - o.x = b; - var k = o.x; - o.x = b; - var l = o.x; - return i + j + k + l; -} - -assertEquals(14, test_params2(3, 4)); -assertEquals(110, test_params2(11, 44)); - -%OptimizeFunctionOnNextCall(test_params2); - -assertEquals(6, test_params2(1, 2)); diff --git a/implementation-contributed/v8/mjsunit/compiler/load-elimination.js b/implementation-contributed/v8/mjsunit/compiler/load-elimination.js deleted file mode 100644 index 9bf85643082..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/load-elimination.js +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --load-elimination - -// Test local load elimination of redundant loads and stores. - -function B(x, y) { - this.x = x; - this.y = y; - return this; -} - -function C() { -} - -function test_load() { - var a = new B(1, 2); - return a.x + a.x + a.x + a.x; -} - - -function test_load_from_different_contexts() { - var r = 1; - this.f = function() { - var fr = r; - this.g = function(flag) { - var gr; - if (flag) { - gr = r; - } else { - gr = r; - } - return gr + r + fr; - }; - }; - this.f(); - return this.g(true); -} - - -function test_store_load() { - var a = new B(1, 2); - a.x = 4; - var f = a.x; - a.x = 5; - var g = a.x; - a.x = 6; - var h = a.x; - a.x = 7; - return f + g + h + a.x; -} - -function test_nonaliasing_store1() { - var a = new B(2, 3), b = new B(3, 4); - b.x = 4; - var f = a.x; - b.x = 5; - var g = a.x; - b.x = 6; - var h = a.x; - b.x = 7; - return f + g + h + a.x; -} - -function test_transitioning_store1() { - var a = new B(2, 3); - var f = a.x, g = a.y; - var b = new B(3, 4); - return a.x + a.y; -} - -function test_transitioning_store2() { - var b = new C(); - var a = new B(-1, 5); - var f = a.x, g = a.y; - b.x = 9; - b.y = 11; - return a.x + a.y; -} - -var false_v = false; -function test_transitioning_store3() { - var o = new C(); - var v = o; - if (false_v) v = 0; - v.x = 20; - return o.x; -} - -function killall() { - try { } catch(e) { } -} - -%NeverOptimizeFunction(killall); - -function test_store_load_kill() { - var a = new B(1, 2); - a.x = 4; - var f = a.x; - a.x = 5; - var g = a.x; - killall(); - a.x = 6; - var h = a.x; - a.x = 7; - return f + g + h + a.x; -} - -function test_store_store() { - var a = new B(6, 7); - a.x = 7; - a.x = 7; - a.x = 7; - a.x = 7; - return a.x; -} - -function test(x, f) { - assertEquals(x, f()); - assertEquals(x, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(x, f()); -} - -test(4, test_load); -test(3, new test_load_from_different_contexts().g); -test(22, test_store_load); -test(8, test_nonaliasing_store1); -test(5, test_transitioning_store1); -test(4, test_transitioning_store2); -test(20, test_transitioning_store3); -test(22, test_store_load_kill); -test(7, test_store_store); diff --git a/implementation-contributed/v8/mjsunit/compiler/logical-and.js b/implementation-contributed/v8/mjsunit/compiler/logical-and.js deleted file mode 100644 index 783edb6a794..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/logical-and.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function AndBB(x,y) { - return (x == 0) && (y == 0); -} - -function AndBN(x,y) { - return (x == 0) && y; -} - -function AndNB(x,y) { - return x && (y == 0); -} - -function AndNN(x,y) { - return x && y; -} - -assertTrue(AndBB(0, 0)); -assertFalse(AndBB(1, 0)); -assertFalse(AndBB(0, 1)); -assertFalse(AndBB(1, 1)); - -assertEquals(0, AndBN(0, 0)); -assertEquals(1, AndBN(0, 1)); -assertFalse(AndBN(1, 0)); -assertEquals(1, AndBN(0, 1)); -assertEquals(2, AndBN(0, 2)); -assertFalse(AndBN(1, 1)); -assertFalse(AndBN(1, 2)); - -assertEquals(0, AndNB(0, 0)); -assertTrue(AndNB(1, 0)); -assertEquals(0, AndNB(0, 1)); -assertEquals("", AndNB("", 1)); -assertFalse(AndNB(1, 1)); -assertTrue(AndNB(2, 0)); - -assertEquals(0, AndNN(0, 0)); -assertEquals(0, AndNN(1, 0)); -assertEquals(0, AndNN(2, 0)); -assertEquals(0, AndNN(0, 1)); -assertEquals(0, AndNN(0, 2)); -assertEquals(1, AndNN(1, 1)); -assertEquals(2, AndNN(3, 2)); diff --git a/implementation-contributed/v8/mjsunit/compiler/logical-or.js b/implementation-contributed/v8/mjsunit/compiler/logical-or.js deleted file mode 100644 index 87c630db394..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/logical-or.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function OrBB(x,y) { - return (x == 0) || (y == 0); -} - -function OrBN(x,y) { - return (x == 0) || y; -} - -function OrNB(x,y) { - return x || (y == 0); -} - -function OrNN(x,y) { - return x || y; -} - -assertTrue(OrBB(0, 0)); -assertTrue(OrBB(1, 0)); -assertTrue(OrBB(0, 1)); -assertFalse(OrBB(1, 1)); - -assertTrue(OrBN(0, 0)); -assertEquals(0, OrBN(1, 0)); -assertTrue(OrBN(0, 1)); -assertEquals(1, OrBN(1, 1)); -assertEquals(2, OrBN(1, 2)); - -assertTrue(OrNB(0, 0)); -assertEquals(1, OrNB(1, 0)); -assertFalse(OrNB(0, 1)); -assertEquals(1, OrNB(1, 1)); -assertEquals(2, OrNB(2, 1)); - -assertEquals(0, OrNN(0, 0)); -assertEquals(1, OrNN(1, 0)); -assertEquals(2, OrNN(2, 0)); -assertEquals(1, OrNN(0, 1)); -assertEquals(2, OrNN(0, 2)); -assertEquals(1, OrNN(1, 2)); diff --git a/implementation-contributed/v8/mjsunit/compiler/loopcount.js b/implementation-contributed/v8/mjsunit/compiler/loopcount.js deleted file mode 100644 index 6d6918f2f51..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/loopcount.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test postfix count operations with smis. - -function f1() { var x = 0x3fffffff; x++; return x; } -assertEquals(0x40000000, f1()); - - -function f2() { var x = -0x40000000; x--; return x; } -assertEquals(-0x40000001, f2()); - - -function f3(x) { x = x & 0x3fffffff; x++; return x; } -assertEquals(0x40000000, f3(0x3fffffff)); - - -function f4() { - var i; - for (i = 0x3ffffffe; i <= 0x3fffffff; i++) {} - return i; -} -assertEquals(0x40000000, f4()); - - -function f5() { - var i; - for (i = -0x3fffffff; i >= -0x40000000; i--) {} - return i; -} -assertEquals(-0x40000001, f5()); - - -function f6() { var x = 0x3fffffff; x++; return x+1; } -assertEquals(0x40000001, f6()); - - -function f7() { - var i; - for (i = 0x3ffffffd; i <= 0x3ffffffe; i++) {} - i++; i = i + 1; - return i; -} -assertEquals(0x40000001, f7()); - - -function f8() { - var i; - for (i = 0x3ffffffd; i <= 0x3fffffff; i++) {} - i++; i++; - return i; -} -assertEquals(0x40000002, f8()); - - -function f9() { - var i; - for (i = 0; i < 42; i++) { - return 42; - } -} -assertEquals(42, f9()); - - -function f10(x) { - for (x = 0; x < 4; x++) {} -} -f10(42); diff --git a/implementation-contributed/v8/mjsunit/compiler/loops.js b/implementation-contributed/v8/mjsunit/compiler/loops.js deleted file mode 100644 index 2195c6c9373..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/loops.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test compilation of loops. - -var n = 1; -for (var i = 1; (6 - i); i++) { - // Factorial! - n = n * i; -} -assertEquals(120, n); - -// Test assignments in the loop condition. -function f(i, n) { - while((n = n - 1) >= 0) { - i = n + 1; - } - return i; -} -assertEquals(1, f(0, 42)); - - -// Test do-while loop and continue. -function g(a) { - var x = 0, c = 0; - do { - x = x + 1; - if (x < 5) continue; - c = c + 1; - } while(x < a); - return c; -} - -assertEquals(6, g(10)); - -// Test deoptimization in the loop condition. -assertEquals(0, g("foo")); diff --git a/implementation-contributed/v8/mjsunit/compiler/manual-concurrent-recompile.js b/implementation-contributed/v8/mjsunit/compiler/manual-concurrent-recompile.js deleted file mode 100644 index 19b4d2a0f1e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/manual-concurrent-recompile.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc -// Flags: --concurrent-recompilation --block-concurrent-recompilation -// Flags: --opt --no-always-opt - -if (!%IsConcurrentRecompilationSupported()) { - print("Concurrent recompilation is disabled. Skipping this test."); - quit(); -} - -function f(x) { - var xx = x * x; - var xxstr = xx.toString(); - return xxstr.length; -} - -function g(x) { - var xxx = Math.sqrt(x) | 0; - var xxxstr = xxx.toString(); - return xxxstr.length; -} - -function k(x) { - return x * x; -} - -f(g(1)); -f(g(2)); -assertUnoptimized(f); -assertUnoptimized(g); - -%OptimizeFunctionOnNextCall(f, "concurrent"); -%OptimizeFunctionOnNextCall(g, "concurrent"); -f(g(3)); // Kick off recompilation. - -assertUnoptimized(f, "no sync"); // Not yet optimized since recompilation -assertUnoptimized(g, "no sync"); // is still blocked. - -// Let concurrent recompilation proceed. -%UnblockConcurrentRecompilation(); - -assertOptimized(f, "sync"); // Optimized once we sync with the -assertOptimized(g, "sync"); // background thread. diff --git a/implementation-contributed/v8/mjsunit/compiler/materialize-dictionary-properties.js b/implementation-contributed/v8/mjsunit/compiler/materialize-dictionary-properties.js deleted file mode 100644 index 5838a83979f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/materialize-dictionary-properties.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - // Create a non-escaping object. - var o = Object.create(null); - %DeoptimizeNow(); - // Keep it alive. - return o ? 1 : 0; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals(1, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/materialize-mutable-heap-number.js b/implementation-contributed/v8/mjsunit/compiler/materialize-mutable-heap-number.js deleted file mode 100644 index b6b99afcf46..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/materialize-mutable-heap-number.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function C() {} -%CompleteInobjectSlackTracking(new C()); - -function f() { - // Create a non-escaping object. - var o = new C(); - // Add an out-of-object double property. - o.x = 0.5; - %DeoptimizeNow(); - return o.x + 0.25; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals(0.75, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-ceil.js b/implementation-contributed/v8/mjsunit/compiler/math-ceil.js deleted file mode 100644 index f91348b4d2f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-ceil.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Ensure that the typing rule for Math.ceil deals correctly with -// inputs in the range (-1.0,0.0), which are mapped to -0. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type PlainNumber \/ NaN. - x = +x; - x = Math.abs(x) - 1.0; - return Object.is(-0, Math.ceil(x)); - } - - assertFalse(foo(1.5)); - assertTrue(foo(0.5)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1.5)); - assertTrue(foo(0.5)); -})(); - -// Ensure that the typing rule for Math.ceil deals correctly with -// NaN inputs, which are mapped to NaN. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type PlainNumber \/ NaN. - x = +x; - x = Math.abs(x) - 1.0; - return Object.is(NaN, Math.ceil(x)); - } - - assertFalse(foo(1.5)); - assertTrue(foo(NaN)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1.5)); - assertTrue(foo(NaN)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-floor-global.js b/implementation-contributed/v8/mjsunit/compiler/math-floor-global.js deleted file mode 100644 index 9ee649cb2d8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-floor-global.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --max-semi-space-size=1 --allow-natives-syntax - -// Test inlining of Math.floor when assigned to a global. -var flo = Math.floor; -var test_id = 0; - -function testFloor(expect, input) { - var test = new Function('n', - '"' + (test_id++) + '";return flo(n)'); - assertEquals(expect, test(input)); - assertEquals(expect, test(input)); - assertEquals(expect, test(input)); - %OptimizeFunctionOnNextCall(test); - assertEquals(expect, test(input)); -} - -function zero() { - var x = 0.5; - return (function() { return x - 0.5; })(); -} - -function test() { - testFloor(0, 0); - testFloor(0, zero()); - testFloor(-0, -0); - testFloor(Infinity, Infinity); - testFloor(-Infinity, -Infinity); - testFloor(NaN, NaN); - - // Ensure that a negative zero coming from Math.floor is properly handled - // by other operations. - function ifloor(x) { - return 1 / Math.floor(x); - } - assertEquals(-Infinity, ifloor(-0)); - assertEquals(-Infinity, ifloor(-0)); - assertEquals(-Infinity, ifloor(-0)); - %OptimizeFunctionOnNextCall(ifloor); - assertEquals(-Infinity, ifloor(-0)); - - testFloor(0, 0.1); - testFloor(0, 0.49999999999999994); - testFloor(0, 0.5); - testFloor(0, 0.7); - testFloor(-1, -0.1); - testFloor(-1, -0.49999999999999994); - testFloor(-1, -0.5); - testFloor(-1, -0.7); - testFloor(1, 1); - testFloor(1, 1.1); - testFloor(1, 1.5); - testFloor(1, 1.7); - testFloor(-1, -1); - testFloor(-2, -1.1); - testFloor(-2, -1.5); - testFloor(-2, -1.7); - - testFloor(0, Number.MIN_VALUE); - testFloor(-1, -Number.MIN_VALUE); - testFloor(Number.MAX_VALUE, Number.MAX_VALUE); - testFloor(-Number.MAX_VALUE, -Number.MAX_VALUE); - testFloor(Infinity, Infinity); - testFloor(-Infinity, -Infinity); - - // 2^30 is a smi boundary. - var two_30 = 1 << 30; - - testFloor(two_30, two_30); - testFloor(two_30, two_30 + 0.1); - testFloor(two_30, two_30 + 0.5); - testFloor(two_30, two_30 + 0.7); - - testFloor(two_30 - 1, two_30 - 1); - testFloor(two_30 - 1, two_30 - 1 + 0.1); - testFloor(two_30 - 1, two_30 - 1 + 0.5); - testFloor(two_30 - 1, two_30 - 1 + 0.7); - - testFloor(-two_30, -two_30); - testFloor(-two_30, -two_30 + 0.1); - testFloor(-two_30, -two_30 + 0.5); - testFloor(-two_30, -two_30 + 0.7); - - testFloor(-two_30 + 1, -two_30 + 1); - testFloor(-two_30 + 1, -two_30 + 1 + 0.1); - testFloor(-two_30 + 1, -two_30 + 1 + 0.5); - testFloor(-two_30 + 1, -two_30 + 1 + 0.7); - - // 2^52 is a precision boundary. - var two_52 = (1 << 30) * (1 << 22); - - testFloor(two_52, two_52); - testFloor(two_52, two_52 + 0.1); - assertEquals(two_52, two_52 + 0.5); - testFloor(two_52, two_52 + 0.5); - assertEquals(two_52 + 1, two_52 + 0.7); - testFloor(two_52 + 1, two_52 + 0.7); - - testFloor(two_52 - 1, two_52 - 1); - testFloor(two_52 - 1, two_52 - 1 + 0.1); - testFloor(two_52 - 1, two_52 - 1 + 0.5); - testFloor(two_52 - 1, two_52 - 1 + 0.7); - - testFloor(-two_52, -two_52); - testFloor(-two_52, -two_52 + 0.1); - testFloor(-two_52, -two_52 + 0.5); - testFloor(-two_52, -two_52 + 0.7); - - testFloor(-two_52 + 1, -two_52 + 1); - testFloor(-two_52 + 1, -two_52 + 1 + 0.1); - testFloor(-two_52 + 1, -two_52 + 1 + 0.5); - testFloor(-two_52 + 1, -two_52 + 1 + 0.7); -} - - -// Test in a loop to cover the custom IC and GC-related issues. -for (var i = 0; i < 10; i++) { - test(); - new Array(i * 10000); -} - - -// Regression test for a bug where a negative zero coming from Math.floor -// was not properly handled by other operations. -function floorsum(i, n) { - var ret = Math.floor(n); - while (--i > 0) { - ret += Math.floor(n); - } - return ret; -} -assertEquals(-0, floorsum(1, -0)); -%OptimizeFunctionOnNextCall(floorsum); -// The optimized function will deopt. Run it with enough iterations to try -// to optimize via OSR (triggering the bug). -assertEquals(-0, floorsum(50000, -0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-floor-local.js b/implementation-contributed/v8/mjsunit/compiler/math-floor-local.js deleted file mode 100644 index 5ebe90b705f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-floor-local.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --max-semi-space-size=1 --allow-natives-syntax - -// Test inlining of Math.floor when assigned to a local. -var test_id = 0; - -function testFloor(expect, input) { - var test = new Function('n', - '"' + (test_id++) + - '";var f = Math.floor; return f(n)'); - assertEquals(expect, test(input)); - assertEquals(expect, test(input)); - assertEquals(expect, test(input)); - %OptimizeFunctionOnNextCall(test); - assertEquals(expect, test(input)); -} - -function zero() { - var x = 0.5; - return (function() { return x - 0.5; })(); -} - -function test() { - testFloor(0, 0); - testFloor(0, zero()); - testFloor(-0, -0); - testFloor(Infinity, Infinity); - testFloor(-Infinity, -Infinity); - testFloor(NaN, NaN); - - // Ensure that a negative zero coming from Math.floor is properly handled - // by other operations. - function ifloor(x) { - return 1 / Math.floor(x); - } - assertEquals(-Infinity, ifloor(-0)); - assertEquals(-Infinity, ifloor(-0)); - assertEquals(-Infinity, ifloor(-0)); - %OptimizeFunctionOnNextCall(ifloor); - assertEquals(-Infinity, ifloor(-0)); - - testFloor(0, 0.1); - testFloor(0, 0.49999999999999994); - testFloor(0, 0.5); - testFloor(0, 0.7); - testFloor(-1, -0.1); - testFloor(-1, -0.49999999999999994); - testFloor(-1, -0.5); - testFloor(-1, -0.7); - testFloor(1, 1); - testFloor(1, 1.1); - testFloor(1, 1.5); - testFloor(1, 1.7); - testFloor(-1, -1); - testFloor(-2, -1.1); - testFloor(-2, -1.5); - testFloor(-2, -1.7); - - testFloor(0, Number.MIN_VALUE); - testFloor(-1, -Number.MIN_VALUE); - testFloor(Number.MAX_VALUE, Number.MAX_VALUE); - testFloor(-Number.MAX_VALUE, -Number.MAX_VALUE); - testFloor(Infinity, Infinity); - testFloor(-Infinity, -Infinity); - - // 2^30 is a smi boundary. - var two_30 = 1 << 30; - - testFloor(two_30, two_30); - testFloor(two_30, two_30 + 0.1); - testFloor(two_30, two_30 + 0.5); - testFloor(two_30, two_30 + 0.7); - - testFloor(two_30 - 1, two_30 - 1); - testFloor(two_30 - 1, two_30 - 1 + 0.1); - testFloor(two_30 - 1, two_30 - 1 + 0.5); - testFloor(two_30 - 1, two_30 - 1 + 0.7); - - testFloor(-two_30, -two_30); - testFloor(-two_30, -two_30 + 0.1); - testFloor(-two_30, -two_30 + 0.5); - testFloor(-two_30, -two_30 + 0.7); - - testFloor(-two_30 + 1, -two_30 + 1); - testFloor(-two_30 + 1, -two_30 + 1 + 0.1); - testFloor(-two_30 + 1, -two_30 + 1 + 0.5); - testFloor(-two_30 + 1, -two_30 + 1 + 0.7); - - // 2^52 is a precision boundary. - var two_52 = (1 << 30) * (1 << 22); - - testFloor(two_52, two_52); - testFloor(two_52, two_52 + 0.1); - assertEquals(two_52, two_52 + 0.5); - testFloor(two_52, two_52 + 0.5); - assertEquals(two_52 + 1, two_52 + 0.7); - testFloor(two_52 + 1, two_52 + 0.7); - - testFloor(two_52 - 1, two_52 - 1); - testFloor(two_52 - 1, two_52 - 1 + 0.1); - testFloor(two_52 - 1, two_52 - 1 + 0.5); - testFloor(two_52 - 1, two_52 - 1 + 0.7); - - testFloor(-two_52, -two_52); - testFloor(-two_52, -two_52 + 0.1); - testFloor(-two_52, -two_52 + 0.5); - testFloor(-two_52, -two_52 + 0.7); - - testFloor(-two_52 + 1, -two_52 + 1); - testFloor(-two_52 + 1, -two_52 + 1 + 0.1); - testFloor(-two_52 + 1, -two_52 + 1 + 0.5); - testFloor(-two_52 + 1, -two_52 + 1 + 0.7); -} - - -// Test in a loop to cover the custom IC and GC-related issues. -for (var i = 0; i < 10; i++) { - test(); - new Array(i * 10000); -} - - -// Regression test for a bug where a negative zero coming from Math.floor -// was not properly handled by other operations. -function floorsum(i, n) { - var ret = Math.floor(n); - while (--i > 0) { - ret += Math.floor(n); - } - return ret; -} -assertEquals(-0, floorsum(1, -0)); -%OptimizeFunctionOnNextCall(floorsum); -// The optimized function will deopt. Run it with enough iterations to try -// to optimize via OSR (triggering the bug). -assertEquals(-0, floorsum(100000, -0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-imul.js b/implementation-contributed/v8/mjsunit/compiler/math-imul.js deleted file mode 100644 index 1de18a6a2d1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-imul.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test Math.imul() with no inputs. -(function() { - function foo() { return Math.imul(); } - - assertEquals(0, foo()); - assertEquals(0, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo()); -})(); - -// Test Math.imul() with only one input. -(function() { - function foo(x) { return Math.imul(x); } - - assertEquals(0, foo(1)); - assertEquals(0, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(3)); -})(); - -// Test Math.imul() with wrong types. -(function() { - function foo(x, y) { return Math.imul(x, y); } - - assertEquals(0, foo(null, 1)); - assertEquals(0, foo(2, undefined)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(null, 1)); - assertEquals(0, foo(2, undefined)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(null, 1)); - assertEquals(0, foo(2, undefined)); - assertOptimized(foo); -})(); - -// Test Math.imul() with signed integers (statically known). -(function() { - function foo(x, y) { return Math.imul(x|0, y|0); } - - assertEquals(1, foo(1, 1)); - assertEquals(2, foo(2, 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1, 1)); - assertEquals(2, foo(2, 1)); - assertOptimized(foo); -})(); - -// Test Math.imul() with unsigned integers (statically known). -(function() { - function foo(x, y) { return Math.imul(x>>>0, y>>>0); } - - assertEquals(1, foo(1, 1)); - assertEquals(2, foo(2, 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1, 1)); - assertEquals(2, foo(2, 1)); - assertOptimized(foo); -})(); - -// Test Math.imul() with floating-point numbers. -(function() { - function foo(x, y) { return Math.imul(x, y); } - - assertEquals(1, foo(1.1, 1.1)); - assertEquals(2, foo(2.1, 1.1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1.1, 1.1)); - assertEquals(2, foo(2.1, 1.1)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-max.js b/implementation-contributed/v8/mjsunit/compiler/math-max.js deleted file mode 100644 index 350bdfba884..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-max.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test the case where TurboFan can statically rule out -0 from the -// Math.max type. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type [-inf, inf] \/ MinusZero. - x = +x; - x = Math.round(x); - return Object.is(-0, Math.max(1, x)) - } - - assertFalse(foo(-0)); - assertFalse(foo(-1)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(-0)); - assertFalse(foo(-1)); -})(); - -// Test the case where -0 is ruled out because it's strictly less than +0. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type [-inf, inf] \/ MinusZero. - x = +x; - x = Math.round(x); - return Object.is(-0, Math.max(0, x)) - } - - assertFalse(foo(-0)); - assertFalse(foo(-1)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(-0)); - assertFalse(foo(-1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-min.js b/implementation-contributed/v8/mjsunit/compiler/math-min.js deleted file mode 100644 index 882103984d3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-min.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test the case where TurboFan can statically rule out -0 from the -// Math.min type. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type [-inf, inf] \/ MinusZero. - x = +x; - x = Math.round(x); - return Object.is(-0, Math.min(-1, x)) - } - - assertFalse(foo(-0)); - assertFalse(foo(-1)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(-0)); - assertFalse(foo(-1)); -})(); - -// Test the case where +0 is ruled out because it's strictly greater than -0. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type [-inf, inf] \/ MinusZero. - x = +x; - x = Math.round(x); - return Object.is(+0, Math.min(-0, x)) - } - - assertFalse(foo(-0)); - assertFalse(foo(-1)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(-0)); - assertFalse(foo(-1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-mul.js b/implementation-contributed/v8/mjsunit/compiler/math-mul.js deleted file mode 100644 index a391b445fe0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-mul.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// For TurboFan, make sure we can eliminate the -0 return value check -// by recognizing a constant value. -function gotaconstant(y) { return 15 * y; } -assertEquals(45, gotaconstant(3)); -gotaconstant(3); -%OptimizeFunctionOnNextCall(gotaconstant); -gotaconstant(3); - -function gotaconstant_truncated(x, y) { return x * y | 0; } -assertEquals(45, gotaconstant_truncated(3, 15)); -gotaconstant_truncated(3, 15); -%OptimizeFunctionOnNextCall(gotaconstant_truncated); -gotaconstant_truncated(3, 15); - -function test(x, y) { return x * y; } - -assertEquals(12, test(3, 4)); -assertEquals(16, test(4, 4)); - -%OptimizeFunctionOnNextCall(test); -assertEquals(27, test(9, 3)); - -assertEquals(-0, test(-3, 0)); -assertEquals(-0, test(0, -0)); - - -const SMI_MAX = (1 << 29) - 1 + (1 << 29); // Create without overflowing. -const SMI_MIN = -SMI_MAX - 1; // Create without overflowing. - -// multiply by 3 to avoid compiler optimizations that convert 2*x to x + x. -assertEquals(SMI_MAX + SMI_MAX + SMI_MAX, test(SMI_MAX, 3)); - -// Verify that strength reduction will reduce the -0 check quite a bit -// if we have a negative integer constant. -function negtest(y) { return -3 * y; } -assertEquals(-12, negtest(4)); -assertEquals(-12, negtest(4)); -%OptimizeFunctionOnNextCall(negtest); -negtest(4); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-round.js b/implementation-contributed/v8/mjsunit/compiler/math-round.js deleted file mode 100644 index c42bf8f2a09..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-round.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Ensure that the typing rule for Math.round deals correctly with -// inputs in the range [-0.5,0.0), which are mapped to -0. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type PlainNumber \/ NaN. - x = +x; - x = Math.abs(x) - 1.0; - return Object.is(-0, Math.round(x)); - } - - assertFalse(foo(1.5)); - assertTrue(foo(0.5)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1.5)); - assertTrue(foo(0.5)); -})(); - -// Ensure that the typing rule for Math.round deals correctly with -// NaN inputs, which are mapped to NaN. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type PlainNumber \/ NaN. - x = +x; - x = Math.abs(x) - 1.0; - return Object.is(NaN, Math.round(x)); - } - - assertFalse(foo(1.5)); - assertTrue(foo(NaN)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1.5)); - assertTrue(foo(NaN)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-sign.js b/implementation-contributed/v8/mjsunit/compiler/math-sign.js deleted file mode 100644 index 0fff0982df8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-sign.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function signInt32(i) { - i = i|0; - return Math.sign(i); -} - -signInt32(0); -signInt32(2); -%OptimizeFunctionOnNextCall(signInt32); -assertEquals(1, signInt32(1)); -assertEquals(0, signInt32(0)); -assertEquals(-1, signInt32(-1)); -assertEquals(-1, signInt32(-1)); -assertEquals(1, signInt32(2147483647)); -assertEquals(-1, signInt32(2147483648)); -assertEquals(-1, signInt32(-2147483648)); -assertEquals(0, signInt32(NaN)); -assertEquals(0, signInt32(undefined)); -assertEquals(0, signInt32(-0)); - -function signFloat64(i) { - return Math.sign(+i); -} - -signFloat64(0.1); -signFloat64(-0.1); -%OptimizeFunctionOnNextCall(signFloat64); -assertEquals(1, signFloat64(1)); -assertEquals(1, signFloat64(0.001)); -assertEquals(-1, signFloat64(-0.002)); -assertEquals(1, signFloat64(1e100)); -assertEquals(-1, signFloat64(-2e100)); -assertEquals(0, signFloat64(0)); -assertEquals(Infinity, 1/signFloat64(0)); -assertEquals(-1, signFloat64(-1)); -assertEquals(-1, signFloat64(-1)); -assertEquals(1, signFloat64(2147483647)); -assertEquals(1, signFloat64(2147483648)); -assertEquals(-1, signFloat64(-2147483647)); -assertEquals(-1, signFloat64(-2147483648)); -assertEquals(-1, signFloat64(-2147483649)); -assertEquals(-0, signFloat64(-0)); -assertEquals(NaN, signFloat64(NaN)); -assertEquals(NaN, signFloat64(undefined)); -assertEquals(1, signFloat64(Infinity)); -assertEquals(-1, signFloat64(-Infinity)); diff --git a/implementation-contributed/v8/mjsunit/compiler/math-trunc.js b/implementation-contributed/v8/mjsunit/compiler/math-trunc.js deleted file mode 100644 index e5cc523bc0e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/math-trunc.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Ensure that the typing rule for Math.trunc deals correctly with -// inputs in the range (-1.0,0.0), which are mapped to -0. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type PlainNumber \/ NaN. - x = +x; - x = Math.abs(x) - 1.0; - return Object.is(-0, Math.trunc(x)); - } - - assertFalse(foo(1.5)); - assertTrue(foo(0.5)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1.5)); - assertTrue(foo(0.5)); -})(); - -// Ensure that the typing rule for Math.trunc deals correctly with -// NaN inputs, which are mapped to NaN. -(function() { - function foo(x) { - // Arrange x such that TurboFan infers type PlainNumber \/ NaN. - x = +x; - x = Math.abs(x) - 1.0; - return Object.is(NaN, Math.trunc(x)); - } - - assertFalse(foo(1.5)); - assertTrue(foo(NaN)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1.5)); - assertTrue(foo(NaN)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/minus-zero.js b/implementation-contributed/v8/mjsunit/compiler/minus-zero.js deleted file mode 100644 index 23639dfcc37..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/minus-zero.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function add(x, y) { - return x + y; -} - -assertEquals(0, add(0, 0)); -assertEquals(0, add(0, 0)); -%OptimizeFunctionOnNextCall(add); -assertEquals(-0, add(-0, -0)); - - -function testsin() { - assertEquals(-0, Math.sin(-0)); -} - -testsin(); -testsin(); -%OptimizeFunctionOnNextCall(testsin); -testsin(); - - -function testfloor() { - assertEquals(-0, Math.floor(-0)); -} - -testfloor(); -testfloor(); -%OptimizeFunctionOnNextCall(testfloor); -testfloor(); - - -var double_one = Math.cos(0); - -function add(a, b) { - return a + b; -} - -assertEquals(1, 1/add(double_one, 0)); -assertEquals(1, 1/add(0, double_one)); -%OptimizeFunctionOnNextCall(add); -assertEquals(1/(-0 + -0), 1/add(-0, -0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/mul-div-52bit.js b/implementation-contributed/v8/mjsunit/compiler/mul-div-52bit.js deleted file mode 100644 index 46a5d05a9f9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/mul-div-52bit.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function mul(a, b) { - const l = a & 0x3ffffff; - const h = b & 0x3ffffff; - - return (l * h) >>> 0; -} - -function mulAndDiv(a, b) { - const l = a & 0x3ffffff; - const h = b & 0x3ffffff; - const m = l * h; - - const rl = m & 0x3ffffff; - const rh = (m / 0x4000000) >>> 0; - - return rl | rh; -} - -function overflowMul(a, b) { - const l = a | 0; - const h = b | 0; - - return (l * h) >>> 0; -} - -function overflowDiv(a, b) { - const l = a & 0x3ffffff; - const h = b & 0x3ffffff; - const m = l * h; - - return (m / 0x10) >>> 0; -} - -function nonPowerOfTwoDiv(a, b) { - const l = a & 0x3ffffff; - const h = b & 0x3ffffff; - const m = l * h; - - return (m / 0x4000001) >>> 0; -} - -function test(fn, a, b, sets) { - const expected = fn(a, b); - fn(1, 2); - fn(0, 0); - %OptimizeFunctionOnNextCall(fn); - const actual = fn(a, b); - - assertEquals(expected, actual); - - sets.forEach(function(set, i) { - assertEquals(set.expected, fn(set.a, set.b), fn.name + ', set #' + i); - }); -} - -test(mul, 0x3ffffff, 0x3ffffff, [ - { a: 0, b: 0, expected: 0 }, - { a: 0xdead, b: 0xbeef, expected: 0xa6144983 }, - { a: 0x1aa1dea, b: 0x2badead, expected: 0x35eb2322 } -]); -test(mulAndDiv, 0x3ffffff, 0x3ffffff, [ - { a: 0, b: 0, expected: 0 }, - { a: 0xdead, b: 0xbeef, expected: 0x21449ab }, - { a: 0x1aa1dea, b: 0x2badead, expected: 0x1ebf32f } -]); -test(overflowMul, 0x4ffffff, 0x4ffffff, [ - { a: 0, b: 0, expected: 0 }, - { a: 0xdead, b: 0xbeef, expected: 0xa6144983 }, - { a: 0x1aa1dea, b: 0x2badead, expected: 0x35eb2322 } -]); -test(overflowDiv, 0x3ffffff, 0x3ffffff, [ - { a: 0, b: 0, expected: 0 }, - { a: 0xdead, b: 0xbeef, expected: 0xa614498 }, - { a: 0x1aa1dea, b: 0x2badead, expected: 0x835eb232 } -]); -test(nonPowerOfTwoDiv, 0x3ffffff, 0x3ffffff, [ - { a: 0, b: 0, expected: 0 }, - { a: 0xdead, b: 0xbeef, expected: 0x29 }, - { a: 0x1aa1dea, b: 0x2badead, expected: 0x122d20d } -]); diff --git a/implementation-contributed/v8/mjsunit/compiler/multiply-add.js b/implementation-contributed/v8/mjsunit/compiler/multiply-add.js deleted file mode 100644 index 2b4304e845e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/multiply-add.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// Test expressions that can be computed with a multiply-add instruction. - -function f(a, b, c) { - return a * b + c; -} - -function g(a, b, c) { - return a + b * c; -} - -function h(a, b, c, d) { - return a * b + c * d; -} - -assertEquals(5, f(1, 2, 3)); -assertEquals(5, f(1, 2, 3)); -%OptimizeFunctionOnNextCall(f); -assertEquals(5, f(1, 2, 3)); -assertEquals("2foo", f(1, 2, "foo")); -assertEquals(5.41, f(1.1, 2.1, 3.1)); -assertEquals(5.41, f(1.1, 2.1, 3.1)); -%OptimizeFunctionOnNextCall(f); -assertEquals(5.41, f(1.1, 2.1, 3.1)); - -assertEquals(7, g(1, 2, 3)); -assertEquals(7, g(1, 2, 3)); -%OptimizeFunctionOnNextCall(g); -assertEquals(7, g(1, 2, 3)); -assertEquals(8.36, g(1.1, 2.2, 3.3)); -assertEquals(8.36, g(1.1, 2.2, 3.3)); -%OptimizeFunctionOnNextCall(g); -assertEquals(8.36, g(1.1, 2.2, 3.3)); - -assertEquals(14, h(1, 2, 3, 4)); -assertEquals(14, h(1, 2, 3, 4)); -%OptimizeFunctionOnNextCall(h); -assertEquals(14, h(1, 2, 3, 4)); -assertEquals(15.02, h(1.1, 2.1, 3.1, 4.1)); -assertEquals(15.02, h(1.1, 2.1, 3.1, 4.1)); -%OptimizeFunctionOnNextCall(h); -assertEquals(15.02, h(1.1, 2.1, 3.1, 4.1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/multiply-sub.js b/implementation-contributed/v8/mjsunit/compiler/multiply-sub.js deleted file mode 100644 index 4793181d47a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/multiply-sub.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// Test expressions that can be computed with a multiply-add instruction. - -function f(a, b, c) { - return a - b * c; -} - -function g(a, b, c) { - return a * b - c; -} - -function h(a, b, c, d) { - return a * b - c * d; -} - -assertEquals(-5.41, f(1.1, 2.1, 3.1)); -assertEquals(-5.41, f(1.1, 2.1, 3.1)); -%OptimizeFunctionOnNextCall(f); -assertEquals(-5.41, f(1.1, 2.1, 3.1)); - -assertEquals(8.36, g(2.2, 3.3, -1.1)); -assertEquals(8.36, g(2.2, 3.3, -1.1)); -%OptimizeFunctionOnNextCall(g); -assertEquals(8.36, g(2.2, 3.3, -1.1)); - -assertEquals(-1.5, h(1.5, 3.0, 12, 0.5)); -assertEquals(-1.5, h(1.5, 3.0, 12, 0.5)); -%OptimizeFunctionOnNextCall(h); -assertEquals(-1.5, h(1.5, 3.0, 12, 0.5)); diff --git a/implementation-contributed/v8/mjsunit/compiler/named-load.js b/implementation-contributed/v8/mjsunit/compiler/named-load.js deleted file mode 100644 index 3527b83b0a3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/named-load.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Foo(a, b) { - this.a = a; - this.b = b; - var bname = "b"; - this.x = this["a"] + this[bname]; -} - -var f1 = new Foo(3, 4); -assertEquals(7, f1.x); - -// SMIs -for (var i = 0; i < 6; i++) { - var f = new Foo(i, i + 2); - assertEquals(i + i + 2, f.x); -} - -// derbles -for (var i = 0.25; i < 6.25; i++) { - var f = new Foo(i, i + 2); - assertEquals(i + i + 2, f.x); -} - -// stirngs -for (var i = 0; i < 6; i++) { - var f = new Foo(i + "", (i + 2) + ""); - assertEquals((i + "") + ((i + 2) + ""), f.x); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/named-store.js b/implementation-contributed/v8/mjsunit/compiler/named-store.js deleted file mode 100644 index 8d1306a8c72..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/named-store.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Foo(a, b) { - var bname = "b"; - this["a"] = a; - this[bname] = b; - this.x = this.a + this.b; -} - -var f1 = new Foo(3, 4); -assertEquals(7, f1.x); - -// SMIs -for (var i = 0; i < 6; i++) { - var f = new Foo(i, i + 2); - assertEquals(i + i + 2, f.x); -} - -// derbles -for (var i = 0.25; i < 6.25; i++) { - var f = new Foo(i, i + 2); - assertEquals(i + i + 2, f.x); -} - -// stirngs -for (var i = 0; i < 6; i++) { - var f = new Foo(i + "", (i + 2) + ""); - assertEquals((i + "") + ((i + 2) + ""), f.x); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/nary-binary-ops.js b/implementation-contributed/v8/mjsunit/compiler/nary-binary-ops.js deleted file mode 100644 index b200b669aa1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/nary-binary-ops.js +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that n-ary chains of binary ops give an equal result to individual -// binary op calls. Also test binop chains inside an if condition return -// the same branch. - -// Generate a function of the form -// -// function(init,a0,...,aN) { -// return init + a0 + ... + aN; -// } -// -// where + can be any binary operation. -function generate_chained_op(op, num_ops) { - let str = "(function(init"; - for (let i = 0; i < num_ops; i++) { - str += ",a"+i; - } - str += "){return (init"; - for (let i = 0; i < num_ops; i++) { - str += op+"a"+i; - } - str += ");})"; - return eval(str); -} - -// Generate a function of the form -// -// function(init,a0,...,aN) { -// var tmp = init; -// tmp = tmp + a0; -// ... -// tmp = tmp + aN; -// return tmp; -// } -// -// where + can be any binary operation. -function generate_nonchained_op(op, num_ops) { - let str = "(function(init"; - for (let i = 0; i < num_ops; i++) { - str += ",a"+i; - } - str += "){ var tmp=init; "; - for (let i = 0; i < num_ops; i++) { - str += "tmp=(tmp"+op+"a"+i+");"; - } - str += "return tmp;})"; - return eval(str); -} - -// Generate a function of the form -// -// function(init,a0,...,aN) { -// if(init + a0 + ... + aN) return 1; -// else return 0; -// } -// -// where + can be any binary operation. -function generate_chained_op_test(op, num_ops) { - let str = "(function(init"; - for (let i = 0; i < num_ops; i++) { - str += ",a"+i; - } - str += "){ if(init"; - for (let i = 0; i < num_ops; i++) { - str += op+"a"+i; - } - str += ")return 1;else return 0;})"; - return eval(str); -} - -// Generate a function of the form -// -// function(init,a0,...,aN) { -// var tmp = init; -// tmp = tmp + a0; -// ... -// tmp = tmp + aN; -// if(tmp) return 1 -// else return 0; -// } -// -// where + can be any binary operation. -function generate_nonchained_op_test(op, num_ops) { - let str = "(function(init"; - for (let i = 0; i < num_ops; i++) { - str += ",a"+i; - } - str += "){ var tmp=init; "; - for (let i = 0; i < num_ops; i++) { - str += "tmp=(tmp"+op+"a"+i+");"; - } - str += "if(tmp)return 1;else return 0;})"; - return eval(str); -} - -const BINOPS = [ - ",", - "||", - "&&", - "|", - "^", - "&", - "<<", - ">>", - ">>>", - "+", - "-", - "*", - "/", - "%", -]; - -// Test each binop to see if the chained version is equivalent to the non- -// chained one. -for (let op of BINOPS) { - let chained = generate_chained_op(op, 4); - let nonchained = generate_nonchained_op(op, 4); - let chained_test = generate_chained_op_test(op, 4); - let nonchained_test = generate_nonchained_op_test(op, 4); - - // With numbers. - assertEquals( - nonchained(1,2,3,4,5), - chained(1,2,3,4,5), - "numeric " + op); - - // With numbers and strings. - assertEquals( - nonchained(1,"2",3,"4",5), - chained(1,"2",3,"4",5), - "numeric and string " + op); - - // Iterate over all possible combinations of 5 numbers that evaluate - // to boolean true or false (for testing logical ops). - for (var i = 0; i < 32; i++) { - var booleanArray = [i & 1, i & 2, i & 4, i & 8, i & 16]; - assertEquals( - nonchained.apply(this, booleanArray), - chained.apply(this, booleanArray), - booleanArray.join(" " + op + " ")); - - assertEquals( - nonchained_test.apply(this, booleanArray), - chained_test.apply(this, booleanArray), - "if (" + booleanArray.join(" " + op + " ") + ")"); - } -} diff --git a/implementation-contributed/v8/mjsunit/compiler/native-context-specialization-hole-check.js b/implementation-contributed/v8/mjsunit/compiler/native-context-specialization-hole-check.js deleted file mode 100644 index 7f4db56483e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/native-context-specialization-hole-check.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -if (isNeverOptimizeLiteMode()) { - print("Warning: skipping test that requires optimization in Lite mode."); - quit(0); -} - -function f() { - Array.prototype[10] = 2; - var arr = new Array(); - arr[500] = 20; - arr[10] = arr[50]; -} - -function g() { - f(); -} -g(); -g(); -%OptimizeFunctionOnNextCall(g); -g(); -assertTrue(%GetDeoptCount(g) > 0); diff --git a/implementation-contributed/v8/mjsunit/compiler/native-context-specialization-string-concat.js b/implementation-contributed/v8/mjsunit/compiler/native-context-specialization-string-concat.js deleted file mode 100644 index 24fe4b17539..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/native-context-specialization-string-concat.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var foo = 'foo'; -var bar = 'bar'; - -var a; -var b; -var c; -var d; - -function baz() { return 'baz'; } - -function test(arg) { - // All add operations are constant folded by native context - // specialization / inlining. - a = '"' + foo + '-' + bar + '"'; - b = '"' + foo + '-' + baz() + '"'; - - // Reduce down to a JSAdd of folded constant + arg. - c = foo + bar + arg; - - // Reduces to two JSAdds with other arguments constant folded. - d = '"' + foo + arg + bar + '"'; -} - -test('boo'); -%OptimizeFunctionOnNextCall(test); -test('baa'); - -assertEquals('"foo-bar"', a); -assertEquals('"foo-baz"', b); -assertEquals('foobarbaa', c); -assertEquals('"foobaabar"', d); diff --git a/implementation-contributed/v8/mjsunit/compiler/new-cons-string.js b/implementation-contributed/v8/mjsunit/compiler/new-cons-string.js deleted file mode 100644 index 7f6da7262aa..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/new-cons-string.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-externalize-string - -(function() { - function foo(s) { - return "abcdefghijklm" + s; - } - - assertTrue(isOneByteString(foo("0"))); - assertTrue(isOneByteString(foo("0"))); - %OptimizeFunctionOnNextCall(foo); - assertTrue(isOneByteString(foo("0"))); -})(); - -(function() { - function foo(s) { - return s + "abcdefghijklm"; - } - - assertTrue(isOneByteString(foo("0"))); - assertTrue(isOneByteString(foo("0"))); - %OptimizeFunctionOnNextCall(foo); - assertTrue(isOneByteString(foo("0"))); -})(); - -(function() { - function foo(s) { - return "abcdefghijklm" + s; - } - - assertFalse(isOneByteString(foo("\u1234"))); - assertFalse(isOneByteString(foo("\u1234"))); - %OptimizeFunctionOnNextCall(foo); - assertFalse(isOneByteString(foo("\u1234"))); -})(); - -(function() { - function foo(s) { - return s + "abcdefghijklm"; - } - - assertFalse(isOneByteString(foo("\u1234"))); - assertFalse(isOneByteString(foo("\u1234"))); - %OptimizeFunctionOnNextCall(foo); - assertFalse(isOneByteString(foo("\u1234"))); -})(); - -(function() { - function foo(s) { - return "abcdefghijkl\u1234" + s; - } - - assertFalse(isOneByteString(foo("0"))); - assertFalse(isOneByteString(foo("0"))); - %OptimizeFunctionOnNextCall(foo); - assertFalse(isOneByteString(foo("0"))); -})(); - -(function() { - function foo(s) { - return s + "abcdefghijkl\u1234"; - } - - assertFalse(isOneByteString(foo("0"))); - assertFalse(isOneByteString(foo("0"))); - %OptimizeFunctionOnNextCall(foo); - assertFalse(isOneByteString(foo("0"))); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/null-compare.js b/implementation-contributed/v8/mjsunit/compiler/null-compare.js deleted file mode 100644 index e01b555ad89..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/null-compare.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function IsNull(x) { - if (x == null) return true; else return false; -} - -assertTrue(IsNull(null), "null == null"); -assertTrue(IsNull(void 0), "void 0 == null"); -assertFalse(IsNull(42), "42 != null"); - - -function IsNullStrict(x) { - if (x === null) return true; else return false; -} - -assertTrue(IsNullStrict(null), "null === null"); -assertFalse(IsNullStrict(void 0), "void 0 != null"); -assertFalse(IsNullStrict(87), "87 !== null"); - - -function GimmeFalse(x) { - if ((x & 1) == null) return true; - if ((x | 3) === null) return true; - return false; -} - -assertFalse(GimmeFalse(1), "GimmeFalse(1)"); -assertFalse(GimmeFalse(null), "GimmeFalse(null)"); -assertFalse(GimmeFalse({}), "GimmeFalse({})"); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-abs.js b/implementation-contributed/v8/mjsunit/compiler/number-abs.js deleted file mode 100644 index 9eb8ab5bb50..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-abs.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that NumberAbs correctly deals with PositiveInteger \/ MinusZero -// and turns the -0 into a 0. -(function() { - function foo(x) { - x = Math.floor(x); - x = Math.max(x, -0); - return 1 / Math.abs(x); - } - - assertEquals(Infinity, foo(-0)); - assertEquals(Infinity, foo(-0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(Infinity, foo(-0)); -})(); - -// Test that NumberAbs properly passes the kIdentifyZeros truncation -// for Signed32 \/ MinusZero inputs. -(function() { - function foo(x) { - return Math.abs(x * -2); - } - - assertEquals(2, foo(-1)); - assertEquals(4, foo(-2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(-1)); - assertEquals(4, foo(-2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); - -// Test that NumberAbs properly passes the kIdentifyZeros truncation -// for Unsigned32 \/ MinusZero inputs. -(function() { - function foo(x) { - x = x | 0; - return Math.abs(Math.max(x * -2, 0)); - } - - assertEquals(2, foo(-1)); - assertEquals(4, foo(-2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(-1)); - assertEquals(4, foo(-2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); - -// Test that NumberAbs properly passes the kIdentifyZeros truncation -// for OrderedNumber inputs. -(function() { - function foo(x) { - x = x | 0; - return Math.abs(Math.min(x * -2, 2 ** 32)); - } - - assertEquals(2, foo(-1)); - assertEquals(4, foo(-2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(-1)); - assertEquals(4, foo(-2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-add.js b/implementation-contributed/v8/mjsunit/compiler/number-add.js deleted file mode 100644 index 61e6495c527..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-add.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// This tests that NumberAdd passes on the right truncations -// even if it figures out during SimplifiedLowering that it -// can indeed do a Word32 operation (based on the feedback -// baked in for its inputs by other operators). -(function() { - // We need a + with Number feedback to get to a NumberAdd - // during the typed lowering pass of TurboFan's frontend. - function foo(x, y) { return x + y; } - foo(0.1, 0.2); - foo(0.1, 0.2); - - // Now we need to fool TurboFan to think that it has to - // perform the `foo(x,-1)` on Float64 values until the - // very last moment (after the RETYPE phase of the - // SimplifiedLowering) where it realizes that the inputs - // and outputs of the NumberAdd allow it perform the - // operation on Word32. - function bar(x) { - x = Math.trunc(foo(x - 1, 1)); - return foo(x, -1); - } - - assertEquals(0, bar(1)); - assertEquals(1, bar(2)); - %OptimizeFunctionOnNextCall(bar); - assertEquals(2, bar(3)); -})(); - -// This tests that SpeculativeNumberAdd can still lower to -// Int32Add in SimplifiedLowering, which requires some magic -// to make sure that SpeculativeNumberAdd survives to that -// point, especially the JSTypedLowering needs to be unable -// to tell that the inputs to SpeculativeNumberAdd are non -// String primitives. -(function() { - // We need a function that has a + with feedback Number or - // NumberOrOddball, but for whose inputs the JSTypedLowering - // cannot reduce it to NumberAdd (with SpeculativeToNumber - // conversions). We achieve this utilizing an object literal - // indirection here. - function baz(x) { - return {x}.x + x; - } - baz(null); - baz(undefined); - - // Now we just need to truncate the result. - function foo(x) { - return baz(1) | 0; - } - - assertEquals(2, foo()); - assertEquals(2, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-ceil.js b/implementation-contributed/v8/mjsunit/compiler/number-ceil.js deleted file mode 100644 index ce87cd0fc05..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-ceil.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that NumberCeil propagates kIdentifyZeros truncations. -(function() { - function foo(x) { - return Math.abs(Math.ceil(x * -2)); - } - - assertEquals(2, foo(1)); - assertEquals(4, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(1)); - assertEquals(4, foo(2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-comparison-truncations.js b/implementation-contributed/v8/mjsunit/compiler/number-comparison-truncations.js deleted file mode 100644 index 33abf6b913c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-comparison-truncations.js +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that SpeculativeNumberEqual[SignedSmall] properly passes the -// kIdentifyZeros truncation. -(function() { - function foo(x, y) { - if (x * y === 0) return 0; - return 1; - } - - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - assertOptimized(foo); - // Even if x*y produces -0 now, it should stay optimized. - assertEquals(0, foo(-3, 0)); - assertEquals(0, foo(0, -3)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberEqual[Number] properly passes the -// kIdentifyZeros truncation. -(function() { - // Produce a SpeculativeNumberEqual with Number feedback. - function bar(x, y) { return x === y; } - bar(0.1, 0.5); - bar(-0, 100); - - function foo(x, y) { - if (bar(x * y, 0)) return 0; - return 1; - } - - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - assertOptimized(foo); - // Even if x*y produces -0 now, it should stay optimized. - assertEquals(0, foo(-3, 0)); - assertEquals(0, foo(0, -3)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberLessThan[SignedSmall] properly passes the -// kIdentifyZeros truncation. -(function() { - function foo(x, y) { - if (x * y < 0) return 0; - return 1; - } - - assertEquals(0, foo(1, -1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(1, -1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - assertOptimized(foo); - // Even if x*y produces -0 now, it should stay optimized. - assertEquals(1, foo(-3, 0)); - assertEquals(1, foo(0, -3)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberLessThan[Number] properly passes the -// kIdentifyZeros truncation. -(function() { - // Produce a SpeculativeNumberLessThan with Number feedback. - function bar(x, y) { return x < y; } - bar(0.1, 0.5); - bar(-0, 100); - - function foo(x, y) { - if (bar(x * y, 0)) return 0; - return 1; - } - - assertEquals(0, foo(1, -1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(1, -1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - assertOptimized(foo); - // Even if x*y produces -0 now, it should stay optimized. - assertEquals(1, foo(-3, 0)); - assertEquals(1, foo(0, -3)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberLessThanOrEqual[SignedSmall] properly passes the -// kIdentifyZeros truncation. -(function() { - function foo(x, y) { - if (x * y <= 0) return 0; - return 1; - } - - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - assertOptimized(foo); - // Even if x*y produces -0 now, it should stay optimized. - assertEquals(0, foo(-3, 0)); - assertEquals(0, foo(0, -3)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberLessThanOrEqual[Number] properly passes the -// kIdentifyZeros truncation. -(function() { - // Produce a SpeculativeNumberLessThanOrEqual with Number feedback. - function bar(x, y) { return x <= y; } - bar(0.1, 0.5); - bar(-0, 100); - - function foo(x, y) { - if (bar(x * y, 0)) return 0; - return 1; - } - - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(0, 1)); - assertEquals(1, foo(1, 1)); - assertEquals(1, foo(1, 2)); - assertOptimized(foo); - // Even if x*y produces -0 now, it should stay optimized. - assertEquals(0, foo(-3, 0)); - assertEquals(0, foo(0, -3)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-constructor-deopt.js b/implementation-contributed/v8/mjsunit/compiler/number-constructor-deopt.js deleted file mode 100644 index edffc9ec531..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-constructor-deopt.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// This test writes {} to x to trigger lazy deopt -// from inside the number constructor. -var x = "5"; -var b = false; - -check = function() { - if (b) x = {}; - return 0; -} - -var obj = {}; -obj.valueOf = check; - -function f() { - try { - return x + Number(obj); - } catch(e) { - console.log(e.stack); - } -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -b = true; -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-divide.js b/implementation-contributed/v8/mjsunit/compiler/number-divide.js deleted file mode 100644 index c4cc8fa8819..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-divide.js +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --noalways-opt - -// Test that NumberDivide with Number feedback works if only in the -// end SimplifiedLowering figures out that the inputs to this operation -// are actually Unsigned32. -(function() { - // We need a separately polluted % with NumberOrOddball feedback. - function bar(x) { return x / 2; } - bar(undefined); // The % feedback is now NumberOrOddball. - - // Now just use the gadget above in a way that only after RETYPE - // in SimplifiedLowering we find out that the `x` is actually in - // Unsigned32 range (based on taking the SignedSmall feedback on - // the + operator). - function foo(x) { - x = (x >>> 0) + 1; - return bar(x) | 0; - } - - assertEquals(1, foo(1)); - assertEquals(1, foo(2)); - assertEquals(2, foo(3)); - assertEquals(2, foo(4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1)); - assertEquals(1, foo(2)); - assertEquals(2, foo(3)); - assertEquals(2, foo(4)); - assertOptimized(foo); -})(); - -// Test that NumberDivide with Number feedback works if only in the -// end SimplifiedLowering figures out that the inputs to this operation -// are actually Signed32. -(function() { - // We need a separately polluted % with NumberOrOddball feedback. - function bar(x) { return x / 2; } - bar(undefined); // The % feedback is now NumberOrOddball. - - // Now just use the gadget above in a way that only after RETYPE - // in SimplifiedLowering we find out that the `x` is actually in - // Signed32 range (based on taking the SignedSmall feedback on - // the + operator). - function foo(x) { - x = (x | 0) + 1; - return bar(x) | 0; - } - - assertEquals(1, foo(1)); - assertEquals(1, foo(2)); - assertEquals(2, foo(3)); - assertEquals(2, foo(4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1)); - assertEquals(1, foo(2)); - assertEquals(2, foo(3)); - assertEquals(2, foo(4)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberDivide turns into CheckedInt32Div, and -// that the "known power of two divisor" optimization works correctly. -(function() { - function foo(x) { return (x | 0) / 2; } - - // Warmup with proper int32 divisions. - assertEquals(1, foo(2)); - assertEquals(2, foo(4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo(6)); - assertOptimized(foo); - - // Make optimized code fail. - assertEquals(0.5, foo(1)); - assertUnoptimized(foo); - - // Try again with the new feedback, and now it should stay optimized. - %OptimizeFunctionOnNextCall(foo); - assertEquals(4, foo(8)); - assertOptimized(foo); - assertEquals(0.5, foo(1)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberDivide turns into CheckedInt32Div, and -// that the optimized code properly bails out on "division by zero". -(function() { - function foo(x, y) { return x / y; } - - // Warmup with proper int32 divisions. - assertEquals(2, foo(4, 2)); - assertEquals(2, foo(8, 4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(2, 2)); - assertOptimized(foo); - - // Make optimized code fail. - assertEquals(Infinity, foo(1, 0)); - assertUnoptimized(foo); - - // Try again with the new feedback, and now it should stay optimized. - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(2, 1)); - assertOptimized(foo); - assertEquals(Infinity, foo(1, 0)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberDivide turns into CheckedInt32Div, and -// that the optimized code properly bails out on minus zero. -(function() { - function foo(x, y) { return x / y; } - - // Warmup with proper int32 divisions. - assertEquals(2, foo(4, 2)); - assertEquals(2, foo(8, 4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(2, 2)); - assertOptimized(foo); - - // Make optimized code fail. - assertEquals(-0, foo(0, -1)); - assertUnoptimized(foo); - - // Try again with the new feedback, and now it should stay optimized. - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(2, 1)); - assertOptimized(foo); - assertEquals(-0, foo(0, -1)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberDivide turns into CheckedInt32Div, and -// that the optimized code properly bails out if result is -kMinInt. -(function() { - function foo(x, y) { return x / y; } - - // Warmup with proper int32 divisions. - assertEquals(2, foo(4, 2)); - assertEquals(2, foo(8, 4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(2, 2)); - assertOptimized(foo); - - // Make optimized code fail. - assertEquals(2147483648, foo(-2147483648, -1)); - assertUnoptimized(foo); - - // Try again with the new feedback, and now it should stay optimized. - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(2, 1)); - assertOptimized(foo); - assertEquals(2147483648, foo(-2147483648, -1)); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberDivide turns into CheckedUint32Div, and -// that the "known power of two divisor" optimization works correctly. -(function() { - function foo(s) { return s.length / 2; } - - // Warmup with proper uint32 divisions. - assertEquals(1, foo("ab".repeat(1))); - assertEquals(2, foo("ab".repeat(2))); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo("ab".repeat(3))); - assertOptimized(foo); - - // Make optimized code fail. - assertEquals(0.5, foo("a")); - assertUnoptimized(foo); - - // Try again with the new feedback, and now it should stay optimized. - %OptimizeFunctionOnNextCall(foo); - assertEquals(4, foo("ab".repeat(4))); - assertOptimized(foo); - assertEquals(0.5, foo("a")); - assertOptimized(foo); -})(); - -// Test that SpeculativeNumberDivide turns into CheckedUint32Div, and -// that the optimized code properly bails out on "division by zero". -(function() { - function foo(x, y) { return (x >>> 0) / (y >>> 0); } - - // Warmup with proper uint32 divisions. - assertEquals(2, foo(4, 2)); - assertEquals(2, foo(8, 4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(2, 2)); - assertOptimized(foo); - - // Make optimized code fail. - assertEquals(Infinity, foo(1, 0)); - assertUnoptimized(foo); - - // Try again with the new feedback, and now it should stay optimized. - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(2, 1)); - assertOptimized(foo); - assertEquals(Infinity, foo(1, 0)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-floor.js b/implementation-contributed/v8/mjsunit/compiler/number-floor.js deleted file mode 100644 index 180b89e5590..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-floor.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that NumberFloor propagates kIdentifyZeros truncations. -(function() { - function foo(x) { - return Math.abs(Math.floor(x * -2)); - } - - assertEquals(2, foo(1)); - assertEquals(4, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(1)); - assertEquals(4, foo(2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-isfinite-inl.js b/implementation-contributed/v8/mjsunit/compiler/number-isfinite-inl.js deleted file mode 100644 index 2948fe09530..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-isfinite-inl.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(f) { - assertTrue(Number.isFinite(0)); - assertTrue(Number.isFinite(Number.MIN_VALUE)); - assertTrue(Number.isFinite(Number.MAX_VALUE)); - assertTrue(Number.isFinite(Number.MIN_SAFE_INTEGER)); - assertTrue(Number.isFinite(Number.MIN_SAFE_INTEGER - 13)); - assertTrue(Number.isFinite(Number.MAX_SAFE_INTEGER)); - assertTrue(Number.isFinite(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(Number.isFinite(0)); - assertTrue(Number.isFinite(-1)); - assertTrue(Number.isFinite(123456)); - assertFalse(Number.isFinite(Number.NaN)); - assertFalse(Number.isFinite(Number.POSITIVE_INFINITY)); - assertFalse(Number.isFinite(Number.NEGATIVE_INFINITY)); - assertFalse(Number.isFinite(1 / 0)); - assertFalse(Number.isFinite(-1 / 0)); -} - -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); - - -function test2(f) { - assertFalse(Number.isFinite({})); - assertFalse(Number.isFinite("abc")); - assertTrue(Number.isFinite(0)); - assertTrue(Number.isFinite(Number.MIN_VALUE)); - assertTrue(Number.isFinite(Number.MAX_VALUE)); - assertTrue(Number.isFinite(Number.MIN_SAFE_INTEGER)); - assertTrue(Number.isFinite(Number.MIN_SAFE_INTEGER - 13)); - assertTrue(Number.isFinite(Number.MAX_SAFE_INTEGER)); - assertTrue(Number.isFinite(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(Number.isFinite(0)); - assertTrue(Number.isFinite(-1)); - assertTrue(Number.isFinite(123456)); - assertFalse(Number.isFinite(Number.NaN)); - assertFalse(Number.isFinite(Number.POSITIVE_INFINITY)); - assertFalse(Number.isFinite(Number.NEGATIVE_INFINITY)); - assertFalse(Number.isFinite(1 / 0)); - assertFalse(Number.isFinite(-1 / 0)); -} - -test2(); -test2(); -%OptimizeFunctionOnNextCall(test2); -test2(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-isfinite.js b/implementation-contributed/v8/mjsunit/compiler/number-isfinite.js deleted file mode 100644 index 03493ce69ea..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-isfinite.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(f) { - assertTrue(f(0)); - assertTrue(f(Number.MIN_VALUE)); - assertTrue(f(Number.MAX_VALUE)); - assertTrue(f(Number.MIN_SAFE_INTEGER)); - assertTrue(f(Number.MIN_SAFE_INTEGER - 13)); - assertTrue(f(Number.MAX_SAFE_INTEGER)); - assertTrue(f(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(f(0)); - assertTrue(f(-1)); - assertTrue(f(123456)); - assertFalse(f(Number.NaN)); - assertFalse(f(Number.POSITIVE_INFINITY)); - assertFalse(f(Number.NEGATIVE_INFINITY)); - assertFalse(f(1 / 0)); - assertFalse(f(-1 / 0)); -} - -function f(x) { - return Number.isFinite(+x); -} - -test(f); -test(f); -%OptimizeFunctionOnNextCall(f); -test(f); - - -function test2(f) { - assertFalse(f({})); - assertFalse(f("abc")); - assertTrue(f(0)); - assertTrue(f(Number.MIN_VALUE)); - assertTrue(f(Number.MAX_VALUE)); - assertTrue(f(Number.MIN_SAFE_INTEGER)); - assertTrue(f(Number.MIN_SAFE_INTEGER - 13)); - assertTrue(f(Number.MAX_SAFE_INTEGER)); - assertTrue(f(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(f(0)); - assertTrue(f(-1)); - assertTrue(f(123456)); - assertFalse(f(Number.NaN)); - assertFalse(f(Number.POSITIVE_INFINITY)); - assertFalse(f(Number.NEGATIVE_INFINITY)); - assertFalse(f(1 / 0)); - assertFalse(f(-1 / 0)); -} - -function f2(x) { - return Number.isFinite(x); -} - -test2(f2); -test2(f2); -%OptimizeFunctionOnNextCall(f2); -test2(f2); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-isinteger-inl.js b/implementation-contributed/v8/mjsunit/compiler/number-isinteger-inl.js deleted file mode 100644 index 8379fb81473..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-isinteger-inl.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test() { - assertTrue(Number.isInteger(0)); - assertFalse(Number.isInteger(Number.MIN_VALUE)); - assertTrue(Number.isInteger(Number.MAX_VALUE)); - assertTrue(Number.isInteger(Number.MIN_SAFE_INTEGER)); - assertTrue(Number.isInteger(Number.MIN_SAFE_INTEGER - 13)); - assertTrue(Number.isInteger(Number.MAX_SAFE_INTEGER)); - assertTrue(Number.isInteger(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(Number.isInteger(0)); - assertTrue(Number.isInteger(-1)); - assertTrue(Number.isInteger(123456)); - assertFalse(Number.isInteger(Number.NaN)); - assertFalse(Number.isInteger(Number.POSITIVE_INFINITY)); - assertFalse(Number.isInteger(Number.NEGATIVE_INFINITY)); - assertFalse(Number.isInteger(1 / 0)); - assertFalse(Number.isInteger(-1 / 0)); - assertFalse(Number.isInteger(Number.EPSILON)); -} - -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); - - -function test2() { - assertTrue(Number.isInteger(0)); - assertFalse(Number.isInteger(Number.MIN_VALUE)); - assertTrue(Number.isInteger(Number.MAX_VALUE)); - assertTrue(Number.isInteger(Number.MIN_SAFE_INTEGER)); - assertTrue(Number.isInteger(Number.MIN_SAFE_INTEGER - 13)); - assertTrue(Number.isInteger(Number.MAX_SAFE_INTEGER)); - assertTrue(Number.isInteger(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(Number.isInteger(0)); - assertTrue(Number.isInteger(-1)); - assertTrue(Number.isInteger(123456)); - assertFalse(Number.isInteger(Number.NaN)); - assertFalse(Number.isInteger(Number.POSITIVE_INFINITY)); - assertFalse(Number.isInteger(Number.NEGATIVE_INFINITY)); - assertFalse(Number.isInteger(1 / 0)); - assertFalse(Number.isInteger(-1 / 0)); - assertFalse(Number.isInteger(Number.EPSILON)); -} - -test2(); -test2(); -%OptimizeFunctionOnNextCall(test2); -test2(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-isinteger.js b/implementation-contributed/v8/mjsunit/compiler/number-isinteger.js deleted file mode 100644 index aae172ea066..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-isinteger.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(f) { - assertTrue(f(0)); - assertFalse(f(Number.MIN_VALUE)); - assertTrue(f(Number.MAX_VALUE)); - assertTrue(f(Number.MIN_SAFE_INTEGER)); - assertTrue(f(Number.MIN_SAFE_INTEGER - 13)); - assertTrue(f(Number.MAX_SAFE_INTEGER)); - assertTrue(f(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(f(0)); - assertTrue(f(-1)); - assertTrue(f(123456)); - assertFalse(f(Number.NaN)); - assertFalse(f(Number.POSITIVE_INFINITY)); - assertFalse(f(Number.NEGATIVE_INFINITY)); - assertFalse(f(1 / 0)); - assertFalse(f(-1 / 0)); - assertFalse(f(Number.EPSILON)); -} - -function f(x) { - return Number.isInteger(+x); -} - -test(f); -test(f); -%OptimizeFunctionOnNextCall(f); -test(f); - - -function test2(f) { - assertTrue(f(0)); - assertFalse(f(Number.MIN_VALUE)); - assertTrue(f(Number.MAX_VALUE)); - assertTrue(f(Number.MIN_SAFE_INTEGER)); - assertTrue(f(Number.MIN_SAFE_INTEGER - 13)); - assertTrue(f(Number.MAX_SAFE_INTEGER)); - assertTrue(f(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(f(0)); - assertTrue(f(-1)); - assertTrue(f(123456)); - assertFalse(f(Number.NaN)); - assertFalse(f(Number.POSITIVE_INFINITY)); - assertFalse(f(Number.NEGATIVE_INFINITY)); - assertFalse(f(1 / 0)); - assertFalse(f(-1 / 0)); - assertFalse(f(Number.EPSILON)); -} - -function f2(x) { - return Number.isInteger(x); -} - -test2(f2); -test2(f2); -%OptimizeFunctionOnNextCall(f2); -test2(f2); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-isnan.js b/implementation-contributed/v8/mjsunit/compiler/number-isnan.js deleted file mode 100644 index fb6bb6d741c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-isnan.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(f) { - assertFalse(f(0)); - assertFalse(f(Number.MIN_VALUE)); - assertFalse(f(Number.MAX_VALUE)); - assertFalse(f(Number.MIN_SAFE_INTEGER - 13)); - assertFalse(f(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(f(Number.NaN)); - assertFalse(f(Number.POSITIVE_INFINITY)); - assertFalse(f(Number.NEGATIVE_INFINITY)); - assertFalse(f(Number.EPSILON)); - assertFalse(f(1 / 0)); - assertFalse(f(-1 / 0)); -} - -function f(x) { - return Number.isNaN(+x); -} - -test(f); -test(f); -%OptimizeFunctionOnNextCall(f); -test(f); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-issafeinteger.js b/implementation-contributed/v8/mjsunit/compiler/number-issafeinteger.js deleted file mode 100644 index b705e95ed53..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-issafeinteger.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(f) { - assertTrue(f(0)); - assertTrue(f(Number.MIN_SAFE_INTEGER)); - assertFalse(f(Number.MIN_SAFE_INTEGER - 13)); - assertTrue(f(Number.MIN_SAFE_INTEGER + 13)); - assertTrue(f(Number.MAX_SAFE_INTEGER)); - assertFalse(f(Number.MAX_SAFE_INTEGER + 23)); - assertTrue(f(Number.MAX_SAFE_INTEGER - 23)); - assertFalse(f(Number.MIN_VALUE)); - assertFalse(f(Number.MAX_VALUE)); - assertFalse(f(Number.NaN)); - assertFalse(f(Number.POSITIVE_INFINITY)); - assertFalse(f(Number.NEGATIVE_INFINITY)); - assertFalse(f(1 / 0)); - assertFalse(f(-1 / 0)); - assertFalse(f(Number.EPSILON)); - - var near_upper = Math.pow(2, 52); - assertTrue(f(near_upper)); - assertFalse(f(2 * near_upper)); - assertTrue(f(2 * near_upper - 1)); - assertTrue(f(2 * near_upper - 2)); - assertFalse(f(2 * near_upper + 1)); - assertFalse(f(2 * near_upper + 2)); - assertFalse(f(2 * near_upper + 7)); - - var near_lower = -near_upper; - assertTrue(f(near_lower)); - assertFalse(f(2 * near_lower)); - assertTrue(f(2 * near_lower + 1)); - assertTrue(f(2 * near_lower + 2)); - assertFalse(f(2 * near_lower - 1)); - assertFalse(f(2 * near_lower - 2)); - assertFalse(f(2 * near_lower - 7)); -} - -// Check that the NumberIsSafeInteger simplified operator in -// TurboFan does the right thing. -function NumberIsSafeInteger(x) { return Number.isSafeInteger(+x); } -test(NumberIsSafeInteger); -test(NumberIsSafeInteger); -%OptimizeFunctionOnNextCall(NumberIsSafeInteger); -test(NumberIsSafeInteger); - -// Check that the ObjectIsSafeInteger simplified operator in -// TurboFan does the right thing as well (i.e. when TurboFan -// is not able to tell statically that the inputs are numbers). -function ObjectIsSafeInteger(x) { return Number.isSafeInteger(x); } -test(ObjectIsSafeInteger); -test(ObjectIsSafeInteger); -%OptimizeFunctionOnNextCall(ObjectIsSafeInteger); -test(ObjectIsSafeInteger); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-max.js b/implementation-contributed/v8/mjsunit/compiler/number-max.js deleted file mode 100644 index 0e9b84fb390..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-max.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that NumberMax properly passes the kIdentifyZeros truncation. -(function() { - function foo(x) { - if (Math.max(x * -2, 1) == 1) return 0; - return 1; - } - - assertEquals(0, foo(2)); - assertEquals(1, foo(-1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(2)); - assertEquals(1, foo(-1)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); - -// Test that NumberMax properly handles 64-bit comparisons. -(function() { - function foo(x) { - x = x|0; - return Math.max(x - 1, x + 1); - } - - assertEquals(-Math.pow(2, 31) + 1, foo(-Math.pow(2, 31))); - assertEquals(Math.pow(2, 31), foo(Math.pow(2, 31) - 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-Math.pow(2, 31) + 1, foo(-Math.pow(2, 31))); - assertEquals(Math.pow(2, 31), foo(Math.pow(2, 31) - 1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-min.js b/implementation-contributed/v8/mjsunit/compiler/number-min.js deleted file mode 100644 index 6c7c62d7737..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-min.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that NumberMin properly passes the kIdentifyZeros truncation. -(function() { - function foo(x) { - if (Math.min(x * -2, -1) == -2) return 0; - return 1; - } - - assertEquals(0, foo(1)); - assertEquals(1, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(1)); - assertEquals(1, foo(2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(1, foo(0)); - assertOptimized(foo); -})(); - -// Test that NumberMin properly handles 64-bit comparisons. -(function() { - function foo(x) { - x = x|0; - return Math.min(x - 1, x + 1); - } - - assertEquals(-Math.pow(2, 31) - 1, foo(-Math.pow(2, 31))); - assertEquals(Math.pow(2, 31) - 2, foo(Math.pow(2, 31) - 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-Math.pow(2, 31) - 1, foo(-Math.pow(2, 31))); - assertEquals(Math.pow(2, 31) - 2, foo(Math.pow(2, 31) - 1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-modulus.js b/implementation-contributed/v8/mjsunit/compiler/number-modulus.js deleted file mode 100644 index 0925aa0da3e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-modulus.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --noalways-opt - - -// Test that NumberModulus passes kIdentifiesZero to the -// left hand side input when the result doesn't care about -// 0 vs -0, even when the inputs are outside Signed32. -(function() { - function foo(x) { - return (x * -2) % (2 ** 32) === 0; - } - - assertFalse(foo(2)); - assertFalse(foo(1)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(2)); - assertFalse(foo(1)); - - // Now `foo` should stay optimized even if `x * -2` would - // produce -0, aka when we pass a zero value for `x`. - assertTrue(foo(0)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-multiply.js b/implementation-contributed/v8/mjsunit/compiler/number-multiply.js deleted file mode 100644 index 5b644974ec0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-multiply.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test the extreme case where -0 is produced by rounding errors. -(function() { - function bar(x) { - return 1e-308 * x; - } - bar(1); - - function foo() { - return Object.is(-0, bar(-1e-308)); - } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -// Test that multiplication of integer by 0 produces the correct results. -(function() { - function foo(x) { - return 0 * Math.round(x); - } - - assertEquals(0, foo(0.1)); - assertEquals(-0, foo(-0.1)); - assertEquals(NaN, foo(NaN)); - assertEquals(NaN, foo(Infinity)); - assertEquals(NaN, foo(-Infinity)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(0.1)); - assertEquals(-0, foo(-0.1)); - assertEquals(NaN, foo(NaN)); - assertEquals(NaN, foo(Infinity)); - assertEquals(NaN, foo(-Infinity)); -})(); - -// Test that multiplication properly preserves -0 and NaN, and doesn't -// cut it short incorrectly. -(function() { - function foo(x, y) { - x = Math.sign(x); - y = Math.sign(y); - return Math.min(x * y, 0); - } - - assertEquals(0, foo(1, 0)); - assertEquals(-0, foo(1, -0)); - assertEquals(NaN, foo(NaN, -0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo(1, 0)); - assertEquals(-0, foo(1, -0)); - assertEquals(NaN, foo(NaN, -0)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-round.js b/implementation-contributed/v8/mjsunit/compiler/number-round.js deleted file mode 100644 index 9aec7f7a126..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-round.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that NumberRound propagates kIdentifyZeros truncations. -(function() { - function foo(x) { - return Math.abs(Math.round(x * -2)); - } - - assertEquals(2, foo(1)); - assertEquals(4, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(1)); - assertEquals(4, foo(2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-subtract.js b/implementation-contributed/v8/mjsunit/compiler/number-subtract.js deleted file mode 100644 index cb3e1c7e708..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-subtract.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// This tests that SpeculativeNumberSubtract can still lower to -// Int32Sub in SimplifiedLowering, which requires some magic -// to make sure that SpeculativeNumberSubtract survives to that -// point, especially the JSTypedLowering needs to be unable -// to tell that the inputs to SpeculativeNumberAdd are not -// Number, Undefined, Null or Boolean. -(function() { - // We need a function that has a - with feedback Number or - // NumberOrOddball, but for whose inputs the JSTypedLowering - // cannot reduce it to NumberSubtract (with SpeculativeToNumber - // conversions). We achieve this utilizing an object literal - // indirection here. - function baz(x) { - return {x}.x - x; - } - baz(null); - baz(undefined); - - // Now we just need to truncate the result. - function foo(x) { - return baz(42) | 0; - } - - assertEquals(0, foo()); - assertEquals(0, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-toboolean.js b/implementation-contributed/v8/mjsunit/compiler/number-toboolean.js deleted file mode 100644 index 02b30b3ed67..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-toboolean.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that NumberToBoolean properly passes the kIdentifyZeros truncation -// for Signed32 \/ MinusZero inputs. -(function() { - function foo(x) { - if (x * -2) return 1; - return 0; - } - - assertEquals(1, foo(1)); - assertEquals(1, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(1)); - assertEquals(1, foo(2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); - - -// Test that NumberToBoolean properly passes the kIdentifyZeros truncation -// for Unsigned32 \/ MinusZero inputs. -(function() { - function foo(x) { - x = x | 0; - if (Math.max(x * -2, 0)) return 1; - return 0; - } - - assertEquals(1, foo(-1)); - assertEquals(1, foo(-2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(-1)); - assertEquals(1, foo(-2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-trunc.js b/implementation-contributed/v8/mjsunit/compiler/number-trunc.js deleted file mode 100644 index aa7d02c20fc..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/number-trunc.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test that NumberTrunc propagates kIdentifyZeros truncations. -(function() { - function foo(x) { - return Math.abs(Math.trunc(x * -2)); - } - - assertEquals(2, foo(1)); - assertEquals(4, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(2, foo(1)); - assertEquals(4, foo(2)); - assertOptimized(foo); - // Now `foo` should stay optimized even if `x * -2` would produce `-0`. - assertEquals(0, foo(0)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/object-constructor.js b/implementation-contributed/v8/mjsunit/compiler/object-constructor.js deleted file mode 100644 index 162416fd573..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/object-constructor.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Common pattern in Webpack 3 generated bundles, see -// https://github.com/webpack/webpack/issues/5600 for details. -(function ObjectConstructorWithKnownFunction() { - "use strict"; - class A { - bar() { return this; } - }; - function foo(a) { - return Object(a.bar)(); - } - assertEquals(undefined, foo(new A)); - assertEquals(undefined, foo(new A)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(new A)); -})(); - -(function ObjectConstructorWithString() { - "use strict"; - function foo() { - return Object("a"); - } - assertEquals('object', typeof foo()); - assertEquals('object', typeof foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals('object', typeof foo()); -})(); - -// Object constructor subclassing via Class Factories, see -// https://twitter.com/FremyCompany/status/905977048006402048 -// for the hint. -(function ObjectConstructorSubClassing() { - "use strict"; - const Factory = Base => class A extends Base {}; - const A = Factory(Object); - function foo() { - return new A(1, 2, 3); - } - assertInstanceof(foo(), A); - assertInstanceof(foo(), Object); - assertInstanceof(foo(), A); - assertInstanceof(foo(), Object); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertInstanceof(foo(), Object); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/object-create.js b/implementation-contributed/v8/mjsunit/compiler/object-create.js deleted file mode 100644 index bd366fe0b02..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/object-create.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestWithNullPrototype() { - function f() { return Object.create(null); } - f(); - %OptimizeFunctionOnNextCall(f); - assertEquals(undefined, f().foo); -})(); - -(function TestWithCustomPrototype() { - const x = {foo: 42}; // This must be defined here for context specialization. - function f() { return Object.create(x); } - f(); - %OptimizeFunctionOnNextCall(f); - assertEquals(42, f().foo); -})(); - -(function TestWithObjectPrototype() { - function f() { return Object.create(Object.prototype); } - f(); - %OptimizeFunctionOnNextCall(f); - assertEquals("[object Object]", f().toString()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/object-getprototypeof.js b/implementation-contributed/v8/mjsunit/compiler/object-getprototypeof.js deleted file mode 100644 index ac172dbeb25..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/object-getprototypeof.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var prototype = Object.create(null); -var object = Object.create(prototype); - -function foo() { return Object.getPrototypeOf(object); } - -assertSame(prototype, foo()); -assertSame(prototype, foo()); -%OptimizeFunctionOnNextCall(foo); -assertSame(prototype, foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/object-is.js b/implementation-contributed/v8/mjsunit/compiler/object-is.js deleted file mode 100644 index f89b73e9d8d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/object-is.js +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo(o) { return Object.is(o, -0); } - assertTrue(foo(-0)); - assertFalse(foo(0)); - assertFalse(foo(NaN)); - assertFalse(foo('')); - assertFalse(foo([])); - assertFalse(foo({})); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(-0)); - assertFalse(foo(0)); - assertFalse(foo(NaN)); - assertFalse(foo('')); - assertFalse(foo([])); - assertFalse(foo({})); -})(); - -(function() { - function foo(o) { return Object.is(-0, o); } - assertTrue(foo(-0)); - assertFalse(foo(0)); - assertFalse(foo(NaN)); - assertFalse(foo('')); - assertFalse(foo([])); - assertFalse(foo({})); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(-0)); - assertFalse(foo(0)); - assertFalse(foo(NaN)); - assertFalse(foo('')); - assertFalse(foo([])); - assertFalse(foo({})); -})(); - -(function() { - function foo(o) { return Object.is(+o, -0); } - assertTrue(foo(-0)); - assertFalse(foo(0)); - assertFalse(foo(NaN)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(-0)); - assertFalse(foo(0)); - assertFalse(foo(NaN)); -})(); - -(function() { - function foo(o) { return Object.is(-0, +o); } - assertTrue(foo(-0)); - assertFalse(foo(0)); - assertFalse(foo(NaN)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(-0)); - assertFalse(foo(0)); - assertFalse(foo(NaN)); -})(); - -(function() { - function foo(o) { return Object.is(o, NaN); } - assertFalse(foo(-0)); - assertFalse(foo(0)); - assertTrue(foo(NaN)); - assertFalse(foo('')); - assertFalse(foo([])); - assertFalse(foo({})); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(-0)); - assertFalse(foo(0)); - assertTrue(foo(NaN)); - assertFalse(foo('')); - assertFalse(foo([])); - assertFalse(foo({})); -})(); - -(function() { - function foo(o) { return Object.is(NaN, o); } - assertFalse(foo(-0)); - assertFalse(foo(0)); - assertTrue(foo(NaN)); - assertFalse(foo('')); - assertFalse(foo([])); - assertFalse(foo({})); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(-0)); - assertFalse(foo(0)); - assertTrue(foo(NaN)); - assertFalse(foo('')); - assertFalse(foo([])); - assertFalse(foo({})); -})(); - -(function() { - function foo(o) { return Object.is(+o, NaN); } - assertFalse(foo(-0)); - assertFalse(foo(0)); - assertTrue(foo(NaN)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(-0)); - assertFalse(foo(0)); - assertTrue(foo(NaN)); -})(); - -(function() { - function foo(o) { return Object.is(NaN, +o); } - assertFalse(foo(-0)); - assertFalse(foo(0)); - assertTrue(foo(NaN)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(-0)); - assertFalse(foo(0)); - assertTrue(foo(NaN)); -})(); - -(function() { - function foo(o) { return Object.is(`${o}`, "foo"); } - assertFalse(foo("bar")); - assertTrue(foo("foo")); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo("bar")); - assertTrue(foo("foo")); -})(); - -(function() { - function foo(o) { return Object.is(String(o), "foo"); } - assertFalse(foo("bar")); - assertTrue(foo("foo")); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo("bar")); - assertTrue(foo("foo")); -})(); - -(function() { - function foo(o) { return Object.is(o, o); } - assertTrue(foo(-0)); - assertTrue(foo(0)); - assertTrue(foo(NaN)); - assertTrue(foo('')); - assertTrue(foo([])); - assertTrue(foo({})); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(-0)); - assertTrue(foo(0)); - assertTrue(foo(NaN)); - assertTrue(foo('')); - assertTrue(foo([])); - assertTrue(foo({})); -})(); - -(function() { - function foo(o) { return Object.is(o|0, 0); } - assertTrue(foo(0)); - assertTrue(foo(-0)); - assertTrue(foo(NaN)); - assertFalse(foo(1)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(0)); - assertTrue(foo(-0)); - assertTrue(foo(NaN)); - assertFalse(foo(1)); -})(); - -(function() { - const s = Symbol(); - function foo() { return Object.is(s, Symbol()); } - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/object-isprototypeof.js b/implementation-contributed/v8/mjsunit/compiler/object-isprototypeof.js deleted file mode 100644 index 284a4387d60..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/object-isprototypeof.js +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test corner cases with null/undefined receivers. -(function() { - function foo(x, y) { return Object.prototype.isPrototypeOf.call(x, y); } - - assertThrows(() => foo(null, {})); - assertThrows(() => foo(undefined, {})); - assertThrows(() => foo(null, [])); - assertThrows(() => foo(undefined, [])); - assertFalse(foo(null, 0)); - assertFalse(foo(undefined, 0)); - assertFalse(foo(null, "")); - assertFalse(foo(undefined, "")); - assertFalse(foo(null, null)); - assertFalse(foo(undefined, null)); - assertFalse(foo(null, undefined)); - assertFalse(foo(undefined, undefined)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(null, {})); - assertThrows(() => foo(undefined, {})); - assertThrows(() => foo(null, [])); - assertThrows(() => foo(undefined, [])); - assertFalse(foo(null, 0)); - assertFalse(foo(undefined, 0)); - assertFalse(foo(null, "")); - assertFalse(foo(undefined, "")); - assertFalse(foo(null, null)); - assertFalse(foo(undefined, null)); - assertFalse(foo(null, undefined)); - assertFalse(foo(undefined, undefined)); -})(); - -// Test general constructor prototype case. -(function() { - function A() {} - A.prototype = {}; - var a = new A; - - function foo(x) { return A.prototype.isPrototypeOf(x); } - - assertFalse(foo(0)); - assertFalse(foo("")); - assertFalse(foo(null)); - assertFalse(foo(undefined)); - assertFalse(foo({})); - assertFalse(foo([])); - assertTrue(foo(a)); - assertTrue(foo(new A)); - assertTrue(foo({__proto__: a})); - assertTrue(foo({__proto__: A.prototype})); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(0)); - assertFalse(foo("")); - assertFalse(foo(null)); - assertFalse(foo(undefined)); - assertFalse(foo({})); - assertFalse(foo([])); - assertTrue(foo(a)); - assertTrue(foo(new A)); - assertTrue(foo({__proto__: a})); - assertTrue(foo({__proto__: A.prototype})); -})(); - -// Test known primitive values. -(function() { - function A() {} - A.prototype = {}; - var a = new A; - - function foo() { return A.prototype.isPrototypeOf(0); } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); -(function() { - function A() {} - A.prototype = {}; - var a = new A; - - function foo() { return A.prototype.isPrototypeOf(null); } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); -(function() { - function A() {} - A.prototype = {}; - var a = new A; - - function foo() { return A.prototype.isPrototypeOf(undefined); } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Test constant-folded prototype chain checks. -(function() { - function A() {} - A.prototype = {}; - var a = new A; - - function foo() { return A.prototype.isPrototypeOf(a); } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); -(function() { - function A() {} - var a = new A; - A.prototype = {}; - - function foo() { return A.prototype.isPrototypeOf(a); } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Test Array prototype chain checks. -(function() { - var a = []; - - function foo() { return Array.prototype.isPrototypeOf(a); } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); -(function() { - var a = []; - - function foo() { return Object.prototype.isPrototypeOf(a); } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/objectliterals.js b/implementation-contributed/v8/mjsunit/compiler/objectliterals.js deleted file mode 100644 index 788acb48059..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/objectliterals.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test object literals with getter, setter and prototype properties. - -var o = { x: 41, get bar() { return {x:42} } }; - -assertEquals(41, o.x); -assertEquals(42, o.bar.x); - -o = { f: function() { return 41 }, - get bar() { return this.x }, - x:0, - set bar(t) { this.x = t }, - g: function() { return 43 } -}; -o.bar = 7; -assertEquals(7, o.bar); -assertEquals(7, o.x); -assertEquals(41, o.f()); -assertEquals(43, o.g()); - -p = {x:42}; -o = {get foo() { return this.x; }, - f: function() { return this.foo + 1 }, - set bar(t) { this.x = t; }, - __proto__: p, -}; -assertEquals(42, o.x); -assertEquals(42, o.foo); -assertEquals(43, o.f()); -o.bar = 44; -assertEquals(44, o.foo); diff --git a/implementation-contributed/v8/mjsunit/compiler/opt-next-call-turbo.js b/implementation-contributed/v8/mjsunit/compiler/opt-next-call-turbo.js deleted file mode 100644 index eb8df4b50cb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/opt-next-call-turbo.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --turbo-filter=* - -function foo() { - with ({ value:"fooed" }) { return value; } -} - -%OptimizeFunctionOnNextCall(foo); -assertEquals("fooed", foo()); -assertOptimized(foo); - -function bar() { - with ({ value:"bared" }) { return value; } -} - -assertEquals("bared", bar()); -%OptimizeFunctionOnNextCall(bar); -assertEquals("bared", bar()); -assertOptimized(bar); diff --git a/implementation-contributed/v8/mjsunit/compiler/opt-next-call.js b/implementation-contributed/v8/mjsunit/compiler/opt-next-call.js deleted file mode 100644 index 2878efefe96..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/opt-next-call.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo() { - return "fooed"; -} - -%OptimizeFunctionOnNextCall(foo); -assertEquals("fooed", foo()); -assertOptimized(foo); - -function bar() { - return "bared"; -} - -assertEquals("bared", bar()); -%OptimizeFunctionOnNextCall(bar); -assertEquals("bared", bar()); -assertOptimized(bar); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimize-bitnot.js b/implementation-contributed/v8/mjsunit/compiler/optimize-bitnot.js deleted file mode 100644 index 28315a4fe22..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimize-bitnot.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(x) { - return ~~x; -} - -f(42); -f(42); -%OptimizeFunctionOnNextCall(f); -assertEquals(42, f(42)); -assertEquals(42, f(42.5)); -assertEquals(1/0, 1/f(-0)); -assertEquals(-1, f(0xffffffff)); -assertEquals(0, f(undefined)); -assertEquals(0, f("abc")); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimize_max.js b/implementation-contributed/v8/mjsunit/compiler/optimize_max.js deleted file mode 100644 index 6baefe48ba9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimize_max.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var DOUBLE_ZERO = %AllocateHeapNumber(); -var SMI_ZERO = 0; -var MINUS_ZERO = -0.0; - -function max1(a, b) { - a = +a; - b = +b; - return +(a < b ? b : a); -} - -function max2(a, b) { - a = +a; - b = +b; - return a < b ? b : a; -} - -for (f of [max1, max2]) { - for (var i = 0; i < 5; i++) { - assertEquals(4, f(3, 4)); - assertEquals(4, f(4, 3)); - assertEquals(4.3, f(3.3, 4.3)); - assertEquals(4.4, f(4.4, 3.4)); - - assertEquals(Infinity, 1 / f(SMI_ZERO, MINUS_ZERO)); - assertEquals(Infinity, 1 / f(DOUBLE_ZERO, MINUS_ZERO)); - assertEquals(-Infinity, 1 / f(MINUS_ZERO, SMI_ZERO)); - assertEquals(-Infinity, 1 / f(MINUS_ZERO, DOUBLE_ZERO)); - - assertEquals(NaN, f(NaN, NaN)); - assertEquals(3, f(3, NaN)); - assertEquals(NaN, f(NaN, 3)); - } -} - -function max3(a, b) { - a = +a; - b = +b; - return +(a > b ? a : b); -} - -function max4(a, b) { - a = +a; - b = +b; - return a > b ? a : b; -} - -for (f of [max3, max4]) { - for (var i = 0; i < 5; i++) { - assertEquals(4, f(3, 4)); - assertEquals(4, f(4, 3)); - assertEquals(4.3, f(3.3, 4.3)); - assertEquals(4.4, f(4.4, 3.4)); - - assertEquals(-Infinity, 1 / f(SMI_ZERO, MINUS_ZERO)); - assertEquals(-Infinity, 1 / f(DOUBLE_ZERO, MINUS_ZERO)); - assertEquals(Infinity, 1 / f(MINUS_ZERO, SMI_ZERO)); - assertEquals(Infinity, 1 / f(MINUS_ZERO, DOUBLE_ZERO)); - - assertEquals(NaN, f(NaN, NaN)); - assertEquals(NaN, f(3, NaN)); - assertEquals(3, f(NaN, 3)); - } -} diff --git a/implementation-contributed/v8/mjsunit/compiler/optimize_min.js b/implementation-contributed/v8/mjsunit/compiler/optimize_min.js deleted file mode 100644 index 906b9995840..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimize_min.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var DOUBLE_ZERO = %AllocateHeapNumber(); -var SMI_ZERO = 0; -var MINUS_ZERO = -0.0; - -function min1(a, b) { - a = +a; - b = +b; - return +(a < b ? a : b); -} - -function min2(a, b) { - a = +a; - b = +b; - return a < b ? a : b; -} - -for (f of [min1, min2]) { - for (var i = 0; i < 5; i++) { - assertEquals(3, f(3, 4)); - assertEquals(3, f(4, 3)); - assertEquals(3.3, f(3.3, 4)); - assertEquals(3.4, f(4, 3.4)); - - assertEquals(-Infinity, 1 / f(SMI_ZERO, MINUS_ZERO)); - assertEquals(-Infinity, 1 / f(DOUBLE_ZERO, MINUS_ZERO)); - assertEquals(Infinity, 1 / f(MINUS_ZERO, SMI_ZERO)); - assertEquals(Infinity, 1 / f(MINUS_ZERO, DOUBLE_ZERO)); - - assertEquals(NaN, f(NaN, NaN)); - assertEquals(NaN, f(3, NaN)); - assertEquals(3, f(NaN, 3)); - } -} - -function min3(a, b) { - a = +a; - b = +b; - return +(a > b ? b : a); -} - -function min4(a, b) { - a = +a; - b = +b; - return a > b ? b : a; -} - -for (f of [min3, min4]) { - for (var i = 0; i < 5; i++) { - assertEquals(3, f(3, 4)); - assertEquals(3, f(4, 3)); - assertEquals(3.3, f(3.3, 4)); - assertEquals(3.4, f(4, 3.4)); - - assertEquals(Infinity, 1 / f(SMI_ZERO, MINUS_ZERO)); - assertEquals(Infinity, 1 / f(DOUBLE_ZERO, MINUS_ZERO)); - assertEquals(-Infinity, 1 / f(MINUS_ZERO, SMI_ZERO)); - assertEquals(-Infinity, 1 / f(MINUS_ZERO, DOUBLE_ZERO)); - - assertEquals(NaN, f(NaN, NaN)); - assertEquals(3, f(3, NaN)); - assertEquals(NaN, f(NaN, 3)); - } -} diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-closures.js b/implementation-contributed/v8/mjsunit/compiler/optimized-closures.js deleted file mode 100644 index 499e4d5e24c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-closures.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test optimized closures. - -var a = new Array(100); - -function f() { - var x=0; - for (var i=0; i<100; i++) { - var g = function goo(y) { - function h() { - if (goo.arguments[0] == 23) return -42; - return 42; - } - return x + y + h(y); - } - g(0); - %OptimizeFunctionOnNextCall(g); - a[i] = g(i); - } -} - -f(); -assertEquals(42, a[0]); -assertEquals(49, a[7]); -assertEquals(-19, a[23]); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-float32array-length.js b/implementation-contributed/v8/mjsunit/compiler/optimized-float32array-length.js deleted file mode 100644 index 6e08e4a57f8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-float32array-length.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -var a = new Float32Array(1); -function len(a) { return a.length; } -assertEquals(1, len(a)); -assertEquals(1, len(a)); -%OptimizeFunctionOnNextCall(len); -assertEquals(1, len(a)); -assertOptimized(len); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-float64array-length.js b/implementation-contributed/v8/mjsunit/compiler/optimized-float64array-length.js deleted file mode 100644 index 7d48d09c685..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-float64array-length.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -var a = new Float64Array(1); -function len(a) { return a.length; } -assertEquals(1, len(a)); -assertEquals(1, len(a)); -%OptimizeFunctionOnNextCall(len); -assertEquals(1, len(a)); -assertOptimized(len); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-for-in.js b/implementation-contributed/v8/mjsunit/compiler/optimized-for-in.js deleted file mode 100644 index ca17ee6a75d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-for-in.js +++ /dev/null @@ -1,305 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test for-in support in Crankshaft. For simplicity this tests assumes certain -// fixed iteration order for properties and will have to be adjusted if V8 -// stops following insertion order. - - -function a(t) { - var result = []; - for (var i in t) { - result.push([i, t[i]]); - } - return result; -} - -// Check that we correctly deoptimize on map check. -function b(t) { - var result = []; - for (var i in t) { - result.push([i, t[i]]); - delete t[i]; - } - return result; -} - -// Check that we correctly deoptimize during preparation step. -function c(t) { - var result = []; - for (var i in t) { - result.push([i, t[i]]); - } - return result; -} - -// Check that we deoptimize to the place after side effect in the right state. -function d(t) { - var result = []; - var o; - for (var i in (o = t())) { - result.push([i, o[i]]); - } - return result; -} - -// Check that we correctly deoptimize on map check inserted for fused load. -function e(t) { - var result = []; - for (var i in t) { - delete t[i]; - t[i] = i; - result.push([i, t[i]]); - } - return result; -} - -// Nested for-in loops. -function f(t) { - var result = []; - for (var i in t) { - for (var j in t) { - result.push([i, j, t[i], t[j]]); - } - } - return result; -} - -// Deoptimization from the inner for-in loop. -function g(t) { - var result = []; - for (var i in t) { - for (var j in t) { - result.push([i, j, t[i], t[j]]); - var v = t[i]; - delete t[i]; - t[i] = v; - } - } - return result; -} - - -// Break from the inner for-in loop. -function h(t, deopt) { - var result = []; - for (var i in t) { - for (var j in t) { - result.push([i, j, t[i], t[j]]); - break; - } - } - deopt.deopt; - return result; -} - -// Continue in the inner loop. -function j(t, deopt) { - var result = []; - for (var i in t) { - for (var j in t) { - result.push([i, j, t[i], t[j]]); - continue; - } - } - deopt.deopt; - return result; -} - -// Continue of the outer loop. -function k(t, deopt) { - var result = []; - outer: for (var i in t) { - for (var j in t) { - result.push([i, j, t[i], t[j]]); - continue outer; - } - } - deopt.deopt; - return result; -} - -// Break of the outer loop. -function l(t, deopt) { - var result = []; - outer: for (var i in t) { - for (var j in t) { - result.push([i, j, t[i], t[j]]); - break outer; - } - } - deopt.deopt; - return result; -} - -// Test deoptimization from inlined frame (currently it is not inlined). -function m0(t, deopt) { - for (var i in t) { - for (var j in t) { - deopt.deopt; - return [i, j, t[i], t[j]]; - } - } -} - -function m(t, deopt) { - return m0(t, deopt); -} - - -function tryFunction(result, mkT, f) { - var d = {deopt: false}; - assertEquals(result, f(mkT(), d)); - assertEquals(result, f(mkT(), d)); - assertEquals(result, f(mkT(), d)); - %OptimizeFunctionOnNextCall(f); - assertEquals(result, f(mkT(), d)); - assertEquals(result, f(mkT(), {})); -} - -var expectedResult = [["a","1"],["b","2"],["c","3"],["d","4"]]; -function mkTable() { return { a: "1", b: "2", c: "3", d: "4" }; } - - -tryFunction(expectedResult, mkTable, a); -tryFunction(expectedResult, mkTable, b); - -expectedResult = [["0","a"],["1","b"],["2","c"],["3","d"]]; -tryFunction(expectedResult, function () { return "abcd"; }, c); -tryFunction(expectedResult, function () { - var cnt = false; - return function () { - cnt = true; - return "abcd"; - } -}, d); -tryFunction([["a","a"],["b","b"],["c","c"],["d","d"]], mkTable, e); - -function mkSmallTable() { return { a: "1", b: "2" }; } - -tryFunction([ - ["a","a","1","1"],["a","b","1","2"], - ["b","a","2","1"],["b","b","2","2"]], - mkSmallTable, f); -tryFunction([ - ["a","a","1","1"],["a","b","1","2"], - ["b","b","2","2"],["b","a","2","1"]], - mkSmallTable, g); -tryFunction([["a","a","1","1"],["b","a","2","1"]], mkSmallTable, h); -tryFunction([ - ["a","a","1","1"],["a","b","1","2"], - ["b","a","2","1"],["b","b","2","2"]], - mkSmallTable, j); -tryFunction([["a","a","1","1"],["b","a","2","1"]], mkSmallTable, h); -tryFunction([["a","a","1","1"],["b","a","2","1"]], mkSmallTable, k); -tryFunction([["a","a","1","1"]], mkSmallTable, l); -tryFunction(["a","a","1","1"], mkSmallTable, m); - -// Test handling of null. -tryFunction("", function () { - return function () { return null; } -}, function (t) { - for (var i in t()) { return i; } - return ""; -}); - -// Test smis. -tryFunction("", function () { - return function () { return 11; } -}, function (t) { - for (var i in t()) { return i; } - return ""; -}); - -// Test LoadFieldByIndex for out of object properties. -function O() { this.a = 1; } -for (var i = 0; i < 10; i++) new O(); -tryFunction([["a",1],["b",2],["c",3],["d",4],["e",5],["f",6]], function () { - var o = new O(); - o.b = 2; - o.c = 3; - o.d = 4; - o.e = 5; - o.f = 6; - return o; -}, function (t) { - var r = []; - for (var i in t) r.push([i, t[i]]); - return r; -}); - -// Test OSR inside for-in. -function osr_inner(t, limit) { - var r = 1; - for (var x in t) { - if (t.hasOwnProperty(x)) { - for (var i = 0; i < t[x].length; i++) { - r += t[x][i]; - if (i === limit) %OptimizeOsr(); - } - r += x; - } - } - return r; -} - -function osr_outer(t, osr_after) { - var r = 1; - for (var x in t) { - for (var i = 0; i < t[x].length; i++) { - r += t[x][i]; - } - if (x === osr_after) %OptimizeOsr(); - r += x; - } - return r; -} - -function osr_outer_and_deopt(t, osr_after) { - var r = 1; - for (var x in t) { - r += x; - if (x == osr_after) %OptimizeOsr(); - } - return r; -} - -function test_osr() { - with ({}) {} // Disable optimizations of this function. - var arr = new Array(20); - for (var i = 0; i < arr.length; i++) { - arr[i] = i + 1; - } - arr.push(":"); // Force deopt at the end of the loop. - assertEquals("211:x1234567891011121314151617181920:y", osr_inner({x: arr, y: arr}, (arr.length / 2) | 0)); - assertEquals("7x456y", osr_outer({x: [1,2,3], y: [4,5,6]}, "x")); - assertEquals("101234567", osr_outer_and_deopt([1,2,3,4,5,6,7,8], "5")); -} - -test_osr(); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-function-calls.js b/implementation-contributed/v8/mjsunit/compiler/optimized-function-calls.js deleted file mode 100644 index c3e69d71f58..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-function-calls.js +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -function f() { - gc(); - return 87; -} - - -var x = 42, y = 99; -function g() { - return x | f() | (y | (x | (f() | x))); -} -f(); // Give us a chance to optimize f. -assertEquals(42 | 87 | 99, g()); - - -// Regression test for issue where we would try do an illegal -// compile-time lookup on a null prototype. -var object = { f: function() { return 42; }, x: 42 }; -delete object.x; -function call_f(o) { - return o.f(); -} -for (var i = 0; i < 5; i++) call_f(object); -%OptimizeFunctionOnNextCall(call_f); -call_f(object); - - -// Check that nested global function calls work. -function f0() { - return 42; -} - -function f1(a) { - return a; -} - -function f2(a, b) { - return a * b; -} - -function f3(a, b, c) { - return a + b - c; -} - -function f4(a, b, c, d) { - return a * b + c - d; -} - -function nested() { - return f4(f3(f2(f1(f0()),f0()),f1(f0()),f0()),f2(f1(f0()),f0()),f1(f0()),f0()) - + f4(f0(),f1(f0()),f2(f1(f0()),f0()),f3(f2(f1(f0()),f0()),f1(f0()),f0())); -} -assertEquals(3113460, nested()); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-instanceof-1.js b/implementation-contributed/v8/mjsunit/compiler/optimized-instanceof-1.js deleted file mode 100644 index 242b4be7724..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-instanceof-1.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function F() {} -var f = new F - -var proto = Object.getPrototypeOf(F); -Object.setPrototypeOf(F, null); -F[Symbol.hasInstance] = function(v) { return true }; -Object.setPrototypeOf(F, proto); - -function foo(x) { return x instanceof F }; -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-instanceof-2.js b/implementation-contributed/v8/mjsunit/compiler/optimized-instanceof-2.js deleted file mode 100644 index 38a35b73f12..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-instanceof-2.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function F() {} -var f = new F - -function foo(x) { return x instanceof F }; -%OptimizeFunctionOnNextCall(foo); -assertFalse(foo(1)); - -var proto = Object.getPrototypeOf(F); -Object.setPrototypeOf(F, null); -F[Symbol.hasInstance] = function(v) { return true }; -Object.setPrototypeOf(F, proto); - -assertTrue(foo(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-int32array-length.js b/implementation-contributed/v8/mjsunit/compiler/optimized-int32array-length.js deleted file mode 100644 index 00bf8d12a4d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-int32array-length.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -var a = new Int32Array(1); -function len(a) { return a.length; } -assertEquals(1, len(a)); -assertEquals(1, len(a)); -%OptimizeFunctionOnNextCall(len); -assertEquals(1, len(a)); -assertOptimized(len); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-uint32array-length.js b/implementation-contributed/v8/mjsunit/compiler/optimized-uint32array-length.js deleted file mode 100644 index 3a88ed7d254..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-uint32array-length.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -var a = new Uint32Array(1); -function len(a) { return a.length; } -assertEquals(1, len(a)); -assertEquals(1, len(a)); -%OptimizeFunctionOnNextCall(len); -assertEquals(1, len(a)); -assertOptimized(len); diff --git a/implementation-contributed/v8/mjsunit/compiler/optimized-with.js b/implementation-contributed/v8/mjsunit/compiler/optimized-with.js deleted file mode 100644 index 9bc87137220..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/optimized-with.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test with-statements inside a try-catch block. -(() => { - function f(object) { - try { - with (object) { return x } - } catch(e) { - return e - } - } - assertEquals(23, f({ x:23 })); - assertEquals(42, f({ x:42 })); - assertInstanceof(f(null), TypeError); - assertInstanceof(f(undefined), TypeError); - %OptimizeFunctionOnNextCall(f); - assertInstanceof(f(null), TypeError); - assertInstanceof(f(undefined), TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-alignment.js b/implementation-contributed/v8/mjsunit/compiler/osr-alignment.js deleted file mode 100644 index f815e712ee7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-alignment.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --use-osr - -function f1() { - var sum = 0; - for (var i = 0; i < 1000; i++) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - if (i == 18) %OptimizeOsr(); - } - return sum; -} - -function f2() { - var sum = 0; - for (var i = 0; i < 1000; i++) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - if (i == 19) %OptimizeOsr(); - } - return sum; -} - -function f3() { - var sum = 0; - for (var i = 0; i < 1000; i++) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - if (i == 20) %OptimizeOsr(); - } - return sum; -} - -function test1() { - var j = 11; - for (var i = 0; i < 2; i++) { - assertEquals(509500, f1()); - } -} - -function test2() { - for (var i = 0; i < 2; i++) { - var j = 11, k = 12; - assertEquals(509500, f2()); - } -} - -function test3() { - for (var i = 0; i < 2; i++) { - var j = 11, k = 13, m = 14; - assertEquals(509500, f3()); - } -} - -test1(); -test2(); -test3(); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-arguments.js b/implementation-contributed/v8/mjsunit/compiler/osr-arguments.js deleted file mode 100644 index 14a769fc44e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-arguments.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f1() { - var sum = 0; - for (var i = 0; i < 1000; i++) { - sum += arguments[0] + arguments[1] + arguments[2] + arguments[3]; - if (i == 18) %OptimizeOsr(); - } - return sum; -} - -let result = f1(1, 1, 2, 3); -assertEquals(7000, result); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-array-len.js b/implementation-contributed/v8/mjsunit/compiler/osr-array-len.js deleted file mode 100644 index aaee860d619..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-array-len.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -function fastaRandom(n, table) { - var line = new Array(5); - while (n > 0) { - if (n < line.length) line = new Array(n); - %OptimizeOsr(); - line[0] = n; - n--; - } -} - -print("---BEGIN 1"); -assertEquals(undefined, fastaRandom(6, null)); -print("---BEGIN 2"); -assertEquals(undefined, fastaRandom(6, null)); -print("---END"); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-assert.js b/implementation-contributed/v8/mjsunit/compiler/osr-assert.js deleted file mode 100644 index c67ad536adc..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-assert.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --use-osr --allow-natives-syntax - -function f(x, b, c) { - var outer = 10; - var a = 1; - while (outer > 0) { - a = a + 5; - assertEquals(b + 1, c); - outer--; - if (outer === 5) { - %OptimizeOsr(); - } - } - return a + 4; -} - -assertEquals(55, f(5, "122", "1221")); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-backedges1.js b/implementation-contributed/v8/mjsunit/compiler/osr-backedges1.js deleted file mode 100644 index 18a7e0469e6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-backedges1.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function foo(a) { - var i = a | 0; - while (true) { - if (i == 0) { i = 1; continue; } - if (i == 1) { i = 2; continue; } - if (i == 2) { i = 3; continue; } - if (i == 3) { i = 4; continue; } - if (i == 4) { i = 5; continue; } - if (i == 5) { i = 6; continue; } - if (i == 6) { i = 7; continue; } - if (i == 7) { i = 8; continue; } - for (var j = 0; j < 10; j++) { if (i == 5) %OptimizeOsr(); } - break; - } - return j; -} - -function test(func, tv, fv) { - assertEquals(tv, func(0)); - assertEquals(tv, func(0)); - assertEquals(fv, func(9)); - assertEquals(fv, func(9)); -} - -test(foo, 10, 10); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-big.js b/implementation-contributed/v8/mjsunit/compiler/osr-big.js deleted file mode 100644 index ed71744b78e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-big.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --use-osr - -function f(x) { - var sum = 0; - var outer = 1000000; - var a = 1, b = 2, c = 3, d = 4, e = 5; - while (outer > 0) { - a = a + 5; - b = b + 4; - c = c + 3; - d = d + 2; - e = e + 1; - outer--; - } - return a + b + c + d + e; -} - -assertEquals(15000015, f(5)); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-block-scope-func.js b/implementation-contributed/v8/mjsunit/compiler/osr-block-scope-func.js deleted file mode 100644 index 7c41f540743..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-block-scope-func.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -"use strict"; - -function foo() { - var result; - { - let sum = 0; - for (var i = 0; i < 100; i++) { - if (i == 50) %OptimizeOsr(); - sum += i; - } - result = ret; - function ret() { - return sum; - } - } - return result; -} - -assertEquals(4950, foo()()); -assertEquals(4950, foo()()); -assertEquals(4950, foo()()); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-block-scope-id.js b/implementation-contributed/v8/mjsunit/compiler/osr-block-scope-id.js deleted file mode 100644 index bcc7cdd47da..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-block-scope-id.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -"use strict"; - -function foo() { - var result = new Array(); - var out; - { - let sum = 0; - for (var i = 0; i < 10; i++) { - { - let x = i; - if (i == 5) %OptimizeOsr(); - sum += i; - result.push(function() { return x; }); - } - } - out = sum; - } - result.push(out); - return result; -} - - -function check() { - var r = foo(); - assertEquals(45, r.pop()); - for (var i = 9; i >= 0; i--) { - assertEquals(i, r.pop()()); - } - assertEquals(0, r.length); -} - -check(); -check(); -check(); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-block-scope.js b/implementation-contributed/v8/mjsunit/compiler/osr-block-scope.js deleted file mode 100644 index c60f8af6c9d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-block-scope.js +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -"use strict"; - -function nest(body, name, depth) { - var header = ""; - for (var i = 0; i < depth; i++) { - var x = "x" + (i + 1); - header += " for(var " + x + " = 0; " + x + " < 2; " + x + " = " + x + " + 1 | 0) {\n"; - body = body + "}" - } - - return body.replace(new RegExp("function " + name + "\\(\\) {"), - "function " + name + "_" + x + "() {\n" + header); -} - -function test(expected, func, depth) { - assertEquals(expected, func()); - assertEquals(expected, func()); - assertEquals(expected, func()); - - var orig = func.toString(); - var name = func.name; - for (var depth = 1; depth < 4; depth++) { - var body = nest(orig, name, depth); - func = eval("(" + body + ")"); - - assertEquals(expected, func()); - assertEquals(expected, func()); - assertEquals(expected, func()); - } -} - -function foo() { - var result; - { - let sum = 0; - for (var i = 0; i < 10; i++) { - %OptimizeOsr(); - sum += i; - } - result = sum; - } - return result; -} - -test(45, foo); - -function bar() { - let sum = 0; - for (var i = 0; i < 10; i++) { - %OptimizeOsr(); - sum += i; - } - return sum; -} - -test(45, bar); - -function bon() { - { - let sum = 0; - for (var i = 0; i < 10; i++) { - if (i == 5) %OptimizeOsr(); - sum += i; - } - return sum; - } -} - -test(45, bon); - -function row() { - var i = 0; - { - let sum = 0; - while (true) { - if (i == 8) return sum; - %OptimizeOsr(); - sum = i; - i = i + 1 | 0; - } - } - return 11; -} - -test(7, row); - -function nub() { - let i = 0; - while (i < 2) { - %OptimizeOsr(); - i++; - } - return i; -} - -test(2, nub); - -function kub() { - var result = 0; - let i = 0; - while (i < 2) { - let x = i; - %OptimizeOsr(); - i++; - result = x; - } - return result; -} - -test(1, kub); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-follow.js b/implementation-contributed/v8/mjsunit/compiler/osr-follow.js deleted file mode 100644 index 46581a8e5a8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-follow.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr - -function foo(a) { - var sum = 0; - var inc = a ? 100 : 200; - for (var i = 0; i < 100000; i++) { - sum += inc; - } - return sum + inc; -} - -function bar(a) { - var sum = 0; - var inc = a ? 100 : 200; - var x = a ? 5 : 6; - var y = a ? 7 : 8; - for (var i = 0; i < 100000; i++) { - sum += inc; - } - return sum ? x : y; -} - -function baz(a) { - var limit = a ? 100001 : 100002; - var r = 1; - var x = a ? 1 : 2; - var y = a ? 3 : 4; - for (var i = 0; i < limit; i++) { - r = r * -1; - } - return r > 0 ? x == y : x != y; -} - -function qux(a) { - var limit = a ? 100001 : 100002; - var r = 1; - var x = a ? 1 : 2; - var y = a ? 3 : 4; - for (var i = 0; i < limit; i++) { - r = r * -1; - } - var w = r > 0 ? x : y; - var z = r > 0 ? y : x; - return w === z; -} - -function test(func, tv, fv) { - assertEquals(tv, func(true)); - assertEquals(fv, func(false)); - assertEquals(tv, func(true)); - assertEquals(fv, func(false)); -} - -test(foo, 10000100, 20000200); -test(bar, 5, 6); -test(baz, true, false); -test(qux, false, false); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-for-let.js b/implementation-contributed/v8/mjsunit/compiler/osr-for-let.js deleted file mode 100644 index b8cef780b59..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-for-let.js +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -"use strict"; - -function test(expected, func) { - assertEquals(expected, func()); - assertEquals(expected, func()); - assertEquals(expected, func()); -} - -function bar() { - var result; - { - let sum = 0; - for (let i = 0; i < 90; i++) { - sum += i; - if (i == 45) %OptimizeOsr(); - } - result = sum; - } - return result; -} - -test(4005, bar); - -function baz() { - let sum = 0; - for (let i = 0; i < 2; i++) { - sum = 2; - %OptimizeOsr(); - } - return sum; -} - -test(2, baz); - -function qux() { - var result = 0; - for (let i = 0; i < 2; i++) { - result = i; - %OptimizeOsr(); - } - return result; -} - -test(1, qux); - -function nux() { - var result = 0; - for (let i = 0; i < 2; i++) { - { - let sum = i; - %OptimizeOsr(); - result = sum; - } - } - return result; -} - -test(1, nux); - -function blo() { - var result; - { - let sum = 0; - for (let i = 0; i < 90; i++) { - sum += i; - if (i == 45) %OptimizeOsr(); - } - result = ret; - function ret() { - return sum; - } - } - return result; -} - -test(4005, blo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-forin-nested.js b/implementation-contributed/v8/mjsunit/compiler/osr-forin-nested.js deleted file mode 100644 index dd810897e03..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-forin-nested.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(e, f, v) { - assertEquals(e, f(v)); - assertEquals(e, f(v)); - assertEquals(e, f(v)); -} - -function foo(t) { - for (var x in t) { - for (var i = 0; i < 2; i++) { - %OptimizeOsr(); - } - } - return 5; -} - -test(5, foo, {x:20}); - -function bar(t) { - var sum = 0; - for (var x in t) { - for (var i = 0; i < 2; i++) { - %OptimizeOsr(); - sum += t[x]; - } - } - return sum; -} - -test(62, bar, {x:20,y:11}); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-forin.js b/implementation-contributed/v8/mjsunit/compiler/osr-forin.js deleted file mode 100644 index b45d200d1bf..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-forin.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr - -function f(a) { - var sum = 0; - for (var j in a) { - var i = a[j]; - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - } - return sum; -} - -var a = new Array(10000); -for (var i = 0; i < 10000; i++) { - a[i] = (i * 999) % 77; -} - -for (var i = 0; i < 3; i++) { - assertEquals(480270, f(a)); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-forof.js b/implementation-contributed/v8/mjsunit/compiler/osr-forof.js deleted file mode 100644 index ce7b24de132..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-forof.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr - -function f(a) { - var sum = 0; - for (var i of a) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - } - return sum; -} - -var a = new Array(10000); -for (var i = 0; i < 10000; i++) { - a[i] = (i * 999) % 77; -} - -for (var i = 0; i < 3; i++) { - assertEquals(480270, f(wrap(a))); -} - -function wrap(array) { - var iterable = {}; - var i = 0; - function next() { - return { done: i >= array.length, value: array[i++] }; - }; - iterable[Symbol.iterator] = function() { return { next:next }; }; - return iterable; -} diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-function-id.js b/implementation-contributed/v8/mjsunit/compiler/osr-function-id.js deleted file mode 100644 index 8761e8517e2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-function-id.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr - -function id(f) { return f; } - -function foo() { - var sum = 0; - var r = id(foo); - for (var i = 0; i < 100000; i++) { - sum += i; - } - return foo == r; -} - -assertEquals(true, foo()); -assertEquals(true, foo()); -assertEquals(true, foo()); - - -function bar() { - var sum = 0; - for (var i = 0; i < 90000; i++) { - sum += i; - } - return id(bar,sum); -} - -assertEquals(bar, bar()); -assertEquals(bar, bar()); -assertEquals(bar, bar()); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-function-id2.js b/implementation-contributed/v8/mjsunit/compiler/osr-function-id2.js deleted file mode 100644 index e25ec314808..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-function-id2.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr - -function id(f) { return f; } - -var x = (function foo() { - var sum = 0; - var r = id(foo); - for (var i = 0; i < 100000; i++) { - sum += i; - } - return foo == r; -})(); - -assertEquals(true, x); - -var x = (function bar() { - var sum = 0; - for (var i = 0; i < 90000; i++) { - sum += i; - } - return bar; -})(); - -assertEquals("function", typeof x); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-function.js b/implementation-contributed/v8/mjsunit/compiler/osr-function.js deleted file mode 100644 index cee7e9d3d00..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-function.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr - -function foo() { - var sum = 0; - for (var i = 0; i < 100000; i++) { - sum += i; - } - return function() { return sum; } -} - -assertEquals(4999950000, foo()()); -assertEquals(4999950000, foo()()); -assertEquals(4999950000, foo()()); - -function bar() { - var sum = 0; - var ret = 0; - for (var i = 0; i < 90000; i++) { - sum += i; - if (i == 0) ret = function() { return sum; } - } - return ret; -} - -assertEquals(4049955000, bar()()); -assertEquals(4049955000, bar()()); -assertEquals(4049955000, bar()()); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-infinite.js b/implementation-contributed/v8/mjsunit/compiler/osr-infinite.js deleted file mode 100644 index 24c7add272d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-infinite.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr --allow-natives-syntax - -var global_counter = 0; - -function thrower() { - var x = global_counter++; - if (x == 5) %OptimizeOsr(1); - if (x == 10) throw "terminate"; -} - -%NeverOptimizeFunction(thrower); // Don't want to inline the thrower. -%NeverOptimizeFunction(test); // Don't want to inline the func into test. - -function test(func) { - for (var i = 0; i < 3; i++) { - global_counter = 0; - assertThrows(func); - } -} - -function n1() { - while (true) thrower(); -} - -function n2() { - while (true) while (true) thrower(); -} - -function n3() { - while (true) while (true) while (true) thrower(); -} - -function n4() { - while (true) while (true) while (true) while (true) thrower(); -} - -function b1(a) { - while (true) { - thrower(); - if (a) break - } -} - - -function b2(a) { - while (true) { - while (true) { - thrower(); - if (a) break - } - } -} - - -function b3(a) { - while (true) { - while (true) { - while (true) { - thrower(); - if (a) break - } - if (a) break - } - } -} - - -test(n1); -test(n2); -test(n3); -test(n4); -test(b1); -test(b2); -test(b3); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-labeled.js b/implementation-contributed/v8/mjsunit/compiler/osr-labeled.js deleted file mode 100644 index 1384e9a715b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-labeled.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function foo() { - var sum = 0; - A: for (var i = 0; i < 5; i++) { - B: for (var j = 0; j < 5; j++) { - C: for (var k = 0; k < 10; k++) { - if (k === 5) %OptimizeOsr(); - if (k === 6) break B; - sum++; - } - } - } - return sum; -} - -assertEquals(30, foo()); -assertEquals(30, foo()); - -function bar(a) { - var sum = 0; - A: for (var i = 0; i < 5; i++) { - B: for (var j = 0; j < 5; j++) { - C: for (var k = 0; k < 10; k++) { - sum++; - %OptimizeOsr(); - if (a === 1) break A; - if (a === 2) break B; - if (a === 3) break C; - } - } - } - return sum; -} - -assertEquals(1, bar(1)); -assertEquals(1, bar(1)); - -assertEquals(5, bar(2)); -assertEquals(5, bar(2)); - -assertEquals(25, bar(3)); -assertEquals(25, bar(3)); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-literals-adapted.js b/implementation-contributed/v8/mjsunit/compiler/osr-literals-adapted.js deleted file mode 100644 index 4d1798c9290..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-literals-adapted.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function mod() { - function f0() { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function f1(a) { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function f2(a,b) { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function f3(a,b,c) { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function f4(a,b,c,d) { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function bar() { - assertEquals(3, f0().blah); - assertEquals(3, f1().blah); - assertEquals(3, f2().blah); - assertEquals(3, f3().blah); - assertEquals(3, f4().blah); - } - bar(); -} - - -mod(); -mod(); -mod(); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-literals.js b/implementation-contributed/v8/mjsunit/compiler/osr-literals.js deleted file mode 100644 index f2051dced7d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-literals.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function mod() { - function f0() { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function f1(a) { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function f2(a,b) { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function f3(a,b,c) { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function f4(a,b,c,d) { - for (var i = 0; i < 3; i = i + 1 | 0) { - %OptimizeOsr(); - } - return {blah: i}; - } - - function bar() { - assertEquals(3, f0().blah); - assertEquals(3, f1(1).blah); - assertEquals(3, f2(1,2).blah); - assertEquals(3, f3(1,2,3).blah); - assertEquals(3, f4(1,2,3,4).blah); - } - bar(); -} - - -mod(); -mod(); -mod(); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-manual1.js b/implementation-contributed/v8/mjsunit/compiler/osr-manual1.js deleted file mode 100644 index c3db796f113..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-manual1.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -var counter = 111; - -function gen(w) { // defeat compiler cache. - var num = counter++; - var Z = [ "", "", "", ]; - Z[w] = "%OptimizeOsr()"; - var src = - "function f" + num + "(a,b,c) {" + - " var x = 0;" + - " var y = 0;" + - " var z = 0;" + - " while (a > 0) { " + Z[0] + "; x += 19; a--; }" + - " while (b > 0) { " + Z[1] + "; y += 23; b--; }" + - " while (c > 0) { " + Z[2] + "; z += 29; c--; }" + - " return x + y + z;" + - "} f" + num; - return eval(src); -} - -function check(x,a,b,c) { - for (var i = 0; i < 3; i++) { - var f = gen(i); - assertEquals(x, f(a, b, c)); - } -} - -check(213, 3,3,3); -check(365, 4,5,6); -check(6948, 99,98,97); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-manual2.js b/implementation-contributed/v8/mjsunit/compiler/osr-manual2.js deleted file mode 100644 index de7ec243fe6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-manual2.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -var counter = 188; - -function gen(w) { // defeat compiler cache. - var num = counter++; - var Z = [ "", "", "", ]; - Z[w] = "%OptimizeOsr()"; - var src = - "function f" + num + "(a,b,c) {" + - " var x = 0;" + - " var y = 0;" + - " var z = 0;" + - " while (a > 0) { " + Z[0] + "; x += 19; a--; var j=2; while(j--); }" + - " while (b > 0) { " + Z[1] + "; y += 23; b--; var j=2; while(j--); }" + - " while (c > 0) { " + Z[2] + "; z += 29; c--; var j=2; while(j--); }" + - " return x + y + z;" + - "} f" + num; - return eval(src); -} - -function check(x,a,b,c) { - for (var i = 0; i < 3; i++) { - var f = gen(i); - assertEquals(x, f(a, b, c)); - } -} - -check(213, 3,3,3); -check(365, 4,5,6); -check(6948, 99,98,97); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-maze1.js b/implementation-contributed/v8/mjsunit/compiler/osr-maze1.js deleted file mode 100644 index da172827429..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-maze1.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function bar(goal) { - var count = 0; - var sum = 11; - var i = 35; - while (i-- > 33) { - if (count++ == goal) %OptimizeOsr(); - sum = sum + i; - } - while (i-- > 31) { - if (count++ == goal) %OptimizeOsr(); - j = 9; - while (j-- > 7) { - if (count++ == goal) %OptimizeOsr(); - sum = sum + j * 3; - } - while (j-- > 5) { - if (count++ == goal) %OptimizeOsr(); - sum = sum + j * 5; - } - } - while (i-- > 29) { - if (count++ == goal) %OptimizeOsr(); - while (j-- > 3) { - var k = 10; - if (count++ == goal) %OptimizeOsr(); - while (k-- > 8) { - if (count++ == goal) %OptimizeOsr(); - sum = sum + k * 11; - } - } - while (j-- > 1) { - if (count++ == goal) %OptimizeOsr(); - while (k-- > 6) { - if (count++ == goal) %OptimizeOsr(); - sum = sum + j * 13; - } - } - } - return sum; -} - -for (var i = 0; i < 13; i++) { - %DeoptimizeFunction(bar); - assertEquals(348, bar(i)); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-maze2.js b/implementation-contributed/v8/mjsunit/compiler/osr-maze2.js deleted file mode 100644 index 1fc1cd2db18..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-maze2.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function bar() { - var sum = 11; - var i = 35; - while (i-- > 31) { - LOOP1(); - j = 9; - while (j-- > 7) { - LOOP2(); - sum = sum + j * 5; - var k = 7; - while (k-- > 5) { - LOOP3(); - sum = sum + j * 5; - } - } - } - while (i-- > 29) { - LOOP4(); - while (j-- > 3) { - LOOP5(); - var k = 10; - while (k-- > 8) { - LOOP6(); - sum = sum + k * 11; - } - } - while (j-- > 1) { - LOOP7(); - var k = 8; - while (k-- > 6) { - LOOP8(); - var m = 9; - while (m-- > 6) { - LOOP9(); - sum = sum + k * 13; - } - } - } - } - return sum; -} - -function gen(i) { - var body = bar.toString(); - body = body.replace(new RegExp("bar"), "bar" + i); - for (var j = 1; j < 10; j++) { - var r = new RegExp("LOOP" + j + "\\(\\);"); - if (i == j) body = body.replace(r, "%OptimizeOsr();"); - else body = body.replace(r, ""); - } - return eval("(" + body + ")"); -} - -for (var i = 1; i < 10; i++) { - var f = gen(i); - assertEquals(1979, f()); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-multiple.js b/implementation-contributed/v8/mjsunit/compiler/osr-multiple.js deleted file mode 100644 index 72fff8546c8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-multiple.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr - -function f1(a,b,c) { - var x = 0; - var y = 0; - var z = 0; - while (a > 0) { x += 19; a--; } - while (b > 0) { y += 23; b--; } - while (c > 0) { z += 29; c--; } - return x + y + z; -} - -function f2(a,b,c) { - var x = 0; - var y = 0; - var z = 0; - while (a > 0) { x += 19; a--; } - while (b > 0) { y += 23; b--; } - while (c > 0) { z += 29; c--; } - return x + y + z; -} - - -function f3(a,b,c) { - var x = 0; - var y = 0; - var z = 0; - while (a > 0) { x += 19; a--; } - while (b > 0) { y += 23; b--; } - while (c > 0) { z += 29; c--; } - return x + y + z; -} - -function check(f,a,b,c) { - assertEquals(a * 19 + b * 23 + c * 29, f(a,b,c)); -} - -check(f1, 50000, 5, 6); -check(f2, 4, 50000, 6); -check(f3, 11, 12, 50000); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-multiple2.js b/implementation-contributed/v8/mjsunit/compiler/osr-multiple2.js deleted file mode 100644 index edb627a57ba..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-multiple2.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr - -function f1(a,b,c) { - var x = 0; - var y = 0; - var z = 0; - for (var i = 0; i < 2; i++) { - while (a > 0) { x += 19; a--; } - while (b > 0) { y += 23; b--; } - while (c > 0) { z += 29; c--; } - } - return x + y + z; -} - -function f2(a,b,c) { - var x = 0; - var y = 0; - var z = 0; - for (var i = 0; i < 2; i++) { - while (a > 0) { x += 19; a--; } - while (b > 0) { y += 23; b--; } - while (c > 0) { z += 29; c--; } - } - return x + y + z; -} - - -function f3(a,b,c) { - var x = 0; - var y = 0; - var z = 0; - for (var i = 0; i < 2; i++) { - while (a > 0) { x += 19; a--; } - while (b > 0) { y += 23; b--; } - while (c > 0) { z += 29; c--; } - } - return x + y + z; -} - -function check(f,a,b,c) { - assertEquals(a * 19 + b * 23 + c * 29, f(a,b,c)); -} - -check(f1, 50000, 5, 6); -check(f2, 4, 50000, 6); -check(f3, 11, 12, 50000); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-multiple3.js b/implementation-contributed/v8/mjsunit/compiler/osr-multiple3.js deleted file mode 100644 index fa703eaeac7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-multiple3.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr - -function f1(a,b,c) { - var x = 0; - var y = 0; - var z = 0; - for (var i = 0; i < 2; i++) { - for (var j = 0; j < 2; j++) { - while (a > 0) { x += 19; a--; } - while (b > 0) { y += 23; b--; } - while (c > 0) { z += 29; c--; } - } - } - return x + y + z; -} - -function f2(a,b,c) { - var x = 0; - var y = 0; - var z = 0; - for (var i = 0; i < 2; i++) { - for (var j = 0; j < 2; j++) { - while (a > 0) { x += 19; a--; } - while (b > 0) { y += 23; b--; } - while (c > 0) { z += 29; c--; } - } - } - return x + y + z; -} - - -function f3(a,b,c) { - var x = 0; - var y = 0; - var z = 0; - for (var i = 0; i < 2; i++) { - for (var j = 0; j < 2; j++) { - while (a > 0) { x += 19; a--; } - while (b > 0) { y += 23; b--; } - while (c > 0) { z += 29; c--; } - } - } - return x + y + z; -} - -function check(f,a,b,c) { - assertEquals(a * 19 + b * 23 + c * 29, f(a,b,c)); -} - -check(f1, 50000, 5, 6); -check(f2, 4, 50000, 6); -check(f3, 11, 12, 50000); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-nested.js b/implementation-contributed/v8/mjsunit/compiler/osr-nested.js deleted file mode 100644 index 28c42c8f733..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-nested.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --use-osr --allow-natives-syntax - -function f() { - var sum = 0; - for (var i = 0; i < 10; i++) { - for (var j = 0; j < 10; j++) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - if (j == 5) %OptimizeOsr(); - } - } - return sum; -} - - -assertEquals(1450, f()); -assertEquals(1450, f()); -assertEquals(1450, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-nested2.js b/implementation-contributed/v8/mjsunit/compiler/osr-nested2.js deleted file mode 100644 index efe31f11775..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-nested2.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function f() { - var sum = 0; - for (var i = 5; i < 6; i++) { - for (var j = 0; j < 1000; j++) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - if (i == 21) %OptimizeOsr(); - } - } - return sum; -} - - -assertEquals(15000, f()); -assertEquals(15000, f()); -assertEquals(15000, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-nested2b.js b/implementation-contributed/v8/mjsunit/compiler/osr-nested2b.js deleted file mode 100644 index 18088114a48..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-nested2b.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function f() { - var sum = 0; - for (var i = 5; i < 6; i++) { - for (var j = 0; j < 1000; j++) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - if (i == 25) %OptimizeOsr(); - } - if (true) break; - } - return sum; -} - - -assertEquals(15000, f()); -assertEquals(15000, f()); -assertEquals(15000, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-nested3.js b/implementation-contributed/v8/mjsunit/compiler/osr-nested3.js deleted file mode 100644 index d7c144b9e6e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-nested3.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function f() { - var sum = 0; - for (var m = 99; m < 100; m++) { - for (var i = 5; i < 6; i++) { - for (var j = 0; j < 1000; j++) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - if (i == 19) %OptimizeOsr(); - } - } - } - return sum; -} - - -assertEquals(15000, f()); -assertEquals(15000, f()); -assertEquals(15000, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-nested3b.js b/implementation-contributed/v8/mjsunit/compiler/osr-nested3b.js deleted file mode 100644 index a10d328e035..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-nested3b.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function f() { - var sum = 0; - for (var m = 99; m < 100; m++) { - for (var i = 5; i < 6; i++) { - for (var j = 0; j < 1000; j++) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - if (i == 25) %OptimizeOsr(); - } - if (true) break; - } - if (true) break; - } - return sum; -} - - -assertEquals(15000, f()); -assertEquals(15000, f()); -assertEquals(15000, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-one.js b/implementation-contributed/v8/mjsunit/compiler/osr-one.js deleted file mode 100644 index d52a1c80896..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-one.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr --allow-natives-syntax - -function f(x) { - var sum = 0; - var count = 10; - while (count > 0) { - sum += x; - count--; - if (count == 5) { - %OptimizeOsr(); - } - } - return sum; -} - -assertEquals(50, f(5)); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-regex-id.js b/implementation-contributed/v8/mjsunit/compiler/osr-regex-id.js deleted file mode 100644 index e0b4dad1dcf..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-regex-id.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function id(f) { return f; } - -function foo(a) { - var r = /\0/; - for (var i = 0; i < 10; i++) { - if (a) %OptimizeOsr(); - } - return r; -} - -function bar(a) { - for (var i = 0; i < 10; i++) { - if (a) %OptimizeOsr(); - var r = /\0/; - } - return r; -} - -function baz(a) { - for (var i = 0; i < 10; i++) { - if (a) %OptimizeOsr(); - } - return /\0/; -} - -function qux(a) { - for (var i = 0; i < 10; i++) { - if (i > 5 && a) { - %OptimizeOsr(); - } else { - var r = /\0/; - } - } - return r; -} - -function test(f) { - // Test the reference equality of regex's created in OSR'd function. - var x = f(false); - assertEquals(x, f(true)); - assertEquals(x, f(true)); - assertEquals(x, f(true)); -} - -test(foo); -test(bar); -test(baz); -test(qux); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-regress-max-locals.js b/implementation-contributed/v8/mjsunit/compiler/osr-regress-max-locals.js deleted file mode 100644 index cc150edfd7d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-regress-max-locals.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var limit = %RunningInSimulator() ? 10000 : 10000000; - -function f() { - var a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, - a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, - a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, - a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, - a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, - a61, a62, a63, a64; - for (a1 = 0; a1 < limit; a1++) a2 = 23; -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-sar.js b/implementation-contributed/v8/mjsunit/compiler/osr-sar.js deleted file mode 100644 index 02684f088c8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-sar.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --use-osr - -function test() { - // Loop to force OSR. - var j = 0; - for (var i = 0; i < 80000; i++) { - j++; - } - - function SarShr(val) { - return val >> (-2 >>> 0); - } - - var K3 = 0x80000000; - assertEquals(-2, SarShr(K3 | 0)); - assertEquals(-2, SarShr(K3 | 0)); - %OptimizeFunctionOnNextCall(SarShr); - assertEquals(-2, SarShr(K3 | 0)); -} - -test(); -//test(); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-simple.js b/implementation-contributed/v8/mjsunit/compiler/osr-simple.js deleted file mode 100644 index ddbc5f8867f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-simple.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -function f() { - var sum = 0; - for (var i = 0; i < 1000; i++) { - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - if (i == 11) %OptimizeOsr(); - } - return sum; -} - - -for (var i = 0; i < 2; i++) { - assertEquals(509500, f()); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-top1.js b/implementation-contributed/v8/mjsunit/compiler/osr-top1.js deleted file mode 100644 index 742b71d86e5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-top1.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr --allow-natives-syntax - -var sum = 0; -for (var i = 0; i < 10000; i++) { - if (i == 100) %OptimizeOsr(); - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; -} - -assertEquals(50095000, sum); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-top2.js b/implementation-contributed/v8/mjsunit/compiler/osr-top2.js deleted file mode 100644 index a15aa15d04c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-top2.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr --allow-natives-syntax - -for (var j = 0; j < 3; j++) { - var sum = 0; - for (var i = 0; i < 1000; i++) { - if (i == 100) %OptimizeOsr(); - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - } - assertEquals(509500, sum); -} - -assertEquals(509500, sum); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-top3.js b/implementation-contributed/v8/mjsunit/compiler/osr-top3.js deleted file mode 100644 index 4c4a364be0c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-top3.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr --allow-natives-syntax - -for (var k = 0; k < 2; k++) { - for (var j = 0; j < 3; j++) { - var sum = 0; - for (var i = 0; i < 1000; i++) { - if (i == 100) %OptimizeOsr(); - var x = i + 2; - var y = x + 5; - var z = y + 3; - sum += z; - } - assertEquals(509500, sum); - } - assertEquals(509500, sum); -} - -assertEquals(509500, sum); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-try-catch.js b/implementation-contributed/v8/mjsunit/compiler/osr-try-catch.js deleted file mode 100644 index 9924e88d559..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-try-catch.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// This tests checks some possible wrong exception handling due to, -// for instance, the OSR loop peeling. If exception handlers are not updated -// correctly, when we run the second iteration of the outermost loop, which -// is the OSR optimised version, the try-catch will fail... which should not -// fail on a correct code. - -function SingleLoop() { - for (var a = 0; a < 2; a++) { - try { throw 'The exception should have been caught.'; } - catch(e) {} - for (var b = 0; b < 1; b++) { - %OptimizeOsr(); - } - } -} - - -// These function could also fail if the exception handlers are not updated at -// the right time: a JSStackCheck gets created for the print, just after the -// bytecode for the while LoopHeader. If the OSR phase did not exit properly -// the exception before visiting the bytecode for the print, it will fail -// because some IfSuccess gets created for nothing (the IfException will -// become dead code and removed). -function EmptyBody() { - try {; } catch(e) {; } - var a = 0; - while (1) { - %OptimizeOsr(); - print("foo"); - - if (a == 1) break; - a++; - } -} - -function NestedLoops() { - for (var a = 0; a < 2; a++) { - try {; } catch(e) {; } - %OptimizeOsr(); - var b = 0; - while (1) { - print("bar"); - - if (b == 1) break; - b++; - } - } -} - - -SingleLoop(); -EmptyBody(); -NestedLoops(); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-two.js b/implementation-contributed/v8/mjsunit/compiler/osr-two.js deleted file mode 100644 index 36842b4beb9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-two.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --use-osr --allow-natives-syntax - -function f(x) { - var sum = 0; - var outer = 10; - while (outer > 0) { - var inner = 10; - while (inner > 0) { - sum += x; - inner--; - if (inner == 5) { - %OptimizeOsr(); - } - } - outer--; - } - return sum; -} - -assertEquals(500, f(5)); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-uint32.js b/implementation-contributed/v8/mjsunit/compiler/osr-uint32.js deleted file mode 100644 index d6fcae546cf..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-uint32.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Loop to force OSR. -var j = 0; -for (var i = 0; i < 80000; i++) { - j++; -} - -function SarShr(val) { - return val >> (-2 >>> 0); -} - -var K3 = 0x80000000; -assertEquals(-2, SarShr(K3 | 0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-warm.js b/implementation-contributed/v8/mjsunit/compiler/osr-warm.js deleted file mode 100644 index 73e1fd5cd27..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-warm.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --use-osr - -function f1(x) { - while (x > 0) { - x--; - } - return x; -} - -assertEquals(0, f1(1)); -assertEquals(0, f1(200000)); - -function f2(x) { - var sum = 1; - while (x > 0) { - x--; - sum++; - } - return sum; -} - -assertEquals(2, f2(1)); -assertEquals(200001, f2(200000)); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-while-let.js b/implementation-contributed/v8/mjsunit/compiler/osr-while-let.js deleted file mode 100644 index 11ebc4bb353..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-while-let.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -"use strict"; - -function test(expected, func) { - assertEquals(expected, func()); - assertEquals(expected, func()); - assertEquals(expected, func()); -} - -function foo() { - var result = 0; - { - let x = 0; - var temp_x = x; - var first = 1; - outer: while (true) { - let x = temp_x; - if (first == 1) first = 0; - else x = x + 1 | 0; - var flag = 1; - for (; flag == 1; (flag = 0, temp_x = x)) { - if (x < 2) { - result = x; %OptimizeOsr(); - } else { - break outer; - } - } - if (flag == 1) break; - } - } - return result; -} - -test(1, foo); - - -function smo() { - var result = 0; - { - let x = 11; - outer: while (true) { - let y = x; - for (var i = 0; i < 5; i++) { - %OptimizeOsr(); - if (i) break outer; - else result = y; - } - } - } - return result; -} - -test(11, smo); diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-with-args.js b/implementation-contributed/v8/mjsunit/compiler/osr-with-args.js deleted file mode 100644 index 4817ad7d444..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/osr-with-args.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --use-osr - -function f() { - var sum = 0; - for (var i = 0; i < 100000; i++) { - var t = arguments[0] + 2; - var x = arguments[1] + 2; - var y = t + x + 5; - var z = y + 3; - sum += z; - } - return sum; -} - -for (var i = 0; i < 3; i++) { - assertEquals(1700000, f(2, 3)); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/phi-representations.js b/implementation-contributed/v8/mjsunit/compiler/phi-representations.js deleted file mode 100644 index 6d11bb0d8ea..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/phi-representations.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function ar() { - var r = undefined; - var f = 1; - while (f--) { - r = (typeof r === 'undefined') ? 0.1 : r; - }; - return (r - r); -} - -assertEquals(0, ar()); -assertEquals(0, ar()); -%OptimizeFunctionOnNextCall(ar); -assertEquals(0, ar()); - -function ar2() { - var r = undefined; - var f = 1; - while (f--) { - r = r === undefined ? 0.1 : r; - }; - return (r - r); -} - -assertEquals(0, ar2()); -assertEquals(0, ar2()); -%OptimizeFunctionOnNextCall(ar2); -assertEquals(0, ar2()); diff --git a/implementation-contributed/v8/mjsunit/compiler/pic.js b/implementation-contributed/v8/mjsunit/compiler/pic.js deleted file mode 100644 index f5b136ce91d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/pic.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function GetX(o) { return o.x; } -function CallF(o) { return o.f(); } -function SetX(o) { o.x = 42; } -function SetXY(o,y) { return o.x = y; } - - -function Test(o) { - SetX(o); - assertEquals(42, GetX(o)); - assertEquals(87, SetXY(o, 87)); - assertEquals(87, GetX(o)); - assertTrue(SetXY(o, o) === o); - assertTrue(o === GetX(o), "o === GetX(o)"); - assertEquals("hest", SetXY(o, "hest")); - assertEquals("hest", GetX(o)); - assertTrue(SetXY(o, Test) === Test); - assertTrue(Test === GetX(o), "Test === GetX(o)"); - assertEquals(99, CallF(o)); -} - -// Create a bunch of objects with different layouts. -var o1 = { x: 0, y: 1 }; -var o2 = { y: 1, x: 0 }; -var o3 = { y: 1, z: 2, x: 0 }; -o1.f = o2.f = o3.f = function() { return 99; } - -// Run the test until we're fairly sure we've optimized the -// polymorphic property access. -for (var i = 0; i < 5; i++) { - Test(o1); - Test(o2); - Test(o3); -} -%OptimizeFunctionOnNextCall(Test); -Test(o1); -Test(o2); -Test(o3); - -// Make sure that the following doesn't crash. -GetX(0); -SetX(0); -SetXY(0, 0); -assertThrows("CallF(0)", TypeError); diff --git a/implementation-contributed/v8/mjsunit/compiler/polymorphic-symbols.js b/implementation-contributed/v8/mjsunit/compiler/polymorphic-symbols.js deleted file mode 100644 index e954d50fa84..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/polymorphic-symbols.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - const symbol = Symbol('symbol'); - const OBJS = [ - {[symbol]: 0, a: 1}, - {[symbol]: 1, b: 2}, - {[symbol]: 2, c: 3}, - {[symbol]: 3, d: 4} - ]; - function foo(o) { return o[symbol]; } - for (let i = 0; i < OBJS.length; ++i) { - assertEquals(i, foo(OBJS[i])); - assertEquals(i, foo(OBJS[i])); - } - %OptimizeFunctionOnNextCall(foo); - for (let i = 0; i < OBJS.length; ++i) { - assertEquals(i, foo(OBJS[i])); - assertEquals(i, foo(OBJS[i])); - } -})(); - -(function() { - const symbol = Symbol('symbol'); - const OBJS = [ - {[symbol]: 0, a: 1}, - {[symbol]: 1, b: 2}, - {[symbol]: 2, c: 3}, - {[symbol]: 3, d: 4} - ]; - function foo(o) { o[symbol] = o; } - for (let i = 0; i < OBJS.length; ++i) { - foo(OBJS[i]); - foo(OBJS[i]); - } - %OptimizeFunctionOnNextCall(foo); - for (let i = 0; i < OBJS.length; ++i) { - foo(OBJS[i]); - foo(OBJS[i]); - } - for (const o of OBJS) { - assertEquals(o, o[symbol]); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-capability-default-closures.js b/implementation-contributed/v8/mjsunit/compiler/promise-capability-default-closures.js deleted file mode 100644 index f4d8cd4e5df..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-capability-default-closures.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - var resolve, value; - (new Promise(r => resolve = r)).then(v => value = v); - function foo() { resolve(1); } - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); - setTimeout(_ => assertEquals(1, value)); -})(); - -(function() { - var reject, value; - (new Promise((_, r) => reject = r)).catch(v => value = v); - function foo() { reject(1); } - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); - setTimeout(_ => assertEquals(1, value)); -})(); - -(function() { - var value; - function foo(x) { return new Promise((resolve, reject) => resolve(x)); } - foo(1); - foo(1); - %OptimizeFunctionOnNextCall(foo); - foo(1).then(v => value = v); - setTimeout(_ => assertEquals(1, value)); -})(); - -(function() { - var value; - function foo(x) { return new Promise((resolve, reject) => reject(x)); } - foo(1); - foo(1); - %OptimizeFunctionOnNextCall(foo); - foo(1).catch(v => value = v); - setTimeout(_ => assertEquals(1, value)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-constructor.js b/implementation-contributed/v8/mjsunit/compiler/promise-constructor.js deleted file mode 100644 index ee069fbca2e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-constructor.js +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --experimental-inline-promise-constructor - -// We have to patch mjsunit because normal assertion failures just throw -// exceptions which are swallowed in a then clause. -failWithMessage = (msg) => %AbortJS(msg); - -// Don't crash. -(function() { - function foo() { - let resolve, reject, promise; - promise = new Promise((a, b) => { resolve = a; reject = b; }); - - return {resolve, reject, promise}; - } - - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); -})(); - -// Check that when executor is non-callable, the constructor throws. -(function() { - function foo() { - return new Promise(1); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); -})(); - -// Check that when the promise constructor throws because the executor is -// non-callable, the stack contains 'new Promise'. -(function() { - function foo() { - return new Promise(1); - } - - let threw; - try { - threw = false; - foo(); - } catch (e) { - threw = true; - assertContains('new Promise', e.stack); - } finally { - assertTrue(threw); - } - try { - threw = false; - foo(); - } catch (e) { - threw = true; - assertContains('new Promise', e.stack); - } finally { - assertTrue(threw); - } - - %OptimizeFunctionOnNextCall(foo); - try { - threw = false; - foo(); - } catch (e) { - threw = true; - assertContains('new Promise', e.stack); - } finally { - assertTrue(threw); - } -})(); - -// Check that when executor throws, the promise is rejected. -(function() { - function foo() { - return new Promise((a, b) => { throw new Error(); }); - } - - function bar(i) { - let error = null; - foo().then(_ => error = 1, e => error = e); - setTimeout(_ => assertInstanceof(error, Error)); - if (i == 1) %OptimizeFunctionOnNextCall(foo); - if (i > 0) setTimeout(bar.bind(null, i - 1)); - } - bar(3); -})(); - -// Check that when executor causes lazy deoptimization of the inlined -// constructor, we return the promise value and not the return value of the -// executor function itself. -(function() { - function foo() { - let p; - try { - p = new Promise((a, b) => { %DeoptimizeFunction(foo); }); - } catch (e) { - // Nothing should throw - assertUnreachable(); - } - assertInstanceof(p, Promise); - } - - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); -})(); - -// The same as above, except that the executor function also creates a promise -// and both executor functions cause a lazy deopt of the calling function. -(function() { - function executor(a, b) { - %DeoptimizeFunction(foo); - let p = new Promise((a, b) => { %DeoptimizeFunction(executor); }); - } - function foo() { - let p; - try { - p = new Promise(executor); - } catch (e) { - // Nothing should throw - assertUnreachable(); - } - assertInstanceof(p, Promise); - } - - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); -})(); - -// Check that when the executor causes lazy deoptimization of the inlined -// constructor, and then throws, the deopt continuation catches and then calls -// the reject function instead of propagating the exception. -(function() { - function foo() { - let p; - try { - p = new Promise((a, b) => { - %DeoptimizeFunction(foo); - throw new Error(); - }); - } catch (e) { - // The promise constructor should catch the exception and reject the - // promise instead. - assertUnreachable(); - } - assertInstanceof(p, Promise); - } - - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); -})(); - - -// Check that when the promise constructor is marked for lazy deoptimization -// from below, but not immediatelly deoptimized, and then throws, the deopt continuation -// catches and calls the reject function instead of propagating the exception. -(function() { - function foo() { - let p; - try { - p = new Promise((resolve, reject) => { bar(); resolve()}); - } catch (e) { - // The promise constructor should catch the exception and reject the - // promise instead. - assertUnreachable(); - } - assertInstanceof(p, Promise); - } - - function bar() { - %DeoptimizeFunction(foo); - throw new Error(); - } - %NeverOptimizeFunction(bar); - - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); -})(); - -// Test when the executor is not inlined. -(function() { - let resolve, reject, promise; - function bar(a, b) { - resolve = a; reject = b; - throw new Error(); - } - function foo() { - promise = new Promise(bar); - } - foo(); - foo(); - %NeverOptimizeFunction(bar); - %OptimizeFunctionOnNextCall(foo); - foo(); -})(); - -// Test that the stack trace contains 'new Promise' -(function() { - let resolve, reject, promise; - function bar(a, b) { - resolve = a; reject = b; - let stack = new Error().stack; - assertContains("new Promise", stack); - throw new Error(); - } - function foo() { - promise = new Promise(bar); - } - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-custom-then-1.js b/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-custom-then-1.js deleted file mode 100644 index d3bd0b85433..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-custom-then-1.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(p) { return p.catch(x => x); } - -const a = Promise.resolve(1); - -foo(a); -foo(a); -%OptimizeFunctionOnNextCall(foo); -foo(a); - -let custom_then_called = false; -a.__proto__.then = function() { custom_then_called = true; } -foo(a); -assertTrue(custom_then_called); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-custom-then-2.js b/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-custom-then-2.js deleted file mode 100644 index 0d3f34db28a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-custom-then-2.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(p) { return p.catch(x => x); } - -const a = Promise.resolve(1); - -foo(a); -foo(a); -%OptimizeFunctionOnNextCall(foo); -foo(a); - -let custom_then_called = false; -a.then = function() { custom_then_called = true; } -foo(a); -assertTrue(custom_then_called); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-subclass.js b/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-subclass.js deleted file mode 100644 index 5aadaada812..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch-subclass.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let custom_then_called = false; - -function foo(p) { - custom_then_called = false; - p.catch(x => x); - return custom_then_called; -} - -class MyPromise extends Promise { - then(onFulfilled, onRejected) { - custom_then_called = true; - return super.then(onFulfilled, onRejected); - } -} - -const a = MyPromise.resolve(1); - -assertTrue(foo(a)); -assertTrue(foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(a)); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch.js b/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch.js deleted file mode 100644 index eae343fd2e8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-catch.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo(p) { return p.catch(); } - foo(Promise.resolve(1)); - foo(Promise.resolve(1)); - %OptimizeFunctionOnNextCall(foo); - foo(Promise.resolve(1)); -})(); - -(function() { - function foo(p) { return p.catch(foo); } - foo(Promise.resolve(1)); - foo(Promise.resolve(1)); - %OptimizeFunctionOnNextCall(foo); - foo(Promise.resolve(1)); -})(); - -(function() { - function foo(p) { return p.catch(foo, undefined); } - foo(Promise.resolve(1)); - foo(Promise.resolve(1)); - %OptimizeFunctionOnNextCall(foo); - foo(Promise.resolve(1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-custom-then-1.js b/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-custom-then-1.js deleted file mode 100644 index a6987d446fe..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-custom-then-1.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(p) { return p.finally(x => x); } - -const a = Promise.resolve(1); - -foo(a); -foo(a); -%OptimizeFunctionOnNextCall(foo); -foo(a); - -let custom_then_called = false; -a.__proto__.then = function() { custom_then_called = true; } -foo(a); -assertTrue(custom_then_called); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-custom-then-2.js b/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-custom-then-2.js deleted file mode 100644 index 5bad54a61d9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-custom-then-2.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(p) { return p.finally(x => x); } - -const a = Promise.resolve(1); - -foo(a); -foo(a); -%OptimizeFunctionOnNextCall(foo); -foo(a); - -let custom_then_called = false; -a.then = function() { custom_then_called = true; } -foo(a); -assertTrue(custom_then_called); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-subclass.js b/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-subclass.js deleted file mode 100644 index ff5657f6cba..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally-subclass.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let custom_then_called = false; - -function foo(p) { - custom_then_called = false; - p.finally(x => x); - return custom_then_called; -} - -class MyPromise extends Promise { - then(onFulfilled, onRejected) { - custom_then_called = true; - return super.then(onFulfilled, onRejected); - } -} - -const a = MyPromise.resolve(1); - -assertTrue(foo(a)); -assertTrue(foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(a)); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally.js b/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally.js deleted file mode 100644 index 6060f7b857a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-finally.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - const p = Promise.resolve(1); - function foo(p) { return p.finally(); } - foo(p); - foo(p); - %OptimizeFunctionOnNextCall(foo); - foo(p); -})(); - -(function() { - const p = Promise.resolve(1); - function foo(p) { return p.finally(x => x); } - foo(p); - foo(p); - %OptimizeFunctionOnNextCall(foo); - foo(p); -})(); - -(function() { - const p = Promise.resolve(1); - function foo(p, f) { return p.finally(f); } - foo(p, x => x); - foo(p, x => x); - %OptimizeFunctionOnNextCall(foo); - foo(p, x => x); -})(); - -(function() { - const p = Promise.resolve(1); - function foo(p, f) { return p.finally(f).finally(f); } - foo(p, x => x); - foo(p, x => x); - %OptimizeFunctionOnNextCall(foo); - foo(p, x => x); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-then.js b/implementation-contributed/v8/mjsunit/compiler/promise-prototype-then.js deleted file mode 100644 index caf77708b64..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-prototype-then.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - const p = Promise.resolve(1); - function foo(p) { return p.then(); } - foo(p); - foo(p); - %OptimizeFunctionOnNextCall(foo); - foo(p); -})(); - -(function() { - const p = Promise.resolve(1); - function foo(p) { return p.then(x => x); } - foo(p); - foo(p); - %OptimizeFunctionOnNextCall(foo); - foo(p); -})(); - -(function() { - const p = Promise.resolve(1); - function foo(p) { return p.then(x => x, y => y); } - foo(p); - foo(p); - %OptimizeFunctionOnNextCall(foo); - foo(p); -})(); - -(function() { - const p = Promise.resolve(1); - function foo(p, f) { return p.then(f, f); } - foo(p, x => x); - foo(p, x => x); - %OptimizeFunctionOnNextCall(foo); - foo(p, x => x); -})(); - -(function() { - const p = Promise.resolve(1); - function foo(p, f) { return p.then(f, f).then(f, f); } - foo(p, x => x); - foo(p, x => x); - %OptimizeFunctionOnNextCall(foo); - foo(p, x => x); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-resolve-stable-maps.js b/implementation-contributed/v8/mjsunit/compiler/promise-resolve-stable-maps.js deleted file mode 100644 index 7acd891b9b4..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-resolve-stable-maps.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --noalways-opt - -// Test that JSResolvePromise takes a proper stability dependency -// on the resolutions map if the infer receiver maps are unreliable -// (as is the case for HeapConstants). -(function() { - // We need an object literal which gets a stable map initially. - function makeObjectWithStableMap() { - return {a:1, b:1, c:1}; - } - const a = makeObjectWithStableMap(); - - function foo() { - return Promise.resolve(a); - } - - assertInstanceof(foo(), Promise); - assertInstanceof(foo(), Promise); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), Promise); - assertOptimized(foo); - - // Now invalidate the stability of a's map. - const b = makeObjectWithStableMap(); - b.d = 1; - - // This should deoptimize foo. - assertUnoptimized(foo); -})(); - -// Same test with async functions. -(function() { - // We need an object literal which gets a stable map initially, - // it needs to be different from the above, otherwise the map - // is already not stable when we get here. - function makeObjectWithStableMap() { - return {x:1, y:1}; - } - const a = makeObjectWithStableMap(); - - async function foo() { - return a; - } - - assertInstanceof(foo(), Promise); - assertInstanceof(foo(), Promise); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), Promise); - assertOptimized(foo); - - // Now invalidate the stability of a's map. - const b = makeObjectWithStableMap(); - b.z = 1; - - // This should deoptimize foo. - assertUnoptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-resolve.js b/implementation-contributed/v8/mjsunit/compiler/promise-resolve.js deleted file mode 100644 index 13cb0fa0a35..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-resolve.js +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertFulfilledWith(expected, thenable) { - assertPromiseResult(thenable, v => assertEquals(expected, v)); -} - -(function() { - function foo() { return Promise.resolve(); } - assertFulfilledWith(undefined, foo()); - assertFulfilledWith(undefined, foo()); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(undefined, foo()); -})(); - -(function() { - function foo(x) { return Promise.resolve(x); } - assertFulfilledWith(3, foo(3)); - assertFulfilledWith(3, foo(3)); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(3, foo(3)); -})(); - -(function() { - function foo(x, y) { return Promise.resolve(x, y); } - assertFulfilledWith(1, foo(1, 0)); - assertFulfilledWith(2, foo(2, 1)); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(3, foo(3, 2)); -})(); - -(function() { - function foo(x) { return Promise.resolve({x}); } - assertFulfilledWith({x:1}, foo(1)); - assertFulfilledWith({x:2}, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith({x:3}, foo(3)); -})(); - -(function() { - function foo(x) { return Promise.resolve(Promise.resolve(x)); } - assertFulfilledWith(null, foo(null)); - assertFulfilledWith('a', foo('a')); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(42, foo(42)); -})(); - -(function() { - const thenable = new class Thenable { - then(fulfill, reject) { - fulfill(1); - } - }; - function foo() { return Promise.resolve(thenable); } - assertFulfilledWith(1, foo()); - assertFulfilledWith(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(1, foo()); -})(); - -(function() { - const MyPromise = class MyPromise extends Promise {}; - - (function() { - function foo() { return MyPromise.resolve(); } - assertFulfilledWith(undefined, foo()); - assertFulfilledWith(undefined, foo()); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(undefined, foo()); - })(); - - (function() { - function foo(x) { return MyPromise.resolve(x); } - assertFulfilledWith(3, foo(3)); - assertFulfilledWith(3, foo(3)); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(3, foo(3)); - })(); - - (function() { - function foo(x, y) { return MyPromise.resolve(x, y); } - assertFulfilledWith(1, foo(1, 0)); - assertFulfilledWith(2, foo(2, 1)); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(3, foo(3, 2)); - })(); - - (function() { - function foo(x) { return MyPromise.resolve({x}); } - assertFulfilledWith({x:1}, foo(1)); - assertFulfilledWith({x:2}, foo(2)); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith({x:3}, foo(3)); - })(); - - (function() { - function foo(x) { return MyPromise.resolve(Promise.resolve(x)); } - assertFulfilledWith(null, foo(null)); - assertFulfilledWith('a', foo('a')); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(42, foo(42)); - })(); - - (function() { - const thenable = new class Thenable { - then(fulfill, reject) { - fulfill(1); - } - }; - function foo() { return MyPromise.resolve(thenable); } - assertFulfilledWith(1, foo()); - assertFulfilledWith(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertFulfilledWith(1, foo()); - })(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/promise-species.js b/implementation-contributed/v8/mjsunit/compiler/promise-species.js deleted file mode 100644 index f029e3aad5b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/promise-species.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class Foo extends Promise {}; - -function f() { - return new Promise(r => 88).then(x => 88); -} - -let y; - -y = f(); -assertFalse(y instanceof Foo); - -y = f(); -assertFalse(y instanceof Foo); - -%OptimizeFunctionOnNextCall(f); - -y = f(); -assertFalse(y instanceof Foo); - -assertTrue(Reflect.defineProperty(Promise, Symbol.species, {value: Foo})); - -y = f(); -assertInstanceof(y, Foo); diff --git a/implementation-contributed/v8/mjsunit/compiler/property-calls.js b/implementation-contributed/v8/mjsunit/compiler/property-calls.js deleted file mode 100644 index ad5ca81bfd6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/property-calls.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(o) { return o.g(); } -function g() { return 42; } - -var object = { }; -object.g = g; -for (var i = 0; i < 5; i++) f(object); -%OptimizeFunctionOnNextCall(f); -f(object); -assertEquals(42, f(object)); - -object = { g: function() { return 87; } }; -assertEquals(87, f(object)); diff --git a/implementation-contributed/v8/mjsunit/compiler/property-refs.js b/implementation-contributed/v8/mjsunit/compiler/property-refs.js deleted file mode 100644 index 6f1f19f0a69..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/property-refs.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function Load(o) { - return o.outer.x | o.outer.inner.y; -} - -function StoreXY(o, x, y) { - o.outer.x = x; - o.outer.inner.y = y; -} - -function LoadXY(x, y) { - var object = { - outer: { - x: 0, - inner: { y: 0 } - } - }; - StoreXY(object, x, y); - return Load(object); -} - -for (var i = 0; i < 5; i++) LoadXY(i, i); -%OptimizeFunctionOnNextCall(LoadXY); -LoadXY(6, 6); -assertEquals(42 | 87, LoadXY(42, 87)); -assertEquals(42 | 87, LoadXY(42, 87)); -assertEquals(42 | 99, LoadXY(42, "99")); diff --git a/implementation-contributed/v8/mjsunit/compiler/property-simple.js b/implementation-contributed/v8/mjsunit/compiler/property-simple.js deleted file mode 100644 index b0f0ffa6ef2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/property-simple.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test for property access - -var a; -var b; - -code = "a = {x:8, y:9}; a.x"; - -assertEquals(8, eval(code)); - -code = "b = {z:a}; b.z.y"; - -assertEquals(9, eval(code)); diff --git a/implementation-contributed/v8/mjsunit/compiler/property-static.js b/implementation-contributed/v8/mjsunit/compiler/property-static.js deleted file mode 100644 index 07021340cd7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/property-static.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test usage of static type information for loads that would otherwise -// turn into polymorphic or generic loads. - -// Prepare a highly polymorphic load to be used by all tests. -Object.prototype.load = function() { return this.property; }; -Object.prototype.load.call({ A:0, property:10 }); -Object.prototype.load.call({ A:0, B:0, property:11 }); -Object.prototype.load.call({ A:0, B:0, C:0, property:12 }); -Object.prototype.load.call({ A:0, B:0, C:0, D:0, property:13 }); -Object.prototype.load.call({ A:0, B:0, C:0, D:0, E:0, property:14 }); -Object.prototype.load.call({ A:0, B:0, C:0, D:0, E:0, F:0, property:15 }); - -// Test for object literals. -(function() { - function f(x) { - var object = { property:x }; - return object.load(); - } - - assertSame(1, f(1)); - assertSame(2, f(2)); - %OptimizeFunctionOnNextCall(f); - assertSame(3, f(3)); -})(); - -// Test for inlined constructors. -(function() { - function c(x) { - this.property = x; - } - function f(x) { - var object = new c(x); - return object.load(); - } - - assertSame(1, f(1)); - assertSame(2, f(2)); - %OptimizeFunctionOnNextCall(f); - assertSame(3, f(3)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/property-stores.js b/implementation-contributed/v8/mjsunit/compiler/property-stores.js deleted file mode 100644 index 4ffac07ad0f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/property-stores.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = 42; - -var obj = {x: 0, - f: function() { this.x = 7; }, - g: function() { this.x = a | 1; }, - h: function() { this.x = a; }}; - -var i; -for (i = 0; i < 5; i++) { obj.f(); } -%OptimizeFunctionOnNextCall(obj.f); -obj.f(); -assertEquals(7, obj.x); - -for (i = 0; i < 5; i++) { obj.g(); } -%OptimizeFunctionOnNextCall(obj.g); -obj.g(); -assertEquals(43, obj.x); - -for (i = 0; i < 5; i++) { obj.h(); } -%OptimizeFunctionOnNextCall(obj.h); -obj.h(); -assertEquals(42, obj.x); diff --git a/implementation-contributed/v8/mjsunit/compiler/proto-chain-constant.js b/implementation-contributed/v8/mjsunit/compiler/proto-chain-constant.js deleted file mode 100644 index 0d9e3b0e1e1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/proto-chain-constant.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test loading a constant function on the prototype chain. - -var c = Object.create; -var obj4 = c(null, { f4: { value: function() { return 4; }, writable: true }}); -var obj3 = c(obj4, { f3: { value: function() { return 3; }, writable: true }}); -var obj2 = c(obj3, { f2: { value: function() { return 2; }, writable: true }}); -var obj1 = c(obj2, { f1: { value: function() { return 1; }, writable: true }}); -var obj0 = c(obj1, { f0: { value: function() { return 0; }, writable: true }}); - -function get4(obj) { return obj.f4; } - -assertEquals(4, get4(obj0)()); -assertEquals(4, get4(obj0)()); -%OptimizeFunctionOnNextCall(get4); -assertEquals(4, get4(obj0)()); -obj4.f4 = function() { return 5; }; -assertEquals(5, get4(obj0)()); - -function get3(obj) { return obj.f3; } - -assertEquals(3, get3(obj0)()); -assertEquals(3, get3(obj0)()); -%OptimizeFunctionOnNextCall(get3); -assertEquals(3, get3(obj0)()); -obj2.f3 = function() { return 6; }; -assertEquals(6, get3(obj0)()); diff --git a/implementation-contributed/v8/mjsunit/compiler/proto-chain-load.js b/implementation-contributed/v8/mjsunit/compiler/proto-chain-load.js deleted file mode 100644 index 60c6431d2b1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/proto-chain-load.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test HLoadNamedField on the proto chain. - -var obj4 = Object.create(null, { f4: {value: 4} }); -var obj3 = Object.create(obj4, { f3: {value: 3} }); -var obj2 = Object.create(obj3, { f2: {value: 2} }); -var obj1 = Object.create(obj2, { f1: {value: 1} }); -var obj0 = Object.create(obj1, { f0: {value: 0} }); - -function get4(obj) { return obj.f4; } - -assertEquals(4, get4(obj0)); -assertEquals(4, get4(obj0)); -%OptimizeFunctionOnNextCall(get4); -assertEquals(4, get4(obj0)); -assertEquals(4, get4(obj0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/receiver-conversion.js b/implementation-contributed/v8/mjsunit/compiler/receiver-conversion.js deleted file mode 100644 index c3f807a4224..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/receiver-conversion.js +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// This test suite checks that the receiver value (i.e. the 'this' binding) is -// correctly converted even when the callee function is inlined. This behavior -// is specified by ES6, section 9.2.1.2 "OrdinaryCallBindThis". - -var global = this; -function test(outer, inner, check) { - check(outer()); - check(outer()); - %OptimizeFunctionOnNextCall(outer); - check(outer()); -} - - -// ----------------------------------------------------------------------------- -// Test undefined in sloppy mode. -(function UndefinedSloppy() { - function check(x) { - assertEquals("object", typeof x); - assertSame(global, x); - } - function inner(x) { - return this; - } - function outer() { - return sloppy(); - } - global.sloppy = inner; - test(outer, inner, check); -})(); - - -// ----------------------------------------------------------------------------- -// Test undefined in strict mode. -(function UndefinedStrict() { - function check(x) { - assertEquals("undefined", typeof x); - assertSame(undefined, x); - } - function inner(x) { - "use strict"; - return this; - } - function outer() { - return strict(); - } - global.strict = inner; - test(outer, inner, check); -})(); - - -// ----------------------------------------------------------------------------- -// Test primitive number in sloppy mode. -(function NumberSloppy() { - function check(x) { - assertEquals("object", typeof x); - assertInstanceof(x, Number); - } - function inner(x) { - return this; - } - function outer() { - return (0).sloppy(); - } - Number.prototype.sloppy = inner; - test(outer, inner, check); -})(); - - -// ----------------------------------------------------------------------------- -// Test primitive number in strict mode. -(function NumberStrict() { - function check(x) { - assertEquals("number", typeof x); - assertSame(0, x); - } - function inner(x) { - "use strict"; - return this; - } - function outer() { - return (0).strict(); - } - Number.prototype.strict = inner; - test(outer, inner, check); -})(); - - -// ----------------------------------------------------------------------------- -// Test primitive string in sloppy mode. -(function StringSloppy() { - function check(x) { - assertEquals("object", typeof x); - assertInstanceof(x, String); - } - function inner(x) { - return this; - } - function outer() { - return ("s").sloppy(); - } - String.prototype.sloppy = inner; - test(outer, inner, check); -})(); - - -// ----------------------------------------------------------------------------- -// Test primitive string in strict mode. -(function StringStrict() { - function check(x) { - assertEquals("string", typeof x); - assertSame("s", x); - } - function inner(x) { - "use strict"; - return this; - } - function outer() { - return ("s").strict(); - } - String.prototype.strict = inner; - test(outer, inner, check); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/recursive-deopt.js b/implementation-contributed/v8/mjsunit/compiler/recursive-deopt.js deleted file mode 100644 index c921ade65ae..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/recursive-deopt.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(n) { - // Force deopt in both leaf case and when returning. To make - // debugging easier, the operation that bails out (<<) is so simple - // that it doesn't cause GCs. - if (n == 0) return 1 << one; - return f(n - 1) << one; -} - - -var one = 1; -for (var i = 0; i < 5; i++) assertEquals(1 << 5, f(4)); -%OptimizeFunctionOnNextCall(f); -assertEquals(1 << 5, f(4)); - -var one = { valueOf: function() { return 1; } }; -assertEquals(1 << 5, f(4)); diff --git a/implementation-contributed/v8/mjsunit/compiler/redundancy-elimination.js b/implementation-contributed/v8/mjsunit/compiler/redundancy-elimination.js deleted file mode 100644 index 1e5185adb78..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/redundancy-elimination.js +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Test the RedundancyElimination::ReduceSpeculativeNumberOperation() -// TurboFan optimization for the case of SpeculativeNumberAdd with -// Number feedback. -(function() { - function bar(i) { - return ++i; - } - bar(0.1); - - function foo(a, i) { - const x = a[i]; - const y = a[bar(i)]; - return x + y; - } - - assertEquals(3, foo([1, 2], 0)); - assertEquals(3, foo([1, 2], 0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo([1, 2], 0)); -})(); - -// Test the RedundancyElimination::ReduceSpeculativeNumberOperation() -// TurboFan optimization for the case of SpeculativeNumberAdd with -// NumberOrOddball feedback. -(function() { - function bar(i) { - return ++i; - } - assertEquals(NaN, bar(undefined)); - - function foo(a, i) { - const x = a[i]; - const y = a[bar(i)]; - return x + y; - } - - assertEquals(3, foo([1, 2], 0)); - assertEquals(3, foo([1, 2], 0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo([1, 2], 0)); -})(); - -// Test the RedundancyElimination::ReduceSpeculativeNumberOperation() -// TurboFan optimization for the case of SpeculativeNumberSubtract with -// Number feedback. -(function() { - function bar(i) { - return --i; - } - assertEquals(-0.9, bar(0.1)); - - function foo(a, i) { - const x = a[i]; - const y = a[bar(i)]; - return x + y; - } - - assertEquals(3, foo([1, 2], 1)); - assertEquals(3, foo([1, 2], 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo([1, 2], 1)); -})(); - -// Test the RedundancyElimination::ReduceSpeculativeNumberOperation() -// TurboFan optimization for the case of SpeculativeNumberSubtract with -// NumberOrOddball feedback. -(function() { - function bar(i) { - return --i; - } - assertEquals(NaN, bar(undefined)); - - function foo(a, i) { - const x = a[i]; - const y = a[bar(i)]; - return x + y; - } - - assertEquals(3, foo([1, 2], 1)); - assertEquals(3, foo([1, 2], 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo([1, 2], 1)); -})(); - -// Test the RedundancyElimination::ReduceSpeculativeNumberOperation() -// TurboFan optimization for the case of SpeculativeToNumber. -(function() { - function foo(a, i) { - const x = a[i]; - const y = i++; - return x + y; - } - - assertEquals(1, foo([1, 2], 0)); - assertEquals(1, foo([1, 2], 0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo([1, 2], 0)); -})(); - -// Test the RedundancyElimination::ReduceSpeculativeNumberOperation() -// TurboFan optimization for the case of SpeculativeSafeIntegerAdd. -(function() { - function foo(a, i) { - const x = a[i]; - const y = a[++i]; - return x + y; - } - - assertEquals(3, foo([1, 2], 0)); - assertEquals(3, foo([1, 2], 0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo([1, 2], 0)); -})(); - -// Test the RedundancyElimination::ReduceSpeculativeNumberOperation() -// TurboFan optimization for the case of SpeculativeSafeIntegerSubtract. -(function() { - function foo(a, i) { - const x = a[i]; - const y = a[--i]; - return x + y; - } - - assertEquals(3, foo([1, 2], 1)); - assertEquals(3, foo([1, 2], 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(3, foo([1, 2], 1)); -})(); - -// Test the RedundancyElimination::ReduceSpeculativeNumberComparison() -// TurboFan optimization for the case of SpeculativeNumberEqual. -(function() { - function foo(a, i) { - const x = a[i]; - if (i === 0) return x; - return i; - } - - assertEquals(1, foo([1, 2], 0)); - assertEquals(1, foo([1, 2], 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo([1, 2], 0)); - assertEquals(1, foo([1, 2], 1)); - // Even passing -0 should not deoptimize and - // of course still pass the equality test above. - assertEquals(9, foo([9, 2], -0)); - assertOptimized(foo); -})(); - -// Test the RedundancyElimination::ReduceSpeculativeNumberComparison() -// TurboFan optimization for the case of SpeculativeNumberLessThan. -(function() { - function foo(a, i) { - const x = a[i]; - if (i < 1) return x; - return i; - } - - assertEquals(1, foo([1, 2], 0)); - assertEquals(1, foo([1, 2], 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo([1, 2], 0)); - assertEquals(1, foo([1, 2], 1)); - // Even passing -0 should not deoptimize and - // of course still pass the equality test above. - assertEquals(9, foo([9, 2], -0)); - assertOptimized(foo); -})(); - -// Test the RedundancyElimination::ReduceSpeculativeNumberComparison() -// TurboFan optimization for the case of SpeculativeNumberLessThanOrEqual. -(function() { - function foo(a, i) { - const x = a[i]; - if (i <= 0) return x; - return i; - } - - assertEquals(1, foo([1, 2], 0)); - assertEquals(1, foo([1, 2], 1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo([1, 2], 0)); - assertEquals(1, foo([1, 2], 1)); - // Even passing -0 should not deoptimize and - // of course still pass the equality test above. - assertEquals(9, foo([9, 2], -0)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/reflect-apply.js b/implementation-contributed/v8/mjsunit/compiler/reflect-apply.js deleted file mode 100644 index fb8f201a725..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/reflect-apply.js +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test Reflect.apply with wrong number of arguments. -(function() { - "use strict"; - function bar() { return this; } - function foo() { return Reflect.apply(bar); } - - assertThrows(foo); - assertThrows(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo); -})(); -(function() { - "use strict"; - function bar() { return this; } - function foo() { return Reflect.apply(bar, this); } - - assertThrows(foo); - assertThrows(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo); -})(); -(function() { - "use strict"; - function bar() { return this; } - function foo() { return Reflect.apply(bar, this, arguments, this); } - - assertEquals(42, foo.call(42)); - assertEquals(42, foo.call(42)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(42, foo.call(42)); -})(); - -// Test Reflect.apply within try/catch. -(function() { - "use strict"; - function foo(bar) { - try { - return Reflect.apply(bar, bar, arguments); - } catch (e) { - return 1; - } - } - - assertEquals(1, foo()); - assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo()); -})(); -(function() { - "use strict"; - function foo(bar) { - try { - return Reflect.apply(bar, bar, bar); - } catch (e) { - return 1; - } - } - - assertEquals(1, foo()); - assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo()); -})(); - -// Test proper order of callable check and array-like iteration -// in Reflect.apply. -(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Reflect.apply(undefined, this, dummy); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})(); -(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Reflect.apply(null, this, dummy); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})(); -(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Reflect.apply(null, this, dummy); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/reflect-construct.js b/implementation-contributed/v8/mjsunit/compiler/reflect-construct.js deleted file mode 100644 index fb70ff44123..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/reflect-construct.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test Reflect.construct with wrong number of arguments. -(function() { - "use strict"; - function A() {} - function foo() { return Reflect.construct(A); } - - assertThrows(foo); - assertThrows(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo); -})(); -(function() { - "use strict"; - function A(x) { this.x = x; } - function foo() { return Reflect.construct(A, arguments); } - - assertInstanceof(foo(), A); - assertInstanceof(foo(), A); - assertEquals(1, foo(1).x); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(1, foo(1).x); -})(); -(function() { - "use strict"; - function A(x) { this.x = x; } - function foo() { return Reflect.construct(A, arguments, A, A); } - - assertInstanceof(foo(), A); - assertInstanceof(foo(), A); - assertEquals(1, foo(1).x); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), A); - assertEquals(1, foo(1).x); -})(); - -// Test Reflect.construct within try/catch. -(function() { - "use strict"; - function foo(bar) { - try { - return Reflect.construct(bar, arguments, bar); - } catch (e) { - return 1; - } - } - - assertEquals(1, foo()); - assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo()); -})(); -(function() { - "use strict"; - function foo(bar) { - try { - return Reflect.construct(bar, bar, bar); - } catch (e) { - return 1; - } - } - - assertEquals(1, foo()); - assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo()); -})(); - -// Test proper order of constructor check(s) and array-like iteration. -(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Reflect.construct(undefined, dummy, undefined); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})(); -(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Reflect.construct(undefined, dummy); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})(); -(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Reflect.construct(null, dummy, null); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})();(function() { - var dummy_length_counter = 0; - var dummy = { get length() { ++dummy_length_counter; return 0; } }; - - function foo() { - return Reflect.construct(null, dummy); - } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); - assertEquals(0, dummy_length_counter); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/reflect-get.js b/implementation-contributed/v8/mjsunit/compiler/reflect-get.js deleted file mode 100644 index 0c329e497e8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/reflect-get.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test Reflect.get with wrong (number of) arguments. -(function() { - "use strict"; - function foo() { return Reflect.get(); } - - assertThrows(foo); - assertThrows(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo); -})(); -(function() { - "use strict"; - function foo(o) { return Reflect.get(o); } - - assertEquals(undefined, foo({})); - assertEquals(undefined, foo({})); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo({})); -})(); -(function() { - "use strict"; - function foo(o) { return Reflect.get(o); } - - assertThrows(foo.bind(undefined, 1)); - assertThrows(foo.bind(undefined, undefined)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo.bind(undefined, 'o')); -})(); - -// Test Reflect.get within try/catch. -(function() { - const o = {x: 10}; - "use strict"; - function foo() { - try { - return Reflect.get(o, "x"); - } catch (e) { - return 1; - } - } - - assertEquals(10, foo()); - assertEquals(10, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(10, foo()); -})(); -(function() { - "use strict"; - const o = {}; - function foo(n) { - try { - return Reflect.get(o, n); - } catch (e) { - return 1; - } - } - - assertEquals(1, foo({[Symbol.toPrimitive]() { throw new Error(); }})); - assertEquals(1, foo({[Symbol.toPrimitive]() { throw new Error(); }})); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo({[Symbol.toPrimitive]() { throw new Error(); }})); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/reflect-getprototypeof.js b/implementation-contributed/v8/mjsunit/compiler/reflect-getprototypeof.js deleted file mode 100644 index a5ea89140e8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/reflect-getprototypeof.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var prototype = Object.create(null); -var object = Object.create(prototype); - -function foo() { return Reflect.getPrototypeOf(object); } - -assertSame(prototype, foo()); -assertSame(prototype, foo()); -%OptimizeFunctionOnNextCall(foo); -assertSame(prototype, foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/reflect-has.js b/implementation-contributed/v8/mjsunit/compiler/reflect-has.js deleted file mode 100644 index 2f9ee1b66a8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/reflect-has.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test Reflect.has with wrong (number of) arguments. -(function() { - "use strict"; - function foo() { return Reflect.has(); } - - assertThrows(foo); - assertThrows(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo); -})(); -(function() { - "use strict"; - function foo(o) { return Reflect.has(o); } - - assertFalse(foo({})); - assertFalse(foo({})); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo({})); -})(); -(function() { - "use strict"; - function foo(o) { return Reflect.has(o); } - - assertThrows(foo.bind(undefined, 1)); - assertThrows(foo.bind(undefined, undefined)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo.bind(undefined, 'o')); -})(); - -// Test Reflect.has within try/catch. -(function() { - "use strict"; - function foo() { - try { - return Reflect.has(); - } catch (e) { - return 1; - } - } - - assertEquals(1, foo()); - assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo()); -})(); -(function() { - "use strict"; - const o = {}; - function foo(n) { - try { - return Reflect.has(o, n); - } catch (e) { - return 1; - } - } - - assertEquals(1, foo({[Symbol.toPrimitive]() { throw new Error(); }})); - assertEquals(1, foo({[Symbol.toPrimitive]() { throw new Error(); }})); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo({[Symbol.toPrimitive]() { throw new Error(); }})); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-0.js b/implementation-contributed/v8/mjsunit/compiler/regress-0.js deleted file mode 100644 index df6dfeed977..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-0.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function TestNestedLoops() { - var sum = 0; - for (var i = 0; i < 200; i = i + 1) { - for (var j = 0; j < 200; j = j + 1) { - sum = sum + 1; - } - } - return sum; -} -assertEquals(200 * 200, TestNestedLoops()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-1.js b/implementation-contributed/v8/mjsunit/compiler/regress-1.js deleted file mode 100644 index cbae1a83d01..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-1.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function DaysInYear(y) { - if (y % 4 != 0) return 365; - if (y % 4 == 0 && y % 100 != 0) return 366; - if (y % 100 == 0 && y % 400 != 0) return 365; - if (y % 400 == 0) return 366; -} -assertEquals(365, DaysInYear(1999)); -assertEquals(366, DaysInYear(2000)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-106351.js b/implementation-contributed/v8/mjsunit/compiler/regress-106351.js deleted file mode 100644 index 2a67a055d33..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-106351.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test Math.round with the input reused in the same expression. -function test(x) { - var v = Math.round(x) - x; - assertEquals(0.5, v); -} - -for (var i = 0; i < 5; ++i) test(0.5); -%OptimizeFunctionOnNextCall(test); -test(0.5); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-1085.js b/implementation-contributed/v8/mjsunit/compiler/regress-1085.js deleted file mode 100644 index 533cf59c9c0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-1085.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test correct checks for negative zero. -// This test relies on specific type feedback for Math.min. -function f(x) { return 1 / Math.min(1, x); } - -for (var i = 0; i < 5; ++i) f(1); -%OptimizeFunctionOnNextCall(f); - -assertEquals(-Infinity, f(-0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-1394.js b/implementation-contributed/v8/mjsunit/compiler/regress-1394.js deleted file mode 100644 index fbf435731f1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-1394.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(x) { - var ret = -1; - switch(x){ - default: - case 0: - ret = 0; - break; - case 1: - ret = 1; - break; - case 2: - ret = 2; - break; - case 3: - ret = 3; - break; - case 4: - ret = 4; - break; - } - return ret; -}; - -for (var i = 0; i < 3; i++) assertEquals(i, f(i)); - -%OptimizeFunctionOnNextCall(f); - -assertEquals(0, f(0)); -assertEquals(1, f(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-177883.js b/implementation-contributed/v8/mjsunit/compiler/regress-177883.js deleted file mode 100644 index d5af5849511..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-177883.js +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// A regression test for a register allocation bug triggered by -// http://n3emscripten.appspot.com/dragons_asmjs.html. Note that the test is -// very fragile, but without a proper testing infrastructure for the register -// allocator we can't really do much better. -// -// The code below is a slighty modified version of Emscripten-translated C++ -// code for the standard textbook algorithm for frustum culling of an object -// with a given bounding box. -// -// The key problem for the underlying bug was a value with a long live range -// which is used often (a context) and a lot of live ranges starting at the same -// point. The bug was that none of the ranges were allowed to be spilled, so the -// allocator was splitting a live range at its start and re-added the very same -// range into the list of unallocated ranges, making no progress. - -(function () { - function __ZNK4Math5plane3dotERKNS_6float4E(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - return +(+HEAPF32[i1 >> 2] * +HEAPF32[i2 >> 2] + +HEAPF32[i1 + 4 >> 2] * +HEAPF32[i2 + 4 >> 2] + +HEAPF32[i1 + 8 >> 2] * +HEAPF32[i2 + 8 >> 2] + +HEAPF32[i1 + 12 >> 2] * +HEAPF32[i2 + 12 >> 2]); - } - - function __ZNK4Math7frustum8clipmaskERKNS_5pointE(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0; - i3 = i2 | 0; - i2 = +__ZNK4Math5plane3dotERKNS_6float4E(i1 | 0, i3) > 0.0 & 1; - i4 = +__ZNK4Math5plane3dotERKNS_6float4E(i1 + 16 | 0, i3) > 0.0 ? i2 | 2 : i2; - i2 = +__ZNK4Math5plane3dotERKNS_6float4E(i1 + 32 | 0, i3) > 0.0 ? i4 | 4 : i4; - i4 = +__ZNK4Math5plane3dotERKNS_6float4E(i1 + 48 | 0, i3) > 0.0 ? i2 | 8 : i2; - i2 = +__ZNK4Math5plane3dotERKNS_6float4E(i1 + 64 | 0, i3) > 0.0 ? i4 | 16 : i4; - return (+__ZNK4Math5plane3dotERKNS_6float4E(i1 + 80 | 0, i3) > 0.0 ? i2 | 32 : i2) | 0; - } - - function __ZNK4Math7frustum10clipstatusERKNS_4bboxE(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, d17 = 0.0, d18 = 0.0, i19 = 0, i20 = 0, i21 = 0, i22 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i3 | 0; - i5 = i4 | 0; - HEAPF32[i5 >> 2] = 0.0; - i6 = i4 + 4 | 0; - HEAPF32[i6 >> 2] = 0.0; - i7 = i4 + 8 | 0; - HEAPF32[i7 >> 2] = 0.0; - i8 = i4 + 12 | 0; - HEAPF32[i8 >> 2] = 1.0; - i9 = i2 | 0; - i10 = i2 + 4 | 0; - i11 = i2 + 8 | 0; - i12 = i2 + 20 | 0; - i13 = i2 + 16 | 0; - i14 = i2 + 24 | 0; - i2 = 65535; - i15 = 0; - i16 = 0; - while (1) { - if ((i16 | 0) == 1) { - d17 = +HEAPF32[i12 >> 2]; - d18 = +HEAPF32[i11 >> 2]; - HEAPF32[i5 >> 2] = +HEAPF32[i9 >> 2]; - HEAPF32[i6 >> 2] = d17; - HEAPF32[i7 >> 2] = d18; - HEAPF32[i8 >> 2] = 1.0; - } else if ((i16 | 0) == 4) { - HEAPF32[i5 >> 2] = +HEAPF32[i13 >> 2]; - HEAPF32[i6 >> 2] = +HEAPF32[i12 >> 2]; - HEAPF32[i7 >> 2] = +HEAPF32[i14 >> 2]; - HEAPF32[i8 >> 2] = 1.0; - } else if ((i16 | 0) == 6) { - d18 = +HEAPF32[i10 >> 2]; - d17 = +HEAPF32[i14 >> 2]; - HEAPF32[i5 >> 2] = +HEAPF32[i9 >> 2]; - HEAPF32[i6 >> 2] = d18; - HEAPF32[i7 >> 2] = d17; - HEAPF32[i8 >> 2] = 1.0; - } else if ((i16 | 0) == 5) { - d17 = +HEAPF32[i12 >> 2]; - d18 = +HEAPF32[i14 >> 2]; - HEAPF32[i5 >> 2] = +HEAPF32[i9 >> 2]; - HEAPF32[i6 >> 2] = d17; - HEAPF32[i7 >> 2] = d18; - HEAPF32[i8 >> 2] = 1.0; - } else if ((i16 | 0) == 3) { - d18 = +HEAPF32[i10 >> 2]; - d17 = +HEAPF32[i11 >> 2]; - HEAPF32[i5 >> 2] = +HEAPF32[i13 >> 2]; - HEAPF32[i6 >> 2] = d18; - HEAPF32[i7 >> 2] = d17; - HEAPF32[i8 >> 2] = 1.0; - } else if ((i16 | 0) == 0) { - HEAPF32[i5 >> 2] = +HEAPF32[i9 >> 2]; - HEAPF32[i6 >> 2] = +HEAPF32[i10 >> 2]; - HEAPF32[i7 >> 2] = +HEAPF32[i11 >> 2]; - HEAPF32[i8 >> 2] = 1.0; - } else if ((i16 | 0) == 2) { - d17 = +HEAPF32[i12 >> 2]; - d18 = +HEAPF32[i11 >> 2]; - HEAPF32[i5 >> 2] = +HEAPF32[i13 >> 2]; - HEAPF32[i6 >> 2] = d17; - HEAPF32[i7 >> 2] = d18; - HEAPF32[i8 >> 2] = 1.0; - } else if ((i16 | 0) == 7) { - d18 = +HEAPF32[i10 >> 2]; - d17 = +HEAPF32[i14 >> 2]; - HEAPF32[i5 >> 2] = +HEAPF32[i13 >> 2]; - HEAPF32[i6 >> 2] = d18; - HEAPF32[i7 >> 2] = d17; - HEAPF32[i8 >> 2] = 1.0; - } - i19 = __ZNK4Math7frustum8clipmaskERKNS_5pointE(i1, i4) | 0; - i20 = i19 & i2; - i21 = i19 | i15; - i19 = i16 + 1 | 0; - if ((i19 | 0) == 8) { - break; - } else { - i2 = i20; - i15 = i21; - i16 = i19; - } - } - if ((i21 | 0) == 0) { - i22 = 0; - STACKTOP = i3; - return i22 | 0; - } - i22 = (i20 | 0) == 0 ? 2 : 1; - STACKTOP = i3; - return i22 | 0; - } - - // ----------------------------------------------------------------- - - var STACKTOP = 0; - var HEAPF32 = new Float32Array(1000); - - for (var i = 0; i < HEAPF32.length; i++) { - HEAPF32[i] = 1.0; - } - - __ZNK4Math7frustum10clipstatusERKNS_4bboxE(0, 0); - __ZNK4Math7frustum10clipstatusERKNS_4bboxE(0, 0); - __ZNK4Math7frustum10clipstatusERKNS_4bboxE(0, 0); - %OptimizeFunctionOnNextCall(__ZNK4Math7frustum10clipstatusERKNS_4bboxE); - __ZNK4Math7frustum10clipstatusERKNS_4bboxE(0, 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-2.js b/implementation-contributed/v8/mjsunit/compiler/regress-2.js deleted file mode 100644 index a26ef32a6cd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-2.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// The compilation of this function currently fails when resolving -// control flow in the register allocator. -function TestCreateString(n) -{ - var l = n * 1; - var r = 'r'; - while (r.length < n) - { - r = r + r; - } - return r; -} - -assertEquals("r", TestCreateString(1)); -assertEquals("rr", TestCreateString(2)); -assertEquals("rrrr", TestCreateString(3)); -assertEquals("rrrrrrrr", TestCreateString(6)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-3.js b/implementation-contributed/v8/mjsunit/compiler/regress-3.js deleted file mode 100644 index 6aa7078ae8f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-3.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function fib(n) { - var f0 = 0, f1 = 1; - for (; n > 0; n = n -1) { - var f2 = f0 + f1; - f0 = f1; f1 = f2; - } - return f0; -} - -assertEquals(2111485077978050, fib(75)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-3136962.js b/implementation-contributed/v8/mjsunit/compiler/regress-3136962.js deleted file mode 100644 index 147d8331a47..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-3136962.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Reduced regression test for a global value numbering bug. Original -// value of global variable height was reused even after reassignment. - -var height = 267; - -var count = 0; -function inner() { height = 0; ++count; } -function outer() {} - -function test() { - for (var i = 0; i < height; ++i) { - for (var j = -6; j < 7; ++j) { - if (i + j < 0 || i + j >= height) continue; - for (var k = -6; k < 7; ++k) { - inner(); - } - } - outer(); - } -} - -test(); - -assertEquals(13, count); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-3185901.js b/implementation-contributed/v8/mjsunit/compiler/regress-3185901.js deleted file mode 100644 index 1e1bbe74a11..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-3185901.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Inlined function call in a test context. Should never crash even -// with --always-opt. -var x; - -function f() { if (g()) { } } -function g() { if (x) { return true; } } - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-3218915.js b/implementation-contributed/v8/mjsunit/compiler/regress-3218915.js deleted file mode 100644 index dfce815afbe..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-3218915.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Regression test for failure to deoptimize properly when the most recent -// side effect occurred in a comma expression in an effect context. - -// An unoptimizable function, calling it is a side effect. -function side_effect() { try {} finally {} return "wrong"; } - -// A function to observe the value of its first argument. -function observe(x, y) { try {} finally {} return x; } - -// If we optimize for x a smi, then x a string will deopt. The side effect -// immediately before the deopt is in a comma expresion in an effect context -// (i.e., itself the left subexpression of a comma expression). -function test(x) { return observe(this, ((0, side_effect()), x + 1)); } - -// Run test enough times to get it optimized. -for (var i = 0; i < 5; ++i) test(0); -%OptimizeFunctionOnNextCall(test); -test(0); - -// Force test to deopt. If it behaves normally, it should return the global -// object. If the value of the call to side_effect() is lingering after the -// deopt, it will return the string "wrong". -assertFalse(test("a") === "wrong"); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-3249650.js b/implementation-contributed/v8/mjsunit/compiler/regress-3249650.js deleted file mode 100644 index 289e061c772..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-3249650.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Among other things, this code covers the case of deoptimization -// after a compare expression in an effect context. - -function f0(x) { try { } catch (e) {}} -function f1(x) { try { } catch (e) {}} -function f2(x) { try { } catch (e) {}} -function f3(x) { try { } catch (e) {}} - -var object = { a: "", b: false, c: {}}; -object.f = function(x) { return this; } - - -function test(x) { - f0(x); - f1(x); - f2(x); - f3(x); - x.a.b == ""; - object.f("A").b = true; - object.f("B").a = ""; - object.f("C").c.display = "A"; - object.f("D").c.display = "A"; -} - -var x = {a: {b: "" }}; -for (var i = 0; i < 20000; i++) test(x); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-3260426.js b/implementation-contributed/v8/mjsunit/compiler/regress-3260426.js deleted file mode 100644 index 457064d2bba..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-3260426.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Falling off the end of a function returns the undefined value -// (false in a test context). This should happen even when inlined -// (e.g., if --always-opt) and when it is the only exit from the -// function. -function always_false() {} -function test() { return always_false() ? 0 : 1; } - -assertEquals(1, test()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-3786.js b/implementation-contributed/v8/mjsunit/compiler/regress-3786.js deleted file mode 100644 index d30ac0ef38d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-3786.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var foo = (function Module(stdlib, foreign, heap) { - "use asm"; - var f = stdlib.Math.cos; - function foo() { - return f(48,48,48,59,32,102,111,110,116,45,119,101,105,103,104,116,58,98,111,108,100,59,102,111,110,116,45,102,97,109,105,108,121,58,65,114,105,97,108,44,32,72,101,108,118,101,116,105,99,97,44,32,115,97,110,115,45,115,101,114,105,102,44,86,101,114,100,97,110,97,34,32,99,111,108,111,114,61,34,35,70,70,48,48,48,48,34,62,70,79,82,69,88,47,80,65,82,38,35,51,48,52,59,60,119,98,114,32,47,62,84,69,32,38,35,51,48,52,59,38,35,51,53,48,59,76,69,77,76,69,82,38,35,51,48,52,59,60,47,102,111,110,116,62,60,47,115,112,97,110,62,60,47,116,100,62,10,60,47,116,114,62,60,116,114,62,10,60,116,100,32,97,108,105,103,110,61,34,108,101,102,116,34,62,60,115,112,97,110,32,105,100,61,34,97,99,95,100,101,115,99,34,62,60,102,111,110,116,32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,49,112,120,59,32,99,111,108,111,114,58,35,48,48,48,48,48,48,59,32,102,111,110,116,45,102,97,109,105,108,121,58,65,114,105,97,108,44,32,72,101,108,118,101,116,105,99,97,44,32,115,97,110,115,45,115,101,114,105,102,44,86,101,114,100,97,110,97,34,62,38,112,111,117,110,100,59,47,36,32,50,32,112,105,112,44,32,89,84,76,32,49,50,32,112,105,112,44,65,108,116,38,35,51,48,53,59,110,32,51,32,99,101,110,116,46,32,83,97,98,105,116,32,83,112,114,101,97,100,45,84,38,117,117,109,108,59,114,60,119,98,114,32,47,62,107,32,66,97,110,107,97,115,38,35,51,48,53,59,32,65,86,65,78,84,65,74,73,60,47,102,111,110,116,62,60,47,115,112,97,110,62,60,47,116,100,62,10,60,47,116,114,62,60,116,114,62,10,60,116,100,32,97,108,105,103,110,61,34,108,101,102,116,34,62,60,100,105,118,32,105,100,61,34,97,99,95,117,114,108,34,62,60,102,111,110,116,32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,48,112,120,59,32,99,111,108,111,114,58,35,70,70,54,54,57,57,59,32,102,111,110,116,45,102,97114,105,97); - } - return { foo: foo }; -})(this, {}).foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-3812.js b/implementation-contributed/v8/mjsunit/compiler/regress-3812.js deleted file mode 100644 index cfc8febc9a0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-3812.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - -var foo = (function Module(stdlib, foreign, heap) { - "use asm"; - function foo(i) { - var x = i ? (i&1) : true; - if (x) return x; - return false; - } - return {foo:foo}; -})(stdlib, foreign, buffer).foo; - -assertEquals(1, foo(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4.js b/implementation-contributed/v8/mjsunit/compiler/regress-4.js deleted file mode 100644 index 9a212baf2d7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test deoptimization after a loop. -function f(p) { - var y=0; - for (var x=0; x<10; x++) { - if (x > 5) { y=y+p; break;} - } - return y+x; -} - -for (var i=0; i<100000; i++) f(42); - -var result = f("foo"); -assertEquals("0foo6", result); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-411262.js b/implementation-contributed/v8/mjsunit/compiler/regress-411262.js deleted file mode 100644 index ffbfe2e8231..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-411262.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function b() { -} -function f() { - b.apply(this, arguments); -} - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-416359.js b/implementation-contributed/v8/mjsunit/compiler/regress-416359.js deleted file mode 100644 index 18cdc5e7280..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-416359.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict" -function f() { - for (x in {a:0}); -} - -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4206.js b/implementation-contributed/v8/mjsunit/compiler/regress-4206.js deleted file mode 100644 index 742ed5dfe50..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4206.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib) { - "use asm"; - function TernaryMin(a, b) { - a=+(a); - b=+(b); - return (+((a < b) ? a : b)); - } - function TernaryMax(a, b) { - a=+(a); - b=+(b); - return (+((b < a) ? a : b)); - } - return { TernaryMin: TernaryMin, - TernaryMax: TernaryMax }; -} -var min = Module(this).TernaryMin; -var max = Module(this).TernaryMax; - -assertEquals(0.0, min(-0.0, 0.0)); -assertEquals(0.0, min(NaN, 0.0)); -assertEquals(-0.0, min(NaN, -0.0)); -assertEquals(-0.0, max(0.0, -0.0)); -assertEquals(0.0, max(NaN, 0.0)); -assertEquals(-0.0, max(NaN, -0.0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4207.js b/implementation-contributed/v8/mjsunit/compiler/regress-4207.js deleted file mode 100644 index c4ab5a78372..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4207.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar() { return 0/0 && 1; } -assertEquals(NaN, bar()); -%OptimizeFunctionOnNextCall(bar); -assertEquals(NaN, bar()); - -function foo() { return 0/0 || 1; } -assertEquals(1, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(1, foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4389-1.js b/implementation-contributed/v8/mjsunit/compiler/regress-4389-1.js deleted file mode 100644 index adb37165dbb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4389-1.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { Math.fround(x); } -foo(1); -foo(2); -%OptimizeFunctionOnNextCall(foo); -assertThrows(function() { foo(Symbol()) }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4389-2.js b/implementation-contributed/v8/mjsunit/compiler/regress-4389-2.js deleted file mode 100644 index edfcf7a8f52..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4389-2.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { Math.sqrt(x); } -foo(1); -foo(2); -%OptimizeFunctionOnNextCall(foo); -assertThrows(function() { foo(Symbol()) }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4389-3.js b/implementation-contributed/v8/mjsunit/compiler/regress-4389-3.js deleted file mode 100644 index f4dbc486705..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4389-3.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { Math.floor(x); } -foo(1); -foo(2); -%OptimizeFunctionOnNextCall(foo); -assertThrows(function() { foo(Symbol()) }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4389-4.js b/implementation-contributed/v8/mjsunit/compiler/regress-4389-4.js deleted file mode 100644 index 2b9b1493eb8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4389-4.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { Math.round(x); } -foo(1); -foo(2); -%OptimizeFunctionOnNextCall(foo); -assertThrows(function() { foo(Symbol()) }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4389-5.js b/implementation-contributed/v8/mjsunit/compiler/regress-4389-5.js deleted file mode 100644 index e72a3c38eab..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4389-5.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { Math.abs(x); } -foo(1); -foo(2); -%OptimizeFunctionOnNextCall(foo); -assertThrows(function() { foo(Symbol()) }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4389-6.js b/implementation-contributed/v8/mjsunit/compiler/regress-4389-6.js deleted file mode 100644 index 72a8856525c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4389-6.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { Math.log(x); } -foo(1); -foo(2); -%OptimizeFunctionOnNextCall(foo); -assertThrows(function() { foo(Symbol()) }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-439743.js b/implementation-contributed/v8/mjsunit/compiler/regress-439743.js deleted file mode 100644 index 288e2a44f18..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-439743.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function module(stdlib, foreign, heap) { - "use asm"; - var MEM32 = new stdlib.Int32Array(heap); - function foo(i) { - i = i|0; - MEM32[0] = i; - return MEM32[i + 4 >> 2]|0; - } - return { foo: foo }; -} - -var foo = module(this, {}, new ArrayBuffer(64*1024)).foo; -assertEquals(-4, foo(-4)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4413-1.js b/implementation-contributed/v8/mjsunit/compiler/regress-4413-1.js deleted file mode 100644 index 569823530f3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4413-1.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var foo = (function(stdlib) { - "use asm"; - var bar = stdlib.Symbol; - function foo() { return bar("lala"); } - return foo; -})(this); - -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-443744.js b/implementation-contributed/v8/mjsunit/compiler/regress-443744.js deleted file mode 100644 index 5e7f3bc9dbd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-443744.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var m = (function(stdlib, foreign, heap) { - "use asm"; - var MEM = new stdlib.Uint8Array(heap); - function f(x) { - x = x | 0; - MEM[x] = 0; - } - return {f: f}; -})(this, {}, new ArrayBuffer(1)); -m.f(-926416896 * 32 * 1024); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-444508.js b/implementation-contributed/v8/mjsunit/compiler/regress-444508.js deleted file mode 100644 index e7d51ae831f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-444508.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function Module(stdlib, foreign, heap) { - "use asm"; - // This is not valid asm.js, but should nevertheless work. - var MEM = new Uint8ClampedArray(heap); - function foo(i) { MEM[0] = 1; } - return {foo: foo}; -})(this, {}, new ArrayBuffer(64 * 1024)).foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-444695.js b/implementation-contributed/v8/mjsunit/compiler/regress-444695.js deleted file mode 100644 index 168ae25c705..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-444695.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var foo = (function(stdlib, foreign, heap) { - "use asm"; - var MEM = new stdlib.Uint8Array(heap); - function foo(x) { MEM[x | 0] *= 0; } - return {foo: foo}; -})(this, {}, new ArrayBuffer(1)).foo; -foo(-926416896 * 8 * 1024); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-445267.js b/implementation-contributed/v8/mjsunit/compiler/regress-445267.js deleted file mode 100644 index 465168b6e87..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-445267.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var foo = (function Module(stdlib, foreign, heap) { - "use asm"; - var MEM16 = new stdlib.Int16Array(heap); - function foo(i) { - i = i|0; - i = MEM16[i + 2147483650 >> 1]|0; - return i; - } - return { foo: foo }; -})(this, {}, new ArrayBuffer(64 * 1024)).foo; - -foo(0); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-445732.js b/implementation-contributed/v8/mjsunit/compiler/regress-445732.js deleted file mode 100644 index 725e1282d67..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-445732.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use asm"; - -%NeverOptimizeFunction(f); -function f() { } -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-445858.js b/implementation-contributed/v8/mjsunit/compiler/regress-445858.js deleted file mode 100644 index b2214ea0f26..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-445858.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var foo = (function module(stdlib, foreign, heap) { - "use asm"; - var MEM = new stdlib.Int8Array(heap); - function foo(i) { - i = i|0; - i[0] = i; - return MEM[i + 1 >> 0]|0; - } - return { foo: foo }; -})(this, {}, new ArrayBuffer(64 * 1024)).foo; -foo(-1); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-445859.js b/implementation-contributed/v8/mjsunit/compiler/regress-445859.js deleted file mode 100644 index 256af3eeeb4..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-445859.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var foo = (function Module(global, env, buffer) { - "use asm"; - var i8 = new global.Int8Array(buffer); - function foo() { i8[0] += 4294967295; } - return { foo: foo }; -})(this, {}, new ArrayBuffer(64 * 1024)).foo; -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-445876.js b/implementation-contributed/v8/mjsunit/compiler/regress-445876.js deleted file mode 100644 index 30e10e56c3a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-445876.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - while (1) { s++; } - while (x) { s++; } -} - -assertThrows(function () { f(1); }); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-445907.js b/implementation-contributed/v8/mjsunit/compiler/regress-445907.js deleted file mode 100644 index 8cde94457ed..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-445907.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -v = []; -v.length = (1 << 30); - -function f() { - v++; -} - -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-446156.js b/implementation-contributed/v8/mjsunit/compiler/regress-446156.js deleted file mode 100644 index f3cd2dd94ee..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-446156.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function Module(stdlib, foreign, heap) { - "use asm"; - // This is not valid asm.js, but should nevertheless work. - var MEM = new Uint8ClampedArray(heap); - function foo( ) { MEM[0] ^= 1; } - return {foo: foo}; -})(this, {}, new ArrayBuffer( ) ).foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-446647.js b/implementation-contributed/v8/mjsunit/compiler/regress-446647.js deleted file mode 100644 index 6387aaa6976..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-446647.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt --turbo-filter=* --allow-natives-syntax - -function f(a,b) { - a%b -}; - -f({ toString : function() { %DeoptimizeFunction(f); }}); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-446778.js b/implementation-contributed/v8/mjsunit/compiler/regress-446778.js deleted file mode 100644 index a7fa3fdad86..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-446778.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module() { - "use asm"; - function f() { - var i = (140737463189505); - do { - i = i + i | 0; - x = undefined + i | 0; - } while (!i); - } - return { f: f }; -} - -Module().f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-4470-1.js b/implementation-contributed/v8/mjsunit/compiler/regress-4470-1.js deleted file mode 100644 index 91d26b7212d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-4470-1.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Foo() {} -Foo.prototype.x = 0; -function foo(f) { - f.x = 1; -} -foo(new Foo); -foo(new Foo); -%OptimizeFunctionOnNextCall(foo); -foo(new Foo); -assertEquals(Foo.prototype.x, 0); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-447567.js b/implementation-contributed/v8/mjsunit/compiler/regress-447567.js deleted file mode 100644 index 7aaada02c7f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-447567.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function () { - Object.freeze(new Int8Array(1)) -}); - -assertThrows(function() { - "use strict"; - const v = 42; - v += 1; -}); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-451012.js b/implementation-contributed/v8/mjsunit/compiler/regress-451012.js deleted file mode 100644 index bffc8bc5bdf..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-451012.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -function f() { - for (let v; v; ) { - let x; - } -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-452427.js b/implementation-contributed/v8/mjsunit/compiler/regress-452427.js deleted file mode 100644 index f798b9cc79c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-452427.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = {}; -var foreign = {}; -var heap = new ArrayBuffer(64 * 1024); - -var rol = (function Module(stdlib, foreign, heap) { - "use asm"; - function rol() { - y = "a" > false; - return y + (1 - y); - } - return { rol: rol }; -})(stdlib, foreign, heap).rol; - -assertEquals(1, rol()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-463056.js b/implementation-contributed/v8/mjsunit/compiler/regress-463056.js deleted file mode 100644 index fb871618e42..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-463056.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - return ((0%0)&1) + (1>>>(0%0)); -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-468162.js b/implementation-contributed/v8/mjsunit/compiler/regress-468162.js deleted file mode 100644 index 47bff032d58..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-468162.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var asm = (function() { - "use asm"; - var max = Math.max; - return function f() { return max(0, -17); }; -})(); - -assertEquals(0, asm()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-468727.js b/implementation-contributed/v8/mjsunit/compiler/regress-468727.js deleted file mode 100644 index a69efe5a565..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-468727.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --noanalyze-environment-liveness - -function f() { - var __v_7 = -126 - __v_3; - var __v_17 = ((__v_15 & __v_14) != 4) | 16; - if (__v_17) { - var __v_11 = 1 << __v_7; - } - __v_12 >>= __v_3; -} - -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-469089.js b/implementation-contributed/v8/mjsunit/compiler/regress-469089.js deleted file mode 100644 index 6aff2b72030..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-469089.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -(function() { - var __v_6 = false; - function f(val, idx) { - if (idx === 1) { - gc(); - __v_6 = (val === 0); - } - } - f(.1, 1); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-491578.js b/implementation-contributed/v8/mjsunit/compiler/regress-491578.js deleted file mode 100644 index c27570456c3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-491578.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - if (x === undefined) return; - while (true) { - while (1 || 2) { } - f(); - } -} -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-5.js b/implementation-contributed/v8/mjsunit/compiler/regress-5.js deleted file mode 100644 index 5488d0ee671..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-5.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test breaking out of labelled blocks. -function f(y) { - var x = 0; - - foo: { - x++; - bar: { - if (y == 0) break bar; else break foo; - } - x++; - } - return x; -} - -assertEquals(2, f(0)); -assertEquals(1, f(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-5074.js b/implementation-contributed/v8/mjsunit/compiler/regress-5074.js deleted file mode 100644 index 903b54ad980..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-5074.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var s = [,0.1]; - -function foo(a, b) { - var x = s[a]; - s[1] = 0.1; - return x + b; -} - -assertEquals(2.1, foo(1, 2)); -assertEquals(2.1, foo(1, 2)); -%OptimizeFunctionOnNextCall(foo); -assertEquals("undefined2", foo(0, "2")); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-5100.js b/implementation-contributed/v8/mjsunit/compiler/regress-5100.js deleted file mode 100644 index 694cd8a75be..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-5100.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = [0, 1]; -a["true"] = "true"; -a["false"] = "false"; -a["null"] = "null"; -a["undefined"] = "undefined"; - -// Ensure we don't accidentially truncate true when used to index arrays. -(function() { - function f(x) { return a[x]; } - - assertEquals(0, f(0)); - assertEquals(0, f(0)); - %OptimizeFunctionOnNextCall(f); - assertEquals("true", f(true)); -})(); - -// Ensure we don't accidentially truncate false when used to index arrays. -(function() { - function f( x) { return a[x]; } - - assertEquals(0, f(0)); - assertEquals(0, f(0)); - %OptimizeFunctionOnNextCall(f); - assertEquals("false", f(false)); -})(); - -// Ensure we don't accidentially truncate null when used to index arrays. -(function() { - function f( x) { return a[x]; } - - assertEquals(0, f(0)); - assertEquals(0, f(0)); - %OptimizeFunctionOnNextCall(f); - assertEquals("null", f(null)); -})(); - -// Ensure we don't accidentially truncate undefined when used to index arrays. -(function() { - function f( x) { return a[x]; } - - assertEquals(0, f(0)); - assertEquals(0, f(0)); - %OptimizeFunctionOnNextCall(f); - assertEquals("undefined", f(undefined)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-5129.js b/implementation-contributed/v8/mjsunit/compiler/regress-5129.js deleted file mode 100644 index 1d100ab34cc..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-5129.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo($a,$b) { - $a = $a|0; - $b = $b|0; - var $sub = $a - $b; - return ($sub|0) < 0; -} - -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(0x7fffffff,-1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-5158.js b/implementation-contributed/v8/mjsunit/compiler/regress-5158.js deleted file mode 100644 index ead5f4ed9d3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-5158.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - x = +x; - return (x > 0) ? x : 0 - x; -} - -foo(1); -foo(-1); -foo(0); -%OptimizeFunctionOnNextCall(foo); -assertEquals(2147483648, foo(-2147483648)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-5278.js b/implementation-contributed/v8/mjsunit/compiler/regress-5278.js deleted file mode 100644 index 25b1fb03d54..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-5278.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a, b) { - return a % b; -} -foo(2, 1); -foo(2, 1); -%OptimizeFunctionOnNextCall(foo); -assertEquals(-0, foo(-2, 1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-5320.js b/implementation-contributed/v8/mjsunit/compiler/regress-5320.js deleted file mode 100644 index e2fa65de310..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-5320.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -function OptimizeTruncatingBinaryOp(func) { - func(42, -2); - func(31, undefined); - %OptimizeFunctionOnNextCall(func); - func(-1, 2.1); - assertOptimized(func); -} - -// SAR -OptimizeTruncatingBinaryOp(function(a, b) { return a >> b; }); -// SHR -OptimizeTruncatingBinaryOp(function(a, b) { return a >>> b; }); -// SHL -OptimizeTruncatingBinaryOp(function(a, b) { return a << b; }); -// BIT_AND -OptimizeTruncatingBinaryOp(function(a, b) { return a & b; }); -// BIT_OR -OptimizeTruncatingBinaryOp(function(a, b) { return a | b; }); -// BIT_XOR -OptimizeTruncatingBinaryOp(function(a, b) { return a ^ b; }); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-5538.js b/implementation-contributed/v8/mjsunit/compiler/regress-5538.js deleted file mode 100644 index 7e4c25d3bcc..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-5538.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo(x) { - x = x | 0; - return Number.parseInt(x + 1); - } - - assertEquals(1, foo(0)); - assertEquals(2, foo(1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(Math.pow(2, 31), foo(Math.pow(2, 31) - 1)); -})(); - -(function() { - function foo(x) { - x = x | 0; - return Number.parseInt(x + 1, 0); - } - - assertEquals(1, foo(0)); - assertEquals(2, foo(1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(Math.pow(2, 31), foo(Math.pow(2, 31) - 1)); -})(); - -(function() { - function foo(x) { - x = x | 0; - return Number.parseInt(x + 1, 10); - } - - assertEquals(1, foo(0)); - assertEquals(2, foo(1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(Math.pow(2, 31), foo(Math.pow(2, 31) - 1)); -})(); - -(function() { - function foo(x) { - x = x | 0; - return Number.parseInt(x + 1, undefined); - } - - assertEquals(1, foo(0)); - assertEquals(2, foo(1)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(Math.pow(2, 31), foo(Math.pow(2, 31) - 1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-572409.js b/implementation-contributed/v8/mjsunit/compiler/regress-572409.js deleted file mode 100644 index 126b622625a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-572409.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = function() {}; -function f() { - var lit = { __proto__: o }; - o instanceof RegExp; -} -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-6.js b/implementation-contributed/v8/mjsunit/compiler/regress-6.js deleted file mode 100644 index e92b0e5556c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-6.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f(a, b, c) { - if (a == 0 || b == 0) return a; - return a + c; -} - -assertEquals(0, f(0, 0, 0)); -assertEquals(0, f(0, 1, 0)); -assertEquals(1, f(1, 0, 0)); -assertEquals(2, f(2, 1, 0)); - -// Force deoptimization in --always-opt mode when evaluating -// the 'a + c' expression. Make sure this doesn't end up -// returning 'a'. -assertEquals(1.5, f(1, 1, 0.5)); -assertEquals(2.5, f(2, 1, 0.5)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-600593.js b/implementation-contributed/v8/mjsunit/compiler/regress-600593.js deleted file mode 100644 index c93f2ab8008..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-600593.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict" - -function f(c) { - if (c) { throw new Error(); } - throw new Error(); -}; - -function Error() { - return arguments.length; -} - -assertThrows(function() { f(true); }); -assertThrows(function() { f(false); }); -%OptimizeFunctionOnNextCall(f); -assertThrows(function() { f(true); }); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-607493.js b/implementation-contributed/v8/mjsunit/compiler/regress-607493.js deleted file mode 100644 index 540b47e2d29..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-607493.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function ForInTryCatchContrinueOsr() { - var a = [1]; - - function g() { - for (var x in a) { - try { - for (var i = 0; i < 10; i++) { %OptimizeOsr(); } - return; - } catch(e) { - continue; - } - } - } - - g(); -})(); - -(function ForInContinueNestedOsr() { - var a = [1]; - - function g() { - for (var x in a) { - if (x) { - for (var i = 0; i < 10; i++) { %OptimizeOsr(); } - } - continue; - } - } - - g(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-621147.js b/implementation-contributed/v8/mjsunit/compiler/regress-621147.js deleted file mode 100644 index 0a5a221c40d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-621147.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-filter=test2 - -function test(n) { - return Array(n); -} - -function test2() { - return test(2); -} - -function test3(a) { - a[0] = 1; -} - -test(0); - -var smi_array = [1,2]; -smi_array[2] = 3; -test3(smi_array); - -%OptimizeFunctionOnNextCall(test2); - -var broken_array = test2(); -test3(broken_array); -1+broken_array[0]; diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-621423.js b/implementation-contributed/v8/mjsunit/compiler/regress-621423.js deleted file mode 100644 index 962176ffbff..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-621423.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = [0, ""]; -a[0] = 0; - -function g(array) { - array[1] = undefined; -} - -function f() { - g(function() {}); - g(a); -} - -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-625558.js b/implementation-contributed/v8/mjsunit/compiler/regress-625558.js deleted file mode 100644 index 5d6b372632a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-625558.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -for (var global = 0; global <= 256; global++) { } - -function f() { - global = "luft"; - global += ++global; -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-625966.js b/implementation-contributed/v8/mjsunit/compiler/regress-625966.js deleted file mode 100644 index 187596e4af6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-625966.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -var s = ""; -for (var i = 0; i < 65535; i++) { - s += ("var a" + i + ";"); -} -eval(s); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-626986.js b/implementation-contributed/v8/mjsunit/compiler/regress-626986.js deleted file mode 100644 index 5e02918423d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-626986.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g() { - return 42; -} - -var o = {}; - -function f(o, x) { - o.f = x; -} - -f(o, g); -f(o, g); -f(o, g); -assertEquals(42, o.f()); -%OptimizeFunctionOnNextCall(f); -f(o, function() { return 0; }); -assertEquals(0, o.f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-628403.js b/implementation-contributed/v8/mjsunit/compiler/regress-628403.js deleted file mode 100644 index 4096ac32aee..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-628403.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var dothrow = false; - -function g() { - if (dothrow) throw 1; -} - -function f(a) { - try { - g(); - } catch(e) { - if (typeof e !== 'number' && e !== 1) throw e; - return a[0]; - } -} - -%NeverOptimizeFunction(g); -f(); -f(); -%OptimizeFunctionOnNextCall(f); -dothrow = true; -assertEquals(42, f([42])); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-628516.js b/implementation-contributed/v8/mjsunit/compiler/regress-628516.js deleted file mode 100644 index 8cb43b4bea2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-628516.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - var i = 0; - while (1) { - if ({}) i = expected[0] == x[0]; - i++; - } -} - -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-628773.js b/implementation-contributed/v8/mjsunit/compiler/regress-628773.js deleted file mode 100644 index cb1fa6fd64a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-628773.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -function foo() { - for (var i = 0; i < 10000; i++) { - try { - for (var j = 0; j < 2; j++) { - } - throw 1; - } catch(e) { - if (typeof a == "number") return a && isNaN(b); - } - } -} - -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-630611.js b/implementation-contributed/v8/mjsunit/compiler/regress-630611.js deleted file mode 100644 index be75777ba72..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-630611.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var global = 1; -global = 2; - -function f() { - var o = { a : 1 }; - global = "a"; - for (var i = global; i < 2; i++) { - delete o[i]; - } -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-633497.js b/implementation-contributed/v8/mjsunit/compiler/regress-633497.js deleted file mode 100644 index 8bf358af00a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-633497.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a) { - var x; - a = a|0; - var dummy; - if (a === 1) { - x = 277.5; - } else if (a === 2) { - x = 0; - } else { - dummy = 527.5; - dummy = 958.5; - dummy = 1143.5; - dummy = 1368.5; - dummy = 1558.5; - x = 277.5; - } - return +x; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals(277.5, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-638132.js b/implementation-contributed/v8/mjsunit/compiler/regress-638132.js deleted file mode 100644 index 1b94feb1253..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-638132.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g(x, y) { - return x | y; -} - -function f(b) { - if (b) { - var s = g("a", "b") && true; - return s; - } -} - -// Prime function g with Smi feedback. -g(1, 2); -g(1, 2); - -f(0); -f(0); -%OptimizeFunctionOnNextCall(f); -// Compile inlined function g with string inputs but Smi feedback. -f(1); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-639210.js b/implementation-contributed/v8/mjsunit/compiler/regress-639210.js deleted file mode 100644 index 50303fb9d6c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-639210.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var m = (function m() { - "use asm" - var i32 = new Int32Array(4); - var f64 = new Float64Array(4); - - function init() { - i32[0] = 1; - f64[0] = 0.1; - } - - function load(b) { - return (b ? 0 : i32[0]) + i32[0]; - } - - function store(b) { - if (b|0) { - } else { - f64[0] = 42; - } - return f64[0]; - } - - return { init : init, load : load, store : store }; -})(); - -m.init(); - -%OptimizeFunctionOnNextCall(m.load); -assertEquals(2, m.load()); - -%OptimizeFunctionOnNextCall(m.store); -assertEquals(0.1, m.store(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-644048.js b/implementation-contributed/v8/mjsunit/compiler/regress-644048.js deleted file mode 100644 index ee2dd6edef4..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-644048.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - (x - ? (!0 / 0) - : x) | 0 -} - -foo(1); -foo(2); -%OptimizeFunctionOnNextCall(foo); -foo(3); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-644633.js b/implementation-contributed/v8/mjsunit/compiler/regress-644633.js deleted file mode 100644 index 5087fd77fcc..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-644633.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var g = -1073741824; - -function f() { - var x = g*g*g*g*g*g*g; - for (var i = g; i < 1; ) { - i += i * x; - } -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-645851.js b/implementation-contributed/v8/mjsunit/compiler/regress-645851.js deleted file mode 100644 index 0ea70bd71ec..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-645851.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - var sum = 0; - while (1) { - for (var j = 0; j < 200; j -= j) { - sum = sum + 1; - %OptimizeOsr(); - if (sum == 2) return; - } - } - return sum; -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-650215.js b/implementation-contributed/v8/mjsunit/compiler/regress-650215.js deleted file mode 100644 index 95ae6cfed12..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-650215.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - var x = 0; - for (var i = 0; i < 10; i++) { - x = (2 % x) | 0; - if (i === 5) %OptimizeOsr(); - } - return x; -} - -assertEquals(0, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-664117.js b/implementation-contributed/v8/mjsunit/compiler/regress-664117.js deleted file mode 100644 index cf00591340d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-664117.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return v.length + 1; -} - -var v = []; -foo(); -v.length = 0xFFFFFFFF; - -%OptimizeFunctionOnNextCall(foo); -assertEquals(4294967296, foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-664490.js b/implementation-contributed/v8/mjsunit/compiler/regress-664490.js deleted file mode 100644 index 94094c73629..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-664490.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var foo = function(msg) {}; - -foo = function (value) { - assertEquals(false, value); -} - -function f() { - foo(undefined == 0); -} - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-665680.js b/implementation-contributed/v8/mjsunit/compiler/regress-665680.js deleted file mode 100644 index b014bee9ac1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-665680.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() {} - -var invalidAsmFunction = (function() { - "use asm"; - return function() { - with (foo) foo(); - } -})(); - -invalidAsmFunction(); -%OptimizeFunctionOnNextCall(invalidAsmFunction); -invalidAsmFunction(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-668760.js b/implementation-contributed/v8/mjsunit/compiler/regress-668760.js deleted file mode 100644 index 58294becae5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-668760.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - try { - o; - } catch (e) { - return e; - } - return 0; -} - -function deopt() { - %DeoptimizeFunction(f); - throw 42; -} - -%NeverOptimizeFunction(deopt); - -this.__defineGetter__("o", deopt ); - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals(42, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-669517.js b/implementation-contributed/v8/mjsunit/compiler/regress-669517.js deleted file mode 100644 index 19052609786..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-669517.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - "use asm"; - return function() { - for (var i = 0; i < 10; i++) { - if (i == 5) { - %OptimizeOsr(); - } - } - with (Object()); - } -})()(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-671574.js b/implementation-contributed/v8/mjsunit/compiler/regress-671574.js deleted file mode 100644 index fad03f0a280..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-671574.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; -function f() { - try { - try { - eval('--'); - } catch (e) { } - } catch(e) { } - try { - function get() { } - dummy = {}; - } catch(e) {"Caught: " + e; } -} - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-673244.js b/implementation-contributed/v8/mjsunit/compiler/regress-673244.js deleted file mode 100644 index b18d47b8dde..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-673244.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - var accumulator = false; - for (var i = 0; i < 4; i++) { - accumulator = accumulator.hasOwnProperty(3); - if (i === 1) %OptimizeOsr(); - } -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-674469.js b/implementation-contributed/v8/mjsunit/compiler/regress-674469.js deleted file mode 100644 index e02c4b3e4f3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-674469.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -global = -1073741824; -global = 2; -function foo() { - global = "a"; - global = global; - var o = global; - while (o < 2) { - } -} -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-675704.js b/implementation-contributed/v8/mjsunit/compiler/regress-675704.js deleted file mode 100644 index 788f92e5302..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-675704.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a) { - this.a = a; - // Note that any call would do, it doesn't need to be %MaxSmi() - this.x = this.a + %MaxSmi(); -} - -function g(x) { - new foo(2); - - if (x) { - for (var i = 0.1; i < 1.1; i++) { - new foo(i); - } - } -} - -g(false); -g(false); -%OptimizeFunctionOnNextCall(g); -g(true); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-693425.js b/implementation-contributed/v8/mjsunit/compiler/regress-693425.js deleted file mode 100644 index c818d645aff..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-693425.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var g = 0; -g++; -var f32 = new Float32Array(); -function foo() { - f32[0 >> 2] = g; -} -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-694088.js b/implementation-contributed/v8/mjsunit/compiler/regress-694088.js deleted file mode 100644 index 03c7a389ee0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-694088.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function is_little_endian() { - var buffer = new ArrayBuffer(4); - HEAP32 = new Int32Array(buffer); - HEAPU8 = new Uint8Array(buffer); - HEAP32[0] = 255; - if (HEAPU8[0] === 255 && HEAPU8[3] === 0) - return true; - else - return false; -} - -(function () { - var buffer = new ArrayBuffer(8); - var i32 = new Int32Array(buffer); - var f64 = new Float64Array(buffer); - - function foo() { - f64[0] = 1; - var x = f64[0]; - if (is_little_endian()) - return i32[0]; - else - return i32[1]; - } - assertEquals(0, foo()); -})(); - -(function () { - var buffer = new ArrayBuffer(8); - var i16 = new Int16Array(buffer); - var i32 = new Int32Array(buffer); - - function foo() { - i32[0] = 0x20001; - var x = i32[0]; - if (is_little_endian()) - return i16[0]; - else - return i16[1]; - } - assertEquals(1, foo()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-7.js b/implementation-contributed/v8/mjsunit/compiler/regress-7.js deleted file mode 100644 index d6034f99c22..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-7.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test correct truncation of tagged values. -var G = 42; - -function f() { - var v = G; - var w = v >> 0; - return w; -} - -for(var i=0; i<10000; i++) f(); - -assertEquals(G, f()); -G = 2000000000; -assertEquals(G, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-700883.js b/implementation-contributed/v8/mjsunit/compiler/regress-700883.js deleted file mode 100644 index 41440f3a3f0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-700883.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stress-inline - -function add(x) { - return x + x; -} - -add(0); -add(1); - -var min = Math.min; -function foo(x) { - x = x|0; - let y = add(x ? 800000000000 : NaN); - return min(y, x); -} - -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-7121.js b/implementation-contributed/v8/mjsunit/compiler/regress-7121.js deleted file mode 100644 index bdf3133bb8d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-7121.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { %_ToLength(42n) } -assertThrows(foo, TypeError); -%OptimizeFunctionOnNextCall(foo); -assertThrows(foo, TypeError); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-713367.js b/implementation-contributed/v8/mjsunit/compiler/regress-713367.js deleted file mode 100644 index 1bf0a044933..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-713367.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -var mp = Object.getPrototypeOf(0); - -function getRandomProperty(v) { - var properties; - if (mp) { properties = Object.getOwnPropertyNames(mp); } - if (properties.includes("constructor") && v.constructor.hasOwnProperty()) {; } - if (properties.length == 0) { return "0"; } - return properties[NaN]; -} - -var c = 0; - -function f() { - c++; - if (c === 3) %OptimizeFunctionOnNextCall(f); - if (c > 4) throw 42; - for (var x of ["x"]) { - getRandomProperty(0) ; - f(); - %_DeoptimizeNow(); - } -} - -assertThrowsEquals(f, 42); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-714483.js b/implementation-contributed/v8/mjsunit/compiler/regress-714483.js deleted file mode 100644 index 7fc88687063..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-714483.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function C1() { } -C1.prototype.f = function () { return 1; } - -function C2() { } -C2.prototype.f = function () { throw 2; } - -var o1 = new C1(); -var o2 = new C2(); - -function foo(o) { - return o.f(); -} - -foo(o1); -try { foo(o2); } catch(e) {} -foo(o1); -try { foo(o2); } catch(e) {} -%OptimizeFunctionOnNextCall(foo); -assertEquals(1, foo(o1)); -assertThrows(() => foo(o2)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-715204.js b/implementation-contributed/v8/mjsunit/compiler/regress-715204.js deleted file mode 100644 index 65f97c0ee38..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-715204.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var global = true; -global = false; - -function f() { - global = 1; - return !global; -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-715651.js b/implementation-contributed/v8/mjsunit/compiler/regress-715651.js deleted file mode 100644 index a75adc8ae7b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-715651.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - this.x = 1; -} - -var a = []; - -// Create enough objects to trigger slack tracking. -for (let i = 0; i < 100; i++) { - new f(); -} - -function h() { - // Create a new object and add an out-of-object property 'y'. - var o = new f(); - o.y = 1.5; - return o; -} - -function g(o) { - // Add more properties so that we trigger extension of out-ot-object - // property store. - o.u = 1.1; - o.v = 1.2; - o.z = 1.3; - // Return a field from the out-of-object-property store. - return o.y; -} - -g(h()); -g(h()); -%OptimizeFunctionOnNextCall(g); -assertEquals(1.5, g(h())); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-725743.js b/implementation-contributed/v8/mjsunit/compiler/regress-725743.js deleted file mode 100644 index 95904bc632a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-725743.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-turbo --cache=code --no-lazy - -function f() { - var n = a.length; - for (var i = 0; i < n; i++) { - } - for (var i = 0; i < n; i++) { - } -} -var a = "xxxxxxxxxxxxxxxxxxxxxxxxx"; -while (a.length < 100000) a = a + a; -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-726554.js b/implementation-contributed/v8/mjsunit/compiler/regress-726554.js deleted file mode 100644 index afd81936a5d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-726554.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function h(a,b){ - for(var i=0; i>> 24); - }; - - var e = 0x41000001; - - f(e); - %OptimizeFunctionOnNextCall(f); - assertEquals("A", f(e)); -})(); - -(function() { - function f(x) { - return (x >>> 24) & 0xffff; - }; - - f(1); - %OptimizeFunctionOnNextCall(f); - assertEquals(0, f(1)); - assertEquals(100, f((100 << 24) + 42)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-758096.js b/implementation-contributed/v8/mjsunit/compiler/regress-758096.js deleted file mode 100644 index 1ed32c02637..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-758096.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - var x = 1; - x.__proto__.f = function() { return 1; } - - function g() {} - g.prototype.f = function() { return 3; }; - var y = new g(); - - function f(obj) { - return obj.f(); - } - - f(x); - f(y); - f(x); - f(y); - %OptimizeFunctionOnNextCall(f); - assertEquals(1, f(x)); - assertEquals(3, f(y)); -})(); - -(function() { - function f() { return 1; } - function g() { return 2; } - - var global; - - function h(s) { - var fg; - var a = 0; - if (s) { - global = 0; - a = 1; - fg = f; - } else { - global = 1 - fg = g; - } - return fg() + a; - } - - h(0); - h(0); - h(1); - h(1); - %OptimizeFunctionOnNextCall(h); - assertEquals(2, h(0)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-758983.js b/implementation-contributed/v8/mjsunit/compiler/regress-758983.js deleted file mode 100644 index 45899c110ba..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-758983.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var holey = [ 2.2,,"x" ]; - -function f(b) { - holey[0] = 1.1; - var r = holey[0]; - r = b ? r : 0; - return r < 0; -} - -f(true); -f(true); -%OptimizeFunctionOnNextCall(f); -assertFalse(f(true)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-761892.js b/implementation-contributed/v8/mjsunit/compiler/regress-761892.js deleted file mode 100644 index 5423c59c049..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-761892.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - var x0 = (0 != Math.min(1, 1)) && 1; - 1.1!=(x||x0) -} - -f(1.1); -f(1.1); -%OptimizeFunctionOnNextCall(f); -f(1); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-762057.js b/implementation-contributed/v8/mjsunit/compiler/regress-762057.js deleted file mode 100644 index 4b5cab6ef58..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-762057.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function* foo() { - yield; - new Set(); - for (let x of []) { - for (let y of []) { - yield; - } - } -} - -let gaga = foo(); -gaga.next(); -%OptimizeFunctionOnNextCall(foo); -gaga.next(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-772420.js b/implementation-contributed/v8/mjsunit/compiler/regress-772420.js deleted file mode 100644 index 4b58b109097..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-772420.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(arg) { - var value; - // None of the branches of this switch are ever taken, but - // the sequence means value could be the hole. - switch (arg) { - case 1: - let let_var = 1; - case 2: - value = let_var; - } - // Speculative number binop with NumberOrOddball feedback. - // Shouldn't be optimized to pure operator since value's phi - // could theoretically be the hole (we would have already thrown a - // reference error in case 2 above if so, but TF typing still - // thinks it could be the hole). - return value * undefined; -} - -foo(3); -foo(3); -%OptimizeFunctionOnNextCall(foo); -foo(3); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-772872.js b/implementation-contributed/v8/mjsunit/compiler/regress-772872.js deleted file mode 100644 index 345ace82bd7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-772872.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - for (var x = 10; x > 5; x -= 16) {} -} -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-773954.js b/implementation-contributed/v8/mjsunit/compiler/regress-773954.js deleted file mode 100644 index b78a499d379..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-773954.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -'use strict'; -var a = { x:0 }; -var b = {}; -Object.defineProperty(b, "x", {get: function () {}}); - -function f(o) { - return 5 + o.x++; -} - -try { - f(a); - f(b); -} catch (e) {} -%OptimizeFunctionOnNextCall(f); -f(a); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-780658.js b/implementation-contributed/v8/mjsunit/compiler/regress-780658.js deleted file mode 100644 index 57fdbbabeda..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-780658.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function get1(l, b) { - return l[1]; -} - -function with_double(x) { - var o = {a: [x,x,x]}; - o.a.some_property = 1; - return get1(o.a); -} - -function with_tagged(x) { - var l = [{}, x,x]; - return get1(l); -} - -with_double(.5); -with_tagged({}); -with_double(.6); -with_tagged(null); -with_double(.5); -with_tagged({}); -%OptimizeFunctionOnNextCall(with_double); -with_double(.7); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-786521.js b/implementation-contributed/v8/mjsunit/compiler/regress-786521.js deleted file mode 100644 index 2b161270edd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-786521.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Provoke type None as result of a SpeculativeNumberMultiply to -// ensure that Turbofan can handle this. - -function inlined(b, x) { - if (b) { - x * 2 * 2 - } -} - -inlined(true, 1); -inlined(true, 2); -inlined(false, 1); - -function foo(b) { inlined(b, "") } -foo(false); foo(false); -%OptimizeFunctionOnNextCall(foo); -foo(true); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-788539.js b/implementation-contributed/v8/mjsunit/compiler/regress-788539.js deleted file mode 100644 index 889090cdd96..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-788539.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-verify - -// This test creates a FrameState node with a DeadValue parent framestate. -// Ensure that deadness is propagated along FrameState edges. - -function f1() { - return this; -} - -function f2(x, value, type) { - x instanceof type -} - -function f3(a) { - a.x = 0; - if (a.x === 0) { - a[1] = 0.1; - } - class B { - } - class C extends B { - bar() { - return super.foo() - } - } - B.prototype.foo = f1; - f2(new C().bar.call(), Object(), String); -} - -f3(new Array(1)); -f3(new Array(1)); -%OptimizeFunctionOnNextCall(f3); -f3(new Array(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-791245.js b/implementation-contributed/v8/mjsunit/compiler/regress-791245.js deleted file mode 100644 index 9018fb7526e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-791245.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var a, b; // Global variables that will end up with number map. - -for (var i = 0; i < 100000; i++) { - b = 1; - a = i + -0; // -0 is a number, so this will make "a" a heap object. - b = a; -} - -assertTrue(a === b); -gc(); -assertTrue(a === b); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-793863.js b/implementation-contributed/v8/mjsunit/compiler/regress-793863.js deleted file mode 100644 index 883805dff6f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-793863.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a) { - return arguments[0]; -} - -%OptimizeFunctionOnNextCall(f); -assertEquals(undefined, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-796041.js b/implementation-contributed/v8/mjsunit/compiler/regress-796041.js deleted file mode 100644 index e2c2e11c0b9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-796041.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -'use strict'; - -function f(abort, n, a, b) { - if (abort) return; - var x = a ? true : "" + a; - if (!a) { - var dead = n + 1 + 1; - if(!b) { - x = dead; - } - if (x) { - x = false; - } - if (b) { - x = false; - } - } - return x + 1; -} -f(false, 5); f(false, 6); f(false, 7); f(false, 8); - -function g(abort, a, b) { - return f(abort, "abc", a, b); -} - -g(true); g(true); g(true); g(true); - -%OptimizeFunctionOnNextCall(g); -g(false); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-797596.js b/implementation-contributed/v8/mjsunit/compiler/regress-797596.js deleted file mode 100644 index 4e3594bdb1f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-797596.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --allow-natives-syntax -var notCallable; -function inferReceiverMapsInDeadCode() { - var obj = { func() {} }; - gc(); - function wrappedCode() { try { code(); } catch (e) {} } - function code() { - obj.a; - try { - Object.defineProperty(obj, "func", { get() {} }); - } catch (neverCaught) {} - for (var i = 0; i < 1; i++) { - try { - notCallable(arguments[i]); - } catch (alwaysCaught) {} - } - } - wrappedCode(); - try { - %OptimizeFunctionOnNextCall(wrappedCode); - wrappedCode(); - } catch (e) {} -} -inferReceiverMapsInDeadCode(); -inferReceiverMapsInDeadCode(); -inferReceiverMapsInDeadCode(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-799263.js b/implementation-contributed/v8/mjsunit/compiler/regress-799263.js deleted file mode 100644 index b6b11653298..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-799263.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function opt(a, b) { - b[0] = 0; - - a.length; - - // TransitionElementsKind - for (let i = 0; i < 1; i++) - a[0] = 0; - - b[0] = 9.431092e-317; -} - -let arr1 = new Array(1); -arr1[0] = 'a'; -opt(arr1, [0]); - -let arr2 = [0.1]; -opt(arr2, arr2); - -%OptimizeFunctionOnNextCall(opt); - -opt(arr2, arr2); -assertEquals(9.431092e-317, arr2[0]); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-8.js b/implementation-contributed/v8/mjsunit/compiler/regress-8.js deleted file mode 100644 index 3a2388533cb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-8.js +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for the register allocator. -var gp = ""; -var yE = ""; -var W = ""; -var LA = ""; -var zE = ""; -var Fp = ""; -var AE = ""; -var Gob = ""; -var Hob = ""; -var Iob = ""; -var Job = ""; -var Kob = ""; -var Lob = ""; -var Mob = ""; -var p = ""; -function O() { this.append = function(a,b,c,d,e) { return a + b + c + d + e; } } - -function Nob(b,a) { - var c; - if (b==2) { - c=new O; - c.append(gp, - yE, - W, - LA+(a.Un+(zE+(Fp+(LA+(a.Im+(zE+(AE+(LA+(a.total+Gob))))))))), - p); - c=c.toString(); - } else { - if (b==1) { - if(a.total>=2E6) { - c=new O; - c.append(gp,yE,W,LA+(a.Un+(zE+(Fp+(LA+(a.Im+Hob))))),p); - c=c.toString(); - } else { - if(a.total>=2E5) { - c=new O; - c.append(gp,yE,W,LA+(a.Un+(zE+(Fp+(LA+(a.Im+Iob))))),p); - c=c.toString(); - } else { - if(a.total>=2E4) { - c=new O; - c.append(gp,yE,W,LA+(a.Un+(zE+(Fp+(LA+(a.Im+Job))))),p); - c=c.toString(); - } else { - if(a.total>=2E3) { - c=new O; - c.append(gp,yE,W,LA+(a.Un+(zE+(Fp+(LA+(a.Im+Kob))))),p); - c=c.toString(); - } else { - if(a.total>=200) { - c=new O; - c.append(gp,yE,W,LA+(a.Un+(zE+(Fp+(LA+(a.Im+Lob))))),p); - c=c.toString(); - } else { - c=new O; - c.append(gp,yE,W, - LA+(a.Un+(zE+(Fp+(LA+(a.Im+(zE+(Mob+(LA+(a.total+zE))))))))), - p); - c=c.toString(); - } - c=c; - } - c=c; - } - c=c; - } - c=c; - } - c=c; - } else { - c=new O; - c.append(gp,yE,W, - LA+(a.Un+(zE+(Fp+(LA+(a.Im+(zE+(AE+(LA+(a.total+zE))))))))), - p); - c=c.toString(); - } - c=c; - } - return c; -} -Nob(2, { Un: "" , Im: "" , total: 42}); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-801097.js b/implementation-contributed/v8/mjsunit/compiler/regress-801097.js deleted file mode 100644 index d488ce4deb1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-801097.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function GetFunction() { - var source = "return ((dividend | 0) / (("; - for (var i = 0; i < 0x8000; i++) { - source += "a," - } - source += "a) | 0)) | 0"; - return Function("dividend", source); -} - -var func = GetFunction(); -assertThrows("func();"); -%OptimizeFunctionOnNextCall(func); -assertThrows("func()"); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-803022.js b/implementation-contributed/v8/mjsunit/compiler/regress-803022.js deleted file mode 100644 index 30e13cf0320..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-803022.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - for (var a = 0; a < 2; a++) { - if (a === 1) %OptimizeOsr(); - while (0 && 1) { - for (var j = 1; j < 2; j++) { } - } - } -} - -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-808472.js b/implementation-contributed/v8/mjsunit/compiler/regress-808472.js deleted file mode 100644 index 8c8bdf1d0d1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-808472.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function opt() { - let opt, arr = [...[...[...[...new Uint8Array(0x10000)]]]]; - while (arr--) { - opt = ((typeof opt) === 'undefined') ? /a/ : arr; - } -} -opt(); -opt(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-815392.js b/implementation-contributed/v8/mjsunit/compiler/regress-815392.js deleted file mode 100644 index 367c5e824d3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-815392.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const __f_1 = eval(`(function __f_1() { - class Derived extends Object { - constructor() { - ${"this.a=1;".repeat(0x3fffe-8)} - } - } - return Derived; -})`); -assertThrows(() => new (__f_1())()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-817225.js b/implementation-contributed/v8/mjsunit/compiler/regress-817225.js deleted file mode 100644 index 22f03756057..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-817225.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -function inlined(abort, n, a, b) { - if (abort) return; - var x = a ? true : "" + a; - if (!a) { - var y = n + y + 10; - if(!b) { - x = y; - } - if (x) { - x = false; - } - } - return x + 1; -} -inlined(); -function optimized(abort, a, b) { - return inlined(abort, "abc", a, b); -} -optimized(true); -%OptimizeFunctionOnNextCall(optimized); -optimized(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-8380.js b/implementation-contributed/v8/mjsunit/compiler/regress-8380.js deleted file mode 100644 index d0bf28571e4..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-8380.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function reduceLHS() { - for (var i = 0; i < 2 ;i++) { - let [q, r] = [1n, 1n]; - r = r - 1n; - q += 1n; - q = r; - } -} - -reduceLHS(); -%OptimizeFunctionOnNextCall(reduceLHS); -reduceLHS(); - - -function reduceRHS() { - for (var i = 0; i < 2 ;i++) { - let [q, r] = [1n, 1n]; - r = 1n - r; - q += 1n; - q = r; - } -} - -reduceRHS(); -%OptimizeFunctionOnNextCall(reduceRHS); -reduceRHS(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-841117.js b/implementation-contributed/v8/mjsunit/compiler/regress-841117.js deleted file mode 100644 index a059922a6e6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-841117.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v = 1e9; -function f() { return Math.floor(v / 10); } -assertEquals(1e8, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(1e8, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-884052.js b/implementation-contributed/v8/mjsunit/compiler/regress-884052.js deleted file mode 100644 index babfcc3cea9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-884052.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - var a = new Array(2); - for (var i = 1; i > -1; i = i - 2) { - if (i < a.length) a = new Array(i); - } -} - -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-888923.js b/implementation-contributed/v8/mjsunit/compiler/regress-888923.js deleted file mode 100644 index e352673b7d9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-888923.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function f(o) { - o.x; - Object.create(o); - return o.y.a; - } - - f({ x : 0, y : { a : 1 } }); - f({ x : 0, y : { a : 2 } }); - %OptimizeFunctionOnNextCall(f); - assertEquals(3, f({ x : 0, y : { a : 3 } })); -})(); - -(function() { - function f(o) { - let a = o.y; - Object.create(o); - return o.x + a; - } - - f({ x : 42, y : 21 }); - f({ x : 42, y : 21 }); - %OptimizeFunctionOnNextCall(f); - assertEquals(63, f({ x : 42, y : 21 })); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-890057.js b/implementation-contributed/v8/mjsunit/compiler/regress-890057.js deleted file mode 100644 index 655c4431e9f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-890057.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() {} -function g() { - f.prototype = undefined; - f(); - new f(); -} - -// Do not use %OptimizeFunctionOnNextCall here, this particular bug needs -// to trigger truly concurrent compilation. -for (let i = 0; i < 10000; i++) g(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-890620.js b/implementation-contributed/v8/mjsunit/compiler/regress-890620.js deleted file mode 100644 index f5fc7f4f659..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-890620.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = 42; - -function g(n) { - while (n > 0) { - a = new Array(n); - n--; - } -} - -g(1); - -function f() { - g(); -} - -f(); -%OptimizeFunctionOnNextCall(f); -f(); -assertEquals(1, a.length); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-895799.js b/implementation-contributed/v8/mjsunit/compiler/regress-895799.js deleted file mode 100644 index 4305b7427b1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-895799.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class C extends Object { - constructor() { - try { super(); } catch (e) { }; - return 1; - } -} - -class A extends C { - constructor() { - super(); - throw new Error(); - return { get: () => this }; - } -} - -var D = new Proxy(A, { get() { %DeoptimizeFunction(A); } }); - -try { Reflect.construct(A, [], D); } catch(e) {} -%OptimizeFunctionOnNextCall(A); -try { Reflect.construct(A, [], D); } catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-902608.js b/implementation-contributed/v8/mjsunit/compiler/regress-902608.js deleted file mode 100644 index faa9ec49df8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-902608.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -async function f() { - var a = [...new Int8Array([, ...new Uint8Array(65536)])]; - var p = new Proxy([f], { - set: function () { }, - done: undefined.prototype - }); -} - -f() -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-905555-2.js b/implementation-contributed/v8/mjsunit/compiler/regress-905555-2.js deleted file mode 100644 index 5852c6dd432..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-905555-2.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --block-concurrent-recompilation --noalways-opt - -global = 1; - -function boom(value) { - return global; -} - -assertEquals(1, boom()); -assertEquals(1, boom()); -%OptimizeFunctionOnNextCall(boom, "concurrent"); -assertEquals(1, boom()); - -delete this.global; - -%UnblockConcurrentRecompilation(); - -// boom should be deoptimized because the global property cell has changed. -assertUnoptimized(boom, "sync"); - -assertThrows(boom); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-905555.js b/implementation-contributed/v8/mjsunit/compiler/regress-905555.js deleted file mode 100644 index bc7ba7428ef..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-905555.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --block-concurrent-recompilation --noalways-opt - -global = 1; - -function boom(value) { - return global; -} - -assertEquals(1, boom()); -assertEquals(1, boom()); -%OptimizeFunctionOnNextCall(boom, "concurrent"); -assertEquals(1, boom()); - -this.__defineGetter__("global", () => 42); - -%UnblockConcurrentRecompilation(); - -// boom should be deoptimized because the global property cell has changed. -assertUnoptimized(boom, "sync"); - -assertEquals(42, boom()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-910838.js b/implementation-contributed/v8/mjsunit/compiler/regress-910838.js deleted file mode 100644 index 6e62a453e06..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-910838.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(b, s, x) { - if (!b) { - return (x ? b : s * undefined) ? 1 : 42; - } -} - -function g(b, x) { - return f(b, 'abc', x); -} - -f(false, 0, 0); -g(true, 0); -%OptimizeFunctionOnNextCall(g); -assertEquals(42, g(false, 0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-913232.js b/implementation-contributed/v8/mjsunit/compiler/regress-913232.js deleted file mode 100644 index efd7fb8e5fe..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-913232.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function* E(b) { - while (true) { - for (yield* 0; b; yield* 0) {} - } -} - -%OptimizeFunctionOnNextCall(E); -E(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-919754.js b/implementation-contributed/v8/mjsunit/compiler/regress-919754.js deleted file mode 100644 index 5f20aad928e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-919754.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -function f(get, ...a) { - for (let i = 0; i < 1000; i++) { - if (i === 999) %OptimizeOsr(); - a.map(f); - } - return get(); -} -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-924151.js b/implementation-contributed/v8/mjsunit/compiler/regress-924151.js deleted file mode 100644 index cfaaedfb219..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-924151.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g(code) { - try { - if (typeof code === 'function') { - +Symbol(); - } else { - eval(); - } - } catch (e) { - return; - } - dummy(); -} - -function f() { - g(g); -} - -try { g(); } catch(e) {; } - -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-arguments.js b/implementation-contributed/v8/mjsunit/compiler/regress-arguments.js deleted file mode 100644 index d32b435ff39..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-arguments.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test of arguments. - -// Test passing null or undefined as receiver. -function f() { return this.foo; } - -function g() { return f.apply(null, arguments); } -function h() { return f.apply(void 0, arguments); } - -var foo = 42; - -for (var i = 0; i < 3; i++) assertEquals(42, g()); -%OptimizeFunctionOnNextCall(g); -%OptimizeFunctionOnNextCall(f); -assertEquals(42, g()); - -for (var i = 0; i < 3; i++) assertEquals(42, h()); -%OptimizeFunctionOnNextCall(h); -%OptimizeFunctionOnNextCall(f); -assertEquals(42, h()); - -var G1 = 21; -var G2 = 22; - -function u() { - var v = G1 + G2; - return f.apply(v, arguments); -} - -Number.prototype.foo = 42; -delete Number.prototype.foo; - -for (var i = 0; i < 3; i++) assertEquals(void 0, u()); -%OptimizeFunctionOnNextCall(u); -%OptimizeFunctionOnNextCall(f); -assertEquals(void 0, u()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-arrayliteral.js b/implementation-contributed/v8/mjsunit/compiler/regress-arrayliteral.js deleted file mode 100644 index 89387850045..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-arrayliteral.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for array literals. - -var G = 41; -var H = 42; -function f() { var v = [G,H]; return v[1]; } -assertEquals(42, f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-bit-number-constant.js b/implementation-contributed/v8/mjsunit/compiler/regress-bit-number-constant.js deleted file mode 100644 index d36fe30ce06..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-bit-number-constant.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var stdlib = this; -var buffer = new ArrayBuffer(64 * 1024); -var foreign = {} - -var foo = (function Module(stdlib, foreign, heap) { - "use asm"; - function foo(i) { - return !(i ? 1 : false); - } - return {foo:foo}; -})(stdlib, foreign, buffer).foo; - -assertFalse(foo(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-closures-with-eval.js b/implementation-contributed/v8/mjsunit/compiler/regress-closures-with-eval.js deleted file mode 100644 index d95d128a9d7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-closures-with-eval.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Verifies that closures in presence of eval work fine. -function withEval(expr, filter) { - function walk(v) { - for (var i in v) { - for (var i in v) {} - } - %OptimizeFunctionOnNextCall(filter); - return filter(v); - } - - var o = eval(expr); - return walk(o); -} - -function makeTagInfoJSON(n) { - var a = new Array(n); - for (var i = 0; i < n; i++) a.push('{}'); - return a; -} - -var expr = '([' + makeTagInfoJSON(128).join(', ') + '])' - -for (var n = 0; n < 5; n++) { - withEval(expr, function(a) { return a; }); -} -%OptimizeFunctionOnNextCall(withEval); -withEval(expr, function(a) { return a; }); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-compare-negate.js b/implementation-contributed/v8/mjsunit/compiler/regress-compare-negate.js deleted file mode 100644 index e18d6a0f0ed..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-compare-negate.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function CompareNegate(a,b) { - a = a|0; - b = b|0; - var sub = 0 - b; - return a < (sub|0); -} - -var x = CompareNegate(1,0x80000000); -%OptimizeFunctionOnNextCall(CompareNegate); -CompareNegate(1,0x80000000); -assertOptimized(CompareNegate); -assertEquals(x, CompareNegate(1,0x80000000)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-const.js b/implementation-contributed/v8/mjsunit/compiler/regress-const.js deleted file mode 100644 index 5099c2f6295..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-const.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test const initialization and assignments. -function f() { - var x = 42; - while (true) { - const y = x; - if (--x == 0) return y; - } -} - -function g() { - const x = 42; - return x; -} - -for (var i = 0; i < 5; i++) { - f(); - g(); -} - -%OptimizeFunctionOnNextCall(f); -%OptimizeFunctionOnNextCall(g); - -assertEquals(1, f()); -assertEquals(42, g()); - - -function h(a, b) { - var r = a + b; - const X = 42; - return r + X; -} - -for (var i = 0; i < 5; i++) h(1,2); - -%OptimizeFunctionOnNextCall(h); - -assertEquals(45, h(1,2)); -assertEquals("foo742", h("foo", 7)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-crbug-540593.js b/implementation-contributed/v8/mjsunit/compiler/regress-crbug-540593.js deleted file mode 100644 index ec68e857711..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-crbug-540593.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --enable-slow-asserts --turbo-inlining - -var __f_2 = (function(stdlib) { - "use asm"; - var __v_3 = stdlib.Symbol; - function __f_2() { return __v_3(); } - return __f_2; -})(this); -%OptimizeFunctionOnNextCall(__f_2); -__f_2(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-dead-throw-inlining.js b/implementation-contributed/v8/mjsunit/compiler/regress-dead-throw-inlining.js deleted file mode 100644 index 097a20bc41d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-dead-throw-inlining.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g() { if (false) throw 0; } -function f() { g(); } - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-deopt-call-as-function.js b/implementation-contributed/v8/mjsunit/compiler/regress-deopt-call-as-function.js deleted file mode 100644 index c4080969551..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-deopt-call-as-function.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test deoptimization after inlined call. - -function bar(a, b) {try { return a; } finally { } } - -function test_context() { - function foo(x) { return 42; } - var s, t; - for (var i = 0x7fff0000; i < 0x80000000; i++) { - bar(t = foo(i) ? bar(42 + i - i) : bar(0), s = i + t); - } - return s; -} -assertEquals(0x7fffffff + 42, test_context()); - - -function value_context() { - function foo(x) { return 42; } - var s, t; - for (var i = 0x7fff0000; i < 0x80000000; i++) { - bar(t = foo(i), s = i + t); - } - return s; -} -assertEquals(0x7fffffff + 42, value_context()); - - -function effect_context() { - function foo(x) { return 42; } - var s, t; - for (var i = 0x7fff0000; i < 0x80000000; i++) { - bar(foo(i), s = i + 42); - } - return s; -} -assertEquals(0x7fffffff + 42, effect_context()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-escape-analysis-indirect.js b/implementation-contributed/v8/mjsunit/compiler/regress-escape-analysis-indirect.js deleted file mode 100644 index 01f3e134664..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-escape-analysis-indirect.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(apply) { - var value = 23; - apply(function bogeyman() { value = 42 }); - return value; -} -function apply(fun) { fun() } -assertEquals(42, f(apply)); -assertEquals(42, f(apply)); -%NeverOptimizeFunction(apply); -%OptimizeFunctionOnNextCall(f); -assertEquals(42, f(apply)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-f64-w32-change.js b/implementation-contributed/v8/mjsunit/compiler/regress-f64-w32-change.js deleted file mode 100644 index 834da290e09..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-f64-w32-change.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var f = (function () { - "use asm"; - var f64use = 0; - function f(x, b) { - x = x|0; - b = b >>> 0; - var f64 = x ? -1 : b; - f64use = f64 + 0.5; - var w32 = x ? 1 : f64; - return (w32 + 1)|0; - } - - return f; -})(); - -%OptimizeFunctionOnNextCall(f); -assertEquals(0, f(0, -1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-funarguments.js b/implementation-contributed/v8/mjsunit/compiler/regress-funarguments.js deleted file mode 100644 index c913bd95213..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-funarguments.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test function.arguments. - -function A() {} -function B() {} - -function fee(x, y) { - if (x == 1) return fee["arg" + "uments"]; - if (x == 2) return gee["arg" + "uments"]; - return 42; -} - -function gee(x) { return this.f(2 - x, "f"); } - -function foo(x, y) { - if (x == 0) return foo["arg" + "uments"]; - if (x == 1) return goo["arg" + "uments"]; - return 42; -} - -function goo(x) { return this.f(x, "f"); } - -A.prototype.f = fee; -A.prototype.g = gee; - -B.prototype.f = foo; -B.prototype.g = goo; - -var o = new A(); - -function hej(x) { - if (x == 0) return o.g(x, "h"); - if (x == 1) return o.g(x, "h"); - return o.g(x, "z"); -} - -function opt() { - for (var k=0; k<2; k++) { - for (var i=0; i<5; i++) o.g(i, "g"); - for (var j=0; j<5; j++) hej(j); - } - %OptimizeFunctionOnNextCall(o.g); - %OptimizeFunctionOnNextCall(hej); -} - -opt(); -assertArrayEquals([0, "g"], o.g(0, "g")); -assertArrayEquals([1, "f"], o.g(1, "g")); -assertArrayEquals([0, "h"], hej(0)); -assertArrayEquals([1, "f"], hej(1)); - -o = new B(); - -opt(); -assertArrayEquals([0, "f"], o.g(0, "g")); -assertArrayEquals([1, "g"], o.g(1, "g")); -assertArrayEquals([0, "f"], hej(0)); -assertArrayEquals([1, "h"], hej(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-funcaller.js b/implementation-contributed/v8/mjsunit/compiler/regress-funcaller.js deleted file mode 100644 index 5c2a59720be..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-funcaller.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test function.caller. -function A() {} - -function fun(x) { - if (x == 0) return fun.caller; - if (x == 1) return gee.caller; - return 42; -} -function gee(x) { return this.f(x); } - -A.prototype.f = fun; -A.prototype.g = gee; - -var o = new A(); - -for (var i=0; i<5; i++) { - o.g(i); -} -%OptimizeFunctionOnNextCall(o.g); -assertEquals(gee, o.g(0)); -assertEquals(null, o.g(1)); - -// Test when called from another function. -function hej(x) { - if (x == 0) return o.g(x); - if (x == 1) return o.g(x); - return o.g(x); -} - -for (var j=0; j<5; j++) { - hej(j); -} -%OptimizeFunctionOnNextCall(hej); -assertEquals(gee, hej(0)); -assertEquals(hej, hej(1)); - -// Test when called from eval. -function from_eval(x) { - if (x == 0) return eval("o.g(x);"); - if (x == 1) return eval("o.g(x);"); - return o.g(x); -} - -for (var j=0; j<5; j++) { - from_eval(j); -} -%OptimizeFunctionOnNextCall(from_eval); -assertEquals(gee, from_eval(0)); -assertEquals(from_eval, from_eval(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-gap.js b/implementation-contributed/v8/mjsunit/compiler/regress-gap.js deleted file mode 100644 index a812daa44a6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-gap.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test that stresses the register allocator gap instruction. - -function small_select(n, v1, v2) { - for (var i = 0; i < n; ++i) { - var tmp = v1; - v1 = v2; - v2 = tmp; - } - return v1; -} - -function select(n, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) { - for (var i = 0; i < n; ++i) { - var tmp = v1; - v1 = v2; - v2 = v3; - v3 = v4; - v4 = v5; - v5 = v6; - v6 = v7; - v7 = v8; - v8 = v9; - v9 = v10; - v10 = tmp; - } - return v1; -} - -function select_while(n, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) { - var i = 0; - while (i < n) { - var tmp = v1; - v1 = v2; - v2 = v3; - v3 = v4; - v4 = v5; - v5 = v6; - v6 = v7; - v7 = v8; - v8 = v9; - v9 = v10; - v10 = tmp; - i++; - } - return v1; -} - -function two_cycles(n, v1, v2, v3, v4, v5, x1, x2, x3, x4, x5) { - for (var i = 0; i < n; ++i) { - var tmp = v1; - v1 = v2; - v2 = v3; - v3 = v4; - v4 = v5; - v5 = tmp; - tmp = x1; - x1 = x2; - x2 = x3; - x3 = x4; - x4 = x5; - x5 = tmp; - } - return v1 + x1; -} - -function two_cycles_while(n, v1, v2, v3, v4, v5, x1, x2, x3, x4, x5) { - var i = 0; - while (i < n) { - var tmp = v1; - v1 = v2; - v2 = v3; - v3 = v4; - v4 = v5; - v5 = tmp; - tmp = x1; - x1 = x2; - x2 = x3; - x3 = x4; - x4 = x5; - x5 = tmp; - i++; - } - return v1 + x1; -} -assertEquals(1, small_select(0, 1, 2)); -assertEquals(2, small_select(1, 1, 2)); -assertEquals(1, small_select(10, 1, 2)); - -assertEquals(1, select(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); -assertEquals(4, select(3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); -assertEquals(10, select(9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); - -assertEquals(1 + 6, two_cycles(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); -assertEquals(4 + 9, two_cycles(3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); -assertEquals(5 + 10, two_cycles(9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); - -assertEquals(1, select_while(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); -assertEquals(4, select_while(3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); -assertEquals(10, select_while(9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); - -assertEquals(1 + 6, two_cycles_while(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); -assertEquals(4 + 9, two_cycles_while(3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); -assertEquals(5 + 10, two_cycles_while(9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-gvn.js b/implementation-contributed/v8/mjsunit/compiler/regress-gvn.js deleted file mode 100644 index 7055e349247..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-gvn.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// -// Regression test for global value numbering. - -function test(a) { - var res = a[0] + a[0]; - if (res == 0) { - a[0] = 1; - } - return a[0]; -} - -var a = new Array(); - -var n = 100; - -var result = 0; -for (var i = 0; i < n; ++i) { - if (i == 10) %OptimizeFunctionOnNextCall(test); - a[0] = 0; - result += test(a); -} - - -assertEquals(n, result); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-inline-callfunctionstub.js b/implementation-contributed/v8/mjsunit/compiler/regress-inline-callfunctionstub.js deleted file mode 100644 index 33655346a85..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-inline-callfunctionstub.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test inlined of calls-as-function two levels deep. -function f() { return 42; } - -var o = {g : function () { return f(); } } -function main(func) { - var v=0; - for (var i=0; i<1; i++) { - if (func()) v = 42; - } -} - -main(o.g); -main(o.g); -main(o.g); -%OptimizeFunctionOnNextCall(main); -main(o.g); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-int32array-outofbounds-nan.js b/implementation-contributed/v8/mjsunit/compiler/regress-int32array-outofbounds-nan.js deleted file mode 100644 index 2eba2a4f29f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-int32array-outofbounds-nan.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM32 = new stdlib.Int32Array(heap); - function foo(i) { - i = i|0; - return +MEM32[i >> 2]; - } - return {foo: foo}; -} - -var foo = Module(this, {}, new ArrayBuffer(4)).foo; -assertEquals(NaN, foo(-4)); -assertEquals(NaN, foo(4)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-intoverflow.js b/implementation-contributed/v8/mjsunit/compiler/regress-intoverflow.js deleted file mode 100644 index 063a376148d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-intoverflow.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test overflow checks in optimized code. -function testMul(a, b) { - a *= 2; - b *= 2; - if (a < 1 && b < 1) { - return a * b; - } -} - -for (var i=0; i<5; i++) testMul(0,0); -%OptimizeFunctionOnNextCall(testMul); -assertEquals(4611686018427388000, testMul(-0x40000000, -0x40000000)); - -function testAdd(a, b) { - a *= 2; - b *= 2; - if (a < 1 && b < 1) { - return a + b; - } -} - -for (var i=0; i<5; i++) testAdd(0,0); -%OptimizeFunctionOnNextCall(testAdd); -assertEquals(-4294967296, testAdd(-0x40000000, -0x40000000)); - - -function testSub(a, b) { - a *= 2; - b *= 2; - if (b == 2) {print(a); print(b);} - if (a < 1 && b < 3) { - return a - b; - } -} - -for (var i=0; i<5; i++) testSub(0,0); -%OptimizeFunctionOnNextCall(testSub); -assertEquals(-2147483650, testSub(-0x40000000, 1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-lazy-deopt.js b/implementation-contributed/v8/mjsunit/compiler/regress-lazy-deopt.js deleted file mode 100644 index 766220763bd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-lazy-deopt.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test lazy deoptimization after Call builtin. - -function foo() { return 1; } - -function f(x, y) { - var a = [0]; - if (x == 0) { - %DeoptimizeFunction(f); - return 1; - } - a[0] = %_Call(f, null, x - 1); - return x >> a[0]; -} - -f(42); -f(42); -assertEquals(42, f(42)); -%OptimizeFunctionOnNextCall(f); -assertEquals(42, f(42)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-lbranch-double.js b/implementation-contributed/v8/mjsunit/compiler/regress-lbranch-double.js deleted file mode 100644 index dca6d5bace7..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-lbranch-double.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// ARM's code generator for LBranch had a bug, swapping the true/false -// branches when the representation of the condition is a double. - -function foo() { - return Math.sqrt(2.6415) ? 88 : 99; -} - -assertEquals(88, foo()); -assertEquals(88, foo()); -%OptimizeFunctionOnNextCall(foo) -assertEquals(88, foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-loadfield.js b/implementation-contributed/v8/mjsunit/compiler/regress-loadfield.js deleted file mode 100644 index a3da156e3b9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-loadfield.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Regression test for GVN on field loads. - -function bar() {} - -// Make sure there is a transition on adding "bar" inobject property. -var b = new bar(); -b.bar = "bar"; - -function test(a) { - var b = new Array(10); - for (var i = 0; i < 10; i++) { - b[i] = new bar(); - } - - for (var i = 0; i < 10; i++) { - b[i].bar = a.foo; - } -} - -// Create an object with fast backing store properties. -var a = {}; -a.p1 = ""; -a.p2 = ""; -a.p3 = ""; -a.p4 = ""; -a.p5 = ""; -a.p6 = ""; -a.p7 = ""; -a.p8 = ""; -a.p9 = ""; -a.p10 = ""; -a.p11 = ""; -a.foo = "foo"; -for (var i = 0; i < 5; i++) { - test(a); -} -%OptimizeFunctionOnNextCall(test); -test(a); - -test(""); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-loop-deopt.js b/implementation-contributed/v8/mjsunit/compiler/regress-loop-deopt.js deleted file mode 100644 index 7906761561e..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-loop-deopt.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test while loops and continue. -function h() { - var i = 3, j = 0; - while(--i >= 0) { - var x = i & 1; - if(x > 0) { - continue; - } - j++; - } - return j; -} - -assertEquals(2, h()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-loop-variable-if.js b/implementation-contributed/v8/mjsunit/compiler/regress-loop-variable-if.js deleted file mode 100644 index ec284e92227..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-loop-variable-if.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-loop-variable - -function f() { - for (var i = 0; i != 10; i++) { - if (i < 8) print("x"); - } -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-loop-variable-unsigned.js b/implementation-contributed/v8/mjsunit/compiler/regress-loop-variable-unsigned.js deleted file mode 100644 index 751136eb131..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-loop-variable-unsigned.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-loop-variable - -(function() { - function f() { - for (var i = 0; i < 4294967295; i += 2) { - if (i === 10) break; - } - } - f(); -})(); - -(function() { - function f() { - for (var i = 0; i < 4294967293; i += 2) { - if (i === 10) break; - } - } - f(); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-math-sign-nan-type.js b/implementation-contributed/v8/mjsunit/compiler/regress-math-sign-nan-type.js deleted file mode 100644 index e16eba8c5a3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-math-sign-nan-type.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a) { - return Math.sign(+a) < 2; -} - -f(NaN); -f(NaN); -%OptimizeFunctionOnNextCall(f); -assertFalse(f(NaN)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-max.js b/implementation-contributed/v8/mjsunit/compiler/regress-max.js deleted file mode 100644 index 7556f2f733d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-max.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test Math.max with negative zero as input. -for (var i = 0; i < 5; i++) Math.max(0, 0); -Math.max(0, 0); - -var r = Math.max(-0, -0); -assertEquals(-Infinity, 1 / r); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-ntl-effect.js b/implementation-contributed/v8/mjsunit/compiler/regress-ntl-effect.js deleted file mode 100644 index 708fe32828c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-ntl-effect.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g() { - throw 0; -} - -function f() { - g(); - while (1) {} -} - -assertThrows(function () { f(); }); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-number-is-hole-nan.js b/implementation-contributed/v8/mjsunit/compiler/regress-number-is-hole-nan.js deleted file mode 100644 index 368c8371637..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-number-is-hole-nan.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = [, 2.121736758e-314]; - -function foo() { return a[1]; } - -assertEquals(2.121736758e-314, foo()); -assertEquals(2.121736758e-314, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(2.121736758e-314, foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-or.js b/implementation-contributed/v8/mjsunit/compiler/regress-or.js deleted file mode 100644 index 939f2c3ffab..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-or.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test deoptimization inside short-circuited expressions. -function f1(x) { - var c = "fail"; - if (!x || g1()) { - c = ~x; - } - return c; -} - -function g1() { try { return 1; } finally {} } - -for (var i = 0; i < 5; i++) f1(42); -%OptimizeFunctionOnNextCall(f1); - -assertEquals(-1, f1(0)); -assertEquals(-43, f1(42)); -assertEquals(-1, f1("")); - -function f2(x) { - var c = "fail"; - if (!x || !g2()) { - c = ~x; - } - return c; -} - -function g2() { try { return 0; } finally {} } - -for (var i = 0; i < 5; i++) f2(42); -%OptimizeFunctionOnNextCall(f2); - -assertEquals(-1, f2("")); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-register-allocator.js b/implementation-contributed/v8/mjsunit/compiler/regress-register-allocator.js deleted file mode 100644 index 08877eeb003..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-register-allocator.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, buffer) { - "use asm"; - var HEAP32 = new stdlib.Int32Array(buffer); - function g(a) { - HEAP32[a] = 9982 * 100; - return a; - } - function f(i1) { - i1 = i1 | 0; - var i2 = HEAP32[i1 >> 2] | 0; - g(i1); - L2909: { - L2: { - if (0) { - if (0) break L2; - g(i2); - break L2909; - } - } - var r = (HEAP32[1] | 0) / 100 | 0; - g(r); - return r; - } - } - return {f: f}; -} - -var f = Module(this, {}, new ArrayBuffer(64 * 1024)).f; -assertEquals(9982, f(1)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-register-allocator2.js b/implementation-contributed/v8/mjsunit/compiler/regress-register-allocator2.js deleted file mode 100644 index 06e0c49dca3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-register-allocator2.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - var x = 0; - var y = 0; - x ^= undefined; - assertEquals(x /= 1); - assertEquals(NaN, y %= 1); - assertEquals(y = 1); - f(); - y = -2; - assertEquals(x >>= 1); - assertEquals(0, ((y+(y+(y+((y^(x%5))+y)))+(y+y))>>y)+y); -} -try { f(); } catch (e) {} diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-register-allocator3.js b/implementation-contributed/v8/mjsunit/compiler/regress-register-allocator3.js deleted file mode 100644 index f412c5754c8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-register-allocator3.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function Module() { - "use asm"; - function f() { - var $0 = 0, $25 = 0, $i$014$i = 0, $sum$013$i = 0, $v_0$01$i = 0, $v_1$02$i = 0, $v_10$011$i = 0, $v_11$012$i = 0, $v_2$03$i = 0, $v_3$04$i = 0, $v_4$05$i = 0, $v_5$06$i = 0, $v_6$07$i = 0, $v_7$08$i = 0, $v_8$09$i = 0, $v_9$010$i = 0; - $i$014$i = 0; - $sum$013$i = 0; - $v_0$01$i = 8; - $v_1$02$i = 9; - $v_10$011$i = 18; - $v_11$012$i = 19; - $v_2$03$i = 10; - $v_3$04$i = 11; - $v_4$05$i = 12; - $v_5$06$i = 13; - $v_6$07$i = 14; - $v_7$08$i = 15; - $v_8$09$i = 16; - $v_9$010$i = 17; - do { - $v_0$01$i = $v_3$04$i + $v_9$010$i + $v_0$01$i | 0; - $v_1$02$i = $v_4$05$i + $v_10$011$i + $v_1$02$i | 0; - $v_2$03$i = $v_5$06$i + $v_11$012$i + $v_2$03$i | 0; - $v_3$04$i = $v_3$04$i + $v_6$07$i + $v_0$01$i | 0; - $v_4$05$i = $v_4$05$i + $v_7$08$i + $v_1$02$i | 0; - $v_5$06$i = $v_5$06$i + $v_8$09$i + $v_2$03$i | 0; - $v_6$07$i = $v_6$07$i + $v_9$010$i + $v_3$04$i | 0; - $v_7$08$i = $v_7$08$i + $v_10$011$i + $v_4$05$i | 0; - $v_8$09$i = $v_8$09$i + $v_11$012$i + $v_5$06$i | 0; - $v_9$010$i = $v_0$01$i + $v_9$010$i + $v_6$07$i | 0; - $v_10$011$i = $v_1$02$i + $v_10$011$i + $v_7$08$i | 0; - $v_11$012$i = $v_2$03$i + $v_11$012$i + $v_8$09$i | 0; - $25 = $v_0$01$i + $v_1$02$i | 0; - $sum$013$i = $v_2$03$i + $sum$013$i + $v_5$06$i + $v_4$05$i + $v_8$09$i + $v_3$04$i + $25 + $v_7$08$i + $v_11$012$i + $v_6$07$i + $v_10$011$i + $v_9$010$i | 0; - $i$014$i = $i$014$i + 1 | 0; - } while (($i$014$i | 0) <= 0); - return $sum$013$i - ($v_5$06$i + $v_2$03$i + $v_4$05$i + $v_8$09$i + $25 + $v_3$04$i + $v_7$08$i + $v_11$012$i + $v_6$07$i + $v_10$011$i + $v_9$010$i); - } - return { f: f }; -} - -Module().f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-rep-change.js b/implementation-contributed/v8/mjsunit/compiler/regress-rep-change.js deleted file mode 100644 index c8a0983c44c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-rep-change.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Regression test for the case where a phi has two input operands with -// the same value. - -function test(start) { - if (true) { - for (var i = start; i < 10; i++) { } - } - for (var i = start; i < 10; i++) { } -} - -var n = 3; - -for (var i = 0; i < n; ++i) { - test(0); -} - -%OptimizeFunctionOnNextCall(test); -test(0); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-serialized-slots.js b/implementation-contributed/v8/mjsunit/compiler/regress-serialized-slots.js deleted file mode 100644 index 0bd7528f100..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-serialized-slots.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// The test verifies that parameters of the outer function are correctly -// accessible from the inner closure. - -function runner(f, expected) { - for (var i = 0; i < 10000; i++) { // Loop to trigger optimization. - assertEquals(expected, f.call(this, 10)); - } -} - -Function.prototype.bind = function(thisObject) -{ - var func = this; - var args = Array.prototype.slice.call(arguments, 1); - function bound() - { - // Note outer function parameter access (|thisObject|). - return func.apply( - thisObject, - args.concat(Array.prototype.slice.call(arguments, 0))); - } - return bound; -} - -function sum(x, y) { - return x + y; -} - -function test(n) { - runner(sum.bind(this, n), n + 10); -} - -test(1); -test(42); -test(239); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-shared-deopt.js b/implementation-contributed/v8/mjsunit/compiler/regress-shared-deopt.js deleted file mode 100644 index 669e0e2f1de..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-shared-deopt.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var soft = false; - -// disable optimization of this global -soft = true; -soft = false; -soft = true; -soft = false; - -function test() { - var f4 = makeF(4); - var f5 = makeF(5); - - function makeF(i) { - return function f(x) { - if (x == 0) return i; - if (i == 4) if (soft) print("wahoo" + i); - return f4(x - 1); - } - } - - f4(9); - f4(11); - %OptimizeFunctionOnNextCall(f4); - f4(12); - - f5(9); - f5(11); - %OptimizeFunctionOnNextCall(f5); - f5(12); - - soft = true; - f4(1); - f5(9); -} - -test(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-shift-left.js b/implementation-contributed/v8/mjsunit/compiler/regress-shift-left.js deleted file mode 100644 index 110e8997295..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-shift-left.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function ShiftLeftWithDeoptUsage() { - function g() {} - - function f() { - var tmp = 1264475713; - var tmp1 = tmp - (-913041544); - g(); - return 1 << tmp1; - } - - %OptimizeFunctionOnNextCall(f); - assertEquals(512, f()); -})(); - - -(function ShiftLeftWithCallUsage() { - var f = (function() { - "use asm" - // This is not a valid asm.js, we use the "use asm" here to - // trigger Turbofan without deoptimization support. - - function g(x) { return x; } - - function f() { - var tmp = 1264475713; - var tmp1 = tmp - (-913041544); - return g(1 << tmp1, tmp1); - } - - return f; - })(); - - %OptimizeFunctionOnNextCall(f); - assertEquals(512, f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-shift-right-logical.js b/implementation-contributed/v8/mjsunit/compiler/regress-shift-right-logical.js deleted file mode 100644 index f2be2ad52f0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-shift-right-logical.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function ShiftRightLogicalWithDeoptUsage() { - function g() {} - - function f() { - var tmp = 1264475713; - var tmp1 = tmp - (-913041544); - g(); - return 1 >>> tmp1; - } - - %OptimizeFunctionOnNextCall(f); - assertEquals(0, f()); -})(); - - -(function ShiftRightLogicalWithCallUsage() { - var f = (function() { - "use asm" - // This is not a valid asm.js, we use the "use asm" here to - // trigger Turbofan without deoptimization support. - - function g(x) { return x; } - - function f() { - var tmp = 1264475713; - var tmp1 = tmp - (-913041544); - return g(1 >>> tmp1, tmp1); - } - - return f; - })(); - - %OptimizeFunctionOnNextCall(f); - assertEquals(0, f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-shift-right.js b/implementation-contributed/v8/mjsunit/compiler/regress-shift-right.js deleted file mode 100644 index 71bcb21f0ee..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-shift-right.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function ShiftRightWithDeoptUsage() { - function g() {} - - function f() { - var tmp = 1264475713; - var tmp1 = tmp - (-913041544); - g(); - return 1 >> tmp1; - } - - %OptimizeFunctionOnNextCall(f); - assertEquals(0, f()); -})(); - - -(function ShiftRightWithCallUsage() { - var f = (function() { - "use asm" - // This is not a valid asm.js, we use the "use asm" here to - // trigger Turbofan without deoptimization support. - - function g(x) { return x; } - - function f() { - var tmp = 1264475713; - var tmp1 = tmp - (-913041544); - return g(1 >> tmp1, tmp1); - } - - return f; - })(); - - %OptimizeFunctionOnNextCall(f); - assertEquals(0, f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-stacktrace-methods.js b/implementation-contributed/v8/mjsunit/compiler/regress-stacktrace-methods.js deleted file mode 100644 index 4d2872793d9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-stacktrace-methods.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test stack traces with method calls. -function Hest() {} -function Svin() {} - -Svin.prototype.two = function() { /* xxxxxxx */ o.three(); } - -Hest.prototype.one = function(x) { x.two(); } - -Hest.prototype.three = function() { if (v == 42) throw new Error("urg"); } - -var o = new Hest(); -var s = new Svin(); -var v = 0; - -for (var i = 0; i < 5; i++) { - o.one(s); -} -%OptimizeFunctionOnNextCall(Hest.prototype.one); -%OptimizeFunctionOnNextCall(Hest.prototype.three); -o.one(s); - -v = 42; - -try { - o.one(s); -} catch (e) { - var stack = e.stack.toString(); - var p3 = stack.indexOf("at Hest.three"); - var p2 = stack.indexOf("at Svin.two"); - var p1 = stack.indexOf("at Hest.one"); - assertTrue(p3 != -1); - assertTrue(p2 != -1); - assertTrue(p1 != -1); - assertTrue(p3 < p2); - assertTrue(p2 < p1); - assertTrue(stack.indexOf("38:56") != -1); - assertTrue(stack.indexOf("34:51") != -1); - assertTrue(stack.indexOf("36:38") != -1); - assertTrue(stack.indexOf("54:5") != -1); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-stacktrace.js b/implementation-contributed/v8/mjsunit/compiler/regress-stacktrace.js deleted file mode 100644 index ca5787614b0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-stacktrace.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test correctness of stack traces with global functions. -eval("function two() { /* xxxxxxx */ three(); }"); - -function one() { - two(); -} - -function three() { - throw new Error("urg"); -} - -try { - one(); -} catch (e) { - var stack = e.stack.toString(); - var p3 = stack.indexOf("at three"); - var p2 = stack.indexOf("at two"); - var p1 = stack.indexOf("at one"); - assertTrue(p3 != -1); - assertTrue(p2 != -1); - assertTrue(p1 != -1); - assertTrue(p3 < p2); - assertTrue(p2 < p1); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-store-holey-double-array.js b/implementation-contributed/v8/mjsunit/compiler/regress-store-holey-double-array.js deleted file mode 100644 index 81231984e06..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-store-holey-double-array.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function StoreHoleBitPattern() { - function g(src, dst, i) { - dst[i] = src[i]; - } - - var b = new ArrayBuffer(16); - var i32 = new Int32Array(b); - i32[0] = 0xFFF7FFFF; - i32[1] = 0xFFF7FFFF; - i32[3] = 0xFFF7FFFF; - i32[4] = 0xFFF7FFFF; - var f64 = new Float64Array(b); - - var a = [,0.1]; - - g(f64, a, 1); - g(f64, a, 1); - %OptimizeFunctionOnNextCall(g); - g(f64, a, 0); - - assertTrue(Number.isNaN(a[0])); -})(); - - -(function ConvertHoleToNumberAndStore() { - function g(a, i) { - var x = a[i]; - a[i] = +x; - } - - var a=[,0.1]; - g(a, 1); - g(a, 1); - %OptimizeFunctionOnNextCall(g); - g(a, 0); - assertTrue(Number.isNaN(a[0])); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-string-to-number-add.js b/implementation-contributed/v8/mjsunit/compiler/regress-string-to-number-add.js deleted file mode 100644 index 0d524d20fd9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-string-to-number-add.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - var s = x ? "0" : "1"; - return 1 + Number(s); -} - -f(0); -f(0); -%OptimizeFunctionOnNextCall(f); -assertEquals(2, f(0)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-to-number-binop-deopt.js b/implementation-contributed/v8/mjsunit/compiler/regress-to-number-binop-deopt.js deleted file mode 100644 index f6b77d90829..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-to-number-binop-deopt.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function deopt(f) { - return { valueOf : function() { %DeoptimizeFunction(f); return 1.1; } }; -} - -function or_zero(o) { - return o|0; -} - -function multiply_one(o) { - return +o; -} - -function multiply_one_symbol() { - return +Symbol(); -} - -assertThrows(multiply_one_symbol, TypeError); -assertEquals(1, or_zero(deopt(or_zero))); -assertEquals(1.1, multiply_one(deopt(multiply_one))); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-toint32.js b/implementation-contributed/v8/mjsunit/compiler/regress-toint32.js deleted file mode 100644 index 75892d47758..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-toint32.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --noenable-sse3 - -var a = new Int32Array(1); -var G = 0x80000000; - -function f(x) { - var v = x; - v = v + 1; - a[0] = v; - v = v - 1; - return v; -} - -assertEquals(G, f(G)); -assertEquals(G, f(G)); -%OptimizeFunctionOnNextCall(f); -assertEquals(G, f(G)); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-truncate-number-or-undefined-to-float64.js b/implementation-contributed/v8/mjsunit/compiler/regress-truncate-number-or-undefined-to-float64.js deleted file mode 100644 index 1dc3042ea7f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-truncate-number-or-undefined-to-float64.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g(a, b) { - a = +a; - if (b) { - a = undefined; - } - print(a); - return +a; -} - -g(0); -g(0); -%OptimizeFunctionOnNextCall(g); -assertTrue(Number.isNaN(g(0, true))); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-v8-5573.js b/implementation-contributed/v8/mjsunit/compiler/regress-v8-5573.js deleted file mode 100644 index 216b791a713..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-v8-5573.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var global = true; -global = false; - -function f() { - return !global; -} - -%OptimizeFunctionOnNextCall(f); -assertTrue(f()); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-v8-5756.js b/implementation-contributed/v8/mjsunit/compiler/regress-v8-5756.js deleted file mode 100644 index b7bfcda52bb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-v8-5756.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -z = {}; -t = new Uint8Array(3); -var m = 0; -var x = 10; - -function k() { - ++m; - if (m % 10 != 9) { - if (m > 20) // This if is to just force it to deoptimize. - x = '1'; // this deoptimizes during the second invocation of k. - // This causes two deopts, one eager at x = 1 and the - // other lazy at t[2] = z. - t[2] = z; // since we are assigning to Uint8Array, ToNumber - // is called which calls this funciton again. - } -} - -function f1() { - z.toString = k; - z.toString(); - z.toString(); - %OptimizeFunctionOnNextCall(k); - z.toString(); -} -f1(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-v8-6077.js b/implementation-contributed/v8/mjsunit/compiler/regress-v8-6077.js deleted file mode 100644 index 0e469882cf4..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-v8-6077.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var f32 = new Float32Array(40); - -function foo(f32, deopt) { - var v0 = f32[0]; - var v1 = f32[1]; - var v2 = f32[2]; - var v3 = f32[3]; - var v4 = f32[4]; - var v5 = f32[5]; - var v6 = f32[6]; - var v7 = f32[7]; - var v8 = f32[8]; - var v9 = f32[9]; - var v10 = f32[10]; - var v11 = f32[11]; - var v12 = f32[12]; - var v13 = f32[13]; - var v14 = f32[14]; - var v15 = f32[15]; - var v16 = f32[16]; - var v17 = f32[17]; - var v18 = f32[18]; - var v19 = f32[19]; - var v20 = f32[20]; - var v21 = f32[21]; - var v22 = f32[22]; - var v23 = f32[23]; - var v24 = f32[24]; - var v25 = f32[25]; - var v26 = f32[26]; - var v27 = f32[27]; - var v28 = f32[28]; - var v29 = f32[29]; - var v30 = f32[30]; - var v31 = f32[31]; - var v32 = f32[32]; - var v33 = f32[33]; - var v34 = f32[34]; - var v35 = f32[35]; - var v36 = f32[36]; - var v37 = f32[37]; - var v38 = f32[38]; - var v39 = f32[39]; - // Side effect to force the deopt after the store. - f32[0] = v1 - 1; - // Here we deopt once we warm up with numbers, but then we - // pass a string as {deopt}. - return deopt + v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + - v12 + v13 + v14 + v15 + v16 + v17 + v18 + v19 + v20 + v21 + v22 + v23 + - v24 + v25 + v26 + v27 + v28 + v29 + v30 + v31 + v32 + v33 + v34 + v35 + - v36 + v37 + v38 + v39; -} - -var s = ""; -for (var i = 0; i < f32.length; i++) { - f32[i] = i; - s += i; -} - -foo(f32, 0); -foo(f32, 0); -%OptimizeFunctionOnNextCall(foo); -assertEquals("x" + s, foo(f32, "x")); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-v8-6631.js b/implementation-contributed/v8/mjsunit/compiler/regress-v8-6631.js deleted file mode 100644 index 58fe360f054..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-v8-6631.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function h(x) { - return (x|0) && (1>>x == {}) -} - -function g() { - return h(1) -}; - -function f() { - return g(h({})) -}; - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-variable-liveness-let.js b/implementation-contributed/v8/mjsunit/compiler/regress-variable-liveness-let.js deleted file mode 100644 index 4c6b6936e58..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-variable-liveness-let.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-filter=f - -"use strict"; - -function f() { - %DeoptimizeNow(); - let x = 23; -} - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-variable-liveness.js b/implementation-contributed/v8/mjsunit/compiler/regress-variable-liveness.js deleted file mode 100644 index e18741d96e0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/regress-variable-liveness.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - %DeoptimizeFunction(run); - return x; -} - -function run() { - var line = new Array(2); - for (var n = 3; n > 0; n = n - 1) { - if (n < foo(line.length)) line = new Array(n); - line[0] = n; - } -} - -assertEquals(void 0, run()); -%OptimizeFunctionOnNextCall(run); -assertEquals(void 0, run()); diff --git a/implementation-contributed/v8/mjsunit/compiler/rest-parameters.js b/implementation-contributed/v8/mjsunit/compiler/rest-parameters.js deleted file mode 100644 index 45b8cb34dff..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/rest-parameters.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function Rest0Params() { - -function f(x, y) { - return x+y; -} - -function test(...rest) { - return [rest, f.apply(null, rest)]; -} - -assertEquals(test(), [[], NaN]); -assertEquals(test(1), [[1], NaN]) -assertEquals(test(1, 2), [[1,2], 3]); -assertEquals(test(1, 2, 3), [[1,2,3], 3]); - -%OptimizeFunctionOnNextCall(test); - -assertEquals(test(), [[], NaN]); -assertEquals(test(1), [[1], NaN]) -assertEquals(test(1, 2), [[1,2], 3]); -assertEquals(test(1, 2, 3), [[1,2,3], 3]); -})(); - -(function Rest1Params() { - -function f(x, y) { - return x+y -} - -function test(a, ...rest) { - return [rest, a, f.apply(null, rest)]; -} - -assertEquals(test(), [[], undefined, NaN]); -assertEquals(test(1), [[], 1, NaN]); -assertEquals(test(1, 2), [[2], 1, NaN]); -assertEquals(test(1, 2, 3), [[2,3], 1, 5]); -assertEquals(test(1, 2, 3, 4), [[2,3,4], 1, 5]); - -%OptimizeFunctionOnNextCall(test); - -assertEquals(test(), [[], undefined, NaN]); -assertEquals(test(1), [[], 1, NaN]); -assertEquals(test(1, 2), [[2], 1, NaN]); -assertEquals(test(1, 2, 3), [[2,3], 1, 5]); -assertEquals(test(1, 2, 3, 4), [[2,3,4], 1, 5]); - -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/rotate.js b/implementation-contributed/v8/mjsunit/compiler/rotate.js deleted file mode 100644 index 1c81e496eac..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/rotate.js +++ /dev/null @@ -1,308 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -// Test shift operations that can be replaced by rotate operation. - -function SideEffect() { - with ({}) { } // not inlinable -} - -function Twenty() { - SideEffect(); - return 20; -} - -function Twelve() { - SideEffect(); - return 12; -} - - -function ROR(x, sa) { - return (x >>> sa) | (x << (32 - sa)); -} - -function ROR1(x, sa) { - return (x >>> sa) | (x << (32 - sa)); -} - -function ROR2(x, sa) { - return (x >>> (32 - sa)) | (x << (sa)); -} - -function ROR3(x, sa) { - return (x << (32 - sa)) | (x >>> sa); -} - -function ROR4(x, sa) { - return (x << (sa)) | (x >>> (32 - sa)); -} - -assertEquals(1 << ((2 % 32)), ROR(1, 30)); -assertEquals(1 << ((2 % 32)), ROR(1, 30)); -%OptimizeFunctionOnNextCall(ROR); -assertEquals(1 << ((2 % 32)), ROR(1, 30)); - -assertEquals(0xF0000FFF | 0, ROR1(0x0000FFFF, 4)); -assertEquals(0xF0000FFF | 0, ROR1(0x0000FFFF, 4)); -%OptimizeFunctionOnNextCall(ROR1); -assertEquals(0xF0000FFF | 0, ROR1(0x0000FFFF, 4)); - -assertEquals(0x0FFFF000 | 0, ROR1(0x0000FFFF, 20)); -assertEquals(0x0FFFF000 | 0, ROR1(0x0000FFFF, 20)); -%OptimizeFunctionOnNextCall(ROR1); -assertEquals(0x0FFFF000 | 0, ROR1(0x0000FFFF, 20)); - -assertEquals(0x0FFFF000 | 0, ROR1(0x0000FFFF, Twenty())); -assertEquals(0x0FFFF000 | 0, ROR1(0x0000FFFF, Twenty())); -%OptimizeFunctionOnNextCall(ROR1); -assertEquals(0x0FFFF000 | 0, ROR1(0x0000FFFF, Twenty())); - -for (var i = 0; i <= 100; i++) { - assertEquals(0xFFFFFFFF | 0, ROR1(0xFFFFFFFF, i)); - assertEquals(0xFFFFFFFF | 0, ROR1(0xFFFFFFFF, i)); - %OptimizeFunctionOnNextCall(ROR1); - assertEquals(0xFFFFFFFF | 0, ROR1(0xFFFFFFFF, i)); -} - -for (var i = 0; i <= 100; i++) { - assertEquals(-1, ROR1(-1, i)); - assertEquals(-1, ROR1(-1, i)); - %OptimizeFunctionOnNextCall(ROR1); - assertEquals(-1, ROR1(-1, i)); -} - -for (var i = 0; i <= 100; i++) { - assertEquals(1 << (32 - (i % 32)), ROR1(1, i)); - assertEquals(1 << (32 - (i % 32)), ROR1(1, i)); - %OptimizeFunctionOnNextCall(ROR1); - assertEquals(1 << (32 - (i % 32)), ROR1(1, i)); -} - -for (var i = 0; i <= 100; i++) { - assertEquals(1 << (32 - (i % 32)), ROR1(1.4, i)); - assertEquals(1 << (32 - (i % 32)), ROR1(1.4, i)); - %OptimizeFunctionOnNextCall(ROR1); - assertEquals(1 << (32 - (i % 32)), ROR1(1.4, i)); -} - - - -assertEquals(0xF0000FFF | 0, ROR2(0x0000FFFF, 28)); -assertEquals(0xF0000FFF | 0, ROR2(0x0000FFFF, 28)); -%OptimizeFunctionOnNextCall(ROR2); -assertEquals(0xF0000FFF | 0, ROR2(0x0000FFFF, 28)); - -assertEquals(0x0FFFF000 | 0, ROR2(0x0000FFFF, 12)); -assertEquals(0x0FFFF000 | 0, ROR2(0x0000FFFF, 12)); -%OptimizeFunctionOnNextCall(ROR2); -assertEquals(0x0FFFF000 | 0, ROR2(0x0000FFFF, 12)); - -assertEquals(0x0FFFF000 | 0, ROR2(0x0000FFFF, Twelve())); -assertEquals(0x0FFFF000 | 0, ROR2(0x0000FFFF, Twelve())); -%OptimizeFunctionOnNextCall(ROR2); -assertEquals(0x0FFFF000 | 0, ROR2(0x0000FFFF, Twelve())); - -for (var i = 0; i <= 100; i++) { - assertEquals(0xFFFFFFFF | 0, ROR2(0xFFFFFFFF, i)); - assertEquals(0xFFFFFFFF | 0, ROR2(0xFFFFFFFF, i)); - %OptimizeFunctionOnNextCall(ROR2); - assertEquals(0xFFFFFFFF | 0, ROR2(0xFFFFFFFF, i)); -} - -for (var i = 0; i <= 100; i++) { - assertEquals(-1, ROR2(-1, i)); - assertEquals(-1, ROR2(-1, i)); - %OptimizeFunctionOnNextCall(ROR2); - assertEquals(-1, ROR2(-1, i)); -} - -for (var i = 0; i <= 100; i++) { - assertEquals(1 << ((i % 32)), ROR2(1, i)); - assertEquals(1 << ((i % 32)), ROR2(1, i)); - %OptimizeFunctionOnNextCall(ROR2); - assertEquals(1 << ((i % 32)), ROR2(1, i)); -} - -assertEquals(0xF0000FFF | 0, ROR3(0x0000FFFF, 4)); -assertEquals(0xF0000FFF | 0, ROR3(0x0000FFFF, 4)); -%OptimizeFunctionOnNextCall(ROR3); -assertEquals(0xF0000FFF | 0, ROR3(0x0000FFFF, 4)); - -assertEquals(0x0FFFF000 | 0, ROR3(0x0000FFFF, 20)); -assertEquals(0x0FFFF000 | 0, ROR3(0x0000FFFF, 20)); -%OptimizeFunctionOnNextCall(ROR3); -assertEquals(0x0FFFF000 | 0, ROR3(0x0000FFFF, 20)); - -assertEquals(0x0FFFF000 | 0, ROR3(0x0000FFFF, Twenty())); -assertEquals(0x0FFFF000 | 0, ROR3(0x0000FFFF, Twenty())); -%OptimizeFunctionOnNextCall(ROR3); -assertEquals(0x0FFFF000 | 0, ROR3(0x0000FFFF, Twenty())); - -for (var i = 0; i <= 100; i++) { - assertEquals(0xFFFFFFFF | 0, ROR3(0xFFFFFFFF, i)); - assertEquals(0xFFFFFFFF | 0, ROR3(0xFFFFFFFF, i)); - %OptimizeFunctionOnNextCall(ROR3); - assertEquals(0xFFFFFFFF | 0, ROR3(0xFFFFFFFF, i)); -} - -for (var i = 0; i <= 100; i++) { - assertEquals(-1, ROR3(-1, i)); - assertEquals(-1, ROR3(-1, i)); - %OptimizeFunctionOnNextCall(ROR3); - assertEquals(-1, ROR3(-1, i)); -} - -for (var i = 0; i <= 100; i++) { - assertEquals(1 << (32 - (i % 32)), ROR3(1, i)); - assertEquals(1 << (32 - (i % 32)), ROR3(1, i)); - %OptimizeFunctionOnNextCall(ROR3); - assertEquals(1 << (32 - (i % 32)), ROR3(1, i)); -} - -assertEquals(0xF0000FFF | 0, ROR4(0x0000FFFF, 28)); -assertEquals(0xF0000FFF | 0, ROR4(0x0000FFFF, 28)); -%OptimizeFunctionOnNextCall(ROR4); -assertEquals(0xF0000FFF | 0, ROR4(0x0000FFFF, 28)); - -assertEquals(0x0FFFF000 | 0, ROR4(0x0000FFFF, 12)); -assertEquals(0x0FFFF000 | 0, ROR4(0x0000FFFF, 12)); -%OptimizeFunctionOnNextCall(ROR4); -assertEquals(0x0FFFF000 | 0, ROR4(0x0000FFFF, 12)); - -assertEquals(0x0FFFF000 | 0, ROR4(0x0000FFFF, Twelve())); -assertEquals(0x0FFFF000 | 0, ROR4(0x0000FFFF, Twelve())); -%OptimizeFunctionOnNextCall(ROR4); -assertEquals(0x0FFFF000 | 0, ROR4(0x0000FFFF, Twelve())); - -for (var i = 0; i <= 100; i++) { - assertEquals(0xFFFFFFFF | 0, ROR4(0xFFFFFFFF, i)); - assertEquals(0xFFFFFFFF | 0, ROR4(0xFFFFFFFF, i)); - %OptimizeFunctionOnNextCall(ROR4); - assertEquals(0xFFFFFFFF | 0, ROR4(0xFFFFFFFF, i)); -} - -for (var i = 0; i <= 100; i++) { - assertEquals(-1, ROR4(-1, i)); - assertEquals(-1, ROR4(-1, i)); - %OptimizeFunctionOnNextCall(ROR4); - assertEquals(-1, ROR4(-1, i)); -} - -for (var i = 0; i <= 100; i++) { - assertEquals(1 << ((i % 32)), ROR4(1, i)); - assertEquals(1 << ((i % 32)), ROR4(1, i)); - %OptimizeFunctionOnNextCall(ROR4); - assertEquals(1 << ((i % 32)), ROR4(1, i)); -} - -//--------------------------------------------------------- -// add test cases for constant operand -//--------------------------------------------------------- -// constant operand: 20 -function ROR1_sa20(x) { - return (x >>> 20) | (x << 12); -} - -function ROR2_sa20(x) { - return (x >>> 12) | (x << 20); -} - -function ROR3_sa20(x, sa) { - return (x << 12) | (x >>> 20); -} - -function ROR4_sa20(x) { - return (x << 20) | (x >>> 12); -} - -// constant operand: 40 -function ROR1_sa40(x) { - return (x >>> 40) | (x << -8); -} - -function ROR2_sa40(x) { - return (x >>> -8) | (x << 40); -} - -function ROR3_sa40(x, sa) { - return (x << -8) | (x >>> 40); -} - -function ROR4_sa40(x) { - return (x << 40) | (x >>> -8); -} - -// ROR1_sa20 -assertEquals(ROR1(0x0000FFFF, 20), ROR1_sa20(0x0000FFFF)); -assertEquals(ROR1(0x0000FFFF, 20), ROR1_sa20(0x0000FFFF)); -%OptimizeFunctionOnNextCall(ROR1_sa20); -assertEquals(ROR1(0x0000FFFF, 20), ROR1_sa20(0x0000FFFF)); - -// ROR1_sa40 -assertEquals(ROR1(0x0000FFFF, 40), ROR1_sa40(0x0000FFFF)); -assertEquals(ROR1(0x0000FFFF, 40), ROR1_sa40(0x0000FFFF)); -%OptimizeFunctionOnNextCall(ROR1_sa40); -assertEquals(ROR1(0x0000FFFF, 40), ROR1_sa40(0x0000FFFF)); - -// ROR2_sa20 -assertEquals(ROR2(0xFFFFFFFF, 20), ROR2_sa20(0xFFFFFFFF)); -assertEquals(ROR2(0xFFFFFFFF, 20), ROR2_sa20(0xFFFFFFFF)); -%OptimizeFunctionOnNextCall(ROR2_sa20); -assertEquals(ROR2(0xFFFFFFFF, 20), ROR2_sa20(0xFFFFFFFF)); - -// ROR2_sa40 -assertEquals(ROR2(0x0000FFFF, 40), ROR2_sa40(0x0000FFFF)); -assertEquals(ROR2(0x0000FFFF, 40), ROR2_sa40(0x0000FFFF)); -%OptimizeFunctionOnNextCall(ROR2_sa40); -assertEquals(ROR2(0x0000FFFF, 40), ROR2_sa40(0x0000FFFF)); - -// ROR3_sa20 -assertEquals(ROR3(0x0000FFFF, 20), ROR3_sa20(0x0000FFFF)); -assertEquals(ROR3(0x0000FFFF, 20), ROR3_sa20(0x0000FFFF)); -%OptimizeFunctionOnNextCall(ROR3_sa20); -assertEquals(ROR3(0x0000FFFF, 20), ROR3_sa20(0x0000FFFF)); - -// ROR3_sa40 -assertEquals(ROR3(0x0000FFFF, 40), ROR3_sa40(0x0000FFFF)); -assertEquals(ROR3(0x0000FFFF, 40), ROR3_sa40(0x0000FFFF)); -%OptimizeFunctionOnNextCall(ROR3_sa40); -assertEquals(ROR3(0x0000FFFF, 40), ROR3_sa40(0x0000FFFF)); - -// ROR4_sa20 -assertEquals(ROR4(0x0000FFFF, 20), ROR4_sa20(0x0000FFFF)); -assertEquals(ROR4(0x0000FFFF, 20), ROR4_sa20(0x0000FFFF)); -%OptimizeFunctionOnNextCall(ROR4_sa20); -assertEquals(ROR4(0x0000FFFF, 20), ROR4_sa20(0x0000FFFF)); - -// ROR4_sa40 -assertEquals(ROR4(0xFFFFFFFF, 40), ROR4_sa40(0xFFFFFFFF)); -assertEquals(ROR4(0xFFFFFFFF, 40), ROR4_sa40(0xFFFFFFFF)); -%OptimizeFunctionOnNextCall(ROR4_sa40); -assertEquals(ROR4(0xFFFFFFFF, 40), ROR4_sa40(0xFFFFFFFF)); diff --git a/implementation-contributed/v8/mjsunit/compiler/safepoint.js b/implementation-contributed/v8/mjsunit/compiler/safepoint.js deleted file mode 100644 index ee8fcf0dee2..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/safepoint.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -function Test(o) { - var x = o; - var y = this; - x.gc(); - x.gc(); - return y; -} - -var o = {gc:gc}; -assertTrue(Test(o) === this); diff --git a/implementation-contributed/v8/mjsunit/compiler/shift-shr.js b/implementation-contributed/v8/mjsunit/compiler/shift-shr.js deleted file mode 100644 index c52ad43ac51..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/shift-shr.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Check the results of `left >>> right`. The result is always unsigned (and -// therefore positive). -function test_shr(left) { - var errors = 0; - - for (var i = 1; i < 1024; i++) { - var temp = left >>> i; - if (temp < 0) { - errors++; - } - } - - return errors; -} - -assertEquals(0, test_shr(1)); -%OptimizeFunctionOnNextCall(test_shr); -for (var i = 5; i >= -5; i--) { - assertEquals(0, test_shr(i)); -} - - -(function () { - function foo(x, b, array) { - var y; - x = x >>> 0; - b ? (y = x | 0) : (y = x); - return array[y]; - } - - foo(111, true, new Array(42)); - foo(111, true, new Array(42)); - %OptimizeFunctionOnNextCall(foo); - foo(-111, true, new Array(42)); -})(); - -(function () { - function foo(x, b, array) { - var y; - x = x >>> 0; - b ? (y = x | 0) : (y = x); - return array[y]; - } - - foo(111, true, new Array(42)); - foo(111, true, new Array(42)); - %OptimizeFunctionOnNextCall(foo); - foo(111, true, new Array(42)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/short-circuit.js b/implementation-contributed/v8/mjsunit/compiler/short-circuit.js deleted file mode 100644 index 42100e765d5..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/short-circuit.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test some expression contexts involving short-circuit boolean -// operations that did not otherwise have test coverage. - - -var x = 42; - -// Literals in value/test context. -assertEquals(x, function () { return 0 || x }()); -assertEquals(1, function () { return 1 || x }()); - -// Literals in test/value context. -assertEquals(0, function () { return 0 && x }()); -assertEquals(x, function () { return 1 && x }()); - -// A value on top of the stack in value/test context. -assertEquals(x, function(y) { return y++ || x }(0)); -assertEquals(1, function(y) { return y++ || x }(1)); - -// A value on top of the stack in a test/value context. -assertEquals(0, function(y) { return y++ && x }(0)); -assertEquals(x, function(y) { return y++ && x }(1)); - -// An object literal in value context. -assertEquals(0, function () { return {x: 0}}().x); - -// An object literal in value/test context. -assertEquals(0, function () { return {x: 0} || this }().x); - -// An object literal in test/value context. -assertEquals(x, function () { return {x: 0} && this }().x); - -// An array literal in value/test context. -assertEquals(0, function () { return [0,1] || new Array(x,1) }()[0]); - -// An array literal in test/value context. -assertEquals(x, function () { return [0,1] && new Array(x,1) }()[0]); - -// Slot assignment in value/test context. -assertEquals(x, function (y) { return (y = 0) || x }("?")); -assertEquals(1, function (y) { return (y = 1) || x }("?")); - -// Slot assignment in test/value context. -assertEquals(0, function (y) { return (y = 0) && x }("?")); -assertEquals(x, function (y) { return (y = 1) && x }("?")); - -// void in value context. -assertEquals(void 0, function () { return void x }()); - -// void in value/test context. -assertEquals(x, function () { return (void x) || x }()); - -// void in test/value context. -assertEquals(void 0, function () { return (void x) && x }()); - -// Unary not in value context. -assertEquals(false, function () { return !x }()); - -// Unary not in value/test context. -assertEquals(true, function (y) { return !y || x }(0)); -assertEquals(x, function (y) { return !y || x }(1)); - -// Unary not in test/value context. -assertEquals(x, function (y) { return !y && x }(0)); -assertEquals(false, function (y) { return !y && x }(1)); - -// Comparison in value context. -assertEquals(false, function () { return x < x; }()); - -// Comparison in value/test context. -assertEquals(x, function () { return x < x || x; }()); -assertEquals(true, function () { return x <= x || x; }()); - -// Comparison in test/value context. -assertEquals(false, function () { return x < x && x; }()); -assertEquals(x, function () { return x <= x && x; }()); diff --git a/implementation-contributed/v8/mjsunit/compiler/simple-bailouts.js b/implementation-contributed/v8/mjsunit/compiler/simple-bailouts.js deleted file mode 100644 index ef7a0f47bd9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/simple-bailouts.js +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function Test() { - this.result = 0; - this.x = 0; - this.y = 0; - this.z = 0; -} -var a = 1; -var b = 2; -var c = 4; -var d = 8; - -// Test operations expected to stay on the fast path. Enumerate all binary -// trees with <= 4 leaves. -Test.prototype.test0 = function () { - this.result = a | b; -}; - -Test.prototype.test1 = function() { - this.result = (a | b) | c; -}; - -Test.prototype.test2 = function() { - this.result = a | (b | c); -}; - -Test.prototype.test3 = function() { - this.result = ((a | b) | c) | d; -}; - -Test.prototype.test4 = function() { - this.result = (a | (b | c)) | d; -}; - -Test.prototype.test5 = function() { - this.result = (a | b) | (c | d); -}; - -Test.prototype.test6 = function() { - this.result = a | ((b | c) | d); -}; - -Test.prototype.test7 = function() { - this.result = a | (b | (c | d)); -}; - -// These tests should fail if we bailed out to the beginning of the full -// code. -Test.prototype.test8 = function () { - // If this.x = 1 and a = 1.1: - this.y = this.x | b; // Should be (1 | 2) == 3. - this.x = c; // Should be 4. - this.z = this.x | a; // Should be (4 | 1.1) == 5. -}; - -Test.prototype.test9 = function() { - // If this.x = 2 and a = 1.1: - this.z = // (14 | 1.1) == 15 - (this.x = // (6 | 8) == 14 - (this.y = // (2 | 4) == 6 - this.x // 2 - | c) // 4 - | d) // 8 - | a; // 1.1 -} - -Test.prototype.test10 = function() { - this.z = (a >> b) | (c >> c); -} - -Test.prototype.test11 = function(x) { - this.z = x >> x; -} - -var t = new Test(); - -t.test0(); -assertEquals(3, t.result); - -t.test1(); -assertEquals(7, t.result); -t.test2(); -assertEquals(7, t.result); - -t.test3(); -assertEquals(15, t.result); -t.test4(); -assertEquals(15, t.result); -t.test5(); -assertEquals(15, t.result); -t.test6(); -assertEquals(15, t.result); -t.test7(); -assertEquals(15, t.result); - -a = 1.1; -t.x = 1; -t.test8(); -assertEquals(4, t.x); -assertEquals(3, t.y); -assertEquals(5, t.z); - -t.x = 2; -t.test9(); -assertEquals(14, t.x); -assertEquals(6, t.y); -assertEquals(15, t.z); - -a = "2"; -t.test11(a); -assertEquals(0, t.z); - -a = 4; -b = "1"; -c = 2; -t.test10(); -assertEquals(2, t.z); diff --git a/implementation-contributed/v8/mjsunit/compiler/simple-binary-op.js b/implementation-contributed/v8/mjsunit/compiler/simple-binary-op.js deleted file mode 100644 index a4e8ab5f8f8..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/simple-binary-op.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var a = 1; -var b = 2; -var c = 4; - -function f() { this.x = this.x | a | b | c | a | c; } - -var o = {x:0, g:f} - -o.g(); - -assertEquals(7, o.x); diff --git a/implementation-contributed/v8/mjsunit/compiler/simple-deopt.js b/implementation-contributed/v8/mjsunit/compiler/simple-deopt.js deleted file mode 100644 index 7f985acc767..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/simple-deopt.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(x) { - return ~x; -} - -f(42); -assertEquals(~12, f(12.45)); -assertEquals(~42, f(42.87)); - - -var a = 1, b = 2, c = 4, d = 8; -function g() { - return a | (b | (c | d)); -} - -g(); -c = "16"; -assertEquals(1 | 2 | 16 | 8, g()); - - -// Test deopt when global function changes. -function h() { - return g(); -} -assertEquals(1 | 2 | 16 | 8, h()); -g = function() { return 42; }; -assertEquals(42, h()); - - -// Test deopt when map changes. -var obj = {}; -obj.g = g; -function k(o) { - return o.g(); -} -for (var i = 0; i < 5; i++) k(obj); -%OptimizeFunctionOnNextCall(k); -k(obj); -assertEquals(42, k(obj)); -assertEquals(87, k({g: function() { return 87; }})); - - -// Test deopt with assignments to parameters. -function p(x,y) { - x = 42; - y = 1; - y = y << "0"; - return x | y; -} -assertEquals(43, p(0,0)); - - -// Test deopt with literals on the expression stack. -function LiteralToStack(x) { - return 'lit[' + (x + ']'); -} - -assertEquals('lit[-87]', LiteralToStack(-87)); -assertEquals('lit[0]', LiteralToStack(0)); -assertEquals('lit[42]', LiteralToStack(42)); - - -// Test deopt before call. -var str = "abc"; -var r; -function CallCharAt(n) { return str.charAt(n); } -for (var i = 0; i < 5; i++) { - r = CallCharAt(0); -} -%OptimizeFunctionOnNextCall(CallCharAt); -r = CallCharAt(0); -assertEquals("a", r); - - -// Test of deopt in presence of spilling. -function add4(a,b,c,d) { - return a+b+c+d; -} -assertEquals(0x40000003, add4(1,1,2,0x3fffffff)); diff --git a/implementation-contributed/v8/mjsunit/compiler/simple-global-access.js b/implementation-contributed/v8/mjsunit/compiler/simple-global-access.js deleted file mode 100644 index 87a641cc9c9..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/simple-global-access.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test global variable loads. -var g1 = 42; -var g2 = 43; -var g3 = 44; -this.__defineGetter__("g4", function () { return 45; }); - -function f1() { this.x = this.y = this.z = g1; } -function f2() { this.x = g1; this.y = g2; this.z = g3; } -function f3() { this.x = g4; } - -var o = { x:0, y:0, z:0, test1:f1, test2:f2, test3:f3 } - -o.test1(); -assertEquals(42, o.x); -assertEquals(42, o.y); -assertEquals(42, o.z); - -o.test2(); -assertEquals(42, o.x); -assertEquals(43, o.y); -assertEquals(44, o.z); - -o.test3(); -assertEquals(45, o.x); diff --git a/implementation-contributed/v8/mjsunit/compiler/simple-inlining.js b/implementation-contributed/v8/mjsunit/compiler/simple-inlining.js deleted file mode 100644 index 8bd37eae20a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/simple-inlining.js +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we can inline a function that returns a constant. -function TestInlineConstant(o) { - // Effect context. - o.f(); - // Value context. - var x = o.f(); - assertEquals(42, x); - assertEquals(42, o.f()); - // Test context. - if (!o.f()) { - assertTrue(false); // Should not happen. - } -} - -var o1 = {}; -o1.f = function() { return 42; }; -for (var i = 0; i < 5; i++) TestInlineConstant(o1); -%OptimizeFunctionOnNextCall(TestInlineConstant); -TestInlineConstant(o1); -TestInlineConstant({f: o1.f}); - - -// Test that we can inline a function that returns 'this'. -function TestInlineThis(o) { - // Effect context. - o.g(); - // Value context. - var x = o.g(); - assertEquals(o, x); - assertEquals(o, o.g()); - // Test context. - if (!o.g()) { - assertTrue(false); // Should not happen. - } -} - -var o2 = {}; -o2.g = function() { return this; }; -for (var i = 0; i < 5; i++) TestInlineThis(o2); -%OptimizeFunctionOnNextCall(TestInlineThis); -TestInlineThis(o2); -TestInlineThis({g: o2.g}); - - -// Test that we can inline a function that returns 'this.x'. -function TestInlineThisX(o) { - // Effect context. - o.h(); - // Value context. - var x = o.h(); - assertEquals(42, x); - assertEquals(42, o.h()); - // Test context. - if (!o.h()) { - assertTrue(false); // Should not happen. - } -} - -var o3 = {y:0,x:42}; -o3.h = function() { return this.x; }; -for (var i = 0; i < 5; i++) TestInlineThisX(o3); -%OptimizeFunctionOnNextCall(TestInlineThisX); -TestInlineThisX(o3); -TestInlineThisX({h: o3.h, x:42}); - - -// Test that we can inline a function that returns 'this.x.length'. -function TestInlineThisXLength(o) { - // Effect context. - o.h(); - // Value context. - var x = o.h(); - assertEquals(3, x); - assertEquals(3, o.h()); - // Test context. - if (!o.h()) { - assertTrue(false); // Should not happen. - } -} - -var o4 = {x:[1,2,3]}; -o4.h = function() { return this.x.length; }; -for (var i = 0; i < 5; i++) TestInlineThisXLength(o4); -%OptimizeFunctionOnNextCall(TestInlineThisXLength); -TestInlineThisXLength(o4); -TestInlineThisXLength({h: o4.h, x:[1,2,3]}); - - -// Test that we can inline a function that returns 'this.x.y'. -function TestInlineThisXY(o) { - // Effect context. - o.h(); - // Value context. - var x = o.h(); - assertEquals(42, x); - assertEquals(42, o.h()); - // Test context. - if (!o.h()) { - assertTrue(false); // Should not happen. - } -} - -var o6 = {y:42} -var o5 = {e:o6}; -o5.h = function() { return this.e.y; }; -for (var i = 0; i < 5; i++) TestInlineThisXY(o5); -%OptimizeFunctionOnNextCall(TestInlineThisXY); -TestInlineThisXY(o5); -TestInlineThisXY({h: o5.h, e:o6}); - - -// Test that we can inline a function that returns 'this.x.length'. -function TestInlineThisX0(o) { - // Effect context. - o.foo(); - // Value context. - var x = o.foo(); - assertEquals(42, x); - assertEquals(42, o.foo()); - // Test context. - if (!o.foo()) { - assertTrue(false); // Should not happen. - } -} - -var o7 = {x:[42,43,44]}; -o7.foo = function() { return this.x[0]; }; -for (var i = 0; i < 5; i++) TestInlineThisX0(o7); -%OptimizeFunctionOnNextCall(TestInlineThisX0); -TestInlineThisX0(o7); -TestInlineThisX0({foo: o7.foo, x:[42,0,0]}); diff --git a/implementation-contributed/v8/mjsunit/compiler/smi-stores-opt.js b/implementation-contributed/v8/mjsunit/compiler/smi-stores-opt.js deleted file mode 100644 index ca0923abc99..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/smi-stores-opt.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var o = {a:1.5}; -o.a = 0; -var a = o.a; - -function g() { - return 1; -} - -var o2 = {a:{}}; - -function f() { - var result = {a: a}; - var literal = {x:g()}; - return [result, literal]; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals(1, f()[1].x); diff --git a/implementation-contributed/v8/mjsunit/compiler/spread-call.js b/implementation-contributed/v8/mjsunit/compiler/spread-call.js deleted file mode 100644 index 1b7ae6f301b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/spread-call.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function tests() { - "use strict" - function countArgs() { return arguments.length; } - - // Array params - assertEquals(3, countArgs(...[1, 2, 3])); // Smi - assertEquals(4, countArgs(...[1, 2, , 3])); // HoleySmi - assertEquals(3, countArgs(...[1.1, 2, 3])); // Double - assertEquals(4, countArgs(...[1.1, 2, , 3])); // HoleyDouble - assertEquals(3, countArgs(...[{valueOf: () => 0}, 1.1, '2'])); // Object - assertEquals( - 4, countArgs(...[{valueOf: () => 0}, 1.1, , '2'])); // HoleyObject - - // Smi param - assertThrows(() => countArgs(...1), TypeError); - - // Object param - assertThrows(() => countArgs(...{0: 0}), TypeError); - - // Strict arguments - assertEquals(0, countArgs(...arguments)); -} - -tests(); -tests(); -%OptimizeFunctionOnNextCall(tests); -tests(); - -function testRest(...args) { - function countArgs() { return arguments.length; } - assertEquals(3, countArgs(...args)); - assertEquals(4, countArgs(1, ...args)); - assertEquals(5, countArgs(1, 2, ...args)); -} -testRest(1, 2, 3); -testRest(1, 2, 3); -%OptimizeFunctionOnNextCall(testRest); -testRest(1, 2, 3); - -function testRestAndArgs(a, b, ...args) { - function countArgs() { return arguments.length; } - assertEquals(1, countArgs(...args)); - assertEquals(2, countArgs(b, ...args)); - assertEquals(3, countArgs(a, b, ...args)); - assertEquals(4, countArgs(1, a, b, ...args)); - assertEquals(5, countArgs(1, 2, a, b, ...args)); -} -testRestAndArgs(1, 2, 3); -testRestAndArgs(1, 2, 3); -%OptimizeFunctionOnNextCall(testRestAndArgs); -testRestAndArgs(1, 2, 3); - -function testArgumentsStrict() { - "use strict" - function countArgs() { return arguments.length; } - assertEquals(3, countArgs(...arguments)); - assertEquals(4, countArgs(1, ...arguments)); - assertEquals(5, countArgs(1, 2, ...arguments)); -} -testArgumentsStrict(1, 2, 3); -testArgumentsStrict(1, 2, 3); -%OptimizeFunctionOnNextCall(testArgumentsStrict); -testArgumentsStrict(1, 2, 3); - -function testArgumentsSloppy() { - function countArgs() { return arguments.length; } - assertEquals(3, countArgs(...arguments)); - assertEquals(4, countArgs(1, ...arguments)); - assertEquals(5, countArgs(1, 2, ...arguments)); -} -testArgumentsSloppy(1, 2, 3); -testArgumentsSloppy(1, 2, 3); -%OptimizeFunctionOnNextCall(testArgumentsSloppy); -testArgumentsSloppy(1, 2, 3); diff --git a/implementation-contributed/v8/mjsunit/compiler/store-elimination.js b/implementation-contributed/v8/mjsunit/compiler/store-elimination.js deleted file mode 100644 index 1806ed963f3..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/store-elimination.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --store-elimination - -// Test local elimination of unobservable stores. - -function B(x, y) { - this.x = x; - this.y = y; - return this; -} - -function test_store_store() { - var a = new B(1, 2); - a.x = 3; // eliminatable. - a.x = 4; - return a.x; -} - -function test_store_load_store1() { - var a = new B(6, 7); - a.x = 3; // eliminatable. - var r = a.y; - a.x = 4; - return r; -} - -function test_store_load_store2() { - var a = new B(6, 8); - a.x = 3; // not eliminatable, unless next load is eliminated. - var r = a.x; - a.x = 4; - return r; -} - -function test_store_call_store() { - var a = new B(2, 9); - a.x = 3; // not eliminatable. - killall(); - a.x = 4; - return a.y; -} - -function test_store_deopt_store() { - var a = new B(2, 1); - a.x = 3; // not eliminatable (implicit ValueOf following) - var c = a + 2; - a.x = 4; - return a.y; -} - -function killall() { - try { } catch(e) { } -} - -%NeverOptimizeFunction(killall); - -function test(x, f) { - assertEquals(x, f()); - assertEquals(x, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(x, f()); -} - -test(4, test_store_store); -test(7, test_store_load_store1); -test(3, test_store_load_store2); -test(9, test_store_call_store); -test(1, test_store_deopt_store); diff --git a/implementation-contributed/v8/mjsunit/compiler/stress-deopt-count-1.js b/implementation-contributed/v8/mjsunit/compiler/stress-deopt-count-1.js deleted file mode 100644 index 834a873e75f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/stress-deopt-count-1.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --deopt-every-n-times=0 --opt --no-always-opt - -// Check that --deopt-every-n-times 0 doesn't deopt - -function f(x) { - return x + 1; -} - -f(0); -%OptimizeFunctionOnNextCall(f); - -f(1); -assertOptimized(f, undefined, undefined, false); - -f(1); -assertOptimized(f, undefined, undefined, false); diff --git a/implementation-contributed/v8/mjsunit/compiler/stress-deopt-count-2.js b/implementation-contributed/v8/mjsunit/compiler/stress-deopt-count-2.js deleted file mode 100644 index 641a9e8180a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/stress-deopt-count-2.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt --deopt-every-n-times=6 - -// Check that stress deopt count resets correctly - -// Function with two deopt points -function f(x) { - return x + 1; -} - -f(1); -%OptimizeFunctionOnNextCall(f); - -// stress_deopt_count == 6 - -f(1); -assertOptimized(f, undefined, undefined, false); - -// stress_deopt_count == 4 - -f(1); -assertOptimized(f, undefined, undefined, false); - -// stress_deopt_count == 2 - -f(1); -// deopt & counter reset -assertUnoptimized(f, undefined, undefined, false); - -// stress_deopt_count == 6 - -%OptimizeFunctionOnNextCall(f); -f(1); -assertOptimized(f, undefined, undefined, false); - -// stress_deopt_count == 4 - -f(1); -assertOptimized(f, undefined, undefined, false); - -// stress_deopt_count == 2 - -f(1); -// deopt & counter reset -assertUnoptimized(f, undefined, undefined, false); diff --git a/implementation-contributed/v8/mjsunit/compiler/strict-equal-number.js b/implementation-contributed/v8/mjsunit/compiler/strict-equal-number.js deleted file mode 100644 index 18cd52aa018..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/strict-equal-number.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Make sure that we don't incorrectly truncate Oddball -// to Number for strict equality comparisons. -(function() { - function foo(x, y) { return x === y; } - - assertTrue(foo(0.1, 0.1)); - assertTrue(foo(undefined, undefined)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(undefined, undefined)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/strict-equal-receiver.js b/implementation-contributed/v8/mjsunit/compiler/strict-equal-receiver.js deleted file mode 100644 index 1f38d79dfad..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/strict-equal-receiver.js +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --noalways-opt - -// Known receivers strict equality. -(function() { - const a = {}; - const b = {}; - - function foo() { return a === b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known receiver/null strict equality. -(function() { - const a = {}; - const b = null; - - function foo() { return a === b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known receiver/undefined strict equality. -(function() { - const a = {}; - const b = undefined; - - function foo() { return a === b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known receiver on one side strict equality. -(function() { - const a = {}; - const b = {}; - - function foo(a) { return a === b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); -})(); - -// Known receiver on one side strict equality. -(function() { - const a = {}; - const b = null; - - function foo(a) { return a === b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); -})(); - -// Known receiver on one side strict equality. -(function() { - const a = {}; - const b = undefined; - - function foo(a) { return a === b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); -})(); - -// Feedback based receiver strict equality. -(function() { - const a = {}; - const b = {}; - - function foo(a, b) { return a === b; } - - assertTrue(foo(b, b)); - assertFalse(foo(a, b)); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - - // TurboFan bakes in feedback for the left hand side. - assertFalse(foo(null, b)); - assertUnoptimized(foo); -})(); - -// Feedback based receiver/null strict equality. -(function() { - const a = {}; - const b = null; - - function foo(a, b) { return a === b; } - - assertTrue(foo(b, b)); - assertFalse(foo(a, b)); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - - // TurboFan bakes in feedback for the left hand side. - assertFalse(foo(1, b)); - assertUnoptimized(foo); -})(); - -// Feedback based receiver/undefined strict equality. -(function() { - const a = {}; - const b = undefined; - - function foo(a, b) { return a === b; } - - assertTrue(foo(b, b)); - assertFalse(foo(a, b)); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - - // TurboFan bakes in feedback for the left hand side. - assertFalse(foo(1, b)); - assertUnoptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/strict-equal-symbol.js b/implementation-contributed/v8/mjsunit/compiler/strict-equal-symbol.js deleted file mode 100644 index aee1ecfa603..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/strict-equal-symbol.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Known symbols strict equality. -(function() { - const a = Symbol("a"); - const b = Symbol("b"); - - function foo() { return a === b; } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -// Known symbol on one side strict equality. -(function() { - const a = Symbol("a"); - const b = Symbol("b"); - - function foo(a) { return a === b; } - - assertTrue(foo(b)); - assertFalse(foo(a)); - assertTrue(foo(b)); - assertFalse(foo(a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(b)); - assertFalse(foo(a)); -})(); - -// Feedback based symbol strict equality. -(function() { - const a = Symbol("a"); - const b = Symbol("b"); - - function foo(a, b) { return a === b; } - - assertTrue(foo(b, b)); - assertFalse(foo(a, b)); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(a, a)); - assertFalse(foo(b, a)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/strict-recompile.js b/implementation-contributed/v8/mjsunit/compiler/strict-recompile.js deleted file mode 100644 index 96e8bcab785..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/strict-recompile.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo() { - try { - var o = {}; - Object.defineProperty(o, 'x', {value: 12, writable: false}); - o.x = 13; - } catch(e) { - return true; - } - return false; -} - -assertFalse(foo()); - -function do_eval(str) { - "use strict"; - return eval(str); -} - -var eval_foo = do_eval('(' + foo + ')'); -for (var i = 0; i < 5; i++) assertTrue(eval_foo()); -%OptimizeFunctionOnNextCall(eval_foo); -assertTrue(eval_foo()); diff --git a/implementation-contributed/v8/mjsunit/compiler/string-add-try-catch.js b/implementation-contributed/v8/mjsunit/compiler/string-add-try-catch.js deleted file mode 100644 index 5ae5b00d18c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/string-add-try-catch.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test that string concatenation overflow (going over string max length) -// is handled gracefully, i.e. an error is thrown - -var a = "a".repeat(%StringMaxLength()); - -(function() { - function foo(a, b) { - try { - return a + "0123456789012"; - } catch (e) { - return e; - } - } - - foo("a"); - foo("a"); - %OptimizeFunctionOnNextCall(foo); - foo("a"); - assertInstanceof(foo(a), RangeError); -})(); - -(function() { - function foo(a, b) { - try { - return "0123456789012" + a; - } catch (e) { - return e; - } - } - - foo("a"); - foo("a"); - %OptimizeFunctionOnNextCall(foo); - foo("a"); - assertInstanceof(foo(a), RangeError); -})(); - -(function() { - function foo(a, b) { - try { - return "0123456789012".concat(a); - } catch (e) { - return e; - } - } - - foo("a"); - foo("a"); - %OptimizeFunctionOnNextCall(foo); - foo("a"); - assertInstanceof(foo(a), RangeError); -})(); - -var obj = { - toString: function() { - throw new Error('toString has thrown'); - } -}; - -(function() { - function foo(a, b) { - try { - return "0123456789012" + obj; - } catch (e) { - return e; - } - } - - foo("a"); - foo("a"); - %OptimizeFunctionOnNextCall(foo); - foo("a"); - assertInstanceof(foo(a), Error); -})(); - -(function() { - function foo(a, b) { - try { - return a + 123; - } catch (e) { - return e; - } - } - - foo("a"); - foo("a"); - %OptimizeFunctionOnNextCall(foo); - foo("a"); - assertInstanceof(foo(a), RangeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/string-comparison-opt.js b/implementation-contributed/v8/mjsunit/compiler/string-comparison-opt.js deleted file mode 100644 index 6c884e13e6d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/string-comparison-opt.js +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license -// that can be found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(()=> { - function f(a) { - return a.charAt(1) == ""; - } - assertEquals(false, f("aaa")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aaa")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) < ""; - } - assertEquals(false, f("aaa")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aaa")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) <= ""; - } - assertEquals(false, f("aaa")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aaa")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) > ""; - } - assertEquals(true, f("aaa")); - %OptimizeFunctionOnNextCall(f); - assertEquals(true, f("aaa")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) >= ""; - } - assertEquals(true, f("aaa")); - %OptimizeFunctionOnNextCall(f); - assertEquals(true, f("aaa")); -})(); - - -(()=> { - function f(a) { - return a.charAt(1) == a.charAt(2); - } - assertEquals(false, f("aab")); - assertEquals(true, f("aaa")); - assertEquals(false, f("acb")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aab")); - assertEquals(true, f("aaa")); - assertEquals(false, f("acb")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) < a.charAt(2); - } - assertEquals(true, f("aab")); - assertEquals(false, f("aaa")); - assertEquals(false, f("acb")); - %OptimizeFunctionOnNextCall(f); - assertEquals(true, f("aab")); - assertEquals(false, f("aaa")); - assertEquals(false, f("acb")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) <= a.charAt(2); - } - assertEquals(true, f("aab")); - assertEquals(true, f("aaa")); - assertEquals(false, f("acb")); - %OptimizeFunctionOnNextCall(f); - assertEquals(true, f("aab")); - assertEquals(true, f("aaa")); - assertEquals(false, f("acb")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) > a.charAt(2); - } - assertEquals(false, f("aab")); - assertEquals(false, f("aaa")); - assertEquals(true, f("acb")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aab")); - assertEquals(false, f("aaa")); - assertEquals(true, f("acb")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) >= a.charAt(2); - } - assertEquals(false, f("aab")); - assertEquals(true, f("aaa")); - assertEquals(true, f("acb")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aab")); - assertEquals(true, f("aaa")); - assertEquals(true, f("acb")); -})(); - - -(()=> { - function f(a) { - return a.charAt(1) == "b"; - } - assertEquals(false, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(false, f("ccc")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(false, f("ccc")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) == "bb"; - } - assertEquals(false, f("aaa")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aaa")); -})(); - - -(()=> { - function f(a) { - return a.charAt(1) < "b"; - } - assertEquals(true, f("aaa")); - assertEquals(false, f("bbb")); - assertEquals(false, f("ccc")); - %OptimizeFunctionOnNextCall(f); - assertEquals(true, f("aaa")); - assertEquals(false, f("bbb")); - assertEquals(false, f("ccc")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) < "bb"; - } - assertEquals(true, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(false, f("ccc")); - %OptimizeFunctionOnNextCall(f); - assertEquals(true, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(false, f("ccc")); -})(); - - -(()=> { - function f(a) { - return a.charAt(1) <= "b"; - } - assertEquals(true, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(false, f("ccc")); - %OptimizeFunctionOnNextCall(f); - assertEquals(true, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(false, f("ccc")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) <= "bb"; - } - assertEquals(true, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(false, f("ccc")); - %OptimizeFunctionOnNextCall(f); - assertEquals(true, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(false, f("ccc")); -})(); - - -(()=> { - function f(a) { - return a.charAt(1) > "b"; - } - assertEquals(false, f("aaa")); - assertEquals(false, f("bbb")); - assertEquals(true, f("ccc")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aaa")); - assertEquals(false, f("bbb")); - assertEquals(true, f("ccc")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) > "bb"; - } - assertEquals(false, f("aaa")); - assertEquals(false, f("bbb")); - assertEquals(true, f("ccc")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aaa")); - assertEquals(false, f("bbb")); - assertEquals(true, f("ccc")); -})(); - - -(()=> { - function f(a) { - return a.charAt(1) >= "b"; - } - assertEquals(false, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(true, f("ccc")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aaa")); - assertEquals(true, f("bbb")); - assertEquals(true, f("ccc")); -})(); - -(()=> { - function f(a) { - return a.charAt(1) >= "bb"; - } - assertEquals(false, f("aaa")); - assertEquals(false, f("bbb")); - assertEquals(true, f("ccc")); - %OptimizeFunctionOnNextCall(f); - assertEquals(false, f("aaa")); - assertEquals(false, f("bbb")); - assertEquals(true, f("ccc")); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/string-concat-deopt.js b/implementation-contributed/v8/mjsunit/compiler/string-concat-deopt.js deleted file mode 100644 index 9043b00488a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/string-concat-deopt.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(() => { - function f(a) { - return "abc".concat(); - } - - assertEquals("abc", f()); - assertEquals("abc", f()); - %OptimizeFunctionOnNextCall(f); - assertEquals("abc", f()); -})(); - -(() => { - function f(a) { - return "abc".concat(a); - } - - assertEquals("abcde", f("de")); - assertEquals("abcde", f("de")); - %OptimizeFunctionOnNextCall(f); - assertEquals("abcde", f("de")); -})(); - -(() => { - function f(a) { - return "abc".concat(a); - } - assertEquals("abcde", f("de")); - assertEquals("abcde", f("de")); - %OptimizeFunctionOnNextCall(f); - assertEquals("abc1", f(1)); -})(); - -(() => { - function f(a) { - return "abc".concat(a); - } - - assertEquals("abcde", f("de")); - assertEquals("abcde", f("de")); - %OptimizeFunctionOnNextCall(f); - var s = "x".repeat(%StringMaxLength()); - assertThrows(() => f(s), RangeError); -})(); - - -(() => { - function f(a) { - return "ab".concat("c"); - } - - assertEquals("abc", f()); - assertEquals("abc", f()); - %OptimizeFunctionOnNextCall(f); - assertEquals("abc", f()); -})(); - -(() => { - function f(a) { - return "ab".concat("c", a); - } - - assertEquals("abcde", f("de")); - assertEquals("abcde", f("de")); - %OptimizeFunctionOnNextCall(f); - assertEquals("abcde", f("de")); -})(); - -(() => { - function f(a) { - return "ab".concat("c", a); - } - assertEquals("abcde", f("de")); - assertEquals("abcde", f("de")); - %OptimizeFunctionOnNextCall(f); - assertEquals("abc1", f(1)); -})(); - -(() => { - function f(a) { - return "ab".concat("c", a); - } - - assertEquals("abcde", f("de")); - assertEquals("abcde", f("de")); - %OptimizeFunctionOnNextCall(f); - var s = "x".repeat(%StringMaxLength()); - assertThrows(() => f(s), RangeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/string-concat-try-catch.js b/implementation-contributed/v8/mjsunit/compiler/string-concat-try-catch.js deleted file mode 100644 index d85a8919349..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/string-concat-try-catch.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = "a".repeat(%StringMaxLength()); - -(function() { - function foo(a) { - try { - return "longer than ConsString:kMinLength" + a + "0123456789012"; - } catch (e) { - return e; - } - } - - foo("a"); - foo("a"); - // Optimize with string length protector check. - %OptimizeFunctionOnNextCall(foo); - foo("a"); - assertInstanceof(foo(a), RangeError); - // Optimize without string length protector check. - %OptimizeFunctionOnNextCall(foo); - foo("a"); - assertInstanceof(foo(a), RangeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/string-concat-yield.js b/implementation-contributed/v8/mjsunit/compiler/string-concat-yield.js deleted file mode 100644 index d6611d2d36c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/string-concat-yield.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function* foo() { - var f = `foo${ yield 'yielded' }bar`; - return f; -} - -%OptimizeFunctionOnNextCall(foo); -var gen = foo(); -assertEquals('yielded', gen.next('unused').value); -assertEquals('foobazbar', gen.next('baz').value); diff --git a/implementation-contributed/v8/mjsunit/compiler/string-from-code-point.js b/implementation-contributed/v8/mjsunit/compiler/string-from-code-point.js deleted file mode 100644 index 165ea0c2343..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/string-from-code-point.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --noalways-opt - -// Test that String.fromCodePoint() properly identifies zeros. -(function() { - function foo(x) { - return String.fromCodePoint(x); - } - - assertEquals("\u0000", foo(0)); - assertEquals("\u0000", foo(-0)); - %OptimizeFunctionOnNextCall(foo); - assertEquals("\u0000", foo(0)); - assertEquals("\u0000", foo(-0)); - assertOptimized(foo); - - // Now passing anything outside the valid code point - // range should invalidate the optimized code. - assertThrows(_ => foo(-1)); - assertUnoptimized(foo); - - // And TurboFan should not inline the builtin anymore - // from now on (aka no deoptimization loop). - %OptimizeFunctionOnNextCall(foo); - assertEquals("\u0000", foo(0)); - assertEquals("\u0000", foo(-0)); - assertThrows(_ => foo(-1)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/string-length.js b/implementation-contributed/v8/mjsunit/compiler/string-length.js deleted file mode 100644 index 855a1a6b713..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/string-length.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertEquals(0, "".length); -assertEquals(1, "a".length); -assertEquals(2, ("a" + "b").length); - -function id(x) { return x; } - -function f1(x) { - return x.length; -} -assertEquals(0, f1("")); -assertEquals(1, f1("a")); -%OptimizeFunctionOnNextCall(f1); -assertEquals(2, f1("a" + "b")); -assertEquals(3, f1(id("a") + id("b" + id("c")))) - -function f2(x, y, z) { - x = x ? "" + y : "" + z; - return x.length; -} -assertEquals(0, f2(true, "", "a")); -assertEquals(1, f2(false, "", "a")); -%OptimizeFunctionOnNextCall(f2); -assertEquals(0, f2(true, "", "a")); -assertEquals(1, f2(false, "", "a")); -assertEquals(3, f2(true, id("a") + id("b" + id("c")), "")); diff --git a/implementation-contributed/v8/mjsunit/compiler/string-slice.js b/implementation-contributed/v8/mjsunit/compiler/string-slice.js deleted file mode 100644 index 6c3274753e1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/string-slice.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo(s) { return s.slice(-1); } - - assertEquals('', foo('')); - assertEquals('a', foo('a')); - assertEquals('b', foo('ab')); - assertEquals('c', foo('abc')); - %OptimizeFunctionOnNextCall(foo); - assertEquals('', foo('')); - assertEquals('a', foo('a')); - assertEquals('b', foo('ab')); - assertEquals('c', foo('abc')); -})(); - -(function() { - function foo(s) { return s.slice(-1, undefined); } - - assertEquals('', foo('')); - assertEquals('a', foo('a')); - assertEquals('b', foo('ab')); - assertEquals('c', foo('abc')); - %OptimizeFunctionOnNextCall(foo); - assertEquals('', foo('')); - assertEquals('a', foo('a')); - assertEquals('b', foo('ab')); - assertEquals('c', foo('abc')); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/switch-bailout.js b/implementation-contributed/v8/mjsunit/compiler/switch-bailout.js deleted file mode 100644 index 084074e0b0d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/switch-bailout.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that bailing out of the optimized compilation doesn't mess with -// the labels in the AST. -function f(x) { - switch (x) { - case "foo": return 87; - case "bar": return 42; - } - return 99; -} - -for (var i = 0; i < 5; i++) f("foo"); -%OptimizeFunctionOnNextCall(f); -f("foo"); -assertEquals(42, f("bar")); diff --git a/implementation-contributed/v8/mjsunit/compiler/symbol-protototype.js b/implementation-contributed/v8/mjsunit/compiler/symbol-protototype.js deleted file mode 100644 index 9a707e8a08c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/symbol-protototype.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test1(s) { - return s.toString; -} -assertSame(test1(Symbol()), Symbol.prototype.toString); -assertSame(test1(Symbol()), Symbol.prototype.toString); -%OptimizeFunctionOnNextCall(test1); -assertSame(test1(Symbol()), Symbol.prototype.toString); - -function test2(s) { - return s.valueOf; -} -assertSame(test2(Symbol()), Symbol.prototype.valueOf); -assertSame(test2(Symbol()), Symbol.prototype.valueOf); -%OptimizeFunctionOnNextCall(test2); -assertSame(test2(Symbol()), Symbol.prototype.valueOf); - -Symbol.prototype.foo = 1; -function test3(s) { - return s["foo"]; -} -assertEquals(test3(Symbol()), 1); -assertEquals(test3(Symbol()), 1); -%OptimizeFunctionOnNextCall(test3); -assertEquals(test3(Symbol()), 1); - -Symbol.prototype.bar = function() { "use strict"; return this; } -function test4(s) { - return s.bar(); -} -var s = Symbol("foo"); -assertEquals(test4(s), s); -assertEquals(test4(s), s); -%OptimizeFunctionOnNextCall(test4); -assertEquals(test4(s), s); diff --git a/implementation-contributed/v8/mjsunit/compiler/this-property-refs.js b/implementation-contributed/v8/mjsunit/compiler/this-property-refs.js deleted file mode 100644 index 1ee8e50ca56..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/this-property-refs.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test references to properties of this. -function Test() { - this.a = 0; - this.b = 1; - this.c = 2; - this.d = 3; -} - -Test.prototype.test0 = function () { - this.a = this.b; -}; - -Test.prototype.test1 = function() { - this.a = this.b = this.c; -}; - -Test.prototype.test2 = function() { - this.c = this.d; - this.b = this.c; - this.a = this.b; -}; - -var t = new Test(); - -t.test0(); -assertEquals(1, t.a); - -t.test1(); -assertEquals(2, t.a); -assertEquals(2, t.b); - -t.test2(); -assertEquals(3, t.a); -assertEquals(3, t.b); -assertEquals(3, t.c); diff --git a/implementation-contributed/v8/mjsunit/compiler/thisfunction.js b/implementation-contributed/v8/mjsunit/compiler/thisfunction.js deleted file mode 100644 index 7615561c5fd..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/thisfunction.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test reference to this-function. - -var g = (function f(x) { - if (x == 1) return 42; else return f(1); - })(0); -assertEquals(42, g); diff --git a/implementation-contributed/v8/mjsunit/compiler/to-fast-properties.js b/implementation-contributed/v8/mjsunit/compiler/to-fast-properties.js deleted file mode 100644 index 26829d95e9b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/to-fast-properties.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This test requires OSR or --stress-runs=3 to optimize the top level script. - -for (var i = 0; i < 3; i++) { - // HToFastProperties is used for top-level object literals that have - // function property. - var obj = { - index: function() { return i; }, - x: 0 - } - var n = 10000; - // Loop to hit OSR. - for (var j = 0; j < n; j++) { - obj.x += i; - } - assertEquals(obj.index() * n, obj.x); -} diff --git a/implementation-contributed/v8/mjsunit/compiler/truncating-store-deopt.js b/implementation-contributed/v8/mjsunit/compiler/truncating-store-deopt.js deleted file mode 100644 index a640caf5834..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/truncating-store-deopt.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g(a, b, c) { - return a + b + c; -} - -var asm = (function Module(global, env, buffer) { - "use asm"; - - var i32 = new global.Int32Array(buffer); - - // This is not valid asm.js, but we should still generate correct code. - function store(x) { - return g(1, i32[0] = x, 2); - } - - return { store: store }; -})({ - "Int32Array": Int32Array -}, {}, new ArrayBuffer(64 * 1024)); - -var o = { toString : function() { %DeoptimizeFunction(asm.store); return "1"; } } - -asm.store(o); diff --git a/implementation-contributed/v8/mjsunit/compiler/truncating-store.js b/implementation-contributed/v8/mjsunit/compiler/truncating-store.js deleted file mode 100644 index 9e3dd381e01..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/truncating-store.js +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - var asm = (function Module(global, env, buffer) { - "use asm"; - - var i8 = new global.Int8Array(buffer); - var u8 = new global.Uint8Array(buffer); - var i16 = new global.Int16Array(buffer); - var u16 = new global.Uint16Array(buffer); - var i32 = new global.Int32Array(buffer); - var u32 = new global.Uint32Array(buffer); - - var H = 0; - - function store_i8() { - H = 4294967295; - i8[0 >> 0]= H; - return i8[0 >> 0]; - } - - function store_u8() { - H = 4294967295; - u8[0 >> 0]= H; - return u8[0 >> 0]; - } - - function store_i16() { - H = 4294967295; - i16[0 >> 0]= H; - return i16[0 >> 0]; - } - - function store_u16() { - H = 4294967295; - u16[0 >> 0]= H; - return u16[0 >> 0]; - } - - function store_i32() { - H = 4294967295; - i32[0 >> 0]= H; - return i32[0 >> 0]; - } - - function store_u32() { - H = 4294967295; - u32[0 >> 0]= H; - return u32[0 >> 0]; - } - - return { store_i8: store_i8, - store_u8: store_u8, - store_i16: store_i16, - store_u16: store_u16, - store_i32: store_i32, - store_u32: store_u32 }; - })({ - "Int8Array": Int8Array, - "Uint8Array": Uint8Array, - "Int16Array": Int16Array, - "Uint16Array": Uint16Array, - "Int32Array": Int32Array, - "Uint32Array": Uint32Array - }, {}, new ArrayBuffer(64 * 1024)); - - assertEquals(-1, asm.store_i8()); - assertEquals(255, asm.store_u8()); - assertEquals(-1, asm.store_i16()); - assertEquals(65535, asm.store_u16()); - assertEquals(-1, asm.store_i32()); - assertEquals(4294967295, asm.store_u32()); -})(); - -(function() { - var asm = (function Module(global, env, buffer) { - "use asm"; - - var i32 = new global.Int32Array(buffer); - - var H = 0; - - // This is not valid asm.js, but we should still generate correct code. - function store_i32_from_string() { - H = "3"; - i32[0 >> 0]= H; - return i32[0 >> 0]; - } - - return { store_i32_from_string: store_i32_from_string }; - })({ - "Int32Array": Int32Array - }, {}, new ArrayBuffer(64 * 1024)); - - assertEquals(3, asm.store_i32_from_string()); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/try-binop.js b/implementation-contributed/v8/mjsunit/compiler/try-binop.js deleted file mode 100644 index 2132ad2c00d..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/try-binop.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var boom = { valueOf: function() { throw "boom" } }; - -function mult_left_plain(x) { - try { - return 2 * x; - } catch (e) { - return e; - } -} - -%OptimizeFunctionOnNextCall(mult_left_plain); -assertEquals("boom", mult_left_plain(boom)); -assertEquals(46, mult_left_plain(23)); - -function mult_right_plain(x) { - try { - return x * 3; - } catch (e) { - return e; - } -} - -%OptimizeFunctionOnNextCall(mult_right_plain); -assertEquals("boom", mult_right_plain(boom)); -assertEquals(69, mult_right_plain(23)); - -function mult_none_plain(x,y) { - try { - return x * y; - } catch (e) { - return e; - } -} - -%OptimizeFunctionOnNextCall(mult_none_plain); -assertEquals("boom", mult_none_plain(boom, boom)); -assertEquals("boom", mult_none_plain(boom, 2)); -assertEquals("boom", mult_none_plain(2, boom)); -assertEquals(966, mult_none_plain(23, 42)); diff --git a/implementation-contributed/v8/mjsunit/compiler/try-catch-deopt.js b/implementation-contributed/v8/mjsunit/compiler/try-catch-deopt.js deleted file mode 100644 index 2b6372cf281..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/try-catch-deopt.js +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function LazyDeoptFromTryBlock() { - function g(dummy) { - %DeoptimizeFunction(f); - throw 42; - } - - function f() { - var a = 1; - try { - var dummy = 2; // perturb the stack height. - g(dummy); - } catch (e) { - return e + a; - } - } - - assertEquals(43, f()); - assertEquals(43, f()); - %NeverOptimizeFunction(g); - %OptimizeFunctionOnNextCall(f); - assertEquals(43, f()); -})(); - - -(function LazyDeoptDoublyNestedTryBlock() { - function g(dummy) { - %DeoptimizeFunction(f); - throw 42; - } - - function f() { - var b; - try { - var a = 1; - try { - var dummy = 2; // perturb the stack height. - g(dummy); - } catch (e) { - b = e + a; - } - } catch (e) { - return 0; - } - return b; - } - - assertEquals(43, f()); - assertEquals(43, f()); - %NeverOptimizeFunction(g); - %OptimizeFunctionOnNextCall(f); - assertEquals(43, f()); -})(); - -(function LazyDeoptInlinedTry() { - function g(dummy) { - %DeoptimizeFunction(f); - %DeoptimizeFunction(h); - throw 42; - } - - function h() { - var a = 1; - try { - var dummy = 2; // perturb the stack height. - g(dummy); - } catch (e) { - b = e + a; - } - return b; - } - - function f() { - var c = 1; - return h() + 1; - } - - assertEquals(44, f()); - assertEquals(44, f()); - %NeverOptimizeFunction(g); - %OptimizeFunctionOnNextCall(f); - assertEquals(44, f()); -})(); - -(function LazyDeoptInlinedIntoTry() { - function g(c) { - %DeoptimizeFunction(f); - %DeoptimizeFunction(h); - throw c; - } - - function h(c) { - return g(c); - } - - function f() { - var a = 1; - try { - var c = 42; // perturb the stack height. - h(c); - } catch (e) { - a += e; - } - return a; - } - - assertEquals(43, f()); - assertEquals(43, f()); - %NeverOptimizeFunction(g); - %OptimizeFunctionOnNextCall(f); - assertEquals(43, f()); -})(); - -(function LazyDeoptTryBlockContextCatch() { - var global = 0; - - function g() { - %DeoptimizeFunction(f); - throw "boom!"; - } - - function f(a) { - var x = a + 23 - try { - let y = a + 42; - function capture() { return x + y } - g(); - } catch(e) { - global = x; - } - return x; - } - assertEquals(23, f(0)); - assertEquals(24, f(1)); - %OptimizeFunctionOnNextCall(f); - assertEquals(25, f(2)); - assertEquals(25, global); -})(); - -(function LazyDeoptTryBlockFinally() { - var global = 0; - - function g() { - %DeoptimizeFunction(f); - throw "boom!"; - } - - function f(a) { - var x = a + 23 - try { - let y = a + 42; - function capture() { return x + y } - g(); - } finally { - global = x; - } - return x; - } - assertThrows(function() { f(0) }); - assertThrows(function() { f(1) }); - %OptimizeFunctionOnNextCall(f); - assertThrowsEquals(function() { f(2) }, "boom!"); - assertEquals(25, global); -})(); - -(function LazyDeoptTryCatchContextCatch() { - var global = 0; - - function g() { - %DeoptimizeFunction(f); - throw 5; - } - - function f(a) { - var x = a + 23 - try { - try { - throw 1; - } catch(e2) { - function capture() { return x + y } - g(); - } - } catch(e) { - global = x + e; - } - return x; - } - assertEquals(23, f(0)); - assertEquals(24, f(1)); - %OptimizeFunctionOnNextCall(f); - assertEquals(25, f(2)); - assertEquals(30, global); -})(); - -(function LazyDeoptTryWithContextCatch() { - var global = 0; - - function g() { - %DeoptimizeFunction(f); - throw 5; - } - - function f(a) { - var x = a + 23 - try { - with ({ y : a + 42 }) { - function capture() { return x + y } - g(); - } - } catch(e) { - global = x + e; - } - return x; - } - assertEquals(23, f(0)); - assertEquals(24, f(1)); - %OptimizeFunctionOnNextCall(f); - assertEquals(25, f(2)); - assertEquals(30, global); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/try-context.js b/implementation-contributed/v8/mjsunit/compiler/try-context.js deleted file mode 100644 index 4e6d9b028c1..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/try-context.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TryBlockCatch() { - var global = 0; - function f(a) { - var x = a + 23 - try { - let y = a + 42; - function capture() { return x + y } - throw "boom!"; - } catch(e) { - global = x; - } - return x; - } - assertEquals(23, f(0)); - assertEquals(24, f(1)); - %OptimizeFunctionOnNextCall(f); - assertEquals(25, f(2)); - assertEquals(25, global); -})(); - -(function TryBlockFinally() { - var global = 0; - function f(a) { - var x = a + 23 - try { - let y = a + 42; - function capture() { return x + y } - throw "boom!"; - } finally { - global = x; - } - return x; - } - assertThrows(function() { f(0) }); - assertThrows(function() { f(1) }); - %OptimizeFunctionOnNextCall(f); - assertThrows(function() { f(2) }); - assertEquals(25, global); -})(); - -(function TryCatchCatch() { - var global = 0; - function f(a) { - var x = a + 23 - try { - try { - throw "boom!"; - } catch(e2) { - function capture() { return x + y } - throw "boom!"; - } - } catch(e) { - global = x; - } - return x; - } - assertEquals(23, f(0)); - assertEquals(24, f(1)); - %OptimizeFunctionOnNextCall(f); - assertEquals(25, f(2)); - assertEquals(25, global); -})(); - -(function TryWithCatch() { - var global = 0; - function f(a) { - var x = a + 23 - try { - with ({ y : a + 42 }) { - function capture() { return x + y } - throw "boom!"; - } - } catch(e) { - global = x; - } - return x; - } - assertEquals(23, f(0)); - assertEquals(24, f(1)); - %OptimizeFunctionOnNextCall(f); - assertEquals(25, f(2)); - assertEquals(25, global); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/try-deopt.js b/implementation-contributed/v8/mjsunit/compiler/try-deopt.js deleted file mode 100644 index a4a6eb03041..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/try-deopt.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function DeoptFromTry(x) { - try { - %DeoptimizeFunction(DeoptFromTry); - throw x; - } catch (e) { - return e + 1; - } - return x + 2; -} -%OptimizeFunctionOnNextCall(DeoptFromTry); -assertEquals(24, DeoptFromTry(23)); - - -function DeoptFromCatch(x) { - try { - throw x; - } catch (e) { - %DeoptimizeFunction(DeoptFromCatch); - return e + 1; - } - return x + 2; -} -%OptimizeFunctionOnNextCall(DeoptFromCatch); -assertEquals(24, DeoptFromCatch(23)); - - -function DeoptFromFinally_Return(x) { - try { - throw x; - } finally { - %DeoptimizeFunction(DeoptFromFinally_Return); - return x + 1; - } - return x + 2; -} -%OptimizeFunctionOnNextCall(DeoptFromFinally_Return); -assertEquals(24, DeoptFromFinally_Return(23)); - - -function DeoptFromFinally_ReThrow(x) { - try { - throw x; - } finally { - %DeoptimizeFunction(DeoptFromFinally_ReThrow); - } - return x + 2; -} -%OptimizeFunctionOnNextCall(DeoptFromFinally_ReThrow); -assertThrows("DeoptFromFinally_ReThrow(new Error)", Error); diff --git a/implementation-contributed/v8/mjsunit/compiler/try-finally-deopt.js b/implementation-contributed/v8/mjsunit/compiler/try-finally-deopt.js deleted file mode 100644 index 455bf3477fb..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/try-finally-deopt.js +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function DeoptimizeFinallyFallThrough() { - var global = 0; - function f() { - var a = 1; - try { - global = 1; - } finally { - global = 42; - %DeoptimizeNow(); - } - return global + a; - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - assertEquals(43, f()); - assertEquals(42, global); -})(); - -(function DeoptimizeFinallyReturn() { - var global = 0; - function f() { - try { - return 10; - } finally { - global = 42; - %DeoptimizeNow(); - } - return 1; - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - assertEquals(10, f()); - assertEquals(42, global); -})(); - -(function DeoptimizeFinallyReturnDoublyNested() { - var global = 0; - function f() { - try { - try { - return 10; - } finally { - global += 21; - %DeoptimizeNow(); - } - } finally { - global += 21; - } - return 1; - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - global = 0; - assertEquals(10, f()); - assertEquals(42, global); -})(); - -(function DeoptimizeOuterFinallyReturnDoublyNested() { - var global = 0; - function f() { - try { - try { - return 10; - } finally { - global += 21; - } - } finally { - global += 21; - %DeoptimizeNow(); - } - return 1; - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - global = 0; - assertEquals(10, f()); - assertEquals(42, global); -})(); - -(function DeoptimizeFinallyThrow() { - var global = 0; - function f() { - try { - global = 21; - throw 1; - global = 2; - } finally { - global += 21; - %DeoptimizeNow(); - } - global = 3; - return 1; - } - - try { f(); } catch(e) {} - try { f(); } catch(e) {} - %OptimizeFunctionOnNextCall(f); - assertThrowsEquals(f, 1); - assertEquals(42, global); -})(); - -(function DeoptimizeFinallyThrowNested() { - var global = 0; - function f() { - try { - try { - global = 10; - throw 1; - global = 2; - } finally { - global += 11; - %DeoptimizeNow(); - } - global = 4; - } finally { - global += 21; - } - global = 3; - return 1; - } - - try { f(); } catch(e) {} - try { f(); } catch(e) {} - %OptimizeFunctionOnNextCall(f); - assertThrowsEquals(f, 1); - assertEquals(42, global); -})(); - -(function DeoptimizeFinallyContinue() { - var global = 0; - function f() { - global = 0; - for (var i = 0; i < 2; i++) { - try { - if (i == 0) continue; - global += 10; - } finally { - global += 6; - %DeoptimizeNow(); - } - global += 20; - } - return 1; - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - assertEquals(1, f()); - assertEquals(42, global); -})(); - -(function DeoptimizeFinallyContinueNestedTry() { - var global = 0; - function f() { - global = 0; - for (var i = 0; i < 2; i++) { - try { - try { - if (i == 0) continue; - global += 5; - } finally { - global += 4; - %DeoptimizeNow(); - } - global += 5; - } finally { - global += 2; - } - global += 20; - } - return 1; - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - assertEquals(1, f()); - assertEquals(42, global); -})(); - -(function DeoptimizeFinallyBreak() { - var global = 0; - function f() { - global = 0; - for (var i = 0; i < 2; i++) { - try { - global += 20; - if (i == 0) break; - global += 5; - } finally { - global += 22; - %DeoptimizeNow(); - } - global += 5; - } - return 1; - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - assertEquals(1, f()); - assertEquals(42, global); -})(); - -(function DeoptimizeFinallyBreakNested() { - var global = 0; - function f() { - global = 0; - for (var i = 0; i < 2; i++) { - try { - try { - global += 20; - if (i == 0) break; - global += 5; - } finally { - global += 12; - %DeoptimizeNow(); - } - global += 8; - } finally { - global += 10; - } - global += 5; - } - return 1; - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - assertEquals(1, f()); - assertEquals(42, global); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/try-osr.js b/implementation-contributed/v8/mjsunit/compiler/try-osr.js deleted file mode 100644 index c0ef27add3c..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/try-osr.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function OSRInsideTry(x) { - try { - for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } - throw x; - } catch (e) { - return e + 1; - } - return x + 2; -} -assertEquals(24, OSRInsideTry(23)); - - -function OSRInsideCatch(x) { - try { - throw x; - } catch (e) { - for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } - return e + 1; - } - return x + 2; -} -assertEquals(24, OSRInsideCatch(23)); - - -function OSRInsideFinally_Return(x) { - try { - throw x; - } finally { - for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } - return x + 1; - } - return x + 2; -} -assertEquals(24, OSRInsideFinally_Return(23)); - - -function OSRInsideFinally_ReThrow(x) { - try { - throw x; - } finally { - for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } - } - return x + 2; -} -assertThrows("OSRInsideFinally_ReThrow(new Error)", Error); diff --git a/implementation-contributed/v8/mjsunit/compiler/turbo-number-feedback.js b/implementation-contributed/v8/mjsunit/compiler/turbo-number-feedback.js deleted file mode 100644 index 8875b8c0c34..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/turbo-number-feedback.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function AddSubtractSmis() { - function f0(a, b, c) { - return a + b - c; - } - - assertEquals(4, f0(3, 2, 1)); - assertEquals(4, f0(3, 2, 1)); - %OptimizeFunctionOnNextCall(f0); - assertEquals(4, f0(3, 2, 1)); -})(); - -(function AddSubtractDoubles() { - function f1(a, b, c) { - return a + b - c; - } - - assertEquals(4.5, f1(3.5, 2.5, 1.5)); - assertEquals(4.5, f1(3.5, 2.5, 1.5)); - %OptimizeFunctionOnNextCall(f1); - assertEquals(4.5, f1(3.5, 2.5, 1.5)); - assertEquals(4, f1(3, 2, 1)); - assertTrue(isNaN(f1(3, 2, undefined))); - assertTrue(isNaN(f1(3, undefined, 1))); -})(); - -(function CheckUint32ToInt32Conv() { - function f2(a) { - return (a >>> 0) + 1; - } - - assertEquals(1, f2(0)); - assertEquals(1, f2(0)); - %OptimizeFunctionOnNextCall(f2); - assertEquals(1, f2(0)); - assertEquals(4294967295, f2(-2)); -})(); - -(function CheckFloat64ToInt32Conv() { - function f3(a, b) { - var x = 0; - if (a) { - x = 0.5; - } - return x + b; - } - - assertEquals(1, f3(0, 1)); - assertEquals(1, f3(0, 1)); - %OptimizeFunctionOnNextCall(f3); - assertEquals(1, f3(0, 1)); - assertEquals(1.5, f3(1, 1)); -})(); - -(function ShiftLeftSmis() { - function f4(a, b) { - return a << b; - } - - assertEquals(24, f4(3, 3)); - assertEquals(40, f4(5, 3)); - %OptimizeFunctionOnNextCall(f4); - assertEquals(64, f4(4, 4)); -})(); - -(function ShiftLeftNumbers() { - function f5(a, b) { - return a << b; - } - - assertEquals(24, f5(3.3, 3.4)); - assertEquals(40, f5(5.1, 3.9)); - %OptimizeFunctionOnNextCall(f5); - assertEquals(64, f5(4.9, 4.1)); -})(); - -(function ShiftRightNumbers() { - function f6(a, b) { - return a >> b; - } - - assertEquals(1, f6(8.3, 3.4)); - assertEquals(-2, f6(-16.1, 3.9)); - %OptimizeFunctionOnNextCall(f6); - assertEquals(0, f6(16.2, 5.1)); -})(); - -(function ShiftRightLogicalNumbers() { - function f7(a, b) { - return a >>> b; - } - - assertEquals(1, f7(8.3, 3.4)); - assertEquals(536870910, f7(-16.1, 3.9)); - %OptimizeFunctionOnNextCall(f7); - assertEquals(0, f7(16.2, 5.1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/type-speculative-safe-integer-add.js b/implementation-contributed/v8/mjsunit/compiler/type-speculative-safe-integer-add.js deleted file mode 100644 index 459e2b4202a..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/type-speculative-safe-integer-add.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function(){ - function f(x){ - return 1/(x+x); - } - - function forgetAboutMinus0(i) { - var x = 0; - var y; - for(; i > 0; --i) { - y = f(x); - x = -0; - } - return y; - } - - forgetAboutMinus0(1); - assertEquals(Infinity, forgetAboutMinus0(1)); - %OptimizeFunctionOnNextCall(forgetAboutMinus0); - assertEquals(Infinity, forgetAboutMinus0(1)); - assertEquals(-Infinity, forgetAboutMinus0(2)); -})(); - -(function(){ - function f(x){ - return x+x; - } - - function NumberAdd(x,y) { - return x + y; - } - NumberAdd(1,0.5); - NumberAdd(0.5, 1); - NumberAdd(NaN, Infinity); - - function forgetAboutNaN(b) { - var x = b ? NaN : 1; - return NumberAdd(f(x), 0); - } - - forgetAboutNaN(false); - assertEquals(2, forgetAboutNaN(false)); - %OptimizeFunctionOnNextCall(forgetAboutNaN); - assertEquals(2, forgetAboutNaN(false)); - assertEquals(NaN, forgetAboutNaN(true)); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/typed-array-constructor.js b/implementation-contributed/v8/mjsunit/compiler/typed-array-constructor.js deleted file mode 100644 index 07d6a7ca4e6..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/typed-array-constructor.js +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const limit = %MaxSmi() + 1; - -(function() { - function foo() { - try { new Int8Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new Int8Array/.test(foo())); - assertTrue(/new Int8Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new Int8Array/.test(foo())); -})(); - -(function() { - function foo() { - try { new Uint8Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new Uint8Array/.test(foo())); - assertTrue(/new Uint8Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new Uint8Array/.test(foo())); -})(); - -(function() { - function foo() { - try { new Uint8ClampedArray(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new Uint8ClampedArray/.test(foo())); - assertTrue(/new Uint8ClampedArray/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new Uint8ClampedArray/.test(foo())); -})(); - -(function() { - function foo() { - try { new Int16Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new Int16Array/.test(foo())); - assertTrue(/new Int16Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new Int16Array/.test(foo())); -})(); - -(function() { - function foo() { - try { new Uint16Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new Uint16Array/.test(foo())); - assertTrue(/new Uint16Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new Uint16Array/.test(foo())); -})(); - -(function() { - function foo() { - try { new Int32Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new Int32Array/.test(foo())); - assertTrue(/new Int32Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new Int32Array/.test(foo())); -})(); - -(function() { - function foo() { - try { new Uint32Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new Uint32Array/.test(foo())); - assertTrue(/new Uint32Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new Uint32Array/.test(foo())); -})(); - -(function() { - function foo() { - try { new Float32Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new Float32Array/.test(foo())); - assertTrue(/new Float32Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new Float32Array/.test(foo())); -})(); - - -(function() { - function foo() { - try { new Float64Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new Float64Array/.test(foo())); - assertTrue(/new Float64Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new Float64Array/.test(foo())); -})(); - -(function() { - function foo() { - try { new BigInt64Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new BigInt64Array/.test(foo())); - assertTrue(/new BigInt64Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new BigInt64Array/.test(foo())); -})(); - -(function() { - function foo() { - try { new BigUint64Array(limit); } catch (e) { return e.stack; } - } - - assertTrue(/new BigUint64Array/.test(foo())); - assertTrue(/new BigUint64Array/.test(foo())); - %OptimizeFunctionOnNextCall(foo); - assertTrue(/new BigUint64Array/.test(foo())); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/typedarray-prototype-tostringtag.js b/implementation-contributed/v8/mjsunit/compiler/typedarray-prototype-tostringtag.js deleted file mode 100644 index de4b3020170..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/typedarray-prototype-tostringtag.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const Classes = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; -const TypedArrayPrototype_toStringTag = - Object.getOwnPropertyDescriptor( - Object.getPrototypeOf(Uint8Array.prototype), - Symbol.toStringTag).get; - -(function() { - function foo(o) { - return TypedArrayPrototype_toStringTag.call(o); - } - assertEquals(undefined, foo(1)); - assertEquals(undefined, foo({})); - assertEquals(undefined, foo([])); - Classes.forEach(C => assertEquals(C.name, foo(new C(1)))); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo(1)); - assertEquals(undefined, foo({})); - assertEquals(undefined, foo([])); - Classes.forEach(C => assertEquals(C.name, foo(new C(1)))); -})(); - -(function() { - const ReflectApply = Reflect.apply; - const uncurryThis = func => (thisArg, ...args) => - ReflectApply(func, thisArg, args); - const TypedArrayProto_toStringTag = - uncurryThis(TypedArrayPrototype_toStringTag); - - function isTypedArray(value) { - return TypedArrayProto_toStringTag(value) !== undefined; - } - - assertFalse(isTypedArray(1)); - assertFalse(isTypedArray({})); - assertFalse(isTypedArray([])); - assertFalse(isTypedArray('Lorem ipsum')); - Classes.forEach(C => assertTrue(isTypedArray(new C(1)))); - %OptimizeFunctionOnNextCall(isTypedArray); - assertFalse(isTypedArray(1)); - assertFalse(isTypedArray({})); - assertFalse(isTypedArray([])); - assertFalse(isTypedArray('Lorem ipsum')); - Classes.forEach(C => assertTrue(isTypedArray(new C(1)))); -})(); - -(function() { - const ReflectApply = Reflect.apply; - const uncurryThis = func => (thisArg, ...args) => - ReflectApply(func, thisArg, args); - const TypedArrayProto_toStringTag = - uncurryThis(TypedArrayPrototype_toStringTag); - - function isUint8Array(value) { - return TypedArrayProto_toStringTag(value) === 'Uint8Array'; - } - - assertFalse(isUint8Array(1)); - assertFalse(isUint8Array({})); - assertFalse(isUint8Array([])); - assertFalse(isUint8Array('Lorem ipsum')); - Classes.forEach(C => assertEquals(C === Uint8Array, isUint8Array(new C(1)))); - %OptimizeFunctionOnNextCall(isUint8Array); - assertFalse(isUint8Array(1)); - assertFalse(isUint8Array({})); - assertFalse(isUint8Array([])); - assertFalse(isUint8Array('Lorem ipsum')); - Classes.forEach(C => assertEquals(C === Uint8Array, isUint8Array(new C(1)))); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/uint32.js b/implementation-contributed/v8/mjsunit/compiler/uint32.js deleted file mode 100644 index 3568e27f031..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/uint32.js +++ /dev/null @@ -1,204 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -// Test uint32 handing in optimized frames. - -var K1 = 0x7fffffff; -var K2 = 0xffffffff; - -var uint32_array = new Uint32Array(2); -uint32_array[0] = K1; -uint32_array[1] = K2; - -function ChangeI2T(arr, i) { - return uint32_array[i]; -} - -assertEquals(K1, ChangeI2T(uint32_array, 0)); -assertEquals(K2, ChangeI2T(uint32_array, 1)); -%OptimizeFunctionOnNextCall(ChangeI2T); -assertEquals(K1, ChangeI2T(uint32_array, 0)); -// Loop to force inline allocation failure and a call into runtime. -for (var i = 0; i < 80000; i++) { - assertEquals(K2, ChangeI2T(uint32_array, 1)); -} - -function SideEffect() { - with ({}) { } // not inlinable -} - -function Deopt(obj, arr, i) { - var x = arr[i]; - SideEffect(); // x will be used by HSimulate. - obj.x; - return x; -} - -assertEquals(K1, Deopt({x: 0}, uint32_array, 0)); -assertEquals(K2, Deopt({x: 0}, uint32_array, 1)); -%OptimizeFunctionOnNextCall(Deopt); -assertEquals(K2, Deopt({}, uint32_array, 1)); - -function ChangeI2D(arr) { - // This addition will have a double type feedback so ChangeI2D will - // be generated for its operands. - return arr[0] + arr[1]; -} - -assertEquals(K1 + K2, ChangeI2D(uint32_array)); -assertEquals(K1 + K2, ChangeI2D(uint32_array)); -%OptimizeFunctionOnNextCall(ChangeI2D); -assertEquals(K1 + K2, ChangeI2D(uint32_array)); - -function ShrShr(val) { - return (val >>> 0) >>> 1; -} - -assertEquals(K1, ShrShr(K2 | 0)); -assertEquals(K1, ShrShr(K2 | 0)); -%OptimizeFunctionOnNextCall(ShrShr); -assertEquals(K1, ShrShr(K2 | 0)); - -function SarShr(val) { - return val >> (-2 >>> 0); -} - -var K3 = 0x80000000; -assertEquals(-2, SarShr(K3 | 0)); -assertEquals(-2, SarShr(K3 | 0)); -%OptimizeFunctionOnNextCall(SarShr); -assertEquals(-2, SarShr(K3 | 0)); - -function Uint32Phi(a, b, c) { - var i = a ? (b >>> 0) : (c >>> 0); - return (i | 0); -} - -var K4 = 0x80000001; -assertEquals(K3 | 0, Uint32Phi(true, K3, K4)); -assertEquals(K4 | 0, Uint32Phi(false, K3, K4)); -assertEquals(K3 | 0, Uint32Phi(true, K3, K4)); -assertEquals(K4 | 0, Uint32Phi(false, K3, K4)); -%OptimizeFunctionOnNextCall(Uint32Phi); -assertEquals(K3 | 0, Uint32Phi(true, K3, K4)); -assertEquals(K4 | 0, Uint32Phi(false, K3, K4)); - -function NonUint32Phi(a, b, c) { - var i = a ? (b >>> 0) : c; - return (i | 0); -} - -assertEquals(K3 | 0, NonUint32Phi(true, K3, K4)); -assertEquals(K4 | 0, NonUint32Phi(false, K3, K4)); -assertEquals(K3 | 0, NonUint32Phi(true, K3, K4)); -assertEquals(K4 | 0, NonUint32Phi(false, K3, K4)); -%OptimizeFunctionOnNextCall(NonUint32Phi); -assertEquals(K3 | 0, NonUint32Phi(true, K3, K4)); -assertEquals(K4 | 0, NonUint32Phi(false, K3, K4)); - -function PhiOfPhi(x) { - var a = (x >>> 0); - for (var i = 0; i < 2; i++) { - for (var j = 0; j < 2; j++) { - a = (a >>> 0); - } - } - return (a | 0); -} - -assertEquals(1, PhiOfPhi(1)); -assertEquals(1, PhiOfPhi(1)); -%OptimizeFunctionOnNextCall(PhiOfPhi); -assertEquals(K3 | 0, PhiOfPhi(K3)); - -function PhiOfPhiUnsafe(x) { - var a = x >>> 0; - for (var i = 0; i < 2; i++) { - for (var j = 0; j < 2; j++) { - a = (a >>> 0); - } - } - return a + a; -} - -assertEquals(2, PhiOfPhiUnsafe(1)); -assertEquals(2, PhiOfPhiUnsafe(1)); -%OptimizeFunctionOnNextCall(PhiOfPhiUnsafe); -assertEquals(2 * K3, PhiOfPhiUnsafe(K3)); - -var old_array = new Array(1000); - -for (var i = 0; i < old_array.length; i++) old_array[i] = null; - -// Force promotion. -gc(); -gc(); - -function FillOldArrayWithHeapNumbers(N) { - for (var i = 0; i < N; i++) { - old_array[i] = uint32_array[1]; - } -} - -FillOldArrayWithHeapNumbers(1); -FillOldArrayWithHeapNumbers(1); -%OptimizeFunctionOnNextCall(FillOldArrayWithHeapNumbers); -FillOldArrayWithHeapNumbers(old_array.length); -gc(); - -// Test that HArgumentsObject does not prevent uint32 optimization and -// that arguments object with uint32 values inside is correctly materialized. -function Pack(x, y) { - try { // Prevent inlining. - return [x, y]; - } catch (e) { - } -} - -function InnerWithArguments(x, f) { - "use strict"; - x >>>= 8; - return f(arguments[0], x|0); -} - -function Outer(v, f) { - return InnerWithArguments(v >>> 0, f); -} - -assertArrayEquals([0x0100, 0x01], Outer(0x0100, Pack)); -assertArrayEquals([0x0100, 0x01], Outer(0x0100, Pack)); -assertArrayEquals([0x0100, 0x01], Outer(0x0100, Pack)); -%OptimizeFunctionOnNextCall(Outer); -assertArrayEquals([0x0100, 0x01], Outer(0x0100, Pack)); -assertArrayEquals([0xFFFFFFFF, 0x00FFFFFF], Outer(-1, Pack)); - -// Cause deopt inside InnerWithArguments by passing different pack function. -assertArrayEquals([0xFFFFFFFF, 0x00FFFFFF], Outer(-1, function (x, y) { - return [x, y]; -})); diff --git a/implementation-contributed/v8/mjsunit/compiler/uint8-clamped-array.js b/implementation-contributed/v8/mjsunit/compiler/uint8-clamped-array.js deleted file mode 100644 index 21cc5bbc364..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/uint8-clamped-array.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -(function() { - function foo(a, v) { - a[0] = v & 0xff; - } - - var a = new Uint8ClampedArray(4); - foo(a, 1); - foo(a, 2); - %OptimizeFunctionOnNextCall(foo); - foo(a, 256); - assertOptimized(foo); - assertEquals(0, a[0]); -})(); - -(function() { - function foo(a, v) { - a[0] = v >>> 0; - } - - var a = new Uint8ClampedArray(4); - foo(a, 1); - foo(a, 2); - %OptimizeFunctionOnNextCall(foo); - foo(a, 256); - assertOptimized(foo); - assertEquals(255, a[0]); -})(); - -(function() { - function foo(a, v) { - a[0] = v | 0; - } - - var a = new Uint8ClampedArray(4); - foo(a, 1); - foo(a, 2); - %OptimizeFunctionOnNextCall(foo); - foo(a, 256); - assertOptimized(foo); - assertEquals(255, a[0]); - foo(a, -1); - assertOptimized(foo); - assertEquals(0, a[0]); -})(); - -(function() { - function foo(a, v) { - a[0] = v; - } - - var a = new Uint8ClampedArray(4); - foo(a, 1); - foo(a, 2); - %OptimizeFunctionOnNextCall(foo); - foo(a, Infinity); - assertOptimized(foo); - assertEquals(255, a[0]); - foo(a, -Infinity); - assertOptimized(foo); - assertEquals(0, a[0]); - foo(a, 0.5); - assertOptimized(foo); - assertEquals(0, a[0]); - foo(a, 1.5); - assertOptimized(foo); - assertEquals(2, a[0]); -})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/unary-add.js b/implementation-contributed/v8/mjsunit/compiler/unary-add.js deleted file mode 100644 index b1fc0c2ca12..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/unary-add.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test unary addition in various contexts. - -// Test value context. -assertEquals(1, +'1'); -assertEquals(1, +1); -assertEquals(1.12, +1.12); -assertEquals(NaN, +undefined); -assertEquals(NaN, +{}); - -// Test effect context. -assertEquals(1, eval("+'1'; 1")); -assertEquals(1, eval("+1; 1")); -assertEquals(1, eval("+1.12; 1")); -assertEquals(1, eval("+undefined; 1")); -assertEquals(1, eval("+{}; 1")); - -// Test test context. -assertEquals(1, (+'1') ? 1 : 2); -assertEquals(1, (+1) ? 1 : 2); -assertEquals(1, (+'0') ? 2 : 1); -assertEquals(1, (+0) ? 2 : 1); -assertEquals(1, (+1.12) ? 1 : 2); -assertEquals(1, (+undefined) ? 2 : 1); -assertEquals(1, (+{}) ? 2 : 1); - -// Test value/test context. -assertEquals(1, +'1' || 2); -assertEquals(1, +1 || 2); -assertEquals(1.12, +1.12 || 2); -assertEquals(2, +undefined || 2); -assertEquals(2, +{} || 2); - -// Test test/value context. -assertEquals(2, +'1' && 2); -assertEquals(2, +1 && 2); -assertEquals(0, +'0' && 2); -assertEquals(0, +0 && 2); -assertEquals(2, +1.12 && 2); -assertEquals(NaN, +undefined && 2); -assertEquals(NaN, +{} && 2); diff --git a/implementation-contributed/v8/mjsunit/compiler/unsigned-min-max.js b/implementation-contributed/v8/mjsunit/compiler/unsigned-min-max.js deleted file mode 100644 index db91188628f..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/unsigned-min-max.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function umin(a, b) { - a = a >>> 0; - b = b >>> 0; - return Math.min(a, b); -} - -umin(1, 1); -umin(2, 2); -%OptimizeFunctionOnNextCall(umin); -assertEquals(1, umin(1, 2)); -assertEquals(1, umin(2, 1)); -assertEquals(0, umin(0, 4294967295)); -assertEquals(0, umin(4294967295, 0)); -assertEquals(4294967294, umin(-1, -2)); -assertEquals(1234, umin(-2, 1234)); - -function umax(a, b) { - a = a >>> 0; - b = b >>> 0; - return Math.max(a, b); -} - -umax(1, 1); -umax(2, 2); -%OptimizeFunctionOnNextCall(umax); -assertEquals(2, umax(1, 2)); -assertEquals(2, umax(2, 1)); -assertEquals(4294967295, umax(0, 4294967295)); -assertEquals(4294967295, umax(4294967295, 0)); -assertEquals(4294967295, umax(-1, -2)); -assertEquals(4294967294, umax(-2, 1234)); diff --git a/implementation-contributed/v8/mjsunit/compiler/varargs.js b/implementation-contributed/v8/mjsunit/compiler/varargs.js deleted file mode 100644 index ae636dc0f7b..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/varargs.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -x = "a"; - -function test_varargs(...args) { - var sum = this.x; - for (i in args) { - sum += "," + args[i]; - } - return sum; -} - -assertEquals("a", test_varargs()); -assertEquals("a,b", test_varargs("b")); -assertEquals("a,b,c", test_varargs("b", "c")); -assertEquals("a,b,c,d", test_varargs("b", "c", "d")); -assertEquals("a,b,c,d,e", test_varargs("b", "c", "d", "e")); - -function forward_varargs(...args) { - return test_varargs(...args); -} - -assertEquals("a", forward_varargs()); -assertEquals("a,b", forward_varargs("b")); -assertEquals("a,b,c", forward_varargs("b", "c")); -assertEquals("a,b,c,d", forward_varargs("b", "c", "d")); -assertEquals("a,b,c,d,e", forward_varargs("b", "c", "d", "e")); - -function forward_varargs_one_arg(x, ...args) { - return test_varargs(x, ...args); -} - -assertEquals("a,undefined", forward_varargs_one_arg()); -assertEquals("a,b", forward_varargs_one_arg("b")); -assertEquals("a,b,c", forward_varargs_one_arg("b", "c")); -assertEquals("a,b,c,d", forward_varargs_one_arg("b", "c", "d")); -assertEquals("a,b,c,d,e", forward_varargs_one_arg("b", "c", "d", "e")); - -function forward_varargs_two_args(x, y, ...args) { - return test_varargs(x, y, ...args); -} - -assertEquals("a,undefined,undefined", forward_varargs_two_args()); -assertEquals("a,b,undefined", forward_varargs_two_args("b")); -assertEquals("a,b,c", forward_varargs_two_args("b", "c")); -assertEquals("a,b,c,d", forward_varargs_two_args("b", "c", "d")); -assertEquals("a,b,c,d,e", forward_varargs_two_args("b", "c", "d", "e")); diff --git a/implementation-contributed/v8/mjsunit/compiler/variables.js b/implementation-contributed/v8/mjsunit/compiler/variables.js deleted file mode 100644 index fac487823f0..00000000000 --- a/implementation-contributed/v8/mjsunit/compiler/variables.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Simple tests of the various kinds of variable references in the -// implementstion. - -// Global variables. -var x = 0; -function f0() { return x; } -assertEquals(0, f0()); - - -// Parameters. -function f1(x) { return x; } -assertEquals(1, f1(1)); - - -// Stack-allocated locals. -function f2() { var x = 2; return x; } -assertEquals(2, f2()); - - -// Context-allocated locals. Local function forces x into f3's context. -function f3(x) { - function g() { return x; } - return x; -} -assertEquals(3, f3(3)); - -// Local function reads x from an outer context. -function f4(x) { - function g() { return x; } - return g(); -} -assertEquals(4, f4(4)); - - -// Lookup slots. 'With' forces x to be looked up at runtime. -function f5(x) { - with ({}) return x; -} -assertEquals(5, f5(5)); - - -// Parameters rewritten to property accesses. Using the name 'arguments' -// (even if it shadows the arguments object) forces all parameters to be -// rewritten to explicit property accesses. -function f6(arguments) { return arguments; } -assertEquals(6, f6(6)); diff --git a/implementation-contributed/v8/mjsunit/concurrent-initial-prototype-change.js b/implementation-contributed/v8/mjsunit/concurrent-initial-prototype-change.js deleted file mode 100644 index 4a7241c84f8..00000000000 --- a/implementation-contributed/v8/mjsunit/concurrent-initial-prototype-change.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// Flags: --concurrent-recompilation --block-concurrent-recompilation -// Flags: --nostress-opt --no-always-opt - -// --nostress-opt is in place because this particular optimization -// (guaranteeing that the Array prototype chain has no elements) is -// maintained isolate-wide. Once it's been "broken" by the change -// to the Object prototype below, future compiles will not use the -// optimization anymore, and the code will remain optimized despite -// additional changes to the prototype chain. - -if (!%IsConcurrentRecompilationSupported()) { - print("Concurrent recompilation is disabled. Skipping this test."); - quit(); -} - -function f1(a, i) { - return a[i] + 0.5; -} - -var arr = [0.0,,2.5]; -assertEquals(0.5, f1(arr, 0)); -assertEquals(0.5, f1(arr, 0)); - -// Optimized code of f1 depends on initial object and array maps. -%OptimizeFunctionOnNextCall(f1, "concurrent"); -// Kick off recompilation; -assertEquals(0.5, f1(arr, 0)); -// Invalidate current initial object map after compile graph has been created. -Object.prototype[1] = 1.5; -assertEquals(2, f1(arr, 1)); -// Not yet optimized since concurrent recompilation is blocked. -assertUnoptimized(f1, "no sync"); -// Let concurrent recompilation proceed. -%UnblockConcurrentRecompilation(); -// Sync with background thread to conclude optimization, which bails out -// due to map dependency. -assertUnoptimized(f1, "sync"); -//Clear type info for stress runs. -%ClearFunctionFeedback(f1); diff --git a/implementation-contributed/v8/mjsunit/console.js b/implementation-contributed/v8/mjsunit/console.js deleted file mode 100644 index f78afc69dd5..00000000000 --- a/implementation-contributed/v8/mjsunit/console.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -console.assert(true); -console.assert("yes"); -assertThrows(() => console.assert(false), Error); -assertThrows(() => console.assert(""), Error); -assertThrows(() => console.assert(0), Error); - -let args = ["", {}, [], this, Array, 1, 1.4, true, false]; - -console.log(...args); -console.error(...args); -console.warn(...args); -console.info(...args); -console.debug(...args); - -console.time(); -console.timeEnd(); - -console.time("a"); -console.timeEnd("a"); - -console.timeStamp(); -args.forEach(each => console.timeStamp(each)); - -console.trace(); diff --git a/implementation-contributed/v8/mjsunit/const-field-tracking.js b/implementation-contributed/v8/mjsunit/const-field-tracking.js deleted file mode 100644 index 3da6d29bf6e..00000000000 --- a/implementation-contributed/v8/mjsunit/const-field-tracking.js +++ /dev/null @@ -1,268 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -var global = this; - -// TODO(ishell): update the test once const->mutable migration does not -// create a new map. -var IS_INPLACE_MAP_MODIFICATION_SUPPORTED = false; - -var unique_id = 0; -// Creates a function with unique SharedFunctionInfo to ensure the feedback -// vector is unique for each test case. -function MakeFunctionWithUniqueSFI(...args) { - assertTrue(args.length > 0); - var body = `/* Unique comment: ${unique_id++} */ ` + args.pop(); - return new Function(...args, body); -} - - -// -// Load constant field from constant object directly. -// -function TestLoadFromConstantFieldOfAConstantObject(the_value, other_value) { - function A(v) { this.v = v; } - function O() { this.a = new A(the_value); } - var the_object = new O(); - - // Ensure that {the_object.a}'s map is not stable to complicate compiler's - // life. - new A(the_value).blah = 0; - - // Ensure that constant tracking is enabled for {contant_object}. - delete global.constant_object; - global.constant_object = the_object; - assertEquals(the_object, constant_object); - - assertTrue(%HasFastProperties(the_object)); - - // {constant_object} is known to the compiler via global property cell - // tracking. - var load = MakeFunctionWithUniqueSFI("return constant_object.a.v;"); - load(); - load(); - %OptimizeFunctionOnNextCall(load); - assertEquals(the_value, load()); - assertOptimized(load); - if (IS_INPLACE_MAP_MODIFICATION_SUPPORTED) { - var a = new A(other_value); - assertTrue(%HaveSameMap(a, the_object.a)); - // Make constant field mutable by assigning another value - // to some other instance of A. - new A(the_value).v = other_value; - assertTrue(%HaveSameMap(a, new A(the_value))); - assertTrue(%HaveSameMap(a, the_object.a)); - assertUnoptimized(load); - assertEquals(the_value, load()); - } else { - var a = new A(other_value); - assertTrue(%HaveSameMap(a, the_object.a)); - // Make constant field mutable by assigning another value - // to some other instance of A. - new A(the_value).v = other_value; - assertOptimized(load); - assertTrue(!%HaveSameMap(a, new A(the_value))); - - assertTrue(%HaveSameMap(a, the_object.a)); - // Ensure the {the_object.a} migrated to an up-to date version of a map - // by loading a property through IC. - assertEquals(the_value, the_object.a.v); - assertTrue(!%HaveSameMap(a, the_object.a)); - assertOptimized(load); - - // Now attempt to call load should deoptimize because of failed map check. - assertEquals(the_value, load()); - } - assertUnoptimized(load); - assertEquals(the_value, load()); -} - -// Test constant tracking with Smi value. -(function() { - var the_value = 42; - var other_value = 153; - TestLoadFromConstantFieldOfAConstantObject(the_value, other_value); -})(); - -// Test constant tracking with double value. -(function() { - var the_value = 0.9; - var other_value = 0.42; - TestLoadFromConstantFieldOfAConstantObject(the_value, other_value); -})(); - -// Test constant tracking with function value. -(function() { - var the_value = function V() {}; - var other_value = function W() {}; - TestLoadFromConstantFieldOfAConstantObject(the_value, other_value); -})(); - -// Test constant tracking with heap object value. -(function() { - function V() {} - var the_value = new V(); - var other_value = new V(); - TestLoadFromConstantFieldOfAConstantObject(the_value, other_value); -})(); - - -// -// Load constant field from a prototype. -// -function TestLoadFromConstantFieldOfAPrototype(the_value, other_value) { - function Proto() { this.v = the_value; } - var the_prototype = new Proto(); - - function O() {} - O.prototype = the_prototype; - var the_object = new O(); - - // Ensure O.prototype is in fast mode by loading from its field. - function warmup() { return new O().v; } - warmup(); warmup(); warmup(); - assertTrue(%HasFastProperties(O.prototype)); - - // The parameter object is not constant but all the values have the same - // map and therefore the compiler knows the prototype object and can - // optimize load of "v". - var load = MakeFunctionWithUniqueSFI("o", "return o.v;"); - load(new O()); - load(new O()); - %OptimizeFunctionOnNextCall(load); - assertEquals(the_value, load(new O())); - assertOptimized(load); - if (IS_INPLACE_MAP_MODIFICATION_SUPPORTED) { - // Invalidation of mutability should trigger deoptimization with a - // "field-owner" reason. - the_prototype.v = other_value; - } else { - // Invalidation of mutability should trigger deoptimization with a - // "prototype-check" (stability) reason. - the_prototype.v = other_value; - } - assertUnoptimized(load); -} - -// Test constant tracking with Smi value. -(function() { - var the_value = 42; - var other_value = 153; - TestLoadFromConstantFieldOfAPrototype(the_value, other_value); -})(); - -// Test constant tracking with double value. -(function() { - var the_value = 0.9; - var other_value = 0.42; - TestLoadFromConstantFieldOfAPrototype(the_value, other_value); -})(); - -// Test constant tracking with function value. -(function() { - var the_value = function V() {}; - var other_value = function W() {}; - TestLoadFromConstantFieldOfAPrototype(the_value, other_value); -})(); - -// Test constant tracking with heap object value. -(function() { - function V() {} - var the_value = new V(); - var other_value = new V(); - TestLoadFromConstantFieldOfAPrototype(the_value, other_value); -})(); - - -// -// Store to constant field of a constant object. -// -function TestStoreToConstantFieldOfConstantObject(the_value, other_value) { - function A(v) { this.v = v; } - function O() { this.a = new A(the_value); } - var the_object = new O(); - - // Ensure that {the_object.a}'s map is not stable to complicate compiler's - // life. - new A(the_value).blah = 0; - - // Ensure that constant tracking is enabled for {contant_object}. - delete global.constant_object; - global.constant_object = the_object; - assertEquals(the_object, constant_object); - - assertTrue(%HasFastProperties(the_object)); - - // {constant_object} is known to the compiler via global property cell - // tracking. - var store = MakeFunctionWithUniqueSFI("v", "constant_object.a.v = v;"); - store(the_value); - store(the_value); - %OptimizeFunctionOnNextCall(store); - store(the_value); - assertEquals(the_value, constant_object.a.v); - assertOptimized(store); - // Storing of the same value does not deoptimize. - store(the_value); - assertEquals(the_value, constant_object.a.v); - assertOptimized(store); - - if (IS_INPLACE_MAP_MODIFICATION_SUPPORTED) { - var a = new A(other_value); - - if (typeof the_value == "function" || typeof the_value == "object") { - // For heap object fields "field-owner" dependency is installed for - // any access of the field, therefore making constant field mutable by - // assigning other value to some other instance of A should already - // trigger deoptimization. - assertTrue(%HaveSameMap(a, the_object.a)); - new A(the_value).v = other_value; - assertTrue(%HaveSameMap(a, new A(the_value))); - assertTrue(%HaveSameMap(a, the_object.a)); - assertUnoptimized(store); - } else { - assertOptimized(store); - } - // Storing other value deoptimizes because of failed value check. - store(other_value); - assertUnoptimized(store); - assertEquals(other_value, constant_object.a.v); - } else { - // Storing other value deoptimizes because of failed value check. - store(other_value); - assertUnoptimized(store); - assertEquals(other_value, constant_object.a.v); - } -} - -// Test constant tracking with Smi values. -(function() { - var the_value = 42; - var other_value = 153; - TestStoreToConstantFieldOfConstantObject(the_value, other_value); -})(); - -// Test constant tracking with double values. -(function() { - var the_value = 0.9; - var other_value = 0.42 - TestStoreToConstantFieldOfConstantObject(the_value, other_value); -})(); - -// Test constant tracking with function values. -(function() { - var the_value = function V() {}; - var other_value = function W() {}; - TestStoreToConstantFieldOfConstantObject(the_value, other_value); -})(); - -// Test constant tracking with heap object values. -(function() { - function V() {} - var the_value = new V(); - var other_value = new V(); - TestStoreToConstantFieldOfConstantObject(the_value, other_value); -})(); diff --git a/implementation-contributed/v8/mjsunit/constant-compare-nil-value.js b/implementation-contributed/v8/mjsunit/constant-compare-nil-value.js deleted file mode 100644 index 9f5b2adb063..00000000000 --- a/implementation-contributed/v8/mjsunit/constant-compare-nil-value.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function inlined() { - return 1; -} - -function foo() { - if ((inlined() + 0.5) == null) return "null"; - return "non-null"; -} - -assertEquals("non-null", foo()); -assertEquals("non-null", foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals("non-null", foo()); diff --git a/implementation-contributed/v8/mjsunit/constant-fold-control-instructions.js b/implementation-contributed/v8/mjsunit/constant-fold-control-instructions.js deleted file mode 100644 index be3cdfdd915..00000000000 --- a/implementation-contributed/v8/mjsunit/constant-fold-control-instructions.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test() { - assertEquals("string", typeof ""); - assertEquals("number", typeof 1.1); - assertEquals("number", typeof 1); - assertEquals("boolean", typeof true); - assertEquals("function", typeof function() {}); - assertEquals("object", typeof null); - assertEquals("object", typeof {}); - assertEquals("object", typeof /regex/); - - assertTrue(%_IsSmi(1)); - assertFalse(%_IsSmi(1.1)); - assertFalse(%_IsSmi({})); - - assertTrue(%_IsArray([1])); - assertFalse(%_IsArray(function() {})); - - assertTrue(%_IsJSReceiver(new Date())); - assertFalse(%_IsJSReceiver(1)); -} - - -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); diff --git a/implementation-contributed/v8/mjsunit/constant-folding-2.js b/implementation-contributed/v8/mjsunit/constant-folding-2.js deleted file mode 100644 index 8359dc2c0e0..00000000000 --- a/implementation-contributed/v8/mjsunit/constant-folding-2.js +++ /dev/null @@ -1,302 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Flags: --allow-natives-syntax --nostress-opt --opt - -function test(f, iterations) { - f(); - f(); - // Some of the tests need to learn until they stabilize. - let n = iterations ? iterations : 1; - for (let i = 0; i < n; i++) { - %OptimizeFunctionOnNextCall(f); - f(); - } - // Assert that the function finally stabilized. - assertOptimized(f); -} - -test(function add() { - assertEquals(2, 1 + 1); - assertEquals(2.5, 1.25 + 1.25); - assertSame(Infinity, Infinity + Infinity); - assertSame(Infinity, Infinity + 3); - assertSame(NaN, Infinity + (-Infinity)); - assertSame(NaN, NaN + 2); - assertSame(-Infinity, 1 / (-0.0 + (-0.0))); - assertSame(Infinity, 1 / (-0.0 + 0.0)); -}); - -test(function inc() { - var a = 1; - var b = Infinity; - var c = -Infinity; - var d = NaN; - assertEquals(2, ++a); - assertSame(Infinity, ++b); - assertSame(-Infinity, ++c); - assertSame(NaN, ++d); -}); - -test(function dec() { - var a = 1; - var b = Infinity; - var c = -Infinity; - var d = NaN; - assertEquals(0, --a); - assertSame(Infinity, --b); - assertSame(-Infinity, --c); - assertSame(NaN, --d); -}); - -test(function sub() { - assertEquals(0, 1 - 1); - assertEquals(0.5, 1.5 - 1); - assertSame(Infinity, Infinity - (-Infinity)); - assertSame(Infinity, Infinity - 3); - assertSame(NaN, Infinity - Infinity); - assertSame(NaN, NaN - 2); - assertSame(-Infinity, 1 / (-0.0 - 0.0)); - assertSame(Infinity, 1 / (0.0 - 0.0)); -}); - -test(function mul() { - assertEquals(1, 1 * 1); - assertEquals(2.25, 1.5 * 1.5); - assertSame(Infinity, Infinity * Infinity); - assertSame(-Infinity, Infinity * (-Infinity)); - assertSame(Infinity, Infinity * 3); - assertSame(-Infinity, Infinity * (-3)); - assertSame(NaN, NaN * 3); - assertSame(-Infinity, 1 / (-0.0 * 0.0)); - assertSame(Infinity, 1 / (0.0 * 0.0)); -}); - -test(function div() { - assertEquals(1, 1 / 1); - assertEquals(1.5, 2.25 / 1.5); - assertSame(NaN, Infinity / Infinity); - assertSame(Infinity, Infinity / 3); - assertSame(-Infinity, Infinity / (-3)); - assertSame(NaN, NaN / 3); - assertSame(-Infinity, 1 / (-0.0)); - assertSame(Infinity, Infinity / 0.0); -}); - -test(function mathMin() { - assertEquals(1, Math.min(1, 10)); - assertEquals(1.5, Math.min(1.5, 2.5)); - assertEquals(0, Math.min(Infinity, 0)); - assertSame(Infinity, Math.min(Infinity, Infinity)); - assertSame(-Infinity, Math.min(Infinity, -Infinity)); - assertSame(NaN, Math.min(NaN, 1)); - assertSame(Infinity, 1 / Math.min(0.0, 0.0)); - assertSame(-Infinity, 1 / Math.min(-0.0, -0.0)); - assertSame(-Infinity, 1 / Math.min(0.0, -0.0)); -}); - -test(function mathMax() { - assertEquals(10, Math.max(1, 10)); - assertEquals(2.5, Math.max(1.5, 2.5)); - assertEquals(Infinity, Math.max(Infinity, 0)); - assertSame(-Infinity, Math.max(-Infinity, -Infinity)); - assertSame(Infinity, Math.max(Infinity, -Infinity)); - assertSame(NaN, Math.max(NaN, 1)); - assertSame(Infinity, 1 / Math.max(0.0, 0.0)); - assertSame(-Infinity, 1 / Math.max(-0.0, -0.0)); - assertSame(Infinity, 1 / Math.max(0.0, -0.0)); -}); - -test(function mathExp() { - assertEquals(1.0, Math.exp(0.0)); - assertTrue(2.7 < Math.exp(1) && Math.exp(1) < 2.8); - assertSame(Infinity, Math.exp(Infinity)); - assertEquals("0", String(Math.exp(-Infinity))); - assertSame(NaN, Math.exp(NaN)); -}); - -test(function mathLog() { - assertEquals(0.0, Math.log(1.0)); - assertTrue(1 < Math.log(3) && Math.log(3) < 1.5); - assertSame(Infinity, Math.log(Infinity)); - assertSame(NaN, Math.log(-Infinity)); - assertSame(NaN, Math.exp(NaN)); -}); - -test(function mathSqrt() { - assertEquals(1.0, Math.sqrt(1.0)); - assertSame(NaN, Math.sqrt(-1.0)); - assertSame(Infinity, Math.sqrt(Infinity)); - assertSame(NaN, Math.sqrt(-Infinity)); - assertSame(NaN, Math.sqrt(NaN)); -}); - -test(function mathPowHalf() { - assertEquals(1.0, Math.pow(1.0, 0.5)); - assertSame(NaN, Math.sqrt(-1.0)); - assertSame(Infinity, Math.pow(Infinity, 0.5)); - assertSame(NaN, Math.sqrt(-Infinity, 0.5)); - assertEquals(0, Math.pow(Infinity, -0.5)); - assertSame(NaN, Math.sqrt(-Infinity, -0.5)); - assertSame(NaN, Math.sqrt(NaN, 0.5)); -}); - -test(function mathAbs() { - assertEquals(1.5, Math.abs(1.5)); - assertEquals(1.5, Math.abs(-1.5)); - assertSame(Infinity, Math.abs(Infinity)); - assertSame(Infinity, Math.abs(-Infinity)); - assertSame(NaN, Math.abs(NaN)); -}); - -test(function mathRound() { - assertEquals(2, Math.round(1.5)); - assertEquals(-1, Math.round(-1.5)); - assertSame(Infinity, Math.round(Infinity)); - assertSame(-Infinity, Math.round(-Infinity)); - assertSame(Infinity, 1 / Math.round(0.0)); - assertSame(-Infinity, 1 / Math.round(-0.0)); - assertSame(NaN, Math.round(NaN)); - assertEquals(Math.pow(2, 52) + 1, Math.round(Math.pow(2, 52) + 1)); -}); - -test(function mathFround() { - assertTrue(isNaN(Math.fround(NaN))); - assertSame(Infinity, 1 / Math.fround(0)); - assertSame(-Infinity, 1 / Math.fround(-0)); - assertSame(Infinity, Math.fround(Infinity)); - assertSame(-Infinity, Math.fround(-Infinity)); - assertSame(Infinity, Math.fround(1E200)); - assertSame(-Infinity, Math.fround(-1E200)); - assertEquals(3.1415927410125732, Math.fround(Math.PI)); -}); - -test(function mathFloor() { - assertEquals(1, Math.floor(1.5)); - assertEquals(-2, Math.floor(-1.5)); - assertSame(Infinity, Math.floor(Infinity)); - assertSame(-Infinity, Math.floor(-Infinity)); - assertSame(Infinity, 1 / Math.floor(0.0)); - assertSame(-Infinity, 1 / Math.floor(-0.0)); - assertSame(NaN, Math.floor(NaN)); - assertEquals(Math.pow(2, 52) + 1, Math.floor(Math.pow(2, 52) + 1)); -}); - -test(function mathPow() { - assertEquals(2.25, Math.pow(1.5, 2)); - assertTrue(1.8 < Math.pow(1.5, 1.5) && Math.pow(1.5, 1.5) < 1.9); - assertSame(Infinity, Math.pow(Infinity, 0.5)); - assertSame(Infinity, Math.pow(-Infinity, 0.5)); - assertEquals(0, Math.pow(Infinity, -0.5)); - assertEquals(0, Math.pow(Infinity, -0.5)); - assertSame(Infinity, Math.pow(Infinity, Infinity)); - assertEquals(0, Math.pow(Infinity, -Infinity)); - assertSame(NaN, Math.pow(Infinity, NaN)); - assertSame(NaN, Math.pow(NaN, 2)); -}); - -test(function stringAdd() { - assertEquals("", "" + ""); - assertEquals("folded constant", "folded " + "constant"); - assertEquals("not folded constant1", "not folded constant" + 1); -}); - -test(function stringLength() { - assertEquals(6, "abcdef".length); - assertEquals(0, "".length); - assertEquals(-5, { length: -5 }.length); -}); - -test(function stringCharAt() { - assertEquals("c", "abc".charAt(2)); - assertEquals("", "abc".charAt(-1)); - assertEquals("", "abc".charAt(4)); - assertEquals("b", "abc".charAt(1.1)); - assertEquals("", "abc".charAt(4.1)); - assertEquals("", "abc".charAt(Infinity)); - assertEquals("", "abc".charAt(-Infinity)); - assertEquals("a", "abc".charAt(-0)); - assertEquals("a", "abc".charAt(+0)); - assertEquals("", "".charAt()); - assertEquals("", "abc".charAt(1 + 4294967295)); -}, 10); - -test(function stringCharCodeAt() { - assertSame(99, "abc".charCodeAt(2)); - assertSame(NaN, "abc".charCodeAt(-1)); - assertSame(NaN, "abc".charCodeAt(4)); - assertSame(98, "abc".charCodeAt(1.1)); - assertSame(NaN, "abc".charCodeAt(4.1)); - assertSame(NaN, "abc".charCodeAt(Infinity)); - assertSame(NaN, "abc".charCodeAt(-Infinity)); - assertSame(97, "abc".charCodeAt(-0)); - assertSame(97, "abc".charCodeAt(+0)); - assertSame(NaN, "".charCodeAt()); - assertSame(NaN, "abc".charCodeAt(1 + 4294967295)); -}, 10); - -test(function stringCodePointAt() { - assertSame(65533, "äϠ�𝌆".codePointAt(2)); - assertSame(119558, "äϠ�𝌆".codePointAt(3)); - assertSame(undefined, "äϠ�".codePointAt(-1)); - assertSame(undefined, "äϠ�".codePointAt(4)); - assertSame(992, "äϠ�".codePointAt(1.1)); - assertSame(undefined, "äϠ�".codePointAt(4.1)); - assertSame(undefined, "äϠ�".codePointAt(Infinity)); - assertSame(undefined, "äϠ�".codePointAt(-Infinity)); - assertSame(228, "äϠ�".codePointAt(-0)); - assertSame(97, "aϠ�".codePointAt(+0)); - assertSame(undefined, "".codePointAt()); - assertSame(undefined, "äϠ�".codePointAt(1 + 4294967295)); -}, 10); - -test(function stringFromCodePoint() { - assertEquals(String.fromCodePoint(""), "\0"); - assertEquals(String.fromCodePoint(), ""); - assertEquals(String.fromCodePoint(-0), "\0"); - assertEquals(String.fromCodePoint(0), "\0"); - assertEquals(String.fromCodePoint(0x1D306), "\uD834\uDF06"); - assertEquals( - String.fromCodePoint(0x1D306, 0x61, 0x1D307), - "\uD834\uDF06a\uD834\uDF07"); - assertEquals(String.fromCodePoint(0x61, 0x62, 0x1D307), "ab\uD834\uDF07"); - assertEquals(String.fromCodePoint(false), "\0"); - assertEquals(String.fromCodePoint(null), "\0"); -}, 5); - -test(function stringFromCharCode() { - assertEquals("!", String.fromCharCode(0x10FF01)); -}, 2); - -test(function int32Mod() { - assertEquals(-0, -2147483648 % (-1)); -}); - -test(function int32Div() { - assertEquals(2147483648, -2147483648 / (-1)); -}); diff --git a/implementation-contributed/v8/mjsunit/constant-folding.js b/implementation-contributed/v8/mjsunit/constant-folding.js deleted file mode 100644 index d6ac9fe3d5a..00000000000 --- a/implementation-contributed/v8/mjsunit/constant-folding.js +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test operations that involve one or more constants. -// The code generator now handles compile-time constants specially. -// Test the code generated when operands are known at compile time - -// Test count operations involving constants -function test_count() { - var x = "foo"; - var y = "3"; - - x += x++; // ++ and -- apply ToNumber to their operand, even for postfix. - assertEquals(x, "fooNaN", "fooNaN test"); - x = "luft"; - x += ++x; - assertEquals(x, "luftNaN", "luftNaN test"); - - assertTrue(y++ === 3, "y++ === 3, where y = \"3\""); - y = 3; - assertEquals(y++, 3, "y++ == 3, where y = 3"); - y = "7.1"; - assertTrue(y++ === 7.1, "y++ === 7.1, where y = \"7.1\""); - var z = y = x = "9"; - assertEquals( z++ + (++y) + x++, 28, "z++ + (++y) + x++ == 28"); - z = y = x = 13; - assertEquals( z++ + (++y) + x++, 40, "z++ + (++y) + x++ == 40"); - z = y = x = -5.5; - assertEquals( z++ + (++y) + x++, -15.5, "z++ + (++y) + x++ == -15.5"); - - assertEquals(y, -4.5); - z = y; - z++; - assertEquals(y, -4.5); - z = y; - y++; - assertEquals(z, -4.5); - - y = 20; - z = y; - z++; - assertEquals(y, 20); - z = y; - y++; - assertEquals(z, 20); -} - -test_count(); - -// Test comparison operations that involve one or two constant smis. - -function test() { - var i = 5; - var j = 3; - - assertTrue( j < i ); - i = 5; j = 3; - assertTrue( j <= i ); - i = 5; j = 3; - assertTrue( i > j ); - i = 5; j = 3; - assertTrue( i >= j ); - i = 5; j = 3; - assertTrue( i != j ); - i = 5; j = 3; - assertTrue( i == i ); - i = 5; j = 3; - assertFalse( i < j ); - i = 5; j = 3; - assertFalse( i <= j ); - i = 5; j = 3; - assertFalse( j > i ); - i = 5; j = 3; - assertFalse(j >= i ); - i = 5; j = 3; - assertFalse( j == i); - i = 5; j = 3; - assertFalse( i != i); - - i = 10 * 10; - while ( i < 107 ) { - ++i; - } - j = 21; - - assertTrue( j < i ); - j = 21; - assertTrue( j <= i ); - j = 21; - assertTrue( i > j ); - j = 21; - assertTrue( i >= j ); - j = 21; - assertTrue( i != j ); - j = 21; - assertTrue( i == i ); - j = 21; - assertFalse( i < j ); - j = 21; - assertFalse( i <= j ); - j = 21; - assertFalse( j > i ); - j = 21; - assertFalse(j >= i ); - j = 21; - assertFalse( j == i); - j = 21; - assertFalse( i != i); - j = 21; - assertTrue( j == j ); - j = 21; - assertFalse( j != j ); - - assertTrue( 100 > 99 ); - assertTrue( 101 >= 90 ); - assertTrue( 11111 > -234 ); - assertTrue( -888 <= -20 ); - - while ( 234 > 456 ) { - i = i + 1; - } - - switch(3) { - case 5: - assertUnreachable(); - break; - case 3: - j = 13; - default: - i = 2; - case 7: - j = 17; - break; - case 9: - j = 19; - assertUnreachable(); - break; - } - assertEquals(17, j, "switch with constant value"); -} - - -function TrueToString() { - return true.toString(); -} - - -function FalseToString() { - return false.toString(); -} - - -function BoolTest() { - assertEquals("true", TrueToString()); - assertEquals("true", TrueToString()); - assertEquals("true", TrueToString()); - assertEquals("false", FalseToString()); - assertEquals("false", FalseToString()); - assertEquals("false", FalseToString()); - Boolean.prototype.toString = function() { return "foo"; } - assertEquals("foo", TrueToString()); - assertEquals("foo", FalseToString()); -} - - -// Some tests of shifts that get into the corners in terms of coverage. -// We generate different code for the case where the operand is a constant. -function ShiftTest() { - var x = 123; - assertEquals(x, x >> 0); - assertEquals(x, x << 0); - assertEquals(x, x >>> 0); - assertEquals(61, x >> 1); - assertEquals(246, x << 1); - assertEquals(61, x >>> 1); - x = -123; - assertEquals(x, x >> 0); - assertEquals(x, x << 0); - assertEquals(0x10000 * 0x10000 + x, x >>> 0); - assertEquals(-62, x >> 1); - assertEquals(-246, x << 1); - assertEquals(0x10000 * 0x8000 - 62, x >>> 1); - // Answer is non-Smi so the subtraction is not folded in the code - // generator. - assertEquals(-0x40000001, -0x3fffffff - 2); - - x = 123; - assertEquals(0, x & 0); - - // Answer is non-smi and lhs of << is a temporary heap number that we can - // overwrite. - x = 123.0001; - assertEquals(1073741824, (x * x) << 30); - x = 123; - // Answer is non-smi and lhs of << is a temporary heap number that we think - // we can overwrite (but we can't because it's a Smi). - assertEquals(1073741824, (x * x) << 30); -} - - -test(); -BoolTest(); -ShiftTest(); diff --git a/implementation-contributed/v8/mjsunit/context-calls-maintained.js b/implementation-contributed/v8/mjsunit/context-calls-maintained.js deleted file mode 100644 index 95bf55240b6..00000000000 --- a/implementation-contributed/v8/mjsunit/context-calls-maintained.js +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --allow-natives-syntax - -function clear_all_ics() { - %NotifyContextDisposed(); - gc(); - gc(); - gc(); -} - - -// Test: verify that a monomorphic call retains the structural knowledge -// of a global call, correctly throwing either ReferenceError or -// TypeError on undefined depending on how the call is made. -(function() { - foo = function(arg) { return arg + 1; } - - function f() { foo(1); } - - // Drive to monomorphic - f(); f(); f(); - - delete foo; - assertThrows(function() { f(); }, ReferenceError); - foo = function(arg) { return arg * 2; } - assertDoesNotThrow(function() { f(); }); - f(); f(); f(); - delete foo; - assertThrows(function() { f(); }, ReferenceError); - clear_all_ics(); - foo = function(arg) { return arg * 3; } - f(); - %OptimizeFunctionOnNextCall(f); - f(); - delete foo; - assertThrows(function() { f(); }, ReferenceError); - - foo = function(arg) { return arg * 3; } - function g() { this.foo(1); } - g(); g(); g(); - delete foo; - assertThrows(function() { g(); }, TypeError); - foo = function(arg) { return arg * 3; } - g(); - %OptimizeFunctionOnNextCall(g); - g(); - delete foo; - assertThrows(function() { g(); }, TypeError); -})(); - - -// Test: verify that a load with IC does the right thing. -(function() { - var foo = function() { return a; } - a = 3; - foo(); foo(); foo(); - delete a; - assertThrows(function() { foo(); }, ReferenceError); - a = "hi"; - foo(); - clear_all_ics(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); - delete a; - assertThrows(function() { foo(); }, ReferenceError); - foo = function() { return this.a; } - assertDoesNotThrow(function() { foo(); }); -})(); - - -// Test: verify that a store with IC does the right thing. -// If store is contextual and strict mode is set, throw a ReferenceError -// if the variable isn't found. -(function() { - var foo = function() { a = 3; } - var bar = function() { "use strict"; a = 3; } - foo(); foo(); foo(); - delete a; - assertThrows(function() { bar(); }, ReferenceError); - a = 6; - foo(); foo(); foo(); - bar(); bar(); - clear_all_ics(); - bar(); - %OptimizeFunctionOnNextCall(bar); - bar(); - delete a; - assertThrows(function() { bar(); }, ReferenceError); -})(); diff --git a/implementation-contributed/v8/mjsunit/context-variable-assignments.js b/implementation-contributed/v8/mjsunit/context-variable-assignments.js deleted file mode 100644 index 930b969609b..00000000000 --- a/implementation-contributed/v8/mjsunit/context-variable-assignments.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function foo() { - var a, b; - var bar = function() { - a = b = "hello world"; - } - bar(); - return a; -} - -assertEquals("hello world", foo()); diff --git a/implementation-contributed/v8/mjsunit/contextual-calls.js b/implementation-contributed/v8/mjsunit/contextual-calls.js deleted file mode 100644 index 10c3e8d82cc..00000000000 --- a/implementation-contributed/v8/mjsunit/contextual-calls.js +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var realms = [Realm.current(), Realm.create()]; -globals = [Realm.global(0), Realm.global(1)]; -Realm.shared = {} - -function install(name, value) { - Realm.shared[name] = value; - for (i in realms) { - Realm.eval(realms[i], name + " = Realm.shared['" + name + "'];"); - } -} - -install('return_this', function() { return this; }); -install('return_this_strict', function () { 'use strict'; return this; }); - -// test behaviour of 'with' scope -for (i in realms) { - Realm.shared.results = []; - // in the second case, 'this' is found in the with scope, - // so the receiver is 'this' - Realm.eval(realms[i]," \ - with('irrelevant') { \ - Realm.shared.results.push(return_this()); \ - Realm.shared.results.push(return_this_strict()); \ - } \ - with(this) { \ - Realm.shared.results.push(return_this()); \ - Realm.shared.results.push(return_this_strict()); \ - } \ - "); - assertSame(globals[0], Realm.shared.results[0]); - assertSame(undefined, Realm.shared.results[1]); - assertSame(globals[i], Realm.shared.results[2]); - assertSame(globals[i], Realm.shared.results[3]); -} - -// test 'apply' and 'call' -for (i in realms) { - // 'apply' without a receiver is a contextual call - assertSame(globals[0], Realm.eval(realms[i],'return_this.apply()')) ; - assertSame(undefined, Realm.eval(realms[i],'return_this_strict.apply()')); - assertSame(globals[0], Realm.eval(realms[i],'return_this.apply(null)')) ; - assertSame(null, Realm.eval(realms[i],'return_this_strict.apply(null)')); - // 'call' without a receiver is a contextual call - assertSame(globals[0], Realm.eval(realms[i],'return_this.call()')) ; - assertSame(undefined, Realm.eval(realms[i],'return_this_strict.call()')); - assertSame(globals[0], Realm.eval(realms[i],'return_this.call(null)')) ; - assertSame(null, Realm.eval(realms[i],'return_this_strict.call(null)')); -} - -// test ics -for (var i = 0; i < 4; i++) { - assertSame(globals[0], return_this()); - assertSame(undefined, return_this_strict()); -} - -// BUG(1547) - -Realm.eval(realms[0], "var name = 'o'"); -Realm.eval(realms[1], "var name = 'i'"); - -install('f', function() { return this.name; }); -install('g', function() { "use strict"; return this ? this.name : "u"; }); - -for (i in realms) { - result = Realm.eval(realms[i], " \ - (function(){return f();})() + \ - (function(){return (1,f)();})() + \ - (function(){'use strict'; return f();})() + \ - (function(){'use strict'; return (1,f)();})() + \ - (function(){return g();})() + \ - (function(){return (1,g)();})() + \ - (function(){'use strict'; return g();})() + \ - (function(){'use strict'; return (1,g)();})(); \ - "); - assertSame("oooouuuu", result); -} diff --git a/implementation-contributed/v8/mjsunit/copy-on-write-assert.js b/implementation-contributed/v8/mjsunit/copy-on-write-assert.js deleted file mode 100644 index 0e78c77befe..00000000000 --- a/implementation-contributed/v8/mjsunit/copy-on-write-assert.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function createLargeCOWArray() { - var s = "[0"; - // The constant below depends on the max object size in new space. - for (var i = 0; i < (128 << 10); i++) { - s += ",0"; - } - s += "]"; - return eval(s); -} - -var large_cow_array = createLargeCOWArray(); - -// Force copy. Because the array is large it will test the slow array -// cloning in large object space. -large_cow_array[17] = 42; diff --git a/implementation-contributed/v8/mjsunit/cross-realm-filtering.js b/implementation-contributed/v8/mjsunit/cross-realm-filtering.js deleted file mode 100644 index b4e2520a11b..00000000000 --- a/implementation-contributed/v8/mjsunit/cross-realm-filtering.js +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var realms = [Realm.current(), Realm.create()]; - -// Check stack trace filtering across security contexts. -var thrower_script = - "(function () { Realm.eval(Realm.current(), 'throw Error()') })"; -Realm.shared = { - thrower_0: Realm.eval(realms[0], thrower_script), - thrower_1: Realm.eval(realms[1], thrower_script), -}; - -var script = " \ - Error.prepareStackTrace = function(a, b) { return b; }; \ - try { \ - Realm.shared.thrower_0(); \ - } catch (e) { \ - Realm.shared.error_0 = e.stack; \ - } \ - try { \ - Realm.shared.thrower_1(); \ - } catch (e) { \ - Realm.shared.error_1 = e.stack; \ - } \ -"; - -function assertNotIn(thrower, error) { - for (var i = 0; i < error.length; i++) { - assertFalse(false === error[i].getFunction()); - } -} - -Realm.eval(realms[1], script); -assertSame(2, Realm.shared.error_0.length); -assertSame(3, Realm.shared.error_1.length); - -assertTrue(Realm.shared.thrower_1 === Realm.shared.error_1[1].getFunction()); -assertNotIn(Realm.shared.thrower_0, Realm.shared.error_0); -assertNotIn(Realm.shared.thrower_0, Realm.shared.error_1); - -Realm.eval(realms[0], script); -assertSame(4, Realm.shared.error_0.length); -assertSame(3, Realm.shared.error_1.length); - -assertTrue(Realm.shared.thrower_0 === Realm.shared.error_0[1].getFunction()); -assertNotIn(Realm.shared.thrower_1, Realm.shared.error_0); -assertNotIn(Realm.shared.thrower_1, Realm.shared.error_1); - - -// Check .caller filtering across security contexts. -var caller_script = "(function (f) { f(); })"; -Realm.shared = { - caller_0 : Realm.eval(realms[0], caller_script), - caller_1 : Realm.eval(realms[1], caller_script), -} - -script = " \ - function f_0() { Realm.shared.result_0 = arguments.callee.caller; }; \ - function f_1() { Realm.shared.result_1 = arguments.callee.caller; }; \ - Realm.shared.caller_0(f_0); \ - Realm.shared.caller_1(f_1); \ -"; - -Realm.eval(realms[1], script); -assertSame(null, Realm.shared.result_0); -assertSame(Realm.shared.caller_1, Realm.shared.result_1); - -Realm.eval(realms[0], script); -assertSame(Realm.shared.caller_0, Realm.shared.result_0); -assertSame(null, Realm.shared.result_1); - - -// test that do not pollute / leak a function prototype v8/4217 -var realmIndex = Realm.create(); -var otherObject = Realm.eval(realmIndex, "Object"); - -var f = Realm.eval(realmIndex, "function f(){}; f"); -f.prototype = null; - -var o = new f(); -var proto = Object.getPrototypeOf(o); -assertFalse(proto === Object.prototype); -assertTrue(proto === otherObject.prototype); - -o = Realm.eval(realmIndex, "new f()"); -proto = Object.getPrototypeOf(o); -assertFalse(proto === Object.prototype); -assertTrue(proto === otherObject.prototype); - -// Check function constructor. -var ctor_script = "Function"; -var ctor_a_script = - "(function() { return Function.apply(this, ['return 1;']); })"; -var ctor_b_script = "Function.bind(this, 'return 1;')"; -var ctor_c_script = - "(function() { return Function.call(this, 'return 1;'); })"; -// Also check Promise constructor. -var promise_ctor_script = "Promise"; -Realm.shared = { - ctor_0 : Realm.eval(realms[0], ctor_script), - ctor_1 : Realm.eval(realms[1], ctor_script), - ctor_a_0 : Realm.eval(realms[0], ctor_a_script), - ctor_a_1 : Realm.eval(realms[1], ctor_a_script), - ctor_b_0 : Realm.eval(realms[0], ctor_b_script), - ctor_b_1 : Realm.eval(realms[1], ctor_b_script), - ctor_c_0 : Realm.eval(realms[0], ctor_c_script), - ctor_c_1 : Realm.eval(realms[1], ctor_c_script), - promise_ctor_0 : Realm.eval(realms[0], promise_ctor_script), - promise_ctor_1 : Realm.eval(realms[1], promise_ctor_script), -} -var script_0 = " \ - var ctor_0 = Realm.shared.ctor_0; \ - var promise_ctor_0 = Realm.shared.promise_ctor_0; \ - Realm.shared.direct_0 = ctor_0('return 1'); \ - Realm.shared.indirect_0 = (function() { return ctor_0('return 1;'); })(); \ - Realm.shared.apply_0 = ctor_0.apply(this, ['return 1']); \ - Realm.shared.bind_0 = ctor_0.bind(this, 'return 1')(); \ - Realm.shared.call_0 = ctor_0.call(this, 'return 1'); \ - Realm.shared.proxy_0 = new Proxy(ctor_0, {})('return 1'); \ - Realm.shared.reflect_0 = Reflect.apply(ctor_0, this, ['return 1']); \ - Realm.shared.a_0 = Realm.shared.ctor_a_0(); \ - Realm.shared.b_0 = Realm.shared.ctor_b_0(); \ - Realm.shared.c_0 = Realm.shared.ctor_c_0(); \ - Realm.shared.p_0 = new promise_ctor_0((res,rej) => res(1)); \ -"; -script = script_0 + script_0.replace(/_0/g, "_1"); -Realm.eval(realms[0], script); -assertSame(1, Realm.shared.direct_0()); -assertSame(1, Realm.shared.indirect_0()); -assertSame(1, Realm.shared.apply_0()); -assertSame(1, Realm.shared.bind_0()); -assertSame(1, Realm.shared.call_0()); -assertSame(1, Realm.shared.proxy_0()); -assertSame(1, Realm.shared.reflect_0()); -assertSame(1, Realm.shared.a_0()); -assertSame(1, Realm.shared.b_0()); -assertSame(1, Realm.shared.c_0()); -assertInstanceof(Realm.shared.p_0, Realm.shared.promise_ctor_0); -assertSame(undefined, Realm.shared.direct_1); -assertSame(undefined, Realm.shared.indirect_1); -assertSame(undefined, Realm.shared.apply_1); -assertSame(undefined, Realm.shared.bind_1); -assertSame(undefined, Realm.shared.call_1); -assertSame(undefined, Realm.shared.proxy_1); -assertSame(undefined, Realm.shared.reflect_1); -assertSame(undefined, Realm.shared.a_1); -assertSame(undefined, Realm.shared.b_1); -assertSame(undefined, Realm.shared.c_1); -assertSame(undefined, Realm.shared.p_1); -Realm.eval(realms[1], script); -assertSame(undefined, Realm.shared.direct_0); -assertSame(undefined, Realm.shared.indirect_0); -assertSame(undefined, Realm.shared.apply_0); -assertSame(undefined, Realm.shared.bind_0); -assertSame(undefined, Realm.shared.call_0); -assertSame(undefined, Realm.shared.proxy_0); -assertSame(undefined, Realm.shared.reflect_0); -assertSame(undefined, Realm.shared.a_0); -assertSame(undefined, Realm.shared.b_0); -assertSame(undefined, Realm.shared.c_0); -assertSame(undefined, Realm.shared.p_0); -assertSame(1, Realm.shared.direct_1()); -assertSame(1, Realm.shared.indirect_1()); -assertSame(1, Realm.shared.apply_1()); -assertSame(1, Realm.shared.bind_1()); -assertSame(1, Realm.shared.call_1()); -assertSame(1, Realm.shared.proxy_1()); -assertSame(1, Realm.shared.reflect_1()); -assertSame(1, Realm.shared.a_1()); -assertSame(1, Realm.shared.b_1()); -assertSame(1, Realm.shared.c_1()); -assertInstanceof(Realm.shared.p_1, Realm.shared.promise_ctor_1); diff --git a/implementation-contributed/v8/mjsunit/cross-realm-global-prototype.js b/implementation-contributed/v8/mjsunit/cross-realm-global-prototype.js deleted file mode 100644 index 46e5a3a37fb..00000000000 --- a/implementation-contributed/v8/mjsunit/cross-realm-global-prototype.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -// Make sure we don't accidentally leak information about other objects. - -var realm = Realm.create(); -var test = Realm.eval(realm, - "() => { return Realm.global(0) instanceof Object }"); - -assertFalse(test()); - -// Set the prototype of the current global object to the global object of the -// other realm. -__proto__ = Realm.eval(realm, "this"); -assertFalse(test()); - -test(); -test(); -%OptimizeFunctionOnNextCall(test); -assertEquals(false, test()); diff --git a/implementation-contributed/v8/mjsunit/cyclic-array-to-string.js b/implementation-contributed/v8/mjsunit/cyclic-array-to-string.js deleted file mode 100644 index ad77743c075..00000000000 --- a/implementation-contributed/v8/mjsunit/cyclic-array-to-string.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test printing of cyclic arrays. - -var a1 = [1,2]; -assertEquals("1,2", a1.toString()); -assertEquals("1,2", a1.toLocaleString()); -assertEquals("1,2", a1.join()); -a1.push(a1); -assertEquals("1,2,", a1.toString()); -assertEquals("1,2,", a1.toLocaleString()); -assertEquals("1,2,", a1.join()); -a1.push(1); -assertEquals("1,2,,1", a1.toString()); -assertEquals("1,2,,1", a1.toLocaleString()); -assertEquals("1,2,,1", a1.join()); -a1.push(a1); -assertEquals("1,2,,1,", a1.toString()); -assertEquals("1,2,,1,", a1.toLocaleString()); -assertEquals("1,2,,1,", a1.join()); - -a1 = [1,2]; -var a2 = [3,4]; -a1.push(a2); -a1.push(a2); -assertEquals("1,2,3,4,3,4", a1.toString()); -assertEquals("1,2,3,4,3,4", a1.toLocaleString()); -assertEquals("1,2,3,4,3,4", a1.join()); -a2.push(a1); -assertEquals("1,2,3,4,,3,4,", a1.toString()); -assertEquals("1,2,3,4,,3,4,", a1.toLocaleString()); -assertEquals("1,2,3,4,,3,4,", a1.join()); - -a1 = []; -a2 = [a1]; -a1.push(a2); -assertEquals("", a1.toString()); -assertEquals("", a1.toLocaleString()); -assertEquals("", a1.join()); diff --git a/implementation-contributed/v8/mjsunit/cyrillic.js b/implementation-contributed/v8/mjsunit/cyrillic.js deleted file mode 100644 index f74743a3169..00000000000 --- a/implementation-contributed/v8/mjsunit/cyrillic.js +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test Unicode character ranges in regexps. - - -// Cyrillic. -var cyrillic = { - FIRST: "\u0410", // A - first: "\u0430", // a - LAST: "\u042f", // YA - last: "\u044f", // ya - MIDDLE: "\u0427", // CHE - middle: "\u0447", // che - // Actually no characters are between the cases in Cyrillic. - BetweenCases: false}; - -var SIGMA = "\u03a3"; -var sigma = "\u03c3"; -var alternative_sigma = "\u03c2"; - -// Greek. -var greek = { - FIRST: "\u0391", // ALPHA - first: "\u03b1", // alpha - LAST: "\u03a9", // OMEGA - last: "\u03c9", // omega - MIDDLE: SIGMA, // SIGMA - middle: sigma, // sigma - // Epsilon acute is between ALPHA-OMEGA and alpha-omega, ie it - // is between OMEGA and alpha. - BetweenCases: "\u03ad"}; - - -function Range(from, to, flags) { - return new RegExp("[" + from + "-" + to + "]", flags); -} - -// Test Cyrillic and Greek separately. -for (var lang = 0; lang < 2; lang++) { - var chars = (lang == 0) ? cyrillic : greek; - - for (var i = 0; i < 2; i++) { - var lc = (i == 0); // Lower case. - var first = lc ? chars.first : chars.FIRST; - var middle = lc ? chars.middle : chars.MIDDLE; - var last = lc ? chars.last : chars.LAST; - var first_other_case = lc ? chars.FIRST : chars.first; - var middle_other_case = lc ? chars.MIDDLE : chars.middle; - var last_other_case = lc ? chars.LAST : chars.last; - - assertTrue(Range(first, last).test(first), 1); - assertTrue(Range(first, last).test(middle), 2); - assertTrue(Range(first, last).test(last), 3); - - assertFalse(Range(first, last).test(first_other_case), 4); - assertFalse(Range(first, last).test(middle_other_case), 5); - assertFalse(Range(first, last).test(last_other_case), 6); - - assertTrue(Range(first, last, "i").test(first), 7); - assertTrue(Range(first, last, "i").test(middle), 8); - assertTrue(Range(first, last, "i").test(last), 9); - - assertTrue(Range(first, last, "i").test(first_other_case), 10); - assertTrue(Range(first, last, "i").test(middle_other_case), 11); - assertTrue(Range(first, last, "i").test(last_other_case), 12); - - if (chars.BetweenCases) { - assertFalse(Range(first, last).test(chars.BetweenCases), 13); - assertFalse(Range(first, last, "i").test(chars.BetweenCases), 14); - } - } - if (chars.BetweenCases) { - assertTrue(Range(chars.FIRST, chars.last).test(chars.BetweenCases), 15); - assertTrue(Range(chars.FIRST, chars.last, "i").test(chars.BetweenCases), 16); - } -} - -// Test range that covers both greek and cyrillic characters. -for (key in greek) { - assertTrue(Range(greek.FIRST, cyrillic.last).test(greek[key]), 17 + key); - if (cyrillic[key]) { - assertTrue(Range(greek.FIRST, cyrillic.last).test(cyrillic[key]), 18 + key); - } -} - -for (var i = 0; i < 2; i++) { - var ignore_case = (i == 0); - var flag = ignore_case ? "i" : ""; - assertTrue(Range(greek.first, cyrillic.LAST, flag).test(greek.first), 19); - assertTrue(Range(greek.first, cyrillic.LAST, flag).test(greek.middle), 20); - assertTrue(Range(greek.first, cyrillic.LAST, flag).test(greek.last), 21); - - assertTrue(Range(greek.first, cyrillic.LAST, flag).test(cyrillic.FIRST), 22); - assertTrue(Range(greek.first, cyrillic.LAST, flag).test(cyrillic.MIDDLE), 23); - assertTrue(Range(greek.first, cyrillic.LAST, flag).test(cyrillic.LAST), 24); - - // A range that covers the lower case greek letters and the upper case cyrillic - // letters. - assertEquals(ignore_case, Range(greek.first, cyrillic.LAST, flag).test(greek.FIRST), 25); - assertEquals(ignore_case, Range(greek.first, cyrillic.LAST, flag).test(greek.MIDDLE), 26); - assertEquals(ignore_case, Range(greek.first, cyrillic.LAST, flag).test(greek.LAST), 27); - - assertEquals(ignore_case, Range(greek.first, cyrillic.LAST, flag).test(cyrillic.first), 28); - assertEquals(ignore_case, Range(greek.first, cyrillic.LAST, flag).test(cyrillic.middle), 29); - assertEquals(ignore_case, Range(greek.first, cyrillic.LAST, flag).test(cyrillic.last), 30); -} - - -// Sigma is special because there are two lower case versions of the same upper -// case character. JS requires that case independence means that you should -// convert everything to upper case, so the two sigma variants are equal to each -// other in a case independt comparison. -for (var i = 0; i < 2; i++) { - var simple = (i != 0); - var name = simple ? "" : "[]"; - var regex = simple ? SIGMA : "[" + SIGMA + "]"; - - assertFalse(new RegExp(regex).test(sigma), 31 + name); - assertFalse(new RegExp(regex).test(alternative_sigma), 32 + name); - assertTrue(new RegExp(regex).test(SIGMA), 33 + name); - - assertTrue(new RegExp(regex, "i").test(sigma), 34 + name); - // JSC and Tracemonkey fail this one. - assertTrue(new RegExp(regex, "i").test(alternative_sigma), 35 + name); - assertTrue(new RegExp(regex, "i").test(SIGMA), 36 + name); - - regex = simple ? sigma : "[" + sigma + "]"; - - assertTrue(new RegExp(regex).test(sigma), 41 + name); - assertFalse(new RegExp(regex).test(alternative_sigma), 42 + name); - assertFalse(new RegExp(regex).test(SIGMA), 43 + name); - - assertTrue(new RegExp(regex, "i").test(sigma), 44 + name); - // JSC and Tracemonkey fail this one. - assertTrue(new RegExp(regex, "i").test(alternative_sigma), 45 + name); - assertTrue(new RegExp(regex, "i").test(SIGMA), 46 + name); - - regex = simple ? alternative_sigma : "[" + alternative_sigma + "]"; - - assertFalse(new RegExp(regex).test(sigma), 51 + name); - assertTrue(new RegExp(regex).test(alternative_sigma), 52 + name); - assertFalse(new RegExp(regex).test(SIGMA), 53 + name); - - // JSC and Tracemonkey fail this one. - assertTrue(new RegExp(regex, "i").test(sigma), 54 + name); - assertTrue(new RegExp(regex, "i").test(alternative_sigma), 55 + name); - // JSC and Tracemonkey fail this one. - assertTrue(new RegExp(regex, "i").test(SIGMA), 56 + name); -} - - -for (var add_non_ascii_character_to_subject = 0; - add_non_ascii_character_to_subject < 2; - add_non_ascii_character_to_subject++) { - var suffix = add_non_ascii_character_to_subject ? "\ufffe" : ""; - // A range that covers both ASCII and non-ASCII. - for (var i = 0; i < 2; i++) { - var full = (i != 0); - var mixed = full ? "[a-\uffff]" : "[a-" + cyrillic.LAST + "]"; - var f = full ? "f" : "c"; - for (var j = 0; j < 2; j++) { - var ignore_case = (j == 0); - var flag = ignore_case ? "i" : ""; - var re = new RegExp(mixed, flag); - var expected = - ignore_case || (full && !!add_non_ascii_character_to_subject); - assertEquals(expected, re.test("A" + suffix), 58 + flag + f); - assertTrue(re.test("a" + suffix), 59 + flag + f); - assertTrue(re.test("~" + suffix), 60 + flag + f); - assertTrue(re.test(cyrillic.MIDDLE), 61 + flag + f); - assertEquals(ignore_case || full, re.test(cyrillic.middle), 62 + flag + f); - } - } -} diff --git a/implementation-contributed/v8/mjsunit/d8/d8-arguments.js b/implementation-contributed/v8/mjsunit/d8/d8-arguments.js deleted file mode 100644 index 5e44ea0e6e0..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/d8-arguments.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: -- 1 2 3 - -assertEquals(["1", "2", "3"], arguments); diff --git a/implementation-contributed/v8/mjsunit/d8/d8-no-arguments.js b/implementation-contributed/v8/mjsunit/d8/d8-no-arguments.js deleted file mode 100644 index 9427de72ab5..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/d8-no-arguments.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(undefined, Object.getOwnPropertyDescriptor(this, "arguments")); diff --git a/implementation-contributed/v8/mjsunit/d8/d8-os.js b/implementation-contributed/v8/mjsunit/d8/d8-os.js deleted file mode 100644 index c2d8ec59bc0..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/d8-os.js +++ /dev/null @@ -1,188 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the OS module of d8. This test only makes sense with d8. It -// only does non-trivial work on Unix since os.system() is not currently -// implemented on Windows, and even if it were then many of the things -// we are calling would not be available. - -var TEST_DIR = "/tmp/d8-os-test-directory-" + ((Math.random() * (1<<30)) | 0); - - -function arg_error(str) { - try { - eval(str); - } catch (e) { - assertTrue(/rgument/.test(e), str); - } -} - - -function str_error(str) { - var e = new Object(); - e.toString = function() { throw new Error("foo bar"); } - try { - eval(str); - } catch (exception) { - assertTrue(/tring conversion/.test(exception), str); - } -} - - -if (this.os && os.system) { - // Ensure that we have a valid working directory. - os.chdir("/tmp"); - try { - // Delete the dir if it is lying around from last time. - os.system("ls", [TEST_DIR]); - os.system("rm", ["-r", TEST_DIR]); - } catch (e) { - } - os.mkdirp(TEST_DIR); - try { - // Check the chdir worked. - os.system('ls', [TEST_DIR]); - // Simple create dir. - os.mkdirp(TEST_DIR + "/dir"); - // Create dir in dir. - os.mkdirp(TEST_DIR + "/dir/foo"); - // Check that they are there. - os.system('ls', [TEST_DIR + '/dir/foo']); - // Check that we can detect when something is not there. - assertThrows("os.system('ls', [TEST_DIR + '/dir/bar']);"); - // Check that mkdirp makes intermediate directories. - os.mkdirp(TEST_DIR + "/dir2/foo"); - os.system("ls", [TEST_DIR + "/dir2/foo"]); - // Check that mkdirp doesn't mind if the dir is already there. - os.mkdirp(TEST_DIR + "/dir2/foo"); - os.mkdirp(TEST_DIR + "/dir2/foo/"); - // Check that mkdirp can cope with trailing / - os.mkdirp(TEST_DIR + "/dir3/"); - os.system("ls", [TEST_DIR + "/dir3"]); - // Check that we get an error if the name is taken by a file. - os.system("sh", ["-c", "echo foo > " + TEST_DIR + "/file1"]); - os.system("ls", [TEST_DIR + "/file1"]); - assertThrows("os.mkdirp(TEST_DIR + '/file1');"); - assertThrows("os.mkdirp(TEST_DIR + '/file1/foo');"); - assertThrows("os.mkdirp(TEST_DIR + '/file1/');"); - assertThrows("os.mkdirp(TEST_DIR + '/file1/foo/');"); - // Create a dir we cannot read. - os.mkdirp(TEST_DIR + "/dir4", 0); - // This test fails if you are root since root can read any dir. - assertThrows("os.chdir(TEST_DIR + '/dir4');"); - os.rmdir(TEST_DIR + "/dir4"); - assertThrows("os.chdir(TEST_DIR + '/dir4');"); - - // Set umask. This changes the umask for the whole process and is - // the reason why the test cannot be run multi-threaded. - var old_umask = os.umask(0777); - // Create a dir we cannot read. - os.mkdirp(TEST_DIR + "/dir5"); - // This test fails if you are root since root can read any dir. - assertThrows("os.chdir(TEST_DIR + '/dir5');"); - os.rmdir(TEST_DIR + "/dir5"); - assertThrows("os.chdir(TEST_DIR + '/dir5');"); - os.umask(old_umask); - - os.mkdirp(TEST_DIR + "/hest/fisk/../fisk/ged"); - os.system("ls", [TEST_DIR + "/hest/fisk/ged"]); - - os.setenv("FOO", "bar"); - var environment = os.system("printenv"); - assertTrue(/FOO=bar/.test(environment)); - - // Check we time out. - var have_sleep = true; - var have_echo = true; - try { - os.system("ls", ["/bin/sleep"]); - } catch (e) { - have_sleep = false; - } - try { - os.system("ls", ["/bin/echo"]); - } catch (e) { - have_echo = false; - } - if (have_sleep) { - assertThrows("os.system('sleep', ['2000'], 20);"); - - // Check we time out with total time. - assertThrows("os.system('sleep', ['2000'], -1, 20);"); - - // Check that -1 means no timeout. - os.system('sleep', ['1'], -1, -1); - - } - - // Check that we don't fill up the process table with zombies. - // Disabled because it's too slow. - if (have_echo) { - //for (var i = 0; i < 65536; i++) { - assertEquals("baz\n", os.system("echo", ["baz"])); - //} - } - - // Too few args. - arg_error("os.umask();"); - arg_error("os.system();"); - arg_error("os.mkdirp();"); - arg_error("os.chdir();"); - arg_error("os.setenv();"); - arg_error("os.rmdir();"); - - // Too many args. - arg_error("os.setenv('FOO=bar');"); - arg_error("os.umask(0, 0);"); - arg_error("os.system('ls', [], -1, -1, -1);"); - arg_error("os.mkdirp('foo', 0, 0)"); - arg_error("os.chdir('foo', 'bar')"); - arg_error("os.rmdir('foo', 'bar');"); - - // Wrong kind of args. - arg_error("os.umask([]);"); - arg_error("os.system('ls', 'foo');"); - arg_error("os.system('ls', 123);"); - arg_error("os.system('ls', [], 'foo');"); - arg_error("os.system('ls', [], -1, 'foo');"); - arg_error("os.mkdirp('foo', 'bar');"); - - // Test broken toString(). - str_error("os.system(e);"); - str_error("os.system('ls', [e]);"); - str_error("os.system('ls', ['.', e]);"); - str_error("os.system('ls', [e, '.']);"); - str_error("os.mkdirp(e);"); - str_error("os.setenv(e, 'goo');"); - str_error("os.setenv('goo', e);"); - str_error("os.chdir(e);"); - str_error("os.rmdir(e);"); - - } finally { - os.system("rm", ["-r", TEST_DIR]); - } -} diff --git a/implementation-contributed/v8/mjsunit/d8/d8-performance-now.js b/implementation-contributed/v8/mjsunit/d8/d8-performance-now.js deleted file mode 100644 index 3e5485e81d9..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/d8-performance-now.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test the performance.now() function of d8. This test only makes sense with -// d8. - -if (this.performance && performance.now) { - (function run() { - var start_test = performance.now(); - // Let the retry run for maximum 100ms to reduce flakiness. - for (var start = performance.now(); - start - start_test < 100; - start = performance.now()) { - var end = performance.now(); - assertTrue(start >= start_test); - assertTrue(end >= start); - while (end - start == 0) { - var next = performance.now(); - assertTrue(next >= end); - end = next; - } - if (end - start <= 1) { - // Found (sub-)millisecond granularity. - return; - } else { - print("Timer difference too big: " + (end - start) + "ms"); - } - } - assertTrue(false); - })() -} diff --git a/implementation-contributed/v8/mjsunit/d8/d8-worker-script.js b/implementation-contributed/v8/mjsunit/d8/d8-worker-script.js deleted file mode 100644 index 7c5d595b2b9..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/d8-worker-script.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Verify that the Worker constrcutor by default treats its first argument -// as the filename of a script load and run. - -// Resources: test/mjsunit/d8/d8-worker-script.txt - -if (this.Worker) { - var w = new Worker('test/mjsunit/d8/d8-worker-script.txt'); - assertEquals("Starting worker", w.getMessage()); - w.postMessage(""); - assertEquals("DONE", w.getMessage()); - w.terminate(); -} diff --git a/implementation-contributed/v8/mjsunit/d8/d8-worker-script.txt b/implementation-contributed/v8/mjsunit/d8/d8-worker-script.txt deleted file mode 100644 index 9254cea4f4b..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/d8-worker-script.txt +++ /dev/null @@ -1,8 +0,0 @@ -// Worker script used by d8-worker-script.js. -// This file is named `.txt` to prevent it being treated as a test itself. - -onmessage = function(m) { - postMessage('DONE'); -} - -postMessage('Starting worker'); diff --git a/implementation-contributed/v8/mjsunit/d8/d8-worker-sharedarraybuffer.js b/implementation-contributed/v8/mjsunit/d8/d8-worker-sharedarraybuffer.js deleted file mode 100644 index f166ca2eb1a..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/d8-worker-sharedarraybuffer.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --harmony-sharedarraybuffer - -if (this.Worker) { - (function TestClone() { - var workerScript = - `onmessage = function(m) { - var sab = m; - var ta = new Uint32Array(sab); - if (sab.byteLength !== 16) { - throw new Error('SharedArrayBuffer clone byteLength'); - } - for (var i = 0; i < 4; ++i) { - if (ta[i] !== i) { - throw new Error('SharedArrayBuffer clone value ' + i); - } - } - // Atomically update ta[0] - Atomics.store(ta, 0, 100); - };`; - - var w = new Worker(workerScript, {type: 'string'}); - - var sab = new SharedArrayBuffer(16); - var ta = new Uint32Array(sab); - for (var i = 0; i < 4; ++i) { - ta[i] = i; - } - - // Clone SharedArrayBuffer - w.postMessage(sab); - assertEquals(16, sab.byteLength); // ArrayBuffer should not be neutered. - - // Spinwait for the worker to update ta[0] - var ta0; - while ((ta0 = Atomics.load(ta, 0)) == 0) {} - - assertEquals(100, ta0); - - w.terminate(); - - assertEquals(16, sab.byteLength); // Still not neutered. - })(); - - (function TestCloneMulti() { - var workerScript = - `onmessage = function(msg) { - var sab = msg.sab; - var id = msg.id; - var ta = new Uint32Array(sab); - Atomics.store(ta, id, 1); - postMessage(id); - };`; - - var sab = new SharedArrayBuffer(16); - var ta = new Uint32Array(sab); - - var id; - var workers = []; - for (id = 0; id < 4; ++id) { - workers[id] = new Worker(workerScript, {type: 'string'}); - workers[id].postMessage({sab: sab, id: id}); - } - - // Spinwait for each worker to update ta[id] - var count = 0; - while (count < 4) { - for (id = 0; id < 4; ++id) { - if (Atomics.compareExchange(ta, id, 1, -1) == 1) { - // Worker is finished. - assertEquals(id, workers[id].getMessage()); - workers[id].terminate(); - count++; - } - } - } - })(); - -} diff --git a/implementation-contributed/v8/mjsunit/d8/d8-worker-spawn-worker.js b/implementation-contributed/v8/mjsunit/d8/d8-worker-spawn-worker.js deleted file mode 100644 index 621ec253bcd..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/d8-worker-spawn-worker.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -if (this.Worker) { - var workerScript = - `var w = new Worker('postMessage(42)', {type: 'string'}); - onmessage = function(parentMsg) { - w.postMessage(parentMsg); - var childMsg = w.getMessage(); - postMessage(childMsg); - };`; - - var w = new Worker(workerScript, {type: 'string'}); - w.postMessage(9); - assertEquals(42, w.getMessage()); -} diff --git a/implementation-contributed/v8/mjsunit/d8/d8-worker.js b/implementation-contributed/v8/mjsunit/d8/d8-worker.js deleted file mode 100644 index afc03f5c8b0..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/d8-worker.js +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the Worker API of d8. This test only makes sense with d8. A Worker -// spawns a new OS thread and isolate, and runs it concurrently with the -// current running thread. - -var workerScript = - `postMessage('Starting worker'); -// Set a global variable; should not be visible outside of the worker's -// context. - foo = 100; - var c = 0; - onmessage = function(m) { - switch (c++) { - case 0: - if (m !== undefined) throw new Error('undefined'); - break; - case 1: - if (m !== null) throw new Error('null'); - break; - case 2: - if (m !== true) throw new Error('true'); - break; - case 3: - if (m !== false) throw new Error('false'); - break; - case 4: - if (m !== 100) throw new Error('Number'); - break; - case 5: - if (m !== 'hi') throw new Error('String'); - break; - case 6: - if (JSON.stringify(m) !== '[4,true,\"bye\"]') { - throw new Error('Array'); - } - break; - case 7: - if (JSON.stringify(m) !== '{"a":1,"b":2.5,"c":"three"}') - throw new Error('Object' + JSON.stringify(m)); - break; - case 8: - var ab = m; - var t = new Uint32Array(ab); - if (ab.byteLength !== 16) - throw new Error('ArrayBuffer clone byteLength'); - for (var i = 0; i < 4; ++i) - if (t[i] !== i) - throw new Error('ArrayBuffer clone value ' + i); - break; - case 9: - var ab = m; - var t = new Uint32Array(ab); - if (ab.byteLength !== 32) - throw new Error('ArrayBuffer transfer byteLength'); - for (var i = 0; i < 8; ++i) - if (t[i] !== i) - throw new Error('ArrayBuffer transfer value ' + i); - break; - } - if (c == 10) { - postMessage('DONE'); - } - };`; - -if (this.Worker) { - function createArrayBuffer(byteLength) { - var ab = new ArrayBuffer(byteLength); - var t = new Uint32Array(ab); - for (var i = 0; i < byteLength / 4; ++i) - t[i] = i; - return ab; - } - - assertThrows(function() { - // Second arg must be 'options' object - new Worker(workerScript, 123); - }); - - assertThrows(function() { - new Worker('test/mjsunit/d8/d8-worker.js', {type: 'invalid'}); - }); - - assertThrows(function() { - // worker type defaults to 'classic' which tries to load from file - new Worker(workerScript); - }); - - var w = new Worker(workerScript, {type: 'string'}); - - assertEquals("Starting worker", w.getMessage()); - - w.postMessage(undefined); - w.postMessage(null); - w.postMessage(true); - w.postMessage(false); - w.postMessage(100); - w.postMessage("hi"); - w.postMessage([4, true, "bye"]); - w.postMessage({a: 1, b: 2.5, c: "three"}); - - // Test bad get in transfer list. - var transferList = [undefined]; - Object.defineProperty(transferList, '0', { - get: function() { - throw 'unexpected!'; - } - }); - assertThrows(function() { - w.postMessage([], transferList); - }); - - // Test console.log in transfer list. - (function() { - var val = [undefined]; - Object.defineProperty(val, '0', {get: () => console.log()}); - assertThrows(function() { - w.postMessage(val, [val]); - }); - })(); - - // Clone ArrayBuffer - var ab1 = createArrayBuffer(16); - w.postMessage(ab1); - assertEquals(16, ab1.byteLength); // ArrayBuffer should not be neutered. - - // Transfer ArrayBuffer - var ab2 = createArrayBuffer(32); - w.postMessage(ab2, [ab2]); - assertEquals(0, ab2.byteLength); // ArrayBuffer should be neutered. - - // Attempting to transfer the same ArrayBuffer twice should throw. - assertThrows(function() { - var ab3 = createArrayBuffer(4); - w.postMessage(ab3, [ab3, ab3]); - }); - - assertEquals("undefined", typeof foo); - - // Read a message from the worker. - assertEquals("DONE", w.getMessage()); - - w.terminate(); - - - // Make sure that the main thread doesn't block forever in getMessage() if - // the worker dies without posting a message. - var w2 = new Worker('', {type: 'string'}); - var msg = w2.getMessage(); - assertEquals(undefined, msg); -} diff --git a/implementation-contributed/v8/mjsunit/d8/enable-tracing.js b/implementation-contributed/v8/mjsunit/d8/enable-tracing.js deleted file mode 100644 index 5174b411556..00000000000 --- a/implementation-contributed/v8/mjsunit/d8/enable-tracing.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-tracing --trace-path=test/mjsunit/d8/v8_trace.json - -// Just test that running d8 with --enable-tracing does not crash in a normal -// execution without exceptions or calls to natives. diff --git a/implementation-contributed/v8/mjsunit/date-parse.js b/implementation-contributed/v8/mjsunit/date-parse.js deleted file mode 100644 index 59f0e367cac..00000000000 --- a/implementation-contributed/v8/mjsunit/date-parse.js +++ /dev/null @@ -1,331 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we can parse dates in all the different formats that we -// have to support. -// -// These formats are all supported by KJS but a lot of them are not -// supported by Spidermonkey. - -function testDateParse(string) { - var d = Date.parse(string); - assertEquals(946713600000, d, "parse: " + string); -}; - - -// For local time we just test that parsing returns non-NaN positive -// number of milliseconds to make it timezone independent. -function testDateParseLocalTime(string) { - var d = Date.parse("parse-local-time:" + string); - assertTrue(!isNaN(d), "parse-local-time: " + string + " is NaN."); - assertTrue(d > 0, "parse-local-time: " + string + " <= 0."); -}; - - -function testDateParseMisc(array) { - assertEquals(2, array.length, "array [" + array + "] length != 2."); - var string = array[0]; - var expected = array[1]; - var d = Date.parse(string); - assertEquals(expected, d, "parse-misc: " + string); -} - - -// -// Test all the formats in UT timezone. -// -var testCasesUT = [ - 'Sat, 01-Jan-2000 08:00:00 UT', - 'Sat, 01 Jan 2000 08:00:00 UT', - 'Jan 01 2000 08:00:00 UT', - 'Jan 01 08:00:00 UT 2000', - 'Saturday, 01-Jan-00 08:00:00 UT', - '01 Jan 00 08:00 +0000', - // Ignore weekdays. - 'Mon, 01 Jan 2000 08:00:00 UT', - 'Tue, 01 Jan 2000 08:00:00 UT', - // Ignore prefix that is not part of a date. - '[Saturday] Jan 01 08:00:00 UT 2000', - 'Ignore all of this stuff because it is annoying 01 Jan 2000 08:00:00 UT', - '[Saturday] Jan 01 2000 08:00:00 UT', - 'All of this stuff is really annnoying, so it will be ignored Jan 01 2000 08:00:00 UT', - // If the three first letters of the month is a - // month name we are happy - ignore the rest. - 'Sat, 01-Janisamonth-2000 08:00:00 UT', - 'Sat, 01 Janisamonth 2000 08:00:00 UT', - 'Janisamonth 01 2000 08:00:00 UT', - 'Janisamonth 01 08:00:00 UT 2000', - 'Saturday, 01-Janisamonth-00 08:00:00 UT', - '01 Janisamonth 00 08:00 +0000', - // Allow missing space between month and day. - 'Janisamonthandtherestisignored01 2000 08:00:00 UT', - 'Jan01 2000 08:00:00 UT', - // Allow year/month/day format. - 'Sat, 2000/01/01 08:00:00 UT', - // Allow month/day/year format. - 'Sat, 01/01/2000 08:00:00 UT', - // Allow month/day year format. - 'Sat, 01/01 2000 08:00:00 UT', - // Allow comma instead of space after day, month and year. - 'Sat, 01,Jan,2000,08:00:00 UT', - // Seconds are optional. - 'Sat, 01-Jan-2000 08:00 UT', - 'Sat, 01 Jan 2000 08:00 UT', - 'Jan 01 2000 08:00 UT', - 'Jan 01 08:00 UT 2000', - 'Saturday, 01-Jan-00 08:00 UT', - '01 Jan 00 08:00 +0000', - // Allow AM/PM after the time. - 'Sat, 01-Jan-2000 08:00 AM UT', - 'Sat, 01 Jan 2000 08:00 AM UT', - 'Jan 01 2000 08:00 AM UT', - 'Jan 01 08:00 AM UT 2000', - 'Saturday, 01-Jan-00 08:00 AM UT', - '01 Jan 00 08:00 AM +0000', - // White space and stuff in parenthesis is - // apparently allowed in most places where white - // space is allowed. - ' Sat, 01-Jan-2000 08:00:00 UT ', - ' Sat, 01 Jan 2000 08:00:00 UT ', - ' Saturday, 01-Jan-00 08:00:00 UT ', - ' 01 Jan 00 08:00 +0000 ', - ' ()(Sat, 01-Jan-2000) Sat, 01-Jan-2000 08:00:00 UT ', - ' Sat()(Sat, 01-Jan-2000)01 Jan 2000 08:00:00 UT ', - ' Sat,(02)01 Jan 2000 08:00:00 UT ', - ' Sat, 01(02)Jan 2000 08:00:00 UT ', - ' Sat, 01 Jan 2000 (2001)08:00:00 UT ', - ' Sat, 01 Jan 2000 (01)08:00:00 UT ', - ' Sat, 01 Jan 2000 (01:00:00)08:00:00 UT ', - ' Sat, 01 Jan 2000 08:00:00 (CDT)UT ', - ' Sat, 01 Jan 2000 08:00:00 UT((((CDT))))', - ' Saturday, 01-Jan-00 ()(((asfd)))(Sat, 01-Jan-2000)08:00:00 UT ', - ' 01 Jan 00 08:00 ()(((asdf)))(Sat, 01-Jan-2000)+0000 ', - ' 01 Jan 00 08:00 +0000()((asfd)(Sat, 01-Jan-2000)) ']; - -// -// Test that we do the right correction for different time zones. -// I'll assume that we can handle the same formats as for UT and only -// test a few formats for each of the timezones. -// - -// GMT = UT -var testCasesGMT = [ - 'Sat, 01-Jan-2000 08:00:00 GMT', - 'Sat, 01-Jan-2000 08:00:00 GMT+0', - 'Sat, 01-Jan-2000 08:00:00 GMT+00', - 'Sat, 01-Jan-2000 08:00:00 GMT+000', - 'Sat, 01-Jan-2000 08:00:00 GMT+0000', - 'Sat, 01-Jan-2000 08:00:00 GMT+00:00', // Interestingly, KJS cannot handle this. - 'Sat, 01 Jan 2000 08:00:00 GMT', - 'Saturday, 01-Jan-00 08:00:00 GMT', - '01 Jan 00 08:00 -0000', - '01 Jan 00 08:00 +0000']; - -// EST = UT minus 5 hours. -var testCasesEST = [ - 'Sat, 01-Jan-2000 03:00:00 UTC-0500', - 'Sat, 01-Jan-2000 03:00:00 UTC-05:00', // Interestingly, KJS cannot handle this. - 'Sat, 01-Jan-2000 03:00:00 EST', - 'Sat, 01 Jan 2000 03:00:00 EST', - 'Saturday, 01-Jan-00 03:00:00 EST', - '01 Jan 00 03:00 -0500']; - -// EDT = UT minus 4 hours. -var testCasesEDT = [ - 'Sat, 01-Jan-2000 04:00:00 EDT', - 'Sat, 01 Jan 2000 04:00:00 EDT', - 'Saturday, 01-Jan-00 04:00:00 EDT', - '01 Jan 00 04:00 -0400']; - -// CST = UT minus 6 hours. -var testCasesCST = [ - 'Sat, 01-Jan-2000 02:00:00 CST', - 'Sat, 01 Jan 2000 02:00:00 CST', - 'Saturday, 01-Jan-00 02:00:00 CST', - '01 Jan 00 02:00 -0600']; - -// CDT = UT minus 5 hours. -var testCasesCDT = [ - 'Sat, 01-Jan-2000 03:00:00 CDT', - 'Sat, 01 Jan 2000 03:00:00 CDT', - 'Saturday, 01-Jan-00 03:00:00 CDT', - '01 Jan 00 03:00 -0500']; - -// MST = UT minus 7 hours. -var testCasesMST = [ - 'Sat, 01-Jan-2000 01:00:00 MST', - 'Sat, 01 Jan 2000 01:00:00 MST', - 'Saturday, 01-Jan-00 01:00:00 MST', - '01 Jan 00 01:00 -0700']; - -// MDT = UT minus 6 hours. -var testCasesMDT = [ - 'Sat, 01-Jan-2000 02:00:00 MDT', - 'Sat, 01 Jan 2000 02:00:00 MDT', - 'Saturday, 01-Jan-00 02:00:00 MDT', - '01 Jan 00 02:00 -0600']; - -// PST = UT minus 8 hours. -var testCasesPST = [ - 'Sat, 01-Jan-2000 00:00:00 PST', - 'Sat, 01 Jan 2000 00:00:00 PST', - 'Saturday, 01-Jan-00 00:00:00 PST', - '01 Jan 00 00:00 -0800', - // Allow missing time. - 'Sat, 01-Jan-2000 PST']; - -// PDT = UT minus 7 hours. -var testCasesPDT = [ - 'Sat, 01-Jan-2000 01:00:00 PDT', - 'Sat, 01 Jan 2000 01:00:00 PDT', - 'Saturday, 01-Jan-00 01:00:00 PDT', - '01 Jan 00 01:00 -0700']; - -// Local time cases. -var testCasesLocalTime = [ - // Allow timezone omission. - 'Sat, 01-Jan-2000 08:00:00', - 'Sat, 01 Jan 2000 08:00:00', - 'Jan 01 2000 08:00:00', - 'Jan 01 08:00:00 2000', - 'Saturday, 01-Jan-00 08:00:00', - '01 Jan 00 08:00']; - - -// Misc. test cases that result in a different time value. -var testCasesMisc = [ - // Special handling for years in the [0, 100) range. - ['Sat, 01 Jan 0 08:00:00 UT', 946713600000], // year 2000 - ['Sat, 01 Jan 49 08:00:00 UT', 2493100800000], // year 2049 - ['Sat, 01 Jan 50 08:00:00 UT', -631123200000], // year 1950 - ['Sat, 01 Jan 99 08:00:00 UT', 915177600000], // year 1999 - ['Sat, 01 Jan 100 08:00:00 UT', -59011430400000], // year 100 - // Test PM after time. - ['Sat, 01-Jan-2000 08:00 PM UT', 946756800000], - ['Sat, 01 Jan 2000 08:00 PM UT', 946756800000], - ['Jan 01 2000 08:00 PM UT', 946756800000], - ['Jan 01 08:00 PM UT 2000', 946756800000], - ['Saturday, 01-Jan-00 08:00 PM UT', 946756800000], - ['01 Jan 00 08:00 PM +0000', 946756800000]]; - -// Test different version of the ES5 date time string format. -var testCasesES5Misc = [ - ['2000-01-01T08:00:00.000Z', 946713600000], - ['2000-01-01T08:00:00Z', 946713600000], - ['2000-01-01T08:00Z', 946713600000], - ['2000-01T08:00:00.000Z', 946713600000], - ['2000T08:00:00.000Z', 946713600000], - ['2000T08:00Z', 946713600000], - ['2000-01T00:00:00.000-08:00', 946713600000], - ['2000-01T08:00:00.001Z', 946713600001], - ['2000-01T08:00:00.099Z', 946713600099], - ['2000-01T08:00:00.999Z', 946713600999], - ['2000-01T00:00:00.001-08:00', 946713600001], - ['2000-01-01T24:00Z', 946771200000], - ['2000-01-01T24:00:00Z', 946771200000], - ['2000-01-01T24:00:00.000Z', 946771200000], - ['2000-01-01T24:00:00.000Z', 946771200000]]; - -var testCasesES5MiscNegative = [ - '2000-01-01TZ', - '2000-01-01T60Z', - '2000-01-01T60:60Z', - '2000-01-0108:00Z', - '2000-01-01T08Z', - '2000-01-01T24:01', - '2000-01-01T24:00:01', - '2000-01-01T24:00:00.001', - '2000-01-01T24:00:00.999Z']; - -// TODO(littledan): This is an hack that could break in historically -// changing timezones that happened on this day, but allows us to -// check the date value for local times. -var localOffset = new Date('2000-01-01').getTimezoneOffset()*1000*60; - -// Sanity check which is even more of a hack: in the timezones where -// these tests are likely to be run, the offset is nonzero because -// dates which don't include Z are in the local timezone. -if (this.Intl && - ["America/Los_Angeles", "Europe/Berlin", "Europe/Madrid"].indexOf( - Intl.DateTimeFormat().resolvedOptions().timeZone) != -1) { - assertTrue(localOffset != 0); -} - -var testCasesES2016TZ = [ - // If the timezone is absent and time is present, use local time - ['2000-01-02T00:00', 946771200000 + localOffset], - ['2000-01-02T00:00:00', 946771200000 + localOffset], - ['2000-01-02T00:00:00.000', 946771200000 + localOffset], - // If timezone is absent and time is absent, use UTC - ['2000-01-02', 946771200000], - ['2000-01-02', 946771200000], - ['2000-01-02', 946771200000], -]; - - -// Run all the tests. -testCasesUT.forEach(testDateParse); -testCasesGMT.forEach(testDateParse); -testCasesEST.forEach(testDateParse); -testCasesEDT.forEach(testDateParse); -testCasesCST.forEach(testDateParse); -testCasesCDT.forEach(testDateParse); -testCasesMST.forEach(testDateParse); -testCasesMDT.forEach(testDateParse); -testCasesPST.forEach(testDateParse); -testCasesPDT.forEach(testDateParse); -testCasesLocalTime.forEach(testDateParseLocalTime); -testCasesMisc.forEach(testDateParseMisc); - -// ES5 date time string format compliance. -testCasesES5Misc.forEach(testDateParseMisc); -testCasesES5MiscNegative.forEach(function (s) { - assertTrue(isNaN(Date.parse(s)), s + " is not NaN."); -}); - -testCasesES2016TZ.forEach(testDateParseMisc); - -// Test that we can parse our own date format. -// (Dates from 1970 to ~2070 with 150h steps.) -for (var i = 0; i < 24 * 365 * 100; i += 150) { - var ms = i * (3600 * 1000); - var s = (new Date(ms)).toString(); - assertEquals(ms, Date.parse(s), "parse own: " + s); -} - -// Negative tests. -var testCasesNegative = [ - 'May 25 2008 1:30 (PM)) UTC', // Bad unmatched ')' after number. - 'May 25 2008 1:30( )AM (PM)', // - 'a1', // Issue 126448, 53209. - 'nasfdjklsfjoaifg1', - 'x_2', - 'May 25 2008 AAA (GMT)']; // Unknown word after number. - -testCasesNegative.forEach(function (s) { - assertTrue(isNaN(Date.parse(s)), s + " is not NaN."); -}); diff --git a/implementation-contributed/v8/mjsunit/date.js b/implementation-contributed/v8/mjsunit/date.js deleted file mode 100644 index 2b12e8d2f6a..00000000000 --- a/implementation-contributed/v8/mjsunit/date.js +++ /dev/null @@ -1,370 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test date construction from other dates. -var date0 = new Date(1111); -var date1 = new Date(date0); -assertEquals(1111, date0.getTime()); -assertEquals(date0.getTime(), date1.getTime()); -var date2 = new Date(date0.toString()); -assertEquals(1000, date2.getTime()); - -// Test that dates may contain commas. -var date0 = Date.parse("Dec 25 1995 1:30"); -var date1 = Date.parse("Dec 25, 1995 1:30"); -var date2 = Date.parse("Dec 25 1995, 1:30"); -var date3 = Date.parse("Dec 25, 1995, 1:30"); -assertEquals(date0, date1); -assertEquals(date1, date2); -assertEquals(date2, date3); - -// Test limits (+/-1e8 days from epoch) - -var dMax = new Date(8.64e15); -assertEquals(8.64e15, dMax.getTime()); -assertEquals(275760, dMax.getFullYear()); -assertEquals(8, dMax.getMonth()); -assertEquals(13, dMax.getUTCDate()); - -var dOverflow = new Date(8.64e15+1); -assertTrue(isNaN(dOverflow.getTime())); - -var dMin = new Date(-8.64e15); -assertEquals(-8.64e15, dMin.getTime()); -assertEquals(-271821, dMin.getFullYear()); -assertEquals(3, dMin.getMonth()); -assertEquals(20, dMin.getUTCDate()); - -var dUnderflow = new Date(-8.64e15-1); -assertTrue(isNaN(dUnderflow.getTime())); - - -// Tests inspired by js1_5/Date/regress-346363.js - -// Year -var a = new Date(); -a.setFullYear(); -a.setFullYear(2006); -assertEquals(2006, a.getFullYear()); - -var b = new Date(); -b.setUTCFullYear(); -b.setUTCFullYear(2006); -assertEquals(2006, b.getUTCFullYear()); - -// Month -var c = new Date(); -c.setMonth(); -c.setMonth(2); -assertTrue(isNaN(c.getMonth())); - -var d = new Date(); -d.setUTCMonth(); -d.setUTCMonth(2); -assertTrue(isNaN(d.getUTCMonth())); - -// Date -var e = new Date(); -e.setDate(); -e.setDate(2); -assertTrue(isNaN(e.getDate())); - -var f = new Date(); -f.setUTCDate(); -f.setUTCDate(2); -assertTrue(isNaN(f.getUTCDate())); - -// Hours -var g = new Date(); -g.setHours(); -g.setHours(2); -assertTrue(isNaN(g.getHours())); - -var h = new Date(); -h.setUTCHours(); -h.setUTCHours(2); -assertTrue(isNaN(h.getUTCHours())); - -// Minutes -var g = new Date(); -g.setMinutes(); -g.setMinutes(2); -assertTrue(isNaN(g.getMinutes())); - -var h = new Date(); -h.setUTCHours(); -h.setUTCHours(2); -assertTrue(isNaN(h.getUTCHours())); - - -// Seconds -var i = new Date(); -i.setSeconds(); -i.setSeconds(2); -assertTrue(isNaN(i.getSeconds())); - -var j = new Date(); -j.setUTCSeconds(); -j.setUTCSeconds(2); -assertTrue(isNaN(j.getUTCSeconds())); - - -// Milliseconds -var k = new Date(); -k.setMilliseconds(); -k.setMilliseconds(2); -assertTrue(isNaN(k.getMilliseconds())); - -var l = new Date(); -l.setUTCMilliseconds(); -l.setUTCMilliseconds(2); -assertTrue(isNaN(l.getUTCMilliseconds())); - -// Test that -0 is treated correctly in MakeDay. -var d = new Date(); -assertDoesNotThrow("d.setDate(-0)"); -assertDoesNotThrow("new Date(-0, -0, -0, -0, -0, -0, -0)"); -assertDoesNotThrow("new Date(0x40000000, 0x40000000, 0x40000000," + - "0x40000000, 0x40000000, 0x40000000, 0x40000000)") -assertDoesNotThrow("new Date(-0x40000001, -0x40000001, -0x40000001," + - "-0x40000001, -0x40000001, -0x40000001, -0x40000001)") - -// Test that date as double type is treated as integer type in MakeDay -// so that the hour should't be changed. -d = new Date(2018, 0); -assertEquals(Date.parse(new Date(2018, 0, 11)), d.setDate(11.2)); -assertEquals(0, d.getHours()); - -// Modified test from WebKit -// LayoutTests/fast/js/script-tests/date-utc-timeclip.js: - -assertEquals(8639999999999999, Date.UTC(275760, 8, 12, 23, 59, 59, 999)); -assertEquals(8640000000000000, Date.UTC(275760, 8, 13)); -assertTrue(isNaN(Date.UTC(275760, 8, 13, 0, 0, 0, 1))); -assertTrue(isNaN(Date.UTC(275760, 8, 14))); - -assertEquals(Date.UTC(-271821, 3, 20, 0, 0, 0, 1), -8639999999999999); -assertEquals(Date.UTC(-271821, 3, 20), -8640000000000000); -assertTrue(isNaN(Date.UTC(-271821, 3, 19, 23, 59, 59, 999))); -assertTrue(isNaN(Date.UTC(-271821, 3, 19))); - - -// Test creation with large date values. -d = new Date(1969, 12, 1, 99999999999); -assertTrue(isNaN(d.getTime())); -d = new Date(1969, 12, 1, -99999999999); -assertTrue(isNaN(d.getTime())); -d = new Date(1969, 12, 1, Infinity); -assertTrue(isNaN(d.getTime())); -d = new Date(1969, 12, 1, -Infinity); -assertTrue(isNaN(d.getTime())); -d = new Date(1969, 12, 1, 0); -d.setTime(Math.pow(2, 64)); -assertTrue(isNaN(d.getTime())); -d = new Date(1969, 12, 1, 0); -d.setTime(Math.pow(-2, 64)); -assertTrue(isNaN(d.getTime())); - - -// Test creation with obscure date values. -assertEquals(8640000000000000, Date.UTC(1970, 0, 1 + 100000001, -24)); -assertEquals(-8640000000000000, Date.UTC(1970, 0, 1 - 100000001, 24)); - - -// Parsing ES5 ISO-8601 dates. -// When TZ is omitted, it defaults to the local timezone if there is -// no time, and to UTC if a time is provided. This file tests the -// "timezone present" case; timezone absent is tested by test/mjsunit/date-parse.js - -// Check epoch. -assertEquals(0, Date.parse("1970-01-01T00:00:00.000+00:00")); -assertEquals(0, Date.parse("1970-01-01T00:00:00.000-00:00")); -assertEquals(0, Date.parse("1970-01-01T00:00:00.000Z")); -assertEquals(0, Date.parse("1970-01-01T00:00:00.000Z")); -assertEquals(0, Date.parse("1970-01-01T00:00:00Z")); -assertEquals(0, Date.parse("1970-01-01T00:00Z")); -assertEquals(0, Date.parse("1970-01-01Z")); - -assertEquals(0, Date.parse("1970-01T00:00:00.000+00:00")); -assertEquals(0, Date.parse("1970-01T00:00:00.000-00:00")); -assertEquals(0, Date.parse("1970-01T00:00:00.000Z")); -assertEquals(0, Date.parse("1970-01T00:00:00.000Z")); -assertEquals(0, Date.parse("1970-01T00:00:00Z")); -assertEquals(0, Date.parse("1970-01T00:00Z")); -assertEquals(0, Date.parse("1970-01Z")); - -assertEquals(0, Date.parse("1970T00:00:00.000+00:00")); -assertEquals(0, Date.parse("1970T00:00:00.000-00:00")); -assertEquals(0, Date.parse("1970T00:00:00.000Z")); -assertEquals(0, Date.parse("1970T00:00:00.000Z")); -assertEquals(0, Date.parse("1970T00:00:00Z")); -assertEquals(0, Date.parse("1970T00:00Z")); -assertEquals(0, Date.parse("1970Z")); - -assertEquals(0, Date.parse("+001970-01-01T00:00:00.000+00:00")); -assertEquals(0, Date.parse("+001970-01-01T00:00:00.000-00:00")); -assertEquals(0, Date.parse("+001970-01-01T00:00:00.000Z")); -assertEquals(0, Date.parse("+001970-01-01T00:00:00.000Z")); -assertEquals(0, Date.parse("+001970-01-01T00:00:00Z")); -assertEquals(0, Date.parse("+001970-01-01T00:00Z")); -assertEquals(0, Date.parse("+001970-01-01Z")); - -assertEquals(0, Date.parse("+001970-01T00:00:00.000+00:00")); -assertEquals(0, Date.parse("+001970-01T00:00:00.000-00:00")); -assertEquals(0, Date.parse("+001970-01T00:00:00.000Z")); -assertEquals(0, Date.parse("+001970-01T00:00:00.000Z")); -assertEquals(0, Date.parse("+001970-01T00:00:00Z")); -assertEquals(0, Date.parse("+001970-01T00:00Z")); -assertEquals(0, Date.parse("+001970-01Z")); - -assertEquals(0, Date.parse("+001970T00:00:00.000+00:00")); -assertEquals(0, Date.parse("+001970T00:00:00.000-00:00")); -assertEquals(0, Date.parse("+001970T00:00:00.000Z")); -assertEquals(0, Date.parse("+001970T00:00:00.000Z")); -assertEquals(0, Date.parse("+001970T00:00:00Z")); -assertEquals(0, Date.parse("+001970T00:00Z")); -assertEquals(0, Date.parse("+001970Z")); - -// Check random date. -assertEquals(70671003500, Date.parse("1972-03-28T23:50:03.500+01:00")); -assertEquals(70674603500, Date.parse("1972-03-28T23:50:03.500Z")); -assertEquals(70674603500, Date.parse("1972-03-28T23:50:03.500Z")); -assertEquals(70674603000, Date.parse("1972-03-28T23:50:03Z")); -assertEquals(70674600000, Date.parse("1972-03-28T23:50Z")); -assertEquals(70588800000, Date.parse("1972-03-28Z")); - -assertEquals(68338203500, Date.parse("1972-03T23:50:03.500+01:00")); -assertEquals(68341803500, Date.parse("1972-03T23:50:03.500Z")); -assertEquals(68341803500, Date.parse("1972-03T23:50:03.500Z")); -assertEquals(68341803000, Date.parse("1972-03T23:50:03Z")); -assertEquals(68341800000, Date.parse("1972-03T23:50Z")); -assertEquals(68256000000, Date.parse("1972-03Z")); - -assertEquals(63154203500, Date.parse("1972T23:50:03.500+01:00")); -assertEquals(63157803500, Date.parse("1972T23:50:03.500Z")); -assertEquals(63157803500, Date.parse("1972T23:50:03.500Z")); -assertEquals(63157803000, Date.parse("1972T23:50:03Z")); -assertEquals(63072000000, Date.parse("1972Z")); - -assertEquals(70671003500, Date.parse("+001972-03-28T23:50:03.500+01:00")); -assertEquals(70674603500, Date.parse("+001972-03-28T23:50:03.500Z")); -assertEquals(70674603500, Date.parse("+001972-03-28T23:50:03.500Z")); -assertEquals(70674603000, Date.parse("+001972-03-28T23:50:03Z")); -assertEquals(70674600000, Date.parse("+001972-03-28T23:50Z")); -assertEquals(70588800000, Date.parse("+001972-03-28Z")); - -assertEquals(68338203500, Date.parse("+001972-03T23:50:03.500+01:00")); -assertEquals(68341803500, Date.parse("+001972-03T23:50:03.500Z")); -assertEquals(68341803500, Date.parse("+001972-03T23:50:03.500Z")); -assertEquals(68341803000, Date.parse("+001972-03T23:50:03Z")); -assertEquals(68341800000, Date.parse("+001972-03T23:50Z")); -assertEquals(68256000000, Date.parse("+001972-03Z")); - -assertEquals(63154203500, Date.parse("+001972T23:50:03.500+01:00")); -assertEquals(63157803500, Date.parse("+001972T23:50:03.500Z")); -assertEquals(63157803500, Date.parse("+001972T23:50:03.500Z")); -assertEquals(63157803000, Date.parse("+001972T23:50:03Z")); -assertEquals(63072000000, Date.parse("+001972Z")); - - -// Ensure that ISO-years in the range 00-99 aren't translated to the range -// 1950..2049. -assertEquals(-60904915200000, Date.parse("0040-01-01T00:00Z")); -assertEquals(-60273763200000, Date.parse("0060-01-01T00:00Z")); -assertEquals(-62167219200000, Date.parse("0000-01-01T00:00Z")); -assertEquals(-62167219200000, Date.parse("+000000-01-01T00:00Z")); - -// Test negative years. -assertEquals(-63429523200000, Date.parse("-000040-01-01Z")); -assertEquals(-64060675200000, Date.parse("-000060-01-01Z")); -assertEquals(-124397510400000, Date.parse("-001972-01-01Z")); - -// Check time-zones. -assertEquals(70674603500, Date.parse("1972-03-28T23:50:03.500Z")); -for (var i = 0; i < 24; i++) { - var hh = (i < 10) ? "0" + i : "" + i; - for (var j = 0; j < 60; j += 15) { - var mm = (j < 10) ? "0" + j : "" + j; - var ms = (i * 60 + j) * 60000; - var string = "1972-03-28T23:50:03.500-" + hh + ":" + mm; - assertEquals(70674603500 + ms, Date.parse(string), string); - string = "1972-03-28T23:50:03.500+" + hh + ":" + mm; - assertEquals(70674603500 - ms, Date.parse(string), string); - } -} - -// Test padding with 0 rather than spaces -assertEquals('Wed, 01 Jan 0020 00:00:00 GMT', new Date('0020-01-01T00:00:00Z').toUTCString()); -let dateRegExp = /^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{2} [0-9]{4}$/ -match = dateRegExp.exec(new Date('0020-01-01T00:00:00Z').toDateString()); -assertNotNull(match); -let stringRegExp = /^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{2} [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT[+-][0-9]{4}( \(.+\))?$/ -match = stringRegExp.exec(new Date('0020-01-01T00:00:00Z').toString()); -assertNotNull(match); - -assertThrows('Date.prototype.setTime.call("", 1);', TypeError); -assertThrows('Date.prototype.setYear.call("", 1);', TypeError); -assertThrows('Date.prototype.setHours.call("", 1, 2, 3, 4);', TypeError); -assertThrows('Date.prototype.getDate.call("");', TypeError); -assertThrows('Date.prototype.getUTCDate.call("");', TypeError); - -assertThrows(function() { Date.prototype.getTime.call(0) }, TypeError); -assertThrows(function() { Date.prototype.getTime.call("") }, TypeError); - -assertThrows(function() { Date.prototype.getYear.call(0) }, TypeError); -assertThrows(function() { Date.prototype.getYear.call("") }, TypeError); - -(function TestDatePrototypeOrdinaryObject() { - assertEquals(Object.prototype, Date.prototype.__proto__); - assertThrows(function () { Date.prototype.toString() }, TypeError); -})(); - -delete Date.prototype.getUTCFullYear; -delete Date.prototype.getUTCMonth; -delete Date.prototype.getUTCDate; -delete Date.prototype.getUTCHours; -delete Date.prototype.getUTCMinutes; -delete Date.prototype.getUTCSeconds; -delete Date.prototype.getUTCMilliseconds; -(new Date()).toISOString(); - -(function TestDeleteToString() { - assertTrue(delete Date.prototype.toString); - assertTrue('[object Date]' !== Date()); -})(); - -// Test minimum and maximum date range according to ES6 section 20.3.1.1: -// "The actual range of times supported by ECMAScript Date objects is slightly -// smaller: exactly -100,000,000 days to 100,000,000 days measured relative to -// midnight at the beginning of 01 January, 1970 UTC. This gives a range of -// 8,640,000,000,000,000 milliseconds to either side of 01 January, 1970 UTC." -assertEquals(-8640000000000000, Date.parse("-271821-04-20T00:00:00.000Z")); -assertEquals(8640000000000000, Date.parse("+275760-09-13T00:00:00.000Z")); -assertTrue(isNaN(Date.parse("-271821-04-19T00:00:00.000Z"))); -assertTrue(isNaN(Date.parse("+275760-09-14T00:00:00.000Z"))); diff --git a/implementation-contributed/v8/mjsunit/debugPrint.js b/implementation-contributed/v8/mjsunit/debugPrint.js deleted file mode 100644 index 3ab93e547a4..00000000000 --- a/implementation-contributed/v8/mjsunit/debugPrint.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var largeArray = []; -largeArray[0xFFFF00] = 123; - -function sloppyArguments() { - return arguments; -} - -function sloppyArguments2(a, b) { - return arguments; -} - -function slowSloppyArguments() { - arguments[0xFFFFF] = -1; - return arguments; -} - -function slowSloppyArguments2(a, b) { - arguments[0xFFFFF] = -1; - return arguments; -} - - -var objects = [ - this, - true, false, null, undefined, - 1, -1, 1.1, -2.2, -0, 0, - Infinity, -Infinity, NaN, - "aasdfasdfasdfasdf", "a"+"b", - {}, {1:1}, {a:1}, {1:1, 2:2}, Object.create(null), - [], [{}, {}], [1, 1, 1], [1.1, 1.1, 1.1, 1.1, 2], largeArray, - new Proxy({},{}), - new Date(), new String(" a"), - new Uint8Array(12), new Float32Array([1, 2, 4, 5]), - new Uint8ClampedArray(2048), - /asdf/, new RegExp(), - Object.create, Object, Array, - Symbol.iterator, - [][Symbol.iterator](), - new Map(), new Set(), - (new Map()).entries(), (new Set()).entries(), - sloppyArguments(), sloppyArguments(1, 2, 3, 4), - sloppyArguments2(), sloppyArguments2(1, 2, 3, 4), - slowSloppyArguments(), slowSloppyArguments(1, 2, 3, 4), - slowSloppyArguments2(), slowSloppyArguments2(1, 2, 3, 4), - -]; -for (var o of objects) %DebugPrint(o); diff --git a/implementation-contributed/v8/mjsunit/declare-locally.js b/implementation-contributed/v8/mjsunit/declare-locally.js deleted file mode 100644 index f03217e739a..00000000000 --- a/implementation-contributed/v8/mjsunit/declare-locally.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure that we're not overwriting global -// properties defined in the prototype chain too -// early when shadowing them with var -// declarations. - -// This exercises the code in runtime.cc in -// DeclareGlobal...Locally(). - -this.__proto__.foo = 42; - -eval("assertEquals(undefined, foo); var foo = 87;"); -assertEquals(87, foo); diff --git a/implementation-contributed/v8/mjsunit/deep-recursion.js b/implementation-contributed/v8/mjsunit/deep-recursion.js deleted file mode 100644 index 588b5d61057..00000000000 --- a/implementation-contributed/v8/mjsunit/deep-recursion.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * @fileoverview Check that flattening deep trees of cons strings does not - * cause stack overflows. - */ - -function newdeep(start, depth) { - var d = start; - for (var i = 0; i < depth; i++) { - d = d + "f"; - } - return d; -} - -var default_depth = 110000; - -var deep = newdeep("foo", default_depth); -assertEquals('f', deep[0]); - -var cmp1 = newdeep("a", default_depth); -var cmp2 = newdeep("b", default_depth); - -assertEquals(-1, cmp1.localeCompare(cmp2), "ab"); - -var cmp2empty = newdeep("c", default_depth); -assertTrue(cmp2empty.localeCompare("") > 0, "c"); - -var cmp3empty = newdeep("d", default_depth); -assertTrue("".localeCompare(cmp3empty) < 0), "d"; - -var slicer_depth = 1100; - -var slicer = newdeep("slice", slicer_depth); - -for (i = 0; i < slicer_depth + 4; i += 2) { - slicer = slicer.slice(1, -1); -} - -assertEquals("f", slicer[0]); -assertEquals(1, slicer.length); diff --git a/implementation-contributed/v8/mjsunit/default-nospec.js b/implementation-contributed/v8/mjsunit/default-nospec.js deleted file mode 100644 index 0e3b6c1f550..00000000000 --- a/implementation-contributed/v8/mjsunit/default-nospec.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -(()=> { - function f(a, b, c) { - return String.prototype.indexOf.call(a, b, c); - } - f("abc", "de", 1); - f("abc", "de", 1); - %OptimizeFunctionOnNextCall(f); - f("abc", "de", {}); - %OptimizeFunctionOnNextCall(f); - f("abc", "de", {}); - assertOptimized(f); -})(); - -(()=> { - function f(a, b, c) { - return String.prototype.indexOf.apply(a, [b, c]); - } - f("abc", "de", 1); - f("abc", "de", 1); - %OptimizeFunctionOnNextCall(f); - f("abc", {}, 1); - %OptimizeFunctionOnNextCall(f); - f("abc", {}, 1); - assertOptimized(f); -})(); - -(()=> { - function f(a, b, c) { - return Reflect.apply(String.prototype.indexOf, a, [b, c]); - } - f("abc", "de", 1); - f("abc", "de", 1); - %OptimizeFunctionOnNextCall(f); - f({}, "de", 1); - %OptimizeFunctionOnNextCall(f); - f({}, "de", 1); - assertOptimized(f); -})(); - -(()=> { - function f(a, b) { - return String.fromCharCode.call(a, b); - } - f("abc", 1); - f("abc", 1); - %OptimizeFunctionOnNextCall(f); - f("abc", {}); - %OptimizeFunctionOnNextCall(f); - f({}, {}); - assertOptimized(f); -})(); - -(()=> { - function f(a, b) { - return String.fromCharCode.apply(undefined, [b, {}]); - } - f("abc", 1); - f("abc", 1); - %OptimizeFunctionOnNextCall(f); - f("abc", {}); - %OptimizeFunctionOnNextCall(f); - f("abc", {}); - assertOptimized(f); -})(); - - -(()=> { - function f(a, b) { - return Reflect.apply(String.fromCharCode, a, [b, {}]); - } - f("abc", 1); - f("abc", 1); - %OptimizeFunctionOnNextCall(f); - f("abc", {}); - %OptimizeFunctionOnNextCall(f); - f("abc", {}); - assertOptimized(f); -})(); diff --git a/implementation-contributed/v8/mjsunit/define-property-gc.js b/implementation-contributed/v8/mjsunit/define-property-gc.js deleted file mode 100644 index b130b164b1b..00000000000 --- a/implementation-contributed/v8/mjsunit/define-property-gc.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the handling of GC issues in the defineProperty method. -// Flags: --max-semi-space-size=1 - -function Regular() { - this[0] = 0; - this[1] = 1; -} - - -function foo() { - var descElementNonWritable = { value: 'foofoo', writable: false }; - for (var i = 0; i < 1000; i++) { - var regular = new Regular(); - Object.defineProperty(regular, '1', descElementNonWritable); - } -} - -foo(); diff --git a/implementation-contributed/v8/mjsunit/dehoisted-array-index.js b/implementation-contributed/v8/mjsunit/dehoisted-array-index.js deleted file mode 100644 index f4a32c1033c..00000000000 --- a/implementation-contributed/v8/mjsunit/dehoisted-array-index.js +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - -// Key is HParameter -function aoo(i) { - return a[i + 1]; -} - -aoo(1); -aoo(-1); -%OptimizeFunctionOnNextCall(aoo); -aoo(-1); - - -// Key is HChange, used by either dehoised or non-dehoisted -function boo(i) { - var ret = 0; - if (i < 0) { - ret = a[i + 10]; - } else { - ret = a[i]; - } - return ret; -} - -boo(1); -boo(-1); -%OptimizeFunctionOnNextCall(boo); -boo(-1); - - -// Key is HMul(-i ==> i * (-1)) -function coo() { - var ret = 0; - for (var i = 4; i > 0; i -= 1) { - ret += a[-i + 4]; // dehoisted - } - - return ret; -} - -coo(); -coo(); -%OptimizeFunctionOnNextCall(coo); -coo(); - - -// Key is HPhi, used only by dehoisted -function doo() { - var ret = 0; - for (var i = 0; i < 5; i += 1) { - ret += a[i + 1]; // dehoisted - } - return ret; -} -doo(); -doo(); -%OptimizeFunctionOnNextCall(doo); -doo(); - -// Key is HPhi, but used by both dehoisted and non-dehoisted -// sign extend is useless -function eoo() { - var ret = 0; - for (var i = 0; i < 5; i += 1) { - ret += a[i]; // non-dehoisted - ret += a[i + 1]; // dehoisted - } - - return ret; -} -eoo(); -eoo(); -%OptimizeFunctionOnNextCall(eoo); -eoo(); - - - -// Key is HPhi, but used by either dehoisted or non-dehoisted -function foo() { - var ret = 0; - for (var i = -3; i < 4; i += 1) { - if (i < 0) { - ret += a[i + 4]; // dehoisted - } else { - ret += a[i]; // non-dehoisted - } - } - - return ret; -} - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); - -// Key is HPhi, but not induction variable -function goo(i) { - if (i > 0) { - i += 1; - } else { - i += -1; - } - - return a[i + 3]; -} -goo(-1); -goo(-1); -%OptimizeFunctionOnNextCall(goo); -goo(-1); - -// Key is return value of function -function index() { - return 1; -} -%NeverOptimizeFunction(index); -function hoo() { - return a[index() + 3]; -} - -hoo(); -hoo(); -%OptimizeFunctionOnNextCall(hoo); -hoo(); - -// Sign extension of key makes AssertZeroExtended fail in DoBoundsCheck -function ioo(i) { - return a[i] + a[i + 1]; -} - -ioo(1); -ioo(1); -%OptimizeFunctionOnNextCall(ioo); -ioo(-1); diff --git a/implementation-contributed/v8/mjsunit/delay-syntax-error.js b/implementation-contributed/v8/mjsunit/delay-syntax-error.js deleted file mode 100644 index 20b2affacc0..00000000000 --- a/implementation-contributed/v8/mjsunit/delay-syntax-error.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Throw syntax errors for illegal return, break and continue at compile time. -assertThrows("if (false) return;"); -assertThrows("if (false) break;"); -assertThrows("if (false) continue;"); - -assertThrows("return;"); -assertThrows("break;"); -assertThrows("continue;"); diff --git a/implementation-contributed/v8/mjsunit/delete-global-properties.js b/implementation-contributed/v8/mjsunit/delete-global-properties.js deleted file mode 100644 index 2acf591635e..00000000000 --- a/implementation-contributed/v8/mjsunit/delete-global-properties.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Global properties declared with 'var' or 'function' should not be -// deleteable. -var tmp; -assertFalse(delete tmp); // should be DONT_DELETE -assertTrue("tmp" in this); -function f() { return 1; } -assertFalse(delete f); // should be DONT_DELETE -assertEquals(1, f()); - -// Check that deleting and reintroducing global variables works. -// Get into the IC case for storing to a deletable global property. -function introduce_x() { x = 42; } -for (var i = 0; i < 10; i++) introduce_x(); -// Check that the property has been introduced. -assertTrue(this.hasOwnProperty('x')); -// Check that deletion works. -delete x; -assertFalse(this.hasOwnProperty('x')); -// Check that reintroduction works. -introduce_x(); -assertTrue(this.hasOwnProperty('x')); diff --git a/implementation-contributed/v8/mjsunit/delete-in-eval.js b/implementation-contributed/v8/mjsunit/delete-in-eval.js deleted file mode 100644 index 9278013ead6..00000000000 --- a/implementation-contributed/v8/mjsunit/delete-in-eval.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should be able to delete properties in the context through eval(). -tmp = 0; -assertTrue(eval("delete XXX")); // non-existing -assertTrue(eval("delete tmp")); // existing -assertFalse("tmp" in this); diff --git a/implementation-contributed/v8/mjsunit/delete-in-with.js b/implementation-contributed/v8/mjsunit/delete-in-with.js deleted file mode 100644 index cbcfe991b89..00000000000 --- a/implementation-contributed/v8/mjsunit/delete-in-with.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// It should be possible to delete properties of 'with' context -// objects from within 'with' statements. -(function(){ - var tmp = { x: 12 }; - with (tmp) { assertTrue(delete x); } - assertFalse("x" in tmp); -})(); diff --git a/implementation-contributed/v8/mjsunit/delete-non-configurable.js b/implementation-contributed/v8/mjsunit/delete-non-configurable.js deleted file mode 100644 index 8991f43f530..00000000000 --- a/implementation-contributed/v8/mjsunit/delete-non-configurable.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Delete elements of a String object. -var TIPLI = "tipli" -var so = new String(TIPLI); -var length = so.length; - -for (var i = 0; i < length; i++) { - assertFalse(delete so[i]); - assertThrows("'use strict'; delete so[i];", TypeError); - assertFalse(delete so[i.toString()]); - assertThrows("'use strict'; delete so[i.toString()];", TypeError); -} - -assertEquals(length, so.length); -assertEquals(new String(TIPLI), so); - -// Delete elements of an Array. -var arr = new Array(length); - -for (var i = 0; i < length; i++) { - arr[i] = i; - Object.defineProperty(arr, i, { configurable: false }); -} - -for (var i = 0; i < length; i++) { - assertFalse(delete arr[i]); - assertThrows("'use strict'; delete arr[i];", TypeError); - assertFalse(delete arr[i.toString()]); - assertThrows("'use strict'; delete arr[i.toString()];", TypeError); - assertEquals(i, arr[i]); -} - -assertEquals(length, arr.length); -assertTrue(delete arr[length]); - -// Delete an element of an Object. -var INDEX = 28; -var obj = new Object(); - -obj[INDEX] = TIPLI; -Object.defineProperty(obj, INDEX, { configurable: false }); - -assertFalse(delete obj[INDEX]); -assertThrows("'use strict'; delete obj[INDEX];", TypeError); -assertFalse(delete obj[INDEX.toString()]); -assertThrows("'use strict'; delete obj[INDEX.toString()];", TypeError); -assertEquals(TIPLI, obj[INDEX]); -assertTrue(delete arr[INDEX+1]); diff --git a/implementation-contributed/v8/mjsunit/delete-vars-from-eval.js b/implementation-contributed/v8/mjsunit/delete-vars-from-eval.js deleted file mode 100644 index a457466d741..00000000000 --- a/implementation-contributed/v8/mjsunit/delete-vars-from-eval.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Variable declarations in eval() must introduce delete-able vars; -// even when they are local to a function. -(function() { - eval("var tmp0 = 0"); - assertEquals(0, tmp0); - assertTrue(delete tmp0); - assertTrue(typeof(tmp0) == 'undefined'); -})(); - -eval("var tmp1 = 1"); -assertEquals(1, tmp1); -assertTrue(delete tmp1); -assertTrue(typeof(tmp1) == 'undefined'); diff --git a/implementation-contributed/v8/mjsunit/delete.js b/implementation-contributed/v8/mjsunit/delete.js deleted file mode 100644 index 20fa6bfb676..00000000000 --- a/implementation-contributed/v8/mjsunit/delete.js +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// We use the has() function to avoid relying on a functioning -// implementation of 'in'. -function has(o, k) { return typeof o[k] !== 'undefined'; } - -assertTrue(delete null); -assertTrue(delete 2); -assertTrue(delete 'foo'); -assertTrue(delete Number(7)); -assertTrue(delete new Number(8)); - -assertTrue(delete {}.x); -assertTrue(delete {}.y); -assertTrue(delete {}.toString); - -x = 42; -assertEquals(42, x); -assertTrue(delete x); -assertTrue(typeof x === 'undefined', "x is gone"); - -var y = 87; // should have DontDelete attribute -assertEquals(87, y); -assertFalse(delete y, "don't delete"); -assertFalse(typeof y === 'undefined'); -assertEquals(87, y); - -var o = { x: 42, y: 87 }; -assertTrue(has(o, 'x')); -assertTrue(has(o, 'y')); -assertTrue(delete o.x); -assertFalse(has(o, 'x')); -assertTrue(has(o, 'y')); -assertTrue(delete o['y']); -assertFalse(has(o, 'x')); -assertFalse(has(o, 'y')); - - -var o = {}; -for (var i = 0x0020; i < 0x02ff; i+=2) { - o[String.fromCharCode(i)] = i; - o[String.fromCharCode(i+1)] = i+1; -} -for (var i = 0x0020; i < 0x02ff; i+=2) { - assertTrue(delete o[String.fromCharCode(i)]); -} -for (var i = 0x0020; i < 0x02ff; i+=2) { - assertFalse(has(o, String.fromCharCode(i)), "deleted (" + i + ")"); - assertTrue(has(o, String.fromCharCode(i+1)), "still here (" + i + ")"); -} - - -var a = [0,1,2]; -assertTrue(has(a, 0)); -assertTrue(delete a[0]); -assertFalse(has(a, 0), "delete 0"); -assertEquals(1, a[1]); -assertEquals(2, a[2]); -assertTrue(delete a[100], "delete 100"); -assertTrue(delete a[Math.pow(2,31)-1], "delete 2^31-1"); -assertFalse(has(a, 0), "delete 0"); -assertEquals(1, a[1]); -assertEquals(2, a[2]); - - -var a = [0,1,2]; -assertEquals(3, a.length); -assertTrue(delete a[2]); -assertEquals(3, a.length); -assertTrue(delete a[0]); -assertEquals(3, a.length); -assertTrue(delete a[1]); -assertEquals(3, a.length); - - -var o = {}; -o[Math.pow(2,30)-1] = 0; -o[Math.pow(2,31)-1] = 0; -o[1] = 0; -assertTrue(delete o[0]); -assertTrue(delete o[Math.pow(2,30)]); -assertFalse(has(o, 0), "delete 0"); -assertFalse(has(o, Math.pow(2,30))); -assertTrue(has(o, 1)); -assertTrue(has(o, Math.pow(2,30)-1)); -assertTrue(has(o, Math.pow(2,31)-1)); - -assertTrue(delete o[Math.pow(2,30)-1]); -assertTrue(has(o, 1)); -assertFalse(has(o, Math.pow(2,30)-1), "delete 2^30-1"); -assertTrue(has(o, Math.pow(2,31)-1)); - -assertTrue(delete o[1]); -assertFalse(has(o, 1), "delete 1"); -assertFalse(has(o, Math.pow(2,30)-1), "delete 2^30-1"); -assertTrue(has(o, Math.pow(2,31)-1)); - -assertTrue(delete o[Math.pow(2,31)-1]); -assertFalse(has(o, 1), "delete 1"); -assertFalse(has(o, Math.pow(2,30)-1), "delete 2^30-1"); -assertFalse(has(o, Math.pow(2,31)-1), "delete 2^31-1"); - - -var a = []; -a[Math.pow(2,30)-1] = 0; -a[Math.pow(2,31)-1] = 0; -a[1] = 0; -assertTrue(delete a[0]); -assertTrue(delete a[Math.pow(2,30)]); -assertFalse(has(a, 0), "delete 0"); -assertFalse(has(a, Math.pow(2,30)), "delete 2^30"); -assertTrue(has(a, 1)); -assertTrue(has(a, Math.pow(2,30)-1)); -assertTrue(has(a, Math.pow(2,31)-1)); -assertEquals(Math.pow(2,31), a.length); - -assertTrue(delete a[Math.pow(2,30)-1]); -assertTrue(has(a, 1)); -assertFalse(has(a, Math.pow(2,30)-1), "delete 2^30-1"); -assertTrue(has(a, Math.pow(2,31)-1)); -assertEquals(Math.pow(2,31), a.length); - -assertTrue(delete a[1]); -assertFalse(has(a, 1), "delete 1"); -assertFalse(has(a, Math.pow(2,30)-1), "delete 2^30-1"); -assertTrue(has(a, Math.pow(2,31)-1)); -assertEquals(Math.pow(2,31), a.length); - -assertTrue(delete a[Math.pow(2,31)-1]); -assertFalse(has(a, 1), "delete 1"); -assertFalse(has(a, Math.pow(2,30)-1), "delete 2^30-1"); -assertFalse(has(a, Math.pow(2,31)-1), "delete 2^31-1"); -assertEquals(Math.pow(2,31), a.length); - -// Check that a LoadIC for a dictionary field works, even -// when the dictionary probe misses. -function load_deleted_property_using_IC() { - var x = new Object(); - x.a = 3; - x.b = 4; - x.c = 5; - - delete x.c; - assertEquals(3, load_a(x)); - assertEquals(3, load_a(x)); - delete x.a; - assertTrue(typeof load_a(x) === 'undefined', "x.a is gone"); - assertTrue(typeof load_a(x) === 'undefined', "x.a is gone"); -} - -function load_a(x) { - return x.a; -} - -load_deleted_property_using_IC(); - - -(function deleteLargeDoubleArrayAtEnd() { - var o = {}; - var max = 100000; - for (var i = 0; i <= max; i++) { - o[i] = 1.1; - } - delete o[max]; - for (var i = 0; i < max; i++) { - assertEquals(1.1, o[i]); - } - assertEquals(undefined, o[max]); -})(); diff --git a/implementation-contributed/v8/mjsunit/deopt-global-accessor.js b/implementation-contributed/v8/mjsunit/deopt-global-accessor.js deleted file mode 100644 index 5c544a0fa0c..00000000000 --- a/implementation-contributed/v8/mjsunit/deopt-global-accessor.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -x = 1; -x = 2; -x = 3; - -function f() { - return x; -} - -f(); -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); - -Object.defineProperty(this, "x", {get:function() { return 100; }}); - -assertEquals(100, f()); diff --git a/implementation-contributed/v8/mjsunit/deopt-minus-zero.js b/implementation-contributed/v8/mjsunit/deopt-minus-zero.js deleted file mode 100644 index 38795afa333..00000000000 --- a/implementation-contributed/v8/mjsunit/deopt-minus-zero.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --opt - -function mul (a, b) { - return a * b; -} - -mul(-1, -1); -mul(0x80000001|0, -1); -mul(0x80000001|0, -1); -%OptimizeFunctionOnNextCall(mul); -mul(0, -1); -%OptimizeFunctionOnNextCall(mul); -mul(0, -1); - -assertOptimized(mul); -gc(); diff --git a/implementation-contributed/v8/mjsunit/deopt-recursive-eager-once.js b/implementation-contributed/v8/mjsunit/deopt-recursive-eager-once.js deleted file mode 100644 index 1b4e1550912..00000000000 --- a/implementation-contributed/v8/mjsunit/deopt-recursive-eager-once.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -function foo(i, deopt = false) { - if (i == 0) { - if (deopt) { - // Trigger an eager deopt. - %_DeoptimizeNow(); - } - } else { - foo(i - 1, deopt); - } -} - -assertEquals(0, %GetDeoptCount(foo)); - -foo(10); -foo(10); -%OptimizeFunctionOnNextCall(foo); -foo(10); - -assertOptimized(foo); -assertEquals(0, %GetDeoptCount(foo)); - -foo(10, true); - -assertUnoptimized(foo); -assertEquals(1, %GetDeoptCount(foo)); diff --git a/implementation-contributed/v8/mjsunit/deopt-recursive-lazy-once.js b/implementation-contributed/v8/mjsunit/deopt-recursive-lazy-once.js deleted file mode 100644 index f75dde7dc27..00000000000 --- a/implementation-contributed/v8/mjsunit/deopt-recursive-lazy-once.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -function foo(i, deopt = false) { - if (i == 0) { - if (deopt) { - // Trigger a lazy deopt. - %DeoptimizeNow(); - } - } else { - foo(i - 1, deopt); - } -} - -assertEquals(0, %GetDeoptCount(foo)); - -foo(10); -foo(10); -%OptimizeFunctionOnNextCall(foo); -foo(10); - -assertOptimized(foo); -assertEquals(0, %GetDeoptCount(foo)); - -foo(10, true); - -assertUnoptimized(foo); -assertEquals(1, %GetDeoptCount(foo)); diff --git a/implementation-contributed/v8/mjsunit/deopt-recursive-soft-once.js b/implementation-contributed/v8/mjsunit/deopt-recursive-soft-once.js deleted file mode 100644 index f2cadf2e54d..00000000000 --- a/implementation-contributed/v8/mjsunit/deopt-recursive-soft-once.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - - -function foo(i, deopt = false, deoptobj = null) { - if (i == 0) { - if (deopt) { - // Trigger a soft deopt. - deoptobj.bar(); - } - } else { - foo(i - 1, deopt, deoptobj); - } -} - -assertEquals(0, %GetDeoptCount(foo)); - -foo(10); -foo(10); -%OptimizeFunctionOnNextCall(foo); -foo(10); - -assertOptimized(foo); -assertEquals(0, %GetDeoptCount(foo)); - -foo(10, true, { bar: function(){} }); - -assertUnoptimized(foo); -// Soft deopts don't count to the deopt count. -assertEquals(0, %GetDeoptCount(foo)); diff --git a/implementation-contributed/v8/mjsunit/deopt-unlinked.js b/implementation-contributed/v8/mjsunit/deopt-unlinked.js deleted file mode 100644 index 1005737988c..00000000000 --- a/implementation-contributed/v8/mjsunit/deopt-unlinked.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -function foo() {} - -assertEquals(0, %GetDeoptCount(foo)); - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); - -assertOptimized(foo); -assertEquals(0, %GetDeoptCount(foo)); - -// Unlink the function. -%DeoptimizeFunction(foo); - -assertUnoptimized(foo); -assertEquals(1, %GetDeoptCount(foo)); - -foo(); - -assertUnoptimized(foo); -assertEquals(1, %GetDeoptCount(foo)); diff --git a/implementation-contributed/v8/mjsunit/deopt-with-fp-regs.js b/implementation-contributed/v8/mjsunit/deopt-with-fp-regs.js deleted file mode 100644 index bdb08053aed..00000000000 --- a/implementation-contributed/v8/mjsunit/deopt-with-fp-regs.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -deopt_trigger = 0; -side_effect = 0; - -function test(a, b, c, d, e, v) { - // This test expects some specific input values. - assertEquals(10.0, a); - assertEquals(20.0, b); - assertEquals(30.0, c); - assertEquals(40.0, d); - assertEquals(50.0, e); - assertEquals(1.5, v); - - // Perform a few double calculations. - a = a * 0.1; - b = b * 0.2; - c = c * 0.3; - d = d * 0.4; - e = e * 0.5; - - // Write to a field of a global object. As for any side effect, a HSimulate - // will be introduced after the instructions to support this. If we deopt - // later in this function, the execution will resume in full-codegen after - // this point. - side_effect++; - // The following field of the global object will be deleted to force a deopt. - // If we use type feedback to deopt, then tests ran with --stress-opt will - // not deopt after a few iteration. - // If we use %DeoptimizeFunction, all values will be on the frame due to the - // call and we will not exercise the translation mechanism handling fp - // registers. - deopt_trigger = v; - - // Do a few more calculations using the previous values after our deopt point - // so the floating point registers which hold those values are recorded in the - // environment and will be used during deoptimization. - a = a * v; - b = b * v; - c = c * v; - d = d * v; - e = e * v; - - // Check that we got the expected results. - assertEquals(1.5, a); - assertEquals(6, b); - assertEquals(13.5, c); - assertEquals(24, d); - assertEquals(37.5, e); -} - - -test(10.0, 20.0, 30.0, 40.0, 50.0, 1.5); -test(10.0, 20.0, 30.0, 40.0, 50.0, 1.5); -%OptimizeFunctionOnNextCall(test); -test(10.0, 20.0, 30.0, 40.0, 50.0, 1.5); -assertOptimized(test); - -// By deleting the field we are forcing the code to deopt when the field is -// read on next execution. -delete deopt_trigger; -test(10.0, 20.0, 30.0, 40.0, 50.0, 1.5); -assertUnoptimized(test); diff --git a/implementation-contributed/v8/mjsunit/deopt-with-outer-context.js b/implementation-contributed/v8/mjsunit/deopt-with-outer-context.js deleted file mode 100644 index 42a829d8538..00000000000 --- a/implementation-contributed/v8/mjsunit/deopt-with-outer-context.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function outer(y) { - function inner() { - var x = 10; - (function() { - // Access x from inner function to force it to be context allocated. - x = 20; - %DeoptimizeFunction(inner); - })(); - // Variable y should be read from the outer context. - return y; - }; - %OptimizeFunctionOnNextCall(inner); - return inner(); -} - -assertEquals(30, outer(30)); diff --git a/implementation-contributed/v8/mjsunit/deserialize-optimize-inner.js b/implementation-contributed/v8/mjsunit/deserialize-optimize-inner.js deleted file mode 100644 index ca78b8a4b0a..00000000000 --- a/implementation-contributed/v8/mjsunit/deserialize-optimize-inner.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --cache=code --no-lazy --opt - -function f(x, y) { return x + y; } - -assertEquals(1, f(0, 1)); -assertEquals(5, f(2, 3)); -%OptimizeFunctionOnNextCall(f); -assertEquals(9, f(4, 5)); -assertOptimized(f); diff --git a/implementation-contributed/v8/mjsunit/deserialize-reference.js b/implementation-contributed/v8/mjsunit/deserialize-reference.js deleted file mode 100644 index ac4979bd26f..00000000000 --- a/implementation-contributed/v8/mjsunit/deserialize-reference.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --cache=code - -var a = "123"; -assertEquals(a, "123"); diff --git a/implementation-contributed/v8/mjsunit/dictionary-properties.js b/implementation-contributed/v8/mjsunit/dictionary-properties.js deleted file mode 100644 index cffa48547e3..00000000000 --- a/implementation-contributed/v8/mjsunit/dictionary-properties.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test loading existent and nonexistent properties from dictionary -// mode objects. - -function SlowObject() { - this.foo = 1; - this.bar = 2; - this.qux = 3; - this.z = 4; - delete this.qux; - assertFalse(%HasFastProperties(this)); -} -function SlowObjectWithBaz() { - var o = new SlowObject(); - o.baz = 4; - return o; -} - -function Load(o) { - return o.baz; -} - -for (var i = 0; i < 10; i++) { - var o1 = new SlowObject(); - var o2 = SlowObjectWithBaz(); - assertEquals(undefined, Load(o1)); - assertEquals(4, Load(o2)); -} - -// Test objects getting optimized as fast prototypes. - -function SlowPrototype() { - this.foo = 1; -} -SlowPrototype.prototype.bar = 2; -SlowPrototype.prototype.baz = 3; -SlowPrototype.prototype.z = 4; -delete SlowPrototype.prototype.baz; -assertFalse(%HasFastProperties(SlowPrototype.prototype)); -var slow_proto = new SlowPrototype; -// ICs make prototypes fast. -function ic() { return slow_proto.bar; } -ic(); -ic(); -assertTrue(%HasFastProperties(slow_proto.__proto__)); - -// Prototypes stay fast even after deleting properties. -assertTrue(%HasFastProperties(SlowPrototype.prototype)); -var fast_proto = new SlowPrototype(); -assertTrue(%HasFastProperties(SlowPrototype.prototype)); -assertTrue(%HasFastProperties(fast_proto.__proto__)); diff --git a/implementation-contributed/v8/mjsunit/dictionary-prototypes.js b/implementation-contributed/v8/mjsunit/dictionary-prototypes.js deleted file mode 100644 index 109f8d42a63..00000000000 --- a/implementation-contributed/v8/mjsunit/dictionary-prototypes.js +++ /dev/null @@ -1,409 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function EnsureDictionaryMode(obj, properties=1500) { - for (let i = 0; i < properties; i++) { - obj["x" + i] = 0; - } - assertFalse(%HasFastProperties(obj)); -} - -function EnsureAlmostDictionaryMode(obj) { - for (let i = 0; i < 1020; i++) { - obj["x" + i] = 0; - } -} - -function TestAddingPropertyToDictionaryPrototype() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - EnsureDictionaryMode(Bar.prototype); - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a dictionary-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - // The UNINITIALIZED -> PREMONOMORPHIC transition of StoreIC should - // properly invalidate prototype chains. - Bar.prototype.func = function() { ++bar_func_called; } - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToDictionaryPrototype(); - -// Same as TestAddingPropertyToDictionaryPrototype, but using o["foo"] access -// instead of o.foo. -function TestAddingPropertyToDictionaryPrototype2() { - let foo_func_called = 0; - let bar_func_called = 0; - let name = "func"; - - function Foo() {} - Foo.prototype[name] = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - EnsureDictionaryMode(Bar.prototype); - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o[name](); - - // Add the property to Bar which is a dictionary-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - // The UNINITIALIZED -> PREMONOMORPHIC transition of KeyedStoreIC should - // properly invalidate prototype chains. - Bar.prototype[name] = function() { ++bar_func_called; } - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToDictionaryPrototype2(); - -function TestAddingPropertyToDictionaryPrototype_DefineProperty() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - EnsureDictionaryMode(Bar.prototype); - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a dictionary-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - // The runtime should properly invalidate prototype chains. - Object.defineProperty(Bar.prototype, "func", {value: function() { ++bar_func_called; }}); - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToDictionaryPrototype_DefineProperty(); - -function TestAddingPropertyToDictionaryPrototype_DictionaryAddSlowPath() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - // The magic number ensures that the next addition to the dictionary will - // trigger the slow path. - EnsureDictionaryMode(Bar.prototype, 2731); - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a dictionary-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - // -> slow path for dictionary add - Bar.prototype.func = function() { ++bar_func_called; } - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToDictionaryPrototype_DictionaryAddSlowPath(); - -function TestAddingAccessorPropertyToDictionaryPrototype() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - EnsureDictionaryMode(Bar.prototype); - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a dictionary-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - Object.defineProperty(Bar.prototype, "func", - {get: function() { return function() { ++bar_func_called; }}}); - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingAccessorPropertyToDictionaryPrototype(); - -function TestRemovingPropertyFromDictionaryPrototype() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - EnsureDictionaryMode(Bar.prototype); - Bar.prototype.func = function() { ++bar_func_called; } - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Bar. - o.func(); - - // Remove the property from Bar which is a dictionary-mode prototype between - // o and Foo. In the next iteration, it's looked up from Foo. - if (i == 9) { - delete Bar.prototype.func; - } - } - - assertEquals(1, foo_func_called); - assertEquals(10, bar_func_called); -} - -TestRemovingPropertyFromDictionaryPrototype(); - -// Same as TestRemovingPropertyFromDictionaryPrototype, but using o["foo"] access -// instead of o.foo. -function TestRemovingPropertyFromDictionaryPrototype2() { - let foo_func_called = 0; - let bar_func_called = 0; - let name = "func"; - - function Foo() {} - Foo.prototype[name] = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - EnsureDictionaryMode(Bar.prototype); - Bar.prototype[name] = function() { ++bar_func_called; } - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Bar. - o[name](); - - // Remove the property from Bar which is a dictionary-mode prototype between - // o and Foo. In the next iteration, it's looked up from Foo. - if (i == 9) { - delete Bar.prototype[name]; - } - } - - assertEquals(1, foo_func_called); - assertEquals(10, bar_func_called); -} - -TestRemovingPropertyFromDictionaryPrototype2(); - -function TestAddingPropertyToDictionaryPrototype_Monomorphic() { - function DoMonomorphicStoreToPrototype(p, f, do_delete=true) { - p.func = f; - if (do_delete) { - delete p.func; - } - } - - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - EnsureDictionaryMode(Bar.prototype); - - function bar_func() { - ++bar_func_called; - } - DoMonomorphicStoreToPrototype(Bar.prototype, bar_func); - DoMonomorphicStoreToPrototype(Bar.prototype, bar_func); - DoMonomorphicStoreToPrototype(Bar.prototype, bar_func); - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a dictionary-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - DoMonomorphicStoreToPrototype(Bar.prototype, bar_func, false); - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToDictionaryPrototype_Monomorphic(); - -function TestAddingKeyedPropertyToDictionaryPrototype_Monomorphic() { - function DoMonomorphicKeyedStoreToPrototype(p, name, f, do_delete=true) { - p[name] = f; - if (do_delete) { - delete p[name]; - } - } - - let foo_func_called = 0; - let bar_func_called = 0; - let name = "func"; - - function Foo() {} - Foo.prototype[name] = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - EnsureDictionaryMode(Bar.prototype); - - function bar_func() { - ++bar_func_called; - } - DoMonomorphicKeyedStoreToPrototype(Bar.prototype, name, bar_func); - DoMonomorphicKeyedStoreToPrototype(Bar.prototype, name, bar_func); - DoMonomorphicKeyedStoreToPrototype(Bar.prototype, name, bar_func); - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a dictionary-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - DoMonomorphicKeyedStoreToPrototype(Bar.prototype, name, bar_func, false); - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingKeyedPropertyToDictionaryPrototype_Monomorphic(); - -// Like TestAddingPropertyToDictionaryPrototype, except that the prototype isn't -// in dictionary mode yet, but turns to dictionary mode after the interesting -// property is added. -function TestAddingPropertyToAlmostDictionaryPrototype() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - function Bar() {} - Bar.prototype = Object.create(Foo.prototype); - EnsureAlmostDictionaryMode(Bar.prototype); - - let o = new Bar(); - for (let i = 0; i < 2; ++i) { - o.x0; - } - assertTrue(%HasFastProperties(Bar.prototype)); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which will now turn permanently into dictionary - // mode. In the next iteration, it's looked up from Bar. - if (i == 9) { - Bar.prototype.func = function() { ++bar_func_called; } - assertFalse(%HasFastProperties(Bar.prototype)); - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToAlmostDictionaryPrototype(); - -function TestReconfiguringDataToAccessor() { - let setter_called = 0; - - function Bar() {} - EnsureDictionaryMode(Bar.prototype); - let name = "prop"; - Object.defineProperty(Bar.prototype, name, - {value: 1000, writable: true, configurable: true}); - - for (let i = 0; i < 11; ++i) { - let obj1 = new Bar(); - if (i < 10) { - assertEquals(1000, obj1.prop); - } else { - assertEquals(3000, obj1.prop); - } - - // Add the property into the object. - obj1.prop = 2000; - if (i < 10) { - assertEquals(2000, obj1.prop); - } else { - assertEquals(3000, obj1.prop); - } - - // Make "prop" an accessor property in the prototype. - if (i == 9) { - Object.defineProperty(Bar.prototype, name, - {get: () => 3000, - set: function(val) { ++setter_called; }}); - } - } - assertEquals(1, setter_called); -} - -TestReconfiguringDataToAccessor(); diff --git a/implementation-contributed/v8/mjsunit/disallow-codegen-from-strings.js b/implementation-contributed/v8/mjsunit/disallow-codegen-from-strings.js deleted file mode 100644 index 30d1b967d5f..00000000000 --- a/implementation-contributed/v8/mjsunit/disallow-codegen-from-strings.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --disallow-code-generation-from-strings - -assertThrows("1 + 1", EvalError); -assertThrows(() => eval("1 + 1"), EvalError); -assertThrows(() => Function("x", "return x + 1"), EvalError); diff --git a/implementation-contributed/v8/mjsunit/div-mod.js b/implementation-contributed/v8/mjsunit/div-mod.js deleted file mode 100644 index 08cee8cdd14..00000000000 --- a/implementation-contributed/v8/mjsunit/div-mod.js +++ /dev/null @@ -1,310 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test fast div and mod. - -function divmod(div_func, mod_func, x, y) { - var div_answer = (div_func)(x); - assertEquals(x / y, div_answer, x + "/" + y); - var mod_answer = (mod_func)(x); - assertEquals(x % y, mod_answer, x + "%" + y); - var minus_div_answer = (div_func)(-x); - assertEquals(-x / y, minus_div_answer, "-" + x + "/" + y); - var minus_mod_answer = (mod_func)(-x); - assertEquals(-x % y, minus_mod_answer, "-" + x + "%" + y); -} - - -function run_tests_for(divisor) { - print("(function(left) { return left / " + divisor + "; })"); - var div_func = this.eval("(function(left) { return left / " + divisor + "; })"); - var mod_func = this.eval("(function(left) { return left % " + divisor + "; })"); - var exp; - // Strange number test. - divmod(div_func, mod_func, 0, divisor); - divmod(div_func, mod_func, 1 / 0, divisor); - // Floating point number test. - for (exp = -1024; exp <= 1024; exp += 8) { - divmod(div_func, mod_func, Math.pow(2, exp), divisor); - divmod(div_func, mod_func, 0.9999999 * Math.pow(2, exp), divisor); - divmod(div_func, mod_func, 1.0000001 * Math.pow(2, exp), divisor); - } - // Integer number test. - for (exp = 0; exp <= 32; exp++) { - divmod(div_func, mod_func, 1 << exp, divisor); - divmod(div_func, mod_func, (1 << exp) + 1, divisor); - divmod(div_func, mod_func, (1 << exp) - 1, divisor); - } - divmod(div_func, mod_func, Math.floor(0x1fffffff / 3), divisor); - divmod(div_func, mod_func, Math.floor(-0x20000000 / 3), divisor); -} - - -var divisors = [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 0x1000000, - 0x40000000, - 12, - 60, - 100, - 1000 * 60 * 60 * 24]; - -for (var i = 0; i < divisors.length; i++) { - run_tests_for(divisors[i]); -} - -// Test extreme corner cases of modulo. - -// Computes the modulo by slow but lossless operations. -function compute_mod(dividend, divisor) { - // Return NaN if either operand is NaN, if divisor is 0 or - // dividend is an infinity. Return dividend if divisor is an infinity. - if (isNaN(dividend) || isNaN(divisor) || divisor == 0) { return NaN; } - var sign = 1; - if (dividend < 0) { dividend = -dividend; sign = -1; } - if (dividend == Infinity) { return NaN; } - if (divisor < 0) { divisor = -divisor; } - if (divisor == Infinity) { return sign * dividend; } - function rec_mod(a, b) { - // Subtracts maximal possible multiplum of b from a. - if (a >= b) { - a = rec_mod(a, 2 * b); - if (a >= b) { a -= b; } - } - return a; - } - return sign * rec_mod(dividend, divisor); -} - -(function () { - var large_non_smi = 1234567891234.12245; - var small_non_smi = 43.2367243; - var repeating_decimal = 0.3; - var finite_decimal = 0.5; - var smi = 43; - var power_of_two = 64; - var min_normal = Number.MIN_VALUE * Math.pow(2, 52); - var max_denormal = Number.MIN_VALUE * (Math.pow(2, 52) - 1); - - // All combinations of NaN, Infinity, normal, denormal and zero. - var example_numbers = [ - NaN, - 0, - - // Due to a bug in fmod(), modulos involving denormals - // return the wrong result for glibc <= 2.16. - // Details: http://sourceware.org/bugzilla/show_bug.cgi?id=14048 - - Number.MIN_VALUE, - 3 * Number.MIN_VALUE, - max_denormal, - - min_normal, - repeating_decimal, - finite_decimal, - smi, - power_of_two, - small_non_smi, - large_non_smi, - Number.MAX_VALUE, - Infinity - ]; - - function doTest(a, b) { - var exp = compute_mod(a, b); - var act = a % b; - assertEquals(exp, act, a + " % " + b); - } - - for (var i = 0; i < example_numbers.length; i++) { - for (var j = 0; j < example_numbers.length; j++) { - var a = example_numbers[i]; - var b = example_numbers[j]; - doTest(a,b); - doTest(-a,b); - doTest(a,-b); - doTest(-a,-b); - } - } -})(); - - -(function () { - // Edge cases - var zero = 0; - var minsmi32 = -0x40000000; - var minsmi64 = -0x80000000; - var somenum = 3532; - assertEquals(-0, zero / -1, "0 / -1"); - assertEquals(1, minsmi32 / -0x40000000, "minsmi/minsmi-32"); - assertEquals(1, minsmi64 / -0x80000000, "minsmi/minsmi-64"); - assertEquals(somenum, somenum % -0x40000000, "%minsmi-32"); - assertEquals(somenum, somenum % -0x80000000, "%minsmi-64"); -})(); - - -// Side-effect-free expressions containing bit operations use -// an optimized compiler with int32 values. Ensure that modulus -// produces negative zeros correctly. -function negative_zero_modulus_test() { - var x = 4; - var y = -4; - x = x + x - x; - y = y + y - y; - var z = (y | y | y | y) % x; - assertEquals(-1 / 0, 1 / z); - z = (x | x | x | x) % x; - assertEquals(1 / 0, 1 / z); - z = (y | y | y | y) % y; - assertEquals(-1 / 0, 1 / z); - z = (x | x | x | x) % y; - assertEquals(1 / 0, 1 / z); -} - -negative_zero_modulus_test(); - - -function lithium_integer_mod() { - var left_operands = [ - 0, - 305419896, // 0x12345678 - ]; - - // Test the standard lithium code for modulo opeartions. - var mod_func; - for (var i = 0; i < left_operands.length; i++) { - for (var j = 0; j < divisors.length; j++) { - mod_func = this.eval("(function(left) { return left % " + divisors[j]+ "; })"); - assertEquals((mod_func)(left_operands[i]), left_operands[i] % divisors[j]); - assertEquals((mod_func)(-left_operands[i]), -left_operands[i] % divisors[j]); - } - } - - var results_powers_of_two = [ - // 0 - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - // 305419896 == 0x12345678 - [0, 0, 0, 8, 24, 56, 120, 120, 120, 632, 1656, 1656, 5752, 5752, 22136, 22136, 22136, 22136, 284280, 284280, 1332856, 3430008, 3430008, 3430008, 3430008, 36984440, 36984440, 36984440, 305419896, 305419896, 305419896], - ]; - - // Test the lithium code for modulo operations with a variable power of two - // right hand side operand. - for (var i = 0; i < left_operands.length; i++) { - for (var j = 0; j < 31; j++) { - assertEquals(results_powers_of_two[i][j], left_operands[i] % (2 << j)); - assertEquals(results_powers_of_two[i][j], left_operands[i] % -(2 << j)); - assertEquals(-results_powers_of_two[i][j], -left_operands[i] % (2 << j)); - assertEquals(-results_powers_of_two[i][j], -left_operands[i] % -(2 << j)); - } - } - - // Test the lithium code for modulo operations with a constant power of two - // right hand side operand. - for (var i = 0; i < left_operands.length; i++) { - // With positive left hand side operand. - assertEquals(results_powers_of_two[i][0], left_operands[i] % -(2 << 0)); - assertEquals(results_powers_of_two[i][1], left_operands[i] % (2 << 1)); - assertEquals(results_powers_of_two[i][2], left_operands[i] % -(2 << 2)); - assertEquals(results_powers_of_two[i][3], left_operands[i] % (2 << 3)); - assertEquals(results_powers_of_two[i][4], left_operands[i] % -(2 << 4)); - assertEquals(results_powers_of_two[i][5], left_operands[i] % (2 << 5)); - assertEquals(results_powers_of_two[i][6], left_operands[i] % -(2 << 6)); - assertEquals(results_powers_of_two[i][7], left_operands[i] % (2 << 7)); - assertEquals(results_powers_of_two[i][8], left_operands[i] % -(2 << 8)); - assertEquals(results_powers_of_two[i][9], left_operands[i] % (2 << 9)); - assertEquals(results_powers_of_two[i][10], left_operands[i] % -(2 << 10)); - assertEquals(results_powers_of_two[i][11], left_operands[i] % (2 << 11)); - assertEquals(results_powers_of_two[i][12], left_operands[i] % -(2 << 12)); - assertEquals(results_powers_of_two[i][13], left_operands[i] % (2 << 13)); - assertEquals(results_powers_of_two[i][14], left_operands[i] % -(2 << 14)); - assertEquals(results_powers_of_two[i][15], left_operands[i] % (2 << 15)); - assertEquals(results_powers_of_two[i][16], left_operands[i] % -(2 << 16)); - assertEquals(results_powers_of_two[i][17], left_operands[i] % (2 << 17)); - assertEquals(results_powers_of_two[i][18], left_operands[i] % -(2 << 18)); - assertEquals(results_powers_of_two[i][19], left_operands[i] % (2 << 19)); - assertEquals(results_powers_of_two[i][20], left_operands[i] % -(2 << 20)); - assertEquals(results_powers_of_two[i][21], left_operands[i] % (2 << 21)); - assertEquals(results_powers_of_two[i][22], left_operands[i] % -(2 << 22)); - assertEquals(results_powers_of_two[i][23], left_operands[i] % (2 << 23)); - assertEquals(results_powers_of_two[i][24], left_operands[i] % -(2 << 24)); - assertEquals(results_powers_of_two[i][25], left_operands[i] % (2 << 25)); - assertEquals(results_powers_of_two[i][26], left_operands[i] % -(2 << 26)); - assertEquals(results_powers_of_two[i][27], left_operands[i] % (2 << 27)); - assertEquals(results_powers_of_two[i][28], left_operands[i] % -(2 << 28)); - assertEquals(results_powers_of_two[i][29], left_operands[i] % (2 << 29)); - assertEquals(results_powers_of_two[i][30], left_operands[i] % -(2 << 30)); - // With negative left hand side operand. - assertEquals(-results_powers_of_two[i][0], -left_operands[i] % -(2 << 0)); - assertEquals(-results_powers_of_two[i][1], -left_operands[i] % (2 << 1)); - assertEquals(-results_powers_of_two[i][2], -left_operands[i] % -(2 << 2)); - assertEquals(-results_powers_of_two[i][3], -left_operands[i] % (2 << 3)); - assertEquals(-results_powers_of_two[i][4], -left_operands[i] % -(2 << 4)); - assertEquals(-results_powers_of_two[i][5], -left_operands[i] % (2 << 5)); - assertEquals(-results_powers_of_two[i][6], -left_operands[i] % -(2 << 6)); - assertEquals(-results_powers_of_two[i][7], -left_operands[i] % (2 << 7)); - assertEquals(-results_powers_of_two[i][8], -left_operands[i] % -(2 << 8)); - assertEquals(-results_powers_of_two[i][9], -left_operands[i] % (2 << 9)); - assertEquals(-results_powers_of_two[i][10], -left_operands[i] % -(2 << 10)); - assertEquals(-results_powers_of_two[i][11], -left_operands[i] % (2 << 11)); - assertEquals(-results_powers_of_two[i][12], -left_operands[i] % -(2 << 12)); - assertEquals(-results_powers_of_two[i][13], -left_operands[i] % (2 << 13)); - assertEquals(-results_powers_of_two[i][14], -left_operands[i] % -(2 << 14)); - assertEquals(-results_powers_of_two[i][15], -left_operands[i] % (2 << 15)); - assertEquals(-results_powers_of_two[i][16], -left_operands[i] % -(2 << 16)); - assertEquals(-results_powers_of_two[i][17], -left_operands[i] % (2 << 17)); - assertEquals(-results_powers_of_two[i][18], -left_operands[i] % -(2 << 18)); - assertEquals(-results_powers_of_two[i][19], -left_operands[i] % (2 << 19)); - assertEquals(-results_powers_of_two[i][20], -left_operands[i] % -(2 << 20)); - assertEquals(-results_powers_of_two[i][21], -left_operands[i] % (2 << 21)); - assertEquals(-results_powers_of_two[i][22], -left_operands[i] % -(2 << 22)); - assertEquals(-results_powers_of_two[i][23], -left_operands[i] % (2 << 23)); - assertEquals(-results_powers_of_two[i][24], -left_operands[i] % -(2 << 24)); - assertEquals(-results_powers_of_two[i][25], -left_operands[i] % (2 << 25)); - assertEquals(-results_powers_of_two[i][26], -left_operands[i] % -(2 << 26)); - assertEquals(-results_powers_of_two[i][27], -left_operands[i] % (2 << 27)); - assertEquals(-results_powers_of_two[i][28], -left_operands[i] % -(2 << 28)); - assertEquals(-results_powers_of_two[i][29], -left_operands[i] % (2 << 29)); - assertEquals(-results_powers_of_two[i][30], -left_operands[i] % -(2 << 30)); - } - -} - -lithium_integer_mod(); -%OptimizeFunctionOnNextCall(lithium_integer_mod) -lithium_integer_mod(); diff --git a/implementation-contributed/v8/mjsunit/div-mul-minus-one.js b/implementation-contributed/v8/mjsunit/div-mul-minus-one.js deleted file mode 100644 index 71ad299610e..00000000000 --- a/implementation-contributed/v8/mjsunit/div-mul-minus-one.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -function div(g) { - return (g/-1) ^ 1 -} - -var kMinInt = 1 << 31; -var expected_MinInt = div(kMinInt); -var expected_minus_zero = div(0); -%OptimizeFunctionOnNextCall(div); -assertEquals(expected_MinInt, div(kMinInt)); -assertEquals(expected_minus_zero , div(0)); - -function mul(g) { - return (g * -1) ^ 1 -} - -expected_MinInt = mul(kMinInt); -expected_minus_zero = mul(0); -%OptimizeFunctionOnNextCall(mul); -assertEquals(expected_MinInt, mul(kMinInt)); -assertOptimized(mul); -assertEquals(expected_minus_zero , mul(0)); -assertOptimized(mul); diff --git a/implementation-contributed/v8/mjsunit/do-not-strip-fc.js b/implementation-contributed/v8/mjsunit/do-not-strip-fc.js deleted file mode 100644 index 1aef28cb62d..00000000000 --- a/implementation-contributed/v8/mjsunit/do-not-strip-fc.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure we do not remove unicode format-control characters -// from string literals. -assertEquals(7, eval("'foo\u200dbar'").length); -assertEquals(7, eval("'foo\u200cbar'").length); diff --git a/implementation-contributed/v8/mjsunit/dont-enum-array-holes.js b/implementation-contributed/v8/mjsunit/dont-enum-array-holes.js deleted file mode 100644 index 4761dc4ea01..00000000000 --- a/implementation-contributed/v8/mjsunit/dont-enum-array-holes.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Do not enum holes in arrays. -var count = 0; -for (var i in [,1,,3]) count++; -assertEquals(2, count); - -count = 0; -for (var i in new Array(10)) count++; -assertEquals(0, count); diff --git a/implementation-contributed/v8/mjsunit/dont-reinit-global-var.js b/implementation-contributed/v8/mjsunit/dont-reinit-global-var.js deleted file mode 100644 index 1e3c1a01a79..00000000000 --- a/implementation-contributed/v8/mjsunit/dont-reinit-global-var.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var foo = 'fisk'; -assertEquals('fisk', foo); -var foo; -assertEquals('fisk', foo); -var foo = 'hest'; -assertEquals('hest', foo); - -this.bar = 'fisk'; -assertEquals('fisk', bar); -var bar; -assertEquals('fisk', bar); -var bar = 'hest'; -assertEquals('hest', bar); - -this.baz = 'fisk'; -assertEquals('fisk', baz); -eval('var baz;'); -assertEquals('fisk', baz); -eval('var baz = "hest";'); -assertEquals('hest', baz); diff --git a/implementation-contributed/v8/mjsunit/double-equals.js b/implementation-contributed/v8/mjsunit/double-equals.js deleted file mode 100644 index 5f8bea380e3..00000000000 --- a/implementation-contributed/v8/mjsunit/double-equals.js +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * This test uses assert{True,False}(... == ...) instead of - * assertEquals(..., ...) to not rely on the details of the - * implementation of assertEquals. - */ - -function testEqual(a, b) { - assertTrue(a == b); - assertTrue(b == a); - assertFalse(a != b); - assertFalse(b != a); -} - -function testNotEqual(a, b) { - assertFalse(a == b); - assertFalse(b == a); - assertTrue(a != b); - assertTrue(b != a); -} - -// Object where ToPrimitive returns value. -function Wrapper(value) { - this.value = value; - this.valueOf = function () { return this.value; }; -} - -// Object where ToPrimitive returns value by failover to toString when -// valueOf isn't a function. -function Wrapper2(value) { - this.value = value; - this.valueOf = null; - this.toString = function () { return this.value; }; -} - - -// Compare values of same type. - -// Numbers are equal if same, unless NaN, which isn't equal to anything, and -// +/-0 being equal. - -testNotEqual(NaN, NaN); -testNotEqual(NaN, 0); -testNotEqual(NaN, Infinity); - -testEqual(Number.MAX_VALUE, Number.MAX_VALUE); -testEqual(Number.MIN_VALUE, Number.MIN_VALUE); -testEqual(Infinity, Infinity); -testEqual(-Infinity, -Infinity); - -testEqual(0, 0); -testEqual(0, -0); -testEqual(-0, -0); - -testNotEqual(0.9, 1); -testNotEqual(0.999999, 1); -testNotEqual(0.9999999999, 1); -testNotEqual(0.9999999999999, 1); - -// Strings are equal if containing the same code points. - -testEqual('hello', 'hello'); -testEqual('hello', 'hel' + 'lo'); -testEqual('', ''); -testEqual('\u0020\x20', ' '); // Escapes are not part of the value. - -// Booleans are equal if they are the same. - -testEqual(true, true); -testEqual(false, false); -testNotEqual(true, false); - -// Null and undefined are equal to themselves. - -testEqual(null, null); -testEqual(undefined, undefined); - -// Objects are equal if they are the same object only. - -testEqual(Math, Math); -testEqual(Object.prototype, Object.prototype); - - -(function () { - var x = new Wrapper(null); - var y = x, z = x; - testEqual(y, x); -})(); - -(function () { - var x = new Boolean(true); - var y = x, z = x; - testEqual(y, x); -})(); - -(function () { - var x = new Boolean(false); - var y = x, z = x; - testEqual(y, x); -})(); - -// Test comparing values of different types. - -// Null and undefined are equal to each-other, and to nothing else. -testEqual(null, undefined); -testEqual(undefined, null); - -testNotEqual(null, new Wrapper(null)); -testNotEqual(null, 0); -testNotEqual(null, false); -testNotEqual(null, ""); -testNotEqual(null, new Object()); -testNotEqual(undefined, new Wrapper(undefined)); -testNotEqual(undefined, 0); -testNotEqual(undefined, false); -testNotEqual(undefined, ""); -testNotEqual(undefined, new Object()); - -// Numbers compared to Strings will convert the string to a number using -// the internal ToNumber conversion. - -testEqual(1, '1'); -testEqual(255, '0xff'); -testEqual(0, '\r'); // ToNumber ignores tailing and trailing whitespace. -testEqual(1e19, '1e19'); -testEqual(Infinity, "Infinity"); - -// Booleans compared to anything else will be converted to numbers. -testEqual(false, 0); -testEqual(true, 1); -testEqual(false, "0"); // String also converted to number. -testEqual(true, "1"); - -// Objects compared to Number or String (or Boolean, since that's converted -// to Number too) is converted to primitive using ToPrimitive with NO HINT. -// Having no hint means Date gets a string hint, and everything else gets -// a number hint. - -testEqual(new Boolean(true), true); -testEqual(new Boolean(true), 1); // First to primtive boolean, then to number. -testEqual(new Boolean(false), false); -testEqual(new Boolean(false), 0); - -testEqual(new Wrapper(true), true); -testEqual(new Wrapper(true), 1); -testEqual(new Wrapper(false), false); -testEqual(new Wrapper(false), 0); - -testEqual(new Wrapper2(true), true); -testEqual(new Wrapper2(true), 1); -testEqual(new Wrapper2(false), false); -testEqual(new Wrapper2(false), 0); - -testEqual(new Number(1), true); -testEqual(new Number(1), 1); -testEqual(new Number(0), false); -testEqual(new Number(0), 0); - -// Date objects convert to string, not number (and the string does not -// convert to the number). -testEqual(new Date(42), String(new Date(42))); -testNotEqual(new Date(42), Number(new Date(42))); -var dnow = new Date(); -testEqual(dnow, dnow); -testEqual(dnow, String(dnow)); -testNotEqual(dnow, Number(dnow)); - -// Doesn't just call toString, but uses ToPrimitive which tries toString first -// and valueOf second. -dnow.toString = null; -testEqual(dnow, Number(dnow)); -dnow.valueOf = function () { return "42"; }; -testEqual(dnow, 42); -dnow.toString = function () { return "1"; }; -testEqual(dnow, true); - - -// Objects compared to other objects, or to null and undefined, are not -// converted to primitive. -testNotEqual(new Wrapper(null), new Wrapper(null)); -testNotEqual(new Boolean(true), new Boolean(true)); -testNotEqual(new Boolean(false), new Boolean(false)); -testNotEqual(new String("a"), new String("a")); -testNotEqual(new Number(42), new Number(42)); -testNotEqual(new Date(42), new Date(42)); -testNotEqual(new Array(42), new Array(42)); -testNotEqual(new Object(), new Object()); - -// Object that can't be converted to primitive. -var badObject = { - valueOf: null, - toString: function() { - return this; // Not primitive. - } -}; - -testEqual(badObject, badObject); -testNotEqual(badObject, {}); -testNotEqual(badObject, null); -testNotEqual(badObject, undefined); -// Forcing conversion will throw. -function testBadConversion(value) { - assertThrows(function() { return badObject == value; }); - assertThrows(function() { return badObject != value; }); - assertThrows(function() { return value == badObject; }); - assertThrows(function() { return value != badObject; }); -} -testBadConversion(0); -testBadConversion("string"); -testBadConversion(true); - -var s = Symbol(); -testEqual(s, s); -testEqual(Object(s), s); -testEqual(new Wrapper(s), s); -testNotEqual(Object(s), Object(s)); diff --git a/implementation-contributed/v8/mjsunit/double-truncation.js b/implementation-contributed/v8/mjsunit/double-truncation.js deleted file mode 100644 index b43e1e6c635..00000000000 --- a/implementation-contributed/v8/mjsunit/double-truncation.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function RunOneTruncationTest(a, b) { - var temp = a | 0; - assertEquals(b, temp); -} - -function RunAllTruncationTests() { - RunOneTruncationTest(0, 0); - RunOneTruncationTest(0.5, 0); - RunOneTruncationTest(-0.5, 0); - RunOneTruncationTest(1.5, 1); - RunOneTruncationTest(-1.5, -1); - RunOneTruncationTest(5.5, 5); - RunOneTruncationTest(-5.0, -5); - RunOneTruncationTest(NaN, 0); - RunOneTruncationTest(Infinity, 0); - RunOneTruncationTest(-NaN, 0); - RunOneTruncationTest(-Infinity, 0); - - RunOneTruncationTest(4.5036e+15, 0x1635E000); - RunOneTruncationTest(-4.5036e+15, -372629504); - - RunOneTruncationTest(4503603922337791.0, -1); - RunOneTruncationTest(-4503603922337791.0, 1); - RunOneTruncationTest(4503601774854143.0, 2147483647); - RunOneTruncationTest(-4503601774854143.0, -2147483647); - RunOneTruncationTest(9007207844675582.0, -2); - RunOneTruncationTest(-9007207844675582.0, 2); - - RunOneTruncationTest(2.4178527921507624e+24, -536870912); - RunOneTruncationTest(-2.4178527921507624e+24, 536870912); - RunOneTruncationTest(2.417853945072267e+24, -536870912); - RunOneTruncationTest(-2.417853945072267e+24, 536870912); - - RunOneTruncationTest(4.8357055843015248e+24, -1073741824); - RunOneTruncationTest(-4.8357055843015248e+24, 1073741824); - RunOneTruncationTest(4.8357078901445341e+24, -1073741824); - RunOneTruncationTest(-4.8357078901445341e+24, 1073741824); - - RunOneTruncationTest(9.6714111686030497e+24, -2147483648); - RunOneTruncationTest(-9.6714111686030497e+24, -2147483648); - RunOneTruncationTest(9.6714157802890681e+24, -2147483648); - RunOneTruncationTest(-9.6714157802890681e+24, -2147483648); -} - -RunAllTruncationTests(); -RunAllTruncationTests(); -%OptimizeFunctionOnNextCall(RunOneTruncationTest); -RunAllTruncationTests(); -RunAllTruncationTests(); diff --git a/implementation-contributed/v8/mjsunit/dtoa.js b/implementation-contributed/v8/mjsunit/dtoa.js deleted file mode 100644 index 80167b78b19..00000000000 --- a/implementation-contributed/v8/mjsunit/dtoa.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// dtoa.c used to contain a bogus assertions that got triggered when -// passed very small numbers. This test therefore used to fail in -// debug mode. - -assertEquals(0, 1e-500); diff --git a/implementation-contributed/v8/mjsunit/duplicate-parameters.js b/implementation-contributed/v8/mjsunit/duplicate-parameters.js deleted file mode 100644 index 65301285568..00000000000 --- a/implementation-contributed/v8/mjsunit/duplicate-parameters.js +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* -- Duplicate parameters are allowed for - - non-arrow functions which are not conscise methods *and* - - when the parameter list is simple *and* - - we're in sloppy mode (incl. the function doesn't declare itself strict). -*/ - -function assertDuplicateParametersError(code) { - caught = false; - try { - eval(code); - } catch(e) { - // Assert that it's the duplicate parameters error, and e.g,. not a syntax - // error because of a typo in the test. - assertTrue(e.message.startsWith("Duplicate parameter name not allowed")); - caught = true; - } finally { - assertTrue(caught); - } -} - -FunctionType = { - NORMAL : 0, - ARROW : 1, - METHOD : 2, - CONCISE_METHOD : 3, -}; - -Laziness = { - EAGER : 0, - LAZY_BOUNDARY : 1, - LAZY : 2 -}; - -Strictness = { - SLOPPY : 0, - STRICT : 1, - STRICT_FUNCTION : 2 -}; - -function testHelper(type, strict, lazy, duplicate_params_string, ok) { - code = "" - strict_inside = ""; - if (strict == Strictness.STRICT) { - code = "'use strict'; "; - } else if (strict == Strictness.STRICT_FUNCTION) { - strict_inside = "'use strict'; "; - } else { - assertEquals(strict, Strictness.SLOPPY); - } - - if (type == FunctionType.NORMAL) { - if (lazy == Laziness.EAGER) { - code += "(function foo(" + duplicate_params_string + ") { " + strict_inside + "})"; - } else if (lazy == Laziness.LAZY_BOUNDARY) { - code += "function foo(" + duplicate_params_string + ") { " + strict_inside + "}"; - } else if (lazy == Laziness.LAZY) { - code += 'function lazy() { function foo(' + duplicate_params_string + - ') { ' + strict_inside + '} }'; - } else { - assertUnreachable(); - } - } else if (type == FunctionType.ARROW) { - if (lazy == Laziness.EAGER) { - // Force an arrow function to be eager by making its body trivial. - assertEquals(strict, Strictness.SLOPPY); - code += "(" + duplicate_params_string + ") => 1"; - } else if (lazy == Laziness.LAZY_BOUNDARY) { - // Duplicate parameters in non-simple parameter lists are not recognized - // at the laziness boundary, when the lazy function is an arrow - // function. Hack around this by calling the function. See - // https://bugs.chromium.org/p/v8/issues/detail?id=6108. - let simple = /^[a-z, ]*$/.test(duplicate_params_string); - if (simple) { - code += "(" + duplicate_params_string + ") => { " + strict_inside + "};"; - } else { - code += "let foo = (" + duplicate_params_string + ") => { " + strict_inside + "}; foo();"; - } - } else if (lazy == Laziness.LAZY) { - // PreParser cannot detect duplicates in arrow function parameters. When - // parsing the parameter list, it doesn't know it's an arrow function - // parameter list, so it just discards the identifiers, and cannot do the - // check any more when it sees the arrow. Work around this by calling the - // function which forces parsing it. - code += 'function lazy() { (' + duplicate_params_string + ') => { ' + - strict_inside + '} } lazy();'; - } else { - assertUnreachable(); - } - } else if (type == FunctionType.METHOD) { - code += "var o = {"; - if (lazy == Laziness.EAGER) { - code += "foo : (function(" + duplicate_params_string + ") { " + strict_inside + "})"; - } else if (lazy == Laziness.LAZY_BOUNDARY) { - code += "foo : function(" + duplicate_params_string + ") { " + strict_inside + "}"; - } else if (lazy == Laziness.LAZY) { - code += 'lazy: function() { function foo(' + duplicate_params_string + - ') { ' + strict_inside + '} }'; - } else { - assertUnreachable(); - } - code += "};"; - } else if (type == FunctionType.CONCISE_METHOD) { - if (lazy == Laziness.LAZY_BOUNDARY) { - code += "var o = { foo(" + duplicate_params_string + ") { " + strict_inside + "} };"; - } else if (lazy == Laziness.LAZY) { - code += 'function lazy() { var o = { foo(' + duplicate_params_string + - ') { ' + strict_inside + '} }; }'; - } else { - assertUnreachable(); - } - } else { - assertUnreachable(); - } - - if (ok) { - assertDoesNotThrow(code); - } else { - assertDuplicateParametersError(code); - } -} - -function test(type, strict, lazy, ok_if_param_list_simple) { - // Simple duplicate params. - testHelper(type, strict, lazy, "a, dup, dup, b", ok_if_param_list_simple) - - if (strict != Strictness.STRICT_FUNCTION) { - // Generate test cases where the duplicate parameter occurs because of - // destructuring or the rest parameter. That is always an error: duplicate - // parameters are only allowed in simple parameter lists. These tests are - // not possible if a function declares itself strict, since non-simple - // parameters are not allowed then. - testHelper(type, strict, lazy, "a, [dup], dup, b", false); - testHelper(type, strict, lazy, "a, dup, {b: dup}, c", false); - testHelper(type, strict, lazy, "a, {dup}, [dup], b", false); - testHelper(type, strict, lazy, "a, dup, ...dup", false); - testHelper(type, strict, lazy, "a, dup, dup, ...rest", false); - testHelper(type, strict, lazy, "a, dup, dup, b = 1", false); - } -} - -// No duplicate parameters allowed for arrow functions even in sloppy mode. -test(FunctionType.ARROW, Strictness.SLOPPY, Laziness.EAGER, false); -test(FunctionType.ARROW, Strictness.SLOPPY, Laziness.LAZY_BOUNDARY, false); -test(FunctionType.ARROW, Strictness.SLOPPY, Laziness.LAZY, false); - -// Duplicate parameters allowed for normal functions in sloppy mode. -test(FunctionType.NORMAL, Strictness.SLOPPY, Laziness.EAGER, true); -test(FunctionType.NORMAL, Strictness.SLOPPY, Laziness.LAZY_BOUNDARY, true); -test(FunctionType.NORMAL, Strictness.SLOPPY, Laziness.LAZY, true); - -test(FunctionType.NORMAL, Strictness.STRICT, Laziness.EAGER, false); -test(FunctionType.NORMAL, Strictness.STRICT, Laziness.LAZY_BOUNDARY, false); -test(FunctionType.NORMAL, Strictness.STRICT, Laziness.LAZY, false); - -test(FunctionType.NORMAL, Strictness.STRICT_FUNCTION, Laziness.EAGER, false); -test(FunctionType.NORMAL, Strictness.STRICT_FUNCTION, Laziness.LAZY_BOUNDARY, false); -test(FunctionType.NORMAL, Strictness.STRICT_FUNCTION, Laziness.LAZY, false); - -// No duplicate parameters allowed for conscise methods even in sloppy mode. -test(FunctionType.CONCISE_METHOD, Strictness.SLOPPY, Laziness.LAZY_BOUNDARY, false); -test(FunctionType.CONCISE_METHOD, Strictness.SLOPPY, Laziness.LAZY, false); - -// But non-concise methods follow the rules for normal funcs. -test(FunctionType.METHOD, Strictness.SLOPPY, Laziness.EAGER, true); -test(FunctionType.METHOD, Strictness.SLOPPY, Laziness.LAZY_BOUNDARY, true); -test(FunctionType.METHOD, Strictness.SLOPPY, Laziness.LAZY, true); - -test(FunctionType.METHOD, Strictness.STRICT, Laziness.EAGER, false); -test(FunctionType.METHOD, Strictness.STRICT, Laziness.LAZY_BOUNDARY, false); -test(FunctionType.METHOD, Strictness.STRICT, Laziness.LAZY, false); - -test(FunctionType.METHOD, Strictness.STRICT_FUNCTION, Laziness.EAGER, false); -test(FunctionType.METHOD, Strictness.STRICT_FUNCTION, Laziness.LAZY_BOUNDARY, false); -test(FunctionType.METHOD, Strictness.STRICT_FUNCTION, Laziness.LAZY, false); diff --git a/implementation-contributed/v8/mjsunit/eagerly-parsed-lazily-compiled-functions.js b/implementation-contributed/v8/mjsunit/eagerly-parsed-lazily-compiled-functions.js deleted file mode 100644 index 9dfb71ba34b..00000000000 --- a/implementation-contributed/v8/mjsunit/eagerly-parsed-lazily-compiled-functions.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// The test functions in this file will be eagerly compiled. The functions -// inside will be eagerly parsed but lazily compiled. - -(function TestLengths() { - function inner(p1, p2, p3) { } - assertEquals(3, inner.length); -})(); - -(function TestAccessingContextVariables() { - var in_context = 8; - function inner() { return in_context; } - assertEquals(8, inner()); -})(); - -(function TestAccessingContextVariablesFromDeeper() { - var in_context = 8; - function inner() { - function inner_inner() { - function inner_inner_inner() { - return in_context; - } - return inner_inner_inner; - } - return inner_inner; - } - assertEquals(8, inner()()()); -})(); diff --git a/implementation-contributed/v8/mjsunit/element-accessor.js b/implementation-contributed/v8/mjsunit/element-accessor.js deleted file mode 100644 index 94acc5c6c35..00000000000 --- a/implementation-contributed/v8/mjsunit/element-accessor.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function () { - var o = []; - o.__proto__ = {}; - - function store(o, i, v) { - o[i] = v; - } - - store(o, 0, 0); - store(o, 1, 0); - store(o, 2, 0); - o.__proto__[10000000] = 1; - - var set = 0; - - Object.defineProperty(o, "3", { - get:function() { return 100; }, - set:function(v) { set = v; }}); - - store(o, 3, 1000); - assertEquals(1000, set); - assertEquals(100, o[3]); -})(); - -(function () { - var o = new Int32Array(1); - assertThrows( - () => Object.defineProperty(o, '0', {get: function() {}}), TypeError); - assertEquals({ - value: 0, - writable: true, - enumerable: true, - configurable: false - }, Object.getOwnPropertyDescriptor(o, "0")); -})(); - -(function() { - function f() { - var a = new Array(); - a[1] = 1.5; - return a; - } - - f(); - f(); - %OptimizeFunctionOnNextCall(f); - var a = f(); - a[2] = 2; - assertEquals(3, a.length); -})(); diff --git a/implementation-contributed/v8/mjsunit/element-read-only.js b/implementation-contributed/v8/mjsunit/element-read-only.js deleted file mode 100644 index dcc7e421b6d..00000000000 --- a/implementation-contributed/v8/mjsunit/element-read-only.js +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a, b, c, d) { return arguments; } - -// Ensure non-configurable argument elements stay non-configurable. -(function () { - var args = f(1); - Object.defineProperty(args, "0", {value: 10, configurable: false}); - %HeapObjectVerify(args); - assertFalse(Object.getOwnPropertyDescriptor(args, "0").configurable); - %HeapObjectVerify(args); - for (var i = 0; i < 10; i++) { - args[i] = 1; - } - %HeapObjectVerify(args); - assertFalse(Object.getOwnPropertyDescriptor(args, "0").configurable); - %HeapObjectVerify(args); -})(); - -// Ensure read-only properties on the prototype chain cause TypeError. - -// Newly added. -(function () { - var o = []; - var proto = {}; - var index = 3; - function store(o, i, v) { "use strict"; o[i] = v; }; - o.__proto__ = proto; - for (var i = 0; i < index; i++) { - store(o, i, 0); - } - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.defineProperty(proto, index, {value: 100, writable: false}); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - assertThrows(function() { store(o, index, 0); }); - assertEquals(100, o[index]); -})(); - -// Reconfigured. -(function () { - var o = []; - var proto = {3: 10000}; - var index = 3; - function store(o, i, v) { "use strict"; o[i] = v; }; - o.__proto__ = proto; - for (var i = 0; i < index; i++) { - store(o, i, 0); - } - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.defineProperty(proto, index, {value: 100, writable: false}); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - assertThrows(function() { store(o, index, 0); }); - assertEquals(100, o[index]); -})(); - -// Newly added to arguments object. -(function () { - var o = []; - var proto = f(100); - var index = 3; - function store(o, i, v) { "use strict"; o[i] = v; }; - o.__proto__ = proto; - for (var i = 0; i < index; i++) { - store(o, i, 0); - } - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.defineProperty(proto, index, {value: 100, writable: false}); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - assertThrows(function() { store(o, index, 0); }); - assertEquals(100, o[index]); -})(); - -// Reconfigured on to arguments object. -(function () { - var o = []; - var proto = f(100, 200, 300, 400); - var index = 3; - function store(o, i, v) { "use strict"; o[i] = v; }; - o.__proto__ = proto; - for (var i = 0; i < index; i++) { - store(o, i, 0); - } - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.defineProperty(proto, index, {value: 100, writable: false}); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - assertThrows(function() { store(o, index, 0); }); - assertEquals(100, o[index]); -})(); - -// Extensions prevented object. -(function () { - var o = []; - var proto = [0, 1, 2, 3]; - var index = 3; - function store(o, i, v) { "use strict"; o[i] = v; }; - o.__proto__ = proto; - for (var i = 0; i < index; i++) { - store(o, i, 0); - } - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.preventExtensions(proto); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.defineProperty(proto, index, {value: 100, writable: false}); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - assertThrows(function() { store(o, index, 0); }); - assertEquals(100, o[index]); -})(); -// Extensions prevented arguments object. -(function () { - var o = []; - var proto = f(100, 200, 300, 400); - var index = 3; - function store(o, i, v) { "use strict"; o[i] = v; }; - o.__proto__ = proto; - for (var i = 0; i < index; i++) { - store(o, i, 0); - } - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.preventExtensions(proto); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.defineProperty(proto, index, {value: 100, writable: false}); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - assertThrows(function() { store(o, index, 0); }); - assertEquals(100, o[index]); -})(); - -// Array with large index. -(function () { - var o = []; - var proto = []; - var index = 3; - function store(o, i, v) { "use strict"; o[i] = v; }; - o.__proto__ = proto; - for (var i = 0; i < index; i++) { - store(o, i, 0); - } - proto[1 << 30] = 1; - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.defineProperty(proto, index, {value: 100, writable: false}); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - assertThrows(function() { store(o, index, 0); }); - assertEquals(100, o[index]); -})(); - -// Frozen object. -(function () { - var o = []; - var proto = [0, 1, 2, 3]; - function store(o, i, v) { "use strict"; o[i] = v; }; - o.__proto__ = proto; - for (var i = 0; i < 3; i++) { - store(o, i, 0); - } - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.freeze(proto); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - assertThrows(function() { store(o, 3, 0); }); - assertEquals(3, o[3]); -})(); - -// Frozen arguments object. -(function () { - var o = []; - var proto = f(0, 1, 2, 3); - function store(o, i, v) { "use strict"; o[i] = v; }; - o.__proto__ = proto; - for (var i = 0; i < 3; i++) { - store(o, i, 0); - } - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - Object.freeze(proto); - %HeapObjectVerify(proto); - %HeapObjectVerify(o); - assertThrows(function() { store(o, 3, 0); }); - assertEquals(3, o[3]); -})(); diff --git a/implementation-contributed/v8/mjsunit/elements-kind-depends.js b/implementation-contributed/v8/mjsunit/elements-kind-depends.js deleted file mode 100644 index 539fbd0e423..00000000000 --- a/implementation-contributed/v8/mjsunit/elements-kind-depends.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function burn() { - var a = new Array(3); - a[0] = 10; - a[1] = 15.5; - a[2] = 20; - return a; -} - -function check(a) { - assertEquals(10, a[0]); - assertEquals(15.5, a[1]); - assertEquals(20, a[2]); -} - -var b; -for (var i = 0; i < 3; ++i) { - b = burn(); - check(b); // all OK -} -%OptimizeFunctionOnNextCall(burn); -b = burn(); -check(b); // fails - - -function loop_test(x) { - for (i=0;i<3;i++) { - x[i] = (i+1) * 0.5; - } -} - -function check2(b) { - assertEquals(0.5, b[0]); - assertEquals(1.0, b[1]); - assertEquals(1.5, b[2]); -} - -for (var i = 0; i < 3; ++i) { - b = [0,1,2]; - loop_test(b); - check2(b); -} -%OptimizeFunctionOnNextCall(loop_test); -b = [0,1,2]; -loop_test(b); -check2(b); diff --git a/implementation-contributed/v8/mjsunit/elements-kind.js b/implementation-contributed/v8/mjsunit/elements-kind.js deleted file mode 100644 index 3ffdbba2a87..00000000000 --- a/implementation-contributed/v8/mjsunit/elements-kind.js +++ /dev/null @@ -1,354 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --nostress-opt --typed-array-max-size-in-heap=2048 - -var elements_kind = { - fast_smi_only : 'fast smi only elements', - fast : 'fast elements', - fast_double : 'fast double elements', - dictionary : 'dictionary elements', - fixed_int32 : 'fixed int8 elements', - fixed_uint8 : 'fixed uint8 elements', - fixed_int16 : 'fixed int16 elements', - fixed_uint16 : 'fixed uint16 elements', - fixed_int32 : 'fixed int32 elements', - fixed_uint32 : 'fixed uint32 elements', - fixed_float32 : 'fixed float32 elements', - fixed_float64 : 'fixed float64 elements', - fixed_uint8_clamped : 'fixed uint8_clamped elements' -} - -function getKind(obj) { - if (%HasSmiElements(obj)) return elements_kind.fast_smi_only; - if (%HasObjectElements(obj)) return elements_kind.fast; - if (%HasDoubleElements(obj)) return elements_kind.fast_double; - if (%HasDictionaryElements(obj)) return elements_kind.dictionary; - - if (%HasFixedInt8Elements(obj)) { - return elements_kind.fixed_int8; - } - if (%HasFixedUint8Elements(obj)) { - return elements_kind.fixed_uint8; - } - if (%HasFixedInt16Elements(obj)) { - return elements_kind.fixed_int16; - } - if (%HasFixedUint16Elements(obj)) { - return elements_kind.fixed_uint16; - } - if (%HasFixedInt32Elements(obj)) { - return elements_kind.fixed_int32; - } - if (%HasFixedUint32Elements(obj)) { - return elements_kind.fixed_uint32; - } - if (%HasFixedFloat32Elements(obj)) { - return elements_kind.fixed_float32; - } - if (%HasFixedFloat64Elements(obj)) { - return elements_kind.fixed_float64; - } - if (%HasFixedUint8ClampedElements(obj)) { - return elements_kind.fixed_uint8_clamped; - } -} - -function assertKind(expected, obj, name_opt) { - assertEquals(expected, getKind(obj), name_opt); -} - -var me = {}; -assertKind(elements_kind.fast, me); -me.dance = 0xD15C0; -me.drink = 0xC0C0A; -assertKind(elements_kind.fast, me); - -var too = [1,2,3]; -assertKind(elements_kind.fast_smi_only, too); -too.dance = 0xD15C0; -too.drink = 0xC0C0A; -assertKind(elements_kind.fast_smi_only, too); - -// Make sure the element kind transitions from smi when a non-smi is stored. -function test_wrapper() { - var you = new Array(); - assertKind(elements_kind.fast_smi_only, you); - for (var i = 0; i < 1337; i++) { - var val = i; - if (i == 1336) { - assertKind(elements_kind.fast_smi_only, you); - val = new Object(); - } - you[i] = val; - } - assertKind(elements_kind.fast, you); - - var temp = []; - temp[0xDECAF] = 0; - assertKind(elements_kind.dictionary, temp); - - var fast_double_array = new Array(0xDECAF); - for (var i = 0; i < 0xDECAF; i++) fast_double_array[i] = i / 2; - assertKind(elements_kind.fast_double, fast_double_array); - - assertKind(elements_kind.fixed_int8, new Int8Array(007)); - assertKind(elements_kind.fixed_uint8, new Uint8Array(007)); - assertKind(elements_kind.fixed_int16, new Int16Array(666)); - assertKind(elements_kind.fixed_uint16, new Uint16Array(42)); - assertKind(elements_kind.fixed_int32, new Int32Array(0xF)); - assertKind(elements_kind.fixed_uint32, new Uint32Array(23)); - assertKind(elements_kind.fixed_float32, new Float32Array(7)); - assertKind(elements_kind.fixed_float64, new Float64Array(0)); - assertKind(elements_kind.fixed_uint8_clamped, new Uint8ClampedArray(512)); - - var ab = new ArrayBuffer(128); - assertKind(elements_kind.fixed_int8, new Int8Array(ab)); - assertKind(elements_kind.fixed_uint8, new Uint8Array(ab)); - assertKind(elements_kind.fixed_int16, new Int16Array(ab)); - assertKind(elements_kind.fixed_uint16, new Uint16Array(ab)); - assertKind(elements_kind.fixed_int32, new Int32Array(ab)); - assertKind(elements_kind.fixed_uint32, new Uint32Array(ab)); - assertKind(elements_kind.fixed_float32, new Float32Array(ab)); - assertKind(elements_kind.fixed_float64, new Float64Array(ab)); - assertKind(elements_kind.fixed_uint8_clamped, new Uint8ClampedArray(ab)); - - // Crankshaft support for smi-only array elements. - function monomorphic(array) { - assertKind(elements_kind.fast_smi_only, array); - for (var i = 0; i < 3; i++) { - array[i] = i + 10; - } - assertKind(elements_kind.fast_smi_only, array); - for (var i = 0; i < 3; i++) { - var a = array[i]; - assertEquals(i + 10, a); - } - } - var smi_only = new Array(1, 2, 3); - assertKind(elements_kind.fast_smi_only, smi_only); - for (var i = 0; i < 3; i++) monomorphic(smi_only); - %OptimizeFunctionOnNextCall(monomorphic); - monomorphic(smi_only); -} - -// The test is called in a wrapper function to eliminate the transition learning -// feedback of AllocationSites. -test_wrapper(); -%ClearFunctionFeedback(test_wrapper); - -%NeverOptimizeFunction(construct_smis); - -// This code exists to eliminate the learning influence of AllocationSites -// on the following tests. -var __sequence = 0; -function make_array_string() { - this.__sequence = this.__sequence + 1; - return "/* " + this.__sequence + " */ [0, 0, 0];" -} -function make_array() { - return eval(make_array_string()); -} - -function construct_smis() { - var a = make_array(); - a[0] = 0; // Send the COW array map to the steak house. - assertKind(elements_kind.fast_smi_only, a); - return a; -} - %NeverOptimizeFunction(construct_doubles); -function construct_doubles() { - var a = construct_smis(); - a[0] = 1.5; - assertKind(elements_kind.fast_double, a); - return a; -} - %NeverOptimizeFunction(construct_objects); -function construct_objects() { - var a = construct_smis(); - a[0] = "one"; - assertKind(elements_kind.fast, a); - return a; -} - -// Test crankshafted transition SMI->DOUBLE. - %NeverOptimizeFunction(convert_to_double); -function convert_to_double(array) { - array[1] = 2.5; - assertKind(elements_kind.fast_double, array); - assertEquals(2.5, array[1]); -} -var smis = construct_smis(); -for (var i = 0; i < 3; i++) convert_to_double(smis); - %OptimizeFunctionOnNextCall(convert_to_double); -smis = construct_smis(); -convert_to_double(smis); -// Test crankshafted transitions SMI->FAST and DOUBLE->FAST. - %NeverOptimizeFunction(convert_to_fast); -function convert_to_fast(array) { - array[1] = "two"; - assertKind(elements_kind.fast, array); - assertEquals("two", array[1]); -} -smis = construct_smis(); -for (var i = 0; i < 3; i++) convert_to_fast(smis); -var doubles = construct_doubles(); -for (var i = 0; i < 3; i++) convert_to_fast(doubles); -smis = construct_smis(); -doubles = construct_doubles(); - %OptimizeFunctionOnNextCall(convert_to_fast); -convert_to_fast(smis); -convert_to_fast(doubles); -// Test transition chain SMI->DOUBLE->FAST (crankshafted function will -// transition to FAST directly). - %NeverOptimizeFunction(convert_mixed); -function convert_mixed(array, value, kind) { - array[1] = value; - assertKind(kind, array); - assertEquals(value, array[1]); -} -smis = construct_smis(); -for (var i = 0; i < 3; i++) { - convert_mixed(smis, 1.5, elements_kind.fast_double); -} -doubles = construct_doubles(); -for (var i = 0; i < 3; i++) { - convert_mixed(doubles, "three", elements_kind.fast); -} -convert_mixed(construct_smis(), "three", elements_kind.fast); -convert_mixed(construct_doubles(), "three", elements_kind.fast); - -if (%ICsAreEnabled()) { - // Test that allocation sites allocate correct elements kind initially based - // on previous transitions. - %OptimizeFunctionOnNextCall(convert_mixed); - smis = construct_smis(); - doubles = construct_doubles(); - convert_mixed(smis, 1, elements_kind.fast); - convert_mixed(doubles, 1, elements_kind.fast); - assertTrue(%HaveSameMap(smis, doubles)); -} - -// Crankshaft support for smi-only elements in dynamic array literals. -function get(foo) { return foo; } // Used to generate dynamic values. - -function crankshaft_test() { - var a1 = [get(1), get(2), get(3)]; - assertKind(elements_kind.fast_smi_only, a1); - - var a2 = new Array(get(1), get(2), get(3)); - assertKind(elements_kind.fast_smi_only, a2); - var b = [get(1), get(2), get("three")]; - assertKind(elements_kind.fast, b); - var c = [get(1), get(2), get(3.5)]; - assertKind(elements_kind.fast_double, c); -} -for (var i = 0; i < 3; i++) { - crankshaft_test(); -} -%OptimizeFunctionOnNextCall(crankshaft_test); -crankshaft_test(); - -// Elements_kind transitions for arrays. - -// A map can have three different elements_kind transitions: SMI->DOUBLE, -// DOUBLE->OBJECT, and SMI->OBJECT. No matter in which order these three are -// created, they must always end up with the same FAST map. - -// Preparation: create one pair of identical objects for each case. -var a = [1, 2, 3]; -var b = [1, 2, 3]; -assertTrue(%HaveSameMap(a, b)); -assertKind(elements_kind.fast_smi_only, a); -var c = [1, 2, 3]; -c["case2"] = true; -var d = [1, 2, 3]; -d["case2"] = true; -assertTrue(%HaveSameMap(c, d)); -assertFalse(%HaveSameMap(a, c)); -assertKind(elements_kind.fast_smi_only, c); -var e = [1, 2, 3]; -e["case3"] = true; -var f = [1, 2, 3]; -f["case3"] = true; -assertTrue(%HaveSameMap(e, f)); -assertFalse(%HaveSameMap(a, e)); -assertFalse(%HaveSameMap(c, e)); -assertKind(elements_kind.fast_smi_only, e); -// Case 1: SMI->DOUBLE, DOUBLE->OBJECT, SMI->OBJECT. -a[0] = 1.5; -assertKind(elements_kind.fast_double, a); -a[0] = "foo"; -assertKind(elements_kind.fast, a); -b[0] = "bar"; -assertTrue(%HaveSameMap(a, b)); -// Case 2: SMI->DOUBLE, SMI->OBJECT, DOUBLE->OBJECT. -c[0] = 1.5; -assertKind(elements_kind.fast_double, c); -assertFalse(%HaveSameMap(c, d)); -d[0] = "foo"; -assertKind(elements_kind.fast, d); -assertFalse(%HaveSameMap(c, d)); -c[0] = "bar"; -assertTrue(%HaveSameMap(c, d)); -// Case 3: SMI->OBJECT, SMI->DOUBLE, DOUBLE->OBJECT. -e[0] = "foo"; -assertKind(elements_kind.fast, e); -assertFalse(%HaveSameMap(e, f)); -f[0] = 1.5; -assertKind(elements_kind.fast_double, f); -assertFalse(%HaveSameMap(e, f)); -f[0] = "bar"; -assertKind(elements_kind.fast, f); -assertTrue(%HaveSameMap(e, f)); - -// Test if Array.concat() works correctly with DOUBLE elements. -var a = [1, 2]; -assertKind(elements_kind.fast_smi_only, a); -var b = [4.5, 5.5]; -assertKind(elements_kind.fast_double, b); -var c = a.concat(b); -assertEquals([1, 2, 4.5, 5.5], c); -assertKind(elements_kind.fast_double, c); - -// Test that Array.push() correctly handles SMI elements. -var a = [1, 2]; -assertKind(elements_kind.fast_smi_only, a); -a.push(3, 4, 5); -assertKind(elements_kind.fast_smi_only, a); -assertEquals([1, 2, 3, 4, 5], a); - -// Test that Array.splice() and Array.slice() return correct ElementsKinds. -var a = ["foo", "bar"]; -assertKind(elements_kind.fast, a); -var b = a.splice(0, 1); -assertKind(elements_kind.fast, b); -var c = a.slice(0, 1); -assertKind(elements_kind.fast, c); - -// Throw away type information in the ICs for next stress run. -gc(); diff --git a/implementation-contributed/v8/mjsunit/elements-length-no-holey.js b/implementation-contributed/v8/mjsunit/elements-length-no-holey.js deleted file mode 100644 index 73ffa21b688..00000000000 --- a/implementation-contributed/v8/mjsunit/elements-length-no-holey.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -a = [1,2,3]; -a.length = 1; -assertFalse(%HasHoleyElements(a)); -assertTrue(%HasSmiElements(a)); diff --git a/implementation-contributed/v8/mjsunit/elements-transition-and-store.js b/implementation-contributed/v8/mjsunit/elements-transition-and-store.js deleted file mode 100644 index 0b4786b4b8f..00000000000 --- a/implementation-contributed/v8/mjsunit/elements-transition-and-store.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function foo(a, v) { - a[0] = v; - return a; -} - -for (var i = 0; i < 3; ++i) { - var a = Array(); - a = foo(a, 1.5); - assertEquals(a[0], 1.5); - a = foo(a, 2); - assertEquals(a[0], 2); -} diff --git a/implementation-contributed/v8/mjsunit/elements-transition-hoisting.js b/implementation-contributed/v8/mjsunit/elements-transition-hoisting.js deleted file mode 100644 index dcd742e6215..00000000000 --- a/implementation-contributed/v8/mjsunit/elements-transition-hoisting.js +++ /dev/null @@ -1,236 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// Flags: --nostress-opt --opt - -// Ensure that ElementsKind transitions in various situations are hoisted (or -// not hoisted) correctly, don't change the semantics programs and don't trigger -// deopt through hoisting in important situations. - -function test_wrapper() { - // Make sure that a simple elements array transitions inside a loop before - // stores to an array gets hoisted in a way that doesn't generate a deopt in - // simple cases.} - function testDoubleConversion4(a) { - var object = new Object(); - a[0] = 0; - var count = 3; - do { - a[0] = object; - } while (--count > 0); - } - - testDoubleConversion4(new Array(5)); - testDoubleConversion4(new Array(5)); // Call twice to make sure that second - // store is a transition and not - // optimistically MONOMORPHIC - %OptimizeFunctionOnNextCall(testDoubleConversion4); - testDoubleConversion4(new Array(5)); - testDoubleConversion4(new Array(5)); - assertOptimized(testDoubleConversion4); - %ClearFunctionFeedback(testDoubleConversion4); - - // Make sure that non-element related map checks that are not preceded by - // transitions in a loop still get hoisted in a way that doesn't generate a - // deopt in simple cases. - function testExactMapHoisting(a) { - var object = new Object(); - a.foo = {}; - a[0] = 0; - a[1] = 1; - var count = 3; - do { - a.foo = object; // This map check should be hoistable - a[1] = object; - result = a.foo == object && a[1] == object; - } while (--count > 0); - } - - testExactMapHoisting(new Array(5)); - testExactMapHoisting(new Array(5)); // Call twice to make sure that second - // store is a transition and not - // optimistically MONOMORPHIC - %OptimizeFunctionOnNextCall(testExactMapHoisting); - testExactMapHoisting(new Array(5)); - testExactMapHoisting(new Array(5)); - assertOptimized(testExactMapHoisting); - %ClearFunctionFeedback(testExactMapHoisting); - - // Make sure that non-element related map checks do NOT get hoisted if they - // depend on an elements transition before them and it's not possible to hoist - // that transition. - function testExactMapHoisting2(a) { - var object = new Object(); - a.foo = 0; - a[0] = 0; - a[1] = 1; - var count = 3; - do { - if (a.bar === undefined) { - a[1] = 2.5; - } - a.foo = object; // This map check should NOT be hoistable because it - // includes a check for the PACKED_ELEMENTS map as well as - // the PACKED_DOUBLE_ELEMENTS map, which depends on the - // double transition above in the if, which cannot be - // hoisted. - } while (--count > 0); - } - - testExactMapHoisting2(new Array(5)); - testExactMapHoisting2(new Array(5)); // Call twice to make sure that second - // store is a transition and not - // optimistically MONOMORPHIC - %OptimizeFunctionOnNextCall(testExactMapHoisting2); - testExactMapHoisting2(new Array(5)); - testExactMapHoisting2(new Array(5)); - // Temporarily disabled - see bug 2176. - // assertOptimized(testExactMapHoisting2); - %ClearFunctionFeedback(testExactMapHoisting2); - - // Make sure that non-element related map checks do get hoisted if they use - // the transitioned map for the check and all transitions that they depend - // upon can hoisted, too. - function testExactMapHoisting3(a) { - var object = new Object(); - a.foo = null; - a[0] = 0; - a[1] = 1; - var count = 3; - do { - a[1] = 2.5; - a.foo = object; // This map check should be hoistable because all elements - // transitions in the loop can also be hoisted. - } while (--count > 0); - } - - var add_transition = new Array(5); - add_transition.foo = 0; - add_transition[0] = new Object(); // For FAST_ELEMENT transition to be created - testExactMapHoisting3(new Array(5)); - testExactMapHoisting3(new Array(5)); // Call twice to make sure that second - // store is a transition and not - // optimistically MONOMORPHIC - %OptimizeFunctionOnNextCall(testExactMapHoisting3); - testExactMapHoisting3(new Array(5)); - testExactMapHoisting3(new Array(5)); - assertOptimized(testExactMapHoisting3); - %ClearFunctionFeedback(testExactMapHoisting3); - - function testDominatingTransitionHoisting1(a) { - var object = new Object(); - a[0] = 0; - var count = 3; - do { - if (a.baz != true) { - a[1] = 2.5; - } - a[0] = object; - } while (--count > 3); - } - - /* - testDominatingTransitionHoisting1(new Array(5)); - testDominatingTransitionHoisting1(new Array(5)); // Call twice to make sure - // that second store is a - // transition and not - // optimistically MONOMORPHIC - %OptimizeFunctionOnNextCall(testDominatingTransitionHoisting1); - testDominatingTransitionHoisting1(new Array(5)); - testDominatingTransitionHoisting1(new Array(5)); - // TODO(verwaest) With current changes the elements transition gets hoisted - // above the access, causing a deopt. We should update the type of access - // rather than forbid hoisting the transition. - assertOptimized(testDominatingTransitionHoisting1); - %ClearFunctionFeedback(testDominatingTransitionHoisting1); - */ - - function testHoistingWithSideEffect(a) { - var object = new Object(); - a[0] = 0; - var count = 3; - do { - assertTrue(true); - a[0] = object; - } while (--count > 3); - } - - testHoistingWithSideEffect(new Array(5)); - testHoistingWithSideEffect(new Array(5)); // Call twice to make sure that - // second store is a transition and - // not optimistically MONOMORPHIC - %OptimizeFunctionOnNextCall(testHoistingWithSideEffect); - testHoistingWithSideEffect(new Array(5)); - testHoistingWithSideEffect(new Array(5)); - assertOptimized(testHoistingWithSideEffect); - %ClearFunctionFeedback(testHoistingWithSideEffect); - - function testStraightLineDupeElinination(a,b,c,d,e,f) { - var count = 3; - do { - assertTrue(true); - a[0] = b; - a[1] = c; - a[2] = d; - assertTrue(true); - a[3] = e; // TransitionElementsKind should be eliminated despite call. - a[4] = f; - } while (--count > 3); - } - - testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),0,0,0,0,.5); - testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),0,0,0,.5,0); - testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),0,0,.5,0,0); - testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),0,.5,0,0,0); - testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),.5,0,0,0,0); - testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),0,0,0,0,.5); - testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),0,0,0,.5,0); - testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),0,0,.5,0,0); - testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),0,.5,0,0,0); - testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),.5,0,0,0,0); - testStraightLineDupeElinination(new Array(5),.5,0,0,0,0); - testStraightLineDupeElinination(new Array(5),0,.5,0,0,0); - testStraightLineDupeElinination(new Array(5),0,0,.5,0,0); - testStraightLineDupeElinination(new Array(5),0,0,0,.5,0); - testStraightLineDupeElinination(new Array(5),0,0,0,0,.5); - testStraightLineDupeElinination(new Array(5),.5,0,0,0,0); - testStraightLineDupeElinination(new Array(5),0,.5,0,0,0); - testStraightLineDupeElinination(new Array(5),0,0,.5,0,0); - testStraightLineDupeElinination(new Array(5),0,0,0,.5,0); - testStraightLineDupeElinination(new Array(5),0,0,0,0,.5); - %OptimizeFunctionOnNextCall(testStraightLineDupeElinination); - testStraightLineDupeElinination(new Array(5),0,0,0,0,0); - testStraightLineDupeElinination(new Array(5),0,0,0,0,0); - assertOptimized(testStraightLineDupeElinination); - %ClearFunctionFeedback(testStraightLineDupeElinination); -} - -// The test is called in a test wrapper that has type feedback cleared to -// prevent the influence of allocation-sites, which learn from transitions. -test_wrapper(); -%ClearFunctionFeedback(test_wrapper); diff --git a/implementation-contributed/v8/mjsunit/elements-transition.js b/implementation-contributed/v8/mjsunit/elements-transition.js deleted file mode 100644 index ac0b9a14036..00000000000 --- a/implementation-contributed/v8/mjsunit/elements-transition.js +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// Flags: --nostress-opt - -// This code exists to eliminate the learning influence of AllocationSites -// on the following tests. -var __sequence = 0; -function make_array_string(length) { - this.__sequence = this.__sequence + 1; - return "/* " + this.__sequence + " */ new Array(" + length + ");"; -} -function make_array(length) { - return eval(make_array_string(length)); -} - -function test(test_double, test_object, set, length) { - // We apply the same operations to two identical arrays. The first array - // triggers an IC miss, upon which the conversion stub is generated, but the - // actual conversion is done in runtime. The second array, arriving at - // the previously patched IC, is then converted using the conversion stub. - var array_1 = make_array(length); - var array_2 = make_array(length); - - // false, true, nice setter function, 20 - assertTrue(%HasSmiElements(array_1)); - assertTrue(%HasSmiElements(array_2)); - for (var i = 0; i < length; i++) { - if (i == length - 5 && test_double) { - // Trigger conversion to fast double elements at length-5. - set(array_1, i, 0.5); - set(array_2, i, 0.5); - assertTrue(%HasDoubleElements(array_1)); - assertTrue(%HasDoubleElements(array_2)); - } else if (i == length - 3 && test_object) { - // Trigger conversion to fast object elements at length-3. - set(array_1, i, 'object'); - set(array_2, i, 'object'); - assertTrue(%HasObjectElements(array_1)); - assertTrue(%HasObjectElements(array_2)); - } else if (i != length - 7) { - // Set the element to an integer but leave a hole at length-7. - set(array_1, i, 2*i+1); - set(array_2, i, 2*i+1); - } - } - - for (var i = 0; i < length; i++) { - if (i == length - 5 && test_double) { - assertEquals(0.5, array_1[i]); - assertEquals(0.5, array_2[i]); - } else if (i == length - 3 && test_object) { - assertEquals('object', array_1[i]); - assertEquals('object', array_2[i]); - } else if (i != length - 7) { - assertEquals(2*i+1, array_1[i]); - assertEquals(2*i+1, array_2[i]); - } else { - assertEquals(undefined, array_1[i]); - assertEquals(undefined, array_2[i]); - } - } - - assertEquals(length, array_1.length); - assertEquals(length, array_2.length); -} - -function run_test(test_double, test_object, set, length) { - test(test_double, test_object, set, length); - %ClearFunctionFeedback(test); -} - -run_test(false, false, function(a,i,v){ a[i] = v; }, 20); -run_test(true, false, function(a,i,v){ a[i] = v; }, 20); -run_test(false, true, function(a,i,v){ a[i] = v; }, 20); -run_test(true, true, function(a,i,v){ a[i] = v; }, 20); - -run_test(false, false, function(a,i,v){ a[i] = v; }, 10000); -run_test(true, false, function(a,i,v){ a[i] = v; }, 10000); -run_test(false, true, function(a,i,v){ a[i] = v; }, 10000); -run_test(true, true, function(a,i,v){ a[i] = v; }, 10000); - -// Check COW arrays -function get_cow() { return [1, 2, 3]; } - -function transition(x) { x[0] = 1.5; } - -var ignore = get_cow(); -transition(ignore); // Handled by runtime. -var a = get_cow(); -var b = get_cow(); -transition(a); // Handled by IC. -assertEquals(1.5, a[0]); -assertEquals(1, b[0]); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-1.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-1.js deleted file mode 100644 index 63569df2948..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-1.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f1(a, i) { - return a[i] -} - -var a1 = [,,,,,,,,,,,,,,,,,,0.5]; -assertEquals(undefined, f1(a1, 1)); -assertEquals(undefined, f1(a1, 1)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(undefined, f1(a1, 1)); -assertEquals(undefined, f1(a1, 1)); - -function f2(a, i) { - return a[i] + 0.5; -} -var a2_b = [0.0,,]; -assertEquals(0.5, f2(a2_b, 0)); -assertEquals(0.5, f2(a2_b, 0)); -%OptimizeFunctionOnNextCall(f2); -assertEquals(0.5, f2(a2_b, 0)); -assertEquals(NaN, f2(a2_b, 1)); -a2_b.__proto__ = [1.5,1.5,1.5]; -assertEquals(2, f2(a2_b, 1)); -assertEquals(0.5, f2(a2_b, 0)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-10.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-10.js deleted file mode 100644 index e9f2a9aaf58..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-10.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f1(a, i) { - return a[i] + 0.5; -} -var arr = [,0.0,2.5]; -assertEquals(0.5, f1(arr, 1)); -assertEquals(0.5, f1(arr, 1)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(0.5, f1(arr, 1)); - -// Trick crankshaft into accepting feedback with the array prototype -// map even though a call on that map was never made. optopush should -// refuse to inline the push call based on the danger that it's modifying -// the array prototype. -var push = Array.prototype.push; -var array_prototype = Array.prototype; - -function optopush(a) { - push.call(a, 1); -} - -function foo() { - optopush(array_prototype); -} - -optopush([]); -optopush([]); -optopush([]); -%OptimizeFunctionOnNextCall(foo); -foo(); -assertEquals(1.5, f1(arr, 0)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-11.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-11.js deleted file mode 100644 index 4603ac0ac5e..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-11.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f1(a, i) { - return a[i] + 0.5; -} -var arr = [,0.0,2.5]; -assertEquals(0.5, f1(arr, 1)); -assertEquals(0.5, f1(arr, 1)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(0.5, f1(arr, 1)); -Array.prototype.unshift(1.5); -assertEquals(2, f1(arr, 0)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-12.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-12.js deleted file mode 100644 index 758734db89e..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-12.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f1(a, i) { - return a[i] + 0.5; -} - -var other_realm = Realm.create(); -var arr = [,0.0,2.5]; -assertEquals(0.5, f1(arr, 1)); -assertEquals(0.5, f1(arr, 1)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(0.5, f1(arr, 1)); - -Realm.shared = arr.__proto__; - -// The call syntax is useful to make sure the native context is that of the -// other realm. -Realm.eval(other_realm, "Array.prototype.push.call(Realm.shared, 1);"); -assertEquals(1.5, f1(arr, 0)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-2.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-2.js deleted file mode 100644 index 978abc3bb0d..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-2.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(a, i) { - return a[i] + 0.5; -} -var arr = [0.0,,]; -assertEquals(0.5, f(arr, 0)); -assertEquals(0.5, f(arr, 0)); -%OptimizeFunctionOnNextCall(f); -assertEquals(0.5, f(arr, 0)); -assertEquals(NaN, f(arr, 1)); -arr.__proto__ = [1.5,1.5,1.5]; -assertEquals(2, f(arr, 1)); -assertEquals(0.5, f(arr, 0)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-3.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-3.js deleted file mode 100644 index f8179403ec0..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-3.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(a, i) { - return a[i] + 0.5; -} -Array.prototype = [1.5,1.5,1.5]; -var arr = [0.0,,]; -assertEquals(0.5, f(arr, 0)); -assertEquals(0.5, f(arr, 0)); -%OptimizeFunctionOnNextCall(f); -assertEquals(0.5, f(arr, 0)); -assertEquals(NaN, f(arr, 1)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-4.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-4.js deleted file mode 100644 index e2a55055710..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-4.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f1(a, i) { - return a[i] + 0.5; -} -var arr = [0.0,,2.5]; -assertEquals(0.5, f1(arr, 0)); -assertEquals(0.5, f1(arr, 0)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(0.5, f1(arr, 0)); -Array.prototype[1] = 1.5; -assertEquals(2, f1(arr, 1)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-5.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-5.js deleted file mode 100644 index d0970c8fe1f..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-5.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f1(a, i) { - return a[i] + 0.5; -} -var arr = [0.0,,2.5]; -assertEquals(0.5, f1(arr, 0)); -assertEquals(0.5, f1(arr, 0)); -Array.prototype[1] = 1.5; -%OptimizeFunctionOnNextCall(f1); -assertEquals(2, f1(arr, 1)); -assertEquals(2, f1(arr, 1)); -assertEquals(0.5, f1(arr, 0)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-6.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-6.js deleted file mode 100644 index 01a8096f85c..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-6.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f1(a, i) { - return a[i] + 0.5; -} -var arr = [0.0,,2.5]; -assertEquals(0.5, f1(arr, 0)); -assertEquals(0.5, f1(arr, 0)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(0.5, f1(arr, 0)); -Array.prototype.__proto__[1] = 1.5; -assertEquals(2, f1(arr, 1)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-7.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-7.js deleted file mode 100644 index 2b13aff8815..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-7.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f1(a, i) { - return a[i] + 0.5; -} -var arr = [0.0,,2.5]; -assertEquals(0.5, f1(arr, 0)); -assertEquals(0.5, f1(arr, 0)); -Array.prototype.__proto__[1] = 1.5; -assertEquals(2, f1(arr, 1)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(2, f1(arr, 1)); -assertEquals(0.5, f1(arr, 0)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-8.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-8.js deleted file mode 100644 index 35cc91fa8e9..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-8.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f1(a, i) { - return a[i] + 0.5; -} -var arr = [0.0,,2.5]; -assertEquals(0.5, f1(arr, 0)); -assertEquals(0.5, f1(arr, 0)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(0.5, f1(arr, 0)); -Array.prototype.__proto__ = new Object(); -Array.prototype.__proto__[1] = 1.5; -assertEquals(2, f1(arr, 1)); diff --git a/implementation-contributed/v8/mjsunit/elide-double-hole-check-9.js b/implementation-contributed/v8/mjsunit/elide-double-hole-check-9.js deleted file mode 100644 index bbcbfb2be6e..00000000000 --- a/implementation-contributed/v8/mjsunit/elide-double-hole-check-9.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var do_set = false; - -%NeverOptimizeFunction(set_proto_elements); -function set_proto_elements() { - if (do_set) Array.prototype[1] = 1.5; -} - -function f(a, i) { - set_proto_elements(); - return a[i] + 0.5; -} - -var arr = [0.0,,2.5]; -assertEquals(0.5, f(arr, 0)); -assertEquals(0.5, f(arr, 0)); -%OptimizeFunctionOnNextCall(f); -assertEquals(0.5, f(arr, 0)); -do_set = true; -assertEquals(2, f(arr, 1)); diff --git a/implementation-contributed/v8/mjsunit/empirical_max_arraybuffer.js b/implementation-contributed/v8/mjsunit/empirical_max_arraybuffer.js deleted file mode 100644 index cacefd46928..00000000000 --- a/implementation-contributed/v8/mjsunit/empirical_max_arraybuffer.js +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let kMax31BitSmi = (1 << 30) - 1; -let k1MiB = 1 * 1024 * 1024; -let k1GiB = 1 * 1024 * 1024 * 1024; -let k4GiB = 4 * k1GiB; -let kPageSize = 65536; -let kMaxArrayBufferSize = 2 * k1GiB - kPageSize; // TODO(titzer): raise this to 4GiB -let kStrideLength = 65536; - -(function Test() { - var buffer; - try { - buffer = new ArrayBuffer(kMaxArrayBufferSize); - } catch (e) { - print("OOM: sorry, best effort max array buffer size test!"); - return; - } - - print("Allocated " + buffer.byteLength + " bytes"); - assertEquals(kMaxArrayBufferSize, buffer.byteLength); - - function probe(view, stride, f) { - print("--------------------"); - let max = view.length; - for (let i = 0; i < max; i += stride) { - view[i] = f(i); - } - for (let i = 0; i < max; i += stride) { - // print(`${i} = ${f(i)}`); - assertEquals(f(i), view[i]); - } - } - - { - // Make an uint32 view and probe it. - let elemSize = 4; - let viewSize = kMaxArrayBufferSize / elemSize; - // TODO(titzer): view sizes are limited to 31 bit SMIs. fix. - if (viewSize <= kMax31BitSmi) { - let uint32 = new Uint32Array(buffer); - assertEquals(kMaxArrayBufferSize / elemSize, uint32.length); - probe(uint32, kStrideLength / elemSize, - i => (0xaabbccee ^ ((i >> 11) * 0x110005)) >>> 0); - } - } - - { - // Make an uint16 view and probe it. - let elemSize = 2; - let viewSize = kMaxArrayBufferSize / elemSize; - // TODO(titzer): view sizes are limited to 31 bit SMIs. fix. - if (viewSize <= kMax31BitSmi) { - let uint16 = new Uint16Array(buffer); - assertEquals(kMaxArrayBufferSize / elemSize, uint16.length); - probe(uint16, kStrideLength / elemSize, - i => (0xccee ^ ((i >> 11) * 0x110005)) & 0xFFFF); - } - } - - { - // Make an uint8 view and probe it. - let elemSize = 1; - let viewSize = kMaxArrayBufferSize / elemSize; - // TODO(titzer): view sizes are limited to 31 bit SMIs. fix. - if (viewSize <= kMax31BitSmi) { - let uint8 = new Uint8Array(buffer); - assertEquals(kMaxArrayBufferSize / elemSize, uint8.length); - probe(uint8, kStrideLength / elemSize, - i => (0xee ^ ((i >> 11) * 0x05)) & 0xFF); - } - } - - { - // Make a float64 view and probe it. - let elemSize = 8; - let viewSize = kMaxArrayBufferSize / elemSize; - // TODO(titzer): view sizes are limited to 31 bit SMIs. fix. - if (viewSize <= kMax31BitSmi) { - let float64 = new Float64Array(buffer); - assertEquals(kMaxArrayBufferSize / elemSize, float64.length); - probe(float64, kStrideLength / elemSize, - i => 0xaabbccee ^ ((i >> 11) * 0x110005)); - } - } - - { - // Make a float32 view and probe it. - let elemSize = 4; - let viewSize = kMaxArrayBufferSize / elemSize; - // TODO(titzer): view sizes are limited to 31 bit SMIs. fix. - if (viewSize <= kMax31BitSmi) { - let float32 = new Float32Array(buffer); - assertEquals(kMaxArrayBufferSize / elemSize, float32.length); - probe(float32, kStrideLength / elemSize, - i => Math.fround(0xaabbccee ^ ((i >> 11) * 0x110005))); - } - } -})(); diff --git a/implementation-contributed/v8/mjsunit/ensure-growing-store-learns.js b/implementation-contributed/v8/mjsunit/ensure-growing-store-learns.js deleted file mode 100644 index 25fa0e6d018..00000000000 --- a/implementation-contributed/v8/mjsunit/ensure-growing-store-learns.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --noverify-heap --noenable-slow-asserts -// Flags: --opt --no-always-opt - -// --noverify-heap and --noenable-slow-asserts are set because the test is too -// slow with it on. - -// Ensure that keyed stores work, and optimized functions learn if the -// store required change to dictionary mode. Verify that stores that grow -// the array into large object space don't cause a deopt. -(function() { - var a = []; - - function foo(a, i) { - a[i] = 5.3; - } - - foo(a, 1); - foo(a, 2); - foo(a, 3); - %OptimizeFunctionOnNextCall(foo); - a[3] = 0; - foo(a, 3); - assertEquals(a[3], 5.3); - foo(a, 50000); - assertUnoptimized(foo); - assertTrue(%HasDictionaryElements(a)); - - var b = []; - foo(b, 1); - foo(b, 2); - // Put b in dictionary mode. - b[10000] = 5; - assertTrue(%HasDictionaryElements(b)); - foo(b, 3); - %OptimizeFunctionOnNextCall(foo); - foo(b, 50000); - assertOptimized(foo); - assertTrue(%HasDictionaryElements(b)); - - // Clearing feedback for the StoreIC in foo is important for runs with - // flag --stress-opt. - %ClearFunctionFeedback(foo); -})(); - - -(function() { - var a = new Array(10); - - function foo2(a, i) { - a[i] = 50; - } - - // The KeyedStoreIC will learn GROW_MODE. - foo2(a, 10); - foo2(a, 12); - foo2(a, 31); - %OptimizeFunctionOnNextCall(foo2); - foo2(a, 40); - - assertOptimized(foo2); - assertTrue(%HasSmiElements(a)); - - // Grow a large array into large object space through the keyed store - // without deoptimizing. Grow by 9s. If we set elements too sparsely, the - // array will convert to dictionary mode. - a = new Array(99999); - assertTrue(%HasSmiElements(a)); - for (var i = 0; i < 263000; i += 9) { - foo2(a, i); - } - - // Verify that we are over 1 page in size, and foo2 remains optimized. - // This means we've smoothly transitioned to allocating in large object - // space. - assertTrue(%HasSmiElements(a)); - assertTrue(a.length * 4 > (1024 * 1024)); - assertOptimized(foo2); - - %ClearFunctionFeedback(foo2); -})(); diff --git a/implementation-contributed/v8/mjsunit/enumeration-order.js b/implementation-contributed/v8/mjsunit/enumeration-order.js deleted file mode 100644 index d2ac90485eb..00000000000 --- a/implementation-contributed/v8/mjsunit/enumeration-order.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function check_enumeration_order(obj) { - var value = 0; - for (var name in obj) assertTrue(value < obj[name]); - value = obj[name]; -} - -function make_object(size) { - var a = new Object(); - - for (var i = 0; i < size; i++) a["a_" + i] = i + 1; - check_enumeration_order(a); - - for (var i = 0; i < size; i +=3) delete a["a_" + i]; - check_enumeration_order(a); -} - -// Validate the enumeration order for object up to 100 named properties. -for (var j = 1; j< 100; j++) make_object(j); - - -function make_literal_object(size) { - var code = "{ "; - for (var i = 0; i < size-1; i++) code += " a_" + i + " : " + (i + 1) + ", "; - code += "a_" + (size - 1) + " : " + size; - code += " }"; - eval("var a = " + code); - check_enumeration_order(a); -} - -// Validate the enumeration order for object literals up to 100 named -// properties. -for (var j = 1; j< 100; j++) make_literal_object(j); - -// We enumerate indexed properties in numerical order followed by -// named properties in insertion order, followed by indexed properties -// of the prototype object in numerical order, followed by named -// properties of the prototype object in insertion order, and so on. -// -// This enumeration order is not required by the specification, so -// this just documents our choice. -var proto2 = {}; -proto2[140000] = 0; -proto2.a = 0; -proto2[2] = 0; -proto2[3] = 0; // also on the 'proto1' object -proto2.b = 0; -proto2[4294967294] = 0; -proto2.c = 0; -proto2[4294967295] = 0; - -var proto1 = {}; -proto1[5] = 0; -proto1.d = 0; -proto1[3] = 0; -proto1.e = 0; -proto1.f = 0; // also on the 'o' object - -var o = {}; -o[-23] = 0; -o[300000000000] = 0; -o[23] = 0; -o.f = 0; -o.g = 0; -o[-4] = 0; -o[42] = 0; - -o.__proto__ = proto1; -proto1.__proto__ = proto2; - -var expected = ['23', '42', // indexed from 'o' - '-23', '300000000000', 'f', 'g', '-4', // named from 'o' - '3', '5', // indexed from 'proto1' - 'd', 'e', // named from 'proto1' - '2', '140000', '4294967294', // indexed from 'proto2' - 'a', 'b', 'c', '4294967295']; // named from 'proto2' -var actual = []; -for (var p in o) actual.push(p); -assertArrayEquals(expected, actual); diff --git a/implementation-contributed/v8/mjsunit/error-accessors.js b/implementation-contributed/v8/mjsunit/error-accessors.js deleted file mode 100644 index cdaf080a3c5..00000000000 --- a/implementation-contributed/v8/mjsunit/error-accessors.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the message property of error objects is a data property. - -var o; - -// message is constructed using the constructor. -var error1 = new Error("custom message"); -o = {}; -o.__proto__ = error1; - -assertEquals("custom message", - Object.getOwnPropertyDescriptor(error1, "message").value); -o.message = "another message"; -assertEquals("another message", o.message); -assertEquals("custom message", error1.message); - -// message is constructed by the runtime. -var error2; -try { x.x } catch (e) { error2 = e; } -o = {}; -o.__proto__ = error2; - -assertEquals("x is not defined", - Object.getOwnPropertyDescriptor(error2, "message").value); -o.message = "another message"; -assertEquals("another message", o.message); -assertEquals("x is not defined", error2.message); diff --git a/implementation-contributed/v8/mjsunit/error-constructors.js b/implementation-contributed/v8/mjsunit/error-constructors.js deleted file mode 100644 index 5c2aac5b870..00000000000 --- a/implementation-contributed/v8/mjsunit/error-constructors.js +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that message and name are not enumerable on Error objects. -var desc = Object.getOwnPropertyDescriptor(Error.prototype, 'name'); -assertFalse(desc['enumerable']); -desc = Object.getOwnPropertyDescriptor(Error.prototype, 'message'); -assertFalse(desc['enumerable']); - -var e = new Error("foobar"); -desc = Object.getOwnPropertyDescriptor(e, 'message'); -assertFalse(desc['enumerable']); -desc = Object.getOwnPropertyDescriptor(e, 'stack'); -assertFalse(desc['enumerable']); - -var e = new Error(); -assertFalse(e.hasOwnProperty('message')); - -// name is not tested above, but in addition we should have no enumerable -// properties, so we simply assert that. -for (var v in e) { - assertUnreachable(); -} - -// Check that error construction does not call setters for the -// properties on error objects in prototypes. -function fail() { assertUnreachable(); }; -ReferenceError.prototype.__defineSetter__('name', fail); -ReferenceError.prototype.__defineSetter__('message', fail); -ReferenceError.prototype.__defineSetter__('stack', fail); - -var e = new ReferenceError(); -assertTrue(e.hasOwnProperty('stack')); - -var e = new ReferenceError('123'); -assertTrue(e.hasOwnProperty('message')); -assertTrue(e.hasOwnProperty('stack')); - -try { - eval("var error = reference"); -} catch (error) { - e = error; -} - -assertTrue(e.hasOwnProperty('stack')); - -// Check that intercepting property access from toString is prevented for -// compiler errors. This is not specified, but allowing interception through a -// getter can leak error objects from different script tags in the same context -// in a browser setting. Use Realm.eval as a proxy for loading scripts. We -// ignore the exception thrown from it since that would not be catchable from -// user-land code. -var errors = [SyntaxError, ReferenceError, TypeError, RangeError, URIError]; -var error_triggers = ["syntax error", - "var error = reference", - "undefined()", - "String.fromCodePoint(0xFFFFFF)", - "decodeURI('%F')"]; -for (var i in errors) { - // Monkey-patch prototype. - for (var prop of ["name", "message", "stack"]) { - errors[i].prototype.__defineGetter__(prop, fail); - } - // String conversion should not invoke monkey-patched getters on prototype. - assertThrows(()=>Realm.eval(0, error_triggers[i])); -} - -// Monkey-patching non-internal errors should still be observable. -function MyError() {} -MyError.prototype = new Error; -var errors = [Error, RangeError, EvalError, URIError, - SyntaxError, ReferenceError, TypeError, MyError]; -for (var i in errors) { - errors[i].prototype.__defineGetter__("name", function() { return "my"; }); - errors[i].prototype.__defineGetter__("message", function() { return "moo"; }); - var e = new errors[i]; - assertEquals("my: moo", e.toString()); -} - - -Error.prototype.toString = Object.prototype.toString; -assertEquals("[object Object]", Error.prototype.toString()); -assertEquals(Object.prototype, Error.prototype.__proto__); -var e = new Error("foo"); -assertEquals("[object Error]", e.toString()); diff --git a/implementation-contributed/v8/mjsunit/error-tostring-omit.js b/implementation-contributed/v8/mjsunit/error-tostring-omit.js deleted file mode 100644 index 48e1399d7a1..00000000000 --- a/implementation-contributed/v8/mjsunit/error-tostring-omit.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function veryLongString() { - return "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - "Nam vulputate metus est. Maecenas quis pellentesque eros," + - "ac mattis augue. Nam porta purus vitae tincidunt blandit." + - "Aliquam lacus dui, blandit id consectetur id, hendrerit ut" + - "felis. Class aptent taciti sociosqu ad litora torquent per" + - "conubia nostra, per inceptos himenaeos. Ut posuere eros et" + - "tempus luctus. Nullam condimentum aliquam odio, at dignissim" + - "augue tincidunt in. Nam mattis vitae mauris eget dictum." + - "Nam accumsan dignissim turpis a turpis duis."; -} - -assertTrue(veryLongString().length > 256); - -var re = /....../; - -try { - Date.prototype.setDate.call(veryLongString); -} catch (e) { - assertTrue(e.message.length < 256); - assertTrue(re.test(e.message)); -} - -try { - throw Error(veryLongString()); -} catch (e) { - assertEquals(veryLongString(), e.message); -} diff --git a/implementation-contributed/v8/mjsunit/error-tostring.js b/implementation-contributed/v8/mjsunit/error-tostring.js deleted file mode 100644 index e4fc6af9db8..00000000000 --- a/implementation-contributed/v8/mjsunit/error-tostring.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Test default string representation of an Error object. - -var e = new Error(); -assertEquals('Error', e.toString()); - - -// Test printing of cyclic errors which return the empty string for -// compatibility with Safari and Firefox. - -e = new Error(); -e.name = e; -e.message = e; -e.stack = "Does not occur in output"; -e.arguments = "Does not occur in output"; -e.type = "Does not occur in output"; -assertThrows(()=>e.toString(), RangeError); - -e = new Error(); -e.name = [ e ]; -e.message = [ e ]; -e.stack = "Does not occur in output"; -e.arguments = "Does not occur in output"; -e.type = "Does not occur in output"; -assertEquals('', e.toString()); - - -// Test the sequence in which getters and toString operations are called -// on a given Error object. Verify the produced string representation. - -function testErrorToString(nameValue, messageValue) { - var seq = []; - var e = { - get name() { - seq.push(1); - return (nameValue === undefined) ? nameValue : { - toString: function() { seq.push(2); return nameValue; } - }; - }, - get message() { - seq.push(3); - return (messageValue === undefined) ? messageValue : { - toString: function() { seq.push(4); return messageValue; } - }; - } - }; - var string = Error.prototype.toString.call(e); - return [string,seq]; -} - -assertEquals(["Error",[1,3]], testErrorToString(undefined, undefined)); -assertEquals(["e1",[1,2,3]], testErrorToString("e1", undefined)); -assertEquals(["e1: null",[1,2,3,4]], testErrorToString("e1", null)); -assertEquals(["e1",[1,2,3,4]], testErrorToString("e1", "")); -assertEquals(["Error: e2",[1,3,4]], testErrorToString(undefined, "e2")); -assertEquals(["null: e2",[1,2,3,4]], testErrorToString(null, "e2")); -assertEquals(["e2",[1,2,3,4]], testErrorToString("", "e2")); -assertEquals(["e1: e2",[1,2,3,4]], testErrorToString("e1", "e2")); - -var obj = { - get constructor () { - assertUnreachable(); - } -}; - -assertThrows(function() { obj.x(); }); diff --git a/implementation-contributed/v8/mjsunit/es6/arguments-iterator.js b/implementation-contributed/v8/mjsunit/es6/arguments-iterator.js deleted file mode 100644 index 602294e9fce..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/arguments-iterator.js +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -// Note in general that "arguments.foo" and "var o = arguments; o.foo" -// are treated differently by full-codegen, and so both cases need to be -// tested. - -function TestDirectArgumentsIteratorProperty() { - assertTrue(arguments.hasOwnProperty(Symbol.iterator)); - assertFalse(arguments.propertyIsEnumerable(Symbol.iterator)); - var descriptor = Object.getOwnPropertyDescriptor(arguments, Symbol.iterator); - assertTrue(descriptor.writable); - assertFalse(descriptor.enumerable); - assertTrue(descriptor.configurable); - assertEquals(descriptor.value, [][Symbol.iterator]); - assertEquals(arguments[Symbol.iterator], [][Symbol.iterator]); -} -TestDirectArgumentsIteratorProperty(); - - -function TestIndirectArgumentsIteratorProperty() { - var o = arguments; - assertTrue(o.hasOwnProperty(Symbol.iterator)); - assertFalse(o.propertyIsEnumerable(Symbol.iterator)); - assertEquals(o[Symbol.iterator], [][Symbol.iterator]); -} -TestIndirectArgumentsIteratorProperty(); - - -function assertIteratorResult(value, done, result) { - assertEquals({value: value, done: done}, result); -} - - -function TestDirectValues1(a, b, c) { - var iterator = arguments[Symbol.iterator](); - assertIteratorResult(a, false, iterator.next()); - assertIteratorResult(b, false, iterator.next()); - assertIteratorResult(c, false, iterator.next()); - assertIteratorResult(undefined, true, iterator.next()); -} -TestDirectValues1(1, 2, 3); - - -function TestIndirectValues1(a, b, c) { - var args = arguments; - var iterator = args[Symbol.iterator](); - assertIteratorResult(a, false, iterator.next()); - assertIteratorResult(b, false, iterator.next()); - assertIteratorResult(c, false, iterator.next()); - assertIteratorResult(undefined, true, iterator.next()); -} -TestIndirectValues1(1, 2, 3); - - -function TestDirectValues2(a, b, c) { - var iterator = arguments[Symbol.iterator](); - assertIteratorResult(a, false, iterator.next()); - assertIteratorResult(b, false, iterator.next()); - assertIteratorResult(c, false, iterator.next()); - assertIteratorResult(undefined, true, iterator.next()); - - arguments[3] = 4; - arguments.length = 4; - assertIteratorResult(undefined, true, iterator.next()); -} -TestDirectValues2(1, 2, 3); - - -function TestIndirectValues2(a, b, c) { - var args = arguments; - var iterator = args[Symbol.iterator](); - assertIteratorResult(a, false, iterator.next()); - assertIteratorResult(b, false, iterator.next()); - assertIteratorResult(c, false, iterator.next()); - assertIteratorResult(undefined, true, iterator.next()); - - arguments[3] = 4; - arguments.length = 4; - assertIteratorResult(undefined, true, iterator.next()); -} -TestIndirectValues2(1, 2, 3); - - -function TestDirectValues3(a, b, c) { - var iterator = arguments[Symbol.iterator](); - assertIteratorResult(a, false, iterator.next()); - assertIteratorResult(b, false, iterator.next()); - - arguments.length = 2; - assertIteratorResult(undefined, true, iterator.next()); -} -TestDirectValues3(1, 2, 3); - - -function TestIndirectValues3(a, b, c) { - var args = arguments; - var iterator = args[Symbol.iterator](); - assertIteratorResult(a, false, iterator.next()); - assertIteratorResult(b, false, iterator.next()); - - arguments.length = 2; - assertIteratorResult(undefined, true, iterator.next()); -} -TestIndirectValues3(1, 2, 3); - - -function TestDirectValues4(a, b, c) { - var iterator = arguments[Symbol.iterator](); - assertIteratorResult(a, false, iterator.next()); - assertIteratorResult(b, false, iterator.next()); - assertIteratorResult(c, false, iterator.next()); - - arguments.length = 4; - assertIteratorResult(undefined, false, iterator.next()); - assertIteratorResult(undefined, true, iterator.next()); -} -TestDirectValues4(1, 2, 3); - - -function TestIndirectValues4(a, b, c) { - var args = arguments; - var iterator = args[Symbol.iterator](); - assertIteratorResult(a, false, iterator.next()); - assertIteratorResult(b, false, iterator.next()); - assertIteratorResult(c, false, iterator.next()); - - arguments.length = 4; - assertIteratorResult(undefined, false, iterator.next()); - assertIteratorResult(undefined, true, iterator.next()); -} -TestIndirectValues4(1, 2, 3); - - -function TestForOf() { - var i = 0; - for (var value of arguments) { - assertEquals(arguments[i++], value); - } - - assertEquals(arguments.length, i); -} -TestForOf(1, 2, 3, 4, 5); - - -function TestAssignmentToIterator() { - var i = 0; - arguments[Symbol.iterator] = [].entries; - for (var entry of arguments) { - assertEquals([i, arguments[i]], entry); - i++; - } - - assertEquals(arguments.length, i); -} -TestAssignmentToIterator(1, 2, 3, 4, 5); - - -// Regression test for crbug.com/521484. -function TestAssignmentToIterator2() { - var i = 0; - arguments.__defineGetter__('callee', function(){}); - arguments.__defineGetter__('length', function(){ return 1 }); - arguments[Symbol.iterator] = [].entries; - for (var entry of arguments) { - assertEquals([i, arguments[i]], entry); - i++; - } - - assertEquals(arguments.length, i); -} -TestAssignmentToIterator2(1, 2, 3, 4, 5); - -function TestArgumentsMutation() { - var i = 0; - for (var x of arguments) { - assertEquals(arguments[i], x); - arguments[i+1] *= 2; - i++; - } - - assertEquals(arguments.length, i); -} -TestArgumentsMutation(1, 2, 3, 4, 5); - - -function TestSloppyArgumentsAliasing(a0, a1, a2, a3, a4) { - var i = 0; - for (var x of arguments) { - assertEquals(arguments[i], x); - a0 = a1; a1 = a2; a3 = a4; - i++; - } - - assertEquals(arguments.length, i); -} -TestSloppyArgumentsAliasing(1, 2, 3, 4, 5); - - -function TestStrictArgumentsAliasing(a0, a1, a2, a3, a4) { - "use strict"; - var i = 0; - for (var x of arguments) { - a0 = a1; a1 = a2; a3 = a4; - assertEquals(arguments[i], x); - i++; - } - - assertEquals(arguments.length, i); -} -TestStrictArgumentsAliasing(1, 2, 3, 4, 5); - - -function TestArgumentsAsProto() { - "use strict"; - - var o = {__proto__:arguments}; - assertSame([][Symbol.iterator], o[Symbol.iterator]); - // Make o dict-mode. - %OptimizeObjectForAddingMultipleProperties(o, 0); - assertFalse(o.hasOwnProperty(Symbol.iterator)); - assertSame([][Symbol.iterator], o[Symbol.iterator]); - o[Symbol.iterator] = 10; - assertTrue(o.hasOwnProperty(Symbol.iterator)); - assertEquals(10, o[Symbol.iterator]); - assertSame([][Symbol.iterator], arguments[Symbol.iterator]); - - // Frozen o. - o = Object.freeze({__proto__:arguments}); - assertSame([][Symbol.iterator], o[Symbol.iterator]); - assertFalse(o.hasOwnProperty(Symbol.iterator)); - assertSame([][Symbol.iterator], o[Symbol.iterator]); - assertThrows(function () { o[Symbol.iterator] = 10 }); - assertFalse(o.hasOwnProperty(Symbol.iterator)); - assertEquals([][Symbol.iterator], o[Symbol.iterator]); - assertSame([][Symbol.iterator], arguments[Symbol.iterator]); -} -TestArgumentsAsProto(); diff --git a/implementation-contributed/v8/mjsunit/es6/array-concat-revoked-proxy-1.js b/implementation-contributed/v8/mjsunit/es6/array-concat-revoked-proxy-1.js deleted file mode 100644 index 2dfddc3504f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-concat-revoked-proxy-1.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testConcatRevokedProxyToArrayInPrototype() { - "use strict"; - var handler = { - get(_, name) { - if (name === Symbol.isConcatSpreadable) { - p.revoke(); - } - return target[name]; - } - } - - var p = Proxy.revocable([], handler); - var target = { __proto__: p.proxy }; - assertThrows(function() { [].concat(target); }, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/array-concat-revoked-proxy-2.js b/implementation-contributed/v8/mjsunit/es6/array-concat-revoked-proxy-2.js deleted file mode 100644 index f91eb655bf0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-concat-revoked-proxy-2.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testConcatRevokedProxyToArray() { - "use strict"; - var handler = { - get(_, name) { - if (name === Symbol.isConcatSpreadable) { - p.revoke(); - } - return target[name]; - } - } - - var target = []; - var p = Proxy.revocable(target, handler); - assertThrows(function() { [].concat(p.proxy); }, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/array-concat.js b/implementation-contributed/v8/mjsunit/es6/array-concat.js deleted file mode 100644 index f57c10e03eb..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-concat.js +++ /dev/null @@ -1,896 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -(function testArrayConcatArity() { - "use strict"; - assertEquals(1, Array.prototype.concat.length); -})(); - - -(function testArrayConcatNoPrototype() { - "use strict"; - assertEquals(void 0, Array.prototype.concat.prototype); -})(); - - -(function testArrayConcatDescriptor() { - "use strict"; - var desc = Object.getOwnPropertyDescriptor(Array.prototype, 'concat'); - assertEquals(false, desc.enumerable); -})(); - -(function testNonConcatSpreadableArray() { - "use strict" - var array = [1, 2, 3]; - assertEquals(array, [].concat(array)); - assertEquals(array, array.concat([])); - array[Symbol.isConcatSpreadable] = false; - assertEquals([[1,2,3]], [].concat(array)); - assertEquals([[1,2,3]], array.concat([])); -})(); - -(function testConcatArrayLike() { - "use strict"; - var obj = { - "length": 6, - "1": "A", - "3": "B", - "5": "C" - }; - obj[Symbol.isConcatSpreadable] = true; - var obj2 = { length: 3, "0": "0", "1": "1", "2": "2" }; - var arr = ["X", "Y", "Z"]; - assertEquals([void 0, "A", void 0, "B", void 0, "C", - { "length": 3, "0": "0", "1": "1", "2": "2" }, - "X", "Y", "Z"], Array.prototype.concat.call(obj, obj2, arr)); -})(); - - -(function testConcatArrayLikeStringLength() { - "use strict"; - var obj = { - "length": "6", - "1": "A", - "3": "B", - "5": "C" - }; - obj[Symbol.isConcatSpreadable] = true; - var obj2 = { length: 3, "0": "0", "1": "1", "2": "2" }; - var arr = ["X", "Y", "Z"]; - assertEquals([void 0, "A", void 0, "B", void 0, "C", - { "length": 3, "0": "0", "1": "1", "2": "2" }, - "X", "Y", "Z"], Array.prototype.concat.call(obj, obj2, arr)); -})(); - - -(function testConcatArrayLikeNegativeLength() { - "use strict"; - var obj = { - "length": -6, - "1": "A", - "3": "B", - "5": "C" - }; - obj[Symbol.isConcatSpreadable] = true; - assertEquals([], [].concat(obj)); - obj.length = -6.7; - assertEquals([], [].concat(obj)); - obj.length = "-6"; - assertEquals([], [].concat(obj)); -})(); - - -(function testConcatArrayLikeToLengthThrows() { - "use strict"; - var obj = { - "length": {valueOf: null, toString: null}, - "1": "A", - "3": "B", - "5": "C" - }; - obj[Symbol.isConcatSpreadable] = true; - var obj2 = { length: 3, "0": "0", "1": "1", "2": "2" }; - var arr = ["X", "Y", "Z"]; - assertThrows(function() { - Array.prototype.concat.call(obj, obj2, arr); - }, TypeError); -})(); - - -(function testConcatArrayLikePrimitiveNonNumberLength() { - "use strict"; - var obj = { - "1": "A", - "3": "B", - "5": "C" - }; - obj[Symbol.isConcatSpreadable] = true; - obj.length = {toString: function() { return "SIX"; }, valueOf: null }; - assertEquals([], [].concat(obj)); - obj.length = {toString: null, valueOf: function() { return "SIX"; } }; - assertEquals([], [].concat(obj)); -})(); - - -(function testConcatArrayLikeLengthToStringThrows() { - "use strict"; - function MyError() {} - var obj = { - "length": { toString: function() { - throw new MyError(); - }, valueOf: null - }, - "1": "A", - "3": "B", - "5": "C" - }; - obj[Symbol.isConcatSpreadable] = true; - assertThrows(function() { - [].concat(obj); - }, MyError); -})(); - - -(function testConcatArrayLikeLengthValueOfThrows() { - "use strict"; - function MyError() {} - var obj = { - "length": { valueOf: function() { - throw new MyError(); - }, toString: null - }, - "1": "A", - "3": "B", - "5": "C" -}; -obj[Symbol.isConcatSpreadable] = true; -assertThrows(function() { - [].concat(obj); -}, MyError); -})(); - - -(function testConcatHoleyArray() { - "use strict"; - var arr = []; - arr[4] = "Item 4"; - arr[8] = "Item 8"; - var arr2 = [".", "!", "?"]; - assertEquals([void 0, void 0, void 0, void 0, "Item 4", void 0, void 0, - void 0, "Item 8", ".", "!", "?"], arr.concat(arr2)); -})(); - - -(function testIsConcatSpreadableGetterThrows() { - "use strict"; - function MyError() {} - var obj = {}; - Object.defineProperty(obj, Symbol.isConcatSpreadable, { - get: function() { throw new MyError(); } - }); - - assertThrows(function() { - [].concat(obj); - }, MyError); - - assertThrows(function() { - Array.prototype.concat.call(obj, 1, 2, 3); - }, MyError); -})(); - - -(function testConcatLengthThrows() { - "use strict"; - function MyError() {} - var obj = {}; - obj[Symbol.isConcatSpreadable] = true; - Object.defineProperty(obj, "length", { - get: function() { throw new MyError(); } - }); - - assertThrows(function() { - [].concat(obj); - }, MyError); - - assertThrows(function() { - Array.prototype.concat.call(obj, 1, 2, 3); - }, MyError); -})(); - - -(function testConcatArraySubclass() { - "use strict"; - // If @@isConcatSpreadable is not used, the value of IsArray(O) - // is used to determine the spreadable property. - class A extends Array {} - var obj = [].concat(new A(1, 2, 3), new A(4, 5, 6), new A(7, 8, 9)); - assertEquals(9, obj.length); - for (var i = 0; i < obj.length; ++i) { - assertEquals(i + 1, obj[i]); - } - - // TODO(caitp): when concat is called on instances of classes which extend - // Array, they should: - // - // - return an instance of the class, rather than an Array instance (if from - // same Realm) - // - always treat such classes as concat-spreadable -})(); - - -(function testConcatArraySubclassOptOut() { - "use strict"; - class A extends Array { - get [Symbol.isConcatSpreadable]() { return false; } - } - var obj = [].concat(new A(1, 2, 3), new A(4, 5, 6), new A(7, 8, 9)); - assertEquals(3, obj.length); - assertEquals(3, obj[0].length); - assertEquals(3, obj[1].length); - assertEquals(3, obj[2].length); -})(); - - -(function testConcatNonArray() { - "use strict"; - class NonArray { - constructor() { Array.apply(this, arguments); } - }; - - var obj = new NonArray(1,2,3); - var result = Array.prototype.concat.call(obj, 4, 5, 6); - assertEquals(Array, result.constructor); - assertEquals([obj,4,5,6], result); - assertFalse(result instanceof NonArray); -})(); - - -function testConcatTypedArray(type, elems, modulo) { - "use strict"; - var items = new Array(elems); - var ta_by_len = new type(elems); - for (var i = 0; i < elems; ++i) { - ta_by_len[i] = items[i] = modulo === false ? i : elems % modulo; - } - var ta = new type(items); - assertEquals([ta, ta], [].concat(ta, ta)); - ta[Symbol.isConcatSpreadable] = true; - assertEquals(items, [].concat(ta)); - - assertEquals([ta_by_len, ta_by_len], [].concat(ta_by_len, ta_by_len)); - ta_by_len[Symbol.isConcatSpreadable] = true; - assertEquals(items, [].concat(ta_by_len)); - - // TypedArray with fake `length`. - ta = new type(1); - var defValue = ta[0]; - var expected = new Array(4000); - expected[0] = defValue; - - Object.defineProperty(ta, "length", { value: 4000 }); - ta[Symbol.isConcatSpreadable] = true; - assertEquals(expected, [].concat(ta)); -} - -(function testConcatSmallTypedArray() { - var length = 1; - testConcatTypedArray(Uint8Array, length, Math.pow(2, 8)); - testConcatTypedArray(Uint16Array, length, Math.pow(2, 16)); - testConcatTypedArray(Uint32Array, length, Math.pow(2, 32)); - testConcatTypedArray(Float32Array, length, false); - testConcatTypedArray(Float64Array, length, false); -})(); - - -(function testConcatLargeTypedArray() { - var length = 4000; - testConcatTypedArray(Uint8Array, length, Math.pow(2, 8)); - testConcatTypedArray(Uint16Array, length, Math.pow(2, 16)); - testConcatTypedArray(Uint32Array, length, Math.pow(2, 32)); - testConcatTypedArray(Float32Array, length, false); - testConcatTypedArray(Float64Array, length, false); -})(); - - -(function testConcatStrictArguments() { - var args = (function(a, b, c) { "use strict"; return arguments; })(1,2,3); - args[Symbol.isConcatSpreadable] = true; - assertEquals([1, 2, 3, 1, 2, 3], [].concat(args, args)); - - Object.defineProperty(args, "length", { value: 6 }); - assertEquals([1, 2, 3, void 0, void 0, void 0], [].concat(args)); -})(); - - -(function testConcatSloppyArguments() { - var args = (function(a, b, c) { return arguments; })(1,2,3); - args[Symbol.isConcatSpreadable] = true; - assertEquals([1, 2, 3, 1, 2, 3], [].concat(args, args)); - - Object.defineProperty(args, "length", { value: 6 }); - assertEquals([1, 2, 3, void 0, void 0, void 0], [].concat(args)); -})(); - - -(function testConcatSloppyArgumentsWithDupes() { - var args = (function(a, a, a) { return arguments; })(1,2,3); - args[Symbol.isConcatSpreadable] = true; - assertEquals([1, 2, 3, 1, 2, 3], [].concat(args, args)); - - Object.defineProperty(args, "length", { value: 6 }); - assertEquals([1, 2, 3, void 0, void 0, void 0], [].concat(args)); -})(); - - -(function testConcatSloppyArgumentsThrows() { - function MyError() {} - var args = (function(a) { return arguments; })(1,2,3); - Object.defineProperty(args, 0, { - get: function() { throw new MyError(); } - }); - args[Symbol.isConcatSpreadable] = true; - assertThrows(function() { - return [].concat(args, args); - }, MyError); -})(); - - -(function testConcatHoleySloppyArguments() { - var args = (function(a) { return arguments; })(1,2,3); - delete args[1]; - args[Symbol.isConcatSpreadable] = true; - assertEquals([1, void 0, 3, 1, void 0, 3], [].concat(args, args)); -})(); - - -(function testConcatSpreadableStringWrapper() { - "use strict"; - var str1 = new String("yuck\uD83D\uDCA9") - // String wrapper objects are not concat-spreadable by default - assertEquals([str1], [].concat(str1)); - - // String wrapper objects may be individually concat-spreadable - str1[Symbol.isConcatSpreadable] = true; - assertEquals(["y", "u", "c", "k", "\uD83D", "\uDCA9"], - [].concat(str1)); - - String.prototype[Symbol.isConcatSpreadable] = true; - // String wrapper objects may be concat-spreadable - assertEquals(["y", "u", "c", "k", "\uD83D", "\uDCA9"], - [].concat(new String("yuck\uD83D\uDCA9"))); - - // String values are never concat-spreadable - assertEquals(["yuck\uD83D\uDCA9"], [].concat("yuck\uD83D\uDCA9")); - delete String.prototype[Symbol.isConcatSpreadable]; -})(); - - -(function testConcatSpreadableBooleanWrapper() { - "use strict"; - var bool = new Boolean(true) - // Boolean wrapper objects are not concat-spreadable by default - assertEquals([bool], [].concat(bool)); - - // Boolean wrapper objects may be individually concat-spreadable - bool[Symbol.isConcatSpreadable] = true; - bool.length = 3; - bool[0] = 1, bool[1] = 2, bool[2] = 3; - assertEquals([1, 2, 3], [].concat(bool)); - - Boolean.prototype[Symbol.isConcatSpreadable] = true; - // Boolean wrapper objects may be concat-spreadable - assertEquals([], [].concat(new Boolean(true))); - Boolean.prototype[0] = 1; - Boolean.prototype[1] = 2; - Boolean.prototype[2] = 3; - Boolean.prototype.length = 3; - assertEquals([1,2,3], [].concat(new Boolean(true))); - - // Boolean values are never concat-spreadable - assertEquals([true], [].concat(true)); - delete Boolean.prototype[Symbol.isConcatSpreadable]; - delete Boolean.prototype[0]; - delete Boolean.prototype[1]; - delete Boolean.prototype[2]; - delete Boolean.prototype.length; -})(); - - -(function testConcatSpreadableNumberWrapper() { - "use strict"; - var num = new Number(true) - // Number wrapper objects are not concat-spreadable by default - assertEquals([num], [].concat(num)); - - // Number wrapper objects may be individually concat-spreadable - num[Symbol.isConcatSpreadable] = true; - num.length = 3; - num[0] = 1, num[1] = 2, num[2] = 3; - assertEquals([1, 2, 3], [].concat(num)); - - Number.prototype[Symbol.isConcatSpreadable] = true; - // Number wrapper objects may be concat-spreadable - assertEquals([], [].concat(new Number(123))); - Number.prototype[0] = 1; - Number.prototype[1] = 2; - Number.prototype[2] = 3; - Number.prototype.length = 3; - assertEquals([1,2,3], [].concat(new Number(123))); - - // Number values are never concat-spreadable - assertEquals([true], [].concat(true)); - delete Number.prototype[Symbol.isConcatSpreadable]; - delete Number.prototype[0]; - delete Number.prototype[1]; - delete Number.prototype[2]; - delete Number.prototype.length; -})(); - - -(function testConcatSpreadableFunction() { - "use strict"; - var fn = function(a, b, c) {} - // Functions are not concat-spreadable by default - assertEquals([fn], [].concat(fn)); - - // Functions may be individually concat-spreadable - fn[Symbol.isConcatSpreadable] = true; - fn[0] = 1, fn[1] = 2, fn[2] = 3; - assertEquals([1, 2, 3], [].concat(fn)); - - Function.prototype[Symbol.isConcatSpreadable] = true; - // Functions may be concat-spreadable - assertEquals([void 0, void 0, void 0], [].concat(function(a,b,c) {})); - Function.prototype[0] = 1; - Function.prototype[1] = 2; - Function.prototype[2] = 3; - assertEquals([1,2,3], [].concat(function(a, b, c) {})); - - delete Function.prototype[Symbol.isConcatSpreadable]; - delete Function.prototype[0]; - delete Function.prototype[1]; - delete Function.prototype[2]; -})(); - - -(function testConcatSpreadableRegExp() { - "use strict"; - var re = /abc/; - // RegExps are not concat-spreadable by default - assertEquals([re], [].concat(re)); - - // RegExps may be individually concat-spreadable - re[Symbol.isConcatSpreadable] = true; - re[0] = 1, re[1] = 2, re[2] = 3, re.length = 3; - assertEquals([1, 2, 3], [].concat(re)); - - // RegExps may be concat-spreadable - RegExp.prototype[Symbol.isConcatSpreadable] = true; - RegExp.prototype.length = 3; - - assertEquals([void 0, void 0, void 0], [].concat(/abc/)); - RegExp.prototype[0] = 1; - RegExp.prototype[1] = 2; - RegExp.prototype[2] = 3; - assertEquals([1,2,3], [].concat(/abc/)); - - delete RegExp.prototype[Symbol.isConcatSpreadable]; - delete RegExp.prototype[0]; - delete RegExp.prototype[1]; - delete RegExp.prototype[2]; - delete RegExp.prototype.length; -})(); - - -(function testArrayConcatSpreadableSparseObject() { - "use strict"; - var obj = { length: 5 }; - obj[Symbol.isConcatSpreadable] = true; - assertEquals([void 0, void 0, void 0, void 0, void 0], [].concat(obj)); - - obj.length = 4000; - assertEquals(new Array(4000), [].concat(obj)); -})(); - - -// ES5 tests -(function testArrayConcatES5() { - "use strict"; - var poses; - var pos; - - poses = [140, 4000000000]; - while (pos = poses.shift()) { - var a = new Array(pos); - var array_proto = []; - a.__proto__ = array_proto; - assertEquals(pos, a.length); - a.push('foo'); - assertEquals(pos + 1, a.length); - var b = ['bar']; - var c = a.concat(b); - assertEquals(pos + 2, c.length); - assertEquals("undefined", typeof(c[pos - 1])); - assertEquals("foo", c[pos]); - assertEquals("bar", c[pos + 1]); - - // Can we fool the system by putting a number in a string? - var onetwofour = "124"; - a[onetwofour] = 'doo'; - assertEquals(a[124], 'doo'); - c = a.concat(b); - assertEquals(c[124], 'doo'); - - // If we put a number in the prototype, then the spec says it should be - // copied on concat. - array_proto["123"] = 'baz'; - assertEquals(a[123], 'baz'); - - c = a.concat(b); - assertEquals(pos + 2, c.length); - assertEquals("baz", c[123]); - assertEquals("undefined", typeof(c[pos - 1])); - assertEquals("foo", c[pos]); - assertEquals("bar", c[pos + 1]); - - // When we take the number off the prototype it disappears from a, but - // the concat put it in c itself. - array_proto["123"] = undefined; - assertEquals("undefined", typeof(a[123])); - assertEquals("baz", c[123]); - - // If the element of prototype is shadowed, the element on the instance - // should be copied, but not the one on the prototype. - array_proto[123] = 'baz'; - a[123] = 'xyz'; - assertEquals('xyz', a[123]); - c = a.concat(b); - assertEquals('xyz', c[123]); - - // Non-numeric properties on the prototype or the array shouldn't get - // copied. - array_proto.moe = 'joe'; - a.ben = 'jerry'; - assertEquals(a["moe"], 'joe'); - assertEquals(a["ben"], 'jerry'); - c = a.concat(b); - // ben was not copied - assertEquals("undefined", typeof(c.ben)); - - // When we take moe off the prototype it disappears from all arrays. - array_proto.moe = undefined; - assertEquals("undefined", typeof(c.moe)); - - // Negative indices don't get concated. - a[-1] = 'minus1'; - assertEquals("minus1", a[-1]); - assertEquals("undefined", typeof(a[0xffffffff])); - c = a.concat(b); - assertEquals("undefined", typeof(c[-1])); - assertEquals("undefined", typeof(c[0xffffffff])); - assertEquals(c.length, a.length + 1); - } - - poses = [140, 4000000000]; - while (pos = poses.shift()) { - var a = new Array(pos); - assertEquals(pos, a.length); - a.push('foo'); - assertEquals(pos + 1, a.length); - var b = ['bar']; - var c = a.concat(b); - assertEquals(pos + 2, c.length); - assertEquals("undefined", typeof(c[pos - 1])); - assertEquals("foo", c[pos]); - assertEquals("bar", c[pos + 1]); - - // Can we fool the system by putting a number in a string? - var onetwofour = "124"; - a[onetwofour] = 'doo'; - assertEquals(a[124], 'doo'); - c = a.concat(b); - assertEquals(c[124], 'doo'); - - // If we put a number in the prototype, then the spec says it should be - // copied on concat. - Array.prototype["123"] = 'baz'; - assertEquals(a[123], 'baz'); - - c = a.concat(b); - assertEquals(pos + 2, c.length); - assertEquals("baz", c[123]); - assertEquals("undefined", typeof(c[pos - 1])); - assertEquals("foo", c[pos]); - assertEquals("bar", c[pos + 1]); - - // When we take the number off the prototype it disappears from a, but - // the concat put it in c itself. - Array.prototype["123"] = undefined; - assertEquals("undefined", typeof(a[123])); - assertEquals("baz", c[123]); - - // If the element of prototype is shadowed, the element on the instance - // should be copied, but not the one on the prototype. - Array.prototype[123] = 'baz'; - a[123] = 'xyz'; - assertEquals('xyz', a[123]); - c = a.concat(b); - assertEquals('xyz', c[123]); - - // Non-numeric properties on the prototype or the array shouldn't get - // copied. - Array.prototype.moe = 'joe'; - a.ben = 'jerry'; - assertEquals(a["moe"], 'joe'); - assertEquals(a["ben"], 'jerry'); - c = a.concat(b); - // ben was not copied - assertEquals("undefined", typeof(c.ben)); - // moe was not copied, but we can see it through the prototype - assertEquals("joe", c.moe); - - // When we take moe off the prototype it disappears from all arrays. - Array.prototype.moe = undefined; - assertEquals("undefined", typeof(c.moe)); - - // Negative indices don't get concated. - a[-1] = 'minus1'; - assertEquals("minus1", a[-1]); - assertEquals("undefined", typeof(a[0xffffffff])); - c = a.concat(b); - assertEquals("undefined", typeof(c[-1])); - assertEquals("undefined", typeof(c[0xffffffff])); - assertEquals(c.length, a.length + 1); - - } - - a = []; - c = a.concat('Hello'); - assertEquals(1, c.length); - assertEquals("Hello", c[0]); - assertEquals("Hello", c.toString()); - - // Check that concat preserves holes. - var holey = [void 0,'a',,'c'].concat(['d',,'f',[0,,2],void 0]) - assertEquals(9, holey.length); // hole in embedded array is ignored - for (var i = 0; i < holey.length; i++) { - if (i == 2 || i == 5) { - assertFalse(i in holey); - } else { - assertTrue(i in holey); - } - } - - // Polluted prototype from prior tests. - delete Array.prototype[123]; - - // Check that concat reads getters in the correct order. - var arr1 = [,2]; - var arr2 = [1,3]; - var r1 = [].concat(arr1, arr2); // [,2,1,3] - assertEquals([,2,1,3], r1); - - // Make first array change length of second array. - Object.defineProperty(arr1, 0, {get: function() { - arr2.push("X"); - return undefined; - }, configurable: true}) - var r2 = [].concat(arr1, arr2); // [undefined,2,1,3,"X"] - assertEquals([undefined,2,1,3,"X"], r2); - - // Make first array change length of second array massively. - arr2.length = 2; - Object.defineProperty(arr1, 0, {get: function() { - arr2[500000] = "X"; - return undefined; - }, configurable: true}) - var r3 = [].concat(arr1, arr2); // [undefined,2,1,3,"X"] - var expected = [undefined,2,1,3]; - expected[500000 + 2] = "X"; - - assertEquals(expected, r3); - - var arr3 = []; - var trace = []; - var expectedTrace = [] - function mkGetter(i) { return function() { trace.push(i); }; } - arr3.length = 10000; - for (var i = 0; i < 100; i++) { - Object.defineProperty(arr3, i * i, {get: mkGetter(i)}); - expectedTrace[i] = i; - expectedTrace[100 + i] = i; - } - var r4 = [0].concat(arr3, arr3); - assertEquals(1 + arr3.length * 2, r4.length); - assertEquals(expectedTrace, trace); - - // Clean up. - delete Array.prototype[123]; - delete Array.prototype["123"]; - delete Array.prototype["moe"]; -})(); - - - - -//////////////////////////////////////////////////////////////////////////////// -// Tests with proxies - -// Note: concat does not currently support species so there is no difference -// between [].concat(foo) and Array.prototype.concat.apply(foo). - - -var log = []; -var logger = {}; -var handler = new Proxy({}, logger); - -logger.get = function(t, trap, r) { - return function(...args) { - log.push([trap, ...args]); - return Reflect[trap](...args); - } -}; - - -(function testUnspreadableNonArrayLikeProxy() { - var target = {0: "a", 1: "b"}; - var obj = new Proxy(target, handler); - - log.length = 0; - assertEquals([obj], [].concat(obj)); - assertEquals(1, log.length); - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); - - log.length = 0; - assertEquals([obj], Array.prototype.concat.apply(obj)); - assertEquals(1, log.length); - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); -})(); - - -(function testSpreadableNonArrayLikeProxy() { - var target = {0: "a", 1: "b", [Symbol.isConcatSpreadable]: "truish"}; - var obj = new Proxy(target, handler); - - log.length = 0; - assertEquals([], [].concat(obj)); - assertEquals(2, log.length); - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); - assertEquals(["get", target, "length", obj], log[1]); - - log.length = 0; - assertEquals([], Array.prototype.concat.apply(obj)); - assertEquals(2, log.length); - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); - assertEquals(["get", target, "length", obj], log[1]); - - target.length = 3; - - log.length = 0; - assertEquals(["a", "b", undefined], [].concat(obj)); - assertEquals(7, log.length); - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); - assertEquals(["get", target, "length", obj], log[1]); - assertEquals(["has", target, "0"], log[2]); - assertEquals(["get", target, "0", obj], log[3]); - assertEquals(["has", target, "1"], log[4]); - assertEquals(["get", target, "1", obj], log[5]); - assertEquals(["has", target, "2"], log[6]); - - log.length = 0; - assertEquals(["a", "b", undefined], Array.prototype.concat.apply(obj)); - assertEquals(7, log.length); - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); - assertEquals(["get", target, "length", obj], log[1]); - assertEquals(["has", target, "0"], log[2]); - assertEquals(["get", target, "0", obj], log[3]); - assertEquals(["has", target, "1"], log[4]); - assertEquals(["get", target, "1", obj], log[5]); - assertEquals(["has", target, "2"], log[6]); -})(); - - -(function testUnspreadableArrayLikeProxy() { - var target = ["a", "b"]; - target[Symbol.isConcatSpreadable] = ""; - var obj = new Proxy(target, handler); - - log.length = 0; - assertEquals([obj], [].concat(obj)); - assertEquals(1, log.length); - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); - - log.length = 0; - assertEquals([obj], Array.prototype.concat.apply(obj)); - assertEquals(2, log.length); // An extra read for the constructor - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, "constructor", obj], log[0]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[1]); -})(); - - -(function testSpreadableArrayLikeProxy() { - var target = ["a", "b"]; - target[Symbol.isConcatSpreadable] = undefined; - var obj = new Proxy(target, handler); - - log.length = 0; - assertEquals(["a", "b"], [].concat(obj)); - assertEquals(6, log.length); - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); - assertEquals(["get", target, "length", obj], log[1]); - assertEquals(["has", target, "0"], log[2]); - assertEquals(["get", target, "0", obj], log[3]); - assertEquals(["has", target, "1"], log[4]); - assertEquals(["get", target, "1", obj], log[5]); - - log.length = 0; - assertEquals(["a", "b"], Array.prototype.concat.apply(obj)); - assertEquals(7, log.length); - for (var i in log) assertSame(target, log[i][1]); - assertEquals(["get", target, "constructor", obj], log[0]); - assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[1]); - assertEquals(["get", target, "length", obj], log[2]); - assertEquals(["has", target, "0"], log[3]); - assertEquals(["get", target, "0", obj], log[4]); - assertEquals(["has", target, "1"], log[5]); - assertEquals(["get", target, "1", obj], log[6]); -})(); - - -(function testSpreadableArrayLikeProxyWithNontrivialLength() { - var getTrap = function(t, key) { - if (key === "length") return {[Symbol.toPrimitive]() {return 3}}; - if (key === "2") return "baz"; - if (key === "3") return "bar"; - }; - var target = []; - var obj = new Proxy(target, {get: getTrap, has: () => true}); - - assertEquals([undefined, undefined, "baz"], [].concat(obj)); - assertEquals([undefined, undefined, "baz"], Array.prototype.concat.apply(obj)) -})(); - - -(function testSpreadableArrayLikeProxyWithBogusLength() { - var getTrap = function(t, key) { - if (key === "length") return Symbol(); - if (key === "2") return "baz"; - if (key === "3") return "bar"; - }; - var target = []; - var obj = new Proxy(target, {get: getTrap, has: () => true}); - - assertThrows(() => [].concat(obj), TypeError); - assertThrows(() => Array.prototype.concat.apply(obj), TypeError); -})(); - -(function testConcatRevokedProxy() { - "use strict"; - var target = []; - var handler = { - get(_, name) { - if (name === Symbol.isConcatSpreadable) { - p.revoke(); - } - return target[name]; - } - } - - p = Proxy.revocable(target, handler); - target = {}; - target.__proto__ = p.proxy; - assertThrows(function() { [].concat({ __proto__: p.proxy }); }, TypeError); - - target = []; - var p = Proxy.revocable(target, handler); - assertThrows(function() { [].concat(p.proxy); }, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/array-copywithin.js b/implementation-contributed/v8/mjsunit/es6/array-copywithin.js deleted file mode 100644 index ed52b7d5faa..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-copywithin.js +++ /dev/null @@ -1,336 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function copyWithinArity() { - assertEquals(Array.prototype.copyWithin.length, 2); -})(); - - -(function copyWithinTargetAndStart() { - // works with two arguemnts - assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 3)); - assertArrayEquals([1, 4, 5, 4, 5], [1, 2, 3, 4, 5].copyWithin(1, 3)); - assertArrayEquals([1, 3, 4, 5, 5], [1, 2, 3, 4, 5].copyWithin(1, 2)); - assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(2, 2)); -})(); - - -(function copyWithinTargetStartAndEnd() { - // works with three arguments - assertArrayEquals([1, 2, 3, 4, 5].copyWithin(0, 3, 4), [4, 2, 3, 4, 5]); - assertArrayEquals([1, 2, 3, 4, 5].copyWithin(1, 3, 4), [1, 4, 3, 4, 5]); - assertArrayEquals([1, 2, 3, 4, 5].copyWithin(1, 2, 4), [1, 3, 4, 4, 5]); -})(); - - -(function copyWithinNegativeRelativeOffsets() { - // works with negative arguments - assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, -2)); - assertArrayEquals([4, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, -2, -1)); - assertArrayEquals([1, 3, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(-4, -3, -2)); - assertArrayEquals([1, 3, 4, 4, 5], [1, 2, 3, 4, 5].copyWithin(-4, -3, -1)); - assertArrayEquals([1, 3, 4, 5, 5], [1, 2, 3, 4, 5].copyWithin(-4, -3)); - // test with arguments equal to -this.length - assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(-5, 0)); -})(); - - -(function copyWithinArrayLikeValues() { - // works with array-like values - var args = (function () { return arguments; }(1, 2, 3)); - Array.prototype.copyWithin.call(args, -2, 0); - assertArrayEquals([1, 1, 2], Array.prototype.slice.call(args)); - - // [[Class]] does not change - assertArrayEquals("[object Arguments]", Object.prototype.toString.call(args)); -})(); - - -(function copyWithinNullThis() { - // throws on null/undefined values - assertThrows(function() { - return Array.prototype.copyWithin.call(null, 0, 3); - }, TypeError); -})(); - - -(function copyWithinUndefinedThis() { - assertThrows(function() { - return Array.prototype.copyWithin.call(undefined, 0, 3); - }, TypeError); -})(); - - -// TODO(caitp): indexed properties of String are read-only and setting them -// should throw in strict mode. See bug v8:4042 -// (function copyWithinStringThis() { -// // test with this value as string -// assertThrows(function() { -// return Array.prototype.copyWithin.call("hello world", 0, 3); -// }, TypeError); -// })(); - - -(function copyWithinNumberThis() { - // test with this value as number - assertEquals(34, Array.prototype.copyWithin.call(34, 0, 3).valueOf()); -})(); - - -(function copyWithinSymbolThis() { - // test with this value as number - var sym = Symbol("test"); - assertEquals(sym, Array.prototype.copyWithin.call(sym, 0, 3).valueOf()); -})(); - - -(function copyyWithinTypedArray() { - // test with this value as TypedArray - var buffer = new ArrayBuffer(16); - var int32View = new Int32Array(buffer); - for (var i=0; i start on 2 arguments - assertArrayEquals([1, 2, 3, 1, 2], [1, 2, 3, 4, 5].copyWithin(3, 0)); - - // test with target > start on 3 arguments - assertArrayEquals([1, 2, 3, 1, 2], [1, 2, 3, 4, 5].copyWithin(3, 0, 4)); -})(); - - -(function copyWithinArrayWithHoles() { - // test on array with holes - var arr = new Array(6); - for (var i = 0; i < arr.length; i += 2) { - arr[i] = i; - } - assertArrayEquals([, 4, , , 4, , ], arr.copyWithin(0, 3)); -})(); - - -(function copyWithinArrayLikeWithHoles() { - // test on array-like object with holes - assertArrayEquals({ - length: 6, - 1: 4, - 4: 4 - }, Array.prototype.copyWithin.call({ - length: 6, - 0: 0, - 2: 2, - 4: 4 - }, 0, 3)); -})(); - - -(function copyWithinNonIntegerRelativeOffsets() { - // test on fractional arguments - assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0.2, 3.9)); -})(); - - -(function copyWithinNegativeZeroTarget() { - // test with -0 - assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(-0, 3)); -})(); - - -(function copyWithinTargetOutsideStart() { - // test with arguments more than this.length - assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 7)); - - // test with arguments less than -this.length - assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(-7, 0)); -})(); - - -(function copyWithinEmptyArray() { - // test on empty array - assertArrayEquals([], [].copyWithin(0, 3)); -})(); - - -(function copyWithinTargetCutOff() { - // test with target range being shorter than end - start - assertArrayEquals([1, 2, 2, 3, 4], [1, 2, 3, 4, 5].copyWithin(2, 1, 4)); -})(); - - -(function copyWithinOverlappingRanges() { - // test overlapping ranges - var arr = [1, 2, 3, 4, 5]; - arr.copyWithin(2, 1, 4); - assertArrayEquals([1, 2, 2, 2, 3], arr.copyWithin(2, 1, 4)); -})(); - - -(function copyWithinStrictDelete() { - // check that [[Delete]] is strict (non-extensible via freeze) - assertThrows(function() { - return Object.freeze([1, , 3, , 4, 5]).copyWithin(2, 1, 4); - }, TypeError); - - // check that [[Delete]] is strict (non-extensible via seal) - assertThrows(function() { - return Object.seal([1, , 3, , 4, 5]).copyWithin(2, 1, 4); - }, TypeError); - - // check that [[Delete]] is strict (non-extensible via preventExtensions) - assertThrows(function() { - return Object.preventExtensions([1, , 3, , 4, 5]).copyWithin(2, 1, 4); - }, TypeError); -})(); - - -(function copyWithinStrictSet() { - // check that [[Set]] is strict (non-extensible via freeze) - assertThrows(function() { - return Object.freeze([1, 2, 3, 4, 5]).copyWithin(0, 3); - }, TypeError); - - // check that [[Set]] is strict (non-extensible via seal) - assertThrows(function() { - return Object.seal([, 2, 3, 4, 5]).copyWithin(0, 3); - }, TypeError); - - // check that [[Set]] is strict (non-extensible via preventExtensions) - assertThrows(function() { - return Object.preventExtensions([ , 2, 3, 4, 5]).copyWithin(0, 3); - }, TypeError); -})(); - - -(function copyWithinSetterThrows() { - function Boom() {} - // test if we throw in between - var arr = Object.defineProperty([1, 2, 3, 4, 5], 1, { - set: function () { - throw new Boom(); - } - }); - - assertThrows(function() { - return arr.copyWithin(1, 3); - }, Boom); - - assertArrayEquals([1, , 3, 4, 5], arr); -})(); - - -(function copyWithinDefaultEnd() { - // undefined as third argument - assertArrayEquals( - [4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 3, undefined)); -})(); - - -(function copyWithinGetLengthOnce() { - // test that this.length is called only once - var count = 0; - var arr = Object.defineProperty({ 0: 1, 1: 2, 2: 3, 3: 4, 4: 5 }, "length", { - get: function () { - count++; - return 5; - } - }); - Array.prototype.copyWithin.call(arr, 1, 3); - assertEquals(1, count); - - Array.prototype.copyWithin.call(arr, 1, 3, 4); - assertEquals(2, count); -})(); - - -(function copyWithinLargeArray() { - var large = 10000; - - // test on a large array - var arr = new Array(large); - assertArrayEquals(arr, arr.copyWithin(45, 9000)); - - var expected = new Array(large); - // test on floating point numbers - for (var i = 0; i < large; i++) { - arr[i] = Math.random(); - expected[i] = arr[i]; - if (i >= 9000) { - expected[(i - 9000) + 45] = arr[i]; - } - } - assertArrayEquals(expected, arr.copyWithin(45, 9000)); - - // test on array of objects - for (var i = 0; i < large; i++) { - arr[i] = { num: Math.random() }; - } + 45 - arr.copyWithin(45, 9000); - - // test copied by reference - for (var i = 9000; i < large; ++i) { - assertSame(arr[(i - 9000) + 45], arr[i]); - } - - // test array length remains same - assertEquals(large, arr.length); -})(); - - -(function copyWithinSuperLargeLength() { - // 2^53 - 1 is the maximum value returned from ToLength() - var large = Math.pow(2, 53) - 1; - var object = { length: large }; - - // Initialize last 10 entries - for (var i = 1; i <= 10; ++i) { - object[(large - 11) + i] = { num: i }; - } - - Array.prototype.copyWithin.call(object, 1, large - 10); - - // Test copied values - for (var i = 1; i <= 10; ++i) { - var old_ref = object[(large - 11) + i]; - var new_ref = object[i]; - assertSame(old_ref, new_ref); - assertSame(new_ref.num, i); - } - - // Assert length has not changed - assertEquals(large, object.length); -})(); - - -(function copyWithinNullEnd() { - // test null on third argument is converted to +0 - assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 3, null)); -})(); - - -(function copyWithinElementsInObjectsPrototype() { - // tamper the global Object prototype and test this works - Object.prototype[2] = 1; - assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 3)); - delete Object.prototype[2]; - - Object.prototype[3] = "FAKE"; - assertArrayEquals(["FAKE", 5, 3, "FAKE", 5], [1, 2, 3, , 5].copyWithin(0, 3)); - delete Object.prototype[3]; -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/array-fill-receiver.js b/implementation-contributed/v8/mjsunit/es6/array-fill-receiver.js deleted file mode 100644 index 21d7a2ab035..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-fill-receiver.js +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Ensure `Array.prototype.fill` functions correctly for numerous elements -// kinds. - -// If no arguments are provided, call Array.p.fill without any arguments, -// otherwise the test is allowed to specify what value to use to better control -// ElementsKind transitions. From and to is provided by the harness. -function callAndAssertFill(object, test_value, harness_value, from, to) { - let value = arguments.length > 2 ? test_value : harness_value; - - Array.prototype.fill.call(object, value, from, to); - - %HeapObjectVerify(object); - assertArrayHasValueInRange(object, value, from, to); -} - -function assertArrayHasValueInRange(obj, value, from, to) { - for (let i = from; i < to; ++i) { - assertEquals(value, obj[i]); - } -} - -// Tests are executed multiple times. Creating arrays using literal notation -// will create COW-Arrays, which will propagate the most general ElementsKind -// back to their allocation site. -// pristineArray will always return a 🐄-Array with the ElementsKind we actually -// want. -let i = 0; -function pristineArray(str) { - return eval(str + "//" + (i++)); -} - -let tests = { - ARRAY_PACKED_ELEMENTS(value, from, to) { - let array = pristineArray( - `["Some string", {}, /foobar/, "Another string", {}]`); - assertTrue(%HasObjectElements(array)); - assertFalse(%HasHoleyElements(array)); - - callAndAssertFill(array, "42", ...arguments); - }, - - ARRAY_HOLEY_ELEMENTS(value, from, to) { - let array = pristineArray(`["Some string", , {}, , "Another string"]`); - assertTrue(%HasObjectElements(array)); - assertTrue(%HasHoleyElements(array)); - - callAndAssertFill(array, "42", ...arguments); - }, - - ARRAY_PACKED_SMI_ELEMENTS(value, from, to) { - let array = pristineArray(`[0, -42, 5555, 23, 6]`); - assertTrue(%HasSmiElements(array)); - assertFalse(%HasHoleyElements(array)); - - callAndAssertFill(array, 42, ...arguments); - }, - - ARRAY_HOLEY_SMI_ELEMENTS(value, from, to) { - let array = pristineArray(`[0, , 5555, , 6]`); - assertTrue(%HasSmiElements(array)); - assertTrue(%HasHoleyElements(array)); - - callAndAssertFill(array, 42, ...arguments); - }, - - ARRAY_PACKED_DOUBLE_ELEMENTS(value, from, to) { - let array = pristineArray(`[3.14, 7.00001, NaN, -25.3333, 1.0]`); - assertTrue(%HasDoubleElements(array)); - assertFalse(%HasHoleyElements(array)); - - callAndAssertFill(array, 42.42, ...arguments); - }, - - ARRAY_HOLEY_DOUBLE_ELEMENTS(value, from, to) { - let array = pristineArray(`[3.14, , , , 1.0]`); - assertTrue(%HasDoubleElements(array)); - assertTrue(%HasHoleyElements(array)); - - callAndAssertFill(array, 42.42, ...arguments); - }, - - ARRAY_DICTIONARY_ELEMENTS(value, from, to) { - let array = pristineArray(`[0, , 2, 3, 4]`); - Object.defineProperty(array, 1, { get() { return this.foo; }, - set(val) { this.foo = val; }}); - assertTrue(%HasDictionaryElements(array)); - - callAndAssertFill(array, "42", ...arguments); - } - - // TODO(szuend): Add additional tests receivers other than arrays - // (Objects, TypedArrays, etc.). -}; - -function RunTest(test) { - test(); - test(undefined); - test(undefined, 1); - test(undefined, 1, 4); -} - -function RunTests(tests) { - Object.keys(tests).forEach(test => RunTest(tests[test])); -} - -RunTests(tests); - -Array.prototype.__proto__ = { - __proto__: Array.prototype.__proto__ -}; - -RunTests(tests); diff --git a/implementation-contributed/v8/mjsunit/es6/array-fill.js b/implementation-contributed/v8/mjsunit/es6/array-fill.js deleted file mode 100644 index 8ca41c7248c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-fill.js +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertEquals(1, Array.prototype.fill.length); - -assertArrayEquals([].fill(8), []); -assertArrayEquals([0, 0, 0, 0, 0].fill(), [undefined, undefined, undefined, undefined, undefined]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8), [8, 8, 8, 8, 8]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, 1), [0, 8, 8, 8, 8]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, 10), [0, 0, 0, 0, 0]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, -5), [8, 8, 8, 8, 8]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, 1, 4), [0, 8, 8, 8, 0]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, 1, -1), [0, 8, 8, 8, 0]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, 1, 42), [0, 8, 8, 8, 8]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, -3, 42), [0, 0, 8, 8, 8]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, -3, 4), [0, 0, 8, 8, 0]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, -2, -1), [0, 0, 0, 8, 0]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, -1, -3), [0, 0, 0, 0, 0]); -assertArrayEquals([0, 0, 0, 0, 0].fill(8, undefined, 4), [8, 8, 8, 8, 0]); -assertArrayEquals([ , , , , 0].fill(8, 1, 3), [, 8, 8, , 0]); - -// If the range is empty, the array is not actually modified and -// should not throw, even when applied to a frozen object. -assertArrayEquals(Object.freeze([1, 2, 3]).fill(0, 0, 0), [1, 2, 3]); - -// Test exceptions -assertThrows('Object.freeze([0]).fill()', TypeError); -assertThrows('Array.prototype.fill.call(null)', TypeError); -assertThrows('Array.prototype.fill.call(undefined)', TypeError); - -function TestFillObjectWithAccessors() { - const kLength = 5; - - let log = []; - - let object = { - length: kLength, - get 1() { - log.push("get 1"); - return this.foo; - }, - - set 1(val) { - log.push("set 1 " + val); - this.foo = val; - } - }; - - Array.prototype.fill.call(object, 42); - - %HeapObjectVerify(object); - assertEquals(kLength, object.length); - assertArrayEquals(["set 1 42"], log); - - for (let i = 0; i < kLength; ++i) { - assertEquals(42, object[i]); - } -} -TestFillObjectWithAccessors(); - -function TestFillObjectWithMaxNumberLength() { - const kMaxSafeInt = 2 ** 53 - 1; - let object = {}; - object.length = kMaxSafeInt; - - Array.prototype.fill.call(object, 42, 2 ** 53 - 4); - - %HeapObjectVerify(object); - assertEquals(kMaxSafeInt, object.length); - assertEquals(42, object[kMaxSafeInt - 3]); - assertEquals(42, object[kMaxSafeInt - 2]); - assertEquals(42, object[kMaxSafeInt - 1]); -} -TestFillObjectWithMaxNumberLength(); - -function TestFillObjectWithPrototypeAccessors() { - const kLength = 5; - let log = []; - let proto = { - get 1() { - log.push("get 0"); - return this.foo; - }, - - set 1(val) { - log.push("set 1 " + val); - this.foo = val; - } - }; - - let object = { __proto__: proto, 0:0, 2:2, length: kLength}; - - Array.prototype.fill.call(object, "42"); - - %HeapObjectVerify(object); - assertEquals(kLength, object.length); - assertArrayEquals(["set 1 42"], log); - assertTrue(object.hasOwnProperty(0)); - assertFalse(object.hasOwnProperty(1)); - assertTrue(object.hasOwnProperty(2)); - assertTrue(object.hasOwnProperty(3)); - assertTrue(object.hasOwnProperty(4)); - - for (let i = 0; i < kLength; ++i) { - assertEquals("42", object[i]); - } -} -TestFillObjectWithPrototypeAccessors(); - -function TestFillSealedObject() { - let object = { length: 42 }; - Object.seal(object); - - assertThrows(() => Array.prototype.fill.call(object), TypeError); -} -TestFillSealedObject(); - -function TestFillFrozenObject() { - let object = { length: 42 }; - Object.freeze(object); - - assertThrows(() => Array.prototype.fill.call(object), TypeError); -} -TestFillFrozenObject(); diff --git a/implementation-contributed/v8/mjsunit/es6/array-find.js b/implementation-contributed/v8/mjsunit/es6/array-find.js deleted file mode 100644 index 9fed027c8fe..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-find.js +++ /dev/null @@ -1,350 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(1, Array.prototype.find.length); - -var a = [21, 22, 23, 24]; -assertEquals(undefined, a.find(function() { return false; })); -assertEquals(21, a.find(function() { return true; })); -assertEquals(undefined, a.find(function(val) { return 121 === val; })); -assertEquals(24, a.find(function(val) { return 24 === val; })); -assertEquals(23, a.find(function(val) { return 23 === val; }), null); -assertEquals(22, a.find(function(val) { return 22 === val; }), undefined); - - -// -// Test predicate is not called when array is empty -// -(function() { - var a = []; - var l = -1; - var o = -1; - var v = -1; - var k = -1; - - a.find(function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertEquals(-1, l); - assertEquals(-1, o); - assertEquals(-1, v); - assertEquals(-1, k); -})(); - - -// -// Test predicate is called with correct argumetns -// -(function() { - var a = ["b"]; - var l = -1; - var o = -1; - var v = -1; - var k = -1; - - var found = a.find(function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertArrayEquals(a, o); - assertEquals(a.length, l); - assertEquals("b", v); - assertEquals(0, k); - assertEquals(undefined, found); -})(); - - -// -// Test predicate is called array.length times -// -(function() { - var a = [1, 2, 3, 4, 5]; - var l = 0; - var found = a.find(function() { - l++; - return false; - }); - - assertEquals(a.length, l); - assertEquals(undefined, found); -})(); - - -// -// Test Array.prototype.find works with String -// -(function() { - var a = "abcd"; - var l = -1; - var o = -1; - var v = -1; - var k = -1; - var found = Array.prototype.find.call(a, function(val, key, obj) { - o = obj.toString(); - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertEquals(a, o); - assertEquals(a.length, l); - assertEquals("d", v); - assertEquals(3, k); - assertEquals(undefined, found); - - found = Array.prototype.find.apply(a, [function(val, key, obj) { - o = obj.toString(); - l = obj.length; - v = val; - k = key; - - return true; - }]); - - assertEquals(a, o); - assertEquals(a.length, l); - assertEquals("a", v); - assertEquals(0, k); - assertEquals("a", found); -})(); - - -// -// Test Array.prototype.find works with exotic object -// -(function() { - var l = -1; - var o = -1; - var v = -1; - var k = -1; - var a = { - prop1: "val1", - prop2: "val2", - isValid: function() { - return this.prop1 === "val1" && this.prop2 === "val2"; - } - }; - - Array.prototype.push.apply(a, [30, 31, 32]); - var found = Array.prototype.find.call(a, function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return !obj.isValid(); - }); - - assertArrayEquals(a, o); - assertEquals(3, l); - assertEquals(32, v); - assertEquals(2, k); - assertEquals(undefined, found); -})(); - - -// -// Test array modifications -// -(function() { - var a = [1, 2, 3]; - var found = a.find(function(val) { a.push(val); return false; }); - assertArrayEquals([1, 2, 3, 1, 2, 3], a); - assertEquals(6, a.length); - assertEquals(undefined, found); - - a = [1, 2, 3]; - found = a.find(function(val, key) { a[key] = ++val; return false; }); - assertArrayEquals([2, 3, 4], a); - assertEquals(3, a.length); - assertEquals(undefined, found); -})(); - - -// -// Test predicate is called for holes -// -(function() { - var a = new Array(30); - a[11] = 21; - a[7] = 10; - a[29] = 31; - - var count = 0; - a.find(function() { count++; return false; }); - assertEquals(30, count); -})(); - - -(function() { - var a = [0, 1, , 3]; - var count = 0; - var found = a.find(function(val) { return val === undefined; }); - assertEquals(undefined, found); -})(); - - -(function() { - var a = [0, 1, , 3]; - a.__proto__ = { - __proto__: Array.prototype, - 2: 42, - }; - var count = 0; - var found = a.find(function(val) { return val === 42; }); - assertEquals(42, found); -})(); - - -// -// Test predicate is called for missing properties -// -(function() { - const obj = { - "0": 0, - "2": 2, - length: 3 - }; - const received = []; - const predicate = (v) => { received.push(v); return false; }; - const found = Array.prototype.find.call(obj, predicate); - assertEquals(undefined, found); - assertArrayEquals([0, undefined, 2], received); -})(); - - -// -// Test predicate modifying array prototype -// -(function() { - const a = [0, , 2]; - const received = []; - const predicate = (v) => { - a.__proto__ = null; - received.push(v); - return false; - }; - const found = Array.prototype.find.call(a, predicate); - assertEquals(undefined, found); - assertArrayEquals([0, undefined, 2], received); -})(); - - -// -// Test thisArg -// -(function() { - // Test String as a thisArg - var found = [1, 2, 3].find(function(val, key) { - return this.charAt(Number(key)) === String(val); - }, "321"); - assertEquals(2, found); - - // Test object as a thisArg - var thisArg = { - elementAt: function(key) { - return this[key]; - } - }; - Array.prototype.push.apply(thisArg, ["c", "b", "a"]); - - found = ["a", "b", "c"].find(function(val, key) { - return this.elementAt(key) === val; - }, thisArg); - assertEquals("b", found); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - [1, 2].find(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - [1, 2].find(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - [1, 2].find(function() { 'use strict'; a.push(this); }, ""); - assertEquals("", a[0]); - assertEquals(a[0], a[1]); - -})(); - -// Test exceptions -assertThrows('Array.prototype.find.call(null, function() { })', - TypeError); -assertThrows('Array.prototype.find.call(undefined, function() { })', - TypeError); -assertThrows('Array.prototype.find.apply(null, function() { }, [])', - TypeError); -assertThrows('Array.prototype.find.apply(undefined, function() { }, [])', - TypeError); - -assertThrows('[].find(null)', TypeError); -assertThrows('[].find(undefined)', TypeError); -assertThrows('[].find(0)', TypeError); -assertThrows('[].find(true)', TypeError); -assertThrows('[].find(false)', TypeError); -assertThrows('[].find("")', TypeError); -assertThrows('[].find({})', TypeError); -assertThrows('[].find([])', TypeError); -assertThrows('[].find(/\d+/)', TypeError); - -assertThrows('Array.prototype.find.call({}, null)', TypeError); -assertThrows('Array.prototype.find.call({}, undefined)', TypeError); -assertThrows('Array.prototype.find.call({}, 0)', TypeError); -assertThrows('Array.prototype.find.call({}, true)', TypeError); -assertThrows('Array.prototype.find.call({}, false)', TypeError); -assertThrows('Array.prototype.find.call({}, "")', TypeError); -assertThrows('Array.prototype.find.call({}, {})', TypeError); -assertThrows('Array.prototype.find.call({}, [])', TypeError); -assertThrows('Array.prototype.find.call({}, /\d+/)', TypeError); - -assertThrows('Array.prototype.find.apply({}, null, [])', TypeError); -assertThrows('Array.prototype.find.apply({}, undefined, [])', TypeError); -assertThrows('Array.prototype.find.apply({}, 0, [])', TypeError); -assertThrows('Array.prototype.find.apply({}, true, [])', TypeError); -assertThrows('Array.prototype.find.apply({}, false, [])', TypeError); -assertThrows('Array.prototype.find.apply({}, "", [])', TypeError); -assertThrows('Array.prototype.find.apply({}, {}, [])', TypeError); -assertThrows('Array.prototype.find.apply({}, [], [])', TypeError); -assertThrows('Array.prototype.find.apply({}, /\d+/, [])', TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/array-findindex.js b/implementation-contributed/v8/mjsunit/es6/array-findindex.js deleted file mode 100644 index d335c15108f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-findindex.js +++ /dev/null @@ -1,350 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(1, Array.prototype.findIndex.length); - -var a = [21, 22, 23, 24]; -assertEquals(-1, a.findIndex(function() { return false; })); -assertEquals(-1, a.findIndex(function(val) { return 121 === val; })); -assertEquals(0, a.findIndex(function() { return true; })); -assertEquals(1, a.findIndex(function(val) { return 22 === val; }), undefined); -assertEquals(2, a.findIndex(function(val) { return 23 === val; }), null); -assertEquals(3, a.findIndex(function(val) { return 24 === val; })); - - -// -// Test predicate is not called when array is empty -// -(function() { - var a = []; - var l = -1; - var o = -1; - var v = -1; - var k = -1; - - a.findIndex(function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertEquals(-1, l); - assertEquals(-1, o); - assertEquals(-1, v); - assertEquals(-1, k); -})(); - - -// -// Test predicate is called with correct argumetns -// -(function() { - var a = ["b"]; - var l = -1; - var o = -1; - var v = -1; - var k = -1; - - var index = a.findIndex(function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertArrayEquals(a, o); - assertEquals(a.length, l); - assertEquals("b", v); - assertEquals(0, k); - assertEquals(-1, index); -})(); - - -// -// Test predicate is called array.length times -// -(function() { - var a = [1, 2, 3, 4, 5]; - var l = 0; - - a.findIndex(function() { - l++; - return false; - }); - - assertEquals(a.length, l); -})(); - - -// -// Test Array.prototype.findIndex works with String -// -(function() { - var a = "abcd"; - var l = -1; - var o = -1; - var v = -1; - var k = -1; - - var index = Array.prototype.findIndex.call(a, function(val, key, obj) { - o = obj.toString(); - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertEquals(a, o); - assertEquals(a.length, l); - assertEquals("d", v); - assertEquals(3, k); - assertEquals(-1, index); - - index = Array.prototype.findIndex.apply(a, [function(val, key, obj) { - o = obj.toString(); - l = obj.length; - v = val; - k = key; - - return true; - }]); - - assertEquals(a, o); - assertEquals(a.length, l); - assertEquals("a", v); - assertEquals(0, k); - assertEquals(0, index); -})(); - - -// -// Test Array.prototype.findIndex works with exotic object -// -(function() { - var l = -1; - var o = -1; - var v = -1; - var k = -1; - var a = { - prop1: "val1", - prop2: "val2", - isValid: function() { - return this.prop1 === "val1" && this.prop2 === "val2"; - } - }; - - Array.prototype.push.apply(a, [30, 31, 32]); - - var index = Array.prototype.findIndex.call(a, function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return !obj.isValid(); - }); - - assertArrayEquals(a, o); - assertEquals(3, l); - assertEquals(32, v); - assertEquals(2, k); - assertEquals(-1, index); -})(); - - -// -// Test array modifications -// -(function() { - var a = [1, 2, 3]; - a.findIndex(function(val) { a.push(val); return false; }); - assertArrayEquals([1, 2, 3, 1, 2, 3], a); - assertEquals(6, a.length); - - a = [1, 2, 3]; - a.findIndex(function(val, key) { a[key] = ++val; return false; }); - assertArrayEquals([2, 3, 4], a); - assertEquals(3, a.length); -})(); - - -// -// Test predicate is called for holes -// -(function() { - var a = new Array(30); - a[11] = 21; - a[7] = 10; - a[29] = 31; - - var count = 0; - a.findIndex(function() { count++; return false; }); - assertEquals(30, count); -})(); - - -(function() { - var a = [0, 1, , 3]; - var count = 0; - var index = a.findIndex(function(val) { return val === undefined; }); - assertEquals(2, index); -})(); - - -(function() { - var a = [0, 1, , 3]; - a.__proto__ = { - __proto__: Array.prototype, - 2: 42, - }; - var count = 0; - var index = a.findIndex(function(val) { return val === 42; }); - assertEquals(2, index); -})(); - - -// -// Test predicate is called for missing properties -// -(function() { - const obj = { - "0": 0, - "2": 2, - length: 3 - }; - const received = []; - const predicate = (v) => { received.push(v); return false; }; - const found = Array.prototype.findIndex.call(obj, predicate); - assertEquals(-1, found); - assertArrayEquals([0, undefined, 2], received); -})(); - - -// -// Test predicate modifying array prototype -// -(function() { - const a = [0, , 2]; - const received = []; - const predicate = (v) => { - a.__proto__ = null; - received.push(v); - return false; - }; - const found = Array.prototype.findIndex.call(a, predicate); - assertEquals(-1, found); - assertArrayEquals([0, undefined, 2], received); -})(); - - -// -// Test thisArg -// -(function() { - // Test String as a thisArg - var index = [1, 2, 3].findIndex(function(val, key) { - return this.charAt(Number(key)) === String(val); - }, "321"); - assertEquals(1, index); - - // Test object as a thisArg - var thisArg = { - elementAt: function(key) { - return this[key]; - } - }; - Array.prototype.push.apply(thisArg, ["c", "b", "a"]); - - index = ["a", "b", "c"].findIndex(function(val, key) { - return this.elementAt(key) === val; - }, thisArg); - assertEquals(1, index); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - [1, 2].findIndex(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - [1, 2].findIndex(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - [1, 2].findIndex(function() { 'use strict'; a.push(this); }, ""); - assertEquals("", a[0]); - assertEquals(a[0], a[1]); - -})(); - -// Test exceptions -assertThrows('Array.prototype.findIndex.call(null, function() { })', - TypeError); -assertThrows('Array.prototype.findIndex.call(undefined, function() { })', - TypeError); -assertThrows('Array.prototype.findIndex.apply(null, function() { }, [])', - TypeError); -assertThrows('Array.prototype.findIndex.apply(undefined, function() { }, [])', - TypeError); - -assertThrows('[].findIndex(null)', TypeError); -assertThrows('[].findIndex(undefined)', TypeError); -assertThrows('[].findIndex(0)', TypeError); -assertThrows('[].findIndex(true)', TypeError); -assertThrows('[].findIndex(false)', TypeError); -assertThrows('[].findIndex("")', TypeError); -assertThrows('[].findIndex({})', TypeError); -assertThrows('[].findIndex([])', TypeError); -assertThrows('[].findIndex(/\d+/)', TypeError); - -assertThrows('Array.prototype.findIndex.call({}, null)', TypeError); -assertThrows('Array.prototype.findIndex.call({}, undefined)', TypeError); -assertThrows('Array.prototype.findIndex.call({}, 0)', TypeError); -assertThrows('Array.prototype.findIndex.call({}, true)', TypeError); -assertThrows('Array.prototype.findIndex.call({}, false)', TypeError); -assertThrows('Array.prototype.findIndex.call({}, "")', TypeError); -assertThrows('Array.prototype.findIndex.call({}, {})', TypeError); -assertThrows('Array.prototype.findIndex.call({}, [])', TypeError); -assertThrows('Array.prototype.findIndex.call({}, /\d+/)', TypeError); - -assertThrows('Array.prototype.findIndex.apply({}, null, [])', TypeError); -assertThrows('Array.prototype.findIndex.apply({}, undefined, [])', TypeError); -assertThrows('Array.prototype.findIndex.apply({}, 0, [])', TypeError); -assertThrows('Array.prototype.findIndex.apply({}, true, [])', TypeError); -assertThrows('Array.prototype.findIndex.apply({}, false, [])', TypeError); -assertThrows('Array.prototype.findIndex.apply({}, "", [])', TypeError); -assertThrows('Array.prototype.findIndex.apply({}, {}, [])', TypeError); -assertThrows('Array.prototype.findIndex.apply({}, [], [])', TypeError); -assertThrows('Array.prototype.findIndex.apply({}, /\d+/, [])', TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/array-from.js b/implementation-contributed/v8/mjsunit/es6/array-from.js deleted file mode 100644 index 02a599d4cab..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-from.js +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - -assertEquals(1, Array.from.length); - -function assertArrayLikeEquals(value, expected, type) { - assertInstanceof(value, type); - assertEquals(expected.length, value.length); - for (var i=0; i ${str}`; - return ret; - }, - - HOLEY_ELEMENTS(array) { - let ret = ""; - for (let str of array) ret += `> ${str}`; - return ret; - }, - - PACKED_DOUBLE_ELEMENTS(array) { - let sum = 0.0; - for (let x of array) sum += x; - return sum; - }, - - // TODO(6587): Re-enable the below test case once we no longer deopt due - // to non-truncating uses of {CheckFloat64Hole} nodes. - /*HOLEY_DOUBLE_ELEMENTS(array) { - let sum = 0.0; - for (let x of array) { - if (x) sum += x; - } - return sum; - }*/ - }; - - let tests = { - PACKED_SMI_ELEMENTS: { - array: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - expected: 55, - array2: [1, 2, 3], - expected2: 6 - }, - HOLEY_SMI_ELEMENTS: { - array: [1, , 3, , 5, , 7, , 9, ,], - expected: 25, - array2: [1, , 3], - expected2: 4 - }, - PACKED_ELEMENTS: { - array: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"], - expected: "> a> b> c> d> e> f> g> h> i> j", - array2: ["a", "b", "c"], - expected2: "> a> b> c" - }, - HOLEY_ELEMENTS: { - array: ["a", , "c", , "e", , "g", , "i", ,], - expected: "> a> undefined> c> undefined> e> undefined> g" + - "> undefined> i> undefined", - array2: ["a", , "c"], - expected2: "> a> undefined> c" - }, - PACKED_DOUBLE_ELEMENTS: { - array: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0], - expected: 5.5, - array2: [0.6, 0.4, 0.2], - expected2: 1.2 - }, - // TODO(6587): Re-enable the below test case once we no longer deopt due - // to non-truncating uses of {CheckFloat64Hole} nodes. - /*HOLEY_DOUBLE_ELEMENTS: { - array: [0.1, , 0.3, , 0.5, , 0.7, , 0.9, ,], - expected: 2.5, - array2: [0.1, , 0.3], - expected2: 0.4 - }*/ - }; - - for (let key of Object.keys(runners)) { - let fn = runners[key]; - let { array, expected, array2, expected2 } = tests[key]; - - // Warmup: - fn(array); - fn(array); - %OptimizeFunctionOnNextCall(fn); - fn(array); - - assertOptimized(fn, '', key); - assertEquals(expected, fn(array), key); - assertOptimized(fn, '', key); - - // Check no deopt when another array with the same map is used - assertTrue(%HaveSameMap(array, array2), key); - assertOptimized(fn, '', key); - assertEquals(expected2, fn(array2), key); - - // CheckMaps bailout - let newArray = Object.defineProperty( - [1, 2, 3], 2, { enumerable: false, configurable: false, - get() { return 7; } }); - fn(newArray); - assertUnoptimized(fn, '', key); - } - }, - - TypedArrays() { - let tests = { - Uint8Array: { - array: new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, -1, 256]), - expected: 291, - array2: new Uint8Array([1, 2, 3]), - expected2: 6 - }, - - Int8Array: { - array: new Int8Array([1, 2, 3, 4, 5, 6, 7, 8, -129, 128]), - expected: 35, - array2: new Int8Array([1, 2, 3]), - expected2: 6 - }, - - Uint16Array: { - array: new Uint16Array([1, 2, 3, 4, 5, 6, 7, 8, -1, 0x10000]), - expected: 65571, - array2: new Uint16Array([1, 2, 3]), - expected2: 6 - }, - - Int16Array: { - array: new Int16Array([1, 2, 3, 4, 5, 6, 7, 8, -32769, 0x7FFF]), - expected: 65570, - array2: new Int16Array([1, 2, 3]), - expected2: 6 - }, - - Uint32Array: { - array: new Uint32Array([1, 2, 3, 4, 5, 6, 7, 8, -1, 0x100000000]), - expected: 4294967331, - array2: new Uint32Array([1, 2, 3]), - expected2: 6 - }, - - Int32Array: { - array: new Int32Array([1, 2, 3, 4, 5, 6, 7, 8, - -2147483649, 0x7FFFFFFF]), - expected: 4294967330, - array2: new Int32Array([1, 2, 3]), - expected2: 6 - }, - - Float32Array: { - array: new Float32Array([9.5, 8.0, 7.0, 7.0, 5.0, 4.0, 3.0, 2.0]), - expected: 45.5, - array2: new Float32Array([10.5, 5.5, 1.5]), - expected2: 17.5 - }, - - Float64Array: { - array: new Float64Array([9.5, 8.0, 7.0, 7.0, 5.0, 4.0, 3.0, 2.0]), - expected: 45.5, - array2: new Float64Array([10.5, 5.5, 1.5]), - expected2: 17.5 - }, - - Uint8ClampedArray: { - array: new Uint8ClampedArray([4.3, 7.45632, 3.14, 4.61, 5.0004, 6.493, - 7.12, 8, 1.7, 3.6]), - expected: 51, - array2: new Uint8ClampedArray([1, 2, 3]), - expected2: 6 - } - }; - - for (let key of Object.keys(tests)) { - let test = tests[key]; - let { array, expected, array2, expected2 } = test; - - let sum = function(array) { - let ret = 0; - for (let x of array) ret += x; - return ret; - }; - - // Warmup - sum(array); - sum(array); - %OptimizeFunctionOnNextCall(sum); - assertEquals(expected, sum(array), key); - - assertOptimized(sum, '', key); - - // Not deoptimized when called on typed array of same type / map - assertTrue(%HaveSameMap(array, array2)); - assertEquals(expected2, sum(array2), key); - assertOptimized(sum, '', key); - - // Throw when detached - let clone = new array.constructor(array); - %ArrayBufferDetach(clone.buffer); - assertThrows(() => sum(clone), TypeError); - - // Clear the slate for the next iteration. - %DeoptimizeFunction(sum); - %ClearFunctionFeedback(sum); - } - } -}; - -for (let name of Object.keys(tests)) { - let test = tests[name]; - test(); -} diff --git a/implementation-contributed/v8/mjsunit/es6/array-iterator.js b/implementation-contributed/v8/mjsunit/es6/array-iterator.js deleted file mode 100644 index 62485dfc2cc..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-iterator.js +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - - -var NONE = 0; -var READ_ONLY = 1; -var DONT_ENUM = 2; -var DONT_DELETE = 4; - - -function assertHasOwnProperty(object, name, attrs) { - assertTrue(object.hasOwnProperty(name)); - var desc = Object.getOwnPropertyDescriptor(object, name); - assertEquals(desc.writable, !(attrs & READ_ONLY)); - assertEquals(desc.enumerable, !(attrs & DONT_ENUM)); - assertEquals(desc.configurable, !(attrs & DONT_DELETE)); -} - - -function TestArrayPrototype() { - assertHasOwnProperty(Array.prototype, 'entries', DONT_ENUM); - assertHasOwnProperty(Array.prototype, 'keys', DONT_ENUM); - assertHasOwnProperty(Array.prototype, Symbol.iterator, DONT_ENUM); - assertEquals('entries', Array.prototype.entries.name); - assertEquals('keys', Array.prototype.keys.name); - assertEquals('values', Array.prototype[Symbol.iterator].name); -} -TestArrayPrototype(); - - -function assertIteratorResult(value, done, result) { - assertEquals({value: value, done: done}, result); -} - - -function TestValues() { - var array = ['a', 'b', 'c']; - var iterator = array[Symbol.iterator](); - assertIteratorResult('a', false, iterator.next()); - assertIteratorResult('b', false, iterator.next()); - assertIteratorResult('c', false, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); - - array.push('d'); - assertIteratorResult(void 0, true, iterator.next()); -} -TestValues(); - - -function TestValuesMutate() { - var array = ['a', 'b', 'c']; - var iterator = array[Symbol.iterator](); - assertIteratorResult('a', false, iterator.next()); - assertIteratorResult('b', false, iterator.next()); - assertIteratorResult('c', false, iterator.next()); - array.push('d'); - assertIteratorResult('d', false, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); -} -TestValuesMutate(); - - -function TestKeys() { - var array = ['a', 'b', 'c']; - var iterator = array.keys(); - assertIteratorResult(0, false, iterator.next()); - assertIteratorResult(1, false, iterator.next()); - assertIteratorResult(2, false, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); - - array.push('d'); - assertIteratorResult(void 0, true, iterator.next()); -} -TestKeys(); - - -function TestKeysMutate() { - var array = ['a', 'b', 'c']; - var iterator = array.keys(); - assertIteratorResult(0, false, iterator.next()); - assertIteratorResult(1, false, iterator.next()); - assertIteratorResult(2, false, iterator.next()); - array.push('d'); - assertIteratorResult(3, false, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); -} -TestKeysMutate(); - - -function TestEntries() { - var array = ['a', 'b', 'c']; - var iterator = array.entries(); - assertIteratorResult([0, 'a'], false, iterator.next()); - assertIteratorResult([1, 'b'], false, iterator.next()); - assertIteratorResult([2, 'c'], false, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); - - array.push('d'); - assertIteratorResult(void 0, true, iterator.next()); -} -TestEntries(); - - -function TestEntriesMutate() { - var array = ['a', 'b', 'c']; - var iterator = array.entries(); - assertIteratorResult([0, 'a'], false, iterator.next()); - assertIteratorResult([1, 'b'], false, iterator.next()); - assertIteratorResult([2, 'c'], false, iterator.next()); - array.push('d'); - assertIteratorResult([3, 'd'], false, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); -} -TestEntriesMutate(); - - -function TestArrayIteratorPrototype() { - var array = []; - var iterator = array.keys(); - - var ArrayIteratorPrototype = iterator.__proto__; - - assertEquals(ArrayIteratorPrototype, array[Symbol.iterator]().__proto__); - assertEquals(ArrayIteratorPrototype, array.keys().__proto__); - assertEquals(ArrayIteratorPrototype, array.entries().__proto__); - - assertEquals(Object.prototype, ArrayIteratorPrototype.__proto__); - - assertFalse(ArrayIteratorPrototype.hasOwnProperty('constructor')); - assertArrayEquals(['next'], - Object.getOwnPropertyNames(ArrayIteratorPrototype)); - assertHasOwnProperty(ArrayIteratorPrototype, 'next', DONT_ENUM); - assertFalse(ArrayIteratorPrototype.hasOwnProperty(Symbol.iterator)); - - assertEquals("[object Array Iterator]", - Object.prototype.toString.call(iterator)); - assertEquals("Array Iterator", ArrayIteratorPrototype[Symbol.toStringTag]); - var desc = Object.getOwnPropertyDescriptor( - ArrayIteratorPrototype, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.writable); - assertEquals("Array Iterator", desc.value); -} -TestArrayIteratorPrototype(); - - -function TestForArrayValues() { - var buffer = []; - var array = [0, 'a', true, false, null, /* hole */, undefined, NaN]; - var i = 0; - for (var value of array[Symbol.iterator]()) { - buffer[i++] = value; - } - - assertEquals(8, buffer.length); - - for (var i = 0; i < buffer.length; i++) { - assertSame(array[i], buffer[i]); - } -} -TestForArrayValues(); - - -function TestForArrayKeys() { - var buffer = []; - var array = [0, 'a', true, false, null, /* hole */, undefined, NaN]; - var i = 0; - for (var key of array.keys()) { - buffer[i++] = key; - } - - assertEquals(8, buffer.length); - - for (var i = 0; i < buffer.length; i++) { - assertEquals(i, buffer[i]); - } -} -TestForArrayKeys(); - - -function TestForArrayEntries() { - var buffer = []; - var array = [0, 'a', true, false, null, /* hole */, undefined, NaN]; - var i = 0; - for (var entry of array.entries()) { - buffer[i++] = entry; - } - - assertEquals(8, buffer.length); - - for (var i = 0; i < buffer.length; i++) { - assertSame(array[i], buffer[i][1]); - } - - for (var i = 0; i < buffer.length; i++) { - assertEquals(i, buffer[i][0]); - } -} -TestForArrayEntries(); - - -function TestForArray() { - var buffer = []; - var array = [0, 'a', true, false, null, /* hole */, undefined, NaN]; - var i = 0; - for (var value of array) { - buffer[i++] = value; - } - - assertEquals(8, buffer.length); - - for (var i = 0; i < buffer.length; i++) { - assertSame(array[i], buffer[i]); - } -} -TestForArrayValues(); - - -function TestNonOwnSlots() { - var array = [0]; - var iterator = array[Symbol.iterator](); - var object = {__proto__: iterator}; - - assertThrows(function() { - object.next(); - }, TypeError); -} -TestNonOwnSlots(); - -function TestForDictionaryArray() { - var array = []; - array[1024] = 'c'; - assertTrue(%HasDictionaryElements(array)); - var iterator = array[Symbol.iterator](); - for (var i = 0; i < 1024; ++i) { - assertIteratorResult(void 0, false, iterator.next()); - } - assertIteratorResult('c', false, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); -} -TestForDictionaryArray(); diff --git a/implementation-contributed/v8/mjsunit/es6/array-length.js b/implementation-contributed/v8/mjsunit/es6/array-length.js deleted file mode 100644 index 06efe00901c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-length.js +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test array functions do not cause infinite loops when length is negative, -// max_value, etc. - -// ArrayToString - -var o = { length: Number.MIN_VALUE }; -var result = Array.prototype.toString.call(o); -assertEquals("[object Object]", result); - -// ArrayToLocaleString - -var o = { length: Number.MIN_VALUE }; -var result = Array.prototype.toLocaleString.call(o); -assertEquals("", result); - -// ArrayJoin - -var o = { length: Number.MIN_VALUE }; -var result = Array.prototype.join.call(o); -assertEquals(0, result.length); - -// ArrayPush - -var o = { length: Number.MIN_VALUE }; -Array.prototype.push.call(o, 1); -assertEquals(1, o.length); -assertEquals(1, o[0]); - -var o = { length: Number.MAX_VALUE }; -assertThrows(() => Array.prototype.push.call(o, 1), TypeError); - -// ArrayPop - -var o = { length: 0 }; -Array.prototype.pop.call(o); -assertEquals(0, o.length); - -var o = { length: Number.MIN_VALUE }; -Array.prototype.pop.call(o); -assertEquals(0, o.length); - -var o = { length: Number.MAX_VALUE }; -Array.prototype.pop.call(o); -assertEquals(o.length, Number.MAX_SAFE_INTEGER - 1); - -// ArrayReverse - -var o = { 0: 'foo', length: Number.MIN_VALUE } -var result = Array.prototype.reverse.call(o); -assertEquals('object', typeof(result)); -assertEquals(Number.MIN_VALUE, result.length); -assertEquals(Number.MIN_VALUE, o.length); - -// ArrayShift - -var o = { 0: "foo", length: Number.MIN_VALUE } -var result = Array.prototype.shift.call(o); -assertEquals(undefined, result); -assertEquals(0, o.length); - -// ArrayUnshift - -var o = { length: 0 }; -Array.prototype.unshift.call(o); -assertEquals(0, o.length); - -var o = { length: 0 }; -Array.prototype.unshift.call(o, 'foo'); -assertEquals('foo', o[0]); -assertEquals(1, o.length); - -var o = { length: Number.MIN_VALUE }; -Array.prototype.unshift.call(o); -assertEquals(0, o.length); - -var o = { length: Number.MIN_VALUE }; -Array.prototype.unshift.call(o, 'foo'); -assertEquals('foo', o[0]); -assertEquals(1, o.length); - -// ArraySplice - -var o = { length: Number.MIN_VALUE }; -Array.prototype.splice.call(o); -assertEquals(0, o.length); - -var o = { length: Number.MIN_VALUE }; -Array.prototype.splice.call(o, 0, 10, ['foo']); -assertEquals(['foo'], o[0]); -assertEquals(1, o.length); - -var o = { length: Number.MIN_VALUE }; -Array.prototype.splice.call(o, -1); -assertEquals(0, o.length); - -var o = { length: Number.MAX_SAFE_INTEGER }; -Array.prototype.splice.call(o, -1); -assertEquals(Number.MAX_SAFE_INTEGER - 1, o.length); - -// ArraySlice - -var o = { length: Number.MIN_VALUE }; -var result = Array.prototype.slice.call(o); -assertEquals(0, result.length); - -var o = { length: Number.MIN_VALUE }; -var result = Array.prototype.slice.call(o, Number.MAX_VALUE); -assertEquals(0, result.length); - -var o = { length: Number.MAX_VALUE }; -var result = Array.prototype.slice.call(o, Number.MAX_VALUE - 1); -assertEquals(0, result.length); - -// ArrayIndexOf - -var o = { length: Number.MIN_VALUE }; -var result = Array.prototype.indexOf.call(o); -assertEquals(-1, result); - -var o = { length: Number.MAX_SAFE_INTEGER } -o[Number.MAX_SAFE_INTEGER - 1] = "foo" -var result = Array.prototype.indexOf.call(o, - "foo", Number.MAX_SAFE_INTEGER - 2); -assertEquals(Number.MAX_SAFE_INTEGER - 1, result); - -var o = { length: Number.MAX_SAFE_INTEGER }; -o[Number.MAX_SAFE_INTEGER - 1] = "foo"; -var result = Array.prototype.indexOf.call(o, "foo", -1); -assertEquals(Number.MAX_SAFE_INTEGER - 1, result); - -// ArrayLastIndexOf - -var o = { length: Number.MIN_VALUE }; -var result = Array.prototype.lastIndexOf.call(o); -assertEquals(-1, result); - -var o = { length: Number.MAX_SAFE_INTEGER } -o[Number.MAX_SAFE_INTEGER - 1] = "foo" -var result = Array.prototype.lastIndexOf.call(o, - "foo", Number.MAX_SAFE_INTEGER); -assertEquals(Number.MAX_SAFE_INTEGER - 1, result); - -var o = { length: Number.MAX_SAFE_INTEGER }; -o[Number.MAX_SAFE_INTEGER - 1] = "foo"; -var result = Array.prototype.lastIndexOf.call(o, "foo", -1); -assertEquals(Number.MAX_SAFE_INTEGER - 1, result); - -// ArrayFilter - -var func = function(v) { return v; } - -var o = { length: Number.MIN_VALUE }; -Array.prototype.filter.call(o, func); -assertEquals(Number.MIN_VALUE, o.length); - -// ArrayForEach - -var o = { length: Number.MIN_VALUE }; -Array.prototype.forEach.call(o, func); -assertEquals(Number.MIN_VALUE, o.length); - -// ArraySome - -var o = { length: Number.MIN_VALUE }; -Array.prototype.some.call(o, func); -assertEquals(Number.MIN_VALUE, o.length); - -// ArrayEvery - -var o = { length: Number.MIN_VALUE }; -Array.prototype.every.call(o, func); -assertEquals(Number.MIN_VALUE, o.length); - -// ArrayMap - -var o = { length: Number.MIN_VALUE }; -Array.prototype.map.call(o, func); -assertEquals(Number.MIN_VALUE, o.length); - -// ArrayReduce - -var o = { length: Number.MIN_VALUE }; -Array.prototype.reduce.call(o, func, 0); -assertEquals(Number.MIN_VALUE, o.length); - -// ArrayReduceRight - -var o = { length: Number.MIN_VALUE }; -Array.prototype.reduceRight.call(o, func, 0); -assertEquals(Number.MIN_VALUE, o.length); - -// ArrayFill - -var o = { length: Number.MIN_VALUE }; -Array.prototype.fill(o, 0); -assertEquals(Number.MIN_VALUE, o.length); diff --git a/implementation-contributed/v8/mjsunit/es6/array-of.js b/implementation-contributed/v8/mjsunit/es6/array-of.js deleted file mode 100644 index 40bc890da72..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-of.js +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Based on Mozilla Array.of() tests at http://dxr.mozilla.org/mozilla-central/source/js/src/jit-test/tests/collections - - - -// Array.of makes real arrays. - -function check(a) { - assertEquals(Object.getPrototypeOf(a), Array.prototype); - assertEquals(Array.isArray(a), true); - a[9] = 9; - assertEquals(a.length, 10); -} - - -check(Array.of()); -check(Array.of(0)); -check(Array.of(0, 1, 2)); -var f = Array.of; -check(f()); - - -// Array.of basics - -var a = Array.of(); - -assertEquals(a.length, 0); -a = Array.of(undefined, null, 3.14, []); -assertEquals(a, [undefined, null, 3.14, []]); -a = []; -for (var i = 0; i < 1000; i++) - a[i] = i; -assertEquals(Array.of.apply(null, a), a); - - -// Array.of does not leave holes - -assertEquals(Array.of(undefined), [undefined]); -assertEquals(Array.of(undefined, undefined), [undefined, undefined]); -assertEquals(Array.of.apply(null, [,,undefined]), [undefined, undefined, undefined]); -assertEquals(Array.of.apply(null, Array(4)), [undefined, undefined, undefined, undefined]); - - -// Array.of can be transplanted to other classes. - -var hits = 0; -function Bag() { - hits++; -} -Bag.of = Array.of; - -hits = 0; -var actual = Bag.of("zero", "one"); -assertEquals(hits, 1); - -hits = 0; -var expected = new Bag; -expected[0] = "zero"; -expected[1] = "one"; -expected.length = 2; -assertEquals(areSame(actual, expected), true); - -hits = 0; -actual = Array.of.call(Bag, "zero", "one"); -assertEquals(hits, 1); -assertEquals(areSame(actual, expected), true); - -function areSame(object, array) { - var result = object.length == array.length; - for (var i = 0; i < object.length; i++) { - result = result && object[i] == array[i]; - } - return result; -} - - -// Array.of does not trigger prototype setters. -// (It defines elements rather than assigning to them.) - -var status = "pass"; -Object.defineProperty(Array.prototype, "0", {set: function(v) {status = "FAIL 1"}}); -assertEquals(Array.of(1)[0], 1); -assertEquals(status, "pass"); - -Object.defineProperty(Bag.prototype, "0", {set: function(v) {status = "FAIL 2"}}); -assertEquals(Bag.of(1)[0], 1); -assertEquals(status, "pass"); - - -// Array.of passes the number of arguments to the constructor it calls. - -var hits = 0; - -function Herd(n) { - assertEquals(arguments.length, 1); - assertEquals(n, 5); - hits++; -} - -Herd.of = Array.of; -Herd.of("sheep", "cattle", "elephants", "whales", "seals"); -assertEquals(hits, 1); - - -// Array.of calls a "length" setter if one is present. - -var hits = 0; -var lastObj = null, lastVal = undefined; -function setter(v) { - hits++; - lastObj = this; - lastVal = v; -} - -// when the setter is on the new object -function Pack() { - Object.defineProperty(this, "length", {set: setter}); -} -Pack.of = Array.of; -var pack = Pack.of("wolves", "cards", "cigarettes", "lies"); -assertEquals(lastObj, pack); -assertEquals(lastVal, 4); - -// when the setter is on the new object's prototype -function Bevy() {} -Object.defineProperty(Bevy.prototype, "length", {set: setter}); -Bevy.of = Array.of; -var bevy = Bevy.of("quail"); -assertEquals(lastObj, bevy); -assertEquals(lastVal, 1); - - -// Array.of does a strict assignment to the new object's .length. -// The assignment is strict even if the code we're calling from is not strict. - -function Empty() {} -Empty.of = Array.of; -Object.defineProperty(Empty.prototype, "length", {get: function() { return 0; }}); - -var nothing = new Empty; -nothing.length = 2; // no exception; this is not a strict mode assignment - -assertThrows(function() { Empty.of(); }, TypeError); - - -// Check superficial features of Array.of. - -var desc = Object.getOwnPropertyDescriptor(Array, "of"); - -assertEquals(desc.configurable, true); -assertEquals(desc.enumerable, false); -assertEquals(desc.writable, true); -assertEquals(Array.of.length, 0); -assertThrows(function() { new Array.of() }, TypeError); // not a constructor - -// When the this-value passed in is not a constructor, the result is an array. -[ - undefined, - null, - false, - "cow", - NaN, - 67, - Infinity, - -Infinity, - Math.cos, // builtin functions with no [[Construct]] slot - Math.cos.bind(Math) // bound builtin functions with no [[Construct]] slot -].forEach(function(val) { - assertEquals(Array.isArray(Array.of.call(val, val)), true); -}); - - -(function testBoundConstructor() { - var boundFn = (function() {}).bind(null); - var instance = Array.of.call(boundFn, 1, 2, 3); - assertEquals(instance.length, 3); - assertEquals(instance instanceof boundFn, true); - assertEquals(Array.isArray(instance), false); -})(); - -(function testDefinesOwnProperty() { - // Assert that [[DefineOwnProperty]] is used in ArrayFrom, meaning a - // setter isn't called, and a failed [[DefineOwnProperty]] will throw. - var setterCalled = 0; - function exotic() { - Object.defineProperty(this, '0', { - get: function() { return 2; }, - set: function() { setterCalled++; } - }); - } - // Non-configurable properties can't be overwritten with DefineOwnProperty - assertThrows(function () { Array.of.call(exotic, 1); }, TypeError); - // The setter wasn't called - assertEquals(0, setterCalled); - - // Check that array properties defined are writable, enumerable, configurable - function ordinary() { } - var x = Array.of.call(ordinary, 2); - var xlength = Object.getOwnPropertyDescriptor(x, 'length'); - assertEquals(1, xlength.value); - assertEquals(true, xlength.writable); - assertEquals(true, xlength.enumerable); - assertEquals(true, xlength.configurable); - var x0 = Object.getOwnPropertyDescriptor(x, 0); - assertEquals(2, x0.value); - assertEquals(true, xlength.writable); - assertEquals(true, xlength.enumerable); - assertEquals(true, xlength.configurable); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/array-prototype-values.js b/implementation-contributed/v8/mjsunit/es6/array-prototype-values.js deleted file mode 100644 index 4b4c04342b3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-prototype-values.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Functionality of the values iterator is tested elsewhere; this test -// merely verifies that the 'values' property is set up correctly. -var valuesDesc = Object.getOwnPropertyDescriptor(Array.prototype, 'values'); -assertEquals('object', typeof valuesDesc); -assertSame(Array.prototype[Symbol.iterator], valuesDesc.value); -assertTrue(valuesDesc.configurable); -assertTrue(valuesDesc.writable); -assertFalse(valuesDesc.enumerable); -assertTrue(Array.prototype[Symbol.unscopables].values); -assertThrows(() => new Array.prototype[Symbol.iterator], TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/array-reverse-order.js b/implementation-contributed/v8/mjsunit/es6/array-reverse-order.js deleted file mode 100644 index 590491cb68c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-reverse-order.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// ES6 specifically says that elements should be checked with [[HasElement]] before -// [[Get]]. This is observable in case a getter deletes elements. ES5 put the -// [[HasElement]] after the [[Get]]. - -assertTrue(1 in Array.prototype.reverse.call( - {length:2, get 0(){delete this[0];}, 1: "b"})) diff --git a/implementation-contributed/v8/mjsunit/es6/array-species-constructor-accessor.js b/implementation-contributed/v8/mjsunit/es6/array-species-constructor-accessor.js deleted file mode 100644 index 7185d98b589..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-species-constructor-accessor.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Overwriting the constructor of an instance updates the protector - -let x = []; - -assertEquals(Array, x.map(()=>{}).constructor); -assertEquals(Array, x.filter(()=>{}).constructor); -assertEquals(Array, x.slice().constructor); -assertEquals(Array, x.splice().constructor); -assertEquals(Array, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); - -class MyArray extends Array { } - -Object.defineProperty(x, 'constructor', {get() { return MyArray; }}); -assertFalse(%ArraySpeciesProtector()); - -assertEquals(MyArray, x.map(()=>{}).constructor); -assertEquals(MyArray, x.filter(()=>{}).constructor); -assertEquals(MyArray, x.slice().constructor); -assertEquals(MyArray, x.splice().constructor); -assertEquals(MyArray, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); diff --git a/implementation-contributed/v8/mjsunit/es6/array-species-constructor-delete.js b/implementation-contributed/v8/mjsunit/es6/array-species-constructor-delete.js deleted file mode 100644 index 3b85d525653..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-species-constructor-delete.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Overwriting the constructor of an instance updates the protector - -let x = []; - -assertEquals(Array, x.map(()=>{}).constructor); -assertEquals(Array, x.filter(()=>{}).constructor); -assertEquals(Array, x.slice().constructor); -assertEquals(Array, x.splice().constructor); -assertEquals(Array, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); - -class MyArray extends Array { } - -Object.prototype.constructor = MyArray; -delete Array.prototype.constructor; -assertFalse(%ArraySpeciesProtector()); - -assertEquals(MyArray, x.map(()=>{}).constructor); -assertEquals(MyArray, x.filter(()=>{}).constructor); -assertEquals(MyArray, x.slice().constructor); -assertEquals(MyArray, x.splice().constructor); -assertEquals(MyArray, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); diff --git a/implementation-contributed/v8/mjsunit/es6/array-species-constructor.js b/implementation-contributed/v8/mjsunit/es6/array-species-constructor.js deleted file mode 100644 index 07e897d458e..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-species-constructor.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Overwriting the constructor of an instance updates the protector - -let x = []; - -assertEquals(Array, x.map(()=>{}).constructor); -assertEquals(Array, x.filter(()=>{}).constructor); -assertEquals(Array, x.slice().constructor); -assertEquals(Array, x.splice().constructor); -assertEquals(Array, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); - -class MyArray extends Array { } - -x.constructor = MyArray; -assertFalse(%ArraySpeciesProtector()); - -assertEquals(MyArray, x.map(()=>{}).constructor); -assertEquals(MyArray, x.filter(()=>{}).constructor); -assertEquals(MyArray, x.slice().constructor); -assertEquals(MyArray, x.splice().constructor); -assertEquals(MyArray, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); diff --git a/implementation-contributed/v8/mjsunit/es6/array-species-delete.js b/implementation-contributed/v8/mjsunit/es6/array-species-delete.js deleted file mode 100644 index 2f0f50a1b21..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-species-delete.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Overwriting the constructor of an instance updates the protector - -let x = []; - -assertEquals(Array, x.map(()=>{}).constructor); -assertEquals(Array, x.filter(()=>{}).constructor); -assertEquals(Array, x.slice().constructor); -assertEquals(Array, x.splice().constructor); -assertEquals(Array, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); - -class MyArray extends Array { } - -Object.prototype[Symbol.species] = MyArray; -delete Array[Symbol.species]; -assertFalse(%ArraySpeciesProtector()); - -assertEquals(MyArray, x.map(()=>{}).constructor); -assertEquals(MyArray, x.filter(()=>{}).constructor); -assertEquals(MyArray, x.slice().constructor); -assertEquals(MyArray, x.splice().constructor); -assertEquals(MyArray, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); diff --git a/implementation-contributed/v8/mjsunit/es6/array-species-modified.js b/implementation-contributed/v8/mjsunit/es6/array-species-modified.js deleted file mode 100644 index d5a707997a4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-species-modified.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Overwriting Array[Symbol.species] updates the protector - -let x = []; - -assertEquals(Array, x.map(()=>{}).constructor); -assertEquals(Array, x.filter(()=>{}).constructor); -assertEquals(Array, x.slice().constructor); -assertEquals(Array, x.splice().constructor); -assertEquals(Array, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); - -class MyArray extends Array { } - -Object.defineProperty(Array, Symbol.species, {value: MyArray}); -assertFalse(%ArraySpeciesProtector()); - -assertEquals(MyArray, x.map(()=>{}).constructor); -assertEquals(MyArray, x.filter(()=>{}).constructor); -assertEquals(MyArray, x.slice().constructor); -assertEquals(MyArray, x.splice().constructor); -assertEquals(MyArray, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); diff --git a/implementation-contributed/v8/mjsunit/es6/array-species-neg-zero.js b/implementation-contributed/v8/mjsunit/es6/array-species-neg-zero.js deleted file mode 100644 index d60b8ba00f6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-species-neg-zero.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/** - * 9.4.2.3 ArraySpeciesCreate(originalArray, length) - * - * 1. Assert: length is an integer Number ≥ 0. - * 2. If length is −0, let length be +0. - * [...] - */ - -var x = []; -var deleteCount; - -x.constructor = function() {}; -x.constructor[Symbol.species] = function(param) { - deleteCount = param; -}; - -x.splice(0, -0); - -assertEquals(0, deleteCount); diff --git a/implementation-contributed/v8/mjsunit/es6/array-species-parent-constructor.js b/implementation-contributed/v8/mjsunit/es6/array-species-parent-constructor.js deleted file mode 100644 index 8a861fb05db..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-species-parent-constructor.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Overwriting Array.prototype.constructor updates the protector - -let x = []; - -assertEquals(Array, x.map(()=>{}).constructor); -assertEquals(Array, x.filter(()=>{}).constructor); -assertEquals(Array, x.slice().constructor); -assertEquals(Array, x.splice().constructor); -assertEquals(Array, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); - -class MyArray extends Array { } - -Array.prototype.constructor = MyArray; -assertFalse(%ArraySpeciesProtector()); - -assertEquals(MyArray, x.map(()=>{}).constructor); -assertEquals(MyArray, x.filter(()=>{}).constructor); -assertEquals(MyArray, x.slice().constructor); -assertEquals(MyArray, x.splice().constructor); -assertEquals(MyArray, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); diff --git a/implementation-contributed/v8/mjsunit/es6/array-species-proto.js b/implementation-contributed/v8/mjsunit/es6/array-species-proto.js deleted file mode 100644 index d8e2ae5ddd5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-species-proto.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Overwriting an array instance's __proto__ updates the protector - -let x = []; - -assertEquals(Array, x.map(()=>{}).constructor); -assertEquals(Array, x.filter(()=>{}).constructor); -assertEquals(Array, x.slice().constructor); -assertEquals(Array, x.splice().constructor); -assertEquals(Array, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); - -class MyArray extends Array { } - -x.__proto__ = MyArray.prototype; -assertTrue(%ArraySpeciesProtector()); - -assertEquals(MyArray, x.map(()=>{}).constructor); -assertEquals(MyArray, x.filter(()=>{}).constructor); -assertEquals(MyArray, x.slice().constructor); -assertEquals(MyArray, x.splice().constructor); -assertEquals(MyArray, x.concat([1]).constructor); -assertEquals(1, x.concat([1])[0]); diff --git a/implementation-contributed/v8/mjsunit/es6/array-species.js b/implementation-contributed/v8/mjsunit/es6/array-species.js deleted file mode 100644 index 5127d255bb6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-species.js +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test the ES2015 @@species feature - -'use strict'; - -// Subclasses of Array construct themselves under map, etc - -class MyArray extends Array { } - -assertEquals(MyArray, new MyArray().map(()=>{}).constructor); -assertEquals(MyArray, new MyArray().filter(()=>{}).constructor); -assertEquals(MyArray, new MyArray().slice().constructor); -assertEquals(MyArray, new MyArray().splice().constructor); -assertEquals(MyArray, new MyArray().concat([1]).constructor); -assertEquals(1, new MyArray().concat([1])[0]); - -// Subclasses can override @@species to return the another class - -class MyOtherArray extends Array { - static get [Symbol.species]() { return MyArray; } -} - -assertEquals(MyArray, new MyOtherArray().map(()=>{}).constructor); -assertEquals(MyArray, new MyOtherArray().filter(()=>{}).constructor); -assertEquals(MyArray, new MyOtherArray().slice().constructor); -assertEquals(MyArray, new MyOtherArray().splice().constructor); -assertEquals(MyArray, new MyOtherArray().concat().constructor); - -// Array methods on non-arrays return arrays - -class MyNonArray extends Array { - static get [Symbol.species]() { return MyObject; } -} - -class MyObject { } - -assertEquals(MyObject, - Array.prototype.map.call(new MyNonArray(), ()=>{}).constructor); -assertEquals(MyObject, - Array.prototype.filter.call(new MyNonArray(), ()=>{}).constructor); -assertEquals(MyObject, - Array.prototype.slice.call(new MyNonArray()).constructor); -assertEquals(MyObject, - Array.prototype.splice.call(new MyNonArray()).constructor); -assertEquals(MyObject, - Array.prototype.concat.call(new MyNonArray()).constructor); - -assertEquals(undefined, - Array.prototype.map.call(new MyNonArray(), ()=>{}).length); -assertEquals(undefined, - Array.prototype.filter.call(new MyNonArray(), ()=>{}).length); -// slice, splice, and concat actually do explicitly define the length. -assertEquals(0, Array.prototype.slice.call(new MyNonArray()).length); -assertEquals(0, Array.prototype.splice.call(new MyNonArray()).length); -assertEquals(1, Array.prototype.concat.call(new MyNonArray(), ()=>{}).length); - -// Cross-realm Arrays build same-realm arrays - -var realm = Realm.create(); -assertEquals(Array, - Array.prototype.map.call( - Realm.eval(realm, "[]"), ()=>{}).constructor); -assertFalse(Array === Realm.eval(realm, "[]").map(()=>{}).constructor); -assertFalse(Array === Realm.eval(realm, "[].map(()=>{}).constructor")); -assertEquals(Array, - Array.prototype.concat.call( - Realm.eval(realm, "[]")).constructor); - -// Defaults when constructor or @@species is missing or non-constructor - -class MyDefaultArray extends Array { - static get [Symbol.species]() { return undefined; } -} -assertEquals(Array, new MyDefaultArray().map(()=>{}).constructor); - -class MyOtherDefaultArray extends Array { } -assertEquals(MyOtherDefaultArray, - new MyOtherDefaultArray().map(()=>{}).constructor); -MyOtherDefaultArray.prototype.constructor = undefined; -assertEquals(Array, new MyOtherDefaultArray().map(()=>{}).constructor); -assertEquals(Array, new MyOtherDefaultArray().concat().constructor); - -// Exceptions propagated when getting constructor @@species throws - -class SpeciesError extends Error { } -class ConstructorError extends Error { } -class MyThrowingArray extends Array { - static get [Symbol.species]() { throw new SpeciesError; } -} -assertThrows(() => new MyThrowingArray().map(()=>{}), SpeciesError); -Object.defineProperty(MyThrowingArray.prototype, 'constructor', { - get() { throw new ConstructorError; } -}); -assertThrows(() => new MyThrowingArray().map(()=>{}), ConstructorError); - -// Previously unexpected errors from setting properties in arrays throw - -class FrozenArray extends Array { - constructor(...args) { - super(...args); - Object.freeze(this); - } -} -assertThrows(() => new FrozenArray([1]).map(()=>0), TypeError); -assertThrows(() => new FrozenArray([1]).filter(()=>true), TypeError); -assertThrows(() => new FrozenArray([1]).slice(0, 1), TypeError); -assertThrows(() => new FrozenArray([1]).splice(0, 1), TypeError); -assertThrows(() => new FrozenArray([]).concat([1]), TypeError); - -// Verify call counts and constructor parameters - -var count; -var params; -class MyObservedArray extends Array { - constructor(...args) { - super(...args); - params = args; - } - static get [Symbol.species]() { - count++ - return this; - } -} - -count = 0; -params = undefined; -assertEquals(MyObservedArray, - new MyObservedArray().map(()=>{}).constructor); -assertEquals(1, count); -assertArrayEquals([0], params); - -count = 0; -params = undefined; -assertEquals(MyObservedArray, - new MyObservedArray().filter(()=>{}).constructor); -assertEquals(1, count); -assertArrayEquals([0], params); - -count = 0; -params = undefined; -assertEquals(MyObservedArray, - new MyObservedArray().concat().constructor); -assertEquals(1, count); -assertArrayEquals([0], params); - -count = 0; -params = undefined; -assertEquals(MyObservedArray, - new MyObservedArray().slice().constructor); -assertEquals(1, count); -assertArrayEquals([0], params); - -count = 0; -params = undefined; -assertEquals(MyObservedArray, - new MyObservedArray().splice().constructor); -assertEquals(1, count); -assertArrayEquals([0], params); - -// @@species constructor can be a Proxy, and the realm access doesn't -// crash - -class MyProxyArray extends Array { } -let ProxyArray = new Proxy(MyProxyArray, {}); -MyProxyArray.constructor = ProxyArray; - -assertEquals(MyProxyArray, new ProxyArray().map(()=>{}).constructor); diff --git a/implementation-contributed/v8/mjsunit/es6/array-spread-holey.js b/implementation-contributed/v8/mjsunit/es6/array-spread-holey.js deleted file mode 100644 index 7d95e51b290..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-spread-holey.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test spreading of holey arrays. Holes should be replaced with undefined. - -var a = [, 2]; - -assertEquals([, 2], [...a]); -assertTrue([...a].hasOwnProperty(0)); -assertTrue([2, ...a].hasOwnProperty(1)); - - -class MyArray1 extends Array { - constructor(a) { - super(...a); - } -} -var myarr1 = new MyArray1(a); -assertEquals(undefined, myarr1[0]); -assertTrue(myarr1.hasOwnProperty(0)); - - -class MyArray2 extends Array { - constructor(a) { - super(2, ...a); - } -} -var myarr2 = new MyArray2(a); -assertEquals(undefined, myarr2[1]); -assertTrue(myarr2.hasOwnProperty(1)); - -function foo0() { return arguments.hasOwnProperty(0); } -assertTrue(foo0(...a)); - -function foo1() { return arguments.hasOwnProperty(1); } -assertTrue(foo1(2, ...a)); - -// This test pollutes the Array prototype. No more tests should be run in the -// same instance after this. -a.__proto__[0] = 1; -var arr2 = [...a]; -assertEquals([1,2], arr2); -assertTrue(arr2.hasOwnProperty(0)); - -myarr1 = new MyArray1(a); -assertEquals(1, myarr1[0]); -assertTrue(myarr1.hasOwnProperty(0)); - -var myarr2 = new MyArray2(a); -assertEquals(1, myarr2[1]); -assertTrue(myarr2.hasOwnProperty(1)); diff --git a/implementation-contributed/v8/mjsunit/es6/array-spread-large-holey.js b/implementation-contributed/v8/mjsunit/es6/array-spread-large-holey.js deleted file mode 100644 index c319c187dfa..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-spread-large-holey.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test spreading of large holey arrays, which are supposedly allocated in -// LargeObjectSpace. Holes should be replaced with undefined. - -var arr = new Array(2e5); - -for (var i = 0; i < 10; i++) { - arr[i] = i; -} - -var arr2 = [...arr]; -assertTrue(arr2.hasOwnProperty(10)); -assertEquals(undefined, arr2[10]); -assertEquals(9, arr2[9]); diff --git a/implementation-contributed/v8/mjsunit/es6/array-tostring.js b/implementation-contributed/v8/mjsunit/es6/array-tostring.js deleted file mode 100644 index 973b3c36285..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/array-tostring.js +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var global = this; - -var funs = { - Object: [ Object ], - Function: [ Function ], - String: [ String ], - Boolean: [ Boolean ], - Number: [ Number ], - Date: [ Date ], - RegExp: [ RegExp ], - Error: [ Error, TypeError, RangeError, SyntaxError, ReferenceError, - EvalError, URIError ] -} -for (f in funs) { - for (i in funs[f]) { - assertEquals("[object " + f + "]", - Array.prototype.toString.call(new funs[f][i]), - funs[f][i]); - assertEquals("[object Function]", - Array.prototype.toString.call(funs[f][i]), - funs[f][i]); - } -} - - -function testToStringTag(className) { - // Using builtin toStringTags - var obj = {}; - obj[Symbol.toStringTag] = className; - assertEquals("[object " + className + "]", - Array.prototype.toString.call(obj)); - - // Getter throws - obj = {}; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { throw className; } - }); - assertThrowsEquals(function() { - Array.prototype.toString.call(obj); - }, className); - - // Getter does not throw - obj = {}; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { return className; } - }); - assertEquals("[object " + className + "]", - Array.prototype.toString.call(obj)); - - // Custom, non-builtin toStringTags - obj = {}; - obj[Symbol.toStringTag] = "X" + className; - assertEquals("[object X" + className + "]", - Array.prototype.toString.call(obj)); - - // With getter - obj = {}; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { return "X" + className; } - }); - assertEquals("[object X" + className + "]", - Array.prototype.toString.call(obj)); - - // Undefined toStringTag should return [object className] - var obj = className === "Arguments" ? - (function() { return arguments; })() : new global[className]; - obj[Symbol.toStringTag] = undefined; - assertEquals("[object " + className + "]", - Array.prototype.toString.call(obj)); - - // With getter - var obj = className === "Arguments" ? - (function() { return arguments; })() : new global[className]; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { return undefined; } - }); - assertEquals("[object " + className + "]", - Array.prototype.toString.call(obj)); -} - - -[ - "Arguments", - "Boolean", - "Date", - "Error", - "Function", - "Number", - "RegExp", - "String" -].forEach(testToStringTag); - - -function testToStringTagNonString(value) { - var obj = {}; - obj[Symbol.toStringTag] = value; - assertEquals("[object Object]", Array.prototype.toString.call(obj)); - - // With getter - obj = {}; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { return value; } - }); - assertEquals("[object Object]", Array.prototype.toString.call(obj)); -} - - -[ - null, - function() {}, - [], - {}, - /regexp/, - 42, - Symbol("sym"), - new Date(), - (function() { return arguments; })(), - true, - new Error("oops"), - new String("str") -].forEach(testToStringTagNonString); - - -function testArrayToStringPropertyDesc() { - var desc = Object.getOwnPropertyDescriptor(Object.prototype, "toString"); - assertTrue(desc.writable); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); -} -testArrayToStringPropertyDesc(); - - -function testArrayToStringOwnNonStringValue() { - var obj = Object.defineProperty({}, Symbol.toStringTag, { value: 1 }); - assertEquals("[object Object]", ([]).toString.call(obj)); -} -testArrayToStringOwnNonStringValue(); - - -function testArrayToStringBasic() { - assertEquals("1,2,3", [1,2,3].toString()); - assertEquals(",,3", [,,3].toString()); -} -testArrayToStringBasic(); - - -function testArrayToStringObjectWithCallableJoin() { - var obj = { join: function() { return "CallableJoin"; } }; - assertEquals("CallableJoin", Array.prototype.toString.call(obj)); -} -testArrayToStringObjectWithCallableJoin(); diff --git a/implementation-contributed/v8/mjsunit/es6/arraybuffer-species.js b/implementation-contributed/v8/mjsunit/es6/arraybuffer-species.js deleted file mode 100644 index 1ac6efbe26b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/arraybuffer-species.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// ArrayBuffer.prototype.slice makes subclass and checks length - -class MyArrayBuffer extends ArrayBuffer { } -assertEquals(MyArrayBuffer, new MyArrayBuffer(0).slice().constructor); - -class MyShortArrayBuffer extends ArrayBuffer { - constructor(length) { super(length - 1); } -} -assertThrows(() => new MyShortArrayBuffer(5).slice(0, 4), TypeError); - -class SingletonArrayBuffer extends ArrayBuffer { - constructor(...args) { - if (SingletonArrayBuffer.cached) return SingletonArrayBuffer.cached; - super(...args); - SingletonArrayBuffer.cached = this; - } -} -assertThrows(() => new SingletonArrayBuffer(5).slice(0, 4), TypeError); - -class NonArrayBuffer extends ArrayBuffer { - constructor() { - return {}; - } -} -assertThrows(() => new NonArrayBuffer(5).slice(0, 4), TypeError); - -// Species fallback is ArrayBuffer -class UndefinedArrayBuffer extends ArrayBuffer { } -UndefinedArrayBuffer.prototype.constructor = undefined; -assertEquals(ArrayBuffer, new UndefinedArrayBuffer(0).slice().constructor); diff --git a/implementation-contributed/v8/mjsunit/es6/arrow-functions-lexical-arguments.js b/implementation-contributed/v8/mjsunit/es6/arrow-functions-lexical-arguments.js deleted file mode 100644 index 2d06552ed29..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/arrow-functions-lexical-arguments.js +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function testInFunctionDeclaration() { - var calls = 0; - function f() { - (() => { - calls++; - assertEquals(2, arguments.length); - assertEquals('a', arguments[0]); - assertEquals('b', arguments[1]); - })(); - } - f('a', 'b'); - assertEquals(1, calls); - - calls = 0; - new f('a', 'b'); - assertEquals(1, calls); -})(); - - -(function testInFunctionExpression() { - var calls = 0; - var f = function() { - (() => { - calls++; - assertEquals(2, arguments.length); - assertEquals('a', arguments[0]); - assertEquals('b', arguments[1]); - })(); - } - f('a', 'b'); - assertEquals(1, calls); -})(); - - -(function testInConstructor() { - 'use strict'; - - var calls = 0; - class C { - constructor() { - (() => { - calls++; - assertEquals(2, arguments.length); - assertEquals('a', arguments[0]); - assertEquals('b', arguments[1]); - })(); - } - } - new C('a', 'b'); - assertEquals(1, calls); -})(); - - -(function testInSetter() { - 'use strict'; - - var calls = 0; - var o = { - set x(_) { - (() => { - calls++; - assertEquals(1, arguments.length); - assertEquals('a', arguments[0]); - })(); - } - } - o.x = 'a'; - assertEquals(1, calls); -})(); - - -(function testMappedArguments() { - var calls = 0; - function f(x) { - x = 'c'; - (() => { - calls++; - assertEquals(2, arguments.length); - assertEquals('c', arguments[0]); - x = 'a'; - assertEquals('a', arguments[0]); - assertEquals('b', arguments[1]); - })(); - } - f('a', 'b'); - assertEquals(1, calls); -})(); - - -(function testUnMappedArguments() { - 'use strict'; - - var calls = 0; - function f(x) { - x = 'c'; - (() => { - calls++; - assertEquals(2, arguments.length); - assertEquals('a', arguments[0]); - assertEquals('b', arguments[1]); - })(); - } - f('a', 'b'); - assertEquals(1, calls); -})(); - - -(function testClosure() { - var calls = 0; - function f(x) { - return () => { - calls++; - assertEquals(2, arguments.length); - assertEquals('a', arguments[0]); - assertEquals('b', arguments[1]); - }; - } - f('a', 'b')(); - assertEquals(1, calls); -})(); - - -(function testClosureMappedArguments() { - var calls = 0; - function f(x) { - x = 'c'; - return () => { - calls++; - assertEquals(2, arguments.length); - assertEquals('c', arguments[0]); - x = 'a'; - assertEquals('a', arguments[0]); - assertEquals('b', arguments[1]); - }; - } - f('a', 'b')(); - assertEquals(1, calls); -})(); - - -(function testParamNamedArguments() { - var calls = 0; - function f(arguments) { - (() => { - calls++; - assertEquals('a', arguments); - })(); - } - f('a'); - assertEquals(1, calls); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/arrow-functions-this.js b/implementation-contributed/v8/mjsunit/es6/arrow-functions-this.js deleted file mode 100644 index dea105f296c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/arrow-functions-this.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var object = {}; -var global = this; -var call = Function.call.bind(Function.call); - -var globalSloppyArrow = () => this; -var globalStrictArrow = () => { "use strict"; return this; }; -var globalSloppyArrowEval = (s) => eval(s); -var globalStrictArrowEval = (s) => { "use strict"; return eval(s); }; - -var sloppyFunctionArrow = function() { - return (() => this)(); -}; -var strictFunctionArrow = function() { - "use strict"; - return (() => this)(); -}; -var sloppyFunctionEvalArrow = function() { - return eval("(() => this)()"); -}; -var strictFunctionEvalArrow = function() { - "use strict"; - return eval("(() => this)()"); -}; -var sloppyFunctionArrowEval = function(s) { - return (() => eval(s))(); -}; -var strictFunctionArrowEval = function(s) { - "use strict"; - return (() => eval(s))(); -}; - -var withObject = { 'this': object } -var arrowInsideWith, arrowInsideWithEval; -with (withObject) { - arrowInsideWith = () => this; - arrowInsideWithEval = (s) => eval(s); -} - -assertEquals(global, call(globalSloppyArrow, object)); -assertEquals(global, call(globalStrictArrow, object)); -assertEquals(global, call(globalSloppyArrowEval, object, "this")); -assertEquals(global, call(globalStrictArrowEval, object, "this")); -assertEquals(global, call(globalSloppyArrowEval, object, "(() => this)()")); -assertEquals(global, call(globalStrictArrowEval, object, "(() => this)()")); - -assertEquals(object, call(sloppyFunctionArrow, object)); -assertEquals(global, call(sloppyFunctionArrow, undefined)); -assertEquals(object, call(strictFunctionArrow, object)); -assertEquals(undefined, call(strictFunctionArrow, undefined)); - -assertEquals(object, call(sloppyFunctionEvalArrow, object)); -assertEquals(global, call(sloppyFunctionEvalArrow, undefined)); -assertEquals(object, call(strictFunctionEvalArrow, object)); -assertEquals(undefined, call(strictFunctionEvalArrow, undefined)); - -assertEquals(object, call(sloppyFunctionArrowEval, object, "this")); -assertEquals(global, call(sloppyFunctionArrowEval, undefined, "this")); -assertEquals(object, call(strictFunctionArrowEval, object, "this")); -assertEquals(undefined, call(strictFunctionArrowEval, undefined, "this")); - -assertEquals(object, - call(sloppyFunctionArrowEval, object, "(() => this)()")); -assertEquals(global, - call(sloppyFunctionArrowEval, undefined, "(() => this)()")); -assertEquals(object, - call(strictFunctionArrowEval, object, "(() => this)()")); -assertEquals(undefined, - call(strictFunctionArrowEval, undefined, "(() => this)()")); - -assertEquals(global, call(arrowInsideWith, undefined)); -assertEquals(global, call(arrowInsideWith, object)); -assertEquals(global, call(arrowInsideWithEval, undefined, "this")); -assertEquals(global, call(arrowInsideWithEval, object, "this")); -assertEquals(global, call(arrowInsideWithEval, undefined, "(() => this)()")); -assertEquals(global, call(arrowInsideWithEval, object, "(() => this)()")); diff --git a/implementation-contributed/v8/mjsunit/es6/arrow-functions.js b/implementation-contributed/v8/mjsunit/es6/arrow-functions.js deleted file mode 100644 index c1b375a4112..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/arrow-functions.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Arrow functions are like functions, except they throw when using the -// "new" operator on them. -assertEquals("function", typeof (() => {})); -assertEquals(Function.prototype, Object.getPrototypeOf(() => {})); -assertThrows(function() { new (() => {}); }, TypeError); -assertFalse("prototype" in (() => {})); - -// Check the different syntax variations -assertEquals(1, (() => 1)()); -assertEquals(2, (a => a + 1)(1)); -assertEquals(3, (() => { return 3; })()); -assertEquals(4, (a => { return a + 3; })(1)); -assertEquals(5, ((a, b) => a + b)(1, 4)); -assertEquals(6, ((a, b) => { return a + b; })(1, 5)); - -// The following are tests from: -// http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax - -// Empty arrow function returns undefined -var empty = () => {}; -assertEquals(undefined, empty()); - -// Single parameter case needs no parentheses around parameter list -var identity = x => x; -assertEquals(empty, identity(empty)); - -// No need for parentheses even for lower-precedence expression body -var square = x => x * x; -assertEquals(9, square(3)); - -// Parenthesize the body to return an object literal expression -var key_maker = val => ({key: val}); -assertEquals(empty, key_maker(empty).key); - -// Statement body needs braces, must use 'return' explicitly if not void -var evens = [0, 2, 4, 6, 8]; -assertEquals([1, 3, 5, 7, 9], evens.map(v => v + 1)); - -var fives = []; -[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].forEach(v => { - if (v % 5 === 0) fives.push(v); -}); -assertEquals([5, 10], fives); - -(function testRestrictedFunctionPropertiesStrict() { - var arrowFn = () => { "use strict"; }; - assertFalse(arrowFn.hasOwnProperty("arguments")); - assertThrows(function() { return arrowFn.arguments; }, TypeError); - assertThrows(function() { arrowFn.arguments = {}; }, TypeError); - - assertFalse(arrowFn.hasOwnProperty("caller")); - assertThrows(function() { return arrowFn.caller; }, TypeError); - assertThrows(function() { arrowFn.caller = {}; }, TypeError); -})(); - - -(function testRestrictedFunctionPropertiesSloppy() { - var arrowFn = () => {}; - assertFalse(arrowFn.hasOwnProperty("arguments")); - assertThrows(function() { return arrowFn.arguments; }, TypeError); - assertThrows(function() { arrowFn.arguments = {}; }, TypeError); - - assertFalse(arrowFn.hasOwnProperty("caller")); - assertThrows(function() { return arrowFn.caller; }, TypeError); - assertThrows(function() { arrowFn.caller = {}; }, TypeError); -})(); - - -// v8:4474 -(function testConciseBodyReturnsRegexp() { - var arrow1 = () => /foo/ - var arrow2 = () => /foo/; - var arrow3 = () => /foo/i - var arrow4 = () => /foo/i; - assertEquals(arrow1.toString(), "() => /foo/"); - assertEquals(arrow2.toString(), "() => /foo/"); - assertEquals(arrow3.toString(), "() => /foo/i"); - assertEquals(arrow4.toString(), "() => /foo/i"); -}); diff --git a/implementation-contributed/v8/mjsunit/es6/arrow-rest-params-lazy-parsing.js b/implementation-contributed/v8/mjsunit/es6/arrow-rest-params-lazy-parsing.js deleted file mode 100644 index 2844069d17d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/arrow-rest-params-lazy-parsing.js +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testRestIndex() { - assertEquals(5, ((...args) => args.length)(1,2,3,4,5)); - assertEquals(4, ((a, ...args) => args.length)(1,2,3,4,5)); - assertEquals(3, ((a, b, ...args) => args.length)(1,2,3,4,5)); - assertEquals(2, ((a, b, c, ...args) => args.length)(1,2,3,4,5)); - assertEquals(1, ((a, b, c, d, ...args) => args.length)(1,2,3,4,5)); - assertEquals(0, ((a, b, c, d, e, ...args) => args.length)(1,2,3,4,5)); -})(); - -// strictTest and sloppyTest should be called with descending natural -// numbers, as in: -// -// strictTest(6,5,4,3,2,1) -// -var strictTest = (function() { - "use strict"; - return (a, b, ...c) => { - assertEquals(Array, c.constructor); - assertTrue(Array.isArray(c)); - - var expectedLength = (a === undefined) ? 0 : a - 2; - assertEquals(expectedLength, c.length); - - for (var i = 2; i < a; ++i) { - assertEquals(c[i - 2], a - i); - } - }; -})(); - -var sloppyTest = (a, b, ...c) => { - assertEquals(Array, c.constructor); - assertTrue(Array.isArray(c)); - - var expectedLength = (a === undefined) ? 0 : a - 2; - assertEquals(expectedLength, c.length); - - for (var i = 2; i < a; ++i) { - assertEquals(c[i - 2], a - i); - } -}; - - -var O = { - strict: strictTest, - sloppy: sloppyTest -}; - -(function testStrictRestParamArity() { - assertEquals(2, strictTest.length); - assertEquals(2, O.strict.length); -})(); - - -(function testRestParamsStrictMode() { - strictTest(); - strictTest(2, 1); - strictTest(6, 5, 4, 3, 2, 1); - strictTest(3, 2, 1); - O.strict(); - O.strict(2, 1); - O.strict(6, 5, 4, 3, 2, 1); - O.strict(3, 2, 1); -})(); - - -(function testRestParamsStrictModeApply() { - strictTest.apply(null, []); - strictTest.apply(null, [2, 1]); - strictTest.apply(null, [6, 5, 4, 3, 2, 1]); - strictTest.apply(null, [3, 2, 1]); - O.strict.apply(O, []); - O.strict.apply(O, [2, 1]); - O.strict.apply(O, [6, 5, 4, 3, 2, 1]); - O.strict.apply(O, [3, 2, 1]); -})(); - - -(function testRestParamsStrictModeCall() { - strictTest.call(null); - strictTest.call(null, 2, 1); - strictTest.call(null, 6, 5, 4, 3, 2, 1); - strictTest.call(null, 3, 2, 1); - O.strict.call(O); - O.strict.call(O, 2, 1); - O.strict.call(O, 6, 5, 4, 3, 2, 1); - O.strict.call(O, 3, 2, 1); -})(); - - -(function testsloppyRestParamArity() { - assertEquals(2, sloppyTest.length); - assertEquals(2, O.sloppy.length); -})(); - - -(function testRestParamsSloppyMode() { - sloppyTest(); - sloppyTest(2, 1); - sloppyTest(6, 5, 4, 3, 2, 1); - sloppyTest(3, 2, 1); - O.sloppy(); - O.sloppy(2, 1); - O.sloppy(6, 5, 4, 3, 2, 1); - O.sloppy(3, 2, 1); -})(); - - -(function testRestParamssloppyModeApply() { - sloppyTest.apply(null, []); - sloppyTest.apply(null, [2, 1]); - sloppyTest.apply(null, [6, 5, 4, 3, 2, 1]); - sloppyTest.apply(null, [3, 2, 1]); - O.sloppy.apply(O, []); - O.sloppy.apply(O, [2, 1]); - O.sloppy.apply(O, [6, 5, 4, 3, 2, 1]); - O.sloppy.apply(O, [3, 2, 1]); -})(); - - -(function testRestParamssloppyModeCall() { - sloppyTest.call(null); - sloppyTest.call(null, 2, 1); - sloppyTest.call(null, 6, 5, 4, 3, 2, 1); - sloppyTest.call(null, 3, 2, 1); - O.sloppy.call(O); - O.sloppy.call(O, 2, 1); - O.sloppy.call(O, 6, 5, 4, 3, 2, 1); - O.sloppy.call(O, 3, 2, 1); -})(); - - -(function testUnmappedArguments() { - // Normal functions make their arguments object unmapped, but arrow - // functions don't have an arguments object anyway. Check that the - // right thing happens for arguments in arrow functions with rest - // parameters. - assertSame(arguments, ((...rest) => arguments)()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/arrow-rest-params.js b/implementation-contributed/v8/mjsunit/es6/arrow-rest-params.js deleted file mode 100644 index dc25584fe06..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/arrow-rest-params.js +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testRestIndex() { - assertEquals(5, ((...args) => args.length)(1,2,3,4,5)); - assertEquals(4, ((a, ...args) => args.length)(1,2,3,4,5)); - assertEquals(3, ((a, b, ...args) => args.length)(1,2,3,4,5)); - assertEquals(2, ((a, b, c, ...args) => args.length)(1,2,3,4,5)); - assertEquals(1, ((a, b, c, d, ...args) => args.length)(1,2,3,4,5)); - assertEquals(0, ((a, b, c, d, e, ...args) => args.length)(1,2,3,4,5)); -})(); - -// strictTest and sloppyTest should be called with descending natural -// numbers, as in: -// -// strictTest(6,5,4,3,2,1) -// -var strictTest = (() => { - "use strict"; - return (a, b, ...c) => { - assertEquals(Array, c.constructor); - assertTrue(Array.isArray(c)); - - var expectedLength = (a === undefined) ? 0 : a - 2; - assertEquals(expectedLength, c.length); - - for (var i = 2; i < a; ++i) { - assertEquals(c[i - 2], a - i); - } - }; -})(); - -var sloppyTest = (a, b, ...c) => { - assertEquals(Array, c.constructor); - assertTrue(Array.isArray(c)); - - var expectedLength = (a === undefined) ? 0 : a - 2; - assertEquals(expectedLength, c.length); - - for (var i = 2; i < a; ++i) { - assertEquals(c[i - 2], a - i); - } -} - - -var O = { - strict: strictTest, - sloppy: sloppyTest -}; - -(function testStrictRestParamArity() { - assertEquals(2, strictTest.length); - assertEquals(2, O.strict.length); -})(); - - -(function testRestParamsStrictMode() { - strictTest(); - strictTest(2, 1); - strictTest(6, 5, 4, 3, 2, 1); - strictTest(3, 2, 1); - O.strict(); - O.strict(2, 1); - O.strict(6, 5, 4, 3, 2, 1); - O.strict(3, 2, 1); -})(); - - -(function testRestParamsStrictModeApply() { - strictTest.apply(null, []); - strictTest.apply(null, [2, 1]); - strictTest.apply(null, [6, 5, 4, 3, 2, 1]); - strictTest.apply(null, [3, 2, 1]); - O.strict.apply(O, []); - O.strict.apply(O, [2, 1]); - O.strict.apply(O, [6, 5, 4, 3, 2, 1]); - O.strict.apply(O, [3, 2, 1]); -})(); - - -(function testRestParamsStrictModeCall() { - strictTest.call(null); - strictTest.call(null, 2, 1); - strictTest.call(null, 6, 5, 4, 3, 2, 1); - strictTest.call(null, 3, 2, 1); - O.strict.call(O); - O.strict.call(O, 2, 1); - O.strict.call(O, 6, 5, 4, 3, 2, 1); - O.strict.call(O, 3, 2, 1); -})(); - - -(function testsloppyRestParamArity() { - assertEquals(2, sloppyTest.length); - assertEquals(2, O.sloppy.length); -})(); - - -(function testRestParamssloppyMode() { - sloppyTest(); - sloppyTest(2, 1); - sloppyTest(6, 5, 4, 3, 2, 1); - sloppyTest(3, 2, 1); - O.sloppy(); - O.sloppy(2, 1); - O.sloppy(6, 5, 4, 3, 2, 1); - O.sloppy(3, 2, 1); -})(); - - -(function testRestParamssloppyModeApply() { - sloppyTest.apply(null, []); - sloppyTest.apply(null, [2, 1]); - sloppyTest.apply(null, [6, 5, 4, 3, 2, 1]); - sloppyTest.apply(null, [3, 2, 1]); - O.sloppy.apply(O, []); - O.sloppy.apply(O, [2, 1]); - O.sloppy.apply(O, [6, 5, 4, 3, 2, 1]); - O.sloppy.apply(O, [3, 2, 1]); -})(); - - -(function testRestParamssloppyModeCall() { - sloppyTest.call(null); - sloppyTest.call(null, 2, 1); - sloppyTest.call(null, 6, 5, 4, 3, 2, 1); - sloppyTest.call(null, 3, 2, 1); - O.sloppy.call(O); - O.sloppy.call(O, 2, 1); - O.sloppy.call(O, 6, 5, 4, 3, 2, 1); - O.sloppy.call(O, 3, 2, 1); -})(); - - -(function testUnmappedArguments() { - // Normal functions make their arguments object unmapped, but arrow - // functions don't have an arguments object anyway. Check that the - // right thing happens for arguments in arrow functions with rest - // parameters. - assertSame(arguments, ((...rest) => arguments)()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/block-conflicts-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-conflicts-sloppy.js deleted file mode 100644 index b2ebfce6c99..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-conflicts-sloppy.js +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test for conflicting variable bindings. - -function CheckException(e) { - var string = e.toString(); - assertTrue(string.indexOf("has already been declared") >= 0 || - string.indexOf("redeclaration") >= 0); - return 'Conflict'; -} - - -function TestGlobal(s,e) { - try { - return eval(s + e); - } catch (x) { - return CheckException(x); - } -} - - -function TestFunction(s,e) { - try { - return eval("(function(){" + s + " return " + e + "})")(); - } catch (x) { - return CheckException(x); - } -} - - -function TestBlock(s,e) { - try { - return eval("(function(){ {" + s + "} return " + e + "})")(); - } catch (x) { - return CheckException(x); - } -} - -function TestAll(expected,s,opt_e) { - var e = ""; - var msg = s; - if (opt_e) { e = opt_e; msg += opt_e; } - // TODO(littledan): Add tests using Realm.eval to ensure that global eval - // works as expected. - assertEquals(expected === 'LocalConflict' ? 'NoConflict' : expected, - TestGlobal(s,e), "global:'" + msg + "'"); - assertEquals(expected === 'LocalConflict' ? 'NoConflict' : expected, - TestFunction(s,e), "function:'" + msg + "'"); - assertEquals(expected === 'LocalConflict' ? 'Conflict' : expected, - TestBlock(s,e), "block:'" + msg + "'"); -} - - -function TestConflict(s) { - TestAll('Conflict', s); - TestAll('Conflict', 'eval("' + s + '");'); -} - -function TestNoConflict(s) { - TestAll('NoConflict', s, "'NoConflict'"); - TestAll('NoConflict', 'eval("' + s + '");', "'NoConflict'"); -} - -function TestLocalConflict(s) { - TestAll('LocalConflict', s, "'NoConflict'"); - TestAll('NoConflict', 'eval("' + s + '");', "'NoConflict'"); -} - -var letbinds = [ "let x;", - "let x = 0;", - "let x = undefined;", - "let x = function() {};", - "let x, y;", - "let y, x;", - "const x = 0;", - "const x = undefined;", - "const x = function() {};", - "const x = 2, y = 3;", - "const y = 4, x = 5;", - "class x { }", - ]; -function forCompatible(bind) { - return !bind.startsWith('class'); -} -var varbinds = [ "var x;", - "var x = 0;", - "var x = undefined;", - "var x = function() {};", - "var x, y;", - "var y, x;", - ]; -var funbind = "function x() {}"; - -for (var l = 0; l < letbinds.length; ++l) { - // Test conflicting let/var bindings. - for (var v = 0; v < varbinds.length; ++v) { - // Same level. - TestConflict(letbinds[l] + varbinds[v]); - TestConflict(varbinds[v] + letbinds[l]); - // Different level. - TestConflict(letbinds[l] + '{' + varbinds[v] + '}'); - TestConflict('{' + varbinds[v] +'}' + letbinds[l]); - TestNoConflict(varbinds[v] + '{' + letbinds[l] + '}'); - TestNoConflict('{' + letbinds[l] + '}' + varbinds[v]); - // For loop. - if (forCompatible(letbinds[l])) { - TestConflict('for (' + letbinds[l] + '0;) {' + varbinds[v] + '}'); - } - TestNoConflict('for (' + varbinds[v] + '0;) {' + letbinds[l] + '}'); - } - - // Test conflicting let/let bindings. - for (var k = 0; k < letbinds.length; ++k) { - // Same level. - TestConflict(letbinds[l] + letbinds[k]); - TestConflict(letbinds[k] + letbinds[l]); - // Different level. - TestNoConflict(letbinds[l] + '{ ' + letbinds[k] + '}'); - TestNoConflict('{' + letbinds[k] +'} ' + letbinds[l]); - // For loop. - if (forCompatible(letbinds[l])) { - TestNoConflict('for (' + letbinds[l] + '0;) {' + letbinds[k] + '}'); - } - if (forCompatible(letbinds[k])) { - TestNoConflict('for (' + letbinds[k] + '0;) {' + letbinds[l] + '}'); - } - } - - // Test conflicting function/let bindings. - // Same level. - TestConflict(letbinds[l] + funbind); - TestConflict(funbind + letbinds[l]); - // Different level. - TestNoConflict(letbinds[l] + '{' + funbind + '}'); - TestNoConflict('{' + funbind + '}' + letbinds[l]); - TestNoConflict(funbind + '{' + letbinds[l] + '}'); - TestNoConflict('{' + letbinds[l] + '}' + funbind); - // For loop. - if (forCompatible(letbinds[l])) { - TestNoConflict('for (' + letbinds[l] + '0;) {' + funbind + '}'); - } - - // Test conflicting parameter/let bindings. - TestConflict('(function(x) {' + letbinds[l] + '})();'); -} - -// Test conflicting function/var bindings. -for (var v = 0; v < varbinds.length; ++v) { - // Same level. - TestLocalConflict(varbinds[v] + funbind); - TestLocalConflict(funbind + varbinds[v]); - // Different level. - TestLocalConflict(funbind + '{' + varbinds[v] + '}'); - TestLocalConflict('{' + varbinds[v] +'}' + funbind); - TestNoConflict(varbinds[v] + '{' + funbind + '}'); - TestNoConflict('{' + funbind + '}' + varbinds[v]); - // For loop. - TestNoConflict('for (' + varbinds[v] + '0;) {' + funbind + '}'); -} - -// Test conflicting catch/var bindings. -for (var v = 0; v < varbinds.length; ++v) { - TestNoConflict('try {} catch(x) {' + varbinds[v] + '}'); -} - -// Test conflicting parameter/var bindings. -for (var v = 0; v < varbinds.length; ++v) { - TestNoConflict('(function (x) {' + varbinds[v] + '})();'); -} - -// Test conflicting parameter/function bindings. -TestNoConflict('(function (x) {' + funbind + '})();'); diff --git a/implementation-contributed/v8/mjsunit/es6/block-conflicts.js b/implementation-contributed/v8/mjsunit/es6/block-conflicts.js deleted file mode 100644 index bca3cb4ea54..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-conflicts.js +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test for conflicting variable bindings. - -"use strict"; - -function CheckException(e) { - var string = e.toString(); - assertTrue(string.indexOf("has already been declared") >= 0 || - string.indexOf("redeclaration") >= 0); - return 'Conflict'; -} - - -function TestGlobal(s,e) { - try { - return eval(s + e); - } catch (x) { - return CheckException(x); - } -} - - -function TestFunction(s,e) { - try { - return eval("(function(){" + s + " return " + e + "})")(); - } catch (x) { - return CheckException(x); - } -} - - -function TestBlock(s,e) { - try { - return eval("(function(){ {" + s + "} return " + e + "})")(); - } catch (x) { - return CheckException(x); - } -} - -function TestAll(expected,s,opt_e) { - var e = ""; - var msg = s; - if (opt_e) { e = opt_e; msg += opt_e; } - assertEquals(expected === 'LocalConflict' ? 'NoConflict' : expected, - TestGlobal(s,e), "global:'" + msg + "'"); - assertEquals(expected === 'LocalConflict' ? 'NoConflict' : expected, - TestFunction(s,e), "function:'" + msg + "'"); - assertEquals(expected === 'LocalConflict' ? 'Conflict' : expected, - TestBlock(s,e), "block:'" + msg + "'"); -} - - -function TestConflict(s) { - TestAll('Conflict', s); - TestAll('Conflict', 'eval("' + s + '");'); -} - -function TestNoConflict(s) { - TestAll('NoConflict', s, "'NoConflict'"); - TestAll('NoConflict', 'eval("' + s + '");', "'NoConflict'"); -} - -function TestLocalConflict(s) { - TestAll('LocalConflict', s, "'NoConflict'"); - TestAll('NoConflict', 'eval("' + s + '");', "'NoConflict'"); -} - -var letbinds = [ "let x;", - "let x = 0;", - "let x = undefined;", - "let x = function() {};", - "let x, y;", - "let y, x;", - "const x = 0;", - "const x = undefined;", - "const x = function() {};", - "const x = 2, y = 3;", - "const y = 4, x = 5;", - "class x { }", - ]; -function forCompatible(bind) { - return !bind.startsWith('class'); -} -var varbinds = [ "var x;", - "var x = 0;", - "var x = undefined;", - "var x = function() {};", - "var x, y;", - "var y, x;", - ]; -var funbind = "function x() {}"; - -for (var l = 0; l < letbinds.length; ++l) { - // Test conflicting let/var bindings. - for (var v = 0; v < varbinds.length; ++v) { - // Same level. - TestConflict(letbinds[l] + varbinds[v]); - TestConflict(varbinds[v] + letbinds[l]); - // Different level. - TestConflict(letbinds[l] + '{' + varbinds[v] + '}'); - TestConflict('{' + varbinds[v] +'}' + letbinds[l]); - TestNoConflict(varbinds[v] + '{' + letbinds[l] + '}'); - TestNoConflict('{' + letbinds[l] + '}' + varbinds[v]); - // For loop. - if (forCompatible(letbinds[l])) { - TestConflict('for (' + letbinds[l] + '0;) {' + varbinds[v] + '}'); - } - TestNoConflict('for (' + varbinds[v] + '0;) {' + letbinds[l] + '}'); - } - - // Test conflicting let/let bindings. - for (var k = 0; k < letbinds.length; ++k) { - // Same level. - TestConflict(letbinds[l] + letbinds[k]); - TestConflict(letbinds[k] + letbinds[l]); - // Different level. - TestNoConflict(letbinds[l] + '{ ' + letbinds[k] + '}'); - TestNoConflict('{' + letbinds[k] +'} ' + letbinds[l]); - // For loop. - if (forCompatible(letbinds[l])) { - TestNoConflict('for (' + letbinds[l] + '0;) {' + letbinds[k] + '}'); - } - if (forCompatible(letbinds[k])) { - TestNoConflict('for (' + letbinds[k] + '0;) {' + letbinds[l] + '}'); - } - } - - // Test conflicting function/let bindings. - // Same level. - TestConflict(letbinds[l] + funbind); - TestConflict(funbind + letbinds[l]); - // Different level. - TestNoConflict(letbinds[l] + '{' + funbind + '}'); - TestNoConflict('{' + funbind + '}' + letbinds[l]); - TestNoConflict(funbind + '{' + letbinds[l] + '}'); - TestNoConflict('{' + letbinds[l] + '}' + funbind); - // For loop. - if (forCompatible(letbinds[l])) { - TestNoConflict('for (' + letbinds[l] + '0;) {' + funbind + '}'); - } - - // Test conflicting parameter/let bindings. - TestConflict('(function(x) {' + letbinds[l] + '})();'); -} - -// Test conflicting function/var bindings. -for (var v = 0; v < varbinds.length; ++v) { - // Same level. - TestLocalConflict(varbinds[v] + funbind); - TestLocalConflict(funbind + varbinds[v]); - // Different level. - TestLocalConflict(funbind + '{' + varbinds[v] + '}'); - TestLocalConflict('{' + varbinds[v] +'}' + funbind); - TestNoConflict(varbinds[v] + '{' + funbind + '}'); - TestNoConflict('{' + funbind + '}' + varbinds[v]); - // For loop. - TestNoConflict('for (' + varbinds[v] + '0;) {' + funbind + '}'); -} - -// Test conflicting catch/var bindings. -for (var v = 0; v < varbinds.length; ++v) { - TestNoConflict('try {} catch(x) {' + varbinds[v] + '}'); -} - -// Test conflicting parameter/var bindings. -for (var v = 0; v < varbinds.length; ++v) { - TestNoConflict('(function (x) {' + varbinds[v] + '})();'); -} - -// Test conflicting parameter/function bindings. -TestNoConflict('(function (x) {' + funbind + '})();'); diff --git a/implementation-contributed/v8/mjsunit/es6/block-const-assign-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-const-assign-sloppy.js deleted file mode 100644 index 99024ef7cbb..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-const-assign-sloppy.js +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we throw early syntax errors in harmony mode -// when using an immutable binding in an assigment or with -// prefix/postfix decrement/increment operators. - -const decls = [ - // Const declaration. - function(use) { return "const c = 1; " + use + ";" }, TypeError, - function(use) { return "const x = 0, c = 1; " + use + ";" }, TypeError, - function(use) { return "const c = 1, x = (" + use + ");" }, TypeError, - function(use) { return use + "; const c = 1;" }, ReferenceError, - function(use) { return use + "; const x = 0, c = 1;" }, ReferenceError, - function(use) { return "const x = (" + use + "), c = 1;" }, ReferenceError, - function(use) { return "const c = (" + use + ");" }, ReferenceError, - - // Function expression. - function(use) { return "(function c() { " + use + "; })();"; }, TypeError, - // TODO(rossberg): Once we have default parameters, test using 'c' there. - - // Class expression. - function(use) { - return "new class c { constructor() { " + use + " } };"; - }, TypeError, - function(use) { - return "(new class c { m() { " + use + " } }).m();"; - }, TypeError, - function(use) { - return "(new class c { get a() { " + use + " } }).a;"; - }, TypeError, - function(use) { - return "(new class c { set a(x) { " + use + " } }).a = 0;"; - }, TypeError, - function(use) { - return "(class c { static m() { " + use + " } }).s();"; - }, TypeError, - function(use) { - return "(class c extends (" + use + ") {});"; - }, ReferenceError, - function(use) { - return "(class c { [" + use + "]() {} });"; - }, ReferenceError, - function(use) { - return "(class c { get [" + use + "]() {} });"; - }, ReferenceError, - function(use) { - return "(class c { set [" + use + "](x) {} });"; - }, ReferenceError, - function(use) { - return "(class c { static [" + use + "]() {} });"; - }, ReferenceError, - - // For loop. - function(use) { - return "for (const c = 0; " + use + ";) {}" - }, TypeError, - function(use) { - return "for (const x = 0, c = 0; " + use + ";) {}" - }, TypeError, - function(use) { - return "for (const c = 0; ; " + use + ") {}" - }, TypeError, - function(use) { - return "for (const x = 0, c = 0; ; " + use + ") {}" - }, TypeError, - function(use) { - return "for (const c = 0; ;) { " + use + "; }" - }, TypeError, - function(use) { - return "for (const x = 0, c = 0; ;) { " + use + "; }" - }, TypeError, - function(use) { - return "for (const c in {a: 1}) { " + use + "; }" - }, TypeError, - function(use) { - return "for (const c of [1]) { " + use + "; }" - }, TypeError, - function(use) { - return "for (const x = (" + use + "), c = 0; ;) {}" - }, ReferenceError, - function(use) { - return "for (const c = (" + use + "); ;) {}" - }, ReferenceError, -] - -let uses = [ - 'c = 1', - 'c += 1', - '++c', - 'c--', -]; - -let declcontexts = [ - function(decl) { return decl; }, - function(decl) { return "eval(\'" + decl + "\')"; }, - function(decl) { return "{ " + decl + " }"; }, - function(decl) { return "(function() { " + decl + " })()"; }, -]; - -let usecontexts = [ - function(use) { return use; }, - function(use) { return "eval(\"" + use + "\")"; }, - function(use) { return "(function() { " + use + " })()"; }, - function(use) { return "(function() { eval(\"" + use + "\"); })()"; }, - function(use) { return "eval(\"(function() { " + use + "; })\")()"; }, -]; - -function Test(program, error) { - program = "'use strict'; " + program; - try { - print(program, " // throw " + error.name); - eval(program); - } catch (e) { - assertInstanceof(e, error); - if (e === TypeError) { - assertTrue(e.toString().indexOf("Assignment to constant variable") >= 0); - } - return; - } - assertUnreachable(); -} - -for (var d = 0; d < decls.length; d += 2) { - for (var u = 0; u < uses.length; ++u) { - for (var o = 0; o < declcontexts.length; ++o) { - for (var i = 0; i < usecontexts.length; ++i) { - Test(declcontexts[o](decls[d](usecontexts[i](uses[u]))), decls[d + 1]); - } - } - } -} diff --git a/implementation-contributed/v8/mjsunit/es6/block-const-assign.js b/implementation-contributed/v8/mjsunit/es6/block-const-assign.js deleted file mode 100644 index 541dc0d97b1..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-const-assign.js +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we throw early syntax errors in harmony mode -// when using an immutable binding in an assigment or with -// prefix/postfix decrement/increment operators. - -"use strict"; - -const decls = [ - // Const declaration. - function(use) { return "const c = 1; " + use + ";" }, TypeError, - function(use) { return "const x = 0, c = 1; " + use + ";" }, TypeError, - function(use) { return "const c = 1, x = (" + use + ");" }, TypeError, - function(use) { return use + "; const c = 1;" }, ReferenceError, - function(use) { return use + "; const x = 0, c = 1;" }, ReferenceError, - function(use) { return "const x = (" + use + "), c = 1;" }, ReferenceError, - function(use) { return "const c = (" + use + ");" }, ReferenceError, - - // Function expression. - function(use) { return "(function c() { " + use + "; })();"; }, TypeError, - // TODO(rossberg): Once we have default parameters, test using 'c' there. - - // Class expression. - function(use) { - return "new class c { constructor() { " + use + " } };"; - }, TypeError, - function(use) { - return "(new class c { m() { " + use + " } }).m();"; - }, TypeError, - function(use) { - return "(new class c { get a() { " + use + " } }).a;"; - }, TypeError, - function(use) { - return "(new class c { set a(x) { " + use + " } }).a = 0;"; - }, TypeError, - function(use) { - return "(class c { static m() { " + use + " } }).s();"; - }, TypeError, - function(use) { - return "(class c extends (" + use + ") {});"; - }, ReferenceError, - function(use) { - return "(class c { [" + use + "]() {} });"; - }, ReferenceError, - function(use) { - return "(class c { get [" + use + "]() {} });"; - }, ReferenceError, - function(use) { - return "(class c { set [" + use + "](x) {} });"; - }, ReferenceError, - function(use) { - return "(class c { static [" + use + "]() {} });"; - }, ReferenceError, - - // For loop. - function(use) { - return "for (const c = 0; " + use + ";) {}" - }, TypeError, - function(use) { - return "for (const x = 0, c = 0; " + use + ";) {}" - }, TypeError, - function(use) { - return "for (const c = 0; ; " + use + ") {}" - }, TypeError, - function(use) { - return "for (const x = 0, c = 0; ; " + use + ") {}" - }, TypeError, - function(use) { - return "for (const c = 0; ;) { " + use + "; }" - }, TypeError, - function(use) { - return "for (const x = 0, c = 0; ;) { " + use + "; }" - }, TypeError, - function(use) { - return "for (const c in {a: 1}) { " + use + "; }" - }, TypeError, - function(use) { - return "for (const c of [1]) { " + use + "; }" - }, TypeError, - function(use) { - return "for (const x = (" + use + "), c = 0; ;) {}" - }, ReferenceError, - function(use) { - return "for (const c = (" + use + "); ;) {}" - }, ReferenceError, -] - -let uses = [ - 'c = 1', - 'c += 1', - '++c', - 'c--', -]; - -let declcontexts = [ - function(decl) { return decl; }, - function(decl) { return "eval(\'" + decl + "\')"; }, - function(decl) { return "{ " + decl + " }"; }, - function(decl) { return "(function() { " + decl + " })()"; }, -]; - -let usecontexts = [ - function(use) { return use; }, - function(use) { return "eval(\"" + use + "\")"; }, - function(use) { return "(function() { " + use + " })()"; }, - function(use) { return "(function() { eval(\"" + use + "\"); })()"; }, - function(use) { return "eval(\"(function() { " + use + "; })\")()"; }, -]; - -function Test(program, error) { - program = "'use strict'; " + program; - try { - print(program, " // throw " + error.name); - eval(program); - } catch (e) { - assertInstanceof(e, error); - if (e === TypeError) { - assertTrue(e.toString().indexOf("Assignment to constant variable") >= 0); - } - return; - } - assertUnreachable(); -} - -for (var d = 0; d < decls.length; d += 2) { - for (var u = 0; u < uses.length; ++u) { - for (var o = 0; o < declcontexts.length; ++o) { - for (var i = 0; i < usecontexts.length; ++i) { - Test(declcontexts[o](decls[d](usecontexts[i](uses[u]))), decls[d + 1]); - } - } - } -} diff --git a/implementation-contributed/v8/mjsunit/es6/block-eval-var-over-let.js b/implementation-contributed/v8/mjsunit/es6/block-eval-var-over-let.js deleted file mode 100644 index 784f5d2f420..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-eval-var-over-let.js +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Var-let conflict in a function throws, even if the var is in an eval - -// Throws at the top level of a function -assertThrows(function() { - let x = 1; - eval('var x'); -}, SyntaxError); - -// If the eval is in its own block scope, throws -assertThrows(function() { - let y = 1; - { eval('var y'); } -}, SyntaxError); - -// If the let is in its own block scope, with the eval, throws -assertThrows(function() { - { - let x = 1; - eval('var x'); - } -}, SyntaxError); - -// Legal if the let is no longer visible -assertDoesNotThrow(function() { - { - let x = 1; - } - eval('var x'); -}); - -// All the same works for const: -// Throws at the top level of a function -assertThrows(function() { - const x = 1; - eval('var x'); -}, SyntaxError); - -// If the eval is in its own block scope, throws -assertThrows(function() { - const y = 1; - { eval('var y'); } -}, SyntaxError); - -// If the const is in its own block scope, with the eval, throws -assertThrows(function() { - { - const x = 1; - eval('var x'); - } -}, SyntaxError); - -// Legal if the const is no longer visible -assertDoesNotThrow(function() { - { - const x = 1; - } - eval('var x'); -}); - -// The same should work for lexical function declarations: -// If the const is in its own block scope, with the eval, throws -assertThrows(function() { - { - function x() {} - eval('var x'); - } -}, SyntaxError); - -// If the eval is in its own block scope, throws -assertThrows(function() { - { - function y() {} - { eval('var y'); } - } -}, SyntaxError); - -// In global scope -let caught = false; -try { - let z = 1; - eval('var z'); -} catch (e) { - caught = true; -} -assertTrue(caught); - -// Let declarations beyond a function boundary don't conflict -caught = false; -try { - let a = 1; - (function() { - eval('var a'); - })(); -} catch (e) { - caught = true; -} -assertFalse(caught); - -// var across with doesn't conflict -caught = false; -try { - (function() { - with ({x: 1}) { - eval("var x"); - } - })(); -} catch (e) { - caught = true; -} -assertFalse(caught); - -// var can still conflict with let across a with -caught = false; -try { - (function() { - let x; - with ({x: 1}) { - eval("var x"); - } - })(); -} catch (e) { - caught = true; -} -assertTrue(caught); - -// Functions declared in eval also conflict -caught = false -try { - (function() { - { - let x = 1; - eval('function x() {}'); - } - })(); -} catch (e) { - caught = true; -} -assertTrue(caught); - -// See ES#sec-web-compat-evaldeclarationinstantiation. Sloppy block functions -// inside of blocks in eval behave similar to regular sloppy block function -// hoisting: the var declaration on the function level is only created if -// it would not cause a syntax error. A masking let would cause a conflicting -// var declaration syntax error, and hence the var isn't introduced. -(function() { - { - let x = 1; - eval('{ function x() {} }'); - assertEquals(1, x); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/block-for-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-for-sloppy.js deleted file mode 100644 index 4f0f63faa3b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-for-sloppy.js +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function props(x) { - var array = []; - for (let p in x) array.push(p); - return array.sort(); -} - -assertEquals(0, props({}).length); -assertEquals(1, props({x:1}).length); -assertEquals(2, props({x:1, y:2}).length); - -assertArrayEquals(["x"], props({x:1})); -assertArrayEquals(["x", "y"], props({x:1, y:2})); -assertArrayEquals(["x", "y", "zoom"], props({x:1, y:2, zoom:3})); - -assertEquals(0, props([]).length); -assertEquals(1, props([1]).length); -assertEquals(2, props([1,2]).length); - -assertArrayEquals(["0"], props([1])); -assertArrayEquals(["0", "1"], props([1,2])); -assertArrayEquals(["0", "1", "2"], props([1,2,3])); - -var o = {}; -var a = []; -let i = "outer_i"; -let s = "outer_s"; -for (let i = 0x0020; i < 0x01ff; i+=2) { - let s = 'char:' + String.fromCharCode(i); - a.push(s); - o[s] = i; -} -assertArrayEquals(a, props(o)); -assertEquals(i, "outer_i"); -assertEquals(s, "outer_s"); - -var a = []; -assertEquals(0, props(a).length); -a[Math.pow(2,30)-1] = 0; -assertEquals(1, props(a).length); -a[Math.pow(2,31)-1] = 0; -assertEquals(2, props(a).length); -a[1] = 0; -assertEquals(3, props(a).length); - -var result = ''; -for (let p in {a : [0], b : 1}) { result += p; } -assertEquals('ab', result); - -var result = ''; -for (let p in {a : {v:1}, b : 1}) { result += p; } -assertEquals('ab', result); - -var result = ''; -for (let p in { get a() {}, b : 1}) { result += p; } -assertEquals('ab', result); - -var result = ''; -for (let p in { get a() {}, set a(x) {}, b : 1}) { result += p; } -assertEquals('ab', result); - - -// Check that there is exactly one variable without initializer -// in a for-in statement with let variables. -assertThrows("function foo() { 'use strict'; for (let in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x = 3 in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x, y in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x = 3, y in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x, y = 4 in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x = 3, y = 4 in {}) { } }", SyntaxError); - - -// In a normal for statement the iteration variable is -// freshly allocated for each iteration. -function closures1() { - let a = []; - for (let i = 0; i < 5; ++i) { - a.push(function () { return i; }); - } - for (let j = 0; j < 5; ++j) { - assertEquals(j, a[j]()); - } -} -closures1(); - - -function closures2() { - let a = [], b = []; - for (let i = 0, j = 10; i < 5; ++i, ++j) { - a.push(function () { return i; }); - b.push(function () { return j; }); - } - for (let k = 0; k < 5; ++k) { - assertEquals(k, a[k]()); - assertEquals(k + 10, b[k]()); - } -} -closures2(); - - -function closure_in_for_init() { - let a = []; - for (let i = 0, f = function() { return i }; i < 5; ++i) { - a.push(f); - } - for (let k = 0; k < 5; ++k) { - assertEquals(0, a[k]()); - } -} -closure_in_for_init(); - - -function closure_in_for_cond() { - let a = []; - for (let i = 0; a.push(function () { return i; }), i < 5; ++i) { } - for (let k = 0; k < 5; ++k) { - assertEquals(k, a[k]()); - } -} -closure_in_for_cond(); - - -function closure_in_for_next() { - let a = []; - for (let i = 0; i < 5; a.push(function () { return i; }), ++i) { } - for (let k = 0; k < 5; ++k) { - assertEquals(k + 1, a[k]()); - } -} -closure_in_for_next(); - - -// In a for-in statement the iteration variable is fresh -// for each iteration. -function closures3(x) { - let a = []; - for (let p in x) { - a.push(function () { return p; }); - } - let k = 0; - for (let q in x) { - assertEquals(q, a[k]()); - ++k; - } -} -closures3({a : [0], b : 1, c : {v : 1}, get d() {}, set e(x) {}}); - -// Check normal for statement completion values. -assertEquals(1, eval("for (let i = 0; i < 10; i++) { 1; }")); -assertEquals(9, eval("for (let i = 0; i < 10; i++) { i; }")); -assertEquals(undefined, eval("for (let i = 0; false;) { }")); -assertEquals(undefined, eval("for (const i = 0; false;) { }")); -assertEquals(undefined, eval("for (let i = 0; i < 10; i++) { }")); -assertEquals(undefined, eval("for (let i = 0; false;) { i; }")); -assertEquals(undefined, eval("for (const i = 0; false;) { i; }")); -assertEquals(undefined, eval("for (let i = 0; true;) { break; }")); -assertEquals(undefined, eval("for (const i = 0; true;) { break; }")); -assertEquals(undefined, eval("for (let i = 0; i < 10; i++) { continue; }")); -assertEquals(undefined, eval("for (let i = 0; true;) { break; i; }")); -assertEquals(undefined, eval("for (const i = 0; true;) { break; i; }")); -assertEquals(undefined, eval("for (let i = 0; i < 10; i++) { continue; i; }")); -assertEquals(0, eval("for (let i = 0; true;) { i; break; }")); -assertEquals(0, eval("for (const i = 0; true;) { i; break; }")); -assertEquals(9, eval("for (let i = 0; i < 10; i++) { i; continue; }")); -assertEquals( - undefined, eval("for (let i = 0; true; i++) { i; if (i >= 3) break; }")); -assertEquals( - undefined, eval("for (let i = 0; true; i++) { if (i >= 3) break; i; }")); -assertEquals( - undefined, eval("for (let i = 0; i < 10; i++) { if (i >= 3) continue; i; }")); -assertEquals(undefined, eval("foo: for (let i = 0; true;) { break foo; }")); -assertEquals(undefined, eval("foo: for (const i = 0; true;) { break foo; }")); -assertEquals(3, eval("foo: for (let i = 3; true;) { i; break foo; }")); diff --git a/implementation-contributed/v8/mjsunit/es6/block-for.js b/implementation-contributed/v8/mjsunit/es6/block-for.js deleted file mode 100644 index d953d376f02..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-for.js +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict"; - -function props(x) { - var array = []; - for (let p in x) array.push(p); - return array.sort(); -} - -assertEquals(0, props({}).length); -assertEquals(1, props({x:1}).length); -assertEquals(2, props({x:1, y:2}).length); - -assertArrayEquals(["x"], props({x:1})); -assertArrayEquals(["x", "y"], props({x:1, y:2})); -assertArrayEquals(["x", "y", "zoom"], props({x:1, y:2, zoom:3})); - -assertEquals(0, props([]).length); -assertEquals(1, props([1]).length); -assertEquals(2, props([1,2]).length); - -assertArrayEquals(["0"], props([1])); -assertArrayEquals(["0", "1"], props([1,2])); -assertArrayEquals(["0", "1", "2"], props([1,2,3])); - -var o = {}; -var a = []; -let i = "outer_i"; -let s = "outer_s"; -for (let i = 0x0020; i < 0x01ff; i+=2) { - let s = 'char:' + String.fromCharCode(i); - a.push(s); - o[s] = i; -} -assertArrayEquals(a, props(o)); -assertEquals(i, "outer_i"); -assertEquals(s, "outer_s"); - -var a = []; -assertEquals(0, props(a).length); -a[Math.pow(2,30)-1] = 0; -assertEquals(1, props(a).length); -a[Math.pow(2,31)-1] = 0; -assertEquals(2, props(a).length); -a[1] = 0; -assertEquals(3, props(a).length); - -var result = ''; -for (let p in {a : [0], b : 1}) { result += p; } -assertEquals('ab', result); - -var result = ''; -for (let p in {a : {v:1}, b : 1}) { result += p; } -assertEquals('ab', result); - -var result = ''; -for (let p in { get a() {}, b : 1}) { result += p; } -assertEquals('ab', result); - -var result = ''; -for (let p in { get a() {}, set a(x) {}, b : 1}) { result += p; } -assertEquals('ab', result); - - -// Check that there is exactly one variable without initializer -// in a for-in statement with let variables. -assertThrows("function foo() { 'use strict'; for (let in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x = 3 in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x, y in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x = 3, y in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x, y = 4 in {}) { } }", SyntaxError); -assertThrows("function foo() { 'use strict'; for (let x = 3, y = 4 in {}) { } }", SyntaxError); - - -// In a normal for statement the iteration variable is -// freshly allocated for each iteration. -function closures1() { - let a = []; - for (let i = 0; i < 5; ++i) { - a.push(function () { return i; }); - } - for (let j = 0; j < 5; ++j) { - assertEquals(j, a[j]()); - } -} -closures1(); - - -function closures2() { - let a = [], b = []; - for (let i = 0, j = 10; i < 5; ++i, ++j) { - a.push(function () { return i; }); - b.push(function () { return j; }); - } - for (let k = 0; k < 5; ++k) { - assertEquals(k, a[k]()); - assertEquals(k + 10, b[k]()); - } -} -closures2(); - - -function closure_in_for_init() { - let a = []; - for (let i = 0, f = function() { return i }; i < 5; ++i) { - a.push(f); - } - for (let k = 0; k < 5; ++k) { - assertEquals(0, a[k]()); - } -} -closure_in_for_init(); - - -function closure_in_for_cond() { - let a = []; - for (let i = 0; a.push(function () { return i; }), i < 5; ++i) { } - for (let k = 0; k < 5; ++k) { - assertEquals(k, a[k]()); - } -} -closure_in_for_cond(); - - -function closure_in_for_next() { - let a = []; - for (let i = 0; i < 5; a.push(function () { return i; }), ++i) { } - for (let k = 0; k < 5; ++k) { - assertEquals(k + 1, a[k]()); - } -} -closure_in_for_next(); - - -// In a for-in statement the iteration variable is fresh -// for each iteration. -function closures3(x) { - let a = []; - for (let p in x) { - a.push(function () { return p; }); - } - let k = 0; - for (let q in x) { - assertEquals(q, a[k]()); - ++k; - } -} -closures3({a : [0], b : 1, c : {v : 1}, get d() {}, set e(x) {}}); - -// Check normal for statement completion values. -assertEquals(1, eval("for (let i = 0; i < 10; i++) { 1; }")); -assertEquals(9, eval("for (let i = 0; i < 10; i++) { i; }")); -assertEquals(undefined, eval("for (let i = 0; false;) { }")); -assertEquals(undefined, eval("for (const i = 0; false;) { }")); -assertEquals(undefined, eval("for (let i = 0; i < 10; i++) { }")); -assertEquals(undefined, eval("for (let i = 0; false;) { i; }")); -assertEquals(undefined, eval("for (const i = 0; false;) { i; }")); -assertEquals(undefined, eval("for (let i = 0; true;) { break; }")); -assertEquals(undefined, eval("for (const i = 0; true;) { break; }")); -assertEquals(undefined, eval("for (let i = 0; i < 10; i++) { continue; }")); -assertEquals(undefined, eval("for (let i = 0; true;) { break; i; }")); -assertEquals(undefined, eval("for (const i = 0; true;) { break; i; }")); -assertEquals(undefined, eval("for (let i = 0; i < 10; i++) { continue; i; }")); -assertEquals(0, eval("for (let i = 0; true;) { i; break; }")); -assertEquals(0, eval("for (const i = 0; true;) { i; break; }")); -assertEquals(9, eval("for (let i = 0; i < 10; i++) { i; continue; }")); -assertEquals(undefined, - eval("for (let i = 0; true; i++) { i; if (i >= 3) break; }")); -assertEquals(3, - eval("for (let i = 0; true; i++) { i; if (i >= 3) { i; break; } }")); -assertEquals(undefined, - eval("for (let i = 0; true; i++) { if (i >= 3) break; i; }")); -assertEquals(3, - eval("for (let i = 0; true; i++) { if (i >= 3) { i; break; }; i; }")); -assertEquals(undefined, - eval("for (let i = 0; i < 10; i++) { if (i >= 3) continue; i; }")); -assertEquals(9, - eval("for (let i = 0; i < 10; i++) { if (i >= 3) {i; continue; }; i; }")); -assertEquals(undefined, eval("foo: for (let i = 0; true;) { break foo; }")); -assertEquals(undefined, eval("foo: for (const i = 0; true;) { break foo; }")); -assertEquals(3, eval("foo: for (let i = 3; true;) { i; break foo; }")); diff --git a/implementation-contributed/v8/mjsunit/es6/block-leave-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-leave-sloppy.js deleted file mode 100644 index 1313026bf86..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-leave-sloppy.js +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// We want to test the context chain shape. In each of the tests cases -// below, the outer with is to force a runtime lookup of the identifier 'x' -// to actually verify that the inner context has been discarded. A static -// lookup of 'x' might accidentally succeed. - -{ - let x = 2; - L: { - let x = 3; - assertEquals(3, x); - break L; - assertTrue(false); - } - assertEquals(2, x); -} - -do { - let x = 4; - assertEquals(4,x); - { - let x = 5; - assertEquals(5, x); - continue; - assertTrue(false); - } -} while (false); - -var caught = false; -try { - { - let xx = 18; - throw 25; - assertTrue(false); - } -} catch (e) { - caught = true; - assertEquals(25, e); - (function () { - try { - // NOTE: This checks that the block scope containing xx has been - // removed from the context chain. - eval('xx'); - assertTrue(false); // should not reach here - } catch (e2) { - assertTrue(e2 instanceof ReferenceError); - } - })(); -} -assertTrue(caught); - - -(function(x) { - label: { - let x = 'inner'; - break label; - } - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - label: { - let x = 'middle'; - { - let x = 'inner'; - break label; - } - } - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - for (var i = 0; i < 10; ++i) { - let x = 'inner' + i; - continue; - } - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - label: for (var i = 0; i < 10; ++i) { - let x = 'middle' + i; - for (var j = 0; j < 10; ++j) { - let x = 'inner' + j; - continue label; - } - } - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - try { - let x = 'inner'; - throw 0; - } catch (e) { - assertEquals('outer', eval('x')); - } -})('outer'); - - -(function(x) { - try { - let x = 'middle'; - { - let x = 'inner'; - throw 0; - } - } catch (e) { - assertEquals('outer', eval('x')); - } -})('outer'); - - -try { - (function(x) { - try { - let x = 'inner'; - throw 0; - } finally { - assertEquals('outer', eval('x')); - } - })('outer'); -} catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; -} - - -try { - (function(x) { - try { - let x = 'middle'; - { - let x = 'inner'; - throw 0; - } - } finally { - assertEquals('outer', eval('x')); - } - })('outer'); -} catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; -} - - -// Verify that the context is correctly set in the stack frame after exiting -// from eval. -function f() {} - -(function(x) { - label: { - let x = 'inner'; - break label; - } - f(); // The context could be restored from the stack after the call. - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - for (var i = 0; i < 10; ++i) { - let x = 'inner'; - continue; - } - f(); - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - try { - let x = 'inner'; - throw 0; - } catch (e) { - f(); - assertEquals('outer', eval('x')); - } -})('outer'); - - -try { - (function(x) { - try { - let x = 'inner'; - throw 0; - } finally { - f(); - assertEquals('outer', eval('x')); - } - })('outer'); -} catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; -} diff --git a/implementation-contributed/v8/mjsunit/es6/block-leave.js b/implementation-contributed/v8/mjsunit/es6/block-leave.js deleted file mode 100644 index 4c63b77319c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-leave.js +++ /dev/null @@ -1,224 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict"; - -// We want to test the context chain shape. In each of the tests cases -// below, the outer with is to force a runtime lookup of the identifier 'x' -// to actually verify that the inner context has been discarded. A static -// lookup of 'x' might accidentally succeed. - -{ - let x = 2; - L: { - let x = 3; - assertEquals(3, x); - break L; - assertTrue(false); - } - assertEquals(2, x); -} - -do { - let x = 4; - assertEquals(4,x); - { - let x = 5; - assertEquals(5, x); - continue; - assertTrue(false); - } -} while (false); - -var caught = false; -try { - { - let xx = 18; - throw 25; - assertTrue(false); - } -} catch (e) { - caught = true; - assertEquals(25, e); - (function () { - try { - // NOTE: This checks that the block scope containing xx has been - // removed from the context chain. - eval('xx'); - assertTrue(false); // should not reach here - } catch (e2) { - assertTrue(e2 instanceof ReferenceError); - } - })(); -} -assertTrue(caught); - - -(function(x) { - label: { - let x = 'inner'; - break label; - } - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - label: { - let x = 'middle'; - { - let x = 'inner'; - break label; - } - } - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - for (var i = 0; i < 10; ++i) { - let x = 'inner' + i; - continue; - } - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - label: for (var i = 0; i < 10; ++i) { - let x = 'middle' + i; - for (var j = 0; j < 10; ++j) { - let x = 'inner' + j; - continue label; - } - } - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - try { - let x = 'inner'; - throw 0; - } catch (e) { - assertEquals('outer', eval('x')); - } -})('outer'); - - -(function(x) { - try { - let x = 'middle'; - { - let x = 'inner'; - throw 0; - } - } catch (e) { - assertEquals('outer', eval('x')); - } -})('outer'); - - -try { - (function(x) { - try { - let x = 'inner'; - throw 0; - } finally { - assertEquals('outer', eval('x')); - } - })('outer'); -} catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; -} - - -try { - (function(x) { - try { - let x = 'middle'; - { - let x = 'inner'; - throw 0; - } - } finally { - assertEquals('outer', eval('x')); - } - })('outer'); -} catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; -} - - -// Verify that the context is correctly set in the stack frame after exiting -// from eval. -function f() {} - -(function(x) { - label: { - let x = 'inner'; - break label; - } - f(); // The context could be restored from the stack after the call. - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - for (var i = 0; i < 10; ++i) { - let x = 'inner'; - continue; - } - f(); - assertEquals('outer', eval('x')); -})('outer'); - - -(function(x) { - try { - let x = 'inner'; - throw 0; - } catch (e) { - f(); - assertEquals('outer', eval('x')); - } -})('outer'); - - -try { - (function(x) { - try { - let x = 'inner'; - throw 0; - } finally { - f(); - assertEquals('outer', eval('x')); - } - })('outer'); -} catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; -} diff --git a/implementation-contributed/v8/mjsunit/es6/block-let-contextual-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-let-contextual-sloppy.js deleted file mode 100644 index 8282d779a19..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-let-contextual-sloppy.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// let is usable as a variable with var, but not let or ES6 const - -(function (){ - assertEquals(undefined, let); - - var let; - - let = 5; - assertEquals(5, let); - - (function() { var let = 1; assertEquals(1, let); })(); - assertEquals(5, let); -})(); - -assertThrows(function() { return let; }, ReferenceError); - -(function() { - var let, sum = 0; - for (let in [1, 2, 3, 4]) sum += Number(let); - assertEquals(6, sum); - - (function() { for (var let of [4, 5]) sum += let; })(); - assertEquals(15, sum); - - (function() { for (var let in [6]) sum += Number([6][let]); })(); - assertEquals(21, sum); - - for (let = 7; let < 8; let++) sum += let; - assertEquals(28, sum); - assertEquals(8, let); - - (function() { for (var let = 8; let < 9; let++) sum += let; })(); - assertEquals(36, sum); - assertEquals(8, let); -})(); - -assertThrows(function() { return let; }, ReferenceError); - -(function () { - let obj = {}; - var {let} = {let() { return obj; }}; - let().x = 1; - assertEquals(1, obj.x); -})(); - -(function() { - function let() { - return 1; - } - assertEquals(1, let()); -})() - -assertThrows('for (let of []) {}', SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/es6/block-let-crankshaft-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-let-crankshaft-sloppy.js deleted file mode 100644 index 5711ac270e5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-let-crankshaft-sloppy.js +++ /dev/null @@ -1,482 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -// Check that the following functions are optimizable. -var functions = [ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, - f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, - f27, f28, f29, f30, f31, f32, f33]; - -for (var i = 0; i < functions.length; ++i) { - var func = functions[i]; - print("Testing:"); - print(func); - for (var j = 0; j < 10; ++j) { - func(12); - } - %OptimizeFunctionOnNextCall(func); - func(12); - assertOptimized(func); -} - -function f1() { } - -function f2(x) { } - -function f3() { - let x; -} - -function f4() { - function foo() { - } -} - -function f5() { - let x = 1; -} - -function f6() { - const x = 1; -} - -function f7(x) { - return x; -} - -function f8() { - let x; - return x; -} - -function f9() { - function x() { - } - return x; -} - -function f10(x) { - x = 1; -} - -function f11() { - let x; - x = 1; -} - -function f12() { - function x() {}; - x = 1; -} - -function f13(x) { - (function() { x; }); -} - -function f14() { - let x; - (function() { x; }); -} - -function f15() { - function x() { - } - (function() { x; }); -} - -function f16() { - let x = 1; - (function() { x; }); -} - -function f17() { - const x = 1; - (function() { x; }); -} - -function f18(x) { - return x; - (function() { x; }); -} - -function f19() { - let x; - return x; - (function() { x; }); -} - -function f20() { - function x() { - } - return x; - (function() { x; }); -} - -function f21(x) { - x = 1; - (function() { x; }); -} - -function f22() { - let x; - x = 1; - (function() { x; }); -} - -function f23() { - function x() { } - x = 1; - (function() { x; }); -} - -function f24() { - let x = 1; - { - let x = 2; - { - let x = 3; - assertEquals(3, x); - } - assertEquals(2, x); - } - assertEquals(1, x); -} - -function f25() { - { - let x = 2; - L: { - let x = 3; - assertEquals(3, x); - break L; - assertTrue(false); - } - assertEquals(2, x); - } - assertTrue(true); -} - -function f26() { - { - let x = 1; - L: { - let x = 2; - { - let x = 3; - assertEquals(3, x); - break L; - assertTrue(false); - } - assertTrue(false); - } - assertEquals(1, x); - } -} - - -function f27() { - do { - let x = 4; - assertEquals(4,x); - { - let x = 5; - assertEquals(5, x); - continue; - assertTrue(false); - } - } while (false); -} - -function f28() { - label: for (var i = 0; i < 10; ++i) { - let x = 'middle' + i; - for (var j = 0; j < 10; ++j) { - let x = 'inner' + j; - continue label; - } - } -} - -function f29() { - // Verify that the context is correctly set in the stack frame after exiting - // from with. - - let x = 'outer'; - label: { - let x = 'inner'; - break label; - } - f(); // The context could be restored from the stack after the call. - assertEquals('outer', x); - - function f() { - assertEquals('outer', x); - }; -} - -function f30() { - let x = 'outer'; - for (var i = 0; i < 10; ++i) { - let x = 'inner'; - continue; - } - f(); - assertEquals('outer', x); - - function f() { - assertEquals('outer', x); - }; -} - -function f31() { - { - let x = 'outer'; - label: for (var i = 0; assertEquals('outer', x), i < 10; ++i) { - let x = 'middle' + i; - { - let x = 'inner' + j; - continue label; - } - } - assertEquals('outer', x); - } -} - -var c = true; - -function f32() { - { - let x = 'outer'; - L: { - { - let x = 'inner'; - if (c) { - break L; - } - } - foo(); - } - } - - function foo() { - return 'bar'; - } -} - -function f33() { - { - let x = 'outer'; - L: { - { - let x = 'inner'; - if (c) { - break L; - } - foo(); - } - } - } - - function foo() { - return 'bar'; - } -} - -function TestThrow() { - function f() { - let x = 'outer'; - { - let x = 'inner'; - throw x; - } - } - for (var i = 0; i < 5; i++) { - try { - f(); - } catch (e) { - assertEquals('inner', e); - } - } - %OptimizeFunctionOnNextCall(f); - try { - f(); - } catch (e) { - assertEquals('inner', e); - } - assertOptimized(f); -} - -TestThrow(); - -// Test that temporal dead zone semantics for function and block scoped -// let bindings are handled by the optimizing compiler. - -function TestFunctionLocal(s) { - 'use strict'; - var func = eval("(function baz(){" + s + "; })"); - print("Testing:"); - print(func); - for (var i = 0; i < 5; ++i) { - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } - } - %OptimizeFunctionOnNextCall(func); - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } -} - -function TestFunctionContext(s) { - 'use strict'; - var func = eval("(function baz(){ " + s + "; (function() { x; }); })"); - print("Testing:"); - print(func); - for (var i = 0; i < 5; ++i) { - print(i); - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } - } - print("optimize"); - %OptimizeFunctionOnNextCall(func); - try { - print("call"); - func(); - assertUnreachable(); - } catch (e) { - print("catch"); - assertInstanceof(e, ReferenceError); - } -} - -function TestBlockLocal(s) { - 'use strict'; - var func = eval("(function baz(){ { " + s + "; } })"); - print("Testing:"); - print(func); - for (var i = 0; i < 5; ++i) { - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } - } - %OptimizeFunctionOnNextCall(func); - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } -} - -function TestBlockContext(s) { - 'use strict'; - var func = eval("(function baz(){ { " + s + "; (function() { x; }); } })"); - print("Testing:"); - print(func); - for (var i = 0; i < 5; ++i) { - print(i); - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } - } - print("optimize"); - %OptimizeFunctionOnNextCall(func); - try { - print("call"); - func(); - assertUnreachable(); - } catch (e) { - print("catch"); - assertInstanceof(e, ReferenceError); - } -} - -function TestAll(s) { - TestFunctionLocal(s); - TestFunctionContext(s); - TestBlockLocal(s); - TestBlockContext(s); -} - -// Use before initialization in declaration statement. -TestAll('let x = x + 1'); -TestAll('let x = x += 1'); -TestAll('let x = x++'); -TestAll('let x = ++x'); -TestAll('const x = x + 1'); - -// Use before initialization in prior statement. -TestAll('x + 1; let x;'); -TestAll('x = 1; let x;'); -TestAll('x += 1; let x;'); -TestAll('++x; let x;'); -TestAll('x++; let x;'); -TestAll('let y = x; const x = 1;'); - - -function f(x) { - let y = x + 42; - return y; -} - -function g(x) { - { - let y = x + 42; - return y; - } -} - -for (var i=0; i<10; i++) { - f(i); - g(i); -} - -%OptimizeFunctionOnNextCall(f); -%OptimizeFunctionOnNextCall(g); - -f(12); -g(12); - -assertOptimized(f); -assertOptimized(g); diff --git a/implementation-contributed/v8/mjsunit/es6/block-let-crankshaft.js b/implementation-contributed/v8/mjsunit/es6/block-let-crankshaft.js deleted file mode 100644 index 97de765c8ab..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-let-crankshaft.js +++ /dev/null @@ -1,484 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -"use strict"; - -// Check that the following functions are optimizable. -var functions = [ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, - f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, - f27, f28, f29, f30, f31, f32, f33]; - -for (var i = 0; i < functions.length; ++i) { - var func = functions[i]; - print("Testing:"); - print(func); - for (var j = 0; j < 10; ++j) { - func(12); - } - %OptimizeFunctionOnNextCall(func); - func(12); - assertOptimized(func); -} - -function f1() { } - -function f2(x) { } - -function f3() { - let x; -} - -function f4() { - function foo() { - } -} - -function f5() { - let x = 1; -} - -function f6() { - const x = 1; -} - -function f7(x) { - return x; -} - -function f8() { - let x; - return x; -} - -function f9() { - function x() { - } - return x; -} - -function f10(x) { - x = 1; -} - -function f11() { - let x; - x = 1; -} - -function f12() { - function x() {}; - x = 1; -} - -function f13(x) { - (function() { x; }); -} - -function f14() { - let x; - (function() { x; }); -} - -function f15() { - function x() { - } - (function() { x; }); -} - -function f16() { - let x = 1; - (function() { x; }); -} - -function f17() { - const x = 1; - (function() { x; }); -} - -function f18(x) { - return x; - (function() { x; }); -} - -function f19() { - let x; - return x; - (function() { x; }); -} - -function f20() { - function x() { - } - return x; - (function() { x; }); -} - -function f21(x) { - x = 1; - (function() { x; }); -} - -function f22() { - let x; - x = 1; - (function() { x; }); -} - -function f23() { - function x() { } - x = 1; - (function() { x; }); -} - -function f24() { - let x = 1; - { - let x = 2; - { - let x = 3; - assertEquals(3, x); - } - assertEquals(2, x); - } - assertEquals(1, x); -} - -function f25() { - { - let x = 2; - L: { - let x = 3; - assertEquals(3, x); - break L; - assertTrue(false); - } - assertEquals(2, x); - } - assertTrue(true); -} - -function f26() { - { - let x = 1; - L: { - let x = 2; - { - let x = 3; - assertEquals(3, x); - break L; - assertTrue(false); - } - assertTrue(false); - } - assertEquals(1, x); - } -} - - -function f27() { - do { - let x = 4; - assertEquals(4,x); - { - let x = 5; - assertEquals(5, x); - continue; - assertTrue(false); - } - } while (false); -} - -function f28() { - label: for (var i = 0; i < 10; ++i) { - let x = 'middle' + i; - for (var j = 0; j < 10; ++j) { - let x = 'inner' + j; - continue label; - } - } -} - -function f29() { - // Verify that the context is correctly set in the stack frame after exiting - // from with. - - let x = 'outer'; - label: { - let x = 'inner'; - break label; - } - f(); // The context could be restored from the stack after the call. - assertEquals('outer', x); - - function f() { - assertEquals('outer', x); - }; -} - -function f30() { - let x = 'outer'; - for (var i = 0; i < 10; ++i) { - let x = 'inner'; - continue; - } - f(); - assertEquals('outer', x); - - function f() { - assertEquals('outer', x); - }; -} - -function f31() { - { - let x = 'outer'; - label: for (var i = 0; assertEquals('outer', x), i < 10; ++i) { - let x = 'middle' + i; - { - let x = 'inner' + j; - continue label; - } - } - assertEquals('outer', x); - } -} - -var c = true; - -function f32() { - { - let x = 'outer'; - L: { - { - let x = 'inner'; - if (c) { - break L; - } - } - foo(); - } - } - - function foo() { - return 'bar'; - } -} - -function f33() { - { - let x = 'outer'; - L: { - { - let x = 'inner'; - if (c) { - break L; - } - foo(); - } - } - } - - function foo() { - return 'bar'; - } -} - -function TestThrow() { - function f() { - let x = 'outer'; - { - let x = 'inner'; - throw x; - } - } - for (var i = 0; i < 5; i++) { - try { - f(); - } catch (e) { - assertEquals('inner', e); - } - } - %OptimizeFunctionOnNextCall(f); - try { - f(); - } catch (e) { - assertEquals('inner', e); - } - assertOptimized(f); -} - -TestThrow(); - -// Test that temporal dead zone semantics for function and block scoped -// let bindings are handled by the optimizing compiler. - -function TestFunctionLocal(s) { - 'use strict'; - var func = eval("(function baz(){" + s + "; })"); - print("Testing:"); - print(func); - for (var i = 0; i < 5; ++i) { - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } - } - %OptimizeFunctionOnNextCall(func); - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } -} - -function TestFunctionContext(s) { - 'use strict'; - var func = eval("(function baz(){ " + s + "; (function() { x; }); })"); - print("Testing:"); - print(func); - for (var i = 0; i < 5; ++i) { - print(i); - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } - } - print("optimize"); - %OptimizeFunctionOnNextCall(func); - try { - print("call"); - func(); - assertUnreachable(); - } catch (e) { - print("catch"); - assertInstanceof(e, ReferenceError); - } -} - -function TestBlockLocal(s) { - 'use strict'; - var func = eval("(function baz(){ { " + s + "; } })"); - print("Testing:"); - print(func); - for (var i = 0; i < 5; ++i) { - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } - } - %OptimizeFunctionOnNextCall(func); - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } -} - -function TestBlockContext(s) { - 'use strict'; - var func = eval("(function baz(){ { " + s + "; (function() { x; }); } })"); - print("Testing:"); - print(func); - for (var i = 0; i < 5; ++i) { - print(i); - try { - func(); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, ReferenceError); - } - } - print("optimize"); - %OptimizeFunctionOnNextCall(func); - try { - print("call"); - func(); - assertUnreachable(); - } catch (e) { - print("catch"); - assertInstanceof(e, ReferenceError); - } -} - -function TestAll(s) { - TestFunctionLocal(s); - TestFunctionContext(s); - TestBlockLocal(s); - TestBlockContext(s); -} - -// Use before initialization in declaration statement. -TestAll('let x = x + 1'); -TestAll('let x = x += 1'); -TestAll('let x = x++'); -TestAll('let x = ++x'); -TestAll('const x = x + 1'); - -// Use before initialization in prior statement. -TestAll('x + 1; let x;'); -TestAll('x = 1; let x;'); -TestAll('x += 1; let x;'); -TestAll('++x; let x;'); -TestAll('x++; let x;'); -TestAll('let y = x; const x = 1;'); - - -function f(x) { - let y = x + 42; - return y; -} - -function g(x) { - { - let y = x + 42; - return y; - } -} - -for (var i=0; i<10; i++) { - f(i); - g(i); -} - -%OptimizeFunctionOnNextCall(f); -%OptimizeFunctionOnNextCall(g); - -f(12); -g(12); - -assertOptimized(f); -assertOptimized(g); diff --git a/implementation-contributed/v8/mjsunit/es6/block-let-declaration-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-let-declaration-sloppy.js deleted file mode 100644 index ea0e39bd07f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-let-declaration-sloppy.js +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test let declarations in various settings. - -// Global -let x; -let y = 2; -const z = 4; -class c { static foo() { return 1; } } - -// Block local -{ - let y; - let x = 3; - const z = 5; - class c { static foo() { return 2; } } -} - -assertEquals(undefined, x); -assertEquals(2,y); -assertEquals(4,z); -assertEquals(1, c.foo()); - -if (true) { - let y; - assertEquals(undefined, y); -} - -// Invalid declarations are early errors in harmony mode and thus should trigger -// an exception in eval code during parsing, before even compiling or executing -// the code. Thus the generated function is not called here. -function TestLocalThrows(str, expect) { - assertThrows("(function(arg){ 'use strict'; " + str + "})", expect); -} - -function TestLocalDoesNotThrow(str) { - assertDoesNotThrow("(function(arg){ 'use strict'; " + str + "})()"); -} - -// Test let declarations in statement positions. -TestLocalThrows("if (true) let x;", SyntaxError); -TestLocalThrows("if (true) {} else let x;", SyntaxError); -TestLocalThrows("do let x; while (false)", SyntaxError); -TestLocalThrows("while (false) let x;", SyntaxError); -TestLocalThrows("label: let x;", SyntaxError); -TestLocalThrows("for (;false;) let x;", SyntaxError); -TestLocalDoesNotThrow("switch (true) { case true: let x; }"); -TestLocalDoesNotThrow("switch (true) { default: let x; }"); - -// Test const declarations with initialisers in statement positions. -TestLocalThrows("if (true) const x = 1;", SyntaxError); -TestLocalThrows("if (true) {} else const x = 1;", SyntaxError); -TestLocalThrows("do const x = 1; while (false)", SyntaxError); -TestLocalThrows("while (false) const x = 1;", SyntaxError); -TestLocalThrows("label: const x = 1;", SyntaxError); -TestLocalThrows("for (;false;) const x = 1;", SyntaxError); -TestLocalDoesNotThrow("switch (true) { case true: const x = 1; }"); -TestLocalDoesNotThrow("switch (true) { default: const x = 1; }"); - -// Test const declarations without initialisers. -TestLocalThrows("const x;", SyntaxError); -TestLocalThrows("const x = 1, y;", SyntaxError); -TestLocalThrows("const x, y = 1;", SyntaxError); - -// Test const declarations without initialisers in statement positions. -TestLocalThrows("if (true) const x;", SyntaxError); -TestLocalThrows("if (true) {} else const x;", SyntaxError); -TestLocalThrows("do const x; while (false)", SyntaxError); -TestLocalThrows("while (false) const x;", SyntaxError); -TestLocalThrows("label: const x;", SyntaxError); -TestLocalThrows("for (;false;) const x;", SyntaxError); -TestLocalThrows("switch (true) { case true: const x; }", SyntaxError); -TestLocalThrows("switch (true) { default: const x; }", SyntaxError); - -// Test var declarations in statement positions. -TestLocalDoesNotThrow("if (true) var x;"); -TestLocalDoesNotThrow("if (true) {} else var x;"); -TestLocalDoesNotThrow("do var x; while (false)"); -TestLocalDoesNotThrow("while (false) var x;"); -TestLocalDoesNotThrow("label: var x;"); -TestLocalDoesNotThrow("for (;false;) var x;"); -TestLocalDoesNotThrow("switch (true) { case true: var x; }"); -TestLocalDoesNotThrow("switch (true) { default: var x; }"); - -// Test class declarations with initialisers in statement positions. -TestLocalThrows("if (true) class x { };", SyntaxError); -TestLocalThrows("if (true) {} else class x { };", SyntaxError); -TestLocalThrows("do class x { }; while (false)", SyntaxError); -TestLocalThrows("while (false) class x { };", SyntaxError); -TestLocalThrows("label: class x { };", SyntaxError); -TestLocalThrows("for (;false;) class x { };", SyntaxError); -TestLocalDoesNotThrow("switch (true) { case true: class x { }; }"); -TestLocalDoesNotThrow("switch (true) { default: class x { }; }"); - -// Test that redeclarations of functions are only allowed in outermost scope. -TestLocalThrows("{ let f; var f; }"); -TestLocalThrows("{ var f; let f; }"); -TestLocalThrows("{ function f() {} let f; }"); -TestLocalThrows("{ let f; function f() {} }"); -TestLocalThrows("{ function f() {} var f; }"); -TestLocalThrows("{ var f; function f() {} }"); -TestLocalThrows("{ function f() {} class f {} }"); -TestLocalThrows("{ class f {}; function f() {} }"); -TestLocalThrows("{ function f() {} function f() {} }"); -TestLocalThrows("function f() {} let f;"); -TestLocalThrows("let f; function f() {}"); -TestLocalThrows("function f() {} class f {}"); -TestLocalThrows("class f {}; function f() {}"); -TestLocalDoesNotThrow("function arg() {}"); -TestLocalDoesNotThrow("function f() {} var f;"); -TestLocalDoesNotThrow("var f; function f() {}"); -TestLocalDoesNotThrow("function f() {} function f() {}"); - -function g(f) { - function f() { return 1 } - return f() -} -assertEquals(1, g(function() { return 2 })) - - -// Test function declarations in source element and -// sloppy statement positions. -function f() { - // Sloppy source element positions. - function g0() { - "use strict"; - // Strict source element positions. - function h() { } - { - function h1() { } - } - } - { - function g1() { } - } -} -f(); - -// Test function declarations in statement position in strict mode. -TestLocalThrows("function f() { if (true) function g() {} }", SyntaxError); -TestLocalThrows("function f() { if (true) {} else function g() {} }", SyntaxError); -TestLocalThrows("function f() { do function g() {} while (false) }", SyntaxError); -TestLocalThrows("function f() { while (false) function g() {} }", SyntaxError); -TestLocalThrows("function f() { label: function g() {} }", SyntaxError); -TestLocalThrows("function f() { for (;false;) function g() {} }", SyntaxError); -TestLocalDoesNotThrow("function f() { switch (true) { case true: function g() {} } }"); -TestLocalDoesNotThrow("function f() { switch (true) { default: function g() {} } }"); diff --git a/implementation-contributed/v8/mjsunit/es6/block-let-declaration.js b/implementation-contributed/v8/mjsunit/es6/block-let-declaration.js deleted file mode 100644 index a138144d185..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-let-declaration.js +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test let declarations in various settings. - -"use strict"; - -// Global -let x; -let y = 2; -const z = 4; -class c { static foo() { return 1; } } - -// Block local -{ - let y; - let x = 3; - const z = 5; - class c { static foo() { return 2; } } -} - -assertEquals(undefined, x); -assertEquals(2,y); -assertEquals(4,z); -assertEquals(1, c.foo()); - -if (true) { - let y; - assertEquals(undefined, y); -} - -// Invalid declarations are early errors in harmony mode and thus should trigger -// an exception in eval code during parsing, before even compiling or executing -// the code. Thus the generated function is not called here. -function TestLocalThrows(str, expect) { - assertThrows("(function(arg){ 'use strict'; " + str + "})", expect); -} - -function TestLocalDoesNotThrow(str) { - assertDoesNotThrow("(function(arg){ 'use strict'; " + str + "})()"); -} - -// Test let declarations in statement positions. -TestLocalThrows("if (true) let x;", SyntaxError); -TestLocalThrows("if (true) {} else let x;", SyntaxError); -TestLocalThrows("do let x; while (false)", SyntaxError); -TestLocalThrows("while (false) let x;", SyntaxError); -TestLocalThrows("label: let x;", SyntaxError); -TestLocalThrows("for (;false;) let x;", SyntaxError); -TestLocalDoesNotThrow("switch (true) { case true: let x; }"); -TestLocalDoesNotThrow("switch (true) { default: let x; }"); - -// Test const declarations with initialisers in statement positions. -TestLocalThrows("if (true) const x = 1;", SyntaxError); -TestLocalThrows("if (true) {} else const x = 1;", SyntaxError); -TestLocalThrows("do const x = 1; while (false)", SyntaxError); -TestLocalThrows("while (false) const x = 1;", SyntaxError); -TestLocalThrows("label: const x = 1;", SyntaxError); -TestLocalThrows("for (;false;) const x = 1;", SyntaxError); -TestLocalDoesNotThrow("switch (true) { case true: const x = 1; }"); -TestLocalDoesNotThrow("switch (true) { default: const x = 1; }"); - -// Test const declarations without initialisers. -TestLocalThrows("const x;", SyntaxError); -TestLocalThrows("const x = 1, y;", SyntaxError); -TestLocalThrows("const x, y = 1;", SyntaxError); - -// Test const declarations without initialisers in statement positions. -TestLocalThrows("if (true) const x;", SyntaxError); -TestLocalThrows("if (true) {} else const x;", SyntaxError); -TestLocalThrows("do const x; while (false)", SyntaxError); -TestLocalThrows("while (false) const x;", SyntaxError); -TestLocalThrows("label: const x;", SyntaxError); -TestLocalThrows("for (;false;) const x;", SyntaxError); -TestLocalThrows("switch (true) { case true: const x; }", SyntaxError); -TestLocalThrows("switch (true) { default: const x; }", SyntaxError); - -// Test var declarations in statement positions. -TestLocalDoesNotThrow("if (true) var x;"); -TestLocalDoesNotThrow("if (true) {} else var x;"); -TestLocalDoesNotThrow("do var x; while (false)"); -TestLocalDoesNotThrow("while (false) var x;"); -TestLocalDoesNotThrow("label: var x;"); -TestLocalDoesNotThrow("for (;false;) var x;"); -TestLocalDoesNotThrow("switch (true) { case true: var x; }"); -TestLocalDoesNotThrow("switch (true) { default: var x; }"); - -// Test class declarations with initialisers in statement positions. -TestLocalThrows("if (true) class x { };", SyntaxError); -TestLocalThrows("if (true) {} else class x { };", SyntaxError); -TestLocalThrows("do class x { }; while (false)", SyntaxError); -TestLocalThrows("while (false) class x { };", SyntaxError); -TestLocalThrows("label: class x { };", SyntaxError); -TestLocalThrows("for (;false;) class x { };", SyntaxError); -TestLocalDoesNotThrow("switch (true) { case true: class x { }; }"); -TestLocalDoesNotThrow("switch (true) { default: class x { }; }"); - -// Test that redeclarations of functions are only allowed in outermost scope. -TestLocalThrows("{ let f; var f; }"); -TestLocalThrows("{ var f; let f; }"); -TestLocalThrows("{ function f() {} let f; }"); -TestLocalThrows("{ let f; function f() {} }"); -TestLocalThrows("{ function f() {} var f; }"); -TestLocalThrows("{ var f; function f() {} }"); -TestLocalThrows("{ function f() {} class f {} }"); -TestLocalThrows("{ class f {}; function f() {} }"); -TestLocalThrows("{ function f() {} function f() {} }"); -TestLocalThrows("function f() {} let f;"); -TestLocalThrows("let f; function f() {}"); -TestLocalThrows("function f() {} class f {}"); -TestLocalThrows("class f {}; function f() {}"); -TestLocalDoesNotThrow("function arg() {}"); -TestLocalDoesNotThrow("function f() {} var f;"); -TestLocalDoesNotThrow("var f; function f() {}"); -TestLocalDoesNotThrow("function f() {} function f() {}"); - -function g(f) { - function f() { return 1 } - return f() -} -assertEquals(1, g(function() { return 2 })) - - -// Test function declarations in source element and -// sloppy statement positions. -function f() { - // Sloppy source element positions. - function g0() { - "use strict"; - // Strict source element positions. - function h() { } - { - function h1() { } - } - } - { - function g1() { } - } -} -f(); - -// Test function declarations in statement position in strict mode. -TestLocalThrows("function f() { if (true) function g() {} }", SyntaxError); -TestLocalThrows("function f() { if (true) {} else function g() {} }", SyntaxError); -TestLocalThrows("function f() { do function g() {} while (false) }", SyntaxError); -TestLocalThrows("function f() { while (false) function g() {} }", SyntaxError); -TestLocalThrows("function f() { label: function g() {} }", SyntaxError); -TestLocalThrows("function f() { for (;false;) function g() {} }", SyntaxError); -TestLocalDoesNotThrow("function f() { switch (true) { case true: function g() {} } }"); -TestLocalDoesNotThrow("function f() { switch (true) { default: function g() {} } }"); diff --git a/implementation-contributed/v8/mjsunit/es6/block-let-semantics-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-let-semantics-sloppy.js deleted file mode 100644 index 4102ec8f5f1..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-let-semantics-sloppy.js +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test temporal dead zone semantics of let bound variables in -// function and block scopes. - -function TestFunctionLocal(s) { - try { - eval("(function(){" + s + "; })")(); - } catch (e) { - assertInstanceof(e, ReferenceError); - return; - } - assertUnreachable(); -} - -function TestBlockLocal(s,e) { - try { - eval("(function(){ {" + s + ";} })")(); - } catch (e) { - assertInstanceof(e, ReferenceError); - return; - } - assertUnreachable(); -} - - -function TestAll(s) { - TestBlockLocal(s); - TestFunctionLocal(s); -} - -// Use before initialization in declaration statement. -TestAll('let x = x + 1'); -TestAll('let x = x += 1'); -TestAll('let x = x++'); -TestAll('let x = ++x'); -TestAll('const x = x + 1'); - -// Use before initialization in prior statement. -TestAll('x + 1; let x;'); -TestAll('x = 1; let x;'); -TestAll('x += 1; let x;'); -TestAll('++x; let x;'); -TestAll('x++; let x;'); -TestAll('let y = x; const x = 1;'); -TestAll('let y = x; class x {}'); - -TestAll('f(); let x; function f() { return x + 1; }'); -TestAll('f(); let x; function f() { x = 1; }'); -TestAll('f(); let x; function f() { x += 1; }'); -TestAll('f(); let x; function f() { ++x; }'); -TestAll('f(); let x; function f() { x++; }'); -TestAll('f(); const x = 1; function f() { return x; }'); -TestAll('f(); class x { }; function f() { return x; }'); - -TestAll('f()(); let x; function f() { return function() { return x + 1; } }'); -TestAll('f()(); let x; function f() { return function() { x = 1; } }'); -TestAll('f()(); let x; function f() { return function() { x += 1; } }'); -TestAll('f()(); let x; function f() { return function() { ++x; } }'); -TestAll('f()(); let x; function f() { return function() { x++; } }'); -TestAll('f()(); const x = 1; function f() { return function() { return x; } }'); -TestAll('f()(); class x { }; function f() { return function() { return x; } }'); - -for (var kw of ['let x = 2', 'const x = 2', 'class x { }']) { - // Use before initialization with a dynamic lookup. - TestAll(`eval("x"); ${kw};`); - TestAll(`eval("x + 1;"); ${kw};`); - TestAll(`eval("x = 1;"); ${kw};`); - TestAll(`eval("x += 1;"); ${kw};`); - TestAll(`eval("++x;"); ${kw};`); - TestAll(`eval("x++;"); ${kw};`); - - // Use before initialization with check for eval-shadowed bindings. - TestAll(`function f() { eval("var y = 2;"); x + 1; }; f(); ${kw};`); - TestAll(`function f() { eval("var y = 2;"); x = 1; }; f(); ${kw};`); - TestAll(`function f() { eval("var y = 2;"); x += 1; }; f(); ${kw};`); - TestAll(`function f() { eval("var y = 2;"); ++x; }; f(); ${kw};`); - TestAll(`function f() { eval("var y = 2;"); x++; }; f(); ${kw};`); -} - -// Test that variables introduced by function declarations are created and -// initialized upon entering a function / block scope. -function f() { - { - assertEquals(2, g1()); - assertEquals(2, eval("g1()")); - - // block scoped function declaration - function g1() { - return 2; - } - } - - assertEquals(3, g2()); - assertEquals(3, eval("g2()")); - // function scoped function declaration - function g2() { - return 3; - } -} -f(); - -// Test that a function declaration introduces a block scoped variable -// and no function hoisting if there is a conflict. -TestFunctionLocal('{ function k() { return 0; } }; k(); let k;'); - -// Test that a function declaration sees the scope it resides in. -function f2() { - let m, n, o, p; - { - m = g; - function g() { - return a; - } - let a = 1; - } - assertEquals(1, m()); - - try { - throw 2; - } catch(b) { - n = h; - function h() { - return b + c; - } - let c = 3; - } - assertEquals(5, n()); - - { - o = i; - function i() { - return d; - } - let d = 4; - } - assertEquals(4, o()); - - try { - throw 5; - } catch(e) { - p = j; - function j() { - return e + f; - } - let f = 6; - } - assertEquals(11, p()); -} -f2(); - -// Test that resolution of let bound variables works with scopes that call eval. -function outer() { - function middle() { - function inner() { - return x; - } - eval("1 + 1"); - return x + inner(); - } - - let x = 1; - return middle(); -} - -assertEquals(2, outer()); diff --git a/implementation-contributed/v8/mjsunit/es6/block-let-semantics.js b/implementation-contributed/v8/mjsunit/es6/block-let-semantics.js deleted file mode 100644 index 59eec1ceea3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-let-semantics.js +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict"; - -// Test temporal dead zone semantics of let bound variables in -// function and block scopes. - -function TestFunctionLocal(s) { - try { - eval("(function(){" + s + "; })")(); - } catch (e) { - assertInstanceof(e, ReferenceError); - return; - } - assertUnreachable(); -} - -function TestBlockLocal(s,e) { - try { - eval("(function(){ {" + s + ";} })")(); - } catch (e) { - assertInstanceof(e, ReferenceError); - return; - } - assertUnreachable(); -} - - -function TestAll(s) { - TestBlockLocal(s); - TestFunctionLocal(s); -} - -// Use before initialization in declaration statement. -TestAll('let x = x + 1'); -TestAll('let x = x += 1'); -TestAll('let x = x++'); -TestAll('let x = ++x'); -TestAll('const x = x + 1'); - -// Use before initialization in prior statement. -TestAll('x + 1; let x;'); -TestAll('x = 1; let x;'); -TestAll('x += 1; let x;'); -TestAll('++x; let x;'); -TestAll('x++; let x;'); -TestAll('let y = x; const x = 1;'); -TestAll('let y = x; class x {}'); - -TestAll('f(); let x; function f() { return x + 1; }'); -TestAll('f(); let x; function f() { x = 1; }'); -TestAll('f(); let x; function f() { x += 1; }'); -TestAll('f(); let x; function f() { ++x; }'); -TestAll('f(); let x; function f() { x++; }'); -TestAll('f(); const x = 1; function f() { return x; }'); -TestAll('f(); class x { }; function f() { return x; }'); - -TestAll('f()(); let x; function f() { return function() { return x + 1; } }'); -TestAll('f()(); let x; function f() { return function() { x = 1; } }'); -TestAll('f()(); let x; function f() { return function() { x += 1; } }'); -TestAll('f()(); let x; function f() { return function() { ++x; } }'); -TestAll('f()(); let x; function f() { return function() { x++; } }'); -TestAll('f()(); const x = 1; function f() { return function() { return x; } }'); -TestAll('f()(); class x { }; function f() { return function() { return x; } }'); - -for (var kw of ['let x = 2', 'const x = 2', 'class x { }']) { - // Use before initialization with a dynamic lookup. - TestAll(`eval("x"); ${kw};`); - TestAll(`eval("x + 1;"); ${kw};`); - TestAll(`eval("x = 1;"); ${kw};`); - TestAll(`eval("x += 1;"); ${kw};`); - TestAll(`eval("++x;"); ${kw};`); - TestAll(`eval("x++;"); ${kw};`); - - // Use before initialization with check for eval-shadowed bindings. - TestAll(`function f() { eval("var y = 2;"); x + 1; }; f(); ${kw};`); - TestAll(`function f() { eval("var y = 2;"); x = 1; }; f(); ${kw};`); - TestAll(`function f() { eval("var y = 2;"); x += 1; }; f(); ${kw};`); - TestAll(`function f() { eval("var y = 2;"); ++x; }; f(); ${kw};`); - TestAll(`function f() { eval("var y = 2;"); x++; }; f(); ${kw};`); -} - -// Test that variables introduced by function declarations are created and -// initialized upon entering a function / block scope. -function f() { - { - assertEquals(2, g1()); - assertEquals(2, eval("g1()")); - - // block scoped function declaration - function g1() { - return 2; - } - } - - assertEquals(3, g2()); - assertEquals(3, eval("g2()")); - // function scoped function declaration - function g2() { - return 3; - } -} -f(); - -// Test that a function declaration introduces a block scoped variable. -TestAll('{ function k() { return 0; } }; k(); '); - -// Test that a function declaration sees the scope it resides in. -function f2() { - let m, n, o, p; - { - m = g; - function g() { - return a; - } - let a = 1; - } - assertEquals(1, m()); - - try { - throw 2; - } catch(b) { - n = h; - function h() { - return b + c; - } - let c = 3; - } - assertEquals(5, n()); - - { - o = i; - function i() { - return d; - } - let d = 4; - } - assertEquals(4, o()); - - try { - throw 5; - } catch(e) { - p = j; - function j() { - return e + f; - } - let f = 6; - } - assertEquals(11, p()); -} -f2(); - -// Test that resolution of let bound variables works with scopes that call eval. -function outer() { - function middle() { - function inner() { - return x; - } - eval("1 + 1"); - return x + inner(); - } - - let x = 1; - return middle(); -} - -assertEquals(2, outer()); diff --git a/implementation-contributed/v8/mjsunit/es6/block-scope-class.js b/implementation-contributed/v8/mjsunit/es6/block-scope-class.js deleted file mode 100644 index 7bbd49d3387..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-scope-class.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test for conflicting variable bindings. - -function AssertEqualsStrictAndSloppy(value, code) { - assertEquals(value, eval("(function() {" + code + "})()")); - assertEquals(value, eval("(function() { 'use strict'; " + code + "})()")); - assertEquals(value, eval("(function() { var x = 0; {" + code + "} })()")); - assertEquals(value, eval("(function() { 'use strict'; var x = 0; {" - + code + "} })()")); -} - -function AssertThrowsStrictAndSloppy(code, error) { - assertThrows("(function() {" + code + "})()", error); - assertThrows("(function() { 'use strict'; " + code + "})()", error); - assertThrows("(function() { var x = 0; { " + code + "} })()", error); - assertThrows("(function() { 'use strict'; var x = 0; {" + code + "} })()", - error); -} - -(function TestClassTDZ() { - AssertEqualsStrictAndSloppy( - "x", "function f() { return x; }; class x { }; return f().name;"); - AssertEqualsStrictAndSloppy - ("x", "class x { }; function f() { return x; }; return f().name;"); - AssertEqualsStrictAndSloppy( - "x", "class x { }; var result = f().name; " + - "function f() { return x; }; return result;"); - AssertThrowsStrictAndSloppy( - "function f() { return x; }; f(); class x { };", ReferenceError); - AssertThrowsStrictAndSloppy( - "f(); function f() { return x; }; class x { };", ReferenceError); - AssertThrowsStrictAndSloppy( - "f(); class x { }; function f() { return x; };", ReferenceError); - AssertThrowsStrictAndSloppy( - "var x = 1; { f(); class x { }; function f() { return x; }; }", - ReferenceError); - AssertThrowsStrictAndSloppy("x = 3; class x { };", ReferenceError) -})(); - -(function TestClassNameConflict() { - AssertThrowsStrictAndSloppy("class x { }; var x;", SyntaxError); - AssertThrowsStrictAndSloppy("var x; class x { };", SyntaxError); - AssertThrowsStrictAndSloppy("class x { }; function x() { };", SyntaxError); - AssertThrowsStrictAndSloppy("function x() { }; class x { };", SyntaxError); - AssertThrowsStrictAndSloppy("class x { }; for (var x = 0; false;) { };", - SyntaxError); - AssertThrowsStrictAndSloppy("for (var x = 0; false;) { }; class x { };", - SyntaxError); -})(); - -(function TestClassMutableBinding() { - AssertEqualsStrictAndSloppy( - "x3", "class x { }; var y = x.name; x = 3; return y + x;") -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/block-scoping-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-scoping-sloppy.js deleted file mode 100644 index d86eb0794fa..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-scoping-sloppy.js +++ /dev/null @@ -1,309 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt -// Test functionality of block scopes. - -// Hoisting of var declarations. -function f1() { - { - var x = 1; - var y; - } - assertEquals(1, x) - assertEquals(undefined, y) -} -for (var j = 0; j < 5; ++j) f1(); -%OptimizeFunctionOnNextCall(f1); -f1(); -assertOptimized(f1); - -// Dynamic lookup in and through block contexts. -function f2(one) { - var x = one + 1; - let y = one + 2; - const u = one + 4; - class a { static foo() { return one + 6; } } - { - let z = one + 3; - const v = one + 5; - class b { static foo() { return one + 7; } } - assertEquals(1, eval('one')); - assertEquals(2, eval('x')); - assertEquals(3, eval('y')); - assertEquals(4, eval('z')); - assertEquals(5, eval('u')); - assertEquals(6, eval('v')); - assertEquals(7, eval('a.foo()')); - assertEquals(8, eval('b.foo()')); - } -} - -f2(1); - -// Lookup in and through block contexts. -function f3(one) { - var x = one + 1; - let y = one + 2; - const u = one + 4; - class a { static foo() { return one + 6; } } - { - let z = one + 3; - const v = one + 5; - class b { static foo() { return one + 7; } } - assertEquals(1, one); - assertEquals(2, x); - assertEquals(3, y); - assertEquals(4, z); - assertEquals(5, u); - assertEquals(6, v); - assertEquals(7, a.foo()); - assertEquals(8, b.foo()); - } -} -for (var j = 0; j < 5; ++j) f3(1); -%OptimizeFunctionOnNextCall(f3); -f3(1); - - - -// Dynamic lookup from closure. -function f4(one) { - var x = one + 1; - let y = one + 2; - const u = one + 4; - class a { static foo() { return one + 6; } } - { - let z = one + 3; - const v = one + 5; - class b { static foo() { return one + 7; } } - function f() { - assertEquals(1, eval('one')); - assertEquals(2, eval('x')); - assertEquals(3, eval('y')); - assertEquals(4, eval('z')); - assertEquals(5, eval('u')); - assertEquals(6, eval('v')); - assertEquals(7, eval('a.foo()')); - assertEquals(8, eval('b.foo()')); - } - f(); - } -} -f4(1); - - -// Lookup from closure. -function f5(one) { - var x = one + 1; - let y = one + 2; - const u = one + 4; - class a { static foo() { return one + 6; } } - { - let z = one + 3; - const v = one + 5; - class b { static foo() { return one + 7; } } - function f() { - assertEquals(1, one); - assertEquals(2, x); - assertEquals(3, y); - assertEquals(4, z); - assertEquals(5, u); - assertEquals(6, v); - assertEquals(7, a.foo()); - assertEquals(8, b.foo()); - } - f(); - } -} -f5(1); - - -// Return from block. -function f6() { - let x = 1; - const u = 3; - { - let y = 2; - const v = 4; - return x + y; - } -} -assertEquals(3, f6(6)); - - -// Variable shadowing and lookup. -function f7(a) { - let b = 1; - var c = 1; - var d = 1; - const e = 1; - class f { static foo() { return 1; } } - { // let variables shadowing argument, let, const, class and var variables - let a = 2; - let b = 2; - let c = 2; - let e = 2; - let f = 2; - assertEquals(2,a); - assertEquals(2,b); - assertEquals(2,c); - assertEquals(2,e); - assertEquals(2,f); - } - { // const variables shadowing argument, let, const and var variables - const a = 2; - const b = 2; - const c = 2; - const e = 2; - const f = 2; - assertEquals(2,a); - assertEquals(2,b); - assertEquals(2,c); - assertEquals(2,e); - assertEquals(2,f); - } - { // class variables shadowing argument, let, const and var variables - class a { static foo() { return 2; } } - class b { static foo() { return 2; } } - class c { static foo() { return 2; } } - class d { static foo() { return 2; } } - class e { static foo() { return 2; } } - class f { static foo() { return 2; } } - assertEquals(2,a.foo()); - assertEquals(2,b.foo()); - assertEquals(2,c.foo()); - assertEquals(2,e.foo()); - assertEquals(2,f.foo()); - } - try { - throw 'stuff1'; - } catch (a) { - assertEquals('stuff1',a); - // catch variable shadowing argument - a = 2; - assertEquals(2,a); - { - // let variable shadowing catch variable - let a = 3; - assertEquals(3,a); - try { - throw 'stuff2'; - } catch (a) { - assertEquals('stuff2',a); - // catch variable shadowing let variable - a = 4; - assertEquals(4,a); - } - assertEquals(3,a); - } - assertEquals(2,a); - } - try { - throw 'stuff3'; - } catch (c) { - // catch variable shadowing var variable - assertEquals('stuff3',c); - { - // const variable shadowing catch variable - const c = 3; - assertEquals(3,c); - } - assertEquals('stuff3',c); - try { - throw 'stuff4'; - } catch(c) { - assertEquals('stuff4',c); - // catch variable shadowing catch variable - c = 3; - assertEquals(3,c); - } - (function(c) { - // argument shadowing catch variable - c = 3; - assertEquals(3,c); - })(); - assertEquals('stuff3', c); - (function() { - // var variable shadowing catch variable - var c = 3; - })(); - assertEquals('stuff3', c); - c = 2; - } - assertEquals(1,c); - (function(a,b,c,e,f) { - // arguments shadowing argument, let, const, class and var variable - a = 2; - b = 2; - c = 2; - e = 2; - f = 2; - assertEquals(2,a); - assertEquals(2,b); - assertEquals(2,c); - assertEquals(2,e); - assertEquals(2,f); - // var variable shadowing var variable - var d = 2; - })(1,1); - assertEquals(1,a); - assertEquals(1,b); - assertEquals(1,c); - assertEquals(1,d); - assertEquals(1,e); - assertEquals(1,f.foo()); -} -f7(1); - - -// Ensure let and const variables are block local -// and var variables function local. -function f8() { - var let_accessors = []; - var var_accessors = []; - var const_accessors = []; - var class_accessors = []; - for (var i = 0; i < 10; i++) { - let x = i; - var y = i; - const z = i; - class a { static foo() { return x; } } - let_accessors[i] = function() { return x; } - var_accessors[i] = function() { return y; } - const_accessors[i] = function() { return z; } - class_accessors[i] = function() { return a; } - } - for (var j = 0; j < 10; j++) { - y = j + 10; - assertEquals(j, let_accessors[j]()); - assertEquals(y, var_accessors[j]()); - assertEquals(j, const_accessors[j]()); - assertEquals(j, class_accessors[j]().foo()); - } -} -f8(); diff --git a/implementation-contributed/v8/mjsunit/es6/block-scoping-top-level-sloppy.js b/implementation-contributed/v8/mjsunit/es6/block-scoping-top-level-sloppy.js deleted file mode 100644 index 22d12ea231f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-scoping-top-level-sloppy.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let xxx = 1; -let f = undefined; -{ - let inner_x = xxx; - f = function() { return inner_x; }; -} - -assertSame(1, f()); - -xxx = 42; -{ - f = function() { return inner_x1; }; - let inner_x1 = xxx; -} - -assertSame(42, f()); - -xxx = 31; -{ - let inner_x1 = xxx; - try { - throw new Error(); - } catch (e) { - f = function() { return inner_x1; }; - } -} -assertSame(31, f()); diff --git a/implementation-contributed/v8/mjsunit/es6/block-scoping-top-level.js b/implementation-contributed/v8/mjsunit/es6/block-scoping-top-level.js deleted file mode 100644 index 72434ba19e3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-scoping-top-level.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -let xxx = 1; -let f = undefined; -{ - let inner_x = xxx; - f = function() { return inner_x; }; -} - -assertSame(1, f()); - -xxx = 42; -{ - f = function() { return inner_x1; }; - let inner_x1 = xxx; -} - -assertSame(42, f()); - -xxx = 31; -{ - let inner_x1 = xxx; - try { - throw new Error(); - } catch (e) { - f = function() { return inner_x1; }; - } -} -assertSame(31, f()); diff --git a/implementation-contributed/v8/mjsunit/es6/block-scoping.js b/implementation-contributed/v8/mjsunit/es6/block-scoping.js deleted file mode 100644 index 9fa22cddc33..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-scoping.js +++ /dev/null @@ -1,311 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt -// Test functionality of block scopes. - -"use strict"; - -// Hoisting of var declarations. -function f1() { - { - var x = 1; - var y; - } - assertEquals(1, x) - assertEquals(undefined, y) -} -for (var j = 0; j < 5; ++j) f1(); -%OptimizeFunctionOnNextCall(f1); -f1(); -assertOptimized(f1); - -// Dynamic lookup in and through block contexts. -function f2(one) { - var x = one + 1; - let y = one + 2; - const u = one + 4; - class a { static foo() { return one + 6; } } - { - let z = one + 3; - const v = one + 5; - class b { static foo() { return one + 7; } } - assertEquals(1, eval('one')); - assertEquals(2, eval('x')); - assertEquals(3, eval('y')); - assertEquals(4, eval('z')); - assertEquals(5, eval('u')); - assertEquals(6, eval('v')); - assertEquals(7, eval('a.foo()')); - assertEquals(8, eval('b.foo()')); - } -} - -f2(1); - -// Lookup in and through block contexts. -function f3(one) { - var x = one + 1; - let y = one + 2; - const u = one + 4; - class a { static foo() { return one + 6; } } - { - let z = one + 3; - const v = one + 5; - class b { static foo() { return one + 7; } } - assertEquals(1, one); - assertEquals(2, x); - assertEquals(3, y); - assertEquals(4, z); - assertEquals(5, u); - assertEquals(6, v); - assertEquals(7, a.foo()); - assertEquals(8, b.foo()); - } -} -for (var j = 0; j < 5; ++j) f3(1); -%OptimizeFunctionOnNextCall(f3); -f3(1); - - - -// Dynamic lookup from closure. -function f4(one) { - var x = one + 1; - let y = one + 2; - const u = one + 4; - class a { static foo() { return one + 6; } } - { - let z = one + 3; - const v = one + 5; - class b { static foo() { return one + 7; } } - function f() { - assertEquals(1, eval('one')); - assertEquals(2, eval('x')); - assertEquals(3, eval('y')); - assertEquals(4, eval('z')); - assertEquals(5, eval('u')); - assertEquals(6, eval('v')); - assertEquals(7, eval('a.foo()')); - assertEquals(8, eval('b.foo()')); - } - f(); - } -} -f4(1); - - -// Lookup from closure. -function f5(one) { - var x = one + 1; - let y = one + 2; - const u = one + 4; - class a { static foo() { return one + 6; } } - { - let z = one + 3; - const v = one + 5; - class b { static foo() { return one + 7; } } - function f() { - assertEquals(1, one); - assertEquals(2, x); - assertEquals(3, y); - assertEquals(4, z); - assertEquals(5, u); - assertEquals(6, v); - assertEquals(7, a.foo()); - assertEquals(8, b.foo()); - } - f(); - } -} -f5(1); - - -// Return from block. -function f6() { - let x = 1; - const u = 3; - { - let y = 2; - const v = 4; - return x + y; - } -} -assertEquals(3, f6(6)); - - -// Variable shadowing and lookup. -function f7(a) { - let b = 1; - var c = 1; - var d = 1; - const e = 1; - class f { static foo() { return 1; } } - { // let variables shadowing argument, let, const, class and var variables - let a = 2; - let b = 2; - let c = 2; - let e = 2; - let f = 2; - assertEquals(2,a); - assertEquals(2,b); - assertEquals(2,c); - assertEquals(2,e); - assertEquals(2,f); - } - { // const variables shadowing argument, let, const and var variables - const a = 2; - const b = 2; - const c = 2; - const e = 2; - const f = 2; - assertEquals(2,a); - assertEquals(2,b); - assertEquals(2,c); - assertEquals(2,e); - assertEquals(2,f); - } - { // class variables shadowing argument, let, const and var variables - class a { static foo() { return 2; } } - class b { static foo() { return 2; } } - class c { static foo() { return 2; } } - class d { static foo() { return 2; } } - class e { static foo() { return 2; } } - class f { static foo() { return 2; } } - assertEquals(2,a.foo()); - assertEquals(2,b.foo()); - assertEquals(2,c.foo()); - assertEquals(2,e.foo()); - assertEquals(2,f.foo()); - } - try { - throw 'stuff1'; - } catch (a) { - assertEquals('stuff1',a); - // catch variable shadowing argument - a = 2; - assertEquals(2,a); - { - // let variable shadowing catch variable - let a = 3; - assertEquals(3,a); - try { - throw 'stuff2'; - } catch (a) { - assertEquals('stuff2',a); - // catch variable shadowing let variable - a = 4; - assertEquals(4,a); - } - assertEquals(3,a); - } - assertEquals(2,a); - } - try { - throw 'stuff3'; - } catch (c) { - // catch variable shadowing var variable - assertEquals('stuff3',c); - { - // const variable shadowing catch variable - const c = 3; - assertEquals(3,c); - } - assertEquals('stuff3',c); - try { - throw 'stuff4'; - } catch(c) { - assertEquals('stuff4',c); - // catch variable shadowing catch variable - c = 3; - assertEquals(3,c); - } - (function(c) { - // argument shadowing catch variable - c = 3; - assertEquals(3,c); - })(); - assertEquals('stuff3', c); - (function() { - // var variable shadowing catch variable - var c = 3; - })(); - assertEquals('stuff3', c); - c = 2; - } - assertEquals(1,c); - (function(a,b,c,e,f) { - // arguments shadowing argument, let, const, class and var variable - a = 2; - b = 2; - c = 2; - e = 2; - f = 2; - assertEquals(2,a); - assertEquals(2,b); - assertEquals(2,c); - assertEquals(2,e); - assertEquals(2,f); - // var variable shadowing var variable - var d = 2; - })(1,1); - assertEquals(1,a); - assertEquals(1,b); - assertEquals(1,c); - assertEquals(1,d); - assertEquals(1,e); - assertEquals(1,f.foo()); -} -f7(1); - - -// Ensure let and const variables are block local -// and var variables function local. -function f8() { - var let_accessors = []; - var var_accessors = []; - var const_accessors = []; - var class_accessors = []; - for (var i = 0; i < 10; i++) { - let x = i; - var y = i; - const z = i; - class a { static foo() { return x; } } - let_accessors[i] = function() { return x; } - var_accessors[i] = function() { return y; } - const_accessors[i] = function() { return z; } - class_accessors[i] = function() { return a; } - } - for (var j = 0; j < 10; j++) { - y = j + 10; - assertEquals(j, let_accessors[j]()); - assertEquals(y, var_accessors[j]()); - assertEquals(j, const_accessors[j]()); - assertEquals(j, class_accessors[j]().foo()); - } -} -f8(); diff --git a/implementation-contributed/v8/mjsunit/es6/block-sloppy-function.js b/implementation-contributed/v8/mjsunit/es6/block-sloppy-function.js deleted file mode 100644 index 5d22cd85c00..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/block-sloppy-function.js +++ /dev/null @@ -1,668 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test Annex B 3.3 semantics for functions declared in blocks in sloppy mode. -// http://www.ecma-international.org/ecma-262/6.0/#sec-block-level-function-declarations-web-legacy-compatibility-semantics - -(function overridingLocalFunction() { - var x = []; - assertEquals('function', typeof f); - function f() { - x.push(1); - } - f(); - { - f(); - function f() { - x.push(2); - } - f(); - } - f(); - { - f(); - function f() { - x.push(3); - } - f(); - } - f(); - assertArrayEquals([1, 2, 2, 2, 3, 3, 3], x); -})(); - -(function newFunctionBinding() { - var x = []; - assertEquals('undefined', typeof f); - { - f(); - function f() { - x.push(2); - } - f(); - } - f(); - { - f(); - function f() { - x.push(3); - } - f(); - } - f(); - assertArrayEquals([2, 2, 2, 3, 3, 3], x); -})(); - -(function shadowingLetDoesntBind() { - let f = 1; - assertEquals(1, f); - { - let y = 3; - function f() { - y = 2; - } - f(); - assertEquals(2, y); - } - assertEquals(1, f); -})(); - -(function shadowingLetDoesntBindGenerator() { - let f = function *f() { - while(true) { - yield 1; - } - }; - assertEquals(1, f().next().value); - { - function *f() { - while(true) { - yield 2; - } - } - assertEquals(2, f().next().value); - } - assertEquals(1, f().next().value); -})(); - -(function shadowingClassDoesntBind() { - class f { } - assertEquals('class f { }', f.toString()); - { - let y = 3; - function f() { - y = 2; - } - f(); - assertEquals(2, y); - } - assertEquals('class f { }', f.toString()); -})(); - -(function shadowingConstDoesntBind() { - const f = 1; - assertEquals(1, f); - { - let y = 3; - function f() { - y = 2; - } - f(); - assertEquals(2, y); - } - assertEquals(1, f); -})(); - -(function shadowingVarBinds() { - var f = 1; - assertEquals(1, f); - { - let y = 3; - function f() { - y = 2; - } - f(); - assertEquals(2, y); - } - assertEquals('function', typeof f); -})(); - -(function complexParams(a = 0) { - { - let y = 3; - function f(b = 0) { - y = 2; - } - f(); - assertEquals(2, y); - } - assertEquals('function', typeof f); -})(); - -(function complexVarParams(a = 0) { - var f; - { - let y = 3; - function f(b = 0) { - y = 2; - } - f(); - assertEquals(2, y); - } - assertEquals('function', typeof f); -})(); - -(function conditional() { - if (true) { - function f() { return 1; } - } else { - function f() { return 2; } - } - assertEquals(1, f()); - - if (false) { - function g() { return 1; } - } else { - function g() { return 2; } - } - assertEquals(2, g()); -})(); - -(function skipExecution() { - { - function f() { return 1; } - } - assertEquals(1, f()); - { - function f() { return 2; } - } - assertEquals(2, f()); - L: { - assertEquals(3, f()); - break L; - function f() { return 3; } - } - assertEquals(2, f()); -})(); - -(function executionOrder() { - function getOuter() { - return f; - } - assertEquals('undefined', typeof getOuter()); - - { - assertEquals('function', typeof f); - assertEquals('undefined', typeof getOuter()); - function f () {} - assertEquals('function', typeof f); - assertEquals('function', typeof getOuter()); - } - - assertEquals('function', typeof getOuter()); -})(); - -(function reassignBindings() { - function getOuter() { - return f; - } - assertEquals('undefined', typeof getOuter()); - - { - assertEquals('function', typeof f); - assertEquals('undefined', typeof getOuter()); - f = 1; - assertEquals('number', typeof f); - assertEquals('undefined', typeof getOuter()); - function f () {} - assertEquals('number', typeof f); - assertEquals('number', typeof getOuter()); - f = ''; - assertEquals('string', typeof f); - assertEquals('number', typeof getOuter()); - } - - assertEquals('number', typeof getOuter()); -})(); - -// Test that shadowing arguments is fine -(function shadowArguments(x) { - assertArrayEquals([1], arguments); - { - assertEquals('function', typeof arguments); - function arguments() {} - assertEquals('function', typeof arguments); - } - assertEquals('function', typeof arguments); -})(1); - - -// Don't shadow simple parameter -(function shadowingParameterDoesntBind(x) { - assertEquals(1, x); - { - function x() {} - } - assertEquals(1, x); -})(1); - -// Don't shadow complex parameter -(function shadowingDefaultParameterDoesntBind(x = 0) { - assertEquals(1, x); - { - function x() {} - } - assertEquals(1, x); -})(1); - -// Don't shadow nested complex parameter -(function shadowingNestedParameterDoesntBind([[x]]) { - assertEquals(1, x); - { - function x() {} - } - assertEquals(1, x); -})([[1]]); - -// Don't shadow rest parameter -(function shadowingRestParameterDoesntBind(...x) { - assertArrayEquals([1], x); - { - function x() {} - } - assertArrayEquals([1], x); -})(1); - -// Don't shadow complex rest parameter -(function shadowingComplexRestParameterDoesntBind(...[x]) { - assertArrayEquals(1, x); - { - function x() {} - } - assertArrayEquals(1, x); -})(1); - -// Previous tests with a var declaration thrown in. -// Don't shadow simple parameter -(function shadowingVarParameterDoesntBind(x) { - var x; - assertEquals(1, x); - { - function x() {} - } - assertEquals(1, x); -})(1); - -// Don't shadow complex parameter -(function shadowingVarDefaultParameterDoesntBind(x = 0) { - var x; - assertEquals(1, x); - { - function x() {} - } - assertEquals(1, x); -})(1); - -// Don't shadow nested complex parameter -(function shadowingVarNestedParameterDoesntBind([[x]]) { - var x; - assertEquals(1, x); - { - function x() {} - } - assertEquals(1, x); -})([[1]]); - -// Don't shadow rest parameter -(function shadowingVarRestParameterDoesntBind(...x) { - var x; - assertArrayEquals([1], x); - { - function x() {} - } - assertArrayEquals([1], x); -})(1); - -// Don't shadow complex rest parameter -(function shadowingVarComplexRestParameterDoesntBind(...[x]) { - var x; - assertArrayEquals(1, x); - { - function x() {} - } - assertArrayEquals(1, x); -})(1); - - -// Hoisting is not affected by other simple parameters -(function irrelevantParameterBinds(y, z) { - assertEquals(undefined, x); - { - function x() {} - } - assertEquals('function', typeof x); -})(1); - -// Hoisting is not affected by other complex parameters -(function irrelevantComplexParameterBinds([y] = [], z) { - assertEquals(undefined, x); - { - function x() {} - } - assertEquals('function', typeof x); -})(); - -// Hoisting is not affected by rest parameters -(function irrelevantRestParameterBinds(y, ...z) { - assertEquals(undefined, x); - { - function x() {} - } - assertEquals('function', typeof x); -})(); - -// Hoisting is not affected by complex rest parameters -(function irrelevantRestParameterBinds(y, ...[z]) { - assertEquals(undefined, x); - { - function x() {} - } - assertEquals('function', typeof x); -})(); - - -// Test that shadowing function name is fine -{ - let called = false; - (function shadowFunctionName() { - if (called) assertUnreachable(); - called = true; - { - function shadowFunctionName() { - return 0; - } - assertEquals(0, shadowFunctionName()); - } - assertEquals(0, shadowFunctionName()); - })(); -} - -{ - let called = false; - (function shadowFunctionNameWithComplexParameter(...r) { - if (called) assertUnreachable(); - called = true; - { - function shadowFunctionNameWithComplexParameter() { - return 0; - } - assertEquals(0, shadowFunctionNameWithComplexParameter()); - } - assertEquals(0, shadowFunctionNameWithComplexParameter()); - })(); -} - -(function shadowOuterVariable() { - { - let f = 0; - (function () { - assertEquals(undefined, f); - { - assertEquals(1, f()); - function f() { return 1; } - assertEquals(1, f()); - } - assertEquals(1, f()); - })(); - assertEquals(0, f); - } -})(); - -(function notInDefaultScope() { - var y = 1; - (function innerNotInDefaultScope(x = y) { - assertEquals('undefined', typeof y); - { - function y() {} - } - assertEquals('function', typeof y); - assertEquals(1, x); - })(); -})(); - -(function noHoistingThroughNestedLexical() { - { - let f = 2; - { - let y = 3; - function f() { - y = 2; - } - f(); - assertEquals(2, y); - } - assertEquals(2, f); - } - assertThrows(()=>f, ReferenceError); -})(); - -// Only the first function is hoisted; the second is blocked by the first. -// Contrast overridingLocalFunction, in which the outer function declaration -// is not lexical and so the inner declaration is hoisted. -(function noHoistingThroughNestedFunctions() { - assertEquals(undefined, f); // Also checks that the var-binding exists - - { - assertEquals(4, f()); - - function f() { - return 4; - } - - { - assertEquals(5, f()); - function f() { - return 5; - } - assertEquals(5, f()); - } - - assertEquals(4, f()); - } - - assertEquals(4, f()); -})(); - -// B.3.5 interacts with B.3.3 to allow this. -(function hoistingThroughSimpleCatch() { - assertEquals(undefined, f); - - try { - throw 0; - } catch (f) { - { - assertEquals(4, f()); - - function f() { - return 4; - } - - assertEquals(4, f()); - } - - assertEquals(0, f); - } - - assertEquals(4, f()); -})(); - -(function noHoistingThroughComplexCatch() { - try { - throw 0; - } catch ({f}) { - { - assertEquals(4, f()); - - function f() { - return 4; - } - - assertEquals(4, f()); - } - } - - assertThrows(()=>f, ReferenceError); -})(); - -(function hoistingThroughWith() { - with ({f: 0}) { - assertEquals(0, f); - - { - assertEquals(4, f()); - - function f() { - return 4; - } - - assertEquals(4, f()); - } - - assertEquals(0, f); - } - - assertEquals(4, f()); -})(); - -// Test that hoisting from blocks does happen in global scope -function globalHoisted() { return 0; } -{ - function globalHoisted() { return 1; } -} -assertEquals(1, globalHoisted()); - -// Also happens when not previously defined -assertEquals(undefined, globalUndefinedHoisted); -{ - function globalUndefinedHoisted() { return 1; } -} -assertEquals(1, globalUndefinedHoisted()); -var globalUndefinedHoistedDescriptor = - Object.getOwnPropertyDescriptor(this, "globalUndefinedHoisted"); -assertFalse(globalUndefinedHoistedDescriptor.configurable); -assertTrue(globalUndefinedHoistedDescriptor.writable); -assertTrue(globalUndefinedHoistedDescriptor.enumerable); -assertEquals(1, globalUndefinedHoistedDescriptor.value()); - -// When a function property is hoisted, it should be -// made enumerable. -// BUG(v8:4451) -Object.defineProperty(this, "globalNonEnumerable", { - value: false, - configurable: true, - writable: true, - enumerable: false -}); -eval("{function globalNonEnumerable() { return 1; }}"); -var globalNonEnumerableDescriptor - = Object.getOwnPropertyDescriptor(this, "globalNonEnumerable"); -// BUG(v8:4451): Should be made non-configurable -assertTrue(globalNonEnumerableDescriptor.configurable); -assertTrue(globalNonEnumerableDescriptor.writable); -// BUG(v8:4451): Should be made enumerable -assertFalse(globalNonEnumerableDescriptor.enumerable); -assertEquals(1, globalNonEnumerableDescriptor.value()); - -// When a function property is hoisted, it should be overwritten and -// made writable and overwritten, even if the property was non-writable. -Object.defineProperty(this, "globalNonWritable", { - value: false, - configurable: true, - writable: false, - enumerable: true -}); -eval("{function globalNonWritable() { return 1; }}"); -var globalNonWritableDescriptor - = Object.getOwnPropertyDescriptor(this, "globalNonWritable"); -// BUG(v8:4451): Should be made non-configurable -assertTrue(globalNonWritableDescriptor.configurable); -// BUG(v8:4451): Should be made writable -assertFalse(globalNonWritableDescriptor.writable); -assertFalse(globalNonEnumerableDescriptor.enumerable); -// BUG(v8:4451): Should be overwritten -assertEquals(false, globalNonWritableDescriptor.value); - -// Test that hoisting from blocks does happen in an eval -eval(` - function evalHoisted() { return 0; } - { - function evalHoisted() { return 1; } - } - assertEquals(1, evalHoisted()); -`); - -// Test that hoisting from blocks happens from eval in a function -!function() { - eval(` - function evalInFunctionHoisted() { return 0; } - { - function evalInFunctionHoisted() { return 1; } - } - assertEquals(1, evalInFunctionHoisted()); - `); -}(); - -(function evalHoistingThroughSimpleCatch() { - try { - throw 0; - } catch (f) { - eval(`{ function f() { - return 4; - } }`); - - assertEquals(0, f); - } - - assertEquals(4, f()); -})(); - -(function evalHoistingThroughWith() { - with ({f: 0}) { - eval(`{ function f() { - return 4; - } }`); - - assertEquals(0, f); - } - - assertEquals(4, f()); -})(); - -let dontHoistGlobal; -{ function dontHoistGlobal() {} } -assertEquals(undefined, dontHoistGlobal); - -let dontHoistEval; -var throws = false; -try { - eval("{ function dontHoistEval() {} }"); -} catch (e) { - throws = true; -} -assertFalse(throws); - -// When the global object is frozen, silently don't hoist -// Currently this actually throws BUG(v8:4452) -Object.freeze(this); -{ - let throws = false; - try { - eval('{ function hoistWhenFrozen() {} }'); - } catch (e) { - throws = true; - } - assertFalse(this.hasOwnProperty("hoistWhenFrozen")); - assertThrows(() => hoistWhenFrozen, ReferenceError); - // Should be assertFalse BUG(v8:4452) - assertTrue(throws); -} diff --git a/implementation-contributed/v8/mjsunit/es6/built-in-accessor-names.js b/implementation-contributed/v8/mjsunit/es6/built-in-accessor-names.js deleted file mode 100644 index 8c29d368b7f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/built-in-accessor-names.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -function assertGetterName(expected, object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertSame(expected, descr.get.name); -} - - -function assertSetterName(expected, object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertSame(expected, descr.set.name); -} - - -assertGetterName('get byteLength', ArrayBuffer.prototype, 'byteLength'); -assertGetterName('get size', Set.prototype, 'size'); -assertGetterName('get size', Map.prototype, 'size'); - - -let TypedArray = Uint8Array.__proto__; - -assertGetterName('get buffer', TypedArray.prototype, 'buffer'); -assertGetterName('get byteOffset', TypedArray.prototype, 'byteOffset'); -assertGetterName('get byteLength', TypedArray.prototype, 'byteLength'); -assertGetterName('get length', TypedArray.prototype, 'length'); -assertGetterName('get [Symbol.toStringTag]', TypedArray.prototype, Symbol.toStringTag); - - -assertGetterName('get buffer', DataView.prototype, 'buffer'); -assertGetterName('get byteOffset', DataView.prototype, 'byteOffset'); -assertGetterName('get byteLength', DataView.prototype, 'byteLength'); - - -assertGetterName('get __proto__', Object.prototype, '__proto__'); -assertSetterName('set __proto__', Object.prototype, '__proto__'); diff --git a/implementation-contributed/v8/mjsunit/es6/call-with-spread-modify-array-iterator.js b/implementation-contributed/v8/mjsunit/es6/call-with-spread-modify-array-iterator.js deleted file mode 100644 index ef18cd3f33b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/call-with-spread-modify-array-iterator.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function modifyArrayIterator() { - 'use strict'; - - function maxWithZero(...args) { - return Math.max(0, ...args); - } - - function testMax(x, y) { - return maxWithZero(x, y); - } - - testMax(1, 2); - testMax(1, 2); - %OptimizeFunctionOnNextCall(testMax); - var r = testMax(1, 2); - - assertEquals(2, r); - - Object.defineProperty(Array.prototype, Symbol.iterator, { - value: function* - () { - yield 3; - yield 4; - }, - configurable: true - }); - - var r2 = testMax(1, 2); - - assertEquals(4, r2); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/call-with-spread-modify-next.js b/implementation-contributed/v8/mjsunit/es6/call-with-spread-modify-next.js deleted file mode 100644 index 3cae94ff9d3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/call-with-spread-modify-next.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function modifyNext() { - 'use strict'; - - var a = []; - var ai = a[Symbol.iterator](); - - var original_next = ai.__proto__['next']; - - function maxWithZero(...args) { - return Math.max(0, ...args); - } - - function testMax(x, y) { - return maxWithZero(x, y); - } - - testMax(1, 2); - testMax(1, 2); - %OptimizeFunctionOnNextCall(testMax); - var r = testMax(1, 2); - - assertEquals(2, r); - - var called = 0; - Object.defineProperty(ai.__proto__, 'next', { - get: function() { - called++; - return original_next; - } - }); - - var r2 = testMax(1, 2); - - // .next() is only loaded once during the iteration prologue (see - // https://github.com/tc39/ecma262/pull/988/ and v8:6861) - assertEquals(1, called); - assertEquals(2, r2); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/call-with-spread.js b/implementation-contributed/v8/mjsunit/es6/call-with-spread.js deleted file mode 100644 index 3a1744a72ae..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/call-with-spread.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - 'use strict'; - - function testBaselineAndOpt(func) { - func(-1, -2); - func(-1, -2); - %OptimizeFunctionOnNextCall(func); - return func(-1, -2); - } - - // Rest parameters - - function RestMax(...args) { - return Math.max(...args); - } - - var r = testBaselineAndOpt(function(x, y) { - return RestMax(x, y); - }); - assertEquals(r, -1); - - function RestMaxWithZero(...args) { - return Math.max(0, ...args); - } - - var r = testBaselineAndOpt(function(x, y) { - return RestMaxWithZero(x, y); - }); - assertEquals(r, 0); - - function RestMaxOneArg(x, ...args) { - return Math.max(-10, ...args); - } - - r = testBaselineAndOpt(function(x, y) { - return RestMaxOneArg(x, y); - }); - assertEquals(r, -2); - - // Strict Arguments Object - - function ArgumentsMax() { - return Math.max(...arguments); - } - - var r = testBaselineAndOpt(function(x, y) { - return ArgumentsMax(x, y); - }); - assertEquals(r, -1); - - function ArgumentsMaxWithZero() { - return Math.max(0, ...arguments); - } - - var r = testBaselineAndOpt(function(x, y) { - return ArgumentsMaxWithZero(x, y); - }); - assertEquals(r, 0); - - function ArgumentsMaxOneArg(x) { - return Math.max(-10, ...arguments); - } - - var r = testBaselineAndOpt(function(x, y) { - return ArgumentsMaxOneArg(x, y); - }); - assertEquals(r, -1); - -})(); - -(function() { - function testBaselineAndOpt(func) { - func(-1, -2); - func(-1, -2); - %OptimizeFunctionOnNextCall(func); - return func(-1, -2); - } - - // Sloppy Arguments Object - - function ArgumentsMax() { - return Math.max(...arguments); - } - - var r = testBaselineAndOpt(function(x, y) { - return ArgumentsMax(x, y); - }); - assertEquals(r, -1); - - function ArgumentsMaxWithZero() { - return Math.max(0, ...arguments); - } - - var r = testBaselineAndOpt(function(x, y) { - return ArgumentsMaxWithZero(x, y); - }); - assertEquals(r, 0); - - function ArgumentsMaxOneArg(x) { - return Math.max(-10, ...arguments); - } - - var r = testBaselineAndOpt(function(x, y) { - return ArgumentsMaxOneArg(x, y); - }); - assertEquals(r, -1); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/catch-parameter-redeclaration.js b/implementation-contributed/v8/mjsunit/es6/catch-parameter-redeclaration.js deleted file mode 100644 index 0f8f9c86e7d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/catch-parameter-redeclaration.js +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function checkIsRedeclarationError(code) { - try { - eval(` -checkIsRedeclarationError : { - break checkIsRedeclarationError; -${code} -} -`); - assertUnreachable(); - } catch(e) { - assertInstanceof(e, SyntaxError ); - assertTrue( e.toString().indexOf("has already been declared") >= 0 ); - } -} - -function checkIsNotRedeclarationError(code) { - assertDoesNotThrow(()=>eval(` -checkIsNotRedeclarationError_label : { - break checkIsNotRedeclarationError_label; -${code} -} -`)); -} - - -let lexical_e = [ - 'let e', - 'let f, g, e', - 'let [f] = [], [] = [], e = e, h', - 'let {e} = 0', - 'let {f, e} = 0', - 'let {f, g} = 0, {e} = 0', - 'let {f = 0, e = 1} = 0', - 'let [e] = 0', - 'let [f, e] = 0', - 'let {f:e} = 0', - 'let [[[], e]] = 0', - 'const e = 0', - 'const f = 0, g = 0, e = 0', - 'const {e} = 0', - 'const [e] = 0', - 'const {f:e} = 0', - 'const [[[], e]] = 0', - 'function e(){}', - 'function* e(){}', -]; - -let not_lexical_e = [ - 'var e', - 'var f, e', - 'var {e} = 0', - 'let {} = 0', - 'let {e:f} = 0', - '{ function e(){} }' -]; - -// Check that lexical declarations cannot override a simple catch parameter -for (let declaration of lexical_e) { - checkIsRedeclarationError(` -try { - throw 0; -} catch(e) { - ${declaration} -} -`); -} - -// Check that lexical declarations cannot override a complex catch parameter -for (let declaration of lexical_e) { - checkIsRedeclarationError(` -try { - throw 0; -} catch({e}) { - ${declaration} -} -`); -} - -// Check that non-lexical declarations can override a simple catch parameter -for (let declaration of not_lexical_e) { - checkIsNotRedeclarationError(` -try { - throw 0; -} catch(e) { - ${declaration} -} -`); -} - -// Check that the above error does not occur if a declaration scope is between -// the catch and the loop. -for (let declaration of lexical_e) { - checkIsNotRedeclarationError(` -try { - throw 0; -} catch(e) { - (()=>{${declaration}})(); -} -`); - - checkIsNotRedeclarationError(` -try { - throw 0; -} catch(e) { - (function(){${declaration}})(); -} -`); -} diff --git a/implementation-contributed/v8/mjsunit/es6/class-computed-property-names-super.js b/implementation-contributed/v8/mjsunit/es6/class-computed-property-names-super.js deleted file mode 100644 index 4aa816f6cd2..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/class-computed-property-names-super.js +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -function ID(x) { - return x; -} - -function assertMethodDescriptor(object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertTrue(descr.writable); - assertEquals('function', typeof descr.value); - assertFalse('prototype' in descr.value); - assertEquals("" + name, descr.value.name); -} - - -function assertGetterDescriptor(object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertEquals('function', typeof descr.get); - assertFalse('prototype' in descr.get); - assertEquals(undefined, descr.set); - assertEquals("get " + name, descr.get.name); -} - - -function assertSetterDescriptor(object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertEquals(undefined, descr.get); - assertEquals('function', typeof descr.set); - assertFalse('prototype' in descr.set); - assertEquals("set " + name, descr.set.name); -} - - -function assertAccessorDescriptor(object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertEquals('function', typeof descr.get); - assertEquals('function', typeof descr.set); - assertFalse('prototype' in descr.get); - assertFalse('prototype' in descr.set); - assertEquals("get " + name, descr.get.name); - assertEquals("set " + name, descr.set.name); -} - - - -(function TestComputedMethodSuper() { - class Base { - m() { - return ' base m'; - } - } - class Derived extends Base { - ['a']() { return 'a' + super.m(); } - [ID('b')]() { return 'b' + super.m(); } - [0]() { return '0' + super.m(); } - [ID(1)]() { return '1' + super.m(); } - [ID(2147483649)]() { return '2147483649' + super.m(); } - [ID(4294967294)]() { return '4294967294' + super.m(); } - [ID(4294967295)]() { return '4294967295' + super.m(); } - } - - assertSame(Derived.prototype, Derived.prototype.a[%HomeObjectSymbol()]); - - assertMethodDescriptor(Derived.prototype, "a"); - assertMethodDescriptor(Derived.prototype, "b"); - assertMethodDescriptor(Derived.prototype, 0); - assertMethodDescriptor(Derived.prototype, 1); - assertMethodDescriptor(Derived.prototype, 2147483649); - assertMethodDescriptor(Derived.prototype, 4294967294); - assertMethodDescriptor(Derived.prototype, 4294967295); - - assertEquals('a base m', new Derived().a()); - assertEquals('b base m', new Derived().b()); - assertEquals('0 base m', new Derived()[0]()); - assertEquals('1 base m', new Derived()[1]()); - assertEquals('2147483649 base m', new Derived()[2147483649]()); - assertEquals('4294967294 base m', new Derived()[4294967294]()); - assertEquals('4294967295 base m', new Derived()[4294967295]()); -})(); - - -(function TestComputedGetterSuper() { - class Base { - m() { - return ' base m'; - } - } - class Derived extends Base { - get ['a']() { return 'a' + super.m(); } - get [ID('b')]() { return 'b' + super.m(); } - get [0]() { return '0' + super.m(); } - get [ID(1)]() { return '1' + super.m(); } - get [ID(2147483649)]() { return '2147483649' + super.m(); } - get [ID(4294967294)]() { return '4294967294' + super.m(); } - get [ID(4294967295)]() { return '4294967295' + super.m(); } - } - - assertGetterDescriptor(Derived.prototype, "a"); - assertGetterDescriptor(Derived.prototype, "b"); - assertGetterDescriptor(Derived.prototype, 0); - assertGetterDescriptor(Derived.prototype, 1); - assertGetterDescriptor(Derived.prototype, 2147483649); - assertGetterDescriptor(Derived.prototype, 4294967294); - assertGetterDescriptor(Derived.prototype, 4294967295); - - assertEquals('a base m', new Derived().a); - assertEquals('b base m', new Derived().b); - assertEquals('0 base m', new Derived()[0]); - assertEquals('1 base m', new Derived()[1]); - assertEquals('2147483649 base m', new Derived()[2147483649]); - assertEquals('4294967294 base m', new Derived()[4294967294]); - assertEquals('4294967295 base m', new Derived()[4294967295]); -})(); - - -(function TestComputedSetterSuper() { - var value; - class Base { - m(name, v) { - value = name + ' ' + v; - } - } - class Derived extends Base { - set ['a'](v) { super.m('a', v); } - set [ID('b')](v) { super.m('b', v); } - set [0](v) { super.m('0', v); } - set [ID(1)](v) { super.m('1', v); } - set [ID(2147483649)](v) { super.m('2147483649', v); } - set [ID(4294967294)](v) { super.m('4294967294', v); } - set [ID(4294967295)](v) { super.m('4294967295', v); } - } - assertSetterDescriptor(Derived.prototype, "a"); - assertSetterDescriptor(Derived.prototype, "b"); - assertSetterDescriptor(Derived.prototype, 0); - assertSetterDescriptor(Derived.prototype, 1); - assertSetterDescriptor(Derived.prototype, 2147483649); - assertSetterDescriptor(Derived.prototype, 4294967294); - assertSetterDescriptor(Derived.prototype, 4294967295); - - new Derived().a = 2; - assertEquals('a 2', value); - new Derived().b = 3; - assertEquals('b 3', value); - new Derived()[0] = 4; - assertEquals('0 4', value); - new Derived()[1] = 5; - assertEquals('1 5', value); - new Derived()[2147483649] = 6; - assertEquals('2147483649 6', value); - new Derived()[4294967294] = 7; - assertEquals('4294967294 7', value); - new Derived()[4294967295] = 8; - assertEquals('4294967295 8', value); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/class-property-name-eval-arguments.js b/implementation-contributed/v8/mjsunit/es6/class-property-name-eval-arguments.js deleted file mode 100644 index bbd05cc355d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/class-property-name-eval-arguments.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function Method() { - class C { - eval() { - return 1; - } - arguments() { - return 2; - } - static eval() { - return 3; - } - static arguments() { - return 4; - } - }; - - assertEquals(1, new C().eval()); - assertEquals(2, new C().arguments()); - assertEquals(3, C.eval()); - assertEquals(4, C.arguments()); -})(); - - -(function Getters() { - class C { - get eval() { - return 1; - } - get arguments() { - return 2; - } - static get eval() { - return 3; - } - static get arguments() { - return 4; - } - }; - - assertEquals(1, new C().eval); - assertEquals(2, new C().arguments); - assertEquals(3, C.eval); - assertEquals(4, C.arguments); -})(); - - -(function Setters() { - var x = 0; - class C { - set eval(v) { - x = v; - } - set arguments(v) { - x = v; - } - static set eval(v) { - x = v; - } - static set arguments(v) { - x = v; - } - }; - - new C().eval = 1; - assertEquals(1, x); - new C().arguments = 2; - assertEquals(2, x); - C.eval = 3; - assertEquals(3, x); - C.arguments = 4; - assertEquals(4, x); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/classes-derived-return-type.js b/implementation-contributed/v8/mjsunit/es6/classes-derived-return-type.js deleted file mode 100644 index 3f81a340ffe..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/classes-derived-return-type.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -class Base {} - -class DerivedWithReturn extends Base { - constructor(x) { - super(); - return x; - } -} - -assertThrows(function() { - new DerivedWithReturn(null); -}, TypeError); -assertThrows(function() { - new DerivedWithReturn(42); -}, TypeError); -assertThrows(function() { - new DerivedWithReturn(true); -}, TypeError); -assertThrows(function() { - new DerivedWithReturn('hi'); -}, TypeError); -assertThrows(function() { - new DerivedWithReturn(Symbol()); -}, TypeError); - - -assertInstanceof(new DerivedWithReturn(undefined), DerivedWithReturn); -function f() {} -assertInstanceof(new DerivedWithReturn(new f()), f); -assertInstanceof(new DerivedWithReturn(/re/), RegExp); - - -class DerivedWithReturnNoSuper extends Base { - constructor(x) { - return x; - } -} - - -assertThrows(function() { - new DerivedWithReturnNoSuper(null); -}, TypeError); -assertThrows(function() { - new DerivedWithReturnNoSuper(42); -}, TypeError); -assertThrows(function() { - new DerivedWithReturnNoSuper(true); -}, TypeError); -assertThrows(function() { - new DerivedWithReturnNoSuper('hi'); -}, TypeError); -assertThrows(function() { - new DerivedWithReturnNoSuper(Symbol()); -}, TypeError); -assertThrows(function() { - new DerivedWithReturnNoSuper(undefined); -}, ReferenceError); - - -function f2() {} -assertInstanceof(new DerivedWithReturnNoSuper(new f2()), f2); -assertInstanceof(new DerivedWithReturnNoSuper(/re/), RegExp); - - -class DerivedReturn extends Base { - constructor() { - super(); - return; - } -} - -assertInstanceof(new DerivedReturn(), DerivedReturn); - - - -class DerivedReturnThis extends Base { - constructor() { - super(); - return this; - } -} - -assertInstanceof(new DerivedReturnThis(), DerivedReturnThis); diff --git a/implementation-contributed/v8/mjsunit/es6/classes-experimental.js b/implementation-contributed/v8/mjsunit/es6/classes-experimental.js deleted file mode 100644 index 4607a25957b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/classes-experimental.js +++ /dev/null @@ -1,337 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; -(function TestArgumentsAccess() { - class Base { - constructor() { - assertEquals(2, arguments.length); - assertEquals(1, arguments[0]); - assertEquals(2, arguments[1]); - } - } - - let b = new Base(1,2); - - class Subclass extends Base { - constructor() { - assertEquals(2, arguments.length); - assertEquals(3, arguments[0]); - assertEquals(4, arguments[1]); - super(1,2); - } - } - - let s = new Subclass(3,4); - assertEquals(0, Subclass.length); - - class Subclass2 extends Base { - constructor(x,y) { - assertEquals(2, arguments.length); - assertEquals(3, arguments[0]); - assertEquals(4, arguments[1]); - super(1,2); - } - } - - let s2 = new Subclass2(3,4); - assertEquals(2, Subclass2.length); -}()); - -(function TestThisAccessRestriction() { - class Base { - constructor(a, b) { - let o = new Object(); - o.prp = a + b; - return o; - } - } - - class Subclass extends Base { - constructor(a, b) { - var exn; - try { - this.prp1 = 3; - } catch (e) { - exn = e; - } - assertTrue(exn instanceof ReferenceError); - super(a, b); - assertSame(a + b, this.prp); - assertSame(undefined, this.prp1); - assertFalse(this.hasOwnProperty("prp1")); - return this; - } - } - - let b = new Base(1, 2); - assertSame(3, b.prp); - - - let s = new Subclass(2, -1); - assertSame(1, s.prp); - assertSame(undefined, s.prp1); - assertFalse(s.hasOwnProperty("prp1")); - - class Subclass2 extends Base { - constructor(x) { - super(1,2); - - if (x < 0) return; - - let called = false; - function tmp() { called = true; return 3; } - var exn = null; - try { - super(tmp(),4); - } catch (e) { exn = e; } - assertTrue(exn instanceof ReferenceError); - assertTrue(called); - } - } - - var s2 = new Subclass2(1); - assertSame(3, s2.prp); - - var s3 = new Subclass2(-1); - assertSame(3, s3.prp); - - assertThrows(function() { Subclass.call(new Object(), 1, 2); }, TypeError); - assertThrows(function() { Base.call(new Object(), 1, 2); }, TypeError); - - class BadSubclass extends Base { - constructor() {} - } - - assertThrows(function() { new BadSubclass(); }, ReferenceError); -}()); - -(function TestThisCheckOrdering() { - let baseCalled = 0; - class Base { - constructor() { baseCalled++ } - } - - let fCalled = 0; - function f() { fCalled++; return 3; } - - class Subclass1 extends Base { - constructor() { - baseCalled = 0; - super(); - assertEquals(1, baseCalled); - let obj = this; - - let exn = null; - baseCalled = 0; - fCalled = 0; - try { - super(f()); - } catch (e) { exn = e; } - assertTrue(exn instanceof ReferenceError); - assertEquals(1, fCalled); - assertEquals(1, baseCalled); - assertSame(obj, this); - - exn = null; - baseCalled = 0; - fCalled = 0; - try { - super(super(), f()); - } catch (e) { exn = e; } - assertTrue(exn instanceof ReferenceError); - assertEquals(0, fCalled); - assertEquals(1, baseCalled); - assertSame(obj, this); - - exn = null; - baseCalled = 0; - fCalled = 0; - try { - super(f(), super()); - } catch (e) { exn = e; } - assertTrue(exn instanceof ReferenceError); - assertEquals(1, fCalled); - assertEquals(1, baseCalled); - assertSame(obj, this); - } - } - - new Subclass1(); -}()); - - -(function TestPrototypeWiring() { - class Base { - constructor(x) { - this.foobar = x; - } - } - - class Subclass extends Base { - constructor(x) { - super(x); - } - } - - let s = new Subclass(1); - assertSame(1, s.foobar); - assertSame(Subclass.prototype, s.__proto__); - - let s1 = new Subclass(1, 2); - assertSame(1, s1.foobar); - assertTrue(s1.__proto__ === Subclass.prototype); - - let s2 = new Subclass(); - assertSame(undefined, s2.foobar); - assertSame(Subclass.prototype, s2.__proto__); - assertThrows(function() { Subclass(1); }, TypeError); - assertThrows(function() { Subclass(1,2,3,4); }, TypeError); - - class Subclass2 extends Subclass { - constructor() { - super(5, 6, 7); - } - } - - let ss2 = new Subclass2(); - assertSame(5, ss2.foobar); - assertSame(Subclass2.prototype, ss2.__proto__); - - class Subclass3 extends Base { - constructor(x,y) { - super(x + y); - } - } - - let ss3 = new Subclass3(27,42-27); - assertSame(42, ss3.foobar); - assertSame(Subclass3.prototype, ss3.__proto__); -}()); - -(function TestSublclassingBuiltins() { - class ExtendedUint8Array extends Uint8Array { - constructor() { - super(10); - this[0] = 255; - this[1] = 0xFFA; - } - } - - var eua = new ExtendedUint8Array(); - assertEquals(10, eua.length); - assertEquals(10, eua.byteLength); - assertEquals(0xFF, eua[0]); - assertEquals(0xFA, eua[1]); - assertSame(ExtendedUint8Array.prototype, eua.__proto__); - assertEquals("[object Uint8Array]", Object.prototype.toString.call(eua)); -}()); - -(function TestSubclassingNull() { - let N = null; - - class Foo extends N { - constructor(x,y) { - assertSame(1, x); - assertSame(2, y); - return {}; - } - } - - new Foo(1,2); -}()); - -(function TestSubclassBinding() { - class Base { - constructor(x, y) { - this.x = x; - this.y = y; - } - } - - let obj = {}; - class Subclass extends Base { - constructor(x,y) { - super(x,y); - assertTrue(this !== obj); - } - } - - let f = Subclass.bind(obj); - assertThrows(function () { f(1, 2); }, TypeError); - let s = new f(1, 2); - assertSame(1, s.x); - assertSame(2, s.y); - assertSame(Subclass.prototype, s.__proto__); - - let s1 = new f(1); - assertSame(1, s1.x); - assertSame(undefined, s1.y); - assertSame(Subclass.prototype, s1.__proto__); - - let g = Subclass.bind(obj, 1); - assertThrows(function () { g(8); }, TypeError); - let s2 = new g(8); - assertSame(1, s2.x); - assertSame(8, s2.y); - assertSame(Subclass.prototype, s.__proto__); -}()); - - -(function TestDefaultConstructor() { - class Base1 { } - assertThrows(function() { Base1(); }, TypeError); - - class Subclass1 extends Base1 { } - - assertThrows(function() { Subclass1(); }, TypeError); - - let s1 = new Subclass1(); - assertSame(s1.__proto__, Subclass1.prototype); - - class Base2 { - constructor(x, y) { - this.x = x; - this.y = y; - } - } - - class Subclass2 extends Base2 {}; - - let s2 = new Subclass2(1, 2); - - assertSame(s2.__proto__, Subclass2.prototype); - assertSame(1, s2.x); - assertSame(2, s2.y); - - let f = Subclass2.bind({}, 3, 4); - let s2prime = new f(); - assertSame(s2prime.__proto__, Subclass2.prototype); - assertSame(3, s2prime.x); - assertSame(4, s2prime.y); - - let obj = {}; - class Base3 { - constructor() { - return obj; - } - } - - class Subclass3 extends Base3 {}; - - let s3 = new Subclass3(); - assertSame(obj, s3); - - class ExtendedUint8Array extends Uint8Array { } - - var eua = new ExtendedUint8Array(10); - assertEquals(10, eua.length); - assertEquals(10, eua.byteLength); - eua[0] = 0xFF; - eua[1] = 0xFFA; - assertEquals(0xFF, eua[0]); - assertEquals(0xFA, eua[1]); - assertSame(ExtendedUint8Array.prototype, eua.__proto__); - assertEquals("[object Uint8Array]", Object.prototype.toString.call(eua)); -}()); diff --git a/implementation-contributed/v8/mjsunit/es6/classes-lazy-parsing.js b/implementation-contributed/v8/mjsunit/es6/classes-lazy-parsing.js deleted file mode 100644 index 6f5ce47ed62..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/classes-lazy-parsing.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -class Base { - m() { - return 42; - } -} - -class Derived extends Base { - m() { - return super.m(); - } - evalM() { - return eval('super.m()'); - } -} - -assertEquals(42, new Derived().m()); -assertEquals(42, new Derived().evalM()); - - -class LazyDerived extends Base { - constructor() { - eval('super()'); - } -} -assertInstanceof(new LazyDerived(), LazyDerived); -assertInstanceof(new LazyDerived(), Base); diff --git a/implementation-contributed/v8/mjsunit/es6/classes-maps.js b/implementation-contributed/v8/mjsunit/es6/classes-maps.js deleted file mode 100644 index e519676aa60..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/classes-maps.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax -'use strict'; - -(function TestMaps() { - class Base {} - class Derived extends Base {} - - let d1 = new Derived(); - let d2 = new Derived(); - - assertTrue(%HaveSameMap(d1, d2)); -}()); - - -(function TestProtoModificationArray() { - let called = 0; - function F() { - called++; - assertFalse(Array.isArray(this)); - } - class Derived extends Array {} - assertSame(Derived.__proto__, Array); - - let d1 = new Derived(); - assertTrue(Array.isArray(d1)); - - Derived.__proto__ = F; - called = 0; - let d2 = new Derived(); - assertSame(1, called); - assertFalse(Array.isArray(d2)); - - assertFalse(%HaveSameMap(d1, d2)); -}()); - - -(function TestProtoModification() { - let called = 0; - function F() { - called++; - let exn = null; - try { - this.byteLength; - } catch (e) { - exn = e; - } - assertTrue(exn instanceof TypeError); - } - class Derived extends Uint8Array { - constructor() { super(10); } - } - assertSame(Derived.__proto__, Uint8Array); - - let d1 = new Derived(); - assertSame(10, d1.byteLength); - - Derived.__proto__ = F; - called = 0; - let d2 = new Derived(); - assertSame(1, called); - assertThrows(function() { d2.byteLength; }, TypeError); - - assertFalse(%HaveSameMap(d1, d2)); -}()); diff --git a/implementation-contributed/v8/mjsunit/es6/classes-proxy.js b/implementation-contributed/v8/mjsunit/es6/classes-proxy.js deleted file mode 100644 index 4642df8509f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/classes-proxy.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function CreateConstructableProxy(handler) { - return new Proxy(function(){}, handler); -} - -(function() { - var prototype = { x: 1 }; - var log = []; - - var proxy = CreateConstructableProxy({ - get(k) { - log.push("get trap"); - return prototype; - }}); - - var o = Reflect.construct(Number, [100], proxy); - assertEquals(["get trap"], log); - assertTrue(Object.getPrototypeOf(o) === prototype); - assertEquals(100, Number.prototype.valueOf.call(o)); -})(); - -(function() { - var prototype = { x: 1 }; - var log = []; - - var proxy = CreateConstructableProxy({ - get(k) { - log.push("get trap"); - return 10; - }}); - - var o = Reflect.construct(Number, [100], proxy); - assertEquals(["get trap"], log); - assertTrue(Object.getPrototypeOf(o) === Number.prototype); - assertEquals(100, Number.prototype.valueOf.call(o)); -})(); - -(function() { - var prototype = { x: 1 }; - var log = []; - - var proxy = CreateConstructableProxy({ - get(k) { - log.push("get trap"); - return prototype; - }}); - - var o = Reflect.construct(Function, ["return 1000"], proxy); - assertEquals(["get trap"], log); - assertTrue(Object.getPrototypeOf(o) === prototype); - assertEquals(1000, o()); -})(); - -(function() { - var prototype = { x: 1 }; - var log = []; - - var proxy = CreateConstructableProxy({ - get(k) { - log.push("get trap"); - return prototype; - }}); - - var o = Reflect.construct(Array, [1, 2, 3], proxy); - assertEquals(["get trap"], log); - assertTrue(Object.getPrototypeOf(o) === prototype); - assertEquals([1, 2, 3], o); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/classes-subclass-arrays.js b/implementation-contributed/v8/mjsunit/es6/classes-subclass-arrays.js deleted file mode 100644 index 74feb6aeb4d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/classes-subclass-arrays.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -(function TestDefaultConstructor() { - class Stack extends Array { } - { - let s1 = new Stack(); - assertSame(Stack.prototype, s1.__proto__); - assertTrue(Array.isArray(s1)); - assertSame(0, s1.length); - s1[0] = 'xyz'; - assertSame(1, s1.length); - assertSame('xyz', s1[0]); - s1.push(42); - assertSame(2, s1.length); - assertSame('xyz', s1[0]); - assertSame(42, s1[1]); - } - - { - let s2 = new Stack(10); - assertSame(Stack.prototype, s2.__proto__); - assertTrue(Array.isArray(s2)); - assertSame(10, s2.length); - assertSame(undefined, s2[0]); - } - - { - let a = [1,2,3]; - let s3 = new Stack(a); - assertSame(Stack.prototype, s3.__proto__); - assertTrue(Array.isArray(s3)); - assertSame(1, s3.length); - assertSame(a, s3[0]); - } - - { - let s4 = new Stack(1, 2, 3); - assertSame(Stack.prototype, s4.__proto__); - assertTrue(Array.isArray(s4)); - assertSame(3, s4.length); - assertSame(1, s4[0]); - assertSame(2, s4[1]); - assertSame(3, s4[2]); - } - - { - let s5 = new Stack(undefined, undefined, undefined); - assertSame(Stack.prototype, s5.__proto__); - assertTrue(Array.isArray(s5)); - assertSame(3, s5.length); - assertSame(undefined, s5[0]); - assertSame(undefined, s5[1]); - assertSame(undefined, s5[2]); - } -}()); - - -(function TestEmptyArgsSuper() { - class Stack extends Array { - constructor() { super(); } - } - let s1 = new Stack(); - assertSame(Stack.prototype, s1.__proto__); - assertTrue(Array.isArray(s1)); - assertSame(0, s1.length); - s1[0] = 'xyz'; - assertSame(1, s1.length); - assertSame('xyz', s1[0]); - s1.push(42); - assertSame(2, s1.length); - assertSame('xyz', s1[0]); - assertSame(42, s1[1]); -}()); - - -(function TestOneArgSuper() { - class Stack extends Array { - constructor(x) { - super(x); - } - } - - { - let s2 = new Stack(10, 'ignored arg'); - assertSame(Stack.prototype, s2.__proto__); - assertTrue(Array.isArray(s2)); - assertSame(10, s2.length); - assertSame(undefined, s2[0]); - } - - { - let a = [1,2,3]; - let s3 = new Stack(a, 'ignored arg'); - assertSame(Stack.prototype, s3.__proto__); - assertTrue(Array.isArray(s3)); - assertSame(1, s3.length); - assertSame(a, s3[0]); - } -}()); - - -(function TestMultipleArgsSuper() { - class Stack extends Array { - constructor(x, y, z) { - super(x, y, z); - } - } - { - let s4 = new Stack(1, 2, 3, 4, 5); - assertSame(Stack.prototype, s4.__proto__); - assertTrue(Array.isArray(s4)); - assertSame(3, s4.length); - assertSame(1, s4[0]); - assertSame(2, s4[1]); - assertSame(3, s4[2]); - } - - { - let s5 = new Stack(undefined); - assertSame(Stack.prototype, s5.__proto__); - assertTrue(Array.isArray(s5)); - assertTrue(s5.__proto__ == Stack.prototype); - assertSame(3, s5.length); - assertSame(undefined, s5[0]); - assertSame(undefined, s5[1]); - assertSame(undefined, s5[2]); - } -}()); - - -(function TestArrayConcat() { - class Stack extends Array { } - let s1 = new Stack(1,2,3); - - assertArrayEquals([1,2,3,4,5,6], s1.concat([4,5,6])); - assertArrayEquals([4,5,6,1,2,3], [4,5,6].concat(s1)); -}()); - - -(function TestJSONStringify() { - class Stack extends Array { } - - let s1 = new Stack(1,2,3); - assertSame("[1,2,3]", JSON.stringify(s1)); -}()); diff --git a/implementation-contributed/v8/mjsunit/es6/classes-subclass-builtins.js b/implementation-contributed/v8/mjsunit/es6/classes-subclass-builtins.js deleted file mode 100644 index 23cb6c06df8..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/classes-subclass-builtins.js +++ /dev/null @@ -1,929 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -"use strict"; - - -function checkPrototypeChain(object, constructors) { - var proto = object.__proto__; - for (var i = 0; i < constructors.length; i++) { - assertEquals(constructors[i].prototype, proto); - assertEquals(constructors[i], proto.constructor); - proto = proto.__proto__; - } -} - - -(function() { - class A extends Object { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var s = new A("foo"); - assertTrue(s instanceof Object); - assertTrue(s instanceof A); - assertEquals("object", typeof s); - checkPrototypeChain(s, [A, Object]); - assertEquals(42, s.a); - assertEquals(4.2, s.d); - assertEquals(153, s.o.foo); - - var s1 = new A("bar"); - assertTrue(%HaveSameMap(s, s1)); - - - var n = new A(153); - assertTrue(n instanceof Object); - assertTrue(n instanceof A); - assertEquals("object", typeof s); - checkPrototypeChain(s, [A, Object]); - assertEquals(42, n.a); - assertEquals(4.2, n.d); - assertEquals(153, n.o.foo); - - var n1 = new A(312); - assertTrue(%HaveSameMap(n, n1)); - assertTrue(%HaveSameMap(n, s)); - - - var b = new A(true); - assertTrue(b instanceof Object); - assertTrue(b instanceof A); - assertEquals("object", typeof s); - checkPrototypeChain(s, [A, Object]); - assertEquals(42, b.a); - assertEquals(4.2, b.d); - assertEquals(153, b.o.foo); - - var b1 = new A(true); - assertTrue(%HaveSameMap(b, b1)); - assertTrue(%HaveSameMap(b, s)); - - gc(); -})(); - - -(function() { - class A extends Function { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - var sloppy_func = new A(""); - var strict_func = new A("'use strict';"); - assertNull(sloppy_func.caller); - assertThrows("strict_f.caller"); - assertNull(Object.getOwnPropertyDescriptor(sloppy_func, "caller").value); - assertEquals(undefined, Object.getOwnPropertyDescriptor(strict_func, "caller")); - - function CheckFunction(func) { - assertEquals("function", typeof func); - assertTrue(func instanceof Object); - assertTrue(func instanceof Function); - assertTrue(func instanceof A); - checkPrototypeChain(func, [A, Function, Object]); - assertEquals(42, func.a); - assertEquals(4.2, func.d); - assertEquals(153, func.o.foo); - assertTrue(undefined !== func.prototype); - func.prototype.bar = "func.bar"; - var obj = new func(); - assertTrue(obj instanceof Object); - assertTrue(obj instanceof func); - assertEquals("object", typeof obj); - assertEquals(113, obj.foo); - assertEquals("func.bar", obj.bar); - delete func.prototype.bar; - } - - var source = "this.foo = 113;"; - - // Sloppy function - var sloppy_func = new A(source); - assertTrue(undefined !== sloppy_func.prototype); - CheckFunction(sloppy_func, false); - - var sloppy_func1 = new A("return 312;"); - assertTrue(%HaveSameMap(sloppy_func, sloppy_func1)); - - // Strict function - var strict_func = new A("'use strict'; " + source); - assertFalse(%HaveSameMap(strict_func, sloppy_func)); - CheckFunction(strict_func, false); - - var strict_func1 = new A("'use strict'; return 312;"); - assertTrue(%HaveSameMap(strict_func, strict_func1)); - - gc(); -})(); - - -(function() { - class A extends Boolean { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new A(true); - assertTrue(o instanceof Object); - assertTrue(o instanceof Boolean); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, Boolean]); - assertTrue(o.valueOf()); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A(false); - assertTrue(%HaveSameMap(o, o1)); - - gc(); -})(); - - -function TestErrorSubclassing(error) { - class A extends error { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new A("message"); - assertTrue(o instanceof Object); - assertTrue(o instanceof error); - assertTrue(o instanceof Error); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - if (error == Error) { - checkPrototypeChain(o, [A, Error, Object]); - } else { - checkPrototypeChain(o, [A, error, Error, Object]); - } - assertEquals("message", o.message); - assertEquals(error.name + ": message", o.toString()); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A("achtung!"); - assertTrue(%HaveSameMap(o, o1)); - - gc(); -} - - -(function() { - TestErrorSubclassing(Error); - TestErrorSubclassing(EvalError); - TestErrorSubclassing(RangeError); - TestErrorSubclassing(ReferenceError); - TestErrorSubclassing(SyntaxError); - TestErrorSubclassing(TypeError); - TestErrorSubclassing(URIError); -})(); - - -(function() { - class A extends Number { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new A(153); - assertTrue(o instanceof Object); - assertTrue(o instanceof Number); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, Number, Object]); - assertEquals(153, o.valueOf()); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A(312); - assertTrue(%HaveSameMap(o, o1)); - - gc(); -})(); - - -(function() { - class A extends Date { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new A(1234567890); - assertTrue(o instanceof Object); - assertTrue(o instanceof Date); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, Date, Object]); - assertEquals(1234567890, o.getTime()); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A(2015, 10, 29); - assertEquals(2015, o1.getFullYear()); - assertEquals(10, o1.getMonth()); - assertEquals(29, o1.getDate()); - assertTrue(%HaveSameMap(o, o1)); - - gc(); -})(); - - -(function() { - class A extends String { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new A("foo"); - assertTrue(o instanceof Object); - assertTrue(o instanceof String); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, String, Object]); - - assertEquals("foo", o.valueOf()); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A("bar"); - assertTrue(%HaveSameMap(o, o1)); - - gc(); -})(); - - -(function() { - class A extends RegExp { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new A("o(..)h", "g"); - assertTrue(o instanceof Object); - assertTrue(o instanceof RegExp); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, RegExp, Object]); - assertTrue(o.test("ouch")); - assertArrayEquals(["ouch", "uc"], o.exec("boom! ouch! bam!")); - assertEquals("o(..)h", o.source); - assertTrue(o.global); - assertFalse(o.ignoreCase); - assertFalse(o.multiline); - assertEquals(10, o.lastIndex); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A(7); - assertTrue(%HaveSameMap(o, o1)); - - gc(); -})(); - - -(function TestArraySubclassing() { - class A extends Array { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new Array(13); - assertTrue(o instanceof Object); - assertTrue(o instanceof Array); - assertEquals("object", typeof o); - checkPrototypeChain(o, [Array, Object]); - assertEquals(13, o.length); - - var o = new A(10); - assertTrue(o instanceof Object); - assertTrue(o instanceof Array); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, Array, Object]); - assertEquals(10, o.length); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A(7); - assertTrue(%HaveSameMap(o, o1)); -})(); - - -var TypedArray = Uint8Array.__proto__; - -function TestTypedArraySubclassing(array) { - class A extends array { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new array(13); - assertTrue(o instanceof Object); - assertTrue(o instanceof TypedArray); - assertTrue(o instanceof array); - assertEquals("object", typeof o); - checkPrototypeChain(o, [array, TypedArray, Object]); - assertEquals(13, o.length); - - var o = new A(10); - assertTrue(o instanceof Object); - assertTrue(o instanceof TypedArray); - assertTrue(o instanceof array); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, array, TypedArray, Object]); - assertEquals(10, o.length); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A(7); - assertTrue(%HaveSameMap(o, o1)); -} - - -(function() { - TestTypedArraySubclassing(Int8Array); - TestTypedArraySubclassing(Uint8Array); - TestTypedArraySubclassing(Uint8ClampedArray); - TestTypedArraySubclassing(Int16Array); - TestTypedArraySubclassing(Uint16Array); - TestTypedArraySubclassing(Int32Array); - TestTypedArraySubclassing(Uint32Array); - TestTypedArraySubclassing(Float32Array); - TestTypedArraySubclassing(Float64Array); -})(); - - -function TestMapSetSubclassing(container, is_map) { - var keys = [{name: "banana"}, {name: "cow"}, {name: "orange"}, {name: "chicken"}, {name: "apple"}]; - - class A extends container { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new A(); - assertTrue(o instanceof Object); - assertTrue(o instanceof container); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, container, Object]); - - for (var i = 0; i < keys.length; i++) { - if (is_map) { - o.set(keys[i], (i + 1) * 11); - } else { - o.add(keys[i]); - } - } - o.delete(keys[1]); - o.delete(keys[3]); - - assertTrue(o.has(keys[0])); - assertFalse(o.has(keys[1])); - assertTrue(o.has(keys[2])); - assertFalse(o.has(keys[1])); - assertTrue(o.has(keys[4])); - if (is_map) { - assertEquals(11, o.get(keys[0])); - assertEquals(undefined, o.get(keys[1])); - assertEquals(33, o.get(keys[2])); - assertEquals(undefined, o.get(keys[3])); - assertEquals(55, o.get(keys[4])); - } - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A(); - assertTrue(%HaveSameMap(o, o1)); - - gc(); -} - - -(function() { - TestMapSetSubclassing(Map, true); - TestMapSetSubclassing(WeakMap, true); - TestMapSetSubclassing(Set, false); - TestMapSetSubclassing(WeakSet, false); -})(); - - -(function() { - class A extends ArrayBuffer { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new A(16); - assertTrue(o instanceof Object); - assertTrue(o instanceof ArrayBuffer); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, ArrayBuffer, Object]); - - assertEquals(16, o.byteLength); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A("bar"); - assertTrue(%HaveSameMap(o, o1)); - - - class MyInt32Array extends Int32Array { - constructor(v, name) { - super(v); - this.name = name; - } - } - - class MyUint32Array extends Uint32Array { - constructor(v, name) { - super(v); - this.name = name; - } - } - - var int32view = new MyInt32Array(o, "cats"); - var uint32view = new MyUint32Array(o, "dogs"); - - int32view[0] = -2; - uint32view[1] = 0xffffffff; - - assertEquals("cats", int32view.name); - assertEquals("dogs", uint32view.name); - assertEquals(-2, int32view[0]); - assertEquals(-1, int32view[1]); - assertEquals(0xfffffffe, uint32view[0]); - assertEquals(0xffffffff, uint32view[1]); - - gc(); -})(); - - -(function() { - class A extends DataView { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var buffer = new ArrayBuffer(16); - var o = new A(buffer); - assertTrue(o instanceof Object); - assertTrue(o instanceof DataView); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, DataView, Object]); - - o.setUint32(0, 0xcafebabe, false); - assertEquals(0xcafebabe, o.getUint32(0, false)); - assertEquals(0xbebafeca, o.getUint32(0, true)); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - - var o1 = new A(buffer); - assertTrue(%HaveSameMap(o, o1)); - - gc(); -})(); - - -(function() { - var GeneratorFunction = (function*() {}).constructor; - class A extends GeneratorFunction { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - var sloppy_func = new A("yield 153;"); - var strict_func = new A("'use strict'; yield 153;"); - // Unfortunately the difference is not observable from outside. - assertThrows("sloppy_func.caller"); - assertThrows("strict_f.caller"); - assertEquals(undefined, Object.getOwnPropertyDescriptor(sloppy_func, "caller")); - assertEquals(undefined, Object.getOwnPropertyDescriptor(strict_func, "caller")); - - function CheckFunction(func) { - assertEquals("function", typeof func); - assertTrue(func instanceof Object); - assertTrue(func instanceof Function); - assertTrue(func instanceof GeneratorFunction); - assertTrue(func instanceof A); - checkPrototypeChain(func, [A, GeneratorFunction, Function, Object]); - - assertEquals(42, func.a); - assertEquals(4.2, func.d); - assertEquals(153, func.o.foo); - - assertTrue(undefined !== func.prototype); - func.prototype.bar = "func.bar"; - var obj = func(); // Generator object. - assertTrue(obj instanceof Object); - assertTrue(obj instanceof func); - assertEquals("object", typeof obj); - assertEquals("func.bar", obj.bar); - delete func.prototype.bar; - - assertPropertiesEqual({done: false, value: 1}, obj.next()); - assertPropertiesEqual({done: false, value: 1}, obj.next()); - assertPropertiesEqual({done: false, value: 2}, obj.next()); - assertPropertiesEqual({done: false, value: 3}, obj.next()); - assertPropertiesEqual({done: false, value: 5}, obj.next()); - assertPropertiesEqual({done: false, value: 8}, obj.next()); - assertPropertiesEqual({done: true, value: undefined}, obj.next()); - } - - var source = "yield 1; yield 1; yield 2; yield 3; yield 5; yield 8;"; - - // Sloppy generator function - var sloppy_func = new A(source); - assertTrue(undefined !== sloppy_func.prototype); - CheckFunction(sloppy_func, false); - - var sloppy_func1 = new A("yield 312;"); - assertTrue(%HaveSameMap(sloppy_func, sloppy_func1)); - - // Strict generator function - var strict_func = new A("'use strict'; " + source); - assertFalse(%HaveSameMap(strict_func, sloppy_func)); - CheckFunction(strict_func, false); - - var strict_func1 = new A("'use strict'; yield 312;"); - assertTrue(%HaveSameMap(strict_func, strict_func1)); - - gc(); -})(); - - -(function() { - class A extends Promise { - constructor(...args) { - assertFalse(new.target === undefined); - super(...args); - this.a = 42; - this.d = 4.2; - this.o = {foo:153}; - } - } - - var o = new A(function(resolve, reject) { - resolve("ok"); - }); - assertTrue(o instanceof Object); - assertTrue(o instanceof Promise); - assertTrue(o instanceof A); - assertEquals("object", typeof o); - checkPrototypeChain(o, [A, Promise, Object]); - assertEquals(42, o.a); - assertEquals(4.2, o.d); - assertEquals(153, o.o.foo); - o.then( - function(val) { assertEquals("ok", val); }, - function(reason) { assertUnreachable(); }) - .catch(function(reason) { %AbortJS("catch handler called: " + reason); }); - - var o1 = new A(function(resolve, reject) { - reject("fail"); - }); - o1.then( - function(val) { assertUnreachable(); }, - function(reason) { assertEquals("fail", reason); }) - .catch(function(reason) { %AbortJS("catch handler called: " + reason); }); - assertTrue(%HaveSameMap(o, o1)); - - gc(); -})(); - - -(function() { - class A extends Boolean { - constructor() { - assertFalse(new.target === undefined); - super(true); - this.a00 = 0 - this.a01 = 0 - this.a02 = 0 - this.a03 = 0 - this.a04 = 0 - this.a05 = 0 - this.a06 = 0 - this.a07 = 0 - this.a08 = 0 - this.a09 = 0 - this.a10 = 0 - this.a11 = 0 - this.a12 = 0 - this.a13 = 0 - this.a14 = 0 - this.a15 = 0 - this.a16 = 0 - this.a17 = 0 - this.a18 = 0 - this.a19 = 0 - } - } - - class B extends A { - constructor() { - assertFalse(new.target === undefined); - super(); - this.b00 = 0 - this.b01 = 0 - this.b02 = 0 - this.b03 = 0 - this.b04 = 0 - this.b05 = 0 - this.b06 = 0 - this.b07 = 0 - this.b08 = 0 - this.b09 = 0 - this.b10 = 0 - this.b11 = 0 - this.b12 = 0 - this.b13 = 0 - this.b14 = 0 - this.b15 = 0 - this.b16 = 0 - this.b17 = 0 - this.b18 = 0 - this.b19 = 0 - } - } - - class C extends B { - constructor() { - assertFalse(new.target === undefined); - super(); - this.c00 = 0 - this.c01 = 0 - this.c02 = 0 - this.c03 = 0 - this.c04 = 0 - this.c05 = 0 - this.c06 = 0 - this.c07 = 0 - this.c08 = 0 - this.c09 = 0 - this.c10 = 0 - this.c11 = 0 - this.c12 = 0 - this.c13 = 0 - this.c14 = 0 - this.c15 = 0 - this.c16 = 0 - this.c17 = 0 - this.c18 = 0 - this.c19 = 0 - } - } - - var o = new C(); - assertTrue(o instanceof Object); - assertTrue(o instanceof Boolean); - assertTrue(o instanceof A); - assertTrue(o instanceof B); - assertTrue(o instanceof C); - assertEquals("object", typeof o); - checkPrototypeChain(o, [C, B, A, Boolean, Object]); - - gc(); -})(); - - -(function() { - assertThrows("class A extends undefined {}"); - assertThrows("class B extends NaN {}"); - assertThrows("class C extends Infinity {}"); -})(); - - -(function() { - class A extends null {} - assertThrows("new A"); -})(); - - -(function() { - class A extends Symbol {} - assertThrows("new A"); -})(); - - -(function() { - function f() {} - - var p = f.prototype; - var p2 = {}; - var o = Reflect.construct( - Number, [{valueOf() { f.prototype=p2; return 10; }}], f); - - assertTrue(o.__proto__ === f.prototype); - assertTrue(p2 === f.prototype); - assertFalse(p === o.__proto__); - assertEquals(10, Number.prototype.valueOf.call(o)); -})(); - - -(function() { - function f() {} - - var p = f.prototype; - var p2 = {}; - var o = Reflect.construct( - String, [{toString() { f.prototype=p2; return "biep"; }}], f); - - assertTrue(o.__proto__ === f.prototype); - assertTrue(p2 === o.__proto__); - assertFalse(p === o.__proto__); - assertEquals("biep", String.prototype.toString.call(o)); -})(); - - -(function() { - function f() {} - - var p = f.prototype; - var p2 = {}; - var o = Reflect.construct( - Date, [{valueOf() { f.prototype=p2; return 1447836899614; }}], f); - - assertTrue(o.__proto__ === f.prototype); - assertTrue(p2 === f.prototype); - assertFalse(p === o.__proto__); - assertEquals(new Date(1447836899614).toString(), - Date.prototype.toString.call(o)); -})(); - - -(function() { - function f() {} - - var p = f.prototype; - var p2 = {}; - var o = Reflect.construct( - Date, [2015, {valueOf() { f.prototype=p2; return 10; }}], f); - - assertTrue(o.__proto__ === f.prototype); - assertTrue(p2 === f.prototype); - assertFalse(p === o.__proto__); - assertEquals(new Date(2015, 10).getYear(), Date.prototype.getYear.call(o)); - assertEquals(new Date(2015, 10).getMonth(), Date.prototype.getMonth.call(o)); -})(); - - -(function() { - function f() {} - - var p = f.prototype; - var p2 = {}; - var o = Reflect.construct( - DataView, [new ArrayBuffer(100), - {valueOf(){ f.prototype=p2; return 5; }}], f); - - var byteOffset = Object.getOwnPropertyDescriptor( - DataView.prototype, "byteOffset").get; - var byteLength = Object.getOwnPropertyDescriptor( - DataView.prototype, "byteLength").get; - - assertTrue(o.__proto__ === f.prototype); - assertTrue(p2 === f.prototype); - assertFalse(p === o.__proto__); - assertEquals(5, byteOffset.call(o)); - assertEquals(95, byteLength.call(o)); -})(); - - -(function() { - function f() {} - - var p = f.prototype; - var p2 = {}; - var o = Reflect.construct( - DataView, [new ArrayBuffer(100), - 30, {valueOf() { f.prototype=p2; return 5; }}], f); - - var byteOffset = Object.getOwnPropertyDescriptor( - DataView.prototype, "byteOffset").get; - var byteLength = Object.getOwnPropertyDescriptor( - DataView.prototype, "byteLength").get; - - assertTrue(o.__proto__ === f.prototype); - assertTrue(p2 === f.prototype); - assertFalse(p === o.__proto__); - assertEquals(30, byteOffset.call(o)); - assertEquals(5, byteLength.call(o)); -})(); - - -(function() { - function f() {} - - var p = f.prototype; - var p2 = {}; - var p3 = {}; - - var log = []; - - var pattern = {toString() { - log.push("tostring"); - f.prototype = p3; return "biep" }}; - - Object.defineProperty(pattern, Symbol.match, { - get() { log.push("match"); f.prototype = p2; return false; }}); - - var o = Reflect.construct(RegExp, [pattern], f); - assertEquals(["match", "tostring"], log); - // TODO(littledan): Is the RegExp constructor correct to create - // the internal slots and do these type checks this way? - assertThrows(() => Object.getOwnPropertyDescriptor(RegExp.prototype, - 'source').get(o), - TypeError); - assertEquals("/undefined/undefined", RegExp.prototype.toString.call(o)); - assertTrue(o.__proto__ === p2); - assertTrue(f.prototype === p3); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/classes-super.js b/implementation-contributed/v8/mjsunit/es6/classes-super.js deleted file mode 100644 index 7bdf4ba86c1..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/classes-super.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -class Test { - m() { - super.length = 10; - } -} - -var array = []; -Test.prototype.m.call(array); -assertEquals(10, array.length); diff --git a/implementation-contributed/v8/mjsunit/es6/classes.js b/implementation-contributed/v8/mjsunit/es6/classes.js deleted file mode 100644 index 27121ec0071..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/classes.js +++ /dev/null @@ -1,1286 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestBasics() { - var C = class C {} - assertEquals(typeof C, 'function'); - assertEquals(C.__proto__, Function.prototype); - assertEquals(Object.prototype, Object.getPrototypeOf(C.prototype)); - assertEquals(Function.prototype, Object.getPrototypeOf(C)); - assertEquals('C', C.name); - - class D {} - assertEquals(typeof D, 'function'); - assertEquals(D.__proto__, Function.prototype); - assertEquals(Object.prototype, Object.getPrototypeOf(D.prototype)); - assertEquals(Function.prototype, Object.getPrototypeOf(D)); - assertEquals('D', D.name); - - class D2 { constructor() {} } - assertEquals('D2', D2.name); - - var E = class {} - assertEquals('E', E.name); - - var F = class { constructor() {} }; - assertEquals('F', F.name); - - var literal = { E: class {} }; - assertEquals('E', literal.E.name); - - literal = { E: class F {} }; - assertEquals('F', literal.E.name); - - literal = { __proto__: class {} }; - assertEquals('', literal.__proto__.name); - assertEquals( - undefined, Object.getOwnPropertyDescriptor(literal.__proto__, 'name')); - - literal = { __proto__: class F {} }; - assertEquals('F', literal.__proto__.name); - assertNotEquals( - undefined, Object.getOwnPropertyDescriptor(literal.__proto__, 'name')); - - class G {}; - literal = { __proto__: G }; - assertEquals('G', literal.__proto__.name); - - var H = class { static name() { return 'A'; } }; - literal = { __proto__ : H }; - assertEquals('A', literal.__proto__.name()); - - literal = { - __proto__: class { - static name() { return 'A'; } - } - }; - assertEquals('A', literal.__proto__.name()); -})(); - - -(function TestBasicsExtends() { - class C extends null {} - assertEquals(typeof C, 'function'); - assertEquals(C.__proto__, Function.prototype); - assertEquals(null, Object.getPrototypeOf(C.prototype)); - - class D extends C {} - assertEquals(typeof D, 'function'); - assertEquals(D.__proto__, C); - assertEquals(C.prototype, Object.getPrototypeOf(D.prototype)); -})(); - - -(function TestSideEffectInExtends() { - var calls = 0; - class C {} - class D extends (calls++, C) {} - assertEquals(1, calls); - assertEquals(typeof D, 'function'); - assertEquals(D.__proto__, C); - assertEquals(C.prototype, Object.getPrototypeOf(D.prototype)); -})(); - - -(function TestInvalidExtends() { - assertThrows(function() { - class C extends 42 {} - }, TypeError); - - assertThrows(function() { - // Function but its .prototype is not null or a function. - class C extends Math.abs {} - }, TypeError); - - assertThrows(function() { - Math.abs.prototype = 42; - class C extends Math.abs {} - }, TypeError); - delete Math.abs.prototype; - - assertThrows(function() { - function* g() {} - class C extends g {} - }, TypeError); -})(); - - -(function TestConstructorProperty() { - class C {} - assertEquals(C, C.prototype.constructor); - var descr = Object.getOwnPropertyDescriptor(C.prototype, 'constructor'); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertTrue(descr.writable); -})(); - - -(function TestPrototypeProperty() { - class C {} - var descr = Object.getOwnPropertyDescriptor(C, 'prototype'); - assertFalse(descr.configurable); - assertFalse(descr.enumerable); - assertFalse(descr.writable); -})(); - - -(function TestConstructor() { - var count = 0; - class C { - constructor() { - assertEquals(Object.getPrototypeOf(this), C.prototype); - count++; - } - } - assertEquals(C, C.prototype.constructor); - var descr = Object.getOwnPropertyDescriptor(C.prototype, 'constructor'); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertTrue(descr.writable); - - var c = new C(); - assertEquals(1, count); - assertEquals(Object.getPrototypeOf(c), C.prototype); -})(); - - -(function TestImplicitConstructor() { - class C {} - var c = new C(); - assertEquals(Object.getPrototypeOf(c), C.prototype); -})(); - - -(function TestConstructorStrict() { - class C { - constructor() { - assertThrows(function() { - nonExistingBinding = 42; - }, ReferenceError); - } - } - new C(); -})(); - - -(function TestSuperInConstructor() { - var calls = 0; - class B {} - B.prototype.x = 42; - - class C extends B { - constructor() { - super(); - calls++; - assertEquals(42, super.x); - } - } - - new C; - assertEquals(1, calls); -})(); - - -(function TestStrictMode() { - class C {} - - with ({a: 1}) { - assertEquals(1, a); - } - - assertThrows('class C extends function B() { with ({}); return B; }() {}', - SyntaxError); - - var D = class extends function() { - this.args = arguments; - } {}; - assertThrows(function() { - Object.getPrototypeOf(D).arguments; - }, TypeError); - var e = new D(); - assertThrows(() => e.args.callee, TypeError); - assertEquals(undefined, Object.getOwnPropertyDescriptor(e.args, 'caller')); - assertFalse('caller' in e.args); -})(); - - -(function TestToString() { - class C {} - assertEquals('class C {}', C.toString()); - - class D { constructor() { 42; } } - assertEquals('class D { constructor() { 42; } }', D.toString()); - - class E { x() { 42; } } - assertEquals('class E { x() { 42; } }', E.toString()); -})(); - - -function assertMethodDescriptor(object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertTrue(descr.writable); - assertEquals('function', typeof descr.value); - assertFalse('prototype' in descr.value); - assertEquals(name, descr.value.name); -} - - -function assertGetterDescriptor(object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertEquals('function', typeof descr.get); - assertFalse('prototype' in descr.get); - assertEquals(undefined, descr.set); - assertEquals("get " + name, descr.get.name); -} - - -function assertSetterDescriptor(object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertEquals(undefined, descr.get); - assertEquals('function', typeof descr.set); - assertFalse('prototype' in descr.set); - assertEquals("set " + name, descr.set.name); -} - - -function assertAccessorDescriptor(object, name) { - var descr = Object.getOwnPropertyDescriptor(object, name); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertEquals('function', typeof descr.get); - assertEquals('function', typeof descr.set); - assertFalse('prototype' in descr.get); - assertFalse('prototype' in descr.set); - assertEquals("get " + name, descr.get.name); - assertEquals("set " + name, descr.set.name); -} - - -(function TestMethods() { - class C { - method() { return 1; } - static staticMethod() { return 2; } - method2() { return 3; } - static staticMethod2() { return 4; } - } - - assertMethodDescriptor(C.prototype, 'method'); - assertMethodDescriptor(C.prototype, 'method2'); - assertMethodDescriptor(C, 'staticMethod'); - assertMethodDescriptor(C, 'staticMethod2'); - - assertEquals(1, new C().method()); - assertEquals(2, C.staticMethod()); - assertEquals(3, new C().method2()); - assertEquals(4, C.staticMethod2()); -})(); - - -(function TestGetters() { - class C { - get x() { return 1; } - static get staticX() { return 2; } - get y() { return 3; } - static get staticY() { return 4; } - } - - assertGetterDescriptor(C.prototype, 'x'); - assertGetterDescriptor(C.prototype, 'y'); - assertGetterDescriptor(C, 'staticX'); - assertGetterDescriptor(C, 'staticY'); - - assertEquals(1, new C().x); - assertEquals(2, C.staticX); - assertEquals(3, new C().y); - assertEquals(4, C.staticY); -})(); - - - -(function TestSetters() { - var x, staticX, y, staticY; - class C { - set x(v) { x = v; } - static set staticX(v) { staticX = v; } - set y(v) { y = v; } - static set staticY(v) { staticY = v; } - } - - assertSetterDescriptor(C.prototype, 'x'); - assertSetterDescriptor(C.prototype, 'y'); - assertSetterDescriptor(C, 'staticX'); - assertSetterDescriptor(C, 'staticY'); - - assertEquals(1, new C().x = 1); - assertEquals(1, x); - assertEquals(2, C.staticX = 2); - assertEquals(2, staticX); - assertEquals(3, new C().y = 3); - assertEquals(3, y); - assertEquals(4, C.staticY = 4); - assertEquals(4, staticY); -})(); - - -(function TestSideEffectsInPropertyDefine() { - function B() {} - B.prototype = { - constructor: B, - set m(v) { - throw Error(); - } - }; - - class C extends B { - m() { return 1; } - } - - assertEquals(1, new C().m()); -})(); - - -(function TestAccessors() { - class C { - constructor(x) { - this._x = x; - } - - get x() { return this._x; } - set x(v) { this._x = v; } - - static get staticX() { return this._x; } - static set staticX(v) { this._x = v; } - } - - assertAccessorDescriptor(C.prototype, 'x'); - assertAccessorDescriptor(C, 'staticX'); - - var c = new C(1); - c._x = 1; - assertEquals(1, c.x); - c.x = 2; - assertEquals(2, c._x); - - C._x = 3; - assertEquals(3, C.staticX); - C._x = 4; - assertEquals(4, C.staticX ); -})(); - - -(function TestProto() { - class C { - __proto__() { return 1; } - } - assertMethodDescriptor(C.prototype, '__proto__'); - assertEquals(1, new C().__proto__()); -})(); - - -(function TestProtoStatic() { - class C { - static __proto__() { return 1; } - } - assertMethodDescriptor(C, '__proto__'); - assertEquals(1, C.__proto__()); -})(); - - -(function TestProtoAccessor() { - class C { - get __proto__() { return this._p; } - set __proto__(v) { this._p = v; } - } - assertAccessorDescriptor(C.prototype, '__proto__'); - var c = new C(); - c._p = 1; - assertEquals(1, c.__proto__); - c.__proto__ = 2; - assertEquals(2, c.__proto__); -})(); - - -(function TestStaticProtoAccessor() { - class C { - static get __proto__() { return this._p; } - static set __proto__(v) { this._p = v; } - } - assertAccessorDescriptor(C, '__proto__'); - C._p = 1; - assertEquals(1, C.__proto__); - C.__proto__ = 2; - assertEquals(2, C.__proto__); -})(); - - -(function TestSettersOnProto() { - function Base() {} - Base.prototype = { - set constructor(_) { - assertUnreachable(); - }, - set m(_) { - assertUnreachable(); - } - }; - Object.defineProperty(Base, 'staticM', { - set: function() { - assertUnreachable(); - } - }); - - class C extends Base { - m() { - return 1; - } - static staticM() { - return 2; - } - } - - assertEquals(1, new C().m()); - assertEquals(2, C.staticM()); -})(); - - -(function TestConstructableButNoPrototype() { - var Base = function() {}.bind(); - assertThrows(function() { - class C extends Base {} - }, TypeError); -})(); - - -(function TestPrototypeGetter() { - var calls = 0; - var Base = function() {}.bind(); - Object.defineProperty(Base, 'prototype', { - get: function() { - calls++; - return null; - }, - configurable: true - }); - class C extends Base {} - assertEquals(1, calls); - - calls = 0; - Object.defineProperty(Base, 'prototype', { - get: function() { - calls++; - return 42; - }, - configurable: true - }); - assertThrows(function() { - class C extends Base {} - }, TypeError); - assertEquals(1, calls); -})(); - - -(function TestPrototypeSetter() { - var Base = function() {}.bind(); - Object.defineProperty(Base, 'prototype', { - set: function() { - assertUnreachable(); - } - }); - assertThrows(function() { - class C extends Base {} - }, TypeError); -})(); - - -(function TestSuperInMethods() { - class B { - method() { - return 1; - } - get x() { - return 2; - } - } - class C extends B { - method() { - assertEquals(2, super.x); - return super.method(); - } - } - assertEquals(1, new C().method()); -})(); - - -(function TestSuperInGetter() { - class B { - method() { - return 1; - } - get x() { - return 2; - } - } - class C extends B { - get y() { - assertEquals(2, super.x); - return super.method(); - } - } - assertEquals(1, new C().y); -})(); - - -(function TestSuperInSetter() { - class B { - method() { - return 1; - } - get x() { - return 2; - } - } - class C extends B { - set y(v) { - assertEquals(3, v); - assertEquals(2, super.x); - assertEquals(1, super.method()); - } - } - assertEquals(3, new C().y = 3); -})(); - - -(function TestSuperInStaticMethods() { - class B { - static method() { - return 1; - } - static get x() { - return 2; - } - } - class C extends B { - static method() { - assertEquals(2, super.x); - return super.method(); - } - } - assertEquals(1, C.method()); -})(); - - -(function TestSuperInStaticGetter() { - class B { - static method() { - return 1; - } - static get x() { - return 2; - } - } - class C extends B { - static get x() { - assertEquals(2, super.x); - return super.method(); - } - } - assertEquals(1, C.x); -})(); - - -(function TestSuperInStaticSetter() { - class B { - static method() { - return 1; - } - static get x() { - return 2; - } - } - class C extends B { - static set x(v) { - assertEquals(3, v); - assertEquals(2, super.x); - assertEquals(1, super.method()); - } - } - assertEquals(3, C.x = 3); -})(); - - -(function TestNumericPropertyNames() { - class B { - 1() { return 1; } - get 2() { return 2; } - set 3(_) {} - - static 4() { return 4; } - static get 5() { return 5; } - static set 6(_) {} - - 2147483649() { return 2147483649; } - get 2147483650() { return 2147483650; } - set 2147483651(_) {} - - static 2147483652() { return 2147483652; } - static get 2147483653() { return 2147483653; } - static set 2147483654(_) {} - - 4294967294() { return 4294967294; } - 4294967295() { return 4294967295; } - static 4294967294() { return 4294967294; } - static 4294967295() { return 4294967295; } - } - - assertMethodDescriptor(B.prototype, '1'); - assertGetterDescriptor(B.prototype, '2'); - assertSetterDescriptor(B.prototype, '3'); - assertMethodDescriptor(B.prototype, '2147483649'); - assertGetterDescriptor(B.prototype, '2147483650'); - assertSetterDescriptor(B.prototype, '2147483651'); - assertMethodDescriptor(B.prototype, '4294967294'); - assertMethodDescriptor(B.prototype, '4294967295'); - - assertMethodDescriptor(B, '4'); - assertGetterDescriptor(B, '5'); - assertSetterDescriptor(B, '6'); - assertMethodDescriptor(B, '2147483652'); - assertGetterDescriptor(B, '2147483653'); - assertSetterDescriptor(B, '2147483654'); - assertMethodDescriptor(B, '4294967294'); - assertMethodDescriptor(B, '4294967295'); - - class C extends B { - 1() { return super[1](); } - get 2() { return super[2]; } - - static 4() { return super[4](); } - static get 5() { return super[5]; } - - 2147483649() { return super[2147483649](); } - get 2147483650() { return super[2147483650]; } - - static 2147483652() { return super[2147483652](); } - static get 2147483653() { return super[2147483653]; } - - } - - assertEquals(1, new C()[1]()); - assertEquals(2, new C()[2]); - assertEquals(2147483649, new C()[2147483649]()); - assertEquals(2147483650, new C()[2147483650]); - assertEquals(4, C[4]()); - assertEquals(5, C[5]); - assertEquals(2147483652, C[2147483652]()); - assertEquals(2147483653, C[2147483653]); -})(); - - -(function TestDefaultConstructorNoCrash() { - // Regression test for https://code.google.com/p/v8/issues/detail?id=3661 - class C {} - assertThrows(function () {C();}, TypeError); - assertThrows(function () {C(1);}, TypeError); - assertTrue(new C() instanceof C); - assertTrue(new C(1) instanceof C); -})(); - - -(function TestConstructorCall(){ - var realmIndex = Realm.create(); - var otherTypeError = Realm.eval(realmIndex, "TypeError"); - var A = Realm.eval(realmIndex, '"use strict"; class A {}; A'); - var instance = new A(); - var constructor = instance.constructor; - var otherTypeError = Realm.eval(realmIndex, 'TypeError'); - if (otherTypeError === TypeError) { - throw Error('Should not happen!'); - } - - // ES6 9.2.1[[Call]] throws a TypeError in the caller context/Realm when the - // called function is a classConstructor - assertThrows(function() { Realm.eval(realmIndex, "A()") }, otherTypeError); - assertThrows(function() { instance.constructor() }, TypeError); - assertThrows(function() { A() }, TypeError); - - // ES6 9.3.1 call() first activates the callee context before invoking the - // method. The TypeError from the constructor is thus thrown in the other - // Realm. - assertThrows(function() { Realm.eval(realmIndex, "A.call()") }, - otherTypeError); - assertThrows(function() { constructor.call() }, otherTypeError); - assertThrows(function() { A.call() }, otherTypeError); -})(); - - -(function TestConstructorCallOptimized() { - class A { }; - - function invoke_constructor() { A() } - function call_constructor() { A.call() } - function apply_constructor() { A.apply() } - - for (var i=0; i<3; i++) { - assertThrows(invoke_constructor); - assertThrows(call_constructor); - assertThrows(apply_constructor); - } - // Make sure we still check for class constructors when calling optimized - // code. - %OptimizeFunctionOnNextCall(invoke_constructor); - assertThrows(invoke_constructor); - %OptimizeFunctionOnNextCall(call_constructor); - assertThrows(call_constructor); - %OptimizeFunctionOnNextCall(apply_constructor); - assertThrows(apply_constructor); -})(); - - -(function TestDefaultConstructor() { - var calls = 0; - class Base { - constructor() { - calls++; - } - } - class Derived extends Base {} - var object = new Derived; - assertEquals(1, calls); - - calls = 0; - assertThrows(function() { Derived(); }, TypeError); - assertEquals(0, calls); -})(); - - -(function TestDefaultConstructorArguments() { - var args, self; - class Base { - constructor() { - self = this; - args = arguments; - } - } - class Derived extends Base {} - - new Derived; - assertEquals(0, args.length); - - new Derived(0, 1, 2); - assertEquals(3, args.length); - assertTrue(self instanceof Derived); - - var arr = new Array(100); - var obj = {}; - assertThrows(function() {Derived.apply(obj, arr);}, TypeError); -})(); - - -(function TestDefaultConstructorArguments2() { - var args; - class Base { - constructor(x, y) { - args = arguments; - } - } - class Derived extends Base {} - - new Derived; - assertEquals(0, args.length); - - new Derived(1); - assertEquals(1, args.length); - assertEquals(1, args[0]); - - new Derived(1, 2, 3); - assertEquals(3, args.length); - assertEquals(1, args[0]); - assertEquals(2, args[1]); - assertEquals(3, args[2]); -})(); - - -(function TestNameBindingConst() { - assertThrows('class C { constructor() { C = 42; } }; new C();', TypeError); - assertThrows('new (class C { constructor() { C = 42; } })', TypeError); - assertThrows('class C { m() { C = 42; } }; new C().m()', TypeError); - assertThrows('new (class C { m() { C = 42; } }).m()', TypeError); - assertThrows('class C { get x() { C = 42; } }; new C().x', TypeError); - assertThrows('(new (class C { get x() { C = 42; } })).x', TypeError); - assertThrows('class C { set x(_) { C = 42; } }; new C().x = 15;', TypeError); - assertThrows('(new (class C { set x(_) { C = 42; } })).x = 15;', TypeError); -})(); - - -(function TestNameBinding() { - var C2; - class C { - constructor() { - C2 = C; - } - m() { - C2 = C; - } - get x() { - C2 = C; - } - set x(_) { - C2 = C; - } - } - new C(); - assertEquals(C, C2); - - C2 = undefined; - new C().m(); - assertEquals(C, C2); - - C2 = undefined; - new C().x; - assertEquals(C, C2); - - C2 = undefined; - new C().x = 1; - assertEquals(C, C2); -})(); - - -(function TestNameBindingExpression() { - var C3; - var C = class C2 { - constructor() { - assertEquals(C2, C); - C3 = C2; - } - m() { - assertEquals(C2, C); - C3 = C2; - } - get x() { - assertEquals(C2, C); - C3 = C2; - } - set x(_) { - assertEquals(C2, C); - C3 = C2; - } - } - new C(); - assertEquals(C, C3); - - C3 = undefined; - new C().m(); - assertEquals(C, C3); - - C3 = undefined; - new C().x; - assertEquals(C, C3); - - C3 = undefined; - new C().x = 1; - assertEquals(C, C3); -})(); - - -(function TestNameBindingInExtendsExpression() { - assertThrows(function() { - class x extends x {} - }, ReferenceError); - - assertThrows(function() { - (class x extends x {}); - }, ReferenceError); - - assertThrows(function() { - var x = (class x extends x {}); - }, ReferenceError); -})(); - - -(function TestThisAccessRestriction() { - class Base {} - (function() { - class C extends Base { - constructor() { - var y; - super(); - } - }; new C(); - }()); - assertThrows(function() { - class C extends Base { - constructor() { - super(this.x); - } - }; new C(); - }, ReferenceError); - assertThrows(function() { - class C extends Base { - constructor() { - super(this); - } - }; new C(); - }, ReferenceError); - assertThrows(function() { - class C extends Base { - constructor() { - super.method(); - super(this); - } - }; new C(); - }, ReferenceError); - assertThrows(function() { - class C extends Base { - constructor() { - super(super.method()); - } - }; new C(); - }, ReferenceError); - assertThrows(function() { - class C extends Base { - constructor() { - super(super()); - } - }; new C(); - }, ReferenceError); - assertThrows(function() { - class C extends Base { - constructor() { - super(1, 2, Object.getPrototypeOf(this)); - } - }; new C(); - }, ReferenceError); - (function() { - class C extends Base { - constructor() { - { super(1, 2); } - } - }; new C(); - }()); - (function() { - class C extends Base { - constructor() { - if (1) super(); - } - }; new C(); - }()); - - class C1 extends Object { - constructor() { - 'use strict'; - super(); - } - }; - new C1(); - - class C2 extends Object { - constructor() { - ; 'use strict';;;;; - super(); - } - }; - new C2(); - - class C3 extends Object { - constructor() { - ; 'use strict';;;;; - // This is a comment. - super(); - } - }; - new C3(); -}()); - - -function testClassRestrictedProperties(C) { - assertEquals(false, C.hasOwnProperty("arguments")); - assertThrows(function() { return C.arguments; }, TypeError); - assertThrows(function() { C.arguments = {}; }, TypeError); - - assertEquals(false, C.hasOwnProperty("caller")); - assertThrows(function() { return C.caller; }, TypeError); - assertThrows(function() { C.caller = {}; }, TypeError); - - assertEquals(false, (new C).method.hasOwnProperty("arguments")); - assertThrows(function() { return new C().method.arguments; }, TypeError); - assertThrows(function() { new C().method.arguments = {}; }, TypeError); - - assertEquals(false, (new C).method.hasOwnProperty("caller")); - assertThrows(function() { return new C().method.caller; }, TypeError); - assertThrows(function() { new C().method.caller = {}; }, TypeError); -} - - -(function testRestrictedPropertiesStrict() { - "use strict"; - class ClassWithDefaultConstructor { - method() {} - } - class Class { - constructor() {} - method() {} - } - class DerivedClassWithDefaultConstructor extends Class {} - class DerivedClass extends Class { constructor() { super(); } } - - testClassRestrictedProperties(ClassWithDefaultConstructor); - testClassRestrictedProperties(Class); - testClassRestrictedProperties(DerivedClassWithDefaultConstructor); - testClassRestrictedProperties(DerivedClass); - testClassRestrictedProperties(class { method() {} }); - testClassRestrictedProperties(class { constructor() {} method() {} }); - testClassRestrictedProperties(class extends Class { }); - testClassRestrictedProperties( - class extends Class { constructor() { super(); } }); -})(); - - -(function testRestrictedPropertiesSloppy() { - class ClassWithDefaultConstructor { - method() {} - } - class Class { - constructor() {} - method() {} - } - class DerivedClassWithDefaultConstructor extends Class {} - class DerivedClass extends Class { constructor() { super(); } } - - testClassRestrictedProperties(ClassWithDefaultConstructor); - testClassRestrictedProperties(Class); - testClassRestrictedProperties(DerivedClassWithDefaultConstructor); - testClassRestrictedProperties(DerivedClass); - testClassRestrictedProperties(class { method() {} }); - testClassRestrictedProperties(class { constructor() {} method() {} }); - testClassRestrictedProperties(class extends Class { }); - testClassRestrictedProperties( - class extends Class { constructor() { super(); } }); -})(); - - -(function testReturnFromClassLiteral() { - - function usingYieldInBody() { - function* foo() { - class C { - [yield]() {} - } - } - var g = foo(); - g.next(); - return g.return(42).value; - } - assertEquals(42, usingYieldInBody()); - - function usingYieldInExtends() { - function* foo() { - class C extends (yield) {}; - } - var g = foo(); - g.next(); - return g.return(42).value; - } - assertEquals(42, usingYieldInExtends()); - -})(); - - -(function testLargeClassesMethods() { - const kLimit = 2000; - let evalString = "(function(i) { " + - "let clazz = class { " + - " constructor(i) { this.value = i; } "; - for (let i = 0; i < 2000; i++) { - evalString += "property"+i+"() { return "+i+"; }; " - } - evalString += "};" + - " return new clazz(i); })"; - - let fn = eval(evalString); - assertEquals(fn(1).value, 1); - assertEquals(fn(2).value, 2); - assertEquals(fn(3).value, 3); - %OptimizeFunctionOnNextCall(fn); - assertEquals(fn(4).value, 4); - - let instance = fn(1); - assertEquals(Object.getOwnPropertyNames(instance).length, 1); - assertEquals(Object.getOwnPropertyNames(instance.__proto__).length, - kLimit + 1); - - // Call all instance functions. - for (let i = 0; i < kLimit; i++) { - const key = "property" + i; - assertEquals(instance[key](), i); - } -})(); - - -(function testLargeClassesStaticMethods() { - const kLimit = 2000; - let evalString = "(function(i) { " + - "let clazz = class { " + - " constructor(i) { this.value = i; } "; - for (let i = 0; i < kLimit; i++) { - evalString += "static property"+i+"() { return "+i+" }; " - } - evalString += "};" + - " return new clazz(i); })"; - - let fn = eval(evalString); - - assertEquals(fn(1).value, 1); - assertEquals(fn(2).value, 2); - assertEquals(fn(3).value, 3); - %OptimizeFunctionOnNextCall(fn); - assertEquals(fn(4).value, 4); - - let instance = fn(1); - assertEquals(Object.getOwnPropertyNames(instance).length, 1); - assertEquals(instance.value, 1); - instance.value = 10; - assertEquals(instance.value, 10); - - // kLimit + nof default properties (length, prototype, name). - assertEquals(Object.getOwnPropertyNames(instance.constructor).length, - kLimit + 3); - - // Call all static properties. - for (let i = 0; i < kLimit; i++) { - const key = "property" + i; - assertEquals(instance.constructor[key](), i); - } -})(); - - -(function testLargeClassesProperties(){ - const kLimit = 2000; - let evalString = "(function(i) { " + - "let clazz = class { " + - " constructor(i) { this.value = i;"; - for (let i = 0; i < kLimit ; i++) { - evalString += "this.property"+i +" = "+i+"; " - } - evalString += "}};" + - " return (new clazz(i)); })"; - - let fn = eval(evalString); - assertEquals(fn(1).value, 1); - assertEquals(fn(2).value, 2); - assertEquals(fn(3).value, 3); - %OptimizeFunctionOnNextCall(fn); - assertEquals(fn(4).value, 4); - - let instance = fn(1); - assertEquals(Object.getOwnPropertyNames(instance).length, kLimit+1); - - // Get and set all properties. - for (let i = 0; i < kLimit; i++) { - const key = "property" + i; - assertEquals(instance[key], i); - const value = "value"+i; - instance[key] = value; - assertEquals(instance[key], value); - } -})(); - -var b = 'b'; - -(function TestOverwritingInstanceAccessors() { - var C, desc; - C = class { - [b]() { return 'B'; }; - get b() { return 'get B'; }; - }; - desc = Object.getOwnPropertyDescriptor(C.prototype, 'b'); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertEquals('get B', desc.get()); - assertEquals(undefined, desc.set); - - C = class { - [b]() { return 'B'; }; - set b(v) { return 'set B'; }; - }; - desc = Object.getOwnPropertyDescriptor(C.prototype, 'b'); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertEquals(undefined, desc.get); - assertEquals('set B', desc.set()); - - C = class { - set b(v) { return 'get B'; }; - [b]() { return 'B'; }; - get b() { return 'get B'; }; - }; - desc = Object.getOwnPropertyDescriptor(C.prototype, 'b'); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertEquals('get B', desc.get()); - assertEquals(undefined, desc.set); - - C = class { - get b() { return 'get B'; }; - [b]() { return 'B'; }; - set b(v) { return 'set B'; }; - }; - desc = Object.getOwnPropertyDescriptor(C.prototype, 'b'); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertEquals(undefined, desc.get); - assertEquals('set B', desc.set()); -})(); - -(function TestOverwritingStaticAccessors() { - var C, desc; - C = class { - static [b]() { return 'B'; }; - static get b() { return 'get B'; }; - }; - desc = Object.getOwnPropertyDescriptor(C, 'b'); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertEquals('get B', desc.get()); - assertEquals(undefined, desc.set); - - C = class { - static [b]() { return 'B'; }; - static set b(v) { return 'set B'; }; - }; - desc = Object.getOwnPropertyDescriptor(C, 'b'); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertEquals(undefined, desc.get); - assertEquals('set B', desc.set()); - - C = class { - static set b(v) { return 'get B'; }; - static [b]() { return 'B'; }; - static get b() { return 'get B'; }; - }; - desc = Object.getOwnPropertyDescriptor(C, 'b'); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertEquals('get B', desc.get()); - assertEquals(undefined, desc.set); - - C = class { - static get b() { return 'get B'; }; - static [b]() { return 'B'; }; - static set b(v) { return 'set B'; }; - }; - desc = Object.getOwnPropertyDescriptor(C, 'b'); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertEquals(undefined, desc.get); - assertEquals('set B', desc.set()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/collection-iterator.js b/implementation-contributed/v8/mjsunit/es6/collection-iterator.js deleted file mode 100644 index 8257d96664a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/collection-iterator.js +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(f) { - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); -} - -test(function TestSetIterator() { - var s = new Set; - var iter = s.values(); - - var SetIteratorPrototype = iter.__proto__; - assertFalse(SetIteratorPrototype.hasOwnProperty('constructor')); - assertEquals(SetIteratorPrototype.__proto__, Object.prototype); - - var propertyNames = Object.getOwnPropertyNames(SetIteratorPrototype); - assertArrayEquals(['next'], propertyNames); - - assertEquals(new Set().values().__proto__, SetIteratorPrototype); - assertEquals(new Set().entries().__proto__, SetIteratorPrototype); - - assertEquals("[object Set Iterator]", - Object.prototype.toString.call(iter)); - assertEquals("Set Iterator", SetIteratorPrototype[Symbol.toStringTag]); - var desc = Object.getOwnPropertyDescriptor( - SetIteratorPrototype, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.writable); - assertEquals("Set Iterator", desc.value); -}); - - -test(function TestSetIteratorValues() { - var s = new Set; - s.add(1); - s.add(2); - s.add(3); - var iter = s.values(); - - assertEquals({value: 1, done: false}, iter.next()); - assertEquals({value: 2, done: false}, iter.next()); - assertEquals({value: 3, done: false}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); -}); - - -test(function TestSetIteratorKeys() { - assertEquals(Set.prototype.keys, Set.prototype.values); -}); - - -test(function TestSetIteratorEntries() { - var s = new Set; - s.add(1); - s.add(2); - s.add(3); - var iter = s.entries(); - - assertEquals({value: [1, 1], done: false}, iter.next()); - assertEquals({value: [2, 2], done: false}, iter.next()); - assertEquals({value: [3, 3], done: false}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); -}); - - -test(function TestSetIteratorMutations() { - var s = new Set; - s.add(1); - var iter = s.values(); - assertEquals({value: 1, done: false}, iter.next()); - s.add(2); - s.add(3); - s.add(4); - s.add(5); - assertEquals({value: 2, done: false}, iter.next()); - s.delete(3); - assertEquals({value: 4, done: false}, iter.next()); - s.delete(5); - assertEquals({value: undefined, done: true}, iter.next()); - s.add(4); - assertEquals({value: undefined, done: true}, iter.next()); -}); - - -test(function TestSetIteratorMutations2() { - var s = new Set; - s.add(1); - s.add(2); - var i = s.values(); - assertEquals({value: 1, done: false}, i.next()); - s.delete(2); - s.delete(1); - s.add(2); - assertEquals({value: 2, done: false}, i.next()); - assertEquals({value: undefined, done: true}, i.next()); -}); - - -test(function TestSetIteratorMutations3() { - var s = new Set; - s.add(1); - s.add(2); - var i = s.values(); - assertEquals({value: 1, done: false}, i.next()); - s.delete(2); - s.delete(1); - for (var x = 2; x < 500; ++x) s.add(x); - for (var x = 2; x < 500; ++x) s.delete(x); - for (var x = 2; x < 1000; ++x) s.add(x); - assertEquals({value: 2, done: false}, i.next()); - for (var x = 1001; x < 2000; ++x) s.add(x); - s.delete(3); - for (var x = 6; x < 2000; ++x) s.delete(x); - assertEquals({value: 4, done: false}, i.next()); - s.delete(5); - assertEquals({value: undefined, done: true}, i.next()); - s.add(4); - assertEquals({value: undefined, done: true}, i.next()); -}); - - -test(function TestSetInvalidReceiver() { - assertThrows(function() { - Set.prototype.values.call({}); - }, TypeError); - assertThrows(function() { - Set.prototype.entries.call({}); - }, TypeError); -}); - - -test(function TestSetIteratorInvalidReceiver() { - var iter = new Set().values(); - assertThrows(function() { - iter.next.call({}); - }); -}); - - -test(function TestSetIteratorSymbol() { - assertEquals(Set.prototype[Symbol.iterator], Set.prototype.values); - assertTrue(Set.prototype.hasOwnProperty(Symbol.iterator)); - assertFalse(Set.prototype.propertyIsEnumerable(Symbol.iterator)); - - var iter = new Set().values(); - assertEquals(iter, iter[Symbol.iterator]()); - assertEquals(iter[Symbol.iterator].name, '[Symbol.iterator]'); -}); - - -test(function TestMapIterator() { - var m = new Map; - var iter = m.values(); - - var MapIteratorPrototype = iter.__proto__; - assertFalse(MapIteratorPrototype.hasOwnProperty('constructor')); - assertEquals(MapIteratorPrototype.__proto__, Object.prototype); - - var propertyNames = Object.getOwnPropertyNames(MapIteratorPrototype); - assertArrayEquals(['next'], propertyNames); - - assertEquals(new Map().values().__proto__, MapIteratorPrototype); - assertEquals(new Map().keys().__proto__, MapIteratorPrototype); - assertEquals(new Map().entries().__proto__, MapIteratorPrototype); - - assertEquals("[object Map Iterator]", - Object.prototype.toString.call(iter)); - assertEquals("Map Iterator", MapIteratorPrototype[Symbol.toStringTag]); - var desc = Object.getOwnPropertyDescriptor( - MapIteratorPrototype, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.writable); - assertEquals("Map Iterator", desc.value); -}); - - -test(function TestMapIteratorValues() { - var m = new Map; - m.set(1, 11); - m.set(2, 22); - m.set(3, 33); - var iter = m.values(); - - assertEquals({value: 11, done: false}, iter.next()); - assertEquals({value: 22, done: false}, iter.next()); - assertEquals({value: 33, done: false}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); -}); - - -test(function TestMapIteratorKeys() { - var m = new Map; - m.set(1, 11); - m.set(2, 22); - m.set(3, 33); - var iter = m.keys(); - - assertEquals({value: 1, done: false}, iter.next()); - assertEquals({value: 2, done: false}, iter.next()); - assertEquals({value: 3, done: false}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); -}); - - -test(function TestMapIteratorEntries() { - var m = new Map; - m.set(1, 11); - m.set(2, 22); - m.set(3, 33); - var iter = m.entries(); - - assertEquals({value: [1, 11], done: false}, iter.next()); - assertEquals({value: [2, 22], done: false}, iter.next()); - assertEquals({value: [3, 33], done: false}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); - assertEquals({value: undefined, done: true}, iter.next()); -}); - - -test(function TestMapInvalidReceiver() { - assertThrows(function() { - Map.prototype.values.call({}); - }, TypeError); - assertThrows(function() { - Map.prototype.keys.call({}); - }, TypeError); - assertThrows(function() { - Map.prototype.entries.call({}); - }, TypeError); -}); - - -test(function TestMapIteratorInvalidReceiver() { - var iter = new Map().values(); - assertThrows(function() { - iter.next.call({}); - }, TypeError); -}); - - -test(function TestMapIteratorSymbol() { - assertEquals(Map.prototype[Symbol.iterator], Map.prototype.entries); - assertTrue(Map.prototype.hasOwnProperty(Symbol.iterator)); - assertFalse(Map.prototype.propertyIsEnumerable(Symbol.iterator)); - - var iter = new Map().values(); - assertEquals(iter, iter[Symbol.iterator]()); - assertEquals(iter[Symbol.iterator].name, '[Symbol.iterator]'); -}); diff --git a/implementation-contributed/v8/mjsunit/es6/collections-constructor-custom-iterator.js b/implementation-contributed/v8/mjsunit/es6/collections-constructor-custom-iterator.js deleted file mode 100644 index d6fa5481790..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/collections-constructor-custom-iterator.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -var global; - -function TestSetWithCustomIterator(ctor) { - const k1 = {}; - const k2 = {}; - const entries = [k1]; - let callCount = 0; - entries[Symbol.iterator] = () => ({ - next: () => - callCount++ === 0 - ? { value: k2, done: false } - : { done: true } - }); - const set = new ctor(entries); - assertFalse(set.has(k1)); - assertTrue(set.has(k2)); - assertEquals(2, callCount); - // Keep entries alive to avoid collection of the weakly held map in optimized - // code which causes the code to deopt. - global = entries; -} -TestSetWithCustomIterator(Set); -TestSetWithCustomIterator(Set); -TestSetWithCustomIterator(Set); -%OptimizeFunctionOnNextCall(TestSetWithCustomIterator); -TestSetWithCustomIterator(Set); -assertOptimized(TestSetWithCustomIterator); - -TestSetWithCustomIterator(WeakSet); -TestSetWithCustomIterator(WeakSet); -TestSetWithCustomIterator(WeakSet); -%OptimizeFunctionOnNextCall(TestSetWithCustomIterator); -TestSetWithCustomIterator(WeakSet); -assertOptimized(TestSetWithCustomIterator); - -function TestMapWithCustomIterator(ctor) { - const k1 = {}; - const k2 = {}; - const entries = [[k1, 1]]; - let callCount = 0; - entries[Symbol.iterator] = () => ({ - next: () => - callCount++ === 0 - ? { value: [k2, 2], done: false } - : { done: true } - }); - const map = new ctor(entries); - assertFalse(map.has(k1)); - assertEquals(2, map.get(k2)); - assertEquals(2, callCount); - // Keep entries alive to avoid collection of the weakly held map in optimized - // code which causes the code to deopt. - global = entries; -} -TestMapWithCustomIterator(Map); -TestMapWithCustomIterator(Map); -TestMapWithCustomIterator(Map); -%OptimizeFunctionOnNextCall(TestMapWithCustomIterator); -TestMapWithCustomIterator(Map); -assertOptimized(TestMapWithCustomIterator); - -TestMapWithCustomIterator(WeakMap); -TestMapWithCustomIterator(WeakMap); -TestMapWithCustomIterator(WeakMap); -%OptimizeFunctionOnNextCall(TestMapWithCustomIterator); -TestMapWithCustomIterator(WeakMap); -assertOptimized(TestMapWithCustomIterator); diff --git a/implementation-contributed/v8/mjsunit/es6/collections-constructor-iterator-side-effect.js b/implementation-contributed/v8/mjsunit/es6/collections-constructor-iterator-side-effect.js deleted file mode 100644 index 50308fdde39..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/collections-constructor-iterator-side-effect.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function TestSetWithModifiedIterator(ctor) { - const k1 = {}; - const k2 = {}; - const entries = [k1, k2]; - const arrayIteratorProto = Object.getPrototypeOf(entries[Symbol.iterator]()); - const originalNext = arrayIteratorProto.next; - let callCount = 0; - arrayIteratorProto.next = function() { - callCount++; - return originalNext.call(this); - }; - - const set = new ctor(entries); - assertEquals(3, callCount); // +1 for iterator done - - if('size' in set) assertEquals(2, set.size); - assertTrue(set.has(k1)); - assertTrue(set.has(k2)); - - arrayIteratorProto.next = originalNext; -} -TestSetWithModifiedIterator(Set); -TestSetWithModifiedIterator(Set); -TestSetWithModifiedIterator(Set); -%OptimizeFunctionOnNextCall(TestSetWithModifiedIterator); -TestSetWithModifiedIterator(Set); -assertOptimized(TestSetWithModifiedIterator); -%DeoptimizeFunction(TestSetWithModifiedIterator); - -TestSetWithModifiedIterator(WeakSet); -TestSetWithModifiedIterator(WeakSet); -TestSetWithModifiedIterator(WeakSet); -%OptimizeFunctionOnNextCall(TestSetWithModifiedIterator); -TestSetWithModifiedIterator(WeakSet); -assertOptimized(TestSetWithModifiedIterator); -%DeoptimizeFunction(TestSetWithModifiedIterator); - - -function TestMapWithModifiedIterator(ctor) { - const k1 = {}; - const k2 = {}; - const entries = [[k1, 1], [k2, 2]]; - const arrayIteratorProto = Object.getPrototypeOf(entries[Symbol.iterator]()); - const originalNext = arrayIteratorProto.next; - let callCount = 0; - arrayIteratorProto.next = function() { - callCount++; - return originalNext.call(this); - }; - - const set = new ctor(entries); - assertEquals(3, callCount); // +1 for iterator done - - if('size' in set) assertEquals(2, set.size); - assertEquals(1, set.get(k1)); - assertEquals(2, set.get(k2)); - - arrayIteratorProto.next = originalNext; -} -TestMapWithModifiedIterator(Map); -TestMapWithModifiedIterator(Map); -TestMapWithModifiedIterator(Map); -%OptimizeFunctionOnNextCall(TestMapWithModifiedIterator); -TestMapWithModifiedIterator(Map); -assertOptimized(TestMapWithModifiedIterator); -%DeoptimizeFunction(TestMapWithModifiedIterator); - -TestMapWithModifiedIterator(WeakMap); -TestMapWithModifiedIterator(WeakMap); -TestMapWithModifiedIterator(WeakMap); -%OptimizeFunctionOnNextCall(TestMapWithModifiedIterator); -TestMapWithModifiedIterator(WeakMap); -assertOptimized(TestMapWithModifiedIterator); -%DeoptimizeFunction(TestMapWithModifiedIterator); diff --git a/implementation-contributed/v8/mjsunit/es6/collections-constructor-with-modified-array-prototype.js b/implementation-contributed/v8/mjsunit/es6/collections-constructor-with-modified-array-prototype.js deleted file mode 100644 index cc441b1ad42..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/collections-constructor-with-modified-array-prototype.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function TestSetWithCustomIterator(ctor) { - const k1 = {}; - const k2 = {}; - let callCount = 0; - Array.prototype[Symbol.iterator] = () => ({ - next: () => - callCount++ === 0 - ? { value: k2, done: false } - : { done: true } - }); - const entries = [k1]; - const set = new ctor(entries); - assertFalse(set.has(k1)); - assertTrue(set.has(k2)); - assertEquals(2, callCount); -} -TestSetWithCustomIterator(Set); -TestSetWithCustomIterator(Set); -TestSetWithCustomIterator(Set); -%OptimizeFunctionOnNextCall(TestSetWithCustomIterator); -TestSetWithCustomIterator(Set); -assertOptimized(TestSetWithCustomIterator); - -TestSetWithCustomIterator(WeakSet); -TestSetWithCustomIterator(WeakSet); -TestSetWithCustomIterator(WeakSet); -%OptimizeFunctionOnNextCall(TestSetWithCustomIterator); -TestSetWithCustomIterator(WeakSet); -assertOptimized(TestSetWithCustomIterator); - -function TestMapWithCustomIterator(ctor) { - const k1 = {}; - const k2 = {}; - let callCount = 0; - Array.prototype[Symbol.iterator] = () => ({ - next: () => - callCount++ === 0 - ? { value: [k2, 2], done: false } - : { done: true } - }); - const entries = [[k1, 1]]; - const map = new ctor(entries); - assertFalse(map.has(k1)); - assertEquals(2, map.get(k2)); - assertEquals(2, callCount); -} -TestMapWithCustomIterator(Map); -TestMapWithCustomIterator(Map); -TestMapWithCustomIterator(Map); -%OptimizeFunctionOnNextCall(TestMapWithCustomIterator); -TestMapWithCustomIterator(Map); -assertOptimized(TestMapWithCustomIterator); - -TestMapWithCustomIterator(WeakMap); -TestMapWithCustomIterator(WeakMap); -TestMapWithCustomIterator(WeakMap); -%OptimizeFunctionOnNextCall(TestMapWithCustomIterator); -TestMapWithCustomIterator(WeakMap); -assertOptimized(TestMapWithCustomIterator); diff --git a/implementation-contributed/v8/mjsunit/es6/collections-constructor-with-modified-protoype.js b/implementation-contributed/v8/mjsunit/es6/collections-constructor-with-modified-protoype.js deleted file mode 100644 index a4278952436..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/collections-constructor-with-modified-protoype.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function TestSetPrototypeModified(ctor) { - const originalPrototypeAdd = ctor.prototype.add; - const k1 = {}; - const k2 = {}; - const entries = [k1, k2]; - let addCount = 0; - - ctor.prototype.add = function(value) { - addCount++; - originalPrototypeAdd.call(this, value); - entries.length = 1; - }; - const set = new ctor(entries); - - assertEquals(1, addCount); - assertTrue(set.has(k1)); - assertFalse(set.has(k2)); - - ctor.prototype.add = originalPrototypeAdd; -} -TestSetPrototypeModified(Set); -TestSetPrototypeModified(Set); -TestSetPrototypeModified(Set); -%OptimizeFunctionOnNextCall(TestSetPrototypeModified); -TestSetPrototypeModified(Set); -assertOptimized(TestSetPrototypeModified); -%DeoptimizeFunction(TestSetPrototypeModified); - -TestSetPrototypeModified(WeakSet); -TestSetPrototypeModified(WeakSet); -TestSetPrototypeModified(WeakSet); -%OptimizeFunctionOnNextCall(TestSetPrototypeModified); -TestSetPrototypeModified(WeakSet); -assertOptimized(TestSetPrototypeModified); -%DeoptimizeFunction(TestSetPrototypeModified); - -function TestMapPrototypeModified(ctor) { - const originalPrototypeSet = ctor.prototype.set; - const k1 = {}; - const k2 = {}; - const entries = [[k1, 1], [k2, 2]]; - let setCount = 0; - - ctor.prototype.set = function(key, value) { - setCount++; - originalPrototypeSet.call(this, key, value); - entries.length = 1; - }; - const map = new ctor(entries); - - assertEquals(1, setCount); - assertTrue(map.has(k1)); - assertFalse(map.has(k2)); - - ctor.prototype.set = originalPrototypeSet; -} -TestMapPrototypeModified(Map); -TestMapPrototypeModified(Map); -TestMapPrototypeModified(Map); -%OptimizeFunctionOnNextCall(TestMapPrototypeModified); -TestMapPrototypeModified(Map); -assertOptimized(TestMapPrototypeModified); -%DeoptimizeFunction(TestMapPrototypeModified); - -TestMapPrototypeModified(WeakMap); -TestMapPrototypeModified(WeakMap); -TestMapPrototypeModified(WeakMap); -%OptimizeFunctionOnNextCall(TestMapPrototypeModified); -TestMapPrototypeModified(WeakMap); -assertOptimized(TestMapPrototypeModified); diff --git a/implementation-contributed/v8/mjsunit/es6/collections.js b/implementation-contributed/v8/mjsunit/es6/collections.js deleted file mode 100644 index feae6294392..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/collections.js +++ /dev/null @@ -1,1467 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --allow-natives-syntax - - -function assertSize(expected, collection) { - if (collection instanceof Map || collection instanceof Set) { - assertEquals(expected, collection.size); - } -} - - -// Test valid getter and setter calls on Sets and WeakSets -function TestValidSetCalls(m) { - assertDoesNotThrow(function () { m.add(new Object) }); - assertDoesNotThrow(function () { m.has(new Object) }); - assertDoesNotThrow(function () { m.delete(new Object) }); -} -TestValidSetCalls(new Set); -TestValidSetCalls(new WeakSet); - - -// Test valid getter and setter calls on Maps and WeakMaps -function TestValidMapCalls(m) { - assertDoesNotThrow(function () { m.get(new Object) }); - assertDoesNotThrow(function () { m.set(new Object) }); - assertDoesNotThrow(function () { m.has(new Object) }); - assertDoesNotThrow(function () { m.delete(new Object) }); - assertDoesNotThrow(function () { m.get(undefined) }); - assertDoesNotThrow(function () { m.get(null) }); - assertDoesNotThrow(function () { m.get(0) }); - assertDoesNotThrow(function () { m.get('a-key') }); - assertDoesNotThrow(function () { m.get(Symbol()) }); - assertDoesNotThrow(function () { m.has(undefined) }); - assertDoesNotThrow(function () { m.has(null) }); - assertDoesNotThrow(function () { m.has(0) }); - assertDoesNotThrow(function () { m.has('a-key') }); - assertDoesNotThrow(function () { m.has(Symbol()) }); - assertDoesNotThrow(function () { m.delete(undefined) }); - assertDoesNotThrow(function () { m.delete(null) }); - assertDoesNotThrow(function () { m.delete(0) }); - assertDoesNotThrow(function () { m.delete('a-key') }); - assertDoesNotThrow(function () { m.delete(Symbol()) }); -} -TestValidMapCalls(new Map); -TestValidMapCalls(new WeakMap); - - -// Test invalid getter and setter calls for WeakMap only -function TestInvalidCalls(m) { - assertThrows(function () { m.set(undefined, 0) }, TypeError); - assertThrows(function () { m.set(null, 0) }, TypeError); - assertThrows(function () { m.set(0, 0) }, TypeError); - assertThrows(function () { m.set('a-key', 0) }, TypeError); - assertThrows(function () { m.set(Symbol(), 0) }, TypeError); -} -TestInvalidCalls(new WeakMap); - - -// Test expected behavior for Sets and WeakSets -function TestSet(set, key) { - assertFalse(set.has(key)); - assertFalse(set.delete(key)); - if (typeof key === 'object' && !(set instanceof WeakSet)) { - assertSame(set, set.add(key)); - assertTrue(set.has(key)); - assertTrue(set.delete(key)); - } - assertFalse(set.has(key)); - assertFalse(set.delete(key)); - assertFalse(set.has(key)); -} -function TestSetBehavior(set) { - // Fill - for (var i = 0; i < 20; i++) { - TestSet(set, new Object); - TestSet(set, i); - TestSet(set, i / 100); - TestSet(set, 'key-' + i); - TestSet(set, Symbol(i)); - } - - var keys = [ - -0, +0, 1, 1/3, 10, +Infinity, -Infinity, NaN, true, false, null, undefined, - 'x', Symbol(), {}, function(){} - ]; - for (var i = 0; i < keys.length; i++) { - TestSet(set, keys[i]); - } -} -TestSetBehavior(new Set); -TestSetBehavior(new WeakSet); - - -// Test expected mapping behavior for Maps and WeakMaps -function TestMapping(map, key, value) { - assertFalse(map.has(key)); - assertSame(undefined, map.get(key)); - assertFalse(map.delete(key)); - if (typeof key === 'object' && !(map instanceof WeakMap)) { - assertSame(map, map.set(key, value)); - assertSame(value, map.get(key)); - assertTrue(map.has(key)); - assertTrue(map.delete(key)); - } - assertFalse(map.has(key)); - assertSame(undefined, map.get(key)); - assertFalse(map.delete(key)); - assertFalse(map.has(key)); - assertSame(undefined, map.get(key)); -} -function TestMapBehavior(m) { - // Fill - TestMapping(m, new Object, 23); - TestMapping(m, new Object, 'the-value'); - TestMapping(m, new Object, new Object); - for (var i = 0; i < 20; i++) { - TestMapping(m, i, new Object); - TestMapping(m, i / 10, new Object); - TestMapping(m, 'key-' + i, new Object); - TestMapping(m, Symbol(i), new Object); - } - - var keys = [ - -0, +0, 1, 1/3, 10, +Infinity, -Infinity, NaN, true, false, null, undefined, - 'x', Symbol(), {}, function(){} - ]; - for (var i = 0; i < keys.length; i++) { - TestMapping(m, keys[i], 23); - TestMapping(m, keys[i], 'the-value'); - TestMapping(m, keys[i], new Object); - } -} -TestMapBehavior(new Map); -TestMapBehavior(new WeakMap); - - -// Test expected querying behavior of Maps and WeakMaps -function TestQuery(m) { - var key = new Object; - var values = [ 'x', 0, +Infinity, -Infinity, true, false, null, undefined ]; - for (var i = 0; i < values.length; i++) { - TestMapping(m, key, values[i]); - } -} -TestQuery(new Map); -TestQuery(new WeakMap); - - -// Test expected deletion behavior of Maps and WeakMaps -function TestDelete(m) { - var key = new Object; - TestMapping(m, key, 'to-be-deleted'); - assertFalse(m.delete(key)); - assertFalse(m.delete(new Object)); - assertSame(m.get(key), undefined); -} -TestDelete(new Map); -TestDelete(new WeakMap); - - -// Test GC of Maps and WeakMaps with entry -function TestGC1(m) { - var key = new Object; - m.set(key, 'not-collected'); - gc(); - assertSame('not-collected', m.get(key)); -} -TestGC1(new Map); -TestGC1(new WeakMap); - - -// Test GC of Maps and WeakMaps with chained entries -function TestGC2(m) { - var head = new Object; - for (key = head, i = 0; i < 10; i++, key = m.get(key)) { - m.set(key, new Object); - } - gc(); - var count = 0; - for (key = head; key != undefined; key = m.get(key)) { - count++; - } - assertEquals(11, count); -} -TestGC2(new Map); -TestGC2(new WeakMap); - - -// Test property attribute [[Enumerable]] -function TestEnumerable(func) { - function props(x) { - var array = []; - for (var p in x) array.push(p); - return array.sort(); - } - assertArrayEquals([], props(func)); - assertArrayEquals([], props(func.prototype)); - assertArrayEquals([], props(new func())); -} -TestEnumerable(Set); -TestEnumerable(Map); -TestEnumerable(WeakMap); -TestEnumerable(WeakSet); - - -// Test arbitrary properties on Maps and WeakMaps -function TestArbitrary(m) { - function TestProperty(map, property, value) { - map[property] = value; - assertEquals(value, map[property]); - } - for (var i = 0; i < 20; i++) { - TestProperty(m, i, 'val' + i); - TestProperty(m, 'foo' + i, 'bar' + i); - } - TestMapping(m, new Object, 'foobar'); -} -TestArbitrary(new Map); -TestArbitrary(new WeakMap); - - -// Test direct constructor call -assertThrows(function() { Set(); }, TypeError); -assertThrows(function() { Map(); }, TypeError); -assertThrows(function() { WeakMap(); }, TypeError); -assertThrows(function() { WeakSet(); }, TypeError); - - -// Test whether NaN values as keys are treated correctly. -var s = new Set; -assertFalse(s.has(NaN)); -assertFalse(s.has(NaN + 1)); -assertFalse(s.has(23)); -s.add(NaN); -assertTrue(s.has(NaN)); -assertTrue(s.has(NaN + 1)); -assertFalse(s.has(23)); -var m = new Map; -assertFalse(m.has(NaN)); -assertFalse(m.has(NaN + 1)); -assertFalse(m.has(23)); -m.set(NaN, 'a-value'); -assertTrue(m.has(NaN)); -assertTrue(m.has(NaN + 1)); -assertFalse(m.has(23)); - - -// Test some common JavaScript idioms for Sets -var s = new Set; -assertTrue(s instanceof Set); -assertTrue(Set.prototype.add instanceof Function) -assertTrue(Set.prototype.has instanceof Function) -assertTrue(Set.prototype.delete instanceof Function) -assertTrue(Set.prototype.clear instanceof Function) - - -// Test some common JavaScript idioms for Maps -var m = new Map; -assertTrue(m instanceof Map); -assertTrue(Map.prototype.set instanceof Function) -assertTrue(Map.prototype.get instanceof Function) -assertTrue(Map.prototype.has instanceof Function) -assertTrue(Map.prototype.delete instanceof Function) -assertTrue(Map.prototype.clear instanceof Function) - - -// Test some common JavaScript idioms for WeakMaps -var m = new WeakMap; -assertTrue(m instanceof WeakMap); -assertTrue(WeakMap.prototype.set instanceof Function) -assertTrue(WeakMap.prototype.get instanceof Function) -assertTrue(WeakMap.prototype.has instanceof Function) -assertTrue(WeakMap.prototype.delete instanceof Function) - - -// Test some common JavaScript idioms for WeakSets -var s = new WeakSet; -assertTrue(s instanceof WeakSet); -assertTrue(WeakSet.prototype.add instanceof Function) -assertTrue(WeakSet.prototype.has instanceof Function) -assertTrue(WeakSet.prototype.delete instanceof Function) - - -// Test name of constructor. -assertEquals("Set", Set.name); -assertEquals("Map", Map.name); -assertEquals("WeakMap", WeakMap.name); -assertEquals("WeakSet", WeakSet.name); - - -// Test prototype property of Set, Map, WeakMap and WeakSet. -function TestPrototype(C) { - assertTrue(C.prototype instanceof Object); - assertEquals({ - value: C.prototype, - writable: false, - enumerable: false, - configurable: false - }, Object.getOwnPropertyDescriptor(C, "prototype")); -} -TestPrototype(Set); -TestPrototype(Map); -TestPrototype(WeakMap); -TestPrototype(WeakSet); - - -// Test constructor property of the Set, Map, WeakMap and WeakSet prototype. -function TestConstructor(C) { - assertFalse(C === Object.prototype.constructor); - assertSame(C, C.prototype.constructor); - assertSame(C, (new C).__proto__.constructor); - assertEquals(0, C.length); -} -TestConstructor(Set); -TestConstructor(Map); -TestConstructor(WeakMap); -TestConstructor(WeakSet); - - -// Test the Set, Map, WeakMap and WeakSet global properties themselves. -function TestDescriptor(global, C) { - assertEquals({ - value: C, - writable: true, - enumerable: false, - configurable: true - }, Object.getOwnPropertyDescriptor(global, C.name)); -} -TestDescriptor(this, Set); -TestDescriptor(this, Map); -TestDescriptor(this, WeakMap); -TestDescriptor(this, WeakSet); - - -// Regression test for WeakMap prototype. -assertTrue(WeakMap.prototype.constructor === WeakMap) -assertTrue(Object.getPrototypeOf(WeakMap.prototype) === Object.prototype) - - -// Regression test for issue 1617: The prototype of the WeakMap constructor -// needs to be unique (i.e. different from the one of the Object constructor). -assertFalse(WeakMap.prototype === Object.prototype); -var o = Object.create({}); -assertFalse("get" in o); -assertFalse("set" in o); -assertEquals(undefined, o.get); -assertEquals(undefined, o.set); -var o = Object.create({}, { myValue: { - value: 10, - enumerable: false, - configurable: true, - writable: true -}}); -assertEquals(10, o.myValue); - - -// Regression test for issue 1884: Invoking any of the methods for Harmony -// maps, sets, or weak maps, with a wrong type of receiver should be throwing -// a proper TypeError. -var alwaysBogus = [ undefined, null, true, "x", 23, {} ]; -var bogusReceiversTestSet = [ - { proto: Set.prototype, - funcs: [ 'add', 'has', 'delete' ], - receivers: alwaysBogus.concat([ new Map, new WeakMap, new WeakSet ]), - }, - { proto: Map.prototype, - funcs: [ 'get', 'set', 'has', 'delete' ], - receivers: alwaysBogus.concat([ new Set, new WeakMap, new WeakSet ]), - }, - { proto: WeakMap.prototype, - funcs: [ 'get', 'set', 'has', 'delete' ], - receivers: alwaysBogus.concat([ new Set, new Map, new WeakSet ]), - }, - { proto: WeakSet.prototype, - funcs: [ 'add', 'has', 'delete' ], - receivers: alwaysBogus.concat([ new Set, new Map, new WeakMap ]), - }, -]; -function TestBogusReceivers(testSet) { - for (var i = 0; i < testSet.length; i++) { - var proto = testSet[i].proto; - var funcs = testSet[i].funcs; - var receivers = testSet[i].receivers; - for (var j = 0; j < funcs.length; j++) { - var func = proto[funcs[j]]; - for (var k = 0; k < receivers.length; k++) { - assertThrows(function () { func.call(receivers[k], {}) }, TypeError); - } - } - } -} -TestBogusReceivers(bogusReceiversTestSet); - - -// Stress Test -// There is a proposed stress-test available at the es-discuss mailing list -// which cannot be reasonably automated. Check it out by hand if you like: -// https://mail.mozilla.org/pipermail/es-discuss/2011-May/014096.html - - -// Set and Map size getters -var setSizeDescriptor = Object.getOwnPropertyDescriptor(Set.prototype, 'size'); -assertEquals(undefined, setSizeDescriptor.value); -assertEquals(undefined, setSizeDescriptor.set); -assertTrue(setSizeDescriptor.get instanceof Function); -assertEquals(undefined, setSizeDescriptor.get.prototype); -assertFalse(setSizeDescriptor.enumerable); -assertTrue(setSizeDescriptor.configurable); -assertEquals('get size', setSizeDescriptor.get.name); - -var s = new Set(); -assertFalse(s.hasOwnProperty('size')); -for (var i = 0; i < 10; i++) { - assertEquals(i, s.size); - s.add(i); -} -for (var i = 9; i >= 0; i--) { - s.delete(i); - assertEquals(i, s.size); -} - - -var mapSizeDescriptor = Object.getOwnPropertyDescriptor(Map.prototype, 'size'); -assertEquals(undefined, mapSizeDescriptor.value); -assertEquals(undefined, mapSizeDescriptor.set); -assertTrue(mapSizeDescriptor.get instanceof Function); -assertEquals(undefined, mapSizeDescriptor.get.prototype); -assertFalse(mapSizeDescriptor.enumerable); -assertTrue(mapSizeDescriptor.configurable); -assertEquals('get size', mapSizeDescriptor.get.name); - -var m = new Map(); -assertFalse(m.hasOwnProperty('size')); -for (var i = 0; i < 10; i++) { - assertEquals(i, m.size); - m.set(i, i); -} -for (var i = 9; i >= 0; i--) { - m.delete(i); - assertEquals(i, m.size); -} - - -// Test Set clear -(function() { - var s = new Set(); - s.add(42); - assertTrue(s.has(42)); - assertEquals(1, s.size); - s.clear(); - assertFalse(s.has(42)); - assertEquals(0, s.size); -})(); - - -// Test Map clear -(function() { - var m = new Map(); - m.set(42, true); - assertTrue(m.has(42)); - assertEquals(1, m.size); - m.clear(); - assertFalse(m.has(42)); - assertEquals(0, m.size); -})(); - - -(function TestMinusZeroSet() { - var s = new Set(); - s.add(-0); - assertSame(0, s.values().next().value); - s.add(0); - assertEquals(1, s.size); - assertTrue(s.has(0)); - assertTrue(s.has(-0)); -})(); - - -(function TestMinusZeroMap() { - var m = new Map(); - m.set(-0, 'minus'); - assertSame(0, m.keys().next().value); - m.set(0, 'plus'); - assertEquals(1, m.size); - assertTrue(m.has(0)); - assertTrue(m.has(-0)); - assertEquals('plus', m.get(0)); - assertEquals('plus', m.get(-0)); -})(); - - -(function TestSetForEachInvalidTypes() { - assertThrows(function() { - Set.prototype.set.forEach.call({}); - }, TypeError); - - var set = new Set(); - assertThrows(function() { - set.forEach({}); - }, TypeError); -})(); - - -(function TestSetForEach() { - var set = new Set(); - set.add('a'); - set.add('b'); - set.add('c'); - - var buffer = ''; - var receiver = {}; - set.forEach(function(v, k, s) { - assertSame(v, k); - assertSame(set, s); - assertSame(this, receiver); - buffer += v; - if (v === 'a') { - set.delete('b'); - set.add('d'); - set.add('e'); - set.add('f'); - } else if (v === 'c') { - set.add('b'); - set.delete('e'); - } - }, receiver); - - assertEquals('acdfb', buffer); -})(); - - -(function TestSetForEachAddAtEnd() { - var set = new Set(); - set.add('a'); - set.add('b'); - - var buffer = ''; - set.forEach(function(v) { - buffer += v; - if (v === 'b') { - set.add('c'); - } - }); - - assertEquals('abc', buffer); -})(); - - -(function TestSetForEachDeleteNext() { - var set = new Set(); - set.add('a'); - set.add('b'); - set.add('c'); - - var buffer = ''; - set.forEach(function(v) { - buffer += v; - if (v === 'b') { - set.delete('c'); - } - }); - - assertEquals('ab', buffer); -})(); - - -(function TestSetForEachDeleteVisitedAndAddAgain() { - var set = new Set(); - set.add('a'); - set.add('b'); - set.add('c'); - - var buffer = ''; - set.forEach(function(v) { - buffer += v; - if (v === 'b') { - set.delete('a'); - } else if (v === 'c') { - set.add('a'); - } - }); - - assertEquals('abca', buffer); -})(); - - -(function TestSetForEachClear() { - var set = new Set(); - set.add('a'); - set.add('b'); - set.add('c'); - - var buffer = ''; - set.forEach(function(v) { - buffer += v; - if (v === 'a') { - set.clear(); - set.add('d'); - set.add('e'); - } - }); - - assertEquals('ade', buffer); -})(); - - -(function TestSetForEachNested() { - var set = new Set(); - set.add('a'); - set.add('b'); - set.add('c'); - - var buffer = ''; - set.forEach(function(v) { - buffer += v; - set.forEach(function(v) { - buffer += v; - if (v === 'a') { - set.delete('b'); - } - }); - }); - - assertEquals('aaccac', buffer); -})(); - - -(function TestSetForEachEarlyExit() { - var set = new Set(); - set.add('a'); - set.add('b'); - set.add('c'); - - var buffer = ''; - var ex = {}; - try { - set.forEach(function(v) { - buffer += v; - throw ex; - }); - } catch (e) { - assertEquals(ex, e); - } - assertEquals('a', buffer); -})(); - - -(function TestSetForEachGC() { - var set = new Set(); - for (var i = 0; i < 100; i++) { - set.add(i); - } - - var accumulated = 0; - set.forEach(function(v) { - accumulated += v; - if (v % 10 === 0) { - gc(); - } - }); - assertEquals(4950, accumulated); -})(); - - -(function TestSetForEachReceiverAsObject() { - var set = new Set(["1", "2"]); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - var a = []; - set.forEach(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - set.forEach(function() { a.push(this); }, {}); - assertEquals(a[0], a[1]); -})(); - - -(function TestSetForEachReceiverAsObjectInStrictMode() { - var set = new Set(["1", "2"]); - - // In strict mode primitive values should not be coerced to an object. - var a = []; - set.forEach(function() { 'use strict'; a.push(this); }, ""); - assertTrue(a[0] === "" && a[0] === a[1]); -})(); - - -(function TestMapForEachInvalidTypes() { - assertThrows(function() { - Map.prototype.map.forEach.call({}); - }, TypeError); - - var map = new Map(); - assertThrows(function() { - map.forEach({}); - }, TypeError); -})(); - - -(function TestMapForEach() { - var map = new Map(); - map.set(0, 'a'); - map.set(1, 'b'); - map.set(2, 'c'); - - var buffer = []; - var receiver = {}; - map.forEach(function(v, k, m) { - assertEquals(map, m); - assertEquals(this, receiver); - buffer.push(k, v); - if (k === 0) { - map.delete(1); - map.set(3, 'd'); - map.set(4, 'e'); - map.set(5, 'f'); - } else if (k === 2) { - map.set(1, 'B'); - map.delete(4); - } - }, receiver); - - assertArrayEquals([0, 'a', 2, 'c', 3, 'd', 5, 'f', 1, 'B'], buffer); -})(); - - -(function TestMapForEachAddAtEnd() { - var map = new Map(); - map.set(0, 'a'); - map.set(1, 'b'); - - var buffer = []; - map.forEach(function(v, k) { - buffer.push(k, v); - if (k === 1) { - map.set(2, 'c'); - } - }); - - assertArrayEquals([0, 'a', 1, 'b', 2, 'c'], buffer); -})(); - - -(function TestMapForEachDeleteNext() { - var map = new Map(); - map.set(0, 'a'); - map.set(1, 'b'); - map.set(2, 'c'); - - var buffer = []; - map.forEach(function(v, k) { - buffer.push(k, v); - if (k === 1) { - map.delete(2); - } - }); - - assertArrayEquals([0, 'a', 1, 'b'], buffer); -})(); - - -(function TestSetForEachDeleteVisitedAndAddAgain() { - var map = new Map(); - map.set(0, 'a'); - map.set(1, 'b'); - map.set(2, 'c'); - - var buffer = []; - map.forEach(function(v, k) { - buffer.push(k, v); - if (k === 1) { - map.delete(0); - } else if (k === 2) { - map.set(0, 'a'); - } - }); - - assertArrayEquals([0, 'a', 1, 'b', 2, 'c', 0, 'a'], buffer); -})(); - - -(function TestMapForEachClear() { - var map = new Map(); - map.set(0, 'a'); - map.set(1, 'b'); - map.set(2, 'c'); - - var buffer = []; - map.forEach(function(v, k) { - buffer.push(k, v); - if (k === 0) { - map.clear(); - map.set(3, 'd'); - map.set(4, 'e'); - } - }); - - assertArrayEquals([0, 'a', 3, 'd', 4, 'e'], buffer); -})(); - - -(function TestMapForEachNested() { - var map = new Map(); - map.set(0, 'a'); - map.set(1, 'b'); - map.set(2, 'c'); - - var buffer = []; - map.forEach(function(v, k) { - buffer.push(k, v); - map.forEach(function(v, k) { - buffer.push(k, v); - if (k === 0) { - map.delete(1); - } - }); - }); - - assertArrayEquals([0, 'a', 0, 'a', 2, 'c', 2, 'c', 0, 'a', 2, 'c'], buffer); -})(); - - -(function TestMapForEachEarlyExit() { - var map = new Map(); - map.set(0, 'a'); - map.set(1, 'b'); - map.set(2, 'c'); - - var buffer = []; - var ex = {}; - try { - map.forEach(function(v, k) { - buffer.push(k, v); - throw ex; - }); - } catch (e) { - assertEquals(ex, e); - } - assertArrayEquals([0, 'a'], buffer); -})(); - - -(function TestMapForEachGC() { - var map = new Map(); - for (var i = 0; i < 100; i++) { - map.set(i, i); - } - - var accumulated = 0; - map.forEach(function(v) { - accumulated += v; - if (v % 10 === 0) { - gc(); - } - }); - assertEquals(4950, accumulated); -})(); - - -(function TestMapForEachAllRemovedTransition() { - var map = new Map; - map.set(0, 0); - - var buffer = []; - map.forEach(function(v) { - buffer.push(v); - if (v === 0) { - for (var i = 1; i < 4; i++) { - map.set(i, i); - } - } - - if (v === 3) { - for (var i = 0; i < 4; i++) { - map.delete(i); - } - for (var i = 4; i < 8; i++) { - map.set(i, i); - } - } - }); - - assertArrayEquals([0, 1, 2, 3, 4, 5, 6, 7], buffer); -})(); - - -(function TestMapForEachClearTransition() { - var map = new Map; - map.set(0, 0); - - var i = 0; - var buffer = []; - map.forEach(function(v) { - buffer.push(v); - if (++i < 5) { - for (var j = 0; j < 5; j++) { - map.clear(); - map.set(i, i); - } - } - }); - - assertArrayEquals([0, 1, 2, 3, 4], buffer); -})(); - - -(function TestMapForEachNestedNonTrivialTransition() { - var map = new Map; - map.set(0, 0); - map.set(1, 1); - map.set(2, 2); - map.set(3, 3); - map.delete(0); - - var i = 0; - var buffer = []; - map.forEach(function(v) { - if (++i > 10) return; - - buffer.push(v); - - if (v == 3) { - map.delete(1); - for (var j = 4; j < 10; j++) { - map.set(j, j); - } - for (var j = 4; j < 10; j += 2) { - map.delete(j); - } - map.delete(2); - - for (var j = 10; j < 20; j++) { - map.set(j, j); - } - for (var j = 10; j < 20; j += 2) { - map.delete(j); - } - - map.delete(3); - } - }); - - assertArrayEquals([1, 2, 3, 5, 7, 9, 11, 13, 15, 17], buffer); -})(); - - -(function TestMapForEachAllRemovedTransitionNoClear() { - var map = new Map; - map.set(0, 0); - - var buffer = []; - map.forEach(function(v) { - buffer.push(v); - if (v === 0) { - for (var i = 1; i < 8; i++) { - map.set(i, i); - } - } - - if (v === 4) { - for (var i = 0; i < 8; i++) { - map.delete(i); - } - } - }); - - assertArrayEquals([0, 1, 2, 3, 4], buffer); -})(); - - -(function TestMapForEachNoMoreElementsAfterTransition() { - var map = new Map; - map.set(0, 0); - - var buffer = []; - map.forEach(function(v) { - buffer.push(v); - if (v === 0) { - for (var i = 1; i < 16; i++) { - map.set(i, i); - } - } - - if (v === 4) { - for (var i = 5; i < 16; i++) { - map.delete(i); - } - } - }); - - assertArrayEquals([0, 1, 2, 3, 4], buffer); -})(); - - -(function TestMapForEachReceiverAsObject() { - var map = new Map(); - map.set("key1", "value1"); - map.set("key2", "value2"); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - var a = []; - map.forEach(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - map.forEach(function() { a.push(this); }, {}); - assertEquals(a[0], a[1]); -})(); - - -(function TestMapForEachReceiverAsObjectInStrictMode() { - var map = new Map(); - map.set("key1", "value1"); - map.set("key2", "value2"); - - // In strict mode primitive values should not be coerced to an object. - var a = []; - map.forEach(function() { 'use strict'; a.push(this); }, ""); - assertTrue(a[0] === "" && a[0] === a[1]); -})(); - - -// Allows testing iterator-based constructors easily. -var oneAndTwo = new Map(); -var k0 = {key: 0}; -var k1 = {key: 1}; -var k2 = {key: 2}; -oneAndTwo.set(k1, 1); -oneAndTwo.set(k2, 2); - - -function TestSetConstructor(ctor) { - var s = new ctor(null); - assertSize(0, s); - - s = new ctor(undefined); - assertSize(0, s); - - // No @@iterator - assertThrows(function() { - new ctor({}); - }, TypeError); - assertThrows(function() { - new ctor(true); - }, TypeError); - - // @@iterator not callable - assertThrows(function() { - var object = {}; - object[Symbol.iterator] = 42; - new ctor(object); - }, TypeError); - - // @@iterator result not object - assertThrows(function() { - var object = {}; - object[Symbol.iterator] = function() { - return 42; - }; - new ctor(object); - }, TypeError); - - var s2 = new Set(); - s2.add(k0); - s2.add(k1); - s2.add(k2); - s = new ctor(s2.values()); - assertSize(3, s); - assertTrue(s.has(k0)); - assertTrue(s.has(k1)); - assertTrue(s.has(k2)); -} -TestSetConstructor(Set); -TestSetConstructor(WeakSet); - - -function TestSetConstructorAddNotCallable(ctor) { - var originalPrototypeAdd = ctor.prototype.add; - assertThrows(function() { - ctor.prototype.add = 42; - new ctor(oneAndTwo.values()); - }, TypeError); - ctor.prototype.add = originalPrototypeAdd; -} -TestSetConstructorAddNotCallable(Set); -TestSetConstructorAddNotCallable(WeakSet); - - -function TestSetConstructorGetAddOnce(ctor) { - var originalPrototypeAdd = ctor.prototype.add; - var getAddCount = 0; - Object.defineProperty(ctor.prototype, 'add', { - get: function() { - getAddCount++; - return function() {}; - } - }); - var s = new ctor(oneAndTwo.values()); - assertEquals(1, getAddCount); - assertSize(0, s); - Object.defineProperty(ctor.prototype, 'add', { - value: originalPrototypeAdd, - writable: true - }); -} -TestSetConstructorGetAddOnce(Set); -TestSetConstructorGetAddOnce(WeakSet); - - -function TestSetConstructorAddReplaced(ctor) { - var originalPrototypeAdd = ctor.prototype.add; - var addCount = 0; - ctor.prototype.add = function(value) { - addCount++; - originalPrototypeAdd.call(this, value); - ctor.prototype.add = null; - }; - var s = new ctor(oneAndTwo.keys()); - assertEquals(2, addCount); - assertSize(2, s); - ctor.prototype.add = originalPrototypeAdd; -} -TestSetConstructorAddReplaced(Set); -TestSetConstructorAddReplaced(WeakSet); - - -function TestSetConstructorOrderOfDoneValue(ctor) { - var valueCount = 0, doneCount = 0; - var iterator = { - next: function() { - return { - get value() { - valueCount++; - }, - get done() { - doneCount++; - throw new Error(); - } - }; - } - }; - iterator[Symbol.iterator] = function() { - return this; - }; - assertThrows(function() { - new ctor(iterator); - }); - assertEquals(1, doneCount); - assertEquals(0, valueCount); -} -TestSetConstructorOrderOfDoneValue(Set); -TestSetConstructorOrderOfDoneValue(WeakSet); - - -function TestSetConstructorNextNotAnObject(ctor) { - var iterator = { - next: function() { - return 'abc'; - } - }; - iterator[Symbol.iterator] = function() { - return this; - }; - assertThrows(function() { - new ctor(iterator); - }, TypeError); -} -TestSetConstructorNextNotAnObject(Set); -TestSetConstructorNextNotAnObject(WeakSet); - - -(function TestWeakSetConstructorNonObjectKeys() { - assertThrows(function() { - new WeakSet([1]); - }, TypeError); -})(); - - -function TestSetConstructorIterableValue(ctor) { - 'use strict'; - // Strict mode is required to prevent implicit wrapping in the getter. - Object.defineProperty(Number.prototype, Symbol.iterator, { - get: function() { - assertEquals('number', typeof this); - return function() { - assertEquals('number', typeof this); - return oneAndTwo.keys(); - }; - }, - configurable: true - }); - - var set = new ctor(42); - assertSize(2, set); - assertTrue(set.has(k1)); - assertTrue(set.has(k2)); - - delete Number.prototype[Symbol.iterator]; -} -TestSetConstructorIterableValue(Set); -TestSetConstructorIterableValue(WeakSet); - - -(function TestSetConstructorStringValue() { - var s = new Set('abc'); - assertSize(3, s); - assertTrue(s.has('a')); - assertTrue(s.has('b')); - assertTrue(s.has('c')); -})(); - - -function TestMapConstructor(ctor) { - var m = new ctor(null); - assertSize(0, m); - - m = new ctor(undefined); - assertSize(0, m); - - // No @@iterator - assertThrows(function() { - new ctor({}); - }, TypeError); - assertThrows(function() { - new ctor(true); - }, TypeError); - - // @@iterator not callable - assertThrows(function() { - var object = {}; - object[Symbol.iterator] = 42; - new ctor(object); - }, TypeError); - - // @@iterator result not object - assertThrows(function() { - var object = {}; - object[Symbol.iterator] = function() { - return 42; - }; - new ctor(object); - }, TypeError); - - var m2 = new Map(); - m2.set(k0, 'a'); - m2.set(k1, 'b'); - m2.set(k2, 'c'); - m = new ctor(m2.entries()); - assertSize(3, m); - assertEquals('a', m.get(k0)); - assertEquals('b', m.get(k1)); - assertEquals('c', m.get(k2)); -} -TestMapConstructor(Map); -TestMapConstructor(WeakMap); - - -function TestMapConstructorSetNotCallable(ctor) { - var originalPrototypeSet = ctor.prototype.set; - assertThrows(function() { - ctor.prototype.set = 42; - new ctor(oneAndTwo.entries()); - }, TypeError); - ctor.prototype.set = originalPrototypeSet; -} -TestMapConstructorSetNotCallable(Map); -TestMapConstructorSetNotCallable(WeakMap); - - -function TestMapConstructorGetAddOnce(ctor) { - var originalPrototypeSet = ctor.prototype.set; - var getSetCount = 0; - Object.defineProperty(ctor.prototype, 'set', { - get: function() { - getSetCount++; - return function() {}; - } - }); - var m = new ctor(oneAndTwo.entries()); - assertEquals(1, getSetCount); - assertSize(0, m); - Object.defineProperty(ctor.prototype, 'set', { - value: originalPrototypeSet, - writable: true - }); -} -TestMapConstructorGetAddOnce(Map); -TestMapConstructorGetAddOnce(WeakMap); - - -function TestMapConstructorSetReplaced(ctor) { - var originalPrototypeSet = ctor.prototype.set; - var setCount = 0; - ctor.prototype.set = function(key, value) { - setCount++; - originalPrototypeSet.call(this, key, value); - ctor.prototype.set = null; - }; - var m = new ctor(oneAndTwo.entries()); - assertEquals(2, setCount); - assertSize(2, m); - ctor.prototype.set = originalPrototypeSet; -} -TestMapConstructorSetReplaced(Map); -TestMapConstructorSetReplaced(WeakMap); - - -function TestMapConstructorOrderOfDoneValue(ctor) { - var valueCount = 0, doneCount = 0; - function FakeError() {} - var iterator = { - next: function() { - return { - get value() { - valueCount++; - }, - get done() { - doneCount++; - throw new FakeError(); - } - }; - } - }; - iterator[Symbol.iterator] = function() { - return this; - }; - assertThrows(function() { - new ctor(iterator); - }, FakeError); - assertEquals(1, doneCount); - assertEquals(0, valueCount); -} -TestMapConstructorOrderOfDoneValue(Map); -TestMapConstructorOrderOfDoneValue(WeakMap); - - -function TestMapConstructorNextNotAnObject(ctor) { - var iterator = { - next: function() { - return 'abc'; - } - }; - iterator[Symbol.iterator] = function() { - return this; - }; - assertThrows(function() { - new ctor(iterator); - }, TypeError); -} -TestMapConstructorNextNotAnObject(Map); -TestMapConstructorNextNotAnObject(WeakMap); - - -function TestMapConstructorIteratorNotObjectValues(ctor) { - assertThrows(function() { - new ctor(oneAndTwo.values()); - }, TypeError); -} -TestMapConstructorIteratorNotObjectValues(Map); -TestMapConstructorIteratorNotObjectValues(WeakMap); - - -(function TestWeakMapConstructorNonObjectKeys() { - assertThrows(function() { - new WeakMap([[1, 2]]) - }, TypeError); -})(); - - -function TestMapConstructorIterableValue(ctor) { - 'use strict'; - // Strict mode is required to prevent implicit wrapping in the getter. - Object.defineProperty(Number.prototype, Symbol.iterator, { - get: function() { - assertEquals('number', typeof this); - return function() { - assertEquals('number', typeof this); - return oneAndTwo.entries(); - }; - }, - configurable: true - }); - - var map = new ctor(42); - assertSize(2, map); - assertEquals(1, map.get(k1)); - assertEquals(2, map.get(k2)); - - delete Number.prototype[Symbol.iterator]; -} -TestMapConstructorIterableValue(Map); -TestMapConstructorIterableValue(WeakMap); - -function TestCollectionToString(C) { - assertEquals("[object " + C.name + "]", - Object.prototype.toString.call(new C())); -} -TestCollectionToString(Map); -TestCollectionToString(Set); -TestCollectionToString(WeakMap); -TestCollectionToString(WeakSet); - - -function TestConstructorOrderOfAdderIterator(ctor, adderName) { - var iterable = new Map(); - iterable.set({}, {}); - iterable.set({}, {}); - var iterableFunction = iterable[Symbol.iterator]; - Object.defineProperty(iterable, Symbol.iterator, { - get: function() { - log += 'iterator'; - return iterableFunction; - } - }); - - var log = ''; - var adderFunction = ctor.prototype[adderName]; - - Object.defineProperty(ctor.prototype, adderName, { - get: function() { - log += adderName; - return adderFunction; - } - }); - - new ctor(iterable); - assertEquals(adderName + 'iterator', log); - - Object.defineProperty(ctor.prototype, adderName, { - value: adderFunction - }); -} -TestConstructorOrderOfAdderIterator(Map, 'set'); -TestConstructorOrderOfAdderIterator(Set, 'add'); -TestConstructorOrderOfAdderIterator(WeakMap, 'set'); -TestConstructorOrderOfAdderIterator(WeakSet, 'add'); diff --git a/implementation-contributed/v8/mjsunit/es6/completion.js b/implementation-contributed/v8/mjsunit/es6/completion.js deleted file mode 100644 index d88fcd054f3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/completion.js +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function assertUndef(x) { - assertEquals(undefined, x); -} - - -// ClassDeclaration - -assertUndef(eval('class C {}')); -assertUndef(eval('class C {m() {}}')); -assertUndef(eval('class C extends null {}')); -assertEquals(42, eval('42; class C {}')); -assertEquals(42, eval('42; class C {m() {}}')); -assertEquals(42, eval('42; class C extends null {}')); - - -// IfStatement [13.6.7] - -assertUndef(eval('42; if (true) ; else 0;')); // ES5: 42 -assertUndef(eval('42; if (true) ;')); // ES5: 42 -assertUndef(eval('42; if (false) 0;')); // ES5: 42 - -assertEquals(1, eval('42; if (true) 1;')); -assertEquals(1, eval('42; if (true) 1; else 0;')); -assertEquals(0, eval('42; if (false) 1; else 0;')); - - -// IterationStatement [13.7] - -assertUndef(eval('42; do ; while (false);')); // ES5: 42 -assertUndef(eval('42; var x = 1; do ; while (x--);')); // ES5: 42 -assertUndef(eval('42; while (false) 0;')); // ES5: 42 -assertUndef(eval('42; while (true) break;')); // ES5: 42 -assertUndef(eval('42; bla: while (true) break bla;')); // ES5: 42 -assertUndef(eval('42; var x = 1; while (x--) ;')); // ES5: 42 -assertUndef(eval('42; for (; false; ) 0;')); // ES5: 42 -assertUndef(eval('42; for (var x = 1; x; x--) ;')); // ES5: 42 -assertUndef(eval('42; for (var x in ["foo", "bar"]) ;')); -assertUndef(eval('42; for (var x of ["foo", "bar"]) ;')); -assertUndef(eval('42; for (let x = 1; x; x--) ;')); -assertUndef(eval('42; for (let x in ["foo", "bar"]) ;')); -assertUndef(eval('42; for (let x of ["foo", "bar"]) ;')); -assertUndef(eval('42; for (const x in ["foo", "bar"]) ;')); -assertUndef(eval('42; for (const x of ["foo", "bar"]) ;')); - -assertEquals(1, eval('42; var x = 10; do x--; while (x);')); -assertEquals(1, eval('42; var x = 10; while (x) x--;')); -assertEquals(1, eval('42; for (var x = 10; x; x--) x;')); -assertEquals(1, eval('42; for (var x = 10; x; --x) x;')); -assertEquals(1, eval('42; for (let x = 10; x; --x) x;')); -assertEquals(1, eval('42; var y = 2; for (var x in ["foo", "bar"]) y--;')); -assertEquals(1, eval('42; var y = 2; for (const x in ["foo", "bar"]) y--;')); -assertEquals(1, eval('42; var y = 2; for (let x in ["foo", "bar"]) y--;')); -assertEquals(1, eval('42; var y = 2; for (var x of ["foo", "bar"]) y--;')); -assertEquals(1, eval('42; var y = 2; for (const x of ["foo", "bar"]) y--;')); -assertEquals(1, eval('42; var y = 2; for (let x of ["foo", "bar"]) y--;')); - - -// WithStatement [13.11.7] - -assertUndef(eval('42; with ({}) ;')); // ES5: 42 - -assertEquals(1, eval('42; with ({}) 1;')); - - -// SwitchStatement [13.12.11] - -assertUndef(eval('42; switch (0) {};')); // ES5: 42 -assertUndef(eval('42; switch (0) { case 1: 1; };')); // ES5: 42 -assertUndef(eval('42; switch (0) { case 0: ; };')); // ES5: 42 -assertUndef(eval('42; switch (0) { default: ; };')); // ES5: 42 -assertUndef(eval('42; switch (0) { case 0: break; }')); // ES5: 42 - -assertEquals(1, eval('42; switch (0) { case 0: 1; }')); -assertEquals(1, eval('42; switch (0) { case 0: 1; break; }')); -assertEquals(1, eval('42; switch (0) { case 0: 1; case 666: break; }')); -assertEquals(2, eval('42; switch (0) { case 0: 1; case 666: 2; break; }')); - - -// TryStatement [13.15.8] - -assertUndef(eval('42; try { } catch(e) { };')); // ES5: 42 -assertUndef(eval('42; try { } catch(e) { 0; };')); // ES5: 42 -assertUndef(eval('42; try { throw "" } catch(e) { };')); // ES5: 42 -assertUndef(eval('42; try { throw "" } catch(e) { } finally { };')); // ES5: 42 -assertUndef(eval('42; try { } finally { 666 };')); // ES5: 42 - - -// Some combinations - -assertUndef(eval('42; switch (0) { case 0: if (true) break; }')); // ES5: 42 -assertUndef(eval('42; switch (0) { case 0: 1; if (true) ; }')); // ES5: 1 -assertUndef(eval('42; switch (0) { case 0: 1; try { break } catch(e) { }; }')); // ES5: 1 - -assertEquals(0, eval('42; switch (0) { case 0: 0; case 1: break; }')); -assertEquals(0, eval('42; while (1) { 0; break; }')) -assertEquals(0, eval('42; bla: while (1) { 0; break bla; }')) -assertEquals(0, eval('42; while (1) { with ({}) { 0; break; } }')) -assertEquals(0, eval('42; while (1) { try { 0; break } catch(e) {666} }')) -assertEquals(0, eval( - '42; while (1) { try { 0; break } catch(e) {666} finally {666} }')) -assertEquals(0, eval( - '42; while (1) { try { throw "" } catch(e) {666} finally {0; break} }')) -assertEquals(0, eval( - '42; while (1) { try { throw "" } catch(e) {0; break} finally {666} }')) -assertEquals(0, eval( - '42; while (1) { try { 666 } finally {0; break} }')); -assertEquals(0, eval( - '42; while (1) { try { 666; break } finally {0; break} }')); -assertEquals(0, eval( - '42; lab: try { 666; break lab } finally {0; break lab}')); -assertEquals(undefined, eval( - 'var b = 1; ' + - 'outer: while (1) { while (1) { if (b--) 42; else break outer; }; 666 }')); - -assertUndef(eval('42; switch (0) { case 0: 1; if (true) break; }')); // ES5: 1 - -assertUndef(eval('a: while(true) { do { 0 } while(false); switch(1) { case 0: 1; case 1: break a; }; 0 }')); -assertUndef(eval('a: while(true) { do { 0 } while(false); try {} finally { break a }; 0 }')); -assertUndef(eval('a: while(true) { b: while(true) { 0; break b; }; switch(1) { case 1: break a; }; 2 }')); -assertUndef(eval('a: while(true) { b: while(true) { 0; break b; }; while (true) { break a; }; 2 }')); -assertUndef(eval('while (true) { 20; a:{ break a; } with ({}) break; 30; }')); -assertEquals(42, eval('a: while(true) { switch(0) { case 0: 42; case 1: break a; }; 33 }')); - -assertUndef(eval( - 'for (var i = 0; i < 2; ++i) { if (i) { try {} finally { break; } } 0; }' -)); -assertUndef(eval( - 'for (var i = 0; i < 2; ++i) { if (i) { try {} finally { continue; } } 0; }' -)); - - - -//////////////////////////////////////////////////////////////////////////////// -// -// The following are copied from webkit/eval-throw-return and adapted. - -function throwFunc() { - throw ""; -} - -function throwOnReturn(){ - 1; - return throwFunc(); -} - -function twoFunc() { - 2; -} - -assertEquals(1, eval("1;")); -assertUndef(eval("1; try { foo = [2,3,throwFunc(), 4]; } catch (e){}")); -assertUndef(eval("1; try { 2; throw ''; } catch (e){}")); -assertUndef(eval("1; try { 2; throwFunc(); } catch (e){}")); -assertEquals(3, eval("1; try { 2; throwFunc(); } catch (e){3;} finally {}")); -assertEquals(3, eval("1; try { 2; throwFunc(); } catch (e){3;} finally {4;}")); -assertUndef(eval("function blah() { 1; }; blah();")); -assertUndef(eval("var x = 1;")); -assertEquals(1, eval("if (true) { 1; } else { 2; }")); -assertEquals(2, eval("if (false) { 1; } else { 2; }")); -assertUndef(eval("try{1; if (true) { 2; throw ''; } else { 2; }} catch(e){}")); -assertEquals(2, eval("1; var i = 0; do { ++i; 2; } while(i!=1);")); -assertUndef(eval( - "try{1; var i = 0; do { ++i; 2; throw ''; } while (i!=1);} catch(e){}")); -assertUndef(eval("1; try{2; throwOnReturn();} catch(e){}")); -assertUndef(eval("1; twoFunc();")); -assertEquals(2, eval("1; with ( { a: 0 } ) { 2; }")); - -// https://bugs.chromium.org/p/chromium/issues/detail?id=787698 -assertEquals(42, eval("try {42} catch (_) {} finally {}")); -assertEquals(42, eval("try {42} catch (_) {} finally {43}")); -assertEquals(42, eval("foo: try {42} catch (_) {} finally {}")); -assertEquals(42, eval("foo: try {42} catch (_) {} finally {43}")); -assertEquals(43, eval("foo: try {42} catch (_) {} finally {43; break foo}")); diff --git a/implementation-contributed/v8/mjsunit/es6/computed-property-names-classes.js b/implementation-contributed/v8/mjsunit/es6/computed-property-names-classes.js deleted file mode 100644 index da8e1d8dcbb..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/computed-property-names-classes.js +++ /dev/null @@ -1,461 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - - -function ID(x) { - return x; -} - - -(function TestClassMethodString() { - class C { - a() { return 'A'} - ['b']() { return 'B'; } - c() { return 'C'; } - [ID('d')]() { return 'D'; } - } - assertEquals('A', new C().a()); - assertEquals('B', new C().b()); - assertEquals('C', new C().c()); - assertEquals('D', new C().d()); - assertArrayEquals([], Object.keys(C.prototype)); - assertArrayEquals(['constructor', 'a', 'b', 'c', 'd'], - Object.getOwnPropertyNames(C.prototype)); -})(); - - -(function TestClassMethodNumber() { - class C { - a() { return 'A'; } - [1]() { return 'B'; } - c() { return 'C'; } - [ID(2)]() { return 'D'; } - } - assertEquals('A', new C().a()); - assertEquals('B', new C()[1]()); - assertEquals('C', new C().c()); - assertEquals('D', new C()[2]()); - // Array indexes first. - assertArrayEquals([], Object.keys(C.prototype)); - assertArrayEquals(['1', '2', 'constructor', 'a', 'c'], - Object.getOwnPropertyNames(C.prototype)); -})(); - - -(function TestClassMethodSymbol() { - var sym1 = Symbol(); - var sym2 = Symbol(); - class C { - a() { return 'A'; } - [sym1]() { return 'B'; } - c() { return 'C'; } - [ID(sym2)]() { return 'D'; } - } - assertEquals('A', new C().a()); - assertEquals('B', new C()[sym1]()); - assertEquals('C', new C().c()); - assertEquals('D', new C()[sym2]()); - assertArrayEquals([], Object.keys(C.prototype)); - assertArrayEquals(['constructor', 'a', 'c'], - Object.getOwnPropertyNames(C.prototype)); - assertArrayEquals([sym1, sym2], Object.getOwnPropertySymbols(C.prototype)); -})(); - - - -(function TestStaticClassMethodString() { - class C { - static a() { return 'A'} - static ['b']() { return 'B'; } - static c() { return 'C'; } - static ['d']() { return 'D'; } - } - assertEquals('A', C.a()); - assertEquals('B', C.b()); - assertEquals('C', C.c()); - assertEquals('D', C.d()); - assertArrayEquals([], Object.keys(C)); - // TODO(arv): It is not clear that we are adding the "standard" properties - // in the right order. As far as I can tell the spec adds them in alphabetical - // order. - assertArrayEquals(['length', 'prototype', 'a', 'b', 'c', 'd', 'name'], - Object.getOwnPropertyNames(C)); -})(); - - -(function TestStaticClassMethodNumber() { - class C { - static a() { return 'A'; } - static [1]() { return 'B'; } - static c() { return 'C'; } - static [2]() { return 'D'; } - } - assertEquals('A', C.a()); - assertEquals('B', C[1]()); - assertEquals('C', C.c()); - assertEquals('D', C[2]()); - // Array indexes first. - assertArrayEquals([], Object.keys(C)); - assertArrayEquals(['1', '2', 'length', 'prototype', 'a', 'c', 'name'], - Object.getOwnPropertyNames(C)); -})(); - - -(function TestStaticClassMethodSymbol() { - var sym1 = Symbol(); - var sym2 = Symbol(); - class C { - static a() { return 'A'; } - static [sym1]() { return 'B'; } - static c() { return 'C'; } - static [sym2]() { return 'D'; } - } - assertEquals('A', C.a()); - assertEquals('B', C[sym1]()); - assertEquals('C', C.c()); - assertEquals('D', C[sym2]()); - assertArrayEquals([], Object.keys(C)); - assertArrayEquals(['length', 'prototype', 'a', 'c', 'name'], - Object.getOwnPropertyNames(C)); - assertArrayEquals([sym1, sym2], Object.getOwnPropertySymbols(C)); -})(); - - - -function assertIteratorResult(value, done, result) { - assertEquals({ value: value, done: done}, result); -} - - -(function TestGeneratorComputedName() { - class C { - *['a']() { - yield 1; - yield 2; - } - } - var iter = new C().a(); - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(undefined, true, iter.next()); - assertArrayEquals([], Object.keys(C.prototype)); - assertArrayEquals(['constructor', 'a'], - Object.getOwnPropertyNames(C.prototype)); -})(); - - -(function TestToNameSideEffects() { - var counter = 0; - var key1 = { - toString: function() { - assertEquals(0, counter++); - return 'b'; - } - }; - var key2 = { - toString: function() { - assertEquals(1, counter++); - return 'd'; - } - }; - class C { - a() { return 'A'; } - [key1]() { return 'B'; } - c() { return 'C'; } - [key2]() { return 'D'; } - } - assertEquals(2, counter); - assertEquals('A', new C().a()); - assertEquals('B', new C().b()); - assertEquals('C', new C().c()); - assertEquals('D', new C().d()); - assertArrayEquals([], Object.keys(C.prototype)); - assertArrayEquals(['constructor', 'a', 'b', 'c', 'd'], - Object.getOwnPropertyNames(C.prototype)); -})(); - - -(function TestToNameSideEffectsNumbers() { - var counter = 0; - var key1 = { - valueOf: function() { - assertEquals(0, counter++); - return 1; - }, - toString: null - }; - var key2 = { - valueOf: function() { - assertEquals(1, counter++); - return 2; - }, - toString: null - }; - - class C { - a() { return 'A'; } - [key1]() { return 'B'; } - c() { return 'C'; } - [key2]() { return 'D'; } - } - assertEquals(2, counter); - assertEquals('A', new C().a()); - assertEquals('B', new C()[1]()); - assertEquals('C', new C().c()); - assertEquals('D', new C()[2]()); - // Array indexes first. - assertArrayEquals([], Object.keys(C.prototype)); - assertArrayEquals(['1', '2', 'constructor', 'a', 'c'], - Object.getOwnPropertyNames(C.prototype)); -})(); - - -(function TestGetter() { - class C { - get ['a']() { - return 'A'; - } - } - assertEquals('A', new C().a); - - class C2 { - get b() { - assertUnreachable(); - } - get ['b']() { - return 'B'; - } - } - assertEquals('B', new C2().b); - - class C3 { - get c() { - assertUnreachable(); - } - get ['c']() { - assertUnreachable(); - } - get ['c']() { - return 'C'; - } - } - assertEquals('C', new C3().c); - - class C4 { - get ['d']() { - assertUnreachable(); - } - get d() { - return 'D'; - } - } - assertEquals('D', new C4().d); -})(); - - -(function TestSetter() { - var calls = 0; - class C { - set ['a'](_) { - calls++; - } - } - new C().a = 'A'; - assertEquals(1, calls); - - calls = 0; - class C2 { - set b(_) { - assertUnreachable(); - } - set ['b'](_) { - calls++; - } - } - new C2().b = 'B'; - assertEquals(1, calls); - - calls = 0; - class C3 { - set c(_) { - assertUnreachable() - } - set ['c'](_) { - assertUnreachable() - } - set ['c'](_) { - calls++ - } - } - new C3().c = 'C'; - assertEquals(1, calls); - - calls = 0; - class C4 { - set ['d'](_) { - assertUnreachable() - } - set d(_) { - calls++ - } - } - new C4().d = 'D'; - assertEquals(1, calls); -})(); - - -(function TestPrototype() { - assertThrows(function() { - class C { - static ['prototype']() { - return 1; - } - } - }, TypeError); - - assertThrows(function() { - class C2 { - static get ['prototype']() { - return 2; - } - } - }, TypeError); - - assertThrows(function() { - class C3 { - static set ['prototype'](x) { - assertEquals(3, x); - } - } - }, TypeError); - - assertThrows(function() { - class C4 { - static *['prototype']() { - yield 1; - yield 2; - } - } - }, TypeError); -})(); - - -(function TestPrototypeConcat() { - assertThrows(function() { - class C { - static ['pro' + 'tot' + 'ype']() { - return 1; - } - } - }, TypeError); - - assertThrows(function() { - class C2 { - static get ['pro' + 'tot' + 'ype']() { - return 2; - } - } - }, TypeError); - - assertThrows(function() { - class C3 { - static set ['pro' + 'tot' + 'ype'](x) { - assertEquals(3, x); - } - } - }, TypeError); - - assertThrows(function() { - class C4 { - static *['pro' + 'tot' + 'ype']() { - yield 1; - yield 2; - } - } - }, TypeError); -})(); - - -(function TestConstructor() { - // Normally a constructor property is not allowed. - class C { - ['constructor']() { - return 1; - } - } - assertTrue(C !== C.prototype.constructor); - assertEquals(1, new C().constructor()); - - class C2 { - get ['constructor']() { - return 2; - } - } - assertEquals(2, new C2().constructor); - - var calls = 0; - class C3 { - set ['constructor'](x) { - assertEquals(3, x); - calls++; - } - } - new C3().constructor = 3; - assertEquals(1, calls); - - class C4 { - *['constructor']() { - yield 1; - yield 2; - } - } - var iter = new C4().constructor(); - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(undefined, true, iter.next()); -})(); - - -(function TestExceptionInName() { - function MyError() {}; - function throwMyError() { - throw new MyError(); - } - assertThrows(function() { - class C { - [throwMyError()]() {} - } - }, MyError); - assertThrows(function() { - class C { - get [throwMyError()]() { return 42; } - } - }, MyError); - assertThrows(function() { - class C { - set [throwMyError()](_) { } - } - }, MyError); -})(); - - -(function TestTdzName() { - assertThrows(function() { - class C { - [C]() {} - } - }, ReferenceError); - assertThrows(function() { - class C { - get [C]() { return 42; } - } - }, ReferenceError); - assertThrows(function() { - class C { - set [C](_) { } - } - }, ReferenceError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/computed-property-names-deopt.js b/implementation-contributed/v8/mjsunit/es6/computed-property-names-deopt.js deleted file mode 100644 index 2f3a597f11f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/computed-property-names-deopt.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -(function TestProtoDeopt() { - var proto = {}; - - function deoptMe() { - %DeoptimizeFunction(f); - return proto; - } - - function checkObject(name, value, o) { - assertSame(proto, Object.getPrototypeOf(o)); - assertTrue(o.hasOwnProperty(name)); - assertEquals(value, o[name]); - } - - function f(name, value) { - return { [name]: value, __proto__: deoptMe() }; - } - - checkObject("a", 1, f("a", 1)); - checkObject("b", 2, f("b", 2)); - %OptimizeFunctionOnNextCall(f); - checkObject("c", 3, f("c", 3)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/computed-property-names-object-literals-methods.js b/implementation-contributed/v8/mjsunit/es6/computed-property-names-object-literals-methods.js deleted file mode 100644 index 24a357258ab..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/computed-property-names-object-literals-methods.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function ID(x) { - return x; -} - - -(function TestMethodComputedNameString() { - var object = { - a() { return 'A'}, - ['b']() { return 'B'; }, - c() { return 'C'; }, - [ID('d')]() { return 'D'; }, - }; - assertEquals('A', object.a()); - assertEquals('B', object.b()); - assertEquals('C', object.c()); - assertEquals('D', object.d()); - assertArrayEquals(['a', 'b', 'c', 'd'], Object.keys(object)); -})(); - - -(function TestMethodComputedNameNumber() { - var object = { - a() { return 'A'; }, - [1]() { return 'B'; }, - c() { return 'C'; }, - [ID(2)]() { return 'D'; }, - }; - assertEquals('A', object.a()); - assertEquals('B', object[1]()); - assertEquals('C', object.c()); - assertEquals('D', object[2]()); - // Array indexes first. - assertArrayEquals(['1', '2', 'a', 'c'], Object.keys(object)); -})(); - - -(function TestMethodComputedNameSymbol() { - var sym1 = Symbol(); - var sym2 = Symbol(); - var object = { - a() { return 'A'; }, - [sym1]() { return 'B'; }, - c() { return 'C'; }, - [ID(sym2)]() { return 'D'; }, - }; - assertEquals('A', object.a()); - assertEquals('B', object[sym1]()); - assertEquals('C', object.c()); - assertEquals('D', object[sym2]()); - assertArrayEquals(['a', 'c'], Object.keys(object)); - assertArrayEquals([sym1, sym2], Object.getOwnPropertySymbols(object)); -})(); - - -function assertIteratorResult(value, done, result) { - assertEquals({ value: value, done: done}, result); -} - - -(function TestGeneratorComputedName() { - var object = { - *['a']() { - yield 1; - yield 2; - }, - async ['b']() { - return 42; - }, - async *['c']() { - yield 1; - yield 2; - } - }; - assertEquals('a', object.a.name); - assertEquals('b', object.b.name); - assertEquals('c', object.c.name); - - var iter = object.a(); - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(undefined, true, iter.next()); - - assertArrayEquals(['a', 'b', 'c'], Object.keys(object)); -})(); - - -(function TestToNameSideEffects() { - var counter = 0; - var key1 = { - toString: function() { - assertEquals(0, counter++); - return 'b'; - } - }; - var key2 = { - toString: function() { - assertEquals(1, counter++); - return 'd'; - } - }; - var object = { - a() { return 'A'; }, - [key1]() { return 'B'; }, - c() { return 'C'; }, - [key2]() { return 'D'; }, - }; - assertEquals(2, counter); - assertEquals('A', object.a()); - assertEquals('B', object.b()); - assertEquals('C', object.c()); - assertEquals('D', object.d()); - assertArrayEquals(['a', 'b', 'c', 'd'], Object.keys(object)); -})(); - - -(function TestDuplicateKeys() { - 'use strict'; - // ES5 does not allow duplicate keys. - // ES6 does but we haven't changed our code yet. - - var object = { - a() { return 1; }, - ['a']() { return 2; }, - }; - assertEquals(2, object.a()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/computed-property-names-super.js b/implementation-contributed/v8/mjsunit/es6/computed-property-names-super.js deleted file mode 100644 index 40b0eab9422..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/computed-property-names-super.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -function ID(x) { - return x; -} - - -(function TestComputedMethodSuper() { - var proto = { - m() { - return ' proto m'; - } - }; - var object = { - __proto__: proto, - ['a']() { return 'a' + super.m(); }, - [ID('b')]() { return 'b' + super.m(); }, - [0]() { return '0' + super.m(); }, - [ID(1)]() { return '1' + super.m(); }, - }; - - assertSame(object, object.a[%HomeObjectSymbol()]); - - assertEquals('a proto m', object.a()); - assertEquals('b proto m', object.b()); - assertEquals('0 proto m', object[0]()); - assertEquals('1 proto m', object[1]()); -})(); - - -(function TestComputedGetterSuper() { - var proto = { - m() { - return ' proto m'; - } - }; - var object = { - __proto__: proto, - get ['a']() { return 'a' + super.m(); }, - get [ID('b')]() { return 'b' + super.m(); }, - get [0]() { return '0' + super.m(); }, - get [ID(1)]() { return '1' + super.m(); }, - }; - assertEquals('a proto m', object.a); - assertEquals('b proto m', object.b); - assertEquals('0 proto m', object[0]); - assertEquals('1 proto m', object[1]); -})(); - - -(function TestComputedSetterSuper() { - var value; - var proto = { - m(name, v) { - value = name + ' ' + v; - } - }; - var object = { - __proto__: proto, - set ['a'](v) { super.m('a', v); }, - set [ID('b')](v) { super.m('b', v); }, - set [0](v) { super.m('0', v); }, - set [ID(1)](v) { super.m('1', v); }, - }; - object.a = 2; - assertEquals('a 2', value); - object.b = 3; - assertEquals('b 3', value); - object[0] = 4; - assertEquals('0 4', value); - object[1] = 5; - assertEquals('1 5', value); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/computed-property-names.js b/implementation-contributed/v8/mjsunit/es6/computed-property-names.js deleted file mode 100644 index d75278cfe3f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/computed-property-names.js +++ /dev/null @@ -1,356 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function ID(x) { - return x; -} - - - -(function TestBasicsString() { - var object = { - a: 'A', - ['b']: 'B', - c: 'C', - [ID('d')]: 'D', - }; - assertEquals('A', object.a); - assertEquals('B', object.b); - assertEquals('C', object.c); - assertEquals('D', object.d); - assertArrayEquals(['a', 'b', 'c', 'd'], Object.keys(object)); -})(); - - -(function TestBasicsNumber() { - var object = { - a: 'A', - [1]: 'B', - c: 'C', - [ID(2)]: 'D', - }; - assertEquals('A', object.a); - assertEquals('B', object[1]); - assertEquals('C', object.c); - assertEquals('D', object[2]); - // Array indexes first. - assertArrayEquals(['1', '2', 'a', 'c'], Object.keys(object)); -})(); - - -(function TestBasicsSymbol() { - var sym1 = Symbol(); - var sym2 = Symbol(); - var object = { - a: 'A', - [sym1]: 'B', - c: 'C', - [ID(sym2)]: 'D', - }; - assertEquals('A', object.a); - assertEquals('B', object[sym1]); - assertEquals('C', object.c); - assertEquals('D', object[sym2]); - assertArrayEquals(['a', 'c'], Object.keys(object)); - assertArrayEquals([sym1, sym2], Object.getOwnPropertySymbols(object)); -})(); - - -(function TestToNameSideEffects() { - var counter = 0; - var key1 = { - toString: function() { - assertEquals(0, counter++); - return 'b'; - } - }; - var key2 = { - toString: function() { - assertEquals(1, counter++); - return 'd'; - } - }; - var object = { - a: 'A', - [key1]: 'B', - c: 'C', - [key2]: 'D', - }; - assertEquals(2, counter); - assertEquals('A', object.a); - assertEquals('B', object.b); - assertEquals('C', object.c); - assertEquals('D', object.d); - assertArrayEquals(['a', 'b', 'c', 'd'], Object.keys(object)); -})(); - - -(function TestToNameSideEffectsNumbers() { - var counter = 0; - var key1 = { - valueOf: function() { - assertEquals(0, counter++); - return 1; - }, - toString: null - }; - var key2 = { - valueOf: function() { - assertEquals(1, counter++); - return 2; - }, - toString: null - }; - - var object = { - a: 'A', - [key1]: 'B', - c: 'C', - [key2]: 'D', - }; - assertEquals(2, counter); - assertEquals('A', object.a); - assertEquals('B', object[1]); - assertEquals('C', object.c); - assertEquals('D', object[2]); - // Array indexes first. - assertArrayEquals(['1', '2', 'a', 'c'], Object.keys(object)); -})(); - - -(function TestDoubleName() { - var object = { - [1.2]: 'A', - [1e55]: 'B', - [0.000001]: 'C', - [-0]: 'D', - // TODO(arv): https://code.google.com/p/v8/issues/detail?id=3815 - // [Infinity]: 'E', - // [-Infinity]: 'F', - [NaN]: 'G', - }; - assertEquals('A', object['1.2']); - assertEquals('B', object['1e+55']); - assertEquals('C', object['0.000001']); - assertEquals('D', object[0]); - // TODO(arv): https://code.google.com/p/v8/issues/detail?id=3815 - // assertEquals('E', object[Infinity]); - // assertEquals('F', object[-Infinity]); - assertEquals('G', object[NaN]); -})(); - - -(function TestGetter() { - var object = { - get ['a']() { - return 'A'; - } - }; - assertEquals('A', object.a); - - object = { - get b() { - assertUnreachable(); - }, - get ['b']() { - return 'B'; - } - }; - assertEquals('B', object.b); - - object = { - get c() { - assertUnreachable(); - }, - get ['c']() { - assertUnreachable(); - }, - get ['c']() { - return 'C'; - } - }; - assertEquals('C', object.c); - - object = { - get ['d']() { - assertUnreachable(); - }, - get d() { - return 'D'; - } - }; - assertEquals('D', object.d); -})(); - - -(function TestSetter() { - var calls = 0; - var object = { - set ['a'](_) { - calls++; - } - }; - object.a = 'A'; - assertEquals(1, calls); - - calls = 0; - object = { - set b(_) { - assertUnreachable(); - }, - set ['b'](_) { - calls++; - } - }; - object.b = 'B'; - assertEquals(1, calls); - - calls = 0; - object = { - set c(_) { - assertUnreachable() - }, - set ['c'](_) { - assertUnreachable() - }, - set ['c'](_) { - calls++ - } - }; - object.c = 'C'; - assertEquals(1, calls); - - calls = 0; - object = { - set ['d'](_) { - assertUnreachable() - }, - set d(_) { - calls++ - } - }; - object.d = 'D'; - assertEquals(1, calls); -})(); - - -(function TestDuplicateKeys() { - 'use strict'; - // ES5 does not allow duplicate keys. - // ES6 does but we haven't changed our code yet. - - var object = { - a: 1, - ['a']: 2, - }; - assertEquals(2, object.a); -})(); - - -(function TestProto() { - var proto = {}; - var object = { - __proto__: proto - }; - assertEquals(proto, Object.getPrototypeOf(object)); - - object = { - '__proto__': proto - }; - assertEquals(proto, Object.getPrototypeOf(object)); - - object = { - ['__proto__']: proto - }; - assertEquals(Object.prototype, Object.getPrototypeOf(object)); - assertEquals(proto, object.__proto__); - assertTrue(object.hasOwnProperty('__proto__')); - - object = { - [ID('x')]: 'X', - __proto__: proto - }; - assertEquals('X', object.x); - assertEquals(proto, Object.getPrototypeOf(object)); -})(); - - -(function TestExceptionInName() { - function MyError() {}; - function throwMyError() { - throw new MyError(); - } - assertThrows(function() { - var o = { - [throwMyError()]: 42 - }; - }, MyError); - assertThrows(function() { - var o = { - get [throwMyError()]() { return 42; } - }; - }, MyError); - assertThrows(function() { - var o = { - set [throwMyError()](_) { } - }; - }, MyError); -})(); - - -(function TestNestedLiterals() { - var array = [ - 42, - { a: 'A', - ['b']: 'B', - c: 'C', - [ID('d')]: 'D', - }, - 43, - ]; - assertEquals(42, array[0]); - assertEquals(43, array[2]); - assertEquals('A', array[1].a); - assertEquals('B', array[1].b); - assertEquals('C', array[1].c); - assertEquals('D', array[1].d); - var object = { - outer: 42, - inner: { - a: 'A', - ['b']: 'B', - c: 'C', - [ID('d')]: 'D', - }, - outer2: 43, - }; - assertEquals(42, object.outer); - assertEquals(43, object.outer2); - assertEquals('A', object.inner.a); - assertEquals('B', object.inner.b); - assertEquals('C', object.inner.c); - assertEquals('D', object.inner.d); - var object = { - outer: 42, - array: [ - 43, - { a: 'A', - ['b']: 'B', - c: 'C', - [ID('d')]: 'D', - }, - 44, - ], - outer2: 45 - }; - assertEquals(42, object.outer); - assertEquals(45, object.outer2); - assertEquals(43, object.array[0]); - assertEquals(44, object.array[2]); - assertEquals('A', object.array[1].a); - assertEquals('B', object.array[1].b); - assertEquals('C', object.array[1].c); - assertEquals('D', object.array[1].d); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/dataview-length.js b/implementation-contributed/v8/mjsunit/es6/dataview-length.js deleted file mode 100644 index 925403924df..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/dataview-length.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -assertEquals(DataView.length, 1); diff --git a/implementation-contributed/v8/mjsunit/es6/debug-promises/throw-with-undefined-reject.js b/implementation-contributed/v8/mjsunit/es6/debug-promises/throw-with-undefined-reject.js deleted file mode 100644 index 6fe3b172bf9..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/debug-promises/throw-with-undefined-reject.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// A non-callable reject function throws eagerly - -var p = new Promise(function(resolve, reject) { - log.push("resolve"); - resolve(); -}); - -function MyPromise(resolver) { - var reject = undefined; - var resolve = function() { }; - resolver(resolve, reject); -}; - -MyPromise.prototype = new Promise(function() {}); -MyPromise.__proto__ = Promise; -p.constructor = MyPromise; - -assertThrows(()=> p.then(function() { }), TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/default-parameters-destructuring.js b/implementation-contributed/v8/mjsunit/es6/default-parameters-destructuring.js deleted file mode 100644 index 50071f0e346..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/default-parameters-destructuring.js +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function TestSloppyEvalScoping() { - var x = 1; - - function f41({[eval("var x = 2; 'a'")]: w}, z = x) { return z; } - assertEquals(1, f41({})); - assertEquals(1, f41({a: 0})); - function f42({[eval("var x = 2; 'a'")]: w}, z = eval("x")) { return z; } - assertEquals(1, f42({})); - assertEquals(1, f42({a: 0})); - function f43({a: w = eval("var x = 2")}, z = x) { return z; } - assertEquals(1, f43({})); - assertEquals(1, f43({a: 0})); - function f44({a: w = eval("var x = 2")}, z = eval("x")) { return z; } - assertEquals(1, f44({})); - assertEquals(1, f44({a: 0})); - - function f5({a = eval("var x = 2"), b = x}) { return b; } - assertEquals(2, f5({})); - assertEquals(1, f5({a: 0})); - function f6({a = eval("var x = 2"), b = eval("x")}) { return b; } - assertEquals(2, f6({})); - assertEquals(1, f6({a: 0})); - function f71({[eval("var x = 2; 'a'")]: w, b = x}) { return b; } - assertEquals(2, f71({})); - assertEquals(2, f71({a: 0})); - function f72({[eval("var x = 2; 'a'")]: w, b = eval("x")}) { return b; } - assertEquals(2, f72({})); - assertEquals(2, f72({a: 0})); - function f73({a: w = eval("var x = 2"), b = x}) { return b; } - assertEquals(2, f73({})); - assertEquals(1, f73({a: 0})); - function f74({a: w = eval("var x = 2"), b = eval("x")}) { return b; } - assertEquals(2, f74({})); - assertEquals(1, f74({a: 0})); - - var g41 = ({[eval("var x = 2; 'a'")]: w}, z = x) => { return z; }; - assertEquals(1, g41({})); - assertEquals(1, g41({a: 0})); - var g42 = ({[eval("var x = 2; 'a'")]: w}, z = eval("x")) => { return z; }; - assertEquals(1, g42({})); - assertEquals(1, g42({a: 0})); - var g43 = ({a: w = eval("var x = 2")}, z = x) => { return z; }; - assertEquals(1, g43({})); - assertEquals(1, g43({a: 0})); - var g44 = ({a: w = eval("var x = 2")}, z = eval("x")) => { return z; }; - assertEquals(1, g44({})); - assertEquals(1, g44({a: 0})); - - var g5 = ({a = eval("var x = 2"), b = x}) => { return b; }; - assertEquals(2, g5({})); - assertEquals(1, g5({a: 0})); - var g6 = ({a = eval("var x = 2"), b = eval("x")}) => { return b; }; - assertEquals(2, g6({})); - assertEquals(1, g6({a: 0})); - var g71 = ({[eval("var x = 2; 'a'")]: w, b = x}) => { return b; }; - assertEquals(2, g71({})); - assertEquals(2, g71({a: 0})); - var g72 = ({[eval("var x = 2; 'a'")]: w, b = eval("x")}) => { return b; }; - assertEquals(2, g72({})); - assertEquals(2, g72({a: 0})); - var g73 = ({a: w = eval("var x = 2"), b = x}) => { return b; }; - assertEquals(2, g73({})); - assertEquals(1, g73({a: 0})); - var g74 = ({a: w = eval("var x = 2"), b = eval("x")}) => { return b; }; - assertEquals(2, g74({})); - assertEquals(1, g74({a: 0})); -})(); - - -(function TestStrictEvalScoping() { - 'use strict'; - var x = 1; - - function f41({[eval("var x = 2; 'a'")]: w}, z = x) { return z; } - assertEquals(1, f41({})); - assertEquals(1, f41({a: 0})); - function f42({[eval("var x = 2; 'a'")]: w}, z = eval("x")) { return z; } - assertEquals(1, f42({})); - assertEquals(1, f42({a: 0})); - function f43({a: w = eval("var x = 2")}, z = x) { return z; } - assertEquals(1, f43({})); - assertEquals(1, f43({a: 0})); - function f44({a: w = eval("var x = 2")}, z = eval("x")) { return z; } - assertEquals(1, f44({})); - assertEquals(1, f44({a: 0})); - - function f5({a = eval("var x = 2"), b = x}) { return b; } - assertEquals(1, f5({})); - assertEquals(1, f5({a: 0})); - function f6({a = eval("var x = 2"), b = eval("x")}) { return b; } - assertEquals(1, f6({})); - assertEquals(1, f6({a: 0})); - function f71({[eval("var x = 2; 'a'")]: w, b = x}) { return b; } - assertEquals(1, f71({})); - assertEquals(1, f71({a: 0})); - function f72({[eval("var x = 2; 'a'")]: w, b = eval("x")}) { return b; } - assertEquals(1, f72({})); - assertEquals(1, f72({a: 0})); - function f73({a: w = eval("var x = 2"), b = x}) { return b; } - assertEquals(1, f73({})); - assertEquals(1, f73({a: 0})); - function f74({a: w = eval("var x = 2"), b = eval("x")}) { return b; } - assertEquals(1, f74({})); - assertEquals(1, f74({a: 0})); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/default-parameters.js b/implementation-contributed/v8/mjsunit/es6/default-parameters.js deleted file mode 100644 index c0fe031c039..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/default-parameters.js +++ /dev/null @@ -1,364 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function TestDefaults() { - function f1(x = 1) { return x } - assertEquals(1, f1()); - assertEquals(1, f1(undefined)); - assertEquals(2, f1(2)); - assertEquals(null, f1(null)); - - function f2(x, y = x) { return x + y; } - assertEquals(8, f2(4)); - assertEquals(8, f2(4, undefined)); - assertEquals(6, f2(4, 2)); - - function f3(x = 1, y) { return x + y; } - assertEquals(8, f3(5, 3)); - assertEquals(3, f3(undefined, 2)); - assertEquals(6, f3(4, 2)); - - function f4(x = () => 1) { return x() } - assertEquals(1, f4()); - assertEquals(1, f4(undefined)); - assertEquals(2, f4(() => 2)); - assertThrows(() => f4(null), TypeError); - - function f5(x, y = () => x) { return x + y(); } - assertEquals(8, f5(4)); - assertEquals(8, f5(4, undefined)); - assertEquals(6, f5(4, () => 2)); - - function f6(x = {a: 1, m() { return 2 }}) { return x.a + x.m(); } - assertEquals(3, f6()); - assertEquals(3, f6(undefined)); - assertEquals(5, f6({a: 2, m() { return 3 }})); - - var g1 = (x = 1) => { return x }; - assertEquals(1, g1()); - assertEquals(1, g1(undefined)); - assertEquals(2, g1(2)); - assertEquals(null, g1(null)); - - var g2 = (x, y = x) => { return x + y; }; - assertEquals(8, g2(4)); - assertEquals(8, g2(4, undefined)); - assertEquals(6, g2(4, 2)); - - var g3 = (x = 1, y) => { return x + y; }; - assertEquals(8, g3(5, 3)); - assertEquals(3, g3(undefined, 2)); - assertEquals(6, g3(4, 2)); - - var g4 = (x = () => 1) => { return x() }; - assertEquals(1, g4()); - assertEquals(1, g4(undefined)); - assertEquals(2, g4(() => 2)); - assertThrows(() => g4(null), TypeError); - - var g5 = (x, y = () => x) => { return x + y(); }; - assertEquals(8, g5(4)); - assertEquals(8, g5(4, undefined)); - assertEquals(6, g5(4, () => 2)); - - var g6 = (x = {a: 1, m() { return 2 }}) => { return x.a + x.m(); }; - assertEquals(3, g6()); - assertEquals(3, g6(undefined)); - assertEquals(5, g6({a: 2, m() { return 3 }})); -}()); - - -(function TestEvalInParameters() { - function f1(x = eval(0)) { return x } - assertEquals(0, f1()); - function f2(x = () => eval(1)) { return x() } - assertEquals(1, f2()); -})(); - - -(function TestParameterScopingSloppy() { - var x = 1; - - function f1(a = x) { var x = 2; return a; } - assertEquals(1, f1()); - function f2(a = x) { function x() {}; return a; } - assertEquals(1, f2()); - function f3(a = eval("x")) { var x; return a; } - assertEquals(1, f3()); - function f31(a = eval("'use strict'; x")) { var x; return a; } - assertEquals(1, f31()); - function f4(a = function() { return x }) { var x; return a(); } - assertEquals(1, f4()); - function f5(a = () => x) { var x; return a(); } - assertEquals(1, f5()); - function f6(a = () => eval("x")) { var x; return a(); } - assertEquals(1, f6()); - function f61(a = () => { 'use strict'; return eval("x") }) { var x; return a(); } - assertEquals(1, f61()); - function f62(a = () => eval("'use strict'; x")) { var x; return a(); } - assertEquals(1, f62()); - - var g1 = (a = x) => { var x = 2; return a; }; - assertEquals(1, g1()); - var g2 = (a = x) => { function x() {}; return a; }; - assertEquals(1, g2()); - var g3 = (a = eval("x")) => { var x; return a; }; - assertEquals(1, g3()); - var g31 = (a = eval("'use strict'; x")) => { var x; return a; }; - assertEquals(1, g31()); - var g4 = (a = function() { return x }) => { var x; return a(); }; - assertEquals(1, g4()); - var g5 = (a = () => x) => { var x; return a(); }; - assertEquals(1, g5()); - var g6 = (a = () => eval("x")) => { var x; return a(); }; - assertEquals(1, g6()); - var g61 = (a = () => { 'use strict'; return eval("x") }) => { var x; return a(); }; - assertEquals(1, g61()); - var g62 = (a = () => eval("'use strict'; x")) => { var x; return a(); }; - assertEquals(1, g62()); - - var f11 = function f(x = f) { var f; return x; } - assertSame(f11, f11()); - var f12 = function f(x = f) { function f() {}; return x; } - assertSame(f12, f12()); - var f13 = function f(f = 7, x = f) { return x; } - assertSame(7, f13()); - - var o1 = {f: function(x = this) { return x; }}; - assertSame(o1, o1.f()); - assertSame(1, o1.f(1)); -})(); - -(function TestParameterScopingStrict() { - "use strict"; - var x = 1; - - function f1(a = x) { let x = 2; return a; } - assertEquals(1, f1()); - function f2(a = x) { const x = 2; return a; } - assertEquals(1, f2()); - function f3(a = x) { function x() {}; return a; } - assertEquals(1, f3()); - function f4(a = eval("x")) { var x; return a; } - assertEquals(1, f4()); - function f5(a = () => eval("x")) { var x; return a(); } - assertEquals(1, f5()); - - var g1 = (a = x) => { let x = 2; return a; }; - assertEquals(1, g1()); - var g2 = (a = x) => { const x = 2; return a; }; - assertEquals(1, g2()); - var g3 = (a = x) => { function x() {}; return a; }; - assertEquals(1, g3()); - var g4 = (a = eval("x")) => { var x; return a; }; - assertEquals(1, g4()); - var g5 = (a = () => eval("x")) => { var x; return a(); }; - assertEquals(1, g5()); - - var f11 = function f(x = f) { let f; return x; } - assertSame(f11, f11()); - var f12 = function f(x = f) { const f = 0; return x; } - assertSame(f12, f12()); - var f13 = function f(x = f) { function f() {}; return x; } - assertSame(f13, f13()); -})(); - -(function TestSloppyEvalScoping() { - var x = 1; - - function f1(y = eval("var x = 2")) { with ({}) { return x; } } - assertEquals(1, f1()); - function f2(y = eval("var x = 2"), z = x) { return z; } - assertEquals(1, f2()); - assertEquals(1, f2(0)); - function f3(y = eval("var x = 2"), z = eval("x")) { return z; } - assertEquals(1, f3()); - assertEquals(1, f3(0)); - function f8(y = (eval("var x = 2"), x)) { return y; } - assertEquals(2, f8()); - assertEquals(0, f8(0)); - - function f11(z = eval("var y = 2")) { return y; } - assertThrows(f11, ReferenceError); - function f12(z = eval("var y = 2"), b = y) {} - assertThrows(f12, ReferenceError); - function f13(z = eval("var y = 2"), b = eval("y")) {} - assertThrows(f13, ReferenceError); - - function f21(f = () => x) { eval("var x = 2"); return f() } - assertEquals(1, f21()); - assertEquals(3, f21(() => 3)); - function f22(f = () => eval("x")) { eval("var x = 2"); return f() } - assertEquals(1, f22()); - assertEquals(3, f22(() => 3)); - - var g1 = (y = eval("var x = 2")) => { with ({}) { return x; } }; - assertEquals(1, g1()); - var g2 = (y = eval("var x = 2"), z = x) => { return z; }; - assertEquals(1, g2()); - assertEquals(1, g2(0)); - var g3 = (y = eval("var x = 2"), z = eval("x")) => { return z; }; - assertEquals(1, g3()); - assertEquals(1, g3(0)); - var g8 = (y = (eval("var x = 2"), x)) => { return y; }; - assertEquals(2, g8()); - assertEquals(0, g8(0)); - - var g11 = (z = eval("var y = 2")) => { return y; }; - assertThrows(g11, ReferenceError); - var g12 = (z = eval("var y = 2"), b = y) => {}; - assertThrows(g12, ReferenceError); - var g13 = (z = eval("var y = 2"), b = eval("y")) => {}; - assertThrows(g13, ReferenceError); - - var g21 = (f = () => x) => { eval("var x = 2"); return f() }; - assertEquals(1, g21()); - assertEquals(3, g21(() => 3)); - var g22 = (f = () => eval("x")) => { eval("var x = 2"); return f() }; - assertEquals(1, g22()); - assertEquals(3, g22(() => 3)); -})(); - - -(function TestStrictEvalScoping() { - 'use strict'; - var x = 1; - - function f1(y = eval("var x = 2")) { return x; } - assertEquals(1, f1()); - function f2(y = eval("var x = 2"), z = x) { return z; } - assertEquals(1, f2()); - assertEquals(1, f2(0)); - function f3(y = eval("var x = 2"), z = eval("x")) { return z; } - assertEquals(1, f3()); - assertEquals(1, f3(0)); - function f8(y = (eval("var x = 2"), x)) { return y; } - assertEquals(1, f8()); - assertEquals(0, f8(0)); - - function f11(z = eval("var y = 2")) { return y; } - assertThrows(f11, ReferenceError); - function f12(z = eval("var y = 2"), b = y) {} - assertThrows(f12, ReferenceError); - function f13(z = eval("var y = 2"), b = eval("y")) {} - assertThrows(f13, ReferenceError); - - function f21(f = () => x) { eval("var x = 2"); return f() } - assertEquals(1, f21()); - assertEquals(3, f21(() => 3)); - function f22(f = () => eval("x")) { eval("var x = 2"); return f() } - assertEquals(1, f22()); - assertEquals(3, f22(() => 3)); -})(); - -(function TestParameterTDZSloppy() { - function f1(a = x, x) { return a } - assertThrows(() => f1(undefined, 4), ReferenceError); - assertEquals(4, f1(4, 5)); - function f2(a = eval("x"), x) { return a } - assertThrows(() => f2(undefined, 4), ReferenceError); - assertEquals(4, f2(4, 5)); - function f3(a = eval("'use strict'; x"), x) { return a } - assertThrows(() => f3(undefined, 4), ReferenceError); - assertEquals(4, f3(4, 5)); - function f4(a = () => x, x) { return a() } - assertEquals(4, f4(() => 4, 5)); - function f5(a = () => eval("x"), x) { return a() } - assertEquals(4, f5(() => 4, 5)); - function f6(a = () => eval("'use strict'; x"), x) { return a() } - assertEquals(4, f6(() => 4, 5)); - - function f11(a = x, x = 2) { return a } - assertThrows(() => f11(), ReferenceError); - assertThrows(() => f11(undefined), ReferenceError); - assertThrows(() => f11(undefined, 4), ReferenceError); - assertEquals(4, f1(4, 5)); - function f12(a = eval("x"), x = 2) { return a } - assertThrows(() => f12(), ReferenceError); - assertThrows(() => f12(undefined), ReferenceError); - assertThrows(() => f12(undefined, 4), ReferenceError); - assertEquals(4, f12(4, 5)); - function f13(a = eval("'use strict'; x"), x = 2) { return a } - assertThrows(() => f13(), ReferenceError); - assertThrows(() => f13(undefined), ReferenceError); - assertThrows(() => f13(undefined, 4), ReferenceError); - assertEquals(4, f13(4, 5)); - - function f21(x = function() { return a }, ...a) { return x()[0] } - assertEquals(4, f21(undefined, 4)); - function f22(x = () => a, ...a) { return x()[0] } - assertEquals(4, f22(undefined, 4)); - function f23(x = () => eval("a"), ...a) { return x()[0] } - assertEquals(4, f23(undefined, 4)); - function f24(x = () => {'use strict'; return eval("a") }, ...a) { - return x()[0] - } - assertEquals(4, f24(undefined, 4)); - function f25(x = () => eval("'use strict'; a"), ...a) { return x()[0] } - assertEquals(4, f25(undefined, 4)); - - var g1 = (x = function() { return a }, ...a) => { return x()[0] }; - assertEquals(4, g1(undefined, 4)); - var g2 = (x = () => a, ...a) => { return x()[0] }; - assertEquals(4, g2(undefined, 4)); -})(); - -(function TestParameterTDZStrict() { - "use strict"; - - function f1(a = eval("x"), x) { return a } - assertThrows(() => f1(undefined, 4), ReferenceError); - assertEquals(4, f1(4, 5)); - function f2(a = () => eval("x"), x) { return a() } - assertEquals(4, f2(() => 4, 5)); - - function f11(a = eval("x"), x = 2) { return a } - assertThrows(() => f11(), ReferenceError); - assertThrows(() => f11(undefined), ReferenceError); - assertThrows(() => f11(undefined, 4), ReferenceError); - assertEquals(4, f11(4, 5)); - - function f21(x = () => eval("a"), ...a) { return x()[0] } - assertEquals(4, f21(undefined, 4)); -})(); - -(function TestArgumentsForNonSimpleParameters() { - function f1(x = 900) { arguments[0] = 1; return x } - assertEquals(9, f1(9)); - assertEquals(900, f1()); - function f2(x = 1001) { x = 2; return arguments[0] } - assertEquals(10, f2(10)); - assertEquals(undefined, f2()); -}()); - - -(function TestFunctionLength() { - assertEquals(0, (function(x = 1) {}).length); - assertEquals(0, (function(x = 1, ...a) {}).length); - assertEquals(1, (function(x, y = 1) {}).length); - assertEquals(1, (function(x, y = 1, ...a) {}).length); - assertEquals(2, (function(x, y, z = 1) {}).length); - assertEquals(2, (function(x, y, z = 1, ...a) {}).length); - assertEquals(1, (function(x, y = 1, z) {}).length); - assertEquals(1, (function(x, y = 1, z, ...a) {}).length); - assertEquals(1, (function(x, y = 1, z, v = 2) {}).length); - assertEquals(1, (function(x, y = 1, z, v = 2, ...a) {}).length); -})(); - -(function TestDirectiveThrows() { - "use strict"; - - assertThrows("(function(x=1){'use strict';})", SyntaxError); - assertThrows("(x=1) => {'use strict';}", SyntaxError); - assertThrows("(class{foo(x=1) {'use strict';}});", SyntaxError); - - assertThrows("(function(a, x=1){'use strict';})", SyntaxError); - assertThrows("(a, x=1) => {'use strict';}", SyntaxError); - assertThrows("(class{foo(a, x=1) {'use strict';}});", SyntaxError); - - assertThrows("(function({x}){'use strict';})", SyntaxError); - assertThrows("({x}) => {'use strict';}", SyntaxError); - assertThrows("(class{foo({x}) {'use strict';}});", SyntaxError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/destructuring-assignment-lazy.js b/implementation-contributed/v8/mjsunit/es6/destructuring-assignment-lazy.js deleted file mode 100644 index ac3cbf0f415..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/destructuring-assignment-lazy.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - var a, b; - [ a, b ] = [1, 2]; - assertEquals(1, a); - assertEquals(2, b); -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/es6/destructuring-assignment.js b/implementation-contributed/v8/mjsunit/es6/destructuring-assignment.js deleted file mode 100644 index 7f61e023fc6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/destructuring-assignment.js +++ /dev/null @@ -1,631 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// script-level tests -var ox, oy = {}, oz; -({ - x: ox, - y: oy.value, - y2: oy["value2"], - z: ({ set v(val) { oz = val; } }).v -} = { - x: "value of x", - y: "value of y1", - y2: "value of y2", - z: "value of z" -}); -assertEquals("value of x", ox); -assertEquals("value of y1", oy.value); -assertEquals("value of y2", oy.value2); -assertEquals("value of z", oz); - -[ox, oy.value, oy["value2"], ...{ set v(val) { oz = val; } }.v] = [ - 1007, - 798432, - 555, - 1, 2, 3, 4, 5 -]; -assertEquals(ox, 1007); -assertEquals(oy.value, 798432); -assertEquals(oy.value2, 555); -assertEquals(oz, [1, 2, 3, 4, 5]); - - -(function testInFunction() { - var x, y = {}, z; - ({ - x: x, - y: y.value, - y2: y["value2"], - z: ({ set v(val) { z = val; } }).v - } = { - x: "value of x", - y: "value of y1", - y2: "value of y2", - z: "value of z" - }); - assertEquals("value of x", x); - assertEquals("value of y1", y.value); - assertEquals("value of y2", y.value2); - assertEquals("value of z", z); - - [x, y.value, y["value2"], ...{ set v(val) { z = val; } }.v] = [ - 1007, - 798432, - 555, - 1, 2, 3, 4, 5 - ]; - assertEquals(x, 1007); - assertEquals(y.value, 798432); - assertEquals(y.value2, 555); - assertEquals(z, [1, 2, 3, 4, 5]); -})(); - - -(function testArrowFunctionInitializers() { - var fn = (config = { - value: defaults.value, - nada: { nada: defaults.nada } = { nada: "nothing" } - } = { value: "BLAH" }) => config; - var defaults = {}; - assertEquals({ value: "BLAH" }, fn()); - assertEquals("BLAH", defaults.value); - assertEquals("nothing", defaults.nada); -})(); - - -(function testArrowFunctionInitializers2() { - var fn = (config = [ - defaults.value, - { nada: defaults.nada } = { nada: "nothing" } - ] = ["BLAH"]) => config; - var defaults = {}; - assertEquals(["BLAH"], fn()); - assertEquals("BLAH", defaults.value); - assertEquals("nothing", defaults.nada); -})(); - - -(function testFunctionInitializers() { - function fn(config = { - value: defaults.value, - nada: { nada: defaults.nada } = { nada: "nothing" } - } = { value: "BLAH" }) { - return config; - } - var defaults = {}; - assertEquals({ value: "BLAH" }, fn()); - assertEquals("BLAH", defaults.value); - assertEquals("nothing", defaults.nada); -})(); - - -(function testFunctionInitializers2() { - function fn(config = [ - defaults.value, - { nada: defaults.nada } = { nada: "nothing" } - ] = ["BLAH"]) { return config; } - var defaults = {}; - assertEquals(["BLAH"], fn()); - assertEquals("BLAH", defaults.value); - assertEquals("nothing", defaults.nada); -})(); - - -(function testDeclarationInitializers() { - var defaults = {}; - var { value } = { value: defaults.value } = { value: "BLAH" }; - assertEquals("BLAH", value); - assertEquals("BLAH", defaults.value); -})(); - - -(function testDeclarationInitializers2() { - var defaults = {}; - var [value] = [defaults.value] = ["BLAH"]; - assertEquals("BLAH", value); - assertEquals("BLAH", defaults.value); -})(); - - -(function testObjectLiteralProperty() { - var ext = {}; - var obj = { - a: { b: ext.b, c: ext["c"], d: { set v(val) { ext.d = val; } }.v } = { - b: "b", c: "c", d: "d" } - }; - assertEquals({ b: "b", c: "c", d: "d" }, ext); - assertEquals({ a: { b: "b", c: "c", d: "d" } }, obj); -})(); - - -(function testArrayLiteralProperty() { - var ext = {}; - var obj = [ - ...[ ext.b, ext["c"], { set v(val) { ext.d = val; } }.v ] = [ - "b", "c", "d" ] - ]; - assertEquals({ b: "b", c: "c", d: "d" }, ext); - assertEquals([ "b", "c", "d" ], obj); -})(); - - -// TODO(caitp): add similar test for ArrayPatterns, once Proxies support -// delegating symbol-keyed get/set. -(function testObjectPatternOperationOrder() { - var steps = []; - var store = {}; - function computePropertyName(name) { - steps.push("compute name: " + name); - return name; - } - function loadValue(descr, value) { - steps.push("load: " + descr + " > " + value); - return value; - } - function storeValue(descr, name, value) { - steps.push("store: " + descr + " = " + value); - store[name] = value; - } - var result = { - get a() { assertUnreachable(); }, - set a(value) { storeValue("result.a", "a", value); }, - get b() { assertUnreachable(); }, - set b(value) { storeValue("result.b", "b", value); } - }; - - ({ - obj: { - x: result.a = 10, - [computePropertyName("y")]: result.b = false, - } = {} - } = { obj: { - get x() { return loadValue(".temp.obj.x", undefined); }, - set x(value) { assertUnreachable(); }, - get y() { return loadValue(".temp.obj.y", undefined); }, - set y(value) { assertUnreachable(); } - }}); - - assertPropertiesEqual({ - a: 10, - b: false - }, store); - - assertArrayEquals([ - "load: .temp.obj.x > undefined", - "store: result.a = 10", - - "compute name: y", - "load: .temp.obj.y > undefined", - "store: result.b = false" - ], steps); - - steps = []; - - ({ - obj: { - x: result.a = 50, - [computePropertyName("y")]: result.b = "hello", - } = {} - } = { obj: { - get x() { return loadValue(".temp.obj.x", 20); }, - set x(value) { assertUnreachable(); }, - get y() { return loadValue(".temp.obj.y", true); }, - set y(value) { assertUnreachable(); } - }}); - - assertPropertiesEqual({ - a: 20, - b: true - }, store); - - assertArrayEquals([ - "load: .temp.obj.x > 20", - "store: result.a = 20", - "compute name: y", - "load: .temp.obj.y > true", - "store: result.b = true", - ], steps); -})(); - -// Credit to Mike Pennisi and other Test262 contributors for originally writing -// the testse the following are based on. -(function testArrayElision() { - var value = [1, 2, 3, 4, 5, 6, 7, 8, 9]; - var a, obj = {}; - var result = [, a, , obj.b, , ...obj["rest"]] = value; - - assertEquals(result, value); - assertEquals(2, a); - assertEquals(4, obj.b); - assertArrayEquals([6, 7, 8, 9], obj.rest); -})(); - -(function testArrayElementInitializer() { - function test(value, initializer, expected) { - var a, obj = {}; - var initialized = false; - var shouldBeInitialized = value[0] === undefined; - assertEquals(value, [ a = (initialized = true, initializer) ] = value); - assertEquals(expected, a); - assertEquals(shouldBeInitialized, initialized); - - var initialized2 = false; - assertEquals(value, [ obj.a = (initialized2 = true, initializer) ] = value); - assertEquals(expected, obj.a); - assertEquals(shouldBeInitialized, initialized2); - } - - test([], "BAM!", "BAM!"); - test([], "BOOP!", "BOOP!"); - test([null], 123, null); - test([undefined], 456, 456); - test([,], "PUPPIES", "PUPPIES"); - - (function accept_IN() { - var value = [], x; - assertEquals(value, [ x = 'x' in {} ] = value); - assertEquals(false, x); - })(); - - (function ordering() { - var x = 0, a, b, value = []; - assertEquals(value, [ a = x += 1, b = x *= 2 ] = value); - assertEquals(1, a); - assertEquals(2, b); - assertEquals(2, x); - })(); - - (function yieldExpression() { - var value = [], it, result, x; - it = (function*() { - result = [ x = yield ] = value; - })(); - var next = it.next(); - - assertEquals(undefined, result); - assertEquals(undefined, next.value); - assertEquals(false, next.done); - assertEquals(undefined, x); - - next = it.next(86); - - assertEquals(value, result); - assertEquals(undefined, next.value); - assertEquals(true, next.done); - assertEquals(86, x); - })(); - - (function yieldIdentifier() { - var value = [], yield = "BOOP!", x; - assertEquals(value, [ x = yield ] = value); - assertEquals("BOOP!", x); - })(); - - assertThrows(function let_TDZ() { - "use strict"; - var x; - [ x = y ] = []; - let y; - }, ReferenceError); -})(); - - -(function testArrayElementNestedPattern() { - assertThrows(function nestedArrayRequireObjectCoercibleNull() { - var x; [ [ x ] ] = [ null ]; - }, TypeError); - - assertThrows(function nestedArrayRequireObjectCoercibleUndefined() { - var x; [ [ x ] ] = [ undefined ]; - }, TypeError); - - assertThrows(function nestedArrayRequireObjectCoercibleUndefined2() { - var x; [ [ x ] ] = [ ]; - }, TypeError); - - assertThrows(function nestedArrayRequireObjectCoercibleUndefined3() { - var x; [ [ x ] ] = [ , ]; - }, TypeError); - - assertThrows(function nestedObjectRequireObjectCoercibleNull() { - var x; [ { x } ] = [ null ]; - }, TypeError); - - assertThrows(function nestedObjectRequireObjectCoercibleUndefined() { - var x; [ { x } ] = [ undefined ]; - }, TypeError); - - assertThrows(function nestedObjectRequireObjectCoercibleUndefined2() { - var x; [ { x } ] = [ ]; - }, TypeError); - - assertThrows(function nestedObjectRequireObjectCoercibleUndefined3() { - var x; [ { x } ] = [ , ]; - }, TypeError); - - (function nestedArray() { - var x, value = [ [ "zap", "blonk" ] ]; - assertEquals(value, [ [ , x ] ] = value); - assertEquals("blonk", x); - })(); - - (function nestedObject() { - var x, value = [ { a: "zap", b: "blonk" } ]; - assertEquals(value, [ { b: x } ] = value); - assertEquals("blonk", x); - })(); -})(); - -(function testArrayRestElement() { - (function testBasic() { - var x, rest, array = [1, 2, 3]; - assertEquals(array, [x, ...rest] = array); - assertEquals(1, x); - assertEquals([2, 3], rest); - - array = [4, 5, 6]; - assertEquals(array, [, ...rest] = array); - assertEquals([5, 6], rest); - - })(); - - (function testNestedRestObject() { - var value = [1, 2, 3], x; - assertEquals(value, [...{ 1: x }] = value); - assertEquals(2, x); - })(); - - (function iterable() { - var count = 0; - var x, y, z; - function* g() { - count++; - yield; - count++; - yield; - count++; - yield; - } - var it = g(); - assertEquals(it, [...x] = it); - assertEquals([undefined, undefined, undefined], x); - assertEquals(3, count); - - it = [g()]; - assertEquals(it, [ [...y] ] = it); - assertEquals([undefined, undefined, undefined], y); - assertEquals(6, count); - - it = { a: g() }; - assertEquals(it, { a: [...z] } = it); - assertEquals([undefined, undefined, undefined], z); - assertEquals(9, count); - })(); -})(); - -(function testRequireObjectCoercible() { - assertThrows(() => ({} = undefined), TypeError); - assertThrows(() => ({} = null), TypeError); - assertThrows(() => [] = undefined, TypeError); - assertThrows(() => [] = null, TypeError); - assertEquals("test", ({} = "test")); - assertEquals("test", [] = "test"); - assertEquals(123, ({} = 123)); -})(); - -(function testConstReassignment() { - "use strict"; - const c = "untouchable"; - assertThrows(() => { [ c ] = [ "nope!" ]; }, TypeError); - assertThrows(() => { [ [ c ] ] = [ [ "nope!" ] ]; }, TypeError); - assertThrows(() => { [ { c } ] = [ { c: "nope!" } ]; }, TypeError); - assertThrows(() => { ({ c } = { c: "nope!" }); }, TypeError); - assertThrows(() => { ({ a: { c } } = { a: { c: "nope!" } }); }, TypeError); - assertThrows(() => { ({ a: [ c ] } = { a: [ "nope!" ] }); }, TypeError); - assertEquals("untouchable", c); -})(); - -(function testForIn() { - var log = []; - var x = {}; - var object = { - "Apenguin": 1, - "\u{1F382}cake": 2, - "Bpuppy": 3, - "Cspork": 4 - }; - for ([x.firstLetter, ...x.rest] in object) { - if (x.firstLetter === "A") { - assertEquals(["p", "e", "n", "g", "u", "i", "n"], x.rest); - continue; - } - if (x.firstLetter === "C") { - assertEquals(["s", "p", "o", "r", "k"], x.rest); - break; - } - log.push({ firstLetter: x.firstLetter, rest: x.rest }); - } - assertEquals([ - { firstLetter: "\u{1F382}", rest: ["c", "a", "k", "e"] }, - { firstLetter: "B", rest: ["p", "u", "p", "p", "y"] }, - ], log); -})(); - -(function testForOf() { - var log = []; - var x = {}; - var names = [ - "Apenguin", - "\u{1F382}cake", - "Bpuppy", - "Cspork" - ]; - for ([x.firstLetter, ...x.rest] of names) { - if (x.firstLetter === "A") { - assertEquals(["p", "e", "n", "g", "u", "i", "n"], x.rest); - continue; - } - if (x.firstLetter === "C") { - assertEquals(["s", "p", "o", "r", "k"], x.rest); - break; - } - log.push({ firstLetter: x.firstLetter, rest: x.rest }); - } - assertEquals([ - { firstLetter: "\u{1F382}", rest: ["c", "a", "k", "e"] }, - { firstLetter: "B", rest: ["p", "u", "p", "p", "y"] }, - ], log); -})(); - -(function testNewTarget() { - assertThrows("(function() { [...new.target] = []; })", SyntaxError); - assertThrows("(function() { [a] = [...new.target] = []; })", SyntaxError); - assertThrows("(function() { [new.target] = []; })", SyntaxError); - assertThrows("(function() { [a] = [new.target] = []; })", SyntaxError); - assertThrows("(function() { ({ a: new.target] = {a: 0}); })", SyntaxError); - assertThrows("(function() { ({ a } = { a: new.target } = {}); })", - SyntaxError); - - function ReturnNewTarget1() { - var result; - [result = new.target] = []; - return result; - } - - function ReturnNewTarget2() { - var result; - [result] = [new.target]; - return result; - } - - function ReturnNewTarget3() { - var result; - ({ result = new.target } = {}); - return result; - } - - function ReturnNewTarget4() { - var result; - ({ result } = { result: new.target }); - return result; - } - - function FakeNewTarget() {} - - function construct() { - assertEquals(undefined, ReturnNewTarget1()); - assertEquals(ReturnNewTarget1, new ReturnNewTarget1()); - assertEquals(FakeNewTarget, - Reflect.construct(ReturnNewTarget1, [], FakeNewTarget)); - - assertEquals(undefined, ReturnNewTarget2()); - assertEquals(ReturnNewTarget2, new ReturnNewTarget2()); - assertEquals(FakeNewTarget, - Reflect.construct(ReturnNewTarget2, [], FakeNewTarget)); - - assertEquals(undefined, ReturnNewTarget3()); - assertEquals(ReturnNewTarget3, new ReturnNewTarget3()); - assertEquals(FakeNewTarget, - Reflect.construct(ReturnNewTarget3, [], FakeNewTarget)); - - assertEquals(undefined, ReturnNewTarget4()); - assertEquals(ReturnNewTarget4, new ReturnNewTarget4()); - assertEquals(FakeNewTarget, - Reflect.construct(ReturnNewTarget4, [], FakeNewTarget)); - } - construct(); - FakeNewTarget.prototype = 1; - construct(); -})(); - -(function testSuperCall() { - function ctor(body) { - return () => eval("(class extends Object { \n" + - " constructor() {\n" + - body + - "\n }\n" + - "})"); - } - assertThrows(ctor("({ new: super() } = {})"), SyntaxError); - assertThrows(ctor("({ new: x } = { new: super() } = {})"), SyntaxError); - assertThrows(ctor("[super()] = []"), SyntaxError); - assertThrows(ctor("[x] = [super()] = []"), SyntaxError); - assertThrows(ctor("[...super()] = []"), SyntaxError); - assertThrows(ctor("[x] = [...super()] = []"), SyntaxError); - - class Base { get foo() { return 1; } } - function ext(body) { - return eval("new (class extends Base {\n" + - " constructor() {\n" + - body + ";\n" + - " return { x: super.foo }" + - "\n }\n" + - "})"); - } - assertEquals(1, ext("let x; [x = super()] = []").x); - assertEquals(1, ext("let x, y; [y] = [x = super()] = []").x); - assertEquals(1, ext("let x; [x] = [super()]").x); - assertEquals(1, ext("let x, y; [y] = [x] = [super()]").x); - - assertEquals(1, ext("let x; ({x = super()} = {})").x); - assertEquals(1, ext("let x, y; ({ x: y } = { x = super() } = {})").x); - assertEquals(1, ext("let x; ({x} = { x: super() })").x); - assertEquals(1, ext("let x, y; ({ x: y } = { x } = { x: super() })").x); -})(); - -(function testInvalidReturn() { - function* g() { yield 1; } - - let executed_x_setter; - let executed_return; - var a = { - set x(val) { - executed_x_setter = true; - throw 3; - } - }; - - // The exception from the execution of g().return() should be suppressed by - // the setter error. - executed_x_setter = false; - executed_return = false; - g.prototype.return = function() { - executed_return = true; - throw 4; - }; - assertThrowsEquals("[a.x] = g()", 3); - assertTrue(executed_x_setter); - assertTrue(executed_return); - - // The exception from g().return() not returning an object should be - // suppressed by the setter error. - executed_x_setter = false; - executed_return = false; - g.prototype.return = function() { - assertTrue(executed_return); - return null; - }; - assertThrowsEquals("[a.x] = g()", 3); - assertTrue(executed_x_setter); - assertTrue(executed_return); - - // The TypeError from g().return not being a method should suppress the setter - // error. - executed_x_setter = false; - g.prototype.return = "not a method"; - assertThrows("[a.x] = g()", TypeError); - assertTrue(executed_x_setter); - - // The exception from the access of g().return should suppress the setter - // error. - executed_x_setter = false; - Object.setPrototypeOf(g.prototype, { - get return() { - throw 4; - } - }); - assertThrowsEquals("[a.x] = g()", 4); - assertTrue(executed_x_setter); -}) diff --git a/implementation-contributed/v8/mjsunit/es6/destructuring-parameters-literalcount-nolazy.js b/implementation-contributed/v8/mjsunit/es6/destructuring-parameters-literalcount-nolazy.js deleted file mode 100644 index 0317509194f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/destructuring-parameters-literalcount-nolazy.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --no-lazy --allow-natives-syntax - - -var t1 = [1]; -var t2 = [2]; -var t3 = [3]; -var t4 = [4]; -var t5 = [5]; -function g({x = {a:10,b:20}}, - {y = [1,2,3], - n = [], - p = /abc/}) { - assertSame(10, x.a); - assertSame(20, x.b); - assertSame(2, y[1]); - assertSame(0, n.length); - assertTrue(p.test("abc")); -} -g({},{}); -%OptimizeFunctionOnNextCall(g); -g({},{}); - - -var h = ({x = {a:10,b:20}}, - {y = [1,2,3], - n = [], - p = /abc/ }) => { - assertSame(10, x.a); - assertSame(20, x.b); - assertSame(2, y[1]); - assertSame(0, n.length); - assertTrue(p.test("abc")); - }; -h({},{}); -%OptimizeFunctionOnNextCall(h); -h({},{}); diff --git a/implementation-contributed/v8/mjsunit/es6/destructuring-parameters-literalcount.js b/implementation-contributed/v8/mjsunit/es6/destructuring-parameters-literalcount.js deleted file mode 100644 index 77a32267885..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/destructuring-parameters-literalcount.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - - -var t1 = [1]; -var t2 = [2]; -var t3 = [3]; -var t4 = [4]; -var t5 = [5]; -function g({x = {a:10,b:20}}, - {y = [1,2,3], - n = [], - p = /abc/}) { - assertSame(10, x.a); - assertSame(20, x.b); - assertSame(2, y[1]); - assertSame(0, n.length); - assertTrue(p.test("abc")); -} -g({},{}); -%OptimizeFunctionOnNextCall(g); -g({},{}); - - -var h = ({x = {a:10,b:20}}, - {y = [1,2,3], - n = [], - p = /abc/ }) => { - assertSame(10, x.a); - assertSame(20, x.b); - assertSame(2, y[1]); - assertSame(0, n.length); - assertTrue(p.test("abc")); - }; -h({},{}); -%OptimizeFunctionOnNextCall(h); -h({},{}); diff --git a/implementation-contributed/v8/mjsunit/es6/destructuring.js b/implementation-contributed/v8/mjsunit/es6/destructuring.js deleted file mode 100644 index 30df8c63bf3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/destructuring.js +++ /dev/null @@ -1,1202 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestObjectLiteralPattern() { - var { x : x, y : y, get, set } = { x : 1, y : 2, get: 3, set: 4 }; - assertEquals(1, x); - assertEquals(2, y); - assertEquals(3, get); - assertEquals(4, set); - - var {z} = { z : 3 }; - assertEquals(3, z); - - - var sum = 0; - for (var {z} = { z : 3 }; z != 0; z--) { - sum += z; - } - assertEquals(6, sum); - - - var log = []; - var o = { - get x() { - log.push("x"); - return 0; - }, - get y() { - log.push("y"); - return { - get z() { log.push("z"); return 1; } - } - } - }; - var { x : x0, y : { z : z1 }, x : x1 } = o; - assertSame(0, x0); - assertSame(1, z1); - assertSame(0, x1); - assertArrayEquals(["x", "y", "z", "x"], log); -}()); - - -(function TestObjectLiteralPatternInitializers() { - var { x : x, y : y = 2 } = { x : 1 }; - assertEquals(1, x); - assertEquals(2, y); - - var {z = 3} = {}; - assertEquals(3, z); - - var sum = 0; - for (var {z = 3} = {}; z != 0; z--) { - sum += z; - } - assertEquals(6, sum); - - var log = []; - var o = { - get x() { - log.push("x"); - return undefined; - }, - get y() { - log.push("y"); - return { - get z() { log.push("z"); return undefined; } - } - } - }; - var { x : x0 = 0, y : { z : z1 = 1}, x : x1 = 0} = o; - assertSame(0, x0); - assertSame(1, z1); - assertSame(0, x1); - assertArrayEquals(["x", "y", "z", "x"], log); -}()); - - -(function TestObjectLiteralPatternLexicalInitializers() { - 'use strict'; - let { x : x, y : y = 2 } = { x : 1 }; - assertEquals(1, x); - assertEquals(2, y); - - let {z = 3} = {}; - assertEquals(3, z); - - let log = []; - let o = { - get x() { - log.push("x"); - return undefined; - }, - get y() { - log.push("y"); - return { - get z() { log.push("z"); return undefined; } - } - } - }; - - let { x : x0 = 0, y : { z : z1 = 1 }, x : x1 = 5} = o; - assertSame(0, x0); - assertSame(1, z1); - assertSame(5, x1); - assertArrayEquals(["x", "y", "z", "x"], log); - - let sum = 0; - for (let {x = 0, z = 3} = {}; z != 0; z--) { - assertEquals(0, x); - sum += z; - } - assertEquals(6, sum); -}()); - - -(function TestObjectLiteralPatternLexical() { - 'use strict'; - let { x : x, y : y } = { x : 1, y : 2 }; - assertEquals(1, x); - assertEquals(2, y); - - let {z} = { z : 3 }; - assertEquals(3, z); - - let log = []; - let o = { - get x() { - log.push("x"); - return 0; - }, - get y() { - log.push("y"); - return { - get z() { log.push("z"); return 1; } - } - } - }; - let { x : x0, y : { z : z1 }, x : x1 } = o; - assertSame(0, x0); - assertSame(1, z1); - assertSame(0, x1); - assertArrayEquals(["x", "y", "z", "x"], log); - - let sum = 0; - for (let {x, z} = { x : 0, z : 3 }; z != 0; z--) { - assertEquals(0, x); - sum += z; - } - assertEquals(6, sum); -}()); - - -(function TestObjectLiteralPatternLexicalConst() { - 'use strict'; - const { x : x, y : y } = { x : 1, y : 2 }; - assertEquals(1, x); - assertEquals(2, y); - - assertThrows(function() { x++; }, TypeError); - assertThrows(function() { y++; }, TypeError); - - const {z} = { z : 3 }; - assertEquals(3, z); - - for (const {x, z} = { x : 0, z : 3 }; z != 3 || x != 0;) { - assertTrue(false); - } -}()); - - -(function TestFailingMatchesSloppy() { - var {x, y} = {}; - assertSame(undefined, x); - assertSame(undefined, y); - - var { x : { z1 }, y2} = { x : {}, y2 : 42 } - assertSame(undefined, z1); - assertSame(42, y2); -}()); - - -(function TestFailingMatchesStrict() { - 'use strict'; - var {x, y} = {}; - assertSame(undefined, x); - assertSame(undefined, y); - - var { x : { z1 }, y2} = { x : {}, y2 : 42 } - assertSame(undefined, z1); - assertSame(42, y2); - - { - let {x1,y1} = {}; - assertSame(undefined, x1); - assertSame(undefined, y1); - - let { x : { z1 }, y2} = { x : {}, y2 : 42 } - assertSame(undefined, z1); - assertSame(42, y2); - } -}()); - - -(function TestTDZInIntializers() { - 'use strict'; - { - let {x, y = x} = {x : 42, y : 27}; - assertSame(42, x); - assertSame(27, y); - } - - { - let {x, y = x + 1} = { x : 42 }; - assertSame(42, x); - assertSame(43, y); - } - assertThrows(function() { - let {x = y, y} = { y : 42 }; - }, ReferenceError); - - { - let {x, y = eval("x+1")} = {x:42}; - assertEquals(42, x); - assertEquals(43, y); - } - - { - let {x, y = () => eval("x+1")} = {x:42}; - assertEquals(42, x); - assertEquals(43, y()); - } - - { - let {x = function() {return y+1;}, y} = {y:42}; - assertEquals(43, x()); - assertEquals(42, y); - } - { - let {x = function() {return eval("y+1");}, y} = {y:42}; - assertEquals(43, x()); - assertEquals(42, y); - } -}()); - - -(function TestSideEffectsInInitializers() { - var callCount = 0; - function f(v) { callCount++; return v; } - - callCount = 0; - var { x = f(42) } = { x : 27 }; - assertSame(27, x); - assertEquals(0, callCount); - - callCount = 0; - var { x = f(42) } = {}; - assertSame(42, x); - assertEquals(1, callCount); -}()); - - -(function TestAssignmentExprInInitializers() { - { - let x, y; - { - let { x = y = 1 } = {}; - assertSame(x, 1); - assertSame(y, 1); - } - assertSame(undefined, x); - assertSame(1, y); - } - - { - let x, y; - { - let { x: x = y = 1 } = {}; - assertSame(1, x); - assertSame(1, y); - } - assertSame(undefined, x); - assertSame(1, y); - } - - { - let x, y; - { - let [ x = y = 1 ] = []; - assertSame(1, x); - assertSame(1, y); - } - assertSame(undefined, x); - assertSame(1, y); - } - - { - let x, y; - (function({ x = y = 1 }) {}({})); - assertSame(undefined, x); - assertSame(1, y); - } - - { - let x, y; - (function({ x: x = y = 1 }) {}({})); - assertSame(undefined, x); - assertSame(1, y); - } - - { - let x, y; - (function([ x = y = 1 ]) {}([])); - assertSame(undefined, x); - assertSame(1, y); - } -}()); - - -(function TestMultipleAccesses() { - assertThrows( - "'use strict';"+ - "const {x,x} = {x:1};", - SyntaxError); - - assertThrows( - "'use strict';"+ - "let {x,x} = {x:1};", - SyntaxError); - - (function() { - var {x,x = 2} = {x : 1}; - assertSame(1, x); - }()); - - assertThrows(function () { - 'use strict'; - let {x = (function() { x = 2; }())} = {}; - }, ReferenceError); - - (function() { - 'use strict'; - let {x = (function() { x = 2; }())} = {x:1}; - assertSame(1, x); - }()); -}()); - - -(function TestComputedNames() { - var x = 1; - var {[x]:y} = {1:2}; - assertSame(2, y); - - (function(){ - 'use strict'; - let {[x]:y} = {1:2}; - assertSame(2, y); - }()); - - var callCount = 0; - function foo(v) { callCount++; return v; } - - (function() { - callCount = 0; - var {[foo("abc")]:x} = {abc:42}; - assertSame(42, x); - assertEquals(1, callCount); - }()); - - (function() { - 'use strict'; - callCount = 0; - let {[foo("abc")]:x} = {abc:42}; - assertSame(42, x); - assertEquals(1, callCount); - }()); - - (function() { - callCount = 0; - var {[foo("abc")]:x} = {}; - assertSame(undefined, x); - assertEquals(1, callCount); - }()); - - (function() { - 'use strict'; - callCount = 0; - let {[foo("abc")]:x} = {}; - assertSame(undefined, x); - assertEquals(1, callCount); - }()); - - for (val of [null, undefined]) { - callCount = 0; - assertThrows(function() { - var {[foo()]:x} = val; - }, TypeError); - assertEquals(0, callCount); - - callCount = 0; - assertThrows(function() { - 'use strict'; - let {[foo()]:x} = val; - }, TypeError); - assertEquals(0, callCount); - } - - var log = []; - var o = { - get x() { log.push("get x"); return 1; }, - get y() { log.push("get y"); return 2; } - } - function f(v) { log.push("f " + v); return v; } - - (function() { - log = []; - var { [f('x')]:x, [f('y')]:y } = o; - assertSame(1, x); - assertSame(2, y); - assertArrayEquals(["f x", "get x", "f y", "get y"], log); - }()); - - (function() { - 'use strict'; - log = []; - let { [f('x')]:x, [f('y')]:y } = o; - assertSame(1, x); - assertSame(2, y); - assertArrayEquals(["f x", "get x", "f y", "get y"], log); - }()); - - (function() { - 'use strict'; - log = []; - const { [f('x')]:x, [f('y')]:y } = o; - assertSame(1, x); - assertSame(2, y); - assertArrayEquals(["f x", "get x", "f y", "get y"], log); - }()); -}()); - - -(function TestExceptions() { - for (var val of [null, undefined]) { - assertThrows(function() { var {} = val; }, TypeError); - assertThrows(function() { var {x} = val; }, TypeError); - assertThrows(function() { var { x : {} } = { x : val }; }, TypeError); - assertThrows(function() { 'use strict'; let {} = val; }, TypeError); - assertThrows(function() { 'use strict'; let {x} = val; }, TypeError); - assertThrows(function() { 'use strict'; let { x : {} } = { x : val }; }, - TypeError); - } -}()); - - -(function TestArrayLiteral() { - var [a, b, c] = [1, 2, 3]; - assertSame(1, a); - assertSame(2, b); - assertSame(3, c); -}()); - -(function TestIterators() { - var log = []; - function* f() { - log.push("1"); - yield 1; - log.push("2"); - yield 2; - log.push("3"); - yield 3; - log.push("done"); - }; - - (function() { - log = []; - var [a, b, c] = f(); - assertSame(1, a); - assertSame(2, b); - assertSame(3, c); - assertArrayEquals(["1", "2", "3"], log); - }()); - - (function() { - log = []; - var [a, b, c, d] = f(); - assertSame(1, a); - assertSame(2, b); - assertSame(3, c); - assertSame(undefined, d); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); - - (function() { - log = []; - var [a, , c] = f(); - assertSame(1, a); - assertSame(3, c); - assertArrayEquals(["1", "2", "3"], log); - }()); - - (function() { - log = []; - var [a, , c, d] = f(); - assertSame(1, a); - assertSame(3, c); - assertSame(undefined, d); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); - - (function() { - log = []; - // last comma is not an elision. - var [a, b,] = f(); - assertSame(1, a); - assertSame(2, b); - assertArrayEquals(["1", "2"], log); - }()); - - (function() { - log = []; - // last comma is not an elision, but the comma before the last is. - var [a, b, ,] = f(); - assertSame(1, a); - assertSame(2, b); - assertArrayEquals(["1", "2", "3"], log); - }()); - - (function() { - log = []; - var [a, ...rest] = f(); - assertSame(1, a); - assertArrayEquals([2,3], rest); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); - - (function() { - log = []; - var [a, b, c, ...rest] = f(); - assertSame(1, a); - assertSame(2, b); - assertSame(3, c); - assertArrayEquals([], rest); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); - - (function() { - log = []; - var [a, b, c, d, ...rest] = f(); - assertSame(1, a); - assertSame(2, b); - assertSame(3, c); - assertSame(undefined, d); - assertArrayEquals([], rest); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); -}()); - - -(function TestIteratorsLexical() { - 'use strict'; - var log = []; - function* f() { - log.push("1"); - yield 1; - log.push("2"); - yield 2; - log.push("3"); - yield 3; - log.push("done"); - }; - - (function() { - log = []; - let [a, b, c] = f(); - assertSame(1, a); - assertSame(2, b); - assertSame(3, c); - assertArrayEquals(["1", "2", "3"], log); - }()); - - (function() { - log = []; - let [a, b, c, d] = f(); - assertSame(1, a); - assertSame(2, b); - assertSame(3, c); - assertSame(undefined, d); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); - - (function() { - log = []; - let [a, , c] = f(); - assertSame(1, a); - assertSame(3, c); - assertArrayEquals(["1", "2", "3"], log); - }()); - - (function() { - log = []; - let [a, , c, d] = f(); - assertSame(1, a); - assertSame(3, c); - assertSame(undefined, d); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); - - (function() { - log = []; - // last comma is not an elision. - let [a, b,] = f(); - assertSame(1, a); - assertSame(2, b); - assertArrayEquals(["1", "2"], log); - }()); - - (function() { - log = []; - // last comma is not an elision, but the comma before the last is. - let [a, b, ,] = f(); - assertSame(1, a); - assertSame(2, b); - assertArrayEquals(["1", "2", "3"], log); - }()); - - (function() { - log = []; - let [a, ...rest] = f(); - assertSame(1, a); - assertArrayEquals([2,3], rest); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); - - (function() { - log = []; - let [a, b, c, ...rest] = f(); - assertSame(1, a); - assertSame(2, b); - assertSame(3, c); - assertArrayEquals([], rest); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); - - (function() { - log = []; - let [a, b, c, d, ...rest] = f(); - assertSame(1, a); - assertSame(2, b); - assertSame(3, c); - assertSame(undefined, d); - assertArrayEquals([], rest); - assertArrayEquals(["1", "2", "3", "done"], log); - }()); -}()); - -(function TestIteratorsRecursive() { - var log = []; - function* f() { - log.push("1"); - yield {x : 1, y : 2}; - log.push("2"); - yield [42, 27, 30]; - log.push("3"); - yield "abc"; - log.push("done"); - }; - - (function() { - var [{x, y}, [a, b]] = f(); - assertSame(1, x); - assertSame(2, y); - assertSame(42, a); - assertSame(27, b); - assertArrayEquals(["1", "2"], log); - }()); - - (function() { - 'use strict'; - log = []; - let [{x, y}, [a, b]] = f(); - assertSame(1, x); - assertSame(2, y); - assertSame(42, a); - assertSame(27, b); - assertArrayEquals(["1", "2"], log); - }()); -}()); - - -(function TestForEachLexical() { - 'use strict'; - let a = [{x:1, y:-1}, {x:2,y:-2}, {x:3,y:-3}]; - let sumX = 0; - let sumY = 0; - let fs = []; - for (let {x,y} of a) { - sumX += x; - sumY += y; - fs.push({fx : function() { return x; }, fy : function() { return y }}); - } - assertSame(6, sumX); - assertSame(-6, sumY); - assertSame(3, fs.length); - for (let i = 0; i < fs.length; i++) { - let {fx,fy} = fs[i]; - assertSame(i+1, fx()); - assertSame(-(i+1), fy()); - } - - var o = { __proto__:null, 'a1':1, 'b2':2 }; - let sx = ''; - let sy = ''; - for (let [x,y] in o) { - sx += x; - sy += y; - } - assertEquals('ab', sx); - assertEquals('12', sy); -}()); - - -(function TestForEachVars() { - var a = [{x:1, y:-1}, {x:2,y:-2}, {x:3,y:-3}]; - var sumX = 0; - var sumY = 0; - var fs = []; - for (var {x,y} of a) { - sumX += x; - sumY += y; - fs.push({fx : function() { return x; }, fy : function() { return y }}); - } - assertSame(6, sumX); - assertSame(-6, sumY); - assertSame(3, fs.length); - for (var i = 0; i < fs.length; i++) { - var {fx,fy} = fs[i]; - assertSame(3, fx()); - assertSame(-3, fy()); - } - - var o = { __proto__:null, 'a1':1, 'b2':2 }; - var sx = ''; - var sy = ''; - for (var [x,y] in o) { - sx += x; - sy += y; - } - assertEquals('ab', sx); - assertEquals('12', sy); -}()); - - -(function TestParameters() { - function f({a, b}) { return a - b; } - assertEquals(1, f({a : 6, b : 5})); - - function f1(c, {a, b}) { return c + a - b; } - assertEquals(8, f1(7, {a : 6, b : 5})); - - function f2({c, d}, {a, b}) { return c - d + a - b; } - assertEquals(7, f2({c : 7, d : 1}, {a : 6, b : 5})); - - function f3([{a, b}]) { return a - b; } - assertEquals(1, f3([{a : 6, b : 5}])); - - var g = ({a, b}) => { return a - b; }; - assertEquals(1, g({a : 6, b : 5})); - - var g1 = (c, {a, b}) => { return c + a - b; }; - assertEquals(8, g1(7, {a : 6, b : 5})); - - var g2 = ({c, d}, {a, b}) => { return c - d + a - b; }; - assertEquals(7, g2({c : 7, d : 1}, {a : 6, b : 5})); - - var g3 = ([{a, b}]) => { return a - b; }; - assertEquals(1, g3([{a : 6, b : 5}])); -}()); - - -(function TestExpressionsInParameters() { - function f0(x = eval(0)) { return x } - assertEquals(0, f0()); - function f1({a = eval(1)}) { return a } - assertEquals(1, f1({})); - function f2([x = eval(2)]) { return x } - assertEquals(2, f2([])); - function f3({[eval(7)]: x}) { return x } - assertEquals(3, f3({7: 3})); -})(); - - -(function TestParameterScoping() { - var x = 1; - - function f1({a = x}) { var x = 2; return a; } - assertEquals(1, f1({})); - function f2({a = x}) { function x() {}; return a; } - assertEquals(1, f2({})); - (function() { - 'use strict'; - function f3({a = x}) { let x = 2; return a; } - assertEquals(1, f3({})); - function f4({a = x}) { const x = 2; return a; } - assertEquals(1, f4({})); - function f5({a = x}) { function x() {}; return a; } - assertEquals(1, f5({})); - })(); - function f6({a = eval("x")}) { var x; return a; } - assertEquals(1, f6({})); - (function() { - 'use strict'; - function f61({a = eval("x")}) { var x; return a; } - assertEquals(1, f61({})); - })(); - function f62({a = eval("'use strict'; x")}) { var x; return a; } - assertEquals(1, f62({})); - function f7({a = function() { return x }}) { var x; return a(); } - assertEquals(1, f7({})); - function f8({a = () => x}) { var x; return a(); } - assertEquals(1, f8({})); - function f9({a = () => eval("x")}) { var x; return a(); } - assertEquals(1, f9({})); - (function TestInitializedWithEvalArrowStrict() { - 'use strict'; - function f91({a = () => eval("x")}) { var x; return a(); } - assertEquals(1, f91({})); - })(); - function f92({a = () => { 'use strict'; return eval("x") }}) { var x; return a(); } - assertEquals(1, f92({})); - function f93({a = () => eval("'use strict'; x")}) { var x; return a(); } - assertEquals(1, f93({})); - - var g1 = ({a = x}) => { var x = 2; return a; }; - assertEquals(1, g1({})); - var g2 = ({a = x}) => { function x() {}; return a; }; - assertEquals(1, g2({})); - (function() { - 'use strict'; - var g3 = ({a = x}) => { let x = 2; return a; }; - assertEquals(1, g3({})); - var g4 = ({a = x}) => { const x = 2; return a; }; - assertEquals(1, g4({})); - var g5 = ({a = x}) => { function x() {}; return a; }; - assertEquals(1, g5({})); - })(); - var g6 = ({a = eval("x")}) => { var x; return a; }; - assertEquals(1, g6({})); - (function() { - 'use strict'; - var g61 = ({a = eval("x")}) => { var x; return a; }; - assertEquals(1, g61({})); - })(); - var g62 = ({a = eval("'use strict'; x")}) => { var x; return a; }; - assertEquals(1, g62({})); - var g7 = ({a = function() { return x }}) => { var x; return a(); }; - assertEquals(1, g7({})); - var g8 = ({a = () => x}) => { var x; return a(); }; - assertEquals(1, g8({})); - var g9 = ({a = () => eval("x")}) => { var x; return a(); }; - assertEquals(1, g9({})); - (function() { - 'use strict'; - var g91 = ({a = () => eval("x")}) => { var x; return a(); }; - assertEquals(1, g91({})); - var g92 = ({a = () => { return eval("x") }}) => { var x; return a(); }; - assertEquals(1, g92({})); - })(); - var g93 = ({a = () => eval("'use strict'; x")}) => { var x; return a(); }; - assertEquals(1, g93({})); - - var f11 = function f({x = f}) { var f; return x; } - assertSame(f11, f11({})); - var f12 = function f({x = f}) { function f() {}; return x; } - assertSame(f12, f12({})); - (function() { - 'use strict'; - var f13 = function f({x = f}) { let f; return x; } - assertSame(f13, f13({})); - var f14 = function f({x = f}) { const f = 0; return x; } - assertSame(f14, f14({})); - var f15 = function f({x = f}) { function f() {}; return x; } - assertSame(f15, f15({})); - })(); - var f16 = function f({f = 7, x = f}) { return x; } - assertSame(7, f16({})); - - var y = 'a'; - function f20({[y]: x}) { var y = 'b'; return x; } - assertEquals(1, f20({a: 1, b: 2})); - function f21({[eval('y')]: x}) { var y = 'b'; return x; } - assertEquals(1, f21({a: 1, b: 2})); - var g20 = ({[y]: x}) => { var y = 'b'; return x; }; - assertEquals(1, g20({a: 1, b: 2})); - var g21 = ({[eval('y')]: x}) => { var y = 'b'; return x; }; - assertEquals(1, g21({a: 1, b: 2})); -})(); - - -(function TestParameterDestructuringTDZ() { - function f1({a = x}, x) { return a } - assertThrows(() => f1({}, 4), ReferenceError); - assertEquals(4, f1({a: 4}, 5)); - function f2({a = eval("x")}, x) { return a } - assertThrows(() => f2({}, 4), ReferenceError); - assertEquals(4, f2({a: 4}, 5)); - (function() { - 'use strict'; - function f3({a = eval("x")}, x) { return a } - assertThrows(() => f3({}, 4), ReferenceError); - assertEquals(4, f3({a: 4}, 5)); - })(); - function f4({a = eval("'use strict'; x")}, x) { return a } - assertThrows(() => f4({}, 4), ReferenceError); - assertEquals(4, f4({a: 4}, 5)); - - function f5({a = () => x}, x) { return a() } - assertEquals(4, f5({a: () => 4}, 5)); - function f6({a = () => eval("x")}, x) { return a() } - assertEquals(4, f6({a: () => 4}, 5)); - (function() { - 'use strict'; - function f7({a = () => eval("x")}, x) { return a() } - assertEquals(4, f7({a: () => 4}, 5)); - })(); - function f8({a = () => eval("'use strict'; x")}, x) { return a() } - assertEquals(4, f8({a: () => 4}, 5)); - - function f11({a = b}, {b}) { return a } - assertThrows(() => f11({}, {b: 4}), ReferenceError); - assertEquals(4, f11({a: 4}, {b: 5})); - function f12({a = eval("b")}, {b}) { return a } - assertThrows(() => f12({}, {b: 4}), ReferenceError); - assertEquals(4, f12({a: 4}, {b: 5})); - (function() { - 'use strict'; - function f13({a = eval("b")}, {b}) { return a } - assertThrows(() => f13({}, {b: 4}), ReferenceError); - assertEquals(4, f13({a: 4}, {b: 5})); - })(); - function f14({a = eval("'use strict'; b")}, {b}) { return a } - assertThrows(() => f14({}, {b: 4}), ReferenceError); - assertEquals(4, f14({a: 4}, {b: 5})); - - function f15({a = () => b}, {b}) { return a() } - assertEquals(4, f15({a: () => 4}, {b: 5})); - function f16({a = () => eval("b")}, {b}) { return a() } - assertEquals(4, f16({a: () => 4}, {b: 5})); - (function() { - 'use strict'; - function f17({a = () => eval("b")}, {b}) { return a() } - assertEquals(4, f17({a: () => 4}, {b: 5})); - })(); - function f18({a = () => eval("'use strict'; b")}, {b}) { return a() } - assertEquals(4, f18({a: () => 4}, {b: 5})); - - // TODO(caitp): TDZ for rest parameters is not working yet. - // function f30({x = a}, ...a) { return x[0] } - // assertThrows(() => f30({}), ReferenceError); - // assertEquals(4, f30({a: [4]}, 5)); - // function f31({x = eval("a")}, ...a) { return x[0] } - // assertThrows(() => f31({}), ReferenceError); - // assertEquals(4, f31({a: [4]}, 5)); - // function f32({x = eval("a")}, ...a) { 'use strict'; return x[0] } - // assertThrows(() => f32({}), ReferenceError); - // assertEquals(4, f32({a: [4]}, 5)); - // function f33({x = eval("'use strict'; a")}, ...a) { return x[0] } - // assertThrows(() => f33({}), ReferenceError); - // assertEquals(4, f33({a: [4]}, 5)); - - function f34({x = function() { return a }}, ...a) { return x()[0] } - assertEquals(4, f34({}, 4)); - function f35({x = () => a}, ...a) { return x()[0] } - assertEquals(4, f35({}, 4)); - function f36({x = () => eval("a")}, ...a) { return x()[0] } - assertEquals(4, f36({}, 4)); - (function() { - 'use strict'; - function f37({x = () => eval("a")}, ...a) { return x()[0] } - assertEquals(4, f37({}, 4)); - })(); - function f38({x = () => { 'use strict'; return eval("a") }}, ...a) { return x()[0] } - assertEquals(4, f38({}, 4)); - function f39({x = () => eval("'use strict'; a")}, ...a) { return x()[0] } - assertEquals(4, f39({}, 4)); - - // var g30 = ({x = a}, ...a) => {}; - // assertThrows(() => g30({}), ReferenceError); - // var g31 = ({x = eval("a")}, ...a) => {}; - // assertThrows(() => g31({}), ReferenceError); - // var g32 = ({x = eval("a")}, ...a) => { 'use strict'; }; - // assertThrows(() => g32({}), ReferenceError); - // var g33 = ({x = eval("'use strict'; a")}, ...a) => {}; - // assertThrows(() => g33({}), ReferenceError); - var g34 = ({x = function() { return a }}, ...a) => { return x()[0] }; - assertEquals(4, g34({}, 4)); - var g35 = ({x = () => a}, ...a) => { return x()[0] }; - assertEquals(4, g35({}, 4)); -})(); - - -(function TestDuplicatesInParameters() { - assertThrows("'use strict';function f(x,x){}", SyntaxError); - assertThrows("'use strict';function f({x,x}){}", SyntaxError); - assertThrows("'use strict';function f(x, {x}){}", SyntaxError); - assertThrows("'use strict';var f = (x,x) => {};", SyntaxError); - assertThrows("'use strict';var f = ({x,x}) => {};", SyntaxError); - assertThrows("'use strict';var f = (x, {x}) => {};", SyntaxError); - - function ok1(x) { var x; return x; }; - assertEquals(1, ok1(1)); - function ok2(x) { 'use strict'; { let x = 2; return x; } }; - assertEquals(2, ok2(1)); -}()); - - -(function TestShadowingOfParameters() { - function f1({x}) { var x = 2; return x } - assertEquals(2, f1({x: 1})); - function f2({x}) { { var x = 2; } return x; } - assertEquals(2, f2({x: 1})); - function f3({x}) { var y = x; var x = 2; return y; } - assertEquals(1, f3({x: 1})); - function f4({x}) { { var y = x; var x = 2; } return y; } - assertEquals(1, f4({x: 1})); - function f5({x}, g = () => x) { var x = 2; return g(); } - assertEquals(1, f5({x: 1})); - function f6({x}, g = () => x) { { var x = 2; } return g(); } - assertEquals(1, f6({x: 1})); - function f7({x}) { var g = () => x; var x = 2; return g(); } - assertEquals(2, f7({x: 1})); - function f8({x}) { { var g = () => x; var x = 2; } return g(); } - assertEquals(2, f8({x: 1})); - function f9({x}, g = () => eval("x")) { var x = 2; return g(); } - assertEquals(1, f9({x: 1})); - - function f10({x}, y) { var y; return y } - assertEquals(2, f10({x: 6}, 2)); - function f11({x}, y) { var z = y; var y = 2; return z; } - assertEquals(1, f11({x: 6}, 1)); - function f12(y, g = () => y) { var y = 2; return g(); } - assertEquals(1, f12(1)); - function f13({x}, y, [z], v) { var x, y, z; return x*y*z*v } - assertEquals(210, f13({x: 2}, 3, [5], 7)); - - function f20({x}) { function x() { return 2 }; return x(); } - assertEquals(2, f20({x: 1})); - // Annex B 3.3 function hoisting is blocked by the conflicting x declaration - function f21({x}) { { function x() { return 2 } } return x; } - assertEquals(1, f21({x: 1})); - - var g1 = ({x}) => { var x = 2; return x }; - assertEquals(2, g1({x: 1})); - var g2 = ({x}) => { { var x = 2; } return x; }; - assertEquals(2, g2({x: 1})); - var g3 = ({x}) => { var y = x; var x = 2; return y; }; - assertEquals(1, g3({x: 1})); - var g4 = ({x}) => { { var y = x; var x = 2; } return y; }; - assertEquals(1, g4({x: 1})); - var g5 = ({x}, g = () => x) => { var x = 2; return g(); }; - assertEquals(1, g5({x: 1})); - var g6 = ({x}, g = () => x) => { { var x = 2; } return g(); }; - assertEquals(1, g6({x: 1})); - var g7 = ({x}) => { var g = () => x; var x = 2; return g(); }; - assertEquals(2, g7({x: 1})); - var g8 = ({x}) => { { var g = () => x; var x = 2; } return g(); }; - assertEquals(2, g8({x: 1})); - var g9 = ({x}, g = () => eval("x")) => { var x = 2; return g(); }; - assertEquals(1, g9({x: 1})); - - var g10 = ({x}, y) => { var y; return y }; - assertEquals(2, g10({x: 6}, 2)); - var g11 = ({x}, y) => { var z = y; var y = 2; return z; }; - assertEquals(1, g11({x: 6}, 1)); - var g12 = (y, g = () => y) => { var y = 2; return g(); }; - assertEquals(1, g12(1)); - var g13 = ({x}, y, [z], v) => { var x, y, z; return x*y*z*v }; - assertEquals(210, g13({x: 2}, 3, [5], 7)); - - var g20 = ({x}) => { function x() { return 2 }; return x(); } - assertEquals(2, g20({x: 1})); - var g21 = ({x}) => { { function x() { return 2 } } return x(); } - assertThrows(() => g21({x: 1}), TypeError); - - // These errors are not recognized in lazy parsing; see mjsunit/bugs/bug-2728.js - assertThrows("'use strict'; (function f(x) { let x = 0; })()", SyntaxError); - assertThrows("'use strict'; (function f({x}) { let x = 0; })()", SyntaxError); - assertThrows("'use strict'; (function f(x) { const x = 0; })()", SyntaxError); - assertThrows("'use strict'; (function f({x}) { const x = 0; })()", SyntaxError); - - assertThrows("'use strict'; let g = (x) => { let x = 0; }", SyntaxError); - assertThrows("'use strict'; let g = ({x}) => { let x = 0; }", SyntaxError); - assertThrows("'use strict'; let g = (x) => { const x = 0; }", SyntaxError); - assertThrows("'use strict'; let g = ({x}) => { const x = 0; }", SyntaxError); -}()); - - -(function TestArgumentsForNonSimpleParameters() { - function f1({}, x) { arguments[1] = 0; return x } - assertEquals(6, f1({}, 6)); - function f2({}, x) { x = 2; return arguments[1] } - assertEquals(7, f2({}, 7)); - function f3(x, {}) { arguments[0] = 0; return x } - assertEquals(6, f3(6, {})); - function f4(x, {}) { x = 2; return arguments[0] } - assertEquals(7, f4(7, {})); - function f5(x, ...a) { arguments[0] = 0; return x } - assertEquals(6, f5(6, {})); - function f6(x, ...a) { x = 2; return arguments[0] } - assertEquals(6, f6(6, {})); - function f7({a: x}) { x = 2; return arguments[0].a } - assertEquals(5, f7({a: 5})); - function f8(x, ...a) { a = []; return arguments[1] } - assertEquals(6, f8(5, 6)); -}()); - - -(function TestForInOfTDZ() { - assertThrows("'use strict'; let x = {}; for (let [x, y] of [x]);", ReferenceError); - assertThrows("'use strict'; let x = {}; for (let [y, x] of [x]);", ReferenceError); - assertThrows("'use strict'; let x = {}; for (let [x, y] in {x});", ReferenceError); - assertThrows("'use strict'; let x = {}; for (let [y, x] in {x});", ReferenceError); -}()); - - -(function TestFunctionLength() { - assertEquals(1, (function({}) {}).length); - assertEquals(1, (function([]) {}).length); - assertEquals(1, (function({x}) {}).length); - assertEquals(1, (function({}, ...a) {}).length); - assertEquals(1, (function({x}, {y} = {}) {}).length); - assertEquals(1, (function({x}, {y} = {}, ...a) {}).length); - assertEquals(2, (function(x, {y}, {z} = {}) {}).length); - assertEquals(2, (function({x}, {}, {z} = {}, ...a) {}).length); - assertEquals(1, (function(x, {y} = {}, {z}) {}).length); - assertEquals(1, (function({x}, {y} = {}, {z}, ...a) {}).length); - assertEquals(1, (function(x, {y} = {}, {z}, {v} = {}) {}).length); - assertEquals(1, (function({x}, {y} = {}, {z}, {v} = {}, ...a) {}).length); -})(); - - -(function TestDirectiveThrows() { - "use strict"; - - assertThrows(function(){ eval("function({}){'use strict';}") }, SyntaxError); - assertThrows(function(){ eval("({}) => {'use strict';}") }, SyntaxError); - assertThrows( - function(){ eval("(class{foo({}) {'use strict';}});") }, SyntaxError); - - assertThrows( - function(){ eval("function(a, {}){'use strict';}") }, SyntaxError); - assertThrows(function(){ eval("(a, {}) => {'use strict';}") }, SyntaxError); - assertThrows( - function(){ eval("(class{foo(a, {}) {'use strict';}});") }, SyntaxError); -})(); - - -(function TestLegacyConstDestructuringInForLoop() { - var result; - for (const {foo} of [{foo: 1}]) { result = foo; } - assertEquals(1, result); -})(); - - -(function TestCatch() { - "use strict"; - - // For testing proper scoping. - var foo = "hello", bar = "world", baz = 42; - - try { - throw {foo: 1, bar: 2}; - } catch ({foo, bar, baz = 3}) { - assertEquals(1, foo); - assertEquals(2, bar); - assertEquals(3, baz); - } - - try { - throw [1, 2, 3]; - } catch ([foo, ...bar]) { - assertEquals(1, foo); - assertEquals([2, 3], bar); - } - - assertEquals("hello", foo); - assertEquals("world", bar); - assertEquals(42, baz); - - assertEquals(undefined, eval('try {throw {foo: 1, bar: 2}} catch({foo}) {}')); - assertEquals(undefined, eval('try {throw [1, 2, 3]} catch([x]) {}')); -})(); - -// Property access as declaration target. -assertThrows("let [o.x=1]=[]", SyntaxError); -assertThrows("let {x:o.f=1}={x:1}", SyntaxError); -assertThrows("(o.f=1)=>0", SyntaxError); - -// Invalidly parenthesized declaration targets. -assertThrows("for (({x}) of [{x:1}]) {}", SyntaxError); -assertThrows("for (var ({x}) of [{x:1}]) {}", SyntaxError); -assertThrows("for await (({x}) of [{x:1}]) {}", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/es6/empty-for.js b/implementation-contributed/v8/mjsunit/es6/empty-for.js deleted file mode 100644 index dad892d3280..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/empty-for.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict"; - -function for_const() { - for (const x = 1;;) { - if (x == 1) break; - } - for (const x = 1; x < 2;) { - if (x == 1) break; - } - for (const x = 1;; 0) { - if (x == 1) break; - } -} - -for_const(); - -function for_let() { - for (let x;;) { - if (!x) break; - } - for (let x; x < 2;) { - if (!x) break; - } - for (let x = 1;; x++) { - if (x == 2) break; - } -} - -for_let(); - -function for_var() { - for (var x;;) { - if (!x) break; - } - for (var x; x < 2;) { - if (!x) break; - } - for (var x = 1;; x++) { - if (x == 2) break; - } -} - -for_var(); diff --git a/implementation-contributed/v8/mjsunit/es6/for-each-in-catch.js b/implementation-contributed/v8/mjsunit/es6/for-each-in-catch.js deleted file mode 100644 index b38013eeb3a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/for-each-in-catch.js +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function checkIsRedeclarationError(code) { - try { - eval(` - checkIsRedeclarationError: { - break checkIsRedeclarationError; - ${code} - } - `); - assertUnreachable(); - } catch (e) { - assertInstanceof(e, SyntaxError); - assertTrue(e.toString().includes("has already been declared")); - } -} - -function checkIsNotRedeclarationError(code) { - assertDoesNotThrow(() => eval(` - checkIsNotRedeclarationError_label: { - break checkIsNotRedeclarationError_label; - ${code} - } - `)); -} - - -let var_e = [ - 'var e', - 'var {e}', - 'var {f, e}', - 'var [e]', - 'var {f:e}', - 'var [[[], e]]' -]; - -let not_var_e = [ - 'var f', - 'var {}', - 'var {e:f}', - 'e', - '{e}', - 'let e', - 'const e', - 'let {e}', - 'const {e}', - 'let [e]', - 'const [e]', - 'let {f:e}', - 'const {f:e}' -]; - -// Check that both `for (var ... of ...)` and `for (var ... in ...)` -// can redeclare a simple catch variable. -for (let binding of var_e) { - checkIsNotRedeclarationError(` - try { - throw 0; - } catch (e) { - for (${binding} of []); - } - `); - - checkIsNotRedeclarationError(` - try { - throw 0; - } catch (e) { - for (${binding} in []); - } - `); -} - -// Check that the above applies even for nested catches. -for (let binding of var_e) { - checkIsNotRedeclarationError(` - try { - throw 0; - } catch (e) { - try { - throw 1; - } catch (f) { - try { - throw 2; - } catch ({}) { - for (${binding} of []); - } - } - } - `); - - checkIsNotRedeclarationError(` - try { - throw 0; - } catch (e) { - try { - throw 1; - } catch (f) { - try { - throw 2; - } catch ({}) { - for (${binding} in []); - } - } - } - `); -} - -// Check that the above applies if a declaration scope is between the -// catch and the loop. -for (let binding of var_e) { - checkIsNotRedeclarationError(` - try { - throw 0; - } catch (e) { - (()=>{for (${binding} of []);})(); - } - `); - - checkIsNotRedeclarationError(` - try { - throw 0; - } catch (e) { - (function() { - for (${binding} of []); - })(); - } - `); -} - -// Check that there is no error when not declaring a var named e. -for (let binding of not_var_e) { - checkIsNotRedeclarationError(` - try { - throw 0; - } catch (e) { - for (${binding} of []); - } - `); -} - -// Check that there is an error for both for-in and for-of when redeclaring -// a non-simple catch parameter. -for (let binding of var_e) { - checkIsRedeclarationError(` - try { - throw 0; - } catch ({e}) { - for (${binding} of []); - } - `); - - checkIsRedeclarationError(` - try { - throw 0; - } catch ({e}) { - for (${binding} in []); - } - `); -} - -// Check that the above error occurs even for nested catches. -for (let binding of var_e) { - checkIsRedeclarationError(` - try { - throw 0; - } catch ({e}) { - try { - throw 1; - } catch (f) { - try { - throw 2; - } catch ({}) { - for (${binding} of []); - } - } - } - `); - - checkIsRedeclarationError(` - try { - throw 0; - } catch ({e}) { - try { - throw 1; - } catch (f) { - try { - throw 2; - } catch ({}) { - for (${binding} in []); - } - } - } - `); -} diff --git a/implementation-contributed/v8/mjsunit/es6/for-of.js b/implementation-contributed/v8/mjsunit/es6/for-of.js deleted file mode 100644 index b123bba5f67..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/for-of.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestForOfName() { - var result = 0; - var index; - - for (index of [1, 2, 3, 4, 5]) result += index; - - assertEquals(result, 15); - assertEquals(index, 5); -})(); - - -(function TestForOfProperty() { - var O = {}; - var result = 0; - - for (O.index of [1, 2, 3, 4, 5]) result += O.index; - - assertEquals(result, 15); - assertEquals(O.index, 5); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/function-length-configurable.js b/implementation-contributed/v8/mjsunit/es6/function-length-configurable.js deleted file mode 100644 index e5b51aba206..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/function-length-configurable.js +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function getStrictF() { - 'use strict'; - return function f(x) {}; -} - - -function getSloppyF() { - return function f(x) {}; -} - - -function getStrictGenerator() { - 'use strict'; - return function* f(x) {}; -} - - -function getSloppyGenerator() { - return function* f(x) {}; -} - - -function test(testFunction) { - testFunction(getStrictF()); - testFunction(getSloppyF()); - testFunction(getStrictGenerator()); - testFunction(getSloppyGenerator()); -} - - -function testDescriptor(f) { - var descr = Object.getOwnPropertyDescriptor(f, 'length'); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertEquals(1, descr.value); - assertFalse(descr.writable); -} -test(testDescriptor); - - -function testSet(f) { - f.length = 2; - assertEquals(1, f.length); -} -test(testSet); - - -function testSetStrict(f) { - 'use strict'; - assertThrows(function() { - f.length = 2; - }, TypeError); -} -test(testSetStrict); - - -function testReconfigureAsDataProperty(f) { - Object.defineProperty(f, 'length', { - value: 2, - }); - assertEquals(2, f.length); - Object.defineProperty(f, 'length', { - writable: true - }); - f.length = 3; - assertEquals(3, f.length); - - f.length = 42; - assertEquals(42, f.length); -} -test(testReconfigureAsDataProperty); - - -function testReconfigureAsAccessorProperty(f) { - var length = 2; - Object.defineProperty(f, 'length', { - get: function() { return length; }, - set: function(v) { length = v; } - }); - assertEquals(2, f.length); - f.length = 3; - assertEquals(3, f.length); -} -test(testReconfigureAsAccessorProperty); - - -(function testSetOnInstance() { - // This needs to come before testDelete below - assertTrue(Function.prototype.hasOwnProperty('length')); - - function f() {} - delete f.length; - assertEquals(0, f.length); - - f.length = 42; - assertEquals(0, f.length); // non writable prototype property. - assertFalse(f.hasOwnProperty('length')); - - Object.defineProperty(Function.prototype, 'length', {writable: true}); - - f.length = 123; - assertTrue(f.hasOwnProperty('length')); - assertEquals(123, f.length); -})(); - - -(function testDelete() { - function f(x) {} - assertTrue(delete f.length); - assertFalse(f.hasOwnProperty('length')); - assertEquals(0, f.length); - - assertTrue(delete Function.prototype.length); - assertEquals(undefined, f.length); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/function-name-configurable.js b/implementation-contributed/v8/mjsunit/es6/function-name-configurable.js deleted file mode 100644 index 68ba82d705d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/function-name-configurable.js +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function getStrictF() { - 'use strict'; - return function f() {}; -} - - -function getSloppyF() { - return function f() {}; -} - - -function test(testFunction) { - testFunction(getStrictF()); - testFunction(getSloppyF()); -} - - -function testDescriptor(f) { - var descr = Object.getOwnPropertyDescriptor(f, 'name'); - assertTrue(descr.configurable); - assertFalse(descr.enumerable); - assertEquals('f', descr.value); - assertFalse(descr.writable); -} -test(testDescriptor); - - -function testSet(f) { - f.name = 'g'; - assertEquals('f', f.name); -} -test(testSet); - - -function testSetStrict(f) { - 'use strict'; - assertThrows(function() { - f.name = 'g'; - }, TypeError); -} -test(testSetStrict); - - -function testReconfigureAsDataProperty(f) { - Object.defineProperty(f, 'name', { - value: 'g', - }); - assertEquals('g', f.name); - Object.defineProperty(f, 'name', { - writable: true - }); - f.name = 'h'; - assertEquals('h', f.name); - - f.name = 42; - assertEquals(42, f.name); -} -test(testReconfigureAsDataProperty); - - -function testReconfigureAsAccessorProperty(f) { - var name = 'g'; - Object.defineProperty(f, 'name', { - get: function() { return name; }, - set: function(v) { name = v; } - }); - assertEquals('g', f.name); - f.name = 'h'; - assertEquals('h', f.name); -} -test(testReconfigureAsAccessorProperty); - - -function testFunctionToString(f) { - Object.defineProperty(f, 'name', { - value: {toString: function() { assertUnreachable(); }}, - }); - assertEquals('function f() {}', f.toString()); -} -test(testFunctionToString); - - -(function testSetOnInstance() { - // This needs to come before testDelete below - assertTrue(Function.prototype.hasOwnProperty('name')); - - function f() {} - delete f.name; - assertEquals('', f.name); - - f.name = 42; - assertEquals('', f.name); // non writable prototype property. - assertFalse(f.hasOwnProperty('name')); - - Object.defineProperty(Function.prototype, 'name', {writable: true}); - - f.name = 123; - assertTrue(f.hasOwnProperty('name')); - assertEquals(123, f.name); -})(); - - -(function testDelete() { - function f() {} - assertTrue(delete f.name); - assertFalse(f.hasOwnProperty('name')); - assertEquals('', f.name); - - assertTrue(delete Function.prototype.name); - assertEquals(undefined, f.name); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/function-name.js b/implementation-contributed/v8/mjsunit/es6/function-name.js deleted file mode 100644 index c292edf0cd3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/function-name.js +++ /dev/null @@ -1,452 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testVariableDeclarationsFunction() { - 'use strict'; - var a = function(){}; - assertEquals('a', a.name); - let b = () => {}; - assertEquals('b', b.name); - const c = ((function(){})); - assertEquals('c', c.name); - - var x = function(){}, y = () => {}, z = function withName() {}; - assertEquals('x', x.name); - assertEquals('y', y.name); - assertEquals('withName', z.name); -})(); - -(function testVariableDeclarationsClass() { - 'use strict'; - var a = class {}; - assertEquals('a', a.name); - let b = ((class {})); - assertEquals('b', b.name); - // Should not overwrite name property. - const c = class { static name() { } } - assertEquals('function', typeof c.name); - - var x = class {}, y = class NamedClass {}; - assertEquals('x', x.name); - assertEquals('NamedClass', y.name); -})(); - -(function testObjectProperties() { - 'use strict'; - var obj = { - a: function() {}, - b: () => {}, - c() { }, - get d() { }, - set d(val) { }, - x: function withName() { }, - y: class { }, - z: class ClassName { }, - ''() {}, - 42: function() {}, - 4.2: function() {}, - __proto__: function() {}, - }; - - assertEquals('a', obj.a.name); - assertEquals('b', obj.b.name); - assertEquals('c', obj.c.name); - var dDescriptor = Object.getOwnPropertyDescriptor(obj, 'd'); - assertEquals('get d', dDescriptor.get.name); - assertEquals('set d', dDescriptor.set.name); - assertEquals('withName', obj.x.name); - assertEquals('y', obj.y.name); - assertEquals('ClassName', obj.z.name); - assertEquals('', obj[''].name); - assertEquals('42', obj[42].name); - assertEquals('4.2', obj[4.2].name); - assertEquals('', obj.__proto__.name); -})(); - -(function testClassProperties() { - 'use strict'; - class C { - a() { } - static b() { } - get c() { } - set c(val) { } - ''() { } - static ''() { } - 42() { } - static 43() { } - get 44() { } - set 44(val) { } - static get constructor() { } - static set constructor(val) { } - }; - - assertEquals('a', C.prototype.a.name); - assertEquals('b', C.b.name); - var descriptor = Object.getOwnPropertyDescriptor(C.prototype, 'c'); - assertEquals('get c', descriptor.get.name); - assertEquals('set c', descriptor.set.name); - assertEquals('', C.prototype[''].name); - assertEquals('', C[''].name); - assertEquals('42', C.prototype[42].name); - assertEquals('43', C[43].name); - var descriptor = Object.getOwnPropertyDescriptor(C.prototype, '44'); - assertEquals('get 44', descriptor.get.name); - assertEquals('set 44', descriptor.set.name); - var descriptor = Object.getOwnPropertyDescriptor(C, 'constructor'); - assertEquals('get constructor', descriptor.get.name); - assertEquals('set constructor', descriptor.set.name); -})(); - -(function testComputedProperties() { - 'use strict'; - var a = 'a'; - var b = 'b'; - var sym1 = Symbol('1'); - var sym2 = Symbol('2'); - var sym3 = Symbol('3'); - var symNoDescription = Symbol(); - var proto = "__proto__"; - var obj = { - ['']: function() {}, - [a]: function() {}, - [sym1]: function() {}, - [sym2]: function withName() {}, - [symNoDescription]: function() {}, - [proto]: function() {}, - - get [sym3]() {}, - set [b](val) {}, - }; - - assertEquals('', obj[''].name); - assertEquals('a', obj[a].name); - assertEquals('[1]', obj[sym1].name); - assertEquals('withName', obj[sym2].name); - assertEquals('', obj[symNoDescription].name); - assertEquals('__proto__', obj[proto].name); - - assertEquals('get [3]', Object.getOwnPropertyDescriptor(obj, sym3).get.name); - assertEquals('set b', Object.getOwnPropertyDescriptor(obj, 'b').set.name); - - var objMethods = { - ['']() {}, - [a]() {}, - [sym1]() {}, - [symNoDescription]() {}, - [proto]() {}, - }; - - assertEquals('', objMethods[''].name); - assertEquals('a', objMethods[a].name); - assertEquals('[1]', objMethods[sym1].name); - assertEquals('', objMethods[symNoDescription].name); - assertEquals('__proto__', objMethods[proto].name); - - class C { - ['']() { } - static ''() {} - [a]() { } - [sym1]() { } - static [sym2]() { } - [symNoDescription]() { } - - get [sym3]() { } - static set [b](val) { } - } - - assertEquals('', C.prototype[''].name); - assertEquals('', C[''].name); - assertEquals('a', C.prototype[a].name); - assertEquals('[1]', C.prototype[sym1].name); - assertEquals('[2]', C[sym2].name); - assertEquals('', C.prototype[symNoDescription].name); - - assertEquals('get [3]', Object.getOwnPropertyDescriptor(C.prototype, sym3).get.name); - assertEquals('set b', Object.getOwnPropertyDescriptor(C, 'b').set.name); -})(); - - -(function testAssignment() { - var basicFn, arrowFn, generatorFn, classLit; - - basicFn = function() { return true; }; - assertEquals('basicFn', basicFn.name); - var basicFn2 = basicFn; - assertEquals('basicFn', basicFn2.name); - basicFn = function functionWithName() { }; - assertEquals("functionWithName", basicFn.name); - - arrowFn = x => x; - assertEquals('arrowFn', arrowFn.name); - var arrowFn2 = arrowFn; - assertEquals('arrowFn', arrowFn2.name); - - generatorFn = function*() { yield true; }; - assertEquals('generatorFn', generatorFn.name); - var generatorFn2 = generatorFn; - assertEquals('generatorFn', generatorFn2.name); - generatorFn = function* generatorWithName() { }; - assertEquals("generatorWithName", generatorFn.name); - - classLit = class { constructor() {} }; - assertEquals('classLit', classLit.name); - var classLit2 = classLit; - assertEquals('classLit', classLit2.name); - classLit = class classWithName { constructor() {} }; - assertEquals('classWithName', classLit.name); - classLit = class { constructor() {} static name() {} }; - assertEquals('function', typeof classLit.name); - classLit = class { constructor() {} static get name() { return true; } }; - assertTrue(classLit.name); - classLit = class { constructor() {} static ['name']() {} }; - assertEquals('function', typeof classLit.name); - classLit = class { constructor() {} static get ['name']() { return true; } }; - assertTrue(classLit.name); -})(); - -(function testObjectBindingPattern() { - var { - a = function() {}, - b = () => {}, - x = function withName() { }, - y = class { }, - z = class ClassName { }, - q = class { static name() { return 42 } }, - foo: bar = function() {}, - inParens = (() => {}), - inManyParens = ((((() => {})))), - } = {}; - assertEquals('a', a.name); - assertEquals('b', b.name); - assertEquals('withName', x.name); - assertEquals('y', y.name); - assertEquals('ClassName', z.name); - assertEquals('function', typeof q.name); - assertEquals('bar', bar.name); - assertEquals('inParens', inParens.name) - assertEquals('inManyParens', inManyParens.name) -})(); - -(function testArrayBindingPattern() { - var [ - a = function() {}, - b = () => {}, - x = function withName() { }, - y = class { }, - z = class ClassName { }, - q = class { static name() { return 42 } }, - inParens = (() => {}), - inManyParens = ((((() => {})))), - ] = []; - assertEquals('a', a.name); - assertEquals('b', b.name); - assertEquals('withName', x.name); - assertEquals('y', y.name); - assertEquals('ClassName', z.name); - assertEquals('function', typeof q.name); - assertEquals('inParens', inParens.name) - assertEquals('inManyParens', inManyParens.name) -})(); - -(function testObjectAssignmentPattern() { - var a, b, x, y, z, q; - ({ - a = function() {}, - b = () => {}, - x = function withName() { }, - y = class { }, - z = class ClassName { }, - q = class { static name() { return 42 } }, - foo: bar = function() {}, - inParens = (() => {}), - inManyParens = ((((() => {})))), - } = {}); - assertEquals('a', a.name); - assertEquals('b', b.name); - assertEquals('withName', x.name); - assertEquals('y', y.name); - assertEquals('ClassName', z.name); - assertEquals('function', typeof q.name); - assertEquals('bar', bar.name); - assertEquals('inParens', inParens.name) - assertEquals('inManyParens', inManyParens.name) -})(); - -(function testArrayAssignmentPattern() { - var a, b, x, y, z, q; - [ - a = function() {}, - b = () => {}, - x = function withName() { }, - y = class { }, - z = class ClassName { }, - q = class { static name() { return 42 } }, - inParens = (() => {}), - inManyParens = ((((() => {})))), - ] = []; - assertEquals('a', a.name); - assertEquals('b', b.name); - assertEquals('withName', x.name); - assertEquals('y', y.name); - assertEquals('ClassName', z.name); - assertEquals('function', typeof q.name); - assertEquals('inParens', inParens.name) - assertEquals('inManyParens', inManyParens.name) -})(); - -(function testParameterDestructuring() { - (function({ a = function() {}, - b = () => {}, - x = function withName() { }, - y = class { }, - z = class ClassName { }, - q = class { static name() { return 42 } }, - foo: bar = function() {}, - inParens = (() => {}), - inManyParens = ((((() => {})))) }) { - assertEquals('a', a.name); - assertEquals('b', b.name); - assertEquals('withName', x.name); - assertEquals('y', y.name); - assertEquals('ClassName', z.name); - assertEquals('function', typeof q.name); - assertEquals('bar', bar.name); - assertEquals('inParens', inParens.name) - assertEquals('inManyParens', inManyParens.name) - })({}); - - (function([ a = function() {}, - b = () => {}, - x = function withName() { }, - y = class { }, - z = class ClassName { }, - q = class { static name() { return 42 } }, - inParens = (() => {}), - inManyParens = ((((() => {})))) ]) { - assertEquals('a', a.name); - assertEquals('b', b.name); - assertEquals('withName', x.name); - assertEquals('y', y.name); - assertEquals('ClassName', z.name); - assertEquals('function', typeof q.name); - assertEquals('inParens', inParens.name) - assertEquals('inManyParens', inManyParens.name) - })([]); -})(); - -(function testDefaultParameters() { - (function(a = function() {}, - b = () => {}, - x = function withName() { }, - y = class { }, - z = class ClassName { }, - q = class { static name() { return 42 } }, - inParens = (() => {}), - inManyParens = ((((() => {}))))) { - assertEquals('a', a.name); - assertEquals('b', b.name); - assertEquals('withName', x.name); - assertEquals('y', y.name); - assertEquals('ClassName', z.name); - assertEquals('function', typeof q.name); - assertEquals('inParens', inParens.name) - assertEquals('inManyParens', inManyParens.name) - })(); -})(); - -(function testComputedNameNotShared() { - function makeClass(propName) { - return class { - static [propName]() {} - } - } - - var sym1 = Symbol('1'); - var sym2 = Symbol('2'); - var class1 = makeClass(sym1); - assertEquals('[1]', class1[sym1].name); - var class2 = makeClass(sym2); - assertEquals('[2]', class2[sym2].name); - assertEquals('[1]', class1[sym1].name); -})(); - - -(function testComputedNamesOnlyAppliedSyntactically() { - function factory() { return () => {}; } - - var obj = { ['foo']: factory() }; - assertEquals('', obj.foo.name); -})(); - - -(function testNameNotReflectedInToString() { - var f = function () {}; - var g = function* () {}; - var obj = { - ['h']: function () {}, - i: () => {} - }; - assertEquals('function () {}', f.toString()); - assertEquals('function* () {}', g.toString()); - assertEquals('function () {}', obj.h.toString()); - assertEquals('() => {}', obj.i.toString()); -})(); - -(function testClassNameOrder() { - assertEquals(['length', 'prototype'], Object.getOwnPropertyNames(class {})); - - var tmp = {'': class {}}; - var Tmp = tmp['']; - assertEquals(['length', 'prototype', 'name'], Object.getOwnPropertyNames(Tmp)); - - var name = () => ''; - var tmp = {[name()]: class {}}; - var Tmp = tmp[name()]; - assertEquals(['length', 'prototype', 'name'], Object.getOwnPropertyNames(Tmp)); - - class A { } - assertEquals(['length', 'prototype', 'name'], Object.getOwnPropertyNames(A)); - - class B { static foo() { } } - assertEquals(['length', 'prototype', 'foo', 'name'], Object.getOwnPropertyNames(B)); - - class C { static name() { } static foo() { } } - assertEquals(['length', 'prototype', 'name', 'foo'], Object.getOwnPropertyNames(C)); -})(); - -(function testStaticName() { - class C { static name() { return 42; } } - assertEquals(42, C.name()); - assertEquals(undefined, new C().name); - - class D { static get name() { return 17; } } - assertEquals(17, D.name); - assertEquals(undefined, new D().name); - - var c = class { static name() { return 42; } } - assertEquals(42, c.name()); - assertEquals(undefined, new c().name); - - var d = class { static get name() { return 17; } } - assertEquals(17, d.name); - assertEquals(undefined, new d().name); -})(); - -(function testNonStaticName() { - class C { name() { return 42; } } - assertEquals('C', C.name); - assertEquals(42, new C().name()); - - class D { get name() { return 17; } } - assertEquals('D', D.name); - assertEquals(17, new D().name); - - var c = class { name() { return 42; } } - assertEquals('c', c.name); - assertEquals(42, new c().name()); - - var d = class { get name() { return 17; } } - assertEquals('d', d.name); - assertEquals(17, new d().name); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/function-prototype-name.js b/implementation-contributed/v8/mjsunit/es6/function-prototype-name.js deleted file mode 100644 index 4766bd42eb1..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/function-prototype-name.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertSame('', Function.prototype.name); - -var descr = Object.getOwnPropertyDescriptor(Function.prototype, 'name'); -assertFalse(descr.enumerable); -assertTrue(descr.configurable); -assertFalse(descr.writable); -assertSame('', descr.value); diff --git a/implementation-contributed/v8/mjsunit/es6/generator-destructuring.js b/implementation-contributed/v8/mjsunit/es6/generator-destructuring.js deleted file mode 100644 index 44730ac9706..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/generator-destructuring.js +++ /dev/null @@ -1,318 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestDefaultBeforeInitializingYield() { - var y = 0; - var z = 0; - function* f1(x = (y = 1)) { z = 1 }; - assertEquals(0, y); - assertEquals(0, z); - var gen = f1(); - assertEquals(1, y); - assertEquals(0, z); - gen.next(); - assertEquals(1, y); - assertEquals(1, z); -})(); - -(function TestShadowingOfParameters() { - function* f1({x}) { var x = 2; return x } - assertEquals(2, f1({x: 1}).next().value); - function* f2({x}) { { var x = 2; } return x; } - assertEquals(2, f2({x: 1}).next().value); - function* f3({x}) { var y = x; var x = 2; return y; } - assertEquals(1, f3({x: 1}).next().value); - function* f4({x}) { { var y = x; var x = 2; } return y; } - assertEquals(1, f4({x: 1}).next().value); - function* f5({x}, g = () => x) { var x = 2; return g(); } - assertEquals(1, f5({x: 1}).next().value); - function* f6({x}, g = () => x) { { var x = 2; } return g(); } - assertEquals(1, f6({x: 1}).next().value); - function* f7({x}) { var g = () => x; var x = 2; return g(); } - assertEquals(2, f7({x: 1}).next().value); - function* f8({x}) { { var g = () => x; var x = 2; } return g(); } - assertEquals(2, f8({x: 1}).next().value); - function* f9({x}, g = () => eval("x")) { var x = 2; return g(); } - assertEquals(1, f9({x: 1}).next().value); - - function* f10({x}, y) { var y; return y } - assertEquals(2, f10({x: 6}, 2).next().value); - function* f11({x}, y) { var z = y; var y = 2; return z; } - assertEquals(1, f11({x: 6}, 1).next().value); - function* f12(y, g = () => y) { var y = 2; return g(); } - assertEquals(1, f12(1).next().value); - function* f13({x}, y, [z], v) { var x, y, z; return x*y*z*v } - assertEquals(210, f13({x: 2}, 3, [5], 7).next().value); - - function* f20({x}) { function x() { return 2 }; return x(); } - assertEquals(2, f20({x: 1}).next().value); - // Annex B 3.3 function hoisting is blocked by the conflicting x declaration - function* f21({x}) { { function x() { return 2 } } return x; } - assertEquals(1, f21({x: 1}).next().value); - - // These errors are not recognized in lazy parsing; see mjsunit/bugs/bug-2728.js - assertThrows("'use strict'; (function* f(x) { let x = 0; })()", SyntaxError); - assertThrows("'use strict'; (function* f({x}) { let x = 0; })()", SyntaxError); - assertThrows("'use strict'; (function* f(x) { const x = 0; })()", SyntaxError); - assertThrows("'use strict'; (function* f({x}) { const x = 0; })()", SyntaxError); -}()); - -(function TestDefaults() { - function* f1(x = 1) { return x } - assertEquals(1, f1().next().value); - assertEquals(1, f1(undefined).next().value); - assertEquals(2, f1(2).next().value); - assertEquals(null, f1(null).next().value); - - function* f2(x, y = x) { return x + y; } - assertEquals(8, f2(4).next().value); - assertEquals(8, f2(4, undefined).next().value); - assertEquals(6, f2(4, 2).next().value); - - function* f3(x = 1, y) { return x + y; } - assertEquals(8, f3(5, 3).next().value); - assertEquals(3, f3(undefined, 2).next().value); - assertEquals(6, f3(4, 2).next().value); - - function* f4(x = () => 1) { return x() } - assertEquals(1, f4().next().value); - assertEquals(1, f4(undefined).next().value); - assertEquals(2, f4(() => 2).next().value); - assertThrows(() => f4(null).next(), TypeError); - - function* f5(x, y = () => x) { return x + y(); } - assertEquals(8, f5(4).next().value); - assertEquals(8, f5(4, undefined).next().value); - assertEquals(6, f5(4, () => 2).next().value); - - function* f6(x = {a: 1, m() { return 2 }}) { return x.a + x.m(); } - assertEquals(3, f6().next().value); - assertEquals(3, f6(undefined).next().value); - assertEquals(5, f6({a: 2, m() { return 3 }}).next().value); -}()); - - -(function TestEvalInParameters() { - function* f1(x = eval(0)) { return x } - assertEquals(0, f1().next().value); - function* f2(x = () => eval(1)) { return x() } - assertEquals(1, f2().next().value); -})(); - - -(function TestParameterScopingSloppy() { - var x = 1; - - function* f1(a = x) { var x = 2; return a; } - assertEquals(1, f1().next().value); - function* f2(a = x) { function x() {}; return a; } - assertEquals(1, f2().next().value); - function* f3(a = eval("x")) { var x; return a; } - assertEquals(1, f3().next().value); - function* f31(a = eval("'use strict'; x")) { var x; return a; } - assertEquals(1, f31().next().value); - function* f4(a = function() { return x }) { var x; return a(); } - assertEquals(1, f4().next().value); - function* f5(a = () => x) { var x; return a(); } - assertEquals(1, f5().next().value); - function* f6(a = () => eval("x")) { var x; return a(); } - assertEquals(1, f6().next().value); - function* f61(a = () => { 'use strict'; return eval("x") }) { var x; return a(); } - assertEquals(1, f61().next().value); - function* f62(a = () => eval("'use strict'; x")) { var x; return a(); } - assertEquals(1, f62().next().value); - - var f11 = function* f(x = f) { var f; return x; } - assertSame(f11, f11().next().value); - var f12 = function* f(x = f) { function f() {}; return x; } - assertSame(f12, f12().next().value); - var f13 = function* f(f = 7, x = f) { return x; } - assertSame(7, f13().next().value); - - var o1 = {f: function*(x = this) { return x; }}; - assertSame(o1, o1.f().next().value); - assertSame(1, o1.f(1).next().value); -})(); - -(function TestParameterScopingStrict() { - "use strict"; - var x = 1; - - function* f1(a = x) { let x = 2; return a; } - assertEquals(1, f1().next().value); - function* f2(a = x) { const x = 2; return a; } - assertEquals(1, f2().next().value); - function* f3(a = x) { function x() {}; return a; } - assertEquals(1, f3().next().value); - function* f4(a = eval("x")) { var x; return a; } - assertEquals(1, f4().next().value); - function* f5(a = () => eval("x")) { var x; return a(); } - assertEquals(1, f5().next().value); - - var f11 = function* f(x = f) { let f; return x; } - assertSame(f11, f11().next().value); - var f12 = function* f(x = f) { const f = 0; return x; } - assertSame(f12, f12().next().value); - var f13 = function* f(x = f) { function f() {}; return x; } - assertSame(f13, f13().next().value); -})(); - -(function TestSloppyEvalScoping() { - var x = 1; - - function* f1(y = eval("var x = 2")) { with ({}) { return x; } } - assertEquals(1, f1().next().value); - function* f2(y = eval("var x = 2"), z = x) { return z; } - assertEquals(1, f2().next().value); - assertEquals(1, f2(0).next().value); - function* f3(y = eval("var x = 2"), z = eval("x")) { return z; } - assertEquals(1, f3().next().value); - assertEquals(1, f3(0).next().value); - function* f8(y = (eval("var x = 2"), x)) { return y; } - assertEquals(2, f8().next().value); - assertEquals(0, f8(0).next().value); - - function* f11(z = eval("var y = 2")) { return y; } - assertThrows(() => f11().next(), ReferenceError); - function* f12(z = eval("var y = 2"), b = y) {} - assertThrows(() => f12().next(), ReferenceError); - function* f13(z = eval("var y = 2"), b = eval("y")) {} - assertThrows(() => f13().next(), ReferenceError); - - function* f21(f = () => x) { eval("var x = 2"); return f() } - assertEquals(1, f21().next().value); - assertEquals(3, f21(() => 3).next().value); - function* f22(f = () => eval("x")) { eval("var x = 2"); return f() } - assertEquals(1, f22().next().value); - assertEquals(3, f22(() => 3).next().value); -})(); - - -(function TestStrictEvalScoping() { - 'use strict'; - var x = 1; - - function* f1(y = eval("var x = 2")) { return x; } - assertEquals(1, f1().next().value); - function* f2(y = eval("var x = 2"), z = x) { return z; } - assertEquals(1, f2().next().value); - assertEquals(1, f2(0).next().value); - function* f3(y = eval("var x = 2"), z = eval("x")) { return z; } - assertEquals(1, f3().next().value); - assertEquals(1, f3(0).next().value); - function* f8(y = (eval("var x = 2"), x)) { return y; } - assertEquals(1, f8().next().value); - assertEquals(0, f8(0).next().value); - - function* f11(z = eval("var y = 2")) { return y; } - assertThrows(() => f11().next().value, ReferenceError); - function* f12(z = eval("var y = 2"), b = y) {} - assertThrows(() => f12().next().value, ReferenceError); - function* f13(z = eval("var y = 2"), b = eval("y")) {} - assertThrows(() => f13().next().value, ReferenceError); - - function* f21(f = () => x) { eval("var x = 2"); return f() } - assertEquals(1, f21().next().value); - assertEquals(3, f21(() => 3).next().value); - function* f22(f = () => eval("x")) { eval("var x = 2"); return f() } - assertEquals(1, f22().next().value); - assertEquals(3, f22(() => 3).next().value); -})(); - -(function TestParameterTDZSloppy() { - function* f1(a = x, x) { return a } - assertThrows(() => f1(undefined, 4), ReferenceError); - assertEquals(4, f1(4, 5).next().value); - function* f2(a = eval("x"), x) { return a } - assertThrows(() => f2(undefined, 4), ReferenceError); - assertEquals(4, f2(4, 5).next().value); - function* f3(a = eval("'use strict'; x"), x) { return a } - assertThrows(() => f3(undefined, 4), ReferenceError); - assertEquals(4, f3(4, 5).next().value); - function* f4(a = () => x, x) { return a() } - assertEquals(4, f4(() => 4, 5).next().value); - function* f5(a = () => eval("x"), x) { return a() } - assertEquals(4, f5(() => 4, 5).next().value); - function* f6(a = () => eval("'use strict'; x"), x) { return a() } - assertEquals(4, f6(() => 4, 5).next().value); - - function* f11(a = x, x = 2) { return a } - assertThrows(() => f11(), ReferenceError); - assertThrows(() => f11(undefined), ReferenceError); - assertThrows(() => f11(undefined, 4), ReferenceError); - assertEquals(4, f1(4, 5).next().value); - function* f12(a = eval("x"), x = 2) { return a } - assertThrows(() => f12(), ReferenceError); - assertThrows(() => f12(undefined), ReferenceError); - assertThrows(() => f12(undefined, 4), ReferenceError); - assertEquals(4, f12(4, 5).next().value); - function* f13(a = eval("'use strict'; x"), x = 2) { return a } - assertThrows(() => f13(), ReferenceError); - assertThrows(() => f13(undefined), ReferenceError); - assertThrows(() => f13(undefined, 4), ReferenceError); - assertEquals(4, f13(4, 5).next().value); - - function* f21(x = function() { return a }, ...a) { return x()[0] } - assertEquals(4, f21(undefined, 4).next().value); - function* f22(x = () => a, ...a) { return x()[0] } - assertEquals(4, f22(undefined, 4).next().value); - function* f23(x = () => eval("a"), ...a) { return x()[0] } - assertEquals(4, f23(undefined, 4).next().value); - function* f24(x = () => {'use strict'; return eval("a") }, ...a) { - return x()[0] - } - assertEquals(4, f24(undefined, 4).next().value); - function* f25(x = () => eval("'use strict'; a"), ...a) { return x()[0] } - assertEquals(4, f25(undefined, 4).next().value); -})(); - -(function TestParameterTDZStrict() { - "use strict"; - - function* f1(a = eval("x"), x) { return a } - assertThrows(() => f1(undefined, 4), ReferenceError); - assertEquals(4, f1(4, 5).next().value); - function* f2(a = () => eval("x"), x) { return a() } - assertEquals(4, f2(() => 4, 5).next().value); - - function* f11(a = eval("x"), x = 2) { return a } - assertThrows(() => f11(), ReferenceError); - assertThrows(() => f11(undefined), ReferenceError); - assertThrows(() => f11(undefined, 4), ReferenceError); - assertEquals(4, f11(4, 5).next().value); - - function* f21(x = () => eval("a"), ...a) { return x()[0] } - assertEquals(4, f21(undefined, 4).next().value); -})(); - -(function TestArgumentsForNonSimpleParameters() { - function* f1(x = 900) { arguments[0] = 1; return x } - assertEquals(9, f1(9).next().value); - assertEquals(900, f1().next().value); - function* f2(x = 1001) { x = 2; return arguments[0] } - assertEquals(10, f2(10).next().value); - assertEquals(undefined, f2().next().value); -}()); - - -(function TestFunctionLength() { - assertEquals(0, (function*(x = 1) {}).length); - assertEquals(0, (function*(x = 1, ...a) {}).length); - assertEquals(1, (function*(x, y = 1) {}).length); - assertEquals(1, (function*(x, y = 1, ...a) {}).length); - assertEquals(2, (function*(x, y, z = 1) {}).length); - assertEquals(2, (function*(x, y, z = 1, ...a) {}).length); - assertEquals(1, (function*(x, y = 1, z) {}).length); - assertEquals(1, (function*(x, y = 1, z, ...a) {}).length); - assertEquals(1, (function*(x, y = 1, z, v = 2) {}).length); - assertEquals(1, (function*(x, y = 1, z, v = 2, ...a) {}).length); -})(); - -(function TestDirectiveThrows() { - "use strict"; - - assertThrows("(function*(x=1){'use strict';})", SyntaxError); - assertThrows("(function*(a, x=1){'use strict';})", SyntaxError); - assertThrows("(function*({x}){'use strict';})", SyntaxError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/generators-iteration.js b/implementation-contributed/v8/mjsunit/es6/generators-iteration.js deleted file mode 100644 index ae4c682e7e8..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/generators-iteration.js +++ /dev/null @@ -1,674 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Test generator iteration. - -var GeneratorFunction = (function*(){yield 1;}).__proto__.constructor; - -function assertIteratorResult(value, done, result) { - assertEquals({ value: value, done: done}, result); -} - -function assertIteratorIsClosed(iter) { - assertIteratorResult(undefined, true, iter.next()); - assertDoesNotThrow(function() { iter.next(); }); -} - -function assertThrownIteratorIsClosed(iter) { - assertIteratorIsClosed(iter); -} - -function TestGeneratorResultPrototype() { - function* g() { yield 1; } - var iter = g(); - var result = iter.next(); - - assertSame(Object.prototype, Object.getPrototypeOf(result)); - property_names = Object.getOwnPropertyNames(result); - property_names.sort(); - assertEquals(["done", "value"], property_names); - assertIteratorResult(1, false, result); -} -TestGeneratorResultPrototype() - -function TestGenerator(g, expected_values_for_next, - send_val, expected_values_for_send) { - function testNext(thunk) { - var iter = thunk(); - for (var i = 0; i < expected_values_for_next.length; i++) { - var v1 = expected_values_for_next[i]; - var v2 = i == expected_values_for_next.length - 1; - // var v3 = iter.next(); - assertIteratorResult(v1, v2, iter.next()); - } - assertIteratorIsClosed(iter); - } - function testSend(thunk) { - var iter = thunk(); - for (var i = 0; i < expected_values_for_send.length; i++) { - assertIteratorResult(expected_values_for_send[i], - i == expected_values_for_send.length - 1, - iter.next(send_val)); - } - assertIteratorIsClosed(iter); - } - function testThrow(thunk) { - for (var i = 0; i < expected_values_for_next.length; i++) { - var iter = thunk(); - for (var j = 0; j < i; j++) { - assertIteratorResult(expected_values_for_next[j], - j == expected_values_for_next.length - 1, - iter.next()); - } - function Sentinel() {} - assertThrows(function () { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - } - - testNext(g); - testSend(g); - testThrow(g); - - testNext(function*() { return yield* g(); }); - testSend(function*() { return yield* g(); }); - testThrow(function*() { return yield* g(); }); - - if (g instanceof GeneratorFunction) { - testNext(g); - testSend(g); - testThrow(g); - } -} - -TestGenerator(function* g1() { }, - [undefined], - "foo", - [undefined]); - -TestGenerator(function* g2() { yield 1; }, - [1, undefined], - "foo", - [1, undefined]); - -TestGenerator(function* g3() { yield 1; yield 2; }, - [1, 2, undefined], - "foo", - [1, 2, undefined]); - -TestGenerator(function* g4() { yield 1; yield 2; return 3; }, - [1, 2, 3], - "foo", - [1, 2, 3]); - -TestGenerator(function* g5() { return 1; }, - [1], - "foo", - [1]); - -TestGenerator(function* g6() { var x = yield 1; return x; }, - [1, undefined], - "foo", - [1, "foo"]); - -TestGenerator(function* g7() { var x = yield 1; yield 2; return x; }, - [1, 2, undefined], - "foo", - [1, 2, "foo"]); - -TestGenerator(function* g8() { for (var x = 0; x < 4; x++) { yield x; } }, - [0, 1, 2, 3, undefined], - "foo", - [0, 1, 2, 3, undefined]); - -// Generator with arguments. -TestGenerator( - function g9() { - return (function*(a, b, c, d) { - yield a; yield b; yield c; yield d; - })("fee", "fi", "fo", "fum"); - }, - ["fee", "fi", "fo", "fum", undefined], - "foo", - ["fee", "fi", "fo", "fum", undefined]); - -// Too few arguments. -TestGenerator( - function g10() { - return (function*(a, b, c, d) { - yield a; yield b; yield c; yield d; - })("fee", "fi"); - }, - ["fee", "fi", undefined, undefined, undefined], - "foo", - ["fee", "fi", undefined, undefined, undefined]); - -// Too many arguments. -TestGenerator( - function g11() { - return (function*(a, b, c, d) { - yield a; yield b; yield c; yield d; - })("fee", "fi", "fo", "fum", "I smell the blood of an Englishman"); - }, - ["fee", "fi", "fo", "fum", undefined], - "foo", - ["fee", "fi", "fo", "fum", undefined]); - -// The arguments object. -TestGenerator( - function g12() { - return (function*(a, b, c, d) { - for (var i = 0; i < arguments.length; i++) { - yield arguments[i]; - } - })("fee", "fi", "fo", "fum", "I smell the blood of an Englishman"); - }, - ["fee", "fi", "fo", "fum", "I smell the blood of an Englishman", - undefined], - "foo", - ["fee", "fi", "fo", "fum", "I smell the blood of an Englishman", - undefined]); - -// Access to captured free variables. -TestGenerator( - function g13() { - return (function(a, b, c, d) { - return (function*() { - yield a; yield b; yield c; yield d; - })(); - })("fee", "fi", "fo", "fum"); - }, - ["fee", "fi", "fo", "fum", undefined], - "foo", - ["fee", "fi", "fo", "fum", undefined]); - -// Abusing the arguments object. -TestGenerator( - function g14() { - return (function*(a, b, c, d) { - arguments[0] = "Be he live"; - arguments[1] = "or be he dead"; - arguments[2] = "I'll grind his bones"; - arguments[3] = "to make my bread"; - yield a; yield b; yield c; yield d; - })("fee", "fi", "fo", "fum"); - }, - ["Be he live", "or be he dead", "I'll grind his bones", "to make my bread", - undefined], - "foo", - ["Be he live", "or be he dead", "I'll grind his bones", "to make my bread", - undefined]); - -// Abusing the arguments object: strict mode. -TestGenerator( - function g15() { - return (function*(a, b, c, d) { - "use strict"; - arguments[0] = "Be he live"; - arguments[1] = "or be he dead"; - arguments[2] = "I'll grind his bones"; - arguments[3] = "to make my bread"; - yield a; yield b; yield c; yield d; - })("fee", "fi", "fo", "fum"); - }, - ["fee", "fi", "fo", "fum", undefined], - "foo", - ["fee", "fi", "fo", "fum", undefined]); - -// GC. -TestGenerator(function* g16() { yield "baz"; gc(); yield "qux"; }, - ["baz", "qux", undefined], - "foo", - ["baz", "qux", undefined]); - -// Receivers. -TestGenerator( - function g17() { - function* g() { yield this.x; yield this.y; } - var o = { start: g, x: 1, y: 2 }; - return o.start(); - }, - [1, 2, undefined], - "foo", - [1, 2, undefined]); - -TestGenerator( - function* g19() { - var x = 1; - yield x; - with({x:2}) { yield x; } - yield x; - }, - [1, 2, 1, undefined], - "foo", - [1, 2, 1, undefined]); - -TestGenerator( - function* g20() { yield (1 + (yield 2) + 3); }, - [2, NaN, undefined], - "foo", - [2, "1foo3", undefined]); - -TestGenerator( - function* g21() { return (1 + (yield 2) + 3); }, - [2, NaN], - "foo", - [2, "1foo3"]); - -TestGenerator( - function* g22() { yield (1 + (yield 2) + 3); yield (4 + (yield 5) + 6); }, - [2, NaN, 5, NaN, undefined], - "foo", - [2, "1foo3", 5, "4foo6", undefined]); - -TestGenerator( - function* g23() { - return (yield (1 + (yield 2) + 3)) + (yield (4 + (yield 5) + 6)); - }, - [2, NaN, 5, NaN, NaN], - "foo", - [2, "1foo3", 5, "4foo6", "foofoo"]); - -// Rewind a try context with and without operands on the stack. -TestGenerator( - function* g24() { - try { - return (yield (1 + (yield 2) + 3)) + (yield (4 + (yield 5) + 6)); - } catch (e) { - throw e; - } - }, - [2, NaN, 5, NaN, NaN], - "foo", - [2, "1foo3", 5, "4foo6", "foofoo"]); - -// Yielding in a catch context, with and without operands on the stack. -TestGenerator( - function* g25() { - try { - throw (yield (1 + (yield 2) + 3)) - } catch (e) { - if (typeof e == 'object') throw e; - return e + (yield (4 + (yield 5) + 6)); - } - }, - [2, NaN, 5, NaN, NaN], - "foo", - [2, "1foo3", 5, "4foo6", "foofoo"]); - -// Yield with no arguments yields undefined. -TestGenerator( - function* g26() { return yield yield }, - [undefined, undefined, undefined], - "foo", - [undefined, "foo", "foo"]); - -// A newline causes the parser to stop looking for an argument to yield. -TestGenerator( - function* g27() { - yield - 3 - return - }, - [undefined, undefined], - "foo", - [undefined, undefined]); - -// TODO(wingo): We should use TestGenerator for these, except that -// currently yield* will unconditionally propagate a throw() to the -// delegate iterator, which fails for these iterators that don't have -// throw(). See http://code.google.com/p/v8/issues/detail?id=3484. -(function() { - function* g28() { - yield* [1, 2, 3]; - } - var iter = g28(); - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.next()); - assertIteratorResult(undefined, true, iter.next()); -})(); - -(function() { - function* g29() { - yield* "abc"; - } - var iter = g29(); - assertIteratorResult("a", false, iter.next()); - assertIteratorResult("b", false, iter.next()); - assertIteratorResult("c", false, iter.next()); - assertIteratorResult(undefined, true, iter.next()); -})(); - -// Generator function instances. -TestGenerator(GeneratorFunction(), - [undefined], - "foo", - [undefined]); - -TestGenerator(new GeneratorFunction(), - [undefined], - "foo", - [undefined]); - -TestGenerator(GeneratorFunction('yield 1;'), - [1, undefined], - "foo", - [1, undefined]); - -TestGenerator( - function() { return GeneratorFunction('x', 'y', 'yield x + y;')(1, 2) }, - [3, undefined], - "foo", - [3, undefined]); - -// Access to this with formal arguments. -TestGenerator( - function () { - return ({ x: 42, g: function* (a) { yield this.x } }).g(0); - }, - [42, undefined], - "foo", - [42, undefined]); - -// Test that yield* validates iterator results. -function TestDelegatingYield(junk) { - var iterator = {next: () => junk}; - var iterable = {[Symbol.iterator]: () => iterator}; - function* g() { return yield* iterable }; - assertThrows(() => g().next(), TypeError); -} -TestDelegatingYield(); -TestDelegatingYield(null); -TestDelegatingYield(42); -TestDelegatingYield(true); - -function TestTryCatch(instantiate) { - function* g() { yield 1; try { yield 2; } catch (e) { yield e; } yield 3; } - function Sentinel() {} - - function Test1(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.next()); - assertIteratorIsClosed(iter); - } - Test1(instantiate(g)); - - function Test2(iter) { - assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test2(instantiate(g)); - - function Test3(iter) { - assertIteratorResult(1, false, iter.next()); - assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test3(instantiate(g)); - - function Test4(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - var exn = new Sentinel; - assertIteratorResult(exn, false, iter.throw(exn)); - assertIteratorResult(3, false, iter.next()); - assertIteratorIsClosed(iter); - } - Test4(instantiate(g)); - - function Test5(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - var exn = new Sentinel; - assertIteratorResult(exn, false, iter.throw(exn)); - assertIteratorResult(3, false, iter.next()); - assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test5(instantiate(g)); - - function Test6(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - var exn = new Sentinel; - assertIteratorResult(exn, false, iter.throw(exn)); - assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test6(instantiate(g)); - - function Test7(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.next()); - assertIteratorIsClosed(iter); - } - Test7(instantiate(g)); -} -TestTryCatch(function (g) { return g(); }); -TestTryCatch(function* (g) { return yield* g(); }); - -function TestTryFinally(instantiate) { - function* g() { yield 1; try { yield 2; } finally { yield 3; } yield 4; } - function Sentinel() {} - function Sentinel2() {} - - function Test1(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.next()); - assertIteratorResult(4, false, iter.next()); - assertIteratorIsClosed(iter); - } - Test1(instantiate(g)); - - function Test2(iter) { - assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test2(instantiate(g)); - - function Test3(iter) { - assertIteratorResult(1, false, iter.next()); - assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test3(instantiate(g)); - - function Test4(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.throw(new Sentinel)); - assertThrows(function() { iter.next(); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test4(instantiate(g)); - - function Test5(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.throw(new Sentinel)); - assertThrows(function() { iter.throw(new Sentinel2); }, Sentinel2); - assertThrownIteratorIsClosed(iter); - } - Test5(instantiate(g)); - - function Test6(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.next()); - assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test6(instantiate(g)); - - function Test7(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.next()); - assertIteratorResult(4, false, iter.next()); - assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test7(instantiate(g)); - - function Test8(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.next()); - assertIteratorResult(4, false, iter.next()); - assertIteratorIsClosed(iter); - } - Test8(instantiate(g)); -} -TestTryFinally(function (g) { return g(); }); -TestTryFinally(function* (g) { return yield* g(); }); - -function TestNestedTry(instantiate) { - function* g() { - try { - yield 1; - try { yield 2; } catch (e) { yield e; } - yield 3; - } finally { - yield 4; - } - yield 5; - } - function Sentinel() {} - function Sentinel2() {} - - function Test1(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - assertIteratorResult(3, false, iter.next()); - assertIteratorResult(4, false, iter.next()); - assertIteratorResult(5, false, iter.next()); - assertIteratorIsClosed(iter); - } - Test1(instantiate(g)); - - function Test2(iter) { - assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test2(instantiate(g)); - - function Test3(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(4, false, iter.throw(new Sentinel)); - assertThrows(function() { iter.next(); }, Sentinel); - assertThrownIteratorIsClosed(iter); - } - Test3(instantiate(g)); - - function Test4(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(4, false, iter.throw(new Sentinel)); - assertThrows(function() { iter.throw(new Sentinel2); }, Sentinel2); - assertThrownIteratorIsClosed(iter); - } - Test4(instantiate(g)); - - function Test5(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - var exn = new Sentinel; - assertIteratorResult(exn, false, iter.throw(exn)); - assertIteratorResult(3, false, iter.next()); - assertIteratorResult(4, false, iter.next()); - assertIteratorResult(5, false, iter.next()); - assertIteratorIsClosed(iter); - } - Test5(instantiate(g)); - - function Test6(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - var exn = new Sentinel; - assertIteratorResult(exn, false, iter.throw(exn)); - assertIteratorResult(4, false, iter.throw(new Sentinel2)); - assertThrows(function() { iter.next(); }, Sentinel2); - assertThrownIteratorIsClosed(iter); - } - Test6(instantiate(g)); - - function Test7(iter) { - assertIteratorResult(1, false, iter.next()); - assertIteratorResult(2, false, iter.next()); - var exn = new Sentinel; - assertIteratorResult(exn, false, iter.throw(exn)); - assertIteratorResult(3, false, iter.next()); - assertIteratorResult(4, false, iter.throw(new Sentinel2)); - assertThrows(function() { iter.next(); }, Sentinel2); - assertThrownIteratorIsClosed(iter); - } - Test7(instantiate(g)); - - // That's probably enough. -} -TestNestedTry(function (g) { return g(); }); -TestNestedTry(function* (g) { return yield* g(); }); - -function TestRecursion() { - function TestNextRecursion() { - function* g() { yield iter.next(); } - var iter = g(); - return iter.next(); - } - function TestSendRecursion() { - function* g() { yield iter.next(42); } - var iter = g(); - return iter.next(); - } - function TestThrowRecursion() { - function* g() { yield iter.throw(1); } - var iter = g(); - return iter.next(); - } - assertThrows(TestNextRecursion, Error); - assertThrows(TestSendRecursion, Error); - assertThrows(TestThrowRecursion, Error); -} -TestRecursion(); - - -// Test yield* on non-iterable objects. -function* g(junk) { return yield* junk } -var non_iterables = [ - 42, - {[Symbol.iterator]: 42}, - {[Symbol.iterator]: () => 42}, - {[Symbol.iterator]: () => ({next: 42})}, -]; -for (let junk of non_iterables) { - assertThrows(() => g(junk).next(), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/generators-objects.js b/implementation-contributed/v8/mjsunit/es6/generators-objects.js deleted file mode 100644 index ff216d43e48..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/generators-objects.js +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test instantations of generators. - -// Generators shouldn't allocate stack slots. This test will abort in debug -// mode if generators have stack slots. -function TestContextAllocation() { - function* g1(a, b, c) { yield 1; return [a, b, c]; } - function* g2() { yield 1; return arguments; } - function* g3() { yield 1; return this; } - function* g4() { var x = 10; yield 1; return x; } - // Temporary variable context allocation - function* g5(l) { "use strict"; yield 1; for (let x in l) { yield x; } } - - g1(); - g2(); - g3(); - g4(); - g5(["foo"]); -} -TestContextAllocation(); - - -// Test the properties and prototype of a generator object. -function TestGeneratorObject() { - function* g() { yield 1; } - - var iter = g(); - assertSame(g.prototype, Object.getPrototypeOf(iter)); - assertTrue(iter instanceof g); - assertEquals("[object Generator]", String(iter)); - assertEquals([], Object.getOwnPropertyNames(iter)); - assertTrue(iter !== g()); - assertEquals("[object Generator]", Object.prototype.toString.call(iter)); - var gf = iter.__proto__.constructor; - assertEquals("[object GeneratorFunction]", Object.prototype.toString.call(gf)); - - // generators are not constructable. - assertThrows(()=>new g()); -} -TestGeneratorObject(); - - -// Test the methods of generator objects. -function TestGeneratorObjectMethods() { - function* g() { yield 1; } - var iter = g(); - - function TestNonGenerator(non_generator) { - assertThrows(function() { iter.next.call(non_generator); }, TypeError); - assertThrows(function() { iter.next.call(non_generator, 1); }, TypeError); - assertThrows(function() { iter.throw.call(non_generator, 1); }, TypeError); - } - - TestNonGenerator(1); - TestNonGenerator({}); - TestNonGenerator(function(){}); - TestNonGenerator(g); - TestNonGenerator(g.prototype); -} -TestGeneratorObjectMethods(); - - -function TestPrototype() { - function* g() { } - - let g_prototype = g.prototype; - assertEquals([], Reflect.ownKeys(g_prototype)); - - let generator_prototype = Object.getPrototypeOf(g_prototype); - assertSame(generator_prototype, Object.getPrototypeOf(g).prototype); - - // Unchanged .prototype - assertSame(g_prototype, Object.getPrototypeOf(g())); - - // Custom object as .prototype - { - let proto = {}; - g.prototype = proto; - assertSame(proto, Object.getPrototypeOf(g())); - } - - // Custom non-object as .prototype - g.prototype = null; - assertSame(generator_prototype, Object.getPrototypeOf(g())); -} -TestPrototype(); - - -function TestComputedPropertyNames() { - function* f1() { return {[yield]: 42} } - var g1 = f1(); - g1.next(); - assertEquals(42, g1.next('a').value.a); - - function* f2() { return {['a']: yield} } - var g2 = f2(); - g2.next(); - assertEquals(42, g2.next(42).value.a); -} -TestComputedPropertyNames(); diff --git a/implementation-contributed/v8/mjsunit/es6/generators-parsing.js b/implementation-contributed/v8/mjsunit/es6/generators-parsing.js deleted file mode 100644 index f3f8cad086a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/generators-parsing.js +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test basic generator syntax. - -// Yield statements. -function* g() { yield 3; yield 4; } - -// Yield expressions. -function* g() { (yield 3) + (yield 4); } - -// Yield without a RHS. -function* g() { yield; } -function* g() { yield } -function* g() { - yield -} -function* g() { (yield) } -function* g() { [yield] } -function* g() { {yield} } -function* g() { yield, yield } -function* g() { yield; yield } -function* g() { (yield) ? yield : yield } -function* g() { - (yield) - ? yield - : yield -} - -// If yield has a RHS, it needs to start on the same line. The * in a -// yield* counts as starting the RHS. -function* g() { - yield * - foo -} -assertThrows("function* g() { yield\n* foo }", SyntaxError); -assertEquals(undefined, - (function*(){ - yield - 3 - })().next().value); - -// A YieldExpression is not a LogicalORExpression. -assertThrows("function* g() { yield ? yield : yield }", SyntaxError); - -// You can have a generator in strict mode. -function* g() { "use strict"; yield 3; yield 4; } - -// Generators can have return statements also, which internally parse to a kind -// of yield expression. -function* g() { yield 1; return; } -function* g() { yield 1; return 2; } -function* g() { yield 1; return 2; yield "dead"; } - -// Generator expression. -(function* () { yield 3; }); - -// Named generator expression. -(function* g() { yield 3; }); - -// You can have a generator without a yield. -function* g() { } - -// A YieldExpression is valid as the RHS of a YieldExpression. -function* g() { yield yield 1; } -function* g() { yield 3 + (yield 4); } - -// Generator definitions with a name of "yield" are not specifically ruled out -// by the spec, as the `yield' name is outside the generator itself. However, -// in strict-mode, "yield" is an invalid identifier. -function* yield() { (yield 3) + (yield 4); } -assertThrows("function* yield() { \"use strict\"; (yield 3) + (yield 4); }", - SyntaxError); - -// In sloppy mode, yield is a normal identifier, outside of generators. -function yield(yield) { yield: yield (yield + yield (0)); } - -// Yield is always valid as a key in an object literal. -({ yield: 1 }); -function* g() { yield ({ yield: 1 }) } -function* g() { yield ({ get yield() { return 1; }}) } - -// Checks that yield is a valid label in sloppy mode, but not valid in a strict -// mode or in generators. -function f() { yield: 1 } -assertThrows("function f() { \"use strict\"; yield: 1 }", SyntaxError) -assertThrows("function* g() { yield: 1 }", SyntaxError) - -// Yield is only a keyword in the body of the generator, not in nested -// functions. -function* g() { function f() { yield (yield + yield (0)); } } - -// Yield in a generator is not an identifier. -assertThrows("function* g() { yield = 10; }", SyntaxError); - -// Yield binds very loosely, so this parses as "yield (3 + yield 4)", which is -// invalid. -assertThrows("function* g() { yield 3 + yield 4; }", SyntaxError); - -// Yield is still a future-reserved-word in strict mode -assertThrows("function f() { \"use strict\"; var yield = 13; }", SyntaxError); - -// The name of the NFE is bound in the generator expression, so is invalid. -assertThrows("function f() { (function* yield() {}); }", SyntaxError); - -// In generators, yield is invalid as a formal argument name. -assertThrows("function* g(yield) { yield (10); }", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/es6/generators-poisoned-properties.js b/implementation-contributed/v8/mjsunit/es6/generators-poisoned-properties.js deleted file mode 100644 index e8610220fc3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/generators-poisoned-properties.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testRestrictedPropertiesStrict() { - function* generator() { "use strict"; } - assertFalse(generator.hasOwnProperty("arguments")); - assertThrows(function() { return generator.arguments; }, TypeError); - assertThrows(function() { return generator.arguments = {}; }, TypeError); - - assertFalse(generator.hasOwnProperty("caller")); - assertThrows(function() { return generator.caller; }, TypeError); - assertThrows(function() { return generator.caller = {}; }, TypeError); -})(); - - -(function testRestrictedPropertiesSloppy() { - function* generator() {} - assertFalse(generator.hasOwnProperty("arguments")); - assertThrows(function() { return generator.arguments; }, TypeError); - assertThrows(function() { return generator.arguments = {}; }, TypeError); - - assertFalse(generator.hasOwnProperty("caller")); - assertThrows(function() { return generator.caller; }, TypeError); - assertThrows(function() { return generator.caller = {}; }, TypeError); -})(); - -function assertIteratorResult(value, done, result) { - assertEquals({value: value, done: done}, result); -} - - -(function testIteratorResultStrict() { - function* generator() { "use strict"; } - assertIteratorResult(undefined, true, generator().next()); -})(); - - -(function testIteratorResultSloppy() { - function* generator() {} - assertIteratorResult(undefined, true, generator().next()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/generators-runtime.js b/implementation-contributed/v8/mjsunit/es6/generators-runtime.js deleted file mode 100644 index 5c426b21fda..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/generators-runtime.js +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test aspects of the generator runtime. - -// See: -// http://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorfunction-objects - -function f() { "use strict"; } -function* g() { yield 1; } -var GeneratorFunctionPrototype = Object.getPrototypeOf(g); -var GeneratorFunction = GeneratorFunctionPrototype.constructor; -var GeneratorObjectPrototype = GeneratorFunctionPrototype.prototype; -var IteratorPrototype = Object.getPrototypeOf(GeneratorObjectPrototype); - -// A generator function should have the same set of properties as any -// other function. -function TestGeneratorFunctionInstance() { - var f_own_property_names = Object.getOwnPropertyNames(f); - var g_own_property_names = Object.getOwnPropertyNames(g); - - f_own_property_names.sort(); - g_own_property_names.sort(); - - assertArrayEquals(f_own_property_names, g_own_property_names); - var i; - for (i = 0; i < f_own_property_names.length; i++) { - var prop = f_own_property_names[i]; - var f_desc = Object.getOwnPropertyDescriptor(f, prop); - var g_desc = Object.getOwnPropertyDescriptor(g, prop); - assertEquals(f_desc.configurable, g_desc.configurable, prop); - assertEquals(f_desc.writable, g_desc.writable, prop); - assertEquals(f_desc.enumerable, g_desc.enumerable, prop); - } -} -TestGeneratorFunctionInstance(); - - -// Generators have an additional object interposed in the chain between -// themselves and Function.prototype. -function TestGeneratorFunctionPrototype() { - // Sanity check. - assertSame(Object.getPrototypeOf(f), Function.prototype); - assertFalse(GeneratorFunctionPrototype === Function.prototype); - assertSame(Function.prototype, - Object.getPrototypeOf(GeneratorFunctionPrototype)); - assertSame(GeneratorFunctionPrototype, - Object.getPrototypeOf(function* () {})); - assertSame("object", typeof GeneratorFunctionPrototype); - - var constructor_desc = Object.getOwnPropertyDescriptor( - GeneratorFunctionPrototype, "constructor"); - assertTrue(constructor_desc !== undefined); - assertSame(GeneratorFunction, constructor_desc.value); - assertFalse(constructor_desc.writable); - assertFalse(constructor_desc.enumerable); - assertTrue(constructor_desc.configurable); - - var prototype_desc = Object.getOwnPropertyDescriptor( - GeneratorFunctionPrototype, "prototype"); - assertTrue(prototype_desc !== undefined); - assertSame(GeneratorObjectPrototype, prototype_desc.value); - assertFalse(prototype_desc.writable); - assertFalse(prototype_desc.enumerable); - assertTrue(prototype_desc.configurable); -} -TestGeneratorFunctionPrototype(); - - -// Functions that we associate with generator objects are actually defined by -// a common prototype. -function TestGeneratorObjectPrototype() { - assertSame(IteratorPrototype, - Object.getPrototypeOf(GeneratorObjectPrototype)); - assertSame(GeneratorObjectPrototype, - Object.getPrototypeOf((function*(){yield 1}).prototype)); - - var expected_property_names = ["next", "return", "throw", "constructor"]; - var found_property_names = - Object.getOwnPropertyNames(GeneratorObjectPrototype); - - expected_property_names.sort(); - found_property_names.sort(); - - assertArrayEquals(expected_property_names, found_property_names); - - var constructor_desc = Object.getOwnPropertyDescriptor( - GeneratorObjectPrototype, "constructor"); - assertTrue(constructor_desc !== undefined); - assertFalse(constructor_desc.writable); - assertFalse(constructor_desc.enumerable); - assertTrue(constructor_desc.configurable); - - var next_desc = Object.getOwnPropertyDescriptor(GeneratorObjectPrototype, - "next"); - assertTrue(next_desc !== undefined); - assertTrue(next_desc.writable); - assertFalse(next_desc.enumerable); - assertTrue(next_desc.configurable); - - var throw_desc = Object.getOwnPropertyDescriptor(GeneratorObjectPrototype, - "throw"); - assertTrue(throw_desc !== undefined); - assertTrue(throw_desc.writable); - assertFalse(throw_desc.enumerable); - assertTrue(throw_desc.configurable); -} -TestGeneratorObjectPrototype(); - - -// This tests the object that would be called "GeneratorFunction", if it were -// like "Function". -function TestGeneratorFunction() { - assertSame(GeneratorFunctionPrototype, GeneratorFunction.prototype); - assertTrue(g instanceof GeneratorFunction); - - assertSame(Function, Object.getPrototypeOf(GeneratorFunction)); - assertTrue(g instanceof Function); - - assertEquals("function* g() { yield 1; }", g.toString()); - - // Not all functions are generators. - assertTrue(f instanceof Function); // Sanity check. - assertTrue(!(f instanceof GeneratorFunction)); - - assertTrue((new GeneratorFunction()) instanceof GeneratorFunction); - assertTrue(GeneratorFunction() instanceof GeneratorFunction); - - // ES6 draft 04-14-15, section 25.2.2.2 - var prototype_desc = Object.getOwnPropertyDescriptor(GeneratorFunction, - "prototype"); - assertFalse(prototype_desc.writable); - assertFalse(prototype_desc.enumerable); - assertFalse(prototype_desc.configurable); -} -TestGeneratorFunction(); - - -function TestPerGeneratorPrototype() { - assertTrue((function*(){}).prototype !== (function*(){}).prototype); - assertTrue((function*(){}).prototype !== g.prototype); - assertSame(GeneratorObjectPrototype, Object.getPrototypeOf(g.prototype)); - assertTrue(!(g.prototype instanceof Function)); - assertSame(typeof (g.prototype), "object"); - - assertArrayEquals([], Object.getOwnPropertyNames(g.prototype)); -} -TestPerGeneratorPrototype(); diff --git a/implementation-contributed/v8/mjsunit/es6/generators-states.js b/implementation-contributed/v8/mjsunit/es6/generators-states.js deleted file mode 100644 index 4e8c58029a3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/generators-states.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test generator states. - -function Foo() {} -function Bar() {} - -function assertIteratorResult(value, done, result) { - assertEquals({ value: value, done: done}, result); -} - -function assertIteratorIsClosed(iter) { - assertIteratorResult(undefined, true, iter.next()); - // Next and throw on a closed iterator. - assertDoesNotThrow(function() { iter.next(); }); - assertThrows(function() { iter.throw(new Bar); }, Bar); -} - -var iter; -function* nextGenerator() { yield iter.next(); } -function* throwGenerator() { yield iter.throw(new Bar); } - -// Throw on a suspendedStart iterator. -iter = nextGenerator(); -assertThrows(function() { iter.throw(new Foo) }, Foo) -assertIteratorIsClosed(iter); -assertThrows(function() { iter.throw(new Foo) }, Foo) -assertIteratorIsClosed(iter); - -// The same. -iter = throwGenerator(); -assertThrows(function() { iter.throw(new Foo) }, Foo) -assertThrows(function() { iter.throw(new Foo) }, Foo) -assertIteratorIsClosed(iter); - -// Next on an executing iterator raises a TypeError. -iter = nextGenerator(); -assertThrows(function() { iter.next() }, TypeError) -assertIteratorIsClosed(iter); - -// Throw on an executing iterator raises a TypeError. -iter = throwGenerator(); -assertThrows(function() { iter.next() }, TypeError) -assertIteratorIsClosed(iter); - -// Next on an executing iterator doesn't change the state of the -// generator. -iter = (function* () { - try { - iter.next(); - yield 1; - } catch (e) { - try { - // This next() should raise the same exception, because the first - // next() left the iter in the executing state. - iter.next(); - yield 2; - } catch (e) { - yield 3; - } - } - yield 4; -})(); -assertIteratorResult(3, false, iter.next()); -assertIteratorResult(4, false, iter.next()); -assertIteratorIsClosed(iter); - - -// A return that doesn't close. -{ - let g = function*() { try {return 42} finally {yield 43} }; - - let x = g(); - assertEquals({value: 43, done: false}, x.next()); - assertEquals({value: 42, done: true}, x.next()); -} -{ - let x; - let g = function*() { try {return 42} finally {x.throw(666)} }; - - x = g(); - assertThrows(() => x.next(), TypeError); // Still executing. -} -{ - let x; - let g = function*() { - try {return 42} finally {try {x.throw(666)} catch(e) {}} - }; - - x = g(); - assertEquals({value: 42, done: true}, x.next()); -} diff --git a/implementation-contributed/v8/mjsunit/es6/global-proto-proxy.js b/implementation-contributed/v8/mjsunit/es6/global-proto-proxy.js deleted file mode 100644 index 8de1a7ae0dd..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/global-proto-proxy.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var global = this; -;(function () { - var calledDelete = false; - var calledGet = false; - var calledHas = false; - var calledSet = false; - var target = {}; - var assertEquals = global.assertEquals; - var proxy = new Proxy(target, { - has(target, property) { - calledHas = true; - return Reflect.has(target, property); - }, - get(target, property, receiver) { - calledGet = true; - return Reflect.get(target, property, receiver); - }, - set(targer, property, value, receiver) { - calledSet = true; - return Reflect.set(target, property, value, receiver); - }, - delete(target, property, receiver) { - calledDelete = true; - return Reflect.delete(target, property, receiver); - } - }); - Object.setPrototypeOf(global, proxy); - getGlobal; - assertTrue(calledGet); - makeGlobal = 2; - assertTrue(calledSet); - "findGlobal" in global; - assertTrue(calledHas); - var deletedOwn = delete makeGlobal; - assertTrue(deletedOwn); - assertEquals(void 0, makeGlobal); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/hasinstance-symbol.js b/implementation-contributed/v8/mjsunit/es6/hasinstance-symbol.js deleted file mode 100644 index 6783d8deef6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/hasinstance-symbol.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Verify that the hasInstance symbol is installed on function prototype. -// Test262 makes deeper tests. - -(function TestHasInstance() { - var a = Array(); - assertTrue(Array[Symbol.hasInstance](a)); - assertFalse(Function.prototype[Symbol.hasInstance].call()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/indexed-integer-exotics.js b/implementation-contributed/v8/mjsunit/es6/indexed-integer-exotics.js deleted file mode 100644 index 85ae3692d8d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/indexed-integer-exotics.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Object.prototype["10"] = "unreachable"; -Object.prototype["7"] = "unreachable"; -Object.prototype["-1"] = "unreachable"; -Object.prototype["-0"] = "unreachable"; -Object.prototype["4294967295"] = "unreachable"; - -var array = new Int32Array(10); - -function check() { - for (var i = 0; i < 4; i++) { - assertEquals(undefined, array["-1"]); - assertEquals(undefined, array["-0"]); - assertEquals(undefined, array["10"]); - assertEquals(undefined, array["4294967295"]); - } - assertEquals("unreachable", array.__proto__["-1"]); - assertEquals("unreachable", array.__proto__["-0"]); - assertEquals("unreachable", array.__proto__["10"]); - assertEquals("unreachable", array.__proto__["4294967295"]); -} - -check(); - -array["-1"] = "unreachable"; -array["-0"] = "unreachable"; -array["10"] = "unreachable"; -array["4294967295"] = "unreachable"; - -check(); - -delete array["-0"]; -delete array["-1"]; -delete array["10"]; -delete array["4294967295"]; - -assertEquals(undefined, Object.getOwnPropertyDescriptor(array, "-1")); -assertEquals(undefined, Object.getOwnPropertyDescriptor(array, "-0")); -assertEquals(undefined, Object.getOwnPropertyDescriptor(array, "10")); -assertEquals(undefined, Object.getOwnPropertyDescriptor(array, "4294967295")); -assertEquals(10, Object.keys(array).length); - -check(); - -function f() { return array["-1"]; } - -for (var i = 0; i < 3; i++) { - assertEquals(undefined, f()); -} -%OptimizeFunctionOnNextCall(f); -assertEquals(undefined, f()); - -assertThrows('Object.defineProperty(new Int32Array(100), -1, {value: 1})'); -// -0 gets converted to the string "0", so use "-0" instead. -assertThrows('Object.defineProperty(new Int32Array(100), "-0", {value: 1})'); -assertThrows('Object.defineProperty(new Int32Array(100), -10, {value: 1})'); -assertThrows('Object.defineProperty(new Int32Array(), 4294967295, {value: 1})'); - -check(); diff --git a/implementation-contributed/v8/mjsunit/es6/instanceof-proxies.js b/implementation-contributed/v8/mjsunit/es6/instanceof-proxies.js deleted file mode 100644 index 86b104ce705..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/instanceof-proxies.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -// Flags: --allow-natives-syntax - -// Test instanceof with proxies. - -(function TestInstanceOfWithProxies() { - function foo(x) { - return x instanceof Array; - } - assertTrue(foo([])); - assertFalse(foo({})); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo([])); - assertFalse(foo({})); - - var handler = { - getPrototypeOf: function(target) { return Array.prototype; } - }; - var p = new Proxy({}, handler); - assertTrue(foo(p)); - var o = {}; - o.__proto__ = p; - assertTrue(foo(o)); - - // Make sure we are also correct if the handler throws. - handler.getPrototypeOf = function(target) { - throw "uncooperative"; - } - assertThrows("foo(o)"); - - // Including if the optimized function has a catch handler. - function foo_catch(x) { - try { - x instanceof Array; - } catch(e) { - assertEquals("uncooperative", e); - return true; - } - return false; - } - assertTrue(foo_catch(o)); - %OptimizeFunctionOnNextCall(foo_catch); - assertTrue(foo_catch(o)); - handler.getPrototypeOf = function(target) { return Array.prototype; } - assertFalse(foo_catch(o)); -})(); - - -(function testInstanceOfWithRecursiveProxy() { - // Make sure we gracefully deal with recursive proxies. - var proxy = new Proxy({},{}); - proxy.__proto__ = proxy; - // instanceof will cause an inifinite prototype walk. - assertThrows(() => { proxy instanceof Object }, RangeError); - - var proxy2 = new Proxy({}, {getPrototypeOf() { return proxy2 }}); - assertThrows(() => { proxy instanceof Object }, RangeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/instanceof.js b/implementation-contributed/v8/mjsunit/es6/instanceof.js deleted file mode 100644 index 6bf225953f3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/instanceof.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Make sure it's an error if @@hasInstance isn't a function. -(function() { - var F = {}; - F[Symbol.hasInstance] = null; - assertThrows(function() { 0 instanceof F; }, TypeError); -})(); - -// Make sure the result is coerced to boolean. -(function() { - var F = {}; - F[Symbol.hasInstance] = function() { return undefined; }; - assertEquals(0 instanceof F, false); - F[Symbol.hasInstance] = function() { return null; }; - assertEquals(0 instanceof F, false); - F[Symbol.hasInstance] = function() { return true; }; - assertEquals(0 instanceof F, true); -})(); - -// Make sure if @@hasInstance throws, we catch it. -(function() { - var F = {}; - F[Symbol.hasInstance] = function() { throw new Error("always throws"); } - try { - 0 instanceof F; - } catch (e) { - assertEquals(e.message, "always throws"); - } -})(); - -// @@hasInstance works for bound functions. -(function() { - var BC = function() {}; - var bc = new BC(); - var bound = BC.bind(); - assertEquals(bound[Symbol.hasInstance](bc), true); - assertEquals(bound[Symbol.hasInstance]([]), false); -})(); - -// if OrdinaryHasInstance is passed a non-callable receiver, return false. -assertEquals(Function.prototype[Symbol.hasInstance].call(Array, []), true); -assertEquals(Function.prototype[Symbol.hasInstance].call({}, {}), false); - -// OrdinaryHasInstance passed a non-object argument returns false. -assertEquals(Function.prototype[Symbol.hasInstance].call(Array, 0), false); - -// Cannot assign to @@hasInstance with %FunctionPrototype%. -(function() { - "use strict"; - function F() {} - assertThrows(function() { F[Symbol.hasInstance] = (v) => v }, TypeError); -})(); - -// Check correct invocation of @@hasInstance handler on function instance. -(function() { - function F() {} - var counter = 0; - var proto = Object.getPrototypeOf(F); - Object.setPrototypeOf(F, null); - F[Symbol.hasInstance] = function(v) { ++counter; return true }; - Object.setPrototypeOf(F, proto); - assertTrue(1 instanceof F); - assertEquals(1, counter); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/iteration-semantics.js b/implementation-contributed/v8/mjsunit/es6/iteration-semantics.js deleted file mode 100644 index 40037be6f5b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/iteration-semantics.js +++ /dev/null @@ -1,357 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test for-of semantics. - -"use strict"; - - -// First, some helpers. - -function* values() { - for (var i = 0; i < arguments.length; i++) { - yield arguments[i]; - } -} - -function wrap_iterator(iterator) { - var iterable = {}; - iterable[Symbol.iterator] = function() { return iterator; }; - return iterable; -} - -function integers_until(max) { - function next() { - var ret = { value: this.n, done: this.n == max }; - this.n++; - return ret; - } - return wrap_iterator({ next: next, n: 0 }); -} - -function results(results) { - var i = 0; - function next() { - return results[i++]; - } - return wrap_iterator({ next: next }); -} - -function* integers_from(n) { - while (1) yield n++; -} - -// A destructive append. -function append(x, tail) { - tail[tail.length] = x; - return tail; -} - -function sum(x, tail) { - return x + tail; -} - -function fold(cons, seed, iterable) { - for (var x of iterable) { - seed = cons(x, seed); - } - return seed; -} - -function* take(iterable, n) { - if (n == 0) return; - for (let x of iterable) { - yield x; - if (--n == 0) break; - } -} - -function nth(iterable, n) { - for (let x of iterable) { - if (n-- == 0) return x; - } - throw "unreachable"; -} - -function* skip_every(iterable, n) { - var i = 0; - for (let x of iterable) { - if (++i % n == 0) continue; - yield x; - } -} - -function* iter_map(iterable, f) { - for (var x of iterable) { - yield f(x); - } -} -function nested_fold(cons, seed, iterable) { - var visited = [] - for (let x of iterable) { - for (let y of x) { - seed = cons(y, seed); - } - } - return seed; -} - -function* unreachable(iterable) { - for (let x of iterable) { - throw "not reached"; - } -} - -function one_time_getter(o, prop, val) { - function set_never() { throw "unreachable"; } - var gotten = false; - function get_once() { - if (gotten) throw "got twice"; - gotten = true; - return val; - } - Object.defineProperty(o, prop, {get: get_once, set: set_never}) - return o; -} - -function never_getter(o, prop) { - function never() { throw "unreachable"; } - Object.defineProperty(o, prop, {get: never, set: never}) - return o; -} - -function remove_next_after(iterable, n) { - var iterator = iterable[Symbol.iterator](); - function next() { - if (n-- == 0) delete this.next; - return iterator.next(); - } - return wrap_iterator({ next: next }); -} - -function poison_next_after(iterable, n) { - var iterator = iterable[Symbol.iterator](); - function next() { - return iterator.next(); - } - function next_getter() { - if (n-- < 0) - throw "poisoned"; - return next; - } - var o = {}; - Object.defineProperty(o, 'next', { get: next_getter }); - return wrap_iterator(o); -} - -// Now, the tests. - -// Non-generator iterators. -assertEquals(45, fold(sum, 0, integers_until(10))); -// Generator iterators. -assertEquals([1, 2, 3], fold(append, [], values(1, 2, 3))); -// Break. -assertEquals(45, fold(sum, 0, take(integers_from(0), 10))); -// Continue. -assertEquals(90, fold(sum, 0, take(skip_every(integers_from(0), 2), 10))); -// Return. -assertEquals(10, nth(integers_from(0), 10)); -// Nested for-of. -assertEquals([0, 0, 1, 0, 1, 2, 0, 1, 2, 3], - nested_fold(append, - [], - iter_map(integers_until(5), integers_until))); -// Result objects with sparse fields. -assertEquals([undefined, 1, 2, 3], - fold(append, [], - results([{ done: false }, - { value: 1, done: false }, - // A missing "done" is the same as undefined, which - // is false. - { value: 2 }, - // Not done. - { value: 3, done: 0 }, - // Done. - { value: 4, done: 42 }]))); -// Results that are not objects. -assertThrows(function() { - assertEquals([undefined, undefined, undefined], - fold(append, [], - results([10, "foo", /qux/, { value: 37, done: true }]))); -}, TypeError); -// Getters (shudder). -assertEquals([1, 2], - fold(append, [], - results([one_time_getter({ value: 1 }, 'done', false), - one_time_getter({ done: false }, 'value', 2), - { value: 37, done: true }, - never_getter(never_getter({}, 'done'), 'value')]))); - -// Unlike the case with for-in, null and undefined cause an error. -assertThrows('fold(sum, 0, unreachable(null))', TypeError); -assertThrows('fold(sum, 0, unreachable(undefined))', TypeError); - -// Other non-iterators do cause an error. -assertThrows('fold(sum, 0, unreachable({}))', TypeError); -assertThrows('fold(sum, 0, unreachable(false))', TypeError); -assertThrows('fold(sum, 0, unreachable(37))', TypeError); - -// "next" is looked up only once during the iteration prologue (see -// https://github.com/tc39/ecma262/pull/988) -assertEquals(45, fold(sum, 0, remove_next_after(integers_until(10), 5))); -assertEquals(45, - fold(sum, 0, remove_next_after(integers_until(10), 10))); -assertEquals(45, - fold(sum, 0, poison_next_after(integers_until(10), 10))); - -function labelled_continue(iterable) { - var n = 0; -outer: - while (true) { - n++; - for (var x of iterable) continue outer; - break; - } - return n; -} -assertEquals(11, labelled_continue(integers_until(10))); - -function labelled_break(iterable) { - var n = 0; -outer: - while (true) { - n++; - for (var x of iterable) break outer; - } - return n; -} -assertEquals(1, labelled_break(integers_until(10))); - -// Test continue/break in catch. -function catch_control(iterable, k) { - var n = 0; - for (var x of iterable) { - try { - return k(x); - } catch (e) { - if (e == "continue") continue; - else if (e == "break") break; - else throw e; - } - } while (false); - return false; -} -assertEquals(false, - catch_control(integers_until(10), - function() { throw "break" })); -assertEquals(false, - catch_control(integers_until(10), - function() { throw "continue" })); -assertEquals(5, - catch_control(integers_until(10), - function(x) { - if (x == 5) return x; - throw "continue"; - })); - -// Test continue/break in try. -function try_control(iterable, k) { - var n = 0; - for (var x of iterable) { - try { - var e = k(x); - if (e == "continue") continue; - else if (e == "break") break; - return e; - } catch (e) { - throw e; - } - } while (false); - return false; -} -assertEquals(false, - try_control(integers_until(10), - function() { return "break" })); -assertEquals(false, - try_control(integers_until(10), - function() { return "continue" })); -assertEquals(5, - try_control(integers_until(10), - function(x) { return (x == 5) ? x : "continue" })); - -// TODO(neis,cbruni): Enable once the corresponding traps work again. -// Proxy results, with getters. -// function transparent_proxy(x) { -// return new Proxy({}, { -// get: function(receiver, name) { return x[name]; } -// }); -// } -// assertEquals([1, 2], -// fold(append, [], -// results([one_time_getter({ value: 1 }, 'done', false), -// one_time_getter({ done: false }, 'value', 2), -// { value: 37, done: true }, -// never_getter(never_getter({}, 'done'), 'value')] -// .map(transparent_proxy)))); - -// Proxy iterators. -// function poison_proxy_after(iterable, n) { -// var iterator = iterable[Symbol.iterator](); -// return wrap_iterator(new Proxy({}, { -// get: function(receiver, name) { -// if (name == 'next' && n-- < 0) throw "unreachable"; -// return iterator[name]; -// }, -// // Needed for integers_until(10)'s this.n++. -// set: function(receiver, name, val) { -// return iterator[name] = val; -// } -// })); -// } -// assertEquals(45, fold(sum, 0, poison_proxy_after(integers_until(10), 10))); - - -function test_iterator_result_object_non_object(value, descr) { - var arr = []; - var ex; - var message = 'Iterator result ' + (descr || value) + ' is not an object'; - try { - fold(append, arr, - results([{value: 1}, {}, value, {value: 2}, {done: true}])); - } catch (e) { - ex = e; - } - assertInstanceof(ex, TypeError); - assertEquals(message, ex.message); - assertArrayEquals([1, undefined], arr); -} -test_iterator_result_object_non_object(null); -test_iterator_result_object_non_object(undefined); -test_iterator_result_object_non_object(42); -test_iterator_result_object_non_object('abc'); -test_iterator_result_object_non_object(false); -test_iterator_result_object_non_object(Symbol('x'), 'Symbol(x)'); diff --git a/implementation-contributed/v8/mjsunit/es6/iteration-syntax.js b/implementation-contributed/v8/mjsunit/es6/iteration-syntax.js deleted file mode 100644 index c6a7d477bc7..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/iteration-syntax.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test for-of syntax. - -"use strict"; - -function f() { for (x of y) { } } -function f() { for (var x of y) { } } -function f() { for (let x of y) { } } - -function StrictSyntaxError(s) { - try { - eval(s); - } catch (e) { - assertInstanceof(e, SyntaxError); - return; - } - throw "did not throw"; -} - -StrictSyntaxError("function f() { for (x of) { } }"); -StrictSyntaxError("function f() { for (x of y z) { } }"); -StrictSyntaxError("function f() { for (x of y;) { } }"); - -StrictSyntaxError("function f() { for (var x of) { } }"); -StrictSyntaxError("function f() { for (var x of y z) { } }"); -StrictSyntaxError("function f() { for (var x of y;) { } }"); - -StrictSyntaxError("function f() { for (let x of) { } }"); -StrictSyntaxError("function f() { for (let x of y z) { } }"); -StrictSyntaxError("function f() { for (let x of y;) { } }"); - -StrictSyntaxError("function f() { for (of y) { } }"); -StrictSyntaxError("function f() { for (of of) { } }"); -StrictSyntaxError("function f() { for (var of y) { } }"); -StrictSyntaxError("function f() { for (var of of) { } }"); -StrictSyntaxError("function f() { for (let of y) { } }"); -StrictSyntaxError("function f() { for (let of of) { } }"); - -StrictSyntaxError("function f() { for (x = 3 of y) { } }"); -StrictSyntaxError("function f() { for (var x = 3 of y) { } }"); -StrictSyntaxError("function f() { for (let x = 3 of y) { } }"); - - -// Alack, this appears to be valid. -function f() { for (of of y) { } } -function f() { for (let of of y) { } } -function f() { for (var of of y) { } } - -// This too, of course. -function f() { for (of in y) { } } -function f() { for (var of in y) { } } -function f() { for (let of in y) { } } diff --git a/implementation-contributed/v8/mjsunit/es6/iterator-close.js b/implementation-contributed/v8/mjsunit/es6/iterator-close.js deleted file mode 100644 index fd8f361e5e9..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/iterator-close.js +++ /dev/null @@ -1,1382 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function* g() { yield 42; return 88 }; - - -// Return method is "undefined". -{ - g.prototype.return = null; - - - assertEquals(undefined, (() => { - for (var x of g()) { break; } - })()); - - assertEquals(undefined, (() => { - for (let x of g()) { break; } - })()); - - assertEquals(undefined, (() => { - for (const x of g()) { break; } - })()); - - assertEquals(undefined, (() => { - for (x of g()) { break; } - })()); - - - assertThrowsEquals(() => { - for (var x of g()) { throw 42; } - }, 42); - - assertThrowsEquals(() => { - for (let x of g()) { throw 42; } - }, 42); - - assertThrowsEquals(() => { - for (const x of g()) { throw 42; } - }, 42); - - assertThrowsEquals(() => { - for (x of g()) { throw 42; } - }, 42); - - - assertEquals(42, (() => { - for (var x of g()) { return 42; } - })()); - - assertEquals(42, (() => { - for (let x of g()) { return 42; } - })()); - - assertEquals(42, (() => { - for (const x of g()) { return 42; } - })()); - - assertEquals(42, (() => { - for (x of g()) { return 42; } - })()); - - - assertEquals(42, eval('for (var x of g()) { x; }')); - - assertEquals(42, eval('for (let x of g()) { x; }')); - - assertEquals(42, eval('for (const x of g()) { x; }')); - - assertEquals(42, eval('for (x of g()) { x; }')); - - - assertEquals(42, (() => { - var [x] = g(); return x; - })()); - - assertEquals(42, (() => { - let [x] = g(); return x; - })()); - - assertEquals(42, (() => { - const [x] = g(); return x; - })()); - - assertEquals(42, (() => { - [x] = g(); return x; - })()); - - assertEquals(42, - (([x]) => x)(g()) - ); -} - - -// Return method is not callable. -{ - g.prototype.return = 666; - - - assertThrows(() => { - for (var x of g()) { break; } - }, TypeError); - - assertThrows(() => { - for (let x of g()) { break; } - }, TypeError); - - assertThrows(() => { - for (const x of g()) { break; } - }, TypeError); - - assertThrows(() => { - for (x of g()) { break; } - }, TypeError); - - - assertThrows(() => { - for (var x of g()) { throw 666; } - }, TypeError); - - assertThrows(() => { - for (let x of g()) { throw 666; } - }, TypeError); - - assertThrows(() => { - for (const x of g()) { throw 666; } - }, TypeError); - - assertThrows(() => { - for (x of g()) { throw 666; } - }, TypeError); - - - assertThrows(() => { - for (var x of g()) { return 666; } - }, TypeError); - - assertThrows(() => { - for (let x of g()) { return 666; } - }, TypeError); - - assertThrows(() => { - for (const x of g()) { return 666; } - }, TypeError); - - assertThrows(() => { - for (x of g()) { return 666; } - }, TypeError); - - - assertEquals(42, eval('for (var x of g()) { x; }')); - - assertEquals(42, eval('for (let x of g()) { x; }')); - - assertEquals(42, eval('for (const x of g()) { x; }')); - - assertEquals(42, eval('for (x of g()) { x; }')); - - - assertThrows(() => { - var [x] = g(); return x; - }, TypeError); - - assertThrows(() => { - let [x] = g(); return x; - }, TypeError); - - assertThrows(() => { - const [x] = g(); return x; - }, TypeError); - - assertThrows(() => { - [x] = g(); return x; - }, TypeError); - - assertThrows(() => { - (([x]) => x)(g()); - }, TypeError); -} - - -// Return method does not return an object. -{ - g.prototype.return = () => 666; - - - assertThrows(() => { - for (var x of g()) { break; } - }, TypeError); - - assertThrows(() => { - for (let x of g()) { break; } - }, TypeError); - - assertThrows(() => { - for (const x of g()) { break; } - }, TypeError); - - assertThrows(() => { - for (x of g()) { break; } - }, TypeError); - - - // Throw from the body of a for loop 'wins' vs throw - // originating from a bad 'return' value. - - assertThrowsEquals(() => { - for (var x of g()) { throw 666; } - }, 666); - - assertThrowsEquals(() => { - for (let x of g()) { throw 666; } - }, 666); - - assertThrowsEquals(() => { - for (const x of g()) { throw 666; } - }, 666); - - assertThrowsEquals(() => { - for (x of g()) { throw 666; } - }, 666); - - - assertThrows(() => { - for (var x of g()) { return 666; } - }, TypeError); - - assertThrows(() => { - for (let x of g()) { return 666; } - }, TypeError); - - assertThrows(() => { - for (const x of g()) { return 666; } - }, TypeError); - - assertThrows(() => { - for (x of g()) { return 666; } - }, TypeError); - - - assertEquals(42, eval('for (var x of g()) { x; }')); - - assertEquals(42, eval('for (let x of g()) { x; }')); - - assertEquals(42, eval('for (const x of g()) { x; }')); - - assertEquals(42, eval('for (x of g()) { x; }')); - - - assertThrows(() => { - var [x] = g(); return x; - }, TypeError); - - assertThrows(() => { - let [x] = g(); return x; - }, TypeError); - - assertThrows(() => { - const [x] = g(); return x; - }, TypeError); - - assertThrows(() => { - [x] = g(); return x; - }, TypeError); - - assertThrows(() => { - (([x]) => x)(g()); - }, TypeError); -} - - -// Return method returns an object. -{ - let log = []; - g.prototype.return = (...args) => { log.push(args); return {} }; - - - log = []; - for (var x of g()) { break; } - assertEquals([[]], log); - - log = []; - for (let x of g()) { break; } - assertEquals([[]], log); - - log = []; - for (const x of g()) { break; } - assertEquals([[]], log); - - log = []; - for (x of g()) { break; } - assertEquals([[]], log); - - - log = []; - assertThrowsEquals(() => { - for (var x of g()) { throw 42; } - }, 42); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g()) { throw 42; } - }, 42); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (const x of g()) { throw 42; } - }, 42); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (x of g()) { throw 42; } - }, 42); - assertEquals([[]], log); - - - log = []; - assertEquals(42, (() => { - for (var x of g()) { return 42; } - })()); - assertEquals([[]], log); - - log = []; - assertEquals(42, (() => { - for (let x of g()) { return 42; } - })()); - assertEquals([[]], log); - - log = []; - assertEquals(42, (() => { - for (const x of g()) { return 42; } - })()); - assertEquals([[]], log); - - log = []; - assertEquals(42, (() => { - for (x of g()) { return 42; } - })()); - assertEquals([[]], log); - - - log = []; - assertEquals(42, eval('for (var x of g()) { x; }')); - assertEquals([], log); - - log = []; - assertEquals(42, eval('for (let x of g()) { x; }')); - assertEquals([], log); - - log = []; - assertEquals(42, eval('for (const x of g()) { x; }')); - assertEquals([], log); - - log = []; - assertEquals(42, eval('for (x of g()) { x; }')); - assertEquals([], log); - - - // Even if doing the assignment throws, still call return - log = []; - x = { set attr(_) { throw 1234; } }; - assertThrowsEquals(() => { - for (x.attr of g()) { throw 456; } - }, 1234); - assertEquals([[]], log); - - - log = []; - assertEquals(42, (() => { - var [x] = g(); return x; - })()); - assertEquals([[]], log); - - log = []; - assertEquals(42, (() => { - let [x] = g(); return x; - })()); - assertEquals([[]], log); - - log = []; - assertEquals(42, (() => { - const [x] = g(); return x; - })()); - assertEquals([[]], log); - - log = []; - assertEquals(42, (() => { - [x] = g(); return x; - })()); - assertEquals([[]], log); - - log = [] - assertEquals(42, - (([x]) => x)(g()) - ); - assertEquals([[]], log); - - - log = []; - assertEquals(42, (() => { - var [x,] = g(); return x; - })()); - assertEquals([[]], log); - - log = []; - assertEquals(42, (() => { - let [x,] = g(); return x; - })()); - assertEquals([[]], log); - - log = []; - assertEquals(42, (() => { - const [x,] = g(); return x; - })()); - assertEquals([[]], log); - - log = []; - assertEquals(42, (() => { - [x,] = g(); return x; - })()); - assertEquals([[]], log); - - log = [] - assertEquals(42, - (([x,]) => x)(g()) - ); - assertEquals([[]], log); - - - log = []; - assertEquals(42, (() => { - var [x,,] = g(); return x; - })()); - assertEquals([], log); - - log = []; - assertEquals(42, (() => { - let [x,,] = g(); return x; - })()); - assertEquals([], log); - - log = []; - assertEquals(42, (() => { - const [x,,] = g(); return x; - })()); - assertEquals([], log); - - log = []; - assertEquals(42, (() => { - [x,,] = g(); return x; - })()); - assertEquals([], log); - - log = [] - assertEquals(42, - (([x,,]) => x)(g()) - ); - assertEquals([], log); - - - log = []; - assertEquals([42, undefined], (() => { - var [x, y] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42, undefined], (() => { - let [x, y] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42, undefined], (() => { - const [x, y] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42, undefined], (() => { - [x, y] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = [] - assertEquals([42, undefined], - (([x, y]) => [x, y])(g()) - ); - assertEquals([], log); - - - log = []; - assertEquals([42], (() => { - var [...x] = g(); return x; - })()); - assertEquals([], log); - - log = []; - assertEquals([42], (() => { - let [...x] = g(); return x; - })()); - assertEquals([], log); - - log = []; - assertEquals([42], (() => { - const [...x] = g(); return x; - })()); - assertEquals([], log); - - log = []; - assertEquals([42], (() => { - [...x] = g(); return x; - })()); - assertEquals([], log); - - log = [] - assertEquals([42], - (([...x]) => x)(g()) - ); - assertEquals([], log); - - - log = []; - assertEquals([42, []], (() => { - var [x, ...y] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42, []], (() => { - let [x, ...y] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42, []], (() => { - const [x, ...y] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42, []], (() => { - [x, ...y] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = [] - assertEquals([42, []], - (([x, ...y]) => [x, y])(g()) - ); - assertEquals([], log); - - - log = []; - assertEquals([], (() => { - var [] = g(); return []; - })()); - assertEquals([[]], log); - - log = []; - assertEquals([], (() => { - let [] = g(); return []; - })()); - assertEquals([[]], log); - - log = []; - assertEquals([], (() => { - const [] = g(); return []; - })()); - assertEquals([[]], log); - - log = []; - assertEquals([], (() => { - [] = g(); return []; - })()); - assertEquals([[]], log); - - log = [] - assertEquals([], - (([]) => [])(g()) - ); - assertEquals([[]], log); - - - log = []; - assertEquals([], (() => { - var [...[]] = g(); return []; - })()); - assertEquals([], log); - - log = []; - assertEquals([], (() => { - let [...[]] = g(); return []; - })()); - assertEquals([], log); - - log = []; - assertEquals([], (() => { - const [...[]] = g(); return []; - })()); - assertEquals([], log); - - log = []; - assertEquals([], (() => { - [...[]] = g(); return []; - })()); - assertEquals([], log); - - log = [] - assertEquals([], - (([...[]]) => [])(g()) - ); - assertEquals([], log); - - - log = []; - assertEquals([42], (() => { - var [...[x]] = g(); return [x]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42], (() => { - let [...[x]] = g(); return [x]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42], (() => { - const [...[x]] = g(); return [x]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42], (() => { - [...[x]] = g(); return [x]; - })()); - assertEquals([], log); - - log = [] - assertEquals([42], - (([...[x]]) => [x])(g()) - ); - assertEquals([], log); - - - log = []; - assertEquals([42, undefined], (() => { - var [...[x, y]] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42, undefined], (() => { - let [...[x, y]] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42, undefined], (() => { - const [...[x, y]] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = []; - assertEquals([42, undefined], (() => { - [...[x, y]] = g(); return [x, y]; - })()); - assertEquals([], log); - - log = [] - assertEquals([42, undefined], - (([...[x, y]]) => [x, y])(g()) - ); - assertEquals([], log); - - - log = [] - assertThrowsEquals(() => { - let x = { set foo(_) { throw 666; } }; - [x.foo] = g(); - }, 666); - assertEquals([[]], log); - - - log = [] - assertThrows(() => { - var [[]] = g(); - }, TypeError); - assertEquals([[]], log); - - log = [] - assertThrows(() => { - let [[]] = g(); - }, TypeError); - assertEquals([[]], log); - - log = [] - assertThrows(() => { - const [[]] = g(); - }, TypeError); - assertEquals([[]], log); - - log = [] - assertThrows(() => { - [[]] = g(); - }, TypeError); - assertEquals([[]], log); - - log = [] - assertThrows(() => { - (([[]]) => 0)(g()); - }, TypeError); - assertEquals([[]], log); - - - log = [] - assertThrows(() => { - var [...[[]]] = g(); - }, TypeError); - assertEquals([], log); - - log = [] - assertThrows(() => { - let [...[[]]] = g(); - }, TypeError); - assertEquals([], log); - - log = [] - assertThrows(() => { - const [...[[]]] = g(); - }, TypeError); - assertEquals([], log); - - log = [] - assertThrows(() => { - [...[[]]] = g(); - }, TypeError); - assertEquals([], log); - - log = [] - assertThrows(() => { - (([...[[]]]) => 0)(g()); - }, TypeError); - assertEquals([], log); - - - { - let backup = Array.prototype[Symbol.iterator]; - Array.prototype[Symbol.iterator] = () => g(); - - - log = []; - assertDoesNotThrow(() => { - var [x, ...[y]] = [1, 2, 3] - }); - assertEquals(log, [[]]); - - log = []; - assertDoesNotThrow(() => { - let [x, ...[y]] = [1, 2, 3]; - }); - assertEquals(log, [[]]); - - log = []; - assertDoesNotThrow(() => { - const [x, ...[y]] = [1, 2, 3]; - }); - assertEquals(log, [[]]); - - log = []; - assertDoesNotThrow(() => { - (([x, ...[y]]) => {})([1, 2, 3]); - }); - assertEquals(log, [[]]); - - - log = []; - assertThrows(() => { - var [x, ...[[]]] = [1, 2, 3]; - }, TypeError); - assertEquals(log, [[]]); - - log = []; - assertThrows(() => { - let [x, ...[[]]] = [1, 2, 3]; - }, TypeError); - assertEquals(log, [[]]); - - log = []; - assertThrows(() => { - const [x, ...[[]]] = [1, 2, 3]; - }, TypeError); - assertEquals(log, [[]]); - - log = []; - assertThrows(() => { - (([x, ...[[]]]) => {})([1, 2, 3]); - }, TypeError); - assertEquals(log, [[]]); - - - log = []; - assertDoesNotThrow(() => { - var [x, ...[...y]] = [1, 2, 3]; - }); - assertEquals(log, []); - - log = []; - assertDoesNotThrow(() => { - let [x, ...[...y]] = [1, 2, 3]; - }); - assertEquals(log, []); - - log = []; - assertDoesNotThrow(() => { - const [x, ...[...y]] = [1, 2, 3]; - }); - assertEquals(log, []); - - log = []; - assertDoesNotThrow(() => { - (([x, ...[...y]]) => {})([1, 2, 3]); - }); - assertEquals(log, []); - - - Array.prototype[Symbol.iterator] = backup; - } -} - - -// Return method throws. -{ - let log = []; - g.prototype.return = (...args) => { log.push(args); throw 23 }; - - - log = []; - assertThrowsEquals(() => { - for (var x of g()) { break; } - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g()) { break; } - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (const x of g()) { break; } - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (x of g()) { break; } - }, 23); - assertEquals([[]], log); - - - log = []; - assertThrowsEquals(() => { - for (var x of g()) { throw 42; } - }, 42); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g()) { throw 42; } - }, 42); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (const x of g()) { throw 42; } - }, 42); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (x of g()) { throw 42; } - }, 42); - assertEquals([[]], log); - - - log = []; - assertThrowsEquals(() => { - for (var x of g()) { return 42; } - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g()) { return 42; } - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (const x of g()) { return 42; } - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - for (x of g()) { return 42; } - }, 23); - assertEquals([[]], log); - - - log = []; - assertEquals(42, eval('for (var x of g()) { x; }')); - assertEquals([], log); - - log = []; - assertEquals(42, eval('for (let x of g()) { x; }')); - assertEquals([], log); - - log = []; - assertEquals(42, eval('for (const x of g()) { x; }')); - assertEquals([], log); - - log = []; - assertEquals(42, eval('for (x of g()) { x; }')); - assertEquals([], log); - - - log = []; - assertThrowsEquals(() => { - var [x] = g(); return x; - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - let [x] = g(); return x; - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - const [x] = g(); return x; - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - [x] = g(); return x; - }, 23); - assertEquals([[]], log); - - log = []; - assertThrowsEquals(() => { - (([x]) => x)(g()) - }, 23); - assertEquals([[]], log); -} - - -// Next method throws. -{ - let closed = false; - g.prototype.next = () => { throw 666; }; - g.prototype.return = () => { closed = true; }; - - - assertThrowsEquals(() => { - for (var x of g()) {} - }, 666); - - assertThrowsEquals(() => { - for (let x of g()) {} - }, 666); - - assertThrowsEquals(() => { - for (const x of g()) {} - }, 666); - - assertThrowsEquals(() => { - for (x of g()) {} - }, 666); - - assertThrowsEquals(() => { - var [x] = g(); - }, 666); - - assertThrowsEquals(() => { - let [x] = g(); - }, 666); - - assertThrowsEquals(() => { - const [x] = g(); - }, 666); - - assertThrowsEquals(() => { - [x] = g(); - }, 666); - - assertThrowsEquals(() => { - (([x]) => x)(g()); - }, 666); - - assertThrowsEquals(() => { - var [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - let [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - const [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - (([...x]) => x)(g()); - }, 666); - - - assertFalse(closed); -} - - -// Value throws. -{ - let closed = false; - g.prototype.next = () => ({get value() {throw 666}}); - g.prototype.return = () => { closed = true; }; - - - assertThrowsEquals(() => { - for (var x of g()) {} - }, 666); - - assertThrowsEquals(() => { - for (let x of g()) {} - }, 666); - - assertThrowsEquals(() => { - for (const x of g()) {} - }, 666); - - assertThrowsEquals(() => { - for (x of g()) {} - }, 666); - - assertThrowsEquals(() => { - var [x] = g(); - }, 666); - - assertThrowsEquals(() => { - let [x] = g(); - }, 666); - - assertThrowsEquals(() => { - const [x] = g(); - }, 666); - - assertThrowsEquals(() => { - [x] = g(); - }, 666); - - assertThrowsEquals(() => { - (([x]) => x)(g()); - }, 666); - - assertThrowsEquals(() => { - var [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - let [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - const [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - (([...x]) => x)(g()); - }, 666); - - - assertFalse(closed); -} - - -// Done throws. -{ - let closed = false; - g.prototype.next = () => ({get done() {throw 666}}); - g.prototype.return = () => { closed = true; }; - - - assertThrowsEquals(() => { - for (var x of g()) {} - }, 666); - - assertThrowsEquals(() => { - for (let x of g()) {} - }, 666); - - assertThrowsEquals(() => { - for (const x of g()) {} - }, 666); - - assertThrowsEquals(() => { - for (x of g()) {} - }, 666); - - assertThrowsEquals(() => { - var [x] = g(); - }, 666); - - assertThrowsEquals(() => { - let [x] = g(); - }, 666); - - assertThrowsEquals(() => { - const [x] = g(); - }, 666); - - assertThrowsEquals(() => { - [x] = g(); - }, 666); - - assertThrowsEquals(() => { - (([x]) => x)(g()); - }, 666); - - assertThrowsEquals(() => { - var [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - let [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - const [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - [...x] = g(); - }, 666); - - assertThrowsEquals(() => { - (([...x]) => x)(g()); - }, 666); - - - assertFalse(closed); -} - - -// Nested loops. -{ - function* g1() { yield 1; yield 2; throw 3; } - function* g2() { yield -1; yield -2; throw -3; } - - assertDoesNotThrow(() => { - for (let x of g1()) { - for (let y of g2()) { - if (y == -2) break; - } - if (x == 2) break; - } - }, -3); - - assertThrowsEquals(() => { - for (let x of g1()) { - for (let y of g2()) { - } - } - }, -3); - - assertThrowsEquals(() => { - for (let x of g1()) { - for (let y of g2()) { - if (y == -2) break; - } - } - }, 3); - - assertDoesNotThrow(() => { - l: for (let x of g1()) { - for (let y of g2()) { - if (y == -2) break l; - } - } - }); - - assertThrowsEquals(() => { - for (let x of g1()) { - for (let y of g2()) { - throw 4; - } - } - }, 4); - - assertThrowsEquals(() => { - for (let x of g1()) { - for (let y of g2()) { - if (y == -2) throw 4; - } - } - }, 4); - - let log = []; - g1.prototype.return = () => { log.push(1); throw 5 }; - g2.prototype.return = () => { log.push(2); throw -5 }; - - log = []; - assertThrowsEquals(() => { - for (let x of g1()) { - for (let y of g2()) { - if (y == -2) break; - } - if (x == 2) break; - } - }, -5); - assertEquals([2, 1], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g1()) { - for (let y of g2()) { - } - } - }, -3); - assertEquals([1], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g1()) { - for (let y of g2()) { - if (y == -2) break; - } - } - }, -5); - assertEquals([2, 1], log); - - log = []; - assertThrowsEquals(() => { - l: for (let x of g1()) { - for (let y of g2()) { - if (y == -2) break l; - } - } - }, -5); - assertEquals([2, 1], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g1()) { - for (let y of g2()) { - throw 4; - } - } - }, 4); - assertEquals([2, 1], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g1()) { - for (let y of g2()) { - if (y == -2) throw 4; - } - } - }, 4); - assertEquals([2, 1], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g1()) { - try { - for (let y of g2()) { - } - } catch (_) {} - } - }, 3); - assertEquals([], log); - - log = []; - assertThrowsEquals(() => { - for (let x of g1()) { - try { - for (let y of g2()) { - } - } catch (_) {} - if (x == 2) break; - } - }, 5); - assertEquals([1], log); -} - - -// yield*, argument's return method is "undefined". -function TestYieldStarWithoutReturn(get_iterable) { - assertTrue(get_iterable().return == undefined); - - function* g() { yield* get_iterable() } - - { - let gen = g(); - assertEquals({value: 1, done: false}, gen.next()); - assertEquals({value: undefined, done: true}, gen.return()); - } - - assertEquals(42, (() => { - for (let x of g()) break; - return 42; - })()); - - assertEquals(42, (() => { - for (let x of g()) return 42; - })()); - - assertThrowsEquals(() => { - for (let x of g()) throw 42; - }, 42); -} -{ - let get_iterable1 = () => [1, 2]; - let get_iterable2 = function*() { yield 1; yield 2 }; - get_iterable2.prototype.return = null; - TestYieldStarWithoutReturn(get_iterable1); - TestYieldStarWithoutReturn(get_iterable2); -} - - -// yield*, argument's return method is defined. -{ - let get_iterable = function*() { yield 1; yield 2 }; - const obj = {}; - get_iterable.prototype.return = (...args) => obj; - - function* g() { yield* get_iterable() } - - { - let gen = g(); - assertEquals({value: 1, done: false}, gen.next()); - assertSame(obj, gen.return()); - assertSame(obj, gen.return()); - assertSame(obj, gen.return()); - assertEquals({value: 2, done: false}, gen.next()); - assertSame(obj, gen.return()); - assertSame(obj, gen.return()); - assertSame(obj, gen.return()); - assertEquals({value: undefined, done: true}, gen.next()); - assertEquals({value: undefined, done: true}, gen.return()); - assertEquals({value: undefined, done: true}, gen.return()); - } - - assertEquals(42, (() => { - for (let x of g()) break; - return 42; - })()); - - assertEquals(42, (() => { - for (let x of g()) return 42; - })()); - - assertThrowsEquals(() => { - for (let x of g()) throw 42; - }, 42); -} diff --git a/implementation-contributed/v8/mjsunit/es6/iterator-prototype.js b/implementation-contributed/v8/mjsunit/es6/iterator-prototype.js deleted file mode 100644 index 0b266e9897a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/iterator-prototype.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var arrayIteratorPrototype = [].entries().__proto__; -var iteratorPrototype = arrayIteratorPrototype.__proto__; - -assertSame(Object.prototype, Object.getPrototypeOf(iteratorPrototype)); -assertTrue(Object.isExtensible(iteratorPrototype)); -assertSame(0, Object.getOwnPropertyNames(iteratorPrototype).length); -assertSame(1, Object.getOwnPropertySymbols(iteratorPrototype).length); -assertSame(Symbol.iterator, - Object.getOwnPropertySymbols(iteratorPrototype)[0]); - -var descr = Object.getOwnPropertyDescriptor(iteratorPrototype, Symbol.iterator); -assertTrue(descr.configurable); -assertFalse(descr.enumerable); -assertTrue(descr.writable); - -var iteratorFunction = descr.value; -assertSame('function', typeof iteratorFunction); -assertSame(0, iteratorFunction.length); -assertSame('[Symbol.iterator]', iteratorFunction.name); - -var obj = {}; -assertSame(obj, iteratorFunction.call(obj)); -assertSame(iteratorPrototype, iteratorPrototype[Symbol.iterator]()); - -var mapIteratorPrototype = new Map().entries().__proto__; -var setIteratorPrototype = new Set().values().__proto__; -var stringIteratorPrototype = 'abc'[Symbol.iterator]().__proto__; -assertSame(iteratorPrototype, mapIteratorPrototype.__proto__); -assertSame(iteratorPrototype, setIteratorPrototype.__proto__); -assertSame(iteratorPrototype, stringIteratorPrototype.__proto__); - -var typedArrays = [ - Float32Array, - Float64Array, - Int16Array, - Int32Array, - Int8Array, - Uint16Array, - Uint32Array, - Uint8Array, - Uint8ClampedArray, -]; - -for (var constructor of typedArrays) { - var array = new constructor(); - var iterator = array[Symbol.iterator](); - assertSame(iteratorPrototype, iterator.__proto__.__proto__); -} - -function* gen() {} -assertSame(iteratorPrototype, gen.prototype.__proto__.__proto__); -var g = gen(); -assertSame(gen.prototype, g.__proto__); -assertSame(iteratorPrototype, g.__proto__.__proto__.__proto__); diff --git a/implementation-contributed/v8/mjsunit/es6/json.js b/implementation-contributed/v8/mjsunit/es6/json.js deleted file mode 100644 index c049a25ddd0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/json.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function testJSONToString() { - assertEquals('[object JSON]', "" + JSON); - assertEquals("JSON", JSON[Symbol.toStringTag]); - var desc = Object.getOwnPropertyDescriptor(JSON, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.writable); - assertEquals("JSON", desc.value); - delete JSON[Symbol.toStringTag]; - assertEquals('[object Object]', "" + JSON); -} -testJSONToString(); diff --git a/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect.js b/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect.js deleted file mode 100644 index 813fffccf7a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function TestMapConstructorEntrySideEffect(ctor) { - const k1 = {}; - const k2 = {}; - const k3 = {}; - let callCount = 0; - const input = [ - Object.defineProperty([, 1], "0", { - get() { - input.length = 2; - return k1; - } - }), - [k2, 2], - Object.defineProperty([, 3], "0", { - get() { - callCount++; - return k3; - } - }) - ]; - const col = new ctor(input); - - assertEquals(0, callCount); - if ('size' in col) assertEquals(2, col.size); - assertEquals(col.get(k1), 1); - assertEquals(col.get(k2), 2); - assertFalse(col.has(k3)); -} - -TestMapConstructorEntrySideEffect(Map); -TestMapConstructorEntrySideEffect(Map); -TestMapConstructorEntrySideEffect(Map); -%OptimizeFunctionOnNextCall(TestMapConstructorEntrySideEffect); -TestMapConstructorEntrySideEffect(Map); -assertOptimized(TestMapConstructorEntrySideEffect); - -TestMapConstructorEntrySideEffect(WeakMap); -TestMapConstructorEntrySideEffect(WeakMap); -TestMapConstructorEntrySideEffect(WeakMap); -%OptimizeFunctionOnNextCall(TestMapConstructorEntrySideEffect); -TestMapConstructorEntrySideEffect(WeakMap); -assertOptimized(TestMapConstructorEntrySideEffect); diff --git a/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect2.js b/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect2.js deleted file mode 100644 index 0c167c1bfab..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect2.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function TestMapConstructorEntrySideEffect(ctor) { - const originalPrototypeSet = ctor.prototype.set; - const k1 = {}; - const k2 = {}; - let callCount = 0; - const input = [ - Object.defineProperty([, 1], "0", { - get() { - // Verify continuation retains original set function - ctor.prototype.set = () => { - callCount++; - }; - return k1; - } - }), - [k2, 2] - ]; - const col = new ctor(input); - - assertEquals(0, callCount); - if ('size' in col) assertEquals(2, col.size); - assertTrue(col.has(k1)); - assertTrue(col.has(k2)); - - const col2 = new ctor(input); - - assertEquals(2, callCount); - if ('size' in col) assertEquals(0, col2.size); - assertFalse(col2.has(k1)); - assertFalse(col2.has(k2)); - - ctor.prototype.set = originalPrototypeSet; -} - -TestMapConstructorEntrySideEffect(Map); -TestMapConstructorEntrySideEffect(Map); -TestMapConstructorEntrySideEffect(Map); -%OptimizeFunctionOnNextCall(TestMapConstructorEntrySideEffect); -TestMapConstructorEntrySideEffect(Map); -assertOptimized(TestMapConstructorEntrySideEffect); - -TestMapConstructorEntrySideEffect(WeakMap); -TestMapConstructorEntrySideEffect(WeakMap); -TestMapConstructorEntrySideEffect(WeakMap); -%OptimizeFunctionOnNextCall(TestMapConstructorEntrySideEffect); -TestMapConstructorEntrySideEffect(WeakMap); -assertOptimized(TestMapConstructorEntrySideEffect); diff --git a/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect3.js b/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect3.js deleted file mode 100644 index 7dd7aa78525..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect3.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function TestMapConstructorEntrySideEffect(ctor) { - const k1 = {}; - const k2 = {}; - const k3 = {}; - const input = [ - Object.defineProperty([, 1], "0", { - get() { - // Verify continuation accesses properly accesses subsequent entries - Object.defineProperty(input, "1", { - get: () => [k3, 3] - }); - return k1; - } - }), - [k2, 2] - ]; - const col = new ctor(input); - - if ('size' in col) assertEquals(2, col.size); - assertTrue(col.has(k1)); - assertFalse(col.has(k2)); - assertTrue(col.has(k3)); -} - -TestMapConstructorEntrySideEffect(Map); -TestMapConstructorEntrySideEffect(Map); -TestMapConstructorEntrySideEffect(Map); -%OptimizeFunctionOnNextCall(TestMapConstructorEntrySideEffect); -TestMapConstructorEntrySideEffect(Map); -assertOptimized(TestMapConstructorEntrySideEffect); - -TestMapConstructorEntrySideEffect(WeakMap); -TestMapConstructorEntrySideEffect(WeakMap); -TestMapConstructorEntrySideEffect(WeakMap); -%OptimizeFunctionOnNextCall(TestMapConstructorEntrySideEffect); -TestMapConstructorEntrySideEffect(WeakMap); -assertOptimized(TestMapConstructorEntrySideEffect); diff --git a/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect4.js b/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect4.js deleted file mode 100644 index ebf8c790ed6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-constructor-entry-side-effect4.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function TestMapConstructorEntrySideEffect(ctor) { - const k1 = {}; - const k2 = {}; - const k3 = {}; - let firstEntryCallCount = 0; - let lastEntryCallCount = 0; - const input = [ - Object.defineProperty([, 1], "0", { - get() { - // Verify handling of a non-Smi array length - input.length = 2 ** 32 - 2; - firstEntryCallCount++; - return k1; - } - }), - [k2, 2], - Object.defineProperty([k3, ], "1", { - get() { - input.length = 1; - lastEntryCallCount++; - return 3; - } - }) - ]; - const col = new ctor(input); - - assertEquals(1, firstEntryCallCount,); - assertEquals(1, lastEntryCallCount); - if ('size' in col) assertEquals(3, col.size); - assertEquals(1, col.get(k1)); - assertEquals(2, col.get(k2)); - assertEquals(3, col.get(k3)); -} - -TestMapConstructorEntrySideEffect(Map); -TestMapConstructorEntrySideEffect(Map); -TestMapConstructorEntrySideEffect(Map); -%OptimizeFunctionOnNextCall(TestMapConstructorEntrySideEffect); -TestMapConstructorEntrySideEffect(Map); -assertOptimized(TestMapConstructorEntrySideEffect); - -TestMapConstructorEntrySideEffect(WeakMap); -TestMapConstructorEntrySideEffect(WeakMap); -TestMapConstructorEntrySideEffect(WeakMap); -%OptimizeFunctionOnNextCall(TestMapConstructorEntrySideEffect); -TestMapConstructorEntrySideEffect(WeakMap); -assertOptimized(TestMapConstructorEntrySideEffect); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-1.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-1.js deleted file mode 100644 index 50d37726a91..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-1.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var map = new Map([[1,2], [2,3], [3,4]]); - -assertEquals([[1,2], [2,3], [3,4]], [...map]); -assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); -assertEquals([1,2,3], [...map.keys()]); -assertEquals([2,3,4], [...map.values()]); -assertTrue(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); - -map[Symbol.iterator] = () => ({next: () => ({done: true})}); - -assertTrue(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); -assertEquals([], [...map]); -assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); -assertEquals([1,2,3], [...map.keys()]); -assertEquals([2,3,4], [...map.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-10.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-10.js deleted file mode 100644 index d8d20ee9ca5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-10.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -// This tests the interaction between the MapIterator protector and SetIterator -// protector. - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); - -var set = new Set([1,2,3]); -assertTrue(%SetIteratorProtector()); - -// This changes %IteratorPrototype%. No more tests should be run after this in -// the same instance. -var iterator = map.keys(); -// iterator object --> %MapIteratorPrototype% --> %IteratorPrototype% -iterator.__proto__.__proto__[Symbol.iterator] = - () => ({next: () => ({done: true})}); - -assertFalse(%MapIteratorProtector()); -assertEquals([[1,2], [2,3], [3,4]], [...map]); -assertEquals([], [...map.entries()]); -assertEquals([], [...map.keys()]); -assertEquals([], [...map.values()]); -assertEquals([], [...iterator]); - -assertFalse(%SetIteratorProtector()); -assertEquals([1,2,3], [...set]); -assertEquals([], [...set.entries()]); -assertEquals([], [...set.keys()]); -assertEquals([], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-11.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-11.js deleted file mode 100644 index 02eada9cc1a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-11.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var map = new Map([[1,2], [2,3], [3,4]]); - -var iterator = map.keys(); -assertEquals([1,2,3], [...map.keys()]); -assertEquals([1,2,3], [...iterator]); -assertEquals([], [...iterator]); - -iterator = map.values(); -assertEquals([2,3,4], [...iterator]); -assertEquals([], [...iterator]); - -iterator = map.keys(); -iterator.next(); -assertEquals([2,3], [...iterator]); -assertEquals([], [...iterator]); - -iterator = map.values(); -var iterator2 = map.values(); - -map.delete(1); -assertEquals([3,4], [...iterator]); -assertEquals([], [...iterator]); - -map.set(1,5); -assertEquals([3,4,5], [...iterator2]); -assertEquals([], [...iterator2]); - -iterator = map.keys(); -map.set(4,6); -assertEquals([2,3,1,4], [...iterator]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-2.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-2.js deleted file mode 100644 index 7adf058fb44..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-2.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); - -// This changes %MapPrototype%. No more tests should be run after this in the -// same instance. -map.__proto__[Symbol.iterator] = () => ({next: () => ({done: true})}); - -assertTrue(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); -assertEquals([], [...map]); -assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); -assertEquals([1,2,3], [...map.keys()]); -assertEquals([2,3,4], [...map.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-3.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-3.js deleted file mode 100644 index ca0dc9cac20..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-3.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); - -// This changes %MapIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = map[Symbol.iterator](); -iterator.__proto__.next = () => ({done: true}); - -assertFalse(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); -assertEquals([], [...map]); -assertEquals([], [...map.entries()]); -assertEquals([], [...map.keys()]); -assertEquals([], [...map.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-4.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-4.js deleted file mode 100644 index a43282a69c1..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-4.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); - -// This changes %MapIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = map.keys(); -iterator.__proto__.next = () => ({done: true}); - -assertFalse(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); -assertEquals([], [...map]); -assertEquals([], [...map.entries()]); -assertEquals([], [...map.keys()]); -assertEquals([], [...map.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-5.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-5.js deleted file mode 100644 index 0af32b58ba8..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-5.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); - -// This changes %MapIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = map.values(); -iterator.__proto__.next = () => ({done: true}); - -assertFalse(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); -assertEquals([], [...map]); -assertEquals([], [...map.entries()]); -assertEquals([], [...map.keys()]); -assertEquals([], [...map.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-6.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-6.js deleted file mode 100644 index 6611e7aca09..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-6.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); - -var iterator = map.values(); -iterator.next = () => ({done: true}); - -assertFalse(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); -assertEquals([[1,2], [2,3], [3,4]], [...map]); -assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); -assertEquals([1,2,3], [...map.keys()]); -assertEquals([2,3,4], [...map.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-7.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-7.js deleted file mode 100644 index b5a2345bd8b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-7.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); - -// This changes %MapIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = map.entries(); -iterator.__proto__.next = () => ({done: true}); - -assertFalse(%MapIteratorProtector()); -assertTrue(%SetIteratorProtector()); -assertEquals([], [...map]); -assertEquals([], [...map.entries()]); -assertEquals([], [...map.keys()]); -assertEquals([], [...map.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-8.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-8.js deleted file mode 100644 index 01dacfb72e5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-8.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -// This tests the interaction between the MapIterator protector and SetIterator -// protector. - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); - -var set = new Set([1,2,3]); -assertTrue(%SetIteratorProtector()); - -// This changes %MapIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = map.keys(); -iterator.__proto__[Symbol.iterator] = () => ({next: () => ({done: true})}); - -assertFalse(%MapIteratorProtector()); -assertEquals([[1,2], [2,3], [3,4]], [...map]); -assertEquals([], [...map.entries()]); -assertEquals([], [...map.keys()]); -assertEquals([], [...map.values()]); -assertEquals([], [...iterator]); - -assertFalse(%SetIteratorProtector()); -assertEquals([1,2,3], [...set]); -assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); -assertEquals([1,2,3], [...set.keys()]); -assertEquals([1,2,3], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-9.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-9.js deleted file mode 100644 index 2db159d80ec..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-iterator-9.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -// This tests the interaction between the MapIterator protector and SetIterator -// protector. - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); - -var set = new Set([1,2,3]); -assertTrue(%SetIteratorProtector()); - -var iterator = map.keys(); -iterator[Symbol.iterator] = () => ({next: () => ({done: true})}); - -assertFalse(%MapIteratorProtector()); -assertEquals([[1,2], [2,3], [3,4]], [...map]); -assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); -assertEquals([1,2,3], [...map.keys()]); -assertEquals([2,3,4], [...map.values()]); -assertEquals([], [...iterator]); - -assertFalse(%SetIteratorProtector()); -assertEquals([1,2,3], [...set]); -assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); -assertEquals([1,2,3], [...set.keys()]); -assertEquals([1,2,3], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-minus-zero.js b/implementation-contributed/v8/mjsunit/es6/map-minus-zero.js deleted file mode 100644 index f9f397ec5c4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/map-minus-zero.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -var map = new Map(); - -var objectKey = {}; -var stringKey = 'keykeykey'; -var numberKey = 42.24; -var booleanKey = true; -var undefinedKey = undefined; -var nullKey = null; -var nanKey = NaN; -var zeroKey = 0; -var minusZeroKey = -0; - -assertEquals(map.size, 0); - -map.set(objectKey, 'aaa'); -map.set(stringKey, 'bbb'); -map.set(numberKey, 'ccc'); -map.set(booleanKey, 'ddd'); -map.set(undefinedKey, 'eee'); -map.set(nullKey, 'fff'); -map.set(nanKey, 'ggg'); -map.set(zeroKey, 'hhh'); - -assertEquals(8, map.size); - -assertEquals('aaa', map.get(objectKey)); -assertEquals('bbb', map.get(stringKey)); -assertEquals('ccc', map.get(numberKey)); -assertEquals('ddd', map.get(booleanKey)); -assertEquals('eee', map.get(undefinedKey)); -assertEquals('fff', map.get(nullKey)); -assertEquals('ggg', map.get(nanKey)); -assertEquals('hhh', map.get(zeroKey)); - -assertEquals(undefined, map.get({})); -assertEquals('bbb', map.get('keykeykey')); -assertEquals('ccc', map.get(42.24)); -assertEquals('ddd', map.get(true)); -assertEquals('eee', map.get(undefined)); -assertEquals('fff', map.get(null)); -assertEquals('ggg', map.get(NaN)); -assertEquals('hhh', map.get(0)); -assertEquals('hhh', map.get(-0)); -assertEquals('hhh', map.get(1 / Infinity)); -assertEquals('hhh', map.get(-1 / Infinity)); diff --git a/implementation-contributed/v8/mjsunit/es6/math-cbrt.js b/implementation-contributed/v8/mjsunit/es6/math-cbrt.js deleted file mode 100644 index 713c020e42e..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-cbrt.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertTrue(isNaN(Math.cbrt(NaN))); -assertTrue(isNaN(Math.cbrt(function() {}))); -assertTrue(isNaN(Math.cbrt({ toString: function() { return NaN; } }))); -assertTrue(isNaN(Math.cbrt({ valueOf: function() { return "abc"; } }))); -assertEquals("Infinity", String(1/Math.cbrt(0))); -assertEquals("-Infinity", String(1/Math.cbrt(-0))); -assertEquals("Infinity", String(Math.cbrt(Infinity))); -assertEquals("-Infinity", String(Math.cbrt(-Infinity))); - -for (var i = 1E-100; i < 1E100; i *= Math.PI) { - assertEqualsDelta(i, Math.cbrt(i*i*i), i * 1E-15); -} - -for (var i = -1E-100; i > -1E100; i *= Math.E) { - assertEqualsDelta(i, Math.cbrt(i*i*i), -i * 1E-15); -} - -// Let's be exact at least for small integers. -for (var i = 2; i < 10000; i++) { - assertEquals(i, Math.cbrt(i*i*i)); -} diff --git a/implementation-contributed/v8/mjsunit/es6/math-clz32.js b/implementation-contributed/v8/mjsunit/es6/math-clz32.js deleted file mode 100644 index 3cbd4c3fccd..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-clz32.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -[NaN, Infinity, -Infinity, 0, -0, "abc", "Infinity", "-Infinity", {}].forEach( - function(x) { - assertEquals(32, Math.clz32(x)); - } -); - -function testclz(x) { - for (var i = 0; i < 33; i++) { - if (x & 0x80000000) return i; - x <<= 1; - } - return 32; -} - - -function f(e) { - var max = Math.pow(2, e); - for (var x = 0; x < max; x = x * 1.01 + 1) { - assertEquals(testclz(x), Math.clz32(x)); - assertEquals(testclz(-x), Math.clz32(-x)); - assertEquals(testclz(x), Math.clz32({ valueOf: function() { return x; } })); - assertEquals(testclz(-x), - Math.clz32({ toString: function() { return -x; } })); - } -} - -f(5); -f(5); -%OptimizeFunctionOnNextCall(f); -f(40); diff --git a/implementation-contributed/v8/mjsunit/es6/math-expm1.js b/implementation-contributed/v8/mjsunit/es6/math-expm1.js deleted file mode 100644 index 7cbb1b485f2..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-expm1.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-fast-math - -assertTrue(isNaN(Math.expm1(NaN))); -assertTrue(isNaN(Math.expm1(function() {}))); -assertTrue(isNaN(Math.expm1({ toString: function() { return NaN; } }))); -assertTrue(isNaN(Math.expm1({ valueOf: function() { return "abc"; } }))); -assertEquals(Infinity, 1/Math.expm1(0)); -assertEquals(-Infinity, 1/Math.expm1(-0)); -assertEquals(Infinity, Math.expm1(Infinity)); -assertEquals(-1, Math.expm1(-Infinity)); - - -// Sanity check: -// Math.expm1(x) stays reasonably close to Math.exp(x) - 1 for large values. -for (var x = 1; x < 700; x += 0.25) { - var expected = Math.exp(x) - 1; - assertEqualsDelta(expected, Math.expm1(x), expected * 1E-15); - expected = Math.exp(-x) - 1; - assertEqualsDelta(expected, Math.expm1(-x), -expected * 1E-15); -} - -// Approximation for values close to 0: -// Use six terms of Taylor expansion at 0 for exp(x) as test expectation: -// exp(x) - 1 == exp(0) + exp(0) * x + x * x / 2 + ... - 1 -// == x + x * x / 2 + x * x * x / 6 + ... -function expm1(x) { - return x * (1 + x * (1/2 + x * ( - 1/6 + x * (1/24 + x * ( - 1/120 + x * (1/720 + x * ( - 1/5040 + x * (1/40320 + x*( - 1/362880 + x * (1/3628800)))))))))); -} - -// Sanity check: -// Math.expm1(x) stays reasonabliy close to the Taylor series for small values. -for (var x = 1E-1; x > 1E-300; x *= 0.8) { - var expected = expm1(x); - assertEqualsDelta(expected, Math.expm1(x), expected * 1E-15); -} - - -// Tests related to the fdlibm implementation. -// Test overflow. -assertEquals(Infinity, Math.expm1(709.8)); -// Test largest double value. -assertEquals(Infinity, Math.exp(1.7976931348623157e308)); -// Cover various code paths. -assertEquals(-1, Math.expm1(-56 * Math.LN2)); -assertEquals(-1, Math.expm1(-50)); -// Test most negative double value. -assertEquals(-1, Math.expm1(-1.7976931348623157e308)); -// Test argument reduction. -// Cases for 0.5*log(2) < |x| < 1.5*log(2). -assertEquals(Math.E - 1, Math.expm1(1)); -assertEquals(1/Math.E - 1, Math.expm1(-1)); -// Cases for 1.5*log(2) < |x|. -assertEquals(6.38905609893065, Math.expm1(2)); -assertEquals(-0.8646647167633873, Math.expm1(-2)); -// Cases where Math.expm1(x) = x. -assertEquals(0, Math.expm1(0)); -assertEquals(Math.pow(2,-55), Math.expm1(Math.pow(2,-55))); -// Tests for the case where argument reduction has x in the primary range. -// Test branch for k = 0. -assertEquals(0.18920711500272105, Math.expm1(0.25 * Math.LN2)); -// Test branch for k = -1. -assertEquals(-0.5, Math.expm1(-Math.LN2)); -// Test branch for k = 1. -assertEquals(1, Math.expm1(Math.LN2)); -// Test branch for k <= -2 || k > 56. k = -3. -assertEquals(1.4411518807585582e17, Math.expm1(57 * Math.LN2)); -// Test last branch for k < 20, k = 19. -assertEquals(524286.99999999994, Math.expm1(19 * Math.LN2)); -// Test the else branch, k = 20. -assertEquals(1048575, Math.expm1(20 * Math.LN2)); diff --git a/implementation-contributed/v8/mjsunit/es6/math-fround.js b/implementation-contributed/v8/mjsunit/es6/math-fround.js deleted file mode 100644 index c53396a38a1..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-fround.js +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Monkey-patch Float32Array. -Float32Array = function(x) { this[0] = 0; }; - -assertTrue(isNaN(Math.fround(NaN))); -assertTrue(isNaN(Math.fround(function() {}))); -assertTrue(isNaN(Math.fround({ toString: function() { return NaN; } }))); -assertTrue(isNaN(Math.fround({ valueOf: function() { return "abc"; } }))); -assertTrue(isNaN(Math.fround(NaN))); -assertTrue(isNaN(Math.fround(function() {}))); -assertTrue(isNaN(Math.fround({ toString: function() { return NaN; } }))); -assertTrue(isNaN(Math.fround({ valueOf: function() { return "abc"; } }))); - -function unopt(x) { return Math.fround(x); } -function opt(y) { return Math.fround(y); } - -opt(0.1); -opt(0.1); -unopt(0.1); -%NeverOptimizeFunction(unopt); -%OptimizeFunctionOnNextCall(opt); - -function test(f) { - assertEquals("Infinity", String(1/f(0))); - assertEquals("-Infinity", String(1/f(-0))); - assertEquals("Infinity", String(f(Infinity))); - assertEquals("-Infinity", String(f(-Infinity))); - assertEquals("Infinity", String(f(1E200))); - assertEquals("-Infinity", String(f(-1E200))); - assertEquals("Infinity", String(1/f(1E-300))); - assertEquals("-Infinity", String(1/f(-1E-300))); -} - -test(opt); -test(unopt); - -mantissa_23_shift = Math.pow(2, -23); -mantissa_29_shift = Math.pow(2, -23-29); - -// Javascript implementation of IEEE 754 to test double to single conversion. -function ieee754float(sign_bit, - exponent_bits, - mantissa_23_bits, - mantissa_29_bits) { - this.sign_bit = sign_bit & 1; - this.exponent_bits = exponent_bits & ((1 << 11) - 1); - this.mantissa_23_bits = mantissa_23_bits & ((1 << 23) - 1); - this.mantissa_29_bits = mantissa_29_bits & ((1 << 29) - 1); -} - -ieee754float.prototype.returnSpecial = function() { - if (mantissa_23_bits == 0 && mantissa_29_bits == 0) return sign * Infinity; - return NaN; -} - -ieee754float.prototype.toDouble = function() { - var sign = this.sign_bit ? -1 : 1; - var exponent = this.exponent_bits - 1023; - if (exponent == -1023) returnSpecial(); - var mantissa = 1 + this.mantissa_23_bits * mantissa_23_shift + - this.mantissa_29_bits * mantissa_29_shift; - return sign * Math.pow(2, exponent) * mantissa; -} - -ieee754float.prototype.toSingle = function() { - var sign = this.sign_bit ? -1 : 1; - var exponent = this.exponent_bits - 1023; - if (exponent == -1023) returnSpecial(); - if (exponent > 127) return sign * Infinity; - if (exponent < -126) return this.toSingleSubnormal(sign, exponent); - var round = this.mantissa_29_bits >> 28; - var mantissa = 1 + (this.mantissa_23_bits + round) * mantissa_23_shift; - return sign * Math.pow(2, exponent) * mantissa; -} - -ieee754float.prototype.toSingleSubnormal = function(sign, exponent) { - var shift = -126 - exponent; - if (shift > 24) return sign * 0; - var round_mask = 1 << (shift - 1); - var mantissa_23_bits = this.mantissa_23_bits + (1 << 23); - var round = ((mantissa_23_bits & round_mask) != 0) | 0; - if (round) { // Round to even if tied. - var tied_mask = round_mask - 1; - var result_last_bit_mask = 1 << shift; - var tied = this.mantissa_29_bits == 0 && - (mantissa_23_bits & tied_mask ) == 0; - var result_already_even = (mantissa_23_bits & result_last_bit_mask) == 0; - if (tied && result_already_even) round = 0; - } - mantissa_23_bits >>= shift; - var mantissa = (mantissa_23_bits + round) * mantissa_23_shift; - return sign * Math.pow(2, -126) * mantissa; -} - - -var pi = new ieee754float(0, 0x400, 0x490fda, 0x14442d18); -assertEquals(pi.toSingle(), opt(pi.toDouble())); -assertEquals(pi.toSingle(), unopt(pi.toDouble())); - - -function fuzz_mantissa(sign, exp, m1inc, m2inc) { - for (var m1 = 0; m1 < (1 << 23); m1 += m1inc) { - for (var m2 = 0; m2 < (1 << 29); m2 += m2inc) { - var float = new ieee754float(sign, exp, m1, m2); - assertEquals(float.toSingle(), unopt(float.toDouble())); - assertEquals(float.toSingle(), opt(float.toDouble())); - } - } -} - -for (var sign = 0; sign < 2; sign++) { - for (var exp = 1024 - 170; exp < 1024 + 170; exp++) { - fuzz_mantissa(sign, exp, 1337 * exp - sign, 127913 * exp - sign); - } -} diff --git a/implementation-contributed/v8/mjsunit/es6/math-hyperbolic.js b/implementation-contributed/v8/mjsunit/es6/math-hyperbolic.js deleted file mode 100644 index 29a419d1bdd..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-hyperbolic.js +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// TODO(3468): we rely on a precise Math.exp. -// Flags: --no-fast-math - -[Math.sinh, Math.cosh, Math.tanh, Math.asinh, Math.acosh, Math.atanh]. - forEach(function(fun) { - assertTrue(isNaN(fun(NaN))); - assertTrue(isNaN(fun("abc"))); - assertTrue(isNaN(fun({}))); - assertEquals(fun(0), fun([])); - assertTrue(isNaN(fun([1, 1]))); - assertEquals(fun(1.11), fun({ toString: function() { return "1.11"; } })); - assertEquals(fun(-3.1), fun({ toString: function() { return -3.1; } })); - assertEquals(fun(-1.1), fun({ valueOf: function() { return "-1.1"; } })); - assertEquals(fun(3.11), fun({ valueOf: function() { return 3.11; } })); -}); - - -function test_id(fun, rev, value) { - assertEqualsDelta(1, rev(fun(value))/value, 1E-7); -} - -[Math.PI, 2, 5, 1E-5, 0.3].forEach(function(x) { - test_id(Math.sinh, Math.asinh, x); - test_id(Math.sinh, Math.asinh, -x); - test_id(Math.cosh, Math.acosh, x); - test_id(Math.tanh, Math.atanh, x); - test_id(Math.tanh, Math.atanh, -x); -}); - - -[Math.sinh, Math.asinh, Math.tanh, Math.atanh].forEach(function(fun) { - assertEquals("-Infinity", String(1/fun(-0))); - assertEquals("Infinity", String(1/fun(0))); -}); - - -[Math.sinh, Math.asinh].forEach(function(fun) { - assertEquals("-Infinity", String(fun(-Infinity))); - assertEquals("Infinity", String(fun(Infinity))); - assertEquals("-Infinity", String(fun("-Infinity"))); - assertEquals("Infinity", String(fun("Infinity"))); -}); - - -assertEquals(Infinity, Math.cosh(-Infinity)); -assertEquals(Infinity, Math.cosh(Infinity)); -assertEquals(Infinity, Math.cosh("-Infinity")); -assertEquals(Infinity, Math.cosh("Infinity")); - - -assertEquals(-Infinity, Math.atanh(-1)); -assertEquals(Infinity, Math.atanh(1)); - -// Math.atanh(x) is NaN for |x| > 1 and NaN -[1.000000000001, Math.PI, 10000000, 2, Infinity, NaN].forEach(function(x) { - assertTrue(isNaN(Math.atanh(-x))); - assertTrue(isNaN(Math.atanh(x))); -}); - - -assertEquals(0, Math.sinh(0)); -assertEquals(-Infinity, 1/Math.sinh(-0)); -assertEquals(1, Math.tanh(Infinity)); -assertEquals(-1, Math.tanh(-Infinity)); -assertEquals(1, Math.cosh(0)); -assertEquals(1, Math.cosh(-0)); - -assertEquals(0, Math.acosh(1)); -assertEquals("Infinity", String(Math.acosh(Infinity))); - -// Math.acosh(x) is NaN for x < 1 -[0.99999999999, 0.2, -1000, 0, -0].forEach(function(x) { - assertTrue(isNaN(Math.acosh(x))); -}); - - -// Some random samples. -assertEqualsDelta(74.20321057778875, Math.sinh(5), 1E-12); -assertEqualsDelta(-74.20321057778875, Math.sinh(-5), 1E-12); - -assertEqualsDelta(1.1276259652063807, Math.cosh(0.5), 1E-12); -assertEqualsDelta(74.20994852478785, Math.cosh(5), 1E-12); -assertEqualsDelta(1.1276259652063807, Math.cosh(-0.5), 1E-12); -assertEqualsDelta(74.20994852478785, Math.cosh(-5), 1E-12); - -assertEqualsDelta(0.4621171572600, Math.tanh(0.5), 1E-12); -assertEqualsDelta(0.9999092042625, Math.tanh(5), 1E-12); -assertEqualsDelta(-0.4621171572600, Math.tanh(-0.5), 1E-12); -assertEqualsDelta(-0.9999092042625, Math.tanh(-5), 1E-12); - -assertEqualsDelta(0.4812118250596, Math.asinh(0.5), 1E-12); -assertEqualsDelta(2.3124383412727, Math.asinh(5), 1E-12); -assertEqualsDelta(-0.4812118250596, Math.asinh(-0.5), 1E-12); -assertEqualsDelta(-2.3124383412727, Math.asinh(-5), 1E-12); - -assertEqualsDelta(0.9624236501192, Math.acosh(1.5), 1E-12); -assertEqualsDelta(2.2924316695612, Math.acosh(5), 1E-12); -assertEqualsDelta(0.4435682543851, Math.acosh(1.1), 1E-12); -assertEqualsDelta(1.3169578969248, Math.acosh(2), 1E-12); - -assertEqualsDelta(0.5493061443341, Math.atanh(0.5), 1E-12); -assertEqualsDelta(0.1003353477311, Math.atanh(0.1), 1E-12); -assertEqualsDelta(-0.5493061443341, Math.atanh(-0.5), 1E-12); -assertEqualsDelta(-0.1003353477311, Math.atanh(-0.1), 1E-12); - -[0, 1E-50, 1E-10, 1E10, 1E50, 1E100, 1E150].forEach(function(x) { - assertEqualsDelta(Math.asinh(x), -Math.asinh(-x), 1E-12); -}); - -[1-(1E-16), 0, 1E-10, 1E-50].forEach(function(x) { - assertEqualsDelta(Math.atanh(x), -Math.atanh(-x), 1E-12); -}); - - -// Implementation-specific tests for sinh. -// Case |x| < 2^-28 -assertEquals(Math.pow(2, -29), Math.sinh(Math.pow(2, -29))); -assertEquals(-Math.pow(2, -29), Math.sinh(-Math.pow(2, -29))); -// Case |x| < 1 -assertEquals(0.5210953054937474, Math.sinh(0.5)); -assertEquals(-0.5210953054937474, Math.sinh(-0.5)); -// sinh(10*log(2)) = 1048575/2048, case |x| < 22 -assertEquals(1048575/2048, Math.sinh(10*Math.LN2)); -assertEquals(-1048575/2048, Math.sinh(-10*Math.LN2)); -// Case |x| < 22 -assertEquals(11013.232874703393, Math.sinh(10)); -assertEquals(-11013.232874703393, Math.sinh(-10)); -// Case |x| in [22, log(maxdouble)] -assertEquals(2.1474836479999983e9, Math.sinh(32*Math.LN2)); -assertEquals(-2.1474836479999983e9, Math.sinh(-32*Math.LN2)); -// Case |x| in [22, log(maxdouble)] -assertEquals(1.3440585709080678e43, Math.sinh(100)); -assertEquals(-1.3440585709080678e43, Math.sinh(-100)); -// No overflow, case |x| in [log(maxdouble), threshold] -assertEquals(1.7976931348621744e308, Math.sinh(710.4758600739439)); -assertEquals(-1.7976931348621744e308, Math.sinh(-710.4758600739439)); -// Overflow, case |x| > threshold -assertEquals(Infinity, Math.sinh(710.475860073944)); -assertEquals(-Infinity, Math.sinh(-710.475860073944)); -assertEquals(Infinity, Math.sinh(1000)); -assertEquals(-Infinity, Math.sinh(-1000)); - -// Implementation-specific tests for cosh. -// Case |x| < 2^-55 -assertEquals(1, Math.cosh(Math.pow(2, -56))); -assertEquals(1, Math.cosh(-Math.pow(2, -56))); -// Case |x| < 1/2*log(2). cosh(Math.LN2/4) = (sqrt(2)+1)/2^(5/4) -assertEquals(1.0150517651282178, Math.cosh(Math.LN2/4)); -assertEquals(1.0150517651282178, Math.cosh(-Math.LN2/4)); -// Case 1/2*log(2) < |x| < 22. cosh(10*Math.LN2) = 1048577/2048 -assertEquals(512.00048828125, Math.cosh(10*Math.LN2)); -assertEquals(512.00048828125, Math.cosh(-10*Math.LN2)); -// Case 22 <= |x| < log(maxdouble) -assertEquals(2.1474836479999983e9, Math.cosh(32*Math.LN2)); -assertEquals(2.1474836479999983e9, Math.cosh(-32*Math.LN2)); -// Case log(maxdouble) <= |x| <= overflowthreshold -assertEquals(1.7976931348621744e308, Math.cosh(710.4758600739439)); -assertEquals(1.7976931348621744e308, Math.cosh(-710.4758600739439)); -// Overflow. -assertEquals(Infinity, Math.cosh(710.475860073944)); -assertEquals(Infinity, Math.cosh(-710.475860073944)); - -// Implementation-specific tests for tanh. -// Case |x| < 2^-55 -var two_56 = Math.pow(2, -56); -assertEquals(two_56, Math.tanh(two_56)); -assertEquals(-two_56, Math.tanh(-two_56)); -// Case |x| < 1 -assertEquals(0.6, Math.tanh(Math.LN2)); -assertEquals(-0.6, Math.tanh(-Math.LN2)); -// Case 1 < |x| < 22 -assertEquals(15/17, Math.tanh(2 * Math.LN2)); -assertEquals(-15/17, Math.tanh(-2 * Math.LN2)); -// Case |x| > 22 -assertEquals(1, Math.tanh(100)); -assertEquals(-1, Math.tanh(-100)); -// Test against overflow -assertEquals(1, Math.tanh(1e300)); -assertEquals(-1, Math.tanh(-1e300)); diff --git a/implementation-contributed/v8/mjsunit/es6/math-hypot.js b/implementation-contributed/v8/mjsunit/es6/math-hypot.js deleted file mode 100644 index d2392df3a40..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-hypot.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertTrue(isNaN(Math.hypot({}))); -assertTrue(isNaN(Math.hypot(undefined, 1))); -assertTrue(isNaN(Math.hypot(1, undefined))); -assertTrue(isNaN(Math.hypot(Math.hypot, 1))); -assertEquals(1, Math.hypot(1)); -assertEquals(Math.PI, Math.hypot(Math.PI)); -assertEquals(5, Math.hypot(3, 4)); -assertEquals(13, Math.hypot(3, 4, 12)); -assertEquals(15, Math.hypot(" 2 ", - "0x5", - { valueOf: function() { return "0xe"; } })); -assertEquals(17, Math.hypot({ valueOf: function() { return 1; } }, - { toString: function() { return 12; } }, - { toString: function() { return "12"; } })); - -// Check function length. -assertEquals(2, Math.hypot.length); - -// Check that 0 is returned for no arguments. -assertEquals(0, Math.hypot()); - -// Check that Infinity is returned if any of the arguments is +/-Infinity. -assertEquals("Infinity", String(Math.hypot(NaN, Infinity))); -assertEquals("Infinity", String(Math.hypot(1, -Infinity, 2))); - -// Check that NaN is returned if any argument is NaN and none is +/-Infinity/ -assertTrue(isNaN(Math.hypot(1, 2, NaN))); -assertTrue(isNaN(Math.hypot(NaN, NaN, 4))); - -// Check that +0 is returned if all arguments are +/-0. -assertEquals("Infinity", String(1/Math.hypot(-0))); -assertEquals("Infinity", String(1/Math.hypot(0))); -assertEquals("Infinity", String(1/Math.hypot(-0, -0))); -assertEquals("Infinity", String(1/Math.hypot(-0, 0))); - -// Check that we avoid overflows and underflows. -assertEqualsDelta(5E300, Math.hypot(3E300, 4E300), 1E285); -assertEqualsDelta(17E-300, Math.hypot(8E-300, 15E-300), 1E-315); -assertEqualsDelta(19E300, Math.hypot(6E300, 6E300, 17E300), 1E285); - -// Check that we sufficiently account for rounding errors when summing up. -// For this, we calculate a simple fractal square that recurses in the -// fourth quarter. -var fractals = []; -var edge_length = Math.E * 1E20; - -var fractal_length = edge_length; -while(fractal_length >= 1) { - fractal_length *= 0.5; - fractals.push(fractal_length); - fractals.push(fractal_length); - fractals.push(fractal_length); -} - -fractals.push(fractal_length); -assertEqualsDelta(edge_length, Math.hypot.apply(Math, fractals), 1E-15); -fractals.reverse(); -assertEqualsDelta(edge_length, Math.hypot.apply(Math, fractals), 1E-15); -// Also shuffle the array. -var c = 0; -function random_sort(a, b) { c++; return (c & 3) - 1.5; } -fractals.sort(random_sort); -assertEqualsDelta(edge_length, Math.hypot.apply(Math, fractals), 1E-15); -fractals.sort(random_sort); -assertEqualsDelta(edge_length, Math.hypot.apply(Math, fractals), 1E-15); diff --git a/implementation-contributed/v8/mjsunit/es6/math-log1p.js b/implementation-contributed/v8/mjsunit/es6/math-log1p.js deleted file mode 100644 index 5468444fdac..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-log1p.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertTrue(isNaN(Math.log1p(NaN))); -assertTrue(isNaN(Math.log1p(function() {}))); -assertTrue(isNaN(Math.log1p({ toString: function() { return NaN; } }))); -assertTrue(isNaN(Math.log1p({ valueOf: function() { return "abc"; } }))); -assertEquals(Infinity, 1/Math.log1p(0)); -assertEquals(-Infinity, 1/Math.log1p(-0)); -assertEquals(Infinity, Math.log1p(Infinity)); -assertEquals(-Infinity, Math.log1p(-1)); -assertTrue(isNaN(Math.log1p(-2))); -assertTrue(isNaN(Math.log1p(-Infinity))); - -for (var x = 1E300; x > 1E16; x *= 0.8) { - var expected = Math.log(x + 1); - assertEqualsDelta(expected, Math.log1p(x), expected * 1E-16); -} - -// Values close to 0: -// Use Taylor expansion at 1 for log(x) as test expectation: -// log1p(x) == log(x + 1) == 0 + x / 1 - x^2 / 2 + x^3 / 3 - ... -function log1p(x) { - var terms = []; - var prod = x; - for (var i = 1; i <= 20; i++) { - terms.push(prod / i); - prod *= -x; - } - var sum = 0; - while (terms.length > 0) sum += terms.pop(); - return sum; -} - -for (var x = 1E-1; x > 1E-300; x *= 0.8) { - var expected = log1p(x); - assertEqualsDelta(expected, Math.log1p(x), expected * 1E-16); -} - -// Issue 3481. -assertEquals(6.9756137364252422e-03, - Math.log1p(8070450532247929/Math.pow(2,60))); - -// Tests related to the fdlibm implementation. -// Test largest double value. -assertEquals(709.782712893384, Math.log1p(1.7976931348623157e308)); -// Test small values. -assertEquals(Math.pow(2, -55), Math.log1p(Math.pow(2, -55))); -assertEquals(9.313225741817976e-10, Math.log1p(Math.pow(2, -30))); -// Cover various code paths. -// -.2929 < x < .41422, k = 0 -assertEquals(-0.2876820724517809, Math.log1p(-0.25)); -assertEquals(0.22314355131420976, Math.log1p(0.25)); -// 0.41422 < x < 9.007e15 -assertEquals(2.3978952727983707, Math.log1p(10)); -// x > 9.007e15 -assertEquals(36.841361487904734, Math.log1p(10e15)); -// Normalize u. -assertEquals(37.08337388996168, Math.log1p(12738099905822720)); -// Normalize u/2. -assertEquals(37.08336444902049, Math.log1p(12737979646738432)); -// |f| = 0, k != 0 -assertEquals(1.3862943611198906, Math.log1p(3)); -// |f| != 0, k != 0 -assertEquals(1.3862945995384413, Math.log1p(3 + Math.pow(2,-20))); -// final if-clause: k = 0 -assertEquals(0.5596157879354227, Math.log1p(0.75)); -// final if-clause: k != 0 -assertEquals(0.8109302162163288, Math.log1p(1.25)); diff --git a/implementation-contributed/v8/mjsunit/es6/math-log2-log10.js b/implementation-contributed/v8/mjsunit/es6/math-log2-log10.js deleted file mode 100644 index eeacee927be..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-log2-log10.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -[Math.log10, Math.log2].forEach( function(fun) { - assertTrue(isNaN(fun(NaN))); - assertTrue(isNaN(fun(fun))); - assertTrue(isNaN(fun({ toString: function() { return NaN; } }))); - assertTrue(isNaN(fun({ valueOf: function() { return -1; } }))); - assertTrue(isNaN(fun({ valueOf: function() { return "abc"; } }))); - assertTrue(isNaN(fun(-0.1))); - assertTrue(isNaN(fun(-1))); - assertEquals("-Infinity", String(fun(0))); - assertEquals("-Infinity", String(fun(-0))); - assertEquals(0, fun(1)); - assertEquals("Infinity", String(fun(Infinity))); -}); - -for (var i = -310; i <= 308; i += 0.5) { - assertEquals(i, Math.log10(Math.pow(10, i))); - // Square roots are tested below. - if (i != -0.5 && i != 0.5 ) { - assertEqualsDelta(i, Math.log2(Math.pow(2, i)), Number.EPSILON); - } -} - -// Test denormals. -assertEquals(-307.77759430519706, Math.log10(1.5 * Math.pow(2, -1023))); - -// Issue 4025. Remove delta once issue 4029 has been fixed. -assertEqualsDelta(-9.643274665532873e-17, Math.log10(1-Number.EPSILON), 3e-32); - -// Test Math.log2(2^k) for -1074 <= k <= 1023. -var n = -1074; -// This loop covers n from -1074 to -1043 -for (var lowbits = 1; lowbits <= 0x80000000; lowbits *= 2) { - var x = %ConstructDouble(0, lowbits); - assertEquals(n, Math.log2(x)); - n++; -} -// This loop covers n from -1042 to -1023 -for (var hibits = 1; hibits <= 0x80000; hibits *= 2) { - var x = %ConstructDouble(hibits, 0); - assertEquals(n, Math.log2(x)); - n++; -} -// The rest of the normal values of 2^n -var x = 1; -for (var n = -1022; n <= 1023; ++n) { - var x = Math.pow(2, n); - assertEquals(n, Math.log2(x)); -} - -// Test special values. -// Expectation isn't exactly 1/2 because Math.SQRT2 isn't exactly sqrt(2). -assertEquals(0.5000000000000001, Math.log2(Math.SQRT2)); - -// Expectation isn't exactly -1/2 because Math.SQRT1_2 isn't exactly sqrt(1/2). -assertEquals(-0.4999999999999999, Math.log2(Math.SQRT1_2)); - -assertEquals(3.321928094887362, Math.log2(10)); -assertEquals(6.643856189774724, Math.log2(100)); - -// Test relationships -x = 1; -for (var k = 0; k < 1000; ++k) { - var y = Math.abs(Math.log2(x) + Math.log2(1/x)); - assertEqualsDelta(0, y, 1.5e-14); - x *= 1.1; -} - -x = Math.pow(2, -100); -for (var k = 0; k < 1000; ++k) { - var y = Math.log2(x); - var expected = Math.log(x) / Math.LN2; - var err = Math.abs(y - expected) / expected; - assertEqualsDelta(0, err, 1e-15); - x *= 1.1; -} diff --git a/implementation-contributed/v8/mjsunit/es6/math-sign.js b/implementation-contributed/v8/mjsunit/es6/math-sign.js deleted file mode 100644 index 65f1609d634..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-sign.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals("Infinity", String(1/Math.sign(0))); -assertEquals("-Infinity", String(1/Math.sign(-0))); -assertEquals(1, Math.sign(100)); -assertEquals(-1, Math.sign(-199)); -assertEquals(1, Math.sign(100.1)); -assertTrue(isNaN(Math.sign("abc"))); -assertTrue(isNaN(Math.sign({}))); -assertEquals(0, Math.sign([])); -assertEquals(1, Math.sign([1])); -assertEquals(-1, Math.sign([-100.1])); -assertTrue(isNaN(Math.sign([1, 1]))); -assertEquals(1, Math.sign({ toString: function() { return "100"; } })); -assertEquals(1, Math.sign({ toString: function() { return 100; } })); -assertEquals(-1, Math.sign({ valueOf: function() { return -1.1; } })); -assertEquals(-1, Math.sign({ valueOf: function() { return "-1.1"; } })); -assertEquals(-1, Math.sign(-Infinity)); -assertEquals(1, Math.sign(Infinity)); -assertEquals(-1, Math.sign("-Infinity")); -assertEquals(1, Math.sign("Infinity")); diff --git a/implementation-contributed/v8/mjsunit/es6/math-trunc.js b/implementation-contributed/v8/mjsunit/es6/math-trunc.js deleted file mode 100644 index c925b5b3639..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math-trunc.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var test_id = 0; - -function testTrunc(expected, input) { - var test = new Function('n', - '"' + (test_id++) + '";return Math.trunc(n)'); - assertEquals(expected, test(input)); - assertEquals(expected, test(input)); - assertEquals(expected, test(input)); - %OptimizeFunctionOnNextCall(test); - assertEquals(expected, test(input)); - - var test_double_input = new Function( - 'n', - '"' + (test_id++) + '";return Math.trunc(+n)'); - assertEquals(expected, test_double_input(input)); - assertEquals(expected, test_double_input(input)); - assertEquals(expected, test_double_input(input)); - %OptimizeFunctionOnNextCall(test_double_input); - assertEquals(expected, test_double_input(input)); - - var test_double_output = new Function( - 'n', - '"' + (test_id++) + '";return Math.trunc(n) + -0.0'); - assertEquals(expected, test_double_output(input)); - assertEquals(expected, test_double_output(input)); - assertEquals(expected, test_double_output(input)); - %OptimizeFunctionOnNextCall(test_double_output); - assertEquals(expected, test_double_output(input)); -} - -function test() { - // Ensure that a negative zero coming from Math.trunc is properly handled - // by other operations. - function itrunc(x) { - return 1 / Math.trunc(x); - } - assertEquals(Infinity, itrunc(0)); - assertEquals(-Infinity, itrunc(-0)); - assertEquals(Infinity, itrunc(Math.PI / 4)); - assertEquals(-Infinity, itrunc(-Math.sqrt(2) / 2)); - assertEquals(-Infinity, itrunc({valueOf: function() { return "-0.1"; }})); - %OptimizeFunctionOnNextCall(itrunc); - - testTrunc(100, 100); - testTrunc(-199, -199); - testTrunc(100, 100.1); - testTrunc(4503599627370495.0, 4503599627370495.0); - testTrunc(4503599627370496.0, 4503599627370496.0); - testTrunc(-4503599627370495.0, -4503599627370495.0); - testTrunc(-4503599627370496.0, -4503599627370496.0); - testTrunc(9007199254740991.0, 9007199254740991.0); - testTrunc(-9007199254740991.0, -9007199254740991.0); - testTrunc(0, []); - testTrunc(1, [1]); - testTrunc(-100, [-100.1]); - testTrunc(-100, {toString: function() { return "-100.3"; }}); - testTrunc(10, {toString: function() { return 10.1; }}); - testTrunc(-1, {valueOf: function() { return -1.1; }}); - testTrunc(-Infinity, -Infinity); - testTrunc(Infinity, Infinity); - testTrunc(-Infinity, "-Infinity"); - testTrunc(Infinity, "Infinity"); - - assertTrue(isNaN(Math.trunc("abc"))); - assertTrue(isNaN(Math.trunc({}))); - assertTrue(isNaN(Math.trunc([1, 1]))); -} - -// Test in a loop to cover the custom IC and GC-related issues. -for (var i = 0; i < 10; i++) { - test(); - new Array(i * 10000); -} diff --git a/implementation-contributed/v8/mjsunit/es6/math.js b/implementation-contributed/v8/mjsunit/es6/math.js deleted file mode 100644 index dc761d687d4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/math.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function testMathToString() { - assertEquals('[object Math]', "" + Math); - assertEquals("Math", Math[Symbol.toStringTag]); - var desc = Object.getOwnPropertyDescriptor(Math, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.writable); - assertEquals("Math", desc.value); - delete Math[Symbol.toStringTag]; - assertEquals('[object Object]', "" + Math); -} -testMathToString(); diff --git a/implementation-contributed/v8/mjsunit/es6/method-name-eval-arguments.js b/implementation-contributed/v8/mjsunit/es6/method-name-eval-arguments.js deleted file mode 100644 index 8792177e250..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/method-name-eval-arguments.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestSloppyMode() { - var o = { - eval() { - return 1; - }, - arguments() { - return 2; - }, - }; - - assertEquals(1, o.eval()); - assertEquals(2, o.arguments()); -})(); - -(function TestStrictMode() { - 'use strict'; - - var o = { - eval() { - return 1; - }, - arguments() { - return 2; - }, - }; - - assertEquals(1, o.eval()); - assertEquals(2, o.arguments()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/microtask-delivery.js b/implementation-contributed/v8/mjsunit/es6/microtask-delivery.js deleted file mode 100644 index 96035164f2c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/microtask-delivery.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var ordering = []; -function reset() { - ordering = []; -} - -function assertArrayValues(expected, actual) { - assertEquals(expected.length, actual.length); - for (var i = 0; i < expected.length; i++) { - assertEquals(expected[i], actual[i]); - } -} - -function assertOrdering(expected) { - %PerformMicrotaskCheckpoint(); - assertArrayValues(expected, ordering); -} - -function newPromise(id, fn) { - var r; - var t = 1; - var promise = new Promise(function(resolve) { - r = resolve; - if (fn) fn(); - }); - - var next = promise.then(function(value) { - ordering.push('p' + id); - return value; - }); - - return { - resolve: r, - then: function(fn) { - next = next.then(function(value) { - ordering.push('p' + id + ':' + t++); - return fn ? fn(value) : value; - }); - - return this; - } - }; -} - -(function PromiseThens() { - reset(); - - var p1 = newPromise(1).then(); - var p2 = newPromise(2).then(); - - p1.resolve(); - p2.resolve(); - - assertOrdering(['p1', 'p2', 'p1:1', 'p2:1']); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/new-target.js b/implementation-contributed/v8/mjsunit/es6/new-target.js deleted file mode 100644 index c77c153cc0d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/new-target.js +++ /dev/null @@ -1,483 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function TestClass() { - 'use strict'; - - var calls = 0; - class Base { - constructor(_) { - assertEquals(Base, new.target); - calls++; - } - } - assertInstanceof(new Base(1), Base); - assertInstanceof(new Base(1, 2), Base); - assertInstanceof(new Base(), Base); - assertEquals(3, calls); -})(); - - -(function TestDerivedClass() { - 'use strict'; - - var calls = 0; - class Base { - constructor(expected) { - assertEquals(expected, new.target); - } - } - class Derived extends Base { - constructor(expected) { - super(expected); - assertEquals(expected, new.target); - calls++; - } - } - new Derived(Derived, 'extra'); - new Derived(Derived); - assertEquals(2, calls); - - class Derived2 extends Derived {} - calls = 0; - new Derived2(Derived2); - new Derived2(Derived2, 'extra'); - assertEquals(2, calls); -})(); - - -(function TestFunctionCall() { - var calls; - function f(expected) { - calls++; - assertEquals(expected, new.target); - } - - calls = 0; - f(undefined); - f(undefined, 'extra'); - f(); - assertEquals(3, calls); - - calls = 0; - f.call({}, undefined); - f.call({}, undefined, 'extra'); - f.call({}); - assertEquals(3, calls); - - calls = 0; - f.apply({}, [undefined]); - f.apply({}, [undefined, 'extra']); - f.apply({}, []); - assertEquals(3, calls); -})(); - - -(function TestFunctionConstruct() { - var calls; - function f(expected) { - calls++; - assertEquals(expected, new.target); - } - - calls = 0; - new f(f); - new f(f, 'extra'); - assertEquals(2, calls); -})(); - - -(function TestClassExtendsFunction() { - 'use strict'; - - var calls = 0; - function f(expected) { - assertEquals(expected, new.target); - } - class Derived extends f { - constructor(expected) { - super(expected); - assertEquals(expected, new.target); - calls++; - } - } - - new Derived(Derived); - new Derived(Derived, 'extra'); - assertEquals(2, calls); -})(); - - -(function TestFunctionReturnObject() { - function f(expected) { - assertEquals(expected, new.target); - return /abc/; - } - - assertInstanceof(new f(f), RegExp); - assertInstanceof(new f(f, 'extra'), RegExp); - - assertInstanceof(f(undefined), RegExp); - assertInstanceof(f(), RegExp); - assertInstanceof(f(undefined, 'extra'), RegExp); -})(); - - -(function TestClassReturnObject() { - 'use strict'; - - class Base { - constructor(expected) { - assertEquals(expected, new.target); - return /abc/; - } - } - - assertInstanceof(new Base(Base), RegExp); - assertInstanceof(new Base(Base, 'extra'), RegExp); - - class Derived extends Base {} - assertInstanceof(new Derived(Derived), RegExp); - assertInstanceof(new Derived(Derived, 'extra'), RegExp); - - class Derived2 extends Base { - constructor(expected) { - super(expected); - assertInstanceof(this, RegExp); - } - } - assertInstanceof(new Derived2(Derived2), RegExp); - assertInstanceof(new Derived2(Derived2, 'extra'), RegExp); -})(); - - -(function TestReflectConstruct() { - var calls = 0; - function f(expected) { - calls++; - assertEquals(expected, new.target); - } - - var o = Reflect.construct(f, [f]); - assertEquals(Object.getPrototypeOf(o), f.prototype); - o = Reflect.construct(f, [f, 'extra']); - assertEquals(Object.getPrototypeOf(o), f.prototype); - assertEquals(2, calls); - - calls = 0; - o = Reflect.construct(f, [f], f); - assertEquals(Object.getPrototypeOf(o), f.prototype); - o = Reflect.construct(f, [f, 'extra'], f); - assertEquals(Object.getPrototypeOf(o), f.prototype); - assertEquals(2, calls); - - - function g() {} - calls = 0; - o = Reflect.construct(f, [g], g); - assertEquals(Object.getPrototypeOf(o), g.prototype); - o = Reflect.construct(f, [g, 'extra'], g); - assertEquals(Object.getPrototypeOf(o), g.prototype); - assertEquals(2, calls); -})(); - - -(function TestRestParametersFunction() { - function f(...rest) { - assertEquals(rest[0], new.target); - } - - assertInstanceof(new f(f), f); - assertInstanceof(new f(f, 'extra'), f); -})(); - - -(function TestRestParametersClass() { - 'use strict'; - - class Base { - constructor(...rest) { - assertEquals(rest[0], new.target); - } - } - - assertInstanceof(new Base(Base), Base); - assertInstanceof(new Base(Base, 'extra'), Base); - - class Derived extends Base {} - - assertInstanceof(new Derived(Derived), Derived); - assertInstanceof(new Derived(Derived, 'extra'), Derived); -})(); - - -(function TestArrowFunction() { - function f(expected) { - (() => { - assertEquals(expected, new.target); - })(); - } - - assertInstanceof(new f(f), f); - assertInstanceof(new f(f, 'extra'), f); -})(); - - -(function TestRestParametersClass() { - 'use strict'; - - class Base { - constructor(expected) { - (() => { - assertEquals(expected, new.target); - })(); - } - } - - assertInstanceof(new Base(Base), Base); - assertInstanceof(new Base(Base, 'extra'), Base); - - class Derived extends Base {} - - assertInstanceof(new Derived(Derived), Derived); - assertInstanceof(new Derived(Derived, 'extra'), Derived); -})(); - - -(function TestSloppyArguments() { - var length, a0, a1, a2, nt; - function f(x) { - assertEquals(length, arguments.length); - assertEquals(a0, arguments[0]); - assertEquals(a1, arguments[1]); - assertEquals(a2, arguments[2]); - assertEquals(nt, new.target); - - if (length > 0) { - x = 42; - assertEquals(42, x); - assertEquals(42, arguments[0]); - - arguments[0] = 33; - assertEquals(33, x); - assertEquals(33, arguments[0]); - } - } - - nt = f; - length = 0; - new f(); - - length = 1; - a0 = 1; - new f(1); - - length = 2; - a0 = 1; - a1 = 2; - new f(1, 2); - - length = 3; - a0 = 1; - a1 = 2; - a2 = 3; - new f(1, 2, 3); - - nt = undefined; - a0 = a1 = a2 = undefined; - length = 0; - f(); - - length = 1; - a0 = 1; - f(1); - - length = 2; - a0 = 1; - a1 = 2; - f(1, 2); - - length = 3; - a0 = 1; - a1 = 2; - a2 = 3; - f(1, 2, 3); -})(); - - -(function TestStrictArguments() { - var length, a0, a1, a2, nt; - function f(x) { - 'use strict'; - assertEquals(length, arguments.length); - assertEquals(a0, arguments[0]); - assertEquals(a1, arguments[1]); - assertEquals(a2, arguments[2]); - assertEquals(nt, new.target); - - if (length > 0) { - x = 42; - assertEquals(a0, arguments[0]); - - arguments[0] = 33; - assertEquals(33, arguments[0]); - } - } - - nt = f; - length = 0; - new f(); - - length = 1; - a0 = 1; - new f(1); - - length = 2; - a0 = 1; - a1 = 2; - new f(1, 2); - - length = 3; - a0 = 1; - a1 = 2; - a2 = 3; - new f(1, 2, 3); - - nt = undefined; - a0 = a1 = a2 = undefined; - length = 0; - f(); - - length = 1; - a0 = 1; - f(1); - - length = 2; - a0 = 1; - a1 = 2; - f(1, 2); - - length = 3; - a0 = 1; - a1 = 2; - a2 = 3; - f(1, 2, 3); -})(); - - -(function TestOtherScopes() { - function f1() { return eval("'use strict'; new.target") } - assertSame(f1, new f1); - function f2() { with ({}) return new.target } - assertSame(f2, new f2); - function f3({a}) { return new.target } - assertSame(f3, new f3({})); - function f4(...a) { return new.target } - assertSame(f4, new f4); - function f5() { 'use strict'; { let x; return new.target } } - assertSame(f5, new f5); - function f6() { with ({'new.target': 42}) return new.target } - assertSame(f6, new f6); -})(); - - -// Has to be top-level to be inlined. -function get_new_target() { return new.target; } -(function TestInlining() { - "use strict"; - new function() { assertEquals(undefined, get_new_target()); } - new function() { assertEquals(get_new_target, new get_new_target()); } - - class A extends get_new_target { - constructor() { - var new_target = super(); - this.new_target = new_target; - } - } - assertEquals(A, new A().new_target); -})(); - - -(function TestEarlyErrors() { - assertThrows(function() { Function("new.target = 42"); }, ReferenceError); - assertThrows(function() { Function("var foo = 1; new.target = foo = 42"); }, ReferenceError); - assertThrows(function() { Function("var foo = 1; foo = new.target = 42"); }, ReferenceError); - assertThrows(function() { Function("new.target--"); }, ReferenceError); - assertThrows(function() { Function("--new.target"); }, ReferenceError); - assertThrows(function() { Function("(new.target)++"); }, ReferenceError); - assertThrows(function() { Function("++(new.target)"); }, ReferenceError); - assertThrows(function() { Function("for (new.target of {});"); }, SyntaxError); -})(); - -(function TestOperatorPrecedence() { - function A() {} - function constructNewTargetDotProp() { return new new.target.Prop } - constructNewTargetDotProp.Prop = A; - assertInstanceof(new constructNewTargetDotProp, A); - - function constructNewTargetBracketProp() { return new new.target['Prop'] } - constructNewTargetBracketProp.Prop = A; - assertInstanceof(new constructNewTargetBracketProp, A); - - function refNewTargetDotProp() { return new.target.Prop; } - function B() {} - refNewTargetDotProp.Prop = B; - assertEquals(new refNewTargetDotProp, B); - - function refNewTargetBracketProp() { return new.target['Prop']; } - refNewTargetBracketProp.Prop = B; - assertEquals(new refNewTargetBracketProp, B); - - var calls = 0; - function constructNewTargetArgsDotProp(safe) { - this.Prop = ++calls; - return safe ? Object(new new.target().Prop) : this; - } - assertInstanceof(new constructNewTargetArgsDotProp, - constructNewTargetArgsDotProp); - assertEquals(3, new constructNewTargetArgsDotProp(true) | 0); - - function constructNewTargetArgsBracketProp(safe) { - this.Prop = ++calls; - return safe ? Object(new new.target()['Prop']) : this; - } - assertInstanceof(new constructNewTargetArgsBracketProp, - constructNewTargetArgsBracketProp); - assertEquals(6, new constructNewTargetArgsBracketProp(true) | 0); - - function callNewTargetArgsDotProp(safe) { - this.Prop = ++calls; - return safe ? Object(new.target().Prop) : this; - } - assertInstanceof(new callNewTargetArgsDotProp(), callNewTargetArgsDotProp); - assertEquals(new callNewTargetArgsDotProp(true) | 0, 9); - - function callNewTargetArgsBracketProp(safe) { - this.Prop = ++calls; - return safe ? Object(new.target()['Prop']) : this; - } - assertInstanceof(new callNewTargetArgsBracketProp(), - callNewTargetArgsBracketProp); - assertEquals(new callNewTargetArgsBracketProp(true) | 0, 12); - - function tagNewTarget(callSite, ...subs) { - return callSite ? subs : new.target`${new.target.name}`; - } - assertEquals(new tagNewTarget, ["tagNewTarget"]); - - function C(callSite, ...subs) { return subs; } - function tagNewTargetProp() { return new.target.Prop`${new.target.name}`; } - tagNewTargetProp.Prop = C; - assertEquals(new tagNewTargetProp, ["tagNewTargetProp"]); -})(); - -(function testDeleteSloppy() { - assertTrue(delete new.target); -})(); - -(function testDeleteStrict() { - "use strict"; - assertTrue(delete new.target); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/numeric-literals.js b/implementation-contributed/v8/mjsunit/es6/numeric-literals.js deleted file mode 100644 index 0baa26aafcf..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/numeric-literals.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function TestOctalLiteral() { - assertEquals(0, 0o0); - assertEquals(0, 0O0); - assertEquals(1, 0o1); - assertEquals(7, 0o7); - assertEquals(8, 0o10); - assertEquals(63, 0o77); -} -TestOctalLiteral(); - - -function TestOctalLiteralUsingNumberFunction() { - assertEquals(0, Number('0o0')); - assertEquals(0, Number('0O0')); - assertEquals(1, Number('0o1')); - assertEquals(7, Number('0o7')); - assertEquals(8, Number('0o10')); - assertEquals(63, Number('0o77')); -} -TestOctalLiteralUsingNumberFunction(); - - -function TestBinaryLiteral() { - assertEquals(0, 0b0); - assertEquals(0, 0B0); - assertEquals(1, 0b1); - assertEquals(2, 0b10); - assertEquals(3, 0b11); -} -TestBinaryLiteral(); - - -function TestBinaryLiteralUsingNumberFunction() { - assertEquals(0, Number('0b0')); - assertEquals(0, Number('0B0')); - assertEquals(1, Number('0b1')); - assertEquals(2, Number('0b10')); - assertEquals(3, Number('0b11')); -} -TestBinaryLiteralUsingNumberFunction(); - - -function TestParseIntDoesNotSupportOctalNorBinary() { - assertEquals(0, parseInt('0o77')); - assertEquals(0, parseInt('0o77', 8)); - assertEquals(0, parseInt('0b11')); - assertEquals(0, parseInt('0b11', 2)); -} -TestParseIntDoesNotSupportOctalNorBinary(); - - -function TestParseFloatDoesNotSupportOctalNorBinary() { - assertEquals(0, parseFloat('0o77')); - assertEquals(0, parseFloat('0b11')); -} -TestParseFloatDoesNotSupportOctalNorBinary(); diff --git a/implementation-contributed/v8/mjsunit/es6/object-assign.js b/implementation-contributed/v8/mjsunit/es6/object-assign.js deleted file mode 100644 index 1fec766dd15..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/object-assign.js +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Based on Mozilla Object.assign() tests - -function checkDataProperty(object, propertyKey, value, writable, enumerable, configurable) { - var desc = Object.getOwnPropertyDescriptor(object, propertyKey); - assertFalse(desc === undefined); - assertTrue('value' in desc); - assertEquals(desc.value, value); - assertEquals(desc.writable, writable); - assertEquals(desc.enumerable, enumerable); - assertEquals(desc.configurable, configurable); -} - -// 19.1.2.1 Object.assign ( target, ...sources ) -assertEquals(Object.assign.length, 2); - -// Basic functionality works with multiple sources -(function basicMultipleSources() { - var a = {}; - var b = { bProp: 1 }; - var c = { cProp: 2 }; - Object.assign(a, b, c); - assertEquals(a, { - bProp: 1, - cProp: 2 - }); -})(); - -// Basic functionality works with symbols -(function basicSymbols() { - var a = {}; - var b = { bProp: 1 }; - var aSymbol = Symbol("aSymbol"); - b[aSymbol] = 2; - Object.assign(a, b); - assertEquals(1, a.bProp); - assertEquals(2, a[aSymbol]); -})(); - -// Dies if target is null or undefined -assertThrows(function() { return Object.assign(null, null); }, TypeError); -assertThrows(function() { return Object.assign(null, {}); }, TypeError); -assertThrows(function() { return Object.assign(undefined); }, TypeError); -assertThrows(function() { return Object.assign(); }, TypeError); - -// Calls ToObject for target -assertTrue(Object.assign(true, {}) instanceof Boolean); -assertTrue(Object.assign(1, {}) instanceof Number); -assertTrue(Object.assign("string", {}) instanceof String); -var o = {}; -assertSame(Object.assign(o, {}), o); - -// Only [[Enumerable]] properties are assigned to target -(function onlyEnumerablePropertiesAssigned() { - var source = Object.defineProperties({}, { - a: {value: 1, enumerable: true}, - b: {value: 2, enumerable: false}, - }); - var target = Object.assign({}, source); - assertTrue("a" in target); - assertFalse("b" in target); -})(); - -// Properties are retrieved through Get() -// Properties are assigned through Put() -(function testPropertiesAssignedThroughPut() { - var setterCalled = false; - Object.assign({set a(v) { setterCalled = v }}, {a: true}); - assertTrue(setterCalled); -})(); - -// Properties are retrieved through Get() -// Properties are assigned through Put(): Existing property attributes are not altered -(function propertiesAssignedExistingNotAltered() { - var source = {a: 1, b: 2, c: 3}; - var target = {a: 0, b: 0, c: 0}; - Object.defineProperty(target, "a", {enumerable: false}); - Object.defineProperty(target, "b", {configurable: false}); - Object.defineProperty(target, "c", {enumerable: false, configurable: false}); - Object.assign(target, source); - checkDataProperty(target, "a", 1, true, false, true); - checkDataProperty(target, "b", 2, true, true, false); - checkDataProperty(target, "c", 3, true, false, false); -})(); - -// Properties are retrieved through Get() -// Properties are assigned through Put(): Throws TypeError if non-writable -(function propertiesAssignedTypeErrorNonWritable() { - var source = {a: 1}; - var target = {a: 0}; - Object.defineProperty(target, "a", {writable: false}); - assertThrows(function() { return Object.assign(target, source); }, TypeError); - checkDataProperty(target, "a", 0, false, true, true); -})(); - -// Properties are retrieved through Get() -// Put() creates standard properties; Property attributes from source are -// ignored -(function createsStandardProperties() { - var source = {a: 1, b: 2, c: 3, get d() { return 4 }}; - Object.defineProperty(source, "b", {writable: false}); - Object.defineProperty(source, "c", {configurable: false}); - var target = Object.assign({}, source); - checkDataProperty(target, "a", 1, true, true, true); - checkDataProperty(target, "b", 2, true, true, true); - checkDataProperty(target, "c", 3, true, true, true); - checkDataProperty(target, "d", 4, true, true, true); -})(); - -// Properties created during traversal are not copied -(function propertiesCreatedDuringTraversalNotCopied() { - var source = {get a() { this.b = 2 }}; - var target = Object.assign({}, source); - assertTrue("a" in target); - assertFalse("b" in target); -})(); - -// String and Symbol valued properties are copied -(function testStringAndSymbolPropertiesCopied() { - var keyA = "str-prop"; - var source = {"str-prop": 1}; - var target = Object.assign({}, source); - checkDataProperty(target, keyA, 1, true, true, true); -})(); - -(function testExceptionsStopFirstException() { - var ErrorA = function ErrorA() {}; - var ErrorB = function ErrorB() {}; - var log = ""; - var source = { b: 1, a: 1 }; - var target = { - set a(v) { log += "a"; throw new ErrorA }, - set b(v) { log += "b"; throw new ErrorB }, - }; - assertThrows(function() { return Object.assign(target, source); }, ErrorB); - assertEquals(log, "b"); -})(); - -(function add_to_source() { - var target = {set k1(v) { source.k3 = 100; }}; - var source = {k1:10}; - Object.defineProperty(source, "k2", - {value: 20, enumerable: false, configurable: true}); - Object.assign(target, source); - assertEquals(undefined, target.k2); - assertEquals(undefined, target.k3); -})(); - -(function reconfigure_enumerable_source() { - var target = {set k1(v) { - Object.defineProperty(source, "k2", {value: 20, enumerable: true}); - }}; - var source = {k1:10}; - Object.defineProperty(source, "k2", - {value: 20, enumerable: false, configurable: true}); - Object.assign(target, source); - assertEquals(20, target.k2); -})(); - -(function propagate_assign_failure() { - var target = {set k1(v) { throw "fail" }}; - var source = {k1:10}; - assertThrows(()=>Object.assign(target, source)); -})(); - -(function propagate_read_failure() { - var target = {}; - var source = {get k1() { throw "fail" }}; - assertThrows(()=>Object.assign(target, source)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/object-literals-method.js b/implementation-contributed/v8/mjsunit/es6/object-literals-method.js deleted file mode 100644 index 90bc51ec03d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/object-literals-method.js +++ /dev/null @@ -1,312 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -(function TestBasics() { - var object = { - method() { - return 42; - } - }; - assertEquals(42, object.method()); -})(); - - -(function TestThis() { - var object = { - method() { - assertEquals(object, this); - } - }; - object.method(); -})(); - - -(function TestDescriptor() { - var object = { - method() { - return 42; - } - }; - - var desc = Object.getOwnPropertyDescriptor(object, 'method'); - assertTrue(desc.enumerable); - assertTrue(desc.configurable); - assertTrue(desc.writable); - assertEquals('function', typeof desc.value); - - assertEquals(42, desc.value()); -})(); - - -(function TestProto() { - var object = { - method() {} - }; - - assertEquals(Function.prototype, Object.getPrototypeOf(object.method)); -})(); - - -(function TestNotConstructable() { - var object = { - method() {} - }; - - assertThrows(function() { - new object.method; - }); -})(); - - -(function TestFunctionName() { - var object = { - method() {}, - 1() {}, - 2.0() {} - }; - var f = object.method; - assertEquals('method', f.name); - var g = object[1]; - assertEquals('1', g.name); - var h = object[2]; - assertEquals('2', h.name); -})(); - - -(function TestNoBinding() { - var method = 'local'; - var calls = 0; - var object = { - method() { - calls++; - assertEquals('local', method); - } - }; - object.method(); - assertEquals(1, calls); -})(); - - -(function TestNoPrototype() { - var object = { - method() {} - }; - var f = object.method; - assertFalse(f.hasOwnProperty('prototype')); - assertEquals(undefined, f.prototype); - - f.prototype = 42; - assertEquals(42, f.prototype); -})(); - - -(function TestNoRestrictedPropertiesStrict() { - var obj = { - method() { "use strict"; } - }; - assertFalse(obj.method.hasOwnProperty("arguments")); - assertThrows(function() { return obj.method.arguments; }, TypeError); - assertThrows(function() { obj.method.arguments = {}; }, TypeError); - - assertFalse(obj.method.hasOwnProperty("caller")); - assertThrows(function() { return obj.method.caller; }, TypeError); - assertThrows(function() { obj.method.caller = {}; }, TypeError); -})(); - - -(function TestNoRestrictedPropertiesSloppy() { - var obj = { - method() {} - }; - assertFalse(obj.method.hasOwnProperty("arguments")); - assertThrows(function() { return obj.method.arguments; }, TypeError); - assertThrows(function() { obj.method.arguments = {}; }, TypeError); - - assertFalse(obj.method.hasOwnProperty("caller")); - assertThrows(function() { return obj.method.caller; }, TypeError); - assertThrows(function() { obj.method.caller = {}; }, TypeError); -})(); - - -(function TestToString() { - var object = { - method() { 42; } - }; - assertEquals('method() { 42; }', object.method.toString()); -})(); - - -(function TestOptimized() { - var object = { - method() { return 42; } - }; - assertEquals(42, object.method()); - assertEquals(42, object.method()); - %OptimizeFunctionOnNextCall(object.method); - assertEquals(42, object.method()); - assertFalse(object.method.hasOwnProperty('prototype')); -})(); - - -/////////////////////////////////////////////////////////////////////////////// - - -var GeneratorFunction = function*() {}.__proto__.constructor; -var GeneratorPrototype = Object.getPrototypeOf(function*() {}).prototype; - - -function assertIteratorResult(value, done, result) { - assertEquals({value: value, done: done}, result); -} - - -(function TestGeneratorBasics() { - var object = { - *method() { - yield 1; - } - }; - var g = object.method(); - assertIteratorResult(1, false, g.next()); - assertIteratorResult(undefined, true, g.next()); -})(); - - -(function TestGeneratorThis() { - var object = { - *method() { - yield this; - } - }; - var g = object.method(); - assertIteratorResult(object, false, g.next()); - assertIteratorResult(undefined, true, g.next()); -})(); - - -(function TestGeneratorSymbolIterator() { - var object = { - *method() {} - }; - var g = object.method(); - assertEquals(g, g[Symbol.iterator]()); -})(); - - -(function TestGeneratorDescriptor() { - var object = { - *method() { - yield 1; - } - }; - - var desc = Object.getOwnPropertyDescriptor(object, 'method'); - assertTrue(desc.enumerable); - assertTrue(desc.configurable); - assertTrue(desc.writable); - assertEquals('function', typeof desc.value); - - var g = desc.value(); - assertIteratorResult(1, false, g.next()); - assertIteratorResult(undefined, true, g.next()); -})(); - - -(function TestGeneratorPrototypeDescriptor() { - var object = { - *method() {} - }; - - var desc = Object.getOwnPropertyDescriptor(object.method, 'prototype'); - assertFalse(desc.enumerable); - assertFalse(desc.configurable); - assertTrue(desc.writable); - assertEquals(GeneratorPrototype, Object.getPrototypeOf(desc.value)); -})(); - - -(function TestGeneratorProto() { - var object = { - *method() {} - }; - - assertEquals(GeneratorFunction.prototype, - Object.getPrototypeOf(object.method)); -})(); - - -(function TestGeneratorNotConstructable() { - var object = { - *method() { - yield 1; - } - }; - - assertThrows(()=>new object.method()); -})(); - - -(function TestGeneratorName() { - var object = { - *method() {}, - *1() {}, - *2.0() {} - }; - var f = object.method; - assertEquals('method', f.name); - var g = object[1]; - assertEquals('1', g.name); - var h = object[2]; - assertEquals('2', h.name); -})(); - - -(function TestGeneratorNoBinding() { - var method = 'local'; - var calls = 0; - var object = { - *method() { - calls++; - assertEquals('local', method); - } - }; - var g = object.method(); - assertIteratorResult(undefined, true, g.next()); - assertEquals(1, calls); -})(); - - -(function TestGeneratorToString() { - var object = { - *method() { yield 1; } - }; - assertEquals('*method() { yield 1; }', object.method.toString()); -})(); - - -(function TestProtoName() { - var object = { - __proto__() { - return 1; - } - }; - assertEquals(Object.prototype, Object.getPrototypeOf(object)); - assertEquals(1, object.__proto__()); -})(); - - -(function TestProtoName2() { - var p = {}; - var object = { - __proto__() { - return 1; - }, - __proto__: p - }; - assertEquals(p, Object.getPrototypeOf(object)); - assertEquals(1, object.__proto__()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/object-literals-property-shorthand.js b/implementation-contributed/v8/mjsunit/es6/object-literals-property-shorthand.js deleted file mode 100644 index f0ddd68d42a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/object-literals-property-shorthand.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function TestBasics() { - var x = 1; - var object = {x}; - assertEquals(1, object.x); -})(); - - -(function TestBasicsGetSet() { - var get = 1, set = 2; - var object = {get, set}; - assertEquals(1, object.get); - assertEquals(2, object.set); -})(); - - -(function TestDescriptor() { - var x = 1; - var object = {x}; - var descr = Object.getOwnPropertyDescriptor(object, 'x'); - assertEquals(1, descr.value); - assertTrue(descr.enumerable); - assertTrue(descr.writable); - assertTrue(descr.configurable); -})(); - - -(function TestNotDefined() { - 'use strict'; - assertThrows(function() { - return {notDefined}; - }, ReferenceError); -})(); - - -(function TestLet() { - var let = 1; - var object = {let}; - assertEquals(1, object.let); -})(); - - -(function TestYieldInFunction() { - var yield = 1; - var object = {yield}; - assertEquals(1, object.yield); -})(); - - -(function TestToString() { - function f(x) { return {x}; } - assertEquals('function f(x) { return {x}; }', f.toString()); -})(); - - -(function TestProtoName() { - var __proto__ = 1; - var object = { - __proto__ - }; - assertEquals(Object.prototype, Object.getPrototypeOf(object)); - assertEquals(1, object.__proto__); -})(); - - -(function TestProtoName2() { - var __proto__ = 1; - var p = {}; - var object = { - __proto__: p, - __proto__, - }; - assertEquals(p, Object.getPrototypeOf(object)); - assertEquals(1, object.__proto__); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/object-literals-super.js b/implementation-contributed/v8/mjsunit/es6/object-literals-super.js deleted file mode 100644 index b31a498767a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/object-literals-super.js +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -(function TestHomeObject() { - var object = { - method() { - return super.method(); - }, - get getter() { - return super.getter; - }, - set setter(v) { - super.setter = v; - }, - get accessor() { - return super.accessor; - }, - set accessor(v) { - super.accessor = v; - }, - - methodNoSuper() {}, - get getterNoSuper() {}, - set setterNoSuper(v) {}, - get accessorNoSuper() {}, - set accessorNoSuper(v) {}, - propertyNoSuper: function() {}, - propertyWithParenNoSuper: (function() {}), - propertyWithParensNoSuper: ((function() {})) - }; - - assertEquals(object, object.method[%HomeObjectSymbol()]); - var desc = Object.getOwnPropertyDescriptor(object, 'getter'); - assertEquals(object, desc.get[%HomeObjectSymbol()]); - desc = Object.getOwnPropertyDescriptor(object, 'setter'); - assertEquals(object, desc.set[%HomeObjectSymbol()]); - desc = Object.getOwnPropertyDescriptor(object, 'accessor'); - assertEquals(object, desc.get[%HomeObjectSymbol()]); - assertEquals(object, desc.set[%HomeObjectSymbol()]); - - assertEquals(undefined, object.methodNoSuper[%HomeObjectSymbol()]); - desc = Object.getOwnPropertyDescriptor(object, 'getterNoSuper'); - assertEquals(undefined, desc.get[%HomeObjectSymbol()]); - desc = Object.getOwnPropertyDescriptor(object, 'setterNoSuper'); - assertEquals(undefined, desc.set[%HomeObjectSymbol()]); - desc = Object.getOwnPropertyDescriptor(object, 'accessorNoSuper'); - assertEquals(undefined, desc.get[%HomeObjectSymbol()]); - assertEquals(undefined, desc.set[%HomeObjectSymbol()]); - assertEquals(undefined, object.propertyNoSuper[%HomeObjectSymbol()]); - assertEquals(undefined, object.propertyWithParenNoSuper[%HomeObjectSymbol()]); - assertEquals(undefined, - object.propertyWithParensNoSuper[%HomeObjectSymbol()]); -})(); - - -(function TestMethod() { - var object = { - __proto__: { - method(x) { - return 'proto' + x; - } - }, - method(x) { - return super.method(x); - } - }; - assertEquals('proto42', object.method(42)); -})(); - - -(function TestGetter() { - var object = { - __proto__: { - _x: 42, - get x() { - return 'proto' + this._x; - } - }, - get x() { - return super.x; - } - }; - assertEquals('proto42', object.x); -})(); - - -(function TestSetter() { - var object = { - __proto__: { - _x: 0, - set x(v) { - return this._x = v; - } - }, - set x(v) { - super.x = v; - } - }; - assertEquals(1, object.x = 1); - assertEquals(1, object._x); - assertEquals(0, Object.getPrototypeOf(object)._x); -})(); - - -(function TestOptimized() { - // Object literals without any accessors get optimized. - var object = { - method() { - return super.toString; - } - }; - assertEquals(Object.prototype.toString, object.method()); -})(); - - -(function TestConciseGenerator() { - var o = { - __proto__: { - m() { - return 42; - } - }, - *g() { - yield super.m(); - }, - }; - - assertEquals(42, o.g().next().value); -})(); - - -(function TestSuperPropertyInEval() { - var y = 3; - var p = { - m() { return 1; }, - get x() { return 2; } - }; - var o = { - __proto__: p, - evalM() { - assertEquals(1, eval('super.m()')); - }, - evalX() { - assertEquals(2, eval('super.x')); - }, - globalEval1() { - assertThrows('super.x', SyntaxError); - assertThrows('super.m()', SyntaxError); - }, - globalEval2() { - super.x; - assertThrows('super.x', SyntaxError); - assertThrows('super.m()', SyntaxError); - } - }; - o.evalM(); - o.evalX(); - o.globalEval1(); - o.globalEval2(); -})(); - - -(function TestSuperPropertyInArrow() { - var y = 3; - var p = { - m() { return 1; }, - get x() { return 2; } - }; - var o = { - __proto__: p, - arrow() { - assertSame(super.x, (() => super.x)()); - assertSame(super.m(), (() => super.m())()); - return (() => super.m())(); - } - }; - assertSame(1, o.arrow()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/object-tostring.js b/implementation-contributed/v8/mjsunit/es6/object-tostring.js deleted file mode 100644 index bc7d9681f89..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/object-tostring.js +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var global = this; - -var funs = { - Object: [ Object ], - Function: [ Function ], - Array: [ Array ], - String: [ String ], - Boolean: [ Boolean ], - Number: [ Number ], - Date: [ Date ], - RegExp: [ RegExp ], - Error: [ Error, TypeError, RangeError, SyntaxError, ReferenceError, - EvalError, URIError ] -}; -for (var f in funs) { - for (var i in funs[f]) { - - assertEquals("[object " + f + "]", - Object.prototype.toString.call(new funs[f][i]), - funs[f][i]); - assertEquals("[object Function]", - Object.prototype.toString.call(funs[f][i]), - funs[f][i]); - } -} - -function testToStringTag(className) { - // Using builtin toStringTags - var obj = {}; - obj[Symbol.toStringTag] = className; - assertEquals("[object " + className + "]", - Object.prototype.toString.call(obj)); - - // Getter throws - obj = {}; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { throw className; } - }); - assertThrowsEquals(function() { - Object.prototype.toString.call(obj); - }, className); - - // Getter does not throw - obj = {}; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { return className; } - }); - assertEquals("[object " + className + "]", - Object.prototype.toString.call(obj)); - - // Custom, non-builtin toStringTags - obj = {}; - obj[Symbol.toStringTag] = "X" + className; - assertEquals("[object X" + className + "]", - Object.prototype.toString.call(obj)); - - // With getter - obj = {}; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { return "X" + className; } - }); - assertEquals("[object X" + className + "]", - Object.prototype.toString.call(obj)); - - // Undefined toStringTag should return [object className] - var obj = className === "Arguments" ? - (function() { return arguments; })() : new global[className]; - obj[Symbol.toStringTag] = undefined; - assertEquals("[object " + className + "]", - Object.prototype.toString.call(obj)); - - // With getter - var obj = className === "Arguments" ? - (function() { return arguments; })() : new global[className]; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { return undefined; } - }); - assertEquals("[object " + className + "]", - Object.prototype.toString.call(obj)); -} - -[ - "Arguments", - "Array", - "Boolean", - "Date", - "Error", - "Function", - "Number", - "RegExp", - "String" -].forEach(testToStringTag); - -function testToStringTagNonString(value) { - var obj = {}; - obj[Symbol.toStringTag] = value; - assertEquals("[object Object]", Object.prototype.toString.call(obj)); - - // With getter - obj = {}; - Object.defineProperty(obj, Symbol.toStringTag, { - get: function() { return value; } - }); - assertEquals("[object Object]", Object.prototype.toString.call(obj)); -} - -[ - null, - function() {}, - [], - {}, - /regexp/, - 42, - Symbol("sym"), - new Date(), - (function() { return arguments; })(), - true, - new Error("oops"), - new String("str") -].forEach(testToStringTagNonString); - -function testObjectToStringPropertyDesc() { - var desc = Object.getOwnPropertyDescriptor(Object.prototype, "toString"); - assertTrue(desc.writable); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); -} -testObjectToStringPropertyDesc(); - -function testObjectToStringOnNonStringValue(obj) { - Object.defineProperty(obj, Symbol.toStringTag, { value: 1 }); - assertEquals("[object Object]", ({}).toString.call(obj)); -} -testObjectToStringOnNonStringValue({}); - - -// Proxies - -function assertTag(tag, obj) { - assertEquals("[object " + tag + "]", Object.prototype.toString.call(obj)); -} - -assertTag("Object", new Proxy({}, {})); -assertTag("Array", new Proxy([], {})); -assertTag("Function", new Proxy(() => 42, {})); -assertTag("Foo", new Proxy(() => 42, {get() {return "Foo"}})); -assertTag("Function", new Proxy(() => 42, {get() {return 666}})); - -var revocable = Proxy.revocable([], {}); -revocable.revoke(); -assertThrows(() => Object.prototype.toString.call(revocable.proxy), TypeError); - -var handler = {}; -revocable = Proxy.revocable([], handler); -// The first get() call, i.e., toString() revokes the proxy -handler.get = () => revocable.revoke(); -assertEquals("[object Array]", Object.prototype.toString.call(revocable.proxy)); -assertThrows(() => Object.prototype.toString.call(revocable.proxy), TypeError); - -revocable = Proxy.revocable([], handler); -handler.get = () => {revocable.revoke(); return "value";}; -assertEquals("[object value]", Object.prototype.toString.call(revocable.proxy)); -assertThrows(() => Object.prototype.toString.call(revocable.proxy), TypeError); - - -revocable = Proxy.revocable(function() {}, handler); -handler.get = () => revocable.revoke(); -assertEquals("[object Function]", Object.prototype.toString.call(revocable.proxy)); -assertThrows(() => Object.prototype.toString.call(revocable.proxy), TypeError); - -function* gen() { yield 1; } - -assertTag("GeneratorFunction", gen); -Object.defineProperty(gen, Symbol.toStringTag, {writable: true}); -gen[Symbol.toStringTag] = "different string"; -assertTag("different string", gen); -gen[Symbol.toStringTag] = 1; -assertTag("Function", gen); - -function overwriteToStringTagWithNonStringValue(tag, obj) { - assertTag(tag, obj); - - Object.defineProperty(obj, Symbol.toStringTag, { - configurable: true, - value: "different string" - }); - assertTag("different string", obj); - - testObjectToStringOnNonStringValue(obj); -} - -overwriteToStringTagWithNonStringValue("global", global); -overwriteToStringTagWithNonStringValue("Generator", gen()); - -var arrayBuffer = new ArrayBuffer(); -overwriteToStringTagWithNonStringValue("ArrayBuffer", arrayBuffer); -overwriteToStringTagWithNonStringValue("DataView", new DataView(arrayBuffer)); - -overwriteToStringTagWithNonStringValue("Int8Array", new Int8Array()); -overwriteToStringTagWithNonStringValue("Uint8Array", new Uint8Array()); -overwriteToStringTagWithNonStringValue("Uint8ClampedArray", - new Uint8ClampedArray()); -overwriteToStringTagWithNonStringValue("Int16Array", new Int16Array()); -overwriteToStringTagWithNonStringValue("Uint16Array", new Uint16Array()); -overwriteToStringTagWithNonStringValue("Int32Array", new Int32Array()); -overwriteToStringTagWithNonStringValue("Uint32Array", new Uint32Array()); -overwriteToStringTagWithNonStringValue("Float32Array", new Float32Array()); -overwriteToStringTagWithNonStringValue("Float64Array", new Float64Array()); - -var set = new Set(); -var map = new Map(); - -overwriteToStringTagWithNonStringValue("Set", set); -overwriteToStringTagWithNonStringValue("Map", map); - -overwriteToStringTagWithNonStringValue("Set Iterator", set[Symbol.iterator]()); -overwriteToStringTagWithNonStringValue("Map Iterator", map[Symbol.iterator]()); - -overwriteToStringTagWithNonStringValue("WeakSet", new WeakSet()); -overwriteToStringTagWithNonStringValue("WeakMap", new WeakMap()); - -overwriteToStringTagWithNonStringValue("Promise", new Promise(function() {})); diff --git a/implementation-contributed/v8/mjsunit/es6/pattern-brand-check.js b/implementation-contributed/v8/mjsunit/es6/pattern-brand-check.js deleted file mode 100644 index 2e3229481f7..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/pattern-brand-check.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function createNonRegExp(calls) { - return { - get [Symbol.match]() { - calls.push("@@match"); - return undefined; - }, - get [Symbol.replace]() { - calls.push("@@replace"); - return undefined; - }, - get [Symbol.search]() { - calls.push("@@search"); - return undefined; - }, - get [Symbol.split]() { - calls.push("@@split"); - return undefined; - }, - [Symbol.toPrimitive]() { - calls.push("@@toPrimitive"); - return ""; - } - }; -} - -(function testStringMatchBrandCheck() { - var calls = []; - "".match(createNonRegExp(calls)); - assertEquals(["@@match", "@@toPrimitive"], calls); -})(); - -(function testStringSearchBrandCheck() { - var calls = []; - "".search(createNonRegExp(calls)); - assertEquals(["@@search", "@@toPrimitive"], calls); -})(); - -(function testStringSplitBrandCheck() { - var calls = []; - "".split(createNonRegExp(calls)); - assertEquals(["@@split", "@@toPrimitive"], calls); -})(); - -(function testStringReplaceBrandCheck() { - var calls = []; - "".replace(createNonRegExp(calls), ""); - assertEquals(["@@replace", "@@toPrimitive"], calls); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/promise-all-overflow-1.js b/implementation-contributed/v8/mjsunit/es6/promise-all-overflow-1.js deleted file mode 100644 index 1a1cb4b61b4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/promise-all-overflow-1.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -load('test/mjsunit/test-async.js'); - -// Make sure we properly throw a RangeError when overflowing the maximum -// number of elements for Promise.all, which is capped at 2^21 bits right -// now, since we store the indices as identity hash on the resolve element -// closures. -const a = new Array(2 ** 21 - 1); -const p = Promise.resolve(1); -for (let i = 0; i < a.length; ++i) a[i] = p; -testAsync(assert => { - assert.plan(1); - Promise.all(a).then(assert.unreachable, reason => { - assert.equals(true, reason instanceof RangeError); - }); -}); diff --git a/implementation-contributed/v8/mjsunit/es6/promise-all-overflow-2.js b/implementation-contributed/v8/mjsunit/es6/promise-all-overflow-2.js deleted file mode 100644 index 61d0bd9ce5f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/promise-all-overflow-2.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -load('test/mjsunit/test-async.js'); - -// Test that pre-allocation of the result array works even if it needs to be -// allocated in large object space. -const a = new Array(64 * 1024); -a.fill(Promise.resolve(1)); -testAsync(assert => { - assert.plan(1); - Promise.all(a).then(b => { - assert.equals(a.length, b.length); - }); -}); diff --git a/implementation-contributed/v8/mjsunit/es6/promise-all.js b/implementation-contributed/v8/mjsunit/es6/promise-all.js deleted file mode 100644 index 3a0980d4253..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/promise-all.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -load('test/mjsunit/test-async.js'); - -// We store the index in the hash code field of the Promise.all resolve -// element closures, so make sure we properly handle the cases where this -// magical field turns into a PropertyArray later. -(function() { - class MyPromise extends Promise { - then(resolve, reject) { - this.resolve = resolve; - } - }; - const myPromise = new MyPromise(() => {}); - MyPromise.all([myPromise]); - myPromise.resolve.x = 1; - myPromise.resolve(1); -})(); - -// Same test as above, but for PropertyDictionary. -(function() { - class MyPromise extends Promise { - then(resolve, reject) { - this.resolve = resolve; - } - }; - const myPromise = new MyPromise(() => {}); - MyPromise.all([myPromise]); - for (let i = 0; i < 1025; ++i) { - myPromise.resolve[`x${i}`] = i; - } - myPromise.resolve(1); -})(); - -// Test that we return a proper array even if (custom) "then" invokes the -// resolve callbacks right away. -(function() { - class MyPromise extends Promise { - constructor(executor, id) { - super(executor); - this.id = id; - } - - then(resolve, reject) { - if (this.id) return resolve(this.id); - return super.then(resolve, reject) - } - }; - const a = new MyPromise(() => {}, 'a'); - const b = new MyPromise(() => {}, 'b'); - testAsync(assert => { - assert.plan(1); - MyPromise.all([a, b]).then( - v => assert.equals(['a', 'b'], v), - assert.unexpectedRejection()); - }); -})(); - -// Test that we properly handle holes introduced into the resulting array -// by resolving some late elements immediately. -(function() { - class MyPromise extends Promise { - then(resolve, reject) { - if (this.immediately) { - resolve(42); - } else { - super.then(resolve, reject); - } - } - }; - const a = new Array(1024); - a.fill(MyPromise.resolve(1)); - const p = MyPromise.resolve(0); - p.immediately = true; - a.push(p); - testAsync(assert => { - assert.plan(1); - MyPromise.all(a).then( - b => assert.equals(42, b[1024]), - assert.unexpectedRejection()); - }); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/promise-internal-setter.js b/implementation-contributed/v8/mjsunit/es6/promise-internal-setter.js deleted file mode 100644 index bf0045a98bd..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/promise-internal-setter.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -Object.defineProperties(Object.prototype, { - promise: {set: assertUnreachable}, - reject: {set: assertUnreachable}, - resolve: {set: assertUnreachable}, -}); - -class P extends Promise {} - -P.all([Promise.resolve('ok')]); -P.race([Promise.resolve('ok')]); diff --git a/implementation-contributed/v8/mjsunit/es6/promise-lookup-getter-setter.js b/implementation-contributed/v8/mjsunit/es6/promise-lookup-getter-setter.js deleted file mode 100644 index c08bfa762bb..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/promise-lookup-getter-setter.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let get = () => {}; -let set = () => {}; -let target = {}; -let handler = { - getOwnPropertyDescriptor(target, prop) { - let configurable = true; - if (prop == "both") { - return { get, set, configurable }; - } else if (prop == "get") { - return { get, configurable }; - } else if (prop == "set") { - return { set, configurable }; - } else if (prop == "data") { - return { value: 42, configurable }; - } else { - return Reflect.getOwnPropertyDescriptor(target, prop); - } - } -}; - -// Test behavior on own properties. -let proxy = new Proxy(target, handler); -assertSame(get, proxy.__lookupGetter__("both")); -assertSame(get, proxy.__lookupGetter__("get")); -assertSame(undefined, proxy.__lookupGetter__("set")); -assertSame(undefined, proxy.__lookupGetter__("data")); -assertSame(set, proxy.__lookupSetter__("both")); -assertSame(undefined, proxy.__lookupSetter__("get")); -assertSame(set, proxy.__lookupSetter__("set")); -assertSame(undefined, proxy.__lookupSetter__("data")); - -// Test behavior on the prototype chain. -let object = { __proto__: proxy }; -assertSame(get, object.__lookupGetter__("both")); -assertSame(get, object.__lookupGetter__("get")); -assertSame(undefined, object.__lookupGetter__("set")); -assertSame(undefined, object.__lookupGetter__("data")); -assertSame(set, object.__lookupSetter__("both")); -assertSame(undefined, object.__lookupSetter__("get")); -assertSame(set, object.__lookupSetter__("set")); -assertSame(undefined, object.__lookupSetter__("data")); - -// Test being shadowed while on prototype chain. -let shadower = { __proto__: proxy, both: 1, get: 2, set: 3, data: 4 }; -assertSame(undefined, shadower.__lookupGetter__("both")); -assertSame(undefined, shadower.__lookupGetter__("get")); -assertSame(undefined, shadower.__lookupGetter__("set")); -assertSame(undefined, shadower.__lookupGetter__("data")); -assertSame(undefined, shadower.__lookupSetter__("both")); -assertSame(undefined, shadower.__lookupSetter__("get")); -assertSame(undefined, shadower.__lookupSetter__("set")); -assertSame(undefined, shadower.__lookupSetter__("data")); - -// Test getPrototypeOf trap. -let getFoo = () => {}; -let setFoo = () => {}; -let proto = {}; -Reflect.defineProperty(proto, "foo", { get: getFoo, set: setFoo }); -Reflect.setPrototypeOf(target, proto); -assertSame(getFoo, proxy.__lookupGetter__("foo")); -assertSame(setFoo, proxy.__lookupSetter__("foo")); -handler.getPrototypeOf = () => null; -assertSame(undefined, proxy.__lookupGetter__("foo")); -assertSame(undefined, proxy.__lookupSetter__("foo")); -handler.getPrototypeOf = () => proto; -assertSame(getFoo, proxy.__lookupGetter__("foo")); -assertSame(setFoo, proxy.__lookupSetter__("foo")); - -// Test shadowing the prototype. -Reflect.defineProperty(proto, "data", { get: getFoo, set: setFoo }); -assertSame(undefined, proxy.__lookupGetter__("data")); -assertSame(undefined, proxy.__lookupSetter__("data")); diff --git a/implementation-contributed/v8/mjsunit/es6/promise-resolve-thenable-job.js b/implementation-contributed/v8/mjsunit/es6/promise-resolve-thenable-job.js deleted file mode 100644 index 70ab6cda962..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/promise-resolve-thenable-job.js +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - let resolve; - let onFulfilledValue; - const p = new Promise(r => resolve = r); - resolve(Promise.resolve(1)); - p.then( - v => { - onFulfilledValue = v; - }, - e => { - assertUnreachable(); - }); - setTimeout(_ => assertEquals(1, onFulfilledValue)); -})(); - -(function() { - let resolve; - let onRejectedReason; - const p = new Promise(r => resolve = r); - resolve(Promise.reject(1)); - p.then( - v => { - assertUnreachable(); - }, - e => { - onRejectedReason = e; - }); - setTimeout(_ => assertEquals(1, onRejectedReason)); -})(); - -(function() { - let onFulfilledValue; - (async () => Promise.resolve(1))().then( - v => { - onFulfilledValue = v; - }, - e => { - assertUnreachable(); - }); - setTimeout(_ => assertEquals(1, onFulfilledValue)); -})(); - -(function() { - let onRejectedReason; - (async () => Promise.reject(1))().then( - v => { - assertUnreachable(); - }, - e => { - onRejectedReason = e; - }); - setTimeout(_ => assertEquals(1, onRejectedReason)); -})(); - -(function() { - let resolve; - let onFulfilledValue; - const p = new Promise(r => resolve = r); - resolve({ - then(onFulfilled, onRejected) { - onFulfilled(1); - } - }); - p.then( - v => { - onFulfilledValue = v; - }, - e => { - assertUnreachable(); - }); - setTimeout(_ => assertEquals(1, onFulfilledValue)); -})(); - -(function() { - let resolve; - let onRejectedReason; - const p = new Promise(r => resolve = r); - resolve({ - then(onFulfilled, onRejected) { - onRejected(1); - } - }); - p.then( - v => { - assertUnreachable(); - }, - e => { - onRejectedReason = e; - }); - setTimeout(_ => assertEquals(1, onRejectedReason)); -})(); - -(function() { - let onFulfilledValue; - (async () => ({ - then(onFulfilled, onRejected) { - onFulfilled(1); - } - }))().then( - v => { - onFulfilledValue = v; - }, - e => { - assertUnreachable(); - }); - setTimeout(_ => assertEquals(1, onFulfilledValue)); -})(); - -(function() { - let onRejectedReason; - (async () => ({ - then(onFulfilled, onRejected) { - onRejected(1); - } - }))().then( - v => { - assertUnreachable(); - }, - e => { - onRejectedReason = e; - }); - setTimeout(_ => assertEquals(1, onRejectedReason)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/promise-species.js b/implementation-contributed/v8/mjsunit/es6/promise-species.js deleted file mode 100644 index f6f2e7a1b5c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/promise-species.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test that Promises use @@species appropriately - -// Another constructor with no species will not be instantiated -var test = new Promise(function(){}); -var bogoCount = 0; -function bogusConstructor() { bogoCount++; } -test.constructor = bogusConstructor; -assertTrue(Promise.resolve(test) instanceof Promise); -assertFalse(Promise.resolve(test) instanceof bogusConstructor); -// Tests that chromium:575314 is fixed thoroughly -Promise.resolve(test).catch(e => %AbortJS("Error " + e)).then(() => { - if (bogoCount != 0) %AbortJS("bogoCount was " + bogoCount + " should be 0"); -}); - -// If there is a species, it will be instantiated -// @@species will be read exactly once, and the constructor is called with a -// function -var count = 0; -var params; -class MyPromise extends Promise { - constructor(...args) { - super(...args); - params = args; - } - static get [Symbol.species]() { - count++ - return this; - } -} - -var myPromise = MyPromise.resolve().then(); -assertEquals(1, count); -assertEquals(1, params.length); -assertEquals('function', typeof(params[0])); -assertTrue(myPromise instanceof MyPromise); -assertTrue(myPromise instanceof Promise); diff --git a/implementation-contributed/v8/mjsunit/es6/promise-thenable-proxy.js b/implementation-contributed/v8/mjsunit/es6/promise-thenable-proxy.js deleted file mode 100644 index 4849639a5b4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/promise-thenable-proxy.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertAsync(b, s) { - if (!b) { - %AbortJS(" FAILED!") - } -} - -var handler = { - get: function(target, name) { - if (name === 'then') { - return (val) => Promise.prototype.then.call(target, val); - } - } -}; - -var target = new Promise(r => r(42)); -var p = new Proxy(target, handler); -Promise.resolve(p).then((val) => assertAsync(val === 42)); diff --git a/implementation-contributed/v8/mjsunit/es6/prototype-ordinary-objects.js b/implementation-contributed/v8/mjsunit/es6/prototype-ordinary-objects.js deleted file mode 100644 index 7b08a72d4fb..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/prototype-ordinary-objects.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -var funcs = [ - - // https://code.google.com/p/v8/issues/detail?id=4002 - // Error, - // EvalError, - // RangeError, - // ReferenceError, - // SyntaxError, - // TypeError, - // URIError, - - // https://code.google.com/p/v8/issues/detail?id=4003 - // RegExp, - - // https://code.google.com/p/v8/issues/detail?id=4004 - // Date, - - // https://code.google.com/p/v8/issues/detail?id=4006 - // String, - - // Boolean, - // Number, - // https://code.google.com/p/v8/issues/detail?id=4001 - - ArrayBuffer, - DataView, - Float32Array, - Float64Array, - Int16Array, - Int32Array, - Int8Array, - Map, - Object, - Promise, - // Proxy, - Set, - Symbol, - Uint16Array, - Uint32Array, - Uint8Array, - Uint8ClampedArray, - WeakMap, - WeakSet, -]; - -for (var fun of funcs) { - var p = fun.prototype; - - // @@toStringTag is tested separately, and interferes with this test. - if (Symbol.toStringTag) delete p[Symbol.toStringTag]; - assertEquals('[object Object]', Object.prototype.toString.call(p)); -} - - -// These still have special prototypes for legacy reason. -var funcs = [ - Array, - Function, -]; - -for (var fun of funcs) { - var p = fun.prototype; - assertEquals(`[object ${fun.name}]`, Object.prototype.toString.call(p)); -} diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-accesschecks.js b/implementation-contributed/v8/mjsunit/es6/proxies-accesschecks.js deleted file mode 100644 index f5b90dcb083..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-accesschecks.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var realm = Realm.create(); - -this.__proto__ = new Proxy({}, { - getPrototypeOf() { assertUnreachable() }, - get() { assertUnreachable() } -}); - -var other_type_error = Realm.eval(realm, "TypeError"); -assertThrows(() => Realm.eval(realm, "Realm.global(0).foo"), other_type_error); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-apply.js b/implementation-contributed/v8/mjsunit/es6/proxies-apply.js deleted file mode 100644 index d42353a792c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-apply.js +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testNonCallable() { - var proxy = new Proxy({},{}); - assertThrows(function(){ proxy() }, TypeError); - - var proxy2 = new Proxy(proxy, {}); - assertThrows(function(){ proxy2() }, TypeError); -})(); - -(function testCallProxyFallbackNoArguments() { - var called = false; - var target = function() { - called = true; - } - var proxy = new Proxy(target, {}); - assertFalse(called); - proxy(); - assertTrue(called); - - called = false; - var proxy2 = new Proxy(proxy, {}); - assertFalse(called); - proxy2(); - assertTrue(called); -})(); - -(function testCallProxyFallback1Argument() { - var called = false; - var target = function(a) { - called = true; - assertEquals('1', a); - } - var proxy = new Proxy(target, {}); - assertFalse(called); - proxy('1'); - assertTrue(called); -})(); - -(function testCallProxyFallback2Arguments() { - var called = false; - var target = function(a, b) { - called = true; - assertEquals('1', a); - assertEquals('2', b); - } - var proxy = new Proxy(target, {}); - assertFalse(called); - proxy('1', '2'); - assertTrue(called); -})(); - -(function testCallProxyFallbackChangedReceiver() { - var apply_receiver = {receiver:true}; - var seen_receiver = undefined; - var target = function() { - seen_receiver = this; - } - var proxy = new Proxy(target, {}); - assertEquals(undefined, seen_receiver); - Reflect.apply(proxy, apply_receiver, [1,2,3,4]); - assertSame(apply_receiver, seen_receiver); -})(); - -(function testCallProxyTrap() { - var called_target = false; - var called_handler = false; - var target = function(a, b) { - called_target = true; - assertEquals(1, a); - assertEquals(2, b); - } - var handler = { - apply: function(target, this_arg, args) { - target.apply(this_arg, args); - called_handler = true; - } - } - var proxy = new Proxy(target, handler); - assertFalse(called_target); - assertFalse(called_handler); - Reflect.apply(proxy, {rec:1}, [1,2]); - assertTrue(called_target); - assertTrue(called_handler); -})(); - -(function testCallProxyTrapArrayArg() { - var called_target = false; - var called_handler = false; - var target = function(a, b) { - called_target = true; - assertArrayEquals([1, 2], a); - assertEquals(3, b); - } - var handler = { - apply: function(target, this_arg, args) { - target.apply(this_arg, args); - called_handler = true; - } - } - var proxy = new Proxy(target, handler); - assertFalse(called_target); - assertFalse(called_handler); - proxy([1,2], 3); - assertTrue(called_target); - assertTrue(called_handler); -})(); - -(function testCallProxyTrapObjectArg() { - var called_target = false; - var called_handler = false; - var target = function(o) { - called_target = true; - assertEquals({a: 1, b: 2}, o); - } - var handler = { - apply: function(target, this_arg, args) { - target.apply(this_arg, args); - called_handler = true; - } - } - var proxy = new Proxy(target, handler); - assertFalse(called_target); - assertFalse(called_handler); - proxy({a: 1, b: 2}); - assertTrue(called_target); - assertTrue(called_handler); -})(); - -(function testCallProxyTrapGeneratorArg() { - function* gen() { - yield 1; - yield 2; - yield 3; - } - var called_target = false; - var called_handler = false; - var target = function(g) { - called_target = true; - assertArrayEquals([1,2,3], [...g]); - } - var handler = { - apply: function(target, this_arg, args) { - target.apply(this_arg, args); - called_handler = true; - } - } - var proxy = new Proxy(target, handler); - assertFalse(called_target); - assertFalse(called_handler); - proxy(gen()); - assertTrue(called_target); - assertTrue(called_handler); -})(); - -(function testProxyTrapContext() { - var _target, _args, _handler, _context; - var target = function(a, b) { return a + b; }; - var handler = { - apply: function(t, c, args) { - _handler = this; - _target = t; - _context = c; - _args = args; - } - }; - var proxy = new Proxy(target, handler); - - var context = {}; - - proxy.call(context, 1, 2); - - assertEquals(_handler, handler); - assertEquals(_target, target); - assertEquals(_context, context); - assertEquals(_args.length, 2); - assertEquals(_args[0], 1); - assertEquals(_args[1], 2); -})(); - -(function testCallProxyNonCallableTrap() { - var called_target = false; - var target = function() { - called_target = true; - }; - var handler = { - apply: 'non callable trap' - }; - - var proxy = new Proxy(target, handler); - assertThrows(function(){ proxy() }, TypeError); - - assertFalse(called_target); -})(); - -(function testCallProxyNullTrap() { - var _args; - var target = function(a, b) { - _args = [a, b]; - return a + b; - }; - var handler = { - apply: null - }; - - var proxy = new Proxy(target, handler); - var result = proxy(1, 2); - - assertEquals(result, 3); - assertEquals(_args.length, 2); - assertEquals(_args[0], 1); - assertEquals(_args[1], 2); -})(); - -(function testCallProxyNonCallableTarget() { - var values = [NaN, 1.5, 100, /RegExp/, "string", {}, [], Symbol(), - new Map(), new Set(), new WeakMap(), new WeakSet()]; - values.forEach(target => { - target = Object(target); - var proxy = new Proxy(target, { apply() { assertUnreachable(); } }); - assertThrows(() => { proxy(); }, TypeError); - assertThrows(() => { ({ proxy }).proxy(); }, TypeError); - assertThrows(() => { Reflect.apply(proxy, null, []); }, TypeError); - assertThrows(() => { Reflect.apply(proxy, { proxy }, []); }, TypeError); - assertThrows(() => { - Function.prototype.call.apply(proxy, [null]); - }, TypeError); - assertThrows(() => { - Function.prototype.apply.apply(proxy, [null, []]); - }, TypeError); - - var proxy_to_proxy = new Proxy(proxy, { apply() { assertUnreachable(); } }); - assertThrows(() => { proxy_to_proxy(); }, TypeError); - assertThrows(() => { ({ proxy_to_proxy }).proxy_to_proxy(); }, TypeError); - assertThrows(() => { Reflect.apply(proxy_to_proxy, null, []); }, TypeError); - assertThrows(() => { Reflect.apply(proxy_to_proxy, { proxy }, []); }, - TypeError); - assertThrows(() => { - Function.prototype.call.apply(proxy_to_proxy, [null]); - }, TypeError); - assertThrows(() => { - Function.prototype.apply.apply(proxy_to_proxy, [null, []]); - }, TypeError); - }); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-bind.js b/implementation-contributed/v8/mjsunit/es6/proxies-bind.js deleted file mode 100644 index 83876a00c33..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-bind.js +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Tests the interaction of Function.prototype.bind with proxies. - - -// (Helper) - -var log = []; -var logger = {}; -var handler = new Proxy({}, logger); - -logger.get = function(t, trap, r) { - return function() { - log.push([trap, ...arguments]); - return Reflect[trap](...arguments); - } -}; - - -// Simple case - -var target = function(a, b, c) { "use strict"; return this }; -var proxy = new Proxy(target, handler); -var this_value = Symbol(); - -log.length = 0; -result = Function.prototype.bind.call(proxy, this_value, "foo"); -assertEquals(2, result.length); -assertEquals(target.__proto__, result.__proto__); -assertEquals(this_value, result()); -assertEquals(5, log.length); -for (var i in log) assertSame(target, log[i][1]); -assertEquals(["getPrototypeOf", target], log[0]); -assertEquals(["getOwnPropertyDescriptor", target, "length"], log[1]); -assertEquals(["get", target, "length", proxy], log[2]); -assertEquals(["get", target, "name", proxy], log[3]); -assertEquals(["apply", target, this_value, ["foo"]], log[4]); -assertEquals(new target(), new result()); - - -// Custom prototype - -log.length = 0; -target.__proto__ = {radio: "gaga"}; -result = Function.prototype.bind.call(proxy, this_value, "foo"); -assertEquals(2, result.length); -assertSame(target.__proto__, result.__proto__); -assertEquals(this_value, result()); -assertEquals(5, log.length); -for (var i in log) assertSame(target, log[i][1]); -assertEquals(["getPrototypeOf", target], log[0]); -assertEquals(["getOwnPropertyDescriptor", target, "length"], log[1]); -assertEquals(["get", target, "length", proxy], log[2]); -assertEquals(["get", target, "name", proxy], log[3]); -assertEquals(["apply", target, this_value, ["foo"]], log[4]); - - -// Custom length - -handler = { - get() {return 42}, - getOwnPropertyDescriptor() {return {configurable: true}} -}; -proxy = new Proxy(target, handler); - -result = Function.prototype.bind.call(proxy, this_value, "foo"); -assertEquals(41, result.length); -assertEquals(this_value, result()); - - -// Long length - -handler = { - get() {return Math.pow(2, 100)}, - getOwnPropertyDescriptor() {return {configurable: true}} -}; -proxy = new Proxy(target, handler); - -result = Function.prototype.bind.call(proxy, this_value, "foo"); -assertEquals(Math.pow(2, 100) - 1, result.length); -assertEquals(this_value, result()); - - -// Very long length - -handler = { - get() {return 1/0}, - getOwnPropertyDescriptor() {return {configurable: true}} -}; -proxy = new Proxy(target, handler); - -result = Function.prototype.bind.call(proxy, this_value, "foo"); -assertEquals(1/0, result.length); -assertEquals(this_value, result()); - - -// Non-integer length - -handler = { - get() {return 4.2}, - getOwnPropertyDescriptor() {return {configurable: true}} -}; -proxy = new Proxy(target, handler); - -result = Function.prototype.bind.call(proxy, this_value, "foo"); -assertEquals(3, result.length); -assertEquals(this_value, result()); - - -// Undefined length - -handler = { - get() {}, - getOwnPropertyDescriptor() {return {configurable: true}} -}; -proxy = new Proxy(target, handler); - -result = Function.prototype.bind.call(proxy, this_value, "foo"); -assertEquals(0, result.length); -assertEquals(this_value, result()); - - -// Non-callable - -assertThrows(() => Function.prototype.bind.call(new Proxy({}, {})), TypeError); -assertThrows(() => Function.prototype.bind.call(new Proxy([], {})), TypeError); - - -// Non-constructable - -result = Function.prototype.bind.call(() => 42, this_value, "foo"); -assertEquals(42, result()); -assertThrows(() => new result()); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-construct.js b/implementation-contributed/v8/mjsunit/es6/proxies-construct.js deleted file mode 100644 index 5d78e5b3e14..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-construct.js +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testNonConstructable() { - var proxy = new Proxy({},{}); - assertThrows(function(){ new proxy() }, TypeError); - - var proxy2 = new Proxy(proxy, {}); - assertThrows(function(){ proxy2() }, TypeError); -})(); - -(function testFailingConstructRevoked() { - var pair = Proxy.revocable(Array, {}); - var instance = new pair.proxy(); - pair.revoke(); - assertThrows(function(){ new pair.proxy() }, TypeError); -})(); - -(function testFailingGetTrap() { - var handler = { - get() { - throw TypeError(); - } - } - var proxy = new Proxy({},{}); - var proxy2 = new Proxy({}, proxy); - assertThrows(function(){ new proxy2() }, TypeError); -})(); - -(function testConstructFallback() { - var called = false; - function Target() { - called = true; - this.property1 = 'value1'; - }; - Target.prototype = {}; - var proxy = new Proxy(Target, {}); - - assertFalse(called); - var instance = new proxy(); - assertTrue(called); - assertEquals('value1', instance.property1); - assertSame(Target.prototype, Reflect.getPrototypeOf(instance)); - - var proxy2 = new Proxy(proxy, {}); - called = false; - var instance2 = new proxy2(); - assertTrue(called); - assertEquals('value1', instance2.property1); - assertSame(Target.prototype, Reflect.getPrototypeOf(instance)); -})(); - -(function testConstructTrapDirectReturn() { - function Target(a, b) { - this.sum = a + b; - }; - var handler = { - construct(t, c, args) { - return { sum: 42 }; - } - }; - var proxy = new Proxy(Target, handler); - assertEquals(42, (new proxy(1, 2)).sum); -})(); - -(function testConstructTrap() { - function Target(arg1, arg2) { - this.arg1 = arg1; - this.arg2 = arg2; - } - var seen_target, seen_arguments, seen_new_target; - var handler = { - construct(target, args, new_target) { - seen_target = target; - seen_arguments = args; - seen_new_target = new_target; - return Reflect.construct(target, args, new_target); - } - } - var proxy = new Proxy(Target, handler); - var instance = new proxy('a', 'b'); - assertEquals(Target, seen_target); - assertEquals(['a','b'], seen_arguments); - assertEquals(proxy, seen_new_target); - assertEquals('a', instance.arg1); - assertEquals('b', instance.arg2); - - var instance2 = Reflect.construct(proxy, ['a1', 'b1'], Array); - assertEquals(Target, seen_target); - assertEquals(['a1', 'b1'], seen_arguments); - assertEquals(Array, seen_new_target); - assertEquals('a1', instance2.arg1); - assertEquals('b1', instance2.arg2); -})(); - -(function testConstructTrapNonConstructor() { - function target() { - }; - var p = new Proxy(target, { - construct: function() { - return 0; - } - }); - - assertThrows(function() { - new p(); - }, TypeError); -})(); - -(function testConstructCrossRealm() { - var realm1 = Realm.create(); - var handler = { - construct(target, args, new_target) { - return args; - } - }; - var OtherProxy = Realm.eval(realm1, "Proxy"); - var otherArrayPrototype = Realm.eval(realm1, 'Array.prototype'); - - // Proxy and handler are from this realm. - var proxy = new Proxy(Array, handler); - var result = new proxy(); - assertSame(Array.prototype, Reflect.getPrototypeOf(result)); - - // Proxy is from this realm, handler is from realm1. - var otherProxy = new OtherProxy(Array, handler); - var otherResult = new otherProxy(); - assertSame(Array.prototype, Reflect.getPrototypeOf(otherResult)); - - // Proxy and handler are from realm1. - var otherProxy2 = Realm.eval(realm1, 'new Proxy('+ - 'Array, { construct(target, args, new_target) { return args }} )'); - var otherResult2 = new otherProxy2(); - assertSame(Array.prototype, Reflect.getPrototypeOf(otherResult2)); -})(); - -(function testReflectConstructCrossReal() { - var realm1 = Realm.create(); - var realm2 = Realm.create(); - var realm3 = Realm.create(); - var realm4 = Realm.create(); - - var argsRealm1 = Realm.eval(realm1, '[]'); - var ProxyRealm2 = Realm.eval(realm2, 'Proxy'); - var constructorRealm3 = Realm.eval(realm3, '(function(){})'); - var handlerRealm4 = Realm.eval(realm4, - '({ construct(target, args, new_target) {return args} })'); - - var proxy = new ProxyRealm2(constructorRealm3, handlerRealm4); - - // Check that the arguments array returned by handlerRealm4 is created in the - // realm of the Reflect.construct function. - var result = Reflect.construct(proxy, argsRealm1); - assertSame(Array.prototype, Reflect.getPrototypeOf(result)); - - var ReflectConstructRealm1 = Realm.eval(realm1, 'Reflect.construct'); - var result2 = ReflectConstructRealm1(proxy, argsRealm1); - assertSame(Realm.eval(realm1, 'Array.prototype'), - Reflect.getPrototypeOf(result2)); - - var result3 = ReflectConstructRealm1(proxy, []); - assertSame(Realm.eval(realm1, 'Array.prototype'), - Reflect.getPrototypeOf(result3)); - - var ReflectConstructRealm2 = Realm.eval(realm2, 'Reflect.construct'); - var result4 = ReflectConstructRealm2(proxy, argsRealm1); - assertSame(Realm.eval(realm2, 'Array.prototype'), - Reflect.getPrototypeOf(result4)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-constructor.js b/implementation-contributed/v8/mjsunit/es6/proxies-constructor.js deleted file mode 100644 index 5b30725a522..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-constructor.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function testNonObjectTargetTypes() { - assertThrows(function(){ new Proxy(undefined, {}); }, TypeError); - - assertThrows(function(){ new Proxy(null, {}); }, TypeError); - - assertThrows(function(){ new Proxy('', {}); }, TypeError); - - assertThrows(function(){ new Proxy(0, {}); }, TypeError); - - assertThrows(function(){ new Proxy(0.5, {}); }, TypeError); - - assertThrows(function(){ new Proxy(false, {}); }, TypeError); -})(); - - -(function testRevokedTarget() { - var revocable = Proxy.revocable({}, {}); - revocable.revoke(); - - assertThrows(function(){ new Proxy(revocable.proxy, {}); }, TypeError); -})(); - - -(function testNonObjectHandlerTypes() { - assertThrows(function(){ new Proxy({}, undefined); }, TypeError); - - assertThrows(function(){ new Proxy({}, null); }, TypeError); - - assertThrows(function(){ new Proxy({}, ''); }, TypeError); - - assertThrows(function(){ new Proxy({}, 0); }, TypeError); - - assertThrows(function(){ new Proxy({}, 0.5); }, TypeError); - - assertThrows(function(){ new Proxy({}, false); }, TypeError); -})(); - - -(function testRevokedHandler() { - var revocable = Proxy.revocable({}, {}); - revocable.revoke(); - - assertThrows(function(){ new Proxy({}, revocable.proxy); }, TypeError); -})(); - - -(function testConstructionWithoutArguments() { - assertThrows(function(){ new Proxy(); }, TypeError); - - assertThrows(function(){ new Proxy(42); }, TypeError); - - assertThrows(function(){ new Proxy({}); }, TypeError); -})(); - - -(function testConstructionFromArray() { - var p = new Proxy([42], {}); - assertTrue(p instanceof Array); - assertEquals(p[0], 42); -})(); - - -(function testConstructionFromObject() { - var p = new Proxy({ - prop: 42 - }, {}); - assertTrue(p instanceof Object); - assertEquals(p.prop, 42); -})(); - - -(function testConstructionFromCallable() { - var p = new Proxy(() => { return 42; }, {}); - assertTrue(p instanceof Function); - assertEquals(p(), 42); -})(); - - -(function testConstructionFromConstructor() { - class foo {}; - var p = new Proxy(foo, {}); - assertTrue(p instanceof Function); - assertTrue(new p() instanceof foo); -})(); - - -(function testConstructionFromProxy() { - var q = new Proxy({}, {}); - var p = new Proxy(q, {}); - assertTrue(p instanceof Object); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-cross-realm-exception.js b/implementation-contributed/v8/mjsunit/es6/proxies-cross-realm-exception.js deleted file mode 100644 index ffba5c2d81e..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-cross-realm-exception.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Do not read out the prototype from a cross-realm object. -var realm = Realm.create(); - -__proto__ = {}; -assertEquals(null, - Realm.eval(realm, "3; Reflect.getPrototypeOf(Realm.global(0))")); -assertFalse(Realm.eval(realm, "3; Realm.global(0) instanceof Object")); - -__proto__ = new Proxy({}, { getPrototypeOf() { assertUnreachable() } }); -assertEquals(null, - Realm.eval(realm, "1; Reflect.getPrototypeOf(Realm.global(0))")); -assertFalse(Realm.eval(realm, "1; Realm.global(0) instanceof Object")); - -// Test that the instannceof check works in optimized code. -var test = Realm.eval(realm, - "()=>{1.1; return Realm.global(0) instanceof Object; }"); -assertFalse(test()); -test(); -test(); -%OptimizeFunctionOnNextCall(test); -assertFalse(test()); - -__proto__ = {}; -__proto__ = new Proxy({}, { get(t, p, r) { assertUnreachable() } }); -assertEquals(null, - Realm.eval(realm, "2; Reflect.getPrototypeOf(Realm.global(0))")); -assertFalse(Realm.eval(realm, "2; Realm.global(0) instanceof Object")); - - -__proto__ = {}; -__proto__.__proto__ = new Proxy({}, { - getPrototypeOf() { assertUnreachable() } -}); -assertEquals(null, - Realm.eval(realm, "4; Reflect.getPrototypeOf(Realm.global(0))")); -assertFalse(Realm.eval(realm, "4; Realm.global(0) instanceof Object")); - -// 2-level proxy indirection -__proto__ = {}; -__proto__ = new Proxy({}, - new Proxy({}, { - get() { assertUnreachable() } - }) -); -assertEquals(null, - Realm.eval(realm, "5; Reflect.getPrototypeOf(Realm.global(0))")); -assertFalse(Realm.eval(realm, "5; Realm.global(0) instanceof Object")); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-define-property.js b/implementation-contributed/v8/mjsunit/es6/proxies-define-property.js deleted file mode 100644 index 14c95bfe347..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-define-property.js +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check basic call to trap. - -var g_target, g_name, g_desc; -var handler = { - defineProperty: function(target, name, desc) { - g_target = target; - g_name = name; - g_desc = desc; - return true; - } -} -var target = {} -var proxy = new Proxy(target, handler); -var desc = { value: 1, writable: true, configurable: true, enumerable: true }; -Object.defineProperty(proxy, "foo", desc); -assertSame(target, g_target); -assertEquals("foo", g_name); -assertEquals(desc, g_desc); - -// Check specific steps in the spec - -// Step 4: revoked handler -var pair = Proxy.revocable(target, handler); -Object.defineProperty(proxy, "foo2", desc); -assertSame(target, g_target); -assertEquals("foo2", g_name); -assertEquals(desc, g_desc); -pair.revoke(); -assertThrows('Object.defineProperty(pair.proxy, "bar", desc);', TypeError); - -// Step 6: Trap isn't callable. -handler.defineProperty = 1; -assertThrows("Object.defineProperty(proxy, 'foo', {value: 2})", TypeError); - -// Step 7: Trap is undefined. -handler.defineProperty = undefined; -Object.defineProperty(proxy, "prop1", desc); -assertEquals(desc, Object.getOwnPropertyDescriptor(target, "prop1")); -var target2 = {}; -var proxy2 = new Proxy(target2, {}); -Object.defineProperty(proxy2, "prop2", desc); -assertEquals(desc, Object.getOwnPropertyDescriptor(target2, "prop2")); - -// Step 9: Property name is passed to the trap as a string. -handler.defineProperty = function(t, name, d) { g_name = name; return true; }; -Object.defineProperty(proxy, 0, desc); -assertTrue(typeof g_name === "string"); -assertEquals("0", g_name); - -// Step 10: Trap returns false. -handler.defineProperty = function(t, n, d) { return false; } -assertThrows("Object.defineProperty(proxy, 'foo', desc)", TypeError); - -// Step 15a: Trap returns true for adding a property to a non-extensible target. -handler.defineProperty = function(t, n, d) { return true; } -Object.preventExtensions(target); -assertThrows("Object.defineProperty(proxy, 'foo', desc)", TypeError); - -// Step 15b: Trap returns true for adding a non-configurable property. -target = {}; -proxy = new Proxy(target, handler); -desc = {value: 1, writable: true, configurable: false, enumerable: true}; -assertThrows("Object.defineProperty(proxy, 'foo', desc)", TypeError); -// No exception is thrown if a non-configurable property exists on the target. -Object.defineProperty(target, "nonconf", - {value: 1, writable: true, configurable: false}); -Object.defineProperty(proxy, "nonconf", {value: 2, configurable: false}); - -// Step 16a: Trap returns true for non-compatible property descriptor. -Object.defineProperty(target, "foo", - {value: 1, writable: false, configurable: false}); -assertThrows("Object.defineProperty(proxy, 'foo', {value: 2})", TypeError); - -// Step 16b: Trap returns true for overwriting a configurable property -// with a non-configurable descriptor. -target.bar = "baz"; -assertThrows("Object.defineProperty(proxy, 'bar', {configurable: false})", - TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-delete-property.js b/implementation-contributed/v8/mjsunit/es6/proxies-delete-property.js deleted file mode 100644 index 7a46b9b3b23..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-delete-property.js +++ /dev/null @@ -1,188 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -var properties = - ["bla", "0", 1, Symbol(), {[Symbol.toPrimitive]() {return "a"}}]; - - -function TestForwarding(handler, myDelete, shouldThrow) { - var target = {}; - var proxy = new Proxy(target, handler); - - assertFalse(target.hasOwnProperty("doesnotexist")); - assertTrue(myDelete(proxy, "doesnotexist")); - - for (p of properties) { - target[p] = 42; - assertTrue(myDelete(proxy, p)); - assertFalse(target.hasOwnProperty(p)); - } - - for (p of properties) { - Object.defineProperty(target, p, {value: 42, configurable: false}); - if (shouldThrow) { - assertThrows(() => myDelete(proxy, p), TypeError); - } else { - assertFalse(myDelete(proxy, p)); - } - assertTrue(target.hasOwnProperty(p)); - } -}; - - -(function () { - // No trap. - - var handler = {}; - - TestForwarding(handler, - (o, p) => delete o[p], false); - TestForwarding(handler, - (o, p) => Reflect.deleteProperty(o, p), false); - TestForwarding(handler, - (o, p) => {"use strict"; return delete o[p]}, true); - TestForwarding(handler, - (o, p) => {"use strict"; return Reflect.deleteProperty(o, p)}, false); -})(); - - -(function () { - // "Undefined" trap. - - var handler = { deleteProperty: null }; - - TestForwarding(handler, - (o, p) => delete o[p], false); - TestForwarding(handler, - (o, p) => Reflect.deleteProperty(o, p), false); - TestForwarding(handler, - (o, p) => {"use strict"; return delete o[p]}, true); - TestForwarding(handler, - (o, p) => {"use strict"; return Reflect.deleteProperty(o, p)}, false); -})(); - - -(function () { - // Invalid trap. - - var target = {}; - var handler = { deleteProperty: true }; - var proxy = new Proxy(target, handler); - - assertThrows(() => delete proxy[0], TypeError); - assertThrows(() => Reflect.deleteProperty(proxy, 0), TypeError); -})(); - - -function TestTrappingTrueish(myDelete) { - var handler = { deleteProperty() {return 42} }; - var target = {}; - var proxy = new Proxy(target, handler); - - // Trap returns trueish and target doesn't own property. - for (p of properties) { - assertTrue(myDelete(proxy, p)); - } - - // Trap returns trueish and target property is configurable. - for (p of properties) { - target[p] = 42; - assertTrue(myDelete(proxy, p)); - } - - // Trap returns trueish but target property is not configurable. - for (p of properties) { - Object.defineProperty(target, p, {value: 42, configurable: false}); - assertThrows(() => myDelete(proxy, p), TypeError); - } -}; - - -TestTrappingTrueish( - (o, p) => delete o[p]); -TestTrappingTrueish( - (o, p) => Reflect.deleteProperty(o, p)); -TestTrappingTrueish( - (o, p) => {"use strict"; return delete o[p]}); -TestTrappingTrueish( - (o, p) => {"use strict"; return Reflect.deleteProperty(o, p)}); - - -function TestTrappingTrueish2(myDelete) { - var handler = { - deleteProperty(target, p) { - Object.defineProperty(target, p, {configurable: false}); - return 42 - } - }; - var target = {}; - var proxy = new Proxy(target, handler); - - // Trap returns trueish but target property is not configurable. In contrast - // to above, here the target property was configurable before the trap call. - for (p of properties) { - target[p] = 42; - assertThrows(() => myDelete(proxy, p), TypeError); - } -}; - - -TestTrappingTrueish2( - (o, p) => delete o[p]); -TestTrappingTrueish2( - (o, p) => Reflect.deleteProperty(o, p)); -TestTrappingTrueish2( - (o, p) => {"use strict"; return delete o[p]}); -TestTrappingTrueish2( - (o, p) => {"use strict"; return Reflect.deleteProperty(o, p)}); - - -function TestTrappingFalsish(myDelete, shouldThrow) { - var handler = { deleteProperty() {return ""} }; - var target = {}; - var proxy = new Proxy(target, handler); - - var properties = - ["bla", "0", 1, Symbol(), {[Symbol.toPrimitive]() {return "a"}}]; - - // Trap returns falsish and target doesn't own property. - for (p of properties) { - if (shouldThrow) { - assertThrows(() => myDelete(proxy, p), TypeError); - } else { - assertFalse(myDelete(proxy, p)); - } - } - - // Trap returns falsish and target property is configurable. - for (p of properties) { - target[p] = 42; - if (shouldThrow) { - assertThrows(() => myDelete(proxy, p), TypeError); - } else { - assertFalse(myDelete(proxy, p)); - } - } - - // Trap returns falsish and target property is not configurable. - for (p of properties) { - Object.defineProperty(target, p, {value: 42, configurable: false}); - if (shouldThrow) { - assertThrows(() => myDelete(proxy, p), TypeError); - } else { - assertFalse(myDelete(proxy, p)); - } - } -}; - - -TestTrappingFalsish( - (o, p) => delete o[p], false); -TestTrappingFalsish( - (o, p) => Reflect.deleteProperty(o, p), false); -TestTrappingFalsish( - (o, p) => {"use strict"; return delete o[p]}, true); -TestTrappingFalsish( - (o, p) => {"use strict"; return Reflect.deleteProperty(o, p)}, false); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-example-membrane.js b/implementation-contributed/v8/mjsunit/es6/proxies-example-membrane.js deleted file mode 100644 index dd373b7429a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-example-membrane.js +++ /dev/null @@ -1,308 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// A simple membrane. Adapted from: -// http://wiki.ecmascript.org/doku.php?id=harmony:proxies#a_simple_membrane - -function createSimpleMembrane(target) { - let enabled = true; - - function wrap(obj) { - if (obj !== Object(obj)) return obj; - - let handler = new Proxy({}, {get: function(_, key) { - if (!enabled) throw new Error("disabled"); - switch (key) { - case "apply": - return (_, that, args) => { - try { - return wrap(Reflect.apply( - obj, wrap(that), args.map((x) => wrap(x)))); - } catch(e) { - throw wrap(e); - } - } - case "construct": - return (_, args, newt) => { - try { - return wrap(Reflect.construct( - obj, args.map((x) => wrap(x)), wrap(newt))); - } catch(e) { - throw wrap(e); - } - } - default: - return (_, ...args) => { - try { - return wrap(Reflect[key](obj, ...(args.map(wrap)))); - } catch(e) { - throw wrap(e); - } - } - } - }}); - - return new Proxy(obj, handler); - } - - const gate = Object.freeze({ - enable: () => enabled = true, - disable: () => enabled = false - }); - - return Object.freeze({ - wrapper: wrap(target), - gate: gate - }); -} - - -// Test the simple membrane. -{ - var o = { - a: 6, - b: {bb: 8}, - f: function(x) { return x }, - g: function(x) { return x.a }, - h: function(x) { this.q = x } - }; - o[2] = {c: 7}; - var m = createSimpleMembrane(o); - var w = m.wrapper; - var f = w.f; - var x = f(66); - var x = f({a: 1}); - var x = w.f({a: 1}); - var a = x.a; - assertEquals(6, w.a); - assertEquals(8, w.b.bb); - assertEquals(7, w[2]["c"]); - assertEquals(undefined, w.c); - assertEquals(1, w.f(1)); - assertEquals(1, w.f({a: 1}).a); - assertEquals(2, w.g({a: 2})); - assertEquals(3, (w.r = {a: 3}).a); - assertEquals(3, w.r.a); - assertEquals(3, o.r.a); - w.h(3); - assertEquals(3, w.q); - assertEquals(3, o.q); - assertEquals(4, (new w.h(4)).q); - - var wb = w.b; - var wr = w.r; - var wf = w.f; - var wf3 = w.f(3); - var wfx = w.f({a: 6}); - var wgx = w.g({a: {aa: 7}}); - var wh4 = new w.h(4); - m.gate.disable(); - assertEquals(3, wf3); - assertThrows(function() { w.a }, Error); - assertThrows(function() { w.r }, Error); - assertThrows(function() { w.r = {a: 4} }, Error); - assertThrows(function() { o.r.a }, Error); - assertEquals("object", typeof o.r); - assertEquals(5, (o.r = {a: 5}).a); - assertEquals(5, o.r.a); - assertThrows(function() { w[1] }, Error); - assertThrows(function() { w.c }, Error); - assertThrows(function() { wb.bb }, Error); - assertThrows(function() { wr.a }, Error); - assertThrows(function() { wf(4) }, Error); - assertThrows(function() { wfx.a }, Error); - assertThrows(function() { wgx.aa }, Error); - assertThrows(function() { wh4.q }, Error); - - m.gate.enable(); - assertEquals(6, w.a); - assertEquals(5, w.r.a); - assertEquals(5, o.r.a); - assertEquals(7, w.r = 7); - assertEquals(7, w.r); - assertEquals(7, o.r); - assertEquals(8, w.b.bb); - assertEquals(7, w[2]["c"]); - assertEquals(undefined, w.c); - assertEquals(8, wb.bb); - assertEquals(3, wr.a); - assertEquals(4, wf(4)); - assertEquals(3, wf3); - assertEquals(6, wfx.a); - assertEquals(7, wgx.aa); - assertEquals(4, wh4.q); -} - - - -// An identity-preserving membrane. Adapted from: -// http://wiki.ecmascript.org/doku.php?id=harmony:proxies#an_identity-preserving_membrane - -function createMembrane(target) { - const wet2dry = 0; - const dry2wet = 1; - - function flip(dir) { return (dir + 1) % 2 } - - let maps = [new WeakMap(), new WeakMap()]; - - let revoked = false; - - function wrap(dir, obj) { - if (obj !== Object(obj)) return obj; - - let wrapper = maps[dir].get(obj); - if (wrapper) return wrapper; - - let handler = new Proxy({}, {get: function(_, key) { - if (revoked) throw new Error("revoked"); - switch (key) { - case "apply": - return (_, that, args) => { - try { - return wrap(dir, Reflect.apply( - obj, wrap(flip(dir), that), - args.map((x) => wrap(flip(dir), x)))); - } catch(e) { - throw wrap(dir, e); - } - } - case "construct": - return (_, args, newt) => { - try { - return wrap(dir, Reflect.construct( - obj, args.map((x) => wrap(flip(dir), x)), - wrap(flip(dir), newt))); - } catch(e) { - throw wrap(dir, e); - } - } - default: - return (_, ...args) => { - try { - return wrap(dir, Reflect[key]( - obj, ...(args.map((x) => wrap(flip(dir), x))))) - } catch(e) { - throw wrap(dir, e); - } - } - } - }}); - - wrapper = new Proxy(obj, handler); - maps[dir].set(obj, wrapper); - maps[flip(dir)].set(wrapper, obj); - return wrapper; - } - - const gate = Object.freeze({ - revoke: () => revoked = true - }); - - return Object.freeze({ - wrapper: wrap(wet2dry, target), - gate: gate - }); -} - - -// Test the identity-preserving membrane. -{ - var receiver - var argument - var o = { - a: 6, - b: {bb: 8}, - f: function(x) {receiver = this; argument = x; return x}, - g: function(x) {receiver = this; argument = x; return x.a}, - h: function(x) {receiver = this; argument = x; this.q = x}, - s: function(x) {receiver = this; argument = x; this.x = {y: x}; return this} - } - o[2] = {c: 7} - var m = createMembrane(o) - var w = m.wrapper - var f = w.f - var x = f(66) - var x = f({a: 1}) - var x = w.f({a: 1}) - var a = x.a - assertEquals(6, w.a) - assertEquals(8, w.b.bb) - assertEquals(7, w[2]["c"]) - assertEquals(undefined, w.c) - assertEquals(1, w.f(1)) - assertSame(o, receiver) - assertEquals(1, w.f({a: 1}).a) - assertSame(o, receiver) - assertEquals(2, w.g({a: 2})) - assertSame(o, receiver) - assertSame(w, w.f(w)) - assertSame(o, receiver) - assertSame(o, argument) - assertSame(o, w.f(o)) - assertSame(o, receiver) - // Note that argument !== o, since o isn't dry, so gets wrapped wet again. - assertEquals(3, (w.r = {a: 3}).a) - assertEquals(3, w.r.a) - assertEquals(3, o.r.a) - w.h(3) - assertEquals(3, w.q) - assertEquals(3, o.q) - assertEquals(4, (new w.h(4)).q) - assertEquals(5, w.s(5).x.y) - assertSame(o, receiver) - - var wb = w.b - var wr = w.r - var wf = w.f - var wf3 = w.f(3) - var wfx = w.f({a: 6}) - var wgx = w.g({a: {aa: 7}}) - var wh4 = new w.h(4) - var ws5 = w.s(5) - var ws5x = ws5.x - m.gate.revoke() - assertEquals(3, wf3) - assertThrows(function() { w.a }, Error) - assertThrows(function() { w.r }, Error) - assertThrows(function() { w.r = {a: 4} }, Error) - assertThrows(function() { o.r.a }, Error) - assertEquals("object", typeof o.r) - assertEquals(5, (o.r = {a: 5}).a) - assertEquals(5, o.r.a) - assertThrows(function() { w[1] }, Error) - assertThrows(function() { w.c }, Error) - assertThrows(function() { wb.bb }, Error) - assertEquals(3, wr.a) - assertThrows(function() { wf(4) }, Error) - assertEquals(6, wfx.a) - assertEquals(7, wgx.aa) - assertThrows(function() { wh4.q }, Error) - assertThrows(function() { ws5.x }, Error) - assertThrows(function() { ws5x.y }, Error) -} diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-for.js b/implementation-contributed/v8/mjsunit/es6/proxies-for.js deleted file mode 100644 index 2b3060b17e7..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-for.js +++ /dev/null @@ -1,223 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Helper. - -function TestWithProxies(test, x, y, z) { - test(function(h){ return new Proxy({}, h) }, x, y, z) -} - - -// Iterate over a proxy. - -function TestForIn(properties, handler) { - TestWithProxies(TestForIn2, properties, handler) -} - -function TestForIn2(create, properties, handler) { - var p = create(handler) - var found = [] - for (var x in p) found.push(x) - assertArrayEquals(properties, found) -} - -TestForIn(["0", "a"], { - ownKeys() { return ["0", "a"] }, - has(target, property) { return true }, - getOwnPropertyDescriptor() { return { enumerable: true, configurable: true }} -}) - -TestForIn(["null", "a"], { - ownKeys() { return this.enumerate() }, - enumerate() { return ["null", "a"] }, - has(target, property) { return true }, - getOwnPropertyDescriptor() { return { enumerable: true, configurable: true }} -}) - - -// Iterate over an object with a proxy prototype. - -function TestForInDerived(properties, handler) { - TestWithProxies(TestForInDerived2, properties, handler) -} - -function TestForInDerived2(create, properties, handler) { - var p = create(handler) - var o = Object.create(p) - o.z = 0 - var found = [] - for (var x in o) found.push(x) - assertArrayEquals(["z"].concat(properties), found) - - var oo = Object.create(o) - oo.y = 0 - var found = [] - for (var x in oo) found.push(x) - assertArrayEquals(["y", "z"].concat(properties), found) -} - -TestForInDerived(["0", "a"], { - ownKeys: function() { return ["0", "a"] }, - has: function(t, k) { return k == "0" || k == "a" }, - getOwnPropertyDescriptor() { return { enumerable: true, configurable: true }} -}) - -TestForInDerived(["null", "a"], { - ownKeys: function() { return this.enumerate() }, - enumerate: function() { return ["null", "a"] }, - has: function(t, k) { return k == "null" || k == "a" }, - getOwnPropertyDescriptor() { return { enumerable: true, configurable: true }} -}) - - - -// Throw exception in ownKeys trap. - -function TestForInThrow(handler) { - TestWithProxies(TestForInThrow2, handler) -} - -function TestForInThrow2(create, handler) { - var p = create(handler) - var o = Object.create(p) - assertThrowsEquals(function(){ for (var x in p) {} }, "myexn") - assertThrowsEquals(function(){ for (var x in o) {} }, "myexn") -} - -TestForInThrow({ - ownKeys: function() { throw "myexn" } -}) - -TestForInThrow({ - ownKeys: function() { return this.enumerate() }, - enumerate: function() { throw "myexn" } -}) - -TestForInThrow(new Proxy({}, { - get: function(pr, pk) { - return function() { throw "myexn" } - } -})); - - -function keys(object) { - var keys = []; - for (var k in object) { - keys.push(k); - } - return keys; -} - -(function testKeysProxyOnProtoEmpty() { - var p = new Proxy({}, { - ownKeys() { return []; }, - }); - var o = [0]; - o.__proto__ = p; - assertEquals(["0"], keys(o)); - - delete o[0]; - assertEquals([], keys(o)); -})(); - -(function testKeysProxyOnProto() { - var handler = {ownKeys() { return ["0"]; }}; - var proxy = new Proxy({}, handler); - var object = [0]; - object.__proto__ = proxy; - assertEquals(["0"], keys(object)); - - // The Proxy doesn't set its ownKeys enumerable. - delete object[0]; - assertEquals([], keys(object)); - - // The [[Has]] trap has no influence on which are enumerable properties are - // shown in for-in. - handler.has = function() { return true }; - assertEquals([], keys(object)); - - handler.getOwnPropertyDescriptor = function() { - return {enumerable: true, configurable: true} - } - assertEquals(["0"], keys(object)); -})(); - -(function testKeysProxyProto() { - var target = {t1:true, t2:true}; - var handler = {}; - var proxy = new Proxy(target, handler); - - assertEquals(["t1", "t2"], keys(proxy)); - - target.__proto__ = {p1:true, p2:true}; - assertEquals(["t1", "t2", "p1", "p2"], keys(proxy)); - - handler.getPrototypeOf = function(target) { - return {p3:true, p4:true}; - }; - // for-in walks the prototype chain for the [[Has]] / Enumerable check. - assertEquals(["t1", "t2", "p3", "p4"], keys(proxy)); - - // [[Has]] is not used in for-in. - handler.has = function() { return false }; - assertEquals(["t1", "t2", "p3", "p4"], keys(proxy)); - - // Proxy intercepts enumerability check. - handler.getOwnPropertyDescriptor = function() { - return {enumerable: false, configurable: true} - } - assertEquals([], keys(proxy)); - - handler.getOwnPropertyDescriptor = function() { - return {enumerable: true, configurable: true} - } - assertEquals(["t1", "t2", "p3", "p4"], keys(proxy)); - - handler.getOwnPropertyDescriptor = function(target, key) { - return { - enumerable: key in target, - configurable: true - } - } - assertEquals(["t1", "t2"], keys(proxy)); - - handler.getPrototypeOf = function() { throw "error" }; - assertThrowsEquals(() => {keys(proxy)}, "error"); -})(); - -(function testNestedProxy() { - var handler = { - ownKeys() { - return ['c']; - }, - getOwnPropertyDescriptor() { return {configurable: true, enumerable: true } } - } - var proxy = new Proxy({}, handler); - var proxy2 = new Proxy(proxy, {}); - assertEquals(['c'], keys(proxy)); - assertEquals(['c'], keys(proxy2)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-function.js b/implementation-contributed/v8/mjsunit/es6/proxies-function.js deleted file mode 100644 index cb3a26c5354..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-function.js +++ /dev/null @@ -1,630 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - - -var handler = { - get : function(r, n) { return n == "length" ? 2 : undefined } -} - - -// Calling (call, Function.prototype.call, Function.prototype.apply, -// Function.prototype.bind). - -var global_object = this -var receiver - -function TestCall(isStrict, callTrap) { - assertEquals(42, callTrap(undefined, undefined, [5, 37])) - - var handler = { - get: function(r, k) { - return k == "length" ? 2 : Function.prototype[k] - }, - apply: callTrap - } - var f = new Proxy(()=>{}, handler) - var o = {f: f} - global_object.f = f - - receiver = 333 - assertEquals(42, f(11, 31)) - receiver = 333 - assertEquals(42, o.f(10, 32)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, o["f"](9, 33)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, (1, o).f(8, 34)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, (1, o)["f"](7, 35)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, f.call(o, 32, 10)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, f.call(undefined, 33, 9)) - receiver = 333 - assertEquals(42, f.call(null, 33, 9)) - receiver = 333 - assertEquals(44, f.call(2, 21, 23)) - assertSame(2, receiver.valueOf()) - receiver = 333 - assertEquals(42, Function.prototype.call.call(f, o, 20, 22)) - assertSame(o, receiver) - receiver = 333 - assertEquals(43, Function.prototype.call.call(f, null, 20, 23)) - assertEquals(44, Function.prototype.call.call(f, 2, 21, 23)) - assertEquals(2, receiver.valueOf()) - receiver = 333 - assertEquals(32, f.apply(o, [16, 16])) - assertSame(o, receiver) - receiver = 333 - assertEquals(32, Function.prototype.apply.call(f, o, [17, 15])) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, %Call(f, o, 11, 31)); - assertSame(o, receiver) - receiver = 333 - assertEquals(42, %Call(f, null, 11, 31)); - receiver = 333 - assertEquals(42, %_Call(f, o, 11, 31)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, %_Call(f, null, 11, 31)) - - var ff = Function.prototype.bind.call(f, o, 12) - assertTrue(ff.length <= 1) // TODO(rossberg): Not spec'ed yet, be lax. - receiver = 333 - assertEquals(42, ff(30)) - assertSame(o, receiver) - receiver = 333 - assertEquals(33, Function.prototype.call.call(ff, {}, 21)) - assertSame(o, receiver) - receiver = 333 - assertEquals(32, Function.prototype.apply.call(ff, {}, [20])) - assertSame(o, receiver) - receiver = 333 - assertEquals(23, %Call(ff, {}, 11)); - assertSame(o, receiver) - receiver = 333 - assertEquals(23, %Call(ff, {}, 11, 3)); - assertSame(o, receiver) - receiver = 333 - assertEquals(34, %_Call(ff, {}, 22)) - assertSame(o, receiver) - receiver = 333 - assertEquals(34, %_Call(ff, {}, 22, 3)) - assertSame(o, receiver) - - var fff = Function.prototype.bind.call(ff, o, 30) - assertEquals(0, fff.length) - receiver = 333 - assertEquals(42, fff()) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, Function.prototype.call.call(fff, {})) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, Function.prototype.apply.call(fff, {})) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, %Call(fff, {})); - assertSame(o, receiver) - receiver = 333 - assertEquals(42, %Call(fff, {}, 11, 3)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, %_Call(fff, {})) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, %_Call(fff, {}, 3, 4, 5)) - assertSame(o, receiver) - - var f = new Proxy(()=>{}, {apply: callTrap}) - receiver = 333 - assertEquals(42, f(11, 31)) - var o = {f: f} - receiver = 333 - assertEquals(42, o.f(10, 32)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, o["f"](9, 33)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, (1, o).f(8, 34)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, (1, o)["f"](7, 35)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, Function.prototype.call.call(f, o, 20, 22)) - assertSame(o, receiver) - receiver = 333 - assertEquals(32, Function.prototype.apply.call(f, o, [17, 15])) - assertSame(o, receiver) - receiver = 333 - assertEquals(23, %Call(f, o, 11, 12)) - assertSame(o, receiver) - receiver = 333 - assertEquals(42, %_Call(f, o, 18, 24)) - assertSame(o, receiver) -} - -TestCall(false, function(_, that, [x, y]) { - receiver = that - return x + y -}) - -TestCall(true, function(_, that, args) { - "use strict" - receiver = that - return args[0] + args[1] -}) - -TestCall(false, function() { - receiver = arguments[1] - return arguments[2][0] + arguments[2][1] -}) - -TestCall(false, new Proxy(function(_, that, [x, y]) { - receiver = that - return x + y - }, handler)) - -TestCall(true, new Proxy(function(_, that, args) { - "use strict" - receiver = that - return args[0] + args[1] - }, handler)) - -TestCall(false, Object.freeze(new Proxy(function(_, that, [x, y]) { - receiver = that - return x + y - }, handler))) - - - -// Using intrinsics as call traps. - -function TestCallIntrinsic(type, callTrap) { - var f = new Proxy(()=>{}, {apply: (_, that, args) => callTrap(...args)}) - var x = f() - assertTrue(typeof x == type) -} - -TestCallIntrinsic("boolean", Boolean) -TestCallIntrinsic("number", Number) -TestCallIntrinsic("string", String) -TestCallIntrinsic("object", Object) -TestCallIntrinsic("function", Function) - - - -// Throwing from call trap. - -function TestCallThrow(callTrap) { - var f = new Proxy(()=>{}, {apply: callTrap}) - assertThrowsEquals(() => f(11), "myexn") - assertThrowsEquals(() => ({x: f}).x(11), "myexn") - assertThrowsEquals(() => ({x: f})["x"](11), "myexn") - assertThrowsEquals(() => Function.prototype.call.call(f, {}, 2), "myexn") - assertThrowsEquals(() => Function.prototype.apply.call(f, {}, [1]), "myexn") - assertThrowsEquals(() => %Call(f, {}), "myexn") - assertThrowsEquals(() => %Call(f, {}, 1, 2), "myexn") - assertThrowsEquals(() => %_Call(f, {}), "myexn") - assertThrowsEquals(() => %_Call(f, {}, 1, 2), "myexn") - - var f = Object.freeze(new Proxy(()=>{}, {apply: callTrap})) - assertThrowsEquals(() => f(11), "myexn") - assertThrowsEquals(() => ({x: f}).x(11), "myexn") - assertThrowsEquals(() => ({x: f})["x"](11), "myexn") - assertThrowsEquals(() => Function.prototype.call.call(f, {}, 2), "myexn") - assertThrowsEquals(() => Function.prototype.apply.call(f, {}, [1]), "myexn") - assertThrowsEquals(() => %Call(f, {}), "myexn") - assertThrowsEquals(() => %Call(f, {}, 1, 2), "myexn") - assertThrowsEquals(() => %_Call(f, {}), "myexn") - assertThrowsEquals(() => %_Call(f, {}, 1, 2), "myexn") -} - -TestCallThrow(function() { throw "myexn" }) -TestCallThrow(new Proxy(() => {throw "myexn"}, {})) -TestCallThrow(Object.freeze(new Proxy(() => {throw "myexn"}, {}))) - - - -// Construction (new). - -var prototype = {myprop: 0} -var receiver - -var handlerWithPrototype = { - get: function(r, n) { - if (n == "length") return 2; - assertEquals("prototype", n); - return prototype; - } -} - -var handlerSansPrototype = { - get: function(r, n) { - if (n == "length") return 2; - assertEquals("prototype", n); - return undefined; - } -} - -function ReturnUndef(_, args, newt) { - "use strict"; - newt.sum = args[0] + args[1]; -} - -function ReturnThis(x, y) { - "use strict"; - receiver = this; - this.sum = x + y; - return this; -} - -function ReturnNew(_, args, newt) { - "use strict"; - return {sum: args[0] + args[1]}; -} - -function ReturnNewWithProto(_, args, newt) { - "use strict"; - var result = Object.create(prototype); - result.sum = args[0] + args[1]; - return result; -} - -function TestConstruct(proto, constructTrap) { - TestConstruct2(proto, constructTrap, handlerWithPrototype) - TestConstruct2(proto, constructTrap, handlerSansPrototype) -} - -function TestConstruct2(proto, constructTrap, handler) { - var f = new Proxy(function(){}, {construct: constructTrap}) - var o = new f(11, 31) - assertEquals(42, o.sum) - assertSame(proto, Object.getPrototypeOf(o)) - - var f = Object.freeze(new Proxy(function(){}, {construct: constructTrap})) - var o = new f(11, 32) - assertEquals(43, o.sum) - assertSame(proto, Object.getPrototypeOf(o)) -} - -TestConstruct(Object.prototype, ReturnNew) -TestConstruct(prototype, ReturnNewWithProto) - -TestConstruct(Object.prototype, new Proxy(ReturnNew, {})) -TestConstruct(prototype, new Proxy(ReturnNewWithProto, {})) - -TestConstruct(Object.prototype, Object.freeze(new Proxy(ReturnNew, {}))) -TestConstruct(prototype, Object.freeze(new Proxy(ReturnNewWithProto, {}))) - - - -// Throwing from the construct trap. - -function TestConstructThrow(trap) { - var f = new Proxy(function(){}, {construct: trap}); - assertThrowsEquals(() => new f(11), "myexn") - Object.freeze(f) - assertThrowsEquals(() => new f(11), "myexn") -} - -TestConstructThrow(function() { throw "myexn" }) -TestConstructThrow(new Proxy(function() { throw "myexn" }, {})) -TestConstructThrow(Object.freeze(new Proxy(function() { throw "myexn" }, {}))) - - - -// Using function proxies as getters and setters. - -var value -var receiver - -function TestAccessorCall(getterCallTrap, setterCallTrap) { - var pgetter = new Proxy(()=>{}, {apply: getterCallTrap}) - var psetter = new Proxy(()=>{}, {apply: setterCallTrap}) - - var o = {} - var oo = Object.create(o) - Object.defineProperty(o, "a", {get: pgetter, set: psetter}) - Object.defineProperty(o, "b", {get: pgetter}) - Object.defineProperty(o, "c", {set: psetter}) - Object.defineProperty(o, "3", {get: pgetter, set: psetter}) - Object.defineProperty(oo, "a", {value: 43}) - - receiver = "" - assertEquals(42, o.a) - assertSame(o, receiver) - receiver = "" - assertEquals(42, o.b) - assertSame(o, receiver) - receiver = "" - assertEquals(undefined, o.c) - assertEquals("", receiver) - receiver = "" - assertEquals(42, o["a"]) - assertSame(o, receiver) - receiver = "" - assertEquals(42, o[3]) - assertSame(o, receiver) - - receiver = "" - assertEquals(43, oo.a) - assertEquals("", receiver) - receiver = "" - assertEquals(42, oo.b) - assertSame(oo, receiver) - receiver = "" - assertEquals(undefined, oo.c) - assertEquals("", receiver) - receiver = "" - assertEquals(43, oo["a"]) - assertEquals("", receiver) - receiver = "" - assertEquals(42, oo[3]) - assertSame(oo, receiver) - - receiver = "" - assertEquals(50, o.a = 50) - assertSame(o, receiver) - assertEquals(50, value) - receiver = "" - assertEquals(51, o.b = 51) - assertEquals("", receiver) - assertEquals(50, value) // no setter - assertThrows(function() { "use strict"; o.b = 51 }, TypeError) - receiver = "" - assertEquals(52, o.c = 52) - assertSame(o, receiver) - assertEquals(52, value) - receiver = "" - assertEquals(53, o["a"] = 53) - assertSame(o, receiver) - assertEquals(53, value) - receiver = "" - assertEquals(54, o[3] = 54) - assertSame(o, receiver) - assertEquals(54, value) - - value = 0 - receiver = "" - assertEquals(60, oo.a = 60) - assertEquals("", receiver) - assertEquals(0, value) // oo has own 'a' - assertEquals(61, oo.b = 61) - assertSame("", receiver) - assertEquals(0, value) // no setter - assertThrows(function() { "use strict"; oo.b = 61 }, TypeError) - receiver = "" - assertEquals(62, oo.c = 62) - assertSame(oo, receiver) - assertEquals(62, value) - receiver = "" - assertEquals(63, oo["c"] = 63) - assertSame(oo, receiver) - assertEquals(63, value) - receiver = "" - assertEquals(64, oo[3] = 64) - assertSame(oo, receiver) - assertEquals(64, value) -} - -TestAccessorCall( - function(_, that) { receiver = that; return 42 }, - function(_, that, [x]) { receiver = that; value = x } -) - -TestAccessorCall( - function(_, that) { "use strict"; receiver = that; return 42 }, - function(_, that, args) { "use strict"; receiver = that; value = args[0] } -) - -TestAccessorCall( - new Proxy(function(_, that) { receiver = that; return 42 }, {}), - new Proxy(function(_, that, [x]) { receiver = that; value = x }, {}) -) - -TestAccessorCall( - Object.freeze( - new Proxy(function(_, that) { receiver = that; return 42 }, {})), - Object.freeze( - new Proxy(function(_, that, [x]) { receiver = that; value = x }, {})) -) - - -// Passing a proxy function to higher-order library functions. - -function TestHigherOrder(f) { - assertEquals(6, [6, 2].map(f)[0]) - assertEquals(4, [5, 2].reduce(f, 4)) - assertTrue([1, 2].some(f)) - assertEquals("a.b.c", "a.b.c".replace(".", f)) -} - -TestHigherOrder(function(x) { return x }) -TestHigherOrder(function(x) { "use strict"; return x }) -TestHigherOrder(new Proxy(function(x) { return x }, {})) -TestHigherOrder(Object.freeze(new Proxy(function(x) { return x }, {}))) - - - -// TODO(rossberg): Ultimately, I want to have the following test function -// run through, but it currently fails on so many cases (some not even -// involving proxies), that I leave that for later... -/* -function TestCalls() { - var handler = { - get: function(r, k) { - return k == "length" ? 2 : Function.prototype[k] - } - } - var bind = Function.prototype.bind - var o = {} - - var traps = [ - function(x, y) { - return {receiver: this, result: x + y, strict: false} - }, - function(x, y) { "use strict"; - return {receiver: this, result: x + y, strict: true} - }, - function() { - var x = arguments[0], y = arguments[1] - return {receiver: this, result: x + y, strict: false} - }, - Proxy.createFunction(handler, function(x, y) { - return {receiver: this, result: x + y, strict: false} - }), - Proxy.createFunction(handler, function() { - var x = arguments[0], y = arguments[1] - return {receiver: this, result: x + y, strict: false} - }), - Proxy.createFunction(handler, function(x, y) { "use strict" - return {receiver: this, result: x + y, strict: true} - }), - CreateFrozen(handler, function(x, y) { - return {receiver: this, result: x + y, strict: false} - }), - CreateFrozen(handler, function(x, y) { "use strict" - return {receiver: this, result: x + y, strict: true} - }), - ] - var creates = [ - function(trap) { return trap }, - function(trap) { return CreateFrozen({}, callTrap) }, - function(trap) { return Proxy.createFunction(handler, callTrap) }, - function(trap) { - return Proxy.createFunction(handler, CreateFrozen({}, callTrap)) - }, - function(trap) { - return Proxy.createFunction(handler, Proxy.createFunction(handler, callTrap)) - }, - ] - var binds = [ - function(f, o, x, y) { return f }, - function(f, o, x, y) { return bind.call(f, o) }, - function(f, o, x, y) { return bind.call(f, o, x) }, - function(f, o, x, y) { return bind.call(f, o, x, y) }, - function(f, o, x, y) { return bind.call(f, o, x, y, 5) }, - function(f, o, x, y) { return bind.call(bind.call(f, o), {}, x, y) }, - function(f, o, x, y) { return bind.call(bind.call(f, o, x), {}, y) }, - function(f, o, x, y) { return bind.call(bind.call(f, o, x, y), {}, 5) }, - ] - var calls = [ - function(f, x, y) { return f(x, y) }, - function(f, x, y) { var g = f; return g(x, y) }, - function(f, x, y) { with ({}) return f(x, y) }, - function(f, x, y) { var g = f; with ({}) return g(x, y) }, - function(f, x, y, o) { with (o) return f(x, y) }, - function(f, x, y, o) { return f.call(o, x, y) }, - function(f, x, y, o) { return f.apply(o, [x, y]) }, - function(f, x, y, o) { return Function.prototype.call.call(f, o, x, y) }, - function(f, x, y, o) { return Function.prototype.apply.call(f, o, [x, y]) }, - function(f, x, y, o) { return %_Call(f, o, x, y) }, - function(f, x, y, o) { return %Call(f, o, x, y) }, - function(f, x, y, o) { return %Apply(f, o, [null, x, y, null], 1, 2) }, - function(f, x, y, o) { return %Apply(f, o, arguments, 2, 2) }, - function(f, x, y, o) { if (typeof o == "object") return o.f(x, y) }, - function(f, x, y, o) { if (typeof o == "object") return o["f"](x, y) }, - function(f, x, y, o) { if (typeof o == "object") return (1, o).f(x, y) }, - function(f, x, y, o) { if (typeof o == "object") return (1, o)["f"](x, y) }, - ] - var receivers = [o, global_object, undefined, null, 2, "bla", true] - var expectedSloppies = [o, global_object, global_object, global_object] - - for (var t = 0; t < traps.length; ++t) { - for (var i = 0; i < creates.length; ++i) { - for (var j = 0; j < binds.length; ++j) { - for (var k = 0; k < calls.length; ++k) { - for (var m = 0; m < receivers.length; ++m) { - for (var n = 0; n < receivers.length; ++n) { - var bound = receivers[m] - var receiver = receivers[n] - var func = binds[j](creates[i](traps[t]), bound, 31, 11) - var expected = j > 0 ? bound : receiver - var expectedSloppy = expectedSloppies[j > 0 ? m : n] - o.f = func - global_object.f = func - var x = calls[k](func, 11, 31, receiver) - if (x !== undefined) { - assertEquals(42, x.result) - if (calls[k].length < 4) - assertSame(x.strict ? undefined : global_object, x.receiver) - else if (x.strict) - assertSame(expected, x.receiver) - else if (expectedSloppy === undefined) - assertSame(expected, x.receiver.valueOf()) - else - assertSame(expectedSloppy, x.receiver) - } - } - } - } - } - } - } -} - -TestCalls() -*/ - -var realms = [Realm.create(), Realm.create()]; -Realm.shared = {}; - -Realm.eval(realms[0], "function f(_, that) { return that; };"); -Realm.eval(realms[0], "Realm.shared.f = f;"); -Realm.eval(realms[0], "Realm.shared.fg = this;"); -Realm.eval(realms[1], "function g(_, that) { return that; };"); -Realm.eval(realms[1], "Realm.shared.g = g;"); -Realm.eval(realms[1], "Realm.shared.gg = this;"); - -var fp = new Proxy(()=>{}, {apply: Realm.shared.f}); -var gp = new Proxy(()=>{}, {apply: Realm.shared.g}); - -for (var i = 0; i < 10; i++) { - assertEquals(undefined, fp()); - assertEquals(undefined, gp()); - - with (this) { - assertEquals(this, fp()); - assertEquals(this, gp()); - } - - with ({}) { - assertEquals(undefined, fp()); - assertEquals(undefined, gp()); - } -} diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-get-own-property-descriptor.js b/implementation-contributed/v8/mjsunit/es6/proxies-get-own-property-descriptor.js deleted file mode 100644 index 441ff16ad93..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-get-own-property-descriptor.js +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var target = {}; -var configurable_desc = { - value: 123, - configurable: true, - writable: true, - enumerable: false, -}; -Object.defineProperty(target, "configurable", configurable_desc); -var nonconfigurable_desc = { - value: 234, - configurable: false, - writable: false, - enumerable: true -} -Object.defineProperty(target, "nonconfigurable", nonconfigurable_desc); - -var proxied_desc = { - value: 345, - configurable: true -}; - -var handler = { - "getOwnPropertyDescriptor": function(target, name) { - if (name === "proxied") { - return proxied_desc; - } - if (name === "return_null") { - return null; - } - return Object.getOwnPropertyDescriptor(target, name); - } -}; - -var proxy = new Proxy(target, handler); -var proxy_without_handler = new Proxy(target, {}); - -// Checking basic functionality: - -assertEquals(configurable_desc, - Object.getOwnPropertyDescriptor(proxy, "configurable")); -assertEquals(nonconfigurable_desc, - Object.getOwnPropertyDescriptor(proxy, "nonconfigurable")); -assertEquals({ value: proxied_desc.value, - configurable: proxied_desc.configurable, - enumerable: false, - writable: false }, - Object.getOwnPropertyDescriptor(proxy, "proxied")); -assertEquals(configurable_desc, - Object.getOwnPropertyDescriptor(proxy_without_handler, - "configurable")); -assertEquals(nonconfigurable_desc, - Object.getOwnPropertyDescriptor(proxy_without_handler, - "nonconfigurable")); - -assertThrows('Object.getOwnPropertyDescriptor(proxy, "return_null")'); - -handler.getOwnPropertyDescriptor = undefined; -assertEquals(configurable_desc, - Object.getOwnPropertyDescriptor(proxy, "configurable")); - -// Checking invariants mentioned explicitly by the ES spec: - -// (Inv-1) "A property cannot be reported as non-existent, if it exists as a -// non-configurable own property of the target object." -handler.getOwnPropertyDescriptor = function(target, name) { return undefined; }; -assertThrows('Object.getOwnPropertyDescriptor(proxy, "nonconfigurable")'); -assertEquals(undefined, Object.getOwnPropertyDescriptor(proxy, "configurable")); - -// (Inv-2) "A property cannot be reported as non-configurable, if it does not -// exist as an own property of the target object or if it exists as a -// configurable own property of the target object." -handler.getOwnPropertyDescriptor = function(target, name) { - return {value: 234, configurable: false, enumerable: true}; -}; -assertThrows('Object.getOwnPropertyDescriptor(proxy, "nonexistent")'); -assertThrows('Object.getOwnPropertyDescriptor(proxy, "configurable")'); -assertEquals( - false, - Object.getOwnPropertyDescriptor(proxy, "nonconfigurable").configurable); - -// (Inv-3) "A property cannot be reported as non-existent, if it exists as an -// own property of the target object and the target object is not extensible." -Object.seal(target); -handler.getOwnPropertyDescriptor = function(target, name) { return undefined; }; -assertThrows('Object.getOwnPropertyDescriptor(proxy, "configurable")'); -assertThrows('Object.getOwnPropertyDescriptor(proxy, "nonconfigurable")'); -assertEquals(undefined, Object.getOwnPropertyDescriptor(proxy, "nonexistent")); - -// (Inv-4) "A property cannot be reported as existent, if it does not exist as -// an own property of the target object and the target object is not -// extensible." -var existent_desc = {value: "yes"}; -handler.getOwnPropertyDescriptor = function() { return existent_desc; }; -assertThrows('Object.getOwnPropertyDescriptor(proxy, "nonexistent")'); -assertEquals( - {value: "yes", writable: false, enumerable: false, configurable: false}, - Object.getOwnPropertyDescriptor(proxy, "configurable")); - -// Checking individual bailout points in the implementation: - -// Step 6: Trap is not callable. -handler.getOwnPropertyDescriptor = {}; -assertThrows('Object.getOwnPropertyDescriptor(proxy, "configurable")'); - -// Step 8: Trap throws. -handler.getOwnPropertyDescriptor = function() { throw "ball"; }; -assertThrows('Object.getOwnPropertyDescriptor(proxy, "configurable")'); - -// Step 9: Trap result is neither undefined nor an object. -handler.getOwnPropertyDescriptor = function() { return 1; } -assertThrows('Object.getOwnPropertyDescriptor(proxy, "configurable")'); - -// Step 11b: See (Inv-1) above. -// Step 11e: See (Inv-3) above. - -// Step 16: Incompatible PropertyDescriptor; a non-configurable property -// cannot be reported as configurable. (Inv-4) above checks more cases. -handler.getOwnPropertyDescriptor = function(target, name) { - return {value: 456, configurable: true, writable: true} -}; -assertThrows('Object.getOwnPropertyDescriptor(proxy, "nonconfigurable")'); - -// Step 17: See (Inv-2) above. diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-get-prototype-of.js b/implementation-contributed/v8/mjsunit/es6/proxies-get-prototype-of.js deleted file mode 100644 index a628f3fa15e..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-get-prototype-of.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var target = { target: 1 }; -target.__proto__ = {}; -var handler = { handler: 1 }; -var proxy = new Proxy(target, handler); - -assertSame(Object.getPrototypeOf(proxy), target.__proto__ ); - -target.__proto__ = []; -assertSame(Object.getPrototypeOf(proxy), target.__proto__); - -handler.getPrototypeOf = function() { - return 1; -} -assertThrows(function() { Object.getPrototypeOf(proxy) }, TypeError); - -var target_prototype = {a:1, b:2}; -handler.getPrototypeOf = function() { - return target_prototype ; -} -assertSame(Object.getPrototypeOf(proxy), target_prototype); - -// Test with proxy target: -var proxy2 = new Proxy(proxy, {'handler':1}); -assertSame(Object.getPrototypeOf(proxy2), target_prototype); - -// Test with Proxy handler: -var proxy3_prototype = {'proto3':true}; -var handler_proxy = new Proxy({ - getPrototypeOf: function() { return proxy3_prototype } -}, {}); -var proxy3 = new Proxy(target, handler_proxy); -assertSame(Object.getPrototypeOf(proxy3), proxy3_prototype); - - -// Some tests with Object.prototype.isPrototypeOf - -(function () { - var object = {}; - var handler = {}; - var proto = new Proxy({}, handler); - object.__proto__ = proto; - - assertTrue(proto.isPrototypeOf(object)); - assertTrue(Object.prototype.isPrototypeOf.call(proto, object)); - - handler.getPrototypeOf = function () { return Object.prototype }; - assertTrue(proto.isPrototypeOf(object)); - assertTrue(Object.prototype.isPrototypeOf.call(proto, object)); - assertTrue(Object.prototype.isPrototypeOf(object)); - assertFalse(Object.prototype.isPrototypeOf.call(Array.prototype, object)); - assertFalse(Array.prototype.isPrototypeOf(object)); - - handler.getPrototypeOf = function () { return object }; - assertTrue(Object.prototype.isPrototypeOf.call(proto, object)); - assertTrue(proto.isPrototypeOf(object)); - assertTrue(Object.prototype.isPrototypeOf.call(object, object)); - assertTrue(object.isPrototypeOf(object)); - - handler.getPrototypeOf = function () { throw "foo" }; - assertTrue(proto.isPrototypeOf(object)); - assertTrue(Object.prototype.isPrototypeOf.call(proto, object)); - assertThrows(()=> Object.prototype.isPrototypeOf(object)); - assertThrows(()=> Object.prototype.isPrototypeOf.call(Array.prototype, object)); - assertThrows(()=> Array.prototype.isPrototypeOf(object)); -})(); - -(function () { - var handler = {}; - var object = new Proxy({}, handler); - var proto = {}; - - assertFalse(Object.prototype.isPrototypeOf.call(object, object)); - assertFalse(Object.prototype.isPrototypeOf.call(proto, object)); - assertTrue(Object.prototype.isPrototypeOf.call(Object.prototype, object)); - - handler.getPrototypeOf = function () { return proto }; - assertTrue(Object.prototype.isPrototypeOf.call(proto, object)); - assertFalse(Object.prototype.isPrototypeOf.call({}, object)); - assertTrue(Object.prototype.isPrototypeOf.call(Object.prototype, object)); - - handler.getPrototypeOf = function () { return object }; - assertTrue(Object.prototype.isPrototypeOf.call(object, object)); - - handler.getPrototypeOf = function () { throw "foo" }; - assertThrows(()=> Object.prototype.isPrototypeOf.call(object, object)); - assertThrows(()=> Object.prototype.isPrototypeOf(object)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-get.js b/implementation-contributed/v8/mjsunit/es6/proxies-get.js deleted file mode 100644 index f52ae1aa7e4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-get.js +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function testBasicFunctionality() { - var target = { - target_one: 1, - property: "value" - }; - - var handler = {handler:1}; - - var proxy = new Proxy(target, handler); - assertEquals("value", proxy.property); - assertEquals(undefined, proxy.nothing); - assertEquals(undefined, proxy.handler); - - handler.get = function() { return "value 2" }; - assertEquals("value 2", proxy.property); - assertEquals("value 2", proxy.nothing); - assertEquals("value 2", proxy.handler); - - var handler2 = new Proxy({get: function() { return "value 3" }},{}); - var proxy2 = new Proxy(target, handler2); - assertEquals("value 3", proxy2.property); - assertEquals("value 3", proxy2.nothing); - assertEquals("value 3", proxy2.handler); -})(); - -(function testThrowOnGettingTrap() { - var handler = new Proxy({}, {get: function(){ throw Error() }}); - var proxy = new Proxy({}, handler); - assertThrows("proxy.property", Error); -})(); - -(function testThrowOnTrapNotCallable() { - var handler = new Proxy({}, {get: 'not_callable' }); - var proxy = new Proxy({}, handler); - assertThrows("proxy.property", Error); -})(); - -(function testFallback() { - var target = {property:"value"}; - var proxy = new Proxy(target, {}); - assertEquals("value", proxy.property); - assertEquals(undefined, proxy.property2); -})(); - -(function testFallbackUndefinedTrap() { - var handler = new Proxy({}, {get: function(){ return undefined }}); - var target = {property:"value"}; - var proxy = new Proxy(target, handler); - assertEquals("value", proxy.property); - assertEquals(undefined, proxy.property2); -})(); - -(function testFailingInvariant() { - var target = {}; - var handler = { get: function(r, p){ if (p != "key4") return "value" }} - var proxy = new Proxy(target, handler); - assertEquals("value", proxy.property); - assertEquals("value", proxy.key); - assertEquals("value", proxy.key2); - assertEquals("value", proxy.key3); - - // Define a non-configurable, non-writeable property on the target for - // which the handler will return a different value. - Object.defineProperty(target, "key", { - configurable: false, - writable: false, - value: "different value" - }); - assertEquals("value", proxy.property); - assertThrows(function(){ proxy.key }, TypeError); - assertEquals("value", proxy.key2); - assertEquals("value", proxy.key3); - - // Define a non-configurable getter on the target for which the handler - // will return a value, according to the spec we do not throw. - Object.defineProperty(target, "key2", { - configurable: false, - get: function() { return "different value" } - }); - assertEquals("value", proxy.property); - assertThrows(function(){ proxy.key }, TypeError); - assertEquals("value", proxy.key2); - assertEquals("value", proxy.key3); - - // Define a non-configurable setter without a corresponding getter on the - // target for which the handler will return a value. - Object.defineProperty(target, "key3", { - configurable: false, - set: function() { } - }); - assertEquals("value", proxy.property); - assertThrows(function(){ proxy.key }, TypeError); - assertEquals("value", proxy.key2); - assertThrows(function(){ proxy.key3 }, TypeError); - - // Define a non-configurable setter without a corresponding getter on the - // target for which the handler will return undefined. - Object.defineProperty(target, "key4", { - configurable: false, - set: function() { } - }); - assertSame(undefined, proxy.key4); -})(); - -(function testGetInternalIterators() { - var log = []; - var array = [1,2,3,4,5] - var origIt = array[Symbol.iterator](); - var it = new Proxy(origIt, { - get(t, name) { - log.push(`[[Get]](iterator, ${String(name)})`); - return Reflect.get(t, name); - }, - set(t, name, val) { - log.push(`[[Set]](iterator, ${String(name)}, ${String(val)})`); - return Reflect.set(t, name, val); - } - }); - - assertThrows(function() { - for (var v of it) log.push(v); - }, TypeError); - assertEquals([ - "[[Get]](iterator, Symbol(Symbol.iterator))", - "[[Get]](iterator, next)" - ], log); -})(); - -(function testGetterWithSideEffect() { - var obj = { - key: 0 - } - assertEquals(obj.key, 0); - var p = new Proxy(obj, {}); - var q = new Proxy(p, { - get(target, name) { - if (name != 'key') return Reflect.get(target, name); - target.key++; - return target.key; - } - }); - - assertEquals(0, p.key); - // Assert the trap is not called twice. - assertEquals(1, q.key); -})(); - -(function testReceiverWithTrap() { - var obj = {}; - var p = new Proxy(obj, { - get(target, name, receiver) { - if (name != 'key') return Reflect.get(target, name); - - assertSame(target, obj); - assertSame(receiver, p); - return 42; - } - }); - assertEquals(42, p.key); -})(); - -(function testReceiverWithoutTrap() { - var obj = { - get prop() { - assertSame(this, p); - return 42; - } - }; - var p = new Proxy(obj, {}); - assertEquals(42, p.prop); -})(); - -(function testGetPropertyDetailsBailout() { - var obj = { - } - var p = new Proxy(obj, { - getOwnPropertyDescriptor() { - throw new Error('Error from proxy getOwnPropertyDescriptor trap'); - } - }); - var q = new Proxy(p, { - get(target, name) { - return 42; - } - }); - assertThrows(function(){ q.prop }, Error, - 'Error from proxy getOwnPropertyDescriptor trap'); -})(); - -(function testGetPropertyDetailsBailout2() { - var obj = {}; - Object.defineProperty(obj, 'prop', { - value: 53, - configurable: false - }); - var p = new Proxy(obj, {}); - var q = new Proxy(p, { - get(target, name) { - return 42; - } - }); - assertThrows(function(){ q.prop }, TypeError, - "'get' on proxy: property 'prop' is a read-only and non-configurable data" + - " property on the proxy target but the proxy did not return its actual" + - " value (expected '53' but got '42')"); -})(); - -(function test32BitIndex() { - var index = (1 << 31) + 1; - var obj = {}; - obj[index] = 42; - var p = new Proxy(obj, {}); - for (var i = 0; i < 3; ++i) { - assertEquals(42, p[index]); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-global-reference.js b/implementation-contributed/v8/mjsunit/es6/proxies-global-reference.js deleted file mode 100644 index 1e3d3beb865..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-global-reference.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var failing_proxy = new Proxy({}, new Proxy({}, { - get() { throw "No trap should fire" }})); - -assertThrows(() => Object.setPrototypeOf(Object.prototype, failing_proxy), TypeError); -assertThrows(()=>a, ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-has-own-property.js b/implementation-contributed/v8/mjsunit/es6/proxies-has-own-property.js deleted file mode 100644 index 5b9ddbce62d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-has-own-property.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var handler = {}; -var target = {a:1}; -var proxy = new Proxy(target, handler); - -assertTrue(target.hasOwnProperty('a')); -assertTrue(proxy.hasOwnProperty('a')); -assertFalse(target.hasOwnProperty('b')); -assertFalse(proxy.hasOwnProperty('b')); - - -handler.has = function() { assertUnreachable() } -handler.getOwnPropertyDescriptor = function () {} - -assertTrue(target.hasOwnProperty('a')); -assertFalse(proxy.hasOwnProperty('a')); -assertFalse(target.hasOwnProperty('b')); -assertFalse(proxy.hasOwnProperty('b')); - - -handler.getOwnPropertyDescriptor = function() { return {configurable: true} } - -assertTrue(target.hasOwnProperty('a')); -assertTrue(proxy.hasOwnProperty('a')); -assertFalse(target.hasOwnProperty('b')); -assertTrue(proxy.hasOwnProperty('b')); - - -handler.getOwnPropertyDescriptor = function() { throw Error(); } - -assertTrue(target.hasOwnProperty('a')); -assertThrows(function(){ proxy.hasOwnProperty('a') }, Error); -assertFalse(target.hasOwnProperty('b')); -assertThrows(function(){ proxy.hasOwnProperty('b') }, Error); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-has.js b/implementation-contributed/v8/mjsunit/es6/proxies-has.js deleted file mode 100644 index f5b11cfc570..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-has.js +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var target = { - "target_one": 1 -}; -target[0] = 42; -target.__proto__ = { - "target_two": 2 -}; -var handler = { - has: function(target, name) { - return name == "present" || name == '0'; - } -} - -var proxy = new Proxy(target, handler); - -// Test simple cases. -assertTrue("present" in proxy); -assertFalse("nonpresent" in proxy); - -// Test element cases. -assertTrue(0 in proxy); -assertFalse(1 in proxy); -assertTrue('0' in proxy); -assertFalse('1' in proxy); - -var symbol0 = { - [Symbol.toPrimitive](hint) { - return 0; - } -}; -var symbol1 = { - [Symbol.toPrimitive](hint) { - return 1; - } -}; -assertTrue(symbol0 in proxy); -assertFalse(symbol1 in proxy); - -// Test interesting algorithm steps: - -// Step 7: Fall through to target if trap is undefined. -handler.has = undefined; -assertTrue("target_one" in proxy); -assertTrue("target_two" in proxy); -assertFalse("in_your_dreams" in proxy); - -// Step 8: Result is converted to boolean. -var result = 1; -handler.has = function(t, n) { return result; } -assertTrue("foo" in proxy); -result = {}; -assertTrue("foo" in proxy); -result = undefined; -assertFalse("foo" in proxy); -result = "string"; -assertTrue("foo" in proxy); - -// Step 9b i. Trap result must confirm presence of non-configurable properties -// of the target. -Object.defineProperty(target, "nonconf", {value: 1, configurable: false}); -result = false; -assertThrows("'nonconf' in proxy", TypeError); - -// Step 9b iii. Trap result must confirm presence of all own properties of -// non-extensible targets. -Object.preventExtensions(target); -assertThrows("'nonconf' in proxy", TypeError); -assertThrows("'target_one' in proxy", TypeError); -assertFalse("target_two" in proxy); -assertFalse("in_your_dreams" in proxy); - -// Regression test for crbug.com/570120 (stray JSObject::cast). -(function TestHasPropertyFastPath() { - var proxy = new Proxy({}, {}); - var object = Object.create(proxy); - object.hasOwnProperty(0); -})(); - -(function FalseTargetPropExists() { - var target2 = { - attr: 1 - }; - var p = new Proxy(target2, { - has: function(t, prop) { - return false; - } - }); - - assertFalse("attr" in p); -})(); - -(function TargetHasAccessorProperty() { - var target = {}; - Object.defineProperty(target, 'prop', { - get: function() { - assertSame(this, target); - return 42; - }, - configurable: true - }) - var proxy = new Proxy(target, { - has: function(t, prop) { - return false; - }, - }); - assertFalse('prop' in proxy); -})(); - -(function TargetHasNonConfigurableProperty() { - var target = {}; - Object.defineProperty(target, 'prop', { - value: 42, - configurable: false, - writable: true - }) - var proxy = new Proxy(target, { - has: function(t, prop) { - return false; - }, - }); - assertThrows(function() { 'prop' in proxy; }, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-hash.js b/implementation-contributed/v8/mjsunit/es6/proxies-hash.js deleted file mode 100644 index 05433f0dce1..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-hash.js +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Helper. - -function TestWithProxies(test, construct, handler) { - test(construct, handler, function(h) { return new Proxy({}, h) }) - // TODO(cbruni): Adapt and enable once we have [[Call]] working. - // test(construct, handler, function(h) { - // return Proxy.createFunction(h, function() {}) - // }) -} - - -// Sets. - -function TestSet(construct, fix) { - TestWithProxies(TestSet2, construct, fix) -} - -function TestSet2(construct, fix, create) { - var handler = {fix: function() { return {} }} - var p1 = create(handler) - var p2 = create(handler) - var p3 = create(handler) - fix(p3) - - var s = new construct(); - s.add(p1); - s.add(p2); - assertTrue(s.has(p1)); - assertTrue(s.has(p2)); - assertFalse(s.has(p3)); - - fix(p1) - fix(p2) - assertTrue(s.has(p1)); - assertTrue(s.has(p2)); - assertFalse(s.has(p3)); - - s.delete(p2); - assertTrue(s.has(p1)); - assertFalse(s.has(p2)); - assertFalse(s.has(p3)); -} - -TestSet(Set, Object.seal) -TestSet(Set, Object.freeze) -TestSet(Set, Object.preventExtensions) - - -// Maps and weak maps. - -function TestMap(construct, fix) { - TestWithProxies(TestMap2, construct, fix) -} - -function TestMap2(construct, fix, create) { - var handler = {fix: function() { return {} }} - var p1 = create(handler) - var p2 = create(handler) - var p3 = create(handler) - fix(p3) - - var m = new construct(); - m.set(p1, 123); - m.set(p2, 321); - assertTrue(m.has(p1)); - assertTrue(m.has(p2)); - assertFalse(m.has(p3)); - assertSame(123, m.get(p1)); - assertSame(321, m.get(p2)); - - fix(p1) - fix(p2) - assertTrue(m.has(p1)); - assertTrue(m.has(p2)); - assertFalse(m.has(p3)); - assertSame(123, m.get(p1)); - assertSame(321, m.get(p2)); - - m.delete(p2); - assertTrue(m.has(p1)); - assertFalse(m.has(p2)); - assertFalse(m.has(p3)); - assertSame(123, m.get(p1)); - assertSame(undefined, m.get(p2)); -} - -TestMap(Map, Object.seal) -TestMap(Map, Object.freeze) -TestMap(Map, Object.preventExtensions) - -TestMap(WeakMap, Object.seal) -TestMap(WeakMap, Object.freeze) -TestMap(WeakMap, Object.preventExtensions) diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-integrity.js b/implementation-contributed/v8/mjsunit/es6/proxies-integrity.js deleted file mode 100644 index 4cdf77009a4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-integrity.js +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - - -function toKey(x) { - if (typeof x === "symbol") return x; - return String(x); -} - - -const noconf = {configurable: false}; -const noconf_nowrite = {configurable: false, writable: false}; - - -var symbol = Symbol(); - - -var log = []; -var logger = {}; -var handler = new Proxy({}, logger); - -logger.get = function(t, trap, r) { - return function() { - log.push([trap, ...arguments]); - return Reflect[trap](...arguments); - } -}; - - -(function Seal() { - var target = []; - var proxy = new Proxy(target, handler); - log.length = 0; - - target.wurst = 42; - target[0] = true; - Object.defineProperty(target, symbol, {get: undefined}); - - Object.seal(proxy); - assertEquals(6, log.length) - for (var i in log) assertSame(target, log[i][1]); - - assertArrayEquals( - ["preventExtensions", target], log[0]); - assertArrayEquals( - ["ownKeys", target], log[1]); - assertArrayEquals( - ["defineProperty", target, toKey(0), noconf], log[2]); - assertArrayEquals( - ["defineProperty", target, toKey("length"), noconf], log[3]); - assertArrayEquals( - ["defineProperty", target, toKey("wurst"), noconf], log[4]); - assertArrayEquals( - ["defineProperty", target, toKey(symbol), noconf], log[5]); -})(); - - -(function Freeze() { - var target = []; - var proxy = new Proxy(target, handler); - log.length = 0; - - target.wurst = 42; - target[0] = true; - Object.defineProperty(target, symbol, {get: undefined}); - - Object.freeze(proxy); - assertEquals(10, log.length) - for (var i in log) assertSame(target, log[i][1]); - - assertArrayEquals( - ["preventExtensions", target], log[0]); - assertArrayEquals( - ["ownKeys", target], log[1]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey(0)], log[2]); - assertArrayEquals( - ["defineProperty", target, toKey(0), noconf_nowrite], log[3]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey("length")], log[4]); - assertArrayEquals( - ["defineProperty", target, toKey("length"), noconf_nowrite], log[5]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey("wurst")], log[6]); - assertArrayEquals( - ["defineProperty", target, toKey("wurst"), noconf_nowrite], log[7]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey(symbol)], log[8]); - assertArrayEquals( - ["defineProperty", target, toKey(symbol), noconf], log[9]); -})(); - - -(function IsSealed() { - var target = []; - var proxy = new Proxy(target, handler); - - target.wurst = 42; - target[0] = true; - Object.defineProperty(target, symbol, {get: undefined}); - - // Extensible. - - log.length = 0; - - Object.isSealed(proxy); - assertEquals(1, log.length) - for (var i in log) assertSame(target, log[i][1]); - - assertArrayEquals( - ["isExtensible", target], log[0]); - - // Not extensible but not sealed. - - log.length = 0; - Object.preventExtensions(target); - - Object.isSealed(proxy); - assertEquals(3, log.length) - for (var i in log) assertSame(target, log[i][1]); - - assertArrayEquals( - ["isExtensible", target], log[0]); - assertArrayEquals( - ["ownKeys", target], log[1]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey(0)], log[2]); - - // Sealed. - - log.length = 0; - Object.seal(target); - - Object.isSealed(proxy); - assertEquals(6, log.length) - for (var i in log) assertSame(target, log[i][1]); - - assertArrayEquals( - ["isExtensible", target], log[0]); - assertArrayEquals( - ["ownKeys", target], log[1]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey(0)], log[2]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey("length")], log[3]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey("wurst")], log[4]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey(symbol)], log[5]); -})(); - - -(function IsFrozen() { - var target = []; - var proxy = new Proxy(target, handler); - - target.wurst = 42; - target[0] = true; - Object.defineProperty(target, symbol, {get: undefined}); - - // Extensible. - - log.length = 0; - - Object.isFrozen(proxy); - assertEquals(1, log.length) - for (var i in log) assertSame(target, log[i][1]); - - assertArrayEquals( - ["isExtensible", target], log[0]); - - // Not extensible but not frozen. - - log.length = 0; - Object.preventExtensions(target); - - Object.isFrozen(proxy); - assertEquals(3, log.length) - for (var i in log) assertSame(target, log[i][1]); - - assertArrayEquals( - ["isExtensible", target], log[0]); - assertArrayEquals( - ["ownKeys", target], log[1]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey(0)], log[2]); - - // Frozen. - - log.length = 0; - Object.freeze(target); - - Object.isFrozen(proxy); - assertEquals(6, log.length) - for (var i in log) assertSame(target, log[i][1]); - - assertArrayEquals( - ["isExtensible", target], log[0]); - assertArrayEquals( - ["ownKeys", target], log[1]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey(0)], log[2]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey("length")], log[3]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey("wurst")], log[4]); - assertArrayEquals( - ["getOwnPropertyDescriptor", target, toKey(symbol)], log[5]); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-is-extensible.js b/implementation-contributed/v8/mjsunit/es6/proxies-is-extensible.js deleted file mode 100644 index 9ab2c05f96c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-is-extensible.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function () { - // No trap. - - var target = {}; - var handler = {}; - var proxy = new Proxy(target, handler); - - assertTrue(Reflect.isExtensible(target)); - assertTrue(Reflect.isExtensible(proxy)); - assertTrue(Reflect.preventExtensions(proxy)); - assertFalse(Reflect.isExtensible(target)); - assertFalse(Reflect.isExtensible(proxy)); -})(); - - -(function () { - // "Undefined" trap. - - var target = {}; - var handler = { isExtensible: null }; - var proxy = new Proxy(target, handler); - - assertTrue(Reflect.isExtensible(target)); - assertTrue(Reflect.isExtensible(proxy)); - assertTrue(Reflect.preventExtensions(proxy)); - assertFalse(Reflect.isExtensible(target)); - assertFalse(Reflect.isExtensible(proxy)); -})(); - - -(function () { - // Invalid trap. - - var target = {}; - var handler = { isExtensible: true }; - var proxy = new Proxy(target, handler); - - assertThrows(() => {Reflect.isExtensible(proxy)}, TypeError); -})(); - - -(function () { - var target = {}; - var handler = { isExtensible() {return "bla"} }; - var proxy = new Proxy(target, handler); - - // Trap returns trueish and target is extensible. - assertTrue(Reflect.isExtensible(proxy)); - - // Trap returns trueish but target is not extensible. - Reflect.preventExtensions(target); - assertThrows(() => {Reflect.isExtensible(proxy)}, TypeError); -})(); - - -(function () { - var target = {}; - var handler = { isExtensible() {return 0} }; - var proxy = new Proxy(target, handler); - - // Trap returns falsish but target is extensible. - assertThrows(() => {Reflect.isExtensible(proxy)}, TypeError); - - // Trap returns falsish and target is not extensible. - Reflect.preventExtensions(target); - assertFalse(Reflect.isExtensible(proxy)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-json.js b/implementation-contributed/v8/mjsunit/es6/proxies-json.js deleted file mode 100644 index 6b40e3ee7d8..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-json.js +++ /dev/null @@ -1,562 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -/////////////////////////////////////////////////////////////////////////////// -// JSON.stringify - - -function testStringify(expected, object) { - // Test fast case that bails out to slow case. - assertEquals(expected, JSON.stringify(object)); - // Test slow case. - assertEquals(expected, JSON.stringify(object, (key, value) => value)); - // Test gap. - assertEquals(JSON.stringify(object, null, "="), - JSON.stringify(object, (key, value) => value, "=")); -} - - -// Test serializing a proxy, a function proxy, and objects that contain them. - -var handler1 = { - get: function(target, name) { - return name.toUpperCase(); - }, - ownKeys: function() { - return ['a', 'b', 'c']; - }, - getOwnPropertyDescriptor: function() { - return { enumerable: true, configurable: true }; - } -} - -var proxy1 = new Proxy({}, handler1); -testStringify('{"a":"A","b":"B","c":"C"}', proxy1); - -var proxy_fun = new Proxy(() => {}, handler1); -assertTrue(typeof(proxy_fun) === 'function'); -testStringify(undefined, proxy_fun); -testStringify('[1,null]', [1, proxy_fun]); - -handler1.apply = function() { return 666; }; -testStringify(undefined, proxy_fun); -testStringify('[1,null]', [1, proxy_fun]); - -var parent1a = { b: proxy1 }; -testStringify('{"b":{"a":"A","b":"B","c":"C"}}', parent1a); -testStringify('{"b":{"a":"A","b":"B","c":"C"}}', parent1a); - -var parent1b = { a: 123, b: proxy1, c: true }; -testStringify('{"a":123,"b":{"a":"A","b":"B","c":"C"},"c":true}', parent1b); - -var parent1c = [123, proxy1, true]; -testStringify('[123,{"a":"A","b":"B","c":"C"},true]', parent1c); - - -// Proxy with side effect. - -var handler2 = { - get: function(target, name) { - delete parent2.c; - return name.toUpperCase(); - }, - ownKeys: function() { - return ['a', 'b', 'c']; - }, - getOwnPropertyDescriptor: function() { - return { enumerable: true, configurable: true }; - } -} - -var proxy2 = new Proxy({}, handler2); -var parent2 = { a: "delete", b: proxy2, c: "remove" }; -var expected2 = '{"a":"delete","b":{"a":"A","b":"B","c":"C"}}'; -assertEquals(expected2, JSON.stringify(parent2)); -parent2.c = "remove"; // Revert side effect. -assertEquals(expected2, JSON.stringify(parent2, undefined, 0)); - - -// Proxy with a get function that uses the receiver argument. - -var handler3 = { - get: function(target, name, receiver) { - if (name == 'valueOf' || name === Symbol.toPrimitive) { - return function() { return "proxy" }; - }; - if (typeof name !== 'symbol') return name + "(" + receiver + ")"; - }, - ownKeys: function() { - return ['a', 'b', 'c']; - }, - getOwnPropertyDescriptor: function() { - return { enumerable: true, configurable: true }; - } -} - -var proxy3 = new Proxy({}, handler3); -var parent3 = { x: 123, y: proxy3 } -testStringify('{"x":123,"y":{"a":"a(proxy)","b":"b(proxy)","c":"c(proxy)"}}', - parent3); - - -// Empty proxy. - -var handler4 = { - get: function(target, name) { - return 0; - }, - has: function() { - return true; - }, - getOwnPropertyDescriptor: function(target, name) { - return { enumerable: false }; - } -} - -var proxy4 = new Proxy({}, handler4); -testStringify('{}', proxy4); -testStringify('{"a":{}}', { a: proxy4 }); - - -// Proxy that provides a toJSON function that uses this. - -var handler5 = { - get: function(target, name) { - if (name == 'z') return 97000; - return function(key) { return key.charCodeAt(0) + this.z; }; - }, - ownKeys: function(target) { - return ['toJSON', 'z']; - }, - has: function() { - return true; - }, - getOwnPropertyDescriptor: function(target, name) { - return { enumerable: true }; - } -} - -var proxy5 = new Proxy({}, handler5); -testStringify('{"a":97097}', { a: proxy5 }); - - -// Proxy that provides a toJSON function that returns undefined. - -var handler6 = { - get: function(target, name) { - return function(key) { return undefined; }; - }, - ownKeys: function(target) { - return ['toJSON']; - }, - has: function() { - return true; - }, - getOwnPropertyDescriptor: function(target, name) { - return { enumerable: true }; - } -} - -var proxy6 = new Proxy({}, handler6); -testStringify('[1,null,true]', [1, proxy6, true]); -testStringify('{"a":1,"c":true}', {a: 1, b: proxy6, c: true}); - - -// Object containing a proxy that changes the parent's properties. - -var handler7 = { - get: function(target, name) { - delete parent7.a; - delete parent7.c; - parent7.e = "5"; - return name.toUpperCase(); - }, - ownKeys: function() { - return ['a', 'b', 'c']; - }, - getOwnPropertyDescriptor: function() { - return { enumerable: true, configurable: true }; - } -} - -var proxy7 = new Proxy({}, handler7); -var parent7 = { a: "1", b: proxy7, c: "3", d: "4" }; -assertEquals('{"a":"1","b":{"a":"A","b":"B","c":"C"},"d":"4"}', - JSON.stringify(parent7)); -assertEquals('{"b":{"a":"A","b":"B","c":"C"},"d":"4","e":"5"}', - JSON.stringify(parent7)); - - -// (Proxy handler to log trap calls) - -var log = []; -var logger = {}; -var handler = new Proxy({}, logger); - -logger.get = function(t, trap, r) { - return function() { - log.push([trap, ...arguments]); - return Reflect[trap](...arguments); - } -}; - - -// Object is a callable proxy - -log.length = 0; -var target = () => 42; -var proxy = new Proxy(target, handler); -assertTrue(typeof proxy === 'function'); - -assertEquals(undefined, JSON.stringify(proxy)); -assertEquals(1, log.length) -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(["get", target, "toJSON", proxy], log[0]); - - -// Object is a non-callable non-arraylike proxy - -log.length = 0; -var target = {foo: 42} -var proxy = new Proxy(target, handler); -assertFalse(Array.isArray(proxy)); - -assertEquals('{"foo":42}', JSON.stringify(proxy)); -assertEquals(4, log.length) -for (var i in log) assertSame(target, log[i][1]); - -assertEquals( - ["get", target, "toJSON", proxy], log[0]); -assertEquals( - ["ownKeys", target], log[1]); // EnumerableOwnNames -assertEquals( - ["getOwnPropertyDescriptor", target, "foo"], log[2]); // EnumerableOwnNames -assertEquals( - ["get", target, "foo", proxy], log[3]); - - -// Object is an arraylike proxy - -log.length = 0; -var target = [42]; -var proxy = new Proxy(target, handler); -assertTrue(Array.isArray(proxy)); - -assertEquals('[42]', JSON.stringify(proxy)); -assertEquals(3, log.length) -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(["get", target, "toJSON", proxy], log[0]); -assertEquals(["get", target, "length", proxy], log[1]); -assertEquals(["get", target, "0", proxy], log[2]); - - -// Replacer is a callable proxy - -log.length = 0; -var object = {0: "foo", 1: 666}; -var target = (key, val) => key == "1" ? val + 42 : val; -var proxy = new Proxy(target, handler); -assertTrue(typeof proxy === 'function'); - -assertEquals('{"0":"foo","1":708}', JSON.stringify(object, proxy)); -assertEquals(3, log.length) -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(4, log[0].length) -assertEquals("apply", log[0][0]); -assertEquals("", log[0][3][0]); -assertEquals({0: "foo", 1: 666}, log[0][3][1]); -assertEquals(4, log[1].length) -assertEquals("apply", log[1][0]); -assertEquals(["0", "foo"], log[1][3]); -assertEquals(4, log[2].length) -assertEquals("apply", log[2][0]); -assertEquals(["1", 666], log[2][3]); - - -// Replacer is an arraylike proxy - -log.length = 0; -var object = {0: "foo", 1: 666}; -var target = [0]; -var proxy = new Proxy(target, handler); -assertTrue(Array.isArray(proxy)); - -assertEquals('{"0":"foo"}', JSON.stringify(object, proxy)); -assertEquals(2, log.length) -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(["get", target, "length", proxy], log[0]); -assertEquals(["get", target, "0", proxy], log[1]); - - -// Replacer is an arraylike proxy and object is an array - -log.length = 0; -var object = ["foo", 42]; -var target = [0]; -var proxy = new Proxy(target, handler); -assertTrue(Array.isArray(proxy)); - -assertEquals('["foo",42]', JSON.stringify(object, proxy)); -assertEquals(2, log.length); -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(["get", target, "length", proxy], log[0]); -assertEquals(["get", target, "0", proxy], log[1]); - - -// Replacer is an arraylike proxy with a non-trivial length - -var getTrap = function(t, key) { - if (key === "length") return {[Symbol.toPrimitive]() {return 42}}; - if (key === "41") return "foo"; - if (key === "42") return "bar"; -}; -var target = []; -var proxy = new Proxy(target, {get: getTrap}); -assertTrue(Array.isArray(proxy)); -var object = {foo: true, bar: 666}; -assertEquals('{"foo":true}', JSON.stringify(object, proxy)); - - -// Replacer is an arraylike proxy with a bogus length - -var getTrap = function(t, key) { - if (key === "length") return Symbol(); - if (key === "41") return "foo"; - if (key === "42") return "bar"; -}; -var target = []; -var proxy = new Proxy(target, {get: getTrap}); -assertTrue(Array.isArray(proxy)); -var object = {foo: true, bar: 666}; -assertThrows(() => JSON.stringify(object, proxy), TypeError); - - -// Replacer returns a non-callable non-arraylike proxy - -log.length = 0; -var object = ["foo", 42]; -var target = {baz: 5}; -var proxy = new Proxy(target, handler); -var replacer = (key, val) => key === "1" ? proxy : val; - -assertEquals('["foo",{"baz":5}]', JSON.stringify(object, replacer)); -assertEquals(3, log.length); -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(["ownKeys", target], log[0]); -assertEquals(["getOwnPropertyDescriptor", target, "baz"], log[1]); - - -// Replacer returns an arraylike proxy - -log.length = 0; -var object = ["foo", 42]; -var target = ["bar"]; -var proxy = new Proxy(target, handler); -var replacer = (key, val) => key === "1" ? proxy : val; - -assertEquals('["foo",["bar"]]', JSON.stringify(object, replacer)); -assertEquals(2, log.length); -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(["get", target, "length", proxy], log[0]); -assertEquals(["get", target, "0", proxy], log[1]); - - -// Replacer returns an arraylike proxy with a non-trivial length - -var getTrap = function(t, key) { - if (key === "length") return {[Symbol.toPrimitive]() {return 3}}; - if (key === "2") return "baz"; - if (key === "3") return "bar"; -}; -var target = []; -var proxy = new Proxy(target, {get: getTrap}); -var replacer = (key, val) => key === "goo" ? proxy : val; -var object = {foo: true, goo: false}; -assertEquals('{"foo":true,"goo":[null,null,"baz"]}', - JSON.stringify(object, replacer)); - - -// Replacer returns an arraylike proxy with a bogus length - -var getTrap = function(t, key) { - if (key === "length") return Symbol(); - if (key === "2") return "baz"; - if (key === "3") return "bar"; -}; -var target = []; -var proxy = new Proxy(target, {get: getTrap}); -var replacer = (key, val) => key === "goo" ? proxy : val; -var object = {foo: true, goo: false}; -assertThrows(() => JSON.stringify(object, replacer), TypeError); - - -// Replacer returns a callable proxy - -log.length = 0; -var target = () => 666; -var proxy = new Proxy(target, handler); -var replacer = (key, val) => key === "1" ? proxy : val; - -assertEquals('["foo",null]', JSON.stringify(["foo", 42], replacer)); -assertEquals(0, log.length); - -assertEquals('{"0":"foo"}', JSON.stringify({0: "foo", 1: 42}, replacer)); -assertEquals(0, log.length); - - - -/////////////////////////////////////////////////////////////////////////////// -// JSON.parse - - -// Reviver is a callable proxy - -log.length = 0; -var target = () => 42; -var proxy = new Proxy(target, handler); -assertTrue(typeof proxy === "function"); - -assertEquals(42, JSON.parse("[true, false]", proxy)); -assertEquals(3, log.length); -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(4, log[0].length); -assertEquals("apply", log[0][0]); -assertEquals(["0", true], log[0][3]); -assertEquals(4, log[1].length); -assertEquals("apply", log[1][0]); -assertEquals(["1", false], log[1][3]); -assertEquals(4, log[2].length); -assertEquals("apply", log[2][0]); -assertEquals(["", [42, 42]], log[2][3]); - - -// Reviver plants a non-arraylike proxy into a yet-to-be-visited property - -log.length = 0; -var target = {baz: 42}; -var proxy = new Proxy(target, handler); -var reviver = function(p, v) { - if (p === "baz") return 5; - if (p === "foo") this.bar = proxy; - return v; -} - -assertEquals({foo: 0, bar: proxy}, JSON.parse('{"foo":0,"bar":1}', reviver)); -assertEquals(4, log.length); -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(["ownKeys", target], log[0]); -assertEquals(["getOwnPropertyDescriptor", target, "baz"], log[1]); -assertEquals(["get", target, "baz", proxy], log[2]); -assertEquals(["defineProperty", target, "baz", - {value: 5, configurable: true, writable: true, enumerable: true}], log[3]); - - -// Reviver plants an arraylike proxy into a yet-to-be-visited property - -log.length = 0; -var target = [42]; -var proxy = new Proxy(target, handler); -assertTrue(Array.isArray(proxy)); -var reviver = function(p, v) { - if (p === "0") return undefined; - if (p === "foo") this.bar = proxy; - return v; -} - -var result = JSON.parse('{"foo":0,"bar":1}', reviver); -assertEquals({foo: 0, bar: proxy}, result); -assertSame(result.bar, proxy); -assertEquals(3, log.length); -for (var i in log) assertSame(target, log[i][1]); - -assertEquals(["get", target, "length", proxy], log[0]); -assertEquals(["get", target, "0", proxy], log[1]); -assertEquals(["deleteProperty", target, "0"], log[2]); - -proxy = new Proxy([], { - get: function(target, property) { - if (property == "length") return 7; - return 0; - }, -}); -assertEquals('[[0,0,0,0,0,0,0]]', JSON.stringify([proxy])); - -proxy = new Proxy([], { - get: function(target, property) { - if (property == "length") return 1E40; - return 0; - }, -}); -assertThrows(() => JSON.stringify([proxy]), RangeError); - -log = []; -proxy = new Proxy({}, { - ownKeys: function() { - log.push("ownKeys"); - return ["0", "a", "b"]; - }, - get: function(target, property) { - log.push("get " + property); - return property.toUpperCase(); - }, - getOwnPropertyDescriptor: function(target, property) { - log.push("descriptor " + property); - return {enumerable: true, configurable: true}; - }, - isExtensible: assertUnreachable, - has: assertUnreachable, - getPrototypeOf: assertUnreachable, - setPrototypeOf: assertUnreachable, - preventExtensions: assertUnreachable, - setPrototypeOf: assertUnreachable, - defineProperty: assertUnreachable, - set: assertUnreachable, - deleteProperty: assertUnreachable, - apply: assertUnreachable, - construct: assertUnreachable, -}); - -assertEquals('[{"0":"0","a":"A","b":"B"}]', JSON.stringify([proxy])); -assertEquals(['get toJSON', - 'ownKeys', - 'descriptor 0', - 'descriptor a', - 'descriptor b', - 'get 0', - 'get a', - 'get b'], log); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-keys.js b/implementation-contributed/v8/mjsunit/es6/proxies-keys.js deleted file mode 100644 index 4781ae37f40..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-keys.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testObjectKeys() { - var target = { - target: 1 - }; - target.__proto__ = { - target_proto: 2 - }; - - var handler = { - ownKeys: function(target) { - return ["foo", "bar", Symbol("baz"), "non-enum", "not-found"]; - }, - getOwnPropertyDescriptor: function(target, name) { - if (name == "non-enum") return {configurable: true}; - if (name == "not-found") return undefined; - return {enumerable: true, configurable: true}; - } - } - - var proxy = new Proxy(target, handler); - - // Object.keys() ignores symbols and non-enumerable keys. - assertEquals(["foo", "bar"], Object.keys(proxy)); - - // Edge case: no properties left after filtering. - handler.getOwnPropertyDescriptor = undefined; - assertEquals([], Object.keys(proxy)); - - // Throwing shouldn't crash. - handler.getOwnPropertyDescriptor = function() { throw new Number(1); }; - assertThrows(() => Object.keys(proxy), Number); - - // Fall through to getOwnPropertyDescriptor if there is no trap. - handler.ownKeys = undefined; - assertThrows(() => Object.keys(proxy), Number); - - // Fall through to target if there is no trap. - handler.getOwnPropertyDescriptor = undefined; - assertEquals(["target"], Object.keys(proxy)); - assertEquals(["target"], Object.keys(target)); - - var proxy2 = new Proxy(proxy, {}); - assertEquals(["target"], Object.keys(proxy2)); -})(); - -(function testForSymbols() { - var symbol = Symbol(); - var p = new Proxy({}, {ownKeys() { return ["1", symbol, "2"] }}); - assertEquals(["1","2"], Object.getOwnPropertyNames(p)); - assertEquals([symbol], Object.getOwnPropertySymbols(p)); -})(); - -(function testNoProxyTraps() { - var test_sym = Symbol("sym1"); - var test_sym2 = Symbol("sym2"); - var target = { - one: 1, - two: 2, - [test_sym]: 4, - 0: 0, - }; - Object.defineProperty( - target, "non-enum", - { enumerable: false, value: "nope", configurable: true, writable: true }); - target.__proto__ = { - target_proto: 3, - 1: 1, - [test_sym2]: 5 - }; - Object.defineProperty( - target.__proto__, "non-enum2", - { enumerable: false, value: "nope", configurable: true, writable: true }); - var proxy = new Proxy(target, {}); - - assertEquals(["0", "one", "two"], Object.keys(proxy)); - assertEquals(["0", "one", "two", "non-enum"], - Object.getOwnPropertyNames(proxy)); - assertEquals([test_sym], Object.getOwnPropertySymbols(proxy)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-object-assign.js b/implementation-contributed/v8/mjsunit/es6/proxies-object-assign.js deleted file mode 100644 index c350f4e879d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-object-assign.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var handler = { - ownKeys: function(t) { return ["a", "b"]; }, - getOwnPropertyDescriptor: function(t, p) { - return {enumerable: true, configurable: true} - }, - get: function(t, p) { - return 1; - } -}; - -var proxy = new Proxy({}, handler); - -var o = {}; - -Object.assign(o, proxy); - -assertEquals({"a": 1, "b": 1}, o); - -(function TestStringSources() { - var source = "abc"; - var target = {}; - Object.assign(target, source); - assertEquals({0: "a", 1: "b", 2: "c"}, target); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-ownkeys.js b/implementation-contributed/v8/mjsunit/es6/proxies-ownkeys.js deleted file mode 100644 index 3b9011acdc4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-ownkeys.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var target = { - "target_one": 1 -}; -target.__proto__ = { - "target_proto_two": 2 -}; -var handler = { - ownKeys: function(target) { - return ["foo", "bar"]; - } -} - -var proxy = new Proxy(target, handler); - -// Simple case. -assertEquals(["foo", "bar"], Reflect.ownKeys(proxy)); - -// Test interesting steps of the algorithm: - -// Step 6: Fall through to target.[[OwnPropertyKeys]] if the trap is undefined. -handler.ownKeys = undefined; -assertEquals(["target_one"], Reflect.ownKeys(proxy)); - -// Step 7: Throwing traps don't crash. -handler.ownKeys = function(target) { throw 1; }; -assertThrows("Reflect.ownKeys(proxy)"); - -// Step 8: CreateListFromArrayLike error cases: -// Returning a non-Object throws. -var keys = 1; -handler.ownKeys = function(target) { return keys; }; -assertThrows("Reflect.ownKeys(proxy)", TypeError); -keys = "string"; -assertThrows("Reflect.ownKeys(proxy)", TypeError); -keys = Symbol("foo"); -assertThrows("Reflect.ownKeys(proxy)", TypeError); -keys = null; -assertThrows("Reflect.ownKeys(proxy)", TypeError); - -// "length" property is honored. -keys = { 0: "a", 1: "b", 2: "c" }; -keys.length = 0; -assertEquals([], Reflect.ownKeys(proxy)); -keys.length = 1; -assertEquals(["a"], Reflect.ownKeys(proxy)); -keys.length = 3; -assertEquals(["a", "b", "c"], Reflect.ownKeys(proxy)); -// The spec wants to allow lengths up to 2^53, but we can't allocate arrays -// of that size, so we throw even for smaller values. -keys.length = Math.pow(2, 33); -assertThrows("Reflect.ownKeys(proxy)", RangeError); - -// Check that we don't allow duplicated keys. -keys = ['a', 'a', 'a'] -assertThrows("Reflect.ownKeys(proxy)", TypeError); - -// Non-Name results throw. -keys = [1]; -assertThrows("Reflect.ownKeys(proxy)", TypeError); -keys = [{}]; -assertThrows("Reflect.ownKeys(proxy)", TypeError); -keys = [{toString: function() { return "foo"; }}]; -assertThrows("Reflect.ownKeys(proxy)", TypeError); -keys = [null]; -assertThrows("Reflect.ownKeys(proxy)", TypeError); - -// Step 17a: The trap result must include all non-configurable keys. -Object.defineProperty(target, "nonconf", {value: 1, configurable: false}); -keys = ["foo"]; -assertThrows("Reflect.ownKeys(proxy)", TypeError); -keys = ["nonconf"]; -assertEquals(keys, Reflect.ownKeys(proxy)); - -// Check that we don't allow duplicated keys. -keys = ['nonconf', 'nonconf', 'nonconf'] -assertThrows("Reflect.ownKeys(proxy)", TypeError); - -// Step 19a: The trap result must all keys of a non-extensible target. -Object.preventExtensions(target); -assertThrows("Reflect.ownKeys(proxy)", TypeError); -keys = ["nonconf", "target_one"]; -assertEquals(keys, Reflect.ownKeys(proxy)); - -// Step 20: The trap result must not add keys to a non-extensible target. -keys = ["nonconf", "target_one", "fantasy"]; -assertThrows("Reflect.ownKeys(proxy)", TypeError); - -// Check that we don't allow duplicated keys. -keys = ['nonconf', 'target_one', 'nonconf', 'nonconf', 'target_one',] -assertThrows("Reflect.ownKeys(proxy)", TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-prevent-extensions.js b/implementation-contributed/v8/mjsunit/es6/proxies-prevent-extensions.js deleted file mode 100644 index dc3c42ed12b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-prevent-extensions.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function () { - // No trap. - - var target = {}; - var handler = {}; - var proxy = new Proxy(target, handler); - - assertTrue(Reflect.isExtensible(target)); - assertTrue(Reflect.isExtensible(proxy)); - assertTrue(Reflect.preventExtensions(proxy)); - assertFalse(Reflect.isExtensible(target)); - assertFalse(Reflect.isExtensible(proxy)); -})(); - - -(function () { - // "Undefined" trap. - - var target = {}; - var handler = { preventExtensions: null }; - var proxy = new Proxy(target, handler); - - assertTrue(Reflect.isExtensible(target)); - assertTrue(Reflect.isExtensible(proxy)); - assertTrue(Reflect.preventExtensions(proxy)); - assertFalse(Reflect.isExtensible(target)); - assertFalse(Reflect.isExtensible(proxy)); -})(); - - -(function () { - // Invalid trap. - - var target = {}; - var handler = { preventExtensions: 42 }; - var proxy = new Proxy(target, handler); - - assertThrows(() => {Reflect.preventExtensions(proxy)}, TypeError); -})(); - - -(function () { - var target = {}; - var handler = { isExtensible() {return "bla"} }; - var proxy = new Proxy(target, handler); - - // Trap returns trueish and target is extensible. - assertTrue(Reflect.isExtensible(proxy)); - - // Trap returns trueish but target is not extensible. - Reflect.preventExtensions(target); - assertThrows(() => {Reflect.isExtensible(proxy)}, TypeError); -})(); - - -(function () { - // Trap returns falsish. - - var target = {}; - var handler = { preventExtensions() {return 0} }; - var proxy = new Proxy(target, handler); - - assertFalse(Reflect.preventExtensions(proxy)); - Reflect.preventExtensions(target); - assertFalse(Reflect.preventExtensions(proxy)); -})(); - - -(function () { - var target = {}; - var handler = { preventExtensions() {return Symbol()} }; - var proxy = new Proxy(target, handler); - - // Trap returns trueish but target is extensible. - assertThrows(() => {Reflect.preventExtensions(proxy)}, TypeError); - - // Trap returns trueish and target is not extensible. - Reflect.preventExtensions(target); - assertTrue(Reflect.preventExtensions(proxy)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-property-is-enumerable.js b/implementation-contributed/v8/mjsunit/es6/proxies-property-is-enumerable.js deleted file mode 100644 index 0d4a92f1b6b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-property-is-enumerable.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var handler = {}; -var target = { a: 1 }; -var proxy = new Proxy(target, handler); - -assertTrue(target.propertyIsEnumerable('a')); -assertTrue(proxy.propertyIsEnumerable('a')); -assertFalse(target.propertyIsEnumerable('b')); -assertFalse(proxy.propertyIsEnumerable('b')); - -handler.getOwnPropertyDescriptor = function(target, prop) { - return { configurable: true, enumerable: true, value: 10 }; -} -assertTrue(target.propertyIsEnumerable('a')); -assertTrue(proxy.propertyIsEnumerable('a')); -assertFalse(target.propertyIsEnumerable('b')); -assertTrue(proxy.propertyIsEnumerable('b')); - -handler.getOwnPropertyDescriptor = function(target, prop) { - return { configurable: true, enumerable: false, value: 10 }; -} -assertTrue(target.propertyIsEnumerable('a')); -assertFalse(proxy.propertyIsEnumerable('a')); -assertFalse(target.propertyIsEnumerable('b')); -assertFalse(proxy.propertyIsEnumerable('b')); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-prototype-handler-stackoverflow.js b/implementation-contributed/v8/mjsunit/es6/proxies-prototype-handler-stackoverflow.js deleted file mode 100644 index 3da36c451d6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-prototype-handler-stackoverflow.js +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -// Test that traps that involve walking the target object's prototype chain -// don't overflow the stack when the original proxy is on that chain. - -(function TestGetPrototype() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { return p.__proto__; } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestSetPrototype() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { p.__proto__ = p; } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestHasProperty() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { - return Reflect.has(p, "foo"); - } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestSet() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { p.foo = 1; } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestGet() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { return p.foo; } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestEnumerate() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { for (var x in p) {} } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestIsExtensible() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { - return Reflect.isExtensible(p); - } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestPreventExtensions() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { - Reflect.preventExtensions(p); - } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestGetOwnPropertyDescriptor() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { - return Object.getOwnPropertyDescriptor(p, "foo"); - } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestDeleteProperty() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { delete p.foo; } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestDefineProperty() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { - Object.defineProperty(p, "foo", {value: "bar"}); - } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestOwnKeys() { - var handler = {}; - var p = new Proxy({}, handler); - handler.__proto__ = p; - try { - return Reflect.ownKeys(p); - } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestCall() { - var handler = {}; - var p = new Proxy(function() {}, handler); - handler.__proto__ = p; - try { return p(); } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestConstruct() { - var handler = {}; - var p = new Proxy(function() { this.foo = 1; }, handler); - handler.__proto__ = p; - try { return new p(); } catch(e) { assertInstanceof(e, RangeError); } -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-prototype-target-stackoverflow.js b/implementation-contributed/v8/mjsunit/es6/proxies-prototype-target-stackoverflow.js deleted file mode 100644 index 741a8b0ed57..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-prototype-target-stackoverflow.js +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that traps that involve walking the target object's prototype chain -// don't overflow the stack when the original proxy is on that chain. - -(function TestGetPrototype() { - var p = new Proxy({}, {}); - p.__proto__ = p; - try { return p.__proto__; } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestSetPrototype() { - var p = new Proxy({}, {}); - p.__proto__ = p; - try { p.__proto__ = p; } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestHasProperty() { - var p = new Proxy({}, {}); - p.__proto__ = p; - try { - return Reflect.has(p, "foo"); - } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestSet() { - var p = new Proxy({}, {}); - p.__proto__ = p; - try { p.foo = 1; } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestGet() { - var p = new Proxy({}, {}); - p.__proto__ = p; - try { return p.foo; } catch(e) { assertInstanceof(e, RangeError); } -})(); - -(function TestEnumerate() { - var p = new Proxy({}, {}); - p.__proto__ = p; - try { for (var x in p) {} } catch(e) { assertInstanceof(e, RangeError); } -})(); - -// The following traps don't involve the target object's prototype chain; -// we test them anyway for completeness. - -(function TestIsExtensible() { - var p = new Proxy({}, {}); - p.__proto__ = p; - return Reflect.isExtensible(p); -})(); - -(function TestPreventExtensions() { - var p = new Proxy({}, {}); - p.__proto__ = p; - Reflect.preventExtensions(p); -})(); - -(function TestGetOwnPropertyDescriptor() { - var p = new Proxy({}, {}); - p.__proto__ = p; - return Object.getOwnPropertyDescriptor(p, "foo"); -})(); - -(function TestDeleteProperty() { - var p = new Proxy({}, {}); - p.__proto__ = p; - delete p.foo; -})(); - -(function TestDefineProperty() { - var p = new Proxy({}, {}); - p.__proto__ = p; - Object.defineProperty(p, "foo", {value: "bar"}); -})(); - -(function TestOwnKeys() { - var p = new Proxy({}, {}); - p.__proto__ = p; - return Reflect.ownKeys(p); -})(); - -(function TestCall() { - var p = new Proxy(function() {}, {}); - p.__proto__ = p; - return p(); -})(); - -(function TestConstruct() { - var p = new Proxy(function() { this.foo = 1; }, {}); - p.__proto__ = p; - return new p(); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-revocable.js b/implementation-contributed/v8/mjsunit/es6/proxies-revocable.js deleted file mode 100644 index 1f61174a356..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-revocable.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -traps = [ - "getPrototypeOf", "setPrototypeOf", "isExtensible", "preventExtensions", - "getOwnPropertyDescriptor", "has", "get", "set", "deleteProperty", - "defineProperty", "ownKeys", "apply", "construct" -]; - -var {proxy, revoke} = Proxy.revocable({}, {}); -assertEquals(0, revoke.length); - -assertEquals(undefined, revoke()); -for (var trap of traps) { - assertThrows(() => Reflect[trap](proxy), TypeError); -} - -assertEquals(undefined, revoke()); -for (var trap of traps) { - assertThrows(() => Reflect[trap](proxy), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-set-prototype-of.js b/implementation-contributed/v8/mjsunit/es6/proxies-set-prototype-of.js deleted file mode 100644 index 9d9e73f9084..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-set-prototype-of.js +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var target = { target: 1 }; -target.__proto__ = {}; -var handler = { handler: 1 }; -var proxy = new Proxy(target, handler); - -assertSame(Object.getPrototypeOf(proxy), target.__proto__ ); - - -assertThrows(function() { Object.setPrototypeOf(proxy, undefined) }, TypeError); -assertThrows(function() { Object.setPrototypeOf(proxy, 1) }, TypeError); - -var prototype = [1]; -assertSame(proxy, Object.setPrototypeOf(proxy, prototype)); -assertSame(prototype, Object.getPrototypeOf(proxy)); -assertSame(prototype, Object.getPrototypeOf(target)); - -var pair = Proxy.revocable(target, handler); -assertSame(pair.proxy, Object.setPrototypeOf(pair.proxy, prototype)); -assertSame(prototype, Object.getPrototypeOf(pair.proxy)); -pair.revoke(); -assertThrows('Object.setPrototypeOf(pair.proxy, prototype)', TypeError); - -handler.setPrototypeOf = function(target, proto) { - return false; -}; -assertThrows(function() { Object.setPrototypeOf(proxy, {a:1}) }, TypeError); - -handler.setPrototypeOf = function(target, proto) { - return undefined; -}; -assertThrows(function() { Object.setPrototypeOf(proxy, {a:2}) }, TypeError); - -handler.setPrototypeOf = function(proto) {}; -assertThrows(function() { Object.setPrototypeOf(proxy, {a:3}) }, TypeError); - -handler.setPrototypeOf = function(target, proto) { - throw Error(); -}; -assertThrows(function() { Object.setPrototypeOf(proxy, {a:4}) }, Error); - -var seen_prototype; -var seen_target; -handler.setPrototypeOf = function(target, proto) { - seen_target = target; - seen_prototype = proto; - return true; -} -assertSame(Object.setPrototypeOf(proxy, {a:5}), proxy); -assertSame(target, seen_target); -assertEquals({a:5}, seen_prototype); - -(function setPrototypeProxyTarget() { - var target = { target: 1 }; - target.__proto__ = {}; - var handler = {}; - var handler2 = {}; - var target2 = new Proxy(target, handler2); - var proxy2 = new Proxy(target2, handler); - assertSame(Object.getPrototypeOf(proxy2), target.__proto__ ); - - var prototype = [2,3]; - assertSame(proxy2, Object.setPrototypeOf(proxy2, prototype)); - assertSame(prototype, Object.getPrototypeOf(proxy2)); - assertSame(prototype, Object.getPrototypeOf(target)); -})(); - -(function testProxyTrapInconsistent() { - var target = { target: 1 }; - target.__proto__ = {}; - var handler = {}; - var handler2 = { - }; - - var target2 = new Proxy(target, handler); - var proxy2 = new Proxy(target2, handler2); - - // If the final target is extensible we can set any prototype. - var prototype = [1]; - Reflect.setPrototypeOf(proxy2, prototype); - assertSame(prototype, Reflect.getPrototypeOf(target)); - - handler2.setPrototypeOf = function(target, value) { - Reflect.setPrototypeOf(target, value); - return true; - }; - prototype = [2]; - Reflect.setPrototypeOf(proxy2, prototype); - assertSame(prototype, Reflect.getPrototypeOf(target)); - - // Prevent getting the target's prototype used to check the invariant. - var gotPrototype = false; - handler.getPrototypeOf = function() { - gotPrototype = true; - throw TypeError() - }; - // If the target is extensible we do not check the invariant. - prototype = [3]; - Reflect.setPrototypeOf(proxy2, prototype); - assertFalse(gotPrototype); - assertSame(prototype, Reflect.getPrototypeOf(target)); - - // Changing the prototype of a non-extensible target will trigger the - // invariant-check and throw in the above handler. - Reflect.preventExtensions(target); - assertThrows(() => {Reflect.setPrototypeOf(proxy2, [4])}, TypeError); - assertTrue(gotPrototype); - assertEquals([3], Reflect.getPrototypeOf(target)); - - // Setting the prototype of a non-extensible target is fine if the prototype - // doesn't change. - delete handler.getPrototypeOf; - Reflect.setPrototypeOf(proxy2, prototype); - // Changing the prototype will throw. - prototype = [5]; - assertThrows(() => {Reflect.setPrototypeOf(proxy2, prototype)}, TypeError); -})(); - -(function testProxyTrapReturnsFalse() { - var handler = {}; - handler.setPrototypeOf = () => false; - var target = new Proxy({}, {isExtensible: () => assertUnreachable()}); - var object = new Proxy(target, handler); - assertFalse(Reflect.setPrototypeOf(object, {})); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-set.js b/implementation-contributed/v8/mjsunit/es6/proxies-set.js deleted file mode 100644 index d56cec52f91..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-set.js +++ /dev/null @@ -1,408 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function sloppyDefaultSet(o, p, v) { return o[p] = v } -function sloppyReflectSet(o, p, v) { return Reflect.set(o, p, v) } -function strictDefaultSet(o, p, v) { "use strict"; return o[p] = v } -function strictReflectSet(o, p, v) { "use strict"; return Reflect.set(o, p, v) } - -sloppyDefaultSet.shouldThrow = false; -sloppyReflectSet.shouldThrow = false; -strictDefaultSet.shouldThrow = true; -strictReflectSet.shouldThrow = false; - -sloppyDefaultSet.returnsBool = false; -sloppyReflectSet.returnsBool = true; -strictDefaultSet.returnsBool = false; -strictReflectSet.returnsBool = true; - - -function assertTrueIf(flag, x) { if (flag) assertTrue(x) } -function assertFalseIf(flag, x) { if (flag) assertFalse(x) } -function assertSetFails(mySet, o, p, v) { - if (mySet.shouldThrow) { - assertThrows(() => mySet(o, p, v), TypeError); - } else { - assertFalseIf(mySet.returnsBool, mySet(o, p, v)); - } -} - - -function dataDescriptor(x) { - return {value: x, writable: true, enumerable: true, configurable: true}; -} - - -function toKey(x) { - if (typeof x === "symbol") return x; - return String(x); -} - - -var properties = - ["bla", "0", 1, Symbol(), {[Symbol.toPrimitive]() {return "a"}}]; - - -function TestForwarding(handler, mySet) { - assertTrue(undefined == handler.set); - assertTrue(undefined == handler.getOwnPropertyDescriptor); - assertTrue(undefined == handler.defineProperty); - - var target = {}; - var proxy = new Proxy(target, handler); - - // Property does not exist on target. - for (var p of properties) { - assertTrueIf(mySet.returnsBool, mySet(proxy, p, 42)); - assertSame(42, target[p]); - } - - // Property exists as writable data on target. - for (var p of properties) { - assertTrueIf(mySet.returnsBool, mySet(proxy, p, 0)); - assertSame(0, target[p]); - } - - // Property exists as non-writable data on target. - for (var p of properties) { - Object.defineProperty(target, p, - {value: 42, configurable: true, writable: false}); - assertSetFails(mySet, proxy, p, 42); - assertSetFails(mySet, proxy, p, 0); - assertEquals(42, target[p]); - } -}; - -(function () { - // No trap. - var handler = {}; - TestForwarding(handler, sloppyDefaultSet); - TestForwarding(handler, sloppyReflectSet); - TestForwarding(handler, strictDefaultSet); - TestForwarding(handler, strictReflectSet); -})(); - -(function () { - // "Undefined" trap. - var handler = { set: null }; - TestForwarding(handler, sloppyDefaultSet); - TestForwarding(handler, sloppyReflectSet); - TestForwarding(handler, strictDefaultSet); - TestForwarding(handler, strictReflectSet); -})(); - - -function TestForwarding2(mySet) { - // Check that setting on a proxy without "set" trap correctly triggers its - // "getOwnProperty" trap and its "defineProperty" trap. - - var target = {}; - var handler = {}; - var observations = []; - var proxy = new Proxy(target, handler); - - handler.getOwnPropertyDescriptor = function() { - observations.push(arguments); - return Reflect.getOwnPropertyDescriptor(...arguments); - } - - handler.defineProperty = function() { - observations.push(arguments); - return Reflect.defineProperty(...arguments); - } - - for (var p of properties) { - mySet(proxy, p, 42); - assertEquals(2, observations.length) - assertArrayEquals([target, toKey(p)], observations[0]); - assertSame(target, observations[0][0]); - assertArrayEquals([target, toKey(p), dataDescriptor(42)], observations[1]); - assertSame(target, observations[1][0]); - observations = []; - - mySet(proxy, p, 42); - assertEquals(2, observations.length) - assertArrayEquals([target, toKey(p)], observations[0]); - assertSame(target, observations[0][0]); - assertArrayEquals([target, toKey(p), {value: 42}], observations[1]); - assertSame(target, observations[1][0]); - observations = []; - } -} - -TestForwarding2(sloppyDefaultSet); -TestForwarding2(sloppyReflectSet); -TestForwarding2(strictDefaultSet); -TestForwarding2(strictReflectSet); - - -function TestInvalidTrap(proxy, mySet) { - for (var p of properties) { - assertThrows(() => mySet(proxy, p, 42), TypeError); - } -} - -(function () { - var target = {}; - var handler = { set: true }; - var proxy = new Proxy(target, handler); - - TestInvalidTrap(proxy, sloppyDefaultSet); - TestInvalidTrap(proxy, sloppyReflectSet); - TestInvalidTrap(proxy, strictDefaultSet); - TestInvalidTrap(proxy, strictReflectSet); -})(); - - -function TestTrappingFalsish(mySet) { - var target = {}; - var handler = { set() {return ""} }; - var proxy = new Proxy(target, handler); - - for (var p of properties) { - assertSetFails(mySet, proxy, p, 42); - } -} - -TestTrappingFalsish(sloppyDefaultSet); -TestTrappingFalsish(sloppyReflectSet); -TestTrappingFalsish(strictDefaultSet); -TestTrappingFalsish(strictReflectSet); - - -function TestTrappingTrueish(mySet) { - var target = {}; - var handler = { set() {return 42} }; - var proxy = new Proxy(target, handler); - - // Trap returns trueish and property does not exist in target. - for (var p of properties) { - assertTrueIf(mySet.returnsBool, mySet(proxy, p, 0)); - } - - // Trap returns trueish and target property is configurable or writable data. - for (var p of properties) { - Object.defineProperty(target, p, {configurable: true, writable: true}); - assertTrueIf(mySet.returnsBool, mySet(proxy, p, 0)); - Object.defineProperty(target, p, {configurable: true, writable: false}); - assertTrueIf(mySet.returnsBool, mySet(proxy, p, 0)); - Object.defineProperty(target, p, {configurable: false, writable: true}); - assertTrueIf(mySet.returnsBool, mySet(proxy, p, 0)); - } -} - -TestTrappingTrueish(sloppyDefaultSet); -TestTrappingTrueish(sloppyReflectSet); -TestTrappingTrueish(strictDefaultSet); -TestTrappingTrueish(strictReflectSet); - - -function TestTrappingTrueish2(mySet) { - var target = {}; - var handler = { set() {return 42} }; - var proxy = new Proxy(target, handler); - - // Trap returns trueish but target property is frozen data. - for (var p of properties) { - Object.defineProperty(target, p, { - configurable: false, writable: false, value: 0 - }); - assertThrows(() => mySet(proxy, p, 666), TypeError); // New value. - assertTrueIf(mySet.returnsBool, mySet(proxy, p, 0)); // Old value. - } -}; - -TestTrappingTrueish2(sloppyDefaultSet); -TestTrappingTrueish2(sloppyReflectSet); -TestTrappingTrueish2(strictDefaultSet); -TestTrappingTrueish2(strictReflectSet); - - -function TestTrappingTrueish3(mySet) { - var target = {}; - var handler = { set() {return 42} }; - var proxy = new Proxy(target, handler); - - // Trap returns trueish and target property is configurable accessor. - for (var p of properties) { - Object.defineProperty(target, p, { configurable: true, set: undefined }); - assertTrueIf(mySet.returnsBool, mySet(proxy, p, 0)); - } - - // Trap returns trueish and target property is non-configurable accessor. - for (var p of properties) { - Object.defineProperty(target, p, { configurable: false, set: undefined }); - assertThrows(() => mySet(proxy, p, 0)); - } -}; - -TestTrappingTrueish3(sloppyDefaultSet); -TestTrappingTrueish3(sloppyReflectSet); -TestTrappingTrueish3(strictDefaultSet); -TestTrappingTrueish3(strictReflectSet); - - -function TestTrapReceiverArgument(mySet) { - var target = {}; - var handler = {}; - var observations = []; - var proxy = new Proxy(target, handler); - var object = Object.create(proxy); - - handler.set = function() { - observations.push(arguments); - return Reflect.set(...arguments); - } - - for (var p of properties) { - mySet(object, p, 42); - assertEquals(1, observations.length) - assertArrayEquals([target, toKey(p), 42, object], observations[0]); - assertSame(target, observations[0][0]); - assertSame(object, observations[0][3]); - observations = []; - } -}; - -TestTrapReceiverArgument(sloppyDefaultSet); -TestTrapReceiverArgument(sloppyReflectSet); -TestTrapReceiverArgument(strictDefaultSet); -TestTrapReceiverArgument(strictReflectSet); - - -(function TestTrapReceiverArgument2() { - // Check that non-object receiver is passed through as well. - - var target = {}; - var handler = {}; - var observations = []; - var proxy = new Proxy(target, handler); - - handler.set = function() { - observations.push(arguments); - return Reflect.set(...arguments); - } - - for (var p of properties) { - for (var receiver of [null, undefined, 1]) { - Reflect.set(proxy, p, 42, receiver); - assertEquals(1, observations.length) - assertArrayEquals([target, toKey(p), 42, receiver], observations[0]); - assertSame(target, observations[0][0]); - assertSame(receiver, observations[0][3]); - observations = []; - } - } - - var object = Object.create(proxy); - for (var p of properties) { - for (var receiver of [null, undefined, 1]) { - Reflect.set(object, p, 42, receiver); - assertEquals(1, observations.length); - assertArrayEquals([target, toKey(p), 42, receiver], observations[0]); - assertSame(target, observations[0][0]); - assertSame(receiver, observations[0][3]); - observations = []; - } - } -})(); - - -function TestTargetProxy(mySet) { - var q = new Proxy({}, {}); - var proxy = new Proxy(q, { - set: function(t, k, v) { - return Reflect.set(t, k, v); - } - }); - - for (var p of properties) { - assertTrueIf(mySet.returnsBool, mySet(proxy, p, 42)); - assertSame(42, q[p]); - } -}; - -TestTargetProxy(sloppyDefaultSet); -TestTargetProxy(sloppyReflectSet); -TestTargetProxy(strictDefaultSet); -TestTargetProxy(strictReflectSet); - - -(function TestAccessorNoSet() { - var target = { - }; - Object.defineProperty(target, 'prop', { - get: function() { - return 42; - }, - configurable: false - }) - var handler = { - set: function() { return true; } - } - var proxy = new Proxy(target, handler); - assertThrows(function() { proxy.prop = 0; }, TypeError); -})(); - -(function TestProxyInPrototype() { - var handler = { - set: function(t, k, v) { - Reflect.set(t, k, v); - } - }; - var obj = {}; - var proxy = new Proxy(obj, handler); - var o = Object.create(proxy); - - for (var i = 0; i < 3; ++i) { - o.prop = 42 + i; - assertEquals(42 + i, obj.prop); - } -})(); - -(function TestProxyInPrototypeNoTrap() { - var handler = { - }; - var obj = {}; - var proxy = new Proxy(obj, handler); - var o = Object.create(proxy); - - for (var i = 0; i < 3; ++i) { - o.prop = 42 + i; - assertEquals(42 + i, o.prop); - assertEquals(undefined, obj.prop); - } -})(); - -// Note: this case is currently handled by runtime. -(function TestDifferentHolder() { - var obj = { - '1337': 100 - }; - var handler = { - set(target, name, value, receiver) { - if (name != '1337') return Reflect.set(target, name, value, receiver); - - assertSame(target, obj); - assertSame(receiver, p); - return target[name] = value; - } - }; - var p = new Proxy(obj, handler); - for (var i = 0; i < 3; ++i) { - assertEquals(42, p[1337] = 42); - } -})(); - -(function test32BitIndex() { - var index = (1 << 31) + 1; - var obj = {}; - obj[index] = 42; - var p = new Proxy(obj, {}); - for (var i = 0; i < 3; ++i) { - p[index] = 100; - assertEquals(100, obj[index]); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-with-unscopables.js b/implementation-contributed/v8/mjsunit/es6/proxies-with-unscopables.js deleted file mode 100644 index b9a7ad80124..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-with-unscopables.js +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function TestBasics() { - var log = []; - - var proxy = new Proxy({}, { - get: function(target, key) { - log.push("get " + String(key)); - if (key === 'x') return 1; - }, - has: function(target, key) { - log.push("has " + String(key)); - if (key === 'x') return true; - return false; - } - }); - - var x = 'local'; - - with (proxy) { - assertEquals(1, x); - } - - assertEquals(['has assertEquals', 'has x', 'get Symbol(Symbol.unscopables)', - 'get x'], log); -} -TestBasics(); - - -function TestInconsistent() { - var log = []; - - var proxy = new Proxy({}, { - get: function(target, key) { - log.push("get " + String(key)); - return undefined; - }, - has: function(target, key) { - log.push("has " + String(key)); - if (key === 'x') return true; - return false; - } - }); - - var x = 'local'; - - with (proxy) { - assertEquals(void 0, x); - } - - assertEquals(['has assertEquals', 'has x', 'get Symbol(Symbol.unscopables)', - 'get x'], log); -} -TestInconsistent(); - - -function TestUseProxyAsUnscopables() { - var x = 1; - var object = { - x: 2 - }; - var calls = 0; - var proxy = new Proxy({}, { - has: function() { - assertUnreachable(); - }, - get: function(target, key) { - assertEquals('x', key); - calls++; - return calls === 2 ? true : undefined; - } - }); - - object[Symbol.unscopables] = proxy; - - with (object) { - assertEquals(2, x); - assertEquals(1, x); - } - - // HasBinding, HasBinding - assertEquals(2, calls); -} -TestUseProxyAsUnscopables(); - - -function TestThrowInHasUnscopables() { - var x = 1; - var object = { - x: 2 - }; - - function CustomError() {} - - var calls = 0; - var proxy = new Proxy({}, { - has: function() { - assertUnreachable(); - }, - get: function(target, key) { - if (calls++ === 0) { - throw new CustomError(); - } - assertUnreachable(); - } - }); - - object[Symbol.unscopables] = proxy; - - assertThrows(function() { - with (object) { - x; - } - }, CustomError); -} -TestThrowInHasUnscopables(); - - -var global = this; -function TestGlobalShouldIgnoreUnscopables() { - global.x = 1; - var proxy = new Proxy({}, { - get: function() { - assertUnreachable(); - }, - has: function() { - assertUnreachable(); - } - }); - global[Symbol.unscopables] = proxy; - - assertEquals(1, global.x); - assertEquals(1, x); - - global.x = 2; - assertEquals(2, global.x); - assertEquals(2, x); - - x = 3; - assertEquals(3, global.x); - assertEquals(3, x); -} -TestGlobalShouldIgnoreUnscopables(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxies-with.js b/implementation-contributed/v8/mjsunit/es6/proxies-with.js deleted file mode 100644 index 710e8b5e2dc..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies-with.js +++ /dev/null @@ -1,351 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Helper. - -function TestWithProxies(test, x, y, z) { - test(function(h) { return new Proxy({}, h) }, x, y, z) - test(function(h) { - return new Proxy(function() {}, h) - }, x, y, z) -} - - - -// Getting. - -function TestWithGet(handler) { - TestWithProxies(TestWithGet2, handler) -} - -var c = "global" -var key = "" - -function TestWithGet2(create, handler) { - var b = "local" - - var p = create(handler); - assertEquals("onproxy", p.a); - assertEquals(undefined, p.b); - assertEquals(undefined, p.c); - - with (p) { - assertEquals("onproxy", a); - assertEquals("local", b); - assertEquals("global", c); - } - - var o = Object.create(p, {d: {value: "own"}}) - with (o) { - assertEquals("onproxy", a) - assertEquals("local", b); - assertEquals("global", c) - assertEquals("own", d) - } -} - -TestWithGet({ - get(target, k) { - key = k; - return k === "a" ? "onproxy" : undefined - }, - has(target, k) { return k === 'a' } -}) - -TestWithGet({ - get: function(r, k) { return this.get2(r, k) }, - get2: function(r, k) { key = k; return k === "a" ? "onproxy" : undefined }, - has(target, k) { return k === 'a' } -}) - - - - -// Invoking. - -function TestWithGetCall(handler) { - TestWithProxies(TestWithGetCall2, handler) -} - -var receiver = null -var c = function() { return "global" } - -function TestWithGetCall2(create, handler) { - var b = function() { return "local" } - - var p = create(handler) - with (p) { - receiver = null - assertEquals("onproxy", a()) - assertSame(p, receiver) - assertEquals("local", b()) - assertEquals("global", c()) - } - - var o = Object.create(p, {d: {value: function() { return "own" }}}) - with (o) { - receiver = null - assertEquals("onproxy", a()) - assertSame(o, receiver) - assertEquals("local", b()) - assertEquals("global", c()) - assertEquals("own", d()) - } -} - -function onproxy() { receiver = this; return "onproxy" } - -TestWithGetCall({ - get: function(r, k) { key = k; return k === "a" ? onproxy : undefined }, - has: function(t, k) { - key = k; - return k === "a"; - } -}) - -TestWithGetCall({ - get: function(r, k) { return this.get2(r, k) }, - get2: function(r, k) { key = k; return k === "a" ? onproxy : undefined }, - has: function(t, k) { - key = k; - return k === "a"; - } -}) - -TestWithGetCall({ - get: function(r, k) { key = k; return k === "a" ? onproxy : undefined }, - has: function(t, k) { - return this.has2(k) - }, - has2: function(k) { - key = k; - return k === "a"; - } -}) - -TestWithGetCall({ - get: function(r, k) { key = k; return k === "a" ? onproxy : undefined }, - has: function(t, k) { - key = k; - return k === "a"; - } -}) - - -function TestWithGetCallThrow(handler) { - TestWithProxies(TestWithGetCallThrow2, handler) -} - -function TestWithGetCallThrow2(create, handler) { - var b = function() { return "local" } - - var p = create(handler) - with (p) { - assertThrowsEquals(function(){ a() }, "myexn") - assertEquals("local", b()) - assertEquals("global", c()) - } - - var o = Object.create(p, {d: {value: function() { return "own" }}}) - with (o) { - assertThrowsEquals(function(){ a() }, "myexn") - assertEquals("local", b()) - assertEquals("global", c()) - assertEquals("own", d()) - } -} - -function onproxythrow() { throw "myexn" } - -TestWithGetCallThrow({ - has: function(r, k) { return k === "a"; }, - get: function(r, k) { key = k; return k === "a" ? onproxythrow : undefined }, -}) - -TestWithGetCallThrow({ - has: function(r, k) { return k === "a"; }, - get: function(r, k) { return this.get2(r, k) }, - get2: function(r, k) { key = k; return k === "a" ? onproxythrow : undefined }, -}) - - - -// Setting. - -var key -var val - -function TestWithSet(handler, hasSetter) { - TestWithProxies(TestWithSet2, handler, hasSetter) -} - -var c = "global" - -function TestWithSet2(create, handler, hasSetter) { - var b = "local" - - var p = create(handler) - key = val = undefined - with (p) { - a = "set" - assertEquals("a", key) - assertEquals("set", val) - assertEquals("local", b) - assertEquals("global", c) - b = "local" - c = "global" - assertEquals("a", key) - assertEquals("set", val) - } - - if (!hasSetter) return - - var o = Object.create(p, {d: {value: "own"}}) - key = val = undefined - with (o) { - a = "set" - assertEquals("a", key) - assertEquals("set", val) - assertEquals("local", b) - assertEquals("global", c) - assertEquals("own", d) - b = "local" - c = "global" - d = "own" - assertEquals("a", key) - assertEquals("set", val) - } -} - -TestWithSet({ - set: function(r, k, v) { key = k; val = v; return true }, - has: function(t, k) { - return k === "a" - } -}) - -TestWithSet({ - set: function(r, k, v) { return this.set2(r, k, v) }, - set2: function(r, k, v) { key = k; val = v; return true }, - has: function(t, k) { - return k === "a" - } -}) - -TestWithSet({ - has: function(t, k) { - return k === "a" - }, - defineProperty: function(t, k, desc) { key = k; val = desc.value } -}) - -TestWithSet({ - has: function(t, k) { - return this.has2(k) - }, - has2: function(k) { - return k === "a" - }, - defineProperty: function(t, k, desc) { this.defineProperty2(k, desc) }, - defineProperty2: function(k, desc) { key = k; val = desc.value } -}) - -TestWithSet({ - has: function(t, k) { - return k === "a" - }, - defineProperty: function(t, k, desc) { key = k; val = desc.value } -}) - -TestWithSet({ - has: function(t, k) { - return this.has2(k) }, - has2: function(k) { - return k === "a" - }, - set: function(t, k, v) { key = k; val = v; return true } -}, true) - -TestWithSet({ - has: function(t, k) { - return k === "a" - }, - defineProperty: function(t, k, desc) { key = k; val = desc.value } -}) - - -function TestWithSetThrow(handler, hasSetter) { - TestWithProxies(TestWithSetThrow2, handler, hasSetter) -} - -function TestWithSetThrow2(create, handler, hasSetter) { - var p = create(handler) - assertThrowsEquals(function(){ - with (p) { - a = 1 - } - }, "myexn") - - if (!hasSetter) return - - var o = Object.create(p, {}) - assertThrowsEquals(function(){ - with (o) { - a = 1 - } - }, "myexn") -} - -TestWithSetThrow({ - set: function() { throw "myexn" }, - has: function(t, k) { - return k === "a" - } -}) - -TestWithSetThrow({ - has: function() { throw "myexn" }, -}) - -TestWithSetThrow({ - has: function() { throw "myexn" }, -}) - -TestWithSetThrow({ - has: function(t, k) { - return k === "a" - }, - defineProperty: function() { throw "myexn" } -}) - -TestWithSetThrow({ - has: function(t, k) { - return k === "a" - }, - set: function() { throw "myexn" } -}, true) diff --git a/implementation-contributed/v8/mjsunit/es6/proxies.js b/implementation-contributed/v8/mjsunit/es6/proxies.js deleted file mode 100644 index fc59b346b74..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxies.js +++ /dev/null @@ -1,1517 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// We change the stack size for the ARM64 simulator because at one point this -// test enters an infinite recursion which goes through the runtime and we -// overflow the system stack before the simulator stack. - -// Flags: --sim-stack-size=500 --allow-natives-syntax - - -// Helper. - -function TestWithProxies(test, x, y, z) { - // Separate function for nicer stack traces. - TestWithObjectProxy(test, x, y, z); - TestWithFunctionProxy(test, x, y, z); -} - -function TestWithObjectProxy(test, x, y, z) { - test((handler) => { return new Proxy({}, handler) }, x, y, z) - -} - -function TestWithFunctionProxy(test, x, y, z) { - test((handler) => { return new Proxy(() => {}, handler) }, x, y, z) -} - -// --------------------------------------------------------------------------- -// Test Proxy constructor properties - -(function TestProxyProperties() { - assertEquals(2, Proxy.length); - assertEquals(Function.__proto__, Proxy.__proto__); - assertEquals(undefined, Proxy.prototype); - assertEquals(undefined, Object.getOwnPropertyDescriptor(Proxy, "arguments")); - assertThrows(() => Proxy.arguments, TypeError); - assertEquals(undefined, Object.getOwnPropertyDescriptor(Proxy, "caller")); - assertThrows(() => Proxy.caller, TypeError); -})(); - -// --------------------------------------------------------------------------- -// Getting property descriptors (Object.getOwnPropertyDescriptor). - -var key - -function TestGetOwnProperty(handler) { - TestWithProxies(TestGetOwnProperty2, handler) -} - -function TestGetOwnProperty2(create, handler) { - var p = create(handler) - assertEquals(42, Object.getOwnPropertyDescriptor(p, "a").value) - assertEquals("a", key) - assertEquals(42, Object.getOwnPropertyDescriptor(p, 99).value) - assertEquals("99", key) -} - -TestGetOwnProperty({ - getOwnPropertyDescriptor(target, k) { - key = k - return {value: 42, configurable: true} - } -}) - -TestGetOwnProperty({ - getOwnPropertyDescriptor(target, k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2(k) { - key = k - return {value: 42, configurable: true} - } -}) - -TestGetOwnProperty({ - getOwnPropertyDescriptor(target, k) { - key = k - return {get value() { return 42 }, get configurable() { return true }} - } -}) - -TestGetOwnProperty(new Proxy({}, { - get(target, pk, receiver) { - return function(t, k) { key = k; return {value: 42, configurable: true} } - } -})) - - -// --------------------------------------------------------------------------- -function TestGetOwnPropertyThrow(handler) { - TestWithProxies(TestGetOwnPropertyThrow2, handler) -} - -function TestGetOwnPropertyThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(() => Object.getOwnPropertyDescriptor(p, "a"), "myexn") - assertThrowsEquals(() => Object.getOwnPropertyDescriptor(p, 77), "myexn") -} - -TestGetOwnPropertyThrow({ - getOwnPropertyDescriptor: function(k) { throw "myexn" } -}) - -TestGetOwnPropertyThrow({ - getOwnPropertyDescriptor: function(k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2: function(k) { throw "myexn" } -}) - -TestGetOwnPropertyThrow({ - getOwnPropertyDescriptor: function(k) { - return {get value() { throw "myexn" }} - } -}) - -TestGetOwnPropertyThrow(new Proxy({}, { - get: function(pr, pk) { - return function(k) { throw "myexn" } - } -})) - - -// --------------------------------------------------------------------------- -// Getters (dot, brackets). - -var key - -function TestGet(handler) { - TestWithProxies(TestGet2, handler) -} - -function TestGet2(create, handler) { - var p = create(handler) - assertEquals(42, p.a) - assertEquals("a", key) - assertEquals(42, p["b"]) - assertEquals("b", key) - assertEquals(42, p[99]) - assertEquals("99", key) - assertEquals(42, (function(n) { return p[n] })("c")) - assertEquals("c", key) - assertEquals(42, (function(n) { return p[n] })(101)) - assertEquals("101", key) - - var o = Object.create(p, {x: {value: 88}}) - assertEquals(42, o.a) - assertEquals("a", key) - assertEquals(42, o["b"]) - assertEquals("b", key) - assertEquals(42, o[99]) - assertEquals("99", key) - assertEquals(88, o.x) - assertEquals(88, o["x"]) - assertEquals(42, (function(n) { return o[n] })("c")) - assertEquals("c", key) - assertEquals(42, (function(n) { return o[n] })(101)) - assertEquals("101", key) - assertEquals(88, (function(n) { return o[n] })("x")) -} - -TestGet({ - get(t, k, r) { key = k; return 42 } -}) - -TestGet({ - get(t, k, r) { return this.get2(r, k) }, - get2(r, k) { key = k; return 42 } -}) - -TestGet(new Proxy({}, { - get(pt, pk, pr) { - return function(t, k, r) { key = k; return 42 } - } -})) - - -// --------------------------------------------------------------------------- -function TestGetCall(handler) { - TestWithProxies(TestGetCall2, handler) -} - -function TestGetCall2(create, handler) { - var p = create(handler) - assertEquals(55, p.f()) - assertEquals(55, p["f"]()) - assertEquals(55, p.f("unused", "arguments")) - assertEquals(55, p.f.call(p)) - assertEquals(55, p["f"].call(p)) - assertEquals(55, p[101].call(p)) - assertEquals(55, p.withargs(45, 5)) - assertEquals(55, p.withargs.call(p, 11, 22)) - assertEquals(55, (function(n) { return p[n]() })("f")) - assertEquals(55, (function(n) { return p[n].call(p) })("f")) - assertEquals(55, (function(n) { return p[n](15, 20) })("withargs")) - assertEquals(55, (function(n) { return p[n].call(p, 13, 21) })("withargs")) - assertEquals("6655", "66" + p) // calls p.toString - - var o = Object.create(p, {g: {value: function(x) { return x + 88 }}}) - assertEquals(55, o.f()) - assertEquals(55, o["f"]()) - assertEquals(55, o.f("unused", "arguments")) - assertEquals(55, o.f.call(o)) - assertEquals(55, o.f.call(p)) - assertEquals(55, o["f"].call(p)) - assertEquals(55, o[101].call(p)) - assertEquals(55, o.withargs(45, 5)) - assertEquals(55, o.withargs.call(p, 11, 22)) - assertEquals(90, o.g(2)) - assertEquals(91, o.g.call(o, 3)) - assertEquals(92, o.g.call(p, 4)) - assertEquals(55, (function(n) { return o[n]() })("f")) - assertEquals(55, (function(n) { return o[n].call(o) })("f")) - assertEquals(55, (function(n) { return o[n](15, 20) })("withargs")) - assertEquals(55, (function(n) { return o[n].call(o, 13, 21) })("withargs")) - assertEquals(93, (function(n) { return o[n](5) })("g")) - assertEquals(94, (function(n) { return o[n].call(o, 6) })("g")) - assertEquals(95, (function(n) { return o[n].call(p, 7) })("g")) - assertEquals("6655", "66" + o) // calls o.toString -} - -TestGetCall({ - get(t, k, r) { return () => { return 55 } } -}) - -TestGetCall({ - get(t, k, r) { return this.get2(t, k, r) }, - get2(t, k, r) { return () => { return 55 } } -}) - -TestGetCall({ - get(t, k, r) { - if (k == "gg") { - return () => { return 55 } - } else if (k == "withargs") { - return (n, m) => { return n + m * 2 } - } else { - return () => { return r.gg() } - } - } -}) - -TestGetCall(new Proxy({}, { - get(pt, pk, pr) { - return (t, k, r) => { return () => { return 55 } } - } -})) - - -// --------------------------------------------------------------------------- -function TestGetThrow(handler) { - TestWithProxies(TestGetThrow2, handler) -} - -function TestGetThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(function(){ p.a }, "myexn") - assertThrowsEquals(function(){ p["b"] }, "myexn") - assertThrowsEquals(function(){ p[3] }, "myexn") - assertThrowsEquals(function(){ (function(n) { p[n] })("c") }, "myexn") - assertThrowsEquals(function(){ (function(n) { p[n] })(99) }, "myexn") - - var o = Object.create(p, {x: {value: 88}, '4': {value: 89}}) - assertThrowsEquals(function(){ o.a }, "myexn") - assertThrowsEquals(function(){ o["b"] }, "myexn") - assertThrowsEquals(function(){ o[3] }, "myexn") - assertThrowsEquals(function(){ (function(n) { o[n] })("c") }, "myexn") - assertThrowsEquals(function(){ (function(n) { o[n] })(99) }, "myexn") -} - -TestGetThrow({ - get(r, k) { throw "myexn" } -}) - -TestGetThrow({ - get(r, k) { return this.get2(r, k) }, - get2(r, k) { throw "myexn" } -}) - -TestGetThrow(new Proxy({}, { - get(pr, pk) { throw "myexn" } -})) - -TestGetThrow(new Proxy({}, { - get(pr, pk) { - return function(r, k) { throw "myexn" } - } -})) - - -// --------------------------------------------------------------------------- -// Setters. - -var key -var val - -function TestSet(handler) { - TestWithProxies(TestSet2, handler) -} - -function TestSet2(create, handler) { - var p = create(handler) - assertEquals(42, p.a = 42) - assertEquals("a", key) - assertEquals(42, val) - assertEquals(43, p["b"] = 43) - assertEquals("b", key) - assertEquals(43, val) - assertEquals(44, p[77] = 44) - assertEquals("77", key) - assertEquals(44, val) - - assertEquals(45, (function(n) { return p[n] = 45 })("c")) - assertEquals("c", key) - assertEquals(45, val) - assertEquals(46, (function(n) { return p[n] = 46 })(99)) - assertEquals("99", key) - assertEquals(46, val) - - assertEquals(47, p["0"] = 47) - assertEquals("0", key) - assertEquals(47, val) -} - -TestSet({ - set: function(r, k, v) { key = k; val = v; return true } -}) - -TestSet({ - set: function(r, k, v) { return this.set2(r, k, v) }, - set2: function(r, k, v) { key = k; val = v; return true } -}) - -TestSet(new Proxy({}, { - get(pk, pr) { - return (r, k, v) => { key = k; val = v; return true } - } -})) - - -// --------------------------------------------------------------------------- -function TestSetThrow(handler) { - TestWithProxies(TestSetThrow2, handler) -} - -function TestSetThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(function(){ p.a = 42 }, "myexn") - assertThrowsEquals(function(){ p["b"] = 42 }, "myexn") - assertThrowsEquals(function(){ p[22] = 42 }, "myexn") - assertThrowsEquals(function(){ (function(n) { p[n] = 45 })("c") }, "myexn") - assertThrowsEquals(function(){ (function(n) { p[n] = 46 })(99) }, "myexn") -} - -TestSetThrow({ - set: function(r, k, v) { throw "myexn" } -}) - -TestSetThrow({ - set: function(r, k, v) { return this.set2(r, k, v) }, - set2: function(r, k, v) { throw "myexn" } -}) - -TestSetThrow({ - getOwnPropertyDescriptor: function(k) { throw "myexn" }, - defineProperty: function(k, desc) { key = k; val = desc.value } -}) - -TestSetThrow({ - getOwnPropertyDescriptor: function(k) { - return {configurable: true, writable: true} - }, - defineProperty: function(k, desc) { throw "myexn" } -}) - -TestSetThrow({ - getOwnPropertyDescriptor: function(k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2: function(k) { throw "myexn" }, - defineProperty: function(k, desc) { this.defineProperty2(k, desc) }, - defineProperty2: function(k, desc) { key = k; val = desc.value } -}) - -TestSetThrow({ - getOwnPropertyDescriptor: function(k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2: function(k) { - return {configurable: true, writable: true} - }, - defineProperty: function(k, desc) { this.defineProperty2(k, desc) }, - defineProperty2: function(k, desc) { throw "myexn" } -}) - -TestSetThrow({ - getOwnPropertyDescriptor: function(k) { throw "myexn" }, - defineProperty: function(k, desc) { key = k; val = desc.value } -}) - -TestSetThrow({ - getOwnPropertyDescriptor: function(k) { - return { - get configurable() { return true }, - get writable() { return true } - } - }, - defineProperty: function(k, desc) { throw "myexn" } -}) - -TestSetThrow({ - getOwnPropertyDescriptor: function(k) { throw "myexn" } -}) - -TestSetThrow({ - getOwnPropertyDescriptor: function(k) { throw "myexn" }, - defineProperty: function(k, desc) { key = k; val = desc.value } -}) - -TestSetThrow(new Proxy({}, { - get: function(pr, pk) { throw "myexn" } -})) - -TestSetThrow(new Proxy({}, { - get: function(pr, pk) { - return function(r, k, v) { throw "myexn" } - } -})) - -// --------------------------------------------------------------------------- - -// Evil proxy-induced side-effects shouldn't crash. -TestWithProxies(function(create) { - var calls = 0 - var handler = { - getPropertyDescriptor: function() { - ++calls - return (calls % 2 == 1) - ? {get: function() { return 5 }, configurable: true} - : {set: function() { return false }, configurable: true} - } - } - var p = create(handler) - var o = Object.create(p) - // Make proxy prototype property read-only after CanPut check. - try { o.x = 4 } catch (e) { assertInstanceof(e, Error) } -}) - -TestWithProxies(function(create) { - var handler = { - getPropertyDescriptor: function() { - Object.defineProperty(o, "x", {get: function() { return 5 }}); - return {set: function() {}} - } - } - var p = create(handler) - var o = Object.create(p) - // Make object property read-only after CanPut check. - try { o.x = 4 } catch (e) { assertInstanceof(e, Error) } -}) - - -// --------------------------------------------------------------------------- -// Property definition (Object.defineProperty and Object.defineProperties). - -var key -var desc - -function TestDefine(handler) { - TestWithProxies(TestDefine2, handler) -} - -function TestDefine2(create, handler) { - var p = create(handler) - assertEquals(p, Object.defineProperty(p, "a", {value: 44})) - assertEquals("a", key) - assertEquals(1, Object.getOwnPropertyNames(desc).length) - assertEquals(44, desc.value) - - assertEquals(p, Object.defineProperty(p, "b", {value: 45, writable: false})) - assertEquals("b", key) - assertEquals(2, Object.getOwnPropertyNames(desc).length) - assertEquals(45, desc.value) - assertEquals(false, desc.writable) - - assertEquals(p, Object.defineProperty(p, "c", {value: 46, enumerable: false})) - assertEquals("c", key) - assertEquals(2, Object.getOwnPropertyNames(desc).length) - assertEquals(46, desc.value) - assertEquals(false, desc.enumerable) - - assertEquals(p, Object.defineProperty(p, 101, {value: 47, enumerable: false})) - assertEquals("101", key) - assertEquals(2, Object.getOwnPropertyNames(desc).length) - assertEquals(47, desc.value) - assertEquals(false, desc.enumerable) - - var attributes = {configurable: true, mine: 66, minetoo: 23} - assertEquals(p, Object.defineProperty(p, "d", attributes)) - assertEquals("d", key); - // Modifying the attributes object after the fact should have no effect. - attributes.configurable = false - attributes.mine = 77 - delete attributes.minetoo; - assertEquals(1, Object.getOwnPropertyNames(desc).length) - assertEquals(true, desc.configurable) - assertEquals(undefined, desc.mine) - assertEquals(undefined, desc.minetoo) - - assertEquals(p, Object.defineProperty(p, "e", {get: function(){ return 5 }})) - assertEquals("e", key) - assertEquals(1, Object.getOwnPropertyNames(desc).length) - assertEquals(5, desc.get()) - - assertEquals(p, Object.defineProperty(p, "zzz", {})) - assertEquals("zzz", key) - assertEquals(0, Object.getOwnPropertyNames(desc).length) - - var props = { - '11': {}, - blub: {get: function() { return true }}, - '': {get value() { return 20 }}, - last: {value: 21, configurable: true, mine: "eyes"} - } - Object.defineProperty(props, "hidden", {value: "hidden", enumerable: false}) - assertEquals(p, Object.defineProperties(p, props)) - assertEquals("last", key) - assertEquals(2, Object.getOwnPropertyNames(desc).length) - assertEquals(21, desc.value) - assertEquals(true, desc.configurable) - assertEquals(undefined, desc.mine) // Arguably a bug in the spec... - - var props = {bla: {get value() { throw "myexn" }}} - assertThrowsEquals(function(){ Object.defineProperties(p, props) }, "myexn") -} - -TestDefine({ - defineProperty(t, k, d) { key = k; desc = d; return true } -}) - -TestDefine({ - defineProperty(t, k, d) { return this.defineProperty2(k, d) }, - defineProperty2(k, d) { key = k; desc = d; return true } -}) - - -// --------------------------------------------------------------------------- -function TestDefineThrow(handler) { - TestWithProxies(TestDefineThrow2, handler) -} - -function TestDefineThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(() => Object.defineProperty(p, "a", {value: 44}), "myexn") - assertThrowsEquals(() => Object.defineProperty(p, 0, {value: 44}), "myexn") - - var d1 = create({ - get: function(r, k) { throw "myexn" }, - getOwnPropertyNames: function() { return ["value"] } - }) - assertThrowsEquals(function(){ Object.defineProperty(p, "p", d1) }, "myexn") - var d2 = create({ - get: function(r, k) { return 77 }, - getOwnPropertyNames: function() { throw "myexn" } - }) - assertThrowsEquals(function(){ Object.defineProperty(p, "p", d2) }, "myexn") - - var props = {bla: {get value() { throw "otherexn" }}} - assertThrowsEquals(() => Object.defineProperties(p, props), "otherexn") -} - -TestDefineThrow({ - defineProperty: function(k, d) { throw "myexn" } -}) - -TestDefineThrow({ - defineProperty: function(k, d) { return this.defineProperty2(k, d) }, - defineProperty2: function(k, d) { throw "myexn" } -}) - -TestDefineThrow(new Proxy({}, { - get: function(pr, pk) { throw "myexn" } -})) - -TestDefineThrow(new Proxy({}, { - get: function(pr, pk) { - return function(k, d) { throw "myexn" } - } -})) - - - -// --------------------------------------------------------------------------- -// Property deletion (delete). - -var key - -function TestDelete(handler) { - TestWithProxies(TestDelete2, handler) -} - -function TestDelete2(create, handler) { - var p = create(handler) - assertEquals(true, delete p.a) - assertEquals("a", key) - assertEquals(true, delete p["b"]) - assertEquals("b", key) - assertEquals(true, delete p[1]) - assertEquals("1", key) - - assertEquals(false, delete p.z1) - assertEquals("z1", key) - assertEquals(false, delete p["z2"]) - assertEquals("z2", key); - - (function() { - "use strict" - assertEquals(true, delete p.c) - assertEquals("c", key) - assertEquals(true, delete p["d"]) - assertEquals("d", key) - assertEquals(true, delete p[2]) - assertEquals("2", key) - - assertThrows(function(){ delete p.z3 }, TypeError) - assertEquals("z3", key) - assertThrows(function(){ delete p["z4"] }, TypeError) - assertEquals("z4", key) - })() -} - -TestDelete({ - deleteProperty(target, k) { key = k; return k < "z" } -}) - -TestDelete({ - deleteProperty(target, k) { return this.delete2(k) }, - delete2: function(k) { key = k; return k < "z" } -}) - -TestDelete(new Proxy({}, { - get(pt, pk, pr) { - return (target, k) => { key = k; return k < "z" } - } -})) - - -// --------------------------------------------------------------------------- -function TestDeleteThrow(handler) { - TestWithProxies(TestDeleteThrow2, handler) -} - -function TestDeleteThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(function(){ delete p.a }, "myexn") - assertThrowsEquals(function(){ delete p["b"] }, "myexn"); - assertThrowsEquals(function(){ delete p[3] }, "myexn"); - - (function() { - "use strict" - assertThrowsEquals(function(){ delete p.c }, "myexn") - assertThrowsEquals(function(){ delete p["d"] }, "myexn") - assertThrowsEquals(function(){ delete p[4] }, "myexn"); - })() -} - -TestDeleteThrow({ - deleteProperty(t, k) { throw "myexn" } -}) - -TestDeleteThrow({ - deleteProperty(t, k) { return this.delete2(k) }, - delete2(k) { throw "myexn" } -}) - -TestDeleteThrow(new Proxy({}, { - get(pt, pk, pr) { throw "myexn" } -})) - -TestDeleteThrow(new Proxy({}, { - get(pt, pk, pr) { - return (k) => { throw "myexn" } - } -})) - - -// --------------------------------------------------------------------------- -// Property descriptors (Object.getOwnPropertyDescriptor). - -function TestDescriptor(handler) { - TestWithProxies(TestDescriptor2, handler) -} - -function TestDescriptor2(create, handler) { - var p = create(handler) - var descs = [ - {configurable: true}, - {value: 34, enumerable: true, configurable: true}, - {value: 3, writable: false, mine: "eyes", configurable: true}, - {get value() { return 20 }, get configurable() { return true }}, - {get: function() { "get" }, set: function() { "set" }, configurable: true} - ] - for (var i = 0; i < descs.length; ++i) { - assertEquals(p, Object.defineProperty(p, i, descs[i])) - var desc = Object.getOwnPropertyDescriptor(p, i) - for (prop in descs[i]) { - // TODO(rossberg): Ignore user attributes as long as the spec isn't - // fixed suitably. - if (prop != "mine") assertEquals(descs[i][prop], desc[prop]) - } - assertEquals(undefined, Object.getOwnPropertyDescriptor(p, "absent")) - } -} - -TestDescriptor({ - defineProperty(t, k, d) { this["__" + k] = d; return true }, - getOwnPropertyDescriptor(t, k) { return this["__" + k] } -}) - -TestDescriptor({ - defineProperty(t, k, d) { this["__" + k] = d; return true }, - getOwnPropertyDescriptor(t, k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2: function(k) { return this["__" + k] } -}) - - -// --------------------------------------------------------------------------- -function TestDescriptorThrow(handler) { - TestWithProxies(TestDescriptorThrow2, handler) -} - -function TestDescriptorThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(() => Object.getOwnPropertyDescriptor(p, "a"), "myexn") -} - -TestDescriptorThrow({ - getOwnPropertyDescriptor: function(k) { throw "myexn" } -}) - -TestDescriptorThrow({ - getOwnPropertyDescriptor: function(k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2: function(k) { throw "myexn" } -}) - - - -// --------------------------------------------------------------------------- -// Comparison. - -function TestComparison(eq) { - TestWithProxies(TestComparison2, eq) -} - -function TestComparison2(create, eq) { - var p1 = create({}) - var p2 = create({}) - - assertTrue(eq(p1, p1)) - assertTrue(eq(p2, p2)) - assertTrue(!eq(p1, p2)) - assertTrue(!eq(p1, {})) - assertTrue(!eq({}, p2)) - assertTrue(!eq({}, {})) -} - -TestComparison(function(o1, o2) { return o1 == o2 }) -TestComparison(function(o1, o2) { return o1 === o2 }) -TestComparison(function(o1, o2) { return !(o1 != o2) }) -TestComparison(function(o1, o2) { return !(o1 !== o2) }) - - - -// Type (typeof). - -function TestTypeof() { - assertEquals("object", typeof new Proxy({},{})) - assertTrue(typeof new Proxy({}, {}) == "object") - assertTrue("object" == typeof new Proxy({},{})) - - assertEquals("function", typeof new Proxy(function() {}, {})) - assertTrue(typeof new Proxy(function() {}, {}) == "function") - assertTrue("function" == typeof new Proxy(function() {},{})) -} - -TestTypeof() - - - -// --------------------------------------------------------------------------- -// Membership test (in). - -var key - -function TestIn(handler) { - TestWithProxies(TestIn2, handler) -} - -function TestIn2(create, handler) { - var p = create(handler) - assertTrue("a" in p) - assertEquals("a", key) - assertTrue(99 in p) - assertEquals("99", key) - assertFalse("z" in p) - assertEquals("z", key) - - assertEquals(2, ("a" in p) ? 2 : 0) - assertEquals(0, !("a" in p) ? 2 : 0) - assertEquals(0, ("zzz" in p) ? 2 : 0) - assertEquals(2, !("zzz" in p) ? 2 : 0) - - // Test compilation in conditionals. - if ("b" in p) { - } else { - assertTrue(false) - } - assertEquals("b", key) - - if ("zz" in p) { - assertTrue(false) - } - assertEquals("zz", key) - - if (!("c" in p)) { - assertTrue(false) - } - assertEquals("c", key) - - if (!("zzz" in p)) { - } else { - assertTrue(false) - } - assertEquals("zzz", key) -} - -TestIn({ - has(t, k) { key = k; return k < "z" } -}) - -TestIn({ - has(t, k) { return this.has2(k) }, - has2(k) { key = k; return k < "z" } -}) - -TestIn(new Proxy({},{ - get(pt, pk, pr) { - return (t, k) => { key = k; return k < "z" } - } -})) - - -// --------------------------------------------------------------------------- -function TestInThrow(handler) { - TestWithProxies(TestInThrow2, handler) -} - -function TestInThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(function(){ return "a" in p }, "myexn") - assertThrowsEquals(function(){ return 99 in p }, "myexn") - assertThrowsEquals(function(){ return !("a" in p) }, "myexn") - assertThrowsEquals(function(){ return ("a" in p) ? 2 : 3 }, "myexn") - assertThrowsEquals(function(){ if ("b" in p) {} }, "myexn") - assertThrowsEquals(function(){ if (!("b" in p)) {} }, "myexn") - assertThrowsEquals(function(){ if ("zzz" in p) {} }, "myexn") -} - -TestInThrow({ - has: function(k) { throw "myexn" } -}) - -TestInThrow({ - has: function(k) { return this.has2(k) }, - has2: function(k) { throw "myexn" } -}) - -TestInThrow(new Proxy({},{ - get: function(pr, pk) { throw "myexn" } -})) - -TestInThrow(new Proxy({},{ - get: function(pr, pk) { - return function(k) { throw "myexn" } - } -})) - - - -// --------------------------------------------------------------------------- -// Own Properties (Object.prototype.hasOwnProperty). - -var key - -function TestHasOwn(handler) { - TestWithProxies(TestHasOwn2, handler) -} - -function TestHasOwn2(create, handler) { - var p = create(handler) - assertTrue(Object.prototype.hasOwnProperty.call(p, "a")) - assertEquals("a", key) - assertTrue(Object.prototype.hasOwnProperty.call(p, 99)) - assertEquals("99", key) - assertFalse(Object.prototype.hasOwnProperty.call(p, "z")) - assertEquals("z", key) -} - -TestHasOwn({ - getOwnPropertyDescriptor(t, k) { - key = k; if (k < "z") return {configurable: true} - }, - has() { assertUnreachable() } -}) - -TestHasOwn({ - getOwnPropertyDescriptor(t, k) { return this.getOwnPropertyDescriptor2(k) }, - getOwnPropertyDescriptor2(k) { - key = k; if (k < "z") return {configurable: true} - } -}) - - - -// --------------------------------------------------------------------------- -function TestHasOwnThrow(handler) { - TestWithProxies(TestHasOwnThrow2, handler) -} - -function TestHasOwnThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(function(){ Object.prototype.hasOwnProperty.call(p, "a")}, - "myexn") - assertThrowsEquals(function(){ Object.prototype.hasOwnProperty.call(p, 99)}, - "myexn") -} - -TestHasOwnThrow({ - getOwnPropertyDescriptor(t, k) { throw "myexn" } -}) - -TestHasOwnThrow({ - getOwnPropertyDescriptor(t, k) { return this.getOwnPropertyDescriptor2(k) }, - getOwnPropertyDescriptor2(k) { throw "myexn" } -}); - - -// --------------------------------------------------------------------------- -// Instanceof (instanceof) - -(function TestProxyInstanceof() { - var o1 = {} - var p1 = new Proxy({}, {}) - var p2 = new Proxy(o1, {}) - var p3 = new Proxy(p2, {}) - var o2 = Object.create(p2) - - var f0 = function() {} - f0.prototype = o1 - var f1 = function() {} - f1.prototype = p1 - var f2 = function() {} - f2.prototype = p2 - var f3 = function() {} - f3.prototype = o2 - - assertTrue(o1 instanceof Object) - assertFalse(o1 instanceof f0) - assertFalse(o1 instanceof f1) - assertFalse(o1 instanceof f2) - assertFalse(o1 instanceof f3) - assertTrue(p1 instanceof Object) - assertFalse(p1 instanceof f0) - assertFalse(p1 instanceof f1) - assertFalse(p1 instanceof f2) - assertFalse(p1 instanceof f3) - assertTrue(p2 instanceof Object) - assertFalse(p2 instanceof f0) - assertFalse(p2 instanceof f1) - assertFalse(p2 instanceof f2) - assertFalse(p2 instanceof f3) - assertTrue(p3 instanceof Object) - assertFalse(p3 instanceof f0) - assertFalse(p3 instanceof f1) - assertFalse(p3 instanceof f2) - assertFalse(p3 instanceof f3) - assertTrue(o2 instanceof Object) - assertFalse(o2 instanceof f0) - assertFalse(o2 instanceof f1) - assertTrue(o2 instanceof f2) - assertFalse(o2 instanceof f3) - - var f = new Proxy(function() {}, {}) - assertTrue(f instanceof Function) -})(); - - -(function TestInstanceofProxy() { - var o0 = Object.create(null) - var o1 = {} - var o2 = Object.create(o0) - var o3 = Object.create(o1) - var o4 = Object.create(o2) - var o5 = Object.create(o3) - - function handler(o) { - return { - get: function(r, p) { - // We want to test prototype lookup, so ensure the proxy - // offers OrdinaryHasInstance behavior. - if (p === Symbol.hasInstance) { - return undefined; - } - return o; - } - } - } - - var f0 = new Proxy(function() {}, handler(o0)) - var f1 = new Proxy(function() {}, handler(o1)) - var f2 = new Proxy(function() {}, handler(o2)) - var f3 = new Proxy(function() {}, handler(o3)) - var f4 = new Proxy(function() {}, handler(o4)) - var f5 = new Proxy(function() {}, handler(o4)) - - assertFalse(null instanceof f0) - assertFalse(o0 instanceof f0) - assertFalse(o0 instanceof f1) - assertFalse(o0 instanceof f2) - assertFalse(o0 instanceof f3) - assertFalse(o0 instanceof f4) - assertFalse(o0 instanceof f5) - assertFalse(o1 instanceof f0) - assertFalse(o1 instanceof f1) - assertFalse(o1 instanceof f2) - assertFalse(o1 instanceof f3) - assertFalse(o1 instanceof f4) - assertFalse(o1 instanceof f5) - assertTrue(o2 instanceof f0) - assertFalse(o2 instanceof f1) - assertFalse(o2 instanceof f2) - assertFalse(o2 instanceof f3) - assertFalse(o2 instanceof f4) - assertFalse(o2 instanceof f5) - assertFalse(o3 instanceof f0) - assertTrue(o3 instanceof f1) - assertFalse(o3 instanceof f2) - assertFalse(o3 instanceof f3) - assertFalse(o3 instanceof f4) - assertFalse(o3 instanceof f5) - assertTrue(o4 instanceof f0) - assertFalse(o4 instanceof f1) - assertTrue(o4 instanceof f2) - assertFalse(o4 instanceof f3) - assertFalse(o4 instanceof f4) - assertFalse(o4 instanceof f5) - assertFalse(o5 instanceof f0) - assertTrue(o5 instanceof f1) - assertFalse(o5 instanceof f2) - assertTrue(o5 instanceof f3) - assertFalse(o5 instanceof f4) - assertFalse(o5 instanceof f5) - - var f = new Proxy(function() {}, {}) - var ff = new Proxy(function() {}, handler(Function)) - assertTrue(f instanceof Function) - assertFalse(f instanceof ff) -})(); - - -// --------------------------------------------------------------------------- -// Prototype (Object.getPrototypeOf, Object.prototype.isPrototypeOf). - -(function TestPrototype() { - var o1 = {} - var p1 = new Proxy({}, {}) - var p2 = new Proxy(o1, {}) - var p3 = new Proxy(p2, {}) - var o2 = Object.create(p3) - - assertSame(Object.getPrototypeOf(o1), Object.prototype) - assertSame(Object.getPrototypeOf(p1), Object.prototype) - assertSame(Object.getPrototypeOf(p2), Object.prototype) - assertSame(Object.getPrototypeOf(p3), Object.prototype) - assertSame(Object.getPrototypeOf(o2), p3) - - assertTrue(Object.prototype.isPrototypeOf(o1)) - assertTrue(Object.prototype.isPrototypeOf(p1)) - assertTrue(Object.prototype.isPrototypeOf(p2)) - assertTrue(Object.prototype.isPrototypeOf(p3)) - assertTrue(Object.prototype.isPrototypeOf(o2)) - assertTrue(Object.prototype.isPrototypeOf.call(Object.prototype, o1)) - assertTrue(Object.prototype.isPrototypeOf.call(Object.prototype, p1)) - assertTrue(Object.prototype.isPrototypeOf.call(Object.prototype, p2)) - assertTrue(Object.prototype.isPrototypeOf.call(Object.prototype, p3)) - assertTrue(Object.prototype.isPrototypeOf.call(Object.prototype, o2)) - assertFalse(Object.prototype.isPrototypeOf.call(o1, o1)) - assertFalse(Object.prototype.isPrototypeOf.call(o1, p1)) - assertFalse(Object.prototype.isPrototypeOf.call(o1, p2)) - assertFalse(Object.prototype.isPrototypeOf.call(o1, p3)) - assertFalse(Object.prototype.isPrototypeOf.call(o1, o2)) - assertFalse(Object.prototype.isPrototypeOf.call(p1, p1)) - assertFalse(Object.prototype.isPrototypeOf.call(p1, o1)) - assertFalse(Object.prototype.isPrototypeOf.call(p1, p2)) - assertFalse(Object.prototype.isPrototypeOf.call(p1, p3)) - assertFalse(Object.prototype.isPrototypeOf.call(p1, o2)) - assertFalse(Object.prototype.isPrototypeOf.call(p2, p1)) - assertFalse(Object.prototype.isPrototypeOf.call(p2, p2)) - assertFalse(Object.prototype.isPrototypeOf.call(p2, p3)) - assertFalse(Object.prototype.isPrototypeOf.call(p2, o2)) - assertFalse(Object.prototype.isPrototypeOf.call(p3, p2)) - assertTrue(Object.prototype.isPrototypeOf.call(p3, o2)) - assertFalse(Object.prototype.isPrototypeOf.call(o2, o1)) - assertFalse(Object.prototype.isPrototypeOf.call(o2, p1)) - assertFalse(Object.prototype.isPrototypeOf.call(o2, p2)) - assertFalse(Object.prototype.isPrototypeOf.call(o2, p3)) - assertFalse(Object.prototype.isPrototypeOf.call(o2, o2)) - - var f = new Proxy(function() {}, {}) - assertSame(Object.getPrototypeOf(f), Function.prototype) - assertTrue(Object.prototype.isPrototypeOf(f)) - assertTrue(Object.prototype.isPrototypeOf.call(Function.prototype, f)) -})(); - - -// --------------------------------------------------------------------------- -function TestPropertyNamesThrow(handler) { - TestWithProxies(TestPropertyNamesThrow2, handler) -} - -function TestPropertyNamesThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(function(){ Object.getOwnPropertyNames(p) }, "myexn") -} - -TestPropertyNamesThrow({ - ownKeys() { throw "myexn" } -}) - -TestPropertyNamesThrow({ - ownKeys() { return this.getOwnPropertyNames2() }, - getOwnPropertyNames2() { throw "myexn" } -}) - -// --------------------------------------------------------------------------- - -function TestKeys(names, handler) { - var p = new Proxy({}, handler); - assertArrayEquals(names, Object.keys(p)) -} - -TestKeys([], { - ownKeys() { return [] } -}) - -TestKeys([], { - ownKeys() { return ["a", "zz", " ", "0", "toString"] } -}) - -TestKeys(["a", "zz", " ", "0", "toString"], { - ownKeys() { return ["a", "zz", " ", "0", "toString"] }, - getOwnPropertyDescriptor(t, p) { - return {configurable: true, enumerable: true} - } -}) - -TestKeys([], { - ownKeys() { return this.keys2() }, - keys2() { return ["throw", "function "] } -}) - -TestKeys(["throw", "function "], { - ownKeys() { return this.keys2() }, - keys2() { return ["throw", "function "] }, - getOwnPropertyDescriptor(t, p) { - return {configurable: true, enumerable: true} - } -}) - -TestKeys(["a", "0"], { - ownKeys() { return ["a", "23", "zz", "", "0"] }, - getOwnPropertyDescriptor(t, k) { - return k == "" ? - undefined : - { configurable: true, enumerable: k.length == 1} - } -}) - -TestKeys(["23", "zz", ""], { - ownKeys() { return this.getOwnPropertyNames2() }, - getOwnPropertyNames2() { return ["a", "23", "zz", "", "0"] }, - getOwnPropertyDescriptor(t, k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2(k) { - return {configurable: true, enumerable: k.length != 1 } - } -}) - -TestKeys([], { - get ownKeys() { - return function() { return ["a", "b", "c"] } - }, - getOwnPropertyDescriptor: function(k) { return {configurable: true} } -}) - - -// --------------------------------------------------------------------------- -function TestKeysThrow(handler) { - TestWithProxies(TestKeysThrow2, handler) -} - -function TestKeysThrow2(create, handler) { - var p = create(handler); - assertThrowsEquals(function(){ Object.keys(p) }, "myexn"); -} - -TestKeysThrow({ - ownKeys() { throw "myexn" } -}) - -TestKeysThrow({ - ownKeys() { return this.keys2() }, - keys2() { throw "myexn" } -}) - -TestKeysThrow({ - ownKeys() { return ['1'] }, - getOwnPropertyDescriptor: function() { throw "myexn" }, -}) - -TestKeysThrow({ - ownKeys() { return this.getOwnPropertyNames2() }, - getOwnPropertyNames2() { return ['1', '2'] }, - getOwnPropertyDescriptor(k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2(k) { throw "myexn" } -}) - -TestKeysThrow({ - get ownKeys() { throw "myexn" } -}) - -TestKeysThrow({ - get ownKeys() { - return function() { throw "myexn" } - }, -}) - -TestKeysThrow({ - get ownKeys() { - return function() { return ['1', '2'] } - }, - getOwnPropertyDescriptor(k) { throw "myexn" } -}) - - - -// --------------------------------------------------------------------------- -// String conversion (Object.prototype.toString, -// Object.prototype.toLocaleString) - -var key - -function TestToString(handler) { - var p = new Proxy({}, handler) - key = "" - assertEquals("[object Object]", Object.prototype.toString.call(p)) - assertEquals(Symbol.toStringTag, key) - assertEquals("my_proxy", Object.prototype.toLocaleString.call(p)) - assertEquals("toString", key) - - var f = new Proxy(function() {}, handler) - key = "" - assertEquals("[object Function]", Object.prototype.toString.call(f)) - assertEquals(Symbol.toStringTag, key) - assertEquals("my_proxy", Object.prototype.toLocaleString.call(f)) - assertEquals("toString", key) - - var o = Object.create(p) - key = "" - assertEquals("[object Object]", Object.prototype.toString.call(o)) - assertEquals(Symbol.toStringTag, key) - assertEquals("my_proxy", Object.prototype.toLocaleString.call(o)) - assertEquals("toString", key) -} - -TestToString({ - get: function(r, k) { key = k; return function() { return "my_proxy" } } -}) - -TestToString({ - get: function(r, k) { return this.get2(r, k) }, - get2: function(r, k) { key = k; return function() { return "my_proxy" } } -}) - -TestToString(new Proxy({}, { - get: function(pr, pk) { - return function(r, k) { key = k; return function() { return "my_proxy" } } - } -})) - - -function TestToStringThrow(handler) { - var p = new Proxy({}, handler) - assertThrowsEquals(() => Object.prototype.toString.call(p), "myexn") - assertThrowsEquals(() => Object.prototype.toLocaleString.call(p), "myexn") - - var f = new Proxy(function(){}, handler) - assertThrowsEquals(() => Object.prototype.toString.call(f), "myexn") - assertThrowsEquals(() => Object.prototype.toLocaleString.call(f), "myexn") - - var o = Object.create(p) - assertThrowsEquals(() => Object.prototype.toString.call(o), "myexn") - assertThrowsEquals(() => Object.prototype.toLocaleString.call(o), "myexn") -} - -TestToStringThrow({ - get: function(r, k) { throw "myexn" } -}) - -TestToStringThrow({ - get: function(r, k) { return this.get2(r, k) }, - get2: function(r, k) { throw "myexn" } -}) - -TestToStringThrow(new Proxy({}, { - get: function(pr, pk) { throw "myexn" } -})) - -TestToStringThrow(new Proxy({}, { - get: function(pr, pk) { - return function(r, k) { throw "myexn" } - } -})) - - -// --------------------------------------------------------------------------- -// Value conversion (Object.prototype.toValue) - -function TestValueOf(handler) { - TestWithProxies(TestValueOf2, handler) -} - -function TestValueOf2(create, handler) { - var p = create(handler) - assertSame(p, Object.prototype.valueOf.call(p)) -} - -TestValueOf({}) - - - -// --------------------------------------------------------------------------- -// Enumerability (Object.prototype.propertyIsEnumerable) - -var key - -function TestIsEnumerable(handler) { - TestWithProxies(TestIsEnumerable2, handler) -} - -function TestIsEnumerable2(create, handler) { - var p = create(handler) - assertTrue(Object.prototype.propertyIsEnumerable.call(p, "a")) - assertEquals("a", key) - assertTrue(Object.prototype.propertyIsEnumerable.call(p, 2)) - assertEquals("2", key) - assertFalse(Object.prototype.propertyIsEnumerable.call(p, "z")) - assertEquals("z", key) - - var o = Object.create(p) - key = "" - assertFalse(Object.prototype.propertyIsEnumerable.call(o, "a")) - assertEquals("", key) // trap not invoked -} - -TestIsEnumerable({ - getOwnPropertyDescriptor(t, k) { - key = k; - return {enumerable: k < "z", configurable: true} - }, -}) - -TestIsEnumerable({ - getOwnPropertyDescriptor: function(t, k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2: function(k) { - key = k; - return {enumerable: k < "z", configurable: true} - }, -}) - -TestIsEnumerable({ - getOwnPropertyDescriptor: function(t, k) { - key = k; - return {get enumerable() { return k < "z" }, configurable: true} - }, -}) - -TestIsEnumerable(new Proxy({}, { - get: function(pt, pk, pr) { - return function(t, k) { - key = k; - return {enumerable: k < "z", configurable: true} - } - } -})) - - -// --------------------------------------------------------------------------- -function TestIsEnumerableThrow(handler) { - TestWithProxies(TestIsEnumerableThrow2, handler) -} - -function TestIsEnumerableThrow2(create, handler) { - var p = create(handler) - assertThrowsEquals(() => Object.prototype.propertyIsEnumerable.call(p, "a"), - "myexn") - assertThrowsEquals(() => Object.prototype.propertyIsEnumerable.call(p, 11), - "myexn") -} - -TestIsEnumerableThrow({ - getOwnPropertyDescriptor: function(k) { throw "myexn" } -}) - -TestIsEnumerableThrow({ - getOwnPropertyDescriptor: function(k) { - return this.getOwnPropertyDescriptor2(k) - }, - getOwnPropertyDescriptor2: function(k) { throw "myexn" } -}) - -TestIsEnumerableThrow({ - getOwnPropertyDescriptor: function(k) { - return {get enumerable() { throw "myexn" }, configurable: true} - }, -}) - -TestIsEnumerableThrow(new Proxy({}, { - get: function(pr, pk) { throw "myexn" } -})) - -TestIsEnumerableThrow(new Proxy({}, { - get: function(pr, pk) { - return function(k) { throw "myexn" } - } -})); - - - -// --------------------------------------------------------------------------- -// Constructor functions with proxy prototypes. - -(function TestConstructorWithProxyPrototype() { - TestWithProxies(TestConstructorWithProxyPrototype2, {}) -})(); - -function TestConstructorWithProxyPrototype2(create, handler) { - function C() {}; - C.prototype = create(handler); - - var o = new C; - assertSame(C.prototype, Object.getPrototypeOf(o)); -}; - - -(function TestOptWithProxyPrototype() { - var handler = { - get(t, k) { - return 10; - } - }; - - function C() {}; - C.prototype = new Proxy({}, handler); - var o = new C(); - - function f() { - return o.x; - } - assertEquals(10, f()); - assertEquals(10, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(10, f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/proxy-function-tostring.js b/implementation-contributed/v8/mjsunit/es6/proxy-function-tostring.js deleted file mode 100644 index e151bf65b13..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/proxy-function-tostring.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(new Proxy(function() {}, {}).toString(), - 'function () { [native code] }'); diff --git a/implementation-contributed/v8/mjsunit/es6/reflect-apply.js b/implementation-contributed/v8/mjsunit/es6/reflect-apply.js deleted file mode 100644 index fa3801378f4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/reflect-apply.js +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function testReflectApplyArity() { - assertEquals(3, Reflect.apply.length); -})(); - - -(function testReflectApplyNonConstructor() { - assertThrows(function() { - new Reflect.apply(function(){}, null, []); - }, TypeError); -})(); - - -(function testAppliedReceiverSloppy() { - function returnThis() { return this; } - var receiver = {}; - - assertSame(this, Reflect.apply(returnThis, void 0, [])); - assertSame(this, Reflect.apply(returnThis, null, [])); - assertSame(this, Reflect.apply(returnThis, this, [])); - assertSame(receiver, Reflect.apply(returnThis, receiver, [])); - - // Wrap JS values - assertSame(String.prototype, - Object.getPrototypeOf(Reflect.apply(returnThis, "str", []))); - assertSame(Number.prototype, - Object.getPrototypeOf(Reflect.apply(returnThis, 123, []))); - assertSame(Boolean.prototype, - Object.getPrototypeOf(Reflect.apply(returnThis, true, []))); - assertSame(Symbol.prototype, - Object.getPrototypeOf( - Reflect.apply(returnThis, Symbol("test"), []))); -})(); - - -(function testAppliedReceiverStrict() { - function returnThis() { 'use strict'; return this; } - var receiver = {}; - - assertSame(void 0, Reflect.apply(returnThis, void 0, [])); - assertSame(this, Reflect.apply(returnThis, this, [])); - assertSame(receiver, Reflect.apply(returnThis, receiver, [])); - - // Don't wrap value types - var regexp = /123/; - var symbol = Symbol("test"); - assertSame("str", Reflect.apply(returnThis, "str", [])); - assertSame(123, Reflect.apply(returnThis, 123, [])); - assertSame(true, Reflect.apply(returnThis, true, [])); - assertSame(regexp, Reflect.apply(returnThis, regexp, [])); - assertSame(symbol, Reflect.apply(returnThis, symbol, [])); -})(); - - -(function testAppliedArgumentsLength() { - function returnLengthStrict() { 'use strict'; return arguments.length; } - function returnLengthSloppy() { return arguments.length; } - - assertEquals(0, Reflect.apply(returnLengthStrict, this, [])); - assertEquals(0, Reflect.apply(returnLengthSloppy, this, [])); - assertEquals(0, Reflect.apply(returnLengthStrict, this, {})); - assertEquals(0, Reflect.apply(returnLengthSloppy, this, {})); - - for (var i = 0; i < 256; ++i) { - assertEquals(i, Reflect.apply(returnLengthStrict, this, new Array(i))); - assertEquals(i, Reflect.apply(returnLengthSloppy, this, new Array(i))); - assertEquals(i, Reflect.apply(returnLengthStrict, this, { length: i })); - assertEquals(i, Reflect.apply(returnLengthSloppy, this, { length: i })); - } -})(); - - -(function testAppliedArgumentsLengthThrows() { - function noopStrict() { 'use strict'; } - function noopSloppy() { } - function MyError() {} - - var argsList = {}; - Object.defineProperty(argsList, "length", { - get: function() { throw new MyError(); } - }); - - assertThrows(function() { - Reflect.apply(noopStrict, this, argsList); - }, MyError); - - assertThrows(function() { - Reflect.apply(noopSloppy, this, argsList); - }, MyError); -})(); - - -(function testAppliedArgumentsElementThrows() { - function noopStrict() { 'use strict'; } - function noopSloppy() { } - function MyError() {} - - var argsList = { length: 1 }; - Object.defineProperty(argsList, "0", { - get: function() { throw new MyError(); } - }); - - assertThrows(function() { - Reflect.apply(noopStrict, this, argsList); - }, MyError); - - assertThrows(function() { - Reflect.apply(noopSloppy, this, argsList); - }, MyError); -})(); - - -(function testAppliedNonFunctionStrict() { - 'use strict'; - assertThrows(function() { Reflect.apply(void 0); }, TypeError); - assertThrows(function() { Reflect.apply(null); }, TypeError); - assertThrows(function() { Reflect.apply(123); }, TypeError); - assertThrows(function() { Reflect.apply("str"); }, TypeError); - assertThrows(function() { Reflect.apply(Symbol("x")); }, TypeError); - assertThrows(function() { Reflect.apply(/123/); }, TypeError); - assertThrows(function() { Reflect.apply(NaN); }, TypeError); - assertThrows(function() { Reflect.apply({}); }, TypeError); - assertThrows(function() { Reflect.apply([]); }, TypeError); -})(); - - -(function testAppliedNonFunctionSloppy() { - assertThrows(function() { Reflect.apply(void 0); }, TypeError); - assertThrows(function() { Reflect.apply(null); }, TypeError); - assertThrows(function() { Reflect.apply(123); }, TypeError); - assertThrows(function() { Reflect.apply("str"); }, TypeError); - assertThrows(function() { Reflect.apply(Symbol("x")); }, TypeError); - assertThrows(function() { Reflect.apply(/123/); }, TypeError); - assertThrows(function() { Reflect.apply(NaN); }, TypeError); - assertThrows(function() { Reflect.apply({}); }, TypeError); - assertThrows(function() { Reflect.apply([]); }, TypeError); -})(); - - -(function testAppliedArgumentsNonList() { - function noopStrict() { 'use strict'; } - function noopSloppy() {} - var R = void 0; - assertThrows(function() { Reflect.apply(noopStrict, R, null); }, TypeError); - assertThrows(function() { Reflect.apply(noopSloppy, R, null); }, TypeError); - assertThrows(function() { Reflect.apply(noopStrict, R, 1); }, TypeError); - assertThrows(function() { Reflect.apply(noopSloppy, R, 1); }, TypeError); - assertThrows(function() { Reflect.apply(noopStrict, R, "BAD"); }, TypeError); - assertThrows(function() { Reflect.apply(noopSloppy, R, "BAD"); }, TypeError); - assertThrows(function() { Reflect.apply(noopStrict, R, true); }, TypeError); - assertThrows(function() { Reflect.apply(noopSloppy, R, true); }, TypeError); - var sym = Symbol("x"); - assertThrows(function() { Reflect.apply(noopStrict, R, sym); }, TypeError); - assertThrows(function() { Reflect.apply(noopSloppy, R, sym); }, TypeError); -})(); - - -(function testAppliedArgumentValue() { - function returnFirstStrict(a) { 'use strict'; return a; } - function returnFirstSloppy(a) { return a; } - function returnLastStrict(a) { - 'use strict'; return arguments[arguments.length - 1]; } - function returnLastSloppy(a) { return arguments[arguments.length - 1]; } - function returnSumStrict() { - 'use strict'; - var sum = arguments[0]; - for (var i = 1; i < arguments.length; ++i) { - sum += arguments[i]; - } - return sum; - } - function returnSumSloppy() { - var sum = arguments[0]; - for (var i = 1; i < arguments.length; ++i) { - sum += arguments[i]; - } - return sum; - } - - assertEquals("OK!", Reflect.apply(returnFirstStrict, this, ["OK!"])); - assertEquals("OK!", Reflect.apply(returnFirstSloppy, this, ["OK!"])); - assertEquals("OK!", Reflect.apply(returnFirstStrict, this, - { 0: "OK!", length: 1 })); - assertEquals("OK!", Reflect.apply(returnFirstSloppy, this, - { 0: "OK!", length: 1 })); - assertEquals("OK!", Reflect.apply(returnLastStrict, this, - [0, 1, 2, 3, 4, 5, 6, 7, 8, "OK!"])); - assertEquals("OK!", Reflect.apply(returnLastSloppy, this, - [0, 1, 2, 3, 4, 5, 6, 7, 8, "OK!"])); - assertEquals("OK!", Reflect.apply(returnLastStrict, this, - { 9: "OK!", length: 10 })); - assertEquals("OK!", Reflect.apply(returnLastSloppy, this, - { 9: "OK!", length: 10 })); - assertEquals("TEST", Reflect.apply(returnSumStrict, this, - ["T", "E", "S", "T"])); - assertEquals("TEST!!", Reflect.apply(returnSumStrict, this, - ["T", "E", "S", "T", "!", "!"])); - assertEquals(10, Reflect.apply(returnSumStrict, this, - { 0: 1, 1: 2, 2: 3, 3: 4, length: 4 })); - assertEquals("TEST", Reflect.apply(returnSumSloppy, this, - ["T", "E", "S", "T"])); - assertEquals("TEST!!", Reflect.apply(returnSumSloppy, this, - ["T", "E", "S", "T", "!", "!"])); - assertEquals(10, Reflect.apply(returnSumSloppy, this, - { 0: 1, 1: 2, 2: 3, 3: 4, length: 4 })); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/reflect-construct.js b/implementation-contributed/v8/mjsunit/es6/reflect-construct.js deleted file mode 100644 index 34b6f27373f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/reflect-construct.js +++ /dev/null @@ -1,402 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-unsafe-function-constructor - - -(function testReflectConstructArity() { - assertEquals(2, Reflect.construct.length); -})(); - - -(function testReflectConstructNonConstructor() { - assertThrows(function() { - new Reflect.construct(function(){}, []); - }, TypeError); -})(); - - -(function testReflectConstructArg1NonConstructor() { - try { - Reflect.construct(() => {}, []); - } catch (e) { - assertInstanceof(e, TypeError); - assertEquals("() => {} is not a constructor", e.message); - return; - } - assertUnreachable("Exception expected"); -})(); - - -(function testReflectConstructArg3NonConstructor() { - try { - Reflect.construct(function() {}, [], () => {}); - } catch (e) { - assertInstanceof(e, TypeError); - assertEquals("() => {} is not a constructor", e.message); - return; - } - assertUnreachable("Exception expected"); -})(); - - -(function testReflectConstructBasic() { - function Constructor() { "use strict"; } - assertInstanceof(Reflect.construct(Constructor, []), Constructor); -})(); - - -(function testReflectConstructBasicSloppy() { - function Constructor() {} - assertInstanceof(Reflect.construct(Constructor, []), Constructor); -})(); - - -(function testReflectConstructReturnSomethingElseStrict() { - var R = {}; - function Constructor() { "use strict"; return R; } - assertSame(R, Reflect.construct(Constructor, [])); -})(); - - -(function testReflectConstructReturnSomethingElseSloppy() { - var R = {}; - function Constructor() { return R; } - assertSame(R, Reflect.construct(Constructor, [])); -})(); - - -(function testReflectConstructNewTargetStrict() { - "use strict"; - function Constructor() { this[9] = 1; } - var O = Reflect.construct(Constructor, [], Array); - assertEquals(1, O[9]); - // Ordinary object with Array.prototype --- no exotic Array magic - assertFalse(Array.isArray(O)); - assertEquals(0, O.length); - assertSame(Array.prototype, Object.getPrototypeOf(O)); -})(); - - -(function testReflectConstructNewTargetSloppy() { - function Constructor() { this[9] = 1; } - var O = Reflect.construct(Constructor, [], Array); - assertEquals(1, O[9]); - // Ordinary object with Array.prototype --- no exotic Array magic - assertFalse(Array.isArray(O)); - assertEquals(0, O.length); - assertSame(Array.prototype, Object.getPrototypeOf(O)); -})(); - - -(function testReflectConstructNewTargetStrict2() { - "use strict"; - function Constructor() { this[9] = 1; } - Constructor.prototype.add = function(x) { - this[this.length] = x; return this; - } - var O = Reflect.construct(Array, [1, 2, 3], Constructor); - // Exotic Array object with Constructor.prototype - assertTrue(Array.isArray(O)); - assertSame(Constructor.prototype, Object.getPrototypeOf(O)); - assertFalse(O instanceof Array); - assertEquals(3, O.length); - assertEquals(undefined, O[9]); - assertSame(O, O.add(4)); - assertEquals(4, O.length); - assertEquals(4, O[3]); -})(); - - -(function testReflectConstructNewTargetSloppy2() { - function Constructor() { this[9] = 1; } - Constructor.prototype.add = function(x) { - this[this.length] = x; return this; - } - var O = Reflect.construct(Array, [1, 2, 3], Constructor); - // Exotic Array object with Constructor.prototype - assertTrue(Array.isArray(O)); - assertSame(Constructor.prototype, Object.getPrototypeOf(O)); - assertFalse(O instanceof Array); - assertEquals(3, O.length); - assertEquals(undefined, O[9]); - assertSame(O, O.add(4)); - assertEquals(4, O.length); - assertEquals(4, O[3]); -})(); - - -(function testReflectConstructNewTargetStrict3() { - "use strict"; - function A() {} - function B() {} - var O = Reflect.construct(A, [], B); - // TODO(caitp): bug: newTarget prototype is not used if it is not - // explicitly set. - //assertSame(B.prototype, Object.getPrototypeOf(O)); -})(); - - -(function testReflectConstructNewTargetSloppy3() { - function A() {} - function B() {} - var O = Reflect.construct(A, [], B); - // TODO(caitp): bug: newTarget prototype is not used if it is not - // explicitly set. - //assertSame(B.prototype, Object.getPrototypeOf(O)); -})(); - - -(function testAppliedArgumentsLength() { - function lengthStrict() { 'use strict'; this.a = arguments.length; } - function lengthSloppy() { this.a = arguments.length; } - - assertEquals(0, Reflect.construct(lengthStrict, []).a); - assertEquals(0, Reflect.construct(lengthSloppy, []).a); - assertEquals(0, Reflect.construct(lengthStrict, {}).a); - assertEquals(0, Reflect.construct(lengthSloppy, {}).a); - - for (var i = 0; i < 256; ++i) { - assertEquals(i, Reflect.construct(lengthStrict, new Array(i)).a); - assertEquals(i, Reflect.construct(lengthSloppy, new Array(i)).a); - assertEquals(i, Reflect.construct(lengthStrict, { length: i }).a); - assertEquals(i, Reflect.construct(lengthSloppy, { length: i }).a); - } -})(); - - -(function testAppliedArgumentsLengthThrows() { - function noopStrict() { 'use strict'; } - function noopSloppy() { } - function MyError() {} - - var argsList = {}; - Object.defineProperty(argsList, "length", { - get: function() { throw new MyError(); } - }); - - assertThrows(function() { - Reflect.construct(noopStrict, argsList); - }, MyError); - - assertThrows(function() { - Reflect.construct(noopSloppy, argsList); - }, MyError); -})(); - - -(function testAppliedArgumentsElementThrows() { - function noopStrict() { 'use strict'; } - function noopSloppy() { } - function MyError() {} - - var argsList = { length: 1 }; - Object.defineProperty(argsList, "0", { - get: function() { throw new MyError(); } - }); - - assertThrows(function() { - Reflect.construct(noopStrict, argsList); - }, MyError); - - assertThrows(function() { - Reflect.construct(noopSloppy, argsList); - }, MyError); -})(); - - -(function testAppliedNonFunctionStrict() { - 'use strict'; - assertThrows(function() { Reflect.construct(void 0, []); }, TypeError); - assertThrows(function() { Reflect.construct(null, []); }, TypeError); - assertThrows(function() { Reflect.construct(123, []); }, TypeError); - assertThrows(function() { Reflect.construct("str", []); }, TypeError); - assertThrows(function() { Reflect.construct(Symbol("x"), []); }, TypeError); - assertThrows(function() { Reflect.construct(/123/, []); }, TypeError); - assertThrows(function() { Reflect.construct(NaN, []); }, TypeError); - assertThrows(function() { Reflect.construct({}, []); }, TypeError); - assertThrows(function() { Reflect.construct([], []); }, TypeError); -})(); - - -(function testAppliedNonFunctionSloppy() { - assertThrows(function() { Reflect.construct(void 0, []); }, TypeError); - assertThrows(function() { Reflect.construct(null, []); }, TypeError); - assertThrows(function() { Reflect.construct(123, []); }, TypeError); - assertThrows(function() { Reflect.construct("str", []); }, TypeError); - assertThrows(function() { Reflect.construct(Symbol("x"), []); }, TypeError); - assertThrows(function() { Reflect.construct(/123/, []); }, TypeError); - assertThrows(function() { Reflect.construct(NaN, []); }, TypeError); - assertThrows(function() { Reflect.construct({}, []); }, TypeError); - assertThrows(function() { Reflect.construct([], []); }, TypeError); -})(); - - -(function testAppliedArgumentsNonList() { - function noopStrict() { 'use strict'; } - function noopSloppy() {} - assertThrows(function() { Reflect.construct(noopStrict, null); }, TypeError); - assertThrows(function() { Reflect.construct(noopSloppy, null); }, TypeError); - assertThrows(function() { Reflect.construct(noopStrict, 1); }, TypeError); - assertThrows(function() { Reflect.construct(noopSloppy, 1); }, TypeError); - assertThrows(function() { Reflect.construct(noopStrict, "BAD"); }, TypeError); - assertThrows(function() { Reflect.construct(noopSloppy, "BAD"); }, TypeError); - assertThrows(function() { Reflect.construct(noopStrict, true); }, TypeError); - assertThrows(function() { Reflect.construct(noopSloppy, true); }, TypeError); - var sym = Symbol("x"); - assertThrows(function() { Reflect.construct(noopStrict, sym); }, TypeError); - assertThrows(function() { Reflect.construct(noopSloppy, sym); }, TypeError); -})(); - - -(function testAppliedArgumentValue() { - function firstStrict(a) { 'use strict'; this.a = a; } - function firstSloppy(a) { this.a = a; } - function lastStrict(a) { - 'use strict'; this.a = arguments[arguments.length - 1]; } - function lastSloppy(a) { this.a = arguments[arguments.length - 1]; } - function sumStrict() { - 'use strict'; - var sum = arguments[0]; - for (var i = 1; i < arguments.length; ++i) { - sum += arguments[i]; - } - this.a = sum; - } - function sumSloppy() { - var sum = arguments[0]; - for (var i = 1; i < arguments.length; ++i) { - sum += arguments[i]; - } - this.a = sum; - } - - assertEquals("OK!", Reflect.construct(firstStrict, ["OK!"]).a); - assertEquals("OK!", Reflect.construct(firstSloppy, ["OK!"]).a); - assertEquals("OK!", Reflect.construct(firstStrict, - { 0: "OK!", length: 1 }).a); - assertEquals("OK!", Reflect.construct(firstSloppy, - { 0: "OK!", length: 1 }).a); - assertEquals("OK!", Reflect.construct(lastStrict, - [0, 1, 2, 3, 4, 5, 6, 7, 8, "OK!"]).a); - assertEquals("OK!", Reflect.construct(lastSloppy, - [0, 1, 2, 3, 4, 5, 6, 7, 8, "OK!"]).a); - assertEquals("OK!", Reflect.construct(lastStrict, - { 9: "OK!", length: 10 }).a); - assertEquals("OK!", Reflect.construct(lastSloppy, - { 9: "OK!", length: 10 }).a); - assertEquals("TEST", Reflect.construct(sumStrict, - ["T", "E", "S", "T"]).a); - assertEquals("TEST!!", Reflect.construct(sumStrict, - ["T", "E", "S", "T", "!", "!"]).a); - assertEquals(10, Reflect.construct(sumStrict, - { 0: 1, 1: 2, 2: 3, 3: 4, length: 4 }).a); - assertEquals("TEST", Reflect.construct(sumSloppy, - ["T", "E", "S", "T"]).a); - assertEquals("TEST!!", Reflect.construct(sumSloppy, - ["T", "E", "S", "T", "!", "!"]).a); - assertEquals(10, Reflect.construct(sumSloppy, - { 0: 1, 1: 2, 2: 3, 3: 4, length: 4 }).a); -})(); - -(function() { - function* f() { yield 1; yield 2; } - function* g() { yield 3; yield 4; } - assertThrows(()=>Reflect.construct(f, [], g)); -})(); - -(function () { - var realm1 = Realm.create(); - var realm2 = Realm.create(); - - var well_known_intrinsic_constructors = [ - "Array", - "ArrayBuffer", - "Boolean", - ["DataView", [new ArrayBuffer()]], - "Date", - "Error", - "EvalError", - "Float32Array", - "Float64Array", - ["Function", ["return 153;"]], - ["Function", ["'use strict'; return 153;"]], - ["((function*(){}).constructor)", ["yield 153;"]], // GeneratorFunction - ["((function*(){}).constructor)", ["'use strict'; yield 153;"]], - // AsyncGeneratorFunction - ["((async function*(){}).constructor)", ["return 153;"]], - "Int8Array", - "Int16Array", - "Int32Array", - "Map", - "Number", - "Object", - ["Promise", [(resolve, reject)=>{}]], - "RangeError", - "ReferenceError", - "RegExp", - "Set", - "String", - "SyntaxError", - // %TypedArray%? - "TypeError", - "Uint8Array", - "Uint8ClampedArray", - "Uint16Array", - "Uint32Array", - "URIError", - "WeakMap", - "WeakSet" - ]; - - function getname(v) { - return typeof v === "string" ? v : v[0]; - } - - function getargs(v) { - return typeof v === "string" ? [] : v[1]; - } - - function test_intrinsic_prototype(name) { - var own = Realm.eval(realm1, name); - - // Ensure that constructor.prototype is non-writable, non-configurable. - var desc = Object.getOwnPropertyDescriptor(own, "prototype"); - assertFalse(desc.configurable, name); - assertFalse(desc.writable, name); - } - - for (var intrinsic of well_known_intrinsic_constructors) { - test_intrinsic_prototype(getname(intrinsic)); - } - - function function_with_non_instance_prototype(realm) { - var f = Realm.eval(realm, "(function(){})"); - f.prototype = 1; - return f; - } - - function test_intrinsic_default(realm, name, args, convert) { - var own = Realm.eval(realm1, name); - var other = Realm.eval(realm, name); - var o = Reflect.construct( - convert(own), args, function_with_non_instance_prototype(realm)); - - // Ensure the intrisicDefaultProto is fetched from the correct realm. - assertTrue(realm == realm1 || o.__proto__ !== own.prototype, [...arguments]); - assertTrue(o.__proto__ === other.prototype, [...arguments]); - } - - function test_all(test, convert) { - for (var intrinsic of well_known_intrinsic_constructors) { - for (var realm of [realm1, realm2]) { - test(realm, getname(intrinsic), getargs(intrinsic), convert); - } - } - } - - test_all(test_intrinsic_default, (v)=>v); - test_all(test_intrinsic_default, - (v)=>{ "use strict"; return class extends v {}}); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/reflect-define-property.js b/implementation-contributed/v8/mjsunit/es6/reflect-define-property.js deleted file mode 100644 index 6ead02ba748..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/reflect-define-property.js +++ /dev/null @@ -1,1068 +0,0 @@ -// Copyright 2012-2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the Reflect.defineProperty method - ES6 26.1.3 -// This is adapted from mjsunit/object-define-property.js. - -// Flags: --allow-natives-syntax - - -// Check that an exception is thrown when null is passed as object. -var exception = false; -try { - Reflect.defineProperty(null, null, null); -} catch (e) { - exception = true; - assertTrue(/called on non-object/.test(e)); -} -assertTrue(exception); - -// Check that an exception is thrown when undefined is passed as object. -exception = false; -try { - Reflect.defineProperty(undefined, undefined, undefined); -} catch (e) { - exception = true; - assertTrue(/called on non-object/.test(e)); -} -assertTrue(exception); - -// Check that an exception is thrown when non-object is passed as object. -exception = false; -try { - Reflect.defineProperty(0, "foo", undefined); -} catch (e) { - exception = true; - assertTrue(/called on non-object/.test(e)); -} -assertTrue(exception); - -// Object. -var obj1 = {}; - -// Values. -var val1 = 0; -var val2 = 0; -var val3 = 0; - -function setter1() {val1++; } -function getter1() {return val1; } - -function setter2() {val2++; } -function getter2() {return val2; } - -function setter3() {val3++; } -function getter3() {return val3; } - - -// Descriptors. -var emptyDesc = {}; - -var accessorConfigurable = { - set: setter1, - get: getter1, - configurable: true -}; - -var accessorNoConfigurable = { - set: setter2, - get: getter2, - configurable: false -}; - -var accessorOnlySet = { - set: setter3, - configurable: true -}; - -var accessorOnlyGet = { - get: getter3, - configurable: true -}; - -var accessorDefault = {set: function(){} }; - -var dataConfigurable = { value: 1000, configurable: true }; - -var dataNoConfigurable = { value: 2000, configurable: false }; - -var dataWritable = { value: 3000, writable: true}; - - -// Check that we can't add property with undefined attributes. -assertThrows(function() { Reflect.defineProperty(obj1, "foo", undefined) }, - TypeError); - -// Make sure that we can add a property with an empty descriptor and -// that it has the default descriptor values. -assertTrue(Reflect.defineProperty(obj1, "foo", emptyDesc)); - -// foo should be undefined as it has no get, set or value -assertEquals(undefined, obj1.foo); - -// We should, however, be able to retrieve the propertydescriptor which should -// have all default values (according to 8.6.1). -var desc = Object.getOwnPropertyDescriptor(obj1, "foo"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertFalse(desc.writable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); -assertEquals(desc.value, undefined); - -// Make sure that getOwnPropertyDescriptor does not return a descriptor -// with default values if called with non existing property (otherwise -// the test above is invalid). -desc = Object.getOwnPropertyDescriptor(obj1, "bar"); -assertEquals(desc, undefined); - -// Make sure that foo can't be reset (as configurable is false). -assertFalse(Reflect.defineProperty(obj1, "foo", accessorConfigurable)); - - -// Accessor properties - -assertTrue(Reflect.defineProperty(obj1, "bar", accessorConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj1, "bar"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.set, accessorConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.bar = 1); -assertEquals(1, val1); -assertEquals(1, obj1.bar = 1); -assertEquals(2, val1); -assertEquals(2, obj1.bar); - -// Redefine bar with non configurable test -assertTrue(Reflect.defineProperty(obj1, "bar", accessorNoConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj1, "bar"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorNoConfigurable.get); -assertEquals(desc.set, accessorNoConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.bar = 1); -assertEquals(2, val1); -assertEquals(1, val2); -assertEquals(1, obj1.bar = 1) -assertEquals(2, val1); -assertEquals(2, val2); -assertEquals(2, obj1.bar); - -// Try to redefine bar again - should fail as configurable is false. -assertFalse(Reflect.defineProperty(obj1, "bar", accessorConfigurable)); - -// Try to redefine bar again using the data descriptor - should fail. -assertFalse(Reflect.defineProperty(obj1, "bar", dataConfigurable)); - -// Redefine using same descriptor - should succeed. -assertTrue(Reflect.defineProperty(obj1, "bar", accessorNoConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj1, "bar"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorNoConfigurable.get); -assertEquals(desc.set, accessorNoConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.bar = 1); -assertEquals(2, val1); -assertEquals(3, val2); -assertEquals(1, obj1.bar = 1) -assertEquals(2, val1); -assertEquals(4, val2); -assertEquals(4, obj1.bar); - -// Define an accessor that has only a setter. -assertTrue(Reflect.defineProperty(obj1, "setOnly", accessorOnlySet)); -desc = Object.getOwnPropertyDescriptor(obj1, "setOnly"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.set, accessorOnlySet.set); -assertEquals(desc.writable, undefined); -assertEquals(desc.value, undefined); -assertEquals(desc.get, undefined); -assertEquals(1, obj1.setOnly = 1); -assertEquals(1, val3); - -// Add a getter - should not touch the setter. -assertTrue(Reflect.defineProperty(obj1, "setOnly", accessorOnlyGet)); -desc = Object.getOwnPropertyDescriptor(obj1, "setOnly"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.get, accessorOnlyGet.get); -assertEquals(desc.set, accessorOnlySet.set); -assertEquals(desc.writable, undefined); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.setOnly = 1); -assertEquals(2, val3); - -// The above should also work if redefining just a getter or setter on -// an existing property with both a getter and a setter. -assertTrue(Reflect.defineProperty(obj1, "both", accessorConfigurable)); - -assertTrue(Reflect.defineProperty(obj1, "both", accessorOnlySet)); -desc = Object.getOwnPropertyDescriptor(obj1, "both"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.set, accessorOnlySet.set); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.writable, undefined); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.both = 1); -assertEquals(3, val3); - - -// Data properties - -assertTrue(Reflect.defineProperty(obj1, "foobar", dataConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj1, "foobar"); -assertEquals(obj1.foobar, 1000); -assertEquals(desc.value, 1000); -assertTrue(desc.configurable); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); -//Try writing to non writable attribute - should remain 1000 -obj1.foobar = 1001; -assertEquals(obj1.foobar, 1000); - - -// Redefine to writable descriptor - now writing to foobar should be allowed. -assertTrue(Reflect.defineProperty(obj1, "foobar", dataWritable)); -desc = Object.getOwnPropertyDescriptor(obj1, "foobar"); -assertEquals(obj1.foobar, 3000); -assertEquals(desc.value, 3000); -// Note that since dataWritable does not define configurable the configurable -// setting from the redefined property (in this case true) is used. -assertTrue(desc.configurable); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); -// Writing to the property should now be allowed -obj1.foobar = 1001; -assertEquals(obj1.foobar, 1001); - - -// Redefine with non configurable data property. -assertTrue(Reflect.defineProperty(obj1, "foobar", dataNoConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj1, "foobar"); -assertEquals(obj1.foobar, 2000); -assertEquals(desc.value, 2000); -assertFalse(desc.configurable); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - -// Try redefine again - shold fail because configurable is now false. -assertFalse(Reflect.defineProperty(obj1, "foobar", dataConfigurable)); - -// Try redefine again with accessor property - shold also fail. -assertFalse(Reflect.defineProperty(obj1, "foobar", dataConfigurable)); - - -// Redifine with the same descriptor - should succeed (step 6). -assertTrue(Reflect.defineProperty(obj1, "foobar", dataNoConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj1, "foobar"); -assertEquals(obj1.foobar, 2000); -assertEquals(desc.value, 2000); -assertFalse(desc.configurable); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -// New object -var obj2 = {}; - -// Make accessor - redefine to data -assertTrue(Reflect.defineProperty(obj2, "foo", accessorConfigurable)); - -// Redefine to data property -assertTrue(Reflect.defineProperty(obj2, "foo", dataConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj2, "foo"); -assertEquals(obj2.foo, 1000); -assertEquals(desc.value, 1000); -assertTrue(desc.configurable); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -// Redefine back to accessor -assertTrue(Reflect.defineProperty(obj2, "foo", accessorConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj2, "foo"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.set, accessorConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj2.foo = 1); -assertEquals(3, val1); -assertEquals(4, val2); -assertEquals(3, obj2.foo); - -// Make data - redefine to accessor -assertTrue(Reflect.defineProperty(obj2, "bar", dataConfigurable)) - -// Redefine to accessor property -assertTrue(Reflect.defineProperty(obj2, "bar", accessorConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj2, "bar"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.set, accessorConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj2.bar = 1); -assertEquals(4, val1); -assertEquals(4, val2); -assertEquals(4, obj2.foo); - -// Redefine back to data property -assertTrue(Reflect.defineProperty(obj2, "bar", dataConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj2, "bar"); -assertEquals(obj2.bar, 1000); -assertEquals(desc.value, 1000); -assertTrue(desc.configurable); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -// Redefinition of an accessor defined using __defineGetter__ and -// __defineSetter__. -function get(){return this.x} -function set(x){this.x=x}; - -var obj3 = {x:1000}; -obj3.__defineGetter__("foo", get); -obj3.__defineSetter__("foo", set); - -desc = Object.getOwnPropertyDescriptor(obj3, "foo"); -assertTrue(desc.configurable); -assertTrue(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, get); -assertEquals(desc.set, set); -assertEquals(desc.value, undefined); -assertEquals(1, obj3.foo = 1); -assertEquals(1, obj3.x); -assertEquals(1, obj3.foo); - -// Redefine to accessor property (non configurable) - note that enumerable -// which we do not redefine should remain the same (true). -assertTrue(Reflect.defineProperty(obj3, "foo", accessorNoConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj3, "foo"); -assertFalse(desc.configurable); -assertTrue(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorNoConfigurable.get); -assertEquals(desc.set, accessorNoConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj3.foo = 1); -assertEquals(5, val2); -assertEquals(5, obj3.foo); - - -obj3.__defineGetter__("bar", get); -obj3.__defineSetter__("bar", set); - - -// Redefine back to data property -assertTrue(Reflect.defineProperty(obj3, "bar", dataConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj3, "bar"); -assertEquals(obj3.bar, 1000); -assertEquals(desc.value, 1000); -assertTrue(desc.configurable); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -var obj4 = {}; -var func = function (){return 42;}; -obj4.bar = func; -assertEquals(42, obj4.bar()); - -assertTrue(Reflect.defineProperty(obj4, "bar", accessorConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj4, "bar"); -assertTrue(desc.configurable); -assertTrue(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.set, accessorConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj4.bar = 1); -assertEquals(5, val1); -assertEquals(5, obj4.bar); - -// Make sure an error is thrown when trying to access to redefined function. -try { - obj4.bar(); - assertTrue(false); -} catch (e) { - assertTrue(/is not a function/.test(e)); -} - - -// Test that all possible differences in step 6 in DefineOwnProperty are -// exercised, i.e., any difference in the given property descriptor and the -// existing properties should not return true, but throw an error if the -// existing configurable property is false. - -var obj5 = {}; -// Enumerable will default to false. -assertTrue(Reflect.defineProperty(obj5, 'foo', accessorNoConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj5, 'foo'); -// First, test that we are actually allowed to set the accessor if all -// values are of the descriptor are the same as the existing one. -assertTrue(Reflect.defineProperty(obj5, 'foo', accessorNoConfigurable)); - -// Different setter. -var descDifferent = { - configurable:false, - enumerable:false, - set: setter1, - get: getter2 -}; - -assertFalse(Reflect.defineProperty(obj5, 'foo', descDifferent)); - -// Different getter. -descDifferent = { - configurable:false, - enumerable:false, - set: setter2, - get: getter1 -}; - -assertFalse(Reflect.defineProperty(obj5, 'foo', descDifferent)); - -// Different enumerable. -descDifferent = { - configurable:false, - enumerable:true, - set: setter2, - get: getter2 -}; - -assertFalse(Reflect.defineProperty(obj5, 'foo', descDifferent)); - -// Different configurable. -descDifferent = { - configurable:false, - enumerable:true, - set: setter2, - get: getter2 -}; - -assertFalse(Reflect.defineProperty(obj5, 'foo', descDifferent)); - -// No difference. -descDifferent = { - configurable:false, - enumerable:false, - set: setter2, - get: getter2 -}; -// Make sure we can still redefine if all properties are the same. -assertTrue(Reflect.defineProperty(obj5, 'foo', descDifferent)); - -// Make sure that obj5 still holds the original values. -desc = Object.getOwnPropertyDescriptor(obj5, 'foo'); -assertEquals(desc.get, getter2); -assertEquals(desc.set, setter2); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - - -// Also exercise step 6 on data property, writable and enumerable -// defaults to false. -assertTrue(Reflect.defineProperty(obj5, 'bar', dataNoConfigurable)); - -// Test that redefinition with the same property descriptor is possible -assertTrue(Reflect.defineProperty(obj5, 'bar', dataNoConfigurable)); - -// Different value. -descDifferent = { - configurable:false, - enumerable:false, - writable: false, - value: 1999 -}; - -assertFalse(Reflect.defineProperty(obj5, 'bar', descDifferent)); - -// Different writable. -descDifferent = { - configurable:false, - enumerable:false, - writable: true, - value: 2000 -}; - -assertFalse(Reflect.defineProperty(obj5, 'bar', descDifferent)); - - -// Different enumerable. -descDifferent = { - configurable:false, - enumerable:true , - writable:false, - value: 2000 -}; - -assertFalse(Reflect.defineProperty(obj5, 'bar', descDifferent)); - - -// Different configurable. -descDifferent = { - configurable:true, - enumerable:false, - writable:false, - value: 2000 -}; - -assertFalse(Reflect.defineProperty(obj5, 'bar', descDifferent)); - -// No difference. -descDifferent = { - configurable:false, - enumerable:false, - writable:false, - value:2000 -}; -// Make sure we can still redefine if all properties are the same. -assertTrue(Reflect.defineProperty(obj5, 'bar', descDifferent)); - -// Make sure that obj5 still holds the original values. -desc = Object.getOwnPropertyDescriptor(obj5, 'bar'); -assertEquals(desc.value, 2000); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - - -// Make sure that we can't overwrite +0 with -0 and vice versa. -var descMinusZero = {value: -0, configurable: false}; -var descPlusZero = {value: +0, configurable: false}; - -assertTrue(Reflect.defineProperty(obj5, 'minuszero', descMinusZero)); - -// Make sure we can redefine with -0. -assertTrue(Reflect.defineProperty(obj5, 'minuszero', descMinusZero)); - -assertFalse(Reflect.defineProperty(obj5, 'minuszero', descPlusZero)); - - -assertTrue(Reflect.defineProperty(obj5, 'pluszero', descPlusZero)); - -// Make sure we can redefine with +0. -assertTrue(Reflect.defineProperty(obj5, 'pluszero', descPlusZero)); - -assertFalse(Reflect.defineProperty(obj5, 'pluszero', descMinusZero)); - - -var obj6 = {}; -obj6[1] = 'foo'; -obj6[2] = 'bar'; -obj6[3] = '42'; -obj6[4] = '43'; -obj6[5] = '44'; - -var descElement = { value: 'foobar' }; -var descElementNonConfigurable = { value: 'barfoo', configurable: false }; -var descElementNonWritable = { value: 'foofoo', writable: false }; -var descElementNonEnumerable = { value: 'barbar', enumerable: false }; -var descElementAllFalse = { value: 'foofalse', - configurable: false, - writable: false, - enumerable: false }; - - -// Redefine existing property. -assertTrue(Reflect.defineProperty(obj6, '1', descElement)); -desc = Object.getOwnPropertyDescriptor(obj6, '1'); -assertEquals(desc.value, 'foobar'); -assertTrue(desc.writable); -assertTrue(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -assertTrue(Reflect.defineProperty(obj6, '2', descElementNonConfigurable)); -desc = Object.getOwnPropertyDescriptor(obj6, '2'); -assertEquals(desc.value, 'barfoo'); -assertTrue(desc.writable); -assertTrue(desc.enumerable); -assertFalse(desc.configurable); - -// Can use defineProperty to change the value of a non -// configurable property. -try { - assertTrue(Reflect.defineProperty(obj6, '2', descElement)); - desc = Object.getOwnPropertyDescriptor(obj6, '2'); - assertEquals(desc.value, 'foobar'); -} catch (e) { - assertUnreachable(); -} - -// Ensure that we can't change the descriptor of a -// non configurable property. -var descAccessor = { get: function() { return 0; } }; -assertFalse(Reflect.defineProperty(obj6, '2', descAccessor)); - -assertTrue(Reflect.defineProperty(obj6, '2', descElementNonWritable)); -desc = Object.getOwnPropertyDescriptor(obj6, '2'); -assertEquals(desc.value, 'foofoo'); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertFalse(desc.configurable); - -assertTrue(Reflect.defineProperty(obj6, '3', descElementNonWritable)); -desc = Object.getOwnPropertyDescriptor(obj6, '3'); -assertEquals(desc.value, 'foofoo'); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -assertTrue(Reflect.defineProperty(obj6, '4', descElementNonEnumerable)); -desc = Object.getOwnPropertyDescriptor(obj6, '4'); -assertEquals(desc.value, 'barbar'); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -assertTrue(Reflect.defineProperty(obj6, '5', descElementAllFalse)); -desc = Object.getOwnPropertyDescriptor(obj6, '5'); -assertEquals(desc.value, 'foofalse'); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - -// Define non existing property - all attributes should default to false. -assertTrue(Reflect.defineProperty(obj6, '15', descElement)); -desc = Object.getOwnPropertyDescriptor(obj6, '15'); -assertEquals(desc.value, 'foobar'); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - -// Make sure that we can't redefine using direct access. -obj6[15] ='overwrite'; -assertEquals(obj6[15],'foobar'); - - -// Repeat the above tests on an array. -var arr = new Array(); -arr[1] = 'foo'; -arr[2] = 'bar'; -arr[3] = '42'; -arr[4] = '43'; -arr[5] = '44'; - -var descElement = { value: 'foobar' }; -var descElementNonConfigurable = { value: 'barfoo', configurable: false }; -var descElementNonWritable = { value: 'foofoo', writable: false }; -var descElementNonEnumerable = { value: 'barbar', enumerable: false }; -var descElementAllFalse = { value: 'foofalse', - configurable: false, - writable: false, - enumerable: false }; - - -// Redefine existing property. -assertTrue(Reflect.defineProperty(arr, '1', descElement)); -desc = Object.getOwnPropertyDescriptor(arr, '1'); -assertEquals(desc.value, 'foobar'); -assertTrue(desc.writable); -assertTrue(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -assertTrue(Reflect.defineProperty(arr, '2', descElementNonConfigurable)); -desc = Object.getOwnPropertyDescriptor(arr, '2'); -assertEquals(desc.value, 'barfoo'); -assertTrue(desc.writable); -assertTrue(desc.enumerable); -assertFalse(desc.configurable); - -// Can use defineProperty to change the value of a non -// configurable property of an array. -try { - assertTrue(Reflect.defineProperty(arr, '2', descElement)); - desc = Object.getOwnPropertyDescriptor(arr, '2'); - assertEquals(desc.value, 'foobar'); -} catch (e) { - assertUnreachable(); -} - -// Ensure that we can't change the descriptor of a -// non configurable property. -var descAccessor = { get: function() { return 0; } }; -assertFalse(Reflect.defineProperty(arr, '2', descAccessor)); - -assertTrue(Reflect.defineProperty(arr, '2', descElementNonWritable)); -desc = Object.getOwnPropertyDescriptor(arr, '2'); -assertEquals(desc.value, 'foofoo'); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertFalse(desc.configurable); - -assertTrue(Reflect.defineProperty(arr, '3', descElementNonWritable)); -desc = Object.getOwnPropertyDescriptor(arr, '3'); -assertEquals(desc.value, 'foofoo'); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -assertTrue(Reflect.defineProperty(arr, '4', descElementNonEnumerable)); -desc = Object.getOwnPropertyDescriptor(arr, '4'); -assertEquals(desc.value, 'barbar'); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -assertTrue(Reflect.defineProperty(arr, '5', descElementAllFalse)); -desc = Object.getOwnPropertyDescriptor(arr, '5'); -assertEquals(desc.value, 'foofalse'); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - -// Define non existing property - all attributes should default to false. -assertTrue(Reflect.defineProperty(arr, '15', descElement)); -desc = Object.getOwnPropertyDescriptor(arr, '15'); -assertEquals(desc.value, 'foobar'); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - -// Define non-array property, check that .length is unaffected. -assertEquals(16, arr.length); -assertTrue(Reflect.defineProperty(arr, '0x20', descElement)); -assertEquals(16, arr.length); - -// See issue 968: http://code.google.com/p/v8/issues/detail?id=968 -var o = { x : 42 }; -assertTrue(Reflect.defineProperty(o, "x", { writable: false })); -assertEquals(42, o.x); -o.x = 37; -assertEquals(42, o.x); - -o = { x : 42 }; -assertTrue(Reflect.defineProperty(o, "x", {})); -assertEquals(42, o.x); -o.x = 37; -// Writability is preserved. -assertEquals(37, o.x); - -var o = { }; -assertTrue(Reflect.defineProperty(o, "x", { writable: false })); -assertEquals(undefined, o.x); -o.x = 37; -assertEquals(undefined, o.x); - -o = { get x() { return 87; } }; -assertTrue(Reflect.defineProperty(o, "x", { writable: false })); -assertEquals(undefined, o.x); -o.x = 37; -assertEquals(undefined, o.x); - -// Ignore inherited properties. -o = { __proto__ : { x : 87 } }; -assertTrue(Reflect.defineProperty(o, "x", { writable: false })); -assertEquals(undefined, o.x); -o.x = 37; -assertEquals(undefined, o.x); - -function testDefineProperty(obj, propertyName, desc, resultDesc) { - assertTrue(Reflect.defineProperty(obj, propertyName, desc)); - var actualDesc = Object.getOwnPropertyDescriptor(obj, propertyName); - assertEquals(resultDesc.enumerable, actualDesc.enumerable); - assertEquals(resultDesc.configurable, actualDesc.configurable); - if (resultDesc.hasOwnProperty('value')) { - assertEquals(resultDesc.value, actualDesc.value); - assertEquals(resultDesc.writable, actualDesc.writable); - assertFalse(resultDesc.hasOwnProperty('get')); - assertFalse(resultDesc.hasOwnProperty('set')); - } else { - assertEquals(resultDesc.get, actualDesc.get); - assertEquals(resultDesc.set, actualDesc.set); - assertFalse(resultDesc.hasOwnProperty('value')); - assertFalse(resultDesc.hasOwnProperty('writable')); - } -} - -// tests redefining existing property with a generic descriptor -o = { p : 42 }; -testDefineProperty(o, 'p', - { }, - { value : 42, writable : true, enumerable : true, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : true }, - { value : 42, writable : true, enumerable : true, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { configurable : true }, - { value : 42, writable : true, enumerable : true, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : false }, - { value : 42, writable : true, enumerable : false, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { configurable : false }, - { value : 42, writable : true, enumerable : true, configurable : false }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : true, configurable : true }, - { value : 42, writable : true, enumerable : true, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : false, configurable : true }, - { value : 42, writable : true, enumerable : false, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : true, configurable : false }, - { value : 42, writable : true, enumerable : true, configurable : false }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : false, configurable : false }, - { value : 42, writable : true, enumerable : false, configurable : false }); - -// can make a writable, non-configurable field non-writable -o = { p : 42 }; -assertTrue(Reflect.defineProperty(o, 'p', { configurable: false })); -testDefineProperty(o, 'p', - { writable: false }, - { value : 42, writable : false, enumerable : true, configurable : false }); - -// redefine of get only property with generic descriptor -o = {}; -assertTrue(Reflect.defineProperty(o, 'p', - { get : getter1, enumerable: true, configurable: true })); -testDefineProperty(o, 'p', - { enumerable : false, configurable : false }, - { get: getter1, set: undefined, enumerable : false, configurable : false }); - -// redefine of get/set only property with generic descriptor -o = {}; -assertTrue(Reflect.defineProperty(o, 'p', - { get: getter1, set: setter1, enumerable: true, configurable: true })); -testDefineProperty(o, 'p', - { enumerable : false, configurable : false }, - { get: getter1, set: setter1, enumerable : false, configurable : false }); - -// redefine of set only property with generic descriptor -o = {}; -assertTrue(Reflect.defineProperty(o, 'p', - { set : setter1, enumerable: true, configurable: true })); -testDefineProperty(o, 'p', - { enumerable : false, configurable : false }, - { get: undefined, set: setter1, enumerable : false, configurable : false }); - - -// Regression test: Ensure that growing dictionaries are not ignored. -o = {}; -for (var i = 0; i < 1000; i++) { - // Non-enumerable property forces dictionary mode. - assertTrue(Reflect.defineProperty(o, i, {value: i, enumerable: false})); -} -assertEquals(999, o[999]); - - -// Regression test: Bizarre behavior on non-strict arguments object. -// TODO(yangguo): Tests disabled, needs investigation! -/* -(function test(arg0) { - // Here arguments[0] is a fast alias on arg0. - Reflect.defineProperty(arguments, "0", { - value:1, - enumerable:false - }); - // Here arguments[0] is a slow alias on arg0. - Reflect.defineProperty(arguments, "0", { - value:2, - writable:false - }); - // Here arguments[0] is no alias at all. - Reflect.defineProperty(arguments, "0", { - value:3 - }); - assertEquals(2, arg0); - assertEquals(3, arguments[0]); -})(0); -*/ - -// Regression test: We should never observe the hole value. -var objectWithGetter = {}; -objectWithGetter.__defineGetter__('foo', function() {}); -assertEquals(undefined, objectWithGetter.__lookupSetter__('foo')); - -var objectWithSetter = {}; -objectWithSetter.__defineSetter__('foo', function(x) {}); -assertEquals(undefined, objectWithSetter.__lookupGetter__('foo')); - -// An object with a getter on the prototype chain. -function getter() { return 111; } -function anotherGetter() { return 222; } - -function testGetterOnProto(expected, o) { - assertEquals(expected, o.quebec); -} - -obj1 = {}; -assertTrue( - Reflect.defineProperty(obj1, "quebec", { get: getter, configurable: true })); -obj2 = Object.create(obj1); -obj3 = Object.create(obj2); - -testGetterOnProto(111, obj3); -testGetterOnProto(111, obj3); -%OptimizeFunctionOnNextCall(testGetterOnProto); -testGetterOnProto(111, obj3); -testGetterOnProto(111, obj3); - -assertTrue(Reflect.defineProperty(obj1, "quebec", { get: anotherGetter })); - -testGetterOnProto(222, obj3); -testGetterOnProto(222, obj3); -%OptimizeFunctionOnNextCall(testGetterOnProto); -testGetterOnProto(222, obj3); -testGetterOnProto(222, obj3); - -// An object with a setter on the prototype chain. -var modifyMe; -function setter(x) { modifyMe = x+1; } -function anotherSetter(x) { modifyMe = x+2; } - -function testSetterOnProto(expected, o) { - modifyMe = 333; - o.romeo = 444; - assertEquals(expected, modifyMe); -} - -obj1 = {}; -assertTrue( - Reflect.defineProperty(obj1, "romeo", { set: setter, configurable: true })); -obj2 = Object.create(obj1); -obj3 = Object.create(obj2); - -testSetterOnProto(445, obj3); -testSetterOnProto(445, obj3); -%OptimizeFunctionOnNextCall(testSetterOnProto); -testSetterOnProto(445, obj3); -testSetterOnProto(445, obj3); - -assertTrue(Reflect.defineProperty(obj1, "romeo", { set: anotherSetter })); - -testSetterOnProto(446, obj3); -testSetterOnProto(446, obj3); -%OptimizeFunctionOnNextCall(testSetterOnProto); -testSetterOnProto(446, obj3); -testSetterOnProto(446, obj3); - -// Removing a setter on the prototype chain. -function testSetterOnProtoStrict(o) { - "use strict"; - o.sierra = 12345; -} - -obj1 = {}; -assertTrue(Reflect.defineProperty(obj1, "sierra", - { get: getter, set: setter, configurable: true })); -obj2 = Object.create(obj1); -obj3 = Object.create(obj2); - -testSetterOnProtoStrict(obj3); -testSetterOnProtoStrict(obj3); -%OptimizeFunctionOnNextCall(testSetterOnProtoStrict); -testSetterOnProtoStrict(obj3); -testSetterOnProtoStrict(obj3); - -assertTrue(Reflect.defineProperty(obj1, "sierra", - { get: getter, set: undefined, configurable: true })); - -exception = false; -try { - testSetterOnProtoStrict(obj3); -} catch (e) { - exception = true; - assertTrue(/which has only a getter/.test(e)); -} -assertTrue(exception); - -// Test assignment to a getter-only property on the prototype chain. This makes -// sure that crankshaft re-checks its assumptions and doesn't rely only on type -// feedback (which would be monomorphic here). - -function Assign(o) { - o.blubb = 123; -} - -function C() {} - -Assign(new C); -Assign(new C); -%OptimizeFunctionOnNextCall(Assign); -assertTrue( - Reflect.defineProperty(C.prototype, "blubb", {get: function() {return -42}})); -Assign(new C); - -// Test that changes to the prototype of a simple constructor are not ignored, -// even after creating initial instances. -function C() { - this.x = 23; -} -assertEquals(23, new C().x); -C.prototype.__defineSetter__('x', function(value) { this.y = 23; }); -assertEquals(void 0, new C().x); diff --git a/implementation-contributed/v8/mjsunit/es6/reflect-get-own-property-descriptor.js b/implementation-contributed/v8/mjsunit/es6/reflect-get-own-property-descriptor.js deleted file mode 100644 index 5e968995a18..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/reflect-get-own-property-descriptor.js +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This file only tests very simple descriptors that always have -// configurable, enumerable, and writable set to true. - -// This is adapted from mjsunit/get-own-property-descriptor.js. - -function get() { return x; } -function set(x) { this.x = x; } - -var obj = {x: 1}; -obj.__defineGetter__("accessor", get); -obj.__defineSetter__("accessor", set); -var a = new Array(); -a[1] = 42; -obj[1] = 42; - -var descIsData = Reflect.getOwnPropertyDescriptor(obj, 'x'); -assertTrue(descIsData.enumerable); -assertTrue(descIsData.writable); -assertTrue(descIsData.configurable); - -var descIsAccessor = Reflect.getOwnPropertyDescriptor(obj, 'accessor'); -assertTrue(descIsAccessor.enumerable); -assertTrue(descIsAccessor.configurable); -assertTrue(descIsAccessor.get == get); -assertTrue(descIsAccessor.set == set); - -var descIsNotData = Reflect.getOwnPropertyDescriptor(obj, 'not-x'); -assertTrue(descIsNotData == undefined); - -var descIsNotAccessor = Reflect.getOwnPropertyDescriptor(obj, 'not-accessor'); -assertTrue(descIsNotAccessor == undefined); - -var descArray = Reflect.getOwnPropertyDescriptor(a, '1'); -assertTrue(descArray.enumerable); -assertTrue(descArray.configurable); -assertTrue(descArray.writable); -assertEquals(descArray.value, 42); - -var descObjectElement = Reflect.getOwnPropertyDescriptor(obj, '1'); -assertTrue(descObjectElement.enumerable); -assertTrue(descObjectElement.configurable); -assertTrue(descObjectElement.writable); -assertEquals(descObjectElement.value, 42); - -// String objects. -var a = new String('foobar'); -for (var i = 0; i < a.length; i++) { - var descStringObject = Reflect.getOwnPropertyDescriptor(a, i); - assertTrue(descStringObject.enumerable); - assertFalse(descStringObject.configurable); - assertFalse(descStringObject.writable); - assertEquals(descStringObject.value, a.substring(i, i+1)); -} - -// Support for additional attributes on string objects. -a.x = 42; -a[10] = 'foo'; -var descStringProperty = Reflect.getOwnPropertyDescriptor(a, 'x'); -assertTrue(descStringProperty.enumerable); -assertTrue(descStringProperty.configurable); -assertTrue(descStringProperty.writable); -assertEquals(descStringProperty.value, 42); - -var descStringElement = Reflect.getOwnPropertyDescriptor(a, '10'); -assertTrue(descStringElement.enumerable); -assertTrue(descStringElement.configurable); -assertTrue(descStringElement.writable); -assertEquals(descStringElement.value, 'foo'); - -// Test that elements in the prototype chain is not returned. -var proto = {}; -proto[10] = 42; - -var objWithProto = new Array(); -objWithProto.prototype = proto; -objWithProto[0] = 'bar'; -var descWithProto = Reflect.getOwnPropertyDescriptor(objWithProto, '10'); -assertEquals(undefined, descWithProto); - -// Test elements on global proxy object. -var global = (function() { return this; })(); - -global[42] = 42; - -function el_getter() { return 239; }; -function el_setter() {}; -Object.defineProperty(global, '239', {get: el_getter, set: el_setter}); - -var descRegularElement = Reflect.getOwnPropertyDescriptor(global, '42'); -assertEquals(42, descRegularElement.value); - -var descAccessorElement = Reflect.getOwnPropertyDescriptor(global, '239'); -assertEquals(el_getter, descAccessorElement.get); -assertEquals(el_setter, descAccessorElement.set); diff --git a/implementation-contributed/v8/mjsunit/es6/reflect-get-prototype-of.js b/implementation-contributed/v8/mjsunit/es6/reflect-get-prototype-of.js deleted file mode 100644 index 9fd155939a6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/reflect-get-prototype-of.js +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2010-2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the Reflect.getPrototypeOf - ES6 26.1.8. -// This is adapted from mjsunit/get-prototype-of.js. - - - -function assertPrototypeOf(func, expected) { - assertEquals(expected, Reflect.getPrototypeOf(func)); -} - - -assertThrows(function() { - Reflect.getPrototypeOf(undefined); -}, TypeError); - - -assertThrows(function() { - Reflect.getPrototypeOf(null); -}, TypeError); - - -function F(){}; -var y = new F(); - -assertPrototypeOf(y, F.prototype); -assertPrototypeOf(F, Function.prototype); - -assertPrototypeOf({x: 5}, Object.prototype); -assertPrototypeOf({x: 5, __proto__: null}, null); - -assertPrototypeOf([1, 2], Array.prototype); - - -assertThrows(function () { - Reflect.getPrototypeOf(1); -}, TypeError); -assertThrows(function () { - Reflect.getPrototypeOf(true); -}, TypeError); -assertThrows(function () { - Reflect.getPrototypeOf(false); -}, TypeError); -assertThrows(function () { - Reflect.getPrototypeOf('str'); -}, TypeError); -assertThrows(function () { - Reflect.getPrototypeOf(Symbol()); -}, TypeError); - -assertPrototypeOf(Object(1), Number.prototype); -assertPrototypeOf(Object(true), Boolean.prototype); -assertPrototypeOf(Object(false), Boolean.prototype); -assertPrototypeOf(Object('str'), String.prototype); -assertPrototypeOf(Object(Symbol()), Symbol.prototype); - - -var errorFunctions = [ - EvalError, - RangeError, - ReferenceError, - SyntaxError, - TypeError, - URIError, -]; - -for (var f of errorFunctions) { - assertPrototypeOf(f, Error); - assertPrototypeOf(new f(), f.prototype); -} - - -// Builtin constructors. -var functions = [ - Array, - ArrayBuffer, - Boolean, - // DataView, - Date, - Error, - // Float32Array, prototype is %TypedArray% - // Float64Array, - Function, - // Int16Array, - // Int32Array, - // Int8Array, - Map, - Number, - Object, - // Promise, - RegExp, - Set, - String, - // Symbol, not constructible - // Uint16Array, - // Uint32Array, - // Uint8Array, - // Uint8ClampedArray, - WeakMap, - WeakSet, -]; - -for (var f of functions) { - assertPrototypeOf(f, Function.prototype); - assertPrototypeOf(new f(), f.prototype); -} - -var p = new Promise(function() {}); -assertPrototypeOf(p, Promise.prototype); - -var dv = new DataView(new ArrayBuffer()); -assertPrototypeOf(dv, DataView.prototype); diff --git a/implementation-contributed/v8/mjsunit/es6/reflect-own-keys.js b/implementation-contributed/v8/mjsunit/es6/reflect-own-keys.js deleted file mode 100644 index 5f51f4053fe..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/reflect-own-keys.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This is adapted from mjsunit/object-get-own-property-names.js. - - -// Check simple cases. -var obj = { a: 1, b: 2}; -var keys = Reflect.ownKeys(obj); -assertEquals(2, keys.length); -assertEquals("a", keys[0]); -assertEquals("b", keys[1]); - -var obj = { a: function(){}, b: function(){} }; -var keys = Reflect.ownKeys(obj); -assertEquals(2, keys.length); -assertEquals("a", keys[0]); -assertEquals("b", keys[1]); - -// Check slow case -var obj = { a: 1, b: 2, c: 3 }; -delete obj.b; -var keys = Reflect.ownKeys(obj) -assertEquals(2, keys.length); -assertEquals("a", keys[0]); -assertEquals("c", keys[1]); - -// Check that non-enumerable properties are being returned. -var keys = Reflect.ownKeys([1, 2]); -assertEquals(3, keys.length); -assertEquals("0", keys[0]); -assertEquals("1", keys[1]); -assertEquals("string", typeof keys[0]); -assertEquals("string", typeof keys[1]); -assertEquals("length", keys[2]); - -// Check that no proto properties are returned. -var obj = { foo: "foo" }; -obj.__proto__ = { bar: "bar" }; -keys = Reflect.ownKeys(obj); -assertEquals(1, keys.length); -assertEquals("foo", keys[0]); - -// Check that getter properties are returned. -var obj = {}; -obj.__defineGetter__("getter", function() {}); -keys = Reflect.ownKeys(obj); -assertEquals(1, keys.length); -assertEquals("getter", keys[0]); - -// Check that implementation does not access Array.prototype. -var savedConcat = Array.prototype.concat; -Array.prototype.concat = function() { return []; } -keys = Reflect.ownKeys({0: 'foo', bar: 'baz'}); -assertEquals(2, keys.length); -assertEquals('0', keys[0]); -assertEquals('bar', keys[1]); -assertSame(Array.prototype, keys.__proto__); -Array.prototype.concat = savedConcat; - -assertThrows(function() { Reflect.ownKeys(4) }, TypeError); -assertThrows(function() { Reflect.ownKeys("foo") }, TypeError); -assertThrows(function() { Reflect.ownKeys(true) }, TypeError); - -assertEquals(Reflect.ownKeys(Object(4)), []); -assertEquals(Reflect.ownKeys(Object("foo")), ["0", "1", "2", "length"]); -assertEquals(Reflect.ownKeys(Object(true)), []); diff --git a/implementation-contributed/v8/mjsunit/es6/reflect-prevent-extensions.js b/implementation-contributed/v8/mjsunit/es6/reflect-prevent-extensions.js deleted file mode 100644 index c6f37495d72..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/reflect-prevent-extensions.js +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright 2010-2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the Reflect.preventExtensions method - ES6 26.1.12. -// This is adapted from object-prevent-extensions.js. - -// Flags: --allow-natives-syntax - - -var obj1 = {}; -// Extensible defaults to true. -assertTrue(Object.isExtensible(obj1)); -assertTrue(Reflect.preventExtensions(obj1)); - -// Make sure the is_extensible flag is set. -assertFalse(Object.isExtensible(obj1)); -obj1.x = 42; -assertEquals(undefined, obj1.x); - -// Try adding a new element. -obj1[1] = 42; -assertEquals(undefined, obj1[1]); - - -// Try when the object has an existing property. -var obj2 = {}; -assertTrue(Object.isExtensible(obj2)); -obj2.x = 42; -assertEquals(42, obj2.x); -assertTrue(Object.isExtensible(obj2)); - -assertTrue(Reflect.preventExtensions(obj2)); -assertEquals(42, obj2.x); - -obj2.y = 42; -// obj2.y should still be undefined. -assertEquals(undefined, obj2.y); -// Make sure we can still write values to obj.x. -obj2.x = 43; -assertEquals(43, obj2.x) - -obj2.y = new function() { return 42; }; -// obj2.y should still be undefined. -assertEquals(undefined, obj2.y); -assertEquals(43, obj2.x) - -try { - Object.defineProperty(obj2, "y", {value: 42}); -} catch (e) { - assertTrue(/object is not extensible/.test(e)); -} - -// obj2.y should still be undefined. -assertEquals(undefined, obj2.y); -assertEquals(43, obj2.x); - -obj2[1] = 42; -assertEquals(undefined, obj2[1]); - -var arr = new Array(); -arr[1] = 10; - -assertTrue(Reflect.preventExtensions(arr)); - -arr[2] = 42; -assertEquals(10, arr[1]); - -// We should still be able to change existing elements. -arr[1]= 42; -assertEquals(42, arr[1]); - - -// Test the the extensible flag is not inherited. -var parent = {}; -parent.x = 42; -assertTrue(Reflect.preventExtensions(parent)); - -var child = Object.create(parent); - -// We should be able to add new properties to the child object. -child.y = 42; - -// This should have no influence on the parent class. -parent.y = 29; - - -// Test that attributes on functions are also handled correctly. -function foo() { - return 42; -} - -assertTrue(Reflect.preventExtensions(foo)); - -foo.x = 29; -assertEquals(undefined, foo.x); - -// when Object.isExtensible(o) === false -// assignment should return right hand side value -var o = {}; -assertTrue(Reflect.preventExtensions(o)); -var v = o.v = 50; -assertEquals(undefined, o.v); -assertEquals(50, v); - -// test same behavior as above, but for integer properties -var n = o[0] = 100; -assertEquals(undefined, o[0]); -assertEquals(100, n); - -// Fast properties should remain fast -obj = { x: 42, y: 'foo' }; -assertTrue(%HasFastProperties(obj)); -assertTrue(Reflect.preventExtensions(obj)); -assertFalse(Object.isExtensible(obj)); -assertFalse(Object.isSealed(obj)); -assertTrue(%HasFastProperties(obj)); - -// Non-extensible objects should share maps where possible -obj = { prop1: 1, prop2: 2 }; -obj2 = { prop1: 3, prop2: 4 }; -assertTrue(%HaveSameMap(obj, obj2)); -assertTrue(Reflect.preventExtensions(obj)); -assertTrue(Reflect.preventExtensions(obj2)); -assertFalse(Object.isExtensible(obj)); -assertFalse(Object.isExtensible(obj2)); -assertFalse(Object.isSealed(obj)); -assertFalse(Object.isSealed(obj2)); -assertTrue(%HaveSameMap(obj, obj2)); - -// Non-extensible objects should share maps even when they have elements -obj = { prop1: 1, prop2: 2, 75: 'foo' }; -obj2 = { prop1: 3, prop2: 4, 150: 'bar' }; -assertTrue(%HaveSameMap(obj, obj2)); -assertTrue(Reflect.preventExtensions(obj)); -assertTrue(Reflect.preventExtensions(obj2)); -assertFalse(Object.isExtensible(obj)); -assertFalse(Object.isExtensible(obj2)); -assertFalse(Object.isSealed(obj)); -assertFalse(Object.isSealed(obj2)); -assertTrue(%HaveSameMap(obj, obj2)); diff --git a/implementation-contributed/v8/mjsunit/es6/reflect-set-prototype-of.js b/implementation-contributed/v8/mjsunit/es6/reflect-set-prototype-of.js deleted file mode 100644 index 8f2a00a9c46..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/reflect-set-prototype-of.js +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright 2014-2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This is adapted from mjsunit/harmony/set-prototype-of.js. - - - -function getObjects() { - function func() {} - return [ - func, - new func(), - {x: 5}, - /regexp/, - ['array'], - // new Error(), - new Date(), - new Number(1), - new Boolean(true), - new String('str'), - Object(Symbol()) - ]; -} - - -var coercibleValues = [ - 1, - true, - 'string', - Symbol() -]; - - -var nonCoercibleValues = [ - undefined, - null -]; - - -var valuesWithoutNull = coercibleValues.concat(undefined); - - -function TestSetPrototypeOfCoercibleValues() { - for (var i = 0; i < coercibleValues.length; i++) { - var value = coercibleValues[i]; - var proto = Object.getPrototypeOf(value); - assertThrows(function() { Reflect.setPrototypeOf(value, {}) }, TypeError); - assertSame(proto, Object.getPrototypeOf(value)); - } -} -TestSetPrototypeOfCoercibleValues(); - - -function TestSetPrototypeOfNonCoercibleValues() { - for (var i = 0; i < nonCoercibleValues.length; i++) { - var value = nonCoercibleValues[i]; - assertThrows(function() { - Reflect.setPrototypeOf(value, {}); - }, TypeError); - } -} -TestSetPrototypeOfNonCoercibleValues(); - - -function TestSetPrototypeToNonObject(proto) { - var objects = getObjects(); - for (var i = 0; i < objects.length; i++) { - var object = objects[i]; - for (var j = 0; j < valuesWithoutNull.length; j++) { - var proto = valuesWithoutNull[j]; - assertThrows(function() { - Reflect.setPrototypeOf(object, proto); - }, TypeError); - } - } -} -TestSetPrototypeToNonObject(); - - -function TestSetPrototypeOf(object, proto) { - assertTrue(Reflect.setPrototypeOf(object, proto)); - assertEquals(Object.getPrototypeOf(object), proto); -} - - -function TestSetPrototypeOfForObjects() { - var objects1 = getObjects(); - var objects2 = getObjects(); - for (var i = 0; i < objects1.length; i++) { - for (var j = 0; j < objects2.length; j++) { - TestSetPrototypeOf(objects1[i], objects2[j]); - } - } -} -TestSetPrototypeOfForObjects(); - - -function TestSetPrototypeToNull() { - var objects = getObjects(); - for (var i = 0; i < objects.length; i++) { - TestSetPrototypeOf(objects[i], null); - } -} -TestSetPrototypeToNull(); - - -function TestSetPrototypeOfNonExtensibleObject() { - var objects = getObjects(); - var proto = {}; - for (var i = 0; i < objects.length; i++) { - var object = objects[i]; - Object.preventExtensions(object); - // Setting the current prototype must succeed. - assertTrue(Reflect.setPrototypeOf(object, Object.getPrototypeOf(object))); - // Setting any other must fail. - assertFalse(Reflect.setPrototypeOf(object, proto)); - } -} -TestSetPrototypeOfNonExtensibleObject(); - - -function TestSetPrototypeCyclic() { - var objects = [ - Object.prototype, {}, - Array.prototype, [], - Error.prototype, new TypeError, - // etc ... - ]; - for (var i = 0; i < objects.length; i += 2) { - var object = objects[i]; - var value = objects[i + 1]; - assertFalse(Reflect.setPrototypeOf(object, value)); - } -} -TestSetPrototypeCyclic(); - - -function TestLookup() { - var object = {}; - assertFalse('x' in object); - assertFalse('y' in object); - - var oldProto = { - x: 'old x', - y: 'old y' - }; - assertTrue(Reflect.setPrototypeOf(object, oldProto)); - assertEquals(object.x, 'old x'); - assertEquals(object.y, 'old y'); - - var newProto = { - x: 'new x' - }; - assertTrue(Reflect.setPrototypeOf(object, newProto)); - assertEquals(object.x, 'new x'); - assertFalse('y' in object); -} -TestLookup(); diff --git a/implementation-contributed/v8/mjsunit/es6/reflect.js b/implementation-contributed/v8/mjsunit/es6/reflect.js deleted file mode 100644 index cb8febb69eb..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/reflect.js +++ /dev/null @@ -1,591 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - - -//////////////////////////////////////////////////////////////////////////////// -// (Auxiliaries) - - -"use strict"; - -var global = this; - -var sym = Symbol("gaga"); - -var objects = [ - {}, - [], - function() {}, - function() { - return arguments; - }(), - function() { - 'use strict'; - return arguments; - }(), - Object(1), - Object(true), - Object('bla'), - new Date, - new RegExp, - new Set, - new Map, - new WeakMap, - new WeakSet, - new ArrayBuffer(10), - new Int32Array(5), - Object, - Function, - Date, - RegExp, - global -]; - -function prepare(target) { - target["bla"] = true; - target[4] = 42; - target[sym] = "foo"; - target["noconf"] = 43; - Object.defineProperty(target, "noconf", - { configurable: false }); - Object.defineProperty(target, "nowrite", - { writable: false, configurable: true, value: 44 }); - Object.defineProperty(target, "getter", - { get: function () {return this.bla}, configurable: true }); - Object.defineProperty(target, "setter", - { set: function (x) {this.gaga = x}, configurable: true }); - Object.defineProperty(target, "setter2", - { set: function (x) {}, configurable: true }); -} - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.get - - -(function testReflectGetArity() { - assertEquals(2, Reflect.get.length); -})(); - - -(function testReflectGetOnNonObject() { - assertThrows(function() { Reflect.get(); }, TypeError); - assertThrows(function() { Reflect.get(42, "bla"); }, TypeError); - assertThrows(function() { Reflect.get(null, "bla"); }, TypeError); -})(); - - -(function testReflectGetKeyConversion() { - var target = {bla: 42}; - var a = { [Symbol.toPrimitive]: function() { return "bla" } }; - var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; - assertEquals(42, Reflect.get(target, a)); - assertThrowsEquals(function() { Reflect.get(target, b); }, "gaga"); -})(); - - -(function testReflectGetOnObject() { - var receiver = {bla: false}; - for (let target of objects) { - prepare(target); - assertEquals(true, Reflect.get(target, "bla")); - assertEquals(true, Reflect.get(target, "bla", target)); - assertEquals(true, Reflect.get(target, "bla", receiver)); - assertEquals(42, Reflect.get(target, 4)); - assertEquals(42, Reflect.get(target, 4, target)); - assertEquals(42, Reflect.get(target, 4, receiver)); - assertEquals(42, Reflect.get(target, "4")); - assertEquals(42, Reflect.get(target, "4", target)); - assertEquals(42, Reflect.get(target, "4", receiver)); - assertEquals("foo", Reflect.get(target, sym)); - assertEquals("foo", Reflect.get(target, sym, target)); - assertEquals("foo", Reflect.get(target, sym, receiver)); - assertEquals(43, Reflect.get(target, "noconf")); - assertEquals(43, Reflect.get(target, "noconf", target)); - assertEquals(43, Reflect.get(target, "noconf", receiver)); - assertEquals(true, Reflect.get(target, "getter")); - assertEquals(true, Reflect.get(target, "getter", target)); - assertEquals(false, Reflect.get(target, "getter", receiver)); - assertEquals(undefined, Reflect.get(target, "setter")); - assertEquals(undefined, Reflect.get(target, "setter", target)); - assertEquals(undefined, Reflect.get(target, "setter", receiver)); - assertEquals(undefined, Reflect.get(target, "foo")); - assertEquals(undefined, Reflect.get(target, "foo", target)); - assertEquals(undefined, Reflect.get(target, "foo", receiver)); - assertEquals(undefined, Reflect.get(target, 666)); - assertEquals(undefined, Reflect.get(target, 666, target)); - assertEquals(undefined, Reflect.get(target, 666, receiver)); - - let proto = target.__proto__; - target.__proto__ = { get foo() {return this.bla} }; - assertEquals(true, Reflect.get(target, "foo")); - assertEquals(true, Reflect.get(target, "foo", target)); - assertEquals(false, Reflect.get(target, "foo", receiver)); - target.__proto__ = proto; - } -})(); - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.set - - -(function testReflectSetArity() { - assertEquals(3, Reflect.set.length); -})(); - - -(function testReflectSetOnNonObject() { - assertThrows(function() { Reflect.set(); }, TypeError); - assertThrows(function() { Reflect.set(42, "bla"); }, TypeError); - assertThrows(function() { Reflect.set(null, "bla"); }, TypeError); -})(); - - -(function testReflectSetKeyConversion() { - var target = {}; - var a = { [Symbol.toPrimitive]: function() { return "bla" } }; - var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; - assertTrue(Reflect.set(target, a, 42)); - assertEquals(42, target.bla); - assertThrowsEquals(function() { Reflect.set(target, b, 42); }, "gaga"); -})(); - - -(function testReflectSetOnObject() { - var receiver = {bla: false}; - var value = 34234; - for (let target of objects) { - prepare(target); - assertTrue(Reflect.set(target, "bla", value)); - assertEquals(value, target.bla); - - prepare(target); - assertTrue(Reflect.set(target, "bla", value, target)); - assertEquals(value, target.bla); - - prepare(target); - assertTrue(Reflect.set(target, "bla", value, receiver)); - assertEquals(true, target.bla); - assertEquals(value, receiver.bla); - receiver.bla = false; - - prepare(target); - assertTrue(Reflect.set(target, 4, value)); - assertEquals(value, target[4]); - - prepare(target); - assertTrue(Reflect.set(target, 4, value, target)); - assertEquals(value, target[4]); - - prepare(target); - assertTrue(Reflect.set(target, 4, value, receiver)); - assertEquals(42, target[4]); - assertEquals(value, receiver[4]); - delete receiver[4]; - - prepare(target); - assertTrue(Reflect.set(target, sym, value)); - assertEquals(value, target[sym]); - - prepare(target); - assertTrue(Reflect.set(target, sym, value, target)); - assertEquals(value, target[sym]); - - prepare(target); - assertTrue(Reflect.set(target, sym, value, receiver)); - assertEquals("foo", target[sym]); - assertEquals(value, receiver[sym]); - delete receiver[sym]; - - prepare(target); - assertTrue(Reflect.set(target, "noconf", value)); - assertEquals(value, target.noconf); - - prepare(target); - assertTrue(Reflect.set(target, "noconf", value, target)); - assertEquals(value, target.noconf); - - prepare(target); - assertTrue(Reflect.set(target, "noconf", value, receiver)); - assertEquals(43, target.noconf); - assertEquals(value, receiver.noconf); - delete receiver.noconf; - - assertTrue(Reflect.set(target, "setter", value)); - assertEquals(value, target.gaga) - delete target.gaga; - - assertTrue(Reflect.set(target, "setter", value, target)); - assertEquals(value, target.gaga) - delete target.gaga; - - assertTrue(Reflect.set(target, "setter", value, receiver)); - assertFalse("gaga" in target); - assertEquals(value, receiver.gaga); - delete receiver.gaga; - - assertFalse(Reflect.set(target, "nowrite", value)); - assertEquals(44, target.nowrite); - - assertFalse(Reflect.set(target, "nowrite", value, target)); - assertEquals(44, target.nowrite); - - assertFalse(Reflect.set(target, "nowrite", value, receiver)); - assertEquals(44, target.nowrite); - assertFalse("nowrite" in receiver); - - // Data vs Non-Writable - assertFalse(Reflect.set({}, "nowrite", value, target)); - - // Data vs Accessor - assertFalse(Reflect.set({}, "unknown", 0, {set unknown(x) {}})); - assertFalse(Reflect.set(target, "unknown", value, {set unknown(x) {}})); - assertFalse(Reflect.set(target, "bla", value, {set bla(x) {}})); - assertFalse(Reflect.set(target, "bla", value, {get bla() {}})); - - // Accessor vs Data - assertTrue(Reflect.set({set bla(x) {}}), "bla", value, target); - assertFalse(Reflect.set({get bla() {}}, "bla", value, target)); - - // Data vs Non-Object - assertFalse(Reflect.set({}, "bla", value, null)); - assertFalse(Reflect.set({bla: 42}, "bla", value, null)); - - // Accessor vs Non-Object - assertTrue(Reflect.set(target, "setter2", value, null)); - assertFalse(Reflect.set(target, "getter", value, null)); - - let receiver2 = {}; - Object.defineProperty(receiver2, "bla", - {configurable: false, writable: true, value: true}); - Object.defineProperty(receiver2, "not_in_target", - {configurable: false, writable: true, value: true}); - assertTrue(Reflect.set(target, "bla", value, receiver2)); - assertTrue(Reflect.set(target, "not_in_target", value, receiver2)); - } -})(); - - -(function testReflectSetArrayLength() { - var y = []; - Object.defineProperty(y, 0, {value: 42, configurable: false}); - assertFalse(Reflect.set(y, 'length', 0)); - assertTrue(Reflect.set(y, 'length', 2)); -})(); - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.has - - -(function testReflectHasArity() { - assertEquals(2, Reflect.has.length); -})(); - - -(function testReflectHasOnNonObject() { - assertThrows(function() { Reflect.has(); }, TypeError); - assertThrows(function() { Reflect.has(42, "bla"); }, TypeError); - assertThrows(function() { Reflect.has(null, "bla"); }, TypeError); -})(); - - -(function testReflectHasKeyConversion() { - var target = {bla: 42}; - var a = { [Symbol.toPrimitive]: function() { return "bla" } }; - var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; - assertTrue(Reflect.has(target, a)); - assertThrowsEquals(function() { Reflect.has(target, b); }, "gaga"); -})(); - - -(function testReflectHasOnObject() { - for (let target of objects) { - prepare(target); - assertTrue(Reflect.has(target, "bla")); - assertTrue(Reflect.has(target, 4)); - assertTrue(Reflect.has(target, "4")); - assertTrue(Reflect.has(target, sym)); - assertTrue(Reflect.has(target, "noconf")); - assertTrue(Reflect.has(target, "getter")); - assertTrue(Reflect.has(target, "setter")); - assertFalse(Reflect.has(target, "foo")); - assertFalse(Reflect.has(target, 666)); - - let proto = target.__proto__; - target.__proto__ = { get foo() {return this.bla} }; - assertEquals(true, Reflect.has(target, "foo")); - target.__proto__ = proto; - } -})(); - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.defineProperty - - -(function testReflectDefinePropertyArity() { - assertEquals(3, Reflect.defineProperty.length); -})(); - - -(function testReflectDefinePropertyOnNonObject() { - assertThrows(function() { Reflect.defineProperty(); }, TypeError); - assertThrows(function() { Reflect.defineProperty(42, "bla"); }, TypeError); - assertThrows(function() { Reflect.defineProperty(null, "bla"); }, TypeError); - assertThrows(function() { Reflect.defineProperty({}, "bla"); }, TypeError); - assertThrows(function() { Reflect.defineProperty({}, "bla", 42); }, - TypeError); - assertThrows(function() { Reflect.defineProperty({}, "bla", null); }, - TypeError); -})(); - - -(function testReflectDefinePropertyKeyConversion() { - var target = {}; - var a = { [Symbol.toPrimitive]: function() { return "bla" } }; - var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; - assertTrue(Reflect.defineProperty(target, a, {value: 42})); - assertEquals(target.bla, 42); - assertThrowsEquals(function() { Reflect.defineProperty(target, b); }, "gaga"); -})(); - - -(function testReflectDefinePropertyArrayLength() { - var y = []; - Object.defineProperty(y, 0, {value: 42, configurable: false}); - assertFalse(Reflect.defineProperty(y, 'length', {value: 0})); - assertTrue(Reflect.defineProperty(y, 'length', {value: 2})); -})(); - - -// See reflect-define-property.js for further tests. - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.deleteProperty - - -(function testReflectDeletePropertyArity() { - assertEquals(2, Reflect.deleteProperty.length); -})(); - - -(function testReflectDeletePropertyOnNonObject() { - assertThrows(function() { Reflect.deleteProperty(); }, TypeError); - assertThrows(function() { Reflect.deleteProperty(42, "bla"); }, TypeError); - assertThrows(function() { Reflect.deleteProperty(null, "bla"); }, TypeError); -})(); - - -(function testReflectDeletePropertyKeyConversion() { - var target = {bla: 42}; - var a = { [Symbol.toPrimitive]: function() { return "bla" } }; - var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; - assertTrue(Reflect.deleteProperty(target, a)); - assertThrowsEquals(function() { Reflect.deleteProperty(target, b); }, "gaga"); -})(); - - -(function testReflectDeletePropertyOnObject() { - for (let target of objects) { - prepare(target); - assertTrue(Reflect.deleteProperty(target, "bla")); - assertEquals(undefined, Object.getOwnPropertyDescriptor(target, "bla")); - if (target instanceof Int32Array) { - assertFalse(Reflect.deleteProperty(target, 4)); - } else { - assertTrue(Reflect.deleteProperty(target, 4)); - assertEquals(undefined, Object.getOwnPropertyDescriptor(target, 4)); - } - assertTrue(Reflect.deleteProperty(target, sym)); - assertEquals(undefined, Object.getOwnPropertyDescriptor(target, sym)); - assertFalse(Reflect.deleteProperty(target, "noconf")); - assertEquals(43, target.noconf); - assertTrue(Reflect.deleteProperty(target, "getter")); - assertTrue(Reflect.deleteProperty(target, "setter")); - assertTrue(Reflect.deleteProperty(target, "foo")); - assertTrue(Reflect.deleteProperty(target, 666)); - - let proto = target.__proto__; - target.__proto__ = { get foo() {return this.bla} }; - assertEquals(true, Reflect.deleteProperty(target, "foo")); - target.__proto__ = proto; - } -})(); - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.getPrototypeOf - - -(function testReflectGetPrototypeOfArity() { - assertEquals(1, Reflect.getPrototypeOf.length); -})(); - - -(function testReflectGetPrototypeOnNonObject() { - assertThrows(function() { Reflect.getPrototypeOf(); }, TypeError); - assertThrows(function() { Reflect.getPrototypeOf(42); }, TypeError); - assertThrows(function() { Reflect.getPrototypeOf(null); }, TypeError); -})(); - - -// See reflect-get-prototype-of.js for further tests. - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.setPrototypeOf - - -(function testReflectSetPrototypeOfArity() { - assertEquals(2, Reflect.setPrototypeOf.length); -})(); - - -(function testReflectSetPrototypeOfOnNonObject() { - assertThrows(function() { Reflect.setPrototypeOf(undefined, {}); }, - TypeError); - assertThrows(function() { Reflect.setPrototypeOf(42, {}); }, TypeError); - assertThrows(function() { Reflect.setPrototypeOf(null, {}); }, TypeError); - - assertThrows(function() { Reflect.setPrototypeOf({}, undefined); }, - TypeError); - assertThrows(function() { Reflect.setPrototypeOf({}, 42); }, TypeError); - assertTrue(Reflect.setPrototypeOf({}, null)); -})(); - - -// See reflect-set-prototype-of.js for further tests. - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.isExtensible - - -(function testReflectIsExtensibleArity() { - assertEquals(1, Reflect.isExtensible.length); -})(); - - -(function testReflectIsExtensibleOnNonObject() { - assertThrows(function() { Reflect.isExtensible(); }, TypeError); - assertThrows(function() { Reflect.isExtensible(42); }, TypeError); - assertThrows(function() { Reflect.isExtensible(null); }, TypeError); -})(); - - -(function testReflectIsExtensibleOnObject() { - // This should be the last test on [objects] as it modifies them irreversibly. - for (let target of objects) { - prepare(target); - if (target instanceof Int32Array) continue; // issue v8:4460 - assertTrue(Reflect.isExtensible(target)); - Object.preventExtensions(target); - assertFalse(Reflect.isExtensible(target)); - } -})(); - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.getOwnPropertyDescriptor - - -(function testReflectGetOwnPropertyDescriptorArity() { - assertEquals(2, Reflect.getOwnPropertyDescriptor.length); -})(); - - -(function testReflectGetOwnPropertyDescriptorOnNonObject() { - assertThrows(function() { Reflect.getOwnPropertyDescriptor(); }, TypeError); - assertThrows(function() { Reflect.getOwnPropertyDescriptor(42); }, - TypeError); - assertThrows(function() { Reflect.getOwnPropertyDescriptor(null); }, - TypeError); -})(); - - -(function testReflectGetOwnPropertyDescriptorKeyConversion() { - var target = {bla: 42}; - var a = { [Symbol.toPrimitive]: function() { return "bla" } }; - var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; - assertEquals(42, Reflect.getOwnPropertyDescriptor(target, a).value); - assertThrowsEquals(() => Reflect.getOwnPropertyDescriptor(target, b), "gaga"); -})(); - - -// See reflect-get-own-property-descriptor.js for further tests. - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.ownKeys - - -(function testReflectOwnKeysArity() { - assertEquals(1, Reflect.ownKeys.length); -})(); - - -(function testReflectOwnKeysOnNonObject() { - assertThrows(function() { Reflect.ownKeys(); }, TypeError); - assertThrows(function() { Reflect.ownKeys(42); }, TypeError); - assertThrows(function() { Reflect.ownKeys(null); }, TypeError); -})(); - - -(function testReflectOwnKeysOnObject(){ - assertEquals(["z", "y", "x"], Reflect.ownKeys({z: 3, y: 2, x: 1})); - assertEquals(["length"], Reflect.ownKeys([])); - - var s1 = Symbol("foo"); - var s2 = Symbol("bar"); - var obj = { [s1]: 0, "bla": 0, 42: 0, "0": 0, - [s2]: 0, "-1": 0, "88": 0, "aaa": 0 }; - assertEquals(["0", "42", "88", "bla", "-1", "aaa", s1, s2], - Reflect.ownKeys(obj)); - // Force dict-mode elements. - delete obj[0]; - assertEquals(["42", "88", "bla", "-1", "aaa", s1, s2], - Reflect.ownKeys(obj)); - // Force dict-mode properties. - delete obj["bla"]; - assertEquals(["42", "88", "-1", "aaa", s1, s2], Reflect.ownKeys(obj)); -})(); - - -// See reflect-own-keys.js for further tests. - - - -//////////////////////////////////////////////////////////////////////////////// -// Reflect.preventExtensions - - -(function testReflectPreventExtensionsArity() { - assertEquals(1, Reflect.preventExtensions.length); -})(); - - -(function testReflectPreventExtensionsOnNonObject() { - assertThrows(function() { Reflect.preventExtensions(); }, TypeError); - assertThrows(function() { Reflect.preventExtensions(42); }, TypeError); - assertThrows(function() { Reflect.preventExtensions(null); }, TypeError); -})(); - - -// See reflect-prevent-extensions.js for further tests. - -// TODO(neis): Need proxies to test the situation where -// [[preventExtensions]] returns false. diff --git a/implementation-contributed/v8/mjsunit/es6/regexp-constructor.js b/implementation-contributed/v8/mjsunit/es6/regexp-constructor.js deleted file mode 100644 index b685ff2991b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regexp-constructor.js +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -function should_not_be_called() { - throw new Error("should not be called"); -} - -(function() { - var r = new RegExp("biep"); - assertTrue(r === RegExp(r)); - assertFalse(r === new RegExp(r)); - r[Symbol.match] = false; - Object.defineProperty(r, "source", {get: should_not_be_called}); - Object.defineProperty(r, "flags", {get: should_not_be_called}); - assertFalse(r === RegExp(r)); -})(); - -(function() { - let allow = false; - class A extends RegExp { - get source() { - if (!allow) throw new Error("should not be called"); - return super.source; - } - get flags() { - if (!allow) throw new Error("should not be called"); - return super.flags - } - } - - var r = new A("biep"); - var r2 = RegExp(r); - - assertFalse(r === r2); - allow = true; - assertEquals(r, r2); - allow = false; - assertTrue(A.prototype === r.__proto__); - assertTrue(RegExp.prototype === r2.__proto__); - - var r3 = RegExp(r); - assertFalse(r3 === r); - allow = true; - assertEquals(r3, r); - allow = false; - - var r4 = new A(r2); - assertFalse(r4 === r2); - allow = true; - assertEquals(r4, r2); - allow = false; - assertTrue(A.prototype === r4.__proto__); - - r[Symbol.match] = false; - var r5 = new A(r); - assertFalse(r5 === r); - allow = true; - assertEquals(r5, r); - allow = false; - assertTrue(A.prototype === r5.__proto__); -})(); - -(function() { - var log = []; - var match = { - get source() { log.push("source"); return "biep"; }, - get flags() { log.push("flags"); return "i"; } - }; - Object.defineProperty(match, Symbol.match, - {get() { log.push("match"); return true; }}); - var r = RegExp(match); - assertEquals(["match", "source", "flags"], log); - assertFalse(r === match); - assertEquals(/biep/i, r); -})(); - -(function() { - var log = []; - var match = { - get source() { log.push("source"); return "biep"; }, - get flags() { log.push("flags"); return "i"; } - }; - Object.defineProperty(match, Symbol.match, - {get() { log.push("match"); return true; }}); - match.constructor = RegExp; - var r = RegExp(match); - assertEquals(["match"], log); - assertTrue(r === match); -})(); - -(function() { - var r = RegExp("biep", "i"); - r[Symbol.match] = false; - var r2 = RegExp(r, "g"); - assertFalse(r === r2); - assertEquals(/biep/i, r); - assertEquals(/biep/g, r2); -})(); - -(function() { - class A extends RegExp { - get ["constructor"]() { log.push("constructor"); return RegExp; } - } - var r = new A("biep"); - var log = []; - var r2 = RegExp(r); - assertEquals(["constructor"], log); - assertTrue(r === r2); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/regexp-flags.js b/implementation-contributed/v8/mjsunit/es6/regexp-flags.js deleted file mode 100644 index 9760cf8d5de..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regexp-flags.js +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var r1 = /abc/gi; -assertEquals("abc", r1.source); -assertTrue(r1.global); -assertTrue(r1.ignoreCase); -assertFalse(r1.multiline); -assertFalse(r1.sticky); -assertFalse(r1.unicode); - -// Internal slot of prototype is not read. -var r2 = { __proto__: r1 }; -assertThrows(function() { r2.source; }, TypeError); -assertThrows(function() { r2.global; }, TypeError); -assertThrows(function() { r2.ignoreCase; }, TypeError); -assertThrows(function() { r2.multiline; }, TypeError); -assertThrows(function() { r2.sticky; }, TypeError); -assertThrows(function() { r2.unicode; }, TypeError); - -var r3 = /I/; -var string = "iIiIi"; -var expected = "iXiIi"; -assertFalse(r3.global); -assertFalse(r3.ignoreCase); -assertEquals("", r3.flags); -assertEquals(expected, string.replace(r3, "X")); - -var get_count = 0; -Object.defineProperty(r3, "global", { - get: function() { get_count++; return true; } -}); -Object.defineProperty(r3, "ignoreCase", { - get: function() { get_count++; return true; } -}); - -assertTrue(r3.global); -assertEquals(1, get_count); -assertTrue(r3.ignoreCase); -assertEquals(2, get_count); -// Overridden flag getters affects the flags getter. -assertEquals("gi", r3.flags); -assertEquals(4, get_count); -// Overridden flag getters affect string.replace -// TODO(adamk): Add more tests here once we've switched -// to use [[OriginalFlags]] in more cases. -// TODO(jgruber): This exact case actually causes an infinite loop in the spec -// (@@replace sees global = true while BuiltinExec sees global = false). -// Comment the test for now and remove / fix once this has been resolved on -// the spec side. -//assertEquals(expected, string.replace(r3, "X")); -//assertEquals(5, get_count); - - -function testName(name) { - // Test for ES2017 RegExp web compatibility semantics - // https://github.com/tc39/ecma262/pull/511 - assertEquals(name === "source" ? "(?:)" : undefined, - RegExp.prototype[name]); - assertEquals( - "get " + name, - Object.getOwnPropertyDescriptor(RegExp.prototype, name).get.name); -} - -testName("global"); -testName("ignoreCase"); -testName("multiline"); -testName("source"); -testName("sticky"); -testName("unicode"); - - -RegExp.prototype.flags = 'setter should be undefined'; - -assertEquals('', RegExp('').flags); -assertEquals('', /./.flags); -assertEquals('gimuy', RegExp('', 'yugmi').flags); -assertEquals('gimuy', /foo/yumig.flags); - -var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags'); -assertTrue(descriptor.configurable); -assertFalse(descriptor.enumerable); -assertInstanceof(descriptor.get, Function); -assertEquals(undefined, descriptor.set); - -function testGenericFlags(object) { - return descriptor.get.call(object); -} - -assertEquals('', testGenericFlags({})); -assertEquals('i', testGenericFlags({ ignoreCase: true })); -assertEquals('uy', testGenericFlags({ global: 0, sticky: 1, unicode: 1 })); -assertEquals('m', testGenericFlags({ __proto__: { multiline: true } })); -assertThrows(function() { testGenericFlags(); }, TypeError); -assertThrows(function() { testGenericFlags(undefined); }, TypeError); -assertThrows(function() { testGenericFlags(null); }, TypeError); -assertThrows(function() { testGenericFlags(true); }, TypeError); -assertThrows(function() { testGenericFlags(false); }, TypeError); -assertThrows(function() { testGenericFlags(''); }, TypeError); -assertThrows(function() { testGenericFlags(42); }, TypeError); - -var counter = 0; -var map = {}; -var object = { - get global() { - map.g = counter++; - }, - get ignoreCase() { - map.i = counter++; - }, - get multiline() { - map.m = counter++; - }, - get unicode() { - map.u = counter++; - }, - get sticky() { - map.y = counter++; - } -}; -testGenericFlags(object); -assertEquals({ g: 0, i: 1, m: 2, u: 3, y: 4 }, map); diff --git a/implementation-contributed/v8/mjsunit/es6/regexp-match-lastindex.js b/implementation-contributed/v8/mjsunit/es6/regexp-match-lastindex.js deleted file mode 100644 index 71cf90df669..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regexp-match-lastindex.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Tests that lastIndex of a global RegExp is overwritten as per -// ECMA-262 6.0 21.2.5.6 step 8.c. - -var global = /./g; -global.lastIndex = { valueOf: function() { assertUnreachable(); } }; -"x".match(global); -assertEquals(0, global.lastIndex); diff --git a/implementation-contributed/v8/mjsunit/es6/regexp-prototype.js b/implementation-contributed/v8/mjsunit/es6/regexp-prototype.js deleted file mode 100644 index 673be4b97e8..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regexp-prototype.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// ES6 21.2.4.1 -var proto_desc = Object.getOwnPropertyDescriptor(RegExp, "prototype"); -assertFalse(proto_desc.writable); -assertFalse(proto_desc.enumerable); -assertFalse(proto_desc.configurable); - -// ES6 21.2.5.1 -var proto = proto_desc.value; -assertFalse(proto instanceof RegExp); -assertEquals(undefined, Object.getOwnPropertyDescriptor(proto, "valueOf")); -assertEquals(proto.valueOf, Object.prototype.valueOf); -var proto_constr = Object.getOwnPropertyDescriptor(proto, "constructor"); -assertEquals(RegExp, proto_constr.value); diff --git a/implementation-contributed/v8/mjsunit/es6/regexp-replace-lastindex.js b/implementation-contributed/v8/mjsunit/es6/regexp-replace-lastindex.js deleted file mode 100644 index 08217e63896..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regexp-replace-lastindex.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Tests that lastIndex of a global RegExp is overwritten as per -// ECMA-262 6.0 21.2.5.8 step 10.c. - -var global = /./g; -global.lastIndex = { valueOf: function() { assertUnreachable(); } }; -assertEquals("X", "x".replace(global, function(a) { return "X"; })); -assertEquals(0, global.lastIndex); diff --git a/implementation-contributed/v8/mjsunit/es6/regexp-sticky.js b/implementation-contributed/v8/mjsunit/es6/regexp-sticky.js deleted file mode 100644 index 46006fb4e0c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regexp-sticky.js +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var re = /foo.bar/; - -assertTrue(!!"foo*bar".match(re)); -assertTrue(!!"..foo*bar".match(re)); - -var plain = /foobar/; - -assertTrue(!!"foobar".match(plain)); -assertTrue(!!"..foobar".match(plain)); - -var sticky = /foo.bar/y; - -assertTrue(!!"foo*bar".match(sticky)); -assertEquals(7, sticky.lastIndex); -assertFalse(!!"..foo*bar".match(sticky)); - -var stickyplain = /foobar/y; - -assertTrue(!!"foobarfoobar".match(stickyplain)); -assertEquals(6, stickyplain.lastIndex); -assertTrue(!!"foobarfoobar".match(stickyplain)); -assertEquals(12, stickyplain.lastIndex); -assertFalse(!!"..foobarfoobar".match(stickyplain)); - -var global = /foo.bar/g; - -assertTrue(global.test("foo*bar")); -assertFalse(global.test("..foo*bar")); -global.lastIndex = 0; -assertTrue(global.test("..foo*bar")); - -var plainglobal = /foobar/g; - -assertTrue(plainglobal.test("foobar")); -assertFalse(plainglobal.test("foobar")); -plainglobal.lastIndex = 0; -assertTrue(plainglobal.test("foobar")); - -var stickyglobal = /foo.bar/gy; - -assertTrue(stickyglobal.test("foo*bar")); -assertEquals(7, stickyglobal.lastIndex); -assertFalse(stickyglobal.test("..foo*bar")); -stickyglobal.lastIndex = 0; -assertFalse(stickyglobal.test("..foo*bar")); -stickyglobal.lastIndex = 2; -assertTrue(stickyglobal.test("..foo*bar")); -assertEquals(9, stickyglobal.lastIndex); - -var stickyplainglobal = /foobar/yg; -assertTrue(stickyplainglobal.sticky); -stickyplainglobal.sticky = false; - -assertTrue(stickyplainglobal.test("foobar")); -assertEquals(6, stickyplainglobal.lastIndex); -assertFalse(stickyplainglobal.test("..foobar")); -stickyplainglobal.lastIndex = 0; -assertFalse(stickyplainglobal.test("..foobar")); -stickyplainglobal.lastIndex = 2; -assertTrue(stickyplainglobal.test("..foobar")); -assertEquals(8, stickyplainglobal.lastIndex); - -assertEquals("/foo.bar/gy", "" + stickyglobal); -assertEquals("/foo.bar/g", "" + global); - -assertTrue(stickyglobal.sticky); -stickyglobal.sticky = false; -assertTrue(stickyglobal.sticky); - -var stickyglobal2 = new RegExp("foo.bar", "gy"); -assertTrue(stickyglobal2.test("foo*bar")); -assertEquals(7, stickyglobal2.lastIndex); -assertFalse(stickyglobal2.test("..foo*bar")); -stickyglobal2.lastIndex = 0; -assertFalse(stickyglobal2.test("..foo*bar")); -stickyglobal2.lastIndex = 2; -assertTrue(stickyglobal2.test("..foo*bar")); -assertEquals(9, stickyglobal2.lastIndex); - -assertEquals("/foo.bar/gy", "" + stickyglobal2); - -assertTrue(stickyglobal2.sticky); -stickyglobal2.sticky = false; -assertTrue(stickyglobal2.sticky); - -sticky.lastIndex = -1; // Causes sticky regexp to fail fast -assertFalse(sticky.test("..foo.bar")); -assertEquals(0, sticky.lastIndex); - -sticky.lastIndex = -1; // Causes sticky regexp to fail fast -assertFalse(!!sticky.exec("..foo.bar")); -assertEquals(0, sticky.lastIndex); - -// ES6 draft says: Even when the y flag is used with a pattern, ^ always -// matches only at the beginning of Input, or (if Multiline is true) at the -// beginning of a line. -var hat = /^foo/y; -hat.lastIndex = 2; -assertFalse(hat.test("..foo")); - -var mhat = /^foo/my; -mhat.lastIndex = 2; -assertFalse(mhat.test("..foo")); -mhat.lastIndex = 2; -assertTrue(mhat.test(".\nfoo")); - -// Check that we don't apply incorrect optimization to sticky regexps that -// are anchored at end. -var stickyanchored = /bar$/y; -assertFalse(stickyanchored.test("foobar")); -stickyanchored.lastIndex = 3; -assertTrue(stickyanchored.test("foobar")); diff --git a/implementation-contributed/v8/mjsunit/es6/regexp-tolength.js b/implementation-contributed/v8/mjsunit/es6/regexp-tolength.js deleted file mode 100644 index f7cfe928af8..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regexp-tolength.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -let regexp = /x/g; - -regexp.lastIndex = -1; - -assertTrue(regexp.test("axb")); -assertEquals(2, regexp.lastIndex); - -regexp.lastIndex = -1; - -assertEquals("x", regexp.exec("axb")[0]); -assertEquals(2, regexp.lastIndex); diff --git a/implementation-contributed/v8/mjsunit/es6/regexp-tostring.js b/implementation-contributed/v8/mjsunit/es6/regexp-tostring.js deleted file mode 100644 index 23e137c7aa5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regexp-tostring.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var log = []; - -var fake = - { - get source() { - log.push("p"); - return { - toString: function() { - log.push("ps"); - return "pattern"; - } - }; - }, - get flags() { - log.push("f"); - return { - toString: function() { - log.push("fs"); - return "flags"; - } - }; - } - } - -function testThrows(x) { - try { - RegExp.prototype.toString.call(x); - } catch (e) { - assertTrue(/incompatible receiver/.test(e.message)); - return; - } - assertUnreachable(); -} - -testThrows(1); -testThrows(null); -Number.prototype.source = "a"; -Number.prototype.flags = "b"; -testThrows(1); - -assertEquals("/pattern/flags", RegExp.prototype.toString.call(fake)); -assertEquals(["p", "ps", "f", "fs"], log); - -// Monkey-patching is also possible on RegExp instances - -let weird = /foo/; -Object.defineProperty(weird, 'flags', {value: 'bar'}); -Object.defineProperty(weird, 'source', {value: 'baz'}); -assertEquals('/baz/bar', weird.toString()); - -assertEquals('/(?:)/', RegExp.prototype.toString()); -assertEquals('(?:)', RegExp.prototype.source); -assertEquals('', RegExp.prototype.flags); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2034.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2034.js deleted file mode 100644 index 5c738bf84d9..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2034.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var key = {}; -var map = new WeakMap; -Object.preventExtensions(key); - -// Try querying using frozen key. -assertFalse(map.has(key)); -assertSame(undefined, map.get(key)); - -// Try adding using frozen key. -map.set(key, 1); -assertTrue(map.has(key)); -assertSame(1, map.get(key)); - -// Try deleting using frozen key. -map.delete(key, 1); -assertFalse(map.has(key)); -assertSame(undefined, map.get(key)); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2156.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2156.js deleted file mode 100644 index fba2a298675..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2156.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var key1 = {}; -var key2 = {}; -var map = new WeakMap; - -// Adding hidden properties preserves map sharing. Putting the key into -// a WeakMap will cause the first hidden property to be added. -assertTrue(%HaveSameMap(key1, key2)); -map.set(key1, 1); -map.set(key2, 2); -assertTrue(%HaveSameMap(key1, key2)); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2186.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2186.js deleted file mode 100644 index c82242a10ec..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2186.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function heapify(i) { - return 2.0 * (i / 2); -} -heapify(1); - -var ONE = 1; -var ANOTHER_ONE = heapify(ONE); -assertSame(ONE, ANOTHER_ONE); -assertEquals("number", typeof ONE); -assertEquals("number", typeof ANOTHER_ONE); - -var set = new Set; -set.add(ONE); -assertTrue(set.has(ONE)); -assertTrue(set.has(ANOTHER_ONE)); - -var map = new Map; -map.set(ONE, 23); -assertSame(23, map.get(ONE)); -assertSame(23, map.get(ANOTHER_ONE)); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2219.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2219.js deleted file mode 100644 index 79f5bfbccc9..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2219.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -var p = new Proxy({}, {getOwnPropertyDescriptor: function() { gc() }}); -var o = Object.create(p); -assertSame(23, o.x = 23); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2225.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2225.js deleted file mode 100644 index cb5cd8c664f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2225.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var proxy_has_x = false; -var proxy = new Proxy({}, { - get(t, key, receiver) { - assertSame('x', key); - if (proxy_has_x) { return 19 } - return 8; - } -}); - -// Test __lookupGetter__/__lookupSetter__ with proxy. -assertSame(undefined, Object.prototype.__lookupGetter__.call(proxy, 'foo')); -assertSame(undefined, Object.prototype.__lookupSetter__.call(proxy, 'bar')); -assertSame(undefined, Object.prototype.__lookupGetter__.call(proxy, '123')); -assertSame(undefined, Object.prototype.__lookupSetter__.call(proxy, '456')); - -// Test __lookupGetter__/__lookupSetter__ with proxy in prototype chain. -var object = Object.create(proxy); -assertSame(undefined, Object.prototype.__lookupGetter__.call(object, 'foo')); -assertSame(undefined, Object.prototype.__lookupSetter__.call(object, 'bar')); -assertSame(undefined, Object.prototype.__lookupGetter__.call(object, '123')); -assertSame(undefined, Object.prototype.__lookupSetter__.call(object, '456')); - -// Test inline constructors with proxy as prototype. -function F() { this.x = 42 } -F.prototype = proxy; -var instance = new F(); - -proxy_has_x = false; -assertSame(42, instance.x); -delete instance.x; -assertSame(8, instance.x); - -proxy_has_x = true; -assertSame(19, instance.x); - -// Test inline constructors with proxy in prototype chain. -function G() { this.x = 42; } -G.prototype.__proto__ = proxy; -instance = new G(); - -proxy_has_x = false; -assertSame(42, instance.x); -delete instance.x; -assertSame(8, instance.x); - -proxy_has_x = true; -assertSame(19, instance.x); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2243.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2243.js deleted file mode 100644 index d5377cfd544..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2243.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertThrows("'use strict'; (function f() { f = 123; })()", TypeError); -assertThrows("(function f() { 'use strict'; f = 123; })()", TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2322.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2322.js deleted file mode 100644 index 6eca0463975..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2322.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict"; - -assertThrows("'use strict'; for (let x in x);", ReferenceError); - -let s; -for (let pppp in {}) {}; -assertThrows(function() { pppp = true }, ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2506.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2506.js deleted file mode 100644 index 5f88fcd1d48..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2506.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -// Top-level code -let s = 0; -let f = [undefined, undefined, undefined] -for (const x of [1,2,3]) { - s += x; - f[x-1] = function() { return x; } -} -assertEquals(6, s); -assertEquals(1, f[0]()); -assertEquals(2, f[1]()); -assertEquals(3, f[2]()); - -let x = 1; -s = 0; -for (const z of [x, x+1, x+2]) { - s += z; -} -assertEquals(6, s); - -s = 0; -var q = 1; -for (const x of [q, q+1, q+2]) { - s += x; -} -assertEquals(6, s); - -let z = 1; -s = 0; -for (const x = 1; z < 2; z++) { - s += x + z; -} -assertEquals(2, s); - - -s = ""; -for (const x in [1,2,3]) { - s += x; -} -assertEquals("012", s); - -assertThrows("'use strict'; for (const x in [1,2,3]) { x++ }", TypeError); - -// Function scope -(function() { - let s = 0; - for (const x of [1,2,3]) { - s += x; - } - assertEquals(6, s); - - let x = 1; - s = 0; - for (const q of [x, x+1, x+2]) { - s += q; - } - assertEquals(6, s); - - s = 0; - var q = 1; - for (const x of [q, q+1, q+2]) { - s += x; - } - assertEquals(6, s); - - s = ""; - for (const x in [1,2,3]) { - s += x; - } - assertEquals("012", s); -}()); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2681.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2681.js deleted file mode 100644 index 8d8e4adb38f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2681.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --noincremental-marking - -// Check that we are not flushing code for generators. - -function flush_all_code() { - // Each GC ages code, and currently 6 gcs will flush all code. - for (var i = 0; i < 10; i++) gc(); -} - -function* g() { - yield 1; - yield 2; -} - -var o = g(); -assertEquals({ value: 1, done: false }, o.next()); - -flush_all_code(); - -assertEquals({ value: 2, done: false }, o.next()); -assertEquals({ value: undefined, done: true }, o.next()); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2691.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2691.js deleted file mode 100644 index d7d0c4f1754..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2691.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that yield* on non-objects raises a TypeError. - -assertThrows('(function*() { yield* 10 })().next()', TypeError); -assertThrows('(function*() { yield* {} })().next()', TypeError); -assertThrows('(function*() { yield* undefined })().next()', TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2829.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2829.js deleted file mode 100644 index b48039cf0bc..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2829.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -(function test1() { - var wm1 = new WeakMap(); - wm1.set(Object.prototype, 23); - assertTrue(wm1.has(Object.prototype)); - Object.freeze(Object.prototype); - - var wm2 = new WeakMap(); - var o = {}; - wm2.set(o, 42); - assertEquals(42, wm2.get(o)); -})(); - -(function test2() { - var wm1 = new WeakMap(); - var o1 = {}; - wm1.set(o1, 23); - assertTrue(wm1.has(o1)); - Object.freeze(o1); - - var wm2 = new WeakMap(); - var o2 = Object.create(o1); - wm2.set(o2, 42); - assertEquals(42, wm2.get(o2)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-2858.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-2858.js deleted file mode 100644 index 3b54b17da0b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-2858.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -"use strict"; - -function f() { - var y = 1; - var q1; - var q; - var z = new Error(); - try { - throw z; - } catch (y) { - assertTrue(z === y); - q1 = function() { return y; } - var y = 15; - q = function() { return y; } - assertSame(15, y); - } - assertSame(1, y); - assertSame(15, q1()); - assertSame(15, q()); -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-3426.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-3426.js deleted file mode 100644 index fd4903b1f8d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-3426.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("(function() { 'use strict'; { let f; var f; } })", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-347906.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-347906.js deleted file mode 100644 index daa62f5df70..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-347906.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return Math.clz32(12.34); -} - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-3501.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-3501.js deleted file mode 100644 index 82920e0d0e6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-3501.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// See: http://code.google.com/p/v8/issues/detail?id=3501 - -"use strict"; -let lift = f => (x, k) => k (f (x)); -lift(isNaN); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-3683.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-3683.js deleted file mode 100644 index 2c186327194..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-3683.js +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -// Simplest case -var count = 0; -for (let x = 0; x < 10;) { - x++; - count++; - continue; -} -assertEquals(10, count); - -// Labeled -count = 0; -label: for (let x = 0; x < 10;) { - while (true) { - x++; - count++; - continue label; - } -} -assertEquals(10, count); - -// Simple and labeled -count = 0; -label: for (let x = 0; x < 10;) { - x++; - count++; - continue label; -} -assertEquals(10, count); - -// Shadowing loop variable in same scope as continue -count = 0; -for (let x = 0; x < 10;) { - x++; - count++; - { - let x = "hello"; - continue; - } -} -assertEquals(10, count); - -// Nested let-bound for loops, inner continue -count = 0; -for (let x = 0; x < 10;) { - x++; - for (let y = 0; y < 2;) { - y++; - count++; - continue; - } -} -assertEquals(20, count); - -// Nested let-bound for loops, outer continue -count = 0; -for (let x = 0; x < 10;) { - x++; - for (let y = 0; y < 2;) { - y++; - count++; - } - continue; -} -assertEquals(20, count); - -// Nested let-bound for loops, labeled continue -count = 0; -outer: for (let x = 0; x < 10;) { - x++; - for (let y = 0; y < 2;) { - y++; - count++; - if (y == 2) continue outer; - } -} -assertEquals(20, count); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-3741.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-3741.js deleted file mode 100644 index 0c5074a0f87..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-3741.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax -'use strict'; -function f24(deopt) { - let x = 1; - { - let x = 2; - { - let x = 3; - assertEquals(3, x); - } - deopt + 1; - assertEquals(2, x); - } - assertEquals(1, x); -} - - -for (var j = 0; j < 10; ++j) { - f24(12); -} -%OptimizeFunctionOnNextCall(f24); -f24({}); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-3902.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-3902.js deleted file mode 100644 index 768a4a1d075..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-3902.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function* g() {} -assertTrue(Object.getOwnPropertyDescriptor(g.__proto__, "constructor").configurable); -assertTrue(Object.getOwnPropertyDescriptor(g.prototype.__proto__, "constructor").configurable); - -function FakeGeneratorFunctionConstructor() {} -Object.defineProperty(g.__proto__, "constructor", {value: FakeGeneratorFunctionConstructor}); -assertSame(g.__proto__.constructor, FakeGeneratorFunctionConstructor); - -function FakeGeneratorObjectConstructor() {} -Object.defineProperty(g.prototype.__proto__, "constructor", {value: FakeGeneratorObjectConstructor}); -assertSame(g.prototype.__proto__.constructor, FakeGeneratorObjectConstructor); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-3938.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-3938.js deleted file mode 100644 index bd7d1befa13..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-3938.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -assertThrows(function() { for (const i = 0; ; i++) {} }, TypeError); -assertThrows("'use strict'; for (const i = 0; ; i++) {}", TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4056.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4056.js deleted file mode 100644 index f80aa9fe71a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4056.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function strictFunctionArrowEval(s) { - "use strict"; - return (()=>eval(s))(); -}; - -assertEquals(strictFunctionArrowEval("42"), 42) diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4097.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4097.js deleted file mode 100644 index 52f2e9f20da..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4097.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function StoreToSuper () { - "use strict"; - class A { - s() { - super.bla = 10; - } - }; - - let a = new A(); - (new A).s.call(a); - assertEquals(10, a.bla); - assertThrows(function() { (new A).s.call(undefined); }, TypeError); - assertThrows(function() { (new A).s.call(42); }, TypeError); - assertThrows(function() { (new A).s.call(null); }, TypeError); - assertThrows(function() { (new A).s.call("abc"); }, TypeError); -})(); - - -(function LoadFromSuper () { - "use strict"; - class A { - s() { - return super.bla; - } - }; - - let a = new A(); - assertSame(undefined, (new A).s.call(a)); - assertSame(undefined, (new A).s.call(undefined)); - assertSame(undefined, (new A).s.call(42)); - assertSame(undefined, (new A).s.call(null)); - assertSame(undefined, (new A).s.call("abc")); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-411237.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-411237.js deleted file mode 100644 index ece6481737b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-411237.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -try { - %OptimizeFunctionOnNextCall(print); -} catch(e) { } - -try { - function* f() { - } - %OptimizeFunctionOnNextCall(f); -} catch(e) { } diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4160.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4160.js deleted file mode 100644 index d5dd27022d8..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4160.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function(x) { - (function(x) { - var boom = (() => eval(x)); - assertEquals(23, boom()); - assertEquals(23, boom()); - %OptimizeFunctionOnNextCall(boom); - assertEquals(23, boom()); - assertEquals("23", x); - })("23"); - assertEquals("42", x); -})("42"); - -(function(x) { - (function(x) { - var boom = (() => (eval("var x = 66"), x)); - assertEquals(66, boom()); - assertEquals(66, boom()); - %OptimizeFunctionOnNextCall(boom); - assertEquals(66, boom()); - assertEquals("23", x); - })("23"); - assertEquals("42", x); -})("42"); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4211.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4211.js deleted file mode 100644 index e276bb4333b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4211.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("()=>{}()", SyntaxError); -assertThrows("x=>{}()", SyntaxError); -assertThrows("(...x)=>{}()", SyntaxError); -assertThrows("(x)=>{}()", SyntaxError); -assertThrows("(x,y)=>{}()", SyntaxError); -assertThrows("(x,y,...z)=>{}()", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4298.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4298.js deleted file mode 100644 index c4fe5191382..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4298.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var arr = [1, 2, ...[3]]; -assertEquals([1, 2, 3], arr); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4395-global-eval.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4395-global-eval.js deleted file mode 100644 index 72a0eced5f5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4395-global-eval.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -((x, y = eval('x')) => assertEquals(42, y))(42); -((x, {y = eval('x')}) => assertEquals(42, y))(42, {}); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4395.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4395.js deleted file mode 100644 index bdf84431492..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4395.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testExpressionTypes() { - "use strict"; - ((x, y = x) => assertEquals(42, y))(42); - - ((x, y = (x)) => assertEquals(42, y))(42); - ((x, y = `${x}`) => assertEquals("42", y))(42); - ((x, y = x = x + 1) => assertEquals(43, y))(42); - ((x, y = x()) => assertEquals(42, y))(() => 42); - ((x, y = new x()) => assertEquals(42, y.z))(function() { this.z = 42 }); - ((x, y = -x) => assertEquals(-42, y))(42); - ((x, y = ++x) => assertEquals(43, y))(42); - ((x, y = x === 42) => assertTrue(y))(42); - ((x, y = (x == 42 ? x : 0)) => assertEquals(42, y))(42); - - ((x, y = function() { return x }) => assertEquals(42, y()))(42); - ((x, y = () => x) => assertEquals(42, y()))(42); - - // Literals - ((x, y = {z: x}) => assertEquals(42, y.z))(42); - ((x, y = {[x]: x}) => assertEquals(42, y[42]))(42); - ((x, y = [x]) => assertEquals(42, y[0]))(42); - ((x, y = [...x]) => assertEquals(42, y[0]))([42]); - - ((x, y = class { - static [x]() { return x } - }) => assertEquals(42, y[42]()))(42); - ((x, y = (new class { - z() { return x } - })) => assertEquals(42, y.z()))(42); - - ((x, y = (new class Y { - static [x]() { return x } - z() { return Y[42]() } - })) => assertEquals(42, y.z()))(42); - - ((x, y = (new class { - constructor() { this.z = x } - })) => assertEquals(42, y.z))(42); - ((x, y = (new class Y { - constructor() { this.z = x } - })) => assertEquals(42, y.z))(42); - - ((x, y = (new class extends x { - })) => assertEquals(42, y.z()))(class { z() { return 42 } }); - - // Defaults inside destructuring - ((x, {y = x}) => assertEquals(42, y))(42, {}); - ((x, [y = x]) => assertEquals(42, y))(42, []); -})(); - - -(function testMultiScopeCapture() { - "use strict"; - var x = 1; - { - let y = 2; - ((x, y, a = x, b = y) => { - assertEquals(3, x); - assertEquals(3, a); - assertEquals(4, y); - assertEquals(4, b); - })(3, 4); - } -})(); - - -(function testSuper() { - "use strict"; - class A { - x() { return 42; } - } - - class B extends A { - y() { - ((q = super.x()) => assertEquals(42, q))(); - } - } - - new B().y(); - - class C { - constructor() { return { prop: 42 } } - } - - class D extends C{ - constructor() { - ((q = super()) => assertEquals(42, q.prop))(); - } - } - - new D(); -})(); - - -(function testScopeFlags() { - ((x, y = eval('x')) => assertEquals(42, y))(42); - ((x, {y = eval('x')}) => assertEquals(42, y))(42, {}); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4400.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4400.js deleted file mode 100644 index ab33148bb60..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4400.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function borked(a = [], b = {}, c) {} -borked(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4417.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4417.js deleted file mode 100644 index b98c5b9b777..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4417.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var arr = [1, 2, 3]; -assertEquals({arr: [1, 2, 3]}, {arr: [...arr]}); -assertEquals([[1, 2, 3]], [[...arr]]); - -assertEquals({arr: [6, 5, [1, 2, 3]]}, {arr: [6, 5, [...arr]]}); -assertEquals([8, 7, [6, 5, [1, 2, 3]]], [8, 7, [6, 5, [...arr]]]); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4466.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4466.js deleted file mode 100644 index 144eef11d66..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4466.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -class Parent { - parentMethod(x, y) { - assertEquals(42, x); - assertEquals('hello world', y); - } -} - -class Child extends Parent { - method(x) { - let outer = (y) => { - let inner = () => { - super.parentMethod(x, y); - }; - inner(); - }; - outer('hello world'); - } -} - -new Child().method(42); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4482.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4482.js deleted file mode 100644 index d813d213001..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4482.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals("function", (function f() { f = 42; return typeof f })()); -assertEquals("function", - (function* g() { g = 42; yield typeof g })().next().value); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4522.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4522.js deleted file mode 100644 index b71797c9436..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4522.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -class C { - foo() { - return 42; - } -} - -class D extends C { - foo() { - return (() => eval("super.foo()"))(); - } -} - -assertEquals(42, new D().foo()); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-455141.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-455141.js deleted file mode 100644 index 676adebe72b..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-455141.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --no-lazy -"use strict"; -class Base { -} -class Subclass extends Base { - constructor() { - this.prp1 = 3; - } -} -function __f_1(){ -} diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4585.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4585.js deleted file mode 100644 index 8ded6464c96..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4585.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(`for(const { method() {} } = this) {}`, SyntaxError); -assertThrows(`var { method() {} } = this;`, SyntaxError); -assertThrows(`for(const { *method() {} } = this) {}`, SyntaxError); -assertThrows(`var { *method() {} } = this;`, SyntaxError); -assertThrows(`for(var { get foo() {} } = this) {}`, SyntaxError); -assertThrows(`for(var { set foo() {} } = this) {}`, SyntaxError); - -// Still OK in other objects -for (var { name = "" + { toString() { return "test" } } } in { a: 1}) break; -assertEquals(name, "test"); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-474783.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-474783.js deleted file mode 100644 index e258dcb49f7..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-474783.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -"use strict"; -class Base { -} -class Subclass extends Base { - constructor(a,b,c) { - arguments[1]; - } -} -assertThrows(function() { Subclass(); }, TypeError); -assertThrows(function() { Subclass(1); }, TypeError); -assertThrows(function() { Subclass(1, 2); }, TypeError); -assertThrows(function() { Subclass(1, 2, 3); }, TypeError); -assertThrows(function() { Subclass(1, 2, 3, 4); }, TypeError); - -assertThrows(function() { Subclass.call(); }, TypeError); -assertThrows(function() { Subclass.call({}); }, TypeError); -assertThrows(function() { Subclass.call({}, 1); }, TypeError); -assertThrows(function() { Subclass.call({}, 1, 2); }, TypeError); -assertThrows(function() { Subclass.call({}, 1, 2, 3, 4); }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-4759.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-4759.js deleted file mode 100644 index 5f8ee6827ef..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-4759.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function iterable(done) { - return { - [Symbol.iterator]: function() { - return { - next: function() { - if (done) return { done: true }; - done = true; - return { value: 42, done: false }; - } - } - } - } -} - -var [...result] = iterable(true); -assertEquals([], result); - -var [...result] = iterable(false); -assertEquals([42], result); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-508074.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-508074.js deleted file mode 100644 index f4d1a44255a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-508074.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var f = (a, b, ...c) => { - print(a); - print(b); - print(c); - assertEquals(6, a); - assertEquals(5, b); - assertEquals([4, 3, 2, 1], c); -}; - -function g() { - f(6, 5, 4, 3, 2, 1); -}; - -g(); -g(); -g(); - -%OptimizeFunctionOnNextCall(g); -g(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-513474.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-513474.js deleted file mode 100644 index 98a052c5492..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-513474.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function(...a) { function f() { eval() } })(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-517455.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-517455.js deleted file mode 100644 index 9c1dfd758a3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-517455.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f({x = ""}) { eval(x) } -f({}) diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-5337.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-5337.js deleted file mode 100644 index 256b3cb554c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-5337.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testNestedSpreadsInPatterns() { - (function () { - var [...[...x]] = [42, 17]; - assertArrayEquals([42, 17], x); - })(); - (function () { - let [...[...x]] = [42, 17]; - assertArrayEquals([42, 17], x); - })(); - (function () { - const [...[...x]] = [42, 17]; - assertArrayEquals([42, 17], x); - })(); - (function () { - var x; [...[...x]] = [42, 17]; - assertArrayEquals([42, 17], x); - })(); - - function f1([...[...x]] = [42, 17]) { return x; } - assertArrayEquals([42, 17], f1()); - assertArrayEquals([1, 2, 3], f1([1, 2, 3])); - - var f2 = function ([...[...x]] = [42, 17]) { return x; } - assertArrayEquals([42, 17], f2()); - assertArrayEquals([1, 2, 3], f2([1, 2, 3])); - - // The following two were failing in debug mode, until v8:5337 was fixed. - var f3 = ([...[...x]] = [42, 17]) => { return x; }; - assertArrayEquals([42, 17], f3()); - assertArrayEquals([1, 2, 3], f3([1, 2, 3])); - - var f4 = ([...[...x]] = [42, 17]) => x; - assertArrayEquals([42, 17], f4()); - assertArrayEquals([1, 2, 3], f4([1, 2, 3])); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-5598.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-5598.js deleted file mode 100644 index b07894f0fa2..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-5598.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-escape --allow-natives-syntax - -function fn(a) { - var [b] = a; - return b; -} - -fn('a'); -fn('a'); -%OptimizeFunctionOnNextCall(fn); - -fn('a'); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-576662.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-576662.js deleted file mode 100644 index ad582d66335..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-576662.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://code.google.com/p/chromium/issues/detail?id=576662 (simplified) - -Realm.create(); -this.__proto__ = new Proxy({},{}); -assertThrows(() => Realm.eval(1, "Realm.global(0).bla = 1")); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-5929-1.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-5929-1.js deleted file mode 100644 index 5f361f3a782..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-5929-1.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var buf = new ArrayBuffer(0x10000); -var arr = new Uint8Array(buf).fill(55); -var tmp = {}; -tmp[Symbol.toPrimitive] = function () { - %ArrayBufferDetach(arr.buffer); - return 50; -} -arr.copyWithin(tmp); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-594084.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-594084.js deleted file mode 100644 index 2a427eb3d3d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-594084.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -(function() { - function CRASH(defaultParameter = - (function() { function functionDeclaration() { return 0; } }())) { - } -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-6098.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-6098.js deleted file mode 100644 index 993f254d0fa..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-6098.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const fn = (c) => { - let d = [1, 2], x = [3, 4], - e = null, - f = null; - 0 < c.getIn(['a']) ? [e, f] = d : [e, f] = x; - return [e, f]; -}; - -assertEquals([3, 4], fn({ getIn(x) { return false; } })); -assertEquals([1, 2], fn({ getIn(x) { return true; } })); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-6322.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-6322.js deleted file mode 100644 index 8ec49fb0c8f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-6322.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Crash with --verify-heap -(function*() { for (let { a = class b { } } of [{}]) { } })().next(); -(function() { for (let { a = class b { } } of [{}]) { } })(); -(function() { var a; for ({ a = class b { } } of [{}]) { } })(); - -(function() { for (let [a = class b { } ] = [[]]; ;) break; })(); -(function() { var a; for ([a = class b { } ] = [[]]; ;) break; })(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-650172.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-650172.js deleted file mode 100644 index d6b534424c3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-650172.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var iterator = [].entries().__proto__.__proto__[Symbol.iterator]; -print(1/iterator(-1E-300)); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-660925.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-660925.js deleted file mode 100644 index 12c370cb6ce..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-660925.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let array = new Array(0xFFFFFFFF); -let it = array.keys(); -assertEquals({ value: 0, done: false }, it.next()); - -it = array.entries(); -assertEquals({ value: [0, undefined], done: false }, it.next()); - -it = array[Symbol.iterator](); -assertEquals({ value: undefined, done: false }, it.next()); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-666622.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-666622.js deleted file mode 100644 index 56731ab28e3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-666622.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function iterateArray() { - var array = new Array(); - var it = array.entries(); - it.next(); -} - -function iterateTypedArray() { - var array = new Uint8Array(); - var it = array.entries(); - it.next(); -} - -function testArray() { - iterateArray(); - try { - } catch (e) { - } -} -testArray(); -testArray(); -%OptimizeFunctionOnNextCall(testArray); -testArray(); - -function testTypedArray() { - iterateTypedArray(); - try { - } catch (e) { - } -} -testTypedArray(); -testTypedArray(); -%OptimizeFunctionOnNextCall(testTypedArray); -testTypedArray(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-7706.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-7706.js deleted file mode 100644 index 7401a731d4e..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-7706.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function toString(o) { - %ToFastProperties(o.__proto__); - return Object.prototype.toString.call(o); -} - -class TestNumber extends Number {} -TestNumber.prototype[Symbol.toStringTag] = "TestNumber"; -assertEquals("[object TestNumber]", toString(new TestNumber), "Try #1"); -assertEquals("[object TestNumber]", toString(new TestNumber), "Try #2"); - -class TestBoolean extends Boolean {} -TestBoolean.prototype[Symbol.toStringTag] = "TestBoolean"; -assertEquals("[object TestBoolean]", toString(new TestBoolean), "Try #1"); -assertEquals("[object TestBoolean]", toString(new TestBoolean), "Try #2"); - -class TestString extends String {} -TestString.prototype[Symbol.toStringTag] = "TestString"; -assertEquals("[object TestString]", toString(new TestString), "Try #1"); -assertEquals("[object TestString]", toString(new TestString), "Try #2"); - -class base {} -class TestBigInt extends base {} -TestBigInt.prototype[Symbol.toStringTag] = 'TestBigInt'; -var b = new TestBigInt(); -b.__proto__.__proto__ = BigInt.prototype; -assertEquals("[object TestBigInt]", toString(b), "Try #1"); -assertEquals("[object TestBigInt]", toString(b), "Try #2"); - -class TestSymbol extends base {} -TestSymbol.prototype[Symbol.toStringTag] = 'TestSymbol'; -var sym = new TestSymbol(); -sym.__proto__.__proto__ = Symbol.prototype; -assertEquals("[object TestSymbol]", toString(sym), "Try #1"); -assertEquals("[object TestSymbol]", toString(sym), "Try #2"); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-777182.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-777182.js deleted file mode 100644 index 6d6eb55c822..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-777182.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -var __v_65159 = [1.3]; -__v_65159.length = 0; -new Int8Array(10).set(__v_65159); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-arrow-duplicate-params.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-arrow-duplicate-params.js deleted file mode 100644 index 725832a8c45..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-arrow-duplicate-params.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("(x, x, y) => 10;", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-cr372788.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-cr372788.js deleted file mode 100644 index c157a7e79ff..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-cr372788.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var x = 0; -var y = 0; - -var thenable = { then: function(f) { x++; f(); } }; - -for (var i = 0; i < 3; ++i) { - Promise.resolve(thenable).then(function() { x++; y++; }); -} -assertEquals(0, x); - -(function check() { - Promise.resolve().then(function() { - // Delay check until all handlers have run. - if (y < 3) check(); else assertEquals(6, x); - }).catch(function(e) { %AbortJS("FAILURE: " + e) }); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-cr493566.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-cr493566.js deleted file mode 100644 index 7fbbd7dc191..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-cr493566.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -var global = this; - -(function TestGlobalReceiver() { - class A { - s(value) { - super.bla = value; - } - } - var a = new A(); - a.s(9); - assertEquals(undefined, global.bla); - assertEquals(9, a.bla); - - a = new A(); - a.s.call(global, 10); - assertEquals(10, global.bla); - assertEquals(undefined, a.bla); -})(); - - -(function TestProxyProto() { - var calls = 0; - var handler = { - set(t, p, v, r) { - calls++; - return Reflect.set(t, p, v, r); - }, - getPropertyDescriptor(target, name) { - calls += 10; - return undefined; - } - }; - var target = {}; - var proxy = new Proxy(target, handler); - var object = { - __proto__: proxy, - setX(v) { - super.x = v; - }, - setSymbol(sym, v) { - super[sym] = v; - } - }; - - object.setX(1); - assertEquals(1, object.x); - assertEquals(1, Object.getOwnPropertyDescriptor(object, 'x').value); - assertEquals(1, calls); - - calls = 0; - object.setX.call(proxy, 2); - assertEquals(2, target.x); - assertEquals(1, Object.getOwnPropertyDescriptor(object, 'x').value); - assertEquals(1, calls); - - var sym = Symbol(); - calls = 0; - object.setSymbol.call(global, sym, 2); - assertEquals(2, Object.getOwnPropertyDescriptor(global, sym).value); - // We currently do not invoke proxy traps for symbols - assertEquals(1, calls); -}); - - -(function TestProxyReceiver() { - var object = { - setY(v) { - super.y = v; - } - }; - - var calls = 0; - var target = {target:1}; - var handler = { - getOwnPropertyDescriptor(t, name) { - calls++; - }, - defineProperty(t, name, desc) { - calls += 10; - t[name] = desc.value; - return true; - }, - set(target, name, value) { - assertUnreachable(); - } - }; - var proxy = new Proxy(target, handler); - - assertEquals(undefined, object.y); - object.setY(10); - assertEquals(10, object.y); - - // Change the receiver to the proxy, but the set is called on the global. - object.setY.call(proxy, 3); - assertEquals(3, target.y); - assertEquals(11, calls); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-cr512574.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-cr512574.js deleted file mode 100644 index 2bff76349c0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-cr512574.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f({}) { - for (var v in []); -}; diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-cr895860.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-cr895860.js deleted file mode 100644 index 1ecd1f7730c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-cr895860.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - var s = "f"; - - // 2^18 length, enough to ensure an array (of pointers) bigger than 500KB. - for (var i = 0; i < 18; i++) { - s += s; - } - - var ss = [...s]; -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-248025.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-248025.js deleted file mode 100644 index b7982cda744..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-248025.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Filler long enough to trigger lazy parsing. -var filler = "//" + new Array(1024).join('x'); - -// Test that the pre-parser does not crash when the expected contextual -// keyword as part if a 'for' statement is not and identifier. -try { - eval(filler + "\nfunction f() { for (x : y) { } }"); - throw "not reached"; -} catch (e) { - if (!(e instanceof SyntaxError)) throw e; -} diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-346141.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-346141.js deleted file mode 100644 index 2b9655e1744..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-346141.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = Symbol() -var o = {} -o[s] = 2 -o[""] = 3 -Object.getOwnPropertySymbols(o) diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-448730.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-448730.js deleted file mode 100644 index a3c70acf6d6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-448730.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar() {} -bar({ a: new Proxy({}, {}) }); -function foo(x) { x.a.b == ""; } -var x = {a: {b: "" }}; -foo(x); -foo(x); -%OptimizeFunctionOnNextCall(foo); -foo(x); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-461520.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-461520.js deleted file mode 100644 index d12ec53f9c5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-461520.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var fuse = 1; - -var handler = { - get: function() { return function() {} }, - has() { return true }, - getOwnPropertyDescriptor: function() { - if (fuse-- == 0) throw "please die"; - return {value: function() {}, configurable: true}; - } -}; - -var p = new Proxy({}, handler); -var o = Object.create(p); -with (o) { f() } diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-465671-null.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-465671-null.js deleted file mode 100644 index 28fc56605a7..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-465671-null.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This used to trigger a segfault because of NULL being accessed. -function f() { - var a = [10]; - try { - f(); - } catch(e) { - a.map((v) => v + 1); - } -} -f(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-465671.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-465671.js deleted file mode 100644 index 287df0d41ec..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-465671.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This used to trigger crash because of an unhandled stack overflow. -function f() { - var a = [10]; - try { - f(); - } catch(e) { - a.map(v => v + 1); - } -} -f(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-820596.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-820596.js deleted file mode 100644 index 6257e141586..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-820596.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --print-ast - -var x; -`Crashes if OOB read with --print-ast ${x}`; diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-837939.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-837939.js deleted file mode 100644 index 7afa6143278..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-crbug-837939.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Create a double elements array. -const iterable = [123.123]; -assertTrue(%HasDoubleElements(iterable)) - -iterable.length = 0; -assertTrue(%HasDoubleElements(iterable)) - -// Should not throw here. -let map = new Map(iterable); -assertEquals(0, map.size); -new WeakMap(iterable); // WeakMap does not have a size diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-inlined-new-target.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-inlined-new-target.js deleted file mode 100644 index 59932f6b4cc..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-inlined-new-target.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g() { return { val: new.target }; } -function f() { return (new g()).val; } - -assertEquals(g, f()); -assertEquals(g, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(g, f()); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-lookup-transition.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-lookup-transition.js deleted file mode 100644 index c6da9bd746a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-lookup-transition.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var proxy = new Proxy({}, { getOwnPropertyDescriptor:function() { - gc(); -}}); - -function f() { this.x = 23; } -f.prototype = proxy; -new f(); -new f(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-new-target-context.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-new-target-context.js deleted file mode 100644 index eadf6e3aec0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-new-target-context.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test access of the new.target value in functions that also allocate local -// function contexts of varying sizes, making sure the value is not clobbered. - -function makeFun(n) { - var source = "(function f" + n + "() { "; - for (var i = 0; i < n; ++i) source += "var v" + i + "; "; - source += "(function() { 0 "; - for (var i = 0; i < n; ++i) source += "+ v" + i + " "; - source += "})(); return { value: new.target }; })"; - return eval(source); -} - -// Exercise fast case. -var a = makeFun(4); -assertEquals(a, new a().value); -assertEquals(undefined, a().value); - -// Exercise slow case. -var b = makeFun(128); -assertEquals(b, new b().value); -assertEquals(undefined, b().value); diff --git a/implementation-contributed/v8/mjsunit/es6/rest-params-lazy-parsing.js b/implementation-contributed/v8/mjsunit/es6/rest-params-lazy-parsing.js deleted file mode 100644 index 271ddf3c4a6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/rest-params-lazy-parsing.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function variadic(co, ...values) { - var sum = 0; - while (values.length) { - sum += co * values.pop(); - } - return sum; -} - -var arrowVariadic = (co, ...values) => { - var sum = 0; - while (values.length) { - sum += co * values.pop(); - } - return sum; -} - -assertEquals(1, variadic.length); -assertEquals(1, arrowVariadic.length); - -assertEquals(90, variadic(2, 1, 2, 3, 4, 5, 6, 7, 8, 9)); -assertEquals(74, variadic(2, 1, 2, 3, 4, 5, 6, 7, 9)); -assertEquals(110, variadic(2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); - -assertEquals(90, arrowVariadic(2, 1, 2, 3, 4, 5, 6, 7, 8, 9)); -assertEquals(74, arrowVariadic(2, 1, 2, 3, 4, 5, 6, 7, 9)); -assertEquals(110, arrowVariadic(2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); diff --git a/implementation-contributed/v8/mjsunit/es6/rest-params.js b/implementation-contributed/v8/mjsunit/es6/rest-params.js deleted file mode 100644 index 2f122daffd5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/rest-params.js +++ /dev/null @@ -1,240 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testRestIndex() { - assertEquals(5, (function(...args) { return args.length; })(1,2,3,4,5)); - assertEquals(4, (function(a, ...args) { return args.length; })(1,2,3,4,5)); - assertEquals(3, (function(a, b, ...args) { return args.length; })(1,2,3,4,5)); - assertEquals(2, (function(a, b, c, ...args) { - return args.length; })(1,2,3,4,5)); - assertEquals(1, (function(a, b, c, d, ...args) { - return args.length; })(1,2,3,4,5)); - assertEquals(0, (function(a, b, c, d, e, ...args) { - return args.length; })(1,2,3,4,5)); -})(); - - -var strictTest = (function() { - "use strict"; - return function strictTest(a, b, ...c) { - assertEquals(Array, c.constructor); - assertTrue(Array.isArray(c)); - - var expectedLength = arguments.length >= 3 ? arguments.length - 2 : 0; - assertEquals(expectedLength, c.length); - - for (var i = 2, j = 0; i < arguments.length; ++i) { - assertEquals(c[j++], arguments[i]); - } - }; -})(); - - -function sloppyTest(a, b, ...c) { - assertEquals(Array, c.constructor); - assertTrue(Array.isArray(c)); - - var expectedLength = arguments.length >= 3 ? arguments.length - 2 : 0; - assertEquals(expectedLength, c.length); - - for (var i = 2, j = 0; i < arguments.length; ++i) { - assertEquals(c[j++], arguments[i]); - } -} - - -var O = { - strict: strictTest, - sloppy: sloppyTest -}; - -(function testStrictRestParamArity() { - assertEquals(2, strictTest.length); - assertEquals(2, O.strict.length); -})(); - - -(function testRestParamsStrictMode() { - strictTest(); - strictTest(1, 2); - strictTest(1, 2, 3, 4, 5, 6); - strictTest(1, 2, 3); - O.strict(); - O.strict(1, 2); - O.strict(1, 2, 3, 4, 5, 6); - O.strict(1, 2, 3); -})(); - - -(function testRestParamsStrictModeApply() { - strictTest.apply(null, []); - strictTest.apply(null, [1, 2]); - strictTest.apply(null, [1, 2, 3, 4, 5, 6]); - strictTest.apply(null, [1, 2, 3]); - O.strict.apply(O, []); - O.strict.apply(O, [1, 2]); - O.strict.apply(O, [1, 2, 3, 4, 5, 6]); - O.strict.apply(O, [1, 2, 3]); -})(); - - -(function testRestParamsStrictModeCall() { - strictTest.call(null); - strictTest.call(null, 1, 2); - strictTest.call(null, 1, 2, 3, 4, 5, 6); - strictTest.call(null, 1, 2, 3); - O.strict.call(O); - O.strict.call(O, 1, 2); - O.strict.call(O, 1, 2, 3, 4, 5, 6); - O.strict.call(O, 1, 2, 3); -})(); - - -(function testsloppyRestParamArity() { - assertEquals(2, sloppyTest.length); - assertEquals(2, O.sloppy.length); -})(); - - -(function testRestParamssloppyMode() { - sloppyTest(); - sloppyTest(1, 2); - sloppyTest(1, 2, 3, 4, 5, 6); - sloppyTest(1, 2, 3); - O.sloppy(); - O.sloppy(1, 2); - O.sloppy(1, 2, 3, 4, 5, 6); - O.sloppy(1, 2, 3); -})(); - - -(function testRestParamssloppyModeApply() { - sloppyTest.apply(null, []); - sloppyTest.apply(null, [1, 2]); - sloppyTest.apply(null, [1, 2, 3, 4, 5, 6]); - sloppyTest.apply(null, [1, 2, 3]); - O.sloppy.apply(O, []); - O.sloppy.apply(O, [1, 2]); - O.sloppy.apply(O, [1, 2, 3, 4, 5, 6]); - O.sloppy.apply(O, [1, 2, 3]); -})(); - - -(function testRestParamssloppyModeCall() { - sloppyTest.call(null); - sloppyTest.call(null, 1, 2); - sloppyTest.call(null, 1, 2, 3, 4, 5, 6); - sloppyTest.call(null, 1, 2, 3); - O.sloppy.call(O); - O.sloppy.call(O, 1, 2); - O.sloppy.call(O, 1, 2, 3, 4, 5, 6); - O.sloppy.call(O, 1, 2, 3); -})(); - - -(function testUnmappedArguments() { - // Strict/Unmapped arguments should always be used for functions with rest - // parameters - assertThrows(function(...rest) { return arguments.callee; }, TypeError); - // TODO(caitp): figure out why this doesn't throw sometimes, even though the - // getter always does =) - // assertThrows(function(...rest) { arguments.callee = 1; }, TypeError); -})(); - - -(function testNoAliasArgumentsStrict() { - ((function() { - "use strict"; - return (function strictF(a, ...rest) { - arguments[0] = 1; - assertEquals(3, a); - arguments[1] = 2; - assertArrayEquals([4, 5], rest); - }); - })())(3, 4, 5); -})(); - - -(function testNoAliasArgumentsSloppy() { - function sloppyF(a, ...rest) { - arguments[0] = 1; - assertEquals(3, a); - arguments[1] = 2; - assertArrayEquals([4, 5], rest); - } - sloppyF(3, 4, 5); -})(); - - -(function testRestParamsWithNewTarget() { - "use strict"; - class Base { - constructor(...a) { - this.base = a; - assertEquals(arguments.length, a.length); - var args = []; - for (var i = 0; i < arguments.length; ++i) { - args.push(arguments[i]); - } - assertEquals(args, a); - } - } - class Child extends Base { - constructor(...b) { - super(1, 2, 3); - this.child = b; - assertEquals(arguments.length, b.length); - var args = []; - for (var i = 0; i < arguments.length; ++i) { - args.push(arguments[i]); - } - assertEquals(args, b); - } - } - - var c = new Child(1, 2, 3); - assertEquals([1, 2, 3], c.child); - assertEquals([1, 2, 3], c.base); -})(); - -(function TestDirectiveThrows() { - "use strict"; - - assertThrows( - function(){ eval("function(...rest){'use strict';}") }, SyntaxError); - assertThrows(function(){ eval("(...rest) => {'use strict';}") }, SyntaxError); - assertThrows( - function(){ eval("(class{foo(...rest) {'use strict';}});") }, SyntaxError); - - assertThrows( - function(){ eval("function(a, ...rest){'use strict';}") }, SyntaxError); - assertThrows( - function(){ eval("(a, ...rest) => {'use strict';}") }, SyntaxError); - assertThrows( - function(){ eval("(class{foo(a, ...rest) {'use strict';}});") }, - SyntaxError); -})(); - -(function TestRestArrayPattern() { - function f(...[a, b, c]) { return a + b + c; } - assertEquals(6, f(1, 2, 3)); - assertEquals("123", f(1, "2", 3)); - assertEquals(NaN, f(1)); - - var f2 = (...[a, b, c]) => a + b + c; - assertEquals(6, f2(1, 2, 3)); - assertEquals("123", f2(1, "2", 3)); - assertEquals(NaN, f2(1)); -})(); - -(function TestRestObjectPattern() { - function f(...{length, 0: firstName, 1: lastName}) { - return `Hello ${lastName}, ${firstName}! Called with ${length} args!`; - } - assertEquals("Hello Ross, Bob! Called with 4 args!", f("Bob", "Ross", 0, 0)); - - var f2 = (...{length, 0: firstName, 1: lastName}) => - `Hello ${lastName}, ${firstName}! Called with ${length} args!`; - assertEquals("Hello Ross, Bob! Called with 4 args!", f2("Bob", "Ross", 0, 0)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-1.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-1.js deleted file mode 100644 index 2e4447de689..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-1.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var set = new Set([1,2,3]); - -assertEquals([1,2,3], [...set]); -assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); -assertEquals([1,2,3], [...set.keys()]); -assertEquals([1,2,3], [...set.values()]); -assertTrue(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); - -set[Symbol.iterator] = () => ({next: () => ({done: true})}); - -assertFalse(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); -assertEquals([], [...set]); -assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); -assertEquals([1,2,3], [...set.keys()]); -assertEquals([1,2,3], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-10.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-10.js deleted file mode 100644 index ec094d20d0d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-10.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -// This tests the interaction between the MapIterator protector and SetIterator -// protector. - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); - -var set = new Set([1,2,3]); -assertTrue(%SetIteratorProtector()); - -// This changes %IteratorPrototype%. No more tests should be run after this in -// the same instance. -var iterator = set.keys(); -// iterator object --> %SetIteratorPrototype% --> %IteratorPrototype% -iterator.__proto__.__proto__[Symbol.iterator] = - () => ({next: () => ({done: true})}); - -assertFalse(%MapIteratorProtector()); -assertEquals([[1,2], [2,3], [3,4]], [...map]); -assertEquals([], [...map.entries()]); -assertEquals([], [...map.keys()]); -assertEquals([], [...map.values()]); - -assertFalse(%SetIteratorProtector()); -assertEquals([], [...set.entries()]); -assertEquals([1,2,3], [...set]); -assertEquals([], [...set.keys()]); -assertEquals([], [...set.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-11.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-11.js deleted file mode 100644 index dff71c8d918..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-11.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var set = new Set([1,2,3]); - -var iterator = set.keys(); - -assertEquals([1,2,3], [...set.keys()]); -assertEquals([1,2,3], [...iterator]); -assertEquals([], [...iterator]); - -iterator = set.values(); -assertEquals([1,2,3], [...iterator]); -assertEquals([], [...iterator]); - -iterator = set.keys(); -iterator.next(); -assertEquals([2,3], [...iterator]); -assertEquals([], [...iterator]); - -iterator = set.values(); -var iterator2 = set.values(); - -set.delete(1); -assertEquals([2,3], [...iterator]); - -set.add(4); -assertEquals([2,3,4], [...iterator2]); - -iterator = set.keys(); -set.add(1); -assertEquals([2,3,4,1], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-2.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-2.js deleted file mode 100644 index b1fc6bbfea0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-2.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var set = new Set([1,2,3]); - -assertTrue(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); - -// This changes %SetPrototype%. No more tests should be run after this in the -// same instance. -set.__proto__[Symbol.iterator] = () => ({next: () => ({done: true})}); - -assertFalse(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); -assertEquals([], [...set]); -assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); -assertEquals([1,2,3], [...set.keys()]); -assertEquals([1,2,3], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-3.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-3.js deleted file mode 100644 index b727f3280ce..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-3.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var set = new Set([1,2,3]); - -assertTrue(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); - -// This changes %SetIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = set[Symbol.iterator](); -iterator.__proto__.next = () => ({done: true}); - -assertFalse(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); -assertEquals([], [...set]); -assertEquals([], [...set.entries()]); -assertEquals([], [...set.keys()]); -assertEquals([], [...set.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-4.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-4.js deleted file mode 100644 index 69a18893e8c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-4.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var set = new Set([1,2,3]); - -assertTrue(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); - -// This changes %SetIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = set.keys(); -iterator.__proto__.next = () => ({done: true}); - -assertFalse(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); -assertEquals([], [...set]); -assertEquals([], [...set.entries()]); -assertEquals([], [...set.keys()]); -assertEquals([], [...set.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-5.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-5.js deleted file mode 100644 index ec8a653b69f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-5.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var set = new Set([1,2,3]); - -assertTrue(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); - -// This changes %SetIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = set.values(); -iterator.__proto__.next = () => ({done: true}); - -assertFalse(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); -assertEquals([], [...set]); -assertEquals([], [...set.entries()]); -assertEquals([], [...set.keys()]); -assertEquals([], [...set.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-6.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-6.js deleted file mode 100644 index c5a2a7b09da..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-6.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var set = new Set([1,2,3]); - -assertTrue(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); - -var iterator = set.values(); -iterator.next = () => ({done: true}); - -assertFalse(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); -assertEquals([1,2,3], [...set]); -assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); -assertEquals([1,2,3], [...set.keys()]); -assertEquals([1,2,3], [...set.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-7.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-7.js deleted file mode 100644 index a244b1e47f7..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-7.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -var set = new Set([1,2,3]); - -assertTrue(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); - -// This changes %SetIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = set.entries(); -iterator.__proto__.next = () => ({done: true}); - -assertFalse(%SetIteratorProtector()); -assertTrue(%MapIteratorProtector()); -assertEquals([], [...set]); -assertEquals([], [...set.entries()]); -assertEquals([], [...set.keys()]); -assertEquals([], [...set.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-8.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-8.js deleted file mode 100644 index 2328a7b7377..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-8.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -// This tests the interaction between the MapIterator protector and SetIterator -// protector. - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); - -var set = new Set([1,2,3]); -assertTrue(%SetIteratorProtector()); - -// This changes %SetIteratorPrototype%. No more tests should be run after this -// in the same instance. -var iterator = set.keys(); -iterator.__proto__[Symbol.iterator] = () => ({next: () => ({done: true})}); - -assertFalse(%MapIteratorProtector()); -assertEquals([[1,2], [2,3], [3,4]], [...map]); -assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); -assertEquals([1,2,3], [...map.keys()]); -assertEquals([2,3,4], [...map.values()]); - -assertFalse(%SetIteratorProtector()); -assertEquals([], [...set.entries()]); -assertEquals([1,2,3], [...set]); -assertEquals([], [...set.keys()]); -assertEquals([], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-9.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-9.js deleted file mode 100644 index 42cbf3077aa..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-iterator-9.js +++ /dev/null @@ -1,31 +0,0 @@ - -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -// This tests the interaction between the MapIterator protector and SetIterator -// protector. - -var map = new Map([[1,2], [2,3], [3,4]]); -assertTrue(%MapIteratorProtector()); - -var set = new Set([1,2,3]); -assertTrue(%SetIteratorProtector()); - -var iterator = set.keys(); -iterator[Symbol.iterator] = () => ({next: () => ({done: true})}); - -assertFalse(%MapIteratorProtector()); -assertEquals([[1,2], [2,3], [3,4]], [...map]); -assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); -assertEquals([1,2,3], [...map.keys()]); -assertEquals([2,3,4], [...map.values()]); - -assertFalse(%SetIteratorProtector()); -assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); -assertEquals([1,2,3], [...set]); -assertEquals([1,2,3], [...set.keys()]); -assertEquals([1,2,3], [...set.values()]); -assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-minus-zero.js b/implementation-contributed/v8/mjsunit/es6/set-minus-zero.js deleted file mode 100644 index 792332c6487..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/set-minus-zero.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -var set = new Set(); - -var objectKey = {}; -var stringKey = 'keykeykey'; -var numberKey = 42.24; -var booleanKey = true; -var undefinedKey = undefined; -var nullKey = null; -var nanKey = NaN; -var zeroKey = 0; -var minusZeroKey = -0; - -assertEquals(set.size, 0); - -set.add(objectKey); -set.add(stringKey); -set.add(numberKey); -set.add(booleanKey); -set.add(undefinedKey); -set.add(nullKey); -set.add(nanKey); -set.add(zeroKey); - -assertEquals(8, set.size); - -assertTrue(set.has(objectKey)); -assertTrue(set.has(stringKey)); -assertTrue(set.has(numberKey)); -assertTrue(set.has(booleanKey)); -assertTrue(set.has(undefinedKey)); -assertTrue(set.has(nullKey)); -assertTrue(set.has(nanKey)); -assertTrue(set.has(zeroKey)); - -assertFalse(set.has({})); -assertTrue(set.has('keykeykey')); -assertTrue(set.has(42.24)); -assertTrue(set.has(true)); -assertTrue(set.has(undefined)); -assertTrue(set.has(null)); -assertTrue(set.has(NaN)); -assertTrue(set.has(0)); -assertTrue(set.has(-0)); -assertTrue(set.has(1 / Infinity)); -assertTrue(set.has(-1 / Infinity)); diff --git a/implementation-contributed/v8/mjsunit/es6/sloppy-no-duplicate-generators.js b/implementation-contributed/v8/mjsunit/es6/sloppy-no-duplicate-generators.js deleted file mode 100644 index a10f3f539f7..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/sloppy-no-duplicate-generators.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generators don't get sloppy-mode block-scoped function hoisting - -// No hoisting to the global scope - -{ - function* foo() {} - assertEquals('function', typeof foo); -} -assertEquals('undefined', typeof foo); - -// No hoisting within a function scope -(function() { - { function* bar() {} } - assertEquals('undefined', typeof bar); -})(); - -// Lexical shadowing allowed, no hoisting -(function() { - function* x() { yield 1; } - { function* x() { yield 2 } } - assertEquals(1, x().next().value); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/sloppy-restrictive-block-function.js b/implementation-contributed/v8/mjsunit/es6/sloppy-restrictive-block-function.js deleted file mode 100644 index 65734acd036..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/sloppy-restrictive-block-function.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// ES#sec-functiondeclarations-in-ifstatement-statement-clauses -// Annex B 3.4 FunctionDeclarations in IfStatement Statement Clauses -// In sloppy mode, function declarations in if statements act like -// they have a block around them. Prohibited in strict mode. -(function() { - if (false) function f() { }; - assertEquals(undefined, f); -})(); - -(function() { - assertEquals(undefined, f); - if (true) function f() { }; - assertEquals('function', typeof f); -})(); - -(function() { - assertEquals(undefined, f); - if (true) {} else function f() { }; - assertEquals(undefined, f); -})(); - -(function() { - assertEquals(undefined, f); - if (false) {} else function f() { }; - assertEquals('function', typeof f); -})(); - -// Labeled function declarations undergo the same hoisting/FiB semantics as if -// they were unalbeled. -(function() { - function bar() { - return f; - x: function f() {} - } - assertEquals('function', typeof bar()); -})(); - -(function() { - function bar() { - return f; - { - x: function f() {} - } - } - assertEquals(undefined, bar()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/species.js b/implementation-contributed/v8/mjsunit/es6/species.js deleted file mode 100644 index 39156a4a2ef..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/species.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test the ES2015 @@species feature - -'use strict'; - -let TypedArray = Uint8Array.__proto__; - -// The @@species property exists on the right objects and has the right values - -let classesWithSpecies = [RegExp, Array, TypedArray, ArrayBuffer, Map, Set, Promise]; -let classesWithoutSpecies = [Object, Function, String, Number, Symbol, WeakMap, WeakSet]; - -for (let constructor of classesWithSpecies) { - assertEquals(constructor, constructor[Symbol.species]); - assertThrows(function() { constructor[Symbol.species] = undefined }, TypeError); - let descriptor = Object.getOwnPropertyDescriptor(constructor, Symbol.species); - assertTrue(descriptor.configurable); - assertFalse(descriptor.enumerable); - assertEquals(undefined, descriptor.writable); - assertEquals(undefined, descriptor.set); - assertEquals('function', typeof descriptor.get); -} - -// @@species is defined with distinct getters -assertEquals(classesWithSpecies.length, - new Set(classesWithSpecies.map(constructor => - Object.getOwnPropertyDescriptor( - constructor, Symbol.species).get) - ).size); - -for (let constructor of classesWithoutSpecies) - assertEquals(undefined, constructor[Symbol.species]); diff --git a/implementation-contributed/v8/mjsunit/es6/spread-array-misc.js b/implementation-contributed/v8/mjsunit/es6/spread-array-misc.js deleted file mode 100644 index baed14629b6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-array-misc.js +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --allow-natives-syntax - -"use strict"; -{ - - -// We use g(a, b, c) instead of [a, b, c] when we care about Sminess being -// preserved. -function* g(...args) { for (const x of args) yield x; } -// G is like g but triggers GC to avoid allocation-site updates. -function* G(...args) { gc(); for (const x of args) { gc(); yield x; }; gc(); } - - -assertEquals([], [...[]]); -assertEquals([], [...[], ]); -assertEquals([1], [1, ...[]]); -assertEquals([1, 2], [1, ...[], 2]); -assertEquals([, ], [, ...[]]); -assertEquals([, ], [, ...[], ]); -assertEquals([, ], [, ...[],...[]]); -assertEquals([, ], [, ...[],...[], ]); -assertEquals([1, 2, 3], [...[1, 2, 3]]); -assertEquals([1, 1.5], [...g(1, 1.5)]); -assertEquals([, 1, 1.5], [, ...g(1, 1.5)]); -assertEquals([1, 2, 2.5, 3.5], [...g(1, 2, 2.5, 3.5)]); -assertEquals([2.5, 1, 3.5, 4], [...g(2.5, 1, 3.5, 4)]); -assertEquals([2.5, 3.5, 1, 4], [...g(2.5, 3.5, 1, 4)]); -assertEquals([{a: 1}, {b: 2}], [...[{a: 1}, {b: 2}]]); -assertEquals([0, {a: 1}, {b: 2}], [...g(0, {a: 1}, {b: 2})]); -assertEquals([1, 1.5, "2"], [...g(1, 1.5, "2")]); - - -function f1(x) { - return [...[x, x, x]]; -} -assertEquals([1, 1, 1], f1(1)); -assertEquals([0.1, 0.1, 0.1], f1(0.1)); -assertEquals([{}, {}, {}], f1({})); -assertEquals([1, 1, 1], f1(1)); - -function f1_(x) { - return [...[x, x, x]]; -} -assertEquals([1, 1, 1], f1_(1)); -%OptimizeFunctionOnNextCall(f1_); -assertEquals([1, 1, 1], f1_(1)); -assertEquals([0.1, 0.1, 0.1], f1_(0.1)); -assertEquals([{}, {}, {}], f1_({})); -assertEquals([1, 1, 1], f1_(1)); - - -function f2(x) { - return [...[x, x, x], ,]; -} -assertEquals([1, 1, 1, ,], f2(1)); -assertEquals([0.1, 0.1, 0.1, ,], f2(0.1)); -assertEquals([{}, {}, {}, ,], f2({})); -assertEquals([1, 1, 1, ,], f2(1)); - -function f2_(x) { - return [...[x, x, x], ,]; -} -assertEquals([1, 1, 1, ,], f2_(1)); -%OptimizeFunctionOnNextCall(f2_); -assertEquals([1, 1, 1, ,], f2_(1)); -assertEquals([0.1, 0.1, 0.1, ,], f2_(0.1)); -assertEquals([{}, {}, {}, ,], f2_({})); -assertEquals([1, 1, 1, ,], f2_(1)); - - -function f3(it) { - return [...it, ,]; -} -assertEquals([1, 0.1, "1", , ], f3(g(1, 0.1, "1"))); -assertEquals([{}, 0.1, "1", , ], f3(g({}, 0.1, "1"))); -assertEquals([0, 0, 0, , ], f3(g(0, 0, 0))); -assertEquals([1, 0.1, "1", , ], f3(g(1, 0.1, "1"))); - -function f3_(it) { - return [...it, ,]; -} -assertEquals([1, 0.1, "1", , ], f3_(g(1, 0.1, "1"))); -%OptimizeFunctionOnNextCall(f3_); -assertEquals([1, 0.1, "1", , ], f3_(g(1, 0.1, "1"))); -assertEquals([{}, 0.1, "1", , ], f3_(g({}, 0.1, "1"))); -assertEquals([0, 0, 0, , ], f3_(g(0, 0, 0))); -assertEquals([1, 0.1, "1", , ], f3_(g(1, 0.1, "1"))); - - -function f4(x) { - return [...[x, x, x]]; -} -assertEquals([1, 1, 1], f4(1)); -assertEquals([0.1, 0.1, 0.1], f4(0.1)); -assertEquals([{}, {}, {}], f4({})); -assertEquals([1, 1, 1], f4(1)); - -function f4_(x) { - return [...[x, x, x]]; -} -assertEquals([1, 1, 1], f4_(1)); -%OptimizeFunctionOnNextCall(f4_); -assertEquals([1, 1, 1], f4_(1)); -assertEquals([0.1, 0.1, 0.1], f4_(0.1)); -assertEquals([{}, {}, {}], f4_({})); -assertEquals([1, 1, 1], f4_(1)); - - -function f5(x) { - return [...[x, x, x], ,]; -} -assertEquals([1, 1, 1, ,], f5(1)); -assertEquals([0.1, 0.1, 0.1, ,], f5(0.1)); -assertEquals([{}, {}, {}, ,], f5({})); -assertEquals([1, 1, 1, ,], f5(1)); - -function f5_(x) { - return [...[x, x, x], ,]; -} -assertEquals([1, 1, 1, ,], f5_(1)); -%OptimizeFunctionOnNextCall(f5_); -assertEquals([1, 1, 1, ,], f5_(1)); -assertEquals([0.1, 0.1, 0.1, ,], f5_(0.1)); -assertEquals([{}, {}, {}, ,], f5_({})); -assertEquals([1, 1, 1, ,], f5_(1)); - - -function f6(it) { - return [...it, ,]; -} -assertEquals([1, 0.1, "1", , ], f6(g(1, 0.1, "1"))); -assertEquals([{}, 0.1, "1", , ], f6(g({}, 0.1, "1"))); -assertEquals([0, 0, 0, , ], f6(g(0, 0, 0))); -assertEquals([1, 0.1, "1", , ], f6(g(1, 0.1, "1"))); - -function f6_(it) { - return [...it, ,]; -} -assertEquals([1, 0.1, "1", , ], f6_(g(1, 0.1, "1"))); -%OptimizeFunctionOnNextCall(f6_); -assertEquals([1, 0.1, "1", , ], f6_(g(1, 0.1, "1"))); -assertEquals([{}, 0.1, "1", , ], f6_(g({}, 0.1, "1"))); -assertEquals([0, 0, 0, , ], f6_(g(0, 0, 0))); -assertEquals([1, 0.1, "1", , ], f6_(g(1, 0.1, "1"))); - - -function f7(it) { - return [...it]; -} -assertEquals([1, 0.1, "1"], f7(G(1, 0.1, "1"))); -assertEquals([{}, 0.1, "1"], f7(G({}, 0.1, "1"))); -assertEquals([0, 0, 0], f7(G(0, 0, 0))); -assertEquals([1, 0.1, "1"], f7(G(1, 0.1, "1"))); - -function f7_(it) { - return [...it]; -} -assertEquals([1, 0.1, "1"], f7_(G(1, 0.1, "1"))); -%OptimizeFunctionOnNextCall(f7_); -assertEquals([1, 0.1, "1"], f7_(G(1, 0.1, "1"))); -assertEquals([{}, 0.1, "1"], f7_(G({}, 0.1, "1"))); -assertEquals([0, 0, 0], f7_(G(0, 0, 0))); -assertEquals([1, 0.1, "1"], f7_(G(1, 0.1, "1"))); - - -function f8(it) { - return [...it, ,]; -} -assertEquals([1, 0.1, "1", , ], f8(G(1, 0.1, "1"))); -assertEquals([{}, 0.1, "1", , ], f8(G({}, 0.1, "1"))); -assertEquals([0, 0, 0, , ], f8(G(0, 0, 0))); -assertEquals([1, 0.1, "1", , ], f8(G(1, 0.1, "1"))); - -function f8_(it) { - return [...it, ,]; -} -assertEquals([1, 0.1, "1", , ], f8_(G(1, 0.1, "1"))); -%OptimizeFunctionOnNextCall(f8_); -assertEquals([1, 0.1, "1", , ], f8_(G(1, 0.1, "1"))); -assertEquals([{}, 0.1, "1", , ], f8_(G({}, 0.1, "1"))); -assertEquals([0, 0, 0, , ], f8_(G(0, 0, 0))); -assertEquals([1, 0.1, "1", , ], f8_(G(1, 0.1, "1"))); - - -// Megamorphic -function* f9() { - for (let i = 0; i < 160000; ++i) yield i; -} -let a = [...f9()]; -assertEquals(160000, a.length); -assertEquals(0, a[0]); -assertEquals(159999, a[159999]); -%OptimizeFunctionOnNextCall(f9); -a = [...f9()]; -assertEquals(160000, a.length); -assertEquals(0, a[0]); -assertEquals(159999, a[159999]); - -// Slow stub -function f10(b) { - let x = [ - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ...b]; - return x.length; -} -assertEquals(4335, f10([3.3, 3.3, 3.3])); -assertEquals(4335, f10([{}, "", 3.3])); -%OptimizeFunctionOnNextCall(f10); -assertEquals(4335, f10([{}, "", 3.3])); -assertEquals(4332, f10([])); - - -} // top-level scope diff --git a/implementation-contributed/v8/mjsunit/es6/spread-array-mutated-prototype.js b/implementation-contributed/v8/mjsunit/es6/spread-array-mutated-prototype.js deleted file mode 100644 index 5d29e7a8f06..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-array-mutated-prototype.js +++ /dev/null @@ -1,236 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// NOTE: -// Tests in this file are meant to run in the presence of an invalidated -// NoElementsProtector, as effected by the following line. -Array.prototype[0] = 42; -delete Array.prototype[0]; - - -(function TestBasics() { - var a = [1, 2]; - var b = [...a]; - assertArrayEquals([1, 2], b) - - assertArrayEquals(['a', 'b', 'c', 'd', 'e', 'f'], - ['a', ...'bc', 'd', ...'ef']) -})(); - - -var log = []; - -function* gen(n) { - log.push(n, 1); - yield 1; - log.push(n, 2); - yield 2; - log.push(n, 3); - yield 3; - log.push(n, 'done'); -} - -function id(v) { - log.push(v); - return v; -} - - -(function TestGenerator() { - assertArrayEquals([1, 2, 3], [...gen('a')]); - assertArrayEquals(['x', 1, 2, 3, 'y', 1, 2, 3, 'z'], - ['x', ...gen('a'), 'y', ...gen('b'), 'z']); -})(); - - -(function TestOrderOfExecution() { - log = []; - assertArrayEquals(['x', 1, 2, 3, 'y', 1, 2, 3, 'z'], - [id('x'), ...gen('a'), id('y'), ...gen('b'), id('z')]); - assertArrayEquals([ - 'x', 'a', 1, 'a', 2, 'a', 3, 'a', 'done', - 'y', 'b', 1, 'b', 2, 'b', 3, 'b', 'done', - 'z' - ], log); -})(); - - -(function TestNotIterable() { - var a; - assertThrows(function() { - a = [...42]; - }, TypeError); - assertSame(undefined, a); - - -})(); - - -(function TestInvalidIterator() { - var iter = { - [Symbol.iterator]: 42 - }; - var a; - assertThrows(function() { - a = [...iter]; - }, TypeError); - assertSame(undefined, a); -})(); - - -(function TestIteratorNotAnObject() { - var iter = { - [Symbol.iterator]() { - return 42; - } - }; - var a; - assertThrows(function() { - a = [...iter]; - }, TypeError); - assertSame(undefined, a); -})(); - - -(function TestIteratorNoNext() { - var iter = { - [Symbol.iterator]() { - return {}; - } - }; - var a; - assertThrows(function() { - a = [...iter]; - }, TypeError); - assertSame(undefined, a); -})(); - - -(function TestIteratorResultDoneThrows() { - function MyError() {} - var iter = { - [Symbol.iterator]() { - return { - next() { - return { - get done() { - throw new MyError(); - } - } - } - }; - } - }; - var a; - assertThrows(function() { - a = [...iter]; - }, MyError); - assertSame(undefined, a); -})(); - - -(function TestIteratorResultValueThrows() { - function MyError() {} - var iter = { - [Symbol.iterator]() { - return { - next() { - return { - done: false, - get value() { - throw new MyError(); - } - } - } - }; - } - }; - var a; - assertThrows(function() { - a = [...iter]; - }, MyError); - assertSame(undefined, a); -})(); - - -(function TestOptimize() { - function f() { - return [...'abc']; - } - assertArrayEquals(['a', 'b', 'c'], f()); - %OptimizeFunctionOnNextCall(f); - assertArrayEquals(['a', 'b', 'c'], f()); -})(); - - -(function TestDeoptimize() { - var iter = { - [Symbol.iterator]() { - var i = 0; - return { - next() { - %DeoptimizeFunction(f); - return {value: ++i, done: i === 3}; - } - }; - } - }; - function f() { - return [0, ...iter]; - } - - assertArrayEquals([0, 1, 2], f()); -})(); - - -(function TestPrototypeSetter1() { - Object.defineProperty(Array.prototype, 3, {set() {throw 666}}) - Object.defineProperty(Array.prototype, 4, {set() {throw 666}}) - - function f() { - return ['a', ...['b', 'c', 'd'], 'e'] - } - - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - %OptimizeFunctionOnNextCall(f); - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - - delete Array.prototype[3]; - delete Array.prototype[4]; -})(); - - -(function TestPrototypeSetter2() { - Object.defineProperty(Array.prototype.__proto__, 3, {set() {throw 666}}) - Object.defineProperty(Array.prototype.__proto__, 4, {set() {throw 666}}) - - function f() { - return ['a', ...['b', 'c', 'd'], 'e'] - } - - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - %OptimizeFunctionOnNextCall(f); - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - - delete Array.prototype.__proto__[3]; - delete Array.prototype.__proto__[4]; -})(); - - -(function TestPrototypeProxy() { - const backup = Array.prototype.__proto__; - Array.prototype.__proto__ = new Proxy({}, {set() {throw 666}}); - - function f() { - return ['a', ...['b', 'c', 'd'], 'e'] - } - - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - %OptimizeFunctionOnNextCall(f); - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - - Object.setPrototypeOf(Array.prototype, backup); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/spread-array-pristine-prototype.js b/implementation-contributed/v8/mjsunit/es6/spread-array-pristine-prototype.js deleted file mode 100644 index ea4d1337033..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-array-pristine-prototype.js +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// NOTE: -// Tests in this file are meant to run in the presence of a valid -// NoElementsProtector. Do not touch Array.prototype here. - -(function TestBasics() { - var a = [1, 2]; - var b = [...a]; - assertArrayEquals([1, 2], b) - - assertArrayEquals(['a', 'b', 'c', 'd', 'e', 'f'], - ['a', ...'bc', 'd', ...'ef']) -})(); - - -var log = []; - -function* gen(n) { - log.push(n, 1); - yield 1; - log.push(n, 2); - yield 2; - log.push(n, 3); - yield 3; - log.push(n, 'done'); -} - -function id(v) { - log.push(v); - return v; -} - - -(function TestGenerator() { - assertArrayEquals([1, 2, 3], [...gen('a')]); - assertArrayEquals(['x', 1, 2, 3, 'y', 1, 2, 3, 'z'], - ['x', ...gen('a'), 'y', ...gen('b'), 'z']); -})(); - - -(function TestOrderOfExecution() { - log = []; - assertArrayEquals(['x', 1, 2, 3, 'y', 1, 2, 3, 'z'], - [id('x'), ...gen('a'), id('y'), ...gen('b'), id('z')]); - assertArrayEquals([ - 'x', 'a', 1, 'a', 2, 'a', 3, 'a', 'done', - 'y', 'b', 1, 'b', 2, 'b', 3, 'b', 'done', - 'z' - ], log); -})(); - - -(function TestNotIterable() { - var a; - assertThrows(function() { - a = [...42]; - }, TypeError); - assertSame(undefined, a); - - -})(); - - -(function TestInvalidIterator() { - var iter = { - [Symbol.iterator]: 42 - }; - var a; - assertThrows(function() { - a = [...iter]; - }, TypeError); - assertSame(undefined, a); -})(); - - -(function TestIteratorNotAnObject() { - var iter = { - [Symbol.iterator]() { - return 42; - } - }; - var a; - assertThrows(function() { - a = [...iter]; - }, TypeError); - assertSame(undefined, a); -})(); - - -(function TestIteratorNoNext() { - var iter = { - [Symbol.iterator]() { - return {}; - } - }; - var a; - assertThrows(function() { - a = [...iter]; - }, TypeError); - assertSame(undefined, a); -})(); - - -(function TestIteratorResultDoneThrows() { - function MyError() {} - var iter = { - [Symbol.iterator]() { - return { - next() { - return { - get done() { - throw new MyError(); - } - } - } - }; - } - }; - var a; - assertThrows(function() { - a = [...iter]; - }, MyError); - assertSame(undefined, a); -})(); - - -(function TestIteratorResultValueThrows() { - function MyError() {} - var iter = { - [Symbol.iterator]() { - return { - next() { - return { - done: false, - get value() { - throw new MyError(); - } - } - } - }; - } - }; - var a; - assertThrows(function() { - a = [...iter]; - }, MyError); - assertSame(undefined, a); -})(); - - -(function TestOptimize() { - function f() { - return [...'abc']; - } - assertArrayEquals(['a', 'b', 'c'], f()); - %OptimizeFunctionOnNextCall(f); - assertArrayEquals(['a', 'b', 'c'], f()); -})(); - - -(function TestDeoptimize() { - var iter = { - [Symbol.iterator]() { - var i = 0; - return { - next() { - %DeoptimizeFunction(f); - return {value: ++i, done: i === 3}; - } - }; - } - }; - function f() { - return [0, ...iter]; - } - - assertArrayEquals([0, 1, 2], f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/spread-array-prototype-proxy.js b/implementation-contributed/v8/mjsunit/es6/spread-array-prototype-proxy.js deleted file mode 100644 index ed38228c28f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-array-prototype-proxy.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -(function TestPrototypeProxy() { - const backup = Array.prototype.__proto__; - Array.prototype.__proto__ = new Proxy({}, {set() {throw 666}}); - - function f() { - return ['a', ...['b', 'c', 'd'], 'e'] - } - - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - %OptimizeFunctionOnNextCall(f); - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - - Object.setPrototypeOf(Array.prototype, backup); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/spread-array-prototype-setter1.js b/implementation-contributed/v8/mjsunit/es6/spread-array-prototype-setter1.js deleted file mode 100644 index 2ca9e217879..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-array-prototype-setter1.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -(function TestPrototypeSetter1() { - Object.defineProperty(Array.prototype, 3, {set() {throw 666}}) - Object.defineProperty(Array.prototype, 4, {set() {throw 666}}) - - function f() { - return ['a', ...['b', 'c', 'd'], 'e'] - } - - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - %OptimizeFunctionOnNextCall(f); - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - - delete Array.prototype[3]; - delete Array.prototype[4]; -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/spread-array-prototype-setter2.js b/implementation-contributed/v8/mjsunit/es6/spread-array-prototype-setter2.js deleted file mode 100644 index 736d50b46b0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-array-prototype-setter2.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -(function TestPrototypeSetter2() { - Object.defineProperty(Array.prototype.__proto__, 3, {set() {throw 666}}) - Object.defineProperty(Array.prototype.__proto__, 4, {set() {throw 666}}) - - function f() { - return ['a', ...['b', 'c', 'd'], 'e'] - } - - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - %OptimizeFunctionOnNextCall(f); - assertArrayEquals(['a', 'b', 'c', 'd', 'e'], f()); - - delete Array.prototype.__proto__[3]; - delete Array.prototype.__proto__[4]; -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/spread-call-new-class.js b/implementation-contributed/v8/mjsunit/es6/spread-call-new-class.js deleted file mode 100644 index 9ec8660918c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-call-new-class.js +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function testConstructClassStrict() { - "use strict"; - class Base { - constructor(...args) { - this.baseArgs = args; - } - method() { return this.baseArgs; } - } - - class Child extends Base { - constructor(...args) { - super(...args); - this.childArgs = args; - } - } - - class Child2 extends Base { - constructor(...args) { - super("extra", ...args); - this.childArgs = args; - } - } - - var c = new Base(...[1, 2, 3]); - assertInstanceof(c, Base); - assertEquals([1, 2, 3], c.method()); - assertEquals([1, 2, 3], c.baseArgs); - - c = new Child(...[1, 2, 3]); - assertInstanceof(c, Child); - assertInstanceof(c, Base); - assertEquals([1, 2, 3], c.method()); - assertEquals([1, 2, 3], c.baseArgs); - assertEquals([1, 2, 3], c.childArgs); - - c = new Child2(...[1, 2, 3]); - assertInstanceof(c, Child2); - assertInstanceof(c, Base); - assertEquals(["extra", 1, 2, 3], c.method()); - assertEquals(["extra", 1, 2, 3], c.baseArgs); - assertEquals([1, 2, 3], c.childArgs); -})(); - - -(function testConstructSloppy() { - class Base { - constructor(...args) { - this.baseArgs = args; - } - method() { return this.baseArgs; } - } - - class Child extends Base { - constructor(...args) { - super(...args); - this.childArgs = args; - } - } - - class Child2 extends Base { - constructor(...args) { - super("extra", ...args); - this.childArgs = args; - } - } - - var c = new Base(...[1, 2, 3]); - assertInstanceof(c, Base); - assertEquals([1, 2, 3], c.method()); - assertEquals([1, 2, 3], c.baseArgs); - - c = new Child(...[1, 2, 3]); - assertInstanceof(c, Child); - assertInstanceof(c, Base); - assertEquals([1, 2, 3], c.method()); - assertEquals([1, 2, 3], c.baseArgs); - assertEquals([1, 2, 3], c.childArgs); - - c = new Child2(...[1, 2, 3]); - assertInstanceof(c, Child2); - assertInstanceof(c, Base); - assertEquals(["extra", 1, 2, 3], c.method()); - assertEquals(["extra", 1, 2, 3], c.baseArgs); - assertEquals([1, 2, 3], c.childArgs); -})(); - -(function testArgumentsObjectStrict() { - "use strict"; - class Base { - constructor(...args) { - this.baseArgs = args; - } - method() { return this.baseArgs; } - } - - class Child extends Base { - constructor() { - super(...arguments); - this.childArgs = arguments; - } - } - - class Child2 extends Base { - constructor() { - super("extra", ...arguments); - this.childArgs = arguments; - } - } - - var c = new Child(...[1, 2, 3]); - assertInstanceof(c, Child); - assertInstanceof(c, Base); - assertEquals([1, 2, 3], c.method()); - assertEquals([1, 2, 3], c.baseArgs); - assertFalse(Array.__proto__ === c.childArgs.__proto__); - assertEquals([1, 2, 3], Array.prototype.slice.call(c.childArgs)); - - c = new Child2(...[1, 2, 3]); - assertInstanceof(c, Child2); - assertInstanceof(c, Base); - assertEquals(["extra", 1, 2, 3], c.method()); - assertEquals(["extra", 1, 2, 3], c.baseArgs); - assertFalse(Array.__proto__ === c.childArgs.__proto__); - assertEquals([1, 2, 3], Array.prototype.slice.call(c.childArgs)); -})(); - -(function testArgumentsObjectSloppy() { - class Base { - constructor(...args) { - this.baseArgs = args; - } - method() { return this.baseArgs; } - } - - class Child extends Base { - constructor() { - super(...arguments); - this.childArgs = arguments; - } - } - - class Child2 extends Base { - constructor() { - super("extra", ...arguments); - this.childArgs = arguments; - } - } - - var c = new Child(...[1, 2, 3]); - assertInstanceof(c, Child); - assertInstanceof(c, Base); - assertEquals([1, 2, 3], c.method()); - assertEquals([1, 2, 3], c.baseArgs); - assertFalse(Array.__proto__ === c.childArgs.__proto__); - assertEquals([1, 2, 3], Array.prototype.slice.call(c.childArgs)); - - c = new Child2(...[1, 2, 3]); - assertInstanceof(c, Child2); - assertInstanceof(c, Base); - assertEquals(["extra", 1, 2, 3], c.method()); - assertEquals(["extra", 1, 2, 3], c.baseArgs); - assertFalse(Array.__proto__ === c.childArgs.__proto__); - assertEquals([1, 2, 3], Array.prototype.slice.call(c.childArgs)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/spread-call-new.js b/implementation-contributed/v8/mjsunit/es6/spread-call-new.js deleted file mode 100644 index bb14dbdabb6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-call-new.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testNonConstructorStrict() { - "use strict"; - assertThrows(function() { - return new Math.cos(...[1,2,3]); - }, TypeError); - - assertThrows(function() { - var CallNull = null; - return new CallNull(...[1,2,3]); - }, TypeError); -})(); - - -(function testNonConstructorSloppy() { - assertThrows(function() { - return new Math.cos(...[1,2,3]); - }, TypeError); - - assertThrows(function() { - var CallNull = null; - return new CallNull(...[1,2,3]); - }, TypeError); -})(); - - -(function testConstructStrict() { - "use strict"; - function TestClass(a, b, c) { - this.wasCalled = true; - this.args = [a, b, c]; - } - TestClass.prototype.method = function() { - return this.args; - } - - assertInstanceof(new TestClass(...[1, 2, 3]), TestClass); - assertEquals([1, 2, 3], (new TestClass(...[1, 2, 3])).method()); - assertEquals([1, 2, 3], (new TestClass(...[1, 2, 3])).args); - assertTrue((new TestClass(...[1, 2, 3])).wasCalled); -})(); - - -(function testConstructSloppy() { - function TestClass(a, b, c) { - this.wasCalled = true; - this.args = [a, b, c]; - } - TestClass.prototype.method = function() { - return this.args; - } - - assertInstanceof(new TestClass(...[1, 2, 3]), TestClass); - assertEquals([1, 2, 3], (new TestClass(...[1, 2, 3])).method()); - assertEquals([1, 2, 3], (new TestClass(...[1, 2, 3])).args); - assertTrue((new TestClass(...[1, 2, 3])).wasCalled); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/spread-call-super-property.js b/implementation-contributed/v8/mjsunit/es6/spread-call-super-property.js deleted file mode 100644 index a85ea416382..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-call-super-property.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testCallSuperPropertyStrict() { - "use strict"; - class BaseClass { - method(...args) { return [this].concat(args); } - } - class SubClass extends BaseClass { - method(...args) { return super.method(...args); } - } - - var c = new SubClass(); - assertEquals([c, 1, 2, 3, 4, 5], c.method(1, 2, 3, 4, 5)); -})(); - - -(function testCallSuperPropertySloppy() { - class BaseClass { - method(...args) { return [this].concat(args); } - } - class SubClass extends BaseClass { - method(...args) { return super.method(...args); } - } - - var c = new SubClass(); - assertEquals([c, 1, 2, 3, 4, 5], c.method(1, 2, 3, 4, 5)); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/spread-call.js b/implementation-contributed/v8/mjsunit/es6/spread-call.js deleted file mode 100644 index 7403e0726e0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/spread-call.js +++ /dev/null @@ -1,509 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function testSpreadCallsStrict() { - "use strict" - function countArgs() { return arguments.length; } - - // Test this argument - function returnThis() { return this; } - assertEquals(void 0, returnThis(..."test")); - - // Test argument counting with different iterables - assertEquals(0, countArgs(..."")); - assertEquals(4, countArgs(..."test")); - assertEquals(4, countArgs(..."tes", ..."t")); - assertEquals(4, countArgs("t", ..."es", "t")); - assertEquals(4, countArgs("tes", ..."t!!")); - - assertEquals(1, countArgs(...[1])); - assertEquals(2, countArgs(...[1, 2])); - assertEquals(3, countArgs(...[1, 2, 3])); - assertEquals(4, countArgs(...[1, 2, 3, 4])); - assertEquals(5, countArgs(...[1, 2, 3, 4, 5])); - assertEquals(6, countArgs(...[1, 2, 3, 4, 5, 6])); - - assertEquals(1, countArgs(...[1.1])); - assertEquals(2, countArgs(...[1.1, 2.2])); - assertEquals(3, countArgs(...[1.1, 2.2, 3.3])); - assertEquals(4, countArgs(...[1.1, 2.2, 3.3, 4.4])); - assertEquals(5, countArgs(...[1.1, 2.2, 3.3, 4.4, 5.5])); - assertEquals(6, countArgs(...[1.1, 2.2, 3.3, 4.4, 5.5, 6.6])); - - assertEquals(1, countArgs(...new Set([1]))); - assertEquals(2, countArgs(...new Set([1, 2]))); - assertEquals(3, countArgs(...new Set([1, 2, 3]))); - assertEquals(4, countArgs(...new Set([1, 2, 3, 4]))); - assertEquals(5, countArgs(...new Set([1, 2, 3, 4, 5]))); - assertEquals(6, countArgs(...new Set([1, 2, 3, 4, 5, 6]))); - - assertEquals(3, countArgs(...(function*(){ yield 1; yield 2; yield 3; })())); - - // Test values - function sum() { - var sum = arguments[0]; - for (var i = 1; i < arguments.length; ++i) { - sum += arguments[i]; - } - return sum; - } - - assertThrows(function() { - sum(...0); - }, TypeError); - assertEquals(void 0, sum(..."")); - assertEquals(void 0, sum(...[])); - assertEquals(void 0, sum(...new Set)); - assertEquals(void 0, sum(...(function*() { })())); - - assertEquals("test", sum(..."test")); - assertEquals(10, sum(...[1, 2, 3, 4])); - assertEquals(10, sum(...[1, 2, 3], 4)); - assertEquals(10, sum(1, ...[2, 3], 4)); - assertEquals(10, sum(1, ...[2, 3], ...[4])); - assertEquals(10, sum(1, 2, ...[3, 4])); - assertEquals(10, sum(...new Set([1, 2, 3, 4]))); - assertEquals(10, sum(...(function*() { - yield 1; - yield 2; - yield 3; - yield 4; - })())); - - // nested spreads - function makeArray() { - var result = []; - for (var i = 0; i < arguments.length; ++i) { - result.push(arguments[i]); - } - return result; - } - assertEquals(10, sum(...makeArray(...[1, 2, 3, 4]))); - assertEquals("test!!!", sum(...makeArray(..."test!!!"))); - - // Interleaved spread/unspread args - assertEquals(36, sum(0, ...[1], 2, 3, ...[4, 5], 6, 7, 8)); - assertEquals(45, sum(0, ...[1], 2, 3, ...[4, 5], 6, 7, 8, ...[9])); - - // Methods - var O = { - returnThis: returnThis, - countArgs: countArgs, - sum: sum, - makeArray: makeArray, - - nested: { - returnThis: returnThis, - countArgs: countArgs, - sum: sum, - makeArray: makeArray - } - }; - - // Test this argument - assertEquals(O, O.returnThis(..."test")); - assertEquals(O, O["returnThis"](..."test")); - assertEquals(O.nested, O.nested.returnThis(..."test")); - assertEquals(O.nested, O.nested["returnThis"](..."test")); - - // Test argument counting with different iterables - assertEquals(0, O.countArgs(..."")); - assertEquals(4, O.countArgs(..."test")); - assertEquals(4, O.countArgs(..."tes", ..."t")); - assertEquals(4, O.countArgs("t", ..."es", "t")); - assertEquals(4, O.countArgs("tes", ..."t!!")); - - assertEquals(1, O.countArgs(...[1])); - assertEquals(2, O.countArgs(...[1, 2])); - assertEquals(3, O.countArgs(...[1, 2, 3])); - assertEquals(4, O.countArgs(...[1, 2, 3, 4])); - assertEquals(5, O.countArgs(...[1, 2, 3, 4, 5])); - assertEquals(6, O.countArgs(...[1, 2, 3, 4, 5, 6])); - - assertEquals(1, O.countArgs(...new Set([1]))); - assertEquals(2, O.countArgs(...new Set([1, 2]))); - assertEquals(3, O.countArgs(...new Set([1, 2, 3]))); - assertEquals(4, O.countArgs(...new Set([1, 2, 3, 4]))); - assertEquals(5, O.countArgs(...new Set([1, 2, 3, 4, 5]))); - assertEquals(6, O.countArgs(...new Set([1, 2, 3, 4, 5, 6]))); - - assertEquals(3, O.countArgs( - ...(function*(){ yield 1; yield 2; yield 3; })())); - - // Test values - assertEquals(void 0, O.sum(..."")); - assertEquals(void 0, O.sum(...[])); - assertEquals(void 0, O.sum(...new Set)); - assertEquals(void 0, O.sum(...(function*() { })())); - - assertEquals("test", O.sum(..."test")); - assertEquals(10, O.sum(...[1, 2, 3, 4])); - assertEquals(10, O.sum(...[1, 2, 3], 4)); - assertEquals(10, O.sum(1, ...[2, 3], 4)); - assertEquals(10, O.sum(1, ...[2, 3], ...[4])); - assertEquals(10, O.sum(1, 2, ...[3, 4])); - assertEquals(10, O.sum(...new Set([1, 2, 3, 4]))); - assertEquals(10, O.sum(...(function*() { - yield 1; - yield 2; - yield 3; - yield 4; - })())); - - // nested spreads - assertEquals(10, O.sum(...O.makeArray(...[1, 2, 3, 4]))); - assertEquals("test!!!", O.sum(...O.makeArray(..."test!!!"))); - - // Interleaved spread/unspread args - assertEquals(36, O.sum(0, ...[1], 2, 3, ...[4, 5], 6, 7, 8)); - assertEquals(45, O.sum(0, ...[1], 2, 3, ...[4, 5], 6, 7, 8, ...[9])); -}; -testSpreadCallsStrict(); -%OptimizeFunctionOnNextCall(testSpreadCallsStrict); -testSpreadCallsStrict(); - - -(function testSpreadCallsSloppy() { - // Test this argument - function returnThis() { return this; } - assertEquals(this, returnThis(..."test")); - - function countArgs() { return arguments.length; } - - // Test argument counting with different iterables - assertEquals(0, countArgs(..."")); - assertEquals(4, countArgs(..."test")); - assertEquals(4, countArgs(..."tes", ..."t")); - assertEquals(4, countArgs("t", ..."es", "t")); - assertEquals(4, countArgs("tes", ..."t!!")); - - assertEquals(1, countArgs(...[1])); - assertEquals(2, countArgs(...[1, 2])); - assertEquals(3, countArgs(...[1, 2, 3])); - assertEquals(4, countArgs(...[1, 2, 3, 4])); - assertEquals(5, countArgs(...[1, 2, 3, 4, 5])); - assertEquals(6, countArgs(...[1, 2, 3, 4, 5, 6])); - - assertEquals(1, countArgs(...new Set([1]))); - assertEquals(2, countArgs(...new Set([1, 2]))); - assertEquals(3, countArgs(...new Set([1, 2, 3]))); - assertEquals(4, countArgs(...new Set([1, 2, 3, 4]))); - assertEquals(5, countArgs(...new Set([1, 2, 3, 4, 5]))); - assertEquals(6, countArgs(...new Set([1, 2, 3, 4, 5, 6]))); - - assertEquals(3, countArgs(...(function*(){ - yield 1; - yield 2; - yield 3; - })())); - - // Test values - function sum() { - var sum = arguments[0]; - for (var i = 1; i < arguments.length; ++i) { - sum += arguments[i]; - } - return sum; - } - - assertThrows(function() { - sum(...0); - }, TypeError); - assertEquals(void 0, sum(..."")); - assertEquals(void 0, sum(...[])); - assertEquals(void 0, sum(...new Set)); - assertEquals(void 0, sum(...(function*() { })())); - - assertEquals("test", sum(..."test")); - assertEquals(10, sum(...[1, 2, 3, 4])); - assertEquals(10, sum(...[1, 2, 3], 4)); - assertEquals(10, sum(1, ...[2, 3], 4)); - assertEquals(10, sum(1, ...[2, 3], ...[4])); - assertEquals(10, sum(1, 2, ...[3, 4])); - assertEquals(10, sum(...new Set([1, 2, 3, 4]))); - assertEquals(10, sum(...(function*() { - yield 1; - yield 2; - yield 3; - yield 4; - })())); - - // nested spreads - function makeArray() { - var result = []; - for (var i = 0; i < arguments.length; ++i) { - result.push(arguments[i]); - } - return result; - } - assertEquals(10, sum(...makeArray(...[1, 2, 3, 4]))); - assertEquals("test!!!", sum(...makeArray(..."test!!!"))); - - // Interleaved spread/unspread args - assertEquals(36, sum(0, ...[1], 2, 3, ...[4, 5], 6, 7, 8)); - assertEquals(45, sum(0, ...[1], 2, 3, ...[4, 5], 6, 7, 8, ...[9])); - - // Methods - var O = { - returnThis: returnThis, - countArgs: countArgs, - sum: sum, - makeArray: makeArray, - - nested: { - returnThis: returnThis, - countArgs: countArgs, - sum: sum, - makeArray: makeArray - } - }; - - // Test this argument - assertEquals(O, O.returnThis(..."test")); - assertEquals(O, O["returnThis"](..."test")); - assertEquals(O.nested, O.nested.returnThis(..."test")); - assertEquals(O.nested, O.nested["returnThis"](..."test")); - - // Test argument counting with different iterables - assertEquals(0, O.countArgs(..."")); - assertEquals(4, O.countArgs(..."test")); - assertEquals(4, O.countArgs(..."tes", ..."t")); - assertEquals(4, O.countArgs("t", ..."es", "t")); - assertEquals(4, O.countArgs("tes", ..."t!!")); - - assertEquals(1, O.countArgs(...[1])); - assertEquals(2, O.countArgs(...[1, 2])); - assertEquals(3, O.countArgs(...[1, 2, 3])); - assertEquals(4, O.countArgs(...[1, 2, 3, 4])); - assertEquals(5, O.countArgs(...[1, 2, 3, 4, 5])); - assertEquals(6, O.countArgs(...[1, 2, 3, 4, 5, 6])); - - assertEquals(1, O.countArgs(...new Set([1]))); - assertEquals(2, O.countArgs(...new Set([1, 2]))); - assertEquals(3, O.countArgs(...new Set([1, 2, 3]))); - assertEquals(4, O.countArgs(...new Set([1, 2, 3, 4]))); - assertEquals(5, O.countArgs(...new Set([1, 2, 3, 4, 5]))); - assertEquals(6, O.countArgs(...new Set([1, 2, 3, 4, 5, 6]))); - - assertEquals(3, O.countArgs(...(function*(){ - yield 1; - yield 2; - yield 3; - })())); - - // Test values - assertEquals(void 0, O.sum(..."")); - assertEquals(void 0, O.sum(...[])); - assertEquals(void 0, O.sum(...new Set)); - assertEquals(void 0, O.sum(...(function*() { })())); - - assertEquals("test", O.sum(..."test")); - assertEquals(10, O.sum(...[1, 2, 3, 4])); - assertEquals(10, O.sum(...[1, 2, 3], 4)); - assertEquals(10, O.sum(1, ...[2, 3], 4)); - assertEquals(10, O.sum(1, ...[2, 3], ...[4])); - assertEquals(10, O.sum(1, 2, ...[3, 4])); - assertEquals(10, O.sum(...new Set([1, 2, 3, 4]))); - assertEquals(10, O.sum(...(function*() { - yield 1; - yield 2; - yield 3; - yield 4; - })())); - - // nested spreads - assertEquals(10, O.sum(...O.makeArray(...[1, 2, 3, 4]))); - assertEquals("test!!!", O.sum(...O.makeArray(..."test!!!"))); - - // Interleaved spread/unspread args - assertEquals(36, O.sum(0, ...[1], 2, 3, ...[4, 5], 6, 7, 8)); - assertEquals(45, O.sum(0, ...[1], 2, 3, ...[4, 5], 6, 7, 8, ...[9])); -})(); - - -(function testSpreadEvaluationOrder() { - "use strict"; - var log = ""; - function* gen() { log += "X"; yield 0; log += "Y"; } - function a() { log += "A"; } - function b() { log += "B"; return gen(); } - function* c() { log += 'C1'; yield 1; log += 'C2'; } - function d() { log += "D"; } - function e() { log += "E"; } - function fn() { - var args = []; - for (var i = 0; i < arguments.length; ++i) args.push(arguments[i]); - return args; - } - - var result = fn(a(), ...b(), d()); - assertEquals([undefined, 0, undefined], result); - assertEquals("ABXYD", log); - - log = ""; - result = fn(...b(), d()); - assertEquals([0, undefined], result); - assertEquals("BXYD", log); - - log = ""; - result = fn(a(), ...b()); - assertEquals([undefined, 0], result); - assertEquals("ABXY", log); - - log = ""; - result = fn(a(), ...b(), ...c(), d(), e()); - assertEquals([undefined, 0, 1, undefined, undefined], result); - assertEquals("ABXYC1C2DE", log); - - log = ""; - result = fn(a(), ...b(), ...c(), d(), e(), ...b(), ...c()); - assertEquals([undefined, 0, 1, undefined, undefined, 0, 1], result); - assertEquals("ABXYC1C2DEBXYC1C2", log); -})(); - -(function testArrayPrototypeHoleGetterModifiesIteratorPrototypeNext() { - function sum() { - var sum = arguments[0]; - for (var i = 1; i < arguments.length; ++i) { - sum += arguments[i]; - } - return sum; - } - var a = [1, 2]; - a[3] = 4; - var called = 0; - - // .next method is only accessed during iteration prologue (see - // https://github.com/tc39/ecma262/pull/988) - let ArrayIteratorPrototype = Array.prototype[Symbol.iterator]().__proto__; - let ArrayIteratorPrototypeNextDescriptor = - Object.getOwnPropertyDescriptor(ArrayIteratorPrototype, 'next'); - Object.defineProperty(Array.prototype, 2, { - get: function() { - var ai = a[Symbol.iterator](); - var original_next = ai.__proto__["next"]; - Object.defineProperty(ai.__proto__, "next", { - get: function() { - called++; - return original_next; - }, - configurable: true - }); - return 3; - }, - configurable: true - }); - - assertEquals(10, sum(...a)); - assertEquals(0, called); - - Object.defineProperty(ArrayIteratorPrototype, 'next', - ArrayIteratorPrototypeNextDescriptor); - Object.defineProperty(Array.prototype, 2, {}); -})(); - -(function testArrayHasOtherPrototype() { - function countArgs() { return arguments.length; } - var a = [1, 2, 3]; - var b = {}; - Object.defineProperty(b, Symbol.iterator, { - value: function*() { - yield 4; - }, - configurable: true - }); - - Object.setPrototypeOf(a, b); - - assertEquals(1, countArgs(...a)); -})(); - -(function testArrayIteratorPrototypeGetter() { - function countArgs() { return arguments.length; } - var a = [1, 2, 3]; - var ai = a[Symbol.iterator](); - var called = 0; - - var original_next = ai.__proto__["next"]; - - Object.defineProperty(ai.__proto__, "next", { - get: function() { - called++; - return original_next; - } - }); - - countArgs(...a); - - // .next method is only accessed during iteration prologue (see - // https://github.com/tc39/ecma262/pull/988) - assertEquals(1, called); -})(); - -(function testArrayIteratorPrototypeModified() { - function countArgs() { return arguments.length; } - var a = [1,2,3]; - var ai = a[Symbol.iterator](); - Object.defineProperty(ai.__proto__, "next", { - value: function() { - return {value: undefined, done: true}; - }, - configurable: true - }); - - assertEquals(0, countArgs(...a)); - -})(); - -(function testCustomArrayPrototypeIterator() { - var origIterator = - Object.getOwnPropertyDescriptor(Array.prototype, Symbol.iterator); - Object.defineProperty(Array.prototype, Symbol.iterator, { - value: function*() { - yield 1; - yield 2; - yield 3; - }, - configurable: true - }); - function returnCountStrict() { 'use strict'; return arguments.length; } - function returnCountSloppy() { return arguments.length; } - - assertEquals(3, returnCountStrict(...[1])); - assertEquals(4, returnCountStrict(1, ...[2])); - assertEquals(5, returnCountStrict(1, ...[2], 3)); - assertEquals(3, returnCountSloppy(...[1])); - assertEquals(4, returnCountSloppy(1, ...[2])); - assertEquals(5, returnCountSloppy(1, ...[2], 3)); - - Object.defineProperty(Array.prototype, Symbol.iterator, origIterator); -})(); - -(function testGetPropertyIteratorCalledExactlyOnce() { - function countArgs() { return arguments.length; } - var a = [1, 2, 3]; - var called = 0; - - Object.defineProperty(Array.prototype, Symbol.iterator, { - value: function*() { - yield 1; - yield 2; - }, - configurable: true - }); - - var it = a[Symbol.iterator]; - Object.defineProperty(a, Symbol.iterator, { - get: function() { - called++; - return it; - } - }); - - countArgs(...a); - - assertEquals(1, called); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/string-codepointat.js b/implementation-contributed/v8/mjsunit/es6/string-codepointat.js deleted file mode 100644 index 976d5be6afd..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-codepointat.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Tests taken from: -// https://github.com/mathiasbynens/String.prototype.codePointAt - -assertEquals(String.prototype.codePointAt.length, 1); -assertEquals(String.prototype.propertyIsEnumerable("codePointAt"), false); - -// String that starts with a BMP symbol -assertEquals("abc\uD834\uDF06def".codePointAt(""), 0x61); -assertEquals("abc\uD834\uDF06def".codePointAt("_"), 0x61); -assertEquals("abc\uD834\uDF06def".codePointAt(), 0x61); -assertEquals("abc\uD834\uDF06def".codePointAt(-Infinity), undefined); -assertEquals("abc\uD834\uDF06def".codePointAt(-1), undefined); -assertEquals("abc\uD834\uDF06def".codePointAt(-0), 0x61); -assertEquals("abc\uD834\uDF06def".codePointAt(0), 0x61); -assertEquals("abc\uD834\uDF06def".codePointAt(3), 0x1D306); -assertEquals("abc\uD834\uDF06def".codePointAt(4), 0xDF06); -assertEquals("abc\uD834\uDF06def".codePointAt(5), 0x64); -assertEquals("abc\uD834\uDF06def".codePointAt(42), undefined); -assertEquals("abc\uD834\uDF06def".codePointAt(Infinity), undefined); -assertEquals("abc\uD834\uDF06def".codePointAt(Infinity), undefined); -assertEquals("abc\uD834\uDF06def".codePointAt(NaN), 0x61); -assertEquals("abc\uD834\uDF06def".codePointAt(false), 0x61); -assertEquals("abc\uD834\uDF06def".codePointAt(null), 0x61); -assertEquals("abc\uD834\uDF06def".codePointAt(undefined), 0x61); - -// String that starts with an astral symbol -assertEquals("\uD834\uDF06def".codePointAt(""), 0x1D306); -assertEquals("\uD834\uDF06def".codePointAt("1"), 0xDF06); -assertEquals("\uD834\uDF06def".codePointAt("_"), 0x1D306); -assertEquals("\uD834\uDF06def".codePointAt(), 0x1D306); -assertEquals("\uD834\uDF06def".codePointAt(-1), undefined); -assertEquals("\uD834\uDF06def".codePointAt(-0), 0x1D306); -assertEquals("\uD834\uDF06def".codePointAt(0), 0x1D306); -assertEquals("\uD834\uDF06def".codePointAt(1), 0xDF06); -assertEquals("\uD834\uDF06def".codePointAt(42), undefined); -assertEquals("\uD834\uDF06def".codePointAt(false), 0x1D306); -assertEquals("\uD834\uDF06def".codePointAt(null), 0x1D306); -assertEquals("\uD834\uDF06def".codePointAt(undefined), 0x1D306); - -// Lone high surrogates -assertEquals("\uD834abc".codePointAt(""), 0xD834); -assertEquals("\uD834abc".codePointAt("_"), 0xD834); -assertEquals("\uD834abc".codePointAt(), 0xD834); -assertEquals("\uD834abc".codePointAt(-1), undefined); -assertEquals("\uD834abc".codePointAt(-0), 0xD834); -assertEquals("\uD834abc".codePointAt(0), 0xD834); -assertEquals("\uD834abc".codePointAt(false), 0xD834); -assertEquals("\uD834abc".codePointAt(NaN), 0xD834); -assertEquals("\uD834abc".codePointAt(null), 0xD834); -assertEquals("\uD834abc".codePointAt(undefined), 0xD834); - -// Lone low surrogates -assertEquals("\uDF06abc".codePointAt(""), 0xDF06); -assertEquals("\uDF06abc".codePointAt("_"), 0xDF06); -assertEquals("\uDF06abc".codePointAt(), 0xDF06); -assertEquals("\uDF06abc".codePointAt(-1), undefined); -assertEquals("\uDF06abc".codePointAt(-0), 0xDF06); -assertEquals("\uDF06abc".codePointAt(0), 0xDF06); -assertEquals("\uDF06abc".codePointAt(false), 0xDF06); -assertEquals("\uDF06abc".codePointAt(NaN), 0xDF06); -assertEquals("\uDF06abc".codePointAt(null), 0xDF06); -assertEquals("\uDF06abc".codePointAt(undefined), 0xDF06); - -assertThrows(function() { - String.prototype.codePointAt.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.codePointAt.call(undefined, 4); -}, TypeError); -assertThrows(function() { - String.prototype.codePointAt.call(null); -}, TypeError); -assertThrows(function() { - String.prototype.codePointAt.call(null, 4); -}, TypeError); -assertEquals(String.prototype.codePointAt.call(42, 0), 0x34); -assertEquals(String.prototype.codePointAt.call(42, 1), 0x32); -assertEquals(String.prototype.codePointAt.call({ - toString: function() { return "abc"; } -}, 2), 0x63); -var tmp = 0; -assertEquals(String.prototype.codePointAt.call({ - toString: function() { ++tmp; return String(tmp); } -}, 0), 0x31); -assertEquals(tmp, 1); diff --git a/implementation-contributed/v8/mjsunit/es6/string-endswith.js b/implementation-contributed/v8/mjsunit/es6/string-endswith.js deleted file mode 100644 index b776ccc4bab..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-endswith.js +++ /dev/null @@ -1,419 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(1, String.prototype.endsWith.length); - -var testString = "Hello World"; -assertTrue(testString.endsWith("")); -assertTrue(testString.endsWith("World")); -assertFalse(testString.endsWith("world")); -assertFalse(testString.endsWith("Hello World!")); -assertFalse(testString.endsWith(null)); -assertFalse(testString.endsWith(undefined)); -assertFalse(testString.endsWith()); - -assertTrue("null".endsWith(null)); -assertTrue("undefined".endsWith(undefined)); - -var georgianUnicodeString = "\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7"; -assertTrue(georgianUnicodeString.endsWith(georgianUnicodeString)); -assertTrue(georgianUnicodeString.endsWith("\u10D4\u10D5\u10D6\u10D7")); -assertFalse(georgianUnicodeString.endsWith("\u10D0")); - -assertThrows("String.prototype.endsWith.call(null, 'test')", TypeError); -assertThrows("String.prototype.endsWith.call(null, null)", TypeError); -assertThrows("String.prototype.endsWith.call(undefined, undefined)", TypeError); - -assertThrows("String.prototype.endsWith.apply(null, ['test'])", TypeError); -assertThrows("String.prototype.endsWith.apply(null, [null])", TypeError); -assertThrows("String.prototype.endsWith.apply(undefined, [undefined])", TypeError); - -var TEST_INPUT = [{ - msg: "Empty string", val: "" -}, { - msg: "Number 1234.34", val: 1234.34 -}, { - msg: "Integer number 0", val: 0 -}, { - msg: "Negative number -1", val: -1 -}, { - msg: "Boolean true", val: true -}, { - msg: "Boolean false", val: false -}, { - msg: "Empty array []", val: [] -}, { - msg: "Empty object {}", val: {} -}, { - msg: "Array of size 3", val: new Array(3) -}]; - -function testNonStringValues() { - var i = 0; - var l = TEST_INPUT.length; - - for (; i < l; i++) { - var e = TEST_INPUT[i]; - var v = e.val; - var s = String(v); - assertTrue(s.endsWith(v), e.msg); - assertTrue(String.prototype.endsWith.call(v, v), e.msg); - assertTrue(String.prototype.endsWith.apply(v, [v]), e.msg); - } -} -testNonStringValues(); - -var CustomType = function(value) { - this.endsWith = String.prototype.endsWith; - this.toString = function() { - return String(value); - } -}; - -function testCutomType() { - var i = 0; - var l = TEST_INPUT.length; - - for (; i < l; i++) { - var e = TEST_INPUT[i]; - var v = e.val; - var o = new CustomType(v); - assertTrue(o.endsWith(v), e.msg); - } -} -testCutomType(); - - -// Test cases found in FF -assertTrue("abc".endsWith("abc")); -assertTrue("abcd".endsWith("bcd")); -assertTrue("abc".endsWith("c")); -assertFalse("abc".endsWith("abcd")); -assertFalse("abc".endsWith("bbc")); -assertFalse("abc".endsWith("b")); -assertTrue("abc".endsWith("abc", 3)); -assertTrue("abc".endsWith("bc", 3)); -assertFalse("abc".endsWith("a", 3)); -assertTrue("abc".endsWith("bc", 3)); -assertTrue("abc".endsWith("a", 1)); -assertFalse("abc".endsWith("abc", 1)); -assertTrue("abc".endsWith("b", 2)); -assertFalse("abc".endsWith("d", 2)); -assertFalse("abc".endsWith("dcd", 2)); -assertFalse("abc".endsWith("a", 42)); -assertTrue("abc".endsWith("bc", Infinity)); -assertFalse("abc".endsWith("a", Infinity)); -assertTrue("abc".endsWith("bc", undefined)); -assertFalse("abc".endsWith("bc", -43)); -assertFalse("abc".endsWith("bc", -Infinity)); -assertFalse("abc".endsWith("bc", NaN)); - -// Test cases taken from -// https://github.com/mathiasbynens/String.prototype.endsWith/blob/master/tests/tests.js -Object.prototype[1] = 2; // try to break `arguments[1]` - -assertEquals(String.prototype.endsWith.length, 1); -assertEquals(String.prototype.propertyIsEnumerable("endsWith"), false); - -assertEquals("undefined".endsWith(), true); -assertEquals("undefined".endsWith(undefined), true); -assertEquals("undefined".endsWith(null), false); -assertEquals("null".endsWith(), false); -assertEquals("null".endsWith(undefined), false); -assertEquals("null".endsWith(null), true); - -assertEquals("abc".endsWith(), false); -assertEquals("abc".endsWith(""), true); -assertEquals("abc".endsWith("\0"), false); -assertEquals("abc".endsWith("c"), true); -assertEquals("abc".endsWith("b"), false); -assertEquals("abc".endsWith("ab"), false); -assertEquals("abc".endsWith("bc"), true); -assertEquals("abc".endsWith("abc"), true); -assertEquals("abc".endsWith("bcd"), false); -assertEquals("abc".endsWith("abcd"), false); -assertEquals("abc".endsWith("bcde"), false); - -assertEquals("abc".endsWith("", NaN), true); -assertEquals("abc".endsWith("\0", NaN), false); -assertEquals("abc".endsWith("c", NaN), false); -assertEquals("abc".endsWith("b", NaN), false); -assertEquals("abc".endsWith("ab", NaN), false); -assertEquals("abc".endsWith("bc", NaN), false); -assertEquals("abc".endsWith("abc", NaN), false); -assertEquals("abc".endsWith("bcd", NaN), false); -assertEquals("abc".endsWith("abcd", NaN), false); -assertEquals("abc".endsWith("bcde", NaN), false); - -assertEquals("abc".endsWith("", false), true); -assertEquals("abc".endsWith("\0", false), false); -assertEquals("abc".endsWith("c", false), false); -assertEquals("abc".endsWith("b", false), false); -assertEquals("abc".endsWith("ab", false), false); -assertEquals("abc".endsWith("bc", false), false); -assertEquals("abc".endsWith("abc", false), false); -assertEquals("abc".endsWith("bcd", false), false); -assertEquals("abc".endsWith("abcd", false), false); -assertEquals("abc".endsWith("bcde", false), false); - -assertEquals("abc".endsWith("", undefined), true); -assertEquals("abc".endsWith("\0", undefined), false); -assertEquals("abc".endsWith("c", undefined), true); -assertEquals("abc".endsWith("b", undefined), false); -assertEquals("abc".endsWith("ab", undefined), false); -assertEquals("abc".endsWith("bc", undefined), true); -assertEquals("abc".endsWith("abc", undefined), true); -assertEquals("abc".endsWith("bcd", undefined), false); -assertEquals("abc".endsWith("abcd", undefined), false); -assertEquals("abc".endsWith("bcde", undefined), false); - -assertEquals("abc".endsWith("", null), true); -assertEquals("abc".endsWith("\0", null), false); -assertEquals("abc".endsWith("c", null), false); -assertEquals("abc".endsWith("b", null), false); -assertEquals("abc".endsWith("ab", null), false); -assertEquals("abc".endsWith("bc", null), false); -assertEquals("abc".endsWith("abc", null), false); -assertEquals("abc".endsWith("bcd", null), false); -assertEquals("abc".endsWith("abcd", null), false); -assertEquals("abc".endsWith("bcde", null), false); - -assertEquals("abc".endsWith("", -Infinity), true); -assertEquals("abc".endsWith("\0", -Infinity), false); -assertEquals("abc".endsWith("c", -Infinity), false); -assertEquals("abc".endsWith("b", -Infinity), false); -assertEquals("abc".endsWith("ab", -Infinity), false); -assertEquals("abc".endsWith("bc", -Infinity), false); -assertEquals("abc".endsWith("abc", -Infinity), false); -assertEquals("abc".endsWith("bcd", -Infinity), false); -assertEquals("abc".endsWith("abcd", -Infinity), false); -assertEquals("abc".endsWith("bcde", -Infinity), false); - -assertEquals("abc".endsWith("", -1), true); -assertEquals("abc".endsWith("\0", -1), false); -assertEquals("abc".endsWith("c", -1), false); -assertEquals("abc".endsWith("b", -1), false); -assertEquals("abc".endsWith("ab", -1), false); -assertEquals("abc".endsWith("bc", -1), false); -assertEquals("abc".endsWith("abc", -1), false); -assertEquals("abc".endsWith("bcd", -1), false); -assertEquals("abc".endsWith("abcd", -1), false); -assertEquals("abc".endsWith("bcde", -1), false); - -assertEquals("abc".endsWith("", -0), true); -assertEquals("abc".endsWith("\0", -0), false); -assertEquals("abc".endsWith("c", -0), false); -assertEquals("abc".endsWith("b", -0), false); -assertEquals("abc".endsWith("ab", -0), false); -assertEquals("abc".endsWith("bc", -0), false); -assertEquals("abc".endsWith("abc", -0), false); -assertEquals("abc".endsWith("bcd", -0), false); -assertEquals("abc".endsWith("abcd", -0), false); -assertEquals("abc".endsWith("bcde", -0), false); - -assertEquals("abc".endsWith("", +0), true); -assertEquals("abc".endsWith("\0", +0), false); -assertEquals("abc".endsWith("c", +0), false); -assertEquals("abc".endsWith("b", +0), false); -assertEquals("abc".endsWith("ab", +0), false); -assertEquals("abc".endsWith("bc", +0), false); -assertEquals("abc".endsWith("abc", +0), false); -assertEquals("abc".endsWith("bcd", +0), false); -assertEquals("abc".endsWith("abcd", +0), false); -assertEquals("abc".endsWith("bcde", +0), false); - -assertEquals("abc".endsWith("", 1), true); -assertEquals("abc".endsWith("\0", 1), false); -assertEquals("abc".endsWith("c", 1), false); -assertEquals("abc".endsWith("b", 1), false); -assertEquals("abc".endsWith("ab", 1), false); -assertEquals("abc".endsWith("bc", 1), false); -assertEquals("abc".endsWith("abc", 1), false); -assertEquals("abc".endsWith("bcd", 1), false); -assertEquals("abc".endsWith("abcd", 1), false); -assertEquals("abc".endsWith("bcde", 1), false); - -assertEquals("abc".endsWith("", 2), true); -assertEquals("abc".endsWith("\0", 2), false); -assertEquals("abc".endsWith("c", 2), false); -assertEquals("abc".endsWith("b", 2), true); -assertEquals("abc".endsWith("ab", 2), true); -assertEquals("abc".endsWith("bc", 2), false); -assertEquals("abc".endsWith("abc", 2), false); -assertEquals("abc".endsWith("bcd", 2), false); -assertEquals("abc".endsWith("abcd", 2), false); -assertEquals("abc".endsWith("bcde", 2), false); - -assertEquals("abc".endsWith("", +Infinity), true); -assertEquals("abc".endsWith("\0", +Infinity), false); -assertEquals("abc".endsWith("c", +Infinity), true); -assertEquals("abc".endsWith("b", +Infinity), false); -assertEquals("abc".endsWith("ab", +Infinity), false); -assertEquals("abc".endsWith("bc", +Infinity), true); -assertEquals("abc".endsWith("abc", +Infinity), true); -assertEquals("abc".endsWith("bcd", +Infinity), false); -assertEquals("abc".endsWith("abcd", +Infinity), false); -assertEquals("abc".endsWith("bcde", +Infinity), false); - -assertEquals("abc".endsWith("", true), true); -assertEquals("abc".endsWith("\0", true), false); -assertEquals("abc".endsWith("c", true), false); -assertEquals("abc".endsWith("b", true), false); -assertEquals("abc".endsWith("ab", true), false); -assertEquals("abc".endsWith("bc", true), false); -assertEquals("abc".endsWith("abc", true), false); -assertEquals("abc".endsWith("bcd", true), false); -assertEquals("abc".endsWith("abcd", true), false); -assertEquals("abc".endsWith("bcde", true), false); - -assertEquals("abc".endsWith("", "x"), true); -assertEquals("abc".endsWith("\0", "x"), false); -assertEquals("abc".endsWith("c", "x"), false); -assertEquals("abc".endsWith("b", "x"), false); -assertEquals("abc".endsWith("ab", "x"), false); -assertEquals("abc".endsWith("bc", "x"), false); -assertEquals("abc".endsWith("abc", "x"), false); -assertEquals("abc".endsWith("bcd", "x"), false); -assertEquals("abc".endsWith("abcd", "x"), false); -assertEquals("abc".endsWith("bcde", "x"), false); - -assertEquals("[a-z]+(bar)?".endsWith("(bar)?"), true); -assertThrows(function() { "[a-z]+(bar)?".endsWith(/(bar)?/); -}, TypeError); -assertEquals("[a-z]+(bar)?".endsWith("[a-z]+", 6), true); -assertThrows(function() { "[a-z]+(bar)?".endsWith(/(bar)?/); -}, TypeError); -assertThrows(function() { "[a-z]+/(bar)?/".endsWith(/(bar)?/); -}, TypeError); - -// http://mathiasbynens.be/notes/javascript-unicode#poo-test -var string = "I\xF1t\xEBrn\xE2ti\xF4n\xE0liz\xE6ti\xF8n\u2603\uD83D\uDCA9"; -assertEquals(string.endsWith(""), true); -assertEquals(string.endsWith("\xF1t\xEBr"), false); -assertEquals(string.endsWith("\xF1t\xEBr", 5), true); -assertEquals(string.endsWith("\xE0liz\xE6"), false); -assertEquals(string.endsWith("\xE0liz\xE6", 16), true); -assertEquals(string.endsWith("\xF8n\u2603\uD83D\uDCA9"), true); -assertEquals(string.endsWith("\xF8n\u2603\uD83D\uDCA9", 23), true); -assertEquals(string.endsWith("\u2603"), false); -assertEquals(string.endsWith("\u2603", 21), true); -assertEquals(string.endsWith("\uD83D\uDCA9"), true); -assertEquals(string.endsWith("\uD83D\uDCA9", 23), true); - -assertThrows(function() { - String.prototype.endsWith.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.endsWith.call(undefined, "b"); -}, TypeError); -assertThrows(function() { - String.prototype.endsWith.call(undefined, "b", 4); -}, TypeError); -assertThrows(function() { - String.prototype.endsWith.call(null); -}, TypeError); -assertThrows(function() { - String.prototype.endsWith.call(null, "b"); -}, TypeError); -assertThrows(function() { - String.prototype.endsWith.call(null, "b", 4); -}, TypeError); -assertEquals(String.prototype.endsWith.call(42, "2"), true); -assertEquals(String.prototype.endsWith.call(42, "4"), false); -assertEquals(String.prototype.endsWith.call(42, "b", 4), false); -assertEquals(String.prototype.endsWith.call(42, "2", 1), false); -assertEquals(String.prototype.endsWith.call(42, "2", 4), true); -assertEquals(String.prototype.endsWith.call({ - "toString": function() { return "abc"; } -}, "b", 0), false); -assertEquals(String.prototype.endsWith.call({ - "toString": function() { return "abc"; } -}, "b", 1), false); -assertEquals(String.prototype.endsWith.call({ - "toString": function() { return "abc"; } -}, "b", 2), true); -assertThrows(function() { - String.prototype.endsWith.call({ - "toString": function() { throw RangeError(); } - }, /./); -}, RangeError); -assertThrows(function() { - String.prototype.endsWith.call({ - "toString": function() { return "abc"; } - }, /./); -}, TypeError); - -assertThrows(function() { - String.prototype.endsWith.apply(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.endsWith.apply(undefined, ["b"]); }, -TypeError); -assertThrows(function() { - String.prototype.endsWith.apply(undefined, ["b", 4]); -}, TypeError); -assertThrows(function() { - String.prototype.endsWith.apply(null); -}, TypeError); -assertThrows(function() { - String.prototype.endsWith.apply(null, ["b"]); -}, TypeError); -assertThrows(function() { - String.prototype.endsWith.apply(null, ["b", 4]); -}, TypeError); -assertEquals(String.prototype.endsWith.apply(42, ["2"]), true); -assertEquals(String.prototype.endsWith.apply(42, ["4"]), false); -assertEquals(String.prototype.endsWith.apply(42, ["b", 4]), false); -assertEquals(String.prototype.endsWith.apply(42, ["2", 1]), false); -assertEquals(String.prototype.endsWith.apply(42, ["2", 4]), true); -assertEquals(String.prototype.endsWith.apply({ - "toString": function() { return "abc"; } -}, ["b", 0]), false); -assertEquals(String.prototype.endsWith.apply({ - "toString": function() { return "abc"; } -}, ["b", 1]), false); -assertEquals(String.prototype.endsWith.apply({ - "toString": function() { return "abc"; } -}, ["b", 2]), true); -assertThrows(function() { - String.prototype.endsWith.apply({ - "toString": function() { throw RangeError(); } - }, [/./]); -}, RangeError); -assertThrows(function() { - String.prototype.endsWith.apply({ - "toString": function() { return "abc"; } - }, [/./]); -}, TypeError); - -// endsWith does its brand checks with Symbol.match -var re = /./; -assertThrows(function() { - "".startsWith(re); -}, TypeError); -re[Symbol.match] = false; -assertEquals(false, "".startsWith(re)); diff --git a/implementation-contributed/v8/mjsunit/es6/string-fromcodepoint.js b/implementation-contributed/v8/mjsunit/es6/string-fromcodepoint.js deleted file mode 100644 index 92734324df3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-fromcodepoint.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Tests taken from: -// https://github.com/mathiasbynens/String.fromCodePoint - -// Flags: --allow-natives-syntax - -assertEquals(String.fromCodePoint.length, 1); -assertEquals(String.propertyIsEnumerable("fromCodePoint"), false); - -assertEquals(String.fromCodePoint(""), "\0"); -assertEquals(String.fromCodePoint(), ""); -assertEquals(String.fromCodePoint(-0), "\0"); -assertEquals(String.fromCodePoint(0), "\0"); -assertEquals(String.fromCodePoint(0x1D306), "\uD834\uDF06"); -assertEquals( - String.fromCodePoint(0x1D306, 0x61, 0x1D307), - "\uD834\uDF06a\uD834\uDF07"); -assertEquals(String.fromCodePoint(0x61, 0x62, 0x1D307), "ab\uD834\uDF07"); -assertEquals(String.fromCodePoint(false), "\0"); -assertEquals(String.fromCodePoint(null), "\0"); - -assertThrows(function () { String.fromCodePoint("_"); }, RangeError); -assertThrows(function () { String.fromCodePoint("+Infinity"); }, RangeError); -assertThrows(function () { String.fromCodePoint("-Infinity"); }, RangeError); -assertThrows(function () { String.fromCodePoint(-1); }, RangeError); -assertThrows(function () { String.fromCodePoint(0x10FFFF + 1); }, RangeError); -assertThrows(function () { String.fromCodePoint(3.14); }, RangeError); -assertThrows(function () { String.fromCodePoint(3e-2); }, RangeError); -assertThrows(function () { String.fromCodePoint(-Infinity); }, RangeError); -assertThrows(function () { String.fromCodePoint(+Infinity); }, RangeError); -assertThrows(function () { String.fromCodePoint(NaN); }, RangeError); -assertThrows(function () { String.fromCodePoint(undefined); }, RangeError); -assertThrows(function () { String.fromCodePoint({}); }, RangeError); -assertThrows(function () { String.fromCodePoint(/./); }, RangeError); -assertThrows(function () { - String.fromCodePoint({ - valueOf: function () { throw Error(); } - }); -}, Error); -assertThrows(function () { - String.fromCodePoint({ - valueOf: function () { throw Error(); } - }); -}, Error); -var tmp = 0x60; -assertEquals(String.fromCodePoint({ - valueOf: function () { ++tmp; return tmp; } -}), "a"); -assertEquals(tmp, 0x61); - -var counter = Math.pow(2, 15) * 3 / 2; -var result = []; -while (--counter >= 0) { - result.push(0); // one code unit per symbol -} -String.fromCodePoint.apply(null, result); // must not throw - -var counter = Math.pow(2, 15) * 3 / 2; -var result = []; -while (--counter >= 0) { - result.push(0xFFFF + 1); // two code units per symbol -} -String.fromCodePoint.apply(null, result); // must not throw diff --git a/implementation-contributed/v8/mjsunit/es6/string-html.js b/implementation-contributed/v8/mjsunit/es6/string-html.js deleted file mode 100644 index 1eaa7b1eb11..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-html.js +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Tests taken from: -// http://mathias.html5.org/tests/javascript/string/ - -assertEquals('_'.anchor('b'), '_'); -assertEquals('<'.anchor('<'), '<'); -assertEquals('_'.anchor(0x2A), '_'); -assertEquals('_'.anchor('\x22\x22'), '_'); -assertEquals('_'.anchor(), '_'); -assertEquals(String.prototype.anchor.call(0x2A, 0x2A), '42'); -assertThrows(function() { - String.prototype.anchor.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.anchor.call(null); -}, TypeError); -assertEquals(String.prototype.anchor.length, 1); - -assertEquals('_'.big(), '_'); -assertEquals('<'.big(), '<'); -assertEquals(String.prototype.big.call(0x2A), '42'); -assertThrows(function() { - String.prototype.big.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.big.call(null); -}, TypeError); -assertEquals(String.prototype.big.length, 0); - -assertEquals('_'.blink(), '_'); -assertEquals('<'.blink(), '<'); -assertEquals(String.prototype.blink.call(0x2A), '42'); -assertThrows(function() { - String.prototype.blink.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.blink.call(null); -}, TypeError); -assertEquals(String.prototype.blink.length, 0); - -assertEquals('_'.bold(), '_'); -assertEquals('<'.bold(), '<'); -assertEquals(String.prototype.bold.call(0x2A), '42'); -assertThrows(function() { - String.prototype.bold.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.bold.call(null); -}, TypeError); -assertEquals(String.prototype.bold.length, 0); - -assertEquals('_'.fixed(), '_'); -assertEquals('<'.fixed(), '<'); -assertEquals(String.prototype.fixed.call(0x2A), '42'); -assertThrows(function() { - String.prototype.fixed.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.fixed.call(null); -}, TypeError); -assertEquals(String.prototype.fixed.length, 0); - -assertEquals('_'.fontcolor('b'), '_'); -assertEquals('<'.fontcolor('<'), '<'); -assertEquals('_'.fontcolor(0x2A), '_'); -assertEquals('_'.fontcolor('\x22'), '_'); -assertEquals(String.prototype.fontcolor.call(0x2A, 0x2A), - '42'); -assertThrows(function() { - String.prototype.fontcolor.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.fontcolor.call(null); -}, TypeError); -assertEquals(String.prototype.fontcolor.length, 1); - -assertEquals('_'.fontsize('b'), '_'); -assertEquals('<'.fontsize('<'), '<'); -assertEquals('_'.fontsize(0x2A), '_'); -assertEquals('_'.fontsize('\x22'), '_'); -assertEquals(String.prototype.fontsize.call(0x2A, 0x2A), - '42'); -assertThrows(function() { - String.prototype.fontsize.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.fontsize.call(null); -}, TypeError); -assertEquals(String.prototype.fontsize.length, 1); - -assertEquals('_'.italics(), '_'); -assertEquals('<'.italics(), '<'); -assertEquals(String.prototype.italics.call(0x2A), '42'); -assertThrows(function() { - String.prototype.italics.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.italics.call(null); -}, TypeError); -assertEquals(String.prototype.italics.length, 0); - -assertEquals('_'.link('b'), '_'); -assertEquals('<'.link('<'), '<'); -assertEquals('_'.link(0x2A), '_'); -assertEquals('_'.link('\x22'), '_'); -assertEquals(String.prototype.link.call(0x2A, 0x2A), '42'); -assertThrows(function() { - String.prototype.link.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.link.call(null); -}, TypeError); -assertEquals(String.prototype.link.length, 1); - -assertEquals('_'.small(), '_'); -assertEquals('<'.small(), '<'); -assertEquals(String.prototype.small.call(0x2A), '42'); -assertThrows(function() { - String.prototype.small.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.small.call(null); -}, TypeError); -assertEquals(String.prototype.small.length, 0); - -assertEquals('_'.strike(), '_'); -assertEquals('<'.strike(), '<'); -assertEquals(String.prototype.strike.call(0x2A), '42'); -assertThrows(function() { - String.prototype.strike.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.strike.call(null); -}, TypeError); -assertEquals(String.prototype.strike.length, 0); - -assertEquals('_'.sub(), '_'); -assertEquals('<'.sub(), '<'); -assertEquals(String.prototype.sub.call(0x2A), '42'); -assertThrows(function() { - String.prototype.sub.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.sub.call(null); -}, TypeError); -assertEquals(String.prototype.sub.length, 0); - -assertEquals('_'.sup(), '_'); -assertEquals('<'.sup(), '<'); -assertEquals(String.prototype.sup.call(0x2A), '42'); -assertThrows(function() { - String.prototype.sup.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.sup.call(null); -}, TypeError); -assertEquals(String.prototype.sup.length, 0); - - -(function TestToString() { - var calls = 0; - var obj = { - toString() { - calls++; - return 'abc'; - }, - valueOf() { - assertUnreachable(); - } - }; - - var methodNames = [ - 'anchor', - 'big', - 'blink', - 'bold', - 'fixed', - 'fontcolor', - 'fontsize', - 'italics', - 'link', - 'small', - 'strike', - 'sub', - 'sup', - ]; - for (var name of methodNames) { - calls = 0; - String.prototype[name].call(obj); - assertEquals(1, calls); - } -})(); - - -(function TestDeleteStringRelace() { - assertEquals('s', 's'.anchor('n')); - assertTrue(delete String.prototype.replace); - assertEquals('s', 's'.anchor('n')); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/string-includes.js b/implementation-contributed/v8/mjsunit/es6/string-includes.js deleted file mode 100644 index 60a7ddd6858..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-includes.js +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(1, String.prototype.includes.length); - -var s = 'a'; -assertFalse(s.includes(null)); -assertFalse(s.includes(undefined)); -assertFalse(s.includes()); - -var reString = "asdf[a-z]+(asdf)?"; -assertTrue(reString.includes("[a-z]+")); -assertTrue(reString.includes("(asdf)?")); - -// Random greek letters -var twoByteString = "\u039a\u0391\u03a3\u03a3\u0395"; - -// Test single char pattern -assertTrue(twoByteString.includes("\u039a"), "Lamda"); -assertTrue(twoByteString.includes("\u0391"), "Alpha"); -assertTrue(twoByteString.includes("\u03a3"), "First Sigma"); -assertTrue(twoByteString.includes("\u03a3",3), "Second Sigma"); -assertTrue(twoByteString.includes("\u0395"), "Epsilon"); -assertFalse(twoByteString.includes("\u0392"), "Not beta"); - -// Test multi-char pattern -assertTrue(twoByteString.includes("\u039a\u0391"), "lambda Alpha"); -assertTrue(twoByteString.includes("\u0391\u03a3"), "Alpha Sigma"); -assertTrue(twoByteString.includes("\u03a3\u03a3"), "Sigma Sigma"); -assertTrue(twoByteString.includes("\u03a3\u0395"), "Sigma Epsilon"); - -assertFalse(twoByteString.includes("\u0391\u03a3\u0395"), - "Not Alpha Sigma Epsilon"); - -//single char pattern -assertTrue(twoByteString.includes("\u0395")); - -assertThrows("String.prototype.includes.call(null, 'test')", TypeError); -assertThrows("String.prototype.includes.call(null, null)", TypeError); -assertThrows("String.prototype.includes.call(undefined, undefined)", TypeError); - -assertThrows("String.prototype.includes.apply(null, ['test'])", TypeError); -assertThrows("String.prototype.includes.apply(null, [null])", TypeError); -assertThrows("String.prototype.includes.apply(undefined, [undefined])", TypeError); - -var TEST_INPUT = [{ - msg: "Empty string", val: "" -}, { - msg: "Number 1234.34", val: 1234.34 -}, { - msg: "Integer number 0", val: 0 -}, { - msg: "Negative number -1", val: -1 -}, { - msg: "Boolean true", val: true -}, { - msg: "Boolean false", val: false -}, { - msg: "Empty array []", val: [] -}, { - msg: "Empty object {}", val: {} -}, { - msg: "Array of size 3", val: new Array(3) -}]; - -var i = 0; -var l = TEST_INPUT.length; - -for (; i < l; i++) { - var e = TEST_INPUT[i]; - var v = e.val; - var s = String(v); - assertTrue(s.includes(v), e.msg); - assertTrue(String.prototype.includes.call(v, v), e.msg); - assertTrue(String.prototype.includes.apply(v, [v]), e.msg); -} - -// Test cases found in FF -assertTrue("abc".includes("a")); -assertTrue("abc".includes("b")); -assertTrue("abc".includes("abc")); -assertTrue("abc".includes("bc")); -assertFalse("abc".includes("d")); -assertFalse("abc".includes("abcd")); -assertFalse("abc".includes("ac")); -assertTrue("abc".includes("abc", 0)); -assertTrue("abc".includes("bc", 0)); -assertFalse("abc".includes("de", 0)); -assertTrue("abc".includes("bc", 1)); -assertTrue("abc".includes("c", 1)); -assertFalse("abc".includes("a", 1)); -assertFalse("abc".includes("abc", 1)); -assertTrue("abc".includes("c", 2)); -assertFalse("abc".includes("d", 2)); -assertFalse("abc".includes("dcd", 2)); -assertFalse("abc".includes("a", 42)); -assertFalse("abc".includes("a", Infinity)); -assertTrue("abc".includes("ab", -43)); -assertFalse("abc".includes("cd", -42)); -assertTrue("abc".includes("ab", -Infinity)); -assertFalse("abc".includes("cd", -Infinity)); -assertTrue("abc".includes("ab", NaN)); -assertFalse("abc".includes("cd", NaN)); -assertFalse("xyzzy".includes("zy\0", 2)); - -var dots = Array(10000).join("."); -assertFalse(dots.includes("\x01", 10000)); -assertFalse(dots.includes("\0", 10000)); - -var myobj = { - toString: function () { - return "abc"; - }, - includes: String.prototype.includes -}; -assertTrue(myobj.includes("abc")); -assertFalse(myobj.includes("cd")); - -var gotStr = false; -var gotPos = false; -myobj = { - toString: function () { - assertFalse(gotPos); - gotStr = true; - return "xyz"; - }, - includes: String.prototype.includes -}; - -assertEquals("foo[a-z]+(bar)?".includes("[a-z]+"), true); -assertThrows("'foo[a-z]+(bar)?'.includes(/[a-z]+/)", TypeError); -assertThrows("'foo/[a-z]+/(bar)?'.includes(/[a-z]+/)", TypeError); -assertEquals("foo[a-z]+(bar)?".includes("(bar)?"), true); -assertThrows("'foo[a-z]+(bar)?'.includes(/(bar)?/)", TypeError); -assertThrows("'foo[a-z]+/(bar)?/'.includes(/(bar)?/)", TypeError); - -assertThrows("String.prototype.includes.call({ 'toString': function() { " + - "throw RangeError(); } }, /./)", RangeError); -assertThrows("String.prototype.includes.call({ 'toString': function() { " + - "return 'abc'; } }, /./)", TypeError); - -assertThrows("String.prototype.includes.apply({ 'toString': function() { " + - "throw RangeError(); } }, [/./])", RangeError); -assertThrows("String.prototype.includes.apply({ 'toString': function() { " + - "return 'abc'; } }, [/./])", TypeError); - -// includes does its brand checks with Symbol.match -var re = /./; -assertThrows(function() { - "".includes(re); -}, TypeError); -re[Symbol.match] = false; -assertEquals(false, "".includes(re)); diff --git a/implementation-contributed/v8/mjsunit/es6/string-iterator.js b/implementation-contributed/v8/mjsunit/es6/string-iterator.js deleted file mode 100644 index d47a03fbd6a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-iterator.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function TestStringPrototypeIterator() { - assertTrue(String.prototype.hasOwnProperty(Symbol.iterator)); - assertFalse("".hasOwnProperty(Symbol.iterator)); - assertFalse("".propertyIsEnumerable(Symbol.iterator)); -} -TestStringPrototypeIterator(); - - -function assertIteratorResult(value, done, result) { - assertEquals({value: value, done: done}, result); -} - - -function TestManualIteration() { - var string = "abc"; - var iterator = string[Symbol.iterator](); - assertIteratorResult('a', false, iterator.next()); - assertIteratorResult('b', false, iterator.next()); - assertIteratorResult('c', false, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); -} -TestManualIteration(); - - -function TestSurrogatePairs() { - var lo = "\uD834"; - var hi = "\uDF06"; - var pair = lo + hi; - var string = "abc" + pair + "def" + lo + pair + hi + lo; - var iterator = string[Symbol.iterator](); - assertIteratorResult('a', false, iterator.next()); - assertIteratorResult('b', false, iterator.next()); - assertIteratorResult('c', false, iterator.next()); - assertIteratorResult(pair, false, iterator.next()); - assertIteratorResult('d', false, iterator.next()); - assertIteratorResult('e', false, iterator.next()); - assertIteratorResult('f', false, iterator.next()); - assertIteratorResult(lo, false, iterator.next()); - assertIteratorResult(pair, false, iterator.next()); - assertIteratorResult(hi, false, iterator.next()); - assertIteratorResult(lo, false, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); - assertIteratorResult(void 0, true, iterator.next()); -} -TestSurrogatePairs(); - - -function TestStringIteratorPrototype() { - var iterator = ""[Symbol.iterator](); - var StringIteratorPrototype = iterator.__proto__; - assertFalse(StringIteratorPrototype.hasOwnProperty('constructor')); - assertEquals(StringIteratorPrototype.__proto__, Object.prototype); - assertArrayEquals(['next'], - Object.getOwnPropertyNames(StringIteratorPrototype)); - assertEquals('[object String Iterator]', "" + iterator); - assertEquals("String Iterator", StringIteratorPrototype[Symbol.toStringTag]); - var desc = Object.getOwnPropertyDescriptor( - StringIteratorPrototype, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.writable); - assertEquals("String Iterator", desc.value); -} -TestStringIteratorPrototype(); - - -function TestForOf() { - var lo = "\uD834"; - var hi = "\uDF06"; - var pair = lo + hi; - var string = "abc" + pair + "def" + lo + pair + hi + lo; - var expected = ['a', 'b', 'c', pair, 'd', 'e', 'f', lo, pair, hi, lo]; - - var i = 0; - for (var char of string) { - assertEquals(expected[i++], char); - } - - assertEquals(expected.length, i); -} -TestForOf(); - - -function TestNonOwnSlots() { - var iterator = ""[Symbol.iterator](); - var object = {__proto__: iterator}; - - assertThrows(function() { object.next(); }, TypeError); -} -TestNonOwnSlots(); - - -function TestSlicedStringRegression() { - var long_string = "abcdefhijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - var sliced_string = long_string.substring(1); - var iterator = sliced_string[Symbol.iterator](); -} -TestSlicedStringRegression(); - - -(function(){ - var str = "\uD83C\uDF1F\u5FCD\u8005\u306E\u653B\u6483\uD83C\uDF1F"; - var arr = [...str]; - assertEquals(["\uD83C\uDF1F", "\u5FCD", "\u8005", "\u306E", "\u653B", - "\u6483", "\uD83C\uDF1F"], arr); - assertEquals(7, arr.length); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/string-iterator2.js b/implementation-contributed/v8/mjsunit/es6/string-iterator2.js deleted file mode 100644 index 6bfd51a8150..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-iterator2.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -// Tests for spreading primitive strings. - -assertEquals([...''], []); - -var str = 'ott'; -assertEquals(['o', 't', 't'], [...str]); -assertTrue(%StringIteratorProtector()); - -str[Symbol.iterator] = {}; -// Symbol.iterator can't be set on primitive strings, so it shouldn't invalidate -// the protector. -assertTrue(%StringIteratorProtector()); - -// This changes the String Iterator prototype. No more tests should be run after -// this in the same instance. -var iterator = str[Symbol.iterator](); -iterator.__proto__.next = () => ({value : undefined, done : true}); - -assertFalse(%StringIteratorProtector()); -assertEquals([], [...str]); diff --git a/implementation-contributed/v8/mjsunit/es6/string-iterator3.js b/implementation-contributed/v8/mjsunit/es6/string-iterator3.js deleted file mode 100644 index 1b0e0273e56..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-iterator3.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -// Tests for primitive strings. - -var str = 'ott'; -assertTrue(%StringIteratorProtector()); -assertEquals(['o', 't', 't'], [...str]); - -// This changes the String prototype. No more tests should be run after this in -// the same instance. -str.__proto__[Symbol.iterator] = - function() { - return {next : () => ({value : undefined, done : true})}; - }; -assertFalse(%StringIteratorProtector()); -assertEquals([], [...str]); diff --git a/implementation-contributed/v8/mjsunit/es6/string-iterator4.js b/implementation-contributed/v8/mjsunit/es6/string-iterator4.js deleted file mode 100644 index 48c6521d3b2..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-iterator4.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -// Tests for wrapped strings. - -var str = new String('ott'); -assertTrue(%StringIteratorProtector()); -assertEquals(['o', 't', 't'], [...str]); - -function iterator_fn() { - return {next : () => ({value : undefined, done : true})}; -}; - -str[Symbol.iterator] = iterator_fn; -// This shouldn't invalidate the protector, because it doesn't support String -// objects. -assertTrue(%StringIteratorProtector()); -assertEquals([], [...str]); - - -var str2 = new String('ott'); -assertEquals(['o', 't', 't'], [...str2]); -// This changes the String prototype. No more tests should be run after this in -// the same instance. -str2.__proto__[Symbol.iterator] = iterator_fn; -assertFalse(%StringIteratorProtector()); -assertEquals([], [...str2]); diff --git a/implementation-contributed/v8/mjsunit/es6/string-iterator5.js b/implementation-contributed/v8/mjsunit/es6/string-iterator5.js deleted file mode 100644 index ec9754a4bd5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-iterator5.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Tests for primitive strings. - -var iterator = 'ott'[Symbol.iterator](); - -// These modifications shouldn't invalidate the String iterator protector. -iterator.__proto__.fonts = {}; -assertTrue(%StringIteratorProtector()); -iterator.__proto__[0] = 0; -assertTrue(%StringIteratorProtector()); diff --git a/implementation-contributed/v8/mjsunit/es6/string-iterator6.js b/implementation-contributed/v8/mjsunit/es6/string-iterator6.js deleted file mode 100644 index d1cd1f31eba..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-iterator6.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-stress-opt - -assertTrue(%StringIteratorProtector()); - -delete 'ott'.__proto__[Symbol.iterator]; - -assertFalse(%StringIteratorProtector()); diff --git a/implementation-contributed/v8/mjsunit/es6/string-iterator7.js b/implementation-contributed/v8/mjsunit/es6/string-iterator7.js deleted file mode 100644 index 387c6e81fc5..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-iterator7.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertTrue(%StringIteratorProtector()); - -const p = ""[Symbol.iterator]().__proto__; -let x = Object.create(p); -x.next = 42; - -assertTrue(%StringIteratorProtector()); diff --git a/implementation-contributed/v8/mjsunit/es6/string-iterator8.js b/implementation-contributed/v8/mjsunit/es6/string-iterator8.js deleted file mode 100644 index dbd4b7c46a2..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-iterator8.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertTrue(%StringIteratorProtector()); - -var proto = String.prototype; - -String.prototype = {}; - -assertEquals(proto, String.prototype); -assertTrue(%StringIteratorProtector()); diff --git a/implementation-contributed/v8/mjsunit/es6/string-match.js b/implementation-contributed/v8/mjsunit/es6/string-match.js deleted file mode 100644 index 6fb6a1d072e..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-match.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const pattern = {}; -pattern[Symbol.match] = function(string) { - return string.length; -}; -// Check object coercible fails. -assertThrows(() => String.prototype.match.call(null, pattern), - TypeError); -// Override is called. -assertEquals(5, "abcde".match(pattern)); -// Receiver is not converted to string if pattern has Symbol.match -const receiver = { toString(){ throw new Error(); }, length: 6 }; -assertEquals(6, String.prototype.match.call(receiver, pattern)); -// Non-callable override. -pattern[Symbol.match] = "dumdidum"; -assertThrows(() => "abcde".match(pattern), TypeError); - -assertEquals("[Symbol.match]", RegExp.prototype[Symbol.match].name); diff --git a/implementation-contributed/v8/mjsunit/es6/string-raw.js b/implementation-contributed/v8/mjsunit/es6/string-raw.js deleted file mode 100644 index 2c6bb2ff308..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-raw.js +++ /dev/null @@ -1,292 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testStringRawArity() { - assertEquals(1, String.raw.length); -})(); - - -(function testStringRawCallSiteToObject() { - assertThrows("String.raw()", TypeError); -})(); - - -(function testStringRawCallSiteRawToObject() { - assertThrows("String.raw([])", TypeError); -})(); - - -(function testStringRawUndefinedLength() { - var callSiteObj = []; - callSiteObj.raw = {}; - assertEquals("", String.raw(callSiteObj)); - - callSiteObj.raw = { lengt: 0 }; - assertEquals("", String.raw(callSiteObj)); -})(); - - -(function testStringRawZeroLength() { - var callSiteObj = []; - callSiteObj.raw = { length: 0 }; - assertEquals("", String.raw(callSiteObj)); - assertEquals("", String.raw(callSiteObj, "a", "b", "c")); - - callSiteObj.raw = []; - assertEquals("", String.raw(callSiteObj)); - assertEquals("", String.raw(callSiteObj, "a", "b", "c")); -})(); - - -(function testStringRawNegativeLength() { - var callSiteObj = []; - callSiteObj.raw = { length: -85 }; - assertEquals("", String.raw(callSiteObj)); - assertEquals("", String.raw(callSiteObj, "a", "b", "c")); - - callSiteObj.raw = []; - assertEquals("", String.raw(callSiteObj)); - assertEquals("", String.raw(callSiteObj, "a", "b", "c")); -})(); - - -(function testStringRawNaNLength() { - var callSiteObj = []; - callSiteObj.raw = { length: NaN }; - assertEquals("", String.raw(callSiteObj)); - assertEquals("", String.raw(callSiteObj, "a", "b", "c")); - - callSiteObj.raw = []; - assertEquals("", String.raw(callSiteObj)); - assertEquals("", String.raw(callSiteObj, "a", "b", "c")); -})(); - - -(function testStringRawBasic() { - var callSiteObj = []; - callSiteObj.raw = ["a"]; - assertEquals("a", String.raw(callSiteObj)); -})(); - - -(function testStringRawNoSubst() { - var callSiteObj = []; - callSiteObj.raw = ["a", "b"]; - assertEquals("ab", String.raw(callSiteObj)); -})(); - - -(function testStringRawSubst() { - var callSiteObj = []; - callSiteObj.raw = ["a", "b"]; - assertEquals("a!b", String.raw(callSiteObj, "!")); - - callSiteObj.raw = ["a", "b", "c"]; - assertEquals("abc", String.raw(callSiteObj)); - - callSiteObj.raw = ["a", "b", "c"]; - assertEquals("a!bc", String.raw(callSiteObj, "!")); - - callSiteObj.raw = ["a", "b", "c"]; - assertEquals("a!b?c", String.raw(callSiteObj, "!", "?")); - - callSiteObj.raw = ["\n", "\r\n", "\r"]; - assertEquals("\nx\r\ny\r", String.raw(callSiteObj, "x", "y")); - - callSiteObj.raw = ["\n", "\r\n", "\r"]; - assertEquals("\n\r\r\r\n\n\r", String.raw(callSiteObj, "\r\r", "\n")); -})(); - - -(function testStringRawArrayLikeSubst() { - var callSiteObj = []; - callSiteObj.raw = {"length": 2, "0": "a", "1": "b", "2": "c"}; - assertEquals("axb", String.raw(callSiteObj, "x", "y")); - - callSiteObj.raw = {"length": 4, "0": "a", "1": "b", "2": "c"}; - assertEquals("axbycundefined", String.raw(callSiteObj, "x", "y")); -})(); - - -(function testStringRawAccessors() { - var callSiteObj = {}; - callSiteObj.raw = {}; - Object.defineProperties(callSiteObj, { - "length": { - get: function() { assertUnreachable(); }, - set: function(v) { assertUnreachable(); } - }, - "0": { - get: function() { assertUnreachable(); }, - set: function(v) { assertUnreachable(); } - }, - "1": { - get: function() { assertUnreachable(); }, - set: function(v) { assertUnreachable(); } - } - }); - Object.defineProperties(callSiteObj.raw, { - "length": { - get: function() { return 2; }, - set: function(v) { assertUnreachable(); } - }, - "0": { - get: function() { return "getter values"; }, - set: function(v) { assertUnreachable(); } - }, - "1": { - get: function() { return "are nice"; }, - set: function(v) { assertUnreachable(); } - } - }); - assertEquals("getter values are nice", String.raw(callSiteObj, " ")); -})(); - - -(function testStringRawHoleyArray() { - var callSiteObj = []; - callSiteObj.raw = ["1."]; - callSiteObj.raw[2] = ".2"; - assertEquals("1.undefined.2", String.raw(callSiteObj)); -})(); - - -(function testStringRawAccessorThrows() { - var callSiteObj = []; - callSiteObj.raw = [1]; - function MyError() {} - Object.defineProperty(callSiteObj.raw, "0", { - get: function() { throw new MyError(); } - }); - assertThrows(function() { String.raw(callSiteObj); }, MyError); -})(); - - -(function testStringRawToStringSafe() { - var callSiteObj = []; - callSiteObj.raw = [null, undefined, 1, "str", true, false, NaN, Infinity, {}]; - assertEquals("nullundefined1strtruefalseNaNInfinity[object Object]", - String.raw(callSiteObj)); - - callSiteObj.raw = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; - assertEquals("0null1undefined213str4true5false6NaN7Infinity8[object Object]9", - String.raw(callSiteObj, null, void 0, 1, "str", true, false, - NaN, Infinity, {})); -})(); - - -(function testStringRawToStringSymbolThrows() { - var callSiteObj = []; - callSiteObj.raw = [Symbol("foo")]; - assertThrows(function() { - String.raw(callSiteObj); - }, TypeError); - - callSiteObj.raw = ["1", "2"]; - assertThrows(function() { - String.raw(callSiteObj, Symbol("foo")); - }, TypeError); -})(); - - -(function testStringRawToStringThrows() { - var callSiteObj = []; - var thrower = {}; - function MyError() {} - thrower.toString = function() { - throw new MyError(); - } - - callSiteObj.raw = [thrower]; - assertThrows(function() { - String.raw(callSiteObj); - }, MyError); - - callSiteObj.raw = ["1", "2"]; - assertThrows(function() { - String.raw(callSiteObj, thrower); - }, MyError); -})(); - - -(function testStringRawToStringValueOfThrows() { - var callSiteObj = []; - var thrower = {}; - function MyError() {} - thrower.toString = null; - thrower.valueOf = function() { - throw new MyError(); - } - - callSiteObj.raw = [thrower]; - assertThrows(function() { - String.raw(callSiteObj); - }, MyError); - - callSiteObj.raw = ["1", "2"]; - assertThrows(function() { - String.raw(callSiteObj, thrower); - }, MyError); -})(); - - -(function testStringRawOrder() { - var order = []; - var callSiteObj = []; - callSiteObj.raw = {}; - function arg(v) { - var result = {}; - result.toString = null; - result.valueOf = function() { order.push("arg" + v); return v; } - return result; - } - - Object.defineProperty(callSiteObj.raw, "length", { - get: function() { order.push("length"); return 3; } - }); - [1, 3, 5].forEach(function(v, i) { - Object.defineProperty(callSiteObj.raw, i, { - get: function() { order.push("raw" + v); return v; } - }); - }); - - assertEquals("12345", String.raw(callSiteObj, arg(2), arg(4), arg(6))); - assertEquals(["length", "raw1", "arg2", "raw3", "arg4", "raw5"], order); -})(); - - -(function testStringRawToStringSubstitutionsOrder() { - var subs = []; - var log = []; - function stringify(toString) { - var valueOf = "_" + toString + "_"; - return { - toString: function() { return toString; }, - valueOf: function() { return valueOf; } - }; - } - function getter(name, value) { - return { - get: function() { - log.push("get" + name); - return value; - }, - set: function(v) { - log.push("set" + name); - } - }; - } - Object.defineProperties(subs, { - 0: getter(0, stringify("a")), - 1: getter(1, stringify("b")), - 2: getter(2, stringify("c")) - }); - - assertEquals("-a-b-c-", String.raw`-${subs[0]}-${subs[1]}-${subs[2]}-`); - assertArrayEquals(["get0", "get1", "get2"], log); - - log.length = 0; - assertEquals("-a-", String.raw`-${subs[0]}-`); - assertArrayEquals(["get0"], log); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/string-repeat.js b/implementation-contributed/v8/mjsunit/es6/string-repeat.js deleted file mode 100644 index 3649c5b09be..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-repeat.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals("000", String.prototype.repeat.call(0, 3)); -assertEquals("-1-1-1", String.prototype.repeat.call(-1, 3)); -assertEquals("2.12.12.1", String.prototype.repeat.call(2.1, 3)); -assertEquals("", String.prototype.repeat.call([], 3)); -assertEquals("1,2,3", String.prototype.repeat.call([1, 2, 3], 1)); -assertEquals("true", String.prototype.repeat.call(true, 1)); -assertEquals("false", String.prototype.repeat.call(false, 1)); -assertEquals("[object Object]", String.prototype.repeat.call({}, 1)); - -assertEquals("000", String.prototype.repeat.apply(0, [3])); -assertEquals("-1-1-1", String.prototype.repeat.apply(-1, [3])); -assertEquals("2.12.12.1", String.prototype.repeat.apply(2.1, [3])); -assertEquals("", String.prototype.repeat.apply([], [3])); -assertEquals("1,2,3", String.prototype.repeat.apply([1, 2, 3], [1])); -assertEquals("true", String.prototype.repeat.apply(true, [1])); -assertEquals("false", String.prototype.repeat.apply(false, [1])); -assertEquals("[object Object]", String.prototype.repeat.apply({}, [1])); - -assertEquals("\u10D8\u10D8\u10D8", "\u10D8".repeat(3)); - -assertThrows('String.prototype.repeat.call(null, 1)', TypeError); -assertThrows('String.prototype.repeat.call(undefined, 1)', TypeError); -assertThrows('String.prototype.repeat.apply(null, [1])', TypeError); -assertThrows('String.prototype.repeat.apply(undefined, [1])', TypeError); - -// Test cases found in FF -assertEquals("abc", "abc".repeat(1)); -assertEquals("abcabc", "abc".repeat(2)); -assertEquals("abcabcabc", "abc".repeat(3)); -assertEquals("aaaaaaaaaa", "a".repeat(10)); -assertEquals("", "".repeat(5)); -assertEquals("", "abc".repeat(0)); -assertEquals("abcabc", "abc".repeat(2.0)); - -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "a".repeat(37)); -assertEquals("", "a".repeat(NaN)); -assertThrows('"a".repeat(-1)', RangeError); -assertThrows('"a".repeat(Number.POSITIVE_INFINITY)', RangeError); -assertThrows('"a".repeat(Number.NEGATIVE_INFINITY)', RangeError); -assertThrows('"a".repeat(Math.pow(2, 30))', RangeError); -assertThrows('"a".repeat(Math.pow(2, 40))', RangeError); -assertThrows('"a".repeat(-Math.pow(2, 40))', RangeError); - -// Handling empty strings -assertThrows('"".repeat(-1)', RangeError); -assertThrows('"".repeat(Number.POSITIVE_INFINITY)', RangeError); -assertThrows('"".repeat(Number.NEGATIVE_INFINITY)', RangeError); -assertThrows('"a".repeat(-Math.pow(2, 40))', RangeError); -assertEquals("", "".repeat(Math.pow(2, 30))); -assertEquals("", "".repeat(Math.pow(2, 40))); - -var myobj = { - toString: function() { - return "abc"; - }, - repeat : String.prototype.repeat -}; -assertEquals("abc", myobj.repeat(1)); -assertEquals("abcabc", myobj.repeat(2)); diff --git a/implementation-contributed/v8/mjsunit/es6/string-replace.js b/implementation-contributed/v8/mjsunit/es6/string-replace.js deleted file mode 100644 index 16cadc5369f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-replace.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var pattern = { - [Symbol.replace]: (string, newValue) => string + newValue, - toString: () => "c" -}; -// Check object coercible fails. -assertThrows(() => String.prototype.replace.call(null, pattern, "x"), - TypeError); -// Override is called. -assertEquals("abcdex", "abcde".replace(pattern, "x")); -// Non-callable override. -pattern[Symbol.replace] = "dumdidum"; -assertThrows(() => "abcde".replace(pattern, "x"), TypeError); -// Null override. -pattern[Symbol.replace] = null; -assertEquals("abXde", "abcde".replace(pattern, "X")); - -assertEquals("[Symbol.replace]", RegExp.prototype[Symbol.replace].name); diff --git a/implementation-contributed/v8/mjsunit/es6/string-search.js b/implementation-contributed/v8/mjsunit/es6/string-search.js deleted file mode 100644 index aa7105724bf..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-search.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const pattern = {}; -pattern[Symbol.search] = function(string) { - return string.length; -}; -// Check object coercible fails. -assertThrows(() => String.prototype.search.call(null, pattern), - TypeError); -// Override is called. -assertEquals(5, "abcde".search(pattern)); -// Receiver is not converted to string if pattern has Symbol.match -const receiver = { toString(){ throw new Error(); }, length: 6 }; -assertEquals(6, String.prototype.search.call(receiver, pattern)); -// Non-callable override. -pattern[Symbol.search] = "dumdidum"; -assertThrows(() => "abcde".search(pattern), TypeError); - -assertEquals("[Symbol.search]", RegExp.prototype[Symbol.search].name); diff --git a/implementation-contributed/v8/mjsunit/es6/string-split.js b/implementation-contributed/v8/mjsunit/es6/string-split.js deleted file mode 100644 index c21f9d3d947..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-split.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var pattern = {toString: () => ""}; -var limit = { value: 3 }; -pattern[Symbol.split] = function(string, limit) { - return string.length * limit.value; -}; -// Check object coercible fails. -assertThrows(() => String.prototype.split.call(null, pattern, limit), - TypeError); -// Override is called. -assertEquals(15, "abcde".split(pattern, limit)); -// Non-callable override. -pattern[Symbol.split] = "dumdidum"; -assertThrows(() => "abcde".split(pattern, limit), TypeError); -// Null override. -pattern[Symbol.split] = null; -assertEquals(["a", "b", "c", "d", "e"], "abcde".split(pattern)); - -assertEquals("[Symbol.split]", RegExp.prototype[Symbol.split].name); diff --git a/implementation-contributed/v8/mjsunit/es6/string-startswith.js b/implementation-contributed/v8/mjsunit/es6/string-startswith.js deleted file mode 100644 index 9f4f5838c00..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/string-startswith.js +++ /dev/null @@ -1,411 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -assertFalse("abc".startsWith("a", Infinity)); - -assertEquals(1, String.prototype.startsWith.length); - -var testString = "Hello World"; -assertTrue(testString.startsWith("")); -assertTrue(testString.startsWith("Hello")); -assertFalse(testString.startsWith("hello")); -assertFalse(testString.startsWith("Hello World!")); -assertFalse(testString.startsWith(null)); -assertFalse(testString.startsWith(undefined)); -assertFalse(testString.startsWith()); - -assertTrue("null".startsWith(null)); -assertTrue("undefined".startsWith(undefined)); - -var georgianUnicodeString = "\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7"; -assertTrue(georgianUnicodeString.startsWith(georgianUnicodeString)); -assertTrue(georgianUnicodeString.startsWith("\u10D0\u10D1\u10D2")); -assertFalse(georgianUnicodeString.startsWith("\u10D8")); - -assertThrows("String.prototype.startsWith.call(null, 'test')", TypeError); -assertThrows("String.prototype.startsWith.call(null, null)", TypeError); -assertThrows("String.prototype.startsWith.call(undefined, undefined)", TypeError); - -assertThrows("String.prototype.startsWith.apply(null, ['test'])", TypeError); -assertThrows("String.prototype.startsWith.apply(null, [null])", TypeError); -assertThrows("String.prototype.startsWith.apply(undefined, [undefined])", TypeError); - -var TEST_INPUT = [{ - msg: "Empty string", val: "" -}, { - msg: "Number 1234.34", val: 1234.34 -}, { - msg: "Integer number 0", val: 0 -}, { - msg: "Negative number -1", val: -1 -}, { - msg: "Boolean true", val: true -}, { - msg: "Boolean false", val: false -}, { - msg: "Empty array []", val: [] -}, { - msg: "Empty object {}", val: {} -}, { - msg: "Array of size 3", val: new Array(3) -}]; - -function testNonStringValues() { - var i = 0; - var l = TEST_INPUT.length; - - for (; i < l; i++) { - var e = TEST_INPUT[i]; - var v = e.val; - var s = String(v); - assertTrue(s.startsWith(v), e.msg); - assertTrue(String.prototype.startsWith.call(v, v), e.msg); - assertTrue(String.prototype.startsWith.apply(v, [v]), e.msg); - } -} -testNonStringValues(); - -var CustomType = function(value) { - this.startsWith = String.prototype.startsWith; - this.toString = function() { - return String(value); - } -}; - -function testCutomType() { - var i = 0; - var l = TEST_INPUT.length; - - for (; i < l; i++) { - var e = TEST_INPUT[i]; - var v = e.val; - var o = new CustomType(v); - assertTrue(o.startsWith(v), e.msg); - } -} -testCutomType(); - -// Test cases found in FF -assertTrue("abc".startsWith("abc")); -assertTrue("abcd".startsWith("abc")); -assertTrue("abc".startsWith("a")); -assertFalse("abc".startsWith("abcd")); -assertFalse("abc".startsWith("bcde")); -assertFalse("abc".startsWith("b")); -assertTrue("abc".startsWith("abc", 0)); -assertFalse("abc".startsWith("bc", 0)); -assertTrue("abc".startsWith("bc", 1)); -assertFalse("abc".startsWith("c", 1)); -assertFalse("abc".startsWith("abc", 1)); -assertTrue("abc".startsWith("c", 2)); -assertFalse("abc".startsWith("d", 2)); -assertFalse("abc".startsWith("dcd", 2)); -assertFalse("abc".startsWith("a", 42)); -assertFalse("abc".startsWith("a", Infinity)); -assertTrue("abc".startsWith("a", NaN)); -assertFalse("abc".startsWith("b", NaN)); -assertTrue("abc".startsWith("ab", -43)); -assertTrue("abc".startsWith("ab", -Infinity)); -assertFalse("abc".startsWith("bc", -42)); -assertFalse("abc".startsWith("bc", -Infinity)); - -// Test cases taken from -// https://github.com/mathiasbynens/String.prototype.startsWith/blob/master/tests/tests.js -Object.prototype[1] = 2; // try to break `arguments[1]` - -assertEquals(String.prototype.startsWith.length, 1); -assertEquals(String.prototype.propertyIsEnumerable("startsWith"), false); - -assertEquals("undefined".startsWith(), true); -assertEquals("undefined".startsWith(undefined), true); -assertEquals("undefined".startsWith(null), false); -assertEquals("null".startsWith(), false); -assertEquals("null".startsWith(undefined), false); -assertEquals("null".startsWith(null), true); - -assertEquals("abc".startsWith(), false); -assertEquals("abc".startsWith(""), true); -assertEquals("abc".startsWith("\0"), false); -assertEquals("abc".startsWith("a"), true); -assertEquals("abc".startsWith("b"), false); -assertEquals("abc".startsWith("ab"), true); -assertEquals("abc".startsWith("bc"), false); -assertEquals("abc".startsWith("abc"), true); -assertEquals("abc".startsWith("bcd"), false); -assertEquals("abc".startsWith("abcd"), false); -assertEquals("abc".startsWith("bcde"), false); - -assertEquals("abc".startsWith("", NaN), true); -assertEquals("abc".startsWith("\0", NaN), false); -assertEquals("abc".startsWith("a", NaN), true); -assertEquals("abc".startsWith("b", NaN), false); -assertEquals("abc".startsWith("ab", NaN), true); -assertEquals("abc".startsWith("bc", NaN), false); -assertEquals("abc".startsWith("abc", NaN), true); -assertEquals("abc".startsWith("bcd", NaN), false); -assertEquals("abc".startsWith("abcd", NaN), false); -assertEquals("abc".startsWith("bcde", NaN), false); - -assertEquals("abc".startsWith("", false), true); -assertEquals("abc".startsWith("\0", false), false); -assertEquals("abc".startsWith("a", false), true); -assertEquals("abc".startsWith("b", false), false); -assertEquals("abc".startsWith("ab", false), true); -assertEquals("abc".startsWith("bc", false), false); -assertEquals("abc".startsWith("abc", false), true); -assertEquals("abc".startsWith("bcd", false), false); -assertEquals("abc".startsWith("abcd", false), false); -assertEquals("abc".startsWith("bcde", false), false); - -assertEquals("abc".startsWith("", undefined), true); -assertEquals("abc".startsWith("\0", undefined), false); -assertEquals("abc".startsWith("a", undefined), true); -assertEquals("abc".startsWith("b", undefined), false); -assertEquals("abc".startsWith("ab", undefined), true); -assertEquals("abc".startsWith("bc", undefined), false); -assertEquals("abc".startsWith("abc", undefined), true); -assertEquals("abc".startsWith("bcd", undefined), false); -assertEquals("abc".startsWith("abcd", undefined), false); -assertEquals("abc".startsWith("bcde", undefined), false); - -assertEquals("abc".startsWith("", null), true); -assertEquals("abc".startsWith("\0", null), false); -assertEquals("abc".startsWith("a", null), true); -assertEquals("abc".startsWith("b", null), false); -assertEquals("abc".startsWith("ab", null), true); -assertEquals("abc".startsWith("bc", null), false); -assertEquals("abc".startsWith("abc", null), true); -assertEquals("abc".startsWith("bcd", null), false); -assertEquals("abc".startsWith("abcd", null), false); -assertEquals("abc".startsWith("bcde", null), false); - -assertEquals("abc".startsWith("", -Infinity), true); -assertEquals("abc".startsWith("\0", -Infinity), false); -assertEquals("abc".startsWith("a", -Infinity), true); -assertEquals("abc".startsWith("b", -Infinity), false); -assertEquals("abc".startsWith("ab", -Infinity), true); -assertEquals("abc".startsWith("bc", -Infinity), false); -assertEquals("abc".startsWith("abc", -Infinity), true); -assertEquals("abc".startsWith("bcd", -Infinity), false); -assertEquals("abc".startsWith("abcd", -Infinity), false); -assertEquals("abc".startsWith("bcde", -Infinity), false); - -assertEquals("abc".startsWith("", -1), true); -assertEquals("abc".startsWith("\0", -1), false); -assertEquals("abc".startsWith("a", -1), true); -assertEquals("abc".startsWith("b", -1), false); -assertEquals("abc".startsWith("ab", -1), true); -assertEquals("abc".startsWith("bc", -1), false); -assertEquals("abc".startsWith("abc", -1), true); -assertEquals("abc".startsWith("bcd", -1), false); -assertEquals("abc".startsWith("abcd", -1), false); -assertEquals("abc".startsWith("bcde", -1), false); - -assertEquals("abc".startsWith("", -0), true); -assertEquals("abc".startsWith("\0", -0), false); -assertEquals("abc".startsWith("a", -0), true); -assertEquals("abc".startsWith("b", -0), false); -assertEquals("abc".startsWith("ab", -0), true); -assertEquals("abc".startsWith("bc", -0), false); -assertEquals("abc".startsWith("abc", -0), true); -assertEquals("abc".startsWith("bcd", -0), false); -assertEquals("abc".startsWith("abcd", -0), false); -assertEquals("abc".startsWith("bcde", -0), false); - -assertEquals("abc".startsWith("", +0), true); -assertEquals("abc".startsWith("\0", +0), false); -assertEquals("abc".startsWith("a", +0), true); -assertEquals("abc".startsWith("b", +0), false); -assertEquals("abc".startsWith("ab", +0), true); -assertEquals("abc".startsWith("bc", +0), false); -assertEquals("abc".startsWith("abc", +0), true); -assertEquals("abc".startsWith("bcd", +0), false); -assertEquals("abc".startsWith("abcd", +0), false); -assertEquals("abc".startsWith("bcde", +0), false); - -assertEquals("abc".startsWith("", 1), true); -assertEquals("abc".startsWith("\0", 1), false); -assertEquals("abc".startsWith("a", 1), false); -assertEquals("abc".startsWith("b", 1), true); -assertEquals("abc".startsWith("ab", 1), false); -assertEquals("abc".startsWith("bc", 1), true); -assertEquals("abc".startsWith("abc", 1), false); -assertEquals("abc".startsWith("bcd", 1), false); -assertEquals("abc".startsWith("abcd", 1), false); -assertEquals("abc".startsWith("bcde", 1), false); - -assertEquals("abc".startsWith("", +Infinity), true); -assertEquals("abc".startsWith("\0", +Infinity), false); -assertEquals("abc".startsWith("a", +Infinity), false); -assertEquals("abc".startsWith("b", +Infinity), false); -assertEquals("abc".startsWith("ab", +Infinity), false); -assertEquals("abc".startsWith("bc", +Infinity), false); -assertEquals("abc".startsWith("abc", +Infinity), false); -assertEquals("abc".startsWith("bcd", +Infinity), false); -assertEquals("abc".startsWith("abcd", +Infinity), false); -assertEquals("abc".startsWith("bcde", +Infinity), false); - -assertEquals("abc".startsWith("", true), true); -assertEquals("abc".startsWith("\0", true), false); -assertEquals("abc".startsWith("a", true), false); -assertEquals("abc".startsWith("b", true), true); -assertEquals("abc".startsWith("ab", true), false); -assertEquals("abc".startsWith("bc", true), true); -assertEquals("abc".startsWith("abc", true), false); -assertEquals("abc".startsWith("bcd", true), false); -assertEquals("abc".startsWith("abcd", true), false); -assertEquals("abc".startsWith("bcde", true), false); - -assertEquals("abc".startsWith("", "x"), true); -assertEquals("abc".startsWith("\0", "x"), false); -assertEquals("abc".startsWith("a", "x"), true); -assertEquals("abc".startsWith("b", "x"), false); -assertEquals("abc".startsWith("ab", "x"), true); -assertEquals("abc".startsWith("bc", "x"), false); -assertEquals("abc".startsWith("abc", "x"), true); -assertEquals("abc".startsWith("bcd", "x"), false); -assertEquals("abc".startsWith("abcd", "x"), false); -assertEquals("abc".startsWith("bcde", "x"), false); - -assertEquals("[a-z]+(bar)?".startsWith("[a-z]+"), true); -assertThrows(function() { "[a-z]+(bar)?".startsWith(/[a-z]+/); }, TypeError); -assertEquals("[a-z]+(bar)?".startsWith("(bar)?", 6), true); -assertThrows(function() { "[a-z]+(bar)?".startsWith(/(bar)?/); }, TypeError); -assertThrows(function() { "[a-z]+/(bar)?/".startsWith(/(bar)?/); }, TypeError); - -// http://mathiasbynens.be/notes/javascript-unicode#poo-test -var string = "I\xF1t\xEBrn\xE2ti\xF4n\xE0liz\xE6ti\xF8n\u2603\uD83D\uDCA9"; -assertEquals(string.startsWith(""), true); -assertEquals(string.startsWith("\xF1t\xEBr"), false); -assertEquals(string.startsWith("\xF1t\xEBr", 1), true); -assertEquals(string.startsWith("\xE0liz\xE6"), false); -assertEquals(string.startsWith("\xE0liz\xE6", 11), true); -assertEquals(string.startsWith("\xF8n\u2603\uD83D\uDCA9"), false); -assertEquals(string.startsWith("\xF8n\u2603\uD83D\uDCA9", 18), true); -assertEquals(string.startsWith("\u2603"), false); -assertEquals(string.startsWith("\u2603", 20), true); -assertEquals(string.startsWith("\uD83D\uDCA9"), false); -assertEquals(string.startsWith("\uD83D\uDCA9", 21), true); - -assertThrows(function() { - String.prototype.startsWith.call(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.call(undefined, "b"); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.call(undefined, "b", 4); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.call(null); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.call(null, "b"); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.call(null, "b", 4); -}, TypeError); -assertEquals(String.prototype.startsWith.call(42, "2"), false); -assertEquals(String.prototype.startsWith.call(42, "4"), true); -assertEquals(String.prototype.startsWith.call(42, "b", 4), false); -assertEquals(String.prototype.startsWith.call(42, "2", 1), true); -assertEquals(String.prototype.startsWith.call(42, "2", 4), false); -assertEquals(String.prototype.startsWith.call({ - "toString": function() { return "abc"; } -}, "b", 0), false); -assertEquals(String.prototype.startsWith.call({ - "toString": function() { return "abc"; } -}, "b", 1), true); -assertEquals(String.prototype.startsWith.call({ - "toString": function() { return "abc"; } -}, "b", 2), false); -assertThrows(function() { - String.prototype.startsWith.call({ - "toString": function() { throw RangeError(); } - }, /./); -}, RangeError); -assertThrows(function() { - String.prototype.startsWith.call({ - "toString": function() { return "abc"; } - }, /./); -}, TypeError); - -assertThrows(function() { - String.prototype.startsWith.apply(undefined); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.apply(undefined, ["b"]); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.apply(undefined, ["b", 4]); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.apply(null); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.apply(null, ["b"]); -}, TypeError); -assertThrows(function() { - String.prototype.startsWith.apply(null, ["b", 4]); -}, TypeError); -assertEquals(String.prototype.startsWith.apply(42, ["2"]), false); -assertEquals(String.prototype.startsWith.apply(42, ["4"]), true); -assertEquals(String.prototype.startsWith.apply(42, ["b", 4]), false); -assertEquals(String.prototype.startsWith.apply(42, ["2", 1]), true); -assertEquals(String.prototype.startsWith.apply(42, ["2", 4]), false); -assertEquals(String.prototype.startsWith.apply({ - "toString": function() { - return "abc"; - } -}, ["b", 0]), false); -assertEquals(String.prototype.startsWith.apply({ - "toString": function() { - return "abc"; - } -}, ["b", 1]), true); -assertEquals(String.prototype.startsWith.apply({ - "toString": function() { - return "abc"; - } -}, ["b", 2]), false); -assertThrows(function() { - String.prototype.startsWith.apply({ - "toString": function() { throw RangeError(); } - }, [/./]); -}, RangeError); -assertThrows(function() { - String.prototype.startsWith.apply({ - "toString": function() { return "abc"; } - }, [/./]); -}, TypeError); - -// startsWith does its brand checks with Symbol.match -var re = /./; -assertThrows(function() { - "".startsWith(re); -}, TypeError); -re[Symbol.match] = false; -assertEquals(false, "".startsWith(re)); diff --git a/implementation-contributed/v8/mjsunit/es6/super-with-spread-modify-array-iterator.js b/implementation-contributed/v8/mjsunit/es6/super-with-spread-modify-array-iterator.js deleted file mode 100644 index c1311af81fb..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/super-with-spread-modify-array-iterator.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function modifyArrayIterator() { - 'use strict'; - - class Point { - constructor(x, y) { - this.x = x; - this.y = y; - } - } - - class RestPoint extends Point { - constructor(...args) { - super(...args); - } - } - - function testRestPoint(x, y) { - return new RestPoint(x, y); - } - testRestPoint(1, 2); - testRestPoint(1, 2); - %OptimizeFunctionOnNextCall(testRestPoint); - var r = testRestPoint(1, 2); - - assertInstanceof(r, RestPoint); - assertInstanceof(r, Point); - assertEquals(1, r.x); - assertEquals(2, r.y); - - Object.defineProperty(Array.prototype, Symbol.iterator, { - value: function* - () { - yield 3; - yield 4; - }, - configurable: true - }); - - var r2 = testRestPoint(1, 2); - - assertInstanceof(r2, RestPoint); - assertInstanceof(r2, Point); - assertEquals(3, r2.x); - assertEquals(4, r2.y); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/super-with-spread-modify-next.js b/implementation-contributed/v8/mjsunit/es6/super-with-spread-modify-next.js deleted file mode 100644 index cd7798b8d16..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/super-with-spread-modify-next.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function modifyNext() { - 'use strict'; - - class Point { - constructor(x, y) { - this.x = x; - this.y = y; - } - } - - class ArgumentsPoint extends Point { - constructor() { - super(...arguments); - } - } - - var a = []; - var ai = a[Symbol.iterator](); - - var original_next = ai.__proto__['next']; - - function testArgumentsPoint(x, y) { - return new ArgumentsPoint(x, y); - } - testArgumentsPoint(1, 2); - testArgumentsPoint(1, 2); - %OptimizeFunctionOnNextCall(testArgumentsPoint); - var r = testArgumentsPoint(1, 2); - - assertInstanceof(r, ArgumentsPoint); - assertInstanceof(r, Point); - assertEquals(r.x, 1); - assertEquals(r.y, 2); - - var called = 0; - Object.defineProperty(ai.__proto__, 'next', { - get: function() { - called++; - return original_next; - } - }); - - var r2 = testArgumentsPoint(1, 2); - - // .next() is only loaded once during the iteration prologue (see - // https://github.com/tc39/ecma262/pull/988/ and v8:6861) - assertEquals(1, called); - assertInstanceof(r2, ArgumentsPoint); - assertInstanceof(r2, Point); - assertEquals(r2.x, 1); - assertEquals(r2.y, 2); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/super-with-spread.js b/implementation-contributed/v8/mjsunit/es6/super-with-spread.js deleted file mode 100644 index b0aea826d48..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/super-with-spread.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - 'use strict'; - - class Point { - constructor(x, y) { - this.x = x; - this.y = y; - } - } - - function testBaselineAndOpt(func) { - func(1, 2); - func(1, 2); - %OptimizeFunctionOnNextCall(func); - return func(1, 2); - } - - class RestPoint extends Point { - constructor(...args) { - super(...args); - } - } - var r = testBaselineAndOpt(function(x, y) { - return new RestPoint(x, y); - }); - assertInstanceof(r, RestPoint); - assertInstanceof(r, Point); - assertEquals(r.x, 1); - assertEquals(r.y, 2); - - class RestExtraPoint extends Point { - constructor(...args) { - super(-1, 0, ...args); - } - } - r = testBaselineAndOpt(function(x, y) { - return new RestExtraPoint(x, y); - }); - assertInstanceof(r, RestExtraPoint); - assertInstanceof(r, Point); - assertEquals(r.x, -1); - assertEquals(r.y, 0); - - class ArgumentsPoint extends Point { - constructor() { - super(...arguments); - } - } - r = testBaselineAndOpt(function(x, y) { - return new ArgumentsPoint(x, y); - }); - assertInstanceof(r, ArgumentsPoint); - assertInstanceof(r, Point); - assertEquals(r.x, 1); - assertEquals(r.y, 2); - - class ArgumentsExtraPoint extends Point { - constructor() { - super(1, 2, ...arguments); - } - } - r = testBaselineAndOpt(function(x, y) { - return new ArgumentsExtraPoint(x, y); - }); - assertInstanceof(r, ArgumentsExtraPoint); - assertInstanceof(r, Point); - assertEquals(r.x, 1); - assertEquals(r.y, 2); - - class LiteralPoint extends Point { - constructor() { - super(...[3, 4]); - } - } - r = testBaselineAndOpt(function(x, y) { - return new LiteralPoint(x, y); - }); - assertInstanceof(r, LiteralPoint); - assertInstanceof(r, Point); - assertEquals(r.x, 3); - assertEquals(r.y, 4); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/super.js b/implementation-contributed/v8/mjsunit/es6/super.js deleted file mode 100644 index a101ea896b0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/super.js +++ /dev/null @@ -1,2247 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestSuperNamedLoads() { - function Base() { } - function fBase() { } - Base.prototype = { - f() { - return "Base " + this.toString(); - }, - x: 15, - toString() { - return "this is Base"; - } - }; - - function Derived() { - this.derivedDataProperty = "xxx"; - } - Derived.prototype = { - __proto__: Base.prototype, - toString() { return "this is Derived"; }, - x: 27, - f() { - assertEquals("Base this is Derived", super.f()); - var a = super.x; - assertEquals(15, a); - assertEquals(15, super.x); - assertEquals(27, this.x); - return "Derived"; - } - }; - - assertEquals("Base this is Base", new Base().f()); - assertEquals("Derived", new Derived().f()); -}()); - - -(function TestSuperKeyedLoads() { - 'use strict'; - - var x = 'x'; - var derivedDataProperty = 'derivedDataProperty'; - var f = 'f'; - - class Base { - f() { - return "Base " + this.toString(); - } - toString() { - return "this is Base"; - } - } - - Base.prototype[x] = 15; - - function Derived() { - this[derivedDataProperty] = "xxx"; - } - Derived.prototype = { - __proto__: Base.prototype, - toString() { return "this is Derived"; }, - x: 27, - f() { - assertEquals("Base this is Derived", super[f]()); - var a = super[x]; - assertEquals(15, a); - assertEquals(15, super[x]); - assertEquals(27, this[x]); - return "Derived"; - } - }; - - assertEquals("Base this is Base", new Base().f()); - assertEquals("Derived", new Derived().f()); -}()); - - -(function TestSuperKeywordNonMethod() { - 'use strict'; - - class C { - f() { - super.unknown(); - } - } - - assertThrows(function() { - new C().f(); - }, TypeError); -}()); - - -(function TestGetter() { - function Base() {} - var derived; - Base.prototype = { - constructor: Base, - get x() { - assertSame(this, derived); - return this._x; - }, - _x: 'base' - }; - - function Derived() {} - Derived.__proto__ = Base; - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - _x: 'derived', - testGetter() { - return super.x; - }, - testGetterStrict() { - 'use strict'; - return super.x; - } - }; - - derived = new Derived(); - assertEquals('derived', derived.testGetter()); - derived = new Derived(); - assertEquals('derived', derived.testGetterStrict()); -}()); - - -(function TestGetterKeyed() { - var x = 'x'; - function Base() {} - var derived; - Base.prototype = { - constructor: Base, - get x() { - assertSame(this, derived); - return this._x; - }, - _x: 'base' - }; - - function Derived() {} - Derived.__proto__ = Base; - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - _x: 'derived', - testGetter() { - return super[x]; - }, - testGetterStrict() { - 'use strict'; - return super[x]; - }, - testGetterWithToString() { - var toStringCalled; - var o = { toString: function() { - toStringCalled++; - return 'x'; - } }; - - toStringCalled = 0; - assertEquals('derived', super[o]); - assertEquals(1, toStringCalled); - - var eToThrow = new Error(); - var oThrowsInToString = { toString: function() { - throw eToThrow; - } }; - - var ex = null; - try { - super[oThrowsInToString]; - } catch(e) { ex = e } - assertEquals(eToThrow, ex); - - var oReturnsNumericString = { toString: function() { - return "1"; - } }; - - assertEquals(undefined, super[oReturnsNumericString]); - assertEquals(undefined, super[1]); - } - }; - - derived = new Derived(); - assertEquals('derived', derived.testGetter()); - derived = new Derived(); - assertEquals('derived', derived.testGetterStrict()); - derived = new Derived(); - derived.testGetterWithToString(); -}()); - - -(function TestGetterNumericKeyed() { - var x = 42; - function Base() {} - var derived; - Base.prototype = { - constructor: Base, - _x: 'base' - }; - - Object.defineProperty(Base.prototype, x, { get: function() { - assertSame(this, derived); - return this._x; - }}); - - function Derived() {} - Derived.__proto__ = Base; - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - _x: 'derived', - testGetter() { - return super[x]; - }, - testGetterStrict() { - 'use strict'; - return super[x]; - }, - testGetterWithToString() { - var toStringCalled; - var o = { - toString: function() { - toStringCalled++; - return '42'; - } - }; - - toStringCalled = 0; - assertEquals('derived', super[o]); - assertEquals(1, toStringCalled); - - var eToThrow = new Error(); - var oThrowsInToString = { - toString: function() { - throw eToThrow; - } - }; - - var ex = null; - try { - super[oThrowsInToString]; - } catch(e) { ex = e } - assertEquals(eToThrow, ex); - - var oReturnsNumericString = { - toString: function() { - return "42"; - } - }; - - assertEquals('derived', super[oReturnsNumericString]); - assertEquals('derived', super[42]); - } - }; - - derived = new Derived(); - assertEquals('derived', derived.testGetter()); - derived = new Derived(); - assertEquals('derived', derived.testGetterStrict()); - derived = new Derived(); - derived.testGetterWithToString(); -}()); - - -(function TestSetter() { - function Base() {} - Base.prototype = { - constructor: Base, - get x() { - return this._x; - }, - set x(v) { - this._x = v; - }, - _x: 'base' - }; - - function Derived() {} - Derived.__proto__ = Base; - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - _x: 'derived', - testSetter() { - assertEquals('foobar', super.x = 'foobar'); - assertEquals('foobarabc', super.x += 'abc'); - }, - testSetterStrict() { - 'use strict'; - assertEquals('foobar', super.x = 'foobar'); - assertEquals('foobarabc', super.x += 'abc'); - } - }; - - var d = new Derived(); - d.testSetter(); - assertEquals('base', Base.prototype._x); - assertEquals('foobarabc', d._x); - d._x = ''; - - d.testSetterStrict(); - assertEquals('base', Base.prototype._x); - assertEquals('foobarabc', d._x); -}()); - - -(function TestSetterNumericKeyed() { - var x = 42; - function Base() {} - Base.prototype = { - constructor: Base, - _x: 'base' - }; - - Object.defineProperty(Base.prototype, x, - { get: function() { return this._x; }, - set: function(v) { this._x = v; } - }); - - function Derived() {} - Derived.__proto__ = Base; - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - _x: 'derived', - testSetter() { - assertEquals('foobar', super[x] = 'foobar'); - assertEquals('foobarabc', super[x] += 'abc'); - }, - testSetterStrict() { - 'use strict'; - assertEquals('foobar', super[x] = 'foobar'); - assertEquals('foobarabc', super[x] += 'abc'); - }, - testSetterWithToString() { - var toStringCalled; - var o = { - toString: function() { - toStringCalled++; - return x; - } - }; - - toStringCalled = 0; - super[o] = 'set'; - assertEquals(1, toStringCalled); - assertEquals('set', this._x); - - var eToThrow = new Error(); - var oThrowsInToString = { - toString: function() { - throw eToThrow; - } - }; - - var ex = null; - try { - super[oThrowsInToString] = 'xyz'; - } catch(e) { ex = e } - assertEquals(eToThrow, ex); - assertEquals('set', this._x); - } - }; - - var d = new Derived(); - d.testSetter(); - assertEquals('base', Base.prototype._x); - assertEquals('foobarabc', d._x); - d._x = ''; - - d.testSetterStrict(); - assertEquals('base', Base.prototype._x); - assertEquals('foobarabc', d._x); - - d = new Derived(); - d.testSetterWithToString(); -}()); - - -(function TestSetterKeyed() { - var x = 'x'; - function Base() {} - Base.prototype = { - constructor: Base, - get x() { - return this._x; - }, - set x(v) { - this._x = v; - }, - _x: 'base' - }; - - function Derived() {} - Derived.__proto__ = Base; - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - _x: 'derived', - testSetter() { - assertEquals('foobar', super[x] = 'foobar'); - assertEquals('foobarabc', super[x] += 'abc'); - }, - testSetterStrict() { - 'use strict'; - assertEquals('foobar', super[x] = 'foobar'); - assertEquals('foobarabc', super[x] += 'abc'); - }, - testSetterWithToString() { - var toStringCalled; - var o = { - toString: function() { - toStringCalled++; - return 'x'; - } - }; - - toStringCalled = 0; - super[o] = 'set'; - assertEquals(1, toStringCalled); - assertEquals('set', this._x); - - var eToThrow = new Error(); - var oThrowsInToString = { - toString: function() { - throw eToThrow; - } - }; - - var ex = null; - try { - super[oThrowsInToString] = 'xyz'; - } catch(e) { ex = e } - assertEquals(eToThrow, ex); - assertEquals('set', this._x); - - var oReturnsNumericString = { - toString: function() { - return "1"; - } - }; - - assertEquals('abc', super[oReturnsNumericString] = 'abc'); - - assertEquals('set', this._x); - - assertEquals(10, super[1] = 10); - } - }; - - var d = new Derived(); - d.testSetter(); - assertEquals('base', Base.prototype._x); - assertEquals('foobarabc', d._x); - d._x = ''; - d.testSetterStrict(); - assertEquals('base', Base.prototype._x); - assertEquals('foobarabc', d._x); - - d = new Derived(); - d.testSetterWithToString(); -}()); - - -(function TestSetterDataProperties() { - function Base() {} - Base.prototype = { - constructor: Base, - x: 'x from Base' - }; - - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - testSetter() { - assertEquals('x from Base', super.x); - super.x = 'data property'; - assertEquals('x from Base', super.x); - assertEquals('data property', this.x); - } - }; - - new Derived().testSetter(); -}()); - - -(function TestKeyedSetterDataProperties() { - var x = 'x'; - function Base() {} - Base.prototype = { - constructor: Base, - x: 'x from Base' - }; - - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - testSetter() { - assertEquals('x from Base', super[x]); - super[x] = 'data property'; - assertEquals('x from Base', super[x]); - assertEquals('data property', this[x]); - } - }; - - new Derived().testSetter(); -}()); - - -(function TestKeyedNumericSetterDataProperties() { - var x = 42; - function Base() {} - Base.prototype = { - constructor: Base, - 42: 'x from Base' - }; - - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - testSetter() { - assertEquals('x from Base', super[x]); - super[x] = 'data property'; - assertEquals('x from Base', super[x]); - assertEquals('data property', this[x]); - } - }; - - new Derived().testSetter(); -}()); - - -(function TestAccessorsOnPrimitives() { - var getCalled = 0; - var setCalled = 0; - function Base() {} - Base.prototype = { - constructor: Base, - get x() { - getCalled++; - return 1; - }, - set x(v) { - setCalled++; - return v; - }, - }; - - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - testSetter() { - setCalled = 0; - getCalled = 0; - assertEquals('object', typeof this); - assertInstanceof(this, Number) - assertEquals(42, this.valueOf()); - assertEquals(1, super.x); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - assertEquals(5, super.x = 5); - assertEquals(1, getCalled); - assertEquals(1, setCalled); - - assertEquals(6, super.x += 5); - assertEquals(2, getCalled); - assertEquals(2, setCalled); - - super.newProperty = 15; - assertEquals(15, this.newProperty); - assertEquals(undefined, super.newProperty); - }, - testSetterStrict() { - 'use strict'; - getCalled = 0; - setCalled = 0; - assertTrue(42 === this); - - assertEquals(1, super.x); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - assertEquals(5, super.x = 5); - assertEquals(1, getCalled); - assertEquals(1, setCalled); - - assertEquals(6, super.x += 5); - assertEquals(2, getCalled); - assertEquals(2, setCalled); - - var ex; - try { - super.newProperty = 15; - } catch (e) { ex = e; } - assertInstanceof(ex, TypeError); - } - } - - Derived.prototype.testSetter.call(42); - Derived.prototype.testSetterStrict.call(42); - - function DerivedFromString() {} - DerivedFromString.prototype = { - __proto__: String.prototype, - f() { - 'use strict'; - assertTrue(42 === this); - assertEquals(String.prototype.toString, super.toString); - var ex; - try { - super.toString(); - } catch(e) { ex = e; } - - assertInstanceof(ex, TypeError); - } - }; - - DerivedFromString.prototype.f.call(42); -}()); - - -(function TestKeyedAccessorsOnPrimitives() { - var x = 'x'; - var newProperty = 'newProperty'; - var toString = 'toString'; - var getCalled = 0; - var setCalled = 0; - function Base() {} - Base.prototype = { - constructor: Base, - get x() { - getCalled++; - return 1; - }, - set x(v) { - setCalled++; - return v; - }, - }; - - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - testSetter() { - setCalled = 0; - getCalled = 0; - assertEquals('object', typeof this); - assertInstanceof(this, Number) - assertEquals(42, this.valueOf()); - assertEquals(1, super[x]); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - assertEquals(5, super[x] = 5); - assertEquals(1, getCalled); - assertEquals(1, setCalled); - - assertEquals(6, super[x] += 5); - assertEquals(2, getCalled); - assertEquals(2, setCalled); - - super[newProperty] = 15; - assertEquals(15, this[newProperty]); - assertEquals(undefined, super[newProperty]); - }, - testSetterStrict() { - 'use strict'; - getCalled = 0; - setCalled = 0; - assertTrue(42 === this); - - assertEquals(1, super[x]); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - assertEquals(5, super[x] = 5); - assertEquals(1, getCalled); - assertEquals(1, setCalled); - - assertEquals(6, super[x] += 5); - assertEquals(2, getCalled); - assertEquals(2, setCalled); - - var ex; - try { - super[newProperty] = 15; - } catch (e) { ex = e; } - assertInstanceof(ex,TypeError); - } - }; - - Derived.prototype.testSetter.call(42); - Derived.prototype.testSetterStrict.call(42); - - function DerivedFromString() {} - DerivedFromString.prototype = { - __proto__: String.prototype, - f() { - 'use strict'; - assertTrue(42 === this); - assertEquals(String.prototype.toString, super[toString]); - var ex; - try { - super[toString](); - } catch(e) { ex = e; } - - assertInstanceof(ex, TypeError); - } - }; - DerivedFromString.prototype.f.call(42); -}()); - - -(function TestNumericKeyedAccessorsOnPrimitives() { - var x = 42; - var newProperty = 43; - var getCalled = 0; - var setCalled = 0; - function Base() {} - Base.prototype = { - constructor: Base, - }; - - Object.defineProperty(Base.prototype, x, { - get: function() { - getCalled++; - return 1; - }, - set: function(v) { - setCalled++; - return v; - } - }); - - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - testSetter() { - setCalled = 0; - getCalled = 0; - assertEquals('object', typeof this); - assertInstanceof(this, Number) - assertEquals(42, this.valueOf()); - assertEquals(1, super[x]); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - assertEquals(5, super[x] = 5); - assertEquals(1, getCalled); - assertEquals(1, setCalled); - - assertEquals(6, super[x] += 5); - assertEquals(2, getCalled); - assertEquals(2, setCalled); - - super[newProperty] = 15; - assertEquals(15, this[newProperty]); - assertEquals(undefined, super[newProperty]); - }, - testSetterStrict() { - 'use strict'; - getCalled = 0; - setCalled = 0; - assertTrue(42 === this); - - assertEquals(1, super[x]); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - assertEquals(5, super[x] = 5); - assertEquals(1, getCalled); - assertEquals(1, setCalled); - - assertEquals(6, super[x] += 5); - assertEquals(2, getCalled); - assertEquals(2, setCalled); - - var ex; - try { - super[newProperty] = 15; - } catch (e) { ex = e; } - assertInstanceof(ex, TypeError); - } - }; - - Derived.prototype.testSetter.call(42); - Derived.prototype.testSetterStrict.call(42); -}()); - - -(function TestKeyedNumericSetterOnExotics() { - function Base() {} - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - callSetterOnArray() { - super[42] = 1; - }, - callStrictSetterOnString() { - 'use strict'; - assertEquals('string', typeof this); - assertTrue('abcdef' === this); - var ex = null; - try { - super[5] = 'q'; - } catch(e) { ex = e; } - assertInstanceof(ex, TypeError); - - ex = null; - try { - super[1024] = 'q'; - } catch(e) { ex = e; } - assertInstanceof(ex, TypeError); - } - }; - - var x = []; - assertEquals(0, x.length); - Derived.prototype.callSetterOnArray.call(x); - assertEquals(43, x.length); - assertEquals(1, x[42]); - - var s = 'abcdef'; - Derived.prototype.callStrictSetterOnString.call(s) -}()); - - -(function TestSetterUndefinedProperties() { - function Base() {} - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - mSloppy() { - assertEquals(undefined, super.x); - assertEquals(undefined, this.x); - super.x = 10; - assertEquals(10, this.x); - assertEquals(undefined, super.x); - }, - mStrict() { - 'use strict'; - assertEquals(undefined, super.x); - assertEquals(undefined, this.x); - super.x = 10; - assertEquals(10, this.x); - assertEquals(undefined, super.x); - } - }; - - var d = new Derived(); - d.mSloppy(); - assertEquals(10, d.x); - var d1 = new Derived(); - d1.mStrict(); - assertEquals(10, d.x); -}()); - - -(function TestKeyedSetterUndefinedProperties() { - var x = 'x'; - function Base() {} - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - mSloppy() { - assertEquals(undefined, super[x]); - assertEquals(undefined, this[x]); - super[x] = 10; - assertEquals(10, this[x]); - assertEquals(undefined, super[x]); - }, - mStrict() { - 'use strict'; - assertEquals(undefined, super[x]); - assertEquals(undefined, this[x]); - super[x] = 10; - assertEquals(10, this[x]); - assertEquals(undefined, super[x]); - } - }; - var d = new Derived(); - d.mSloppy(); - assertEquals(10, d.x); - var d1 = new Derived(); - d1.mStrict(); - assertEquals(10, d.x); -}()); - - -(function TestKeyedNumericSetterUndefinedProperties() { - var x = 42; - function Base() {} - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - mSloppy() { - assertEquals(undefined, super[x]); - assertEquals(undefined, this[x]); - super[x] = 10; - assertEquals(10, this[x]); - assertEquals(undefined, super[x]); - }, - mStrict() { - 'use strict'; - assertEquals(undefined, super[x]); - assertEquals(undefined, this[x]); - super[x] = 10; - assertEquals(10, this[x]); - assertEquals(undefined, super[x]); - } - }; - var d = new Derived(); - d.mSloppy(); - assertEquals(10, d[x]); - var d1 = new Derived(); - d1.mStrict(); - assertEquals(10, d[x]); -}()); - - -(function TestSetterCreatingOwnPropertiesReconfigurable() { - function Base() {} - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - mSloppy() { - assertEquals(42, this.ownReadOnly); - super.ownReadOnly = 55; - assertSame(undefined, super.ownReadOnly); - assertEquals(42, this.ownReadOnly); - assertFalse(Base.prototype.hasOwnProperty('ownReadOnly')); - - assertEquals(15, this.ownReadonlyAccessor); - super.ownReadonlyAccessor = 25; - assertSame(undefined, super.ownReadonlyAccessor); - assertEquals(15, this.ownReadonlyAccessor); - assertFalse(Base.prototype.hasOwnProperty('ownReadonlyAccessor')); - - super.ownSetter = 35; - assertSame(undefined, super.ownSetter); - var descr = Object.getOwnPropertyDescriptor(this, 'ownSetter'); - assertTrue('set' in descr); - assertFalse(Base.prototype.hasOwnProperty('ownSetter')); - }, - mStrict() { - 'use strict'; - assertEquals(42, this.ownReadOnly); - assertThrows(() => {super.ownReadOnly = 55}, TypeError); - assertSame(undefined, super.ownReadOnly); - assertEquals(42, this.ownReadOnly); - assertFalse(Base.prototype.hasOwnProperty('ownReadOnly')); - - assertEquals(15, this.ownReadonlyAccessor); - assertThrows(() => {super.ownReadonlyAccessor = 25}, TypeError); - assertSame(undefined, super.ownReadonlyAccessor); - assertEquals(15, this.ownReadonlyAccessor); - assertFalse(Base.prototype.hasOwnProperty('ownReadonlyAccessor')); - - assertThrows(() => {super.ownSetter = 35}, TypeError); - assertSame(undefined, super.ownSetter); - var descr = Object.getOwnPropertyDescriptor(this, 'ownSetter'); - assertTrue('set' in descr); - assertFalse(Base.prototype.hasOwnProperty('ownSetter')); - }, - }; - - var d = new Derived(); - Object.defineProperty(d, 'ownReadOnly', { - value: 42, - writable: false, - configurable: true - }); - Object.defineProperty(d, 'ownSetter', { - set: function() { assertUnreachable(); }, - configurable: true - }); - Object.defineProperty(d, 'ownReadonlyAccessor', { - get: function() { return 15; }, - configurable: true - }); - - d.mSloppy(); - - var d = new Derived(); - Object.defineProperty(d, 'ownReadOnly', { - value: 42, - writable: false, - configurable: true - }); - Object.defineProperty(d, 'ownSetter', { - set: function() { assertUnreachable(); }, - configurable: true - }); - Object.defineProperty(d, 'ownReadonlyAccessor', { - get: function() { return 15; }, - configurable: true - }); - d.mStrict(); -}()); - - -(function TestSetterCreatingOwnPropertiesNonConfigurable() { - function Base() {} - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - mSloppy() { - assertEquals(42, this.ownReadOnly); - super.ownReadOnly = 55; - assertEquals(42, this.ownReadOnly); - var descr = Object.getOwnPropertyDescriptor(this, 'ownReadOnly'); - assertEquals(42, descr.value); - assertFalse(descr.configurable); - assertFalse(descr.enumerable); - assertFalse(descr.writable); - assertFalse(Base.prototype.hasOwnProperty('ownReadOnly')); - - assertEquals(15, this.ownReadonlyAccessor); - super.ownReadonlyAccessor = 25; - assertSame(undefined, super.ownReadonlyAccessor); - assertEquals(15, this.ownReadonlyAccessor); - var descr = Object.getOwnPropertyDescriptor(this, 'ownReadonlyAccessor'); - assertFalse(descr.configurable); - assertFalse(descr.enumerable); - assertFalse(Base.prototype.hasOwnProperty('ownReadonlyAccessor')); - - super.ownSetter = 35; - var descr = Object.getOwnPropertyDescriptor(this, 'ownSetter'); - assertFalse(descr.configurable); - assertFalse(descr.enumerable); - assertFalse(Base.prototype.hasOwnProperty('ownSetter')); - }, - mStrict() { - 'use strict'; - var ex; - assertEquals(42, this.ownReadOnly); - try { - super.ownReadOnly = 55; - } catch (e) { - ex = e; - } - assertInstanceof(ex, TypeError); - assertEquals( - "Cannot assign to read only property 'ownReadOnly' of object '#'", - ex.message); - assertEquals(42, this.ownReadOnly); - - ex = null; - assertEquals(15, this.ownReadonlyAccessor); - try { - super.ownReadonlyAccessor = 25; - } catch (e) { - ex = e; - } - assertInstanceof(ex, TypeError); - assertEquals('Cannot redefine property: ownReadonlyAccessor', ex.message); - assertEquals(15, this.ownReadonlyAccessor); - - ex = null; - try { - super.ownSetter = 35; - } catch (e) { - ex = e; - } - assertInstanceof(ex, TypeError); - assertEquals('Cannot redefine property: ownSetter', ex.message); - } - }; - - var d = new Derived(); - Object.defineProperty(d, 'ownReadOnly', { value : 42, writable : false }); - Object.defineProperty(d, 'ownSetter', - { set : function() { assertUnreachable(); } }); - Object.defineProperty(d, 'ownReadonlyAccessor', - { get : function() { return 15; }}); - d.mSloppy(); - d.mStrict(); -}()); - - -(function TestSetterInForIn() { - var setCalled = 0; - var getCalled = 0; - function Base() {} - Base.prototype = { - constructor: Base, - get x() { - getCalled++; - return 1; - }, - set x(v) { - setCalled++; - this.x_.push(v); - }, - }; - - function Derived() { - this.x_ = []; - } - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - testIter() { - setCalled = 0; - getCalled = 0; - for (super.x in [1,2,3]) {} - assertEquals(0, getCalled); - assertEquals(3, setCalled); - assertEquals(["0", "1", "2"], this.x_); - }, - testIterKeyed() { - setCalled = 0; - getCalled = 0; - for (super[x] in [1,2,3]) {} - assertEquals(0, getCalled); - assertEquals(3, setCalled); - assertEquals(["0","1","2"], this.x_); - - this.x_ = []; - setCalled = 0; - getCalled = 0; - var toStringCalled = 0; - var o = {toString: function () { toStringCalled++; return x }}; - for (super[o] in [1,2,3]) {} - assertEquals(0, getCalled); - assertEquals(3, setCalled); - assertEquals(3, toStringCalled); - assertEquals(["0","1","2"], this.x_); - } - }; - - new Derived().testIter(); - - var x = 'x'; - - new Derived().testIterKeyed(); -}()); - - -function TestKeyedSetterCreatingOwnPropertiesReconfigurable(ownReadOnly, - ownReadonlyAccessor, ownSetter) { - function Base() {} - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - mSloppy() { - assertEquals(42, this[ownReadOnly]); - super[ownReadOnly] = 55; - assertSame(undefined, super[ownReadOnly]); - assertEquals(42, this[ownReadOnly]); - assertFalse(Base.prototype.hasOwnProperty(ownReadOnly)); - - assertEquals(15, this[ownReadonlyAccessor]); - super[ownReadonlyAccessor] = 25; - assertSame(undefined, super[ownReadonlyAccessor]); - assertEquals(15, this[ownReadonlyAccessor]); - assertFalse(Base.prototype.hasOwnProperty(ownReadonlyAccessor)); - - super[ownSetter] = 35; - assertSame(undefined, super[ownSetter]); - var descr = Object.getOwnPropertyDescriptor(this, ownSetter); - assertTrue('set' in descr); - assertFalse(Base.prototype.hasOwnProperty(ownSetter)); - }, - mStrict() { - 'use strict'; - assertEquals(42, this[ownReadOnly]); - assertThrows(() => {super[ownReadOnly] = 55}, TypeError); - assertSame(undefined, super[ownReadOnly]); - assertEquals(42, this[ownReadOnly]); - assertFalse(Base.prototype.hasOwnProperty(ownReadOnly)); - - assertEquals(15, this[ownReadonlyAccessor]); - assertThrows(() => {super[ownReadonlyAccessor] = 25}, TypeError); - assertSame(undefined, super[ownReadonlyAccessor]); - assertEquals(15, this[ownReadonlyAccessor]); - assertFalse(Base.prototype.hasOwnProperty(ownReadonlyAccessor)); - - assertThrows(() => {super[ownSetter] = 35}, TypeError); - assertSame(undefined, super[ownSetter]); - var descr = Object.getOwnPropertyDescriptor(this, ownSetter); - assertTrue('set' in descr); - assertFalse(Base.prototype.hasOwnProperty(ownSetter)); - }, - }; - - var d = new Derived(); - Object.defineProperty(d, ownReadOnly, { - value: 42, - writable: false, - configurable: true - }); - Object.defineProperty(d, ownSetter, { - set: function() { assertUnreachable(); }, - configurable: true - }); - Object.defineProperty(d, ownReadonlyAccessor, { - get: function() { return 15; }, - configurable: true - }); - - d.mSloppy(); - - var d = new Derived(); - Object.defineProperty(d, ownReadOnly, { - value: 42, - writable: false, - configurable: true - }); - Object.defineProperty(d, ownSetter, { - set: function() { assertUnreachable(); }, - configurable: true - }); - Object.defineProperty(d, ownReadonlyAccessor, { - get: function() { return 15; }, - configurable: true - }); - d.mStrict(); -} -TestKeyedSetterCreatingOwnPropertiesReconfigurable('ownReadOnly', - 'ownReadonlyAccessor', - 'ownSetter'); -TestKeyedSetterCreatingOwnPropertiesReconfigurable(42, 43, 44); - - -function TestKeyedSetterCreatingOwnPropertiesNonConfigurable( - ownReadOnly, ownReadonlyAccessor, ownSetter) { - function Base() {} - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - mSloppy() { - assertEquals(42, this[ownReadOnly]); - super[ownReadOnly] = 55; - assertEquals(42, this[ownReadOnly]); - var descr = Object.getOwnPropertyDescriptor(this, ownReadOnly); - assertEquals(42, descr.value); - assertFalse(descr.configurable); - assertFalse(descr.enumerable); - assertFalse(descr.writable); - assertFalse(Base.prototype.hasOwnProperty(ownReadOnly)); - - assertEquals(15, this[ownReadonlyAccessor]); - super[ownReadonlyAccessor] = 25; - assertSame(undefined, super[ownReadonlyAccessor]); - assertEquals(15, this[ownReadonlyAccessor]); - var descr = Object.getOwnPropertyDescriptor(this, ownReadonlyAccessor); - assertFalse(descr.configurable); - assertFalse(descr.enumerable); - assertFalse(Base.prototype.hasOwnProperty(ownReadonlyAccessor)); - - super[ownSetter] = 35; - var descr = Object.getOwnPropertyDescriptor(this, ownSetter); - assertFalse(descr.configurable); - assertFalse(descr.enumerable); - assertFalse(Base.prototype.hasOwnProperty(ownSetter)); - }, - mStrict() { - 'use strict'; - var ex; - assertEquals(42, this[ownReadOnly]); - try { - super[ownReadOnly] = 55; - } catch (e) { - ex = e; - } - assertInstanceof(ex, TypeError); - assertEquals( - "Cannot assign to read only property '" + ownReadOnly + - "' of object '#'", - ex.message); - assertEquals(42, this[ownReadOnly]); - - ex = null; - assertEquals(15, this[ownReadonlyAccessor]); - try { - super[ownReadonlyAccessor] = 25; - } catch (e) { - ex = e; - } - assertInstanceof(ex, TypeError); - assertEquals('Cannot redefine property: ' + ownReadonlyAccessor, - ex.message); - assertEquals(15, this[ownReadonlyAccessor]); - - ex = null; - try { - super[ownSetter] = 35; - } catch (e) { - ex = e; - } - assertInstanceof(ex, TypeError); - assertEquals('Cannot redefine property: ' + ownSetter, ex.message); - } - }; - - var d = new Derived(); - Object.defineProperty(d, ownReadOnly, { value : 42, writable : false }); - Object.defineProperty(d, ownSetter, - { set : function() { assertUnreachable(); } }); - Object.defineProperty(d, ownReadonlyAccessor, - { get : function() { return 15; }}); - d.mSloppy(); - d.mStrict(); -} -TestKeyedSetterCreatingOwnPropertiesNonConfigurable('ownReadOnly', - 'ownReadonlyAccessor', 'ownSetter'); -TestKeyedSetterCreatingOwnPropertiesNonConfigurable(42, 43, 44); - - -(function TestSetterNoProtoWalk() { - function Base() {} - function Derived() {} - var getCalled; - var setCalled; - Derived.prototype = { - __proto__: Base.prototype, - get x() { getCalled++; return 42; }, - set x(v) { setCalled++; }, - mSloppy() { - setCalled = 0; - getCalled = 0; - assertEquals(42, this.x); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - getCalled = 0; - setCalled = 0; - this.x = 43; - assertEquals(0, getCalled); - assertEquals(1, setCalled); - - getCalled = 0; - setCalled = 0; - super.x = 15; - assertEquals(0, setCalled); - assertEquals(0, getCalled); - - assertEquals(15, this.x); - assertEquals(0, getCalled); - assertEquals(0, setCalled); - }, - mStrict() { - 'use strict'; - setCalled = 0; - getCalled = 0; - assertEquals(42, this.x); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - getCalled = 0; - setCalled = 0; - this.x = 43; - assertEquals(0, getCalled); - assertEquals(1, setCalled); - - getCalled = 0; - setCalled = 0; - super.x = 15; - assertEquals(0, setCalled); - assertEquals(0, getCalled); - - assertEquals(15, this.x); - assertEquals(0, getCalled); - assertEquals(0, setCalled); - } - }; - - new Derived().mSloppy(); - new Derived().mStrict(); -}()); - - -(function TestKeyedSetterNoProtoWalk() { - var x = 'x'; - function Base() {} - function Derived() {} - var getCalled; - var setCalled; - Derived.prototype = { - __proto__: Base.prototype, - get x() { getCalled++; return 42; }, - set x(v) { setCalled++; }, - mSloppy() { - setCalled = 0; - getCalled = 0; - assertEquals(42, this[x]); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - getCalled = 0; - setCalled = 0; - this[x] = 43; - assertEquals(0, getCalled); - assertEquals(1, setCalled); - - getCalled = 0; - setCalled = 0; - super[x] = 15; - assertEquals(0, setCalled); - assertEquals(0, getCalled); - - assertEquals(15, this[x]); - assertEquals(0, getCalled); - assertEquals(0, setCalled); - }, - mStrict() { - 'use strict'; - setCalled = 0; - getCalled = 0; - assertEquals(42, this[x]); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - getCalled = 0; - setCalled = 0; - this[x] = 43; - assertEquals(0, getCalled); - assertEquals(1, setCalled); - - getCalled = 0; - setCalled = 0; - super[x] = 15; - assertEquals(0, setCalled); - assertEquals(0, getCalled); - - assertEquals(15, this[x]); - assertEquals(0, getCalled); - assertEquals(0, setCalled); - } - }; - - new Derived().mSloppy(); - new Derived().mStrict(); -}()); - - -(function TestKeyedNumericSetterNoProtoWalk() { - var x = 42; - function Base() {} - function Derived() {} - var getCalled; - var setCalled; - Derived.prototype = { - __proto__: Base.prototype, - mSloppy() { - setCalled = 0; - getCalled = 0; - assertEquals(42, this[x]); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - getCalled = 0; - setCalled = 0; - this[x] = 43; - assertEquals(0, getCalled); - assertEquals(1, setCalled); - - getCalled = 0; - setCalled = 0; - super[x] = 15; - assertEquals(0, setCalled); - assertEquals(0, getCalled); - - assertEquals(15, this[x]); - assertEquals(0, getCalled); - assertEquals(0, setCalled); - }, - mStrict() { - 'use strict'; - setCalled = 0; - getCalled = 0; - assertEquals(42, this[x]); - assertEquals(1, getCalled); - assertEquals(0, setCalled); - - getCalled = 0; - setCalled = 0; - this[x] = 43; - assertEquals(0, getCalled); - assertEquals(1, setCalled); - - getCalled = 0; - setCalled = 0; - super[x] = 15; - assertEquals(0, setCalled); - assertEquals(0, getCalled); - - assertEquals(15, this[x]); - assertEquals(0, getCalled); - assertEquals(0, setCalled); - } - }; - - Object.defineProperty(Derived.prototype, x, { - get: function() { getCalled++; return 42; }, - set: function(v) { setCalled++; } - }); - - new Derived().mSloppy(); - new Derived().mStrict(); -}()); - - -(function TestSetterDoesNotReconfigure() { - function Base() {} - function Derived() {} - Derived.prototype = { - __proto__: Derived.prototype, - mStrict(){ - 'use strict'; - super.nonEnumConfig = 5; - var d1 = Object.getOwnPropertyDescriptor(this, 'nonEnumConfig'); - assertEquals(5, d1.value); - assertTrue(d1.configurable); - assertFalse(d1.enumerable); - - super.nonEnumNonConfig = 5; - var d1 = Object.getOwnPropertyDescriptor(this, 'nonEnumNonConfig'); - assertEquals(5, d1.value); - assertFalse(d1.configurable); - assertFalse(d1.enumerable); - }, - mSloppy(){ - super.nonEnumConfig = 42; - var d1 = Object.getOwnPropertyDescriptor(this, 'nonEnumConfig'); - assertEquals(42, d1.value); - assertTrue(d1.configurable); - assertFalse(d1.enumerable); - - super.nonEnumNonConfig = 42; - var d1 = Object.getOwnPropertyDescriptor(this, 'nonEnumNonConfig'); - assertEquals(42, d1.value); - assertFalse(d1.configurable); - assertFalse(d1.enumerable); - } - }; - - var d = new Derived(); - Object.defineProperty(d, 'nonEnumConfig', - { value : 0, enumerable : false, configurable : true, writable : true }); - Object.defineProperty(d, 'nonEnumNonConfig', - { value : 0, enumerable : false, configurable : false, writable : true }); - d.mStrict(); - d.mSloppy(); -}()); - - -(function TestKeyedSetterDoesNotReconfigure() { - var nonEnumConfig = 'nonEnumConfig'; - var nonEnumNonConfig = 'nonEnumNonConfig'; - function Base() {} - function Derived() {} - - Derived.prototype = { - __proto__: Base.prototype, - mStrict(){ - 'use strict'; - super[nonEnumConfig] = 5; - var d1 = Object.getOwnPropertyDescriptor(this, nonEnumConfig); - assertEquals(5, d1.value); - assertTrue(d1.configurable); - assertFalse(d1.enumerable); - - super[nonEnumNonConfig] = 5; - var d1 = Object.getOwnPropertyDescriptor(this, nonEnumNonConfig); - assertEquals(5, d1.value); - assertFalse(d1.configurable); - assertFalse(d1.enumerable); - }, - mSloppy(){ - super[nonEnumConfig] = 42; - var d1 = Object.getOwnPropertyDescriptor(this, nonEnumConfig); - assertEquals(42, d1.value); - assertTrue(d1.configurable); - assertFalse(d1.enumerable); - - super[nonEnumNonConfig] = 42; - var d1 = Object.getOwnPropertyDescriptor(this, nonEnumNonConfig); - assertEquals(42, d1.value); - assertFalse(d1.configurable); - assertFalse(d1.enumerable); - } - }; - - var d = new Derived(); - Object.defineProperty(d, nonEnumConfig, - { value : 0, enumerable : false, configurable : true, writable : true }); - Object.defineProperty(d, nonEnumNonConfig, - { value : 0, enumerable : false, configurable : false, writable : true }); - d.mStrict(); - d.mSloppy(); -}()); - - -(function TestKeyedNumericSetterDoesNotReconfigure() { - var nonEnumConfig = 42; - var nonEnumNonConfig = 43; - function Base() {} - function Derived() {} - - Derived.prototype = { - __proto__: Base.prototype, - mStrict(){ - 'use strict'; - super[nonEnumConfig] = 5; - var d1 = Object.getOwnPropertyDescriptor(this, nonEnumConfig); - assertEquals(5, d1.value); - assertTrue(d1.configurable); - assertFalse(d1.enumerable); - - super[nonEnumNonConfig] = 5; - var d1 = Object.getOwnPropertyDescriptor(this, nonEnumNonConfig); - assertEquals(5, d1.value); - assertFalse(d1.configurable); - assertFalse(d1.enumerable); - }, - mSloppy(){ - super[nonEnumConfig] = 42; - var d1 = Object.getOwnPropertyDescriptor(this, nonEnumConfig); - assertEquals(42, d1.value); - assertTrue(d1.configurable); - assertFalse(d1.enumerable); - - super[nonEnumNonConfig] = 42; - var d1 = Object.getOwnPropertyDescriptor(this, nonEnumNonConfig); - assertEquals(42, d1.value); - assertFalse(d1.configurable); - assertFalse(d1.enumerable); - } - }; - - var d = new Derived(); - Object.defineProperty(d, nonEnumConfig, - { value : 0, enumerable : false, configurable : true, writable : true }); - Object.defineProperty(d, nonEnumNonConfig, - { value : 0, enumerable : false, configurable : false, writable : true }); - d.mStrict(); - d.mSloppy(); -}()); - - -(function TestCountOperations() { - function Base() {} - Base.prototype = { - constructor: Base, - get x() { - return this._x; - }, - set x(v) { - this._x = v; - }, - _x: 1 - }; - - function Derived() {} - Derived.__proto__ = Base; - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - _x: 2, - testCounts() { - assertEquals(2, this._x); - assertEquals(2, super.x); - super.x++; - assertEquals(3, super.x); - ++super.x; - assertEquals(4, super.x); - assertEquals(4, super.x++); - assertEquals(5, super.x); - assertEquals(6, ++super.x); - assertEquals(6, super.x); - assertEquals(6, this._x); - - super.x--; - assertEquals(5, super.x); - --super.x; - assertEquals(4, super.x); - assertEquals(4, super.x--); - assertEquals(3, super.x); - assertEquals(2, --super.x); - assertEquals(2, super.x); - assertEquals(2, this._x); - } - }; - new Derived().testCounts(); -}()); - - -(function TestKeyedCountOperations() { - var x = 'x'; - function Base() {} - Base.prototype = { - constructor: Base, - get x() { - return this._x; - }, - set x(v) { - this._x = v; - }, - _x: 1 - }; - - function Derived() {} - Derived.__proto__ = Base; - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - _x: 2, - testCounts() { - assertEquals(2, this._x); - assertEquals(2, super[x]); - super[x]++; - assertEquals(3, super[x]); - ++super[x]; - assertEquals(4, super[x]); - assertEquals(4, super[x]++); - assertEquals(5, super[x]); - assertEquals(6, ++super[x]); - assertEquals(6, super[x]); - assertEquals(6, this._x); - - super[x]--; - assertEquals(5, super[x]); - --super[x]; - assertEquals(4, super[x]); - assertEquals(4, super[x]--); - assertEquals(3, super[x]); - assertEquals(2, --super[x]); - assertEquals(2, super[x]); - assertEquals(2, this._x); - } - }; - new Derived().testCounts(); -}()); - - -(function TestKeyedNumericCountOperations() { - var x = 42; - function Base() {} - Base.prototype = { - constructor: Base, - _x: 1 - }; - - Object.defineProperty(Base.prototype, x, { - get: function() { return this._x; }, - set: function(v) { this._x = v;; } - }); - - function Derived() {} - Derived.__proto__ = Base; - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - _x: 2, - testCounts() { - assertEquals(2, this._x); - assertEquals(2, super[x]); - super[x]++; - assertEquals(3, super[x]); - ++super[x]; - assertEquals(4, super[x]); - assertEquals(4, super[x]++); - assertEquals(5, super[x]); - assertEquals(6, ++super[x]); - assertEquals(6, super[x]); - assertEquals(6, this._x); - - super[x]--; - assertEquals(5, super[x]); - --super[x]; - assertEquals(4, super[x]); - assertEquals(4, super[x]--); - assertEquals(3, super[x]); - assertEquals(2, --super[x]); - assertEquals(2, super[x]); - assertEquals(2, this._x); - } - }; - new Derived().testCounts(); -}()); - - -(function TestSetterSuperNonWritable() { - function Base() {} - Object.defineProperty(Base.prototype, 'x', { value : 27, writable: false }); - function Derived() {} - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - mSloppy() { - assertEquals(27, super.x); - assertEquals(27, this.x); - super.x = 10; - assertEquals(27, super.x); - assertEquals(27, this.x); - }, - mStrict() { - 'use strict'; - assertEquals(27, super.x); - assertEquals(27, this.x); - var ex = null; - try { super.x = 10; } catch(e) { ex = e; } - assertInstanceof(ex, TypeError); - assertEquals(27, super.x); - assertEquals(27, this.x); - } - }; - new Derived().mSloppy(); - new Derived().mStrict(); -}()); - - -(function TestSetterKeyedSuperNonWritable() { - var x = 'xyz'; - function Base() {} - Object.defineProperty(Base.prototype, x, { value : 27, writable: false }); - function Derived() {} - - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - mSloppy() { - assertEquals(27, super[x]); - assertEquals(27, this[x]); - super[x] = 10; - assertEquals(27, super[x]); - assertEquals(27, this[x]); - }, - mStrict() { - 'use strict'; - assertEquals(27, super[x]); - assertEquals(27, this[x]); - var ex = null; - try { super[x] = 10; } catch(e) { ex = e; } - assertInstanceof(ex, TypeError); - assertEquals(27, super[x]); - assertEquals(27, this[x]); - } - }; - new Derived().mSloppy(); - new Derived().mStrict(); -}()); - - -(function TestSetterKeyedNumericSuperNonWritable() { - var x = 42; - function Base() {} - Object.defineProperty(Base.prototype, x, { value : 27, writable: false }); - function Derived() {} - - Derived.prototype = { - __proto__: Base.prototype, - constructor: Derived, - mSloppy() { - assertEquals(27, super[x]); - assertEquals(27, this[x]); - super[x] = 10; - assertEquals(27, super[x]); - assertEquals(27, this[x]); - }, - mStrict() { - 'use strict'; - assertEquals(27, super[x]); - assertEquals(27, this[x]); - var ex = null; - try { super[x] = 10; } catch(e) { ex = e; } - assertInstanceof(ex, TypeError); - assertEquals(27, super[x]); - assertEquals(27, this[x]); - } - }; - new Derived().mSloppy(); - new Derived().mStrict(); -}()); - - -(function TestSuperCall() { - 'use strict'; - - var baseCalled = 0; - var derivedCalled = 0; - var derivedDerivedCalled = 0; - - class Base { - constructor() { - baseCalled++; - } - } - - class Derived extends Base { - constructor() { - let r = super(); - assertEquals(this, r); - derivedCalled++; - } - } - - assertEquals(Base, Base.prototype.constructor); - assertEquals(Base.prototype, Derived.prototype.__proto__); - - baseCalled = 0; - derivedCalled = 0; - new Derived(); - assertEquals(1, baseCalled); - assertEquals(1, derivedCalled); - - class DerivedDerived extends Derived { - constructor() { - let r = super(); - assertEquals(this, r); - derivedDerivedCalled++; - } - } - - baseCalled = 0; - derivedCalled = 0; - derivedDerivedCalled = 0; - new DerivedDerived(); - assertEquals(1, baseCalled); - assertEquals(1, derivedCalled); - assertEquals(1, derivedDerivedCalled); - - class Base2 { - constructor(v) { - this.fromBase = v; - } - } - class Derived2 extends Base2 { - constructor(v1, v2) { - let r = super(v1); - assertEquals(this, r); - this.fromDerived = v2; - } - } - - var d = new Derived2("base", "derived"); - assertEquals("base", d.fromBase); - assertEquals("derived", d.fromDerived); - - var calls = 0; - class G { - constructor() { - calls++; - } - } - - class F extends Object { - constructor() { - super(); - } - } - F.__proto__ = G; - new F(); - assertEquals(1, calls); - F.__proto__ = function() {}; - new F(); - assertEquals(1, calls); -}()); - - -(function TestExtendsObject() { - 'use strict'; - class F extends Object { } - var f = new F(42); - - assertInstanceof(f, F); - assertInstanceof(f, Object); -}()); - - -(function TestSuperCallErrorCases() { - 'use strict'; - class T extends Object { - constructor() { - super(); - } - } - - T.__proto__ = null; - assertThrows(function() { new T(); }, TypeError); -}()); - - -(function TestSuperPropertyInEval() { - 'use strict'; - let y = 3; - class Base { - m() { return 1; } - get x() { return 2; } - } - class Derived extends Base { - evalM() { - assertEquals(1, eval('super.m()')); - } - evalX() { - assertEquals(2, eval('super.x')); - } - globalEval1() { - assertThrows('super.x', SyntaxError); - assertThrows('super.m()', SyntaxError); - } - globalEval2() { - super.x; - assertThrows('super.x', SyntaxError); - assertThrows('super.m()', SyntaxError); - } - } - let d = new Derived(); - d.globalEval1(); - d.globalEval2(); - d.evalM(); - d.evalX(); -})(); - - -(function TestSuperPropertyInArrow() { - 'use strict'; - let y = 3; - class Base { - m() { return 1; } - get x() { return 2; } - } - class Derived extends Base { - arrow() { - assertSame(super.x, (() => super.x)()); - assertSame(super.m(), (() => super.m())()); - return (() => super.m())(); - } - } - let d = new Derived(); - assertSame(1, d.arrow()); -})(); - - -(function TestSuperInOtherScopes() { - var p = {x: 99}; - var o0 = {__proto__: p, f() { return eval("'use strict'; super.x") }}; - assertEquals(p.x, o0.f()); - var o1 = {__proto__: p, f() { with ({}) return super.x }}; - assertEquals(p.x, o1.f()); - var o2 = {__proto__: p, f({a}) { return super.x }}; - assertEquals(p.x, o2.f({})); - var o3 = {__proto__: p, f(...a) { return super.x }}; - assertEquals(p.x, o3.f()); - var o4 = {__proto__: p, f() { 'use strict'; { let x; return super.x } }}; - assertEquals(p.x, o4.f()); -})(); - - -(function TestSuperCallInOtherScopes() { - class C {constructor() { this.x = 99 }} - class D0 extends C {constructor() { eval("'use strict'; super()") }} - assertEquals(99, (new D0).x); - class D2 extends C {constructor({a}) { super() }} - assertEquals(99, (new D2({})).x); - class D3 extends C {constructor(...a) { super() }} - assertEquals(99, (new D3()).x); - class D4 extends C {constructor() { { let x; super() } }} - assertEquals(99, (new D4).x); -})(); - - -(function TestSuperCallInEval() { - 'use strict'; - class Base { - constructor(x) { - this.x = x; - } - } - class Derived extends Base { - constructor(x) { - let r = eval('super(x)'); - assertEquals(this, r); - } - } - let d = new Derived(42); - assertSame(42, d.x); -})(); - - -(function TestSuperCallInArrow() { - 'use strict'; - class Base { - constructor(x) { - this.x = x; - } - } - class Derived extends Base { - constructor(x) { - let r = (() => super(x))(); - assertEquals(this, r); - } - } - let d = new Derived(42); - assertSame(42, d.x); -})(); - - -(function TestSuperCallEscapes() { - 'use strict'; - class Base { - constructor(x) { - this.x = x; - } - } - - let f; - class Derived extends Base { - constructor() { - f = () => super(2); - } - } - assertThrows(function() { - new Derived(); - }, ReferenceError); - - let o = f(); - assertEquals(2, o.x); - assertInstanceof(o, Derived); - - assertThrows(function() { - f(); - }, ReferenceError); -})(); - - -(function TestSuperCallInLoop() { - 'use strict'; - class Base { - constructor(x) { - this.x = x; - } - } - class Derived extends Base { - constructor(x, n) { - for (var i = 0; i < n; ++i) { - super(x); - } - } - } - - let o = new Derived(23, 1); - assertEquals(23, o.x); - assertInstanceof(o, Derived); - - assertThrows("new Derived(42, 0)", ReferenceError); - assertThrows("new Derived(65, 2)", ReferenceError); -})(); - - -(function TestSuperCallReentrant() { - 'use strict'; - class Base { - constructor(fun) { - this.x = fun(); - } - } - class Derived extends Base { - constructor(x) { - let f = () => super(() => x) - super(f); - } - } - assertThrows("new Derived(23)", ReferenceError); -})(); - - -(function TestSuperCallSpreadInEval() { - 'use strict'; - class Base { - constructor(x) { - this.x = x; - } - } - class Derived extends Base { - constructor(x) { - let r = eval('super(...[x])'); - assertEquals(this, r); - } - } - let d = new Derived(42); - assertSame(42, d.x); -})(); - - -(function TestSuperCallSpreadInArrow() { - 'use strict'; - class Base { - constructor(x) { - this.x = x; - } - } - class Derived extends Base { - constructor(x) { - let r = (() => super(...[x]))(); - assertEquals(this, r); - } - } - let d = new Derived(42); - assertSame(42, d.x); -})(); - -(function TestNullSuperPropertyLoad() { - var obj = { - __proto__: null, - named() { return super.x }, - keyed() { return super[5] } - }; - assertThrows(obj.named, TypeError); - assertThrows(obj.keyed, TypeError); - class C extends null { - named() { return super.x } - keyed() { return super[5] } - } - assertThrows(C.prototype.named, TypeError); - assertThrows(C.prototype.keyed, TypeError); -})(); - -(function TestNullSuperPropertyStore() { - var obj = { - __proto__: null, - named() { super.x = 42 }, - keyed() { super[5] = 42 } - }; - assertThrows(obj.named, TypeError); - assertThrows(obj.keyed, TypeError); - class C extends null { - named() { super.x = 42 } - keyed() { super[5] = 42 } - } - assertThrows(C.prototype.named, TypeError); - assertThrows(C.prototype.keyed, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/symbols.js b/implementation-contributed/v8/mjsunit/es6/symbols.js deleted file mode 100644 index da8f1a4f18e..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/symbols.js +++ /dev/null @@ -1,566 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --allow-natives-syntax - -var symbols = [] - - -// Returns true if the string is a valid -// serialization of Symbols added to the 'symbols' -// array. Adjust if you extend 'symbols' with other -// values. -function isValidSymbolString(s) { - return ["Symbol(66)", "Symbol()"].indexOf(s) >= 0; -} - - -// Test different forms of constructor calls. -function TestNew() { - function indirectSymbol() { return Symbol() } - function indirect() { return indirectSymbol() } - for (var i = 0; i < 2; ++i) { - for (var j = 0; j < 5; ++j) { - symbols.push(Symbol()) - symbols.push(Symbol(undefined)) - symbols.push(Symbol("66")) - symbols.push(Symbol(66)) - symbols.push(Symbol().valueOf()) - symbols.push(indirect()) - } - %OptimizeFunctionOnNextCall(indirect) - indirect() // Call once before GC throws away type feedback. - gc() // Promote existing symbols and then allocate some more. - } - assertThrows(function () { Symbol(Symbol()) }, TypeError) - assertThrows(function () { new Symbol(66) }, TypeError) -} -TestNew() - - -function TestType() { - for (var i in symbols) { - assertEquals("symbol", typeof symbols[i]) - assertTrue(typeof symbols[i] === "symbol") - assertFalse(%SymbolIsPrivate(symbols[i])) - } -} -TestType() - - -function TestPrototype() { - assertSame(Object.prototype, Symbol.prototype.__proto__) - assertSame(Symbol.prototype, Symbol().__proto__) - assertSame(Symbol.prototype, Object(Symbol()).__proto__) - for (var i in symbols) { - assertSame(Symbol.prototype, symbols[i].__proto__) - } -} -TestPrototype() - - -function TestConstructor() { - assertEquals(0, Symbol.length); - assertSame(Function.prototype, Symbol.__proto__) - assertFalse(Object === Symbol.prototype.constructor) - assertFalse(Symbol === Object.prototype.constructor) - assertSame(Symbol, Symbol.prototype.constructor) - assertSame(Symbol, Symbol().__proto__.constructor) - assertSame(Symbol, Object(Symbol()).__proto__.constructor) - for (var i in symbols) { - assertSame(Symbol, symbols[i].__proto__.constructor) - } -} -TestConstructor() - - -function TestValueOf() { - for (var i in symbols) { - assertTrue(symbols[i] === Object(symbols[i]).valueOf()) - assertTrue(symbols[i] === symbols[i].valueOf()) - assertTrue(Symbol.prototype.valueOf.call(Object(symbols[i])) === symbols[i]) - assertTrue(Symbol.prototype.valueOf.call(symbols[i]) === symbols[i]) - } -} -TestValueOf() - - -function TestToString() { - for (var i in symbols) { - assertThrows(function() { new String(symbols[i]) }, TypeError) - assertEquals(symbols[i].toString(), String(symbols[i])) - assertThrows(function() { symbols[i] + "" }, TypeError) - assertThrows(function() { String(Object(symbols[i])) }, TypeError) - assertTrue(isValidSymbolString(symbols[i].toString())) - assertTrue(isValidSymbolString(Object(symbols[i]).toString())) - assertTrue( - isValidSymbolString(Symbol.prototype.toString.call(symbols[i]))) - assertEquals( - "[object Symbol]", Object.prototype.toString.call(symbols[i])) - } -} -TestToString() - - -function TestToBoolean() { - for (var i in symbols) { - assertTrue(Boolean(Object(symbols[i]))) - assertFalse(!Object(symbols[i])) - assertTrue(Boolean(symbols[i]).valueOf()) - assertFalse(!symbols[i]) - assertTrue(!!symbols[i]) - assertTrue(symbols[i] && true) - assertFalse(!symbols[i] && false) - assertTrue(!symbols[i] || true) - assertEquals(1, symbols[i] ? 1 : 2) - assertEquals(2, !symbols[i] ? 1 : 2) - if (!symbols[i]) assertUnreachable(); - if (symbols[i]) {} else assertUnreachable(); - } -} -TestToBoolean() - - -function TestToNumber() { - for (var i in symbols) { - assertThrows(function() { Number(Object(symbols[i])) }, TypeError) - assertThrows(function() { +Object(symbols[i]) }, TypeError) - assertThrows(function() { Number(symbols[i]) }, TypeError) - assertThrows(function() { symbols[i] + 0 }, TypeError) - } -} -TestToNumber() - - -function TestEquality() { - // Every symbol should equal itself, and non-strictly equal its wrapper. - for (var i in symbols) { - assertSame(symbols[i], symbols[i]) - assertEquals(symbols[i], symbols[i]) - assertTrue(Object.is(symbols[i], symbols[i])) - assertTrue(symbols[i] === symbols[i]) - assertTrue(symbols[i] == symbols[i]) - assertFalse(symbols[i] === Object(symbols[i])) - assertFalse(Object(symbols[i]) === symbols[i]) - assertTrue(symbols[i] == Object(symbols[i])) - assertTrue(Object(symbols[i]) == symbols[i]) - assertTrue(symbols[i] === symbols[i].valueOf()) - assertTrue(symbols[i].valueOf() === symbols[i]) - assertTrue(symbols[i] == symbols[i].valueOf()) - assertTrue(symbols[i].valueOf() == symbols[i]) - assertFalse(Object(symbols[i]) === Object(symbols[i])) - assertEquals(Object(symbols[i]).valueOf(), Object(symbols[i]).valueOf()) - } - - // All symbols should be distinct. - for (var i = 0; i < symbols.length; ++i) { - for (var j = i + 1; j < symbols.length; ++j) { - assertFalse(Object.is(symbols[i], symbols[j])) - assertFalse(symbols[i] === symbols[j]) - assertFalse(symbols[i] == symbols[j]) - } - } - - // Symbols should not be equal to any other value (and the test terminates). - var values = [347, 1.275, NaN, "string", null, undefined, {}, function() {}] - for (var i in symbols) { - for (var j in values) { - assertFalse(symbols[i] === values[j]) - assertFalse(values[j] === symbols[i]) - assertFalse(symbols[i] == values[j]) - assertFalse(values[j] == symbols[i]) - } - } -} -TestEquality() - - -function TestGet() { - for (var i in symbols) { - assertTrue(isValidSymbolString(symbols[i].toString())) - assertEquals(symbols[i], symbols[i].valueOf()) - assertEquals(undefined, symbols[i].a) - assertEquals(undefined, symbols[i]["a" + "b"]) - assertEquals(undefined, symbols[i]["" + "1"]) - assertEquals(undefined, symbols[i][62]) - } -} -TestGet() - - -function TestSet() { - for (var i in symbols) { - symbols[i].toString = 0 - assertTrue(isValidSymbolString(symbols[i].toString())) - symbols[i].valueOf = 0 - assertEquals(symbols[i], symbols[i].valueOf()) - symbols[i].a = 0 - assertEquals(undefined, symbols[i].a) - symbols[i]["a" + "b"] = 0 - assertEquals(undefined, symbols[i]["a" + "b"]) - symbols[i][62] = 0 - assertEquals(undefined, symbols[i][62]) - } -} -TestSet() - - -// Test Symbol wrapping/boxing over non-builtins. -Symbol.prototype.getThisProto = function () { - return Object.getPrototypeOf(this); -} -function TestCall() { - for (var i in symbols) { - assertTrue(symbols[i].getThisProto() === Symbol.prototype) - } -} -TestCall() - - -function TestCollections() { - var set = new Set - var map = new Map - for (var i in symbols) { - set.add(symbols[i]) - map.set(symbols[i], i) - } - assertEquals(symbols.length, set.size) - assertEquals(symbols.length, map.size) - for (var i in symbols) { - assertTrue(set.has(symbols[i])) - assertTrue(map.has(symbols[i])) - assertEquals(i, map.get(symbols[i])) - } - for (var i in symbols) { - assertTrue(set.delete(symbols[i])) - assertTrue(map.delete(symbols[i])) - } - assertEquals(0, set.size) - assertEquals(0, map.size) -} -TestCollections() - - - -function TestKeySet(obj) { - assertTrue(%HasFastProperties(obj)) - // Set the even symbols via assignment. - for (var i = 0; i < symbols.length; i += 2) { - obj[symbols[i]] = i - // Object should remain in fast mode until too many properties were added. - assertTrue(%HasFastProperties(obj) || i >= 30) - } -} - - -function TestKeyDefine(obj) { - // Set the odd symbols via defineProperty (as non-enumerable). - for (var i = 1; i < symbols.length; i += 2) { - Object.defineProperty(obj, symbols[i], {value: i, configurable: true}) - } -} - - -function TestKeyGet(obj) { - var obj2 = Object.create(obj) - for (var i in symbols) { - assertEquals(i|0, obj[symbols[i]]) - assertEquals(i|0, obj2[symbols[i]]) - } -} - - -function TestKeyHas(obj) { - for (var i in symbols) { - assertTrue(symbols[i] in obj) - assertTrue(Object.prototype.hasOwnProperty.call(obj, symbols[i])) - } -} - - -function TestKeyEnum(obj) { - for (var name in obj) { - assertEquals("string", typeof name) - } -} - - -function TestKeyNames(obj) { - assertEquals(0, Object.keys(obj).length) - - var names = Object.getOwnPropertyNames(obj) - for (var i in names) { - assertEquals("string", typeof names[i]) - } -} - - -function TestGetOwnPropertySymbols(obj) { - var syms = Object.getOwnPropertySymbols(obj) - assertEquals(syms.length, symbols.length) - for (var i in syms) { - assertEquals("symbol", typeof syms[i]) - } -} - - -function TestKeyDescriptor(obj) { - for (var i in symbols) { - var desc = Object.getOwnPropertyDescriptor(obj, symbols[i]) - assertEquals(i|0, desc.value) - assertTrue(desc.configurable) - assertEquals(i % 2 == 0, desc.writable) - assertEquals(i % 2 == 0, desc.enumerable) - assertEquals(i % 2 == 0, - Object.prototype.propertyIsEnumerable.call(obj, symbols[i])) - } -} - - -function TestKeyDelete(obj) { - for (var i in symbols) { - delete obj[symbols[i]] - } - for (var i in symbols) { - assertEquals(undefined, Object.getOwnPropertyDescriptor(obj, symbols[i])) - } -} - - -var objs = [{}, [], Object.create({}), Object(1), new Map, function(){}] - -for (var i in objs) { - var obj = objs[i] - TestKeySet(obj) - TestKeyDefine(obj) - TestKeyGet(obj) - TestKeyHas(obj) - TestKeyEnum(obj) - TestKeyNames(obj) - TestGetOwnPropertySymbols(obj) - TestKeyDescriptor(obj) - TestKeyDelete(obj) -} - - -function TestDefineProperties() { - var properties = {} - for (var i in symbols) { - Object.defineProperty( - properties, symbols[i], {value: {value: i}, enumerable: i % 2 === 0}) - } - var o = Object.defineProperties({}, properties) - for (var i in symbols) { - assertEquals(i % 2 === 0, symbols[i] in o) - } -} -TestDefineProperties() - - -function TestCreate() { - var properties = {} - for (var i in symbols) { - Object.defineProperty( - properties, symbols[i], {value: {value: i}, enumerable: i % 2 === 0}) - } - var o = Object.create(Object.prototype, properties) - for (var i in symbols) { - assertEquals(i % 2 === 0, symbols[i] in o) - } -} -TestCreate() - - -function TestCachedKeyAfterScavenge() { - gc(); - // Keyed property lookup are cached. Hereby we assume that the keys are - // tenured, so that we only have to clear the cache between mark compacts, - // but not between scavenges. This must also apply for symbol keys. - var key = Symbol("key"); - var a = {}; - a[key] = "abc"; - - for (var i = 0; i < 100000; i++) { - a[key] += "a"; // Allocations cause a scavenge. - } -} -TestCachedKeyAfterScavenge(); - - -function TestGetOwnPropertySymbolsWithProto() { - // We need to be have fast properties to have insertion order for property - // keys. The current limit is currently 30 properties. - var syms = symbols.slice(0, 30); - var proto = {} - var object = Object.create(proto) - for (var i = 0; i < syms.length; i++) { - // Even on object, odd on proto. - if (i % 2) { - proto[syms[i]] = i - } else { - object[syms[i]] = i - } - } - - assertTrue(%HasFastProperties(object)); - - var objectOwnSymbols = Object.getOwnPropertySymbols(object) - assertEquals(objectOwnSymbols.length, syms.length / 2) - - for (var i = 0; i < objectOwnSymbols.length; i++) { - assertEquals(objectOwnSymbols[i], syms[i * 2]) - } -} -TestGetOwnPropertySymbolsWithProto() - - -function TestWellKnown() { - var symbols = [ - "hasInstance", - // TODO(rossberg): reactivate once implemented. - // "isConcatSpreadable", "isRegExp", - "iterator", /* "toStringTag", */ "unscopables" - ] - - for (var i in symbols) { - var name = symbols[i] - var desc = Object.getOwnPropertyDescriptor(Symbol, name) - assertSame("symbol", typeof desc.value) - assertSame("Symbol(Symbol." + name + ")", desc.value.toString()) - assertFalse(desc.writable) - assertFalse(desc.configurable) - assertFalse(desc.enumerable) - - assertFalse(Symbol.for("Symbol." + name) === desc.value) - assertTrue(Symbol.keyFor(desc.value) === undefined) - } -} -TestWellKnown() - - -function TestRegistry() { - var symbol1 = Symbol.for("x1") - var symbol2 = Symbol.for("x2") - assertFalse(symbol1 === symbol2) - - assertSame(symbol1, Symbol.for("x1")) - assertSame(symbol2, Symbol.for("x2")) - assertSame("x1", Symbol.keyFor(symbol1)) - assertSame("x2", Symbol.keyFor(symbol2)) - - assertSame(Symbol.for("1"), Symbol.for(1)) - assertThrows(function() { Symbol.keyFor("bla") }, TypeError) - assertThrows(function() { Symbol.keyFor({}) }, TypeError) - - var realm = Realm.create() - assertFalse(Symbol === Realm.eval(realm, "Symbol")) - assertFalse(Symbol.for === Realm.eval(realm, "Symbol.for")) - assertFalse(Symbol.keyFor === Realm.eval(realm, "Symbol.keyFor")) - assertSame(Symbol.create, Realm.eval(realm, "Symbol.create")) - assertSame(Symbol.iterator, Realm.eval(realm, "Symbol.iterator")) - - assertSame(symbol1, Realm.eval(realm, "Symbol.for")("x1")) - assertSame(symbol1, Realm.eval(realm, "Symbol.for('x1')")) - assertSame("x1", Realm.eval(realm, "Symbol.keyFor")(symbol1)) - Realm.shared = symbol1 - assertSame("x1", Realm.eval(realm, "Symbol.keyFor(Realm.shared)")) - - var symbol3 = Realm.eval(realm, "Symbol.for('x3')") - assertFalse(symbol1 === symbol3) - assertFalse(symbol2 === symbol3) - assertSame(symbol3, Symbol.for("x3")) - assertSame("x3", Symbol.keyFor(symbol3)) -} -TestRegistry() - - -function TestGetOwnPropertySymbolsOnPrimitives() { - assertEquals(Object.getOwnPropertySymbols(true), []); - assertEquals(Object.getOwnPropertySymbols(5000), []); - assertEquals(Object.getOwnPropertySymbols("OK"), []); -} -TestGetOwnPropertySymbolsOnPrimitives(); - - -function TestComparison() { - function lt() { var a = Symbol(); var b = Symbol(); a < b; } - function gt() { var a = Symbol(); var b = Symbol(); a > b; } - function le() { var a = Symbol(); var b = Symbol(); a <= b; } - function ge() { var a = Symbol(); var b = Symbol(); a >= b; } - function lt_same() { var a = Symbol(); a < a; } - function gt_same() { var a = Symbol(); a > a; } - function le_same() { var a = Symbol(); a <= a; } - function ge_same() { var a = Symbol(); a >= a; } - - var throwFuncs = [lt, gt, le, ge, lt_same, gt_same, le_same, ge_same]; - - for (var f of throwFuncs) { - assertThrows(f, TypeError); - %OptimizeFunctionOnNextCall(f); - assertThrows(f, TypeError); - assertThrows(f, TypeError); - } -} -TestComparison(); - - -// Make sure that throws occur in the context of the Symbol function. -function TestContext() { - var r = Realm.create(); - var rSymbol = Realm.eval(r, "Symbol"); - var rError = Realm.eval(r, "TypeError"); - - function verifier(symbol, error) { - try { - new symbol(); - } catch(e) { - return e.__proto__ === error.__proto__; - } - assertTrue(false); // should never get here. - } - - assertTrue(verifier(Symbol, TypeError())); - assertTrue(verifier(rSymbol, rError())); - assertFalse(verifier(Symbol, rError())); - assertFalse(verifier(rSymbol, TypeError())); -} -TestContext(); - - -function TestStringify(expected, input) { - assertEquals(expected, JSON.stringify(input)); - assertEquals(expected, JSON.stringify(input, (key, value) => value)); - assertEquals(JSON.stringify(input, null, "="), - JSON.stringify(input, (key, value) => value, "=")); -} - -TestStringify(undefined, Symbol("a")); -TestStringify('[{}]', [Object(Symbol())]); -var symbol_wrapper = Object(Symbol("a")) -TestStringify('{}', symbol_wrapper); -symbol_wrapper.a = 1; -TestStringify('{"a":1}', symbol_wrapper); diff --git a/implementation-contributed/v8/mjsunit/es6/templates.js b/implementation-contributed/v8/mjsunit/es6/templates.js deleted file mode 100644 index 3e113cb8295..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/templates.js +++ /dev/null @@ -1,867 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var num = 5; -var str = "str"; -function fn() { return "result"; } -var obj = { - num: num, - str: str, - fn: function() { return "result"; } -}; - -(function testBasicExpressions() { - assertEquals("foo 5 bar", `foo ${num} bar`); - assertEquals("foo str bar", `foo ${str} bar`); - assertEquals("foo [object Object] bar", `foo ${obj} bar`); - assertEquals("foo result bar", `foo ${fn()} bar`); - assertEquals("foo 5 bar", `foo ${obj.num} bar`); - assertEquals("foo str bar", `foo ${obj.str} bar`); - assertEquals("foo result bar", `foo ${obj.fn()} bar`); -})(); - -(function testExpressionsContainingTemplates() { - assertEquals("foo bar 5", `foo ${`bar ${num}`}`); -})(); - -(function testMultilineTemplates() { - assertEquals("foo\n bar\n baz", `foo - bar - baz`); - - assertEquals("foo\n bar\n baz", eval("`foo\r\n bar\r baz`")); -})(); - -(function testLineContinuation() { - assertEquals("\n", `\ - -`); -})(); - -(function testTaggedTemplates() { - var calls = 0; - (function(s) { - calls++; - })`test`; - assertEquals(1, calls); - - calls = 0; - // assert tag is invoked in right context - obj = { - fn: function() { - calls++; - assertEquals(obj, this); - } - }; - - obj.fn`test`; - assertEquals(1, calls); - - calls = 0; - // Simple templates only have a callSiteObj - (function(s) { - calls++; - assertEquals(1, arguments.length); - })`test`; - assertEquals(1, calls); - - // Templates containing expressions have the values of evaluated expressions - calls = 0; - (function(site, n, s, o, f, r) { - calls++; - assertEquals(6, arguments.length); - assertEquals("number", typeof n); - assertEquals("string", typeof s); - assertEquals("object", typeof o); - assertEquals("function", typeof f); - assertEquals("result", r); - })`${num}${str}${obj}${fn}${fn()}`; - assertEquals(1, calls); - - // The TV and TRV of NoSubstitutionTemplate :: `` is the empty code unit - // sequence. - calls = 0; - (function(s) { - calls++; - assertEquals(1, s.length); - assertEquals(1, s.raw.length); - assertEquals("", s[0]); - - // Failure: expected <""> found <"foo barfoo barfoo foo foo foo testtest"> - assertEquals("", s.raw[0]); - })``; - assertEquals(1, calls); - - // The TV and TRV of TemplateHead :: `${ is the empty code unit sequence. - calls = 0; - (function(s) { - calls++; - assertEquals(2, s.length); - assertEquals(2, s.raw.length); - assertEquals("", s[0]); - assertEquals("", s.raw[0]); - })`${1}`; - assertEquals(1, calls); - - // The TV and TRV of TemplateMiddle :: }${ is the empty code unit sequence. - calls = 0; - (function(s) { - calls++; - assertEquals(3, s.length); - assertEquals(3, s.raw.length); - assertEquals("", s[1]); - assertEquals("", s.raw[1]); - })`${1}${2}`; - assertEquals(1, calls); - - // The TV and TRV of TemplateTail :: }` is the empty code unit sequence. - calls = 0; - (function(s) { - calls++; - assertEquals(2, s.length); - assertEquals(2, s.raw.length); - assertEquals("", s[1]); - assertEquals("", s.raw[1]); - })`${1}`; - assertEquals(1, calls); - - // The TV of NoSubstitutionTemplate :: ` TemplateCharacters ` is the TV of - // TemplateCharacters. - calls = 0; - (function(s) { calls++; assertEquals("foo", s[0]); })`foo`; - assertEquals(1, calls); - - // The TV of TemplateHead :: ` TemplateCharacters ${ is the TV of - // TemplateCharacters. - calls = 0; - (function(s) { calls++; assertEquals("foo", s[0]); })`foo${1}`; - assertEquals(1, calls); - - // The TV of TemplateMiddle :: } TemplateCharacters ${ is the TV of - // TemplateCharacters. - calls = 0; - (function(s) { calls++; assertEquals("foo", s[1]); })`${1}foo${2}`; - assertEquals(1, calls); - - // The TV of TemplateTail :: } TemplateCharacters ` is the TV of - // TemplateCharacters. - calls = 0; - (function(s) { calls++; assertEquals("foo", s[1]); })`${1}foo`; - assertEquals(1, calls); - - // The TV of TemplateCharacters :: TemplateCharacter is the TV of - // TemplateCharacter. - calls = 0; - (function(s) { calls++; assertEquals("f", s[0]); })`f`; - assertEquals(1, calls); - - // The TV of TemplateCharacter :: $ is the code unit value 0x0024. - calls = 0; - (function(s) { calls++; assertEquals("$", s[0]); })`$`; - assertEquals(1, calls); - - // The TV of TemplateCharacter :: \ EscapeSequence is the CV of - // EscapeSequence. - calls = 0; - (function(s) { calls++; assertEquals("안녕", s[0]); })`\uc548\uB155`; - (function(s) { calls++; assertEquals("\xff", s[0]); })`\xff`; - (function(s) { calls++; assertEquals("\n", s[0]); })`\n`; - assertEquals(3, calls); - - // The TV of TemplateCharacter :: LineContinuation is the TV of - // LineContinuation. The TV of LineContinuation :: \ LineTerminatorSequence is - // the empty code unit sequence. - calls = 0; - (function(s) { calls++; assertEquals("", s[0]); })`\ -`; - assertEquals(1, calls); - - // The TRV of NoSubstitutionTemplate :: ` TemplateCharacters ` is the TRV of - // TemplateCharacters. - calls = 0; - (function(s) { calls++; assertEquals("test", s.raw[0]); })`test`; - assertEquals(1, calls); - - // The TRV of TemplateHead :: ` TemplateCharacters ${ is the TRV of - // TemplateCharacters. - calls = 0; - (function(s) { calls++; assertEquals("test", s.raw[0]); })`test${1}`; - assertEquals(1, calls); - - // The TRV of TemplateMiddle :: } TemplateCharacters ${ is the TRV of - // TemplateCharacters. - calls = 0; - (function(s) { calls++; assertEquals("test", s.raw[1]); })`${1}test${2}`; - assertEquals(1, calls); - - // The TRV of TemplateTail :: } TemplateCharacters ` is the TRV of - // TemplateCharacters. - calls = 0; - (function(s) { calls++; assertEquals("test", s.raw[1]); })`${1}test`; - assertEquals(1, calls); - - // The TRV of TemplateCharacters :: TemplateCharacter is the TRV of - // TemplateCharacter. - calls = 0; - (function(s) { calls++; assertEquals("f", s.raw[0]); })`f`; - assertEquals(1, calls); - - // The TRV of TemplateCharacter :: $ is the code unit value 0x0024. - calls = 0; - (function(s) { calls++; assertEquals("\u0024", s.raw[0]); })`$`; - assertEquals(1, calls); - - // The TRV of EscapeSequence :: 0 is the code unit value 0x0030. - calls = 0; - (function(s) { calls++; assertEquals("\u005C\u0030", s.raw[0]); })`\0`; - assertEquals(1, calls); - - // The TRV of TemplateCharacter :: \ EscapeSequence is the sequence consisting - // of the code unit value 0x005C followed by the code units of TRV of - // EscapeSequence. - - // The TRV of EscapeSequence :: HexEscapeSequence is the TRV of the - // HexEscapeSequence. - calls = 0; - (function(s) { calls++; assertEquals("\u005Cxff", s.raw[0]); })`\xff`; - assertEquals(1, calls); - - // The TRV of EscapeSequence :: UnicodeEscapeSequence is the TRV of the - // UnicodeEscapeSequence. - calls = 0; - (function(s) { calls++; assertEquals("\u005Cuc548", s.raw[0]); })`\uc548`; - assertEquals(1, calls); - - // The TRV of CharacterEscapeSequence :: SingleEscapeCharacter is the TRV of - // the SingleEscapeCharacter. - calls = 0; - (function(s) { calls++; assertEquals("\u005C\u0027", s.raw[0]); })`\'`; - (function(s) { calls++; assertEquals("\u005C\u0022", s.raw[0]); })`\"`; - (function(s) { calls++; assertEquals("\u005C\u005C", s.raw[0]); })`\\`; - (function(s) { calls++; assertEquals("\u005Cb", s.raw[0]); })`\b`; - (function(s) { calls++; assertEquals("\u005Cf", s.raw[0]); })`\f`; - (function(s) { calls++; assertEquals("\u005Cn", s.raw[0]); })`\n`; - (function(s) { calls++; assertEquals("\u005Cr", s.raw[0]); })`\r`; - (function(s) { calls++; assertEquals("\u005Ct", s.raw[0]); })`\t`; - (function(s) { calls++; assertEquals("\u005Cv", s.raw[0]); })`\v`; - (function(s) { calls++; assertEquals("\u005C`", s.raw[0]); })`\``; - assertEquals(10, calls); - - // The TRV of CharacterEscapeSequence :: NonEscapeCharacter is the CV of the - // NonEscapeCharacter. - calls = 0; - (function(s) { calls++; assertEquals("\u005Cz", s.raw[0]); })`\z`; - assertEquals(1, calls); - - // The TRV of LineTerminatorSequence :: is the code unit value 0x000A. - // The TRV of LineTerminatorSequence :: is the code unit value 0x000A. - // The TRV of LineTerminatorSequence :: is the sequence consisting of - // the code unit value 0x000A. - calls = 0; - function testRawLineNormalization(cs) { - calls++; - assertEquals(cs.raw[0], "\n\n\n"); - assertEquals(cs.raw[1], "\n\n\n"); - } - eval("testRawLineNormalization`\r\n\n\r${1}\r\n\n\r`"); - assertEquals(1, calls); - - // The TRV of LineContinuation :: \ LineTerminatorSequence is the sequence - // consisting of the code unit value 0x005C followed by the code units of TRV - // of LineTerminatorSequence. - calls = 0; - function testRawLineContinuation(cs) { - calls++; - assertEquals(cs.raw[0], "\u005C\n\u005C\n\u005C\n"); - assertEquals(cs.raw[1], "\u005C\n\u005C\n\u005C\n"); - } - eval("testRawLineContinuation`\\\r\n\\\n\\\r${1}\\\r\n\\\n\\\r`"); - assertEquals(1, calls); -})(); - - -(function testCallSiteObj() { - var calls = 0; - function tag(cs) { - calls++; - assertTrue(cs.hasOwnProperty("raw")); - assertTrue(Object.isFrozen(cs)); - assertTrue(Object.isFrozen(cs.raw)); - var raw = Object.getOwnPropertyDescriptor(cs, "raw"); - assertFalse(raw.writable); - assertFalse(raw.configurable); - assertFalse(raw.enumerable); - assertEquals(Array.prototype, Object.getPrototypeOf(cs.raw)); - assertTrue(Array.isArray(cs.raw)); - assertEquals(Array.prototype, Object.getPrototypeOf(cs)); - assertTrue(Array.isArray(cs)); - - var cooked0 = Object.getOwnPropertyDescriptor(cs, "0"); - assertFalse(cooked0.writable); - assertFalse(cooked0.configurable); - assertTrue(cooked0.enumerable); - - var raw0 = Object.getOwnPropertyDescriptor(cs.raw, "0"); - assertFalse(raw0.writable); - assertFalse(raw0.configurable); - assertTrue(raw0.enumerable); - - var length = Object.getOwnPropertyDescriptor(cs, "length"); - assertFalse(length.writable); - assertFalse(length.configurable); - assertFalse(length.enumerable); - - length = Object.getOwnPropertyDescriptor(cs.raw, "length"); - assertFalse(length.writable); - assertFalse(length.configurable); - assertFalse(length.enumerable); - } - tag`${1}`; - assertEquals(1, calls); -})(); - - -(function testUTF16ByteOrderMark() { - assertEquals("\uFEFFtest", `\uFEFFtest`); - assertEquals("\uFEFFtest", eval("`\uFEFFtest`")); -})(); - - -(function testStringRawAsTagFn() { - assertEquals("\\u0065\\`\\r\\r\\n\\ntestcheck", - String.raw`\u0065\`\r\r\n\n${"test"}check`); - assertEquals("\\\n\\\n\\\n", eval("String.raw`\\\r\\\r\n\\\n`")); - assertEquals("", String.raw``); -})(); - - -(function testCallSiteCaching() { - var callSites = []; - function tag(cs) { callSites.push(cs); } - var a = 1; - var b = 2; - - // Call-sites are cached by ParseNode. Same tag call in a loop - // means same template object - for (var i = 0; i < 2; ++i) { - tag`head${i == 0 ? a : b}tail`; - } - assertEquals(2, callSites.length); - assertSame(callSites[0], callSites[1]); - - // Tag calls within eval() never have the same ParseNode as the same tag - // call from a different eval() invocation. - for (var i = 0; i < 2; ++i) { - eval("tag`head${i == 0 ? a : b}tail`"); - } - assertEquals(4, callSites.length); - assertTrue(callSites[1] !== callSites[2]); - assertTrue(callSites[2] !== callSites[3]); - - (new Function("tag", "a", "b", "return tag`head${a}tail`;"))(tag, 1, 2); - assertEquals(5, callSites.length); - assertTrue(callSites[3] !== callSites[4]); - - (new Function("tag", "a", "b", "return tag`head${b}tail`;"))(tag, 1, 2); - assertEquals(6, callSites.length); - assertTrue(callSites[4] !== callSites[5]); - - callSites = []; - - tag`foo${a}bar`; - tag`foo\${.}bar`; - assertEquals(2, callSites.length); - assertEquals(2, callSites[0].length); - assertEquals(1, callSites[1].length); - - callSites = []; - - for (var i = 0; i < 2; ++i) { - eval("tag`\\\r\n\\\n\\\r`"); - } - assertEquals(2, callSites.length); - assertTrue(callSites[0] !== callSites[1]); - assertEquals("", callSites[0][0]); - assertEquals("\\\n\\\n\\\n", callSites[0].raw[0]); - - callSites = []; - - for (var i = 0; i < 2; ++i) { - tag`\uc548\ub155`; - } - assertEquals(2, callSites.length); - assertSame(callSites[0], callSites[1]); - assertEquals("안녕", callSites[0][0]); - assertEquals("\\uc548\\ub155", callSites[0].raw[0]); - - callSites = []; - - tag`\uc548\ub155`; - tag`안녕`; - assertEquals(2, callSites.length); - assertTrue(callSites[0] !== callSites[1]); - assertEquals("안녕", callSites[0][0]); - assertEquals("\\uc548\\ub155", callSites[0].raw[0]); - assertEquals("안녕", callSites[1][0]); - assertEquals("안녕", callSites[1].raw[0]); - - // Extra-thorough UTF8 decoding test. - callSites = []; - - tag`Iñtërnâtiônàlizætiøn\u2603\uD83D\uDCA9`; - tag`Iñtërnâtiônàlizætiøn☃💩`; - - assertEquals(2, callSites.length); - assertTrue(callSites[0] !== callSites[1]); - assertEquals("Iñtërnâtiônàlizætiøn☃💩", callSites[0][0]); - assertEquals( - "Iñtërnâtiônàlizætiøn\\u2603\\uD83D\\uDCA9", callSites[0].raw[0]); - assertEquals("Iñtërnâtiônàlizætiøn☃💩", callSites[1][0]); - assertEquals("Iñtërnâtiônàlizætiøn☃💩", callSites[1].raw[0]); -})(); - - -(function testExtendedArrayPrototype() { - Object.defineProperty(Array.prototype, 0, { - set: function() { - assertUnreachable(); - }, - configurable: true - }); - function tag(){} - tag`a${1}b`; - delete Array.prototype[0]; -})(); - - -(function testRawLineNormalization() { - function raw0(callSiteObj) { - return callSiteObj.raw[0]; - } - assertEquals(eval("raw0`\r`"), "\n"); - assertEquals(eval("raw0`\r\n`"), "\n"); - assertEquals(eval("raw0`\r\r\n`"), "\n\n"); - assertEquals(eval("raw0`\r\n\r\n`"), "\n\n"); - assertEquals(eval("raw0`\r\r\r\n`"), "\n\n\n"); -})(); - - -(function testHarmonyUnicode() { - function raw0(callSiteObj) { - return callSiteObj.raw[0]; - } - assertEquals(raw0`a\u{62}c`, "a\\u{62}c"); - assertEquals(raw0`a\u{000062}c`, "a\\u{000062}c"); - assertEquals(raw0`a\u{0}c`, "a\\u{0}c"); - - assertEquals(`a\u{62}c`, "abc"); - assertEquals(`a\u{000062}c`, "abc"); -})(); - - -(function testLiteralAfterRightBrace() { - // Regression test for https://code.google.com/p/v8/issues/detail?id=3734 - function f() {} - `abc`; - - function g() {}`def`; - - { - // block - } - `ghi`; - - { - // block - }`jkl`; -})(); - - -(function testLegacyOctal() { - assertEquals('\u0000', `\0`); - assertEquals('\u0000a', `\0a`); - for (var i = 0; i < 10; i++) { - var code = "`\\0" + i + "`"; - assertThrows(code, SyntaxError); - // Not an error if tagged. - code = "(function(){})" + code; - assertDoesNotThrow(code, SyntaxError); - } - - assertEquals('\\0', String.raw`\0`); -})(); - - -(function testSyntaxErrorsNonEscapeCharacter() { - assertThrows("`\\x`", SyntaxError); - assertThrows("`\\u`", SyntaxError); - for (var i = 1; i < 8; i++) { - var code = "`\\" + i + "`"; - assertThrows(code, SyntaxError); - // Not an error if tagged. - code = "(function(){})" + code; - assertDoesNotThrow(code, SyntaxError); - } -})(); - - -(function testValidNumericEscapes() { - assertEquals("8", `\8`); - assertEquals("9", `\9`); -})(); - - -(function testLegacyOctalEscapesInExpressions() { - // Allowed in sloppy expression - assertEquals("\x07", `${"\07"}`); - - // Disallowed in template tail - assertThrows("`${\"\\07\"}\\07`", SyntaxError); - - // Disallowed in strict expression - assertThrows("`${(function() { \"use strict\"; return \"\\07\"; })()}`", - SyntaxError); -})(); - - -var global = this; -(function testCallNew() { - "use strict"; - var called = false; - var calledWith; - global.log = function(x) { called = true; calledWith = x; } - - assertInstanceof(new Function`log("test")`, Object); - assertTrue(called); - assertSame("test", calledWith); - delete global.log; -})(); - - -(function testCallNew2() { - "use strict"; - var log = []; - function tag(x) { - log.push(x); - if (!(this instanceof tag)) { - return tag; - } - this.x = x === void 0 ? null : x; - return this; - } - // No arguments passed to constructor - var instance = new tag`x``y``z`; - assertInstanceof(instance, tag); - assertSame(tag.prototype, Object.getPrototypeOf(instance)); - assertEquals({ x: null }, instance); - assertEquals([["x"], ["y"], ["z"], undefined], log); - - // Arguments passed to constructor - log.length = 0; - instance = new tag`x2` `y2` `z2` (`test`); - assertInstanceof(instance, tag); - assertSame(tag.prototype, Object.getPrototypeOf(instance)); - assertEquals({ x: "test" }, instance); - assertEquals([["x2"], ["y2"], ["z2"], "test"], log); -})(); - - -(function testCallResultOfTagFn() { - "use strict"; - var i = 0; - var raw = []; - function tag(cs) { - var args = Array.prototype.slice.call(arguments); - var text = String.raw.apply(null, args); - if (i++ < 2) { - raw.push("tag;" + text); - return tag; - } - - raw.push("raw;" + text); - return text; - } - assertEquals("test3", tag`test1``test2``test3`); - assertEquals([ - "tag;test1", - "tag;test2", - "raw;test3" - ], raw); -})(); - - -(function testReturnValueAsTagFn() { - "use strict"; - var i = 0; - function makeTag() { - return function tag(cs) { - var args = Array.prototype.slice.call(arguments, 1); - var rcs = []; - rcs.raw = cs.map(function(s) { - return '!' + s + '!'; - }); - args.unshift(rcs); - return String.raw.apply(null, args); - } - } - assertEquals('!hi!', makeTag()`hi`); - assertEquals('!test!0!test!', makeTag()`test${0}test`); - assertEquals('!!', makeTag()``); -}); - - -(function testToStringSubstitutions() { - var a = { - toString: function() { return "a"; }, - valueOf: function() { return "-a-"; } - }; - var b = { - toString: function() { return "b"; }, - valueOf: function() { return "-b-"; } - }; - assertEquals("a", `${a}`); - assertEquals("ab", `${a}${b}`); - assertEquals("-a--b-", `${a + b}`); - assertEquals("-a-", `${a + ""}`); - assertEquals("1a", `1${a}`); - assertEquals("1a2", `1${a}2`); - assertEquals("1a2b", `1${a}2${b}`); - assertEquals("1a2b3", `1${a}2${b}3`); -})(); - - -(function testToStringSubstitutionsOrder() { - var subs = []; - var log = []; - function getter(name, value) { - return { - get: function() { - log.push("get" + name); - return value; - }, - set: function(v) { - log.push("set" + name); - } - }; - } - Object.defineProperties(subs, { - 0: getter(0, "a"), - 1: getter(1, "b"), - 2: getter(2, "c") - }); - - assertEquals("-a-b-c-", `-${subs[0]}-${subs[1]}-${subs[2]}-`); - assertArrayEquals(["get0", "get1", "get2"], log); -})(); - - -(function testTaggedToStringSubstitutionsOrder() { - var subs = []; - var log = []; - var tagged = []; - function getter(name, value) { - return { - get: function() { - log.push("get" + name); - return value; - }, - set: function(v) { - log.push("set" + name); - } - }; - } - Object.defineProperties(subs, { - 0: getter(0, 1), - 1: getter(1, 2), - 2: getter(2, 3) - }); - - function tag(cs) { - var n_substitutions = arguments.length - 1; - var n_cooked = cs.length; - var e = cs[0]; - var i = 0; - assertEquals(n_cooked, n_substitutions + 1); - while (i < n_substitutions) { - var sub = arguments[i++ + 1]; - var tail = cs[i]; - tagged.push(sub); - e = e.concat(sub, tail); - } - return e; - } - - assertEquals("-1-2-3-", tag`-${subs[0]}-${subs[1]}-${subs[2]}-`); - assertArrayEquals(["get0", "get1", "get2"], log); - assertArrayEquals([1, 2, 3], tagged); - - tagged.length = 0; - log.length = 0; - assertEquals("-1-", tag`-${subs[0]}-`); - assertArrayEquals(["get0"], log); - assertArrayEquals([1], tagged); -})(); - - -// Since the first argument to the tag function is always an array, -// eval calls will always just return that array. -(function testEvalTagStrict() { - "use strict"; - var f = (x) => eval`a${x}b`; - var result = f(); - assertEquals(["a", "b"], result); - assertSame(result, f()); -})(); - - -(function testEvalTagSloppy() { - var f = (x) => eval`a${x}b`; - var result = f(); - assertEquals(["a", "b"], result); - assertSame(result, f()); -})(); - -(function testTaggedTemplateInvalidAssignmentTargetStrict() { - "use strict"; - function f() {} - assertThrows(() => Function("++f`foo`"), ReferenceError); - assertThrows(() => Function("f`foo`++"), ReferenceError); - assertThrows(() => Function("--f`foo`"), ReferenceError); - assertThrows(() => Function("f`foo`--"), ReferenceError); - assertThrows(() => Function("f`foo` = 1"), ReferenceError); -})(); - -(function testTaggedTemplateInvalidAssignmentTargetSloppy() { - function f() {} - assertThrows(() => Function("++f`foo`"), ReferenceError); - assertThrows(() => Function("f`foo`++"), ReferenceError); - assertThrows(() => Function("--f`foo`"), ReferenceError); - assertThrows(() => Function("f`foo`--"), ReferenceError); - assertThrows(() => Function("f`foo` = 1"), ReferenceError); -})(); - -// Disable eval caching if a tagged template occurs in a nested function -var v = 0; -var templates = []; -function tag(callSite) { templates.push(callSite); } -for (v = 0; v < 6; v += 2) { - eval("(function() { for (var i = 0; i < 2; ++i) tag`Hello${v}world` })()"); - assertSame(templates[v], templates[v + 1]); -} -assertNotSame(templates[0], templates[2]); -assertNotSame(templates[0], templates[4]); -assertNotSame(templates[1], templates[3]); -assertNotSame(templates[1], templates[5]); -assertNotSame(templates[2], templates[4]); -assertNotSame(templates[3], templates[5]); - -function makeSource1(id) { - return `function f() { - for (var i = 0; i < 2; ++i) tag\`Hello${id}world\`; - } - f();`; -} -templates = []; -for (v = 0; v < 6; v += 2) { - eval(makeSource1(v)); - assertSame(templates[v], templates[v + 1]); -} -assertNotSame(templates[0], templates[2]); -assertNotSame(templates[0], templates[4]); -assertNotSame(templates[1], templates[3]); -assertNotSame(templates[1], templates[5]); -assertNotSame(templates[2], templates[4]); -assertNotSame(templates[3], templates[5]); - -templates = []; -eval("(function() { for (var i = 0; i < 2; ++i) tag`Hello${1}world` })()"); -eval("(function() { for (var i = 0; i < 2; ++i) tag`Hello${2}world` })()"); -eval("(function() { for (var i = 0; i < 2; ++i) tag`Hello${2}world` })()"); -assertSame(templates[0], templates[1]); -assertNotSame(templates[0], templates[2]); -assertNotSame(templates[0], templates[4]); -assertNotSame(templates[1], templates[3]); -assertNotSame(templates[1], templates[5]); -assertSame(templates[2], templates[3]); -assertNotSame(templates[2], templates[4]); -assertNotSame(templates[3], templates[5]); -assertSame(templates[4],templates[5]); - -templates = []; -eval(makeSource1(1)); -eval(makeSource1(2)); -eval(makeSource1(3)); -assertSame(templates[0], templates[1]); -assertNotSame(templates[0], templates[2]); -assertNotSame(templates[0], templates[4]); -assertNotSame(templates[1], templates[3]); -assertNotSame(templates[1], templates[5]); -assertSame(templates[2], templates[3]); -assertNotSame(templates[2], templates[4]); -assertNotSame(templates[3], templates[5]); -assertSame(templates[4],templates[5]); - -// Disable eval caching if a tagged template occurs in an even deeper nested function -var v = 0; -templates = []; -for (v = 0; v < 6; v += 2) { - eval("(function() { (function() { for (var i = 0; i < 2; ++i) tag`Hello${v}world` })() })()"); - if (!v) continue; - assertNotSame(templates[v], templates[v - 1]); -} -assertNotSame(templates[0], templates[2]); -assertNotSame(templates[0], templates[4]); -assertNotSame(templates[1], templates[3]); -assertNotSame(templates[1], templates[5]); -assertNotSame(templates[2], templates[4]); -assertNotSame(templates[3], templates[5]); - -function makeSource2(id) { - return `function f() { - function innerF() { - for (var i = 0; i < 2; ++i) tag\`Hello${id}world\`; - } - return innerF(); - } - f();`; -} -templates = []; -for (v = 0; v < 6; v += 2) { - eval(makeSource2(v)); - assertSame(templates[v], templates[v + 1]); -} -assertNotSame(templates[0], templates[2]); -assertNotSame(templates[0], templates[4]); -assertNotSame(templates[1], templates[3]); -assertNotSame(templates[1], templates[5]); -assertNotSame(templates[2], templates[4]); -assertNotSame(templates[3], templates[5]); - -templates = []; -eval("(function() { (function() { for (var i = 0; i < 2; ++i) tag`Hello${1}world` })() })()"); -eval("(function() { (function() { for (var i = 0; i < 2; ++i) tag`Hello${2}world` })() })()"); -eval("(function() { (function() { for (var i = 0; i < 2; ++i) tag`Hello${2}world` })() })()"); -assertSame(templates[0], templates[1]); -assertNotSame(templates[0], templates[2]); -assertNotSame(templates[0], templates[4]); -assertNotSame(templates[1], templates[3]); -assertNotSame(templates[1], templates[5]); -assertSame(templates[2], templates[3]); -assertNotSame(templates[2], templates[4]); -assertNotSame(templates[3], templates[5]); -assertSame(templates[4], templates[5]); - -templates = []; -eval(makeSource2(1)); -eval(makeSource2(2)); -eval(makeSource2(3)); -assertSame(templates[0], templates[1]); -assertNotSame(templates[0], templates[2]); -assertNotSame(templates[0], templates[4]); -assertNotSame(templates[1], templates[3]); -assertNotSame(templates[1], templates[5]); -assertSame(templates[2], templates[3]); -assertNotSame(templates[2], templates[4]); -assertNotSame(templates[3], templates[5]); -assertSame(templates[4], templates[5]); diff --git a/implementation-contributed/v8/mjsunit/es6/throw-type-error-function-restrictions.js b/implementation-contributed/v8/mjsunit/es6/throw-type-error-function-restrictions.js deleted file mode 100644 index 7f67747f291..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/throw-type-error-function-restrictions.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var throwTypeErrorFunction = - Object.getOwnPropertyDescriptor(Function.prototype, 'arguments').get; - -assertFalse( - Object.prototype.hasOwnProperty.call(throwTypeErrorFunction, 'name')); -assertThrows(function() { - 'use strict'; - throwTypeErrorFunction.name = 'foo'; -}, TypeError); - -var lengthDesc = - Object.getOwnPropertyDescriptor(throwTypeErrorFunction, 'length'); -assertFalse(lengthDesc.configurable, 'configurable'); -assertFalse(lengthDesc.enumerable, 'enumerable'); -assertFalse(lengthDesc.writable, 'writable'); -assertThrows(function() { - 'use strict'; - throwTypeErrorFunction.length = 42; -}, TypeError); - -assertTrue(Object.isFrozen(throwTypeErrorFunction)); diff --git a/implementation-contributed/v8/mjsunit/es6/typed-array-iterator.js b/implementation-contributed/v8/mjsunit/es6/typed-array-iterator.js deleted file mode 100644 index 7970bba9284..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typed-array-iterator.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -var constructors = [Uint8Array, Int8Array, - Uint16Array, Int16Array, - Uint32Array, Int32Array, - Float32Array, Float64Array, - Uint8ClampedArray]; - -var TypedArrayPrototype = Uint8Array.prototype.__proto__; - -assertTrue(TypedArrayPrototype.hasOwnProperty('entries')); -assertTrue(TypedArrayPrototype.hasOwnProperty('values')); -assertTrue(TypedArrayPrototype.hasOwnProperty('keys')); -assertTrue(TypedArrayPrototype.hasOwnProperty(Symbol.iterator)); - -assertFalse(TypedArrayPrototype.propertyIsEnumerable('entries')); -assertFalse(TypedArrayPrototype.propertyIsEnumerable('values')); -assertFalse(TypedArrayPrototype.propertyIsEnumerable('keys')); -assertFalse(TypedArrayPrototype.propertyIsEnumerable(Symbol.iterator)); - -assertFalse(Array.prototype.entries === TypedArrayPrototype.entries); -assertFalse(Array.prototype[Symbol.iterator] === TypedArrayPrototype.values); -assertFalse(Array.prototype.keys === TypedArrayPrototype.keys); -assertFalse(Array.prototype[Symbol.iterator] === TypedArrayPrototype[Symbol.iterator]); - - -function TestTypedArrayValues(constructor) { - var array = [1, 2, 3]; - var i = 0; - for (var value of new constructor(array)) { - assertEquals(array[i++], value); - } - assertEquals(i, array.length); -} -constructors.forEach(TestTypedArrayValues); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like-prototype-element-added.js b/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like-prototype-element-added.js deleted file mode 100644 index edcba43b527..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like-prototype-element-added.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - var arr = [0, 1, , 3]; - Array.prototype[2] = 2; - - var constructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray - ]; - - for (var constr of constructors) { - var ta = new constr(arr); - assertArrayEquals([0, 1, 2, 3], ta); - } -})(); - -(function testTypedArrayConstructByArrayLikeInvalidArrayProtector() { - Array.prototype[2] = undefined; - load("test/mjsunit/es6/typedarray-construct-by-array-like.js"); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like.js b/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like.js deleted file mode 100644 index e6be924d8e7..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like.js +++ /dev/null @@ -1,346 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var tests = []; - -// Tests that will be called with each TypedArray constructor. - -tests.push(function TestConstructSmallObject(constr) { - var myObject = { 0: 5, 1: 6, length: 2 }; - - arr = new constr(myObject); - - assertEquals(2, arr.length); - assertEquals(5, arr[0]); - assertEquals(6, arr[1]); -}); - -tests.push(function TestConstructLargeObject(constr) { - var myObject = {}; - const n = 128; - for (var i = 0; i < n; i++) { - myObject[i] = i; - } - myObject.length = n; - - arr = new constr(myObject); - - assertEquals(n, arr.length); - for (var i = 0; i < n; i++) { - assertEquals(i, arr[i]); - } -}); - -tests.push(function TestConstructFromArrayWithSideEffects(constr) { - var arr = [{ valueOf() { arr[1] = 20; return 1; }}, 2]; - - var ta = new constr(arr); - - assertEquals(1, ta[0]); - assertEquals(2, ta[1]); -}); - -tests.push(function TestConstructFromArrayWithSideEffectsHoley(constr) { - var arr = [{ valueOf() { arr[1] = 20; return 1; }}, 2, , 4]; - - var ta = new constr(arr); - - assertEquals(1, ta[0]); - assertEquals(2, ta[1]); - // ta[2] will be the default value, but we aren't testing that here. - assertEquals(4, ta[3]); -}); - -tests.push(function TestConstructFromArrayHoleySmi(constr) { - var arr = [0, 1, , 3]; - - var ta = new constr(arr); - - assertArrayEquals([0, 1, defaultValue(constr), 3], ta); -}); - -tests.push(function TestConstructFromArrayHoleyDouble(constr) { - var arr = [0.0, 1.0, , 3.0]; - - var ta = new constr(arr); - - assertArrayEquals([0, 1, defaultValue(constr), 3], ta); -}); - -tests.push(function TestConstructFromArrayHoleySmiWithOtherPrototype(constr) { - var arr = [0, 1, , 3]; - Object.setPrototypeOf(arr, { 2: 2 }); - - var ta = new constr(arr); - - assertArrayEquals([0, 1, 2, 3], ta); -}); - -tests.push(function TestConstructFromArrayWithProxyPrototype(constr) { - var arr = [0, 1, , 3]; - var proxy = new Proxy([], { - get: function(target, name) { - if (name === Symbol.iterator) return undefined; - if (name == 2) return 2; - return target[name]; - } - }); - Object.setPrototypeOf(arr, proxy); - - var ta = new constr(arr); - - assertArrayEquals([0, 1, 2, 3], ta); -}); - -tests.push(function TestConstructFromArrayHoleySmiWithSubclass(constr) { - class SubArray extends Array {} - var arr = new SubArray(0, 1); - arr[3] = 3; - - var ta = new constr(arr); - - assertArrayEquals([0, 1, defaultValue(constr), 3], ta); -}); - -tests.push(function TestConstructFromArrayNoIteratorWithGetter(constr) { - var arr = [1, 2, 3]; - arr[Symbol.iterator] = undefined; - - Object.defineProperty(arr, "2", { - get() { - return 22; - } - }); - - var ta = new constr(arr); - - assertArrayEquals([1, 2, 22], ta); -}); - -tests.push(function TestConstructFromArrayNullIterator(constr) { - var arr = [1, 2, 3]; - arr[Symbol.iterator] = null; - - var ta = new Uint8Array(arr); - - assertArrayEquals([1, 2, 3], ta); -}); - -tests.push(function TestConstructFromArrayUndefinedIterator(constr) { - var arr = [1, 2, 3]; - arr[Symbol.iterator] = undefined; - - var ta = new Uint8Array(arr); - - assertArrayEquals([1, 2, 3], ta); -}); - -tests.push(function TestConstructFromArrayNonCallableIterator(constr) { - var arr = [1, 2, 3]; - arr[Symbol.iterator] = 1; - - assertThrows(() => new Uint8Array(arr), TypeError); -}); - -tests.push(function TestConstructFromArray(constr) { - var n = 64; - var jsArray = []; - for (var i = 0; i < n; i++) { - jsArray[i] = i; - } - - var arr = new constr(jsArray); - - assertEquals(n, arr.length); - for (var i = 0; i < n; i++) { - assertEquals(i, arr[i]); - } -}); - -tests.push(function TestConstructFromTypedArray(constr) { - var n = 64; - var ta = new constr(n); - for (var i = 0; i < ta.length; i++) { - ta[i] = i; - } - - var arr = new constr(ta); - - assertEquals(n, arr.length); - for (var i = 0; i < n; i++) { - assertEquals(i, arr[i]); - } -}); - -tests.push(function TestFromTypedArraySpecies(constr) { - var b = new ArrayBuffer(16); - var a1 = new constr(b); - - var constructor_read = 0; - var cons = b.constructor; - - Object.defineProperty(b, 'constructor', { - get: function() { - constructor_read++; - return cons; - } - }); - - var a2 = new constr(a1); - - assertEquals(1, constructor_read); -}); - -tests.push(function TestFromTypedArraySpeciesDetachsBuffer(constr) { - var b = new ArrayBuffer(16); - var a1 = new constr(b); - - var constructor_read = 0; - var cons = b.constructor; - - Object.defineProperty(b, 'constructor', { - get: function() { - %ArrayBufferDetach(b); - return cons; - } - }); - - assertThrows(() => new constr(a1)); -}); - -tests.push(function TestLengthIsMaxSmi(constr) { - var myObject = { 0: 5, 1: 6, length: %MaxSmi() + 1 }; - - assertThrows(function() { - new constr(myObject); - }, RangeError); -}); - -tests.push(function TestProxyHoleConverted(constr) { - var source = {0: 0, 2: 2, length: 3}; - var proxy = new Proxy(source, {}); - - var converted = new constr(proxy); - - assertArrayEquals([0, defaultValue(constr), 2], converted); -}); - -tests.push(function TestProxyToObjectValueOfCalled(constr) { - var thrower = { valueOf: function() { throw new TypeError(); } }; - var source = {0: 0, 1: thrower, length: 2}; - var proxy = new Proxy(source, {}); - - assertThrows(() => new constr(proxy), TypeError); -}); - -tests.push(function TestObjectValueOfCalled(constr) { - var thrower = { valueOf: function() { throw new TypeError(); } }; - - var obj = {0: 0, 1: thrower, length: 2}; - assertThrows(() => new constr(obj), TypeError); -}); - -tests.push(function TestSmiPackedArray(constr) { - var ta = new constr([1, 2, 3, 4, 127]); - - assertEquals(5 * constr.BYTES_PER_ELEMENT, ta.byteLength); - assertArrayEquals([1, 2, 3, 4, 127], ta); -}); - -tests.push(function TestOffsetIsUsed(constr) { - TestOffsetIsUsedRunner(constr, 4); - TestOffsetIsUsedRunner(constr, 16); - TestOffsetIsUsedRunner(constr, 32); - TestOffsetIsUsedRunner(constr, 128); -}); - -tests.push(function TestLengthIsNonSmiNegativeNumber(constr) { - var ta = new constr({length: -%MaxSmi() - 2}); - - assertEquals(0, ta.length); -}); - -// Helpers for above tests. - -function TestOffsetIsUsedRunner(constr, n) { - var buffer = new ArrayBuffer(constr.BYTES_PER_ELEMENT * n); - - var whole_ta = new constr(buffer); - assertEquals(n, whole_ta.length); - for (var i = 0; i < whole_ta.length; i++) { - whole_ta[i] = i; - } - - var half_ta = new constr(buffer, constr.BYTES_PER_ELEMENT * n / 2); - assertEquals(n / 2, half_ta.length); - - var arr = new constr(half_ta); - - assertEquals(n / 2, arr.length); - for (var i = 0; i < arr.length; i++) { - assertEquals(n / 2 + i, arr[i]); - } -} - -function defaultValue(constr) { - if (constr == Float32Array || constr == Float64Array) return NaN; - return 0; -} - -tests.forEach(f => Test(f)); - - -function Test(func) { - func(Uint8Array); - func(Int8Array); - func(Uint16Array); - func(Int16Array); - func(Uint32Array); - func(Int32Array); - func(Float32Array); - func(Float64Array); - func(Uint8ClampedArray); -} - -// Other, standalone tests. - -(function TestUint8ClampedIsNotBitCopied() { - var arr = new Int8Array([-1.0, 0, 1.1, 255, 256]); - assertArrayEquals([-1, 0, 1, -1, 0], arr); - var expected = new Uint8ClampedArray([0, 0, 1, 0, 0]); - - var converted = new Uint8ClampedArray(arr); - - assertArrayEquals([0, 0, 1, 0, 0], converted); -})(); - -(function TestInt8ArrayCopying() { - var source = new Uint8Array([0, 1, 127, 128, 255, 256]); - assertArrayEquals([0, 1, 127, 128, 255, 0], source); - - var converted = new Int8Array(source); - - assertArrayEquals([0, 1, 127, -128, -1, 0], converted); -})(); - -(function TestInt16ArrayCopying() { - var source = new Uint16Array([0, 1, 32767, 32768, 65535, 65536]); - assertArrayEquals([0, 1, 32767, 32768, 65535, 0], source); - - var converted = new Int16Array(source); - - assertArrayEquals([0, 1, 32767, -32768, -1, 0], converted); -})(); - -(function TestInt32ArrayCopying() { - var source = - new Uint32Array([0, 1, 2147483647, 2147483648, 4294967295, 4294967296]); - assertArrayEquals([0, 1, 2147483647, 2147483648, 4294967295, 0], source); - - var converted = new Int32Array(source); - - assertArrayEquals([0, 1, 2147483647, -2147483648, -1, 0], converted); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-buffer-ordering.js b/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-buffer-ordering.js deleted file mode 100644 index bd70f1901dc..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-buffer-ordering.js +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestThrowBeforeLengthToPrimitive() { - // From 22.2.4.5 TypedArray ( buffer [ , byteOffset [ , length ] ] ), check - // that step 7: - // If offset modulo elementSize ≠ 0, throw a RangeError exception. - // happens before step 11: - // Let newLength be ? ToIndex(length). - var expected = ["offset.toPrimitive"]; - var actual = []; - var offset = {}; - offset[Symbol.toPrimitive] = function() { - actual.push("offset.toPrimitive"); - return 1; - }; - - var length = {}; - length[Symbol.toPrimitive] = function() { - actual.push("length.toPrimitive"); - return 1; - }; - - var buffer = new ArrayBuffer(16); - - assertThrows(function() { - new Uint32Array(buffer, offset, length) - }, RangeError); - assertEquals(expected, actual); -})(); - -(function TestConstructByBufferToPrimitiveOrdering() { - var expected = ["offset.toPrimitive", "length.toPrimitive"]; - var actual = []; - var offset = {}; - offset[Symbol.toPrimitive] = function() { - actual.push("offset.toPrimitive"); - return 1; - }; - - var length = {}; - length[Symbol.toPrimitive] = function() { - actual.push("length.toPrimitive"); - return 1; - }; - - var buffer = new ArrayBuffer(16); - var arr = new Uint8Array(buffer, offset, length); - - assertEquals(expected, actual); - assertEquals(1, arr.length); -})(); - -(function TestByteOffsetToIndexThrowsForNegative() { - var buffer = new ArrayBuffer(16); - assertThrows(function() { - new Uint8Array(buffer, -1); - }, RangeError); -})(); - -(function TestByArrayLikeObservableOrdering() { - var expected = [ - 'proxy.Symbol(Symbol.iterator)', 'proxy.length', 'proxy.0', 'proxy.1', - 'proxy.2' - ]; - var actual = []; - - var a = [1, 2, 3]; - var proxy = new Proxy(a, { - get: function(target, name) { - actual.push("proxy." + name.toString()); - if (name === Symbol.iterator) return undefined; - return target[name]; - } - }); - var arr = new Uint8Array(proxy); - - assertEquals(a.length, arr.length); - assertEquals(expected, actual); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-offset-not-smi.js b/implementation-contributed/v8/mjsunit/es6/typedarray-construct-offset-not-smi.js deleted file mode 100644 index e6cbcc42013..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-offset-not-smi.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --mock-arraybuffer-allocator - -(function TestBufferByteLengthNonSmi() { - var non_smi_byte_length = %MaxSmi() + 1; - - var buffer = new ArrayBuffer(non_smi_byte_length); - - var arr = new Uint16Array(buffer); - - assertEquals(non_smi_byte_length, arr.byteLength); - assertEquals(non_smi_byte_length / 2, arr.length); - - arr = new Uint32Array(buffer); - assertEquals(non_smi_byte_length, arr.byteLength); - assertEquals(non_smi_byte_length / 4, arr.length); -})(); - -(function TestByteOffsetNonSmi() { - var non_smi_byte_length = %MaxSmi() + 11; - - var buffer = new ArrayBuffer(non_smi_byte_length); - - var whole = new Uint16Array(buffer); - - assertEquals(non_smi_byte_length, whole.byteLength); - assertEquals(non_smi_byte_length / 2, whole.length); - - var arr = new Uint16Array(buffer, non_smi_byte_length - 10, 5); - - assertEquals(non_smi_byte_length, arr.buffer.byteLength); - assertEquals(10, arr.byteLength); - assertEquals(5, arr.length); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-copywithin.js b/implementation-contributed/v8/mjsunit/es6/typedarray-copywithin.js deleted file mode 100644 index e60c88f6e71..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-copywithin.js +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -function CheckEachTypedArray(fn) { - typedArrayConstructors.forEach(fn); -} - -CheckEachTypedArray(function copyWithinArity(constructor) { - assertEquals(new constructor([]).copyWithin.length, 2); -}); - - -CheckEachTypedArray(function copyWithinTargetAndStart(constructor) { - // works with two arguments - assertArrayEquals([4, 5, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(0, 3)); - assertArrayEquals([1, 4, 5, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(1, 3)); - assertArrayEquals([1, 3, 4, 5, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(1, 2)); - assertArrayEquals([1, 2, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(2, 2)); -}); - - -CheckEachTypedArray(function copyWithinTargetStartAndEnd(constructor) { - // works with three arguments - assertArrayEquals(new constructor([1, 2, 3, 4, 5]).copyWithin(0, 3, 4), - [4, 2, 3, 4, 5]); - assertArrayEquals(new constructor([1, 2, 3, 4, 5]).copyWithin(1, 3, 4), - [1, 4, 3, 4, 5]); - assertArrayEquals(new constructor([1, 2, 3, 4, 5]).copyWithin(1, 2, 4), - [1, 3, 4, 4, 5]); -}); - - -CheckEachTypedArray(function copyWithinNegativeRelativeOffsets(constructor) { - // works with negative arguments - assertArrayEquals([4, 5, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(0, -2)); - assertArrayEquals([4, 2, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(0, -2, -1)); - assertArrayEquals([1, 3, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(-4, -3, -2)); - assertArrayEquals([1, 3, 4, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(-4, -3, -1)); - assertArrayEquals([1, 3, 4, 5, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(-4, -3)); - // test with arguments equal to -this.length - assertArrayEquals([1, 2, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(-5, 0)); -}); - - -CheckEachTypedArray(function mustBeTypedArray(constructor) { - // throws on non-TypedArray values - assertThrows(function() { - return constructor.prototype.copyWithin.call(null, 0, 3); - }, TypeError); - assertThrows(function() { - return constructor.prototype.copyWithin.call(undefined, 0, 3); - }, TypeError); - assertThrows(function() { - return constructor.prototype.copyWithin.call(34, 0, 3); - }, TypeError); - assertThrows(function() { - return constructor.prototype.copyWithin.call([1, 2, 3, 4, 5], 0, 3); - }, TypeError); -}); - - -CheckEachTypedArray(function copyWithinStartLessThanTarget(constructor) { - // test with target > start on 2 arguments - assertArrayEquals([1, 2, 3, 1, 2], - new constructor([1, 2, 3, 4, 5]).copyWithin(3, 0)); - - // test with target > start on 3 arguments - assertArrayEquals([1, 2, 3, 1, 2], - new constructor([1, 2, 3, 4, 5]).copyWithin(3, 0, 4)); -}); - -CheckEachTypedArray(function copyWithinNonIntegerRelativeOffsets(constructor) { - // test on fractional arguments - assertArrayEquals([4, 5, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(0.2, 3.9)); -}); - - -CheckEachTypedArray(function copyWithinNegativeZeroTarget(constructor) { - // test with -0 - assertArrayEquals([4, 5, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(-0, 3)); -}); - - -CheckEachTypedArray(function copyWithinTargetOutsideStart(constructor) { - // test with arguments more than this.length - assertArrayEquals([1, 2, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(0, 7)); - - // test with arguments less than -this.length - assertArrayEquals([1, 2, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(-7, 0)); -}); - - -CheckEachTypedArray(function copyWithinEmptyArray(constructor) { - // test on empty array - assertArrayEquals([], new constructor([]).copyWithin(0, 3)); -}); - - -CheckEachTypedArray(function copyWithinTargetCutOff(constructor) { - // test with target range being shorter than end - start - assertArrayEquals([1, 2, 2, 3, 4], [1, 2, 3, 4, 5].copyWithin(2, 1, 4)); -}); - - -CheckEachTypedArray(function copyWithinOverlappingRanges(constructor) { - // test overlapping ranges - var arr = [1, 2, 3, 4, 5]; - arr.copyWithin(2, 1, 4); - assertArrayEquals([1, 2, 2, 2, 3], arr.copyWithin(2, 1, 4)); -}); - - -CheckEachTypedArray(function copyWithinDefaultEnd(constructor) { - // undefined as third argument - assertArrayEquals([4, 5, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(0, 3, undefined)); -}); - - -CheckEachTypedArray(function copyWithinLargeArray(constructor) { - var large = 10000; - - // test on a large array - var arr = new constructor(large); - assertArrayEquals(arr, arr.copyWithin(45, 9000)); - - var expected = new Array(large); - // test on numbers - for (var i = 0; i < large; i++) { - arr[i] = Math.random() * 100; // May be cast to an int - expected[i] = arr[i]; - if (i >= 9000) { - expected[(i - 9000) + 45] = arr[i]; - } - } - assertArrayEquals(expected, arr.copyWithin(45, 9000)); - - // test array length remains same - assertEquals(large, arr.length); -}); - - -CheckEachTypedArray(function copyWithinNullEnd(constructor) { - // test null on third argument is converted to +0 - assertArrayEquals([1, 2, 3, 4, 5], - new constructor([1, 2, 3, 4, 5]).copyWithin(0, 3, null)); -}); - - -CheckEachTypedArray(function copyWithinMinusInfinityTarget(constructor) { - var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - var expected = [6, 7, 8, 9, 10, 6, 7, 8, 9, 10]; - - assertArrayEquals(expected, arr.copyWithin(-Infinity, 5)); - assertEquals(10, arr.length); -}); - - -CheckEachTypedArray(function copyWithinPositiveInfinityTarget(constructor) { - var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - var expected = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - - assertArrayEquals(expected, arr.copyWithin(+Infinity, 5)); - assertEquals(10, arr.length); -}); - - -CheckEachTypedArray(function copyWithinMinusInfinityStart(constructor) { - var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - var expected = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]; - - assertArrayEquals(expected, arr.copyWithin(5, -Infinity)); - assertEquals(10, arr.length); -}); - - -CheckEachTypedArray(function copyWithinPositiveInfinityStart(constructor) { - var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - var expected = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - - assertArrayEquals(expected, arr.copyWithin(5, +Infinity)); - assertEquals(10, arr.length); -}); - - -CheckEachTypedArray(function copyWithinMinusInfinityEnd(constructor) { - var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - var expected = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - - assertArrayEquals(expected, arr.copyWithin(5, 0, -Infinity)); - assertEquals(10, arr.length); -}); - - -CheckEachTypedArray(function copyWithinPositiveInfinityEnd(constructor) { -var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - var expected = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]; - - assertArrayEquals(expected, arr.copyWithin(5, 0, +Infinity)); - assertEquals(10, arr.length); -}); - -CheckEachTypedArray(function parametersNotCalledIfDetached(constructor) { - var tmp = { - [Symbol.toPrimitive]() { - assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is detached."); - return 0; - } - }; - - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - - assertThrows(() => array.copyWithin(tmp, tmp, tmp), TypeError); - assertEquals(0, array.length, "array.[[ViewedArrayBuffer]] is detached"); -}); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-every.js b/implementation-contributed/v8/mjsunit/es6/typedarray-every.js deleted file mode 100644 index feb7cc90cc9..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-every.js +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -function CheckTypedArrayIsDetached(array) { - assertEquals(0, array.byteLength); - assertEquals(0, array.byteOffset); - assertEquals(0, array.length); -} - -function TestTypedArrayForEach(constructor) { - assertEquals(1, constructor.prototype.every.length); - - var a = new constructor(3); - a[0] = 0; - a[1] = 1; - a[2] = 2; - - var result = a.every(function (n) { return n < 2; }); - assertFalse(result); - - var result = a.every(function (n) { return n > 2; }); - assertFalse(result); - - var result = a.every(function (n) { return n >= 0; }); - assertEquals(true, result); - - // Use specified object as this object when calling the function. - var o = { value: 42 }; - result = a.every(function (n, index, array) { return n == index && n < this.value; }, o); - assertEquals(true, result); - - // Early exit happens when appropriate - count = 0; - result = a.every(function () { count++; return false; }); - assertEquals(1, count); - assertFalse(result); - - // Modify the original array. - count = 0; - result = a.every(function (n, index, array) { - array[index] = n + 1; count++; return true; - }); - assertEquals(3, count); - assertEquals(true, result); - assertArrayEquals([1, 2, 3], a); - - // Check that values passed as second argument are wrapped into - // objects when calling into sloppy mode functions. - function CheckWrapping(value, wrapper) { - var wrappedValue = new wrapper(value); - - a.every(function () { - assertEquals("object", typeof this); - assertEquals(wrappedValue, this); - }, value); - - a.every(function () { - "use strict"; - assertEquals(typeof value, typeof this); - assertEquals(value, this); - }, value); - } - CheckWrapping(true, Boolean); - CheckWrapping(false, Boolean); - CheckWrapping("xxx", String); - CheckWrapping(42, Number); - CheckWrapping(3.14, Number); - CheckWrapping({}, Object); - - // Detaching the buffer backing the typed array mid-way should - // still make .forEach() finish, and the array should keep being - // empty after detaching it. - count = 0; - a = new constructor(3); - result = a.every(function (n, index, array) { - assertFalse(array[index] === undefined); // don't get here if detached - if (count > 0) %ArrayBufferDetach(array.buffer); - array[index] = n + 1; - count++; - return count > 1 ? array[index] === undefined : true; - }); - assertEquals(2, count); - assertEquals(true, result); - CheckTypedArrayIsDetached(a); - assertEquals(undefined, a[0]); - - // Calling array.buffer midway can change the backing store. - a = new constructor(5); - a[0] = 42; - result = a.every(function (n, index, array) { - assertSame(a, array); - if (index == 2) { - (new constructor(array.buffer))[(index + 1) % 5] = 42; - } else { - a[(index+1)%5] = 42 - } - return n == 42; - }); - assertEquals(true, result); - - // The method must work for typed arrays created from ArrayBuffer. - // The length of the ArrayBuffer is chosen so it is a multiple of - // all lengths of the typed array items. - a = new constructor(new ArrayBuffer(64)); - count = 0; - result = a.every(function (n) { return n == 0; }); - assertEquals(result, true); - - // Externalizing the array mid-way accessing the .buffer property - // should work. - a = new constructor(2); - count = 0; - var buffer = undefined; - a.every(function (n, index, array) { - if (count++ > 0) - buffer = array.buffer; - return true; - }); - assertEquals(2, count); - assertTrue(!!buffer); - assertSame(buffer, a.buffer); - - // The %TypedArray%.every() method should not work when - // transplanted to objects that are not typed arrays. - assertThrows(function () { constructor.prototype.every.call([1, 2, 3], function (x) {}) }, TypeError); - assertThrows(function () { constructor.prototype.every.call("abc", function (x) {}) }, TypeError); - assertThrows(function () { constructor.prototype.every.call({}, function (x) {}) }, TypeError); - assertThrows(function () { constructor.prototype.every.call(0, function (x) {}) }, TypeError); - - // Method must be useable on instances of other typed arrays. - for (var i = 0; i < typedArrayConstructors.length; i++) { - count = 0; - a = new typedArrayConstructors[i](4); - constructor.prototype.every.call(a, function (x) { count++; return true; }); - assertEquals(a.length, count); - } - - // Shadowing length doesn't affect every, unlike Array.prototype.every - a = new constructor([1, 2]); - Object.defineProperty(a, 'length', {value: 1}); - var x = 0; - assertEquals(a.every(function(elt) { x += elt; return true; }), true); - assertEquals(x, 3); - assertEquals(Array.prototype.every.call(a, - function(elt) { x += elt; return true; }), true); - assertEquals(x, 4); - - // Detached Operation - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.every(() => true), TypeError); -} - -for (i = 0; i < typedArrayConstructors.length; i++) { - TestTypedArrayForEach(typedArrayConstructors[i]); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-fill.js b/implementation-contributed/v8/mjsunit/es6/typedarray-fill.js deleted file mode 100644 index 791b214734a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-fill.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var intArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray -]; - -var floatArrayConstructors = [ - Float32Array, - Float64Array -]; - -var typedArrayConstructors = [...intArrayConstructors, ...floatArrayConstructors]; - -for (var constructor of typedArrayConstructors) { - assertEquals(1, constructor.prototype.fill.length); - - assertArrayEquals([], new constructor([]).fill(8)); - assertArrayEquals([8, 8, 8, 8, 8], new constructor([0, 0, 0, 0, 0]).fill(8)); - assertArrayEquals([0, 8, 8, 8, 8], new constructor([0, 0, 0, 0, 0]).fill(8, 1)); - assertArrayEquals([0, 0, 0, 0, 0], new constructor([0, 0, 0, 0, 0]).fill(8, 10)); - assertArrayEquals([8, 8, 8, 8, 8], new constructor([0, 0, 0, 0, 0]).fill(8, -5)); - assertArrayEquals([0, 8, 8, 8, 0], new constructor([0, 0, 0, 0, 0]).fill(8, 1, 4)); - assertArrayEquals([0, 8, 8, 8, 0], new constructor([0, 0, 0, 0, 0]).fill(8, 1, -1)); - assertArrayEquals([0, 8, 8, 8, 8], new constructor([0, 0, 0, 0, 0]).fill(8, 1, 42)); - assertArrayEquals([0, 0, 8, 8, 8], new constructor([0, 0, 0, 0, 0]).fill(8, -3, 42)); - assertArrayEquals([0, 0, 8, 8, 0], new constructor([0, 0, 0, 0, 0]).fill(8, -3, 4)); - assertArrayEquals([0, 0, 0, 8, 0], new constructor([0, 0, 0, 0, 0]).fill(8, -2, -1)); - assertArrayEquals([0, 0, 0, 0, 0], new constructor([0, 0, 0, 0, 0]).fill(8, -1, -3)); - assertArrayEquals([8, 8, 8, 8, 0], new constructor([0, 0, 0, 0, 0]).fill(8, 0, 4)); - - assertArrayEquals([0, 0, 0, 0, 0], new constructor([0, 0, 0, 0, 0]).fill(8, Infinity)); - assertArrayEquals([8, 8, 8, 8, 8], new constructor([0, 0, 0, 0, 0]).fill(8, -Infinity)); - assertArrayEquals([8, 8, 8, 8, 8], new constructor([0, 0, 0, 0, 0]).fill(8, 0, Infinity)); - assertArrayEquals([0, 0, 0, 0, 0], new constructor([0, 0, 0, 0, 0]).fill(8, 0, -Infinity)); - - // Test exceptions - assertThrows('constructor.prototype.fill.call(null)', TypeError); - assertThrows('constructor.prototype.fill.call(undefined)', TypeError); - assertThrows('constructor.prototype.fill.call([])', TypeError); - - assertArrayEquals([0, 0, 0, 0, 0], new constructor([0, 0, 0, 0, 0]).fill(false)); - assertArrayEquals([1, 1, 1, 1, 1], new constructor([0, 0, 0, 0, 0]).fill(true)); - assertArrayEquals([0, 0, 0, 0, 0], new constructor([0, 0, 0, 0, 0]).fill(null)); - assertArrayEquals([8, 8, 8, 8, 8], new constructor([0, 0, 0, 0, 0]).fill("8")); - - // Test ToNumber - var n = 1; - assertArrayEquals([1, 1], new constructor(2).fill({ valueOf() { return n++; } })); - assertEquals(2, n); - var s = []; - var p = new Proxy({}, { get(t,k) { s.push(k.toString()); return Reflect.get(t,k)} }); - new constructor(3).fill(p); - assertEquals(["Symbol(Symbol.toPrimitive)", "valueOf", "toString", "Symbol(Symbol.toStringTag)"], s); - - // Shadowing length doesn't affect fill, unlike Array.prototype.fill - var a = new constructor([2, 2]); - Object.defineProperty(a, 'length', {value: 1}); - a.fill(3); - assertArrayEquals([3, 3], [a[0], a[1]]); - Array.prototype.fill.call(a, 4); - assertArrayEquals([4, 3], [a[0], a[1]]); - - // Detached Operation - var tmp = { - [Symbol.toPrimitive]() { - assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is detached."); - return 0; - } - }; - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.fill(tmp), TypeError); -} - -for (var constructor of intArrayConstructors) { - assertArrayEquals([0, 0, 0, 0, 0], new constructor([0, 0, 0, 0, 0]).fill(undefined)); - assertArrayEquals([0, 0, 0, 0, 0], new constructor([0, 0, 0, 0, 0]).fill()); - assertArrayEquals([0, 0, 0, 0, 0], new constructor([0, 0, 0, 0, 0]).fill("abcd")); -} - -for (var constructor of floatArrayConstructors) { - assertArrayEquals([NaN, NaN, NaN, NaN, NaN], new constructor([0, 0, 0, 0, 0]).fill(undefined)); - assertArrayEquals([NaN, NaN, NaN, NaN, NaN], new constructor([0, 0, 0, 0, 0]).fill()); - assertArrayEquals([NaN, NaN, NaN, NaN, NaN], new constructor([0, 0, 0, 0, 0]).fill("abcd")); -} - -// Clamping -assertArrayEquals([0, 0, 0, 0, 0], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(-10)); -assertArrayEquals([255, 255, 255, 255, 255], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(1000)); - -assertArrayEquals([1, 1, 1, 1, 1], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(0.50001)); -assertArrayEquals([0, 0, 0, 0, 0], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(0.50000)); -assertArrayEquals([0, 0, 0, 0, 0], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(0.49999)); -// Check round half to even -assertArrayEquals([2, 2, 2, 2, 2], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(1.50000)); -assertArrayEquals([2, 2, 2, 2, 2], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(2.50000)); -assertArrayEquals([3, 3, 3, 3, 3], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(2.50001)); -// Check infinity clamping. -assertArrayEquals([0, 0, 0, 0, 0], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(-Infinity)); -assertArrayEquals([255, 255, 255, 255, 255], new Uint8ClampedArray([0, 0, 0, 0, 0]).fill(Infinity)); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-filter.js b/implementation-contributed/v8/mjsunit/es6/typedarray-filter.js deleted file mode 100644 index 077016a26c0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-filter.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -function TestTypedArrayFilter(constructor) { - assertEquals(1, constructor.prototype.filter.length); - - // Throw type error if source array is detached while executing a callback - let ta1 = new constructor(10); - assertThrows(() => - ta1.filter(() => %ArrayBufferDetach(ta1.buffer)) - , TypeError); - - // A new typed array should be created after finishing callbacks - var speciesCreated = 0; - - class MyTypedArray extends constructor { - static get [Symbol.species]() { - return function() { - speciesCreated++; - return new constructor(10); - }; - } - } - - new MyTypedArray(10).filter(() => { - assertEquals(0, speciesCreated); - return true; - }); - assertEquals(1, speciesCreated); - - // A new typed array should be initialized to 0s - class LongTypedArray extends constructor { - static get [Symbol.species]() { - return function(len) { - return new constructor(len * 2); - } - } - } - let ta2 = new LongTypedArray(3).fill(1); - let ta3 = ta2.filter((val, index, array) => val > 0); - assertArrayEquals(ta3, [1, 1, 1, 0, 0, 0]); - assertEquals(ta3.constructor, constructor); - - // Throw if a new typed array is too small - class ShortTypedArray extends constructor { - static get [Symbol.species]() { - return function(len) { - return new constructor(len/2); - } - } - } - assertThrows(() => new ShortTypedArray(10).filter(() => true)); - - // Throw if callback is not callable - assertThrows(() => new constructor(10).filter(123)); - assertThrows(() => new constructor(10).filter({})); - - // Empty result - assertEquals(new constructor(10).filter(() => false), new constructor(0)); - - // If a new typed array shares a buffer with a source array - let ab = new ArrayBuffer(100); - class SharedBufferTypedArray extends constructor { - static get [Symbol.species]() { - return function(len) { - return new constructor(ab, 0, 5); - } - } - } - let ta4 = new SharedBufferTypedArray(ab, 0, 5).fill(1); - let ta5 = ta4.filter(() => { - ta4[0] = 123; - ta4[2] = 123; - return true; - }); - assertEquals(ta4.buffer, ta5.buffer); - assertArrayEquals(ta4, [1, 1, 123, 1, 1]); - assertArrayEquals(ta5, [1, 1, 123, 1, 1]); - - // If a new typed array has a different type with source array - for (let j = 0; j < typedArrayConstructors.length; j++) { - let otherConstructor = typedArrayConstructors[j]; - class OtherTypedArray extends constructor { - static get [Symbol.species]() { - return function(len) { - return new otherConstructor(len); - } - } - } - let ta6 = new OtherTypedArray(10).fill(123); - assertEquals(ta6.filter(() => true), new otherConstructor(10).fill(123)); - } -} - -for (i = 0; i < typedArrayConstructors.length; i++) { - TestTypedArrayFilter(typedArrayConstructors[i]); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-find.js b/implementation-contributed/v8/mjsunit/es6/typedarray-find.js deleted file mode 100644 index f33e4c5cb95..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-find.js +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -for (var constructor of typedArrayConstructors) { - -assertEquals(1, constructor.prototype.find.length); - -var a = new constructor([21, 22, 23, 24]); -assertEquals(undefined, a.find(function() { return false; })); -assertEquals(21, a.find(function() { return true; })); -assertEquals(undefined, a.find(function(val) { return 121 === val; })); -assertEquals(24, a.find(function(val) { return 24 === val; })); -assertEquals(23, a.find(function(val) { return 23 === val; }), null); -assertEquals(22, a.find(function(val) { return 22 === val; }), undefined); - - -// -// Test predicate is not called when array is empty -// -(function() { - var a = new constructor([]); - var l = -1; - var o = -1; - var v = -1; - var k = -1; - - a.find(function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertEquals(-1, l); - assertEquals(-1, o); - assertEquals(-1, v); - assertEquals(-1, k); -})(); - - -// -// Test predicate is called with correct arguments -// -(function() { - var a = new constructor([5]); - var l = -1; - var o = -1; - var v = -1; - var k = -1; - - var found = a.find(function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertArrayEquals(a, o); - assertEquals(a.length, l); - assertEquals(5, v); - assertEquals(0, k); - assertEquals(undefined, found); -})(); - - -// -// Test predicate is called array.length times -// -(function() { - var a = new constructor([1, 2, 3, 4, 5]); - var l = 0; - var found = a.find(function() { - l++; - return false; - }); - - assertEquals(a.length, l); - assertEquals(undefined, found); -})(); - - -// -// Test array modifications -// -(function() { - a = new constructor([1, 2, 3]); - found = a.find(function(val, key) { a[key] = ++val; return false; }); - assertArrayEquals([2, 3, 4], a); - assertEquals(3, a.length); - assertEquals(undefined, found); -})(); - -// -// Test thisArg -// -(function() { - // Test String as a thisArg - var found = new constructor([1, 2, 3]).find(function(val, key) { - return this.charAt(Number(key)) === String(val); - }, "321"); - assertEquals(2, found); - - // Test object as a thisArg - var thisArg = { - elementAt: function(key) { - return this[key]; - } - }; - Array.prototype.push.apply(thisArg, [3, 2, 1]); - - found = new constructor([1, 2, 3]).find(function(val, key) { - return this.elementAt(key) === val; - }, thisArg); - assertEquals(2, found); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - new constructor([1, 2]).find(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - new constructor([1, 2]).find(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - new constructor([1, 2]).find(function() { 'use strict'; a.push(this); }, ""); - assertEquals("", a[0]); - assertEquals(a[0], a[1]); - -})(); - -// Test exceptions -assertThrows('constructor.prototype.find.call(null, function() { })', - TypeError); -assertThrows('constructor.prototype.find.call(undefined, function() { })', - TypeError); -assertThrows('constructor.prototype.find.apply(null, function() { }, [])', - TypeError); -assertThrows('constructor.prototype.find.apply(undefined, function() { }, [])', - TypeError); -assertThrows('constructor.prototype.find.apply([], function() { }, [])', - TypeError); -assertThrows('constructor.prototype.find.apply({}, function() { }, [])', - TypeError); -assertThrows('constructor.prototype.find.apply("", function() { }, [])', - TypeError); - -assertThrows('new constructor([]).find(null)', TypeError); -assertThrows('new constructor([]).find(undefined)', TypeError); -assertThrows('new constructor([]).find(0)', TypeError); -assertThrows('new constructor([]).find(true)', TypeError); -assertThrows('new constructor([]).find(false)', TypeError); -assertThrows('new constructor([]).find("")', TypeError); -assertThrows('new constructor([]).find({})', TypeError); -assertThrows('new constructor([]).find([])', TypeError); -assertThrows('new constructor([]).find(/\d+/)', TypeError); - -// Shadowing length doesn't affect find, unlike Array.prototype.find -a = new constructor([1, 2]); -Object.defineProperty(a, 'length', {value: 1}); -var x = 0; -assertEquals(a.find(function(elt) { x += elt; return false; }), undefined); -assertEquals(x, 3); -assertEquals(Array.prototype.find.call(a, - function(elt) { x += elt; return false; }), undefined); -assertEquals(x, 4); - -// Detached Operation -var tmp = { - [Symbol.toPrimitive]() { - assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is detached."); - return 0; - } -}; - -var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); -%ArrayBufferDetach(array.buffer); - -assertThrows(() => array.find(tmp), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-findindex.js b/implementation-contributed/v8/mjsunit/es6/typedarray-findindex.js deleted file mode 100644 index e31e17401a2..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-findindex.js +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -for (var constructor of typedArrayConstructors) { - -assertEquals(1, constructor.prototype.findIndex.length); - -var a = new constructor([21, 22, 23, 24]); -assertEquals(-1, a.findIndex(function() { return false; })); -assertEquals(-1, a.findIndex(function(val) { return 121 === val; })); -assertEquals(0, a.findIndex(function() { return true; })); -assertEquals(1, a.findIndex(function(val) { return 22 === val; }), undefined); -assertEquals(2, a.findIndex(function(val) { return 23 === val; }), null); -assertEquals(3, a.findIndex(function(val) { return 24 === val; })); - - -// -// Test predicate is not called when array is empty -// -(function() { - var a = new constructor([]); - var l = -1; - var o = -1; - var v = -1; - var k = -1; - - a.findIndex(function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertEquals(-1, l); - assertEquals(-1, o); - assertEquals(-1, v); - assertEquals(-1, k); -})(); - - -// -// Test predicate is called with correct argumetns -// -(function() { - var a = new constructor([5]); - var l = -1; - var o = -1; - var v = -1; - var k = -1; - - var index = a.findIndex(function(val, key, obj) { - o = obj; - l = obj.length; - v = val; - k = key; - - return false; - }); - - assertArrayEquals(a, o); - assertEquals(a.length, l); - assertEquals(5, v); - assertEquals(0, k); - assertEquals(-1, index); -})(); - - -// -// Test predicate is called array.length times -// -(function() { - var a = new constructor([1, 2, 3, 4, 5]); - var l = 0; - - a.findIndex(function() { - l++; - return false; - }); - - assertEquals(a.length, l); -})(); - - -// -// Test array modifications -// -(function() { - a = new constructor([1, 2, 3]); - a.findIndex(function(val, key) { a[key] = ++val; return false; }); - assertArrayEquals([2, 3, 4], a); - assertEquals(3, a.length); -})(); - - -// -// Test thisArg -// -(function() { - // Test String as a thisArg - var index = new constructor([1, 2, 3]).findIndex(function(val, key) { - return this.charAt(Number(key)) === String(val); - }, "321"); - assertEquals(1, index); - - // Test object as a thisArg - var thisArg = { - elementAt: function(key) { - return this[key]; - } - }; - Array.prototype.push.apply(thisArg, [3, 2, 1]); - - index = new constructor([1, 2, 3]).findIndex(function(val, key) { - return this.elementAt(key) === val; - }, thisArg); - assertEquals(1, index); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - new constructor([1, 2]).findIndex(function() { a.push(this) }, ""); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - new constructor([1, 2]).findIndex(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - new constructor([1, 2]).findIndex(function() { 'use strict'; a.push(this); }, ""); - assertEquals("", a[0]); - assertEquals(a[0], a[1]); - -})(); - -// Test exceptions -assertThrows('constructor.prototype.findIndex.call(null, function() { })', - TypeError); -assertThrows('constructor.prototype.findIndex.call(undefined, function() { })', - TypeError); -assertThrows('constructor.prototype.findIndex.apply(null, function() { }, [])', - TypeError); -assertThrows('constructor.prototype.findIndex.apply(undefined, function() { }, [])', - TypeError); -assertThrows('constructor.prototype.findIndex.apply([], function() { }, [])', - TypeError); -assertThrows('constructor.prototype.findIndex.apply({}, function() { }, [])', - TypeError); -assertThrows('constructor.prototype.findIndex.apply("", function() { }, [])', - TypeError); - -assertThrows('new constructor([]).findIndex(null)', TypeError); -assertThrows('new constructor([]).findIndex(undefined)', TypeError); -assertThrows('new constructor([]).findIndex(0)', TypeError); -assertThrows('new constructor([]).findIndex(true)', TypeError); -assertThrows('new constructor([]).findIndex(false)', TypeError); -assertThrows('new constructor([]).findIndex("")', TypeError); -assertThrows('new constructor([]).findIndex({})', TypeError); -assertThrows('new constructor([]).findIndex([])', TypeError); -assertThrows('new constructor([]).findIndex(/\d+/)', TypeError); - -// Shadowing length doesn't affect findIndex, unlike Array.prototype.findIndex -a = new constructor([1, 2]); -Object.defineProperty(a, 'length', {value: 1}); -var x = 0; -assertEquals(a.findIndex(function(elt) { x += elt; return false; }), -1); -assertEquals(x, 3); -assertEquals(Array.prototype.findIndex.call(a, - function(elt) { x += elt; return false; }), -1); -assertEquals(x, 4); - -// Detached Operation - var tmp = { - [Symbol.toPrimitive]() { - assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is detached."); - return 0; - } - }; - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.findIndex(tmp), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-foreach.js b/implementation-contributed/v8/mjsunit/es6/typedarray-foreach.js deleted file mode 100644 index 81c212046a4..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-foreach.js +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -function CheckTypedArrayIsDetached(array) { - assertEquals(0, array.byteLength); - assertEquals(0, array.byteOffset); - assertEquals(0, array.length); -} - -function TestTypedArrayForEach(constructor) { - assertEquals(1, constructor.prototype.forEach.length); - - var a = new constructor(2); - a[0] = 0; - a[1] = 1; - - var count = 0; - a.forEach(function (n) { count++; }); - assertEquals(2, count); - - // Use specified object as this object when calling the function. - var o = { value: 42 }; - var result = []; - a.forEach(function (n, index, array) { result.push(this.value); }, o); - assertArrayEquals([42, 42], result); - - // Modify the original array. - count = 0; - a.forEach(function (n, index, array) { array[index] = n + 1; count++ }); - assertEquals(2, count); - assertArrayEquals([1, 2], a); - - // Check that values passed as second argument are wrapped into - // objects when calling into sloppy mode functions. - function CheckWrapping(value, wrapper) { - var wrappedValue = new wrapper(value); - - a.forEach(function () { - assertEquals("object", typeof this); - assertEquals(wrappedValue, this); - }, value); - - a.forEach(function () { - "use strict"; - assertEquals(typeof value, typeof this); - assertEquals(value, this); - }, value); - } - CheckWrapping(true, Boolean); - CheckWrapping(false, Boolean); - CheckWrapping("xxx", String); - CheckWrapping(42, Number); - CheckWrapping(3.14, Number); - CheckWrapping({}, Object); - - // Throw before completing iteration, only the first element - // should be modified when thorwing mid-way. - count = 0; - a[0] = 42; - a[1] = 42; - try { - a.forEach(function (n, index, array) { - if (count > 0) throw "meh"; - array[index] = n + 1; - count++; - }); - } catch (e) { - } - assertEquals(1, count); - assertEquals(43, a[0]); - assertEquals(42, a[1]); - - // Detaching the buffer backing the typed array mid-way should - // still make .forEach() finish, but exiting early due to the missing - // elements, and the array should keep being empty after detaching it. - // TODO(dehrenberg): According to the ES6 spec, accessing or testing - // for members on a detached TypedArray should throw, so really this - // should throw in the third iteration. However, this behavior matches - // the Khronos spec. - a = new constructor(3); - count = 0; - a.forEach(function (n, index, array) { - if (count > 0) %ArrayBufferDetach(array.buffer); - array[index] = n + 1; - count++; - }); - assertEquals(2, count); - CheckTypedArrayIsDetached(a); - assertEquals(undefined, a[0]); - - // The method must work for typed arrays created from ArrayBuffer. - // The length of the ArrayBuffer is chosen so it is a multiple of - // all lengths of the typed array items. - a = new constructor(new ArrayBuffer(64)); - count = 0; - a.forEach(function (n) { count++ }); - assertEquals(a.length, count); - - // Externalizing the array mid-way accessing the .buffer property - // should work. - a = new constructor(2); - count = 0; - var buffer = undefined; - a.forEach(function (n, index, array) { - if (count++ > 0) - buffer = array.buffer; - }); - assertEquals(2, count); - assertTrue(!!buffer); - assertSame(buffer, a.buffer); - - // The %TypedArray%.forEach() method should not work when - // transplanted to objects that are not typed arrays. - assertThrows(function () { constructor.prototype.forEach.call([1, 2, 3], function (x) {}) }, TypeError); - assertThrows(function () { constructor.prototype.forEach.call("abc", function (x) {}) }, TypeError); - assertThrows(function () { constructor.prototype.forEach.call({}, function (x) {}) }, TypeError); - assertThrows(function () { constructor.prototype.forEach.call(0, function (x) {}) }, TypeError); - - // Method must be useable on instances of other typed arrays. - for (var i = 0; i < typedArrayConstructors.length; i++) { - count = 0; - a = new typedArrayConstructors[i](4); - constructor.prototype.forEach.call(a, function (x) { count++ }); - assertEquals(a.length, count); - } - - // Shadowing length doesn't affect forEach, unlike Array.prototype.forEach - a = new constructor([1, 2]); - Object.defineProperty(a, 'length', {value: 1}); - var x = 0; - assertEquals(a.forEach(function(elt) { x += elt; }), undefined); - assertEquals(x, 3); - assertEquals(Array.prototype.forEach.call(a, - function(elt) { x += elt; }), undefined); - assertEquals(x, 4); - - // Detached Operation - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.forEach(() => true), TypeError); -} - -for (i = 0; i < typedArrayConstructors.length; i++) { - TestTypedArrayForEach(typedArrayConstructors[i]); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-from-detached-typedarray.js b/implementation-contributed/v8/mjsunit/es6/typedarray-from-detached-typedarray.js deleted file mode 100644 index 6850571bc48..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-from-detached-typedarray.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -for (constructor of typedArrayConstructors) { - var ta = new constructor(10); - %ArrayBufferDetach(ta.buffer); - assertThrows(() => constructor.from(ta), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-from-next-overridden.js b/implementation-contributed/v8/mjsunit/es6/typedarray-from-next-overridden.js deleted file mode 100644 index 4d918a4a07f..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-from-next-overridden.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -for (var constructor of typedArrayConstructors) { - let ta = new constructor([1, 2, 3]); - let it = ta[Symbol.iterator](); - let original_next = it.__proto__["next"]; - Object.defineProperty(it.__proto__, "next", { - value: function() { - return {value: undefined, done: true}; - }, - configurable: true - }); - assertEquals(0, constructor.from(ta).length); - Object.defineProperty(it.__proto__, "next", original_next); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-from-nonfunction-iterator.js b/implementation-contributed/v8/mjsunit/es6/typedarray-from-nonfunction-iterator.js deleted file mode 100644 index ff7d7bc075c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-from-nonfunction-iterator.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let ta = new Uint8Array([1, 2, 3]); - -ta[Symbol.iterator] = 1; -assertThrows(function() { Uint8Array.from(ta); }, TypeError); - -ta[Symbol.iterator] = "bad"; -assertThrows(function() { Uint8Array.from(ta); }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-from.js b/implementation-contributed/v8/mjsunit/es6/typedarray-from.js deleted file mode 100644 index 4bc17ca2600..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-from.js +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -function defaultValue(constr) { - if (constr == Float32Array || constr == Float64Array) return NaN; - return 0; -} - -function assertArrayLikeEquals(value, expected, type) { - assertEquals(value.__proto__, type.prototype); - assertEquals(expected.length, value.length); - for (var i = 0; i < value.length; ++i) { - assertEquals(expected[i], value[i]); - } -} - -(function() { - var source = [-0, 0, 2**40, 2**41, 2**42]; - var arr = Float64Array.from(source); - assertArrayLikeEquals(arr, source, Float64Array); - - arr = Float32Array.from(source); - assertArrayLikeEquals(arr, source, Float32Array); -})(); - -(function() { - var source = [-0, 0, , 2**42]; - var expected = [-0, 0, NaN, 2**42]; - var arr = Float64Array.from(source); - assertArrayLikeEquals(arr, expected, Float64Array); - - arr = Float32Array.from(source); - assertArrayLikeEquals(arr, expected, Float32Array); -})(); - -(function() { - var source = {0: -0, 1: 0, 2: 2**40, 3: 2**41, 4: 2**42, length: 5}; - var expected = [-0, 0, 2**40, 2**41, 2**42]; - var arr = Float64Array.from(source); - assertArrayLikeEquals(arr, expected, Float64Array); - - arr = Float32Array.from(source); - assertArrayLikeEquals(arr, expected, Float32Array); -})(); - -(function() { - var source = [-0, 0, , 2**42]; - Object.getPrototypeOf(source)[2] = 27; - var expected = [-0, 0, 27, 2**42]; - var arr = Float64Array.from(source); - assertArrayLikeEquals(arr, expected, Float64Array); - - arr = Float32Array.from(source); - assertArrayLikeEquals(arr, expected, Float32Array); -})(); - -for (var constructor of typedArrayConstructors) { - assertEquals(1, constructor.from.length); - - // TypedArray.from only callable on this subclassing %TypedArray% - assertThrows(function () {constructor.from.call(Array, [])}, TypeError); - - - // Assert that calling mapfn with / without thisArg in sloppy and strict modes - // works as expected. - var global = this; - function non_strict() { assertEquals(global, this); } - function strict() { 'use strict'; assertEquals(undefined, this); } - function strict_null() { 'use strict'; assertEquals(null, this); } - constructor.from([1], non_strict); - constructor.from([1], non_strict, void 0); - constructor.from([1], non_strict, null); - constructor.from([1], strict); - constructor.from([1], strict, void 0); - constructor.from([1], strict_null, null); - - // TypedArray.from can only be called on TypedArray constructors - assertThrows(function() {constructor.from.call({}, [])}, TypeError); - assertThrows(function() {constructor.from.call([], [])}, TypeError); - assertThrows(function() {constructor.from.call(1, [])}, TypeError); - assertThrows(function() {constructor.from.call(undefined, [])}, TypeError); - - // Use a map function that returns non-numbers. - function mapper(value, index) { - return String.fromCharCode(value); - } - var d = defaultValue(constructor); - assertArrayLikeEquals( - constructor.from([72, 69, 89], mapper), [d, d, d], constructor); - - // Converting from various other types, demonstrating that it can - // operate on array-like objects as well as iterables. - // TODO(littledan): constructors should have similar flexibility. - assertArrayLikeEquals(constructor.from( - { length: 1, 0: 5 }), [5], constructor); - - assertArrayLikeEquals(constructor.from( - { length: -1, 0: 5 }), [], constructor); - - assertArrayLikeEquals(constructor.from( - [1, 2, 3]), [1, 2, 3], constructor); - - var set = new Set([1, 2, 3]); - assertArrayLikeEquals(constructor.from(set), [1, 2, 3], - constructor); - - function* generator() { - yield 4; - yield 5; - yield 6; - } - - assertArrayLikeEquals(constructor.from(generator()), - [4, 5, 6], constructor); - - // Check mapper is used for non-iterator case. - function mapper2(value, index) { - return value + 1; - } - var array_like = { - 0: 1, - 1: 2, - 2: 3, - length: 3 - }; - assertArrayLikeEquals(constructor.from(array_like, mapper2), - [2, 3, 4], constructor); - - // With a smi source. Step 10 will set len = 0. - var source = 1; - assertArrayLikeEquals(constructor.from(source), [], constructor); - - assertThrows(function() { constructor.from(null); }, TypeError); - assertThrows(function() { constructor.from(undefined); }, TypeError); - assertThrows(function() { constructor.from([], null); }, TypeError); - assertThrows(function() { constructor.from([], 'noncallable'); }, - TypeError); - - source = [1, 2, 3]; - var proxy = new Proxy(source, {}); - assertArrayLikeEquals(constructor.from(proxy), source, constructor); - - proxy = new Proxy(source, { - get: function(target, name) { - if (name === Symbol.iterator) return target[name]; - if (name === "length") return 3; - return target[name] + 1; - } - }); - assertArrayLikeEquals(constructor.from(proxy), [2, 3, 4], constructor); -} - -// Tests that modify global state in a way that affects fast paths e.g. by -// invalidating protectors or changing prototypes. -for (var constructor of typedArrayConstructors) { - source = [1, 2, 3]; - source[Symbol.iterator] = undefined; - assertArrayLikeEquals(constructor.from(source), source, constructor); - - source = [{ valueOf: function(){ return 42; }}]; - source[Symbol.iterator] = undefined; - assertArrayLikeEquals(constructor.from(source), [42], constructor); - - Number.prototype[Symbol.iterator] = function* () { - yield 1; - yield 2; - yield 3; - } - assertArrayLikeEquals(constructor.from(1), [1, 2, 3], constructor); - assertArrayLikeEquals(constructor.from(1.1), [1, 2, 3], constructor); - - var nullIterator = {}; - nullIterator[Symbol.iterator] = null; - assertArrayLikeEquals(constructor.from(nullIterator), [], - constructor); - - var nonObjIterator = {}; - nonObjIterator[Symbol.iterator] = function() { return 'nonObject'; }; - assertThrows(function() { constructor.from(nonObjIterator); }, - TypeError); - - assertThrows(function() { constructor.from([], null); }, TypeError); - - d = defaultValue(constructor); - let ta1 = new constructor(3).fill(1); - Object.defineProperty(ta1, "length", {get: function() { - return 6; - }}); - delete ta1[Symbol.iterator]; - delete ta1.__proto__[Symbol.iterator]; - delete ta1.__proto__.__proto__[Symbol.iterator]; - assertArrayLikeEquals(constructor.from(ta1), [1, 1, 1, d, d, d], constructor); - - let ta2 = new constructor(3).fill(1); - Object.defineProperty(ta2, "length", {get: function() { - %ArrayBufferDetach(ta2.buffer); - return 6; - }}); - assertArrayLikeEquals(constructor.from(ta2), [d, d, d, d, d, d], constructor); - - var o1 = {0: 0, 1: 1, 2: 2, length: 6}; - assertArrayLikeEquals(constructor.from(o1), [0, 1, 2, d, d, d], constructor); - - // Ensure iterator is only accessed once, and only invoked once - var called = 0; - var arr = [1, 2, 3]; - var obj = {}; - var counter = 0; - - // Test order --- only get iterator method once - function testIterator() { - called++; - assertEquals(obj, this); - return arr[Symbol.iterator](); - } - var getCalled = 0; - Object.defineProperty(obj, Symbol.iterator, { - get: function() { - getCalled++; - return testIterator; - }, - set: function() { - assertUnreachable('@@iterator should not be set'); - } - }); - assertArrayLikeEquals(constructor.from(obj), [1, 2, 3], constructor); - assertEquals(getCalled, 1); - assertEquals(called, 1); - - assertEquals(constructor, Uint8Array.from.call(constructor, [1]).constructor); - assertEquals(Uint8Array, constructor.from.call(Uint8Array, [1]).constructor); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-indexing.js b/implementation-contributed/v8/mjsunit/es6/typedarray-indexing.js deleted file mode 100644 index cb88068d76c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-indexing.js +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -var tmp = { - [Symbol.toPrimitive]() { - assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is detached."); - return 0; - } -}; - -for (var constructor of typedArrayConstructors) { - var array = new constructor([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]); - - // ---------------------------------------------------------------------- - // %TypedArray%.prototype.indexOf. - // ---------------------------------------------------------------------- - - // Negative cases. - assertEquals(-1, new constructor([]).indexOf(1)); - assertEquals(-1, array.indexOf(4)); - assertEquals(-1, array.indexOf(3, array.length)); - - assertEquals(2, array.indexOf(3)); - // Negative index out of range. - assertEquals(0, array.indexOf(1, -17)); - // Negative index in rage. - assertEquals(3, array.indexOf(1, -11)); - // Index in range. - assertEquals(3, array.indexOf(1, 1)); - assertEquals(3, array.indexOf(1, 3)); - assertEquals(6, array.indexOf(1, 4)); - - // Basic TypedArray function properties - assertEquals(1, array.indexOf.length); - assertThrows(function(){ array.indexOf.call([1], 1); }, TypeError); - Object.defineProperty(array, 'length', {value: 1}); - assertEquals(array.indexOf(2), 1); - - // Index of infinite value - array = new constructor([NaN, 2, 3, +Infinity, -Infinity, 5, 6]); - if (constructor == Float32Array || constructor == Float64Array) { - assertEquals(3, array.indexOf(Infinity)); - assertEquals(4, array.indexOf(-Infinity)); - } else { - assertEquals(-1, array.indexOf(Infinity)); - assertEquals(-1, array.indexOf(-Infinity)); - } - assertEquals(-1, array.indexOf(NaN)); - - // Detached Operation - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.indexOf(tmp), TypeError); - - // ---------------------------------------------------------------------- - // %TypedArray%.prototype.lastIndexOf. - // ---------------------------------------------------------------------- - array = new constructor([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]); - - // Negative cases. - assertEquals(-1, new constructor([]).lastIndexOf(1)); - assertEquals(-1, array.lastIndexOf(1, -17)); - - assertEquals(9, array.lastIndexOf(1)); - // Index out of range. - assertEquals(9, array.lastIndexOf(1, array.length)); - // Index in range. - assertEquals(0, array.lastIndexOf(1, 2)); - assertEquals(3, array.lastIndexOf(1, 4)); - assertEquals(3, array.lastIndexOf(1, 3)); - // Negative index in range. - assertEquals(0, array.lastIndexOf(1, -11)); - - // Basic TypedArray function properties - assertEquals(1, array.lastIndexOf.length); - assertThrows(function(){ array.lastIndexOf.call([1], 1); }, TypeError); - Object.defineProperty(array, 'length', {value: 1}); - assertEquals(array.lastIndexOf(2), 10); - delete array.length; - - // Index of infinite value - array = new constructor([NaN, 2, 3, +Infinity, -Infinity, 5, 6]); - if (constructor == Float32Array || constructor == Float64Array) { - assertEquals(3, array.lastIndexOf(Infinity)); - assertEquals(4, array.lastIndexOf(-Infinity)); - } else { - assertEquals(-1, array.lastIndexOf(Infinity)); - assertEquals(-1, array.lastIndexOf(-Infinity)); - } - assertEquals(-1, array.lastIndexOf(NaN)); - - // Detached Operation - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.lastIndexOf(tmp), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-iteration.js b/implementation-contributed/v8/mjsunit/es6/typedarray-iteration.js deleted file mode 100644 index 30b09ab08a0..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-iteration.js +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Tests for standard TypedArray array iteration functions. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -function assertArrayLikeEquals(expected, value, type) { - assertEquals(value.__proto__, type.prototype); - assertEquals(expected.length, value.length); - for (var i = 0; i < value.length; ++i) { - assertEquals(expected[i], value[i]); - } -} - -for (var constructor of typedArrayConstructors) { - (function TypedArrayFilterTest() { - // Simple use. - var a = new constructor([0, 1]); - assertArrayLikeEquals([0], a.filter(function(n) { return n == 0; }), - constructor); - assertArrayLikeEquals([0, 1], a, constructor); - - // Use specified object as this object when calling the function. - var o = { value: 42 } - a = new constructor([1, 42, 3, 42, 4]); - assertArrayLikeEquals([42, 42], a.filter(function(n) { - return this.value == n - }, o), constructor); - - // Modify original array. - a = new constructor([1, 42, 3, 42, 4]); - assertArrayLikeEquals([42, 42], a.filter(function(n, index, array) { - array[index] = 43; return 42 == n; - }), constructor); - assertArrayLikeEquals([43, 43, 43, 43, 43], a, constructor); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - new constructor([1, 2]).filter(function() { a.push(this) }, ''); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - new constructor([1, 2]).filter(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - new constructor([1, 2]).filter(function() { - 'use strict'; - a.push(this); - }, ''); - assertEquals('', a[0]); - assertEquals(a[0], a[1]); - - // Calling this method on other types is a TypeError - assertThrows(function() { - constructor.prototype.filter.call([], function() {}); - }, TypeError); - - // Shadowing the length property doesn't change anything - a = new constructor([1, 2]); - Object.defineProperty(a, 'length', { value: 1 }); - assertArrayLikeEquals([2], a.filter(function(elt) { - return elt == 2; - }), constructor); - - // Detached Operation - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.filter(() => false), TypeError); - })(); - - (function TypedArrayMapTest() { - var a = new constructor([0, 1, 2, 3, 4]); - - // Simple use. - var result = [1, 2, 3, 4, 5]; - assertArrayLikeEquals(result, a.map(function(n) { return n + 1; }), - constructor); - assertEquals(a, a); - - // Use specified object as this object when calling the function. - var o = { delta: 42 } - result = [42, 43, 44, 45, 46]; - assertArrayLikeEquals(result, a.map(function(n) { - return this.delta + n; - }, o), constructor); - - // Modify original array. - a = new constructor([0, 1, 2, 3, 4]); - result = [1, 2, 3, 4, 5]; - assertArrayLikeEquals(result, a.map(function(n, index, array) { - array[index] = n + 1; - return n + 1; - }), constructor); - assertArrayLikeEquals(result, a, constructor); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - new constructor([1, 2]).map(function() { a.push(this) }, ''); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - new constructor([1, 2]).map(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - new constructor([1, 2]).map(function() { 'use strict'; a.push(this); }, ''); - assertEquals('', a[0]); - assertEquals(a[0], a[1]); - - // Test that the result is converted to the right type - assertArrayLikeEquals([3, 3], new constructor([1, 2]).map(function() { - return "3"; - }), constructor); - if (constructor !== Float32Array && constructor !== Float64Array) { - assertArrayLikeEquals([0, 0], new constructor([1, 2]).map(function() { - return NaN; - }), constructor); - } - - // Detached Operation - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.map((v) => v), TypeError); - })(); - - // - // %TypedArray%.prototype.some - // - (function TypedArraySomeTest() { - var a = new constructor([0, 1, 2, 3, 4]); - - // Simple use. - assertTrue(a.some(function(n) { return n == 3})); - assertFalse(a.some(function(n) { return n == 5})); - - // Use specified object as this object when calling the function. - var o = { element: 42 }; - a = new constructor([1, 42, 3]); - assertTrue(a.some(function(n) { return this.element == n; }, o)); - a = new constructor([1]); - assertFalse(a.some(function(n) { return this.element == n; }, o)); - - // Modify original array. - a = new constructor([0, 1, 2, 3]); - assertTrue(a.some(function(n, index, array) { - array[index] = n + 1; - return n == 2; - })); - assertArrayLikeEquals([1, 2, 3, 3], a, constructor); - - // Create a new object in each function call when receiver is a - // primitive value. See ECMA-262, Annex C. - a = []; - new constructor([1, 2]).some(function() { a.push(this) }, ''); - assertTrue(a[0] !== a[1]); - - // Do not create a new object otherwise. - a = []; - new constructor([1, 2]).some(function() { a.push(this) }, {}); - assertEquals(a[0], a[1]); - - // In strict mode primitive values should not be coerced to an object. - a = []; - new constructor([1, 2]).some(function() { - 'use strict'; - a.push(this); - }, ''); - assertEquals('', a[0]); - assertEquals(a[0], a[1]); - - // Calling this method on other types is a TypeError - assertThrows(function() { - constructor.prototype.some.call([], function() {}); - }, TypeError); - - // Shadowing the length property doesn't change anything - a = new constructor([1, 2]); - Object.defineProperty(a, 'length', { value: 1 }); - assertEquals(true, a.some(function(elt) { return elt == 2; })); - assertEquals(false, Array.prototype.some.call(a, function(elt) { - return elt == 2; - })); - - // Detached Operation - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.some((v) => false), TypeError); - })(); - -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-keyedstore-tonumber.js b/implementation-contributed/v8/mjsunit/es6/typedarray-keyedstore-tonumber.js deleted file mode 100644 index ca4861819df..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-keyedstore-tonumber.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let TypedArrayConstructors = [ - Float64Array, - Float32Array, - Uint32Array, - Int32Array, - Uint16Array, - Int16Array, - Uint8Array, - Uint8ClampedArray, - Int8Array, -]; - -// Test KeyedStore in uninitialized and monomorphic states. -for (let C of TypedArrayConstructors) { - let keyedSta = function(array) { - var didRun = false; - array[0] = { - valueOf() { - didRun = true; - return 42; - } - }; - - return { didRun, array }; - }; - - for (var i = 0; i < 3; ++i) { - var { didRun, array } = keyedSta(new C(1)); - assertTrue(didRun); - assertEquals(array[0], 42); - - // OOB store - // FIXME: Throw a TypeError when storing OOB in a TypedArray. - var { didRun } = keyedSta(new C); - assertTrue(didRun); - } -} - -// Test KeyedStore in polymorphic and megamorphic states. -do { - let keyedSta = function(array) { - var didRun = false; - array[0] = { - valueOf() { - didRun = true; - return 42; - } - }; - - return { didRun, array }; - }; - - for (var i = 0; i < 3; ++i) { - for (var C of TypedArrayConstructors) { - var { didRun, array } = keyedSta(new C(1)); - assertTrue(didRun); - assertEquals(array[0], 42); - - // OOB store - // FIXME: Throw a TypeError when storing OOB in a TypedArray. - var { didRun } = keyedSta(new C); - assertTrue(didRun); - } - } -} while (false); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-map.js b/implementation-contributed/v8/mjsunit/es6/typedarray-map.js deleted file mode 100644 index e8d97879b61..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-map.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -function TestTypedArrayMap(constructor) { - assertEquals(1, constructor.prototype.map.length); - - var target; - - class EscapingArray extends constructor { - constructor(...args) { - super(...args); - target = this; - } - } - - class DetachingArray extends constructor { - static get [Symbol.species]() { - return EscapingArray; - } - } - - assertThrows(function(){ - new DetachingArray(5).map(function(v,i,a){ - print(i); - if (i == 1) { - %ArrayBufferDetach(target.buffer); - } - }) - }, TypeError); - -} - -for (i = 0; i < typedArrayConstructors.length; i++) { - TestTypedArrayMap(typedArrayConstructors[i]); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-neutered.js b/implementation-contributed/v8/mjsunit/es6/typedarray-neutered.js deleted file mode 100644 index 55a76cdc4d1..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-neutered.js +++ /dev/null @@ -1,781 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Disable the detaching protector. -%ArrayBufferDetach(new ArrayBuffer(1024)); - -// ArrayBuffer - -function TestByteLength(param, expectedByteLength) { - var ab = new ArrayBuffer(param); - assertSame(expectedByteLength, ab.byteLength); -} - -function TestArrayBufferCreation() { - TestByteLength(1, 1); - TestByteLength(256, 256); - TestByteLength(2.567, 2); - - TestByteLength("abc", 0); - - TestByteLength(0, 0); - - assertThrows(function() { new ArrayBuffer(-10); }, RangeError); - assertThrows(function() { new ArrayBuffer(-2.567); }, RangeError); - -/* TODO[dslomov]: Reenable the test - assertThrows(function() { - var ab1 = new ArrayBuffer(0xFFFFFFFFFFFF) - }, RangeError); -*/ - - var ab = new ArrayBuffer(); - assertSame(0, ab.byteLength); - assertEquals("[object ArrayBuffer]", - Object.prototype.toString.call(ab)); -} - -TestArrayBufferCreation(); - -function TestByteLengthNotWritable() { - var ab = new ArrayBuffer(1024); - assertSame(1024, ab.byteLength); - - assertThrows(function() { "use strict"; ab.byteLength = 42; }, TypeError); -} - -TestByteLengthNotWritable(); - -function TestSlice(expectedResultLen, initialLen, start, end) { - var ab = new ArrayBuffer(initialLen); - var a1 = new Uint8Array(ab); - for (var i = 0; i < a1.length; i++) { - a1[i] = 0xCA; - } - var slice = ab.slice(start, end); - assertSame(expectedResultLen, slice.byteLength); - var a2 = new Uint8Array(slice); - for (var i = 0; i < a2.length; i++) { - assertSame(0xCA, a2[i]); - } -} - -function TestArrayBufferSlice() { - var ab = new ArrayBuffer(1024); - var ab1 = ab.slice(512, 1024); - assertSame(512, ab1.byteLength); - - TestSlice(512, 1024, 512, 1024); - TestSlice(512, 1024, 512); - - TestSlice(0, 0, 1, 20); - TestSlice(100, 100, 0, 100); - TestSlice(100, 100, 0, 1000); - - TestSlice(0, 100, 5, 1); - - TestSlice(1, 100, -11, -10); - TestSlice(9, 100, -10, 99); - TestSlice(0, 100, -10, 80); - TestSlice(10, 100, 80, -10); - - TestSlice(10, 100, 90, "100"); - TestSlice(10, 100, "90", "100"); - - TestSlice(0, 100, 90, "abc"); - TestSlice(10, 100, "abc", 10); - - TestSlice(10, 100, 0.96, 10.96); - TestSlice(10, 100, 0.96, 10.01); - TestSlice(10, 100, 0.01, 10.01); - TestSlice(10, 100, 0.01, 10.96); - - TestSlice(10, 100, 90); - TestSlice(10, 100, -10); -} - -TestArrayBufferSlice(); - -// Typed arrays - -function TestTypedArray(constr, elementSize, typicalElement) { - assertSame(elementSize, constr.BYTES_PER_ELEMENT); - - var ab = new ArrayBuffer(256*elementSize); - - var a0 = new constr(30); - assertEquals("[object " + constr.name + "]", - Object.prototype.toString.call(a0)); - - assertTrue(ArrayBuffer.isView(a0)); - assertSame(elementSize, a0.BYTES_PER_ELEMENT); - assertSame(30, a0.length); - assertSame(30*elementSize, a0.byteLength); - assertSame(0, a0.byteOffset); - assertSame(30*elementSize, a0.buffer.byteLength); - - var aLen0 = new constr(0); - assertSame(elementSize, aLen0.BYTES_PER_ELEMENT); - assertSame(0, aLen0.length); - assertSame(0, aLen0.byteLength); - assertSame(0, aLen0.byteOffset); - assertSame(0, aLen0.buffer.byteLength); - - var aOverBufferLen0 = new constr(ab, 128*elementSize, 0); - assertSame(ab, aOverBufferLen0.buffer); - assertSame(elementSize, aOverBufferLen0.BYTES_PER_ELEMENT); - assertSame(0, aOverBufferLen0.length); - assertSame(0, aOverBufferLen0.byteLength); - assertSame(128*elementSize, aOverBufferLen0.byteOffset); - - var a1 = new constr(ab, 128*elementSize, 128); - assertSame(ab, a1.buffer); - assertSame(elementSize, a1.BYTES_PER_ELEMENT); - assertSame(128, a1.length); - assertSame(128*elementSize, a1.byteLength); - assertSame(128*elementSize, a1.byteOffset); - - - var a2 = new constr(ab, 64*elementSize, 128); - assertSame(ab, a2.buffer); - assertSame(elementSize, a2.BYTES_PER_ELEMENT); - assertSame(128, a2.length); - assertSame(128*elementSize, a2.byteLength); - assertSame(64*elementSize, a2.byteOffset); - - var a3 = new constr(ab, 192*elementSize); - assertSame(ab, a3.buffer); - assertSame(64, a3.length); - assertSame(64*elementSize, a3.byteLength); - assertSame(192*elementSize, a3.byteOffset); - - var a4 = new constr(ab); - assertSame(ab, a4.buffer); - assertSame(256, a4.length); - assertSame(256*elementSize, a4.byteLength); - assertSame(0, a4.byteOffset); - - - var i; - for (i = 0; i < 128; i++) { - a1[i] = typicalElement; - } - - for (i = 0; i < 128; i++) { - assertSame(typicalElement, a1[i]); - } - - for (i = 0; i < 64; i++) { - assertSame(0, a2[i]); - } - - for (i = 64; i < 128; i++) { - assertSame(typicalElement, a2[i]); - } - - for (i = 0; i < 64; i++) { - assertSame(typicalElement, a3[i]); - } - - for (i = 0; i < 128; i++) { - assertSame(0, a4[i]); - } - - for (i = 128; i < 256; i++) { - assertSame(typicalElement, a4[i]); - } - - var aAtTheEnd = new constr(ab, 256*elementSize); - assertSame(elementSize, aAtTheEnd.BYTES_PER_ELEMENT); - assertSame(0, aAtTheEnd.length); - assertSame(0, aAtTheEnd.byteLength); - assertSame(256*elementSize, aAtTheEnd.byteOffset); - - assertThrows(function () { new constr(ab, 257*elementSize); }, RangeError); - assertThrows( - function () { new constr(ab, 128*elementSize, 192); }, - RangeError); - - if (elementSize !== 1) { - assertThrows(function() { new constr(ab, 128*elementSize - 1, 10); }, - RangeError); - var unalignedArrayBuffer = new ArrayBuffer(10*elementSize + 1); - var goodArray = new constr(unalignedArrayBuffer, 0, 10); - assertSame(10, goodArray.length); - assertSame(10*elementSize, goodArray.byteLength); - assertThrows(function() { new constr(unalignedArrayBuffer)}, RangeError); - assertThrows(function() { new constr(unalignedArrayBuffer, 5*elementSize)}, - RangeError); - } - - var aFromUndef = new constr(); - assertSame(elementSize, aFromUndef.BYTES_PER_ELEMENT); - assertSame(0, aFromUndef.length); - assertSame(0*elementSize, aFromUndef.byteLength); - assertSame(0, aFromUndef.byteOffset); - assertSame(0*elementSize, aFromUndef.buffer.byteLength); - - var aFromNull = new constr(null); - assertSame(elementSize, aFromNull.BYTES_PER_ELEMENT); - assertSame(0, aFromNull.length); - assertSame(0*elementSize, aFromNull.byteLength); - assertSame(0, aFromNull.byteOffset); - assertSame(0*elementSize, aFromNull.buffer.byteLength); - - var aFromBool = new constr(true); - assertSame(elementSize, aFromBool.BYTES_PER_ELEMENT); - assertSame(1, aFromBool.length); - assertSame(1*elementSize, aFromBool.byteLength); - assertSame(0, aFromBool.byteOffset); - assertSame(1*elementSize, aFromBool.buffer.byteLength); - - var aFromString = new constr("30"); - assertSame(elementSize, aFromString.BYTES_PER_ELEMENT); - assertSame(30, aFromString.length); - assertSame(30*elementSize, aFromString.byteLength); - assertSame(0, aFromString.byteOffset); - assertSame(30*elementSize, aFromString.buffer.byteLength); - - assertThrows(function() { new constr(Symbol()); }, TypeError); - - var jsArray = []; - for (i = 0; i < 30; i++) { - jsArray.push(typicalElement); - } - var aFromArray = new constr(jsArray); - assertSame(elementSize, aFromArray.BYTES_PER_ELEMENT); - assertSame(30, aFromArray.length); - assertSame(30*elementSize, aFromArray.byteLength); - assertSame(0, aFromArray.byteOffset); - assertSame(30*elementSize, aFromArray.buffer.byteLength); - for (i = 0; i < 30; i++) { - assertSame(typicalElement, aFromArray[i]); - } - - var abLen0 = new ArrayBuffer(0); - var aOverAbLen0 = new constr(abLen0); - assertSame(abLen0, aOverAbLen0.buffer); - assertSame(elementSize, aOverAbLen0.BYTES_PER_ELEMENT); - assertSame(0, aOverAbLen0.length); - assertSame(0, aOverAbLen0.byteLength); - assertSame(0, aOverAbLen0.byteOffset); - - var aNoParam = new constr(); - assertSame(elementSize, aNoParam.BYTES_PER_ELEMENT); - assertSame(0, aNoParam.length); - assertSame(0, aNoParam.byteLength); - assertSame(0, aNoParam.byteOffset); - - var a = new constr(ab, 64*elementSize, 128); - assertEquals("[object " + constr.name + "]", - Object.prototype.toString.call(a)); - var desc = Object.getOwnPropertyDescriptor( - constr.prototype.__proto__, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.enumerable); - assertFalse(!!desc.writable); - assertFalse(!!desc.set); - assertEquals("function", typeof desc.get); - - // Test that the constructor can be called with an iterable - function* gen() { for (var i = 0; i < 10; i++) yield i; } - var genArr = new constr(gen()); - assertEquals(10, genArr.length); - assertEquals(0, genArr[0]); - assertEquals(9, genArr[9]); - // Arrays can be converted to TypedArrays - genArr = new constr([1, 2, 3]); - assertEquals(3, genArr.length); - assertEquals(1, genArr[0]); - assertEquals(3, genArr[2]); - // Redefining Array.prototype[Symbol.iterator] still works - var arrayIterator = Array.prototype[Symbol.iterator]; - Array.prototype[Symbol.iterator] = gen; - genArr = new constr([1, 2, 3]); - assertEquals(10, genArr.length); - assertEquals(0, genArr[0]); - assertEquals(9, genArr[9]); - Array.prototype[Symbol.iterator] = arrayIterator; - // Other array-like things can be made into a TypedArray - var myObject = { 0: 5, 1: 6, length: 2 }; - genArr = new constr(myObject); - assertEquals(2, genArr.length); - assertEquals(5, genArr[0]); - assertEquals(6, genArr[1]); - // Iterator takes precedence over array-like, and the property - // is read only once. - var iteratorReadCount = 0; - Object.defineProperty(myObject, Symbol.iterator, { - get: function() { iteratorReadCount++; return gen; } - }); - genArr = new constr(myObject); - assertEquals(10, genArr.length); - assertEquals(0, genArr[0]); - assertEquals(9, genArr[9]); - assertEquals(1, iteratorReadCount); -} - -TestTypedArray(Uint8Array, 1, 0xFF); -TestTypedArray(Int8Array, 1, -0x7F); -TestTypedArray(Uint16Array, 2, 0xFFFF); -TestTypedArray(Int16Array, 2, -0x7FFF); -TestTypedArray(Uint32Array, 4, 0xFFFFFFFF); -TestTypedArray(Int32Array, 4, -0x7FFFFFFF); -TestTypedArray(Float32Array, 4, 0.5); -TestTypedArray(Float64Array, 8, 0.5); -TestTypedArray(Uint8ClampedArray, 1, 0xFF); - -function SubarrayTestCase(constructor, item, expectedResultLen, expectedStartIndex, - initialLen, start, end) { - var a = new constructor(initialLen); - var s = a.subarray(start, end); - assertSame(constructor, s.constructor); - assertSame(expectedResultLen, s.length); - if (s.length > 0) { - s[0] = item; - assertSame(item, a[expectedStartIndex]); - } -} - -function TestSubArray(constructor, item) { - SubarrayTestCase(constructor, item, 512, 512, 1024, 512, 1024); - SubarrayTestCase(constructor, item, 512, 512, 1024, 512); - - SubarrayTestCase(constructor, item, 0, undefined, 0, 1, 20); - SubarrayTestCase(constructor, item, 100, 0, 100, 0, 100); - SubarrayTestCase(constructor, item, 100, 0, 100, 0, 1000); - SubarrayTestCase(constructor, item, 0, undefined, 100, 5, 1); - - SubarrayTestCase(constructor, item, 1, 89, 100, -11, -10); - SubarrayTestCase(constructor, item, 9, 90, 100, -10, 99); - SubarrayTestCase(constructor, item, 0, undefined, 100, -10, 80); - SubarrayTestCase(constructor, item, 10,80, 100, 80, -10); - - SubarrayTestCase(constructor, item, 10,90, 100, 90, "100"); - SubarrayTestCase(constructor, item, 10,90, 100, "90", "100"); - - SubarrayTestCase(constructor, item, 0, undefined, 100, 90, "abc"); - SubarrayTestCase(constructor, item, 10,0, 100, "abc", 10); - - SubarrayTestCase(constructor, item, 10,0, 100, 0.96, 10.96); - SubarrayTestCase(constructor, item, 10,0, 100, 0.96, 10.01); - SubarrayTestCase(constructor, item, 10,0, 100, 0.01, 10.01); - SubarrayTestCase(constructor, item, 10,0, 100, 0.01, 10.96); - - - SubarrayTestCase(constructor, item, 10,90, 100, 90); - SubarrayTestCase(constructor, item, 10,90, 100, -10); - - var method = constructor.prototype.subarray; - method.call(new constructor(100), 0, 100); - var o = {}; - assertThrows(function() { method.call(o, 0, 100); }, TypeError); -} - -TestSubArray(Uint8Array, 0xFF); -TestSubArray(Int8Array, -0x7F); -TestSubArray(Uint16Array, 0xFFFF); -TestSubArray(Int16Array, -0x7FFF); -TestSubArray(Uint32Array, 0xFFFFFFFF); -TestSubArray(Int32Array, -0x7FFFFFFF); -TestSubArray(Float32Array, 0.5); -TestSubArray(Float64Array, 0.5); -TestSubArray(Uint8ClampedArray, 0xFF); - -function TestTypedArrayOutOfRange(constructor, value, result) { - var a = new constructor(1); - a[0] = value; - assertSame(result, a[0]); -} - -TestTypedArrayOutOfRange(Uint8Array, 0x1FA, 0xFA); -TestTypedArrayOutOfRange(Uint8Array, -1, 0xFF); - -TestTypedArrayOutOfRange(Int8Array, 0x1FA, 0x7A - 0x80); - -TestTypedArrayOutOfRange(Uint16Array, 0x1FFFA, 0xFFFA); -TestTypedArrayOutOfRange(Uint16Array, -1, 0xFFFF); -TestTypedArrayOutOfRange(Int16Array, 0x1FFFA, 0x7FFA - 0x8000); - -TestTypedArrayOutOfRange(Uint32Array, 0x1FFFFFFFA, 0xFFFFFFFA); -TestTypedArrayOutOfRange(Uint32Array, -1, 0xFFFFFFFF); -TestTypedArrayOutOfRange(Int32Array, 0x1FFFFFFFA, 0x7FFFFFFA - 0x80000000); - -TestTypedArrayOutOfRange(Uint8ClampedArray, 0x1FA, 0xFF); -TestTypedArrayOutOfRange(Uint8ClampedArray, -1, 0); - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -function TestPropertyTypeChecks(constructor) { - function CheckProperty(name) { - assertThrows(function() { 'use strict'; new constructor(10)[name] = 0; }) - var d = Object.getOwnPropertyDescriptor(constructor.prototype.__proto__, name); - var o = {}; - assertThrows(function() {d.get.call(o);}, TypeError); - for (var i = 0; i < typedArrayConstructors.length; i++) { - var ctor = typedArrayConstructors[i]; - var a = new ctor(10); - d.get.call(a); // shouldn't throw - } - } - - CheckProperty("buffer"); - CheckProperty("byteOffset"); - CheckProperty("byteLength"); - CheckProperty("length"); -} - -for(i = 0; i < typedArrayConstructors.length; i++) { - TestPropertyTypeChecks(typedArrayConstructors[i]); -} - - -function TestTypedArraySet() { - // Test array.set in different combinations. - - function assertArrayPrefix(expected, array) { - for (var i = 0; i < expected.length; ++i) { - assertEquals(expected[i], array[i]); - } - } - - var a11 = new Int16Array([1, 2, 3, 4, 0, -1]) - var a12 = new Uint16Array(15) - a12.set(a11, 3) - assertArrayPrefix([0, 0, 0, 1, 2, 3, 4, 0, 0xffff, 0, 0], a12) - assertThrows(function(){ a11.set(a12) }) - - var a21 = [1, undefined, 10, NaN, 0, -1, {valueOf: function() {return 3}}] - var a22 = new Int32Array(12) - a22.set(a21, 2) - assertArrayPrefix([0, 0, 1, 0, 10, 0, 0, -1, 3, 0], a22) - - var a31 = new Float32Array([2, 4, 6, 8, 11, NaN, 1/0, -3]) - var a32 = a31.subarray(2, 6) - a31.set(a32, 4) - assertArrayPrefix([2, 4, 6, 8, 6, 8, 11, NaN], a31) - assertArrayPrefix([6, 8, 6, 8], a32) - - var a4 = new Uint8ClampedArray([3,2,5,6]) - a4.set(a4) - assertArrayPrefix([3, 2, 5, 6], a4) - - // Cases with overlapping backing store but different element sizes. - var b = new ArrayBuffer(4) - var a5 = new Int16Array(b) - var a50 = new Int8Array(b) - var a51 = new Int8Array(b, 0, 2) - var a52 = new Int8Array(b, 1, 2) - var a53 = new Int8Array(b, 2, 2) - - a5.set([0x5050, 0x0a0a]) - assertArrayPrefix([0x50, 0x50, 0x0a, 0x0a], a50) - assertArrayPrefix([0x50, 0x50], a51) - assertArrayPrefix([0x50, 0x0a], a52) - assertArrayPrefix([0x0a, 0x0a], a53) - - a50.set([0x50, 0x50, 0x0a, 0x0a]) - a51.set(a5) - assertArrayPrefix([0x50, 0x0a, 0x0a, 0x0a], a50) - - a50.set([0x50, 0x50, 0x0a, 0x0a]) - a52.set(a5) - assertArrayPrefix([0x50, 0x50, 0x0a, 0x0a], a50) - - a50.set([0x50, 0x50, 0x0a, 0x0a]) - a53.set(a5) - assertArrayPrefix([0x50, 0x50, 0x50, 0x0a], a50) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a51) - assertArrayPrefix([0x0050, 0x0051], a5) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a52) - assertArrayPrefix([0x0051, 0x000a], a5) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a53) - assertArrayPrefix([0x000a, 0x000b], a5) - - // Mixed types of same size. - var a61 = new Float32Array([1.2, 12.3]) - var a62 = new Int32Array(2) - a62.set(a61) - assertArrayPrefix([1, 12], a62) - a61.set(a62) - assertArrayPrefix([1, 12], a61) - - // Invalid source - var a = new Uint16Array(50); - var expected = []; - for (i = 0; i < 50; i++) { - a[i] = i; - expected.push(i); - } - a.set({}); - assertArrayPrefix(expected, a); - assertThrows(function() { a.set.call({}) }, TypeError); - assertThrows(function() { a.set.call([]) }, TypeError); - - assertThrows(function() { a.set(0); }, TypeError); - assertThrows(function() { a.set(0, 1); }, TypeError); - - assertEquals(1, a.set.length); -} - -TestTypedArraySet(); - -function TestTypedArraysWithIllegalIndices() { - var a = new Int32Array(100); - - a[-10] = 10; - assertEquals(undefined, a[-10]); - a["-10"] = 10; - assertEquals(undefined, a["-10"]); - - var s = " -10"; - a[s] = 10; - assertEquals(10, a[s]); - var s1 = " -10 "; - a[s] = 10; - assertEquals(10, a[s]); - - a["-1e2"] = 10; - assertEquals(10, a["-1e2"]); - assertEquals(undefined, a[-1e2]); - - a["-0"] = 256; - var s2 = " -0"; - a[s2] = 255; - assertEquals(undefined, a["-0"]); - assertEquals(255, a[s2]); - assertEquals(0, a[-0]); - - a[-Infinity] = 50; - assertEquals(undefined, a[-Infinity]); - - a[1.5] = 10; - assertEquals(undefined, a[1.5]); - var nan = Math.sqrt(-1); - a[nan] = 5; - assertEquals(undefined, a[nan]); - - var x = 0; - var y = -0; - assertEquals(Infinity, 1/x); - assertEquals(-Infinity, 1/y); - a[x] = 5; - a[y] = 27; - assertEquals(27, a[x]); - assertEquals(27, a[y]); -} - -TestTypedArraysWithIllegalIndices(); - -function TestTypedArraysWithIllegalIndicesStrict() { - 'use strict'; - var a = new Int32Array(100); - - a[-10] = 10; - assertEquals(undefined, a[-10]); - a["-10"] = 10; - assertEquals(undefined, a["-10"]); - - var s = " -10"; - a[s] = 10; - assertEquals(10, a[s]); - var s1 = " -10 "; - a[s] = 10; - assertEquals(10, a[s]); - - a["-1e2"] = 10; - assertEquals(10, a["-1e2"]); - assertEquals(undefined, a[-1e2]); - - a["-0"] = 256; - var s2 = " -0"; - a[s2] = 255; - assertEquals(undefined, a["-0"]); - assertEquals(255, a[s2]); - assertEquals(0, a[-0]); - - /* Chromium bug: 424619 - * a[-Infinity] = 50; - * assertEquals(undefined, a[-Infinity]); - */ - a[1.5] = 10; - assertEquals(undefined, a[1.5]); - var nan = Math.sqrt(-1); - a[nan] = 5; - assertEquals(undefined, a[nan]); - - var x = 0; - var y = -0; - assertEquals(Infinity, 1/x); - assertEquals(-Infinity, 1/y); - a[x] = 5; - a[y] = 27; - assertEquals(27, a[x]); - assertEquals(27, a[y]); -} - -TestTypedArraysWithIllegalIndicesStrict(); - -// DataView -function TestDataViewConstructor() { - var ab = new ArrayBuffer(256); - - var d1 = new DataView(ab, 1, 255); - assertTrue(ArrayBuffer.isView(d1)); - assertSame(ab, d1.buffer); - assertSame(1, d1.byteOffset); - assertSame(255, d1.byteLength); - - var d2 = new DataView(ab, 2); - assertSame(ab, d2.buffer); - assertSame(2, d2.byteOffset); - assertSame(254, d2.byteLength); - - var d3 = new DataView(ab); - assertSame(ab, d3.buffer); - assertSame(0, d3.byteOffset); - assertSame(256, d3.byteLength); - - var d3a = new DataView(ab, 1, 0); - assertSame(ab, d3a.buffer); - assertSame(1, d3a.byteOffset); - assertSame(0, d3a.byteLength); - - var d3b = new DataView(ab, 256, 0); - assertSame(ab, d3b.buffer); - assertSame(256, d3b.byteOffset); - assertSame(0, d3b.byteLength); - - var d3c = new DataView(ab, 256); - assertSame(ab, d3c.buffer); - assertSame(256, d3c.byteOffset); - assertSame(0, d3c.byteLength); - - var d4 = new DataView(ab, 1, 3.1415926); - assertSame(ab, d4.buffer); - assertSame(1, d4.byteOffset); - assertSame(3, d4.byteLength); - - - // error cases - assertThrows(function() { new DataView(ab, -1); }, RangeError); - assertThrows(function() { new DataView(); }, TypeError); - assertThrows(function() { new DataView([]); }, TypeError); - assertThrows(function() { new DataView(ab, 257); }, RangeError); - assertThrows(function() { new DataView(ab, 1, 1024); }, RangeError); -} - -TestDataViewConstructor(); - -function TestDataViewPropertyTypeChecks() { - var a = new DataView(new ArrayBuffer(10)); - function CheckProperty(name) { - var d = Object.getOwnPropertyDescriptor(DataView.prototype, name); - var o = {} - assertThrows(function() {d.get.call(o);}, TypeError); - d.get.call(a); // shouldn't throw - } - - CheckProperty("buffer"); - CheckProperty("byteOffset"); - CheckProperty("byteLength"); - - function CheckGetSetLength(name) { - assertEquals(1, DataView.prototype["get" + name].length); - assertEquals(2, DataView.prototype["set" + name].length); - } - CheckGetSetLength("Int8"); - CheckGetSetLength("Uint8"); - CheckGetSetLength("Int16"); - CheckGetSetLength("Uint16"); - CheckGetSetLength("Int32"); - CheckGetSetLength("Uint32"); - CheckGetSetLength("Float32"); - CheckGetSetLength("Float64"); -} - - -TestDataViewPropertyTypeChecks(); - - -function TestDataViewToStringTag() { - var a = new DataView(new ArrayBuffer(10)); - assertEquals("[object DataView]", Object.prototype.toString.call(a)); - var desc = Object.getOwnPropertyDescriptor( - DataView.prototype, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.enumerable); - assertFalse(desc.writable); - assertEquals("DataView", desc.value); -} - - -// General tests for properties - -// Test property attribute [[Enumerable]] -function TestEnumerable(func, obj) { - function props(x) { - var array = []; - for (var p in x) array.push(p); - return array.sort(); - } - assertArrayEquals([], props(func)); - assertArrayEquals([], props(func.prototype)); - if (obj) - assertArrayEquals([], props(obj)); -} -TestEnumerable(ArrayBuffer, new ArrayBuffer()); -for(i = 0; i < typedArrayConstructors.length; i++) { - TestEnumerable(typedArrayConstructors[i]); -} -TestEnumerable(DataView, new DataView(new ArrayBuffer())); - -// Test arbitrary properties on ArrayBuffer -function TestArbitrary(m) { - function TestProperty(map, property, value) { - map[property] = value; - assertEquals(value, map[property]); - } - for (var i = 0; i < 20; i++) { - TestProperty(m, 'key' + i, 'val' + i); - TestProperty(m, 'foo' + i, 'bar' + i); - } -} -TestArbitrary(new ArrayBuffer(256)); -for(i = 0; i < typedArrayConstructors.length; i++) { - TestArbitrary(new typedArrayConstructors[i](10)); -} -TestArbitrary(new DataView(new ArrayBuffer(256))); - - -// Test direct constructor call -assertThrows(function() { ArrayBuffer(); }, TypeError); -assertThrows(function() { DataView(new ArrayBuffer()); }, TypeError); - -function TestNonConfigurableProperties(constructor) { - var arr = new constructor([100]) - assertFalse(Object.getOwnPropertyDescriptor(arr,"0").configurable) - assertFalse(delete arr[0]) -} - -for(i = 0; i < typedArrayConstructors.length; i++) { - TestNonConfigurableProperties(typedArrayConstructors[i]); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-of.js b/implementation-contributed/v8/mjsunit/es6/typedarray-of.js deleted file mode 100644 index 8ae590a8493..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-of.js +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --expose-gc - -// Based on Mozilla Array.of() tests at http://dxr.mozilla.org/mozilla-central/source/js/src/jit-test/tests/collections - -'use strict'; - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - - -function TestTypedArrayOf(constructor) { - // %TypedArray%.of basics. - var a = constructor.of(); - assertEquals(0, a.length); - assertEquals(constructor.prototype, Object.getPrototypeOf(a)); - assertEquals(false, Array.isArray(a)); - - // Items are coerced to numerical values. - a = constructor.of(undefined, null, [], true, false, 3.14); - - // For typed arrays of floating point values, values are not rounded. - if (constructor === Float32Array || constructor === Float64Array) { - assertEquals(NaN, a[0]); - assertEquals(0, a[1]); - assertEquals(0, a[2]); - assertEquals(1, a[3]); - assertEquals(0, a[4]); - assertEquals(true, Math.abs(a[5] - 3.14) < 1e-6); - } else { - assertEquals(0, a[0]); - assertEquals(0, a[1]); - assertEquals(0, a[2]); - assertEquals(1, a[3]); - assertEquals(0, a[4]); - assertEquals(3, a[5]); - } - - var aux = []; - for (var i = 0; i < 100; i++) - aux[i] = i; - - a = constructor.of.apply(constructor, aux); - assertEquals(aux.length, a.length); - assertArrayEquals(aux, a); - - // %TypedArray%.of can be called on subclasses of TypedArrays - var hits = 0; - class Bag extends constructor { - constructor(length) { - super(length); - assertEquals(arguments.length, 1); - assertEquals(length, 2); - hits++; - } - } - - hits = 0; - a = Bag.of(5, 6); - assertEquals(1, hits); - assertEquals(2, a.length); - assertArrayEquals([5, 6], a); - assertEquals(Bag.prototype, a.__proto__); - - hits = 0; - var actual = constructor.of.call(Bag, 5, 6); - assertEquals(1, hits); - assertEquals(2, a.length); - assertArrayEquals([5, 6], a); - assertEquals(Bag.prototype, a.__proto__); - - // %TypedArray%.of does not trigger prototype setters. - // (It defines elements rather than assigning to them.) - var status = "pass"; - Object.defineProperty(constructor.prototype, "0", { - set: function(v) { status = "fail"; } - }); - assertEquals(1, constructor.of(1)[0], 1); - assertEquals("pass", status); - - // Note that %TypedArray%.of does not trigger "length" setter itself, as - // it relies on the constructor to set "length" to the value passed to it. - // If the constructor does not assign "length", the setter should not be - // invoked. - - // Setter on the newly created object. - class Pack extends constructor { - constructor(length) { - super(length); - Object.defineProperty(this, "length", { - set: function (v) { status = "fail"; } - }); - } - } - var pack = Pack.of(5, 6, 7, 8); - assertEquals("pass", status); - - // when the setter is on the new object's prototype - class Bevy extends constructor {} - Object.defineProperty(Bevy.prototype, "length", { - set: function (v) { status = "fail"; } - }); - var bevy = Bevy.of(3); - assertEquals("pass", status); - - // Check superficial features of %TypedArray%.of. - var desc = Object.getOwnPropertyDescriptor(constructor.__proto__, "of"); - - assertEquals(desc.configurable, true); - assertEquals(desc.enumerable, false); - assertEquals(desc.writable, true); - assertEquals(constructor.of.length, 0); - - // %TypedArray%.of is not a constructor. - assertThrows(function() { new constructor.of(); }, TypeError); - - // For receivers which are not constructors %TypedArray%.of does not - // allocate a typed array using a default constructor, but throws an - // exception. Note that this is different from Array.of, which uses - // Array as default constructor. - for (var x of [undefined, null, false, true, "cow", 42, 3.14]) { - assertThrows(function () { constructor.of.call(x); }, TypeError); - } - - // Check if it's correctly accessing new typed array elements even after - // garbage collection is invoked in ToNumber. - var not_number = { - [Symbol.toPrimitive]() { - gc(); - return 123; - } - }; - var dangerous_array = new Array(64).fill(not_number); - var a = constructor.of(...dangerous_array); - for (var i = 0; i < 64; i++) { - assertEquals(123, a[i]); - } -} - -for (var constructor of typedArrayConstructors) { - TestTypedArrayOf(constructor); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-proto.js b/implementation-contributed/v8/mjsunit/es6/typedarray-proto.js deleted file mode 100644 index 0bd90d13b40..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-proto.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that the methods for different TypedArray types have the same -// identity. - -'use strict'; - -let typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -let TypedArray = Uint8Array.__proto__; -let TypedArrayPrototype = TypedArray.prototype; - -assertEquals(TypedArray.__proto__, Function.prototype); -assertEquals(TypedArrayPrototype.__proto__, Object.prototype); - -// There are extra own class properties due to it simply being a function -let classProperties = new Set([ - "length", "name", "arguments", "caller", "prototype", "BYTES_PER_ELEMENT" -]); -let instanceProperties = new Set(["BYTES_PER_ELEMENT", "constructor", "prototype"]); - -function functionProperties(object) { - return Object.getOwnPropertyNames(object).filter(function(name) { - return typeof Object.getOwnPropertyDescriptor(object, name).value - == "function" - && name != 'constructor' && name != 'subarray'; - }); -} - -let typedArrayMethods = functionProperties(Uint8Array.prototype); -let typedArrayClassMethods = functionProperties(Uint8Array); - -for (let constructor of typedArrayConstructors) { - for (let property of Object.getOwnPropertyNames(constructor.prototype)) { - assertTrue(instanceProperties.has(property), property); - } - for (let property of Object.getOwnPropertyNames(constructor)) { - assertTrue(classProperties.has(property), property); - } -} - -// Abstract %TypedArray% class can't be constructed directly - -assertThrows(() => new TypedArray(), TypeError); - -// The "prototype" property is nonconfigurable, nonenumerable, nonwritable, -// both for %TypedArray% and for all subclasses - -let desc = Object.getOwnPropertyDescriptor(TypedArray, "prototype"); -assertFalse(desc.writable); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); - -for (let constructor of typedArrayConstructors) { - let desc = Object.getOwnPropertyDescriptor(constructor, "prototype"); - assertFalse(desc.writable); - assertFalse(desc.configurable); - assertFalse(desc.enumerable); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-reduce.js b/implementation-contributed/v8/mjsunit/es6/typedarray-reduce.js deleted file mode 100644 index 2746c57dffd..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-reduce.js +++ /dev/null @@ -1,266 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -function clone(v) { - // Shallow-copies arrays, returns everything else verbatim. - if (v instanceof Array) { - // Shallow-copy an array. - var newArray = new Array(v.length); - for (var i in v) { - newArray[i] = v[i]; - } - return newArray; - } - return v; -} - - -// Creates a callback function for reduce/reduceRight that tests the number -// of arguments and otherwise behaves as "func", but which also -// records all calls in an array on the function (as arrays of arguments -// followed by result). -function makeRecorder(func, testName) { - var record = []; - var f = function recorder(a, b, i, s) { - assertEquals(4, arguments.length, - testName + "(number of arguments: " + arguments.length + ")"); - assertEquals("number", typeof(i), testName + "(index must be number)"); - assertEquals(s[i], b, testName + "(current argument is at index)"); - if (record.length > 0) { - var prevRecord = record[record.length - 1]; - var prevResult = prevRecord[prevRecord.length - 1]; - assertEquals(prevResult, a, - testName + "(prev result -> current input)"); - } - var args = [clone(a), clone(b), i, clone(s)]; - var result = func.apply(this, arguments); - args.push(clone(result)); - record.push(args); - return result; - }; - f.record = record; - return f; -} - - -function testReduce(type, - testName, - expectedResult, - expectedCalls, - array, - combine, - init) { - var rec = makeRecorder(combine); - var result; - var performsCall; - if (arguments.length > 6) { - result = array[type](rec, init); - } else { - result = array[type](rec); - } - var calls = rec.record; - assertEquals(expectedCalls.length, calls.length, - testName + " (number of calls)"); - for (var i = 0; i < expectedCalls.length; i++) { - assertEquals(expectedCalls[i], calls[i], - testName + " (call " + (i + 1) + ")"); - } - assertEquals(expectedResult, result, testName + " (result)"); -} - - -function sum(a, b) { return a + b; } -function prod(a, b) { return a * b; } -function dec(a, b, i, arr) { return a + b * Math.pow(10, arr.length - i - 1); } -function accumulate(acc, elem, i) { acc[i] = elem; return acc; } - -for (var constructor of typedArrayConstructors) { - // ---- Test Reduce[Left] - - var simpleArray = new constructor([2,4,6]) - - testReduce("reduce", "SimpleReduceSum", 12, - [[0, 2, 0, simpleArray, 2], - [2, 4, 1, simpleArray, 6], - [6, 6, 2, simpleArray, 12]], - simpleArray, sum, 0); - - testReduce("reduce", "SimpleReduceProd", 48, - [[1, 2, 0, simpleArray, 2], - [2, 4, 1, simpleArray, 8], - [8, 6, 2, simpleArray, 48]], - simpleArray, prod, 1); - - testReduce("reduce", "SimpleReduceDec", 246, - [[0, 2, 0, simpleArray, 200], - [200, 4, 1, simpleArray, 240], - [240, 6, 2, simpleArray, 246]], - simpleArray, dec, 0); - - testReduce("reduce", "SimpleReduceAccumulate", [2, 4, 6], - [[[], 2, 0, simpleArray, [2]], - [[2], 4, 1, simpleArray, [2, 4]], - [[2,4], 6, 2, simpleArray, [2, 4, 6]]], - simpleArray, accumulate, []); - - - testReduce("reduce", "EmptyReduceSum", 0, [], new constructor([]), sum, 0); - testReduce("reduce", "EmptyReduceProd", 1, [], new constructor([]), prod, 1); - testReduce("reduce", "EmptyReduceDec", 0, [], new constructor([]), dec, 0); - testReduce("reduce", "EmptyReduceAccumulate", [], [], new constructor([]), accumulate, []); - - testReduce("reduce", "EmptyReduceSumNoInit", 0, [], new constructor([0]), sum); - testReduce("reduce", "EmptyReduceProdNoInit", 1, [], new constructor([1]), prod); - testReduce("reduce", "EmptyReduceDecNoInit", 0, [], new constructor([0]), dec); - - // ---- Test ReduceRight - - testReduce("reduceRight", "SimpleReduceRightSum", 12, - [[0, 6, 2, simpleArray, 6], - [6, 4, 1, simpleArray, 10], - [10, 2, 0, simpleArray, 12]], - simpleArray, sum, 0); - - testReduce("reduceRight", "SimpleReduceRightProd", 48, - [[1, 6, 2, simpleArray, 6], - [6, 4, 1, simpleArray, 24], - [24, 2, 0, simpleArray, 48]], - simpleArray, prod, 1); - - testReduce("reduceRight", "SimpleReduceRightDec", 246, - [[0, 6, 2, simpleArray, 6], - [6, 4, 1, simpleArray, 46], - [46, 2, 0, simpleArray, 246]], - simpleArray, dec, 0); - - - testReduce("reduceRight", "EmptyReduceRightSum", 0, [], new constructor([]), sum, 0); - testReduce("reduceRight", "EmptyReduceRightProd", 1, [], new constructor([]), prod, 1); - testReduce("reduceRight", "EmptyReduceRightDec", 0, [], new constructor([]), dec, 0); - testReduce("reduceRight", "EmptyReduceRightAccumulate", [], - [], new constructor([]), accumulate, []); - - testReduce("reduceRight", "EmptyReduceRightSumNoInit", 0, [], new constructor([0]), sum); - testReduce("reduceRight", "EmptyReduceRightProdNoInit", 1, [], new constructor([1]), prod); - testReduce("reduceRight", "EmptyReduceRightDecNoInit", 0, [], new constructor([0]), dec); - - // Ignore non-array properties: - - var arrayPlus = new constructor([1,2,3]); - arrayPlus[-1] = NaN; - arrayPlus["00"] = NaN; - arrayPlus["02"] = NaN; - arrayPlus["-0"] = NaN; - arrayPlus.x = NaN; - - testReduce("reduce", "ArrayWithNonElementPropertiesReduce", 6, - [[0, 1, 0, arrayPlus, 1], - [1, 2, 1, arrayPlus, 3], - [3, 3, 2, arrayPlus, 6], - ], arrayPlus, sum, 0); - - testReduce("reduceRight", "ArrayWithNonElementPropertiesReduceRight", 6, - [[0, 3, 2, arrayPlus, 3], - [3, 2, 1, arrayPlus, 5], - [5, 1, 0, arrayPlus, 6], - ], arrayPlus, sum, 0); - - - // Test error conditions: - - var exception = false; - try { - new constructor([1]).reduce("not a function"); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduce callback not a function not throwing TypeError"); - assertTrue(e.message.indexOf(" is not a function") >= 0, - "reduce non function TypeError type"); - } - assertTrue(exception); - - exception = false; - try { - new constructor([1]).reduceRight("not a function"); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduceRight callback not a function not throwing TypeError"); - assertTrue(e.message.indexOf(" is not a function") >= 0, - "reduceRight non function TypeError type"); - } - assertTrue(exception); - - exception = false; - try { - new constructor([]).reduce(sum); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduce no initial value not throwing TypeError"); - assertEquals("Reduce of empty array with no initial value", e.message, - "reduce no initial TypeError type"); - } - assertTrue(exception); - - exception = false; - try { - new constructor([]).reduceRight(sum); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError, - "reduceRight no initial value not throwing TypeError"); - assertEquals("Reduce of empty array with no initial value", e.message, - "reduceRight no initial TypeError type"); - } - assertTrue(exception); - - // Reduce fails when called on non-TypedArrays - assertThrows(function() { - constructor.prototype.reduce.call([], function() {}, null); - }, TypeError); - assertThrows(function() { - constructor.prototype.reduceRight.call([], function() {}, null); - }, TypeError); - - // Shadowing length doesn't affect every, unlike Array.prototype.every - var a = new constructor([1, 2]); - Object.defineProperty(a, 'length', {value: 1}); - assertEquals(a.reduce(sum, 0), 3); - assertEquals(Array.prototype.reduce.call(a, sum, 0), 1); - assertEquals(a.reduceRight(sum, 0), 3); - assertEquals(Array.prototype.reduceRight.call(a, sum, 0), 1); - - assertEquals(1, constructor.prototype.reduce.length); - assertEquals(1, constructor.prototype.reduceRight.length); - - // Detached Operation - var tmp = { - [Symbol.toPrimitive]() { - assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is detached."); - return 0; - } - }; - - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.reduce(sum, tmp), TypeError); - assertThrows(() => array.reduceRight(sum, tmp), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-reverse.js b/implementation-contributed/v8/mjsunit/es6/typedarray-reverse.js deleted file mode 100644 index 6dbd33d30ba..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-reverse.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function ArrayMaker(x) { - return x; -} -ArrayMaker.prototype = Array.prototype; - -var arrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array, - ArrayMaker // Also test arrays -]; - -function assertArrayLikeEquals(value, expected, type) { - assertEquals(value.__proto__, type.prototype); - assertEquals(expected.length, value.length); - for (var i = 0; i < value.length; ++i) { - assertEquals(expected[i], value[i]); - } -} - -for (var constructor of arrayConstructors) { - // Test reversing both even and odd length arrays - var a = new constructor([1, 2, 3]); - assertArrayLikeEquals(a.reverse(), [3, 2, 1], constructor); - assertArrayLikeEquals(a, [3, 2, 1], constructor); - - a = new constructor([1, 2, 3, 4]); - assertArrayLikeEquals(a.reverse(), [4, 3, 2, 1], constructor); - assertArrayLikeEquals(a, [4, 3, 2, 1], constructor); - - if (constructor != ArrayMaker) { - // Cannot be called on objects which are not TypedArrays - assertThrows(function () { a.reverse.call({ length: 0 }); }, TypeError); - } else { - // Array.reverse works on array-like objects - var x = { length: 2, 1: 5 }; - a.reverse.call(x); - assertEquals(2, x.length); - assertFalse(Object.prototype.hasOwnProperty.call(x, '1')); - assertEquals(5, x[0]); - } - - assertEquals(0, a.reverse.length); - - // Detached Operation - if (constructor != ArrayMaker) { - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.reverse(), TypeError); - } -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-set-bytelength-not-smi.js b/implementation-contributed/v8/mjsunit/es6/typedarray-set-bytelength-not-smi.js deleted file mode 100644 index e4a8c2b6263..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-set-bytelength-not-smi.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --mock-arraybuffer-allocator - -(function TestBufferByteLengthNonSmi() { - const source_buffer_length = %MaxSmi() + 1; - const source_buffer = new ArrayBuffer(source_buffer_length); - const source = new Uint16Array(source_buffer); - assertEquals(source_buffer_length, source_buffer.byteLength); - assertEquals(source_buffer_length / 2, source.length); - - const target_buffer_length = %MaxSmi() - 1; - const target_buffer = new ArrayBuffer(target_buffer_length); - const target = new Uint16Array(target_buffer); - assertEquals(target_buffer_length, target_buffer.byteLength); - assertEquals(target_buffer_length / 2, target.length); - - assertThrows(() => target.set(source), RangeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-set-length-internal.js b/implementation-contributed/v8/mjsunit/es6/typedarray-set-length-internal.js deleted file mode 100644 index 22b8f67e0ee..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-set-length-internal.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -var descriptor = { get: function() { throw new Error("accessed length"); } }; - -for (var constructor of typedArrayConstructors) { - var differentConstructor = - constructor === Uint8Array ? Int8Array : Uint8Array; - var target = new constructor(16); - Object.defineProperty(target, "length", descriptor); - - var sameBuffer = new differentConstructor(target.buffer, 0, 2); - Object.defineProperty(sameBuffer, "length", descriptor); - target.set(sameBuffer); - - var differentBuffer = new differentConstructor(16); - Object.defineProperty(differentBuffer, "length", descriptor); - target.set(differentBuffer); - - var array = [0, 1, 2]; - target.set(array); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-set-length.js b/implementation-contributed/v8/mjsunit/es6/typedarray-set-length.js deleted file mode 100644 index 6dd5bf76e0a..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-set-length.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -var lengthCalled = false; -function lengthValue() { - assertFalse(lengthCalled); - lengthCalled = true; - return 5; -} - -// ToLength should convert these to usable lengths. -var goodNonIntegerLengths = [ - function() { return 4.6; }, - function() { return -5; }, - function() { return NaN; }, - function() { return "5"; }, - function() { return "abc"; }, - function() { return true; }, - function() { return null; }, - function() { return undefined; } -]; - -// This will fail if you use ToLength on it. -function badNonIntegerLength() { - return Symbol("5"); -} - -for (var constructor of typedArrayConstructors) { - lengthCalled = false; - var a = new constructor(10); - a.set({length: {valueOf: lengthValue}}); - assertTrue(lengthCalled); - - for (var lengthFun of goodNonIntegerLengths) { - a.set({length: {valueOf: lengthFun}}); - } - - assertThrows(function() { - a.set({length: {valueOf: badNonIntegerLength}}); - }, TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-slice.js b/implementation-contributed/v8/mjsunit/es6/typedarray-slice.js deleted file mode 100644 index bd89f86e740..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-slice.js +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -for (var constructor of typedArrayConstructors) { - // Check various variants of empty array's slicing. - var array = new constructor(0); - for (var i = 0; i < 7; i++) { - assertEquals(0, array.slice(0, 0).length); - assertEquals(0, array.slice(1, 0).length); - assertEquals(0, array.slice(0, 1).length); - assertEquals(0, array.slice(-1, 0).length); - } - - - // Check various forms of arguments omission. - array = new constructor(7); - - for (var i = 0; i < 7; i++) { - assertEquals(array, array.slice()); - assertEquals(array, array.slice(0)); - assertEquals(array, array.slice(undefined)); - assertEquals(array, array.slice("foobar")); - assertEquals(array, array.slice(undefined, undefined)); - } - - - // Check variants of negatives and positive indices. - array = new constructor(7); - - assertEquals(7, array.slice(-100).length); - assertEquals(3, array.slice(-3).length); - assertEquals(3, array.slice(4).length); - assertEquals(1, array.slice(6).length); - assertEquals(0, array.slice(7).length); - assertEquals(0, array.slice(8).length); - assertEquals(0, array.slice(100).length); - - assertEquals(0, array.slice(0, -100).length); - assertEquals(4, array.slice(0, -3).length); - assertEquals(4, array.slice(0, 4).length); - assertEquals(6, array.slice(0, 6).length); - assertEquals(7, array.slice(0, 7).length); - assertEquals(7, array.slice(0, 8).length); - assertEquals(7, array.slice(0, 100).length); - - // Does not permit being called on other types - assertThrows(() => constructor.prototype.slice.call([], 0, 0), TypeError); - - // Check that elements are copied properly in slice - array = new constructor([1, 2, 3, 4]); - var slice = array.slice(1, 3); - assertEquals(2, slice.length); - assertEquals(2, slice[0]); - assertEquals(3, slice[1]); - assertTrue(slice instanceof constructor); - - // Detached Operation - var tmp = { - [Symbol.toPrimitive]() { - assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is detached."); - return 0; - } - }; - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.slice(tmp, tmp), TypeError); - - // Check that the species array must be a typed array - class MyTypedArray extends constructor { - static get[Symbol.species]() { - return Array; - } - } - var arr = new MyTypedArray([-1.0, 0, 1.1, 255, 256]); - assertThrows(() => arr.slice(), TypeError); -} - -// Check that the result array is properly created by checking species -for (var constructor1 of typedArrayConstructors) { - for (var constructor2 of typedArrayConstructors) { - testCustomSubclass(constructor1, constructor2); - testSpeciesConstructor(constructor1, constructor2); - } -} - -function testSpeciesConstructor(cons1, cons2) { - var ta = new cons1([1, 2, 3, 4, 5, 6]); - ta.constructor = { - [Symbol.species]: cons2 - }; - assertArrayEquals([4, 5, 6], ta.slice(3)); -} - -function testCustomSubclass(superClass, speciesClass) { - // Simple subclass that has another TypedArray as species - class CustomTypedArray extends superClass { - static get[Symbol.species]() { - return speciesClass; - } - } - // 16 entries. - let exampleArray = [-1.0, 0, 1.1, 255, 256, 0xFFFFFFFF, 2**50, NaN]; - let customArray = new CustomTypedArray(exampleArray); - let basicArray = new superClass(exampleArray); - assertEquals(new speciesClass(basicArray), customArray.slice(), - superClass.name + ' -> ' + speciesClass.name); - - // Custom constructor with shared buffer. - exampleArray = new Array(64).fill(0).map((v,i) => i); - let filledBuffer = new Uint8Array(exampleArray).buffer; - // Create a view for the beginning of the buffer. - let customArray2 = new superClass(filledBuffer, 0, 3); - customArray2.constructor = { - [Symbol.species]: function(length) { - let bytes_per_element = speciesClass.BYTES_PER_ELEMENT; - // Reuse the same buffer for the custom species constructor. - // Skip the first BYTES_PER_ELEMENT bytes of the buffer. - return new speciesClass(filledBuffer, bytes_per_element, length); - } - }; - // Since slice is defined iteratively, the species created new array uses the - // same underlying buffer shifted by one element. Hence the first value is - // copied over and over again. - let convertedCopy = Array.from(customArray2); - let firstValue = convertedCopy[0]; - assertEquals(firstValue, customArray2[0]); - let sliceResult = customArray2.slice(); - if (superClass == speciesClass) { - assertEquals(new Array(3).fill(firstValue), Array.from(customArray2)); - assertEquals(new Array(3).fill(firstValue), Array.from(sliceResult)); - } - assertEquals(3, customArray2.length); - assertEquals(3, sliceResult.length); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-sort.js b/implementation-contributed/v8/mjsunit/es6/typedarray-sort.js deleted file mode 100644 index 7cd08b12588..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-sort.js +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -function assertArrayLikeEquals(value, expected, type) { - assertEquals(value.__proto__, type.prototype); - // Don't test value.length because we mess with that; - // instead in certain callsites we check that length - // is set appropriately. - for (var i = 0; i < expected.length; ++i) { - // Use Object.is to differentiate between +-0 - assertSame(expected[i], value[i]); - } -} - -for (var constructor of typedArrayConstructors) { - // Test default numerical sorting order - var a = new constructor([100, 7, 45]) - assertEquals(a.sort(), a); - assertArrayLikeEquals(a, [7, 45, 100], constructor); - assertEquals(a.length, 3); - - // For arrays of floats, certain handling of +-0/NaN - if (constructor === Float32Array || constructor === Float64Array) { - var b = new constructor([+0, -0, NaN, -0, NaN, +0]) - b.sort(); - assertArrayLikeEquals(b, [-0, -0, +0, +0, NaN, NaN], constructor); - assertEquals(b.length, 6); - } - - // Custom sort--backwards - a.sort(function(x, y) { return y - x; }); - assertArrayLikeEquals(a, [100, 45, 7], constructor); - - // Basic TypedArray method properties: - // Length field is ignored - Object.defineProperty(a, 'length', {value: 1}); - assertEquals(a.sort(), a); - assertArrayLikeEquals(a, [7, 45, 100], constructor); - assertEquals(a.length, 1); - // Method doesn't work on other objects - assertThrows(function() { a.sort.call([]); }, TypeError); - - // Do not touch elements out of byte offset - var buf = new ArrayBuffer(constructor.BYTES_PER_ELEMENT * 3); - var a = new constructor(buf, constructor.BYTES_PER_ELEMENT); - var b = new constructor(buf); - b[0] = 3; b[1] = 2; b[2] = 1; - a.sort(); - assertArrayLikeEquals(a, [1, 2], constructor); - - // Detached Operation - var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.sort(), TypeError); -} - -// Check that TypedArray.p.sort is stable. -for (let constructor of typedArrayConstructors) { - // Sort an array [0..kSize-1] modulo 4. If the sort is stable, the array - // will be partitioned into 4 parts, where each part has only increasing - // elements. - const kSize = 128; - const kModulo = 4; - const kRunSize = kSize / kModulo; - - const template = Array.from({ length: kSize }, (_, i) => i); - const array = new constructor(template); - - const compare = (a, b) => (b % kModulo) - (a % kModulo); - array.sort(compare); - - function assertIncreasing(from) { - for (let i = from + 1; i < from + kRunSize; ++i) { - assertTrue(array[i - 1] < array[i]); - assertEquals(array[i - 1] % kModulo, array[i] % kModulo); - } - } - - for (let i = 0; i < kModulo; ++i) assertIncreasing(i * kRunSize); -} - -// The following creates a test for each typed element kind, where the array -// to sort consists of some max/min/zero elements. -// -// When providing a custom compare function, the torque version of -// TypedArray.p.sort needs to convert array elements to "Number"/"BigInt" -// and back. The following test checks the edge cases for that conversion. - -let constructorsWithArrays = [ - {ctor: Uint8Array, array: [255, 254, 4, 3, 2, 1, 0]}, - {ctor: Int8Array, array: [127, 126, 1, 0, -1, -127, -128]}, - {ctor: Uint16Array, array: [2 ** 16 - 1, 2 ** 16 - 2, 4, 3, 2, 1, 0]}, - { - ctor: Int16Array, - array: [2 ** 15 - 1, 2 ** 15 - 2, 1, 0, -1, -(2 ** 15 - 1), -(2 ** 15)] - }, - {ctor: Uint32Array, array: [2 ** 32 - 1, 2 ** 32 - 2, 4, 3, 2, 1, 0]}, - { - ctor: Int32Array, - array: [2 ** 31 - 1, 2 ** 31 - 2, 1, 0, -1, -(2 ** 31 - 1), -(2 ** 31)] - }, - { - ctor: Float32Array, - array: [2 ** 24, 2 ** 24 - 1, 1, 0,-1, -(2 ** 24 - 1), -(2 ** 24)] - }, - { - ctor: Float64Array, - array: [2 ** 53, 2 ** 53 - 1, 1, 0, -1, -(2 ** 53 - 1), -(2 ** 53)] - }, - {ctor: Uint8ClampedArray, array: [255, 254, 4, 3, 2, 1, 0]}, - { - ctor: BigUint64Array, - array: [2n ** 64n - 1n, 2n ** 64n - 2n, 4n, 3n, 2n, 1n, 0n] - }, - { - ctor: BigInt64Array, - array: [2n ** 63n - 1n, 2n ** 63n - 2n, 1n, 0n, - -1n, -(2n ** 63n - 1n), -(2n ** 63n)] - } -]; - -// Compare function needs to return a Number in all cases, and not a BigInt. -// Hence we can not simply return "a - b". -function cmpfn(a, b) { - if (a < b) return -1; - if (b < a) return 1; - return 0; -} - -for (let constructor of constructorsWithArrays) { - let array = new constructor.ctor(constructor.array); - - assertEquals(array.sort(cmpfn), array); - assertArrayLikeEquals(array, constructor.array.reverse(), constructor.ctor); - assertEquals(array.length, constructor.array.length); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-species.js b/implementation-contributed/v8/mjsunit/es6/typedarray-species.js deleted file mode 100644 index 020d65c5019..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-species.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Subclasses of %TypedArray% construct themselves under map, etc - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -for (let constructor of typedArrayConstructors) { - class MyTypedArray extends constructor { } - assertEquals(MyTypedArray, new MyTypedArray().map(()=>0).constructor); - assertEquals(MyTypedArray, new MyTypedArray().filter(()=>{}).constructor); - assertEquals(MyTypedArray, new MyTypedArray().slice().constructor); -} - -// Subclasses can override @@species to return the another class - -for (let constructor of typedArrayConstructors) { - class MyTypedArray extends constructor { } - class MyOtherTypedArray extends constructor { - static get [Symbol.species]() { return MyTypedArray; } - } - assertEquals(MyTypedArray, new MyOtherTypedArray().map(()=>0).constructor); - assertEquals(MyTypedArray, new MyOtherTypedArray().filter(()=>{}).constructor); - assertEquals(MyTypedArray, new MyOtherTypedArray().slice().constructor); -} - -// TypedArray too-short and non-TypedArray error checking - -for (let constructor of typedArrayConstructors) { - class MyShortTypedArray extends constructor { - constructor(length) { super(length - 1); } - } - assertThrows(() => new MyShortTypedArray(5).map(()=>0), TypeError); - assertThrows(() => new MyShortTypedArray(5).filter(()=>true), TypeError); - assertThrows(() => new MyShortTypedArray(5).slice(), TypeError); - - class MyNonTypedArray extends constructor { - static get [Symbol.species]() { return Array; } - } - assertThrows(() => new MyNonTypedArray().map(()=>0), TypeError); - assertThrows(() => new MyNonTypedArray().filter(()=>{}), TypeError); - assertThrows(() => new MyNonTypedArray().slice(), TypeError); -} - -// Defaults when constructor or @@species is missing or non-constructor - -for (let constructor of typedArrayConstructors) { - class MyDefaultTypedArray extends constructor { - static get [Symbol.species]() { return undefined; } - } - assertEquals(constructor, new MyDefaultTypedArray().map(()=>0).constructor); - - class MyOtherDefaultTypedArray extends constructor { } - assertEquals(MyOtherDefaultTypedArray, new MyOtherDefaultTypedArray().map(()=>0).constructor); - MyOtherDefaultTypedArray.prototype.constructor = undefined; - assertEquals(constructor, new MyOtherDefaultTypedArray().map(()=>0).constructor); -} - -// Exceptions propagated when getting constructor @@species throws - -class SpeciesError extends Error { } -class ConstructorError extends Error { } - -for (let constructor of typedArrayConstructors) { - class MyThrowingArray extends constructor { - static get [Symbol.species]() { throw new SpeciesError; } - } - assertThrows(() => new MyThrowingArray().map(()=>{}), SpeciesError); - Object.defineProperty(MyThrowingArray.prototype, 'constructor', { - get() { throw new ConstructorError; } - }); - assertThrows(() => new MyThrowingArray().map(()=>{}), ConstructorError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-tostring.js b/implementation-contributed/v8/mjsunit/es6/typedarray-tostring.js deleted file mode 100644 index 16c6319b7af..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-tostring.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Array's toString should call the object's own join method, if one exists and -// is callable. Otherwise, just use the original Object.toString function. - -// Flags: --allow-natives-syntax - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array -]; - -for (var constructor of typedArrayConstructors) { - var success = "[test success]"; - var expectedThis; - function testJoin() { - assertEquals(0, arguments.length); - assertSame(expectedThis, this); - return success; - } - - - // On an Array object. - - // Default case. - var a1 = new constructor([1, 2, 3]); - assertEquals("1,2,3", a1.toString()); - assertEquals("1,2,3", a1.join()); - assertEquals("1,2,3", a1.toLocaleString()); - - // Non-standard "join" function is called correctly. - var a2 = new constructor([1, 2, 3]); - a2.join = testJoin; - expectedThis = a2; - assertEquals(success, a2.toString()); - assertEquals(success, a2.join()); - assertEquals("1,2,3", a2.toLocaleString()); - - // Non-callable join function is ignored and Object.prototype.toString is - // used instead. - var a3 = new constructor([1, 2, 3]); - a3.join = "not callable"; - assertEquals(0, a3.toString().search(/\[object .+Array\]/)); - - // Non-existing join function is treated same as non-callable. - var a4 = new constructor([1, 2, 3]); - a4.__proto__ = { toString: constructor.prototype.toString }; - // No join on Array. - assertEquals(0, a3.toString().search(/\[object .+Array\]/)); - - - // On a non-Array object, throws. - var o1 = {length: 3, 0: 1, 1: 2, 2: 3, - toString: constructor.prototype.toString, - join: constructor.prototype.join, - toLocaleString: constructor.prototype.toLocaleString}; - assertThrows(function() { o1.join() }, TypeError); - assertThrows(function() { o1.toString() }, TypeError); - assertThrows(function() { o1.toLocaleString() }, TypeError); - // toString is OK if join not from here: - o1.join = Array.prototype.join; - assertEquals("1,2,3", o1.join()); - assertEquals("1,2,3", o1.toString()); - assertThrows(function() { o1.toLocaleString() }, TypeError); - // TODO(littledan): Use the same function for TypedArray as for - // Array, as the spec says (but Firefox doesn't do either). - // Currently, using the same method leads to a bootstrap failure. - // assertEquals(o1.toString, Array.prototype.toString); - - // Redefining length does not change result - var a5 = new constructor([1, 2, 3]) - Object.defineProperty(a5, 'length', { value: 2 }); - assertEquals("1,2,3", a5.join()); - assertEquals("1,2,3", a5.toString()); - assertEquals("1,2,3", a5.toLocaleString()); - assertEquals("1,2", Array.prototype.join.call(a5)); - assertEquals("1,2,3", Array.prototype.toString.call(a5)); - assertEquals("1,2", Array.prototype.toLocaleString.call(a5)); - - (function TestToLocaleStringCalls() { - let log = []; - let pushArgs = (label) => (...args) => log.push(label, args); - - let NumberToLocaleString = Number.prototype.toLocaleString; - Number.prototype.toLocaleString = pushArgs("Number"); - - (new constructor([1, 2])).toLocaleString(); - assertEquals(["Number", [], "Number", []], log); - - Number.prototype.toLocaleString = NumberToLocaleString; - })(); - - // Detached Operation - var array = new constructor([1, 2, 3]); - %ArrayBufferDetach(array.buffer); - assertThrows(() => array.join(), TypeError); - assertThrows(() => array.toLocalString(), TypeError); - assertThrows(() => array.toString(), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray.js b/implementation-contributed/v8/mjsunit/es6/typedarray.js deleted file mode 100644 index aab12341acc..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/typedarray.js +++ /dev/null @@ -1,1050 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// ArrayBuffer - -function TestByteLength(param, expectedByteLength) { - var ab = new ArrayBuffer(param); - assertSame(expectedByteLength, ab.byteLength); -} - -function TestArrayBufferCreation() { - TestByteLength(1, 1); - TestByteLength(256, 256); - TestByteLength(2.567, 2); - - TestByteLength("abc", 0); - - TestByteLength(0, 0); - - assertThrows(function() { new ArrayBuffer(-10); }, RangeError); - assertThrows(function() { new ArrayBuffer(-2.567); }, RangeError); - -/* TODO[dslomov]: Reenable the test - assertThrows(function() { - var ab1 = new ArrayBuffer(0xFFFFFFFFFFFF) - }, RangeError); -*/ - - var ab = new ArrayBuffer(); - assertSame(0, ab.byteLength); - assertEquals("[object ArrayBuffer]", - Object.prototype.toString.call(ab)); -} - -TestArrayBufferCreation(); - -function TestByteLengthNotWritable() { - var ab = new ArrayBuffer(1024); - assertSame(1024, ab.byteLength); - - assertThrows(function() { "use strict"; ab.byteLength = 42; }, TypeError); -} - -TestByteLengthNotWritable(); - -function TestSlice(expectedResultLen, initialLen, start, end) { - var ab = new ArrayBuffer(initialLen); - var a1 = new Uint8Array(ab); - for (var i = 0; i < a1.length; i++) { - a1[i] = 0xCA; - } - var slice = ab.slice(start, end); - assertSame(expectedResultLen, slice.byteLength); - var a2 = new Uint8Array(slice); - for (var i = 0; i < a2.length; i++) { - assertSame(0xCA, a2[i]); - } -} - -function TestArrayBufferSlice() { - var ab = new ArrayBuffer(1024); - var ab1 = ab.slice(512, 1024); - assertSame(512, ab1.byteLength); - - TestSlice(512, 1024, 512, 1024); - TestSlice(512, 1024, 512); - - TestSlice(0, 0, 1, 20); - TestSlice(100, 100, 0, 100); - TestSlice(100, 100, 0, 1000); - - TestSlice(0, 100, 5, 1); - - TestSlice(1, 100, -11, -10); - TestSlice(9, 100, -10, 99); - TestSlice(0, 100, -10, 80); - TestSlice(10, 100, 80, -10); - - TestSlice(10, 100, 90, "100"); - TestSlice(10, 100, "90", "100"); - - TestSlice(0, 100, 90, "abc"); - TestSlice(10, 100, "abc", 10); - - TestSlice(10, 100, 0.96, 10.96); - TestSlice(10, 100, 0.96, 10.01); - TestSlice(10, 100, 0.01, 10.01); - TestSlice(10, 100, 0.01, 10.96); - - TestSlice(10, 100, 90); - TestSlice(10, 100, -10); -} - -TestArrayBufferSlice(); - -// Typed arrays - -function TestTypedArray(constr, elementSize, typicalElement) { - assertSame(elementSize, constr.BYTES_PER_ELEMENT); - - var ab = new ArrayBuffer(256*elementSize); - - var a0 = new constr(30); - assertEquals("[object " + constr.name + "]", - Object.prototype.toString.call(a0)); - - assertTrue(ArrayBuffer.isView(a0)); - assertSame(elementSize, a0.BYTES_PER_ELEMENT); - assertSame(30, a0.length); - assertSame(30*elementSize, a0.byteLength); - assertSame(0, a0.byteOffset); - assertSame(30*elementSize, a0.buffer.byteLength); - - var aLen0 = new constr(0); - assertSame(elementSize, aLen0.BYTES_PER_ELEMENT); - assertSame(0, aLen0.length); - assertSame(0, aLen0.byteLength); - assertSame(0, aLen0.byteOffset); - assertSame(0, aLen0.buffer.byteLength); - - var aOverBufferLen0 = new constr(ab, 128*elementSize, 0); - assertSame(ab, aOverBufferLen0.buffer); - assertSame(elementSize, aOverBufferLen0.BYTES_PER_ELEMENT); - assertSame(0, aOverBufferLen0.length); - assertSame(0, aOverBufferLen0.byteLength); - assertSame(128*elementSize, aOverBufferLen0.byteOffset); - - var a1 = new constr(ab, 128*elementSize, 128); - assertSame(ab, a1.buffer); - assertSame(elementSize, a1.BYTES_PER_ELEMENT); - assertSame(128, a1.length); - assertSame(128*elementSize, a1.byteLength); - assertSame(128*elementSize, a1.byteOffset); - - - var a2 = new constr(ab, 64*elementSize, 128); - assertSame(ab, a2.buffer); - assertSame(elementSize, a2.BYTES_PER_ELEMENT); - assertSame(128, a2.length); - assertSame(128*elementSize, a2.byteLength); - assertSame(64*elementSize, a2.byteOffset); - - var a3 = new constr(ab, 192*elementSize); - assertSame(ab, a3.buffer); - assertSame(64, a3.length); - assertSame(64*elementSize, a3.byteLength); - assertSame(192*elementSize, a3.byteOffset); - - var a4 = new constr(ab); - assertSame(ab, a4.buffer); - assertSame(256, a4.length); - assertSame(256*elementSize, a4.byteLength); - assertSame(0, a4.byteOffset); - - - var i; - for (i = 0; i < 128; i++) { - a1[i] = typicalElement; - } - - for (i = 0; i < 128; i++) { - assertSame(typicalElement, a1[i]); - } - - for (i = 0; i < 64; i++) { - assertSame(0, a2[i]); - } - - for (i = 64; i < 128; i++) { - assertSame(typicalElement, a2[i]); - } - - for (i = 0; i < 64; i++) { - assertSame(typicalElement, a3[i]); - } - - for (i = 0; i < 128; i++) { - assertSame(0, a4[i]); - } - - for (i = 128; i < 256; i++) { - assertSame(typicalElement, a4[i]); - } - - var aAtTheEnd = new constr(ab, 256*elementSize); - assertSame(elementSize, aAtTheEnd.BYTES_PER_ELEMENT); - assertSame(0, aAtTheEnd.length); - assertSame(0, aAtTheEnd.byteLength); - assertSame(256*elementSize, aAtTheEnd.byteOffset); - - assertThrows(function () { new constr(ab, 257*elementSize); }, RangeError); - assertThrows( - function () { new constr(ab, 128*elementSize, 192); }, - RangeError); - - if (elementSize !== 1) { - assertThrows(function() { new constr(ab, 128*elementSize - 1, 10); }, - RangeError); - var unalignedArrayBuffer = new ArrayBuffer(10*elementSize + 1); - var goodArray = new constr(unalignedArrayBuffer, 0, 10); - assertSame(10, goodArray.length); - assertSame(10*elementSize, goodArray.byteLength); - assertThrows(function() { new constr(unalignedArrayBuffer)}, RangeError); - assertThrows(function() { new constr(unalignedArrayBuffer, 5*elementSize)}, - RangeError); - } - - var aFromUndef = new constr(); - assertSame(elementSize, aFromUndef.BYTES_PER_ELEMENT); - assertSame(0, aFromUndef.length); - assertSame(0*elementSize, aFromUndef.byteLength); - assertSame(0, aFromUndef.byteOffset); - assertSame(0*elementSize, aFromUndef.buffer.byteLength); - - var aFromNull = new constr(null); - assertSame(elementSize, aFromNull.BYTES_PER_ELEMENT); - assertSame(0, aFromNull.length); - assertSame(0*elementSize, aFromNull.byteLength); - assertSame(0, aFromNull.byteOffset); - assertSame(0*elementSize, aFromNull.buffer.byteLength); - - var aFromBool = new constr(true); - assertSame(elementSize, aFromBool.BYTES_PER_ELEMENT); - assertSame(1, aFromBool.length); - assertSame(1*elementSize, aFromBool.byteLength); - assertSame(0, aFromBool.byteOffset); - assertSame(1*elementSize, aFromBool.buffer.byteLength); - - var aFromString = new constr("30"); - assertSame(elementSize, aFromString.BYTES_PER_ELEMENT); - assertSame(30, aFromString.length); - assertSame(30*elementSize, aFromString.byteLength); - assertSame(0, aFromString.byteOffset); - assertSame(30*elementSize, aFromString.buffer.byteLength); - - assertThrows(function() { new constr(Symbol()); }, TypeError); - - assertThrows(function() { new constr(-1); }, RangeError); - - var jsArray = []; - for (i = 0; i < 30; i++) { - jsArray.push(typicalElement); - } - var aFromArray = new constr(jsArray); - assertSame(elementSize, aFromArray.BYTES_PER_ELEMENT); - assertSame(30, aFromArray.length); - assertSame(30*elementSize, aFromArray.byteLength); - assertSame(0, aFromArray.byteOffset); - assertSame(30*elementSize, aFromArray.buffer.byteLength); - for (i = 0; i < 30; i++) { - assertSame(typicalElement, aFromArray[i]); - } - - var abLen0 = new ArrayBuffer(0); - var aOverAbLen0 = new constr(abLen0); - assertSame(abLen0, aOverAbLen0.buffer); - assertSame(elementSize, aOverAbLen0.BYTES_PER_ELEMENT); - assertSame(0, aOverAbLen0.length); - assertSame(0, aOverAbLen0.byteLength); - assertSame(0, aOverAbLen0.byteOffset); - - var aNoParam = new constr(); - assertSame(elementSize, aNoParam.BYTES_PER_ELEMENT); - assertSame(0, aNoParam.length); - assertSame(0, aNoParam.byteLength); - assertSame(0, aNoParam.byteOffset); - - var a = new constr(ab, 64*elementSize, 128); - assertEquals("[object " + constr.name + "]", - Object.prototype.toString.call(a)); - var desc = Object.getOwnPropertyDescriptor( - constr.prototype.__proto__, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.enumerable); - assertFalse(!!desc.writable); - assertFalse(!!desc.set); - assertEquals("function", typeof desc.get); - - // Test that the constructor can be called with an iterable - function* gen() { for (var i = 0; i < 10; i++) yield i; } - var genArr = new constr(gen()); - assertEquals(10, genArr.length); - assertEquals(0, genArr[0]); - assertEquals(9, genArr[9]); - // Arrays can be converted to TypedArrays - genArr = new constr([1, 2, 3]); - assertEquals(3, genArr.length); - assertEquals(1, genArr[0]); - assertEquals(3, genArr[2]); - // Redefining Array.prototype[Symbol.iterator] still works - var arrayIterator = Array.prototype[Symbol.iterator]; - Array.prototype[Symbol.iterator] = gen; - genArr = new constr([1, 2, 3]); - assertEquals(10, genArr.length); - assertEquals(0, genArr[0]); - assertEquals(9, genArr[9]); - Array.prototype[Symbol.iterator] = arrayIterator; - // Other array-like things can be made into a TypedArray - var myObject = { 0: 5, 1: 6, length: 2 }; - genArr = new constr(myObject); - assertEquals(2, genArr.length); - assertEquals(5, genArr[0]); - assertEquals(6, genArr[1]); - // Iterator takes precedence over array-like, and the property - // is read only once. - var iteratorReadCount = 0; - Object.defineProperty(myObject, Symbol.iterator, { - get: function() { iteratorReadCount++; return gen; } - }); - genArr = new constr(myObject); - assertEquals(10, genArr.length); - assertEquals(0, genArr[0]); - assertEquals(9, genArr[9]); - assertEquals(1, iteratorReadCount); - - // Modified %ArrayIteratorPrototype%.next() method is honoured (v8:5699) - const ArrayIteratorPrototype = Object.getPrototypeOf([][Symbol.iterator]()); - const ArrayIteratorPrototypeNextDescriptor = - Object.getOwnPropertyDescriptor(ArrayIteratorPrototype, 'next'); - const ArrayIteratorPrototypeNext = ArrayIteratorPrototype.next; - ArrayIteratorPrototype.next = function() { - return { done: true }; - }; - genArr = new constr([1, 2, 3]); - assertEquals(0, genArr.length); - - ArrayIteratorPrototype.next = ArrayIteratorPrototypeNext; - - // Modified %ArrayIteratorPrototype%.next() is only loaded during the iterator - // prologue. - let nextMethod = ArrayIteratorPrototypeNext; - let getNextCount = 0; - Object.defineProperty(ArrayIteratorPrototype, 'next', { - get() { - getNextCount++; - return nextMethod; - }, - set(v) { nextMethod = v; }, - configurable: true - }); - - genArr = new constr(Object.defineProperty([1, , 3], 1, { - get() { - ArrayIteratorPrototype.next = function() { - return { done: true }; - } - return 2; - } - })); - Object.defineProperty(ArrayIteratorPrototype, 'next', - ArrayIteratorPrototypeNextDescriptor); - assertEquals(1, getNextCount); - assertEquals(3, genArr.length); - assertEquals(1, genArr[0]); - assertEquals(2, genArr[1]); - assertEquals(3, genArr[2]); - ArrayIteratorPrototype.next = ArrayIteratorPrototypeNext; -} - -TestTypedArray(Uint8Array, 1, 0xFF); -TestTypedArray(Int8Array, 1, -0x7F); -TestTypedArray(Uint16Array, 2, 0xFFFF); -TestTypedArray(Int16Array, 2, -0x7FFF); -TestTypedArray(Uint32Array, 4, 0xFFFFFFFF); -TestTypedArray(Int32Array, 4, -0x7FFFFFFF); -TestTypedArray(Float32Array, 4, 0.5); -TestTypedArray(Float64Array, 8, 0.5); -TestTypedArray(Uint8ClampedArray, 1, 0xFF); - -function SubarrayTestCase(constructor, item, expectedResultLen, expectedStartIndex, - initialLen, start, end) { - var a = new constructor(initialLen); - var s = a.subarray(start, end); - assertSame(constructor, s.constructor); - assertSame(expectedResultLen, s.length); - if (s.length > 0) { - s[0] = item; - assertSame(item, a[expectedStartIndex]); - } -} - -function TestSubArray(constructor, item) { - SubarrayTestCase(constructor, item, 512, 512, 1024, 512, 1024); - SubarrayTestCase(constructor, item, 512, 512, 1024, 512); - - SubarrayTestCase(constructor, item, 0, undefined, 0, 1, 20); - SubarrayTestCase(constructor, item, 100, 0, 100, 0, 100); - SubarrayTestCase(constructor, item, 100, 0, 100, 0, 1000); - SubarrayTestCase(constructor, item, 0, undefined, 100, 5, 1); - - SubarrayTestCase(constructor, item, 1, 89, 100, -11, -10); - SubarrayTestCase(constructor, item, 9, 90, 100, -10, 99); - SubarrayTestCase(constructor, item, 0, undefined, 100, -10, 80); - SubarrayTestCase(constructor, item, 10,80, 100, 80, -10); - - SubarrayTestCase(constructor, item, 10,90, 100, 90, "100"); - SubarrayTestCase(constructor, item, 10,90, 100, "90", "100"); - - SubarrayTestCase(constructor, item, 0, undefined, 100, 90, "abc"); - SubarrayTestCase(constructor, item, 10,0, 100, "abc", 10); - - SubarrayTestCase(constructor, item, 10,0, 100, 0.96, 10.96); - SubarrayTestCase(constructor, item, 10,0, 100, 0.96, 10.01); - SubarrayTestCase(constructor, item, 10,0, 100, 0.01, 10.01); - SubarrayTestCase(constructor, item, 10,0, 100, 0.01, 10.96); - - - SubarrayTestCase(constructor, item, 10,90, 100, 90); - SubarrayTestCase(constructor, item, 10,90, 100, -10); - - var method = constructor.prototype.subarray; - method.call(new constructor(100), 0, 100); - var o = {}; - assertThrows(function() { method.call(o, 0, 100); }, TypeError); -} - -TestSubArray(Uint8Array, 0xFF); -TestSubArray(Int8Array, -0x7F); -TestSubArray(Uint16Array, 0xFFFF); -TestSubArray(Int16Array, -0x7FFF); -TestSubArray(Uint32Array, 0xFFFFFFFF); -TestSubArray(Int32Array, -0x7FFFFFFF); -TestSubArray(Float32Array, 0.5); -TestSubArray(Float64Array, 0.5); -TestSubArray(Uint8ClampedArray, 0xFF); - -function TestTypedArrayOutOfRange(constructor, value, result) { - var a = new constructor(1); - a[0] = value; - assertSame(result, a[0]); -} - -TestTypedArrayOutOfRange(Uint8Array, 0x1FA, 0xFA); -TestTypedArrayOutOfRange(Uint8Array, -1, 0xFF); - -TestTypedArrayOutOfRange(Int8Array, 0x1FA, 0x7A - 0x80); - -TestTypedArrayOutOfRange(Uint16Array, 0x1FFFA, 0xFFFA); -TestTypedArrayOutOfRange(Uint16Array, -1, 0xFFFF); -TestTypedArrayOutOfRange(Int16Array, 0x1FFFA, 0x7FFA - 0x8000); - -TestTypedArrayOutOfRange(Uint32Array, 0x1FFFFFFFA, 0xFFFFFFFA); -TestTypedArrayOutOfRange(Uint32Array, -1, 0xFFFFFFFF); -TestTypedArrayOutOfRange(Int32Array, 0x1FFFFFFFA, 0x7FFFFFFA - 0x80000000); - -TestTypedArrayOutOfRange(Uint8ClampedArray, 0x1FA, 0xFF); -TestTypedArrayOutOfRange(Uint8ClampedArray, -1, 0); - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -function TestPropertyTypeChecks(constructor) { - function CheckProperty(name) { - assertThrows(function() { 'use strict'; new constructor(10)[name] = 0; }) - var d = Object.getOwnPropertyDescriptor(constructor.prototype.__proto__, name); - var o = {}; - assertThrows(function() {d.get.call(o);}, TypeError); - for (var i = 0; i < typedArrayConstructors.length; i++) { - var ctor = typedArrayConstructors[i]; - var a = new ctor(10); - d.get.call(a); // shouldn't throw - } - } - - CheckProperty("buffer"); - CheckProperty("byteOffset"); - CheckProperty("byteLength"); - CheckProperty("length"); -} - -for(i = 0; i < typedArrayConstructors.length; i++) { - TestPropertyTypeChecks(typedArrayConstructors[i]); -} - - -function TestTypedArraySet() { - // Test array.set in different combinations. - - function assertArrayPrefix(expected, array) { - for (var i = 0; i < expected.length; ++i) { - assertEquals(expected[i], array[i]); - } - } - - a = new Uint32Array(); - a.set(''); - assertEquals(0, a.length); - - assertThrows(() => a.set('abc'), RangeError); - - a = new Uint8Array(3); - a.set('123'); - assertArrayEquals([1, 2, 3], a); - - var a11 = new Int16Array([1, 2, 3, 4, 0, -1]) - var a12 = new Uint16Array(15) - a12.set(a11, 3) - assertArrayPrefix([0, 0, 0, 1, 2, 3, 4, 0, 0xffff, 0, 0], a12) - assertThrows(function(){ a11.set(a12) }) - - var a21 = [1, undefined, 10, NaN, 0, -1, {valueOf: function() {return 3}}] - var a22 = new Int32Array(12) - a22.set(a21, 2) - assertArrayPrefix([0, 0, 1, 0, 10, 0, 0, -1, 3, 0], a22) - - var a31 = new Float32Array([2, 4, 6, 8, 11, NaN, 1/0, -3]) - var a32 = a31.subarray(2, 6) - a31.set(a32, 4) - assertArrayPrefix([2, 4, 6, 8, 6, 8, 11, NaN], a31) - assertArrayPrefix([6, 8, 6, 8], a32) - - var a4 = new Uint8ClampedArray([3,2,5,6]) - a4.set(a4) - assertArrayPrefix([3, 2, 5, 6], a4) - - // Cases with overlapping backing store but different element sizes. - var b = new ArrayBuffer(4) - var a5 = new Int16Array(b) - var a50 = new Int8Array(b) - var a51 = new Int8Array(b, 0, 2) - var a52 = new Int8Array(b, 1, 2) - var a53 = new Int8Array(b, 2, 2) - var a54 = new Int8Array(b, 0, 0) - - a5.set([0x5050, 0x0a0a]) - assertArrayPrefix([0x50, 0x50, 0x0a, 0x0a], a50) - assertArrayPrefix([0x50, 0x50], a51) - assertArrayPrefix([0x50, 0x0a], a52) - assertArrayPrefix([0x0a, 0x0a], a53) - - a50.set([0x50, 0x50, 0x0a, 0x0a]) - a51.set(a5) - assertArrayPrefix([0x50, 0x0a, 0x0a, 0x0a], a50) - - a50.set([0x50, 0x50, 0x0a, 0x0a]) - a52.set(a5) - assertArrayPrefix([0x50, 0x50, 0x0a, 0x0a], a50) - - a50.set([0x50, 0x50, 0x0a, 0x0a]) - a53.set(a5) - assertArrayPrefix([0x50, 0x50, 0x50, 0x0a], a50) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a51) - assertArrayPrefix([0x0050, 0x0051], a5) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a52) - assertArrayPrefix([0x0051, 0x000a], a5) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a53) - assertArrayPrefix([0x000a, 0x000b], a5) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a54, 0) - assertArrayPrefix([0x50, 0x51, 0x0a, 0x0b], a50) - - // Mixed types of same size. - var a61 = new Float32Array([1.2, 12.3]) - var a62 = new Int32Array(2) - a62.set(a61) - assertArrayPrefix([1, 12], a62) - a61.set(a62) - assertArrayPrefix([1, 12], a61) - - // Invalid source - var a = new Uint16Array(50); - var expected = []; - for (i = 0; i < 50; i++) { - a[i] = i; - expected.push(i); - } - a.set({}); - assertArrayPrefix(expected, a); - assertThrows(function() { a.set.call({}) }, TypeError); - assertThrows(function() { a.set.call([]) }, TypeError); - - assertThrows(function() { a.set(0); }, TypeError); - assertThrows(function() { a.set(0, 1); }, TypeError); - - assertEquals(1, a.set.length); - - // Shared buffer that does not overlap. - var buf = new ArrayBuffer(32); - var a101 = new Int8Array(buf, 0, 16); - var b101 = new Uint8Array(buf, 16); - b101[0] = 42; - a101.set(b101); - assertArrayPrefix([42], a101); - - buf = new ArrayBuffer(32); - var a101 = new Int8Array(buf, 0, 16); - var b101 = new Uint8Array(buf, 16); - a101[0] = 42; - b101.set(a101); - assertArrayPrefix([42], b101); - - // Detached array buffer when accessing a source element - var a111 = new Int8Array(100); - var evilarr = new Array(100); - var detached = false; - evilarr[1] = { - [Symbol.toPrimitive]() { - %ArrayBufferDetach(a111.buffer); - detached = true; - return 1; - } - }; - assertThrows(() => a111.set(evilarr), TypeError); - assertEquals(true, detached); - - // Check if the target is a typed array before converting offset to integer - var tmp = { - [Symbol.toPrimitive]() { - assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is detached."); - return 1; - } - }; - assertThrows(() => Int8Array.prototype.set.call(1, tmp), TypeError); - assertThrows(() => Int8Array.prototype.set.call([], tmp), TypeError); - - // Detached array buffer when converting offset. - { - for (const klass of typedArrayConstructors) { - const xs = new klass(10); - let detached = false; - const offset = { - [Symbol.toPrimitive]() { - %ArrayBufferDetach(xs.buffer); - detached = true; - return 0; - } - }; - assertThrows(() => xs.set(xs, offset), TypeError); - assertEquals(true, detached); - } - } - - // Detached JSTypedArray source argument. - { - for (const klass of typedArrayConstructors) { - const a = new klass(2); - for (let i = 0; i < a.length; i++) a[i] = i; - %ArrayBufferDetach(a.buffer); - - const b = new klass(2); - assertThrows(() => b.set(a), TypeError); - } - } - - // Various offset edge cases. - { - for (const klass of typedArrayConstructors) { - const xs = new klass(10); - assertThrows(() => xs.set(xs, -1), RangeError); - assertThrows(() => xs.set(xs, -1 * 2**64), RangeError); - xs.set(xs, -0.0); - xs.set(xs, 0.0); - xs.set(xs, 0.5); - assertThrows(() => xs.set(xs, 2**64), RangeError); - } - } - - // Exhaustively test elements kind combinations with JSArray source arg. - { - const kSize = 3; - const targets = typedArrayConstructors.map(klass => new klass(kSize)); - const sources = [ [0,1,2] // PACKED_SMI - , [0,,2] // HOLEY_SMI - , [0.1,0.2,0.3] // PACKED_DOUBLE - , [0.1,,0.3] // HOLEY_DOUBLE - , [{},{},{}] // PACKED - , [{},,{}] // HOLEY - , [] // DICTIONARY (patched later) - ]; - - // Migrate to DICTIONARY_ELEMENTS. - Object.defineProperty(sources[6], 0, {}); - - assertTrue(%HasSmiElements(sources[0])); - assertTrue(%HasFastElements(sources[0]) && !%HasHoleyElements(sources[0])); - assertTrue(%HasSmiElements(sources[1])); - assertTrue(%HasFastElements(sources[1]) && %HasHoleyElements(sources[1])); - assertTrue(%HasDoubleElements(sources[2])); - assertTrue(%HasFastElements(sources[2]) && !%HasHoleyElements(sources[2])); - assertTrue(%HasDoubleElements(sources[3])); - assertTrue(%HasFastElements(sources[3]) && %HasHoleyElements(sources[3])); - assertTrue(%HasObjectElements(sources[4])); - assertTrue(%HasFastElements(sources[4]) && !%HasHoleyElements(sources[4])); - assertTrue(%HasObjectElements(sources[4])); - assertTrue(%HasFastElements(sources[4]) && !%HasHoleyElements(sources[4])); - assertTrue(%HasObjectElements(sources[5])); - assertTrue(%HasFastElements(sources[5]) && %HasHoleyElements(sources[5])); - assertTrue(%HasDictionaryElements(sources[6])); - - for (const target of targets) { - for (const source of sources) { - target.set(source); - %HeapObjectVerify(target); - %HeapObjectVerify(source); - } - } - } -} - -TestTypedArraySet(); - -function TestTypedArraysWithIllegalIndices() { - var a = new Int32Array(100); - - a[-10] = 10; - assertEquals(undefined, a[-10]); - a["-10"] = 10; - assertEquals(undefined, a["-10"]); - - var s = " -10"; - a[s] = 10; - assertEquals(10, a[s]); - var s1 = " -10 "; - a[s] = 10; - assertEquals(10, a[s]); - - a["-1e2"] = 10; - assertEquals(10, a["-1e2"]); - assertEquals(undefined, a[-1e2]); - - a["-0"] = 256; - var s2 = " -0"; - a[s2] = 255; - assertEquals(undefined, a["-0"]); - assertEquals(255, a[s2]); - assertEquals(0, a[-0]); - - a[-Infinity] = 50; - assertEquals(undefined, a[-Infinity]); - - a[1.5] = 10; - assertEquals(undefined, a[1.5]); - var nan = Math.sqrt(-1); - a[nan] = 5; - assertEquals(undefined, a[nan]); - - var x = 0; - var y = -0; - assertEquals(Infinity, 1/x); - assertEquals(-Infinity, 1/y); - a[x] = 5; - a[y] = 27; - assertEquals(27, a[x]); - assertEquals(27, a[y]); -} - -TestTypedArraysWithIllegalIndices(); - -function TestTypedArraysWithIllegalIndicesStrict() { - 'use strict'; - var a = new Int32Array(100); - - a[-10] = 10; - assertEquals(undefined, a[-10]); - a["-10"] = 10; - assertEquals(undefined, a["-10"]); - - var s = " -10"; - a[s] = 10; - assertEquals(10, a[s]); - var s1 = " -10 "; - a[s] = 10; - assertEquals(10, a[s]); - - a["-1e2"] = 10; - assertEquals(10, a["-1e2"]); - assertEquals(undefined, a[-1e2]); - - a["-0"] = 256; - var s2 = " -0"; - a[s2] = 255; - assertEquals(undefined, a["-0"]); - assertEquals(255, a[s2]); - assertEquals(0, a[-0]); - - /* Chromium bug: 424619 - * a[-Infinity] = 50; - * assertEquals(undefined, a[-Infinity]); - */ - a[1.5] = 10; - assertEquals(undefined, a[1.5]); - var nan = Math.sqrt(-1); - a[nan] = 5; - assertEquals(undefined, a[nan]); - - var x = 0; - var y = -0; - assertEquals(Infinity, 1/x); - assertEquals(-Infinity, 1/y); - a[x] = 5; - a[y] = 27; - assertEquals(27, a[x]); - assertEquals(27, a[y]); -} - -TestTypedArraysWithIllegalIndicesStrict(); - -// DataView -function TestDataViewConstructor() { - var ab = new ArrayBuffer(256); - - var d1 = new DataView(ab, 1, 255); - assertTrue(ArrayBuffer.isView(d1)); - assertSame(ab, d1.buffer); - assertSame(1, d1.byteOffset); - assertSame(255, d1.byteLength); - - var d2 = new DataView(ab, 2); - assertSame(ab, d2.buffer); - assertSame(2, d2.byteOffset); - assertSame(254, d2.byteLength); - - var d3 = new DataView(ab); - assertSame(ab, d3.buffer); - assertSame(0, d3.byteOffset); - assertSame(256, d3.byteLength); - - var d3a = new DataView(ab, 1, 0); - assertSame(ab, d3a.buffer); - assertSame(1, d3a.byteOffset); - assertSame(0, d3a.byteLength); - - var d3b = new DataView(ab, 256, 0); - assertSame(ab, d3b.buffer); - assertSame(256, d3b.byteOffset); - assertSame(0, d3b.byteLength); - - var d3c = new DataView(ab, 256); - assertSame(ab, d3c.buffer); - assertSame(256, d3c.byteOffset); - assertSame(0, d3c.byteLength); - - var d4 = new DataView(ab, 1, 3.1415926); - assertSame(ab, d4.buffer); - assertSame(1, d4.byteOffset); - assertSame(3, d4.byteLength); - - - // error cases - assertThrows(function() { new DataView(ab, -1); }, RangeError); - assertThrows(function() { new DataView(); }, TypeError); - assertThrows(function() { new DataView([]); }, TypeError); - assertThrows(function() { new DataView(ab, 257); }, RangeError); - assertThrows(function() { new DataView(ab, 1, 1024); }, RangeError); -} - -TestDataViewConstructor(); - -function TestDataViewPropertyTypeChecks() { - var a = new DataView(new ArrayBuffer(10)); - function CheckProperty(name) { - var d = Object.getOwnPropertyDescriptor(DataView.prototype, name); - var o = {} - assertThrows(function() {d.get.call(o);}, TypeError); - d.get.call(a); // shouldn't throw - } - - CheckProperty("buffer"); - CheckProperty("byteOffset"); - CheckProperty("byteLength"); - - function CheckGetSetLength(name) { - assertEquals(1, DataView.prototype["get" + name].length); - assertEquals(2, DataView.prototype["set" + name].length); - } - CheckGetSetLength("Int8"); - CheckGetSetLength("Uint8"); - CheckGetSetLength("Int16"); - CheckGetSetLength("Uint16"); - CheckGetSetLength("Int32"); - CheckGetSetLength("Uint32"); - CheckGetSetLength("Float32"); - CheckGetSetLength("Float64"); -} - - -TestDataViewPropertyTypeChecks(); - - -function TestDataViewToStringTag() { - var a = new DataView(new ArrayBuffer(10)); - assertEquals("[object DataView]", Object.prototype.toString.call(a)); - var desc = Object.getOwnPropertyDescriptor( - DataView.prototype, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.enumerable); - assertFalse(desc.writable); - assertEquals("DataView", desc.value); -} - - -// General tests for properties - -// Test property attribute [[Enumerable]] -function TestEnumerable(func, obj) { - function props(x) { - var array = []; - for (var p in x) array.push(p); - return array.sort(); - } - assertArrayEquals([], props(func)); - assertArrayEquals([], props(func.prototype)); - if (obj) - assertArrayEquals([], props(obj)); -} -TestEnumerable(ArrayBuffer, new ArrayBuffer()); -for(i = 0; i < typedArrayConstructors.length; i++) { - TestEnumerable(typedArrayConstructors[i]); -} -TestEnumerable(DataView, new DataView(new ArrayBuffer())); - -// Test arbitrary properties on ArrayBuffer -function TestArbitrary(m) { - function TestProperty(map, property, value) { - map[property] = value; - assertEquals(value, map[property]); - } - for (var i = 0; i < 20; i++) { - TestProperty(m, 'key' + i, 'val' + i); - TestProperty(m, 'foo' + i, 'bar' + i); - } -} -TestArbitrary(new ArrayBuffer(256)); -for(i = 0; i < typedArrayConstructors.length; i++) { - TestArbitrary(new typedArrayConstructors[i](10)); -} -TestArbitrary(new DataView(new ArrayBuffer(256))); - - -// Test direct constructor call -assertThrows(function() { ArrayBuffer(); }, TypeError); -assertThrows(function() { DataView(new ArrayBuffer()); }, TypeError); - -function TestNonConfigurableProperties(constructor) { - var arr = new constructor([100]) - assertFalse(Object.getOwnPropertyDescriptor(arr,"0").configurable) - assertFalse(delete arr[0]) -} - -for(i = 0; i < typedArrayConstructors.length; i++) { - TestNonConfigurableProperties(typedArrayConstructors[i]); -} - -(function TestInitialization() { - for (var i = 0; i <= 128; i++) { - var arr = new Uint8Array(i); - for (var j = 0; j < i; j++) { - assertEquals(0, arr[j]); - } - } -})(); - -(function TestBufferLengthTooLong() { - try { - var buf = new ArrayBuffer(2147483648); - } catch (e) { - // The ArrayBuffer allocation fails on 32-bit archs, so no need to try to - // construct the typed array. - return; - } - assertThrows(function() { - new Int8Array(buf); - }, RangeError); -})(); - -(function TestByteLengthErrorMessage() { - try { - new Uint32Array(new ArrayBuffer(17)); - } catch (e) { - assertEquals("byte length of Uint32Array should be a multiple of 4", - e.message); - } -})(); - -// Regression test 761654 -assertThrows(function LargeSourceArray() { - let v0 = {}; - v0.length = 2 ** 32; // too large for uint32 - let a = new Int8Array(); - - a.set(v0); -}); - -function TestMapCustomSpeciesConstructor(constructor) { - const sample = new constructor([40, 42, 42]); - let result, ctorThis; - - sample.constructor = {}; - sample.constructor[Symbol.species] = function(count) { - result = arguments; - ctorThis = this; - return new constructor(count); - }; - - sample.map(function(v) { return v; }); - - assertSame(result.length, 1, "called with 1 argument"); - assertSame(result[0], 3, "[0] is the new captured length"); - - assertTrue( - ctorThis instanceof sample.constructor[Symbol.species], - "`this` value in the @@species fn is an instance of the function itself" - ); -}; - -for(i = 0; i < typedArrayConstructors.length; i++) { - TestPropertyTypeChecks(typedArrayConstructors[i]); -} diff --git a/implementation-contributed/v8/mjsunit/es6/unicode-character-ranges.js b/implementation-contributed/v8/mjsunit/es6/unicode-character-ranges.js deleted file mode 100644 index 770d5a53637..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/unicode-character-ranges.js +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function execl(expectation, regexp, subject) { - if (regexp instanceof String) regexp = new RegExp(regexp, "u"); - assertEquals(expectation, regexp.exec(subject)); -} - -function execs(expectation, regexp_source, subject) { - execl(expectation, new RegExp(regexp_source, "u"), subject); -} - -// Character ranges. -execl(["A"], /[A-D]/u, "A"); -execs(["A"], "[A-D]", "A"); -execl(["ABCD"], /[A-D]+/u, "ZABCDEF"); -execs(["ABCD"], "[A-D]+", "ZABCDEF"); - -execl(["\u{12345}"], /[\u1234-\u{12345}]/u, "\u{12345}"); -execs(["\u{12345}"], "[\u1234-\u{12345}]", "\u{12345}"); -execl(null, /[^\u1234-\u{12345}]/u, "\u{12345}"); -execs(null, "[^\u1234-\u{12345}]", "\u{12345}"); - -execl(["\u{1234}"], /[\u1234-\u{12345}]/u, "\u{1234}"); -execs(["\u{1234}"], "[\u1234-\u{12345}]", "\u{1234}"); -execl(null, /[^\u1234-\u{12345}]/u, "\u{1234}"); -execs(null, "[^\u1234-\u{12345}]", "\u{1234}"); - -execl(null, /[\u1234-\u{12345}]/u, "\u{1233}"); -execs(null, "[\u1234-\u{12345}]", "\u{1233}"); -execl(["\u{1233}"], /[^\u1234-\u{12345}]/u, "\u{1233}"); -execs(["\u{1233}"], "[^\u1234-\u{12345}]", "\u{1233}"); - -execl(["\u{12346}"], /[^\u1234-\u{12345}]/u, "\u{12346}"); -execs(["\u{12346}"], "[^\u1234-\u{12345}]", "\u{12346}"); -execl(null, /[\u1234-\u{12345}]/u, "\u{12346}"); -execs(null, "[\u1234-\u{12345}]", "\u{12346}"); - -execl(["\u{12342}"], /[\u{12340}-\u{12345}]/u, "\u{12342}"); -execs(["\u{12342}"], "[\u{12340}-\u{12345}]", "\u{12342}"); -execl(["\u{12342}"], /[\ud808\udf40-\ud808\udf45]/u, "\u{12342}"); -execs(["\u{12342}"], "[\ud808\udf40-\ud808\udf45]", "\u{12342}"); -execl(null, /[^\u{12340}-\u{12345}]/u, "\u{12342}"); -execs(null, "[^\u{12340}-\u{12345}]", "\u{12342}"); -execl(null, /[^\ud808\udf40-\ud808\udf45]/u, "\u{12342}"); -execs(null, "[^\ud808\udf40-\ud808\udf45]", "\u{12342}"); - -execl(["\u{ffff}"], /[\u{ff80}-\u{12345}]/u, "\u{ffff}"); -execs(["\u{ffff}"], "[\u{ff80}-\u{12345}]", "\u{ffff}"); -execl(["\u{ffff}"], /[\u{ff80}-\ud808\udf45]/u, "\u{ffff}"); -execs(["\u{ffff}"], "[\u{ff80}-\ud808\udf45]", "\u{ffff}"); -execl(null, /[^\u{ff80}-\u{12345}]/u, "\u{ffff}"); -execs(null, "[^\u{ff80}-\u{12345}]", "\u{ffff}"); -execl(null, /[^\u{ff80}-\ud808\udf45]/u, "\u{ffff}"); -execs(null, "[^\u{ff80}-\ud808\udf45]", "\u{ffff}"); - -// Lone surrogate -execl(["\ud800"], /[^\u{ff80}-\u{12345}]/u, "\uff99\u{d800}A"); -execs(["\udc00"], "[^\u{ff80}-\u{12345}]", "\uff99\u{dc00}A"); -execl(["\udc01"], /[\u0100-\u{10ffff}]/u, "A\udc01"); -execl(["\udc03"], /[\udc01-\udc03]/u, "\ud801\udc02\udc03"); -execl(["\ud801"], /[\ud801-\ud803]/u, "\ud802\udc01\ud801"); - -// Paired sorrogate. -execl(null, /[^\u{ff80}-\u{12345}]/u, "\u{d800}\u{dc00}"); -execs(null, "[^\u{ff80}-\u{12345}]", "\u{d800}\u{dc00}"); -execl(["\ud800\udc00"], /[\u{ff80}-\u{12345}]/u, "\u{d800}\u{dc00}"); -execs(["\ud800\udc00"], "[\u{ff80}-\u{12345}]", "\u{d800}\u{dc00}"); -execl(["foo\u{10e6d}bar"], /foo\ud803\ude6dbar/u, "foo\u{10e6d}bar"); - -// Lone surrogates -execl(["\ud801\ud801"], /\ud801+/u, "\ud801\udc01\ud801\ud801"); -execl(["\udc01\udc01"], /\udc01+/u, "\ud801\ud801\udc01\udc01\udc01"); - -execl(["\udc02\udc03A"], /\W\WA/u, "\ud801\udc01A\udc02\udc03A"); -execl(["\ud801\ud802"], /\ud801./u, "\ud801\udc01\ud801\ud802"); -execl(["\udc02\udc03A"], /[\ud800-\udfff][\ud800-\udfff]A/u, - "\ud801\udc01A\udc02\udc03A"); - -// Character classes -execl(null, /\w/u, "\ud801\udc01"); -execl(["\ud801"], /[^\w]/, "\ud801\udc01"); -execl(["\ud801\udc01"], /[^\w]/u, "\ud801\udc01"); -execl(["\ud801"], /\W/, "\ud801\udc01"); -execl(["\ud801\udc01"], /\W/u, "\ud801\udc01"); - -execl(["\ud800X"], /.X/u, "\ud800XaX"); -execl(["aX"], /.(? new RegExp("[\\ud800\udc03-\ud900\\udc01\]+", "u")); -assertThrows(() => new RegExp("[\\ud800\udc03-\ud900\\udc01\]+", "u")); -assertNull(new RegExp("\\ud800\udc00+", "u").exec("\u{10000}\u{10000}")); -assertNull(new RegExp("\ud800\\udc00+", "u").exec("\u{10000}\u{10000}")); - -assertNull(new RegExp("[\\ud800\udc00]", "u").exec("\u{10000}")); -assertNull(new RegExp("[\\{ud800}\udc00]", "u").exec("\u{10000}")); -assertNull(new RegExp("[\ud800\\udc00]", "u").exec("\u{10000}")); -assertNull(new RegExp("[\ud800\\{udc00}]", "u").exec("\u{10000}")); - -assertNull(/\u{d800}\u{dc00}+/u.exec("\ud800\udc00\udc00")); -assertNull(/\ud800\u{dc00}+/u.exec("\ud800\udc00\udc00")); -assertNull(/\u{d800}\udc00+/u.exec("\ud800\udc00\udc00")); - -// Non-simple case-insensitive mappings requiring special treatment. -// https://bugs.chromium.org/p/v8/issues/detail?id=13377 -assertFalse(/[\u0390]/ui.test("\u1fd3")); -assertFalse(/[\u1fd3]/ui.test("\u0390")); -assertFalse(/[\u03b0]/ui.test("\u1fe3")); -assertFalse(/[\u1fe3]/ui.test("\u03b0")); -assertFalse(/[\ufb05]/ui.test("\ufb06")); -assertFalse(/[\ufb06]/ui.test("\ufb05")); diff --git a/implementation-contributed/v8/mjsunit/es6/unicode-escapes.js b/implementation-contributed/v8/mjsunit/es6/unicode-escapes.js deleted file mode 100644 index be269366cf1..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/unicode-escapes.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// ES6 extends the \uxxxx escape and also allows \u{xxxxx}. - -// Unicode escapes in variable names. - -(function TestVariableNames1() { - var foobar = 1; - assertEquals(foob\u0061r, 1); - assertEquals(foob\u{0061}r, 1); - assertEquals(foob\u{61}r, 1); - assertEquals(foob\u{0000000061}r, 1); -})(); - -(function TestVariableNames2() { - var foobar = 1; - assertEquals(\u0066oobar, 1); - assertEquals(\u{0066}oobar, 1); - assertEquals(\u{66}oobar, 1); - assertEquals(\u{0000000066}oobar, 1); -})(); - -// Unicode escapes in strings. - -(function TestStrings() { - var s1 = "foob\u0061r"; - assertEquals(s1, "foobar"); - var s2 = "foob\u{0061}r"; - assertEquals(s2, "foobar"); - var s3 = "foob\u{61}r"; - assertEquals(s3, "foobar"); - var s4 = "foob\u{0000000061}r"; - assertEquals(s4, "foobar"); -})(); - - -(function TestSurrogates() { - // U+10E6D corresponds to the surrogate pair [U+D803, U+DE6D]. - var s1 = "foo\u{10e6d}"; - var s2 = "foo\u{d803}\u{de6d}"; - assertEquals(s1, s2); -})(); diff --git a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-backrefs.js b/implementation-contributed/v8/mjsunit/es6/unicode-regexp-backrefs.js deleted file mode 100644 index 0a0b951bd95..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-backrefs.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Back reference does not end in the middle of a surrogate pair. -function replace(string) { - return string.replace(/L/g, "\ud800") - .replace(/l/g, "\ud801") - .replace(/T/g, "\udc00") - .replace(/\./g, "[^]"); -} - -function test(expectation, regexp_source, subject) { - if (expectation !== null) expectation = expectation.map(replace); - subject = replace(subject); - regexp_source = replace(regexp_source); - assertEquals(expectation, new RegExp(regexp_source, "u").exec(subject)); -} - -// Back reference does not end in the middle of a surrogate pair. -test(null, "(L)\\1", "LLT"); -test(["LLTLl", "L", "l"], "(L).*\\1(.)", "LLTLl"); -test(null, "(aL).*\\1", "aLaLT"); -test(["aLaLTaLl", "aL", "l"], "(aL).*\\1(.)", "aLaLTaLl"); - -var s = "TabcLxLTabcLxTabcLTyTabcLz"; -test([s, "TabcL", "z"], "([^x]+).*\\1(.)", s); - -// Back reference does not start in the middle of a surrogate pair. -test(["TLTabTc", "T", "c"], "(T).*\\1(.)", "TLTabTc"); - -// Lookbehinds. -test(null, "(?<=\\1(T)x)", "LTTx"); -test(["", "b", "T"], "(?<=(.)\\2.*(T)x)", "bTaLTTx"); -test(null, "(?<=\\1.*(L)x)", "LTLx"); -test(["", "b", "L"], "(?<=(.)\\2.*(L)x)", "bLaLTLx"); - - -test(null, "([^x]+)x*\\1", "LxLT"); -test(null, "([^x]+)x*\\1", "TxLT"); -test(null, "([^x]+)x*\\1", "LTxL"); -test(null, "([^x]+)x*\\1", "LTxT"); -test(null, "([^x]+)x*\\1", "xLxLT"); -test(null, "([^x]+)x*\\1", "xTxLT"); -test(null, "([^x]+)x*\\1", "xLTxL"); -test(null, "([^x]+)x*\\1", "xLTxT"); -test(null, "([^x]+)x*\\1", "xxxLxxLTxx"); -test(null, "([^x]+)x*\\1", "xxxTxxLTxx"); -test(null, "([^x]+)x*\\1", "xxxLTxxLxx"); -test(null, "([^x]+)x*\\1", "xxxLTxxTxx"); -test(["LTTxxLTT", "LTT"], "([^x]+)x*\\1", "xxxLTTxxLTTxx"); diff --git a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-ignore-case-noi18n.js b/implementation-contributed/v8/mjsunit/es6/unicode-regexp-ignore-case-noi18n.js deleted file mode 100644 index a99894234ad..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-ignore-case-noi18n.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Non-unicode use toUpperCase mappings. -assertFalse(/[\u00e5]/i.test("\u212b")); -assertFalse(/[\u212b]/i.test("\u00e5\u1234")); -assertFalse(/[\u212b]/i.test("\u00e5")); - -assertTrue("\u212b".toLowerCase() == "\u00e5"); -assertTrue("\u00c5".toLowerCase() == "\u00e5"); -assertTrue("\u00e5".toUpperCase() == "\u00c5"); - -// Unicode uses case folding mappings. -assertFalse(/\u00e5/ui.test("\u212b")); -assertTrue(/\u00e5/ui.test("\u00c5")); -assertTrue(/\u00e5/ui.test("\u00e5")); -assertFalse(/\u00e5/ui.test("\u212b")); -assertTrue(/\u00c5/ui.test("\u00e5")); -assertFalse(/\u00c5/ui.test("\u212b")); -assertTrue(/\u00c5/ui.test("\u00c5")); -assertFalse(/\u212b/ui.test("\u00c5")); -assertFalse(/\u212b/ui.test("\u00e5")); -assertTrue(/\u212b/ui.test("\u212b")); - -// Non-BMP. -assertFalse(/\u{10400}/i.test("\u{10428}")); -assertFalse(/\u{10400}/ui.test("\u{10428}")); -assertFalse(/\ud801\udc00/ui.test("\u{10428}")); -assertFalse(/[\u{10428}]/ui.test("\u{10400}")); -assertFalse(/[\ud801\udc28]/ui.test("\u{10400}")); -assertEquals(["\uff21\u{10400}"], - /[\uff40-\u{10428}]+/ui.exec("\uff21\u{10400}abc")); -assertEquals(["abc"], /[^\uff40-\u{10428}]+/ui.exec("\uff21\u{10400}abc\uff23")); -assertEquals(["\uff53\u24bb"], - /[\u24d5-\uff33]+/ui.exec("\uff54\uff53\u24bb\u24ba")); - -// Full mappings are ignored. -assertFalse(/\u00df/ui.test("SS")); -assertFalse(/\u1f8d/ui.test("\u1f05\u03b9")); - -// Simple mappings. -assertFalse(/\u1f8d/ui.test("\u1f85")); - -// Common mappings. -assertTrue(/\u1f6b/ui.test("\u1f63")); - -// Back references. -assertNull(/(.)\1\1/ui.exec("\u00e5\u212b\u00c5")); -assertNull(/(.)\1/ui.exec("\u{118aa}\u{118ca}")); - - -// Non-Latin1 maps to Latin1. -assertNull(/^\u017F/ui.exec("s")); -assertNull(/^\u017F/ui.exec("s\u1234")); -assertNull(/^a[\u017F]/ui.exec("as")); -assertNull(/^a[\u017F]/ui.exec("as\u1234")); diff --git a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-ignore-case.js b/implementation-contributed/v8/mjsunit/es6/unicode-regexp-ignore-case.js deleted file mode 100644 index dd02ca9d32d..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-ignore-case.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Non-unicode use toUpperCase mappings. -assertFalse(/[\u00e5]/i.test("\u212b")); -assertFalse(/[\u212b]/i.test("\u00e5\u1234")); -assertFalse(/[\u212b]/i.test("\u00e5")); - -assertTrue("\u212b".toLowerCase() == "\u00e5"); -assertTrue("\u00c5".toLowerCase() == "\u00e5"); -assertTrue("\u00e5".toUpperCase() == "\u00c5"); - -// Unicode uses case folding mappings. -assertTrue(/\u00e5/ui.test("\u212b")); -assertTrue(/\u00e5/ui.test("\u00c5")); -assertTrue(/\u00e5/ui.test("\u00e5")); -assertTrue(/\u00e5/ui.test("\u212b")); -assertTrue(/\u00c5/ui.test("\u00e5")); -assertTrue(/\u00c5/ui.test("\u212b")); -assertTrue(/\u00c5/ui.test("\u00c5")); -assertTrue(/\u212b/ui.test("\u00c5")); -assertTrue(/\u212b/ui.test("\u00e5")); -assertTrue(/\u212b/ui.test("\u212b")); - -// Non-BMP. -assertFalse(/\u{10400}/i.test("\u{10428}")); -assertTrue(/\u{10400}/ui.test("\u{10428}")); -assertTrue(/\ud801\udc00/ui.test("\u{10428}")); -assertTrue(/[\u{10428}]/ui.test("\u{10400}")); -assertTrue(/[\ud801\udc28]/ui.test("\u{10400}")); -assertEquals(["\uff21\u{10400}"], - /[\uff40-\u{10428}]+/ui.exec("\uff21\u{10400}abc")); -assertEquals(["abc"], /[^\uff40-\u{10428}]+/ui.exec("\uff21\u{10400}abc\uff23")); -assertEquals(["\uff53\u24bb"], - /[\u24d5-\uff33]+/ui.exec("\uff54\uff53\u24bb\u24ba")); - -// Full mappings are ignored. -assertFalse(/\u00df/ui.test("SS")); -assertFalse(/\u1f8d/ui.test("\u1f05\u03b9")); - -// Simple mappings work. -assertTrue(/\u1f8d/ui.test("\u1f85")); - -// Common mappings work. -assertTrue(/\u1f6b/ui.test("\u1f63")); - -// Back references. -assertEquals(["\u00e5\u212b\u00c5", "\u00e5"], - /(.)\1\1/ui.exec("\u00e5\u212b\u00c5")); -assertEquals(["\u{118aa}\u{118ca}", "\u{118aa}"], - /(.)\1/ui.exec("\u{118aa}\u{118ca}")); - -// Misc. -assertTrue(/\u00e5\u00e5\u00e5/ui.test("\u212b\u00e5\u00c5")); -assertTrue(/AB\u{10400}/ui.test("ab\u{10428}")); - -// Non-Latin1 maps to Latin1. -assertEquals(["s"], /^\u017F/ui.exec("s")); -assertEquals(["s"], /^\u017F/ui.exec("s\u1234")); -assertEquals(["as"], /^a[\u017F]/ui.exec("as")); -assertEquals(["as"], /^a[\u017F]/ui.exec("as\u1234")); diff --git a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-last-index.js b/implementation-contributed/v8/mjsunit/es6/unicode-regexp-last-index.js deleted file mode 100644 index 714d3d1e54c..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-last-index.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var r = /./ug; -assertEquals(["\ud800\udc00"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(2, r.lastIndex); -r.lastIndex = 1; -assertEquals(["\ud800\udc00"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(2, r.lastIndex); -assertEquals(["\ud801\udc01"], r.exec("\ud800\udc00\ud801\udc01")); -r.lastIndex = 3; -assertEquals(["\ud801\udc01"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(4, r.lastIndex); -r.lastIndex = 4; -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(0, r.lastIndex); -r.lastIndex = 5; -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(0, r.lastIndex); - -r.lastIndex = 3; -assertEquals(["\ud802"], r.exec("\ud800\udc00\ud801\ud802")); -r.lastIndex = 4; -assertNull(r.exec("\ud800\udc00\ud801\ud802")); - -r = /./g; -assertEquals(["\ud800"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(1, r.lastIndex); -assertEquals(["\udc00"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(2, r.lastIndex); -assertEquals(["\ud801"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(3, r.lastIndex); -assertEquals(["\udc01"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(4, r.lastIndex); -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(0, r.lastIndex); -r.lastIndex = 1; -assertEquals(["\udc00"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(2, r.lastIndex); - -// ------------------------ - -r = /^./ug; -assertEquals(["\ud800\udc00"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(2, r.lastIndex); -r.lastIndex = 1; -assertEquals(["\ud800\udc00"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(2, r.lastIndex); -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(0, r.lastIndex); -r.lastIndex = 3; -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(0, r.lastIndex); -r.lastIndex = 4; -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(0, r.lastIndex); -r.lastIndex = 5; -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(0, r.lastIndex); - -r = /^./g; -assertEquals(["\ud800"], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(1, r.lastIndex); -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(0, r.lastIndex); -r.lastIndex = 3; -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(0, r.lastIndex); - -//------------------------ - -r = /(?:(^.)|.)/ug; -assertEquals(["\ud800\udc00", "\ud800\udc00"], - r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(2, r.lastIndex); -r.lastIndex = 1; -assertEquals(["\ud800\udc00", "\ud800\udc00"], - r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(2, r.lastIndex); -assertEquals(["\ud801\udc01", undefined], r.exec("\ud800\udc00\ud801\udc01")); -r.lastIndex = 3; -assertEquals(["\ud801\udc01", undefined], r.exec("\ud800\udc00\ud801\udc01")); -r.lastIndex = 4; -assertNull(r.exec("\ud800\udc00\ud801\udc01")); -r.lastIndex = 5; -assertNull(r.exec("\ud800\udc00\ud801\udc01")); - -r.lastIndex = 3; -assertEquals(["\ud802", undefined], r.exec("\ud800\udc00\ud801\ud802")); -r.lastIndex = 4; -assertNull(r.exec("\ud800\udc00\ud801\ud802")); - -r = /(?:(^.)|.)/g; -assertEquals(["\ud800", "\ud800"], - r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(1, r.lastIndex); -assertEquals(["\udc00", undefined], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(2, r.lastIndex); -r.lastIndex = 3; -assertEquals(["\udc01", undefined], r.exec("\ud800\udc00\ud801\udc01")); -assertEquals(4, r.lastIndex); diff --git a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-restricted-syntax.js b/implementation-contributed/v8/mjsunit/es6/unicode-regexp-restricted-syntax.js deleted file mode 100644 index 1cc46df1b6e..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-restricted-syntax.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// test262/data/test/language/literals/regexp/u-dec-esc -assertThrows("/\\1/u", SyntaxError); -// test262/language/literals/regexp/u-invalid-char-range-a -assertThrows("/[\\w-a]/u", SyntaxError); -// test262/language/literals/regexp/u-invalid-char-range-b -assertThrows("/[a-\\w]/u", SyntaxError); -// test262/language/literals/regexp/u-invalid-char-esc -assertThrows("/\\c/u", SyntaxError); -assertThrows("/\\c0/u", SyntaxError); -// test262/built-ins/RegExp/unicode_restricted_quantifiable_assertion -assertThrows("/(?=.)*/u", SyntaxError); -assertThrows("/(?=.){1,2}/u", SyntaxError); -// test262/built-ins/RegExp/unicode_restricted_octal_escape -assertThrows("/[\\1]/u", SyntaxError); -assertThrows("/\\00/u", SyntaxError); -assertThrows("/\\09/u", SyntaxError); -// test262/built-ins/RegExp/unicode_restricted_identity_escape_alpha -assertThrows("/[\\c]/u", SyntaxError); -// test262/built-ins/RegExp/unicode_restricted_identity_escape_c -assertThrows("/[\\c0]/u", SyntaxError); -// test262/built-ins/RegExp/unicode_restricted_incomple_quantifier -assertThrows("/a{/u", SyntaxError); -assertThrows("/a{1,/u", SyntaxError); -assertThrows("/{/u", SyntaxError); -assertThrows("/}/u", SyntaxError); -// test262/data/test/built-ins/RegExp/unicode_restricted_brackets -assertThrows("/]/u", SyntaxError); -// test262/built-ins/RegExp/unicode_identity_escape -/\//u; - -// escaped \0 is allowed inside a character class. -assertEquals(["\0"], /[\0]/u.exec("\0")); -// unless it is followed by another digit. -assertThrows("/[\\00]/u", SyntaxError); -assertThrows("/[\\01]/u", SyntaxError); -assertThrows("/[\\09]/u", SyntaxError); -assertEquals(["\u{0}1\u{0}a\u{0}"], /[1\0a]+/u.exec("b\u{0}1\u{0}a\u{0}2")); -// escaped \- is allowed inside a character class. -assertEquals(["-"], /[a\-z]/u.exec("12-34")); diff --git a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-unanchored-advance.js b/implementation-contributed/v8/mjsunit/es6/unicode-regexp-unanchored-advance.js deleted file mode 100644 index c471122baf6..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-unanchored-advance.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = "a".repeat(1E7) + "\u1234"; -assertEquals(["\u1234", "\u1234"], /(\u1234)/u.exec(s)); diff --git a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-zero-length.js b/implementation-contributed/v8/mjsunit/es6/unicode-regexp-zero-length.js deleted file mode 100644 index 42bb2d71dc3..00000000000 --- a/implementation-contributed/v8/mjsunit/es6/unicode-regexp-zero-length.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var L = "\ud800"; -var T = "\udc00"; -var x = "x"; - -var r = /()/g; // Global, but not unicode. -// Zero-length matches do not advance lastIndex. -assertEquals(["", ""], r.exec(L + T + L + T)); -assertEquals(0, r.lastIndex); -r.lastIndex = 1; -assertEquals(["", ""], r.exec(L + T + L + T)); -assertEquals(1, r.lastIndex); - -var u = /()/ug; // Global and unicode. -// Zero-length matches do not advance lastIndex. -assertEquals(["", ""], u.exec(L + T + L + T)); -assertEquals(0, u.lastIndex); -u.lastIndex = 1; -assertEquals(["", ""], u.exec(L + T + L + T)); -assertEquals(0, u.lastIndex); - -// However, with repeating matches, lastIndex does not matter. -// We do advance from match to match. -r.lastIndex = 2; -assertEquals(x + L + x + T + x + L + x + T + x, - (L + T + L + T).replace(r, "x")); - -// With unicode flag, we advance code point by code point. -u.lastIndex = 3; -assertEquals(x + L + T + x + L + T + x, - (L + T + L + T).replace(u, "x")); - -// Test that exhausting the global match cache is fine. -assertEquals((x + L + T).repeat(1000) + x, - (L + T).repeat(1000).replace(u, "x")); - -// Same thing for RegExp.prototype.match. -r.lastIndex = 1; -assertEquals(["","","","",""], (L + T + L + T).match(r)); -r.lastIndex = 2; -assertEquals(["","","","",""], (L + T + L + T).match(r)); - -u.lastIndex = 1; -assertEquals(["","",""], (L + T + L + T).match(u)); -u.lastIndex = 2; -assertEquals(["","",""], (L + T + L + T).match(u)); - -var expected = []; -for (var i = 0; i <= 1000; i++) expected.push(""); -assertEquals(expected, (L + T).repeat(1000).match(u)); - -// Also test RegExp.prototype.@@split. -assertEquals(["\u{12345}"], "\u{12345}".split(/(?:)/u)); diff --git a/implementation-contributed/v8/mjsunit/es7/array-includes-receiver.js b/implementation-contributed/v8/mjsunit/es7/array-includes-receiver.js deleted file mode 100644 index 91916aad54e..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/array-includes-receiver.js +++ /dev/null @@ -1,634 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Ensure `Array.prototype.includes` functions correctly for numerous elements -// kinds, and various exotic receiver types, - -// TODO(caitp): update kIterCount to a high enough number to trigger inlining, -// once inlining this builtin is supported -var kIterCount = 1; -var kTests = { - Array: { - PACKED_ELEMENTS() { - var r = /foo/; - var s = new String("bar"); - var p = new Proxy({}, {}); - var o = {}; - - var array = [r, s, p]; - assertTrue(%HasObjectElements(array)); - assertFalse(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(array.includes(p)); - assertFalse(array.includes(o)); - } - }, - - HOLEY_ELEMENTS() { - var r = /foo/; - var p = new Proxy({}, {}); - var o = {}; - - var array = [r, , p]; - assertTrue(%HasObjectElements(array)); - assertTrue(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(array.includes(p)); - assertFalse(array.includes(o)); - } - }, - - PACKED_SMI_ELEMENTS() { - var array = [0, 88, 9999, 1, -5, 7]; - assertTrue(%HasSmiElements(array)); - assertFalse(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(array.includes(9999)); - assertTrue(array.includes(-5)); - assertFalse(array.includes(-5.00001)); - assertFalse(array.includes(undefined)); - assertFalse(array.includes(NaN)); - } - }, - - HOLEY_SMI_ELEMENTS() { - var array = [49, , , 72, , , 67, -48]; - assertTrue(%HasSmiElements(array)); - assertTrue(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(array.includes(72)); - assertTrue(array.includes(-48)); - assertFalse(array.includes(72, 4)); - assertTrue(array.includes(undefined)); - assertFalse(array.includes(undefined, -2)); - assertFalse(array.includes(NaN)); - } - }, - - PACKED_DOUBLE_ELEMENTS() { - var array = [7.00000001, -13000.89412, 73451.4124, - 5824.48, 6.0000495, 48.3488, 44.0, 76.35, NaN, 78.4]; - assertTrue(%HasDoubleElements(array)); - assertFalse(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(array.includes(7.00000001)); - assertFalse(array.includes(7.00000001, 2)); - assertTrue(array.includes(NaN)); - assertFalse(array.includes(NaN, -1)); - assertTrue(array.includes(-13000.89412)); - assertFalse(array.includes(-13000.89412, -2)); - assertFalse(array.includes(undefined)); - } - }, - - HOLEY_DOUBLE_ELEMENTS() { - var array = [7.00000001, -13000.89412, , - 5824.48, , 48.3488, , NaN, , 78.4]; - assertTrue(%HasDoubleElements(array)); - assertTrue(%HasHoleyElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(array.includes(7.00000001)); - assertFalse(array.includes(7.00000001, 2)); - assertTrue(array.includes(NaN)); - assertFalse(array.includes(NaN, -2)); - assertTrue(array.includes(-13000.89412)); - assertFalse(array.includes(-13000.89412, -2)); - assertTrue(array.includes(undefined, -2)); - assertFalse(array.includes(undefined, -1)); - } - }, - - DICTIONARY_ELEMENTS() { - var array = []; - Object.defineProperty(array, 4, { get() { return NaN; } }); - Object.defineProperty(array, 7, { value: Function }); - - assertTrue(%HasDictionaryElements(array)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(array.includes(NaN)); - assertFalse(array.includes(NaN, -3)); - assertTrue(array.includes(Function)); - assertTrue(array.includes(undefined)); - assertFalse(array.includes(undefined, 7)); - } - }, - }, - - Object: { - PACKED_ELEMENTS() { - var r = /foo/; - var s = new String("bar"); - var p = new Proxy({}, {}); - var o = {}; - - var object = { 0: r, 1: s, 2: p, length: 3 }; - assertTrue(%HasObjectElements(object)); - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertFalse(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(Array.prototype.includes.call(object, p)); - assertFalse(Array.prototype.includes.call(object, o)); - } - }, - - HOLEY_ELEMENTS() { - var r = /foo/; - var p = new Proxy({}, {}); - var o = {}; - - var object = { 0: r, 2: p, length: 3 }; - assertTrue(%HasObjectElements(object)); - assertTrue(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(Array.prototype.includes.call(object, p)); - assertFalse(Array.prototype.includes.call(object, o)); - } - }, - - PACKED_SMI_ELEMENTS() { - var object = { 0: 0, 1: 88, 2: 9999, 3: 1, 4: -5, 5: 7, length: 6 }; - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertTrue(%HasSmiElements(object)); - // assertFalse(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(Array.prototype.includes.call(object, 9999)); - assertTrue(Array.prototype.includes.call(object, -5)); - assertFalse(Array.prototype.includes.call(object, -5.00001)); - assertFalse(Array.prototype.includes.call(object, undefined)); - assertFalse(Array.prototype.includes.call(object, NaN)); - } - }, - - HOLEY_SMI_ELEMENTS() { - var object = { 0: 49, 3: 72, 6: 67, 7: -48, length: 8 }; - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertTrue(%HasSmiElements(object)); - // assertTrue(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(Array.prototype.includes.call(object, 72)); - assertTrue(Array.prototype.includes.call(object, -48)); - assertFalse(Array.prototype.includes.call(object, 72, 4)); - assertTrue(Array.prototype.includes.call(object, undefined)); - assertFalse(Array.prototype.includes.call(object, undefined, -2)); - assertFalse(Array.prototype.includes.call(object, NaN)); - } - }, - - PACKED_DOUBLE_ELEMENTS() { - var object = { 0: 7.00000001, 1: -13000.89412, 2: 73451.4124, - 3: 5824.48, 4: 6.0000495, 5: 48.3488, 6: 44.0, 7: 76.35, - 8: NaN, 9: 78.4, length: 10 }; - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertTrue(%HasDoubleElements(object)); - // assertFalse(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(Array.prototype.includes.call(object, 7.00000001)); - assertFalse(Array.prototype.includes.call(object, 7.00000001, 2)); - assertTrue(Array.prototype.includes.call(object, NaN)); - assertFalse(Array.prototype.includes.call(object, NaN, -1)); - assertTrue(Array.prototype.includes.call(object, -13000.89412)); - assertFalse(Array.prototype.includes.call(object, -13000.89412, -2)); - assertFalse(Array.prototype.includes.call(object, undefined)); - } - }, - - HOLEY_DOUBLE_ELEMENTS() { - var object = { 0: 7.00000001, 1: -13000.89412, 3: 5824.48, 5: 48.3488, - 7: NaN, 9: 78.4, length: 10 }; - // TODO(caitp): JSObjects always seem to start with HOLEY_ELEMENTS - // assertTrue(%HasDoubleElements(object)); - // assertTrue(%HasHoleyElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(Array.prototype.includes.call(object, 7.00000001)); - assertFalse(Array.prototype.includes.call(object, 7.00000001, 2)); - assertTrue(Array.prototype.includes.call(object, NaN)); - assertFalse(Array.prototype.includes.call(object, NaN, -2)); - assertTrue(Array.prototype.includes.call(object, -13000.89412)); - assertFalse(Array.prototype.includes.call(object, -13000.89412, -2)); - assertTrue(Array.prototype.includes.call(object, undefined, -2)); - assertFalse(Array.prototype.includes.call(object, undefined, -1)); - } - }, - - DICTIONARY_ELEMENTS() { - var object = { length: 8 }; - Object.defineProperty(object, 4, { get() { return NaN; } }); - Object.defineProperty(object, 7, { value: Function }); - - assertTrue(%HasDictionaryElements(object)); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(Array.prototype.includes.call(object, NaN)); - assertFalse(Array.prototype.includes.call(object, NaN, -3)); - assertTrue(Array.prototype.includes.call(object, Function)); - assertTrue(Array.prototype.includes.call(object, undefined)); - assertFalse(Array.prototype.includes.call(object, undefined, 7)); - } - - (function prototypeModifiedDuringAccessor() { - function O() { - return { - __proto__: {}, - get 0() { - this.__proto__.__proto__ = { - get 1() { - this[2] = "c"; - return "b"; - } - }; - return "a"; - }, - length: 3 - }; - } - - // Switch to slow path when first accessor modifies the prototype - assertTrue(Array.prototype.includes.call(O(), "a")); - assertTrue(Array.prototype.includes.call(O(), "b")); - assertTrue(Array.prototype.includes.call(O(), "c")); - - // Avoid switching to slow path due to avoiding the accessor - assertFalse(Array.prototype.includes.call(O(), "c", 2)); - assertFalse(Array.prototype.includes.call(O(), "b", 1)); - assertTrue(Array.prototype.includes.call(O(), undefined, 1)); - }); - }, - }, - - String: { - FAST_STRING_ELEMENTS() { - for (var i = 0; i < kIterCount; ++i) { - assertTrue(Array.prototype.includes.call("froyo", "y")); - assertFalse(Array.prototype.includes.call("froyo", "y", -1)); - assertTrue(Array.prototype.includes.call("froyo", "y", -2)); - assertFalse(Array.prototype.includes.call("froyo", NaN)); - assertFalse(Array.prototype.includes.call("froyo", undefined)); - } - }, - - SLOW_STRING_ELEMENTS() { - var string = new String("froyo"); - - // Never accessible from A.p.includes as 'length' is not configurable - Object.defineProperty(string, 34, { value: NaN }); - Object.defineProperty(string, 12, { get() { return "nope" } }); - - for (var i = 0; i < kIterCount; ++i) { - assertTrue(Array.prototype.includes.call("froyo", "y")); - assertFalse(Array.prototype.includes.call("froyo", "y", -1)); - assertTrue(Array.prototype.includes.call("froyo", "y", -2)); - assertFalse(Array.prototype.includes.call(string, NaN)); - assertFalse(Array.prototype.includes.call(string, undefined)); - assertFalse(Array.prototype.includes.call(string, "nope")); - } - }, - }, - - Arguments: { - FAST_SLOPPY_ARGUMENTS_ELEMENTS() { - var args = (function(a, b) { return arguments; })("foo", NaN, "bar"); - assertTrue(%HasSloppyArgumentsElements(args)); - - for (var i = 0; i < kIterCount; ++i) { - assertFalse(Array.prototype.includes.call(args, undefined)); - assertTrue(Array.prototype.includes.call(args, NaN)); - assertFalse(Array.prototype.includes.call(args, NaN, -1)); - assertTrue(Array.prototype.includes.call(args, "bar", -1)); - } - }, - - SLOW_SLOPPY_ARGUMENTS_ELEMENTS() { - var args = (function(a, a) { return arguments; })("foo", NaN, "bar"); - Object.defineProperty(args, 3, { get() { return "silver"; } }); - Object.defineProperty(args, "length", { value: 4 }); - assertTrue(%HasSloppyArgumentsElements(args)); - - for (var i = 0; i < kIterCount; ++i) { - assertFalse(Array.prototype.includes.call(args, undefined)); - assertTrue(Array.prototype.includes.call(args, NaN)); - assertFalse(Array.prototype.includes.call(args, NaN, -2)); - assertTrue(Array.prototype.includes.call(args, "bar", -2)); - assertTrue(Array.prototype.includes.call(args, "silver", -1)); - } - } - }, - - TypedArray: { - Int8Array() { - var array = new Int8Array([-129, 128, - NaN /* 0 */, +0 /* 0 */, -0 /* 0 */, - +Infinity /* 0 */, -Infinity /* 0 */, - 255 /* -1 */, 127 /* 127 */, -255 /* 1 */]); - assertFalse(Array.prototype.includes.call(array, -129)); - assertFalse(Array.prototype.includes.call(array, 128)); - - assertTrue(Array.prototype.includes.call(array, 0, 2)); - assertTrue(Array.prototype.includes.call(array, 0, 3)); - assertTrue(Array.prototype.includes.call(array, 0, 4)); - assertTrue(Array.prototype.includes.call(array, 0, 5)); - assertTrue(Array.prototype.includes.call(array, 0, 6)); - assertFalse(Array.prototype.includes.call(array, 0, 7)); - - assertTrue(Array.prototype.includes.call(array, -1, 7)); - assertFalse(Array.prototype.includes.call(array, -1, 8)); - - assertTrue(Array.prototype.includes.call(array, 127, 8)); - assertFalse(Array.prototype.includes.call(array, 127, 9)); - - assertTrue(Array.prototype.includes.call(array, 1, 9)); - }, - - Detached_Int8Array() { - var array = new Int8Array(10); - %ArrayBufferDetach(array.buffer); - assertFalse(Array.prototype.includes.call(array, 0)); - assertFalse(Array.prototype.includes.call(array, 0, 10)); - }, - - Uint8Array() { - var array = new Uint8Array([-1, 256, - NaN /* 0 */, +0 /* 0 */, -0 /* 0 */, - +Infinity /* 0 */, -Infinity /* 0 */, - 255 /* 255 */, 257 /* 1 */, -128 /* 128 */, - -2 /* 254 */]); - assertFalse(Array.prototype.includes.call(array, -1)); - assertFalse(Array.prototype.includes.call(array, 256)); - - assertTrue(Array.prototype.includes.call(array, 0, 2)); - assertTrue(Array.prototype.includes.call(array, 0, 3)); - assertTrue(Array.prototype.includes.call(array, 0, 4)); - assertTrue(Array.prototype.includes.call(array, 0, 5)); - assertTrue(Array.prototype.includes.call(array, 0, 6)); - assertFalse(Array.prototype.includes.call(array, 0, 7)); - - assertTrue(Array.prototype.includes.call(array, 255, 7)); - assertFalse(Array.prototype.includes.call(array, 255, 8)); - - assertTrue(Array.prototype.includes.call(array, 1, 8)); - assertFalse(Array.prototype.includes.call(array, 1, 9)); - - assertTrue(Array.prototype.includes.call(array, 128, 9)); - assertFalse(Array.prototype.includes.call(array, 128, 10)); - - assertTrue(Array.prototype.includes.call(array, 254, 10)); - }, - - Detached_Uint8Array() { - var array = new Uint8Array(10); - %ArrayBufferDetach(array.buffer); - assertFalse(Array.prototype.includes.call(array, 0)); - assertFalse(Array.prototype.includes.call(array, 0, 10)); - }, - - Uint8ClampedArray() { - var array = new Uint8ClampedArray([-1 /* 0 */, NaN /* 0 */, 256 /* 255 */, - 127.6 /* 128 */, 127.4 /* 127 */, - 121.5 /* 122 */, 124.5 /* 124 */]); - assertFalse(Array.prototype.includes.call(array, -1)); - assertFalse(Array.prototype.includes.call(array, 256)); - - assertTrue(Array.prototype.includes.call(array, 0)); - assertTrue(Array.prototype.includes.call(array, 0, 1)); - assertTrue(Array.prototype.includes.call(array, 255, 2)); - - assertTrue(Array.prototype.includes.call(array, 128, 3)); - assertFalse(Array.prototype.includes.call(array, 128, 4)); - - assertTrue(Array.prototype.includes.call(array, 127, 4)); - assertFalse(Array.prototype.includes.call(array, 127, 5)); - - assertTrue(Array.prototype.includes.call(array, 122, 5)); - assertFalse(Array.prototype.includes.call(array, 122, 6)); - - assertTrue(Array.prototype.includes.call(array, 124, 6)); - }, - - Detached_Uint8ClampedArray() { - var array = new Uint8ClampedArray(10); - %ArrayBufferDetach(array.buffer); - assertFalse(Array.prototype.includes.call(array, 0)); - assertFalse(Array.prototype.includes.call(array, 0, 10)); - }, - - Int16Array() { - var array = new Int16Array([-32769, 32768, - NaN /* 0 */, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFF /* -1 */, 30000 /* 30000 */, - 300000 /* -27680 */]); - assertFalse(Array.prototype.includes.call(array, -32769)); - assertFalse(Array.prototype.includes.call(array, 32768)); - - assertTrue(Array.prototype.includes.call(array, 0, 2)); - assertTrue(Array.prototype.includes.call(array, 0, 3)); - assertTrue(Array.prototype.includes.call(array, 0, 4)); - assertTrue(Array.prototype.includes.call(array, 0, 5)); - assertTrue(Array.prototype.includes.call(array, 0, 6)); - assertFalse(Array.prototype.includes.call(array, 0, 7)); - - assertTrue(Array.prototype.includes.call(array, -1, 7)); - assertFalse(Array.prototype.includes.call(array, -1, 8)); - - assertTrue(Array.prototype.includes.call(array, 30000, 8)); - assertFalse(Array.prototype.includes.call(array, 30000, 9)); - - assertTrue(Array.prototype.includes.call(array, -27680, 9)); - }, - - Detached_Int16Array() { - var array = new Int16Array(10); - %ArrayBufferDetach(array.buffer); - assertFalse(Array.prototype.includes.call(array, 0)); - assertFalse(Array.prototype.includes.call(array, 0, 10)); - }, - - Uint16Array() { - var array = new Uint16Array([-1, 65536, - NaN /* 0 */, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFF /* 65535 */, 300000 /* 37856 */, - 3000000 /* 50880 */]); - assertFalse(Array.prototype.includes.call(array, -1)); - assertFalse(Array.prototype.includes.call(array, 65536)); - - assertTrue(Array.prototype.includes.call(array, 0, 2)); - assertTrue(Array.prototype.includes.call(array, 0, 3)); - assertTrue(Array.prototype.includes.call(array, 0, 4)); - assertTrue(Array.prototype.includes.call(array, 0, 5)); - assertTrue(Array.prototype.includes.call(array, 0, 6)); - assertFalse(Array.prototype.includes.call(array, 0, 7)); - - assertTrue(Array.prototype.includes.call(array, 65535, 7)); - assertFalse(Array.prototype.includes.call(array, 65535, 8)); - - assertTrue(Array.prototype.includes.call(array, 37856, 8)); - assertFalse(Array.prototype.includes.call(array, 37856, 9)); - - assertTrue(Array.prototype.includes.call(array, 50880, 9)); - }, - - Detached_Uint16Array() { - var array = new Uint16Array(10); - %ArrayBufferDetach(array.buffer); - assertFalse(Array.prototype.includes.call(array, 0)); - assertFalse(Array.prototype.includes.call(array, 0, 10)); - }, - - Int32Array() { - var array = new Int32Array([-2147483649, 2147483648, - NaN /* 0 */, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFFFFFF /* -1 */, 4294968064 /* 768 */, - 4294959447 /* -7849 */]); - assertFalse(Array.prototype.includes.call(array, -2147483649)); - assertFalse(Array.prototype.includes.call(array, 2147483648)); - - assertTrue(Array.prototype.includes.call(array, 0.0, 2)); - assertTrue(Array.prototype.includes.call(array, 0.0, 3)); - assertTrue(Array.prototype.includes.call(array, 0, 4)); - assertTrue(Array.prototype.includes.call(array, 0, 5)); - assertTrue(Array.prototype.includes.call(array, 0.0, 6)); - assertFalse(Array.prototype.includes.call(array, 0.0, 7)); - - assertTrue(Array.prototype.includes.call(array, -1, 7)); - assertFalse(Array.prototype.includes.call(array, -1, 8)); - - assertTrue(Array.prototype.includes.call(array, 768, 8)); - assertFalse(Array.prototype.includes.call(array, 768, 9)); - - assertTrue(Array.prototype.includes.call(array, -7849, 9)); - }, - - Detached_Int32Array() { - var array = new Int32Array(10); - %ArrayBufferDetach(array.buffer); - assertFalse(Array.prototype.includes.call(array, 0)); - assertFalse(Array.prototype.includes.call(array, 0, 10)); - }, - - Uint32Array() { - var array = new Uint32Array([-1, 4294967296, - NaN /* 0 */, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFFFFFF /* 4294967295 */, - 4294968064 /* 768 */, - 4295079447 /* 112151 */]); - assertFalse(Array.prototype.includes.call(array, -1)); - assertFalse(Array.prototype.includes.call(array, 4294967296)); - - assertTrue(Array.prototype.includes.call(array, 0.0, 2)); - assertTrue(Array.prototype.includes.call(array, 0.0, 3)); - assertTrue(Array.prototype.includes.call(array, 0, 4)); - assertTrue(Array.prototype.includes.call(array, 0, 5)); - assertTrue(Array.prototype.includes.call(array, 0.0, 6)); - assertFalse(Array.prototype.includes.call(array, 0.0, 7)); - - assertTrue(Array.prototype.includes.call(array, 4294967295, 7)); - assertFalse(Array.prototype.includes.call(array, 4294967295, 8)); - - assertTrue(Array.prototype.includes.call(array, 768, 8)); - assertFalse(Array.prototype.includes.call(array, 768, 9)); - - assertTrue(Array.prototype.includes.call(array, 112151, 9)); - }, - - Detached_Uint32Array() { - var array = new Uint32Array(10); - %ArrayBufferDetach(array.buffer); - assertFalse(Array.prototype.includes.call(array, 0)); - assertFalse(Array.prototype.includes.call(array, 0, 10)); - }, - - Float32Array() { - var array = new Float32Array([-1, 4294967296, - NaN, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFFFFFF /* 34359738368.0 */, - -4294968064 /* -4294968320.0 */, - 4295079447 /* 4295079424.0 */]); - assertTrue(Array.prototype.includes.call(array, -1.0)); - assertTrue(Array.prototype.includes.call(array, 4294967296)); - - assertTrue(Array.prototype.includes.call(array, NaN, 2)); - assertTrue(Array.prototype.includes.call(array, Infinity, 3)); - assertTrue(Array.prototype.includes.call(array, -Infinity, 4)); - assertTrue(Array.prototype.includes.call(array, 0, 5)); - assertTrue(Array.prototype.includes.call(array, 0, 6)); - assertFalse(Array.prototype.includes.call(array, 0.0, 7)); - - assertTrue(Array.prototype.includes.call(array, 34359738368.0, 7)); - assertFalse(Array.prototype.includes.call(array, 34359738368.0, 8)); - - assertTrue(Array.prototype.includes.call(array, -4294968320.0, 8)); - assertFalse(Array.prototype.includes.call(array, -4294968320.0, 9)); - - assertTrue(Array.prototype.includes.call(array, 4295079424.0, 9)); - }, - - Detached_Float32Array() { - var array = new Float32Array(10); - %ArrayBufferDetach(array.buffer); - assertFalse(Array.prototype.includes.call(array, 0)); - assertFalse(Array.prototype.includes.call(array, 0, 10)); - }, - - Float64Array() { - var array = new Float64Array([-1, 4294967296, - NaN, Infinity /* 0 */, - -Infinity /* 0 */, -0 /* 0 */, +0 /* 0 */, - 0x7FFFFFFFF /* 34359738367.0 */, - -4294968064 /* -4294968064.0 */, - 4295079447 /* 4295079447.0 */]); - assertTrue(Array.prototype.includes.call(array, -1.0)); - assertTrue(Array.prototype.includes.call(array, 4294967296)); - - assertTrue(Array.prototype.includes.call(array, NaN, 2)); - assertTrue(Array.prototype.includes.call(array, Infinity, 3)); - assertTrue(Array.prototype.includes.call(array, -Infinity, 4)); - assertTrue(Array.prototype.includes.call(array, 0, 5)); - assertTrue(Array.prototype.includes.call(array, 0, 6)); - assertFalse(Array.prototype.includes.call(array, 0.0, 7)); - - assertTrue(Array.prototype.includes.call(array, 34359738367.0, 7)); - assertFalse(Array.prototype.includes.call(array, 34359738367.0, 8)); - - assertTrue(Array.prototype.includes.call(array, -4294968064.0, 8)); - assertFalse(Array.prototype.includes.call(array, -4294968064.0, 9)); - - assertTrue(Array.prototype.includes.call(array, 4295079447.0, 9)); - }, - - Detached_Float64Array() { - var array = new Float32Array(10); - %ArrayBufferDetach(array.buffer); - assertFalse(Array.prototype.includes.call(array, 0)); - assertFalse(Array.prototype.includes.call(array, 0, 10)); - }, - } -}; - -function runSuites(suites) { - Object.keys(suites).forEach(suite => runSuite(suites[suite])); - - function runSuite(suite) { - Object.keys(suite).forEach(test => suite[test]()); - } -} - -runSuites(kTests); diff --git a/implementation-contributed/v8/mjsunit/es7/array-includes-to-object-sloppy.js b/implementation-contributed/v8/mjsunit/es7/array-includes-to-object-sloppy.js deleted file mode 100644 index eb7ccf8723a..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/array-includes-to-object-sloppy.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Ported from -// https://github.com/tc39/Array.prototype.includes/blob/master/test/number-this.js -// using https://www.npmjs.org/package/test262-to-mjsunit - -// Array.prototype.includes should use ToObject on this, so that when called -// with a number, it picks up numeric properties from Number.prototype -(function() { - Number.prototype[0] = "a"; - Number.prototype[1] = "b"; - - Object.defineProperty(Number.prototype, 2, { - get: function() { - assertEquals("object", typeof this); - return "c"; - } - }); - - Number.prototype.length = 3; - assertTrue(Array.prototype.includes.call(5, "a")); - assertTrue(Array.prototype.includes.call(5, "b")); - assertTrue(Array.prototype.includes.call(5, "c")); - assertFalse(Array.prototype.includes.call(5, "d")); -})(); diff --git a/implementation-contributed/v8/mjsunit/es7/array-includes-to-object-strict.js b/implementation-contributed/v8/mjsunit/es7/array-includes-to-object-strict.js deleted file mode 100644 index ffefa88f995..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/array-includes-to-object-strict.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Ported from -// https://github.com/tc39/Array.prototype.includes/blob/master/test/number-this.js -// using https://www.npmjs.org/package/test262-to-mjsunit - -// Array.prototype.includes should use ToObject on this, so that when called -// with a number, it picks up numeric properties from Number.prototype (even in -// strict mode) -(function() { - "use strict"; - - Number.prototype[0] = "a"; - Number.prototype[1] = "b"; - - Object.defineProperty(Number.prototype, 2, { - get: function() { - assertEquals("object", typeof this); - return "c"; - } - }); - - Number.prototype.length = 3; - assertTrue(Array.prototype.includes.call(5, "a")); - assertTrue(Array.prototype.includes.call(5, "b")); - assertTrue(Array.prototype.includes.call(5, "c")); - assertFalse(Array.prototype.includes.call(5, "d")); -})(); diff --git a/implementation-contributed/v8/mjsunit/es7/array-includes.js b/implementation-contributed/v8/mjsunit/es7/array-includes.js deleted file mode 100644 index ac0f34106a2..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/array-includes.js +++ /dev/null @@ -1,709 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Largely ported from -// https://github.com/tc39/Array.prototype.includes/tree/master/test -// using https://www.npmjs.org/package/test262-to-mjsunit with further edits - - -// Array.prototype.includes sees a new element added by a getter that is hit -// during iteration -(function() { - var arrayLike = { - length: 5, - 0: "a", - - get 1() { - this[2] = "c"; - return "b"; - } - }; - - assertTrue(Array.prototype.includes.call(arrayLike, "c")); -})(); - - -// Array.prototype.includes works on array-like objects -(function() { - var arrayLike1 = { - length: 5, - 0: "a", - 1: "b" - }; - - assertTrue(Array.prototype.includes.call(arrayLike1, "a")); - assertFalse(Array.prototype.includes.call(arrayLike1, "c")); - - var arrayLike2 = { - length: 2, - 0: "a", - 1: "b", - 2: "c" - }; - - assertTrue(Array.prototype.includes.call(arrayLike2, "b")); - assertFalse(Array.prototype.includes.call(arrayLike2, "c")); -})(); - - -// Array.prototype.includes should fail if used on a null or undefined this -(function() { - assertThrows(function() { - Array.prototype.includes.call(null, "a"); - }, TypeError); - - assertThrows(function() { - Array.prototype.includes.call(undefined, "a"); - }, TypeError); -})(); - - -// Array.prototype.includes should terminate if getting an index throws an -// exception -(function() { - function Test262Error() {} - - var trappedZero = { - length: 2, - - get 0() { - throw new Test262Error(); - }, - - get 1() { - assertUnreachable("Should not try to get the first element"); - } - }; - - assertThrows(function() { - Array.prototype.includes.call(trappedZero, "a"); - }, Test262Error); -})(); - - -// Array.prototype.includes should terminate if ToNumber ends up being called on -// a symbol fromIndex -(function() { - var trappedZero = { - length: 1, - - get 0() { - assertUnreachable("Should not try to get the zeroth element"); - } - }; - - assertThrows(function() { - Array.prototype.includes.call(trappedZero, "a", Symbol()); - }, TypeError); -})(); - - -// Array.prototype.includes should terminate if an exception occurs converting -// the fromIndex to a number -(function() { - function Test262Error() {} - - var fromIndex = { - valueOf: function() { - throw new Test262Error(); - } - }; - - var trappedZero = { - length: 1, - - get 0() { - assertUnreachable("Should not try to get the zeroth element"); - } - }; - - assertThrows(function() { - Array.prototype.includes.call(trappedZero, "a", fromIndex); - }, Test262Error); -})(); - - -// Array.prototype.includes should terminate if an exception occurs getting the -// length -(function() { - function Test262Error() {} - - var fromIndexTrap = { - valueOf: function() { - assertUnreachable("Should not try to call ToInteger on valueOf"); - } - }; - - var throwingLength = { - get length() { - throw new Test262Error(); - }, - - get 0() { - assertUnreachable("Should not try to get the zeroth element"); - } - }; - - assertThrows(function() { - Array.prototype.includes.call(throwingLength, "a", fromIndexTrap); - }, Test262Error); -})(); - - -// Array.prototype.includes should terminate if ToLength ends up being called on -// a symbol length -(function() { - var fromIndexTrap = { - valueOf: function() { - assertUnreachable("Should not try to call ToInteger on valueOf"); - } - }; - - var badLength = { - length: Symbol(), - - get 0() { - assertUnreachable("Should not try to get the zeroth element"); - } - }; - - assertThrows(function() { - Array.prototype.includes.call(badLength, "a", fromIndexTrap); - }, TypeError); -})(); - - -// Array.prototype.includes should terminate if an exception occurs converting -// the length to a number -(function() { - function Test262Error() {} - - var fromIndexTrap = { - valueOf: function() { - assertUnreachable("Should not try to call ToInteger on valueOf"); - } - }; - - var badLength = { - length: { - valueOf: function() { - throw new Test262Error(); - } - }, - - get 0() { - assertUnreachable("Should not try to get the zeroth element"); - } - }; - - assertThrows(function() { - Array.prototype.includes.call(badLength, "a", fromIndexTrap); - }, Test262Error); -})(); - - -// Array.prototype.includes should search the whole array, as the optional -// second argument fromIndex defaults to 0 -(function() { - assertTrue([10, 11].includes(10)); - assertTrue([10, 11].includes(11)); - - var arrayLike = { - length: 2, - - get 0() { - return "1"; - }, - - get 1() { - return "2"; - } - }; - - assertTrue(Array.prototype.includes.call(arrayLike, "1")); - assertTrue(Array.prototype.includes.call(arrayLike, "2")); -})(); - - -// Array.prototype.includes returns false if fromIndex is greater or equal to -// the length of the array -(function() { - assertFalse([1, 2].includes(2, 3)); - assertFalse([1, 2].includes(2, 2)); - - var arrayLikeWithTrap = { - length: 2, - - get 0() { - assertUnreachable("Getter for 0 was called"); - }, - - get 1() { - assertUnreachable("Getter for 1 was called"); - } - }; - - assertFalse(Array.prototype.includes.call(arrayLikeWithTrap, "c", 2)); - assertFalse(Array.prototype.includes.call(arrayLikeWithTrap, "c", 3)); -})(); - - -// Array.prototype.includes searches the whole array if the computed index from -// the given negative fromIndex argument is less than 0 -(function() { - assertTrue([1, 3].includes(1, -4)); - assertTrue([1, 3].includes(3, -4)); - - var arrayLike = { - length: 2, - 0: "a", - - get 1() { - return "b"; - }, - - get "-1"() { - assertUnreachable("Should not try to get the element at index -1"); - } - }; - - assertTrue(Array.prototype.includes.call(arrayLike, "a", -4)); - assertTrue(Array.prototype.includes.call(arrayLike, "b", -4)); -})(); - - -// Array.prototype.includes should use a negative value as the offset from the -// end of the array to compute fromIndex -(function() { - assertTrue([12, 13].includes(13, -1)); - assertFalse([12, 13].includes(12, -1)); - assertTrue([12, 13].includes(12, -2)); - - var arrayLike = { - length: 2, - - get 0() { - return "a"; - }, - - get 1() { - return "b"; - } - }; - - assertTrue(Array.prototype.includes.call(arrayLike, "b", -1)); - assertFalse(Array.prototype.includes.call(arrayLike, "a", -1)); - assertTrue(Array.prototype.includes.call(arrayLike, "a", -2)); -})(); - - -// Array.prototype.includes converts its fromIndex parameter to an integer -(function() { - assertFalse(["a", "b"].includes("a", 2.3)); - - var arrayLikeWithTraps = { - length: 2, - - get 0() { - assertUnreachable("Getter for 0 was called"); - }, - - get 1() { - assertUnreachable("Getter for 1 was called"); - } - }; - - assertFalse(Array.prototype.includes.call(arrayLikeWithTraps, "c", 2.1)); - assertFalse(Array.prototype.includes.call(arrayLikeWithTraps, "c", +Infinity)); - assertFalse(["a", "b", "c"].includes("a", +Infinity)); - assertTrue(["a", "b", "c"].includes("a", -Infinity)); - assertTrue(["a", "b", "c"].includes("c", 2.9)); - assertTrue(["a", "b", "c"].includes("c", NaN)); - - var arrayLikeWithTrapAfterZero = { - length: 2, - - get 0() { - return "a"; - }, - - get 1() { - assertUnreachable("Getter for 1 was called"); - } - }; - - assertTrue(Array.prototype.includes.call(arrayLikeWithTrapAfterZero, "a", NaN)); - - var numberLike = { - valueOf: function() { - return 2; - } - }; - - assertFalse(["a", "b", "c"].includes("a", numberLike)); - assertFalse(["a", "b", "c"].includes("a", "2")); - assertTrue(["a", "b", "c"].includes("c", numberLike)); - assertTrue(["a", "b", "c"].includes("c", "2")); -})(); - - -// Array.prototype.includes should have length 1 -(function() { - assertEquals(1, Array.prototype.includes.length); -})(); - - -// Array.prototype.includes should have name property with value 'includes' -(function() { - assertEquals("includes", Array.prototype.includes.name); -})(); - - -// !!! Test failed to convert: -// Cannot convert tests with includes. -// !!! - - -// Array.prototype.includes does not skip holes; if the array has a prototype it -// gets from that -(function() { - var holesEverywhere = [,,,]; - - holesEverywhere.__proto__ = { - 1: "a" - }; - - holesEverywhere.__proto__.__proto__ = Array.prototype; - assertTrue(holesEverywhere.includes("a")); - var oneHole = ["a", "b",, "d"]; - - oneHole.__proto__ = { - get 2() { - return "c"; - } - }; - - assertTrue(Array.prototype.includes.call(oneHole, "c")); -})(); - - -// Array.prototype.includes does not skip holes; instead it treates them as -// undefined -(function() { - assertTrue([,,,].includes(undefined)); - assertTrue(["a", "b",, "d"].includes(undefined)); -})(); - - -// Array.prototype.includes gets length property from the prototype if it's -// available -(function() { - var proto = { - length: 1 - }; - - var arrayLike = Object.create(proto); - arrayLike[0] = "a"; - - Object.defineProperty(arrayLike, "1", { - get: function() { - assertUnreachable("Getter for 1 was called"); - } - }); - - assertTrue(Array.prototype.includes.call(arrayLike, "a")); -})(); - - -// Array.prototype.includes treats a missing length property as zero -(function() { - var arrayLikeWithTraps = { - get 0() { - assertUnreachable("Getter for 0 was called"); - }, - - get 1() { - assertUnreachable("Getter for 1 was called"); - } - }; - - assertFalse(Array.prototype.includes.call(arrayLikeWithTraps, "a")); -})(); - - -// Array.prototype.includes should always return false on negative-length -// objects -(function() { - assertFalse(Array.prototype.includes.call({ - length: -1 - }, 2)); - - assertFalse(Array.prototype.includes.call({ - length: -2 - })); - - assertFalse(Array.prototype.includes.call({ - length: -Infinity - }, undefined)); - - assertFalse(Array.prototype.includes.call({ - length: -Math.pow(2, 53) - }, NaN)); - - assertFalse(Array.prototype.includes.call({ - length: -1, - "-1": 2 - }, 2)); - - assertFalse(Array.prototype.includes.call({ - length: -3, - "-1": 2 - }, 2)); - - assertFalse(Array.prototype.includes.call({ - length: -Infinity, - "-1": 2 - }, 2)); - - var arrayLikeWithTrap = { - length: -1, - - get 0() { - assertUnreachable("Getter for 0 was called"); - } - }; - - assertFalse(Array.prototype.includes.call(arrayLikeWithTrap, 2)); -})(); - - -// Array.prototype.includes should clamp positive lengths to 2^53 - 1 -(function() { - var fromIndexForLargeIndexTests = 9007199254740990; - - assertFalse(Array.prototype.includes.call({ - length: 1 - }, 2)); - - assertTrue(Array.prototype.includes.call({ - length: 1, - 0: "a" - }, "a")); - - assertTrue(Array.prototype.includes.call({ - length: +Infinity, - 0: "a" - }, "a")); - - assertFalse(Array.prototype.includes.call({ - length: +Infinity - }, "a", fromIndexForLargeIndexTests)); - - var arrayLikeWithTrap = { - length: +Infinity, - - get 9007199254740992() { - assertUnreachable("Getter for 9007199254740992 (i.e. 2^53) was called"); - }, - - "9007199254740993": "a" - }; - - assertFalse( - Array.prototype.includes.call(arrayLikeWithTrap, "a", fromIndexForLargeIndexTests) - ); - - var arrayLikeWithTooBigLength = { - length: 9007199254740996, - "9007199254740992": "a" - }; - - assertFalse( - Array.prototype.includes.call(arrayLikeWithTooBigLength, "a", fromIndexForLargeIndexTests) - ); -})(); - - -// Array.prototype.includes should always return false on zero-length objects -(function() { - assertFalse([].includes(2)); - assertFalse([].includes()); - assertFalse([].includes(undefined)); - assertFalse([].includes(NaN)); - - assertFalse(Array.prototype.includes.call({ - length: 0 - }, 2)); - - assertFalse(Array.prototype.includes.call({ - length: 0 - })); - - assertFalse(Array.prototype.includes.call({ - length: 0 - }, undefined)); - - assertFalse(Array.prototype.includes.call({ - length: 0 - }, NaN)); - - assertFalse(Array.prototype.includes.call({ - length: 0, - 0: 2 - }, 2)); - - assertFalse(Array.prototype.includes.call({ - length: 0, - 0: undefined - })); - - assertFalse(Array.prototype.includes.call({ - length: 0, - 0: undefined - }, undefined)); - - assertFalse(Array.prototype.includes.call({ - length: 0, - 0: NaN - }, NaN)); - - var arrayLikeWithTrap = { - length: 0, - - get 0() { - assertUnreachable("Getter for 0 was called"); - } - }; - - Array.prototype.includes.call(arrayLikeWithTrap); - - var trappedFromIndex = { - valueOf: function() { - assertUnreachable("Should not try to convert fromIndex to a number on a zero-length array"); - } - }; - - [].includes("a", trappedFromIndex); - - Array.prototype.includes.call({ - length: 0 - }, trappedFromIndex); -})(); - - -// Array.prototype.includes works on objects -(function() { - assertFalse(["a", "b", "c"].includes({})); - assertFalse([{}, {}].includes({})); - var obj = {}; - assertTrue([obj].includes(obj)); - assertFalse([obj].includes(obj, 1)); - assertTrue([obj, obj].includes(obj, 1)); - - var stringyObject = { - toString: function() { - return "a"; - } - }; - - assertFalse(["a", "b", obj].includes(stringyObject)); -})(); - - -// Array.prototype.includes does not see an element removed by a getter that is -// hit during iteration -(function() { - var arrayLike = { - length: 5, - 0: "a", - - get 1() { - delete this[2]; - return "b"; - }, - - 2: "c" - }; - - assertFalse(Array.prototype.includes.call(arrayLike, "c")); -})(); - - -// Array.prototype.includes accesses out-of-bounds if length is changed late. -(function () { - let arr = [1, 2, 3]; - assertTrue(arr.includes(undefined, { - toString: function () { - arr.length = 0; - return 0; - } - })); - - arr = [1, 2, 3]; - assertFalse(arr.includes(undefined, { - toString: function () { - arr.length = 0; - return 10; - } - })); - - arr = [1, 2, 3]; - assertFalse(arr.includes(4, { - toString: function () { - arr.push(4); - return 0; - } - })); -})(); - - -// Array.prototype.includes should use the SameValueZero algorithm to compare -(function() { - assertTrue([1, 2, 3].includes(2)); - assertFalse([1, 2, 3].includes(4)); - assertTrue([1, 2, NaN].includes(NaN)); - assertTrue([1, 2, -0].includes(+0)); - assertTrue([1, 2, -0].includes(-0)); - assertTrue([1, 2, +0].includes(-0)); - assertTrue([1, 2, +0].includes(+0)); - assertFalse([1, 2, -Infinity].includes(+Infinity)); - assertTrue([1, 2, -Infinity].includes(-Infinity)); - assertFalse([1, 2, +Infinity].includes(-Infinity)); - assertTrue([1, 2, +Infinity].includes(+Infinity)); -})(); - - -// Array.prototype.includes stops once it hits the length of an array-like, even -// if there are more after -(function() { - var arrayLike = { - length: 2, - 0: "a", - 1: "b", - - get 2() { - assertUnreachable("Should not try to get the second element"); - } - }; - - assertFalse(Array.prototype.includes.call(arrayLike, "c")); -})(); - - -// Array.prototype.includes works on typed arrays -(function() { - assertTrue(Array.prototype.includes.call(new Uint8Array([1, 2, 3]), 2)); - - assertTrue( - Array.prototype.includes.call(new Float32Array([2.5, 3.14, Math.PI]), 3.1415927410125732) - ); - - assertFalse(Array.prototype.includes.call(new Uint8Array([1, 2, 3]), 4)); - assertFalse(Array.prototype.includes.call(new Uint8Array([1, 2, 3]), 2, 2)); -})(); - - -(function testUnscopable() { - assertTrue(Array.prototype[Symbol.unscopables].includes); -})(); diff --git a/implementation-contributed/v8/mjsunit/es7/exponentiation-operator.js b/implementation-contributed/v8/mjsunit/es7/exponentiation-operator.js deleted file mode 100644 index 9d934bdaac5..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/exponentiation-operator.js +++ /dev/null @@ -1,276 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function TestBasic() { - assertEquals(-(8 ** 2), -64); - assertEquals(+(8 ** 2), 64); - assertEquals(~(8 ** 2), -65); - assertEquals(!(8 ** 2), false); - - assertEquals(2 ** -2, 0.25); - - var o = { p: 1 }; - assertEquals(2 ** delete o.p, 2); - - assertEquals(2 ** void 1, NaN); - - assertEquals(2 ** typeof 1, NaN); - - var s = "2"; - var n = 2; - - assertEquals(2 ** "2", 4); - assertEquals(2 ** +"2", 4); - assertEquals(2 ** +s, 4); - assertEquals(2 ** s, 4); - assertEquals(2 ** 2, 4); - assertEquals(2 ** +2, 4); - assertEquals(2 ** +n, 4); - assertEquals(2 ** n, 4); - - assertEquals(2 ** -"2", 0.25); - assertEquals(2 ** -s, 0.25); - assertEquals(2 ** -2, 0.25); - assertEquals(2 ** -n, 0.25); - - assertEquals(2 ** ~"2", 0.125); - assertEquals(2 ** ~s, 0.125); - assertEquals(2 ** ~2, 0.125); - assertEquals(2 ** ~n, 0.125); - - assertEquals(2 ** !"2", 1); - assertEquals(2 ** !s, 1); - assertEquals(2 ** !2, 1); - assertEquals(2 ** !n, 1); - - var exponent = 2; - assertEquals(2 ** 3, 8); - assertEquals(3 * 2 ** 3, 24); - assertEquals(2 ** ++exponent, 8); - assertEquals(2 ** -1 * 2, 1); - assertEquals(2 ** 2 * 4, 16); - assertEquals(2 ** 2 / 2, 2); - assertEquals(2 ** (3 ** 2), 512); - assertEquals(2 ** 3 ** 2, 512); - assertEquals(2 * 3 ** 2, 18); - assertEquals(16 / 2 ** 2, 4); -} -TestBasic(); - - -function TestAssignment() { - var base = -5; - assertEquals(base **= 3, -125); - assertEquals(base, -125); -} -TestAssignment(); - - -function TestPrecedence() { - var base = 4; - assertEquals(--base ** 2, 9); // 3 ** 2 - assertEquals(++base ** 2, 16); // 4 ** 2 - assertEquals(base++ ** 2, 16); // 4 ** 2 - assertEquals(base-- ** 2, 25); // 5 ** 2 - - assertEquals(4, base); - assertEquals(--base ** --base ** 2, - Math.pow(3, Math.pow(2, 2))); - - assertEquals(2, base); - assertEquals(++base ** ++base ** 2, - Math.pow(3, Math.pow(4, 2))); - - base = 4; - assertEquals(base-- ** base-- ** 2, - Math.pow(4, Math.pow(3, 2))); - - assertEquals(2, base); - assertEquals(base++ ** base++ ** 2, - Math.pow(2, Math.pow(3, 2))); -} -TestPrecedence(); - - -function TestInvariants() { - assertEquals(NaN, 2 ** NaN); - assertEquals(NaN, (+0) ** NaN); - assertEquals(NaN, (-0) ** NaN); - assertEquals(NaN, Infinity ** NaN); - assertEquals(NaN, (-Infinity) ** NaN); - - assertEquals(1, NaN ** +0); - assertEquals(1, NaN ** -0); - - assertEquals(NaN, NaN ** NaN); - assertEquals(NaN, NaN ** 2.2); - assertEquals(NaN, NaN ** 1); - assertEquals(NaN, NaN ** -1); - assertEquals(NaN, NaN ** -2.2); - assertEquals(NaN, NaN ** Infinity); - assertEquals(NaN, NaN ** -Infinity); - - assertEquals(Infinity, 1.1 ** Infinity); - assertEquals(Infinity, (-1.1) ** Infinity); - assertEquals(Infinity, 2 ** Infinity); - assertEquals(Infinity, (-2) ** Infinity); - - // Because +0 == -0, we need to compare 1/{+,-}0 to {+,-}Infinity - assertEquals(+Infinity, 1/1.1 ** -Infinity); - assertEquals(+Infinity, 1/(-1.1) ** -Infinity); - assertEquals(+Infinity, 1/2 ** -Infinity); - assertEquals(+Infinity, 1/(-2) ** -Infinity); - - assertEquals(NaN, 1 ** Infinity); - assertEquals(NaN, 1 ** -Infinity); - assertEquals(NaN, (-1) ** Infinity); - assertEquals(NaN, (-1) ** -Infinity); - - assertEquals(+0, 0.1 ** Infinity); - assertEquals(+0, (-0.1) ** Infinity); - assertEquals(+0, 0.999 ** Infinity); - assertEquals(+0, (-0.999) ** Infinity); - - assertEquals(Infinity, 0.1 ** -Infinity); - assertEquals(Infinity, (-0.1) ** -Infinity); - assertEquals(Infinity, 0.999 ** -Infinity); - assertEquals(Infinity, (-0.999) ** -Infinity); - - assertEquals(Infinity, Infinity ** 0.1); - assertEquals(Infinity, Infinity ** 2); - - assertEquals(+Infinity, 1/Infinity ** -0.1); - assertEquals(+Infinity, 1/Infinity ** -2); - - assertEquals(-Infinity, (-Infinity) ** 3); - assertEquals(-Infinity, (-Infinity) ** 13); - - assertEquals(Infinity, (-Infinity) ** 3.1); - assertEquals(Infinity, (-Infinity) ** 2); - - assertEquals(-Infinity, 1/(-Infinity) ** -3); - assertEquals(-Infinity, 1/(-Infinity) ** -13); - - assertEquals(+Infinity, 1/(-Infinity) ** -3.1); - assertEquals(+Infinity, 1/(-Infinity) ** -2); - - assertEquals(+Infinity, 1/(+0) ** 1.1); - assertEquals(+Infinity, 1/(+0) ** 2); - - assertEquals(Infinity, (+0) ** -1.1); - assertEquals(Infinity, (+0) ** -2); - - assertEquals(-Infinity, 1/(-0) ** 3); - assertEquals(-Infinity, 1/(-0) ** 13); - - assertEquals(+Infinity, 1/(-0) ** 3.1); - assertEquals(+Infinity, 1/(-0) ** 2); - - assertEquals(-Infinity, (-0) ** -3); - assertEquals(-Infinity, (-0) ** -13); - - assertEquals(Infinity, (-0) ** -3.1); - assertEquals(Infinity, (-0) ** -2); - - assertEquals(NaN, (-0.00001) ** 1.1); - assertEquals(NaN, (-0.00001) ** -1.1); - assertEquals(NaN, (-1.1) ** 1.1); - assertEquals(NaN, (-1.1) ** -1.1); - assertEquals(NaN, (-2) ** 1.1); - assertEquals(NaN, (-2) ** -1.1); - assertEquals(NaN, (-1000) ** 1.1); - assertEquals(NaN, (-1000) ** -1.1); - - assertEquals(+Infinity, 1/(-0) ** 0.5); - assertEquals(+Infinity, 1/(-0) ** 0.6); - assertEquals(-Infinity, 1/(-0) ** 1); - assertEquals(-Infinity, 1/(-0) ** 10000000001); - - assertEquals(+Infinity, (-0) ** -0.5); - assertEquals(+Infinity, (-0) ** -0.6); - assertEquals(-Infinity, (-0) ** -1); - assertEquals(-Infinity, (-0) ** -10000000001); - - assertEquals(4, 16 ** 0.5); - assertEquals(NaN, (-16) ** 0.5); - assertEquals(0.25, 16 ** -0.5); - assertEquals(NaN, (-16) ** -0.5); -} -TestInvariants(); - - -function TestOperationOrder() { - var log = []; - var handler = { - get(t, n) { - var result = Reflect.get(t, n); - var str = typeof result === "object" ? "[object Object]" : String(result); - log.push(`[[Get]](${String(n)}) -> ${str}`); - return result; - }, - set(t, n, v) { - var result = Reflect.set(t, n, v); - log.push(`[[Set]](${String(n)}, ${String(v)}) -> ${String(result)}`); - return result; - }, - has() { assertUnreachable("trap 'has' invoked"); }, - deleteProperty() { assertUnreachable("trap 'deleteProperty' invoked"); }, - ownKeys() { assertUnreachable("trap 'ownKeys' invoked"); }, - apply() { assertUnreachable("trap 'apply' invoked"); }, - construct() { assertUnreachable("trap 'construct' invoked"); }, - getPrototypeOf() { assertUnreachable("trap 'getPrototypeOf' invoked"); }, - setPrototypeOf() { assertUnreachable("trap 'setPrototypeOf' invoked"); }, - isExtensible() { assertUnreachable("trap 'isExtensible' invoked"); }, - preventExtensions() { - assertUnreachable("trap 'preventExtensions' invoked"); }, - getOwnPropertyDescriptor() { - assertUnreachable("trap 'getOwnPropertyDescriptor' invoked"); }, - defineProperty() { assertUnreachable("trap 'defineProperty' invoked"); }, - }; - var P = new Proxy({ x: 2 }, handler); - - assertEquals(256, P.x **= "8"); - assertEquals([ - "[[Get]](x) -> 2", - "[[Set]](x, 256) -> true" - ], log); - - log = []; - var O = new Proxy({ p: P }, handler); - assertEquals(65536, O.p.x **= 2 ); - assertEquals([ - "[[Get]](p) -> [object Object]", - "[[Get]](x) -> 256", - "[[Set]](x, 65536) -> true" - ], log); -} -TestOperationOrder(); - - -function TestOverrideMathPow() { - var MathPow = MathPow; - Math.pow = function(a, b) { - assertUnreachable(`Math.pow(${String(a)}, ${String(b)}) invoked`); - } - - TestBasic(); - TestAssignment(); - TestInvariants(); - TestOperationOrder(); - - Math.pow = MathPow; -} -TestOverrideMathPow(); - -function TestBadAssignmentLHS() { - assertThrows("if (false) { 17 **= 10; }", ReferenceError); - assertThrows("if (false) { '17' **= 10; }", ReferenceError); - assertThrows("if (false) { /17/ **= 10; }", ReferenceError); - assertThrows("if (false) { ({ valueOf() { return 17; } } **= 10); }", - ReferenceError); - // TODO(caitp): a Call expression as LHS should be an early ReferenceError! - // assertThrows("if (false) { Array() **= 10; }", ReferenceError); - assertThrows(() => Array() **= 10, ReferenceError); -} -TestBadAssignmentLHS(); diff --git a/implementation-contributed/v8/mjsunit/es7/regexp-ui-word.js b/implementation-contributed/v8/mjsunit/es7/regexp-ui-word.js deleted file mode 100644 index 6b04fb4c32d..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/regexp-ui-word.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertTrue(/\w/iu.test('\u017F')); -assertTrue(/\w/iu.test('\u212A')); -assertFalse(/\W/iu.test('\u017F')); -assertFalse(/\W/iu.test('\u212A')); -assertFalse(/\W/iu.test('s')); -assertFalse(/\W/iu.test('S')); -assertFalse(/\W/iu.test('K')); -assertFalse(/\W/iu.test('k')); - -assertTrue(/[\w]/iu.test('\u017F')); -assertTrue(/[\w]/iu.test('\u212A')); -assertFalse(/[\W]/iu.test('\u017F')); -assertFalse(/[\W]/iu.test('\u212A')); -assertFalse(/[\W]/iu.test('s')); -assertFalse(/[\W]/iu.test('S')); -assertFalse(/[\W]/iu.test('K')); -assertFalse(/[\W]/iu.test('k')); - -assertTrue(/\b/iu.test('\u017F')); -assertTrue(/\b/iu.test('\u212A')); -assertTrue(/\b/iu.test('s')); -assertTrue(/\b/iu.test('S')); -assertFalse(/\B/iu.test('\u017F')); -assertFalse(/\B/iu.test('\u212A')); -assertFalse(/\B/iu.test('s')); -assertFalse(/\B/iu.test('S')); -assertFalse(/\B/iu.test('K')); -assertFalse(/\B/iu.test('k')); - -assertEquals(["abcd", "d"], /a.*?(.)\b/i.exec('abcd\u017F cd')); -assertEquals(["abcd", "d"], /a.*?(.)\b/i.exec('abcd\u212A cd')); -assertEquals(["abcd\u017F", "\u017F"], /a.*?(.)\b/iu.exec('abcd\u017F cd')); -assertEquals(["abcd\u212A", "\u212A"], /a.*?(.)\b/iu.exec('abcd\u212A cd')); - -assertEquals(["a\u017F ", " "], /a.*?\B(.)/i.exec('a\u017F ')); -assertEquals(["a\u212A ", " "], /a.*?\B(.)/i.exec('a\u212A ')); -assertEquals(["a\u017F", "\u017F"], /a.*?\B(.)/iu.exec('a\u017F ')); -assertEquals(["a\u212A", "\u212A"], /a.*?\B(.)/iu.exec('a\u212A ')); diff --git a/implementation-contributed/v8/mjsunit/es7/regress/regress-5986.js b/implementation-contributed/v8/mjsunit/es7/regress/regress-5986.js deleted file mode 100644 index ca157f80261..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/regress/regress-5986.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -var array = [1.7, 1.7, 1.7]; -var mutator = { - [Symbol.toPrimitive]() { - Object.defineProperties(array, { - 0: { get() { } }, - 1: { get() { } }, - 2: { get() { } }, - }); - return 0; - } -}; - -assertTrue(array.includes(undefined, mutator)); - -function search(array, searchElement, startIndex) { - return array.includes(searchElement, startIndex); -} - -array = [1.7, 1.7, 1.7]; -var not_mutator = { [Symbol.toPrimitive]() { return 0; } }; -assertFalse(search(array, undefined, not_mutator)); -assertFalse(search(array, undefined, not_mutator)); -%OptimizeFunctionOnNextCall(search); -assertTrue(search(array, undefined, mutator)); diff --git a/implementation-contributed/v8/mjsunit/es7/regress/regress-633883.js b/implementation-contributed/v8/mjsunit/es7/regress/regress-633883.js deleted file mode 100644 index d3a4958da49..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/regress/regress-633883.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -v5 = new Array(); -v17 = encodeURIComponent(v5); -v19 = isFinite(); -v34 = new Array(v19); -v47 = v34.includes(v17); diff --git a/implementation-contributed/v8/mjsunit/es7/regress/regress-634269.js b/implementation-contributed/v8/mjsunit/es7/regress/regress-634269.js deleted file mode 100644 index 3bd55eec414..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/regress/regress-634269.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -__v_1 = new Uint8Array(); -Object.defineProperty(__v_1.__proto__, 'length', {value: 42}); -Array.prototype.includes.call(new Uint8Array(), 2); diff --git a/implementation-contributed/v8/mjsunit/es7/regress/regress-634273.js b/implementation-contributed/v8/mjsunit/es7/regress/regress-634273.js deleted file mode 100644 index 7ee5b5a5fa8..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/regress/regress-634273.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -array = new Array(undefined, undefined, undefined); -Object.defineProperty(array, 0, { - get: function() { - array.push(undefined, undefined); - } -}); -array[0x80000] = 1; -result = array.includes(new WeakMap()); diff --git a/implementation-contributed/v8/mjsunit/es7/regress/regress-634357.js b/implementation-contributed/v8/mjsunit/es7/regress/regress-634357.js deleted file mode 100644 index 709edcbd50b..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/regress/regress-634357.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -array = new Array({}, {}, {}); -Object.defineProperty(array, 1, { - get: function() { - array.length = 0; - array[0] = -2147483648; - } -}); -result = array.includes(new Array()); diff --git a/implementation-contributed/v8/mjsunit/es7/typed-array-includes.js b/implementation-contributed/v8/mjsunit/es7/typed-array-includes.js deleted file mode 100644 index 8556d971131..00000000000 --- a/implementation-contributed/v8/mjsunit/es7/typed-array-includes.js +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Largely ported from -// https://github.com/tc39/Array.prototype.includes/tree/master/test/built-ins/TypedArray/prototype/includes -// using https://www.npmjs.org/package/test262-to-mjsunit with further edits - - -function testTypedArrays(callback) { - [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array - ] - .forEach(callback); -} - -testTypedArrays.floatOnly = function (callback) { - [Float32Array, Float64Array].forEach(callback); -}; - - -// %TypedArray%.prototype.includes throws a TypeError when used on non-typed -// arrays -(function() { - var taIncludes = Uint8Array.prototype.includes; - - assertThrows(function() { - taIncludes.call({ - length: 2, - 0: 1, - 1: 2 - }, 2); - }, TypeError); - - assertThrows(function() { - taIncludes.call([1, 2, 3], 2); - }, TypeError); - - assertThrows(function() { - taIncludes.call(null, 2); - }, TypeError); - - assertThrows(function() { - taIncludes.call(undefined, 2); - }, TypeError); -})(); - - -// %TypedArray%.prototype.includes should terminate if ToNumber ends up being -// called on a symbol fromIndex -(function() { - testTypedArrays(function(TypedArrayConstructor) { - var ta = new TypedArrayConstructor([1, 2, 3]); - - assertThrows(function() { - ta.includes(2, Symbol()); - }, TypeError); - }); -})(); - - -// %TypedArray%.prototype.includes should terminate if an exception occurs -// converting the fromIndex to a number -(function() { - function Test262Error() {} - - var fromIndex = { - valueOf: function() { - throw new Test262Error(); - } - }; - - testTypedArrays(function(TypedArrayConstructor) { - var ta = new TypedArrayConstructor([1, 2, 3]); - - assertThrows(function() { - ta.includes(2, fromIndex); - }, Test262Error); - }); -})(); - - -// %TypedArray%.prototype.includes should search the whole array, as the -// optional second argument fromIndex defaults to 0 -(function() { - testTypedArrays(function(TypedArrayConstructor) { - var ta = new TypedArrayConstructor([1, 2, 3]); - assertTrue(ta.includes(1)); - assertTrue(ta.includes(2)); - assertTrue(ta.includes(3)); - }); -})(); - - -// %TypedArray%.prototype.includes returns false if fromIndex is greater or -// equal to the length of the array -(function() { - testTypedArrays(function(TypedArrayConstructor) { - var ta = new TypedArrayConstructor([1, 2]); - assertFalse(ta.includes(2, 3)); - assertFalse(ta.includes(2, 2)); - }); -})(); - - -// %TypedArray%.prototype.includes searches the whole array if the computed -// index from the given negative fromIndex argument is less than 0 -(function() { - testTypedArrays(function(TypedArrayConstructor) { - var ta = new TypedArrayConstructor([1, 3]); - assertTrue(ta.includes(1, -4)); - assertTrue(ta.includes(1, -4)); - }); -})(); - - -// %TypedArray%.prototype.includes should use a negative value as the offset -// from the end of the array to compute fromIndex -(function() { - testTypedArrays(function(TypedArrayConstructor) { - var ta = new TypedArrayConstructor([12, 13]); - assertTrue(ta.includes(13, -1)); - assertFalse(ta.includes(12, -1)); - assertTrue(ta.includes(12, -2)); - }); -})(); - - -// %TypedArray%.prototype.includes converts its fromIndex parameter to an -// integer -(function() { - testTypedArrays(function(TypedArrayConstructor) { - var ta = new TypedArrayConstructor([1, 2, 3]); - assertFalse(ta.includes(1, 3.3)); - assertTrue(ta.includes(1, -Infinity)); - assertTrue(ta.includes(3, 2.9)); - assertTrue(ta.includes(3, NaN)); - - var numberLike = { - valueOf: function() { - return 2; - } - }; - - assertFalse(ta.includes(1, numberLike)); - assertFalse(ta.includes(1, "2")); - assertTrue(ta.includes(3, numberLike)); - assertTrue(ta.includes(3, "2")); - }); -})(); - - -// %TypedArray%.prototype.includes should have length 1 -(function() { - assertEquals(1, Uint8Array.prototype.includes.length); -})(); - - -// %TypedArray%.prototype.includes should have name property with value -// 'includes' -(function() { - assertEquals("includes", Uint8Array.prototype.includes.name); -})(); - - -// %TypedArray%.prototype.includes should always return false on zero-length -// typed arrays -(function() { - testTypedArrays(function(TypedArrayConstructor) { - var ta = new TypedArrayConstructor([]); - assertFalse(ta.includes(2)); - assertFalse(ta.includes()); - assertFalse(ta.includes(undefined)); - assertFalse(ta.includes(NaN)); - }); -})(); - - -// %TypedArray%.prototype.includes should use the SameValueZero algorithm to -// compare -(function() { - testTypedArrays.floatOnly(function(FloatArrayConstructor) { - assertTrue(new FloatArrayConstructor([1, 2, NaN]).includes(NaN)); - assertTrue(new FloatArrayConstructor([1, 2, -0]).includes(+0)); - assertTrue(new FloatArrayConstructor([1, 2, -0]).includes(-0)); - assertTrue(new FloatArrayConstructor([1, 2, +0]).includes(-0)); - assertTrue(new FloatArrayConstructor([1, 2, +0]).includes(+0)); - assertFalse(new FloatArrayConstructor([1, 2, -Infinity]).includes(+Infinity)); - assertTrue(new FloatArrayConstructor([1, 2, -Infinity]).includes(-Infinity)); - assertFalse(new FloatArrayConstructor([1, 2, +Infinity]).includes(-Infinity)); - assertTrue(new FloatArrayConstructor([1, 2, +Infinity]).includes(+Infinity)); - }); -})(); diff --git a/implementation-contributed/v8/mjsunit/es8/async-arrow-default-function-await.js b/implementation-contributed/v8/mjsunit/es8/async-arrow-default-function-await.js deleted file mode 100644 index 6c4d00e61a5..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-arrow-default-function-await.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -async(o = (function(await) {})) => 0 diff --git a/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-arguments.js b/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-arguments.js deleted file mode 100644 index 720770ef499..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-arguments.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertEqualsAsync(expected, run, msg) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (hadError) throw actual; - - assertTrue( - hadValue, "Expected '" + run.toString() + "' to produce a value"); - - assertEquals(expected, actual, msg); -}; - -assertEqualsAsync("[1,2,3]", () => (function() { - return (async () => JSON.stringify([...arguments]))(); -})(1, 2, 3)); - -assertEqualsAsync("[4,5,6]", - () => (function() { - return (async () => { - return JSON.stringify([...await arguments]) })(); - })(4, 5, 6)); diff --git a/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-new.target.js b/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-new.target.js deleted file mode 100644 index 7d016281f81..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-new.target.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertEqualsAsync(expected, run, msg) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (hadError) throw actual; - - assertTrue( - hadValue, "Expected '" + run.toString() + "' to produce a value"); - - assertEquals(expected, actual, msg); -}; - -class BaseClass { - constructor() { - return async () => new.target; - } -} - -class ChildClass extends BaseClass {} - -assertEqualsAsync(BaseClass, () => new BaseClass()()); -assertEqualsAsync(ChildClass, () => new ChildClass()()); diff --git a/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-super.js b/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-super.js deleted file mode 100644 index b175ac5ae12..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-super.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertEqualsAsync(expected, run, msg) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (hadError) throw actual; - - assertTrue( - hadValue, "Expected '" + run.toString() + "' to produce a value"); - - assertEquals(expected, actual, msg); -}; - -class BaseClass { - constructor(x) { - this.name_ = x; - } - get name() { return this.name_; } -}; - -class DeferredSuperCall extends BaseClass { - constructor(x) { - return async() => super(x); - } -}; - -assertEqualsAsync( - "LexicalSuperCall", - () => new DeferredSuperCall("LexicalSuperCall")().then(x => x.name)); - - -class DeferredSuperProperty extends BaseClass { - deferredName() { return async() => super.name; } -}; - -assertEqualsAsync( - "LexicalSuperProperty", - () => new DeferredSuperProperty("LexicalSuperProperty").deferredName()()); diff --git a/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-this.js b/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-this.js deleted file mode 100644 index a21978d1a0a..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-arrow-lexical-this.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertEqualsAsync(expected, run, msg) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (hadError) throw actual; - - assertTrue( - hadValue, "Expected '" + run.toString() + "' to produce a value"); - - assertEquals(expected, actual, msg); -}; - -var O = { - [Symbol.toStringTag]: "LexicalThis", - run(n) { - return async passFail => `${n}. ${passFail}: ${this}`; - }, -}; - -assertEqualsAsync("1. PASS: [object LexicalThis]", () => O.run(1)("PASS")); - -var O2 = { - [Symbol.toStringTag]: "LexicalThis", - run: O.run(2) -}; - -assertEqualsAsync("2. PASS: [object LexicalThis]", () => O2.run("PASS")); diff --git a/implementation-contributed/v8/mjsunit/es8/async-await-basic.js b/implementation-contributed/v8/mjsunit/es8/async-await-basic.js deleted file mode 100644 index 1c7b2ac6017..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-await-basic.js +++ /dev/null @@ -1,603 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Do not install `AsyncFunction` constructor on global object - -function assertThrowsAsync(run, errorType, message) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (!hadError) { - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but did not throw."); - } - if (!(actual instanceof errorType)) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but threw '" + actual + "'"); - if (message !== void 0 && actual.message !== message) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw '" + message + "', but threw '" + - actual.message + "'"); -}; - -function assertEqualsAsync(expected, run, msg) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (hadError) throw actual; - - assertTrue( - hadValue, "Expected '" + run.toString() + "' to produce a value"); - - assertEquals(expected, actual, msg); -}; - -assertEquals(undefined, this.AsyncFunction); -let AsyncFunction = (async function() {}).constructor; - -// The AsyncFunction Constructor is the %AsyncFunction% intrinsic object and -// is a subclass of Function. -// (https://tc39.github.io/ecmascript-asyncawait/#async-function-constructor) -assertEquals(Object.getPrototypeOf(AsyncFunction), Function); -assertEquals(Object.getPrototypeOf(AsyncFunction.prototype), - Function.prototype); -assertTrue(async function() {} instanceof Function); - - -// Let functionPrototype be the intrinsic object %AsyncFunctionPrototype%. -async function asyncFunctionForProto() {} -assertEquals(AsyncFunction.prototype, - Object.getPrototypeOf(asyncFunctionForProto)); -assertEquals(AsyncFunction.prototype, - Object.getPrototypeOf(async function() {})); -assertEquals(AsyncFunction.prototype, Object.getPrototypeOf(async () => {})); -assertEquals(AsyncFunction.prototype, - Object.getPrototypeOf({ async method() {} }.method)); -assertEquals(AsyncFunction.prototype, Object.getPrototypeOf(AsyncFunction())); -assertEquals(AsyncFunction.prototype, - Object.getPrototypeOf(new AsyncFunction())); - -// AsyncFunctionCreate does not produce an object with a Prototype -assertEquals(undefined, asyncFunctionForProto.prototype); -assertEquals(false, asyncFunctionForProto.hasOwnProperty("prototype")); -assertEquals(undefined, (async function() {}).prototype); -assertEquals(false, (async function() {}).hasOwnProperty("prototype")); -assertEquals(undefined, (async() => {}).prototype); -assertEquals(false, (async() => {}).hasOwnProperty("prototype")); -assertEquals(undefined, ({ async method() {} }).method.prototype); -assertEquals(false, ({ async method() {} }).method.hasOwnProperty("prototype")); -assertEquals(undefined, AsyncFunction().prototype); -assertEquals(false, AsyncFunction().hasOwnProperty("prototype")); -assertEquals(undefined, (new AsyncFunction()).prototype); -assertEquals(false, (new AsyncFunction()).hasOwnProperty("prototype")); - -assertEquals(1, async function(a) { await 1; }.length); -assertEquals(2, async function(a, b) { await 1; }.length); -assertEquals(1, async function(a, b = 2) { await 1; }.length); -assertEquals(2, async function(a, b, ...c) { await 1; }.length); - -assertEquals(1, (async(a) => await 1).length); -assertEquals(2, (async(a, b) => await 1).length); -assertEquals(1, (async(a, b = 2) => await 1).length); -assertEquals(2, (async(a, b, ...c) => await 1).length); - -assertEquals(1, ({ async f(a) { await 1; } }).f.length); -assertEquals(2, ({ async f(a, b) { await 1; } }).f.length); -assertEquals(1, ({ async f(a, b = 2) { await 1; } }).f.length); -assertEquals(2, ({ async f(a, b, ...c) { await 1; } }).f.length); - -assertEquals(1, AsyncFunction("a", "await 1").length); -assertEquals(2, AsyncFunction("a", "b", "await 1").length); -assertEquals(1, AsyncFunction("a", "b = 2", "await 1").length); -assertEquals(2, AsyncFunction("a", "b", "...c", "await 1").length); - -assertEquals(1, (new AsyncFunction("a", "await 1")).length); -assertEquals(2, (new AsyncFunction("a", "b", "await 1")).length); -assertEquals(1, (new AsyncFunction("a", "b = 2", "await 1")).length); -assertEquals(2, (new AsyncFunction("a", "b", "...c", "await 1")).length); - -// AsyncFunction.prototype[ @@toStringTag ] -var descriptor = - Object.getOwnPropertyDescriptor(AsyncFunction.prototype, - Symbol.toStringTag); -assertEquals("AsyncFunction", descriptor.value); -assertEquals(false, descriptor.enumerable); -assertEquals(false, descriptor.writable); -assertEquals(true, descriptor.configurable); - -assertEquals(1, AsyncFunction.length); - -// Let F be ! FunctionAllocate(functionPrototype, Strict, "non-constructor") -async function asyncNonConstructorDecl() {} -assertThrows(() => new asyncNonConstructorDecl(), TypeError); -assertThrows(() => asyncNonConstructorDecl.caller, TypeError); -assertThrows(() => asyncNonConstructorDecl.arguments, TypeError); - -assertThrows(() => new (async function() {}), TypeError); -assertThrows(() => (async function() {}).caller, TypeError); -assertThrows(() => (async function() {}).arguments, TypeError); - -assertThrows( - () => new ({ async nonConstructor() {} }).nonConstructor(), TypeError); -assertThrows( - () => ({ async nonConstructor() {} }).nonConstructor.caller, TypeError); -assertThrows( - () => ({ async nonConstructor() {} }).nonConstructor.arguments, TypeError); - -assertThrows(() => new (() => "not a constructor!"), TypeError); -assertThrows(() => (() => 1).caller, TypeError); -assertThrows(() => (() => 1).arguments, TypeError); - -assertThrows(() => new (AsyncFunction()), TypeError); -assertThrows(() => AsyncFunction().caller, TypeError); -assertThrows(() => AsyncFunction().arguments, TypeError); - -assertThrows(() => new (new AsyncFunction()), TypeError); -assertThrows(() => (new AsyncFunction()).caller, TypeError); -assertThrows(() => (new AsyncFunction()).arguments, TypeError); - -// Normal completion -async function asyncDecl() { return "test"; } -assertEqualsAsync("test", asyncDecl); -assertEqualsAsync("test2", async function() { return "test2"; }); -assertEqualsAsync("test3", async () => "test3"); -assertEqualsAsync("test4", () => ({ async f() { return "test4"; } }).f()); -assertEqualsAsync("test5", () => AsyncFunction("no", "return 'test' + no;")(5)); -assertEqualsAsync("test6", - () => (new AsyncFunction("no", "return 'test' + no;"))(6)); - -class MyError extends Error {}; - -// Throw completion -async function asyncDeclThrower(e) { throw new MyError(e); } -assertThrowsAsync(() => asyncDeclThrower("boom!"), MyError, "boom!"); -assertThrowsAsync( - () => (async function(e) { throw new MyError(e); })("boom!!!"), - MyError, "boom!!!"); -assertThrowsAsync( - () => (async e => { throw new MyError(e) })("boom!!"), MyError, "boom!!"); -assertThrowsAsync( - () => ({ async thrower(e) { throw new MyError(e); } }).thrower("boom!1!"), - MyError, "boom!1!"); -assertThrowsAsync( - () => AsyncFunction("msg", "throw new MyError(msg)")("boom!2!!"), - MyError, "boom!2!!"); -assertThrowsAsync( - () => (new AsyncFunction("msg", "throw new MyError(msg)"))("boom!2!!!"), - MyError, "boom!2!!!"); - -function resolveLater(value) { return Promise.resolve(value); } -function rejectLater(error) { return Promise.reject(error); } - -// Resume after Normal completion -var log = []; -async function resumeAfterNormal(value) { - log.push("start:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - return value + 1; -} - -assertEqualsAsync(4, () => resumeAfterNormal(1)); -assertEquals("start:1 resume:2 resume:3", log.join(" ")); - -var O = { - async resumeAfterNormal(value) { - log.push("start:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - return value + 1; - } -}; -log = []; -assertEqualsAsync(5, () => O.resumeAfterNormal(2)); -assertEquals("start:2 resume:3 resume:4", log.join(" ")); - -var resumeAfterNormalArrow = async (value) => { - log.push("start:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - return value + 1; -}; -log = []; -assertEqualsAsync(6, () => resumeAfterNormalArrow(3)); -assertEquals("start:3 resume:4 resume:5", log.join(" ")); - -var resumeAfterNormalEval = AsyncFunction("value", ` - log.push("start:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - return value + 1;`); -log = []; -assertEqualsAsync(7, () => resumeAfterNormalEval(4)); -assertEquals("start:4 resume:5 resume:6", log.join(" ")); - -var resumeAfterNormalNewEval = new AsyncFunction("value", ` - log.push("start:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - value = await resolveLater(value + 1); - log.push("resume:" + value); - return value + 1;`); -log = []; -assertEqualsAsync(8, () => resumeAfterNormalNewEval(5)); -assertEquals("start:5 resume:6 resume:7", log.join(" ")); - -// Resume after Throw completion -async function resumeAfterThrow(value) { - log.push("start:" + value); - try { - value = await rejectLater("throw1"); - } catch (e) { - log.push("resume:" + e); - } - try { - value = await rejectLater("throw2"); - } catch (e) { - log.push("resume:" + e); - } - return value + 1; -} - -log = []; -assertEqualsAsync(2, () => resumeAfterThrow(1)); -assertEquals("start:1 resume:throw1 resume:throw2", log.join(" ")); - -var O = { - async resumeAfterThrow(value) { - log.push("start:" + value); - try { - value = await rejectLater("throw1"); - } catch (e) { - log.push("resume:" + e); - } - try { - value = await rejectLater("throw2"); - } catch (e) { - log.push("resume:" + e); - } - return value + 1; - } -} -log = []; -assertEqualsAsync(3, () => O.resumeAfterThrow(2)); -assertEquals("start:2 resume:throw1 resume:throw2", log.join(" ")); - -var resumeAfterThrowArrow = async (value) => { - log.push("start:" + value); - try { - value = await rejectLater("throw1"); - } catch (e) { - log.push("resume:" + e); - } - try { - value = await rejectLater("throw2"); - } catch (e) { - log.push("resume:" + e); - } - return value + 1; -}; - -log = []; - -assertEqualsAsync(4, () => resumeAfterThrowArrow(3)); -assertEquals("start:3 resume:throw1 resume:throw2", log.join(" ")); - -var resumeAfterThrowEval = AsyncFunction("value", ` - log.push("start:" + value); - try { - value = await rejectLater("throw1"); - } catch (e) { - log.push("resume:" + e); - } - try { - value = await rejectLater("throw2"); - } catch (e) { - log.push("resume:" + e); - } - return value + 1;`); -log = []; -assertEqualsAsync(5, () => resumeAfterThrowEval(4)); -assertEquals("start:4 resume:throw1 resume:throw2", log.join(" ")); - -var resumeAfterThrowNewEval = new AsyncFunction("value", ` - log.push("start:" + value); - try { - value = await rejectLater("throw1"); - } catch (e) { - log.push("resume:" + e); - } - try { - value = await rejectLater("throw2"); - } catch (e) { - log.push("resume:" + e); - } - return value + 1;`); -log = []; -assertEqualsAsync(6, () => resumeAfterThrowNewEval(5)); -assertEquals("start:5 resume:throw1 resume:throw2", log.join(" ")); - -async function foo() {} -assertEquals("async function foo() {}", foo.toString()); -assertEquals("async function () {}", async function () {}.toString()); -assertEquals("async x => x", (async x => x).toString()); -assertEquals("async x => { return x }", (async x => { return x }).toString()); -class AsyncMethod { async foo() { } } -assertEquals("async foo() { }", - Function.prototype.toString.call(AsyncMethod.prototype.foo)); -assertEquals("async foo() { }", - Function.prototype.toString.call({async foo() { }}.foo)); - -// Async functions are not constructible -assertThrows(() => class extends (async function() {}) {}, TypeError); - -// Regress v8:5148 -assertEqualsAsync("1", () => (async({ a = NaN }) => a)({ a: "1" })); -assertEqualsAsync( - "10", () => (async(foo, { a = NaN }) => foo + a)("1", { a: "0" })); -assertEqualsAsync("2", () => (async({ a = "2" }) => a)({ a: undefined })); -assertEqualsAsync( - "20", () => (async(foo, { a = "0" }) => foo + a)("2", { a: undefined })); -assertThrows(() => eval("async({ foo = 1 })"), SyntaxError); -assertThrows(() => eval("async(a, { foo = 1 })"), SyntaxError); - -// https://bugs.chromium.org/p/chromium/issues/detail?id=638019 -async function gaga() { - let i = 1; - while (i-- > 0) { await 42 } -} -assertDoesNotThrow(gaga); - - -{ - let log = []; - async function foo() { - try { - Promise.resolve().then(() => log.push("a")) - } finally { - log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["b", "a", "c"], log); -} - -{ - let log = []; - async function foo() { - try { - return Promise.resolve().then(() => log.push("a")) - } finally { - log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["b", "a", "c"], log); -} - -{ - let log = []; - async function foo() { - try { - return await Promise.resolve().then(() => log.push("a")) - } finally { - log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["a", "b", "c"], log); -} - - -{ - let log = []; - async function foo() { - try { - Promise.resolve().then().then(() => log.push("a")) - } finally { - log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["b", "c", "a"], log); -} - -{ - let log = []; - async function foo() { - try { - return Promise.resolve().then().then(() => log.push("a")) - } finally { - log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["b", "a", "c"], log); -} - -{ - let log = []; - async function foo() { - try { - return await Promise.resolve().then().then(() => log.push("a")) - } finally { - log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["a", "b", "c"], log); -} - - -{ - let log = []; - async function foo() { - try { - Promise.resolve().then(() => log.push("a")) - } finally { - return log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["b", "a", "c"], log); -} - -{ - let log = []; - async function foo() { - try { - return Promise.resolve().then(() => log.push("a")) - } finally { - return log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["b", "a", "c"], log); -} - -{ - let log = []; - async function foo() { - try { - return await Promise.resolve().then(() => log.push("a")) - } finally { - return log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["a", "b", "c"], log); -} - - -{ - let log = []; - async function foo() { - try { - Promise.resolve().then().then(() => log.push("a")) - } finally { - return log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["b", "c", "a"], log); -} - -{ - let log = []; - async function foo() { - try { - return Promise.resolve().then().then(() => log.push("a")) - } finally { - return log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["b", "c", "a"], log); -} - -{ - let log = []; - async function foo() { - try { - return await Promise.resolve().then().then(() => log.push("a")) - } finally { - return log.push("b"); - } - } - foo().then(() => log.push("c")); - %PerformMicrotaskCheckpoint(); - assertEquals(["a", "b", "c"], log); -} - -{ - function f1() { - var x; - with ({get await() { return [42] }}) { - x = await - [0]; - }; - return x; - } - - assertEquals(42, f1()); - async function f2() { - var x; - with ({get await() { return [42] }}) { - x = await - [0]; - }; - return x; - } - - var ans; - f2().then(x => ans = x).catch(e => ans = e); - %PerformMicrotaskCheckpoint(); - assertEquals([0], ans); -} - -{ - function f1() { - var x, y; - with ({get await() { return [42] }}) { - x = await - y = 1 - }; - return y; - } - - assertEquals(1, f1()); -} diff --git a/implementation-contributed/v8/mjsunit/es8/async-await-interleaved.js b/implementation-contributed/v8/mjsunit/es8/async-await-interleaved.js deleted file mode 100644 index edc5a420acd..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-await-interleaved.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check for correct interleaving of Promises and async/await -(function () { - const iterations = 10; - let promiseCounter = iterations; - let awaitCounter = 0; - - async function check(v) { - awaitCounter = v; - // The following checks ensure that "await" takes 3 ticks on the - // microtask queue. Note: this will change in the future - if (awaitCounter === 0) { - assertEquals(iterations, promiseCounter); - } else if (awaitCounter <= Math.floor(iterations / 3)) { - assertEquals(iterations - awaitCounter * 3, promiseCounter); - } else { - assertEquals(0, promiseCounter); - } - } - - async function f() { - for (let i = 0; i < iterations; i++) { - await check(i); - } - return 0; - } - - function countdown(v) { - promiseCounter = v; - if (v > 0) Promise.resolve(v - 1).then(countdown); - } - - countdown(iterations); - f(); -})(); diff --git a/implementation-contributed/v8/mjsunit/es8/async-await-no-constructor.js b/implementation-contributed/v8/mjsunit/es8/async-await-no-constructor.js deleted file mode 100644 index 5e4780a6ef6..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-await-no-constructor.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -'use strict'; - -var resolved = Promise.resolve(); -var count = 0; - -Object.defineProperty(Promise.prototype, 'constructor', - { get() { count++; return Promise; } }) - -async function foo() { - await resolved; - return resolved; -} - -async function bar() { - throw 1; -} - -foo(); -bar(); -%PerformMicrotaskCheckpoint(); -assertEquals(2, count); diff --git a/implementation-contributed/v8/mjsunit/es8/async-await-resolve-new.js b/implementation-contributed/v8/mjsunit/es8/async-await-resolve-new.js deleted file mode 100644 index f64a35a14fb..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-await-resolve-new.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var resolved = Promise.resolve(); - -assertTrue((async() => resolved)() !== resolved); diff --git a/implementation-contributed/v8/mjsunit/es8/async-await-species.js b/implementation-contributed/v8/mjsunit/es8/async-await-species.js deleted file mode 100644 index 3fc46fd230f..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-await-species.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertEqualsAsync(expected, run, msg) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (hadError) throw actual; - - assertTrue( - hadValue, "Expected '" + run.toString() + "' to produce a value"); - - assertEquals(expected, actual, msg); -}; - -// Rename a function so that it can help omit things from stack trace. -function test(fn) { - return Object.defineProperty(fn, "name", { - enumerable: false, - configurable: true, - value: "@" + fn.name, - writable: false - }); -} - -function getStack(error) { - var stack = error.stack.split('\n'). - filter(function(line) { - return /^\s*at @?[a-zA-Z0-9_]/.test(line); - }). - map(line => - line.replace(/^\s*at (@?(?:new )?[a-zA-Z0-9_\.\[\]]+)(.*)/, "$1")); - - // remove `Promise.then()` invocation by assertEqualsAsync() - if (stack[2] === "assertEqualsAsync") return []; - - return stack.reverse(); -} - -var log = []; -class FakePromise extends Promise { - constructor(executor) { - var stack = getStack(new Error("Getting Callstack")); - if (stack.length) { - var first = -1; - for (var i = 0; i < stack.length; ++i) { - if (stack[i][0] === '@') { - first = i; - break; - } - } - while (first > 0) stack.shift(), --first; - if (stack.length) { - log.push("@@Species: [" + stack.join(" > ") + "]"); - } - } - return new Promise(executor); - } -}; - -Object.defineProperty(Promise, Symbol.species, { - value: FakePromise, - configurable: true, - enumerable: false, - writable: false -}); - -// Internal `AsyncFunctionAwait` only --- no @@species invocations. -async function asyncFn() { return await "foo"; } -assertEqualsAsync("foo", test(function testInternalOnly() { return asyncFn(); }, - "should not call Promise[@@Species]")); -assertEquals([], log); - -log.length = 0; -assertEqualsAsync( - "foo", - test(function testThenOnReturnedPromise() { - return asyncFn().then(x => (log.push("Then: " + x), x)); - }), - "should call Promise[@@Species] after non-internal Then"); -assertEquals([ - "@@Species: [@testThenOnReturnedPromise > Promise.then > new FakePromise]", - "Then: foo" -], log); diff --git a/implementation-contributed/v8/mjsunit/es8/async-destructuring.js b/implementation-contributed/v8/mjsunit/es8/async-destructuring.js deleted file mode 100644 index d5e90eb0576..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-destructuring.js +++ /dev/null @@ -1,516 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertThrowsAsync(run, errorType, message) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (!hadError) { - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but did not throw."); - } - if (!(actual instanceof errorType)) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but threw '" + actual + "'"); - if (message !== void 0 && actual.message !== message) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw '" + message + "', but threw '" + - actual.message + "'"); -}; - -function assertEqualsAsync(expected, run, msg) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (hadError) throw actual; - - assertTrue( - hadValue, "Expected '" + run.toString() + "' to produce a value"); - - assertEquals(expected, actual, msg); -}; - -(function TestDefaultEvaluationOrder() { - var y = 0; - var z = 0; - var w = 0; - async function f1(x = (y = 1)) { z = 1; await undefined; w = 1; }; - assertEquals(0, y); - assertEquals(0, z); - assertEquals(0, w); - f1(); - assertEquals(1, y); - assertEquals(1, z); - assertEquals(0, w); - %PerformMicrotaskCheckpoint(); - assertEquals(1, y); - assertEquals(1, z); - assertEquals(1, w); -})(); - -(function TestShadowingOfParameters() { - async function f1({x}) { var x = 2; return x } - assertEqualsAsync(2, () => f1({x: 1})); - async function f2({x}) { { var x = 2; } return x; } - assertEqualsAsync(2, () => f2({x: 1})); - async function f3({x}) { var y = x; var x = 2; return y; } - assertEqualsAsync(1, () => f3({x: 1})); - async function f4({x}) { { var y = x; var x = 2; } return y; } - assertEqualsAsync(1, () => f4({x: 1})); - async function f5({x}, g = () => x) { var x = 2; return g(); } - assertEqualsAsync(1, () => f5({x: 1})); - async function f6({x}, g = () => x) { { var x = 2; } return g(); } - assertEqualsAsync(1, () => f6({x: 1})); - async function f7({x}) { var g = () => x; var x = 2; return g(); } - assertEqualsAsync(2, () => f7({x: 1})); - async function f8({x}) { { var g = () => x; var x = 2; } return g(); } - assertEqualsAsync(2, () => f8({x: 1})); - async function f9({x}, g = () => eval("x")) { var x = 2; return g(); } - assertEqualsAsync(1, () => f9({x: 1})); - - async function f10({x}, y) { var y; return y } - assertEqualsAsync(2, () => f10({x: 6}, 2)); - async function f11({x}, y) { var z = y; var y = 2; return z; } - assertEqualsAsync(1, () => f11({x: 6}, 1)); - async function f12(y, g = () => y) { var y = 2; return g(); } - assertEqualsAsync(1, () => f12(1)); - async function f13({x}, y, [z], v) { var x, y, z; return x*y*z*v } - assertEqualsAsync(210, () => f13({x: 2}, 3, [5], 7)); - - async function f20({x}) { function x() { return 2 }; return x(); } - assertEqualsAsync(2, () => f20({x: 1})); - // Annex B 3.3 function hoisting is blocked by the conflicting x declaration - async function f21({x}) { { function x() { return 2 } } return x; } - assertEqualsAsync(1, () => f21({x: 1})); - - var g1 = async ({x}) => { var x = 2; return x }; - assertEqualsAsync(2, () => g1({x: 1})); - var g2 = async ({x}) => { { var x = 2; } return x; }; - assertEqualsAsync(2, () => g2({x: 1})); - var g3 = async ({x}) => { var y = x; var x = 2; return y; }; - assertEqualsAsync(1, () => g3({x: 1})); - var g4 = async ({x}) => { { var y = x; var x = 2; } return y; }; - assertEqualsAsync(1, () => g4({x: 1})); - var g5 = async ({x}, g = () => x) => { var x = 2; return g(); }; - assertEqualsAsync(1, () => g5({x: 1})); - var g6 = async ({x}, g = () => x) => { { var x = 2; } return g(); }; - assertEqualsAsync(1, () => g6({x: 1})); - var g7 = async ({x}) => { var g = () => x; var x = 2; return g(); }; - assertEqualsAsync(2, () => g7({x: 1})); - var g8 = async ({x}) => { { var g = () => x; var x = 2; } return g(); }; - assertEqualsAsync(2, () => g8({x: 1})); - var g9 = async ({x}, g = () => eval("x")) => { var x = 2; return g(); }; - assertEqualsAsync(1, () => g9({x: 1})); - - var g10 = async ({x}, y) => { var y; return y }; - assertEqualsAsync(2, () => g10({x: 6}, 2)); - var g11 = async ({x}, y) => { var z = y; var y = 2; return z; }; - assertEqualsAsync(1, () => g11({x: 6}, 1)); - var g12 = async (y, g = () => y) => { var y = 2; return g(); }; - assertEqualsAsync(1, () => g12(1)); - var g13 = async ({x}, y, [z], v) => { var x, y, z; return x*y*z*v }; - assertEqualsAsync(210, () => g13({x: 2}, 3, [5], 7)); - - var g20 = async ({x}) => { function x() { return 2 }; return x(); } - assertEqualsAsync(2, () => g20({x: 1})); - var g21 = async ({x}) => { { function x() { return 2 } } return x(); } - assertThrowsAsync(() => g21({x: 1}), TypeError); - - // These errors are not recognized in lazy parsing; see mjsunit/bugs/bug-2728.js - assertThrows("'use strict'; (async function f(x) { let x = 0; })()", SyntaxError); - assertThrows("'use strict'; (async function f({x}) { let x = 0; })()", SyntaxError); - assertThrows("'use strict'; (async function f(x) { const x = 0; })()", SyntaxError); - assertThrows("'use strict'; (async function f({x}) { const x = 0; })()", SyntaxError); - - assertThrows("'use strict'; let g = async (x) => { let x = 0; }", SyntaxError); - assertThrows("'use strict'; let g = async ({x}) => { let x = 0; }", SyntaxError); - assertThrows("'use strict'; let g = async (x) => { const x = 0; }", SyntaxError); - assertThrows("'use strict'; let g = async ({x}) => { const x = 0; }", SyntaxError); -}()); - -(function TestDefaults() { - async function f1(x = 1) { return x } - assertEqualsAsync(1, () => f1()); - assertEqualsAsync(1, () => f1(undefined)); - assertEqualsAsync(2, () => f1(2)); - assertEqualsAsync(null, () => f1(null)); - - async function f2(x, y = x) { return x + y; } - assertEqualsAsync(8, () => f2(4)); - assertEqualsAsync(8, () => f2(4, undefined)); - assertEqualsAsync(6, () => f2(4, 2)); - - async function f3(x = 1, y) { return x + y; } - assertEqualsAsync(8, () => f3(5, 3)); - assertEqualsAsync(3, () => f3(undefined, 2)); - assertEqualsAsync(6, () => f3(4, 2)); - - async function f4(x = () => 1) { return x() } - assertEqualsAsync(1, () => f4()); - assertEqualsAsync(1, () => f4(undefined)); - assertEqualsAsync(2, () => f4(() => 2)); - assertThrowsAsync(() => f4(null), TypeError); - - async function f5(x, y = () => x) { return x + y(); } - assertEqualsAsync(8, () => f5(4)); - assertEqualsAsync(8, () => f5(4, undefined)); - assertEqualsAsync(6, () => f5(4, () => 2)); - - async function f6(x = {a: 1, m() { return 2 }}) { return x.a + x.m(); } - assertEqualsAsync(3, () => f6()); - assertEqualsAsync(3, () => f6(undefined)); - assertEqualsAsync(5, () => f6({a: 2, m() { return 3 }})); - - var g1 = async (x = 1) => { return x }; - assertEqualsAsync(1, () => g1()); - assertEqualsAsync(1, () => g1(undefined)); - assertEqualsAsync(2, () => g1(2)); - assertEqualsAsync(null, () => g1(null)); - - var g2 = async (x, y = x) => { return x + y; }; - assertEqualsAsync(8, () => g2(4)); - assertEqualsAsync(8, () => g2(4, undefined)); - assertEqualsAsync(6, () => g2(4, 2)); - - var g3 = async (x = 1, y) => { return x + y; }; - assertEqualsAsync(8, () => g3(5, 3)); - assertEqualsAsync(3, () => g3(undefined, 2)); - assertEqualsAsync(6, () => g3(4, 2)); - - var g4 = async (x = () => 1) => { return x() }; - assertEqualsAsync(1, () => g4()); - assertEqualsAsync(1, () => g4(undefined)); - assertEqualsAsync(2, () => g4(() => 2)); - assertThrowsAsync(() => g4(null), TypeError); - - var g5 = async (x, y = () => x) => { return x + y(); }; - assertEqualsAsync(8, () => g5(4)); - assertEqualsAsync(8, () => g5(4, undefined)); - assertEqualsAsync(6, () => g5(4, () => 2)); - - var g6 = async (x = {a: 1, m() { return 2 }}) => { return x.a + x.m(); }; - assertEqualsAsync(3, () => g6()); - assertEqualsAsync(3, () => g6(undefined)); - assertEqualsAsync(5, () => g6({a: 2, m() { return 3 }})); -}()); - - -(function TestEvalInParameters() { - async function f1(x = eval(0)) { return x } - assertEqualsAsync(0, f1); - async function f2(x = () => eval(1)) { return x() } - assertEqualsAsync(1, f2); -})(); - - -(function TestParameterScopingSloppy() { - var x = 1; - - async function f1(a = x) { var x = 2; return a; } - assertEqualsAsync(1, f1); - async function f2(a = x) { function x() {}; return a; } - assertEqualsAsync(1, () => f2()); - async function f3(a = eval("x")) { var x; return a; } - assertEqualsAsync(1, () => f3()); - async function f31(a = eval("'use strict'; x")) { var x; return a; } - assertEqualsAsync(1, () => f31()); - async function f4(a = function() { return x }) { var x; return a(); } - assertEqualsAsync(1, () => f4()); - async function f5(a = () => x) { var x; return a(); } - assertEqualsAsync(1, () => f5()); - async function f6(a = () => eval("x")) { var x; return a(); } - assertEqualsAsync(1, () => f6()); - async function f61(a = () => { 'use strict'; return eval("x") }) { var x; return a(); } - assertEqualsAsync(1, () => f61()); - async function f62(a = () => eval("'use strict'; x")) { var x; return a(); } - assertEqualsAsync(1, () => f62()); - - var g1 = async (a = x) => { var x = 2; return a; }; - assertEqualsAsync(1, () => g1()); - var g2 = async (a = x) => { function x() {}; return a; }; - assertEqualsAsync(1, () => g2()); - var g3 = async (a = eval("x")) => { var x; return a; }; - assertEqualsAsync(1, g3); - var g31 = async (a = eval("'use strict'; x")) => { var x; return a; }; - assertEqualsAsync(1, () => g31()); - var g4 = async (a = function() { return x }) => { var x; return a(); }; - assertEqualsAsync(1, () => g4()); - var g5 = async (a = () => x) => { var x; return a(); }; - assertEqualsAsync(1, () => g5()); - var g6 = async (a = () => eval("x")) => { var x; return a(); }; - assertEqualsAsync(1, () => g6()); - var g61 = async (a = () => { 'use strict'; return eval("x") }) => { var x; return a(); }; - assertEqualsAsync(1, () => g61()); - var g62 = async (a = () => eval("'use strict'; x")) => { var x; return a(); }; - assertEqualsAsync(1, () => g62()); - - var f11 = async function f(x = f) { var f; return x; } - assertEqualsAsync(f11, f11); - var f12 = async function f(x = f) { function f() {}; return x; } - assertEqualsAsync(f12, f12); - var f13 = async function f(f = 7, x = f) { return x; } - assertEqualsAsync(7, f13); - - var o1 = {f: async function(x = this) { return x; }}; - assertEqualsAsync(o1, () => o1.f()); - assertEqualsAsync(1, () => o1.f(1)); -})(); - -(function TestParameterScopingStrict() { - "use strict"; - var x = 1; - - async function f1(a = x) { let x = 2; return a; } - assertEqualsAsync(1, () => f1()); - async function f2(a = x) { const x = 2; return a; } - assertEqualsAsync(1, () => f2()); - async function f3(a = x) { function x() {}; return a; } - assertEqualsAsync(1, () => f3()); - async function f4(a = eval("x")) { var x; return a; } - assertEqualsAsync(1, () => f4()); - async function f5(a = () => eval("x")) { var x; return a(); } - assertEqualsAsync(1, () => f5()); - - var g1 = async (a = x) => { let x = 2; return a; }; - assertEqualsAsync(1, () => g1()); - var g2 = async (a = x) => { const x = 2; return a; }; - assertEqualsAsync(1, () => g2()); - var g3 = async (a = x) => { function x() {}; return a; }; - assertEqualsAsync(1, () => g3()); - var g4 = async (a = eval("x")) => { var x; return a; }; - assertEqualsAsync(1, () => g4()); - var g5 = async (a = () => eval("x")) => { var x; return a(); }; - assertEqualsAsync(1, () => g5()); - - var f11 = async function f(x = f) { let f; return x; } - assertEqualsAsync(f11, f11); - var f12 = async function f(x = f) { const f = 0; return x; } - assertEqualsAsync(f12, f12); - var f13 = async function f(x = f) { function f() {}; return x; } - assertEqualsAsync(f13, f13); -})(); - -(function TestSloppyEvalScoping() { - var x = 1; - - async function f1(y = eval("var x = 2")) { with ({}) { return x; } } - assertEqualsAsync(1, () => f1()); - async function f2(y = eval("var x = 2"), z = x) { return z; } - assertEqualsAsync(1, () => f2()); - assertEqualsAsync(1, () => f2(0)); - async function f3(y = eval("var x = 2"), z = eval("x")) { return z; } - assertEqualsAsync(1, () => f3()); - assertEqualsAsync(1, () => f3(0)); - async function f8(y = (eval("var x = 2"), x)) { return y; } - assertEqualsAsync(2, () => f8()); - assertEqualsAsync(0, () => f8(0)); - - async function f11(z = eval("var y = 2")) { return y; } - assertThrowsAsync(f11, ReferenceError); - async function f12(z = eval("var y = 2"), b = y) {} - assertThrowsAsync(f12, ReferenceError); - async function f13(z = eval("var y = 2"), b = eval("y")) {} - assertThrowsAsync(f13, ReferenceError); - - async function f21(f = () => x) { eval("var x = 2"); return f() } - assertEqualsAsync(1, () => f21()); - assertEqualsAsync(3, () => f21(() => 3)); - async function f22(f = () => eval("x")) { eval("var x = 2"); return f() } - assertEqualsAsync(1, () => f22()); - assertEqualsAsync(3, () => f22(() => 3)); - - var g1 = async (y = eval("var x = 2")) => { with ({}) { return x; } }; - assertEqualsAsync(1, () => g1()); - var g2 = async (y = eval("var x = 2"), z = x) => { return z; }; - assertEqualsAsync(1, () => g2()); - assertEqualsAsync(1, () => g2(0)); - var g3 = async (y = eval("var x = 2"), z = eval("x")) => { return z; }; - assertEqualsAsync(1, () => g3()); - assertEqualsAsync(1, () => g3(0)); - var g8 = async (y = (eval("var x = 2"), x)) => { return y; }; - assertEqualsAsync(2, () => g8()); - assertEqualsAsync(0, () => g8(0)); - - var g11 = async (z = eval("var y = 2")) => { return y; }; - assertThrowsAsync(g11, ReferenceError); - var g12 = async (z = eval("var y = 2"), b = y) => {}; - assertThrowsAsync(g12, ReferenceError); - var g13 = async (z = eval("var y = 2"), b = eval("y")) => {}; - assertThrowsAsync(g13, ReferenceError); - - var g21 = async (f = () => x) => { eval("var x = 2"); return f() }; - assertEqualsAsync(1, () => g21()); - assertEqualsAsync(3, () => g21(() => 3)); - var g22 = async (f = () => eval("x")) => { eval("var x = 2"); return f() }; - assertEqualsAsync(1, () => g22()); - assertEqualsAsync(3, () => g22(() => 3)); -})(); - - -(function TestStrictEvalScoping() { - 'use strict'; - var x = 1; - - async function f1(y = eval("var x = 2")) { return x; } - assertEqualsAsync(1, () => f1()); - async function f2(y = eval("var x = 2"), z = x) { return z; } - assertEqualsAsync(1, () => f2()); - assertEqualsAsync(1, () => f2(0)); - async function f3(y = eval("var x = 2"), z = eval("x")) { return z; } - assertEqualsAsync(1, () => f3()); - assertEqualsAsync(1, () => f3(0)); - async function f8(y = (eval("var x = 2"), x)) { return y; } - assertEqualsAsync(1, () => f8()); - assertEqualsAsync(0, () => f8(0)); - - async function f11(z = eval("var y = 2")) { return y; } - assertThrowsAsync(f11, ReferenceError); - async function f12(z = eval("var y = 2"), b = y) {} - assertThrowsAsync(f12, ReferenceError); - async function f13(z = eval("var y = 2"), b = eval("y")) {} - assertThrowsAsync(f13, ReferenceError); - - async function f21(f = () => x) { eval("var x = 2"); return f() } - assertEqualsAsync(1, () => f21()); - assertEqualsAsync(3, () => f21(() => 3)); - async function f22(f = () => eval("x")) { eval("var x = 2"); return f() } - assertEqualsAsync(1, () => f22()); - assertEqualsAsync(3, () => f22(() => 3)); -})(); - -(function TestParameterTDZSloppy() { - async function f1(a = x, x) { return a } - assertThrowsAsync(() => f1(undefined, 4), ReferenceError); - assertEqualsAsync(4, () => f1(4, 5)); - async function f2(a = eval("x"), x) { return a } - assertThrowsAsync(() => f2(undefined, 4), ReferenceError); - assertEqualsAsync(4, () => f2(4, 5)); - async function f3(a = eval("'use strict'; x"), x) { return a } - assertThrowsAsync(() => f3(undefined, 4), ReferenceError); - assertEqualsAsync(4, () => f3(4, 5)); - async function f4(a = () => x, x) { return a() } - assertEqualsAsync(4, () => f4(() => 4, 5)); - async function f5(a = () => eval("x"), x) { return a() } - assertEqualsAsync(4, () => f5(() => 4, 5)); - async function f6(a = () => eval("'use strict'; x"), x) { return a() } - assertEqualsAsync(4, () => f6(() => 4, 5)); - - async function f11(a = x, x = 2) { return a } - assertThrowsAsync(() => f11(), ReferenceError); - assertThrowsAsync(() => f11(undefined), ReferenceError); - assertThrowsAsync(() => f11(undefined, 4), ReferenceError); - assertEqualsAsync(4, () => f1(4, 5)); - async function f12(a = eval("x"), x = 2) { return a } - assertThrowsAsync(() => f12(), ReferenceError); - assertThrowsAsync(() => f12(undefined), ReferenceError); - assertThrowsAsync(() => f12(undefined, 4), ReferenceError); - assertEqualsAsync(4, () => f12(4, 5)); - async function f13(a = eval("'use strict'; x"), x = 2) { return a } - assertThrowsAsync(() => f13(), ReferenceError); - assertThrowsAsync(() => f13(undefined), ReferenceError); - assertThrowsAsync(() => f13(undefined, 4), ReferenceError); - assertEqualsAsync(4, () => f13(4, 5)); - - async function f21(x = function() { return a }, ...a) { return x()[0] } - assertEqualsAsync(4, () => f21(undefined, 4)); - async function f22(x = () => a, ...a) { return x()[0] } - assertEqualsAsync(4, () => f22(undefined, 4)); - async function f23(x = () => eval("a"), ...a) { return x()[0] } - assertEqualsAsync(4, () => f23(undefined, 4)); - async function f24(x = () => {'use strict'; return eval("a") }, ...a) { - return x()[0] - } - assertEqualsAsync(4, () => f24(undefined, 4)); - async function f25(x = () => eval("'use strict'; a"), ...a) { return x()[0] } - assertEqualsAsync(4, () => f25(undefined, 4)); - - var g1 = async (x = function() { return a }, ...a) => { return x()[0] }; - assertEqualsAsync(4, () => g1(undefined, 4)); - var g2 = async (x = () => a, ...a) => { return x()[0] }; - assertEqualsAsync(4, () => g2(undefined, 4)); -})(); - -(function TestParameterTDZStrict() { - "use strict"; - - async function f1(a = eval("x"), x) { return a } - assertThrowsAsync(() => f1(undefined, 4), ReferenceError); - assertEqualsAsync(4, () => f1(4, 5)); - async function f2(a = () => eval("x"), x) { return a() } - assertEqualsAsync(4, () => f2(() => 4, 5)); - - async function f11(a = eval("x"), x = 2) { return a } - assertThrowsAsync(() => f11(), ReferenceError); - assertThrowsAsync(() => f11(undefined), ReferenceError); - assertThrowsAsync(() => f11(undefined, 4), ReferenceError); - assertEqualsAsync(4, () => f11(4, 5)); - - async function f21(x = () => eval("a"), ...a) { return x()[0] } - assertEqualsAsync(4, () => f21(undefined, 4)); -})(); - -(function TestArgumentsForNonSimpleParameters() { - async function f1(x = 900) { arguments[0] = 1; return x } - assertEqualsAsync(9, () => f1(9)); - assertEqualsAsync(900, () => f1()); - async function f2(x = 1001) { x = 2; return arguments[0] } - assertEqualsAsync(10, () => f2(10)); - assertEqualsAsync(undefined, () => f2()); -}()); - - -(function TestFunctionLength() { - assertEquals(0, (async function(x = 1) {}).length); - assertEquals(0, (async function(x = 1, ...a) {}).length); - assertEquals(1, (async function(x, y = 1) {}).length); - assertEquals(1, (async function(x, y = 1, ...a) {}).length); - assertEquals(2, (async function(x, y, z = 1) {}).length); - assertEquals(2, (async function(x, y, z = 1, ...a) {}).length); - assertEquals(1, (async function(x, y = 1, z) {}).length); - assertEquals(1, (async function(x, y = 1, z, ...a) {}).length); - assertEquals(1, (async function(x, y = 1, z, v = 2) {}).length); - assertEquals(1, (async function(x, y = 1, z, v = 2, ...a) {}).length); -})(); - -(function TestDirectiveThrows() { - "use strict"; - - assertThrows("(async function(x=1){'use strict';})", SyntaxError); - assertThrows("(async function(a, x=1){'use strict';})", SyntaxError); - assertThrows("(async function({x}){'use strict';})", SyntaxError); -})(); diff --git a/implementation-contributed/v8/mjsunit/es8/async-function-stacktrace.js b/implementation-contributed/v8/mjsunit/es8/async-function-stacktrace.js deleted file mode 100644 index e9358c26791..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-function-stacktrace.js +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --noasync-stack-traces - -async function test(func, funcs) { - try { - await func(); - throw new Error("Expected " + func.toString() + " to throw"); - } catch (e) { - var stack = e.stack.split('\n'). - slice(1). - map(line => line.trim()). - map(line => line.match(/at (?:(.*) )?.*$/)[1]). - filter(x => typeof x === 'string' && x.length); - - assertEquals(funcs, stack, `Unexpected stack trace ${e.stack}`); - } -} - -function thrower() { throw new Error("NOPE"); } -function reject() { return Promise.reject(new Error("NOPE")); } - -async function runTests() { - await test(async function a() { - throw new Error("FAIL"); - }, - ["a", "test", "runTests"]); - - await test(async function a2() { - await 1; - throw new Error("FAIL"); - }, ["a2"]); - - await test(async function a3() { - await 1; - try { await thrower(); } catch (e) { throw new Error("FAIL"); } - }, ["a3"]); - - await test(async function a4() { - await 1; - try { await reject(); } catch (e) { throw new Error("FAIL"); } - }, ["a4"]); - - await test({ async b() { - throw new Error("FAIL"); - }}.b, - ["b", "test", "runTests"]); - - await test({ async b2() { - await 1; - throw new Error("FAIL"); - }}.b2, ["b2"]); - - await test({ async b3() { - await 1; - try { await thrower(); } catch (e) { throw new Error("FAIL"); } - } }.b3, ["b3"]); - - await test({ async b4() { - await 1; - try { await reject(); } catch (e) { throw new Error("FAIL"); } - } }.b4, ["b4"]); - - await test((new class { async c() { - throw new Error("FAIL"); - } }).c, - ["c", "test", "runTests"]); - - await test((new class { async c2() { - await 1; - throw new Error("FAIL"); - } }).c2, ["c2"]); - - await test((new class { async c3() { - await 1; - try { await thrower(); } catch (e) { throw new Error("FAIL"); } - } }).c3, ["c3"]); - - await test((new class { async c4() { - await 1; - try { await reject(); } catch (e) { throw new Error("FAIL"); } - } }).c4, ["c4"]); - - await test(async x => { throw new Error("FAIL") }, - ["test", "runTests"]); - await test(async() => { throw new Error("FAIL") }, - ["test", "runTests"]); - await test(async(a) => { throw new Error("FAIL") }, - ["test", "runTests"]); - await test(async(a, b) => { throw new Error("FAIL") }, - ["test", "runTests"]); - - await test(async x => { await 1; throw new Error("FAIL") }, []); - await test(async() => { await 1; throw new Error("FAIL") }, []); - await test(async(a) => { await 1; throw new Error("FAIL") }, []); - await test(async(a, b) => { await 1; throw new Error("FAIL") }, []); - - await test(async x => { - await 1; - try { - await thrower(); - } catch (e) { - throw new Error("FAIL"); - } - }, []); - - await test(async() => { - await 1; - try { - await thrower(); - } catch (e) { - throw new Error("FAIL"); - } - }, []); - - await test(async(a) => { - await 1; - try { - await thrower(); - } catch (e) { - throw new Error("FAIL"); - } - }, []); - - await test(async(a, b) => { - await 1; - try { - await thrower(); - } catch (e) { - throw new Error("FAIL"); - } - }, []); - - await test(async x => { - await 1; - try { - await reject(); - } catch (e) { - throw new Error("FAIL"); - } - }, []); - - await test(async() => { - await 1; - try { - await reject(); - } catch (e) { - throw new Error("FAIL"); - } - }, []); - - await test(async(a) => { - await 1; - try { - await reject(); - } catch (e) { - throw new Error("FAIL"); - } - }, []); - - await test(async(a, b) => { - await 1; - try { - await reject(); - } catch (e) { - throw new Error("FAIL"); - } - }, []); -} - -runTests().catch(e => { - print(e); - quit(1); -}); diff --git a/implementation-contributed/v8/mjsunit/es8/async-function-try-finally.js b/implementation-contributed/v8/mjsunit/es8/async-function-try-finally.js deleted file mode 100644 index 43badc480ae..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/async-function-try-finally.js +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertThrowsAsync(run, errorType, message) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (!hadError) { - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but did not throw."); - } - if (!(actual instanceof errorType)) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but threw '" + actual + "'"); - if (message !== void 0 && actual.message !== message) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw '" + message + "', but threw '" + - actual.message + "'"); -}; - -function assertEqualsAsync(expected, run, msg) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (hadError) throw actual; - - assertTrue( - hadValue, "Expected '" + run.toString() + "' to produce a value"); - - assertEquals(expected, actual, msg); -}; - -function resolveLater(value) { - return new Promise(function(resolve) { - resolve(value); - }); -} - -function rejectLater(reason) { - return new Promise(function(resolve, reject) { - reject(reason); - }); -} - -class MyError extends Error {}; -var AsyncFunction = async function() {}.constructor; - -assertEqualsAsync("finally-return (func-expr)", async function() { - try { - return "early-return (func-expr)"; - } finally { - return "finally-return (func-expr)"; - } -}); - -assertEqualsAsync("finally-return (arrow)", async() => { - try { - return "early-return (arrow)"; - } finally { - return "finally-return (arrow)"; - } -}); - -assertEqualsAsync("finally-return (eval)", AsyncFunction(` - try { - return "early-return (eval)"; - } finally { - return "finally-return (eval)"; - } -`)); - -assertEqualsAsync("promise-finally-return (func-expr)", async function() { - try { - return new Promise(function() {}); - } finally { - return "promise-finally-return (func-expr)"; - } -}); - -assertEqualsAsync("promise-finally-return (arrow)", async() => { - try { - return new Promise(function() {}); - } finally { - return "promise-finally-return (arrow)"; - } -}); - -assertEqualsAsync("promise-finally-return (eval)", AsyncFunction(` - try { - return new Promise(function() {}); - } finally { - return "promise-finally-return (eval)"; - } -`)); - -assertEqualsAsync("await-finally-return (func-expr)", async function() { - try { - return "early-return (func-expr)"; - } finally { - return await resolveLater("await-finally-return (func-expr)"); - } -}); - -assertEqualsAsync("await-finally-return (arrow)", async() => { - try { - return "early-return (arrow)"; - } finally { - return await resolveLater("await-finally-return (arrow)"); - } -}); - -assertEqualsAsync("await-finally-return (eval)", AsyncFunction(` - try { - return "early-return (eval)"; - } finally { - return await resolveLater("await-finally-return (eval)"); - } -`)); - -assertThrowsAsync(async function() { - try { - return "early-return (func-expr)"; - } finally { - throw new MyError("finally-throw (func-expr)"); - } -}, MyError, "finally-throw (func-expr)"); - -assertThrowsAsync(async() => { - try { - return "early-return (arrow)"; - } finally { - throw new MyError("finally-throw (arrow)"); - } -}, MyError, "finally-throw (arrow)"); - -assertThrowsAsync(AsyncFunction(` - try { - return "early-return (eval)"; - } finally { - throw new MyError("finally-throw (eval)"); - } -`), MyError, "finally-throw (eval)"); - -assertThrowsAsync(async function() { - try { - return "early-return (func-expr)"; - } finally { - await rejectLater(new MyError("await-finally-throw (func-expr)")); - } -}, MyError, "await-finally-throw (func-expr)"); - -assertThrowsAsync(async() => { - try { - return "early-return (arrow)"; - } finally { - await rejectLater(new MyError("await-finally-throw (arrow)")); - } -}, MyError, "await-finally-throw (arrow)"); - -assertThrowsAsync(AsyncFunction(` - try { - return "early-return (eval)"; - } finally { - await rejectLater(new MyError("await-finally-throw (eval)")); - } -`), MyError, "await-finally-throw (eval)"); diff --git a/implementation-contributed/v8/mjsunit/es8/object-entries.js b/implementation-contributed/v8/mjsunit/es8/object-entries.js deleted file mode 100644 index f119cfc1137..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/object-entries.js +++ /dev/null @@ -1,411 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function TestMeta() { - assertEquals(1, Object.entries.length); - assertEquals(Function.prototype, Object.getPrototypeOf(Object.entries)); - assertEquals("entries", Object.entries.name); - - var descriptor = Object.getOwnPropertyDescriptor(Object, "entries"); - assertTrue(descriptor.writable); - assertFalse(descriptor.enumerable); - assertTrue(descriptor.configurable); - - assertThrows(() => new Object.entries({}), TypeError); -} -TestMeta(); - - -function TestBasic(withWarmup) { - var x = 16; - var O = { - d: 1, - c: 3, - [Symbol.iterator]: void 0, - 0: 123, - 1000: 456, - [x * x]: "ducks", - [`0x${(x * x).toString(16)}`]: "quack" - }; - O.a = 2; - O.b = 4; - Object.defineProperty(O, "HIDDEN", { enumerable: false, value: NaN }); - if (withWarmup) { - for (const key in O) {} - } - O.c = 6; - const resultEntries = [ - ["0", 123], - ["256", "ducks"], - ["1000", 456], - ["d", 1], - ["c", 6], - ["0x100", "quack"], - ["a", 2], - ["b", 4] - ]; - assertEquals(resultEntries, Object.entries(O)); - assertEquals(resultEntries, Object.entries(O)); - assertEquals(Object.entries(O), Object.keys(O).map(key => [key, O[key]])); - - assertTrue(Array.isArray(Object.entries({}))); - assertEquals(0, Object.entries({}).length); -} -TestBasic(); -TestBasic(true); - - -function TestToObject() { - assertThrows(function() { Object.entries(); }, TypeError); - assertThrows(function() { Object.entries(null); }, TypeError); - assertThrows(function() { Object.entries(void 0); }, TypeError); -} -TestToObject(); - - -function TestOrder(withWarmup) { - var O = { - a: 1, - [Symbol.iterator]: null - }; - O[456] = 123; - Object.defineProperty(O, "HIDDEN", { enumerable: false, value: NaN }); - var priv = %CreatePrivateSymbol("Secret"); - O[priv] = 56; - - var log = []; - var P = new Proxy(O, { - ownKeys(target) { - log.push("[[OwnPropertyKeys]]"); - return Reflect.ownKeys(target); - }, - get(target, name) { - log.push(`[[Get]](${JSON.stringify(name)})`); - return Reflect.get(target, name); - }, - getOwnPropertyDescriptor(target, name) { - log.push(`[[GetOwnProperty]](${JSON.stringify(name)})`); - return Reflect.getOwnPropertyDescriptor(target, name); - }, - set(target, name, value) { - assertUnreachable(); - } - }); - - if (withWarmup) { - for (const key in P) {} - } - log = []; - - assertEquals([["456", 123], ["a", 1]], Object.entries(P)); - assertEquals([ - "[[OwnPropertyKeys]]", - "[[GetOwnProperty]](\"456\")", - "[[Get]](\"456\")", - "[[GetOwnProperty]](\"a\")", - "[[Get]](\"a\")", - "[[GetOwnProperty]](\"HIDDEN\")" - ], log); -} -TestOrder(); -TestOrder(true); - - -function TestOrderWithDuplicates(withWarmup) { - var O = { - a: 1, - [Symbol.iterator]: null - }; - O[456] = 123; - Object.defineProperty(O, "HIDDEN", { enumerable: false, value: NaN }); - var priv = %CreatePrivateSymbol("Secret"); - O[priv] = 56; - - var log = []; - var P = new Proxy(O, { - ownKeys(target) { - log.push("[[OwnPropertyKeys]]"); - return ["a", Symbol.iterator, "a", "456", "HIDDEN", "HIDDEN", "456"]; - }, - get(target, name) { - log.push(`[[Get]](${JSON.stringify(name)})`); - return Reflect.get(target, name); - }, - getOwnPropertyDescriptor(target, name) { - log.push(`[[GetOwnProperty]](${JSON.stringify(name)})`); - return Reflect.getOwnPropertyDescriptor(target, name); - }, - set(target, name, value) { - assertUnreachable(); - } - }); - - if (withWarmup) { - for (const key in O) {}; - try { for (const key in P) {} } catch {}; - } - - assertThrows(() => Object.entries(P), TypeError); -} -TestOrderWithDuplicates(); -TestOrderWithDuplicates(true); - -function TestDescriptorProperty() { - function f() {}; - const o = {}; - o.a = f; - - for (const key in o) {}; - const entries = Object.entries(o); - assertEquals([['a', f]], entries); -} -TestDescriptorProperty(); - -function TestPropertyFilter(withWarmup) { - var object = { prop3: 30 }; - object[2] = 40; - object["prop4"] = 50; - Object.defineProperty(object, "prop5", { value: 60, enumerable: true }); - Object.defineProperty(object, "prop6", { value: 70, enumerable: false }); - Object.defineProperty(object, "prop7", { - enumerable: true, get() { return 80; }}); - var sym = Symbol("prop8"); - object[sym] = 90; - - if (withWarmup) { - for (const key in object) {} - } - - values = Object.entries(object); - assertEquals(5, values.length); - assertEquals([ - [ "2", 40 ], - [ "prop3", 30 ], - [ "prop4", 50 ], - [ "prop5", 60 ], - [ "prop7", 80 ] - ], values); -} -TestPropertyFilter(); -TestPropertyFilter(true); - -function TestPropertyFilter2(withWarmup) { - var object = { }; - Object.defineProperty(object, "prop1", { value: 10 }); - Object.defineProperty(object, "prop2", { value: 20 }); - object.prop3 = 30; - - if (withWarmup) { - for (const key in object) {} - } - - values = Object.entries(object); - assertEquals(1, values.length); - assertEquals([ - [ "prop3", 30 ], - ], values); -} -TestPropertyFilter2(); -TestPropertyFilter2(true); - -function TestWithProxy(withWarmup) { - var obj1 = {prop1:10}; - var proxy1 = new Proxy(obj1, { }); - if (withWarmup) { - for (const key in proxy1) {} - } - assertEquals([ [ "prop1", 10 ] ], Object.entries(proxy1)); - - var obj2 = {}; - Object.defineProperty(obj2, "prop2", { value: 20, enumerable: true }); - Object.defineProperty(obj2, "prop3", { - get() { return 30; }, enumerable: true }); - var proxy2 = new Proxy(obj2, { - getOwnPropertyDescriptor(target, name) { - return Reflect.getOwnPropertyDescriptor(target, name); - } - }); - if (withWarmup) { - for (const key in proxy2) {} - } - assertEquals([ [ "prop2", 20 ], [ "prop3", 30 ] ], Object.entries(proxy2)); - - var obj3 = {}; - var count = 0; - var proxy3 = new Proxy(obj3, { - get(target, property, receiver) { - return count++ * 5; - }, - getOwnPropertyDescriptor(target, property) { - return { configurable: true, enumerable: true }; - }, - ownKeys(target) { - return [ "prop0", "prop1", Symbol("prop2"), Symbol("prop5") ]; - } - }); - if (withWarmup) { - for (const key in proxy3) {} - } - assertEquals([ [ "prop0", 0 ], [ "prop1", 5 ] ], Object.entries(proxy3)); -} -TestWithProxy(); -TestWithProxy(true); - - -function TestMutateDuringEnumeration(withWarmup) { - var aDeletesB = { - get a() { - delete this.b; - return 1; - }, - b: 2 - }; - if (withWarmup) { - for (const key in aDeletesB) {} - } - assertEquals([ [ "a", 1 ] ], Object.entries(aDeletesB)); - - var aRemovesB = { - get a() { - Object.defineProperty(this, "b", { enumerable: false }); - return 1; - }, - b: 2 - }; - if (withWarmup) { - for (const key in aRemovesB) {} - } - assertEquals([ [ "a", 1 ] ], Object.entries(aRemovesB)); - - var aAddsB = { get a() { this.b = 2; return 1; } }; - if (withWarmup) { - for (const key in aAddsB) {} - } - assertEquals([ [ "a", 1 ] ], Object.entries(aAddsB)); - - var aMakesBEnumerable = {}; - Object.defineProperty(aMakesBEnumerable, "a", { - get() { - Object.defineProperty(this, "b", { enumerable: true }); - return 1; - }, - enumerable: true - }); - Object.defineProperty(aMakesBEnumerable, "b", { - value: 2, configurable:true, enumerable: false }); - if (withWarmup) { - for (const key in aMakesBEnumerable) {} - } - assertEquals([ [ "a", 1 ], [ "b", 2 ] ], Object.entries(aMakesBEnumerable)); -} -TestMutateDuringEnumeration(); -TestMutateDuringEnumeration(true); - - -function TestElementKinds(withWarmup) { - var O1 = { name: "1" }, O2 = { name: "2" }, O3 = { name: "3" }; - var PI = 3.141592653589793; - var E = 2.718281828459045; - function fastSloppyArguments(a, b, c) { - delete arguments[0]; - arguments[0] = a; - return arguments; - } - - function slowSloppyArguments(a, b, c) { - delete arguments[0]; - arguments[0] = a; - Object.defineProperties(arguments, { - 0: { - enumerable: true, - value: a - }, - 9999: { - enumerable: false, - value: "Y" - } - }); - arguments[10000] = "X"; - return arguments; - } - - var element_kinds = { - PACKED_SMI_ELEMENTS: [ [1, 2, 3], [ ["0", 1], ["1", 2], ["2", 3] ] ], - HOLEY_SMI_ELEMENTS: [ [, , 3], [ ["2", 3] ] ], - PACKED_ELEMENTS: [ [O1, O2, O3], [ ["0", O1], ["1", O2], ["2", O3] ] ], - HOLEY_ELEMENTS: [ [, , O3], [ ["2", O3] ] ], - PACKED_DOUBLE_ELEMENTS: [ [E, NaN, PI], [ ["0", E], ["1", NaN], ["2", PI] ] ], - HOLEY_DOUBLE_ELEMENTS: [ [, , NaN], [ ["2", NaN] ] ], - - DICTIONARY_ELEMENTS: [ Object.defineProperties({ 10000: "world" }, { - 100: { enumerable: true, value: "hello", configurable: true}, - 99: { enumerable: false, value: "nope", configurable: true} - }), [ ["100", "hello"], ["10000", "world" ] ] ], - FAST_SLOPPY_ARGUMENTS_ELEMENTS: [ - fastSloppyArguments("a", "b", "c"), - [ ["0", "a"], ["1", "b"], ["2", "c"] ] ], - SLOW_SLOPPY_ARGUMENTS_ELEMENTS: [ - slowSloppyArguments("a", "b", "c"), - [ ["0", "a"], ["1", "b"], ["2", "c"], ["10000", "X"] ] ], - - FAST_STRING_WRAPPER_ELEMENTS: [ new String("str"), - [ ["0", "s"], ["1", "t"], ["2", "r"]] ], - SLOW_STRING_WRAPPER_ELEMENTS: [ - Object.defineProperties(new String("str"), { - 10000: { enumerable: false, value: "X", configurable: true}, - 9999: { enumerable: true, value: "Y", configurable: true} - }), [["0", "s"], ["1", "t"], ["2", "r"], ["9999", "Y"]] ], - }; - - if (withWarmup) { - for (const key in element_kinds) {} - } - for (let [kind, [object, expected]] of Object.entries(element_kinds)) { - if (withWarmup) { - for (const key in object) {} - } - let result1 = Object.entries(object); - %HeapObjectVerify(object); - %HeapObjectVerify(result1); - assertEquals(expected, result1, `fast Object.entries() with ${kind}`); - - let proxy = new Proxy(object, {}); - if (withWarmup) { - for (const key in proxy) {} - } - let result2 = Object.entries(proxy); - %HeapObjectVerify(result2); - assertEquals(result1, result2, `slow Object.entries() with ${kind}`); - } - - function makeFastElements(array) { - // Remove all possible getters. - for (let k of Object.getOwnPropertyNames(this)) { - if (k == "length") continue; - delete this[k]; - } - // Make the array large enough to trigger re-checking for compaction. - this[1000] = 1; - // Make the elements fast again. - Array.prototype.unshift.call(this, 1.1); - } - - // Test that changing the elements kind is supported. - for (let [kind, [object, expected]] of Object.entries(element_kinds)) { - if (kind == "FAST_STRING_WRAPPER_ELEMENTS") break; - object.__defineGetter__(1, makeFastElements); - if (withWarmup) { - for (const key in object) {} - } - let result1 = Object.entries(object).toString(); - %HeapObjectVerify(object); - %HeapObjectVerify(result1); - } - -} - -TestElementKinds(); -TestElementKinds(true); diff --git a/implementation-contributed/v8/mjsunit/es8/object-get-own-property-descriptors.js b/implementation-contributed/v8/mjsunit/es8/object-get-own-property-descriptors.js deleted file mode 100644 index 0bd84bd6fe1..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/object-get-own-property-descriptors.js +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function DataDescriptor(value) { - return { "enumerable": true, "configurable": true, "writable": true, value }; -} - - -function TestMeta() { - assertEquals(1, Object.getOwnPropertyDescriptors.length); - assertEquals(Function.prototype, - Object.getPrototypeOf(Object.getOwnPropertyDescriptors)); - assertEquals( - 'getOwnPropertyDescriptors', Object.getOwnPropertyDescriptors.name); - var desc = Reflect.getOwnPropertyDescriptor( - Object, 'getOwnPropertyDescriptors'); - assertFalse(desc.enumerable); - assertTrue(desc.writable); - assertTrue(desc.configurable); -} -TestMeta(); - - -function TestToObject() { - assertThrows(function() { - Object.getOwnPropertyDescriptors(null); - }, TypeError); - - assertThrows(function() { - Object.getOwnPropertyDescriptors(undefined); - }, TypeError); - - assertThrows(function() { - Object.getOwnPropertyDescriptors(); - }, TypeError); -} -TestToObject(); - - -function TestPrototypeProperties() { - function F() {}; - F.prototype.a = "A"; - F.prototype.b = "B"; - - var F2 = new F(); - Object.defineProperties(F2, { - "b": { - enumerable: false, - configurable: true, - writable: false, - value: "Shadowed 'B'" - }, - "c": { - enumerable: false, - configurable: true, - writable: false, - value: "C" - } - }); - - assertEquals({ - "b": { - enumerable: false, - configurable: true, - writable: false, - value: "Shadowed 'B'" - }, - "c": { - enumerable: false, - configurable: true, - writable: false, - value: "C" - } - }, Object.getOwnPropertyDescriptors(F2)); -} -TestPrototypeProperties(); - - -function TestPrototypeProperties() { - function F() {}; - F.prototype.a = "A"; - F.prototype.b = "B"; - - var F2 = new F(); - Object.defineProperties(F2, { - "b": { - enumerable: false, - configurable: true, - writable: false, - value: "Shadowed 'B'" - }, - "c": { - enumerable: false, - configurable: true, - writable: false, - value: "C" - } - }); - - assertEquals({ - "b": { - enumerable: false, - configurable: true, - writable: false, - value: "Shadowed 'B'" - }, - "c": { - enumerable: false, - configurable: true, - writable: false, - value: "C" - } - }, Object.getOwnPropertyDescriptors(F2)); -} -TestPrototypeProperties(); - - -function TestTypeFilteringAndOrder() { - var log = []; - var sym = Symbol("foo"); - var psym = %CreatePrivateSymbol("private"); - var O = { - 0: 0, - [sym]: 3, - "a": 2, - [psym]: 4, - 1: 1, - }; - var P = new Proxy(O, { - ownKeys(target) { - log.push("ownKeys()"); - return Reflect.ownKeys(target); - }, - getOwnPropertyDescriptor(target, name) { - log.push(`getOwnPropertyDescriptor(${String(name)})`); - return Reflect.getOwnPropertyDescriptor(target, name); - }, - get(target, name) { assertUnreachable(); }, - set(target, name, value) { assertUnreachable(); }, - deleteProperty(target, name) { assertUnreachable(); }, - defineProperty(target, name, desc) { assertUnreachable(); } - }); - - var result1 = Object.getOwnPropertyDescriptors(O); - assertEquals({ - 0: DataDescriptor(0), - 1: DataDescriptor(1), - "a": DataDescriptor(2), - [sym]: DataDescriptor(3) - }, result1); - - var result2 = Object.getOwnPropertyDescriptors(P); - assertEquals([ - "ownKeys()", - "getOwnPropertyDescriptor(0)", - "getOwnPropertyDescriptor(1)", - "getOwnPropertyDescriptor(a)", - "getOwnPropertyDescriptor(Symbol(foo))" - ], log); - assertEquals({ - 0: DataDescriptor(0), - 1: DataDescriptor(1), - "a": DataDescriptor(2), - [sym]: DataDescriptor(3) - }, result2); -} -TestTypeFilteringAndOrder(); - - -function TestDuplicateKeys() { - var i = 0; - var log = []; - var P = new Proxy({}, { - ownKeys() { - log.push(`ownKeys()`); - return ["A", "A"]; - }, - getOwnPropertyDescriptor(t, name) { - log.push(`getOwnPropertyDescriptor(${name})`); - if (i++) return; - return { - configurable: true, - writable: false, - value: "VALUE" - }; - }, - get(target, name) { assertUnreachable(); }, - set(target, name, value) { assertUnreachable(); }, - deleteProperty(target, name) { assertUnreachable(); }, - defineProperty(target, name, desc) { assertUnreachable(); } - }); - - assertThrows(() => Object.getOwnPropertyDescriptors(P), TypeError); -} -TestDuplicateKeys(); - -function TestFakeProperty() { - var log = []; - var P = new Proxy({}, { - ownKeys() { - log.push(`ownKeys()`); - return ["fakeProperty"]; - }, - getOwnPropertyDescriptor(target, name) { - log.push(`getOwnPropertyDescriptor(${name})`); - return; - } - }); - var result = Object.getOwnPropertyDescriptors(P); - assertEquals({}, result); - assertFalse(result.hasOwnProperty("fakeProperty")); - assertEquals([ - "ownKeys()", - "getOwnPropertyDescriptor(fakeProperty)" - ], log); -} -TestFakeProperty(); diff --git a/implementation-contributed/v8/mjsunit/es8/object-values.js b/implementation-contributed/v8/mjsunit/es8/object-values.js deleted file mode 100644 index b66e4af7d33..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/object-values.js +++ /dev/null @@ -1,278 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function TestMeta() { - assertEquals(1, Object.values.length); - assertEquals(Function.prototype, Object.getPrototypeOf(Object.values)); - assertEquals("values", Object.values.name); - - var descriptor = Object.getOwnPropertyDescriptor(Object, "values"); - assertTrue(descriptor.writable); - assertFalse(descriptor.enumerable); - assertTrue(descriptor.configurable); - - assertThrows(() => new Object.values({}), TypeError); -} -TestMeta(); - - -function TestBasic() { - var x = 16; - var O = { - d: 1, - c: 3, - [Symbol.iterator]: void 0, - 0: 123, - 1000: 456, - [x * x]: "ducks", - [`0x${(x * x).toString(16)}`]: "quack" - }; - O.a = 2; - O.b = 4; - Object.defineProperty(O, "HIDDEN", { enumerable: false, value: NaN }); - assertEquals([123, "ducks", 456, 1, 3, "quack", 2, 4], Object.values(O)); - assertEquals(Object.values(O), Object.keys(O).map(key => O[key])); - - assertTrue(Array.isArray(Object.values({}))); - assertEquals(0, Object.values({}).length); -} -TestBasic(); - - -function TestToObject() { - assertThrows(function() { Object.values(); }, TypeError); - assertThrows(function() { Object.values(null); }, TypeError); - assertThrows(function() { Object.values(void 0); }, TypeError); -} -TestToObject(); - - -function TestOrder() { - var O = { - a: 1, - [Symbol.iterator]: null - }; - O[456] = 123; - Object.defineProperty(O, "HIDDEN", { enumerable: false, value: NaN }); - var priv = %CreatePrivateSymbol("Secret"); - O[priv] = 56; - - var log = []; - var P = new Proxy(O, { - ownKeys(target) { - log.push("[[OwnPropertyKeys]]"); - return Reflect.ownKeys(target); - }, - get(target, name) { - log.push(`[[Get]](${JSON.stringify(name)})`); - return Reflect.get(target, name); - }, - getOwnPropertyDescriptor(target, name) { - log.push(`[[GetOwnProperty]](${JSON.stringify(name)})`); - return Reflect.getOwnPropertyDescriptor(target, name); - }, - set(target, name, value) { - assertUnreachable(); - } - }); - - assertEquals([123, 1], Object.values(P)); - assertEquals([ - "[[OwnPropertyKeys]]", - "[[GetOwnProperty]](\"456\")", - "[[Get]](\"456\")", - "[[GetOwnProperty]](\"a\")", - "[[Get]](\"a\")", - "[[GetOwnProperty]](\"HIDDEN\")" - ], log); -} -TestOrder(); - - -function TestOrderWithDuplicates() { - var O = { - a: 1, - [Symbol.iterator]: null - }; - O[456] = 123; - Object.defineProperty(O, "HIDDEN", { enumerable: false, value: NaN }); - O[priv] = 56; - var priv = %CreatePrivateSymbol("private"); - - var log = []; - var P = new Proxy(O, { - ownKeys(target) { - log.push("[[OwnPropertyKeys]]"); - return [ "a", Symbol.iterator, "a", "456", "HIDDEN", "HIDDEN", "456" ]; - }, - get(target, name) { - log.push(`[[Get]](${JSON.stringify(name)})`); - return Reflect.get(target, name); - }, - getOwnPropertyDescriptor(target, name) { - log.push(`[[GetOwnProperty]](${JSON.stringify(name)})`); - return Reflect.getOwnPropertyDescriptor(target, name); - }, - set(target, name, value) { - assertUnreachable(); - } - }); - - assertThrows(() => Object.values(P), TypeError); -} -TestOrderWithDuplicates(); - - -function TestPropertyFilter() { - var object = { prop3: 30 }; - object[2] = 40; - object["prop4"] = 50; - Object.defineProperty(object, "prop5", { value: 60, enumerable: true }); - Object.defineProperty(object, "prop6", { value: 70, enumerable: false }); - Object.defineProperty(object, "prop7", { - enumerable: true, get() { return 80; }}); - var sym = Symbol("prop8"); - object[sym] = 90; - - values = Object.values(object); - assertEquals(5, values.length); - assertEquals([40,30,50,60,80], values); -} -TestPropertyFilter(); - - -function TestWithProxy() { - var obj1 = {prop1:10}; - var proxy1 = new Proxy(obj1, { }); - assertEquals([10], Object.values(proxy1)); - - var obj2 = {}; - Object.defineProperty(obj2, "prop2", { value: 20, enumerable: true }); - Object.defineProperty(obj2, "prop3", { - get() { return 30; }, enumerable: true }); - var proxy2 = new Proxy(obj2, { - getOwnPropertyDescriptor(target, name) { - return Reflect.getOwnPropertyDescriptor(target, name); - } - }); - assertEquals([20, 30], Object.values(proxy2)); - - var obj3 = {}; - var count = 0; - var proxy3 = new Proxy(obj3, { - get(target, property, receiver) { - return count++ * 5; - }, - getOwnPropertyDescriptor(target, property) { - return { configurable: true, enumerable: true }; - }, - ownKeys(target) { - return [ "prop0", "prop1", Symbol("prop2"), Symbol("prop5") ]; - } - }); - assertEquals([0, 5], Object.values(proxy3)); -} -TestWithProxy(); - - -function TestMutateDuringEnumeration() { - var aDeletesB = { - get a() { - delete this.b; - return 1; - }, - b: 2 - }; - assertEquals([1], Object.values(aDeletesB)); - - var aRemovesB = { - get a() { - Object.defineProperty(this, "b", { enumerable: false }); - return 1; - }, - b: 2 - }; - assertEquals([1], Object.values(aRemovesB)); - - var aAddsB = { get a() { this.b = 2; return 1; } }; - assertEquals([1], Object.values(aAddsB)); - - var aMakesBEnumerable = {}; - Object.defineProperty(aMakesBEnumerable, "a", { - get() { - Object.defineProperty(this, "b", { enumerable: true }); - return 1; - }, - enumerable: true - }); - Object.defineProperty(aMakesBEnumerable, "b", { - value: 2, configurable:true, enumerable: false }); - assertEquals([1, 2], Object.values(aMakesBEnumerable)); -} -TestMutateDuringEnumeration(); - - -(function TestElementKinds() { - var O1 = { name: "1" }, O2 = { name: "2" }, O3 = { name: "3" }; - var PI = 3.141592653589793; - var E = 2.718281828459045; - function fastSloppyArguments(a, b, c) { - delete arguments[0]; - arguments[0] = a; - return arguments; - } - - function slowSloppyArguments(a, b, c) { - delete arguments[0]; - arguments[0] = a; - Object.defineProperties(arguments, { - 0: { - enumerable: true, - value: a - }, - 9999: { - enumerable: false, - value: "Y" - } - }); - arguments[10000] = "X"; - return arguments; - } - - var element_kinds = { - PACKED_SMI_ELEMENTS: [ [1, 2, 3], [1, 2, 3] ], - HOLEY_SMI_ELEMENTS: [ [, , 3], [ 3 ] ], - PACKED_ELEMENTS: [ [O1, O2, O3], [O1, O2, O3] ], - HOLEY_ELEMENTS: [ [, , O3], [O3] ], - PACKED_DOUBLE_ELEMENTS: [ [E, NaN, PI], [E, NaN, PI] ], - HOLEY_DOUBLE_ELEMENTS: [ [, , NaN], [NaN] ], - - DICTIONARY_ELEMENTS: [ Object.defineProperties({ 10000: "world" }, { - 100: { enumerable: true, value: "hello" }, - 99: { enumerable: false, value: "nope" } - }), [ "hello", "world" ] ], - FAST_SLOPPY_ARGUMENTS_ELEMENTS: [ - fastSloppyArguments("a", "b", "c"), ["a", "b", "c"] ], - SLOW_SLOPPY_ARGUMENTS_ELEMENTS: [ - slowSloppyArguments("a", "b", "c"), [ "a", "b", "c", "X"]], - - FAST_STRING_WRAPPER_ELEMENTS: [ new String("str"), ["s", "t", "r"] ], - SLOW_STRING_WRAPPER_ELEMENTS: [ - Object.defineProperties(new String("str"), { - 10000: { enumerable: false, value: "X" }, - 9999: { enumerable: true, value: "Y" } - }), ["s", "t", "r", "Y"] ], - }; - - for (let [kind, [object, expected]] of Object.entries(element_kinds)) { - let result1 = Object.values(object); - assertEquals(expected, result1, `fast Object.values() with ${kind}`); - - let proxy = new Proxy(object, {}); - let result2 = Object.values(proxy); - assertEquals(result1, result2, `slow Object.values() with ${kind}`); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/es8/regress/regress-618603.js b/implementation-contributed/v8/mjsunit/es8/regress/regress-618603.js deleted file mode 100644 index 2e6d4bd9395..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/regress/regress-618603.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { -} catch(e) {; } -function __f_7(expected, run) { - var __v_10 = run(); -}; -__f_7("[1,2,3]", () => (function() { - return (async () => {[...await arguments] })(); - })()); diff --git a/implementation-contributed/v8/mjsunit/es8/regress/regress-624300.js b/implementation-contributed/v8/mjsunit/es8/regress/regress-624300.js deleted file mode 100644 index 404e2c7f229..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/regress/regress-624300.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function f() { - try { - f(); - } catch (e) { - (async() => await 1).length; - } -})(); diff --git a/implementation-contributed/v8/mjsunit/es8/regress/regress-794744.js b/implementation-contributed/v8/mjsunit/es8/regress/regress-794744.js deleted file mode 100644 index a4dcb5d42ad..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/regress/regress-794744.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Object.getOwnPropertyDescriptors loads %FunctionPrototype%.caller, an -// accessor property which inspects the current callstack. Verify that this -// callstack iteration doesn't crash when there are no JS frames on the stack. -Promise.resolve(function () {}).then(Object.getOwnPropertyDescriptors); diff --git a/implementation-contributed/v8/mjsunit/es8/sloppy-no-duplicate-async.js b/implementation-contributed/v8/mjsunit/es8/sloppy-no-duplicate-async.js deleted file mode 100644 index 04dd9849097..00000000000 --- a/implementation-contributed/v8/mjsunit/es8/sloppy-no-duplicate-async.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Async functions don't get sloppy-mode block-scoped function hoisting - -// No hoisting to the global scope - -{ - async function foo() {} - assertEquals('function', typeof foo); -} -assertEquals('undefined', typeof foo); - -// No hoisting within a function scope -(function() { - { async function bar() {} } - assertEquals('undefined', typeof bar); -})(); - -// Lexical shadowing allowed, no hoisting -(function() { - var y; - async function x() { y = 1; } - { async function x() { y = 2; } } - x(); - assertEquals(1, y); -})(); diff --git a/implementation-contributed/v8/mjsunit/es9/object-rest-basic.js b/implementation-contributed/v8/mjsunit/es9/object-rest-basic.js deleted file mode 100644 index caaee6f40c5..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/object-rest-basic.js +++ /dev/null @@ -1,163 +0,0 @@ -// // Copyright 2016 the V8 project authors. All rights reserved. -// // Use of this source code is governed by a BSD-style license that can be -// // found in the LICENSE file. - -var { ...x } = { a: 1 }; -assertEquals({ a: 1 }, x); - -var { ...x } = { a: 1, b: 1 }; -assertEquals({ a: 1, b: 1 }, x); - -var { x, ...x } = { a: 1, b: 1 }; -assertEquals({ a: 1, b: 1 }, x); - -var { x = {}, ...x } = { a: 1, b: 1 }; -assertEquals({ a: 1, b: 1 }, x); - -var { y, ...x } = { y: 1, a: 1 }; -assertEquals({ a: 1 }, x); -assertEquals(1, y); - -var { z, y, ...x } = { z:1, y: 1, a: 1, b: 1 }; -assertEquals({ a: 1, b:1 }, x); -assertEquals(1, y); -assertEquals(1, z); - -({ a, ...b } = { a: 1, b: 2 }); -assertEquals(1, a); -assertEquals({ b: 2 }, b); - -var { ...x } = {}; -assertEquals({}, x); - -var key = "b"; -var { [key]: y, ...x } = { b: 1, a: 1 }; -assertEquals({ a: 1 }, x); -assertEquals(1, y); - -var key = 1; -var { [key++]: y, ...x } = { 1: 1, a: 1 }; -assertEquals({ a: 1 }, x); -assertEquals(key, 2); -assertEquals(1, y); - -var key = '1'; -var {[key]: y, ...x} = {1: 1, a: 1}; -assertEquals({a: 1}, x); -assertEquals(1, y); - -function example({a, ...rest}, { b = rest }) { - assertEquals(1, a); - assertEquals({ b: 2, c: 3}, rest); - assertEquals({ b: 2, c: 3}, b); -}; -example({ a: 1, b: 2, c: 3}, { b: undefined }); - -var x = { a: 3 }; -var y = { - set a(val) { assertUnreachable(); }, - ...x, -}; -assertEquals(y.a, 3); - -var {...y} = { - get a() { - return 1 - } -}; -assertEquals({a: 1}, y); - -var x = { - get a() { throw new Error(); }, -}; -assertThrows(() => { var { ...y } = x }); - -var p = new Proxy({}, { - ownKeys() { throw new Error(); } -}); -assertThrows(() => { var { ...y } = p }); - -var p = new Proxy({}, { - ownKeys() { [1]; }, - get() { throw new Error(); } -}); -assertThrows(() => { var { ...y } = p }); - -var p = new Proxy({}, { - ownKeys() { [1]; }, - getOwnPropertyDescriptor() { throw new Error(); } -}); -assertThrows(() => { var { ...y } = p }); - -var z = { b: 1} -var p = new Proxy(z, { - ownKeys() { return Object.keys(z); }, - get(_, prop) { return z[prop]; }, - getOwnPropertyDescriptor(_, prop) { - return Object.getOwnPropertyDescriptor(z, prop); - }, -}); -var { ...y } = p ; -assertEquals(z, y); - -var z = { b: 1} -var { ...y } = { ...z} ; -assertEquals(z, y); - -var count = 0; -class Foo { - constructor(x) { this.x = x; } - toString() { count++; return this.x.toString(); } -} -var f = new Foo(1); -var { [f] : x, ...y } = { 1: 1, 2: 2} -assertEquals(1, count); -assertEquals({2: 2}, y); - -var { 1: x, 2: y, ...z } = { 1: 1, 2: 2, 3:3 }; -assertEquals(1, x); -assertEquals(2, y); -assertEquals({ 3: 3 }, z); - -var { 1.5: x, 2: y, ...z } = { 1.5: 1, 2: 2, 3:3 }; -assertEquals(1, x); -assertEquals(2, y); -assertEquals({ 3: 3 }, z); - -(({x, ...z}) => { assertEquals({y: 1}, z); })({ x: 1, y: 1}); - -var [...{...z}] = [{ x: 1}]; -assertEquals({ 0: { x: 1} }, z); - -var x = {}; -({ ...x.f } = { a: 1 }); -assertEquals(x.f, { a: 1 }); - -var x = []; -({ ...x[0] } = { a: 1 }); -assertEquals(x[0], {a: 1}); - -var {4294967297: y, ...x} = {4294967297: 1, x: 1}; -assertEquals(1, y); -assertEquals({x: 1}, x); - -var obj = { - [Symbol.toPrimitive]() { - return 1; - } -}; -var {[obj]: y, ...x} = {1: 1, x: 1}; -assertEquals(1, y); -assertEquals({x: 1}, x); - -var {[null]: y, ...x} = {null: 1, x: 1}; -assertEquals(1, y); -assertEquals({x: 1}, x); - -var {[true]: y, ...x} = {true: 1, x: 1}; -assertEquals(1, y); -assertEquals({x: 1}, x); - -var {[false]: y, ...x} = {false: 1, x: 1}; -assertEquals(1, y); -assertEquals({x: 1}, x); diff --git a/implementation-contributed/v8/mjsunit/es9/object-spread-basic.js b/implementation-contributed/v8/mjsunit/es9/object-spread-basic.js deleted file mode 100644 index 8264da47a58..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/object-spread-basic.js +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var x = {a: 1}; -var y = { ...x}; -assertEquals(x, y); - -assertEquals({}, y = { ...{} } ); -assertEquals({}, y = { ...undefined }); -assertEquals({}, y = { ...null }); - -assertEquals({}, y = { ...1 }); -assertEquals({0: 'f', 1: 'o', 2: 'o'}, y = { ...'foo' }); -assertEquals({0: 0, 1: 1}, y = { ...[0, 1] }); -assertEquals({}, { ...new Proxy({}, {}) }); - -assertEquals({a: 2}, y = { ...x, a: 2 }); -assertEquals({a: 1, b: 1}, y = { ...x, b: 1 }); -assertEquals({a: 1}, y = { a: 2, ...x }); -assertEquals({a: 1, b: 1}, y = { a:2, ...x, b: 1 }); -assertEquals({a: 3}, y = { a: 2, ...x, a: 3 }); - -var z = { b: 1} -assertEquals({a: 1, b: 1}, y = { ...x, ...z }); -assertEquals({a: 1, b: 1}, y = { a: 2, ...x, ...z }); -assertEquals({a: 1, b: 1}, y = { b: 2, ...z, ...x }); -assertEquals({a: 1, b: 1}, y = { a: 1, ...x, b: 2, ...z }); -assertEquals({a: 1, b: 2}, y = { a: 1, ...x, ...z, b: 2 }); -assertEquals({a: 2, b: 2}, y = { ...x, ...z, a:2, b: 2 }); - -var x = {} -Object.defineProperty(x, 'a', { - enumerable: false, - configurable: false, - writable: false, - value: 1 -}); -assertEquals({}, { ...x }); - -var x = {} -Object.defineProperty(x, 'a', { - enumerable: true, - configurable: false, - writable: false, - value: 1 -}); -var y = { ...x }; -var prop = Object.getOwnPropertyDescriptor(y, 'a'); -assertEquals(prop.value, 1); -assertTrue(prop.enumerable); -assertTrue(prop.configurable); -assertTrue(prop.writable); - -var x = { __proto__: z } -assertEquals({}, { ...x }); - -var x = { - get a() { return 1; }, - set a(_) { assertUnreachable("setter called"); }, -}; -assertEquals({ a: 1 }, y = { ...x }); - -var x = { - method() { return 1; }, -}; -assertEquals(x, y = { ...x }); - -var x = { - *gen() { return {value: 1, done: true} ; }, -}; -assertEquals(x, y = { ...x }); - -var x = { - get a() { throw new Error(); }, -}; -assertThrows(() => { y = { ...x } }); - -var p = new Proxy({}, { - ownKeys() { throw new Error(); } -}); -assertThrows(() => { y = { ...p } }); - -var p = new Proxy({}, { - ownKeys() { [1]; }, - get() { throw new Error(); } -}); -assertThrows(() => { y = { ...p } }); - -var p = new Proxy({}, { - ownKeys() { [1]; }, - getOwnPropertyDescriptor() { throw new Error(); } -}); -assertThrows(() => { y = { ...p } }); - -var p = new Proxy(z, { - ownKeys() { return Object.keys(z); }, - get(_, prop) { return z[prop]; }, - getOwnPropertyDescriptor(_, prop) { - return Object.getOwnPropertyDescriptor(z, prop); - }, -}); -assertEquals(z, y = { ...p }); - -var x = { a:1 }; -assertEquals(x, y = { set a(_) { throw new Error(); }, ...x }); - -var x = { a:1 }; -assertEquals(x, y = { get a() { throw new Error(); }, ...x }); diff --git a/implementation-contributed/v8/mjsunit/es9/object-spread-ic-dontenum-transition.js b/implementation-contributed/v8/mjsunit/es9/object-spread-ic-dontenum-transition.js deleted file mode 100644 index c403566a38b..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/object-spread-ic-dontenum-transition.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testMegamorphicWithDontEnumTransition() { - function spread(o) { return { ...o }; } - - // Set up transition tree - let obj = { ...{}, a: 0, b: 1, c: 2, }; - Object.defineProperty(obj, "boom", { enumerable: false, configurable: true, - writable: true }); - - // make CloneObjectIC MEGAMORPHIC - spread(new Proxy({}, {})); - - // Ensure we don't crash, and create the correct object - let result = spread({ a: 0, b: 1, c: 2, boom: 3 }); - - assertEquals({ a: 0, b: 1, c: 2, boom: 3 }, result); - assertEquals({ - enumerable: true, - writable: true, - configurable: true, - value: 3, - }, Object.getOwnPropertyDescriptor(result, "boom")); -})(); diff --git a/implementation-contributed/v8/mjsunit/es9/object-spread-ic-multiple-transitions.js b/implementation-contributed/v8/mjsunit/es9/object-spread-ic-multiple-transitions.js deleted file mode 100644 index f31a6d90d6a..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/object-spread-ic-multiple-transitions.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testMegamorphicWithNonSimpleTransitionHandler() { - function spread(o) { return { ...o }; } - - // Set up transition tree - let obj = { ...{}, a: 0, b: 1, boom: 2}; - - // make CloneObjectIC MEGAMORPHIC - spread(new Proxy({}, {})); - - // Ensure we don't crash, and create the correct object - assertEquals({ a: 0, b: 1, c: 2 }, spread({ a: 0, b: 1, c: 2 })); -})(); diff --git a/implementation-contributed/v8/mjsunit/es9/object-spread-ic.js b/implementation-contributed/v8/mjsunit/es9/object-spread-ic.js deleted file mode 100644 index 55d60f2cf8a..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/object-spread-ic.js +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testDoubleElements() { - function f(src) { return {...src}; } - var src = [1.5]; - src[0] = 1; - - // Uninitialized - assertEquals({ 0: 1 }, f(src)); - - src[0] = 1.3; - - // Monomorphic - assertEquals({ 0: 1.3 }, f(src)); -})(); - -(function testInObjectProperties() { - function f(src) { return {...src}; } - function C() { this.foo = "foo"; } - var src; - for (var i = 0; i < 10; ++i) { - src = new C(); - } - - // Uninitialized - assertEquals({ foo: "foo" }, f(src)); - - // Monomorphic - assertEquals({ foo: "foo" }, f(src)); -})(); - -(function testInObjectProperties2() { - function f(src) { return {...src}; } - function C() { - this.foo = "foo"; - this.p0 = "0"; - this.p1 = "1"; - this.p2 = "2"; - this.p3 = "3"; - } - var src; - for (var i = 0; i < 10; ++i) { - src = new C(); - } - - // Uninitialized - assertEquals({ foo: "foo", p0: "0", p1: "1", p2: "2", p3: "3" }, f(src)); - - // Monomorphic - assertEquals({ foo: "foo", p0: "0", p1: "1", p2: "2", p3: "3" }, f(src)); -})(); - -(function testPolymorphicToMegamorphic() { - function f(src) { return {...src}; } - function C1() { - this.foo = "foo"; - this.p0 = "0"; - this.p1 = "1"; - this.p2 = "2"; - this.p3 = "3"; - } - function C2() { - this.p0 = "0"; - this.p1 = "1"; - this[0] = 0; - } - function C3() { - this.x = 774; - this.y = 663; - this.rgb = 0xFF00FF; - } - function C4() { - this.qqq = {}; - this.v_1 = []; - this.name = "C4"; - this.constructor = C4; - } - - // Uninitialized - assertEquals({ foo: "foo", p0: "0", p1: "1", p2: "2", p3: "3" }, f(new C1())); - - // Monomorphic - assertEquals({ foo: "foo", p0: "0", p1: "1", p2: "2", p3: "3" }, f(new C1())); - - // Polymorphic (2) - assertEquals({ 0: 0, p0: "0", p1: "1" }, f(new C2())); - assertEquals({ 0: 0, p0: "0", p1: "1" }, f(new C2())); - - // Polymorphic (3) - assertEquals({ x: 774, y: 663, rgb: 0xFF00FF }, f(new C3())); - assertEquals({ x: 774, y: 663, rgb: 0xFF00FF }, f(new C3())); - - // Polymorphic (4) - assertEquals({ qqq: {}, v_1: [], name: "C4", constructor: C4 }, f(new C4())); - assertEquals({ qqq: {}, v_1: [], name: "C4", constructor: C4 }, f(new C4())); - - // Megamorphic - assertEquals({ boop: 1 }, f({ boop: 1 })); -})(); - -// There are 2 paths in CloneObjectIC's handler which need to handle double -// fields specially --- in object properties, and copying the property array. -function testMutableInlineProperties() { - function inobject() { "use strict"; this.x = 1.1; } - const src = new inobject(); - const x0 = src.x; - const clone = { ...src, x: x0 + 1 }; - assertEquals(x0, src.x); - assertEquals({ x: 2.1 }, clone); -} -testMutableInlineProperties() - -function testMutableOutOfLineProperties() { - const src = { a: 1, b: 2, c: 3 }; - src.x = 2.3; - const x0 = src.x; - const clone = { ...src, x: x0 + 1 }; - assertEquals(x0, src.x); - assertEquals({ a: 1, b: 2, c: 3, x: 3.3 }, clone); -} -testMutableOutOfLineProperties(); diff --git a/implementation-contributed/v8/mjsunit/es9/regexp-lookbehind.js b/implementation-contributed/v8/mjsunit/es9/regexp-lookbehind.js deleted file mode 100644 index c3aae317a94..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/regexp-lookbehind.js +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Simple fixed-length matches. -assertEquals(["a"], "a".match(/^.(?<=a)/)); -assertNull("b".match(/^.(?<=a)/)); -assertEquals(["foo"], "foo1".match(/^f..(?<=.oo)/)); -assertEquals(["foo"], "foo2".match(/^f\w\w(?<=\woo)/)); -assertNull("boo".match(/^f\w\w(?<=\woo)/)); -assertNull("fao".match(/^f\w\w(?<=\woo)/)); -assertNull("foa".match(/^f\w\w(?<=\woo)/)); -assertEquals(["def"], "abcdef".match(/(?<=abc)\w\w\w/)); -assertEquals(["def"], "abcdef".match(/(?<=a.c)\w\w\w/)); -assertEquals(["def"], "abcdef".match(/(?<=a\wc)\w\w\w/)); -assertEquals(["cde"], "abcdef".match(/(?<=a[a-z])\w\w\w/)); -assertEquals(["def"], "abcdef".match(/(?<=a[a-z][a-z])\w\w\w/)); -assertEquals(["def"], "abcdef".match(/(?<=a[a-z]{2})\w\w\w/)); -assertEquals(["bcd"], "abcdef".match(/(?<=a{1})\w\w\w/)); -assertEquals(["cde"], "abcdef".match(/(?<=a{1}b{1})\w\w\w/)); -assertEquals(["def"], "abcdef".match(/(?<=a{1}[a-z]{2})\w\w\w/)); - -// Variable-length matches. -assertEquals(["def"], "abcdef".match(/(?<=[a|b|c]*)[^a|b|c]{3}/)); -assertEquals(["def"], "abcdef".match(/(?<=\w*)[^a|b|c]{3}/)); - -// Start of line matches. -assertEquals(["def"], "abcdef".match(/(?<=^abc)def/)); -assertEquals(["def"], "abcdef".match(/(?<=^[a-c]{3})def/)); -assertEquals(["def"], "xyz\nabcdef".match(/(?<=^[a-c]{3})def/m)); -assertEquals(["ab", "cd", "efg"], "ab\ncd\nefg".match(/(?<=^)\w+/gm)); -assertEquals(["ab", "cd", "efg"], "ab\ncd\nefg".match(/\w+(?<=$)/gm)); -assertEquals(["ab", "cd", "efg"], "ab\ncd\nefg".match(/(?<=^)\w+(?<=$)/gm)); -assertNull("abcdef".match(/(?<=^[^a-c]{3})def/)); -assertNull("foooo".match(/"^foooo(?<=^o+)$/)); -assertNull("foooo".match(/"^foooo(?<=^o*)$/)); -assertEquals(["foo"], "foo".match(/^foo(?<=^fo+)$/)); -assertEquals(["foooo"], "foooo".match(/^foooo(?<=^fo*)/)); -assertEquals(["foo", "f"], "foo".match(/^(f)oo(?<=^\1o+)$/)); -assertEquals(["foo", "f"], "foo".match(/^(f)oo(?<=^\1o+)$/i)); -assertEquals(["foo\u1234", "f"], "foo\u1234".match(/^(f)oo(?<=^\1o+).$/i)); -assertEquals(["def"], "abcdefdef".match(/(?<=^\w+)def/)); -assertEquals(["def", "def"], "abcdefdef".match(/(?<=^\w+)def/g)); - -// Word boundary matches. -assertEquals(["def"], "abc def".match(/(?<=\b)[d-f]{3}/)); -assertEquals(["def"], "ab cdef".match(/(?<=\B)\w{3}/)); -assertEquals(["def"], "ab cdef".match(/(?<=\B)(?<=c(?<=\w))\w{3}/)); -assertNull("abcdef".match(/(?<=\b)[d-f]{3}/)); - -// Negative lookbehind. -assertEquals(["abc"], "abcdef".match(/(? {}; - -function spread() { return { ...p }; } - -assertEquals({ then }, spread()); -assertEquals({ then }, spread()); -assertEquals({ then }, spread()); -%OptimizeFunctionOnNextCall(spread); -assertEquals({ then }, spread()); diff --git a/implementation-contributed/v8/mjsunit/es9/regress/regress-866727.js b/implementation-contributed/v8/mjsunit/es9/regress/regress-866727.js deleted file mode 100644 index ddfcf7edf96..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/regress/regress-866727.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Check that IfException/IfSuccess rewiring works in JSInliner -function test() { - var spread = function(value) { return { ...value }; } - try { - assertEquals({}, spread()); - } catch (e) {} -} - -test(); -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); diff --git a/implementation-contributed/v8/mjsunit/es9/regress/regress-866861.js b/implementation-contributed/v8/mjsunit/es9/regress/regress-866861.js deleted file mode 100644 index dc6c764f5c9..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/regress/regress-866861.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check that property constness for out-of-object fields is valid -var o = {}; -var toString = o.toString = function() {}; -try { -assertEquals({ toString }, o = { ...o }); -} catch (e) {} -o.toString = []; diff --git a/implementation-contributed/v8/mjsunit/es9/regress/regress-867958.js b/implementation-contributed/v8/mjsunit/es9/regress/regress-867958.js deleted file mode 100644 index eca3f1e8b8d..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/regress/regress-867958.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check that encountering deprecated Maps does not cause CloneObjectIC to -// crash. -var obj1 = { x: 1 }; -var obj2 = { x: 2 }; // same map -obj2.x = null; // deprecate map - -function f() { return { ...obj1 } }; -assertEquals({ x: 1 }, f()); // missed, object migrated to cached new map -assertEquals({ x: 1 }, f()); // monomorphic cache-hit diff --git a/implementation-contributed/v8/mjsunit/es9/regress/regress-869342.js b/implementation-contributed/v8/mjsunit/es9/regress/regress-869342.js deleted file mode 100644 index fceb98e68f4..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/regress/regress-869342.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -function spread(o) { return { ...o }; } - -(function setupPolymorphicFeedback() { - function C1() { this.p0 = 1; } - function C2() { this.p1 = 2; this.p2 = 3; } - assertEquals({ p0: 1 }, spread(new C1)); - assertEquals({ p1: 2, p2: 3 }, spread(new C2)); -})(); - -gc(); // Clobber cached map in feedback[0], and check that we don't crash -function C3() { this.p0 = 3; } -assertEquals({ p0: 3 }, spread(new C3)); diff --git a/implementation-contributed/v8/mjsunit/es9/regress/regress-902965.js b/implementation-contributed/v8/mjsunit/es9/regress/regress-902965.js deleted file mode 100644 index e2035b242f2..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/regress/regress-902965.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Previously, spreading in-object properties would always treat double fields -// as tagged, potentially dereferencing a Float64. -function inobjectDouble() { - "use strict"; - this.x = -3.9; -} -const instance = new inobjectDouble(); -const clone = { ...instance, }; diff --git a/implementation-contributed/v8/mjsunit/es9/regress/regress-903070.js b/implementation-contributed/v8/mjsunit/es9/regress/regress-903070.js deleted file mode 100644 index cca02ee0c41..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/regress/regress-903070.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function clone(src) { - return { ...src }; -} - -function inobjectDoubles() { - "use strict"; - this.p0 = -6400510997704731; -} - -// Check that unboxed double is not treated as tagged -assertEquals({ p0: -6400510997704731 }, clone(new inobjectDoubles())); diff --git a/implementation-contributed/v8/mjsunit/es9/regress/regress-904167.js b/implementation-contributed/v8/mjsunit/es9/regress/regress-904167.js deleted file mode 100644 index 8986972a8fc..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/regress/regress-904167.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Previously, spreading in-object properties would always treat double fields -// as tagged, potentially dereferencing a Float64. - -// Ensure that we don't fail an assert from --verify-heap when cloning a -// MutableHeapNumber in the CloneObjectIC handler case. -var src, clone; -for (var i = 0; i < 40000; i++) { - src = { ...i, x: -9007199254740991 }; - clone = { ...src }; -} diff --git a/implementation-contributed/v8/mjsunit/es9/template-escapes.js b/implementation-contributed/v8/mjsunit/es9/template-escapes.js deleted file mode 100644 index d7af8bacc11..00000000000 --- a/implementation-contributed/v8/mjsunit/es9/template-escapes.js +++ /dev/null @@ -1,870 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function check({cooked, raw, exprs}) { - return function(strs, ...args) { - assertArrayEquals(cooked, strs); - assertArrayEquals(raw, strs.raw); - assertArrayEquals(exprs, args); - }; -} - -// clang-format off - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\01' - ], - 'exprs': [] -})`\01`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\01', - 'right' - ], - 'exprs': [ - 0 - ] -})`\01${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\01' - ], - 'exprs': [ - 0 - ] -})`left${0}\01`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\01', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\01${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\1' - ], - 'exprs': [] -})`\1`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\1', - 'right' - ], - 'exprs': [ - 0 - ] -})`\1${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\1' - ], - 'exprs': [ - 0 - ] -})`left${0}\1`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\1', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\1${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\xg' - ], - 'exprs': [] -})`\xg`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\xg', - 'right' - ], - 'exprs': [ - 0 - ] -})`\xg${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\xg' - ], - 'exprs': [ - 0 - ] -})`left${0}\xg`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\xg', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\xg${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\xAg' - ], - 'exprs': [] -})`\xAg`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\xAg', - 'right' - ], - 'exprs': [ - 0 - ] -})`\xAg${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\xAg' - ], - 'exprs': [ - 0 - ] -})`left${0}\xAg`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\xAg', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\xAg${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u0' - ], - 'exprs': [] -})`\u0`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u0', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u0${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u0' - ], - 'exprs': [ - 0 - ] -})`left${0}\u0`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u0', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u0${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u0g' - ], - 'exprs': [] -})`\u0g`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u0g', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u0g${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u0g' - ], - 'exprs': [ - 0 - ] -})`left${0}\u0g`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u0g', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u0g${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u00g' - ], - 'exprs': [] -})`\u00g`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u00g', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u00g${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u00g' - ], - 'exprs': [ - 0 - ] -})`left${0}\u00g`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u00g', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u00g${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u000g' - ], - 'exprs': [] -})`\u000g`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u000g', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u000g${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u000g' - ], - 'exprs': [ - 0 - ] -})`left${0}\u000g`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u000g', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u000g${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{}' - ], - 'exprs': [] -})`\u{}`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{}', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u{}${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{}' - ], - 'exprs': [ - 0 - ] -})`left${0}\u{}`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u{}${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{-0}' - ], - 'exprs': [] -})`\u{-0}`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{-0}', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u{-0}${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{-0}' - ], - 'exprs': [ - 0 - ] -})`left${0}\u{-0}`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{-0}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u{-0}${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{g}' - ], - 'exprs': [] -})`\u{g}`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{g}', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u{g}${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{g}' - ], - 'exprs': [ - 0 - ] -})`left${0}\u{g}`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{g}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u{g}${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{0' - ], - 'exprs': [] -})`\u{0`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{0', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u{0${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{0' - ], - 'exprs': [ - 0 - ] -})`left${0}\u{0`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{0', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u{0${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{\\u{0}' - ], - 'exprs': [] -})`\u{\u{0}`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{\\u{0}', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u{\u{0}${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{\\u{0}' - ], - 'exprs': [ - 0 - ] -})`left${0}\u{\u{0}`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{\\u{0}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u{\u{0}${1}right`; - -check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{110000}' - ], - 'exprs': [] -})`\u{110000}`; - -check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{110000}', - 'right' - ], - 'exprs': [ - 0 - ] -})`\u{110000}${0}right`; - -check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{110000}' - ], - 'exprs': [ - 0 - ] -})`left${0}\u{110000}`; - -check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{110000}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] -})`left${0}\u{110000}${1}right`; - - - -function checkMultiple(expectedArray) { - let results = []; - return function consume(strs, ...args) { - if (typeof strs === 'undefined') { - assertArrayEquals(expectedArray, results); - } else { - results.push({cooked: strs, raw: strs.raw, exprs: args}); - return consume; - } - }; -} - - -checkMultiple([{ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] -}, { - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] -}])`\u``\u`(); - -checkMultiple([{ - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] -}, { - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] -}])` ``\u`(); - -checkMultiple([{ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] -}, { - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] -}])`\u`` `(); - -checkMultiple([{ - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] -}, { - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] -}])` `` `(); diff --git a/implementation-contributed/v8/mjsunit/escape.js b/implementation-contributed/v8/mjsunit/escape.js deleted file mode 100644 index 5732ce3ae06..00000000000 --- a/implementation-contributed/v8/mjsunit/escape.js +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * @fileoverview Check that the global escape and unescape functions work - * right. - */ - -// Section B.2.1 of ECMAScript 3 -var unescaped = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./"; - -// Check the unescape chars are not escaped -assertEquals(unescaped, escape(unescaped)); -// Check spaces are escaped -assertEquals("%20/%20", escape(" / ")); -// Check that null chars are escaped and do not terminate the string -assertEquals("%000", escape("\0" + "0")); -// Check a unicode escape -assertEquals("A%20B%u1234%00%20C", escape(String.fromCharCode(0x41, 0x20, 0x42, 0x1234, 0, 0x20, 0x43))); -// Check unicode escapes have a leading zero to pad to 4 digits -assertEquals("%u0123", escape(String.fromCharCode(0x123))); -// Check escapes are upper case -assertEquals("%uABCD", escape(String.fromCharCode(0xabcd))); -assertEquals("%AB", escape(String.fromCharCode(0xab))); -assertEquals("%0A", escape("\n")); - -// Check first 1000 chars individually for escaped/not escaped -for (var i = 0; i < 1000; i++) { - var s = String.fromCharCode(i); - if (unescaped.indexOf(s, 0) == -1) { - assertFalse(s == escape(s)); - } else { - assertTrue(s == escape(s)); - } -} - -// Check all chars up to 1000 in groups of 10 using unescape as a check -for (var i = 0; i < 1000; i += 10) { - var s = String.fromCharCode(i, i+1, i+2, i+3, i+4, i+5, i+6, i+7, i+8, i+9); - assertEquals(s, unescape(escape(s))); -} - -// Benchmark -var example = "Now is the time for all good men to come to the aid of the party."; -example = example + String.fromCharCode(267, 0x1234, 0x6667, 0xabcd); -example = example + " The quick brown fox jumps over the lazy dog." -example = example + String.fromCharCode(171, 172, 173, 174, 175, 176, 178, 179); - -for (var i = 0; i < 3000; i++) { - assertEquals(example, unescape(escape(example))); -} - -// Check unescape can cope with upper and lower case -assertEquals(unescape("%41%4A%4a"), "AJJ"); - -// Check upper case U -assertEquals("%U1234", unescape("%U1234")); - -// Check malformed unescapes -assertEquals("%", unescape("%")); -assertEquals("%4", unescape("%4")); -assertEquals("%u", unescape("%u")); -assertEquals("%u4", unescape("%u4")); -assertEquals("%u44", unescape("%u44")); -assertEquals("%u444", unescape("%u444")); -assertEquals("%4z", unescape("%4z")); -assertEquals("%uzzzz", unescape("%uzzzz")); -assertEquals("%u4zzz", unescape("%u4zzz")); -assertEquals("%u44zz", unescape("%u44zz")); -assertEquals("%u444z", unescape("%u444z")); -assertEquals("%4<", unescape("%4<")); -assertEquals("%u<<<<", unescape("%u<<<<")); -assertEquals("%u4<<<", unescape("%u4<<<")); -assertEquals("%u44<<", unescape("%u44<<")); -assertEquals("%u444<", unescape("%u444<")); -assertEquals("foo%4<", unescape("foo%4<")); -assertEquals("foo%u<<<<", unescape("foo%u<<<<")); -assertEquals("foo%u4<<<", unescape("foo%u4<<<")); -assertEquals("foo%u44<<", unescape("foo%u44<<")); -assertEquals("foo%u444<", unescape("foo%u444<")); -assertEquals("foo%4 -1; -} - -// Check for every frame that a certain method returns the -// expected value for every frame. -Array.prototype.verifyEquals = function(frames, func_name) { - this.forEach( - function(element, index) { - var frame = frames[index]; - if (element === null) return; - assertEquals(element, (frame[func_name])()); - } - ); -} - -// Check for every frame that a certain method has a return value -// that contains the expected pattern for every frame. -Array.prototype.verifyContains = function(frames, func_name) { - this.forEach( - function(element, index) { - var frame = frames[index]; - if (element === null) return; - assertTrue((frame[func_name])().contains(element)); - } - ); -} - -// Check for every frame that a certain method returns undefined -// when expected. -Array.prototype.verifyUndefined = function(frames, func_name) { - this.forEach( - function(element, index) { - var frame = frames[index]; - if (element === null) return; - assertEquals(element, (frame[func_name])() === undefined); - } - ); -} - - -// Simple eval. -var code1 = "function f() { \n" + - " throw new Error(3); \n" + // Line 2 - "} \n" + - "f(); \n"; // Line 4 - -function g() { - eval(code1); -} - -try { - g(); -} catch (e) { - // We expect something like - // f (eval at g (eval-stack.js:87:8), :2:9) - // eval (eval at g (eval-stack.js:87:8), :4:1) - // g (eval-stack.js:87:3) - // eval-stack.js:94:3 - var frames = e.getFrames(); - assertEquals(4, frames.length); - ["f", "eval", "g"] - .verifyEquals(frames, "getFunctionName"); - [2, 4] - .verifyEquals(frames, "getLineNumber"); - [":2:", ":4:"] - .verifyContains(frames, "toString"); - [true, true, false, false] - .verifyUndefined(frames, "getFileName"); - ["eval at g", "eval at g"] - .verifyContains(frames, "getEvalOrigin"); -} - - -// Nested eval. -var code2 = "function h() { \n" + - " // Empty \n" + - " eval(code1); \n" + // Line 3 - "} \n" + - "h(); \n"; // Line 5 - -try { - eval(code2); -} catch (e) { - // We expect something like - // f (eval at h (eval at (eval-stack.js:116:8)), - // :2:9) - // eval (eval at h (eval at (eval-stack.js:116:8)), - // :4:1) - // h (eval at (eval-stack.js:116:8), :3:3) - // eval (eval at (eval-stack.js:116:8), :5:1) - // eval-stack.js:116:3 - var frames = e.getFrames(); - assertEquals(5, frames.length); - ["f", "eval", "h", "eval"] - .verifyEquals(frames, "getFunctionName"); - [2, 4, 3, 5] - .verifyEquals(frames, "getLineNumber"); - [":2:", ":4:", ":3:", ":5:"] - .verifyContains(frames, "toString"); - [true, true, true, true, false] - .verifyUndefined(frames, "getFileName"); - ["eval at h (eval at (", - "eval at h (eval at (", - "eval at (", - "eval at ("] - .verifyContains(frames, "getEvalOrigin"); -} - - -// Nested eval calling through non-eval defined function. -var code3 = "function h() { \n" + - " // Empty \n" + - " g(); \n" + // Line 3 - "} \n" + - "h(); \n"; // Line 5 - -try { - eval(code3); -} catch (e) { - // We expect something like - // f (eval at g (test.js:83:8), :2:9) - // eval (eval at g (test.js:83:8), :4:1) - // g (test.js:83:3) - // h (eval at (test.js:149:8), :3:3) - // eval (eval at (test.js:149:8), :5:1) - // test.js:149:3 - var frames = e.getFrames(); - assertEquals(6, frames.length); - ["f", "eval", "g", "h", "eval"] - .verifyEquals(frames, "getFunctionName"); - [2, 4, null, 3, 5] - .verifyEquals(frames, "getLineNumber"); - [":2:", ":4:", null, ":3:", ":5:"] - .verifyContains(frames, "toString"); - [true, true, false, true, true, false] - .verifyUndefined(frames, "getFileName"); - ["eval at g (", - "eval at g (", - null, - "eval at (", - "eval at ("] - .verifyContains(frames, "getEvalOrigin"); -} - - -// Calling function defined in eval. -eval("function f() { \n" + - " throw new Error(3); \n" + - "} \n"); - -try { - f(); -} catch (e) { - // We expect something like - // f (eval at (test.js:182:40), :2:9) - // test.js:186:3 - var frames = e.getFrames(); - assertEquals(2, frames.length); - ["f"].verifyEquals(frames, "getFunctionName"); - [2].verifyEquals(frames, "getLineNumber"); - [":2:"].verifyContains(frames, "toString"); - [true, false].verifyUndefined(frames, "getFileName"); - ["eval at ("].verifyContains(frames, "getEvalOrigin"); -} diff --git a/implementation-contributed/v8/mjsunit/eval-typeof-non-existing.js b/implementation-contributed/v8/mjsunit/eval-typeof-non-existing.js deleted file mode 100644 index 8cc6d0bcd33..00000000000 --- a/implementation-contributed/v8/mjsunit/eval-typeof-non-existing.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Typeof expression must resolve to 'undefined' when it used on a -// non-existing property. It is *not* allowed to throw a -// ReferenceError. -assertEquals('undefined', typeof xxx); -assertEquals('undefined', eval('typeof xxx')); - -assertThrows('typeof(true ? xxx : yyy)', ReferenceError); -assertThrows('with ({}) { typeof(true ? xxx : yyy) }', ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/eval.js b/implementation-contributed/v8/mjsunit/eval.js deleted file mode 100644 index 100f21653fb..00000000000 --- a/implementation-contributed/v8/mjsunit/eval.js +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(void 0, eval()); -assertEquals(4, eval(4)); - -function f() { return 'The f function'; }; -assertTrue(f === eval(f)); - -function g(x, y) { return 4; }; - -count = 0; -assertEquals(4, eval('2 + 2', count++)); -assertEquals(1, count); - -try { - eval('hest 7 &*^*&^'); - assertUnreachable('Did not throw on syntax error.'); -} catch (e) { - assertEquals('SyntaxError', e.name); -} - - -// eval has special evaluation order for consistency with other browsers. -global_eval = eval; -assertEquals(void 0, eval(eval("var eval = function f(x) { return 'hest';}"))) -eval = global_eval; - -// Test eval with different number of parameters. -global_eval = eval; -eval = function(x, y) { return x + y; }; -assertEquals(4, eval(2, 2)); -eval = global_eval; - -// Test that un-aliased eval reads from local context. -foo = 0; -result = - (function() { - var foo = 2; - return eval('foo'); - })(); -assertEquals(2, result); - -// Test that un-aliased eval writes to local context. -foo = 0; -result = - (function() { - var foo = 1; - eval('foo = 2'); - return foo; - })(); -assertEquals(2, result); -assertEquals(0, foo); - -// Test that un-aliased eval has right receiver. -function MyObject() { this.self = eval('this'); } -var o = new MyObject(); -assertTrue(o === o.self); - -// Test that aliased eval reads from global context. -var e = eval; -foo = 0; -result = - (function() { - var foo = 2; - return e('foo'); - })(); -assertEquals(0, result); - -// Test that aliased eval writes to global context. -var e = eval; -foo = 0; -(function() { e('var foo = 2;'); })(); -assertEquals(2, foo); - -// Test that aliased eval has right receiver. -function MyOtherObject() { this.self = e('this'); } -var o = new MyOtherObject(); -assertTrue(this === o.self); - -// Try to cheat the 'aliased eval' detection. -var x = this; -foo = 0; -result = - (function() { - var foo = 2; - // Should be non-direct call. - return x.eval('foo'); - })(); -assertEquals(0, result); - -foo = 0; -result = - (function() { - var foo = 2; - // Should be non-direct call. - return (1,eval)('foo'); - })(); -assertEquals(0, result); - -foo = 0; -result = - (function() { - var eval = function(x) { return x; }; - var foo = eval(2); - // Should be non-direct call. - return e('foo'); - })(); -assertEquals(0, result); - -foo = 0; -result = - (function() { - var foo = 2; - // Should be direct call. - with ({ eval : e }) { - return eval('foo'); - } - })(); -assertEquals(2, result); - -result = - (function() { - var eval = function(x) { return 2 * x; }; - return (function() { return eval(2); })(); - })(); -assertEquals(4, result); - -result = - (function() { - eval("var eval = function(s) { return this; }"); - return eval("42"); // Should return the global object - })(); -assertEquals(this, result); - -(function() { - var obj = { f: function(eval) { return eval("this"); } }; - result = obj.f(eval); - assertEquals(obj, result); -})(); - -(function() { - var obj = { f: function(eval) { arguments; return eval("this"); } }; - result = obj.f(eval); - assertEquals(obj, result); -})(); - -eval = function(x) { return 2 * x; }; -result = - (function() { - return (function() { return eval(2); })(); - })(); -assertEquals(4, result); - - - - -// Regression test: calling a function named eval found in a context that is -// not the global context should get the global object as receiver. -result = - (function () { - var eval = function (x) { return this; }; - with ({}) { return eval('ignore'); } - })(); -assertEquals(this, result); diff --git a/implementation-contributed/v8/mjsunit/external-array.js b/implementation-contributed/v8/mjsunit/external-array.js deleted file mode 100644 index 78f27809b7c..00000000000 --- a/implementation-contributed/v8/mjsunit/external-array.js +++ /dev/null @@ -1,715 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Helper -function assertInstance(o, f) { - assertSame(o.constructor, f); - assertInstanceof(o, f); -} - -// This is a regression test for overlapping key and value registers. -function f(a) { - a[0] = 0; - a[1] = 0; -} - -var a = new Int32Array(2); -for (var i = 0; i < 5; i++) { - f(a); -} -%OptimizeFunctionOnNextCall(f); -f(a); - -assertEquals(0, a[0]); -assertEquals(0, a[1]); - -// Test derivation from an ArrayBuffer -var ab = new ArrayBuffer(12); -assertInstance(ab, ArrayBuffer); -var derived_uint8 = new Uint8Array(ab); -assertInstance(derived_uint8, Uint8Array); -assertSame(ab, derived_uint8.buffer); -assertEquals(12, derived_uint8.length); -assertEquals(12, derived_uint8.byteLength); -assertEquals(0, derived_uint8.byteOffset); -assertEquals(1, derived_uint8.BYTES_PER_ELEMENT); -var derived_uint8_2 = new Uint8Array(ab,7); -assertInstance(derived_uint8_2, Uint8Array); -assertSame(ab, derived_uint8_2.buffer); -assertEquals(5, derived_uint8_2.length); -assertEquals(5, derived_uint8_2.byteLength); -assertEquals(7, derived_uint8_2.byteOffset); -assertEquals(1, derived_uint8_2.BYTES_PER_ELEMENT); -var derived_int16 = new Int16Array(ab); -assertInstance(derived_int16, Int16Array); -assertSame(ab, derived_int16.buffer); -assertEquals(6, derived_int16.length); -assertEquals(12, derived_int16.byteLength); -assertEquals(0, derived_int16.byteOffset); -assertEquals(2, derived_int16.BYTES_PER_ELEMENT); -var derived_int16_2 = new Int16Array(ab,6); -assertInstance(derived_int16_2, Int16Array); -assertSame(ab, derived_int16_2.buffer); -assertEquals(3, derived_int16_2.length); -assertEquals(6, derived_int16_2.byteLength); -assertEquals(6, derived_int16_2.byteOffset); -assertEquals(2, derived_int16_2.BYTES_PER_ELEMENT); -var derived_uint32 = new Uint32Array(ab); -assertInstance(derived_uint32, Uint32Array); -assertSame(ab, derived_uint32.buffer); -assertEquals(3, derived_uint32.length); -assertEquals(12, derived_uint32.byteLength); -assertEquals(0, derived_uint32.byteOffset); -assertEquals(4, derived_uint32.BYTES_PER_ELEMENT); -var derived_uint32_2 = new Uint32Array(ab,4); -assertInstance(derived_uint32_2, Uint32Array); -assertSame(ab, derived_uint32_2.buffer); -assertEquals(2, derived_uint32_2.length); -assertEquals(8, derived_uint32_2.byteLength); -assertEquals(4, derived_uint32_2.byteOffset); -assertEquals(4, derived_uint32_2.BYTES_PER_ELEMENT); -var derived_uint32_3 = new Uint32Array(ab,4,1); -assertInstance(derived_uint32_3, Uint32Array); -assertSame(ab, derived_uint32_3.buffer); -assertEquals(1, derived_uint32_3.length); -assertEquals(4, derived_uint32_3.byteLength); -assertEquals(4, derived_uint32_3.byteOffset); -assertEquals(4, derived_uint32_3.BYTES_PER_ELEMENT); -var derived_float64 = new Float64Array(ab,0,1); -assertInstance(derived_float64, Float64Array); -assertSame(ab, derived_float64.buffer); -assertEquals(1, derived_float64.length); -assertEquals(8, derived_float64.byteLength); -assertEquals(0, derived_float64.byteOffset); -assertEquals(8, derived_float64.BYTES_PER_ELEMENT); - -// If a given byteOffset and length references an area beyond the end of the -// ArrayBuffer an exception is raised. -function abfunc3() { - new Uint32Array(ab,4,3); -} -assertThrows(abfunc3); -function abfunc4() { - new Uint32Array(ab,16); -} -assertThrows(abfunc4); - -// The given byteOffset must be a multiple of the element size of the specific -// type, otherwise an exception is raised. -function abfunc5() { - new Uint32Array(ab,5); -} -assertThrows(abfunc5); - -// If length is not explicitly specified, the length of the ArrayBuffer minus -// the byteOffset must be a multiple of the element size of the specific type, -// or an exception is raised. -var ab2 = new ArrayBuffer(13); -function abfunc6() { - new Uint32Array(ab2,4); -} -assertThrows(abfunc6); - -// Test that an array constructed without an array buffer creates one properly. -a = new Uint8Array(31); -assertEquals(a.byteLength, a.buffer.byteLength); -assertEquals(a.length, a.buffer.byteLength); -assertEquals(a.length * a.BYTES_PER_ELEMENT, a.buffer.byteLength); -a = new Int16Array(5); -assertEquals(a.byteLength, a.buffer.byteLength); -assertEquals(a.length * a.BYTES_PER_ELEMENT, a.buffer.byteLength); -a = new Float64Array(7); -assertEquals(a.byteLength, a.buffer.byteLength); -assertEquals(a.length * a.BYTES_PER_ELEMENT, a.buffer.byteLength); - -// Test that an implicitly created buffer is a valid buffer. -a = new Float64Array(7); -assertSame(a.buffer, (new Uint16Array(a.buffer)).buffer); -assertSame(a.buffer, (new Float32Array(a.buffer,4)).buffer); -assertSame(a.buffer, (new Int8Array(a.buffer,3,51)).buffer); -assertInstance(a.buffer, ArrayBuffer); - -// Test the correct behavior of the |BYTES_PER_ELEMENT| property -a = new Int32Array(2); -assertEquals(4, a.BYTES_PER_ELEMENT); -a.BYTES_PER_ELEMENT = 42; -a = new Uint8Array(2); -assertEquals(1, a.BYTES_PER_ELEMENT); -a = new Int16Array(2); -assertEquals(2, a.BYTES_PER_ELEMENT); - -// Test Float64Arrays. -function get(a, index) { - return a[index]; -} -function set(a, index, value) { - a[index] = value; -} -function temp() { -var array = new Float64Array(2); -for (var i = 0; i < 5; i++) { - set(array, 0, 2.5); - assertEquals(2.5, array[0]); -} -%OptimizeFunctionOnNextCall(set); -set(array, 0, 2.5); -assertEquals(2.5, array[0]); -set(array, 1, 3.5); -assertEquals(3.5, array[1]); -for (var i = 0; i < 5; i++) { - assertEquals(2.5, get(array, 0)); - assertEquals(3.5, array[1]); -} -%OptimizeFunctionOnNextCall(get); -assertEquals(2.5, get(array, 0)); -assertEquals(3.5, get(array, 1)); -} - -// Test non-number parameters. -var array_with_length_from_non_number = new Int32Array("2"); -assertEquals(2, array_with_length_from_non_number.length); - -// Test loads and stores. -types = [Array, Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, - Uint32Array, Uint8ClampedArray, Float32Array, Float64Array]; - -test_result_nan = [NaN, 0, 0, 0, 0, 0, 0, 0, NaN, NaN]; -test_result_low_int = [-1, -1, 255, -1, 65535, -1, 0xFFFFFFFF, 0, -1, -1]; -test_result_low_double = [-1.25, -1, 255, -1, 65535, -1, 0xFFFFFFFF, 0, -1.25, -1.25]; -test_result_middle = [253.75, -3, 253, 253, 253, 253, 253, 254, 253.75, 253.75]; -test_result_high_int = [256, 0, 0, 256, 256, 256, 256, 255, 256, 256]; -test_result_high_double = [256.25, 0, 0, 256, 256, 256, 256, 255, 256.25, 256.25]; - -const kElementCount = 40; - -function test_load(array, sum) { - for (var i = 0; i < kElementCount; i++) { - sum += array[i]; - } - return sum; -} - -function test_load_const_key(array, sum) { - sum += array[0]; - sum += array[1]; - sum += array[2]; - return sum; -} - -function test_store(array, sum) { - for (var i = 0; i < kElementCount; i++) { - sum += array[i] = i+1; - } - return sum; -} - -function test_store_const_key(array, sum) { - sum += array[0] = 1; - sum += array[1] = 2; - sum += array[2] = 3; - return sum; -} - -function zero() { - return 0.0; -} - -function test_store_middle_tagged(array, sum) { - array[0] = 253.75; - return array[0]; -} - -function test_store_high_tagged(array, sum) { - array[0] = 256.25; - return array[0]; -} - -function test_store_middle_double(array, sum) { - array[0] = 253.75 + zero(); // + forces double type feedback - return array[0]; -} - -function test_store_high_double(array, sum) { - array[0] = 256.25 + zero(); // + forces double type feedback - return array[0]; -} - -function test_store_high_double(array, sum) { - array[0] = 256.25; - return array[0]; -} - -function test_store_low_int(array, sum) { - array[0] = -1; - return array[0]; -} - -function test_store_low_tagged(array, sum) { - array[0] = -1.25; - return array[0]; -} - -function test_store_low_double(array, sum) { - array[0] = -1.25 + zero(); // + forces double type feedback - return array[0]; -} - -function test_store_high_int(array, sum) { - array[0] = 256; - return array[0]; -} - -function test_store_nan(array, sum) { - array[0] = NaN; - return array[0]; -} - -const kRuns = 10; - -function run_test(test_func, array, expected_result) { - for (var i = 0; i < 5; i++) test_func(array, 0); - %OptimizeFunctionOnNextCall(test_func); - var sum = 0; - for (var i = 0; i < kRuns; i++) { - sum = test_func(array, sum); - } - assertEquals(expected_result, sum); - %DeoptimizeFunction(test_func); - %ClearFunctionFeedback(test_func); -} - -function run_bounds_test(test_func, array, expected_result) { - assertEquals(undefined, a[kElementCount]); - a[kElementCount] = 456; - assertEquals(undefined, a[kElementCount]); - assertEquals(undefined, a[kElementCount+1]); - a[kElementCount+1] = 456; - assertEquals(undefined, a[kElementCount+1]); -} - -for (var t = 0; t < types.length; t++) { - var type = types[t]; - var a = new type(kElementCount); - - for (var i = 0; i < kElementCount; i++) { - a[i] = i; - } - - // Run test functions defined above. - run_test(test_load, a, 780 * kRuns); - run_test(test_load_const_key, a, 3 * kRuns); - run_test(test_store, a, 820 * kRuns); - run_test(test_store_const_key, a, 6 * kRuns); - run_test(test_store_low_int, a, test_result_low_int[t]); - run_test(test_store_low_double, a, test_result_low_double[t]); - run_test(test_store_low_tagged, a, test_result_low_double[t]); - run_test(test_store_high_int, a, test_result_high_int[t]); - run_test(test_store_nan, a, test_result_nan[t]); - run_test(test_store_middle_double, a, test_result_middle[t]); - run_test(test_store_middle_tagged, a, test_result_middle[t]); - run_test(test_store_high_double, a, test_result_high_double[t]); - run_test(test_store_high_tagged, a, test_result_high_double[t]); - - // Test the correct behavior of the |length| property (which is read-only). - if (t != 0) { - assertEquals(kElementCount, a.length); - a.length = 2; - assertEquals(kElementCount, a.length); - assertTrue(delete a.length); - - // Make sure bounds checks are handled correctly for external arrays. - run_bounds_test(a); - run_bounds_test(a); - run_bounds_test(a); - %OptimizeFunctionOnNextCall(run_bounds_test); - run_bounds_test(a); - %DeoptimizeFunction(run_bounds_test); - %ClearFunctionFeedback(run_bounds_test); - } - - function array_load_set_smi_check(a) { - return a[0] = a[0] = 1; - } - - array_load_set_smi_check(a); - array_load_set_smi_check(0); - - function array_load_set_smi_check2(a) { - return a[0] = a[0] = 1; - } - - array_load_set_smi_check2(a); - %OptimizeFunctionOnNextCall(array_load_set_smi_check2); - array_load_set_smi_check2(a); - array_load_set_smi_check2(0); - %DeoptimizeFunction(array_load_set_smi_check2); - %ClearFunctionFeedback(array_load_set_smi_check2); -} - -// Check handling of undefined in 32- and 64-bit external float arrays. - -function store_float32_undefined(ext_array) { - ext_array[0] = undefined; -} - -var float32_array = new Float32Array(1); -// Make sure runtime does it right -store_float32_undefined(float32_array); -assertTrue(isNaN(float32_array[0])); -// Make sure the ICs do it right -store_float32_undefined(float32_array); -assertTrue(isNaN(float32_array[0])); -// Make sure that Cranskshft does it right. -%OptimizeFunctionOnNextCall(store_float32_undefined); -store_float32_undefined(float32_array); -assertTrue(isNaN(float32_array[0])); - -function store_float64_undefined(ext_array) { - ext_array[0] = undefined; -} - -var float64_array = new Float64Array(1); -// Make sure runtime does it right -store_float64_undefined(float64_array); -assertTrue(isNaN(float64_array[0])); -// Make sure the ICs do it right -store_float64_undefined(float64_array); -assertTrue(isNaN(float64_array[0])); -// Make sure that Cranskshft does it right. -%OptimizeFunctionOnNextCall(store_float64_undefined); -store_float64_undefined(float64_array); -assertTrue(isNaN(float64_array[0])); - - -// Check handling of 0-sized buffers and arrays. -ab = new ArrayBuffer(0); -assertInstance(ab, ArrayBuffer); -assertEquals(0, ab.byteLength); -a = new Int8Array(ab); -assertInstance(a, Int8Array); -assertEquals(0, a.byteLength); -assertEquals(0, a.length); -a[0] = 1; -assertEquals(undefined, a[0]); -ab = new ArrayBuffer(16); -assertInstance(ab, ArrayBuffer); -a = new Float32Array(ab,4,0); -assertInstance(a, Float32Array); -assertEquals(0, a.byteLength); -assertEquals(0, a.length); -a[0] = 1; -assertEquals(undefined, a[0]); -a = new Uint16Array(0); -assertInstance(a, Uint16Array); -assertEquals(0, a.byteLength); -assertEquals(0, a.length); -a[0] = 1; -assertEquals(undefined, a[0]); - -// Check construction from arrays. -a = new Uint32Array([]); -assertInstance(a, Uint32Array); -assertEquals(0, a.length); -assertEquals(0, a.byteLength); -assertEquals(0, a.buffer.byteLength); -assertEquals(4, a.BYTES_PER_ELEMENT); -assertInstance(a.buffer, ArrayBuffer); -a = new Uint16Array([1,2,3]); -assertInstance(a, Uint16Array); -assertEquals(3, a.length); -assertEquals(6, a.byteLength); -assertEquals(6, a.buffer.byteLength); -assertEquals(2, a.BYTES_PER_ELEMENT); -assertEquals(1, a[0]); -assertEquals(3, a[2]); -assertInstance(a.buffer, ArrayBuffer); -a = new Uint32Array(a); -assertInstance(a, Uint32Array); -assertEquals(3, a.length); -assertEquals(12, a.byteLength); -assertEquals(12, a.buffer.byteLength); -assertEquals(4, a.BYTES_PER_ELEMENT); -assertEquals(1, a[0]); -assertEquals(3, a[2]); -assertInstance(a.buffer, ArrayBuffer); - -// Check subarrays. -a = new Uint16Array([1,2,3,4,5,6]); -aa = a.subarray(3); -assertInstance(aa, Uint16Array); -assertEquals(3, aa.length); -assertEquals(6, aa.byteLength); -assertEquals(2, aa.BYTES_PER_ELEMENT); -assertSame(a.buffer, aa.buffer); -aa = a.subarray(3,5); -assertInstance(aa, Uint16Array); -assertEquals(2, aa.length); -assertEquals(4, aa.byteLength); -assertEquals(2, aa.BYTES_PER_ELEMENT); -assertSame(a.buffer, aa.buffer); -aa = a.subarray(4,8); -assertInstance(aa, Uint16Array); -assertEquals(2, aa.length); -assertEquals(4, aa.byteLength); -assertEquals(2, aa.BYTES_PER_ELEMENT); -assertSame(a.buffer, aa.buffer); -aa = a.subarray(9); -assertInstance(aa, Uint16Array); -assertEquals(0, aa.length); -assertEquals(0, aa.byteLength); -assertEquals(2, aa.BYTES_PER_ELEMENT); -assertSame(a.buffer, aa.buffer); -aa = a.subarray(-4); -assertInstance(aa, Uint16Array); -assertEquals(4, aa.length); -assertEquals(8, aa.byteLength); -assertEquals(2, aa.BYTES_PER_ELEMENT); -assertSame(a.buffer, aa.buffer); -aa = a.subarray(-3,-1); -assertInstance(aa, Uint16Array); -assertEquals(2, aa.length); -assertEquals(4, aa.byteLength); -assertEquals(2, aa.BYTES_PER_ELEMENT); -assertSame(a.buffer, aa.buffer); -aa = a.subarray(3,2); -assertInstance(aa, Uint16Array); -assertEquals(0, aa.length); -assertEquals(0, aa.byteLength); -assertEquals(2, aa.BYTES_PER_ELEMENT); -assertSame(a.buffer, aa.buffer); -aa = a.subarray(-3,-4); -assertInstance(aa, Uint16Array); -assertEquals(0, aa.length); -assertEquals(0, aa.byteLength); -assertEquals(2, aa.BYTES_PER_ELEMENT); -assertSame(a.buffer, aa.buffer); -aa = a.subarray(0,-8); -assertInstance(aa, Uint16Array); -assertEquals(0, aa.length); -assertEquals(0, aa.byteLength); -assertEquals(2, aa.BYTES_PER_ELEMENT); -assertSame(a.buffer, aa.buffer); - -assertThrows(function(){ a.subarray.call({}, 0) }); -assertThrows(function(){ a.subarray.call([], 0) }); - -// Try to call constructors directly as functions, and through .call -// and .apply. Should fail. - -assertThrows(function() { ArrayBuffer(100); }, TypeError); -assertThrows(function() { Int8Array(b, 5, 77); }, TypeError); -assertThrows(function() { ArrayBuffer.call(null, 10); }, TypeError); -assertThrows(function() { Uint16Array.call(null, b, 2, 4); }, TypeError); -assertThrows(function() { ArrayBuffer.apply(null, [1000]); }, TypeError); -assertThrows(function() { Float32Array.apply(null, [b, 128, 1]); }, TypeError); - -// Test array.set in different combinations. -var b = new ArrayBuffer(4) - -function assertArrayPrefix(expected, array) { - for (var i = 0; i < expected.length; ++i) { - assertEquals(expected[i], array[i]); - } -} - -var a11 = new Int16Array([1, 2, 3, 4, 0, -1]) -var a12 = new Uint16Array(15) -a12.set(a11, 3) -assertArrayPrefix([0, 0, 0, 1, 2, 3, 4, 0, 0xffff, 0, 0], a12) -assertThrows(function(){ a11.set(a12) }) - -var a21 = [1, undefined, 10, NaN, 0, -1, {valueOf: function() {return 3}}] -var a22 = new Int32Array(12) -a22.set(a21, 2) -assertArrayPrefix([0, 0, 1, 0, 10, 0, 0, -1, 3, 0], a22) - -var a31 = new Float32Array([2, 4, 6, 8, 11, NaN, 1/0, -3]) -var a32 = a31.subarray(2, 6) -a31.set(a32, 4) -assertArrayPrefix([2, 4, 6, 8, 6, 8, 11, NaN], a31) -assertArrayPrefix([6, 8, 6, 8], a32) - -var a4 = new Uint8ClampedArray([3,2,5,6]) -a4.set(a4) -assertArrayPrefix([3, 2, 5, 6], a4) - -// Cases with overlapping backing store but different element sizes. -var b = new ArrayBuffer(4) -var a5 = new Int16Array(b) -var a50 = new Int8Array(b) -var a51 = new Int8Array(b, 0, 2) -var a52 = new Int8Array(b, 1, 2) -var a53 = new Int8Array(b, 2, 2) - -a5.set([0x5050, 0x0a0a]) -assertArrayPrefix([0x50, 0x50, 0x0a, 0x0a], a50) -assertArrayPrefix([0x50, 0x50], a51) -assertArrayPrefix([0x50, 0x0a], a52) -assertArrayPrefix([0x0a, 0x0a], a53) - -a50.set([0x50, 0x50, 0x0a, 0x0a]) -a51.set(a5) -assertArrayPrefix([0x50, 0x0a, 0x0a, 0x0a], a50) - -a50.set([0x50, 0x50, 0x0a, 0x0a]) -a52.set(a5) -assertArrayPrefix([0x50, 0x50, 0x0a, 0x0a], a50) - -a50.set([0x50, 0x50, 0x0a, 0x0a]) -a53.set(a5) -assertArrayPrefix([0x50, 0x50, 0x50, 0x0a], a50) - -a50.set([0x50, 0x51, 0x0a, 0x0b]) -a5.set(a51) -assertArrayPrefix([0x0050, 0x0051], a5) - -a50.set([0x50, 0x51, 0x0a, 0x0b]) -a5.set(a52) -assertArrayPrefix([0x0051, 0x000a], a5) - -a50.set([0x50, 0x51, 0x0a, 0x0b]) -a5.set(a53) -assertArrayPrefix([0x000a, 0x000b], a5) - -// Mixed types of same size. -var a61 = new Float32Array([1.2, 12.3]) -var a62 = new Int32Array(2) -a62.set(a61) -assertArrayPrefix([1, 12], a62) -a61.set(a62) -assertArrayPrefix([1, 12], a61) - -// Invalid source -assertThrows(function() { a.set(0); }, TypeError); -assertArrayPrefix([1,2,3,4,5,6], a); -a.set({}); // does not throw -assertArrayPrefix([1,2,3,4,5,6], a); - - -// Test arraybuffer.slice - -var a0 = new Int8Array([1, 2, 3, 4, 5, 6]) -var b0 = a0.buffer - -var b1 = b0.slice(0) -assertEquals(b0.byteLength, b1.byteLength) -assertArrayPrefix([1, 2, 3, 4, 5, 6], new Int8Array(b1)) - -var b2 = b0.slice(3) -assertEquals(b0.byteLength - 3, b2.byteLength) -assertArrayPrefix([4, 5, 6], new Int8Array(b2)) - -var b3 = b0.slice(2, 4) -assertEquals(2, b3.byteLength) -assertArrayPrefix([3, 4], new Int8Array(b3)) - -function goo(a, i) { - return a[i]; -} - -function boo(a, i, v) { - return a[i] = v; -} - -function do_tagged_index_external_array_test(constructor) { - var t_array = new constructor([1, 2, 3, 4, 5, 6]); - assertEquals(1, goo(t_array, 0)); - assertEquals(1, goo(t_array, 0)); - boo(t_array, 0, 13); - assertEquals(13, goo(t_array, 0)); - %OptimizeFunctionOnNextCall(goo); - %OptimizeFunctionOnNextCall(boo); - boo(t_array, 0, 15); - assertEquals(15, goo(t_array, 0)); - %ClearFunctionFeedback(goo); - %ClearFunctionFeedback(boo); -} - -do_tagged_index_external_array_test(Int8Array); -do_tagged_index_external_array_test(Uint8Array); -do_tagged_index_external_array_test(Int16Array); -do_tagged_index_external_array_test(Uint16Array); -do_tagged_index_external_array_test(Int32Array); -do_tagged_index_external_array_test(Uint32Array); -do_tagged_index_external_array_test(Float32Array); -do_tagged_index_external_array_test(Float64Array); - -var built_in_array = new Array(1, 2, 3, 4, 5, 6); -assertEquals(1, goo(built_in_array, 0)); -assertEquals(1, goo(built_in_array, 0)); -%OptimizeFunctionOnNextCall(goo); -%OptimizeFunctionOnNextCall(boo); -boo(built_in_array, 0, 11); -assertEquals(11, goo(built_in_array, 0)); -%ClearFunctionFeedback(goo); -%ClearFunctionFeedback(boo); - -built_in_array = new Array(1.5, 2, 3, 4, 5, 6); -assertEquals(1.5, goo(built_in_array, 0)); -assertEquals(1.5, goo(built_in_array, 0)); -%OptimizeFunctionOnNextCall(goo); -%OptimizeFunctionOnNextCall(boo); -boo(built_in_array, 0, 2.5); -assertEquals(2.5, goo(built_in_array, 0)); -%ClearFunctionFeedback(goo); -%ClearFunctionFeedback(boo); - -// Check all int range edge cases -function checkRange() { - var e32 = Math.pow(2,32); var e31 = Math.pow(2,31); - var e16 = Math.pow(2,16); var e15 = Math.pow(2,15); - var e8 = Math.pow(2,8); var e7 = Math.pow(2,7); - var a7 = new Uint32Array(2); var a71 = new Int32Array(2); - var a72 = new Uint16Array(2); var a73 = new Int16Array(2); - var a74 = new Uint8Array(2); var a75 = new Int8Array(2); - for (i = 1; i <= Math.pow(2,33); i *= 2) { - var j = i-1; - a7[0] = i; a71[0] = i; a72[0] = i; a73[0] = i; a74[0] = i; a75[0] = i; - a7[1] = j; a71[1] = j; a72[1] = j; a73[1] = j; a74[1] = j; a75[1] = j; - - if (i < e32) { assertEquals(a7[0], i); } else { assertEquals(a7[0], 0); } - if (j < e32) { assertEquals(a7[1], j); } else { assertEquals(a7[1],e32-1); } - if (i < e31) { assertEquals(a71[0], i); } else { - assertEquals(a71[0], (i < e32) ? -e31 : 0 ); } - if (j < e31) { assertEquals(a71[1], j); } else { assertEquals(a71[1], -1); } - - if (i < e16) { assertEquals(a72[0], i); } else { assertEquals(a72[0], 0); } - if (j < e16) { assertEquals(a72[1], j); } else { assertEquals(a72[1], e16-1); } - if (i < e15) { assertEquals(a73[0], i); } else { - assertEquals(a73[0], (i < e16) ? -e15 : 0 ); } - if (j < e15) { assertEquals(a73[1], j); } else { assertEquals(a73[1], -1); } - - if (i < e8) { assertEquals(a74[0], i); } else { assertEquals(a74[0], 0); } - if (j < e8) { assertEquals(a74[1], j); } else { assertEquals(a74[1], e8-1); } - if (i < e7) { assertEquals(a75[0], i); } else { - assertEquals(a75[0], (i < e8) ? -e7 : 0); } - if (j < e7) { assertEquals(a75[1], j); } else { assertEquals(a75[1], -1); } - } -} -checkRange(); diff --git a/implementation-contributed/v8/mjsunit/external-backing-store-gc.js b/implementation-contributed/v8/mjsunit/external-backing-store-gc.js deleted file mode 100644 index 005ec15e597..00000000000 --- a/implementation-contributed/v8/mjsunit/external-backing-store-gc.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --mock-arraybuffer-allocator --mock-arraybuffer-allocator-limit=1300000000 - -// --mock-arraybuffer-allocator-limit should be above the hard limit external -// for memory. Below that limit anything is opportunistic and may be delayed, -// e.g., by tasks getting stalled and the event loop not being invoked. - -for (var i = 0; i < 1536; i++) { - let garbage = new ArrayBuffer(1024*1024); -} diff --git a/implementation-contributed/v8/mjsunit/extra-arguments.js b/implementation-contributed/v8/mjsunit/extra-arguments.js deleted file mode 100644 index 29063672ee4..00000000000 --- a/implementation-contributed/v8/mjsunit/extra-arguments.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - return g(); -}; - -function g() { - var result = 0; - var array = f.arguments; - for (var i = 0; i < array.length; i++) { - result += array[i]; - } - return result; -}; - - -// Make sure we can pass any number of arguments to f and read them -// from g. -for (var i = 0; i < 25; i++) { - var array = new Array(i); - var expected = 0; - for (var j = 0; j < i; j++) { - expected += j; - array[j] = j; - } - assertEquals(expected, f.apply(null, array), String(i)); -} diff --git a/implementation-contributed/v8/mjsunit/extra-commas.js b/implementation-contributed/v8/mjsunit/extra-commas.js deleted file mode 100644 index 02d25df4ed2..00000000000 --- a/implementation-contributed/v8/mjsunit/extra-commas.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function assertSyntaxError(x) { - var caught = false; - try { - eval(x); - } catch (e) { - caught = true; - assertTrue(e instanceof SyntaxError, "is syntax error"); - } - assertTrue(caught, "throws exception"); -}; - - -assertSyntaxError("f(,)"); -assertSyntaxError("f(1,,)"); -assertSyntaxError("f(1,2,,)"); - -assertSyntaxError("function f(,) {}"); -assertSyntaxError("function f(1,,) {}"); -assertSyntaxError("function f(1,2,,) {}"); diff --git a/implementation-contributed/v8/mjsunit/fast-array-length.js b/implementation-contributed/v8/mjsunit/fast-array-length.js deleted file mode 100644 index 2a759114c09..00000000000 --- a/implementation-contributed/v8/mjsunit/fast-array-length.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// This is a regression test for overlapping key and value registers. - - -var a = [0, 1, 2, 3, 4, 5]; -assertTrue(%HasSmiElements(a)); -a.length = (1 << 30); -assertFalse(%HasSmiElements(a)); diff --git a/implementation-contributed/v8/mjsunit/fast-element-smi-check.js b/implementation-contributed/v8/mjsunit/fast-element-smi-check.js deleted file mode 100644 index 09b2d6ac9e5..00000000000 --- a/implementation-contributed/v8/mjsunit/fast-element-smi-check.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = new Array(10); - -function test_load_set_smi(a) { - return a[0] = a[0] = 1; -} - -test_load_set_smi(a); -test_load_set_smi(a); -test_load_set_smi(123); - -function test_load_set_smi_2(a) { - return a[0] = a[0] = 1; -} - -test_load_set_smi_2(a); -%OptimizeFunctionOnNextCall(test_load_set_smi_2); -test_load_set_smi_2(a); -test_load_set_smi_2(0); -%DeoptimizeFunction(test_load_set_smi_2); -%ClearFunctionFeedback(test_load_set_smi_2); - -var b = new Object(); - -function test_load_set_smi_3(b) { - return b[0] = b[0] = 1; -} - -test_load_set_smi_3(b); -test_load_set_smi_3(b); -test_load_set_smi_3(123); - -function test_load_set_smi_4(b) { - return b[0] = b[0] = 1; -} - -test_load_set_smi_4(b); -%OptimizeFunctionOnNextCall(test_load_set_smi_4); -test_load_set_smi_4(b); -test_load_set_smi_4(0); -%DeoptimizeFunction(test_load_set_smi_4); -%ClearFunctionFeedback(test_load_set_smi_4); diff --git a/implementation-contributed/v8/mjsunit/fast-literal.js b/implementation-contributed/v8/mjsunit/fast-literal.js deleted file mode 100644 index 6ff8c9c6f2a..00000000000 --- a/implementation-contributed/v8/mjsunit/fast-literal.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --no-inline-new - -%SetAllocationTimeout(20, 0); -function f() { - return [[1, 2, 3], [1.1, 1.2, 1.3], [[], [], []]]; -} - -f(); f(); f(); -%OptimizeFunctionOnNextCall(f); -for (var i=0; i<50; i++) { - f(); -} diff --git a/implementation-contributed/v8/mjsunit/fast-non-keyed.js b/implementation-contributed/v8/mjsunit/fast-non-keyed.js deleted file mode 100644 index 6a300ab1e36..00000000000 --- a/implementation-contributed/v8/mjsunit/fast-non-keyed.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Check that keyed stores make things go dict mode faster than non-keyed -// stores. - -function AddProps(obj) { - for (var i = 0; i < 26; i++) { - obj["x" + i] = 0; - } -} - - -function AddPropsNonKeyed(obj) { - obj.x0 = 0; - obj.x1 = 0; - obj.x2 = 0; - obj.x3 = 0; - obj.x4 = 0; - obj.x5 = 0; - obj.x6 = 0; - obj.x7 = 0; - obj.x8 = 0; - obj.x9 = 0; - obj.x10 = 0; - obj.x11 = 0; - obj.x12 = 0; - obj.x13 = 0; - obj.x14 = 0; - obj.x15 = 0; - obj.x16 = 0; - obj.x17 = 0; - obj.x18 = 0; - obj.x19 = 0; - obj.x20 = 0; - obj.x21 = 0; - obj.x22 = 0; - obj.x23 = 0; - obj.x24 = 0; - obj.x25 = 0; -} - -function AddProps3(obj) { - obj["x0"] = 0; - obj["x1"] = 0; - obj["x2"] = 0; - obj["x3"] = 0; - obj["x4"] = 0; - obj["x5"] = 0; - obj["x6"] = 0; - obj["x7"] = 0; - obj["x8"] = 0; - obj["x9"] = 0; - obj["x10"] = 0; - obj["x11"] = 0; - obj["x12"] = 0; - obj["x13"] = 0; - obj["x14"] = 0; - obj["x15"] = 0; - obj["x16"] = 0; - obj["x17"] = 0; - obj["x18"] = 0; - obj["x19"] = 0; - obj["x20"] = 0; - obj["x21"] = 0; - obj["x22"] = 0; - obj["x23"] = 0; - obj["x24"] = 0; - obj["x25"] = 0; -} - - -var keyed = {}; -AddProps(keyed); -assertFalse(%HasFastProperties(keyed)); - -var non_keyed = {}; -AddPropsNonKeyed(non_keyed); -assertTrue(%HasFastProperties(non_keyed)); - -var obj3 = {}; -AddProps3(obj3); -assertTrue(%HasFastProperties(obj3)); - -var funny_name = {}; -funny_name[".foo"] = 0; -assertTrue(%HasFastProperties(funny_name)); diff --git a/implementation-contributed/v8/mjsunit/fast-prototype.js b/implementation-contributed/v8/mjsunit/fast-prototype.js deleted file mode 100644 index ad00bec6292..00000000000 --- a/implementation-contributed/v8/mjsunit/fast-prototype.js +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc -// Flags: --noincremental-marking - -// Check that objects that are used for prototypes are in the fast mode. - -function Super() { -} - - -function Sub() { -} - - -function AddProps(obj) { - for (var i = 0; i < 26; i++) { - obj["x" + i] = 0; - } -} - - -function DoProtoMagic(proto, set__proto__) { - var receiver; - if (set__proto__) { - receiver = new Sub(); - receiver.__proto__ = proto; - } else { - Sub.prototype = proto; - // Need to instantiate Sub to mark .prototype as prototype. Make sure the - // instantiated object is used so that the allocation is not optimized away. - receiver = new Sub(); - } - // Prototypes are made fast when ICs encounter them. - function ic() { return typeof receiver.foo; } - ic(); - ic(); -} - - -function test(use_new, add_first, set__proto__) { - var proto = use_new ? new Super() : {}; - - // New object is fast. - assertTrue(use_new || %HasFastProperties(proto)); - - if (add_first) { - AddProps(proto); - // Adding this many properties makes it slow. - assertFalse(%HasFastProperties(proto)); - DoProtoMagic(proto, set__proto__); - // Making it a prototype makes it fast again. - assertTrue(%HasFastProperties(proto)); - } else { - DoProtoMagic(proto, set__proto__); - // Still fast - assertTrue(%HasFastProperties(proto)); - AddProps(proto); - // Still fast. - assertTrue(%HasFastProperties(proto)); - } - return proto; -} - -// TODO(mstarzinger): This test fails easily if gc happens at the wrong time. -gc(); - -for (var i = 0; i < 4; i++) { - var set__proto__ = ((i & 1) != 0); - var use_new = ((i & 2) != 0); - - test(use_new, true, set__proto__); - test(use_new, false, set__proto__); -} - - -var x = {a: 1, b: 2, c: 3}; -var o = { __proto__: x }; -assertFalse(%HasFastProperties(x)); -for (key in x) { - assertTrue(key == 'a'); - break; -} -assertTrue(%HasFastProperties(x)); -delete x.b; -for (key in x) { - assertTrue(key == 'a'); - break; -} -assertTrue(%HasFastProperties(x)); -x.d = 4; -assertTrue(%HasFastProperties(x)); -for (key in x) { - assertTrue(key == 'a'); - break; -} diff --git a/implementation-contributed/v8/mjsunit/field-type-tracking.js b/implementation-contributed/v8/mjsunit/field-type-tracking.js deleted file mode 100644 index 2e0cb8bd6fa..00000000000 --- a/implementation-contributed/v8/mjsunit/field-type-tracking.js +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --nostress-opt --track-field-types -// Flags: --opt --no-always-opt - -(function() { - var o = { text: "Hello World!" }; - function A() { - // Assign twice to make the field non-constant. - // TODO(ishell): update test once constant field tracking is done. - this.a = {text: 'foo'}; - this.a = o; - } - function readA(x) { - return x.a; - } - var a = new A(); - assertUnoptimized(readA); - readA(a); readA(a); readA(a); - %OptimizeFunctionOnNextCall(readA); - assertEquals(readA(a), o); - assertOptimized(readA); - - var b = new A(); - b.b = o; - assertEquals(readA(b), o); - assertUnoptimized(readA); - %OptimizeFunctionOnNextCall(readA); - assertEquals(readA(a), o); - assertOptimized(readA); - assertEquals(readA(a), o); - assertEquals(readA(b), o); - assertOptimized(readA); - - function readAFromB(x) { - return x.a; - } - assertUnoptimized(readAFromB); - readAFromB(b); readAFromB(b); readAFromB(b); - %OptimizeFunctionOnNextCall(readAFromB); - assertEquals(readAFromB(b), o); - assertOptimized(readAFromB); - - var c = new A(); - c.c = o; - assertOptimized(readA); - assertOptimized(readAFromB); - c.a = [1]; - assertUnoptimized(readA); - assertUnoptimized(readAFromB); - assertEquals(readA(a), o); - assertEquals(readA(b), o); - assertEquals(readA(c), [1]); - assertEquals(readAFromB(b), o); - - %OptimizeFunctionOnNextCall(readA); - assertEquals(readA(a), o); - %OptimizeFunctionOnNextCall(readAFromB); - assertEquals(readAFromB(b), o); - assertOptimized(readA); - a.a = [1]; - assertEquals(readA(a), [1]); - assertEquals(readA(b), o); - assertEquals(readA(c), [1]); - assertOptimized(readA); - b.a = [1]; - assertEquals(readA(a), [1]); - assertEquals(readA(b), [1]); - assertEquals(readA(c), [1]); - assertOptimized(readA); - assertOptimized(readAFromB); -})(); - -(function() { - function A() { this.x = 0; } - A.prototype = {y: 20}; - function B(o) { return o.a.y; } - function C() { this.a = new A(); } - - B(new C()); - B(new C()); - %OptimizeFunctionOnNextCall(B); - var c = new C(); - assertEquals(20, B(c)); - assertOptimized(B); - c.a.y = 10; - assertEquals(10, B(c)); - assertUnoptimized(B); - - var c = new C(); - %OptimizeFunctionOnNextCall(B); - assertEquals(20, B(c)); - assertOptimized(B); - c.a.y = 30; - assertEquals(30, B(c)); - assertOptimized(B); -})(); - -(function() { - var x = new Object(); - x.a = 1 + "Long string that results in a cons string"; - x = JSON.parse('{"a":"Short"}'); -})(); - -(function() { - var x = {y: {z: 1}}; - x.y.z = 1.1; -})(); - -(function() { - function Foo(x) { this.x = x; } - // TODO(ishell): update test once constant field tracking is done. - var f0 = new Foo({x: 0}); - f0.x = {x: 0}; // make Foo.x non-constant here. - var f1 = new Foo({x: 1}); - var f2 = new Foo({x: 2}); - var f3 = new Foo({x: 3}); - function readX(f) { return f.x.x; } - assertEquals(readX(f1), 1); - assertEquals(readX(f2), 2); - assertUnoptimized(readX); - %OptimizeFunctionOnNextCall(readX); - assertEquals(readX(f3), 3); - assertOptimized(readX); - function writeX(f, x) { f.x = x; } - writeX(f1, {x: 11}); - writeX(f2, {x: 22}); - assertUnoptimized(writeX); - assertEquals(readX(f1), 11); - assertEquals(readX(f2), 22); - assertOptimized(readX); - %OptimizeFunctionOnNextCall(writeX); - writeX(f3, {x: 33}); - assertEquals(readX(f3), 33); - assertOptimized(readX); - assertOptimized(writeX); - function addY(f, y) { f.y = y; } - writeX(f1, {a: "a"}); - assertUnoptimized(readX); - assertUnoptimized(writeX); -})(); - -(function() { - function Narf(x) { this.x = x; } - var f1 = new Narf(1); - var f2 = new Narf(2); - var f3 = new Narf(3); - function baz(f, y) { f.y = y; } - baz(f1, {y: 9}); - baz(f2, {y: 9}); - baz(f2, {y: 9}); - %OptimizeFunctionOnNextCall(baz); - baz(f2, {y: 9}); - baz(f3, {a: -1}); - assertUnoptimized(baz); -})(); - -(function() { - function Foo(x) { this.x = x; this.a = x; } - function Bar(x) { this.x = x; this.b = x; } - function readA(o) { return o.x.a; } - var f = new Foo({a:1}); - var b = new Bar({a:2}); - assertEquals(readA(f), 1); - assertEquals(readA(b), 2); - assertEquals(readA(f), 1); - assertEquals(readA(b), 2); - %OptimizeFunctionOnNextCall(readA); - assertEquals(readA(f), 1); - assertEquals(readA(b), 2); - assertOptimized(readA); - f.a.y = 0; - assertUnoptimized(readA); -})(); diff --git a/implementation-contributed/v8/mjsunit/filter-element-kinds.js b/implementation-contributed/v8/mjsunit/filter-element-kinds.js deleted file mode 100644 index 7853a33b9c0..00000000000 --- a/implementation-contributed/v8/mjsunit/filter-element-kinds.js +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --opt --no-always-opt - -var elements_kind = { - fast_smi_only : 'fast smi only elements', - fast : 'fast elements', - fast_double : 'fast double elements', - dictionary : 'dictionary elements', - external_byte : 'external byte elements', - external_unsigned_byte : 'external unsigned byte elements', - external_short : 'external short elements', - external_unsigned_short : 'external unsigned short elements', - external_int : 'external int elements', - external_unsigned_int : 'external unsigned int elements', - external_float : 'external float elements', - external_double : 'external double elements', - external_pixel : 'external pixel elements' -} - -function getKind(obj) { - if (%HasSmiElements(obj)) return elements_kind.fast_smi_only; - if (%HasObjectElements(obj)) return elements_kind.fast; - if (%HasDoubleElements(obj)) return elements_kind.fast_double; - if (%HasDictionaryElements(obj)) return elements_kind.dictionary; -} - -function isHoley(obj) { - if (%HasHoleyElements(obj)) return true; - return false; -} - -function assertKind(expected, obj, name_opt) { - assertEquals(expected, getKind(obj), name_opt); -} - -function assertHoley(obj, name_opt) { - assertEquals(true, isHoley(obj), name_opt); -} - -function assertNotHoley(obj, name_opt) { - assertEquals(false, isHoley(obj), name_opt); -} - -// Create a new closure that inlines Array.prototype.filter(). -function create(a) { - return function() { - return a.filter(x => false); - } -} - -function runTest(test, kind, holey_predicate) { - - // Verify built-in implementation produces correct results. - let a = test(); - assertKind(kind, a); - holey_predicate(a); - test(); - test(); - %OptimizeFunctionOnNextCall(test); - - // Now for optimized code. - a = test(); - assertKind(kind, a); - holey_predicate(a); -} - -function chooseHoleyPredicate(a) { - return isHoley(a) ? assertHoley : assertNotHoley; -} - -(function() { - let data = []; - - // Packed literal arrays. - data.push(() => [1, 2, 3]); - data.push(() => [true, true, false]); - data.push(() => [1.0, 1.5, 3.5]); - // Holey literal arrays. - data.push(() => { let obj = [1,, 3]; obj[1] = 2; return obj; }); - data.push(() => { let obj = [true,, false]; obj[1] = true; return obj; }); - data.push(() => { let obj = [1.0,, 3.5]; obj[1] = 1.5; return obj; }); - // Packed constructed arrays. - data.push(() => new Array(1, 2, 3)); - data.push(() => new Array(true, true, false)); - data.push(() => new Array(1.0, 1.5, 3.5)); - - // Holey constructed arrays. - data.push(() => { - let obj = new Array(3); - obj[0] = 1; - obj[1] = 2; - obj[2] = 3; - return obj; - }); - - data.push(() => { - let obj = new Array(3); - obj[0] = true; - obj[1] = true; - obj[2] = false; - return obj; - }); - - data.push(() => { - let obj = new Array(3); - obj[0] = 1.0; - obj[1] = 1.5; - obj[2] = 3.5; - return obj; - }); - - for (datum of data) { - let a = datum(); - // runTest(create(a), getKind(a), chooseHoleyPredicate(a)); - let f = function() { return a.filter(x => false); } - runTest(f, getKind(a), chooseHoleyPredicate(a)); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/fixed-context-shapes-when-recompiling.js b/implementation-contributed/v8/mjsunit/fixed-context-shapes-when-recompiling.js deleted file mode 100644 index 8221665ccb5..00000000000 --- a/implementation-contributed/v8/mjsunit/fixed-context-shapes-when-recompiling.js +++ /dev/null @@ -1,1173 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --lazy-inner-functions - -// Test that the information on which variables to allocate in context doesn't -// change when recompiling. - -(function TestVarInInnerFunction() { - // Introduce variables which would potentially be context allocated, depending - // on whether an inner function refers to them or not. - var a = 1; - var b = 2; - var c = 3; - function inner() { - var a; // This will make "a" actually not be context allocated. - a; b; c; - } - // Force recompilation. - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - - -// Other tests are the same, except that the shadowing variable "a" in inner -// functions is declared differently. - -(function TestLetInInnerFunction() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - let a; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestConstInInnerFunction() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - const a = 0; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionParameter() { - var a = 1; - var b = 2; - var c = 3; - function inner(a) { - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionRestParameter() { - var a = 1; - var b = 2; - var c = 3; - function inner(...a) { - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuredParameter_1() { - var a = 1; - var b = 2; - var c = 3; - function inner([d, a]) { - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuredParameter_2() { - var a = 1; - var b = 2; - var c = 3; - function inner({d, a}) { - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerArrowFunctionParameter() { - var a = 1; - var b = 2; - var c = 3; - (a) => { a; b; c; } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerArrowFunctionRestParameter() { - var a = 1; - var b = 2; - var c = 3; - (...a) => { a; b; c; } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerArrowFunctionDestructuredParameter_1() { - var a = 1; - var b = 2; - var c = 3; - ([d, a]) => { a; b; c; } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerArrowFunctionDestructuredParameter_2() { - var a = 1; - var b = 2; - var c = 3; - ({d, a}) => { a; b; c; } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerInnerFunctionParameter() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - function innerinner(a) { a; b; c; } - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerInnerFunctionRestParameter() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - function innerinner(...a) { a; b; c; } - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerInnerFunctionDestructuredParameter_1() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - function innerinner({d, a}) { a; b; c; } - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerInnerFunctionDestructuredParameter_2() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - function innerinner([d, a]) { a; b; c; } - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerInnerArrowFunctionParameter() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - var f = a => a + b + c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerInnerArrowFunctionRestParameter() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - var f = (...a) => a + b + c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerInnerArrowFunctionDestructuredParameter_1() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - var f = ([d, a]) => a + b + c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerInnerArrowFunctionDestructuredParameter_2() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - var f = ({d, a}) => a + b + c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionInnerFunction() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - function a() { } - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionSloppyBlockFunction() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - if (true) { function a() { } } - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionCatchVariable() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - try { - } - catch(a) { - a; b; c; - } - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionLoopVariable1() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - for (var a in {}) { - a; b; c; - } - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionLoopVariable2() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - for (let a in {}) { - a; b; c; - } - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionLoopVariable3() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - for (var a of []) { - a; b; c; - } - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionLoopVariable4() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - for (let a of []) { - a; b; c; - } - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionClass() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - class a {} - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuring1() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - var [a, a2] = [1, 2]; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuring2() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - let [a, a2] = [1, 2]; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuring3() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - const [a, a2] = [1, 2]; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuring4() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - var [a2, ...a] = [1, 2]; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuring5() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - let [a2, ...a] = [1, 2]; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuring6() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - const [a2, ...a] = [1, 2]; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuring7() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - var {a, a2} = {a: 1, a2: 2}; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuring8() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - let {a, a2} = {a: 1, a2: 2}; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -(function TestInnerFunctionDestructuring9() { - var a = 1; - var b = 2; - var c = 3; - function inner() { - const {a, a2} = {a: 1, a2: 2}; - a; b; c; - } - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - assertEquals(1, a); - assertEquals(2, b); - assertEquals(3, c); - } -})(); - -// A cluster of similar tests where the inner function only declares a variable -// whose name clashes with an outer function variable name, but doesn't use it. -(function TestRegress650969_1_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var a; - } - } -})(); - -(function TestRegress650969_1_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let a; - } - } -})(); - -(function TestRegress650969_2_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var a = 6; - } - } -})(); - -(function TestRegress650969_2_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let a = 6; - } - } -})(); - -(function TestRegress650969_2_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - const a = 6; - } - } -})(); - -(function TestRegress650969_3_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var a, b; - } - } -})(); - -(function TestRegress650969_3_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let a, b; - } - } -})(); - -(function TestRegress650969_4_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var a = 6, b; - } - } -})(); - -(function TestRegress650969_4_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let a = 6, b; - } - } -})(); - -(function TestRegress650969_4_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - const a = 0, b = 0; - } - } -})(); - -(function TestRegress650969_9_parameter() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner(a) {} - } -})(); - -(function TestRegress650969_9_restParameter() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner(...a) {} - } -})(); - -(function TestRegress650969_9_destructuredParameter_1() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner([d, a]) {} - } -})(); - -(function TestRegress650969_9_destructuredParameter_2() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner({d, a}) {} - } -})(); - -(function TestRegress650969_10_parameter() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - function innerinner(a) {} - } - } -})(); - -(function TestRegress650969_10_restParameter() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - function innerinner(...a) {} - } - } -})(); - -(function TestRegress650969_10_destructuredParameter_1() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - function innerinner([d, a]) {} - } - } -})(); - -(function TestRegress650969_10_destructuredParameter_2() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - function innerinner({d, a}) {} - } - } -})(); - -(function TestRegress650969_11_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var [a, b] = [1, 2]; - } - } -})(); - -(function TestRegress650969_11_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let [a, b] = [1, 2]; - } - } -})(); - -(function TestRegress650969_11_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - const [a, b] = [1, 2]; - } - } -})(); - -(function TestRegress650969_12_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var [b, a] = [1, 2]; - } - } -})(); - -(function TestRegress650969_12_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let [b, a] = [1, 2]; - } - } -})(); - -(function TestRegress650969_12_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - const [b, a] = [1, 2]; - } - } -})(); - -(function TestRegress650969_13_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var [b, ...a] = [1, 2]; - } - } -})(); - -(function TestRegress650969_13_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let [b, ...a] = [1, 2]; - } - } -})(); - -(function TestRegress650969_13_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - const [b, ...a] = [1, 2]; - } - } -})(); - -(function TestRegress650969_14_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var {a, b} = {a: 1, b: 2}; - } - } -})(); - -(function TestRegress650969_14_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let {a, b} = {a: 1, b: 2}; - } - } -})(); - -(function TestRegress650969_14_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - const {a, b} = {a: 1, b: 2}; - } - } -})(); - -(function TestRegress650969_15_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var {b: {a}, c} = {b: {a: 1}, c: 2}; - } - } -})(); - -(function TestRegress650969_15_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let {b: {a}, c} = {b: {a: 1}, c: 2}; - } - } -})(); - -(function TestRegress650969_15_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - const {b: {a}, c} = {b: {a: 1}, c: 2}; - } - } -})(); - -(function TestRegress650969_16_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - var {a: {b}, c} = {a: {b: 1}, c: 2}; - } - } -})(); - -(function TestRegress650969_16_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - let {a: {b}, c} = {a: {b: 1}, c: 2}; - } - } -})(); - -(function TestRegress650969_16_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - const {a: {b}, c} = {a: {b: 1}, c: 2}; - } - } -})(); - -(function TestRegress650969_17_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - for (var a = 0; 0 == 1; ) { } - } - } -})(); - -(function TestRegress650969_17_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - for (let a = 0; 0 == 1; ) { } - } - } -})(); - -(function TestRegress650969_17_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - for (const a = 0; 0 == 1; ) { } - } - } -})(); - -(function TestRegress650969_18() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - function innerinner([a, b]) {} - } - } -})(); - -(function TestRegress650969_18() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a; - function inner() { - function innerinner(a) {} - } - } -})(); - -// Regression tests for an intermediate stage where unresolved references were -// discarded too aggressively. -(function TestRegress650969_sidetrack_var() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a = 0; - function inner() { - return a; - var {b: {a}, c} = {b: {a: 1}, c: 2}; - } - } -})(); - -(function TestRegress650969_sidetrack_let() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a = 0; - function inner() { - return a; - let {b: {a}, c} = {b: {a: 1}, c: 2}; - } - } -})(); - -(function TestRegress650969_sidetrack_const() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - } - var a = 0; - function inner() { - return a; - const {b: {a}, c} = {b: {a: 1}, c: 2}; - } - } -})(); diff --git a/implementation-contributed/v8/mjsunit/for-in-delete.js b/implementation-contributed/v8/mjsunit/for-in-delete.js deleted file mode 100644 index e9fc060ae68..00000000000 --- a/implementation-contributed/v8/mjsunit/for-in-delete.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that properties deleted during a for-in iteration do not show up in -// the for-in. - -function f(o, expected, del) { - var index = 0; - for (p in o) { - if (del) delete o[del]; - assertEquals(expected[index], p); - index++; - } - assertEquals(expected.length, index); -} - -var o = {} -o.a = 1; -o.b = 2; -o.c = 3; -o.d = 3; - -f(o, ['a', 'b', 'c', 'd']); -f(o, ['a', 'b', 'c', 'd']); -f(o, ['a', 'c', 'd'], 'b'); -f(o, ['a', 'c'], 'd'); diff --git a/implementation-contributed/v8/mjsunit/for-in-null-or-undefined.js b/implementation-contributed/v8/mjsunit/for-in-null-or-undefined.js deleted file mode 100644 index b12d1b06bd9..00000000000 --- a/implementation-contributed/v8/mjsunit/for-in-null-or-undefined.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// At least Spidermonkey and IE allow for-in iteration over null and -// undefined. They never executed the statement block. -var count = 0; -for (var p in null) { count++; } -for (var p in void 0) { count++; } -assertEquals(0, count); diff --git a/implementation-contributed/v8/mjsunit/for-in-special-cases.js b/implementation-contributed/v8/mjsunit/for-in-special-cases.js deleted file mode 100644 index 27129e1aac7..00000000000 --- a/implementation-contributed/v8/mjsunit/for-in-special-cases.js +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -function for_in_null() { - try { - for (var x in null) { - return false; - } - } catch(e) { - return false; - } - return true; -} - -function for_in_undefined() { - try { - for (var x in undefined) { - return false; - } - } catch(e) { - return false; - } - return true; -} - -for (var i = 0; i < 10; ++i) { - assertTrue(for_in_null()); - gc(); -} - -for (var j = 0; j < 10; ++j) { - assertTrue(for_in_undefined()); - gc(); -} - -assertEquals(10, i); -assertEquals(10, j); - - -function Accumulate(x) { - var accumulator = []; - for (var i in x) { - accumulator.push(i); - } - return accumulator; -} - -for (var i = 0; i < 3; ++i) { - assertEquals(Accumulate("abcd"), ['0', '1', '2', '3']); -} - -function for_in_string_prototype() { - - var x = new String("abc"); - x.foo = 19; - function B() { - this.bar = 5; - this[7] = 4; - } - B.prototype = x; - - var y = new B(); - y.gub = 13; - - var elements = Accumulate(y); - var elements1 = Accumulate(y); - // If for-in returns elements in a different order on multiple calls, this - // assert will fail. If that happens, consider if that behavior is OK. - assertEquals(elements, elements1, "For-in elements not the same both times."); - assertEquals(["7","bar","gub","0","1","2","foo"], elements) - - assertEquals(['0', '1', '2', 'foo'], Accumulate(x)) -} - -for_in_string_prototype(); -for_in_string_prototype(); - - -(function for_in_dictionary_prototype_1() { - let prototype1 = {prop: 0, prop1: 1}; - let derived1 = Object.create(null, { - prop: {enumerable: false, configurable: true, value: 0}, - }); - Object.setPrototypeOf(derived1, prototype1); - - let prototype2 = {prop: 0, prop1: 1}; - let derived2 = Object.create(prototype2, { - prop: {enumerable: false, configurable: true, value: 0}, - }); - - for (let i = 0; i < 3; i++) { - assertEquals(['prop1'], Accumulate(derived1)); - assertEquals(['prop1'], Accumulate(derived2)); - } -})(); - -(function for_in_dictionary_prototype_2() { - let prototype1 = {prop: 0, prop1: 1}; - let derived1 = Object.create(null, { - prop: {enumerable: false, configurable: true, value: 1}, - prop2: {enumerable: true, configurable: true, value: 2}, - prop3: {enumerable: false, configurable: true, value: 3}, - }); - Object.setPrototypeOf(derived1, prototype1); - - let prototype2 = {prop: 0, prop1: 1}; - let derived2 = Object.create(prototype2, { - prop: {enumerable: false, configurable: true, value: 0}, - prop2: {enumerable: true, configurable: true, value: 2}, - prop3: {enumerable: false, configurable: true, value: 3}, - }); - - for (let i = 0; i < 3; i++) { - assertEquals(['prop2', 'prop1'], Accumulate(derived1)); - assertEquals(['prop2', 'prop1'], Accumulate(derived2)); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/for-in.js b/implementation-contributed/v8/mjsunit/for-in.js deleted file mode 100644 index 319f93bd767..00000000000 --- a/implementation-contributed/v8/mjsunit/for-in.js +++ /dev/null @@ -1,271 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function props(x) { - var array = []; - for (var p in x) array.push(p); - return array; -} - -(function forInBasic() { - assertEquals(0, props({}).length, "olen0"); - assertEquals(1, props({x:1}).length, "olen1"); - assertEquals(2, props({x:1, y:2}).length, "olen2"); - - assertArrayEquals(["x"], props({x:1}), "x"); - assertArrayEquals(["x", "y"], props({x:1, y:2}), "xy"); - assertArrayEquals(["x", "y", "zoom"], props({x:1, y:2, zoom:3}), "xyzoom"); - - assertEquals(0, props([]).length, "alen0"); - assertEquals(1, props([1]).length, "alen1"); - assertEquals(2, props([1,2]).length, "alen2"); - - assertArrayEquals(["0"], props([1]), "0"); - assertArrayEquals(["0", "1"], props([1,2]), "01"); - assertArrayEquals(["0", "1", "2"], props([1,2,3]), "012"); -})(); - -(function forInPrototype() { - // Fast properties + fast elements - var obj = {a:true, 3:true, 4:true}; - obj.__proto__ = {c:true, b:true, 2:true, 1:true, 5:true}; - for (var i = 0; i < 3; i++) { - assertArrayEquals("34a125cb".split(""), props(obj)); - } - // Fast properties + dictionary elements - delete obj.__proto__[2]; - for (var i = 0; i < 3; i++) { - assertArrayEquals("34a15cb".split(""), props(obj)); - } - // Slow properties + dictionary elements - delete obj.__proto__.c; - for (var i = 0; i < 3; i++) { - assertArrayEquals("34a15b".split(""), props(obj)); - } - // Slow properties on the receiver as well - delete obj.a; - for (var i = 0; i < 3; i++) { - assertArrayEquals("3415b".split(""), props(obj)); - } - delete obj[3]; - for (var i = 0; i < 3; i++) { - assertArrayEquals("415b".split(""), props(obj)); - } -})(); - -(function forInShadowing() { - var obj = {a:true, 3:true, 4:true}; - obj.__proto__ = { - c:true, b:true, x:true, - 2:true, 1:true, 5:true, 9:true}; - Object.defineProperty(obj, 'x', {value:true, enumerable:false, configurable:true}); - Object.defineProperty(obj, '9', {value:true, enumerable:false, configurable:true}); - for (var i = 0; i < 3; i++) { - assertArrayEquals("34a125cb".split(""), props(obj)); - } - // Fast properties + dictionary elements - delete obj.__proto__[2]; - for (var i = 0; i < 3; i++) { - assertArrayEquals("34a15cb".split(""), props(obj)); - } - // Slow properties + dictionary elements - delete obj.__proto__.c; - for (var i = 0; i < 3; i++) { - assertArrayEquals("34a15b".split(""), props(obj)); - } - // Remove the shadowing properties - delete obj.x; - delete obj[9]; - for (var i = 0; i < 3; i++) { - assertArrayEquals("34a159bx".split(""), props(obj)); - } - // Slow properties on the receiver as well - delete obj.a; - for (var i = 0; i < 3; i++) { - assertArrayEquals("34159bx".split(""), props(obj)); - } - delete obj[3]; - for (var i = 0; i < 3; i++) { - assertArrayEquals("4159bx".split(""), props(obj)); - } -})(); - -(function forInShadowingSlowReceiver() { - // crbug 688307 - // Make sure we track all non-enumerable keys on a slow-mode receiver. - let receiver = {a:1}; - delete receiver.a; - let proto = Object.create(null); - let enumProperties = []; - for (let i = 0; i < 10; i++) { - let key = "property_"+i; - enumProperties.push(key); - receiver[key] = i; - proto[key] = i; - } - for (let i = 0; i < 1000; i++) { - let nonEnumKey = "nonEnumerableProperty_"+ i; - Object.defineProperty(receiver, nonEnumKey, {}); - // Add both keys as enumerable to the prototype. - proto[nonEnumKey] = i; - } - receiver.__proto__ = proto; - // Only the enumerable properties from the receiver should be visible. - for (let key in receiver) { - assertEquals(key, enumProperties.shift()); - } -})(); - -(function forInCharCodes() { - var o = {}; - var a = []; - for (var i = 0x0020; i < 0x01ff; i+=2) { - var s = 'char:' + String.fromCharCode(i); - a.push(s); - o[s] = i; - } - assertArrayEquals(a, props(o), "charcodes"); -})(); - -(function forInArray() { - var a = []; - assertEquals(0, props(a).length, "proplen0"); - a[Math.pow(2,30)-1] = 0; - assertEquals(1, props(a).length, "proplen1"); - a[Math.pow(2,31)-1] = 0; - assertEquals(2, props(a).length, "proplen2"); - a[1] = 0; - assertEquals(3, props(a).length, "proplen3"); -})(); - -(function forInInitialize() { - for (var hest = 'hest' in {}) { } - assertEquals('hest', hest, "empty-no-override"); - - // Lexical variables are disallowed - assertThrows("for (const x = 0 in {});", SyntaxError); - assertThrows("for (let x = 0 in {});", SyntaxError); - - // In strict mode, var is disallowed - assertThrows("'use strict'; for (var x = 0 in {});", SyntaxError); -})(); - -(function forInObjects() { - var result = ''; - for (var p in {a : [0], b : 1}) { result += p; } - assertEquals('ab', result, "ab"); - - var result = ''; - for (var p in {a : {v:1}, b : 1}) { result += p; } - assertEquals('ab', result, "ab-nodeep"); - - var result = ''; - for (var p in { get a() {}, b : 1}) { result += p; } - assertEquals('ab', result, "abget"); - - var result = ''; - for (var p in { get a() {}, set a(x) {}, b : 1}) { result += p; } - assertEquals('ab', result, "abgetset"); -})(); - - -// Test that for-in in the global scope works with a keyed property as "each". -// Test outside a loop and in a loop for multiple iterations. -a = [1,2,3,4]; -x = {foo:5, bar:6, zip:7, glep:9, 10:11}; -delete x.bar; -y = {} - -for (a[2] in x) { - y[a[2]] = x[a[2]]; -} - -assertEquals(5, y.foo, "y.foo"); -assertEquals("undefined", typeof y.bar, "y.bar"); -assertEquals(7, y.zip, "y.zip"); -assertEquals(9, y.glep, "y.glep"); -assertEquals(11, y[10], "y[10]"); -assertEquals("undefined", typeof y[2], "y[2]"); -assertEquals("undefined", typeof y[0], "y[0]"); - -for (i=0 ; i < 3; ++i) { - y = {} - - for (a[2] in x) { - y[a[2]] = x[a[2]]; - } - - assertEquals(5, y.foo, "y.foo"); - assertEquals("undefined", typeof y.bar, "y.bar"); - assertEquals(7, y.zip, "y.zip"); - assertEquals(9, y.glep, "y.glep"); - assertEquals(11, y[10], "y[10]"); - assertEquals("undefined", typeof y[2], "y[2]"); - assertEquals("undefined", typeof y[0], "y[0]"); -} - -(function testLargeElementKeys() { - // Key out of SMI range but well within safe double representaion. - var large_key = 2147483650; - var o = []; - // Trigger dictionary elements with HeapNumber keys. - o[large_key] = 0; - o[large_key+1] = 1; - o[large_key+2] = 2; - o[large_key+3] = 3; - var keys = []; - for (var k in o) { - keys.push(k); - } - assertEquals(["2147483650", "2147483651", "2147483652", "2147483653"], keys); -})(); - -(function testLargeElementKeysWithProto() { - var large_key = 2147483650; - var o = {__proto__: {}}; - o[large_key] = 1; - o.__proto__[large_key] = 1; - var keys = []; - for (var k in o) { - keys.push(k); - } - assertEquals(["2147483650"], keys); -})(); - -(function testNonEnumerableArgumentsIndex() { - Object.defineProperty(arguments, 0, {enumerable:false}); - for (var k in arguments) { - assertUnreachable(); - } -})(); - -(function testNonEnumerableSloppyArgumentsIndex(a) { - Object.defineProperty(arguments, 0, {enumerable:false}); - for (var k in arguments) { - assertUnreachable(); - } -})(true); diff --git a/implementation-contributed/v8/mjsunit/for-of-in-catch-duplicate-decl.js b/implementation-contributed/v8/mjsunit/for-of-in-catch-duplicate-decl.js deleted file mode 100644 index e1fdd43c94c..00000000000 --- a/implementation-contributed/v8/mjsunit/for-of-in-catch-duplicate-decl.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertDoesNotThrow("try { } catch (e) { var e; for (var e of []) {} }") diff --git a/implementation-contributed/v8/mjsunit/for.js b/implementation-contributed/v8/mjsunit/for.js deleted file mode 100644 index 0b7158086f4..00000000000 --- a/implementation-contributed/v8/mjsunit/for.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test missing condition in for loop. -for (var i = 0; ; i++) { - if (i > 100) break; -} -assertEquals(101, i); diff --git a/implementation-contributed/v8/mjsunit/fun-as-prototype.js b/implementation-contributed/v8/mjsunit/fun-as-prototype.js deleted file mode 100644 index fbe995a766f..00000000000 --- a/implementation-contributed/v8/mjsunit/fun-as-prototype.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = 0; -function Funky(a, b, c) { return 7; } -Number.prototype.__proto__ = Funky; -assertEquals(3, x.length); -assertEquals("Funky", x.name); -assertEquals(Funky.prototype, x.prototype); - -Number.prototype.__proto__ = [1, 2, 3]; -assertEquals(3, x.length); diff --git a/implementation-contributed/v8/mjsunit/fun-name.js b/implementation-contributed/v8/mjsunit/fun-name.js deleted file mode 100644 index 1688438ac85..00000000000 --- a/implementation-contributed/v8/mjsunit/fun-name.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function strip(s) { - return s.replace(/\s/g, ''); -} - -assertEquals('function(){}', strip((function () { }).toString())); -assertEquals('functionanonymous(){}', strip(new Function().toString())); diff --git a/implementation-contributed/v8/mjsunit/function-arguments-duplicate.js b/implementation-contributed/v8/mjsunit/function-arguments-duplicate.js deleted file mode 100644 index a0ec37ca10a..00000000000 --- a/implementation-contributed/v8/mjsunit/function-arguments-duplicate.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Execises ArgumentsAccessStub::GenerateNewNonStrictSlow. - -// Flags: --allow-natives-syntax - -function f(a, a) { - assertEquals(2, a); - assertEquals(1, arguments[0]); - assertEquals(2, arguments[1]); - assertEquals(2, arguments.length); - %HeapObjectVerify(arguments); -} - -f(1, 2); diff --git a/implementation-contributed/v8/mjsunit/function-arguments-null.js b/implementation-contributed/v8/mjsunit/function-arguments-null.js deleted file mode 100644 index 6b47a10188b..00000000000 --- a/implementation-contributed/v8/mjsunit/function-arguments-null.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// The arguments property of sloppy functions should be null when not -// executing inside the function. - -function sloppy() {} - -assertTrue(sloppy.arguments === null); diff --git a/implementation-contributed/v8/mjsunit/function-bind-name.js b/implementation-contributed/v8/mjsunit/function-bind-name.js deleted file mode 100644 index bbbc272918c..00000000000 --- a/implementation-contributed/v8/mjsunit/function-bind-name.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() {} -var fb = f.bind({}); -assertEquals('bound f', fb.name); - -Object.defineProperty(f, 'name', {value: 42}); -var fb2 = f.bind({}); -assertEquals('bound ', fb2.name); - -function g() {} -var gb = g.bind({}); -assertEquals('bound g', gb.name); -assertEquals('bound f', fb.name); diff --git a/implementation-contributed/v8/mjsunit/function-bind.js b/implementation-contributed/v8/mjsunit/function-bind.js deleted file mode 100644 index 7d37da57d22..00000000000 --- a/implementation-contributed/v8/mjsunit/function-bind.js +++ /dev/null @@ -1,378 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Tests the Function.prototype.bind method. - - -// Simple tests. -function foo(x, y, z) { - return [this, arguments.length, x]; -} - -assertEquals(3, foo.length); - -var f = foo.bind(foo); -assertEquals([foo, 3, 1], f(1, 2, 3)); -assertEquals(3, f.length); -assertEquals("function () { [native code] }", f.toString()); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1); -assertEquals([foo, 3, 1], f(2, 3)); -assertEquals(2, f.length); -assertEquals("function () { [native code] }", f.toString()); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1, 2); -assertEquals([foo, 3, 1], f(3)); -assertEquals(1, f.length); -assertEquals("function () { [native code] }", f.toString()); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1, 2, 3); -assertEquals([foo, 3, 1], f()); -assertEquals(0, f.length); -assertEquals("function () { [native code] }", f.toString()); -%HeapObjectVerify(f); - -// Test that length works correctly even if more than the actual number -// of arguments are given when binding. -f = foo.bind(foo, 1, 2, 3, 4, 5, 6, 7, 8, 9); -assertEquals([foo, 9, 1], f()); -assertEquals(0, f.length); -assertEquals("function () { [native code] }", f.toString()); -%HeapObjectVerify(f); - -// Use a different bound object. -var obj = {x: 42, y: 43}; -// Values that would normally be in "this" when calling f_bound_this. -var x = 42; -var y = 44; - -function f_bound_this(z) { - return z + this.y - this.x; -} - -assertEquals(3, f_bound_this(1)) -f = f_bound_this.bind(obj); -assertEquals(2, f(1)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -f = f_bound_this.bind(obj, 2); -assertEquals(3, f()); -assertEquals(0, f.length); -assertEquals('[object Function]', Object.prototype.toString.call(f)); -%HeapObjectVerify(f); - -// Test chained binds. - -// When only giving the thisArg, any number of binds should have -// the same effect. -f = foo.bind(foo); -assertEquals([foo, 3, 1], f(1, 2, 3)); -%HeapObjectVerify(f); - -var not_foo = {}; -f = foo.bind(foo).bind(not_foo).bind(not_foo).bind(not_foo); -assertEquals([foo, 3, 1], f(1, 2, 3)); -assertEquals(3, f.length); -%HeapObjectVerify(f); - -// Giving bound parameters should work at any place in the chain. -f = foo.bind(foo, 1).bind(not_foo).bind(not_foo).bind(not_foo); -assertEquals([foo, 3, 1], f(2, 3)); -assertEquals(2, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo).bind(not_foo, 1).bind(not_foo).bind(not_foo); -assertEquals([foo, 3, 1], f(2, 3)); -assertEquals(2, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo).bind(not_foo).bind(not_foo,1 ).bind(not_foo); -assertEquals([foo, 3, 1], f(2, 3)); -assertEquals(2, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo).bind(not_foo).bind(not_foo).bind(not_foo, 1); -assertEquals([foo, 3, 1], f(2, 3)); -assertEquals(2, f.length); -%HeapObjectVerify(f); - -// Several parameters can be given, and given in different bind invocations. -f = foo.bind(foo, 1, 2).bind(not_foo).bind(not_foo).bind(not_foo); -assertEquals([foo, 3, 1], f(3)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo).bind(not_foo, 1, 2).bind(not_foo).bind(not_foo); -assertEquals([foo, 3, 1], f(1)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo).bind(not_foo, 1, 2).bind(not_foo).bind(not_foo); -assertEquals([foo, 3, 1], f(3)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo).bind(not_foo).bind(not_foo, 1, 2).bind(not_foo); -assertEquals([foo, 3, 1], f(1)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo).bind(not_foo).bind(not_foo).bind(not_foo, 1, 2); -assertEquals([foo, 3, 1], f(3)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1).bind(not_foo, 2).bind(not_foo).bind(not_foo); -assertEquals([foo, 3, 1], f(3)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1).bind(not_foo).bind(not_foo, 2).bind(not_foo); -assertEquals([foo, 3, 1], f(3)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1).bind(not_foo).bind(not_foo).bind(not_foo, 2); -assertEquals([foo, 3, 1], f(3)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -f = foo.bind(foo).bind(not_foo, 1).bind(not_foo).bind(not_foo, 2); -assertEquals([foo, 3, 1], f(3)); -assertEquals(1, f.length); -%HeapObjectVerify(f); - -// The wrong number of arguments can be given to bound functions too. -f = foo.bind(foo); -assertEquals(3, f.length); -assertEquals([foo, 0, undefined], f()); -assertEquals([foo, 1, 1], f(1)); -assertEquals([foo, 2, 1], f(1, 2)); -assertEquals([foo, 3, 1], f(1, 2, 3)); -assertEquals([foo, 4, 1], f(1, 2, 3, 4)); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1); -assertEquals(2, f.length); -assertEquals([foo, 1, 1], f()); -assertEquals([foo, 2, 1], f(2)); -assertEquals([foo, 3, 1], f(2, 3)); -assertEquals([foo, 4, 1], f(2, 3, 4)); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1, 2); -assertEquals(1, f.length); -assertEquals([foo, 2, 1], f()); -assertEquals([foo, 3, 1], f(3)); -assertEquals([foo, 4, 1], f(3, 4)); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1, 2, 3); -assertEquals(0, f.length); -assertEquals([foo, 3, 1], f()); -assertEquals([foo, 4, 1], f(4)); -%HeapObjectVerify(f); - -f = foo.bind(foo, 1, 2, 3, 4); -assertEquals(0, f.length); -assertEquals([foo, 4, 1], f()); -%HeapObjectVerify(f); - -// Test constructor calls. - -function bar(x, y, z) { - this.x = x; - this.y = y; - this.z = z; -} - -f = bar.bind(bar); -var obj2 = new f(1,2,3); -assertEquals(1, obj2.x); -assertEquals(2, obj2.y); -assertEquals(3, obj2.z); -%HeapObjectVerify(f); -%HeapObjectVerify(obj2); - -f = bar.bind(bar, 1); -obj2 = new f(2,3); -assertEquals(1, obj2.x); -assertEquals(2, obj2.y); -assertEquals(3, obj2.z); -%HeapObjectVerify(f); -%HeapObjectVerify(obj2); - -f = bar.bind(bar, 1, 2); -obj2 = new f(3); -assertEquals(1, obj2.x); -assertEquals(2, obj2.y); -assertEquals(3, obj2.z); -%HeapObjectVerify(f); -%HeapObjectVerify(obj2); - -f = bar.bind(bar, 1, 2, 3); -obj2 = new f(); -assertEquals(1, obj2.x); -assertEquals(2, obj2.y); -assertEquals(3, obj2.z); -%HeapObjectVerify(f); -%HeapObjectVerify(obj2); - - -// Test bind chains when used as a constructor. -f = bar.bind(bar, 1).bind(bar, 2).bind(bar, 3); -obj2 = new f(); -assertEquals(1, obj2.x); -assertEquals(2, obj2.y); -assertEquals(3, obj2.z); -%HeapObjectVerify(f); -%HeapObjectVerify(obj2); - -// Test obj2 is instanceof both bar and f. -assertTrue(obj2 instanceof bar); -assertTrue(obj2 instanceof f); - -// This-args are not relevant to instanceof. -f = bar.bind(foo.prototype, 1). - bind(String.prototype, 2). - bind(Function.prototype, 3); -var obj3 = new f(); -assertTrue(obj3 instanceof bar); -assertTrue(obj3 instanceof f); -assertFalse(obj3 instanceof foo); -assertFalse(obj3 instanceof Function); -assertFalse(obj3 instanceof String); -%HeapObjectVerify(f); -%HeapObjectVerify(obj3); - -// thisArg is converted to object. -f = foo.bind(undefined); -assertEquals([this, 0, undefined], f()); -%HeapObjectVerify(f); - -f = foo.bind(null); -assertEquals([this, 0, undefined], f()); -%HeapObjectVerify(f); - -f = foo.bind(42); -assertEquals([Object(42), 0, undefined], f()); -%HeapObjectVerify(f); - -f = foo.bind("foo"); -assertEquals([Object("foo"), 0, undefined], f()); -%HeapObjectVerify(f); - -f = foo.bind(true); -assertEquals([Object(true), 0, undefined], f()); -%HeapObjectVerify(f); - -// Strict functions don't convert thisArg. -function soo(x, y, z) { - "use strict"; - return [this, arguments.length, x]; -} - -var s = soo.bind(undefined); -assertEquals([undefined, 0, undefined], s()); -%HeapObjectVerify(s); - -s = soo.bind(null); -assertEquals([null, 0, undefined], s()); -%HeapObjectVerify(s); - -s = soo.bind(42); -assertEquals([42, 0, undefined], s()); -%HeapObjectVerify(s); - -s = soo.bind("foo"); -assertEquals(["foo", 0, undefined], s()); -%HeapObjectVerify(s); - -s = soo.bind(true); -assertEquals([true, 0, undefined], s()); -%HeapObjectVerify(s); - -// Test that .arguments and .caller are poisoned according to the ES5 spec. - -// Check that property descriptors are correct (unconfigurable, unenumerable, -// and both get and set is the ThrowTypeError function). -// -// Poisoned accessors are no longer own properties --- get them from the -// prototype -var f_proto = Object.getPrototypeOf(f); -var cdesc = Object.getOwnPropertyDescriptor(f_proto, "caller"); -var adesc = Object.getOwnPropertyDescriptor(f_proto, "arguments"); - -assertFalse(cdesc.enumerable); -assertTrue(cdesc.configurable); - -assertFalse(adesc.enumerable); -assertTrue(adesc.configurable); - -assertSame(cdesc.get, cdesc.set); -assertSame(cdesc.get, adesc.get); -assertSame(cdesc.get, adesc.set); - -assertTrue(cdesc.get instanceof Function); -assertEquals(0, cdesc.get.length); -assertThrows(cdesc.get, TypeError); - -assertThrows(function() { return f.caller; }, TypeError); -assertThrows(function() { f.caller = 42; }, TypeError); -assertThrows(function() { return f.arguments; }, TypeError); -assertThrows(function() { f.arguments = 42; }, TypeError); - -// Shouldn't throw. Accessing the functions caller must throw if -// the caller is strict and the callee isn't. A bound function is built-in, -// but not considered strict. -(function foo() { return foo.caller; }).bind()(); - - -(function TestProtoIsPreserved() { - function fun() {} - - function proto() {} - Object.setPrototypeOf(fun, proto); - var bound = fun.bind({}); - assertEquals(proto, Object.getPrototypeOf(bound)); - %HeapObjectVerify(bound); - - var bound2 = fun.bind({}); - assertTrue(%HaveSameMap(new bound, new bound2)); - %HeapObjectVerify(bound2); - - Object.setPrototypeOf(fun, null); - bound = Function.prototype.bind.call(fun, {}); - assertEquals(null, Object.getPrototypeOf(bound)); - %HeapObjectVerify(bound); -})(); diff --git a/implementation-contributed/v8/mjsunit/function-call.js b/implementation-contributed/v8/mjsunit/function-call.js deleted file mode 100644 index 711acce0d71..00000000000 --- a/implementation-contributed/v8/mjsunit/function-call.js +++ /dev/null @@ -1,354 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -const should_throw_on_null_and_undefined = - [Object.prototype.toLocaleString, - Object.prototype.valueOf, - Object.prototype.hasOwnProperty, - Object.prototype.isPrototypeOf, - Object.prototype.propertyIsEnumerable, - Array.prototype.concat, - Array.prototype.join, - Array.prototype.pop, - Array.prototype.push, - Array.prototype.reverse, - Array.prototype.shift, - Array.prototype.slice, - Array.prototype.splice, - Array.prototype.unshift, - Array.prototype.indexOf, - Array.prototype.lastIndexOf, - Array.prototype.every, - Array.prototype.some, - Array.prototype.forEach, - Array.prototype.map, - Array.prototype.filter, - Array.prototype.reduce, - Array.prototype.reduceRight, - String.prototype.charAt, - String.prototype.charCodeAt, - String.prototype.concat, - String.prototype.indexOf, - String.prototype.lastIndexOf, - String.prototype.localeCompare, - String.prototype.match, - String.prototype.replace, - String.prototype.search, - String.prototype.slice, - String.prototype.split, - String.prototype.substring, - String.prototype.toLowerCase, - String.prototype.toLocaleLowerCase, - String.prototype.toUpperCase, - String.prototype.toLocaleUpperCase, - String.prototype.trim]; - -// Non generic natives do not work on any input other than the specific -// type, but since this change will allow call to be invoked with undefined -// or null as this we still explicitly test that we throw on these here. -const non_generic = - [Array.prototype.toString, - Array.prototype.toLocaleString, - Function.prototype.toString, - Function.prototype.call, - Function.prototype.apply, - String.prototype.toString, - String.prototype.valueOf, - Boolean.prototype.toString, - Boolean.prototype.valueOf, - Number.prototype.toString, - Number.prototype.valueOf, - Number.prototype.toFixed, - Number.prototype.toExponential, - Number.prototype.toPrecision, - Date.prototype.toString, - Date.prototype.toDateString, - Date.prototype.toTimeString, - Date.prototype.toLocaleString, - Date.prototype.toLocaleDateString, - Date.prototype.toLocaleTimeString, - Date.prototype.valueOf, - Date.prototype.getTime, - Date.prototype.getFullYear, - Date.prototype.getUTCFullYear, - Date.prototype.getMonth, - Date.prototype.getUTCMonth, - Date.prototype.getDate, - Date.prototype.getUTCDate, - Date.prototype.getDay, - Date.prototype.getUTCDay, - Date.prototype.getHours, - Date.prototype.getUTCHours, - Date.prototype.getMinutes, - Date.prototype.getUTCMinutes, - Date.prototype.getSeconds, - Date.prototype.getUTCSeconds, - Date.prototype.getMilliseconds, - Date.prototype.getUTCMilliseconds, - Date.prototype.getTimezoneOffset, - Date.prototype.setTime, - Date.prototype.setMilliseconds, - Date.prototype.setUTCMilliseconds, - Date.prototype.setSeconds, - Date.prototype.setUTCSeconds, - Date.prototype.setMinutes, - Date.prototype.setUTCMinutes, - Date.prototype.setHours, - Date.prototype.setUTCHours, - Date.prototype.setDate, - Date.prototype.setUTCDate, - Date.prototype.setMonth, - Date.prototype.setUTCMonth, - Date.prototype.setFullYear, - Date.prototype.setUTCFullYear, - Date.prototype.toUTCString, - Date.prototype.toISOString, - Date.prototype.toJSON, - RegExp.prototype.exec, - RegExp.prototype.test, - RegExp.prototype.toString, - Error.prototype.toString]; - - -// Mapping functions. -const mapping_functions = - [Array.prototype.every, - Array.prototype.some, - Array.prototype.forEach, - Array.prototype.map, - Array.prototype.filter]; - -// Reduce functions. -const reducing_functions = - [Array.prototype.reduce, - Array.prototype.reduceRight]; - -function checkExpectedMessage(e) { - assertTrue(e.message.includes("called on null or undefined") || - e.message.includes("invoked on undefined or null value") || - e.message.includes("Cannot convert undefined or null to object")); -} - -// Test that all natives using the ToObject call throw the right exception. -for (const fn of should_throw_on_null_and_undefined) { - // Sanity check that all functions are correct - assertEquals(typeof fn, "function"); - - let exception = false; - try { - // We need to pass a dummy object argument ({}) to these functions because - // of Object.prototype.isPrototypeOf's special behavior, see issue 3483 - // for more details. - fn.call(null, {}); - } catch (e) { - exception = true; - checkExpectedMessage(e); - } - assertTrue(exception); - - exception = false; - try { - fn.call(undefined, {}); - } catch (e) { - exception = true; - checkExpectedMessage(e); - } - assertTrue(exception); - - exception = false; - try { - fn.apply(null, [{}]); - } catch (e) { - exception = true; - checkExpectedMessage(e); - } - assertTrue(exception); - - exception = false; - try { - fn.apply(undefined, [{}]); - } catch (e) { - exception = true; - checkExpectedMessage(e); - } - assertTrue(exception); -} - -// Test that all natives that are non generic throw on null and undefined. -for (const fn of non_generic) { - // Sanity check that all functions are correct - assertEquals(typeof fn, "function"); - - exception = false; - try { - fn.call(null); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError); - } - assertTrue(exception); - - exception = false; - try { - fn.call(null); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError); - } - assertTrue(exception); - - exception = false; - try { - fn.apply(null); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError); - } - assertTrue(exception); - - exception = false; - try { - fn.apply(null); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError); - } - assertTrue(exception); -} - - -// Test that we still throw when calling with thisArg null or undefined -// through an array mapping function. -// We need to make sure that the elements of `array` are all object values, -// see issue 3483 for more details. -const array = [{}, [], new Number, new Map, new WeakSet]; -for (const mapping_function of mapping_functions) { - for (const fn of should_throw_on_null_and_undefined) { - exception = false; - try { - mapping_function.call(array, - fn, - null); - } catch (e) { - exception = true; - checkExpectedMessage(e); - } - assertTrue(exception); - - exception = false; - try { - mapping_function.call(array, - fn, - undefined); - } catch (e) { - exception = true; - checkExpectedMessage(e); - } - assertTrue(exception); - } -} - -for (const mapping_function of mapping_functions) { - for (const fn of non_generic) { - exception = false; - try { - mapping_function.call(array, - fn, - null); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError); - } - assertTrue(exception); - - exception = false; - try { - mapping_function.call(array, - fn, - undefined); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError); - } - assertTrue(exception); - } -} - - -// Reduce functions do a call with null as this argument. -for (const reducing_function of reducing_functions) { - for (const fn of should_throw_on_null_and_undefined) { - exception = false; - try { - reducing_function.call(array, fn); - } catch (e) { - exception = true; - checkExpectedMessage(e); - } - assertTrue(exception); - - exception = false; - try { - reducing_function.call(array, fn); - } catch (e) { - exception = true; - checkExpectedMessage(e); - } - assertTrue(exception); - } -} - -for (const reducing_function of reducing_functions) { - for (const fn of non_generic) { - exception = false; - try { - reducing_function.call(array, fn); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError); - } - assertTrue(exception); - - exception = false; - try { - reducing_function.call(array, fn); - } catch (e) { - exception = true; - assertTrue(e instanceof TypeError); - } - assertTrue(exception); - } -} - - -// Object.prototype.toString() -assertEquals(Object.prototype.toString.call(null), - '[object Null]') - -assertEquals(Object.prototype.toString.call(undefined), - '[object Undefined]') diff --git a/implementation-contributed/v8/mjsunit/function-caller.js b/implementation-contributed/v8/mjsunit/function-caller.js deleted file mode 100644 index 86794e8105c..00000000000 --- a/implementation-contributed/v8/mjsunit/function-caller.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f(match) { - g(match); -} - -function g(match) { - assertEquals(f, g.caller); - assertEquals(match, f.caller); -} - -// Check called from function. -function h() { - f(h); -} -h(); - -// Check called from top-level. -f(null); - -// Check called from eval. -eval('f(null)'); - -// Check called from builtin functions. -[null, null].sort(f); -[null].forEach(f, null); -"abel".replace(/b/g, function h() { - assertEquals(null, h.caller); -}); diff --git a/implementation-contributed/v8/mjsunit/function-length-accessor.js b/implementation-contributed/v8/mjsunit/function-length-accessor.js deleted file mode 100644 index 386ac996432..00000000000 --- a/implementation-contributed/v8/mjsunit/function-length-accessor.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --lazy - -function foo(a, b, c, d) { - "use strict" - const x = 10; - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - // long comment to trigger lazy compilation. - x = 20; // This will trigger compile error with harmony scoping. -} - -assertThrows("foo.length()"); diff --git a/implementation-contributed/v8/mjsunit/function-name-eval-shadowed.js b/implementation-contributed/v8/mjsunit/function-name-eval-shadowed.js deleted file mode 100644 index 70cc4b9c547..00000000000 --- a/implementation-contributed/v8/mjsunit/function-name-eval-shadowed.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(200, (function f() { eval("var f = 100"); f = 200; return f })()); diff --git a/implementation-contributed/v8/mjsunit/function-named-self-reference.js b/implementation-contributed/v8/mjsunit/function-named-self-reference.js deleted file mode 100644 index 5b03b094b7a..00000000000 --- a/implementation-contributed/v8/mjsunit/function-named-self-reference.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var fn = function fn(val) { - if (val) return val; - - %OptimizeFunctionOnNextCall(fn); - - function run(val) { - var res = fn((val + 1) << 1); - - return res; - } - - return run(0); -} - -var res = fn(); -assertEquals(res, 2); diff --git a/implementation-contributed/v8/mjsunit/function-names.js b/implementation-contributed/v8/mjsunit/function-names.js deleted file mode 100644 index 6df31b900af..00000000000 --- a/implementation-contributed/v8/mjsunit/function-names.js +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -function TestFunctionNames(object, names) { - for (var i = 0; i < names.length; i++) { - assertEquals(names[i], object[names[i]].name); - } -} - - -// Array.prototype functions. -var arrayPrototypeFunctions = [ - "toString", "toLocaleString", "join", "pop", "push", "concat", "reverse", - "shift", "unshift", "slice", "splice", "sort", "filter", "forEach", - "some", "every", "map", "indexOf", "lastIndexOf"]; - -TestFunctionNames(Array.prototype, arrayPrototypeFunctions); - - -// Boolean prototype functions. -var booleanPrototypeFunctions = [ "toString", "valueOf" ]; - -TestFunctionNames(Boolean.prototype, booleanPrototypeFunctions); - - -// Date functions. -var dateFunctions = ["UTC", "parse", "now"]; - -TestFunctionNames(Date, dateFunctions); - - -// Date.prototype functions. -var datePrototypeFunctions = [ - "toString", "toDateString", "toTimeString", "toLocaleString", - "toLocaleDateString", "toLocaleTimeString", "valueOf", "getTime", - "getFullYear", "getUTCFullYear", "getMonth", "getUTCMonth", - "getDate", "getUTCDate", "getDay", "getUTCDay", "getHours", - "getUTCHours", "getMinutes", "getUTCMinutes", "getSeconds", - "getUTCSeconds", "getMilliseconds", "getUTCMilliseconds", - "getTimezoneOffset", "setTime", "setMilliseconds", - "setUTCMilliseconds", "setSeconds", "setUTCSeconds", "setMinutes", - "setUTCMinutes", "setHours", "setUTCHours", "setDate", "setUTCDate", - "setMonth", "setUTCMonth", "setFullYear", "setUTCFullYear", - "toUTCString", "getYear", "setYear"]; - -TestFunctionNames(Date.prototype, datePrototypeFunctions); -assertEquals(Date.prototype.toGMTString, Date.prototype.toUTCString); - - -// Function.prototype functions. -var functionPrototypeFunctions = [ "toString", "apply", "call" ]; - -TestFunctionNames(Function.prototype, functionPrototypeFunctions); - -// Math functions. -var mathFunctions = [ - "random", "abs", "acos", "asin", "atan", "ceil", "cos", "exp", "floor", - "log", "round", "sin", "sqrt", "tan", "atan2", "pow", "max", "min"]; - -TestFunctionNames(Math, mathFunctions); - - -// Number.prototype functions. -var numberPrototypeFunctions = [ - "toString", "toLocaleString", "valueOf", "toFixed", "toExponential", - "toPrecision"]; - -TestFunctionNames(Number.prototype, numberPrototypeFunctions); - -// Object.prototype functions. -var objectPrototypeFunctions = [ - "toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", - "propertyIsEnumerable", "__defineGetter__", "__lookupGetter__", - "__defineSetter__", "__lookupSetter__"]; - -TestFunctionNames(Object.prototype, objectPrototypeFunctions); - -// RegExp.prototype functions. -var regExpPrototypeFunctions = ["exec", "test", "toString", "compile"]; - -TestFunctionNames(RegExp.prototype, regExpPrototypeFunctions); - -// String functions. -var stringFunctions = ["fromCharCode"]; - -TestFunctionNames(String, stringFunctions); - - -// String.prototype functions. -var stringPrototypeFunctions = [ - "toString", "valueOf", "charAt", "charCodeAt", "concat", "indexOf", - "lastIndexOf", "localeCompare", "match", "replace", "search", "slice", - "split", "substring", "substr", "toLowerCase", "toLocaleLowerCase", - "toUpperCase", "toLocaleUpperCase", "link", "anchor", "fontcolor", - "fontsize", "big", "blink", "bold", "fixed", "italics", "small", - "strike", "sub", "sup"]; - -TestFunctionNames(String.prototype, stringPrototypeFunctions); - - -// Global functions. -var globalFunctions = [ - "escape", "unescape", "decodeURI", "decodeURIComponent", - "encodeURI", "encodeURIComponent", "Error", "TypeError", - "RangeError", "SyntaxError", "ReferenceError", "EvalError", - "URIError", "isNaN", "isFinite", "parseInt", "parseFloat", - "eval"]; - -TestFunctionNames(this, globalFunctions); diff --git a/implementation-contributed/v8/mjsunit/function-property.js b/implementation-contributed/v8/mjsunit/function-property.js deleted file mode 100644 index a657f649c83..00000000000 --- a/implementation-contributed/v8/mjsunit/function-property.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { }; -assertEquals(5, f = 5); diff --git a/implementation-contributed/v8/mjsunit/function-prototype.js b/implementation-contributed/v8/mjsunit/function-prototype.js deleted file mode 100644 index 76ab53cf074..00000000000 --- a/implementation-contributed/v8/mjsunit/function-prototype.js +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we can set function prototypes to non-object values. The -// prototype used for instances in that case should be the initial -// object prototype. ECMA-262 13.2.2. -function TestNonObjectPrototype(value) { - function F() {}; - F.prototype = value; - var f = new F(); - assertEquals(value, F.prototype); - assertEquals(Object.prototype, f.__proto__); - // Test that map transitions don't break anything. - F.property = "value"; - assertEquals(value, F.prototype); -} - -var values = [123, "asdf", true]; - -values.forEach(TestNonObjectPrototype); - - -// Test moving between non-object and object values. -function F() {}; -var f = new F(); -assertEquals(f.__proto__, F.prototype); -F.prototype = 42; -f = new F(); -assertEquals(Object.prototype, f.__proto__); -assertEquals(42, F.prototype); -F.prototype = { a: 42 }; -f = new F(); -assertEquals(42, F.prototype.a); -assertEquals(f.__proto__, F.prototype); - - -// Test that the fast case optimizations can handle non-functions, -// functions with no prototypes (yet), non-object prototypes, -// functions without initial maps, and the fully initialized -// functions. -function GetPrototypeOf(f) { - return f.prototype; -}; - -// Seed the GetPrototypeOf function to enable the fast case -// optimizations. -var p = GetPrototypeOf(GetPrototypeOf); - -// Check that getting the prototype of a tagged integer works. -assertTrue(typeof GetPrototypeOf(1) == 'undefined'); - -function NoPrototypeYet() { } -var p = GetPrototypeOf(NoPrototypeYet); -assertEquals(NoPrototypeYet.prototype, p); - -function NonObjectPrototype() { } -NonObjectPrototype.prototype = 42; -assertEquals(42, GetPrototypeOf(NonObjectPrototype)); - -function NoInitialMap() { } -var p = NoInitialMap.prototype; -assertEquals(p, GetPrototypeOf(NoInitialMap)); - -// Check the standard fast case. -assertEquals(F.prototype, GetPrototypeOf(F)); - -// Check that getting the prototype of a non-function works. This must -// be the last thing we do because this will clobber the optimizations -// in GetPrototypeOf and go to a monomorphic IC load instead. -assertEquals(87, GetPrototypeOf({prototype:87})); - -// Check the prototype is not enumerable, as per ES5 section 15.3.5.2. Note -// that this is in difference to ES3, which specified that function instances -// would have enumerable prototypes (section 15.3.5.2 also). -var foo = new Function("return x"); -var result = "" -for (var n in foo) result += n; -assertEquals(result, ""); - -f = new Function('return 1;') -var desc = Object.getOwnPropertyDescriptor(f, "prototype"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertTrue(desc.writable); - -f = Function('return 1;') -var desc = Object.getOwnPropertyDescriptor(f, "prototype"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertTrue(desc.writable); - -f = function () { return 1; } -var desc = Object.getOwnPropertyDescriptor(f, "prototype"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertTrue(desc.writable); diff --git a/implementation-contributed/v8/mjsunit/function-var.js b/implementation-contributed/v8/mjsunit/function-var.js deleted file mode 100644 index 607cbe730ea..00000000000 --- a/implementation-contributed/v8/mjsunit/function-var.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - function f() { - { - function f() { return 42 } - } - function g() { return f } - return g; - } - - var g = f(); - var inner_f = g(); - assertEquals(42, inner_f()); -})(); - -(function() { - var y = 100; - var z = (function y() { return y; }); - assertEquals(z, z()); -})(); diff --git a/implementation-contributed/v8/mjsunit/function-without-prototype.js b/implementation-contributed/v8/mjsunit/function-without-prototype.js deleted file mode 100644 index 90180866bc2..00000000000 --- a/implementation-contributed/v8/mjsunit/function-without-prototype.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests that function does not have prototype. -function testPrototype(f) { - assertFalse('prototype' in f); - assertEquals(undefined, f.prototype); - f.prototype = 42; - assertEquals(42, f.prototype); - assertTrue('prototype' in f); -} - -// Tests that construction from function throws. -function testConstruction(name) { - assertThrows("new " + name + "()"); - eval(name + ".prototype = 42;"); - assertThrows("new " + name + "()"); -} - -testPrototype(eval); -testPrototype(Array.prototype.push); -testPrototype(Function.prototype.call); -testPrototype(String.fromCharCode); -var date = new Date(); -testPrototype(date.toString); - -testConstruction("parseInt"); -testConstruction("Function.prototype.apply"); -var regexp = /abc/g; -testConstruction("regexp.test"); diff --git a/implementation-contributed/v8/mjsunit/function.js b/implementation-contributed/v8/mjsunit/function.js deleted file mode 100644 index 5c33762b3ea..00000000000 --- a/implementation-contributed/v8/mjsunit/function.js +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var f = Function(); -assertTrue(typeof f() == 'undefined'); -f = new Function(); -assertTrue(typeof f() == 'undefined'); - -f = Function('return 1'); -assertEquals(1, f()); -f = new Function('return 1'); -assertEquals(1, f()); - -f = Function('return true'); -assertTrue(f()); -f = new Function('return true'); -assertTrue(f()); - -f = Function('x', 'return x'); -assertEquals(1, f(1)); -assertEquals('bar', f('bar')); -assertTrue(typeof f() == 'undefined'); -var x = {}; -assertTrue(x === f(x)); - -f = Function('x', 'return x // comment'); -assertEquals(1, f(1)); - -f = Function('return typeof anonymous'); -assertEquals('undefined', f()); - -var anonymous = 42; -f = Function('return anonymous;'); -assertEquals(42, f()); - -f = new Function('x', 'return x') -assertEquals(1, f(1)); -assertEquals('bar', f('bar')); -assertTrue(typeof f() == 'undefined'); -var x = {}; -assertTrue(x === f(x)); - -f = Function('x', 'y', 'return x+y'); -assertEquals(5, f(2, 3)); -assertEquals('foobar', f('foo', 'bar')); -f = new Function('x', 'y', 'return x+y'); -assertEquals(5, f(2, 3)); -assertEquals('foobar', f('foo', 'bar')); - -var x = {}; x.toString = function() { return 'x'; }; -var y = {}; y.toString = function() { return 'y'; }; -var z = {}; z.toString = function() { return 'return x*y'; } -var f = Function(x, y, z); -assertEquals(25, f(5, 5)); -assertEquals(42, f(2, 21)); -f = new Function(x, y, z); -assertEquals(25, f(5, 5)); -assertEquals(42, f(2, 21)); diff --git a/implementation-contributed/v8/mjsunit/fuzz-accessors.js b/implementation-contributed/v8/mjsunit/fuzz-accessors.js deleted file mode 100644 index 8d5bec1b9d8..00000000000 --- a/implementation-contributed/v8/mjsunit/fuzz-accessors.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var builtInPropertyNames = [ - 'prototype', 'length', 0, 1, '$1', 'name', 'message', 'constructor' -]; - -var builtInPropertyNamesMayThrow = [ - 'caller', 'arguments' -]; - -function getAnException() { - try { - ("str")(); - } catch (e) { - return e; - } -} - -function getSpecialObjects() { - return [ - function () { }, - [1, 2, 3], - /xxx/, - RegExp, - "blah", - 9, - new Date(), - getAnException() - ]; -} - -var object = { }; -var fun = function () { }; -var someException = getAnException(); -var someDate = new Date(); - -var objects = [ - [1, Number.prototype], - ["foo", String.prototype], - [true, Boolean.prototype], - [object, object], - [fun, fun], - [someException, someException], - [someDate, someDate] -]; - -function runTest(fun) { - for (var i in objects) { - var obj = objects[i][0]; - var chain = objects[i][1]; - var specialObjects = getSpecialObjects(); - for (var j in specialObjects) { - var special = specialObjects[j]; - chain.__proto__ = special; - for (var k in builtInPropertyNames) { - var propertyName = builtInPropertyNames[k]; - fun(obj, propertyName); - } - for (var k in builtInPropertyNamesMayThrow) { - var propertyName = builtInPropertyNamesMayThrow[k]; - try { - fun(obj, propertyName); - } catch (e) { - } - } - } - } -} - -runTest(function (obj, name) { return obj[name]; }); -runTest(function (obj, name) { return obj[name] = { }; }); diff --git a/implementation-contributed/v8/mjsunit/generated-transition-stub.js b/implementation-contributed/v8/mjsunit/generated-transition-stub.js deleted file mode 100644 index e6d949bbaa7..00000000000 --- a/implementation-contributed/v8/mjsunit/generated-transition-stub.js +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -%NeverOptimizeFunction(test); -function test() { - - const iteration_count = 1; - - function transition1(a, i, v) { - a[i] = v; - } - - // - // Test PACKED SMI -> PACKED DOUBLE - // - - const a1 = [0, 1, 2, 3, 4]; - transition1(a1, 0, 2.5); - const a2 = [0, 1, 2, 3, 4]; - transition1(a2, 0, 2.5); - assertFalse(%HasHoleyElements(a2)); - %OptimizeFunctionOnNextCall(transition1); - - const a3 = [0, 1, 2, 3, 4]; - assertTrue(%HasSmiElements(a3)); - transition1(a3, 0, 2.5); - assertFalse(%HasHoleyElements(a3)); - assertEquals(4, a3[4]); - assertEquals(2.5, a3[0]); - - // Test handling of hole. - const a4 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; - a4.length = 7; - assertTrue(%HasSmiElements(a4)); - transition1(a4, 0, 2.5); - assertFalse(%HasHoleyElements(a4)); - assertEquals(2.5, a4[0]); - assertEquals(undefined, a4[8]); - - // Large array should deopt to runtimea - for (j = 0; j < iteration_count; ++j) { - const a5 = new Array(); - for (i = 0; i < 0x40000; ++i) { - a5[i] = 0; - } - assertTrue(%HasSmiElements(a5) || %HasDoubleElements(a5)); - transition1(a5, 0, 2.5); - assertEquals(2.5, a5[0]); - } - - // - // Test HOLEY SMI -> HOLEY DOUBLE - // - - function transition2(a, i, v) { - a[i] = v; - } - - const b1 = [0, 1, 2, , 4]; - transition2(b1, 0, 2.5); - const b2 = [0, 1, 2, , 4]; - transition2(b2, 0, 2.5); - assertTrue(%HasHoleyElements(b2)); - %OptimizeFunctionOnNextCall(transition2); - - const b3 = [0, 1, 2, , 4]; - assertTrue(%HasSmiElements(b3)); - assertTrue(%HasHoleyElements(b3)); - transition2(b3, 0, 2.5); - assertTrue(%HasHoleyElements(b3)); - assertEquals(4, b3[4]); - assertEquals(2.5, b3[0]); - - // Large array should deopt to runtime - for (j = 0; j < iteration_count; ++j) { - const b4 = [0, ,0]; - for (i = 3; i < 0x40000; ++i) { - b4[i] = 0; - } - assertTrue(%HasSmiElements(b4)); - transition2(b4, 0, 2.5); - assertEquals(2.5, b4[0]); - } - - // - // Test PACKED DOUBLE -> PACKED OBJECT - // - - function transition3(a, i, v) { - a[i] = v; - } - - const c1 = [0, 1, 2, 3.5, 4]; - transition3(c1, 0, new Object()); - const c2 = [0, 1, 2, 3.5, 4]; - transition3(c2, 0, new Object()); - assertTrue(%HasObjectElements(c2)); - assertTrue(!%HasHoleyElements(c2)); - %OptimizeFunctionOnNextCall(transition3); - - const c3 = [0, 1, 2, 3.5, 4]; - assertTrue(%HasDoubleElements(c3)); - assertTrue(!%HasHoleyElements(c3)); - transition3(c3, 0, new Array()); - assertTrue(!%HasHoleyElements(c3)); - assertTrue(%HasObjectElements(c3)); - assertEquals(4, c3[4]); - assertEquals(0, c3[0].length); - - // Large array under the deopt threshold should be able to trigger GC without - // causing crashes. - for (j = 0; j < iteration_count; ++j) { - const c4 = [0, 2.5, 0]; - for (i = 3; i < 0xa000; ++i) { - c4[i] = 0; - } - assertTrue(%HasDoubleElements(c4)); - assertTrue(!%HasHoleyElements(c4)); - transition3(c4, 0, new Array(5)); - assertTrue(!%HasHoleyElements(c4)); - assertTrue(%HasObjectElements(c4)); - assertEquals(5, c4[0].length); - } - - // Large array should deopt to runtime - for (j = 0; j < iteration_count; ++j) { - const c5 = [0, 2.5, 0]; - for (i = 3; i < 0x40000; ++i) { - c5[i] = 0; - } - assertTrue(%HasDoubleElements(c5)); - assertTrue(!%HasHoleyElements(c5)); - transition3(c5, 0, new Array(5)); - assertTrue(!%HasHoleyElements(c5)); - assertTrue(%HasObjectElements(c5)); - assertEquals(5, c5[0].length); - } - - // - // Test HOLEY DOUBLE -> HOLEY OBJECT - // - - function transition4(a, i, v) { - a[i] = v; - } - - const d1 = [0, 1, , 3.5, 4]; - transition4(d1, 0, new Object()); - const d2 = [0, 1, , 3.5, 4]; - transition4(d2, 0, new Object()); - assertTrue(%HasObjectElements(d2)); - assertTrue(%HasHoleyElements(d2)); - %OptimizeFunctionOnNextCall(transition4); - - const d3 = [0, 1, , 3.5, 4]; - assertTrue(%HasDoubleElements(d3)); - assertTrue(%HasHoleyElements(d3)); - transition4(d3, 0, new Array()); - assertTrue(%HasHoleyElements(d3)); - assertTrue(%HasObjectElements(d3)); - assertEquals(4, d3[4]); - assertEquals(0, d3[0].length); - - // Large array under the deopt threshold should be able to trigger GC without - // causing crashes. - for (j = 0; j < iteration_count; ++j) { - const d4 = [, 2.5, ,]; - for (i = 3; i < 0xa000; ++i) { - d4[i] = 0; - } - assertTrue(%HasDoubleElements(d4)); - assertTrue(%HasHoleyElements(d4)); - transition4(d4, 0, new Array(5)); - assertTrue(%HasHoleyElements(d4)); - assertTrue(%HasObjectElements(d4)); - assertEquals(5, d4[0].length); - assertEquals(undefined, d4[2]); - } - - // Large array should deopt to runtime - for (j = 0; j < iteration_count; ++j) { - const d5 = [, 2.5, ,]; - for (i = 3; i < 0x40000; ++i) { - d5[i] = 0; - } - assertTrue(%HasDoubleElements(d5)); - assertTrue(%HasHoleyElements(d5)); - transition4(d5, 0, new Array(5)); - assertTrue(%HasHoleyElements(d5)); - assertTrue(%HasObjectElements(d5)); - assertEquals(5, d5[0].length); - assertEquals(undefined, d5[2]); - } - -} -test(); diff --git a/implementation-contributed/v8/mjsunit/get-own-property-descriptor-non-objects.js b/implementation-contributed/v8/mjsunit/get-own-property-descriptor-non-objects.js deleted file mode 100644 index ee8bf44ded9..00000000000 --- a/implementation-contributed/v8/mjsunit/get-own-property-descriptor-non-objects.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function() { - Object.getOwnPropertyDescriptor(null, 'x'); -}, TypeError); - - -assertThrows(function() { - Object.getOwnPropertyDescriptor(undefined, 'x'); -}, TypeError); - - -assertEquals({ - configurable: false, - enumerable: false, - value: 3, - writable: false, -}, Object.getOwnPropertyDescriptor('abc', 'length')); - - -assertEquals({ - configurable: false, - enumerable: true, - value: 'a', - writable: false, -}, Object.getOwnPropertyDescriptor('abc', 0)); - - -assertSame(undefined, Object.getOwnPropertyDescriptor(42, 'x')); -assertSame(undefined, Object.getOwnPropertyDescriptor(true, 'x')); -assertSame(undefined, Object.getOwnPropertyDescriptor(false, 'x')); -assertSame(undefined, Object.getOwnPropertyDescriptor(Symbol(), 'x')); diff --git a/implementation-contributed/v8/mjsunit/get-own-property-descriptor.js b/implementation-contributed/v8/mjsunit/get-own-property-descriptor.js deleted file mode 100644 index 159c63bcc1f..00000000000 --- a/implementation-contributed/v8/mjsunit/get-own-property-descriptor.js +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This file only tests very simple descriptors that always have -// configurable, enumerable, and writable set to true. -// A range of more elaborate tests are performed in -// object-define-property.js - -function get() { return x; } -function set(x) { this.x = x; } - -var obj = {x: 1}; -obj.__defineGetter__("accessor", get); -obj.__defineSetter__("accessor", set); -var a = new Array(); -a[1] = 42; -obj[1] = 42; - -var descIsData = Object.getOwnPropertyDescriptor(obj, 'x'); -assertTrue(descIsData.enumerable); -assertTrue(descIsData.writable); -assertTrue(descIsData.configurable); - -var descIsAccessor = Object.getOwnPropertyDescriptor(obj, 'accessor'); -assertTrue(descIsAccessor.enumerable); -assertTrue(descIsAccessor.configurable); -assertTrue(descIsAccessor.get == get); -assertTrue(descIsAccessor.set == set); - -var descIsNotData = Object.getOwnPropertyDescriptor(obj, 'not-x'); -assertTrue(descIsNotData == undefined); - -var descIsNotAccessor = Object.getOwnPropertyDescriptor(obj, 'not-accessor'); -assertTrue(descIsNotAccessor == undefined); - -var descArray = Object.getOwnPropertyDescriptor(a, '1'); -assertTrue(descArray.enumerable); -assertTrue(descArray.configurable); -assertTrue(descArray.writable); -assertEquals(descArray.value, 42); - -var descObjectElement = Object.getOwnPropertyDescriptor(obj, '1'); -assertTrue(descObjectElement.enumerable); -assertTrue(descObjectElement.configurable); -assertTrue(descObjectElement.writable); -assertEquals(descObjectElement.value, 42); - -// String objects. -var a = new String('foobar'); -for (var i = 0; i < a.length; i++) { - var descStringObject = Object.getOwnPropertyDescriptor(a, i); - assertTrue(descStringObject.enumerable); - assertFalse(descStringObject.configurable); - assertFalse(descStringObject.writable); - assertEquals(descStringObject.value, a.substring(i, i+1)); -} - -// Support for additional attributes on string objects. -a.x = 42; -a[10] = 'foo'; -var descStringProperty = Object.getOwnPropertyDescriptor(a, 'x'); -assertTrue(descStringProperty.enumerable); -assertTrue(descStringProperty.configurable); -assertTrue(descStringProperty.writable); -assertEquals(descStringProperty.value, 42); - -var descStringElement = Object.getOwnPropertyDescriptor(a, '10'); -assertTrue(descStringElement.enumerable); -assertTrue(descStringElement.configurable); -assertTrue(descStringElement.writable); -assertEquals(descStringElement.value, 'foo'); - -// Test that elements in the prototype chain is not returned. -var proto = {}; -proto[10] = 42; - -var objWithProto = new Array(); -objWithProto.prototype = proto; -objWithProto[0] = 'bar'; -var descWithProto = Object.getOwnPropertyDescriptor(objWithProto, '10'); -assertEquals(undefined, descWithProto); - -// Test elements on global proxy object. -var global = (function() { return this; })(); - -global[42] = 42; - -function el_getter() { return 239; }; -function el_setter() {}; -Object.defineProperty(global, '239', {get: el_getter, set: el_setter}); - -var descRegularElement = Object.getOwnPropertyDescriptor(global, '42'); -assertEquals(42, descRegularElement.value); - -var descAccessorElement = Object.getOwnPropertyDescriptor(global, '239'); -assertEquals(el_getter, descAccessorElement.get); -assertEquals(el_setter, descAccessorElement.set); diff --git a/implementation-contributed/v8/mjsunit/get-prototype-of.js b/implementation-contributed/v8/mjsunit/get-prototype-of.js deleted file mode 100644 index 0a43b4cc265..00000000000 --- a/implementation-contributed/v8/mjsunit/get-prototype-of.js +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function assertPrototypeOf(func, expected) { - assertEquals(expected, Object.getPrototypeOf(func)); -} - - -assertThrows(function() { - Object.getPrototypeOf(undefined); -}, TypeError); - - -assertThrows(function() { - Object.getPrototypeOf(null); -}, TypeError); - - -function F(){}; -var y = new F(); - -assertPrototypeOf(y, F.prototype); -assertPrototypeOf(F, Function.prototype); - -assertPrototypeOf({x: 5}, Object.prototype); -assertPrototypeOf({x: 5, __proto__: null}, null); - -assertPrototypeOf([1, 2], Array.prototype); - - -assertPrototypeOf(1, Number.prototype); -assertPrototypeOf(true, Boolean.prototype); -assertPrototypeOf(false, Boolean.prototype); -assertPrototypeOf('str', String.prototype); -assertPrototypeOf(Symbol(), Symbol.prototype); - - -var errorFunctions = [ - EvalError, - RangeError, - ReferenceError, - SyntaxError, - TypeError, - URIError, -]; - -for (var f of errorFunctions) { - assertPrototypeOf(f, Error); - assertPrototypeOf(new f(), f.prototype); -} - - -// Builtin constructors. -var functions = [ - Array, - ArrayBuffer, - Boolean, - // DataView, - Date, - Error, - // Float32Array, prototype is %TypedArray% - // Float64Array, - Function, - // Int16Array, - // Int32Array, - // Int8Array, - Map, - Number, - Object, - // Promise, - RegExp, - Set, - String, - // Symbol, not constructible - // Uint16Array, - // Uint32Array, - // Uint8Array, - // Uint8ClampedArray, - WeakMap, - WeakSet, -]; - -for (var f of functions) { - assertPrototypeOf(f, Function.prototype); - assertPrototypeOf(new f(), f.prototype); -} - -var p = new Promise(function() {}); -assertPrototypeOf(p, Promise.prototype); - -var dv = new DataView(new ArrayBuffer()); -assertPrototypeOf(dv, DataView.prototype); diff --git a/implementation-contributed/v8/mjsunit/getter-in-prototype.js b/implementation-contributed/v8/mjsunit/getter-in-prototype.js deleted file mode 100644 index 01a3473ba9e..00000000000 --- a/implementation-contributed/v8/mjsunit/getter-in-prototype.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that exceptions are not thrown when setting properties on object -// that have only a getter in a prototype object, except when we are in strict -// mode where exceptsions should be thrown. - -var o = {}; -var p = {}; -p.__defineGetter__('x', function(){}); -p.__defineGetter__(0, function(){}); -o.__proto__ = p; - -assertDoesNotThrow("o.x = 42"); -assertDoesNotThrow("o[0] = 42"); - -assertThrows(function() { 'use strict'; o.x = 42; }); -assertThrows(function() { 'use strict'; o[0] = 42; }); - -function f() { - with(o) { - x = 42; - } -} - -assertDoesNotThrow(f); - -__proto__ = p; -function g() { - eval('1'); - x = 42; -} - -function g_strict() { - 'use strict'; - eval('1'); - x = 42; -} - -assertDoesNotThrow(g); -assertThrows(g_strict); - -__proto__ = p; -function g2() { - this[0] = 42; -} - -function g2_strict() { - 'use strict'; - this[0] = 42; -} - -assertDoesNotThrow(g2); -assertThrows(g2_strict); diff --git a/implementation-contributed/v8/mjsunit/getter-in-value-prototype.js b/implementation-contributed/v8/mjsunit/getter-in-value-prototype.js deleted file mode 100644 index 835710604b7..00000000000 --- a/implementation-contributed/v8/mjsunit/getter-in-value-prototype.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that getters can be defined and called on value prototypes. -// -// This used to fail because of an invalid cast of the receiver to a -// JSObject. - -String.prototype.__defineGetter__('x', function() { return this; }); -assertEquals(Object('asdf'), 'asdf'.x); diff --git a/implementation-contributed/v8/mjsunit/getters-on-elements.js b/implementation-contributed/v8/mjsunit/getters-on-elements.js deleted file mode 100644 index d8cda83ad18..00000000000 --- a/implementation-contributed/v8/mjsunit/getters-on-elements.js +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --noalways-opt --opt - -// It's nice to run this in other browsers too. -var standalone = false; -if (standalone) { - assertTrue = function(val) { - if (val != true) { - print("FAILURE"); - } - } - - assertFalse = function(val) { - if (val != false) { - print("FAILURE"); - } - } - - assertEquals = function(expected, val) { - if (expected !== val) { - print("FAILURE"); - } - } - - empty_func = function(name) { } - assertUnoptimized = empty_func; - assertOptimized = empty_func; - - optimize = empty_func; - clearFunctionTypeFeedback = empty_func; - deoptimizeFunction = empty_func; -} else { - optimize = function(name) { - %OptimizeFunctionOnNextCall(name); - } - clearFunctionTypeFeedback = function(name) { - %ClearFunctionFeedback(name); - } - deoptimizeFunction = function(name) { - %DeoptimizeFunction(name); - } -} - -function base_getter_test(create_func) { - var calls = 0; - - // Testcase: setter in prototype chain - foo = function(a) { var x = a[0]; return x + 3; } - var a = create_func(); - var ap = []; - ap.__defineGetter__(0, function() { calls++; return 0; }); - - foo(a); - assertUnoptimized(foo); - // Smi and Double elements transition the KeyedLoadIC to Generic state - // here, because they miss twice with the same map when loading the hole. - // For HOLEY_ELEMENTS, however, the IC knows how to convert the hole - // to undefined if the prototype is the original array prototype, so it - // stays monomorphic for now... - foo(a); - foo(a); - delete a[0]; - - assertEquals(0, calls); - a.__proto__ = ap; - // ...and later becomes polymorphic when it sees a second map. Optimized - // code will therefore inline the elements access, and deopt right away - // when it loads the hole from index [0]. - // Possible solutions: - // - remove the convert_hole_to_undefined flag from the IC, to force it - // into generic state for all elements kinds. Cost: slower ICs in code - // that doesn't get optimized. - // - teach Turbofan about the same trick: for holey elements with the - // original array prototype, convert hole to undefined inline. Cost: - // larger optimized code size, because the loads for different maps with - // the same elements kind can no longer be consolidated if they handle - // the hole differently. - // - call "foo" twice after setting a.__proto__ and before optimizing it; - // this is the simplest fix so let's do that for now. - foo(a); - assertEquals(1, calls); - foo(a); - assertEquals(2, calls); - optimize(foo); - foo(a); - assertEquals(3, calls); - assertOptimized(foo); - - // Testcase: getter "deep" in prototype chain. - clearFunctionTypeFeedback(foo); - deoptimizeFunction(foo); - clearFunctionTypeFeedback(foo); - calls = 0; - - a = create_func(); - var ap2 = []; - a.__proto__ = ap2; - foo(a); - foo(a); - foo(a); - delete a[0]; - - assertEquals(0, calls); - - ap2.__proto__ = ap; // "sneak" in a callback. - // The sneak case should be caught by unoptimized code too. - assertUnoptimized(foo); - foo(a); - foo(a); - foo(a); - assertEquals(3, calls); - - // Testcase: getter added after optimization (feedback is monomorphic) - clearFunctionTypeFeedback(foo); - deoptimizeFunction(foo); - clearFunctionTypeFeedback(foo); - calls = 0; - - a = create_func(); - ap2 = []; - a.__proto__ = ap2; - foo(a); - foo(a); - foo(a); - optimize(foo); - foo(a); - assertOptimized(foo); - delete a[0]; - ap2.__proto__ = ap; - foo(a); - assertOptimized(foo); // getters don't require deopt on shape change. - assertEquals(1, calls); - - // Testcase: adding additional getters to a prototype chain that already has - // one shouldn't deopt anything. - clearFunctionTypeFeedback(foo); - calls = 0; - - a = create_func(); - a.__proto__ = ap2; - bar = function(a) { return a[3] + 600; } - bar(a); - bar(a); - bar(a); - optimize(bar); - bar(a); - assertOptimized(bar); - assertEquals(0, calls); - delete a[3]; - ap2.__defineGetter__(3, function() { calls++; return 0; }); - bar(a); - assertOptimized(bar); - assertEquals(1, calls); - - // Reset the state of foo and bar. - clearFunctionTypeFeedback(foo); - deoptimizeFunction(foo); - clearFunctionTypeFeedback(foo); - - clearFunctionTypeFeedback(bar); - deoptimizeFunction(bar); - clearFunctionTypeFeedback(bar); -} - -// Verify that map transitions don't confuse us. -create_func_smi = function() { return [,,,,,,5]; } -create_func_double = function() { return [,,,,,,5.5]; } -create_func_fast = function() { return [,,,,,,true]; } - -var cf = [create_func_smi, - create_func_double, - create_func_fast]; - -for(var c = 0; c < cf.length; c++) { - base_getter_test(cf[c]); -} - -// A special test for LoadKeyedHoleMode. Ensure that optimized is generated -// which sets ALLOW_RETURN_HOLE, then add a setter on the prototype that should -// cause the function to deoptimize. - -var a = [3.5,,,3.5]; -fun = function(a) { return a[0] + 5.5; } -fun(a); -fun(a); -fun(a); // should have a monomorphic KeyedLoadIC. -optimize(fun); -fun(a); -assertOptimized(fun); - -// returning undefined shouldn't phase us. -delete a[0]; -fun(a); -assertOptimized(fun); - -// but messing up the prototype chain will. -a.__proto__ = []; -fun(a); -assertUnoptimized(fun); - -// Construct a non-trivial prototype chain. -var a = [3.5,,,,3.5]; -var ap = [,,3.5]; -ap.__proto__ = a.__proto__; -a.__proto__ = ap; -fun(a); -optimize(fun); -fun(a); -assertOptimized(fun); - -var calls = 0; -delete a[0]; -ap.__defineGetter__(0, function() { calls++; return 0; }); -fun(a); -assertEquals(1, calls); -assertUnoptimized(fun); diff --git a/implementation-contributed/v8/mjsunit/global-accessors.js b/implementation-contributed/v8/mjsunit/global-accessors.js deleted file mode 100644 index a375f96ae8b..00000000000 --- a/implementation-contributed/v8/mjsunit/global-accessors.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test accessors on the global object. - -var x_ = 0; - -this.__defineSetter__('x', function(x) { x_ = x; }); -this.__defineGetter__('x', function() { return x_; }); - -this.__defineSetter__('y', function(x) { }); -this.__defineGetter__('y', function() { return 7; }); - -function f(a) { - x = x + a; - return x; -} - -function g(a) { - y = y + a; - return y; -} - -assertEquals(1, f(1)); -assertEquals(3, f(2)); - -assertEquals(7, g(1)); -assertEquals(7, g(2)); diff --git a/implementation-contributed/v8/mjsunit/global-arrow-delete-this.js b/implementation-contributed/v8/mjsunit/global-arrow-delete-this.js deleted file mode 100644 index 9ebe8e48b4c..00000000000 --- a/implementation-contributed/v8/mjsunit/global-arrow-delete-this.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Make sure that we correctly resolve this when compiling an arrow function in -// a with scope in an arrow function. -a = () => { - let x - with ({}) x = () => { "use strict"; delete this } - return x -} -a()() - - -// Make sure that we correctly resolve this when compiling a program in an arrow -// function. -a = ()=>eval('"use strict"; delete this') -a() diff --git a/implementation-contributed/v8/mjsunit/global-deleted-property-ic.js b/implementation-contributed/v8/mjsunit/global-deleted-property-ic.js deleted file mode 100644 index b90fc797a54..00000000000 --- a/implementation-contributed/v8/mjsunit/global-deleted-property-ic.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function LoadX(obj) { return obj.x; } - -// Load x from the prototype of this. Make sure to initialize the IC. -this.__proto__ = { x: 42 }; -for (var i = 0; i < 3; i++) assertEquals(42, LoadX(this)); - -// Introduce a global variable and make sure we load that from LoadX. -this.x = 87; -for (var i = 0; i < 3; i++) assertEquals(87, LoadX(this)); - -// Delete the global variable and make sure we get back to loading from -// the prototype. -delete this.x; -for (var i = 0; i < 3; i++) assertEquals(42, LoadX(this)); - -// ... and go back again to loading directly from the object. -this.x = 99; -for (var i = 0; i < 3; i++) assertEquals(99, LoadX(this)); diff --git a/implementation-contributed/v8/mjsunit/global-hash.js b/implementation-contributed/v8/mjsunit/global-hash.js deleted file mode 100644 index 54dfc4c7796..00000000000 --- a/implementation-contributed/v8/mjsunit/global-hash.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var global = this; - -assertEquals("object", typeof global); // Global object. - -var s = new Set(); -s.add(global); // Puts a hash code on the global object. -assertTrue(s.has(global)); -for (var i = 0; i < 100; i++) { - // Force rehash. Global object is placed according to the hash code that it - // gets in the C++ runtime. - s.add(i); -} - -// Hopefully still findable using the JS hash code. -assertTrue(s.has(global)); diff --git a/implementation-contributed/v8/mjsunit/global-ic.js b/implementation-contributed/v8/mjsunit/global-ic.js deleted file mode 100644 index 22c49ab1f2d..00000000000 --- a/implementation-contributed/v8/mjsunit/global-ic.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - return 87; -} - -function LoadFromGlobal(global) { return global.x; } -function StoreToGlobal(global, value) { global.x = value; } -function CallOnGlobal(global) { return global.f(); } - -// Initialize the ICs in the functions. -for (var i = 0; i < 3; i++) { - StoreToGlobal(this, 42 + i); - assertEquals(42 + i, LoadFromGlobal(this)); - assertEquals(87, CallOnGlobal(this)); -} - -// Try the ICs with a smi. This should not crash. -for (var i = 0; i < 3; i++) { - StoreToGlobal(i, 42 + i); - assertTrue(typeof LoadFromGlobal(i) == "undefined"); - assertThrows("CallOnGlobal(" + i + ")"); -} diff --git a/implementation-contributed/v8/mjsunit/global-infinity-strict.js b/implementation-contributed/v8/mjsunit/global-infinity-strict.js deleted file mode 100644 index 8ab16834110..00000000000 --- a/implementation-contributed/v8/mjsunit/global-infinity-strict.js +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -"use strict"; - -function test(expected, f) { - assertEquals(expected, f()); - assertEquals(expected, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); - assertEquals(expected, f()); -} - -function testThrows(f) { - assertThrows(f); - assertThrows(f); - %OptimizeFunctionOnNextCall(f); - assertThrows(f); - assertThrows(f); -} - -function f1() { return Infinity; } -test((1/0), f1); - -function f2() { return (1/0); } -test((1/0), f2); - -function f3() { return (1/0) == (1/0); } -test(true, f3); - -function f4() { return (1/0) == Infinity; } -test(true, f4); - -function f5() { return Infinity == (1/0); } -test(true, f5); - -function f6() { return "" + Infinity; } -test("Infinity", f6); - -function f7() { return (1/0) === (1/0); } -test(true, f7); - -function f8() { return (1/0) === Infinity; } -test(true, f8); - -function f9() { return Infinity === (1/0); } -test(true, f9); - -// -- - -function g1() { return Infinity; } -test((1/0), g1); - -function g2() { return (1/0); } -test((1/0), g2); - -function g3() { return (1/0) == (1/0); } -test(true, g3); - -function g4() { return (1/0) == Infinity; } -test(true, g4); - -function g5() { return Infinity == (1/0); } -test(true, g5); - -function g6() { return "" + Infinity; } -test("Infinity", g6); - -function g7() { return (1/0) === (1/0); } -test(true, g7); - -function g8() { return (1/0) === Infinity; } -test(true, g8); - -function g9() { return Infinity === (1/0); } -test(true, g9); - -testThrows(function() { Infinity = 111; }); - -function h1() { return Infinity; } -test((1/0), h1); - -function h2() { return (1/0); } -test((1/0), h2); - -function h3() { return (1/0) == (1/0); } -test(true, h3); - -function h4() { return (1/0) == Infinity; } -test(true, h4); - -function h5() { return Infinity == (1/0); } -test(true, h5); - -function h6() { return "" + Infinity; } -test("Infinity", h6); - -function h7() { return (1/0) === (1/0); } -test(true, h7); - -function h8() { return (1/0) === Infinity; } -test(true, h8); - -function h9() { return Infinity === (1/0); } -test(true, h9); - -// ------------- - -function k1() { return this.Infinity; } -testThrows(k1); - -function k2() { return (1/0); } -test((1/0), k2); - -function k3() { return (1/0) == (1/0); } -test(true, k3); - -function k4() { return (1/0) == this.Infinity; } -testThrows(k4); - -function k5() { return this.Infinity == (1/0); } -testThrows(k5); - -function k6() { return "" + this.Infinity; } -testThrows(k6); - -function k7() { return (1/0) === (1/0); } -test(true, k7); - -function k8() { return (1/0) === this.Infinity; } -testThrows(k8); - -function k9() { return this.Infinity === (1/0); } -testThrows(k9); diff --git a/implementation-contributed/v8/mjsunit/global-infinity.js b/implementation-contributed/v8/mjsunit/global-infinity.js deleted file mode 100644 index 33080579ae6..00000000000 --- a/implementation-contributed/v8/mjsunit/global-infinity.js +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(expected, f) { - assertEquals(expected, f()); - assertEquals(expected, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); - assertEquals(expected, f()); -} - -function f1() { return Infinity; } -test((1/0), f1); - -function f2() { return (1/0); } -test((1/0), f2); - -function f3() { return (1/0) == (1/0); } -test(true, f3); - -function f4() { return (1/0) == Infinity; } -test(true, f4); - -function f5() { return Infinity == (1/0); } -test(true, f5); - -function f6() { return "" + Infinity; } -test("Infinity", f6); - -function f7() { return (1/0) === (1/0); } -test(true, f7); - -function f8() { return (1/0) === Infinity; } -test(true, f8); - -function f9() { return Infinity === (1/0); } -test(true, f9); - -delete Infinity; - -function g1() { return Infinity; } -test((1/0), g1); - -function g2() { return (1/0); } -test((1/0), g2); - -function g3() { return (1/0) == (1/0); } -test(true, g3); - -function g4() { return (1/0) == Infinity; } -test(true, g4); - -function g5() { return Infinity == (1/0); } -test(true, g5); - -function g6() { return "" + Infinity; } -test("Infinity", g6); - -function g7() { return (1/0) === (1/0); } -test(true, g7); - -function g8() { return (1/0) === Infinity; } -test(true, g8); - -function g9() { return Infinity === (1/0); } -test(true, g9); - -Infinity = 111; - -function h1() { return Infinity; } -test((1/0), h1); - -function h2() { return (1/0); } -test((1/0), h2); - -function h3() { return (1/0) == (1/0); } -test(true, h3); - -function h4() { return (1/0) == Infinity; } -test(true, h4); - -function h5() { return Infinity == (1/0); } -test(true, h5); - -function h6() { return "" + Infinity; } -test("Infinity", h6); - -function h7() { return (1/0) === (1/0); } -test(true, h7); - -function h8() { return (1/0) === Infinity; } -test(true, h8); - -function h9() { return Infinity === (1/0); } -test(true, h9); - -// ------------- - -function k1() { return this.Infinity; } -test((1/0), k1); - -function k2() { return (1/0); } -test((1/0), k2); - -function k3() { return (1/0) == (1/0); } -test(true, k3); - -function k4() { return (1/0) == this.Infinity; } -test(true, k4); - -function k5() { return this.Infinity == (1/0); } -test(true, k5); - -function k6() { return "" + this.Infinity; } -test("Infinity", k6); - -function k7() { return (1/0) === (1/0); } -test(true, k7); - -function k8() { return (1/0) === this.Infinity; } -test(true, k8); - -function k9() { return this.Infinity === (1/0); } -test(true, k9); diff --git a/implementation-contributed/v8/mjsunit/global-load-from-eval-in-with.js b/implementation-contributed/v8/mjsunit/global-load-from-eval-in-with.js deleted file mode 100644 index a41ad7ee001..00000000000 --- a/implementation-contributed/v8/mjsunit/global-load-from-eval-in-with.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests global loads from eval inside of a with statement. - -var x = 27; - -function test(obj, source) { - with (obj) { - eval(source); - } -} - -// Test shadowing in eval scope. -test({ x: 42 }, "assertEquals(42, x)"); -test({ y: 42 }, "assertEquals(27, x)"); - -// Test shadowing in local scope inside an eval scope. -test({ x: 42 }, "function f() { assertEquals(42, x) }; f();"); -test({ y: 42 }, "function f() { assertEquals(27, x) }; f();"); - -// Test shadowing in local scope inside an eval scope. Deeper nesting -// this time. -test({ x: 42 }, "function f() { function g() { assertEquals(42, x) }; g() }; f();"); -test({ y: 42 }, "function f() { function g() { assertEquals(27, x) }; g() }; f();"); - -// Test shadowing in local scope inside an eval scope with eval calls in the eval scopes. -test({ x: 42 }, "function f() { eval('1'); assertEquals(42, x) }; f();"); -test({ y: 42 }, "function f() { eval('1'); assertEquals(27, x) }; f();"); - -// Test shadowing in local scope inside an eval scope with eval calls -// in the eval scopes. Deeper nesting this time. -test({ x: 42 }, "function f() { function g() { eval('1'); assertEquals(42, x) }; g() }; f();"); -test({ y: 42 }, "function f() { function g() { eval('1'); assertEquals(27, x) }; g() }; f();"); diff --git a/implementation-contributed/v8/mjsunit/global-load-from-eval.js b/implementation-contributed/v8/mjsunit/global-load-from-eval.js deleted file mode 100644 index ad4093287e1..00000000000 --- a/implementation-contributed/v8/mjsunit/global-load-from-eval.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests global loads from eval. - -var x = 27; - -function test() { - function g() { - assertEquals(27, eval('x')); - function h() { - // Shadow with local variable. - var x = 22; - assertEquals(22, eval('x')); - function i(x) { - // Shadow with parameter. - assertEquals(44, eval('x')); - function j() { - assertEquals(x, eval('x')); - // Shadow with function name. - function x() { - assertEquals(x, eval('x')); - } - x(); - } - j(); - } - i(44); - } - h(); - } - g(); -} - -test(); - -// Test loading of globals from deeply nested eval. This code is a -// bit complicated, but the complication is needed to check that the -// code that loads the global variable accounts for the fact that the -// global variable becomes shadowed by an eval-introduced variable. -var result = 0; -function testDeep(source, load, test) { - eval(source); - function f() { - var y = 23; - function g() { - var z = 25; - function h() { - eval(load); - eval(test); - } - h(); - } - g(); - } - f(); -} -testDeep('1', 'result = x', 'assertEquals(27, result)'); -// Because of the eval-cache, the 'result = x' code gets reused. This -// time in a context where the 'x' variable has been shadowed. -testDeep('var x = 1', 'result = x', 'assertEquals(1, result)'); diff --git a/implementation-contributed/v8/mjsunit/global-load-from-nested-eval.js b/implementation-contributed/v8/mjsunit/global-load-from-nested-eval.js deleted file mode 100644 index 9c9b015aea3..00000000000 --- a/implementation-contributed/v8/mjsunit/global-load-from-nested-eval.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests global loads from nested eval. - -var x = 42; - -// Load the global. -function test(source) { - eval('eval(' + source +')'); -} -test('assertEquals(42, x)'); - -// Shadow variable with a with statement. -function testWith(source) { - with ({ x: 1 }) { - eval('eval(' + source +')'); - } -} -testWith('assertEquals(1, x)'); - -// Shadow variable with an eval-introduced variable. -function testEval(source) { - eval('var x = 1'); - function f() { - eval('eval('+ source + ')'); - } - f(); -} -testEval('assertEquals(1, x)'); - -// Eval that does not shadow. -function testEvalDontShadow(source) { - eval('1'); - eval('eval(' + source +')'); -} -testEvalDontShadow('assertEquals(42, x)'); diff --git a/implementation-contributed/v8/mjsunit/global-nan-strict.js b/implementation-contributed/v8/mjsunit/global-nan-strict.js deleted file mode 100644 index 075d03ca876..00000000000 --- a/implementation-contributed/v8/mjsunit/global-nan-strict.js +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -"use strict"; - -function test(expected, f) { - assertEquals(expected, f()); - assertEquals(expected, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); - assertEquals(expected, f()); -} - -function testThrows(f) { - assertThrows(f); - assertThrows(f); - %OptimizeFunctionOnNextCall(f); - assertThrows(f); - assertThrows(f); -} - -function f1() { return NaN; } -test((0/0), f1); - -function f2() { return (0/0); } -test((0/0), f2); - -function f3() { return (0/0) == (0/0); } -test(false, f3); - -function f4() { return (0/0) == NaN; } -test(false, f4); - -function f5() { return NaN == (0/0); } -test(false, f5); - -function f6() { return "" + NaN; } -test("NaN", f6); - -function f7() { return (0/0) === (0/0); } -test(false, f7); - -function f8() { return (0/0) === NaN; } -test(false, f8); - -function f9() { return NaN === (0/0); } -test(false, f9); - -// ---- - -function g1() { return NaN; } -test((0/0), g1); - -function g2() { return (0/0); } -test((0/0), g2); - -function g3() { return (0/0) == (0/0); } -test(false, g3); - -function g4() { return (0/0) == NaN; } -test(false, g4); - -function g5() { return NaN == (0/0); } -test(false, g5); - -function g6() { return "" + NaN; } -test("NaN", g6); - -function g7() { return (0/0) === (0/0); } -test(false, g7); - -function g8() { return (0/0) === NaN; } -test(false, g8); - -function g9() { return NaN === (0/0); } -test(false, g9); - -testThrows(function() { NaN = 111; }); - -function h1() { return NaN; } -test((0/0), h1); - -function h2() { return (0/0); } -test((0/0), h2); - -function h3() { return (0/0) == (0/0); } -test(false, h3); - -function h4() { return (0/0) == NaN; } -test(false, h4); - -function h5() { return NaN == (0/0); } -test(false, h5); - -function h6() { return "" + NaN; } -test("NaN", h6); - -function h7() { return (0/0) === (0/0); } -test(false, h7); - -function h8() { return (0/0) === NaN; } -test(false, h8); - -function h9() { return NaN === (0/0); } -test(false, h9); - -// ------------- - -function k1() { return this.NaN; } -testThrows(k1); - -function k2() { return (0/0); } -test((0/0), k2); - -function k3() { return (0/0) == (0/0); } -test(false, k3); - -function k4() { return (0/0) == this.NaN; } -testThrows(k4); - -function k5() { return this.NaN == (0/0); } -testThrows(k5); - -function k6() { return "" + this.NaN; } -testThrows(k6); - -function k7() { return (0/0) === (0/0); } -test(false, k7); - -function k8() { return (0/0) === this.NaN; } -testThrows(k8); - -function k9() { return this.NaN === (0/0); } -testThrows(k9); diff --git a/implementation-contributed/v8/mjsunit/global-nan.js b/implementation-contributed/v8/mjsunit/global-nan.js deleted file mode 100644 index 5a98eff1c88..00000000000 --- a/implementation-contributed/v8/mjsunit/global-nan.js +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(expected, f) { - assertEquals(expected, f()); - assertEquals(expected, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); - assertEquals(expected, f()); -} - -function f1() { return NaN; } -test((0/0), f1); - -function f2() { return (0/0); } -test((0/0), f2); - -function f3() { return (0/0) == (0/0); } -test(false, f3); - -function f4() { return (0/0) == NaN; } -test(false, f4); - -function f5() { return NaN == (0/0); } -test(false, f5); - -function f6() { return "" + NaN; } -test("NaN", f6); - -function f7() { return (0/0) === (0/0); } -test(false, f7); - -function f8() { return (0/0) === NaN; } -test(false, f8); - -function f9() { return NaN === (0/0); } -test(false, f9); - -delete NaN; - -function g1() { return NaN; } -test((0/0), g1); - -function g2() { return (0/0); } -test((0/0), g2); - -function g3() { return (0/0) == (0/0); } -test(false, g3); - -function g4() { return (0/0) == NaN; } -test(false, g4); - -function g5() { return NaN == (0/0); } -test(false, g5); - -function g6() { return "" + NaN; } -test("NaN", g6); - -function g7() { return (0/0) === (0/0); } -test(false, g7); - -function g8() { return (0/0) === NaN; } -test(false, g8); - -function g9() { return NaN === (0/0); } -test(false, g9); - -NaN = 111; - -function h1() { return NaN; } -test((0/0), h1); - -function h2() { return (0/0); } -test((0/0), h2); - -function h3() { return (0/0) == (0/0); } -test(false, h3); - -function h4() { return (0/0) == NaN; } -test(false, h4); - -function h5() { return NaN == (0/0); } -test(false, h5); - -function h6() { return "" + NaN; } -test("NaN", h6); - -function h7() { return (0/0) === (0/0); } -test(false, h7); - -function h8() { return (0/0) === NaN; } -test(false, h8); - -function h9() { return NaN === (0/0); } -test(false, h9); - -// ------------- - -function k1() { return this.NaN; } -test((0/0), k1); - -function k2() { return (0/0); } -test((0/0), k2); - -function k3() { return (0/0) == (0/0); } -test(false, k3); - -function k4() { return (0/0) == this.NaN; } -test(false, k4); - -function k5() { return this.NaN == (0/0); } -test(false, k5); - -function k6() { return "" + this.NaN; } -test("NaN", k6); - -function k7() { return (0/0) === (0/0); } -test(false, k7); - -function k8() { return (0/0) === this.NaN; } -test(false, k8); - -function k9() { return this.NaN === (0/0); } -test(false, k9); diff --git a/implementation-contributed/v8/mjsunit/global-properties.js b/implementation-contributed/v8/mjsunit/global-properties.js deleted file mode 100644 index 28e3e8f9cb0..00000000000 --- a/implementation-contributed/v8/mjsunit/global-properties.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var global = this; - -function testNamedProperty(key, value) { - global[key] = value; - assertTrue(global.hasOwnProperty(key)); - assertTrue(-1 < Object.keys(global).indexOf(key)); - assertTrue(-1 < Object.getOwnPropertyNames(global).indexOf(key)); - assertTrue(-1 == Object.getOwnPropertySymbols(global).indexOf(key)); -} - -testNamedProperty('property0', 'value'); -testNamedProperty('0property', 'value'); -testNamedProperty('42', 'value'); - -function testNamedNonEnumerableProperty(key, value) { - Object.defineProperty(global, key, { - enumerable: false, - value: value - }); - assertTrue(global.hasOwnProperty(key)); - assertTrue(-1 == Object.keys(global).indexOf(key)); - assertTrue(-1 < Object.getOwnPropertyNames(global).indexOf(key)); - assertTrue(-1 == Object.getOwnPropertySymbols(global).indexOf(key)); -} - -testNamedNonEnumerableProperty('property1', 'value'); -testNamedNonEnumerableProperty('1property', 'value'); -testNamedNonEnumerableProperty('43', 'value'); - -function testSymbolProperty(key, value) { - key = Symbol(key); - global[key] = value; - assertTrue(global.hasOwnProperty(key)); - assertTrue(-1 == Object.keys(global).indexOf(key)); - assertTrue(-1 == Object.getOwnPropertyNames(global).indexOf(key)); - assertTrue(-1 < Object.getOwnPropertySymbols(global).indexOf(key)); -} - -testSymbolProperty('property2', 'value'); -testSymbolProperty('2property', 'value'); -testSymbolProperty('43', 'value'); diff --git a/implementation-contributed/v8/mjsunit/global-prototypes.js b/implementation-contributed/v8/mjsunit/global-prototypes.js deleted file mode 100644 index 98232c2814a..00000000000 --- a/implementation-contributed/v8/mjsunit/global-prototypes.js +++ /dev/null @@ -1,354 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -assertEquals(this.__proto__, Object.prototype); - -function TestAddingPropertyToGlobalPrototype() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - delete this.func; - this.__proto__ = Foo.prototype; - - function Bar() {} - Bar.prototype = this; - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a Global-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - Bar.prototype.func = function() { ++bar_func_called; } - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToGlobalPrototype(); - - -// Same as TestAddingPropertyToGlobalPrototype, but using o["foo"] access -// instead of o.foo. -function TestAddingPropertyToGlobalPrototype2() { - let foo_func_called = 0; - let bar_func_called = 0; - let name = "func"; - - function Foo() {} - Foo.prototype[name] = function() { ++foo_func_called; } - - delete this[name]; - this.__proto__ = Foo.prototype; - - function Bar() {} - Bar.prototype = this; - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o[name](); - - // Add the property to Bar which is a Global-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - Bar.prototype[name] = function() { ++bar_func_called; } - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToGlobalPrototype2(); - - -function TestAddingPropertyToGlobalPrototype_DefineProperty() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - delete this.func; - this.__proto__ = Foo.prototype; - - function Bar() {} - Bar.prototype = this; - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a Global-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - Object.defineProperty(Bar.prototype, "func", - { - value: function() { ++bar_func_called; }, - configurable:true - }); - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToGlobalPrototype_DefineProperty(); - - -function TestAddingAccessorPropertyToGlobalPrototype() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - delete this.func; - this.__proto__ = Foo.prototype; - - function Bar() {} - Bar.prototype = this; - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a Global-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - Object.defineProperty(Bar.prototype, "func", - { - get: function() { return function() { ++bar_func_called; }}, - configurable: true - }); - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingAccessorPropertyToGlobalPrototype(); - - -function TestRemovingPropertyFromGlobalPrototype() { - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - delete this.func; - this.__proto__ = Foo.prototype; - - function Bar() {} - Bar.prototype = this; - Bar.prototype.func = function() { ++bar_func_called; } - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Bar. - o.func(); - - // Remove the property from Bar which is a Global-mode prototype between - // o and Foo. In the next iteration, it's looked up from Foo. - if (i == 9) { - delete Bar.prototype.func; - } - } - - assertEquals(1, foo_func_called); - assertEquals(10, bar_func_called); -} - -TestRemovingPropertyFromGlobalPrototype(); - - -// Same as TestRemovingPropertyFromGlobalPrototype, but using o["foo"] access -// instead of o.foo. -function TestRemovingPropertyFromGlobalPrototype2() { - let foo_func_called = 0; - let bar_func_called = 0; - let name = "func"; - - function Foo() {} - Foo.prototype[name] = function() { ++foo_func_called; } - - this.__proto__ = Foo.prototype; - - function Bar() {} - Bar.prototype = this; - Bar.prototype[name] = function() { ++bar_func_called; } - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Bar. - o[name](); - - // Remove the property from Bar which is a Global-mode prototype between - // o and Foo. In the next iteration, it's looked up from Foo. - if (i == 9) { - delete Bar.prototype[name]; - } - } - - assertEquals(1, foo_func_called); - assertEquals(10, bar_func_called); -} - -TestRemovingPropertyFromGlobalPrototype2(); - - -function TestAddingPropertyToGlobalPrototype_MonomorphicDot() { - function DoMonomorphicStoreToPrototypeDot(p, f, do_delete=true) { - p.func = f; - if (do_delete) { - delete p.func; - } - } - let foo_func_called = 0; - let bar_func_called = 0; - - function Foo() {} - Foo.prototype.func = function() { ++foo_func_called; } - - delete this.func; - this.__proto__ = Foo.prototype; - - function Bar() {} - Bar.prototype = this; - - function bar_func() { - ++bar_func_called; - } - DoMonomorphicStoreToPrototypeDot(Bar.prototype, bar_func); - DoMonomorphicStoreToPrototypeDot(Bar.prototype, bar_func); - DoMonomorphicStoreToPrototypeDot(Bar.prototype, bar_func); - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a Global-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - DoMonomorphicStoreToPrototypeDot(Bar.prototype, bar_func, false); - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToGlobalPrototype_MonomorphicDot(); - - -function TestAddingPropertyToGlobalPrototype_MonomorphicBrackets() { - function DoMonomorphicStoreToPrototypeBrackets(p, name, f, do_delete=true) { - p[name] = f; - if (do_delete) { - delete p[name]; - } - } - let foo_func_called = 0; - let bar_func_called = 0; - let name = "func"; - - function Foo() {} - Foo.prototype[name] = function() { ++foo_func_called; } - - delete this[name]; - this.__proto__ = Foo.prototype; - - function Bar() {} - Bar.prototype = this; - - function bar_func() { - ++bar_func_called; - } - DoMonomorphicStoreToPrototypeBrackets(Bar.prototype, name, bar_func); - DoMonomorphicStoreToPrototypeBrackets(Bar.prototype, name, bar_func); - DoMonomorphicStoreToPrototypeBrackets(Bar.prototype, name, bar_func); - - let o = new Bar(); - - for (let i = 0; i < 11; ++i) { - // First, the property is looked up from Foo. - o.func(); - - // Add the property to Bar which is a Global-mode prototype between o - // and Foo. In the next iteration, it's looked up from Bar. - if (i == 9) { - DoMonomorphicStoreToPrototypeBrackets(Bar.prototype, name, bar_func, false); - } - } - - assertEquals(10, foo_func_called); - assertEquals(1, bar_func_called); -} - -TestAddingPropertyToGlobalPrototype_MonomorphicBrackets(); - - -function TestReconfiguringDataToAccessor() { - let setter_called = 0; - let name = "prop"; - - delete this[name]; - this.__proto__ = Object.prototype; - - function Bar() {} - Bar.prototype = this; - - Object.defineProperty(Bar.prototype, name, {value: 1000, writable: true, configurable: true}); - - for (let i = 0; i < 11; ++i) { - let obj1 = new Bar(); - if (i < 10) { - assertEquals(1000, obj1.prop); - } else { - assertEquals(3000, obj1.prop); - } - - // Add the property into the object. - obj1.prop = 2000; - if (i < 10) { - assertEquals(2000, obj1.prop); - } else { - assertEquals(3000, obj1.prop); - } - - // Make "prop" an accessor property in the prototype. - if (i == 9) { - Object.defineProperty(Bar.prototype, name, - {get: () => 3000, - set: function(val) { ++setter_called; }}); - } - } - assertEquals(1, setter_called); -} - -TestReconfiguringDataToAccessor(); diff --git a/implementation-contributed/v8/mjsunit/global-undefined-strict.js b/implementation-contributed/v8/mjsunit/global-undefined-strict.js deleted file mode 100644 index 9a0578a2fb3..00000000000 --- a/implementation-contributed/v8/mjsunit/global-undefined-strict.js +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -"use strict"; - -function test(expected, f) { - assertEquals(expected, f()); - assertEquals(expected, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); - assertEquals(expected, f()); -} - -function testThrows(f) { - assertThrows(f); - assertThrows(f); - %OptimizeFunctionOnNextCall(f); - assertThrows(f); - assertThrows(f); -} - -function f1() { return undefined; } -test(void 0, f1); - -function f2() { return void 0; } -test(void 0, f2); - -function f3() { return void 0 == void 0; } -test(true, f3); - -function f4() { return void 0 == undefined; } -test(true, f4); - -function f5() { return undefined == void 0; } -test(true, f5); - -function f6() { return "" + undefined; } -test("undefined", f6); - -function f7() { return void 0 === void 0; } -test(true, f7); - -function f8() { return void 0 === undefined; } -test(true, f8); - -function f9() { return undefined === void 0; } -test(true, f9); - -function g1() { return this; } -test(void 0, g1); - -function g2() { return void 0; } -test(void 0, g2); - -function g3() { return void 0 == void 0; } -test(true, g3); - -function g4() { return void 0 == this; } -test(true, g4); - -function g5() { return this == void 0; } -test(true, g5); - -function g6() { return "" + this; } -test("undefined", g6); - -function g7() { return void 0 === void 0; } -test(true, g7); - -function g8() { return void 0 === this; } -test(true, g8); - -function g9() { return this === void 0; } -test(true, g9); - -testThrows(function() { undefined = 111; }); - -function h1() { return undefined; } -test(void 0, h1); - -function h2() { return void 0; } -test(void 0, h2); - -function h3() { return void 0 == void 0; } -test(true, h3); - -function h4() { return void 0 == undefined; } -test(true, h4); - -function h5() { return undefined == void 0; } -test(true, h5); - -function h6() { return "" + undefined; } -test("undefined", h6); - -function h7() { return void 0 === void 0; } -test(true, h7); - -function h8() { return void 0 === undefined; } -test(true, h8); - -function h9() { return undefined === void 0; } -test(true, h9); - -// ------------- - -function k1() { return this; } -test(void 0, k1); - -function k2() { return void 0; } -test(void 0, k2); - -function k3() { return this === undefined; } -test(true, k3); - -function k4() { return void 0 === this; } -test(true, k4); - -function k5() { return this === void 0; } -test(true, k5); - -function k6() { return "" + this; } -test("undefined", k6); - -function k7() { return void 0 === void 0; } -test(true, k7); - -function k8() { return void 0 === this; } -test(true, k8); - -function k9() { return this === void 0; } -test(true, k9); - -// ------------- - -function m1() { return this.undefined; } -testThrows(m1); - -function m2() { return void 0; } -test(void 0, m2); - -function m3() { return this === undefined; } -test(true, m3); - -function m4() { return void 0 === this.undefined; } -testThrows(m4); - -function m5() { return this.undefined == void 0; } -testThrows(m5); - -function m6() { return "" + this.undefined; } -testThrows(m6); - -function m7() { return void 0 === void 0; } -test(true, m7); - -function m8() { return void 0 === this.undefined; } -testThrows(m8); - -function m9() { return this.undefined === void 0; } -testThrows(m9); diff --git a/implementation-contributed/v8/mjsunit/global-undefined.js b/implementation-contributed/v8/mjsunit/global-undefined.js deleted file mode 100644 index 6190f6f5520..00000000000 --- a/implementation-contributed/v8/mjsunit/global-undefined.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(expected, f) { - assertEquals(expected, f()); - assertEquals(expected, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(expected, f()); - assertEquals(expected, f()); -} - -function testThrows(f) { - assertThrows(f); - assertThrows(f); - %OptimizeFunctionOnNextCall(f); - assertThrows(f); - assertThrows(f); -} - -function f1() { return undefined; } -test(void 0, f1); - -function f2() { return void 0; } -test(void 0, f2); - -function f3() { return void 0 == void 0; } -test(true, f3); - -function f4() { return void 0 == undefined; } -test(true, f4); - -function f5() { return undefined == void 0; } -test(true, f5); - -function f6() { return "" + undefined; } -test("undefined", f6); - -function f7() { return void 0 === void 0; } -test(true, f7); - -function f8() { return void 0 === undefined; } -test(true, f8); - -function f9() { return undefined === void 0; } -test(true, f9); - -delete undefined; - -function g1() { return undefined; } -test(void 0, g1); - -function g2() { return void 0; } -test(void 0, g2); - -function g3() { return void 0 == void 0; } -test(true, g3); - -function g4() { return void 0 == undefined; } -test(true, g4); - -function g5() { return undefined == void 0; } -test(true, g5); - -function g6() { return "" + undefined; } -test("undefined", g6); - -function g7() { return void 0 === void 0; } -test(true, g7); - -function g8() { return void 0 === undefined; } -test(true, g8); - -function g9() { return undefined === void 0; } -test(true, g9); - -undefined = 111; - -function h1() { return undefined; } -test(void 0, h1); - -function h2() { return void 0; } -test(void 0, h2); - -function h3() { return void 0 == void 0; } -test(true, h3); - -function h4() { return void 0 == undefined; } -test(true, h4); - -function h5() { return undefined == void 0; } -test(true, h5); - -function h6() { return "" + undefined; } -test("undefined", h6); - -function h7() { return void 0 === void 0; } -test(true, h7); - -function h8() { return void 0 === undefined; } -test(true, h8); - -function h9() { return undefined === void 0; } -test(true, h9); - -// ------------- - -function k1() { return this.undefined; } -test(void 0, k1); - -function k2() { return void 0; } -test(void 0, k2); - -function k3() { return void 0 == void 0; } -test(true, k3); - -function k4() { return void 0 == this.undefined; } -test(true, k4); - -function k5() { return this.undefined == void 0; } -test(true, k5); - -function k6() { return "" + this.undefined; } -test("undefined", k6); - -function k7() { return void 0 === void 0; } -test(true, k7); - -function k8() { return void 0 === this.undefined; } -test(true, k8); - -function k9() { return this.undefined === void 0; } -test(true, k9); - -// ------------- - -function m1() { return undefined.x; } -testThrows(m1); - -function m2() { return undefined.undefined; } -testThrows(m2); - -function m3() { return (void 0).x; } -testThrows(m3); - -function m4() { return (void 0).undefined; } -testThrows(m4); diff --git a/implementation-contributed/v8/mjsunit/global-vars-eval.js b/implementation-contributed/v8/mjsunit/global-vars-eval.js deleted file mode 100644 index 900f7be727a..00000000000 --- a/implementation-contributed/v8/mjsunit/global-vars-eval.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -eval("" + ""); -this.bar = 'fisk'; -assertEquals('fisk', bar, "1"); -var bar; -assertEquals('fisk', bar, "2"); -var bar = 'hest'; -assertEquals('hest', bar, "3"); diff --git a/implementation-contributed/v8/mjsunit/global-vars-with.js b/implementation-contributed/v8/mjsunit/global-vars-with.js deleted file mode 100644 index 05ca6b6bb3e..00000000000 --- a/implementation-contributed/v8/mjsunit/global-vars-with.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -with ({}) { } -this.bar = 'fisk'; -assertEquals('fisk', bar); -var bar; -assertEquals('fisk', bar); -var bar = 'hest'; -assertEquals('hest', bar); - -with ({}) { - this.baz = 'fisk'; - assertEquals('fisk', baz); - var baz; - assertEquals('fisk', baz); - var baz = 'hest'; - assertEquals('hest', baz); -} diff --git a/implementation-contributed/v8/mjsunit/handle-count-ast.js b/implementation-contributed/v8/mjsunit/handle-count-ast.js deleted file mode 100644 index 8d095598e78..00000000000 --- a/implementation-contributed/v8/mjsunit/handle-count-ast.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --check-handle-count - -var ones = eval("[" + Array(12 * 1024).join("1,") + 1 + "]") - -var sum = 0; -for (var i = 0; i < ones.length; i++) { - sum += ones[i]; -} diff --git a/implementation-contributed/v8/mjsunit/handle-count-runtime-literals.js b/implementation-contributed/v8/mjsunit/handle-count-runtime-literals.js deleted file mode 100644 index 91774d2b6fa..00000000000 --- a/implementation-contributed/v8/mjsunit/handle-count-runtime-literals.js +++ /dev/null @@ -1,1230 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --check-handle-count - -(function (s) { - s.frob = function () { - var j; - var p0 = /^[\],:{}\s]*$/; - var p1 = /"[^"\\\n\r]*"|a|b|c|_*-?\d+(?:\.\d*)?(:?[eE][+\-]?\d+)?/g; - var p2 = /(?:^|:|,)(?:\s*\[)+/g; - if (p0.test(this.replace(/\\./g, '@').replace(p1, ']').replace(p2, ''))) { - var tmp = eval('(' + this + ')'); - return 0; - } - return -1; - }; -})(String.prototype); - -var kvJSON = '[\ - {\n \"key\": "ionion",\n \"value\": 779249\n },\ - {\n \"key\": "essess",\n \"value\": 775215\n },\ - {\n \"key\": "lerler",\n \"value\": 773163\n },\ - {\n \"key\": "essess",\n \"value\": 778638\n },\ - {\n \"key\": "suosuo",\n \"value\": 778428\n },\ - {\n \"key\": "astast",\n \"value\": 779719\n },\ - {\n \"key\": "oidoid",\n \"value\": 776316\n },\ - {\n \"key\": "onyony",\n \"value\": 777017\n },\ - {\n \"key\": "oryory",\n \"value\": 775785\n },\ - {\n \"key\": "ardard",\n \"value\": 776276\n },\ - {\n \"key\": "nicnic",\n \"value\": 773163\n },\ - {\n \"key\": "udyudy",\n \"value\": 775255\n },\ - {\n \"key\": "blybly",\n \"value\": 776546\n },\ - {\n \"key\": "ormorm",\n \"value\": 770040\n },\ - {\n \"key\": "izeize",\n \"value\": 774534\n },\ - {\n \"key\": "lialia",\n \"value\": 775135\n },\ - {\n \"key\": "thythy",\n \"value\": 773823\n },\ - {\n \"key\": "hiphip",\n \"value\": 776526\n },\ - {\n \"key\": "iseise",\n \"value\": 772322\n },\ - {\n \"key\": "salsal",\n \"value\": 772122\n },\ - {\n \"key\": "essess",\n \"value\": 775915\n },\ - {\n \"key\": "etaeta",\n \"value\": 779719\n },\ - {\n \"key\": "kcakca",\n \"value\": 776616\n },\ - {\n \"key\": "tiktik",\n \"value\": 773513\n },\ - {\n \"key\": "rerrer",\n \"value\": 773413\n },\ - {\n \"key\": "teatea",\n \"value\": 773313\n },\ - {\n \"key\": "izeize",\n \"value\": 774214\n },\ - {\n \"key\": "reyrey",\n \"value\": 777117\n },\ - {\n \"key\": "oteote",\n \"value\": 770110\n },\ - {\n \"key\": "essess",\n \"value\": 773013\n },\ - {\n \"key\": "essess",\n \"value\": 778798\n },\ - {\n \"key\": "tchtch",\n \"value\": 774294\n },\ - {\n \"key\": "taltal",\n \"value\": 775785\n },\ - {\n \"key\": "risris",\n \"value\": 770380\n },\ - {\n \"key\": "ateate",\n \"value\": 779879\n },\ - {\n \"key\": "ousous",\n \"value\": 770570\n },\ - {\n \"key\": "essess",\n \"value\": 775175\n },\ - {\n \"key\": "lesles",\n \"value\": 772862\n },\ - {\n \"key\": "iveive",\n \"value\": 771561\n },\ - {\n \"key\": "diadia",\n \"value\": 772262\n },\ - {\n \"key\": "ekieki",\n \"value\": 776956\n },\ - {\n \"key\": "omaoma",\n \"value\": 771751\n },\ - {\n \"key\": "nalnal",\n \"value\": 777457\n },\ - {\n \"key\": "essess",\n \"value\": 776256\n },\ - {\n \"key\": "ilyily",\n \"value\": 775055\n },\ - {\n \"key\": "emuemu",\n \"value\": 776846\n },\ - {\n \"key\": "eeteet",\n \"value\": 778648\n },\ - {\n \"key\": "rerrer",\n \"value\": 770540\n },\ - {\n \"key\": "eaeeae",\n \"value\": 774344\n },\ - {\n \"key\": "lumlum",\n \"value\": 779149\n },\ - {\n \"key\": "essess",\n \"value\": 774044\n },\ - {\n \"key\": "antant",\n \"value\": 771931\n },\ - {\n \"key\": "lahlah",\n \"value\": 778738\n },\ - {\n \"key\": "tnatna",\n \"value\": 775635\n },\ - {\n \"key\": "oseose",\n \"value\": 774534\n },\ - {\n \"key\": "ataata",\n \"value\": 773433\n },\ - {\n \"key\": "inging",\n \"value\": 772332\n },\ - {\n \"key\": "ypeype",\n \"value\": 772232\n },\ - {\n \"key\": "tictic",\n \"value\": 772132\n },\ - {\n \"key\": "hiphip",\n \"value\": 773033\n },\ - {\n \"key\": "taltal",\n \"value\": 774924\n },\ - {\n \"key\": "istist",\n \"value\": 776826\n },\ - {\n \"key\": "ralral",\n \"value\": 778728\n },\ - {\n \"key\": "tortor",\n \"value\": 770720\n },\ - {\n \"key\": "rnsrns",\n \"value\": 773623\n },\ - {\n \"key\": "siasia",\n \"value\": 776526\n },\ - {\n \"key\": "yabyab",\n \"value\": 779429\n },\ - {\n \"key\": "noinoi",\n \"value\": 773423\n },\ - {\n \"key\": "ardard",\n \"value\": 777327\n },\ - {\n \"key\": "derder",\n \"value\": 771321\n },\ - {\n \"key\": "iveive",\n \"value\": 775225\n },\ - {\n \"key\": "ateate",\n \"value\": 779129\n },\ - {\n \"key\": "imoimo",\n \"value\": 774124\n },\ - {\n \"key\": "adeade",\n \"value\": 779029\n },\ - {\n \"key\": "ugeuge",\n \"value\": 774024\n },\ - {\n \"key\": "iveive",\n \"value\": 779919\n },\ - {\n \"key\": "belbel",\n \"value\": 775915\n },\ - {\n \"key\": "inging",\n \"value\": 770910\n },\ - {\n \"key\": "barbar",\n \"value\": 776816\n },\ - {\n \"key\": "ionion",\n \"value\": 772812\n },\ - {\n \"key\": "ineine",\n \"value\": 778718\n },\ - {\n \"key\": "ityity",\n \"value\": 774714\n },\ - {\n \"key\": "ytiyti",\n \"value\": 770710\n },\ - {\n \"key\": "ismism",\n \"value\": 777617\n },\ - {\n \"key\": "iumium",\n \"value\": 773613\n },\ - {\n \"key\": "hichic",\n \"value\": 770610\n },\ - {\n \"key\": "ideide",\n \"value\": 777517\n },\ - {\n \"key\": "denden",\n \"value\": 774514\n },\ - {\n \"key\": "redred",\n \"value\": 770510\n },\ - {\n \"key\": "perper",\n \"value\": 778418\n },\ - {\n \"key\": "rusrus",\n \"value\": 775415\n },\ - {\n \"key\": "herher",\n \"value\": 772412\n },\ - {\n \"key\": "sidsid",\n \"value\": 779319\n },\ - {\n \"key\": "ianian",\n \"value\": 777317\n },\ - {\n \"key\": "ricric",\n \"value\": 774314\n },\ - {\n \"key\": "odyody",\n \"value\": 772312\n },\ - {\n \"key\": "ferfer",\n \"value\": 779219\n },\ - {\n \"key\": "ogyogy",\n \"value\": 777217\n },\ - {\n \"key\": "micmic",\n \"value\": 775215\n },\ - {\n \"key\": "ateate",\n \"value\": 772212\n },\ - {\n \"key\": "tantan",\n \"value\": 770210\n },\ - {\n \"key\": "getget",\n \"value\": 778118\n },\ - {\n \"key\": "ulaula",\n \"value\": 776116\n },\ - {\n \"key\": "calcal",\n \"value\": 774114\n },\ - {\n \"key\": "izeize",\n \"value\": 772112\n },\ - {\n \"key\": "manman",\n \"value\": 770110\n },\ - {\n \"key\": "terter",\n \"value\": 778018\n },\ - {\n \"key\": "hedhed",\n \"value\": 777017\n },\ - {\n \"key\": "berber",\n \"value\": 775015\n },\ - {\n \"key\": "olfolf",\n \"value\": 773013\n },\ - {\n \"key\": "opeope",\n \"value\": 772012\n },\ - {\n \"key\": "hiphip",\n \"value\": 770010\n },\ - {\n \"key\": "tedted",\n \"value\": 779899\n },\ - {\n \"key\": "ismism",\n \"value\": 773793\n },\ - {\n \"key\": "terter",\n \"value\": 778598\n },\ - {\n \"key\": "ismism",\n \"value\": 774494\n },\ - {\n \"key\": "ikeike",\n \"value\": 779299\n },\ - {\n \"key\": "sdrsdr",\n \"value\": 776196\n },\ - {\n \"key\": "calcal",\n \"value\": 772092\n },\ - {\n \"key\": "ledled",\n \"value\": 779889\n },\ - {\n \"key\": "coicoi",\n \"value\": 776786\n },\ - {\n \"key\": "ialial",\n \"value\": 773683\n },\ - {\n \"key\": "izeize",\n \"value\": 771581\n },\ - {\n \"key\": "ogyogy",\n \"value\": 778388\n },\ - {\n \"key\": "ismism",\n \"value\": 777287\n },\ - {\n \"key\": "Huk",\n \"value\": 775185\n },\ - {\n \"key\": "nonnon",\n \"value\": 774084\n },\ - {\n \"key\": "ledled",\n \"value\": 773973\n },\ - {\n \"key\": "llylly",\n \"value\": 772872\n },\ - {\n \"key\": "ishish",\n \"value\": 771771\n },\ - {\n \"key\": "terter",\n \"value\": 771671\n },\ - {\n \"key\": "iorior",\n \"value\": 771571\n },\ - {\n \"key\": "ionion",\n \"value\": 771471\n },\ - {\n \"key\": "luslus",\n \"value\": 771371\n },\ - {\n \"key\": "detdet",\n \"value\": 771271\n },\ - {\n \"key\": "ionion",\n \"value\": 772172\n },\ - {\n \"key\": "ezoezo",\n \"value\": 773073\n },\ - {\n \"key\": "iceice",\n \"value\": 774964\n },\ - {\n \"key\": "piapia",\n \"value\": 775865\n },\ - {\n \"key\": "nedned",\n \"value\": 776766\n },\ - {\n \"key\": "ffaffa",\n \"value\": 778668\n },\ - {\n \"key\": "oidoid",\n \"value\": 779569\n },\ - {\n \"key\": "ureure",\n \"value\": 771561\n },\ - {\n \"key\": "akaaka",\n \"value\": 773463\n },\ - {\n \"key\": "jimjim",\n \"value\": 775365\n },\ - {\n \"key\": "calcal",\n \"value\": 778268\n },\ - {\n \"key\": "istist",\n \"value\": 770260\n },\ - {\n \"key\": "ickick",\n \"value\": 773163\n },\ - {\n \"key\": "ncence",\n \"value\": 775065\n },\ - {\n \"key\": "ikeike",\n \"value\": 778958\n },\ - {\n \"key\": "omeome",\n \"value\": 771951\n },\ - {\n \"key\": "ismism",\n \"value\": 774854\n },\ - {\n \"key\": "eeleel",\n \"value\": 778758\n },\ - {\n \"key\": "ialial",\n \"value\": 771751\n },\ - {\n \"key\": "deadea",\n \"value\": 774654\n },\ - {\n \"key\": "fulful",\n \"value\": 778558\n },\ - {\n \"key\": "bleble",\n \"value\": 772552\n },\ - {\n \"key\": "tahtah",\n \"value\": 776456\n },\ - {\n \"key\": "astast",\n \"value\": 770450\n },\ - {\n \"key\": "ylsyls",\n \"value\": 774354\n },\ - {\n \"key\": "ziazia",\n \"value\": 778258\n },\ - {\n \"key\": "ssesse",\n \"value\": 772252\n },\ - {\n \"key\": "essess",\n \"value\": 776156\n },\ - {\n \"key\": "lewlew",\n \"value\": 771151\n },\ - {\n \"key\": "ionion",\n \"value\": 775055\n },\ - {\n \"key\": "ackack",\n \"value\": 770050\n },\ - {\n \"key\": "wedwed",\n \"value\": 775945\n },\ - {\n \"key\": "gnigni",\n \"value\": 779849\n },\ - {\n \"key\": "areare",\n \"value\": 774844\n },\ - {\n \"key\": "oleole",\n \"value\": 779749\n },\ - {\n \"key\": "ateate",\n \"value\": 774744\n },\ - {\n \"key\": "ousous",\n \"value\": 779649\n },\ - {\n \"key\": "niania",\n \"value\": 775645\n },\ - {\n \"key\": "tletle",\n \"value\": 770640\n },\ - {\n \"key\": "cimcim",\n \"value\": 775545\n },\ - {\n \"key\": "eedeed",\n \"value\": 771541\n },\ - {\n \"key\": "bleble",\n \"value\": 776446\n },\ - {\n \"key\": "tcatca",\n \"value\": 772442\n },\ - {\n \"key\": "oneone",\n \"value\": 777347\n },\ - {\n \"key\": "nidnid",\n \"value\": 773343\n },\ - {\n \"key\": "hnahna",\n \"value\": 779249\n },\ - {\n \"key\": "olfolf",\n \"value\": 775245\n },\ - {\n \"key\": "ousous",\n \"value\": 770240\n },\ - {\n \"key\": "verver",\n \"value\": 776146\n },\ - {\n \"key\": "oseose",\n \"value\": 772142\n },\ - {\n \"key\": "tictic",\n \"value\": 779049\n },\ - {\n \"key\": "essess",\n \"value\": 775045\n },\ - {\n \"key\": "ionion",\n \"value\": 771041\n },\ - {\n \"key\": "iedied",\n \"value\": 777937\n },\ - {\n \"key\": "diadia",\n \"value\": 773933\n },\ - {\n \"key\": "ityity",\n \"value\": 770930\n },\ - {\n \"key\": "fulful",\n \"value\": 776836\n },\ - {\n \"key\": "ukeuke",\n \"value\": 773833\n },\ - {\n \"key\": "intint",\n \"value\": 779739\n },\ - {\n \"key\": "hoqhoq",\n \"value\": 776736\n },\ - {\n \"key\": "yoxyox",\n \"value\": 772732\n },\ - {\n \"key\": "taltal",\n \"value\": 779639\n },\ - {\n \"key\": "paipai",\n \"value\": 776636\n },\ - {\n \"key\": "eanean",\n \"value\": 772632\n },\ - {\n \"key\": "ineine",\n \"value\": 779539\n },\ - {\n \"key\": "uthuth",\n \"value\": 776536\n },\ - {\n \"key\": "izeize",\n \"value\": 773533\n },\ - {\n \"key\": "rubrub",\n \"value\": 770530\n },\ - {\n \"key\": "ilyily",\n \"value\": 777437\n },\ - {\n \"key\": "ylbylb",\n \"value\": 774434\n },\ - {\n \"key\": "liclic",\n \"value\": 771431\n },\ - {\n \"key\": "bleble",\n \"value\": 778338\n },\ - {\n \"key\": "elyely",\n \"value\": 775335\n },\ - {\n \"key\": "nelnel",\n \"value\": 772332\n },\ - {\n \"key\": "siasia",\n \"value\": 779239\n },\ - {\n \"key\": "monmon",\n \"value\": 777237\n },\ - {\n \"key\": "rinrin",\n \"value\": 774234\n },\ - {\n \"key\": "nalnal",\n \"value\": 771231\n },\ - {\n \"key\": "etyety",\n \"value\": 779139\n },\ - {\n \"key\": "tictic",\n \"value\": 776136\n },\ - {\n \"key\": "hsuhsu",\n \"value\": 773133\n },\ - {\n \"key\": "testes",\n \"value\": 771131\n },\ - {\n \"key\": "ritrit",\n \"value\": 778038\n },\ - {\n \"key\": "gabgab",\n \"value\": 776036\n },\ - {\n \"key\": "naenae",\n \"value\": 773033\n },\ - {\n \"key\": "noinoi",\n \"value\": 771031\n },\ - {\n \"key\": "ondond",\n \"value\": 778928\n },\ - {\n \"key\": "nisnis",\n \"value\": 776926\n },\ - {\n \"key\": "ianian",\n \"value\": 774924\n },\ - {\n \"key\": "cincin",\n \"value\": 771921\n },\ - {\n \"key\": "luslus",\n \"value\": 779829\n },\ - {\n \"key\": "llylly",\n \"value\": 777827\n },\ - {\n \"key\": "ltylty",\n \"value\": 775825\n },\ - {\n \"key\": "nienie",\n \"value\": 772822\n },\ - {\n \"key\": "ookook",\n \"value\": 770820\n },\ - {\n \"key\": "oinoin",\n \"value\": 778728\n },\ - {\n \"key\": "dmidmi",\n \"value\": 776726\n },\ - {\n \"key\": "macmac",\n \"value\": 774724\n },\ - {\n \"key\": "bleble",\n \"value\": 772722\n },\ - {\n \"key\": "ionion",\n \"value\": 770720\n },\ - {\n \"key\": "manman",\n \"value\": 778628\n },\ - {\n \"key\": "cipcip",\n \"value\": 776626\n },\ - {\n \"key\": "barbar",\n \"value\": 774624\n },\ - {\n \"key\": "llylly",\n \"value\": 772622\n },\ - {\n \"key\": "hothot",\n \"value\": 770620\n },\ - {\n \"key\": "oodood",\n \"value\": 778528\n },\ - {\n \"key\": "cumcum",\n \"value\": 776526\n },\ - {\n \"key\": "rkarka",\n \"value\": 774524\n },\ - {\n \"key\": "iveive",\n \"value\": 772522\n },\ - {\n \"key\": "ranran",\n \"value\": 771521\n },\ - {\n \"key\": "lesles",\n \"value\": 779429\n },\ - {\n \"key\": "fulful",\n \"value\": 777427\n },\ - {\n \"key\": "nalnal",\n \"value\": 775425\n },\ - {\n \"key\": "ousous",\n \"value\": 773423\n },\ - {\n \"key\": "inging",\n \"value\": 772422\n },\ - {\n \"key\": "ionion",\n \"value\": 770420\n },\ - {\n \"key\": "ousous",\n \"value\": 778328\n },\ - {\n \"key\": "pitpit",\n \"value\": 777327\n },\ - {\n \"key\": "oicoic",\n \"value\": 775325\n },\ - {\n \"key\": "vetvet",\n \"value\": 773323\n },\ - {\n \"key\": "erkerk",\n \"value\": 772322\n },\ - {\n \"key\": "ncyncy",\n \"value\": 770320\n },\ - {\n \"key\": "ionion",\n \"value\": 779229\n },\ - {\n \"key\": "inging",\n \"value\": 777227\n },\ - {\n \"key\": "tictic",\n \"value\": 775225\n },\ - {\n \"key\": "sissis",\n \"value\": 774224\n },\ - {\n \"key\": "rgyrgy",\n \"value\": 772222\n },\ - {\n \"key\": "tictic",\n \"value\": 771221\n },\ - {\n \"key\": "oedoed",\n \"value\": 779129\n },\ - {\n \"key\": "omaoma",\n \"value\": 778128\n },\ - {\n \"key\": "hiphip",\n \"value\": 777127\n },\ - {\n \"key\": "ncence",\n \"value\": 775125\n },\ - {\n \"key\": "ousous",\n \"value\": 774124\n },\ - {\n \"key\": "rghrgh",\n \"value\": 772122\n },\ - {\n \"key\": "ebtebt",\n \"value\": 771121\n },\ - {\n \"key\": "msimsi",\n \"value\": 779029\n },\ - {\n \"key\": "inging",\n \"value\": 778028\n },\ - {\n \"key\": "aukauk",\n \"value\": 777027\n },\ - {\n \"key\": "getget",\n \"value\": 775025\n },\ - {\n \"key\": "otaota",\n \"value\": 774024\n },\ - {\n \"key\": "oseose",\n \"value\": 773023\n },\ - {\n \"key\": "sapsap",\n \"value\": 771021\n },\ - {\n \"key\": "micmic",\n \"value\": 770020\n },\ - {\n \"key\": "calcal",\n \"value\": 779919\n },\ - {\n \"key\": "ismism",\n \"value\": 778918\n },\ - {\n \"key\": "dlydly",\n \"value\": 776916\n },\ - {\n \"key\": "ionion",\n \"value\": 775915\n },\ - {\n \"key\": "stysty",\n \"value\": 774914\n },\ - {\n \"key\": "kgokgo",\n \"value\": 773913\n },\ - {\n \"key\": "entent",\n \"value\": 772912\n },\ - {\n \"key\": "entent",\n \"value\": 770910\n },\ - {\n \"key\": "manman",\n \"value\": 779819\n },\ - {\n \"key\": "minmin",\n \"value\": 778818\n },\ - {\n \"key\": "gotgot",\n \"value\": 777817\n },\ - {\n \"key\": "unkunk",\n \"value\": 776816\n },\ - {\n \"key\": "ionion",\n \"value\": 775815\n },\ - {\n \"key\": "kerker",\n \"value\": 773813\n },\ - {\n \"key\": "eltelt",\n \"value\": 772812\n },\ - {\n \"key\": "manman",\n \"value\": 771811\n },\ - {\n \"key\": "ncence",\n \"value\": 770810\n },\ - {\n \"key\": "ernern",\n \"value\": 779719\n },\ - {\n \"key\": "eegeeg",\n \"value\": 778718\n },\ - {\n \"key\": "athath",\n \"value\": 777717\n },\ - {\n \"key\": "daedae",\n \"value\": 776716\n },\ - {\n \"key\": "ionion",\n \"value\": 775715\n },\ - {\n \"key\": "kerker",\n \"value\": 774714\n },\ - {\n \"key\": "terter",\n \"value\": 773713\n },\ - {\n \"key\": "essess",\n \"value\": 772712\n },\ - {\n \"key\": "aneane",\n \"value\": 771711\n },\ - {\n \"key\": "lahlah",\n \"value\": 770710\n },\ - {\n \"key\": "inging",\n \"value\": 779619\n },\ - {\n \"key\": "pilpil",\n \"value\": 778618\n },\ - {\n \"key\": "iseise",\n \"value\": 777617\n },\ - {\n \"key\": "sonson",\n \"value\": 776616\n },\ - {\n \"key\": "ityity",\n \"value\": 775615\n },\ - {\n \"key\": "esaesa",\n \"value\": 774614\n },\ - {\n \"key\": "araara",\n \"value\": 773613\n },\ - {\n \"key\": "perper",\n \"value\": 772612\n },\ - {\n \"key\": "siasia",\n \"value\": 771611\n },\ - {\n \"key\": "bleble",\n \"value\": 770610\n },\ - {\n \"key\": "rumrum",\n \"value\": 779519\n },\ - {\n \"key\": "toltol",\n \"value\": 779519\n },\ - {\n \"key\": "ousous",\n \"value\": 778518\n },\ - {\n \"key\": "ateate",\n \"value\": 777517\n },\ - {\n \"key\": "verver",\n \"value\": 776516\n },\ - {\n \"key\": "psepse",\n \"value\": 775515\n },\ - {\n \"key\": "rkyrky",\n \"value\": 774514\n },\ - {\n \"key\": "uleule",\n \"value\": 773513\n },\ - {\n \"key\": "adaada",\n \"value\": 772512\n },\ - {\n \"key\": "minmin",\n \"value\": 772512\n },\ - {\n \"key\": "amiami",\n \"value\": 771511\n },\ - {\n \"key\": "ulfulf",\n \"value\": 770510\n },\ - {\n \"key\": "rtzrtz",\n \"value\": 779419\n },\ - {\n \"key\": "ockock",\n \"value\": 778418\n },\ - {\n \"key\": "izeize",\n \"value\": 778418\n },\ - {\n \"key\": "oidoid",\n \"value\": 777417\n },\ - {\n \"key\": "bisbis",\n \"value\": 776416\n },\ - {\n \"key\": "nedned",\n \"value\": 775415\n },\ - {\n \"key\": "ralral",\n \"value\": 774414\n },\ - {\n \"key\": "aryary",\n \"value\": 774414\n },\ - {\n \"key\": "ikeike",\n \"value\": 773413\n },\ - {\n \"key\": "terter",\n \"value\": 772412\n },\ - {\n \"key\": "oveove",\n \"value\": 771411\n },\ - {\n \"key\": "ineine",\n \"value\": 771411\n },\ - {\n \"key\": "ebiebi",\n \"value\": 770410\n },\ - {\n \"key\": "iumium",\n \"value\": 779319\n },\ - {\n \"key\": "dgedge",\n \"value\": 779319\n },\ - {\n \"key\": "riaria",\n \"value\": 778318\n },\ - {\n \"key\": "upaupa",\n \"value\": 777317\n },\ - {\n \"key\": "entent",\n \"value\": 776316\n },\ - {\n \"key\": "eneene",\n \"value\": 776316\n },\ - {\n \"key\": "ridrid",\n \"value\": 775315\n },\ - {\n \"key\": "llelle",\n \"value\": 774314\n },\ - {\n \"key\": "dlydly",\n \"value\": 774314\n },\ - {\n \"key\": "angang",\n \"value\": 773313\n },\ - {\n \"key\": "tictic",\n \"value\": 772312\n },\ - {\n \"key\": "ontont",\n \"value\": 772312\n },\ - {\n \"key\": "astast",\n \"value\": 771311\n },\ - {\n \"key\": "suosuo",\n \"value\": 770310\n },\ - {\n \"key\": "essess",\n \"value\": 770310\n },\ - {\n \"key\": "essess",\n \"value\": 779219\n },\ - {\n \"key\": "istist",\n \"value\": 778218\n },\ - {\n \"key\": "inaina",\n \"value\": 778218\n },\ - {\n \"key\": "ewdewd",\n \"value\": 777217\n },\ - {\n \"key\": "verver",\n \"value\": 776216\n },\ - {\n \"key\": "ionion",\n \"value\": 776216\n },\ - {\n \"key\": "ardard",\n \"value\": 775215\n },\ - {\n \"key\": "pidpid",\n \"value\": 775215\n },\ - {\n \"key\": "eltelt",\n \"value\": 774214\n },\ - {\n \"key\": "letlet",\n \"value\": 773213\n },\ - {\n \"key\": "iesies",\n \"value\": 773213\n },\ - {\n \"key\": "ityity",\n \"value\": 772212\n },\ - {\n \"key\": "chacha",\n \"value\": 772212\n },\ - {\n \"key\": "ngenge",\n \"value\": 771211\n },\ - {\n \"key\": "terter",\n \"value\": 770210\n },\ - {\n \"key\": "eanean",\n \"value\": 770210\n },\ - {\n \"key\": "bleble",\n \"value\": 779119\n },\ - {\n \"key\": "llylly",\n \"value\": 779119\n },\ - {\n \"key\": "hiphip",\n \"value\": 778118\n },\ - {\n \"key\": "omaoma",\n \"value\": 778118\n },\ - {\n \"key\": "agoago",\n \"value\": 777117\n },\ - {\n \"key\": "oidoid",\n \"value\": 776116\n },\ - {\n \"key\": "manman",\n \"value\": 776116\n },\ - {\n \"key\": "ismism",\n \"value\": 775115\n },\ - {\n \"key\": "audaud",\n \"value\": 775115\n },\ - {\n \"key\": "ismism",\n \"value\": 774114\n },\ - {\n \"key\": "ionion",\n \"value\": 774114\n },\ - {\n \"key\": "thgthg",\n \"value\": 773113\n },\ - {\n \"key\": "endend",\n \"value\": 773113\n },\ - {\n \"key\": "udeude",\n \"value\": 772112\n },\ - {\n \"key\": "ashash",\n \"value\": 772112\n },\ - {\n \"key\": "ankank",\n \"value\": 771111\n },\ - {\n \"key\": "calcal",\n \"value\": 771111\n },\ - {\n \"key\": "pleple",\n \"value\": 770110\n },\ - {\n \"key\": "hedhed",\n \"value\": 770110\n },\ - {\n \"key\": "bleble",\n \"value\": 779019\n },\ - {\n \"key\": "tictic",\n \"value\": 779019\n },\ - {\n \"key\": "yteyte",\n \"value\": 778018\n },\ - {\n \"key\": "oldold",\n \"value\": 778018\n },\ - {\n \"key\": "steste",\n \"value\": 777017\n },\ - {\n \"key\": "ishish",\n \"value\": 777017\n },\ - {\n \"key\": "ineine",\n \"value\": 776016\n },\ - {\n \"key\": "manman",\n \"value\": 776016\n },\ - {\n \"key\": "miamia",\n \"value\": 775015\n },\ - {\n \"key\": "ifeife",\n \"value\": 775015\n },\ - {\n \"key\": "ssassa",\n \"value\": 774014\n },\ - {\n \"key\": "apeape",\n \"value\": 774014\n },\ - {\n \"key\": "essess",\n \"value\": 773013\n },\ - {\n \"key\": "fowfow",\n \"value\": 773013\n },\ - {\n \"key\": "siasia",\n \"value\": 773013\n },\ - {\n \"key\": "bleble",\n \"value\": 772012\n },\ - {\n \"key\": "eaeeae",\n \"value\": 772012\n },\ - {\n \"key\": "larlar",\n \"value\": 771011\n },\ - {\n \"key\": "tedted",\n \"value\": 771011\n },\ - {\n \"key\": "ralral",\n \"value\": 770010\n },\ - {\n \"key\": "ousous",\n \"value\": 770010\n },\ - {\n \"key\": "hpahpa",\n \"value\": 779999\n },\ - {\n \"key\": "iumium",\n \"value\": 775995\n },\ - {\n \"key\": "reeree",\n \"value\": 770990\n },\ - {\n \"key\": "hinhin",\n \"value\": 776896\n },\ - {\n \"key\": "malmal",\n \"value\": 772892\n },\ - {\n \"key\": "hathat",\n \"value\": 778798\n },\ - {\n \"key\": "dondon",\n \"value\": 774794\n },\ - {\n \"key\": "tictic",\n \"value\": 770790\n },\ - {\n \"key\": "ataata",\n \"value\": 776696\n },\ - {\n \"key\": "ilyily",\n \"value\": 771691\n },\ - {\n \"key\": "assass",\n \"value\": 777597\n },\ - {\n \"key\": "trytry",\n \"value\": 773593\n },\ - {\n \"key\": "essess",\n \"value\": 779499\n },\ - {\n \"key\": "ssesse",\n \"value\": 775495\n },\ - {\n \"key\": "horhor",\n \"value\": 772492\n },\ - {\n \"key\": "ionion",\n \"value\": 778398\n },\ - {\n \"key\": "glygly",\n \"value\": 774394\n },\ - {\n \"key\": "izeize",\n \"value\": 770390\n },\ - {\n \"key\": "essess",\n \"value\": 776296\n },\ - {\n \"key\": "dledle",\n \"value\": 772292\n },\ - {\n \"key\": "calcal",\n \"value\": 778198\n },\ - {\n \"key\": "denden",\n \"value\": 775195\n },\ - {\n \"key\": "ateate",\n \"value\": 771191\n },\ - {\n \"key\": "ylsyls",\n \"value\": 777097\n },\ - {\n \"key\": "oidoid",\n \"value\": 774094\n },\ - {\n \"key\": "llalla",\n \"value\": 770090\n },\ - {\n \"key\": "inging",\n \"value\": 776986\n },\ - {\n \"key\": "omeome",\n \"value\": 773983\n },\ - {\n \"key\": "ttette",\n \"value\": 779889\n },\ - {\n \"key\": "uliuli",\n \"value\": 776886\n },\ - {\n \"key\": "istist",\n \"value\": 772882\n },\ - {\n \"key\": "dlydly",\n \"value\": 778788\n },\ - {\n \"key\": "riaria",\n \"value\": 775785\n },\ - {\n \"key\": "ianian",\n \"value\": 771781\n },\ - {\n \"key\": "deldel",\n \"value\": 778688\n },\ - {\n \"key\": "eaeeae",\n \"value\": 775685\n },\ - {\n \"key\": "gungun",\n \"value\": 771681\n },\ - {\n \"key\": "inging",\n \"value\": 778588\n },\ - {\n \"key\": "noinoi",\n \"value\": 774584\n },\ - {\n \"key\": "serser",\n \"value\": 771581\n },\ - {\n \"key\": "ikeike",\n \"value\": 778488\n },\ - {\n \"key\": "rkyrky",\n \"value\": 774484\n },\ - {\n \"key\": "fulful",\n \"value\": 771481\n },\ - {\n \"key\": "acyacy",\n \"value\": 778388\n },\ - {\n \"key\": "nedned",\n \"value\": 775385\n },\ - {\n \"key\": "icaica",\n \"value\": 771381\n },\ - {\n \"key\": "ousous",\n \"value\": 778288\n },\ - {\n \"key\": "gyegye",\n \"value\": 775285\n },\ - {\n \"key\": "iumium",\n \"value\": 772282\n },\ - {\n \"key\": "ockock",\n \"value\": 779189\n },\ - {\n \"key\": "ushush",\n \"value\": 775185\n },\ - {\n \"key\": "noinoi",\n \"value\": 772182\n },\ - {\n \"key\": "ootoot",\n \"value\": 779089\n },\ - {\n \"key\": "entent",\n \"value\": 776086\n },\ - {\n \"key\": "llylly",\n \"value\": 773083\n },\ - {\n \"key\": "ilyily",\n \"value\": 770080\n },\ - {\n \"key\": "sdrsdr",\n \"value\": 777977\n },\ - {\n \"key\": "ionion",\n \"value\": 774974\n },\ - {\n \"key\": "hlyhly",\n \"value\": 771971\n },\ - {\n \"key\": "adoado",\n \"value\": 778878\n },\ - {\n \"key\": "inkink",\n \"value\": 775875\n },\ - {\n \"key\": "ineine",\n \"value\": 772872\n },\ - {\n \"key\": "ousous",\n \"value\": 779779\n },\ - {\n \"key\": "opeope",\n \"value\": 776776\n },\ - {\n \"key\": "cilcil",\n \"value\": 773773\n },\ - {\n \"key\": "ncyncy",\n \"value\": 771771\n },\ - {\n \"key\": "opyopy",\n \"value\": 778678\n },\ - {\n \"key\": "essess",\n \"value\": 775675\n },\ - {\n \"key\": "ygoygo",\n \"value\": 772672\n },\ - {\n \"key\": "ricric",\n \"value\": 779579\n },\ - {\n \"key\": "inging",\n \"value\": 776576\n },\ - {\n \"key\": "einein",\n \"value\": 774574\n },\ - {\n \"key\": "onaona",\n \"value\": 771571\n },\ - {\n \"key\": "elyely",\n \"value\": 778478\n },\ - {\n \"key\": "auraur",\n \"value\": 775475\n },\ - {\n \"key\": "tortor",\n \"value\": 773473\n },\ - {\n \"key\": "iveive",\n \"value\": 770470\n },\ - {\n \"key\": "taltal",\n \"value\": 777377\n },\ - {\n \"key\": "daedae",\n \"value\": 775375\n },\ - {\n \"key\": "rkarka",\n \"value\": 772372\n },\ - {\n \"key\": "wayway",\n \"value\": 779279\n },\ - {\n \"key\": "ousous",\n \"value\": 777277\n },\ - {\n \"key\": "iveive",\n \"value\": 774274\n },\ - {\n \"key\": "woewoe",\n \"value\": 772272\n },\ - {\n \"key\": "rphrph",\n \"value\": 779179\n },\ - {\n \"key\": "eeteet",\n \"value\": 776176\n },\ - {\n \"key\": "gnigni",\n \"value\": 774174\n },\ - {\n \"key\": "inkink",\n \"value\": 771171\n },\ - {\n \"key\": "terter",\n \"value\": 779079\n },\ - {\n \"key\": "ronron",\n \"value\": 776076\n },\ - {\n \"key\": "ageage",\n \"value\": 774074\n },\ - {\n \"key\": "oeaoea",\n \"value\": 771071\n },\ - {\n \"key\": "geygey",\n \"value\": 779969\n },\ - {\n \"key\": "oryory",\n \"value\": 776966\n },\ - {\n \"key\": "gilgil",\n \"value\": 774964\n },\ - {\n \"key\": "oraora",\n \"value\": 772962\n },\ - {\n \"key\": "tsrtsr",\n \"value\": 779869\n },\ - {\n \"key\": "iteite",\n \"value\": 777867\n },\ - {\n \"key\": "essess",\n \"value\": 774864\n },\ - {\n \"key\": "ashash",\n \"value\": 772862\n },\ - {\n \"key\": "redred",\n \"value\": 770860\n },\ - {\n \"key\": "dnedne",\n \"value\": 777767\n },\ - {\n \"key\": "inging",\n \"value\": 775765\n },\ - {\n \"key\": "eryery",\n \"value\": 773763\n },\ - {\n \"key\": "istist",\n \"value\": 770760\n },\ - {\n \"key\": "essess",\n \"value\": 778668\n },\ - {\n \"key\": "gesges",\n \"value\": 776666\n },\ - {\n \"key\": "odeode",\n \"value\": 773663\n },\ - {\n \"key\": "essess",\n \"value\": 771661\n },\ - {\n \"key\": "detdet",\n \"value\": 779569\n },\ - {\n \"key\": "uleule",\n \"value\": 777567\n },\ - {\n \"key\": "ousous",\n \"value\": 774564\n },\ - {\n \"key\": "hsihsi",\n \"value\": 772562\n },\ - {\n \"key\": "ishish",\n \"value\": 770560\n },\ - {\n \"key\": "esoeso",\n \"value\": 778468\n },\ - {\n \"key\": "eloelo",\n \"value\": 776466\n },\ - {\n \"key\": "outout",\n \"value\": 774464\n },\ - {\n \"key\": "ideide",\n \"value\": 771461\n },\ - {\n \"key\": "eedeed",\n \"value\": 779369\n },\ - {\n \"key\": "oidoid",\n \"value\": 777367\n },\ - {\n \"key\": "oaloal",\n \"value\": 775365\n },\ - {\n \"key\": "namnam",\n \"value\": 773363\n },\ - {\n \"key\": "inging",\n \"value\": 771361\n },\ - {\n \"key\": "inging",\n \"value\": 779269\n },\ - {\n \"key\": "upiupi",\n \"value\": 777267\n },\ - {\n \"key\": "ankank",\n \"value\": 775265\n },\ - {\n \"key\": "kedked",\n \"value\": 772262\n },\ - {\n \"key\": "iseise",\n \"value\": 770260\n },\ - {\n \"key\": "dradra",\n \"value\": 778168\n },\ - {\n \"key\": "ityity",\n \"value\": 776166\n },\ - {\n \"key\": "diadia",\n \"value\": 774164\n },\ - {\n \"key\": "essess",\n \"value\": 772162\n },\ - {\n \"key\": "areare",\n \"value\": 770160\n },\ - {\n \"key\": "ontont",\n \"value\": 778068\n },\ - {\n \"key\": "werwer",\n \"value\": 776066\n },\ - {\n \"key\": "ousous",\n \"value\": 774064\n },\ - {\n \"key\": "manman",\n \"value\": 772062\n },\ - {\n \"key\": "nutnut",\n \"value\": 771061\n },\ - {\n \"key\": "oidoid",\n \"value\": 779959\n },\ - {\n \"key\": "lahlah",\n \"value\": 777957\n },\ - {\n \"key\": "ricric",\n \"value\": 775955\n },\ - {\n \"key\": "ueruer",\n \"value\": 773953\n },\ - {\n \"key\": "naenae",\n \"value\": 771951\n },\ - {\n \"key\": "iteite",\n \"value\": 779859\n },\ - {\n \"key\": "bleble",\n \"value\": 777857\n },\ - {\n \"key\": "terter",\n \"value\": 775855\n },\ - {\n \"key\": "nicnic",\n \"value\": 773853\n },\ - {\n \"key\": "aidaid",\n \"value\": 772852\n },\ - {\n \"key\": "fulful",\n \"value\": 770850\n },\ - {\n \"key\": "essess",\n \"value\": 778758\n },\ - {\n \"key\": "iteite",\n \"value\": 776756\n },\ - {\n \"key\": "glygly",\n \"value\": 774754\n },\ - {\n \"key\": "iseise",\n \"value\": 772752\n },\ - {\n \"key\": "ityity",\n \"value\": 771751\n },\ - {\n \"key\": "essess",\n \"value\": 779659\n },\ - {\n \"key\": "ealeal",\n \"value\": 777657\n },\ - {\n \"key\": "aryary",\n \"value\": 775655\n },\ - {\n \"key\": "ronron",\n \"value\": 774654\n },\ - {\n \"key\": "etaeta",\n \"value\": 772652\n },\ - {\n \"key\": "aveave",\n \"value\": 770650\n },\ - {\n \"key\": "llylly",\n \"value\": 778558\n },\ - {\n \"key\": "iteite",\n \"value\": 777557\n },\ - {\n \"key\": "ianian",\n \"value\": 775555\n },\ - {\n \"key\": "oleole",\n \"value\": 773553\n },\ - {\n \"key\": "ithith",\n \"value\": 771551\n },\ - {\n \"key\": "aryary",\n \"value\": 770550\n },\ - {\n \"key\": "ondond",\n \"value\": 778458\n },\ - {\n \"key\": "oosoos",\n \"value\": 776456\n },\ - {\n \"key\": "hlyhly",\n \"value\": 775455\n },\ - {\n \"key\": "ncence",\n \"value\": 773453\n },\ - {\n \"key\": "eleele",\n \"value\": 771451\n },\ - {\n \"key\": "iotiot",\n \"value\": 770450\n },\ - {\n \"key\": "istist",\n \"value\": 778358\n },\ - {\n \"key\": "nesnes",\n \"value\": 777357\n },\ - {\n \"key\": "izeize",\n \"value\": 775355\n },\ - {\n \"key\": "gusgus",\n \"value\": 773353\n },\ - {\n \"key\": "laylay",\n \"value\": 772352\n },\ - {\n \"key\": "eneene",\n \"value\": 770350\n },\ - {\n \"key\": "eteete",\n \"value\": 779259\n },\ - {\n \"key\": "tictic",\n \"value\": 777257\n },\ - {\n \"key\": "fulful",\n \"value\": 775255\n },\ - {\n \"key\": "toltol",\n \"value\": 774254\n },\ - {\n \"key\": "tictic",\n \"value\": 772252\n },\ - {\n \"key\": "iveive",\n \"value\": 771251\n },\ - {\n \"key\": "manman",\n \"value\": 779159\n },\ - {\n \"key\": "bleble",\n \"value\": 778158\n },\ - {\n \"key\": "oidoid",\n \"value\": 776156\n },\ - {\n \"key\": "salsal",\n \"value\": 775155\n },\ - {\n \"key\": "kalkal",\n \"value\": 773153\n },\ - {\n \"key\": "essess",\n \"value\": 771151\n },\ - {\n \"key\": "omyomy",\n \"value\": 770150\n },\ - {\n \"key\": "oreore",\n \"value\": 778058\n },\ - {\n \"key\": "ionion",\n \"value\": 777057\n },\ - {\n \"key\": "eanean",\n \"value\": 775055\n },\ - {\n \"key\": "ellell",\n \"value\": 774054\n },\ - {\n \"key\": "daldal",\n \"value\": 773053\n },\ - {\n \"key\": "ateate",\n \"value\": 771051\n },\ - {\n \"key\": "ssesse",\n \"value\": 770050\n },\ - {\n \"key\": "deidei",\n \"value\": 778948\n },\ - {\n \"key\": "ousous",\n \"value\": 777947\n },\ - {\n \"key\": "glygly",\n \"value\": 775945\n },\ - {\n \"key\": "sitsit",\n \"value\": 774944\n },\ - {\n \"key\": "sissis",\n \"value\": 772942\n },\ - {\n \"key\": "larlar",\n \"value\": 771941\n },\ - {\n \"key\": "salsal",\n \"value\": 770940\n },\ - {\n \"key\": "herher",\n \"value\": 778848\n },\ - {\n \"key\": "tictic",\n \"value\": 777847\n },\ - {\n \"key\": "lamlam",\n \"value\": 775845\n },\ - {\n \"key\": "ionion",\n \"value\": 774844\n },\ - {\n \"key\": "lumlum",\n \"value\": 773843\n },\ - {\n \"key\": "oleole",\n \"value\": 771841\n },\ - {\n \"key\": "chmchm",\n \"value\": 770840\n },\ - {\n \"key\": "omeome",\n \"value\": 779749\n },\ - {\n \"key\": "eaeeae",\n \"value\": 777747\n },\ - {\n \"key\": "adeade",\n \"value\": 776746\n },\ - {\n \"key\": "hiohio",\n \"value\": 774744\n },\ - {\n \"key\": "lumlum",\n \"value\": 773743\n },\ - {\n \"key\": "hpahpa",\n \"value\": 772742\n },\ - {\n \"key\": "entent",\n \"value\": 770740\n },\ - {\n \"key\": "gusgus",\n \"value\": 779649\n },\ - {\n \"key\": "essess",\n \"value\": 778648\n },\ - {\n \"key\": "ityity",\n \"value\": 777647\n },\ - {\n \"key\": "ousous",\n \"value\": 775645\n },\ - {\n \"key\": "eloelo",\n \"value\": 774644\n },\ - {\n \"key\": "orkork",\n \"value\": 773643\n },\ - {\n \"key\": "otaota",\n \"value\": 771641\n },\ - {\n \"key\": "omyomy",\n \"value\": 770640\n },\ - {\n \"key\": "lislis",\n \"value\": 779549\n },\ - {\n \"key\": "teltel",\n \"value\": 777547\n },\ - {\n \"key\": "ytiyti",\n \"value\": 776546\n },\ - {\n \"key\": "noinoi",\n \"value\": 775545\n },\ - {\n \"key\": "micmic",\n \"value\": 774544\n },\ - {\n \"key\": "rerrer",\n \"value\": 772542\n },\ - {\n \"key\": "ionion",\n \"value\": 771541\n },\ - {\n \"key\": "essess",\n \"value\": 770540\n },\ - {\n \"key\": "larlar",\n \"value\": 779449\n },\ - {\n \"key\": "ionion",\n \"value\": 778448\n },\ - {\n \"key\": "nctnct",\n \"value\": 776446\n },\ - {\n \"key\": "aceace",\n \"value\": 775445\n },\ - {\n \"key\": "terter",\n \"value\": 774444\n },\ - {\n \"key\": "taltal",\n \"value\": 773443\n },\ - {\n \"key\": "hilhil",\n \"value\": 771441\n },\ - {\n \"key\": "oleole",\n \"value\": 770440\n },\ - {\n \"key\": "ileile",\n \"value\": 779349\n },\ - {\n \"key\": "inging",\n \"value\": 778348\n },\ - {\n \"key\": "omyomy",\n \"value\": 777347\n },\ - {\n \"key\": "glegle",\n \"value\": 776346\n },\ - {\n \"key\": "queque",\n \"value\": 774344\n },\ - {\n \"key\": "nainai",\n \"value\": 773343\n },\ - {\n \"key\": "buabua",\n \"value\": 772342\n },\ - {\n \"key\": "bleble",\n \"value\": 771341\n },\ - {\n \"key\": "aboabo",\n \"value\": 770340\n },\ - {\n \"key\": "looloo",\n \"value\": 779249\n },\ - {\n \"key\": "nlynly",\n \"value\": 777247\n },\ - {\n \"key\": "inging",\n \"value\": 776246\n },\ - {\n \"key\": "nahnah",\n \"value\": 775245\n },\ - {\n \"key\": "omaoma",\n \"value\": 774244\n },\ - {\n \"key\": "redred",\n \"value\": 773243\n },\ - {\n \"key\": "nalnal",\n \"value\": 772242\n },\ - {\n \"key\": "useuse",\n \"value\": 771241\n },\ - {\n \"key\": "allall",\n \"value\": 770240\n },\ - {\n \"key\": "laclac",\n \"value\": 778148\n },\ - {\n \"key\": "sumsum",\n \"value\": 777147\n },\ - {\n \"key\": "rerrer",\n \"value\": 776146\n },\ - {\n \"key\": "xisxis",\n \"value\": 775145\n },\ - {\n \"key\": "daedae",\n \"value\": 774144\n },\ - {\n \"key\": "dledle",\n \"value\": 773143\n },\ - {\n \"key\": "riaria",\n \"value\": 772142\n },\ - {\n \"key\": "ityity",\n \"value\": 771141\n },\ - {\n \"key\": "entent",\n \"value\": 770140\n },\ - {\n \"key\": "obeobe",\n \"value\": 779049\n },\ - {\n \"key\": "ierier",\n \"value\": 778048\n },\ - {\n \"key\": "oreore",\n \"value\": 777047\n },\ - {\n \"key\": "ateate",\n \"value\": 776046\n },\ - {\n \"key\": "istist",\n \"value\": 774044\n },\ - {\n \"key\": "oanoan",\n \"value\": 773043\n },\ - {\n \"key\": "intint",\n \"value\": 772042\n },\ - {\n \"key\": "sissis",\n \"value\": 771041\n },\ - {\n \"key\": "inging",\n \"value\": 770040\n },\ - {\n \"key\": "ineine",\n \"value\": 779939\n },\ - {\n \"key\": "eryery",\n \"value\": 778938\n },\ - {\n \"key\": "okooko",\n \"value\": 777937\n },\ - {\n \"key\": "ifyify",\n \"value\": 776936\n },\ - {\n \"key\": "detdet",\n \"value\": 775935\n },\ - {\n \"key\": "augaug",\n \"value\": 774934\n },\ - {\n \"key\": "essess",\n \"value\": 773933\n },\ - {\n \"key\": "ailail",\n \"value\": 772932\n },\ - {\n \"key\": "oonoon",\n \"value\": 771931\n },\ - {\n \"key\": "sissis",\n \"value\": 770930\n },\ - {\n \"key\": "neknek",\n \"value\": 779839\n },\ - {\n \"key\": "doodoo",\n \"value\": 778838\n },\ - {\n \"key\": "llylly",\n \"value\": 777837\n },\ - {\n \"key\": "icsics",\n \"value\": 776836\n },\ - {\n \"key\": "inging",\n \"value\": 775835\n },\ - {\n \"key\": "ratrat",\n \"value\": 774834\n },\ - {\n \"key\": "daldal",\n \"value\": 773833\n },\ - {\n \"key\": "andand",\n \"value\": 772832\n },\ - {\n \"key\": "odeode",\n \"value\": 772832\n },\ - {\n \"key\": "ismism",\n \"value\": 771831\n },\ - {\n \"key\": "anyany",\n \"value\": 770830\n },\ - {\n \"key\": "ageage",\n \"value\": 779739\n },\ - {\n \"key\": "essess",\n \"value\": 778738\n },\ - {\n \"key\": "bleble",\n \"value\": 777737\n },\ - {\n \"key\": "angang",\n \"value\": 776736\n },\ - {\n \"key\": "ionion",\n \"value\": 775735\n },\ - {\n \"key\": "tedted",\n \"value\": 774734\n },\ - {\n \"key\": "ifyify",\n \"value\": 773733\n },\ - {\n \"key\": "istist",\n \"value\": 772732\n },\ - {\n \"key\": "bleble",\n \"value\": 771731\n },\ - {\n \"key\": "ionion",\n \"value\": 770730\n },\ - {\n \"key\": "iveive",\n \"value\": 779639\n },\ - {\n \"key\": "noinoi",\n \"value\": 779639\n },\ - {\n \"key\": "raerae",\n \"value\": 778638\n },\ - {\n \"key\": "gedged",\n \"value\": 777637\n },\ - {\n \"key\": "nalnal",\n \"value\": 776636\n },\ - {\n \"key\": "ierier",\n \"value\": 775635\n },\ - {\n \"key\": "hidhid",\n \"value\": 774634\n },\ - {\n \"key\": "ionion",\n \"value\": 773633\n },\ - {\n \"key\": "irtirt",\n \"value\": 772632\n },\ - {\n \"key\": "glygly",\n \"value\": 771631\n },\ - {\n \"key\": "citcit",\n \"value\": 771631\n },\ - {\n \"key\": "ateate",\n \"value\": 770630\n },\ - {\n \"key\": "ikeike",\n \"value\": 779539\n },\ - {\n \"key\": "ataata",\n \"value\": 778538\n },\ - {\n \"key\": "letlet",\n \"value\": 777537\n },\ - {\n \"key\": "ialial",\n \"value\": 776536\n },\ - {\n \"key\": "sissis",\n \"value\": 775535\n },\ - {\n \"key\": "istist",\n \"value\": 774534\n },\ - {\n \"key\": "anaana",\n \"value\": 774534\n },\ - {\n \"key\": "oidoid",\n \"value\": 773533\n },\ - {\n \"key\": "ormorm",\n \"value\": 772532\n },\ - {\n \"key\": "lexlex",\n \"value\": 771531\n },\ - {\n \"key\": "llylly",\n \"value\": 770530\n },\ - {\n \"key\": "ifeife",\n \"value\": 779439\n },\ - {\n \"key\": "nalnal",\n \"value\": 779439\n },\ - {\n \"key\": "ionion",\n \"value\": 778438\n },\ - {\n \"key\": "hichic",\n \"value\": 777437\n },\ - {\n \"key\": "tootoo",\n \"value\": 776436\n },\ - {\n \"key\": "oryory",\n \"value\": 775435\n },\ - {\n \"key\": "llylly",\n \"value\": 774434\n },\ - {\n \"key\": "naenae",\n \"value\": 774434\n },\ - {\n \"key\": "izeize",\n \"value\": 773433\n },\ - {\n \"key\": "werwer",\n \"value\": 772432\n },\ - {\n \"key\": "oiloil",\n \"value\": 771431\n },\ - {\n \"key\": "luslus",\n \"value\": 770430\n },\ - {\n \"key\": "eneene",\n \"value\": 770430\n },\ - {\n \"key\": "ismism",\n \"value\": 779339\n },\ - {\n \"key\": "ricric",\n \"value\": 778338\n },\ - {\n \"key\": "iveive",\n \"value\": 777337\n },\ - {\n \"key\": "glygly",\n \"value\": 776336\n },\ - {\n \"key\": "manman",\n \"value\": 776336\n },\ - {\n \"key\": "rierie",\n \"value\": 775335\n },\ - {\n \"key\": "llylly",\n \"value\": 774334\n },\ - {\n \"key\": "ithith",\n \"value\": 773333\n },\ - {\n \"key\": "laclac",\n \"value\": 773333\n },\ - {\n \"key\": "ityity",\n \"value\": 772332\n },\ - {\n \"key\": "rezrez",\n \"value\": 771331\n },\ - {\n \"key\": "enyeny",\n \"value\": 770330\n },\ - {\n \"key\": "iedied",\n \"value\": 770330\n },\ - {\n \"key\": "rgerge",\n \"value\": 779239\n },\ - {\n \"key\": "wedwed",\n \"value\": 778238\n },\ - {\n \"key\": "iorior",\n \"value\": 777237\n },\ - {\n \"key\": "ousous",\n \"value\": 777237\n },\ - {\n \"key\": "ricric",\n \"value\": 776236\n },\ - {\n \"key\": "iumium",\n \"value\": 775235\n },\ - {\n \"key\": "neanea",\n \"value\": 774234\n },\ - {\n \"key\": "ionion",\n \"value\": 774234\n },\ - {\n \"key\": "ateate",\n \"value\": 773233\n },\ - {\n \"key\": "ateate",\n \"value\": 772232\n },\ - {\n \"key\": "ismism",\n \"value\": 771231\n },\ - {\n \"key\": "karkar",\n \"value\": 771231\n },\ - {\n \"key\": "essess",\n \"value\": 770230\n },\ - {\n \"key\": "oseose",\n \"value\": 779139\n },\ - {\n \"key\": "siasia",\n \"value\": 778138\n },\ - {\n \"key\": "aryary",\n \"value\": 778138\n },\ - {\n \"key\": "iteite",\n \"value\": 777137\n },\ - {\n \"key\": "bleble",\n \"value\": 776136\n },\ - {\n \"key\": "tustus",\n \"value\": 776136\n },\ - {\n \"key\": "iteite",\n \"value\": 775135\n },\ - {\n \"key\": "ikeike",\n \"value\": 774134\n },\ - {\n \"key\": "berber",\n \"value\": 773133\n },\ - {\n \"key\": "ismism",\n \"value\": 773133\n },\ - {\n \"key\": "rigrig",\n \"value\": 772132\n },\ - {\n \"key\": "yreyre",\n \"value\": 771131\n },\ - {\n \"key\": "ismism",\n \"value\": 771131\n },\ - {\n \"key\": "ismism",\n \"value\": 770130\n },\ - {\n \"key\": "oodood",\n \"value\": 779039\n },\ - {\n \"key\": "amaama",\n \"value\": 779039\n },\ - {\n \"key\": "sissis",\n \"value\": 778038\n },\ - {\n \"key\": "ftyfty",\n \"value\": 777037\n },\ - {\n \"key\": "onyony",\n \"value\": 777037\n },\ - {\n \"key\": "ismism",\n \"value\": 776036\n },\ - {\n \"key\": "iumium",\n \"value\": 775035\n },\ - {\n \"key\": "euseus",\n \"value\": 775035\n },\ - {\n \"key\": "bleble",\n \"value\": 774034\n },\ - {\n \"key\": "istist",\n \"value\": 773033\n },\ - {\n \"key\": "bowbow",\n \"value\": 773033\n },\ - {\n \"key\": "lielie",\n \"value\": 772032\n },\ - {\n \"key\": "ursurs",\n \"value\": 771031\n },\ - {\n \"key\": "hsuhsu",\n \"value\": 771031\n },\ - {\n \"key\": "imiimi",\n \"value\": 770030\n },\ - {\n \"key\": "dgedge",\n \"value\": 779929\n },\ - {\n \"key\": "laglag",\n \"value\": 779929\n },\ - {\n \"key\": "ionion",\n \"value\": 778928\n },\ - {\n \"key\": "fulful",\n \"value\": 777927\n },\ - {\n \"key\": "uedued",\n \"value\": 777927\n },\ - {\n \"key\": "angang",\n \"value\": 776926\n },\ - {\n \"key\": "ertert",\n \"value\": 775925\n },\ - {\n \"key\": "bleble",\n \"value\": 775925\n },\ - {\n \"key\": "tibtib",\n \"value\": 774924\n },\ - {\n \"key\": "iteite",\n \"value\": 773923\n },\ - {\n \"key\": "inging",\n \"value\": 773923\n },\ - {\n \"key\": "ionion",\n \"value\": 772922\n },\ - {\n \"key\": "ngsngs",\n \"value\": 772922\n },\ - {\n \"key\": "ralral",\n \"value\": 771921\n },\ - {\n \"key\": "dlydly",\n \"value\": 770920\n },\ - {\n \"key\": "nerner",\n \"value\": 770920\n },\ - {\n \"key\": "iveive",\n \"value\": 779829\n },\ - {\n \"key\": "istist",\n \"value\": 778828\n },\ - {\n \"key\": "piapia",\n \"value\": 778828\n },\ - {\n \"key\": "ncyncy",\n \"value\": 777827\n },\ - {\n \"key\": "geegee",\n \"value\": 777827\n },\ - {\n \"key\": "tictic",\n \"value\": 776826\n },\ - {\n \"key\": "bitbit",\n \"value\": 775825\n },\ - {\n \"key\": "larlar",\n \"value\": 775825\n },\ - {\n \"key\": "tedted",\n \"value\": 774824\n },\ - {\n \"key\": "ineine",\n \"value\": 774824\n },\ - {\n \"key\": "ateate",\n \"value\": 773823\n },\ - {\n \"key\": "essess",\n \"value\": 772822\n },\ - {\n \"key\": "rdsrds",\n \"value\": 772822\n },\ - {\n \"key\": "laplap",\n \"value\": 771821\n },\ - {\n \"key\": "essess",\n \"value\": 771821\n },\ - {\n \"key\": "siasia",\n \"value\": 770820\n },\ - {\n \"key\": "ousous",\n \"value\": 779729\n },\ - {\n \"key\": "inging",\n \"value\": 779729\n },\ - {\n \"key\": "pirpir",\n \"value\": 778728\n },\ - {\n \"key\": "dlydly",\n \"value\": 778728\n },\ - {\n \"key\": "liclic",\n \"value\": 777727\n },\ - {\n \"key\": "cuscus",\n \"value\": 777727\n },\ - {\n \"key\": "essess",\n \"value\": 776726\n },\ - {\n \"key\": "glygly",\n \"value\": 775725\n },\ - {\n \"key\": "ainain",\n \"value\": 775725\n },\ - {\n \"key\": "etyety",\n \"value\": 774724\n },\ - {\n \"key\": "yllyll",\n \"value\": 774724\n },\ - {\n \"key\": "nusnus",\n \"value\": 773723\n },\ - {\n \"key\": "iidiid",\n \"value\": 773723\n },\ - {\n \"key\": "yonyon",\n \"value\": 772722\n },\ - {\n \"key\": "miamia",\n \"value\": 771721\n },\ - {\n \"key\": "domdom",\n \"value\": 771721\n },\ - {\n \"key\": "ineine",\n \"value\": 770720\n },\ - {\n \"key\": "ayoayo",\n \"value\": 770720\n },\ - {\n \"key\": "essess",\n \"value\": 779629\n },\ - {\n \"key\": "ionion",\n \"value\": 779629\n },\ - {\n \"key\": "aftaft",\n \"value\": 778628\n },\ - {\n \"key\": "tchtch",\n \"value\": 778628\n },\ - {\n \"key\": "rowrow",\n \"value\": 777627\n },\ - {\n \"key\": "euseus",\n \"value\": 776626\n },\ - {\n \"key\": "bleble",\n \"value\": 776626\n },\ - {\n \"key\": "manman",\n \"value\": 775625\n },\ - {\n \"key\": "ianian",\n \"value\": 775625\n },\ - {\n \"key\": "tlytly",\n \"value\": 774624\n },\ - {\n \"key\": "opeope",\n \"value\": 774624\n },\ - {\n \"key\": "parpar",\n \"value\": 773623\n },\ - {\n \"key\": "rumrum",\n \"value\": 773623\n },\ - {\n \"key\": "essess",\n \"value\": 772622\n },\ - {\n \"key\": "hinhin",\n \"value\": 772622\n },\ - {\n \"key\": "istist",\n \"value\": 771621\n },\ - {\n \"key\": "denden",\n \"value\": 771621\n },\ - {\n \"key\": "ualual",\n \"value\": 770620\n },\ - {\n \"key\": "tiatia",\n \"value\": 779529\n },\ - {\n \"key\": "sissis",\n \"value\": 779529\n },\ - {\n \"key\": "slysly",\n \"value\": 778528\n },\ - {\n \"key\": "ameame",\n \"value\": 778528\n },\ - {\n \"key\": "ismism",\n \"value\": 777527\n },\ - {\n \"key\": "ialial",\n \"value\": 777527\n },\ - {\n \"key\": "nerner",\n \"value\": 776526\n },\ - {\n \"key\": "ifyify",\n \"value\": 776526\n },\ - {\n \"key\": "ismism",\n \"value\": 775525\n },\ - {\n \"key\": "legleg",\n \"value\": 775525\n },\ - {\n \"key\": "calcal",\n \"value\": 774524\n },\ - {\n \"key\": "oadoad",\n \"value\": 774524\n },\ - {\n \"key\": "iveive",\n \"value\": 773523\n },\ - {\n \"key\": "micmic",\n \"value\": 773523\n },\ - {\n \"key\": "chychy",\n \"value\": 772522\n },\ - {\n \"key\": "daldal",\n \"value\": 772522\n },\ - {\n \"key\": "ityity",\n \"value\": 771521\n },\ - {\n \"key\": "iadiad",\n \"value\": 771521\n },\ - {\n \"key\": "liclic",\n \"value\": 770520\n },\ - {\n \"key\": "ionion",\n \"value\": 770520\n },\ - {\n \"key\": "micmic",\n \"value\": 779429\n },\ - {\n \"key\": "sissis",\n \"value\": 779429\n },\ - {\n \"key\": "rserse",\n \"value\": 778428\n },\ - {\n \"key\": "iteite",\n \"value\": 778428\n },\ - {\n \"key\": "izeize",\n \"value\": 777427\n },\ - {\n \"key\": "iumium",\n \"value\": 777427\n },\ - {\n \"key\": "panpan",\n \"value\": 776426\n },\ - {\n \"key\": "glygly",\n \"value\": 776426\n },\ - {\n \"key\": "etaeta",\n \"value\": 775425\n },\ - {\n \"key\": "ssesse",\n \"value\": 775425\n },\ - {\n \"key\": "narnar",\n \"value\": 775425\n },\ - {\n \"key\": "setset",\n \"value\": 774424\n },\ - {\n \"key\": "tedted",\n \"value\": 774424\n },\ - {\n \"key\": "oidoid",\n \"value\": 773423\n },\ - {\n \"key\": "ineine",\n \"value\": 773423\n },\ - {\n \"key\": "nedned",\n \"value\": 772422\n },\ - {\n \"key\": "eadead",\n \"value\": 772422\n },\ - {\n \"key\": "ousous",\n \"value\": 771421\n },\ - {\n \"key\": "slysly",\n \"value\": 771421\n },\ - {\n \"key\": "enieni",\n \"value\": 770420\n },\ - {\n \"key\": "essess",\n \"value\": 770420\n },\ - {\n \"key\": "terter",\n \"value\": 779329\n },\ - {\n \"key\": "ntynty",\n \"value\": 779329\n },\ - {\n \"key\": "sinsin",\n \"value\": 778328\n },\ - {\n \"key\": "ismism",\n \"value\": 778328\n },\ - {\n \"key\": "ousous",\n \"value\": 778328\n },\ - {\n \"key\": "aryary",\n \"value\": 777327\n },\ - {\n \"key\": "numnum",\n \"value\": 777327\n },\ - {\n \"key\": "tlytly",\n \"value\": 776326\n },\ - {\n \"key\": "calcal",\n \"value\": 776326\n },\ - {\n \"key\": "slysly",\n \"value\": 775325\n },\ - {\n \"key\": "trytry",\n \"value\": 775325\n },\ - {\n \"key\": "ailail",\n \"value\": 774324\n },\ - {\n \"key\": "nicnic",\n \"value\": 774324\n },\ - {\n \"key\": "ionion",\n \"value\": 773323\n },\ - {\n \"key\": "serser",\n \"value\": 773323\n },\ - {\n \"key\": "essess",\n \"value\": 773323\n },\ - {\n \"key\": "tistis",\n \"value\": 772322\n },\ - {\n \"key\": "otlotl",\n \"value\": 772322\n },\ - {\n \"key\": "ousous",\n \"value\": 771321\n },\ - {\n \"key\": "dehdeh",\n \"value\": 771321\n },\ - {\n \"key\": "essess",\n \"value\": 770320\n },\ - {\n \"key\": "llylly",\n \"value\": 770320\n },\ - {\n \"key\": "evievi",\n \"value\": 770320\n },\ - {\n \"key\": "iteite",\n \"value\": 779229\n },\ - {\n \"key\": "rnerne",\n \"value\": 779229\n },\ - {\n \"key\": "oleole",\n \"value\": 778228\n },\ - {\n \"key\": "oryory",\n \"value\": 778228\n },\ - {\n \"key\": "ionion",\n \"value\": 777227\n },\ - {\n \"key\": "eteete",\n \"value\": 777227\n },\ - {\n \"key\": "ismism",\n \"value\": 777227\n },\ - {\n \"key\": "oidoid",\n \"value\": 776226\n },\ - {\n \"key\": "ismism",\n \"value\": 776226\n },\ - {\n \"key\": "ahtaht",\n \"value\": 775225\n },\ - {\n \"key\": "ousous",\n \"value\": 775225\n },\ - {\n \"key\": "daedae",\n \"value\": 774224\n },\ - {\n \"key\": "nrenre",\n \"value\": 774224\n },\ - {\n \"key\": "daldal",\n \"value\": 774224\n },\ - {\n \"key\": "ngsngs",\n \"value\": 773223\n },\ - {\n \"key\": "zinzin",\n \"value\": 773223\n },\ - {\n \"key\": "tistis",\n \"value\": 772222\n },\ - {\n \"key\": "ikeike",\n \"value\": 772222\n },\ - {\n \"key\": "ithith",\n \"value\": 772222\n },\ - {\n \"key\": "fulful",\n \"value\": 771221\n },\ - {\n \"key\": "evievi",\n \"value\": 771221\n },\ - {\n \"key\": "earear",\n \"value\": 770220\n },\ - {\n \"key\": "aftaft",\n \"value\": 770220\n },\ - {\n \"key\": "eereer",\n \"value\": 770220\n },\ - {\n \"key\": "ousous",\n \"value\": 779129\n },\ - {\n \"key\": "aphaph",\n \"value\": 779129\n },\ - {\n \"key\": "iteite",\n \"value\": 778128\n },\ - {\n \"key\": "gerger",\n \"value\": 778128\n },\ - {\n \"key\": "llylly",\n \"value\": 778128\n },\ - {\n \"key\": "oodood",\n \"value\": 777127\n },\ - {\n \"key\": "araara",\n \"value\": 777127\n },\ - {\n \"key\": "suosuo",\n \"value\": 776126\n },\ - {\n \"key\": "ionion",\n \"value\": 776126\n },\ - {\n \"key\": "ishish",\n \"value\": 776126\n },\ - {\n \"key\": "ynyyny",\n \"value\": 775125\n },\ - {\n \"key\": "akeake",\n \"value\": 775125\n },\ - {\n \"key\": "rawraw",\n \"value\": 774124\n },\ - {\n \"key\": "fidfid",\n \"value\": 774124\n },\ - {\n \"key\": "slysly",\n \"value\": 774124\n },\ - {\n \"key\": "ngyngy",\n \"value\": 773123\n },\ - {\n \"key\": "iteite",\n \"value\": 773123\n },\ - {\n \"key\": "hichic",\n \"value\": 772122\n },\ - {\n \"key\": "warwar",\n \"value\": 772122\n },\ - {\n \"key\": "eziezi",\n \"value\": 772122\n },\ - {\n \"key\": "sissis",\n \"value\": 771121\n },\ - {\n \"key\": "aryary",\n \"value\": 771121\n },\ - {\n \"key\": "trytry",\n \"value\": 771121\n },\ - {\n \"key\": "eltelt",\n \"value\": 770120\n },\ - {\n \"key\": "yteyte",\n \"value\": 770120\n },\ - {\n \"key\": "tictic",\n \"value\": 779029\n },\ - {\n \"key\": "testes",\n \"value\": 779029\n },\ - {\n \"key\": "terter",\n \"value\": 779029\n },\ - {\n \"key\": "antant",\n \"value\": 778028\n },\ - {\n \"key\": "bleble",\n \"value\": 778028\n },\ - {\n \"key\": "ikeike",\n \"value\": 778028\n },\ - {\n \"key\": "ionion",\n \"value\": 777027\n },\ - {\n \"key\": "ycnycn",\n \"value\": 777027\n },\ - {\n \"key\": "ermerm",\n \"value\": 776026\n },\ - {\n \"key\": "istist",\n \"value\": 776026\n },\ - {\n \"key\": "rryrry",\n \"value\": 776026\n },\ - {\n \"key\": "nicnic",\n \"value\": 775025\n },\ - {\n \"key\": "dibdib",\n \"value\": 775025\n },\ - {\n \"key\": "yroyro",\n \"value\": 775025\n },\ - {\n \"key\": "kerker",\n \"value\": 774024\n },\ - {\n \"key\": "zenzen",\n \"value\": 774024\n },\ - {\n \"key\": "llylly",\n \"value\": 774024\n },\ - {\n \"key\": "essess",\n \"value\": 773023\n },\ - {\n \"key\": "iteite",\n \"value\": 773023\n },\ - {\n \"key\": "eraera",\n \"value\": 773023\n },\ - {\n \"key\": "oneone",\n \"value\": 772022\n },\ - {\n \"key\": "saesae",\n \"value\": 772022\n },\ - {\n \"key\": "tortor",\n \"value\": 771021\n },\ - {\n \"key\": "testes",\n \"value\": 771021\n },\ - {\n \"key\": "istist",\n \"value\": 771021\n },\ - {\n \"key\": "tictic",\n \"value\": 770020\n },\ - {\n \"key\": "liclic",\n \"value\": 770020\n },\ - {\n \"key\": "trytry",\n \"value\": 770020\n },\ - {\n \"key\": "ionion",\n \"value\": 779919\n },\ - {\n \"key\": "aosaos",\n \"value\": 779919\n },\ - {\n \"key\": "areare",\n \"value\": 779919\n },\ - {\n \"key\": "ycayca",\n \"value\": 778918\n },\ - {\n \"key\": "dahdah",\n \"value\": 778918\n },\ - {\n \"key\": "eanean",\n \"value\": 778918\n },\ - {\n \"key\": "uleule",\n \"value\": 777917\n },\ - {\n \"key\": "ifyify",\n \"value\": 777917\n },\ - {\n \"key\": "ialial",\n \"value\": 777917\n },\ - {\n \"key\": "ionion",\n \"value\": 776916\n },\ - {\n \"key\": "ronron",\n \"value\": 776916\n },\ - {\n \"key\": "ormorm",\n \"value\": 776916\n },\ - {\n \"key\": "lonlon",\n \"value\": 775915\n },\ - {\n \"key\": "nalnal",\n \"value\": 775915\n },\ - {\n \"key\": "doldol",\n \"value\": 775915\n },\ - {\n \"key\": "arkark",\n \"value\": 774914\n },\ - {\n \"key\": "nirnir",\n \"value\": 774914\n },\ - {\n \"key\": "tumtum",\n \"value\": 774914\n },\ - {\n \"key\": "ineine",\n \"value\": 773913\n },\ - {\n \"key\": "loyloy",\n \"value\": 773913\n },\ - {\n \"key\": "tnetne",\n \"value\": 773913\n },\ - {\n \"key\": "rborbo",\n \"value\": 772912\n },\ - {\n \"key\": "ismism",\n \"value\": 772912\n },\ - {\n \"key\": "ineine",\n \"value\": 772912\n },\ - {\n \"key\": "llylly",\n \"value\": 771911\n },\ - {\n \"key\": "tidtid",\n \"value\": 771911\n },\ - {\n \"key\": "inging",\n \"value\": 771911\n },\ - {\n \"key\": "gnigni",\n \"value\": 770910\n },\ - {\n \"key\": "naenae",\n \"value\": 770910\n },\ - {\n \"key\": "ncence",\n \"value\": 770910\n },\ - {\n \"key\": "ikeike",\n \"value\": 779819\n },\ - {\n \"key\": "pedped",\n \"value\": 779819\n },\ - {\n \"key\": "napnap",\n \"value\": 779819\n },\ - {\n \"key\": "renren",\n \"value\": 778818\n },\ - {\n \"key\": "dedded",\n \"value\": 778818\n },\ - {\n \"key\": "redred",\n \"value\": 778818\n },\ - {\n \"key\": "yltylt",\n \"value\": 777817\n },\ - {\n \"key\": "ylgylg",\n \"value\": 777817\n },\ - {\n \"key\": "oseose",\n \"value\": 777817\n },\ - {\n \"key\": "ytiyti",\n \"value\": 777817\n },\ - {\n \"key\": "etaeta",\n \"value\": 776816\n },\ - {\n \"key\": "oluolu",\n \"value\": 776816\n },\ - {\n \"key\": "ncence",\n \"value\": 776816\n },\ - {\n \"key\": "riaria",\n \"value\": 775815\n },\ - {\n \"key\": "uloulo",\n \"value\": 775815\n },\ - {\n \"key\": "ionion",\n \"value\": 775815\n },\ - {\n \"key\": "llylly",\n \"value\": 774814\n },\ - {\n \"key\": "ninnin",\n \"value\": 774814\n },\ - {\n \"key\": "ughugh",\n \"value\": 774814\n },\ - {\n \"key\": "iveive",\n \"value\": 773813\n },\ - {\n \"key\": "daedae",\n \"value\": 773813\n },\ - {\n \"key\": "bleble",\n \"value\": 773813\n },\ - {\n \"key\": "entent",\n \"value\": 773813\n },\ - {\n \"key\": "budbud",\n \"value\": 772812\n },\ - {\n \"key\": "ledled",\n \"value\": 772812\n },\ - {\n \"key\": "rowrow",\n \"value\": 772812\n },\ - {\n \"key\": "oofoof",\n \"value\": 771811\n },\ - {\n \"key\": "eiteit",\n \"value\": 771811\n },\ - {\n \"key\": "hedhed",\n \"value\": 771811\n },\ - {\n \"key\": "eadead",\n \"value\": 770810\n },\ - {\n \"key\": "ghtght",\n \"value\": 770810\n },\ - {\n \"key\": "ncence",\n \"value\": 770810\n },\ - {\n \"key\": "bleble",\n \"value\": 770810\n },\ - {\n \"key\": "ralral",\n \"value\": 779719\n },\ - {\n \"key\": "entent",\n \"value\": 779719\n },\ - {\n \"key\": "ionion",\n \"value\": 779719\n },\ - {\n \"key\": "hlyhly",\n \"value\": 778718\n },\ - {\n \"key\": "dledle",\n \"value\": 778718\n },\ - {\n \"key\": "oidoid",\n \"value\": 778718\n },\ - {\n \"key\": "ousous",\n \"value\": 778718\n },\ - {\n \"key\": "ineine",\n \"value\": 777717\n },\ - {\n \"key\": "ianian",\n \"value\": 777717\n },\ - {\n \"key\": "gicgic",\n \"value\": 777717\n },\ - {\n \"key\": "mbombo",\n \"value\": 776716\n },\ - {\n \"key\": "tictic",\n \"value\": 776716\n },\ - {\n \"key\": "antant",\n \"value\": 776716\n },\ - {\n \"key\": "nwonwo",\n \"value\": 775715\n },\ - {\n \"key\": "ionion",\n \"value\": 775715\n },\ - {\n \"key\": "inging",\n \"value\": 775715\n },\ - {\n \"key\": "arkark",\n \"value\": 775715\n },\ - {\n \"key\": "nicnic",\n \"value\": 774714\n },\ - {\n \"key\": "ityity",\n \"value\": 774714\n },\ - {\n \"key\": "iveive",\n \"value\": 774714\n },\ - {\n \"key\": "testes",\n \"value\": 774714\n },\ - {\n \"key\": "llylly",\n \"value\": 773713\n },\ - {\n \"key\": "sissis",\n \"value\": 773713\n },\ - {\n \"key\": "ateate",\n \"value\": 773713\n },\ - {\n \"key\": "ledled",\n \"value\": 772712\n },\ - {\n \"key\": "niuniu",\n \"value\": 772712\n },\ - {\n \"key\": "linlin",\n \"value\": 772712\n },\ - {\n \"key\": "omyomy",\n \"value\": 772712\n },\ - {\n \"key\": "nannan",\n \"value\": 771711\n },\ - {\n \"key\": "abeabe",\n \"value\": 771711\n },\ - {\n \"key\": "ssesse",\n \"value\": 771711\n },\ - {\n \"key\": "hlyhly",\n \"value\": 770710\n },\ - {\n \"key\": "llalla",\n \"value\": 770710\n },\ - {\n \"key\": "kinkin",\n \"value\": 770710\n },\ - {\n \"key\": "essess",\n \"value\": 770710\n },\ - {\n \"key\": "essess",\n \"value\": 779619\n },\ - {\n \"key\": "itoito",\n \"value\": 779619\n },\ - {\n \"key\": "entent",\n \"value\": 779619\n },\ - {\n \"key\": "oidoid",\n \"value\": 779619\n },\ - {\n \"key\": "gerger",\n \"value\": 778618\n },\ - {\n \"key\": "moomoo",\n \"value\": 778618\n },\ - {\n \"key\": "ogyogy",\n \"value\": 778618\n },\ - {\n \"key\": "iseise",\n \"value\": 778618\n },\ - {\n \"key\": "ichich",\n \"value\": 777617\n },\ - {\n \"key\": "nedned",\n \"value\": 777617\n },\ - {\n \"key\": "bleble",\n \"value\": 777617\n },\ - {\n \"key\": "tictic",\n \"value\": 777617\n },\ - {\n \"key\": "izeize",\n \"value\": 776616\n },\ - {\n \"key\": "oxyoxy",\n \"value\": 776616\n },\ - {\n \"key\": "daldal",\n \"value\": 776616\n },\ - {\n \"key\": "carcar",\n \"value\": 775615\n },\ - {\n \"key\": "entent",\n \"value\": 775615\n },\ - {\n \"key\": "lezlez",\n \"value\": 775615\n },\ - {\n \"key\": "ikeike",\n \"value\": 775615\n },\ - {\n \"key\": "noinoi",\n \"value\": 774614\n },\ - {\n \"key\": "oftoft",\n \"value\": 774614\n },\ - {\n \"key\": "larlar",\n \"value\": 774614\n },\ - {\n \"key\": "aicaic",\n \"value\": 774614\n },\ - {\n \"key\": "nzonzo",\n \"value\": 773613\n },\ - {\n \"key\": "ianian",\n \"value\": 773613\n },\ - {\n \"key\": "hlyhly",\n \"value\": 773613\n },\ - {\n \"key\": "manman",\n \"value\": 773613\n },\ - {\n \"key\": "iteite",\n \"value\": 772612\n },\ - {\n \"key\": "eryery",\n \"value\": 772612\n },\ - {\n \"key\": "ttotto",\n \"value\": 772612\n },\ - {\n \"key\": "nylnyl",\n \"value\": 772612\n },\ - {\n \"key\": "ariari",\n \"value\": 771611\n },\ - {\n \"key\": "ssesse",\n \"value\": 771611\n },\ - {\n \"key\": "warwar",\n \"value\": 771611\n },\ - {\n \"key\": "ousous",\n \"value\": 771611\n },\ - {\n \"key\": "oreore",\n \"value\": 770610\n },\ - {\n \"key\": "ionion",\n \"value\": 770610\n },\ - {\n \"key\": "nornor",\n \"value\": 770610\n },\ - {\n \"key\": "niania",\n \"value\": 770610\n },\ - {\n \"key\": "niania",\n \"value\": 779519\n },\ - {\n \"key\": "boxbox",\n \"value\": 779519\n },\ - {\n \"key\": "aabaab",\n \"value\": 779519\n },\ - {\n \"key\": "miamia",\n \"value\": 779519\n },\ - {\n \"key\": "untunt",\n \"value\": 778518\n },\ - {\n \"key\": "ogyogy",\n \"value\": 778518\n },\ - {\n \"key\": "ousous",\n \"value\": 778518\n },\ - {\n \"key\": "ialial",\n \"value\": 778518\n },\ - {\n \"key\": "lialia",\n \"value\": 777517\n },\ - {\n \"key\": "etyety",\n \"value\": 777517\n },\ - {\n \"key\": "ionion",\n \"value\": 777517\n },\ - {\n \"key\": "ionion",\n \"value\": 777517\n },\ - {\n \"key\": "eateat",\n \"value\": 777517\n },\ - {\n \"key\": "bitbit",\n \"value\": 776516\n },\ - {\n \"key\": "ishish",\n \"value\": 776516\n },\ - {\n \"key\": "calcal",\n \"value\": 776516\n },\ - {\n \"key\": "ikeike",\n \"value\": 776516\n },\ - {\n \"key\": "cincin",\n \"value\": 775515\n },\ - {\n \"key\": "niknik",\n \"value\": 775515\n },\ - {\n \"key\": "oneone",\n \"value\": 775515\n },\ - {\n \"key\": "roiroi",\n \"value\": 775515\n },\ - {\n \"key\": "ricric",\n \"value\": 774514\n },\ - {\n \"key\": "ideide",\n \"value\": 774514\n },\ - {\n \"key\": "nrynry",\n \"value\": 774514\n },\ - {\n \"key\": "roiroi",\n \"value\": 775515\n },\ - {\n \"key\": "ricric",\n \"value\": 774514\n },\ - {\n \"key\": "ideide",\n \"value\": 774514\n },\ - {\n \"key\": "nrynry",\n \"value\": 774514\n },\ - {\n \"key\": "lialia",\n \"value\": 777517\n },\ - {\n \"key\": "etyety",\n \"value\": 777517\n },\ - {\n \"key\": "ionion",\n \"value\": 777517\n },\ - {\n \"key\": "ionion",\n \"value\": 777517\n },\ - {\n \"key\": "eateat",\n \"value\": 777517\n },\ - {\n \"key\": "bitbit",\n \"value\": 776516\n },\ - {\n \"key\": "ishish",\n \"value\": 776516\n },\ - {\n \"key\": "calcal",\n \"value\": 776516\n },\ - {\n \"key\": "ikeike",\n \"value\": 776516\n },\ - {\n \"key\": "cincin",\n \"value\": 775515\n },\ - {\n \"key\": "niknik",\n \"value\": 775515\n },\ - {\n \"key\": "oneone",\n \"value\": 775515\n },\ - {\n \"key\": "roiroi",\n \"value\": 775515\n },\ - {\n \"key\": "ricric",\n \"value\": 774514\n },\ - {\n \"key\": "ideide",\n \"value\": 774514\n },\ - {\n \"key\": "nrynry",\n \"value\": 774514\n },\ - {\n \"key\": "roiroi",\n \"value\": 775515\n },\ - {\n \"key\": "ricric",\n \"value\": 774514\n },\ - {\n \"key\": "ideide",\n \"value\": 774514\n },\ - {\n \"key\": "nrynry",\n \"value\": 774514\n },\ - {\n \"key\": "ralral",\n \"value\": 779049\n }]'; - -kvJSON.frob(); diff --git a/implementation-contributed/v8/mjsunit/harmony/array-concat-array-proto-getter.js b/implementation-contributed/v8/mjsunit/harmony/array-concat-array-proto-getter.js deleted file mode 100644 index 9368e7fb6ca..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-concat-array-proto-getter.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check that @@isConcatSpreadable is checked when set on Object.prototype - -"use strict" - -var array = [1, 2, 3]; -var object = {length: 1, '0': 'a'}; - -function testConcatDefaults() { - assertEquals(array, [].concat(array)); - assertEquals(array, array.concat([])); - assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); - assertEquals([object], [].concat(object)); - assertEquals([1, 2, 3, object], array.concat(object)); - assertEquals([object], Array.prototype.concat.call(object,[])); - assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array)); - assertEquals([object, object], Array.prototype.concat.call(object, object)); -} - -testConcatDefaults(); - -var concatSpreadable = false; -Object.defineProperty(Array.prototype, Symbol.isConcatSpreadable, { - get() { return concatSpreadable }, - configurable: true -}); - -assertEquals([[], array], [].concat(array)); -assertEquals([array, []], array.concat([])); -assertEquals([array, array], array.concat(array)); -assertEquals([[], object], [].concat(object)); -assertEquals([array, object], array.concat(object)); -assertEquals([object, []], Array.prototype.concat.call(object,[])); -assertEquals([object, array], Array.prototype.concat.call(object, array)); -assertEquals([object, object], Array.prototype.concat.call(object, object)); - -concatSpreadable = true; - -assertEquals(array, [].concat(array)); -assertEquals(array, array.concat([])); -assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); -assertEquals([object], [].concat(object)); -assertEquals([1, 2, 3, object], array.concat(object)); -assertEquals([object], Array.prototype.concat.call(object,[])); -assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array)); -assertEquals([object, object], Array.prototype.concat.call(object, object)); - - -delete Array.prototype[Symbol.isConcatSpreadable]; -testConcatDefaults(); diff --git a/implementation-contributed/v8/mjsunit/harmony/array-concat-array-proto.js b/implementation-contributed/v8/mjsunit/harmony/array-concat-array-proto.js deleted file mode 100644 index 520178fdaaa..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-concat-array-proto.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check that @@isConcatSpreadable is checked when set on Object.prototype - -"use strict" - -var array = [1, 2, 3]; -var object = {length: 1, '0': 'a'}; - -function testConcatDefaults() { - assertEquals(array, [].concat(array)); - assertEquals(array, array.concat([])); - assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); - assertEquals([object], [].concat(object)); - assertEquals([1, 2, 3, object], array.concat(object)); - assertEquals([object], Array.prototype.concat.call(object,[])); - assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array)); - assertEquals([object, object], Array.prototype.concat.call(object, object)); -} - -testConcatDefaults(); - -Array.prototype[Symbol.isConcatSpreadable] = false; - -assertEquals([[], array], [].concat(array)); -assertEquals([array, []], array.concat([])); -assertEquals([array, array], array.concat(array)); -assertEquals([[], object], [].concat(object)); -assertEquals([array, object], array.concat(object)); -assertEquals([object, []], Array.prototype.concat.call(object,[])); -assertEquals([object, array], Array.prototype.concat.call(object, array)); -assertEquals([object, object], Array.prototype.concat.call(object, object)); - -Array.prototype[Symbol.isConcatSpreadable] = true; - -assertEquals(array, [].concat(array)); -assertEquals(array, array.concat([])); -assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); -assertEquals([object], [].concat(object)); -assertEquals([1, 2, 3, object], array.concat(object)); -assertEquals([object], Array.prototype.concat.call(object,[])); -assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array)); -assertEquals([object, object], Array.prototype.concat.call(object, object)); - -delete Array.prototype[Symbol.isConcatSpreadable]; -testConcatDefaults(); diff --git a/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-dict-getter.js b/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-dict-getter.js deleted file mode 100644 index 6e615887893..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-dict-getter.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check that @@isConcatSpreadable is checked when set on Object.prototype -// with a dictionary backing store. - -// Force Object.prototype into dictionary backing store by adding many -// properties. -for (var i = 0; i < 10*1000; i++) { - Object.prototype['generatedProperty'+i] = true; -} - -var array = [1, 2, 3]; -var object = {length: 1, '0': 'a'}; - -function testConcatDefaults() { - assertEquals(array, [].concat(array)); - assertEquals(array, array.concat([])); - assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); - assertEquals([object], [].concat(object)); - assertEquals([1, 2, 3, object], array.concat(object)); - assertEquals([object], Array.prototype.concat.call(object,[])); - assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array)); - assertEquals([object, object], Array.prototype.concat.call(object, object)); -} - -testConcatDefaults(); - -var concatSpreadable = false; -Object.defineProperty(Object.prototype, Symbol.isConcatSpreadable, { - get() { return concatSpreadable }, - configurable: true -}); - -assertEquals([[], array], [].concat(array)); -assertEquals([array, []], array.concat([])); -assertEquals([array, array], array.concat(array)); -assertEquals([[], object], [].concat(object)); -assertEquals([array, object], array.concat(object)); -assertEquals([object, []], Array.prototype.concat.call(object,[])); -assertEquals([object, array], Array.prototype.concat.call(object, array)); -assertEquals([object, object], Array.prototype.concat.call(object, object)); - -concatSpreadable = true; - -assertEquals(array, [].concat(array)); -assertEquals(array, array.concat([])); -assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); -assertEquals(['a'], [].concat(object)); -assertEquals([1, 2, 3, 'a'], array.concat(object)); -assertEquals(['a'], Array.prototype.concat.call(object,[])); -assertEquals(['a', 1, 2, 3], Array.prototype.concat.call(object, array)); -assertEquals(['a', 'a'], Array.prototype.concat.call(object, object)); - -delete Object.prototype[Symbol.isConcatSpreadable]; -testConcatDefaults(); diff --git a/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-dict.js b/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-dict.js deleted file mode 100644 index c817006c16c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-dict.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check that @@isConcatSpreadable is checked when set on Object.prototype -// with a dictionary backing store. - -// Force Object.prototype into dictionary backing store by adding many -// properties. -for (var i = 0; i < 10*1000; i++) { - Object.prototype['generatedProperty'+i] = true; -} - -var array = [1, 2, 3]; -var object = {length: 1, '0': 'a'}; - -function testConcatDefaults() { - assertEquals(array, [].concat(array)); - assertEquals(array, array.concat([])); - assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); - assertEquals([object], [].concat(object)); - assertEquals([1, 2, 3, object], array.concat(object)); - assertEquals([object], Array.prototype.concat.call(object,[])); - assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array)); - assertEquals([object, object], Array.prototype.concat.call(object, object)); -} - -testConcatDefaults(); - -Object.prototype[Symbol.isConcatSpreadable] = false; - -assertEquals([[], array], [].concat(array)); -assertEquals([array, []], array.concat([])); -assertEquals([array, array], array.concat(array)); -assertEquals([[], object], [].concat(object)); -assertEquals([array, object], array.concat(object)); -assertEquals([object, []], Array.prototype.concat.call(object,[])); -assertEquals([object, array], Array.prototype.concat.call(object, array)); -assertEquals([object, object], Array.prototype.concat.call(object, object)); - -Object.prototype[Symbol.isConcatSpreadable] = true; - -assertEquals(array, [].concat(array)); -assertEquals(array, array.concat([])); -assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); -assertEquals(['a'], [].concat(object)); -assertEquals([1, 2, 3, 'a'], array.concat(object)); -assertEquals(['a'], Array.prototype.concat.call(object,[])); -assertEquals(['a', 1, 2, 3], Array.prototype.concat.call(object, array)); -assertEquals(['a', 'a'], Array.prototype.concat.call(object, object)); - -delete Object.prototype[Symbol.isConcatSpreadable]; -testConcatDefaults(); diff --git a/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-generic-dict.js b/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-generic-dict.js deleted file mode 100644 index 7b61422a441..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto-generic-dict.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check that @@isConcatSpreadable is checked when set on Object.prototype -// with a dictionary backing store. - -// Force Object.prototype into dictionary backing store by adding many -// properties. -for (var i = 0; i < 10*1000; i++) { - Object.prototype['generatedProperty'+i] = true; -} - -var array = [1, 2, 3]; -var object = {length: 1, '0': 'a'}; - -function SetProperty(receiver, key, value) { - receiver[key] = value; -} - -// Force the Keyed Store IC in SetProperty to be generic. -var receiver = {}; -for (var i = 0; i < 100; i++) { - SetProperty(receiver, 'prop'+i, 'value'); -} - -function testConcatDefaults() { - assertEquals(array, [].concat(array)); - assertEquals(array, array.concat([])); - assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); - assertEquals([object], [].concat(object)); - assertEquals([1, 2, 3, object], array.concat(object)); - assertEquals([object], Array.prototype.concat.call(object,[])); - assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array)); - assertEquals([object, object], Array.prototype.concat.call(object, object)); -} - -testConcatDefaults(); - -// Use a generic IC to set @@isConcatSpreadable -SetProperty(Object.prototype, Symbol.isConcatSpreadable, false); - -assertEquals([[], array], [].concat(array)); -assertEquals([array, []], array.concat([])); -assertEquals([array, array], array.concat(array)); -assertEquals([[], object], [].concat(object)); -assertEquals([array, object], array.concat(object)); -assertEquals([object, []], Array.prototype.concat.call(object,[])); -assertEquals([object, array], Array.prototype.concat.call(object, array)); -assertEquals([object, object], Array.prototype.concat.call(object, object)); - -// Use a generic IC to set @@isConcatSpreadable -SetProperty(Object.prototype, Symbol.isConcatSpreadable, true); - -assertEquals(array, [].concat(array)); -assertEquals(array, array.concat([])); -assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); -assertEquals(['a'], [].concat(object)); -assertEquals([1, 2, 3, 'a'], array.concat(object)); -assertEquals(['a'], Array.prototype.concat.call(object,[])); -assertEquals(['a', 1, 2, 3], Array.prototype.concat.call(object, array)); -assertEquals(['a', 'a'], Array.prototype.concat.call(object, object)); - -delete Object.prototype[Symbol.isConcatSpreadable]; -testConcatDefaults(); diff --git a/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto.js b/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto.js deleted file mode 100644 index 307326cbcd2..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-concat-object-proto.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check that @@isConcatSpreadable is checked when set on Object.prototype - -"use strict" - -var array = [1, 2, 3]; -var object = {length: 1, '0': 'a'}; - -function testConcatDefaults() { - assertEquals(array, [].concat(array)); - assertEquals(array, array.concat([])); - assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); - assertEquals([object], [].concat(object)); - assertEquals([1, 2, 3, object], array.concat(object)); - assertEquals([object], Array.prototype.concat.call(object,[])); - assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array)); - assertEquals([object, object], Array.prototype.concat.call(object, object)); -} - -testConcatDefaults(); - -Object.prototype[Symbol.isConcatSpreadable] = false; - -assertEquals([[], array], [].concat(array)); -assertEquals([array, []], array.concat([])); -assertEquals([array, array], array.concat(array)); -assertEquals([[], object], [].concat(object)); -assertEquals([array, object], array.concat(object)); -assertEquals([object, []], Array.prototype.concat.call(object,[])); -assertEquals([object, array], Array.prototype.concat.call(object, array)); -assertEquals([object, object], Array.prototype.concat.call(object, object)); - -Object.prototype[Symbol.isConcatSpreadable] = true; - -assertEquals(array, [].concat(array)); -assertEquals(array, array.concat([])); -assertEquals([1, 2, 3, 1, 2, 3], array.concat(array)); -assertEquals(['a'], [].concat(object)); -assertEquals([1, 2, 3, 'a'], array.concat(object)); -assertEquals(['a'], Array.prototype.concat.call(object,[])); -assertEquals(['a', 1, 2, 3], Array.prototype.concat.call(object, array)); -assertEquals(['a', 'a'], Array.prototype.concat.call(object, object)); - -delete Object.prototype[Symbol.isConcatSpreadable]; -testConcatDefaults(); diff --git a/implementation-contributed/v8/mjsunit/harmony/array-flat-species.js b/implementation-contributed/v8/mjsunit/harmony/array-flat-species.js deleted file mode 100644 index 7181c10beaf..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-flat-species.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -{ - class MyArray extends Array { - static get [Symbol.species]() { - return Array; - } - } - - const wannabe = new MyArray(); - const flattened = wannabe.flat(Infinity); - assertEquals(false, flattened instanceof MyArray); - assertEquals(true, flattened instanceof Array); -} - -{ - class MyArray extends Array { - static get [Symbol.species]() { - return this; - } - } - - const wannabe = new MyArray(); - const flattened = wannabe.flat(Infinity); - assertEquals(true, flattened instanceof MyArray); - assertEquals(true, flattened instanceof Array); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/array-flat.js b/implementation-contributed/v8/mjsunit/harmony/array-flat.js deleted file mode 100644 index 9a291dc3b09..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-flat.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(Array.prototype.flat.length, 0); -assertEquals(Array.prototype.flat.name, 'flat'); - -{ - const input = [1, [2], [[3]]]; - - assertEquals(input.flat(), [1, 2, [3]]); - assertEquals(input.flat(1), [1, 2, [3]]); - assertEquals(input.flat(true), [1, 2, [3]]); - assertEquals(input.flat(undefined), [1, 2, [3]]); - - assertEquals(input.flat(-Infinity), [1, [2], [[3]]]); - assertEquals(input.flat(-1), [1, [2], [[3]]]); - assertEquals(input.flat(-0), [1, [2], [[3]]]); - assertEquals(input.flat(0), [1, [2], [[3]]]); - assertEquals(input.flat(false), [1, [2], [[3]]]); - assertEquals(input.flat(null), [1, [2], [[3]]]); - assertEquals(input.flat(''), [1, [2], [[3]]]); - assertEquals(input.flat('foo'), [1, [2], [[3]]]); - assertEquals(input.flat(/./), [1, [2], [[3]]]); - assertEquals(input.flat([]), [1, [2], [[3]]]); - assertEquals(input.flat({}), [1, [2], [[3]]]); - assertEquals( - input.flat(new Proxy({}, {})), [1, [2], [[3]]]); - assertEquals(input.flat((x) => x), [1, [2], [[3]]]); - assertEquals( - input.flat(String), [1, [2], [[3]]]); - - assertEquals(input.flat(2), [1, 2, 3]); - assertEquals(input.flat(Infinity), [1, 2, 3]); - - assertThrows(() => { input.flat(Symbol()); }, TypeError); - assertThrows(() => { input.flat(Object.create(null)); }, TypeError); -} - -{ - const input = { 0: 'a', 1: 'b', 2: 'c', length: 'wat' }; - assertEquals(Array.prototype.flat.call(input, Infinity), []); -} - -{ - let count = 0; - const input = { - get length() { ++count; return 0; } - }; - const result = Array.prototype.flat.call(input, Infinity); - assertEquals(count, 1); -} - -{ - const descriptor = Object.getOwnPropertyDescriptor( - Array.prototype, - 'flat' - ); - assertEquals(descriptor.value, Array.prototype.flat); - assertEquals(descriptor.writable, true); - assertEquals(descriptor.enumerable, false); - assertEquals(descriptor.configurable, true); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/array-flatMap-species.js b/implementation-contributed/v8/mjsunit/harmony/array-flatMap-species.js deleted file mode 100644 index 48f9bea2d08..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-flatMap-species.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -{ - class MyArray extends Array { - static get [Symbol.species]() { - return Array; - } - } - - const wannabe = new MyArray(); - const result = wannabe.flatMap(x => [x, x]); - assertEquals(false, result instanceof MyArray); - assertEquals(true, result instanceof Array); -} - -{ - class MyArray extends Array { - static get [Symbol.species]() { - return this; - } - } - - const wannabe = new MyArray(); - const result = wannabe.flatMap(x => [x, x]); - assertEquals(true, result instanceof MyArray); - assertEquals(true, result instanceof Array); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/array-flatMap.js b/implementation-contributed/v8/mjsunit/harmony/array-flatMap.js deleted file mode 100644 index 65a4025603d..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-flatMap.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertEquals(Array.prototype.flatMap.length, 1); -assertEquals(Array.prototype.flatMap.name, 'flatMap'); - -assertEquals( - [1, 2, 3, 4].flatMap((element) => [element, element ** 2]), - [1, 1, 2, 4, 3, 9, 4, 16] -); -assertEquals( - [1, 2, 3, 4].flatMap((element) => [[element, element ** 2]]), - [[1, 1], [2, 4], [3, 9], [4, 16]] -); - -{ - const elements = new Set([ - -Infinity, - -1, - -0, - +0, - +1, - Infinity, - null, - undefined, - true, - false, - '', - 'foo', - /./, - [], - {}, - Object.create(null), - new Proxy({}, {}), - Symbol(), - x => x ** 2, - String - ]); - - for (const value of elements) { - assertEquals( - [value].flatMap((element) => [element, element]), - [value, value] - ); - } -} - -{ - const array = [42]; - assertEquals( - [array].flatMap((element) => [element, element]), - [array, array] - ); -} - -{ - const nonCallables = new Set([ - -Infinity, - -1, - -0, - +0, - +1, - Infinity, - null, - undefined, - true, - false, - '', - 'foo', - /./, - [], - {}, - Object.create(null), - new Proxy({}, {}), - Symbol(), - ]); - for (const nonCallable of nonCallables) { - assertThrows(() => { - [].flatMap(nonCallable); - }, TypeError); - } -} - -{ - const object = { - foo: 42, - get length() { - object.foo = 0; - } - }; - const result = [object].flatMap((element) => [element, element]); - %HeapObjectVerify(result); - assertEquals(result, [object, object]); - assertEquals(result[0].foo, 42); -} - -assertThrows(() => { - Array.prototype.flatMap.call(null, (element) => element); -}, TypeError); -assertThrows(() => { - Array.prototype.flatMap.call(undefined, (element) => element); -}, TypeError); - -assertEquals( - Array.prototype.flatMap.call( - { - length: 1, - 0: 'a', - 1: 'b', - }, - (element) => element - ), - ['a'] -); -assertEquals( - Array.prototype.flatMap.call( - { - length: 2, - 0: 'a', - 1: 'b', - }, - (element) => element - ), - ['a', 'b'] -); - -{ - const result = [1, 2, 3].flatMap(function() { - return [this]; - }, 'abc'); - assertEquals(true, result[0] == 'abc'); - assertEquals(true, result[1] == 'abc'); - assertEquals(true, result[2] == 'abc'); -} - -{ - const input = { 0: 'a', 1: 'b', 2: 'c', length: 'wat' }; - assertEquals(Array.prototype.flatMap.call(input, x => [x]), []); -} - -{ - let count = 0; - const input = { - get length() { ++count; return 0; } - }; - const result = Array.prototype.flatMap.call(input, x => [x]); - assertEquals(count, 1); -} - -{ - const descriptor = Object.getOwnPropertyDescriptor( - Array.prototype, - 'flatMap' - ); - assertEquals(descriptor.value, Array.prototype.flatMap); - assertEquals(descriptor.writable, true); - assertEquals(descriptor.enumerable, false); - assertEquals(descriptor.configurable, true); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/array-sort-comparefn.js b/implementation-contributed/v8/mjsunit/harmony/array-sort-comparefn.js deleted file mode 100644 index 9858c1c434f..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/array-sort-comparefn.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Array.prototype.sort + TypedArray.prototype.sort: comparefn must be either a -// function or undefined. -// https://github.com/tc39/ecma262/pull/785 - -const types = [ - Array, - Int8Array, Uint8Array, - Int16Array, Uint16Array, - Int32Array, Uint32Array, - Uint8ClampedArray, - Float32Array, Float64Array, -]; - -for (const type of types) { - const array = new type(); - array[0] = 1; - array[1] = 2; - array[2] = 3; - - array.sort(); - array.sort(undefined); - array.sort(() => {}); - - assertThrows(() => { array.sort(null); }, TypeError); - assertThrows(() => { array.sort(true); }, TypeError); - assertThrows(() => { array.sort(false); }, TypeError); - assertThrows(() => { array.sort(''); }, TypeError); - assertThrows(() => { array.sort(0); }, TypeError); - assertThrows(() => { array.sort(42); }, TypeError); - assertThrows(() => { array.sort([]); }, TypeError); - assertThrows(() => { array.sort(/./); }, TypeError); - assertThrows(() => { array.sort({}); }, TypeError); - assertThrows(() => { array.sort(Symbol()); }, TypeError); -} - -assertThrows(() => { Array.prototype.sort.call(null, 42); }, TypeError); -try { - Array.prototype.sort.call(null, 42); -} catch (exception) { - assertEquals( - 'The comparison function must be either a function or undefined', - exception.message - ); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/async-await-optimization.js b/implementation-contributed/v8/mjsunit/harmony/async-await-optimization.js deleted file mode 100644 index b24e5419168..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/async-await-optimization.js +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-await-optimization - -// test basic interleaving -(function () { - const actual = []; - const expected = [ 'await', 1, 'await', 2 ]; - const iterations = 2; - - async function pushAwait() { - actual.push('await'); - } - - async function callAsync() { - for (let i = 0; i < iterations; i++) { - await pushAwait(); - } - return 0; - } - - function checkAssertions() { - assertArrayEquals(expected, actual, - 'Async/await and promises should be interleaved.'); - } - - assertPromiseResult((async() => { - callAsync(); - - return new Promise(function (resolve) { - actual.push(1); - resolve(); - }).then(function () { - actual.push(2); - }).then(checkAssertions); - })()); -})(); - -// test async generators -(function () { - const actual = []; - const expected = [ 'await', 1, 'await', 2 ]; - const iterations = 2; - - async function pushAwait() { - actual.push('await'); - } - - async function* callAsync() { - for (let i = 0; i < iterations; i++) { - await pushAwait(); - } - return 0; - } - - function checkAssertions() { - assertArrayEquals(expected, actual, - 'Async/await and promises should be interleaved when using async generators.'); - } - - assertPromiseResult((async() => { - callAsync().next(); - - return new Promise(function (resolve) { - actual.push(1); - resolve(); - }).then(function () { - actual.push(2); - }).then(checkAssertions); - })()); -})(); - -// test yielding from async generators -(function () { - const actual = []; - const expected = [ - 'Promise: 6', - 'Promise: 5', - 'Await: 3', - 'Promise: 4', - 'Promise: 3', - 'Await: 2', - 'Promise: 2', - 'Promise: 1', - 'Await: 1', - 'Promise: 0' - ]; - const iterations = 3; - - async function* naturalNumbers(start) { - let current = start; - while (current > 0) { - yield Promise.resolve(current--); - } - } - - async function trigger() { - for await (const num of naturalNumbers(iterations)) { - actual.push('Await: ' + num); - } - } - - async function checkAssertions() { - assertArrayEquals(expected, actual, - 'Async/await and promises should be interleaved when yielding.'); - } - - async function countdown(counter) { - actual.push('Promise: ' + counter); - if (counter > 0) { - return Promise.resolve(counter - 1).then(countdown); - } else { - await checkAssertions(); - } - } - - assertPromiseResult((async() => { - trigger(); - - return countdown(iterations * 2); - })()); -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/async-for-of-non-iterable.js b/implementation-contributed/v8/mjsunit/harmony/async-for-of-non-iterable.js deleted file mode 100644 index 3394ed394ca..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/async-for-of-non-iterable.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var done = false; - -async function f() { - try { - for await ([a] of {}) { - UNREACHABLE(); - } - UNREACHABLE(); - } catch (e) { - assertEquals(e.message, "{} is not async iterable"); - done = true; - } -} - -f(); -assertTrue(done); diff --git a/implementation-contributed/v8/mjsunit/harmony/async-from-sync-iterator.js b/implementation-contributed/v8/mjsunit/harmony/async-from-sync-iterator.js deleted file mode 100644 index e9dfe5d3224..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/async-from-sync-iterator.js +++ /dev/null @@ -1,765 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let testFailed = false; -let testFailure; - -function assertThrowsAsync(run, errorType, message) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - "Expected " + run.toString() + - " to return a Promise, but it returned " + PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (!hadError) { - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but did not throw."); - } - if (!(actual instanceof errorType)) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but threw '" + actual + "'"); - if (message !== void 0 && actual.message !== message) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw '" + message + "', but threw '" + - actual.message + "'"); -}; - -function resolveLater(value) { - return new Promise(function(resolve) { - Promise.resolve().then(function() { - resolve(value); - }); - }); -} - -function rejectLater(value) { - return new Promise(function(resolve, reject) { - Promise.resolve().then(function() { - reject(value); - }); - }); -} - -const kNext = 1; -const kThrow = 2; -const kReturn = 4; -const kNextThrows = kNext | 8; -const kReturnThrows = kReturn | 16; -const kThrowNormal = kThrow | 32; -const kNextUnchanged = kNext | 64; -const kReturnUnchanged = kReturn | 128; -const kThrowUnchanged = kThrow | 256; -function sync(array, features, log) { - // `log` is a required parameter - if (log === void 0) %AbortJS("`log` is undefined"); - - let i = 0; - let methods = { - next(sent) { - let done = i >= array.length; - let value = array[i]; - log.push({ method: "next", sent, value, done }); - if ((features & kNextThrows) === kNextThrows) throw sent; - if ((features & kNextUnchanged) === kNextUnchanged) return sent; - i++; - return { value, done }; - }, - throw(sent) { - let done = i >= array.length; - log.push({ method: "throw", sent, done }); - if ((features & kThrowNormal) === kThrowNormal) - return { value: sent, done }; - if ((features & kThrowUnchanged) === kThrowUnchanged) return sent; - throw sent; - }, - return(sent) { - let done = true; - log.push({ method: "return", sent, done }); - if ((features & kReturnThrows) === kReturnThrows) throw sent; - if ((features & kReturnUnchanged) === kReturnUnchanged) return sent; - return { value: sent, done }; - } - }; - return { - [Symbol.iterator]() { return this; }, - next: (features & kNext) ? methods.next : undefined, - throw: (features & kThrow) ? methods.throw : undefined, - return: (features & kReturn) ? methods.return : undefined - }; -} - -class MyError extends Error {}; - -(async function AsyncFromSyncWithGenerator() { - function* gen() { - yield "sync value"; - try { - yield new Promise(function(resolve) { - resolve("async value"); - }); - } catch (error) { - throw error; - } - assertUnreachable("generator is closed"); - } - let iter = %CreateAsyncFromSyncIterator(gen()); - - // [Async-from-Sync Iterator] wraps sync iterator values in a Promise - let promise = iter.next(); - assertInstanceof(promise, Promise); - let iter_result = await promise; - assertEquals({ value: "sync value", done: false }, iter_result); - - // [Async-from-Sync Iterator] will wait for resolution of Promise values - promise = iter.next(); - assertInstanceof(promise, Promise); - iter_result = await promise; - assertEquals({ value: "async value", done: false }, iter_result); - - // [Async-from-Sync Iterator].throw delegates to .throw() method of sync - // iterator. - promise = iter.throw(new MyError("Error#1")); - assertInstanceof(promise, Promise); - try { - await promise; - assertUnreachable("promise should be rejected"); - } catch (e) { - // If assertUnreachable failed, rethrow - if (e instanceof MjsUnitAssertionError) throw e; - assertInstanceof(e, MyError); - assertEquals("Error#1", e.message); - } - - // Generator is closed, subsequent calls to .next() will not resume. - promise = iter.next("floof"); - iter_result = await promise; - assertEquals({ value: undefined, done: true }, iter_result); - - promise = iter.return("generator closed"); - assertInstanceof(promise, Promise); - iter_result = await promise; - assertEquals({ value: "generator closed", done: true }, iter_result); - - // .next(), .return() and .throw() delegate to sync iterator methods, without - // keeping track of the state of the generator. - promise = iter.next("unused"); - assertInstanceof(promise, Promise); - iter_result = await promise; - assertEquals({ value: undefined, done: true }, iter_result); - - promise = iter.throw(new MyError("Error#2")); - assertInstanceof(promise, Promise); - try { - await promise; - assertUnreachable("promise should be rejected"); - } catch (e) { - // If assertUnreachable failed, rethrow - if (e instanceof MjsUnitAssertionError) throw e; - assertInstanceof(e, MyError); - assertEquals("Error#2", e.message); - } - - promise = iter.return("return-after-completed"); - assertInstanceof(promise, Promise); - iter_result = await promise; - assertEquals({ value: "return-after-completed", done: true }, iter_result); -})().catch(function(error) { - testFailed = true; - testFailure = error; -}); - -%PerformMicrotaskCheckpoint(); -if (testFailed) { - throw testFailure; -} - - -(async function AsyncFromSyncOrderOfOperations() { - let log = []; - iter = %CreateAsyncFromSyncIterator(sync(["sync-value"], 0, log)); - - try { - await iter.next(); - assertUnreachable("Iterator.next() method is not optional"); - } catch (e) { - assertInstanceof(e, TypeError); - assertEquals([], log); - } - - log = []; - iter = %CreateAsyncFromSyncIterator(sync(["sync-value"], kNext, log)); - assertEquals({ value: "sync-value", done: false }, await iter.next("a")); - assertEquals([ - { - method: "next", - sent: "a", - value: "sync-value", - done: false - } - ], log); - - log = []; - let asyncValue = resolveLater("async-value"); - iter = %CreateAsyncFromSyncIterator(sync([asyncValue], kNext, log)); - assertEquals({ value: "async-value", done: false }, await iter.next("b")); - assertEquals([ - { - method: "next", - sent: "b", - value: asyncValue, - done: false - } - ], log); - - // If [sync_iterator].next() produces a rejected Promise or an exception is - // thrown, Promise is rejected with thrown/rejected value. - log = []; - asyncValue = rejectLater("Boo!"); - iter = %CreateAsyncFromSyncIterator(sync([asyncValue], kNext, log)); - try { - await iter.next('c'); - assertUnreachable('Expected `iter.next(\'c\') to throw, but did not throw'); - } catch (e) { - assertEquals("Boo!", e); - assertEquals([ - { - method: 'next', - sent: 'c', - value: asyncValue, - done: false - } - ], log); - } - - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-value'], kNextThrows, log)); - try { - await iter.next('Boo!'); - assertUnreachable('Expected `iter.next(\'c\') to throw, but did not throw'); - } catch (e) { - assertEquals("Boo!", e); - assertEquals([ - { - method: 'next', - sent: 'Boo!', - value: 'sync-value', - done: false - } - ], log); - } - - - // [Async-from-Sync Iterator].next() will be rejected with a TypeError if - // Type([sync_iterator].next()) is not Object. - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-value'], kNextUnchanged, - log)); - try { - await iter.next('not-a-JSReceiver'); - assertUnreachable('Expected `iter.next(\'not-a-JSReceiver\')` to ' + - 'throw, but did not throw') - } catch (e) { - assertEquals(e.constructor, TypeError); - } - - assertEquals([ - { - method: 'next', - sent: 'not-a-JSReceiver', - value: 'sync-value', - done: false - } - ], log); - - // If [sync_iterator] does not have a .return() method, return a Promise - // resolved with the value `{ value: <>, done: true }`. - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-return'], kNext, log)); - assertEquals({ - value: 'd', - done: true - }, await iter.return('d')); - - // [Async-from-Sync Iterator] merely delegates, and does not keep track of - // whether [sync_iterator] is completed or not. - assertEquals({ - value: 'sync-return', - done: false - }, await iter.next('e')); - - assertEquals([ - { - method: 'next', - sent: 'e', - value: 'sync-return', - done: false - } - ], log); - - // If [sync_iterator] does have a .return() method, return a Promise - // fulfilled with the iterator result of [sync_iterator].return(). - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-return'], - kNext|kReturn, log)); - assertEquals({ - value: 'f', - done: true - }, await iter.return('f')); - - // [Async-from-Sync Iterator] merely delegates, and does not keep track of - // whether [sync_iterator] is completed or not. - assertEquals({ - value: 'sync-return', - done: false - }, await iter.next('g')); - - assertEquals([ - { - method: 'return', - sent: 'f', - done: true - }, - { - method: 'next', - sent: 'g', - value: 'sync-return', - done: false - } - ], log); - - // If [sync_iterator].return() produces a rejected Promise or an exception is - // thrown, Promise is rejected with thrown/rejected value. - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-value'], kNext|kReturnThrows, - log)); - try { - await iter.return('Boo!!'); - assertUnreachable('Expected `iter.return(\'Boo!!\')` to throw, but did ' + - 'not throw'); - } catch (e) { - assertEquals("Boo!!", e); - } - - // [Async-from-Sync Iterator] merely delegates, and does not keep track of - // whether [sync_iterator] is completed or not. - assertEquals({ value: 'sync-value', done: false }, await iter.next('h')); - assertEquals([ - { - method: 'return', - sent: 'Boo!!', - done: true - }, - { - method: 'next', - sent: 'h', - value: 'sync-value', - done: false - } - ], log); - - - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-value'], kNext|kReturn, log)); - - let rejection = Promise.reject('Boo!!'); - try { - await iter.return(rejection); - assertUnreachable('Expected `iter.return(Promise.reject(\'Boo!!\'))` to ' + - 'throw, but did not throw'); - } catch (e) { - assertEquals('Boo!!', e); - } - - // [Async-from-Sync Iterator] merely delegates, and does not keep track of - // whether [sync_iterator] is completed or not. - assertEquals({ value: 'sync-value', done: false }, await iter.next('i')); - assertEquals([ - { - method: 'return', - sent: rejection, - done: true - }, - { - method: 'next', - sent: 'i', - value: 'sync-value', - done: false - } - ], log); - - // [Async-from-Sync Iterator].return() will be rejected with a TypeError if - // Type([sync_iterator].return()) is not Object. - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-value'], - kNext|kReturnUnchanged, log)); - try { - await iter.return('not-a-JSReceiver'); - assertUnreachable('Expected `iter.return(\'not-a-JSReceiver\')` to ' + - 'throw, but did not throw') - } catch (e) { - assertEquals(e.constructor, TypeError); - } - - // [Async-from-Sync Iterator] merely delegates, and does not keep track of - // whether [sync_iterator] is completed or not. - assertEquals({ value: 'sync-value', done: false }, await iter.next('j')); - assertEquals([ - { - method: 'return', - sent: 'not-a-JSReceiver', - done: true - }, - { - method: 'next', - sent: 'j', - value: 'sync-value', - done: false - } - ], log); - - // If [sync_iterator] does not have a .throw method, return a Promise rejected - // with the sent value. - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-value'], kNext, log)); - try { - await iter.throw('Boo!!'); - assertUnreachable('Expected iter.throw(\'Boo!!\') to throw, but did not ' + - 'throw'); - } catch (e) { - assertEquals('Boo!!', e); - } - - // [Async-from-Sync Iterator] merely delegates, and does not keep track of - // whether [sync_iterator] is completed or not. - assertEquals({ value: 'sync-value', done: false }, await iter.next('k')); - assertEquals([ - { - method: 'next', - sent: 'k', - value: 'sync-value', - done: false - } - ], log); - - - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-value'], kNext|kThrow, log)); - try { - await iter.throw('Boo!!'); - assertUnreachable('Expected iter.throw(\'Boo!!\') to throw, but did not ' + - 'throw'); - } catch (e) { - assertEquals('Boo!!', e); - } - - // [Async-from-Sync Iterator] merely delegates, and does not keep track of - // whether [sync_iterator] is completed or not. - assertEquals({ value: 'sync-value', done: false }, await iter.next('l')); - assertEquals([ - { - method: 'throw', - sent: 'Boo!!', - done: false - }, - { - method: 'next', - sent: 'l', - value: 'sync-value', - done: false - } - ], log); - - // If [sync_iterator].throw() returns a resolved Promise or a Completion - // with [[Type]] "normal" or "return", return a resolved Promise - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-value'], kNext|kThrowNormal, - log)); - assertEquals({ - value: 'Boo!!', - done: false - }, await iter.throw('Boo!!')); - - // [Async-from-Sync Iterator] merely delegates, and does not keep track of - // whether [sync_iterator] is completed or not. - assertEquals({ value: 'sync-value', done: false }, await iter.next('m')); - assertEquals([ - { - method: 'throw', - sent: 'Boo!!', - done: false - }, - { - method: 'next', - sent: 'm', - value: 'sync-value', - done: false - } - ], log); - - // [Async-from-Sync Iterator].throw() will be rejected with a TypeError if - // Type([sync_iterator].throw()) is not Object. - log = []; - iter = %CreateAsyncFromSyncIterator(sync(['sync-value'], - kNext|kThrowUnchanged, log)); - try { - await iter.throw('not-a-JSReceiver'); - assertUnreachable('Expected `iter.throw(\'not-a-JSReceiver\')` to ' + - 'throw, but did not throw') - } catch (e) { - assertEquals(e.constructor, TypeError); - } - - // [Async-from-Sync Iterator] merely delegates, and does not keep track of - // whether [sync_iterator] is completed or not. - assertEquals({ value: 'sync-value', done: false }, await iter.next('n')); - assertEquals([ - { - method: 'throw', - sent: 'not-a-JSReceiver', - done: false - }, - { - method: 'next', - sent: 'n', - value: 'sync-value', - done: false - } - ], log); - - // Let nextValue be IteratorValue(nextResult). - // IfAbruptRejectPromise(nextValue, promiseCapability).) - iter = %CreateAsyncFromSyncIterator({ - next() { return { get value() { throw "BadValue!" }, done: false }; } - }); - try { - await iter.next(); - assertUnreachable('Expected `iter.next()` to throw, but did not throw'); - } catch (e) { - assertEquals('BadValue!', e); - } - - // Let nextDone be IteratorComplete(nextResult). - // IfAbruptRejectPromise(nextDone, promiseCapability). - iter = %CreateAsyncFromSyncIterator({ - next() { return { value: undefined, get done() { throw "BadValue!" } }; } - }); - try { - await iter.next(); - assertUnreachable('Expected `iter.next()` to throw, but did not throw'); - } catch (e) { - assertEquals('BadValue!', e); - } - - // IfAbruptRejectPromise(returnResult, promiseCapability). - // Let returnValue be IteratorValue(returnResult). - iter = %CreateAsyncFromSyncIterator({ - return() { return { get value() { throw "BadValue!" }, done: false }; } - }); - try { - await iter.return(); - assertUnreachable('Expected `iter.return()` to throw, but did not throw'); - } catch (e) { - assertEquals('BadValue!', e); - } - - // IfAbruptRejectPromise(returnValue, promiseCapability). - // Let returnDone be IteratorComplete(returnResult). - iter = %CreateAsyncFromSyncIterator({ - return() { return { value: undefined, get done() { throw "BadValue!" } }; } - }); - try { - await iter.return(); - assertUnreachable('Expected `iter.return()` to throw, but did not throw'); - } catch (e) { - assertEquals('BadValue!', e); - } - - // IfAbruptRejectPromise(throwResult, promiseCapability). - // Let throwValue be IteratorValue(throwResult). - iter = %CreateAsyncFromSyncIterator({ - throw() { return { get value() { throw "BadValue!" }, done: false }; } - }); - try { - await iter.throw(); - assertUnreachable('Expected `iter.throw()` to throw, but did not throw'); - } catch (e) { - assertEquals('BadValue!', e); - } - - // IfAbruptRejectPromise(throwValue, promiseCapability). - // Let throwDone be IteratorComplete(throwResult). - iter = %CreateAsyncFromSyncIterator({ - throw() { return { value: undefined, get done() { throw "BadValue!" } }; } - }); - try { - await iter.throw(); - assertUnreachable('Expected `iter.throw()` to throw, but did not throw'); - } catch (e) { - assertEquals('BadValue!', e); - } -})().catch(function(error) { - testFailed = true; - testFailure = error; -}); - -%PerformMicrotaskCheckpoint(); -if (testFailed) { - throw testFailure; -} - -(function ExtractedAsyncFromSyncIteratorMethods() { - // TODO(ishell, caitp): Rewrite the test without using function.caller. - // According to ES#sec-built-in-function-objects all built-in functions - // must be strict. And ES#sec-forbidden-extensions states that the value of - // a function.caller must not be a strict function. - return; - // Async-from-Sync iterator methods can be extracted via function.caller. - // TODO(caitp): test extracted `throw` method using yield* in async generator. - let extractor = [0, 1, 2, 3, 4,5,6,7,8,9]; - let extractedNext; - let extractedReturn; - - extractor[Symbol.iterator] = function() { - let it = [][Symbol.iterator].call(extractor); - let origNext = it.next, origThrow = it.throw, origReturn = it.return; - function extractNext() { - extractedNext = extractNext.caller; - return origNext; - } - function extractReturn() { - extractedReturn = extractReturn.caller; - return origReturn; - } - Object.defineProperties(it, { - "next": { get: extractNext, configurable: true }, - "return": { get: extractReturn, configurable: true } - }); - return it; - }; - - async function f() { - let i; - let it = extractor[Symbol.iterator](); - for await (let x of it) break; - for await (let x of it) return "x"; - } - - // Cycle through `f` to extract iterator methods - f().catch(function() { %AbortJS("No error should have occurred"); }); - %PerformMicrotaskCheckpoint(); - - assertEquals(typeof extractedNext, "function"); - assertThrowsAsync(() => extractedNext.call(undefined), TypeError); - assertThrowsAsync(() => extractedNext.call(1), TypeError); - - assertEquals(typeof extractedReturn, "function"); - assertThrowsAsync(() => extractedReturn.call(undefined), TypeError); - assertThrowsAsync(() => extractedReturn.call(1), TypeError); -})(); - -(function AsyncFromSyncIteratorOrdering() { - let i = 0; - let log = []; - function r(value, done) { - let number = (++i); - return { - get value() { - log.push("get iterResult #" + number + ".value"); - return { - get then() { - log.push("get nextValue#" + number + ".then"); - return (r) => { - log.push("call nextValue#" + number + ".then"); - r(value); - } - } - }; - }, - get done() { - log.push("get iterResult #" + number + ".done"); - return done; - } - }; - } - var results = [r("value1", false), r("value2", false), r("value3", true), - r("value4", false)]; - - var iter = { - get [Symbol.asyncIterator]() { - log.push("get syncIterable[@@asyncIterator]"); - return null; - }, - - get [Symbol.iterator]() { - log.push("get syncIterable[@@iterator]"); - return (...args) => { - log.push("call syncIterable[@@iterator](" + args.join(", ") + ")"); - return this; - } - }, - next_: 0, - get next() { - log.push("get syncIterable.next"); - return (...args) => { - let i = this.next_++; - log.push("call syncIterable.next(" + args.join(", ") + ")"); - return results[i]; - } - } - }; - - async function iterate(iterable) { - log.push("before"); - for await (let x of iterable) { - log.push("got value " + x); - } - log.push("after"); - - return log; - } - - iterate(iter).then(log => { - assertEquals([ - "before", - "get syncIterable[@@asyncIterator]", - "get syncIterable[@@iterator]", - "call syncIterable[@@iterator]()", - "get syncIterable.next", - "call syncIterable.next()", - "get iterResult #1.done", - "get iterResult #1.value", - "get nextValue#1.then", - "call nextValue#1.then", - "got value value1", - "call syncIterable.next()", - "get iterResult #2.done", - "get iterResult #2.value", - "get nextValue#2.then", - "call nextValue#2.then", - "got value value2", - "call syncIterable.next()", - "get iterResult #3.done", - "get iterResult #3.value", - "get nextValue#3.then", - "call nextValue#3.then", - "after" - ], log) - }).catch(x => %AbortJS(String(x))); -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/async-generators-basic.js b/implementation-contributed/v8/mjsunit/harmony/async-generators-basic.js deleted file mode 100644 index 5ff7d25eea6..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/async-generators-basic.js +++ /dev/null @@ -1,1753 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertThrowsAsync(run, errorType, message) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - `Expected ${run.toString()} to return a Promise, but it returned ` + - PrettyPrint(promise)); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (!hadError) { - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but did not throw."); - } - if (!(actual instanceof errorType)) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw " + errorType.name + - ", but threw '" + actual + "'"); - if (message !== void 0 && actual.message !== message) - throw new MjsUnitAssertionError( - "Expected " + run + "() to throw '" + message + "', but threw '" + - actual.message + "'"); -}; - -function assertEqualsAsync(expected, run, msg) { - var actual; - var hadValue = false; - var hadError = false; - var promise = run(); - - if (typeof promise !== "object" || typeof promise.then !== "function") { - throw new MjsUnitAssertionError( - `Expected ${run.toString()} to return a Promise, but it returned ` + - `${promise}`); - } - - promise.then(function(value) { hadValue = true; actual = value; }, - function(error) { hadError = true; actual = error; }); - - assertFalse(hadValue || hadError); - - %PerformMicrotaskCheckpoint(); - - if (hadError) throw actual; - - assertTrue( - hadValue, "Expected '" + run.toString() + "' to produce a value"); - - assertEquals(expected, actual, msg); -}; - -class MyError extends Error {}; -function Thrower(msg) { throw new MyError(msg); } -function Rejecter(msg) { - return new Promise(function(resolve, reject) { - Promise.resolve().then(function() { - reject(new MyError(msg)); - }); - }); -} -function Resolver(msg) { - return new Promise(function(resolve, reject) { - Promise.resolve().then(function() { - resolve(msg); - }); - }); -} - -async function ForAwaitOfValues(it) { - let array = []; - for await (let x of it) array.push(x); - return array; -} - -let log = []; -function logIterResult(iter_result) { - log.push(iter_result); -} -function logError(error) { - log.push(error); -} - -function AbortUnreachable() { - %AbortJS("This code should not be reachable."); -} - -// ---------------------------------------------------------------------------- -// Do not install `AsyncGeneratorFunction` constructor on global object -assertEquals(undefined, this.AsyncGeneratorFunction); - -// ---------------------------------------------------------------------------- -let AsyncGenerator = Object.getPrototypeOf(async function*() {}); -let AsyncGeneratorPrototype = AsyncGenerator.prototype; - -// %AsyncGenerator% and %AsyncGeneratorPrototype% are both ordinary objects -assertEquals("object", typeof AsyncGenerator); -assertEquals("object", typeof AsyncGeneratorPrototype); - -// %AsyncGenerator% <---> %AsyncGeneratorPrototype% circular reference -assertEquals(AsyncGenerator, AsyncGeneratorPrototype.constructor); -assertEquals(AsyncGeneratorPrototype, AsyncGenerator.prototype); - -let protoDesc = Object.getOwnPropertyDescriptor(AsyncGenerator, 'prototype'); -assertFalse(protoDesc.enumerable); -assertFalse(protoDesc.writable); -assertTrue(protoDesc.configurable); - -let ctorDesc = - Object.getOwnPropertyDescriptor(AsyncGeneratorPrototype, 'constructor'); -assertFalse(ctorDesc.enumerable); -assertFalse(ctorDesc.writable); -assertTrue(ctorDesc.configurable); - -// ---------------------------------------------------------------------------- -// The AsyncGeneratorFunction Constructor is the %AsyncGeneratorFunction% -// intrinsic object and is a subclass of Function. -// (proposal-async-iteration/#sec-asyncgeneratorfunction-constructor) -let AsyncGeneratorFunction = AsyncGenerator.constructor; -assertEquals(Object.getPrototypeOf(AsyncGeneratorFunction), Function); -assertEquals(Object.getPrototypeOf(AsyncGeneratorFunction.prototype), - Function.prototype); -assertTrue(async function*() {} instanceof Function); - -// ---------------------------------------------------------------------------- -// Let functionPrototype be the intrinsic object %AsyncGeneratorPrototype%. -async function* asyncGeneratorForProto() {} -assertEquals(AsyncGeneratorFunction.prototype, - Object.getPrototypeOf(asyncGeneratorForProto)); -assertEquals(AsyncGeneratorFunction.prototype, - Object.getPrototypeOf(async function*() {})); -assertEquals(AsyncGeneratorFunction.prototype, - Object.getPrototypeOf({ async* method() {} }.method)); -assertEquals(AsyncGeneratorFunction.prototype, - Object.getPrototypeOf(AsyncGeneratorFunction())); -assertEquals(AsyncGeneratorFunction.prototype, - Object.getPrototypeOf(new AsyncGeneratorFunction())); - -// ---------------------------------------------------------------------------- -// AsyncGeneratorFunctionCreate produces a function whose prototype property is -// derived from %AsyncGeneratorPrototype% -assertEquals(AsyncGeneratorFunction.prototype.prototype, - Object.getPrototypeOf(asyncGeneratorForProto.prototype)); -assertTrue(asyncGeneratorForProto.hasOwnProperty("prototype")); -assertEquals(AsyncGeneratorFunction.prototype.prototype, - Object.getPrototypeOf((async function*() {}).prototype)); -assertTrue((async function*() {}).hasOwnProperty("prototype")); -assertEquals(AsyncGeneratorFunction.prototype.prototype, - Object.getPrototypeOf(({ async* method() {} }).method.prototype)); -assertTrue(({ async* method() {} }).method.hasOwnProperty("prototype")); -assertEquals(AsyncGeneratorFunction.prototype.prototype, - Object.getPrototypeOf(AsyncGeneratorFunction().prototype)); -assertTrue(AsyncGeneratorFunction().hasOwnProperty("prototype")); -assertEquals(AsyncGeneratorFunction.prototype.prototype, - Object.getPrototypeOf(new AsyncGeneratorFunction().prototype)); -assertTrue(new AsyncGeneratorFunction().hasOwnProperty("prototype")); - -// ---------------------------------------------------------------------------- -// Basic Function.prototype.toString() -async function* asyncGeneratorForToString() {} -assertEquals("async function* asyncGeneratorForToString() {}", - asyncGeneratorForToString.toString()); - -assertEquals("async function*() {}", async function*() {}.toString()); -assertEquals("async function* namedAsyncGeneratorForToString() {}", - async function* namedAsyncGeneratorForToString() {}.toString()); - -assertEquals("async *method() { }", - ({ async *method() { } }).method.toString()); -assertEquals("async *method() { }", - (class { static async *method() { } }).method.toString()); -assertEquals("async *method() { }", - (new (class { async *method() { } })).method.toString()); - -assertEquals("async function* anonymous(\n) {\n\n}", - AsyncGeneratorFunction().toString()); -assertEquals("async function* anonymous(\n) {\n\n}", - (new AsyncGeneratorFunction()).toString()); - -// ---------------------------------------------------------------------------- -// AsyncGenerator functions syntactically allow AwaitExpressions -assertEquals(1, async function*(a) { await 1; }.length); -assertEquals(2, async function*(a, b) { await 1; }.length); -assertEquals(1, async function*(a, b = 2) { await 1; }.length); -assertEquals(2, async function*(a, b, ...c) { await 1; }.length); - -assertEquals(1, ({ async* f(a) { await 1; } }).f.length); -assertEquals(2, ({ async* f(a, b) { await 1; } }).f.length); -assertEquals(1, ({ async* f(a, b = 2) { await 1; } }).f.length); -assertEquals(2, ({ async* f(a, b, ...c) { await 1; } }).f.length); - -assertEquals(1, AsyncGeneratorFunction("a", "await 1").length); -assertEquals(2, AsyncGeneratorFunction("a", "b", "await 1").length); -assertEquals(1, AsyncGeneratorFunction("a", "b = 2", "await 1").length); -assertEquals(2, AsyncGeneratorFunction("a", "b", "...c", "await 1").length); - -assertEquals(1, (new AsyncGeneratorFunction("a", "await 1")).length); -assertEquals(2, (new AsyncGeneratorFunction("a", "b", "await 1")).length); -assertEquals(1, (new AsyncGeneratorFunction("a", "b = 2", "await 1")).length); -assertEquals(2, - (new AsyncGeneratorFunction("a", "b", "...c", "await 1")).length); - -// ---------------------------------------------------------------------------- -// AsyncGenerator functions syntactically allow YieldExpressions -assertEquals(1, async function*(a) { yield 1; }.length); -assertEquals(2, async function*(a, b) { yield 1; }.length); -assertEquals(1, async function*(a, b = 2) { yield 1; }.length); -assertEquals(2, async function*(a, b, ...c) { yield 1; }.length); - -assertEquals(1, ({ async* f(a) { yield 1; } }).f.length); -assertEquals(2, ({ async* f(a, b) { yield 1; } }).f.length); -assertEquals(1, ({ async* f(a, b = 2) { yield 1; } }).f.length); -assertEquals(2, ({ async* f(a, b, ...c) { yield 1; } }).f.length); - -assertEquals(1, AsyncGeneratorFunction("a", "yield 1").length); -assertEquals(2, AsyncGeneratorFunction("a", "b", "yield 1").length); -assertEquals(1, AsyncGeneratorFunction("a", "b = 2", "yield 1").length); -assertEquals(2, AsyncGeneratorFunction("a", "b", "...c", "yield 1").length); - -assertEquals(1, (new AsyncGeneratorFunction("a", "yield 1")).length); -assertEquals(2, (new AsyncGeneratorFunction("a", "b", "yield 1")).length); -assertEquals(1, (new AsyncGeneratorFunction("a", "b = 2", "yield 1")).length); -assertEquals(2, - (new AsyncGeneratorFunction("a", "b", "...c", "yield 1")).length); - -// ---------------------------------------------------------------------------- -// AsyncGeneratorFunction.prototype[ @@toStringTag ] -var descriptor = - Object.getOwnPropertyDescriptor(AsyncGeneratorFunction.prototype, - Symbol.toStringTag); -assertEquals("AsyncGeneratorFunction", descriptor.value); -assertEquals(false, descriptor.enumerable); -assertEquals(false, descriptor.writable); -assertEquals(true, descriptor.configurable); - -assertEquals(1, AsyncGeneratorFunction.length); - -// ---------------------------------------------------------------------------- -// Let F be ! FunctionAllocate(functionPrototype, Strict, "non-constructor") -async function* asyncNonConstructorDecl() {} -assertThrows(() => new asyncNonConstructorDecl(), TypeError); -assertThrows(() => asyncNonConstructorDecl.caller, TypeError); -assertThrows(() => asyncNonConstructorDecl.arguments, TypeError); - -assertThrows(() => new (async function*() {}), TypeError); -assertThrows(() => (async function*() {}).caller, TypeError); -assertThrows(() => (async function*() {}).arguments, TypeError); - -assertThrows( - () => new ({ async* nonConstructor() {} }).nonConstructor(), TypeError); -assertThrows( - () => ({ async* nonConstructor() {} }).nonConstructor.caller, TypeError); -assertThrows( - () => ({ async* nonConstructor() {} }).nonConstructor.arguments, TypeError); - -assertThrows( - () => new (AsyncGeneratorFunction("nonconstructor"))(), TypeError); -assertThrows( - () => AsyncGeneratorFunction("nonconstructor").caller, TypeError); -assertThrows( - () => AsyncGeneratorFunction("nonconstructor").arguments, TypeError); - -assertThrows( - () => new (new AsyncGeneratorFunction("nonconstructor"))(), TypeError); -assertThrows( - () => (new AsyncGeneratorFunction("nonconstructor")).caller, TypeError); -assertThrows( - () => (new AsyncGeneratorFunction("nonconstructor")).arguments, TypeError); - -// ---------------------------------------------------------------------------- -// Empty functions -async function* emptyAsyncGenerator() {} -let it = emptyAsyncGenerator(); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function* emptyAsyncGeneratorExpr() { })(); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ async* method() { } }).method(); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = AsyncGeneratorFunction(``)(); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (new AsyncGeneratorFunction(``))(); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - - -// ---------------------------------------------------------------------------- -// Top-level ReturnStatement -async function* asyncGeneratorForReturn() { - return "boop1"; - throw "(unreachble)"; -} -it = asyncGeneratorForReturn(); -assertEqualsAsync({ value: "boop1", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - return "boop2"; - throw "(unreachable)"; -})(); -assertEqualsAsync({ value: "boop2", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ async* method() { return "boop3"; throw "(unreachable)"; } }).method(); -assertEqualsAsync({ value: "boop3", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = AsyncGeneratorFunction(` - return "boop4"; - throw "(unreachable)";`)(); -assertEqualsAsync({ value: "boop4", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (new AsyncGeneratorFunction(` - return "boop5"; - throw "(unreachable)";`))(); -assertEqualsAsync({ value: "boop5", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Top-level ReturnStatement after await -async function* asyncGeneratorForReturnAfterAwait() { - await 1; - return "boop6"; - throw "(unreachable)"; -} -it = asyncGeneratorForReturnAfterAwait(); -assertEqualsAsync({ value: "boop6", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { await 1; return "boop7"; throw "(unreachable)"; })(); -assertEqualsAsync({ value: "boop7", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - await 1; - return "boop8"; - throw "(unreachable)"; - } -}).method(); -assertEqualsAsync({ value: "boop8", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = AsyncGeneratorFunction(` - await 1; - return "boop9"; - throw "(unreachable)"`)(); -assertEqualsAsync({ value: "boop9", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (new AsyncGeneratorFunction(` - await 1; - return "boop10"; - throw "(unreachable)"`))(); -assertEqualsAsync({ value: "boop10", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Top-level Yields - -async function* asyncGeneratorForYields() { - yield 1; - yield await Resolver(2); - yield Resolver(3); - return 4; - throw "(unreachable)"; -} - -it = asyncGeneratorForYields(); -assertEqualsAsync([1, 2, 3], () => ForAwaitOfValues(it)); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - yield "cow"; - yield await Resolver("bird"); - yield await "dog"; - yield Resolver("donkey"); - return "badger"; - throw "(unreachable)"; })(); -assertEqualsAsync(["cow", "bird", "dog", "donkey"], () => ForAwaitOfValues(it)); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - yield "A"; - yield await Resolver("B"); - yield await "C"; - yield Resolver("CC"); - return "D"; - throw "(unreachable)"; - } -}).method(); -assertEqualsAsync(["A", "B", "C", "CC"], () => ForAwaitOfValues(it)); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = AsyncGeneratorFunction(` - yield "alpha"; - yield await Resolver("beta"); - yield await "gamma"; - yield Resolver("delta"); - return "epsilon"; - throw "(unreachable)"`)(); -assertEqualsAsync(["alpha", "beta", "gamma", "delta"], - () => ForAwaitOfValues(it)); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (new AsyncGeneratorFunction(` - yield "α"; - yield await Resolver("β"); - yield await "γ"; - yield Resolver("δ"); - return "ε"; - throw "(unreachable)"`))(); -assertEqualsAsync(["α", "β", "γ", "δ"], () => ForAwaitOfValues(it)); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Nested Resume via [AsyncGenerator].next() -log = []; -async function* asyncGeneratorForNestedResumeNext() { - it.next().then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield "rootbeer"; - yield await Resolver("float"); -} -it = asyncGeneratorForNestedResumeNext(); -it.next().then(logIterResult, AbortUnreachable); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: "rootbeer", done: false }, - { value: "float", done: false }, - { value: undefined, done: true } -], log); - -log = []; -let asyncGeneratorExprForNestedResumeNext = async function*() { - it.next().then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield "first"; - yield await Resolver("second"); -}; -it = asyncGeneratorExprForNestedResumeNext(); -it.next().then(logIterResult, AbortUnreachable); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: "first", done: false }, - { value: "second", done: false }, - { value: undefined, done: true } -], log); - -log = []; -let asyncGeneratorMethodForNestedResumeNext = ({ - async* method() { - it.next().then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield "remember"; - yield await Resolver("the cant!"); - } -}).method; -it = asyncGeneratorMethodForNestedResumeNext(); -it.next().then(logIterResult, AbortUnreachable); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: "remember", done: false }, - { value: "the cant!", done: false }, - { value: undefined, done: true } -], log); - -log = []; -let asyncGeneratorCallEvalForNestedResumeNext = - AsyncGeneratorFunction(` - it.next().then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield "reading"; - yield await Resolver("rainbow!");`); -it = asyncGeneratorCallEvalForNestedResumeNext(); -it.next().then(logIterResult, AbortUnreachable); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: "reading", done: false }, - { value: "rainbow!", done: false }, - { value: undefined, done: true } -], log); - -log = []; -let asyncGeneratorNewEvalForNestedResumeNext = - new AsyncGeneratorFunction(` - it.next().then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield 731; - yield await Resolver("BB!");`); -it = asyncGeneratorNewEvalForNestedResumeNext(); -it.next().then(logIterResult, AbortUnreachable); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: 731, done: false }, - { value: "BB!", done: false }, - { value: undefined, done: true } -], log); - -// ---------------------------------------------------------------------------- -// Nested Resume via [AsyncGenerator].throw() -log = []; -async function* asyncGeneratorForNestedResumeThrow() { - try { - it.throw(await Rejecter("...")).then(logIterResult, logError); - } catch (e) { - it.throw("throw2").then(logIterResult, logError); - it.next().then(logIterResult, logError); - throw "throw1"; - } - AbortUnreachable(); -} -it = asyncGeneratorForNestedResumeThrow(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - "throw1", - "throw2", - { value: undefined, done: true } -], log); - -log = []; -let asyncGeneratorExprForNestedResumeThrow = async function*() { - try { - it.throw(await Rejecter("...")).then(logIterResult, logError); - } catch (e) { - it.throw("throw4").then(logIterResult, logError); - it.next().then(logIterResult, logError); - throw "throw3"; - } - AbortUnreachable(); -}; -it = asyncGeneratorExprForNestedResumeThrow(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - "throw3", - "throw4", - { value: undefined, done: true } -], log); - -log = []; -let asyncGeneratorMethodForNestedResumeThrow = ({ - async* method() { - try { - it.throw(await Rejecter("...")).then(logIterResult, logError); - } catch (e) { - it.throw("throw6").then(logIterResult, logError); - it.next().then(logIterResult, logError); - throw "throw5"; - } - AbortUnreachable(); - } -}).method; -it = asyncGeneratorMethodForNestedResumeThrow(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - "throw5", - "throw6", - { value: undefined, done: true } -], log); - -log = []; -let asyncGeneratorCallEvalForNestedResumeThrow = - AsyncGeneratorFunction(` - try { - it.throw(await Rejecter("...")).then(logIterResult, logError); - } catch (e) { - it.throw("throw8").then(logIterResult, logError); - it.next().then(logIterResult, logError); - throw "throw7"; - } - AbortUnreachable();`); -it = asyncGeneratorCallEvalForNestedResumeThrow(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - "throw7", - "throw8", - { value: undefined, done: true } -], log); - -log = []; -let asyncGeneratorNewEvalForNestedResumeThrow = - new AsyncGeneratorFunction(` - try { - it.throw(await Rejecter("...")).then(logIterResult, logError); - } catch (e) { - it.throw("throw10").then(logIterResult, logError); - it.next().then(logIterResult, logError); - throw "throw9"; - } - AbortUnreachable();`); -it = asyncGeneratorNewEvalForNestedResumeThrow(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - "throw9", - "throw10", - { value: undefined, done: true } -], log); - -// ---------------------------------------------------------------------------- -// Nested Resume via [AsyncGenerator].return() -log = []; -async function* asyncGeneratorForNestedResumeReturn() { - it.return("step2").then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield "step1"; - AbortUnreachable(); -} -it = asyncGeneratorForNestedResumeReturn(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: "step1", done: false }, - { value: "step2", done: true }, - { value: undefined, done: true }, -], log); - -log = []; -let asyncGeneratorExprForNestedResumeReturn = async function*() { - it.return("step4").then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield "step3"; -}; -it = asyncGeneratorExprForNestedResumeReturn(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: "step3", done: false }, - { value: "step4", done: true }, - { value: undefined, done: true }, -], log); - -log = []; -let asyncGeneratorMethodForNestedResumeReturn = ({ - async* method() { - it.return("step6").then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield "step5"; - } -}).method; -it = asyncGeneratorMethodForNestedResumeReturn(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: "step5", done: false }, - { value: "step6", done: true }, - { value: undefined, done: true }, -], log); - -log = []; -let asyncGeneratorCallEvalForNestedResumeReturn = - AsyncGeneratorFunction(` - it.return("step8").then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield "step7";`); -it = asyncGeneratorCallEvalForNestedResumeReturn(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: "step7", done: false }, - { value: "step8", done: true }, - { value: undefined, done: true }, -], log); - -log = []; -let asyncGeneratorNewEvalForNestedResumeReturn = - new AsyncGeneratorFunction(` - it.return("step10").then(logIterResult, logError); - it.next().then(logIterResult, logError); - yield "step9";`); -it = asyncGeneratorNewEvalForNestedResumeReturn(); -it.next().then(logIterResult, logError); -%PerformMicrotaskCheckpoint(); -assertEquals([ - { value: "step9", done: false }, - { value: "step10", done: true }, - { value: undefined, done: true }, -], log); - -// ---------------------------------------------------------------------------- -// Top-level Yield ThrowStatement - -async function* asyncGeneratorForYieldThrow() { - yield await Thrower("OOPS1"); - throw "(unreachable)"; -} -it = asyncGeneratorForYieldThrow(); -assertThrowsAsync(() => it.next(), MyError, "OOPS1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { yield Thrower("OOPS2"); throw "(unreachable)"; })(); -assertThrowsAsync(() => it.next(), MyError, "OOPS2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - yield Thrower("OOPS3"); - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "OOPS3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = AsyncGeneratorFunction(` - yield Thrower("OOPS4"); - throw "(unreachable)"`)(); -assertThrowsAsync(() => it.next(), MyError, "OOPS4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (new AsyncGeneratorFunction(` - yield Thrower("OOPS5"); - throw "(unreachable)"`))(); -assertThrowsAsync(() => it.next(), MyError, "OOPS5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Top-level Yield Awaited Rejection -async function* asyncGeneratorForYieldAwaitedRejection() { - yield await Rejecter("OOPS1"); - throw "(unreachable)"; -} -it = asyncGeneratorForYieldAwaitedRejection(); -assertThrowsAsync(() => it.next(), MyError, "OOPS1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - yield await Rejecter("OOPS2"); - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "OOPS2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - yield await Rejecter("OOPS3"); - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "OOPS3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = AsyncGeneratorFunction(` - yield await Rejecter("OOPS4"); - throw "(unreachable)"`)(); -assertThrowsAsync(() => it.next(), MyError, "OOPS4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (new AsyncGeneratorFunction(` - yield await Rejecter("OOPS5"); - throw "(unreachable)"`))(); -assertThrowsAsync(() => it.next(), MyError, "OOPS5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - - -// ---------------------------------------------------------------------------- -// Top-level ThrowStatement -async function* asyncGeneratorForThrow() { - throw new MyError("BOOM1"); - throw "(unreachable)"; -} -it = asyncGeneratorForThrow(); -assertThrowsAsync(() => it.next(), MyError, "BOOM1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - throw new MyError("BOOM2"); - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "BOOM2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - throw new MyError("BOOM3"); - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "BOOM3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - throw new MyError("BOOM4"); - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - throw new MyError("BOOM5"); - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Top-level ThrowStatement after Await -async function* asyncGeneratorForThrowAfterAwait() { - await 1; - throw new MyError("BOOM6"); - throw "(unreachable)"; -} -it = asyncGeneratorForThrowAfterAwait(); -assertThrowsAsync(() => it.next(), MyError, "BOOM6"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - await 1; - throw new MyError("BOOM7"); - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "BOOM7"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - await 1; - throw new MyError("BOOM8"); - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "BOOM8"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - await 1; - throw new MyError("BOOM9"); - throw "(unreachable)";`))(); -assertThrowsAsync(() => it.next(), MyError, "BOOM9"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (new AsyncGeneratorFunction(` - await 1; - throw new MyError("BOOM10"); - throw "(unreachable)";`))(); -assertThrowsAsync(() => it.next(), MyError, "BOOM10"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Top-level Awaited rejection -async function* asyncGeneratorForAwaitedRejection() { - await Rejecter("BOOM11"); - throw "(unreachable)"; -} -it = asyncGeneratorForAwaitedRejection(); -assertThrowsAsync(() => it.next(), MyError, "BOOM11"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - await Rejecter("BOOM12"); - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "BOOM12"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - await Rejecter("BOOM13"); - throw "(unreachable)"; - } -}).method(); - -assertThrowsAsync(() => it.next(), MyError, "BOOM13"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - await Rejecter("BOOM14"); - throw "(unreachable)";`))(); -assertThrowsAsync(() => it.next(), MyError, "BOOM14"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (new AsyncGeneratorFunction(` - await Rejecter("BOOM15"); - throw "(unreachable)";`))(); -assertThrowsAsync(() => it.next(), MyError, "BOOM15"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Caught ThrowStatement -async function* asyncGeneratorForCaughtThrow() { - try { - throw new MyError("BOOM1"); - } catch (e) { - return "caught1"; - } - throw "(unreachable)"; -} -it = asyncGeneratorForCaughtThrow(); -assertEqualsAsync({ value: "caught1", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - throw new MyError("BOOM2"); - } catch (e) { - return "caught2"; - } - throw "(unreachable)"; -})(); -assertEqualsAsync({ value: "caught2", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - throw new MyError("BOOM3"); - } catch (e) { - return "caught3"; - } - throw "(unreachable)"; - } -}).method(); -assertEqualsAsync({ value: "caught3", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("BOOM4"); - } catch (e) { - return "caught4"; - } - throw "(unreachable)";`))() -assertEqualsAsync({ value: "caught4", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("BOOM5"); - } catch (e) { - return "caught5"; - } - throw "(unreachable)";`))() -assertEqualsAsync({ value: "caught5", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Caught ThrowStatement and rethrow -async function* asyncGeneratorForCaughtRethrow() { - try { - throw new MyError("BOOM1"); - } catch (e) { - throw new MyError("RETHROW1"); - } - throw "(unreachable)"; -} -it = asyncGeneratorForCaughtRethrow(); -assertThrowsAsync(() => it.next(), MyError, "RETHROW1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - throw new MyError("BOOM2"); - } catch (e) { - throw new MyError("RETHROW2"); - } - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "RETHROW2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - throw new MyError("BOOM3"); - } catch (e) { - throw new MyError("RETHROW3"); - } - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "RETHROW3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("BOOM4"); - } catch (e) { - throw new MyError("RETHROW4"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "RETHROW4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("BOOM5"); - } catch (e) { - throw new MyError("RETHROW5"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "RETHROW5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// ReturnStatement in Try, ReturnStatement in Finally -async function* asyncGeneratorForReturnInTryReturnInFinally() { - try { - return "early1" - } finally { - return "later1"; - } - throw "(unreachable)"; -} -it = asyncGeneratorForReturnInTryReturnInFinally(); -assertEqualsAsync({ value: "later1", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - return "early2"; - } finally { - return "later2"; - } - throw "(unreachable)"; -})(); -assertEqualsAsync({ value: "later2", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - return "early3"; - } finally { - return "later3"; - } - throw "(unreachable)"; - } -}).method(); -assertEqualsAsync({ value: "later3", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - return "early4"; - } finally { - return "later4"; - } - throw "(unreachable)";`))() -assertEqualsAsync({ value: "later4", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - return "early5"; - } finally { - return "later5"; - } - throw "(unreachable)";`))() -assertEqualsAsync({ value: "later5", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// ThrowStatement in Try, ReturnStatement in Finally -async function* asyncGeneratorForThrowInTryReturnInFinally() { - try { - throw new MyError("BOOM1"); - } finally { - return "later1"; - } - throw "(unreachable)"; -} -it = asyncGeneratorForThrowInTryReturnInFinally(); -assertEqualsAsync({ value: "later1", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - throw new MyError("BOOM2"); - } finally { - return "later2"; - } - throw "(unreachable)"; -})(); -assertEqualsAsync({ value: "later2", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - throw new MyError("BOOM3"); - } finally { - return "later3"; - } - throw "(unreachable)"; - } -}).method(); -assertEqualsAsync({ value: "later3", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("BOOM4"); - } finally { - return "later4"; - } - throw "(unreachable)";`))() -assertEqualsAsync({ value: "later4", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("BOOM5"); - } finally { - return "later5"; - } - throw "(unreachable)";`))() -assertEqualsAsync({ value: "later5", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Awaited Rejection in Try, ReturnStatement in Finally -async function* asyncGeneratorForAwaitRejectionInTryReturnInFinally() { - try { - await Rejecter("BOOM1"); - } finally { - return "later1"; - } - throw "(unreachable)"; -} -it = asyncGeneratorForThrowInTryReturnInFinally(); -assertEqualsAsync({ value: "later1", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - await Rejecter("BOOM2"); - } finally { - return "later2"; - } - throw "(unreachable)"; -})(); -assertEqualsAsync({ value: "later2", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - await Rejecter("BOOM3"); - } finally { - return "later3"; - } - throw "(unreachable)"; - } -}).method(); -assertEqualsAsync({ value: "later3", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - await Rejecter("BOOM4"); - } finally { - return "later4"; - } - throw "(unreachable)";`))() -assertEqualsAsync({ value: "later4", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - await Rejecter("BOOM5"); - } finally { - return "later5"; - } - throw "(unreachable)";`))() -assertEqualsAsync({ value: "later5", done: true }, () => it.next()); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// ReturnStatement in Try, ThrowStatement in Finally -async function* asyncGeneratorForReturnInTryThrowInFinally() { - try { - return "early1" - } finally { - throw new MyError("BOOM1"); - } - throw "(unreachable)"; -} -it = asyncGeneratorForReturnInTryThrowInFinally(); -assertThrowsAsync(() => it.next(), MyError, "BOOM1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - return "early2"; - } finally { - throw new MyError("BOOM2"); - } - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "BOOM2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - return "early3"; - } finally { - throw new MyError("BOOM3"); - } - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "BOOM3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - return "early4"; - } finally { - throw new MyError("BOOM4"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - return "early5"; - } finally { - throw new MyError("BOOM5"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// ThrowStatement in Try, ThrowStatement in Finally - -async function* asyncGeneratorForThrowInTryThrowInFinally() { - try { - throw new MyError("EARLY1"); - } finally { - throw new MyError("BOOM1"); - } - throw "(unreachable)"; -} -it = asyncGeneratorForThrowInTryThrowInFinally(); -assertThrowsAsync(() => it.next(), MyError, "BOOM1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - throw new MyError("EARLY2"); - } finally { - throw new MyError("BOOM2"); - } - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "BOOM2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - throw new MyError("EARLY3"); - } finally { - throw new MyError("BOOM3"); - } - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "BOOM3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("EARLY4"); - } finally { - throw new MyError("BOOM4"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("EARLY5"); - } finally { - throw new MyError("BOOM5"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Awaited Rejection in Try, ThrowStatement in Finally - -async function* asyncGeneratorForAwaitedRejectInTryThrowInFinally() { - try { - await Rejecter("EARLY1"); - } finally { - throw new MyError("BOOM1"); - } - throw "(unreachable)"; -} -it = asyncGeneratorForAwaitedRejectInTryThrowInFinally(); -assertThrowsAsync(() => it.next(), MyError, "BOOM1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - await Rejecter("EARLY2"); - } finally { - throw new MyError("BOOM2"); - } - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "BOOM2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - await Rejecter("EARLY3"); - } finally { - throw new MyError("BOOM3"); - } - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "BOOM3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - await Rejecter("EARLY4"); - } finally { - throw new MyError("BOOM4"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - await Rejecter("EARLY5"); - } finally { - throw new MyError("BOOM5"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// ReturnStatement in Try, Awaited Rejection in Finally -async function* asyncGeneratorForReturnInTryAwaitedRejectionInFinally() { - try { - return "early1" - } finally { - await Rejecter("BOOM1"); - } - throw "(unreachable)"; -} -it = asyncGeneratorForReturnInTryAwaitedRejectionInFinally(); -assertThrowsAsync(() => it.next(), MyError, "BOOM1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - return "early2"; - } finally { - await Rejecter("BOOM2"); - } - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "BOOM2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - return "early3"; - } finally { - await Rejecter("BOOM3"); - } - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "BOOM3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - return "early4"; - } finally { - await Rejecter("BOOM4"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - return "early5"; - } finally { - await Rejecter("BOOM5"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// ThrowStatement in Try, Awaited Rejection in Finally - -async function* asyncGeneratorForThrowInTryAwaitedRejectionInFinally() { - try { - throw new MyError("EARLY1"); - } finally { - await Rejecter("BOOM1"); - } - throw "(unreachable)"; -} -it = asyncGeneratorForThrowInTryAwaitedRejectionInFinally(); -assertThrowsAsync(() => it.next(), MyError, "BOOM1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - throw new MyError("EARLY2"); - } finally { - await Rejecter("BOOM2"); - } - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "BOOM2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - throw new MyError("EARLY3"); - } finally { - await Rejecter("BOOM3"); - } - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "BOOM3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("EARLY4"); - } finally { - await Rejecter("BOOM4"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - throw new MyError("EARLY5"); - } finally { - await Rejecter("BOOM5"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Awaited Rejection in Try, Awaited Rejection in Finally - -async function* asyncGeneratorForAwaitedRejectInTryAwaitedRejectionInFinally() { - try { - await Rejecter("EARLY1"); - } finally { - await Rejecter("BOOM1"); - } - throw "(unreachable)"; -} -it = asyncGeneratorForAwaitedRejectInTryAwaitedRejectionInFinally(); -assertThrowsAsync(() => it.next(), MyError, "BOOM1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (async function*() { - try { - await Rejecter("EARLY2"); - } finally { - await Rejecter("BOOM2"); - } - throw "(unreachable)"; -})(); -assertThrowsAsync(() => it.next(), MyError, "BOOM2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = ({ - async* method() { - try { - await Rejecter("EARLY3"); - } finally { - await Rejecter("BOOM3"); - } - throw "(unreachable)"; - } -}).method(); -assertThrowsAsync(() => it.next(), MyError, "BOOM3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - await Rejecter("EARLY4"); - } finally { - await Rejecter("BOOM4"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -it = (AsyncGeneratorFunction(` - try { - await Rejecter("EARLY5"); - } finally { - await Rejecter("BOOM5"); - } - throw "(unreachable)";`))() -assertThrowsAsync(() => it.next(), MyError, "BOOM5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); - -// ---------------------------------------------------------------------------- -// Early errors during parameter initialization - -async function* asyncGeneratorForParameterInitializationErrors( - [...a], b = c, d) { - AbortUnreachable(); -} -assertThrows(() => asyncGeneratorForParameterInitializationErrors(null), - TypeError); -assertThrows(() => asyncGeneratorForParameterInitializationErrors([]), - ReferenceError); - -let asyncGeneratorExprForParameterInitializationErrors = - async function*([...a], b = c, d) { - AbortUnreachable(); - }; -assertThrows(() => asyncGeneratorExprForParameterInitializationErrors(null), - TypeError); -assertThrows(() => asyncGeneratorExprForParameterInitializationErrors([]), - ReferenceError); - -let asyncGeneratorMethodForParameterInitializationErrors = ({ - async* method([...a], b = c, d) { - AbortUnreachable(); - } -}).method; -assertThrows(() => asyncGeneratorMethodForParameterInitializationErrors(null), - TypeError); -assertThrows(() => asyncGeneratorMethodForParameterInitializationErrors([]), - ReferenceError); - -let asyncGeneratorCallEvalForParameterInitializationErrors = - AsyncGeneratorFunction("[...a], b = c, d", `AbortUnreachable();`); -assertThrows(() => asyncGeneratorCallEvalForParameterInitializationErrors(null), - TypeError); -assertThrows(() => asyncGeneratorCallEvalForParameterInitializationErrors([]), - ReferenceError); - -let asyncGeneratorNewEvalForParameterInitializationErrors = - new AsyncGeneratorFunction("[...a], b = c, d", - `AbortUnreachable();`); -assertThrows(() => asyncGeneratorNewEvalForParameterInitializationErrors(null), - TypeError); -assertThrows(() => asyncGeneratorNewEvalForParameterInitializationErrors([]), - ReferenceError); - -// ---------------------------------------------------------------------------- -// Invoke [AsyncGenerator].return() when generator is in state suspendedStart - -async function* asyncGeneratorForReturnSuspendedStart() { - AbortUnreachable(); -} -it = asyncGeneratorForReturnSuspendedStart(); -assertEqualsAsync({ value: "ret1", done: true }, () => it.return("ret1")); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -it = (async function*() { - AbortUnreachable(); -})(); -assertEqualsAsync({ value: "ret2", done: true }, () => it.return("ret2")); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -it = ({ - async* method() { - AbortUnreachable(); - } -}).method(); -assertEqualsAsync({ value: "ret3", done: true }, () => it.return("ret3")); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -it = (AsyncGeneratorFunction(`AbortUnreachable();`))(); -assertEqualsAsync({ value: "ret4", done: true }, () => it.return("ret4")); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -it = (AsyncGeneratorFunction(`AbortUnreachable();`))(); -assertEqualsAsync({ value: "ret5", done: true }, () => it.return("ret5")); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -// ---------------------------------------------------------------------------- -// Invoke [AsyncGenerator].throw() when generator is in state suspendedStart - -async function* asyncGeneratorForThrowSuspendedStart() { - AbortUnreachable(); -} -it = asyncGeneratorForReturnSuspendedStart(); -assertThrowsAsync(() => it.throw(new MyError("throw1")), MyError, "throw1"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -it = (async function*() { - AbortUnreachable(); -})(); -assertThrowsAsync(() => it.throw(new MyError("throw2")), MyError, "throw2"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -it = ({ - async* method() { - AbortUnreachable(); - } -}).method(); -assertThrowsAsync(() => it.throw(new MyError("throw3")), MyError, "throw3"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -it = (AsyncGeneratorFunction(`AbortUnreachable()`))(); -assertThrowsAsync(() => it.throw(new MyError("throw4")), MyError, "throw4"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -it = (AsyncGeneratorFunction(`AbortUnreachable();`))(); -assertThrowsAsync(() => it.throw(new MyError("throw5")), MyError, "throw5"); -assertEqualsAsync({ value: undefined, done: true }, () => it.next("x")); -assertEqualsAsync({ value: "nores", done: true }, - () => it.return("nores")); -assertThrowsAsync(() => it.throw(new MyError("nores")), MyError, "nores"); - -// ---------------------------------------------------------------------------- -// Simple yield*: - -log = []; -async function* asyncGeneratorYieldStar1() { - yield* { - get [Symbol.asyncIterator]() { - log.push({ name: "get @@asyncIterator" }); - return (...args) => { - log.push({ name: "call @@asyncIterator", args }); - return this; - }; - }, - get [Symbol.iterator]() { - log.push({ name: "get @@iterator" }); - return (...args) => { - log.push({ name: "call @@iterator", args }); - return this; - } - }, - get next() { - log.push({ name: "get next" }); - return (...args) => { - log.push({ name: "call next", args }); - return { - get then() { - log.push({ name: "get then" }); - return null; - }, - get value() { - log.push({ name: "get value" }); - throw (exception = new MyError("AbruptValue!")); - }, - get done() { - log.push({ name: "get done" }); - return false; - } - }; - } - }, - get return() { - log.push({ name: "get return" }); - return (...args) => { - log.push({ name: "call return", args }); - return { value: args[0], done: true }; - } - }, - get throw() { - log.push({ name: "get throw" }); - return (...args) => { - log.push({ name: "call throw", args }); - throw args[0]; - }; - }, - }; -} - -it = asyncGeneratorYieldStar1(); -assertThrowsAsync(() => it.next(), MyError); -assertEquals([ - { name: "get @@asyncIterator" }, - { name: "call @@asyncIterator", args: [] }, - { name: "get next" }, - { name: "call next", args: [undefined] }, - { name: "get then" }, - { name: "get done" }, - { name: "get value" }, -], log); -assertEqualsAsync({ value: undefined, done: true }, () => it.next()); diff --git a/implementation-contributed/v8/mjsunit/harmony/async-generators-resume-return.js b/implementation-contributed/v8/mjsunit/harmony/async-generators-resume-return.js deleted file mode 100644 index 2c6973e646b..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/async-generators-resume-return.js +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -load('test/mjsunit/test-async.js'); - -// .return() from state suspendedStart with undefined -testAsync(test => { - test.plan(3); - - async function* gen() { - test.unreachable(); - } - - let didResolvePromise = false; - let g = gen(); - g.return(undefined).then( - (iterResult) => { - test.equals(true, didResolvePromise); - test.equals({ value: undefined, done: true }, iterResult); - }, - test.unexpectedRejection()); - - g.next().then( - (iterResult) => { - test.equals({ value: undefined, done: true }, iterResult); - }, - test.unexpectedRejection()); - - // Race: generator request's promise should resolve after this Promise. - Promise.resolve("already-resolved").then( - _ => { didResolvePromise = true }, - test.unexpectedRejection()); - -}, "AsyncGenerator.return(undefined) / suspendStart"); - -// .return() from state suspendedStart with thenable -testAsync(test => { - test.plan(3); - - async function* gen() { - test.unreachable(); - } - - let didResolvePromise = false; - let g = gen(); - - let resolve; - let awaitedThenable = { then(resolveFn) { resolve = resolveFn; } }; - - g.return(awaitedThenable).then( - (iterResult) => { - test.equals(true, didResolvePromise); - test.equals({ value: "resolvedPromise", done: true }, iterResult); - }, - test.unexpectedRejection()); - - g.next().then( - (iterResult) => { - test.equals({ value: undefined, done: true }, iterResult); - }, - test.unexpectedRejection()); - - test.drainMicrotasks(); - resolve("resolvedPromise"); - - // Race: generator request's promise should resolve after this Promise. - Promise.resolve("already-resolved").then( - _ => { didResolvePromise = true }, - test.unexpectedRejection()); - -}, "AsyncGenerator.return(thenable) / suspendStart"); - -// .return() from state suspendedYield with undefined -testAsync(test => { - test.plan(4); - - async function* gen() { - yield; - test.unreachable(); - } - - let didResolvePromise = false; - let g = gen(); - g.next().then( - (iterResult) => { - test.equals({ value: undefined, done: false }, iterResult); - }, - test.unexpectedRejection()); - g.return(undefined).then( - (iterResult) => { - test.equals(true, didResolvePromise); - test.equals({ value: undefined, done: true }, iterResult); - }, - test.unexpectedRejection()); - g.next().then( - (iterResult) => { - test.equals({ value: undefined, done: true }, iterResult); - }, - test.unexpectedRejection()); - - // Race: generator request's promise should resolve after this Promise. - Promise.resolve("already-resolved").then( - _ => { didResolvePromise = true }, - test.unexpectedRejection()); - -}, "AsyncGenerator.return(undefined) / suspendedYield"); - -// .return() from state suspendedYield with thenable -testAsync(test => { - test.plan(4); - - async function* gen() { - yield; - test.unreachable(); - } - - let didResolvePromise = false; - let g = gen(); - - let resolve; - let awaitedThenable = { then(resolveFn) { resolve = resolveFn; } }; - - g.next().then( - (iterResult) => { - test.equals({ value: undefined, done: false }, iterResult); - }, - test.unexpectedRejection()); - g.return(awaitedThenable).then( - (iterResult) => { - test.equals(true, didResolvePromise); - test.equals({ value: "resolvedPromise", done: true }, iterResult); - }, - test.unexpectedRejection()); - - g.next().then( - (iterResult) => { - test.equals({ value: undefined, done: true }, iterResult); - }, - test.unexpectedRejection()); - - test.drainMicrotasks(); - resolve("resolvedPromise"); - - // Race: generator request's promise should resolve after this Promise. - Promise.resolve("already-resolved").then( - _ => { didResolvePromise = true }, - test.unexpectedRejection()); - -}, "AsyncGenerator.return(thenable) / suspendYield"); diff --git a/implementation-contributed/v8/mjsunit/harmony/async-generators-return.js b/implementation-contributed/v8/mjsunit/harmony/async-generators-return.js deleted file mode 100644 index 45f359fd54c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/async-generators-return.js +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -load('test/mjsunit/test-async.js'); - -testAsync(test => { - test.plan(2); - - async function* gen() { - return; - test.unreachable(); - } - - let didResolvePromise = false; - gen().next().then( - (iterResult) => { - test.equals(false, didResolvePromise); - test.equals({ value: undefined, done: true }, iterResult); - }, - test.unexpectedRejection()); - - // Race: generator request's promise should resolve before this Promise. - Promise.resolve("already-resolved").then( - _ => { didResolvePromise = true }, - test.unexpectedRejection()); - -}, "return-race-no-operand"); - -testAsync(test => { - test.plan(2); - - async function* gen() { - return undefined; - test.unreachable(); - } - - let didResolvePromise = false; - gen().next().then( - (iterResult) => { - test.equals(true, didResolvePromise); - test.equals({ value: undefined, done: true }, iterResult); - }, - test.unexpectedRejection()); - - // Race: generator request's promise should resolve after this Promise. - Promise.resolve("already-resolved").then( - _ => { didResolvePromise = true }, - test.unexpectedRejection()); - -}, "return-race-with-operand"); - -// Return a thenable which is never settled -testAsync(test => { - test.plan(0); - - let promise = { then() { } }; - - async function* gen() { - return promise; - test.unreachable(); - } - - gen().next().then( - (iterResult) => test.unreachable(), - test.unexpectedRejection()); -}, "return-await-thenable-pending"); - -// Return a thenable which is fulfilled later -testAsync(test => { - test.plan(3); - - let resolve; - let awaitedThenable = { then(resolveFn) { resolve = resolveFn; } }; - let finallyEvaluated = false; - - async function* gen() { - try { - return awaitedThenable; - } finally { - finallyEvaluated = true; - } - } - - gen().next().then( - (iterResult) => { - test.equals("resolvedPromise", iterResult.value); - test.equals(true, iterResult.done); - test.equals(true, finallyEvaluated); - }, - test.unexpectedRejection()); - - test.drainMicrotasks(); - resolve("resolvedPromise"); -}, "yield-await-thenable-resolved"); - -// Return a thenable which is rejected later -testAsync(test => { - test.plan(2); - - let reject; - let awaitedThenable = { then(resolveFn, rejectFn) { reject = rejectFn; } }; - async function* gen() { - try { - yield awaitedThenable; - } catch (e) { - test.equals("rejection", e); - return e; - } - } - - gen().next().then( - (iterResult) => { - test.equals({ value: "rejection", done: true }, iterResult); - }, - test.unexpectedRejection()); - - test.drainMicrotasks(); - reject("rejection"); -}, "yield-await-thenable-rejected"); diff --git a/implementation-contributed/v8/mjsunit/harmony/async-generators-yield.js b/implementation-contributed/v8/mjsunit/harmony/async-generators-yield.js deleted file mode 100644 index b34f6b8050a..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/async-generators-yield.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -load('test/mjsunit/test-async.js'); - -// Yield a thenable which is never settled -testAsync(test => { - test.plan(0); - - let awaitedThenable = { then() { } }; - - async function* gen() { - yield awaitedThenable; - test.unreachable(); - } - - gen().next().then( - (iterResult) => test.unreachable(), - test.unexpectedRejection()); -}, "yield-await-thenable-pending"); - -// Yield a thenable which is fulfilled later -testAsync(test => { - test.plan(1); - - let resolve; - let awaitedThenable = { then(resolveFn) { resolve = resolveFn; } }; - - async function* gen() { - let input = yield awaitedThenable; - test.equals("resolvedPromise", input); - } - - gen().next().then( - (iterResult) => { - test.equals({ value: "resolvedPromise", done: false }, iterResult); - }, - test.unexpectedRejection()); - - test.drainMicrotasks(); - resolve("resolvedPromise"); -}, "yield-await-thenable-resolved"); - -// Yield a thenable which is rejected later -testAsync(test => { - test.plan(2); - - let reject; - let awaitedThenable = { then(resolveFn, rejectFn) { reject = rejectFn; } }; - async function* gen() { - try { - yield awaitedThenable; - } catch (e) { - test.equals("rejection", e); - return e; - } - } - - gen().next().then( - (iterResult) => { - test.equals({ value: "rejection", done: true }, iterResult); - }, - test.unexpectedRejection()); - - test.drainMicrotasks(); - reject("rejection"); -}, "yield-await-thenable-rejected"); diff --git a/implementation-contributed/v8/mjsunit/harmony/atomics-notify.js b/implementation-contributed/v8/mjsunit/harmony/atomics-notify.js deleted file mode 100644 index cf18321786e..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/atomics-notify.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax --harmony-sharedarraybuffer - -// This test needs to be killed if we remove Atomics.wake. -assertNotSame(Atomics.wake, Atomics.notify); diff --git a/implementation-contributed/v8/mjsunit/harmony/atomics-value-check.js b/implementation-contributed/v8/mjsunit/harmony/atomics-value-check.js deleted file mode 100644 index 053bc6dfc54..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/atomics-value-check.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer -// - -var sab = new SharedArrayBuffer(4); -var sta = new Int8Array(sab); -sta[0] = 5; -var workerScript = - `onmessage=function(msg) { - postMessage(0); - };`; -var worker = new Worker(workerScript, {type: 'string'}); - -var value_obj = { - valueOf: function() {worker.postMessage({sab:sab}, [sta.buffer]); - return 5} -} -var value = Object.create(value_obj); - -assertThrows(function() {Atomics.exchange(sta, 0, value)}); -assertThrows(function() {Atomics.compareExchange(sta, 0, 5, value)}); -assertThrows(function() {Atomics.compareExchange(sta, 0, value, 5)}); -assertThrows(function() {Atomics.add(sta, 0, value)}); -assertThrows(function() {Atomics.sub(sta, 0, value)}); -assertThrows(function() {Atomics.and(sta, 0, value)}); -assertThrows(function() {Atomics.or(sta, 0, value)}); -assertThrows(function() {Atomics.xor(sta, 0, value)}); - -var index_obj = { - valueOf: function() {worker.postMessage({sab:sab}, [sta.buffer]); - return 0} -} -var index = Object.create(index_obj); - -assertThrows(function() {Atomics.exchange(sta, index, 1)}); -assertThrows(function() {Atomics.compareExchange(sta, index, 5, 2)}); -assertThrows(function() {Atomics.add(sta, index, 3)}); -assertThrows(function() {Atomics.sub(sta, index, 4)}); -assertThrows(function() {Atomics.and(sta, index, 5)}); -assertThrows(function() {Atomics.or(sta, index, 6)}); -assertThrows(function() {Atomics.xor(sta, index, 7)}); diff --git a/implementation-contributed/v8/mjsunit/harmony/atomics.js b/implementation-contributed/v8/mjsunit/harmony/atomics.js deleted file mode 100644 index ef900761032..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/atomics.js +++ /dev/null @@ -1,597 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer -// - -function toRangeWrapped(value) { - var range = this.max - this.min + 1; - while (value < this.min) { - value += range; - } - while (value > this.max) { - value -= range; - } - return value; -} - -function makeConstructorObject(constr, min, max, toRange) { - var o = {constr: constr, min: min, max: max}; - o.toRange = toRangeWrapped.bind(o); - return o; -} - -var IntegerTypedArrayConstructors = [ - makeConstructorObject(Int8Array, -128, 127), - makeConstructorObject(Int16Array, -32768, 32767), - makeConstructorObject(Int32Array, -0x80000000, 0x7fffffff), - makeConstructorObject(Uint8Array, 0, 255), - makeConstructorObject(Uint16Array, 0, 65535), - makeConstructorObject(Uint32Array, 0, 0xffffffff), -]; - -(function TestBadArray() { - var ab = new ArrayBuffer(16); - var u32a = new Uint32Array(16); - var sab = new SharedArrayBuffer(128); - var sf32a = new Float32Array(sab); - var sf64a = new Float64Array(sab); - var u8ca = new Uint8ClampedArray(sab); - - // Atomic ops required integer shared typed arrays - var badArrayTypes = [ - undefined, 1, 'hi', 3.4, ab, u32a, sab, sf32a, sf64a, u8ca - ]; - badArrayTypes.forEach(function(o) { - assertThrows(function() { Atomics.compareExchange(o, 0, 0, 0); }, - TypeError); - assertThrows(function() { Atomics.load(o, 0); }, TypeError); - assertThrows(function() { Atomics.store(o, 0, 0); }, TypeError); - assertThrows(function() { Atomics.add(o, 0, 0); }, TypeError); - assertThrows(function() { Atomics.sub(o, 0, 0); }, TypeError); - assertThrows(function() { Atomics.and(o, 0, 0); }, TypeError); - assertThrows(function() { Atomics.or(o, 0, 0); }, TypeError); - assertThrows(function() { Atomics.xor(o, 0, 0); }, TypeError); - assertThrows(function() { Atomics.exchange(o, 0, 0); }, TypeError); - }); -})(); - -(function TestBadIndex() { - var sab = new SharedArrayBuffer(8); - var si32a = new Int32Array(sab); - var si32a2 = new Int32Array(sab, 4); - - // Indexes that are out of bounds when coerced via ToIndex should throw - // RangeError. - [-Infinity, Infinity].forEach(function(i) { - assertThrows(function() { Atomics.compareExchange(si32a, i, 0); }, - RangeError); - assertThrows(function() { Atomics.load(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.store(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.add(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.sub(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.and(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.or(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.xor(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.exchange(si32a, i, 0); }, RangeError); - }, RangeError); - - // Out-of-bounds indexes should throw RangeError. - [-1, 2, 100].forEach(function(i) { - assertThrows(function() { Atomics.compareExchange(si32a, i, 0, 0); }, - RangeError); - assertThrows(function() { Atomics.load(si32a, i); }, RangeError); - assertThrows(function() { Atomics.store(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.add(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.sub(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.and(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.or(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.xor(si32a, i, 0); }, RangeError); - assertThrows(function() { Atomics.exchange(si32a, i, 0); }, RangeError); - }, RangeError); - - // Out-of-bounds indexes for array with offset should throw RangeError. - [-1, 1, 100].forEach(function(i) { - assertThrows(function() { Atomics.compareExchange(si32a2, i, 0, 0); }); - assertThrows(function() { Atomics.load(si32a2, i); }, RangeError); - assertThrows(function() { Atomics.store(si32a2, i, 0); }, RangeError); - assertThrows(function() { Atomics.add(si32a2, i, 0); }, RangeError); - assertThrows(function() { Atomics.sub(si32a2, i, 0); }, RangeError); - assertThrows(function() { Atomics.and(si32a2, i, 0); }, RangeError); - assertThrows(function() { Atomics.or(si32a2, i, 0); }, RangeError); - assertThrows(function() { Atomics.xor(si32a2, i, 0); }, RangeError); - assertThrows(function() { Atomics.exchange(si32a2, i, 0); }, RangeError); - }); - - // Monkey-patch length and make sure these functions still throw. - Object.defineProperty(si32a, 'length', {get: function() { return 1000; }}); - [2, 100].forEach(function(i) { - assertThrows(function() { Atomics.compareExchange(si32a, i, 0, 0); }); - assertThrows(function() { Atomics.load(si32a, i); }); - assertThrows(function() { Atomics.store(si32a, i, 0); }); - assertThrows(function() { Atomics.add(si32a, i, 0); }); - assertThrows(function() { Atomics.sub(si32a, i, 0); }); - assertThrows(function() { Atomics.and(si32a, i, 0); }); - assertThrows(function() { Atomics.or(si32a, i, 0); }); - assertThrows(function() { Atomics.xor(si32a, i, 0); }); - assertThrows(function() { Atomics.exchange(si32a, i, 0); }); - }); -})(); - -(function TestGoodIndex() { - var sab = new SharedArrayBuffer(64); - var si32a = new Int32Array(sab); - var si32a2 = new Int32Array(sab, 32); - - var testOp = function(op, ia, index, expectedIndex, name) { - for (var i = 0; i < ia.length; ++i) - ia[i] = i * 2; - - ia[expectedIndex] = 0; - var result = op(ia, index, 0, 0); - assertEquals(0, result, name); - assertEquals(0, ia[expectedIndex], name); - - for (var i = 0; i < ia.length; ++i) { - if (i == expectedIndex) continue; - assertEquals(i * 2, ia[i], name); - } - }; - - // These values all map to index 0 - [-0, 0, 0.0, null, false, NaN, {}, '0.2', 'hi', undefined].forEach( - function(i) { - var name = String(i); - [si32a, si32a2].forEach(function(array) { - testOp(Atomics.compareExchange, array, i, 0, name); - testOp(Atomics.load, array, i, 0, name); - testOp(Atomics.store, array, i, 0, name); - testOp(Atomics.add, array, i, 0, name); - testOp(Atomics.sub, array, i, 0, name); - testOp(Atomics.and, array, i, 0, name); - testOp(Atomics.or, array, i, 0, name); - testOp(Atomics.xor, array, i, 0, name); - testOp(Atomics.exchange, array, i, 0, name); - }); - }); - - // These values all map to index 3 - var valueOf = {valueOf: function(){ return 3;}}; - var toString = {toString: function(){ return '3';}}; - [3, 3.0, '3', '3.0', valueOf, toString].forEach(function(i) { - var name = String(i); - [si32a, si32a2].forEach(function(array) { - testOp(Atomics.compareExchange, array, i, 3, name); - testOp(Atomics.load, array, i, 3, name); - testOp(Atomics.store, array, i, 3, name); - testOp(Atomics.add, array, i, 3, name); - testOp(Atomics.sub, array, i, 3, name); - testOp(Atomics.and, array, i, 3, name); - testOp(Atomics.or, array, i, 3, name); - testOp(Atomics.xor, array, i, 3, name); - testOp(Atomics.exchange, array, i, 3, name); - }); - }); -})(); - -function clearArray(sab) { - var ui8 = new Uint8Array(sab); - for (var i = 0; i < sab.byteLength; ++i) { - ui8[i] = 0; - } -} - -(function TestCompareExchange() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var sta2 = new t.constr(sab, 5 * t.constr.BYTES_PER_ELEMENT); - - [sta, sta2].forEach(function(array) { - clearArray(array.buffer); - var name = Object.prototype.toString.call(array); - for (var i = 0; i < array.length; ++i) { - // array[i] == 0, CAS will store - assertEquals(0, Atomics.compareExchange(array, i, 0, 50), name); - assertEquals(50, array[i], name); - - // array[i] == 50, CAS will not store - assertEquals(50, Atomics.compareExchange(array, i, 0, 100), name); - assertEquals(50, array[i], name); - } - }) - }); -})(); - -(function TestLoad() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var sta2 = new t.constr(sab, 5 * t.constr.BYTES_PER_ELEMENT); - - [sta, sta2].forEach(function(array) { - clearArray(array.buffer); - var name = Object.prototype.toString.call(array); - for (var i = 0; i < array.length; ++i) { - array[i] = 0; - assertEquals(0, Atomics.load(array, i), name); - array[i] = 50; - assertEquals(50, Atomics.load(array, i), name); - } - }) - }); - - // Test Smi range - (function () { - var sab = new SharedArrayBuffer(4); - var i32 = new Int32Array(sab); - var u32 = new Uint32Array(sab); - - function testLoad(signedValue, unsignedValue) { - u32[0] = unsignedValue; - assertEquals(unsignedValue, Atomics.load(u32, 0)); - assertEquals(signedValue, Atomics.load(i32, 0)); - } - - testLoad(0x3fffffff, 0x3fffffff); // 2**30-1 (always smi) - testLoad(0x40000000, 0x40000000); // 2**30 (smi if signed and 32-bits) - testLoad(0x80000000, -0x80000000); // 2**31 (smi if signed and 32-bits) - testLoad(0xffffffff, -1); // 2**31 (smi if signed) - }); -})(); - -(function TestStore() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var sta2 = new t.constr(sab, 5 * t.constr.BYTES_PER_ELEMENT); - - [sta, sta2].forEach(function(array) { - clearArray(array.buffer); - var name = Object.prototype.toString.call(array); - for (var i = 0; i < array.length; ++i) { - assertEquals(50, Atomics.store(array, i, 50), name); - assertEquals(50, array[i], name); - - assertEquals(100, Atomics.store(array, i, 100), name); - assertEquals(100, array[i], name); - } - }) - }); -})(); - -(function TestAdd() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var sta2 = new t.constr(sab, 5 * t.constr.BYTES_PER_ELEMENT); - - [sta, sta2].forEach(function(array) { - clearArray(array.buffer); - var name = Object.prototype.toString.call(array); - for (var i = 0; i < array.length; ++i) { - assertEquals(0, Atomics.add(array, i, 50), name); - assertEquals(50, array[i], name); - - assertEquals(50, Atomics.add(array, i, 70), name); - assertEquals(120, array[i], name); - } - }) - }); -})(); - -(function TestSub() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var sta2 = new t.constr(sab, 5 * t.constr.BYTES_PER_ELEMENT); - - [sta, sta2].forEach(function(array) { - clearArray(array.buffer); - var name = Object.prototype.toString.call(array); - for (var i = 0; i < array.length; ++i) { - array[i] = 120; - assertEquals(120, Atomics.sub(array, i, 50), name); - assertEquals(70, array[i], name); - - assertEquals(70, Atomics.sub(array, i, 70), name); - assertEquals(0, array[i], name); - } - }) - }); -})(); - -(function TestAnd() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var sta2 = new t.constr(sab, 5 * t.constr.BYTES_PER_ELEMENT); - - [sta, sta2].forEach(function(array) { - clearArray(array.buffer); - var name = Object.prototype.toString.call(sta); - for (var i = 0; i < array.length; ++i) { - array[i] = 0x3f; - assertEquals(0x3f, Atomics.and(array, i, 0x30), name); - assertEquals(0x30, array[i], name); - - assertEquals(0x30, Atomics.and(array, i, 0x20), name); - assertEquals(0x20, array[i], name); - } - }) - }); -})(); - -(function TestOr() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var sta2 = new t.constr(sab, 5 * t.constr.BYTES_PER_ELEMENT); - - [sta, sta2].forEach(function(array) { - clearArray(array.buffer); - var name = Object.prototype.toString.call(array); - for (var i = 0; i < array.length; ++i) { - array[i] = 0x30; - assertEquals(0x30, Atomics.or(array, i, 0x1c), name); - assertEquals(0x3c, array[i], name); - - assertEquals(0x3c, Atomics.or(array, i, 0x09), name); - assertEquals(0x3d, array[i], name); - } - }) - }); -})(); - -(function TestXor() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var sta2 = new t.constr(sab, 5 * t.constr.BYTES_PER_ELEMENT); - - [sta, sta2].forEach(function(array) { - clearArray(array.buffer); - var name = Object.prototype.toString.call(array); - for (var i = 0; i < array.length; ++i) { - array[i] = 0x30; - assertEquals(0x30, Atomics.xor(array, i, 0x1c), name); - assertEquals(0x2c, array[i], name); - - assertEquals(0x2c, Atomics.xor(array, i, 0x09), name); - assertEquals(0x25, array[i], name); - } - }) - }); -})(); - -(function TestExchange() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var sta2 = new t.constr(sab, 5 * t.constr.BYTES_PER_ELEMENT); - - [sta, sta2].forEach(function(array) { - clearArray(array.buffer); - var name = Object.prototype.toString.call(array); - for (var i = 0; i < array.length; ++i) { - array[i] = 0x30; - assertEquals(0x30, Atomics.exchange(array, i, 0x1c), name); - assertEquals(0x1c, array[i], name); - - assertEquals(0x1c, Atomics.exchange(array, i, 0x09), name); - assertEquals(0x09, array[i], name); - } - }) - }); -})(); - -(function TestIsLockFree() { - // Various invalid cases. - var valueOf = {valueOf: function(){ return 3;}}; - var toString = {toString: function(){ return '3';}}; - var invalid = [3.14, 'foo', Infinity, NaN, false, undefined, valueOf, - toString]; - invalid.forEach(function(v) { - assertEquals(false, Atomics.isLockFree(v), JSON.stringify(v)); - }); - - // For all platforms we support, 1, 2 and 4 bytes should be lock-free. - assertEquals(true, Atomics.isLockFree(1)); - assertEquals(true, Atomics.isLockFree(2)); - assertEquals(true, Atomics.isLockFree(4)); - - // Sizes that aren't equal to a typedarray BYTES_PER_ELEMENT always return - // false. - var validSizes = {}; - IntegerTypedArrayConstructors.forEach(function(t) { - validSizes[t.constr.BYTES_PER_ELEMENT] = true; - }); - - for (var i = 0; i < 1000; ++i) { - if (!validSizes[i]) { - assertEquals(false, Atomics.isLockFree(i)); - } - } -})(); - -(function TestToNumber() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(1 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - - var valueOf = {valueOf: function(){ return 3;}}; - var toString = {toString: function(){ return '3';}}; - - [false, true, undefined, valueOf, toString].forEach(function(v) { - var name = Object.prototype.toString.call(sta) + ' - ' + v; - - // CompareExchange - sta[0] = 50; - assertEquals(50, Atomics.compareExchange(sta, 0, v, v), name); - - // Store - assertEquals(v|0, Atomics.store(sta, 0, v), name); - assertEquals(v|0, sta[0], name); - - // Add - sta[0] = 120; - assertEquals(120, Atomics.add(sta, 0, v), name); - assertEquals(120 + (v|0), sta[0], name); - - // Sub - sta[0] = 70; - assertEquals(70, Atomics.sub(sta, 0, v), name); - assertEquals(70 - (v|0), sta[0]); - - // And - sta[0] = 0x20; - assertEquals(0x20, Atomics.and(sta, 0, v), name); - assertEquals(0x20 & (v|0), sta[0]); - - // Or - sta[0] = 0x3d; - assertEquals(0x3d, Atomics.or(sta, 0, v), name); - assertEquals(0x3d | (v|0), sta[0]); - - // Xor - sta[0] = 0x25; - assertEquals(0x25, Atomics.xor(sta, 0, v), name); - assertEquals(0x25 ^ (v|0), sta[0]); - - // Exchange - sta[0] = 0x09; - assertEquals(0x09, Atomics.exchange(sta, 0, v), name); - assertEquals(v|0, sta[0]); - }); - }); -})(); - -(function TestWrapping() { - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var name = Object.prototype.toString.call(sta); - var range = t.max - t.min + 1; - var offset; - var operand; - var val, newVal; - var valWrapped, newValWrapped; - - for (offset = -range; offset <= range; offset += range) { - // CompareExchange - sta[0] = val = 0; - newVal = val + offset + 1; - newValWrapped = t.toRange(newVal); - assertEquals(val, Atomics.compareExchange(sta, 0, val, newVal), name); - assertEquals(newValWrapped, sta[0], name); - - sta[0] = val = t.min; - newVal = val + offset - 1; - newValWrapped = t.toRange(newVal); - assertEquals(val, Atomics.compareExchange(sta, 0, val, newVal), name); - assertEquals(newValWrapped, sta[0], name); - - // Store - sta[0] = 0; - val = t.max + offset + 1; - valWrapped = t.toRange(val); - assertEquals(val, Atomics.store(sta, 0, val), name); - assertEquals(valWrapped, sta[0], name); - - sta[0] = val = t.min + offset - 1; - valWrapped = t.toRange(val); - assertEquals(val, Atomics.store(sta, 0, val), name); - assertEquals(valWrapped, sta[0], name); - - // Add - sta[0] = val = t.max; - operand = offset + 1; - valWrapped = t.toRange(val + operand); - assertEquals(val, Atomics.add(sta, 0, operand), name); - assertEquals(valWrapped, sta[0], name); - - sta[0] = val = t.min; - operand = offset - 1; - valWrapped = t.toRange(val + operand); - assertEquals(val, Atomics.add(sta, 0, operand), name); - assertEquals(valWrapped, sta[0], name); - - // Sub - sta[0] = val = t.max; - operand = offset - 1; - valWrapped = t.toRange(val - operand); - assertEquals(val, Atomics.sub(sta, 0, operand), name); - assertEquals(valWrapped, sta[0], name); - - sta[0] = val = t.min; - operand = offset + 1; - valWrapped = t.toRange(val - operand); - assertEquals(val, Atomics.sub(sta, 0, operand), name); - assertEquals(valWrapped, sta[0], name); - - // There's no way to wrap results with logical operators, just test that - // using an out-of-range value is properly wrapped/clamped when written - // to memory. - - // And - sta[0] = val = 0xf; - operand = 0x3 + offset; - valWrapped = t.toRange(val & operand); - assertEquals(val, Atomics.and(sta, 0, operand), name); - assertEquals(valWrapped, sta[0], name); - - // Or - sta[0] = val = 0x12; - operand = 0x22 + offset; - valWrapped = t.toRange(val | operand); - assertEquals(val, Atomics.or(sta, 0, operand), name); - assertEquals(valWrapped, sta[0], name); - - // Xor - sta[0] = val = 0x12; - operand = 0x22 + offset; - valWrapped = t.toRange(val ^ operand); - assertEquals(val, Atomics.xor(sta, 0, operand), name); - assertEquals(valWrapped, sta[0], name); - - // Exchange - sta[0] = val = 0x12; - operand = 0x22 + offset; - valWrapped = t.toRange(operand); - assertEquals(val, Atomics.exchange(sta, 0, operand), name); - assertEquals(valWrapped, sta[0], name); - } - - }); -})(); - -(function TestValidateIndexBeforeValue() { - var testOp = function(op, sta, name) { - var valueof_has_been_called = 0; - var value = {valueOf: function() { valueof_has_been_called = 1; return 0;}}; - var index = -1; - - // The index should be checked before calling ToInteger on the value, so - // valueof_has_been_called should not be modified. - sta[0] = 0; - assertThrows(function() { op(sta, index, value, value); }, RangeError); - assertEquals(0, valueof_has_been_called); - }; - - IntegerTypedArrayConstructors.forEach(function(t) { - var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); - var sta = new t.constr(sab); - var name = Object.prototype.toString.call(sta); - - testOp(Atomics.compareExchange, sta, name); - testOp(Atomics.load, sta, name); - testOp(Atomics.store, sta, name); - testOp(Atomics.add, sta, name); - testOp(Atomics.sub, sta, name); - testOp(Atomics.and, sta, name); - testOp(Atomics.or, sta, name); - testOp(Atomics.xor, sta, name); - testOp(Atomics.exchange, sta, name); - }); -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/add.js b/implementation-contributed/v8/mjsunit/harmony/bigint/add.js deleted file mode 100644 index 791db6a3b98..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/add.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: -0xc4043e2c4cc49e4d6870103ce7c2ff2d512bf4b1b67553ba410db514ee0af8888ad6cfn, - b: 0x2aae86de73ff479133a657a40d26e8dcf192019c7421836615ec34978bad93n, - r: -0xc4043e2c2216176ef470c8abb41ca78944050bd4c4e3521dccec31aed81ec3f0ff293cn -}, { - a: -0xee0933b25c8c0ef09fa385ffa1d3ca76855b560e186d27fa9f6ce105cb8517a4aecd5n, - b: -0x2ffc3a7babad313ede574774cb55cd40ab3b2n, - r: -0xee0933b25c8c0ef09fa385ffa1d3ca76b5579089c41a59397dc4287a96dae4e55a087n -}, { - a: -0xdbb3e8fac212affdeda8959829838af77e43172n, - b: 0x2315999da3ac2ab89d2076cbe6e2e03082352e92c274680117ce7012dn, - r: 0x2315999da3ac2ab89c44c2e2ec20cd80844785fd2a4ae47620502cfbbn -}, { - a: -0x5ad9780b309c24919defb1b331ebba4en, - b: 0xbe8dd806b3da0f79e7f6ad2fb566536cc78c1471c236891ce0n, - r: 0xbe8dd806b3da0f79e79bd3b7aa35b74835ee24c00f049d6292n -}, { - a: -0xade45eac6aaaf2c8097d7a3efecba4e80dd7aac4f692cfe841d113e68096c0218d521an, - b: -0x73c4119b366e22edd0797b5883a13e3bfc4124a559903ce785e0c833a8306b41cfn, - r: -0xade4d2707c4629362c6b4ab87a2428894c13a7061b3829787eb899c748ca6851f893e9n -}, { - a: -0x6e9ab93d5cff3b3f31a55aa2f43fc321bff6978189e00fa4e64cn, - b: 0xec1caec29eb55312a313e50e20178873a350f1f89cbc971n, - r: -0x6e9aaa7b92131153dc743071b5eee120476f5d4c7ac085d91cdbn -}, { - a: -0x9a61c05bd53b74b731b8f8687e64d1ed1340404b5137ce39n, - b: -0x1e6793ea0fa51b2354b48n, - r: -0x9a61c05bd53b74b731b8f8687e66b86651e13a9d036d1981n -}, { - a: -0x7c5a08517038f7dn, - b: 0x1d89f2n, - r: -0x7c5a08516e6058bn -}, { - a: -0xc4fd1b5aae2cfdc7b3ea6a74b7926a9a1ca3513bd08341e0c770080ban, - b: 0x76c79770202f9d9c6d2e244n, - r: -0xc4fd1b5aae2cfdc7b3ea6a74b7926a9a1c2c89a4606312432b02d9e76n -}, { - a: 0xda114ddab6bfed910cc05c64f72961107beb98c3271n, - b: 0x98c52c393c6660663248fcbaa300b8n, - r: 0xda114ddab6bff71d5f83f02b5d2fc4350bb742f3329n -}, { - a: -0x46311d926dfd26f0850ea3497fcd0d95a5dabab0361f219a601dc3dbe35d0n, - b: -0xf340af7b84e4eced2ca613e1ef4bb6aec4b8f01bc3n, - r: -0x46311d926dfd26f0851dd75477855be474ad8511743e1655cb0a0f6ae5193n -}, { - a: 0xb2b4d9c0c73258a8092n, - b: 0xf4d1c3d2861cc0bfaea456c03b0f548a32effc1c3e1593935a6b0n, - r: 0xf4d1c3d2861cc0bfaea456c03b0f548a33a2b0f5fedcc5ec02742n -}, { - a: -0x56604879bdaaff7409cd59cfbafe73a74c284bfaeb991b6e11171bc08cf68bean, - b: 0xf4016a6e94c0f256af54fca00d6c909a620c6ea950c73cade3724174c12888n, - r: -0x556c470f4f163e81b31e04d31af10716b1c63f8c424854316333a97f18356362n -}, { - a: -0x7a238c856c50aee41d1a2a1446a77f1567n, - b: 0x58n, - r: -0x7a238c856c50aee41d1a2a1446a77f150fn -}, { - a: 0xcdaf8c242e5da7265cc715871c3n, - b: -0x63604dd2b8df176c627ce3b018b2e74448746123d5578e66e9c0n, - r: -0x63604dd2b8df176c627ce3b00bd7ee82058e86b16f8b1d0e77fdn -}, { - a: 0xfa254e9c8d182d2bd90d8ff2b25d4e9819900b62b9ef60f3744ddc55cd362den, - b: -0x1fef80ff5d53dd0adaa75e8f0d16429851de115822n, - r: 0xfa254e9c8d182d2bd90d8df3ba4d58c2dbbf5db84406702210245737ec20abcn -}, { - a: 0x3e85cn, - b: 0x687c558b2c1308c1a133d647ff7en, - r: 0x687c558b2c1308c1a133d64be7dan -}, { - a: 0x9011db3dd56dbf2ef06154cbd48a67f6038483cff59f49011e57n, - b: 0xc033be10adcb6a7a5a697a7ef95ac3680611ff7ef690231314d338an, - r: 0xc03cbf2e61a8c1564d58809446180c0e857237c7338f7d07a4e51e1n -}, { - a: -0xefac02ab40df0f00a1b97a4n, - b: 0xc3b5e53656cd891e179ec3fb8a8d192f9bab5cfd76c014400n, - r: 0xc3b5e53656cd891e179ec3fb899d6d2cf06a7dee761e5ac5cn -}, { - a: -0x7f9d48b408a5bb3827bc0149ecd538a2b2a7d4e1e0a4e9c36ee05f8be3a5b3n, - b: 0xd83d8cb2fb784703498cf0d61ff097ca42635664058cb85ea39f5931c37a1n, - r: -0x72196fe8d8ee36c7f323323c8ad62f260e819f7ba04c1e3d84a669f8c76e12n -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a + d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: +"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/and.js b/implementation-contributed/v8/mjsunit/harmony/bigint/and.js deleted file mode 100644 index a90ec22f511..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/and.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0x9252b94f220ded0c18706998886397699c5a25527575dn, - b: -0x286817ba2e8fd8n, - r: 0x9252b94f220ded0c1870699888639769185a045015008n -}, { - a: 0x15a28152354fe421bbe4649d4d22d536ac34f9ba962n, - b: 0x8n, - r: 0n -}, { - a: 0xd09791bf7ae6703fae8d654104f54fcd957bbf028540b8e7c0f859fdcc1b7abd617en, - b: 0x24b473d03n, - r: 0x24a052102n -}, { - a: 0x2f73fbd05e9f7f70beba3dc7cd883732149a3d02a422f90f336n, - b: 0x4490583f8n, - r: 0x9008330n -}, { - a: 0xd6ea27844b3d356774e73de10d393ab9cadb81848e3b4a34d1f7440d3n, - b: 0x1639eeee731f3ba09234b5e15ec92f8bfb5cea28a0e89c59ed1c45b5f04n, - r: 0x10ea26000b39200234a5214009290ab948ca008088184824104504000n -}, { - a: -0x131f5e2c196269fd140c8727a9a02170e0dddb6aec109a89bcn, - b: 0x401ec4eae8b756f2b222f6f565fb6acecce3c524e9b453n, - r: 0x12c488800242f230005655448b0a0204810124613440n -}, { - a: -0x5bcba128bf7b949780a4bd02782a63ae79f646a33b8672f3f692ab98n, - b: -0xa81dd8ff624072fce3a00eb0bd5700e5666c3beb7d59701c42489n, - r: -0x5bcba1fdbfffb497afeebf02fb2bf7fe7ff666e3bfb7f7f7f7d6afa0n -}, { - a: 0xc997546528786548270061bcn, - b: 0x75023f046c04f9095f64d3b8c75ab21950an, - r: 0x499014640838044023000108n -}, { - a: 0x5ad0abd6e43ef787248af2607fb29b9c3f7a1e7b106269ff3bn, - b: -0xd483c8630392db4b620e0f6n, - r: 0x5ad0abd6e43ef787248af2607fb29380394a06520040491f0an -}, { - a: -0x9ed448bdb4794e4c0485db9ebe6cad0b0n, - b: -0x549a70753c9afn, - r: -0x9ed448bdb4794e4c0485df9efe7dbd9b0n -}, { - a: -0x3a3fe42647633612082372714484767efc9673ce964b76f9f53a63d5n, - b: 0x99615e5edd0506cbb5512fb56ee2dd1238bn, - r: 0x986116189800068881100b0000608c1000bn -}, { - a: -0xac1b8238c08f5n, - b: -0xb9439dfbbc70e12b3a1fc7ccbfebeacd9bb321d83d3an, - r: -0xb9439dfbbc70e12b3a1fc7ccbfebeacfdbbb23dc3dfen -}, { - a: 0x120580503n, - b: 0x90e13d34618496af407fabefabdd23892f488n, - r: 0x20100400n -}, { - a: 0xaa51cn, - b: 0x2122a9c43b2531d5n, - r: 0x2114n -}, { - a: 0xaf43eb353c1547dc6ad79768e9a6n, - b: 0x55c80f89d8fe82dbf69eca557dd0479b6a449db77e38b2241ec81aa7d4042766dd3e63n, - r: 0x28022014081007d4000706482822n -}, { - a: 0xbd38b2d88212ceea6fbe3890769e46236n, - b: 0xeb22e568873e9bfdb5d2ddbc03n, - r: 0x88202468863a83890540c42002n -}, { - a: 0x24cd8c9634eddf319c57b54dffb49ce4974528f03b2c732d052ad496n, - b: -0x4079cfn, - r: 0x24cd8c9634eddf319c57b54dffb49ce4974528f03b2c732d052a8410n -}, { - a: -0x61f263476a1212fce55cf7d437f4364b73a1815a641n, - b: -0x19226cb79772cca166043a29d1f0fe1df5n, - r: -0x61f263476b9236fffd7fffde37f477ebffbf8ffbff5n -}, { - a: -0x44309b08a65bc7dc1e53d598d82ccdaa852941d7c851d907a6acn, - b: 0xdd93dc17d38658ee30453d5f27en, - r: 0x5d1304178102408230402d05054n -}, { - a: 0x1e3eea4668e7a6c3bfa87d3f7a419bd18an, - b: -0x592d83940f884f9n, - r: 0x1e3eea4668e7a6c3bfa86d274201035102n -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a & d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: &"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/as-int-n.js b/implementation-contributed/v8/mjsunit/harmony/bigint/as-int-n.js deleted file mode 100644 index ef48cadcc6a..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/as-int-n.js +++ /dev/null @@ -1,300 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// BigInt.asIntN -{ - assertEquals(2, BigInt.asIntN.length); -}{ - assertEquals(-1n, BigInt.asIntN(3, 15n)); - assertEquals(-2n, BigInt.asIntN(3, 14n)); - assertEquals(-3n, BigInt.asIntN(3, 13n)); - assertEquals(-4n, BigInt.asIntN(3, 12n)); - assertEquals(3n, BigInt.asIntN(3, 11n)); - assertEquals(2n, BigInt.asIntN(3, 10n)); - assertEquals(1n, BigInt.asIntN(3, 9n)); - assertEquals(0n, BigInt.asIntN(3, 8n)); - assertEquals(-1n, BigInt.asIntN(3, 7n)); - assertEquals(-2n, BigInt.asIntN(3, 6n)); - assertEquals(-3n, BigInt.asIntN(3, 5n)); - assertEquals(-4n, BigInt.asIntN(3, 4n)); - assertEquals(3n, BigInt.asIntN(3, 3n)); - assertEquals(2n, BigInt.asIntN(3, 2n)); - assertEquals(1n, BigInt.asIntN(3, 1n)); - assertEquals(0n, BigInt.asIntN(3, 0n)); - assertEquals(-1n, BigInt.asIntN(3, -1n)); - assertEquals(-2n, BigInt.asIntN(3, -2n)); - assertEquals(-3n, BigInt.asIntN(3, -3n)); - assertEquals(-4n, BigInt.asIntN(3, -4n)); - assertEquals(3n, BigInt.asIntN(3, -5n)); - assertEquals(2n, BigInt.asIntN(3, -6n)); - assertEquals(1n, BigInt.asIntN(3, -7n)); - assertEquals(0n, BigInt.asIntN(3, -8n)); - assertEquals(-1n, BigInt.asIntN(3, -9n)); - assertEquals(-2n, BigInt.asIntN(3, -10n)); - assertEquals(-3n, BigInt.asIntN(3, -11n)); - assertEquals(-4n, BigInt.asIntN(3, -12n)); - assertEquals(3n, BigInt.asIntN(3, -13n)); - assertEquals(2n, BigInt.asIntN(3, -14n)); - assertEquals(1n, BigInt.asIntN(3, -15n)); -}{ - assertEquals(254n, BigInt.asIntN(10, 254n)); - assertEquals(255n, BigInt.asIntN(10, 255n)); - assertEquals(256n, BigInt.asIntN(10, 256n)); - assertEquals(257n, BigInt.asIntN(10, 257n)); - assertEquals(510n, BigInt.asIntN(10, 510n)); - assertEquals(511n, BigInt.asIntN(10, 511n)); - assertEquals(-512n, BigInt.asIntN(10, 512n)); - assertEquals(-511n, BigInt.asIntN(10, 513n)); - assertEquals(-2n, BigInt.asIntN(10, 1022n)); - assertEquals(-1n, BigInt.asIntN(10, 1023n)); - assertEquals(0n, BigInt.asIntN(10, 1024n)); - assertEquals(1n, BigInt.asIntN(10, 1025n)); -}{ - assertEquals(-254n, BigInt.asIntN(10, -254n)); - assertEquals(-255n, BigInt.asIntN(10, -255n)); - assertEquals(-256n, BigInt.asIntN(10, -256n)); - assertEquals(-257n, BigInt.asIntN(10, -257n)); - assertEquals(-510n, BigInt.asIntN(10, -510n)); - assertEquals(-511n, BigInt.asIntN(10, -511n)); - assertEquals(-512n, BigInt.asIntN(10, -512n)); - assertEquals(511n, BigInt.asIntN(10, -513n)); - assertEquals(2n, BigInt.asIntN(10, -1022n)); - assertEquals(1n, BigInt.asIntN(10, -1023n)); - assertEquals(0n, BigInt.asIntN(10, -1024n)); - assertEquals(-1n, BigInt.asIntN(10, -1025n)); -}{ - assertEquals(0n, BigInt.asIntN(0, 0n)); - assertEquals(0n, BigInt.asIntN(1, 0n)); - assertEquals(0n, BigInt.asIntN(16, 0n)); - assertEquals(0n, BigInt.asIntN(31, 0n)); - assertEquals(0n, BigInt.asIntN(32, 0n)); - assertEquals(0n, BigInt.asIntN(33, 0n)); - assertEquals(0n, BigInt.asIntN(63, 0n)); - assertEquals(0n, BigInt.asIntN(64, 0n)); - assertEquals(0n, BigInt.asIntN(65, 0n)); - assertEquals(0n, BigInt.asIntN(127, 0n)); - assertEquals(0n, BigInt.asIntN(128, 0n)); - assertEquals(0n, BigInt.asIntN(129, 0n)); -}{ - assertEquals(0n, BigInt.asIntN(0, 42n)); - assertEquals(0n, BigInt.asIntN(1, 42n)); - assertEquals(42n, BigInt.asIntN(16, 42n)); - assertEquals(42n, BigInt.asIntN(31, 42n)); - assertEquals(42n, BigInt.asIntN(32, 42n)); - assertEquals(42n, BigInt.asIntN(33, 42n)); - assertEquals(42n, BigInt.asIntN(63, 42n)); - assertEquals(42n, BigInt.asIntN(64, 42n)); - assertEquals(42n, BigInt.asIntN(65, 42n)); - assertEquals(42n, BigInt.asIntN(127, 42n)); - assertEquals(42n, BigInt.asIntN(128, 42n)); - assertEquals(42n, BigInt.asIntN(129, 42n)); -}{ - assertEquals(0n, BigInt.asIntN(0, -42n)); - assertEquals(0n, BigInt.asIntN(1, -42n)); - assertEquals(-42n, BigInt.asIntN(16, -42n)); - assertEquals(-42n, BigInt.asIntN(31, -42n)); - assertEquals(-42n, BigInt.asIntN(32, -42n)); - assertEquals(-42n, BigInt.asIntN(33, -42n)); - assertEquals(-42n, BigInt.asIntN(63, -42n)); - assertEquals(-42n, BigInt.asIntN(64, -42n)); - assertEquals(-42n, BigInt.asIntN(65, -42n)); - assertEquals(-42n, BigInt.asIntN(127, -42n)); - assertEquals(-42n, BigInt.asIntN(128, -42n)); - assertEquals(-42n, BigInt.asIntN(129, -42n)); -}{ - assertEquals(0n, BigInt.asIntN(0, 4294967295n)); - assertEquals(-1n, BigInt.asIntN(1, 4294967295n)); - assertEquals(-1n, BigInt.asIntN(16, 4294967295n)); - assertEquals(-1n, BigInt.asIntN(31, 4294967295n)); - assertEquals(-1n, BigInt.asIntN(32, 4294967295n)); - assertEquals(4294967295n, BigInt.asIntN(33, 4294967295n)); - assertEquals(4294967295n, BigInt.asIntN(63, 4294967295n)); - assertEquals(4294967295n, BigInt.asIntN(64, 4294967295n)); - assertEquals(4294967295n, BigInt.asIntN(65, 4294967295n)); - assertEquals(4294967295n, BigInt.asIntN(127, 4294967295n)); - assertEquals(4294967295n, BigInt.asIntN(128, 4294967295n)); - assertEquals(4294967295n, BigInt.asIntN(129, 4294967295n)); -}{ - assertEquals(0n, BigInt.asIntN(0, -4294967295n)); - assertEquals(-1n, BigInt.asIntN(1, -4294967295n)); - assertEquals(1n, BigInt.asIntN(16, -4294967295n)); - assertEquals(1n, BigInt.asIntN(31, -4294967295n)); - assertEquals(1n, BigInt.asIntN(32, -4294967295n)); - assertEquals(-4294967295n, BigInt.asIntN(33, -4294967295n)); - assertEquals(-4294967295n, BigInt.asIntN(63, -4294967295n)); - assertEquals(-4294967295n, BigInt.asIntN(64,-4294967295n)); - assertEquals(-4294967295n, BigInt.asIntN(65, -4294967295n)); - assertEquals(-4294967295n, BigInt.asIntN(127, -4294967295n)); - assertEquals(-4294967295n, BigInt.asIntN(128, -4294967295n)); - assertEquals(-4294967295n, BigInt.asIntN(129, -4294967295n)); -}{ - assertEquals(42n, BigInt.asIntN(2**32, 42n)); - assertEquals(4294967295n, BigInt.asIntN(2**32, 4294967295n)); - assertEquals(4294967296n, BigInt.asIntN(2**32, 4294967296n)); - assertEquals(4294967297n, BigInt.asIntN(2**32, 4294967297n)); -}{ - assertThrows(() => BigInt.asIntN(2n, 12n), TypeError); - assertThrows(() => BigInt.asIntN(-1, 0n), RangeError); - assertThrows(() => BigInt.asIntN(2**53, 0n), RangeError); - assertEquals(0n, BigInt.asIntN({}, 12n)); - assertEquals(0n, BigInt.asIntN(2.9999, 12n)); - assertEquals(-4n, BigInt.asIntN(3.1234, 12n)); -}{ - assertThrows(() => BigInt.asIntN(3, 12), TypeError); - assertEquals(-4n, BigInt.asIntN(3, "12")); - assertEquals(0x123456789abcdefn, - BigInt.asIntN(64, 0xabcdef0123456789abcdefn)); -}{ - // Regression test for crbug.com/v8/8426. - assertEquals(-0x8000000000000000n, - BigInt.asIntN(64, -0x8000000000000000n)); -} - -// BigInt.asUintN -{ - assertEquals(2, BigInt.asUintN.length); -}{ - assertEquals(7n, BigInt.asUintN(3, 15n)); - assertEquals(6n, BigInt.asUintN(3, 14n)); - assertEquals(5n, BigInt.asUintN(3, 13n)); - assertEquals(4n, BigInt.asUintN(3, 12n)); - assertEquals(3n, BigInt.asUintN(3, 11n)); - assertEquals(2n, BigInt.asUintN(3, 10n)); - assertEquals(1n, BigInt.asUintN(3, 9n)); - assertEquals(0n, BigInt.asUintN(3, 8n)); - assertEquals(7n, BigInt.asUintN(3, 7n)); - assertEquals(6n, BigInt.asUintN(3, 6n)); - assertEquals(5n, BigInt.asUintN(3, 5n)); - assertEquals(4n, BigInt.asUintN(3, 4n)); - assertEquals(3n, BigInt.asUintN(3, 3n)); - assertEquals(2n, BigInt.asUintN(3, 2n)); - assertEquals(1n, BigInt.asUintN(3, 1n)); - assertEquals(0n, BigInt.asUintN(3, 0n)); - assertEquals(7n, BigInt.asUintN(3, -1n)); - assertEquals(6n, BigInt.asUintN(3, -2n)); - assertEquals(5n, BigInt.asUintN(3, -3n)); - assertEquals(4n, BigInt.asUintN(3, -4n)); - assertEquals(3n, BigInt.asUintN(3, -5n)); - assertEquals(2n, BigInt.asUintN(3, -6n)); - assertEquals(1n, BigInt.asUintN(3, -7n)); - assertEquals(0n, BigInt.asUintN(3, -8n)); - assertEquals(7n, BigInt.asUintN(3, -9n)); - assertEquals(6n, BigInt.asUintN(3, -10n)); - assertEquals(5n, BigInt.asUintN(3, -11n)); - assertEquals(4n, BigInt.asUintN(3, -12n)); - assertEquals(3n, BigInt.asUintN(3, -13n)); - assertEquals(2n, BigInt.asUintN(3, -14n)); - assertEquals(1n, BigInt.asUintN(3, -15n)); -}{ - assertEquals(254n, BigInt.asUintN(10, 254n)); - assertEquals(255n, BigInt.asUintN(10, 255n)); - assertEquals(256n, BigInt.asUintN(10, 256n)); - assertEquals(257n, BigInt.asUintN(10, 257n)); - assertEquals(510n, BigInt.asUintN(10, 510n)); - assertEquals(511n, BigInt.asUintN(10, 511n)); - assertEquals(512n, BigInt.asUintN(10, 512n)); - assertEquals(513n, BigInt.asUintN(10, 513n)); - assertEquals(1022n, BigInt.asUintN(10, 1022n)); - assertEquals(1023n, BigInt.asUintN(10, 1023n)); - assertEquals(0n, BigInt.asUintN(10, 1024n)); - assertEquals(1n, BigInt.asUintN(10, 1025n)); -}{ - assertEquals(1024n - 254n, BigInt.asUintN(10, -254n)); - assertEquals(1024n - 255n, BigInt.asUintN(10, -255n)); - assertEquals(1024n - 256n, BigInt.asUintN(10, -256n)); - assertEquals(1024n - 257n, BigInt.asUintN(10, -257n)); - assertEquals(1024n - 510n, BigInt.asUintN(10, -510n)); - assertEquals(1024n - 511n, BigInt.asUintN(10, -511n)); - assertEquals(1024n - 512n, BigInt.asUintN(10, -512n)); - assertEquals(1024n - 513n, BigInt.asUintN(10, -513n)); - assertEquals(1024n - 1022n, BigInt.asUintN(10, -1022n)); - assertEquals(1024n - 1023n, BigInt.asUintN(10, -1023n)); - assertEquals(0n, BigInt.asUintN(10, -1024n)); - assertEquals(1023n, BigInt.asUintN(10, -1025n)); -}{ - assertEquals(0n, BigInt.asUintN(0, 0n)); - assertEquals(0n, BigInt.asUintN(1, 0n)); - assertEquals(0n, BigInt.asUintN(16, 0n)); - assertEquals(0n, BigInt.asUintN(31, 0n)); - assertEquals(0n, BigInt.asUintN(32, 0n)); - assertEquals(0n, BigInt.asUintN(33, 0n)); - assertEquals(0n, BigInt.asUintN(63, 0n)); - assertEquals(0n, BigInt.asUintN(64, 0n)); - assertEquals(0n, BigInt.asUintN(65, 0n)); - assertEquals(0n, BigInt.asUintN(127, 0n)); - assertEquals(0n, BigInt.asUintN(128, 0n)); - assertEquals(0n, BigInt.asUintN(129, 0n)); -}{ - assertEquals(0n, BigInt.asUintN(0, 42n)); - assertEquals(0n, BigInt.asUintN(1, 42n)); - assertEquals(42n, BigInt.asUintN(16, 42n)); - assertEquals(42n, BigInt.asUintN(31, 42n)); - assertEquals(42n, BigInt.asUintN(32, 42n)); - assertEquals(42n, BigInt.asUintN(33, 42n)); - assertEquals(42n, BigInt.asUintN(63, 42n)); - assertEquals(42n, BigInt.asUintN(64, 42n)); - assertEquals(42n, BigInt.asUintN(65, 42n)); - assertEquals(42n, BigInt.asUintN(127, 42n)); - assertEquals(42n, BigInt.asUintN(128, 42n)); - assertEquals(42n, BigInt.asUintN(129, 42n)); -}{ - assertEquals(0n, BigInt.asUintN(0, -42n)); - assertEquals(0n, BigInt.asUintN(1, -42n)); - assertEquals(65536n - 42n, BigInt.asUintN(16, -42n)); - assertEquals(2147483648n - 42n, BigInt.asUintN(31, -42n)); - assertEquals(4294967296n - 42n, BigInt.asUintN(32, -42n)); - assertEquals(8589934592n - 42n, BigInt.asUintN(33, -42n)); - assertEquals(9223372036854775808n - 42n, BigInt.asUintN(63, -42n)); - assertEquals(18446744073709551616n - 42n, BigInt.asUintN(64, -42n)); - assertEquals(36893488147419103232n - 42n, BigInt.asUintN(65, -42n)); - assertEquals(2n**127n - 42n, BigInt.asUintN(127, -42n)); - assertEquals(2n**128n - 42n, BigInt.asUintN(128, -42n)); - assertEquals(2n**129n - 42n, BigInt.asUintN(129, -42n)); -}{ - assertEquals(0n, BigInt.asUintN(0, 4294967295n)); - assertEquals(1n, BigInt.asUintN(1, 4294967295n)); - assertEquals(65535n, BigInt.asUintN(16, 4294967295n)); - assertEquals(2147483647n, BigInt.asUintN(31, 4294967295n)); - assertEquals(4294967295n, BigInt.asUintN(32, 4294967295n)); - assertEquals(4294967295n, BigInt.asUintN(33, 4294967295n)); - assertEquals(4294967295n, BigInt.asUintN(63, 4294967295n)); - assertEquals(4294967295n, BigInt.asUintN(64, 4294967295n)); - assertEquals(4294967295n, BigInt.asUintN(65, 4294967295n)); - assertEquals(4294967295n, BigInt.asUintN(127, 4294967295n)); - assertEquals(4294967295n, BigInt.asUintN(128, 4294967295n)); - assertEquals(4294967295n, BigInt.asUintN(129, 4294967295n)); -}{ - assertEquals(0n, BigInt.asUintN(0, -4294967295n)); - assertEquals(1n, BigInt.asUintN(1, -4294967295n)); - assertEquals(1n, BigInt.asUintN(16, -4294967295n)); - assertEquals(1n, BigInt.asUintN(31, -4294967295n)); - assertEquals(1n, BigInt.asUintN(32, -4294967295n)); - assertEquals(8589934592n - 4294967295n, BigInt.asUintN(33, -4294967295n)); - assertEquals(9223372036854775808n - 4294967295n, - BigInt.asUintN(63, -4294967295n)); - assertEquals(18446744073709551616n - 4294967295n, - BigInt.asUintN(64,-4294967295n)); - assertEquals(36893488147419103232n - 4294967295n, - BigInt.asUintN(65, -4294967295n)); - assertEquals(2n**127n - 4294967295n, BigInt.asUintN(127, -4294967295n)); - assertEquals(2n**128n - 4294967295n, BigInt.asUintN(128, -4294967295n)); - assertEquals(2n**129n - 4294967295n, BigInt.asUintN(129, -4294967295n)); -}{ - assertEquals(42n, BigInt.asUintN(2**32, 42n)); - assertEquals(4294967295n, BigInt.asUintN(2**32, 4294967295n)); - assertEquals(4294967296n, BigInt.asUintN(2**32, 4294967296n)); - assertEquals(4294967297n, BigInt.asUintN(2**32, 4294967297n)); -}{ - assertEquals(0x7234567812345678n, BigInt.asUintN(63, 0xf234567812345678n)); -}{ - assertThrows(() => BigInt.asUintN(2n, 12n), TypeError); - assertThrows(() => BigInt.asUintN(-1, 0n), RangeError); - assertThrows(() => BigInt.asUintN(2**53, 0n), RangeError); - assertEquals(0n, BigInt.asUintN({}, 12n)); - assertEquals(0n, BigInt.asUintN(2.9999, 12n)); - assertEquals(4n, BigInt.asUintN(3.1234, 12n)); -}{ - assertThrows(() => BigInt.asUintN(3, 12), TypeError); - assertEquals(4n, BigInt.asUintN(3, "12")); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/basics.js b/implementation-contributed/v8/mjsunit/harmony/bigint/basics.js deleted file mode 100644 index 0368c69b521..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/basics.js +++ /dev/null @@ -1,595 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -'use strict' - -const minus_one = BigInt(-1); -const zero = BigInt(0); -const another_zero = BigInt(0); -const one = BigInt(1); -const another_one = BigInt(1); -const two = BigInt(2); -const three = BigInt(3); -const six = BigInt(6); - -// BigInt -{ - assertSame(BigInt, BigInt.prototype.constructor) -}{ - assertThrows(() => new BigInt, TypeError); - assertThrows(() => new BigInt(), TypeError); - assertThrows(() => new BigInt(0), TypeError); - assertThrows(() => new BigInt(0n), TypeError); - assertThrows(() => new BigInt("0"), TypeError); -}{ - class C extends BigInt { constructor() { throw 42 } }; - assertThrowsEquals(() => new C, 42); -} - -// ToBigInt, NumberToBigInt, BigInt -{ - assertThrows(() => BigInt(undefined), TypeError); - assertThrows(() => BigInt(null), TypeError); - assertThrows(() => BigInt({}), SyntaxError); - assertThrows(() => BigInt("foo"), SyntaxError); - - assertThrows(() => BigInt("1j"), SyntaxError); - assertThrows(() => BigInt("0b1ju"), SyntaxError); - assertThrows(() => BigInt("0o1jun"), SyntaxError); - assertThrows(() => BigInt("0x1junk"), SyntaxError); -}{ - assertSame(BigInt(true), 1n); - assertSame(BigInt(false), 0n); - assertSame(BigInt(""), 0n); - assertSame(BigInt(" 42"), 42n); - assertSame(BigInt("0b101010"), 42n); - assertSame(BigInt(" 0b101011"), 43n); - assertSame(BigInt("0x2a "), 42n); - assertSame(BigInt(" 0x2b"), 43n); - assertSame(BigInt("0o52"), 42n); - assertSame(BigInt(" 0o53\n"), 43n); - assertSame(BigInt(-0), 0n); - assertSame(BigInt(42), 42n); - assertSame(BigInt(42n), 42n); - assertSame(BigInt(Object(42n)), 42n); - assertSame(BigInt(2**53 - 1), 9007199254740991n); - assertSame(BigInt(2**53), 9007199254740992n); - assertSame(BigInt(2**1000), 2n ** 1000n); - assertSame(BigInt(3.0755851989071915e29), 307558519890719151276406341632n); - assertSame(BigInt(-1e50), -0x446c3b15f992680000000000000000000000000000n); - assertSame(BigInt(Object(2**53 - 1)), 9007199254740991n); - assertSame(BigInt([]), 0n); -}{ - assertThrows(() => BigInt(NaN), RangeError); - assertThrows(() => BigInt(-Infinity), RangeError); - assertThrows(() => BigInt(+Infinity), RangeError); - assertThrows(() => BigInt(4.00000001), RangeError); - assertThrows(() => BigInt(Object(4.00000001)), RangeError); -} - -// BigInt.prototype[Symbol.toStringTag] -{ - const toStringTag = Object.getOwnPropertyDescriptor( - BigInt.prototype, Symbol.toStringTag); - assertTrue(toStringTag.configurable); - assertFalse(toStringTag.enumerable); - assertFalse(toStringTag.writable); - assertEquals("BigInt", toStringTag.value); -} - -// Object.prototype.toString -{ - const toString = Object.prototype.toString; - - assertEquals("[object BigInt]", toString.call(42n)); - assertEquals("[object BigInt]", toString.call(Object(42n))); - - delete BigInt.prototype[Symbol.toStringTag]; - assertEquals("[object Object]", toString.call(42n)); - assertEquals("[object Object]", toString.call(Object(42n))); - - BigInt.prototype[Symbol.toStringTag] = "foo"; - assertEquals("[object foo]", toString.call(42n)); - assertEquals("[object foo]", toString.call(Object(42n))); -} - -// typeof -{ - assertEquals(typeof zero, "bigint"); - assertEquals(typeof one, "bigint"); -}{ - assertEquals(%Typeof(zero), "bigint"); - assertEquals(%Typeof(one), "bigint"); -}{ - assertTrue(typeof 1n === "bigint"); - assertFalse(typeof 1n === "BigInt"); - assertFalse(typeof 1 === "bigint"); -} - -// ToString -{ - assertEquals(String(zero), "0"); - assertEquals(String(one), "1"); -} - -// .toString(radix) -{ - // Single-digit BigInts: random-generated inputs close to kMaxInt. - // Expectations computed with the following Python program: - // def Format(x, base): - // s = "" - // while x > 0: - // s = "0123456789abcdefghijklmnopqrstuvwxyz"[x % base] + s - // x = x / base - // return s - assertEquals("10100110000100101000011100101", BigInt(0x14c250e5).toString(2)); - assertEquals("-110110100010011111001011111", BigInt(-0x6d13e5f).toString(2)); - assertEquals("1001222020000100000", BigInt(0x18c72873).toString(3)); - assertEquals("-1212101122110102020", BigInt(-0x2b19aebe).toString(3)); - assertEquals("120303133110120", BigInt(0x18cdf518).toString(4)); - assertEquals("-113203101020122", BigInt(-0x178d121a).toString(4)); - assertEquals("1323302233400", BigInt(0x18de6256).toString(5)); - assertEquals("-2301033210212", BigInt(-0x25f7f454).toString(5)); - assertEquals("131050115130", BigInt(0x211f0d5e).toString(6)); - assertEquals("-104353333321", BigInt(-0x186bbe91).toString(6)); - assertEquals("25466260221", BigInt(0x2f69f47e).toString(7)); - assertEquals("-31051540346", BigInt(-0x352c7efa).toString(7)); - assertEquals("5004630525", BigInt(0x28133155).toString(8)); - assertEquals("-7633240703", BigInt(-0x3e6d41c3).toString(8)); - assertEquals("705082365", BigInt(0x121f4264).toString(9)); - assertEquals("-780654431", BigInt(-0x1443b36e).toString(9)); - assertEquals("297019028", BigInt(0x11b42694).toString(10)); - assertEquals("-721151126", BigInt(-0x2afbe496).toString(10)); - assertEquals("312914074", BigInt(0x27ca6879).toString(11)); - assertEquals("-198025592", BigInt(-0x1813d3a7).toString(11)); - assertEquals("191370997", BigInt(0x2d14f083).toString(12)); - assertEquals("-1b8aab4a2", BigInt(-0x32b52efa).toString(12)); - assertEquals("7818062c", BigInt(0x1c84a48c).toString(13)); - assertEquals("-7529695b", BigInt(-0x1badffee).toString(13)); - assertEquals("6bc929c4", BigInt(0x2b0a91d0).toString(14)); - assertEquals("-63042008", BigInt(-0x270dff78).toString(14)); - assertEquals("5e8b8dec", BigInt(0x3cd27d7f).toString(15)); - assertEquals("-4005433d", BigInt(-0x28c0821a).toString(15)); - assertEquals("10b35ca3", BigInt(0x10b35ca3).toString(16)); - assertEquals("-23d4d9d6", BigInt(-0x23d4d9d6).toString(16)); - assertEquals("28c3d5e3", BigInt(0x3d75d48c).toString(17)); - assertEquals("-10c06328", BigInt(-0x1979b7f0).toString(17)); - assertEquals("eb8d349", BigInt(0x1dacf0a5).toString(18)); - assertEquals("-1217015h", BigInt(-0x28b3c23f).toString(18)); - assertEquals("1018520b", BigInt(0x357da01a).toString(19)); - assertEquals("-9c64e33", BigInt(-0x1b0e9571).toString(19)); - assertEquals("d7bf9ab", BigInt(0x3309daa3).toString(20)); - assertEquals("-58h0h9h", BigInt(-0x14c30c55).toString(20)); - assertEquals("64igi9h", BigInt(0x1fdd329c).toString(21)); - assertEquals("-45cbc4a", BigInt(-0x15cf9682).toString(21)); - assertEquals("7bi7d1h", BigInt(0x32f0dfe3).toString(22)); - assertEquals("-61j743l", BigInt(-0x291ff61f).toString(22)); - assertEquals("5g5gg25", BigInt(0x325a10bd).toString(23)); - assertEquals("-3359flb", BigInt(-0x1bb653c9).toString(23)); - assertEquals("392f5ec", BigInt(0x267ed69c).toString(24)); - assertEquals("-2ab3icb", BigInt(-0x1bbf7bab).toString(24)); - assertEquals("3jb2afo", BigInt(0x36f93c24).toString(25)); - assertEquals("-30bcheh", BigInt(-0x2bec76fa).toString(25)); - assertEquals("3845agk", BigInt(0x3d04bf64).toString(26)); - assertEquals("-1gpjl3g", BigInt(-0x1e720b1a).toString(26)); - assertEquals("20bpaf0", BigInt(0x2e8ff627).toString(27)); - assertEquals("-292i3c2", BigInt(-0x35f751fe).toString(27)); - assertEquals("266113k", BigInt(0x3fd26738).toString(28)); - assertEquals("-1eh16bo", BigInt(-0x2bb5726c).toString(28)); - assertEquals("19gj7qa", BigInt(0x2f28e8d8).toString(29)); - assertEquals("-13a0apf", BigInt(-0x278b4588).toString(29)); - assertEquals("iasrb8", BigInt(0x1a99b3be).toString(30)); - assertEquals("-frlhoc", BigInt(-0x17106f48).toString(30)); - assertEquals("bfe4p2", BigInt(0x139f1ea3).toString(31)); - assertEquals("-ioal1a", BigInt(-0x200e49fa).toString(31)); - assertEquals("m0v0kf", BigInt(0x2c0f828f).toString(32)); - assertEquals("-g4bab5", BigInt(-0x2045a965).toString(32)); - assertEquals("9i1kit", BigInt(0x16450a9f).toString(33)); - assertEquals("-fqb0e7", BigInt(-0x24d9e889).toString(33)); - assertEquals("gb9r6m", BigInt(0x2c3acf46).toString(34)); - assertEquals("-jcaemv", BigInt(-0x346f72b3).toString(34)); - assertEquals("cw4mbk", BigInt(0x2870cdcb).toString(35)); - assertEquals("-hw4eki", BigInt(-0x3817c29b).toString(35)); - assertEquals("alzwgj", BigInt(0x263e2c13).toString(36)); - assertEquals("-bo4ukz", BigInt(-0x2a0f97d3).toString(36)); - - // Multi-digit BigInts. - // Test parseInt/toString round trip on a list of randomly generated - // string representations of numbers in various bases. - - // Userland polyfill while we wait for BigInt.fromString (see: - // https://mathiasbynens.github.io/proposal-number-fromstring/ ). - // This intentionally only implements what the tests below need. - function ParseBigInt(str, radix) { - const alphabet = "0123456789abcdefghijklmnopqrstuvwxyz"; - var result = 0n; - var base = BigInt(radix); - var index = 0; - var negative = false; - if (str[0] === "-") { - negative = true; - index++; - } - for (; index < str.length; index++) { - var digit = alphabet.indexOf(str[index]); - assertTrue(digit >= 0 && digit < radix); - result = result * base + BigInt(digit); - } - if (negative) result = -result; - return result; - } - var positive = [0, 0, // Skip base 0 and 1. - "1100110001100010110011110110010010001011100111100101111000111101100001000", - "1001200022210010220101120212021002011002201122200002211102120120021011020", - "1111113020012203332320220022231110130001001320122012131311333110012023232", - "4214313040222110434114402342013144321401424143322013320403411012033300312", - "5025302003542512450341430541203424555035430434034243510233043041501130015", - "6231052230016515343200525230300322104013130605414211331345043144525012021", - "1146340505617030644211355340006353546230356336306352536433054143503442135", - "7262360724624787621528668212168232276348417717770383567066203032200270570", - "7573792356581293501680046955899735043496925151216904903504319328753434194", - "4a627927557579898720a42647639128174a8689889766a219342133671449069a2235011", - "1a574a5848289924996342a32893380690322330393633b587ba5a15b7b82080222400464", - "5163304c74c387b7a443c92466688595b671a3329b42083b1499b0c10a74a9298a06c3a5a", - "4b63c834356a03c80946133284a709cbbc2a75022757207dc31c14abd4c160dc122327c17", - "d8d59cbb4ca2860de7c002eee4ab3c215b90069200d20dbdc0111cb1e1bab97e8c7609670", - "22d4b69398a7f848e6ae36798811cd1a63d90f340d8607f3ce5566c97c18468787eb2b9fd", - "1176gf69afd32cc105fa70c705927a384dbdb1g8d952f28028g31ebdc9e32a89f16e825ee", - "5d64b74f4d70632h4ee07h7c1e2da9125c42g2727f4b6d95e5cec6ga49566hh731ab5f544", - "7ff8cg7f05dd72916a09a4761ii7b0ibcg68ba39b10436f14efg76ge817317badcbi4gffc", - "6d7c4hci6cd72e4ja26j354i12i71gb0cbj12gi145j91h02hde3b72c65geb7ff9bi9d0c2b", - "c96997f50abe425d13a53kk4af631kg7db208ka5j5bfg8ca5f9c0bjf69j5kgg4jb5h7hi86", - "3g5fd800d9ib9j0i8all5jgb23dh9483ab6le5ad9g4kja8a0b3j5jbjfge7k5fffg2kbheee", - "9j1119d1cd61kmdm7kma105cki313f678fc3h25f4664281bbmg3fk97kfbh7d48j89j178ch", - "d2933cdc9jfe4hl3794kb3e13dg2lihad968ib9jg19dgf1fi482b27ji0d10c6kfkdge5764", - "bf6o0njkm1ij5in5nh7h94584bd80el02b07el5ojk9k9g0gn906do70gbbnckl048c0kdmao", - "8gb7jnge9p9cdgigo394oa33gfaenc3gnb53eceg4b8511gkkm88b0dod85e5bggpc861d7d5", - "qbbnqhkpleb4o8ndaddpc34h5b2iljn3jgnjdn5k57bi3n9i09hjle9hqgqdpgbnk499mak56", - "akg7e2976arn8i2m53gif0dp59bmfd7mk9erlg2qm3fc76da9glf397eh4ooij9il0nfl9gac", - "mehpbfrj5ah2ef3p2hl637gjp1pm5grqn4037pm1qfgfpr9cfljfc145hljehjjb48bb1n6en", - "rg6ik3agnb3p6t2rtja9h4il76i8fkqlt6gplap3fq6pfr7bbcfcp5ffncf3nm4kamap39hse", - "bk8rp9r9r8pltdqpb7euc6s9rcm33969pcq6uk3mtfoktt86di8589oacbam5tn29b9b6dq3j", - "npth8juld44rss3e57iigjg65po3d1h02heo4r103jmg3ocv89buqtgiov35k39rdf8j9t4ca", - "vrmqlwrrrd0uml1womae49jpa9tadh44fw7mucgk06l0uk4uqwuo37t6kwn7wwrm3a6oq081s", - "n5cft6gvufqd8iksquu2amghokk17gbtpguidc290af634p7k7rhmfu7bf1s62ej4megoa1j4", - "3v3gcrmlfc2tl0tefgkiogj41f6y2tmj9w5bxke8y03xqf49ox8gh9wbrhycrkluicqajtnur", - "z2m7b0sy2tzergtkqts5yj0dkrlfkxls81ijgxgfequizpntcwggv2d4rdzcncd0kj9mrmnrb", - ]; - var negative = [0, 0, // Skip base 0 and 1. - "-100010011110111010111111110001100100111010101000001011010010101100101000", - "-110012122000122102021210112200001000122011010120101201001122000002022102", - "-203210320111001002200122200001312300221100221321010300023323201113122333", - "-133042441230110320040323303341320302144241224443231311022240124413104131", - "-311325230504055004330150145105331121322231155401110315251422505233103112", - "-643153641664240231336166403516403454646560261062114326443664602606315326", - "-200057252627665476551635525303641543165622340301637556323453513664337277", - "-826688166214270516331644053744613530235020517172322840763172114078364165", - "-743042397390679269240157150971957535458122650450558451124173993544604852", - "-73528688500003573942a56a504a2996a1384129563098512a63196697975038692aaa63", - "-616576a2948a9029316290168b71137b027851639a0283150b125b664b74b767a3597805", - "-b875467540719b371b7a36047a7886872a5399c4c630c37149bc3182917a7a7c124475bb", - "-3860411b61d35977721bc81bd715c386c9b70a752940913d265505d8c7c5dd2624b591d7", - "-bad5dd79b083ee0da9a6296664e72c246d827762357116ae7076a22bb369acbc3a201d03", - "-f9b37352aff265124303942a463917a252ff1a2ff4a33777f490b4c103bdcd1a655dbe2c", - "-805fg8c74125214g383a8d8g573c49fa7c4035fbc6db61g5gb5g6beb8f90dae4a9a5g7cc", - "-70aae113459d3h5084b1gg209g3695d20e78d01gcbb71bh1bd4gdge31haf5hc02dghf14e", - "-c55a57haf47b7ih2gh6ea93098ig02b42icga6ead254e0aeeic7g53h5fd6637ge03b2e20", - "-e32f7204624ie596j731g72136cejc25ebbgb0140i4997fcdf477f021d86ci4e10db543a", - "-i7f32c817i3cac1c24c7786k6ig185f47cj1471ki6bb7agiae838027gjge9g59if9f88g6", - "-i30aha2030a9605c270h92e1ca3i02j996hl918gh52fbhb7i16ik1i919ieak3cj384kb61", - "-58jmem8e59li67aellid2083dabh4kh51ci1jg7c6a3k4l1hdgfkdha0fglfm4805kida5b9", - "-cl9iecjg9ak087cad4151lll44296heae2349g70fbjj37998m2ddn6427fgcl2aknhgn1a1", - "-alfjfhho4gf8bi4j2bi3743mhg2aache4c6jcinkmf5ddm7kf9gg350hlja16ealbdlk201j", - "-bhh1146ho3o2m3b839c565hbgjnhjh96oofbmdl7gn8h4f94kli94hkk180o79pc4d2l0721", - "-p00gknh7e05k6a3apg6i9lb46f4a9qeeiq1778ak8il5dcponk5gl2fiednb4pmo1agmoqph", - "-4j8lo4d4p508fnd2hkfb76e8ri81k6hq0op3pr14ca0cn96pccplk7rbahc9cdkdce1q16dn", - "-ednlo3ogf2i8annrel9rm323bpf00meed3oi47n0qrdgnd2n3il4bnsc9s2jd7loh44im8ra", - "-bjjg6fsbpcc2tc1o09m9r6fd6eoq5480har62a5offn9thcfahbno9kf9magl2akl0jgncj9", - "-sonuhat2h60glpbpej9jjado2s5l86122d26tudoc1d6aic2oitu793gk0mlac3dk1dufp1q", - "-i9pbvm53ubh8jqifuarauch8cbgk9cjsl6rlioka1phs1lskg1oosll23hjoli2subgr1rto", - "-w1ncn5t60b5dv669ekwnvk8n2g7djrsl8cdkwun8o3m5divc3jhnkp2381rhj70gc71a6wff", - "-buiq8v33p5ex44ps4s45enj6lrluivm19lcowkvntu72u0xguw13bxgxxe7mdlwt1a4qksae", - "-woiycfmea6i12r2yai49mf4lbd7w2jdoebiogfhnh1i4rwgox57obci8qbsfpb4w07nu19m5", - "-tbttuip1r6ioca6g6dw354o4m78qep9yh03nojx47yq29fqime6zstwllb74501qct8eskxn", - ]; - for (var base = 2; base <= 36; base++) { - var input = positive[base]; - assertEquals(input, ParseBigInt(input, base).toString(base)); - input = negative[base]; - assertEquals(input, ParseBigInt(input, base).toString(base)); - } -} - -// .valueOf -{ - assertEquals(Object(zero).valueOf(), another_zero); - assertThrows(() => { return BigInt.prototype.valueOf.call("string"); }, - TypeError); - assertEquals(-42n, Object(-42n).valueOf()); -} - -// ToBoolean -{ - assertTrue(!zero); - assertFalse(!!zero); - assertTrue(!!!zero); - - assertFalse(!one); - assertTrue(!!one); - assertFalse(!!!one); - - // This is a hack to test Object::BooleanValue. - assertTrue(%CreateIterResultObject(42, one).done); - assertFalse(%CreateIterResultObject(42, zero).done); -} - -// ToNumber -{ - assertThrows(() => isNaN(zero), TypeError); - assertThrows(() => isNaN(one), TypeError); - - assertThrows(() => +zero, TypeError); - assertThrows(() => +one, TypeError); -} -{ - let Zero = {valueOf() { return zero }}; - let One = {valueOf() { return one }}; - - assertThrows(() => isNaN(Zero), TypeError); - assertThrows(() => isNaN(One), TypeError); - - assertThrows(() => +Zero, TypeError); - assertThrows(() => +One, TypeError); -}{ - let Zero = {valueOf() { return Object(NaN) }, toString() { return zero }}; - let One = {valueOf() { return one }, toString() { return NaN }}; - - assertThrows(() => isNaN(Zero), TypeError); - assertThrows(() => isNaN(One), TypeError); - - assertThrows(() => +Zero, TypeError); - assertThrows(() => +One, TypeError); -} - -// ToObject -{ - const ToObject = x => (new Function("", "return this")).call(x); - - function test(x) { - const X = ToObject(x); - assertEquals(typeof x, "bigint"); - assertEquals(typeof X, 'object'); - assertEquals(X.constructor, BigInt); - assertTrue(X == x); - } - - test(0n); - test(-1n); - test(1n); - test(2343423423423423423424234234234235234524353453452345324523452345234534n); -}{ - function test(x) { - const X = Object(x); - assertEquals(typeof x, "bigint"); - assertEquals(typeof X, 'object'); - assertEquals(X.constructor, BigInt); - assertTrue(X == x); - } - - test(0n); - test(-1n); - test(1n); - test(2343423423423423423424234234234235234524353453452345324523452345234534n); -} - -// Literals -{ - // Invalid literals. - assertThrows("00n", SyntaxError); - assertThrows("01n", SyntaxError); - assertThrows("0bn", SyntaxError); - assertThrows("0on", SyntaxError); - assertThrows("0xn", SyntaxError); - assertThrows("1.n", SyntaxError); - assertThrows("1.0n", SyntaxError); - assertThrows("1e25n", SyntaxError); - - // Various radixes. - assertTrue(12345n === BigInt(12345)); - assertTrue(0xabcden === BigInt(0xabcde)); - assertTrue(0xAbCdEn === BigInt(0xabcde)); - assertTrue(0o54321n === BigInt(0o54321)); - assertTrue(0b1010101n === BigInt(0b1010101)); -} - -// Binary ops. -{ - let One = {valueOf() { return one }}; - assertTrue(one + two === three); - assertTrue(One + two === three); - assertTrue(two + One === three); - assertEquals("hello1", "hello" + one); - assertEquals("2hello", two + "hello"); - assertThrows("one + 2", TypeError); - assertThrows("2 + one", TypeError); - assertThrows("one + 0.5", TypeError); - assertThrows("0.5 + one", TypeError); - assertThrows("one + null", TypeError); - assertThrows("null + one", TypeError); - - assertTrue(three - two === one); - assertThrows("two - 1", TypeError); - assertThrows("2 - one", TypeError); - assertThrows("two - 0.5", TypeError); - assertThrows("2.5 - one", TypeError); - - assertTrue(two * three === six); - assertTrue(two * One === two); - assertTrue(One * two === two); - assertThrows("two * 1", TypeError); - assertThrows("1 * two", TypeError); - assertThrows("two * 1.5", TypeError); - assertThrows("1.5 * two", TypeError); - - assertTrue(six / three === two); - assertThrows("six / 3", TypeError); - assertThrows("3 / three", TypeError); - assertThrows("six / 0.5", TypeError); - assertThrows("0.5 / six", TypeError); - assertThrows("zero / zero", RangeError); - assertThrows("zero / 0", TypeError); - - assertTrue(three % two === one); - assertThrows("three % 2", TypeError); - assertThrows("3 % two", TypeError); - assertThrows("three % 2.5", TypeError); - assertThrows("3.5 % two", TypeError); - assertThrows("three % zero", RangeError); - assertThrows("three % 0", TypeError); -} - -// Bitwise binary ops. -{ - let One = {valueOf() { return one }}; - assertTrue((three & one) === one); - assertTrue((BigInt(-2) & zero) === zero); - assertTrue((three & One) === one); - assertTrue((One & three) === one); - assertThrows("three & 1", TypeError); - assertThrows("1 & three", TypeError); - assertThrows("three & true", TypeError); - assertThrows("true & three", TypeError); - assertThrows("three & {valueOf: function() { return 1; }}", TypeError); - assertThrows("({valueOf: function() { return 1; }}) & three", TypeError); - - assertTrue((two | one) === three); - assertThrows("two | 0", TypeError); - assertThrows("0 | two", TypeError); - assertThrows("two | undefined", TypeError); - assertThrows("undefined | two", TypeError); - - assertTrue((three ^ one) === two); - assertThrows("three ^ 1", TypeError); - assertThrows("1 ^ three", TypeError); - assertThrows("three ^ 2.5", TypeError); - assertThrows("2.5 ^ three", TypeError); -} - -// Shift ops. -{ - assertTrue(one << one === two); - assertThrows("one << 1", TypeError); - assertThrows("1 << one", TypeError); - assertThrows("one << true", TypeError); - assertThrows("true << one", TypeError); - - assertTrue(three >> one === one); - assertThrows("three >> 1", TypeError); - assertThrows("0xbeef >> one", TypeError); - assertThrows("three >> 1.5", TypeError); - assertThrows("23.45 >> three", TypeError); - - assertThrows("three >>> one", TypeError); - assertThrows("three >>> 1", TypeError); - assertThrows("0xbeef >>> one", TypeError); - assertThrows("three >>> {valueOf: function() { return 1; }}", TypeError); - assertThrows("({valueOf: function() { return 1; }}) >>> one", TypeError); -} - -// Unary ops. -{ - let One = {valueOf() { return one }}; - assertTrue(~minus_one === zero); - assertTrue(-minus_one === one); - assertTrue(-One === minus_one); - assertTrue(~~two === two); - assertTrue(-(-two) === two); - assertTrue(~One === BigInt(-2)); - - let a = minus_one; - assertTrue(a++ === minus_one); - assertTrue(a === zero); - assertTrue(a++ === zero); - assertTrue(a === one); - assertTrue(++a === two); - assertTrue(a === two); - assertTrue(--a === one); - assertTrue(a === one); - assertTrue(a-- === one); - assertTrue(a === zero); - assertTrue(a-- === zero); - assertTrue(a === minus_one); - - a = {valueOf() { return minus_one }}; - assertTrue(a++ === minus_one); - assertTrue(a++ === zero); - assertTrue(a === one); - - a = {valueOf() { return one }}; - assertTrue(a-- === one); - assertTrue(a-- === zero); - assertTrue(a === minus_one); -} - -// ToPropertyKey -{ - let obj = {}; - assertEquals(obj[0n], undefined); - assertEquals(obj[0n] = 42, 42); - assertEquals(obj[0n], 42); - assertEquals(obj[0], 42); - obj[0]++; - assertEquals(obj[1n - 1n], 43); - assertEquals(Reflect.get(obj, -0n), 43); - assertEquals(obj[{toString() {return 0n}}], 43); - assertEquals(Reflect.ownKeys(obj), ["0"]); -}{ - let obj = {}; - const unsafe = 9007199254740993n; - assertEquals(obj[unsafe] = 23, 23); - assertEquals(obj[unsafe], 23); - assertEquals(Reflect.ownKeys(obj), ["9007199254740993"]); - assertEquals(obj[9007199254740993], undefined); - delete obj[unsafe]; - assertEquals(Reflect.ownKeys(obj), []); -}{ - let arr = []; - assertFalse(4n in arr); - arr[4n] = 42; - assertTrue(4n in arr); - let enumkeys = 0; - for (const key in arr) { - enumkeys++; - assertSame(key, "4"); - } - assertEquals(enumkeys, 1); -}{ - let str = "blubb"; - assertEquals(str[2n], "u"); - assertThrows(() => str.slice(2n), TypeError); -}{ - let obj = {}; - let key = 0; - - function set_key(x) { obj[key] = x } - set_key("aaa"); - set_key("bbb"); - key = 0n; - set_key("ccc"); - assertEquals(obj[key], "ccc"); - - function get_key() { return obj[key] } - assertEquals(get_key(), "ccc"); - assertEquals(get_key(), "ccc"); - key = 0; - assertEquals(get_key(), "ccc"); -}{ - assertSame(%ToName(0n), "0"); - assertSame(%ToName(-0n), "0"); - - const unsafe = 9007199254740993n; - assertSame(%ToName(unsafe), "9007199254740993"); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/comparisons.js b/implementation-contributed/v8/mjsunit/harmony/bigint/comparisons.js deleted file mode 100644 index abc7a8082ae..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/comparisons.js +++ /dev/null @@ -1,501 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -'use strict' - -const minus_one = BigInt(-1); -const zero = BigInt(0); -const another_zero = BigInt(0); -const one = BigInt(1); -const another_one = BigInt(1); -const two = BigInt(2); -const three = BigInt(3); -const six = BigInt(6); - - -// Strict equality -{ - assertTrue(zero === zero); - assertFalse(zero !== zero); - - assertTrue(zero === another_zero); - assertFalse(zero !== another_zero); - - assertFalse(zero === one); - assertTrue(zero !== one); - assertTrue(one !== zero); - assertFalse(one === zero); - - assertFalse(zero === 0); - assertTrue(zero !== 0); - assertFalse(0 === zero); - assertTrue(0 !== zero); -}{ - assertTrue(%StrictEqual(zero, zero)); - assertFalse(%StrictNotEqual(zero, zero)); - - assertTrue(%StrictEqual(zero, another_zero)); - assertFalse(%StrictNotEqual(zero, another_zero)); - - assertFalse(%StrictEqual(zero, one)); - assertTrue(%StrictNotEqual(zero, one)); - assertTrue(%StrictNotEqual(one, zero)); - assertFalse(%StrictEqual(one, zero)); - - assertFalse(%StrictEqual(zero, 0)); - assertTrue(%StrictNotEqual(zero, 0)); - assertFalse(%StrictEqual(0, zero)); - assertTrue(%StrictNotEqual(0, zero)); -} - -// Abstract equality -{ - assertTrue(%Equal(zero, zero)); - assertTrue(%Equal(zero, another_zero)); - assertFalse(%Equal(zero, one)); - assertFalse(%Equal(one, zero)); - - assertTrue(%Equal(zero, +0)); - assertTrue(%Equal(zero, -0)); - assertTrue(%Equal(+0, zero)); - assertTrue(%Equal(-0, zero)); - - assertTrue(%Equal(zero, false)); - assertTrue(%Equal(one, true)); - assertFalse(%Equal(zero, true)); - assertFalse(%Equal(one, false)); - assertTrue(%Equal(false, zero)); - assertTrue(%Equal(true, one)); - assertFalse(%Equal(true, zero)); - assertFalse(%Equal(false, one)); - - assertTrue(%Equal(one, 1)); - assertTrue(%Equal(one, Number(1))); - assertTrue(%Equal(1, one)); - assertTrue(%Equal(Number(1), one)); - - assertTrue(%Equal(minus_one, -1)); - assertTrue(%Equal(minus_one, Number(-1))); - assertTrue(%Equal(-1, minus_one)); - assertTrue(%Equal(Number(-1), minus_one)); - - assertFalse(%Equal(one, -1)); - assertFalse(%Equal(one, Number(-1))); - assertFalse(%Equal(-1, one)); - assertFalse(%Equal(Number(-1), one)); - - assertFalse(%Equal(one, 1.0000000000001)); - assertFalse(%Equal(1.0000000000001, one)); - - assertTrue(%Equal(zero, "")); - assertTrue(%Equal("", zero)); - assertTrue(%Equal(one, "1")); - assertTrue(%Equal("1", one)); - assertFalse(%Equal(one, "a")); - assertFalse(%Equal("a", one)); - - assertTrue(%Equal(one, {valueOf() { return true }})); - assertTrue(%Equal({valueOf() { return true }}, one)); - assertFalse(%Equal(two, {valueOf() { return true }})); - assertFalse(%Equal({valueOf() { return true }}, two)); - - assertFalse(%Equal(Symbol(), zero)); - assertFalse(%Equal(zero, Symbol())); -}{ - assertTrue(zero == zero); - assertTrue(zero == another_zero); - assertFalse(zero == one); - assertFalse(one == zero); - - assertTrue(zero == +0); - assertTrue(zero == -0); - assertTrue(+0 == zero); - assertTrue(-0 == zero); - - assertTrue(zero == false); - assertTrue(one == true); - assertFalse(zero == true); - assertFalse(one == false); - assertTrue(false == zero); - assertTrue(true == one); - assertFalse(true == zero); - assertFalse(false == one); - - assertTrue(one == 1); - assertTrue(one == Number(1)); - assertTrue(1 == one); - assertTrue(Number(1) == one); - - assertTrue(minus_one == -1); - assertTrue(minus_one == Number(-1)); - assertTrue(-1 == minus_one); - assertTrue(Number(-1) == minus_one); - - assertFalse(one == -1); - assertFalse(one == Number(-1)); - assertFalse(-1 == one); - assertFalse(Number(-1) == one); - - assertFalse(one == 1.0000000000001); - assertFalse(1.0000000000001 == one); - - assertTrue(zero == ""); - assertTrue("" == zero); - assertTrue(zero == " \t\r\n"); - assertTrue(one == "1"); - assertTrue("1" == one); - assertFalse(" \t\r\n" == one); - assertFalse(one == "a"); - assertFalse("a" == one); - - assertTrue(zero == "00000000000000" + "0"); - - assertTrue(one == {valueOf() { return true }}); - assertTrue({valueOf() { return true }} == one); - assertFalse(two == {valueOf() { return true }}); - assertFalse({valueOf() { return true }} == two); - - assertFalse(Symbol() == zero); - assertFalse(zero == Symbol()); - - assertTrue(one == "0b1"); - assertTrue(" 0b1" == one); - assertTrue(one == "0o1"); - assertTrue("0o1 " == one); - assertTrue(one == "\n0x1"); - assertTrue("0x1" == one); - - assertFalse(one == "1j"); - assertFalse(one == "0b1ju"); - assertFalse(one == "0o1jun"); - assertFalse(one == "0x1junk"); -}{ - assertFalse(%NotEqual(zero, zero)); - assertFalse(%NotEqual(zero, another_zero)); - assertTrue(%NotEqual(zero, one)); - assertTrue(%NotEqual(one, zero)); - - assertFalse(%NotEqual(zero, +0)); - assertFalse(%NotEqual(zero, -0)); - assertFalse(%NotEqual(+0, zero)); - assertFalse(%NotEqual(-0, zero)); - - assertFalse(%NotEqual(zero, false)); - assertFalse(%NotEqual(one, true)); - assertTrue(%NotEqual(zero, true)); - assertTrue(%NotEqual(one, false)); - assertFalse(%NotEqual(false, zero)); - assertFalse(%NotEqual(true, one)); - assertTrue(%NotEqual(true, zero)); - assertTrue(%NotEqual(false, one)); - - assertFalse(%NotEqual(one, 1)); - assertFalse(%NotEqual(one, Number(1))); - assertFalse(%NotEqual(1, one)); - assertFalse(%NotEqual(Number(1), one)); - - assertFalse(%NotEqual(minus_one, -1)); - assertFalse(%NotEqual(minus_one, Number(-1))); - assertFalse(%NotEqual(-1, minus_one)); - assertFalse(%NotEqual(Number(-1), minus_one)); - - assertTrue(%NotEqual(one, -1)); - assertTrue(%NotEqual(one, Number(-1))); - assertTrue(%NotEqual(-1, one)); - assertTrue(%NotEqual(Number(-1), one)); - - assertTrue(%NotEqual(one, 1.0000000000001)); - assertTrue(%NotEqual(1.0000000000001, one)); - - assertFalse(%NotEqual(zero, "")); - assertFalse(%NotEqual("", zero)); - assertFalse(%NotEqual(one, "1")); - assertFalse(%NotEqual("1", one)); - assertTrue(%NotEqual(one, "a")); - assertTrue(%NotEqual("a", one)); - - assertFalse(%NotEqual(one, {valueOf() { return true }})); - assertFalse(%NotEqual({valueOf() { return true }}, one)); - assertTrue(%NotEqual(two, {valueOf() { return true }})); - assertTrue(%NotEqual({valueOf() { return true }}, two)); - - assertTrue(%NotEqual(Symbol(), zero)); - assertTrue(%NotEqual(zero, Symbol())); -}{ - assertFalse(zero != zero); - assertFalse(zero != another_zero); - assertTrue(zero != one); - assertTrue(one != zero); - - assertFalse(zero != +0); - assertFalse(zero != -0); - assertFalse(+0 != zero); - assertFalse(-0 != zero); - - assertFalse(zero != false); - assertFalse(one != true); - assertTrue(zero != true); - assertTrue(one != false); - assertFalse(false != zero); - assertFalse(true != one); - assertTrue(true != zero); - assertTrue(false != one); - - assertFalse(one != 1); - assertFalse(one != Number(1)); - assertFalse(1 != one); - assertFalse(Number(1) != one); - - assertFalse(minus_one != -1); - assertFalse(minus_one != Number(-1)); - assertFalse(-1 != minus_one); - assertFalse(Number(-1) != minus_one); - - assertTrue(one != -1); - assertTrue(one != Number(-1)); - assertTrue(-1 != one); - assertTrue(Number(-1) != one); - - assertTrue(one != 1.0000000000001); - assertTrue(1.0000000000001 != one); - - assertFalse(zero != ""); - assertFalse("" != zero); - assertFalse(one != "1"); - assertFalse("1" != one); - assertTrue(one != "a"); - assertTrue("a" != one); - - assertFalse(one != {valueOf() { return true }}); - assertFalse({valueOf() { return true }} != one); - assertTrue(two != {valueOf() { return true }}); - assertTrue({valueOf() { return true }} != two); - - assertTrue(Symbol() != zero); - assertTrue(zero != Symbol()); -} - -// SameValue -{ - assertTrue(Object.is(zero, zero)); - assertTrue(Object.is(zero, another_zero)); - assertTrue(Object.is(one, one)); - assertTrue(Object.is(one, another_one)); - assertFalse(Object.is(zero, +0)); - assertFalse(Object.is(zero, -0)); - assertFalse(Object.is(+0, zero)); - assertFalse(Object.is(-0, zero)); - assertFalse(Object.is(zero, one)); - assertFalse(Object.is(one, minus_one)); -}{ - const obj = Object.defineProperty({}, 'foo', - {value: zero, writable: false, configurable: false}); - - assertTrue(Reflect.defineProperty(obj, 'foo', {value: zero})); - assertTrue(Reflect.defineProperty(obj, 'foo', {value: another_zero})); - assertFalse(Reflect.defineProperty(obj, 'foo', {value: one})); -} - -// SameValueZero -{ - assertTrue([zero].includes(zero)); - assertTrue([zero].includes(another_zero)); - - assertFalse([zero].includes(+0)); - assertFalse([zero].includes(-0)); - - assertFalse([+0].includes(zero)); - assertFalse([-0].includes(zero)); - - assertTrue([one].includes(one)); - assertTrue([one].includes(another_one)); - - assertFalse([one].includes(1)); - assertFalse([1].includes(one)); -}{ - assertTrue(new Set([zero]).has(zero)); - assertTrue(new Set([zero]).has(another_zero)); - - assertFalse(new Set([zero]).has(+0)); - assertFalse(new Set([zero]).has(-0)); - - assertFalse(new Set([+0]).has(zero)); - assertFalse(new Set([-0]).has(zero)); - - assertTrue(new Set([one]).has(one)); - assertTrue(new Set([one]).has(another_one)); -}{ - assertTrue(new Map([[zero, 42]]).has(zero)); - assertTrue(new Map([[zero, 42]]).has(another_zero)); - - assertFalse(new Map([[zero, 42]]).has(+0)); - assertFalse(new Map([[zero, 42]]).has(-0)); - - assertFalse(new Map([[+0, 42]]).has(zero)); - assertFalse(new Map([[-0, 42]]).has(zero)); - - assertTrue(new Map([[one, 42]]).has(one)); - assertTrue(new Map([[one, 42]]).has(another_one)); -} - -// Abstract comparison -{ - let undef = Symbol(); - - assertTrue(%Equal(zero, zero)); - assertTrue(%GreaterThanOrEqual(zero, zero)); - - assertTrue(%LessThan(zero, one)); - assertTrue(%GreaterThan(one, zero)); - - assertTrue(%LessThan(minus_one, one)); - assertTrue(%GreaterThan(one, minus_one)); - - assertTrue(%Equal(zero, -0)); - assertTrue(%LessThanOrEqual(zero, -0)); - assertTrue(%GreaterThanOrEqual(zero, -0)); - assertTrue(%Equal(-0, zero)); - assertTrue(%LessThanOrEqual(-0, zero)); - assertTrue(%GreaterThanOrEqual(-0, zero)); - - assertTrue(%Equal(zero, 0)); - assertTrue(%Equal(0, zero)); - - assertTrue(%LessThan(minus_one, 1)); - assertTrue(%GreaterThan(1, minus_one)); - - assertFalse(%LessThan(six, NaN)); - assertFalse(%GreaterThan(six, NaN)); - assertFalse(%Equal(six, NaN)); - assertFalse(%LessThan(NaN, six)); - assertFalse(%GreaterThan(NaN, six)); - assertFalse(%Equal(NaN, six)); - - assertTrue(%LessThan(six, Infinity)); - assertTrue(%GreaterThan(Infinity, six)); - - assertTrue(%GreaterThan(six, -Infinity)); - assertTrue(%LessThan(-Infinity, six)); - - assertTrue(%GreaterThan(six, 5.99999999)); - assertTrue(%LessThan(5.99999999, six)); - - assertTrue(%Equal(zero, "")); - assertTrue(%LessThanOrEqual(zero, "")); - assertTrue(%GreaterThanOrEqual(zero, "")); - assertTrue(%Equal("", zero)); - assertTrue(%LessThanOrEqual("", zero)); - assertTrue(%GreaterThanOrEqual("", zero)); - - assertTrue(%Equal(minus_one, "\t-1 ")); - assertTrue(%LessThanOrEqual(minus_one, "\t-1 ")); - assertTrue(%GreaterThanOrEqual(minus_one, "\t-1 ")); - assertTrue(%Equal("\t-1 ", minus_one)); - assertTrue(%LessThanOrEqual("\t-1 ", minus_one)); - assertTrue(%GreaterThanOrEqual("\t-1 ", minus_one)); - - assertFalse(%LessThan(minus_one, "-0x1")); - assertFalse(%GreaterThan(minus_one, "-0x1")); - assertFalse(%Equal(minus_one, "-0x1")); - assertFalse(%LessThan("-0x1", minus_one)); - assertFalse(%GreaterThan("-0x1", minus_one)); - assertFalse(%Equal("-0x1", minus_one)); - - const unsafe = "9007199254740993"; // 2**53 + 1 - assertFalse(%GreaterThan(eval(unsafe + "n"), unsafe)); - assertFalse(%LessThan(unsafe, eval(unsafe + "n"))); - - assertThrows(() => %LessThan(six, Symbol(6)), TypeError); - assertThrows(() => %LessThan(Symbol(6), six), TypeError); - - var value_five_string_six = { - valueOf() { return Object(5); }, - toString() { return 6; } - }; - assertTrue(%LessThanOrEqual(six, value_five_string_six)); - assertTrue(%GreaterThanOrEqual(six, value_five_string_six)); - assertTrue(%LessThanOrEqual(value_five_string_six, six)); - assertTrue(%GreaterThanOrEqual(value_five_string_six, six)); -}{ - assertFalse(zero < zero); - assertTrue(zero <= zero); - - assertTrue(zero < one); - assertTrue(zero <= one); - assertFalse(one < zero); - assertFalse(one <= zero); - - assertTrue(minus_one < one); - assertTrue(minus_one <= one); - assertFalse(one < minus_one); - assertFalse(one <= minus_one); - - assertFalse(zero < -0); - assertTrue(zero <= -0); - assertFalse(-0 < zero); - assertTrue(-0 <= zero); - - assertFalse(zero < 0); - assertTrue(zero <= 0); - assertFalse(0 < zero); - assertTrue(0 <= zero); - - assertTrue(minus_one < 1); - assertTrue(minus_one <= 1); - assertFalse(1 < minus_one); - assertFalse(1 <= minus_one); - - assertFalse(six < NaN); - assertFalse(six <= NaN); - assertFalse(NaN < six); - assertFalse(NaN <= six); - - assertTrue(six < Infinity); - assertTrue(six <= Infinity); - assertFalse(Infinity < six); - assertFalse(Infinity <= six); - - assertFalse(six < -Infinity); - assertFalse(six <= -Infinity); - assertTrue(-Infinity < six); - assertTrue(-Infinity <= six); - - assertFalse(six < 5.99999999); - assertFalse(six <= 5.99999999); - assertTrue(5.99999999 < six); - assertTrue(5.99999999 <= six); - - assertFalse(zero < ""); - assertTrue(zero <= ""); - assertFalse("" < zero); - assertTrue("" <= zero); - - assertFalse(minus_one < "\t-1 "); - assertTrue(minus_one <= "\t-1 "); - assertFalse("\t-1 " < minus_one); - assertTrue("\t-1 " <= minus_one); - - assertFalse(minus_one < "-0x1"); - assertFalse(minus_one <= "-0x1"); - assertFalse("-0x1" < minus_one); - assertFalse("-0x1" <= minus_one); - - const unsafe = "9007199254740993"; // 2**53 + 1 - assertFalse(eval(unsafe + "n") < unsafe); - assertTrue(eval(unsafe + "n") <= unsafe); - assertFalse(unsafe < eval(unsafe + "n")); - assertTrue(unsafe <= eval(unsafe + "n")); - - assertThrows(() => six < Symbol(6), TypeError); - assertThrows(() => six <= Symbol(6), TypeError); - assertThrows(() => Symbol(6) < six, TypeError); - assertThrows(() => Symbol(6) <= six, TypeError); - - assertFalse(six < {valueOf() {return Object(5)}, toString() {return 6}}); - assertTrue(six <= {valueOf() {return Object(5)}, toString() {return 6}}); - assertFalse({valueOf() {return Object(5)}, toString() {return 6}} < six); - assertTrue({valueOf() {return Object(5)}, toString() {return 6}} <= six); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/dataview.js b/implementation-contributed/v8/mjsunit/harmony/bigint/dataview.js deleted file mode 100644 index bad56d2b699..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/dataview.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var buffer = new ArrayBuffer(64); -var dataview = new DataView(buffer, 8, 24); -var bytes = new Uint8Array(buffer); - -var b1 = 0xff1234567890abcdefn; -var b1_64 = BigInt.asUintN(64, b1); - -dataview.setBigInt64(8, b1); -assertEquals(0x12, bytes[16]); -assertEquals(0x34, bytes[17]); -assertEquals(0x56, bytes[18]); -assertEquals(0x78, bytes[19]); -assertEquals(0x90, bytes[20]); -assertEquals(0xab, bytes[21]); -assertEquals(0xcd, bytes[22]); -assertEquals(0xef, bytes[23]); -assertEquals(b1_64, dataview.getBigInt64(8)); - -dataview.setBigInt64(8, b1, true); // Little-endian. -assertEquals(0xef, bytes[16]); -assertEquals(0xcd, bytes[17]); -assertEquals(0xab, bytes[18]); -assertEquals(0x90, bytes[19]); -assertEquals(0x78, bytes[20]); -assertEquals(0x56, bytes[21]); -assertEquals(0x34, bytes[22]); -assertEquals(0x12, bytes[23]); -assertEquals(b1_64, dataview.getBigInt64(8, true)); - -dataview.setBigUint64(8, b1); -assertEquals(0x12, bytes[16]); -assertEquals(0x34, bytes[17]); -assertEquals(0x56, bytes[18]); -assertEquals(0x78, bytes[19]); -assertEquals(0x90, bytes[20]); -assertEquals(0xab, bytes[21]); -assertEquals(0xcd, bytes[22]); -assertEquals(0xef, bytes[23]); -assertEquals(b1_64, dataview.getBigUint64(8)); - -dataview.setBigUint64(8, b1, true); // Little-endian. -assertEquals(0xef, bytes[16]); -assertEquals(0xcd, bytes[17]); -assertEquals(0xab, bytes[18]); -assertEquals(0x90, bytes[19]); -assertEquals(0x78, bytes[20]); -assertEquals(0x56, bytes[21]); -assertEquals(0x34, bytes[22]); -assertEquals(0x12, bytes[23]); -assertEquals(b1_64, dataview.getBigUint64(8, true)); - -var b2 = -0x76543210fedcba98n; -dataview.setBigInt64(8, b2, true); -assertEquals(0x68, bytes[16]); -assertEquals(0x45, bytes[17]); -assertEquals(0x23, bytes[18]); -assertEquals(0x01, bytes[19]); -assertEquals(0xef, bytes[20]); -assertEquals(0xcd, bytes[21]); -assertEquals(0xab, bytes[22]); -assertEquals(0x89, bytes[23]); -assertEquals(b2, dataview.getBigInt64(8, true)); -assertEquals(0x89abcdef01234568n, dataview.getBigUint64(8, true)); - -var b3 = -0x8000000000000000n; // The int64_t minimum value. -dataview.setBigInt64(8, b3); -assertEquals(b3, dataview.getBigInt64(8)); -assertEquals(-b3, dataview.getBigUint64(8)); - -var b4 = 0x8000000000000000n; -dataview.setBigInt64(8, b4); -assertEquals(-b4, dataview.getBigInt64(8)); -assertEquals(b4, dataview.getBigUint64(8)); - -assertThrows(() => dataview.setBigInt64(0, 1), TypeError); -assertThrows(() => dataview.setBigUint64(0, 1), TypeError); -assertThrows(() => dataview.setInt32(0, 1n), TypeError); -assertThrows(() => dataview.setUint32(0, 1n), TypeError); - -// None of the stores wrote out of bounds. -for (var i = 0; i < 16; i++) assertEquals(0, bytes[i]); -for (var i = 24; i < 64; i++) assertEquals(0, bytes[i]); diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/dec.js b/implementation-contributed/v8/mjsunit/harmony/bigint/dec.js deleted file mode 100644 index 36ca2193dec..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/dec.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0x26ffcdbd233a53e7ca4612f2b02e1f2c1d885c3177e7n, - r: 0x26ffcdbd233a53e7ca4612f2b02e1f2c1d885c3177e6n -}, { - a: 0xf2a29a35193377a223ef0d6d98db95eeb24a4165f288fd2b4an, - r: 0xf2a29a35193377a223ef0d6d98db95eeb24a4165f288fd2b49n -}, { - a: 0x454d22e29e6104n, - r: 0x454d22e29e6103n -}, { - a: -0xb00874640d30e6fce6bf79508378ed17e44dacb48a4200bce536cec462b3c2n, - r: -0xb00874640d30e6fce6bf79508378ed17e44dacb48a4200bce536cec462b3c3n -}, { - a: 0x4c151a24d765249c2bab4a1915b24b80ae437417c5n, - r: 0x4c151a24d765249c2bab4a1915b24b80ae437417c4n -}, { - a: -0xcbd476b1f9ca08ff820941n, - r: -0xcbd476b1f9ca08ff820942n -}, { - a: -0xe848e5830fa1035322b39c2cdd031109ca8n, - r: -0xe848e5830fa1035322b39c2cdd031109ca9n -}, { - a: -0x4d58c5e190f0ebac5bb36ca4d214069f69726c63a5n, - r: -0x4d58c5e190f0ebac5bb36ca4d214069f69726c63a6n -}, { - a: 0x9b396n, - r: 0x9b395n -}, { - a: 0x593921fe8b9d4906cn, - r: 0x593921fe8b9d4906bn -}, { - a: -0xe127928c7cecd6e9ca94d98e858f9c76a0fccac62203aac7710cef1f9e352n, - r: -0xe127928c7cecd6e9ca94d98e858f9c76a0fccac62203aac7710cef1f9e353n -}, { - a: 0xeb14cd952d06eb6fc613016f73b7339cbdd010n, - r: 0xeb14cd952d06eb6fc613016f73b7339cbdd00fn -}, { - a: -0xfdeab6a3dbd603137f680413fecc9e1c80n, - r: -0xfdeab6a3dbd603137f680413fecc9e1c81n -}, { - a: -0x7e9abbdfad170df2129dae8e15088a02b9ba99276a351a05n, - r: -0x7e9abbdfad170df2129dae8e15088a02b9ba99276a351a06n -}, { - a: 0x7b98f57n, - r: 0x7b98f56n -}, { - a: -0x919751deb470faa60d7c5c995c8bed72f9542d710fbbf1341n, - r: -0x919751deb470faa60d7c5c995c8bed72f9542d710fbbf1342n -}, { - a: -0xc5541d89b118a88afdd187228440427c8a24f9d9bn, - r: -0xc5541d89b118a88afdd187228440427c8a24f9d9cn -}, { - a: -0xe6c88a170595fn, - r: -0xe6c88a1705960n -}, { - a: -0xa1ffbfa388c332804dc4dc973n, - r: -0xa1ffbfa388c332804dc4dc974n -}, { - a: 0x67b768ce0c415127a77402861d1901dd7f60a8624ebea6ecafe03adc3cen, - r: 0x67b768ce0c415127a77402861d1901dd7f60a8624ebea6ecafe03adc3cdn -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = --d.a; - if (d.r !== r) { - print("Input: " + d.a.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/div.js b/implementation-contributed/v8/mjsunit/harmony/bigint/div.js deleted file mode 100644 index 8b167140def..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/div.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: -0x1e0f357314bac34227333c0c2086430dae88cb538f161174888591n, - b: 0x390n, - r: -0x8700f00dd65d4009ab90c5d3a887e9c8ad110a72ca7e0f84a40n -}, { - a: 0x9b7a0098fd2d495b4b2c76ff5888ae2a0359cfec6b029e6f3ee9b014802n, - b: 0xbn, - r: 0xe225d252e49ef6563ecc4fff0c69b782ed99e89db2ec895bfe6b2ea974n -}, { - a: 0x6821a6dad136b9f64096337b45d6d947cf0f0b55501e33e66fbc4ef9776n, - b: 0xan, - r: 0xa69c3e2ae8578ff06756b8c53c8af53fb1b1abbbb363863d7f93b18f25n -}, { - a: 0xf42f96f0c7f5a9c656a66122a9bcc57aa386bdb9a834e4174d45795ae408dae14e085cn, - b: -0x5e0d81a1107ef9a38b4f24b4n, - r: -0x298a4d479eac8c186fd61939024b420080b6ae6500c70c1n -}, { - a: 0xbaf7baed984dda3c20f23201f366257c601f7fbcaf51d8b738a68fd92b4n, - b: 0xd24a1eafcn, - r: 0xe39bd4d870d72880e6ad88ec17bcca6bd0eaacfbbd28ba7458n -}, { - a: -0xa658d0683d450bfec3de3fe4253f4348dd8e9a5b1002f6c24ff0en, - b: -0xeffb9a6fa690e0be59aba488b7a7c5a85a65a018242n, - r: 0xb1730d7206n -}, { - a: 0x5a65f7b2dace4550099f4009192caa513468ef4da7e2fd81n, - b: 0xf144f8bfad42d9beaf7b82a46561n, - r: 0x5feae36e8e4932adcb21n -}, { - a: -0x87271b0cbb63eba5e3d70f6af1aa6ec60c0a7884fb8d657b03en, - b: -0xb67f8c18099ce8fa0c0f4ce2852b5590f7a8037d326b0n, - r: 0xbd9602n -}, { - a: 0xd4bc42a434dba1427d387f0858aaf39c6281ffc0f10b8b0996cb3bfn, - b: -0x4198d1fec9b48e38d42f2e295abc39c2a6866527efn, - r: -0x33e39b6878d955n -}, { - a: 0x6a6f0c97d974dfd20337ca611dbdc96433964a206d54n, - b: 0x16c7c6f9e0e4e24d521e463fecb394e2936f3104590n, - r: 0x4an -}, { - a: -0xd09af7515272d81a64307afaed8854c8e2996d8e01d4864n, - b: 0x7521dfcbdf4cfbbf8d3859bf67618c91dc6915718303dbn, - r: -0x1cn -}, { - a: 0xf0da5f24832a2b651aac5dff62b22475212c26e123ff78c34560f35e9bcn, - b: -0xf9n, - r: -0xf79fbd51bf65f518c82563b974e4632b505ebe13adbfb6c297859a98cn -}, { - a: 0x76f4f5b5de8a263514554d62273e51f40342d5df692ae17625ead5b5fen, - b: -0xa5e697c57fb65858604e0a060737e7d9d1en, - r: -0xb78fb2167de210959e57cd3n -}, { - a: -0xa714d4d9d747fa5258f80f3887f4dda8a11423050046282n, - b: -0xaa3b218ab92e21920a707487fdbn, - r: 0xfb437487ba8580181ca3n -}, { - a: -0x165f3c659ac4157cb3af081b3fc42c0c788e2df501596c2b8n, - b: -0xfaa86d6eca3n, - r: 0x16d94bce4865cf842d17a399d8b4467f3f369fn -}, { - a: 0x268d93a21aab44c52f961b1c97c002f427eb8b11e0707e3879c3a348f8e2b1c40c122n, - b: 0x70ccda2e2bba53b124c877bb4edbdbd387742cfe59d9bn, - r: 0x577effaeb2338647e38edb43n -}, { - a: 0x3a13493c9e8d3d986a2a56c0aa811be408e1560f30ae155n, - b: -0x62a1a35fd7e184be45a1d0ba67888f0d982afb7a90an, - r: -0x96bcn -}, { - a: -0x2a3f3f90ea280bf64e7e460f004ea4fb2553637cb7c844f349f045ffdbn, - b: -0xf2af2581bddfd9bfc1158c86211c4f4b169c0b1n, - r: 0x2c90ab8577b8d0ee86en -}, { - a: 0x8fd5f992d4d767c8a360ad32142fa9e9d87bc0036d1d6bb7aa7471dd7f38bn, - b: 0xe70n, - r: 0x9f6709805e05fd8b3c433e470387f06391b6948459e4c2bc072747e2a0n -}, { - a: 0x52c0e08ba0a22a00498058dfeeaab2b21909e81e30c48652699n, - b: 0x1d516c96827an, - r: 0x2d2967f58654a5d30934348b225bf2b6e2a3123dn -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a / d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: /"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/exp.js b/implementation-contributed/v8/mjsunit/harmony/bigint/exp.js deleted file mode 100644 index 7fbc2dc402f..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/exp.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertEquals(1n, (-1n) ** 0n); -assertEquals(-1n, (-1n) ** 1n); -assertEquals(1n, (-1n) ** 2n); -assertEquals(-1n, (-1n) ** 3n); -assertEquals(1n, (-1n) ** 4n); -// Multi-digit exponents. -assertEquals(1n, (-1n) ** (2n ** 80n)); -assertEquals(-1n, (-1n) ** ((2n ** 80n) + 1n)); - -assertEquals(1n, 0n ** 0n); -assertEquals(0n, 0n ** 1n); -assertEquals(0n, 0n ** 23n); - -assertEquals(1n, 1n ** 0n); -assertEquals(1n, 1n ** 1n); -assertEquals(1n, 99n ** 0n); - -assertEquals(2n, 2n ** 1n); -assertEquals(4n, 2n ** 2n); -assertEquals(8n, 2n ** 3n); -assertEquals(16n, 2n ** 4n); -assertEquals(151115727451828646838272n, 2n ** 77n); - -assertEquals(3n, 3n ** 1n); -assertEquals(9n, 3n ** 2n); -assertEquals(27n, 3n ** 3n); -assertEquals(81n, 3n ** 4n); -assertEquals(243n, 3n ** 5n); -assertEquals(30903154382632612361920641803529n, 3n ** 66n); - -assertEquals(1n, (-2n) ** 0n); -assertEquals(-2n, (-2n) ** 1n); -assertEquals(4n, (-2n) ** 2n); -assertEquals(-8n, (-2n) ** 3n); -assertEquals(16n, (-2n) ** 4n); -assertEquals(-32n, (-2n) ** 5n); - -assertEquals(1n, (-3n) ** 0n); -assertEquals(-3n, (-3n) ** 1n); -assertEquals(9n, (-3n) ** 2n); -assertEquals(-27n, (-3n) ** 3n); -assertEquals(81n, (-3n) ** 4n); -assertEquals(-243n, (-3n) ** 5n); - -assertThrows(() => 3n ** -2n, RangeError); // Negative exponent. -assertThrows(() => 2n ** (1024n ** 4n), RangeError); // Too big. diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/inc.js b/implementation-contributed/v8/mjsunit/harmony/bigint/inc.js deleted file mode 100644 index 78426003935..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/inc.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0xb3df90n, - r: 0xb3df91n -}, { - a: 0xaacd53fc9545eb394304a3c69caba730230a6527730an, - r: 0xaacd53fc9545eb394304a3c69caba730230a6527730bn -}, { - a: 0x32efa4ba1c29098be7df8fa0f3c74a183612ecn, - r: 0x32efa4ba1c29098be7df8fa0f3c74a183612edn -}, { - a: -0xcabed06f63ad50406b96187208cf9ec6faf46413ce83e280c31ben, - r: -0xcabed06f63ad50406b96187208cf9ec6faf46413ce83e280c31bdn -}, { - a: -0x8a40ce58f753466f4008faa0814e76d9b594908df0e42cf6ad4a781e60ce2n, - r: -0x8a40ce58f753466f4008faa0814e76d9b594908df0e42cf6ad4a781e60ce1n -}, { - a: -0x848c8fc23bc93801n, - r: -0x848c8fc23bc93800n -}, { - a: -0x13a8316c5af3f3b06aab6642e717a7bdn, - r: -0x13a8316c5af3f3b06aab6642e717a7bcn -}, { - a: -0x5f5e517cf7efe577cd689c36d1beb3d9df4cfdc3fcb55ed9e9d8fan, - r: -0x5f5e517cf7efe577cd689c36d1beb3d9df4cfdc3fcb55ed9e9d8f9n -}, { - a: 0n, - r: 0x1n -}, { - a: 0x107d5ec8048c4d715e213ec74f9f04006d3f2d90dd95d17c3e82f7a4ccn, - r: 0x107d5ec8048c4d715e213ec74f9f04006d3f2d90dd95d17c3e82f7a4cdn -}, { - a: 0xb8e09fc6037a75bbfn, - r: 0xb8e09fc6037a75bc0n -}, { - a: 0x515d1b999660074184n, - r: 0x515d1b999660074185n -}, { - a: 0xe12def67dc33628638612b8137d0fa425ea2dn, - r: 0xe12def67dc33628638612b8137d0fa425ea2en -}, { - a: 0x96a9n, - r: 0x96aan -}, { - a: -0x9df122a299a5e65b275028n, - r: -0x9df122a299a5e65b275027n -}, { - a: 0x20dd05bfb5ed6ebfb05da9a7488800b8895fbfe6d709eecb6071cda73e13n, - r: 0x20dd05bfb5ed6ebfb05da9a7488800b8895fbfe6d709eecb6071cda73e14n -}, { - a: 0xb38294d2e5523534c56dd6ef38ba744b29e3a3bb6f863f1aeaen, - r: 0xb38294d2e5523534c56dd6ef38ba744b29e3a3bb6f863f1aeafn -}, { - a: -0x6b58de4ba9b2699ea6777dc1adc0b2486n, - r: -0x6b58de4ba9b2699ea6777dc1adc0b2485n -}, { - a: 0xf40028a48894df5d81131046477a22e55cbead5n, - r: 0xf40028a48894df5d81131046477a22e55cbead6n -}, { - a: -0x44cbe6c7f5e7e879d3cb2eaffc4af0a43affc094218031a1f123746549dd7b8cdcbdn, - r: -0x44cbe6c7f5e7e879d3cb2eaffc4af0a43affc094218031a1f123746549dd7b8cdcbcn -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = ++d.a; - if (d.r !== r) { - print("Input: " + d.a.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/json.js b/implementation-contributed/v8/mjsunit/harmony/bigint/json.js deleted file mode 100644 index cf392234c5c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/json.js +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -'use strict' - - -// Without .toJSON method. - -assertEquals(undefined, BigInt.prototype.toJSON); -assertThrows(() => JSON.stringify(42n), TypeError); -assertThrows(() => JSON.stringify(Object(42n)), TypeError); - - -// With .toJSON method that returns a string. - -BigInt.prototype.toJSON = function() { - assertEquals("bigint", typeof this); - return String(this); -} -assertEquals("\"42\"", JSON.stringify(42n)); - -BigInt.prototype.toJSON = function() { - assertEquals("object", typeof this); - return String(this); -} -assertEquals("\"42\"", JSON.stringify(Object(42n))); - - -// With .toJSON method that returns a BigInt primitive. - -BigInt.prototype.toJSON = function() {return this}; -assertThrows(() => JSON.stringify(42n), TypeError); -assertThrows(() => JSON.stringify(Object(42n)), TypeError); - - -// With .toJSON method that returns a BigInt object. - -BigInt.prototype.toJSON = function() {return Object(this)}; -assertThrows(() => JSON.stringify(42n), TypeError); -assertThrows(() => JSON.stringify(Object(42n)), TypeError); - - -// Without .toJSON method but with a replacer returning a string. - -delete BigInt.prototype.toJSON; -let replacer; - -replacer = function(k, v) { - assertEquals("bigint", typeof v); - assertTrue(42n == v); - return "43"; -} -assertEquals("\"43\"", JSON.stringify(42n, replacer)); - -replacer = function(k, v) { - assertEquals("object", typeof v); - assertTrue(42n == v); - return "43"; -} -assertEquals("\"43\"", JSON.stringify(Object(42n), replacer)); - - -// Without .toJSON method but with a replacer returning a BigInt primitive. - -assertEquals(undefined, BigInt.prototype.toJSON); - -replacer = () => 43n; -assertThrows(() => JSON.stringify(42n, replacer), TypeError); -assertThrows(() => JSON.stringify(Object(42n), replacer), TypeError); - - -// Without .toJSON method but with a replacer returning a BigInt object. - -assertEquals(undefined, BigInt.prototype.toJSON); - -replacer = () => Object(43n); -assertThrows(() => JSON.stringify(42n, replacer), TypeError); -assertThrows(() => JSON.stringify(Object(42n), replacer), TypeError); diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/misc.js b/implementation-contributed/v8/mjsunit/harmony/bigint/misc.js deleted file mode 100644 index 1a115473537..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/misc.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Create BigInt in large object space for which MakeImmutable reduces the -// length. -const x = 2n ** (2n ** 22n); -assertEquals(1n, x - (x - 1n)); diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/mod.js b/implementation-contributed/v8/mjsunit/harmony/bigint/mod.js deleted file mode 100644 index 01f64ad4ca9..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/mod.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0xaed3c714bb42a73d708bcf1dc9a9deebadc913ef42bac6a6178a60n, - b: -0xf3d6bd1c059b79n, - r: 0x2a4f893c8ece3n -}, { - a: -0x8a6d8cb8e32aba50e08fd50aecbda6821e1863bf9a2n, - b: 0xe19ab8530bce542ec6b4c848fc383a2b688f07976dd523dabn, - r: -0x8a6d8cb8e32aba50e08fd50aecbda6821e1863bf9a2n -}, { - a: 0x7cd19a308b217ddd9dcda69ebe37767f09a483cb87060314aeade6f6c619d27c3n, - b: 0xae30b5c754e0an, - r: 0x619154797565dn -}, { - a: -0xaa90d777e849974d7ebebd2ed76dce635e36713e9e0c97cen, - b: 0xcc2bc7239bf83ecafc74b25750981df258n, - r: -0xa32d47bc250c5a41d147a862099778685en -}, { - a: 0x7386178fe1159c4ca3c4e5caa6eda4413926047efd22007931c22ab54bn, - b: 0xc05100caa704bca144n, - r: 0x55ead7f83d4a795753n -}, { - a: -0xa48867cf46692351a59bc89c0ddc9a6d2cd9f72578c0bab72d8389n, - b: 0x77c2eec6cc0bef33dd4756b223c35a0f2b528f8648a7n, - r: -0x184a6eed8fcd32399c59605c7255b5614b388be24b44n -}, { - a: 0xac7681c26f78191107c9cde47f984fc7ffb7bffd0a055fc14n, - b: -0xe2d91d1a0e1edc3f806a24c36f7ca0a8a9b44b66c9n, - r: 0xdf0b3460335089fca0b1da676b3d1e9caf15afd3den -}, { - a: -0x3035011f4adba0c032ddc2fc884ff7663b45cb3baebec0fn, - b: 0xcc27f9a21470911a61aae50ae118ebcf85ea4dn, - r: -0xc5ea1db5af95ccdce2844b13b82659be1ac2adn -}, { - a: -0x2dbe79c42b1e8db7aea4ca9cfaf1350528b096e23f69ea322cn, - b: -0x82f7e4f2ee432485n, - r: -0x824bddbaf61ce383n -}, { - a: 0xc5c7fbeb60fdb9f8e8347ebf9fe303e3223394b2db93ce2n, - b: 0xcd988b4cb278a39fd3ae58c16616855f01fab0fb0n, - r: 0xc3b5157e680c8ca66df1bd640c6ad1601bd612b02n -}, { - a: 0x73dd1e27450edb450fe4bd70494a8ad85a8ad9691bc40bf500a1n, - b: 0xc8fb467f71be8a6b965d21857ecfdn, - r: 0x646e6d9fa1e2eb2933b2e5a837d37n -}, { - a: -0xecb217583ec4240399bfa34560b45f1fd08efd0ebb56b2dn, - b: 0xeba34abn, - r: -0xc2d347bn -}, { - a: 0x29c8a9854802b9317b90683eb82609b3aa695598807fea0482a56567n, - b: -0xabe5e55b228f8n, - r: 0x52303615b525fn -}, { - a: 0x7b532ee90b3945dbed20180632f46c90d0edb558e39456103f50e5a74ff1dn, - b: 0x17n, - r: 0x6n -}, { - a: -0x6f1dbf8dedea796a2423fad9688d71340963da3a4f005f13e9cd4aa03b96c864552cn, - b: -0x408a4f36ec4a1b74642fb0a4559en, - r: -0x33c06c53e6e47ca87f36447f1b0n -}, { - a: -0xe77508ff49bc76c78678676ca1edc82eb167f3b07d3208d89d26582ef74d60n, - b: -0xf005fb1a8b29035c72980abe4a0715c90n, - r: -0x159e8c7616079663b4e12765a05cc6d40n -}, { - a: 0x626749ef019017f53b2c686f26594e6d3c5f247cf0ed7024cca277n, - b: 0x5bd931ea8c6939115ad69f6ce3c6bbc300320n, - r: 0x3a4b041c36d0a45ef932745eab473943b1a97n -}, { - a: -0x960dde134b881d3366d659c7d8c3eb6346f50c08c6f78en, - b: -0xc9e7fa60f6ce1997012f5a6164138447fa248754985905dc6n, - r: -0x960dde134b881d3366d659c7d8c3eb6346f50c08c6f78en -}, { - a: 0x702dc0033e09e9e58ec3fc96f861587ad13cea1ed7b7eb301n, - b: 0x71f0c97687b4f3318be2fe54b90273n, - r: 0x4e1859254ac1d42f7c812decef00a3n -}, { - a: 0x39376649769a0abb26133deee934330ef21a2f90ea89476569630021af6023235n, - b: -0x4aaaec4085f65ccc9d547beb122160afcbb3n, - r: 0x3027d5ebb37c5aa438f11dfcafa3b003b91bn -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a % d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: %"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/mul.js b/implementation-contributed/v8/mjsunit/harmony/bigint/mul.js deleted file mode 100644 index 77c3a1c9bbf..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/mul.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0x2bf1f236c2df29f7c99be052dfe1b69ae158d777fea487af889f6259f472c0n, - b: -0xae0090dfn, - r: -0x1dde8b7f987479d7b308e2b8a122703d417f921fd4ab04fcac81439ace4f445c7bf540n -}, { - a: -0x71cd629b6682b5b1c50f9436ded88468bcn, - b: -0xb24ce1d11726048158fb42c02e9361973193n, - r: 0x4f42fbebca0bc1746d114996d9c9cceb4065c347da31dc0efa88db41f1f724aef81ff4n -}, { - a: 0xef7c15fb2256338bd0650fa51c28551108ccb9828850f1b415d0c8f1a47fc0e2f86n, - b: 0xc17n, - r: 0xb4f552dbf2c20292f5475d025276b9c70f16316c91e0a9a2833bf2d616bc484f808d0an -}, { - a: 0xcc8a5a56c623d9f9be2103bc237976f26n, - b: 0x13a02fec7cfd49c5a081c06bbbaac5c70dc3an, - r: 0xfae417740ef1963ad78aa4252159d986593845690f4f5fe759f6d913d79810473d69cn -}, { - a: -0x519n, - b: 0x7de5551df3ec2619a89139153663a79f8bdb47047423c8070d7cfddc26d43af8ee9n, - r: -0x281c60ee5b06ece38cc4c4bfd2242017c4ff0cd05b40a66abf3c22a1741efe09ef81c1n -}, { - a: 0x6fb9ba0d0n, - b: -0x86b45ffb80fbf2b61abc14b28855780f83e187fd6ae26e09d28d6f05260e1n, - r: -0x3ac9efdd4e930fcbf654819060b858f182f7768db6bc72deb8d734d2ea10fa02b656d0n -}, { - a: -0xde2e7a0883a63d69d2120108f92943e4a34b63e8468c12b38a0519a6498n, - b: -0xb1857781fefn, - r: 0x9a11f83db6da31f78a2415d3891f79a0f6aafc69553fb458a2bc3ae2e2f65cb09251e8n -}, { - a: -0x2c90284ebdb5237ba7c9562f596ef9a21254a3n, - b: -0xb55feab8b45cc1bcdcfc5585c9114de0n, - r: 0x1f929eda8d33ec2ded8d76382a4cb731f805d28e827521a27154b6618a6f87ed5215a0n -}, { - a: 0x11ffe68d26ca29eac43b64n, - b: -0xe3311b278fec1fb3f8f59acfd9147c773197fc54c66b25bdn, - r: -0xff95d530fd53e61744d86d09f9ab5401b1efb2133af5c47ffeca31aca22a4da414cd4n -}, { - a: 0xbda74de44eeb2995a4185325014863n, - b: 0xf99164c7248a0372d72d82cbf65fdb345c84bca6n, - r: 0xb8e3712f119fefa47168950100b33aa1ec4e61a970d0eec2d2dd4b925cc4dfd709a432n -}, { - a: 0x47fc0bb6d761e12a1f7cf2a14f4cc777486b22516ca339641fn, - b: -0xd2fa2494ae242494f307n, - r: -0x3b531808ad9095f9f904dba47ef4a0aef54f736cc2836accb7b1b70f07ee862e8729d9n -}, { - a: 0x91d09f35203fcf69974d347ab718912cn, - b: 0xfc2d9a00611e4e1767b67db898b951e5d2bbb9n, - r: 0x8fa3561bff2cc00a780a71e5b16d6092296514d401c88fc54e04a91062775cb4e40cccn -}, { - a: 0x5a5b1ede360dafcac08c92f4b809e401502df5ab8569303a2n, - b: -0xb64d963b1ac4eb46ddd65n, - r: -0x40582a6083cd0feb5b33ac138feaf9250b5084e561807e56a8415c810a1bf9861d48ean -}, { - a: 0xf68275dc25d6af7dde130n, - b: 0xfe330b766e44f479e342e3315812e977d4d5e39bffe42111dn, - r: 0xf4c697f78dc7c9b3207b50cf2cf3035aa065e96c37c0be3345f71f34096f057e76b270n -}, { - a: 0x77009ed053f71n, - b: -0x647aecfc2af4079a586fbba99070c3f51d5465d9a4fd8c12cdab10854n, - r: -0x2eb5627edb1072a65a1db2d243d0bf2eeb5c3ff6ad61ec1063e9ee40b783bd06d55914n -}, { - a: 0xccfa15bb6125b01bece5a919ab5e9128e784d63e50b5990ba8047a7effn, - b: 0x1a366ac48cdan, - r: 0x14fcf8728aa3dc5ef26b077dfc012d592c3a0cdfc3331942f921f037eea5af9eff9926n -}, { - a: 0x4fc54a59f2n, - b: -0x93bbcbd684987407c4ec4a3cbdc7c4821c33ca20ca8449b0055905e9a8ffn, - r: -0x2e08ce533fdc7bb8a3a2280cfb116c85837b74606ed25f8daad623baa4ac7de758680en -}, { - a: -0xcf21626f318089a85738f7e9cdcf0a477f4d880ce58679n, - b: -0xc7ca8704a49fdb8f9567c68cn, - r: 0xa1a6d11a77d8e1b723bfa0242407a454274145c31bb6ede29bb0e3883b08951b36202cn -}, { - a: 0x20c3cb19e51d4e2ac2c89f26e052bef8n, - b: -0xab2a148297108425ebd2fd17d897f647e0792fn, - r: -0x15e82b69a0eaed04cd140c6aed3b1f5bc0fc5de7ceddcb2d77615767b19dd82c744788n -}, { - a: -0xcc4f48f45d8165569348fb995370n, - b: 0x140cc111df0a06e32335478ded744eb3a737a53409n, - r: -0x10005f808c07a1d91faac090aad06804b491919a9d2ed58f6caa52448ad97bd486aef0n -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a * d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: *"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/neg.js b/implementation-contributed/v8/mjsunit/harmony/bigint/neg.js deleted file mode 100644 index 15b2fb4ee0e..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/neg.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0xcn, - r: -0xcn -}, { - a: -0x5a3d0f6cdb7987a2d262838c05359f786a484d052529n, - r: 0x5a3d0f6cdb7987a2d262838c05359f786a484d052529n -}, { - a: -0x98d8c6cbfd67b6b652b7a4670478f6706e06a3n, - r: 0x98d8c6cbfd67b6b652b7a4670478f6706e06a3n -}, { - a: -0xe66ac692ff012bd0f4ca38804628f71ff411aede09c59597n, - r: 0xe66ac692ff012bd0f4ca38804628f71ff411aede09c59597n -}, { - a: -0x97e1e0c13c0c0c420aca92268ea802047c30570335de0000dn, - r: 0x97e1e0c13c0c0c420aca92268ea802047c30570335de0000dn -}, { - a: 0x6b2eddc3b212913abed4f5c84e3eee64d6463224dff8n, - r: -0x6b2eddc3b212913abed4f5c84e3eee64d6463224dff8n -}, { - a: -0xfcd42a712dd928deb51ab2d151fa6bee0f4dd2fa6n, - r: 0xfcd42a712dd928deb51ab2d151fa6bee0f4dd2fa6n -}, { - a: -0x75ba8e0e92a05ff552f2dc3afb39a4dn, - r: 0x75ba8e0e92a05ff552f2dc3afb39a4dn -}, { - a: 0x4570376e541836fab5190e08an, - r: -0x4570376e541836fab5190e08an -}, { - a: 0x15aca33cfb06n, - r: -0x15aca33cfb06n -}, { - a: 0x7ec0027910c44b791bf193c6f25487a9435n, - r: -0x7ec0027910c44b791bf193c6f25487a9435n -}, { - a: -0x31f0d92f358618e6b29a2899bd988533838d33839fb37n, - r: 0x31f0d92f358618e6b29a2899bd988533838d33839fb37n -}, { - a: 0xb4f84118d797244c982f1n, - r: -0xb4f84118d797244c982f1n -}, { - a: 0x626n, - r: -0x626n -}, { - a: 0x9f35c8968457d07608699df5894c0542f35b73b0b5ce8423aan, - r: -0x9f35c8968457d07608699df5894c0542f35b73b0b5ce8423aan -}, { - a: -0xb5be1f7937895adc457f051d1f4bc74d556b432dn, - r: 0xb5be1f7937895adc457f051d1f4bc74d556b432dn -}, { - a: 0xcacb413b3cab5a5f5086511728d1afbaa82ca41e69805daf47503e2n, - r: -0xcacb413b3cab5a5f5086511728d1afbaa82ca41e69805daf47503e2n -}, { - a: -0x77ef7cbb15cee20a519a1n, - r: 0x77ef7cbb15cee20a519a1n -}, { - a: -0x71ac9bfe7f5f70038c7fn, - r: 0x71ac9bfe7f5f70038c7fn -}, { - a: -0x500a02b8fd66ee1067022c02c7241acdc42b947bfb933aa95a8d6n, - r: 0x500a02b8fd66ee1067022c02c7241acdc42b947bfb933aa95a8d6n -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = -d.a; - if (d.r !== r) { - print("Input: " + d.a.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/not.js b/implementation-contributed/v8/mjsunit/harmony/bigint/not.js deleted file mode 100644 index 27b6a78ba6f..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/not.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0x9f0305cd75e4n, - r: -0x9f0305cd75e5n -}, { - a: -0xe8e9c8312f553c9n, - r: 0xe8e9c8312f553c8n -}, { - a: -0x1a29f0783a66534da3c024ad1cc854073f886888fen, - r: 0x1a29f0783a66534da3c024ad1cc854073f886888fdn -}, { - a: -0xfc2cc19496c1ced95be832ca5246d41c526b9fa28b88bcd39813aa336n, - r: 0xfc2cc19496c1ced95be832ca5246d41c526b9fa28b88bcd39813aa335n -}, { - a: 0x13ebn, - r: -0x13ecn -}, { - a: 0x4c12d642b2a132f0c927ec7504b530fb45d5e249163ffdc59feb3de31881n, - r: -0x4c12d642b2a132f0c927ec7504b530fb45d5e249163ffdc59feb3de31882n -}, { - a: 0x49637a624cb8782002e3e0874ad76215e188cee948c7ce7b0f66e1d0n, - r: -0x49637a624cb8782002e3e0874ad76215e188cee948c7ce7b0f66e1d1n -}, { - a: -0x81cbae84e6753b885ada46c0bf72368c083fed622fn, - r: 0x81cbae84e6753b885ada46c0bf72368c083fed622en -}, { - a: -0xcdf793acfdd08b6n, - r: 0xcdf793acfdd08b5n -}, { - a: 0x88n, - r: -0x89n -}, { - a: -0x1fn, - r: 0x1en -}, { - a: 0x5c3278e76266b9e93d63eb4f2aa53716220aa1n, - r: -0x5c3278e76266b9e93d63eb4f2aa53716220aa2n -}, { - a: -0x9f4fe05n, - r: 0x9f4fe04n -}, { - a: 0xdn, - r: -0xen -}, { - a: -0x74a9d63d02bd1393b311211e35c8b2d11e2367ffffb812683365f02d98n, - r: 0x74a9d63d02bd1393b311211e35c8b2d11e2367ffffb812683365f02d97n -}, { - a: 0x8a2831ae3e1b6b21a7b3d7ee921a0c0edf29b272d654f647169a5a6141d3aaf41439n, - r: -0x8a2831ae3e1b6b21a7b3d7ee921a0c0edf29b272d654f647169a5a6141d3aaf4143an -}, { - a: 0xa2ef28270a7e668e190bc303537f5a8ba3f0d59bcn, - r: -0xa2ef28270a7e668e190bc303537f5a8ba3f0d59bdn -}, { - a: -0x4f8bd11ee4ef38682a0c94en, - r: 0x4f8bd11ee4ef38682a0c94dn -}, { - a: 0x5436d0721d1282755068add3b5ab5424cb455fad50811a9afff0be5n, - r: -0x5436d0721d1282755068add3b5ab5424cb455fad50811a9afff0be6n -}, { - a: 0x5db6907c92529f517d24a6ff7303de42cb9059ae2adc0c22n, - r: -0x5db6907c92529f517d24a6ff7303de42cb9059ae2adc0c23n -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = ~d.a; - if (d.r !== r) { - print("Input: " + d.a.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/or.js b/implementation-contributed/v8/mjsunit/harmony/bigint/or.js deleted file mode 100644 index 3203258c21b..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/or.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0x77a87n, - b: 0xde08e7433fb9584911b8cb4bc7eed802299b4489fc635974d063847da4e8b461df5dn, - r: 0xde08e7433fb9584911b8cb4bc7eed802299b4489fc635974d063847da4e8b467ffdfn -}, { - a: -0x1d3ff6f353f2d035ed7b4b8e5e4ae1c8d162n, - b: -0xcf829b11c2f996f388b22cd03aeb75ec434f3be8fde6466n, - r: -0x192f308302c00024a55a4004520a81c84062n -}, { - a: 0x6dbbc93af9a9c222187dn, - b: -0xfaa906348dc49859c34bc7c6n, - r: -0xfaa9020404c400500149c781n -}, { - a: 0xf8n, - b: 0x4388532n, - r: 0x43885fan -}, { - a: -0x3ee35e1823b91414618f05995e11594920539921e9440n, - b: -0x58c5811ee19db01b7d9824c49682af55956119cfbc9868287ef138da08ee3n, - r: -0x3c80040002800414010101891c1048082051180008423n -}, { - a: -0xa2a70c5da9a7e98f242e82d518n, - b: 0n, - r: -0xa2a70c5da9a7e98f242e82d518n -}, { - a: 0x7868475f450ff2b15a03eccb4d26ce8711383f615cn, - b: 0x1c62774e1db239cb461c4190b54de4d872f9484cf82ed1258cc14580cf29f608n, - r: 0x1c62774e1db239cb461c41f8fd4fffdd7ffbf95efbeedb6daecfc791ff3ff75cn -}, { - a: 0x865d033028551a71f6f9f8d7b36cf9819n, - b: -0x68e30391d9831a4ea3e65b2e433f55ba398n, - r: -0x68610290c9830a4482000206000c1102387n -}, { - a: -0x817a0dacbafbaf40ef819fc62a8efc4b4960n, - b: -0x5af313e32a5386e29cb5d2b34d54f04da389f33d52444f177671e41n, - r: -0x12a04840a008a008f019504008074430841n -}, { - a: -0xef8c9475210c0a31aa12c34db6e7737609c75b78a54cn, - b: -0xba91b4ec3a5390db84febaeaddb8209155413e2e02fb0n, - r: -0xa9080441210808300a02820d9282011400034260250cn -}, { - a: -0xf4e707078d14001959f4n, - b: 0n, - r: -0xf4e707078d14001959f4n -}, { - a: 0x601f0n, - b: 0x246fbfn, - r: 0x266fffn -}, { - a: -0x9ccd3d1b6d4bcde8643ad641d395980bn, - b: -0x379e57728185fd098383a23c7f56dn, - r: -0x13901650808484018100003859009n -}, { - a: 0xcc4b3ba719bd1b37f254f36a72ee375ad22abn, - b: -0xb0c220750f2dad9de91ffb8a7bbf8ffefen, - r: -0x4000640e0c8098a0095880188a02dc55n -}, { - a: 0xa230c33b718cd563f9c1577f4f8da160851902341ba1a6e6bdcbec413d98a18n, - b: 0xc2f4e2db2df59ccc34690479ebe64df967n, - r: 0xa230c33b718cd563f9c1577f4f8dad6fcf3db2ff5bede7e6bdcffeff7ddfb7fn -}, { - a: -0x5fbac9a8f47n, - b: 0xf1bfe6f97e8f516685372b06ea89659c3df4ab3f6779e5c0b41e1b570fn, - r: -0x54ba0808841n -}, { - a: -0x7fd2d4a4c60ba795e2fcn, - b: 0x33dcea557cc5156dacb9ad7b252598172f92d8cf7d38e69f0a0n, - r: -0xd02d02000082194025cn -}, { - a: -0x3833089d7cf4e0181247572037a90cc2506342a2191137345e3a0e10n, - b: 0xededf5c7e54cd86afc6d838205c8a78cac7a0e410792a21cf3e4e38dd8ca2dd80n, - r: -0x283208103824c01802450720300908c2004142200111072052180210n -}, { - a: -0x188818a47abbfe64357ccd1a33fb5cb875f86n, - b: -0x14faf1811ee737d048c025f7a1fe156f7e90d23a699d040609e631836500df2e30cdn, - r: -0x108808202299d040201c411832500cb061085n -}, { - a: 0xf60c0260022920bdbd1c837778657936956c15b4cb1n, - b: 0xa10df3b397c24n, - r: 0xf60c0260022920bdbd1c8377786579b79dffb7b7cb5n -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a | d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: |"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/regress-tonumbercode.js b/implementation-contributed/v8/mjsunit/harmony/bigint/regress-tonumbercode.js deleted file mode 100644 index 3bf0148c95f..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/regress-tonumbercode.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x, b) { - if (b) return Math.trunc(+(x)) - else return Math.trunc(Number(x)) -} - -f("1", true); -f("2", true); -f("2", false); -%OptimizeFunctionOnNextCall(f); -f(3n); diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/regressions.js b/implementation-contributed/v8/mjsunit/harmony/bigint/regressions.js deleted file mode 100644 index b4a55c1ffdd..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/regressions.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = 5n; -var b = a / -1n; -assertEquals(5n, a); -assertEquals(-5n, b); -assertEquals(5n, 5n / 1n); -assertEquals(5n, -5n / -1n); -assertEquals(-5n, -5n / 1n); - -assertEquals(0n, 5n % 1n); -assertEquals(0n, -5n % 1n); -assertEquals(0n, 5n % -1n); -assertEquals(0n, -5n % -1n); - -assertTrue(0n === 0n); - -// crbug.com/818277: Must throw without DCHECK failures. -// In order to run acceptably fast in Debug mode, this test assumes that -// we allow at least 1 billion bits in a BigInt. -var close_to_limit = 2n ** 1000000000n; -assertThrows(() => close_to_limit ** 100n, RangeError); - -// Check boundary conditions of the power-of-two fast path. -// The following "max" constants are just under BigInt::kMaxLengthBits -// and replicate the computation of that constant. -var kMaxInt = 2n ** 31n - 1n; -var max64 = kMaxInt - 64n - 2n; -var max32 = kMaxInt - 32n - 2n; -// Platform independence trick: at least one of the two operations will throw! -assertThrows(() => { var a = 2n ** max32; var b = 2n ** max64; }, RangeError); - -(function() { - function Constructor() { } - Constructor.prototype = 5n; - assertThrows(() => ({}) instanceof Constructor, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/sar.js b/implementation-contributed/v8/mjsunit/harmony/bigint/sar.js deleted file mode 100644 index 66d2f2d2681..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/sar.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0x211a34fn, - b: 0xa6n, - r: 0n -}, { - a: 0xa0d0aff5d2783ad192f37423n, - b: 0x7n, - r: 0x141a15feba4f075a325e6e8n -}, { - a: -0x68ba010a12ed551fc17c67f63331eea3n, - b: 0xae5n, - r: -0x1n -}, { - a: 0xb64dc8009n, - b: 0xf1n, - r: 0n -}, { - a: -0x364cdec628e438712e4f8cb7an, - b: 0x48cn, - r: -0x1n -}, { - a: -0xb417099aba80a783f52790b779b38c2e6fbdf5f490d7b02a59e81032een, - b: 0x6a3n, - r: -0x1n -}, { - a: 0x9d2b41n, - b: 0n, - r: 0x9d2b41n -}, { - a: -0x4a070c83b02ba86434228a50cbaf50ddf38n, - b: -0x63n, - r: -0x25038641d815d4321a11452865d7a86ef9c0000000000000000000000000n -}, { - a: 0x3e76514036ccb958c98f60n, - b: -0x76n, - r: 0xf9d94500db32e563263d8000000000000000000000000000000n -}, { - a: -0x51fe20d47ba564bc09337d5c8d284deb5006549bad2629230198f34n, - b: -0xfn, - r: -0x28ff106a3dd2b25e0499beae469426f5a8032a4dd693149180cc79a0000n -}, { - a: 0x49adce1d09dadc5a0635f24d066d3a29e37b9be6059b88d0239d6ca6d92267a372n, - b: -0x6n, - r: 0x126b73874276b716818d7c93419b4e8a78dee6f98166e23408e75b29b64899e8dc80n -}, { - a: 0xca19971406fb07cn, - b: -0x17n, - r: 0x650ccb8a037d83e000000n -}, { - a: 0xd8de8f631313b1f98f77d265ee48014f82eb20n, - b: 0xen, - r: 0x3637a3d8c4c4ec7e63ddf4997b920053e0bn -}, { - a: -0x550d3470c8ad9b8f22ed01a4b1d3f648n, - b: -0x4dn, - r: -0xaa1a68e1915b371e45da034963a7ec900000000000000000000n -}, { - a: -0xa7eadcd4a1b8037081952f0a9199n, - b: -0xcfn, - r: -0x53f56e6a50dc01b840ca978548cc8000000000000000000000000000000000000000000000000000n -}, { - a: -0x65b3933c9e1eb5f953f6cc55cn, - b: 0xa6cn, - r: -0x1n -}, { - a: -0x92cea858475460661a2831a28434bde95e5132e1dcaeb161ec89bd9555f41n, - b: -0xbn, - r: -0x4967542c23aa30330d1418d1421a5ef4af289970ee5758b0f644decaaafa0800n -}, { - a: -0x1d838ade17fe571916a26314b6a8b42e9b6e2b74238de734d6f5575df7n, - b: -0x7n, - r: -0xec1c56f0bff2b8c8b51318a5b545a174db715ba11c6f39a6b7aabaefb80n -}, { - a: 0xdd5bf8581e32875d44e26ef10c45bdff68d209015933586dc37211n, - b: -0xa9n, - r: 0x1bab7f0b03c650eba89c4dde2188b7bfed1a41202b266b0db86e422000000000000000000000000000000000000000000n -}, { - a: -0xa92d3014dcn, - b: -0x4cn, - r: -0xa92d3014dc0000000000000000000n -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a >> d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: >>"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/shl.js b/implementation-contributed/v8/mjsunit/harmony/bigint/shl.js deleted file mode 100644 index 0e7b402bc17..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/shl.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: -0xe813d76adc0a177778c0c232c595e8572b783210f4a7009d7c1787n, - b: 0x9en, - r: -0x3a04f5dab70285ddde30308cb1657a15cade0c843d29c0275f05e1c000000000000000000000000000000000000000n -}, { - a: -0xded00dff14554cn, - b: 0xd9n, - r: -0x1bda01bfe28aa98000000000000000000000000000000000000000000000000000000n -}, { - a: -0x50c2df089209be37998c8f6e30c4c95a61e77a9241n, - b: 0x46n, - r: -0x1430b7c224826f8de66323db8c3132569879dea490400000000000000000n -}, { - a: 0x668086293eab52b52b879f00375d0f513f1ff9a93df788e38527en, - b: -0x3n, - r: 0xcd010c527d56a56a570f3e006eba1ea27e3ff3527bef11c70a4fn -}, { - a: 0n, - b: -0x1n, - r: 0n -}, { - a: 0x26bd28fb3e06bb0ddan, - b: -0xcn, - r: 0x26bd28fb3e06bb0n -}, { - a: -0xa04dca5c74bdb1dbf2f0n, - b: -0x3fn, - r: -0x1409cn -}, { - a: -0xd6b46ec3ead311e2e45ca4ae8aa9cf5acf4c2d6c61de06e9e36n, - b: -0xan, - r: -0x35ad1bb0fab4c478b917292ba2aa73d6b3d30b5b187781ba8n -}, { - a: -0x1f1922aen, - b: -0xbfn, - r: -0x1n -}, { - a: 0x47n, - b: -0x2n, - r: 0x11n -}, { - a: -0xf64n, - b: 0x7en, - r: -0x3d900000000000000000000000000000000n -}, { - a: -0x78dn, - b: -0x85en, - r: -0x1n -}, { - a: -0xa03bc462b00e4113a2472eb73dn, - b: 0n, - r: -0xa03bc462b00e4113a2472eb73dn -}, { - a: 0x3816aa0f01396f4abe0ee7164e211ce60ce590b615d86f6e6363c0bdd513d8a0n, - b: 0x4n, - r: 0x3816aa0f01396f4abe0ee7164e211ce60ce590b615d86f6e6363c0bdd513d8a00n -}, { - a: -0xaf8711d29fdecd42a255f14aafe13b9404cced5df0af8b86080af7682cben, - b: 0x1n, - r: -0x15f0e23a53fbd9a8544abe2955fc277280999dabbe15f170c1015eed0597cn -}, { - a: 0x218b11dfn, - b: 0n, - r: 0x218b11dfn -}, { - a: 0x263fcb4707e6fd4a21b1f646ddd90a5e78d781c272621dcaf861d6250d7be675e067n, - b: -0x868n, - r: 0n -}, { - a: 0x8312b459b585847682en, - b: 0x4en, - r: 0x20c4ad166d61611da0b80000000000000000000n -}, { - a: 0xb45d42e0595a4b104b0b9a177ffdc52b401b61659fe163e720621aef8c8e6191ba7an, - b: 0x3n, - r: 0x5a2ea1702cad25882585cd0bbffee295a00db0b2cff0b1f390310d77c64730c8dd3d0n -}, { - a: -0x42d2c4n, - b: 0xfdn, - r: -0x85a588000000000000000000000000000000000000000000000000000000000000000n -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a << d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: <<"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/sub.js b/implementation-contributed/v8/mjsunit/harmony/bigint/sub.js deleted file mode 100644 index 21613f768a7..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/sub.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: 0xc4fd438551d58edn, - b: 0x91b42ee55a50d974an, - r: -0x90ef31a1d4ff03e5dn -}, { - a: -0x86b766ec276e390087458ce093b07b2574732d5f3f5125n, - b: 0x4b1fe0dd23316de1b38b343d4112fbd7e8c8d081de5dbabda7357fd9e868466693den, - r: -0x4b1fe0dd23316de1b38b34c3f879e7ff5701d10923ea9b5157b0a54e5b95a5a5e503n -}, { - a: 0x63e1eac0d5470c8f802ec390b6415c43ed16d28d6dn, - b: -0xbe26927b2f6ae85b5d3062d869d22da005805d23142a236955127b6ca688c07fn, - r: 0xbe26927b2f6ae85b5d30633c4bbcee754c8ceca342edb41f966ebf59bd5b4decn -}, { - a: -0x873cf988993d97e5180fn, - b: -0xd791aa365f881a7f05f21f73ef390c0b37408dd0a908801682464178426an, - r: 0xd791aa365f881a7f05f21f73ef390c0b37408dd021cb868de908a9932a5bn -}, { - a: -0xcb273d5b123eff101c62f016ae2896223b93b9114e40d1fn, - b: 0x2169f8c954623f8381bf12fd0927e1a645f5b3c6c00e58105c297ba40446208dn, - r: -0x2169f8c954623f838e7186d2ba4bd19747bbe2c82af0e1727fe2b735192a2dacn -}, { - a: -0xe965bf745fffcf22n, - b: 0x7c3b92f8a030cbfca7cc5f2fd454459c79a3ac2201524468fbn, - r: -0x7c3b92f8a030cbfca7cc5f2fd454459c7a8d11e175b244381dn -}, { - a: 0n, - b: 0x6975a8ededffd265f472e660e18n, - r: -0x6975a8ededffd265f472e660e18n -}, { - a: -0x236bda1a3a9635190f26c3739b7342f33a27cd2568n, - b: 0x1a7e6n, - r: -0x236bda1a3a9635190f26c3739b7342f33a27cecd4en -}, { - a: 0xb682b9c88f0b6d7b5e9a4f77dd0d7885d62cd162783b2e55b30b954e10caf3n, - b: 0x2c6574161d9aff7bbebd95e561fbd5d70d893e8c9772bcc697cddn, - r: 0xb682b9c88c451639fcc09f8021219f27800d140507629a6ce9946981a74e16n -}, { - a: 0xdd6aa5240c4n, - b: 0xb9c7bef20c0cc0f814cce3c40d43e4c26en, - r: -0xb9c7bef20c0cc0f814cce3b636999281aan -}, { - a: 0x35cd14329d5f81dbn, - b: 0x25997b1f3500f9b27f2ceean, - r: -0x25997b1bd82fb688a934d0fn -}, { - a: -0x55ec15d7ed316df3fc7bcfcce0f0a6d7034113bad6d74bae88d4aab03032n, - b: 0x9d09b8869aab44d6690fad48c8dffd0e18cc21fb26c2a80ac08fd4f42296f46d37cddn, - r: -0x9d09b886a00a0633e7e2c42808a7ba0ae6db2c6896f6b9466dfd49af0b243f183ad0fn -}, { - a: 0n, - b: -0xfbf3b308a6066d497e1cn, - r: 0xfbf3b308a6066d497e1cn -}, { - a: 0x6acfc1e4b681be9582cd28453387ed2c29f5eb4cd6d78aaac67n, - b: -0x4f5997n, - r: 0x6acfc1e4b681be9582cd28453387ed2c29f5eb4cd6d78fa05fen -}, { - a: -0xc93eb5cae0c90eb77e702ccb44eea6180829d0b360872n, - b: 0xdn, - r: -0xc93eb5cae0c90eb77e702ccb44eea6180829d0b36087fn -}, { - a: -0x324ef140a16c5c20a9a189a720136f4836ea98056n, - b: 0x49471582a658bf5524128e130b3378d29331baa8eb8n, - r: -0x49796473e6fa2bb144bc2f9cb2538c41db68a540f0en -}, { - a: 0x6f15ac8490de4e308286fdde1142ad0052c2cn, - b: 0x9ca6c715de18d7f64a751452e967b5807eec951777245ce5fe3n, - r: -0x9ca6c715de18d78734c88fc20b1984fdf7eeb70634775c933b7n -}, { - a: -0xc303adn, - b: 0x5ec0a706a54978a59b10007942e563957ad22e708678fbfdb02862b2c3n, - r: -0x5ec0a706a54978a59b10007942e563957ad22e708678fbfdb02925b670n -}, { - a: -0xdb736b5f3979c24f70aafa5f17711d725d552a9778e1n, - b: 0x70b56a0773498a45b796cf79ea18211614cn, - r: -0xdb736b5f408518efe7df930372ea8a69fbf6aca8da2dn -}, { - a: 0xe91b9a797168c6b7440f946n, - b: -0x2588c1301521dd9646a2e22e3aca462ca95e76069be2f7b95d8bb81ccn, - r: 0x2588c1301521dd9646a2e22e3aca462caa4791a11554608014cfc7b12n -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a - d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: -"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/tonumber.js b/implementation-contributed/v8/mjsunit/harmony/bigint/tonumber.js deleted file mode 100644 index a6f7d13b7eb..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/tonumber.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Check(bigint, number_string) { - var number = Number(bigint); - if (number_string.substring(0, 2) === "0x") { - assertEquals(number_string.substring(2), number.toString(16)); - } else { - assertEquals(number_string, number.toString()); - } -} - -// Values in Smi range. -Check(0n, "0"); -Check(1n, "1"); -Check(-1n, "-1"); - -// Values in double range. -Check(12345678912n, "12345678912"); -Check(-12345678912345n, "-12345678912345"); -Check(0xfffffffffffffn, "0xfffffffffffff"); // 52 bits. -Check(0x1fffffffffffffn, "0x1fffffffffffff"); // 53 bits. -Check(0x3fffffffffffffn, "0x40000000000000"); // 54 bits, rounding up. -Check(0x3ffffffffffffen, "0x3ffffffffffffe"); // 54 bits, rounding down. -Check(0x7ffffffffffffdn, "0x7ffffffffffffc"); // 55 bits, rounding down. -Check(0x7ffffffffffffen, "0x80000000000000"); // 55 bits, tie to even. -Check(0x7fffffffffffffn, "0x80000000000000"); // 55 bits, rounding up. -Check(0x1ffff0000ffff0000n, "0x1ffff0000ffff0000"); // 65 bits. -Check(100000000000000008192n, "100000000000000000000"); // Tie to even. - -// Check the cornercase where the most significant cut-off bit is 1. -// If a digit beyond the mantissa is non-zero, we must round up; -// otherwise tie to even. -// ...digit2 ][ digit1 ][ digit0 ] -// [ mantissa ] -Check(0x01000000000000080000000000000000001000n, - "0x1000000000000100000000000000000000000"); -Check(0x01000000000000080000000000000000000000n, - "0x1000000000000000000000000000000000000"); -Check(0x01000000000000180000000000000000000000n, - "0x1000000000000200000000000000000000000"); - -// Values near infinity. -Check(1n << 1024n, "Infinity"); -Check(-1n << 1024n, "-Infinity"); -Check(1n << 1023n, "8.98846567431158e+307"); -Check((1n << 1024n) - (1n << 972n), "1.7976931348623155e+308"); -Check((1n << 1024n) - (1n << 971n), "1.7976931348623157e+308"); -Check((1n << 1024n) - (1n << 970n), "Infinity"); // Rounding up overflows. diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/turbo.js b/implementation-contributed/v8/mjsunit/harmony/bigint/turbo.js deleted file mode 100644 index d0f00050c89..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/turbo.js +++ /dev/null @@ -1,198 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -'use strict' - - -function test(f, {input, check}) { - let result; - try { - result = { value: f(input), exception: false } - } catch(e) { - result = { value: e, exception: true } - } - check(result); -} - -function Test(f, ...cases) { - for (let i = 0; i < cases.length; ++i) { - test(f, cases[i]); - %OptimizeFunctionOnNextCall(f); - for (let j = 0; j < cases.length; ++j) { - test(f, cases[j]); - } - %DeoptimizeFunction(f); - } -} - - -function V(input, expected_value) { - function check(result) { - assertFalse(result.exception, `unexpected exception ${result.value} on input ${input}`); - assertEquals(expected_value, result.value); - } - return {input, check}; -} - -function E(input, expected_exception) { - function check(result) { - assertTrue(result.exception, `expected exception ${expected_exception.name} on input ${input}`); - assertInstanceof(result.value, expected_exception); - } - return {input, check}; -} - - -const six = {[Symbol.toPrimitive]() {return 6n}}; - - -//////////////////////////////////////////////////////////////////////////////// -// The first argument to {Test} is the function to test. The other arguments are -// the test cases, basically pairs of input and expected output. {Test} runs the -// function first unoptimized on one of the inputs, and then optimized on all -// inputs. -//////////////////////////////////////////////////////////////////////////////// - -Test(x => Number(x), - V(1n, 1), V(1, 1), V("", 0), V(1.4, 1.4), V(null, 0), V(six, 6)); - -Test(x => Math.trunc(+x), - E(1n, TypeError), V(1, 1), V("", 0), V(1.4, 1), V(null, 0), E(six, TypeError)); - -Test(x => Math.trunc(Number(x)), - V(1n, 1), V(1, 1), V("", 0), V(1.4, 1), V(null, 0), V(six, 6)); - -Test(x => String(x), - V(1n, "1"), V(1, "1"), V(1.4, "1.4"), V(null, "null"), V(six, "6")); - -Test(x => BigInt(x), - V(true, 1n), V(false, 0n), V(42n, 42n), E(NaN, RangeError), V(six, 6n)); - -Test(x => typeof x, - V(1n, "bigint"), V(1, "number"), V(six, "object")); -Test(x => typeof x == "bigint", - V(1n, true), V(1, false), V(six, false)); - -Test(x => !x, - V(0n, true), V(42n, false), V(0x10000000000000000n, false), V(1, false), - V(undefined, true), V(six, false)); -Test(x => !!x, - V(0n, false), V(42n, true), V(0x10000000000000000n, true), V(1, true), - V(undefined, false), V(six, true)); - -Test(x => +x, - E(-3n, TypeError), V(-4, -4), V(1.4, 1.4), V(null, 0), V("5", 5), - E(six, TypeError)); - -Test(x => -x, - V(-3n, 3n), V(-4, 4), V(1.4, -1.4), V(null, -0), V("5", -5), V(six, -6n)); - -Test(x => ~x, - V(-3n, 2n), V(-4, 3), V(1.5, -2), V(null, -1), V("5", -6), V(six, -7n)); - -Test(x => ++x, - V(-3n, -2n), V(-4, -3), V(1.5, 2.5), V(null, 1), V("5", 6), V(six, 7n)); - -Test(x => --x, - V(-3n, -4n), V(-4, -5), V(1.5, 0.5), V(null, -1), V("5", 4), V(six, 5n)); - -Test(x => x++, - V(-3n, -3n), V(-4, -4), V(1.5, 1.5), V(null, 0), V("5", 5), V(six, 6n)); - -Test(x => x--, - V(-3n, -3n), V(-4, -4), V(1.5, 1.5), V(null, 0), V("5", 5), V(six, 6n)); - -Test(x => x + 42, - E(1n, TypeError), V(2, 44), V(null, 42), V("a", "a42"), E(six, TypeError)); -Test(x => x + 42n, - V(1n, 43n), E(2, TypeError), E(null, TypeError), V("a", "a42"), V(six,48n)); - -Test(x => x - 4, - E(1n, TypeError), V(3, -1), V(null, -4), V("a", NaN), E(six, TypeError)); -Test(x => x - 4n, - V(1n, -3n), E(3, TypeError), E(null, TypeError), E("a", TypeError), - V(six, 2n)); - -Test(x => x * 42, - E(2n, TypeError), V(3, 126), V("a", NaN), V(null, 0), E(six, TypeError)); -Test(x => x * 42n, - V(2n, 84n), E(3, TypeError), E("a", TypeError), E(null, TypeError), - V(six, 252n)); - -Test(x => x / 2, - E(2n, TypeError), V(6, 3), V("a", NaN), V(null, 0), E(six, TypeError)); -Test(x => x / 2n, - V(2n, 1n), E(6, TypeError), E("a", TypeError), E(null, TypeError), - V(six, 3n)); - -Test(x => x % 2, - E(2n, TypeError), V(3, 1), V("a", NaN), V(null, 0), E(six, TypeError)); -Test(x => x % 2n, - V(2n, 0n), E(3, TypeError), E("a", TypeError), E(null, TypeError), - V(six, 0n)); - -Test(x => x | 5, - E(2n, TypeError), V(3, 7), V("a", 5), V(null, 5), E(six, TypeError)); -Test(x => x | 5n, - V(2n, 7n), E(3, TypeError), E("a", TypeError), E(null, TypeError), - V(six, 7n)); - -Test(x => x & 5, - E(2n, TypeError), V(3, 1), V("a", 0), V(null, 0), E(six, TypeError)); -Test(x => x & 5n, - V(2n, 0n), E(3, TypeError), E("a", TypeError), E(null, TypeError), - V(six, 4n)); - -Test(x => x ^ 5, - E(2n, TypeError), V(3, 6), V("a", 5), V(null, 5), E(six, TypeError)); -Test(x => x ^ 5n, - V(2n, 7n), E(3, TypeError), E("a", TypeError), E(null, TypeError), - V(six, 3n)); - -Test(x => x << 3, - E(2n, TypeError), V(3, 24), V("a", 0), V(null, 0), E(six, TypeError)); -Test(x => x << 3n, - V(2n, 16n), E(3, TypeError), E("a", TypeError), E(null, TypeError), - V(six, 48n)); - -Test(x => x >> 1, - E(2n, TypeError), V(3, 1), V("a", 0), V(null, 0), E(six, TypeError)); -Test(x => x >> 1n, - V(2n, 1n), E(3, TypeError), E("a", TypeError), E(null, TypeError), - V(six, 3n)); - -Test(x => x >>> 1, - E(2n, TypeError), V(3, 1), V("a", 0), V(null, 0), E(six, TypeError)); -Test(x => x >>> 1n, - E(2n, TypeError), E(3, TypeError), E("a", TypeError), E(null, TypeError), - E(six, TypeError)); - -Test(x => x === 42, - V(1n, false), V(2, false), V(null, false), V("a", false), V(six, false)); -Test(x => x === 42, - V(42n, false), V(42, true), V(null, false), V("42", false), V(six, false)); -Test(x => x === 42n, - V(1n, false), V(2, false), V(null, false), V("a", false), V(six, false)); -Test(x => x === 42n, - V(42n, true), V(42, false), V(null, false), V("42", false), V(six, false)); - -Test(x => x == 42, - V(1n, false), V(2, false), V(null, false), V("a", false), V(six, false)); -Test(x => x == 42, - V(42n, true), V(42, true), V(null, false), V("42", true), V(six, false)); -Test(x => x == 42n, - V(1n, false), V(2, false), V(null, false), V("a", false), V(six, false)); -Test(x => x == 42n, - V(42n, true), V(42, true), V(null, false), V("42", true), V(six, false)); - -Test(x => x < 42, - V(1n, true), V(2, true), V(null, true), V("41", true), V(six, true)); -Test(x => x < 42, - V(42n, false), V(42, false), V(null, true), V("42", false), V(six, true)); -Test(x => x < 42n, - V(1n, true), V(2, true), V(null, true), V("41", true), V(six, true)); -Test(x => x < 42n, - V(42n, false), V(42, false), V(null, true), V("42", false), V(six, true)); diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/typedarray.js b/implementation-contributed/v8/mjsunit/harmony/bigint/typedarray.js deleted file mode 100644 index e530441dd45..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/typedarray.js +++ /dev/null @@ -1,240 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var intarray = new BigInt64Array(8); -var uintarray = new BigUint64Array(8); - -function test(f) { - f(); - f(); // Make sure we test ICs. - f(); - %OptimizeFunctionOnNextCall(f); - f(); -} - -function test_both(f) { - test(() => f(BigInt64Array)); - test(() => f(BigUint64Array)); -} - -test(function basic_assignment() { - const x = 0x1234567890abcdefn; - intarray[0] = x; - assertEquals(x, intarray[0]); - uintarray[0] = x; - assertEquals(x, uintarray[0]); - const y = -0x76543210fedcba98n; - intarray[0] = y; - assertEquals(y, intarray[0]); -}); - -test(function construct() { - var a = new BigInt64Array([1n, -2n, {valueOf: () => 3n}]); - assertArrayEquals([1n, -2n, 3n], a); - assertThrows(() => new BigInt64Array([4, 5]), TypeError); - var b = new BigUint64Array([6n, -7n]); - assertArrayEquals([6n, 0xfffffffffffffff9n], b); - var c = new BigUint64Array(new BigInt64Array([8n, -9n])); - assertArrayEquals([8n, 0xfffffffffffffff7n], c); - var d = new BigInt64Array(new BigUint64Array([10n, 0xfffffffffffffff5n])); - assertArrayEquals([10n, -11n], d); - assertThrows(() => new BigInt64Array(new Int32Array([12, 13])), TypeError); - assertThrows(() => new Int32Array(new BigInt64Array([14n, -15n])), TypeError); -}); - -test_both(function copyWithin(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - a.copyWithin(0, 1, 3); - assertArrayEquals([2n, 3n, 3n], a); -}); - -test_both(function entries(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - var it = a.entries(); - assertEquals([0, 1n], it.next().value); - assertEquals([1, 2n], it.next().value); - assertEquals([2, 3n], it.next().value); - assertTrue(it.next().done); -}); - -test_both(function every(BigArray) { - var a = BigArray.of(2n, 3n, 4n); - var seen = []; - assertTrue(a.every((x) => {seen.push(x); return x > 1n})); - assertEquals([2n, 3n, 4n], seen); -}); - -test_both(function fill(BigArray) { - var a = BigArray.of(1n, 2n, 3n, 4n); - a.fill(7n, 1, 3); - assertArrayEquals([1n, 7n, 7n, 4n], a); - assertThrows(() => (new BigArray(3).fill(1)), TypeError); -}); - -test_both(function filter(BigArray) { - var a = BigArray.of(1n, 3n, 4n, 2n); - var b = a.filter((x) => x > 2n); - assertArrayEquals([3n, 4n], b); -}); - -test_both(function find(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - assertEquals(2n, a.find((x) => x === 2n)); - assertEquals(undefined, a.find((x) => x === 2)); -}); - -test_both(function findIndex(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - assertEquals(1, a.findIndex((x) => x === 2n)); - assertEquals(-1, a.findIndex((x) => x === 2)); -}); - -test_both(function forEach(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - var seen = []; - a.forEach((x) => seen.push(x)); - assertEquals([1n, 2n, 3n], seen); -}); - -test_both(function from(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - var b = BigArray.from(a); - assertArrayEquals([1n, 2n, 3n], b); - assertThrows(() => BigArray.from([4, 5]), TypeError); - var c = BigArray.from([6, 7], BigInt); - assertArrayEquals([6n, 7n], c); - assertThrows(() => Int32Array.from([4n, 5n]), TypeError); - assertThrows(() => Int32Array.from([4, 5], BigInt), TypeError); -}); - -test(function from_mixed() { - var contents = [1n, 2n, 3n]; - var a = new BigInt64Array(contents); - var b = BigUint64Array.from(a); - assertArrayEquals(contents, b); - var c = BigInt64Array.from(b); - assertArrayEquals(contents, c); -}); - -test_both(function includes(BigArray) { - var a = BigArray.of(0n, 1n, 2n); - assertTrue(a.includes(1n)); - assertFalse(a.includes(undefined)); - assertFalse(a.includes(1)); - assertFalse(a.includes(0x1234567890abcdef123n)); // More than 64 bits. -}); - -test_both(function indexOf(BigArray) { - var a = BigArray.of(0n, 1n, 2n); - assertEquals(1, a.indexOf(1n)); - assertEquals(-1, a.indexOf(undefined)); - assertEquals(-1, a.indexOf(1)); - assertEquals(-1, a.indexOf(0x1234567890abcdef123n)); // More than 64 bits. -}); - -test_both(function join(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - assertEquals("1-2-3", a.join("-")); -}); - -test_both(function keys(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - var it = a.keys(); - assertEquals(0, it.next().value); - assertEquals(1, it.next().value); - assertEquals(2, it.next().value); - assertTrue(it.next().done); -}); - -test_both(function lastIndexOf(BigArray) { - var a = BigArray.of(0n, 1n, 2n); - assertEquals(1, a.lastIndexOf(1n)); - assertEquals(-1, a.lastIndexOf(undefined)); - assertEquals(-1, a.lastIndexOf(1)); - assertEquals(-1, a.lastIndexOf(0x1234567890abcdef123n)); // > 64 bits. -}); - -test_both(function map(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - var b = a.map((x) => 2n * x); - assertEquals(BigArray, b.constructor); - assertArrayEquals([2n, 4n, 6n], b); -}); - -test_both(function of(BigArray) { - var a = BigArray.of(true, 2n, {valueOf: () => 3n}, "4"); - assertArrayEquals([1n, 2n, 3n, 4n], a); - assertThrows(() => BigArray.of(1), TypeError) - assertThrows(() => BigArray.of(undefined), TypeError) -}); - -test_both(function reduce(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - assertEquals(6n, a.reduce((sum, x) => sum + x, 0n)); -}); - -test_both(function reduceRight(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - assertEquals(6n, a.reduce((sum, x) => sum + x, 0n)); -}); - -test_both(function reverse(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - a.reverse(); - assertArrayEquals([3n, 2n, 1n], a); -}); - -test_both(function set(BigArray) { - var a = new BigArray(7); - a.set(BigArray.of(1n, 2n, 3n), 2); - assertArrayEquals([0n, 0n, 1n, 2n, 3n, 0n, 0n], a); - a.set([4n, 5n, 6n], 1); - assertArrayEquals([0n, 4n, 5n, 6n, 3n, 0n, 0n], a); - assertThrows(() => a.set([7, 8, 9], 3), TypeError); - assertThrows(() => a.set(Int32Array.of(10, 11), 2), TypeError); - - var Other = BigArray == BigInt64Array ? BigUint64Array : BigInt64Array; - a.set(Other.of(12n, 13n), 4); - assertArrayEquals([0n, 4n, 5n, 6n, 12n, 13n, 0n], a); -}); - -test_both(function slice(BigArray) { - var a = BigArray.of(1n, 2n, 3n, 4n); - var b = a.slice(1, 3); - assertArrayEquals([2n, 3n], b); -}); - -test_both(function some(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - assertTrue(a.some((x) => x === 2n)); -}); - -test_both(function sort(BigArray) { - var a = BigArray.of(7n, 2n, 5n, 3n); - a.sort(); - assertArrayEquals([2n, 3n, 5n, 7n], a); -}); - -test_both(function subarray(BigArray) { - var a = BigArray.of(1n, 2n, 3n, 4n); - var b = a.subarray(1, 3); - assertEquals(BigArray, b.constructor); - assertArrayEquals([2n, 3n], b); -}); - -test_both(function toString(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - assertEquals("1,2,3", a.toString()); -}); - -test_both(function values(BigArray) { - var a = BigArray.of(1n, 2n, 3n); - var it = a.values(); - assertEquals(1n, it.next().value); - assertEquals(2n, it.next().value); - assertEquals(3n, it.next().value); - assertTrue(it.next().done); -}); diff --git a/implementation-contributed/v8/mjsunit/harmony/bigint/xor.js b/implementation-contributed/v8/mjsunit/harmony/bigint/xor.js deleted file mode 100644 index cf32b656033..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigint/xor.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Generated by tools/bigint-tester.py. - -var data = [{ - a: -0x46505bec40d461c595b5e4be178b7d00n, - b: -0x9170e5437d4e3ec7c0971e2c6d3bbbd2929ff108ea4ee64f7a91aa367fn, - r: 0x9170e5437d4e3ec7c0971e2c6d7deb897edf25692fdb53abc486214a81n -}, { - a: -0x49171f24aa9660f7f854148018a8b03256200508n, - b: 0x75c2103e4e8e52d0311n, - r: -0x49171f24aa9660f7f85413dc39ab54dab30d0617n -}, { - a: -0x3cde31210d299e4f6734f76c4f2df3056fn, - b: -0x402b7fe66d16877867f43n, - r: 0x3cde31210d299a4dd0ca91bd275a757a2cn -}, { - a: 0x727n, - b: 0xe1c82371da63bdb801273077095be8977ff9f14aa619829bf4b418n, - r: 0xe1c82371da63bdb801273077095be8977ff9f14aa619829bf4b33fn -}, { - a: 0x7c2b1e0918a85bf5faea9077b7dn, - b: -0xed714ba58fd54b19n, - r: -0x7c2b1e0918a68ce140b26d23066n -}, { - a: 0x1dded5fd695f4babcan, - b: 0x7e1cb4346c68e84f8fbdd3501daead2ce99a90e56038n, - r: 0x7e1cb4346c68e84f8fbdd3501db373f914f3cfaecbf2n -}, { - a: 0xec7d9595de759652a3bb96c80edca63790c32ce7f6cf0ef0n, - b: -0x67f0feef424f56d6ae6856a20901199de53ebn, - r: -0xec7d9595de73e95d4d4fb23d63b640b2fae3bcf66f115d1bn -}, { - a: 0x69ab204291f752866c3d49fdf1d656298f43e896cea3ef31a04n, - b: -0x5f5b2fd130e33ed76fa22de5ac70bdf96dee80a09e3107e1c93a135ea80b7e3640cdn, - r: -0x5f5b2fd130e33ed769389fe1856fc8d10b2d543f412c628351ce2dd7c4e140c55ac9n -}, { - a: -0xd396d40076en, - b: 0x3158623c80393n, - r: -0x318bf4e8804ffn -}, { - a: 0x8c1dbfbd68007d171986777446303896a1ee46n, - b: -0x75fd69710f5bea1cece9d59ec4bca29712b49dcf5ee5cc3299d7fb4fb024f10ae955fn, - r: -0x75fd69710f5bea1cece9d59ec4bca29fd36f6619dee21d4301b08c0bd3277860f7b19n -}, { - a: -0x4c6e3ccbabdd6f58450ec3ec8adfb10831b70893cb996f0ac97a0ae2f3a943185d1n, - b: 0xeb136731a19867949d46886e62050c4b446767a076c73dn, - r: -0x4c6e3ccbabdd6f58450ecd5dbcacab11b7ce4147a31f892a99bebea485d344742een -}, { - a: 0xeaff60e10ebb4b8f2da6a517n, - b: -0x17af62a3e808af1be3d864132dfd7363bc95872580585d7a9904n, - r: -0x17af62a3e808af1be3d864132dfd999cdc74899ecbd770dc3c15n -}, { - a: -0xd4424b4f09210108076d63bd621180f280df8f4480n, - b: -0x20953185dd2c534b3cb8da73ce55ab386d62fe8a793a1e74cdf3ad95f3cc2573b3n, - r: 0x20953185dd2c534b3cb8da731a17e0776443ff827e577dc9afe22d677313aa37cdn -}, { - a: 0x84317d7ec6df6dbfe9413cee812ff95c587f61c7b8de5828d445a69555cff26fba9n, - b: -0x853c667aed62685df5993748e5668802b7bf918f8c1222a5267c33f013ff1e10f1b909n, - r: -0x8534256d3a8e05ab2e67a35b2b8e9afd227a16799069af40a4f177aa7aaa42efd742a2n -}, { - a: -0xe3b4bf724b172b23c5834ed6f70f984ab3b146070770cbc3b86779db7n, - b: -0x68166de3a03d9efce30cb36e242db000c850c0d4f454594e23a1a7cn, - r: 0xe3dca91fa8b716bd39604265992bb5fab37916c7d3849f9af644d87cdn -}, { - a: -0x5358b8efb260b40e37cb5b45eb4e7864n, - b: -0x3e617e3967a5b3554ebf24f1e51a253dfc20a76ef01f02442fn, - r: 0x3e617e3967a5b3554eec7c490aa84589f2176c35b5f44c3c4dn -}, { - a: -0x702359917a8aceedc381n, - b: -0x714f08d9c29e9fc0044982eb2469707896265n, - r: 0x714f08d9c29e9fc0034bb77233c1dc964a1e4n -}, { - a: -0x455ac38dn, - b: -0x6152562bf5b6f785abec41e8625bccd3bf3067225733dan, - r: 0x6152562bf5b6f785abec41e8625bccd3bf3067670df055n -}, { - a: 0x47n, - b: 0xa3d30490286ddf5d4f4256n, - r: 0xa3d30490286ddf5d4f4211n -}, { - a: -0x530cc599859ccdbbb3c1dcb46248a4474c63323cc58a7891da79e0322b91c795ac57n, - b: 0x2d986083244cd488657c947a952ae15b23d90ebbc34daan, - r: -0x530cc599859ccdbbb3c1dc99fa28276300b7ba59b91e0204f098bb11f29f7c56e1fdn -}]; - -var error_count = 0; -for (var i = 0; i < data.length; i++) { - var d = data[i]; - var r = d.a ^ d.b; - if (d.r !== r) { - print("Input A: " + d.a.toString(16)); - print("Input B: " + d.b.toString(16)); - print("Result: " + r.toString(16)); - print("Expected: " + d.r); - print("Op: ^"); - error_count++; - } -} -if (error_count !== 0) { - print("Finished with " + error_count + " errors.") - quit(1); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/bigintarray-keyedstore-tobigint.js b/implementation-contributed/v8/mjsunit/harmony/bigintarray-keyedstore-tobigint.js deleted file mode 100644 index 18ba0ff1718..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/bigintarray-keyedstore-tobigint.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let TypedArrayConstructors = [ - BigUint64Array, - BigInt64Array, -]; - -// Test KeyedStore in uninitialized and monomorphic states. -for (let C of TypedArrayConstructors) { - let keyedSta = function(array) { - var didRun = false; - array[0] = { - valueOf() { - didRun = true; - return 42n; - } - }; - - return { didRun, array }; - }; - - for (var i = 0; i < 3; ++i) { - var { didRun, array } = keyedSta(new C(1)); - assertTrue(didRun); - assertEquals(array[0], 42n); - - // OOB store - // FIXME: Throw a TypeError when storing OOB in a TypedArray. - var { didRun } = keyedSta(new C); - assertTrue(didRun); - } -} - -// Test KeyedStore in polymorphic and megamorphic states. -do { - let keyedSta = function(array) { - var didRun = false; - array[0] = { - valueOf() { - didRun = true; - return 42n; - } - }; - - return { didRun, array }; - }; - - for (var i = 0; i < 3; ++i) { - for (var C of TypedArrayConstructors) { - var { didRun, array } = keyedSta(new C(1)); - assertTrue(didRun); - assertEquals(array[0], 42n); - - // OOB store - // FIXME: Throw a TypeError when storing OOB in a TypedArray. - var { didRun } = keyedSta(new C); - assertTrue(didRun); - } - } -} while (false); diff --git a/implementation-contributed/v8/mjsunit/harmony/block-lazy-compile.js b/implementation-contributed/v8/mjsunit/harmony/block-lazy-compile.js deleted file mode 100644 index a6efcbfd104..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/block-lazy-compile.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// Test deserialization of block contexts during lazy compilation -// of closures. - -function f() { - var g; - { - // TODO(keuchel): introduce let - var x = 0; - g = function () { - x = x + 1; - return x; - } - } - return g; -} - -var o = f(); -assertEquals(1, o()); -assertEquals(2, o()); -assertEquals(3, o()); -%OptimizeFunctionOnNextCall(o); -assertEquals(4, o()); diff --git a/implementation-contributed/v8/mjsunit/harmony/dataview-accessors.js b/implementation-contributed/v8/mjsunit/harmony/dataview-accessors.js deleted file mode 100644 index d1bd6210bf8..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/dataview-accessors.js +++ /dev/null @@ -1,451 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// These tests are adapted from Khronos DataView tests - -var intArray1 = - [0, 1, 2, 3, 100, 101, 102, 103, 128, 129, 130, 131, 252, 253, 254, 255]; -var intArray2 = - [31, 32, 33, 0, 1, 2, 3, 100, 101, 102, 103, 128, 129, 130, 131, 252, - 253, 254, 255]; -var initialArray = - [204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204]; - -var arayBuffer = null; -var view = null; -var viewStart = 0; -var viewLength = 0; - -function getElementSize(func) { - switch (func) { - case "Int8": - case "Uint8": - return 1; - case "Int16": - case "Uint16": - return 2; - case "Int32": - case "Uint32": - case "Float32": - return 4; - case "Float64": - return 8; - default: - assertUnreachable(func); - } -} - -function checkGet(func, index, expected, littleEndian) { - function doGet() { - if (littleEndian != undefined) - return view["get" + func](index, littleEndian); - else - return view["get" + func](index); - } - if (index >=0 && index + getElementSize(func) - 1 < view.byteLength) - assertSame(expected, doGet()); - else - assertThrows(doGet, RangeError); -} - -function checkSet(func, index, value, littleEndian) { - function doSet() { - if (littleEndian != undefined) - view["set" + func](index, value, littleEndian); - else - view["set" + func](index, value); - } - if (index >= 0 && - index + getElementSize(func) - 1 < view.byteLength) { - assertSame(undefined, doSet()); - checkGet(func, index, value, littleEndian); - } else { - assertThrows(doSet, RangeError); - } -} - -function test(isTestingGet, func, index, value, littleEndian) { - if (isTestingGet) - checkGet(func, index, value, littleEndian); - else - checkSet(func, index, value, littleEndian); -} - -function createDataView( - array, frontPaddingNum, littleEndian, start, length) { - if (!littleEndian) - array.reverse(); - var paddingArray = new Array(frontPaddingNum); - arrayBuffer = (new Uint8Array(paddingArray.concat(array))).buffer; - view = new DataView(arrayBuffer, viewStart, viewLength); - if (!littleEndian) - array.reverse(); // restore the array. -} - -function runIntegerTestCases(isTestingGet, array, start, length) { - createDataView(array, 0, true, start, length); - - test(isTestingGet, "Int8", 0, 0); - test(isTestingGet, "Int8", undefined, 0); - test(isTestingGet, "Int8", 8, -128); - test(isTestingGet, "Int8", 15, -1); - test(isTestingGet, "Int8", 1e12, undefined); - - test(isTestingGet, "Uint8", 0, 0); - test(isTestingGet, "Uint8", undefined, 0); - test(isTestingGet, "Uint8", 8, 128); - test(isTestingGet, "Uint8", 15, 255); - test(isTestingGet, "Uint8", 1e12, undefined); - - // Little endian. - test(isTestingGet, "Int16", 0, 256, true); - test(isTestingGet, "Int16", undefined, 256, true); - test(isTestingGet, "Int16", 5, 26213, true); - test(isTestingGet, "Int16", 9, -32127, true); - test(isTestingGet, "Int16", 14, -2, true); - test(isTestingGet, "Int16", 1e12, undefined, true); - - // Big endian. - test(isTestingGet, "Int16", 0, 1); - test(isTestingGet, "Int16", undefined, 1); - test(isTestingGet, "Int16", 5, 25958); - test(isTestingGet, "Int16", 9, -32382); - test(isTestingGet, "Int16", 14, -257); - test(isTestingGet, "Int16", 1e12, undefined); - - // Little endian. - test(isTestingGet, "Uint16", 0, 256, true); - test(isTestingGet, "Uint16", undefined, 256, true); - test(isTestingGet, "Uint16", 5, 26213, true); - test(isTestingGet, "Uint16", 9, 33409, true); - test(isTestingGet, "Uint16", 14, 65534, true); - test(isTestingGet, "Uint16", 1e12, undefined, true); - - // Big endian. - test(isTestingGet, "Uint16", 0, 1); - test(isTestingGet, "Uint16", undefined, 1); - test(isTestingGet, "Uint16", 5, 25958); - test(isTestingGet, "Uint16", 9, 33154); - test(isTestingGet, "Uint16", 14, 65279); - test(isTestingGet, "Uint16", 1e12, undefined); - - // Little endian. - test(isTestingGet, "Int32", 0, 50462976, true); - test(isTestingGet, "Int32", undefined, 50462976, true); - test(isTestingGet, "Int32", 3, 1717920771, true); - test(isTestingGet, "Int32", 6, -2122291354, true); - test(isTestingGet, "Int32", 9, -58490239, true); - test(isTestingGet, "Int32", 12,-66052, true); - test(isTestingGet, "Int32", 1e12, undefined, true); - - // Big endian. - test(isTestingGet, "Int32", 0, 66051); - test(isTestingGet, "Int32", undefined, 66051); - test(isTestingGet, "Int32", 3, 56911206); - test(isTestingGet, "Int32", 6, 1718059137); - test(isTestingGet, "Int32", 9, -2122152964); - test(isTestingGet, "Int32", 12, -50462977); - test(isTestingGet, "Int32", 1e12, undefined); - - // Little endian. - test(isTestingGet, "Uint32", 0, 50462976, true); - test(isTestingGet, "Uint32", undefined, 50462976, true); - test(isTestingGet, "Uint32", 3, 1717920771, true); - test(isTestingGet, "Uint32", 6, 2172675942, true); - test(isTestingGet, "Uint32", 9, 4236477057, true); - test(isTestingGet, "Uint32", 12,4294901244, true); - test(isTestingGet, "Uint32", 1e12, undefined, true); - - // Big endian. - test(isTestingGet, "Uint32", 0, 66051); - test(isTestingGet, "Uint32", undefined, 66051); - test(isTestingGet, "Uint32", 3, 56911206); - test(isTestingGet, "Uint32", 6, 1718059137); - test(isTestingGet, "Uint32", 9, 2172814332); - test(isTestingGet, "Uint32", 12, 4244504319); - test(isTestingGet, "Uint32", 1e12, undefined); -} - -function testFloat(isTestingGet, func, array, start, expected) { - // Little endian. - createDataView(array, 0, true, start); - test(isTestingGet, func, 0, expected, true); - test(isTestingGet, func, undefined, expected, true); - createDataView(array, 3, true, start); - test(isTestingGet, func, 3, expected, true); - createDataView(array, 7, true, start); - test(isTestingGet, func, 7, expected, true); - createDataView(array, 10, true, start); - test(isTestingGet, func, 10, expected, true); - test(isTestingGet, func, 1e12, undefined, true); - - // Big endian. - createDataView(array, 0, false); - test(isTestingGet, func, 0, expected, false); - test(isTestingGet, func, undefined, expected, false); - createDataView(array, 3, false); - test(isTestingGet, func, 3, expected, false); - createDataView(array, 7, false); - test(isTestingGet, func, 7, expected, false); - createDataView(array, 10, false); - test(isTestingGet, func, 10, expected, false); - test(isTestingGet, func, 1e12, undefined, false); -} - -function runFloatTestCases(isTestingGet, start) { - testFloat(isTestingGet, "Float32", - isTestingGet ? [0, 0, 32, 65] : initialArray, start, 10); - - testFloat(isTestingGet, "Float32", - isTestingGet ? [164, 112, 157, 63] : initialArray, - start, 1.2300000190734863); - testFloat(isTestingGet, "Float32", - isTestingGet ? [95, 53, 50, 199] : initialArray, - start, -45621.37109375); - testFloat(isTestingGet, "Float32", - isTestingGet ? [255, 255, 255, 127] : initialArray, - start, NaN); - testFloat(isTestingGet, "Float32", - isTestingGet ? [255, 255, 255, 255] : initialArray, - start, -NaN); - - testFloat(isTestingGet, "Float64", - isTestingGet ? [0, 0, 0, 0, 0, 0, 36, 64] : initialArray, - start, 10); - testFloat(isTestingGet, "Float64", - isTestingGet ? [174, 71, 225, 122, 20, 174, 243, 63] : initialArray, - start, 1.23); - testFloat(isTestingGet, "Float64", - isTestingGet ? [181, 55, 248, 30, 242, 179, 87, 193] : initialArray, - start, -6213576.4839); - testFloat(isTestingGet, "Float64", - isTestingGet ? [255, 255, 255, 255, 255, 255, 255, 127] : initialArray, - start, NaN); - testFloat(isTestingGet, "Float64", - isTestingGet ? [255, 255, 255, 255, 255, 255, 255, 255] : initialArray, - start, -NaN); -} - -function runNegativeIndexTests(isTestingGet) { - createDataView(intArray1, 0, true, 0, 16); - - test(isTestingGet, "Int8", -1, 0); - test(isTestingGet, "Int8", -2, 0); - - test(isTestingGet, "Uint8", -1, 0); - test(isTestingGet, "Uint8", -2, 0); - - test(isTestingGet, "Int16", -1, 1); - test(isTestingGet, "Int16", -2, 1); - test(isTestingGet, "Int16", -3, 1); - - test(isTestingGet, "Uint16", -1, 1); - test(isTestingGet, "Uint16", -2, 1); - test(isTestingGet, "Uint16", -3, 1); - - test(isTestingGet, "Int32", -1, 66051); - test(isTestingGet, "Int32", -3, 66051); - test(isTestingGet, "Int32", -5, 66051); - - test(isTestingGet, "Uint32", -1, 66051); - test(isTestingGet, "Uint32", -3, 66051); - test(isTestingGet, "Uint32", -5, 66051); - - createDataView([0, 0, 0, 0, 0, 0, 0, 0], 0, true, 0, 8); - - test(isTestingGet, "Float32", -1, 0); - test(isTestingGet, "Float32", -3, 0); - test(isTestingGet, "Float32", -5, 0); - - test(isTestingGet, "Float64", -1, 0); - test(isTestingGet, "Float64", -5, 0); - test(isTestingGet, "Float64", -9, 0); -} - - -function TestGetters() { - runIntegerTestCases(true, intArray1, 0, 16); - runFloatTestCases(true, 0); - - runIntegerTestCases(true, intArray2, 3, 2); - runFloatTestCases(true, 3); - - runNegativeIndexTests(true); -} - -function TestSetters() { - runIntegerTestCases(false, initialArray, 0, 16); - runFloatTestCases(false); - - runIntegerTestCases(false, initialArray, 3, 2); - runFloatTestCases(false, 7); - - runNegativeIndexTests(false); -} - -TestGetters(); -TestSetters(); - -function CheckOutOfRangeInt8(value, expected) { - var view = new DataView(new ArrayBuffer(100)); - assertSame(undefined, view.setInt8(0, value)); - assertSame(expected, view.getInt8(0)); - assertSame(undefined, view.setInt8(0, value, true)); - assertSame(expected, view.getInt8(0, true)); -} - -function CheckOutOfRangeUint8(value, expected) { - var view = new DataView(new ArrayBuffer(100)); - assertSame(undefined, view.setUint8(0, value)); - assertSame(expected, view.getUint8(0)); - assertSame(undefined, view.setUint8(0, value, true)); - assertSame(expected, view.getUint8(0, true)); -} - -function CheckOutOfRangeInt16(value, expected) { - var view = new DataView(new ArrayBuffer(100)); - assertSame(undefined, view.setInt16(0, value)); - assertSame(expected, view.getInt16(0)); - assertSame(undefined, view.setInt16(0, value, true)); - assertSame(expected, view.getInt16(0, true)); -} - -function CheckOutOfRangeUint16(value, expected) { - var view = new DataView(new ArrayBuffer(100)); - assertSame(undefined, view.setUint16(0, value)); - assertSame(expected, view.getUint16(0)); - assertSame(undefined, view.setUint16(0, value, true)); - assertSame(expected, view.getUint16(0, true)); -} - -function CheckOutOfRangeInt32(value, expected) { - var view = new DataView(new ArrayBuffer(100)); - assertSame(undefined, view.setInt32(0, value)); - assertSame(expected, view.getInt32(0)); - assertSame(undefined, view.setInt32(0, value, true)); - assertSame(expected, view.getInt32(0, true)); -} - -function CheckOutOfRangeUint32(value, expected) { - var view = new DataView(new ArrayBuffer(100)); - assertSame(undefined, view.setUint32(0, value)); - assertSame(expected, view.getUint32(0)); - assertSame(undefined, view.setUint32(0, value, true)); - assertSame(expected, view.getUint32(0, true)); -} - -function TestOutOfRange() { - CheckOutOfRangeInt8(0x80, -0x80); - CheckOutOfRangeInt8(0x1000, 0); - CheckOutOfRangeInt8(-0x81, 0x7F); - - CheckOutOfRangeUint8(0x100, 0); - CheckOutOfRangeUint8(0x1000, 0); - CheckOutOfRangeUint8(-0x80, 0x80); - CheckOutOfRangeUint8(-1, 0xFF); - CheckOutOfRangeUint8(-0xFF, 1); - - CheckOutOfRangeInt16(0x8000, -0x8000); - CheckOutOfRangeInt16(0x10000, 0); - CheckOutOfRangeInt16(-0x8001, 0x7FFF); - - CheckOutOfRangeUint16(0x10000, 0); - CheckOutOfRangeUint16(0x100000, 0); - CheckOutOfRangeUint16(-0x8000, 0x8000); - CheckOutOfRangeUint16(-1, 0xFFFF); - CheckOutOfRangeUint16(-0xFFFF, 1); - - CheckOutOfRangeInt32(0x80000000, -0x80000000); - CheckOutOfRangeInt32(0x100000000, 0); - CheckOutOfRangeInt32(-0x80000001, 0x7FFFFFFF); - - CheckOutOfRangeUint32(0x100000000, 0); - CheckOutOfRangeUint32(0x1000000000, 0); - CheckOutOfRangeUint32(-0x80000000, 0x80000000); - CheckOutOfRangeUint32(-1, 0xFFFFFFFF); - CheckOutOfRangeUint32(-0xFFFFFFFF, 1); -} - -TestOutOfRange(); - -function TestGeneralAccessors() { - var a = new DataView(new ArrayBuffer(256)); - function CheckAccessor(name) { - var f = a[name]; - assertThrows(function() { f(); }, TypeError); - f.call(a, 0, 0); // should not throw - assertThrows(function() { f.call({}, 0, 0); }, TypeError); - f.call(a); - f.call(a, 1); // should not throw - } - CheckAccessor("getUint8"); - CheckAccessor("setUint8"); - CheckAccessor("getInt8"); - CheckAccessor("setInt8"); - CheckAccessor("getUint16"); - CheckAccessor("setUint16"); - CheckAccessor("getInt16"); - CheckAccessor("setInt16"); - CheckAccessor("getUint32"); - CheckAccessor("setUint32"); - CheckAccessor("getInt32"); - CheckAccessor("setInt32"); - CheckAccessor("getFloat32"); - CheckAccessor("setFloat32"); - CheckAccessor("getFloat64"); - CheckAccessor("setFloat64"); -} - -TestGeneralAccessors(); - -function TestInsufficientArguments() { - var a = new DataView(new ArrayBuffer(256)); - function CheckInsuficientArguments(type) { - var expectedValue = type === "Float32" || type === "Float64" ? NaN : 0; - var offset = getElementSize(type); - - assertSame(undefined, a["set" + type](0, 7)); - assertSame(undefined, a["set" + type]()); - assertSame(expectedValue, a["get" + type]()); - - assertSame(undefined, a["set" + type](offset, 7)); - assertSame(undefined, a["set" + type](offset)); - assertSame(expectedValue, a["get" + type](offset)); - } - - CheckInsuficientArguments("Uint8"); - CheckInsuficientArguments("Int8"); - CheckInsuficientArguments("Uint16"); - CheckInsuficientArguments("Int16"); - CheckInsuficientArguments("Uint32"); - CheckInsuficientArguments("Int32"); - CheckInsuficientArguments("Float32"); - CheckInsuficientArguments("Float64"); -} - -TestInsufficientArguments(); diff --git a/implementation-contributed/v8/mjsunit/harmony/for-await-of.js b/implementation-contributed/v8/mjsunit/harmony/for-await-of.js deleted file mode 100644 index 1b4fcd701a2..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/for-await-of.js +++ /dev/null @@ -1,1264 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let testFailed = false; -let testFailure; -(async function() { - const kNext = 1; - const kThrow = 2; - const kReturn = 4; - const kReturnPrimitive = kReturn | 32; - - function async(iterable, features = kNext, log = []) { - // Helper to turn a synchronous iterable into an asynchronous iterable, - // without using the [Async-from-Sync Iterator]. - let it = iterable[Symbol.iterator](); - let methods = { - next(sentValue) { - return new Promise(function(resolve, reject) { - let {value, done} = it.next(sentValue); - Promise.resolve(value).then(function(value) { - log.push('.next() -> resolved ' + value); - resolve({value, done}); - }, function(value) { - log.push('.next() -> rejected ' + value); - reject(value); - }); - }); - }, - - throw(sentValue) { - return new Promise(function(resolve, reject) { - let throwMethod = it.throw; - if (typeof throwMethod !== 'function') { - log.push('.throw(' + sentValue + ')'); - return reject(sentValue); - } - - let {value, done} = throwMethod.call(it, sentValue); - Promise.resolve(value).then(function(value) { - log.push('.throw() -> resolved ' + value); - resolve({ value, done }); - }, function(value) { - log.push('.throw() -> rejected ' + value); - reject(value); - }); - }); - }, - - return(sentValue) { - return new Promise(function(resolve, reject) { - let returnMethod = it.return; - if (typeof returnMethod !== 'function') { - log.push('.return(' + sentValue + ')'); - if ((features & kReturnPrimitive) === kReturnPrimitive) - return resolve(sentValue); - return resolve({value: sentValue, done: true}); - } - - let {value, done} = returnMethod.call(it, sentValue); - Promise.resolve(value).then(function(value) { - log.push('.return() -> resolved ' + value); - if ((features & kReturnPrimitive) === kReturnPrimitive) - return resolve(value); - resolve({ value, done }); - }, function(value) { - log.push('.return() -> rejected ' + value); - reject(value); - }); - }); - } - }; - - - return { - [Symbol.asyncIterator]() { - log.push('[Symbol.asyncIterator]()') - return this; - }, - - next: (features & kNext) ? methods.next : undefined, - throw: (features & kThrow) ? methods.throw : undefined, - return: (features & kReturn) ? methods.return : undefined - }; - } - - let testDone; - let test; - async function testBindingIdentifierVarDeclarationStatement() { - let sum = 0; - testDone = false; - for await (var value of async([100, 200, 300, 400, 500])) sum += value; - testDone = true; - return sum; - } - - test = testBindingIdentifierVarDeclarationStatement(); - assertFalse(testDone); - assertEquals(1500, await test); - assertTrue(testDone); - - async function testBindingIdentifierVarDeclarationBlockStatement() { - let sum = 0; - testDone = false; - for await (var value of async([100, 200, 300, 400, 500])) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - sum += value; - } - testDone = true; - return sum; - } - - test = testBindingIdentifierVarDeclarationBlockStatement(); - assertFalse(testDone); - assertEquals(1500, await test); - assertTrue(testDone); - - async function testObjectBindingPatternVarDeclarationStatement() { - let sum = 0, keys = []; - let collection = [ - {key: 'first', value: 10}, {key: undefined, value: 20}, {value: 30}, - {key: 'last', value: 40} - ]; - testDone = false; - for await (var {key = 'unknown', value} of async(collection)) - keys.push(key), sum += value; - testDone = true; - return {keys, sum}; - } - - test = testObjectBindingPatternVarDeclarationStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testObjectBindingPatternVarDeclarationBlockStatement() { - let sum = 0, keys = []; - let collection = [ - {key: 'first', value: 10}, {key: undefined, value: 20}, {value: 30}, - {key: 'last', value: 40} - ]; - testDone = false; - for await (var {key = 'unknown', value} of async(collection)) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - keys.push(key); - sum += value; - } - testDone = true; - return {keys, sum}; - } - - test = testObjectBindingPatternVarDeclarationBlockStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testArrayBindingPatternVarDeclarationStatement() { - let sum = 0, keys = []; - let collection = [['first', 10], [undefined, 20], [, 30], ['last', 40]]; - testDone = false; - for await (var [key = 'unknown', value] of async(collection)) - keys.push(key), sum += value; - testDone = true; - return {keys, sum}; - } - - test = testArrayBindingPatternVarDeclarationStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testArrayBindingPatternVarDeclarationBlockStatement() { - let sum = 0, keys = []; - let collection = [['first', 10], [undefined, 20], [, 30], ['last', 40]]; - testDone = false; - for await (var [key = 'unknown', value] of async(collection)) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - keys.push(key); - sum += value; - } - testDone = true; - return {keys, sum}; - } - - test = testArrayBindingPatternVarDeclarationBlockStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - // -------------------------------------------------------------------------- - - async function testBindingIdentifierLetDeclarationStatement() { - let sum = 0; - testDone = false; - for await (let value of async([100, 200, 300, 400, 500])) sum += value; - testDone = true; - return sum; - } - - test = testBindingIdentifierLetDeclarationStatement(); - assertFalse(testDone); - assertEquals(1500, await test); - assertTrue(testDone); - - async function testBindingIdentifierLetDeclarationBlockStatement() { - let sum = 0; - testDone = false; - for await (let value of async([100, 200, 300, 400, 500])) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - sum += value; - } - testDone = true; - return sum; - } - - test = testBindingIdentifierLetDeclarationBlockStatement(); - assertFalse(testDone); - assertEquals(1500, await test); - assertTrue(testDone); - - async function testObjectBindingPatternLetDeclarationStatement() { - let sum = 0, keys = []; - let collection = [ - {key: 'first', value: 10}, {key: undefined, value: 20}, {value: 30}, - {key: 'last', value: 40} - ]; - testDone = false; - for await (let {key = 'unknown', value} of async(collection)) - keys.push(key), sum += value; - testDone = true; - return {keys, sum}; - } - - test = testObjectBindingPatternLetDeclarationStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testObjectBindingPatternLetDeclarationBlockStatement() { - let sum = 0, keys = []; - let collection = [ - {key: 'first', value: 10}, {key: undefined, value: 20}, {value: 30}, - {key: 'last', value: 40} - ]; - testDone = false; - for await (let {key = 'unknown', value} of async(collection)) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - keys.push(key); - sum += value; - } - testDone = true; - return {keys, sum}; - } - - let threwEarly = false; - test = testObjectBindingPatternLetDeclarationBlockStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testObjectBindingPatternTDZLetDeclarationStatement() { - // See https://codereview.chromium.org/1218543003 - let sum = 0; - testDone = false; - let value = { value: 1 }; - try { - for await (let {value} of async([value])) sum += value; - } catch (error) { - threwEarly = true; - throw { sum, error, toString() { return 'TestError' } }; - } - } - - test = testObjectBindingPatternTDZLetDeclarationStatement(); - assertTrue(threwEarly, 'Async function promise should be rejected'); - try { - await test; - } catch (e) { - assertEquals('TestError', e.toString()); - assertEquals(0, e.sum); - assertInstanceof(e.error, ReferenceError); - testDone = true; - } - assertTrue(testDone, 'Awaited promise should be rejected'); - - async function testObjectBindingPatternTDZLetDeclarationBlockStatement() { - // See https://codereview.chromium.org/1218543003 - let sum = 0; - testDone = false; - let value = { value: 1 }; - try { - for await (let {value} of async([value])) { - sum += value; - } - } catch (error) { - threwEarly = true; - throw { sum, error, toString() { return 'TestError' } }; - } - } - - threwEarly = false; - test = testObjectBindingPatternTDZLetDeclarationBlockStatement(); - assertTrue(threwEarly, 'Async function promise should be rejected'); - try { - await test; - } catch (e) { - assertEquals('TestError', e.toString()); - assertEquals(0, e.sum); - assertInstanceof(e.error, ReferenceError); - testDone = true; - } - assertTrue(testDone, 'Awaited promise should be rejected'); - - async function testArrayBindingPatternLetDeclarationStatement() { - let sum = 0, keys = []; - let collection = [['first', 10], [undefined, 20], [, 30], ['last', 40]]; - testDone = false; - for await (let [key = 'unknown', value] of async(collection)) - keys.push(key), sum += value; - testDone = true; - return {keys, sum}; - } - - test = testArrayBindingPatternLetDeclarationStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testArrayBindingPatternLetDeclarationBlockStatement() { - let sum = 0, keys = []; - let collection = [['first', 10], [undefined, 20], [, 30], ['last', 40]]; - testDone = false; - for await (let [key = 'unknown', value] of async(collection)) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - keys.push(key); - sum += value; - } - testDone = true; - return {keys, sum}; - } - - test = testArrayBindingPatternLetDeclarationBlockStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testArrayBindingPatternTDZLetDeclarationStatement() { - // See https://codereview.chromium.org/1218543003 - let sum = 0; - testDone = false; - let value = [1]; - try { - for await (let [value] of async([value])) sum += value; - } catch (error) { - threwEarly = true; - throw { sum, error, toString() { return 'TestError' } }; - } - } - - threwEarly = false; - test = testArrayBindingPatternTDZLetDeclarationStatement(); - assertTrue(threwEarly, 'Async function promise should be rejected'); - try { - await test; - } catch (e) { - assertEquals('TestError', e.toString()); - assertEquals(0, e.sum); - assertInstanceof(e.error, ReferenceError); - testDone = true; - } - assertTrue(testDone, 'Awaited promise should be rejected'); - - async function testArrayBindingPatternTDZLetDeclarationBlockStatement() { - // See https://codereview.chromium.org/1218543003 - let sum = 0; - testDone = false; - let value = [1]; - try { - for await (let [value] of async([value])) { - sum += value; - } - } catch (error) { - threwEarly = true; - throw { sum, error, toString() { return 'TestError' } }; - } - } - - threwEarly = false; - test = testArrayBindingPatternTDZLetDeclarationBlockStatement(); - assertTrue(threwEarly, 'Async function promise should be rejected'); - try { - await test; - } catch (e) { - assertEquals('TestError', e.toString()); - assertEquals(0, e.sum); - assertInstanceof(e.error, ReferenceError); - testDone = true; - } - assertTrue(testDone, 'Awaited promise should be rejected'); - - // -------------------------------------------------------------------------- - - async function testBindingIdentifierConstDeclarationStatement() { - let sum = 0; - testDone = false; - for await (let value of async([100, 200, 300, 400, 500])) sum += value; - testDone = true; - return sum; - } - - test = testBindingIdentifierConstDeclarationStatement(); - assertFalse(testDone); - assertEquals(1500, await test); - assertTrue(testDone); - - async function testBindingIdentifierConstDeclarationBlockStatement() { - let sum = 0; - testDone = false; - for await (const value of async([100, 200, 300, 400, 500])) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - sum += value; - } - testDone = true; - return sum; - } - - test = testBindingIdentifierConstDeclarationBlockStatement(); - assertFalse(testDone); - assertEquals(1500, await test); - assertTrue(testDone); - - async function testObjectBindingPatternConstDeclarationStatement() { - let sum = 0, keys = []; - let collection = [ - {key: 'first', value: 10}, {key: undefined, value: 20}, {value: 30}, - {key: 'last', value: 40} - ]; - testDone = false; - for await (const {key = 'unknown', value} of async(collection)) - keys.push(key), sum += value; - testDone = true; - return {keys, sum}; - } - - test = testObjectBindingPatternConstDeclarationStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testObjectBindingPatternConstDeclarationBlockStatement() { - let sum = 0, keys = []; - let collection = [ - {key: 'first', value: 10}, {key: undefined, value: 20}, {value: 30}, - {key: 'last', value: 40} - ]; - testDone = false; - for await (const {key = 'unknown', value} of async(collection)) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - keys.push(key); - sum += value; - } - testDone = true; - return {keys, sum}; - } - - test = testObjectBindingPatternConstDeclarationBlockStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testObjectBindingPatternTDZConstDeclarationStatement() { - // See https://codereview.chromium.org/1218543003 - let sum = 0; - testDone = false; - const value = { value: 1 }; - try { - for await (const {value} of async([value])) sum += value; - } catch (error) { - threwEarly = true; - throw { sum, error, toString() { return 'TestError' } }; - } - } - - threwEarly = false; - test = testObjectBindingPatternTDZConstDeclarationStatement(); - assertTrue(threwEarly, 'Async function promise should be rejected'); - try { - await test; - } catch (e) { - assertEquals('TestError', e.toString()); - assertEquals(0, e.sum); - assertInstanceof(e.error, ReferenceError); - testDone = true; - } - assertTrue(testDone, 'Awaited promise should be rejected'); - - async function testObjectBindingPatternTDZConstDeclarationBlockStatement() { - // See https://codereview.chromium.org/1218543003 - let sum = 0; - testDone = false; - const value = { value: 1 }; - try { - for await (const {value} of async([value])) { - sum += value; - } - } catch (error) { - threwEarly = true; - throw { sum, error, toString() { return 'TestError' } }; - } - } - - threwEarly = false; - test = testObjectBindingPatternTDZConstDeclarationBlockStatement(); - assertTrue(threwEarly, 'Async function promise should be rejected'); - try { - await test; - } catch (e) { - assertEquals('TestError', e.toString()); - assertEquals(0, e.sum); - assertInstanceof(e.error, ReferenceError); - testDone = true; - } - assertTrue(testDone, 'Awaited promise should be rejected'); - - async function testArrayBindingPatternConstDeclarationStatement() { - let sum = 0, keys = []; - let collection = [['first', 10], [undefined, 20], [, 30], ['last', 40]]; - testDone = false; - for await (const [key = 'unknown', value] of async(collection)) - keys.push(key), sum += value; - testDone = true; - return {keys, sum}; - } - - test = testArrayBindingPatternConstDeclarationStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testArrayBindingPatternConstDeclarationBlockStatement() { - let sum = 0, keys = []; - let collection = [['first', 10], [undefined, 20], [, 30], ['last', 40]]; - testDone = false; - for await (const [key = 'unknown', value] of async(collection)) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - keys.push(key); - sum += value; - } - testDone = true; - return {keys, sum}; - } - - test = testArrayBindingPatternLetDeclarationBlockStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 100}, await test); - assertTrue(testDone); - - async function testArrayBindingPatternTDZConstDeclarationStatement() { - // See https://codereview.chromium.org/1218543003 - let sum = 0; - testDone = false; - const value = [1]; - try { - for await (const [value] of async([value])) sum += value; - } catch (error) { - threwEarly = true; - throw { sum, error, toString() { return 'TestError' } }; - } - } - - threwEarly = false; - test = testArrayBindingPatternTDZConstDeclarationStatement(); - assertTrue(threwEarly, 'Async function promise should be rejected'); - try { - await test; - } catch (e) { - assertEquals('TestError', e.toString()); - assertEquals(0, e.sum); - assertInstanceof(e.error, ReferenceError); - testDone = true; - } - assertTrue(testDone, 'Awaited promise should be rejected'); - - async function testArrayBindingPatternTDZConstDeclarationBlockStatement() { - // See https://codereview.chromium.org/1218543003 - let sum = 0; - testDone = false; - const value = [1]; - try { - for await (const [value] of async([value])) { - sum += value; - } - } catch (error) { - threwEarly = true; - throw { sum, error, toString() { return 'TestError' } }; - } - } - - threwEarly = false; - test = testArrayBindingPatternTDZConstDeclarationBlockStatement(); - assertTrue(threwEarly, 'Async function promise should be rejected'); - try { - await test; - } catch (e) { - assertEquals('TestError', e.toString()); - assertEquals(0, e.sum); - assertInstanceof(e.error, ReferenceError); - testDone = true; - } - assertTrue(testDone, 'Awaited promise should be rejected'); - - // -------------------------------------------------------------------------- - - async function testBindingIdentifierLHSStatement() { - let sum = 0; - let value; - testDone = false; - for await (value of async([100, 200, 300, 400, 500])) sum += value; - testDone = true; - return sum; - } - - test = testBindingIdentifierLHSStatement(); - assertFalse(testDone); - assertEquals(1500, await test); - assertTrue(testDone); - - async function testBindingIdentifierLHSBlockStatement() { - let sum = 0; - let value; - testDone = false; - for await (value of async([100, 200, 300, 400, 500])) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - sum += value; - } - testDone = true; - return sum; - } - - test = testBindingIdentifierLHSStatement(); - assertFalse(testDone); - assertEquals(1500, await test); - assertTrue(testDone); - - async function testObjectBindingPatternLHSStatement() { - let sum = 0; - let keys = []; - let value; - let key; - let collection = [ - {key: 'first', value: 1}, {key: undefined, value: 2}, {value: 3}, - {key: 'last', value: 4} - ]; - testDone = false; - for await ({key = 'unknown', value} of async(collection)) - keys.push(key), sum += value; - testDone = true; - return {keys, sum}; - } - - test = testObjectBindingPatternLHSStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 10}, await test); - assertTrue(testDone); - - async function testObjectBindingPatternLHSBlockStatement() { - let sum = 0; - let keys = []; - let value; - let key; - let collection = [ - {key: 'first', value: 1}, {key: undefined, value: 2}, {value: 3}, - {key: 'last', value: 4} - ]; - testDone = false; - for await ({key = 'unknown', value} of async(collection)) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - keys.push(key); - sum += value; - } - testDone = true; - return {keys, sum}; - } - - test = testObjectBindingPatternLHSBlockStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 10}, await test); - assertTrue(testDone); - - async function testArrayBindingPatternLHSStatement() { - let sum = 0; - let keys = []; - let value; - let key; - let collection = [['first', 1], [undefined, 2], [, 3], ['last', 4]]; - testDone = false; - for await ([key = 'unknown', value] of async(collection)) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - keys.push(key); - sum += value; - } - testDone = true; - return {keys, sum}; - } - - test = testArrayBindingPatternLHSStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 10}, await test); - assertTrue(testDone); - - async function testArrayBindingPatternLHSBlockStatement() { - let sum = 0; - let keys = []; - let value; - let key; - let collection = [ - {key: 'first', value: 1}, {key: undefined, value: 2}, {value: 3}, - {key: 'last', value: 4} - ]; - testDone = false; - for await ({key = 'unknown', value} of async(collection)) { - 'use strict'; - let strict = (function() { return this === undefined; })(); - assertFalse(strict); - keys.push(key); - sum += value; - } - testDone = true; - return {keys, sum}; - } - - test = testArrayBindingPatternLHSBlockStatement(); - assertFalse(testDone); - assertEquals( - {keys: ['first', 'unknown', 'unknown', 'last'], sum: 10}, await test); - assertTrue(testDone); - - // -------------------------------------------------------------------------- - - async function testBreakStatementReturnMethodNotPresent() { - let log = []; - let collection = [1, 2, 3, 4, 5]; - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(collection, kNext, log)) { - sum += x; - if (++i === 3) break; - } - testDone = true; - return { sum, log }; - } - - test = testBreakStatementReturnMethodNotPresent(); - assertFalse(testDone); - assertEquals({sum: 6, log: ['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.next() -> resolved 3']}, - await test); - assertTrue(testDone); - - async function testBreakStatementReturnMethodPresent() { - let log = []; - let collection = [1, 2, 3, 4, 5]; - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(collection, kNext|kReturn, log)) { - sum += x; - if (++i === 2) break; - } - testDone = true; - return { sum, log }; - } - - test = testBreakStatementReturnMethodPresent(); - assertFalse(testDone); - assertEquals({sum: 3, log: ['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return(undefined)']}, - await test); - assertTrue(testDone); - - async function testBreakStatementReturnMethodAwaitIterResult() { - let log = []; - let collection = [1, 2, 3, 4, 5]; - let sync_iter = collection[Symbol.iterator](); - sync_iter.return = function() { - return { - value: new Promise(function(resolve, reject) { - Promise.resolve().then(function() { - resolve('break!'); - }); - }), - done: true - }; - }; - - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(sync_iter, kNext|kReturn, log)) { - sum += x; - if (++i === 2) break; - } - testDone = true; - return { sum, log }; - } - - test = testBreakStatementReturnMethodAwaitIterResult(); - assertFalse(testDone); - assertEquals({sum: 3, - log: ['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return() -> resolved break!' ]}, - await test); - assertTrue(testDone); - - async function testBreakStatementReturnMethodAwaitRejection(log) { - let collection = [1, 2, 3, 4, 5]; - let sync_iter = collection[Symbol.iterator](); - let sum = 0; - sync_iter.return = function() { - return { - value: new Promise(function(resolve, reject) { - Promise.resolve().then(function() { - reject('break! ' + sum); - }); - }), - done: true - }; - }; - - let i = 0; - testDone = false; - for await (var x of async(sync_iter, kNext|kReturn, log)) { - sum += x; - if (++i === 2) break; - } - return { sum, log }; - } - - let log = []; - test = testBreakStatementReturnMethodAwaitRejection(log); - assertFalse(testDone); - try { - await test; - } catch (e) { - assertEquals(log, ['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return() -> rejected break! 3']); - assertEquals('break! 3', e); - testDone = true; - } - assertTrue(testDone, 'Promise should be rejected'); - - async function testBreakStatementReturnMethodPrimitiveValue(log) { - let collection = [1, 2, 3, 4, 5]; - let sync_iter = collection[Symbol.iterator](); - sync_iter.return = function() { - return { value: 'break! primitive!', done: true }; - } - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(sync_iter, kNext|kReturnPrimitive, log)) { - sum += x; - if (++i === 2) break; - } - return { sum, log }; - } - log = []; - test = testBreakStatementReturnMethodPrimitiveValue(log); - assertFalse(testDone); - try { - await test; - } catch (e) { - assertEquals(['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return() -> resolved break! primitive!'], - log); - assertInstanceof(e, TypeError); - testDone = true; - } - assertTrue(testDone, 'Promise should be rejected'); - - async function testReturnStatementReturnMethodNotPresent() { - let log = []; - let collection = [1, 2, 3, 4, 5]; - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(collection, kNext, log)) { - sum += x; - if (++i === 3) { - testDone = true; - return { sum, log }; - } - } - } - - test = testReturnStatementReturnMethodNotPresent(); - assertFalse(testDone); - assertEquals({sum: 6, log: ['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.next() -> resolved 3']}, - await test); - assertTrue(testDone); - - async function testReturnStatementReturnMethodPresent() { - let log = []; - let collection = [1, 2, 3, 4, 5]; - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(collection, kNext|kReturn, log)) { - sum += x; - if (++i === 2) { - testDone = true; - return { sum, log }; - } - } - } - - test = testReturnStatementReturnMethodPresent(); - assertFalse(testDone); - assertEquals({sum: 3, log: ['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return(undefined)']}, - await test); - assertTrue(testDone); - - async function testReturnStatementReturnMethodAwaitIterResult() { - let log = []; - let collection = [1, 2, 3, 4, 5]; - let sync_iter = collection[Symbol.iterator](); - sync_iter.return = function() { - return { - value: new Promise(function(resolve, reject) { - Promise.resolve().then(function() { - testDone = true; - resolve('return!'); - }); - }), - done: true - }; - }; - - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(sync_iter, kNext|kReturn, log)) { - sum += x; - if (++i === 2) return { sum, log }; - } - } - - test = testReturnStatementReturnMethodAwaitIterResult(); - assertFalse(testDone); - assertEquals({sum: 3, - log: ['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return() -> resolved return!' ]}, - await test); - assertTrue(testDone); - - async function testReturnStatementReturnMethodAwaitRejection(log) { - let collection = [1, 2, 3, 4, 5]; - let sync_iter = collection[Symbol.iterator](); - let sum = 0; - sync_iter.return = function() { - return { - value: new Promise(function(resolve, reject) { - Promise.resolve().then(function() { - reject('return! ' + sum); - }); - }), - done: true - }; - }; - - let i = 0; - testDone = false; - for await (var x of async(sync_iter, kNext|kReturn, log)) { - sum += x; - if (++i === 2) return { sum, log }; - } - } - - log = []; - test = testReturnStatementReturnMethodAwaitRejection(log); - assertFalse(testDone); - try { - await test; - } catch (e) { - assertEquals('return! 3', e); - assertEquals(['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return() -> rejected return! 3'], - log); - testDone = true; - } - assertTrue(testDone, 'Promise should be rejected'); - - async function testReturnStatementReturnMethodPrimitiveValue(log) { - let collection = [1, 2, 3, 4, 5]; - let sync_iter = collection[Symbol.iterator](); - sync_iter.return = function() { - return { value: 'return! primitive!', done: true }; - } - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(sync_iter, kNext|kReturnPrimitive, log)) { - sum += x; - if (++i === 2) break; - } - return { sum, log }; - } - log = []; - test = testReturnStatementReturnMethodPrimitiveValue(log); - assertFalse(testDone); - try { - await test; - } catch (e) { - assertEquals(['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return() -> resolved return! primitive!'], - log); - assertInstanceof(e, TypeError); - testDone = true; - } - assertTrue(testDone, 'Promise should be rejected'); - - async function testThrowStatementReturnMethodNotPresent() { - let log = []; - let collection = [1, 2, 3, 4, 5]; - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(collection, kNext|kThrow, log)) { - sum += x; - if (++i === 3) { - throw { sum, log, toString() { return 'TestError'; } }; - } - } - return { sum, log }; - } - - test = testThrowStatementReturnMethodNotPresent(); - assertFalse(testDone); - try { - await test; - } catch (e) { - assertEquals('TestError', e.toString()); - assertEquals(6, e.sum); - assertEquals(['[Symbol.asyncIterator]()', '.next() -> resolved 1', - '.next() -> resolved 2', '.next() -> resolved 3' - ], e.log); - testDone = true; - } - assertTrue(testDone, 'Awaited Promise should be rejected'); - - async function testThrowStatementReturnMethodPresent() { - let log = []; - let collection = [1, 2, 3, 4, 5]; - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(collection, kNext|kThrow|kReturn, log)) { - sum += x; - if (++i === 2) { - throw { sum, log, toString() { return 'TestError2'; } }; - } - } - return { sum, log }; - } - - test = testThrowStatementReturnMethodPresent(); - assertFalse(testDone); - try { - await test; - } catch (e) { - assertEquals('TestError2', e.toString()); - assertEquals(3, e.sum); - assertEquals(['[Symbol.asyncIterator]()', '.next() -> resolved 1', - '.next() -> resolved 2', '.return(undefined)' - ], e.log); - testDone = true; - } - assertTrue(testDone, 'Awaited Promise should be rejected'); - - async function testThrowStatementReturnMethodAwaitIterResult(log) { - let collection = [1, 2, 3, 4, 5]; - let sync_iter = collection[Symbol.iterator](); - sync_iter.return = function() { - return { - value: new Promise(function(resolve, reject) { - Promise.resolve().then(function() { - testDone = true; - resolve('throw!'); - }); - }), - done: true - }; - }; - - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(sync_iter, kNext|kReturn, log)) { - sum += x; - if (++i === 2) throw 'Boo!!'; - } - } - - log = []; - test = testThrowStatementReturnMethodAwaitIterResult(log); - assertFalse(testDone); - - try { - await test; - } catch (e) { - assertEquals('Boo!!', e); - assertEquals(['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return() -> resolved throw!' ], log); - testDone = true; - } - assertTrue(testDone, 'Awaited Promise should be rejected'); - - async function testThrowStatementReturnMethodAwaitRejection(log) { - let collection = [1, 2, 3, 4, 5]; - let sync_iter = collection[Symbol.iterator](); - let sum = 0; - sync_iter.return = function() { - return { - value: new Promise(function(resolve, reject) { - Promise.resolve().then(function() { - reject('return! ' + sum); - }); - }), - done: true - }; - }; - - let i = 0; - testDone = false; - for await (var x of async(sync_iter, kNext|kReturn, log)) { - sum += x; - if (++i === 2) throw 'Boo!!'; - } - } - - log = []; - test = testThrowStatementReturnMethodAwaitRejection(log); - assertFalse(testDone); - try { - await test; - } catch (e) { - assertEquals('Boo!!', e); - assertEquals(['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return() -> rejected return! 3'], - log); - testDone = true; - } - assertTrue(testDone, 'Promise should be rejected'); - - async function testThrowStatementReturnMethodPrimitiveValue(log) { - let collection = [1, 2, 3, 4, 5]; - let sync_iter = collection[Symbol.iterator](); - sync_iter.return = function() { - return { value: 'return! primitive!', done: true }; - } - let sum = 0; - let i = 0; - testDone = false; - for await (var x of async(sync_iter, kNext|kReturnPrimitive, log)) { - sum += x; - if (++i === 2) throw 'Boo!!'; - } - } - log = []; - test = testThrowStatementReturnMethodPrimitiveValue(log); - assertFalse(testDone); - try { - await test; - } catch (e) { - assertEquals(['[Symbol.asyncIterator]()', - '.next() -> resolved 1', - '.next() -> resolved 2', - '.return() -> resolved return! primitive!'], - log); - - // AsyncIteratorClose does not require Throw completions to be of type - // Object - assertEquals('Boo!!', e); - testDone = true; - } - assertTrue(testDone, 'Promise should be rejected'); -})().catch(function(error) { - testFailed = true; - testFailure = error; -}); - -%PerformMicrotaskCheckpoint(); - -if (testFailed) { - throw testFailure; -} diff --git a/implementation-contributed/v8/mjsunit/harmony/function-tostring.js b/implementation-contributed/v8/mjsunit/harmony/function-tostring.js deleted file mode 100644 index 2af14f16cf4..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/function-tostring.js +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var prefix = "/*before*/"; -var suffix = "/*after*/"; - -function checkStringRepresentation(f, source) { - assertEquals(typeof f, "function"); - assertEquals(source, f.toString()); -} - -function testDeclaration(source) { - // this eval should define a local variable f that is a function - eval(prefix + source + suffix); - checkStringRepresentation(f, source); -} -testDeclaration( "function f(){}"); -testDeclaration( "function*f(){}"); -testDeclaration("async function f(){}"); -testDeclaration( "function/*A*/ f/*B*/(/*C*/a/*D*/,/*E*/b/*G*/)/*H*/{/*I*/}"); -testDeclaration( "function/*A*/*f/*B*/(/*C*/a/*D*/,/*E*/b/*G*/)/*H*/{/*I*/}"); -testDeclaration("async/*Z*/function/*A*/ f/*B*/(/*C*/a/*D*/,/*E*/b/*G*/)/*H*/{/*I*/}"); -testDeclaration( "function \t f \n ( \r a \r\n,\n\r b ) {'\u2654'}"); -testDeclaration( "function \t *f \n ( \r a \r\n,\n\r b ) { }"); -testDeclaration( "function *\t f \n ( \r a \r\n,\n\r b ) { }"); -testDeclaration("async \t function f \n ( \r a \r\n,\n\r b ) { }"); - -function testExpression(source) { - // this eval should return a function - var f = eval("(" + prefix + source + suffix + ")"); - checkStringRepresentation(f, source); -} -testExpression( "function (){}"); -testExpression( "function f(){}"); -testExpression( "function* (){}"); -testExpression( "function*f(){}"); -testExpression("async function (){}"); -testExpression("async function f(){}"); -testExpression( "function/*A*/ /*B*/(/*C*/a/*D*/,/*E*/b/*G*/)/*H*/{/*I*/}"); -testExpression( "function/*A*/ f/*B*/(/*C*/a/*D*/,/*E*/b/*G*/)/*H*/{/*I*/}"); -testExpression( "function/*A*/* /*B*/(/*C*/a/*D*/,/*E*/b/*G*/)/*H*/{/*I*/}"); -testExpression( "function/*A*/*f/*B*/(/*C*/a/*D*/,/*E*/b/*G*/)/*H*/{/*I*/}"); -testExpression("async/*Z*/function/*A*/ f/*B*/(/*C*/a/*D*/,/*E*/b/*G*/)/*H*/{/*I*/}"); -testExpression( "function \t \n ( \r a \r\n,\n\r b ) { }"); -testExpression( "function \t f \n ( \r a \r\n,\n\r b ) { }"); -testExpression( "function \t * \n ( \r a \r\n,\n\r b ) { }"); -testExpression( "function \t *f \n ( \r a \r\n,\n\r b ) { }"); -testExpression( "function *\t \n ( \r a \r\n,\n\r b ) { }"); -testExpression( "function *\t f \n ( \r a \r\n,\n\r b ) { }"); -testExpression("async \t function \n ( \r a \r\n,\n\r b ) { }"); - -testExpression( "(/*A*/ /*B*/ /*C*/ /*D*/ /*E*/ /*F*/)/*G*/=>/*H*/0"); -testExpression( "a/*B*/ /*C*/ /*D*/ /*E*/ /*F*/ /*G*/=>/*H*/{}"); -testExpression( "(/*A*/a/*B*/ /*C*/ /*D*/ /*E*/ /*F*/)/*G*/=>/*H*/0"); -testExpression( "(/*A*/a/*B*/,/*C*/b/*D*/,/*E*/c/*F*/)/*G*/=>/*H*/{}"); -testExpression("async (/*A*/ /*B*/ /*C*/ /*D*/ /*E*/ /*F*/)/*G*/=>/*H*/0"); -testExpression("async a/*B*/ /*C*/ /*D*/ /*E*/ /*F*/ /*G*/=>/*H*/{}"); -testExpression("async (/*A*/a/*B*/ /*C*/ /*D*/ /*E*/ /*F*/)/*G*/=>/*H*/0"); -testExpression("async (/*A*/a/*B*/,/*C*/b/*D*/,/*E*/c/*F*/)/*G*/=>/*H*/{}"); - -function testSimpleMethod(source) { - // the source should define a method f - - // object method - var f = eval("({" + prefix + source + suffix + "}.f)"); - checkStringRepresentation(f, source); - - // nonstatic class method - var f = eval("new class{" + prefix + source + suffix + "}().f"); - checkStringRepresentation(f, source); - - // static class method - var f = eval("(class{static" + prefix + source + suffix + "}).f"); - checkStringRepresentation(f, source); -} -testSimpleMethod("f(){}"); -testSimpleMethod("*f(){}"); -testSimpleMethod("async f(){}"); -testSimpleMethod("f \t (){}"); -testSimpleMethod("* \tf(){}"); -testSimpleMethod("async \t f (){}"); - -function testAccessorMethod(source, getOrSet) { - // the source should define a getter or setter method - - // object method - var f = Object.getOwnPropertyDescriptor(eval("({" + prefix + source + suffix + "})"), "f")[getOrSet]; - checkStringRepresentation(f, source); - - // nonstatic class method - var f = Object.getOwnPropertyDescriptor(eval("(class{" + prefix + source + suffix + "})").prototype, "f")[getOrSet]; - - // static class method - var f = Object.getOwnPropertyDescriptor(eval("(class{static" + prefix + source + suffix + "})"), "f")[getOrSet]; - checkStringRepresentation(f, source); -} - -testAccessorMethod("get f( ){}", "get"); -testAccessorMethod("set f(a){}", "set"); -testAccessorMethod("get/*A*/f/*B*/(/*C*/ /*D*/)/*E*/{/*F*/}", "get"); -testAccessorMethod("set/*A*/f/*B*/(/*C*/a/*D*/)/*E*/{/*F*/}", "set"); - -const GeneratorFunction = function*(){}.constructor; -const AsyncFunction = async function(){}.constructor; -function testDynamicFunction(...args) { - var P = args.slice(0, args.length - 1).join(","); - var bodyText = args.length > 0 ? args[args.length - 1] : ""; - var source = " anonymous(" + P + "\n) {\n" + bodyText + "\n}"; - checkStringRepresentation( Function(...args), "function" + source); - checkStringRepresentation(GeneratorFunction(...args), "function*" + source); - checkStringRepresentation( AsyncFunction(...args), "async function" + source); -} -testDynamicFunction(); -testDynamicFunction(";"); -testDynamicFunction("return"); -testDynamicFunction("a", "return a"); -testDynamicFunction("a", "b", "return a"); -testDynamicFunction("a, b", "return a"); -testDynamicFunction("a,/*A*/b", "return a"); -testDynamicFunction("/*A*/a,b", "return a"); -testDynamicFunction("a,b", "return a/*A*/"); - -// Proxies of functions should not throw, but return a NativeFunction. -assertEquals("function () { [native code] }", - new Proxy(function () { hidden }, {}).toString()); -assertEquals("function () { [native code] }", - new Proxy(() => { hidden }, {}).toString()); -assertEquals("function () { [native code] }", - new Proxy(class {}, {}).toString()); -assertEquals("function () { [native code] }", - new Proxy(function() { hidden }.bind({}), {}).toString()); -assertEquals("function () { [native code] }", - new Proxy(function*() { hidden }, {}).toString()); -assertEquals("function () { [native code] }", - new Proxy(async function() { hidden }, {}).toString()); -assertEquals("function () { [native code] }", - new Proxy(async function*() { hidden }, {}).toString()); -assertEquals("function () { [native code] }", - new Proxy({ method() { hidden } }.method, {}).toString()); - -// Assert that we return a NativeFunction for script that has too large an -// offset between function token position and start position for us to return -// an exact representation of the source code. -function testLongFunctionTokenOffset(functionType) { - var expected = "function f() { [native code] }"; - // Spec requires that we return something that will cause eval to throws if we - // can't reproduce the function's source code. - assertThrows(() => eval(expected), SyntaxError); - - var functionSource = functionType + " ".repeat(65535) + " f(){}"; - - // Function declaration - eval(functionSource); - assertEquals(expected, f.toString()); - - // Function expression - var f = eval("(" + functionSource + ")"); - assertEquals(expected, f.toString()); -} -testLongFunctionTokenOffset("function"); -testLongFunctionTokenOffset("function*"); -testLongFunctionTokenOffset("async function"); -testLongFunctionTokenOffset("async function*"); - -// Non-callable proxies still throw. -assertThrows(() => Function.prototype.toString.call(new Proxy({}, {})), - TypeError); diff --git a/implementation-contributed/v8/mjsunit/harmony/futex.js b/implementation-contributed/v8/mjsunit/harmony/futex.js deleted file mode 100644 index 188832cf3c9..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/futex.js +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-sharedarraybuffer - -(function TestFailsWithNonSharedArray() { - var ab = new ArrayBuffer(16); - - var i8a = new Int8Array(ab); - var i16a = new Int16Array(ab); - var i32a = new Int32Array(ab); - var ui8a = new Uint8Array(ab); - var ui8ca = new Uint8ClampedArray(ab); - var ui16a = new Uint16Array(ab); - var ui32a = new Uint32Array(ab); - var f32a = new Float32Array(ab); - var f64a = new Float64Array(ab); - - [i8a, i16a, i32a, ui8a, ui8ca, ui16a, ui32a, f32a, f64a].forEach(function( - ta) { - assertThrows(function() { Atomics.wait(ta, 0, 0); }); - assertThrows(function() { Atomics.wake(ta, 0, 1); }); - }); -})(); - -(function TestFailsWithNonSharedInt32Array() { - var sab = new SharedArrayBuffer(16); - - var i8a = new Int8Array(sab); - var i16a = new Int16Array(sab); - var ui8a = new Uint8Array(sab); - var ui8ca = new Uint8ClampedArray(sab); - var ui16a = new Uint16Array(sab); - var ui32a = new Uint32Array(sab); - var f32a = new Float32Array(sab); - var f64a = new Float64Array(sab); - - [i8a, i16a, ui8a, ui8ca, ui16a, ui32a, f32a, f64a].forEach(function( - ta) { - assertThrows(function() { Atomics.wait(ta, 0, 0); }); - assertThrows(function() { Atomics.wake(ta, 0, 1); }); - }); -})(); - -(function TestInvalidIndex() { - var sab = new SharedArrayBuffer(16); - var i32a = new Int32Array(sab); - - // Valid indexes are 0-3. - [-1, 4, 100, 0xffffffff].forEach(function(invalidIndex) { - assertThrows(function() { - Atomics.wait(i32a, invalidIndex, 0); - }, RangeError); - assertThrows(function() { - Atomics.wake(i32a, invalidIndex, 0); - }, RangeError); - var validIndex = 0; - }); - - i32a = new Int32Array(sab, 8); - [-1, 2, 100, 0xffffffff].forEach(function(invalidIndex) { - assertThrows(function() { - Atomics.wait(i32a, invalidIndex, 0); - }, RangeError); - assertThrows(function() { - Atomics.wake(i32a, invalidIndex, 0); - }, RangeError); - var validIndex = 0; - }); -})(); - -(function TestWaitTimeout() { - var i32a = new Int32Array(new SharedArrayBuffer(16)); - var waitMs = 100; - var startTime = new Date(); - assertEquals("timed-out", Atomics.wait(i32a, 0, 0, waitMs)); - var endTime = new Date(); - assertTrue(endTime - startTime >= waitMs); -})(); - -(function TestWaitNotEqual() { - var sab = new SharedArrayBuffer(16); - var i32a = new Int32Array(sab); - assertEquals("not-equal", Atomics.wait(i32a, 0, 42)); - - i32a = new Int32Array(sab, 8); - i32a[0] = 1; - assertEquals("not-equal", Atomics.wait(i32a, 0, 0)); -})(); - -(function TestWaitNegativeTimeout() { - var i32a = new Int32Array(new SharedArrayBuffer(16)); - assertEquals("timed-out", Atomics.wait(i32a, 0, 0, -1)); - assertEquals("timed-out", Atomics.wait(i32a, 0, 0, -Infinity)); -})(); - -(function TestWaitNotAllowed() { - %SetAllowAtomicsWait(false); - var i32a = new Int32Array(new SharedArrayBuffer(16)); - assertThrows(function() { - Atomics.wait(i32a, 0, 0, -1); - }); - %SetAllowAtomicsWait(true); -})(); - -(function TestWakePositiveInfinity() { - var i32a = new Int32Array(new SharedArrayBuffer(16)); - Atomics.wake(i32a, 0, Number.POSITIVE_INFINITY); - Atomics.notify(i32a, 0, Number.POSITIVE_INFINITY); -})(); - -// In a previous version, this test caused a check failure -(function TestObjectWaitValue() { - var sab = new SharedArrayBuffer(16); - var i32a = new Int32Array(sab); - assertEquals("timed-out", Atomics.wait(i32a, 0, Math, 0)); -})(); - - -//// WORKER ONLY TESTS - -if (this.Worker) { - - var TestWaitWithTimeout = function(notify, timeout) { - var sab = new SharedArrayBuffer(16); - var i32a = new Int32Array(sab); - - var workerScript = - `onmessage = function(msg) { - var i32a = new Int32Array(msg.sab, msg.offset); - var result = Atomics.wait(i32a, 0, 0, ${timeout}); - postMessage(result); - };`; - - var worker = new Worker(workerScript, {type: 'string'}); - worker.postMessage({sab: sab, offset: offset}); - - // Spin until the worker is waiting on the futex. - while (%AtomicsNumWaitersForTesting(i32a, 0) != 1) {} - - notify(i32a, 0, 1); - assertEquals("ok", worker.getMessage()); - worker.terminate(); - - var worker2 = new Worker(workerScript, {type: 'string'}); - var offset = 8; - var i32a2 = new Int32Array(sab, offset); - worker2.postMessage({sab: sab, offset: offset}); - - // Spin until the worker is waiting on the futex. - while (%AtomicsNumWaitersForTesting(i32a2, 0) != 1) {} - notify(i32a2, 0, 1); - assertEquals("ok", worker2.getMessage()); - worker2.terminate(); - - // Futex should work when index and buffer views are different, but - // the real address is the same. - var worker3 = new Worker(workerScript, {type: 'string'}); - i32a2 = new Int32Array(sab, 4); - worker3.postMessage({sab: sab, offset: 8}); - - // Spin until the worker is waiting on the futex. - while (%AtomicsNumWaitersForTesting(i32a2, 1) != 1) {} - notify(i32a2, 1, 1); - assertEquals("ok", worker3.getMessage()); - worker3.terminate(); - }; - - // Test various infinite timeouts - TestWaitWithTimeout(Atomics.wake, undefined); - TestWaitWithTimeout(Atomics.wake, NaN); - TestWaitWithTimeout(Atomics.wake, Infinity); - TestWaitWithTimeout(Atomics.notify, undefined); - TestWaitWithTimeout(Atomics.notify, NaN); - TestWaitWithTimeout(Atomics.notify, Infinity); - - var TestWakeMulti = function(notify) { - var sab = new SharedArrayBuffer(20); - var i32a = new Int32Array(sab); - - // SAB values: - // i32a[id], where id in range [0, 3]: - // 0 => Worker |id| is still waiting on the futex - // 1 => Worker |id| is not waiting on futex, but has not be reaped by the - // main thread. - // 2 => Worker |id| has been reaped. - // - // i32a[4]: - // always 0. Each worker is waiting on this index. - - var workerScript = - `onmessage = function(msg) { - var id = msg.id; - var i32a = new Int32Array(msg.sab); - - // Wait on i32a[4] (should be zero). - var result = Atomics.wait(i32a, 4, 0); - // Set i32a[id] to 1 to notify the main thread which workers were - // woken up. - Atomics.store(i32a, id, 1); - postMessage(result); - };`; - - var id; - var workers = []; - for (id = 0; id < 4; id++) { - workers[id] = new Worker(workerScript, {type: 'string'}); - workers[id].postMessage({sab: sab, id: id}); - } - - // Spin until all workers are waiting on the futex. - while (%AtomicsNumWaitersForTesting(i32a, 4) != 4) {} - - // Wake up three waiters. - assertEquals(3, notify(i32a, 4, 3)); - - var wokenCount = 0; - var waitingId = 0 + 1 + 2 + 3; - while (wokenCount < 3) { - for (id = 0; id < 4; id++) { - // Look for workers that have not yet been reaped. Set i32a[id] to 2 - // when they've been processed so we don't look at them again. - if (Atomics.compareExchange(i32a, id, 1, 2) == 1) { - assertEquals("ok", workers[id].getMessage()); - workers[id].terminate(); - waitingId -= id; - wokenCount++; - } - } - } - - assertEquals(3, wokenCount); - assertEquals(0, Atomics.load(i32a, waitingId)); - assertEquals(1, %AtomicsNumWaitersForTesting(i32a, 4)); - - // Finally wake the last waiter. - assertEquals(1, notify(i32a, 4, 1)); - assertEquals("ok", workers[waitingId].getMessage()); - workers[waitingId].terminate(); - - assertEquals(0, %AtomicsNumWaitersForTesting(i32a, 4)); - - }; - - TestWakeMulti(Atomics.wake); - // TODO(binji): This is hitting d8's max worker count when run with multiple - // isolates. Re-enable when workers are cleaned up after termination. - // TestWakeMulti(Atomics.notify); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/generators-reduced.js b/implementation-contributed/v8/mjsunit/harmony/generators-reduced.js deleted file mode 100644 index 8ea96c6ba54..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/generators-reduced.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -function* h() { try {yield 42} finally {yield 43} }; -function* g() { yield* h(); }; - -let x = g(); -x.next(); -%OptimizeFunctionOnNextCall(g); -x.throw(670); -try { x.next() } catch (e) { } diff --git a/implementation-contributed/v8/mjsunit/harmony/generators.js b/implementation-contributed/v8/mjsunit/harmony/generators.js deleted file mode 100644 index b98164c135d..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/generators.js +++ /dev/null @@ -1,653 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -function MaybeOptimizeOrDeoptimize(f) { - let x = Math.random(); // --random-seed makes this deterministic - if (x <= 0.33) { - %OptimizeFunctionOnNextCall(f); - } else if (x <= 0.66) { - %DeoptimizeFunction(f); - } -} - -function Next(generator, ...args) { - MaybeOptimizeOrDeoptimize(%GeneratorGetFunction(generator)); - return generator.next(...args); -} - -function Return(generator, ...args) { - MaybeOptimizeOrDeoptimize(%GeneratorGetFunction(generator)); - return generator.return(...args); -} - -function Throw(generator, ...args) { - MaybeOptimizeOrDeoptimize(%GeneratorGetFunction(generator)); - return generator.throw(...args); -} - - -{ // yield in try-catch - - let g = function*() { - try {yield 1} catch (error) {assertEquals("caught", error)} - }; - - assertThrowsEquals(() => Throw(g(), "not caught"), "not caught"); - - { - let x = g(); - assertEquals({value: 1, done: false}, Next(x)); - assertEquals({value: undefined, done: true}, Throw(x, "caught")); - } - - { - let x = g(); - assertEquals({value: 1, done: false}, Next(x)); - assertEquals({value: undefined, done: true}, Next(x)); - assertThrowsEquals(() => Throw(x, "not caught"), "not caught"); - } -} - - -{ // return that doesn't close - let g = function*() { try {return 42} finally {yield 43} }; - - { - let x = g(); - assertEquals({value: 43, done: false}, Next(x)); - assertEquals({value: 42, done: true}, Next(x)); - } -} - - -{ // return that doesn't close - let x; - let g = function*() { try {return 42} finally {Throw(x, 666)} }; - - { - x = g(); - assertThrows(() => Next(x), TypeError); // still executing - } -} - - -{ // yield in try-finally, finally clause performs return - - let g = function*() { try {yield 42} finally {return 13} }; - - { // "return" closes at suspendedStart - let x = g(); - assertEquals({value: 666, done: true}, Return(x, 666)); - assertEquals({value: undefined, done: true}, Next(x, 42)); - assertThrowsEquals(() => Throw(x, 43), 43); - assertEquals({value: 42, done: true}, Return(x, 42)); - } - - { // "throw" closes at suspendedStart - let x = g(); - assertThrowsEquals(() => Throw(x, 666), 666); - assertEquals({value: undefined, done: true}, Next(x, 42)); - assertEquals({value: 43, done: true}, Return(x, 43)); - assertThrowsEquals(() => Throw(x, 44), 44); - } - - { // "next" closes at suspendedYield - let x = g(); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 13, done: true}, Next(x, 666)); - assertEquals({value: undefined, done: true}, Next(x, 666)); - assertThrowsEquals(() => Throw(x, 666), 666); - } - - { // "return" closes at suspendedYield - let x = g(); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 13, done: true}, Return(x, 666)); - assertEquals({value: undefined, done: true}, Next(x, 666)); - assertEquals({value: 666, done: true}, Return(x, 666)); - } - - { // "throw" closes at suspendedYield - let x = g(); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 13, done: true}, Throw(x, 666)); - assertThrowsEquals(() => Throw(x, 666), 666); - assertEquals({value: undefined, done: true}, Next(x, 666)); - } -} - - -{ // yield in try-finally, finally clause doesn't perform return - - let g = function*() { try {yield 42} finally {13} }; - - { // "return" closes at suspendedStart - let x = g(); - assertEquals({value: 666, done: true}, Return(x, 666)); - assertEquals({value: undefined, done: true}, Next(x, 42)); - assertThrowsEquals(() => Throw(x, 43), 43); - assertEquals({value: 42, done: true}, Return(x, 42)); - } - - { // "throw" closes at suspendedStart - let x = g(); - assertThrowsEquals(() => Throw(x, 666), 666); - assertEquals({value: undefined, done: true}, Next(x, 42)); - assertEquals({value: 43, done: true}, Return(x, 43)); - assertThrowsEquals(() => Throw(x, 44), 44); - } - - { // "next" closes at suspendedYield - let x = g(); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: undefined, done: true}, Next(x, 666)); - assertEquals({value: undefined, done: true}, Next(x, 666)); - assertThrowsEquals(() => Throw(x, 666), 666); - assertEquals({value: 42, done: true}, Return(x, 42)); - } - - { // "return" closes at suspendedYield - let x = g(); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 666, done: true}, Return(x, 666)); - assertEquals({value: undefined, done: true}, Next(x, 666)); - assertThrowsEquals(() => Throw(x, 44), 44); - assertEquals({value: 42, done: true}, Return(x, 42)); - } - - { // "throw" closes at suspendedYield - let x = g(); - assertEquals({value: 42, done: false}, Next(x)); - assertThrowsEquals(() => Throw(x, 666), 666); - assertEquals({value: undefined, done: true}, Next(x, 666)); - assertThrowsEquals(() => Throw(x, 666), 666); - assertEquals({value: 42, done: true}, Return(x, 42)); - } -} - - -{ // yield in try-finally, finally clause yields and performs return - - let g = function*() { try {yield 42} finally {yield 43; return 13} }; - - { - let x = g(); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 43, done: false}, Return(x, 666)); - assertEquals({value: 13, done: true}, Next(x)); - assertEquals({value: 666, done: true}, Return(x, 666)); - } - - { - let x = g(); - assertEquals({value: 666, done: true}, Return(x, 666)); - assertEquals({value: undefined, done: true}, Next(x)); - assertEquals({value: 666, done: true}, Return(x, 666)); - } -} - - -{ // yield in try-finally, finally clause yields and doesn't perform return - - let g = function*() { try {yield 42} finally {yield 43; 13} }; - - { - let x = g(); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 43, done: false}, Return(x, 666)); - assertEquals({value: 666, done: true}, Next(x)); - assertEquals({value: 5, done: true}, Return(x, 5)); - } - - { - let x = g(); - assertEquals({value: 666, done: true}, Return(x, 666)); - assertEquals({value: undefined, done: true}, Next(x)); - assertEquals({value: 666, done: true}, Return(x, 666)); - } -} - - -{ // yield*, finally clause performs return - - let h = function*() { try {yield 42} finally {yield 43; return 13} }; - let g = function*() { yield 1; yield yield* h(); }; - - { - let x = g(); - assertEquals({value: 1, done: false}, Next(x)); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 43, done: false}, Next(x, 666)); - assertEquals({value: 13, done: false}, Next(x)); - assertEquals({value: undefined, done: true}, Next(x)); - } - - { - let x = g(); - assertEquals({value: 1, done: false}, Next(x)); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 43, done: false}, Return(x, 666)); - assertEquals({value: 13, done: false}, Next(x)); - assertEquals({value: undefined, done: true}, Next(x)); - } - - { - let x = g(); - assertEquals({value: 1, done: false}, Next(x)); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 43, done: false}, Throw(x, 666)); - assertEquals({value: 13, done: false}, Next(x)); - assertEquals({value: undefined, done: true}, Next(x)); - } -} - - -{ // yield*, finally clause does not perform return - - let h = function*() { try {yield 42} finally {yield 43; 13} }; - let g = function*() { yield 1; yield yield* h(); }; - - { - let x = g(); - assertEquals({value: 1, done: false}, Next(x)); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 43, done: false}, Next(x, 666)); - assertEquals({value: undefined, done: false}, Next(x)); - assertEquals({value: undefined, done: true}, Next(x)); - } - - { - let x = g(); - assertEquals({value: 1, done: false}, Next(x)); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 43, done: false}, Return(x, 44)); - assertEquals({value: 44, done: false}, Next(x)); - assertEquals({value: undefined, done: true}, Next(x)); - } - - { - let x = g(); - assertEquals({value: 1, done: false}, Next(x)); - assertEquals({value: 42, done: false}, Next(x)); - assertEquals({value: 43, done: false}, Throw(x, 666)); - assertThrowsEquals(() => Next(x), 666); - } -} - - -{ // yield*, .return argument is final result - - function* inner() { - yield 2; - } - - function* g() { - yield 1; - return yield* inner(); - } - - { - let x = g(); - assertEquals({value: 1, done: false}, Next(x)); - assertEquals({value: 2, done: false}, Next(x)); - assertEquals({value: 42, done: true}, Return(x, 42)); - } -} - - -// More or less random tests from here on. - - -{ - function* foo() { } - let g = foo(); - assertEquals({value: undefined, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo() { return new.target } - let g = foo(); - assertEquals({value: undefined, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo() { throw 666; return 42} - let g = foo(); - assertThrowsEquals(() => Next(g), 666); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo(a) { return a; } - let g = foo(42); - assertEquals({value: 42, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo(a) { a.iwashere = true; return a; } - let x = {}; - let g = foo(x); - assertEquals({value: {iwashere: true}, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - let a = 42; - function* foo() { return a; } - let g = foo(); - assertEquals({value: 42, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - let a = 40; - function* foo(b) { return a + b; } - let g = foo(2); - assertEquals({value: 42, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - let a = 40; - function* foo(b) { a--; b++; return a + b; } - let g = foo(2); - assertEquals({value: 42, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - let g; - function* foo() { Next(g) } - g = foo(); - assertThrows(() => Next(g), TypeError); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo() { yield 2; yield 3; yield 4 } - g = foo(); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); - assertEquals({value: 4, done: false}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - - -{ - function* foo() { yield 2; if (true) { yield 3 }; yield 4 } - g = foo(); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); - assertEquals({value: 4, done: false}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo() { yield 2; if (true) { yield 3; yield 4 } } - g = foo(); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); - assertEquals({value: 4, done: false}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo() { yield 2; if (false) { yield 3 }; yield 4 } - g = foo(); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 4, done: false}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo() { yield 2; while (true) { yield 3 }; yield 4 } - g = foo(); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); -} - -{ - function* foo() { yield 2; (yield 3) + 42; yield 4 } - g = foo(); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); - assertEquals({value: 4, done: false}, Next(g)); -} - -{ - function* foo() { yield 2; return (yield 3) + 42; yield 4 } - g = foo(); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); - assertEquals({value: 42, done: true}, Next(g, 0)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - let x = 42; - function* foo() { - yield x; - for (let x in {a: 1, b: 2}) { - let i = 2; - yield x; - yield i; - do { - yield i; - } while (i-- > 0); - } - yield x; - return 5; - } - g = foo(); - assertEquals({value: 42, done: false}, Next(g)); - assertEquals({value: 'a', done: false}, Next(g)); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 1, done: false}, Next(g)); - assertEquals({value: 0, done: false}, Next(g)); - assertEquals({value: 'b', done: false}, Next(g)); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 1, done: false}, Next(g)); - assertEquals({value: 0, done: false}, Next(g)); - assertEquals({value: 42, done: false}, Next(g)); - assertEquals({value: 5, done: true}, Next(g)); -} - -{ - let a = 3; - function* foo() { - let b = 4; - yield 1; - { let c = 5; yield 2; yield a; yield b; yield c; } - } - g = foo(); - assertEquals({value: 1, done: false}, Next(g)); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 3, done: false}, Next(g)); - assertEquals({value: 4, done: false}, Next(g)); - assertEquals({value: 5, done: false}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo() { - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - yield 42; - } - g = foo(); - for (let i = 0; i < 100; ++i) { - assertEquals({value: 42, done: false}, i%25 === 0 ? Next(g) : g.next()); - } - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - function* foo() { - for (let i = 0; i < 3; ++i) { - let j = 0 - yield i; - do { - yield (i + 10); - } while (++j < 2); - } - } - g = foo(); - assertEquals({value: 0, done: false}, Next(g)); - assertEquals({value: 10, done: false}, Next(g)); - assertEquals({value: 10, done: false}, Next(g)); - assertEquals({value: 1, done: false}, Next(g)); - assertEquals({value: 11, done: false}, Next(g)); - assertEquals({value: 11, done: false}, Next(g)); - assertEquals({value: 2, done: false}, Next(g)); - assertEquals({value: 12, done: false}, Next(g)); - assertEquals({value: 12, done: false}, Next(g)); - assertEquals({value: undefined, done: true}, Next(g)); -} - -{ - let foo = function*() { - while (true) { - if (true || false) yield 42; - continue; - } - } - g = foo(); - assertEquals({value: 42, done: false}, Next(g)); - assertEquals({value: 42, done: false}, Next(g)); - assertEquals({value: 42, done: false}, Next(g)); -} - -{ - let foo = function*() { - yield* (function*() { yield 42; }()); - assertUnreachable(); - } - g = foo(); - assertEquals({value: 42, done: false}, Next(g)); - assertEquals({value: 23, done: true}, Return(g, 23)); -} - -{ - let iterable = { - [Symbol.iterator]() { - return { next() { return {} } }; - } - }; - let foo = function*() { yield* iterable }; - g = foo(); - g.next(); - assertThrows(() => Throw(g), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/global-configurable.js b/implementation-contributed/v8/mjsunit/harmony/global-configurable.js deleted file mode 100644 index dd823f15312..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/global-configurable.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-global - -assertTrue(delete globalThis); -assertEquals(this.globalThis, undefined); diff --git a/implementation-contributed/v8/mjsunit/harmony/global-writable.js b/implementation-contributed/v8/mjsunit/harmony/global-writable.js deleted file mode 100644 index f0c2d754bb4..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/global-writable.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-global - -globalThis = '[[Writable]]'; -assertEquals(globalThis, '[[Writable]]'); diff --git a/implementation-contributed/v8/mjsunit/harmony/global.js b/implementation-contributed/v8/mjsunit/harmony/global.js deleted file mode 100644 index 3d43864c474..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/global.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-global - -assertEquals(globalThis, this); -assertEquals(this.globalThis, this); -assertEquals(globalThis.globalThis, this); -assertEquals(globalThis.globalThis.globalThis, this); -assertEquals(globalThis.globalThis.globalThis.globalThis, this); - -{ - const realm = Realm.create(); - assertEquals(Realm.global(realm), Realm.eval(realm, 'globalThis')); - assertNotEquals(Realm.global(realm), globalThis); -} - -{ - const descriptor = Object.getOwnPropertyDescriptor( - this, - 'globalThis' - ); - assertEquals(descriptor.value, this); - assertEquals(descriptor.writable, true); - assertEquals(descriptor.enumerable, false); - assertEquals(descriptor.configurable, true); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/harmony-string-pad-end.js b/implementation-contributed/v8/mjsunit/harmony/harmony-string-pad-end.js deleted file mode 100644 index 3c96031a8f7..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/harmony-string-pad-end.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestMeta() { - assertEquals(1, String.prototype.padEnd.length); - assertEquals("function", typeof String.prototype.padEnd); - assertEquals(Object.getPrototypeOf(Function), - Object.getPrototypeOf(String.prototype.padEnd)); - assertEquals("padEnd", String.prototype.padEnd.name); - - var desc = Object.getOwnPropertyDescriptor(String.prototype, "padEnd"); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertTrue(desc.writable); - assertEquals(undefined, desc.get); - assertEquals(undefined, desc.set); - - assertThrows(() => new Function(`${String.prototype.padEnd}`), SyntaxError); -})(); - - -(function TestRequireObjectCoercible() { - var padEnd = String.prototype.padEnd; - assertThrows(() => padEnd.call(null, 4, "test"), TypeError); - assertThrows(() => padEnd.call(undefined, 4, "test"), TypeError); - assertEquals("123 ", padEnd.call({ - __proto__: null, - valueOf() { return 123; } - }, 6, " ")); - - var proxy = new Proxy({}, { - get(t, name) { - if (name === Symbol.toPrimitive || name === "toString") return; - if (name === "valueOf") return () => 6.7; - assertUnreachable(); - } - }); - assertEquals("6.7 ", padEnd.call(proxy, 6, " ")); - - proxy = new Proxy({}, { - get(t, name) { - if (name === Symbol.toPrimitive || name === "valueOf") return; - if (name === "toString") return () => 6.7; - assertUnreachable(); - } - }); - assertEquals("6.7 ", padEnd.call(proxy, 6, " ")); -})(); - - -(function TestToLength() { - assertThrows(() => "123".padEnd(Symbol("16")), TypeError); - assertEquals("123", "123".padEnd(-1)); - assertEquals("123", "123".padEnd({ toString() { return -1; } })); - assertEquals("123", "123".padEnd(-0)); - assertEquals("123", "123".padEnd({ toString() { return -0; } })); - assertEquals("123", "123".padEnd(+0)); - assertEquals("123", "123".padEnd({ toString() { return +0; } })); - assertEquals("123", "123".padEnd(NaN)); - assertEquals("123", "123".padEnd({ toString() { return NaN; } })); -})(); - - -(function TestFillerToString() { - assertEquals(". ", ".".padEnd(10)); - assertEquals(". ", ".".padEnd(10, undefined)); - assertEquals(".nullnulln", ".".padEnd(10, null)); - assertEquals(".XXXXXXXXX", ".".padEnd(10, { toString() { return "X"; } })); - assertEquals( - ".111111111", - ".".padEnd(10, { toString: undefined, valueOf() { return 1; } })); -})(); - - -(function TestFillerEmptyString() { - assertEquals(".", ".".padEnd(10, "")); - assertEquals(".", ".".padEnd(10, { toString() { return ""; } })); - assertEquals( - ".", ".".padEnd(10, { toString: undefined, valueOf() { return ""; } })); -})(); - - -(function TestFillerRepetition() { - for (var i = 2000; i > 0; --i) { - var expected = "123" + "xoxo".repeat(i / 4).slice(0, i - 3); - var actual = "123".padEnd(i, "xoxo"); - assertEquals(expected, actual); - assertEquals(i > "123".length ? i : 3, actual.length); - } -})(); - - -(function TestTruncation() { - assertEquals("ab", "a".padEnd(2, "bc")); -})(); - - -(function TestMaxLength() { - assertThrows(() => "123".padEnd(Math.pow(2, 40)), RangeError); - assertThrows(() => "123".padEnd(1 << 30), RangeError); -})(); - - -(function TestNoArguments() { - assertEquals("abc", "abc".padEnd()); -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/harmony-string-pad-start.js b/implementation-contributed/v8/mjsunit/harmony/harmony-string-pad-start.js deleted file mode 100644 index d27ad5418f6..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/harmony-string-pad-start.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestMeta() { - assertEquals(1, String.prototype.padStart.length); - assertEquals("function", typeof String.prototype.padStart); - assertEquals(Object.getPrototypeOf(Function), - Object.getPrototypeOf(String.prototype.padStart)); - assertEquals("padStart", String.prototype.padStart.name); - - var desc = Object.getOwnPropertyDescriptor(String.prototype, "padStart"); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertTrue(desc.writable); - assertEquals(undefined, desc.get); - assertEquals(undefined, desc.set); - - assertThrows(() => new Function(`${String.prototype.padStart}`), SyntaxError); -})(); - - -(function TestRequireObjectCoercible() { - var padStart = String.prototype.padStart; - assertThrows(() => padStart.call(null, 4, "test"), TypeError); - assertThrows(() => padStart.call(undefined, 4, "test"), TypeError); - assertEquals(" 123", padStart.call({ - __proto__: null, - valueOf() { return 123; } - }, 6, " ")); - - var proxy = new Proxy({}, { - get(t, name) { - if (name === Symbol.toPrimitive || name === "toString") return; - if (name === "valueOf") return () => 6.7; - assertUnreachable(); - } - }); - assertEquals(" 6.7", padStart.call(proxy, 6, " ")); - - proxy = new Proxy({}, { - get(t, name) { - if (name === Symbol.toPrimitive || name === "valueOf") return; - if (name === "toString") return () => 6.7; - assertUnreachable(); - } - }); - assertEquals(" 6.7", padStart.call(proxy, 6, " ")); -})(); - - -(function TestToLength() { - assertThrows(() => "123".padStart(Symbol("16")), TypeError); - assertEquals("123", "123".padStart(-1)); - assertEquals("123", "123".padStart({ toString() { return -1; } })); - assertEquals("123", "123".padStart(-0)); - assertEquals("123", "123".padStart({ toString() { return -0; } })); - assertEquals("123", "123".padStart(+0)); - assertEquals("123", "123".padStart({ toString() { return +0; } })); - assertEquals("123", "123".padStart(NaN)); - assertEquals("123", "123".padStart({ toString() { return NaN; } })); -})(); - - -(function TestFillerToString() { - assertEquals(" .", ".".padStart(10)); - assertEquals(" .", ".".padStart(10, undefined)); - assertEquals("nullnulln.", ".".padStart(10, null)); - assertEquals("XXXXXXXXX.", ".".padStart(10, { toString() { return "X"; } })); - assertEquals( - "111111111.", - ".".padStart(10, { toString: undefined, valueOf() { return 1; } })); -})(); - - -(function TestFillerEmptyString() { - assertEquals(".", ".".padStart(10, "")); - assertEquals(".", ".".padStart(10, { toString() { return ""; } })); - assertEquals( - ".", ".".padStart(10, { toString: undefined, valueOf() { return ""; } })); -})(); - - -(function TestFillerRepetition() { - for (var i = 2000; i > 0; --i) { - var expected = "xoxo".repeat(i / 4).slice(0, i - 3) + "123"; - var actual = "123".padStart(i, "xoxo"); - assertEquals(expected, actual); - assertEquals(i > "123".length ? i : 3, actual.length); - } -})(); - - -(function TestTruncation() { - assertEquals("ba", "a".padStart(2, "bc")); -})(); - - -(function TestMaxLength() { - assertThrows(() => "123".padStart(Math.pow(2, 40)), RangeError); - assertThrows(() => "123".padStart(1 << 30), RangeError); -})(); - - -(function TestNoArguments() { - assertEquals("abc", "abc".padStart()); -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/hashbang-eval.js b/implementation-contributed/v8/mjsunit/harmony/hashbang-eval.js deleted file mode 100644 index c5040f7bee0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/hashbang-eval.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-hashbang - -// Hashbang syntax is not allowed in eval. -assertThrows("#!", SyntaxError); -assertThrows("#!\n", SyntaxError); -assertThrows("#!---IGNORED---", SyntaxError); -assertThrows("#!---IGNORED---\n", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/harmony/import-from-compilation-errored.js b/implementation-contributed/v8/mjsunit/harmony/import-from-compilation-errored.js deleted file mode 100644 index 49570b51def..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/import-from-compilation-errored.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var error1, error2; -import('modules-skip-12.js').catch(e => error1 = e); -import('modules-skip-12.js').catch(e => error2 = e); -%PerformMicrotaskCheckpoint(); - -assertEquals(error1, error2); -assertInstanceof(error1, SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/harmony/import-from-evaluation-errored.js b/implementation-contributed/v8/mjsunit/harmony/import-from-evaluation-errored.js deleted file mode 100644 index 87dbc0a6aae..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/import-from-evaluation-errored.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var error1, error2; -import('modules-skip-11.js').catch(e => error1 = e); -import('modules-skip-11.js').catch(e => error2 = e); -%PerformMicrotaskCheckpoint(); - -assertEquals(error1, error2); -assertEquals(typeof error1, "symbol"); diff --git a/implementation-contributed/v8/mjsunit/harmony/import-from-fetch-errored.js b/implementation-contributed/v8/mjsunit/harmony/import-from-fetch-errored.js deleted file mode 100644 index 6d6510fcdee..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/import-from-fetch-errored.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var error1, error2; -import('no-such-file').catch(e => error1 = e); -import('no-such-file').catch(e => error2 = e); -%PerformMicrotaskCheckpoint(); - -assertEquals(error1, error2); -assertEquals(typeof error1, "string"); diff --git a/implementation-contributed/v8/mjsunit/harmony/import-from-instantiation-errored.js b/implementation-contributed/v8/mjsunit/harmony/import-from-instantiation-errored.js deleted file mode 100644 index 2cdbaaea324..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/import-from-instantiation-errored.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var error1, error2; -import('modules-skip-10.js').catch(e => error1 = e); -import('modules-skip-10.js').catch(e => error2 = e); -%PerformMicrotaskCheckpoint(); - -assertEquals(error1, error2); -assertInstanceof(error1, SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/harmony/module-parsing-eval.js b/implementation-contributed/v8/mjsunit/harmony/module-parsing-eval.js deleted file mode 100644 index 6c080dbf446..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/module-parsing-eval.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that import/export declarations are rejected in eval or local scope. -assertThrows("export let x;", SyntaxError); -assertThrows("import x from 'http://url';", SyntaxError); - -assertThrows("{ export let x; }", SyntaxError); -assertThrows("{ import x from 'http://url'; }", SyntaxError); - -assertThrows("function f() { export let x; }", SyntaxError); -assertThrows("function f() { import x from 'http://url'; }", SyntaxError); - -assertThrows("function f() { { export let x; } }", SyntaxError); -assertThrows("function f() { { import x from 'http://url'; } }", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-1.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-1.js deleted file mode 100644 index f62d4d7b320..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-1.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var life; -import('modules-skip-1.js').then(namespace => life = namespace.life()); - -%PerformMicrotaskCheckpoint(); - -assertEquals(42, life); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-10.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-10.js deleted file mode 100644 index eda4aaf7f9f..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-10.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var life; -import('modules-skip-6.js').then(namespace => life = namespace.life); - -assertEquals(undefined, Object.life); - -%PerformMicrotaskCheckpoint(); - -assertEquals(42, Object.life); -assertEquals("42", life); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-11.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-11.js deleted file mode 100644 index ffba6a0722c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-11.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var ran = false; - -async function test() { - try { - let namespace = await import('modules-skip-7.js'); - let life = await namespace.getLife(); - assertEquals(42, life); - ran = true; - } catch (e) { - %AbortJS('failure: ' + e); - } -} - -test(); -%PerformMicrotaskCheckpoint(); -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-12.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-12.js deleted file mode 100644 index d898c984ad4..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-12.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -ran = false; -async function test() { - try { - let namespace = await import('modules-skip-empty.js'); - ran = true; - } catch(e) { - %AbortJS('failure: '+ e); - } -} - -test(); -%PerformMicrotaskCheckpoint(); -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-13.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-13.js deleted file mode 100644 index 52518350ba9..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-13.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import -// Resources: test/mjsunit/harmony/modules-skip-1.js - -ran = false; -async function test1() { - try { - let x = { toString() { return 'modules-skip-1.js' } }; - let namespace = await import(x); - let life = namespace.life(); - assertEquals(42, life); - ran = true; - } catch(e) { - %AbortJS('failure: '+ e); - } -} - -test1(); -%PerformMicrotaskCheckpoint(); -assertTrue(ran); - -ran = false; -async function test2() { - try { - let x = { get toString() { return () => 'modules-skip-1.js' } }; - let namespace = await import(x); - let life = namespace.life(); - assertEquals(42, life); - ran = true; - } catch(e) { - %AbortJS('failure: '+ e); - } -} - -test2(); -%PerformMicrotaskCheckpoint(); -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-14.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-14.js deleted file mode 100644 index 32b307eb3b7..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-14.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var ran = false; - -async function test() { - try { - let x = await import('modules-skip-1.js'); - // modules-skip-5.js statically imports modules-skip-1.js - let y = await import('modules-skip-5.js'); - assertSame(x, y.static_life); - - let z = await import('modules-skip-1.js'); - assertSame(x, z); - ran = true; - } catch(e) { - %AbortJS('failure: '+ e.message); - } -} - -test(); -%PerformMicrotaskCheckpoint(); -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-15.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-15.js deleted file mode 100644 index d041add3db2..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-15.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var ran = false; - -async function test1() { - try { - let x = await import('modules-skip-8.js'); - %AbortJS('failure: should be unreachable'); - } catch(e) { - assertEquals('Unexpected reserved word', e.message); - ran = true; - } -} - -test1(); -%PerformMicrotaskCheckpoint(); -assertTrue(ran); - -ran = false; - -async function test2() { - try { - let x = await import('modules-skip-9.js'); - %AbortJS('failure: should be unreachable'); - } catch(e) { - assertInstanceof(e, SyntaxError); - assertEquals( - "The requested module 'modules-skip-empty.js' does not provide an " + - "export named 'default'", - e.message); - ran = true; - } -} - -test2(); -%PerformMicrotaskCheckpoint(); -assertTrue(ran); - -ran = false; - -async function test3() { - try { - let x = await import('nonexistent-file.js'); - %AbortJS('failure: should be unreachable'); - } catch(e) { - assertTrue(e.startsWith('Error reading')); - ran = true; - } -} - -test3(); -%PerformMicrotaskCheckpoint(); -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-16.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-16.js deleted file mode 100644 index 18ad445a842..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-16.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var ran = false; -var x; - -var body = "import('modules-skip-1.js').then(ns => { x = ns.life();" + - " ran = true;} ).catch(err => %AbortJS(err))" -var func = new Function(body); -func(); - -%PerformMicrotaskCheckpoint(); -assertEquals(42, x); -assertTrue(ran); - -var ran = false; -var body = "import('modules-skip-1.js').then(ns => { x = ns.life();" + - " ran = true;} ).catch(err => %AbortJS(err))" -eval("var func = new Function(body); func();"); - -%PerformMicrotaskCheckpoint(); -assertEquals(42, x); -assertTrue(ran); - -var ran = false; -var body = "eval(import('modules-skip-1.js').then(ns => { x = ns.life();" + - " ran = true;} ).catch(err => %AbortJS(err)))" -var func = new Function(body); -func(); - -%PerformMicrotaskCheckpoint(); -assertEquals(42, x); -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-17.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-17.js deleted file mode 100644 index 606ebcd385a..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-17.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-namespace-exports - -var ns; -import('modules-skip-13.js').then(x => ns = x); -%PerformMicrotaskCheckpoint(); -assertEquals(42, ns.default); -assertEquals(ns, ns.self); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-2.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-2.js deleted file mode 100644 index a3fe0bc601c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-2.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var life; -var msg; -import('modules-skip-1.js').then(namespace => life = namespace.life()); -import('modules-skip-2.js').catch(err => msg = err.message); - -assertEquals(undefined, life); -assertEquals(undefined, msg); - -%PerformMicrotaskCheckpoint(); - -assertEquals(42, life); -assertEquals('42 is not the answer', msg); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-3.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-3.js deleted file mode 100644 index d8cbe2a2280..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-3.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var ran = false; -async function foo () { - try { - let life = await import('modules-skip-2.js'); - assertUnreachable(); - } catch(e) { - assertEquals('42 is not the answer', e.message); - ran = true; - } -} - -foo(); - -%PerformMicrotaskCheckpoint(); - -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-4.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-4.js deleted file mode 100644 index 38a80b30e8f..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-4.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-dynamic-import - -try { - import(x); - let x; - assertUnreachable(); -} catch(e) { - assertEquals("ReferenceError", e.name); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-5.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-5.js deleted file mode 100644 index c868a0c63f0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-5.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var life; -let x = 'modules-skip-1.js'; -import(x).then(namespace => life = namespace.life()); -x = 'modules-skip-2.js'; - -%PerformMicrotaskCheckpoint(); -assertEquals(42, life); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-6.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-6.js deleted file mode 100644 index 02fdf1b5fa3..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-6.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var ran = false; - -async function test() { - try { - let [namespace1, namespace2] = await Promise.all([ - import('modules-skip-1.js'), - import('modules-skip-3.js') - ]); - - let life = namespace1.life(); - let stringlife = namespace2.stringlife; - assertEquals(42, life); - assertEquals("42", stringlife); - ran = true; - } catch(e) { - %AbortJS("failure: " + e); - } -} - -test(); - -%PerformMicrotaskCheckpoint(); -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-7.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-7.js deleted file mode 100644 index 8df8ddcdb23..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-7.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var ran = false; - -async function test() { - try { - let namespace = await import('modules-skip-4.js'); - assertEquals(42, namespace.life()); - assertEquals("42", namespace.stringlife); - ran = true; - } catch(e) { - %AbortJS('failure: '+ e); - } -} - -test(); - -%PerformMicrotaskCheckpoint(); - -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-8.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-8.js deleted file mode 100644 index ac21a8c9e92..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-8.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var ran = false; - -var x = { - get toString() { return undefined; } -}; -import(x); - -var x = { - toString() { - throw new Error('42 is the answer'); - } -}; -import(x); - -var x = { - get toString() { - throw new Error('42 is the answer'); - } -}; -import(x); - -async function test1() { - try { - let x = { - toString() { - throw new Error('42 is the answer'); - } - }; - - let namespace = await import(x); - %AbortJS('failure: this should throw'); - } catch(e) { - assertEquals(e.message, '42 is the answer'); - ran = true; - } -} - -test1(); - -%PerformMicrotaskCheckpoint(); - -assertTrue(ran); - -ran = false; -async function test2() { - try { - let x = { - get toString() { - throw new Error('42 is the answer'); - } - }; - - let namespace = await import(x); - %AbortJS('failure: this should throw'); - } catch(e) { - assertEquals(e.message, '42 is the answer'); - ran = true; - } -} - -test2(); - -%PerformMicrotaskCheckpoint(); - -assertTrue(ran); - -ran = false; -async function test3() { - try { - let x = { - get toString() { return undefined; } - }; - let namespace = await import(x); - %AbortJS('failure: this should throw'); - } catch(e) { - assertEquals(e.message, 'Cannot convert object to primitive value'); - ran = true; - } -} - -test3(); - -%PerformMicrotaskCheckpoint(); - -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-9.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-9.js deleted file mode 100644 index 664416f0eb8..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-9.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var ran = false; - -async function test() { - try { - let namespace = await import('modules-skip-5.js').then(x => x); - assertSame(namespace.static_life, namespace.dynamic_life); - assertSame(namespace.relative_static_life, namespace.dynamic_life); - ran = true; - } catch(e) { - %AbortJS('failure: ' + e); - } -} - -test(); -%PerformMicrotaskCheckpoint(); -assertTrue(ran); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-large.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-large.js deleted file mode 100644 index 250a41bd827..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-large.js +++ /dev/null @@ -1,1120 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -// Flags: --allow-natives-syntax - -import * as m1 from "modules-skip-large1.js"; -import * as m2 from "modules-skip-large2.js"; - -assertFalse(%HasFastProperties(m1)); -assertFalse(%HasFastProperties(m2)); -assertFalse(%HaveSameMap(m1, m2)); - -function verify(m) { - assertEquals(m.a0, 0); - assertEquals(m.a1, 1); - assertEquals(m.a2, 2); - assertEquals(m.a3, 3); - assertEquals(m.a4, 4); - assertEquals(m.a5, 5); - assertEquals(m.a6, 6); - assertEquals(m.a7, 7); - assertEquals(m.a8, 8); - assertEquals(m.a9, 9); - assertEquals(m.a10, 10); - assertEquals(m.a11, 11); - assertEquals(m.a12, 12); - assertEquals(m.a13, 13); - assertEquals(m.a14, 14); - assertEquals(m.a15, 15); - assertEquals(m.a16, 16); - assertEquals(m.a17, 17); - assertEquals(m.a18, 18); - assertEquals(m.a19, 19); - assertEquals(m.a20, 20); - assertEquals(m.a21, 21); - assertEquals(m.a22, 22); - assertEquals(m.a23, 23); - assertEquals(m.a24, 24); - assertEquals(m.a25, 25); - assertEquals(m.a26, 26); - assertEquals(m.a27, 27); - assertEquals(m.a28, 28); - assertEquals(m.a29, 29); - assertEquals(m.a30, 30); - assertEquals(m.a31, 31); - assertEquals(m.a32, 32); - assertEquals(m.a33, 33); - assertEquals(m.a34, 34); - assertEquals(m.a35, 35); - assertEquals(m.a36, 36); - assertEquals(m.a37, 37); - assertEquals(m.a38, 38); - assertEquals(m.a39, 39); - assertEquals(m.a40, 40); - assertEquals(m.a41, 41); - assertEquals(m.a42, 42); - assertEquals(m.a43, 43); - assertEquals(m.a44, 44); - assertEquals(m.a45, 45); - assertEquals(m.a46, 46); - assertEquals(m.a47, 47); - assertEquals(m.a48, 48); - assertEquals(m.a49, 49); - assertEquals(m.a50, 50); - assertEquals(m.a51, 51); - assertEquals(m.a52, 52); - assertEquals(m.a53, 53); - assertEquals(m.a54, 54); - assertEquals(m.a55, 55); - assertEquals(m.a56, 56); - assertEquals(m.a57, 57); - assertEquals(m.a58, 58); - assertEquals(m.a59, 59); - assertEquals(m.a60, 60); - assertEquals(m.a61, 61); - assertEquals(m.a62, 62); - assertEquals(m.a63, 63); - assertEquals(m.a64, 64); - assertEquals(m.a65, 65); - assertEquals(m.a66, 66); - assertEquals(m.a67, 67); - assertEquals(m.a68, 68); - assertEquals(m.a69, 69); - assertEquals(m.a70, 70); - assertEquals(m.a71, 71); - assertEquals(m.a72, 72); - assertEquals(m.a73, 73); - assertEquals(m.a74, 74); - assertEquals(m.a75, 75); - assertEquals(m.a76, 76); - assertEquals(m.a77, 77); - assertEquals(m.a78, 78); - assertEquals(m.a79, 79); - assertEquals(m.a80, 80); - assertEquals(m.a81, 81); - assertEquals(m.a82, 82); - assertEquals(m.a83, 83); - assertEquals(m.a84, 84); - assertEquals(m.a85, 85); - assertEquals(m.a86, 86); - assertEquals(m.a87, 87); - assertEquals(m.a88, 88); - assertEquals(m.a89, 89); - assertEquals(m.a90, 90); - assertEquals(m.a91, 91); - assertEquals(m.a92, 92); - assertEquals(m.a93, 93); - assertEquals(m.a94, 94); - assertEquals(m.a95, 95); - assertEquals(m.a96, 96); - assertEquals(m.a97, 97); - assertEquals(m.a98, 98); - assertEquals(m.a99, 99); - assertEquals(m.a100, 100); - assertEquals(m.a101, 101); - assertEquals(m.a102, 102); - assertEquals(m.a103, 103); - assertEquals(m.a104, 104); - assertEquals(m.a105, 105); - assertEquals(m.a106, 106); - assertEquals(m.a107, 107); - assertEquals(m.a108, 108); - assertEquals(m.a109, 109); - assertEquals(m.a110, 110); - assertEquals(m.a111, 111); - assertEquals(m.a112, 112); - assertEquals(m.a113, 113); - assertEquals(m.a114, 114); - assertEquals(m.a115, 115); - assertEquals(m.a116, 116); - assertEquals(m.a117, 117); - assertEquals(m.a118, 118); - assertEquals(m.a119, 119); - assertEquals(m.a120, 120); - assertEquals(m.a121, 121); - assertEquals(m.a122, 122); - assertEquals(m.a123, 123); - assertEquals(m.a124, 124); - assertEquals(m.a125, 125); - assertEquals(m.a126, 126); - assertEquals(m.a127, 127); - assertEquals(m.a128, 128); - assertEquals(m.a129, 129); - assertEquals(m.a130, 130); - assertEquals(m.a131, 131); - assertEquals(m.a132, 132); - assertEquals(m.a133, 133); - assertEquals(m.a134, 134); - assertEquals(m.a135, 135); - assertEquals(m.a136, 136); - assertEquals(m.a137, 137); - assertEquals(m.a138, 138); - assertEquals(m.a139, 139); - assertEquals(m.a140, 140); - assertEquals(m.a141, 141); - assertEquals(m.a142, 142); - assertEquals(m.a143, 143); - assertEquals(m.a144, 144); - assertEquals(m.a145, 145); - assertEquals(m.a146, 146); - assertEquals(m.a147, 147); - assertEquals(m.a148, 148); - assertEquals(m.a149, 149); - assertEquals(m.a150, 150); - assertEquals(m.a151, 151); - assertEquals(m.a152, 152); - assertEquals(m.a153, 153); - assertEquals(m.a154, 154); - assertEquals(m.a155, 155); - assertEquals(m.a156, 156); - assertEquals(m.a157, 157); - assertEquals(m.a158, 158); - assertEquals(m.a159, 159); - assertEquals(m.a160, 160); - assertEquals(m.a161, 161); - assertEquals(m.a162, 162); - assertEquals(m.a163, 163); - assertEquals(m.a164, 164); - assertEquals(m.a165, 165); - assertEquals(m.a166, 166); - assertEquals(m.a167, 167); - assertEquals(m.a168, 168); - assertEquals(m.a169, 169); - assertEquals(m.a170, 170); - assertEquals(m.a171, 171); - assertEquals(m.a172, 172); - assertEquals(m.a173, 173); - assertEquals(m.a174, 174); - assertEquals(m.a175, 175); - assertEquals(m.a176, 176); - assertEquals(m.a177, 177); - assertEquals(m.a178, 178); - assertEquals(m.a179, 179); - assertEquals(m.a180, 180); - assertEquals(m.a181, 181); - assertEquals(m.a182, 182); - assertEquals(m.a183, 183); - assertEquals(m.a184, 184); - assertEquals(m.a185, 185); - assertEquals(m.a186, 186); - assertEquals(m.a187, 187); - assertEquals(m.a188, 188); - assertEquals(m.a189, 189); - assertEquals(m.a190, 190); - assertEquals(m.a191, 191); - assertEquals(m.a192, 192); - assertEquals(m.a193, 193); - assertEquals(m.a194, 194); - assertEquals(m.a195, 195); - assertEquals(m.a196, 196); - assertEquals(m.a197, 197); - assertEquals(m.a198, 198); - assertEquals(m.a199, 199); - assertEquals(m.a200, 200); - assertEquals(m.a201, 201); - assertEquals(m.a202, 202); - assertEquals(m.a203, 203); - assertEquals(m.a204, 204); - assertEquals(m.a205, 205); - assertEquals(m.a206, 206); - assertEquals(m.a207, 207); - assertEquals(m.a208, 208); - assertEquals(m.a209, 209); - assertEquals(m.a210, 210); - assertEquals(m.a211, 211); - assertEquals(m.a212, 212); - assertEquals(m.a213, 213); - assertEquals(m.a214, 214); - assertEquals(m.a215, 215); - assertEquals(m.a216, 216); - assertEquals(m.a217, 217); - assertEquals(m.a218, 218); - assertEquals(m.a219, 219); - assertEquals(m.a220, 220); - assertEquals(m.a221, 221); - assertEquals(m.a222, 222); - assertEquals(m.a223, 223); - assertEquals(m.a224, 224); - assertEquals(m.a225, 225); - assertEquals(m.a226, 226); - assertEquals(m.a227, 227); - assertEquals(m.a228, 228); - assertEquals(m.a229, 229); - assertEquals(m.a230, 230); - assertEquals(m.a231, 231); - assertEquals(m.a232, 232); - assertEquals(m.a233, 233); - assertEquals(m.a234, 234); - assertEquals(m.a235, 235); - assertEquals(m.a236, 236); - assertEquals(m.a237, 237); - assertEquals(m.a238, 238); - assertEquals(m.a239, 239); - assertEquals(m.a240, 240); - assertEquals(m.a241, 241); - assertEquals(m.a242, 242); - assertEquals(m.a243, 243); - assertEquals(m.a244, 244); - assertEquals(m.a245, 245); - assertEquals(m.a246, 246); - assertEquals(m.a247, 247); - assertEquals(m.a248, 248); - assertEquals(m.a249, 249); - assertEquals(m.a250, 250); - assertEquals(m.a251, 251); - assertEquals(m.a252, 252); - assertEquals(m.a253, 253); - assertEquals(m.a254, 254); - assertEquals(m.a255, 255); - assertEquals(m.a256, 256); - assertEquals(m.a257, 257); - assertEquals(m.a258, 258); - assertEquals(m.a259, 259); - assertEquals(m.a260, 260); - assertEquals(m.a261, 261); - assertEquals(m.a262, 262); - assertEquals(m.a263, 263); - assertEquals(m.a264, 264); - assertEquals(m.a265, 265); - assertEquals(m.a266, 266); - assertEquals(m.a267, 267); - assertEquals(m.a268, 268); - assertEquals(m.a269, 269); - assertEquals(m.a270, 270); - assertEquals(m.a271, 271); - assertEquals(m.a272, 272); - assertEquals(m.a273, 273); - assertEquals(m.a274, 274); - assertEquals(m.a275, 275); - assertEquals(m.a276, 276); - assertEquals(m.a277, 277); - assertEquals(m.a278, 278); - assertEquals(m.a279, 279); - assertEquals(m.a280, 280); - assertEquals(m.a281, 281); - assertEquals(m.a282, 282); - assertEquals(m.a283, 283); - assertEquals(m.a284, 284); - assertEquals(m.a285, 285); - assertEquals(m.a286, 286); - assertEquals(m.a287, 287); - assertEquals(m.a288, 288); - assertEquals(m.a289, 289); - assertEquals(m.a290, 290); - assertEquals(m.a291, 291); - assertEquals(m.a292, 292); - assertEquals(m.a293, 293); - assertEquals(m.a294, 294); - assertEquals(m.a295, 295); - assertEquals(m.a296, 296); - assertEquals(m.a297, 297); - assertEquals(m.a298, 298); - assertEquals(m.a299, 299); - assertEquals(m.a300, 300); - assertEquals(m.a301, 301); - assertEquals(m.a302, 302); - assertEquals(m.a303, 303); - assertEquals(m.a304, 304); - assertEquals(m.a305, 305); - assertEquals(m.a306, 306); - assertEquals(m.a307, 307); - assertEquals(m.a308, 308); - assertEquals(m.a309, 309); - assertEquals(m.a310, 310); - assertEquals(m.a311, 311); - assertEquals(m.a312, 312); - assertEquals(m.a313, 313); - assertEquals(m.a314, 314); - assertEquals(m.a315, 315); - assertEquals(m.a316, 316); - assertEquals(m.a317, 317); - assertEquals(m.a318, 318); - assertEquals(m.a319, 319); - assertEquals(m.a320, 320); - assertEquals(m.a321, 321); - assertEquals(m.a322, 322); - assertEquals(m.a323, 323); - assertEquals(m.a324, 324); - assertEquals(m.a325, 325); - assertEquals(m.a326, 326); - assertEquals(m.a327, 327); - assertEquals(m.a328, 328); - assertEquals(m.a329, 329); - assertEquals(m.a330, 330); - assertEquals(m.a331, 331); - assertEquals(m.a332, 332); - assertEquals(m.a333, 333); - assertEquals(m.a334, 334); - assertEquals(m.a335, 335); - assertEquals(m.a336, 336); - assertEquals(m.a337, 337); - assertEquals(m.a338, 338); - assertEquals(m.a339, 339); - assertEquals(m.a340, 340); - assertEquals(m.a341, 341); - assertEquals(m.a342, 342); - assertEquals(m.a343, 343); - assertEquals(m.a344, 344); - assertEquals(m.a345, 345); - assertEquals(m.a346, 346); - assertEquals(m.a347, 347); - assertEquals(m.a348, 348); - assertEquals(m.a349, 349); - assertEquals(m.a350, 350); - assertEquals(m.a351, 351); - assertEquals(m.a352, 352); - assertEquals(m.a353, 353); - assertEquals(m.a354, 354); - assertEquals(m.a355, 355); - assertEquals(m.a356, 356); - assertEquals(m.a357, 357); - assertEquals(m.a358, 358); - assertEquals(m.a359, 359); - assertEquals(m.a360, 360); - assertEquals(m.a361, 361); - assertEquals(m.a362, 362); - assertEquals(m.a363, 363); - assertEquals(m.a364, 364); - assertEquals(m.a365, 365); - assertEquals(m.a366, 366); - assertEquals(m.a367, 367); - assertEquals(m.a368, 368); - assertEquals(m.a369, 369); - assertEquals(m.a370, 370); - assertEquals(m.a371, 371); - assertEquals(m.a372, 372); - assertEquals(m.a373, 373); - assertEquals(m.a374, 374); - assertEquals(m.a375, 375); - assertEquals(m.a376, 376); - assertEquals(m.a377, 377); - assertEquals(m.a378, 378); - assertEquals(m.a379, 379); - assertEquals(m.a380, 380); - assertEquals(m.a381, 381); - assertEquals(m.a382, 382); - assertEquals(m.a383, 383); - assertEquals(m.a384, 384); - assertEquals(m.a385, 385); - assertEquals(m.a386, 386); - assertEquals(m.a387, 387); - assertEquals(m.a388, 388); - assertEquals(m.a389, 389); - assertEquals(m.a390, 390); - assertEquals(m.a391, 391); - assertEquals(m.a392, 392); - assertEquals(m.a393, 393); - assertEquals(m.a394, 394); - assertEquals(m.a395, 395); - assertEquals(m.a396, 396); - assertEquals(m.a397, 397); - assertEquals(m.a398, 398); - assertEquals(m.a399, 399); - assertEquals(m.a400, 400); - assertEquals(m.a401, 401); - assertEquals(m.a402, 402); - assertEquals(m.a403, 403); - assertEquals(m.a404, 404); - assertEquals(m.a405, 405); - assertEquals(m.a406, 406); - assertEquals(m.a407, 407); - assertEquals(m.a408, 408); - assertEquals(m.a409, 409); - assertEquals(m.a410, 410); - assertEquals(m.a411, 411); - assertEquals(m.a412, 412); - assertEquals(m.a413, 413); - assertEquals(m.a414, 414); - assertEquals(m.a415, 415); - assertEquals(m.a416, 416); - assertEquals(m.a417, 417); - assertEquals(m.a418, 418); - assertEquals(m.a419, 419); - assertEquals(m.a420, 420); - assertEquals(m.a421, 421); - assertEquals(m.a422, 422); - assertEquals(m.a423, 423); - assertEquals(m.a424, 424); - assertEquals(m.a425, 425); - assertEquals(m.a426, 426); - assertEquals(m.a427, 427); - assertEquals(m.a428, 428); - assertEquals(m.a429, 429); - assertEquals(m.a430, 430); - assertEquals(m.a431, 431); - assertEquals(m.a432, 432); - assertEquals(m.a433, 433); - assertEquals(m.a434, 434); - assertEquals(m.a435, 435); - assertEquals(m.a436, 436); - assertEquals(m.a437, 437); - assertEquals(m.a438, 438); - assertEquals(m.a439, 439); - assertEquals(m.a440, 440); - assertEquals(m.a441, 441); - assertEquals(m.a442, 442); - assertEquals(m.a443, 443); - assertEquals(m.a444, 444); - assertEquals(m.a445, 445); - assertEquals(m.a446, 446); - assertEquals(m.a447, 447); - assertEquals(m.a448, 448); - assertEquals(m.a449, 449); - assertEquals(m.a450, 450); - assertEquals(m.a451, 451); - assertEquals(m.a452, 452); - assertEquals(m.a453, 453); - assertEquals(m.a454, 454); - assertEquals(m.a455, 455); - assertEquals(m.a456, 456); - assertEquals(m.a457, 457); - assertEquals(m.a458, 458); - assertEquals(m.a459, 459); - assertEquals(m.a460, 460); - assertEquals(m.a461, 461); - assertEquals(m.a462, 462); - assertEquals(m.a463, 463); - assertEquals(m.a464, 464); - assertEquals(m.a465, 465); - assertEquals(m.a466, 466); - assertEquals(m.a467, 467); - assertEquals(m.a468, 468); - assertEquals(m.a469, 469); - assertEquals(m.a470, 470); - assertEquals(m.a471, 471); - assertEquals(m.a472, 472); - assertEquals(m.a473, 473); - assertEquals(m.a474, 474); - assertEquals(m.a475, 475); - assertEquals(m.a476, 476); - assertEquals(m.a477, 477); - assertEquals(m.a478, 478); - assertEquals(m.a479, 479); - assertEquals(m.a480, 480); - assertEquals(m.a481, 481); - assertEquals(m.a482, 482); - assertEquals(m.a483, 483); - assertEquals(m.a484, 484); - assertEquals(m.a485, 485); - assertEquals(m.a486, 486); - assertEquals(m.a487, 487); - assertEquals(m.a488, 488); - assertEquals(m.a489, 489); - assertEquals(m.a490, 490); - assertEquals(m.a491, 491); - assertEquals(m.a492, 492); - assertEquals(m.a493, 493); - assertEquals(m.a494, 494); - assertEquals(m.a495, 495); - assertEquals(m.a496, 496); - assertEquals(m.a497, 497); - assertEquals(m.a498, 498); - assertEquals(m.a499, 499); - assertEquals(m.a500, 500); - assertEquals(m.a501, 501); - assertEquals(m.a502, 502); - assertEquals(m.a503, 503); - assertEquals(m.a504, 504); - assertEquals(m.a505, 505); - assertEquals(m.a506, 506); - assertEquals(m.a507, 507); - assertEquals(m.a508, 508); - assertEquals(m.a509, 509); - assertEquals(m.a510, 510); - assertEquals(m.a511, 511); - assertEquals(m.a512, 512); - assertEquals(m.a513, 513); - assertEquals(m.a514, 514); - assertEquals(m.a515, 515); - assertEquals(m.a516, 516); - assertEquals(m.a517, 517); - assertEquals(m.a518, 518); - assertEquals(m.a519, 519); - assertEquals(m.a520, 520); - assertEquals(m.a521, 521); - assertEquals(m.a522, 522); - assertEquals(m.a523, 523); - assertEquals(m.a524, 524); - assertEquals(m.a525, 525); - assertEquals(m.a526, 526); - assertEquals(m.a527, 527); - assertEquals(m.a528, 528); - assertEquals(m.a529, 529); - assertEquals(m.a530, 530); - assertEquals(m.a531, 531); - assertEquals(m.a532, 532); - assertEquals(m.a533, 533); - assertEquals(m.a534, 534); - assertEquals(m.a535, 535); - assertEquals(m.a536, 536); - assertEquals(m.a537, 537); - assertEquals(m.a538, 538); - assertEquals(m.a539, 539); - assertEquals(m.a540, 540); - assertEquals(m.a541, 541); - assertEquals(m.a542, 542); - assertEquals(m.a543, 543); - assertEquals(m.a544, 544); - assertEquals(m.a545, 545); - assertEquals(m.a546, 546); - assertEquals(m.a547, 547); - assertEquals(m.a548, 548); - assertEquals(m.a549, 549); - assertEquals(m.a550, 550); - assertEquals(m.a551, 551); - assertEquals(m.a552, 552); - assertEquals(m.a553, 553); - assertEquals(m.a554, 554); - assertEquals(m.a555, 555); - assertEquals(m.a556, 556); - assertEquals(m.a557, 557); - assertEquals(m.a558, 558); - assertEquals(m.a559, 559); - assertEquals(m.a560, 560); - assertEquals(m.a561, 561); - assertEquals(m.a562, 562); - assertEquals(m.a563, 563); - assertEquals(m.a564, 564); - assertEquals(m.a565, 565); - assertEquals(m.a566, 566); - assertEquals(m.a567, 567); - assertEquals(m.a568, 568); - assertEquals(m.a569, 569); - assertEquals(m.a570, 570); - assertEquals(m.a571, 571); - assertEquals(m.a572, 572); - assertEquals(m.a573, 573); - assertEquals(m.a574, 574); - assertEquals(m.a575, 575); - assertEquals(m.a576, 576); - assertEquals(m.a577, 577); - assertEquals(m.a578, 578); - assertEquals(m.a579, 579); - assertEquals(m.a580, 580); - assertEquals(m.a581, 581); - assertEquals(m.a582, 582); - assertEquals(m.a583, 583); - assertEquals(m.a584, 584); - assertEquals(m.a585, 585); - assertEquals(m.a586, 586); - assertEquals(m.a587, 587); - assertEquals(m.a588, 588); - assertEquals(m.a589, 589); - assertEquals(m.a590, 590); - assertEquals(m.a591, 591); - assertEquals(m.a592, 592); - assertEquals(m.a593, 593); - assertEquals(m.a594, 594); - assertEquals(m.a595, 595); - assertEquals(m.a596, 596); - assertEquals(m.a597, 597); - assertEquals(m.a598, 598); - assertEquals(m.a599, 599); - assertEquals(m.a600, 600); - assertEquals(m.a601, 601); - assertEquals(m.a602, 602); - assertEquals(m.a603, 603); - assertEquals(m.a604, 604); - assertEquals(m.a605, 605); - assertEquals(m.a606, 606); - assertEquals(m.a607, 607); - assertEquals(m.a608, 608); - assertEquals(m.a609, 609); - assertEquals(m.a610, 610); - assertEquals(m.a611, 611); - assertEquals(m.a612, 612); - assertEquals(m.a613, 613); - assertEquals(m.a614, 614); - assertEquals(m.a615, 615); - assertEquals(m.a616, 616); - assertEquals(m.a617, 617); - assertEquals(m.a618, 618); - assertEquals(m.a619, 619); - assertEquals(m.a620, 620); - assertEquals(m.a621, 621); - assertEquals(m.a622, 622); - assertEquals(m.a623, 623); - assertEquals(m.a624, 624); - assertEquals(m.a625, 625); - assertEquals(m.a626, 626); - assertEquals(m.a627, 627); - assertEquals(m.a628, 628); - assertEquals(m.a629, 629); - assertEquals(m.a630, 630); - assertEquals(m.a631, 631); - assertEquals(m.a632, 632); - assertEquals(m.a633, 633); - assertEquals(m.a634, 634); - assertEquals(m.a635, 635); - assertEquals(m.a636, 636); - assertEquals(m.a637, 637); - assertEquals(m.a638, 638); - assertEquals(m.a639, 639); - assertEquals(m.a640, 640); - assertEquals(m.a641, 641); - assertEquals(m.a642, 642); - assertEquals(m.a643, 643); - assertEquals(m.a644, 644); - assertEquals(m.a645, 645); - assertEquals(m.a646, 646); - assertEquals(m.a647, 647); - assertEquals(m.a648, 648); - assertEquals(m.a649, 649); - assertEquals(m.a650, 650); - assertEquals(m.a651, 651); - assertEquals(m.a652, 652); - assertEquals(m.a653, 653); - assertEquals(m.a654, 654); - assertEquals(m.a655, 655); - assertEquals(m.a656, 656); - assertEquals(m.a657, 657); - assertEquals(m.a658, 658); - assertEquals(m.a659, 659); - assertEquals(m.a660, 660); - assertEquals(m.a661, 661); - assertEquals(m.a662, 662); - assertEquals(m.a663, 663); - assertEquals(m.a664, 664); - assertEquals(m.a665, 665); - assertEquals(m.a666, 666); - assertEquals(m.a667, 667); - assertEquals(m.a668, 668); - assertEquals(m.a669, 669); - assertEquals(m.a670, 670); - assertEquals(m.a671, 671); - assertEquals(m.a672, 672); - assertEquals(m.a673, 673); - assertEquals(m.a674, 674); - assertEquals(m.a675, 675); - assertEquals(m.a676, 676); - assertEquals(m.a677, 677); - assertEquals(m.a678, 678); - assertEquals(m.a679, 679); - assertEquals(m.a680, 680); - assertEquals(m.a681, 681); - assertEquals(m.a682, 682); - assertEquals(m.a683, 683); - assertEquals(m.a684, 684); - assertEquals(m.a685, 685); - assertEquals(m.a686, 686); - assertEquals(m.a687, 687); - assertEquals(m.a688, 688); - assertEquals(m.a689, 689); - assertEquals(m.a690, 690); - assertEquals(m.a691, 691); - assertEquals(m.a692, 692); - assertEquals(m.a693, 693); - assertEquals(m.a694, 694); - assertEquals(m.a695, 695); - assertEquals(m.a696, 696); - assertEquals(m.a697, 697); - assertEquals(m.a698, 698); - assertEquals(m.a699, 699); - assertEquals(m.a700, 700); - assertEquals(m.a701, 701); - assertEquals(m.a702, 702); - assertEquals(m.a703, 703); - assertEquals(m.a704, 704); - assertEquals(m.a705, 705); - assertEquals(m.a706, 706); - assertEquals(m.a707, 707); - assertEquals(m.a708, 708); - assertEquals(m.a709, 709); - assertEquals(m.a710, 710); - assertEquals(m.a711, 711); - assertEquals(m.a712, 712); - assertEquals(m.a713, 713); - assertEquals(m.a714, 714); - assertEquals(m.a715, 715); - assertEquals(m.a716, 716); - assertEquals(m.a717, 717); - assertEquals(m.a718, 718); - assertEquals(m.a719, 719); - assertEquals(m.a720, 720); - assertEquals(m.a721, 721); - assertEquals(m.a722, 722); - assertEquals(m.a723, 723); - assertEquals(m.a724, 724); - assertEquals(m.a725, 725); - assertEquals(m.a726, 726); - assertEquals(m.a727, 727); - assertEquals(m.a728, 728); - assertEquals(m.a729, 729); - assertEquals(m.a730, 730); - assertEquals(m.a731, 731); - assertEquals(m.a732, 732); - assertEquals(m.a733, 733); - assertEquals(m.a734, 734); - assertEquals(m.a735, 735); - assertEquals(m.a736, 736); - assertEquals(m.a737, 737); - assertEquals(m.a738, 738); - assertEquals(m.a739, 739); - assertEquals(m.a740, 740); - assertEquals(m.a741, 741); - assertEquals(m.a742, 742); - assertEquals(m.a743, 743); - assertEquals(m.a744, 744); - assertEquals(m.a745, 745); - assertEquals(m.a746, 746); - assertEquals(m.a747, 747); - assertEquals(m.a748, 748); - assertEquals(m.a749, 749); - assertEquals(m.a750, 750); - assertEquals(m.a751, 751); - assertEquals(m.a752, 752); - assertEquals(m.a753, 753); - assertEquals(m.a754, 754); - assertEquals(m.a755, 755); - assertEquals(m.a756, 756); - assertEquals(m.a757, 757); - assertEquals(m.a758, 758); - assertEquals(m.a759, 759); - assertEquals(m.a760, 760); - assertEquals(m.a761, 761); - assertEquals(m.a762, 762); - assertEquals(m.a763, 763); - assertEquals(m.a764, 764); - assertEquals(m.a765, 765); - assertEquals(m.a766, 766); - assertEquals(m.a767, 767); - assertEquals(m.a768, 768); - assertEquals(m.a769, 769); - assertEquals(m.a770, 770); - assertEquals(m.a771, 771); - assertEquals(m.a772, 772); - assertEquals(m.a773, 773); - assertEquals(m.a774, 774); - assertEquals(m.a775, 775); - assertEquals(m.a776, 776); - assertEquals(m.a777, 777); - assertEquals(m.a778, 778); - assertEquals(m.a779, 779); - assertEquals(m.a780, 780); - assertEquals(m.a781, 781); - assertEquals(m.a782, 782); - assertEquals(m.a783, 783); - assertEquals(m.a784, 784); - assertEquals(m.a785, 785); - assertEquals(m.a786, 786); - assertEquals(m.a787, 787); - assertEquals(m.a788, 788); - assertEquals(m.a789, 789); - assertEquals(m.a790, 790); - assertEquals(m.a791, 791); - assertEquals(m.a792, 792); - assertEquals(m.a793, 793); - assertEquals(m.a794, 794); - assertEquals(m.a795, 795); - assertEquals(m.a796, 796); - assertEquals(m.a797, 797); - assertEquals(m.a798, 798); - assertEquals(m.a799, 799); - assertEquals(m.a800, 800); - assertEquals(m.a801, 801); - assertEquals(m.a802, 802); - assertEquals(m.a803, 803); - assertEquals(m.a804, 804); - assertEquals(m.a805, 805); - assertEquals(m.a806, 806); - assertEquals(m.a807, 807); - assertEquals(m.a808, 808); - assertEquals(m.a809, 809); - assertEquals(m.a810, 810); - assertEquals(m.a811, 811); - assertEquals(m.a812, 812); - assertEquals(m.a813, 813); - assertEquals(m.a814, 814); - assertEquals(m.a815, 815); - assertEquals(m.a816, 816); - assertEquals(m.a817, 817); - assertEquals(m.a818, 818); - assertEquals(m.a819, 819); - assertEquals(m.a820, 820); - assertEquals(m.a821, 821); - assertEquals(m.a822, 822); - assertEquals(m.a823, 823); - assertEquals(m.a824, 824); - assertEquals(m.a825, 825); - assertEquals(m.a826, 826); - assertEquals(m.a827, 827); - assertEquals(m.a828, 828); - assertEquals(m.a829, 829); - assertEquals(m.a830, 830); - assertEquals(m.a831, 831); - assertEquals(m.a832, 832); - assertEquals(m.a833, 833); - assertEquals(m.a834, 834); - assertEquals(m.a835, 835); - assertEquals(m.a836, 836); - assertEquals(m.a837, 837); - assertEquals(m.a838, 838); - assertEquals(m.a839, 839); - assertEquals(m.a840, 840); - assertEquals(m.a841, 841); - assertEquals(m.a842, 842); - assertEquals(m.a843, 843); - assertEquals(m.a844, 844); - assertEquals(m.a845, 845); - assertEquals(m.a846, 846); - assertEquals(m.a847, 847); - assertEquals(m.a848, 848); - assertEquals(m.a849, 849); - assertEquals(m.a850, 850); - assertEquals(m.a851, 851); - assertEquals(m.a852, 852); - assertEquals(m.a853, 853); - assertEquals(m.a854, 854); - assertEquals(m.a855, 855); - assertEquals(m.a856, 856); - assertEquals(m.a857, 857); - assertEquals(m.a858, 858); - assertEquals(m.a859, 859); - assertEquals(m.a860, 860); - assertEquals(m.a861, 861); - assertEquals(m.a862, 862); - assertEquals(m.a863, 863); - assertEquals(m.a864, 864); - assertEquals(m.a865, 865); - assertEquals(m.a866, 866); - assertEquals(m.a867, 867); - assertEquals(m.a868, 868); - assertEquals(m.a869, 869); - assertEquals(m.a870, 870); - assertEquals(m.a871, 871); - assertEquals(m.a872, 872); - assertEquals(m.a873, 873); - assertEquals(m.a874, 874); - assertEquals(m.a875, 875); - assertEquals(m.a876, 876); - assertEquals(m.a877, 877); - assertEquals(m.a878, 878); - assertEquals(m.a879, 879); - assertEquals(m.a880, 880); - assertEquals(m.a881, 881); - assertEquals(m.a882, 882); - assertEquals(m.a883, 883); - assertEquals(m.a884, 884); - assertEquals(m.a885, 885); - assertEquals(m.a886, 886); - assertEquals(m.a887, 887); - assertEquals(m.a888, 888); - assertEquals(m.a889, 889); - assertEquals(m.a890, 890); - assertEquals(m.a891, 891); - assertEquals(m.a892, 892); - assertEquals(m.a893, 893); - assertEquals(m.a894, 894); - assertEquals(m.a895, 895); - assertEquals(m.a896, 896); - assertEquals(m.a897, 897); - assertEquals(m.a898, 898); - assertEquals(m.a899, 899); - assertEquals(m.a900, 900); - assertEquals(m.a901, 901); - assertEquals(m.a902, 902); - assertEquals(m.a903, 903); - assertEquals(m.a904, 904); - assertEquals(m.a905, 905); - assertEquals(m.a906, 906); - assertEquals(m.a907, 907); - assertEquals(m.a908, 908); - assertEquals(m.a909, 909); - assertEquals(m.a910, 910); - assertEquals(m.a911, 911); - assertEquals(m.a912, 912); - assertEquals(m.a913, 913); - assertEquals(m.a914, 914); - assertEquals(m.a915, 915); - assertEquals(m.a916, 916); - assertEquals(m.a917, 917); - assertEquals(m.a918, 918); - assertEquals(m.a919, 919); - assertEquals(m.a920, 920); - assertEquals(m.a921, 921); - assertEquals(m.a922, 922); - assertEquals(m.a923, 923); - assertEquals(m.a924, 924); - assertEquals(m.a925, 925); - assertEquals(m.a926, 926); - assertEquals(m.a927, 927); - assertEquals(m.a928, 928); - assertEquals(m.a929, 929); - assertEquals(m.a930, 930); - assertEquals(m.a931, 931); - assertEquals(m.a932, 932); - assertEquals(m.a933, 933); - assertEquals(m.a934, 934); - assertEquals(m.a935, 935); - assertEquals(m.a936, 936); - assertEquals(m.a937, 937); - assertEquals(m.a938, 938); - assertEquals(m.a939, 939); - assertEquals(m.a940, 940); - assertEquals(m.a941, 941); - assertEquals(m.a942, 942); - assertEquals(m.a943, 943); - assertEquals(m.a944, 944); - assertEquals(m.a945, 945); - assertEquals(m.a946, 946); - assertEquals(m.a947, 947); - assertEquals(m.a948, 948); - assertEquals(m.a949, 949); - assertEquals(m.a950, 950); - assertEquals(m.a951, 951); - assertEquals(m.a952, 952); - assertEquals(m.a953, 953); - assertEquals(m.a954, 954); - assertEquals(m.a955, 955); - assertEquals(m.a956, 956); - assertEquals(m.a957, 957); - assertEquals(m.a958, 958); - assertEquals(m.a959, 959); - assertEquals(m.a960, 960); - assertEquals(m.a961, 961); - assertEquals(m.a962, 962); - assertEquals(m.a963, 963); - assertEquals(m.a964, 964); - assertEquals(m.a965, 965); - assertEquals(m.a966, 966); - assertEquals(m.a967, 967); - assertEquals(m.a968, 968); - assertEquals(m.a969, 969); - assertEquals(m.a970, 970); - assertEquals(m.a971, 971); - assertEquals(m.a972, 972); - assertEquals(m.a973, 973); - assertEquals(m.a974, 974); - assertEquals(m.a975, 975); - assertEquals(m.a976, 976); - assertEquals(m.a977, 977); - assertEquals(m.a978, 978); - assertEquals(m.a979, 979); - assertEquals(m.a980, 980); - assertEquals(m.a981, 981); - assertEquals(m.a982, 982); - assertEquals(m.a983, 983); - assertEquals(m.a984, 984); - assertEquals(m.a985, 985); - assertEquals(m.a986, 986); - assertEquals(m.a987, 987); - assertEquals(m.a988, 988); - assertEquals(m.a989, 989); - assertEquals(m.a990, 990); - assertEquals(m.a991, 991); - assertEquals(m.a992, 992); - assertEquals(m.a993, 993); - assertEquals(m.a994, 994); - assertEquals(m.a995, 995); - assertEquals(m.a996, 996); - assertEquals(m.a997, 997); - assertEquals(m.a998, 998); - assertEquals(m.a999, 999); - assertEquals(m.a1000, 1000); - assertEquals(m.a1001, 1001); - assertEquals(m.a1002, 1002); - assertEquals(m.a1003, 1003); - assertEquals(m.a1004, 1004); - assertEquals(m.a1005, 1005); - assertEquals(m.a1006, 1006); - assertEquals(m.a1007, 1007); - assertEquals(m.a1008, 1008); - assertEquals(m.a1009, 1009); - assertEquals(m.a1010, 1010); - assertEquals(m.a1011, 1011); - assertEquals(m.a1012, 1012); - assertEquals(m.a1013, 1013); - assertEquals(m.a1014, 1014); - assertEquals(m.a1015, 1015); - assertEquals(m.a1016, 1016); - assertEquals(m.a1017, 1017); - assertEquals(m.a1018, 1018); - assertEquals(m.a1019, 1019); - assertEquals(m.a1020, 1020); - assertEquals(m.a1021, 1021); - assertEquals(m.a1022, 1022); - assertEquals(m.a1023, 1023); - assertEquals(m.a1024, 1024); - assertEquals(m.a1025, 1025); - assertEquals(m.a1026, 1026); - assertEquals(m.a1027, 1027); - assertEquals(m.a1028, 1028); - assertEquals(m.a1029, 1029); - assertEquals(m.a1030, 1030); - assertEquals(m.a1031, 1031); - assertEquals(m.a1032, 1032); - assertEquals(m.a1033, 1033); - assertEquals(m.a1034, 1034); - assertEquals(m.a1035, 1035); - assertEquals(m.a1036, 1036); - assertEquals(m.a1037, 1037); - assertEquals(m.a1038, 1038); - assertEquals(m.a1039, 1039); - assertEquals(m.a1040, 1040); - assertEquals(m.a1041, 1041); - assertEquals(m.a1042, 1042); - assertEquals(m.a1043, 1043); - assertEquals(m.a1044, 1044); - assertEquals(m.a1045, 1045); - assertEquals(m.a1046, 1046); - assertEquals(m.a1047, 1047); - assertEquals(m.a1048, 1048); - assertEquals(m.a1049, 1049); - assertEquals(m.a1050, 1050); - assertEquals(m.a1051, 1051); - assertEquals(m.a1052, 1052); - assertEquals(m.a1053, 1053); - assertEquals(m.a1054, 1054); - assertEquals(m.a1055, 1055); - assertEquals(m.a1056, 1056); - assertEquals(m.a1057, 1057); - assertEquals(m.a1058, 1058); - assertEquals(m.a1059, 1059); - assertEquals(m.a1060, 1060); - assertEquals(m.a1061, 1061); - assertEquals(m.a1062, 1062); - assertEquals(m.a1063, 1063); - assertEquals(m.a1064, 1064); - assertEquals(m.a1065, 1065); - assertEquals(m.a1066, 1066); - assertEquals(m.a1067, 1067); - assertEquals(m.a1068, 1068); - assertEquals(m.a1069, 1069); - assertEquals(m.a1070, 1070); - assertEquals(m.a1071, 1071); - assertEquals(m.a1072, 1072); - assertEquals(m.a1073, 1073); - assertEquals(m.a1074, 1074); - assertEquals(m.a1075, 1075); - assertEquals(m.a1076, 1076); - assertEquals(m.a1077, 1077); - assertEquals(m.a1078, 1078); - assertEquals(m.a1079, 1079); - assertEquals(m.a1080, 1080); - assertEquals(m.a1081, 1081); - assertEquals(m.a1082, 1082); - assertEquals(m.a1083, 1083); - assertEquals(m.a1084, 1084); - assertEquals(m.a1085, 1085); - assertEquals(m.a1086, 1086); - assertEquals(m.a1087, 1087); - assertEquals(m.a1088, 1088); - assertEquals(m.a1089, 1089); - assertEquals(m.a1090, 1090); - assertEquals(m.a1091, 1091); - assertEquals(m.a1092, 1092); - assertEquals(m.a1093, 1093); - assertEquals(m.a1094, 1094); - assertEquals(m.a1095, 1095); - assertEquals(m.a1096, 1096); - assertEquals(m.a1097, 1097); - assertEquals(m.a1098, 1098); - assertEquals(m.a1099, 1099); -} -verify(m1); // Uninitialized. -verify(m1); // Premonomorphic. -verify(m2); // Monomorphic. diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-meta.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-meta.js deleted file mode 100644 index 5ea8a686f2a..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-meta.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE -// Flags: --harmony-import-meta - -import foreign, { url as otherUrl } from './modules-skip-export-import-meta.js'; - -assertEquals("object", typeof import.meta); -assertEquals(null, Object.getPrototypeOf(import.meta)); -assertSame(import.meta, import.meta); - -const loadImportMetaArrow = () => import.meta; -assertSame(loadImportMetaArrow(), import.meta); -function loadImportMetaFn() { - try { - throw new Error('force catch code path for nested context'); - } catch (e) { - return import.meta; - } -} -loadImportMetaFn(); -assertSame(loadImportMetaFn(), import.meta); - -// This property isn't part of the spec itself but is mentioned as an example -assertMatches(/\/modules-import-meta\.js$/, import.meta.url); - -import.meta.x = 42; -assertEquals(42, import.meta.x); -Object.assign(import.meta, { foo: "bar" }) -assertEquals("bar", import.meta.foo); - -// PerformEval parses its argument for the goal symbol Script. So the following -// should fail just as it does for every other Script context. -// -// See: -// https://github.com/tc39/proposal-import-meta/issues/7#issuecomment-329363083 -assertThrows(() => eval('import.meta'), SyntaxError); -assertThrows(() => new Function('return import.meta;'), SyntaxError); - -assertNotEquals(foreign, import.meta); -assertMatches(/\/modules-skip-export-import-meta\.js$/, foreign.url); -assertEquals(foreign.url, otherUrl); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-namespace.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-namespace.js deleted file mode 100644 index dfcd6cd5027..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-import-namespace.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -// Flags: --allow-natives-syntax - -import * as m from "modules-skip-3.js"; - -function get() { - return m.stringlife; -} - -assertEquals("42", get()); -assertEquals("42", get()); -assertEquals("42", get()); -%OptimizeFunctionOnNextCall(get); -assertEquals("42", get()); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-1.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-1.js deleted file mode 100644 index ee854b69d21..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-1.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export function life() { return 42; } diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-10.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-10.js deleted file mode 100644 index fff168a581b..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-10.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import {x} from "./modules-skip-10.js" diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-11.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-11.js deleted file mode 100644 index 8981f50ad46..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-11.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -throw Symbol(); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-12.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-12.js deleted file mode 100644 index 05fedfa8d1e..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-12.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -$^#$%@#@^^%^%$^#%%#!#$%!#$@#$% diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-13.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-13.js deleted file mode 100644 index d823a283f8e..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-13.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export * as self from "./modules-skip-13.js"; -export default 42; diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-2.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-2.js deleted file mode 100644 index 6ff97a98939..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-2.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -throw new Error('42 is not the answer'); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-3.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-3.js deleted file mode 100644 index 6f9984ed51e..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-3.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export let stringlife = "42"; diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-4.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-4.js deleted file mode 100644 index 761153671c0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-4.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export * from 'modules-skip-1.js'; -export * from 'modules-skip-3.js'; diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-5.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-5.js deleted file mode 100644 index 879445977fc..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-5.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -var dynamic_life; - -import * as static_life from 'modules-skip-1.js'; -import * as relative_static_life from './modules-skip-1.js'; -import('modules-skip-1.js').then(namespace => dynamic_life = namespace); - -export { static_life }; -export { relative_static_life }; -export { dynamic_life }; diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-6.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-6.js deleted file mode 100644 index 6acc2b8499f..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-6.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -Object.defineProperty(Object, 'life', { - value: 42 -}); - -export let life = "42"; diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-7.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-7.js deleted file mode 100644 index 4d3a952e92b..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-7.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import - -export async function getLife() { - try { - let namespace = await import('modules-skip-1.js'); - return namespace.life(); - } catch (e) { - %AbortJS('failure: ' + e); - } -} diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-8.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-8.js deleted file mode 100644 index 816cf2cdb7a..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-8.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -await x; diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-9.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-9.js deleted file mode 100644 index c474988833e..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-9.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import x from 'modules-skip-empty.js'; diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-empty.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-empty.js deleted file mode 100644 index 4af874cfa76..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-empty.js +++ /dev/null @@ -1,3 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-export-import-meta.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-export-import-meta.js deleted file mode 100644 index e58e5018af3..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-export-import-meta.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default import.meta; -const { url } = import.meta; -export { url }; diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-large1.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-large1.js deleted file mode 100644 index e643df32a97..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-large1.js +++ /dev/null @@ -1,2204 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export let a0 = 0; -export let a1 = 1; -export let a2 = 2; -export let a3 = 3; -export let a4 = 4; -export let a5 = 5; -export let a6 = 6; -export let a7 = 7; -export let a8 = 8; -export let a9 = 9; -export let a10 = 10; -export let a11 = 11; -export let a12 = 12; -export let a13 = 13; -export let a14 = 14; -export let a15 = 15; -export let a16 = 16; -export let a17 = 17; -export let a18 = 18; -export let a19 = 19; -export let a20 = 20; -export let a21 = 21; -export let a22 = 22; -export let a23 = 23; -export let a24 = 24; -export let a25 = 25; -export let a26 = 26; -export let a27 = 27; -export let a28 = 28; -export let a29 = 29; -export let a30 = 30; -export let a31 = 31; -export let a32 = 32; -export let a33 = 33; -export let a34 = 34; -export let a35 = 35; -export let a36 = 36; -export let a37 = 37; -export let a38 = 38; -export let a39 = 39; -export let a40 = 40; -export let a41 = 41; -export let a42 = 42; -export let a43 = 43; -export let a44 = 44; -export let a45 = 45; -export let a46 = 46; -export let a47 = 47; -export let a48 = 48; -export let a49 = 49; -export let a50 = 50; -export let a51 = 51; -export let a52 = 52; -export let a53 = 53; -export let a54 = 54; -export let a55 = 55; -export let a56 = 56; -export let a57 = 57; -export let a58 = 58; -export let a59 = 59; -export let a60 = 60; -export let a61 = 61; -export let a62 = 62; -export let a63 = 63; -export let a64 = 64; -export let a65 = 65; -export let a66 = 66; -export let a67 = 67; -export let a68 = 68; -export let a69 = 69; -export let a70 = 70; -export let a71 = 71; -export let a72 = 72; -export let a73 = 73; -export let a74 = 74; -export let a75 = 75; -export let a76 = 76; -export let a77 = 77; -export let a78 = 78; -export let a79 = 79; -export let a80 = 80; -export let a81 = 81; -export let a82 = 82; -export let a83 = 83; -export let a84 = 84; -export let a85 = 85; -export let a86 = 86; -export let a87 = 87; -export let a88 = 88; -export let a89 = 89; -export let a90 = 90; -export let a91 = 91; -export let a92 = 92; -export let a93 = 93; -export let a94 = 94; -export let a95 = 95; -export let a96 = 96; -export let a97 = 97; -export let a98 = 98; -export let a99 = 99; -export let a100 = 100; -export let a101 = 101; -export let a102 = 102; -export let a103 = 103; -export let a104 = 104; -export let a105 = 105; -export let a106 = 106; -export let a107 = 107; -export let a108 = 108; -export let a109 = 109; -export let a110 = 110; -export let a111 = 111; -export let a112 = 112; -export let a113 = 113; -export let a114 = 114; -export let a115 = 115; -export let a116 = 116; -export let a117 = 117; -export let a118 = 118; -export let a119 = 119; -export let a120 = 120; -export let a121 = 121; -export let a122 = 122; -export let a123 = 123; -export let a124 = 124; -export let a125 = 125; -export let a126 = 126; -export let a127 = 127; -export let a128 = 128; -export let a129 = 129; -export let a130 = 130; -export let a131 = 131; -export let a132 = 132; -export let a133 = 133; -export let a134 = 134; -export let a135 = 135; -export let a136 = 136; -export let a137 = 137; -export let a138 = 138; -export let a139 = 139; -export let a140 = 140; -export let a141 = 141; -export let a142 = 142; -export let a143 = 143; -export let a144 = 144; -export let a145 = 145; -export let a146 = 146; -export let a147 = 147; -export let a148 = 148; -export let a149 = 149; -export let a150 = 150; -export let a151 = 151; -export let a152 = 152; -export let a153 = 153; -export let a154 = 154; -export let a155 = 155; -export let a156 = 156; -export let a157 = 157; -export let a158 = 158; -export let a159 = 159; -export let a160 = 160; -export let a161 = 161; -export let a162 = 162; -export let a163 = 163; -export let a164 = 164; -export let a165 = 165; -export let a166 = 166; -export let a167 = 167; -export let a168 = 168; -export let a169 = 169; -export let a170 = 170; -export let a171 = 171; -export let a172 = 172; -export let a173 = 173; -export let a174 = 174; -export let a175 = 175; -export let a176 = 176; -export let a177 = 177; -export let a178 = 178; -export let a179 = 179; -export let a180 = 180; -export let a181 = 181; -export let a182 = 182; -export let a183 = 183; -export let a184 = 184; -export let a185 = 185; -export let a186 = 186; -export let a187 = 187; -export let a188 = 188; -export let a189 = 189; -export let a190 = 190; -export let a191 = 191; -export let a192 = 192; -export let a193 = 193; -export let a194 = 194; -export let a195 = 195; -export let a196 = 196; -export let a197 = 197; -export let a198 = 198; -export let a199 = 199; -export let a200 = 200; -export let a201 = 201; -export let a202 = 202; -export let a203 = 203; -export let a204 = 204; -export let a205 = 205; -export let a206 = 206; -export let a207 = 207; -export let a208 = 208; -export let a209 = 209; -export let a210 = 210; -export let a211 = 211; -export let a212 = 212; -export let a213 = 213; -export let a214 = 214; -export let a215 = 215; -export let a216 = 216; -export let a217 = 217; -export let a218 = 218; -export let a219 = 219; -export let a220 = 220; -export let a221 = 221; -export let a222 = 222; -export let a223 = 223; -export let a224 = 224; -export let a225 = 225; -export let a226 = 226; -export let a227 = 227; -export let a228 = 228; -export let a229 = 229; -export let a230 = 230; -export let a231 = 231; -export let a232 = 232; -export let a233 = 233; -export let a234 = 234; -export let a235 = 235; -export let a236 = 236; -export let a237 = 237; -export let a238 = 238; -export let a239 = 239; -export let a240 = 240; -export let a241 = 241; -export let a242 = 242; -export let a243 = 243; -export let a244 = 244; -export let a245 = 245; -export let a246 = 246; -export let a247 = 247; -export let a248 = 248; -export let a249 = 249; -export let a250 = 250; -export let a251 = 251; -export let a252 = 252; -export let a253 = 253; -export let a254 = 254; -export let a255 = 255; -export let a256 = 256; -export let a257 = 257; -export let a258 = 258; -export let a259 = 259; -export let a260 = 260; -export let a261 = 261; -export let a262 = 262; -export let a263 = 263; -export let a264 = 264; -export let a265 = 265; -export let a266 = 266; -export let a267 = 267; -export let a268 = 268; -export let a269 = 269; -export let a270 = 270; -export let a271 = 271; -export let a272 = 272; -export let a273 = 273; -export let a274 = 274; -export let a275 = 275; -export let a276 = 276; -export let a277 = 277; -export let a278 = 278; -export let a279 = 279; -export let a280 = 280; -export let a281 = 281; -export let a282 = 282; -export let a283 = 283; -export let a284 = 284; -export let a285 = 285; -export let a286 = 286; -export let a287 = 287; -export let a288 = 288; -export let a289 = 289; -export let a290 = 290; -export let a291 = 291; -export let a292 = 292; -export let a293 = 293; -export let a294 = 294; -export let a295 = 295; -export let a296 = 296; -export let a297 = 297; -export let a298 = 298; -export let a299 = 299; -export let a300 = 300; -export let a301 = 301; -export let a302 = 302; -export let a303 = 303; -export let a304 = 304; -export let a305 = 305; -export let a306 = 306; -export let a307 = 307; -export let a308 = 308; -export let a309 = 309; -export let a310 = 310; -export let a311 = 311; -export let a312 = 312; -export let a313 = 313; -export let a314 = 314; -export let a315 = 315; -export let a316 = 316; -export let a317 = 317; -export let a318 = 318; -export let a319 = 319; -export let a320 = 320; -export let a321 = 321; -export let a322 = 322; -export let a323 = 323; -export let a324 = 324; -export let a325 = 325; -export let a326 = 326; -export let a327 = 327; -export let a328 = 328; -export let a329 = 329; -export let a330 = 330; -export let a331 = 331; -export let a332 = 332; -export let a333 = 333; -export let a334 = 334; -export let a335 = 335; -export let a336 = 336; -export let a337 = 337; -export let a338 = 338; -export let a339 = 339; -export let a340 = 340; -export let a341 = 341; -export let a342 = 342; -export let a343 = 343; -export let a344 = 344; -export let a345 = 345; -export let a346 = 346; -export let a347 = 347; -export let a348 = 348; -export let a349 = 349; -export let a350 = 350; -export let a351 = 351; -export let a352 = 352; -export let a353 = 353; -export let a354 = 354; -export let a355 = 355; -export let a356 = 356; -export let a357 = 357; -export let a358 = 358; -export let a359 = 359; -export let a360 = 360; -export let a361 = 361; -export let a362 = 362; -export let a363 = 363; -export let a364 = 364; -export let a365 = 365; -export let a366 = 366; -export let a367 = 367; -export let a368 = 368; -export let a369 = 369; -export let a370 = 370; -export let a371 = 371; -export let a372 = 372; -export let a373 = 373; -export let a374 = 374; -export let a375 = 375; -export let a376 = 376; -export let a377 = 377; -export let a378 = 378; -export let a379 = 379; -export let a380 = 380; -export let a381 = 381; -export let a382 = 382; -export let a383 = 383; -export let a384 = 384; -export let a385 = 385; -export let a386 = 386; -export let a387 = 387; -export let a388 = 388; -export let a389 = 389; -export let a390 = 390; -export let a391 = 391; -export let a392 = 392; -export let a393 = 393; -export let a394 = 394; -export let a395 = 395; -export let a396 = 396; -export let a397 = 397; -export let a398 = 398; -export let a399 = 399; -export let a400 = 400; -export let a401 = 401; -export let a402 = 402; -export let a403 = 403; -export let a404 = 404; -export let a405 = 405; -export let a406 = 406; -export let a407 = 407; -export let a408 = 408; -export let a409 = 409; -export let a410 = 410; -export let a411 = 411; -export let a412 = 412; -export let a413 = 413; -export let a414 = 414; -export let a415 = 415; -export let a416 = 416; -export let a417 = 417; -export let a418 = 418; -export let a419 = 419; -export let a420 = 420; -export let a421 = 421; -export let a422 = 422; -export let a423 = 423; -export let a424 = 424; -export let a425 = 425; -export let a426 = 426; -export let a427 = 427; -export let a428 = 428; -export let a429 = 429; -export let a430 = 430; -export let a431 = 431; -export let a432 = 432; -export let a433 = 433; -export let a434 = 434; -export let a435 = 435; -export let a436 = 436; -export let a437 = 437; -export let a438 = 438; -export let a439 = 439; -export let a440 = 440; -export let a441 = 441; -export let a442 = 442; -export let a443 = 443; -export let a444 = 444; -export let a445 = 445; -export let a446 = 446; -export let a447 = 447; -export let a448 = 448; -export let a449 = 449; -export let a450 = 450; -export let a451 = 451; -export let a452 = 452; -export let a453 = 453; -export let a454 = 454; -export let a455 = 455; -export let a456 = 456; -export let a457 = 457; -export let a458 = 458; -export let a459 = 459; -export let a460 = 460; -export let a461 = 461; -export let a462 = 462; -export let a463 = 463; -export let a464 = 464; -export let a465 = 465; -export let a466 = 466; -export let a467 = 467; -export let a468 = 468; -export let a469 = 469; -export let a470 = 470; -export let a471 = 471; -export let a472 = 472; -export let a473 = 473; -export let a474 = 474; -export let a475 = 475; -export let a476 = 476; -export let a477 = 477; -export let a478 = 478; -export let a479 = 479; -export let a480 = 480; -export let a481 = 481; -export let a482 = 482; -export let a483 = 483; -export let a484 = 484; -export let a485 = 485; -export let a486 = 486; -export let a487 = 487; -export let a488 = 488; -export let a489 = 489; -export let a490 = 490; -export let a491 = 491; -export let a492 = 492; -export let a493 = 493; -export let a494 = 494; -export let a495 = 495; -export let a496 = 496; -export let a497 = 497; -export let a498 = 498; -export let a499 = 499; -export let a500 = 500; -export let a501 = 501; -export let a502 = 502; -export let a503 = 503; -export let a504 = 504; -export let a505 = 505; -export let a506 = 506; -export let a507 = 507; -export let a508 = 508; -export let a509 = 509; -export let a510 = 510; -export let a511 = 511; -export let a512 = 512; -export let a513 = 513; -export let a514 = 514; -export let a515 = 515; -export let a516 = 516; -export let a517 = 517; -export let a518 = 518; -export let a519 = 519; -export let a520 = 520; -export let a521 = 521; -export let a522 = 522; -export let a523 = 523; -export let a524 = 524; -export let a525 = 525; -export let a526 = 526; -export let a527 = 527; -export let a528 = 528; -export let a529 = 529; -export let a530 = 530; -export let a531 = 531; -export let a532 = 532; -export let a533 = 533; -export let a534 = 534; -export let a535 = 535; -export let a536 = 536; -export let a537 = 537; -export let a538 = 538; -export let a539 = 539; -export let a540 = 540; -export let a541 = 541; -export let a542 = 542; -export let a543 = 543; -export let a544 = 544; -export let a545 = 545; -export let a546 = 546; -export let a547 = 547; -export let a548 = 548; -export let a549 = 549; -export let a550 = 550; -export let a551 = 551; -export let a552 = 552; -export let a553 = 553; -export let a554 = 554; -export let a555 = 555; -export let a556 = 556; -export let a557 = 557; -export let a558 = 558; -export let a559 = 559; -export let a560 = 560; -export let a561 = 561; -export let a562 = 562; -export let a563 = 563; -export let a564 = 564; -export let a565 = 565; -export let a566 = 566; -export let a567 = 567; -export let a568 = 568; -export let a569 = 569; -export let a570 = 570; -export let a571 = 571; -export let a572 = 572; -export let a573 = 573; -export let a574 = 574; -export let a575 = 575; -export let a576 = 576; -export let a577 = 577; -export let a578 = 578; -export let a579 = 579; -export let a580 = 580; -export let a581 = 581; -export let a582 = 582; -export let a583 = 583; -export let a584 = 584; -export let a585 = 585; -export let a586 = 586; -export let a587 = 587; -export let a588 = 588; -export let a589 = 589; -export let a590 = 590; -export let a591 = 591; -export let a592 = 592; -export let a593 = 593; -export let a594 = 594; -export let a595 = 595; -export let a596 = 596; -export let a597 = 597; -export let a598 = 598; -export let a599 = 599; -export let a600 = 600; -export let a601 = 601; -export let a602 = 602; -export let a603 = 603; -export let a604 = 604; -export let a605 = 605; -export let a606 = 606; -export let a607 = 607; -export let a608 = 608; -export let a609 = 609; -export let a610 = 610; -export let a611 = 611; -export let a612 = 612; -export let a613 = 613; -export let a614 = 614; -export let a615 = 615; -export let a616 = 616; -export let a617 = 617; -export let a618 = 618; -export let a619 = 619; -export let a620 = 620; -export let a621 = 621; -export let a622 = 622; -export let a623 = 623; -export let a624 = 624; -export let a625 = 625; -export let a626 = 626; -export let a627 = 627; -export let a628 = 628; -export let a629 = 629; -export let a630 = 630; -export let a631 = 631; -export let a632 = 632; -export let a633 = 633; -export let a634 = 634; -export let a635 = 635; -export let a636 = 636; -export let a637 = 637; -export let a638 = 638; -export let a639 = 639; -export let a640 = 640; -export let a641 = 641; -export let a642 = 642; -export let a643 = 643; -export let a644 = 644; -export let a645 = 645; -export let a646 = 646; -export let a647 = 647; -export let a648 = 648; -export let a649 = 649; -export let a650 = 650; -export let a651 = 651; -export let a652 = 652; -export let a653 = 653; -export let a654 = 654; -export let a655 = 655; -export let a656 = 656; -export let a657 = 657; -export let a658 = 658; -export let a659 = 659; -export let a660 = 660; -export let a661 = 661; -export let a662 = 662; -export let a663 = 663; -export let a664 = 664; -export let a665 = 665; -export let a666 = 666; -export let a667 = 667; -export let a668 = 668; -export let a669 = 669; -export let a670 = 670; -export let a671 = 671; -export let a672 = 672; -export let a673 = 673; -export let a674 = 674; -export let a675 = 675; -export let a676 = 676; -export let a677 = 677; -export let a678 = 678; -export let a679 = 679; -export let a680 = 680; -export let a681 = 681; -export let a682 = 682; -export let a683 = 683; -export let a684 = 684; -export let a685 = 685; -export let a686 = 686; -export let a687 = 687; -export let a688 = 688; -export let a689 = 689; -export let a690 = 690; -export let a691 = 691; -export let a692 = 692; -export let a693 = 693; -export let a694 = 694; -export let a695 = 695; -export let a696 = 696; -export let a697 = 697; -export let a698 = 698; -export let a699 = 699; -export let a700 = 700; -export let a701 = 701; -export let a702 = 702; -export let a703 = 703; -export let a704 = 704; -export let a705 = 705; -export let a706 = 706; -export let a707 = 707; -export let a708 = 708; -export let a709 = 709; -export let a710 = 710; -export let a711 = 711; -export let a712 = 712; -export let a713 = 713; -export let a714 = 714; -export let a715 = 715; -export let a716 = 716; -export let a717 = 717; -export let a718 = 718; -export let a719 = 719; -export let a720 = 720; -export let a721 = 721; -export let a722 = 722; -export let a723 = 723; -export let a724 = 724; -export let a725 = 725; -export let a726 = 726; -export let a727 = 727; -export let a728 = 728; -export let a729 = 729; -export let a730 = 730; -export let a731 = 731; -export let a732 = 732; -export let a733 = 733; -export let a734 = 734; -export let a735 = 735; -export let a736 = 736; -export let a737 = 737; -export let a738 = 738; -export let a739 = 739; -export let a740 = 740; -export let a741 = 741; -export let a742 = 742; -export let a743 = 743; -export let a744 = 744; -export let a745 = 745; -export let a746 = 746; -export let a747 = 747; -export let a748 = 748; -export let a749 = 749; -export let a750 = 750; -export let a751 = 751; -export let a752 = 752; -export let a753 = 753; -export let a754 = 754; -export let a755 = 755; -export let a756 = 756; -export let a757 = 757; -export let a758 = 758; -export let a759 = 759; -export let a760 = 760; -export let a761 = 761; -export let a762 = 762; -export let a763 = 763; -export let a764 = 764; -export let a765 = 765; -export let a766 = 766; -export let a767 = 767; -export let a768 = 768; -export let a769 = 769; -export let a770 = 770; -export let a771 = 771; -export let a772 = 772; -export let a773 = 773; -export let a774 = 774; -export let a775 = 775; -export let a776 = 776; -export let a777 = 777; -export let a778 = 778; -export let a779 = 779; -export let a780 = 780; -export let a781 = 781; -export let a782 = 782; -export let a783 = 783; -export let a784 = 784; -export let a785 = 785; -export let a786 = 786; -export let a787 = 787; -export let a788 = 788; -export let a789 = 789; -export let a790 = 790; -export let a791 = 791; -export let a792 = 792; -export let a793 = 793; -export let a794 = 794; -export let a795 = 795; -export let a796 = 796; -export let a797 = 797; -export let a798 = 798; -export let a799 = 799; -export let a800 = 800; -export let a801 = 801; -export let a802 = 802; -export let a803 = 803; -export let a804 = 804; -export let a805 = 805; -export let a806 = 806; -export let a807 = 807; -export let a808 = 808; -export let a809 = 809; -export let a810 = 810; -export let a811 = 811; -export let a812 = 812; -export let a813 = 813; -export let a814 = 814; -export let a815 = 815; -export let a816 = 816; -export let a817 = 817; -export let a818 = 818; -export let a819 = 819; -export let a820 = 820; -export let a821 = 821; -export let a822 = 822; -export let a823 = 823; -export let a824 = 824; -export let a825 = 825; -export let a826 = 826; -export let a827 = 827; -export let a828 = 828; -export let a829 = 829; -export let a830 = 830; -export let a831 = 831; -export let a832 = 832; -export let a833 = 833; -export let a834 = 834; -export let a835 = 835; -export let a836 = 836; -export let a837 = 837; -export let a838 = 838; -export let a839 = 839; -export let a840 = 840; -export let a841 = 841; -export let a842 = 842; -export let a843 = 843; -export let a844 = 844; -export let a845 = 845; -export let a846 = 846; -export let a847 = 847; -export let a848 = 848; -export let a849 = 849; -export let a850 = 850; -export let a851 = 851; -export let a852 = 852; -export let a853 = 853; -export let a854 = 854; -export let a855 = 855; -export let a856 = 856; -export let a857 = 857; -export let a858 = 858; -export let a859 = 859; -export let a860 = 860; -export let a861 = 861; -export let a862 = 862; -export let a863 = 863; -export let a864 = 864; -export let a865 = 865; -export let a866 = 866; -export let a867 = 867; -export let a868 = 868; -export let a869 = 869; -export let a870 = 870; -export let a871 = 871; -export let a872 = 872; -export let a873 = 873; -export let a874 = 874; -export let a875 = 875; -export let a876 = 876; -export let a877 = 877; -export let a878 = 878; -export let a879 = 879; -export let a880 = 880; -export let a881 = 881; -export let a882 = 882; -export let a883 = 883; -export let a884 = 884; -export let a885 = 885; -export let a886 = 886; -export let a887 = 887; -export let a888 = 888; -export let a889 = 889; -export let a890 = 890; -export let a891 = 891; -export let a892 = 892; -export let a893 = 893; -export let a894 = 894; -export let a895 = 895; -export let a896 = 896; -export let a897 = 897; -export let a898 = 898; -export let a899 = 899; -export let a900 = 900; -export let a901 = 901; -export let a902 = 902; -export let a903 = 903; -export let a904 = 904; -export let a905 = 905; -export let a906 = 906; -export let a907 = 907; -export let a908 = 908; -export let a909 = 909; -export let a910 = 910; -export let a911 = 911; -export let a912 = 912; -export let a913 = 913; -export let a914 = 914; -export let a915 = 915; -export let a916 = 916; -export let a917 = 917; -export let a918 = 918; -export let a919 = 919; -export let a920 = 920; -export let a921 = 921; -export let a922 = 922; -export let a923 = 923; -export let a924 = 924; -export let a925 = 925; -export let a926 = 926; -export let a927 = 927; -export let a928 = 928; -export let a929 = 929; -export let a930 = 930; -export let a931 = 931; -export let a932 = 932; -export let a933 = 933; -export let a934 = 934; -export let a935 = 935; -export let a936 = 936; -export let a937 = 937; -export let a938 = 938; -export let a939 = 939; -export let a940 = 940; -export let a941 = 941; -export let a942 = 942; -export let a943 = 943; -export let a944 = 944; -export let a945 = 945; -export let a946 = 946; -export let a947 = 947; -export let a948 = 948; -export let a949 = 949; -export let a950 = 950; -export let a951 = 951; -export let a952 = 952; -export let a953 = 953; -export let a954 = 954; -export let a955 = 955; -export let a956 = 956; -export let a957 = 957; -export let a958 = 958; -export let a959 = 959; -export let a960 = 960; -export let a961 = 961; -export let a962 = 962; -export let a963 = 963; -export let a964 = 964; -export let a965 = 965; -export let a966 = 966; -export let a967 = 967; -export let a968 = 968; -export let a969 = 969; -export let a970 = 970; -export let a971 = 971; -export let a972 = 972; -export let a973 = 973; -export let a974 = 974; -export let a975 = 975; -export let a976 = 976; -export let a977 = 977; -export let a978 = 978; -export let a979 = 979; -export let a980 = 980; -export let a981 = 981; -export let a982 = 982; -export let a983 = 983; -export let a984 = 984; -export let a985 = 985; -export let a986 = 986; -export let a987 = 987; -export let a988 = 988; -export let a989 = 989; -export let a990 = 990; -export let a991 = 991; -export let a992 = 992; -export let a993 = 993; -export let a994 = 994; -export let a995 = 995; -export let a996 = 996; -export let a997 = 997; -export let a998 = 998; -export let a999 = 999; -export let a1000 = 1000; -export let a1001 = 1001; -export let a1002 = 1002; -export let a1003 = 1003; -export let a1004 = 1004; -export let a1005 = 1005; -export let a1006 = 1006; -export let a1007 = 1007; -export let a1008 = 1008; -export let a1009 = 1009; -export let a1010 = 1010; -export let a1011 = 1011; -export let a1012 = 1012; -export let a1013 = 1013; -export let a1014 = 1014; -export let a1015 = 1015; -export let a1016 = 1016; -export let a1017 = 1017; -export let a1018 = 1018; -export let a1019 = 1019; -export let a1020 = 1020; -export let a1021 = 1021; -export let a1022 = 1022; -export let a1023 = 1023; -export let a1024 = 1024; -export let a1025 = 1025; -export let a1026 = 1026; -export let a1027 = 1027; -export let a1028 = 1028; -export let a1029 = 1029; -export let a1030 = 1030; -export let a1031 = 1031; -export let a1032 = 1032; -export let a1033 = 1033; -export let a1034 = 1034; -export let a1035 = 1035; -export let a1036 = 1036; -export let a1037 = 1037; -export let a1038 = 1038; -export let a1039 = 1039; -export let a1040 = 1040; -export let a1041 = 1041; -export let a1042 = 1042; -export let a1043 = 1043; -export let a1044 = 1044; -export let a1045 = 1045; -export let a1046 = 1046; -export let a1047 = 1047; -export let a1048 = 1048; -export let a1049 = 1049; -export let a1050 = 1050; -export let a1051 = 1051; -export let a1052 = 1052; -export let a1053 = 1053; -export let a1054 = 1054; -export let a1055 = 1055; -export let a1056 = 1056; -export let a1057 = 1057; -export let a1058 = 1058; -export let a1059 = 1059; -export let a1060 = 1060; -export let a1061 = 1061; -export let a1062 = 1062; -export let a1063 = 1063; -export let a1064 = 1064; -export let a1065 = 1065; -export let a1066 = 1066; -export let a1067 = 1067; -export let a1068 = 1068; -export let a1069 = 1069; -export let a1070 = 1070; -export let a1071 = 1071; -export let a1072 = 1072; -export let a1073 = 1073; -export let a1074 = 1074; -export let a1075 = 1075; -export let a1076 = 1076; -export let a1077 = 1077; -export let a1078 = 1078; -export let a1079 = 1079; -export let a1080 = 1080; -export let a1081 = 1081; -export let a1082 = 1082; -export let a1083 = 1083; -export let a1084 = 1084; -export let a1085 = 1085; -export let a1086 = 1086; -export let a1087 = 1087; -export let a1088 = 1088; -export let a1089 = 1089; -export let a1090 = 1090; -export let a1091 = 1091; -export let a1092 = 1092; -export let a1093 = 1093; -export let a1094 = 1094; -export let a1095 = 1095; -export let a1096 = 1096; -export let a1097 = 1097; -export let a1098 = 1098; -export let a1099 = 1099; -export let a1100 = 1100; -export let a1101 = 1101; -export let a1102 = 1102; -export let a1103 = 1103; -export let a1104 = 1104; -export let a1105 = 1105; -export let a1106 = 1106; -export let a1107 = 1107; -export let a1108 = 1108; -export let a1109 = 1109; -export let a1110 = 1110; -export let a1111 = 1111; -export let a1112 = 1112; -export let a1113 = 1113; -export let a1114 = 1114; -export let a1115 = 1115; -export let a1116 = 1116; -export let a1117 = 1117; -export let a1118 = 1118; -export let a1119 = 1119; -export let a1120 = 1120; -export let a1121 = 1121; -export let a1122 = 1122; -export let a1123 = 1123; -export let a1124 = 1124; -export let a1125 = 1125; -export let a1126 = 1126; -export let a1127 = 1127; -export let a1128 = 1128; -export let a1129 = 1129; -export let a1130 = 1130; -export let a1131 = 1131; -export let a1132 = 1132; -export let a1133 = 1133; -export let a1134 = 1134; -export let a1135 = 1135; -export let a1136 = 1136; -export let a1137 = 1137; -export let a1138 = 1138; -export let a1139 = 1139; -export let a1140 = 1140; -export let a1141 = 1141; -export let a1142 = 1142; -export let a1143 = 1143; -export let a1144 = 1144; -export let a1145 = 1145; -export let a1146 = 1146; -export let a1147 = 1147; -export let a1148 = 1148; -export let a1149 = 1149; -export let a1150 = 1150; -export let a1151 = 1151; -export let a1152 = 1152; -export let a1153 = 1153; -export let a1154 = 1154; -export let a1155 = 1155; -export let a1156 = 1156; -export let a1157 = 1157; -export let a1158 = 1158; -export let a1159 = 1159; -export let a1160 = 1160; -export let a1161 = 1161; -export let a1162 = 1162; -export let a1163 = 1163; -export let a1164 = 1164; -export let a1165 = 1165; -export let a1166 = 1166; -export let a1167 = 1167; -export let a1168 = 1168; -export let a1169 = 1169; -export let a1170 = 1170; -export let a1171 = 1171; -export let a1172 = 1172; -export let a1173 = 1173; -export let a1174 = 1174; -export let a1175 = 1175; -export let a1176 = 1176; -export let a1177 = 1177; -export let a1178 = 1178; -export let a1179 = 1179; -export let a1180 = 1180; -export let a1181 = 1181; -export let a1182 = 1182; -export let a1183 = 1183; -export let a1184 = 1184; -export let a1185 = 1185; -export let a1186 = 1186; -export let a1187 = 1187; -export let a1188 = 1188; -export let a1189 = 1189; -export let a1190 = 1190; -export let a1191 = 1191; -export let a1192 = 1192; -export let a1193 = 1193; -export let a1194 = 1194; -export let a1195 = 1195; -export let a1196 = 1196; -export let a1197 = 1197; -export let a1198 = 1198; -export let a1199 = 1199; -export let a1200 = 1200; -export let a1201 = 1201; -export let a1202 = 1202; -export let a1203 = 1203; -export let a1204 = 1204; -export let a1205 = 1205; -export let a1206 = 1206; -export let a1207 = 1207; -export let a1208 = 1208; -export let a1209 = 1209; -export let a1210 = 1210; -export let a1211 = 1211; -export let a1212 = 1212; -export let a1213 = 1213; -export let a1214 = 1214; -export let a1215 = 1215; -export let a1216 = 1216; -export let a1217 = 1217; -export let a1218 = 1218; -export let a1219 = 1219; -export let a1220 = 1220; -export let a1221 = 1221; -export let a1222 = 1222; -export let a1223 = 1223; -export let a1224 = 1224; -export let a1225 = 1225; -export let a1226 = 1226; -export let a1227 = 1227; -export let a1228 = 1228; -export let a1229 = 1229; -export let a1230 = 1230; -export let a1231 = 1231; -export let a1232 = 1232; -export let a1233 = 1233; -export let a1234 = 1234; -export let a1235 = 1235; -export let a1236 = 1236; -export let a1237 = 1237; -export let a1238 = 1238; -export let a1239 = 1239; -export let a1240 = 1240; -export let a1241 = 1241; -export let a1242 = 1242; -export let a1243 = 1243; -export let a1244 = 1244; -export let a1245 = 1245; -export let a1246 = 1246; -export let a1247 = 1247; -export let a1248 = 1248; -export let a1249 = 1249; -export let a1250 = 1250; -export let a1251 = 1251; -export let a1252 = 1252; -export let a1253 = 1253; -export let a1254 = 1254; -export let a1255 = 1255; -export let a1256 = 1256; -export let a1257 = 1257; -export let a1258 = 1258; -export let a1259 = 1259; -export let a1260 = 1260; -export let a1261 = 1261; -export let a1262 = 1262; -export let a1263 = 1263; -export let a1264 = 1264; -export let a1265 = 1265; -export let a1266 = 1266; -export let a1267 = 1267; -export let a1268 = 1268; -export let a1269 = 1269; -export let a1270 = 1270; -export let a1271 = 1271; -export let a1272 = 1272; -export let a1273 = 1273; -export let a1274 = 1274; -export let a1275 = 1275; -export let a1276 = 1276; -export let a1277 = 1277; -export let a1278 = 1278; -export let a1279 = 1279; -export let a1280 = 1280; -export let a1281 = 1281; -export let a1282 = 1282; -export let a1283 = 1283; -export let a1284 = 1284; -export let a1285 = 1285; -export let a1286 = 1286; -export let a1287 = 1287; -export let a1288 = 1288; -export let a1289 = 1289; -export let a1290 = 1290; -export let a1291 = 1291; -export let a1292 = 1292; -export let a1293 = 1293; -export let a1294 = 1294; -export let a1295 = 1295; -export let a1296 = 1296; -export let a1297 = 1297; -export let a1298 = 1298; -export let a1299 = 1299; -export let a1300 = 1300; -export let a1301 = 1301; -export let a1302 = 1302; -export let a1303 = 1303; -export let a1304 = 1304; -export let a1305 = 1305; -export let a1306 = 1306; -export let a1307 = 1307; -export let a1308 = 1308; -export let a1309 = 1309; -export let a1310 = 1310; -export let a1311 = 1311; -export let a1312 = 1312; -export let a1313 = 1313; -export let a1314 = 1314; -export let a1315 = 1315; -export let a1316 = 1316; -export let a1317 = 1317; -export let a1318 = 1318; -export let a1319 = 1319; -export let a1320 = 1320; -export let a1321 = 1321; -export let a1322 = 1322; -export let a1323 = 1323; -export let a1324 = 1324; -export let a1325 = 1325; -export let a1326 = 1326; -export let a1327 = 1327; -export let a1328 = 1328; -export let a1329 = 1329; -export let a1330 = 1330; -export let a1331 = 1331; -export let a1332 = 1332; -export let a1333 = 1333; -export let a1334 = 1334; -export let a1335 = 1335; -export let a1336 = 1336; -export let a1337 = 1337; -export let a1338 = 1338; -export let a1339 = 1339; -export let a1340 = 1340; -export let a1341 = 1341; -export let a1342 = 1342; -export let a1343 = 1343; -export let a1344 = 1344; -export let a1345 = 1345; -export let a1346 = 1346; -export let a1347 = 1347; -export let a1348 = 1348; -export let a1349 = 1349; -export let a1350 = 1350; -export let a1351 = 1351; -export let a1352 = 1352; -export let a1353 = 1353; -export let a1354 = 1354; -export let a1355 = 1355; -export let a1356 = 1356; -export let a1357 = 1357; -export let a1358 = 1358; -export let a1359 = 1359; -export let a1360 = 1360; -export let a1361 = 1361; -export let a1362 = 1362; -export let a1363 = 1363; -export let a1364 = 1364; -export let a1365 = 1365; -export let a1366 = 1366; -export let a1367 = 1367; -export let a1368 = 1368; -export let a1369 = 1369; -export let a1370 = 1370; -export let a1371 = 1371; -export let a1372 = 1372; -export let a1373 = 1373; -export let a1374 = 1374; -export let a1375 = 1375; -export let a1376 = 1376; -export let a1377 = 1377; -export let a1378 = 1378; -export let a1379 = 1379; -export let a1380 = 1380; -export let a1381 = 1381; -export let a1382 = 1382; -export let a1383 = 1383; -export let a1384 = 1384; -export let a1385 = 1385; -export let a1386 = 1386; -export let a1387 = 1387; -export let a1388 = 1388; -export let a1389 = 1389; -export let a1390 = 1390; -export let a1391 = 1391; -export let a1392 = 1392; -export let a1393 = 1393; -export let a1394 = 1394; -export let a1395 = 1395; -export let a1396 = 1396; -export let a1397 = 1397; -export let a1398 = 1398; -export let a1399 = 1399; -export let a1400 = 1400; -export let a1401 = 1401; -export let a1402 = 1402; -export let a1403 = 1403; -export let a1404 = 1404; -export let a1405 = 1405; -export let a1406 = 1406; -export let a1407 = 1407; -export let a1408 = 1408; -export let a1409 = 1409; -export let a1410 = 1410; -export let a1411 = 1411; -export let a1412 = 1412; -export let a1413 = 1413; -export let a1414 = 1414; -export let a1415 = 1415; -export let a1416 = 1416; -export let a1417 = 1417; -export let a1418 = 1418; -export let a1419 = 1419; -export let a1420 = 1420; -export let a1421 = 1421; -export let a1422 = 1422; -export let a1423 = 1423; -export let a1424 = 1424; -export let a1425 = 1425; -export let a1426 = 1426; -export let a1427 = 1427; -export let a1428 = 1428; -export let a1429 = 1429; -export let a1430 = 1430; -export let a1431 = 1431; -export let a1432 = 1432; -export let a1433 = 1433; -export let a1434 = 1434; -export let a1435 = 1435; -export let a1436 = 1436; -export let a1437 = 1437; -export let a1438 = 1438; -export let a1439 = 1439; -export let a1440 = 1440; -export let a1441 = 1441; -export let a1442 = 1442; -export let a1443 = 1443; -export let a1444 = 1444; -export let a1445 = 1445; -export let a1446 = 1446; -export let a1447 = 1447; -export let a1448 = 1448; -export let a1449 = 1449; -export let a1450 = 1450; -export let a1451 = 1451; -export let a1452 = 1452; -export let a1453 = 1453; -export let a1454 = 1454; -export let a1455 = 1455; -export let a1456 = 1456; -export let a1457 = 1457; -export let a1458 = 1458; -export let a1459 = 1459; -export let a1460 = 1460; -export let a1461 = 1461; -export let a1462 = 1462; -export let a1463 = 1463; -export let a1464 = 1464; -export let a1465 = 1465; -export let a1466 = 1466; -export let a1467 = 1467; -export let a1468 = 1468; -export let a1469 = 1469; -export let a1470 = 1470; -export let a1471 = 1471; -export let a1472 = 1472; -export let a1473 = 1473; -export let a1474 = 1474; -export let a1475 = 1475; -export let a1476 = 1476; -export let a1477 = 1477; -export let a1478 = 1478; -export let a1479 = 1479; -export let a1480 = 1480; -export let a1481 = 1481; -export let a1482 = 1482; -export let a1483 = 1483; -export let a1484 = 1484; -export let a1485 = 1485; -export let a1486 = 1486; -export let a1487 = 1487; -export let a1488 = 1488; -export let a1489 = 1489; -export let a1490 = 1490; -export let a1491 = 1491; -export let a1492 = 1492; -export let a1493 = 1493; -export let a1494 = 1494; -export let a1495 = 1495; -export let a1496 = 1496; -export let a1497 = 1497; -export let a1498 = 1498; -export let a1499 = 1499; -export let a1500 = 1500; -export let a1501 = 1501; -export let a1502 = 1502; -export let a1503 = 1503; -export let a1504 = 1504; -export let a1505 = 1505; -export let a1506 = 1506; -export let a1507 = 1507; -export let a1508 = 1508; -export let a1509 = 1509; -export let a1510 = 1510; -export let a1511 = 1511; -export let a1512 = 1512; -export let a1513 = 1513; -export let a1514 = 1514; -export let a1515 = 1515; -export let a1516 = 1516; -export let a1517 = 1517; -export let a1518 = 1518; -export let a1519 = 1519; -export let a1520 = 1520; -export let a1521 = 1521; -export let a1522 = 1522; -export let a1523 = 1523; -export let a1524 = 1524; -export let a1525 = 1525; -export let a1526 = 1526; -export let a1527 = 1527; -export let a1528 = 1528; -export let a1529 = 1529; -export let a1530 = 1530; -export let a1531 = 1531; -export let a1532 = 1532; -export let a1533 = 1533; -export let a1534 = 1534; -export let a1535 = 1535; -export let a1536 = 1536; -export let a1537 = 1537; -export let a1538 = 1538; -export let a1539 = 1539; -export let a1540 = 1540; -export let a1541 = 1541; -export let a1542 = 1542; -export let a1543 = 1543; -export let a1544 = 1544; -export let a1545 = 1545; -export let a1546 = 1546; -export let a1547 = 1547; -export let a1548 = 1548; -export let a1549 = 1549; -export let a1550 = 1550; -export let a1551 = 1551; -export let a1552 = 1552; -export let a1553 = 1553; -export let a1554 = 1554; -export let a1555 = 1555; -export let a1556 = 1556; -export let a1557 = 1557; -export let a1558 = 1558; -export let a1559 = 1559; -export let a1560 = 1560; -export let a1561 = 1561; -export let a1562 = 1562; -export let a1563 = 1563; -export let a1564 = 1564; -export let a1565 = 1565; -export let a1566 = 1566; -export let a1567 = 1567; -export let a1568 = 1568; -export let a1569 = 1569; -export let a1570 = 1570; -export let a1571 = 1571; -export let a1572 = 1572; -export let a1573 = 1573; -export let a1574 = 1574; -export let a1575 = 1575; -export let a1576 = 1576; -export let a1577 = 1577; -export let a1578 = 1578; -export let a1579 = 1579; -export let a1580 = 1580; -export let a1581 = 1581; -export let a1582 = 1582; -export let a1583 = 1583; -export let a1584 = 1584; -export let a1585 = 1585; -export let a1586 = 1586; -export let a1587 = 1587; -export let a1588 = 1588; -export let a1589 = 1589; -export let a1590 = 1590; -export let a1591 = 1591; -export let a1592 = 1592; -export let a1593 = 1593; -export let a1594 = 1594; -export let a1595 = 1595; -export let a1596 = 1596; -export let a1597 = 1597; -export let a1598 = 1598; -export let a1599 = 1599; -export let a1600 = 1600; -export let a1601 = 1601; -export let a1602 = 1602; -export let a1603 = 1603; -export let a1604 = 1604; -export let a1605 = 1605; -export let a1606 = 1606; -export let a1607 = 1607; -export let a1608 = 1608; -export let a1609 = 1609; -export let a1610 = 1610; -export let a1611 = 1611; -export let a1612 = 1612; -export let a1613 = 1613; -export let a1614 = 1614; -export let a1615 = 1615; -export let a1616 = 1616; -export let a1617 = 1617; -export let a1618 = 1618; -export let a1619 = 1619; -export let a1620 = 1620; -export let a1621 = 1621; -export let a1622 = 1622; -export let a1623 = 1623; -export let a1624 = 1624; -export let a1625 = 1625; -export let a1626 = 1626; -export let a1627 = 1627; -export let a1628 = 1628; -export let a1629 = 1629; -export let a1630 = 1630; -export let a1631 = 1631; -export let a1632 = 1632; -export let a1633 = 1633; -export let a1634 = 1634; -export let a1635 = 1635; -export let a1636 = 1636; -export let a1637 = 1637; -export let a1638 = 1638; -export let a1639 = 1639; -export let a1640 = 1640; -export let a1641 = 1641; -export let a1642 = 1642; -export let a1643 = 1643; -export let a1644 = 1644; -export let a1645 = 1645; -export let a1646 = 1646; -export let a1647 = 1647; -export let a1648 = 1648; -export let a1649 = 1649; -export let a1650 = 1650; -export let a1651 = 1651; -export let a1652 = 1652; -export let a1653 = 1653; -export let a1654 = 1654; -export let a1655 = 1655; -export let a1656 = 1656; -export let a1657 = 1657; -export let a1658 = 1658; -export let a1659 = 1659; -export let a1660 = 1660; -export let a1661 = 1661; -export let a1662 = 1662; -export let a1663 = 1663; -export let a1664 = 1664; -export let a1665 = 1665; -export let a1666 = 1666; -export let a1667 = 1667; -export let a1668 = 1668; -export let a1669 = 1669; -export let a1670 = 1670; -export let a1671 = 1671; -export let a1672 = 1672; -export let a1673 = 1673; -export let a1674 = 1674; -export let a1675 = 1675; -export let a1676 = 1676; -export let a1677 = 1677; -export let a1678 = 1678; -export let a1679 = 1679; -export let a1680 = 1680; -export let a1681 = 1681; -export let a1682 = 1682; -export let a1683 = 1683; -export let a1684 = 1684; -export let a1685 = 1685; -export let a1686 = 1686; -export let a1687 = 1687; -export let a1688 = 1688; -export let a1689 = 1689; -export let a1690 = 1690; -export let a1691 = 1691; -export let a1692 = 1692; -export let a1693 = 1693; -export let a1694 = 1694; -export let a1695 = 1695; -export let a1696 = 1696; -export let a1697 = 1697; -export let a1698 = 1698; -export let a1699 = 1699; -export let a1700 = 1700; -export let a1701 = 1701; -export let a1702 = 1702; -export let a1703 = 1703; -export let a1704 = 1704; -export let a1705 = 1705; -export let a1706 = 1706; -export let a1707 = 1707; -export let a1708 = 1708; -export let a1709 = 1709; -export let a1710 = 1710; -export let a1711 = 1711; -export let a1712 = 1712; -export let a1713 = 1713; -export let a1714 = 1714; -export let a1715 = 1715; -export let a1716 = 1716; -export let a1717 = 1717; -export let a1718 = 1718; -export let a1719 = 1719; -export let a1720 = 1720; -export let a1721 = 1721; -export let a1722 = 1722; -export let a1723 = 1723; -export let a1724 = 1724; -export let a1725 = 1725; -export let a1726 = 1726; -export let a1727 = 1727; -export let a1728 = 1728; -export let a1729 = 1729; -export let a1730 = 1730; -export let a1731 = 1731; -export let a1732 = 1732; -export let a1733 = 1733; -export let a1734 = 1734; -export let a1735 = 1735; -export let a1736 = 1736; -export let a1737 = 1737; -export let a1738 = 1738; -export let a1739 = 1739; -export let a1740 = 1740; -export let a1741 = 1741; -export let a1742 = 1742; -export let a1743 = 1743; -export let a1744 = 1744; -export let a1745 = 1745; -export let a1746 = 1746; -export let a1747 = 1747; -export let a1748 = 1748; -export let a1749 = 1749; -export let a1750 = 1750; -export let a1751 = 1751; -export let a1752 = 1752; -export let a1753 = 1753; -export let a1754 = 1754; -export let a1755 = 1755; -export let a1756 = 1756; -export let a1757 = 1757; -export let a1758 = 1758; -export let a1759 = 1759; -export let a1760 = 1760; -export let a1761 = 1761; -export let a1762 = 1762; -export let a1763 = 1763; -export let a1764 = 1764; -export let a1765 = 1765; -export let a1766 = 1766; -export let a1767 = 1767; -export let a1768 = 1768; -export let a1769 = 1769; -export let a1770 = 1770; -export let a1771 = 1771; -export let a1772 = 1772; -export let a1773 = 1773; -export let a1774 = 1774; -export let a1775 = 1775; -export let a1776 = 1776; -export let a1777 = 1777; -export let a1778 = 1778; -export let a1779 = 1779; -export let a1780 = 1780; -export let a1781 = 1781; -export let a1782 = 1782; -export let a1783 = 1783; -export let a1784 = 1784; -export let a1785 = 1785; -export let a1786 = 1786; -export let a1787 = 1787; -export let a1788 = 1788; -export let a1789 = 1789; -export let a1790 = 1790; -export let a1791 = 1791; -export let a1792 = 1792; -export let a1793 = 1793; -export let a1794 = 1794; -export let a1795 = 1795; -export let a1796 = 1796; -export let a1797 = 1797; -export let a1798 = 1798; -export let a1799 = 1799; -export let a1800 = 1800; -export let a1801 = 1801; -export let a1802 = 1802; -export let a1803 = 1803; -export let a1804 = 1804; -export let a1805 = 1805; -export let a1806 = 1806; -export let a1807 = 1807; -export let a1808 = 1808; -export let a1809 = 1809; -export let a1810 = 1810; -export let a1811 = 1811; -export let a1812 = 1812; -export let a1813 = 1813; -export let a1814 = 1814; -export let a1815 = 1815; -export let a1816 = 1816; -export let a1817 = 1817; -export let a1818 = 1818; -export let a1819 = 1819; -export let a1820 = 1820; -export let a1821 = 1821; -export let a1822 = 1822; -export let a1823 = 1823; -export let a1824 = 1824; -export let a1825 = 1825; -export let a1826 = 1826; -export let a1827 = 1827; -export let a1828 = 1828; -export let a1829 = 1829; -export let a1830 = 1830; -export let a1831 = 1831; -export let a1832 = 1832; -export let a1833 = 1833; -export let a1834 = 1834; -export let a1835 = 1835; -export let a1836 = 1836; -export let a1837 = 1837; -export let a1838 = 1838; -export let a1839 = 1839; -export let a1840 = 1840; -export let a1841 = 1841; -export let a1842 = 1842; -export let a1843 = 1843; -export let a1844 = 1844; -export let a1845 = 1845; -export let a1846 = 1846; -export let a1847 = 1847; -export let a1848 = 1848; -export let a1849 = 1849; -export let a1850 = 1850; -export let a1851 = 1851; -export let a1852 = 1852; -export let a1853 = 1853; -export let a1854 = 1854; -export let a1855 = 1855; -export let a1856 = 1856; -export let a1857 = 1857; -export let a1858 = 1858; -export let a1859 = 1859; -export let a1860 = 1860; -export let a1861 = 1861; -export let a1862 = 1862; -export let a1863 = 1863; -export let a1864 = 1864; -export let a1865 = 1865; -export let a1866 = 1866; -export let a1867 = 1867; -export let a1868 = 1868; -export let a1869 = 1869; -export let a1870 = 1870; -export let a1871 = 1871; -export let a1872 = 1872; -export let a1873 = 1873; -export let a1874 = 1874; -export let a1875 = 1875; -export let a1876 = 1876; -export let a1877 = 1877; -export let a1878 = 1878; -export let a1879 = 1879; -export let a1880 = 1880; -export let a1881 = 1881; -export let a1882 = 1882; -export let a1883 = 1883; -export let a1884 = 1884; -export let a1885 = 1885; -export let a1886 = 1886; -export let a1887 = 1887; -export let a1888 = 1888; -export let a1889 = 1889; -export let a1890 = 1890; -export let a1891 = 1891; -export let a1892 = 1892; -export let a1893 = 1893; -export let a1894 = 1894; -export let a1895 = 1895; -export let a1896 = 1896; -export let a1897 = 1897; -export let a1898 = 1898; -export let a1899 = 1899; -export let a1900 = 1900; -export let a1901 = 1901; -export let a1902 = 1902; -export let a1903 = 1903; -export let a1904 = 1904; -export let a1905 = 1905; -export let a1906 = 1906; -export let a1907 = 1907; -export let a1908 = 1908; -export let a1909 = 1909; -export let a1910 = 1910; -export let a1911 = 1911; -export let a1912 = 1912; -export let a1913 = 1913; -export let a1914 = 1914; -export let a1915 = 1915; -export let a1916 = 1916; -export let a1917 = 1917; -export let a1918 = 1918; -export let a1919 = 1919; -export let a1920 = 1920; -export let a1921 = 1921; -export let a1922 = 1922; -export let a1923 = 1923; -export let a1924 = 1924; -export let a1925 = 1925; -export let a1926 = 1926; -export let a1927 = 1927; -export let a1928 = 1928; -export let a1929 = 1929; -export let a1930 = 1930; -export let a1931 = 1931; -export let a1932 = 1932; -export let a1933 = 1933; -export let a1934 = 1934; -export let a1935 = 1935; -export let a1936 = 1936; -export let a1937 = 1937; -export let a1938 = 1938; -export let a1939 = 1939; -export let a1940 = 1940; -export let a1941 = 1941; -export let a1942 = 1942; -export let a1943 = 1943; -export let a1944 = 1944; -export let a1945 = 1945; -export let a1946 = 1946; -export let a1947 = 1947; -export let a1948 = 1948; -export let a1949 = 1949; -export let a1950 = 1950; -export let a1951 = 1951; -export let a1952 = 1952; -export let a1953 = 1953; -export let a1954 = 1954; -export let a1955 = 1955; -export let a1956 = 1956; -export let a1957 = 1957; -export let a1958 = 1958; -export let a1959 = 1959; -export let a1960 = 1960; -export let a1961 = 1961; -export let a1962 = 1962; -export let a1963 = 1963; -export let a1964 = 1964; -export let a1965 = 1965; -export let a1966 = 1966; -export let a1967 = 1967; -export let a1968 = 1968; -export let a1969 = 1969; -export let a1970 = 1970; -export let a1971 = 1971; -export let a1972 = 1972; -export let a1973 = 1973; -export let a1974 = 1974; -export let a1975 = 1975; -export let a1976 = 1976; -export let a1977 = 1977; -export let a1978 = 1978; -export let a1979 = 1979; -export let a1980 = 1980; -export let a1981 = 1981; -export let a1982 = 1982; -export let a1983 = 1983; -export let a1984 = 1984; -export let a1985 = 1985; -export let a1986 = 1986; -export let a1987 = 1987; -export let a1988 = 1988; -export let a1989 = 1989; -export let a1990 = 1990; -export let a1991 = 1991; -export let a1992 = 1992; -export let a1993 = 1993; -export let a1994 = 1994; -export let a1995 = 1995; -export let a1996 = 1996; -export let a1997 = 1997; -export let a1998 = 1998; -export let a1999 = 1999; -export let a2000 = 2000; -export let a2001 = 2001; -export let a2002 = 2002; -export let a2003 = 2003; -export let a2004 = 2004; -export let a2005 = 2005; -export let a2006 = 2006; -export let a2007 = 2007; -export let a2008 = 2008; -export let a2009 = 2009; -export let a2010 = 2010; -export let a2011 = 2011; -export let a2012 = 2012; -export let a2013 = 2013; -export let a2014 = 2014; -export let a2015 = 2015; -export let a2016 = 2016; -export let a2017 = 2017; -export let a2018 = 2018; -export let a2019 = 2019; -export let a2020 = 2020; -export let a2021 = 2021; -export let a2022 = 2022; -export let a2023 = 2023; -export let a2024 = 2024; -export let a2025 = 2025; -export let a2026 = 2026; -export let a2027 = 2027; -export let a2028 = 2028; -export let a2029 = 2029; -export let a2030 = 2030; -export let a2031 = 2031; -export let a2032 = 2032; -export let a2033 = 2033; -export let a2034 = 2034; -export let a2035 = 2035; -export let a2036 = 2036; -export let a2037 = 2037; -export let a2038 = 2038; -export let a2039 = 2039; -export let a2040 = 2040; -export let a2041 = 2041; -export let a2042 = 2042; -export let a2043 = 2043; -export let a2044 = 2044; -export let a2045 = 2045; -export let a2046 = 2046; -export let a2047 = 2047; -export let a2048 = 2048; -export let a2049 = 2049; -export let a2050 = 2050; -export let a2051 = 2051; -export let a2052 = 2052; -export let a2053 = 2053; -export let a2054 = 2054; -export let a2055 = 2055; -export let a2056 = 2056; -export let a2057 = 2057; -export let a2058 = 2058; -export let a2059 = 2059; -export let a2060 = 2060; -export let a2061 = 2061; -export let a2062 = 2062; -export let a2063 = 2063; -export let a2064 = 2064; -export let a2065 = 2065; -export let a2066 = 2066; -export let a2067 = 2067; -export let a2068 = 2068; -export let a2069 = 2069; -export let a2070 = 2070; -export let a2071 = 2071; -export let a2072 = 2072; -export let a2073 = 2073; -export let a2074 = 2074; -export let a2075 = 2075; -export let a2076 = 2076; -export let a2077 = 2077; -export let a2078 = 2078; -export let a2079 = 2079; -export let a2080 = 2080; -export let a2081 = 2081; -export let a2082 = 2082; -export let a2083 = 2083; -export let a2084 = 2084; -export let a2085 = 2085; -export let a2086 = 2086; -export let a2087 = 2087; -export let a2088 = 2088; -export let a2089 = 2089; -export let a2090 = 2090; -export let a2091 = 2091; -export let a2092 = 2092; -export let a2093 = 2093; -export let a2094 = 2094; -export let a2095 = 2095; -export let a2096 = 2096; -export let a2097 = 2097; -export let a2098 = 2098; -export let a2099 = 2099; -export let a2100 = 2100; -export let a2101 = 2101; -export let a2102 = 2102; -export let a2103 = 2103; -export let a2104 = 2104; -export let a2105 = 2105; -export let a2106 = 2106; -export let a2107 = 2107; -export let a2108 = 2108; -export let a2109 = 2109; -export let a2110 = 2110; -export let a2111 = 2111; -export let a2112 = 2112; -export let a2113 = 2113; -export let a2114 = 2114; -export let a2115 = 2115; -export let a2116 = 2116; -export let a2117 = 2117; -export let a2118 = 2118; -export let a2119 = 2119; -export let a2120 = 2120; -export let a2121 = 2121; -export let a2122 = 2122; -export let a2123 = 2123; -export let a2124 = 2124; -export let a2125 = 2125; -export let a2126 = 2126; -export let a2127 = 2127; -export let a2128 = 2128; -export let a2129 = 2129; -export let a2130 = 2130; -export let a2131 = 2131; -export let a2132 = 2132; -export let a2133 = 2133; -export let a2134 = 2134; -export let a2135 = 2135; -export let a2136 = 2136; -export let a2137 = 2137; -export let a2138 = 2138; -export let a2139 = 2139; -export let a2140 = 2140; -export let a2141 = 2141; -export let a2142 = 2142; -export let a2143 = 2143; -export let a2144 = 2144; -export let a2145 = 2145; -export let a2146 = 2146; -export let a2147 = 2147; -export let a2148 = 2148; -export let a2149 = 2149; -export let a2150 = 2150; -export let a2151 = 2151; -export let a2152 = 2152; -export let a2153 = 2153; -export let a2154 = 2154; -export let a2155 = 2155; -export let a2156 = 2156; -export let a2157 = 2157; -export let a2158 = 2158; -export let a2159 = 2159; -export let a2160 = 2160; -export let a2161 = 2161; -export let a2162 = 2162; -export let a2163 = 2163; -export let a2164 = 2164; -export let a2165 = 2165; -export let a2166 = 2166; -export let a2167 = 2167; -export let a2168 = 2168; -export let a2169 = 2169; -export let a2170 = 2170; -export let a2171 = 2171; -export let a2172 = 2172; -export let a2173 = 2173; -export let a2174 = 2174; -export let a2175 = 2175; -export let a2176 = 2176; -export let a2177 = 2177; -export let a2178 = 2178; -export let a2179 = 2179; -export let a2180 = 2180; -export let a2181 = 2181; -export let a2182 = 2182; -export let a2183 = 2183; -export let a2184 = 2184; -export let a2185 = 2185; -export let a2186 = 2186; -export let a2187 = 2187; -export let a2188 = 2188; -export let a2189 = 2189; -export let a2190 = 2190; -export let a2191 = 2191; -export let a2192 = 2192; -export let a2193 = 2193; -export let a2194 = 2194; -export let a2195 = 2195; -export let a2196 = 2196; -export let a2197 = 2197; -export let a2198 = 2198; -export let a2199 = 2199; diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-large2.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-large2.js deleted file mode 100644 index 2c03557197a..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/modules-skip-large2.js +++ /dev/null @@ -1,1104 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export let a0 = 0; -export let a1 = 1; -export let a2 = 2; -export let a3 = 3; -export let a4 = 4; -export let a5 = 5; -export let a6 = 6; -export let a7 = 7; -export let a8 = 8; -export let a9 = 9; -export let a10 = 10; -export let a11 = 11; -export let a12 = 12; -export let a13 = 13; -export let a14 = 14; -export let a15 = 15; -export let a16 = 16; -export let a17 = 17; -export let a18 = 18; -export let a19 = 19; -export let a20 = 20; -export let a21 = 21; -export let a22 = 22; -export let a23 = 23; -export let a24 = 24; -export let a25 = 25; -export let a26 = 26; -export let a27 = 27; -export let a28 = 28; -export let a29 = 29; -export let a30 = 30; -export let a31 = 31; -export let a32 = 32; -export let a33 = 33; -export let a34 = 34; -export let a35 = 35; -export let a36 = 36; -export let a37 = 37; -export let a38 = 38; -export let a39 = 39; -export let a40 = 40; -export let a41 = 41; -export let a42 = 42; -export let a43 = 43; -export let a44 = 44; -export let a45 = 45; -export let a46 = 46; -export let a47 = 47; -export let a48 = 48; -export let a49 = 49; -export let a50 = 50; -export let a51 = 51; -export let a52 = 52; -export let a53 = 53; -export let a54 = 54; -export let a55 = 55; -export let a56 = 56; -export let a57 = 57; -export let a58 = 58; -export let a59 = 59; -export let a60 = 60; -export let a61 = 61; -export let a62 = 62; -export let a63 = 63; -export let a64 = 64; -export let a65 = 65; -export let a66 = 66; -export let a67 = 67; -export let a68 = 68; -export let a69 = 69; -export let a70 = 70; -export let a71 = 71; -export let a72 = 72; -export let a73 = 73; -export let a74 = 74; -export let a75 = 75; -export let a76 = 76; -export let a77 = 77; -export let a78 = 78; -export let a79 = 79; -export let a80 = 80; -export let a81 = 81; -export let a82 = 82; -export let a83 = 83; -export let a84 = 84; -export let a85 = 85; -export let a86 = 86; -export let a87 = 87; -export let a88 = 88; -export let a89 = 89; -export let a90 = 90; -export let a91 = 91; -export let a92 = 92; -export let a93 = 93; -export let a94 = 94; -export let a95 = 95; -export let a96 = 96; -export let a97 = 97; -export let a98 = 98; -export let a99 = 99; -export let a100 = 100; -export let a101 = 101; -export let a102 = 102; -export let a103 = 103; -export let a104 = 104; -export let a105 = 105; -export let a106 = 106; -export let a107 = 107; -export let a108 = 108; -export let a109 = 109; -export let a110 = 110; -export let a111 = 111; -export let a112 = 112; -export let a113 = 113; -export let a114 = 114; -export let a115 = 115; -export let a116 = 116; -export let a117 = 117; -export let a118 = 118; -export let a119 = 119; -export let a120 = 120; -export let a121 = 121; -export let a122 = 122; -export let a123 = 123; -export let a124 = 124; -export let a125 = 125; -export let a126 = 126; -export let a127 = 127; -export let a128 = 128; -export let a129 = 129; -export let a130 = 130; -export let a131 = 131; -export let a132 = 132; -export let a133 = 133; -export let a134 = 134; -export let a135 = 135; -export let a136 = 136; -export let a137 = 137; -export let a138 = 138; -export let a139 = 139; -export let a140 = 140; -export let a141 = 141; -export let a142 = 142; -export let a143 = 143; -export let a144 = 144; -export let a145 = 145; -export let a146 = 146; -export let a147 = 147; -export let a148 = 148; -export let a149 = 149; -export let a150 = 150; -export let a151 = 151; -export let a152 = 152; -export let a153 = 153; -export let a154 = 154; -export let a155 = 155; -export let a156 = 156; -export let a157 = 157; -export let a158 = 158; -export let a159 = 159; -export let a160 = 160; -export let a161 = 161; -export let a162 = 162; -export let a163 = 163; -export let a164 = 164; -export let a165 = 165; -export let a166 = 166; -export let a167 = 167; -export let a168 = 168; -export let a169 = 169; -export let a170 = 170; -export let a171 = 171; -export let a172 = 172; -export let a173 = 173; -export let a174 = 174; -export let a175 = 175; -export let a176 = 176; -export let a177 = 177; -export let a178 = 178; -export let a179 = 179; -export let a180 = 180; -export let a181 = 181; -export let a182 = 182; -export let a183 = 183; -export let a184 = 184; -export let a185 = 185; -export let a186 = 186; -export let a187 = 187; -export let a188 = 188; -export let a189 = 189; -export let a190 = 190; -export let a191 = 191; -export let a192 = 192; -export let a193 = 193; -export let a194 = 194; -export let a195 = 195; -export let a196 = 196; -export let a197 = 197; -export let a198 = 198; -export let a199 = 199; -export let a200 = 200; -export let a201 = 201; -export let a202 = 202; -export let a203 = 203; -export let a204 = 204; -export let a205 = 205; -export let a206 = 206; -export let a207 = 207; -export let a208 = 208; -export let a209 = 209; -export let a210 = 210; -export let a211 = 211; -export let a212 = 212; -export let a213 = 213; -export let a214 = 214; -export let a215 = 215; -export let a216 = 216; -export let a217 = 217; -export let a218 = 218; -export let a219 = 219; -export let a220 = 220; -export let a221 = 221; -export let a222 = 222; -export let a223 = 223; -export let a224 = 224; -export let a225 = 225; -export let a226 = 226; -export let a227 = 227; -export let a228 = 228; -export let a229 = 229; -export let a230 = 230; -export let a231 = 231; -export let a232 = 232; -export let a233 = 233; -export let a234 = 234; -export let a235 = 235; -export let a236 = 236; -export let a237 = 237; -export let a238 = 238; -export let a239 = 239; -export let a240 = 240; -export let a241 = 241; -export let a242 = 242; -export let a243 = 243; -export let a244 = 244; -export let a245 = 245; -export let a246 = 246; -export let a247 = 247; -export let a248 = 248; -export let a249 = 249; -export let a250 = 250; -export let a251 = 251; -export let a252 = 252; -export let a253 = 253; -export let a254 = 254; -export let a255 = 255; -export let a256 = 256; -export let a257 = 257; -export let a258 = 258; -export let a259 = 259; -export let a260 = 260; -export let a261 = 261; -export let a262 = 262; -export let a263 = 263; -export let a264 = 264; -export let a265 = 265; -export let a266 = 266; -export let a267 = 267; -export let a268 = 268; -export let a269 = 269; -export let a270 = 270; -export let a271 = 271; -export let a272 = 272; -export let a273 = 273; -export let a274 = 274; -export let a275 = 275; -export let a276 = 276; -export let a277 = 277; -export let a278 = 278; -export let a279 = 279; -export let a280 = 280; -export let a281 = 281; -export let a282 = 282; -export let a283 = 283; -export let a284 = 284; -export let a285 = 285; -export let a286 = 286; -export let a287 = 287; -export let a288 = 288; -export let a289 = 289; -export let a290 = 290; -export let a291 = 291; -export let a292 = 292; -export let a293 = 293; -export let a294 = 294; -export let a295 = 295; -export let a296 = 296; -export let a297 = 297; -export let a298 = 298; -export let a299 = 299; -export let a300 = 300; -export let a301 = 301; -export let a302 = 302; -export let a303 = 303; -export let a304 = 304; -export let a305 = 305; -export let a306 = 306; -export let a307 = 307; -export let a308 = 308; -export let a309 = 309; -export let a310 = 310; -export let a311 = 311; -export let a312 = 312; -export let a313 = 313; -export let a314 = 314; -export let a315 = 315; -export let a316 = 316; -export let a317 = 317; -export let a318 = 318; -export let a319 = 319; -export let a320 = 320; -export let a321 = 321; -export let a322 = 322; -export let a323 = 323; -export let a324 = 324; -export let a325 = 325; -export let a326 = 326; -export let a327 = 327; -export let a328 = 328; -export let a329 = 329; -export let a330 = 330; -export let a331 = 331; -export let a332 = 332; -export let a333 = 333; -export let a334 = 334; -export let a335 = 335; -export let a336 = 336; -export let a337 = 337; -export let a338 = 338; -export let a339 = 339; -export let a340 = 340; -export let a341 = 341; -export let a342 = 342; -export let a343 = 343; -export let a344 = 344; -export let a345 = 345; -export let a346 = 346; -export let a347 = 347; -export let a348 = 348; -export let a349 = 349; -export let a350 = 350; -export let a351 = 351; -export let a352 = 352; -export let a353 = 353; -export let a354 = 354; -export let a355 = 355; -export let a356 = 356; -export let a357 = 357; -export let a358 = 358; -export let a359 = 359; -export let a360 = 360; -export let a361 = 361; -export let a362 = 362; -export let a363 = 363; -export let a364 = 364; -export let a365 = 365; -export let a366 = 366; -export let a367 = 367; -export let a368 = 368; -export let a369 = 369; -export let a370 = 370; -export let a371 = 371; -export let a372 = 372; -export let a373 = 373; -export let a374 = 374; -export let a375 = 375; -export let a376 = 376; -export let a377 = 377; -export let a378 = 378; -export let a379 = 379; -export let a380 = 380; -export let a381 = 381; -export let a382 = 382; -export let a383 = 383; -export let a384 = 384; -export let a385 = 385; -export let a386 = 386; -export let a387 = 387; -export let a388 = 388; -export let a389 = 389; -export let a390 = 390; -export let a391 = 391; -export let a392 = 392; -export let a393 = 393; -export let a394 = 394; -export let a395 = 395; -export let a396 = 396; -export let a397 = 397; -export let a398 = 398; -export let a399 = 399; -export let a400 = 400; -export let a401 = 401; -export let a402 = 402; -export let a403 = 403; -export let a404 = 404; -export let a405 = 405; -export let a406 = 406; -export let a407 = 407; -export let a408 = 408; -export let a409 = 409; -export let a410 = 410; -export let a411 = 411; -export let a412 = 412; -export let a413 = 413; -export let a414 = 414; -export let a415 = 415; -export let a416 = 416; -export let a417 = 417; -export let a418 = 418; -export let a419 = 419; -export let a420 = 420; -export let a421 = 421; -export let a422 = 422; -export let a423 = 423; -export let a424 = 424; -export let a425 = 425; -export let a426 = 426; -export let a427 = 427; -export let a428 = 428; -export let a429 = 429; -export let a430 = 430; -export let a431 = 431; -export let a432 = 432; -export let a433 = 433; -export let a434 = 434; -export let a435 = 435; -export let a436 = 436; -export let a437 = 437; -export let a438 = 438; -export let a439 = 439; -export let a440 = 440; -export let a441 = 441; -export let a442 = 442; -export let a443 = 443; -export let a444 = 444; -export let a445 = 445; -export let a446 = 446; -export let a447 = 447; -export let a448 = 448; -export let a449 = 449; -export let a450 = 450; -export let a451 = 451; -export let a452 = 452; -export let a453 = 453; -export let a454 = 454; -export let a455 = 455; -export let a456 = 456; -export let a457 = 457; -export let a458 = 458; -export let a459 = 459; -export let a460 = 460; -export let a461 = 461; -export let a462 = 462; -export let a463 = 463; -export let a464 = 464; -export let a465 = 465; -export let a466 = 466; -export let a467 = 467; -export let a468 = 468; -export let a469 = 469; -export let a470 = 470; -export let a471 = 471; -export let a472 = 472; -export let a473 = 473; -export let a474 = 474; -export let a475 = 475; -export let a476 = 476; -export let a477 = 477; -export let a478 = 478; -export let a479 = 479; -export let a480 = 480; -export let a481 = 481; -export let a482 = 482; -export let a483 = 483; -export let a484 = 484; -export let a485 = 485; -export let a486 = 486; -export let a487 = 487; -export let a488 = 488; -export let a489 = 489; -export let a490 = 490; -export let a491 = 491; -export let a492 = 492; -export let a493 = 493; -export let a494 = 494; -export let a495 = 495; -export let a496 = 496; -export let a497 = 497; -export let a498 = 498; -export let a499 = 499; -export let a500 = 500; -export let a501 = 501; -export let a502 = 502; -export let a503 = 503; -export let a504 = 504; -export let a505 = 505; -export let a506 = 506; -export let a507 = 507; -export let a508 = 508; -export let a509 = 509; -export let a510 = 510; -export let a511 = 511; -export let a512 = 512; -export let a513 = 513; -export let a514 = 514; -export let a515 = 515; -export let a516 = 516; -export let a517 = 517; -export let a518 = 518; -export let a519 = 519; -export let a520 = 520; -export let a521 = 521; -export let a522 = 522; -export let a523 = 523; -export let a524 = 524; -export let a525 = 525; -export let a526 = 526; -export let a527 = 527; -export let a528 = 528; -export let a529 = 529; -export let a530 = 530; -export let a531 = 531; -export let a532 = 532; -export let a533 = 533; -export let a534 = 534; -export let a535 = 535; -export let a536 = 536; -export let a537 = 537; -export let a538 = 538; -export let a539 = 539; -export let a540 = 540; -export let a541 = 541; -export let a542 = 542; -export let a543 = 543; -export let a544 = 544; -export let a545 = 545; -export let a546 = 546; -export let a547 = 547; -export let a548 = 548; -export let a549 = 549; -export let a550 = 550; -export let a551 = 551; -export let a552 = 552; -export let a553 = 553; -export let a554 = 554; -export let a555 = 555; -export let a556 = 556; -export let a557 = 557; -export let a558 = 558; -export let a559 = 559; -export let a560 = 560; -export let a561 = 561; -export let a562 = 562; -export let a563 = 563; -export let a564 = 564; -export let a565 = 565; -export let a566 = 566; -export let a567 = 567; -export let a568 = 568; -export let a569 = 569; -export let a570 = 570; -export let a571 = 571; -export let a572 = 572; -export let a573 = 573; -export let a574 = 574; -export let a575 = 575; -export let a576 = 576; -export let a577 = 577; -export let a578 = 578; -export let a579 = 579; -export let a580 = 580; -export let a581 = 581; -export let a582 = 582; -export let a583 = 583; -export let a584 = 584; -export let a585 = 585; -export let a586 = 586; -export let a587 = 587; -export let a588 = 588; -export let a589 = 589; -export let a590 = 590; -export let a591 = 591; -export let a592 = 592; -export let a593 = 593; -export let a594 = 594; -export let a595 = 595; -export let a596 = 596; -export let a597 = 597; -export let a598 = 598; -export let a599 = 599; -export let a600 = 600; -export let a601 = 601; -export let a602 = 602; -export let a603 = 603; -export let a604 = 604; -export let a605 = 605; -export let a606 = 606; -export let a607 = 607; -export let a608 = 608; -export let a609 = 609; -export let a610 = 610; -export let a611 = 611; -export let a612 = 612; -export let a613 = 613; -export let a614 = 614; -export let a615 = 615; -export let a616 = 616; -export let a617 = 617; -export let a618 = 618; -export let a619 = 619; -export let a620 = 620; -export let a621 = 621; -export let a622 = 622; -export let a623 = 623; -export let a624 = 624; -export let a625 = 625; -export let a626 = 626; -export let a627 = 627; -export let a628 = 628; -export let a629 = 629; -export let a630 = 630; -export let a631 = 631; -export let a632 = 632; -export let a633 = 633; -export let a634 = 634; -export let a635 = 635; -export let a636 = 636; -export let a637 = 637; -export let a638 = 638; -export let a639 = 639; -export let a640 = 640; -export let a641 = 641; -export let a642 = 642; -export let a643 = 643; -export let a644 = 644; -export let a645 = 645; -export let a646 = 646; -export let a647 = 647; -export let a648 = 648; -export let a649 = 649; -export let a650 = 650; -export let a651 = 651; -export let a652 = 652; -export let a653 = 653; -export let a654 = 654; -export let a655 = 655; -export let a656 = 656; -export let a657 = 657; -export let a658 = 658; -export let a659 = 659; -export let a660 = 660; -export let a661 = 661; -export let a662 = 662; -export let a663 = 663; -export let a664 = 664; -export let a665 = 665; -export let a666 = 666; -export let a667 = 667; -export let a668 = 668; -export let a669 = 669; -export let a670 = 670; -export let a671 = 671; -export let a672 = 672; -export let a673 = 673; -export let a674 = 674; -export let a675 = 675; -export let a676 = 676; -export let a677 = 677; -export let a678 = 678; -export let a679 = 679; -export let a680 = 680; -export let a681 = 681; -export let a682 = 682; -export let a683 = 683; -export let a684 = 684; -export let a685 = 685; -export let a686 = 686; -export let a687 = 687; -export let a688 = 688; -export let a689 = 689; -export let a690 = 690; -export let a691 = 691; -export let a692 = 692; -export let a693 = 693; -export let a694 = 694; -export let a695 = 695; -export let a696 = 696; -export let a697 = 697; -export let a698 = 698; -export let a699 = 699; -export let a700 = 700; -export let a701 = 701; -export let a702 = 702; -export let a703 = 703; -export let a704 = 704; -export let a705 = 705; -export let a706 = 706; -export let a707 = 707; -export let a708 = 708; -export let a709 = 709; -export let a710 = 710; -export let a711 = 711; -export let a712 = 712; -export let a713 = 713; -export let a714 = 714; -export let a715 = 715; -export let a716 = 716; -export let a717 = 717; -export let a718 = 718; -export let a719 = 719; -export let a720 = 720; -export let a721 = 721; -export let a722 = 722; -export let a723 = 723; -export let a724 = 724; -export let a725 = 725; -export let a726 = 726; -export let a727 = 727; -export let a728 = 728; -export let a729 = 729; -export let a730 = 730; -export let a731 = 731; -export let a732 = 732; -export let a733 = 733; -export let a734 = 734; -export let a735 = 735; -export let a736 = 736; -export let a737 = 737; -export let a738 = 738; -export let a739 = 739; -export let a740 = 740; -export let a741 = 741; -export let a742 = 742; -export let a743 = 743; -export let a744 = 744; -export let a745 = 745; -export let a746 = 746; -export let a747 = 747; -export let a748 = 748; -export let a749 = 749; -export let a750 = 750; -export let a751 = 751; -export let a752 = 752; -export let a753 = 753; -export let a754 = 754; -export let a755 = 755; -export let a756 = 756; -export let a757 = 757; -export let a758 = 758; -export let a759 = 759; -export let a760 = 760; -export let a761 = 761; -export let a762 = 762; -export let a763 = 763; -export let a764 = 764; -export let a765 = 765; -export let a766 = 766; -export let a767 = 767; -export let a768 = 768; -export let a769 = 769; -export let a770 = 770; -export let a771 = 771; -export let a772 = 772; -export let a773 = 773; -export let a774 = 774; -export let a775 = 775; -export let a776 = 776; -export let a777 = 777; -export let a778 = 778; -export let a779 = 779; -export let a780 = 780; -export let a781 = 781; -export let a782 = 782; -export let a783 = 783; -export let a784 = 784; -export let a785 = 785; -export let a786 = 786; -export let a787 = 787; -export let a788 = 788; -export let a789 = 789; -export let a790 = 790; -export let a791 = 791; -export let a792 = 792; -export let a793 = 793; -export let a794 = 794; -export let a795 = 795; -export let a796 = 796; -export let a797 = 797; -export let a798 = 798; -export let a799 = 799; -export let a800 = 800; -export let a801 = 801; -export let a802 = 802; -export let a803 = 803; -export let a804 = 804; -export let a805 = 805; -export let a806 = 806; -export let a807 = 807; -export let a808 = 808; -export let a809 = 809; -export let a810 = 810; -export let a811 = 811; -export let a812 = 812; -export let a813 = 813; -export let a814 = 814; -export let a815 = 815; -export let a816 = 816; -export let a817 = 817; -export let a818 = 818; -export let a819 = 819; -export let a820 = 820; -export let a821 = 821; -export let a822 = 822; -export let a823 = 823; -export let a824 = 824; -export let a825 = 825; -export let a826 = 826; -export let a827 = 827; -export let a828 = 828; -export let a829 = 829; -export let a830 = 830; -export let a831 = 831; -export let a832 = 832; -export let a833 = 833; -export let a834 = 834; -export let a835 = 835; -export let a836 = 836; -export let a837 = 837; -export let a838 = 838; -export let a839 = 839; -export let a840 = 840; -export let a841 = 841; -export let a842 = 842; -export let a843 = 843; -export let a844 = 844; -export let a845 = 845; -export let a846 = 846; -export let a847 = 847; -export let a848 = 848; -export let a849 = 849; -export let a850 = 850; -export let a851 = 851; -export let a852 = 852; -export let a853 = 853; -export let a854 = 854; -export let a855 = 855; -export let a856 = 856; -export let a857 = 857; -export let a858 = 858; -export let a859 = 859; -export let a860 = 860; -export let a861 = 861; -export let a862 = 862; -export let a863 = 863; -export let a864 = 864; -export let a865 = 865; -export let a866 = 866; -export let a867 = 867; -export let a868 = 868; -export let a869 = 869; -export let a870 = 870; -export let a871 = 871; -export let a872 = 872; -export let a873 = 873; -export let a874 = 874; -export let a875 = 875; -export let a876 = 876; -export let a877 = 877; -export let a878 = 878; -export let a879 = 879; -export let a880 = 880; -export let a881 = 881; -export let a882 = 882; -export let a883 = 883; -export let a884 = 884; -export let a885 = 885; -export let a886 = 886; -export let a887 = 887; -export let a888 = 888; -export let a889 = 889; -export let a890 = 890; -export let a891 = 891; -export let a892 = 892; -export let a893 = 893; -export let a894 = 894; -export let a895 = 895; -export let a896 = 896; -export let a897 = 897; -export let a898 = 898; -export let a899 = 899; -export let a900 = 900; -export let a901 = 901; -export let a902 = 902; -export let a903 = 903; -export let a904 = 904; -export let a905 = 905; -export let a906 = 906; -export let a907 = 907; -export let a908 = 908; -export let a909 = 909; -export let a910 = 910; -export let a911 = 911; -export let a912 = 912; -export let a913 = 913; -export let a914 = 914; -export let a915 = 915; -export let a916 = 916; -export let a917 = 917; -export let a918 = 918; -export let a919 = 919; -export let a920 = 920; -export let a921 = 921; -export let a922 = 922; -export let a923 = 923; -export let a924 = 924; -export let a925 = 925; -export let a926 = 926; -export let a927 = 927; -export let a928 = 928; -export let a929 = 929; -export let a930 = 930; -export let a931 = 931; -export let a932 = 932; -export let a933 = 933; -export let a934 = 934; -export let a935 = 935; -export let a936 = 936; -export let a937 = 937; -export let a938 = 938; -export let a939 = 939; -export let a940 = 940; -export let a941 = 941; -export let a942 = 942; -export let a943 = 943; -export let a944 = 944; -export let a945 = 945; -export let a946 = 946; -export let a947 = 947; -export let a948 = 948; -export let a949 = 949; -export let a950 = 950; -export let a951 = 951; -export let a952 = 952; -export let a953 = 953; -export let a954 = 954; -export let a955 = 955; -export let a956 = 956; -export let a957 = 957; -export let a958 = 958; -export let a959 = 959; -export let a960 = 960; -export let a961 = 961; -export let a962 = 962; -export let a963 = 963; -export let a964 = 964; -export let a965 = 965; -export let a966 = 966; -export let a967 = 967; -export let a968 = 968; -export let a969 = 969; -export let a970 = 970; -export let a971 = 971; -export let a972 = 972; -export let a973 = 973; -export let a974 = 974; -export let a975 = 975; -export let a976 = 976; -export let a977 = 977; -export let a978 = 978; -export let a979 = 979; -export let a980 = 980; -export let a981 = 981; -export let a982 = 982; -export let a983 = 983; -export let a984 = 984; -export let a985 = 985; -export let a986 = 986; -export let a987 = 987; -export let a988 = 988; -export let a989 = 989; -export let a990 = 990; -export let a991 = 991; -export let a992 = 992; -export let a993 = 993; -export let a994 = 994; -export let a995 = 995; -export let a996 = 996; -export let a997 = 997; -export let a998 = 998; -export let a999 = 999; -export let a1000 = 1000; -export let a1001 = 1001; -export let a1002 = 1002; -export let a1003 = 1003; -export let a1004 = 1004; -export let a1005 = 1005; -export let a1006 = 1006; -export let a1007 = 1007; -export let a1008 = 1008; -export let a1009 = 1009; -export let a1010 = 1010; -export let a1011 = 1011; -export let a1012 = 1012; -export let a1013 = 1013; -export let a1014 = 1014; -export let a1015 = 1015; -export let a1016 = 1016; -export let a1017 = 1017; -export let a1018 = 1018; -export let a1019 = 1019; -export let a1020 = 1020; -export let a1021 = 1021; -export let a1022 = 1022; -export let a1023 = 1023; -export let a1024 = 1024; -export let a1025 = 1025; -export let a1026 = 1026; -export let a1027 = 1027; -export let a1028 = 1028; -export let a1029 = 1029; -export let a1030 = 1030; -export let a1031 = 1031; -export let a1032 = 1032; -export let a1033 = 1033; -export let a1034 = 1034; -export let a1035 = 1035; -export let a1036 = 1036; -export let a1037 = 1037; -export let a1038 = 1038; -export let a1039 = 1039; -export let a1040 = 1040; -export let a1041 = 1041; -export let a1042 = 1042; -export let a1043 = 1043; -export let a1044 = 1044; -export let a1045 = 1045; -export let a1046 = 1046; -export let a1047 = 1047; -export let a1048 = 1048; -export let a1049 = 1049; -export let a1050 = 1050; -export let a1051 = 1051; -export let a1052 = 1052; -export let a1053 = 1053; -export let a1054 = 1054; -export let a1055 = 1055; -export let a1056 = 1056; -export let a1057 = 1057; -export let a1058 = 1058; -export let a1059 = 1059; -export let a1060 = 1060; -export let a1061 = 1061; -export let a1062 = 1062; -export let a1063 = 1063; -export let a1064 = 1064; -export let a1065 = 1065; -export let a1066 = 1066; -export let a1067 = 1067; -export let a1068 = 1068; -export let a1069 = 1069; -export let a1070 = 1070; -export let a1071 = 1071; -export let a1072 = 1072; -export let a1073 = 1073; -export let a1074 = 1074; -export let a1075 = 1075; -export let a1076 = 1076; -export let a1077 = 1077; -export let a1078 = 1078; -export let a1079 = 1079; -export let a1080 = 1080; -export let a1081 = 1081; -export let a1082 = 1082; -export let a1083 = 1083; -export let a1084 = 1084; -export let a1085 = 1085; -export let a1086 = 1086; -export let a1087 = 1087; -export let a1088 = 1088; -export let a1089 = 1089; -export let a1090 = 1090; -export let a1091 = 1091; -export let a1092 = 1092; -export let a1093 = 1093; -export let a1094 = 1094; -export let a1095 = 1095; -export let a1096 = 1096; -export let a1097 = 1097; -export let a1098 = 1098; -export let a1099 = 1099; diff --git a/implementation-contributed/v8/mjsunit/harmony/numeric-separator.js b/implementation-contributed/v8/mjsunit/harmony/numeric-separator.js deleted file mode 100644 index 0ea3ac8f8d0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/numeric-separator.js +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-numeric-separator - -{ - const basic = 1_0_0_0; - assertEquals(basic, 1000); -} -{ - const exponent = 1_0e+1; - assertEquals(exponent, 10e+1); -} -{ - const exponent2 = 1_0e+1_0; - assertEquals(exponent2, 10e+10); -} -{ - const hex = 0xF_F_FF; - assertEquals(hex, 0xFFFF); -} -{ - const octal = 0o7_7_7; - assertEquals(octal, 0o777); -} -{ - let exception = false; - try { - const code = `"use strict" const implicitOctal = 07_7_7`; - eval(code); - } catch(e) { - exception = true; - assertInstanceof(e, SyntaxError); - } - assertTrue(exception); -} - -{ - const binary = 0b0_1_0_1_0; - assertEquals(binary, 0b01010); -} -{ - const leadingZeros = 09_1_3; - assertEquals(leadingZeros, 0913); -} - -{ - const dot1 = 9_1.1_3; - assertEquals(dot1, 91.13); - - const dot2 = 1.1_3; - assertEquals(dot2, 1.13); - - const dot3 = 1_1.21; - assertEquals(dot3, 11.21); -} - -{ - const basic = Number('1_2_3'); - assertEquals(NaN, basic); - const exponent = Number('1_0e+1'); - assertEquals(NaN, exponent); - const exponent2 = Number('1_0e+1_0'); - assertEquals(NaN, exponent2); - const hex = Number('0xF_F_FF'); - assertEquals(NaN, hex); - const octal = Number('0o7_7_7'); - assertEquals(NaN, octal); - const binary = Number('0b0_1_0_1_0'); - assertEquals(NaN, binary); - const leadingZeros = Number('09_1_3'); - assertEquals(NaN, leadingZeros); - const dot1 = Number('9_1.1_3'); - assertEquals(NaN, dot1); - const dot2 = Number('1.1_3'); - assertEquals(NaN, dot2); - const dot3 = Number('1_1.21'); - assertEquals(NaN, dot3); -} - -{ - assertEquals(1, parseInt('1_2_3')); - assertEquals(0, parseInt('0_1_0_1_0')); - assertEquals(15, parseInt('0xF_F')); - assertEquals(10, parseInt('10e+1_0')); - assertEquals(0, parseInt('0o7_7_7')); - assertEquals(0, parseInt('0b1_0_1_0')); - assertEquals(9, parseInt('9_1.1_3')); - assertEquals(1, parseInt('1.1_3')); - assertEquals(1, parseInt('1_1.21')); - assertEquals(17, parseInt('017_123')); - - assertEquals(1, parseInt('1_2_3', 10)); - assertEquals(15, parseInt('0xF_F', 16)); - assertEquals(7, parseInt('7_7_7', 8)); - assertEquals(1, parseInt('1_0_1_0', 2)); -} - -assertThrows('1_0_0_0_', SyntaxError); -assertThrows('1e_1', SyntaxError); -assertThrows('1e+_1', SyntaxError); -assertThrows('1_e+1', SyntaxError); -assertThrows('1__0', SyntaxError); -assertThrows('0x_1', SyntaxError); -assertThrows('0x1__1', SyntaxError); -assertThrows('0x1_', SyntaxError); -assertThrows('0b_0101', SyntaxError); -assertThrows('0b11_', SyntaxError); -assertThrows('0b1__1', SyntaxError); -assertThrows('0o777_', SyntaxError); -assertThrows('0o_777', SyntaxError); -assertThrows('0o7__77', SyntaxError); -assertThrows('0777_', SyntaxError); -assertThrows('07__77', SyntaxError); -assertThrows('07_7_7', SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/harmony/object-fromentries.js b/implementation-contributed/v8/mjsunit/harmony/object-fromentries.js deleted file mode 100644 index 8bbd6317c6a..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/object-fromentries.js +++ /dev/null @@ -1,439 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-object-from-entries - -const fromEntries = Object.fromEntries; -const ObjectPrototype = Object.prototype; -const ObjectPrototypeHasOwnProperty = ObjectPrototype.hasOwnProperty; -function hasOwnProperty(O, Name) { - if (O === undefined || O === null) return false; - return ObjectPrototypeHasOwnProperty.call(O, Name); -} - -let test = { - methodExists() { - assertTrue(hasOwnProperty(Object, "fromEntries")); - assertEquals("function", typeof Object.fromEntries); - }, - - methodLength() { - assertEquals(1, Object.fromEntries.length); - }, - - methodName() { - assertEquals("fromEntries", Object.fromEntries.name); - }, - - methodPropertyDescriptor() { - let descriptor = Object.getOwnPropertyDescriptor(Object, "fromEntries"); - assertFalse(descriptor.enumerable); - assertTrue(descriptor.configurable); - assertTrue(descriptor.writable); - assertEquals(descriptor.value, Object.fromEntries); - }, - - exceptionIfNotCoercible() { - assertThrows(() => fromEntries(null), TypeError); - assertThrows(() => fromEntries(undefined), TypeError); - }, - - exceptionIfNotIterable() { - let nonIterable = [1, 2, 3, 4, 5]; - Object.defineProperty(nonIterable, Symbol.iterator, { value: undefined }); - assertThrows(() => fromEntries(nonIterable), TypeError); - }, - - exceptionIfGetIteratorThrows() { - let iterable = [1, 2, 3, 4, 5]; - class ThrewDuringGet {}; - Object.defineProperty(iterable, Symbol.iterator, { - get() { throw new ThrewDuringGet(); } - }); - assertThrows(() => fromEntries(iterable), ThrewDuringGet); - }, - - exceptionIfCallIteratorThrows() { - let iterable = [1, 2, 3, 4, 5]; - class ThrewDuringCall {}; - iterable[Symbol.iterator] = function() { - throw new ThrewDuringCall(); - } - assertThrows(() => fromEntries(iterable), ThrewDuringCall); - }, - - exceptionIfIteratorNextThrows() { - let iterable = [1, 2, 3, 4, 5]; - class ThrewDuringIteratorNext {} - iterable[Symbol.iterator] = function() { - return { - next() { throw new ThrewDuringIteratorNext; }, - return() { - throw new Error( - "IteratorClose must not be performed if IteratorStep throws"); - }, - } - } - assertThrows(() => fromEntries(iterable), ThrewDuringIteratorNext); - }, - - exceptionIfIteratorCompleteThrows() { - let iterable = [1, 2, 3, 4, 5]; - class ThrewDuringIteratorComplete {} - iterable[Symbol.iterator] = function() { - return { - next() { - return { - get value() { throw new Error( - "IteratorValue must not be performed before IteratorComplete"); - }, - get done() { - throw new ThrewDuringIteratorComplete(); - } - } - throw new ThrewDuringIteratorNext; - }, - return() { - throw new Error( - "IteratorClose must not be performed if IteratorStep throws"); - }, - } - } - assertThrows(() => fromEntries(iterable), ThrewDuringIteratorComplete); - }, - - exceptionIfEntryIsNotObject() { - { - // Fast path (Objects/Smis) - let iterables = [[null], [undefined], [1], [NaN], [false], [Symbol()], - [""]]; - for (let iterable of iterables) { - assertThrows(() => fromEntries(iterable), TypeError); - } - } - { - // Fast path (Doubles) - let iterable = [3.7, , , 3.6, 1.1, -0.4]; - assertThrows(() => fromEntries(iterable), TypeError); - } - { - // Slow path - let i = 0; - let values = [null, undefined, 1, NaN, false, Symbol(), ""]; - let iterable = { - [Symbol.iterator]() { return this; }, - next() { - return { - done: i >= values.length, - value: values[i++], - } - }, - }; - for (let k = 0; k < values.length; ++k) { - assertThrows(() => fromEntries(iterable), TypeError); - } - assertEquals({}, fromEntries(iterable)); - } - }, - - returnIfEntryIsNotObject() { - // Only observable/verifiable in the slow path :( - let i = 0; - let didCallReturn = false; - let values = [null, undefined, 1, NaN, false, Symbol(), ""]; - let iterable = { - [Symbol.iterator]() { return this; }, - next() { - return { - done: i >= values.length, - value: values[i++], - } - }, - return() { didCallReturn = true; throw new Error("Unused!"); } - }; - for (let k = 0; k < values.length; ++k) { - didCallReturn = false; - assertThrows(() => fromEntries(iterable), TypeError); - assertTrue(didCallReturn); - } - assertEquals({}, fromEntries(iterable)); - }, - - returnIfEntryKeyAccessorThrows() { - class ThrewDuringKeyAccessor {}; - let entries = [{ get 0() { throw new ThrewDuringKeyAccessor(); }, - get 1() { throw new Error("Unreachable!"); } }]; - let didCallReturn = false; - let iterator = entries[Symbol.iterator](); - iterator.return = function() { - didCallReturn = true; - throw new Error("Unused!"); - } - assertThrows(() => fromEntries(iterator), ThrewDuringKeyAccessor); - assertTrue(didCallReturn); - }, - - returnIfEntryKeyAccessorThrows() { - class ThrewDuringValueAccessor {}; - let entries = [{ get 1() { throw new ThrewDuringValueAccessor(); }, - 0: "key", - }]; - let didCallReturn = false; - let iterator = entries[Symbol.iterator](); - iterator.return = function() { - didCallReturn = true; - throw new Error("Unused!"); - }; - assertThrows(() => fromEntries(iterator), ThrewDuringValueAccessor); - assertTrue(didCallReturn); - }, - - returnIfKeyToStringThrows() { - class ThrewDuringKeyToString {}; - let operations = []; - let entries = [{ - get 0() { - operations.push("[[Get]] key"); - return { - toString() { - operations.push("toString(key)"); - throw new ThrewDuringKeyToString(); - }, - valueOf() { - operations.push("valueOf(key)"); - } - }; - }, - get 1() { - operations.push("[[Get]] value"); - return "value"; - }, - }]; - - let iterator = entries[Symbol.iterator](); - iterator.return = function() { - operations.push("IteratorClose"); - throw new Error("Unused!"); - }; - assertThrows(() => fromEntries(iterator), ThrewDuringKeyToString); - assertEquals([ - "[[Get]] key", - "[[Get]] value", - "toString(key)", - "IteratorClose", - ], operations); - }, - - throwsIfIteratorValueThrows() { - let iterable = [1, 2, 3, 4, 5]; - class ThrewDuringIteratorValue {} - iterable[Symbol.iterator] = function() { - return { - next() { - return { - get value() { throw new ThrewDuringIteratorValue(); }, - get done() { return false; } - } - throw new ThrewDuringIteratorNext; - }, - return() { - throw new Error( - "IteratorClose must not be performed if IteratorStep throws"); - }, - } - } - assertThrows(() => fromEntries(iterable), ThrewDuringIteratorValue); - }, - - emptyIterable() { - let iterables = [[], new Set(), new Map()]; - for (let iterable of iterables) { - let result = fromEntries(iterable); - assertEquals({}, result); - assertEquals(ObjectPrototype, result.__proto__); - } - }, - - keyOrderFastPath() { - let entries = [ - ["z", 1], - ["y", 2], - ["x", 3], - ["y", 4], - [100, 0], - ]; - let result = fromEntries(entries); - assertEquals({ - 100: 0, - z: 1, - y: 4, - x: 3, - }, result); - assertEquals(["100", "z", "y", "x"], Object.keys(result)); - }, - - keyOrderSlowPath() { - let entries = [ - ["z", 1], - ["y", 2], - ["x", 3], - ["y", 4], - [100, 0], - ]; - let i = 0; - let iterable = { - [Symbol.iterator]() { return this; }, - next() { - return { - done: i >= entries.length, - value: entries[i++] - } - }, - return() { throw new Error("Unreachable!"); } - }; - let result = fromEntries(iterable); - assertEquals({ - 100: 0, - z: 1, - y: 4, - x: 3, - }, result); - assertEquals(["100", "z", "y", "x"], Object.keys(result)); - }, - - doesNotUseIteratorForKeyValuePairFastCase() { - class Entry { - constructor(k, v) { - this[0] = k; - this[1] = v; - } - get [Symbol.iterator]() { - throw new Error("Should not load Symbol.iterator from Entry!"); - } - } - function e(k, v) { return new Entry(k, v); } - let entries = [e(100, 0), e('z', 1), e('y', 2), e('x', 3), e('y', 4)]; - let result = fromEntries(entries); - assertEquals({ - 100: 0, - z: 1, - y: 4, - x: 3, - }, result); - }, - - doesNotUseIteratorForKeyValuePairSlowCase() { - class Entry { - constructor(k, v) { - this[0] = k; - this[1] = v; - } - get [Symbol.iterator]() { - throw new Error("Should not load Symbol.iterator from Entry!"); - } - } - function e(k, v) { return new Entry(k, v); } - let entries = new Set( - [e(100, 0), e('z', 1), e('y', 2), e('x', 3), e('y', 4)]); - let result = fromEntries(entries); - assertEquals({ - 100: 0, - z: 1, - y: 4, - x: 3, - }, result); - }, - - createDataPropertyFastCase() { - Object.defineProperty(ObjectPrototype, "property", { - configurable: true, - get() { throw new Error("Should not invoke getter on prototype!"); }, - set() { throw new Error("Should not invoke setter on prototype!"); }, - }); - - let entries = [["property", "value"]]; - let result = fromEntries(entries); - assertEquals(result.property, "value"); - delete ObjectPrototype.property; - }, - - createDataPropertySlowCase() { - Object.defineProperty(ObjectPrototype, "property", { - configurable: true, - get() { throw new Error("Should not invoke getter on prototype!"); }, - set() { throw new Error("Should not invoke setter on prototype!"); }, - }); - - let entries = new Set([["property", "value"]]); - let result = fromEntries(entries); - assertEquals(result.property, "value"); - delete ObjectPrototype.property; - }, - - keyToPrimitiveMutatesArrayInFastCase() { - let mySymbol = Symbol(); - let entries = [[0, 1], ["a", 2], [{ - [Symbol.toPrimitive]() { - // The fast path should bail out if a key is a JSReceiver, otherwise - // assumptions about the structure of the iterable can change. If the - // fast path doesn't bail out, the 4th key would be "undefined". - delete entries[3][0]; - entries[3].__proto__ = { 0: "shfifty", }; - return mySymbol; - }, - }, 3], [3, 4]]; - let result = fromEntries(entries); - assertEquals({ - 0: 1, - "a": 2, - [mySymbol]: 3, - "shfifty": 4, - }, result); - assertEquals(["0", "a", "shfifty", mySymbol], Reflect.ownKeys(result)); - }, - - keyToStringMutatesArrayInFastCase() { - let mySymbol = Symbol(); - let entries = [[mySymbol, 1], [0, 2], [{ - toString() { - delete entries[3][0]; - entries[3].__proto__ = { 0: "shfifty", }; - return "z"; - }, - valueOf() { throw new Error("Unused!"); } - }, 3], [3, 4]]; - let result = fromEntries(entries); - assertEquals({ - [mySymbol]: 1, - 0: 2, - "z": 3, - "shfifty": 4, - }, result); - assertEquals(["0", "z", "shfifty", mySymbol], Reflect.ownKeys(result)); - }, - - keyValueOfMutatesArrayInFastCase() { - let mySymbol = Symbol(); - let entries = [[mySymbol, 1], ["z", 2], [{ - toString: undefined, - valueOf() { - delete entries[3][0]; - entries[3].__proto__ = { 0: "shfifty", }; - return 0; - }, - }, 3], [3, 4]]; - let result = fromEntries(entries); - assertEquals({ - [mySymbol]: 1, - "z": 2, - 0: 3, - "shfifty": 4, - }, result); - assertEquals(["0", "z", "shfifty", mySymbol], Reflect.ownKeys(result)); - }, -} - -for (let t of Reflect.ownKeys(test)) { - test[t](); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/optional-catch-binding-breaks.js b/implementation-contributed/v8/mjsunit/harmony/optional-catch-binding-breaks.js deleted file mode 100644 index 7ba4ad03ab1..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/optional-catch-binding-breaks.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let state = 'initial'; -x: try { - throw new Error('caught'); - state = 'unreachable'; -} catch { - assertEquals(state, 'initial'); - state = 'caught'; - break x; - state = 'unreachable'; -} -assertEquals(state, 'caught'); - - -state = 'initial'; -x: try { - throw new Error('caught'); - state = 'unreachable'; -} catch { - assertEquals(state, 'initial'); - state = 'caught'; - break x; - state = 'unreachable'; -} finally { - assertEquals(state, 'caught'); - state = 'finally'; -} -assertEquals(state, 'finally'); - - -state = 'initial'; -x: { - y: try { - throw new Error('caught'); - state = 'unreachable'; - } catch { - assertEquals(state, 'initial'); - state = 'caught'; - break x; - state = 'unreachable'; - } finally { - assertEquals(state, 'caught'); - state = 'finally'; - break y; - state = 'unreachable'; - } - assertEquals(state, 'finally'); - state = 'after block'; -} -assertEquals(state, 'after block'); - - -do { - try { - throw new Error(); - } catch { - break; - } - assertUnreachable(); -} while(false); diff --git a/implementation-contributed/v8/mjsunit/harmony/optional-catch-binding.js b/implementation-contributed/v8/mjsunit/harmony/optional-catch-binding.js deleted file mode 100644 index eaedc82a42e..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/optional-catch-binding.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let state = 'initial'; -try { - throw new Error('caught'); - state = 'unreachable'; -} catch { // Note the lack of a binding - assertEquals(state, 'initial'); - state = 'caught'; -} -assertEquals(state, 'caught'); - - -let sigil1 = {}; -try { - throw sigil1; -} catch (e) { - assertEquals(e, sigil1); -} - - -let sigil2 = {}; -let reached = false; -try { - try { - throw sigil1; - } catch { - reached = true; - } finally { - throw sigil2; - } -} catch (e) { - assertEquals(e, sigil2); -} -assertTrue(reached); diff --git a/implementation-contributed/v8/mjsunit/harmony/private-fields-ic.js b/implementation-contributed/v8/mjsunit/harmony/private-fields-ic.js deleted file mode 100644 index e7889b1e7b3..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/private-fields-ic.js +++ /dev/null @@ -1,294 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-private-fields - -{ - class X { - #x = 1; - getX(arg) { return arg.#x; } - setX(arg, val) { arg.#x = val; } - } - - let x1 = new X; - let y = new class {}; - - // IC: 0 -> Error - assertThrows(() => x1.getX(y), TypeError); - assertThrows(() => x1.getX(y), TypeError); - assertThrows(() => x1.getX(y), TypeError); - - assertThrows(() => x1.setX(y, 2), TypeError); - assertThrows(() => x1.setX(y, 3), TypeError); - assertThrows(() => x1.setX(y, 4), TypeError); - - // IC: 0 -> Monomorphic - assertEquals(1, x1.getX(x1)); - assertEquals(1, x1.getX(x1)); - assertEquals(1, x1.getX(x1)); - - x1.setX(x1, 2); - x1.setX(x1, 3); - x1.setX(x1, 4); -} - -{ - class X { - #x = 1; - getX(arg) { return arg.#x; } - setX(arg, val) { arg.#x = val; } - } - - let x1 = new X; - // IC: 0 -> Monomorphic - assertEquals(1, x1.getX(x1)); - assertEquals(1, x1.getX(x1)); - assertEquals(1, x1.getX(x1)); - - x1.setX(x1, 2); - x1.setX(x1, 3); - x1.setX(x1, 4); - - let y = new class {}; - // IC: Monomorphic -> Error - assertThrows(() => x1.getX(y), TypeError); - assertThrows(() => x1.getX(y), TypeError); - assertThrows(() => x1.getX(y), TypeError); - - assertThrows(() => x1.setX(y, 2), TypeError); - assertThrows(() => x1.setX(y, 3), TypeError); - assertThrows(() => x1.setX(y, 4), TypeError); - - let x3 = new X; - // IC: Monomorphic -> Monomorphic - assertEquals(1, x1.getX(x3)); - assertEquals(1, x1.getX(x3)); - assertEquals(1, x1.getX(x3)); - - x1.setX(x3, 2); - x1.setX(x3, 3); - x1.setX(x3, 4); -} - - -{ - class X { - #x = 1; - getX(arg) { return arg.#x; } - setX(arg, val) { arg.#x = val; } - } - - let x1 = new X; - // IC: 0 -> Monomorphic - assertEquals(1, x1.getX(x1)); - assertEquals(1, x1.getX(x1)); - assertEquals(1, x1.getX(x1)); - - x1.setX(x1, 2); - x1.setX(x1, 3); - x1.setX(x1, 4); - - class X2 extends X { - #x2 = 2; - } - - let x2 = new X2; - // IC: Monomorphic -> Polymorphic - assertEquals(1, x1.getX(x2)); - assertEquals(1, x1.getX(x2)); - assertEquals(1, x1.getX(x2)); - - x1.setX(x2, 2); - x1.setX(x2, 3); - x1.setX(x2, 4); - - let y = new class {}; - - // IC: Polymorphic -> Error - assertThrows(() => x1.getX(y), TypeError); - assertThrows(() => x1.getX(y), TypeError); - assertThrows(() => x1.getX(y), TypeError); - - assertThrows(() => x1.setX(y, 2), TypeError); - assertThrows(() => x1.setX(y, 3), TypeError); - assertThrows(() => x1.setX(y, 4), TypeError); - - class X3 extends X { - #x3 = 2; - } - - let x3 = new X3; - // IC: Polymorphic -> Polymorphic - assertEquals(1, x1.getX(x3)); - assertEquals(1, x1.getX(x3)); - assertEquals(1, x1.getX(x3)); - - x1.setX(x3, 2); - x1.setX(x3, 3); - x1.setX(x3, 4); -} - -{ - class X { - #x = 1; - getX(arg) { return arg.#x; } - setX(arg, val) { arg.#x = val; } - } - - let x1 = new X; - // IC: 0 -> Monomorphic - assertEquals(1, x1.getX(x1)); - assertEquals(1, x1.getX(x1)); - assertEquals(1, x1.getX(x1)); - - x1.setX(x1, 2); - x1.setX(x1, 3); - x1.setX(x1, 4); - - class X2 extends X { - #x2 = 2; - } - - let x2 = new X2; - // IC: Monomorphic -> Polymorphic - assertEquals(1, x1.getX(x2)); - assertEquals(1, x1.getX(x2)); - assertEquals(1, x1.getX(x2)); - - x1.setX(x2, 2); - x1.setX(x2, 3); - x1.setX(x2, 4); - - class X3 extends X { - #x3 = 2; - } - - let x3 = new X3; - assertEquals(1, x1.getX(x3)); - assertEquals(1, x1.getX(x3)); - assertEquals(1, x1.getX(x3)); - - x1.setX(x3, 2); - x1.setX(x3, 3); - x1.setX(x3, 4); - - - class X4 extends X { - #x4 = 2; - } - - let x4 = new X4; - assertEquals(1, x1.getX(x4)); - assertEquals(1, x1.getX(x4)); - assertEquals(1, x1.getX(x4)); - - x1.setX(x4, 2); - x1.setX(x4, 3); - x1.setX(x4, 4); - - class X5 extends X { - #x5 = 2; - } - - let x5 = new X5; - // IC: Polymorphic -> Megamorphic - assertEquals(1, x1.getX(x5)); - assertEquals(1, x1.getX(x5)); - assertEquals(1, x1.getX(x5)); - - x1.setX(x5, 2); - x1.setX(x5, 3); - x1.setX(x5, 4); - - let y = new class {}; - - // IC: Megamorphic -> Error - assertThrows(() => x1.getX(y), TypeError); - assertThrows(() => x1.getX(y), TypeError); - assertThrows(() => x1.getX(y), TypeError); - - assertThrows(() => x1.setX(y, 2), TypeError); - assertThrows(() => x1.setX(y, 3), TypeError); - assertThrows(() => x1.setX(y, 4), TypeError); - - class X6 extends X { - #x6 = 2; - } - - let x6 = new X6; - // IC: Megamorphic -> Megamorphic - assertEquals(1, x1.getX(x6)); - assertEquals(1, x1.getX(x6)); - assertEquals(1, x1.getX(x6)); - - x1.setX(x6, 2); - x1.setX(x6, 3); - x1.setX(x6, 4); -} - -{ - class C { - #a = 1; - getA() { return this.#a; } - setA(v) { this.#a = v; } - } - - let p = new Proxy(new C, { - get(target, name) { - return target[name]; - }, - - set(target, name, val) { - target[name] = val; - } - }); - - assertThrows(() => p.getA(), TypeError); - assertThrows(() => p.getA(), TypeError); - assertThrows(() => p.getA(), TypeError); - - assertThrows(() => p.setA(2), TypeError); - assertThrows(() => p.setA(3), TypeError); - assertThrows(() => p.setA(4), TypeError); - - let x = new Proxy(new C, {}); - assertThrows(() => x.getA(), TypeError); - assertThrows(() => x.getA(), TypeError); - assertThrows(() => x.getA(), TypeError); - - assertThrows(() => x.setA(2), TypeError); - assertThrows(() => x.setA(3), TypeError); - assertThrows(() => x.setA(4), TypeError); -} - -{ - class A { - constructor(arg) { - return arg; - } - } - - class X extends A { - #x = 1; - - constructor(arg) { - super(arg); - } - - getX(arg) { return arg.#x; } - - setX(arg, val) { arg.#x = val; } - } - - let proxy = new Proxy({}, {}); - let x = new X(proxy); - - assertEquals(1, X.prototype.getX(proxy)); - assertEquals(1, X.prototype.getX(proxy)); - assertEquals(1, X.prototype.getX(proxy)); - - X.prototype.setX(proxy, 2); - X.prototype.setX(proxy, 3); - X.prototype.setX(proxy, 4); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/private-fields-special-object.js b/implementation-contributed/v8/mjsunit/harmony/private-fields-special-object.js deleted file mode 100644 index 0ade4305bfb..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/private-fields-special-object.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-private-fields --allow-natives-syntax - -load('test/mjsunit/test-async.js'); - -async function f(assert) { - try { - module_namespace_obj = await import('modules-skip-1.js'); - } catch(e) { - %AbortJS(e); - } - - class A { - constructor(arg) { - return arg; - } - } - - class X extends A { - #x = 1; - - constructor(arg) { - super(arg); - } - - getX(arg) { - return arg.#x; - } - - setX(arg, val) { arg.#x = val; } - } - - let x = new X(module_namespace_obj); - - assert.equals(1, X.prototype.getX(module_namespace_obj)); - assert.equals(1, X.prototype.getX(module_namespace_obj)); - assert.equals(1, X.prototype.getX(module_namespace_obj)); - - X.prototype.setX(module_namespace_obj, 2); - X.prototype.setX(module_namespace_obj, 3); - X.prototype.setX(module_namespace_obj, 4); -} - -testAsync(assert => { - assert.plan(3); - - f(assert).catch(assert.unreachable); -}, "private-fields-special-object"); diff --git a/implementation-contributed/v8/mjsunit/harmony/private-fields-static.js b/implementation-contributed/v8/mjsunit/harmony/private-fields-static.js deleted file mode 100644 index e4019cc32e5..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/private-fields-static.js +++ /dev/null @@ -1,356 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-private-fields --allow-natives-syntax - - -"use strict"; - -{ - class C { - static #a; - static getA() { return this.#a; } - } - - assertEquals(undefined, C.a); - assertEquals(undefined, C.getA()); - - let c = new C; - assertEquals(undefined, c.a); -} - -{ - class C { - static #a = 1; - static getA() { return this.#a; } - } - - assertEquals(undefined, C.a); - assertEquals(1, C.getA()); - - let c = new C; - assertEquals(undefined, c.a); -} - -{ - class C { - static #a = 1; - static #b = this.#a; - static getB() { return this.#b; } - } - - assertEquals(1, C.getB()); - - let c = new C; - assertEquals(undefined, c.getB); -} - -{ - class C { - static #a = 1; - static getA() { return this.#a; } - constructor() { - assertThrows(() => this.#a, TypeError); - C.#a = 2; - } - } - - assertEquals(1, C.getA()); - - let c = new C; - assertThrows(() => C.prototype.getA.call(c)); - assertEquals(2, C.getA()); -} - -{ - class C { - static #a = this; - static #b = () => this; - static getA() { return this.#a; } - static getB() { return this.#b; } - } - - assertSame(C, C.getA()); - assertSame(C, C.getB()()); -} - -{ - class C { - static #a = this; - static #b = function() { return this; }; - static getA() { return this.#a; } - static getB() { return this.#b; } - } - - assertSame(C, C.getA()); - assertSame(C, C.getB().call(C)); - assertSame(undefined, C.getB()()); -} - - -{ - class C { - static #a = function() { return 1 }; - static getA() {return this.#a;} - } - - assertEquals('#a', C.getA().name); -} - -{ - let d = function() { return new.target; } - class C { - static #c = d; - static getC() { return this.#c; } - } - - assertEquals(undefined, C.getC()()); - assertSame(new d, new (C.getC())); -} - -{ - class C { - static #a = 1; - static getA(instance) { return instance.#a; } - } - - class B { } - - assertEquals(undefined, C.a); - assertEquals(1, C.getA(C)); - assertThrows(() => C.getA(B), TypeError); -} - -{ - class A { - static #a = 1; - static getA() { return this.#a; } - } - - class B extends A {} - assertThrows(() => B.getA(), TypeError); -} - -{ - class A { - static #a = 1; - static getA() { return A.#a; } - } - - class B extends A {} - assertSame(1, B.getA()); -} - -{ - let prototypeLookup = false; - class A { - static set a(val) { - prototypeLookup = true; - } - - static get a() { return undefined; } - } - - class C extends A { - static #a = 1; - static getA() { return this.#a; } - } - - assertEquals(1, C.getA()); - assertEquals(false, prototypeLookup); -} - -{ - class A { - static a = 1; - } - - class B extends A { - static #b = this.a; - static getB() { return this.#b; } - } - - assertEquals(1, B.getB()); -} - -{ - class A { - static #a = 1; - static getA() { return this.#a; } - } - - class B extends A { - static getA() { return super.getA(); } - } - - assertThrows(() => B.getA(), TypeError); -} - -{ - class A { - static #a = 1; - static getA() { return this.#a;} - } - - class B extends A { - static #a = 2; - static get_A() { return this.#a;} - } - - assertEquals(1, A.getA()); - assertThrows(() => B.getA(), TypeError); - assertEquals(2, B.get_A()); -} - -{ - let foo = undefined; - class A { - static #a = (function() { foo = 1; })(); - } - - assertEquals(1, foo); -} - -{ - let foo = undefined; - class A extends class {} { - static #a = (function() { foo = 1; })(); - } - - assertEquals(1, foo); -} - -{ - function makeClass() { - return class { - static #a; - static setA(val) { this.#a = val; } - static getA() { return this.#a; } - } - } - - let classA = makeClass(); - let classB = makeClass(); - - assertEquals(undefined, classA.getA()); - assertEquals(undefined, classB.getA()); - - classA.setA(3); - assertEquals(3, classA.getA()); - assertEquals(undefined, classB.getA()); - - classB.setA(5); - assertEquals(3, classA.getA()); - assertEquals(5, classB.getA()); - - assertThrows(() => classA.getA.call(classB), TypeError); - assertThrows(() => classB.getA.call(classA), TypeError); -} - -{ - let value = undefined; - - new class { - static #a = 1; - static getA() { return this.#a; } - - constructor() { - new class C { - static #a = 2; - constructor() { - value = C.#a; - } - } - } - } - - assertEquals(2, value); -} - -{ - class A { - static #a = 1; - static b = class { - static getA() { return this.#a; } - static get_A(val) { return val.#a; } - } - } - - assertEquals(1, A.b.getA.call(A)); - assertEquals(1, A.b.get_A(A)); -} - -{ - assertThrows(() => class { static b = this.#a; static #a = 1 }, TypeError); -} - -{ - let symbol = Symbol(); - - class C { - static #a = 1; - static [symbol] = 1; - static getA() { return this.#a; } - static setA(val) { this.#a = val; } - } - - var p = new Proxy(C, { - get: function(target, name) { - if (typeof(arg) === 'symbol') { - assertFalse(%SymbolIsPrivate(name)); - } - return target[name]; - } - }); - - assertThrows(() => p.getA(), TypeError); - assertThrows(() => p.setA(1), TypeError); - assertEquals(1, p[symbol]); -} - -{ - class C { - static #b = Object.freeze(this); - static getA() { return this.#a; } - static #a = 1; - } - - assertEquals(1, C.getA()); -} - -{ - class C { - static #a = 1; - static getA() { return eval('this.#a'); } - } - - assertEquals(1, C.getA()); -} - -{ - var C; - eval('C = class { static #a = 1; static getA() { return eval(\'this.#a\'); }}'); - - assertEquals(1, C.getA()); -} - -{ - class C { - static #a = 1; - static getA() { return this.#a; } - static setA() { eval('this.#a = 4'); } - } - - assertEquals(1, C.getA()); - C.setA(); - assertEquals(4, C.getA()); -} - -{ - class C { - static getA() { return eval('this.#a'); } - } - - assertThrows(() => C.getA(), SyntaxError); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/private-fields.js b/implementation-contributed/v8/mjsunit/harmony/private-fields.js deleted file mode 100644 index ec25bb743e7..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/private-fields.js +++ /dev/null @@ -1,478 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-private-fields --allow-natives-syntax - - -"use strict"; - -{ - class C { - #a; - getA() { return this.#a; } - } - - assertEquals(undefined, C.a); - - let c = new C; - assertEquals(undefined, c.a); - assertEquals(undefined, c.getA()); -} - -{ - class C { - #a = 1; - getA() { return this.#a; } - } - - assertEquals(undefined, C.a); - - let c = new C; - assertEquals(undefined, c.a); - assertEquals(1, c.getA()); -} - -{ - class C { - #a = 1; - #b = this.#a; - getB() { return this.#b; } - } - - let c = new C; - assertEquals(1, c.getB()); -} - -{ - class C { - #a = 1; - getA() { return this.#a; } - constructor() { - assertEquals(1, this.#a); - this.#a = 5; - } - } - - let c = new C; - assertEquals(5, c.getA()); -} - -{ - class C { - #a = this; - #b = () => this; - getA() { return this.#a; } - getB() { return this.#b; } - } - - let c1 = new C; - assertSame(c1, c1.getA()); - assertSame(c1, c1.getB()()); - let c2 = new C; - assertSame(c1, c1.getB().call(c2)); -} - -{ - class C { - #a = this; - #b = function() { return this; }; - getA() { return this.#a; } - getB() { return this.#b; } - } - - let c1 = new C; - assertSame(c1, c1.getA()); - assertSame(c1, c1.getB().call(c1)); - let c2 = new C; - assertSame(c2, c1.getB().call(c2)); -} - - -{ - class C { - #a = function() { return 1 }; - getA() {return this.#a;} - } - - let c = new C; - assertEquals('#a', c.getA().name); -} - -{ - let d = function() { return new.target; } - class C { - #c = d; - getC() { return this.#c; } - } - - let c = new C; - assertEquals(undefined, c.getC()()); - assertSame(new d, new (c.getC())); -} - -{ - class C { - #b = new.target; - #c = () => new.target; - getB() { return this.#b; } - getC() { return this.#c; } - } - - let c = new C; - assertEquals(undefined, c.getB()); - assertEquals(undefined, c.getC()()); -} - -{ - class C { - #a = 1; - #b = () => this.#a; - getB() { return this.#b; } - } - - let c1 = new C; - assertSame(1, c1.getB()()); -} - -{ - class C { - #a = 1; - getA(instance) { return instance.#a; } - } - - class B { } - let c = new C; - assertEquals(undefined, c.a); - assertEquals(1, c.getA(c)); - - assertThrows(() => c.getA(new B), TypeError); -} - -{ - class A { - #a = 1; - getA() { return this.#a; } - } - - class B extends A {} - let b = new B; - assertEquals(1, b.getA()); -} - -{ - let prototypeLookup = false; - class A { - set a(val) { - prototypeLookup = true; - } - - get a() { return undefined; } - } - - class C extends A { - #a = 1; - getA() { return this.#a; } - } - - let c = new C; - assertEquals(1, c.getA()); - assertEquals(false, prototypeLookup); -} - -{ - class A { - constructor() { this.a = 1; } - } - - class B extends A { - #b = this.a; - getB() { return this.#b; } - } - - let b = new B; - assertEquals(1, b.getB()); -} - -{ - class A { - #a = 1; - getA() { return this.#a; } - } - - class B extends A { - #b = super.getA(); - getB() { return this.#b; } - } - - let b = new B; - assertEquals(1, b.getB()); -} - -{ - class A { - #a = 1; - getA() { return this.#a;} - } - - class B extends A { - #a = 2; - get_A() { return this.#a;} - } - - let a = new A; - let b = new B; - assertEquals(1, a.getA()); - assertEquals(1, b.getA()); - assertEquals(2, b.get_A()); -} - -{ - let foo = undefined; - class A { - #a = 1; - constructor() { - foo = this.#a; - } - } - - let a = new A; - assertEquals(1, foo); -} - -{ - let foo = undefined; - class A extends class {} { - #a = 1; - constructor() { - super(); - foo = this.#a; - } - } - - let a = new A; - assertEquals(1, foo); -} - -{ - function makeClass() { - return class { - #a; - setA(val) { this.#a = val; } - getA() { return this.#a; } - } - } - - let classA = makeClass(); - let a = new classA; - let classB = makeClass(); - let b = new classB; - - assertEquals(undefined, a.getA()); - assertEquals(undefined, b.getA()); - - a.setA(3); - assertEquals(3, a.getA()); - assertEquals(undefined, b.getA()); - - b.setA(5); - assertEquals(3, a.getA()); - assertEquals(5, b.getA()); - - assertThrows(() => a.getA.call(b), TypeError); - assertThrows(() => b.getA.call(a), TypeError); -} - -{ - let value = undefined; - - new class { - #a = 1; - getA() { return this.#a; } - - constructor() { - new class { - #a = 2; - constructor() { - value = this.#a; - } - } - } - } - - assertEquals(2, value); -} - -{ - class A { - #a = 1; - b = class { - getA() { return this.#a; } - get_A(val) { return val.#a; } - } - } - - let a = new A(); - let b = new a.b; - assertEquals(1, b.getA.call(a)); - assertEquals(1, b.get_A(a)); -} - -{ - class C { - b = this.#a; - #a = 1; - } - - assertThrows(() => new C, TypeError); -} - -{ - class C { - #b = this.#a; - #a = 1; - } - - assertThrows(() => new C, TypeError); -} - -{ - let symbol = Symbol(); - - class C { - #a = 1; - [symbol] = 1; - getA() { return this.#a; } - setA(val) { this.#a = val; } - } - - var p = new Proxy(new C, { - get: function(target, name) { - if (typeof(arg) === 'symbol') { - assertFalse(%SymbolIsPrivate(name)); - } - return target[name]; - } - }); - - assertThrows(() => p.getA(), TypeError); - assertThrows(() => p.setA(1), TypeError); - assertEquals(1, p[symbol]); -} - -{ - class C { - #b = Object.freeze(this); - #a = 1; - getA() { return this.#a; } - } - - let c = new C; - assertEquals(1, c.getA()); -} - -{ - class C { - #a = 1; - setA(another, val) { another.#a = val; } - getA(another) { return another.#a; } - } - - let c = new C; - assertThrows(() => c.setA({}, 2), TypeError); - c.setA(c, 3); - assertEquals(3, c.getA(c)); -} - -{ - class A { - constructor(arg) { - return arg; - } - } - - class C extends A { - #x = 1; - - constructor(arg) { - super(arg); - } - - getX(arg) { - return arg.#x; - } - } - - let leaker = new Proxy({}, {}); - let c = new C(leaker); - assertEquals(1, C.prototype.getX(leaker)); - assertSame(c, leaker); - - c = new C(); - assertThrows(() => new C(c), TypeError); - - new C(1); -} - -{ - class C { - #a = 1; - b; - getA() { return this.b().#a; } - } - - let c = new C(); - c.b = () => c; - assertEquals(1, c.getA()); -} - -{ - class C { - #a = 1; - b; - getA(arg) { return arg.b().#a; } - } - - let c = new C(); - c.b = () => c; - assertEquals(1, c.getA(c)); -} - -{ - class C { - #a = 1; - getA() { return eval('this.#a'); } - } - - let c = new C; - assertEquals(1, c.getA()); -} - -{ - var C; - eval('C = class {#a = 1;getA() { return eval(\'this.#a\'); }}'); - - let c = new C; - assertEquals(1, c.getA()); -} - -{ - class C { - #a = 1; - getA() { return this.#a; } - setA() { eval('this.#a = 4'); } - } - let c = new C; - assertEquals(1, c.getA()); - c.setA(); - assertEquals(4, c.getA()); -} - -{ - class C { - getA() { return eval('this.#a'); } - } - - let c = new C; - assertThrows(() => c.getA(), SyntaxError); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/private-symbols.js b/implementation-contributed/v8/mjsunit/harmony/private-symbols.js deleted file mode 100644 index 627a43a70b8..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/private-symbols.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -var symbol = %CreatePrivateSymbol("private"); - - -// Private symbols must never be listed. - -var object = {}; -object[symbol] = 42; -for (var key of Object.keys(object)) assertUnreachable(); -for (var key of Object.getOwnPropertySymbols(object)) assertUnreachable(); -for (var key of Object.getOwnPropertyNames(object)) assertUnreachable(); -for (var key of Reflect.ownKeys(object)) assertUnreachable(); -for (var key in object) assertUnreachable(); - -var object2 = {__proto__: object}; -for (var key of Object.keys(object2)) assertUnreachable(); -for (var key of Object.getOwnPropertySymbols(object2)) assertUnreachable(); -for (var key of Object.getOwnPropertyNames(object2)) assertUnreachable(); -for (var key of Reflect.ownKeys(object2)) assertUnreachable(); -for (var key in object2) assertUnreachable(); - - -// Private symbols must never leak to proxy traps. - -var proxy = new Proxy({}, new Proxy({}, {get() {return () => { - throw new Error()}}})); -var object = {__proto__: proxy}; - -// [[Set]] -assertEquals(42, proxy[symbol] = 42); -assertThrows(function() { "use strict"; proxy[symbol] = 42 }, TypeError); -assertEquals(false, Reflect.set(proxy, symbol, 42)); -assertEquals(42, object[symbol] = 42); -assertEquals(43, (function() {"use strict"; return object[symbol] = 43})()); -assertEquals(true, Reflect.set(object, symbol, 44)); - -// [[DefineOwnProperty]] -assertEquals(false, Reflect.defineProperty(proxy, symbol, {})); -assertThrows(() => Object.defineProperty(proxy, symbol, {}), TypeError); -assertEquals(true, Reflect.defineProperty(object, symbol, {})); -assertEquals(object, Object.defineProperty(object, symbol, {})); - -// [[Delete]] -assertEquals(true, delete proxy[symbol]); -assertEquals(true, (function() {"use strict"; return delete proxy[symbol]})()); -assertEquals(true, Reflect.deleteProperty(proxy, symbol)); -assertEquals(true, delete object[symbol]); -assertEquals(true, (function() {"use strict"; return delete object[symbol]})()); -assertEquals(true, Reflect.deleteProperty(object, symbol)); - -// [[GetOwnPropertyDescriptor]] -assertEquals(undefined, Object.getOwnPropertyDescriptor(proxy, symbol)); -assertEquals(undefined, Reflect.getOwnPropertyDescriptor(proxy, symbol)); -assertFalse(Object.prototype.hasOwnProperty.call(proxy, symbol)); -assertEquals(undefined, Object.getOwnPropertyDescriptor(object, symbol)); -assertEquals(undefined, Reflect.getOwnPropertyDescriptor(object, symbol)); -assertFalse(Object.prototype.hasOwnProperty.call(object, symbol)); - -// [[Has]] -assertFalse(symbol in proxy); -assertFalse(Reflect.has(proxy, symbol)); -assertFalse(symbol in object); -assertFalse(Reflect.has(object, symbol)); - -// [[Get]] -assertEquals(undefined, proxy[symbol]); -assertEquals(undefined, Reflect.get(proxy, symbol)); -assertEquals(undefined, Reflect.get(proxy, symbol, 42)); -assertEquals(undefined, object[symbol]); -assertEquals(undefined, Reflect.get(object, symbol)); -assertEquals(undefined, Reflect.get(object, symbol, 42)); diff --git a/implementation-contributed/v8/mjsunit/harmony/private.js b/implementation-contributed/v8/mjsunit/harmony/private.js deleted file mode 100644 index 64aa39f2ce6..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/private.js +++ /dev/null @@ -1,420 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --allow-natives-syntax - -var symbols = [] - - -// Returns true if the string is a valid -// serialization of Symbols added to the 'symbols' -// array. Adjust if you extend 'symbols' with other -// values. -function isValidSymbolString(s) { - return ["Symbol(66)"].indexOf(s) >= 0; -} - - -// Test different forms of constructor calls, all equivalent. -function TestNew() { - for (var i = 0; i < 2; ++i) { - for (var j = 0; j < 5; ++j) { - symbols.push(%CreatePrivateSymbol("66")) - symbols.push(Object(%CreatePrivateSymbol("66")).valueOf()) - } - gc() // Promote existing symbols and then allocate some more. - } -} -TestNew() - - -function TestType() { - for (var i in symbols) { - assertEquals("symbol", typeof symbols[i]) - assertTrue(typeof symbols[i] === "symbol") - assertTrue(%SymbolIsPrivate(symbols[i])) - } -} -TestType() - - -function TestPrototype() { - for (var i in symbols) { - assertSame(Symbol.prototype, symbols[i].__proto__) - } -} -TestPrototype() - - -function TestConstructor() { - for (var i in symbols) { - assertSame(Symbol, symbols[i].__proto__.constructor) - assertSame(Symbol, Object(symbols[i]).__proto__.constructor) - } -} -TestConstructor() - - -function TestToString() { - for (var i in symbols) { - assertThrows(function() {new String(symbols[i]) }, TypeError) - assertEquals(symbols[i].toString(), String(symbols[i])) - assertThrows(function() { symbols[i] + "" }, TypeError) - assertTrue(isValidSymbolString(symbols[i].toString())) - assertTrue(isValidSymbolString(Object(symbols[i]).toString())) - assertTrue(isValidSymbolString(Symbol.prototype.toString.call(symbols[i]))) - assertEquals( - "[object Symbol]", Object.prototype.toString.call(symbols[i])) - } -} -TestToString() - - -function TestToBoolean() { - for (var i in symbols) { - assertTrue(Boolean(symbols[i]).valueOf()) - assertFalse(!symbols[i]) - assertTrue(!!symbols[i]) - assertTrue(symbols[i] && true) - assertFalse(!symbols[i] && false) - assertTrue(!symbols[i] || true) - assertEquals(1, symbols[i] ? 1 : 2) - assertEquals(2, !symbols[i] ? 1 : 2) - if (!symbols[i]) assertUnreachable(); - if (symbols[i]) {} else assertUnreachable(); - } -} -TestToBoolean() - - -function TestToNumber() { - for (var i in symbols) { - assertThrows(function() { Number(symbols[i]); }, TypeError); - assertThrows(function() { symbols[i] + 0; }, TypeError); - } -} -TestToNumber() - - -function TestEquality() { - // Every symbol should equal itself, and non-strictly equal its wrapper. - for (var i in symbols) { - assertSame(symbols[i], symbols[i]) - assertEquals(symbols[i], symbols[i]) - assertTrue(Object.is(symbols[i], symbols[i])) - assertTrue(symbols[i] === symbols[i]) - assertTrue(symbols[i] == symbols[i]) - assertFalse(symbols[i] === Object(symbols[i])) - assertFalse(Object(symbols[i]) === symbols[i]) - assertTrue(symbols[i] == Object(symbols[i])) - assertTrue(Object(symbols[i]) == symbols[i]) - assertTrue(symbols[i] === symbols[i].valueOf()) - assertTrue(symbols[i].valueOf() === symbols[i]) - assertTrue(symbols[i] == symbols[i].valueOf()) - assertTrue(symbols[i].valueOf() == symbols[i]) - } - - // All symbols should be distinct. - for (var i = 0; i < symbols.length; ++i) { - for (var j = i + 1; j < symbols.length; ++j) { - assertFalse(Object.is(symbols[i], symbols[j])) - assertFalse(symbols[i] === symbols[j]) - assertFalse(symbols[i] == symbols[j]) - } - } - - // Symbols should not be equal to any other value (and the test terminates). - var values = [347, 1.275, NaN, "string", null, undefined, {}, function() {}] - for (var i in symbols) { - for (var j in values) { - assertFalse(symbols[i] === values[j]) - assertFalse(values[j] === symbols[i]) - assertFalse(symbols[i] == values[j]) - assertFalse(values[j] == symbols[i]) - } - } -} -TestEquality() - - -function TestGet() { - for (var i in symbols) { - assertTrue(isValidSymbolString(symbols[i].toString())) - assertEquals(symbols[i], symbols[i].valueOf()) - assertEquals(undefined, symbols[i].a) - assertEquals(undefined, symbols[i]["a" + "b"]) - assertEquals(undefined, symbols[i]["" + "1"]) - assertEquals(undefined, symbols[i][62]) - } -} -TestGet() - - -function TestSet() { - for (var i in symbols) { - symbols[i].toString = 0 - assertTrue(isValidSymbolString(symbols[i].toString())) - symbols[i].valueOf = 0 - assertEquals(symbols[i], symbols[i].valueOf()) - symbols[i].a = 0 - assertEquals(undefined, symbols[i].a) - symbols[i]["a" + "b"] = 0 - assertEquals(undefined, symbols[i]["a" + "b"]) - symbols[i][62] = 0 - assertEquals(undefined, symbols[i][62]) - } -} -TestSet() - - -function TestCollections() { - var set = new Set - var map = new Map - for (var i in symbols) { - set.add(symbols[i]) - map.set(symbols[i], i) - } - assertEquals(symbols.length, set.size) - assertEquals(symbols.length, map.size) - for (var i in symbols) { - assertTrue(set.has(symbols[i])) - assertTrue(map.has(symbols[i])) - assertEquals(i, map.get(symbols[i])) - } - for (var i in symbols) { - assertTrue(set.delete(symbols[i])) - assertTrue(map.delete(symbols[i])) - } - assertEquals(0, set.size) - assertEquals(0, map.size) -} -TestCollections() - - - -function TestKeySet(obj) { - assertTrue(%HasFastProperties(obj)) - // Set the even symbols via assignment. - for (var i = 0; i < symbols.length; i += 2) { - obj[symbols[i]] = i - // Object should remain in fast mode until too many properties were added. - assertTrue(%HasFastProperties(obj) || i >= 30) - } -} - - -function TestKeyDefine(obj) { - // Set the odd symbols via defineProperty (as non-enumerable). - for (var i = 1; i < symbols.length; i += 2) { - Object.defineProperty(obj, symbols[i], {value: i, configurable: true}) - } -} - - -function TestKeyGet(obj) { - var obj2 = Object.create(obj) - for (var i in symbols) { - assertEquals(i|0, obj[symbols[i]]) - // Private symbols key own-properties. - assertEquals(undefined, obj2[symbols[i]]) - } -} - - -function TestKeyHas() { - for (var i in symbols) { - assertTrue(symbols[i] in obj) - assertTrue(Object.prototype.hasOwnProperty.call(obj, symbols[i])) - } -} - - -function TestKeyEnum(obj) { - for (var name in obj) { - assertEquals("string", typeof name) - } -} - - -function TestKeyNames(obj) { - assertEquals(0, Object.keys(obj).length) - - var names = Object.getOwnPropertyNames(obj) - for (var i in names) { - assertEquals("string", typeof names[i]) - } -} - - -function TestKeyDescriptor(obj) { - for (var i in symbols) { - var desc = Object.getOwnPropertyDescriptor(obj, symbols[i]); - assertEquals(i|0, desc.value) - assertTrue(desc.configurable) - assertEquals(i % 2 == 0, desc.writable) - assertEquals(false, desc.enumerable) - assertEquals(false, - Object.prototype.propertyIsEnumerable.call(obj, symbols[i])) - } -} - - -function TestKeyDelete(obj) { - for (var i in symbols) { - delete obj[symbols[i]] - } - for (var i in symbols) { - assertEquals(undefined, Object.getOwnPropertyDescriptor(obj, symbols[i])) - } -} - - -var objs = [{}, [], Object.create({}), Object(1), new Map, function(){}] - -for (var i in objs) { - var obj = objs[i] - TestKeySet(obj) - TestKeyDefine(obj) - TestKeyGet(obj) - TestKeyHas(obj) - TestKeyEnum(obj) - TestKeyNames(obj) - TestKeyDescriptor(obj) - TestKeyDelete(obj) -} - - -function TestCachedKeyAfterScavenge() { - gc(); - // Keyed property lookup are cached. Hereby we assume that the keys are - // tenured, so that we only have to clear the cache between mark compacts, - // but not between scavenges. This must also apply for symbol keys. - var key = Symbol("key"); - var a = {}; - a[key] = "abc"; - - for (var i = 0; i < 100000; i++) { - a[key] += "a"; // Allocations cause a scavenge. - } -} -TestCachedKeyAfterScavenge(); - - -function TestGetOwnPropertySymbols() { - var privateSymbol = %CreatePrivateSymbol("private") - var publicSymbol = Symbol() - var publicSymbol2 = Symbol() - var obj = {} - obj[publicSymbol] = 1 - obj[privateSymbol] = 2 - obj[publicSymbol2] = 3 - var syms = Object.getOwnPropertySymbols(obj) - assertEquals(syms, [publicSymbol, publicSymbol2]) -} -TestGetOwnPropertySymbols() - - -function TestSealAndFreeze(factory, freeze, isFrozen) { - var sym = %CreatePrivateSymbol("private") - var obj = factory(); - obj[sym] = 1 - freeze(obj) - assertTrue(isFrozen(obj)) - obj[sym] = 2 - assertEquals(2, obj[sym]) - assertTrue(delete obj[sym]) - assertEquals(undefined, obj[sym]) -} - -var fastObj = () => { - var obj = {} - assertTrue(%HasFastProperties(obj)) - return obj -} -var dictObj = () => { - var obj = Object.create(null) - obj.a = 1 - delete obj.a - assertFalse(%HasFastProperties(obj)) - return obj -} - -TestSealAndFreeze(fastObj, Object.seal, Object.isSealed) -TestSealAndFreeze(fastObj, Object.freeze, Object.isFrozen) -TestSealAndFreeze(fastObj, Object.preventExtensions, obj => !Object.isExtensible(obj)) -TestSealAndFreeze(dictObj, Object.seal, Object.isSealed) -TestSealAndFreeze(dictObj, Object.freeze, Object.isFrozen) -TestSealAndFreeze(dictObj, Object.preventExtensions, obj => !Object.isExtensible(obj)) - - -var s = %CreatePrivateSymbol("s"); -var s1 = %CreatePrivateSymbol("s1"); - -function TestSimple() { - var p = {} - p[s] = "moo"; - - var o = Object.create(p); - - assertEquals(undefined, o[s]); - assertEquals("moo", p[s]); - - o[s] = "bow-wow"; - assertEquals("bow-wow", o[s]); - assertEquals("moo", p[s]); -} -TestSimple(); - - -function TestICs() { - var p = {} - p[s] = "moo"; - - - var o = Object.create(p); - o[s1] = "bow-wow"; - function checkNonOwn(o) { - assertEquals(undefined, o[s]); - assertEquals("bow-wow", o[s1]); - } - - checkNonOwn(o); - - // Test monomorphic/optimized. - for (var i = 0; i < 1000; i++) { - checkNonOwn(o); - } - - // Test non-monomorphic. - for (var i = 0; i < 1000; i++) { - var oNew = Object.create(p); - oNew["s" + i] = i; - oNew[s1] = "bow-wow"; - checkNonOwn(oNew); - } -} -TestICs(); diff --git a/implementation-contributed/v8/mjsunit/harmony/promise-prototype-finally.js b/implementation-contributed/v8/mjsunit/harmony/promise-prototype-finally.js deleted file mode 100644 index b5456504faf..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/promise-prototype-finally.js +++ /dev/null @@ -1,619 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -load('test/mjsunit/test-async.js'); - -assertThrows(() => Promise.prototype.finally.call(5), TypeError); - -testAsync(assert => { - assert.plan(1); - - Promise.resolve(3).finally().then(x => { - assert.equals(3, x); - }, assert.unreachable); -}, "resolve/finally/then"); - -testAsync(assert => { - assert.plan(1); - - Promise.reject(3).finally().then(assert.unreachable, x => { - assert.equals(3, x); - }); -}, "reject/finally/then"); - -testAsync(assert => { - assert.plan(1); - - Promise.resolve(3).finally(2).then(x => { - assert.equals(3, x); - }, assert.unreachable); -}, "resolve/finally-return-notcallable/then"); - -testAsync(assert => { - assert.plan(1); - - Promise.reject(3).finally(2).then(assert.unreachable, e => { - assert.equals(3, e); - }); -}, "reject/finally-return-notcallable/then"); - -testAsync(assert => { - assert.plan(1); - - Promise.reject(3).finally().catch(reason => { - assert.equals(3, reason); - }); -}, "reject/finally/catch"); - -testAsync(assert => { - assert.plan(1); - - Promise.reject(3).finally().then(assert.unreachable).catch(reason => { - assert.equals(3, reason); - }); -}, "reject/finally/then/catch"); - -testAsync(assert => { - assert.plan(2); - - Promise.resolve(3) - .then(x => { - assert.equals(3, x); - return x; - }) - .finally() - .then(x => { - assert.equals(3, x); - }, assert.unreachable); -}, "resolve/then/finally/then"); - -testAsync(assert => { - assert.plan(2); - - Promise.reject(3) - .catch(x => { - assert.equals(3, x); - return x; - }) - .finally() - .then(x => { - assert.equals(3, x); - }, assert.unreachable); -}, "reject/catch/finally/then"); - -testAsync(assert => { - assert.plan(2); - - Promise.resolve(3) - .finally(function onFinally() { - print("in finally"); - assert.equals(0, arguments.length); - throw 1; - }) - .then(assert.unreachable, function onRejected(reason) { - assert.equals(1, reason); - }); -}, "resolve/finally-throw/then"); - -testAsync(assert => { - assert.plan(2); - - Promise.reject(3) - .finally(function onFinally() { - assert.equals(0, arguments.length); - throw 1; - }) - .then(assert.unreachable, function onRejected(reason) { - assert.equals(1, reason); - }); -}, "reject/finally-throw/then"); - -testAsync(assert => { - assert.plan(2); - - Promise.resolve(3) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return 4; - }) - .then(x => { - assert.equals(x, 3); - }, assert.unreachable); -}, "resolve/finally-return/then"); - -// reject/finally-return/then -testAsync(assert => { - assert.plan(2); - - Promise.reject(3) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return 4; - }) - .then(assert.unreachable, x => { - assert.equals(x, 3); - }); -}); - -// reject/catch-throw/finally-throw/then -testAsync(assert => { - assert.plan(3); - - Promise.reject(3) - .catch(e => { - assert.equals(3, e); - throw e; - }) - .finally(function onFinally() { - assert.equals(0, arguments.length); - throw 4; - }) - .then(assert.unreachable, function onRejected(e) { - assert.equals(4, e); - }); -}); - -testAsync(assert => { - assert.plan(3); - - Promise.resolve(3) - .then(e => { - assert.equals(3, e); - throw e; - }) - .finally(function onFinally() { - assert.equals(0, arguments.length); - throw 4; - }) - .then(assert.unreachable, function onRejected(e) { - assert.equals(4, e); - }); -}, "resolve/then-throw/finally-throw/then"); - -testAsync(assert => { - assert.plan(2); - - Promise.resolve(3) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return Promise.reject(4); - }) - .then(assert.unreachable, e => { - assert.equals(4, e); - }); -}, "resolve/finally-return-rejected-promise/then"); - -testAsync(assert => { - assert.plan(2); - - Promise.reject(3) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return Promise.reject(4); - }) - .then(assert.unreachable, e => { - assert.equals(4, e); - }); -}, "reject/finally-return-rejected-promise/then"); - -testAsync(assert => { - assert.plan(2); - - Promise.resolve(3) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return Promise.resolve(4); - }) - .then(x => { - assert.equals(3, x); - }, assert.unreachable); -}, "resolve/finally-return-resolved-promise/then"); - -testAsync(assert => { - assert.plan(2); - - Promise.reject(3) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return Promise.resolve(4); - }) - .then(assert.unreachable, e => { - assert.equals(3, e); - }); -}, "reject/finally-return-resolved-promise/then"); - -testAsync(assert => { - assert.plan(2); - - Promise.reject(3) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return Promise.resolve(4); - }) - .then(assert.unreachable, e => { - assert.equals(3, e); - }); -}, "reject/finally-return-resolved-promise/then"); - -testAsync(assert => { - assert.plan(2); - - var thenable = { - then: function(onResolve, onReject) { - onResolve(5); - } - }; - - Promise.resolve(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return thenable; - }) - .then(x => { - assert.equals(5, x); - }, assert.unreachable); -}, "resolve/finally-thenable-resolve/then"); - -testAsync(assert => { - assert.plan(2); - - var thenable = { - then: function(onResolve, onReject) { - onResolve(1); - } - }; - - Promise.reject(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return thenable; - }) - .then(assert.unreachable, e => { - assert.equals(5, e); - }); -}, "reject/finally-thenable-resolve/then"); - -testAsync(assert => { - assert.plan(2); - - var thenable = { - then: function(onResolve, onReject) { - onReject(1); - } - }; - - Promise.reject(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return thenable; - }) - .then(assert.unreachable, e => { - assert.equals(1, e); - }); -}, "reject/finally-thenable-reject/then"); - -testAsync(assert => { - assert.plan(2); - - var thenable = { - then: function(onResolve, onReject) { - onReject(1); - } - }; - - Promise.resolve(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return thenable; - }) - .then(assert.unreachable, e => { - assert.equals(1, e); - }); -}, "resolve/finally-thenable-reject/then"); - -testAsync(assert => { - assert.plan(3); - - Promise.resolve(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .then(x => { - assert.equals(5, x); - }, assert.unreachable); -}, "resolve/finally/finally/then"); - -testAsync(assert => { - assert.plan(3); - - Promise.resolve(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - throw 1; - }) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .then(assert.unreachable, e => { - assert.equals(1, e); - }); -}, "resolve/finally-throw/finally/then"); - -testAsync(assert => { - assert.plan(3); - - Promise.resolve(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return Promise.reject(1); - }) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .then(assert.unreachable, e => { - assert.equals(1, e); - }); -}, "resolve/finally-return-rejected-promise/finally/then"); - -testAsync(assert => { - assert.plan(3); - - Promise.reject(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .then(assert.unreachable, e => { - assert.equals(5, e); - }); -}, "reject/finally/finally/then"); - -testAsync(assert => { - assert.plan(3); - - Promise.reject(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - throw 1; - }) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .then(assert.unreachable, e => { - assert.equals(1, e); - }); -}, "reject/finally-throw/finally/then"); - -testAsync(assert => { - assert.plan(3); - - Promise.reject(5) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return Promise.reject(1); - }) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .then(assert.unreachable, e => { - assert.equals(1, e); - }); -}, "reject/finally-return-rejected-promise/finally/then"); - -testAsync(assert => { - assert.plan(2); - - var resolve, reject; - var deferred = new Promise((x, y) => { - resolve = x; - reject = y; - }); - - Promise.resolve(1) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return deferred; - }) - .then(x => { - assert.equals(1, x); - }, assert.unreachable); - - resolve(5); -}, "resolve/finally-deferred-resolve/then"); - -// -testAsync(assert => { - assert.plan(2); - - var resolve, reject; - var deferred = new Promise((x, y) => { - resolve = x; - reject = y; - }); - Promise.resolve(1) - .finally(function onFinally() { - assert.equals(0, arguments.length); - return deferred; - }) - .then(assert.unreachable, e => { - assert.equals(5, e); - }); - - reject(5); -}, "resolve/finally-deferred-reject/then"); - -testAsync(assert => { - assert.plan(2); - - var resolve, reject; - var deferred = new Promise((x, y) => { - resolve = x; - reject = y; - }); - Promise.all([deferred]) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .then(([x]) => { - assert.equals(1, x); - }, assert.unreachable); - - resolve(1); -}, "all/finally/then"); - -testAsync(assert => { - assert.plan(2); - - var resolve, reject; - var d1 = new Promise((x, y) => { - resolve = x; - reject = y; - }); - var d2 = new Promise((x, y) => { - resolve = x; - reject = y; - }); - Promise.race([d1, d2]) - .finally(function onFinally() { - assert.equals(0, arguments.length); - }) - .then(x => { - assert.equals(1, x); - }, assert.unreachable); - - resolve(1); -}, "race/finally/then"); - -testAsync(assert => { - assert.plan(2); - - class MyPromise extends Promise { - then(onFulfilled, onRejected) { - assert.equals(5, onFulfilled); - assert.equals(5, onRejected); - return super.then(onFulfilled, onRejected); - } - } - - MyPromise.resolve(3).finally(5); -}, "resolve/finally-customthen/then"); - -testAsync(assert => { - assert.plan(2); - - class MyPromise extends Promise { - then(onFulfilled, onRejected) { - assert.equals(5, onFulfilled); - assert.equals(5, onRejected); - return super.then(onFulfilled, onRejected); - } - } - - MyPromise.reject(3).finally(5); -}, "reject/finally-customthen/then"); - -var descriptor = Object.getOwnPropertyDescriptor(Promise.prototype, "finally"); -assertTrue(descriptor.writable); -assertTrue(descriptor.configurable); -assertFalse(descriptor.enumerable); -assertEquals("finally", Promise.prototype.finally.name); -assertEquals(1, Promise.prototype.finally.length); - -var count = 0; -class FooPromise extends Promise { - constructor(resolve, reject) { - count++; - return super(resolve, reject); - } -} - -testAsync(assert => { - assert.plan(1); - count = 0; - - new FooPromise(r => r()).finally(() => {}).then(() => { - assert.equals(6, count); - }); -}, "finally/speciesconstructor"); - -testAsync(assert => { - assert.plan(1); - count = 0; - - FooPromise.resolve().finally(() => {}).then(() => { - assert.equals(6, count); - }) -}, "resolve/finally/speciesconstructor"); - -testAsync(assert => { - assert.plan(1); - count = 0; - - FooPromise.reject().finally(() => {}).catch(() => { - assert.equals(6, count); - }) -}, "reject/finally/speciesconstructor"); - -testAsync(assert => { - assert.plan(2); - - class MyPromise extends Promise { - static get [Symbol.species]() { return Promise; } - } - - var p = Promise - .resolve() - .finally(() => MyPromise.resolve()); - - assert.equals(true, p instanceof Promise); - assert.equals(false, p instanceof MyPromise); -}, "finally/Symbol.Species"); - -testAsync(assert => { - assert.plan(3); - let resolve; - let value = 0; - - let p = new Promise(r => { resolve = r }); - - Promise.resolve() - .finally(() => { - return p; - }) - .then(() => { - value = 1; - }); - - // This makes sure we take the fast path in PromiseResolve that just - // returns the promise it receives as value. If we had to create - // another wrapper promise, that would cause an additional tick in - // the microtask queue. - Promise.resolve() - // onFinally has run. - .then(() => { resolve(); }) - // thenFinally has run. - .then(() => assert.equals(0, value)) - // promise returned by .finally has been resolved. - .then(() => assert.equals(0, value)) - // onFulfilled callback of .then() has run. - .then(() => assert.equals(1, value)); - -}, "PromiseResolve-ordering"); - -(function testIsObject() { - var called = false; - var p = new Proxy(Promise.resolve(), {}); - var oldThen = Promise.prototype.then; - Promise.prototype.then = () => called = true; - Promise.prototype.finally.call(p); - assertTrue(called); - Promise.prototype.then = oldThen; -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/public-instance-class-fields.js b/implementation-contributed/v8/mjsunit/harmony/public-instance-class-fields.js deleted file mode 100644 index 198d6aa821c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/public-instance-class-fields.js +++ /dev/null @@ -1,716 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-public-fields -"use strict"; - -{ - class C { - a; - } - - assertEquals(undefined, C.a); - - let c = new C; - let descriptor = Object.getOwnPropertyDescriptor(c, 'a'); - assertTrue(c.hasOwnProperty('a')); - assertTrue(descriptor.writable); - assertTrue(descriptor.enumerable); - assertTrue(descriptor.configurable); - assertEquals(undefined, c.a); -} - -{ - class C { - x = 1; - constructor() {} - } - - let c = new C; - assertEquals(1, c.x); -} - -{ - function t() { - class X { - x = 1; - constructor() {} - } - - var x = new X; - return x.x; - } - - assertEquals(1, t()); -} - -{ - let x = 'a'; - class C { - a; - b = x; - c = 1; - hasOwnProperty() { return 1;} - } - - let c = new C; - assertEquals(undefined, c.a); - assertEquals('a', c.b); - assertEquals(1, c.c); - assertEquals(undefined, c.d); - assertEquals(1, c.hasOwnProperty()); -} - -{ - class C { - x = Object.freeze(this); - c = 42; - } - assertThrows(() => { new C; }, TypeError); -} - -{ - class C { - c = this; - d = () => this; - } - - let c = new C; - assertEquals(c, c.c); - assertEquals(c, c.d()); - - assertEquals(undefined, C.c); - assertEquals(undefined, C.d); -} - -{ - class C { - c = 1; - d = this.c; - } - - let c = new C; - assertEquals(1, c.c); - assertEquals(1, c.d); - - assertEquals(undefined, C.c); - assertEquals(undefined, C.d); -} - -{ - class C { - b = 1; - c = () => this.b; - } - - let c = new C; - assertEquals(1, c.b); - assertEquals(1, c.c()); - - assertEquals(undefined, C.c); - assertEquals(undefined, C.b); -} - -{ - let x = 'a'; - class C { - b = 1; - c = () => this.b; - e = () => x; - } - - let c = new C; - assertEquals(1, c.b); - assertEquals('a', c.e()); - - let a = {b : 2 }; - assertEquals(1, c.c.call(a)); - - assertEquals(undefined, C.b); - assertEquals(undefined, C.c); -} - -{ - let x = 'a'; - class C { - c = 1; - d = function() { return this.c; }; - e = function() { return x; }; - } - - let c = new C; - assertEquals(1, c.c); - assertEquals(1, c.d()); - assertEquals('a', c.e()); - - c.c = 2; - assertEquals(2, c.d()); - - let a = {c : 3 }; - assertEquals(3, c.d.call(a)); - - assertThrows(c.d.bind(undefined)); - - assertEquals(undefined, C.c); - assertEquals(undefined, C.d); - assertEquals(undefined, C.e); -} - -{ - class C { - c = function() { return 1 }; - } - - let c = new C; - assertEquals('c', c.c.name); -} - -{ - let d = function() { return new.target; } - class C { - c = d; - } - - let c = new C; - assertEquals(undefined, c.c()); - assertEquals(new d, new c.c()); -} - -{ - class C { - c = () => new.target; - } - - let c = new C; - assertEquals(undefined, c.c()); -} - -{ - let run = false; - class C { - c = () => { - let b; - class A { - constructor() { - b = new.target; - } - }; - new A; - run = true; - assertEquals(A, b); - } - } - - let c = new C; - c.c(); - assertTrue(run); -} - -{ - class C { - c = new.target; - } - - let c = new C; - assertEquals(undefined, c.c); -} - -{ - class B { - c = 1; - } - - class C extends B {} - - let c = new C; - assertEquals(1, c.c); -} - -{ - assertThrows(() => { - class C { - c = new C; - } - let c = new C; - }); -} - -(function test() { - function makeC() { - var x = 1; - - return class { - a = () => () => x; - } - } - - let C = makeC(); - let c = new C; - let f = c.a(); - assertEquals(1, f()); -})() - -{ - let c1 = "c"; - class C { - ["a"] = 1; - ["b"]; - [c1]; - } - - let c = new C; - assertEquals(1, c.a); - assertEquals(undefined, c.b); - assertEquals(undefined, c[c1]); -} - -{ - let log = []; - function run(i) { - log.push(i); - return i; - } - - class C { - [run(1)] = run(6); - [run(2)] = run(7); - [run(3)]() { run(9);} - [run(4)] = run(8); - [run(5)]() { throw new Error('should not execute');}; - } - - let c = new C; - c[3](); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], log); -} - -function x() { - // This tests lazy parsing. - return function() { - let log = []; - function run(i) { - log.push(i); - return i; - } - - class C { - [run(1)] = run(6); - [run(2)] = run(7); - [run(3)]() { run(9);} - [run(4)] = run(8); - [run(5)]() { throw new Error('should not execute');}; - } - - let c = new C; - c[3](); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], log); - } -} -x()(); - -{ - class C {} - class D { - [C]; - } - - let d = new D; - assertThrows(() => { class X { [X] } let x = new X;}); - assertEquals(undefined, d[C]); -} - -{ - class B { - a = 1; - } - - class C extends B { - b = 2; - constructor() { - super(); - } - } - - let c = new C; - assertEquals(1, c.a); - assertEquals(2, c.b); -} - -{ - var log = []; - function addToLog(item) { log.push(item); } - - class B { - a = 1; - constructor() { - addToLog("base constructor"); - } - } - - function initF() { - addToLog("init f"); - return 1; - } - - class C extends B { - f = initF(); - - constructor() { - addToLog("derived constructor"); - var t = () => { - addToLog("t"); - if (1==-1) { - super(); - } else { - super(); - } - } - (() => { - addToLog("anon"); - t(); - })(); - } - } - - let c = new C; - assertEquals(1, c.f); - assertEquals(1, c.a); - assertEquals(["derived constructor","anon","t","base constructor","init f"], - log); -} - -{ - class B { - a = 1; - returnA = () => this.a; - } - - class C extends B { - c = this.a; - d = 2; - returnC = () => this.c; - returnD = () => this.d; - } - - let c = new C; - assertEquals(1, c.a); - assertEquals(1, c.returnA()); - assertEquals(1, c.c); - assertEquals(1, c.returnA()); - assertEquals(1, c.returnC()); - assertEquals(2, c.d); - assertEquals(2, c.returnD()); - - let c2 = new C; - assertNotEquals(c2.returnA, c.returnA); - assertNotEquals(c2.returnC, c.returnC); - assertNotEquals(c2.returnD, c.returnD); -} - -{ - let foo = undefined; - class B { - set d(x) { - foo = x; - } - } - - class C extends B { - d = 2; - } - - let c = new C; - assertEquals(undefined, foo); - assertEquals(2, c.d); -} - -{ - class B {} - class C extends B { - constructor() { - super(); - } - - c = 1; - } - - let c = new C; - assertEquals(1, c.c); -} - -{ - class B {} - class C extends B { - constructor() { - let t = () => { - super(); - } - t(); - } - - c = 1; - } - - let c = new C; - assertEquals(1, c.c); -} - -{ - let log = []; - - class B {} - - class C extends B { - - x = (log.push(1), 1); - - constructor() { - let t = () => { - class D extends B { - - x = (log.push(2), 2); - - constructor() { - let p = () => { - super(); - } - - p(); - } - } - - let d = new D(); - assertEquals(2, d.x); - super(); - } - - t(); - } - } - - - let c = new C; - assertEquals(1, c.x); - assertEquals([2, 1], log); -} - -{ - let log = []; - class C1 extends class {} { - x = log.push(1); - constructor() { - var t = () => super(); - super(); - t(); - } - } - - assertThrows(() => new C1, ReferenceError); - assertEquals([1], log); - - log = []; - class C2 extends class {} { - x = log.push(1); - constructor() { - var t = () => super(); - t(); - super(); - } - } - - assertThrows(() => new C2, ReferenceError); - assertEquals([1], log); -} - -{ - class C1 extends class {} { - x = 1 - constructor() { - eval("super()"); - } - } - - let c = new C1; - assertEquals(1, c.x); - - class C2 extends class {} { - x = 1 - constructor() { - var t = () => { - eval("super()"); - } - t(); - } - } - - c = new C2; - assertEquals(1, c.x); -} - -{ - class C { - ['x'] = 1; - ['y'] = 2; - } - - class C1 extends C { - ['x'] = 3; - ['z'] = 4; - } - - let c = new C1; - assertEquals(3, c.x); - assertEquals(2, c.y); - assertEquals(4, c.z); -} - -{ - class X extends class {} { - c = 1; - - constructor() { - let t = () => { - - class P extends class {} { - constructor() { - let t = () => { super(); }; - t(); - } - } - - let p = new P; - assertEquals(undefined, p.c); - super(); - } - - t(); - } - } - - let x = new X; - assertEquals(1, x.c); -} - -{ - class A { - a() { return 1; } - } - - class C extends A { - b = super.a(); - c = () => super.a; - d = () => super.a(); - e = super.a; - f = super.b; - } - - let c = new C; - assertEquals(1, c.a()); - assertEquals(1, c.b); - assertEquals(1, c.c()()); - assertEquals(1, c.d()); - assertEquals(1, c.e()); - assertFalse(Object.prototype.hasOwnProperty.call(c, 'a')); - assertEquals(c.a, c.e); - assertEquals(undefined, c.f); -} - -{ - function t() { - return class { - ['x'] = 1; - } - } - - let klass = t(); - let obj = new klass; - assertEquals(1, obj.x); -} - -{ - new class { - t = 1; - constructor(t = this.t) { - assertEquals(1, t); - } - } - - new class extends class {} { - t = 1; - constructor(t = (super(), this.t)) { - assertEquals(1, t); - } - } - - assertThrows(() => { - new class extends class {} { - t = 1; - constructor(t = this.t) { - super(); - } - } - }, ReferenceError); -} - -{ - class X { - p = function() { return arguments[0]; } - } - - let x = new X; - assertEquals(1, x.p(1)); -} - -{ - class X { - t = () => { - function p() { return arguments[0]; }; - return p; - } - } - - let x = new X; - let p = x.t(); - assertEquals(1, p(1)); -} - -{ - class X { - t = () => { - function p() { return eval("arguments[0]"); }; - return p; - } - } - - let x = new X; - let p = x.t(); - assertEquals(1, p(1)); -} - -{ - class X { - p = eval("(function() { return arguments[0]; })(1)"); - } - - let x = new X; - assertEquals(1, x.p); -} - -{ - let thisInInitializer, thisInConstructor, thisFromArrowFn, arrowFn; - let C = class extends class {} { - field = (thisInInitializer = this, thisFromArrowFn = arrowFn()); - constructor() { - arrowFn = () => this; - super(); - thisInConstructor = this; - } - }; - - let c = new C(); - - assertSame(thisInInitializer, c); - assertSame(thisFromArrowFn, c); - assertSame(thisInConstructor, c); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/public-static-class-fields.js b/implementation-contributed/v8/mjsunit/harmony/public-static-class-fields.js deleted file mode 100644 index 0334a877869..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/public-static-class-fields.js +++ /dev/null @@ -1,472 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-public-fields --harmony-static-fields - -"use strict"; - -{ - class C { - static a; - } - - assertEquals(undefined, C.a); - let descriptor = Object.getOwnPropertyDescriptor(C, 'a'); - assertTrue(C.hasOwnProperty('a')); - assertTrue(descriptor.writable); - assertTrue(descriptor.enumerable); - assertTrue(descriptor.configurable); - - let c = new C; - assertEquals(undefined, c.a); -} - -{ - let x = 'a'; - class C { - static a; - static hasOwnProperty = function() { return 1; } - static b = x; - static c = 1; - } - - assertEquals(undefined, C.a); - assertEquals('a', C.b); - assertEquals(1, C.c); - assertEquals(1, C.hasOwnProperty()); - - let c = new C; - assertEquals(undefined, c.a); - assertEquals(undefined, c.b); - assertEquals(undefined, c.c); -} - -{ - assertThrows(() => { - class C { - static x = Object.freeze(this); - static c = 42; - } - }, TypeError); -} - -{ - class C { - static c = this; - static d = () => this; - } - - assertEquals(C, C.c); - assertEquals(C, C.d()); - - let c = new C; - assertEquals(undefined, c.c); - assertEquals(undefined, c.d); -} - -{ - class C { - static c = 1; - static d = this.c; - } - - assertEquals(1, C.c); - assertEquals(1, C.d); - - let c = new C; - assertEquals(undefined, c.c); - assertEquals(undefined, c.d); -} - -{ - class C { - static b = 1; - static c = () => this.b; - } - - assertEquals(1, C.b); - assertEquals(1, C.c()); - - let c = new C; - assertEquals(undefined, c.c); -} - -{ - let x = 'a'; - class C { - static b = 1; - static c = () => this.b; - static e = () => x; - } - - assertEquals(1, C.b); - assertEquals('a', C.e()); - - let a = {b : 2 }; - assertEquals(1, C.c.call(a)); - - let c = new C; - assertEquals(undefined, c.b); - assertEquals(undefined, c.c); -} - -{ - let x = 'a'; - class C { - static c = 1; - static d = function() { return this.c; }; - static e = function() { return x; }; - } - - assertEquals(1, C.c); - assertEquals(1, C.d()); - assertEquals('a', C.e()); - - C.c = 2; - assertEquals(2, C.d()); - - let a = {c : 3 }; - assertEquals(3, C.d.call(a)); - - assertThrows(C.d.bind(undefined)); - - let c = new C; - assertEquals(undefined, c.c); - assertEquals(undefined, c.d); - assertEquals(undefined, c.e); -} - -{ - class C { - static c = function() { return 1 }; - } - - assertEquals('c', C.c.name); -} - -{ - let d = function() { return new.target; } - class C { - static c = d; - } - - assertEquals(undefined, C.c()); - assertEquals(new d, new C.c()); -} - -{ - class C { - static c = () => new.target; - } - - assertEquals(undefined, C.c()); -} - -{ - class C { - static c = () => { - let b; - class A { - constructor() { - b = new.target; - } - }; - new A; - assertEquals(A, b); - } - } - - C.c(); -} - -{ - class C { - static c = new.target; - } - - assertEquals(undefined, C.c); -} - -{ - class B { - static d = 1; - static b = () => this.d; - } - - class C extends B { - static c = super.d; - static d = () => super.d; - static e = () => super.b(); - } - - assertEquals(1, C.c); - assertEquals(1, C.d()); - assertEquals(1, C.e()); -} - -{ - let foo = undefined; - class B { - static set d(x) { - foo = x; - } - } - - class C extends B { - static d = 2; - } - - assertEquals(undefined, foo); - assertEquals(2, C.d); -} - - -{ - let C = class { - static c; - }; - - assertEquals("C", C.name); -} - -{ - class C { - static c = new C; - } - - assertTrue(C.c instanceof C); -} - -(function test() { - function makeC() { - var x = 1; - - return class { - static a = () => () => x; - } - } - - let C = makeC(); - let f = C.a(); - assertEquals(1, f()); -})() - -{ - let c = "c"; - class C { - static ["a"] = 1; - static ["b"]; - static [c]; - } - - assertEquals(1, C.a); - assertEquals(undefined, C.b); - assertEquals(undefined, C[c]); -} - -{ - let log = []; - function run(i) { - log.push(i); - return i; - } - - class C { - static [run(1)] = run(6); - static [run(2)] = run(7); - [run(3)]() { run(9);} - static [run(4)] = run(8); - static [run(5)]() { throw new Error('should not execute');}; - } - - let c = new C; - c[3](); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], log); -} - - - -function x() { - - // This tests lazy parsing. - return function() { - let log = []; - function run(i) { - log.push(i); - return i; - } - - class C { - static [run(1)] = run(6); - static [run(2)] = run(7); - [run(3)]() { run(9);} - static [run(4)] = run(8); - static [run(5)]() { throw new Error('should not execute');}; - } - - let c = new C; - c[3](); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], log); - } -} -x()(); - -{ - let log = []; - function run(i) { - log.push(i); - return i; - } - - class C { - [run(1)] = run(7); - [run(2)] = run(8); - [run(3)]() { run(9);} - static [run(4)] = run(6); - [run(5)]() { throw new Error('should not execute');}; - } - - let c = new C; - c[3](); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], log); -} - -function y() { - // This tests lazy parsing. - return function() { - let log = []; - function run(i) { - log.push(i); - return i; - } - - class C { - [run(1)] = run(7); - [run(2)] = run(8); - [run(3)]() { run(9);} - static [run(4)] = run(6); - [run(5)]() { throw new Error('should not execute');}; - } - - let c = new C; - c[3](); - assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], log); - } -} -y()(); - -{ - class C {} - class D { - static [C]; - } - - assertThrows(() => { class X { static [X] } }); - assertEquals(undefined, D[C]); -} - -{ - function t() { - return class { - static ['x'] = 2; - } - } - - let klass = t(); - let obj = new klass; - assertEquals(2, klass.x); -} - -{ - let x = 'a'; - class C { - a; - b = x; - c = 1; - hasOwnProperty() { return 1;} - static [x] = 2; - static b = 3; - static d; - } - - assertEquals(2, C.a); - assertEquals(3, C.b); - assertEquals(undefined, C.d); - assertEquals(undefined, C.c); - - let c = new C; - assertEquals(undefined, c.a); - assertEquals('a', c.b); - assertEquals(1, c.c); - assertEquals(undefined, c.d); - assertEquals(1, c.hasOwnProperty()); -} - -{ - function t() { - return class { - ['x'] = 1; - static ['x'] = 2; - } - } - - let klass = t(); - let obj = new klass; - assertEquals(1, obj.x); - assertEquals(2, klass.x); -} - - -{ - class X { - static p = function() { return arguments[0]; } - } - - assertEquals(1, X.p(1)); -} - -{ - class X { - static t = () => { - function p() { return arguments[0]; }; - return p; - } - } - - let p = X.t(); - assertEquals(1, p(1)); -} - -{ - class X { - static t = () => { - function p() { return eval("arguments[0]"); }; - return p; - } - } - - let p = X.t(); - assertEquals(1, p(1)); -} - -{ - class X { - static p = eval("(function() { return arguments[0]; })(1)"); - } - - assertEquals(1, X.p); -} - -{ - let p = { z: class { static y = this.name } } - assertEquals(p.z.y, 'z'); - - let q = { ["z"]: class { static y = this.name } } - assertEquals(q.z.y, 'z'); - - const C = class { - static x = this.name; - } - assertEquals(C.x, 'C'); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-change-exec.js b/implementation-contributed/v8/mjsunit/harmony/regexp-change-exec.js deleted file mode 100644 index ff84506d894..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-change-exec.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -class MyError extends Error { } -RegExp.prototype.exec = () => { throw new MyError() }; -assertThrows(() => "foo".match(/bar/), MyError); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-dotall.js b/implementation-contributed/v8/mjsunit/harmony/regexp-dotall.js deleted file mode 100644 index d7b45b69f4f..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-dotall.js +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function toSlowMode(re) { - re.exec = (str) => RegExp.prototype.exec.call(re, str); - return re; -} - -// Construction does not throw. -{ - let re = /./s; - re = RegExp(".", "s"); - re = new RegExp(".", "s"); - assertThrows(() => new RegExp(".", "wtf"), SyntaxError); -} - -// The flags accessors. -{ - let re = /./s; - assertEquals("s", re.flags); - assertFalse(re.global); - assertFalse(re.ignoreCase); - assertFalse(re.multiline); - assertFalse(re.sticky); - assertFalse(re.unicode); - assertTrue(re.dotAll); - - re = toSlowMode(/./s); - assertEquals("s", re.flags); - assertFalse(re.global); - assertFalse(re.ignoreCase); - assertFalse(re.multiline); - assertFalse(re.sticky); - assertFalse(re.unicode); - assertTrue(re.dotAll); - - re = /./gimyus; - assertEquals("gimsuy", re.flags); - assertTrue(re.global); - assertTrue(re.ignoreCase); - assertTrue(re.multiline); - assertTrue(re.sticky); - assertTrue(re.unicode); - assertTrue(re.dotAll); - - re = /./gimyu; - assertEquals("gimuy", re.flags); - assertTrue(re.global); - assertTrue(re.ignoreCase); - assertTrue(re.multiline); - assertTrue(re.sticky); - assertTrue(re.unicode); - assertFalse(re.dotAll); -} - -// Different construction variants with all flags. -{ - assertEquals("gimsuy", new RegExp("", "yusmig").flags); - assertEquals("gimsuy", new RegExp().compile("", "yusmig").flags); -} - -// Default '.' behavior. -{ - let re = /^.$/; - assertTrue(re.test("a")); - assertTrue(re.test("3")); - assertTrue(re.test("π")); - assertTrue(re.test("\u2027")); - assertTrue(re.test("\u0085")); - assertTrue(re.test("\v")); - assertTrue(re.test("\f")); - assertTrue(re.test("\u180E")); - assertFalse(re.test("\u{10300}")); // Supplementary plane. - assertFalse(re.test("\n")); - assertFalse(re.test("\r")); - assertFalse(re.test("\u2028")); - assertFalse(re.test("\u2029")); -} - -// Default '.' behavior (unicode). -{ - let re = /^.$/u; - assertTrue(re.test("a")); - assertTrue(re.test("3")); - assertTrue(re.test("π")); - assertTrue(re.test("\u2027")); - assertTrue(re.test("\u0085")); - assertTrue(re.test("\v")); - assertTrue(re.test("\f")); - assertTrue(re.test("\u180E")); - assertTrue(re.test("\u{10300}")); // Supplementary plane. - assertFalse(re.test("\n")); - assertFalse(re.test("\r")); - assertFalse(re.test("\u2028")); - assertFalse(re.test("\u2029")); -} - -// DotAll '.' behavior. -{ - let re = /^.$/s; - assertTrue(re.test("a")); - assertTrue(re.test("3")); - assertTrue(re.test("π")); - assertTrue(re.test("\u2027")); - assertTrue(re.test("\u0085")); - assertTrue(re.test("\v")); - assertTrue(re.test("\f")); - assertTrue(re.test("\u180E")); - assertFalse(re.test("\u{10300}")); // Supplementary plane. - assertTrue(re.test("\n")); - assertTrue(re.test("\r")); - assertTrue(re.test("\u2028")); - assertTrue(re.test("\u2029")); -} - -// DotAll '.' behavior (unicode). -{ - let re = /^.$/su; - assertTrue(re.test("a")); - assertTrue(re.test("3")); - assertTrue(re.test("π")); - assertTrue(re.test("\u2027")); - assertTrue(re.test("\u0085")); - assertTrue(re.test("\v")); - assertTrue(re.test("\f")); - assertTrue(re.test("\u180E")); - assertTrue(re.test("\u{10300}")); // Supplementary plane. - assertTrue(re.test("\n")); - assertTrue(re.test("\r")); - assertTrue(re.test("\u2028")); - assertTrue(re.test("\u2029")); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-named-captures.js b/implementation-contributed/v8/mjsunit/harmony/regexp-named-captures.js deleted file mode 100644 index e1fa60dca42..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-named-captures.js +++ /dev/null @@ -1,541 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Malformed named captures. -assertThrows("/(?<>a)/u", SyntaxError); // Empty name. -assertThrows("/(?a)/u", SyntaxError); // Name starting with digits. -assertThrows("/(?<:a>a)/u", SyntaxError); // Name starting with invalid char. -assertThrows("/(?a)/u", SyntaxError); // Name containing with invalid char. -assertThrows("/(?a)(?a)/u", SyntaxError); // Duplicate name. -assertThrows("/(?a)(?b)(?a)/u", SyntaxError); // Duplicate name. -assertThrows("/\\k/u", SyntaxError); // Invalid reference. -assertThrows("/\\k.)\\k/u", SyntaxError); // Lone \k. -assertThrows("/(?.)\\k.)\\k/u", SyntaxError); // Invalid reference. -assertThrows("/(?a)\\k/u", SyntaxError); // Invalid reference. -assertThrows("/(?a)\\k/u", SyntaxError); // Invalid reference. -assertThrows("/\\k(?a)/u", SyntaxError); // Invalid reference. -assertThrows("/(?\\a)/u", SyntaxError); // Identity escape in capture. - -// Behavior in non-unicode mode. -assertThrows("/(?<>a)/", SyntaxError); -assertThrows("/(?a)/", SyntaxError); -assertThrows("/(?<:a>a)/", SyntaxError); -assertThrows("/(?a)/", SyntaxError); -assertThrows("/(?a)(?a)/", SyntaxError); -assertThrows("/(?a)(?b)(?a)/", SyntaxError); -assertTrue(/\k/.test("k")); -assertTrue(/\k<4>/.test("k<4>")); -assertTrue(/\k.)\\k/", SyntaxError); -assertThrows("/(?.)\\k.)\\k/", SyntaxError); -assertThrows("/(?a)\\k/", SyntaxError); -assertThrows("/(?a)\\k/", SyntaxError); -assertThrows("/\\k(?a)/", SyntaxError); -assertThrows("/\\ka)/", SyntaxError); -assertTrue(/(?\a)/.test("a")); - -assertEquals(["k"], "xxxkxxx".match(/\k/)); -assertEquals(["kxxx".match(/\k.)(?.)(?.)\k\k\k/.exec("abccba").groups); - -// A couple of corner cases around '\k' as named back-references vs. identity -// escapes. -assertTrue(/\k(?<=>)a/.test("ka")); -assertTrue(/\k(?a")); -assertTrue(/\k(x)/.test("kx")); -assertTrue(/\k(?x)/.test("x")); -assertThrows("/\\k(?x)/", SyntaxError); -assertThrows("/\\k.)/", SyntaxError); -assertThrows("/\\k(?.)/", SyntaxError); - -// Basic named groups. -assertEquals(["a", "a"], "bab".match(/(?a)/u)); -assertEquals(["a", "a"], "bab".match(/(?a)/u)); -assertEquals(["a", "a"], "bab".match(/(?<_>a)/u)); -assertEquals(["a", "a"], "bab".match(/(?<$>a)/u)); -assertEquals(["bab", "a"], "bab".match(/.(?<$>a)./u)); -assertEquals(["bab", "a", "b"], "bab".match(/.(?a)(.)/u)); -assertEquals(["bab", "a", "b"], "bab".match(/.(?a)(?.)/u)); -assertEquals(["bab", "ab"], "bab".match(/.(?\w\w)/u)); -assertEquals(["bab", "bab"], "bab".match(/(?\w\w\w)/u)); -assertEquals(["bab", "ba", "b"], "bab".match(/(?\w\w)(?\w)/u)); - -assertEquals(["a", "a"], "bab".match(/(?a)/)); -assertEquals(["a", "a"], "bab".match(/(?a)/)); -assertEquals(["a", "a"], "bab".match(/(?<_>a)/)); -assertEquals(["a", "a"], "bab".match(/(?<$>a)/)); -assertEquals(["bab", "a"], "bab".match(/.(?<$>a)./)); -assertEquals(["bab", "a", "b"], "bab".match(/.(?a)(.)/)); -assertEquals(["bab", "a", "b"], "bab".match(/.(?a)(?.)/)); -assertEquals(["bab", "ab"], "bab".match(/.(?\w\w)/)); -assertEquals(["bab", "bab"], "bab".match(/(?\w\w\w)/)); -assertEquals(["bab", "ba", "b"], "bab".match(/(?\w\w)(?\w)/)); - -assertEquals("bab".match(/(a)/u), "bab".match(/(?a)/u)); -assertEquals("bab".match(/(a)/u), "bab".match(/(?a)/u)); -assertEquals("bab".match(/(a)/u), "bab".match(/(?<_>a)/u)); -assertEquals("bab".match(/(a)/u), "bab".match(/(?<$>a)/u)); -assertEquals("bab".match(/.(a)./u), "bab".match(/.(?<$>a)./u)); -assertEquals("bab".match(/.(a)(.)/u), "bab".match(/.(?a)(.)/u)); -assertEquals("bab".match(/.(a)(.)/u), "bab".match(/.(?a)(?.)/u)); -assertEquals("bab".match(/.(\w\w)/u), "bab".match(/.(?\w\w)/u)); -assertEquals("bab".match(/(\w\w\w)/u), "bab".match(/(?\w\w\w)/u)); -assertEquals("bab".match(/(\w\w)(\w)/u), "bab".match(/(?\w\w)(?\w)/u)); - -assertEquals(["bab", "b"], "bab".match(/(?b).\1/u)); -assertEquals(["baba", "b", "a"], "baba".match(/(.)(?a)\1\2/u)); -assertEquals(["baba", "b", "a", "b", "a"], - "baba".match(/(.)(?a)(?\1)(\2)/u)); -assertEquals(["<)a/u)); -assertEquals([">a", ">"], ">a".match(/(?>)a/u)); - -// Named references. -assertEquals(["bab", "b"], "bab".match(/(?.).\k/u)); -assertNull("baa".match(/(?.).\k/u)); - -// Nested groups. -assertEquals(["bab", "bab", "ab", "b"], "bab".match(/(?.(?.(?.)))/u)); -assertEquals({a: "bab", b: "ab", c: "b"}, - "bab".match(/(?.(?.(?.)))/u).groups); - -// Reference inside group. -assertEquals(["bab", "b"], "bab".match(/(?\k\w)../u)); -assertEquals({a: "b"}, "bab".match(/(?\k\w)../u).groups); - -// Reference before group. -assertEquals(["bab", "b"], "bab".match(/\k(?b)\w\k/u)); -assertEquals({a: "b"}, "bab".match(/\k(?b)\w\k/u).groups); -assertEquals(["bab", "b", "a"], "bab".match(/(?b)\k(?a)\k/u)); -assertEquals({a: "a", b: "b"}, - "bab".match(/(?b)\k(?a)\k/u).groups); - -assertEquals(["bab", "b"], "bab".match(/\k(?b)\w\k/)); -assertEquals(["bab", "b", "a"], "bab".match(/(?b)\k(?a)\k/)); - -// Reference properties. -assertEquals("a", /(?a)(?b)\k/u.exec("aba").groups.a); -assertEquals("b", /(?a)(?b)\k/u.exec("aba").groups.b); -assertEquals(undefined, /(?a)(?b)\k/u.exec("aba").groups.c); -assertEquals(undefined, /(?a)(?b)\k|(?c)/u.exec("aba").groups.c); - -// Unicode names. -assertEquals("a", /(?<π>a)/u.exec("bab").groups.π); -assertEquals("a", /(?<\u{03C0}>a)/u.exec("bab").groups.π); -assertEquals("a", /(?<π>a)/u.exec("bab").groups.\u03C0); -assertEquals("a", /(?<\u{03C0}>a)/u.exec("bab").groups.\u03C0); -assertEquals("a", /(?<$>a)/u.exec("bab").groups.$); -assertEquals("a", /(?<_>a)/u.exec("bab").groups._); -assertEquals("a", /(?<$𐒤>a)/u.exec("bab").groups.$𐒤); -assertEquals("a", /(?<_\u200C>a)/u.exec("bab").groups._\u200C); -assertEquals("a", /(?<_\u200D>a)/u.exec("bab").groups._\u200D); -assertEquals("a", /(?<ಠ_ಠ>a)/u.exec("bab").groups.ಠ_ಠ); -assertThrows('/(?<❤>a)/u', SyntaxError); -assertThrows('/(?<𐒤>a)/u', SyntaxError); // ID_Continue but not ID_Start. - -assertEquals("a", /(?<π>a)/.exec("bab").groups.π); -assertEquals("a", /(?<$>a)/.exec("bab").groups.$); -assertEquals("a", /(?<_>a)/.exec("bab").groups._); -assertThrows("/(?<$𐒤>a)/", SyntaxError); -assertEquals("a", /(?<ಠ_ಠ>a)/.exec("bab").groups.ಠ_ಠ); -assertThrows('/(?<❤>a)/', SyntaxError); -assertThrows('/(?<𐒤>a)/', SyntaxError); // ID_Continue but not ID_Start. - -// Interaction with lookbehind assertions. -assertEquals(["f", "c"], "abcdef".match(/(?<=(?\w){3})f/u)); -assertEquals({a: "c"}, "abcdef".match(/(?<=(?\w){3})f/u).groups); -assertEquals({a: "b"}, "abcdef".match(/(?<=(?\w){4})f/u).groups); -assertEquals({a: "a"}, "abcdef".match(/(?<=(?\w)+)f/u).groups); -assertNull("abcdef".match(/(?<=(?\w){6})f/u)); - -assertEquals(["f", ""], "abcdef".match(/((?<=\w{3}))f/u)); -assertEquals(["f", ""], "abcdef".match(/(?(?<=\w{3}))f/u)); - -assertEquals(["f", undefined], "abcdef".match(/(?\d){3})f/u)); -assertNull("abcdef".match(/(?\D){3})f/u)); - -assertEquals(["f", undefined], "abcdef".match(/(?\D){3})f|f/u)); -assertEquals(["f", undefined], "abcdef".match(/(?(?.)|(?.)/u.exec("abcd").groups)); - -// The '__proto__' property on the groups object. -assertEquals(undefined, /(?.)/u.exec("a").groups.__proto__); -assertEquals("a", /(?<__proto__>a)/u.exec("a").groups.__proto__); - -// Backslash as ID_Start and ID_Continue (v8:5868). -assertThrows("/(?<\\>.)/", SyntaxError); // '\' misclassified as ID_Start. -assertThrows("/(?.)/", SyntaxError); // '\' misclassified as ID_Continue. - -// Backreference before the group (exercises the capture mini-parser). -assertThrows("/\\1(?:.)/u", SyntaxError); -assertThrows("/\\1(?<=a)./u", SyntaxError); -assertThrows("/\\1(?.)/u.exec("abcd")); - -// Unicode escapes in capture names. -assertTrue(/(?.)/u.test("a")); // \u Lead \u Trail -assertThrows("/(?.)/u", SyntaxError); // \u Lead -assertThrows("/(?.)/u", SyntaxError); // \u Trail -assertTrue(/(?<\u0041>.)/u.test("a")); // \u NonSurrogate -assertTrue(/(?<\u{0041}>.)/u.test("a")); // \u{ Non-surrogate } -assertTrue(/(?.)/u.test("a")); // \u{ Surrogate, ID_Continue } -assertThrows("/(?.)/u", SyntaxError); // \u{ Out-of-bounds } -assertThrows("/(?.)/u", SyntaxError); // Lead -assertThrows("/(?.)/u", SyntaxError); // Trail -assertThrows("/(?.)/u", SyntaxError); // Lead -assertThrows("/(?.)/u", SyntaxError); // Trail -assertTrue(RegExp("(?<\\u{0041}>.)", "u").test("a")); // Non-surrogate -assertTrue(RegExp("(?.)", "u").test("a")); // Surrogate,ID_Continue -assertTrue(RegExp("(?<\u{0041}>.)", "u").test("a")); // Non-surrogate -assertTrue(RegExp("(?.)", "u").test("a")); // Surrogate,ID_Continue -assertTrue(RegExp("(?<\\u0041>.)", "u").test("a")); // Non-surrogate - -assertThrows("/(?.)/", SyntaxError); -assertThrows("/(?.)/", SyntaxError); -assertThrows("/(?.)/", SyntaxError); -assertTrue(/(?<\u0041>.)/.test("a")); -assertThrows("/(?<\\u{0041}>.)/", SyntaxError); -assertThrows("/(?.)/", SyntaxError); -assertThrows("/(?.)/", SyntaxError); -assertThrows("/(?.)/", SyntaxError); // Lead -assertThrows("/(?.)/", SyntaxError); // Trail; -assertThrows("/(?.)/", SyntaxError); // Lead -assertThrows("/(?.)/", SyntaxError); // Trail -assertThrows("/(?<\\u{0041}>.)/", SyntaxError); // Non-surrogate -assertThrows("/(?.)/", SyntaxError); // Surrogate, ID_Continue -assertTrue(RegExp("(?<\u{0041}>.)").test("a")); // Non-surrogate -assertThrows("(?.)", SyntaxError); // Surrogate, ID_Continue -assertTrue(RegExp("(?<\\u0041>.)").test("a")); // Non-surrogate - -// @@replace with a callable replacement argument (no named captures). -{ - let result = "abcd".replace(/(.)(.)/u, (match, fst, snd, offset, str) => { - assertEquals("ab", match); - assertEquals("a", fst); - assertEquals("b", snd); - assertEquals(0, offset); - assertEquals("abcd", str); - return `${snd}${fst}`; - }); - assertEquals("bacd", result); - - assertEquals("undefinedbcd", "abcd".replace(/(.)|(.)/u, - (match, fst, snd, offset, str) => snd)); -} - -// @@replace with a callable replacement argument (global, named captures). -{ - let i = 0; - let result = "abcd".replace(/(?.)(?.)/gu, - (match, fst, snd, offset, str, groups) => { - if (i == 0) { - assertEquals("ab", match); - assertEquals("a", groups.fst); - assertEquals("b", groups.snd); - assertEquals("a", fst); - assertEquals("b", snd); - assertEquals(0, offset); - assertEquals("abcd", str); - } else if (i == 1) { - assertEquals("cd", match); - assertEquals("c", groups.fst); - assertEquals("d", groups.snd); - assertEquals("c", fst); - assertEquals("d", snd); - assertEquals(2, offset); - assertEquals("abcd", str); - } else { - assertUnreachable(); - } - i++; - return `${groups.snd}${groups.fst}`; - }); - assertEquals("badc", result); - - assertEquals("undefinedundefinedundefinedundefined", - "abcd".replace(/(?.)|(?.)/gu, - (match, fst, snd, offset, str, groups) => groups.snd)); -} - -// @@replace with a callable replacement argument (non-global, named captures). -{ - let result = "abcd".replace(/(?.)(?.)/u, - (match, fst, snd, offset, str, groups) => { - assertEquals("ab", match); - assertEquals("a", groups.fst); - assertEquals("b", groups.snd); - assertEquals("a", fst); - assertEquals("b", snd); - assertEquals(0, offset); - assertEquals("abcd", str); - return `${groups.snd}${groups.fst}`; - }); - assertEquals("bacd", result); - - assertEquals("undefinedbcd", - "abcd".replace(/(?.)|(?.)/u, - (match, fst, snd, offset, str, groups) => groups.snd)); -} - -function toSlowMode(re) { - re.exec = (str) => RegExp.prototype.exec.call(re, str); - return re; -} - -// @@replace with a callable replacement argument (slow, global, -// named captures). -{ - let i = 0; - let re = toSlowMode(/(?.)(?.)/gu); - let result = "abcd".replace(re, (match, fst, snd, offset, str, groups) => { - if (i == 0) { - assertEquals("ab", match); - assertEquals("a", groups.fst); - assertEquals("b", groups.snd); - assertEquals("a", fst); - assertEquals("b", snd); - assertEquals(0, offset); - assertEquals("abcd", str); - } else if (i == 1) { - assertEquals("cd", match); - assertEquals("c", groups.fst); - assertEquals("d", groups.snd); - assertEquals("c", fst); - assertEquals("d", snd); - assertEquals(2, offset); - assertEquals("abcd", str); - } else { - assertUnreachable(); - } - i++; - return `${groups.snd}${groups.fst}`; - }); - assertEquals("badc", result); - - assertEquals("undefinedundefinedundefinedundefined", - "abcd".replace(toSlowMode(/(?.)|(?.)/gu), - (match, fst, snd, offset, str, groups) => groups.snd)); -} - -// @@replace with a callable replacement argument (slow, non-global, -// named captures). -{ - let re = toSlowMode(/(?.)(?.)/u); - let result = "abcd".replace(re, (match, fst, snd, offset, str, groups) => { - assertEquals("ab", match); - assertEquals("a", groups.fst); - assertEquals("b", groups.snd); - assertEquals("a", fst); - assertEquals("b", snd); - assertEquals(0, offset); - assertEquals("abcd", str); - return `${groups.snd}${groups.fst}`; - }); - assertEquals("bacd", result); - - assertEquals("undefinedbcd", - "abcd".replace(toSlowMode(/(?.)|(?.)/u), - (match, fst, snd, offset, str, groups) => groups.snd)); -} - -// @@replace with a string replacement argument (no named captures). -{ - let re = /(.)(.)|(x)/u; - assertEquals("$$cd", "abcd".replace(re, "$$")); - assertEquals("bacd", "abcd".replace(re, "$2$1")); - assertEquals("cd", "abcd".replace(re, "$3")); - assertEquals("$cd", "abcd".replace(re, "$<42$1>")); - assertEquals("$cd", "abcd".replace(re, "$")); - assertEquals("$cd", "abcd".replace(re, "$<$1>")); -} - -// @@replace with a string replacement argument (global, named captures). -{ - let re = /(?.)(?.)|(?x)/gu; - assertEquals("badc", "abcd".replace(re, "$$")); - assertEquals("badc", "abcd".replace(re, "$2$1")); - assertEquals("", "abcd".replace(re, "$")); - assertEquals("$")); - assertEquals("", "abcd".replace(re, "$")); - assertEquals("", "abcd".replace(re, "$<$1>")); -} - -// @@replace with a string replacement argument (non-global, named captures). -{ - let re = /(?.)(?.)|(?x)/u; - assertEquals("bacd", "abcd".replace(re, "$$")); - assertEquals("bacd", "abcd".replace(re, "$2$1")); - assertEquals("cd", "abcd".replace(re, "$")); - assertEquals("$")); - assertEquals("cd", "abcd".replace(re, "$")); - assertEquals("cd", "abcd".replace(re, "$<$1>")); -} - -// @@replace with a string replacement argument (slow, global, named captures). -{ - let re = toSlowMode(/(?.)(?.)|(?x)/gu); - assertEquals("badc", "abcd".replace(re, "$$")); - assertEquals("badc", "abcd".replace(re, "$2$1")); - assertEquals("", "abcd".replace(re, "$")); - assertEquals("$")); - assertEquals("", "abcd".replace(re, "$")); - assertEquals("", "abcd".replace(re, "$<$1>")); -} - -// @@replace with a string replacement argument (slow, non-global, -// named captures). -{ - let re = toSlowMode(/(?.)(?.)|(?x)/u); - assertEquals("bacd", "abcd".replace(re, "$$")); - assertEquals("bacd", "abcd".replace(re, "$2$1")); - assertEquals("cd", "abcd".replace(re, "$")); - assertEquals("$")); - assertEquals("cd", "abcd".replace(re, "$")); - assertEquals("cd", "abcd".replace(re, "$<$1>")); -} - -// Tests for 'groups' semantics on the regexp result object. -// https://crbug.com/v8/7192 - -{ - const re = /./; - const result = re.exec("a"); - assertTrue(%ArraySpeciesProtector()); - assertEquals(result.__proto__, Array.prototype); - assertTrue(result.hasOwnProperty('groups')); - assertArrayEquals(["a"], result); - assertEquals(0, result.index); - assertEquals(undefined, result.groups); - - Array.prototype.groups = { a: "b" }; - assertTrue(%ArraySpeciesProtector()); - assertEquals("$", "a".replace(re, "$")); - Array.prototype.groups = undefined; -} - -{ - const re = toSlowMode(/./); - const result = re.exec("a"); - assertTrue(%ArraySpeciesProtector()); - assertEquals(result.__proto__, Array.prototype); - assertTrue(result.hasOwnProperty('groups')); - assertArrayEquals(["a"], result); - assertEquals(0, result.index); - assertEquals(undefined, result.groups); - - Array.prototype.groups = { a: "b" }; - assertTrue(%ArraySpeciesProtector()); - assertEquals("$", "a".replace(re, "$")); - Array.prototype.groups = undefined; -} - -{ - const re = /(?a).|(?x)/; - const result = re.exec("ab"); - assertTrue(%ArraySpeciesProtector()); - assertEquals(result.__proto__, Array.prototype); - assertTrue(result.hasOwnProperty('groups')); - assertArrayEquals(["ab", "a", undefined], result); - assertEquals(0, result.index); - assertEquals({a: "a", x: undefined}, result.groups); - - // a is a matched named capture, b is an unmatched named capture, and z - // is not a named capture. - Array.prototype.groups = { a: "b", x: "y", z: "z" }; - assertTrue(%ArraySpeciesProtector()); - assertEquals("a", "ab".replace(re, "$")); - assertEquals("", "ab".replace(re, "$")); - assertEquals("", "ab".replace(re, "$")); - Array.prototype.groups = undefined; -} - -{ - const re = toSlowMode(/(?a).|(?x)/); - const result = re.exec("ab"); - assertTrue(%ArraySpeciesProtector()); - assertEquals(result.__proto__, Array.prototype); - assertTrue(result.hasOwnProperty('groups')); - assertArrayEquals(["ab", "a", undefined], result); - assertEquals(0, result.index); - assertEquals({a: "a", x: undefined}, result.groups); - - // a is a matched named capture, b is an unmatched named capture, and z - // is not a named capture. - Array.prototype.groups = { a: "b", x: "y", z: "z" }; - assertTrue(%ArraySpeciesProtector()); - assertEquals("a", "ab".replace(re, "$")); - assertEquals("", "ab".replace(re, "$")); - assertEquals("", "ab".replace(re, "$")); - Array.prototype.groups = undefined; -} - -{ - class FakeRegExp extends RegExp { - exec(subject) { - const fake_result = [ "ab", "a" ]; - fake_result.index = 0; - // groups is not set, triggering prototype lookup. - return fake_result; - } - }; - - const re = new FakeRegExp(); - const result = re.exec("ab"); - assertTrue(%ArraySpeciesProtector()); - assertEquals(result.__proto__, Array.prototype); - assertFalse(result.hasOwnProperty('groups')); - - Array.prototype.groups = { a: "b" }; - Array.prototype.groups.__proto__.b = "c"; - assertTrue(%ArraySpeciesProtector()); - assertEquals("b", "ab".replace(re, "$")); - assertEquals("c", "ab".replace(re, "$")); - Array.prototype.groups = undefined; -} - -{ - class FakeRegExp extends RegExp { - exec(subject) { - const fake_result = [ "ab", "a" ]; - fake_result.index = 0; - fake_result.groups = { a: "b" }; - fake_result.groups.__proto__.b = "c"; - return fake_result; - } - }; - - const re = new FakeRegExp(); - const result = re.exec("ab"); - assertTrue(%ArraySpeciesProtector()); - assertEquals(result.__proto__, Array.prototype); - assertTrue(result.hasOwnProperty('groups')); - assertEquals({ a: "b" }, result.groups); - - assertEquals("b", "ab".replace(re, "$")); - assertEquals("c", "ab".replace(re, "$")); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-binary.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-binary.js deleted file mode 100644 index 793e6ac5408..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-binary.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function t(re, s) { assertTrue(re.test(s)); } -function f(re, s) { assertFalse(re.test(s)); } - -assertThrows("/\\p{Hiragana}/u"); -assertThrows("/\\p{Bidi_Class}/u"); -assertThrows("/\\p{Bidi_C=False}/u"); -assertThrows("/\\P{Bidi_Control=Y}/u"); -assertThrows("/\\p{AHex=Yes}/u"); - -assertThrows("/\\p{Composition_Exclusion}/u"); -assertThrows("/\\p{CE}/u"); -assertThrows("/\\p{Full_Composition_Exclusion}/u"); -assertThrows("/\\p{Comp_Ex}/u"); -assertThrows("/\\p{Grapheme_Link}/u"); -assertThrows("/\\p{Gr_Link}/u"); -assertThrows("/\\p{Hyphen}/u"); -assertThrows("/\\p{NFD_Inert}/u"); -assertThrows("/\\p{NFDK_Inert}/u"); -assertThrows("/\\p{NFC_Inert}/u"); -assertThrows("/\\p{NFKC_Inert}/u"); -assertThrows("/\\p{Segment_Starter}/u"); - -t(/\p{Alphabetic}/u, "æ"); -f(/\p{Alpha}/u, "1"); - -t(/\p{ASCII_Hex_Digit}/u, "f"); -f(/\p{AHex}/u, "g"); - -t(/\p{Bidi_Control}/u, "\u200e"); -f(/\p{Bidi_C}/u, "g"); - -t(/\p{Bidi_Mirrored}/u, "("); -f(/\p{Bidi_M}/u, "-"); - -t(/\p{Case_Ignorable}/u, "\u02b0"); -f(/\p{CI}/u, "a"); - -t(/\p{Changes_When_Casefolded}/u, "B"); -f(/\p{CWCF}/u, "1"); - -t(/\p{Changes_When_Casemapped}/u, "b"); -f(/\p{CWCM}/u, "1"); - -t(/\p{Changes_When_Lowercased}/u, "B"); -f(/\p{CWL}/u, "1"); - -t(/\p{Changes_When_Titlecased}/u, "b"); -f(/\p{CWT}/u, "1"); - -t(/\p{Changes_When_Uppercased}/u, "b"); -f(/\p{CWU}/u, "1"); - -t(/\p{Dash}/u, "-"); -f(/\p{Dash}/u, "1"); - -t(/\p{Default_Ignorable_Code_Point}/u, "\u00ad"); -f(/\p{DI}/u, "1"); - -t(/\p{Deprecated}/u, "\u17a3"); -f(/\p{Dep}/u, "1"); - -t(/\p{Diacritic}/u, "\u0301"); -f(/\p{Dia}/u, "1"); - -t(/\p{Emoji}/u, "\u2603"); -f(/\p{Emoji}/u, "x"); - -t(/\p{Emoji_Component}/u, "\u{1F1E6}"); -f(/\p{Emoji_Component}/u, "x"); - -t(/\p{Emoji_Modifier_Base}/u, "\u{1F6CC}"); -f(/\p{Emoji_Modifier_Base}/u, "x"); - -t(/\p{Emoji_Modifier}/u, "\u{1F3FE}"); -f(/\p{Emoji_Modifier}/u, "x"); - -t(/\p{Emoji_Presentation}/u, "\u{1F308}"); -f(/\p{Emoji_Presentation}/u, "x"); - -t(/\p{Extender}/u, "\u3005"); -f(/\p{Ext}/u, "x"); - -t(/\p{Grapheme_Base}/u, " "); -f(/\p{Gr_Base}/u, "\u0010"); - -t(/\p{Grapheme_Extend}/u, "\u0300"); -f(/\p{Gr_Ext}/u, "x"); - -t(/\p{Hex_Digit}/u, "a"); -f(/\p{Hex}/u, "g"); - -t(/\p{ID_Continue}/u, "1"); -f(/\p{IDC}/u, "."); - -t(/\p{ID_Start}/u, "a"); -f(/\p{IDS}/u, "1"); - -t(/\p{Ideographic}/u, "漢"); -f(/\p{Ideo}/u, "H"); - -t(/\p{IDS_Binary_Operator}/u, "\u2FF0"); -f(/\p{IDSB}/u, "a"); - -t(/\p{IDS_Trinary_Operator}/u, "\u2FF2"); -f(/\p{IDST}/u, "a"); - -t(/\p{Join_Control}/u, "\u200c"); -f(/\p{Join_C}/u, "a"); - -t(/\p{Logical_Order_Exception}/u, "\u0e40"); -f(/\p{LOE}/u, "a"); - -t(/\p{Lowercase}/u, "a"); -f(/\p{Lower}/u, "A"); - -t(/\p{Math}/u, "="); -f(/\p{Math}/u, "A"); - -t(/\p{Noncharacter_Code_Point}/u, "\uFDD0"); -f(/\p{NChar}/u, "A"); - -t(/\p{Pattern_Syntax}/u, "\u0021"); -f(/\p{NChar}/u, "A"); - -t(/\p{Pattern_White_Space}/u, "\u0009"); -f(/\p{Pat_Syn}/u, "A"); - -t(/\p{Quotation_Mark}/u, "'"); -f(/\p{QMark}/u, "A"); - -t(/\p{Radical}/u, "\u2FAD"); -f(/\p{Radical}/u, "A"); - -t(/\p{Regional_Indicator}/u, "\u{1F1E6}"); -f(/\p{Regional_Indicator}/u, "A"); - -t(/\p{Sentence_Terminal}/u, "!"); -f(/\p{STerm}/u, "A"); - -t(/\p{Soft_Dotted}/u, "i"); -f(/\p{SD}/u, "A"); - -t(/\p{Terminal_Punctuation}/u, "."); -f(/\p{Term}/u, "A"); - -t(/\p{Unified_Ideograph}/u, "\u4e00"); -f(/\p{UIdeo}/u, "A"); - -t(/\p{Uppercase}/u, "A"); -f(/\p{Upper}/u, "a"); - -t(/\p{Variation_Selector}/u, "\uFE00"); -f(/\p{VS}/u, "A"); - -t(/\p{White_Space}/u, " "); -f(/\p{WSpace}/u, "A"); - -t(/\p{XID_Continue}/u, "1"); -f(/\p{XIDC}/u, " "); - -t(/\p{XID_Start}/u, "A"); -f(/\p{XIDS}/u, " "); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-char-class.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-char-class.js deleted file mode 100644 index 7a64a9eb761..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-char-class.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("/[\\p]/u"); -assertThrows("/[\\p{garbage}]/u"); -assertThrows("/[\\p{}]/u"); -assertThrows("/[\\p{]/u"); -assertThrows("/[\\p}]/u"); -assertThrows("/^[\\p{Lu}-\\p{Ll}]+$/u"); - -assertTrue(/^[\p{Lu}\p{Ll}]+$/u.test("ABCabc")); -assertTrue(/^[\p{Lu}-]+$/u.test("ABC-")); -assertFalse(/^[\P{Lu}\p{Ll}]+$/u.test("ABCabc")); -assertTrue(/^[\P{Lu}\p{Ll}]+$/u.test("abc")); -assertTrue(/^[\P{Lu}]+$/u.test("abc123")); -assertFalse(/^[\P{Lu}]+$/u.test("XYZ")); -assertTrue(/[\p{Math}]/u.test("+")); -assertTrue(/[\P{Bidi_M}]/u.test(" ")); -assertTrue(/[\p{Hex}]/u.test("A")); - -assertTrue(/^[^\P{Lu}]+$/u.test("XYZ")); -assertFalse(/^[^\p{Lu}\p{Ll}]+$/u.test("abc")); -assertFalse(/^[^\p{Lu}\p{Ll}]+$/u.test("ABC")); -assertTrue(/^[^\p{Lu}\p{Ll}]+$/u.test("123")); -assertTrue(/^[^\p{Lu}\P{Ll}]+$/u.test("abc")); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-flag-sequence-generated.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-flag-sequence-generated.js deleted file mode 100644 index e033c722c71..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-flag-sequence-generated.js +++ /dev/null @@ -1,266 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-regexp-sequence - -const re = /\p{Emoji_Flag_Sequence}/u; - -assertTrue(re.test('\u{1F1E6}\u{1F1E8}')); -assertTrue(re.test('\u{1F1FF}\u{1F1FC}')); -assertTrue(re.test('\u{1F1E6}\u{1F1EA}')); -assertTrue(re.test('\u{1F1E6}\u{1F1EB}')); -assertTrue(re.test('\u{1F1E6}\u{1F1EC}')); -assertTrue(re.test('\u{1F1E6}\u{1F1EE}')); -assertTrue(re.test('\u{1F1E6}\u{1F1F1}')); -assertTrue(re.test('\u{1F1E6}\u{1F1F2}')); -assertTrue(re.test('\u{1F1E6}\u{1F1F4}')); -assertTrue(re.test('\u{1F1E6}\u{1F1F6}')); -assertTrue(re.test('\u{1F1E6}\u{1F1F7}')); -assertTrue(re.test('\u{1F1E6}\u{1F1F8}')); -assertTrue(re.test('\u{1F1E6}\u{1F1F9}')); -assertTrue(re.test('\u{1F1E6}\u{1F1FA}')); -assertTrue(re.test('\u{1F1E6}\u{1F1FC}')); -assertTrue(re.test('\u{1F1E6}\u{1F1FD}')); -assertTrue(re.test('\u{1F1E6}\u{1F1FF}')); -assertTrue(re.test('\u{1F1E7}\u{1F1E6}')); -assertTrue(re.test('\u{1F1E7}\u{1F1E7}')); -assertTrue(re.test('\u{1F1E7}\u{1F1E9}')); -assertTrue(re.test('\u{1F1E7}\u{1F1EA}')); -assertTrue(re.test('\u{1F1E7}\u{1F1EB}')); -assertTrue(re.test('\u{1F1E7}\u{1F1EC}')); -assertTrue(re.test('\u{1F1E7}\u{1F1ED}')); -assertTrue(re.test('\u{1F1E7}\u{1F1EE}')); -assertTrue(re.test('\u{1F1E7}\u{1F1EF}')); -assertTrue(re.test('\u{1F1E7}\u{1F1F1}')); -assertTrue(re.test('\u{1F1E7}\u{1F1F2}')); -assertTrue(re.test('\u{1F1E7}\u{1F1F3}')); -assertTrue(re.test('\u{1F1E7}\u{1F1F4}')); -assertTrue(re.test('\u{1F1E7}\u{1F1F6}')); -assertTrue(re.test('\u{1F1E7}\u{1F1F7}')); -assertTrue(re.test('\u{1F1E7}\u{1F1F8}')); -assertTrue(re.test('\u{1F1E7}\u{1F1F9}')); -assertTrue(re.test('\u{1F1E7}\u{1F1FB}')); -assertTrue(re.test('\u{1F1E7}\u{1F1FC}')); -assertTrue(re.test('\u{1F1E7}\u{1F1FE}')); -assertTrue(re.test('\u{1F1E7}\u{1F1FF}')); -assertTrue(re.test('\u{1F1E8}\u{1F1E6}')); -assertTrue(re.test('\u{1F1E8}\u{1F1E8}')); -assertTrue(re.test('\u{1F1E8}\u{1F1E9}')); -assertTrue(re.test('\u{1F1E8}\u{1F1EB}')); -assertTrue(re.test('\u{1F1E8}\u{1F1EC}')); -assertTrue(re.test('\u{1F1E8}\u{1F1ED}')); -assertTrue(re.test('\u{1F1E8}\u{1F1EE}')); -assertTrue(re.test('\u{1F1E8}\u{1F1F0}')); -assertTrue(re.test('\u{1F1E8}\u{1F1F1}')); -assertTrue(re.test('\u{1F1E8}\u{1F1F2}')); -assertTrue(re.test('\u{1F1E8}\u{1F1F3}')); -assertTrue(re.test('\u{1F1E8}\u{1F1F4}')); -assertTrue(re.test('\u{1F1E8}\u{1F1F5}')); -assertTrue(re.test('\u{1F1E8}\u{1F1F7}')); -assertTrue(re.test('\u{1F1E8}\u{1F1FA}')); -assertTrue(re.test('\u{1F1E8}\u{1F1FB}')); -assertTrue(re.test('\u{1F1E8}\u{1F1FC}')); -assertTrue(re.test('\u{1F1E8}\u{1F1FD}')); -assertTrue(re.test('\u{1F1E8}\u{1F1FE}')); -assertTrue(re.test('\u{1F1E8}\u{1F1FF}')); -assertTrue(re.test('\u{1F1E9}\u{1F1EA}')); -assertTrue(re.test('\u{1F1E9}\u{1F1EC}')); -assertTrue(re.test('\u{1F1E9}\u{1F1EF}')); -assertTrue(re.test('\u{1F1E9}\u{1F1F0}')); -assertTrue(re.test('\u{1F1E9}\u{1F1F2}')); -assertTrue(re.test('\u{1F1E9}\u{1F1F4}')); -assertTrue(re.test('\u{1F1E9}\u{1F1FF}')); -assertTrue(re.test('\u{1F1EA}\u{1F1E6}')); -assertTrue(re.test('\u{1F1EA}\u{1F1E8}')); -assertTrue(re.test('\u{1F1EA}\u{1F1EA}')); -assertTrue(re.test('\u{1F1EA}\u{1F1EC}')); -assertTrue(re.test('\u{1F1EA}\u{1F1ED}')); -assertTrue(re.test('\u{1F1EA}\u{1F1F7}')); -assertTrue(re.test('\u{1F1EA}\u{1F1F8}')); -assertTrue(re.test('\u{1F1EA}\u{1F1F9}')); -assertTrue(re.test('\u{1F1EA}\u{1F1FA}')); -assertTrue(re.test('\u{1F1EB}\u{1F1EE}')); -assertTrue(re.test('\u{1F1EB}\u{1F1EF}')); -assertTrue(re.test('\u{1F1EB}\u{1F1F0}')); -assertTrue(re.test('\u{1F1EB}\u{1F1F2}')); -assertTrue(re.test('\u{1F1EB}\u{1F1F4}')); -assertTrue(re.test('\u{1F1EB}\u{1F1F7}')); -assertTrue(re.test('\u{1F1EC}\u{1F1E6}')); -assertTrue(re.test('\u{1F1EC}\u{1F1E7}')); -assertTrue(re.test('\u{1F1EC}\u{1F1E9}')); -assertTrue(re.test('\u{1F1EC}\u{1F1EA}')); -assertTrue(re.test('\u{1F1EC}\u{1F1EB}')); -assertTrue(re.test('\u{1F1EC}\u{1F1EC}')); -assertTrue(re.test('\u{1F1EC}\u{1F1ED}')); -assertTrue(re.test('\u{1F1EC}\u{1F1EE}')); -assertTrue(re.test('\u{1F1EC}\u{1F1F1}')); -assertTrue(re.test('\u{1F1EC}\u{1F1F2}')); -assertTrue(re.test('\u{1F1EC}\u{1F1F3}')); -assertTrue(re.test('\u{1F1EC}\u{1F1F5}')); -assertTrue(re.test('\u{1F1EC}\u{1F1F6}')); -assertTrue(re.test('\u{1F1EC}\u{1F1F7}')); -assertTrue(re.test('\u{1F1EC}\u{1F1F8}')); -assertTrue(re.test('\u{1F1EC}\u{1F1F9}')); -assertTrue(re.test('\u{1F1EC}\u{1F1FA}')); -assertTrue(re.test('\u{1F1EC}\u{1F1FC}')); -assertTrue(re.test('\u{1F1EC}\u{1F1FE}')); -assertTrue(re.test('\u{1F1ED}\u{1F1F0}')); -assertTrue(re.test('\u{1F1ED}\u{1F1F2}')); -assertTrue(re.test('\u{1F1ED}\u{1F1F3}')); -assertTrue(re.test('\u{1F1ED}\u{1F1F7}')); -assertTrue(re.test('\u{1F1ED}\u{1F1F9}')); -assertTrue(re.test('\u{1F1ED}\u{1F1FA}')); -assertTrue(re.test('\u{1F1EE}\u{1F1E8}')); -assertTrue(re.test('\u{1F1EE}\u{1F1E9}')); -assertTrue(re.test('\u{1F1EE}\u{1F1EA}')); -assertTrue(re.test('\u{1F1EE}\u{1F1F1}')); -assertTrue(re.test('\u{1F1EE}\u{1F1F2}')); -assertTrue(re.test('\u{1F1EE}\u{1F1F3}')); -assertTrue(re.test('\u{1F1EE}\u{1F1F4}')); -assertTrue(re.test('\u{1F1EE}\u{1F1F6}')); -assertTrue(re.test('\u{1F1EE}\u{1F1F7}')); -assertTrue(re.test('\u{1F1EE}\u{1F1F8}')); -assertTrue(re.test('\u{1F1EE}\u{1F1F9}')); -assertTrue(re.test('\u{1F1EF}\u{1F1EA}')); -assertTrue(re.test('\u{1F1EF}\u{1F1F2}')); -assertTrue(re.test('\u{1F1EF}\u{1F1F4}')); -assertTrue(re.test('\u{1F1EF}\u{1F1F5}')); -assertTrue(re.test('\u{1F1F0}\u{1F1EA}')); -assertTrue(re.test('\u{1F1F0}\u{1F1EC}')); -assertTrue(re.test('\u{1F1F0}\u{1F1ED}')); -assertTrue(re.test('\u{1F1F0}\u{1F1EE}')); -assertTrue(re.test('\u{1F1F0}\u{1F1F2}')); -assertTrue(re.test('\u{1F1F0}\u{1F1F3}')); -assertTrue(re.test('\u{1F1F0}\u{1F1F5}')); -assertTrue(re.test('\u{1F1F0}\u{1F1F7}')); -assertTrue(re.test('\u{1F1F0}\u{1F1FC}')); -assertTrue(re.test('\u{1F1E6}\u{1F1E9}')); -assertTrue(re.test('\u{1F1F0}\u{1F1FF}')); -assertTrue(re.test('\u{1F1F1}\u{1F1E6}')); -assertTrue(re.test('\u{1F1F1}\u{1F1E7}')); -assertTrue(re.test('\u{1F1F1}\u{1F1E8}')); -assertTrue(re.test('\u{1F1F1}\u{1F1EE}')); -assertTrue(re.test('\u{1F1F1}\u{1F1F0}')); -assertTrue(re.test('\u{1F1F1}\u{1F1F7}')); -assertTrue(re.test('\u{1F1F1}\u{1F1F8}')); -assertTrue(re.test('\u{1F1F1}\u{1F1F9}')); -assertTrue(re.test('\u{1F1F1}\u{1F1FA}')); -assertTrue(re.test('\u{1F1F1}\u{1F1FB}')); -assertTrue(re.test('\u{1F1F1}\u{1F1FE}')); -assertTrue(re.test('\u{1F1F2}\u{1F1E6}')); -assertTrue(re.test('\u{1F1F2}\u{1F1E8}')); -assertTrue(re.test('\u{1F1F2}\u{1F1E9}')); -assertTrue(re.test('\u{1F1F2}\u{1F1EA}')); -assertTrue(re.test('\u{1F1F2}\u{1F1EB}')); -assertTrue(re.test('\u{1F1F2}\u{1F1EC}')); -assertTrue(re.test('\u{1F1F2}\u{1F1ED}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F0}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F1}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F2}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F3}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F4}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F5}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F6}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F7}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F8}')); -assertTrue(re.test('\u{1F1F2}\u{1F1F9}')); -assertTrue(re.test('\u{1F1F2}\u{1F1FA}')); -assertTrue(re.test('\u{1F1F2}\u{1F1FB}')); -assertTrue(re.test('\u{1F1F2}\u{1F1FC}')); -assertTrue(re.test('\u{1F1F2}\u{1F1FD}')); -assertTrue(re.test('\u{1F1F2}\u{1F1FE}')); -assertTrue(re.test('\u{1F1F2}\u{1F1FF}')); -assertTrue(re.test('\u{1F1F3}\u{1F1E6}')); -assertTrue(re.test('\u{1F1F3}\u{1F1E8}')); -assertTrue(re.test('\u{1F1F3}\u{1F1EA}')); -assertTrue(re.test('\u{1F1F3}\u{1F1EB}')); -assertTrue(re.test('\u{1F1F3}\u{1F1EC}')); -assertTrue(re.test('\u{1F1F3}\u{1F1EE}')); -assertTrue(re.test('\u{1F1F3}\u{1F1F1}')); -assertTrue(re.test('\u{1F1F3}\u{1F1F4}')); -assertTrue(re.test('\u{1F1F3}\u{1F1F5}')); -assertTrue(re.test('\u{1F1F3}\u{1F1F7}')); -assertTrue(re.test('\u{1F1F3}\u{1F1FA}')); -assertTrue(re.test('\u{1F1F3}\u{1F1FF}')); -assertTrue(re.test('\u{1F1F4}\u{1F1F2}')); -assertTrue(re.test('\u{1F1F5}\u{1F1E6}')); -assertTrue(re.test('\u{1F1F5}\u{1F1EA}')); -assertTrue(re.test('\u{1F1F5}\u{1F1EB}')); -assertTrue(re.test('\u{1F1F5}\u{1F1EC}')); -assertTrue(re.test('\u{1F1F5}\u{1F1ED}')); -assertTrue(re.test('\u{1F1F5}\u{1F1F0}')); -assertTrue(re.test('\u{1F1F5}\u{1F1F1}')); -assertTrue(re.test('\u{1F1F5}\u{1F1F2}')); -assertTrue(re.test('\u{1F1F5}\u{1F1F3}')); -assertTrue(re.test('\u{1F1F5}\u{1F1F7}')); -assertTrue(re.test('\u{1F1F5}\u{1F1F8}')); -assertTrue(re.test('\u{1F1F5}\u{1F1F9}')); -assertTrue(re.test('\u{1F1F5}\u{1F1FC}')); -assertTrue(re.test('\u{1F1F5}\u{1F1FE}')); -assertTrue(re.test('\u{1F1F6}\u{1F1E6}')); -assertTrue(re.test('\u{1F1F7}\u{1F1EA}')); -assertTrue(re.test('\u{1F1F7}\u{1F1F4}')); -assertTrue(re.test('\u{1F1F7}\u{1F1F8}')); -assertTrue(re.test('\u{1F1F7}\u{1F1FA}')); -assertTrue(re.test('\u{1F1F7}\u{1F1FC}')); -assertTrue(re.test('\u{1F1F8}\u{1F1E6}')); -assertTrue(re.test('\u{1F1F8}\u{1F1E7}')); -assertTrue(re.test('\u{1F1F8}\u{1F1E8}')); -assertTrue(re.test('\u{1F1F8}\u{1F1E9}')); -assertTrue(re.test('\u{1F1F8}\u{1F1EA}')); -assertTrue(re.test('\u{1F1F8}\u{1F1EC}')); -assertTrue(re.test('\u{1F1F8}\u{1F1ED}')); -assertTrue(re.test('\u{1F1F8}\u{1F1EE}')); -assertTrue(re.test('\u{1F1F8}\u{1F1EF}')); -assertTrue(re.test('\u{1F1F8}\u{1F1F0}')); -assertTrue(re.test('\u{1F1F8}\u{1F1F1}')); -assertTrue(re.test('\u{1F1F8}\u{1F1F2}')); -assertTrue(re.test('\u{1F1F8}\u{1F1F3}')); -assertTrue(re.test('\u{1F1F8}\u{1F1F4}')); -assertTrue(re.test('\u{1F1F8}\u{1F1F7}')); -assertTrue(re.test('\u{1F1F8}\u{1F1F8}')); -assertTrue(re.test('\u{1F1F8}\u{1F1F9}')); -assertTrue(re.test('\u{1F1F8}\u{1F1FB}')); -assertTrue(re.test('\u{1F1F8}\u{1F1FD}')); -assertTrue(re.test('\u{1F1F8}\u{1F1FE}')); -assertTrue(re.test('\u{1F1F8}\u{1F1FF}')); -assertTrue(re.test('\u{1F1F9}\u{1F1E6}')); -assertTrue(re.test('\u{1F1F9}\u{1F1E8}')); -assertTrue(re.test('\u{1F1F9}\u{1F1E9}')); -assertTrue(re.test('\u{1F1F9}\u{1F1EB}')); -assertTrue(re.test('\u{1F1F9}\u{1F1EC}')); -assertTrue(re.test('\u{1F1F9}\u{1F1ED}')); -assertTrue(re.test('\u{1F1F9}\u{1F1EF}')); -assertTrue(re.test('\u{1F1F9}\u{1F1F0}')); -assertTrue(re.test('\u{1F1F9}\u{1F1F1}')); -assertTrue(re.test('\u{1F1F9}\u{1F1F2}')); -assertTrue(re.test('\u{1F1F9}\u{1F1F3}')); -assertTrue(re.test('\u{1F1F9}\u{1F1F4}')); -assertTrue(re.test('\u{1F1F9}\u{1F1F7}')); -assertTrue(re.test('\u{1F1F9}\u{1F1F9}')); -assertTrue(re.test('\u{1F1F9}\u{1F1FB}')); -assertTrue(re.test('\u{1F1F9}\u{1F1FC}')); -assertTrue(re.test('\u{1F1F9}\u{1F1FF}')); -assertTrue(re.test('\u{1F1FA}\u{1F1E6}')); -assertTrue(re.test('\u{1F1FA}\u{1F1EC}')); -assertTrue(re.test('\u{1F1FA}\u{1F1F2}')); -assertTrue(re.test('\u{1F1FA}\u{1F1F3}')); -assertTrue(re.test('\u{1F1FA}\u{1F1F8}')); -assertTrue(re.test('\u{1F1FA}\u{1F1FE}')); -assertTrue(re.test('\u{1F1FA}\u{1F1FF}')); -assertTrue(re.test('\u{1F1FB}\u{1F1E6}')); -assertTrue(re.test('\u{1F1FB}\u{1F1E8}')); -assertTrue(re.test('\u{1F1FB}\u{1F1EA}')); -assertTrue(re.test('\u{1F1FB}\u{1F1EC}')); -assertTrue(re.test('\u{1F1FB}\u{1F1EE}')); -assertTrue(re.test('\u{1F1FB}\u{1F1F3}')); -assertTrue(re.test('\u{1F1FB}\u{1F1FA}')); -assertTrue(re.test('\u{1F1FC}\u{1F1EB}')); -assertTrue(re.test('\u{1F1FC}\u{1F1F8}')); -assertTrue(re.test('\u{1F1FD}\u{1F1F0}')); -assertTrue(re.test('\u{1F1FE}\u{1F1EA}')); -assertTrue(re.test('\u{1F1FE}\u{1F1F9}')); -assertTrue(re.test('\u{1F1FF}\u{1F1E6}')); -assertTrue(re.test('\u{1F1FF}\u{1F1F2}')); -assertTrue(re.test('\u{1F1F0}\u{1F1FE}')); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-keycap-sequence-generated.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-keycap-sequence-generated.js deleted file mode 100644 index 8366a395eca..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-keycap-sequence-generated.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-regexp-sequence - -const re = /\p{Emoji_Keycap_Sequence}/u; - -assertTrue(re.test('#\uFE0F\u20E3')); -assertTrue(re.test('9\uFE0F\u20E3')); -assertTrue(re.test('0\uFE0F\u20E3')); -assertTrue(re.test('1\uFE0F\u20E3')); -assertTrue(re.test('2\uFE0F\u20E3')); -assertTrue(re.test('3\uFE0F\u20E3')); -assertTrue(re.test('*\uFE0F\u20E3')); -assertTrue(re.test('5\uFE0F\u20E3')); -assertTrue(re.test('6\uFE0F\u20E3')); -assertTrue(re.test('7\uFE0F\u20E3')); -assertTrue(re.test('8\uFE0F\u20E3')); -assertTrue(re.test('4\uFE0F\u20E3')); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-modifier-sequence-generated.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-modifier-sequence-generated.js deleted file mode 100644 index 0e11d6c4627..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-modifier-sequence-generated.js +++ /dev/null @@ -1,538 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-regexp-sequence - -const re = /\p{Emoji_Modifier_Sequence}/u; - -assertTrue(re.test('\u261D\u{1F3FB}')); -assertTrue(re.test('\u{1F9DD}\u{1F3FF}')); -assertTrue(re.test('\u261D\u{1F3FD}')); -assertTrue(re.test('\u261D\u{1F3FE}')); -assertTrue(re.test('\u261D\u{1F3FF}')); -assertTrue(re.test('\u26F9\u{1F3FB}')); -assertTrue(re.test('\u26F9\u{1F3FC}')); -assertTrue(re.test('\u26F9\u{1F3FD}')); -assertTrue(re.test('\u26F9\u{1F3FE}')); -assertTrue(re.test('\u26F9\u{1F3FF}')); -assertTrue(re.test('\u270A\u{1F3FB}')); -assertTrue(re.test('\u270A\u{1F3FC}')); -assertTrue(re.test('\u270A\u{1F3FD}')); -assertTrue(re.test('\u270A\u{1F3FE}')); -assertTrue(re.test('\u270A\u{1F3FF}')); -assertTrue(re.test('\u270B\u{1F3FB}')); -assertTrue(re.test('\u270B\u{1F3FC}')); -assertTrue(re.test('\u270B\u{1F3FD}')); -assertTrue(re.test('\u270B\u{1F3FE}')); -assertTrue(re.test('\u270B\u{1F3FF}')); -assertTrue(re.test('\u270C\u{1F3FB}')); -assertTrue(re.test('\u270C\u{1F3FC}')); -assertTrue(re.test('\u270C\u{1F3FD}')); -assertTrue(re.test('\u270C\u{1F3FE}')); -assertTrue(re.test('\u270C\u{1F3FF}')); -assertTrue(re.test('\u270D\u{1F3FB}')); -assertTrue(re.test('\u270D\u{1F3FC}')); -assertTrue(re.test('\u270D\u{1F3FD}')); -assertTrue(re.test('\u270D\u{1F3FE}')); -assertTrue(re.test('\u270D\u{1F3FF}')); -assertTrue(re.test('\u{1F385}\u{1F3FB}')); -assertTrue(re.test('\u{1F385}\u{1F3FC}')); -assertTrue(re.test('\u{1F385}\u{1F3FD}')); -assertTrue(re.test('\u{1F385}\u{1F3FE}')); -assertTrue(re.test('\u{1F385}\u{1F3FF}')); -assertTrue(re.test('\u{1F3C2}\u{1F3FB}')); -assertTrue(re.test('\u{1F3C2}\u{1F3FC}')); -assertTrue(re.test('\u{1F3C2}\u{1F3FD}')); -assertTrue(re.test('\u{1F3C2}\u{1F3FE}')); -assertTrue(re.test('\u{1F3C2}\u{1F3FF}')); -assertTrue(re.test('\u{1F3C3}\u{1F3FB}')); -assertTrue(re.test('\u{1F3C3}\u{1F3FC}')); -assertTrue(re.test('\u{1F3C3}\u{1F3FD}')); -assertTrue(re.test('\u{1F3C3}\u{1F3FE}')); -assertTrue(re.test('\u{1F3C3}\u{1F3FF}')); -assertTrue(re.test('\u{1F3C4}\u{1F3FB}')); -assertTrue(re.test('\u{1F3C4}\u{1F3FC}')); -assertTrue(re.test('\u{1F3C4}\u{1F3FD}')); -assertTrue(re.test('\u{1F3C4}\u{1F3FE}')); -assertTrue(re.test('\u{1F3C4}\u{1F3FF}')); -assertTrue(re.test('\u{1F3C7}\u{1F3FB}')); -assertTrue(re.test('\u{1F3C7}\u{1F3FC}')); -assertTrue(re.test('\u{1F3C7}\u{1F3FD}')); -assertTrue(re.test('\u{1F3C7}\u{1F3FE}')); -assertTrue(re.test('\u{1F3C7}\u{1F3FF}')); -assertTrue(re.test('\u{1F3CA}\u{1F3FB}')); -assertTrue(re.test('\u{1F3CA}\u{1F3FC}')); -assertTrue(re.test('\u{1F3CA}\u{1F3FD}')); -assertTrue(re.test('\u{1F3CA}\u{1F3FE}')); -assertTrue(re.test('\u{1F3CA}\u{1F3FF}')); -assertTrue(re.test('\u{1F3CB}\u{1F3FB}')); -assertTrue(re.test('\u{1F3CB}\u{1F3FC}')); -assertTrue(re.test('\u{1F3CB}\u{1F3FD}')); -assertTrue(re.test('\u{1F3CB}\u{1F3FE}')); -assertTrue(re.test('\u{1F3CB}\u{1F3FF}')); -assertTrue(re.test('\u{1F3CC}\u{1F3FB}')); -assertTrue(re.test('\u{1F3CC}\u{1F3FC}')); -assertTrue(re.test('\u{1F3CC}\u{1F3FD}')); -assertTrue(re.test('\u{1F3CC}\u{1F3FE}')); -assertTrue(re.test('\u{1F3CC}\u{1F3FF}')); -assertTrue(re.test('\u{1F442}\u{1F3FB}')); -assertTrue(re.test('\u{1F442}\u{1F3FC}')); -assertTrue(re.test('\u{1F442}\u{1F3FD}')); -assertTrue(re.test('\u{1F442}\u{1F3FE}')); -assertTrue(re.test('\u{1F442}\u{1F3FF}')); -assertTrue(re.test('\u{1F443}\u{1F3FB}')); -assertTrue(re.test('\u{1F443}\u{1F3FC}')); -assertTrue(re.test('\u{1F443}\u{1F3FD}')); -assertTrue(re.test('\u{1F443}\u{1F3FE}')); -assertTrue(re.test('\u{1F443}\u{1F3FF}')); -assertTrue(re.test('\u{1F446}\u{1F3FB}')); -assertTrue(re.test('\u{1F446}\u{1F3FC}')); -assertTrue(re.test('\u{1F446}\u{1F3FD}')); -assertTrue(re.test('\u{1F446}\u{1F3FE}')); -assertTrue(re.test('\u{1F446}\u{1F3FF}')); -assertTrue(re.test('\u{1F447}\u{1F3FB}')); -assertTrue(re.test('\u{1F447}\u{1F3FC}')); -assertTrue(re.test('\u{1F447}\u{1F3FD}')); -assertTrue(re.test('\u{1F447}\u{1F3FE}')); -assertTrue(re.test('\u{1F447}\u{1F3FF}')); -assertTrue(re.test('\u{1F448}\u{1F3FB}')); -assertTrue(re.test('\u{1F448}\u{1F3FC}')); -assertTrue(re.test('\u{1F448}\u{1F3FD}')); -assertTrue(re.test('\u{1F448}\u{1F3FE}')); -assertTrue(re.test('\u{1F448}\u{1F3FF}')); -assertTrue(re.test('\u{1F449}\u{1F3FB}')); -assertTrue(re.test('\u{1F449}\u{1F3FC}')); -assertTrue(re.test('\u{1F449}\u{1F3FD}')); -assertTrue(re.test('\u{1F449}\u{1F3FE}')); -assertTrue(re.test('\u{1F449}\u{1F3FF}')); -assertTrue(re.test('\u{1F44A}\u{1F3FB}')); -assertTrue(re.test('\u{1F44A}\u{1F3FC}')); -assertTrue(re.test('\u{1F44A}\u{1F3FD}')); -assertTrue(re.test('\u{1F44A}\u{1F3FE}')); -assertTrue(re.test('\u{1F44A}\u{1F3FF}')); -assertTrue(re.test('\u{1F44B}\u{1F3FB}')); -assertTrue(re.test('\u{1F44B}\u{1F3FC}')); -assertTrue(re.test('\u{1F44B}\u{1F3FD}')); -assertTrue(re.test('\u{1F44B}\u{1F3FE}')); -assertTrue(re.test('\u{1F44B}\u{1F3FF}')); -assertTrue(re.test('\u{1F44C}\u{1F3FB}')); -assertTrue(re.test('\u{1F44C}\u{1F3FC}')); -assertTrue(re.test('\u{1F44C}\u{1F3FD}')); -assertTrue(re.test('\u{1F44C}\u{1F3FE}')); -assertTrue(re.test('\u{1F44C}\u{1F3FF}')); -assertTrue(re.test('\u{1F44D}\u{1F3FB}')); -assertTrue(re.test('\u{1F44D}\u{1F3FC}')); -assertTrue(re.test('\u{1F44D}\u{1F3FD}')); -assertTrue(re.test('\u{1F44D}\u{1F3FE}')); -assertTrue(re.test('\u{1F44D}\u{1F3FF}')); -assertTrue(re.test('\u{1F44E}\u{1F3FB}')); -assertTrue(re.test('\u{1F44E}\u{1F3FC}')); -assertTrue(re.test('\u{1F44E}\u{1F3FD}')); -assertTrue(re.test('\u{1F44E}\u{1F3FE}')); -assertTrue(re.test('\u{1F44E}\u{1F3FF}')); -assertTrue(re.test('\u{1F44F}\u{1F3FB}')); -assertTrue(re.test('\u{1F44F}\u{1F3FC}')); -assertTrue(re.test('\u{1F44F}\u{1F3FD}')); -assertTrue(re.test('\u{1F44F}\u{1F3FE}')); -assertTrue(re.test('\u{1F44F}\u{1F3FF}')); -assertTrue(re.test('\u{1F450}\u{1F3FB}')); -assertTrue(re.test('\u{1F450}\u{1F3FC}')); -assertTrue(re.test('\u{1F450}\u{1F3FD}')); -assertTrue(re.test('\u{1F450}\u{1F3FE}')); -assertTrue(re.test('\u{1F450}\u{1F3FF}')); -assertTrue(re.test('\u{1F466}\u{1F3FB}')); -assertTrue(re.test('\u{1F466}\u{1F3FC}')); -assertTrue(re.test('\u{1F466}\u{1F3FD}')); -assertTrue(re.test('\u{1F466}\u{1F3FE}')); -assertTrue(re.test('\u{1F466}\u{1F3FF}')); -assertTrue(re.test('\u{1F467}\u{1F3FB}')); -assertTrue(re.test('\u{1F467}\u{1F3FC}')); -assertTrue(re.test('\u{1F467}\u{1F3FD}')); -assertTrue(re.test('\u{1F467}\u{1F3FE}')); -assertTrue(re.test('\u{1F467}\u{1F3FF}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}')); -assertTrue(re.test('\u{1F46E}\u{1F3FB}')); -assertTrue(re.test('\u{1F46E}\u{1F3FC}')); -assertTrue(re.test('\u{1F46E}\u{1F3FD}')); -assertTrue(re.test('\u{1F46E}\u{1F3FE}')); -assertTrue(re.test('\u{1F46E}\u{1F3FF}')); -assertTrue(re.test('\u{1F470}\u{1F3FB}')); -assertTrue(re.test('\u{1F470}\u{1F3FC}')); -assertTrue(re.test('\u{1F470}\u{1F3FD}')); -assertTrue(re.test('\u{1F470}\u{1F3FE}')); -assertTrue(re.test('\u{1F470}\u{1F3FF}')); -assertTrue(re.test('\u{1F471}\u{1F3FB}')); -assertTrue(re.test('\u{1F471}\u{1F3FC}')); -assertTrue(re.test('\u{1F471}\u{1F3FD}')); -assertTrue(re.test('\u{1F471}\u{1F3FE}')); -assertTrue(re.test('\u{1F471}\u{1F3FF}')); -assertTrue(re.test('\u{1F472}\u{1F3FB}')); -assertTrue(re.test('\u{1F472}\u{1F3FC}')); -assertTrue(re.test('\u{1F472}\u{1F3FD}')); -assertTrue(re.test('\u{1F472}\u{1F3FE}')); -assertTrue(re.test('\u{1F472}\u{1F3FF}')); -assertTrue(re.test('\u{1F473}\u{1F3FB}')); -assertTrue(re.test('\u{1F473}\u{1F3FC}')); -assertTrue(re.test('\u{1F473}\u{1F3FD}')); -assertTrue(re.test('\u{1F473}\u{1F3FE}')); -assertTrue(re.test('\u{1F473}\u{1F3FF}')); -assertTrue(re.test('\u{1F474}\u{1F3FB}')); -assertTrue(re.test('\u{1F474}\u{1F3FC}')); -assertTrue(re.test('\u{1F474}\u{1F3FD}')); -assertTrue(re.test('\u{1F474}\u{1F3FE}')); -assertTrue(re.test('\u{1F474}\u{1F3FF}')); -assertTrue(re.test('\u{1F475}\u{1F3FB}')); -assertTrue(re.test('\u{1F475}\u{1F3FC}')); -assertTrue(re.test('\u{1F475}\u{1F3FD}')); -assertTrue(re.test('\u{1F475}\u{1F3FE}')); -assertTrue(re.test('\u{1F475}\u{1F3FF}')); -assertTrue(re.test('\u{1F476}\u{1F3FB}')); -assertTrue(re.test('\u{1F476}\u{1F3FC}')); -assertTrue(re.test('\u{1F476}\u{1F3FD}')); -assertTrue(re.test('\u{1F476}\u{1F3FE}')); -assertTrue(re.test('\u{1F476}\u{1F3FF}')); -assertTrue(re.test('\u{1F477}\u{1F3FB}')); -assertTrue(re.test('\u{1F477}\u{1F3FC}')); -assertTrue(re.test('\u{1F477}\u{1F3FD}')); -assertTrue(re.test('\u{1F477}\u{1F3FE}')); -assertTrue(re.test('\u{1F477}\u{1F3FF}')); -assertTrue(re.test('\u{1F478}\u{1F3FB}')); -assertTrue(re.test('\u{1F478}\u{1F3FC}')); -assertTrue(re.test('\u{1F478}\u{1F3FD}')); -assertTrue(re.test('\u{1F478}\u{1F3FE}')); -assertTrue(re.test('\u{1F478}\u{1F3FF}')); -assertTrue(re.test('\u{1F47C}\u{1F3FB}')); -assertTrue(re.test('\u{1F47C}\u{1F3FC}')); -assertTrue(re.test('\u{1F47C}\u{1F3FD}')); -assertTrue(re.test('\u{1F47C}\u{1F3FE}')); -assertTrue(re.test('\u{1F47C}\u{1F3FF}')); -assertTrue(re.test('\u{1F481}\u{1F3FB}')); -assertTrue(re.test('\u{1F481}\u{1F3FC}')); -assertTrue(re.test('\u{1F481}\u{1F3FD}')); -assertTrue(re.test('\u{1F481}\u{1F3FE}')); -assertTrue(re.test('\u{1F481}\u{1F3FF}')); -assertTrue(re.test('\u{1F482}\u{1F3FB}')); -assertTrue(re.test('\u{1F482}\u{1F3FC}')); -assertTrue(re.test('\u{1F482}\u{1F3FD}')); -assertTrue(re.test('\u{1F482}\u{1F3FE}')); -assertTrue(re.test('\u{1F482}\u{1F3FF}')); -assertTrue(re.test('\u{1F483}\u{1F3FB}')); -assertTrue(re.test('\u{1F483}\u{1F3FC}')); -assertTrue(re.test('\u{1F483}\u{1F3FD}')); -assertTrue(re.test('\u{1F483}\u{1F3FE}')); -assertTrue(re.test('\u{1F483}\u{1F3FF}')); -assertTrue(re.test('\u{1F485}\u{1F3FB}')); -assertTrue(re.test('\u{1F485}\u{1F3FC}')); -assertTrue(re.test('\u{1F485}\u{1F3FD}')); -assertTrue(re.test('\u{1F485}\u{1F3FE}')); -assertTrue(re.test('\u{1F485}\u{1F3FF}')); -assertTrue(re.test('\u{1F486}\u{1F3FB}')); -assertTrue(re.test('\u{1F486}\u{1F3FC}')); -assertTrue(re.test('\u{1F486}\u{1F3FD}')); -assertTrue(re.test('\u{1F486}\u{1F3FE}')); -assertTrue(re.test('\u{1F486}\u{1F3FF}')); -assertTrue(re.test('\u{1F487}\u{1F3FB}')); -assertTrue(re.test('\u{1F487}\u{1F3FC}')); -assertTrue(re.test('\u{1F487}\u{1F3FD}')); -assertTrue(re.test('\u{1F487}\u{1F3FE}')); -assertTrue(re.test('\u{1F487}\u{1F3FF}')); -assertTrue(re.test('\u{1F4AA}\u{1F3FB}')); -assertTrue(re.test('\u{1F4AA}\u{1F3FC}')); -assertTrue(re.test('\u{1F4AA}\u{1F3FD}')); -assertTrue(re.test('\u{1F4AA}\u{1F3FE}')); -assertTrue(re.test('\u{1F4AA}\u{1F3FF}')); -assertTrue(re.test('\u{1F574}\u{1F3FB}')); -assertTrue(re.test('\u{1F574}\u{1F3FC}')); -assertTrue(re.test('\u{1F574}\u{1F3FD}')); -assertTrue(re.test('\u{1F574}\u{1F3FE}')); -assertTrue(re.test('\u{1F574}\u{1F3FF}')); -assertTrue(re.test('\u{1F575}\u{1F3FB}')); -assertTrue(re.test('\u{1F575}\u{1F3FC}')); -assertTrue(re.test('\u{1F575}\u{1F3FD}')); -assertTrue(re.test('\u{1F575}\u{1F3FE}')); -assertTrue(re.test('\u{1F575}\u{1F3FF}')); -assertTrue(re.test('\u{1F57A}\u{1F3FB}')); -assertTrue(re.test('\u{1F57A}\u{1F3FC}')); -assertTrue(re.test('\u{1F57A}\u{1F3FD}')); -assertTrue(re.test('\u{1F57A}\u{1F3FE}')); -assertTrue(re.test('\u{1F57A}\u{1F3FF}')); -assertTrue(re.test('\u{1F590}\u{1F3FB}')); -assertTrue(re.test('\u{1F590}\u{1F3FC}')); -assertTrue(re.test('\u{1F590}\u{1F3FD}')); -assertTrue(re.test('\u{1F590}\u{1F3FE}')); -assertTrue(re.test('\u{1F590}\u{1F3FF}')); -assertTrue(re.test('\u261D\u{1F3FC}')); -assertTrue(re.test('\u{1F595}\u{1F3FC}')); -assertTrue(re.test('\u{1F595}\u{1F3FD}')); -assertTrue(re.test('\u{1F595}\u{1F3FE}')); -assertTrue(re.test('\u{1F595}\u{1F3FF}')); -assertTrue(re.test('\u{1F596}\u{1F3FB}')); -assertTrue(re.test('\u{1F596}\u{1F3FC}')); -assertTrue(re.test('\u{1F596}\u{1F3FD}')); -assertTrue(re.test('\u{1F596}\u{1F3FE}')); -assertTrue(re.test('\u{1F596}\u{1F3FF}')); -assertTrue(re.test('\u{1F645}\u{1F3FB}')); -assertTrue(re.test('\u{1F645}\u{1F3FC}')); -assertTrue(re.test('\u{1F645}\u{1F3FD}')); -assertTrue(re.test('\u{1F645}\u{1F3FE}')); -assertTrue(re.test('\u{1F645}\u{1F3FF}')); -assertTrue(re.test('\u{1F646}\u{1F3FB}')); -assertTrue(re.test('\u{1F646}\u{1F3FC}')); -assertTrue(re.test('\u{1F646}\u{1F3FD}')); -assertTrue(re.test('\u{1F646}\u{1F3FE}')); -assertTrue(re.test('\u{1F646}\u{1F3FF}')); -assertTrue(re.test('\u{1F647}\u{1F3FB}')); -assertTrue(re.test('\u{1F647}\u{1F3FC}')); -assertTrue(re.test('\u{1F647}\u{1F3FD}')); -assertTrue(re.test('\u{1F647}\u{1F3FE}')); -assertTrue(re.test('\u{1F647}\u{1F3FF}')); -assertTrue(re.test('\u{1F64B}\u{1F3FB}')); -assertTrue(re.test('\u{1F64B}\u{1F3FC}')); -assertTrue(re.test('\u{1F64B}\u{1F3FD}')); -assertTrue(re.test('\u{1F64B}\u{1F3FE}')); -assertTrue(re.test('\u{1F64B}\u{1F3FF}')); -assertTrue(re.test('\u{1F64C}\u{1F3FB}')); -assertTrue(re.test('\u{1F64C}\u{1F3FC}')); -assertTrue(re.test('\u{1F64C}\u{1F3FD}')); -assertTrue(re.test('\u{1F64C}\u{1F3FE}')); -assertTrue(re.test('\u{1F64C}\u{1F3FF}')); -assertTrue(re.test('\u{1F64D}\u{1F3FB}')); -assertTrue(re.test('\u{1F64D}\u{1F3FC}')); -assertTrue(re.test('\u{1F64D}\u{1F3FD}')); -assertTrue(re.test('\u{1F64D}\u{1F3FE}')); -assertTrue(re.test('\u{1F64D}\u{1F3FF}')); -assertTrue(re.test('\u{1F64E}\u{1F3FB}')); -assertTrue(re.test('\u{1F64E}\u{1F3FC}')); -assertTrue(re.test('\u{1F64E}\u{1F3FD}')); -assertTrue(re.test('\u{1F64E}\u{1F3FE}')); -assertTrue(re.test('\u{1F64E}\u{1F3FF}')); -assertTrue(re.test('\u{1F64F}\u{1F3FB}')); -assertTrue(re.test('\u{1F64F}\u{1F3FC}')); -assertTrue(re.test('\u{1F64F}\u{1F3FD}')); -assertTrue(re.test('\u{1F64F}\u{1F3FE}')); -assertTrue(re.test('\u{1F64F}\u{1F3FF}')); -assertTrue(re.test('\u{1F6A3}\u{1F3FB}')); -assertTrue(re.test('\u{1F6A3}\u{1F3FC}')); -assertTrue(re.test('\u{1F6A3}\u{1F3FD}')); -assertTrue(re.test('\u{1F6A3}\u{1F3FE}')); -assertTrue(re.test('\u{1F6A3}\u{1F3FF}')); -assertTrue(re.test('\u{1F6B4}\u{1F3FB}')); -assertTrue(re.test('\u{1F6B4}\u{1F3FC}')); -assertTrue(re.test('\u{1F6B4}\u{1F3FD}')); -assertTrue(re.test('\u{1F6B4}\u{1F3FE}')); -assertTrue(re.test('\u{1F6B4}\u{1F3FF}')); -assertTrue(re.test('\u{1F6B5}\u{1F3FB}')); -assertTrue(re.test('\u{1F6B5}\u{1F3FC}')); -assertTrue(re.test('\u{1F6B5}\u{1F3FD}')); -assertTrue(re.test('\u{1F6B5}\u{1F3FE}')); -assertTrue(re.test('\u{1F6B5}\u{1F3FF}')); -assertTrue(re.test('\u{1F6B6}\u{1F3FB}')); -assertTrue(re.test('\u{1F6B6}\u{1F3FC}')); -assertTrue(re.test('\u{1F6B6}\u{1F3FD}')); -assertTrue(re.test('\u{1F6B6}\u{1F3FE}')); -assertTrue(re.test('\u{1F6B6}\u{1F3FF}')); -assertTrue(re.test('\u{1F6C0}\u{1F3FB}')); -assertTrue(re.test('\u{1F6C0}\u{1F3FC}')); -assertTrue(re.test('\u{1F6C0}\u{1F3FD}')); -assertTrue(re.test('\u{1F6C0}\u{1F3FE}')); -assertTrue(re.test('\u{1F6C0}\u{1F3FF}')); -assertTrue(re.test('\u{1F6CC}\u{1F3FB}')); -assertTrue(re.test('\u{1F6CC}\u{1F3FC}')); -assertTrue(re.test('\u{1F6CC}\u{1F3FD}')); -assertTrue(re.test('\u{1F6CC}\u{1F3FE}')); -assertTrue(re.test('\u{1F6CC}\u{1F3FF}')); -assertTrue(re.test('\u{1F918}\u{1F3FB}')); -assertTrue(re.test('\u{1F918}\u{1F3FC}')); -assertTrue(re.test('\u{1F918}\u{1F3FD}')); -assertTrue(re.test('\u{1F918}\u{1F3FE}')); -assertTrue(re.test('\u{1F918}\u{1F3FF}')); -assertTrue(re.test('\u{1F919}\u{1F3FB}')); -assertTrue(re.test('\u{1F919}\u{1F3FC}')); -assertTrue(re.test('\u{1F919}\u{1F3FD}')); -assertTrue(re.test('\u{1F919}\u{1F3FE}')); -assertTrue(re.test('\u{1F919}\u{1F3FF}')); -assertTrue(re.test('\u{1F91A}\u{1F3FB}')); -assertTrue(re.test('\u{1F91A}\u{1F3FC}')); -assertTrue(re.test('\u{1F91A}\u{1F3FD}')); -assertTrue(re.test('\u{1F91A}\u{1F3FE}')); -assertTrue(re.test('\u{1F91A}\u{1F3FF}')); -assertTrue(re.test('\u{1F91B}\u{1F3FB}')); -assertTrue(re.test('\u{1F91B}\u{1F3FC}')); -assertTrue(re.test('\u{1F91B}\u{1F3FD}')); -assertTrue(re.test('\u{1F91B}\u{1F3FE}')); -assertTrue(re.test('\u{1F91B}\u{1F3FF}')); -assertTrue(re.test('\u{1F91C}\u{1F3FB}')); -assertTrue(re.test('\u{1F91C}\u{1F3FC}')); -assertTrue(re.test('\u{1F91C}\u{1F3FD}')); -assertTrue(re.test('\u{1F91C}\u{1F3FE}')); -assertTrue(re.test('\u{1F91C}\u{1F3FF}')); -assertTrue(re.test('\u{1F91E}\u{1F3FB}')); -assertTrue(re.test('\u{1F91E}\u{1F3FC}')); -assertTrue(re.test('\u{1F91E}\u{1F3FD}')); -assertTrue(re.test('\u{1F91E}\u{1F3FE}')); -assertTrue(re.test('\u{1F91E}\u{1F3FF}')); -assertTrue(re.test('\u{1F91F}\u{1F3FB}')); -assertTrue(re.test('\u{1F91F}\u{1F3FC}')); -assertTrue(re.test('\u{1F91F}\u{1F3FD}')); -assertTrue(re.test('\u{1F91F}\u{1F3FE}')); -assertTrue(re.test('\u{1F91F}\u{1F3FF}')); -assertTrue(re.test('\u{1F926}\u{1F3FB}')); -assertTrue(re.test('\u{1F926}\u{1F3FC}')); -assertTrue(re.test('\u{1F926}\u{1F3FD}')); -assertTrue(re.test('\u{1F926}\u{1F3FE}')); -assertTrue(re.test('\u{1F926}\u{1F3FF}')); -assertTrue(re.test('\u{1F930}\u{1F3FB}')); -assertTrue(re.test('\u{1F930}\u{1F3FC}')); -assertTrue(re.test('\u{1F930}\u{1F3FD}')); -assertTrue(re.test('\u{1F930}\u{1F3FE}')); -assertTrue(re.test('\u{1F930}\u{1F3FF}')); -assertTrue(re.test('\u{1F931}\u{1F3FB}')); -assertTrue(re.test('\u{1F931}\u{1F3FC}')); -assertTrue(re.test('\u{1F931}\u{1F3FD}')); -assertTrue(re.test('\u{1F931}\u{1F3FE}')); -assertTrue(re.test('\u{1F931}\u{1F3FF}')); -assertTrue(re.test('\u{1F932}\u{1F3FB}')); -assertTrue(re.test('\u{1F932}\u{1F3FC}')); -assertTrue(re.test('\u{1F932}\u{1F3FD}')); -assertTrue(re.test('\u{1F932}\u{1F3FE}')); -assertTrue(re.test('\u{1F932}\u{1F3FF}')); -assertTrue(re.test('\u{1F933}\u{1F3FB}')); -assertTrue(re.test('\u{1F933}\u{1F3FC}')); -assertTrue(re.test('\u{1F933}\u{1F3FD}')); -assertTrue(re.test('\u{1F933}\u{1F3FE}')); -assertTrue(re.test('\u{1F933}\u{1F3FF}')); -assertTrue(re.test('\u{1F934}\u{1F3FB}')); -assertTrue(re.test('\u{1F934}\u{1F3FC}')); -assertTrue(re.test('\u{1F934}\u{1F3FD}')); -assertTrue(re.test('\u{1F934}\u{1F3FE}')); -assertTrue(re.test('\u{1F934}\u{1F3FF}')); -assertTrue(re.test('\u{1F935}\u{1F3FB}')); -assertTrue(re.test('\u{1F935}\u{1F3FC}')); -assertTrue(re.test('\u{1F935}\u{1F3FD}')); -assertTrue(re.test('\u{1F935}\u{1F3FE}')); -assertTrue(re.test('\u{1F935}\u{1F3FF}')); -assertTrue(re.test('\u{1F936}\u{1F3FB}')); -assertTrue(re.test('\u{1F936}\u{1F3FC}')); -assertTrue(re.test('\u{1F936}\u{1F3FD}')); -assertTrue(re.test('\u{1F936}\u{1F3FE}')); -assertTrue(re.test('\u{1F936}\u{1F3FF}')); -assertTrue(re.test('\u{1F937}\u{1F3FB}')); -assertTrue(re.test('\u{1F937}\u{1F3FC}')); -assertTrue(re.test('\u{1F937}\u{1F3FD}')); -assertTrue(re.test('\u{1F937}\u{1F3FE}')); -assertTrue(re.test('\u{1F937}\u{1F3FF}')); -assertTrue(re.test('\u{1F938}\u{1F3FB}')); -assertTrue(re.test('\u{1F938}\u{1F3FC}')); -assertTrue(re.test('\u{1F938}\u{1F3FD}')); -assertTrue(re.test('\u{1F938}\u{1F3FE}')); -assertTrue(re.test('\u{1F938}\u{1F3FF}')); -assertTrue(re.test('\u{1F939}\u{1F3FB}')); -assertTrue(re.test('\u{1F939}\u{1F3FC}')); -assertTrue(re.test('\u{1F939}\u{1F3FD}')); -assertTrue(re.test('\u{1F939}\u{1F3FE}')); -assertTrue(re.test('\u{1F939}\u{1F3FF}')); -assertTrue(re.test('\u{1F93D}\u{1F3FB}')); -assertTrue(re.test('\u{1F93D}\u{1F3FC}')); -assertTrue(re.test('\u{1F93D}\u{1F3FD}')); -assertTrue(re.test('\u{1F93D}\u{1F3FE}')); -assertTrue(re.test('\u{1F93D}\u{1F3FF}')); -assertTrue(re.test('\u{1F93E}\u{1F3FB}')); -assertTrue(re.test('\u{1F93E}\u{1F3FC}')); -assertTrue(re.test('\u{1F93E}\u{1F3FD}')); -assertTrue(re.test('\u{1F93E}\u{1F3FE}')); -assertTrue(re.test('\u{1F93E}\u{1F3FF}')); -assertTrue(re.test('\u{1F9B5}\u{1F3FB}')); -assertTrue(re.test('\u{1F9B5}\u{1F3FC}')); -assertTrue(re.test('\u{1F9B5}\u{1F3FD}')); -assertTrue(re.test('\u{1F9B5}\u{1F3FE}')); -assertTrue(re.test('\u{1F9B5}\u{1F3FF}')); -assertTrue(re.test('\u{1F9B6}\u{1F3FB}')); -assertTrue(re.test('\u{1F9B6}\u{1F3FC}')); -assertTrue(re.test('\u{1F9B6}\u{1F3FD}')); -assertTrue(re.test('\u{1F9B6}\u{1F3FE}')); -assertTrue(re.test('\u{1F9B6}\u{1F3FF}')); -assertTrue(re.test('\u{1F9B8}\u{1F3FB}')); -assertTrue(re.test('\u{1F9B8}\u{1F3FC}')); -assertTrue(re.test('\u{1F9B8}\u{1F3FD}')); -assertTrue(re.test('\u{1F9B8}\u{1F3FE}')); -assertTrue(re.test('\u{1F9B8}\u{1F3FF}')); -assertTrue(re.test('\u{1F9B9}\u{1F3FB}')); -assertTrue(re.test('\u{1F9B9}\u{1F3FC}')); -assertTrue(re.test('\u{1F9B9}\u{1F3FD}')); -assertTrue(re.test('\u{1F9B9}\u{1F3FE}')); -assertTrue(re.test('\u{1F9B9}\u{1F3FF}')); -assertTrue(re.test('\u{1F9D1}\u{1F3FB}')); -assertTrue(re.test('\u{1F9D1}\u{1F3FC}')); -assertTrue(re.test('\u{1F9D1}\u{1F3FD}')); -assertTrue(re.test('\u{1F9D1}\u{1F3FE}')); -assertTrue(re.test('\u{1F9D1}\u{1F3FF}')); -assertTrue(re.test('\u{1F9D2}\u{1F3FB}')); -assertTrue(re.test('\u{1F9D2}\u{1F3FC}')); -assertTrue(re.test('\u{1F9D2}\u{1F3FD}')); -assertTrue(re.test('\u{1F9D2}\u{1F3FE}')); -assertTrue(re.test('\u{1F9D2}\u{1F3FF}')); -assertTrue(re.test('\u{1F9D3}\u{1F3FB}')); -assertTrue(re.test('\u{1F9D3}\u{1F3FC}')); -assertTrue(re.test('\u{1F9D3}\u{1F3FD}')); -assertTrue(re.test('\u{1F9D3}\u{1F3FE}')); -assertTrue(re.test('\u{1F9D3}\u{1F3FF}')); -assertTrue(re.test('\u{1F9D4}\u{1F3FB}')); -assertTrue(re.test('\u{1F9D4}\u{1F3FC}')); -assertTrue(re.test('\u{1F9D4}\u{1F3FD}')); -assertTrue(re.test('\u{1F9D4}\u{1F3FE}')); -assertTrue(re.test('\u{1F9D4}\u{1F3FF}')); -assertTrue(re.test('\u{1F9D5}\u{1F3FB}')); -assertTrue(re.test('\u{1F9D5}\u{1F3FC}')); -assertTrue(re.test('\u{1F9D5}\u{1F3FD}')); -assertTrue(re.test('\u{1F9D5}\u{1F3FE}')); -assertTrue(re.test('\u{1F9D5}\u{1F3FF}')); -assertTrue(re.test('\u{1F9D6}\u{1F3FB}')); -assertTrue(re.test('\u{1F9D6}\u{1F3FC}')); -assertTrue(re.test('\u{1F9D6}\u{1F3FD}')); -assertTrue(re.test('\u{1F9D6}\u{1F3FE}')); -assertTrue(re.test('\u{1F9D6}\u{1F3FF}')); -assertTrue(re.test('\u{1F9D7}\u{1F3FB}')); -assertTrue(re.test('\u{1F9D7}\u{1F3FC}')); -assertTrue(re.test('\u{1F9D7}\u{1F3FD}')); -assertTrue(re.test('\u{1F9D7}\u{1F3FE}')); -assertTrue(re.test('\u{1F9D7}\u{1F3FF}')); -assertTrue(re.test('\u{1F9D8}\u{1F3FB}')); -assertTrue(re.test('\u{1F9D8}\u{1F3FC}')); -assertTrue(re.test('\u{1F9D8}\u{1F3FD}')); -assertTrue(re.test('\u{1F9D8}\u{1F3FE}')); -assertTrue(re.test('\u{1F9D8}\u{1F3FF}')); -assertTrue(re.test('\u{1F9D9}\u{1F3FB}')); -assertTrue(re.test('\u{1F9D9}\u{1F3FC}')); -assertTrue(re.test('\u{1F9D9}\u{1F3FD}')); -assertTrue(re.test('\u{1F9D9}\u{1F3FE}')); -assertTrue(re.test('\u{1F9D9}\u{1F3FF}')); -assertTrue(re.test('\u{1F9DA}\u{1F3FB}')); -assertTrue(re.test('\u{1F9DA}\u{1F3FC}')); -assertTrue(re.test('\u{1F9DA}\u{1F3FD}')); -assertTrue(re.test('\u{1F9DA}\u{1F3FE}')); -assertTrue(re.test('\u{1F9DA}\u{1F3FF}')); -assertTrue(re.test('\u{1F9DB}\u{1F3FB}')); -assertTrue(re.test('\u{1F9DB}\u{1F3FC}')); -assertTrue(re.test('\u{1F9DB}\u{1F3FD}')); -assertTrue(re.test('\u{1F9DB}\u{1F3FE}')); -assertTrue(re.test('\u{1F9DB}\u{1F3FF}')); -assertTrue(re.test('\u{1F9DC}\u{1F3FB}')); -assertTrue(re.test('\u{1F9DC}\u{1F3FC}')); -assertTrue(re.test('\u{1F9DC}\u{1F3FD}')); -assertTrue(re.test('\u{1F9DC}\u{1F3FE}')); -assertTrue(re.test('\u{1F9DC}\u{1F3FF}')); -assertTrue(re.test('\u{1F9DD}\u{1F3FB}')); -assertTrue(re.test('\u{1F9DD}\u{1F3FC}')); -assertTrue(re.test('\u{1F9DD}\u{1F3FD}')); -assertTrue(re.test('\u{1F9DD}\u{1F3FE}')); -assertTrue(re.test('\u{1F595}\u{1F3FB}')); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-tag-sequence-generated.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-tag-sequence-generated.js deleted file mode 100644 index 129e1c7777e..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-tag-sequence-generated.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-regexp-sequence - -const re = /\p{Emoji_Tag_Sequence}/u; - -assertTrue(re.test('\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}')); -assertTrue(re.test('\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}')); -assertTrue(re.test('\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}')); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-zwj-sequence-generated.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-zwj-sequence-generated.js deleted file mode 100644 index 619bf46175b..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-emoji-zwj-sequence-generated.js +++ /dev/null @@ -1,782 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-regexp-sequence - -const re = /\p{Emoji_ZWJ_Sequence}/u; - -assertTrue(re.test('\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}')); -assertTrue(re.test('\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F')); -assertTrue(re.test('\u{1F468}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F466}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F467}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F467}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F468}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F468}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F469}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F469}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}')); -assertTrue(re.test('\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}')); -assertTrue(re.test('\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}')); -assertTrue(re.test('\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F466}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F467}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F467}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F469}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F469}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}')); -assertTrue(re.test('\u{1F468}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F468}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F468}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F468}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F468}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F469}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F469}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F469}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F469}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F469}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u2695\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u2696\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u2708\uFE0F')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F33E}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F373}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F393}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F3A4}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F3A8}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F3EB}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F3ED}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F4BB}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F4BC}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F527}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F52C}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F680}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F692}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9B0}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9B1}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9B2}')); -assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9B3}')); -assertTrue(re.test('\u{1F46E}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F46E}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F46E}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F471}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F471}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F471}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F473}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F473}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F473}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F477}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F477}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F477}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F482}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F482}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F482}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F575}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F575}\uFE0F\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F575}\uFE0F\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D9}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DA}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DB}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}')); -assertTrue(re.test('\u{1F9DC}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DD}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9DF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9DF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u26F9\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u26F9\uFE0F\u200D\u2640\uFE0F')); -assertTrue(re.test('\u26F9\uFE0F\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3C4}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CA}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CB}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CB}\uFE0F\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CB}\uFE0F\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CC}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3CC}\uFE0F\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F3CC}\uFE0F\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F46F}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F46F}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F486}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F486}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F486}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F487}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F487}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F487}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6A3}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B4}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B5}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F938}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F938}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F938}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F939}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F939}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F939}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93C}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93C}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93D}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93D}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93D}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93E}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93E}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F93E}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D6}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D7}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9D8}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F481}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F481}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F481}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F645}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F645}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F645}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F646}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F646}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F646}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F647}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F647}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F647}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64B}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64B}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64B}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64D}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64D}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64D}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64E}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64E}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F64E}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F926}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F926}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F926}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F937}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F937}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F937}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B8}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FB}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FB}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FC}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FC}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FD}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FD}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FE}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FE}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FF}\u200D\u2640\uFE0F')); -assertTrue(re.test('\u{1F9B9}\u{1F3FF}\u200D\u2642\uFE0F')); -assertTrue(re.test('\u{1F3F3}\uFE0F\u200D\u{1F308}')); -assertTrue(re.test('\u{1F3F4}\u200D\u2620\uFE0F')); -assertTrue(re.test('\u{1F9DC}\u{1F3FE}\u200D\u2640\uFE0F')); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-enumerated.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-enumerated.js deleted file mode 100644 index c58d2ae9974..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-enumerated.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("/\\p{Bidi_Class=L}+/u"); -assertThrows("/\\p{bc=Left_To_Right}+/u"); -assertThrows("/\\p{bc=AL}+/u"); -assertThrows("/\\p{bc=Arabic_Letter}+/u"); - -assertThrows("/\\p{Line_Break=Glue}/u"); -assertThrows("/\\p{lb=AL}/u"); - -assertThrows("/\\p{Block=}/u"); -assertThrows("/\\p{=}/u"); -assertThrows("/\\p{=L}/u"); -assertThrows("/\\p{=Hiragana}/u"); -assertThrows("/\\p{Block=CJK=}/u"); - -assertThrows("/\\p{Age=V8_0}/u"); -assertDoesNotThrow("/\\p{General_Category=Letter}/u"); -assertDoesNotThrow("/\\p{gc=L}/u"); -assertThrows("/\\p{General_Category_Mask=Letter}/u"); -assertThrows("/\\p{gcm=L}/u"); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-exact-match.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-exact-match.js deleted file mode 100644 index d192f46c922..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-exact-match.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("/\\p{In CJK}/u"); -assertThrows("/\\p{InCJKUnifiedIdeographs}/u"); -assertThrows("/\\p{InCJK}/u"); -assertThrows("/\\p{InCJK_Unified_Ideographs}/u"); - -assertThrows("/\\p{InCyrillic_Sup}/u"); -assertThrows("/\\p{InCyrillic_Supplement}/u"); -assertThrows("/\\p{InCyrillic_Supplementary}/u"); -assertThrows("/\\p{InCyrillicSupplementary}/u"); -assertThrows("/\\p{InCyrillic_supplementary}/u"); - -assertDoesNotThrow("/\\p{C}/u"); -assertDoesNotThrow("/\\p{Other}/u"); -assertDoesNotThrow("/\\p{Cc}/u"); -assertDoesNotThrow("/\\p{Control}/u"); -assertDoesNotThrow("/\\p{cntrl}/u"); -assertDoesNotThrow("/\\p{M}/u"); -assertDoesNotThrow("/\\p{Mark}/u"); -assertDoesNotThrow("/\\p{Combining_Mark}/u"); -assertThrows("/\\p{Combining Mark}/u"); - -assertDoesNotThrow("/\\p{Script=Copt}/u"); -assertThrows("/\\p{Coptic}/u"); -assertThrows("/\\p{Qaac}/u"); -assertThrows("/\\p{Egyp}/u"); -assertDoesNotThrow("/\\p{Script=Egyptian_Hieroglyphs}/u"); -assertThrows("/\\p{EgyptianHieroglyphs}/u"); - -assertThrows("/\\p{BidiClass=LeftToRight}/u"); -assertThrows("/\\p{BidiC=LeftToRight}/u"); -assertThrows("/\\p{bidi_c=Left_To_Right}/u"); - -assertThrows("/\\p{Block=CJK}/u"); -assertThrows("/\\p{Block = CJK}/u"); -assertThrows("/\\p{Block=cjk}/u"); -assertThrows("/\\p{BLK=CJK}/u"); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-general-category.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-general-category.js deleted file mode 100644 index fe39441d714..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-general-category.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("/\\p/u"); -assertThrows("/\\p{garbage}/u"); -assertThrows("/\\p{}/u"); -assertThrows("/\\p{/u"); -assertThrows("/\\p}/u"); -assertThrows("/\\pL/u"); -assertThrows("/\\P/u"); -assertThrows("/\\P{garbage}/u"); -assertThrows("/\\P{}/u"); -assertThrows("/\\P{/u"); -assertThrows("/\\P}/u"); -assertThrows("/\\PL/u"); - -assertTrue(/\p{Ll}/u.test("a")); -assertFalse(/\P{Ll}/u.test("a")); -assertTrue(/\P{Ll}/u.test("A")); -assertFalse(/\p{Ll}/u.test("A")); -assertTrue(/\p{Ll}/u.test("\u{1D7BE}")); -assertFalse(/\P{Ll}/u.test("\u{1D7BE}")); -assertFalse(/\p{Ll}/u.test("\u{1D5E3}")); -assertTrue(/\P{Ll}/u.test("\u{1D5E3}")); - -assertTrue(/\p{Ll}/iu.test("a")); -assertTrue(/\p{Ll}/iu.test("\u{118D4}")); -assertTrue(/\p{Ll}/iu.test("A")); -assertTrue(/\p{Ll}/iu.test("\u{118B4}")); -assertTrue(/\P{Ll}/iu.test("a")); -assertTrue(/\P{Ll}/iu.test("\u{118D4}")); -assertTrue(/\P{Ll}/iu.test("A")); -assertTrue(/\P{Ll}/iu.test("\u{118B4}")); - -assertTrue(/\p{Lu}/u.test("A")); -assertFalse(/\P{Lu}/u.test("A")); -assertTrue(/\P{Lu}/u.test("a")); -assertFalse(/\p{Lu}/u.test("a")); -assertTrue(/\p{Lu}/u.test("\u{1D5E3}")); -assertFalse(/\P{Lu}/u.test("\u{1D5E3}")); -assertFalse(/\p{Lu}/u.test("\u{1D7BE}")); -assertTrue(/\P{Lu}/u.test("\u{1D7BE}")); - -assertTrue(/\p{Lu}/iu.test("a")); -assertTrue(/\p{Lu}/iu.test("\u{118D4}")); -assertTrue(/\p{Lu}/iu.test("A")); -assertTrue(/\p{Lu}/iu.test("\u{118B4}")); -assertTrue(/\P{Lu}/iu.test("a")); -assertTrue(/\P{Lu}/iu.test("\u{118D4}")); -assertTrue(/\P{Lu}/iu.test("A")); -assertTrue(/\P{Lu}/iu.test("\u{118B4}")); - -assertTrue(/\p{Sm}/u.test("+")); -assertFalse(/\P{Sm}/u.test("+")); -assertTrue(/\p{Sm}/u.test("\u{1D6C1}")); -assertFalse(/\P{Sm}/u.test("\u{1D6C1}")); - -assertFalse(/\p{L}/u.test("\uA6EE")); -assertTrue(/\P{L}/u.test("\uA6EE")); - -assertTrue(/\p{Lowercase_Letter}/u.test("a")); -assertTrue(/\p{Math_Symbol}/u.test("+")); - -assertTrue(/\p{gc=Ll}/u.test("a")); -assertTrue(/\p{General_Category=Math_Symbol}/u.test("+")); -assertTrue(/\p{General_Category=L}/u.test("X")); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-invalid.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-invalid.js deleted file mode 100644 index 7fef5dfd0cf..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-invalid.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("/\p{Block=ASCII}+/u"); -assertThrows("/\p{Block=ASCII}+/u"); -assertThrows("/\p{Block=Basic_Latin}+/u"); -assertThrows("/\p{Block=Basic_Latin}+/u"); - -assertThrows("/\p{blk=CJK}+/u"); -assertThrows("/\p{blk=CJK_Unified_Ideographs}+/u"); -assertThrows("/\p{blk=CJK}+/u"); -assertThrows("/\p{blk=CJK_Unified_Ideographs}+/u"); - -assertThrows("/\p{Block=ASCII}+/u"); -assertThrows("/\p{Block=ASCII}+/u"); -assertThrows("/\p{Block=Basic_Latin}+/u"); -assertThrows("/\p{Block=Basic_Latin}+/u"); - -assertThrows("/\p{NFKD_Quick_Check=Y}+/u"); -assertThrows("/\p{NFKD_QC=Yes}+/u"); - -assertThrows("/\p{Numeric_Type=Decimal}+/u"); -assertThrows("/\p{nt=De}+/u"); - -assertThrows("/\p{Bidi_Class=Arabic_Letter}+/u"); -assertThrows("/\p{Bidi_Class=AN}+/u"); - -assertThrows("/\p{ccc=OV}+/u"); - -assertThrows("/\p{Sentence_Break=Format}+/u"); - -assertThrows("/\\p{In}/u"); -assertThrows("/\\pI/u"); -assertThrows("/\\p{I}/u"); -assertThrows("/\\p{CJK}/u"); - -assertThrows("/\\p{}/u"); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui.js deleted file mode 100644 index ae559bac106..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const regexp = /\P{Lu}/ui; -const regexpu = /[\0-@\[-\xBF\xD7\xDF-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BB\u01BD-\u01C3\u01C5\u01C6\u01C8\u01C9\u01CB\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F2\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u036F\u0371\u0373-\u0375\u0377-\u037E\u0380-\u0385\u0387\u038B\u038D\u0390\u03A2\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F6\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481-\u0489\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0530\u0557-\u109F\u10C6\u10C8-\u10CC\u10CE-\u139F\u13F6-\u1DFF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F17\u1F1E-\u1F27\u1F30-\u1F37\u1F40-\u1F47\u1F4E-\u1F58\u1F5A\u1F5C\u1F5E\u1F60-\u1F67\u1F70-\u1FB7\u1FBC-\u1FC7\u1FCC-\u1FD7\u1FDC-\u1FE7\u1FED-\u1FF7\u1FFC-\u2101\u2103-\u2106\u2108-\u210A\u210E\u210F\u2113\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u212F\u2134-\u213D\u2140-\u2144\u2146-\u2182\u2184-\u2BFF\u2C2F-\u2C5F\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7D\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CEA\u2CEC\u2CEE-\u2CF1\u2CF3-\uA63F\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D-\uA67F\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B-\uA721\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787-\uA78A\uA78C\uA78E\uA78F\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AE\uA7AF\uA7B5\uA7B7-\uFF20\uFF3B-\u{103FF}\u{10428}-\u{10C7F}\u{10CB3}-\u{1189F}\u{118C0}-\u{1D3FF}\u{1D41A}-\u{1D433}\u{1D44E}-\u{1D467}\u{1D482}-\u{1D49B}\u{1D49D}\u{1D4A0}\u{1D4A1}\u{1D4A3}\u{1D4A4}\u{1D4A7}\u{1D4A8}\u{1D4AD}\u{1D4B6}-\u{1D4CF}\u{1D4EA}-\u{1D503}\u{1D506}\u{1D50B}\u{1D50C}\u{1D515}\u{1D51D}-\u{1D537}\u{1D53A}\u{1D53F}\u{1D545}\u{1D547}-\u{1D549}\u{1D551}-\u{1D56B}\u{1D586}-\u{1D59F}\u{1D5BA}-\u{1D5D3}\u{1D5EE}-\u{1D607}\u{1D622}-\u{1D63B}\u{1D656}-\u{1D66F}\u{1D68A}-\u{1D6A7}\u{1D6C1}-\u{1D6E1}\u{1D6FB}-\u{1D71B}\u{1D735}-\u{1D755}\u{1D76F}-\u{1D78F}\u{1D7A9}-\u{1D7C9}\u{1D7CB}-\u{10FFFF}]/ui; - -// Test is split into parts to increase parallelism. -const number_of_tests = 10; -const max_codepoint = 0x10FFFF; - -function firstCodePointOfRange(i) { - return Math.floor(i * (max_codepoint / number_of_tests)); -} - -function testCodePointRange(i) { - assertTrue(i >= 0 && i < number_of_tests); - - const from = firstCodePointOfRange(i); - const to = (i == number_of_tests - 1) - ? max_codepoint + 1 : firstCodePointOfRange(i + 1); - - for (let codePoint = from; codePoint < to; codePoint++) { - const string = String.fromCodePoint(codePoint); - assertEquals(regexp.test(string), regexpu.test(string)); - } -} diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui0.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui0.js deleted file mode 100644 index 45aeb3f3171..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui0.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(0); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui1.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui1.js deleted file mode 100644 index 2cfad37eaa9..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui1.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(1); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui2.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui2.js deleted file mode 100644 index 2d2457540d1..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui2.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(2); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui3.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui3.js deleted file mode 100644 index 788ab7dd856..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui3.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(3); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui4.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui4.js deleted file mode 100644 index 0d5f5d7e158..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui4.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(4); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui5.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui5.js deleted file mode 100644 index 3d8bb814fb2..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui5.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(5); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui6.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui6.js deleted file mode 100644 index 267c3759d14..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui6.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(6); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui7.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui7.js deleted file mode 100644 index 463d1cd75fd..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui7.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(7); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui8.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui8.js deleted file mode 100644 index f4bba8d1b9c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui8.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(8); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui9.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui9.js deleted file mode 100644 index 7eb4b318bb6..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-lu-ui9.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/harmony/regexp-property-lu-ui.js - -testCodePointRange(9); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-script-extensions.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-script-extensions.js deleted file mode 100644 index 149ee904490..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-script-extensions.js +++ /dev/null @@ -1,435 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function t(re, s) { assertTrue(re.test(s)); } -function f(re, s) { assertFalse(re.test(s)); } - -t(/\p{Script_Extensions=Bopo}+/u, "\u300A"); -t(/\p{Script_Extensions=Hang}+/u, "\u300A"); -t(/\p{Script_Extensions=Hani}+/u, "\u300A"); -t(/\p{Script_Extensions=Hira}+/u, "\u300A"); -t(/\p{Script_Extensions=Kana}+/u, "\u300A"); -t(/\p{Script_Extensions=Yiii}+/u, "\u300A"); - -t(/\p{scx=Bopomofo}+/u, "\u3003"); -t(/\p{scx=Hangul}+/u, "\u3003"); -t(/\p{scx=Han}+/u, "\u3003"); -t(/\p{scx=Hiragana}+/u, "\u3003"); -t(/\p{scx=Katakana}+/u, "\u3003"); -f(/\p{scx=Yi}+/u, "\u3003"); - -t(/\p{Script_Extensions=Cypriot}+/u, "\u{10107}"); -f(/\p{Script=Cypriot}+/u, "\u{10107}"); -f(/\p{scx=Cprt}+/u, "\u3003"); - -/* Auto-generated from Unicode data file using following script -let data = read("ScriptExtensions.txt"); -let map = new Map(); -for (let line of data.split("\n")) { - let match = /^(\p{Hex}{4,6})(..(\p{Hex}{4,6}))?\s+; ([\w\s]+) #/u.exec(line); - if (!match) continue; - let [,start,,end,scripts] = match; - if (!end) end = start; - start = parseInt(start, 16); - end = parseInt(end, 16); - for (let script of scripts.split(" ")) { - let codepoints = map.get(script) || new Set(); - for (let c = start; c <= end; c++) codepoints.add(c); - map.set(script, codepoints); - } -} - -for (let s of map.keys()){ - let codepoints = map.get(s); - print(`// Script_Extension=${s}`); - for (let i = 0; i < 5;) { - let c = (Math.random() * 0x110000) | 0; - if (codepoints.has(c)) continue; - print(`f(/(?=\\P{sc=${s}})\\p{scx=${s}}/u, "\\u{${c.toString(16)}}");`); - i++; - } -} -*/ - -// Unicode version 11.0.0 -// https://unicode.org/Public/10.0.0/ucd/ScriptExtensions.txt - -// Script_Extension=Beng -f(/(?=\P{sc=Beng})\p{scx=Beng}/u, "\u{e52ee}"); -f(/(?=\P{sc=Beng})\p{scx=Beng}/u, "\u{78b48}"); -f(/(?=\P{sc=Beng})\p{scx=Beng}/u, "\u{59987}"); -f(/(?=\P{sc=Beng})\p{scx=Beng}/u, "\u{d18a8}"); -f(/(?=\P{sc=Beng})\p{scx=Beng}/u, "\u{2b84e}"); -// Script_Extension=Deva -f(/(?=\P{sc=Deva})\p{scx=Deva}/u, "\u{757f8}"); -f(/(?=\P{sc=Deva})\p{scx=Deva}/u, "\u{2cb44}"); -f(/(?=\P{sc=Deva})\p{scx=Deva}/u, "\u{7624d}"); -f(/(?=\P{sc=Deva})\p{scx=Deva}/u, "\u{9a219}"); -f(/(?=\P{sc=Deva})\p{scx=Deva}/u, "\u{e41a8}"); -// Script_Extension=Dupl -f(/(?=\P{sc=Dupl})\p{scx=Dupl}/u, "\u{4ae62}"); -f(/(?=\P{sc=Dupl})\p{scx=Dupl}/u, "\u{b80a}"); -f(/(?=\P{sc=Dupl})\p{scx=Dupl}/u, "\u{c856c}"); -f(/(?=\P{sc=Dupl})\p{scx=Dupl}/u, "\u{36c5f}"); -f(/(?=\P{sc=Dupl})\p{scx=Dupl}/u, "\u{42ef3}"); -// Script_Extension=Grek -f(/(?=\P{sc=Grek})\p{scx=Grek}/u, "\u{85c59}"); -f(/(?=\P{sc=Grek})\p{scx=Grek}/u, "\u{bd40}"); -f(/(?=\P{sc=Grek})\p{scx=Grek}/u, "\u{7ffef}"); -f(/(?=\P{sc=Grek})\p{scx=Grek}/u, "\u{b4a21}"); -f(/(?=\P{sc=Grek})\p{scx=Grek}/u, "\u{b97b3}"); -// Script_Extension=Hani -f(/(?=\P{sc=Hani})\p{scx=Hani}/u, "\u{d59d4}"); -f(/(?=\P{sc=Hani})\p{scx=Hani}/u, "\u{8da54}"); -f(/(?=\P{sc=Hani})\p{scx=Hani}/u, "\u{77a36}"); -f(/(?=\P{sc=Hani})\p{scx=Hani}/u, "\u{8d66b}"); -f(/(?=\P{sc=Hani})\p{scx=Hani}/u, "\u{b2371}"); -// Script_Extension=Latn -f(/(?=\P{sc=Latn})\p{scx=Latn}/u, "\u{10d47b}"); -f(/(?=\P{sc=Latn})\p{scx=Latn}/u, "\u{7a184}"); -f(/(?=\P{sc=Latn})\p{scx=Latn}/u, "\u{a64ac}"); -f(/(?=\P{sc=Latn})\p{scx=Latn}/u, "\u{ea450}"); -f(/(?=\P{sc=Latn})\p{scx=Latn}/u, "\u{ab23e}"); -// Script_Extension=Arab -f(/(?=\P{sc=Arab})\p{scx=Arab}/u, "\u{43609}"); -f(/(?=\P{sc=Arab})\p{scx=Arab}/u, "\u{bea28}"); -f(/(?=\P{sc=Arab})\p{scx=Arab}/u, "\u{f9ef}"); -f(/(?=\P{sc=Arab})\p{scx=Arab}/u, "\u{7b3fc}"); -f(/(?=\P{sc=Arab})\p{scx=Arab}/u, "\u{3a64a}"); -// Script_Extension=Copt -f(/(?=\P{sc=Copt})\p{scx=Copt}/u, "\u{a7927}"); -f(/(?=\P{sc=Copt})\p{scx=Copt}/u, "\u{e11a5}"); -f(/(?=\P{sc=Copt})\p{scx=Copt}/u, "\u{a7afe}"); -f(/(?=\P{sc=Copt})\p{scx=Copt}/u, "\u{68bd4}"); -f(/(?=\P{sc=Copt})\p{scx=Copt}/u, "\u{4c963}"); -// Script_Extension=Rohg -f(/(?=\P{sc=Rohg})\p{scx=Rohg}/u, "\u{cd74e}"); -f(/(?=\P{sc=Rohg})\p{scx=Rohg}/u, "\u{c4e3c}"); -f(/(?=\P{sc=Rohg})\p{scx=Rohg}/u, "\u{1f2de}"); -f(/(?=\P{sc=Rohg})\p{scx=Rohg}/u, "\u{999ca}"); -f(/(?=\P{sc=Rohg})\p{scx=Rohg}/u, "\u{f25d9}"); -// Script_Extension=Syrc -f(/(?=\P{sc=Syrc})\p{scx=Syrc}/u, "\u{dd913}"); -f(/(?=\P{sc=Syrc})\p{scx=Syrc}/u, "\u{81cdc}"); -f(/(?=\P{sc=Syrc})\p{scx=Syrc}/u, "\u{32fb2}"); -f(/(?=\P{sc=Syrc})\p{scx=Syrc}/u, "\u{cc6ec}"); -f(/(?=\P{sc=Syrc})\p{scx=Syrc}/u, "\u{adba2}"); -// Script_Extension=Thaa -f(/(?=\P{sc=Thaa})\p{scx=Thaa}/u, "\u{782b1}"); -f(/(?=\P{sc=Thaa})\p{scx=Thaa}/u, "\u{ca567}"); -f(/(?=\P{sc=Thaa})\p{scx=Thaa}/u, "\u{c1506}"); -f(/(?=\P{sc=Thaa})\p{scx=Thaa}/u, "\u{e783}"); -f(/(?=\P{sc=Thaa})\p{scx=Thaa}/u, "\u{fc8e1}"); -// Script_Extension=Armn -f(/(?=\P{sc=Armn})\p{scx=Armn}/u, "\u{36a6d}"); -f(/(?=\P{sc=Armn})\p{scx=Armn}/u, "\u{6c98}"); -f(/(?=\P{sc=Armn})\p{scx=Armn}/u, "\u{c4326}"); -f(/(?=\P{sc=Armn})\p{scx=Armn}/u, "\u{25eb6}"); -f(/(?=\P{sc=Armn})\p{scx=Armn}/u, "\u{db9d9}"); -// Script_Extension=Geor -f(/(?=\P{sc=Geor})\p{scx=Geor}/u, "\u{e48f5}"); -f(/(?=\P{sc=Geor})\p{scx=Geor}/u, "\u{9914e}"); -f(/(?=\P{sc=Geor})\p{scx=Geor}/u, "\u{49dad}"); -f(/(?=\P{sc=Geor})\p{scx=Geor}/u, "\u{9d193}"); -f(/(?=\P{sc=Geor})\p{scx=Geor}/u, "\u{10ce35}"); -// Script_Extension=Bopo -f(/(?=\P{sc=Bopo})\p{scx=Bopo}/u, "\u{36ac1}"); -f(/(?=\P{sc=Bopo})\p{scx=Bopo}/u, "\u{73ae5}"); -f(/(?=\P{sc=Bopo})\p{scx=Bopo}/u, "\u{cd0a}"); -f(/(?=\P{sc=Bopo})\p{scx=Bopo}/u, "\u{bd8bd}"); -f(/(?=\P{sc=Bopo})\p{scx=Bopo}/u, "\u{eb174}"); -// Script_Extension=Bugi -f(/(?=\P{sc=Bugi})\p{scx=Bugi}/u, "\u{7dcfc}"); -f(/(?=\P{sc=Bugi})\p{scx=Bugi}/u, "\u{b17d1}"); -f(/(?=\P{sc=Bugi})\p{scx=Bugi}/u, "\u{15cb5}"); -f(/(?=\P{sc=Bugi})\p{scx=Bugi}/u, "\u{10d4f6}"); -f(/(?=\P{sc=Bugi})\p{scx=Bugi}/u, "\u{12bbe}"); -// Script_Extension=Java -f(/(?=\P{sc=Java})\p{scx=Java}/u, "\u{10f6f3}"); -f(/(?=\P{sc=Java})\p{scx=Java}/u, "\u{75579}"); -f(/(?=\P{sc=Java})\p{scx=Java}/u, "\u{b39e4}"); -f(/(?=\P{sc=Java})\p{scx=Java}/u, "\u{104b64}"); -f(/(?=\P{sc=Java})\p{scx=Java}/u, "\u{102995}"); -// Script_Extension=Cprt -f(/(?=\P{sc=Cprt})\p{scx=Cprt}/u, "\u{46b94}"); -f(/(?=\P{sc=Cprt})\p{scx=Cprt}/u, "\u{3eaa1}"); -f(/(?=\P{sc=Cprt})\p{scx=Cprt}/u, "\u{3dd9a}"); -f(/(?=\P{sc=Cprt})\p{scx=Cprt}/u, "\u{c3e90}"); -f(/(?=\P{sc=Cprt})\p{scx=Cprt}/u, "\u{75301}"); -// Script_Extension=Linb -f(/(?=\P{sc=Linb})\p{scx=Linb}/u, "\u{b0cc}"); -f(/(?=\P{sc=Linb})\p{scx=Linb}/u, "\u{2759a}"); -f(/(?=\P{sc=Linb})\p{scx=Linb}/u, "\u{a6482}"); -f(/(?=\P{sc=Linb})\p{scx=Linb}/u, "\u{11c84}"); -f(/(?=\P{sc=Linb})\p{scx=Linb}/u, "\u{a3931}"); -// Script_Extension=Cyrl -f(/(?=\P{sc=Cyrl})\p{scx=Cyrl}/u, "\u{2d4a3}"); -f(/(?=\P{sc=Cyrl})\p{scx=Cyrl}/u, "\u{394c9}"); -f(/(?=\P{sc=Cyrl})\p{scx=Cyrl}/u, "\u{aa2e7}"); -f(/(?=\P{sc=Cyrl})\p{scx=Cyrl}/u, "\u{823e3}"); -f(/(?=\P{sc=Cyrl})\p{scx=Cyrl}/u, "\u{f753e}"); -// Script_Extension=Glag -f(/(?=\P{sc=Glag})\p{scx=Glag}/u, "\u{f060c}"); -f(/(?=\P{sc=Glag})\p{scx=Glag}/u, "\u{f4430}"); -f(/(?=\P{sc=Glag})\p{scx=Glag}/u, "\u{89208}"); -f(/(?=\P{sc=Glag})\p{scx=Glag}/u, "\u{3b2fa}"); -f(/(?=\P{sc=Glag})\p{scx=Glag}/u, "\u{5a463}"); -// Script_Extension=Perm -f(/(?=\P{sc=Perm})\p{scx=Perm}/u, "\u{f4f29}"); -f(/(?=\P{sc=Perm})\p{scx=Perm}/u, "\u{154a1}"); -f(/(?=\P{sc=Perm})\p{scx=Perm}/u, "\u{8d2e1}"); -f(/(?=\P{sc=Perm})\p{scx=Perm}/u, "\u{6ddec}"); -f(/(?=\P{sc=Perm})\p{scx=Perm}/u, "\u{2859e}"); -// Script_Extension=Gran -f(/(?=\P{sc=Gran})\p{scx=Gran}/u, "\u{dcc3b}"); -f(/(?=\P{sc=Gran})\p{scx=Gran}/u, "\u{240a1}"); -f(/(?=\P{sc=Gran})\p{scx=Gran}/u, "\u{d94fd}"); -f(/(?=\P{sc=Gran})\p{scx=Gran}/u, "\u{3e537}"); -f(/(?=\P{sc=Gran})\p{scx=Gran}/u, "\u{ddf65}"); -// Script_Extension=Shrd -f(/(?=\P{sc=Shrd})\p{scx=Shrd}/u, "\u{c17cc}"); -f(/(?=\P{sc=Shrd})\p{scx=Shrd}/u, "\u{2d717}"); -f(/(?=\P{sc=Shrd})\p{scx=Shrd}/u, "\u{93c84}"); -f(/(?=\P{sc=Shrd})\p{scx=Shrd}/u, "\u{e4d57}"); -f(/(?=\P{sc=Shrd})\p{scx=Shrd}/u, "\u{4449a}"); -// Script_Extension=Taml -f(/(?=\P{sc=Taml})\p{scx=Taml}/u, "\u{fb7ab}"); -f(/(?=\P{sc=Taml})\p{scx=Taml}/u, "\u{d687c}"); -f(/(?=\P{sc=Taml})\p{scx=Taml}/u, "\u{b6aea}"); -f(/(?=\P{sc=Taml})\p{scx=Taml}/u, "\u{e42bc}"); -f(/(?=\P{sc=Taml})\p{scx=Taml}/u, "\u{77534}"); -// Script_Extension=Gujr -f(/(?=\P{sc=Gujr})\p{scx=Gujr}/u, "\u{4b35c}"); -f(/(?=\P{sc=Gujr})\p{scx=Gujr}/u, "\u{889e5}"); -f(/(?=\P{sc=Gujr})\p{scx=Gujr}/u, "\u{107d78}"); -f(/(?=\P{sc=Gujr})\p{scx=Gujr}/u, "\u{c68d8}"); -f(/(?=\P{sc=Gujr})\p{scx=Gujr}/u, "\u{a5b0a}"); -// Script_Extension=Khoj -f(/(?=\P{sc=Khoj})\p{scx=Khoj}/u, "\u{2da77}"); -f(/(?=\P{sc=Khoj})\p{scx=Khoj}/u, "\u{9fb5}"); -f(/(?=\P{sc=Khoj})\p{scx=Khoj}/u, "\u{a0268}"); -f(/(?=\P{sc=Khoj})\p{scx=Khoj}/u, "\u{10d835}"); -f(/(?=\P{sc=Khoj})\p{scx=Khoj}/u, "\u{49e92}"); -// Script_Extension=Guru -f(/(?=\P{sc=Guru})\p{scx=Guru}/u, "\u{54186}"); -f(/(?=\P{sc=Guru})\p{scx=Guru}/u, "\u{a2fff}"); -f(/(?=\P{sc=Guru})\p{scx=Guru}/u, "\u{e25c3}"); -f(/(?=\P{sc=Guru})\p{scx=Guru}/u, "\u{10496}"); -f(/(?=\P{sc=Guru})\p{scx=Guru}/u, "\u{10ad15}"); -// Script_Extension=Mult -f(/(?=\P{sc=Mult})\p{scx=Mult}/u, "\u{2794e}"); -f(/(?=\P{sc=Mult})\p{scx=Mult}/u, "\u{2f6b4}"); -f(/(?=\P{sc=Mult})\p{scx=Mult}/u, "\u{d50f2}"); -f(/(?=\P{sc=Mult})\p{scx=Mult}/u, "\u{62dac}"); -f(/(?=\P{sc=Mult})\p{scx=Mult}/u, "\u{ad0b2}"); -// Script_Extension=Hira -f(/(?=\P{sc=Hira})\p{scx=Hira}/u, "\u{be070}"); -f(/(?=\P{sc=Hira})\p{scx=Hira}/u, "\u{d2d48}"); -f(/(?=\P{sc=Hira})\p{scx=Hira}/u, "\u{ec3a2}"); -f(/(?=\P{sc=Hira})\p{scx=Hira}/u, "\u{b2f9d}"); -f(/(?=\P{sc=Hira})\p{scx=Hira}/u, "\u{4b539}"); -// Script_Extension=Kana -f(/(?=\P{sc=Kana})\p{scx=Kana}/u, "\u{545d5}"); -f(/(?=\P{sc=Kana})\p{scx=Kana}/u, "\u{23e9d}"); -f(/(?=\P{sc=Kana})\p{scx=Kana}/u, "\u{104ba8}"); -f(/(?=\P{sc=Kana})\p{scx=Kana}/u, "\u{dc9d5}"); -f(/(?=\P{sc=Kana})\p{scx=Kana}/u, "\u{8229c}"); -// Script_Extension=Mong -f(/(?=\P{sc=Mong})\p{scx=Mong}/u, "\u{3b0ad}"); -f(/(?=\P{sc=Mong})\p{scx=Mong}/u, "\u{d9402}"); -f(/(?=\P{sc=Mong})\p{scx=Mong}/u, "\u{8f4ae}"); -f(/(?=\P{sc=Mong})\p{scx=Mong}/u, "\u{18b7d}"); -f(/(?=\P{sc=Mong})\p{scx=Mong}/u, "\u{e0393}"); -// Script_Extension=Phag -f(/(?=\P{sc=Phag})\p{scx=Phag}/u, "\u{3eb13}"); -f(/(?=\P{sc=Phag})\p{scx=Phag}/u, "\u{273e7}"); -f(/(?=\P{sc=Phag})\p{scx=Phag}/u, "\u{d7ad4}"); -f(/(?=\P{sc=Phag})\p{scx=Phag}/u, "\u{80daf}"); -f(/(?=\P{sc=Phag})\p{scx=Phag}/u, "\u{bd1ad}"); -// Script_Extension=Cakm -f(/(?=\P{sc=Cakm})\p{scx=Cakm}/u, "\u{19eeb}"); -f(/(?=\P{sc=Cakm})\p{scx=Cakm}/u, "\u{19dab}"); -f(/(?=\P{sc=Cakm})\p{scx=Cakm}/u, "\u{f3a42}"); -f(/(?=\P{sc=Cakm})\p{scx=Cakm}/u, "\u{455c7}"); -f(/(?=\P{sc=Cakm})\p{scx=Cakm}/u, "\u{baa96}"); -// Script_Extension=Sylo -f(/(?=\P{sc=Sylo})\p{scx=Sylo}/u, "\u{54d3}"); -f(/(?=\P{sc=Sylo})\p{scx=Sylo}/u, "\u{283e9}"); -f(/(?=\P{sc=Sylo})\p{scx=Sylo}/u, "\u{edab9}"); -f(/(?=\P{sc=Sylo})\p{scx=Sylo}/u, "\u{e135d}"); -f(/(?=\P{sc=Sylo})\p{scx=Sylo}/u, "\u{31bc2}"); -// Script_Extension=Mymr -f(/(?=\P{sc=Mymr})\p{scx=Mymr}/u, "\u{9d605}"); -f(/(?=\P{sc=Mymr})\p{scx=Mymr}/u, "\u{109cae}"); -f(/(?=\P{sc=Mymr})\p{scx=Mymr}/u, "\u{cc2dd}"); -f(/(?=\P{sc=Mymr})\p{scx=Mymr}/u, "\u{d1757}"); -f(/(?=\P{sc=Mymr})\p{scx=Mymr}/u, "\u{baaff}"); -// Script_Extension=Tale -f(/(?=\P{sc=Tale})\p{scx=Tale}/u, "\u{81845}"); -f(/(?=\P{sc=Tale})\p{scx=Tale}/u, "\u{fe9d6}"); -f(/(?=\P{sc=Tale})\p{scx=Tale}/u, "\u{8c1a0}"); -f(/(?=\P{sc=Tale})\p{scx=Tale}/u, "\u{f1a55}"); -f(/(?=\P{sc=Tale})\p{scx=Tale}/u, "\u{a8f6}"); -// Script_Extension=Lina -f(/(?=\P{sc=Lina})\p{scx=Lina}/u, "\u{e3554}"); -f(/(?=\P{sc=Lina})\p{scx=Lina}/u, "\u{e7555}"); -f(/(?=\P{sc=Lina})\p{scx=Lina}/u, "\u{29fc1}"); -f(/(?=\P{sc=Lina})\p{scx=Lina}/u, "\u{3fe04}"); -f(/(?=\P{sc=Lina})\p{scx=Lina}/u, "\u{df6e2}"); -// Script_Extension=Knda -f(/(?=\P{sc=Knda})\p{scx=Knda}/u, "\u{36afd}"); -f(/(?=\P{sc=Knda})\p{scx=Knda}/u, "\u{72966}"); -f(/(?=\P{sc=Knda})\p{scx=Knda}/u, "\u{531de}"); -f(/(?=\P{sc=Knda})\p{scx=Knda}/u, "\u{cd350}"); -f(/(?=\P{sc=Knda})\p{scx=Knda}/u, "\u{4081f}"); -// Script_Extension=Kali -f(/(?=\P{sc=Kali})\p{scx=Kali}/u, "\u{2cc77}"); -f(/(?=\P{sc=Kali})\p{scx=Kali}/u, "\u{7973a}"); -f(/(?=\P{sc=Kali})\p{scx=Kali}/u, "\u{d67e0}"); -f(/(?=\P{sc=Kali})\p{scx=Kali}/u, "\u{6f0a6}"); -f(/(?=\P{sc=Kali})\p{scx=Kali}/u, "\u{130b7}"); -// Script_Extension=Buhd -f(/(?=\P{sc=Buhd})\p{scx=Buhd}/u, "\u{91a77}"); -f(/(?=\P{sc=Buhd})\p{scx=Buhd}/u, "\u{dad60}"); -f(/(?=\P{sc=Buhd})\p{scx=Buhd}/u, "\u{10577d}"); -f(/(?=\P{sc=Buhd})\p{scx=Buhd}/u, "\u{107c7d}"); -f(/(?=\P{sc=Buhd})\p{scx=Buhd}/u, "\u{6d43d}"); -// Script_Extension=Hano -f(/(?=\P{sc=Hano})\p{scx=Hano}/u, "\u{7e942}"); -f(/(?=\P{sc=Hano})\p{scx=Hano}/u, "\u{b0a24}"); -f(/(?=\P{sc=Hano})\p{scx=Hano}/u, "\u{106205}"); -f(/(?=\P{sc=Hano})\p{scx=Hano}/u, "\u{4ac72}"); -f(/(?=\P{sc=Hano})\p{scx=Hano}/u, "\u{e6681}"); -// Script_Extension=Tagb -f(/(?=\P{sc=Tagb})\p{scx=Tagb}/u, "\u{dd8fa}"); -f(/(?=\P{sc=Tagb})\p{scx=Tagb}/u, "\u{e622d}"); -f(/(?=\P{sc=Tagb})\p{scx=Tagb}/u, "\u{d43fb}"); -f(/(?=\P{sc=Tagb})\p{scx=Tagb}/u, "\u{10ba23}"); -f(/(?=\P{sc=Tagb})\p{scx=Tagb}/u, "\u{bfbce}"); -// Script_Extension=Tglg -f(/(?=\P{sc=Tglg})\p{scx=Tglg}/u, "\u{bb9f4}"); -f(/(?=\P{sc=Tglg})\p{scx=Tglg}/u, "\u{cb69f}"); -f(/(?=\P{sc=Tglg})\p{scx=Tglg}/u, "\u{5bb3f}"); -f(/(?=\P{sc=Tglg})\p{scx=Tglg}/u, "\u{b6f43}"); -f(/(?=\P{sc=Tglg})\p{scx=Tglg}/u, "\u{d013b}"); -// Script_Extension=Dogr -f(/(?=\P{sc=Dogr})\p{scx=Dogr}/u, "\u{2d845}"); -f(/(?=\P{sc=Dogr})\p{scx=Dogr}/u, "\u{1a910}"); -f(/(?=\P{sc=Dogr})\p{scx=Dogr}/u, "\u{3ba2a}"); -f(/(?=\P{sc=Dogr})\p{scx=Dogr}/u, "\u{bde46}"); -f(/(?=\P{sc=Dogr})\p{scx=Dogr}/u, "\u{108e84}"); -// Script_Extension=Kthi -f(/(?=\P{sc=Kthi})\p{scx=Kthi}/u, "\u{10dd0}"); -f(/(?=\P{sc=Kthi})\p{scx=Kthi}/u, "\u{5484b}"); -f(/(?=\P{sc=Kthi})\p{scx=Kthi}/u, "\u{3aed6}"); -f(/(?=\P{sc=Kthi})\p{scx=Kthi}/u, "\u{1e733}"); -f(/(?=\P{sc=Kthi})\p{scx=Kthi}/u, "\u{9448f}"); -// Script_Extension=Mahj -f(/(?=\P{sc=Mahj})\p{scx=Mahj}/u, "\u{a2006}"); -f(/(?=\P{sc=Mahj})\p{scx=Mahj}/u, "\u{184cd}"); -f(/(?=\P{sc=Mahj})\p{scx=Mahj}/u, "\u{575ba}"); -f(/(?=\P{sc=Mahj})\p{scx=Mahj}/u, "\u{1005cb}"); -f(/(?=\P{sc=Mahj})\p{scx=Mahj}/u, "\u{c2d02}"); -// Script_Extension=Hang -f(/(?=\P{sc=Hang})\p{scx=Hang}/u, "\u{b42fb}"); -f(/(?=\P{sc=Hang})\p{scx=Hang}/u, "\u{15eff}"); -f(/(?=\P{sc=Hang})\p{scx=Hang}/u, "\u{cc05b}"); -f(/(?=\P{sc=Hang})\p{scx=Hang}/u, "\u{85919}"); -f(/(?=\P{sc=Hang})\p{scx=Hang}/u, "\u{c27ea}"); -// Script_Extension=Yiii -f(/(?=\P{sc=Yiii})\p{scx=Yiii}/u, "\u{b9c10}"); -f(/(?=\P{sc=Yiii})\p{scx=Yiii}/u, "\u{55fef}"); -f(/(?=\P{sc=Yiii})\p{scx=Yiii}/u, "\u{fe59b}"); -f(/(?=\P{sc=Yiii})\p{scx=Yiii}/u, "\u{ffd82}"); -f(/(?=\P{sc=Yiii})\p{scx=Yiii}/u, "\u{7df88}"); -// Script_Extension=Mlym -f(/(?=\P{sc=Mlym})\p{scx=Mlym}/u, "\u{38ca6}"); -f(/(?=\P{sc=Mlym})\p{scx=Mlym}/u, "\u{b536b}"); -f(/(?=\P{sc=Mlym})\p{scx=Mlym}/u, "\u{d73c3}"); -f(/(?=\P{sc=Mlym})\p{scx=Mlym}/u, "\u{ef7c}"); -f(/(?=\P{sc=Mlym})\p{scx=Mlym}/u, "\u{54f11}"); -// Script_Extension=Orya -f(/(?=\P{sc=Orya})\p{scx=Orya}/u, "\u{103437}"); -f(/(?=\P{sc=Orya})\p{scx=Orya}/u, "\u{6db9f}"); -f(/(?=\P{sc=Orya})\p{scx=Orya}/u, "\u{c0cbf}"); -f(/(?=\P{sc=Orya})\p{scx=Orya}/u, "\u{693e6}"); -f(/(?=\P{sc=Orya})\p{scx=Orya}/u, "\u{107f31}"); -// Script_Extension=Telu -f(/(?=\P{sc=Telu})\p{scx=Telu}/u, "\u{4565}"); -f(/(?=\P{sc=Telu})\p{scx=Telu}/u, "\u{92ad2}"); -f(/(?=\P{sc=Telu})\p{scx=Telu}/u, "\u{7de0b}"); -f(/(?=\P{sc=Telu})\p{scx=Telu}/u, "\u{bc7b2}"); -f(/(?=\P{sc=Telu})\p{scx=Telu}/u, "\u{9edd7}"); -// Script_Extension=Adlm -f(/(?=\P{sc=Adlm})\p{scx=Adlm}/u, "\u{8be77}"); -f(/(?=\P{sc=Adlm})\p{scx=Adlm}/u, "\u{31dbb}"); -f(/(?=\P{sc=Adlm})\p{scx=Adlm}/u, "\u{f2854}"); -f(/(?=\P{sc=Adlm})\p{scx=Adlm}/u, "\u{10a682}"); -f(/(?=\P{sc=Adlm})\p{scx=Adlm}/u, "\u{eba94}"); -// Script_Extension=Mand -f(/(?=\P{sc=Mand})\p{scx=Mand}/u, "\u{180bd}"); -f(/(?=\P{sc=Mand})\p{scx=Mand}/u, "\u{98fb9}"); -f(/(?=\P{sc=Mand})\p{scx=Mand}/u, "\u{aaa0c}"); -f(/(?=\P{sc=Mand})\p{scx=Mand}/u, "\u{de7c8}"); -f(/(?=\P{sc=Mand})\p{scx=Mand}/u, "\u{e27ed}"); -// Script_Extension=Mani -f(/(?=\P{sc=Mani})\p{scx=Mani}/u, "\u{88d89}"); -f(/(?=\P{sc=Mani})\p{scx=Mani}/u, "\u{2102d}"); -f(/(?=\P{sc=Mani})\p{scx=Mani}/u, "\u{35a92}"); -f(/(?=\P{sc=Mani})\p{scx=Mani}/u, "\u{1e78e}"); -f(/(?=\P{sc=Mani})\p{scx=Mani}/u, "\u{6afba}"); -// Script_Extension=Phlp -f(/(?=\P{sc=Phlp})\p{scx=Phlp}/u, "\u{10677d}"); -f(/(?=\P{sc=Phlp})\p{scx=Phlp}/u, "\u{31238}"); -f(/(?=\P{sc=Phlp})\p{scx=Phlp}/u, "\u{62ae}"); -f(/(?=\P{sc=Phlp})\p{scx=Phlp}/u, "\u{88872}"); -f(/(?=\P{sc=Phlp})\p{scx=Phlp}/u, "\u{9720e}"); -// Script_Extension=Sogd -f(/(?=\P{sc=Sogd})\p{scx=Sogd}/u, "\u{4c593}"); -f(/(?=\P{sc=Sogd})\p{scx=Sogd}/u, "\u{74ba6}"); -f(/(?=\P{sc=Sogd})\p{scx=Sogd}/u, "\u{f97a0}"); -f(/(?=\P{sc=Sogd})\p{scx=Sogd}/u, "\u{62e97}"); -f(/(?=\P{sc=Sogd})\p{scx=Sogd}/u, "\u{d2895}"); -// Script_Extension=Modi -f(/(?=\P{sc=Modi})\p{scx=Modi}/u, "\u{107b3}"); -f(/(?=\P{sc=Modi})\p{scx=Modi}/u, "\u{c6ffe}"); -f(/(?=\P{sc=Modi})\p{scx=Modi}/u, "\u{57254}"); -f(/(?=\P{sc=Modi})\p{scx=Modi}/u, "\u{3a9de}"); -f(/(?=\P{sc=Modi})\p{scx=Modi}/u, "\u{bb58d}"); -// Script_Extension=Sind -f(/(?=\P{sc=Sind})\p{scx=Sind}/u, "\u{b2f72}"); -f(/(?=\P{sc=Sind})\p{scx=Sind}/u, "\u{f7673}"); -f(/(?=\P{sc=Sind})\p{scx=Sind}/u, "\u{b2066}"); -f(/(?=\P{sc=Sind})\p{scx=Sind}/u, "\u{22ea9}"); -f(/(?=\P{sc=Sind})\p{scx=Sind}/u, "\u{492a}"); -// Script_Extension=Takr -f(/(?=\P{sc=Takr})\p{scx=Takr}/u, "\u{89a3a}"); -f(/(?=\P{sc=Takr})\p{scx=Takr}/u, "\u{2c9bb}"); -f(/(?=\P{sc=Takr})\p{scx=Takr}/u, "\u{60523}"); -f(/(?=\P{sc=Takr})\p{scx=Takr}/u, "\u{86916}"); -f(/(?=\P{sc=Takr})\p{scx=Takr}/u, "\u{ce4af}"); -// Script_Extension=Tirh -f(/(?=\P{sc=Tirh})\p{scx=Tirh}/u, "\u{2905}"); -f(/(?=\P{sc=Tirh})\p{scx=Tirh}/u, "\u{900cf}"); -f(/(?=\P{sc=Tirh})\p{scx=Tirh}/u, "\u{4b07a}"); -f(/(?=\P{sc=Tirh})\p{scx=Tirh}/u, "\u{2319}"); -f(/(?=\P{sc=Tirh})\p{scx=Tirh}/u, "\u{69d82}"); -// Script_Extension=Gong -f(/(?=\P{sc=Gong})\p{scx=Gong}/u, "\u{3ce05}"); -f(/(?=\P{sc=Gong})\p{scx=Gong}/u, "\u{362e8}"); -f(/(?=\P{sc=Gong})\p{scx=Gong}/u, "\u{fe0b9}"); -f(/(?=\P{sc=Gong})\p{scx=Gong}/u, "\u{99c0c}"); -f(/(?=\P{sc=Gong})\p{scx=Gong}/u, "\u{10a9c2}"); -// Script_Extension=Sinh -f(/(?=\P{sc=Sinh})\p{scx=Sinh}/u, "\u{8ac14}"); -f(/(?=\P{sc=Sinh})\p{scx=Sinh}/u, "\u{fea84}"); -f(/(?=\P{sc=Sinh})\p{scx=Sinh}/u, "\u{5f107}"); -f(/(?=\P{sc=Sinh})\p{scx=Sinh}/u, "\u{7ed82}"); -f(/(?=\P{sc=Sinh})\p{scx=Sinh}/u, "\u{1b5b4}"); -// Script_Extension=Limb -f(/(?=\P{sc=Limb})\p{scx=Limb}/u, "\u{36208}"); -f(/(?=\P{sc=Limb})\p{scx=Limb}/u, "\u{dff4e}"); -f(/(?=\P{sc=Limb})\p{scx=Limb}/u, "\u{fb421}"); -f(/(?=\P{sc=Limb})\p{scx=Limb}/u, "\u{5e20e}"); -f(/(?=\P{sc=Limb})\p{scx=Limb}/u, "\u{b6402}"); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-scripts.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-scripts.js deleted file mode 100644 index af0d443d0c0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-scripts.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function t(re, s) { assertTrue(re.test(s)); } -function f(re, s) { assertFalse(re.test(s)); } - -t(/\p{Script=Common}+/u, "."); -f(/\p{Script=Common}+/u, "supercalifragilisticexpialidocious"); - -t(/\p{Script=Han}+/u, "话说天下大势,分久必合,合久必分"); -t(/\p{Script=Hani}+/u, "吾庄后有一桃园,花开正盛"); -f(/\p{Script=Han}+/u, "おはようございます"); -f(/\p{Script=Hani}+/u, "Something is rotten in the state of Denmark"); - -t(/\p{Script=Latin}+/u, "Wie froh bin ich, daß ich weg bin!"); -t(/\p{Script=Latn}+/u, - "It was a bright day in April, and the clocks were striking thirteen"); -f(/\p{Script=Latin}+/u, "奔腾千里荡尘埃,渡水登山紫雾开"); -f(/\p{Script=Latn}+/u, "いただきます"); - -t(/\p{sc=Hiragana}/u, "いただきます"); -t(/\p{sc=Hira}/u, "ありがとうございました"); -f(/\p{sc=Hiragana}/u, - "Als Gregor Samsa eines Morgens aus unruhigen Träumen erwachte"); -f(/\p{sc=Hira}/u, "Call me Ishmael"); - -t(/\p{sc=Phoenician}/u, "\u{10900}\u{1091a}"); -t(/\p{sc=Phnx}/u, "\u{1091f}\u{10916}"); -f(/\p{sc=Phoenician}/u, "Arthur est un perroquet"); -f(/\p{sc=Phnx}/u, "设心狠毒非良士,操卓原来一路人"); - -t(/\p{sc=Grek}/u, "ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ"); -t(/\p{sc=Greek}/u, "μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος"); -f(/\p{sc=Greek}/u, "高贤未服英雄志,屈节偏生杰士疑"); -f(/\p{sc=Greek}/u, - "Mr. Jones, of the Manor Farm, had locked the hen-houses for the night"); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-sequence.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-sequence.js deleted file mode 100644 index 4d432980163..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-sequence.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-regexp-sequence - -// Normal usage. -assertDoesNotThrow("/\\p{Emoji_Flag_Sequence}/u"); -assertTrue(/\p{Emoji_Flag_Sequence}/u.test("\u{1F1E9}\u{1F1EA}")); - -assertDoesNotThrow("/\\p{Emoji_Keycap_Sequence}/u"); -assertTrue(/\p{Emoji_Keycap_Sequence}/u.test("\u0023\uFE0F\u20E3")); - -assertDoesNotThrow("/\\p{Emoji_Keycap_Sequence}/u"); -assertFalse(/\p{Emoji_Keycap_Sequence}/u.test("\u0022\uFE0F\u20E3")); - -assertDoesNotThrow("/\\p{Emoji_Modifier_Sequence}/u"); -assertTrue(/\p{Emoji_Modifier_Sequence}/u.test("\u26F9\u{1F3FF}")); - -assertDoesNotThrow("/\\p{Emoji_ZWJ_Sequence}/u"); -assertTrue(/\p{Emoji_ZWJ_Sequence}/u.test("\u{1F468}\u{200D}\u{1F467}")); - -// Without unicode flag. -assertDoesNotThrow("/\\p{Emoji_Flag_Sequence}/"); -assertFalse(/\p{Emoji_Flag_Sequence}/.test("\u{1F1E9}\u{1F1EA}")); -assertTrue(/\p{Emoji_Flag_Sequence}/.test("\\p{Emoji_Flag_Sequence}")); - -// Negated and/or inside a character class. -assertThrows("/\\P{Emoji_Flag_Sequence}/u"); -assertThrows("/\\P{Emoji_Keycap_Sequence}/u"); -assertThrows("/\\P{Emoji_Modifier_Sequence}/u"); -assertThrows("/\\P{Emoji_Tag_Sequence}/u"); -assertThrows("/\\P{Emoji_ZWJ_Sequence}/u"); - -assertThrows("/[\\p{Emoji_Flag_Sequence}]/u"); -assertThrows("/[\\p{Emoji_Keycap_Sequence}]/u"); -assertThrows("/[\\p{Emoji_Modifier_Sequence}]/u"); -assertThrows("/[\\p{Emoji_Tag_Sequence}]/u"); -assertThrows("/[\\p{Emoji_ZWJ_Sequence}]/u"); - -assertThrows("/[\\P{Emoji_Flag_Sequence}]/u"); -assertThrows("/[\\P{Emoji_Keycap_Sequence}]/u"); -assertThrows("/[\\P{Emoji_Modifier_Sequence}]/u"); -assertThrows("/[\\P{Emoji_Tag_Sequence}]/u"); -assertThrows("/[\\P{Emoji_ZWJ_Sequence}]/u"); - -assertThrows("/[\\w\\p{Emoji_Flag_Sequence}]/u"); -assertThrows("/[\\w\\p{Emoji_Keycap_Sequence}]/u"); -assertThrows("/[\\w\\p{Emoji_Modifier_Sequence}]/u"); -assertThrows("/[\\w\\p{Emoji_Tag_Sequence}]/u"); -assertThrows("/[\\w\\p{Emoji_ZWJ_Sequence}]/u"); - -assertThrows("/[\\w\\P{Emoji_Flag_Sequence}]/u"); -assertThrows("/[\\w\\P{Emoji_Keycap_Sequence}]/u"); -assertThrows("/[\\w\\P{Emoji_Modifier_Sequence}]/u"); -assertThrows("/[\\w\\P{Emoji_Tag_Sequence}]/u"); -assertThrows("/[\\w\\P{Emoji_ZWJ_Sequence}]/u"); - -// Two regional indicators, but not a country. -assertFalse(/\p{Emoji_Flag_Sequence}/u.test("\u{1F1E6}\u{1F1E6}")); - -// ZWJ sequence as in two ZWJ elements joined by a ZWJ, but not in the list. -assertFalse(/\p{Emoji_ZWJ_Sequence}/u.test("\u{1F467}\u{200D}\u{1F468}")); - -// More complex regexp -assertEquals( - ["country flag: \u{1F1E6}\u{1F1F9}"], - /Country Flag: \p{Emoji_Flag_Sequence}/iu.exec( - "this is an example of a country flag: \u{1F1E6}\u{1F1F9} is Austria")); -assertEquals( - ["country flag: \u{1F1E6}\u{1F1F9}", "\u{1F1E6}\u{1F1F9}"], - /Country Flag: (\p{Emoji_Flag_Sequence})/iu.exec( - "this is an example of a country flag: \u{1F1E6}\u{1F1F9} is Austria")); -assertEquals( - ["country flag: \u{1F1E6}\u{1F1F9}"], - /Country Flag: ..(?<=\p{Emoji_Flag_Sequence})/iu.exec( - "this is an example of a country flag: \u{1F1E6}\u{1F1F9} is Austria")); -assertEquals( - ["flag: \u{1F1E6}\u{1F1F9}", "\u{1F1E6}\u{1F1F9}"], - /Flag: ..(?<=(\p{Emoji_Flag_Sequence})|\p{Emoji_Keycap_Sequence})/iu.exec( - "this is an example of a country flag: \u{1F1E6}\u{1F1F9} is Austria")); - -// Partial sequences. -assertFalse(/\p{Emoji_Flag_Sequence}/u.test("\u{1F1E6}_")); -assertFalse(/\p{Emoji_Keycap_Sequence}/u.test("2\uFE0F_")); -assertFalse(/\p{Emoji_Modifier_Sequence}/u.test("\u261D_")); -assertFalse(/\p{Emoji_Tag_Sequence}/u.test("\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}_")); -assertFalse(/\p{Emoji_ZWJ_Sequence}/u.test("\u{1F468}\u200D\u2764\uFE0F\u200D_")); diff --git a/implementation-contributed/v8/mjsunit/harmony/regexp-property-special.js b/implementation-contributed/v8/mjsunit/harmony/regexp-property-special.js deleted file mode 100644 index 07263c65140..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regexp-property-special.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function t(re, s) { assertTrue(re.test(s)); } -function f(re, s) { assertFalse(re.test(s)); } - -t(/\p{ASCII}+/u, "abc123"); -f(/\p{ASCII}+/u, "ⓐⓑⓒ①②③"); -f(/\p{ASCII}+/u, "🄰🄱🄲①②③"); -f(/\P{ASCII}+/u, "abcd123"); -t(/\P{ASCII}+/u, "ⓐⓑⓒ①②③"); -t(/\P{ASCII}+/u, "🄰🄱🄲①②③"); - -f(/[^\p{ASCII}]+/u, "abc123"); -f(/[\p{ASCII}]+/u, "ⓐⓑⓒ①②③"); -f(/[\p{ASCII}]+/u, "🄰🄱🄲①②③"); -t(/[^\P{ASCII}]+/u, "abcd123"); -t(/[\P{ASCII}]+/u, "ⓐⓑⓒ①②③"); -f(/[^\P{ASCII}]+/u, "🄰🄱🄲①②③"); - -t(/\p{Any}+/u, "🄰🄱🄲①②③"); - -assertEquals(["\ud800"], /\p{Any}/u.exec("\ud800\ud801")); -assertEquals(["\udc00"], /\p{Any}/u.exec("\udc00\udc01")); -assertEquals(["\ud800\udc01"], /\p{Any}/u.exec("\ud800\udc01")); -assertEquals(["\udc01"], /\p{Any}/u.exec("\udc01")); - -f(/\P{Any}+/u, "123"); -f(/[\P{Any}]+/u, "123"); -t(/[\P{Any}\d]+/u, "123"); -t(/[^\P{Any}]+/u, "123"); - -t(/\p{Assigned}+/u, "123"); -t(/\p{Assigned}+/u, "🄰🄱🄲"); -f(/\p{Assigned}+/u, "\ufdd0"); -f(/\p{Assigned}+/u, "\u{fffff}"); - -f(/\P{Assigned}+/u, "123"); -f(/\P{Assigned}+/u, "🄰🄱🄲"); -t(/\P{Assigned}+/u, "\ufdd0"); -t(/\P{Assigned}+/u, "\u{fffff}"); -f(/\P{Assigned}/u, ""); - -t(/[^\P{Assigned}]+/u, "123"); -f(/[\P{Assigned}]+/u, "🄰🄱🄲"); -f(/[^\P{Assigned}]+/u, "\ufdd0"); -t(/[\P{Assigned}]+/u, "\u{fffff}"); -f(/[\P{Assigned}]/u, ""); - -f(/[^\u1234\p{ASCII}]+/u, "\u1234"); -t(/[x\P{ASCII}]+/u, "x"); -t(/[\u1234\p{ASCII}]+/u, "\u1234"); - -// Contributory binary properties are not supported. -assertThrows("/\\p{Other_Alphabetic}/u"); -assertThrows("/\\P{OAlpha}/u"); -assertThrows("/\\p{Other_Default_Ignorable_Code_Point}/u"); -assertThrows("/\\P{ODI}/u"); -assertThrows("/\\p{Other_Grapheme_Extend}/u"); -assertThrows("/\\P{OGr_Ext}/u"); -assertThrows("/\\p{Other_ID_Continue}/u"); -assertThrows("/\\P{OIDC}/u"); -assertThrows("/\\p{Other_ID_Start}/u"); -assertThrows("/\\P{OIDS}/u"); -assertThrows("/\\p{Other_Lowercase}/u"); -assertThrows("/\\P{OLower}/u"); -assertThrows("/\\p{Other_Math}/u"); -assertThrows("/\\P{OMath}/u"); -assertThrows("/\\p{Other_Uppercase}/u"); -assertThrows("/\\P{OUpper}/u"); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress-generators-resume.js b/implementation-contributed/v8/mjsunit/harmony/regress-generators-resume.js deleted file mode 100644 index c72ac30b483..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress-generators-resume.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - - -function* foo() { - for (let i = 0; i < 10; i++) { - yield 1; - } - return 0; -} - -g = foo(); -%OptimizeFunctionOnNextCall(foo); -g.next(); -g.next(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-173361.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-173361.js deleted file mode 100644 index f9cfb6684c0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-173361.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --harmony - -const x = 7; - -function f() { const y = 8; } -f(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-4696.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-4696.js deleted file mode 100644 index 82969f9fbeb..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-4696.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testSpreadIndex() { - var result = [...[17, 42]][1]; - assertEquals(result, 42); -})(); - -(function testSpreadProperty() { - var result = [...[17, 42]].length; - assertEquals(result, 2); -})(); - -(function testSpreadMethodCall() { - var result = [...[17, 42]].join("+"); - assertEquals(result, "17+42"); -})(); - -(function testSpreadSavedMethodCall() { - var x = [...[17, 42]]; - var method = x.join; - var result = method.call(x, "+"); - assertEquals(result, "17+42"); -})(); - -(function testSpreadAsTemplateTag() { - assertThrows(function() { [...[17, 42]] `foo`; }, TypeError) -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-6100.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-6100.js deleted file mode 100644 index f301094679d..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-6100.js +++ /dev/null @@ -1,1736 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This test is added because harmony-template-escapes were not properly -// handled in the preparser. - -function check({cooked, raw, exprs}) { - return function(strs, ...args) { - assertArrayEquals(cooked, strs); - assertArrayEquals(raw, strs.raw); - assertArrayEquals(exprs, args); - }; -} - -// clang-format off - -function lazy() { - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\01' - ], - 'exprs': [] - })`\01`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\01', - 'right' - ], - 'exprs': [ - 0 - ] - })`\01${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\01' - ], - 'exprs': [ - 0 - ] - })`left${0}\01`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\01', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\01${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\1' - ], - 'exprs': [] - })`\1`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\1', - 'right' - ], - 'exprs': [ - 0 - ] - })`\1${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\1' - ], - 'exprs': [ - 0 - ] - })`left${0}\1`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\1', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\1${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\xg' - ], - 'exprs': [] - })`\xg`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\xg', - 'right' - ], - 'exprs': [ - 0 - ] - })`\xg${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\xg' - ], - 'exprs': [ - 0 - ] - })`left${0}\xg`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\xg', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\xg${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\xAg' - ], - 'exprs': [] - })`\xAg`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\xAg', - 'right' - ], - 'exprs': [ - 0 - ] - })`\xAg${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\xAg' - ], - 'exprs': [ - 0 - ] - })`left${0}\xAg`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\xAg', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\xAg${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u0' - ], - 'exprs': [] - })`\u0`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u0', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u0${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u0' - ], - 'exprs': [ - 0 - ] - })`left${0}\u0`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u0', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u0${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u0g' - ], - 'exprs': [] - })`\u0g`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u0g', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u0g${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u0g' - ], - 'exprs': [ - 0 - ] - })`left${0}\u0g`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u0g', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u0g${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u00g' - ], - 'exprs': [] - })`\u00g`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u00g', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u00g${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u00g' - ], - 'exprs': [ - 0 - ] - })`left${0}\u00g`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u00g', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u00g${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u000g' - ], - 'exprs': [] - })`\u000g`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u000g', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u000g${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u000g' - ], - 'exprs': [ - 0 - ] - })`left${0}\u000g`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u000g', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u000g${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{}' - ], - 'exprs': [] - })`\u{}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{}${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{-0}' - ], - 'exprs': [] - })`\u{-0}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{-0}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{-0}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{-0}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{-0}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{-0}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{-0}${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{g}' - ], - 'exprs': [] - })`\u{g}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{g}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{g}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{g}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{g}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{g}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{g}${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{0' - ], - 'exprs': [] - })`\u{0`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{0', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{0${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{0' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{0`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{0', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{0${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{\\u{0}' - ], - 'exprs': [] - })`\u{\u{0}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{\\u{0}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{\u{0}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{\\u{0}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{\u{0}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{\\u{0}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{\u{0}${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{110000}' - ], - 'exprs': [] - })`\u{110000}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{110000}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{110000}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{110000}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{110000}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{110000}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{110000}${1}right`; - - - - function checkMultiple(expectedArray) { - let results = []; - return function consume(strs, ...args) { - if (typeof strs === 'undefined') { - assertArrayEquals(expectedArray, results); - } else { - results.push({cooked: strs, raw: strs.raw, exprs: args}); - return consume; - } - }; - } - - - checkMultiple([{ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] - }, { - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] - }])`\u``\u`(); - - checkMultiple([{ - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] - }, { - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] - }])` ``\u`(); - - checkMultiple([{ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] - }, { - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] - }])`\u`` `(); - - checkMultiple([{ - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] - }, { - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] - }])` `` `(); -} - -(function eager() { - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\01' - ], - 'exprs': [] - })`\01`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\01', - 'right' - ], - 'exprs': [ - 0 - ] - })`\01${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\01' - ], - 'exprs': [ - 0 - ] - })`left${0}\01`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\01', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\01${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\1' - ], - 'exprs': [] - })`\1`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\1', - 'right' - ], - 'exprs': [ - 0 - ] - })`\1${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\1' - ], - 'exprs': [ - 0 - ] - })`left${0}\1`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\1', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\1${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\xg' - ], - 'exprs': [] - })`\xg`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\xg', - 'right' - ], - 'exprs': [ - 0 - ] - })`\xg${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\xg' - ], - 'exprs': [ - 0 - ] - })`left${0}\xg`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\xg', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\xg${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\xAg' - ], - 'exprs': [] - })`\xAg`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\xAg', - 'right' - ], - 'exprs': [ - 0 - ] - })`\xAg${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\xAg' - ], - 'exprs': [ - 0 - ] - })`left${0}\xAg`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\xAg', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\xAg${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u0' - ], - 'exprs': [] - })`\u0`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u0', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u0${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u0' - ], - 'exprs': [ - 0 - ] - })`left${0}\u0`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u0', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u0${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u0g' - ], - 'exprs': [] - })`\u0g`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u0g', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u0g${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u0g' - ], - 'exprs': [ - 0 - ] - })`left${0}\u0g`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u0g', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u0g${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u00g' - ], - 'exprs': [] - })`\u00g`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u00g', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u00g${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u00g' - ], - 'exprs': [ - 0 - ] - })`left${0}\u00g`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u00g', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u00g${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u000g' - ], - 'exprs': [] - })`\u000g`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u000g', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u000g${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u000g' - ], - 'exprs': [ - 0 - ] - })`left${0}\u000g`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u000g', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u000g${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{}' - ], - 'exprs': [] - })`\u{}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{}${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{-0}' - ], - 'exprs': [] - })`\u{-0}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{-0}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{-0}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{-0}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{-0}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{-0}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{-0}${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{g}' - ], - 'exprs': [] - })`\u{g}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{g}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{g}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{g}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{g}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{g}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{g}${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{0' - ], - 'exprs': [] - })`\u{0`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{0', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{0${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{0' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{0`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{0', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{0${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{\\u{0}' - ], - 'exprs': [] - })`\u{\u{0}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{\\u{0}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{\u{0}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{\\u{0}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{\u{0}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{\\u{0}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{\u{0}${1}right`; - - check({ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u{110000}' - ], - 'exprs': [] - })`\u{110000}`; - - check({ - 'cooked': [ - undefined, - 'right' - ], - 'raw': [ - '\\u{110000}', - 'right' - ], - 'exprs': [ - 0 - ] - })`\u{110000}${0}right`; - - check({ - 'cooked': [ - 'left', - undefined - ], - 'raw': [ - 'left', - '\\u{110000}' - ], - 'exprs': [ - 0 - ] - })`left${0}\u{110000}`; - - check({ - 'cooked': [ - 'left', - undefined, - 'right' - ], - 'raw': [ - 'left', - '\\u{110000}', - 'right' - ], - 'exprs': [ - 0, - 1 - ] - })`left${0}\u{110000}${1}right`; - - - - function checkMultiple(expectedArray) { - let results = []; - return function consume(strs, ...args) { - if (typeof strs === 'undefined') { - assertArrayEquals(expectedArray, results); - } else { - results.push({cooked: strs, raw: strs.raw, exprs: args}); - return consume; - } - }; - } - - - checkMultiple([{ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] - }, { - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] - }])`\u``\u`(); - - checkMultiple([{ - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] - }, { - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] - }])` ``\u`(); - - checkMultiple([{ - 'cooked': [ - undefined - ], - 'raw': [ - '\\u', - ], - 'exprs': [] - }, { - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] - }])`\u`` `(); - - checkMultiple([{ - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] - }, { - 'cooked': [ - ' ' - ], - 'raw': [ - ' ', - ], - 'exprs': [] - }])` `` `(); -})(); - -lazy(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-6322.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-6322.js deleted file mode 100644 index 927b56ea791..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-6322.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Crash with --verify-heap -(async function() { for await (let { a = class b { } } of [{}]) { } })(); -(async function() { var a; for await ({ a = class b { } } of [{}]) { } })(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-771470.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-771470.js deleted file mode 100644 index 9776fb0badf..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-771470.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -async function* gen() { }; -gen.prototype = 1; diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-772649.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-772649.js deleted file mode 100644 index 2ff27670dff..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-772649.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -async function* gen([[notIterable]] = [null]) {} -assertThrows(() => gen(), TypeError); -assertThrows(() => gen(), TypeError); -%OptimizeFunctionOnNextCall(gen); -assertThrows(() => gen(), TypeError); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-897436.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-897436.js deleted file mode 100644 index c0cf41661cc..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-897436.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -async function* gen() { - const alwaysPending = new Promise(() => {}); - alwaysPending.then = "non-callable then"; - yield alwaysPending; -} -gen().next(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-912504.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-912504.js deleted file mode 100644 index 78b1992b14e..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-912504.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt --harmony-object-from-entries --allow-natives-syntax - -function test() { - Object.fromEntries([[]]); - %DeoptimizeNow(); -} -test(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-347528.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-347528.js deleted file mode 100644 index e4e8efbc9c0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-347528.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --harmony - -"use strict"; -let unused_var = 1; -function __f_12() { new Array(); } -__f_12(); -__f_12(); -%OptimizeFunctionOnNextCall(__f_12); -__f_12(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-571149.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-571149.js deleted file mode 100644 index b3325b7fdf1..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-571149.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function(a = 0){ - var x; // allocated in a var block, due to use of default parameter - (function() { return !x })(); -})(); - -(function({a}){ - var x; // allocated in a var block, due to use of parameter destructuring - (function() { return !x })(); -})({}); - -(function(...a){ - var x; // allocated in a var block, due to use of rest parameter - (function() { return !x })(); -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-621111.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-621111.js deleted file mode 100644 index 58a0d5ce3fc..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-621111.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(y = 1[1, [...[]]]) => 1; // will core dump, if not fixed -(y = 1[1, [...[]]]) => {}; // will core dump, if not fixed diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-621496.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-621496.js deleted file mode 100644 index 4db7a950394..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-crbug-621496.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testIllegalSpreadAsSingleArrowParameter() { - assertThrows("(...[42]) => 42)", SyntaxError) // will core dump, if not fixed -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-typedarray-out-of-bounds.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-typedarray-out-of-bounds.js deleted file mode 100644 index 4db280aac9c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/regress/regress-typedarray-out-of-bounds.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = new Int32Array(10); -function f(a) { a["-1"] = 15; } -for (var i = 0; i < 3; i++) { - f(a); -} -assertEquals(undefined, a[-1]); diff --git a/implementation-contributed/v8/mjsunit/harmony/set-prototype-of.js b/implementation-contributed/v8/mjsunit/harmony/set-prototype-of.js deleted file mode 100644 index 7406fb54bf2..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/set-prototype-of.js +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -function getObjects() { - function func() {} - return [ - func, - new func(), - {x: 5}, - /regexp/, - ['array'], - // new Error(), - new Date(), - new Number(1), - new Boolean(true), - new String('str'), - Object(Symbol()) - ]; -} - - -var coercibleValues = [ - 1, - true, - 'string', - Symbol() -]; - - -var nonCoercibleValues = [ - undefined, - null -]; - - -var valuesWithoutNull = coercibleValues.concat(undefined); - - -function TestSetPrototypeOfCoercibleValues() { - for (var i = 0; i < coercibleValues.length; i++) { - var value = coercibleValues[i]; - var proto = Object.getPrototypeOf(value); - assertEquals(Object.setPrototypeOf(value, {}), value); - assertSame(proto, Object.getPrototypeOf(value)); - } -} -TestSetPrototypeOfCoercibleValues(); - - -function TestSetPrototypeOfNonCoercibleValues() { - for (var i = 0; i < nonCoercibleValues.length; i++) { - var value = nonCoercibleValues[i]; - assertThrows(function() { - Object.setPrototypeOf(value, {}); - }, TypeError); - } -} -TestSetPrototypeOfNonCoercibleValues(); - - -function TestSetPrototypeToNonObject(proto) { - var objects = getObjects(); - for (var i = 0; i < objects.length; i++) { - var object = objects[i]; - for (var j = 0; j < valuesWithoutNull.length; j++) { - var proto = valuesWithoutNull[j]; - assertThrows(function() { - Object.setPrototypeOf(object, proto); - }, TypeError); - } - } -} -TestSetPrototypeToNonObject(); - - -function TestSetPrototypeOf(object, proto) { - assertEquals(Object.setPrototypeOf(object, proto), object); - assertEquals(Object.getPrototypeOf(object), proto); -} - - -function TestSetPrototypeOfForObjects() { - var objects1 = getObjects(); - var objects2 = getObjects(); - for (var i = 0; i < objects1.length; i++) { - for (var j = 0; j < objects2.length; j++) { - TestSetPrototypeOf(objects1[i], objects2[j]); - } - } -} -TestSetPrototypeOfForObjects(); - - -function TestSetPrototypeToNull() { - var objects = getObjects(); - for (var i = 0; i < objects.length; i++) { - TestSetPrototypeOf(objects[i], null); - } -} -TestSetPrototypeToNull(); - - -function TestSetPrototypeOfNonExtensibleObject() { - var objects = getObjects(); - var proto = {}; - for (var i = 0; i < objects.length; i++) { - var object = objects[i]; - Object.preventExtensions(object); - // Setting the current prototype must succeed. - Object.setPrototypeOf(object, Object.getPrototypeOf(object)); - // Setting any other must fail. - assertThrows(function() { - Object.setPrototypeOf(object, proto); - }, TypeError); - } -} -TestSetPrototypeOfNonExtensibleObject(); - - -function TestSetPrototypeCyclic() { - var objects = [ - Object.prototype, {}, - Array.prototype, [], - Error.prototype, new TypeError, - // etc ... - ]; - for (var i = 0; i < objects.length; i += 2) { - var object = objects[i]; - var value = objects[i + 1]; - assertThrows(function() { - Object.setPrototypeOf(object, value); - }, TypeError); - } -} -TestSetPrototypeCyclic(); - - -function TestLookup() { - var object = {}; - assertFalse('x' in object); - assertFalse('y' in object); - - var oldProto = { - x: 'old x', - y: 'old y' - }; - Object.setPrototypeOf(object, oldProto); - assertEquals(object.x, 'old x'); - assertEquals(object.y, 'old y'); - - var newProto = { - x: 'new x' - }; - Object.setPrototypeOf(object, newProto); - assertEquals(object.x, 'new x'); - assertFalse('y' in object); -} -TestLookup(); diff --git a/implementation-contributed/v8/mjsunit/harmony/sharedarraybuffer.js b/implementation-contributed/v8/mjsunit/harmony/sharedarraybuffer.js deleted file mode 100644 index a79574d69f0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/sharedarraybuffer.js +++ /dev/null @@ -1,592 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --harmony-sharedarraybuffer - - -// SharedArrayBuffer - -function TestByteLength(param, expectedByteLength) { - var sab = new SharedArrayBuffer(param); - assertSame(expectedByteLength, sab.byteLength); -} - -function TestArrayBufferCreation() { - TestByteLength(1, 1); - TestByteLength(256, 256); - TestByteLength(2.567, 2); - - TestByteLength("abc", 0); - - TestByteLength(0, 0); - - assertThrows(function() { new SharedArrayBuffer(-10); }, RangeError); - assertThrows(function() { new SharedArrayBuffer(-2.567); }, RangeError); - -/* TODO[dslomov]: Reenable the test - assertThrows(function() { - var ab1 = new SharedArrayBuffer(0xFFFFFFFFFFFF) - }, RangeError); -*/ - - var sab = new SharedArrayBuffer(); - assertSame(0, sab.byteLength); - assertEquals("[object SharedArrayBuffer]", - Object.prototype.toString.call(sab)); -} - -TestArrayBufferCreation(); - -function TestByteLengthNotWritable() { - var sab = new SharedArrayBuffer(1024); - assertSame(1024, sab.byteLength); - - assertThrows(function() { "use strict"; sab.byteLength = 42; }, TypeError); -} - -TestByteLengthNotWritable(); - -// Typed arrays using SharedArrayBuffers - -// TODO(binji): how many of these tests are necessary if there are no new -// TypedArray types? - -function MakeSharedTypedArray(constr, numElements) { - var sab = new SharedArrayBuffer(constr.BYTES_PER_ELEMENT * numElements); - return new constr(sab); -} - -function TestTypedArray(constr, elementSize, typicalElement) { - assertSame(elementSize, constr.BYTES_PER_ELEMENT); - - var sab = new SharedArrayBuffer(256*elementSize); - - var a0 = new constr(30); - assertEquals("[object " + constr.name + "]", - Object.prototype.toString.call(a0)); - - assertSame(elementSize, a0.BYTES_PER_ELEMENT); - assertSame(30, a0.length); - assertSame(30*elementSize, a0.byteLength); - assertSame(0, a0.byteOffset); - assertSame(30*elementSize, a0.buffer.byteLength); - - var aOverBufferLen0 = new constr(sab, 128*elementSize, 0); - assertSame(sab, aOverBufferLen0.buffer); - assertSame(elementSize, aOverBufferLen0.BYTES_PER_ELEMENT); - assertSame(0, aOverBufferLen0.length); - assertSame(0, aOverBufferLen0.byteLength); - assertSame(128*elementSize, aOverBufferLen0.byteOffset); - - var a1 = new constr(sab, 128*elementSize, 128); - assertSame(sab, a1.buffer); - assertSame(elementSize, a1.BYTES_PER_ELEMENT); - assertSame(128, a1.length); - assertSame(128*elementSize, a1.byteLength); - assertSame(128*elementSize, a1.byteOffset); - - - var a2 = new constr(sab, 64*elementSize, 128); - assertSame(sab, a2.buffer); - assertSame(elementSize, a2.BYTES_PER_ELEMENT); - assertSame(128, a2.length); - assertSame(128*elementSize, a2.byteLength); - assertSame(64*elementSize, a2.byteOffset); - - var a3 = new constr(sab, 192*elementSize); - assertSame(sab, a3.buffer); - assertSame(64, a3.length); - assertSame(64*elementSize, a3.byteLength); - assertSame(192*elementSize, a3.byteOffset); - - var a4 = new constr(sab); - assertSame(sab, a4.buffer); - assertSame(256, a4.length); - assertSame(256*elementSize, a4.byteLength); - assertSame(0, a4.byteOffset); - - - var i; - for (i = 0; i < 128; i++) { - a1[i] = typicalElement; - } - - for (i = 0; i < 128; i++) { - assertSame(typicalElement, a1[i]); - } - - for (i = 0; i < 64; i++) { - assertSame(0, a2[i]); - } - - for (i = 64; i < 128; i++) { - assertSame(typicalElement, a2[i]); - } - - for (i = 0; i < 64; i++) { - assertSame(typicalElement, a3[i]); - } - - for (i = 0; i < 128; i++) { - assertSame(0, a4[i]); - } - - for (i = 128; i < 256; i++) { - assertSame(typicalElement, a4[i]); - } - - var aAtTheEnd = new constr(sab, 256*elementSize); - assertSame(elementSize, aAtTheEnd.BYTES_PER_ELEMENT); - assertSame(0, aAtTheEnd.length); - assertSame(0, aAtTheEnd.byteLength); - assertSame(256*elementSize, aAtTheEnd.byteOffset); - - assertThrows(function () { new constr(sab, 257*elementSize); }, RangeError); - assertThrows( - function () { new constr(sab, 128*elementSize, 192); }, - RangeError); - - if (elementSize !== 1) { - assertThrows(function() { new constr(sab, 128*elementSize - 1, 10); }, - RangeError); - var unalignedArrayBuffer = new SharedArrayBuffer(10*elementSize + 1); - var goodArray = new constr(unalignedArrayBuffer, 0, 10); - assertSame(10, goodArray.length); - assertSame(10*elementSize, goodArray.byteLength); - assertThrows(function() { new constr(unalignedArrayBuffer)}, RangeError); - assertThrows(function() { new constr(unalignedArrayBuffer, 5*elementSize)}, - RangeError); - } - - var abLen0 = new SharedArrayBuffer(0); - var aOverAbLen0 = new constr(abLen0); - assertSame(abLen0, aOverAbLen0.buffer); - assertSame(elementSize, aOverAbLen0.BYTES_PER_ELEMENT); - assertSame(0, aOverAbLen0.length); - assertSame(0, aOverAbLen0.byteLength); - assertSame(0, aOverAbLen0.byteOffset); - - var a = new constr(sab, 64*elementSize, 128); - assertEquals("[object " + constr.name + "]", - Object.prototype.toString.call(a)); - var desc = Object.getOwnPropertyDescriptor( - constr.prototype.__proto__, Symbol.toStringTag); - assertTrue(desc.configurable); - assertFalse(desc.enumerable); - assertFalse(!!desc.writable); - assertFalse(!!desc.set); - assertEquals("function", typeof desc.get); -} - -TestTypedArray(Uint8Array, 1, 0xFF); -TestTypedArray(Int8Array, 1, -0x7F); -TestTypedArray(Uint16Array, 2, 0xFFFF); -TestTypedArray(Int16Array, 2, -0x7FFF); -TestTypedArray(Uint32Array, 4, 0xFFFFFFFF); -TestTypedArray(Int32Array, 4, -0x7FFFFFFF); -TestTypedArray(Float32Array, 4, 0.5); -TestTypedArray(Float64Array, 8, 0.5); -TestTypedArray(Uint8ClampedArray, 1, 0xFF); - - -function SubarrayTestCase(constructor, item, expectedResultLen, - expectedStartIndex, initialLen, start, end) { - var a = MakeSharedTypedArray(constructor, initialLen); - var s = a.subarray(start, end); - assertSame(constructor, s.constructor); - assertSame(expectedResultLen, s.length); - if (s.length > 0) { - s[0] = item; - assertSame(item, a[expectedStartIndex]); - } -} - -function TestSubArray(constructor, item) { - SubarrayTestCase(constructor, item, 512, 512, 1024, 512, 1024); - SubarrayTestCase(constructor, item, 512, 512, 1024, 512); - - SubarrayTestCase(constructor, item, 0, undefined, 0, 1, 20); - SubarrayTestCase(constructor, item, 100, 0, 100, 0, 100); - SubarrayTestCase(constructor, item, 100, 0, 100, 0, 1000); - SubarrayTestCase(constructor, item, 0, undefined, 100, 5, 1); - - SubarrayTestCase(constructor, item, 1, 89, 100, -11, -10); - SubarrayTestCase(constructor, item, 9, 90, 100, -10, 99); - SubarrayTestCase(constructor, item, 0, undefined, 100, -10, 80); - SubarrayTestCase(constructor, item, 10,80, 100, 80, -10); - - SubarrayTestCase(constructor, item, 10,90, 100, 90, "100"); - SubarrayTestCase(constructor, item, 10,90, 100, "90", "100"); - - SubarrayTestCase(constructor, item, 0, undefined, 100, 90, "abc"); - SubarrayTestCase(constructor, item, 10,0, 100, "abc", 10); - - SubarrayTestCase(constructor, item, 10,0, 100, 0.96, 10.96); - SubarrayTestCase(constructor, item, 10,0, 100, 0.96, 10.01); - SubarrayTestCase(constructor, item, 10,0, 100, 0.01, 10.01); - SubarrayTestCase(constructor, item, 10,0, 100, 0.01, 10.96); - - - SubarrayTestCase(constructor, item, 10,90, 100, 90); - SubarrayTestCase(constructor, item, 10,90, 100, -10); -} - -TestSubArray(Uint8Array, 0xFF); -TestSubArray(Int8Array, -0x7F); -TestSubArray(Uint16Array, 0xFFFF); -TestSubArray(Int16Array, -0x7FFF); -TestSubArray(Uint32Array, 0xFFFFFFFF); -TestSubArray(Int32Array, -0x7FFFFFFF); -TestSubArray(Float32Array, 0.5); -TestSubArray(Float64Array, 0.5); -TestSubArray(Uint8ClampedArray, 0xFF); - -function TestTypedArrayOutOfRange(constructor, value, result) { - var a = MakeSharedTypedArray(constructor, 1); - a[0] = value; - assertSame(result, a[0]); -} - -TestTypedArrayOutOfRange(Uint8Array, 0x1FA, 0xFA); -TestTypedArrayOutOfRange(Uint8Array, -1, 0xFF); - -TestTypedArrayOutOfRange(Int8Array, 0x1FA, 0x7A - 0x80); - -TestTypedArrayOutOfRange(Uint16Array, 0x1FFFA, 0xFFFA); -TestTypedArrayOutOfRange(Uint16Array, -1, 0xFFFF); -TestTypedArrayOutOfRange(Int16Array, 0x1FFFA, 0x7FFA - 0x8000); - -TestTypedArrayOutOfRange(Uint32Array, 0x1FFFFFFFA, 0xFFFFFFFA); -TestTypedArrayOutOfRange(Uint32Array, -1, 0xFFFFFFFF); -TestTypedArrayOutOfRange(Int32Array, 0x1FFFFFFFA, 0x7FFFFFFA - 0x80000000); - -TestTypedArrayOutOfRange(Uint8ClampedArray, 0x1FA, 0xFF); -TestTypedArrayOutOfRange(Uint8ClampedArray, -1, 0); - -var typedArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray, - Float32Array, - Float64Array]; - -function TestPropertyTypeChecks(constructor) { - function CheckProperty(name) { - var d = Object.getOwnPropertyDescriptor(constructor.prototype.__proto__, - name); - var o = {}; - assertThrows(function() {d.get.call(o);}, TypeError); - for (var i = 0; i < typedArrayConstructors.length; i++) { - var ctor = typedArrayConstructors[i]; - var a = MakeSharedTypedArray(ctor, 10); - d.get.call(a); // shouldn't throw - } - } - - CheckProperty("buffer"); - CheckProperty("byteOffset"); - CheckProperty("byteLength"); - CheckProperty("length"); -} - -for(i = 0; i < typedArrayConstructors.length; i++) { - TestPropertyTypeChecks(typedArrayConstructors[i]); -} - -function TestTypedArraySet() { - // Test array.set in different combinations. - - function assertArrayPrefix(expected, array) { - for (var i = 0; i < expected.length; ++i) { - assertEquals(expected[i], array[i]); - } - } - - // SharedTypedArrays don't allow initialization via array-like - function initializeFromArray(constructor, array) { - var buffer = MakeSharedTypedArray(constructor, array.length); - for (var i = 0; i < array.length; ++i) { - buffer[i] = array[i]; - } - return buffer; - } - - var a11 = initializeFromArray(Int16Array, [1, 2, 3, 4, 0, -1]) - var a12 = MakeSharedTypedArray(Uint16Array, 15); - a12.set(a11, 3) - assertArrayPrefix([0, 0, 0, 1, 2, 3, 4, 0, 0xffff, 0, 0], a12) - assertThrows(function(){ a11.set(a12) }) - - var a21 = [1, undefined, 10, NaN, 0, -1, {valueOf: function() {return 3}}] - var a22 = MakeSharedTypedArray(Int32Array, 12) - a22.set(a21, 2) - assertArrayPrefix([0, 0, 1, 0, 10, 0, 0, -1, 3, 0], a22) - - var a31 = initializeFromArray(Float32Array, [2, 4, 6, 8, 11, NaN, 1/0, -3]) - var a32 = a31.subarray(2, 6) - a31.set(a32, 4) - assertArrayPrefix([2, 4, 6, 8, 6, 8, 11, NaN], a31) - assertArrayPrefix([6, 8, 6, 8], a32) - - var a4 = initializeFromArray(Uint8ClampedArray, [3,2,5,6]) - a4.set(a4) - assertArrayPrefix([3, 2, 5, 6], a4) - - // Cases with overlapping backing store but different element sizes. - var b = new SharedArrayBuffer(4) - var a5 = new Int16Array(b) - var a50 = new Int8Array(b) - var a51 = new Int8Array(b, 0, 2) - var a52 = new Int8Array(b, 1, 2) - var a53 = new Int8Array(b, 2, 2) - - a5.set([0x5050, 0x0a0a]) - assertArrayPrefix([0x50, 0x50, 0x0a, 0x0a], a50) - assertArrayPrefix([0x50, 0x50], a51) - assertArrayPrefix([0x50, 0x0a], a52) - assertArrayPrefix([0x0a, 0x0a], a53) - - a50.set([0x50, 0x50, 0x0a, 0x0a]) - a51.set(a5) - assertArrayPrefix([0x50, 0x0a, 0x0a, 0x0a], a50) - - a50.set([0x50, 0x50, 0x0a, 0x0a]) - a52.set(a5) - assertArrayPrefix([0x50, 0x50, 0x0a, 0x0a], a50) - - a50.set([0x50, 0x50, 0x0a, 0x0a]) - a53.set(a5) - assertArrayPrefix([0x50, 0x50, 0x50, 0x0a], a50) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a51) - assertArrayPrefix([0x0050, 0x0051], a5) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a52) - assertArrayPrefix([0x0051, 0x000a], a5) - - a50.set([0x50, 0x51, 0x0a, 0x0b]) - a5.set(a53) - assertArrayPrefix([0x000a, 0x000b], a5) - - // Mixed types of same size. - var a61 = initializeFromArray(Float32Array, [1.2, 12.3]) - var a62 = MakeSharedTypedArray(Int32Array, 2) - a62.set(a61) - assertArrayPrefix([1, 12], a62) - a61.set(a62) - assertArrayPrefix([1, 12], a61) - - // Invalid source - var a = MakeSharedTypedArray(Uint16Array, 50); - var expected = []; - for (i = 0; i < 50; i++) { - a[i] = i; - expected.push(i); - } - a.set({}); - assertArrayPrefix(expected, a); - assertThrows(function() { a.set.call({}) }, TypeError); - assertThrows(function() { a.set.call([]) }, TypeError); - - assertThrows(function() { a.set(0); }, TypeError); - assertThrows(function() { a.set(0, 1); }, TypeError); -} - -TestTypedArraySet(); - -function TestTypedArraysWithIllegalIndices() { - var a = MakeSharedTypedArray(Int32Array, 100); - - a[-10] = 10; - assertEquals(undefined, a[-10]); - a["-10"] = 10; - assertEquals(undefined, a["-10"]); - - var s = " -10"; - a[s] = 10; - assertEquals(10, a[s]); - var s1 = " -10 "; - a[s] = 10; - assertEquals(10, a[s]); - - a["-1e2"] = 10; - assertEquals(10, a["-1e2"]); - assertEquals(undefined, a[-1e2]); - - a["-0"] = 256; - var s2 = " -0"; - a[s2] = 255; - assertEquals(undefined, a["-0"]); - assertEquals(255, a[s2]); - assertEquals(0, a[-0]); - - /* Chromium bug: 424619 - * a[-Infinity] = 50; - * assertEquals(undefined, a[-Infinity]); - */ - a[1.5] = 10; - assertEquals(undefined, a[1.5]); - var nan = Math.sqrt(-1); - a[nan] = 5; - assertEquals(undefined, a[nan]); - - var x = 0; - var y = -0; - assertEquals(Infinity, 1/x); - assertEquals(-Infinity, 1/y); - a[x] = 5; - a[y] = 27; - assertEquals(27, a[x]); - assertEquals(27, a[y]); -} - -TestTypedArraysWithIllegalIndices(); - -function TestTypedArraysWithIllegalIndicesStrict() { - 'use strict'; - var a = MakeSharedTypedArray(Int32Array, 100); - - a[-10] = 10; - assertEquals(undefined, a[-10]); - a["-10"] = 10; - assertEquals(undefined, a["-10"]); - - var s = " -10"; - a[s] = 10; - assertEquals(10, a[s]); - var s1 = " -10 "; - a[s] = 10; - assertEquals(10, a[s]); - - a["-1e2"] = 10; - assertEquals(10, a["-1e2"]); - assertEquals(undefined, a[-1e2]); - - a["-0"] = 256; - var s2 = " -0"; - a[s2] = 255; - assertEquals(undefined, a["-0"]); - assertEquals(255, a[s2]); - assertEquals(0, a[-0]); - - /* Chromium bug: 424619 - * a[-Infinity] = 50; - * assertEquals(undefined, a[-Infinity]); - */ - a[1.5] = 10; - assertEquals(undefined, a[1.5]); - var nan = Math.sqrt(-1); - a[nan] = 5; - assertEquals(undefined, a[nan]); - - var x = 0; - var y = -0; - assertEquals(Infinity, 1/x); - assertEquals(-Infinity, 1/y); - a[x] = 5; - a[y] = 27; - assertEquals(27, a[x]); - assertEquals(27, a[y]); -} - -TestTypedArraysWithIllegalIndicesStrict(); - -// General tests for properties - -// Test property attribute [[Enumerable]] -function TestEnumerable(func, obj) { - function props(x) { - var array = []; - for (var p in x) array.push(p); - return array.sort(); - } - assertArrayEquals([], props(func)); - assertArrayEquals([], props(func.prototype)); - if (obj) - assertArrayEquals([], props(obj)); -} -TestEnumerable(ArrayBuffer, new SharedArrayBuffer()); -for(i = 0; i < typedArrayConstructors.length; i++) { - TestEnumerable(typedArrayConstructors[i]); -} - -// Test arbitrary properties on ArrayBuffer -function TestArbitrary(m) { - function TestProperty(map, property, value) { - map[property] = value; - assertEquals(value, map[property]); - } - for (var i = 0; i < 20; i++) { - TestProperty(m, 'key' + i, 'val' + i); - TestProperty(m, 'foo' + i, 'bar' + i); - } -} -TestArbitrary(new SharedArrayBuffer(256)); -for(i = 0; i < typedArrayConstructors.length; i++) { - TestArbitrary(MakeSharedTypedArray(typedArrayConstructors[i], 10)); -} - -// Test direct constructor call -assertThrows(function() { SharedArrayBuffer(); }, TypeError); -for(i = 0; i < typedArrayConstructors.length; i++) { - assertThrows(function(i) { typedArrayConstructors[i](); }.bind(this, i), - TypeError); -} - -// byteLength from prototype can be overwritten -var s = new SharedArrayBuffer(10); -assertEquals(10, s.byteLength); -Object.defineProperty(s, 'byteLength', {value: 42}); -assertEquals(42, s.byteLength); - -// byteLength on incompatible type (shared vs. regular ArrayBuffer) -var desc = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength'); -s = new SharedArrayBuffer(10); -Object.defineProperty(s, 'byteLength', desc); -assertThrows(function() {s.byteLength}, TypeError); - -desc = Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, - 'byteLength'); -var a = new ArrayBuffer(10); -Object.defineProperty(a, 'byteLength', desc); -assertThrows(function() {a.byteLength}, TypeError); - -// test SharedArrayBuffer species getter -assertSame(SharedArrayBuffer[Symbol.species], SharedArrayBuffer); -var desc = Object.getOwnPropertyDescriptor(SharedArrayBuffer, Symbol.species); -assertEquals("function", typeof desc.get); -assertEquals("get [Symbol.species]", desc.get.name); -assertEquals(0, desc.get.length); -assertEquals("undefined", typeof desc.set); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); diff --git a/implementation-contributed/v8/mjsunit/harmony/string-matchAll-deleted-matchAll.js b/implementation-contributed/v8/mjsunit/harmony/string-matchAll-deleted-matchAll.js deleted file mode 100644 index 5d2985f3180..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/string-matchAll-deleted-matchAll.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-string-matchall - -delete RegExp.prototype[Symbol.matchAll]; -const str = 'a'; -assertThrows(() => str.matchAll(/\w/g), TypeError); diff --git a/implementation-contributed/v8/mjsunit/harmony/string-matchAll.js b/implementation-contributed/v8/mjsunit/harmony/string-matchAll.js deleted file mode 100644 index e8b212529a5..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/string-matchAll.js +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-string-matchall - -(function TestReceiverNonString() { - const iter = 'a'.matchAll(/./); - assertThrows( - () => iter.next.call(0), - TypeError - ); -})(); - - -(function TestAncestry() { - const iterProto = Object.getPrototypeOf('a'.matchAll(/./)); - const arrProto = Object.getPrototypeOf([][Symbol.iterator]()); - - assertSame(Object.getPrototypeOf(iterProto), Object.getPrototypeOf(arrProto)); -})(); - - -function TestNoMatch(string, regex_or_string) { - const next_result = string.matchAll(regex_or_string).next(); - assertSame(undefined, next_result.value); - assertTrue(next_result.done); -} -TestNoMatch('a', /b/); -TestNoMatch('a', /b/g); -TestNoMatch('a', 'b'); - - -(function NonGlobalRegex() { - const iter = 'ab'.matchAll(/./); - let next_result = iter.next(); - assertEquals(['a'], next_result.value); - assertFalse(next_result.done); - - next_result = iter.next(); - assertEquals(undefined, next_result.value); - assertTrue(next_result.done); -})(); - - -function TestGlobalRegex(regex_or_string) { - const iter = 'ab'.matchAll(/./g); - let next_result = iter.next(); - assertEquals(['a'], next_result.value); - assertFalse(next_result.done); - - next_result = iter.next(); - assertEquals(['b'], next_result.value); - assertFalse(next_result.done); - - next_result = iter.next(); - assertSame(undefined, next_result.value); - assertTrue(next_result.done); -} -TestGlobalRegex(/./g); -TestGlobalRegex('.'); - - -function TestEmptyGlobalRegExp(regex_or_string) { - const iter = 'd'.matchAll(regex_or_string); - let next_result = iter.next(); - assertEquals([''], next_result.value); - assertFalse(next_result.done); - - next_result = iter.next(); - assertEquals([''], next_result.value); - assertFalse(next_result.done); - - next_result = iter.next(); - assertSame(undefined, next_result.value); - assertTrue(next_result.done); -} -TestEmptyGlobalRegExp(undefined); -TestEmptyGlobalRegExp(/(?:)/g); -TestEmptyGlobalRegExp(''); - - -(function TestGlobalRegExpLastIndex() { - const regex = /./g; - const string = 'abc'; - regex.exec(string); - assertSame(1, regex.lastIndex); - - const iter = string.matchAll(regex); - - // Verify an internal RegExp is created and mutations to the provided RegExp - // are not abservered. - regex.exec(string); - assertSame(2, regex.lastIndex); - - let next_result = iter.next(); - assertEquals(['b'], next_result.value); - assertFalse(next_result.done); - assertSame(2, regex.lastIndex); -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/symbol-async-iterator.js b/implementation-contributed/v8/mjsunit/harmony/symbol-async-iterator.js deleted file mode 100644 index 5b7e6b5f409..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/symbol-async-iterator.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertTrue(Symbol.hasOwnProperty('asyncIterator')); -assertEquals('symbol', typeof Symbol.asyncIterator); -assertInstanceof(Object(Symbol.asyncIterator), Symbol); - -let desc = Object.getOwnPropertyDescriptor(Symbol, 'asyncIterator'); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); diff --git a/implementation-contributed/v8/mjsunit/harmony/symbol-description.js b/implementation-contributed/v8/mjsunit/harmony/symbol-description.js deleted file mode 100644 index ccba44c9782..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/symbol-description.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-symbol-description - -{ - let desc = Object.getOwnPropertyDescriptor(Symbol.prototype, 'description'); - assertEquals(desc.set, undefined); - assertEquals(desc.writable, undefined); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); -} - -{ - const empty = Symbol(); - assertEquals(empty.description, undefined); - - const symbol = Symbol('test'); - assertEquals(symbol.description, 'test'); - assertFalse(symbol.hasOwnProperty('description')); -} - -{ - const empty = Object(Symbol()); - assertEquals(empty.description, undefined); - - const symbol = Object(Symbol('test')); - assertEquals(symbol.description, 'test'); - assertFalse(symbol.hasOwnProperty('description')); -} - -{ - assertThrows(function() { - const proxy = new Proxy({}, {}); - Symbol.prototype.description.call(proxy); - }, TypeError); - - assertThrows(function() { - const smi = 123; - Symbol.prototype.description.call(smi); - }, TypeError); - - assertThrows(function() { - const str = 'string'; - Symbol.prototype.description.call(string); - }, TypeError); - - assertThrows(function() { - const obj = { prop: 'test' }; - Symbol.prototype.description.call(obj); - }, TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/to-length.js b/implementation-contributed/v8/mjsunit/harmony/to-length.js deleted file mode 100644 index b805e5cffe0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/to-length.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertEquals(0, %ToLength(NaN)); -assertEquals(0, %_ToLength(NaN)); - -assertEquals(0, %ToLength(-Infinity)); -assertEquals(0, %_ToLength(-Infinity)); - -assertEquals(0, %ToLength(0)); -assertEquals(0, %_ToLength(0)); - -assertEquals(0, %ToLength(.5)); -assertEquals(0, %_ToLength(.5)); - -assertEquals(42, %ToLength(42.99999)); -assertEquals(42, %_ToLength(42.99999)); - -assertEquals(9007199254740991, %ToLength(9007199254740991)); -assertEquals(9007199254740991, %_ToLength(9007199254740991)); - -assertEquals(9007199254740991, %ToLength(Infinity)); -assertEquals(9007199254740991, %_ToLength(Infinity)); - -assertEquals(0, %ToLength(null)); -assertEquals(0, %_ToLength(null)); - -assertEquals(1, %ToLength(true)); -assertEquals(1, %_ToLength(true)); - -assertEquals(0, %ToLength(false)); -assertEquals(0, %_ToLength(false)); - -assertEquals(0, %ToLength(undefined)); -assertEquals(0, %_ToLength(undefined)); - -assertEquals(0, %ToLength("-1")); -assertEquals(0, %_ToLength("-1")); -assertEquals(123, %ToLength("123")); -assertEquals(123, %_ToLength("123")); -assertEquals(0, %ToLength("random text")); -assertEquals(0, %_ToLength("random text")); - -assertThrows(function() { %ToLength(Symbol.toPrimitive) }, TypeError); -assertThrows(function() { %_ToLength(Symbol.toPrimitive) }, TypeError); - -var a = { toString: function() { return 54321 }}; -assertEquals(54321, %ToLength(a)); -assertEquals(54321, %_ToLength(a)); - -var b = { valueOf: function() { return 42 }}; -assertEquals(42, %ToLength(b)); -assertEquals(42, %_ToLength(b)); - -var c = { - toString: function() { return "x"}, - valueOf: function() { return 123 } -}; -assertEquals(123, %ToLength(c)); -assertEquals(123, %_ToLength(c)); - -var d = { - [Symbol.toPrimitive]: function(hint) { - assertEquals("number", hint); - return 987654321; - } -}; -assertEquals(987654321, %ToLength(d)); -assertEquals(987654321, %_ToLength(d)); - -var e = new Date(0); -assertEquals(0, %ToLength(e)); -assertEquals(0, %_ToLength(e)); diff --git a/implementation-contributed/v8/mjsunit/harmony/to-name.js b/implementation-contributed/v8/mjsunit/harmony/to-name.js deleted file mode 100644 index 0a2c043a2f1..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/to-name.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertEquals("1", %ToName(1)); - -assertEquals("0.5", %ToName(.5)); - -assertEquals("null", %ToName(null)); - -assertEquals("true", %ToName(true)); - -assertEquals("false", %ToName(false)); - -assertEquals("undefined", %ToName(undefined)); - -assertEquals("random text", %ToName("random text")); - -assertEquals(Symbol.toPrimitive, %ToName(Symbol.toPrimitive)); - -var a = { toString: function() { return "xyz" }}; -assertEquals("xyz", %ToName(a)); - -var b = { valueOf: function() { return 42 }}; -assertEquals("[object Object]", %ToName(b)); - -var c = { - toString: function() { return "x"}, - valueOf: function() { return 123 } -}; -assertEquals("x", %ToName(c)); - -var d = { - [Symbol.toPrimitive]: function(hint) { return hint } -}; -assertEquals("string", %ToName(d)); - -var e = new Date(0); -assertEquals(e.toString(), %ToName(e)); diff --git a/implementation-contributed/v8/mjsunit/harmony/to-number.js b/implementation-contributed/v8/mjsunit/harmony/to-number.js deleted file mode 100644 index e145782d4b9..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/to-number.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertEquals(1, %ToNumber(1)); - -assertEquals(.5, %ToNumber(.5)); - -assertEquals(0, %ToNumber(null)); - -assertEquals(1, %ToNumber(true)); - -assertEquals(0, %ToNumber(false)); - -assertEquals(NaN, %ToNumber(undefined)); - -assertEquals(-1, %ToNumber("-1")); -assertEquals(123, %ToNumber("123")); -assertEquals(NaN, %ToNumber("random text")); -assertEquals(NaN, %ToNumber("INFINITY")); -assertEquals(NaN, %ToNumber("infinity")); - -assertThrows(function() { %ToNumber(Symbol.toPrimitive) }, TypeError); - -var a = { toString: function() { return 54321 }}; -assertEquals(54321, %ToNumber(a)); - -var b = { valueOf: function() { return 42 }}; -assertEquals(42, %ToNumber(b)); - -var c = { - toString: function() { return "x"}, - valueOf: function() { return 123 } -}; -assertEquals(123, %ToNumber(c)); - -var d = { - [Symbol.toPrimitive]: function(hint) { - assertEquals("number", hint); - return 987654321; - } -}; -assertEquals(987654321, %ToNumber(d)); - -var e = new Date(0); -assertEquals(0, %ToNumber(e)); diff --git a/implementation-contributed/v8/mjsunit/harmony/to-string.js b/implementation-contributed/v8/mjsunit/harmony/to-string.js deleted file mode 100644 index dfe36c2dd91..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/to-string.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertEquals("1", %ToString(1)); -assertEquals("1", %_ToString(1)); - -assertEquals("0.5", %ToString(.5)); -assertEquals("0.5", %_ToString(.5)); - -assertEquals("null", %ToString(null)); -assertEquals("null", %_ToString(null)); - -assertEquals("true", %ToString(true)); -assertEquals("true", %_ToString(true)); - -assertEquals("false", %ToString(false)); -assertEquals("false", %_ToString(false)); - -assertEquals("undefined", %ToString(undefined)); -assertEquals("undefined", %_ToString(undefined)); - -assertEquals("random text", %ToString("random text")); -assertEquals("random text", %_ToString("random text")); - -assertThrows(function() { %ToString(Symbol.toPrimitive) }, TypeError); -assertThrows(function() { %_ToString(Symbol.toPrimitive) }, TypeError); - -var a = { toString: function() { return "xyz" }}; -assertEquals("xyz", %ToString(a)); -assertEquals("xyz", %_ToString(a)); - -var b = { valueOf: function() { return 42 }}; -assertEquals("[object Object]", %ToString(b)); -assertEquals("[object Object]", %_ToString(b)); - -var c = { - toString: function() { return "x"}, - valueOf: function() { return 123 } -}; -assertEquals("x", %ToString(c)); -assertEquals("x", %_ToString(c)); - -var d = { - [Symbol.toPrimitive]: function(hint) { return hint } -}; -assertEquals("string", %ToString(d)); -assertEquals("string", %_ToString(d)); - -var e = new Date(0); -assertEquals(e.toString(), %ToString(e)); -assertEquals(e.toString(), %_ToString(e)); diff --git a/implementation-contributed/v8/mjsunit/harmony/trailing-commas-length.js b/implementation-contributed/v8/mjsunit/harmony/trailing-commas-length.js deleted file mode 100644 index 8e2fd51408b..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/trailing-commas-length.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f1(a,) {} -function f2(a,b,) {} -function f3(a,b,c,) {} -assertEquals(1, f1.length); -assertEquals(2, f2.length); -assertEquals(3, f3.length); - -function* g1(a,) {} -function* g2(a,b,) {} -function* g3(a,b,c,) {} -assertEquals(1, g1.length); -assertEquals(2, g2.length); -assertEquals(3, g3.length); - -assertEquals(1, (function(a,) {}).length); -assertEquals(2, (function(a,b,) {}).length); -assertEquals(3, (function(a,b,c,) {}).length); - -assertEquals(1, (function*(a,) {}).length); -assertEquals(2, (function*(a,b,) {}).length); -assertEquals(3, (function*(a,b,c,) {}).length); - -assertEquals(1, ((a,) => {}).length); -assertEquals(2, ((a,b,) => {}).length); -assertEquals(3, ((a,b,c,) => {}).length); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/basics.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/basics.js deleted file mode 100644 index c1ec4070f49..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/basics.js +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs - -(function TestConstructFinalizationGroup() { - let fg = new FinalizationGroup(() => {}); - assertEquals(fg.toString(), "[object FinalizationGroup]"); - assertNotSame(fg.__proto__, Object.prototype); - assertSame(fg.__proto__.__proto__, Object.prototype); -})(); - -(function TestFinalizationGroupConstructorCallAsFunction() { - let caught = false; - let message = ""; - try { - let f = FinalizationGroup(() => {}); - } catch (e) { - message = e.message; - caught = true; - } finally { - assertTrue(caught); - assertEquals(message, "Constructor FinalizationGroup requires 'new'"); - } -})(); - -(function TestConstructFinalizationGroupCleanupNotCallable() { - let message = "FinalizationGroup: cleanup must be callable"; - assertThrows(() => { let fg = new FinalizationGroup(); }, TypeError, message); - assertThrows(() => { let fg = new FinalizationGroup(1); }, TypeError, message); - assertThrows(() => { let fg = new FinalizationGroup(null); }, TypeError, message); -})(); - -(function TestConstructFinalizationGroupWithCallableProxyAsCleanup() { - let handler = {}; - let obj = () => {}; - let proxy = new Proxy(obj, handler); - let fg = new FinalizationGroup(proxy); -})(); - -(function TestConstructFinalizationGroupWithNonCallableProxyAsCleanup() { - let message = "FinalizationGroup: cleanup must be callable"; - let handler = {}; - let obj = {}; - let proxy = new Proxy(obj, handler); - assertThrows(() => { let fg = new FinalizationGroup(proxy); }, TypeError, message); -})(); - -(function TestRegisterWithNonObjectTarget() { - let fg = new FinalizationGroup(() => {}); - let message = "FinalizationGroup.prototype.register: target must be an object"; - assertThrows(() => fg.register(1, "holdings"), TypeError, message); - assertThrows(() => fg.register(false, "holdings"), TypeError, message); - assertThrows(() => fg.register("foo", "holdings"), TypeError, message); - assertThrows(() => fg.register(Symbol(), "holdings"), TypeError, message); - assertThrows(() => fg.register(null, "holdings"), TypeError, message); - assertThrows(() => fg.register(undefined, "holdings"), TypeError, message); -})(); - -(function TestRegisterWithProxy() { - let handler = {}; - let obj = {}; - let proxy = new Proxy(obj, handler); - let fg = new FinalizationGroup(() => {}); - fg.register(proxy); -})(); - -(function TestRegisterTargetAndHoldingsSameValue() { - let fg = new FinalizationGroup(() => {}); - let obj = {a: 1}; - // SameValue(target, holdings) not ok - assertThrows(() => fg.register(obj, obj), TypeError, - "FinalizationGroup.prototype.register: target and holdings must not be same"); - let holdings = {a: 1}; - fg.register(obj, holdings); -})(); - -(function TestRegisterWithoutFinalizationGroup() { - assertThrows(() => FinalizationGroup.prototype.register.call({}, {}, "holdings"), TypeError); - // Does not throw: - let fg = new FinalizationGroup(() => {}); - FinalizationGroup.prototype.register.call(fg, {}, "holdings"); -})(); - -(function TestUnregisterWithNonExistentKey() { - let fg = new FinalizationGroup(() => {}); - fg.unregister({"k": "whatever"}); -})(); - -(function TestWeakRefConstructor() { - let wr = new WeakRef({}); - assertEquals(wr.toString(), "[object WeakRef]"); - assertNotSame(wr.__proto__, Object.prototype); - - let deref_desc = Object.getOwnPropertyDescriptor(wr.__proto__, "deref"); - assertEquals(true, deref_desc.configurable); - assertEquals(false, deref_desc.enumerable); - assertEquals("function", typeof deref_desc.value); -})(); - -(function TestWeakRefConstructorWithNonObject() { - let message = "WeakRef: target must be an object"; - assertThrows(() => new WeakRef(), TypeError, message); - assertThrows(() => new WeakRef(1), TypeError, message); - assertThrows(() => new WeakRef(false), TypeError, message); - assertThrows(() => new WeakRef("foo"), TypeError, message); - assertThrows(() => new WeakRef(Symbol()), TypeError, message); - assertThrows(() => new WeakRef(null), TypeError, message); - assertThrows(() => new WeakRef(undefined), TypeError, message); -})(); - -(function TestWeakRefConstructorCallAsFunction() { - let caught = false; - let message = ""; - try { - let f = WeakRef({}); - } catch (e) { - message = e.message; - caught = true; - } finally { - assertTrue(caught); - assertEquals(message, "Constructor WeakRef requires 'new'"); - } -})(); - -(function TestWeakRefWithProxy() { - let handler = {}; - let obj = {}; - let proxy = new Proxy(obj, handler); - let wr = new WeakRef(proxy); -})(); - -(function TestCleanupSomeWithoutFinalizationGroup() { - assertThrows(() => FinalizationGroup.prototype.cleanupSome.call({}), TypeError); - // Does not throw: - let fg = new FinalizationGroup(() => {}); - let rv = FinalizationGroup.prototype.cleanupSome.call(fg); - assertEquals(undefined, rv); -})(); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-doesnt-iterate-all-holdings.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-doesnt-iterate-all-holdings.js deleted file mode 100644 index 20726284bb1..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-doesnt-iterate-all-holdings.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup = function(iter) { - if (cleanup_call_count == 0) { - // First call: iterate 2 of the 3 holdings - let holdings_list = []; - for (holdings of iter) { - holdings_list.push(holdings); - // Don't iterate the rest of the holdings - if (holdings_list.length == 2) { - break; - } - } - assertEquals(holdings_list.length, 2); - assertTrue(holdings_list[0] < 3); - assertTrue(holdings_list[1] < 3); - // Update call count only after the asserts; this ensures that the test - // fails even if the exceptions inside the cleanup function are swallowed. - cleanup_call_count++; - } else { - // Second call: iterate one leftover holdings and one holdings. - assertEquals(1, cleanup_call_count); - let holdings_list = []; - for (holdings of iter) { - holdings_list.push(holdings); - } - assertEquals(holdings_list.length, 2); - assertTrue((holdings_list[0] < 3 && holdings_list[1] == 100) || - (holdings_list[1] < 3 && holdings_list[0] == 100)); - // Update call count only after the asserts; this ensures that the test - // fails even if the exceptions inside the cleanup function are swallowed. - cleanup_call_count++; - } -} - -let fg = new FinalizationGroup(cleanup); -// Create 3 objects and register them in the FinalizationGroup. The objects need -// to be inside a closure so that we can reliably kill them! - -(function() { - let objects = []; - - for (let i = 0; i < 3; ++i) { - objects[i] = {a: i}; - fg.register(objects[i], i); - } - - gc(); - assertEquals(0, cleanup_call_count); - - // Drop the references to the objects. - objects = []; -})(); - -// This GC will reclaim the targets. -gc(); -assertEquals(0, cleanup_call_count); - -let timeout_func_1 = function() { - assertEquals(1, cleanup_call_count); - - // Assert that the cleanup function won't be called unless new targets appear. - setTimeout(timeout_func_2, 0); -} - -setTimeout(timeout_func_1, 0); - -let timeout_func_2 = function() { - assertEquals(1, cleanup_call_count); - - // Create a new object and register it. - let obj = {}; - let wc = fg.register(obj, 100); - obj = null; - - gc(); - - setTimeout(timeout_func_3, 0); -} - -let timeout_func_3 = function() { - assertEquals(2, cleanup_call_count); -} diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-from-different-realm.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-from-different-realm.js deleted file mode 100644 index 97ab1dbd80c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-from-different-realm.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let r = Realm.create(); - -let cleanup = Realm.eval(r, "var stored_global; function cleanup() { stored_global = globalThis; } cleanup"); -let realm_global_this = Realm.eval(r, "globalThis"); - -let fg = new FinalizationGroup(cleanup); - -// Create an object and a register it in the FinalizationGroup. The object needs -// to be inside a closure so that we can reliably kill them! -let weak_cell; - -(function() { - let object = {}; - fg.register(object, {}); - - // object goes out of scope. -})(); - -gc(); - -// Assert that the cleanup function was called in its Realm. -let timeout_func = function() { - let stored_global = Realm.eval(r, "stored_global;"); - assertNotEquals(stored_global, globalThis); - assertEquals(stored_global, realm_global_this); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-is-a-microtask.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-is-a-microtask.js deleted file mode 100644 index c6b834e8fb9..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-is-a-microtask.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -// This test asserts that the cleanup function call, scheduled by GC, is a -// microtask and not a normal task. - -// Inside a microtask, cause GC (which should schedule the cleanup as -// microtask). lso schedule another microtask. Assert that the cleanup -// function ran before the other microtask. - -function scheduleMicrotask(func) { - Promise.resolve().then(func); -} - -let log = []; - -let cleanup = (iter) => { - log.push("cleanup"); - for (holdings of iter) { } -} - -let fg = new FinalizationGroup(cleanup); -let o = null; - -(function() { - // Use a closure here to avoid other references to o which might keep it alive - // (e.g., stack frames pointing to it). - o = {}; - fg.register(o, {}); -})(); - -let microtask_after_cleanup = () => { - log.push("microtask_after_cleanup"); -} - -let first_microtask = function() { - log.push("first_microtask"); - - // This schedules the cleanup function as microtask. - o = null; - gc(); - - // Schedule a microtask which should run after the cleanup microtask. - scheduleMicrotask(microtask_after_cleanup); -} - -scheduleMicrotask(first_microtask); - -setTimeout(() => { - // Assert that the functions got called in the right order. - let wanted_log = ["first_microtask", "cleanup", "microtask_after_cleanup"]; - assertEquals(wanted_log, log); -}, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-proxy-from-different-realm.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-proxy-from-different-realm.js deleted file mode 100644 index 1d275a19aab..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanup-proxy-from-different-realm.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let r = Realm.create(); - -let cleanup = Realm.eval(r, "var stored_global; let cleanup = new Proxy(function() { stored_global = globalThis;}, {}); cleanup"); -let realm_global_this = Realm.eval(r, "globalThis"); - -let fg = new FinalizationGroup(cleanup); - -// Create an object and register it in the FinalizationGroup. The object needs -// to be inside a closure so that we can reliably kill them! -let weak_cell; - -(function() { - let object = {}; - fg.register(object, "holdings"); - - // object goes out of scope. -})(); - -gc(); - -// Assert that the cleanup function was called in its Realm. -let timeout_func = function() { - let stored_global = Realm.eval(r, "stored_global;"); - assertNotEquals(stored_global, globalThis); - assertEquals(stored_global, realm_global_this); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanupsome-after-unregister.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanupsome-after-unregister.js deleted file mode 100644 index 0cef0a1af55..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanupsome-after-unregister.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_count = 0; -let cleanup_holdings = []; -let cleanup = function(iter) { - for (holdings of iter) { - cleanup_holdings.push(holdings); - } - ++cleanup_count; -} - -let fg = new FinalizationGroup(cleanup); -let key = {"k": "this is the key"}; -(function() { - let o = {}; - weak_cell = fg.register(o, "holdings", key); - - // cleanupSome won't do anything since there are no reclaimed targets. - fg.cleanupSome(); - assertEquals(0, cleanup_count); -})(); - -// GC will detect the WeakCell as dirty. -gc(); - -// Unregister the tracked object just before calling cleanupSome. -fg.unregister(key); - -fg.cleanupSome(); - -assertEquals(0, cleanup_count); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanupsome.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanupsome.js deleted file mode 100644 index 1d3ceda3f2a..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/cleanupsome.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_count = 0; -let cleanup_holdings = []; -let cleanup = function(iter) { - for (holdings of iter) { - cleanup_holdings.push(holdings); - } - ++cleanup_count; -} - -let fg = new FinalizationGroup(cleanup); -(function() { - let o = {}; - fg.register(o, "holdings"); - - // cleanupSome won't do anything since there are no reclaimed targets. - fg.cleanupSome(); - assertEquals(0, cleanup_count); -})(); - -// GC will detect o as dead. -gc(); - -fg.cleanupSome(); -assertEquals(1, cleanup_count); -assertEquals(1, cleanup_holdings.length); -assertEquals("holdings", cleanup_holdings[0]); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/finalization-group-keeps-holdings-alive.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/finalization-group-keeps-holdings-alive.js deleted file mode 100644 index ea35a2e63f4..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/finalization-group-keeps-holdings-alive.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_called = false; -let cleanup = function(iter) { - assertFalse(cleanup_called); - let holdings_list = []; - for (holdings of iter) { - holdings_list.push(holdings); - } - assertEquals(holdings_list.length, 1); - assertEquals(holdings_list[0].a, "this is the holdings object"); - cleanup_called = true; -} - -let fg = new FinalizationGroup(cleanup); -let o1 = {}; -let holdings = {'a': 'this is the holdings object'}; -fg.register(o1, holdings); - -gc(); -assertFalse(cleanup_called); - -// Drop the last references to o1. -o1 = null; - -// Drop the last reference to the holdings. The FinalizationGroup keeps it -// alive, so the cleanup function will be called as normal. -holdings = null; -gc(); -assertFalse(cleanup_called); - -let timeout_func = function() { - assertTrue(cleanup_called); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/finalizationgroup-and-weakref.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/finalizationgroup-and-weakref.js deleted file mode 100644 index bd66f1ce1d4..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/finalizationgroup-and-weakref.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking --allow-natives-syntax - -let cleanup_called = false; -let cleanup = function(iter) { - assertFalse(cleanup_called); - let holdings_list = []; - for (holdings of iter) { - holdings_list.push(holdings); - } - assertEquals(1, holdings_list.length); - assertEquals("holdings", holdings_list[0]); - cleanup_called = true; -} - -let fg = new FinalizationGroup(cleanup); -let weak_ref; -(function() { - let o = {}; - weak_ref = new WeakRef(o); - fg.register(o, "holdings"); -})(); - -// Since the WeakRef was created during this turn, it is not cleared by GC. The -// pointer inside the FinalizationGroup is not cleared either, since the WeakRef -// keeps the target object alive. -gc(); -(function() { - assertNotEquals(undefined, weak_ref.deref()); -})(); - -%PerformMicrotaskCheckpoint(); -// Next turn. - -gc(); - -%PerformMicrotaskCheckpoint(); -// Next turn. - -assertTrue(cleanup_called); -assertEquals(undefined, weak_ref.deref()); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/finalizationgroup-scheduled-for-cleanup-multiple-times.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/finalizationgroup-scheduled-for-cleanup-multiple-times.js deleted file mode 100644 index a1cff3aaa05..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/finalizationgroup-scheduled-for-cleanup-multiple-times.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking -// Flags: --no-stress-flush-bytecode - -let cleanup0_call_count = 0; -let cleanup0_holdings_count = 0; - -let cleanup1_call_count = 0; -let cleanup1_holdings_count = 0; - -let cleanup0 = function(iter) { - for (holdings of iter) { - ++cleanup0_holdings_count; - } - ++cleanup0_call_count; -} - -let cleanup1 = function(iter) { - for (holdings of iter) { - ++cleanup1_holdings_count; - } - ++cleanup1_call_count; -} - -let fg0 = new FinalizationGroup(cleanup0); -let fg1 = new FinalizationGroup(cleanup1); - -// Register 1 weak reference for each FinalizationGroup and kill the objects they point to. -(function() { - // The objects need to be inside a closure so that we can reliably kill them. - let objects = []; - objects[0] = {}; - objects[1] = {}; - - fg0.register(objects[0], "holdings0-0"); - fg1.register(objects[1], "holdings1-0"); - - // Drop the references to the objects. - objects = []; - - // Will schedule both fg0 and fg1 for cleanup. - gc(); -})(); - -// Before the cleanup task has a chance to run, do the same thing again, so both -// FinalizationGroups are (again) scheduled for cleanup. This has to be a IIFE function -// (so that we can reliably kill the objects) so we cannot use the same function -// as before. -(function() { - let objects = []; - objects[0] = {}; - objects[1] = {}; - fg0.register(objects[0], "holdings0-1"); - fg1.register(objects[1], "holdings1-1"); - objects = []; - gc(); -})(); - -let timeout_func = function() { - assertEquals(1, cleanup0_call_count); - assertEquals(2, cleanup0_holdings_count); - assertEquals(1, cleanup1_call_count); - assertEquals(2, cleanup1_holdings_count); -} - -// Give the cleanup task a chance to run. All holdings will be iterated during -// the same invocation of the cleanup function. -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/iterating-in-cleanup.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/iterating-in-cleanup.js deleted file mode 100644 index 73aac76378d..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/iterating-in-cleanup.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_called = false; -let cleanup = function(iter) { - assertFalse(cleanup_called); - let holdings_list = []; - for (holdings of iter) { - holdings_list.push(holdings); - } - assertEquals(holdings_list.length, 2); - if (holdings_list[0] == 1) { - assertEquals(holdings_list[1], 2); - } else { - assertEquals(holdings_list[0], 2); - assertEquals(holdings_list[1], 1); - } - cleanup_called = true; -} - -let fg = new FinalizationGroup(cleanup); -let o1 = {}; -let o2 = {}; -fg.register(o1, 1); -fg.register(o2, 2); - -gc(); -assertFalse(cleanup_called); - -// Drop the last references to o1 and o2. -o1 = null; -o2 = null; -// GC will reclaim the target objects; the cleanup function will be called the -// next time we enter the event loop. -gc(); -assertFalse(cleanup_called); - -let timeout_func = function() { - assertTrue(cleanup_called); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/multiple-dirty-finalization-groups.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/multiple-dirty-finalization-groups.js deleted file mode 100644 index 51e721401af..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/multiple-dirty-finalization-groups.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup_holdings_count = 0; -let cleanup = function(iter) { - for (holdings of iter) { - ++cleanup_holdings_count; - } - ++cleanup_call_count; -} - -let fg1 = new FinalizationGroup(cleanup); -let fg2 = new FinalizationGroup(cleanup); - -// Create two objects and register them in FinalizationGroups. The objects need -// to be inside a closure so that we can reliably kill them! - -(function() { - let object1 = {}; - fg1.register(object1, "holdings1"); - - let object2 = {}; - fg2.register(object2, "holdings2"); - - // object1 and object2 go out of scope. -})(); - -// This GC will discover dirty WeakCells and schedule cleanup. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function was called and iterated the holdings. -let timeout_func = function() { - assertEquals(2, cleanup_call_count); - assertEquals(2, cleanup_holdings_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/two-weakrefs.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/two-weakrefs.js deleted file mode 100644 index c3fc9f741c7..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/two-weakrefs.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking --allow-natives-syntax - -let o1 = {}; -let o2 = {}; -let wr1; -let wr2; -(function() { - wr1 = new WeakRef(o1); - wr2 = new WeakRef(o2); -})(); - -// Since the WeakRefs were created during this turn, they're not cleared by GC. -gc(); - -(function() { - assertNotEquals(undefined, wr1.deref()); - assertNotEquals(undefined, wr2.deref()); -})(); - -%PerformMicrotaskCheckpoint(); -// New turn. - -wr1.deref(); -o1 = null; -gc(); // deref makes sure we don't clean up wr1 - -%PerformMicrotaskCheckpoint(); -// New turn. - -wr2.deref(); -o2 = null; -gc(); // deref makes sure we don't clean up wr2 - -%PerformMicrotaskCheckpoint(); -// New turn. - -assertEquals(undefined, wr1.deref()); - -gc(); - -%PerformMicrotaskCheckpoint(); -// New turn. - -assertEquals(undefined, wr2.deref()); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/undefined-holdings.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/undefined-holdings.js deleted file mode 100644 index ac3dc6041a0..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/undefined-holdings.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup_holdings_count = 0; -let cleanup = function(iter) { - for (holdings of iter) { - assertEquals(holdings, undefined); - ++cleanup_holdings_count; - } - ++cleanup_call_count; -} - -let fg = new FinalizationGroup(cleanup); - -// Create an object and register it in the FinalizationGroup. The object needs to be inside -// a closure so that we can reliably kill them! - -(function() { - let object = {}; - fg.register(object); - - // object goes out of scope. -})(); - -// This GC will reclaim the target object and schedule cleanup. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function was called and iterated the holdings. -let timeout_func = function() { - assertEquals(1, cleanup_call_count); - assertEquals(1, cleanup_holdings_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-after-cleanup.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-after-cleanup.js deleted file mode 100644 index f6480f86b6c..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-after-cleanup.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup_holdings_count = 0; -let cleanup = function(iter) { - for (holdings of iter) { - assertEquals("holdings", holdings); - ++cleanup_holdings_count; - } - ++cleanup_call_count; -} - -let fg = new FinalizationGroup(cleanup); -let key = {"k": "this is the key"}; -// Create an object and register it in the FinalizationGroup. The object needs -// to be inside a closure so that we can reliably kill them! - -(function() { - let object = {}; - fg.register(object, "holdings", key); - - // object goes out of scope. -})(); - -// This GC will reclaim the target object and schedule cleanup. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function was called and iterated the holdings. -let timeout_func = function() { - assertEquals(1, cleanup_call_count); - assertEquals(1, cleanup_holdings_count); - - // Unregister an already iterated over weak reference. - fg.unregister(key); - - // Assert that it didn't do anything. - setTimeout(() => { assertEquals(1, cleanup_call_count); }, 0); - setTimeout(() => { assertEquals(1, cleanup_holdings_count); }, 0); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-before-cleanup.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-before-cleanup.js deleted file mode 100644 index 10b8bc67ff8..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-before-cleanup.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking --noincremental-marking - -let cleanup_call_count = 0; -let cleanup = function(iter) { - ++cleanup_call_count; -} - -let fg = new FinalizationGroup(cleanup); -let key = {"k": "this is the key"}; -// Create an object and register it in the FinalizationGroup. The object needs -// to be inside a closure so that we can reliably kill them! - -(function() { - let object = {}; - fg.register(object, "my holdings", key); - - // Clear the WeakCell before the GC has a chance to discover it. - let return_value = fg.unregister(key); - assertEquals(undefined, return_value); - - // object goes out of scope. -})(); - -// This GC will reclaim the target object. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function won't be called, since we called unregister. -let timeout_func = function() { - assertEquals(0, cleanup_call_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-called-twice.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-called-twice.js deleted file mode 100644 index e6ea1500278..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-called-twice.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup = function(iter) { - ++cleanup_call_count; -} - -let fg = new FinalizationGroup(cleanup); -let key = {"k": "this is the key"}; -// Create an object and register it in the FinalizationGroup. The object needs -// to be inside a closure so that we can reliably kill them! - -(function() { - let object = {}; - fg.register(object, "holdings", key); - - // Unregister before the GC has a chance to discover the object. - fg.unregister(key); - - // Call unregister again (just to assert we handle this gracefully). - fg.unregister(key); - - // object goes out of scope. -})(); - -// This GC will reclaim the target object. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function won't be called, since the weak reference -// was unregistered. -let timeout_func = function() { - assertEquals(0, cleanup_call_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup1.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup1.js deleted file mode 100644 index aa9eab20ff5..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup1.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup_holdings_count = 0; -let cleanup = function(iter) { - // Unregister before we've iterated through the holdings. - fg.unregister(key); - - for (wc of iter) { - ++cleanup_holdings_count; - } - ++cleanup_call_count; -} - -let fg = new FinalizationGroup(cleanup); -let key = {"k": "the key"}; -// Create an object and register it in the FinalizationGroup. The object needs -// to be inside a closure so that we can reliably kill them! - -(function() { - let object = {}; - fg.register(object, "holdings", key); - - // object goes out of scope. -})(); - -// This GC will discover unretained targets and schedule cleanup. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function was called, but didn't iterate any holdings. -let timeout_func = function() { - assertEquals(1, cleanup_call_count); - assertEquals(0, cleanup_holdings_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup2.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup2.js deleted file mode 100644 index 84ec3aaef85..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup2.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup_holdings_count = 0; -let cleanup = function(iter) { - for (holdings of iter) { - assertEquals(holdings, "holdings"); - fg.unregister(key); - ++cleanup_holdings_count; - } - ++cleanup_call_count; -} - -let fg = new FinalizationGroup(cleanup); -// Create an object and register it in the FinalizationGroup. The object needs to be inside -// a closure so that we can reliably kill them! -let key = {"k": "this is the key"}; - -(function() { - let object = {}; - fg.register(object, "holdings", key); - - // object goes out of scope. -})(); - -// This GC will discover dirty WeakCells and schedule cleanup. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function was called and iterated the WeakCell. -let timeout_func = function() { - assertEquals(1, cleanup_call_count); - assertEquals(1, cleanup_holdings_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js deleted file mode 100644 index 39706a7b9b5..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup_holdings_count = 0; -let cleanup = function(iter) { - for (holdings of iter) { - assertEquals(holdings, "holdings"); - ++cleanup_holdings_count; - } - // Unregister an already iterated over weak reference. - fg.unregister(key); - ++cleanup_call_count; -} - -let fg = new FinalizationGroup(cleanup); -let key = {"k": "this is the key"}; - -// Create an object and register it in the FinalizationGroup. The object needs to be inside -// a closure so that we can reliably kill them! - -(function() { - let object = {}; - fg.register(object, "holdings", key); - - // object goes out of scope. -})(); - -// This GC will reclaim the target object and schedule cleanup. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function was called and iterated the holdings. -let timeout_func = function() { - assertEquals(1, cleanup_call_count); - assertEquals(1, cleanup_holdings_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup4.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup4.js deleted file mode 100644 index 67ed2275029..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-inside-cleanup4.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup_holdings_count = 0; -let cleanup = function(iter) { - for (holdings of iter) { - // See which target we're iterating over and unregister the other one. - if (holdings == 1) { - fg.unregister(key2); - } else { - assertSame(holdings, 2); - fg.unregister(key1); - } - ++cleanup_holdings_count; - } - ++cleanup_call_count; -} - -let fg = new FinalizationGroup(cleanup); -let key1 = {"k": "first key"}; -let key2 = {"k": "second key"}; -// Create two objects and register them in the FinalizationGroup. The objects -// need to be inside a closure so that we can reliably kill them! - -(function() { - let object1 = {}; - fg.register(object1, 1, key1); - let object2 = {}; - fg.register(object2, 2, key2); - - // object1 and object2 go out of scope. -})(); - -// This GC will reclaim target objects and schedule cleanup. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function was called and iterated one holdings (but not the other one). -let timeout_func = function() { - assertEquals(1, cleanup_call_count); - assertEquals(1, cleanup_holdings_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-many.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-many.js deleted file mode 100644 index 748b7065c6a..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-many.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup_holdings_count = 0; -let cleanup = function(iter) { - for (holdings of iter) { - assertEquals("holdings2", holdings); - ++cleanup_holdings_count; - } - ++cleanup_call_count; -} - -let fg = new FinalizationGroup(cleanup); -let key1 = {"k": "key1"}; -let key2 = {"k": "key2"}; -// Create three objects and register them in the FinalizationGroup. The objects -// need to be inside a closure so that we can reliably kill them! - -(function() { - let object1a = {}; - fg.register(object1a, "holdings1a", key1); - - let object1b = {}; - fg.register(object1b, "holdings1b", key1); - - let object2 = {}; - fg.register(object2, "holdings2", key2); - - // Unregister before the GC has a chance to discover the objects. - fg.unregister(key1); - - // objects go out of scope. -})(); - -// This GC will reclaim the target objects. -gc(); -assertEquals(0, cleanup_call_count); - -// Assert that the cleanup function will be called only for the reference which -// was not unregistered. -let timeout_func = function() { - assertEquals(1, cleanup_call_count); - assertEquals(1, cleanup_holdings_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-when-cleanup-already-scheduled.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-when-cleanup-already-scheduled.js deleted file mode 100644 index 24665683977..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/unregister-when-cleanup-already-scheduled.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_call_count = 0; -let cleanup = function(iter) { - ++cleanup_call_count; -} - -let key = {"k": "this is my key"}; -let fg = new FinalizationGroup(cleanup); -// Create an object and register it in the FinalizationGroup. The object needs to be inside -// a closure so that we can reliably kill them! - -(function() { - let object = {}; - fg.register(object, {}, key); - - // object goes out of scope. -})(); - -// This GC will discover dirty WeakCells and schedule cleanup. -gc(); -assertEquals(0, cleanup_call_count); - -// Unregister the object from the FinalizationGroup before cleanup has ran. -fg.unregister(key); - -// Assert that the cleanup function won't be called. -let timeout_func = function() { - assertEquals(0, cleanup_call_count); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/weak-cell-basics.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/weak-cell-basics.js deleted file mode 100644 index 170a52df101..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/weak-cell-basics.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking - -let cleanup_called = false; -let cleanup = function(iter) { - assertFalse(cleanup_called); - let result = iter.next(); - assertEquals(result.value, holdings); - assertFalse(result.done); - result = iter.next(); - assertTrue(result.done); - cleanup_called = true; -} - -let fg = new FinalizationGroup(cleanup); -let o = {}; -let holdings = {'h': 55}; -fg.register(o, holdings); - -gc(); -assertFalse(cleanup_called); - -// Drop the last reference to o. -o = null; -// GC will clear the WeakCell; the cleanup function will be called the next time -// we enter the event loop. -gc(); -assertFalse(cleanup_called); - -let timeout_func = function() { - assertTrue(cleanup_called); -} - -setTimeout(timeout_func, 0); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/weakref-creation-keeps-alive.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/weakref-creation-keeps-alive.js deleted file mode 100644 index 18e3af26cec..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/weakref-creation-keeps-alive.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking --allow-natives-syntax - -let wr; -(function() { - let o = {}; - wr = new WeakRef(o); - // Don't deref here, we want to test that the creation is enough to keep the - // WeakRef alive until the end of the turn. -})(); - -gc(); - -// Since the WeakRef was created during this turn, it is not cleared by GC. -(function() { - assertNotEquals(undefined, wr.deref()); -})(); - -%PerformMicrotaskCheckpoint(); -// Next turn. - -gc(); - -assertEquals(undefined, wr.deref()); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/weakref-deref-keeps-alive.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/weakref-deref-keeps-alive.js deleted file mode 100644 index c17f0607138..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/weakref-deref-keeps-alive.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-weak-refs --expose-gc --noincremental-marking --allow-natives-syntax - -let wr; -let wr_control; // control WeakRef for testing what happens without deref -(function() { - let o1 = {}; - wr = new WeakRef(o1); - let o2 = {}; - wr_control = new WeakRef(o2); -})(); - -let strong = {a: wr.deref(), b: wr_control.deref()}; - -gc(); - -%PerformMicrotaskCheckpoint(); -// Next turn. - -// Call deref inside a closure, trying to avoid accidentally storing a strong -// reference into the object in the stack frame. -(function() { - wr.deref(); -})(); - -strong = null; - -// This GC will clear wr_control. -gc(); - -(function() { - assertNotEquals(undefined, wr.deref()); - // Now the control WeakRef got cleared, since nothing was keeping it alive. - assertEquals(undefined, wr_control.deref()); -})(); - -%PerformMicrotaskCheckpoint(); -// Next turn. - -gc(); - -assertEquals(undefined, wr.deref()); diff --git a/implementation-contributed/v8/mjsunit/harmony/well-formed-json-stringify-checked.js b/implementation-contributed/v8/mjsunit/harmony/well-formed-json-stringify-checked.js deleted file mode 100644 index d1179d38557..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/well-formed-json-stringify-checked.js +++ /dev/null @@ -1,2575 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-json-stringify - -// Test JSON.stringify for cases that hit -// JsonStringifier::SerializeString_. - -// All code points from U+0000 to U+00FF. -assertEquals('"___\\u0000"', JSON.stringify('___\0')); -assertEquals('"___\\u0001"', JSON.stringify('___\x01')); -assertEquals('"___\\u0002"', JSON.stringify('___\x02')); -assertEquals('"___\\u0003"', JSON.stringify('___\x03')); -assertEquals('"___\\u0004"', JSON.stringify('___\x04')); -assertEquals('"___\\u0005"', JSON.stringify('___\x05')); -assertEquals('"___\\u0006"', JSON.stringify('___\x06')); -assertEquals('"___\\u0007"', JSON.stringify('___\x07')); -assertEquals('"___\\b"', JSON.stringify('___\b')); -assertEquals('"___\\t"', JSON.stringify('___\t')); -assertEquals('"___\\n"', JSON.stringify('___\n')); -assertEquals('"___\\u000b"', JSON.stringify('___\x0B')); -assertEquals('"___\\f"', JSON.stringify('___\f')); -assertEquals('"___\\r"', JSON.stringify('___\r')); -assertEquals('"___\\u000e"', JSON.stringify('___\x0E')); -assertEquals('"___\\u000f"', JSON.stringify('___\x0F')); -assertEquals('"___\\u0010"', JSON.stringify('___\x10')); -assertEquals('"___\\u0011"', JSON.stringify('___\x11')); -assertEquals('"___\\u0012"', JSON.stringify('___\x12')); -assertEquals('"___\\u0013"', JSON.stringify('___\x13')); -assertEquals('"___\\u0014"', JSON.stringify('___\x14')); -assertEquals('"___\\u0015"', JSON.stringify('___\x15')); -assertEquals('"___\\u0016"', JSON.stringify('___\x16')); -assertEquals('"___\\u0017"', JSON.stringify('___\x17')); -assertEquals('"___\\u0018"', JSON.stringify('___\x18')); -assertEquals('"___\\u0019"', JSON.stringify('___\x19')); -assertEquals('"___\\u001a"', JSON.stringify('___\x1A')); -assertEquals('"___\\u001b"', JSON.stringify('___\x1B')); -assertEquals('"___\\u001c"', JSON.stringify('___\x1C')); -assertEquals('"___\\u001d"', JSON.stringify('___\x1D')); -assertEquals('"___\\u001e"', JSON.stringify('___\x1E')); -assertEquals('"___\\u001f"', JSON.stringify('___\x1F')); -assertEquals('"___ "', JSON.stringify('___ ')); -assertEquals('"___!"', JSON.stringify('___!')); -assertEquals('"___\\""', JSON.stringify('___"')); -assertEquals('"___#"', JSON.stringify('___#')); -assertEquals('"___$"', JSON.stringify('___$')); -assertEquals('"___%"', JSON.stringify('___%')); -assertEquals('"___&"', JSON.stringify('___&')); -assertEquals('"___\'"', JSON.stringify('___\'')); -assertEquals('"___("', JSON.stringify('___(')); -assertEquals('"___)"', JSON.stringify('___)')); -assertEquals('"___*"', JSON.stringify('___*')); -assertEquals('"___+"', JSON.stringify('___+')); -assertEquals('"___,"', JSON.stringify('___,')); -assertEquals('"___-"', JSON.stringify('___-')); -assertEquals('"___."', JSON.stringify('___.')); -assertEquals('"___/"', JSON.stringify('___/')); -assertEquals('"___0"', JSON.stringify('___0')); -assertEquals('"___1"', JSON.stringify('___1')); -assertEquals('"___2"', JSON.stringify('___2')); -assertEquals('"___3"', JSON.stringify('___3')); -assertEquals('"___4"', JSON.stringify('___4')); -assertEquals('"___5"', JSON.stringify('___5')); -assertEquals('"___6"', JSON.stringify('___6')); -assertEquals('"___7"', JSON.stringify('___7')); -assertEquals('"___8"', JSON.stringify('___8')); -assertEquals('"___9"', JSON.stringify('___9')); -assertEquals('"___:"', JSON.stringify('___:')); -assertEquals('"___;"', JSON.stringify('___;')); -assertEquals('"___<"', JSON.stringify('___<')); -assertEquals('"___="', JSON.stringify('___=')); -assertEquals('"___>"', JSON.stringify('___>')); -assertEquals('"___?"', JSON.stringify('___?')); -assertEquals('"___@"', JSON.stringify('___@')); -assertEquals('"___A"', JSON.stringify('___A')); -assertEquals('"___B"', JSON.stringify('___B')); -assertEquals('"___C"', JSON.stringify('___C')); -assertEquals('"___D"', JSON.stringify('___D')); -assertEquals('"___E"', JSON.stringify('___E')); -assertEquals('"___F"', JSON.stringify('___F')); -assertEquals('"___G"', JSON.stringify('___G')); -assertEquals('"___H"', JSON.stringify('___H')); -assertEquals('"___I"', JSON.stringify('___I')); -assertEquals('"___J"', JSON.stringify('___J')); -assertEquals('"___K"', JSON.stringify('___K')); -assertEquals('"___L"', JSON.stringify('___L')); -assertEquals('"___M"', JSON.stringify('___M')); -assertEquals('"___N"', JSON.stringify('___N')); -assertEquals('"___O"', JSON.stringify('___O')); -assertEquals('"___P"', JSON.stringify('___P')); -assertEquals('"___Q"', JSON.stringify('___Q')); -assertEquals('"___R"', JSON.stringify('___R')); -assertEquals('"___S"', JSON.stringify('___S')); -assertEquals('"___T"', JSON.stringify('___T')); -assertEquals('"___U"', JSON.stringify('___U')); -assertEquals('"___V"', JSON.stringify('___V')); -assertEquals('"___W"', JSON.stringify('___W')); -assertEquals('"___X"', JSON.stringify('___X')); -assertEquals('"___Y"', JSON.stringify('___Y')); -assertEquals('"___Z"', JSON.stringify('___Z')); -assertEquals('"___["', JSON.stringify('___[')); -assertEquals('"___\\\\"', JSON.stringify('___\\')); -assertEquals('"___]"', JSON.stringify('___]')); -assertEquals('"___^"', JSON.stringify('___^')); -assertEquals('"____"', JSON.stringify('____')); -assertEquals('"___`"', JSON.stringify('___`')); -assertEquals('"___a"', JSON.stringify('___a')); -assertEquals('"___b"', JSON.stringify('___b')); -assertEquals('"___c"', JSON.stringify('___c')); -assertEquals('"___d"', JSON.stringify('___d')); -assertEquals('"___e"', JSON.stringify('___e')); -assertEquals('"___f"', JSON.stringify('___f')); -assertEquals('"___g"', JSON.stringify('___g')); -assertEquals('"___h"', JSON.stringify('___h')); -assertEquals('"___i"', JSON.stringify('___i')); -assertEquals('"___j"', JSON.stringify('___j')); -assertEquals('"___k"', JSON.stringify('___k')); -assertEquals('"___l"', JSON.stringify('___l')); -assertEquals('"___m"', JSON.stringify('___m')); -assertEquals('"___n"', JSON.stringify('___n')); -assertEquals('"___o"', JSON.stringify('___o')); -assertEquals('"___p"', JSON.stringify('___p')); -assertEquals('"___q"', JSON.stringify('___q')); -assertEquals('"___r"', JSON.stringify('___r')); -assertEquals('"___s"', JSON.stringify('___s')); -assertEquals('"___t"', JSON.stringify('___t')); -assertEquals('"___u"', JSON.stringify('___u')); -assertEquals('"___v"', JSON.stringify('___v')); -assertEquals('"___w"', JSON.stringify('___w')); -assertEquals('"___x"', JSON.stringify('___x')); -assertEquals('"___y"', JSON.stringify('___y')); -assertEquals('"___z"', JSON.stringify('___z')); -assertEquals('"___{"', JSON.stringify('___{')); -assertEquals('"___|"', JSON.stringify('___|')); -assertEquals('"___}"', JSON.stringify('___}')); -assertEquals('"___~"', JSON.stringify('___~')); -assertEquals('"___\x7F"', JSON.stringify('___\x7F')); -assertEquals('"___\x80"', JSON.stringify('___\x80')); -assertEquals('"___\x81"', JSON.stringify('___\x81')); -assertEquals('"___\x82"', JSON.stringify('___\x82')); -assertEquals('"___\x83"', JSON.stringify('___\x83')); -assertEquals('"___\x84"', JSON.stringify('___\x84')); -assertEquals('"___\x85"', JSON.stringify('___\x85')); -assertEquals('"___\x86"', JSON.stringify('___\x86')); -assertEquals('"___\x87"', JSON.stringify('___\x87')); -assertEquals('"___\x88"', JSON.stringify('___\x88')); -assertEquals('"___\x89"', JSON.stringify('___\x89')); -assertEquals('"___\x8A"', JSON.stringify('___\x8A')); -assertEquals('"___\x8B"', JSON.stringify('___\x8B')); -assertEquals('"___\x8C"', JSON.stringify('___\x8C')); -assertEquals('"___\x8D"', JSON.stringify('___\x8D')); -assertEquals('"___\x8E"', JSON.stringify('___\x8E')); -assertEquals('"___\x8F"', JSON.stringify('___\x8F')); -assertEquals('"___\x90"', JSON.stringify('___\x90')); -assertEquals('"___\x91"', JSON.stringify('___\x91')); -assertEquals('"___\x92"', JSON.stringify('___\x92')); -assertEquals('"___\x93"', JSON.stringify('___\x93')); -assertEquals('"___\x94"', JSON.stringify('___\x94')); -assertEquals('"___\x95"', JSON.stringify('___\x95')); -assertEquals('"___\x96"', JSON.stringify('___\x96')); -assertEquals('"___\x97"', JSON.stringify('___\x97')); -assertEquals('"___\x98"', JSON.stringify('___\x98')); -assertEquals('"___\x99"', JSON.stringify('___\x99')); -assertEquals('"___\x9A"', JSON.stringify('___\x9A')); -assertEquals('"___\x9B"', JSON.stringify('___\x9B')); -assertEquals('"___\x9C"', JSON.stringify('___\x9C')); -assertEquals('"___\x9D"', JSON.stringify('___\x9D')); -assertEquals('"___\x9E"', JSON.stringify('___\x9E')); -assertEquals('"___\x9F"', JSON.stringify('___\x9F')); -assertEquals('"___\xA0"', JSON.stringify('___\xA0')); -assertEquals('"___\xA1"', JSON.stringify('___\xA1')); -assertEquals('"___\xA2"', JSON.stringify('___\xA2')); -assertEquals('"___\xA3"', JSON.stringify('___\xA3')); -assertEquals('"___\xA4"', JSON.stringify('___\xA4')); -assertEquals('"___\xA5"', JSON.stringify('___\xA5')); -assertEquals('"___\xA6"', JSON.stringify('___\xA6')); -assertEquals('"___\xA7"', JSON.stringify('___\xA7')); -assertEquals('"___\xA8"', JSON.stringify('___\xA8')); -assertEquals('"___\xA9"', JSON.stringify('___\xA9')); -assertEquals('"___\xAA"', JSON.stringify('___\xAA')); -assertEquals('"___\xAB"', JSON.stringify('___\xAB')); -assertEquals('"___\xAC"', JSON.stringify('___\xAC')); -assertEquals('"___\xAD"', JSON.stringify('___\xAD')); -assertEquals('"___\xAE"', JSON.stringify('___\xAE')); -assertEquals('"___\xAF"', JSON.stringify('___\xAF')); -assertEquals('"___\xB0"', JSON.stringify('___\xB0')); -assertEquals('"___\xB1"', JSON.stringify('___\xB1')); -assertEquals('"___\xB2"', JSON.stringify('___\xB2')); -assertEquals('"___\xB3"', JSON.stringify('___\xB3')); -assertEquals('"___\xB4"', JSON.stringify('___\xB4')); -assertEquals('"___\xB5"', JSON.stringify('___\xB5')); -assertEquals('"___\xB6"', JSON.stringify('___\xB6')); -assertEquals('"___\xB7"', JSON.stringify('___\xB7')); -assertEquals('"___\xB8"', JSON.stringify('___\xB8')); -assertEquals('"___\xB9"', JSON.stringify('___\xB9')); -assertEquals('"___\xBA"', JSON.stringify('___\xBA')); -assertEquals('"___\xBB"', JSON.stringify('___\xBB')); -assertEquals('"___\xBC"', JSON.stringify('___\xBC')); -assertEquals('"___\xBD"', JSON.stringify('___\xBD')); -assertEquals('"___\xBE"', JSON.stringify('___\xBE')); -assertEquals('"___\xBF"', JSON.stringify('___\xBF')); -assertEquals('"___\xC0"', JSON.stringify('___\xC0')); -assertEquals('"___\xC1"', JSON.stringify('___\xC1')); -assertEquals('"___\xC2"', JSON.stringify('___\xC2')); -assertEquals('"___\xC3"', JSON.stringify('___\xC3')); -assertEquals('"___\xC4"', JSON.stringify('___\xC4')); -assertEquals('"___\xC5"', JSON.stringify('___\xC5')); -assertEquals('"___\xC6"', JSON.stringify('___\xC6')); -assertEquals('"___\xC7"', JSON.stringify('___\xC7')); -assertEquals('"___\xC8"', JSON.stringify('___\xC8')); -assertEquals('"___\xC9"', JSON.stringify('___\xC9')); -assertEquals('"___\xCA"', JSON.stringify('___\xCA')); -assertEquals('"___\xCB"', JSON.stringify('___\xCB')); -assertEquals('"___\xCC"', JSON.stringify('___\xCC')); -assertEquals('"___\xCD"', JSON.stringify('___\xCD')); -assertEquals('"___\xCE"', JSON.stringify('___\xCE')); -assertEquals('"___\xCF"', JSON.stringify('___\xCF')); -assertEquals('"___\xD0"', JSON.stringify('___\xD0')); -assertEquals('"___\xD1"', JSON.stringify('___\xD1')); -assertEquals('"___\xD2"', JSON.stringify('___\xD2')); -assertEquals('"___\xD3"', JSON.stringify('___\xD3')); -assertEquals('"___\xD4"', JSON.stringify('___\xD4')); -assertEquals('"___\xD5"', JSON.stringify('___\xD5')); -assertEquals('"___\xD6"', JSON.stringify('___\xD6')); -assertEquals('"___\xD7"', JSON.stringify('___\xD7')); -assertEquals('"___\xD8"', JSON.stringify('___\xD8')); -assertEquals('"___\xD9"', JSON.stringify('___\xD9')); -assertEquals('"___\xDA"', JSON.stringify('___\xDA')); -assertEquals('"___\xDB"', JSON.stringify('___\xDB')); -assertEquals('"___\xDC"', JSON.stringify('___\xDC')); -assertEquals('"___\xDD"', JSON.stringify('___\xDD')); -assertEquals('"___\xDE"', JSON.stringify('___\xDE')); -assertEquals('"___\xDF"', JSON.stringify('___\xDF')); -assertEquals('"___\xE0"', JSON.stringify('___\xE0')); -assertEquals('"___\xE1"', JSON.stringify('___\xE1')); -assertEquals('"___\xE2"', JSON.stringify('___\xE2')); -assertEquals('"___\xE3"', JSON.stringify('___\xE3')); -assertEquals('"___\xE4"', JSON.stringify('___\xE4')); -assertEquals('"___\xE5"', JSON.stringify('___\xE5')); -assertEquals('"___\xE6"', JSON.stringify('___\xE6')); -assertEquals('"___\xE7"', JSON.stringify('___\xE7')); -assertEquals('"___\xE8"', JSON.stringify('___\xE8')); -assertEquals('"___\xE9"', JSON.stringify('___\xE9')); -assertEquals('"___\xEA"', JSON.stringify('___\xEA')); -assertEquals('"___\xEB"', JSON.stringify('___\xEB')); -assertEquals('"___\xEC"', JSON.stringify('___\xEC')); -assertEquals('"___\xED"', JSON.stringify('___\xED')); -assertEquals('"___\xEE"', JSON.stringify('___\xEE')); -assertEquals('"___\xEF"', JSON.stringify('___\xEF')); -assertEquals('"___\xF0"', JSON.stringify('___\xF0')); -assertEquals('"___\xF1"', JSON.stringify('___\xF1')); -assertEquals('"___\xF2"', JSON.stringify('___\xF2')); -assertEquals('"___\xF3"', JSON.stringify('___\xF3')); -assertEquals('"___\xF4"', JSON.stringify('___\xF4')); -assertEquals('"___\xF5"', JSON.stringify('___\xF5')); -assertEquals('"___\xF6"', JSON.stringify('___\xF6')); -assertEquals('"___\xF7"', JSON.stringify('___\xF7')); -assertEquals('"___\xF8"', JSON.stringify('___\xF8')); -assertEquals('"___\xF9"', JSON.stringify('___\xF9')); -assertEquals('"___\xFA"', JSON.stringify('___\xFA')); -assertEquals('"___\xFB"', JSON.stringify('___\xFB')); -assertEquals('"___\xFC"', JSON.stringify('___\xFC')); -assertEquals('"___\xFD"', JSON.stringify('___\xFD')); -assertEquals('"___\xFE"', JSON.stringify('___\xFE')); -assertEquals('"___\xFF"', JSON.stringify('___\xFF')); - -// A random selection of code points from U+0100 to U+D7FF. -assertEquals('"___\u0100"', JSON.stringify('___\u0100')); -assertEquals('"___\u0120"', JSON.stringify('___\u0120')); -assertEquals('"___\u07D3"', JSON.stringify('___\u07D3')); -assertEquals('"___\u0B8B"', JSON.stringify('___\u0B8B')); -assertEquals('"___\u0C4C"', JSON.stringify('___\u0C4C')); -assertEquals('"___\u178D"', JSON.stringify('___\u178D')); -assertEquals('"___\u18B8"', JSON.stringify('___\u18B8')); -assertEquals('"___\u193E"', JSON.stringify('___\u193E')); -assertEquals('"___\u198A"', JSON.stringify('___\u198A')); -assertEquals('"___\u1AF5"', JSON.stringify('___\u1AF5')); -assertEquals('"___\u1D38"', JSON.stringify('___\u1D38')); -assertEquals('"___\u1E37"', JSON.stringify('___\u1E37')); -assertEquals('"___\u1FC2"', JSON.stringify('___\u1FC2')); -assertEquals('"___\u22C7"', JSON.stringify('___\u22C7')); -assertEquals('"___\u2619"', JSON.stringify('___\u2619')); -assertEquals('"___\u272A"', JSON.stringify('___\u272A')); -assertEquals('"___\u2B7F"', JSON.stringify('___\u2B7F')); -assertEquals('"___\u2DFF"', JSON.stringify('___\u2DFF')); -assertEquals('"___\u341B"', JSON.stringify('___\u341B')); -assertEquals('"___\u3A3C"', JSON.stringify('___\u3A3C')); -assertEquals('"___\u3E53"', JSON.stringify('___\u3E53')); -assertEquals('"___\u3EC2"', JSON.stringify('___\u3EC2')); -assertEquals('"___\u3F76"', JSON.stringify('___\u3F76')); -assertEquals('"___\u3F85"', JSON.stringify('___\u3F85')); -assertEquals('"___\u43C7"', JSON.stringify('___\u43C7')); -assertEquals('"___\u4A19"', JSON.stringify('___\u4A19')); -assertEquals('"___\u4A1C"', JSON.stringify('___\u4A1C')); -assertEquals('"___\u4F80"', JSON.stringify('___\u4F80')); -assertEquals('"___\u5A30"', JSON.stringify('___\u5A30')); -assertEquals('"___\u5B55"', JSON.stringify('___\u5B55')); -assertEquals('"___\u5C74"', JSON.stringify('___\u5C74')); -assertEquals('"___\u6006"', JSON.stringify('___\u6006')); -assertEquals('"___\u63CC"', JSON.stringify('___\u63CC')); -assertEquals('"___\u6608"', JSON.stringify('___\u6608')); -assertEquals('"___\u6ABF"', JSON.stringify('___\u6ABF')); -assertEquals('"___\u6AE9"', JSON.stringify('___\u6AE9')); -assertEquals('"___\u6C91"', JSON.stringify('___\u6C91')); -assertEquals('"___\u714B"', JSON.stringify('___\u714B')); -assertEquals('"___\u728A"', JSON.stringify('___\u728A')); -assertEquals('"___\u7485"', JSON.stringify('___\u7485')); -assertEquals('"___\u77C8"', JSON.stringify('___\u77C8')); -assertEquals('"___\u7BE9"', JSON.stringify('___\u7BE9')); -assertEquals('"___\u7CEF"', JSON.stringify('___\u7CEF')); -assertEquals('"___\u7DD5"', JSON.stringify('___\u7DD5')); -assertEquals('"___\u8DF1"', JSON.stringify('___\u8DF1')); -assertEquals('"___\u94A9"', JSON.stringify('___\u94A9')); -assertEquals('"___\u94F2"', JSON.stringify('___\u94F2')); -assertEquals('"___\u9A7A"', JSON.stringify('___\u9A7A')); -assertEquals('"___\u9AA6"', JSON.stringify('___\u9AA6')); -assertEquals('"___\uA2B0"', JSON.stringify('___\uA2B0')); -assertEquals('"___\uB711"', JSON.stringify('___\uB711')); -assertEquals('"___\uBC01"', JSON.stringify('___\uBC01')); -assertEquals('"___\uBCB6"', JSON.stringify('___\uBCB6')); -assertEquals('"___\uBD70"', JSON.stringify('___\uBD70')); -assertEquals('"___\uC3CD"', JSON.stringify('___\uC3CD')); -assertEquals('"___\uC451"', JSON.stringify('___\uC451')); -assertEquals('"___\uC677"', JSON.stringify('___\uC677')); -assertEquals('"___\uC89B"', JSON.stringify('___\uC89B')); -assertEquals('"___\uCBEF"', JSON.stringify('___\uCBEF')); -assertEquals('"___\uCEF8"', JSON.stringify('___\uCEF8')); -assertEquals('"___\uD089"', JSON.stringify('___\uD089')); -assertEquals('"___\uD24D"', JSON.stringify('___\uD24D')); -assertEquals('"___\uD3A7"', JSON.stringify('___\uD3A7')); -assertEquals('"___\uD7FF"', JSON.stringify('___\uD7FF')); - -// All lone surrogates, i.e. code points from U+D800 to U+DFFF. -assertEquals('"___\\ud800"', JSON.stringify('___\uD800')); -assertEquals('"___\\ud801"', JSON.stringify('___\uD801')); -assertEquals('"___\\ud802"', JSON.stringify('___\uD802')); -assertEquals('"___\\ud803"', JSON.stringify('___\uD803')); -assertEquals('"___\\ud804"', JSON.stringify('___\uD804')); -assertEquals('"___\\ud805"', JSON.stringify('___\uD805')); -assertEquals('"___\\ud806"', JSON.stringify('___\uD806')); -assertEquals('"___\\ud807"', JSON.stringify('___\uD807')); -assertEquals('"___\\ud808"', JSON.stringify('___\uD808')); -assertEquals('"___\\ud809"', JSON.stringify('___\uD809')); -assertEquals('"___\\ud80a"', JSON.stringify('___\uD80A')); -assertEquals('"___\\ud80b"', JSON.stringify('___\uD80B')); -assertEquals('"___\\ud80c"', JSON.stringify('___\uD80C')); -assertEquals('"___\\ud80d"', JSON.stringify('___\uD80D')); -assertEquals('"___\\ud80e"', JSON.stringify('___\uD80E')); -assertEquals('"___\\ud80f"', JSON.stringify('___\uD80F')); -assertEquals('"___\\ud810"', JSON.stringify('___\uD810')); -assertEquals('"___\\ud811"', JSON.stringify('___\uD811')); -assertEquals('"___\\ud812"', JSON.stringify('___\uD812')); -assertEquals('"___\\ud813"', JSON.stringify('___\uD813')); -assertEquals('"___\\ud814"', JSON.stringify('___\uD814')); -assertEquals('"___\\ud815"', JSON.stringify('___\uD815')); -assertEquals('"___\\ud816"', JSON.stringify('___\uD816')); -assertEquals('"___\\ud817"', JSON.stringify('___\uD817')); -assertEquals('"___\\ud818"', JSON.stringify('___\uD818')); -assertEquals('"___\\ud819"', JSON.stringify('___\uD819')); -assertEquals('"___\\ud81a"', JSON.stringify('___\uD81A')); -assertEquals('"___\\ud81b"', JSON.stringify('___\uD81B')); -assertEquals('"___\\ud81c"', JSON.stringify('___\uD81C')); -assertEquals('"___\\ud81d"', JSON.stringify('___\uD81D')); -assertEquals('"___\\ud81e"', JSON.stringify('___\uD81E')); -assertEquals('"___\\ud81f"', JSON.stringify('___\uD81F')); -assertEquals('"___\\ud820"', JSON.stringify('___\uD820')); -assertEquals('"___\\ud821"', JSON.stringify('___\uD821')); -assertEquals('"___\\ud822"', JSON.stringify('___\uD822')); -assertEquals('"___\\ud823"', JSON.stringify('___\uD823')); -assertEquals('"___\\ud824"', JSON.stringify('___\uD824')); -assertEquals('"___\\ud825"', JSON.stringify('___\uD825')); -assertEquals('"___\\ud826"', JSON.stringify('___\uD826')); -assertEquals('"___\\ud827"', JSON.stringify('___\uD827')); -assertEquals('"___\\ud828"', JSON.stringify('___\uD828')); -assertEquals('"___\\ud829"', JSON.stringify('___\uD829')); -assertEquals('"___\\ud82a"', JSON.stringify('___\uD82A')); -assertEquals('"___\\ud82b"', JSON.stringify('___\uD82B')); -assertEquals('"___\\ud82c"', JSON.stringify('___\uD82C')); -assertEquals('"___\\ud82d"', JSON.stringify('___\uD82D')); -assertEquals('"___\\ud82e"', JSON.stringify('___\uD82E')); -assertEquals('"___\\ud82f"', JSON.stringify('___\uD82F')); -assertEquals('"___\\ud830"', JSON.stringify('___\uD830')); -assertEquals('"___\\ud831"', JSON.stringify('___\uD831')); -assertEquals('"___\\ud832"', JSON.stringify('___\uD832')); -assertEquals('"___\\ud833"', JSON.stringify('___\uD833')); -assertEquals('"___\\ud834"', JSON.stringify('___\uD834')); -assertEquals('"___\\ud835"', JSON.stringify('___\uD835')); -assertEquals('"___\\ud836"', JSON.stringify('___\uD836')); -assertEquals('"___\\ud837"', JSON.stringify('___\uD837')); -assertEquals('"___\\ud838"', JSON.stringify('___\uD838')); -assertEquals('"___\\ud839"', JSON.stringify('___\uD839')); -assertEquals('"___\\ud83a"', JSON.stringify('___\uD83A')); -assertEquals('"___\\ud83b"', JSON.stringify('___\uD83B')); -assertEquals('"___\\ud83c"', JSON.stringify('___\uD83C')); -assertEquals('"___\\ud83d"', JSON.stringify('___\uD83D')); -assertEquals('"___\\ud83e"', JSON.stringify('___\uD83E')); -assertEquals('"___\\ud83f"', JSON.stringify('___\uD83F')); -assertEquals('"___\\ud840"', JSON.stringify('___\uD840')); -assertEquals('"___\\ud841"', JSON.stringify('___\uD841')); -assertEquals('"___\\ud842"', JSON.stringify('___\uD842')); -assertEquals('"___\\ud843"', JSON.stringify('___\uD843')); -assertEquals('"___\\ud844"', JSON.stringify('___\uD844')); -assertEquals('"___\\ud845"', JSON.stringify('___\uD845')); -assertEquals('"___\\ud846"', JSON.stringify('___\uD846')); -assertEquals('"___\\ud847"', JSON.stringify('___\uD847')); -assertEquals('"___\\ud848"', JSON.stringify('___\uD848')); -assertEquals('"___\\ud849"', JSON.stringify('___\uD849')); -assertEquals('"___\\ud84a"', JSON.stringify('___\uD84A')); -assertEquals('"___\\ud84b"', JSON.stringify('___\uD84B')); -assertEquals('"___\\ud84c"', JSON.stringify('___\uD84C')); -assertEquals('"___\\ud84d"', JSON.stringify('___\uD84D')); -assertEquals('"___\\ud84e"', JSON.stringify('___\uD84E')); -assertEquals('"___\\ud84f"', JSON.stringify('___\uD84F')); -assertEquals('"___\\ud850"', JSON.stringify('___\uD850')); -assertEquals('"___\\ud851"', JSON.stringify('___\uD851')); -assertEquals('"___\\ud852"', JSON.stringify('___\uD852')); -assertEquals('"___\\ud853"', JSON.stringify('___\uD853')); -assertEquals('"___\\ud854"', JSON.stringify('___\uD854')); -assertEquals('"___\\ud855"', JSON.stringify('___\uD855')); -assertEquals('"___\\ud856"', JSON.stringify('___\uD856')); -assertEquals('"___\\ud857"', JSON.stringify('___\uD857')); -assertEquals('"___\\ud858"', JSON.stringify('___\uD858')); -assertEquals('"___\\ud859"', JSON.stringify('___\uD859')); -assertEquals('"___\\ud85a"', JSON.stringify('___\uD85A')); -assertEquals('"___\\ud85b"', JSON.stringify('___\uD85B')); -assertEquals('"___\\ud85c"', JSON.stringify('___\uD85C')); -assertEquals('"___\\ud85d"', JSON.stringify('___\uD85D')); -assertEquals('"___\\ud85e"', JSON.stringify('___\uD85E')); -assertEquals('"___\\ud85f"', JSON.stringify('___\uD85F')); -assertEquals('"___\\ud860"', JSON.stringify('___\uD860')); -assertEquals('"___\\ud861"', JSON.stringify('___\uD861')); -assertEquals('"___\\ud862"', JSON.stringify('___\uD862')); -assertEquals('"___\\ud863"', JSON.stringify('___\uD863')); -assertEquals('"___\\ud864"', JSON.stringify('___\uD864')); -assertEquals('"___\\ud865"', JSON.stringify('___\uD865')); -assertEquals('"___\\ud866"', JSON.stringify('___\uD866')); -assertEquals('"___\\ud867"', JSON.stringify('___\uD867')); -assertEquals('"___\\ud868"', JSON.stringify('___\uD868')); -assertEquals('"___\\ud869"', JSON.stringify('___\uD869')); -assertEquals('"___\\ud86a"', JSON.stringify('___\uD86A')); -assertEquals('"___\\ud86b"', JSON.stringify('___\uD86B')); -assertEquals('"___\\ud86c"', JSON.stringify('___\uD86C')); -assertEquals('"___\\ud86d"', JSON.stringify('___\uD86D')); -assertEquals('"___\\ud86e"', JSON.stringify('___\uD86E')); -assertEquals('"___\\ud86f"', JSON.stringify('___\uD86F')); -assertEquals('"___\\ud870"', JSON.stringify('___\uD870')); -assertEquals('"___\\ud871"', JSON.stringify('___\uD871')); -assertEquals('"___\\ud872"', JSON.stringify('___\uD872')); -assertEquals('"___\\ud873"', JSON.stringify('___\uD873')); -assertEquals('"___\\ud874"', JSON.stringify('___\uD874')); -assertEquals('"___\\ud875"', JSON.stringify('___\uD875')); -assertEquals('"___\\ud876"', JSON.stringify('___\uD876')); -assertEquals('"___\\ud877"', JSON.stringify('___\uD877')); -assertEquals('"___\\ud878"', JSON.stringify('___\uD878')); -assertEquals('"___\\ud879"', JSON.stringify('___\uD879')); -assertEquals('"___\\ud87a"', JSON.stringify('___\uD87A')); -assertEquals('"___\\ud87b"', JSON.stringify('___\uD87B')); -assertEquals('"___\\ud87c"', JSON.stringify('___\uD87C')); -assertEquals('"___\\ud87d"', JSON.stringify('___\uD87D')); -assertEquals('"___\\ud87e"', JSON.stringify('___\uD87E')); -assertEquals('"___\\ud87f"', JSON.stringify('___\uD87F')); -assertEquals('"___\\ud880"', JSON.stringify('___\uD880')); -assertEquals('"___\\ud881"', JSON.stringify('___\uD881')); -assertEquals('"___\\ud882"', JSON.stringify('___\uD882')); -assertEquals('"___\\ud883"', JSON.stringify('___\uD883')); -assertEquals('"___\\ud884"', JSON.stringify('___\uD884')); -assertEquals('"___\\ud885"', JSON.stringify('___\uD885')); -assertEquals('"___\\ud886"', JSON.stringify('___\uD886')); -assertEquals('"___\\ud887"', JSON.stringify('___\uD887')); -assertEquals('"___\\ud888"', JSON.stringify('___\uD888')); -assertEquals('"___\\ud889"', JSON.stringify('___\uD889')); -assertEquals('"___\\ud88a"', JSON.stringify('___\uD88A')); -assertEquals('"___\\ud88b"', JSON.stringify('___\uD88B')); -assertEquals('"___\\ud88c"', JSON.stringify('___\uD88C')); -assertEquals('"___\\ud88d"', JSON.stringify('___\uD88D')); -assertEquals('"___\\ud88e"', JSON.stringify('___\uD88E')); -assertEquals('"___\\ud88f"', JSON.stringify('___\uD88F')); -assertEquals('"___\\ud890"', JSON.stringify('___\uD890')); -assertEquals('"___\\ud891"', JSON.stringify('___\uD891')); -assertEquals('"___\\ud892"', JSON.stringify('___\uD892')); -assertEquals('"___\\ud893"', JSON.stringify('___\uD893')); -assertEquals('"___\\ud894"', JSON.stringify('___\uD894')); -assertEquals('"___\\ud895"', JSON.stringify('___\uD895')); -assertEquals('"___\\ud896"', JSON.stringify('___\uD896')); -assertEquals('"___\\ud897"', JSON.stringify('___\uD897')); -assertEquals('"___\\ud898"', JSON.stringify('___\uD898')); -assertEquals('"___\\ud899"', JSON.stringify('___\uD899')); -assertEquals('"___\\ud89a"', JSON.stringify('___\uD89A')); -assertEquals('"___\\ud89b"', JSON.stringify('___\uD89B')); -assertEquals('"___\\ud89c"', JSON.stringify('___\uD89C')); -assertEquals('"___\\ud89d"', JSON.stringify('___\uD89D')); -assertEquals('"___\\ud89e"', JSON.stringify('___\uD89E')); -assertEquals('"___\\ud89f"', JSON.stringify('___\uD89F')); -assertEquals('"___\\ud8a0"', JSON.stringify('___\uD8A0')); -assertEquals('"___\\ud8a1"', JSON.stringify('___\uD8A1')); -assertEquals('"___\\ud8a2"', JSON.stringify('___\uD8A2')); -assertEquals('"___\\ud8a3"', JSON.stringify('___\uD8A3')); -assertEquals('"___\\ud8a4"', JSON.stringify('___\uD8A4')); -assertEquals('"___\\ud8a5"', JSON.stringify('___\uD8A5')); -assertEquals('"___\\ud8a6"', JSON.stringify('___\uD8A6')); -assertEquals('"___\\ud8a7"', JSON.stringify('___\uD8A7')); -assertEquals('"___\\ud8a8"', JSON.stringify('___\uD8A8')); -assertEquals('"___\\ud8a9"', JSON.stringify('___\uD8A9')); -assertEquals('"___\\ud8aa"', JSON.stringify('___\uD8AA')); -assertEquals('"___\\ud8ab"', JSON.stringify('___\uD8AB')); -assertEquals('"___\\ud8ac"', JSON.stringify('___\uD8AC')); -assertEquals('"___\\ud8ad"', JSON.stringify('___\uD8AD')); -assertEquals('"___\\ud8ae"', JSON.stringify('___\uD8AE')); -assertEquals('"___\\ud8af"', JSON.stringify('___\uD8AF')); -assertEquals('"___\\ud8b0"', JSON.stringify('___\uD8B0')); -assertEquals('"___\\ud8b1"', JSON.stringify('___\uD8B1')); -assertEquals('"___\\ud8b2"', JSON.stringify('___\uD8B2')); -assertEquals('"___\\ud8b3"', JSON.stringify('___\uD8B3')); -assertEquals('"___\\ud8b4"', JSON.stringify('___\uD8B4')); -assertEquals('"___\\ud8b5"', JSON.stringify('___\uD8B5')); -assertEquals('"___\\ud8b6"', JSON.stringify('___\uD8B6')); -assertEquals('"___\\ud8b7"', JSON.stringify('___\uD8B7')); -assertEquals('"___\\ud8b8"', JSON.stringify('___\uD8B8')); -assertEquals('"___\\ud8b9"', JSON.stringify('___\uD8B9')); -assertEquals('"___\\ud8ba"', JSON.stringify('___\uD8BA')); -assertEquals('"___\\ud8bb"', JSON.stringify('___\uD8BB')); -assertEquals('"___\\ud8bc"', JSON.stringify('___\uD8BC')); -assertEquals('"___\\ud8bd"', JSON.stringify('___\uD8BD')); -assertEquals('"___\\ud8be"', JSON.stringify('___\uD8BE')); -assertEquals('"___\\ud8bf"', JSON.stringify('___\uD8BF')); -assertEquals('"___\\ud8c0"', JSON.stringify('___\uD8C0')); -assertEquals('"___\\ud8c1"', JSON.stringify('___\uD8C1')); -assertEquals('"___\\ud8c2"', JSON.stringify('___\uD8C2')); -assertEquals('"___\\ud8c3"', JSON.stringify('___\uD8C3')); -assertEquals('"___\\ud8c4"', JSON.stringify('___\uD8C4')); -assertEquals('"___\\ud8c5"', JSON.stringify('___\uD8C5')); -assertEquals('"___\\ud8c6"', JSON.stringify('___\uD8C6')); -assertEquals('"___\\ud8c7"', JSON.stringify('___\uD8C7')); -assertEquals('"___\\ud8c8"', JSON.stringify('___\uD8C8')); -assertEquals('"___\\ud8c9"', JSON.stringify('___\uD8C9')); -assertEquals('"___\\ud8ca"', JSON.stringify('___\uD8CA')); -assertEquals('"___\\ud8cb"', JSON.stringify('___\uD8CB')); -assertEquals('"___\\ud8cc"', JSON.stringify('___\uD8CC')); -assertEquals('"___\\ud8cd"', JSON.stringify('___\uD8CD')); -assertEquals('"___\\ud8ce"', JSON.stringify('___\uD8CE')); -assertEquals('"___\\ud8cf"', JSON.stringify('___\uD8CF')); -assertEquals('"___\\ud8d0"', JSON.stringify('___\uD8D0')); -assertEquals('"___\\ud8d1"', JSON.stringify('___\uD8D1')); -assertEquals('"___\\ud8d2"', JSON.stringify('___\uD8D2')); -assertEquals('"___\\ud8d3"', JSON.stringify('___\uD8D3')); -assertEquals('"___\\ud8d4"', JSON.stringify('___\uD8D4')); -assertEquals('"___\\ud8d5"', JSON.stringify('___\uD8D5')); -assertEquals('"___\\ud8d6"', JSON.stringify('___\uD8D6')); -assertEquals('"___\\ud8d7"', JSON.stringify('___\uD8D7')); -assertEquals('"___\\ud8d8"', JSON.stringify('___\uD8D8')); -assertEquals('"___\\ud8d9"', JSON.stringify('___\uD8D9')); -assertEquals('"___\\ud8da"', JSON.stringify('___\uD8DA')); -assertEquals('"___\\ud8db"', JSON.stringify('___\uD8DB')); -assertEquals('"___\\ud8dc"', JSON.stringify('___\uD8DC')); -assertEquals('"___\\ud8dd"', JSON.stringify('___\uD8DD')); -assertEquals('"___\\ud8de"', JSON.stringify('___\uD8DE')); -assertEquals('"___\\ud8df"', JSON.stringify('___\uD8DF')); -assertEquals('"___\\ud8e0"', JSON.stringify('___\uD8E0')); -assertEquals('"___\\ud8e1"', JSON.stringify('___\uD8E1')); -assertEquals('"___\\ud8e2"', JSON.stringify('___\uD8E2')); -assertEquals('"___\\ud8e3"', JSON.stringify('___\uD8E3')); -assertEquals('"___\\ud8e4"', JSON.stringify('___\uD8E4')); -assertEquals('"___\\ud8e5"', JSON.stringify('___\uD8E5')); -assertEquals('"___\\ud8e6"', JSON.stringify('___\uD8E6')); -assertEquals('"___\\ud8e7"', JSON.stringify('___\uD8E7')); -assertEquals('"___\\ud8e8"', JSON.stringify('___\uD8E8')); -assertEquals('"___\\ud8e9"', JSON.stringify('___\uD8E9')); -assertEquals('"___\\ud8ea"', JSON.stringify('___\uD8EA')); -assertEquals('"___\\ud8eb"', JSON.stringify('___\uD8EB')); -assertEquals('"___\\ud8ec"', JSON.stringify('___\uD8EC')); -assertEquals('"___\\ud8ed"', JSON.stringify('___\uD8ED')); -assertEquals('"___\\ud8ee"', JSON.stringify('___\uD8EE')); -assertEquals('"___\\ud8ef"', JSON.stringify('___\uD8EF')); -assertEquals('"___\\ud8f0"', JSON.stringify('___\uD8F0')); -assertEquals('"___\\ud8f1"', JSON.stringify('___\uD8F1')); -assertEquals('"___\\ud8f2"', JSON.stringify('___\uD8F2')); -assertEquals('"___\\ud8f3"', JSON.stringify('___\uD8F3')); -assertEquals('"___\\ud8f4"', JSON.stringify('___\uD8F4')); -assertEquals('"___\\ud8f5"', JSON.stringify('___\uD8F5')); -assertEquals('"___\\ud8f6"', JSON.stringify('___\uD8F6')); -assertEquals('"___\\ud8f7"', JSON.stringify('___\uD8F7')); -assertEquals('"___\\ud8f8"', JSON.stringify('___\uD8F8')); -assertEquals('"___\\ud8f9"', JSON.stringify('___\uD8F9')); -assertEquals('"___\\ud8fa"', JSON.stringify('___\uD8FA')); -assertEquals('"___\\ud8fb"', JSON.stringify('___\uD8FB')); -assertEquals('"___\\ud8fc"', JSON.stringify('___\uD8FC')); -assertEquals('"___\\ud8fd"', JSON.stringify('___\uD8FD')); -assertEquals('"___\\ud8fe"', JSON.stringify('___\uD8FE')); -assertEquals('"___\\ud8ff"', JSON.stringify('___\uD8FF')); -assertEquals('"___\\ud900"', JSON.stringify('___\uD900')); -assertEquals('"___\\ud901"', JSON.stringify('___\uD901')); -assertEquals('"___\\ud902"', JSON.stringify('___\uD902')); -assertEquals('"___\\ud903"', JSON.stringify('___\uD903')); -assertEquals('"___\\ud904"', JSON.stringify('___\uD904')); -assertEquals('"___\\ud905"', JSON.stringify('___\uD905')); -assertEquals('"___\\ud906"', JSON.stringify('___\uD906')); -assertEquals('"___\\ud907"', JSON.stringify('___\uD907')); -assertEquals('"___\\ud908"', JSON.stringify('___\uD908')); -assertEquals('"___\\ud909"', JSON.stringify('___\uD909')); -assertEquals('"___\\ud90a"', JSON.stringify('___\uD90A')); -assertEquals('"___\\ud90b"', JSON.stringify('___\uD90B')); -assertEquals('"___\\ud90c"', JSON.stringify('___\uD90C')); -assertEquals('"___\\ud90d"', JSON.stringify('___\uD90D')); -assertEquals('"___\\ud90e"', JSON.stringify('___\uD90E')); -assertEquals('"___\\ud90f"', JSON.stringify('___\uD90F')); -assertEquals('"___\\ud910"', JSON.stringify('___\uD910')); -assertEquals('"___\\ud911"', JSON.stringify('___\uD911')); -assertEquals('"___\\ud912"', JSON.stringify('___\uD912')); -assertEquals('"___\\ud913"', JSON.stringify('___\uD913')); -assertEquals('"___\\ud914"', JSON.stringify('___\uD914')); -assertEquals('"___\\ud915"', JSON.stringify('___\uD915')); -assertEquals('"___\\ud916"', JSON.stringify('___\uD916')); -assertEquals('"___\\ud917"', JSON.stringify('___\uD917')); -assertEquals('"___\\ud918"', JSON.stringify('___\uD918')); -assertEquals('"___\\ud919"', JSON.stringify('___\uD919')); -assertEquals('"___\\ud91a"', JSON.stringify('___\uD91A')); -assertEquals('"___\\ud91b"', JSON.stringify('___\uD91B')); -assertEquals('"___\\ud91c"', JSON.stringify('___\uD91C')); -assertEquals('"___\\ud91d"', JSON.stringify('___\uD91D')); -assertEquals('"___\\ud91e"', JSON.stringify('___\uD91E')); -assertEquals('"___\\ud91f"', JSON.stringify('___\uD91F')); -assertEquals('"___\\ud920"', JSON.stringify('___\uD920')); -assertEquals('"___\\ud921"', JSON.stringify('___\uD921')); -assertEquals('"___\\ud922"', JSON.stringify('___\uD922')); -assertEquals('"___\\ud923"', JSON.stringify('___\uD923')); -assertEquals('"___\\ud924"', JSON.stringify('___\uD924')); -assertEquals('"___\\ud925"', JSON.stringify('___\uD925')); -assertEquals('"___\\ud926"', JSON.stringify('___\uD926')); -assertEquals('"___\\ud927"', JSON.stringify('___\uD927')); -assertEquals('"___\\ud928"', JSON.stringify('___\uD928')); -assertEquals('"___\\ud929"', JSON.stringify('___\uD929')); -assertEquals('"___\\ud92a"', JSON.stringify('___\uD92A')); -assertEquals('"___\\ud92b"', JSON.stringify('___\uD92B')); -assertEquals('"___\\ud92c"', JSON.stringify('___\uD92C')); -assertEquals('"___\\ud92d"', JSON.stringify('___\uD92D')); -assertEquals('"___\\ud92e"', JSON.stringify('___\uD92E')); -assertEquals('"___\\ud92f"', JSON.stringify('___\uD92F')); -assertEquals('"___\\ud930"', JSON.stringify('___\uD930')); -assertEquals('"___\\ud931"', JSON.stringify('___\uD931')); -assertEquals('"___\\ud932"', JSON.stringify('___\uD932')); -assertEquals('"___\\ud933"', JSON.stringify('___\uD933')); -assertEquals('"___\\ud934"', JSON.stringify('___\uD934')); -assertEquals('"___\\ud935"', JSON.stringify('___\uD935')); -assertEquals('"___\\ud936"', JSON.stringify('___\uD936')); -assertEquals('"___\\ud937"', JSON.stringify('___\uD937')); -assertEquals('"___\\ud938"', JSON.stringify('___\uD938')); -assertEquals('"___\\ud939"', JSON.stringify('___\uD939')); -assertEquals('"___\\ud93a"', JSON.stringify('___\uD93A')); -assertEquals('"___\\ud93b"', JSON.stringify('___\uD93B')); -assertEquals('"___\\ud93c"', JSON.stringify('___\uD93C')); -assertEquals('"___\\ud93d"', JSON.stringify('___\uD93D')); -assertEquals('"___\\ud93e"', JSON.stringify('___\uD93E')); -assertEquals('"___\\ud93f"', JSON.stringify('___\uD93F')); -assertEquals('"___\\ud940"', JSON.stringify('___\uD940')); -assertEquals('"___\\ud941"', JSON.stringify('___\uD941')); -assertEquals('"___\\ud942"', JSON.stringify('___\uD942')); -assertEquals('"___\\ud943"', JSON.stringify('___\uD943')); -assertEquals('"___\\ud944"', JSON.stringify('___\uD944')); -assertEquals('"___\\ud945"', JSON.stringify('___\uD945')); -assertEquals('"___\\ud946"', JSON.stringify('___\uD946')); -assertEquals('"___\\ud947"', JSON.stringify('___\uD947')); -assertEquals('"___\\ud948"', JSON.stringify('___\uD948')); -assertEquals('"___\\ud949"', JSON.stringify('___\uD949')); -assertEquals('"___\\ud94a"', JSON.stringify('___\uD94A')); -assertEquals('"___\\ud94b"', JSON.stringify('___\uD94B')); -assertEquals('"___\\ud94c"', JSON.stringify('___\uD94C')); -assertEquals('"___\\ud94d"', JSON.stringify('___\uD94D')); -assertEquals('"___\\ud94e"', JSON.stringify('___\uD94E')); -assertEquals('"___\\ud94f"', JSON.stringify('___\uD94F')); -assertEquals('"___\\ud950"', JSON.stringify('___\uD950')); -assertEquals('"___\\ud951"', JSON.stringify('___\uD951')); -assertEquals('"___\\ud952"', JSON.stringify('___\uD952')); -assertEquals('"___\\ud953"', JSON.stringify('___\uD953')); -assertEquals('"___\\ud954"', JSON.stringify('___\uD954')); -assertEquals('"___\\ud955"', JSON.stringify('___\uD955')); -assertEquals('"___\\ud956"', JSON.stringify('___\uD956')); -assertEquals('"___\\ud957"', JSON.stringify('___\uD957')); -assertEquals('"___\\ud958"', JSON.stringify('___\uD958')); -assertEquals('"___\\ud959"', JSON.stringify('___\uD959')); -assertEquals('"___\\ud95a"', JSON.stringify('___\uD95A')); -assertEquals('"___\\ud95b"', JSON.stringify('___\uD95B')); -assertEquals('"___\\ud95c"', JSON.stringify('___\uD95C')); -assertEquals('"___\\ud95d"', JSON.stringify('___\uD95D')); -assertEquals('"___\\ud95e"', JSON.stringify('___\uD95E')); -assertEquals('"___\\ud95f"', JSON.stringify('___\uD95F')); -assertEquals('"___\\ud960"', JSON.stringify('___\uD960')); -assertEquals('"___\\ud961"', JSON.stringify('___\uD961')); -assertEquals('"___\\ud962"', JSON.stringify('___\uD962')); -assertEquals('"___\\ud963"', JSON.stringify('___\uD963')); -assertEquals('"___\\ud964"', JSON.stringify('___\uD964')); -assertEquals('"___\\ud965"', JSON.stringify('___\uD965')); -assertEquals('"___\\ud966"', JSON.stringify('___\uD966')); -assertEquals('"___\\ud967"', JSON.stringify('___\uD967')); -assertEquals('"___\\ud968"', JSON.stringify('___\uD968')); -assertEquals('"___\\ud969"', JSON.stringify('___\uD969')); -assertEquals('"___\\ud96a"', JSON.stringify('___\uD96A')); -assertEquals('"___\\ud96b"', JSON.stringify('___\uD96B')); -assertEquals('"___\\ud96c"', JSON.stringify('___\uD96C')); -assertEquals('"___\\ud96d"', JSON.stringify('___\uD96D')); -assertEquals('"___\\ud96e"', JSON.stringify('___\uD96E')); -assertEquals('"___\\ud96f"', JSON.stringify('___\uD96F')); -assertEquals('"___\\ud970"', JSON.stringify('___\uD970')); -assertEquals('"___\\ud971"', JSON.stringify('___\uD971')); -assertEquals('"___\\ud972"', JSON.stringify('___\uD972')); -assertEquals('"___\\ud973"', JSON.stringify('___\uD973')); -assertEquals('"___\\ud974"', JSON.stringify('___\uD974')); -assertEquals('"___\\ud975"', JSON.stringify('___\uD975')); -assertEquals('"___\\ud976"', JSON.stringify('___\uD976')); -assertEquals('"___\\ud977"', JSON.stringify('___\uD977')); -assertEquals('"___\\ud978"', JSON.stringify('___\uD978')); -assertEquals('"___\\ud979"', JSON.stringify('___\uD979')); -assertEquals('"___\\ud97a"', JSON.stringify('___\uD97A')); -assertEquals('"___\\ud97b"', JSON.stringify('___\uD97B')); -assertEquals('"___\\ud97c"', JSON.stringify('___\uD97C')); -assertEquals('"___\\ud97d"', JSON.stringify('___\uD97D')); -assertEquals('"___\\ud97e"', JSON.stringify('___\uD97E')); -assertEquals('"___\\ud97f"', JSON.stringify('___\uD97F')); -assertEquals('"___\\ud980"', JSON.stringify('___\uD980')); -assertEquals('"___\\ud981"', JSON.stringify('___\uD981')); -assertEquals('"___\\ud982"', JSON.stringify('___\uD982')); -assertEquals('"___\\ud983"', JSON.stringify('___\uD983')); -assertEquals('"___\\ud984"', JSON.stringify('___\uD984')); -assertEquals('"___\\ud985"', JSON.stringify('___\uD985')); -assertEquals('"___\\ud986"', JSON.stringify('___\uD986')); -assertEquals('"___\\ud987"', JSON.stringify('___\uD987')); -assertEquals('"___\\ud988"', JSON.stringify('___\uD988')); -assertEquals('"___\\ud989"', JSON.stringify('___\uD989')); -assertEquals('"___\\ud98a"', JSON.stringify('___\uD98A')); -assertEquals('"___\\ud98b"', JSON.stringify('___\uD98B')); -assertEquals('"___\\ud98c"', JSON.stringify('___\uD98C')); -assertEquals('"___\\ud98d"', JSON.stringify('___\uD98D')); -assertEquals('"___\\ud98e"', JSON.stringify('___\uD98E')); -assertEquals('"___\\ud98f"', JSON.stringify('___\uD98F')); -assertEquals('"___\\ud990"', JSON.stringify('___\uD990')); -assertEquals('"___\\ud991"', JSON.stringify('___\uD991')); -assertEquals('"___\\ud992"', JSON.stringify('___\uD992')); -assertEquals('"___\\ud993"', JSON.stringify('___\uD993')); -assertEquals('"___\\ud994"', JSON.stringify('___\uD994')); -assertEquals('"___\\ud995"', JSON.stringify('___\uD995')); -assertEquals('"___\\ud996"', JSON.stringify('___\uD996')); -assertEquals('"___\\ud997"', JSON.stringify('___\uD997')); -assertEquals('"___\\ud998"', JSON.stringify('___\uD998')); -assertEquals('"___\\ud999"', JSON.stringify('___\uD999')); -assertEquals('"___\\ud99a"', JSON.stringify('___\uD99A')); -assertEquals('"___\\ud99b"', JSON.stringify('___\uD99B')); -assertEquals('"___\\ud99c"', JSON.stringify('___\uD99C')); -assertEquals('"___\\ud99d"', JSON.stringify('___\uD99D')); -assertEquals('"___\\ud99e"', JSON.stringify('___\uD99E')); -assertEquals('"___\\ud99f"', JSON.stringify('___\uD99F')); -assertEquals('"___\\ud9a0"', JSON.stringify('___\uD9A0')); -assertEquals('"___\\ud9a1"', JSON.stringify('___\uD9A1')); -assertEquals('"___\\ud9a2"', JSON.stringify('___\uD9A2')); -assertEquals('"___\\ud9a3"', JSON.stringify('___\uD9A3')); -assertEquals('"___\\ud9a4"', JSON.stringify('___\uD9A4')); -assertEquals('"___\\ud9a5"', JSON.stringify('___\uD9A5')); -assertEquals('"___\\ud9a6"', JSON.stringify('___\uD9A6')); -assertEquals('"___\\ud9a7"', JSON.stringify('___\uD9A7')); -assertEquals('"___\\ud9a8"', JSON.stringify('___\uD9A8')); -assertEquals('"___\\ud9a9"', JSON.stringify('___\uD9A9')); -assertEquals('"___\\ud9aa"', JSON.stringify('___\uD9AA')); -assertEquals('"___\\ud9ab"', JSON.stringify('___\uD9AB')); -assertEquals('"___\\ud9ac"', JSON.stringify('___\uD9AC')); -assertEquals('"___\\ud9ad"', JSON.stringify('___\uD9AD')); -assertEquals('"___\\ud9ae"', JSON.stringify('___\uD9AE')); -assertEquals('"___\\ud9af"', JSON.stringify('___\uD9AF')); -assertEquals('"___\\ud9b0"', JSON.stringify('___\uD9B0')); -assertEquals('"___\\ud9b1"', JSON.stringify('___\uD9B1')); -assertEquals('"___\\ud9b2"', JSON.stringify('___\uD9B2')); -assertEquals('"___\\ud9b3"', JSON.stringify('___\uD9B3')); -assertEquals('"___\\ud9b4"', JSON.stringify('___\uD9B4')); -assertEquals('"___\\ud9b5"', JSON.stringify('___\uD9B5')); -assertEquals('"___\\ud9b6"', JSON.stringify('___\uD9B6')); -assertEquals('"___\\ud9b7"', JSON.stringify('___\uD9B7')); -assertEquals('"___\\ud9b8"', JSON.stringify('___\uD9B8')); -assertEquals('"___\\ud9b9"', JSON.stringify('___\uD9B9')); -assertEquals('"___\\ud9ba"', JSON.stringify('___\uD9BA')); -assertEquals('"___\\ud9bb"', JSON.stringify('___\uD9BB')); -assertEquals('"___\\ud9bc"', JSON.stringify('___\uD9BC')); -assertEquals('"___\\ud9bd"', JSON.stringify('___\uD9BD')); -assertEquals('"___\\ud9be"', JSON.stringify('___\uD9BE')); -assertEquals('"___\\ud9bf"', JSON.stringify('___\uD9BF')); -assertEquals('"___\\ud9c0"', JSON.stringify('___\uD9C0')); -assertEquals('"___\\ud9c1"', JSON.stringify('___\uD9C1')); -assertEquals('"___\\ud9c2"', JSON.stringify('___\uD9C2')); -assertEquals('"___\\ud9c3"', JSON.stringify('___\uD9C3')); -assertEquals('"___\\ud9c4"', JSON.stringify('___\uD9C4')); -assertEquals('"___\\ud9c5"', JSON.stringify('___\uD9C5')); -assertEquals('"___\\ud9c6"', JSON.stringify('___\uD9C6')); -assertEquals('"___\\ud9c7"', JSON.stringify('___\uD9C7')); -assertEquals('"___\\ud9c8"', JSON.stringify('___\uD9C8')); -assertEquals('"___\\ud9c9"', JSON.stringify('___\uD9C9')); -assertEquals('"___\\ud9ca"', JSON.stringify('___\uD9CA')); -assertEquals('"___\\ud9cb"', JSON.stringify('___\uD9CB')); -assertEquals('"___\\ud9cc"', JSON.stringify('___\uD9CC')); -assertEquals('"___\\ud9cd"', JSON.stringify('___\uD9CD')); -assertEquals('"___\\ud9ce"', JSON.stringify('___\uD9CE')); -assertEquals('"___\\ud9cf"', JSON.stringify('___\uD9CF')); -assertEquals('"___\\ud9d0"', JSON.stringify('___\uD9D0')); -assertEquals('"___\\ud9d1"', JSON.stringify('___\uD9D1')); -assertEquals('"___\\ud9d2"', JSON.stringify('___\uD9D2')); -assertEquals('"___\\ud9d3"', JSON.stringify('___\uD9D3')); -assertEquals('"___\\ud9d4"', JSON.stringify('___\uD9D4')); -assertEquals('"___\\ud9d5"', JSON.stringify('___\uD9D5')); -assertEquals('"___\\ud9d6"', JSON.stringify('___\uD9D6')); -assertEquals('"___\\ud9d7"', JSON.stringify('___\uD9D7')); -assertEquals('"___\\ud9d8"', JSON.stringify('___\uD9D8')); -assertEquals('"___\\ud9d9"', JSON.stringify('___\uD9D9')); -assertEquals('"___\\ud9da"', JSON.stringify('___\uD9DA')); -assertEquals('"___\\ud9db"', JSON.stringify('___\uD9DB')); -assertEquals('"___\\ud9dc"', JSON.stringify('___\uD9DC')); -assertEquals('"___\\ud9dd"', JSON.stringify('___\uD9DD')); -assertEquals('"___\\ud9de"', JSON.stringify('___\uD9DE')); -assertEquals('"___\\ud9df"', JSON.stringify('___\uD9DF')); -assertEquals('"___\\ud9e0"', JSON.stringify('___\uD9E0')); -assertEquals('"___\\ud9e1"', JSON.stringify('___\uD9E1')); -assertEquals('"___\\ud9e2"', JSON.stringify('___\uD9E2')); -assertEquals('"___\\ud9e3"', JSON.stringify('___\uD9E3')); -assertEquals('"___\\ud9e4"', JSON.stringify('___\uD9E4')); -assertEquals('"___\\ud9e5"', JSON.stringify('___\uD9E5')); -assertEquals('"___\\ud9e6"', JSON.stringify('___\uD9E6')); -assertEquals('"___\\ud9e7"', JSON.stringify('___\uD9E7')); -assertEquals('"___\\ud9e8"', JSON.stringify('___\uD9E8')); -assertEquals('"___\\ud9e9"', JSON.stringify('___\uD9E9')); -assertEquals('"___\\ud9ea"', JSON.stringify('___\uD9EA')); -assertEquals('"___\\ud9eb"', JSON.stringify('___\uD9EB')); -assertEquals('"___\\ud9ec"', JSON.stringify('___\uD9EC')); -assertEquals('"___\\ud9ed"', JSON.stringify('___\uD9ED')); -assertEquals('"___\\ud9ee"', JSON.stringify('___\uD9EE')); -assertEquals('"___\\ud9ef"', JSON.stringify('___\uD9EF')); -assertEquals('"___\\ud9f0"', JSON.stringify('___\uD9F0')); -assertEquals('"___\\ud9f1"', JSON.stringify('___\uD9F1')); -assertEquals('"___\\ud9f2"', JSON.stringify('___\uD9F2')); -assertEquals('"___\\ud9f3"', JSON.stringify('___\uD9F3')); -assertEquals('"___\\ud9f4"', JSON.stringify('___\uD9F4')); -assertEquals('"___\\ud9f5"', JSON.stringify('___\uD9F5')); -assertEquals('"___\\ud9f6"', JSON.stringify('___\uD9F6')); -assertEquals('"___\\ud9f7"', JSON.stringify('___\uD9F7')); -assertEquals('"___\\ud9f8"', JSON.stringify('___\uD9F8')); -assertEquals('"___\\ud9f9"', JSON.stringify('___\uD9F9')); -assertEquals('"___\\ud9fa"', JSON.stringify('___\uD9FA')); -assertEquals('"___\\ud9fb"', JSON.stringify('___\uD9FB')); -assertEquals('"___\\ud9fc"', JSON.stringify('___\uD9FC')); -assertEquals('"___\\ud9fd"', JSON.stringify('___\uD9FD')); -assertEquals('"___\\ud9fe"', JSON.stringify('___\uD9FE')); -assertEquals('"___\\ud9ff"', JSON.stringify('___\uD9FF')); -assertEquals('"___\\uda00"', JSON.stringify('___\uDA00')); -assertEquals('"___\\uda01"', JSON.stringify('___\uDA01')); -assertEquals('"___\\uda02"', JSON.stringify('___\uDA02')); -assertEquals('"___\\uda03"', JSON.stringify('___\uDA03')); -assertEquals('"___\\uda04"', JSON.stringify('___\uDA04')); -assertEquals('"___\\uda05"', JSON.stringify('___\uDA05')); -assertEquals('"___\\uda06"', JSON.stringify('___\uDA06')); -assertEquals('"___\\uda07"', JSON.stringify('___\uDA07')); -assertEquals('"___\\uda08"', JSON.stringify('___\uDA08')); -assertEquals('"___\\uda09"', JSON.stringify('___\uDA09')); -assertEquals('"___\\uda0a"', JSON.stringify('___\uDA0A')); -assertEquals('"___\\uda0b"', JSON.stringify('___\uDA0B')); -assertEquals('"___\\uda0c"', JSON.stringify('___\uDA0C')); -assertEquals('"___\\uda0d"', JSON.stringify('___\uDA0D')); -assertEquals('"___\\uda0e"', JSON.stringify('___\uDA0E')); -assertEquals('"___\\uda0f"', JSON.stringify('___\uDA0F')); -assertEquals('"___\\uda10"', JSON.stringify('___\uDA10')); -assertEquals('"___\\uda11"', JSON.stringify('___\uDA11')); -assertEquals('"___\\uda12"', JSON.stringify('___\uDA12')); -assertEquals('"___\\uda13"', JSON.stringify('___\uDA13')); -assertEquals('"___\\uda14"', JSON.stringify('___\uDA14')); -assertEquals('"___\\uda15"', JSON.stringify('___\uDA15')); -assertEquals('"___\\uda16"', JSON.stringify('___\uDA16')); -assertEquals('"___\\uda17"', JSON.stringify('___\uDA17')); -assertEquals('"___\\uda18"', JSON.stringify('___\uDA18')); -assertEquals('"___\\uda19"', JSON.stringify('___\uDA19')); -assertEquals('"___\\uda1a"', JSON.stringify('___\uDA1A')); -assertEquals('"___\\uda1b"', JSON.stringify('___\uDA1B')); -assertEquals('"___\\uda1c"', JSON.stringify('___\uDA1C')); -assertEquals('"___\\uda1d"', JSON.stringify('___\uDA1D')); -assertEquals('"___\\uda1e"', JSON.stringify('___\uDA1E')); -assertEquals('"___\\uda1f"', JSON.stringify('___\uDA1F')); -assertEquals('"___\\uda20"', JSON.stringify('___\uDA20')); -assertEquals('"___\\uda21"', JSON.stringify('___\uDA21')); -assertEquals('"___\\uda22"', JSON.stringify('___\uDA22')); -assertEquals('"___\\uda23"', JSON.stringify('___\uDA23')); -assertEquals('"___\\uda24"', JSON.stringify('___\uDA24')); -assertEquals('"___\\uda25"', JSON.stringify('___\uDA25')); -assertEquals('"___\\uda26"', JSON.stringify('___\uDA26')); -assertEquals('"___\\uda27"', JSON.stringify('___\uDA27')); -assertEquals('"___\\uda28"', JSON.stringify('___\uDA28')); -assertEquals('"___\\uda29"', JSON.stringify('___\uDA29')); -assertEquals('"___\\uda2a"', JSON.stringify('___\uDA2A')); -assertEquals('"___\\uda2b"', JSON.stringify('___\uDA2B')); -assertEquals('"___\\uda2c"', JSON.stringify('___\uDA2C')); -assertEquals('"___\\uda2d"', JSON.stringify('___\uDA2D')); -assertEquals('"___\\uda2e"', JSON.stringify('___\uDA2E')); -assertEquals('"___\\uda2f"', JSON.stringify('___\uDA2F')); -assertEquals('"___\\uda30"', JSON.stringify('___\uDA30')); -assertEquals('"___\\uda31"', JSON.stringify('___\uDA31')); -assertEquals('"___\\uda32"', JSON.stringify('___\uDA32')); -assertEquals('"___\\uda33"', JSON.stringify('___\uDA33')); -assertEquals('"___\\uda34"', JSON.stringify('___\uDA34')); -assertEquals('"___\\uda35"', JSON.stringify('___\uDA35')); -assertEquals('"___\\uda36"', JSON.stringify('___\uDA36')); -assertEquals('"___\\uda37"', JSON.stringify('___\uDA37')); -assertEquals('"___\\uda38"', JSON.stringify('___\uDA38')); -assertEquals('"___\\uda39"', JSON.stringify('___\uDA39')); -assertEquals('"___\\uda3a"', JSON.stringify('___\uDA3A')); -assertEquals('"___\\uda3b"', JSON.stringify('___\uDA3B')); -assertEquals('"___\\uda3c"', JSON.stringify('___\uDA3C')); -assertEquals('"___\\uda3d"', JSON.stringify('___\uDA3D')); -assertEquals('"___\\uda3e"', JSON.stringify('___\uDA3E')); -assertEquals('"___\\uda3f"', JSON.stringify('___\uDA3F')); -assertEquals('"___\\uda40"', JSON.stringify('___\uDA40')); -assertEquals('"___\\uda41"', JSON.stringify('___\uDA41')); -assertEquals('"___\\uda42"', JSON.stringify('___\uDA42')); -assertEquals('"___\\uda43"', JSON.stringify('___\uDA43')); -assertEquals('"___\\uda44"', JSON.stringify('___\uDA44')); -assertEquals('"___\\uda45"', JSON.stringify('___\uDA45')); -assertEquals('"___\\uda46"', JSON.stringify('___\uDA46')); -assertEquals('"___\\uda47"', JSON.stringify('___\uDA47')); -assertEquals('"___\\uda48"', JSON.stringify('___\uDA48')); -assertEquals('"___\\uda49"', JSON.stringify('___\uDA49')); -assertEquals('"___\\uda4a"', JSON.stringify('___\uDA4A')); -assertEquals('"___\\uda4b"', JSON.stringify('___\uDA4B')); -assertEquals('"___\\uda4c"', JSON.stringify('___\uDA4C')); -assertEquals('"___\\uda4d"', JSON.stringify('___\uDA4D')); -assertEquals('"___\\uda4e"', JSON.stringify('___\uDA4E')); -assertEquals('"___\\uda4f"', JSON.stringify('___\uDA4F')); -assertEquals('"___\\uda50"', JSON.stringify('___\uDA50')); -assertEquals('"___\\uda51"', JSON.stringify('___\uDA51')); -assertEquals('"___\\uda52"', JSON.stringify('___\uDA52')); -assertEquals('"___\\uda53"', JSON.stringify('___\uDA53')); -assertEquals('"___\\uda54"', JSON.stringify('___\uDA54')); -assertEquals('"___\\uda55"', JSON.stringify('___\uDA55')); -assertEquals('"___\\uda56"', JSON.stringify('___\uDA56')); -assertEquals('"___\\uda57"', JSON.stringify('___\uDA57')); -assertEquals('"___\\uda58"', JSON.stringify('___\uDA58')); -assertEquals('"___\\uda59"', JSON.stringify('___\uDA59')); -assertEquals('"___\\uda5a"', JSON.stringify('___\uDA5A')); -assertEquals('"___\\uda5b"', JSON.stringify('___\uDA5B')); -assertEquals('"___\\uda5c"', JSON.stringify('___\uDA5C')); -assertEquals('"___\\uda5d"', JSON.stringify('___\uDA5D')); -assertEquals('"___\\uda5e"', JSON.stringify('___\uDA5E')); -assertEquals('"___\\uda5f"', JSON.stringify('___\uDA5F')); -assertEquals('"___\\uda60"', JSON.stringify('___\uDA60')); -assertEquals('"___\\uda61"', JSON.stringify('___\uDA61')); -assertEquals('"___\\uda62"', JSON.stringify('___\uDA62')); -assertEquals('"___\\uda63"', JSON.stringify('___\uDA63')); -assertEquals('"___\\uda64"', JSON.stringify('___\uDA64')); -assertEquals('"___\\uda65"', JSON.stringify('___\uDA65')); -assertEquals('"___\\uda66"', JSON.stringify('___\uDA66')); -assertEquals('"___\\uda67"', JSON.stringify('___\uDA67')); -assertEquals('"___\\uda68"', JSON.stringify('___\uDA68')); -assertEquals('"___\\uda69"', JSON.stringify('___\uDA69')); -assertEquals('"___\\uda6a"', JSON.stringify('___\uDA6A')); -assertEquals('"___\\uda6b"', JSON.stringify('___\uDA6B')); -assertEquals('"___\\uda6c"', JSON.stringify('___\uDA6C')); -assertEquals('"___\\uda6d"', JSON.stringify('___\uDA6D')); -assertEquals('"___\\uda6e"', JSON.stringify('___\uDA6E')); -assertEquals('"___\\uda6f"', JSON.stringify('___\uDA6F')); -assertEquals('"___\\uda70"', JSON.stringify('___\uDA70')); -assertEquals('"___\\uda71"', JSON.stringify('___\uDA71')); -assertEquals('"___\\uda72"', JSON.stringify('___\uDA72')); -assertEquals('"___\\uda73"', JSON.stringify('___\uDA73')); -assertEquals('"___\\uda74"', JSON.stringify('___\uDA74')); -assertEquals('"___\\uda75"', JSON.stringify('___\uDA75')); -assertEquals('"___\\uda76"', JSON.stringify('___\uDA76')); -assertEquals('"___\\uda77"', JSON.stringify('___\uDA77')); -assertEquals('"___\\uda78"', JSON.stringify('___\uDA78')); -assertEquals('"___\\uda79"', JSON.stringify('___\uDA79')); -assertEquals('"___\\uda7a"', JSON.stringify('___\uDA7A')); -assertEquals('"___\\uda7b"', JSON.stringify('___\uDA7B')); -assertEquals('"___\\uda7c"', JSON.stringify('___\uDA7C')); -assertEquals('"___\\uda7d"', JSON.stringify('___\uDA7D')); -assertEquals('"___\\uda7e"', JSON.stringify('___\uDA7E')); -assertEquals('"___\\uda7f"', JSON.stringify('___\uDA7F')); -assertEquals('"___\\uda80"', JSON.stringify('___\uDA80')); -assertEquals('"___\\uda81"', JSON.stringify('___\uDA81')); -assertEquals('"___\\uda82"', JSON.stringify('___\uDA82')); -assertEquals('"___\\uda83"', JSON.stringify('___\uDA83')); -assertEquals('"___\\uda84"', JSON.stringify('___\uDA84')); -assertEquals('"___\\uda85"', JSON.stringify('___\uDA85')); -assertEquals('"___\\uda86"', JSON.stringify('___\uDA86')); -assertEquals('"___\\uda87"', JSON.stringify('___\uDA87')); -assertEquals('"___\\uda88"', JSON.stringify('___\uDA88')); -assertEquals('"___\\uda89"', JSON.stringify('___\uDA89')); -assertEquals('"___\\uda8a"', JSON.stringify('___\uDA8A')); -assertEquals('"___\\uda8b"', JSON.stringify('___\uDA8B')); -assertEquals('"___\\uda8c"', JSON.stringify('___\uDA8C')); -assertEquals('"___\\uda8d"', JSON.stringify('___\uDA8D')); -assertEquals('"___\\uda8e"', JSON.stringify('___\uDA8E')); -assertEquals('"___\\uda8f"', JSON.stringify('___\uDA8F')); -assertEquals('"___\\uda90"', JSON.stringify('___\uDA90')); -assertEquals('"___\\uda91"', JSON.stringify('___\uDA91')); -assertEquals('"___\\uda92"', JSON.stringify('___\uDA92')); -assertEquals('"___\\uda93"', JSON.stringify('___\uDA93')); -assertEquals('"___\\uda94"', JSON.stringify('___\uDA94')); -assertEquals('"___\\uda95"', JSON.stringify('___\uDA95')); -assertEquals('"___\\uda96"', JSON.stringify('___\uDA96')); -assertEquals('"___\\uda97"', JSON.stringify('___\uDA97')); -assertEquals('"___\\uda98"', JSON.stringify('___\uDA98')); -assertEquals('"___\\uda99"', JSON.stringify('___\uDA99')); -assertEquals('"___\\uda9a"', JSON.stringify('___\uDA9A')); -assertEquals('"___\\uda9b"', JSON.stringify('___\uDA9B')); -assertEquals('"___\\uda9c"', JSON.stringify('___\uDA9C')); -assertEquals('"___\\uda9d"', JSON.stringify('___\uDA9D')); -assertEquals('"___\\uda9e"', JSON.stringify('___\uDA9E')); -assertEquals('"___\\uda9f"', JSON.stringify('___\uDA9F')); -assertEquals('"___\\udaa0"', JSON.stringify('___\uDAA0')); -assertEquals('"___\\udaa1"', JSON.stringify('___\uDAA1')); -assertEquals('"___\\udaa2"', JSON.stringify('___\uDAA2')); -assertEquals('"___\\udaa3"', JSON.stringify('___\uDAA3')); -assertEquals('"___\\udaa4"', JSON.stringify('___\uDAA4')); -assertEquals('"___\\udaa5"', JSON.stringify('___\uDAA5')); -assertEquals('"___\\udaa6"', JSON.stringify('___\uDAA6')); -assertEquals('"___\\udaa7"', JSON.stringify('___\uDAA7')); -assertEquals('"___\\udaa8"', JSON.stringify('___\uDAA8')); -assertEquals('"___\\udaa9"', JSON.stringify('___\uDAA9')); -assertEquals('"___\\udaaa"', JSON.stringify('___\uDAAA')); -assertEquals('"___\\udaab"', JSON.stringify('___\uDAAB')); -assertEquals('"___\\udaac"', JSON.stringify('___\uDAAC')); -assertEquals('"___\\udaad"', JSON.stringify('___\uDAAD')); -assertEquals('"___\\udaae"', JSON.stringify('___\uDAAE')); -assertEquals('"___\\udaaf"', JSON.stringify('___\uDAAF')); -assertEquals('"___\\udab0"', JSON.stringify('___\uDAB0')); -assertEquals('"___\\udab1"', JSON.stringify('___\uDAB1')); -assertEquals('"___\\udab2"', JSON.stringify('___\uDAB2')); -assertEquals('"___\\udab3"', JSON.stringify('___\uDAB3')); -assertEquals('"___\\udab4"', JSON.stringify('___\uDAB4')); -assertEquals('"___\\udab5"', JSON.stringify('___\uDAB5')); -assertEquals('"___\\udab6"', JSON.stringify('___\uDAB6')); -assertEquals('"___\\udab7"', JSON.stringify('___\uDAB7')); -assertEquals('"___\\udab8"', JSON.stringify('___\uDAB8')); -assertEquals('"___\\udab9"', JSON.stringify('___\uDAB9')); -assertEquals('"___\\udaba"', JSON.stringify('___\uDABA')); -assertEquals('"___\\udabb"', JSON.stringify('___\uDABB')); -assertEquals('"___\\udabc"', JSON.stringify('___\uDABC')); -assertEquals('"___\\udabd"', JSON.stringify('___\uDABD')); -assertEquals('"___\\udabe"', JSON.stringify('___\uDABE')); -assertEquals('"___\\udabf"', JSON.stringify('___\uDABF')); -assertEquals('"___\\udac0"', JSON.stringify('___\uDAC0')); -assertEquals('"___\\udac1"', JSON.stringify('___\uDAC1')); -assertEquals('"___\\udac2"', JSON.stringify('___\uDAC2')); -assertEquals('"___\\udac3"', JSON.stringify('___\uDAC3')); -assertEquals('"___\\udac4"', JSON.stringify('___\uDAC4')); -assertEquals('"___\\udac5"', JSON.stringify('___\uDAC5')); -assertEquals('"___\\udac6"', JSON.stringify('___\uDAC6')); -assertEquals('"___\\udac7"', JSON.stringify('___\uDAC7')); -assertEquals('"___\\udac8"', JSON.stringify('___\uDAC8')); -assertEquals('"___\\udac9"', JSON.stringify('___\uDAC9')); -assertEquals('"___\\udaca"', JSON.stringify('___\uDACA')); -assertEquals('"___\\udacb"', JSON.stringify('___\uDACB')); -assertEquals('"___\\udacc"', JSON.stringify('___\uDACC')); -assertEquals('"___\\udacd"', JSON.stringify('___\uDACD')); -assertEquals('"___\\udace"', JSON.stringify('___\uDACE')); -assertEquals('"___\\udacf"', JSON.stringify('___\uDACF')); -assertEquals('"___\\udad0"', JSON.stringify('___\uDAD0')); -assertEquals('"___\\udad1"', JSON.stringify('___\uDAD1')); -assertEquals('"___\\udad2"', JSON.stringify('___\uDAD2')); -assertEquals('"___\\udad3"', JSON.stringify('___\uDAD3')); -assertEquals('"___\\udad4"', JSON.stringify('___\uDAD4')); -assertEquals('"___\\udad5"', JSON.stringify('___\uDAD5')); -assertEquals('"___\\udad6"', JSON.stringify('___\uDAD6')); -assertEquals('"___\\udad7"', JSON.stringify('___\uDAD7')); -assertEquals('"___\\udad8"', JSON.stringify('___\uDAD8')); -assertEquals('"___\\udad9"', JSON.stringify('___\uDAD9')); -assertEquals('"___\\udada"', JSON.stringify('___\uDADA')); -assertEquals('"___\\udadb"', JSON.stringify('___\uDADB')); -assertEquals('"___\\udadc"', JSON.stringify('___\uDADC')); -assertEquals('"___\\udadd"', JSON.stringify('___\uDADD')); -assertEquals('"___\\udade"', JSON.stringify('___\uDADE')); -assertEquals('"___\\udadf"', JSON.stringify('___\uDADF')); -assertEquals('"___\\udae0"', JSON.stringify('___\uDAE0')); -assertEquals('"___\\udae1"', JSON.stringify('___\uDAE1')); -assertEquals('"___\\udae2"', JSON.stringify('___\uDAE2')); -assertEquals('"___\\udae3"', JSON.stringify('___\uDAE3')); -assertEquals('"___\\udae4"', JSON.stringify('___\uDAE4')); -assertEquals('"___\\udae5"', JSON.stringify('___\uDAE5')); -assertEquals('"___\\udae6"', JSON.stringify('___\uDAE6')); -assertEquals('"___\\udae7"', JSON.stringify('___\uDAE7')); -assertEquals('"___\\udae8"', JSON.stringify('___\uDAE8')); -assertEquals('"___\\udae9"', JSON.stringify('___\uDAE9')); -assertEquals('"___\\udaea"', JSON.stringify('___\uDAEA')); -assertEquals('"___\\udaeb"', JSON.stringify('___\uDAEB')); -assertEquals('"___\\udaec"', JSON.stringify('___\uDAEC')); -assertEquals('"___\\udaed"', JSON.stringify('___\uDAED')); -assertEquals('"___\\udaee"', JSON.stringify('___\uDAEE')); -assertEquals('"___\\udaef"', JSON.stringify('___\uDAEF')); -assertEquals('"___\\udaf0"', JSON.stringify('___\uDAF0')); -assertEquals('"___\\udaf1"', JSON.stringify('___\uDAF1')); -assertEquals('"___\\udaf2"', JSON.stringify('___\uDAF2')); -assertEquals('"___\\udaf3"', JSON.stringify('___\uDAF3')); -assertEquals('"___\\udaf4"', JSON.stringify('___\uDAF4')); -assertEquals('"___\\udaf5"', JSON.stringify('___\uDAF5')); -assertEquals('"___\\udaf6"', JSON.stringify('___\uDAF6')); -assertEquals('"___\\udaf7"', JSON.stringify('___\uDAF7')); -assertEquals('"___\\udaf8"', JSON.stringify('___\uDAF8')); -assertEquals('"___\\udaf9"', JSON.stringify('___\uDAF9')); -assertEquals('"___\\udafa"', JSON.stringify('___\uDAFA')); -assertEquals('"___\\udafb"', JSON.stringify('___\uDAFB')); -assertEquals('"___\\udafc"', JSON.stringify('___\uDAFC')); -assertEquals('"___\\udafd"', JSON.stringify('___\uDAFD')); -assertEquals('"___\\udafe"', JSON.stringify('___\uDAFE')); -assertEquals('"___\\udaff"', JSON.stringify('___\uDAFF')); -assertEquals('"___\\udb00"', JSON.stringify('___\uDB00')); -assertEquals('"___\\udb01"', JSON.stringify('___\uDB01')); -assertEquals('"___\\udb02"', JSON.stringify('___\uDB02')); -assertEquals('"___\\udb03"', JSON.stringify('___\uDB03')); -assertEquals('"___\\udb04"', JSON.stringify('___\uDB04')); -assertEquals('"___\\udb05"', JSON.stringify('___\uDB05')); -assertEquals('"___\\udb06"', JSON.stringify('___\uDB06')); -assertEquals('"___\\udb07"', JSON.stringify('___\uDB07')); -assertEquals('"___\\udb08"', JSON.stringify('___\uDB08')); -assertEquals('"___\\udb09"', JSON.stringify('___\uDB09')); -assertEquals('"___\\udb0a"', JSON.stringify('___\uDB0A')); -assertEquals('"___\\udb0b"', JSON.stringify('___\uDB0B')); -assertEquals('"___\\udb0c"', JSON.stringify('___\uDB0C')); -assertEquals('"___\\udb0d"', JSON.stringify('___\uDB0D')); -assertEquals('"___\\udb0e"', JSON.stringify('___\uDB0E')); -assertEquals('"___\\udb0f"', JSON.stringify('___\uDB0F')); -assertEquals('"___\\udb10"', JSON.stringify('___\uDB10')); -assertEquals('"___\\udb11"', JSON.stringify('___\uDB11')); -assertEquals('"___\\udb12"', JSON.stringify('___\uDB12')); -assertEquals('"___\\udb13"', JSON.stringify('___\uDB13')); -assertEquals('"___\\udb14"', JSON.stringify('___\uDB14')); -assertEquals('"___\\udb15"', JSON.stringify('___\uDB15')); -assertEquals('"___\\udb16"', JSON.stringify('___\uDB16')); -assertEquals('"___\\udb17"', JSON.stringify('___\uDB17')); -assertEquals('"___\\udb18"', JSON.stringify('___\uDB18')); -assertEquals('"___\\udb19"', JSON.stringify('___\uDB19')); -assertEquals('"___\\udb1a"', JSON.stringify('___\uDB1A')); -assertEquals('"___\\udb1b"', JSON.stringify('___\uDB1B')); -assertEquals('"___\\udb1c"', JSON.stringify('___\uDB1C')); -assertEquals('"___\\udb1d"', JSON.stringify('___\uDB1D')); -assertEquals('"___\\udb1e"', JSON.stringify('___\uDB1E')); -assertEquals('"___\\udb1f"', JSON.stringify('___\uDB1F')); -assertEquals('"___\\udb20"', JSON.stringify('___\uDB20')); -assertEquals('"___\\udb21"', JSON.stringify('___\uDB21')); -assertEquals('"___\\udb22"', JSON.stringify('___\uDB22')); -assertEquals('"___\\udb23"', JSON.stringify('___\uDB23')); -assertEquals('"___\\udb24"', JSON.stringify('___\uDB24')); -assertEquals('"___\\udb25"', JSON.stringify('___\uDB25')); -assertEquals('"___\\udb26"', JSON.stringify('___\uDB26')); -assertEquals('"___\\udb27"', JSON.stringify('___\uDB27')); -assertEquals('"___\\udb28"', JSON.stringify('___\uDB28')); -assertEquals('"___\\udb29"', JSON.stringify('___\uDB29')); -assertEquals('"___\\udb2a"', JSON.stringify('___\uDB2A')); -assertEquals('"___\\udb2b"', JSON.stringify('___\uDB2B')); -assertEquals('"___\\udb2c"', JSON.stringify('___\uDB2C')); -assertEquals('"___\\udb2d"', JSON.stringify('___\uDB2D')); -assertEquals('"___\\udb2e"', JSON.stringify('___\uDB2E')); -assertEquals('"___\\udb2f"', JSON.stringify('___\uDB2F')); -assertEquals('"___\\udb30"', JSON.stringify('___\uDB30')); -assertEquals('"___\\udb31"', JSON.stringify('___\uDB31')); -assertEquals('"___\\udb32"', JSON.stringify('___\uDB32')); -assertEquals('"___\\udb33"', JSON.stringify('___\uDB33')); -assertEquals('"___\\udb34"', JSON.stringify('___\uDB34')); -assertEquals('"___\\udb35"', JSON.stringify('___\uDB35')); -assertEquals('"___\\udb36"', JSON.stringify('___\uDB36')); -assertEquals('"___\\udb37"', JSON.stringify('___\uDB37')); -assertEquals('"___\\udb38"', JSON.stringify('___\uDB38')); -assertEquals('"___\\udb39"', JSON.stringify('___\uDB39')); -assertEquals('"___\\udb3a"', JSON.stringify('___\uDB3A')); -assertEquals('"___\\udb3b"', JSON.stringify('___\uDB3B')); -assertEquals('"___\\udb3c"', JSON.stringify('___\uDB3C')); -assertEquals('"___\\udb3d"', JSON.stringify('___\uDB3D')); -assertEquals('"___\\udb3e"', JSON.stringify('___\uDB3E')); -assertEquals('"___\\udb3f"', JSON.stringify('___\uDB3F')); -assertEquals('"___\\udb40"', JSON.stringify('___\uDB40')); -assertEquals('"___\\udb41"', JSON.stringify('___\uDB41')); -assertEquals('"___\\udb42"', JSON.stringify('___\uDB42')); -assertEquals('"___\\udb43"', JSON.stringify('___\uDB43')); -assertEquals('"___\\udb44"', JSON.stringify('___\uDB44')); -assertEquals('"___\\udb45"', JSON.stringify('___\uDB45')); -assertEquals('"___\\udb46"', JSON.stringify('___\uDB46')); -assertEquals('"___\\udb47"', JSON.stringify('___\uDB47')); -assertEquals('"___\\udb48"', JSON.stringify('___\uDB48')); -assertEquals('"___\\udb49"', JSON.stringify('___\uDB49')); -assertEquals('"___\\udb4a"', JSON.stringify('___\uDB4A')); -assertEquals('"___\\udb4b"', JSON.stringify('___\uDB4B')); -assertEquals('"___\\udb4c"', JSON.stringify('___\uDB4C')); -assertEquals('"___\\udb4d"', JSON.stringify('___\uDB4D')); -assertEquals('"___\\udb4e"', JSON.stringify('___\uDB4E')); -assertEquals('"___\\udb4f"', JSON.stringify('___\uDB4F')); -assertEquals('"___\\udb50"', JSON.stringify('___\uDB50')); -assertEquals('"___\\udb51"', JSON.stringify('___\uDB51')); -assertEquals('"___\\udb52"', JSON.stringify('___\uDB52')); -assertEquals('"___\\udb53"', JSON.stringify('___\uDB53')); -assertEquals('"___\\udb54"', JSON.stringify('___\uDB54')); -assertEquals('"___\\udb55"', JSON.stringify('___\uDB55')); -assertEquals('"___\\udb56"', JSON.stringify('___\uDB56')); -assertEquals('"___\\udb57"', JSON.stringify('___\uDB57')); -assertEquals('"___\\udb58"', JSON.stringify('___\uDB58')); -assertEquals('"___\\udb59"', JSON.stringify('___\uDB59')); -assertEquals('"___\\udb5a"', JSON.stringify('___\uDB5A')); -assertEquals('"___\\udb5b"', JSON.stringify('___\uDB5B')); -assertEquals('"___\\udb5c"', JSON.stringify('___\uDB5C')); -assertEquals('"___\\udb5d"', JSON.stringify('___\uDB5D')); -assertEquals('"___\\udb5e"', JSON.stringify('___\uDB5E')); -assertEquals('"___\\udb5f"', JSON.stringify('___\uDB5F')); -assertEquals('"___\\udb60"', JSON.stringify('___\uDB60')); -assertEquals('"___\\udb61"', JSON.stringify('___\uDB61')); -assertEquals('"___\\udb62"', JSON.stringify('___\uDB62')); -assertEquals('"___\\udb63"', JSON.stringify('___\uDB63')); -assertEquals('"___\\udb64"', JSON.stringify('___\uDB64')); -assertEquals('"___\\udb65"', JSON.stringify('___\uDB65')); -assertEquals('"___\\udb66"', JSON.stringify('___\uDB66')); -assertEquals('"___\\udb67"', JSON.stringify('___\uDB67')); -assertEquals('"___\\udb68"', JSON.stringify('___\uDB68')); -assertEquals('"___\\udb69"', JSON.stringify('___\uDB69')); -assertEquals('"___\\udb6a"', JSON.stringify('___\uDB6A')); -assertEquals('"___\\udb6b"', JSON.stringify('___\uDB6B')); -assertEquals('"___\\udb6c"', JSON.stringify('___\uDB6C')); -assertEquals('"___\\udb6d"', JSON.stringify('___\uDB6D')); -assertEquals('"___\\udb6e"', JSON.stringify('___\uDB6E')); -assertEquals('"___\\udb6f"', JSON.stringify('___\uDB6F')); -assertEquals('"___\\udb70"', JSON.stringify('___\uDB70')); -assertEquals('"___\\udb71"', JSON.stringify('___\uDB71')); -assertEquals('"___\\udb72"', JSON.stringify('___\uDB72')); -assertEquals('"___\\udb73"', JSON.stringify('___\uDB73')); -assertEquals('"___\\udb74"', JSON.stringify('___\uDB74')); -assertEquals('"___\\udb75"', JSON.stringify('___\uDB75')); -assertEquals('"___\\udb76"', JSON.stringify('___\uDB76')); -assertEquals('"___\\udb77"', JSON.stringify('___\uDB77')); -assertEquals('"___\\udb78"', JSON.stringify('___\uDB78')); -assertEquals('"___\\udb79"', JSON.stringify('___\uDB79')); -assertEquals('"___\\udb7a"', JSON.stringify('___\uDB7A')); -assertEquals('"___\\udb7b"', JSON.stringify('___\uDB7B')); -assertEquals('"___\\udb7c"', JSON.stringify('___\uDB7C')); -assertEquals('"___\\udb7d"', JSON.stringify('___\uDB7D')); -assertEquals('"___\\udb7e"', JSON.stringify('___\uDB7E')); -assertEquals('"___\\udb7f"', JSON.stringify('___\uDB7F')); -assertEquals('"___\\udb80"', JSON.stringify('___\uDB80')); -assertEquals('"___\\udb81"', JSON.stringify('___\uDB81')); -assertEquals('"___\\udb82"', JSON.stringify('___\uDB82')); -assertEquals('"___\\udb83"', JSON.stringify('___\uDB83')); -assertEquals('"___\\udb84"', JSON.stringify('___\uDB84')); -assertEquals('"___\\udb85"', JSON.stringify('___\uDB85')); -assertEquals('"___\\udb86"', JSON.stringify('___\uDB86')); -assertEquals('"___\\udb87"', JSON.stringify('___\uDB87')); -assertEquals('"___\\udb88"', JSON.stringify('___\uDB88')); -assertEquals('"___\\udb89"', JSON.stringify('___\uDB89')); -assertEquals('"___\\udb8a"', JSON.stringify('___\uDB8A')); -assertEquals('"___\\udb8b"', JSON.stringify('___\uDB8B')); -assertEquals('"___\\udb8c"', JSON.stringify('___\uDB8C')); -assertEquals('"___\\udb8d"', JSON.stringify('___\uDB8D')); -assertEquals('"___\\udb8e"', JSON.stringify('___\uDB8E')); -assertEquals('"___\\udb8f"', JSON.stringify('___\uDB8F')); -assertEquals('"___\\udb90"', JSON.stringify('___\uDB90')); -assertEquals('"___\\udb91"', JSON.stringify('___\uDB91')); -assertEquals('"___\\udb92"', JSON.stringify('___\uDB92')); -assertEquals('"___\\udb93"', JSON.stringify('___\uDB93')); -assertEquals('"___\\udb94"', JSON.stringify('___\uDB94')); -assertEquals('"___\\udb95"', JSON.stringify('___\uDB95')); -assertEquals('"___\\udb96"', JSON.stringify('___\uDB96')); -assertEquals('"___\\udb97"', JSON.stringify('___\uDB97')); -assertEquals('"___\\udb98"', JSON.stringify('___\uDB98')); -assertEquals('"___\\udb99"', JSON.stringify('___\uDB99')); -assertEquals('"___\\udb9a"', JSON.stringify('___\uDB9A')); -assertEquals('"___\\udb9b"', JSON.stringify('___\uDB9B')); -assertEquals('"___\\udb9c"', JSON.stringify('___\uDB9C')); -assertEquals('"___\\udb9d"', JSON.stringify('___\uDB9D')); -assertEquals('"___\\udb9e"', JSON.stringify('___\uDB9E')); -assertEquals('"___\\udb9f"', JSON.stringify('___\uDB9F')); -assertEquals('"___\\udba0"', JSON.stringify('___\uDBA0')); -assertEquals('"___\\udba1"', JSON.stringify('___\uDBA1')); -assertEquals('"___\\udba2"', JSON.stringify('___\uDBA2')); -assertEquals('"___\\udba3"', JSON.stringify('___\uDBA3')); -assertEquals('"___\\udba4"', JSON.stringify('___\uDBA4')); -assertEquals('"___\\udba5"', JSON.stringify('___\uDBA5')); -assertEquals('"___\\udba6"', JSON.stringify('___\uDBA6')); -assertEquals('"___\\udba7"', JSON.stringify('___\uDBA7')); -assertEquals('"___\\udba8"', JSON.stringify('___\uDBA8')); -assertEquals('"___\\udba9"', JSON.stringify('___\uDBA9')); -assertEquals('"___\\udbaa"', JSON.stringify('___\uDBAA')); -assertEquals('"___\\udbab"', JSON.stringify('___\uDBAB')); -assertEquals('"___\\udbac"', JSON.stringify('___\uDBAC')); -assertEquals('"___\\udbad"', JSON.stringify('___\uDBAD')); -assertEquals('"___\\udbae"', JSON.stringify('___\uDBAE')); -assertEquals('"___\\udbaf"', JSON.stringify('___\uDBAF')); -assertEquals('"___\\udbb0"', JSON.stringify('___\uDBB0')); -assertEquals('"___\\udbb1"', JSON.stringify('___\uDBB1')); -assertEquals('"___\\udbb2"', JSON.stringify('___\uDBB2')); -assertEquals('"___\\udbb3"', JSON.stringify('___\uDBB3')); -assertEquals('"___\\udbb4"', JSON.stringify('___\uDBB4')); -assertEquals('"___\\udbb5"', JSON.stringify('___\uDBB5')); -assertEquals('"___\\udbb6"', JSON.stringify('___\uDBB6')); -assertEquals('"___\\udbb7"', JSON.stringify('___\uDBB7')); -assertEquals('"___\\udbb8"', JSON.stringify('___\uDBB8')); -assertEquals('"___\\udbb9"', JSON.stringify('___\uDBB9')); -assertEquals('"___\\udbba"', JSON.stringify('___\uDBBA')); -assertEquals('"___\\udbbb"', JSON.stringify('___\uDBBB')); -assertEquals('"___\\udbbc"', JSON.stringify('___\uDBBC')); -assertEquals('"___\\udbbd"', JSON.stringify('___\uDBBD')); -assertEquals('"___\\udbbe"', JSON.stringify('___\uDBBE')); -assertEquals('"___\\udbbf"', JSON.stringify('___\uDBBF')); -assertEquals('"___\\udbc0"', JSON.stringify('___\uDBC0')); -assertEquals('"___\\udbc1"', JSON.stringify('___\uDBC1')); -assertEquals('"___\\udbc2"', JSON.stringify('___\uDBC2')); -assertEquals('"___\\udbc3"', JSON.stringify('___\uDBC3')); -assertEquals('"___\\udbc4"', JSON.stringify('___\uDBC4')); -assertEquals('"___\\udbc5"', JSON.stringify('___\uDBC5')); -assertEquals('"___\\udbc6"', JSON.stringify('___\uDBC6')); -assertEquals('"___\\udbc7"', JSON.stringify('___\uDBC7')); -assertEquals('"___\\udbc8"', JSON.stringify('___\uDBC8')); -assertEquals('"___\\udbc9"', JSON.stringify('___\uDBC9')); -assertEquals('"___\\udbca"', JSON.stringify('___\uDBCA')); -assertEquals('"___\\udbcb"', JSON.stringify('___\uDBCB')); -assertEquals('"___\\udbcc"', JSON.stringify('___\uDBCC')); -assertEquals('"___\\udbcd"', JSON.stringify('___\uDBCD')); -assertEquals('"___\\udbce"', JSON.stringify('___\uDBCE')); -assertEquals('"___\\udbcf"', JSON.stringify('___\uDBCF')); -assertEquals('"___\\udbd0"', JSON.stringify('___\uDBD0')); -assertEquals('"___\\udbd1"', JSON.stringify('___\uDBD1')); -assertEquals('"___\\udbd2"', JSON.stringify('___\uDBD2')); -assertEquals('"___\\udbd3"', JSON.stringify('___\uDBD3')); -assertEquals('"___\\udbd4"', JSON.stringify('___\uDBD4')); -assertEquals('"___\\udbd5"', JSON.stringify('___\uDBD5')); -assertEquals('"___\\udbd6"', JSON.stringify('___\uDBD6')); -assertEquals('"___\\udbd7"', JSON.stringify('___\uDBD7')); -assertEquals('"___\\udbd8"', JSON.stringify('___\uDBD8')); -assertEquals('"___\\udbd9"', JSON.stringify('___\uDBD9')); -assertEquals('"___\\udbda"', JSON.stringify('___\uDBDA')); -assertEquals('"___\\udbdb"', JSON.stringify('___\uDBDB')); -assertEquals('"___\\udbdc"', JSON.stringify('___\uDBDC')); -assertEquals('"___\\udbdd"', JSON.stringify('___\uDBDD')); -assertEquals('"___\\udbde"', JSON.stringify('___\uDBDE')); -assertEquals('"___\\udbdf"', JSON.stringify('___\uDBDF')); -assertEquals('"___\\udbe0"', JSON.stringify('___\uDBE0')); -assertEquals('"___\\udbe1"', JSON.stringify('___\uDBE1')); -assertEquals('"___\\udbe2"', JSON.stringify('___\uDBE2')); -assertEquals('"___\\udbe3"', JSON.stringify('___\uDBE3')); -assertEquals('"___\\udbe4"', JSON.stringify('___\uDBE4')); -assertEquals('"___\\udbe5"', JSON.stringify('___\uDBE5')); -assertEquals('"___\\udbe6"', JSON.stringify('___\uDBE6')); -assertEquals('"___\\udbe7"', JSON.stringify('___\uDBE7')); -assertEquals('"___\\udbe8"', JSON.stringify('___\uDBE8')); -assertEquals('"___\\udbe9"', JSON.stringify('___\uDBE9')); -assertEquals('"___\\udbea"', JSON.stringify('___\uDBEA')); -assertEquals('"___\\udbeb"', JSON.stringify('___\uDBEB')); -assertEquals('"___\\udbec"', JSON.stringify('___\uDBEC')); -assertEquals('"___\\udbed"', JSON.stringify('___\uDBED')); -assertEquals('"___\\udbee"', JSON.stringify('___\uDBEE')); -assertEquals('"___\\udbef"', JSON.stringify('___\uDBEF')); -assertEquals('"___\\udbf0"', JSON.stringify('___\uDBF0')); -assertEquals('"___\\udbf1"', JSON.stringify('___\uDBF1')); -assertEquals('"___\\udbf2"', JSON.stringify('___\uDBF2')); -assertEquals('"___\\udbf3"', JSON.stringify('___\uDBF3')); -assertEquals('"___\\udbf4"', JSON.stringify('___\uDBF4')); -assertEquals('"___\\udbf5"', JSON.stringify('___\uDBF5')); -assertEquals('"___\\udbf6"', JSON.stringify('___\uDBF6')); -assertEquals('"___\\udbf7"', JSON.stringify('___\uDBF7')); -assertEquals('"___\\udbf8"', JSON.stringify('___\uDBF8')); -assertEquals('"___\\udbf9"', JSON.stringify('___\uDBF9')); -assertEquals('"___\\udbfa"', JSON.stringify('___\uDBFA')); -assertEquals('"___\\udbfb"', JSON.stringify('___\uDBFB')); -assertEquals('"___\\udbfc"', JSON.stringify('___\uDBFC')); -assertEquals('"___\\udbfd"', JSON.stringify('___\uDBFD')); -assertEquals('"___\\udbfe"', JSON.stringify('___\uDBFE')); -assertEquals('"___\\udbff"', JSON.stringify('___\uDBFF')); -assertEquals('"___\\udc00"', JSON.stringify('___\uDC00')); -assertEquals('"___\\udc01"', JSON.stringify('___\uDC01')); -assertEquals('"___\\udc02"', JSON.stringify('___\uDC02')); -assertEquals('"___\\udc03"', JSON.stringify('___\uDC03')); -assertEquals('"___\\udc04"', JSON.stringify('___\uDC04')); -assertEquals('"___\\udc05"', JSON.stringify('___\uDC05')); -assertEquals('"___\\udc06"', JSON.stringify('___\uDC06')); -assertEquals('"___\\udc07"', JSON.stringify('___\uDC07')); -assertEquals('"___\\udc08"', JSON.stringify('___\uDC08')); -assertEquals('"___\\udc09"', JSON.stringify('___\uDC09')); -assertEquals('"___\\udc0a"', JSON.stringify('___\uDC0A')); -assertEquals('"___\\udc0b"', JSON.stringify('___\uDC0B')); -assertEquals('"___\\udc0c"', JSON.stringify('___\uDC0C')); -assertEquals('"___\\udc0d"', JSON.stringify('___\uDC0D')); -assertEquals('"___\\udc0e"', JSON.stringify('___\uDC0E')); -assertEquals('"___\\udc0f"', JSON.stringify('___\uDC0F')); -assertEquals('"___\\udc10"', JSON.stringify('___\uDC10')); -assertEquals('"___\\udc11"', JSON.stringify('___\uDC11')); -assertEquals('"___\\udc12"', JSON.stringify('___\uDC12')); -assertEquals('"___\\udc13"', JSON.stringify('___\uDC13')); -assertEquals('"___\\udc14"', JSON.stringify('___\uDC14')); -assertEquals('"___\\udc15"', JSON.stringify('___\uDC15')); -assertEquals('"___\\udc16"', JSON.stringify('___\uDC16')); -assertEquals('"___\\udc17"', JSON.stringify('___\uDC17')); -assertEquals('"___\\udc18"', JSON.stringify('___\uDC18')); -assertEquals('"___\\udc19"', JSON.stringify('___\uDC19')); -assertEquals('"___\\udc1a"', JSON.stringify('___\uDC1A')); -assertEquals('"___\\udc1b"', JSON.stringify('___\uDC1B')); -assertEquals('"___\\udc1c"', JSON.stringify('___\uDC1C')); -assertEquals('"___\\udc1d"', JSON.stringify('___\uDC1D')); -assertEquals('"___\\udc1e"', JSON.stringify('___\uDC1E')); -assertEquals('"___\\udc1f"', JSON.stringify('___\uDC1F')); -assertEquals('"___\\udc20"', JSON.stringify('___\uDC20')); -assertEquals('"___\\udc21"', JSON.stringify('___\uDC21')); -assertEquals('"___\\udc22"', JSON.stringify('___\uDC22')); -assertEquals('"___\\udc23"', JSON.stringify('___\uDC23')); -assertEquals('"___\\udc24"', JSON.stringify('___\uDC24')); -assertEquals('"___\\udc25"', JSON.stringify('___\uDC25')); -assertEquals('"___\\udc26"', JSON.stringify('___\uDC26')); -assertEquals('"___\\udc27"', JSON.stringify('___\uDC27')); -assertEquals('"___\\udc28"', JSON.stringify('___\uDC28')); -assertEquals('"___\\udc29"', JSON.stringify('___\uDC29')); -assertEquals('"___\\udc2a"', JSON.stringify('___\uDC2A')); -assertEquals('"___\\udc2b"', JSON.stringify('___\uDC2B')); -assertEquals('"___\\udc2c"', JSON.stringify('___\uDC2C')); -assertEquals('"___\\udc2d"', JSON.stringify('___\uDC2D')); -assertEquals('"___\\udc2e"', JSON.stringify('___\uDC2E')); -assertEquals('"___\\udc2f"', JSON.stringify('___\uDC2F')); -assertEquals('"___\\udc30"', JSON.stringify('___\uDC30')); -assertEquals('"___\\udc31"', JSON.stringify('___\uDC31')); -assertEquals('"___\\udc32"', JSON.stringify('___\uDC32')); -assertEquals('"___\\udc33"', JSON.stringify('___\uDC33')); -assertEquals('"___\\udc34"', JSON.stringify('___\uDC34')); -assertEquals('"___\\udc35"', JSON.stringify('___\uDC35')); -assertEquals('"___\\udc36"', JSON.stringify('___\uDC36')); -assertEquals('"___\\udc37"', JSON.stringify('___\uDC37')); -assertEquals('"___\\udc38"', JSON.stringify('___\uDC38')); -assertEquals('"___\\udc39"', JSON.stringify('___\uDC39')); -assertEquals('"___\\udc3a"', JSON.stringify('___\uDC3A')); -assertEquals('"___\\udc3b"', JSON.stringify('___\uDC3B')); -assertEquals('"___\\udc3c"', JSON.stringify('___\uDC3C')); -assertEquals('"___\\udc3d"', JSON.stringify('___\uDC3D')); -assertEquals('"___\\udc3e"', JSON.stringify('___\uDC3E')); -assertEquals('"___\\udc3f"', JSON.stringify('___\uDC3F')); -assertEquals('"___\\udc40"', JSON.stringify('___\uDC40')); -assertEquals('"___\\udc41"', JSON.stringify('___\uDC41')); -assertEquals('"___\\udc42"', JSON.stringify('___\uDC42')); -assertEquals('"___\\udc43"', JSON.stringify('___\uDC43')); -assertEquals('"___\\udc44"', JSON.stringify('___\uDC44')); -assertEquals('"___\\udc45"', JSON.stringify('___\uDC45')); -assertEquals('"___\\udc46"', JSON.stringify('___\uDC46')); -assertEquals('"___\\udc47"', JSON.stringify('___\uDC47')); -assertEquals('"___\\udc48"', JSON.stringify('___\uDC48')); -assertEquals('"___\\udc49"', JSON.stringify('___\uDC49')); -assertEquals('"___\\udc4a"', JSON.stringify('___\uDC4A')); -assertEquals('"___\\udc4b"', JSON.stringify('___\uDC4B')); -assertEquals('"___\\udc4c"', JSON.stringify('___\uDC4C')); -assertEquals('"___\\udc4d"', JSON.stringify('___\uDC4D')); -assertEquals('"___\\udc4e"', JSON.stringify('___\uDC4E')); -assertEquals('"___\\udc4f"', JSON.stringify('___\uDC4F')); -assertEquals('"___\\udc50"', JSON.stringify('___\uDC50')); -assertEquals('"___\\udc51"', JSON.stringify('___\uDC51')); -assertEquals('"___\\udc52"', JSON.stringify('___\uDC52')); -assertEquals('"___\\udc53"', JSON.stringify('___\uDC53')); -assertEquals('"___\\udc54"', JSON.stringify('___\uDC54')); -assertEquals('"___\\udc55"', JSON.stringify('___\uDC55')); -assertEquals('"___\\udc56"', JSON.stringify('___\uDC56')); -assertEquals('"___\\udc57"', JSON.stringify('___\uDC57')); -assertEquals('"___\\udc58"', JSON.stringify('___\uDC58')); -assertEquals('"___\\udc59"', JSON.stringify('___\uDC59')); -assertEquals('"___\\udc5a"', JSON.stringify('___\uDC5A')); -assertEquals('"___\\udc5b"', JSON.stringify('___\uDC5B')); -assertEquals('"___\\udc5c"', JSON.stringify('___\uDC5C')); -assertEquals('"___\\udc5d"', JSON.stringify('___\uDC5D')); -assertEquals('"___\\udc5e"', JSON.stringify('___\uDC5E')); -assertEquals('"___\\udc5f"', JSON.stringify('___\uDC5F')); -assertEquals('"___\\udc60"', JSON.stringify('___\uDC60')); -assertEquals('"___\\udc61"', JSON.stringify('___\uDC61')); -assertEquals('"___\\udc62"', JSON.stringify('___\uDC62')); -assertEquals('"___\\udc63"', JSON.stringify('___\uDC63')); -assertEquals('"___\\udc64"', JSON.stringify('___\uDC64')); -assertEquals('"___\\udc65"', JSON.stringify('___\uDC65')); -assertEquals('"___\\udc66"', JSON.stringify('___\uDC66')); -assertEquals('"___\\udc67"', JSON.stringify('___\uDC67')); -assertEquals('"___\\udc68"', JSON.stringify('___\uDC68')); -assertEquals('"___\\udc69"', JSON.stringify('___\uDC69')); -assertEquals('"___\\udc6a"', JSON.stringify('___\uDC6A')); -assertEquals('"___\\udc6b"', JSON.stringify('___\uDC6B')); -assertEquals('"___\\udc6c"', JSON.stringify('___\uDC6C')); -assertEquals('"___\\udc6d"', JSON.stringify('___\uDC6D')); -assertEquals('"___\\udc6e"', JSON.stringify('___\uDC6E')); -assertEquals('"___\\udc6f"', JSON.stringify('___\uDC6F')); -assertEquals('"___\\udc70"', JSON.stringify('___\uDC70')); -assertEquals('"___\\udc71"', JSON.stringify('___\uDC71')); -assertEquals('"___\\udc72"', JSON.stringify('___\uDC72')); -assertEquals('"___\\udc73"', JSON.stringify('___\uDC73')); -assertEquals('"___\\udc74"', JSON.stringify('___\uDC74')); -assertEquals('"___\\udc75"', JSON.stringify('___\uDC75')); -assertEquals('"___\\udc76"', JSON.stringify('___\uDC76')); -assertEquals('"___\\udc77"', JSON.stringify('___\uDC77')); -assertEquals('"___\\udc78"', JSON.stringify('___\uDC78')); -assertEquals('"___\\udc79"', JSON.stringify('___\uDC79')); -assertEquals('"___\\udc7a"', JSON.stringify('___\uDC7A')); -assertEquals('"___\\udc7b"', JSON.stringify('___\uDC7B')); -assertEquals('"___\\udc7c"', JSON.stringify('___\uDC7C')); -assertEquals('"___\\udc7d"', JSON.stringify('___\uDC7D')); -assertEquals('"___\\udc7e"', JSON.stringify('___\uDC7E')); -assertEquals('"___\\udc7f"', JSON.stringify('___\uDC7F')); -assertEquals('"___\\udc80"', JSON.stringify('___\uDC80')); -assertEquals('"___\\udc81"', JSON.stringify('___\uDC81')); -assertEquals('"___\\udc82"', JSON.stringify('___\uDC82')); -assertEquals('"___\\udc83"', JSON.stringify('___\uDC83')); -assertEquals('"___\\udc84"', JSON.stringify('___\uDC84')); -assertEquals('"___\\udc85"', JSON.stringify('___\uDC85')); -assertEquals('"___\\udc86"', JSON.stringify('___\uDC86')); -assertEquals('"___\\udc87"', JSON.stringify('___\uDC87')); -assertEquals('"___\\udc88"', JSON.stringify('___\uDC88')); -assertEquals('"___\\udc89"', JSON.stringify('___\uDC89')); -assertEquals('"___\\udc8a"', JSON.stringify('___\uDC8A')); -assertEquals('"___\\udc8b"', JSON.stringify('___\uDC8B')); -assertEquals('"___\\udc8c"', JSON.stringify('___\uDC8C')); -assertEquals('"___\\udc8d"', JSON.stringify('___\uDC8D')); -assertEquals('"___\\udc8e"', JSON.stringify('___\uDC8E')); -assertEquals('"___\\udc8f"', JSON.stringify('___\uDC8F')); -assertEquals('"___\\udc90"', JSON.stringify('___\uDC90')); -assertEquals('"___\\udc91"', JSON.stringify('___\uDC91')); -assertEquals('"___\\udc92"', JSON.stringify('___\uDC92')); -assertEquals('"___\\udc93"', JSON.stringify('___\uDC93')); -assertEquals('"___\\udc94"', JSON.stringify('___\uDC94')); -assertEquals('"___\\udc95"', JSON.stringify('___\uDC95')); -assertEquals('"___\\udc96"', JSON.stringify('___\uDC96')); -assertEquals('"___\\udc97"', JSON.stringify('___\uDC97')); -assertEquals('"___\\udc98"', JSON.stringify('___\uDC98')); -assertEquals('"___\\udc99"', JSON.stringify('___\uDC99')); -assertEquals('"___\\udc9a"', JSON.stringify('___\uDC9A')); -assertEquals('"___\\udc9b"', JSON.stringify('___\uDC9B')); -assertEquals('"___\\udc9c"', JSON.stringify('___\uDC9C')); -assertEquals('"___\\udc9d"', JSON.stringify('___\uDC9D')); -assertEquals('"___\\udc9e"', JSON.stringify('___\uDC9E')); -assertEquals('"___\\udc9f"', JSON.stringify('___\uDC9F')); -assertEquals('"___\\udca0"', JSON.stringify('___\uDCA0')); -assertEquals('"___\\udca1"', JSON.stringify('___\uDCA1')); -assertEquals('"___\\udca2"', JSON.stringify('___\uDCA2')); -assertEquals('"___\\udca3"', JSON.stringify('___\uDCA3')); -assertEquals('"___\\udca4"', JSON.stringify('___\uDCA4')); -assertEquals('"___\\udca5"', JSON.stringify('___\uDCA5')); -assertEquals('"___\\udca6"', JSON.stringify('___\uDCA6')); -assertEquals('"___\\udca7"', JSON.stringify('___\uDCA7')); -assertEquals('"___\\udca8"', JSON.stringify('___\uDCA8')); -assertEquals('"___\\udca9"', JSON.stringify('___\uDCA9')); -assertEquals('"___\\udcaa"', JSON.stringify('___\uDCAA')); -assertEquals('"___\\udcab"', JSON.stringify('___\uDCAB')); -assertEquals('"___\\udcac"', JSON.stringify('___\uDCAC')); -assertEquals('"___\\udcad"', JSON.stringify('___\uDCAD')); -assertEquals('"___\\udcae"', JSON.stringify('___\uDCAE')); -assertEquals('"___\\udcaf"', JSON.stringify('___\uDCAF')); -assertEquals('"___\\udcb0"', JSON.stringify('___\uDCB0')); -assertEquals('"___\\udcb1"', JSON.stringify('___\uDCB1')); -assertEquals('"___\\udcb2"', JSON.stringify('___\uDCB2')); -assertEquals('"___\\udcb3"', JSON.stringify('___\uDCB3')); -assertEquals('"___\\udcb4"', JSON.stringify('___\uDCB4')); -assertEquals('"___\\udcb5"', JSON.stringify('___\uDCB5')); -assertEquals('"___\\udcb6"', JSON.stringify('___\uDCB6')); -assertEquals('"___\\udcb7"', JSON.stringify('___\uDCB7')); -assertEquals('"___\\udcb8"', JSON.stringify('___\uDCB8')); -assertEquals('"___\\udcb9"', JSON.stringify('___\uDCB9')); -assertEquals('"___\\udcba"', JSON.stringify('___\uDCBA')); -assertEquals('"___\\udcbb"', JSON.stringify('___\uDCBB')); -assertEquals('"___\\udcbc"', JSON.stringify('___\uDCBC')); -assertEquals('"___\\udcbd"', JSON.stringify('___\uDCBD')); -assertEquals('"___\\udcbe"', JSON.stringify('___\uDCBE')); -assertEquals('"___\\udcbf"', JSON.stringify('___\uDCBF')); -assertEquals('"___\\udcc0"', JSON.stringify('___\uDCC0')); -assertEquals('"___\\udcc1"', JSON.stringify('___\uDCC1')); -assertEquals('"___\\udcc2"', JSON.stringify('___\uDCC2')); -assertEquals('"___\\udcc3"', JSON.stringify('___\uDCC3')); -assertEquals('"___\\udcc4"', JSON.stringify('___\uDCC4')); -assertEquals('"___\\udcc5"', JSON.stringify('___\uDCC5')); -assertEquals('"___\\udcc6"', JSON.stringify('___\uDCC6')); -assertEquals('"___\\udcc7"', JSON.stringify('___\uDCC7')); -assertEquals('"___\\udcc8"', JSON.stringify('___\uDCC8')); -assertEquals('"___\\udcc9"', JSON.stringify('___\uDCC9')); -assertEquals('"___\\udcca"', JSON.stringify('___\uDCCA')); -assertEquals('"___\\udccb"', JSON.stringify('___\uDCCB')); -assertEquals('"___\\udccc"', JSON.stringify('___\uDCCC')); -assertEquals('"___\\udccd"', JSON.stringify('___\uDCCD')); -assertEquals('"___\\udcce"', JSON.stringify('___\uDCCE')); -assertEquals('"___\\udccf"', JSON.stringify('___\uDCCF')); -assertEquals('"___\\udcd0"', JSON.stringify('___\uDCD0')); -assertEquals('"___\\udcd1"', JSON.stringify('___\uDCD1')); -assertEquals('"___\\udcd2"', JSON.stringify('___\uDCD2')); -assertEquals('"___\\udcd3"', JSON.stringify('___\uDCD3')); -assertEquals('"___\\udcd4"', JSON.stringify('___\uDCD4')); -assertEquals('"___\\udcd5"', JSON.stringify('___\uDCD5')); -assertEquals('"___\\udcd6"', JSON.stringify('___\uDCD6')); -assertEquals('"___\\udcd7"', JSON.stringify('___\uDCD7')); -assertEquals('"___\\udcd8"', JSON.stringify('___\uDCD8')); -assertEquals('"___\\udcd9"', JSON.stringify('___\uDCD9')); -assertEquals('"___\\udcda"', JSON.stringify('___\uDCDA')); -assertEquals('"___\\udcdb"', JSON.stringify('___\uDCDB')); -assertEquals('"___\\udcdc"', JSON.stringify('___\uDCDC')); -assertEquals('"___\\udcdd"', JSON.stringify('___\uDCDD')); -assertEquals('"___\\udcde"', JSON.stringify('___\uDCDE')); -assertEquals('"___\\udcdf"', JSON.stringify('___\uDCDF')); -assertEquals('"___\\udce0"', JSON.stringify('___\uDCE0')); -assertEquals('"___\\udce1"', JSON.stringify('___\uDCE1')); -assertEquals('"___\\udce2"', JSON.stringify('___\uDCE2')); -assertEquals('"___\\udce3"', JSON.stringify('___\uDCE3')); -assertEquals('"___\\udce4"', JSON.stringify('___\uDCE4')); -assertEquals('"___\\udce5"', JSON.stringify('___\uDCE5')); -assertEquals('"___\\udce6"', JSON.stringify('___\uDCE6')); -assertEquals('"___\\udce7"', JSON.stringify('___\uDCE7')); -assertEquals('"___\\udce8"', JSON.stringify('___\uDCE8')); -assertEquals('"___\\udce9"', JSON.stringify('___\uDCE9')); -assertEquals('"___\\udcea"', JSON.stringify('___\uDCEA')); -assertEquals('"___\\udceb"', JSON.stringify('___\uDCEB')); -assertEquals('"___\\udcec"', JSON.stringify('___\uDCEC')); -assertEquals('"___\\udced"', JSON.stringify('___\uDCED')); -assertEquals('"___\\udcee"', JSON.stringify('___\uDCEE')); -assertEquals('"___\\udcef"', JSON.stringify('___\uDCEF')); -assertEquals('"___\\udcf0"', JSON.stringify('___\uDCF0')); -assertEquals('"___\\udcf1"', JSON.stringify('___\uDCF1')); -assertEquals('"___\\udcf2"', JSON.stringify('___\uDCF2')); -assertEquals('"___\\udcf3"', JSON.stringify('___\uDCF3')); -assertEquals('"___\\udcf4"', JSON.stringify('___\uDCF4')); -assertEquals('"___\\udcf5"', JSON.stringify('___\uDCF5')); -assertEquals('"___\\udcf6"', JSON.stringify('___\uDCF6')); -assertEquals('"___\\udcf7"', JSON.stringify('___\uDCF7')); -assertEquals('"___\\udcf8"', JSON.stringify('___\uDCF8')); -assertEquals('"___\\udcf9"', JSON.stringify('___\uDCF9')); -assertEquals('"___\\udcfa"', JSON.stringify('___\uDCFA')); -assertEquals('"___\\udcfb"', JSON.stringify('___\uDCFB')); -assertEquals('"___\\udcfc"', JSON.stringify('___\uDCFC')); -assertEquals('"___\\udcfd"', JSON.stringify('___\uDCFD')); -assertEquals('"___\\udcfe"', JSON.stringify('___\uDCFE')); -assertEquals('"___\\udcff"', JSON.stringify('___\uDCFF')); -assertEquals('"___\\udd00"', JSON.stringify('___\uDD00')); -assertEquals('"___\\udd01"', JSON.stringify('___\uDD01')); -assertEquals('"___\\udd02"', JSON.stringify('___\uDD02')); -assertEquals('"___\\udd03"', JSON.stringify('___\uDD03')); -assertEquals('"___\\udd04"', JSON.stringify('___\uDD04')); -assertEquals('"___\\udd05"', JSON.stringify('___\uDD05')); -assertEquals('"___\\udd06"', JSON.stringify('___\uDD06')); -assertEquals('"___\\udd07"', JSON.stringify('___\uDD07')); -assertEquals('"___\\udd08"', JSON.stringify('___\uDD08')); -assertEquals('"___\\udd09"', JSON.stringify('___\uDD09')); -assertEquals('"___\\udd0a"', JSON.stringify('___\uDD0A')); -assertEquals('"___\\udd0b"', JSON.stringify('___\uDD0B')); -assertEquals('"___\\udd0c"', JSON.stringify('___\uDD0C')); -assertEquals('"___\\udd0d"', JSON.stringify('___\uDD0D')); -assertEquals('"___\\udd0e"', JSON.stringify('___\uDD0E')); -assertEquals('"___\\udd0f"', JSON.stringify('___\uDD0F')); -assertEquals('"___\\udd10"', JSON.stringify('___\uDD10')); -assertEquals('"___\\udd11"', JSON.stringify('___\uDD11')); -assertEquals('"___\\udd12"', JSON.stringify('___\uDD12')); -assertEquals('"___\\udd13"', JSON.stringify('___\uDD13')); -assertEquals('"___\\udd14"', JSON.stringify('___\uDD14')); -assertEquals('"___\\udd15"', JSON.stringify('___\uDD15')); -assertEquals('"___\\udd16"', JSON.stringify('___\uDD16')); -assertEquals('"___\\udd17"', JSON.stringify('___\uDD17')); -assertEquals('"___\\udd18"', JSON.stringify('___\uDD18')); -assertEquals('"___\\udd19"', JSON.stringify('___\uDD19')); -assertEquals('"___\\udd1a"', JSON.stringify('___\uDD1A')); -assertEquals('"___\\udd1b"', JSON.stringify('___\uDD1B')); -assertEquals('"___\\udd1c"', JSON.stringify('___\uDD1C')); -assertEquals('"___\\udd1d"', JSON.stringify('___\uDD1D')); -assertEquals('"___\\udd1e"', JSON.stringify('___\uDD1E')); -assertEquals('"___\\udd1f"', JSON.stringify('___\uDD1F')); -assertEquals('"___\\udd20"', JSON.stringify('___\uDD20')); -assertEquals('"___\\udd21"', JSON.stringify('___\uDD21')); -assertEquals('"___\\udd22"', JSON.stringify('___\uDD22')); -assertEquals('"___\\udd23"', JSON.stringify('___\uDD23')); -assertEquals('"___\\udd24"', JSON.stringify('___\uDD24')); -assertEquals('"___\\udd25"', JSON.stringify('___\uDD25')); -assertEquals('"___\\udd26"', JSON.stringify('___\uDD26')); -assertEquals('"___\\udd27"', JSON.stringify('___\uDD27')); -assertEquals('"___\\udd28"', JSON.stringify('___\uDD28')); -assertEquals('"___\\udd29"', JSON.stringify('___\uDD29')); -assertEquals('"___\\udd2a"', JSON.stringify('___\uDD2A')); -assertEquals('"___\\udd2b"', JSON.stringify('___\uDD2B')); -assertEquals('"___\\udd2c"', JSON.stringify('___\uDD2C')); -assertEquals('"___\\udd2d"', JSON.stringify('___\uDD2D')); -assertEquals('"___\\udd2e"', JSON.stringify('___\uDD2E')); -assertEquals('"___\\udd2f"', JSON.stringify('___\uDD2F')); -assertEquals('"___\\udd30"', JSON.stringify('___\uDD30')); -assertEquals('"___\\udd31"', JSON.stringify('___\uDD31')); -assertEquals('"___\\udd32"', JSON.stringify('___\uDD32')); -assertEquals('"___\\udd33"', JSON.stringify('___\uDD33')); -assertEquals('"___\\udd34"', JSON.stringify('___\uDD34')); -assertEquals('"___\\udd35"', JSON.stringify('___\uDD35')); -assertEquals('"___\\udd36"', JSON.stringify('___\uDD36')); -assertEquals('"___\\udd37"', JSON.stringify('___\uDD37')); -assertEquals('"___\\udd38"', JSON.stringify('___\uDD38')); -assertEquals('"___\\udd39"', JSON.stringify('___\uDD39')); -assertEquals('"___\\udd3a"', JSON.stringify('___\uDD3A')); -assertEquals('"___\\udd3b"', JSON.stringify('___\uDD3B')); -assertEquals('"___\\udd3c"', JSON.stringify('___\uDD3C')); -assertEquals('"___\\udd3d"', JSON.stringify('___\uDD3D')); -assertEquals('"___\\udd3e"', JSON.stringify('___\uDD3E')); -assertEquals('"___\\udd3f"', JSON.stringify('___\uDD3F')); -assertEquals('"___\\udd40"', JSON.stringify('___\uDD40')); -assertEquals('"___\\udd41"', JSON.stringify('___\uDD41')); -assertEquals('"___\\udd42"', JSON.stringify('___\uDD42')); -assertEquals('"___\\udd43"', JSON.stringify('___\uDD43')); -assertEquals('"___\\udd44"', JSON.stringify('___\uDD44')); -assertEquals('"___\\udd45"', JSON.stringify('___\uDD45')); -assertEquals('"___\\udd46"', JSON.stringify('___\uDD46')); -assertEquals('"___\\udd47"', JSON.stringify('___\uDD47')); -assertEquals('"___\\udd48"', JSON.stringify('___\uDD48')); -assertEquals('"___\\udd49"', JSON.stringify('___\uDD49')); -assertEquals('"___\\udd4a"', JSON.stringify('___\uDD4A')); -assertEquals('"___\\udd4b"', JSON.stringify('___\uDD4B')); -assertEquals('"___\\udd4c"', JSON.stringify('___\uDD4C')); -assertEquals('"___\\udd4d"', JSON.stringify('___\uDD4D')); -assertEquals('"___\\udd4e"', JSON.stringify('___\uDD4E')); -assertEquals('"___\\udd4f"', JSON.stringify('___\uDD4F')); -assertEquals('"___\\udd50"', JSON.stringify('___\uDD50')); -assertEquals('"___\\udd51"', JSON.stringify('___\uDD51')); -assertEquals('"___\\udd52"', JSON.stringify('___\uDD52')); -assertEquals('"___\\udd53"', JSON.stringify('___\uDD53')); -assertEquals('"___\\udd54"', JSON.stringify('___\uDD54')); -assertEquals('"___\\udd55"', JSON.stringify('___\uDD55')); -assertEquals('"___\\udd56"', JSON.stringify('___\uDD56')); -assertEquals('"___\\udd57"', JSON.stringify('___\uDD57')); -assertEquals('"___\\udd58"', JSON.stringify('___\uDD58')); -assertEquals('"___\\udd59"', JSON.stringify('___\uDD59')); -assertEquals('"___\\udd5a"', JSON.stringify('___\uDD5A')); -assertEquals('"___\\udd5b"', JSON.stringify('___\uDD5B')); -assertEquals('"___\\udd5c"', JSON.stringify('___\uDD5C')); -assertEquals('"___\\udd5d"', JSON.stringify('___\uDD5D')); -assertEquals('"___\\udd5e"', JSON.stringify('___\uDD5E')); -assertEquals('"___\\udd5f"', JSON.stringify('___\uDD5F')); -assertEquals('"___\\udd60"', JSON.stringify('___\uDD60')); -assertEquals('"___\\udd61"', JSON.stringify('___\uDD61')); -assertEquals('"___\\udd62"', JSON.stringify('___\uDD62')); -assertEquals('"___\\udd63"', JSON.stringify('___\uDD63')); -assertEquals('"___\\udd64"', JSON.stringify('___\uDD64')); -assertEquals('"___\\udd65"', JSON.stringify('___\uDD65')); -assertEquals('"___\\udd66"', JSON.stringify('___\uDD66')); -assertEquals('"___\\udd67"', JSON.stringify('___\uDD67')); -assertEquals('"___\\udd68"', JSON.stringify('___\uDD68')); -assertEquals('"___\\udd69"', JSON.stringify('___\uDD69')); -assertEquals('"___\\udd6a"', JSON.stringify('___\uDD6A')); -assertEquals('"___\\udd6b"', JSON.stringify('___\uDD6B')); -assertEquals('"___\\udd6c"', JSON.stringify('___\uDD6C')); -assertEquals('"___\\udd6d"', JSON.stringify('___\uDD6D')); -assertEquals('"___\\udd6e"', JSON.stringify('___\uDD6E')); -assertEquals('"___\\udd6f"', JSON.stringify('___\uDD6F')); -assertEquals('"___\\udd70"', JSON.stringify('___\uDD70')); -assertEquals('"___\\udd71"', JSON.stringify('___\uDD71')); -assertEquals('"___\\udd72"', JSON.stringify('___\uDD72')); -assertEquals('"___\\udd73"', JSON.stringify('___\uDD73')); -assertEquals('"___\\udd74"', JSON.stringify('___\uDD74')); -assertEquals('"___\\udd75"', JSON.stringify('___\uDD75')); -assertEquals('"___\\udd76"', JSON.stringify('___\uDD76')); -assertEquals('"___\\udd77"', JSON.stringify('___\uDD77')); -assertEquals('"___\\udd78"', JSON.stringify('___\uDD78')); -assertEquals('"___\\udd79"', JSON.stringify('___\uDD79')); -assertEquals('"___\\udd7a"', JSON.stringify('___\uDD7A')); -assertEquals('"___\\udd7b"', JSON.stringify('___\uDD7B')); -assertEquals('"___\\udd7c"', JSON.stringify('___\uDD7C')); -assertEquals('"___\\udd7d"', JSON.stringify('___\uDD7D')); -assertEquals('"___\\udd7e"', JSON.stringify('___\uDD7E')); -assertEquals('"___\\udd7f"', JSON.stringify('___\uDD7F')); -assertEquals('"___\\udd80"', JSON.stringify('___\uDD80')); -assertEquals('"___\\udd81"', JSON.stringify('___\uDD81')); -assertEquals('"___\\udd82"', JSON.stringify('___\uDD82')); -assertEquals('"___\\udd83"', JSON.stringify('___\uDD83')); -assertEquals('"___\\udd84"', JSON.stringify('___\uDD84')); -assertEquals('"___\\udd85"', JSON.stringify('___\uDD85')); -assertEquals('"___\\udd86"', JSON.stringify('___\uDD86')); -assertEquals('"___\\udd87"', JSON.stringify('___\uDD87')); -assertEquals('"___\\udd88"', JSON.stringify('___\uDD88')); -assertEquals('"___\\udd89"', JSON.stringify('___\uDD89')); -assertEquals('"___\\udd8a"', JSON.stringify('___\uDD8A')); -assertEquals('"___\\udd8b"', JSON.stringify('___\uDD8B')); -assertEquals('"___\\udd8c"', JSON.stringify('___\uDD8C')); -assertEquals('"___\\udd8d"', JSON.stringify('___\uDD8D')); -assertEquals('"___\\udd8e"', JSON.stringify('___\uDD8E')); -assertEquals('"___\\udd8f"', JSON.stringify('___\uDD8F')); -assertEquals('"___\\udd90"', JSON.stringify('___\uDD90')); -assertEquals('"___\\udd91"', JSON.stringify('___\uDD91')); -assertEquals('"___\\udd92"', JSON.stringify('___\uDD92')); -assertEquals('"___\\udd93"', JSON.stringify('___\uDD93')); -assertEquals('"___\\udd94"', JSON.stringify('___\uDD94')); -assertEquals('"___\\udd95"', JSON.stringify('___\uDD95')); -assertEquals('"___\\udd96"', JSON.stringify('___\uDD96')); -assertEquals('"___\\udd97"', JSON.stringify('___\uDD97')); -assertEquals('"___\\udd98"', JSON.stringify('___\uDD98')); -assertEquals('"___\\udd99"', JSON.stringify('___\uDD99')); -assertEquals('"___\\udd9a"', JSON.stringify('___\uDD9A')); -assertEquals('"___\\udd9b"', JSON.stringify('___\uDD9B')); -assertEquals('"___\\udd9c"', JSON.stringify('___\uDD9C')); -assertEquals('"___\\udd9d"', JSON.stringify('___\uDD9D')); -assertEquals('"___\\udd9e"', JSON.stringify('___\uDD9E')); -assertEquals('"___\\udd9f"', JSON.stringify('___\uDD9F')); -assertEquals('"___\\udda0"', JSON.stringify('___\uDDA0')); -assertEquals('"___\\udda1"', JSON.stringify('___\uDDA1')); -assertEquals('"___\\udda2"', JSON.stringify('___\uDDA2')); -assertEquals('"___\\udda3"', JSON.stringify('___\uDDA3')); -assertEquals('"___\\udda4"', JSON.stringify('___\uDDA4')); -assertEquals('"___\\udda5"', JSON.stringify('___\uDDA5')); -assertEquals('"___\\udda6"', JSON.stringify('___\uDDA6')); -assertEquals('"___\\udda7"', JSON.stringify('___\uDDA7')); -assertEquals('"___\\udda8"', JSON.stringify('___\uDDA8')); -assertEquals('"___\\udda9"', JSON.stringify('___\uDDA9')); -assertEquals('"___\\uddaa"', JSON.stringify('___\uDDAA')); -assertEquals('"___\\uddab"', JSON.stringify('___\uDDAB')); -assertEquals('"___\\uddac"', JSON.stringify('___\uDDAC')); -assertEquals('"___\\uddad"', JSON.stringify('___\uDDAD')); -assertEquals('"___\\uddae"', JSON.stringify('___\uDDAE')); -assertEquals('"___\\uddaf"', JSON.stringify('___\uDDAF')); -assertEquals('"___\\uddb0"', JSON.stringify('___\uDDB0')); -assertEquals('"___\\uddb1"', JSON.stringify('___\uDDB1')); -assertEquals('"___\\uddb2"', JSON.stringify('___\uDDB2')); -assertEquals('"___\\uddb3"', JSON.stringify('___\uDDB3')); -assertEquals('"___\\uddb4"', JSON.stringify('___\uDDB4')); -assertEquals('"___\\uddb5"', JSON.stringify('___\uDDB5')); -assertEquals('"___\\uddb6"', JSON.stringify('___\uDDB6')); -assertEquals('"___\\uddb7"', JSON.stringify('___\uDDB7')); -assertEquals('"___\\uddb8"', JSON.stringify('___\uDDB8')); -assertEquals('"___\\uddb9"', JSON.stringify('___\uDDB9')); -assertEquals('"___\\uddba"', JSON.stringify('___\uDDBA')); -assertEquals('"___\\uddbb"', JSON.stringify('___\uDDBB')); -assertEquals('"___\\uddbc"', JSON.stringify('___\uDDBC')); -assertEquals('"___\\uddbd"', JSON.stringify('___\uDDBD')); -assertEquals('"___\\uddbe"', JSON.stringify('___\uDDBE')); -assertEquals('"___\\uddbf"', JSON.stringify('___\uDDBF')); -assertEquals('"___\\uddc0"', JSON.stringify('___\uDDC0')); -assertEquals('"___\\uddc1"', JSON.stringify('___\uDDC1')); -assertEquals('"___\\uddc2"', JSON.stringify('___\uDDC2')); -assertEquals('"___\\uddc3"', JSON.stringify('___\uDDC3')); -assertEquals('"___\\uddc4"', JSON.stringify('___\uDDC4')); -assertEquals('"___\\uddc5"', JSON.stringify('___\uDDC5')); -assertEquals('"___\\uddc6"', JSON.stringify('___\uDDC6')); -assertEquals('"___\\uddc7"', JSON.stringify('___\uDDC7')); -assertEquals('"___\\uddc8"', JSON.stringify('___\uDDC8')); -assertEquals('"___\\uddc9"', JSON.stringify('___\uDDC9')); -assertEquals('"___\\uddca"', JSON.stringify('___\uDDCA')); -assertEquals('"___\\uddcb"', JSON.stringify('___\uDDCB')); -assertEquals('"___\\uddcc"', JSON.stringify('___\uDDCC')); -assertEquals('"___\\uddcd"', JSON.stringify('___\uDDCD')); -assertEquals('"___\\uddce"', JSON.stringify('___\uDDCE')); -assertEquals('"___\\uddcf"', JSON.stringify('___\uDDCF')); -assertEquals('"___\\uddd0"', JSON.stringify('___\uDDD0')); -assertEquals('"___\\uddd1"', JSON.stringify('___\uDDD1')); -assertEquals('"___\\uddd2"', JSON.stringify('___\uDDD2')); -assertEquals('"___\\uddd3"', JSON.stringify('___\uDDD3')); -assertEquals('"___\\uddd4"', JSON.stringify('___\uDDD4')); -assertEquals('"___\\uddd5"', JSON.stringify('___\uDDD5')); -assertEquals('"___\\uddd6"', JSON.stringify('___\uDDD6')); -assertEquals('"___\\uddd7"', JSON.stringify('___\uDDD7')); -assertEquals('"___\\uddd8"', JSON.stringify('___\uDDD8')); -assertEquals('"___\\uddd9"', JSON.stringify('___\uDDD9')); -assertEquals('"___\\uddda"', JSON.stringify('___\uDDDA')); -assertEquals('"___\\udddb"', JSON.stringify('___\uDDDB')); -assertEquals('"___\\udddc"', JSON.stringify('___\uDDDC')); -assertEquals('"___\\udddd"', JSON.stringify('___\uDDDD')); -assertEquals('"___\\uddde"', JSON.stringify('___\uDDDE')); -assertEquals('"___\\udddf"', JSON.stringify('___\uDDDF')); -assertEquals('"___\\udde0"', JSON.stringify('___\uDDE0')); -assertEquals('"___\\udde1"', JSON.stringify('___\uDDE1')); -assertEquals('"___\\udde2"', JSON.stringify('___\uDDE2')); -assertEquals('"___\\udde3"', JSON.stringify('___\uDDE3')); -assertEquals('"___\\udde4"', JSON.stringify('___\uDDE4')); -assertEquals('"___\\udde5"', JSON.stringify('___\uDDE5')); -assertEquals('"___\\udde6"', JSON.stringify('___\uDDE6')); -assertEquals('"___\\udde7"', JSON.stringify('___\uDDE7')); -assertEquals('"___\\udde8"', JSON.stringify('___\uDDE8')); -assertEquals('"___\\udde9"', JSON.stringify('___\uDDE9')); -assertEquals('"___\\uddea"', JSON.stringify('___\uDDEA')); -assertEquals('"___\\uddeb"', JSON.stringify('___\uDDEB')); -assertEquals('"___\\uddec"', JSON.stringify('___\uDDEC')); -assertEquals('"___\\udded"', JSON.stringify('___\uDDED')); -assertEquals('"___\\uddee"', JSON.stringify('___\uDDEE')); -assertEquals('"___\\uddef"', JSON.stringify('___\uDDEF')); -assertEquals('"___\\uddf0"', JSON.stringify('___\uDDF0')); -assertEquals('"___\\uddf1"', JSON.stringify('___\uDDF1')); -assertEquals('"___\\uddf2"', JSON.stringify('___\uDDF2')); -assertEquals('"___\\uddf3"', JSON.stringify('___\uDDF3')); -assertEquals('"___\\uddf4"', JSON.stringify('___\uDDF4')); -assertEquals('"___\\uddf5"', JSON.stringify('___\uDDF5')); -assertEquals('"___\\uddf6"', JSON.stringify('___\uDDF6')); -assertEquals('"___\\uddf7"', JSON.stringify('___\uDDF7')); -assertEquals('"___\\uddf8"', JSON.stringify('___\uDDF8')); -assertEquals('"___\\uddf9"', JSON.stringify('___\uDDF9')); -assertEquals('"___\\uddfa"', JSON.stringify('___\uDDFA')); -assertEquals('"___\\uddfb"', JSON.stringify('___\uDDFB')); -assertEquals('"___\\uddfc"', JSON.stringify('___\uDDFC')); -assertEquals('"___\\uddfd"', JSON.stringify('___\uDDFD')); -assertEquals('"___\\uddfe"', JSON.stringify('___\uDDFE')); -assertEquals('"___\\uddff"', JSON.stringify('___\uDDFF')); -assertEquals('"___\\ude00"', JSON.stringify('___\uDE00')); -assertEquals('"___\\ude01"', JSON.stringify('___\uDE01')); -assertEquals('"___\\ude02"', JSON.stringify('___\uDE02')); -assertEquals('"___\\ude03"', JSON.stringify('___\uDE03')); -assertEquals('"___\\ude04"', JSON.stringify('___\uDE04')); -assertEquals('"___\\ude05"', JSON.stringify('___\uDE05')); -assertEquals('"___\\ude06"', JSON.stringify('___\uDE06')); -assertEquals('"___\\ude07"', JSON.stringify('___\uDE07')); -assertEquals('"___\\ude08"', JSON.stringify('___\uDE08')); -assertEquals('"___\\ude09"', JSON.stringify('___\uDE09')); -assertEquals('"___\\ude0a"', JSON.stringify('___\uDE0A')); -assertEquals('"___\\ude0b"', JSON.stringify('___\uDE0B')); -assertEquals('"___\\ude0c"', JSON.stringify('___\uDE0C')); -assertEquals('"___\\ude0d"', JSON.stringify('___\uDE0D')); -assertEquals('"___\\ude0e"', JSON.stringify('___\uDE0E')); -assertEquals('"___\\ude0f"', JSON.stringify('___\uDE0F')); -assertEquals('"___\\ude10"', JSON.stringify('___\uDE10')); -assertEquals('"___\\ude11"', JSON.stringify('___\uDE11')); -assertEquals('"___\\ude12"', JSON.stringify('___\uDE12')); -assertEquals('"___\\ude13"', JSON.stringify('___\uDE13')); -assertEquals('"___\\ude14"', JSON.stringify('___\uDE14')); -assertEquals('"___\\ude15"', JSON.stringify('___\uDE15')); -assertEquals('"___\\ude16"', JSON.stringify('___\uDE16')); -assertEquals('"___\\ude17"', JSON.stringify('___\uDE17')); -assertEquals('"___\\ude18"', JSON.stringify('___\uDE18')); -assertEquals('"___\\ude19"', JSON.stringify('___\uDE19')); -assertEquals('"___\\ude1a"', JSON.stringify('___\uDE1A')); -assertEquals('"___\\ude1b"', JSON.stringify('___\uDE1B')); -assertEquals('"___\\ude1c"', JSON.stringify('___\uDE1C')); -assertEquals('"___\\ude1d"', JSON.stringify('___\uDE1D')); -assertEquals('"___\\ude1e"', JSON.stringify('___\uDE1E')); -assertEquals('"___\\ude1f"', JSON.stringify('___\uDE1F')); -assertEquals('"___\\ude20"', JSON.stringify('___\uDE20')); -assertEquals('"___\\ude21"', JSON.stringify('___\uDE21')); -assertEquals('"___\\ude22"', JSON.stringify('___\uDE22')); -assertEquals('"___\\ude23"', JSON.stringify('___\uDE23')); -assertEquals('"___\\ude24"', JSON.stringify('___\uDE24')); -assertEquals('"___\\ude25"', JSON.stringify('___\uDE25')); -assertEquals('"___\\ude26"', JSON.stringify('___\uDE26')); -assertEquals('"___\\ude27"', JSON.stringify('___\uDE27')); -assertEquals('"___\\ude28"', JSON.stringify('___\uDE28')); -assertEquals('"___\\ude29"', JSON.stringify('___\uDE29')); -assertEquals('"___\\ude2a"', JSON.stringify('___\uDE2A')); -assertEquals('"___\\ude2b"', JSON.stringify('___\uDE2B')); -assertEquals('"___\\ude2c"', JSON.stringify('___\uDE2C')); -assertEquals('"___\\ude2d"', JSON.stringify('___\uDE2D')); -assertEquals('"___\\ude2e"', JSON.stringify('___\uDE2E')); -assertEquals('"___\\ude2f"', JSON.stringify('___\uDE2F')); -assertEquals('"___\\ude30"', JSON.stringify('___\uDE30')); -assertEquals('"___\\ude31"', JSON.stringify('___\uDE31')); -assertEquals('"___\\ude32"', JSON.stringify('___\uDE32')); -assertEquals('"___\\ude33"', JSON.stringify('___\uDE33')); -assertEquals('"___\\ude34"', JSON.stringify('___\uDE34')); -assertEquals('"___\\ude35"', JSON.stringify('___\uDE35')); -assertEquals('"___\\ude36"', JSON.stringify('___\uDE36')); -assertEquals('"___\\ude37"', JSON.stringify('___\uDE37')); -assertEquals('"___\\ude38"', JSON.stringify('___\uDE38')); -assertEquals('"___\\ude39"', JSON.stringify('___\uDE39')); -assertEquals('"___\\ude3a"', JSON.stringify('___\uDE3A')); -assertEquals('"___\\ude3b"', JSON.stringify('___\uDE3B')); -assertEquals('"___\\ude3c"', JSON.stringify('___\uDE3C')); -assertEquals('"___\\ude3d"', JSON.stringify('___\uDE3D')); -assertEquals('"___\\ude3e"', JSON.stringify('___\uDE3E')); -assertEquals('"___\\ude3f"', JSON.stringify('___\uDE3F')); -assertEquals('"___\\ude40"', JSON.stringify('___\uDE40')); -assertEquals('"___\\ude41"', JSON.stringify('___\uDE41')); -assertEquals('"___\\ude42"', JSON.stringify('___\uDE42')); -assertEquals('"___\\ude43"', JSON.stringify('___\uDE43')); -assertEquals('"___\\ude44"', JSON.stringify('___\uDE44')); -assertEquals('"___\\ude45"', JSON.stringify('___\uDE45')); -assertEquals('"___\\ude46"', JSON.stringify('___\uDE46')); -assertEquals('"___\\ude47"', JSON.stringify('___\uDE47')); -assertEquals('"___\\ude48"', JSON.stringify('___\uDE48')); -assertEquals('"___\\ude49"', JSON.stringify('___\uDE49')); -assertEquals('"___\\ude4a"', JSON.stringify('___\uDE4A')); -assertEquals('"___\\ude4b"', JSON.stringify('___\uDE4B')); -assertEquals('"___\\ude4c"', JSON.stringify('___\uDE4C')); -assertEquals('"___\\ude4d"', JSON.stringify('___\uDE4D')); -assertEquals('"___\\ude4e"', JSON.stringify('___\uDE4E')); -assertEquals('"___\\ude4f"', JSON.stringify('___\uDE4F')); -assertEquals('"___\\ude50"', JSON.stringify('___\uDE50')); -assertEquals('"___\\ude51"', JSON.stringify('___\uDE51')); -assertEquals('"___\\ude52"', JSON.stringify('___\uDE52')); -assertEquals('"___\\ude53"', JSON.stringify('___\uDE53')); -assertEquals('"___\\ude54"', JSON.stringify('___\uDE54')); -assertEquals('"___\\ude55"', JSON.stringify('___\uDE55')); -assertEquals('"___\\ude56"', JSON.stringify('___\uDE56')); -assertEquals('"___\\ude57"', JSON.stringify('___\uDE57')); -assertEquals('"___\\ude58"', JSON.stringify('___\uDE58')); -assertEquals('"___\\ude59"', JSON.stringify('___\uDE59')); -assertEquals('"___\\ude5a"', JSON.stringify('___\uDE5A')); -assertEquals('"___\\ude5b"', JSON.stringify('___\uDE5B')); -assertEquals('"___\\ude5c"', JSON.stringify('___\uDE5C')); -assertEquals('"___\\ude5d"', JSON.stringify('___\uDE5D')); -assertEquals('"___\\ude5e"', JSON.stringify('___\uDE5E')); -assertEquals('"___\\ude5f"', JSON.stringify('___\uDE5F')); -assertEquals('"___\\ude60"', JSON.stringify('___\uDE60')); -assertEquals('"___\\ude61"', JSON.stringify('___\uDE61')); -assertEquals('"___\\ude62"', JSON.stringify('___\uDE62')); -assertEquals('"___\\ude63"', JSON.stringify('___\uDE63')); -assertEquals('"___\\ude64"', JSON.stringify('___\uDE64')); -assertEquals('"___\\ude65"', JSON.stringify('___\uDE65')); -assertEquals('"___\\ude66"', JSON.stringify('___\uDE66')); -assertEquals('"___\\ude67"', JSON.stringify('___\uDE67')); -assertEquals('"___\\ude68"', JSON.stringify('___\uDE68')); -assertEquals('"___\\ude69"', JSON.stringify('___\uDE69')); -assertEquals('"___\\ude6a"', JSON.stringify('___\uDE6A')); -assertEquals('"___\\ude6b"', JSON.stringify('___\uDE6B')); -assertEquals('"___\\ude6c"', JSON.stringify('___\uDE6C')); -assertEquals('"___\\ude6d"', JSON.stringify('___\uDE6D')); -assertEquals('"___\\ude6e"', JSON.stringify('___\uDE6E')); -assertEquals('"___\\ude6f"', JSON.stringify('___\uDE6F')); -assertEquals('"___\\ude70"', JSON.stringify('___\uDE70')); -assertEquals('"___\\ude71"', JSON.stringify('___\uDE71')); -assertEquals('"___\\ude72"', JSON.stringify('___\uDE72')); -assertEquals('"___\\ude73"', JSON.stringify('___\uDE73')); -assertEquals('"___\\ude74"', JSON.stringify('___\uDE74')); -assertEquals('"___\\ude75"', JSON.stringify('___\uDE75')); -assertEquals('"___\\ude76"', JSON.stringify('___\uDE76')); -assertEquals('"___\\ude77"', JSON.stringify('___\uDE77')); -assertEquals('"___\\ude78"', JSON.stringify('___\uDE78')); -assertEquals('"___\\ude79"', JSON.stringify('___\uDE79')); -assertEquals('"___\\ude7a"', JSON.stringify('___\uDE7A')); -assertEquals('"___\\ude7b"', JSON.stringify('___\uDE7B')); -assertEquals('"___\\ude7c"', JSON.stringify('___\uDE7C')); -assertEquals('"___\\ude7d"', JSON.stringify('___\uDE7D')); -assertEquals('"___\\ude7e"', JSON.stringify('___\uDE7E')); -assertEquals('"___\\ude7f"', JSON.stringify('___\uDE7F')); -assertEquals('"___\\ude80"', JSON.stringify('___\uDE80')); -assertEquals('"___\\ude81"', JSON.stringify('___\uDE81')); -assertEquals('"___\\ude82"', JSON.stringify('___\uDE82')); -assertEquals('"___\\ude83"', JSON.stringify('___\uDE83')); -assertEquals('"___\\ude84"', JSON.stringify('___\uDE84')); -assertEquals('"___\\ude85"', JSON.stringify('___\uDE85')); -assertEquals('"___\\ude86"', JSON.stringify('___\uDE86')); -assertEquals('"___\\ude87"', JSON.stringify('___\uDE87')); -assertEquals('"___\\ude88"', JSON.stringify('___\uDE88')); -assertEquals('"___\\ude89"', JSON.stringify('___\uDE89')); -assertEquals('"___\\ude8a"', JSON.stringify('___\uDE8A')); -assertEquals('"___\\ude8b"', JSON.stringify('___\uDE8B')); -assertEquals('"___\\ude8c"', JSON.stringify('___\uDE8C')); -assertEquals('"___\\ude8d"', JSON.stringify('___\uDE8D')); -assertEquals('"___\\ude8e"', JSON.stringify('___\uDE8E')); -assertEquals('"___\\ude8f"', JSON.stringify('___\uDE8F')); -assertEquals('"___\\ude90"', JSON.stringify('___\uDE90')); -assertEquals('"___\\ude91"', JSON.stringify('___\uDE91')); -assertEquals('"___\\ude92"', JSON.stringify('___\uDE92')); -assertEquals('"___\\ude93"', JSON.stringify('___\uDE93')); -assertEquals('"___\\ude94"', JSON.stringify('___\uDE94')); -assertEquals('"___\\ude95"', JSON.stringify('___\uDE95')); -assertEquals('"___\\ude96"', JSON.stringify('___\uDE96')); -assertEquals('"___\\ude97"', JSON.stringify('___\uDE97')); -assertEquals('"___\\ude98"', JSON.stringify('___\uDE98')); -assertEquals('"___\\ude99"', JSON.stringify('___\uDE99')); -assertEquals('"___\\ude9a"', JSON.stringify('___\uDE9A')); -assertEquals('"___\\ude9b"', JSON.stringify('___\uDE9B')); -assertEquals('"___\\ude9c"', JSON.stringify('___\uDE9C')); -assertEquals('"___\\ude9d"', JSON.stringify('___\uDE9D')); -assertEquals('"___\\ude9e"', JSON.stringify('___\uDE9E')); -assertEquals('"___\\ude9f"', JSON.stringify('___\uDE9F')); -assertEquals('"___\\udea0"', JSON.stringify('___\uDEA0')); -assertEquals('"___\\udea1"', JSON.stringify('___\uDEA1')); -assertEquals('"___\\udea2"', JSON.stringify('___\uDEA2')); -assertEquals('"___\\udea3"', JSON.stringify('___\uDEA3')); -assertEquals('"___\\udea4"', JSON.stringify('___\uDEA4')); -assertEquals('"___\\udea5"', JSON.stringify('___\uDEA5')); -assertEquals('"___\\udea6"', JSON.stringify('___\uDEA6')); -assertEquals('"___\\udea7"', JSON.stringify('___\uDEA7')); -assertEquals('"___\\udea8"', JSON.stringify('___\uDEA8')); -assertEquals('"___\\udea9"', JSON.stringify('___\uDEA9')); -assertEquals('"___\\udeaa"', JSON.stringify('___\uDEAA')); -assertEquals('"___\\udeab"', JSON.stringify('___\uDEAB')); -assertEquals('"___\\udeac"', JSON.stringify('___\uDEAC')); -assertEquals('"___\\udead"', JSON.stringify('___\uDEAD')); -assertEquals('"___\\udeae"', JSON.stringify('___\uDEAE')); -assertEquals('"___\\udeaf"', JSON.stringify('___\uDEAF')); -assertEquals('"___\\udeb0"', JSON.stringify('___\uDEB0')); -assertEquals('"___\\udeb1"', JSON.stringify('___\uDEB1')); -assertEquals('"___\\udeb2"', JSON.stringify('___\uDEB2')); -assertEquals('"___\\udeb3"', JSON.stringify('___\uDEB3')); -assertEquals('"___\\udeb4"', JSON.stringify('___\uDEB4')); -assertEquals('"___\\udeb5"', JSON.stringify('___\uDEB5')); -assertEquals('"___\\udeb6"', JSON.stringify('___\uDEB6')); -assertEquals('"___\\udeb7"', JSON.stringify('___\uDEB7')); -assertEquals('"___\\udeb8"', JSON.stringify('___\uDEB8')); -assertEquals('"___\\udeb9"', JSON.stringify('___\uDEB9')); -assertEquals('"___\\udeba"', JSON.stringify('___\uDEBA')); -assertEquals('"___\\udebb"', JSON.stringify('___\uDEBB')); -assertEquals('"___\\udebc"', JSON.stringify('___\uDEBC')); -assertEquals('"___\\udebd"', JSON.stringify('___\uDEBD')); -assertEquals('"___\\udebe"', JSON.stringify('___\uDEBE')); -assertEquals('"___\\udebf"', JSON.stringify('___\uDEBF')); -assertEquals('"___\\udec0"', JSON.stringify('___\uDEC0')); -assertEquals('"___\\udec1"', JSON.stringify('___\uDEC1')); -assertEquals('"___\\udec2"', JSON.stringify('___\uDEC2')); -assertEquals('"___\\udec3"', JSON.stringify('___\uDEC3')); -assertEquals('"___\\udec4"', JSON.stringify('___\uDEC4')); -assertEquals('"___\\udec5"', JSON.stringify('___\uDEC5')); -assertEquals('"___\\udec6"', JSON.stringify('___\uDEC6')); -assertEquals('"___\\udec7"', JSON.stringify('___\uDEC7')); -assertEquals('"___\\udec8"', JSON.stringify('___\uDEC8')); -assertEquals('"___\\udec9"', JSON.stringify('___\uDEC9')); -assertEquals('"___\\udeca"', JSON.stringify('___\uDECA')); -assertEquals('"___\\udecb"', JSON.stringify('___\uDECB')); -assertEquals('"___\\udecc"', JSON.stringify('___\uDECC')); -assertEquals('"___\\udecd"', JSON.stringify('___\uDECD')); -assertEquals('"___\\udece"', JSON.stringify('___\uDECE')); -assertEquals('"___\\udecf"', JSON.stringify('___\uDECF')); -assertEquals('"___\\uded0"', JSON.stringify('___\uDED0')); -assertEquals('"___\\uded1"', JSON.stringify('___\uDED1')); -assertEquals('"___\\uded2"', JSON.stringify('___\uDED2')); -assertEquals('"___\\uded3"', JSON.stringify('___\uDED3')); -assertEquals('"___\\uded4"', JSON.stringify('___\uDED4')); -assertEquals('"___\\uded5"', JSON.stringify('___\uDED5')); -assertEquals('"___\\uded6"', JSON.stringify('___\uDED6')); -assertEquals('"___\\uded7"', JSON.stringify('___\uDED7')); -assertEquals('"___\\uded8"', JSON.stringify('___\uDED8')); -assertEquals('"___\\uded9"', JSON.stringify('___\uDED9')); -assertEquals('"___\\udeda"', JSON.stringify('___\uDEDA')); -assertEquals('"___\\udedb"', JSON.stringify('___\uDEDB')); -assertEquals('"___\\udedc"', JSON.stringify('___\uDEDC')); -assertEquals('"___\\udedd"', JSON.stringify('___\uDEDD')); -assertEquals('"___\\udede"', JSON.stringify('___\uDEDE')); -assertEquals('"___\\udedf"', JSON.stringify('___\uDEDF')); -assertEquals('"___\\udee0"', JSON.stringify('___\uDEE0')); -assertEquals('"___\\udee1"', JSON.stringify('___\uDEE1')); -assertEquals('"___\\udee2"', JSON.stringify('___\uDEE2')); -assertEquals('"___\\udee3"', JSON.stringify('___\uDEE3')); -assertEquals('"___\\udee4"', JSON.stringify('___\uDEE4')); -assertEquals('"___\\udee5"', JSON.stringify('___\uDEE5')); -assertEquals('"___\\udee6"', JSON.stringify('___\uDEE6')); -assertEquals('"___\\udee7"', JSON.stringify('___\uDEE7')); -assertEquals('"___\\udee8"', JSON.stringify('___\uDEE8')); -assertEquals('"___\\udee9"', JSON.stringify('___\uDEE9')); -assertEquals('"___\\udeea"', JSON.stringify('___\uDEEA')); -assertEquals('"___\\udeeb"', JSON.stringify('___\uDEEB')); -assertEquals('"___\\udeec"', JSON.stringify('___\uDEEC')); -assertEquals('"___\\udeed"', JSON.stringify('___\uDEED')); -assertEquals('"___\\udeee"', JSON.stringify('___\uDEEE')); -assertEquals('"___\\udeef"', JSON.stringify('___\uDEEF')); -assertEquals('"___\\udef0"', JSON.stringify('___\uDEF0')); -assertEquals('"___\\udef1"', JSON.stringify('___\uDEF1')); -assertEquals('"___\\udef2"', JSON.stringify('___\uDEF2')); -assertEquals('"___\\udef3"', JSON.stringify('___\uDEF3')); -assertEquals('"___\\udef4"', JSON.stringify('___\uDEF4')); -assertEquals('"___\\udef5"', JSON.stringify('___\uDEF5')); -assertEquals('"___\\udef6"', JSON.stringify('___\uDEF6')); -assertEquals('"___\\udef7"', JSON.stringify('___\uDEF7')); -assertEquals('"___\\udef8"', JSON.stringify('___\uDEF8')); -assertEquals('"___\\udef9"', JSON.stringify('___\uDEF9')); -assertEquals('"___\\udefa"', JSON.stringify('___\uDEFA')); -assertEquals('"___\\udefb"', JSON.stringify('___\uDEFB')); -assertEquals('"___\\udefc"', JSON.stringify('___\uDEFC')); -assertEquals('"___\\udefd"', JSON.stringify('___\uDEFD')); -assertEquals('"___\\udefe"', JSON.stringify('___\uDEFE')); -assertEquals('"___\\udeff"', JSON.stringify('___\uDEFF')); -assertEquals('"___\\udf00"', JSON.stringify('___\uDF00')); -assertEquals('"___\\udf01"', JSON.stringify('___\uDF01')); -assertEquals('"___\\udf02"', JSON.stringify('___\uDF02')); -assertEquals('"___\\udf03"', JSON.stringify('___\uDF03')); -assertEquals('"___\\udf04"', JSON.stringify('___\uDF04')); -assertEquals('"___\\udf05"', JSON.stringify('___\uDF05')); -assertEquals('"___\\udf06"', JSON.stringify('___\uDF06')); -assertEquals('"___\\udf07"', JSON.stringify('___\uDF07')); -assertEquals('"___\\udf08"', JSON.stringify('___\uDF08')); -assertEquals('"___\\udf09"', JSON.stringify('___\uDF09')); -assertEquals('"___\\udf0a"', JSON.stringify('___\uDF0A')); -assertEquals('"___\\udf0b"', JSON.stringify('___\uDF0B')); -assertEquals('"___\\udf0c"', JSON.stringify('___\uDF0C')); -assertEquals('"___\\udf0d"', JSON.stringify('___\uDF0D')); -assertEquals('"___\\udf0e"', JSON.stringify('___\uDF0E')); -assertEquals('"___\\udf0f"', JSON.stringify('___\uDF0F')); -assertEquals('"___\\udf10"', JSON.stringify('___\uDF10')); -assertEquals('"___\\udf11"', JSON.stringify('___\uDF11')); -assertEquals('"___\\udf12"', JSON.stringify('___\uDF12')); -assertEquals('"___\\udf13"', JSON.stringify('___\uDF13')); -assertEquals('"___\\udf14"', JSON.stringify('___\uDF14')); -assertEquals('"___\\udf15"', JSON.stringify('___\uDF15')); -assertEquals('"___\\udf16"', JSON.stringify('___\uDF16')); -assertEquals('"___\\udf17"', JSON.stringify('___\uDF17')); -assertEquals('"___\\udf18"', JSON.stringify('___\uDF18')); -assertEquals('"___\\udf19"', JSON.stringify('___\uDF19')); -assertEquals('"___\\udf1a"', JSON.stringify('___\uDF1A')); -assertEquals('"___\\udf1b"', JSON.stringify('___\uDF1B')); -assertEquals('"___\\udf1c"', JSON.stringify('___\uDF1C')); -assertEquals('"___\\udf1d"', JSON.stringify('___\uDF1D')); -assertEquals('"___\\udf1e"', JSON.stringify('___\uDF1E')); -assertEquals('"___\\udf1f"', JSON.stringify('___\uDF1F')); -assertEquals('"___\\udf20"', JSON.stringify('___\uDF20')); -assertEquals('"___\\udf21"', JSON.stringify('___\uDF21')); -assertEquals('"___\\udf22"', JSON.stringify('___\uDF22')); -assertEquals('"___\\udf23"', JSON.stringify('___\uDF23')); -assertEquals('"___\\udf24"', JSON.stringify('___\uDF24')); -assertEquals('"___\\udf25"', JSON.stringify('___\uDF25')); -assertEquals('"___\\udf26"', JSON.stringify('___\uDF26')); -assertEquals('"___\\udf27"', JSON.stringify('___\uDF27')); -assertEquals('"___\\udf28"', JSON.stringify('___\uDF28')); -assertEquals('"___\\udf29"', JSON.stringify('___\uDF29')); -assertEquals('"___\\udf2a"', JSON.stringify('___\uDF2A')); -assertEquals('"___\\udf2b"', JSON.stringify('___\uDF2B')); -assertEquals('"___\\udf2c"', JSON.stringify('___\uDF2C')); -assertEquals('"___\\udf2d"', JSON.stringify('___\uDF2D')); -assertEquals('"___\\udf2e"', JSON.stringify('___\uDF2E')); -assertEquals('"___\\udf2f"', JSON.stringify('___\uDF2F')); -assertEquals('"___\\udf30"', JSON.stringify('___\uDF30')); -assertEquals('"___\\udf31"', JSON.stringify('___\uDF31')); -assertEquals('"___\\udf32"', JSON.stringify('___\uDF32')); -assertEquals('"___\\udf33"', JSON.stringify('___\uDF33')); -assertEquals('"___\\udf34"', JSON.stringify('___\uDF34')); -assertEquals('"___\\udf35"', JSON.stringify('___\uDF35')); -assertEquals('"___\\udf36"', JSON.stringify('___\uDF36')); -assertEquals('"___\\udf37"', JSON.stringify('___\uDF37')); -assertEquals('"___\\udf38"', JSON.stringify('___\uDF38')); -assertEquals('"___\\udf39"', JSON.stringify('___\uDF39')); -assertEquals('"___\\udf3a"', JSON.stringify('___\uDF3A')); -assertEquals('"___\\udf3b"', JSON.stringify('___\uDF3B')); -assertEquals('"___\\udf3c"', JSON.stringify('___\uDF3C')); -assertEquals('"___\\udf3d"', JSON.stringify('___\uDF3D')); -assertEquals('"___\\udf3e"', JSON.stringify('___\uDF3E')); -assertEquals('"___\\udf3f"', JSON.stringify('___\uDF3F')); -assertEquals('"___\\udf40"', JSON.stringify('___\uDF40')); -assertEquals('"___\\udf41"', JSON.stringify('___\uDF41')); -assertEquals('"___\\udf42"', JSON.stringify('___\uDF42')); -assertEquals('"___\\udf43"', JSON.stringify('___\uDF43')); -assertEquals('"___\\udf44"', JSON.stringify('___\uDF44')); -assertEquals('"___\\udf45"', JSON.stringify('___\uDF45')); -assertEquals('"___\\udf46"', JSON.stringify('___\uDF46')); -assertEquals('"___\\udf47"', JSON.stringify('___\uDF47')); -assertEquals('"___\\udf48"', JSON.stringify('___\uDF48')); -assertEquals('"___\\udf49"', JSON.stringify('___\uDF49')); -assertEquals('"___\\udf4a"', JSON.stringify('___\uDF4A')); -assertEquals('"___\\udf4b"', JSON.stringify('___\uDF4B')); -assertEquals('"___\\udf4c"', JSON.stringify('___\uDF4C')); -assertEquals('"___\\udf4d"', JSON.stringify('___\uDF4D')); -assertEquals('"___\\udf4e"', JSON.stringify('___\uDF4E')); -assertEquals('"___\\udf4f"', JSON.stringify('___\uDF4F')); -assertEquals('"___\\udf50"', JSON.stringify('___\uDF50')); -assertEquals('"___\\udf51"', JSON.stringify('___\uDF51')); -assertEquals('"___\\udf52"', JSON.stringify('___\uDF52')); -assertEquals('"___\\udf53"', JSON.stringify('___\uDF53')); -assertEquals('"___\\udf54"', JSON.stringify('___\uDF54')); -assertEquals('"___\\udf55"', JSON.stringify('___\uDF55')); -assertEquals('"___\\udf56"', JSON.stringify('___\uDF56')); -assertEquals('"___\\udf57"', JSON.stringify('___\uDF57')); -assertEquals('"___\\udf58"', JSON.stringify('___\uDF58')); -assertEquals('"___\\udf59"', JSON.stringify('___\uDF59')); -assertEquals('"___\\udf5a"', JSON.stringify('___\uDF5A')); -assertEquals('"___\\udf5b"', JSON.stringify('___\uDF5B')); -assertEquals('"___\\udf5c"', JSON.stringify('___\uDF5C')); -assertEquals('"___\\udf5d"', JSON.stringify('___\uDF5D')); -assertEquals('"___\\udf5e"', JSON.stringify('___\uDF5E')); -assertEquals('"___\\udf5f"', JSON.stringify('___\uDF5F')); -assertEquals('"___\\udf60"', JSON.stringify('___\uDF60')); -assertEquals('"___\\udf61"', JSON.stringify('___\uDF61')); -assertEquals('"___\\udf62"', JSON.stringify('___\uDF62')); -assertEquals('"___\\udf63"', JSON.stringify('___\uDF63')); -assertEquals('"___\\udf64"', JSON.stringify('___\uDF64')); -assertEquals('"___\\udf65"', JSON.stringify('___\uDF65')); -assertEquals('"___\\udf66"', JSON.stringify('___\uDF66')); -assertEquals('"___\\udf67"', JSON.stringify('___\uDF67')); -assertEquals('"___\\udf68"', JSON.stringify('___\uDF68')); -assertEquals('"___\\udf69"', JSON.stringify('___\uDF69')); -assertEquals('"___\\udf6a"', JSON.stringify('___\uDF6A')); -assertEquals('"___\\udf6b"', JSON.stringify('___\uDF6B')); -assertEquals('"___\\udf6c"', JSON.stringify('___\uDF6C')); -assertEquals('"___\\udf6d"', JSON.stringify('___\uDF6D')); -assertEquals('"___\\udf6e"', JSON.stringify('___\uDF6E')); -assertEquals('"___\\udf6f"', JSON.stringify('___\uDF6F')); -assertEquals('"___\\udf70"', JSON.stringify('___\uDF70')); -assertEquals('"___\\udf71"', JSON.stringify('___\uDF71')); -assertEquals('"___\\udf72"', JSON.stringify('___\uDF72')); -assertEquals('"___\\udf73"', JSON.stringify('___\uDF73')); -assertEquals('"___\\udf74"', JSON.stringify('___\uDF74')); -assertEquals('"___\\udf75"', JSON.stringify('___\uDF75')); -assertEquals('"___\\udf76"', JSON.stringify('___\uDF76')); -assertEquals('"___\\udf77"', JSON.stringify('___\uDF77')); -assertEquals('"___\\udf78"', JSON.stringify('___\uDF78')); -assertEquals('"___\\udf79"', JSON.stringify('___\uDF79')); -assertEquals('"___\\udf7a"', JSON.stringify('___\uDF7A')); -assertEquals('"___\\udf7b"', JSON.stringify('___\uDF7B')); -assertEquals('"___\\udf7c"', JSON.stringify('___\uDF7C')); -assertEquals('"___\\udf7d"', JSON.stringify('___\uDF7D')); -assertEquals('"___\\udf7e"', JSON.stringify('___\uDF7E')); -assertEquals('"___\\udf7f"', JSON.stringify('___\uDF7F')); -assertEquals('"___\\udf80"', JSON.stringify('___\uDF80')); -assertEquals('"___\\udf81"', JSON.stringify('___\uDF81')); -assertEquals('"___\\udf82"', JSON.stringify('___\uDF82')); -assertEquals('"___\\udf83"', JSON.stringify('___\uDF83')); -assertEquals('"___\\udf84"', JSON.stringify('___\uDF84')); -assertEquals('"___\\udf85"', JSON.stringify('___\uDF85')); -assertEquals('"___\\udf86"', JSON.stringify('___\uDF86')); -assertEquals('"___\\udf87"', JSON.stringify('___\uDF87')); -assertEquals('"___\\udf88"', JSON.stringify('___\uDF88')); -assertEquals('"___\\udf89"', JSON.stringify('___\uDF89')); -assertEquals('"___\\udf8a"', JSON.stringify('___\uDF8A')); -assertEquals('"___\\udf8b"', JSON.stringify('___\uDF8B')); -assertEquals('"___\\udf8c"', JSON.stringify('___\uDF8C')); -assertEquals('"___\\udf8d"', JSON.stringify('___\uDF8D')); -assertEquals('"___\\udf8e"', JSON.stringify('___\uDF8E')); -assertEquals('"___\\udf8f"', JSON.stringify('___\uDF8F')); -assertEquals('"___\\udf90"', JSON.stringify('___\uDF90')); -assertEquals('"___\\udf91"', JSON.stringify('___\uDF91')); -assertEquals('"___\\udf92"', JSON.stringify('___\uDF92')); -assertEquals('"___\\udf93"', JSON.stringify('___\uDF93')); -assertEquals('"___\\udf94"', JSON.stringify('___\uDF94')); -assertEquals('"___\\udf95"', JSON.stringify('___\uDF95')); -assertEquals('"___\\udf96"', JSON.stringify('___\uDF96')); -assertEquals('"___\\udf97"', JSON.stringify('___\uDF97')); -assertEquals('"___\\udf98"', JSON.stringify('___\uDF98')); -assertEquals('"___\\udf99"', JSON.stringify('___\uDF99')); -assertEquals('"___\\udf9a"', JSON.stringify('___\uDF9A')); -assertEquals('"___\\udf9b"', JSON.stringify('___\uDF9B')); -assertEquals('"___\\udf9c"', JSON.stringify('___\uDF9C')); -assertEquals('"___\\udf9d"', JSON.stringify('___\uDF9D')); -assertEquals('"___\\udf9e"', JSON.stringify('___\uDF9E')); -assertEquals('"___\\udf9f"', JSON.stringify('___\uDF9F')); -assertEquals('"___\\udfa0"', JSON.stringify('___\uDFA0')); -assertEquals('"___\\udfa1"', JSON.stringify('___\uDFA1')); -assertEquals('"___\\udfa2"', JSON.stringify('___\uDFA2')); -assertEquals('"___\\udfa3"', JSON.stringify('___\uDFA3')); -assertEquals('"___\\udfa4"', JSON.stringify('___\uDFA4')); -assertEquals('"___\\udfa5"', JSON.stringify('___\uDFA5')); -assertEquals('"___\\udfa6"', JSON.stringify('___\uDFA6')); -assertEquals('"___\\udfa7"', JSON.stringify('___\uDFA7')); -assertEquals('"___\\udfa8"', JSON.stringify('___\uDFA8')); -assertEquals('"___\\udfa9"', JSON.stringify('___\uDFA9')); -assertEquals('"___\\udfaa"', JSON.stringify('___\uDFAA')); -assertEquals('"___\\udfab"', JSON.stringify('___\uDFAB')); -assertEquals('"___\\udfac"', JSON.stringify('___\uDFAC')); -assertEquals('"___\\udfad"', JSON.stringify('___\uDFAD')); -assertEquals('"___\\udfae"', JSON.stringify('___\uDFAE')); -assertEquals('"___\\udfaf"', JSON.stringify('___\uDFAF')); -assertEquals('"___\\udfb0"', JSON.stringify('___\uDFB0')); -assertEquals('"___\\udfb1"', JSON.stringify('___\uDFB1')); -assertEquals('"___\\udfb2"', JSON.stringify('___\uDFB2')); -assertEquals('"___\\udfb3"', JSON.stringify('___\uDFB3')); -assertEquals('"___\\udfb4"', JSON.stringify('___\uDFB4')); -assertEquals('"___\\udfb5"', JSON.stringify('___\uDFB5')); -assertEquals('"___\\udfb6"', JSON.stringify('___\uDFB6')); -assertEquals('"___\\udfb7"', JSON.stringify('___\uDFB7')); -assertEquals('"___\\udfb8"', JSON.stringify('___\uDFB8')); -assertEquals('"___\\udfb9"', JSON.stringify('___\uDFB9')); -assertEquals('"___\\udfba"', JSON.stringify('___\uDFBA')); -assertEquals('"___\\udfbb"', JSON.stringify('___\uDFBB')); -assertEquals('"___\\udfbc"', JSON.stringify('___\uDFBC')); -assertEquals('"___\\udfbd"', JSON.stringify('___\uDFBD')); -assertEquals('"___\\udfbe"', JSON.stringify('___\uDFBE')); -assertEquals('"___\\udfbf"', JSON.stringify('___\uDFBF')); -assertEquals('"___\\udfc0"', JSON.stringify('___\uDFC0')); -assertEquals('"___\\udfc1"', JSON.stringify('___\uDFC1')); -assertEquals('"___\\udfc2"', JSON.stringify('___\uDFC2')); -assertEquals('"___\\udfc3"', JSON.stringify('___\uDFC3')); -assertEquals('"___\\udfc4"', JSON.stringify('___\uDFC4')); -assertEquals('"___\\udfc5"', JSON.stringify('___\uDFC5')); -assertEquals('"___\\udfc6"', JSON.stringify('___\uDFC6')); -assertEquals('"___\\udfc7"', JSON.stringify('___\uDFC7')); -assertEquals('"___\\udfc8"', JSON.stringify('___\uDFC8')); -assertEquals('"___\\udfc9"', JSON.stringify('___\uDFC9')); -assertEquals('"___\\udfca"', JSON.stringify('___\uDFCA')); -assertEquals('"___\\udfcb"', JSON.stringify('___\uDFCB')); -assertEquals('"___\\udfcc"', JSON.stringify('___\uDFCC')); -assertEquals('"___\\udfcd"', JSON.stringify('___\uDFCD')); -assertEquals('"___\\udfce"', JSON.stringify('___\uDFCE')); -assertEquals('"___\\udfcf"', JSON.stringify('___\uDFCF')); -assertEquals('"___\\udfd0"', JSON.stringify('___\uDFD0')); -assertEquals('"___\\udfd1"', JSON.stringify('___\uDFD1')); -assertEquals('"___\\udfd2"', JSON.stringify('___\uDFD2')); -assertEquals('"___\\udfd3"', JSON.stringify('___\uDFD3')); -assertEquals('"___\\udfd4"', JSON.stringify('___\uDFD4')); -assertEquals('"___\\udfd5"', JSON.stringify('___\uDFD5')); -assertEquals('"___\\udfd6"', JSON.stringify('___\uDFD6')); -assertEquals('"___\\udfd7"', JSON.stringify('___\uDFD7')); -assertEquals('"___\\udfd8"', JSON.stringify('___\uDFD8')); -assertEquals('"___\\udfd9"', JSON.stringify('___\uDFD9')); -assertEquals('"___\\udfda"', JSON.stringify('___\uDFDA')); -assertEquals('"___\\udfdb"', JSON.stringify('___\uDFDB')); -assertEquals('"___\\udfdc"', JSON.stringify('___\uDFDC')); -assertEquals('"___\\udfdd"', JSON.stringify('___\uDFDD')); -assertEquals('"___\\udfde"', JSON.stringify('___\uDFDE')); -assertEquals('"___\\udfdf"', JSON.stringify('___\uDFDF')); -assertEquals('"___\\udfe0"', JSON.stringify('___\uDFE0')); -assertEquals('"___\\udfe1"', JSON.stringify('___\uDFE1')); -assertEquals('"___\\udfe2"', JSON.stringify('___\uDFE2')); -assertEquals('"___\\udfe3"', JSON.stringify('___\uDFE3')); -assertEquals('"___\\udfe4"', JSON.stringify('___\uDFE4')); -assertEquals('"___\\udfe5"', JSON.stringify('___\uDFE5')); -assertEquals('"___\\udfe6"', JSON.stringify('___\uDFE6')); -assertEquals('"___\\udfe7"', JSON.stringify('___\uDFE7')); -assertEquals('"___\\udfe8"', JSON.stringify('___\uDFE8')); -assertEquals('"___\\udfe9"', JSON.stringify('___\uDFE9')); -assertEquals('"___\\udfea"', JSON.stringify('___\uDFEA')); -assertEquals('"___\\udfeb"', JSON.stringify('___\uDFEB')); -assertEquals('"___\\udfec"', JSON.stringify('___\uDFEC')); -assertEquals('"___\\udfed"', JSON.stringify('___\uDFED')); -assertEquals('"___\\udfee"', JSON.stringify('___\uDFEE')); -assertEquals('"___\\udfef"', JSON.stringify('___\uDFEF')); -assertEquals('"___\\udff0"', JSON.stringify('___\uDFF0')); -assertEquals('"___\\udff1"', JSON.stringify('___\uDFF1')); -assertEquals('"___\\udff2"', JSON.stringify('___\uDFF2')); -assertEquals('"___\\udff3"', JSON.stringify('___\uDFF3')); -assertEquals('"___\\udff4"', JSON.stringify('___\uDFF4')); -assertEquals('"___\\udff5"', JSON.stringify('___\uDFF5')); -assertEquals('"___\\udff6"', JSON.stringify('___\uDFF6')); -assertEquals('"___\\udff7"', JSON.stringify('___\uDFF7')); -assertEquals('"___\\udff8"', JSON.stringify('___\uDFF8')); -assertEquals('"___\\udff9"', JSON.stringify('___\uDFF9')); -assertEquals('"___\\udffa"', JSON.stringify('___\uDFFA')); -assertEquals('"___\\udffb"', JSON.stringify('___\uDFFB')); -assertEquals('"___\\udffc"', JSON.stringify('___\uDFFC')); -assertEquals('"___\\udffd"', JSON.stringify('___\uDFFD')); -assertEquals('"___\\udffe"', JSON.stringify('___\uDFFE')); -assertEquals('"___\\udfff"', JSON.stringify('___\uDFFF')); - -// A random selection of code points from U+E000 to U+FFFF. -assertEquals('"___\uE000"', JSON.stringify('___\uE000')); -assertEquals('"___\uE00B"', JSON.stringify('___\uE00B')); -assertEquals('"___\uE0CC"', JSON.stringify('___\uE0CC')); -assertEquals('"___\uE0FD"', JSON.stringify('___\uE0FD')); -assertEquals('"___\uE19E"', JSON.stringify('___\uE19E')); -assertEquals('"___\uE1B1"', JSON.stringify('___\uE1B1')); -assertEquals('"___\uE24F"', JSON.stringify('___\uE24F')); -assertEquals('"___\uE262"', JSON.stringify('___\uE262')); -assertEquals('"___\uE2C9"', JSON.stringify('___\uE2C9')); -assertEquals('"___\uE2DF"', JSON.stringify('___\uE2DF')); -assertEquals('"___\uE389"', JSON.stringify('___\uE389')); -assertEquals('"___\uE413"', JSON.stringify('___\uE413')); -assertEquals('"___\uE546"', JSON.stringify('___\uE546')); -assertEquals('"___\uE5E4"', JSON.stringify('___\uE5E4')); -assertEquals('"___\uE66B"', JSON.stringify('___\uE66B')); -assertEquals('"___\uE73D"', JSON.stringify('___\uE73D')); -assertEquals('"___\uE74F"', JSON.stringify('___\uE74F')); -assertEquals('"___\uE759"', JSON.stringify('___\uE759')); -assertEquals('"___\uE795"', JSON.stringify('___\uE795')); -assertEquals('"___\uE836"', JSON.stringify('___\uE836')); -assertEquals('"___\uE85D"', JSON.stringify('___\uE85D')); -assertEquals('"___\uE909"', JSON.stringify('___\uE909')); -assertEquals('"___\uE990"', JSON.stringify('___\uE990')); -assertEquals('"___\uE99F"', JSON.stringify('___\uE99F')); -assertEquals('"___\uE9AC"', JSON.stringify('___\uE9AC')); -assertEquals('"___\uE9C2"', JSON.stringify('___\uE9C2')); -assertEquals('"___\uEB11"', JSON.stringify('___\uEB11')); -assertEquals('"___\uED33"', JSON.stringify('___\uED33')); -assertEquals('"___\uED7D"', JSON.stringify('___\uED7D')); -assertEquals('"___\uEDA9"', JSON.stringify('___\uEDA9')); -assertEquals('"___\uEDFB"', JSON.stringify('___\uEDFB')); -assertEquals('"___\uEE09"', JSON.stringify('___\uEE09')); -assertEquals('"___\uEE0D"', JSON.stringify('___\uEE0D')); -assertEquals('"___\uEE34"', JSON.stringify('___\uEE34')); -assertEquals('"___\uEE37"', JSON.stringify('___\uEE37')); -assertEquals('"___\uEE38"', JSON.stringify('___\uEE38')); -assertEquals('"___\uEF80"', JSON.stringify('___\uEF80')); -assertEquals('"___\uEFE2"', JSON.stringify('___\uEFE2')); -assertEquals('"___\uF02C"', JSON.stringify('___\uF02C')); -assertEquals('"___\uF09A"', JSON.stringify('___\uF09A')); -assertEquals('"___\uF0C1"', JSON.stringify('___\uF0C1')); -assertEquals('"___\uF12C"', JSON.stringify('___\uF12C')); -assertEquals('"___\uF250"', JSON.stringify('___\uF250')); -assertEquals('"___\uF2A3"', JSON.stringify('___\uF2A3')); -assertEquals('"___\uF340"', JSON.stringify('___\uF340')); -assertEquals('"___\uF3C9"', JSON.stringify('___\uF3C9')); -assertEquals('"___\uF3F5"', JSON.stringify('___\uF3F5')); -assertEquals('"___\uF41B"', JSON.stringify('___\uF41B')); -assertEquals('"___\uF420"', JSON.stringify('___\uF420')); -assertEquals('"___\uF440"', JSON.stringify('___\uF440')); -assertEquals('"___\uF4AE"', JSON.stringify('___\uF4AE')); -assertEquals('"___\uF4B0"', JSON.stringify('___\uF4B0')); -assertEquals('"___\uF50D"', JSON.stringify('___\uF50D')); -assertEquals('"___\uF55D"', JSON.stringify('___\uF55D')); -assertEquals('"___\uF55E"', JSON.stringify('___\uF55E')); -assertEquals('"___\uF5CD"', JSON.stringify('___\uF5CD')); -assertEquals('"___\uF657"', JSON.stringify('___\uF657')); -assertEquals('"___\uF66D"', JSON.stringify('___\uF66D')); -assertEquals('"___\uF68F"', JSON.stringify('___\uF68F')); -assertEquals('"___\uF6A6"', JSON.stringify('___\uF6A6')); -assertEquals('"___\uF6AA"', JSON.stringify('___\uF6AA')); -assertEquals('"___\uF6EB"', JSON.stringify('___\uF6EB')); -assertEquals('"___\uF79A"', JSON.stringify('___\uF79A')); -assertEquals('"___\uF7E7"', JSON.stringify('___\uF7E7')); -assertEquals('"___\uF7E8"', JSON.stringify('___\uF7E8')); -assertEquals('"___\uF834"', JSON.stringify('___\uF834')); -assertEquals('"___\uF88B"', JSON.stringify('___\uF88B')); -assertEquals('"___\uF8D5"', JSON.stringify('___\uF8D5')); -assertEquals('"___\uF8F1"', JSON.stringify('___\uF8F1')); -assertEquals('"___\uF905"', JSON.stringify('___\uF905')); -assertEquals('"___\uF927"', JSON.stringify('___\uF927')); -assertEquals('"___\uF943"', JSON.stringify('___\uF943')); -assertEquals('"___\uF949"', JSON.stringify('___\uF949')); -assertEquals('"___\uF9A1"', JSON.stringify('___\uF9A1')); -assertEquals('"___\uF9C7"', JSON.stringify('___\uF9C7')); -assertEquals('"___\uFA0F"', JSON.stringify('___\uFA0F')); -assertEquals('"___\uFA20"', JSON.stringify('___\uFA20')); -assertEquals('"___\uFAA7"', JSON.stringify('___\uFAA7')); -assertEquals('"___\uFBCD"', JSON.stringify('___\uFBCD')); -assertEquals('"___\uFBF7"', JSON.stringify('___\uFBF7')); -assertEquals('"___\uFC40"', JSON.stringify('___\uFC40')); -assertEquals('"___\uFC4B"', JSON.stringify('___\uFC4B')); -assertEquals('"___\uFC51"', JSON.stringify('___\uFC51')); -assertEquals('"___\uFC5E"', JSON.stringify('___\uFC5E')); -assertEquals('"___\uFC67"', JSON.stringify('___\uFC67')); -assertEquals('"___\uFC8B"', JSON.stringify('___\uFC8B')); -assertEquals('"___\uFE32"', JSON.stringify('___\uFE32')); -assertEquals('"___\uFFC4"', JSON.stringify('___\uFFC4')); -assertEquals('"___\uFFFD"', JSON.stringify('___\uFFFD')); -assertEquals('"___\uFFFE"', JSON.stringify('___\uFFFE')); -assertEquals('"___\uFFFF"', JSON.stringify('___\uFFFF')); - -// A random selection of astral symbols, i.e. surrogate pairs, i.e. -// code points from U+010000 to U+10FFFF. -assertEquals('"___\u{10000}"', JSON.stringify('___\u{10000}')); -assertEquals('"___\u{11DE7}"', JSON.stringify('___\u{11DE7}')); -assertEquals('"___\u{15997}"', JSON.stringify('___\u{15997}')); -assertEquals('"___\u{187B0}"', JSON.stringify('___\u{187B0}')); -assertEquals('"___\u{190B2}"', JSON.stringify('___\u{190B2}')); -assertEquals('"___\u{1BF79}"', JSON.stringify('___\u{1BF79}')); -assertEquals('"___\u{1C624}"', JSON.stringify('___\u{1C624}')); -assertEquals('"___\u{1D9F4}"', JSON.stringify('___\u{1D9F4}')); -assertEquals('"___\u{24149}"', JSON.stringify('___\u{24149}')); -assertEquals('"___\u{2521C}"', JSON.stringify('___\u{2521C}')); -assertEquals('"___\u{2762D}"', JSON.stringify('___\u{2762D}')); -assertEquals('"___\u{2930B}"', JSON.stringify('___\u{2930B}')); -assertEquals('"___\u{29EC4}"', JSON.stringify('___\u{29EC4}')); -assertEquals('"___\u{29F9A}"', JSON.stringify('___\u{29F9A}')); -assertEquals('"___\u{2A27D}"', JSON.stringify('___\u{2A27D}')); -assertEquals('"___\u{2B363}"', JSON.stringify('___\u{2B363}')); -assertEquals('"___\u{2C037}"', JSON.stringify('___\u{2C037}')); -assertEquals('"___\u{2FAE0}"', JSON.stringify('___\u{2FAE0}')); -assertEquals('"___\u{2FFCF}"', JSON.stringify('___\u{2FFCF}')); -assertEquals('"___\u{32C1C}"', JSON.stringify('___\u{32C1C}')); -assertEquals('"___\u{33DA8}"', JSON.stringify('___\u{33DA8}')); -assertEquals('"___\u{3DCA4}"', JSON.stringify('___\u{3DCA4}')); -assertEquals('"___\u{44FA0}"', JSON.stringify('___\u{44FA0}')); -assertEquals('"___\u{45618}"', JSON.stringify('___\u{45618}')); -assertEquals('"___\u{47395}"', JSON.stringify('___\u{47395}')); -assertEquals('"___\u{4752C}"', JSON.stringify('___\u{4752C}')); -assertEquals('"___\u{483FE}"', JSON.stringify('___\u{483FE}')); -assertEquals('"___\u{49D35}"', JSON.stringify('___\u{49D35}')); -assertEquals('"___\u{4CE3B}"', JSON.stringify('___\u{4CE3B}')); -assertEquals('"___\u{55196}"', JSON.stringify('___\u{55196}')); -assertEquals('"___\u{58B3E}"', JSON.stringify('___\u{58B3E}')); -assertEquals('"___\u{5AA47}"', JSON.stringify('___\u{5AA47}')); -assertEquals('"___\u{5C4B8}"', JSON.stringify('___\u{5C4B8}')); -assertEquals('"___\u{5DD1B}"', JSON.stringify('___\u{5DD1B}')); -assertEquals('"___\u{5FDCB}"', JSON.stringify('___\u{5FDCB}')); -assertEquals('"___\u{611BA}"', JSON.stringify('___\u{611BA}')); -assertEquals('"___\u{66433}"', JSON.stringify('___\u{66433}')); -assertEquals('"___\u{690D7}"', JSON.stringify('___\u{690D7}')); -assertEquals('"___\u{6F617}"', JSON.stringify('___\u{6F617}')); -assertEquals('"___\u{711E4}"', JSON.stringify('___\u{711E4}')); -assertEquals('"___\u{758D2}"', JSON.stringify('___\u{758D2}')); -assertEquals('"___\u{780AC}"', JSON.stringify('___\u{780AC}')); -assertEquals('"___\u{7AE5F}"', JSON.stringify('___\u{7AE5F}')); -assertEquals('"___\u{7C2FB}"', JSON.stringify('___\u{7C2FB}')); -assertEquals('"___\u{7D25F}"', JSON.stringify('___\u{7D25F}')); -assertEquals('"___\u{8027A}"', JSON.stringify('___\u{8027A}')); -assertEquals('"___\u{84817}"', JSON.stringify('___\u{84817}')); -assertEquals('"___\u{8B070}"', JSON.stringify('___\u{8B070}')); -assertEquals('"___\u{8B390}"', JSON.stringify('___\u{8B390}')); -assertEquals('"___\u{8BC03}"', JSON.stringify('___\u{8BC03}')); -assertEquals('"___\u{8BE63}"', JSON.stringify('___\u{8BE63}')); -assertEquals('"___\u{8F12A}"', JSON.stringify('___\u{8F12A}')); -assertEquals('"___\u{9345D}"', JSON.stringify('___\u{9345D}')); -assertEquals('"___\u{937A9}"', JSON.stringify('___\u{937A9}')); -assertEquals('"___\u{94596}"', JSON.stringify('___\u{94596}')); -assertEquals('"___\u{967BB}"', JSON.stringify('___\u{967BB}')); -assertEquals('"___\u{A19D1}"', JSON.stringify('___\u{A19D1}')); -assertEquals('"___\u{A4FC5}"', JSON.stringify('___\u{A4FC5}')); -assertEquals('"___\u{AC9CF}"', JSON.stringify('___\u{AC9CF}')); -assertEquals('"___\u{B1366}"', JSON.stringify('___\u{B1366}')); -assertEquals('"___\u{B3D32}"', JSON.stringify('___\u{B3D32}')); -assertEquals('"___\u{B74BA}"', JSON.stringify('___\u{B74BA}')); -assertEquals('"___\u{B8FB0}"', JSON.stringify('___\u{B8FB0}')); -assertEquals('"___\u{BA0A5}"', JSON.stringify('___\u{BA0A5}')); -assertEquals('"___\u{BB48E}"', JSON.stringify('___\u{BB48E}')); -assertEquals('"___\u{C0B60}"', JSON.stringify('___\u{C0B60}')); -assertEquals('"___\u{C2D34}"', JSON.stringify('___\u{C2D34}')); -assertEquals('"___\u{C6C75}"', JSON.stringify('___\u{C6C75}')); -assertEquals('"___\u{C9F26}"', JSON.stringify('___\u{C9F26}')); -assertEquals('"___\u{CDBD0}"', JSON.stringify('___\u{CDBD0}')); -assertEquals('"___\u{D1E28}"', JSON.stringify('___\u{D1E28}')); -assertEquals('"___\u{D4A80}"', JSON.stringify('___\u{D4A80}')); -assertEquals('"___\u{D947F}"', JSON.stringify('___\u{D947F}')); -assertEquals('"___\u{D9B8A}"', JSON.stringify('___\u{D9B8A}')); -assertEquals('"___\u{DA203}"', JSON.stringify('___\u{DA203}')); -assertEquals('"___\u{DEFD3}"', JSON.stringify('___\u{DEFD3}')); -assertEquals('"___\u{E4F7C}"', JSON.stringify('___\u{E4F7C}')); -assertEquals('"___\u{E6BB3}"', JSON.stringify('___\u{E6BB3}')); -assertEquals('"___\u{E972D}"', JSON.stringify('___\u{E972D}')); -assertEquals('"___\u{EB335}"', JSON.stringify('___\u{EB335}')); -assertEquals('"___\u{ED3F8}"', JSON.stringify('___\u{ED3F8}')); -assertEquals('"___\u{ED940}"', JSON.stringify('___\u{ED940}')); -assertEquals('"___\u{EF6F8}"', JSON.stringify('___\u{EF6F8}')); -assertEquals('"___\u{F1F57}"', JSON.stringify('___\u{F1F57}')); -assertEquals('"___\u{F33B5}"', JSON.stringify('___\u{F33B5}')); -assertEquals('"___\u{F4D2A}"', JSON.stringify('___\u{F4D2A}')); -assertEquals('"___\u{F70BA}"', JSON.stringify('___\u{F70BA}')); -assertEquals('"___\u{F899F}"', JSON.stringify('___\u{F899F}')); -assertEquals('"___\u{1034BF}"', JSON.stringify('___\u{1034BF}')); -assertEquals('"___\u{107ACF}"', JSON.stringify('___\u{107ACF}')); -assertEquals('"___\u{10881F}"', JSON.stringify('___\u{10881F}')); -assertEquals('"___\u{1098A5}"', JSON.stringify('___\u{1098A5}')); -assertEquals('"___\u{10ABD1}"', JSON.stringify('___\u{10ABD1}')); -assertEquals('"___\u{10B5C5}"', JSON.stringify('___\u{10B5C5}')); -assertEquals('"___\u{10CC79}"', JSON.stringify('___\u{10CC79}')); -assertEquals('"___\u{10CD19}"', JSON.stringify('___\u{10CD19}')); -assertEquals('"___\u{10FFFF}"', JSON.stringify('___\u{10FFFF}')); diff --git a/implementation-contributed/v8/mjsunit/harmony/well-formed-json-stringify-unchecked.js b/implementation-contributed/v8/mjsunit/harmony/well-formed-json-stringify-unchecked.js deleted file mode 100644 index 260d748ece5..00000000000 --- a/implementation-contributed/v8/mjsunit/harmony/well-formed-json-stringify-unchecked.js +++ /dev/null @@ -1,2575 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-json-stringify - -// Test JSON.stringify for cases that hit -// JsonStringifier::SerializeStringUnchecked_. - -// All code points from U+0000 to U+00FF. -assertEquals('"\\u0000"', JSON.stringify('\0')); -assertEquals('"\\u0001"', JSON.stringify('\x01')); -assertEquals('"\\u0002"', JSON.stringify('\x02')); -assertEquals('"\\u0003"', JSON.stringify('\x03')); -assertEquals('"\\u0004"', JSON.stringify('\x04')); -assertEquals('"\\u0005"', JSON.stringify('\x05')); -assertEquals('"\\u0006"', JSON.stringify('\x06')); -assertEquals('"\\u0007"', JSON.stringify('\x07')); -assertEquals('"\\b"', JSON.stringify('\b')); -assertEquals('"\\t"', JSON.stringify('\t')); -assertEquals('"\\n"', JSON.stringify('\n')); -assertEquals('"\\u000b"', JSON.stringify('\x0B')); -assertEquals('"\\f"', JSON.stringify('\f')); -assertEquals('"\\r"', JSON.stringify('\r')); -assertEquals('"\\u000e"', JSON.stringify('\x0E')); -assertEquals('"\\u000f"', JSON.stringify('\x0F')); -assertEquals('"\\u0010"', JSON.stringify('\x10')); -assertEquals('"\\u0011"', JSON.stringify('\x11')); -assertEquals('"\\u0012"', JSON.stringify('\x12')); -assertEquals('"\\u0013"', JSON.stringify('\x13')); -assertEquals('"\\u0014"', JSON.stringify('\x14')); -assertEquals('"\\u0015"', JSON.stringify('\x15')); -assertEquals('"\\u0016"', JSON.stringify('\x16')); -assertEquals('"\\u0017"', JSON.stringify('\x17')); -assertEquals('"\\u0018"', JSON.stringify('\x18')); -assertEquals('"\\u0019"', JSON.stringify('\x19')); -assertEquals('"\\u001a"', JSON.stringify('\x1A')); -assertEquals('"\\u001b"', JSON.stringify('\x1B')); -assertEquals('"\\u001c"', JSON.stringify('\x1C')); -assertEquals('"\\u001d"', JSON.stringify('\x1D')); -assertEquals('"\\u001e"', JSON.stringify('\x1E')); -assertEquals('"\\u001f"', JSON.stringify('\x1F')); -assertEquals('" "', JSON.stringify(' ')); -assertEquals('"!"', JSON.stringify('!')); -assertEquals('"\\""', JSON.stringify('"')); -assertEquals('"#"', JSON.stringify('#')); -assertEquals('"$"', JSON.stringify('$')); -assertEquals('"%"', JSON.stringify('%')); -assertEquals('"&"', JSON.stringify('&')); -assertEquals('"\'"', JSON.stringify('\'')); -assertEquals('"("', JSON.stringify('(')); -assertEquals('")"', JSON.stringify(')')); -assertEquals('"*"', JSON.stringify('*')); -assertEquals('"+"', JSON.stringify('+')); -assertEquals('","', JSON.stringify(',')); -assertEquals('"-"', JSON.stringify('-')); -assertEquals('"."', JSON.stringify('.')); -assertEquals('"/"', JSON.stringify('/')); -assertEquals('"0"', JSON.stringify('0')); -assertEquals('"1"', JSON.stringify('1')); -assertEquals('"2"', JSON.stringify('2')); -assertEquals('"3"', JSON.stringify('3')); -assertEquals('"4"', JSON.stringify('4')); -assertEquals('"5"', JSON.stringify('5')); -assertEquals('"6"', JSON.stringify('6')); -assertEquals('"7"', JSON.stringify('7')); -assertEquals('"8"', JSON.stringify('8')); -assertEquals('"9"', JSON.stringify('9')); -assertEquals('":"', JSON.stringify(':')); -assertEquals('";"', JSON.stringify(';')); -assertEquals('"<"', JSON.stringify('<')); -assertEquals('"="', JSON.stringify('=')); -assertEquals('">"', JSON.stringify('>')); -assertEquals('"?"', JSON.stringify('?')); -assertEquals('"@"', JSON.stringify('@')); -assertEquals('"A"', JSON.stringify('A')); -assertEquals('"B"', JSON.stringify('B')); -assertEquals('"C"', JSON.stringify('C')); -assertEquals('"D"', JSON.stringify('D')); -assertEquals('"E"', JSON.stringify('E')); -assertEquals('"F"', JSON.stringify('F')); -assertEquals('"G"', JSON.stringify('G')); -assertEquals('"H"', JSON.stringify('H')); -assertEquals('"I"', JSON.stringify('I')); -assertEquals('"J"', JSON.stringify('J')); -assertEquals('"K"', JSON.stringify('K')); -assertEquals('"L"', JSON.stringify('L')); -assertEquals('"M"', JSON.stringify('M')); -assertEquals('"N"', JSON.stringify('N')); -assertEquals('"O"', JSON.stringify('O')); -assertEquals('"P"', JSON.stringify('P')); -assertEquals('"Q"', JSON.stringify('Q')); -assertEquals('"R"', JSON.stringify('R')); -assertEquals('"S"', JSON.stringify('S')); -assertEquals('"T"', JSON.stringify('T')); -assertEquals('"U"', JSON.stringify('U')); -assertEquals('"V"', JSON.stringify('V')); -assertEquals('"W"', JSON.stringify('W')); -assertEquals('"X"', JSON.stringify('X')); -assertEquals('"Y"', JSON.stringify('Y')); -assertEquals('"Z"', JSON.stringify('Z')); -assertEquals('"["', JSON.stringify('[')); -assertEquals('"\\\\"', JSON.stringify('\\')); -assertEquals('"]"', JSON.stringify(']')); -assertEquals('"^"', JSON.stringify('^')); -assertEquals('"_"', JSON.stringify('_')); -assertEquals('"`"', JSON.stringify('`')); -assertEquals('"a"', JSON.stringify('a')); -assertEquals('"b"', JSON.stringify('b')); -assertEquals('"c"', JSON.stringify('c')); -assertEquals('"d"', JSON.stringify('d')); -assertEquals('"e"', JSON.stringify('e')); -assertEquals('"f"', JSON.stringify('f')); -assertEquals('"g"', JSON.stringify('g')); -assertEquals('"h"', JSON.stringify('h')); -assertEquals('"i"', JSON.stringify('i')); -assertEquals('"j"', JSON.stringify('j')); -assertEquals('"k"', JSON.stringify('k')); -assertEquals('"l"', JSON.stringify('l')); -assertEquals('"m"', JSON.stringify('m')); -assertEquals('"n"', JSON.stringify('n')); -assertEquals('"o"', JSON.stringify('o')); -assertEquals('"p"', JSON.stringify('p')); -assertEquals('"q"', JSON.stringify('q')); -assertEquals('"r"', JSON.stringify('r')); -assertEquals('"s"', JSON.stringify('s')); -assertEquals('"t"', JSON.stringify('t')); -assertEquals('"u"', JSON.stringify('u')); -assertEquals('"v"', JSON.stringify('v')); -assertEquals('"w"', JSON.stringify('w')); -assertEquals('"x"', JSON.stringify('x')); -assertEquals('"y"', JSON.stringify('y')); -assertEquals('"z"', JSON.stringify('z')); -assertEquals('"{"', JSON.stringify('{')); -assertEquals('"|"', JSON.stringify('|')); -assertEquals('"}"', JSON.stringify('}')); -assertEquals('"~"', JSON.stringify('~')); -assertEquals('"\x7F"', JSON.stringify('\x7F')); -assertEquals('"\x80"', JSON.stringify('\x80')); -assertEquals('"\x81"', JSON.stringify('\x81')); -assertEquals('"\x82"', JSON.stringify('\x82')); -assertEquals('"\x83"', JSON.stringify('\x83')); -assertEquals('"\x84"', JSON.stringify('\x84')); -assertEquals('"\x85"', JSON.stringify('\x85')); -assertEquals('"\x86"', JSON.stringify('\x86')); -assertEquals('"\x87"', JSON.stringify('\x87')); -assertEquals('"\x88"', JSON.stringify('\x88')); -assertEquals('"\x89"', JSON.stringify('\x89')); -assertEquals('"\x8A"', JSON.stringify('\x8A')); -assertEquals('"\x8B"', JSON.stringify('\x8B')); -assertEquals('"\x8C"', JSON.stringify('\x8C')); -assertEquals('"\x8D"', JSON.stringify('\x8D')); -assertEquals('"\x8E"', JSON.stringify('\x8E')); -assertEquals('"\x8F"', JSON.stringify('\x8F')); -assertEquals('"\x90"', JSON.stringify('\x90')); -assertEquals('"\x91"', JSON.stringify('\x91')); -assertEquals('"\x92"', JSON.stringify('\x92')); -assertEquals('"\x93"', JSON.stringify('\x93')); -assertEquals('"\x94"', JSON.stringify('\x94')); -assertEquals('"\x95"', JSON.stringify('\x95')); -assertEquals('"\x96"', JSON.stringify('\x96')); -assertEquals('"\x97"', JSON.stringify('\x97')); -assertEquals('"\x98"', JSON.stringify('\x98')); -assertEquals('"\x99"', JSON.stringify('\x99')); -assertEquals('"\x9A"', JSON.stringify('\x9A')); -assertEquals('"\x9B"', JSON.stringify('\x9B')); -assertEquals('"\x9C"', JSON.stringify('\x9C')); -assertEquals('"\x9D"', JSON.stringify('\x9D')); -assertEquals('"\x9E"', JSON.stringify('\x9E')); -assertEquals('"\x9F"', JSON.stringify('\x9F')); -assertEquals('"\xA0"', JSON.stringify('\xA0')); -assertEquals('"\xA1"', JSON.stringify('\xA1')); -assertEquals('"\xA2"', JSON.stringify('\xA2')); -assertEquals('"\xA3"', JSON.stringify('\xA3')); -assertEquals('"\xA4"', JSON.stringify('\xA4')); -assertEquals('"\xA5"', JSON.stringify('\xA5')); -assertEquals('"\xA6"', JSON.stringify('\xA6')); -assertEquals('"\xA7"', JSON.stringify('\xA7')); -assertEquals('"\xA8"', JSON.stringify('\xA8')); -assertEquals('"\xA9"', JSON.stringify('\xA9')); -assertEquals('"\xAA"', JSON.stringify('\xAA')); -assertEquals('"\xAB"', JSON.stringify('\xAB')); -assertEquals('"\xAC"', JSON.stringify('\xAC')); -assertEquals('"\xAD"', JSON.stringify('\xAD')); -assertEquals('"\xAE"', JSON.stringify('\xAE')); -assertEquals('"\xAF"', JSON.stringify('\xAF')); -assertEquals('"\xB0"', JSON.stringify('\xB0')); -assertEquals('"\xB1"', JSON.stringify('\xB1')); -assertEquals('"\xB2"', JSON.stringify('\xB2')); -assertEquals('"\xB3"', JSON.stringify('\xB3')); -assertEquals('"\xB4"', JSON.stringify('\xB4')); -assertEquals('"\xB5"', JSON.stringify('\xB5')); -assertEquals('"\xB6"', JSON.stringify('\xB6')); -assertEquals('"\xB7"', JSON.stringify('\xB7')); -assertEquals('"\xB8"', JSON.stringify('\xB8')); -assertEquals('"\xB9"', JSON.stringify('\xB9')); -assertEquals('"\xBA"', JSON.stringify('\xBA')); -assertEquals('"\xBB"', JSON.stringify('\xBB')); -assertEquals('"\xBC"', JSON.stringify('\xBC')); -assertEquals('"\xBD"', JSON.stringify('\xBD')); -assertEquals('"\xBE"', JSON.stringify('\xBE')); -assertEquals('"\xBF"', JSON.stringify('\xBF')); -assertEquals('"\xC0"', JSON.stringify('\xC0')); -assertEquals('"\xC1"', JSON.stringify('\xC1')); -assertEquals('"\xC2"', JSON.stringify('\xC2')); -assertEquals('"\xC3"', JSON.stringify('\xC3')); -assertEquals('"\xC4"', JSON.stringify('\xC4')); -assertEquals('"\xC5"', JSON.stringify('\xC5')); -assertEquals('"\xC6"', JSON.stringify('\xC6')); -assertEquals('"\xC7"', JSON.stringify('\xC7')); -assertEquals('"\xC8"', JSON.stringify('\xC8')); -assertEquals('"\xC9"', JSON.stringify('\xC9')); -assertEquals('"\xCA"', JSON.stringify('\xCA')); -assertEquals('"\xCB"', JSON.stringify('\xCB')); -assertEquals('"\xCC"', JSON.stringify('\xCC')); -assertEquals('"\xCD"', JSON.stringify('\xCD')); -assertEquals('"\xCE"', JSON.stringify('\xCE')); -assertEquals('"\xCF"', JSON.stringify('\xCF')); -assertEquals('"\xD0"', JSON.stringify('\xD0')); -assertEquals('"\xD1"', JSON.stringify('\xD1')); -assertEquals('"\xD2"', JSON.stringify('\xD2')); -assertEquals('"\xD3"', JSON.stringify('\xD3')); -assertEquals('"\xD4"', JSON.stringify('\xD4')); -assertEquals('"\xD5"', JSON.stringify('\xD5')); -assertEquals('"\xD6"', JSON.stringify('\xD6')); -assertEquals('"\xD7"', JSON.stringify('\xD7')); -assertEquals('"\xD8"', JSON.stringify('\xD8')); -assertEquals('"\xD9"', JSON.stringify('\xD9')); -assertEquals('"\xDA"', JSON.stringify('\xDA')); -assertEquals('"\xDB"', JSON.stringify('\xDB')); -assertEquals('"\xDC"', JSON.stringify('\xDC')); -assertEquals('"\xDD"', JSON.stringify('\xDD')); -assertEquals('"\xDE"', JSON.stringify('\xDE')); -assertEquals('"\xDF"', JSON.stringify('\xDF')); -assertEquals('"\xE0"', JSON.stringify('\xE0')); -assertEquals('"\xE1"', JSON.stringify('\xE1')); -assertEquals('"\xE2"', JSON.stringify('\xE2')); -assertEquals('"\xE3"', JSON.stringify('\xE3')); -assertEquals('"\xE4"', JSON.stringify('\xE4')); -assertEquals('"\xE5"', JSON.stringify('\xE5')); -assertEquals('"\xE6"', JSON.stringify('\xE6')); -assertEquals('"\xE7"', JSON.stringify('\xE7')); -assertEquals('"\xE8"', JSON.stringify('\xE8')); -assertEquals('"\xE9"', JSON.stringify('\xE9')); -assertEquals('"\xEA"', JSON.stringify('\xEA')); -assertEquals('"\xEB"', JSON.stringify('\xEB')); -assertEquals('"\xEC"', JSON.stringify('\xEC')); -assertEquals('"\xED"', JSON.stringify('\xED')); -assertEquals('"\xEE"', JSON.stringify('\xEE')); -assertEquals('"\xEF"', JSON.stringify('\xEF')); -assertEquals('"\xF0"', JSON.stringify('\xF0')); -assertEquals('"\xF1"', JSON.stringify('\xF1')); -assertEquals('"\xF2"', JSON.stringify('\xF2')); -assertEquals('"\xF3"', JSON.stringify('\xF3')); -assertEquals('"\xF4"', JSON.stringify('\xF4')); -assertEquals('"\xF5"', JSON.stringify('\xF5')); -assertEquals('"\xF6"', JSON.stringify('\xF6')); -assertEquals('"\xF7"', JSON.stringify('\xF7')); -assertEquals('"\xF8"', JSON.stringify('\xF8')); -assertEquals('"\xF9"', JSON.stringify('\xF9')); -assertEquals('"\xFA"', JSON.stringify('\xFA')); -assertEquals('"\xFB"', JSON.stringify('\xFB')); -assertEquals('"\xFC"', JSON.stringify('\xFC')); -assertEquals('"\xFD"', JSON.stringify('\xFD')); -assertEquals('"\xFE"', JSON.stringify('\xFE')); -assertEquals('"\xFF"', JSON.stringify('\xFF')); - -// A random selection of code points from U+0100 to U+D7FF. -assertEquals('"\u0100"', JSON.stringify('\u0100')); -assertEquals('"\u0120"', JSON.stringify('\u0120')); -assertEquals('"\u07D3"', JSON.stringify('\u07D3')); -assertEquals('"\u0B8B"', JSON.stringify('\u0B8B')); -assertEquals('"\u0C4C"', JSON.stringify('\u0C4C')); -assertEquals('"\u178D"', JSON.stringify('\u178D')); -assertEquals('"\u18B8"', JSON.stringify('\u18B8')); -assertEquals('"\u193E"', JSON.stringify('\u193E')); -assertEquals('"\u198A"', JSON.stringify('\u198A')); -assertEquals('"\u1AF5"', JSON.stringify('\u1AF5')); -assertEquals('"\u1D38"', JSON.stringify('\u1D38')); -assertEquals('"\u1E37"', JSON.stringify('\u1E37')); -assertEquals('"\u1FC2"', JSON.stringify('\u1FC2')); -assertEquals('"\u22C7"', JSON.stringify('\u22C7')); -assertEquals('"\u2619"', JSON.stringify('\u2619')); -assertEquals('"\u272A"', JSON.stringify('\u272A')); -assertEquals('"\u2B7F"', JSON.stringify('\u2B7F')); -assertEquals('"\u2DFF"', JSON.stringify('\u2DFF')); -assertEquals('"\u341B"', JSON.stringify('\u341B')); -assertEquals('"\u3A3C"', JSON.stringify('\u3A3C')); -assertEquals('"\u3E53"', JSON.stringify('\u3E53')); -assertEquals('"\u3EC2"', JSON.stringify('\u3EC2')); -assertEquals('"\u3F76"', JSON.stringify('\u3F76')); -assertEquals('"\u3F85"', JSON.stringify('\u3F85')); -assertEquals('"\u43C7"', JSON.stringify('\u43C7')); -assertEquals('"\u4A19"', JSON.stringify('\u4A19')); -assertEquals('"\u4A1C"', JSON.stringify('\u4A1C')); -assertEquals('"\u4F80"', JSON.stringify('\u4F80')); -assertEquals('"\u5A30"', JSON.stringify('\u5A30')); -assertEquals('"\u5B55"', JSON.stringify('\u5B55')); -assertEquals('"\u5C74"', JSON.stringify('\u5C74')); -assertEquals('"\u6006"', JSON.stringify('\u6006')); -assertEquals('"\u63CC"', JSON.stringify('\u63CC')); -assertEquals('"\u6608"', JSON.stringify('\u6608')); -assertEquals('"\u6ABF"', JSON.stringify('\u6ABF')); -assertEquals('"\u6AE9"', JSON.stringify('\u6AE9')); -assertEquals('"\u6C91"', JSON.stringify('\u6C91')); -assertEquals('"\u714B"', JSON.stringify('\u714B')); -assertEquals('"\u728A"', JSON.stringify('\u728A')); -assertEquals('"\u7485"', JSON.stringify('\u7485')); -assertEquals('"\u77C8"', JSON.stringify('\u77C8')); -assertEquals('"\u7BE9"', JSON.stringify('\u7BE9')); -assertEquals('"\u7CEF"', JSON.stringify('\u7CEF')); -assertEquals('"\u7DD5"', JSON.stringify('\u7DD5')); -assertEquals('"\u8DF1"', JSON.stringify('\u8DF1')); -assertEquals('"\u94A9"', JSON.stringify('\u94A9')); -assertEquals('"\u94F2"', JSON.stringify('\u94F2')); -assertEquals('"\u9A7A"', JSON.stringify('\u9A7A')); -assertEquals('"\u9AA6"', JSON.stringify('\u9AA6')); -assertEquals('"\uA2B0"', JSON.stringify('\uA2B0')); -assertEquals('"\uB711"', JSON.stringify('\uB711')); -assertEquals('"\uBC01"', JSON.stringify('\uBC01')); -assertEquals('"\uBCB6"', JSON.stringify('\uBCB6')); -assertEquals('"\uBD70"', JSON.stringify('\uBD70')); -assertEquals('"\uC3CD"', JSON.stringify('\uC3CD')); -assertEquals('"\uC451"', JSON.stringify('\uC451')); -assertEquals('"\uC677"', JSON.stringify('\uC677')); -assertEquals('"\uC89B"', JSON.stringify('\uC89B')); -assertEquals('"\uCBEF"', JSON.stringify('\uCBEF')); -assertEquals('"\uCEF8"', JSON.stringify('\uCEF8')); -assertEquals('"\uD089"', JSON.stringify('\uD089')); -assertEquals('"\uD24D"', JSON.stringify('\uD24D')); -assertEquals('"\uD3A7"', JSON.stringify('\uD3A7')); -assertEquals('"\uD7FF"', JSON.stringify('\uD7FF')); - -// All lone surrogates, i.e. code points from U+D800 to U+DFFF. -assertEquals('"\\ud800"', JSON.stringify('\uD800')); -assertEquals('"\\ud801"', JSON.stringify('\uD801')); -assertEquals('"\\ud802"', JSON.stringify('\uD802')); -assertEquals('"\\ud803"', JSON.stringify('\uD803')); -assertEquals('"\\ud804"', JSON.stringify('\uD804')); -assertEquals('"\\ud805"', JSON.stringify('\uD805')); -assertEquals('"\\ud806"', JSON.stringify('\uD806')); -assertEquals('"\\ud807"', JSON.stringify('\uD807')); -assertEquals('"\\ud808"', JSON.stringify('\uD808')); -assertEquals('"\\ud809"', JSON.stringify('\uD809')); -assertEquals('"\\ud80a"', JSON.stringify('\uD80A')); -assertEquals('"\\ud80b"', JSON.stringify('\uD80B')); -assertEquals('"\\ud80c"', JSON.stringify('\uD80C')); -assertEquals('"\\ud80d"', JSON.stringify('\uD80D')); -assertEquals('"\\ud80e"', JSON.stringify('\uD80E')); -assertEquals('"\\ud80f"', JSON.stringify('\uD80F')); -assertEquals('"\\ud810"', JSON.stringify('\uD810')); -assertEquals('"\\ud811"', JSON.stringify('\uD811')); -assertEquals('"\\ud812"', JSON.stringify('\uD812')); -assertEquals('"\\ud813"', JSON.stringify('\uD813')); -assertEquals('"\\ud814"', JSON.stringify('\uD814')); -assertEquals('"\\ud815"', JSON.stringify('\uD815')); -assertEquals('"\\ud816"', JSON.stringify('\uD816')); -assertEquals('"\\ud817"', JSON.stringify('\uD817')); -assertEquals('"\\ud818"', JSON.stringify('\uD818')); -assertEquals('"\\ud819"', JSON.stringify('\uD819')); -assertEquals('"\\ud81a"', JSON.stringify('\uD81A')); -assertEquals('"\\ud81b"', JSON.stringify('\uD81B')); -assertEquals('"\\ud81c"', JSON.stringify('\uD81C')); -assertEquals('"\\ud81d"', JSON.stringify('\uD81D')); -assertEquals('"\\ud81e"', JSON.stringify('\uD81E')); -assertEquals('"\\ud81f"', JSON.stringify('\uD81F')); -assertEquals('"\\ud820"', JSON.stringify('\uD820')); -assertEquals('"\\ud821"', JSON.stringify('\uD821')); -assertEquals('"\\ud822"', JSON.stringify('\uD822')); -assertEquals('"\\ud823"', JSON.stringify('\uD823')); -assertEquals('"\\ud824"', JSON.stringify('\uD824')); -assertEquals('"\\ud825"', JSON.stringify('\uD825')); -assertEquals('"\\ud826"', JSON.stringify('\uD826')); -assertEquals('"\\ud827"', JSON.stringify('\uD827')); -assertEquals('"\\ud828"', JSON.stringify('\uD828')); -assertEquals('"\\ud829"', JSON.stringify('\uD829')); -assertEquals('"\\ud82a"', JSON.stringify('\uD82A')); -assertEquals('"\\ud82b"', JSON.stringify('\uD82B')); -assertEquals('"\\ud82c"', JSON.stringify('\uD82C')); -assertEquals('"\\ud82d"', JSON.stringify('\uD82D')); -assertEquals('"\\ud82e"', JSON.stringify('\uD82E')); -assertEquals('"\\ud82f"', JSON.stringify('\uD82F')); -assertEquals('"\\ud830"', JSON.stringify('\uD830')); -assertEquals('"\\ud831"', JSON.stringify('\uD831')); -assertEquals('"\\ud832"', JSON.stringify('\uD832')); -assertEquals('"\\ud833"', JSON.stringify('\uD833')); -assertEquals('"\\ud834"', JSON.stringify('\uD834')); -assertEquals('"\\ud835"', JSON.stringify('\uD835')); -assertEquals('"\\ud836"', JSON.stringify('\uD836')); -assertEquals('"\\ud837"', JSON.stringify('\uD837')); -assertEquals('"\\ud838"', JSON.stringify('\uD838')); -assertEquals('"\\ud839"', JSON.stringify('\uD839')); -assertEquals('"\\ud83a"', JSON.stringify('\uD83A')); -assertEquals('"\\ud83b"', JSON.stringify('\uD83B')); -assertEquals('"\\ud83c"', JSON.stringify('\uD83C')); -assertEquals('"\\ud83d"', JSON.stringify('\uD83D')); -assertEquals('"\\ud83e"', JSON.stringify('\uD83E')); -assertEquals('"\\ud83f"', JSON.stringify('\uD83F')); -assertEquals('"\\ud840"', JSON.stringify('\uD840')); -assertEquals('"\\ud841"', JSON.stringify('\uD841')); -assertEquals('"\\ud842"', JSON.stringify('\uD842')); -assertEquals('"\\ud843"', JSON.stringify('\uD843')); -assertEquals('"\\ud844"', JSON.stringify('\uD844')); -assertEquals('"\\ud845"', JSON.stringify('\uD845')); -assertEquals('"\\ud846"', JSON.stringify('\uD846')); -assertEquals('"\\ud847"', JSON.stringify('\uD847')); -assertEquals('"\\ud848"', JSON.stringify('\uD848')); -assertEquals('"\\ud849"', JSON.stringify('\uD849')); -assertEquals('"\\ud84a"', JSON.stringify('\uD84A')); -assertEquals('"\\ud84b"', JSON.stringify('\uD84B')); -assertEquals('"\\ud84c"', JSON.stringify('\uD84C')); -assertEquals('"\\ud84d"', JSON.stringify('\uD84D')); -assertEquals('"\\ud84e"', JSON.stringify('\uD84E')); -assertEquals('"\\ud84f"', JSON.stringify('\uD84F')); -assertEquals('"\\ud850"', JSON.stringify('\uD850')); -assertEquals('"\\ud851"', JSON.stringify('\uD851')); -assertEquals('"\\ud852"', JSON.stringify('\uD852')); -assertEquals('"\\ud853"', JSON.stringify('\uD853')); -assertEquals('"\\ud854"', JSON.stringify('\uD854')); -assertEquals('"\\ud855"', JSON.stringify('\uD855')); -assertEquals('"\\ud856"', JSON.stringify('\uD856')); -assertEquals('"\\ud857"', JSON.stringify('\uD857')); -assertEquals('"\\ud858"', JSON.stringify('\uD858')); -assertEquals('"\\ud859"', JSON.stringify('\uD859')); -assertEquals('"\\ud85a"', JSON.stringify('\uD85A')); -assertEquals('"\\ud85b"', JSON.stringify('\uD85B')); -assertEquals('"\\ud85c"', JSON.stringify('\uD85C')); -assertEquals('"\\ud85d"', JSON.stringify('\uD85D')); -assertEquals('"\\ud85e"', JSON.stringify('\uD85E')); -assertEquals('"\\ud85f"', JSON.stringify('\uD85F')); -assertEquals('"\\ud860"', JSON.stringify('\uD860')); -assertEquals('"\\ud861"', JSON.stringify('\uD861')); -assertEquals('"\\ud862"', JSON.stringify('\uD862')); -assertEquals('"\\ud863"', JSON.stringify('\uD863')); -assertEquals('"\\ud864"', JSON.stringify('\uD864')); -assertEquals('"\\ud865"', JSON.stringify('\uD865')); -assertEquals('"\\ud866"', JSON.stringify('\uD866')); -assertEquals('"\\ud867"', JSON.stringify('\uD867')); -assertEquals('"\\ud868"', JSON.stringify('\uD868')); -assertEquals('"\\ud869"', JSON.stringify('\uD869')); -assertEquals('"\\ud86a"', JSON.stringify('\uD86A')); -assertEquals('"\\ud86b"', JSON.stringify('\uD86B')); -assertEquals('"\\ud86c"', JSON.stringify('\uD86C')); -assertEquals('"\\ud86d"', JSON.stringify('\uD86D')); -assertEquals('"\\ud86e"', JSON.stringify('\uD86E')); -assertEquals('"\\ud86f"', JSON.stringify('\uD86F')); -assertEquals('"\\ud870"', JSON.stringify('\uD870')); -assertEquals('"\\ud871"', JSON.stringify('\uD871')); -assertEquals('"\\ud872"', JSON.stringify('\uD872')); -assertEquals('"\\ud873"', JSON.stringify('\uD873')); -assertEquals('"\\ud874"', JSON.stringify('\uD874')); -assertEquals('"\\ud875"', JSON.stringify('\uD875')); -assertEquals('"\\ud876"', JSON.stringify('\uD876')); -assertEquals('"\\ud877"', JSON.stringify('\uD877')); -assertEquals('"\\ud878"', JSON.stringify('\uD878')); -assertEquals('"\\ud879"', JSON.stringify('\uD879')); -assertEquals('"\\ud87a"', JSON.stringify('\uD87A')); -assertEquals('"\\ud87b"', JSON.stringify('\uD87B')); -assertEquals('"\\ud87c"', JSON.stringify('\uD87C')); -assertEquals('"\\ud87d"', JSON.stringify('\uD87D')); -assertEquals('"\\ud87e"', JSON.stringify('\uD87E')); -assertEquals('"\\ud87f"', JSON.stringify('\uD87F')); -assertEquals('"\\ud880"', JSON.stringify('\uD880')); -assertEquals('"\\ud881"', JSON.stringify('\uD881')); -assertEquals('"\\ud882"', JSON.stringify('\uD882')); -assertEquals('"\\ud883"', JSON.stringify('\uD883')); -assertEquals('"\\ud884"', JSON.stringify('\uD884')); -assertEquals('"\\ud885"', JSON.stringify('\uD885')); -assertEquals('"\\ud886"', JSON.stringify('\uD886')); -assertEquals('"\\ud887"', JSON.stringify('\uD887')); -assertEquals('"\\ud888"', JSON.stringify('\uD888')); -assertEquals('"\\ud889"', JSON.stringify('\uD889')); -assertEquals('"\\ud88a"', JSON.stringify('\uD88A')); -assertEquals('"\\ud88b"', JSON.stringify('\uD88B')); -assertEquals('"\\ud88c"', JSON.stringify('\uD88C')); -assertEquals('"\\ud88d"', JSON.stringify('\uD88D')); -assertEquals('"\\ud88e"', JSON.stringify('\uD88E')); -assertEquals('"\\ud88f"', JSON.stringify('\uD88F')); -assertEquals('"\\ud890"', JSON.stringify('\uD890')); -assertEquals('"\\ud891"', JSON.stringify('\uD891')); -assertEquals('"\\ud892"', JSON.stringify('\uD892')); -assertEquals('"\\ud893"', JSON.stringify('\uD893')); -assertEquals('"\\ud894"', JSON.stringify('\uD894')); -assertEquals('"\\ud895"', JSON.stringify('\uD895')); -assertEquals('"\\ud896"', JSON.stringify('\uD896')); -assertEquals('"\\ud897"', JSON.stringify('\uD897')); -assertEquals('"\\ud898"', JSON.stringify('\uD898')); -assertEquals('"\\ud899"', JSON.stringify('\uD899')); -assertEquals('"\\ud89a"', JSON.stringify('\uD89A')); -assertEquals('"\\ud89b"', JSON.stringify('\uD89B')); -assertEquals('"\\ud89c"', JSON.stringify('\uD89C')); -assertEquals('"\\ud89d"', JSON.stringify('\uD89D')); -assertEquals('"\\ud89e"', JSON.stringify('\uD89E')); -assertEquals('"\\ud89f"', JSON.stringify('\uD89F')); -assertEquals('"\\ud8a0"', JSON.stringify('\uD8A0')); -assertEquals('"\\ud8a1"', JSON.stringify('\uD8A1')); -assertEquals('"\\ud8a2"', JSON.stringify('\uD8A2')); -assertEquals('"\\ud8a3"', JSON.stringify('\uD8A3')); -assertEquals('"\\ud8a4"', JSON.stringify('\uD8A4')); -assertEquals('"\\ud8a5"', JSON.stringify('\uD8A5')); -assertEquals('"\\ud8a6"', JSON.stringify('\uD8A6')); -assertEquals('"\\ud8a7"', JSON.stringify('\uD8A7')); -assertEquals('"\\ud8a8"', JSON.stringify('\uD8A8')); -assertEquals('"\\ud8a9"', JSON.stringify('\uD8A9')); -assertEquals('"\\ud8aa"', JSON.stringify('\uD8AA')); -assertEquals('"\\ud8ab"', JSON.stringify('\uD8AB')); -assertEquals('"\\ud8ac"', JSON.stringify('\uD8AC')); -assertEquals('"\\ud8ad"', JSON.stringify('\uD8AD')); -assertEquals('"\\ud8ae"', JSON.stringify('\uD8AE')); -assertEquals('"\\ud8af"', JSON.stringify('\uD8AF')); -assertEquals('"\\ud8b0"', JSON.stringify('\uD8B0')); -assertEquals('"\\ud8b1"', JSON.stringify('\uD8B1')); -assertEquals('"\\ud8b2"', JSON.stringify('\uD8B2')); -assertEquals('"\\ud8b3"', JSON.stringify('\uD8B3')); -assertEquals('"\\ud8b4"', JSON.stringify('\uD8B4')); -assertEquals('"\\ud8b5"', JSON.stringify('\uD8B5')); -assertEquals('"\\ud8b6"', JSON.stringify('\uD8B6')); -assertEquals('"\\ud8b7"', JSON.stringify('\uD8B7')); -assertEquals('"\\ud8b8"', JSON.stringify('\uD8B8')); -assertEquals('"\\ud8b9"', JSON.stringify('\uD8B9')); -assertEquals('"\\ud8ba"', JSON.stringify('\uD8BA')); -assertEquals('"\\ud8bb"', JSON.stringify('\uD8BB')); -assertEquals('"\\ud8bc"', JSON.stringify('\uD8BC')); -assertEquals('"\\ud8bd"', JSON.stringify('\uD8BD')); -assertEquals('"\\ud8be"', JSON.stringify('\uD8BE')); -assertEquals('"\\ud8bf"', JSON.stringify('\uD8BF')); -assertEquals('"\\ud8c0"', JSON.stringify('\uD8C0')); -assertEquals('"\\ud8c1"', JSON.stringify('\uD8C1')); -assertEquals('"\\ud8c2"', JSON.stringify('\uD8C2')); -assertEquals('"\\ud8c3"', JSON.stringify('\uD8C3')); -assertEquals('"\\ud8c4"', JSON.stringify('\uD8C4')); -assertEquals('"\\ud8c5"', JSON.stringify('\uD8C5')); -assertEquals('"\\ud8c6"', JSON.stringify('\uD8C6')); -assertEquals('"\\ud8c7"', JSON.stringify('\uD8C7')); -assertEquals('"\\ud8c8"', JSON.stringify('\uD8C8')); -assertEquals('"\\ud8c9"', JSON.stringify('\uD8C9')); -assertEquals('"\\ud8ca"', JSON.stringify('\uD8CA')); -assertEquals('"\\ud8cb"', JSON.stringify('\uD8CB')); -assertEquals('"\\ud8cc"', JSON.stringify('\uD8CC')); -assertEquals('"\\ud8cd"', JSON.stringify('\uD8CD')); -assertEquals('"\\ud8ce"', JSON.stringify('\uD8CE')); -assertEquals('"\\ud8cf"', JSON.stringify('\uD8CF')); -assertEquals('"\\ud8d0"', JSON.stringify('\uD8D0')); -assertEquals('"\\ud8d1"', JSON.stringify('\uD8D1')); -assertEquals('"\\ud8d2"', JSON.stringify('\uD8D2')); -assertEquals('"\\ud8d3"', JSON.stringify('\uD8D3')); -assertEquals('"\\ud8d4"', JSON.stringify('\uD8D4')); -assertEquals('"\\ud8d5"', JSON.stringify('\uD8D5')); -assertEquals('"\\ud8d6"', JSON.stringify('\uD8D6')); -assertEquals('"\\ud8d7"', JSON.stringify('\uD8D7')); -assertEquals('"\\ud8d8"', JSON.stringify('\uD8D8')); -assertEquals('"\\ud8d9"', JSON.stringify('\uD8D9')); -assertEquals('"\\ud8da"', JSON.stringify('\uD8DA')); -assertEquals('"\\ud8db"', JSON.stringify('\uD8DB')); -assertEquals('"\\ud8dc"', JSON.stringify('\uD8DC')); -assertEquals('"\\ud8dd"', JSON.stringify('\uD8DD')); -assertEquals('"\\ud8de"', JSON.stringify('\uD8DE')); -assertEquals('"\\ud8df"', JSON.stringify('\uD8DF')); -assertEquals('"\\ud8e0"', JSON.stringify('\uD8E0')); -assertEquals('"\\ud8e1"', JSON.stringify('\uD8E1')); -assertEquals('"\\ud8e2"', JSON.stringify('\uD8E2')); -assertEquals('"\\ud8e3"', JSON.stringify('\uD8E3')); -assertEquals('"\\ud8e4"', JSON.stringify('\uD8E4')); -assertEquals('"\\ud8e5"', JSON.stringify('\uD8E5')); -assertEquals('"\\ud8e6"', JSON.stringify('\uD8E6')); -assertEquals('"\\ud8e7"', JSON.stringify('\uD8E7')); -assertEquals('"\\ud8e8"', JSON.stringify('\uD8E8')); -assertEquals('"\\ud8e9"', JSON.stringify('\uD8E9')); -assertEquals('"\\ud8ea"', JSON.stringify('\uD8EA')); -assertEquals('"\\ud8eb"', JSON.stringify('\uD8EB')); -assertEquals('"\\ud8ec"', JSON.stringify('\uD8EC')); -assertEquals('"\\ud8ed"', JSON.stringify('\uD8ED')); -assertEquals('"\\ud8ee"', JSON.stringify('\uD8EE')); -assertEquals('"\\ud8ef"', JSON.stringify('\uD8EF')); -assertEquals('"\\ud8f0"', JSON.stringify('\uD8F0')); -assertEquals('"\\ud8f1"', JSON.stringify('\uD8F1')); -assertEquals('"\\ud8f2"', JSON.stringify('\uD8F2')); -assertEquals('"\\ud8f3"', JSON.stringify('\uD8F3')); -assertEquals('"\\ud8f4"', JSON.stringify('\uD8F4')); -assertEquals('"\\ud8f5"', JSON.stringify('\uD8F5')); -assertEquals('"\\ud8f6"', JSON.stringify('\uD8F6')); -assertEquals('"\\ud8f7"', JSON.stringify('\uD8F7')); -assertEquals('"\\ud8f8"', JSON.stringify('\uD8F8')); -assertEquals('"\\ud8f9"', JSON.stringify('\uD8F9')); -assertEquals('"\\ud8fa"', JSON.stringify('\uD8FA')); -assertEquals('"\\ud8fb"', JSON.stringify('\uD8FB')); -assertEquals('"\\ud8fc"', JSON.stringify('\uD8FC')); -assertEquals('"\\ud8fd"', JSON.stringify('\uD8FD')); -assertEquals('"\\ud8fe"', JSON.stringify('\uD8FE')); -assertEquals('"\\ud8ff"', JSON.stringify('\uD8FF')); -assertEquals('"\\ud900"', JSON.stringify('\uD900')); -assertEquals('"\\ud901"', JSON.stringify('\uD901')); -assertEquals('"\\ud902"', JSON.stringify('\uD902')); -assertEquals('"\\ud903"', JSON.stringify('\uD903')); -assertEquals('"\\ud904"', JSON.stringify('\uD904')); -assertEquals('"\\ud905"', JSON.stringify('\uD905')); -assertEquals('"\\ud906"', JSON.stringify('\uD906')); -assertEquals('"\\ud907"', JSON.stringify('\uD907')); -assertEquals('"\\ud908"', JSON.stringify('\uD908')); -assertEquals('"\\ud909"', JSON.stringify('\uD909')); -assertEquals('"\\ud90a"', JSON.stringify('\uD90A')); -assertEquals('"\\ud90b"', JSON.stringify('\uD90B')); -assertEquals('"\\ud90c"', JSON.stringify('\uD90C')); -assertEquals('"\\ud90d"', JSON.stringify('\uD90D')); -assertEquals('"\\ud90e"', JSON.stringify('\uD90E')); -assertEquals('"\\ud90f"', JSON.stringify('\uD90F')); -assertEquals('"\\ud910"', JSON.stringify('\uD910')); -assertEquals('"\\ud911"', JSON.stringify('\uD911')); -assertEquals('"\\ud912"', JSON.stringify('\uD912')); -assertEquals('"\\ud913"', JSON.stringify('\uD913')); -assertEquals('"\\ud914"', JSON.stringify('\uD914')); -assertEquals('"\\ud915"', JSON.stringify('\uD915')); -assertEquals('"\\ud916"', JSON.stringify('\uD916')); -assertEquals('"\\ud917"', JSON.stringify('\uD917')); -assertEquals('"\\ud918"', JSON.stringify('\uD918')); -assertEquals('"\\ud919"', JSON.stringify('\uD919')); -assertEquals('"\\ud91a"', JSON.stringify('\uD91A')); -assertEquals('"\\ud91b"', JSON.stringify('\uD91B')); -assertEquals('"\\ud91c"', JSON.stringify('\uD91C')); -assertEquals('"\\ud91d"', JSON.stringify('\uD91D')); -assertEquals('"\\ud91e"', JSON.stringify('\uD91E')); -assertEquals('"\\ud91f"', JSON.stringify('\uD91F')); -assertEquals('"\\ud920"', JSON.stringify('\uD920')); -assertEquals('"\\ud921"', JSON.stringify('\uD921')); -assertEquals('"\\ud922"', JSON.stringify('\uD922')); -assertEquals('"\\ud923"', JSON.stringify('\uD923')); -assertEquals('"\\ud924"', JSON.stringify('\uD924')); -assertEquals('"\\ud925"', JSON.stringify('\uD925')); -assertEquals('"\\ud926"', JSON.stringify('\uD926')); -assertEquals('"\\ud927"', JSON.stringify('\uD927')); -assertEquals('"\\ud928"', JSON.stringify('\uD928')); -assertEquals('"\\ud929"', JSON.stringify('\uD929')); -assertEquals('"\\ud92a"', JSON.stringify('\uD92A')); -assertEquals('"\\ud92b"', JSON.stringify('\uD92B')); -assertEquals('"\\ud92c"', JSON.stringify('\uD92C')); -assertEquals('"\\ud92d"', JSON.stringify('\uD92D')); -assertEquals('"\\ud92e"', JSON.stringify('\uD92E')); -assertEquals('"\\ud92f"', JSON.stringify('\uD92F')); -assertEquals('"\\ud930"', JSON.stringify('\uD930')); -assertEquals('"\\ud931"', JSON.stringify('\uD931')); -assertEquals('"\\ud932"', JSON.stringify('\uD932')); -assertEquals('"\\ud933"', JSON.stringify('\uD933')); -assertEquals('"\\ud934"', JSON.stringify('\uD934')); -assertEquals('"\\ud935"', JSON.stringify('\uD935')); -assertEquals('"\\ud936"', JSON.stringify('\uD936')); -assertEquals('"\\ud937"', JSON.stringify('\uD937')); -assertEquals('"\\ud938"', JSON.stringify('\uD938')); -assertEquals('"\\ud939"', JSON.stringify('\uD939')); -assertEquals('"\\ud93a"', JSON.stringify('\uD93A')); -assertEquals('"\\ud93b"', JSON.stringify('\uD93B')); -assertEquals('"\\ud93c"', JSON.stringify('\uD93C')); -assertEquals('"\\ud93d"', JSON.stringify('\uD93D')); -assertEquals('"\\ud93e"', JSON.stringify('\uD93E')); -assertEquals('"\\ud93f"', JSON.stringify('\uD93F')); -assertEquals('"\\ud940"', JSON.stringify('\uD940')); -assertEquals('"\\ud941"', JSON.stringify('\uD941')); -assertEquals('"\\ud942"', JSON.stringify('\uD942')); -assertEquals('"\\ud943"', JSON.stringify('\uD943')); -assertEquals('"\\ud944"', JSON.stringify('\uD944')); -assertEquals('"\\ud945"', JSON.stringify('\uD945')); -assertEquals('"\\ud946"', JSON.stringify('\uD946')); -assertEquals('"\\ud947"', JSON.stringify('\uD947')); -assertEquals('"\\ud948"', JSON.stringify('\uD948')); -assertEquals('"\\ud949"', JSON.stringify('\uD949')); -assertEquals('"\\ud94a"', JSON.stringify('\uD94A')); -assertEquals('"\\ud94b"', JSON.stringify('\uD94B')); -assertEquals('"\\ud94c"', JSON.stringify('\uD94C')); -assertEquals('"\\ud94d"', JSON.stringify('\uD94D')); -assertEquals('"\\ud94e"', JSON.stringify('\uD94E')); -assertEquals('"\\ud94f"', JSON.stringify('\uD94F')); -assertEquals('"\\ud950"', JSON.stringify('\uD950')); -assertEquals('"\\ud951"', JSON.stringify('\uD951')); -assertEquals('"\\ud952"', JSON.stringify('\uD952')); -assertEquals('"\\ud953"', JSON.stringify('\uD953')); -assertEquals('"\\ud954"', JSON.stringify('\uD954')); -assertEquals('"\\ud955"', JSON.stringify('\uD955')); -assertEquals('"\\ud956"', JSON.stringify('\uD956')); -assertEquals('"\\ud957"', JSON.stringify('\uD957')); -assertEquals('"\\ud958"', JSON.stringify('\uD958')); -assertEquals('"\\ud959"', JSON.stringify('\uD959')); -assertEquals('"\\ud95a"', JSON.stringify('\uD95A')); -assertEquals('"\\ud95b"', JSON.stringify('\uD95B')); -assertEquals('"\\ud95c"', JSON.stringify('\uD95C')); -assertEquals('"\\ud95d"', JSON.stringify('\uD95D')); -assertEquals('"\\ud95e"', JSON.stringify('\uD95E')); -assertEquals('"\\ud95f"', JSON.stringify('\uD95F')); -assertEquals('"\\ud960"', JSON.stringify('\uD960')); -assertEquals('"\\ud961"', JSON.stringify('\uD961')); -assertEquals('"\\ud962"', JSON.stringify('\uD962')); -assertEquals('"\\ud963"', JSON.stringify('\uD963')); -assertEquals('"\\ud964"', JSON.stringify('\uD964')); -assertEquals('"\\ud965"', JSON.stringify('\uD965')); -assertEquals('"\\ud966"', JSON.stringify('\uD966')); -assertEquals('"\\ud967"', JSON.stringify('\uD967')); -assertEquals('"\\ud968"', JSON.stringify('\uD968')); -assertEquals('"\\ud969"', JSON.stringify('\uD969')); -assertEquals('"\\ud96a"', JSON.stringify('\uD96A')); -assertEquals('"\\ud96b"', JSON.stringify('\uD96B')); -assertEquals('"\\ud96c"', JSON.stringify('\uD96C')); -assertEquals('"\\ud96d"', JSON.stringify('\uD96D')); -assertEquals('"\\ud96e"', JSON.stringify('\uD96E')); -assertEquals('"\\ud96f"', JSON.stringify('\uD96F')); -assertEquals('"\\ud970"', JSON.stringify('\uD970')); -assertEquals('"\\ud971"', JSON.stringify('\uD971')); -assertEquals('"\\ud972"', JSON.stringify('\uD972')); -assertEquals('"\\ud973"', JSON.stringify('\uD973')); -assertEquals('"\\ud974"', JSON.stringify('\uD974')); -assertEquals('"\\ud975"', JSON.stringify('\uD975')); -assertEquals('"\\ud976"', JSON.stringify('\uD976')); -assertEquals('"\\ud977"', JSON.stringify('\uD977')); -assertEquals('"\\ud978"', JSON.stringify('\uD978')); -assertEquals('"\\ud979"', JSON.stringify('\uD979')); -assertEquals('"\\ud97a"', JSON.stringify('\uD97A')); -assertEquals('"\\ud97b"', JSON.stringify('\uD97B')); -assertEquals('"\\ud97c"', JSON.stringify('\uD97C')); -assertEquals('"\\ud97d"', JSON.stringify('\uD97D')); -assertEquals('"\\ud97e"', JSON.stringify('\uD97E')); -assertEquals('"\\ud97f"', JSON.stringify('\uD97F')); -assertEquals('"\\ud980"', JSON.stringify('\uD980')); -assertEquals('"\\ud981"', JSON.stringify('\uD981')); -assertEquals('"\\ud982"', JSON.stringify('\uD982')); -assertEquals('"\\ud983"', JSON.stringify('\uD983')); -assertEquals('"\\ud984"', JSON.stringify('\uD984')); -assertEquals('"\\ud985"', JSON.stringify('\uD985')); -assertEquals('"\\ud986"', JSON.stringify('\uD986')); -assertEquals('"\\ud987"', JSON.stringify('\uD987')); -assertEquals('"\\ud988"', JSON.stringify('\uD988')); -assertEquals('"\\ud989"', JSON.stringify('\uD989')); -assertEquals('"\\ud98a"', JSON.stringify('\uD98A')); -assertEquals('"\\ud98b"', JSON.stringify('\uD98B')); -assertEquals('"\\ud98c"', JSON.stringify('\uD98C')); -assertEquals('"\\ud98d"', JSON.stringify('\uD98D')); -assertEquals('"\\ud98e"', JSON.stringify('\uD98E')); -assertEquals('"\\ud98f"', JSON.stringify('\uD98F')); -assertEquals('"\\ud990"', JSON.stringify('\uD990')); -assertEquals('"\\ud991"', JSON.stringify('\uD991')); -assertEquals('"\\ud992"', JSON.stringify('\uD992')); -assertEquals('"\\ud993"', JSON.stringify('\uD993')); -assertEquals('"\\ud994"', JSON.stringify('\uD994')); -assertEquals('"\\ud995"', JSON.stringify('\uD995')); -assertEquals('"\\ud996"', JSON.stringify('\uD996')); -assertEquals('"\\ud997"', JSON.stringify('\uD997')); -assertEquals('"\\ud998"', JSON.stringify('\uD998')); -assertEquals('"\\ud999"', JSON.stringify('\uD999')); -assertEquals('"\\ud99a"', JSON.stringify('\uD99A')); -assertEquals('"\\ud99b"', JSON.stringify('\uD99B')); -assertEquals('"\\ud99c"', JSON.stringify('\uD99C')); -assertEquals('"\\ud99d"', JSON.stringify('\uD99D')); -assertEquals('"\\ud99e"', JSON.stringify('\uD99E')); -assertEquals('"\\ud99f"', JSON.stringify('\uD99F')); -assertEquals('"\\ud9a0"', JSON.stringify('\uD9A0')); -assertEquals('"\\ud9a1"', JSON.stringify('\uD9A1')); -assertEquals('"\\ud9a2"', JSON.stringify('\uD9A2')); -assertEquals('"\\ud9a3"', JSON.stringify('\uD9A3')); -assertEquals('"\\ud9a4"', JSON.stringify('\uD9A4')); -assertEquals('"\\ud9a5"', JSON.stringify('\uD9A5')); -assertEquals('"\\ud9a6"', JSON.stringify('\uD9A6')); -assertEquals('"\\ud9a7"', JSON.stringify('\uD9A7')); -assertEquals('"\\ud9a8"', JSON.stringify('\uD9A8')); -assertEquals('"\\ud9a9"', JSON.stringify('\uD9A9')); -assertEquals('"\\ud9aa"', JSON.stringify('\uD9AA')); -assertEquals('"\\ud9ab"', JSON.stringify('\uD9AB')); -assertEquals('"\\ud9ac"', JSON.stringify('\uD9AC')); -assertEquals('"\\ud9ad"', JSON.stringify('\uD9AD')); -assertEquals('"\\ud9ae"', JSON.stringify('\uD9AE')); -assertEquals('"\\ud9af"', JSON.stringify('\uD9AF')); -assertEquals('"\\ud9b0"', JSON.stringify('\uD9B0')); -assertEquals('"\\ud9b1"', JSON.stringify('\uD9B1')); -assertEquals('"\\ud9b2"', JSON.stringify('\uD9B2')); -assertEquals('"\\ud9b3"', JSON.stringify('\uD9B3')); -assertEquals('"\\ud9b4"', JSON.stringify('\uD9B4')); -assertEquals('"\\ud9b5"', JSON.stringify('\uD9B5')); -assertEquals('"\\ud9b6"', JSON.stringify('\uD9B6')); -assertEquals('"\\ud9b7"', JSON.stringify('\uD9B7')); -assertEquals('"\\ud9b8"', JSON.stringify('\uD9B8')); -assertEquals('"\\ud9b9"', JSON.stringify('\uD9B9')); -assertEquals('"\\ud9ba"', JSON.stringify('\uD9BA')); -assertEquals('"\\ud9bb"', JSON.stringify('\uD9BB')); -assertEquals('"\\ud9bc"', JSON.stringify('\uD9BC')); -assertEquals('"\\ud9bd"', JSON.stringify('\uD9BD')); -assertEquals('"\\ud9be"', JSON.stringify('\uD9BE')); -assertEquals('"\\ud9bf"', JSON.stringify('\uD9BF')); -assertEquals('"\\ud9c0"', JSON.stringify('\uD9C0')); -assertEquals('"\\ud9c1"', JSON.stringify('\uD9C1')); -assertEquals('"\\ud9c2"', JSON.stringify('\uD9C2')); -assertEquals('"\\ud9c3"', JSON.stringify('\uD9C3')); -assertEquals('"\\ud9c4"', JSON.stringify('\uD9C4')); -assertEquals('"\\ud9c5"', JSON.stringify('\uD9C5')); -assertEquals('"\\ud9c6"', JSON.stringify('\uD9C6')); -assertEquals('"\\ud9c7"', JSON.stringify('\uD9C7')); -assertEquals('"\\ud9c8"', JSON.stringify('\uD9C8')); -assertEquals('"\\ud9c9"', JSON.stringify('\uD9C9')); -assertEquals('"\\ud9ca"', JSON.stringify('\uD9CA')); -assertEquals('"\\ud9cb"', JSON.stringify('\uD9CB')); -assertEquals('"\\ud9cc"', JSON.stringify('\uD9CC')); -assertEquals('"\\ud9cd"', JSON.stringify('\uD9CD')); -assertEquals('"\\ud9ce"', JSON.stringify('\uD9CE')); -assertEquals('"\\ud9cf"', JSON.stringify('\uD9CF')); -assertEquals('"\\ud9d0"', JSON.stringify('\uD9D0')); -assertEquals('"\\ud9d1"', JSON.stringify('\uD9D1')); -assertEquals('"\\ud9d2"', JSON.stringify('\uD9D2')); -assertEquals('"\\ud9d3"', JSON.stringify('\uD9D3')); -assertEquals('"\\ud9d4"', JSON.stringify('\uD9D4')); -assertEquals('"\\ud9d5"', JSON.stringify('\uD9D5')); -assertEquals('"\\ud9d6"', JSON.stringify('\uD9D6')); -assertEquals('"\\ud9d7"', JSON.stringify('\uD9D7')); -assertEquals('"\\ud9d8"', JSON.stringify('\uD9D8')); -assertEquals('"\\ud9d9"', JSON.stringify('\uD9D9')); -assertEquals('"\\ud9da"', JSON.stringify('\uD9DA')); -assertEquals('"\\ud9db"', JSON.stringify('\uD9DB')); -assertEquals('"\\ud9dc"', JSON.stringify('\uD9DC')); -assertEquals('"\\ud9dd"', JSON.stringify('\uD9DD')); -assertEquals('"\\ud9de"', JSON.stringify('\uD9DE')); -assertEquals('"\\ud9df"', JSON.stringify('\uD9DF')); -assertEquals('"\\ud9e0"', JSON.stringify('\uD9E0')); -assertEquals('"\\ud9e1"', JSON.stringify('\uD9E1')); -assertEquals('"\\ud9e2"', JSON.stringify('\uD9E2')); -assertEquals('"\\ud9e3"', JSON.stringify('\uD9E3')); -assertEquals('"\\ud9e4"', JSON.stringify('\uD9E4')); -assertEquals('"\\ud9e5"', JSON.stringify('\uD9E5')); -assertEquals('"\\ud9e6"', JSON.stringify('\uD9E6')); -assertEquals('"\\ud9e7"', JSON.stringify('\uD9E7')); -assertEquals('"\\ud9e8"', JSON.stringify('\uD9E8')); -assertEquals('"\\ud9e9"', JSON.stringify('\uD9E9')); -assertEquals('"\\ud9ea"', JSON.stringify('\uD9EA')); -assertEquals('"\\ud9eb"', JSON.stringify('\uD9EB')); -assertEquals('"\\ud9ec"', JSON.stringify('\uD9EC')); -assertEquals('"\\ud9ed"', JSON.stringify('\uD9ED')); -assertEquals('"\\ud9ee"', JSON.stringify('\uD9EE')); -assertEquals('"\\ud9ef"', JSON.stringify('\uD9EF')); -assertEquals('"\\ud9f0"', JSON.stringify('\uD9F0')); -assertEquals('"\\ud9f1"', JSON.stringify('\uD9F1')); -assertEquals('"\\ud9f2"', JSON.stringify('\uD9F2')); -assertEquals('"\\ud9f3"', JSON.stringify('\uD9F3')); -assertEquals('"\\ud9f4"', JSON.stringify('\uD9F4')); -assertEquals('"\\ud9f5"', JSON.stringify('\uD9F5')); -assertEquals('"\\ud9f6"', JSON.stringify('\uD9F6')); -assertEquals('"\\ud9f7"', JSON.stringify('\uD9F7')); -assertEquals('"\\ud9f8"', JSON.stringify('\uD9F8')); -assertEquals('"\\ud9f9"', JSON.stringify('\uD9F9')); -assertEquals('"\\ud9fa"', JSON.stringify('\uD9FA')); -assertEquals('"\\ud9fb"', JSON.stringify('\uD9FB')); -assertEquals('"\\ud9fc"', JSON.stringify('\uD9FC')); -assertEquals('"\\ud9fd"', JSON.stringify('\uD9FD')); -assertEquals('"\\ud9fe"', JSON.stringify('\uD9FE')); -assertEquals('"\\ud9ff"', JSON.stringify('\uD9FF')); -assertEquals('"\\uda00"', JSON.stringify('\uDA00')); -assertEquals('"\\uda01"', JSON.stringify('\uDA01')); -assertEquals('"\\uda02"', JSON.stringify('\uDA02')); -assertEquals('"\\uda03"', JSON.stringify('\uDA03')); -assertEquals('"\\uda04"', JSON.stringify('\uDA04')); -assertEquals('"\\uda05"', JSON.stringify('\uDA05')); -assertEquals('"\\uda06"', JSON.stringify('\uDA06')); -assertEquals('"\\uda07"', JSON.stringify('\uDA07')); -assertEquals('"\\uda08"', JSON.stringify('\uDA08')); -assertEquals('"\\uda09"', JSON.stringify('\uDA09')); -assertEquals('"\\uda0a"', JSON.stringify('\uDA0A')); -assertEquals('"\\uda0b"', JSON.stringify('\uDA0B')); -assertEquals('"\\uda0c"', JSON.stringify('\uDA0C')); -assertEquals('"\\uda0d"', JSON.stringify('\uDA0D')); -assertEquals('"\\uda0e"', JSON.stringify('\uDA0E')); -assertEquals('"\\uda0f"', JSON.stringify('\uDA0F')); -assertEquals('"\\uda10"', JSON.stringify('\uDA10')); -assertEquals('"\\uda11"', JSON.stringify('\uDA11')); -assertEquals('"\\uda12"', JSON.stringify('\uDA12')); -assertEquals('"\\uda13"', JSON.stringify('\uDA13')); -assertEquals('"\\uda14"', JSON.stringify('\uDA14')); -assertEquals('"\\uda15"', JSON.stringify('\uDA15')); -assertEquals('"\\uda16"', JSON.stringify('\uDA16')); -assertEquals('"\\uda17"', JSON.stringify('\uDA17')); -assertEquals('"\\uda18"', JSON.stringify('\uDA18')); -assertEquals('"\\uda19"', JSON.stringify('\uDA19')); -assertEquals('"\\uda1a"', JSON.stringify('\uDA1A')); -assertEquals('"\\uda1b"', JSON.stringify('\uDA1B')); -assertEquals('"\\uda1c"', JSON.stringify('\uDA1C')); -assertEquals('"\\uda1d"', JSON.stringify('\uDA1D')); -assertEquals('"\\uda1e"', JSON.stringify('\uDA1E')); -assertEquals('"\\uda1f"', JSON.stringify('\uDA1F')); -assertEquals('"\\uda20"', JSON.stringify('\uDA20')); -assertEquals('"\\uda21"', JSON.stringify('\uDA21')); -assertEquals('"\\uda22"', JSON.stringify('\uDA22')); -assertEquals('"\\uda23"', JSON.stringify('\uDA23')); -assertEquals('"\\uda24"', JSON.stringify('\uDA24')); -assertEquals('"\\uda25"', JSON.stringify('\uDA25')); -assertEquals('"\\uda26"', JSON.stringify('\uDA26')); -assertEquals('"\\uda27"', JSON.stringify('\uDA27')); -assertEquals('"\\uda28"', JSON.stringify('\uDA28')); -assertEquals('"\\uda29"', JSON.stringify('\uDA29')); -assertEquals('"\\uda2a"', JSON.stringify('\uDA2A')); -assertEquals('"\\uda2b"', JSON.stringify('\uDA2B')); -assertEquals('"\\uda2c"', JSON.stringify('\uDA2C')); -assertEquals('"\\uda2d"', JSON.stringify('\uDA2D')); -assertEquals('"\\uda2e"', JSON.stringify('\uDA2E')); -assertEquals('"\\uda2f"', JSON.stringify('\uDA2F')); -assertEquals('"\\uda30"', JSON.stringify('\uDA30')); -assertEquals('"\\uda31"', JSON.stringify('\uDA31')); -assertEquals('"\\uda32"', JSON.stringify('\uDA32')); -assertEquals('"\\uda33"', JSON.stringify('\uDA33')); -assertEquals('"\\uda34"', JSON.stringify('\uDA34')); -assertEquals('"\\uda35"', JSON.stringify('\uDA35')); -assertEquals('"\\uda36"', JSON.stringify('\uDA36')); -assertEquals('"\\uda37"', JSON.stringify('\uDA37')); -assertEquals('"\\uda38"', JSON.stringify('\uDA38')); -assertEquals('"\\uda39"', JSON.stringify('\uDA39')); -assertEquals('"\\uda3a"', JSON.stringify('\uDA3A')); -assertEquals('"\\uda3b"', JSON.stringify('\uDA3B')); -assertEquals('"\\uda3c"', JSON.stringify('\uDA3C')); -assertEquals('"\\uda3d"', JSON.stringify('\uDA3D')); -assertEquals('"\\uda3e"', JSON.stringify('\uDA3E')); -assertEquals('"\\uda3f"', JSON.stringify('\uDA3F')); -assertEquals('"\\uda40"', JSON.stringify('\uDA40')); -assertEquals('"\\uda41"', JSON.stringify('\uDA41')); -assertEquals('"\\uda42"', JSON.stringify('\uDA42')); -assertEquals('"\\uda43"', JSON.stringify('\uDA43')); -assertEquals('"\\uda44"', JSON.stringify('\uDA44')); -assertEquals('"\\uda45"', JSON.stringify('\uDA45')); -assertEquals('"\\uda46"', JSON.stringify('\uDA46')); -assertEquals('"\\uda47"', JSON.stringify('\uDA47')); -assertEquals('"\\uda48"', JSON.stringify('\uDA48')); -assertEquals('"\\uda49"', JSON.stringify('\uDA49')); -assertEquals('"\\uda4a"', JSON.stringify('\uDA4A')); -assertEquals('"\\uda4b"', JSON.stringify('\uDA4B')); -assertEquals('"\\uda4c"', JSON.stringify('\uDA4C')); -assertEquals('"\\uda4d"', JSON.stringify('\uDA4D')); -assertEquals('"\\uda4e"', JSON.stringify('\uDA4E')); -assertEquals('"\\uda4f"', JSON.stringify('\uDA4F')); -assertEquals('"\\uda50"', JSON.stringify('\uDA50')); -assertEquals('"\\uda51"', JSON.stringify('\uDA51')); -assertEquals('"\\uda52"', JSON.stringify('\uDA52')); -assertEquals('"\\uda53"', JSON.stringify('\uDA53')); -assertEquals('"\\uda54"', JSON.stringify('\uDA54')); -assertEquals('"\\uda55"', JSON.stringify('\uDA55')); -assertEquals('"\\uda56"', JSON.stringify('\uDA56')); -assertEquals('"\\uda57"', JSON.stringify('\uDA57')); -assertEquals('"\\uda58"', JSON.stringify('\uDA58')); -assertEquals('"\\uda59"', JSON.stringify('\uDA59')); -assertEquals('"\\uda5a"', JSON.stringify('\uDA5A')); -assertEquals('"\\uda5b"', JSON.stringify('\uDA5B')); -assertEquals('"\\uda5c"', JSON.stringify('\uDA5C')); -assertEquals('"\\uda5d"', JSON.stringify('\uDA5D')); -assertEquals('"\\uda5e"', JSON.stringify('\uDA5E')); -assertEquals('"\\uda5f"', JSON.stringify('\uDA5F')); -assertEquals('"\\uda60"', JSON.stringify('\uDA60')); -assertEquals('"\\uda61"', JSON.stringify('\uDA61')); -assertEquals('"\\uda62"', JSON.stringify('\uDA62')); -assertEquals('"\\uda63"', JSON.stringify('\uDA63')); -assertEquals('"\\uda64"', JSON.stringify('\uDA64')); -assertEquals('"\\uda65"', JSON.stringify('\uDA65')); -assertEquals('"\\uda66"', JSON.stringify('\uDA66')); -assertEquals('"\\uda67"', JSON.stringify('\uDA67')); -assertEquals('"\\uda68"', JSON.stringify('\uDA68')); -assertEquals('"\\uda69"', JSON.stringify('\uDA69')); -assertEquals('"\\uda6a"', JSON.stringify('\uDA6A')); -assertEquals('"\\uda6b"', JSON.stringify('\uDA6B')); -assertEquals('"\\uda6c"', JSON.stringify('\uDA6C')); -assertEquals('"\\uda6d"', JSON.stringify('\uDA6D')); -assertEquals('"\\uda6e"', JSON.stringify('\uDA6E')); -assertEquals('"\\uda6f"', JSON.stringify('\uDA6F')); -assertEquals('"\\uda70"', JSON.stringify('\uDA70')); -assertEquals('"\\uda71"', JSON.stringify('\uDA71')); -assertEquals('"\\uda72"', JSON.stringify('\uDA72')); -assertEquals('"\\uda73"', JSON.stringify('\uDA73')); -assertEquals('"\\uda74"', JSON.stringify('\uDA74')); -assertEquals('"\\uda75"', JSON.stringify('\uDA75')); -assertEquals('"\\uda76"', JSON.stringify('\uDA76')); -assertEquals('"\\uda77"', JSON.stringify('\uDA77')); -assertEquals('"\\uda78"', JSON.stringify('\uDA78')); -assertEquals('"\\uda79"', JSON.stringify('\uDA79')); -assertEquals('"\\uda7a"', JSON.stringify('\uDA7A')); -assertEquals('"\\uda7b"', JSON.stringify('\uDA7B')); -assertEquals('"\\uda7c"', JSON.stringify('\uDA7C')); -assertEquals('"\\uda7d"', JSON.stringify('\uDA7D')); -assertEquals('"\\uda7e"', JSON.stringify('\uDA7E')); -assertEquals('"\\uda7f"', JSON.stringify('\uDA7F')); -assertEquals('"\\uda80"', JSON.stringify('\uDA80')); -assertEquals('"\\uda81"', JSON.stringify('\uDA81')); -assertEquals('"\\uda82"', JSON.stringify('\uDA82')); -assertEquals('"\\uda83"', JSON.stringify('\uDA83')); -assertEquals('"\\uda84"', JSON.stringify('\uDA84')); -assertEquals('"\\uda85"', JSON.stringify('\uDA85')); -assertEquals('"\\uda86"', JSON.stringify('\uDA86')); -assertEquals('"\\uda87"', JSON.stringify('\uDA87')); -assertEquals('"\\uda88"', JSON.stringify('\uDA88')); -assertEquals('"\\uda89"', JSON.stringify('\uDA89')); -assertEquals('"\\uda8a"', JSON.stringify('\uDA8A')); -assertEquals('"\\uda8b"', JSON.stringify('\uDA8B')); -assertEquals('"\\uda8c"', JSON.stringify('\uDA8C')); -assertEquals('"\\uda8d"', JSON.stringify('\uDA8D')); -assertEquals('"\\uda8e"', JSON.stringify('\uDA8E')); -assertEquals('"\\uda8f"', JSON.stringify('\uDA8F')); -assertEquals('"\\uda90"', JSON.stringify('\uDA90')); -assertEquals('"\\uda91"', JSON.stringify('\uDA91')); -assertEquals('"\\uda92"', JSON.stringify('\uDA92')); -assertEquals('"\\uda93"', JSON.stringify('\uDA93')); -assertEquals('"\\uda94"', JSON.stringify('\uDA94')); -assertEquals('"\\uda95"', JSON.stringify('\uDA95')); -assertEquals('"\\uda96"', JSON.stringify('\uDA96')); -assertEquals('"\\uda97"', JSON.stringify('\uDA97')); -assertEquals('"\\uda98"', JSON.stringify('\uDA98')); -assertEquals('"\\uda99"', JSON.stringify('\uDA99')); -assertEquals('"\\uda9a"', JSON.stringify('\uDA9A')); -assertEquals('"\\uda9b"', JSON.stringify('\uDA9B')); -assertEquals('"\\uda9c"', JSON.stringify('\uDA9C')); -assertEquals('"\\uda9d"', JSON.stringify('\uDA9D')); -assertEquals('"\\uda9e"', JSON.stringify('\uDA9E')); -assertEquals('"\\uda9f"', JSON.stringify('\uDA9F')); -assertEquals('"\\udaa0"', JSON.stringify('\uDAA0')); -assertEquals('"\\udaa1"', JSON.stringify('\uDAA1')); -assertEquals('"\\udaa2"', JSON.stringify('\uDAA2')); -assertEquals('"\\udaa3"', JSON.stringify('\uDAA3')); -assertEquals('"\\udaa4"', JSON.stringify('\uDAA4')); -assertEquals('"\\udaa5"', JSON.stringify('\uDAA5')); -assertEquals('"\\udaa6"', JSON.stringify('\uDAA6')); -assertEquals('"\\udaa7"', JSON.stringify('\uDAA7')); -assertEquals('"\\udaa8"', JSON.stringify('\uDAA8')); -assertEquals('"\\udaa9"', JSON.stringify('\uDAA9')); -assertEquals('"\\udaaa"', JSON.stringify('\uDAAA')); -assertEquals('"\\udaab"', JSON.stringify('\uDAAB')); -assertEquals('"\\udaac"', JSON.stringify('\uDAAC')); -assertEquals('"\\udaad"', JSON.stringify('\uDAAD')); -assertEquals('"\\udaae"', JSON.stringify('\uDAAE')); -assertEquals('"\\udaaf"', JSON.stringify('\uDAAF')); -assertEquals('"\\udab0"', JSON.stringify('\uDAB0')); -assertEquals('"\\udab1"', JSON.stringify('\uDAB1')); -assertEquals('"\\udab2"', JSON.stringify('\uDAB2')); -assertEquals('"\\udab3"', JSON.stringify('\uDAB3')); -assertEquals('"\\udab4"', JSON.stringify('\uDAB4')); -assertEquals('"\\udab5"', JSON.stringify('\uDAB5')); -assertEquals('"\\udab6"', JSON.stringify('\uDAB6')); -assertEquals('"\\udab7"', JSON.stringify('\uDAB7')); -assertEquals('"\\udab8"', JSON.stringify('\uDAB8')); -assertEquals('"\\udab9"', JSON.stringify('\uDAB9')); -assertEquals('"\\udaba"', JSON.stringify('\uDABA')); -assertEquals('"\\udabb"', JSON.stringify('\uDABB')); -assertEquals('"\\udabc"', JSON.stringify('\uDABC')); -assertEquals('"\\udabd"', JSON.stringify('\uDABD')); -assertEquals('"\\udabe"', JSON.stringify('\uDABE')); -assertEquals('"\\udabf"', JSON.stringify('\uDABF')); -assertEquals('"\\udac0"', JSON.stringify('\uDAC0')); -assertEquals('"\\udac1"', JSON.stringify('\uDAC1')); -assertEquals('"\\udac2"', JSON.stringify('\uDAC2')); -assertEquals('"\\udac3"', JSON.stringify('\uDAC3')); -assertEquals('"\\udac4"', JSON.stringify('\uDAC4')); -assertEquals('"\\udac5"', JSON.stringify('\uDAC5')); -assertEquals('"\\udac6"', JSON.stringify('\uDAC6')); -assertEquals('"\\udac7"', JSON.stringify('\uDAC7')); -assertEquals('"\\udac8"', JSON.stringify('\uDAC8')); -assertEquals('"\\udac9"', JSON.stringify('\uDAC9')); -assertEquals('"\\udaca"', JSON.stringify('\uDACA')); -assertEquals('"\\udacb"', JSON.stringify('\uDACB')); -assertEquals('"\\udacc"', JSON.stringify('\uDACC')); -assertEquals('"\\udacd"', JSON.stringify('\uDACD')); -assertEquals('"\\udace"', JSON.stringify('\uDACE')); -assertEquals('"\\udacf"', JSON.stringify('\uDACF')); -assertEquals('"\\udad0"', JSON.stringify('\uDAD0')); -assertEquals('"\\udad1"', JSON.stringify('\uDAD1')); -assertEquals('"\\udad2"', JSON.stringify('\uDAD2')); -assertEquals('"\\udad3"', JSON.stringify('\uDAD3')); -assertEquals('"\\udad4"', JSON.stringify('\uDAD4')); -assertEquals('"\\udad5"', JSON.stringify('\uDAD5')); -assertEquals('"\\udad6"', JSON.stringify('\uDAD6')); -assertEquals('"\\udad7"', JSON.stringify('\uDAD7')); -assertEquals('"\\udad8"', JSON.stringify('\uDAD8')); -assertEquals('"\\udad9"', JSON.stringify('\uDAD9')); -assertEquals('"\\udada"', JSON.stringify('\uDADA')); -assertEquals('"\\udadb"', JSON.stringify('\uDADB')); -assertEquals('"\\udadc"', JSON.stringify('\uDADC')); -assertEquals('"\\udadd"', JSON.stringify('\uDADD')); -assertEquals('"\\udade"', JSON.stringify('\uDADE')); -assertEquals('"\\udadf"', JSON.stringify('\uDADF')); -assertEquals('"\\udae0"', JSON.stringify('\uDAE0')); -assertEquals('"\\udae1"', JSON.stringify('\uDAE1')); -assertEquals('"\\udae2"', JSON.stringify('\uDAE2')); -assertEquals('"\\udae3"', JSON.stringify('\uDAE3')); -assertEquals('"\\udae4"', JSON.stringify('\uDAE4')); -assertEquals('"\\udae5"', JSON.stringify('\uDAE5')); -assertEquals('"\\udae6"', JSON.stringify('\uDAE6')); -assertEquals('"\\udae7"', JSON.stringify('\uDAE7')); -assertEquals('"\\udae8"', JSON.stringify('\uDAE8')); -assertEquals('"\\udae9"', JSON.stringify('\uDAE9')); -assertEquals('"\\udaea"', JSON.stringify('\uDAEA')); -assertEquals('"\\udaeb"', JSON.stringify('\uDAEB')); -assertEquals('"\\udaec"', JSON.stringify('\uDAEC')); -assertEquals('"\\udaed"', JSON.stringify('\uDAED')); -assertEquals('"\\udaee"', JSON.stringify('\uDAEE')); -assertEquals('"\\udaef"', JSON.stringify('\uDAEF')); -assertEquals('"\\udaf0"', JSON.stringify('\uDAF0')); -assertEquals('"\\udaf1"', JSON.stringify('\uDAF1')); -assertEquals('"\\udaf2"', JSON.stringify('\uDAF2')); -assertEquals('"\\udaf3"', JSON.stringify('\uDAF3')); -assertEquals('"\\udaf4"', JSON.stringify('\uDAF4')); -assertEquals('"\\udaf5"', JSON.stringify('\uDAF5')); -assertEquals('"\\udaf6"', JSON.stringify('\uDAF6')); -assertEquals('"\\udaf7"', JSON.stringify('\uDAF7')); -assertEquals('"\\udaf8"', JSON.stringify('\uDAF8')); -assertEquals('"\\udaf9"', JSON.stringify('\uDAF9')); -assertEquals('"\\udafa"', JSON.stringify('\uDAFA')); -assertEquals('"\\udafb"', JSON.stringify('\uDAFB')); -assertEquals('"\\udafc"', JSON.stringify('\uDAFC')); -assertEquals('"\\udafd"', JSON.stringify('\uDAFD')); -assertEquals('"\\udafe"', JSON.stringify('\uDAFE')); -assertEquals('"\\udaff"', JSON.stringify('\uDAFF')); -assertEquals('"\\udb00"', JSON.stringify('\uDB00')); -assertEquals('"\\udb01"', JSON.stringify('\uDB01')); -assertEquals('"\\udb02"', JSON.stringify('\uDB02')); -assertEquals('"\\udb03"', JSON.stringify('\uDB03')); -assertEquals('"\\udb04"', JSON.stringify('\uDB04')); -assertEquals('"\\udb05"', JSON.stringify('\uDB05')); -assertEquals('"\\udb06"', JSON.stringify('\uDB06')); -assertEquals('"\\udb07"', JSON.stringify('\uDB07')); -assertEquals('"\\udb08"', JSON.stringify('\uDB08')); -assertEquals('"\\udb09"', JSON.stringify('\uDB09')); -assertEquals('"\\udb0a"', JSON.stringify('\uDB0A')); -assertEquals('"\\udb0b"', JSON.stringify('\uDB0B')); -assertEquals('"\\udb0c"', JSON.stringify('\uDB0C')); -assertEquals('"\\udb0d"', JSON.stringify('\uDB0D')); -assertEquals('"\\udb0e"', JSON.stringify('\uDB0E')); -assertEquals('"\\udb0f"', JSON.stringify('\uDB0F')); -assertEquals('"\\udb10"', JSON.stringify('\uDB10')); -assertEquals('"\\udb11"', JSON.stringify('\uDB11')); -assertEquals('"\\udb12"', JSON.stringify('\uDB12')); -assertEquals('"\\udb13"', JSON.stringify('\uDB13')); -assertEquals('"\\udb14"', JSON.stringify('\uDB14')); -assertEquals('"\\udb15"', JSON.stringify('\uDB15')); -assertEquals('"\\udb16"', JSON.stringify('\uDB16')); -assertEquals('"\\udb17"', JSON.stringify('\uDB17')); -assertEquals('"\\udb18"', JSON.stringify('\uDB18')); -assertEquals('"\\udb19"', JSON.stringify('\uDB19')); -assertEquals('"\\udb1a"', JSON.stringify('\uDB1A')); -assertEquals('"\\udb1b"', JSON.stringify('\uDB1B')); -assertEquals('"\\udb1c"', JSON.stringify('\uDB1C')); -assertEquals('"\\udb1d"', JSON.stringify('\uDB1D')); -assertEquals('"\\udb1e"', JSON.stringify('\uDB1E')); -assertEquals('"\\udb1f"', JSON.stringify('\uDB1F')); -assertEquals('"\\udb20"', JSON.stringify('\uDB20')); -assertEquals('"\\udb21"', JSON.stringify('\uDB21')); -assertEquals('"\\udb22"', JSON.stringify('\uDB22')); -assertEquals('"\\udb23"', JSON.stringify('\uDB23')); -assertEquals('"\\udb24"', JSON.stringify('\uDB24')); -assertEquals('"\\udb25"', JSON.stringify('\uDB25')); -assertEquals('"\\udb26"', JSON.stringify('\uDB26')); -assertEquals('"\\udb27"', JSON.stringify('\uDB27')); -assertEquals('"\\udb28"', JSON.stringify('\uDB28')); -assertEquals('"\\udb29"', JSON.stringify('\uDB29')); -assertEquals('"\\udb2a"', JSON.stringify('\uDB2A')); -assertEquals('"\\udb2b"', JSON.stringify('\uDB2B')); -assertEquals('"\\udb2c"', JSON.stringify('\uDB2C')); -assertEquals('"\\udb2d"', JSON.stringify('\uDB2D')); -assertEquals('"\\udb2e"', JSON.stringify('\uDB2E')); -assertEquals('"\\udb2f"', JSON.stringify('\uDB2F')); -assertEquals('"\\udb30"', JSON.stringify('\uDB30')); -assertEquals('"\\udb31"', JSON.stringify('\uDB31')); -assertEquals('"\\udb32"', JSON.stringify('\uDB32')); -assertEquals('"\\udb33"', JSON.stringify('\uDB33')); -assertEquals('"\\udb34"', JSON.stringify('\uDB34')); -assertEquals('"\\udb35"', JSON.stringify('\uDB35')); -assertEquals('"\\udb36"', JSON.stringify('\uDB36')); -assertEquals('"\\udb37"', JSON.stringify('\uDB37')); -assertEquals('"\\udb38"', JSON.stringify('\uDB38')); -assertEquals('"\\udb39"', JSON.stringify('\uDB39')); -assertEquals('"\\udb3a"', JSON.stringify('\uDB3A')); -assertEquals('"\\udb3b"', JSON.stringify('\uDB3B')); -assertEquals('"\\udb3c"', JSON.stringify('\uDB3C')); -assertEquals('"\\udb3d"', JSON.stringify('\uDB3D')); -assertEquals('"\\udb3e"', JSON.stringify('\uDB3E')); -assertEquals('"\\udb3f"', JSON.stringify('\uDB3F')); -assertEquals('"\\udb40"', JSON.stringify('\uDB40')); -assertEquals('"\\udb41"', JSON.stringify('\uDB41')); -assertEquals('"\\udb42"', JSON.stringify('\uDB42')); -assertEquals('"\\udb43"', JSON.stringify('\uDB43')); -assertEquals('"\\udb44"', JSON.stringify('\uDB44')); -assertEquals('"\\udb45"', JSON.stringify('\uDB45')); -assertEquals('"\\udb46"', JSON.stringify('\uDB46')); -assertEquals('"\\udb47"', JSON.stringify('\uDB47')); -assertEquals('"\\udb48"', JSON.stringify('\uDB48')); -assertEquals('"\\udb49"', JSON.stringify('\uDB49')); -assertEquals('"\\udb4a"', JSON.stringify('\uDB4A')); -assertEquals('"\\udb4b"', JSON.stringify('\uDB4B')); -assertEquals('"\\udb4c"', JSON.stringify('\uDB4C')); -assertEquals('"\\udb4d"', JSON.stringify('\uDB4D')); -assertEquals('"\\udb4e"', JSON.stringify('\uDB4E')); -assertEquals('"\\udb4f"', JSON.stringify('\uDB4F')); -assertEquals('"\\udb50"', JSON.stringify('\uDB50')); -assertEquals('"\\udb51"', JSON.stringify('\uDB51')); -assertEquals('"\\udb52"', JSON.stringify('\uDB52')); -assertEquals('"\\udb53"', JSON.stringify('\uDB53')); -assertEquals('"\\udb54"', JSON.stringify('\uDB54')); -assertEquals('"\\udb55"', JSON.stringify('\uDB55')); -assertEquals('"\\udb56"', JSON.stringify('\uDB56')); -assertEquals('"\\udb57"', JSON.stringify('\uDB57')); -assertEquals('"\\udb58"', JSON.stringify('\uDB58')); -assertEquals('"\\udb59"', JSON.stringify('\uDB59')); -assertEquals('"\\udb5a"', JSON.stringify('\uDB5A')); -assertEquals('"\\udb5b"', JSON.stringify('\uDB5B')); -assertEquals('"\\udb5c"', JSON.stringify('\uDB5C')); -assertEquals('"\\udb5d"', JSON.stringify('\uDB5D')); -assertEquals('"\\udb5e"', JSON.stringify('\uDB5E')); -assertEquals('"\\udb5f"', JSON.stringify('\uDB5F')); -assertEquals('"\\udb60"', JSON.stringify('\uDB60')); -assertEquals('"\\udb61"', JSON.stringify('\uDB61')); -assertEquals('"\\udb62"', JSON.stringify('\uDB62')); -assertEquals('"\\udb63"', JSON.stringify('\uDB63')); -assertEquals('"\\udb64"', JSON.stringify('\uDB64')); -assertEquals('"\\udb65"', JSON.stringify('\uDB65')); -assertEquals('"\\udb66"', JSON.stringify('\uDB66')); -assertEquals('"\\udb67"', JSON.stringify('\uDB67')); -assertEquals('"\\udb68"', JSON.stringify('\uDB68')); -assertEquals('"\\udb69"', JSON.stringify('\uDB69')); -assertEquals('"\\udb6a"', JSON.stringify('\uDB6A')); -assertEquals('"\\udb6b"', JSON.stringify('\uDB6B')); -assertEquals('"\\udb6c"', JSON.stringify('\uDB6C')); -assertEquals('"\\udb6d"', JSON.stringify('\uDB6D')); -assertEquals('"\\udb6e"', JSON.stringify('\uDB6E')); -assertEquals('"\\udb6f"', JSON.stringify('\uDB6F')); -assertEquals('"\\udb70"', JSON.stringify('\uDB70')); -assertEquals('"\\udb71"', JSON.stringify('\uDB71')); -assertEquals('"\\udb72"', JSON.stringify('\uDB72')); -assertEquals('"\\udb73"', JSON.stringify('\uDB73')); -assertEquals('"\\udb74"', JSON.stringify('\uDB74')); -assertEquals('"\\udb75"', JSON.stringify('\uDB75')); -assertEquals('"\\udb76"', JSON.stringify('\uDB76')); -assertEquals('"\\udb77"', JSON.stringify('\uDB77')); -assertEquals('"\\udb78"', JSON.stringify('\uDB78')); -assertEquals('"\\udb79"', JSON.stringify('\uDB79')); -assertEquals('"\\udb7a"', JSON.stringify('\uDB7A')); -assertEquals('"\\udb7b"', JSON.stringify('\uDB7B')); -assertEquals('"\\udb7c"', JSON.stringify('\uDB7C')); -assertEquals('"\\udb7d"', JSON.stringify('\uDB7D')); -assertEquals('"\\udb7e"', JSON.stringify('\uDB7E')); -assertEquals('"\\udb7f"', JSON.stringify('\uDB7F')); -assertEquals('"\\udb80"', JSON.stringify('\uDB80')); -assertEquals('"\\udb81"', JSON.stringify('\uDB81')); -assertEquals('"\\udb82"', JSON.stringify('\uDB82')); -assertEquals('"\\udb83"', JSON.stringify('\uDB83')); -assertEquals('"\\udb84"', JSON.stringify('\uDB84')); -assertEquals('"\\udb85"', JSON.stringify('\uDB85')); -assertEquals('"\\udb86"', JSON.stringify('\uDB86')); -assertEquals('"\\udb87"', JSON.stringify('\uDB87')); -assertEquals('"\\udb88"', JSON.stringify('\uDB88')); -assertEquals('"\\udb89"', JSON.stringify('\uDB89')); -assertEquals('"\\udb8a"', JSON.stringify('\uDB8A')); -assertEquals('"\\udb8b"', JSON.stringify('\uDB8B')); -assertEquals('"\\udb8c"', JSON.stringify('\uDB8C')); -assertEquals('"\\udb8d"', JSON.stringify('\uDB8D')); -assertEquals('"\\udb8e"', JSON.stringify('\uDB8E')); -assertEquals('"\\udb8f"', JSON.stringify('\uDB8F')); -assertEquals('"\\udb90"', JSON.stringify('\uDB90')); -assertEquals('"\\udb91"', JSON.stringify('\uDB91')); -assertEquals('"\\udb92"', JSON.stringify('\uDB92')); -assertEquals('"\\udb93"', JSON.stringify('\uDB93')); -assertEquals('"\\udb94"', JSON.stringify('\uDB94')); -assertEquals('"\\udb95"', JSON.stringify('\uDB95')); -assertEquals('"\\udb96"', JSON.stringify('\uDB96')); -assertEquals('"\\udb97"', JSON.stringify('\uDB97')); -assertEquals('"\\udb98"', JSON.stringify('\uDB98')); -assertEquals('"\\udb99"', JSON.stringify('\uDB99')); -assertEquals('"\\udb9a"', JSON.stringify('\uDB9A')); -assertEquals('"\\udb9b"', JSON.stringify('\uDB9B')); -assertEquals('"\\udb9c"', JSON.stringify('\uDB9C')); -assertEquals('"\\udb9d"', JSON.stringify('\uDB9D')); -assertEquals('"\\udb9e"', JSON.stringify('\uDB9E')); -assertEquals('"\\udb9f"', JSON.stringify('\uDB9F')); -assertEquals('"\\udba0"', JSON.stringify('\uDBA0')); -assertEquals('"\\udba1"', JSON.stringify('\uDBA1')); -assertEquals('"\\udba2"', JSON.stringify('\uDBA2')); -assertEquals('"\\udba3"', JSON.stringify('\uDBA3')); -assertEquals('"\\udba4"', JSON.stringify('\uDBA4')); -assertEquals('"\\udba5"', JSON.stringify('\uDBA5')); -assertEquals('"\\udba6"', JSON.stringify('\uDBA6')); -assertEquals('"\\udba7"', JSON.stringify('\uDBA7')); -assertEquals('"\\udba8"', JSON.stringify('\uDBA8')); -assertEquals('"\\udba9"', JSON.stringify('\uDBA9')); -assertEquals('"\\udbaa"', JSON.stringify('\uDBAA')); -assertEquals('"\\udbab"', JSON.stringify('\uDBAB')); -assertEquals('"\\udbac"', JSON.stringify('\uDBAC')); -assertEquals('"\\udbad"', JSON.stringify('\uDBAD')); -assertEquals('"\\udbae"', JSON.stringify('\uDBAE')); -assertEquals('"\\udbaf"', JSON.stringify('\uDBAF')); -assertEquals('"\\udbb0"', JSON.stringify('\uDBB0')); -assertEquals('"\\udbb1"', JSON.stringify('\uDBB1')); -assertEquals('"\\udbb2"', JSON.stringify('\uDBB2')); -assertEquals('"\\udbb3"', JSON.stringify('\uDBB3')); -assertEquals('"\\udbb4"', JSON.stringify('\uDBB4')); -assertEquals('"\\udbb5"', JSON.stringify('\uDBB5')); -assertEquals('"\\udbb6"', JSON.stringify('\uDBB6')); -assertEquals('"\\udbb7"', JSON.stringify('\uDBB7')); -assertEquals('"\\udbb8"', JSON.stringify('\uDBB8')); -assertEquals('"\\udbb9"', JSON.stringify('\uDBB9')); -assertEquals('"\\udbba"', JSON.stringify('\uDBBA')); -assertEquals('"\\udbbb"', JSON.stringify('\uDBBB')); -assertEquals('"\\udbbc"', JSON.stringify('\uDBBC')); -assertEquals('"\\udbbd"', JSON.stringify('\uDBBD')); -assertEquals('"\\udbbe"', JSON.stringify('\uDBBE')); -assertEquals('"\\udbbf"', JSON.stringify('\uDBBF')); -assertEquals('"\\udbc0"', JSON.stringify('\uDBC0')); -assertEquals('"\\udbc1"', JSON.stringify('\uDBC1')); -assertEquals('"\\udbc2"', JSON.stringify('\uDBC2')); -assertEquals('"\\udbc3"', JSON.stringify('\uDBC3')); -assertEquals('"\\udbc4"', JSON.stringify('\uDBC4')); -assertEquals('"\\udbc5"', JSON.stringify('\uDBC5')); -assertEquals('"\\udbc6"', JSON.stringify('\uDBC6')); -assertEquals('"\\udbc7"', JSON.stringify('\uDBC7')); -assertEquals('"\\udbc8"', JSON.stringify('\uDBC8')); -assertEquals('"\\udbc9"', JSON.stringify('\uDBC9')); -assertEquals('"\\udbca"', JSON.stringify('\uDBCA')); -assertEquals('"\\udbcb"', JSON.stringify('\uDBCB')); -assertEquals('"\\udbcc"', JSON.stringify('\uDBCC')); -assertEquals('"\\udbcd"', JSON.stringify('\uDBCD')); -assertEquals('"\\udbce"', JSON.stringify('\uDBCE')); -assertEquals('"\\udbcf"', JSON.stringify('\uDBCF')); -assertEquals('"\\udbd0"', JSON.stringify('\uDBD0')); -assertEquals('"\\udbd1"', JSON.stringify('\uDBD1')); -assertEquals('"\\udbd2"', JSON.stringify('\uDBD2')); -assertEquals('"\\udbd3"', JSON.stringify('\uDBD3')); -assertEquals('"\\udbd4"', JSON.stringify('\uDBD4')); -assertEquals('"\\udbd5"', JSON.stringify('\uDBD5')); -assertEquals('"\\udbd6"', JSON.stringify('\uDBD6')); -assertEquals('"\\udbd7"', JSON.stringify('\uDBD7')); -assertEquals('"\\udbd8"', JSON.stringify('\uDBD8')); -assertEquals('"\\udbd9"', JSON.stringify('\uDBD9')); -assertEquals('"\\udbda"', JSON.stringify('\uDBDA')); -assertEquals('"\\udbdb"', JSON.stringify('\uDBDB')); -assertEquals('"\\udbdc"', JSON.stringify('\uDBDC')); -assertEquals('"\\udbdd"', JSON.stringify('\uDBDD')); -assertEquals('"\\udbde"', JSON.stringify('\uDBDE')); -assertEquals('"\\udbdf"', JSON.stringify('\uDBDF')); -assertEquals('"\\udbe0"', JSON.stringify('\uDBE0')); -assertEquals('"\\udbe1"', JSON.stringify('\uDBE1')); -assertEquals('"\\udbe2"', JSON.stringify('\uDBE2')); -assertEquals('"\\udbe3"', JSON.stringify('\uDBE3')); -assertEquals('"\\udbe4"', JSON.stringify('\uDBE4')); -assertEquals('"\\udbe5"', JSON.stringify('\uDBE5')); -assertEquals('"\\udbe6"', JSON.stringify('\uDBE6')); -assertEquals('"\\udbe7"', JSON.stringify('\uDBE7')); -assertEquals('"\\udbe8"', JSON.stringify('\uDBE8')); -assertEquals('"\\udbe9"', JSON.stringify('\uDBE9')); -assertEquals('"\\udbea"', JSON.stringify('\uDBEA')); -assertEquals('"\\udbeb"', JSON.stringify('\uDBEB')); -assertEquals('"\\udbec"', JSON.stringify('\uDBEC')); -assertEquals('"\\udbed"', JSON.stringify('\uDBED')); -assertEquals('"\\udbee"', JSON.stringify('\uDBEE')); -assertEquals('"\\udbef"', JSON.stringify('\uDBEF')); -assertEquals('"\\udbf0"', JSON.stringify('\uDBF0')); -assertEquals('"\\udbf1"', JSON.stringify('\uDBF1')); -assertEquals('"\\udbf2"', JSON.stringify('\uDBF2')); -assertEquals('"\\udbf3"', JSON.stringify('\uDBF3')); -assertEquals('"\\udbf4"', JSON.stringify('\uDBF4')); -assertEquals('"\\udbf5"', JSON.stringify('\uDBF5')); -assertEquals('"\\udbf6"', JSON.stringify('\uDBF6')); -assertEquals('"\\udbf7"', JSON.stringify('\uDBF7')); -assertEquals('"\\udbf8"', JSON.stringify('\uDBF8')); -assertEquals('"\\udbf9"', JSON.stringify('\uDBF9')); -assertEquals('"\\udbfa"', JSON.stringify('\uDBFA')); -assertEquals('"\\udbfb"', JSON.stringify('\uDBFB')); -assertEquals('"\\udbfc"', JSON.stringify('\uDBFC')); -assertEquals('"\\udbfd"', JSON.stringify('\uDBFD')); -assertEquals('"\\udbfe"', JSON.stringify('\uDBFE')); -assertEquals('"\\udbff"', JSON.stringify('\uDBFF')); -assertEquals('"\\udc00"', JSON.stringify('\uDC00')); -assertEquals('"\\udc01"', JSON.stringify('\uDC01')); -assertEquals('"\\udc02"', JSON.stringify('\uDC02')); -assertEquals('"\\udc03"', JSON.stringify('\uDC03')); -assertEquals('"\\udc04"', JSON.stringify('\uDC04')); -assertEquals('"\\udc05"', JSON.stringify('\uDC05')); -assertEquals('"\\udc06"', JSON.stringify('\uDC06')); -assertEquals('"\\udc07"', JSON.stringify('\uDC07')); -assertEquals('"\\udc08"', JSON.stringify('\uDC08')); -assertEquals('"\\udc09"', JSON.stringify('\uDC09')); -assertEquals('"\\udc0a"', JSON.stringify('\uDC0A')); -assertEquals('"\\udc0b"', JSON.stringify('\uDC0B')); -assertEquals('"\\udc0c"', JSON.stringify('\uDC0C')); -assertEquals('"\\udc0d"', JSON.stringify('\uDC0D')); -assertEquals('"\\udc0e"', JSON.stringify('\uDC0E')); -assertEquals('"\\udc0f"', JSON.stringify('\uDC0F')); -assertEquals('"\\udc10"', JSON.stringify('\uDC10')); -assertEquals('"\\udc11"', JSON.stringify('\uDC11')); -assertEquals('"\\udc12"', JSON.stringify('\uDC12')); -assertEquals('"\\udc13"', JSON.stringify('\uDC13')); -assertEquals('"\\udc14"', JSON.stringify('\uDC14')); -assertEquals('"\\udc15"', JSON.stringify('\uDC15')); -assertEquals('"\\udc16"', JSON.stringify('\uDC16')); -assertEquals('"\\udc17"', JSON.stringify('\uDC17')); -assertEquals('"\\udc18"', JSON.stringify('\uDC18')); -assertEquals('"\\udc19"', JSON.stringify('\uDC19')); -assertEquals('"\\udc1a"', JSON.stringify('\uDC1A')); -assertEquals('"\\udc1b"', JSON.stringify('\uDC1B')); -assertEquals('"\\udc1c"', JSON.stringify('\uDC1C')); -assertEquals('"\\udc1d"', JSON.stringify('\uDC1D')); -assertEquals('"\\udc1e"', JSON.stringify('\uDC1E')); -assertEquals('"\\udc1f"', JSON.stringify('\uDC1F')); -assertEquals('"\\udc20"', JSON.stringify('\uDC20')); -assertEquals('"\\udc21"', JSON.stringify('\uDC21')); -assertEquals('"\\udc22"', JSON.stringify('\uDC22')); -assertEquals('"\\udc23"', JSON.stringify('\uDC23')); -assertEquals('"\\udc24"', JSON.stringify('\uDC24')); -assertEquals('"\\udc25"', JSON.stringify('\uDC25')); -assertEquals('"\\udc26"', JSON.stringify('\uDC26')); -assertEquals('"\\udc27"', JSON.stringify('\uDC27')); -assertEquals('"\\udc28"', JSON.stringify('\uDC28')); -assertEquals('"\\udc29"', JSON.stringify('\uDC29')); -assertEquals('"\\udc2a"', JSON.stringify('\uDC2A')); -assertEquals('"\\udc2b"', JSON.stringify('\uDC2B')); -assertEquals('"\\udc2c"', JSON.stringify('\uDC2C')); -assertEquals('"\\udc2d"', JSON.stringify('\uDC2D')); -assertEquals('"\\udc2e"', JSON.stringify('\uDC2E')); -assertEquals('"\\udc2f"', JSON.stringify('\uDC2F')); -assertEquals('"\\udc30"', JSON.stringify('\uDC30')); -assertEquals('"\\udc31"', JSON.stringify('\uDC31')); -assertEquals('"\\udc32"', JSON.stringify('\uDC32')); -assertEquals('"\\udc33"', JSON.stringify('\uDC33')); -assertEquals('"\\udc34"', JSON.stringify('\uDC34')); -assertEquals('"\\udc35"', JSON.stringify('\uDC35')); -assertEquals('"\\udc36"', JSON.stringify('\uDC36')); -assertEquals('"\\udc37"', JSON.stringify('\uDC37')); -assertEquals('"\\udc38"', JSON.stringify('\uDC38')); -assertEquals('"\\udc39"', JSON.stringify('\uDC39')); -assertEquals('"\\udc3a"', JSON.stringify('\uDC3A')); -assertEquals('"\\udc3b"', JSON.stringify('\uDC3B')); -assertEquals('"\\udc3c"', JSON.stringify('\uDC3C')); -assertEquals('"\\udc3d"', JSON.stringify('\uDC3D')); -assertEquals('"\\udc3e"', JSON.stringify('\uDC3E')); -assertEquals('"\\udc3f"', JSON.stringify('\uDC3F')); -assertEquals('"\\udc40"', JSON.stringify('\uDC40')); -assertEquals('"\\udc41"', JSON.stringify('\uDC41')); -assertEquals('"\\udc42"', JSON.stringify('\uDC42')); -assertEquals('"\\udc43"', JSON.stringify('\uDC43')); -assertEquals('"\\udc44"', JSON.stringify('\uDC44')); -assertEquals('"\\udc45"', JSON.stringify('\uDC45')); -assertEquals('"\\udc46"', JSON.stringify('\uDC46')); -assertEquals('"\\udc47"', JSON.stringify('\uDC47')); -assertEquals('"\\udc48"', JSON.stringify('\uDC48')); -assertEquals('"\\udc49"', JSON.stringify('\uDC49')); -assertEquals('"\\udc4a"', JSON.stringify('\uDC4A')); -assertEquals('"\\udc4b"', JSON.stringify('\uDC4B')); -assertEquals('"\\udc4c"', JSON.stringify('\uDC4C')); -assertEquals('"\\udc4d"', JSON.stringify('\uDC4D')); -assertEquals('"\\udc4e"', JSON.stringify('\uDC4E')); -assertEquals('"\\udc4f"', JSON.stringify('\uDC4F')); -assertEquals('"\\udc50"', JSON.stringify('\uDC50')); -assertEquals('"\\udc51"', JSON.stringify('\uDC51')); -assertEquals('"\\udc52"', JSON.stringify('\uDC52')); -assertEquals('"\\udc53"', JSON.stringify('\uDC53')); -assertEquals('"\\udc54"', JSON.stringify('\uDC54')); -assertEquals('"\\udc55"', JSON.stringify('\uDC55')); -assertEquals('"\\udc56"', JSON.stringify('\uDC56')); -assertEquals('"\\udc57"', JSON.stringify('\uDC57')); -assertEquals('"\\udc58"', JSON.stringify('\uDC58')); -assertEquals('"\\udc59"', JSON.stringify('\uDC59')); -assertEquals('"\\udc5a"', JSON.stringify('\uDC5A')); -assertEquals('"\\udc5b"', JSON.stringify('\uDC5B')); -assertEquals('"\\udc5c"', JSON.stringify('\uDC5C')); -assertEquals('"\\udc5d"', JSON.stringify('\uDC5D')); -assertEquals('"\\udc5e"', JSON.stringify('\uDC5E')); -assertEquals('"\\udc5f"', JSON.stringify('\uDC5F')); -assertEquals('"\\udc60"', JSON.stringify('\uDC60')); -assertEquals('"\\udc61"', JSON.stringify('\uDC61')); -assertEquals('"\\udc62"', JSON.stringify('\uDC62')); -assertEquals('"\\udc63"', JSON.stringify('\uDC63')); -assertEquals('"\\udc64"', JSON.stringify('\uDC64')); -assertEquals('"\\udc65"', JSON.stringify('\uDC65')); -assertEquals('"\\udc66"', JSON.stringify('\uDC66')); -assertEquals('"\\udc67"', JSON.stringify('\uDC67')); -assertEquals('"\\udc68"', JSON.stringify('\uDC68')); -assertEquals('"\\udc69"', JSON.stringify('\uDC69')); -assertEquals('"\\udc6a"', JSON.stringify('\uDC6A')); -assertEquals('"\\udc6b"', JSON.stringify('\uDC6B')); -assertEquals('"\\udc6c"', JSON.stringify('\uDC6C')); -assertEquals('"\\udc6d"', JSON.stringify('\uDC6D')); -assertEquals('"\\udc6e"', JSON.stringify('\uDC6E')); -assertEquals('"\\udc6f"', JSON.stringify('\uDC6F')); -assertEquals('"\\udc70"', JSON.stringify('\uDC70')); -assertEquals('"\\udc71"', JSON.stringify('\uDC71')); -assertEquals('"\\udc72"', JSON.stringify('\uDC72')); -assertEquals('"\\udc73"', JSON.stringify('\uDC73')); -assertEquals('"\\udc74"', JSON.stringify('\uDC74')); -assertEquals('"\\udc75"', JSON.stringify('\uDC75')); -assertEquals('"\\udc76"', JSON.stringify('\uDC76')); -assertEquals('"\\udc77"', JSON.stringify('\uDC77')); -assertEquals('"\\udc78"', JSON.stringify('\uDC78')); -assertEquals('"\\udc79"', JSON.stringify('\uDC79')); -assertEquals('"\\udc7a"', JSON.stringify('\uDC7A')); -assertEquals('"\\udc7b"', JSON.stringify('\uDC7B')); -assertEquals('"\\udc7c"', JSON.stringify('\uDC7C')); -assertEquals('"\\udc7d"', JSON.stringify('\uDC7D')); -assertEquals('"\\udc7e"', JSON.stringify('\uDC7E')); -assertEquals('"\\udc7f"', JSON.stringify('\uDC7F')); -assertEquals('"\\udc80"', JSON.stringify('\uDC80')); -assertEquals('"\\udc81"', JSON.stringify('\uDC81')); -assertEquals('"\\udc82"', JSON.stringify('\uDC82')); -assertEquals('"\\udc83"', JSON.stringify('\uDC83')); -assertEquals('"\\udc84"', JSON.stringify('\uDC84')); -assertEquals('"\\udc85"', JSON.stringify('\uDC85')); -assertEquals('"\\udc86"', JSON.stringify('\uDC86')); -assertEquals('"\\udc87"', JSON.stringify('\uDC87')); -assertEquals('"\\udc88"', JSON.stringify('\uDC88')); -assertEquals('"\\udc89"', JSON.stringify('\uDC89')); -assertEquals('"\\udc8a"', JSON.stringify('\uDC8A')); -assertEquals('"\\udc8b"', JSON.stringify('\uDC8B')); -assertEquals('"\\udc8c"', JSON.stringify('\uDC8C')); -assertEquals('"\\udc8d"', JSON.stringify('\uDC8D')); -assertEquals('"\\udc8e"', JSON.stringify('\uDC8E')); -assertEquals('"\\udc8f"', JSON.stringify('\uDC8F')); -assertEquals('"\\udc90"', JSON.stringify('\uDC90')); -assertEquals('"\\udc91"', JSON.stringify('\uDC91')); -assertEquals('"\\udc92"', JSON.stringify('\uDC92')); -assertEquals('"\\udc93"', JSON.stringify('\uDC93')); -assertEquals('"\\udc94"', JSON.stringify('\uDC94')); -assertEquals('"\\udc95"', JSON.stringify('\uDC95')); -assertEquals('"\\udc96"', JSON.stringify('\uDC96')); -assertEquals('"\\udc97"', JSON.stringify('\uDC97')); -assertEquals('"\\udc98"', JSON.stringify('\uDC98')); -assertEquals('"\\udc99"', JSON.stringify('\uDC99')); -assertEquals('"\\udc9a"', JSON.stringify('\uDC9A')); -assertEquals('"\\udc9b"', JSON.stringify('\uDC9B')); -assertEquals('"\\udc9c"', JSON.stringify('\uDC9C')); -assertEquals('"\\udc9d"', JSON.stringify('\uDC9D')); -assertEquals('"\\udc9e"', JSON.stringify('\uDC9E')); -assertEquals('"\\udc9f"', JSON.stringify('\uDC9F')); -assertEquals('"\\udca0"', JSON.stringify('\uDCA0')); -assertEquals('"\\udca1"', JSON.stringify('\uDCA1')); -assertEquals('"\\udca2"', JSON.stringify('\uDCA2')); -assertEquals('"\\udca3"', JSON.stringify('\uDCA3')); -assertEquals('"\\udca4"', JSON.stringify('\uDCA4')); -assertEquals('"\\udca5"', JSON.stringify('\uDCA5')); -assertEquals('"\\udca6"', JSON.stringify('\uDCA6')); -assertEquals('"\\udca7"', JSON.stringify('\uDCA7')); -assertEquals('"\\udca8"', JSON.stringify('\uDCA8')); -assertEquals('"\\udca9"', JSON.stringify('\uDCA9')); -assertEquals('"\\udcaa"', JSON.stringify('\uDCAA')); -assertEquals('"\\udcab"', JSON.stringify('\uDCAB')); -assertEquals('"\\udcac"', JSON.stringify('\uDCAC')); -assertEquals('"\\udcad"', JSON.stringify('\uDCAD')); -assertEquals('"\\udcae"', JSON.stringify('\uDCAE')); -assertEquals('"\\udcaf"', JSON.stringify('\uDCAF')); -assertEquals('"\\udcb0"', JSON.stringify('\uDCB0')); -assertEquals('"\\udcb1"', JSON.stringify('\uDCB1')); -assertEquals('"\\udcb2"', JSON.stringify('\uDCB2')); -assertEquals('"\\udcb3"', JSON.stringify('\uDCB3')); -assertEquals('"\\udcb4"', JSON.stringify('\uDCB4')); -assertEquals('"\\udcb5"', JSON.stringify('\uDCB5')); -assertEquals('"\\udcb6"', JSON.stringify('\uDCB6')); -assertEquals('"\\udcb7"', JSON.stringify('\uDCB7')); -assertEquals('"\\udcb8"', JSON.stringify('\uDCB8')); -assertEquals('"\\udcb9"', JSON.stringify('\uDCB9')); -assertEquals('"\\udcba"', JSON.stringify('\uDCBA')); -assertEquals('"\\udcbb"', JSON.stringify('\uDCBB')); -assertEquals('"\\udcbc"', JSON.stringify('\uDCBC')); -assertEquals('"\\udcbd"', JSON.stringify('\uDCBD')); -assertEquals('"\\udcbe"', JSON.stringify('\uDCBE')); -assertEquals('"\\udcbf"', JSON.stringify('\uDCBF')); -assertEquals('"\\udcc0"', JSON.stringify('\uDCC0')); -assertEquals('"\\udcc1"', JSON.stringify('\uDCC1')); -assertEquals('"\\udcc2"', JSON.stringify('\uDCC2')); -assertEquals('"\\udcc3"', JSON.stringify('\uDCC3')); -assertEquals('"\\udcc4"', JSON.stringify('\uDCC4')); -assertEquals('"\\udcc5"', JSON.stringify('\uDCC5')); -assertEquals('"\\udcc6"', JSON.stringify('\uDCC6')); -assertEquals('"\\udcc7"', JSON.stringify('\uDCC7')); -assertEquals('"\\udcc8"', JSON.stringify('\uDCC8')); -assertEquals('"\\udcc9"', JSON.stringify('\uDCC9')); -assertEquals('"\\udcca"', JSON.stringify('\uDCCA')); -assertEquals('"\\udccb"', JSON.stringify('\uDCCB')); -assertEquals('"\\udccc"', JSON.stringify('\uDCCC')); -assertEquals('"\\udccd"', JSON.stringify('\uDCCD')); -assertEquals('"\\udcce"', JSON.stringify('\uDCCE')); -assertEquals('"\\udccf"', JSON.stringify('\uDCCF')); -assertEquals('"\\udcd0"', JSON.stringify('\uDCD0')); -assertEquals('"\\udcd1"', JSON.stringify('\uDCD1')); -assertEquals('"\\udcd2"', JSON.stringify('\uDCD2')); -assertEquals('"\\udcd3"', JSON.stringify('\uDCD3')); -assertEquals('"\\udcd4"', JSON.stringify('\uDCD4')); -assertEquals('"\\udcd5"', JSON.stringify('\uDCD5')); -assertEquals('"\\udcd6"', JSON.stringify('\uDCD6')); -assertEquals('"\\udcd7"', JSON.stringify('\uDCD7')); -assertEquals('"\\udcd8"', JSON.stringify('\uDCD8')); -assertEquals('"\\udcd9"', JSON.stringify('\uDCD9')); -assertEquals('"\\udcda"', JSON.stringify('\uDCDA')); -assertEquals('"\\udcdb"', JSON.stringify('\uDCDB')); -assertEquals('"\\udcdc"', JSON.stringify('\uDCDC')); -assertEquals('"\\udcdd"', JSON.stringify('\uDCDD')); -assertEquals('"\\udcde"', JSON.stringify('\uDCDE')); -assertEquals('"\\udcdf"', JSON.stringify('\uDCDF')); -assertEquals('"\\udce0"', JSON.stringify('\uDCE0')); -assertEquals('"\\udce1"', JSON.stringify('\uDCE1')); -assertEquals('"\\udce2"', JSON.stringify('\uDCE2')); -assertEquals('"\\udce3"', JSON.stringify('\uDCE3')); -assertEquals('"\\udce4"', JSON.stringify('\uDCE4')); -assertEquals('"\\udce5"', JSON.stringify('\uDCE5')); -assertEquals('"\\udce6"', JSON.stringify('\uDCE6')); -assertEquals('"\\udce7"', JSON.stringify('\uDCE7')); -assertEquals('"\\udce8"', JSON.stringify('\uDCE8')); -assertEquals('"\\udce9"', JSON.stringify('\uDCE9')); -assertEquals('"\\udcea"', JSON.stringify('\uDCEA')); -assertEquals('"\\udceb"', JSON.stringify('\uDCEB')); -assertEquals('"\\udcec"', JSON.stringify('\uDCEC')); -assertEquals('"\\udced"', JSON.stringify('\uDCED')); -assertEquals('"\\udcee"', JSON.stringify('\uDCEE')); -assertEquals('"\\udcef"', JSON.stringify('\uDCEF')); -assertEquals('"\\udcf0"', JSON.stringify('\uDCF0')); -assertEquals('"\\udcf1"', JSON.stringify('\uDCF1')); -assertEquals('"\\udcf2"', JSON.stringify('\uDCF2')); -assertEquals('"\\udcf3"', JSON.stringify('\uDCF3')); -assertEquals('"\\udcf4"', JSON.stringify('\uDCF4')); -assertEquals('"\\udcf5"', JSON.stringify('\uDCF5')); -assertEquals('"\\udcf6"', JSON.stringify('\uDCF6')); -assertEquals('"\\udcf7"', JSON.stringify('\uDCF7')); -assertEquals('"\\udcf8"', JSON.stringify('\uDCF8')); -assertEquals('"\\udcf9"', JSON.stringify('\uDCF9')); -assertEquals('"\\udcfa"', JSON.stringify('\uDCFA')); -assertEquals('"\\udcfb"', JSON.stringify('\uDCFB')); -assertEquals('"\\udcfc"', JSON.stringify('\uDCFC')); -assertEquals('"\\udcfd"', JSON.stringify('\uDCFD')); -assertEquals('"\\udcfe"', JSON.stringify('\uDCFE')); -assertEquals('"\\udcff"', JSON.stringify('\uDCFF')); -assertEquals('"\\udd00"', JSON.stringify('\uDD00')); -assertEquals('"\\udd01"', JSON.stringify('\uDD01')); -assertEquals('"\\udd02"', JSON.stringify('\uDD02')); -assertEquals('"\\udd03"', JSON.stringify('\uDD03')); -assertEquals('"\\udd04"', JSON.stringify('\uDD04')); -assertEquals('"\\udd05"', JSON.stringify('\uDD05')); -assertEquals('"\\udd06"', JSON.stringify('\uDD06')); -assertEquals('"\\udd07"', JSON.stringify('\uDD07')); -assertEquals('"\\udd08"', JSON.stringify('\uDD08')); -assertEquals('"\\udd09"', JSON.stringify('\uDD09')); -assertEquals('"\\udd0a"', JSON.stringify('\uDD0A')); -assertEquals('"\\udd0b"', JSON.stringify('\uDD0B')); -assertEquals('"\\udd0c"', JSON.stringify('\uDD0C')); -assertEquals('"\\udd0d"', JSON.stringify('\uDD0D')); -assertEquals('"\\udd0e"', JSON.stringify('\uDD0E')); -assertEquals('"\\udd0f"', JSON.stringify('\uDD0F')); -assertEquals('"\\udd10"', JSON.stringify('\uDD10')); -assertEquals('"\\udd11"', JSON.stringify('\uDD11')); -assertEquals('"\\udd12"', JSON.stringify('\uDD12')); -assertEquals('"\\udd13"', JSON.stringify('\uDD13')); -assertEquals('"\\udd14"', JSON.stringify('\uDD14')); -assertEquals('"\\udd15"', JSON.stringify('\uDD15')); -assertEquals('"\\udd16"', JSON.stringify('\uDD16')); -assertEquals('"\\udd17"', JSON.stringify('\uDD17')); -assertEquals('"\\udd18"', JSON.stringify('\uDD18')); -assertEquals('"\\udd19"', JSON.stringify('\uDD19')); -assertEquals('"\\udd1a"', JSON.stringify('\uDD1A')); -assertEquals('"\\udd1b"', JSON.stringify('\uDD1B')); -assertEquals('"\\udd1c"', JSON.stringify('\uDD1C')); -assertEquals('"\\udd1d"', JSON.stringify('\uDD1D')); -assertEquals('"\\udd1e"', JSON.stringify('\uDD1E')); -assertEquals('"\\udd1f"', JSON.stringify('\uDD1F')); -assertEquals('"\\udd20"', JSON.stringify('\uDD20')); -assertEquals('"\\udd21"', JSON.stringify('\uDD21')); -assertEquals('"\\udd22"', JSON.stringify('\uDD22')); -assertEquals('"\\udd23"', JSON.stringify('\uDD23')); -assertEquals('"\\udd24"', JSON.stringify('\uDD24')); -assertEquals('"\\udd25"', JSON.stringify('\uDD25')); -assertEquals('"\\udd26"', JSON.stringify('\uDD26')); -assertEquals('"\\udd27"', JSON.stringify('\uDD27')); -assertEquals('"\\udd28"', JSON.stringify('\uDD28')); -assertEquals('"\\udd29"', JSON.stringify('\uDD29')); -assertEquals('"\\udd2a"', JSON.stringify('\uDD2A')); -assertEquals('"\\udd2b"', JSON.stringify('\uDD2B')); -assertEquals('"\\udd2c"', JSON.stringify('\uDD2C')); -assertEquals('"\\udd2d"', JSON.stringify('\uDD2D')); -assertEquals('"\\udd2e"', JSON.stringify('\uDD2E')); -assertEquals('"\\udd2f"', JSON.stringify('\uDD2F')); -assertEquals('"\\udd30"', JSON.stringify('\uDD30')); -assertEquals('"\\udd31"', JSON.stringify('\uDD31')); -assertEquals('"\\udd32"', JSON.stringify('\uDD32')); -assertEquals('"\\udd33"', JSON.stringify('\uDD33')); -assertEquals('"\\udd34"', JSON.stringify('\uDD34')); -assertEquals('"\\udd35"', JSON.stringify('\uDD35')); -assertEquals('"\\udd36"', JSON.stringify('\uDD36')); -assertEquals('"\\udd37"', JSON.stringify('\uDD37')); -assertEquals('"\\udd38"', JSON.stringify('\uDD38')); -assertEquals('"\\udd39"', JSON.stringify('\uDD39')); -assertEquals('"\\udd3a"', JSON.stringify('\uDD3A')); -assertEquals('"\\udd3b"', JSON.stringify('\uDD3B')); -assertEquals('"\\udd3c"', JSON.stringify('\uDD3C')); -assertEquals('"\\udd3d"', JSON.stringify('\uDD3D')); -assertEquals('"\\udd3e"', JSON.stringify('\uDD3E')); -assertEquals('"\\udd3f"', JSON.stringify('\uDD3F')); -assertEquals('"\\udd40"', JSON.stringify('\uDD40')); -assertEquals('"\\udd41"', JSON.stringify('\uDD41')); -assertEquals('"\\udd42"', JSON.stringify('\uDD42')); -assertEquals('"\\udd43"', JSON.stringify('\uDD43')); -assertEquals('"\\udd44"', JSON.stringify('\uDD44')); -assertEquals('"\\udd45"', JSON.stringify('\uDD45')); -assertEquals('"\\udd46"', JSON.stringify('\uDD46')); -assertEquals('"\\udd47"', JSON.stringify('\uDD47')); -assertEquals('"\\udd48"', JSON.stringify('\uDD48')); -assertEquals('"\\udd49"', JSON.stringify('\uDD49')); -assertEquals('"\\udd4a"', JSON.stringify('\uDD4A')); -assertEquals('"\\udd4b"', JSON.stringify('\uDD4B')); -assertEquals('"\\udd4c"', JSON.stringify('\uDD4C')); -assertEquals('"\\udd4d"', JSON.stringify('\uDD4D')); -assertEquals('"\\udd4e"', JSON.stringify('\uDD4E')); -assertEquals('"\\udd4f"', JSON.stringify('\uDD4F')); -assertEquals('"\\udd50"', JSON.stringify('\uDD50')); -assertEquals('"\\udd51"', JSON.stringify('\uDD51')); -assertEquals('"\\udd52"', JSON.stringify('\uDD52')); -assertEquals('"\\udd53"', JSON.stringify('\uDD53')); -assertEquals('"\\udd54"', JSON.stringify('\uDD54')); -assertEquals('"\\udd55"', JSON.stringify('\uDD55')); -assertEquals('"\\udd56"', JSON.stringify('\uDD56')); -assertEquals('"\\udd57"', JSON.stringify('\uDD57')); -assertEquals('"\\udd58"', JSON.stringify('\uDD58')); -assertEquals('"\\udd59"', JSON.stringify('\uDD59')); -assertEquals('"\\udd5a"', JSON.stringify('\uDD5A')); -assertEquals('"\\udd5b"', JSON.stringify('\uDD5B')); -assertEquals('"\\udd5c"', JSON.stringify('\uDD5C')); -assertEquals('"\\udd5d"', JSON.stringify('\uDD5D')); -assertEquals('"\\udd5e"', JSON.stringify('\uDD5E')); -assertEquals('"\\udd5f"', JSON.stringify('\uDD5F')); -assertEquals('"\\udd60"', JSON.stringify('\uDD60')); -assertEquals('"\\udd61"', JSON.stringify('\uDD61')); -assertEquals('"\\udd62"', JSON.stringify('\uDD62')); -assertEquals('"\\udd63"', JSON.stringify('\uDD63')); -assertEquals('"\\udd64"', JSON.stringify('\uDD64')); -assertEquals('"\\udd65"', JSON.stringify('\uDD65')); -assertEquals('"\\udd66"', JSON.stringify('\uDD66')); -assertEquals('"\\udd67"', JSON.stringify('\uDD67')); -assertEquals('"\\udd68"', JSON.stringify('\uDD68')); -assertEquals('"\\udd69"', JSON.stringify('\uDD69')); -assertEquals('"\\udd6a"', JSON.stringify('\uDD6A')); -assertEquals('"\\udd6b"', JSON.stringify('\uDD6B')); -assertEquals('"\\udd6c"', JSON.stringify('\uDD6C')); -assertEquals('"\\udd6d"', JSON.stringify('\uDD6D')); -assertEquals('"\\udd6e"', JSON.stringify('\uDD6E')); -assertEquals('"\\udd6f"', JSON.stringify('\uDD6F')); -assertEquals('"\\udd70"', JSON.stringify('\uDD70')); -assertEquals('"\\udd71"', JSON.stringify('\uDD71')); -assertEquals('"\\udd72"', JSON.stringify('\uDD72')); -assertEquals('"\\udd73"', JSON.stringify('\uDD73')); -assertEquals('"\\udd74"', JSON.stringify('\uDD74')); -assertEquals('"\\udd75"', JSON.stringify('\uDD75')); -assertEquals('"\\udd76"', JSON.stringify('\uDD76')); -assertEquals('"\\udd77"', JSON.stringify('\uDD77')); -assertEquals('"\\udd78"', JSON.stringify('\uDD78')); -assertEquals('"\\udd79"', JSON.stringify('\uDD79')); -assertEquals('"\\udd7a"', JSON.stringify('\uDD7A')); -assertEquals('"\\udd7b"', JSON.stringify('\uDD7B')); -assertEquals('"\\udd7c"', JSON.stringify('\uDD7C')); -assertEquals('"\\udd7d"', JSON.stringify('\uDD7D')); -assertEquals('"\\udd7e"', JSON.stringify('\uDD7E')); -assertEquals('"\\udd7f"', JSON.stringify('\uDD7F')); -assertEquals('"\\udd80"', JSON.stringify('\uDD80')); -assertEquals('"\\udd81"', JSON.stringify('\uDD81')); -assertEquals('"\\udd82"', JSON.stringify('\uDD82')); -assertEquals('"\\udd83"', JSON.stringify('\uDD83')); -assertEquals('"\\udd84"', JSON.stringify('\uDD84')); -assertEquals('"\\udd85"', JSON.stringify('\uDD85')); -assertEquals('"\\udd86"', JSON.stringify('\uDD86')); -assertEquals('"\\udd87"', JSON.stringify('\uDD87')); -assertEquals('"\\udd88"', JSON.stringify('\uDD88')); -assertEquals('"\\udd89"', JSON.stringify('\uDD89')); -assertEquals('"\\udd8a"', JSON.stringify('\uDD8A')); -assertEquals('"\\udd8b"', JSON.stringify('\uDD8B')); -assertEquals('"\\udd8c"', JSON.stringify('\uDD8C')); -assertEquals('"\\udd8d"', JSON.stringify('\uDD8D')); -assertEquals('"\\udd8e"', JSON.stringify('\uDD8E')); -assertEquals('"\\udd8f"', JSON.stringify('\uDD8F')); -assertEquals('"\\udd90"', JSON.stringify('\uDD90')); -assertEquals('"\\udd91"', JSON.stringify('\uDD91')); -assertEquals('"\\udd92"', JSON.stringify('\uDD92')); -assertEquals('"\\udd93"', JSON.stringify('\uDD93')); -assertEquals('"\\udd94"', JSON.stringify('\uDD94')); -assertEquals('"\\udd95"', JSON.stringify('\uDD95')); -assertEquals('"\\udd96"', JSON.stringify('\uDD96')); -assertEquals('"\\udd97"', JSON.stringify('\uDD97')); -assertEquals('"\\udd98"', JSON.stringify('\uDD98')); -assertEquals('"\\udd99"', JSON.stringify('\uDD99')); -assertEquals('"\\udd9a"', JSON.stringify('\uDD9A')); -assertEquals('"\\udd9b"', JSON.stringify('\uDD9B')); -assertEquals('"\\udd9c"', JSON.stringify('\uDD9C')); -assertEquals('"\\udd9d"', JSON.stringify('\uDD9D')); -assertEquals('"\\udd9e"', JSON.stringify('\uDD9E')); -assertEquals('"\\udd9f"', JSON.stringify('\uDD9F')); -assertEquals('"\\udda0"', JSON.stringify('\uDDA0')); -assertEquals('"\\udda1"', JSON.stringify('\uDDA1')); -assertEquals('"\\udda2"', JSON.stringify('\uDDA2')); -assertEquals('"\\udda3"', JSON.stringify('\uDDA3')); -assertEquals('"\\udda4"', JSON.stringify('\uDDA4')); -assertEquals('"\\udda5"', JSON.stringify('\uDDA5')); -assertEquals('"\\udda6"', JSON.stringify('\uDDA6')); -assertEquals('"\\udda7"', JSON.stringify('\uDDA7')); -assertEquals('"\\udda8"', JSON.stringify('\uDDA8')); -assertEquals('"\\udda9"', JSON.stringify('\uDDA9')); -assertEquals('"\\uddaa"', JSON.stringify('\uDDAA')); -assertEquals('"\\uddab"', JSON.stringify('\uDDAB')); -assertEquals('"\\uddac"', JSON.stringify('\uDDAC')); -assertEquals('"\\uddad"', JSON.stringify('\uDDAD')); -assertEquals('"\\uddae"', JSON.stringify('\uDDAE')); -assertEquals('"\\uddaf"', JSON.stringify('\uDDAF')); -assertEquals('"\\uddb0"', JSON.stringify('\uDDB0')); -assertEquals('"\\uddb1"', JSON.stringify('\uDDB1')); -assertEquals('"\\uddb2"', JSON.stringify('\uDDB2')); -assertEquals('"\\uddb3"', JSON.stringify('\uDDB3')); -assertEquals('"\\uddb4"', JSON.stringify('\uDDB4')); -assertEquals('"\\uddb5"', JSON.stringify('\uDDB5')); -assertEquals('"\\uddb6"', JSON.stringify('\uDDB6')); -assertEquals('"\\uddb7"', JSON.stringify('\uDDB7')); -assertEquals('"\\uddb8"', JSON.stringify('\uDDB8')); -assertEquals('"\\uddb9"', JSON.stringify('\uDDB9')); -assertEquals('"\\uddba"', JSON.stringify('\uDDBA')); -assertEquals('"\\uddbb"', JSON.stringify('\uDDBB')); -assertEquals('"\\uddbc"', JSON.stringify('\uDDBC')); -assertEquals('"\\uddbd"', JSON.stringify('\uDDBD')); -assertEquals('"\\uddbe"', JSON.stringify('\uDDBE')); -assertEquals('"\\uddbf"', JSON.stringify('\uDDBF')); -assertEquals('"\\uddc0"', JSON.stringify('\uDDC0')); -assertEquals('"\\uddc1"', JSON.stringify('\uDDC1')); -assertEquals('"\\uddc2"', JSON.stringify('\uDDC2')); -assertEquals('"\\uddc3"', JSON.stringify('\uDDC3')); -assertEquals('"\\uddc4"', JSON.stringify('\uDDC4')); -assertEquals('"\\uddc5"', JSON.stringify('\uDDC5')); -assertEquals('"\\uddc6"', JSON.stringify('\uDDC6')); -assertEquals('"\\uddc7"', JSON.stringify('\uDDC7')); -assertEquals('"\\uddc8"', JSON.stringify('\uDDC8')); -assertEquals('"\\uddc9"', JSON.stringify('\uDDC9')); -assertEquals('"\\uddca"', JSON.stringify('\uDDCA')); -assertEquals('"\\uddcb"', JSON.stringify('\uDDCB')); -assertEquals('"\\uddcc"', JSON.stringify('\uDDCC')); -assertEquals('"\\uddcd"', JSON.stringify('\uDDCD')); -assertEquals('"\\uddce"', JSON.stringify('\uDDCE')); -assertEquals('"\\uddcf"', JSON.stringify('\uDDCF')); -assertEquals('"\\uddd0"', JSON.stringify('\uDDD0')); -assertEquals('"\\uddd1"', JSON.stringify('\uDDD1')); -assertEquals('"\\uddd2"', JSON.stringify('\uDDD2')); -assertEquals('"\\uddd3"', JSON.stringify('\uDDD3')); -assertEquals('"\\uddd4"', JSON.stringify('\uDDD4')); -assertEquals('"\\uddd5"', JSON.stringify('\uDDD5')); -assertEquals('"\\uddd6"', JSON.stringify('\uDDD6')); -assertEquals('"\\uddd7"', JSON.stringify('\uDDD7')); -assertEquals('"\\uddd8"', JSON.stringify('\uDDD8')); -assertEquals('"\\uddd9"', JSON.stringify('\uDDD9')); -assertEquals('"\\uddda"', JSON.stringify('\uDDDA')); -assertEquals('"\\udddb"', JSON.stringify('\uDDDB')); -assertEquals('"\\udddc"', JSON.stringify('\uDDDC')); -assertEquals('"\\udddd"', JSON.stringify('\uDDDD')); -assertEquals('"\\uddde"', JSON.stringify('\uDDDE')); -assertEquals('"\\udddf"', JSON.stringify('\uDDDF')); -assertEquals('"\\udde0"', JSON.stringify('\uDDE0')); -assertEquals('"\\udde1"', JSON.stringify('\uDDE1')); -assertEquals('"\\udde2"', JSON.stringify('\uDDE2')); -assertEquals('"\\udde3"', JSON.stringify('\uDDE3')); -assertEquals('"\\udde4"', JSON.stringify('\uDDE4')); -assertEquals('"\\udde5"', JSON.stringify('\uDDE5')); -assertEquals('"\\udde6"', JSON.stringify('\uDDE6')); -assertEquals('"\\udde7"', JSON.stringify('\uDDE7')); -assertEquals('"\\udde8"', JSON.stringify('\uDDE8')); -assertEquals('"\\udde9"', JSON.stringify('\uDDE9')); -assertEquals('"\\uddea"', JSON.stringify('\uDDEA')); -assertEquals('"\\uddeb"', JSON.stringify('\uDDEB')); -assertEquals('"\\uddec"', JSON.stringify('\uDDEC')); -assertEquals('"\\udded"', JSON.stringify('\uDDED')); -assertEquals('"\\uddee"', JSON.stringify('\uDDEE')); -assertEquals('"\\uddef"', JSON.stringify('\uDDEF')); -assertEquals('"\\uddf0"', JSON.stringify('\uDDF0')); -assertEquals('"\\uddf1"', JSON.stringify('\uDDF1')); -assertEquals('"\\uddf2"', JSON.stringify('\uDDF2')); -assertEquals('"\\uddf3"', JSON.stringify('\uDDF3')); -assertEquals('"\\uddf4"', JSON.stringify('\uDDF4')); -assertEquals('"\\uddf5"', JSON.stringify('\uDDF5')); -assertEquals('"\\uddf6"', JSON.stringify('\uDDF6')); -assertEquals('"\\uddf7"', JSON.stringify('\uDDF7')); -assertEquals('"\\uddf8"', JSON.stringify('\uDDF8')); -assertEquals('"\\uddf9"', JSON.stringify('\uDDF9')); -assertEquals('"\\uddfa"', JSON.stringify('\uDDFA')); -assertEquals('"\\uddfb"', JSON.stringify('\uDDFB')); -assertEquals('"\\uddfc"', JSON.stringify('\uDDFC')); -assertEquals('"\\uddfd"', JSON.stringify('\uDDFD')); -assertEquals('"\\uddfe"', JSON.stringify('\uDDFE')); -assertEquals('"\\uddff"', JSON.stringify('\uDDFF')); -assertEquals('"\\ude00"', JSON.stringify('\uDE00')); -assertEquals('"\\ude01"', JSON.stringify('\uDE01')); -assertEquals('"\\ude02"', JSON.stringify('\uDE02')); -assertEquals('"\\ude03"', JSON.stringify('\uDE03')); -assertEquals('"\\ude04"', JSON.stringify('\uDE04')); -assertEquals('"\\ude05"', JSON.stringify('\uDE05')); -assertEquals('"\\ude06"', JSON.stringify('\uDE06')); -assertEquals('"\\ude07"', JSON.stringify('\uDE07')); -assertEquals('"\\ude08"', JSON.stringify('\uDE08')); -assertEquals('"\\ude09"', JSON.stringify('\uDE09')); -assertEquals('"\\ude0a"', JSON.stringify('\uDE0A')); -assertEquals('"\\ude0b"', JSON.stringify('\uDE0B')); -assertEquals('"\\ude0c"', JSON.stringify('\uDE0C')); -assertEquals('"\\ude0d"', JSON.stringify('\uDE0D')); -assertEquals('"\\ude0e"', JSON.stringify('\uDE0E')); -assertEquals('"\\ude0f"', JSON.stringify('\uDE0F')); -assertEquals('"\\ude10"', JSON.stringify('\uDE10')); -assertEquals('"\\ude11"', JSON.stringify('\uDE11')); -assertEquals('"\\ude12"', JSON.stringify('\uDE12')); -assertEquals('"\\ude13"', JSON.stringify('\uDE13')); -assertEquals('"\\ude14"', JSON.stringify('\uDE14')); -assertEquals('"\\ude15"', JSON.stringify('\uDE15')); -assertEquals('"\\ude16"', JSON.stringify('\uDE16')); -assertEquals('"\\ude17"', JSON.stringify('\uDE17')); -assertEquals('"\\ude18"', JSON.stringify('\uDE18')); -assertEquals('"\\ude19"', JSON.stringify('\uDE19')); -assertEquals('"\\ude1a"', JSON.stringify('\uDE1A')); -assertEquals('"\\ude1b"', JSON.stringify('\uDE1B')); -assertEquals('"\\ude1c"', JSON.stringify('\uDE1C')); -assertEquals('"\\ude1d"', JSON.stringify('\uDE1D')); -assertEquals('"\\ude1e"', JSON.stringify('\uDE1E')); -assertEquals('"\\ude1f"', JSON.stringify('\uDE1F')); -assertEquals('"\\ude20"', JSON.stringify('\uDE20')); -assertEquals('"\\ude21"', JSON.stringify('\uDE21')); -assertEquals('"\\ude22"', JSON.stringify('\uDE22')); -assertEquals('"\\ude23"', JSON.stringify('\uDE23')); -assertEquals('"\\ude24"', JSON.stringify('\uDE24')); -assertEquals('"\\ude25"', JSON.stringify('\uDE25')); -assertEquals('"\\ude26"', JSON.stringify('\uDE26')); -assertEquals('"\\ude27"', JSON.stringify('\uDE27')); -assertEquals('"\\ude28"', JSON.stringify('\uDE28')); -assertEquals('"\\ude29"', JSON.stringify('\uDE29')); -assertEquals('"\\ude2a"', JSON.stringify('\uDE2A')); -assertEquals('"\\ude2b"', JSON.stringify('\uDE2B')); -assertEquals('"\\ude2c"', JSON.stringify('\uDE2C')); -assertEquals('"\\ude2d"', JSON.stringify('\uDE2D')); -assertEquals('"\\ude2e"', JSON.stringify('\uDE2E')); -assertEquals('"\\ude2f"', JSON.stringify('\uDE2F')); -assertEquals('"\\ude30"', JSON.stringify('\uDE30')); -assertEquals('"\\ude31"', JSON.stringify('\uDE31')); -assertEquals('"\\ude32"', JSON.stringify('\uDE32')); -assertEquals('"\\ude33"', JSON.stringify('\uDE33')); -assertEquals('"\\ude34"', JSON.stringify('\uDE34')); -assertEquals('"\\ude35"', JSON.stringify('\uDE35')); -assertEquals('"\\ude36"', JSON.stringify('\uDE36')); -assertEquals('"\\ude37"', JSON.stringify('\uDE37')); -assertEquals('"\\ude38"', JSON.stringify('\uDE38')); -assertEquals('"\\ude39"', JSON.stringify('\uDE39')); -assertEquals('"\\ude3a"', JSON.stringify('\uDE3A')); -assertEquals('"\\ude3b"', JSON.stringify('\uDE3B')); -assertEquals('"\\ude3c"', JSON.stringify('\uDE3C')); -assertEquals('"\\ude3d"', JSON.stringify('\uDE3D')); -assertEquals('"\\ude3e"', JSON.stringify('\uDE3E')); -assertEquals('"\\ude3f"', JSON.stringify('\uDE3F')); -assertEquals('"\\ude40"', JSON.stringify('\uDE40')); -assertEquals('"\\ude41"', JSON.stringify('\uDE41')); -assertEquals('"\\ude42"', JSON.stringify('\uDE42')); -assertEquals('"\\ude43"', JSON.stringify('\uDE43')); -assertEquals('"\\ude44"', JSON.stringify('\uDE44')); -assertEquals('"\\ude45"', JSON.stringify('\uDE45')); -assertEquals('"\\ude46"', JSON.stringify('\uDE46')); -assertEquals('"\\ude47"', JSON.stringify('\uDE47')); -assertEquals('"\\ude48"', JSON.stringify('\uDE48')); -assertEquals('"\\ude49"', JSON.stringify('\uDE49')); -assertEquals('"\\ude4a"', JSON.stringify('\uDE4A')); -assertEquals('"\\ude4b"', JSON.stringify('\uDE4B')); -assertEquals('"\\ude4c"', JSON.stringify('\uDE4C')); -assertEquals('"\\ude4d"', JSON.stringify('\uDE4D')); -assertEquals('"\\ude4e"', JSON.stringify('\uDE4E')); -assertEquals('"\\ude4f"', JSON.stringify('\uDE4F')); -assertEquals('"\\ude50"', JSON.stringify('\uDE50')); -assertEquals('"\\ude51"', JSON.stringify('\uDE51')); -assertEquals('"\\ude52"', JSON.stringify('\uDE52')); -assertEquals('"\\ude53"', JSON.stringify('\uDE53')); -assertEquals('"\\ude54"', JSON.stringify('\uDE54')); -assertEquals('"\\ude55"', JSON.stringify('\uDE55')); -assertEquals('"\\ude56"', JSON.stringify('\uDE56')); -assertEquals('"\\ude57"', JSON.stringify('\uDE57')); -assertEquals('"\\ude58"', JSON.stringify('\uDE58')); -assertEquals('"\\ude59"', JSON.stringify('\uDE59')); -assertEquals('"\\ude5a"', JSON.stringify('\uDE5A')); -assertEquals('"\\ude5b"', JSON.stringify('\uDE5B')); -assertEquals('"\\ude5c"', JSON.stringify('\uDE5C')); -assertEquals('"\\ude5d"', JSON.stringify('\uDE5D')); -assertEquals('"\\ude5e"', JSON.stringify('\uDE5E')); -assertEquals('"\\ude5f"', JSON.stringify('\uDE5F')); -assertEquals('"\\ude60"', JSON.stringify('\uDE60')); -assertEquals('"\\ude61"', JSON.stringify('\uDE61')); -assertEquals('"\\ude62"', JSON.stringify('\uDE62')); -assertEquals('"\\ude63"', JSON.stringify('\uDE63')); -assertEquals('"\\ude64"', JSON.stringify('\uDE64')); -assertEquals('"\\ude65"', JSON.stringify('\uDE65')); -assertEquals('"\\ude66"', JSON.stringify('\uDE66')); -assertEquals('"\\ude67"', JSON.stringify('\uDE67')); -assertEquals('"\\ude68"', JSON.stringify('\uDE68')); -assertEquals('"\\ude69"', JSON.stringify('\uDE69')); -assertEquals('"\\ude6a"', JSON.stringify('\uDE6A')); -assertEquals('"\\ude6b"', JSON.stringify('\uDE6B')); -assertEquals('"\\ude6c"', JSON.stringify('\uDE6C')); -assertEquals('"\\ude6d"', JSON.stringify('\uDE6D')); -assertEquals('"\\ude6e"', JSON.stringify('\uDE6E')); -assertEquals('"\\ude6f"', JSON.stringify('\uDE6F')); -assertEquals('"\\ude70"', JSON.stringify('\uDE70')); -assertEquals('"\\ude71"', JSON.stringify('\uDE71')); -assertEquals('"\\ude72"', JSON.stringify('\uDE72')); -assertEquals('"\\ude73"', JSON.stringify('\uDE73')); -assertEquals('"\\ude74"', JSON.stringify('\uDE74')); -assertEquals('"\\ude75"', JSON.stringify('\uDE75')); -assertEquals('"\\ude76"', JSON.stringify('\uDE76')); -assertEquals('"\\ude77"', JSON.stringify('\uDE77')); -assertEquals('"\\ude78"', JSON.stringify('\uDE78')); -assertEquals('"\\ude79"', JSON.stringify('\uDE79')); -assertEquals('"\\ude7a"', JSON.stringify('\uDE7A')); -assertEquals('"\\ude7b"', JSON.stringify('\uDE7B')); -assertEquals('"\\ude7c"', JSON.stringify('\uDE7C')); -assertEquals('"\\ude7d"', JSON.stringify('\uDE7D')); -assertEquals('"\\ude7e"', JSON.stringify('\uDE7E')); -assertEquals('"\\ude7f"', JSON.stringify('\uDE7F')); -assertEquals('"\\ude80"', JSON.stringify('\uDE80')); -assertEquals('"\\ude81"', JSON.stringify('\uDE81')); -assertEquals('"\\ude82"', JSON.stringify('\uDE82')); -assertEquals('"\\ude83"', JSON.stringify('\uDE83')); -assertEquals('"\\ude84"', JSON.stringify('\uDE84')); -assertEquals('"\\ude85"', JSON.stringify('\uDE85')); -assertEquals('"\\ude86"', JSON.stringify('\uDE86')); -assertEquals('"\\ude87"', JSON.stringify('\uDE87')); -assertEquals('"\\ude88"', JSON.stringify('\uDE88')); -assertEquals('"\\ude89"', JSON.stringify('\uDE89')); -assertEquals('"\\ude8a"', JSON.stringify('\uDE8A')); -assertEquals('"\\ude8b"', JSON.stringify('\uDE8B')); -assertEquals('"\\ude8c"', JSON.stringify('\uDE8C')); -assertEquals('"\\ude8d"', JSON.stringify('\uDE8D')); -assertEquals('"\\ude8e"', JSON.stringify('\uDE8E')); -assertEquals('"\\ude8f"', JSON.stringify('\uDE8F')); -assertEquals('"\\ude90"', JSON.stringify('\uDE90')); -assertEquals('"\\ude91"', JSON.stringify('\uDE91')); -assertEquals('"\\ude92"', JSON.stringify('\uDE92')); -assertEquals('"\\ude93"', JSON.stringify('\uDE93')); -assertEquals('"\\ude94"', JSON.stringify('\uDE94')); -assertEquals('"\\ude95"', JSON.stringify('\uDE95')); -assertEquals('"\\ude96"', JSON.stringify('\uDE96')); -assertEquals('"\\ude97"', JSON.stringify('\uDE97')); -assertEquals('"\\ude98"', JSON.stringify('\uDE98')); -assertEquals('"\\ude99"', JSON.stringify('\uDE99')); -assertEquals('"\\ude9a"', JSON.stringify('\uDE9A')); -assertEquals('"\\ude9b"', JSON.stringify('\uDE9B')); -assertEquals('"\\ude9c"', JSON.stringify('\uDE9C')); -assertEquals('"\\ude9d"', JSON.stringify('\uDE9D')); -assertEquals('"\\ude9e"', JSON.stringify('\uDE9E')); -assertEquals('"\\ude9f"', JSON.stringify('\uDE9F')); -assertEquals('"\\udea0"', JSON.stringify('\uDEA0')); -assertEquals('"\\udea1"', JSON.stringify('\uDEA1')); -assertEquals('"\\udea2"', JSON.stringify('\uDEA2')); -assertEquals('"\\udea3"', JSON.stringify('\uDEA3')); -assertEquals('"\\udea4"', JSON.stringify('\uDEA4')); -assertEquals('"\\udea5"', JSON.stringify('\uDEA5')); -assertEquals('"\\udea6"', JSON.stringify('\uDEA6')); -assertEquals('"\\udea7"', JSON.stringify('\uDEA7')); -assertEquals('"\\udea8"', JSON.stringify('\uDEA8')); -assertEquals('"\\udea9"', JSON.stringify('\uDEA9')); -assertEquals('"\\udeaa"', JSON.stringify('\uDEAA')); -assertEquals('"\\udeab"', JSON.stringify('\uDEAB')); -assertEquals('"\\udeac"', JSON.stringify('\uDEAC')); -assertEquals('"\\udead"', JSON.stringify('\uDEAD')); -assertEquals('"\\udeae"', JSON.stringify('\uDEAE')); -assertEquals('"\\udeaf"', JSON.stringify('\uDEAF')); -assertEquals('"\\udeb0"', JSON.stringify('\uDEB0')); -assertEquals('"\\udeb1"', JSON.stringify('\uDEB1')); -assertEquals('"\\udeb2"', JSON.stringify('\uDEB2')); -assertEquals('"\\udeb3"', JSON.stringify('\uDEB3')); -assertEquals('"\\udeb4"', JSON.stringify('\uDEB4')); -assertEquals('"\\udeb5"', JSON.stringify('\uDEB5')); -assertEquals('"\\udeb6"', JSON.stringify('\uDEB6')); -assertEquals('"\\udeb7"', JSON.stringify('\uDEB7')); -assertEquals('"\\udeb8"', JSON.stringify('\uDEB8')); -assertEquals('"\\udeb9"', JSON.stringify('\uDEB9')); -assertEquals('"\\udeba"', JSON.stringify('\uDEBA')); -assertEquals('"\\udebb"', JSON.stringify('\uDEBB')); -assertEquals('"\\udebc"', JSON.stringify('\uDEBC')); -assertEquals('"\\udebd"', JSON.stringify('\uDEBD')); -assertEquals('"\\udebe"', JSON.stringify('\uDEBE')); -assertEquals('"\\udebf"', JSON.stringify('\uDEBF')); -assertEquals('"\\udec0"', JSON.stringify('\uDEC0')); -assertEquals('"\\udec1"', JSON.stringify('\uDEC1')); -assertEquals('"\\udec2"', JSON.stringify('\uDEC2')); -assertEquals('"\\udec3"', JSON.stringify('\uDEC3')); -assertEquals('"\\udec4"', JSON.stringify('\uDEC4')); -assertEquals('"\\udec5"', JSON.stringify('\uDEC5')); -assertEquals('"\\udec6"', JSON.stringify('\uDEC6')); -assertEquals('"\\udec7"', JSON.stringify('\uDEC7')); -assertEquals('"\\udec8"', JSON.stringify('\uDEC8')); -assertEquals('"\\udec9"', JSON.stringify('\uDEC9')); -assertEquals('"\\udeca"', JSON.stringify('\uDECA')); -assertEquals('"\\udecb"', JSON.stringify('\uDECB')); -assertEquals('"\\udecc"', JSON.stringify('\uDECC')); -assertEquals('"\\udecd"', JSON.stringify('\uDECD')); -assertEquals('"\\udece"', JSON.stringify('\uDECE')); -assertEquals('"\\udecf"', JSON.stringify('\uDECF')); -assertEquals('"\\uded0"', JSON.stringify('\uDED0')); -assertEquals('"\\uded1"', JSON.stringify('\uDED1')); -assertEquals('"\\uded2"', JSON.stringify('\uDED2')); -assertEquals('"\\uded3"', JSON.stringify('\uDED3')); -assertEquals('"\\uded4"', JSON.stringify('\uDED4')); -assertEquals('"\\uded5"', JSON.stringify('\uDED5')); -assertEquals('"\\uded6"', JSON.stringify('\uDED6')); -assertEquals('"\\uded7"', JSON.stringify('\uDED7')); -assertEquals('"\\uded8"', JSON.stringify('\uDED8')); -assertEquals('"\\uded9"', JSON.stringify('\uDED9')); -assertEquals('"\\udeda"', JSON.stringify('\uDEDA')); -assertEquals('"\\udedb"', JSON.stringify('\uDEDB')); -assertEquals('"\\udedc"', JSON.stringify('\uDEDC')); -assertEquals('"\\udedd"', JSON.stringify('\uDEDD')); -assertEquals('"\\udede"', JSON.stringify('\uDEDE')); -assertEquals('"\\udedf"', JSON.stringify('\uDEDF')); -assertEquals('"\\udee0"', JSON.stringify('\uDEE0')); -assertEquals('"\\udee1"', JSON.stringify('\uDEE1')); -assertEquals('"\\udee2"', JSON.stringify('\uDEE2')); -assertEquals('"\\udee3"', JSON.stringify('\uDEE3')); -assertEquals('"\\udee4"', JSON.stringify('\uDEE4')); -assertEquals('"\\udee5"', JSON.stringify('\uDEE5')); -assertEquals('"\\udee6"', JSON.stringify('\uDEE6')); -assertEquals('"\\udee7"', JSON.stringify('\uDEE7')); -assertEquals('"\\udee8"', JSON.stringify('\uDEE8')); -assertEquals('"\\udee9"', JSON.stringify('\uDEE9')); -assertEquals('"\\udeea"', JSON.stringify('\uDEEA')); -assertEquals('"\\udeeb"', JSON.stringify('\uDEEB')); -assertEquals('"\\udeec"', JSON.stringify('\uDEEC')); -assertEquals('"\\udeed"', JSON.stringify('\uDEED')); -assertEquals('"\\udeee"', JSON.stringify('\uDEEE')); -assertEquals('"\\udeef"', JSON.stringify('\uDEEF')); -assertEquals('"\\udef0"', JSON.stringify('\uDEF0')); -assertEquals('"\\udef1"', JSON.stringify('\uDEF1')); -assertEquals('"\\udef2"', JSON.stringify('\uDEF2')); -assertEquals('"\\udef3"', JSON.stringify('\uDEF3')); -assertEquals('"\\udef4"', JSON.stringify('\uDEF4')); -assertEquals('"\\udef5"', JSON.stringify('\uDEF5')); -assertEquals('"\\udef6"', JSON.stringify('\uDEF6')); -assertEquals('"\\udef7"', JSON.stringify('\uDEF7')); -assertEquals('"\\udef8"', JSON.stringify('\uDEF8')); -assertEquals('"\\udef9"', JSON.stringify('\uDEF9')); -assertEquals('"\\udefa"', JSON.stringify('\uDEFA')); -assertEquals('"\\udefb"', JSON.stringify('\uDEFB')); -assertEquals('"\\udefc"', JSON.stringify('\uDEFC')); -assertEquals('"\\udefd"', JSON.stringify('\uDEFD')); -assertEquals('"\\udefe"', JSON.stringify('\uDEFE')); -assertEquals('"\\udeff"', JSON.stringify('\uDEFF')); -assertEquals('"\\udf00"', JSON.stringify('\uDF00')); -assertEquals('"\\udf01"', JSON.stringify('\uDF01')); -assertEquals('"\\udf02"', JSON.stringify('\uDF02')); -assertEquals('"\\udf03"', JSON.stringify('\uDF03')); -assertEquals('"\\udf04"', JSON.stringify('\uDF04')); -assertEquals('"\\udf05"', JSON.stringify('\uDF05')); -assertEquals('"\\udf06"', JSON.stringify('\uDF06')); -assertEquals('"\\udf07"', JSON.stringify('\uDF07')); -assertEquals('"\\udf08"', JSON.stringify('\uDF08')); -assertEquals('"\\udf09"', JSON.stringify('\uDF09')); -assertEquals('"\\udf0a"', JSON.stringify('\uDF0A')); -assertEquals('"\\udf0b"', JSON.stringify('\uDF0B')); -assertEquals('"\\udf0c"', JSON.stringify('\uDF0C')); -assertEquals('"\\udf0d"', JSON.stringify('\uDF0D')); -assertEquals('"\\udf0e"', JSON.stringify('\uDF0E')); -assertEquals('"\\udf0f"', JSON.stringify('\uDF0F')); -assertEquals('"\\udf10"', JSON.stringify('\uDF10')); -assertEquals('"\\udf11"', JSON.stringify('\uDF11')); -assertEquals('"\\udf12"', JSON.stringify('\uDF12')); -assertEquals('"\\udf13"', JSON.stringify('\uDF13')); -assertEquals('"\\udf14"', JSON.stringify('\uDF14')); -assertEquals('"\\udf15"', JSON.stringify('\uDF15')); -assertEquals('"\\udf16"', JSON.stringify('\uDF16')); -assertEquals('"\\udf17"', JSON.stringify('\uDF17')); -assertEquals('"\\udf18"', JSON.stringify('\uDF18')); -assertEquals('"\\udf19"', JSON.stringify('\uDF19')); -assertEquals('"\\udf1a"', JSON.stringify('\uDF1A')); -assertEquals('"\\udf1b"', JSON.stringify('\uDF1B')); -assertEquals('"\\udf1c"', JSON.stringify('\uDF1C')); -assertEquals('"\\udf1d"', JSON.stringify('\uDF1D')); -assertEquals('"\\udf1e"', JSON.stringify('\uDF1E')); -assertEquals('"\\udf1f"', JSON.stringify('\uDF1F')); -assertEquals('"\\udf20"', JSON.stringify('\uDF20')); -assertEquals('"\\udf21"', JSON.stringify('\uDF21')); -assertEquals('"\\udf22"', JSON.stringify('\uDF22')); -assertEquals('"\\udf23"', JSON.stringify('\uDF23')); -assertEquals('"\\udf24"', JSON.stringify('\uDF24')); -assertEquals('"\\udf25"', JSON.stringify('\uDF25')); -assertEquals('"\\udf26"', JSON.stringify('\uDF26')); -assertEquals('"\\udf27"', JSON.stringify('\uDF27')); -assertEquals('"\\udf28"', JSON.stringify('\uDF28')); -assertEquals('"\\udf29"', JSON.stringify('\uDF29')); -assertEquals('"\\udf2a"', JSON.stringify('\uDF2A')); -assertEquals('"\\udf2b"', JSON.stringify('\uDF2B')); -assertEquals('"\\udf2c"', JSON.stringify('\uDF2C')); -assertEquals('"\\udf2d"', JSON.stringify('\uDF2D')); -assertEquals('"\\udf2e"', JSON.stringify('\uDF2E')); -assertEquals('"\\udf2f"', JSON.stringify('\uDF2F')); -assertEquals('"\\udf30"', JSON.stringify('\uDF30')); -assertEquals('"\\udf31"', JSON.stringify('\uDF31')); -assertEquals('"\\udf32"', JSON.stringify('\uDF32')); -assertEquals('"\\udf33"', JSON.stringify('\uDF33')); -assertEquals('"\\udf34"', JSON.stringify('\uDF34')); -assertEquals('"\\udf35"', JSON.stringify('\uDF35')); -assertEquals('"\\udf36"', JSON.stringify('\uDF36')); -assertEquals('"\\udf37"', JSON.stringify('\uDF37')); -assertEquals('"\\udf38"', JSON.stringify('\uDF38')); -assertEquals('"\\udf39"', JSON.stringify('\uDF39')); -assertEquals('"\\udf3a"', JSON.stringify('\uDF3A')); -assertEquals('"\\udf3b"', JSON.stringify('\uDF3B')); -assertEquals('"\\udf3c"', JSON.stringify('\uDF3C')); -assertEquals('"\\udf3d"', JSON.stringify('\uDF3D')); -assertEquals('"\\udf3e"', JSON.stringify('\uDF3E')); -assertEquals('"\\udf3f"', JSON.stringify('\uDF3F')); -assertEquals('"\\udf40"', JSON.stringify('\uDF40')); -assertEquals('"\\udf41"', JSON.stringify('\uDF41')); -assertEquals('"\\udf42"', JSON.stringify('\uDF42')); -assertEquals('"\\udf43"', JSON.stringify('\uDF43')); -assertEquals('"\\udf44"', JSON.stringify('\uDF44')); -assertEquals('"\\udf45"', JSON.stringify('\uDF45')); -assertEquals('"\\udf46"', JSON.stringify('\uDF46')); -assertEquals('"\\udf47"', JSON.stringify('\uDF47')); -assertEquals('"\\udf48"', JSON.stringify('\uDF48')); -assertEquals('"\\udf49"', JSON.stringify('\uDF49')); -assertEquals('"\\udf4a"', JSON.stringify('\uDF4A')); -assertEquals('"\\udf4b"', JSON.stringify('\uDF4B')); -assertEquals('"\\udf4c"', JSON.stringify('\uDF4C')); -assertEquals('"\\udf4d"', JSON.stringify('\uDF4D')); -assertEquals('"\\udf4e"', JSON.stringify('\uDF4E')); -assertEquals('"\\udf4f"', JSON.stringify('\uDF4F')); -assertEquals('"\\udf50"', JSON.stringify('\uDF50')); -assertEquals('"\\udf51"', JSON.stringify('\uDF51')); -assertEquals('"\\udf52"', JSON.stringify('\uDF52')); -assertEquals('"\\udf53"', JSON.stringify('\uDF53')); -assertEquals('"\\udf54"', JSON.stringify('\uDF54')); -assertEquals('"\\udf55"', JSON.stringify('\uDF55')); -assertEquals('"\\udf56"', JSON.stringify('\uDF56')); -assertEquals('"\\udf57"', JSON.stringify('\uDF57')); -assertEquals('"\\udf58"', JSON.stringify('\uDF58')); -assertEquals('"\\udf59"', JSON.stringify('\uDF59')); -assertEquals('"\\udf5a"', JSON.stringify('\uDF5A')); -assertEquals('"\\udf5b"', JSON.stringify('\uDF5B')); -assertEquals('"\\udf5c"', JSON.stringify('\uDF5C')); -assertEquals('"\\udf5d"', JSON.stringify('\uDF5D')); -assertEquals('"\\udf5e"', JSON.stringify('\uDF5E')); -assertEquals('"\\udf5f"', JSON.stringify('\uDF5F')); -assertEquals('"\\udf60"', JSON.stringify('\uDF60')); -assertEquals('"\\udf61"', JSON.stringify('\uDF61')); -assertEquals('"\\udf62"', JSON.stringify('\uDF62')); -assertEquals('"\\udf63"', JSON.stringify('\uDF63')); -assertEquals('"\\udf64"', JSON.stringify('\uDF64')); -assertEquals('"\\udf65"', JSON.stringify('\uDF65')); -assertEquals('"\\udf66"', JSON.stringify('\uDF66')); -assertEquals('"\\udf67"', JSON.stringify('\uDF67')); -assertEquals('"\\udf68"', JSON.stringify('\uDF68')); -assertEquals('"\\udf69"', JSON.stringify('\uDF69')); -assertEquals('"\\udf6a"', JSON.stringify('\uDF6A')); -assertEquals('"\\udf6b"', JSON.stringify('\uDF6B')); -assertEquals('"\\udf6c"', JSON.stringify('\uDF6C')); -assertEquals('"\\udf6d"', JSON.stringify('\uDF6D')); -assertEquals('"\\udf6e"', JSON.stringify('\uDF6E')); -assertEquals('"\\udf6f"', JSON.stringify('\uDF6F')); -assertEquals('"\\udf70"', JSON.stringify('\uDF70')); -assertEquals('"\\udf71"', JSON.stringify('\uDF71')); -assertEquals('"\\udf72"', JSON.stringify('\uDF72')); -assertEquals('"\\udf73"', JSON.stringify('\uDF73')); -assertEquals('"\\udf74"', JSON.stringify('\uDF74')); -assertEquals('"\\udf75"', JSON.stringify('\uDF75')); -assertEquals('"\\udf76"', JSON.stringify('\uDF76')); -assertEquals('"\\udf77"', JSON.stringify('\uDF77')); -assertEquals('"\\udf78"', JSON.stringify('\uDF78')); -assertEquals('"\\udf79"', JSON.stringify('\uDF79')); -assertEquals('"\\udf7a"', JSON.stringify('\uDF7A')); -assertEquals('"\\udf7b"', JSON.stringify('\uDF7B')); -assertEquals('"\\udf7c"', JSON.stringify('\uDF7C')); -assertEquals('"\\udf7d"', JSON.stringify('\uDF7D')); -assertEquals('"\\udf7e"', JSON.stringify('\uDF7E')); -assertEquals('"\\udf7f"', JSON.stringify('\uDF7F')); -assertEquals('"\\udf80"', JSON.stringify('\uDF80')); -assertEquals('"\\udf81"', JSON.stringify('\uDF81')); -assertEquals('"\\udf82"', JSON.stringify('\uDF82')); -assertEquals('"\\udf83"', JSON.stringify('\uDF83')); -assertEquals('"\\udf84"', JSON.stringify('\uDF84')); -assertEquals('"\\udf85"', JSON.stringify('\uDF85')); -assertEquals('"\\udf86"', JSON.stringify('\uDF86')); -assertEquals('"\\udf87"', JSON.stringify('\uDF87')); -assertEquals('"\\udf88"', JSON.stringify('\uDF88')); -assertEquals('"\\udf89"', JSON.stringify('\uDF89')); -assertEquals('"\\udf8a"', JSON.stringify('\uDF8A')); -assertEquals('"\\udf8b"', JSON.stringify('\uDF8B')); -assertEquals('"\\udf8c"', JSON.stringify('\uDF8C')); -assertEquals('"\\udf8d"', JSON.stringify('\uDF8D')); -assertEquals('"\\udf8e"', JSON.stringify('\uDF8E')); -assertEquals('"\\udf8f"', JSON.stringify('\uDF8F')); -assertEquals('"\\udf90"', JSON.stringify('\uDF90')); -assertEquals('"\\udf91"', JSON.stringify('\uDF91')); -assertEquals('"\\udf92"', JSON.stringify('\uDF92')); -assertEquals('"\\udf93"', JSON.stringify('\uDF93')); -assertEquals('"\\udf94"', JSON.stringify('\uDF94')); -assertEquals('"\\udf95"', JSON.stringify('\uDF95')); -assertEquals('"\\udf96"', JSON.stringify('\uDF96')); -assertEquals('"\\udf97"', JSON.stringify('\uDF97')); -assertEquals('"\\udf98"', JSON.stringify('\uDF98')); -assertEquals('"\\udf99"', JSON.stringify('\uDF99')); -assertEquals('"\\udf9a"', JSON.stringify('\uDF9A')); -assertEquals('"\\udf9b"', JSON.stringify('\uDF9B')); -assertEquals('"\\udf9c"', JSON.stringify('\uDF9C')); -assertEquals('"\\udf9d"', JSON.stringify('\uDF9D')); -assertEquals('"\\udf9e"', JSON.stringify('\uDF9E')); -assertEquals('"\\udf9f"', JSON.stringify('\uDF9F')); -assertEquals('"\\udfa0"', JSON.stringify('\uDFA0')); -assertEquals('"\\udfa1"', JSON.stringify('\uDFA1')); -assertEquals('"\\udfa2"', JSON.stringify('\uDFA2')); -assertEquals('"\\udfa3"', JSON.stringify('\uDFA3')); -assertEquals('"\\udfa4"', JSON.stringify('\uDFA4')); -assertEquals('"\\udfa5"', JSON.stringify('\uDFA5')); -assertEquals('"\\udfa6"', JSON.stringify('\uDFA6')); -assertEquals('"\\udfa7"', JSON.stringify('\uDFA7')); -assertEquals('"\\udfa8"', JSON.stringify('\uDFA8')); -assertEquals('"\\udfa9"', JSON.stringify('\uDFA9')); -assertEquals('"\\udfaa"', JSON.stringify('\uDFAA')); -assertEquals('"\\udfab"', JSON.stringify('\uDFAB')); -assertEquals('"\\udfac"', JSON.stringify('\uDFAC')); -assertEquals('"\\udfad"', JSON.stringify('\uDFAD')); -assertEquals('"\\udfae"', JSON.stringify('\uDFAE')); -assertEquals('"\\udfaf"', JSON.stringify('\uDFAF')); -assertEquals('"\\udfb0"', JSON.stringify('\uDFB0')); -assertEquals('"\\udfb1"', JSON.stringify('\uDFB1')); -assertEquals('"\\udfb2"', JSON.stringify('\uDFB2')); -assertEquals('"\\udfb3"', JSON.stringify('\uDFB3')); -assertEquals('"\\udfb4"', JSON.stringify('\uDFB4')); -assertEquals('"\\udfb5"', JSON.stringify('\uDFB5')); -assertEquals('"\\udfb6"', JSON.stringify('\uDFB6')); -assertEquals('"\\udfb7"', JSON.stringify('\uDFB7')); -assertEquals('"\\udfb8"', JSON.stringify('\uDFB8')); -assertEquals('"\\udfb9"', JSON.stringify('\uDFB9')); -assertEquals('"\\udfba"', JSON.stringify('\uDFBA')); -assertEquals('"\\udfbb"', JSON.stringify('\uDFBB')); -assertEquals('"\\udfbc"', JSON.stringify('\uDFBC')); -assertEquals('"\\udfbd"', JSON.stringify('\uDFBD')); -assertEquals('"\\udfbe"', JSON.stringify('\uDFBE')); -assertEquals('"\\udfbf"', JSON.stringify('\uDFBF')); -assertEquals('"\\udfc0"', JSON.stringify('\uDFC0')); -assertEquals('"\\udfc1"', JSON.stringify('\uDFC1')); -assertEquals('"\\udfc2"', JSON.stringify('\uDFC2')); -assertEquals('"\\udfc3"', JSON.stringify('\uDFC3')); -assertEquals('"\\udfc4"', JSON.stringify('\uDFC4')); -assertEquals('"\\udfc5"', JSON.stringify('\uDFC5')); -assertEquals('"\\udfc6"', JSON.stringify('\uDFC6')); -assertEquals('"\\udfc7"', JSON.stringify('\uDFC7')); -assertEquals('"\\udfc8"', JSON.stringify('\uDFC8')); -assertEquals('"\\udfc9"', JSON.stringify('\uDFC9')); -assertEquals('"\\udfca"', JSON.stringify('\uDFCA')); -assertEquals('"\\udfcb"', JSON.stringify('\uDFCB')); -assertEquals('"\\udfcc"', JSON.stringify('\uDFCC')); -assertEquals('"\\udfcd"', JSON.stringify('\uDFCD')); -assertEquals('"\\udfce"', JSON.stringify('\uDFCE')); -assertEquals('"\\udfcf"', JSON.stringify('\uDFCF')); -assertEquals('"\\udfd0"', JSON.stringify('\uDFD0')); -assertEquals('"\\udfd1"', JSON.stringify('\uDFD1')); -assertEquals('"\\udfd2"', JSON.stringify('\uDFD2')); -assertEquals('"\\udfd3"', JSON.stringify('\uDFD3')); -assertEquals('"\\udfd4"', JSON.stringify('\uDFD4')); -assertEquals('"\\udfd5"', JSON.stringify('\uDFD5')); -assertEquals('"\\udfd6"', JSON.stringify('\uDFD6')); -assertEquals('"\\udfd7"', JSON.stringify('\uDFD7')); -assertEquals('"\\udfd8"', JSON.stringify('\uDFD8')); -assertEquals('"\\udfd9"', JSON.stringify('\uDFD9')); -assertEquals('"\\udfda"', JSON.stringify('\uDFDA')); -assertEquals('"\\udfdb"', JSON.stringify('\uDFDB')); -assertEquals('"\\udfdc"', JSON.stringify('\uDFDC')); -assertEquals('"\\udfdd"', JSON.stringify('\uDFDD')); -assertEquals('"\\udfde"', JSON.stringify('\uDFDE')); -assertEquals('"\\udfdf"', JSON.stringify('\uDFDF')); -assertEquals('"\\udfe0"', JSON.stringify('\uDFE0')); -assertEquals('"\\udfe1"', JSON.stringify('\uDFE1')); -assertEquals('"\\udfe2"', JSON.stringify('\uDFE2')); -assertEquals('"\\udfe3"', JSON.stringify('\uDFE3')); -assertEquals('"\\udfe4"', JSON.stringify('\uDFE4')); -assertEquals('"\\udfe5"', JSON.stringify('\uDFE5')); -assertEquals('"\\udfe6"', JSON.stringify('\uDFE6')); -assertEquals('"\\udfe7"', JSON.stringify('\uDFE7')); -assertEquals('"\\udfe8"', JSON.stringify('\uDFE8')); -assertEquals('"\\udfe9"', JSON.stringify('\uDFE9')); -assertEquals('"\\udfea"', JSON.stringify('\uDFEA')); -assertEquals('"\\udfeb"', JSON.stringify('\uDFEB')); -assertEquals('"\\udfec"', JSON.stringify('\uDFEC')); -assertEquals('"\\udfed"', JSON.stringify('\uDFED')); -assertEquals('"\\udfee"', JSON.stringify('\uDFEE')); -assertEquals('"\\udfef"', JSON.stringify('\uDFEF')); -assertEquals('"\\udff0"', JSON.stringify('\uDFF0')); -assertEquals('"\\udff1"', JSON.stringify('\uDFF1')); -assertEquals('"\\udff2"', JSON.stringify('\uDFF2')); -assertEquals('"\\udff3"', JSON.stringify('\uDFF3')); -assertEquals('"\\udff4"', JSON.stringify('\uDFF4')); -assertEquals('"\\udff5"', JSON.stringify('\uDFF5')); -assertEquals('"\\udff6"', JSON.stringify('\uDFF6')); -assertEquals('"\\udff7"', JSON.stringify('\uDFF7')); -assertEquals('"\\udff8"', JSON.stringify('\uDFF8')); -assertEquals('"\\udff9"', JSON.stringify('\uDFF9')); -assertEquals('"\\udffa"', JSON.stringify('\uDFFA')); -assertEquals('"\\udffb"', JSON.stringify('\uDFFB')); -assertEquals('"\\udffc"', JSON.stringify('\uDFFC')); -assertEquals('"\\udffd"', JSON.stringify('\uDFFD')); -assertEquals('"\\udffe"', JSON.stringify('\uDFFE')); -assertEquals('"\\udfff"', JSON.stringify('\uDFFF')); - -// A random selection of code points from U+E000 to U+FFFF. -assertEquals('"\uE000"', JSON.stringify('\uE000')); -assertEquals('"\uE00B"', JSON.stringify('\uE00B')); -assertEquals('"\uE0CC"', JSON.stringify('\uE0CC')); -assertEquals('"\uE0FD"', JSON.stringify('\uE0FD')); -assertEquals('"\uE19E"', JSON.stringify('\uE19E')); -assertEquals('"\uE1B1"', JSON.stringify('\uE1B1')); -assertEquals('"\uE24F"', JSON.stringify('\uE24F')); -assertEquals('"\uE262"', JSON.stringify('\uE262')); -assertEquals('"\uE2C9"', JSON.stringify('\uE2C9')); -assertEquals('"\uE2DF"', JSON.stringify('\uE2DF')); -assertEquals('"\uE389"', JSON.stringify('\uE389')); -assertEquals('"\uE413"', JSON.stringify('\uE413')); -assertEquals('"\uE546"', JSON.stringify('\uE546')); -assertEquals('"\uE5E4"', JSON.stringify('\uE5E4')); -assertEquals('"\uE66B"', JSON.stringify('\uE66B')); -assertEquals('"\uE73D"', JSON.stringify('\uE73D')); -assertEquals('"\uE74F"', JSON.stringify('\uE74F')); -assertEquals('"\uE759"', JSON.stringify('\uE759')); -assertEquals('"\uE795"', JSON.stringify('\uE795')); -assertEquals('"\uE836"', JSON.stringify('\uE836')); -assertEquals('"\uE85D"', JSON.stringify('\uE85D')); -assertEquals('"\uE909"', JSON.stringify('\uE909')); -assertEquals('"\uE990"', JSON.stringify('\uE990')); -assertEquals('"\uE99F"', JSON.stringify('\uE99F')); -assertEquals('"\uE9AC"', JSON.stringify('\uE9AC')); -assertEquals('"\uE9C2"', JSON.stringify('\uE9C2')); -assertEquals('"\uEB11"', JSON.stringify('\uEB11')); -assertEquals('"\uED33"', JSON.stringify('\uED33')); -assertEquals('"\uED7D"', JSON.stringify('\uED7D')); -assertEquals('"\uEDA9"', JSON.stringify('\uEDA9')); -assertEquals('"\uEDFB"', JSON.stringify('\uEDFB')); -assertEquals('"\uEE09"', JSON.stringify('\uEE09')); -assertEquals('"\uEE0D"', JSON.stringify('\uEE0D')); -assertEquals('"\uEE34"', JSON.stringify('\uEE34')); -assertEquals('"\uEE37"', JSON.stringify('\uEE37')); -assertEquals('"\uEE38"', JSON.stringify('\uEE38')); -assertEquals('"\uEF80"', JSON.stringify('\uEF80')); -assertEquals('"\uEFE2"', JSON.stringify('\uEFE2')); -assertEquals('"\uF02C"', JSON.stringify('\uF02C')); -assertEquals('"\uF09A"', JSON.stringify('\uF09A')); -assertEquals('"\uF0C1"', JSON.stringify('\uF0C1')); -assertEquals('"\uF12C"', JSON.stringify('\uF12C')); -assertEquals('"\uF250"', JSON.stringify('\uF250')); -assertEquals('"\uF2A3"', JSON.stringify('\uF2A3')); -assertEquals('"\uF340"', JSON.stringify('\uF340')); -assertEquals('"\uF3C9"', JSON.stringify('\uF3C9')); -assertEquals('"\uF3F5"', JSON.stringify('\uF3F5')); -assertEquals('"\uF41B"', JSON.stringify('\uF41B')); -assertEquals('"\uF420"', JSON.stringify('\uF420')); -assertEquals('"\uF440"', JSON.stringify('\uF440')); -assertEquals('"\uF4AE"', JSON.stringify('\uF4AE')); -assertEquals('"\uF4B0"', JSON.stringify('\uF4B0')); -assertEquals('"\uF50D"', JSON.stringify('\uF50D')); -assertEquals('"\uF55D"', JSON.stringify('\uF55D')); -assertEquals('"\uF55E"', JSON.stringify('\uF55E')); -assertEquals('"\uF5CD"', JSON.stringify('\uF5CD')); -assertEquals('"\uF657"', JSON.stringify('\uF657')); -assertEquals('"\uF66D"', JSON.stringify('\uF66D')); -assertEquals('"\uF68F"', JSON.stringify('\uF68F')); -assertEquals('"\uF6A6"', JSON.stringify('\uF6A6')); -assertEquals('"\uF6AA"', JSON.stringify('\uF6AA')); -assertEquals('"\uF6EB"', JSON.stringify('\uF6EB')); -assertEquals('"\uF79A"', JSON.stringify('\uF79A')); -assertEquals('"\uF7E7"', JSON.stringify('\uF7E7')); -assertEquals('"\uF7E8"', JSON.stringify('\uF7E8')); -assertEquals('"\uF834"', JSON.stringify('\uF834')); -assertEquals('"\uF88B"', JSON.stringify('\uF88B')); -assertEquals('"\uF8D5"', JSON.stringify('\uF8D5')); -assertEquals('"\uF8F1"', JSON.stringify('\uF8F1')); -assertEquals('"\uF905"', JSON.stringify('\uF905')); -assertEquals('"\uF927"', JSON.stringify('\uF927')); -assertEquals('"\uF943"', JSON.stringify('\uF943')); -assertEquals('"\uF949"', JSON.stringify('\uF949')); -assertEquals('"\uF9A1"', JSON.stringify('\uF9A1')); -assertEquals('"\uF9C7"', JSON.stringify('\uF9C7')); -assertEquals('"\uFA0F"', JSON.stringify('\uFA0F')); -assertEquals('"\uFA20"', JSON.stringify('\uFA20')); -assertEquals('"\uFAA7"', JSON.stringify('\uFAA7')); -assertEquals('"\uFBCD"', JSON.stringify('\uFBCD')); -assertEquals('"\uFBF7"', JSON.stringify('\uFBF7')); -assertEquals('"\uFC40"', JSON.stringify('\uFC40')); -assertEquals('"\uFC4B"', JSON.stringify('\uFC4B')); -assertEquals('"\uFC51"', JSON.stringify('\uFC51')); -assertEquals('"\uFC5E"', JSON.stringify('\uFC5E')); -assertEquals('"\uFC67"', JSON.stringify('\uFC67')); -assertEquals('"\uFC8B"', JSON.stringify('\uFC8B')); -assertEquals('"\uFE32"', JSON.stringify('\uFE32')); -assertEquals('"\uFFC4"', JSON.stringify('\uFFC4')); -assertEquals('"\uFFFD"', JSON.stringify('\uFFFD')); -assertEquals('"\uFFFE"', JSON.stringify('\uFFFE')); -assertEquals('"\uFFFF"', JSON.stringify('\uFFFF')); - -// A random selection of astral symbols, i.e. surrogate pairs, i.e. -// code points from U+010000 to U+10FFFF. -assertEquals('"\u{10000}"', JSON.stringify('\u{10000}')); -assertEquals('"\u{11DE7}"', JSON.stringify('\u{11DE7}')); -assertEquals('"\u{15997}"', JSON.stringify('\u{15997}')); -assertEquals('"\u{187B0}"', JSON.stringify('\u{187B0}')); -assertEquals('"\u{190B2}"', JSON.stringify('\u{190B2}')); -assertEquals('"\u{1BF79}"', JSON.stringify('\u{1BF79}')); -assertEquals('"\u{1C624}"', JSON.stringify('\u{1C624}')); -assertEquals('"\u{1D9F4}"', JSON.stringify('\u{1D9F4}')); -assertEquals('"\u{24149}"', JSON.stringify('\u{24149}')); -assertEquals('"\u{2521C}"', JSON.stringify('\u{2521C}')); -assertEquals('"\u{2762D}"', JSON.stringify('\u{2762D}')); -assertEquals('"\u{2930B}"', JSON.stringify('\u{2930B}')); -assertEquals('"\u{29EC4}"', JSON.stringify('\u{29EC4}')); -assertEquals('"\u{29F9A}"', JSON.stringify('\u{29F9A}')); -assertEquals('"\u{2A27D}"', JSON.stringify('\u{2A27D}')); -assertEquals('"\u{2B363}"', JSON.stringify('\u{2B363}')); -assertEquals('"\u{2C037}"', JSON.stringify('\u{2C037}')); -assertEquals('"\u{2FAE0}"', JSON.stringify('\u{2FAE0}')); -assertEquals('"\u{2FFCF}"', JSON.stringify('\u{2FFCF}')); -assertEquals('"\u{32C1C}"', JSON.stringify('\u{32C1C}')); -assertEquals('"\u{33DA8}"', JSON.stringify('\u{33DA8}')); -assertEquals('"\u{3DCA4}"', JSON.stringify('\u{3DCA4}')); -assertEquals('"\u{44FA0}"', JSON.stringify('\u{44FA0}')); -assertEquals('"\u{45618}"', JSON.stringify('\u{45618}')); -assertEquals('"\u{47395}"', JSON.stringify('\u{47395}')); -assertEquals('"\u{4752C}"', JSON.stringify('\u{4752C}')); -assertEquals('"\u{483FE}"', JSON.stringify('\u{483FE}')); -assertEquals('"\u{49D35}"', JSON.stringify('\u{49D35}')); -assertEquals('"\u{4CE3B}"', JSON.stringify('\u{4CE3B}')); -assertEquals('"\u{55196}"', JSON.stringify('\u{55196}')); -assertEquals('"\u{58B3E}"', JSON.stringify('\u{58B3E}')); -assertEquals('"\u{5AA47}"', JSON.stringify('\u{5AA47}')); -assertEquals('"\u{5C4B8}"', JSON.stringify('\u{5C4B8}')); -assertEquals('"\u{5DD1B}"', JSON.stringify('\u{5DD1B}')); -assertEquals('"\u{5FDCB}"', JSON.stringify('\u{5FDCB}')); -assertEquals('"\u{611BA}"', JSON.stringify('\u{611BA}')); -assertEquals('"\u{66433}"', JSON.stringify('\u{66433}')); -assertEquals('"\u{690D7}"', JSON.stringify('\u{690D7}')); -assertEquals('"\u{6F617}"', JSON.stringify('\u{6F617}')); -assertEquals('"\u{711E4}"', JSON.stringify('\u{711E4}')); -assertEquals('"\u{758D2}"', JSON.stringify('\u{758D2}')); -assertEquals('"\u{780AC}"', JSON.stringify('\u{780AC}')); -assertEquals('"\u{7AE5F}"', JSON.stringify('\u{7AE5F}')); -assertEquals('"\u{7C2FB}"', JSON.stringify('\u{7C2FB}')); -assertEquals('"\u{7D25F}"', JSON.stringify('\u{7D25F}')); -assertEquals('"\u{8027A}"', JSON.stringify('\u{8027A}')); -assertEquals('"\u{84817}"', JSON.stringify('\u{84817}')); -assertEquals('"\u{8B070}"', JSON.stringify('\u{8B070}')); -assertEquals('"\u{8B390}"', JSON.stringify('\u{8B390}')); -assertEquals('"\u{8BC03}"', JSON.stringify('\u{8BC03}')); -assertEquals('"\u{8BE63}"', JSON.stringify('\u{8BE63}')); -assertEquals('"\u{8F12A}"', JSON.stringify('\u{8F12A}')); -assertEquals('"\u{9345D}"', JSON.stringify('\u{9345D}')); -assertEquals('"\u{937A9}"', JSON.stringify('\u{937A9}')); -assertEquals('"\u{94596}"', JSON.stringify('\u{94596}')); -assertEquals('"\u{967BB}"', JSON.stringify('\u{967BB}')); -assertEquals('"\u{A19D1}"', JSON.stringify('\u{A19D1}')); -assertEquals('"\u{A4FC5}"', JSON.stringify('\u{A4FC5}')); -assertEquals('"\u{AC9CF}"', JSON.stringify('\u{AC9CF}')); -assertEquals('"\u{B1366}"', JSON.stringify('\u{B1366}')); -assertEquals('"\u{B3D32}"', JSON.stringify('\u{B3D32}')); -assertEquals('"\u{B74BA}"', JSON.stringify('\u{B74BA}')); -assertEquals('"\u{B8FB0}"', JSON.stringify('\u{B8FB0}')); -assertEquals('"\u{BA0A5}"', JSON.stringify('\u{BA0A5}')); -assertEquals('"\u{BB48E}"', JSON.stringify('\u{BB48E}')); -assertEquals('"\u{C0B60}"', JSON.stringify('\u{C0B60}')); -assertEquals('"\u{C2D34}"', JSON.stringify('\u{C2D34}')); -assertEquals('"\u{C6C75}"', JSON.stringify('\u{C6C75}')); -assertEquals('"\u{C9F26}"', JSON.stringify('\u{C9F26}')); -assertEquals('"\u{CDBD0}"', JSON.stringify('\u{CDBD0}')); -assertEquals('"\u{D1E28}"', JSON.stringify('\u{D1E28}')); -assertEquals('"\u{D4A80}"', JSON.stringify('\u{D4A80}')); -assertEquals('"\u{D947F}"', JSON.stringify('\u{D947F}')); -assertEquals('"\u{D9B8A}"', JSON.stringify('\u{D9B8A}')); -assertEquals('"\u{DA203}"', JSON.stringify('\u{DA203}')); -assertEquals('"\u{DEFD3}"', JSON.stringify('\u{DEFD3}')); -assertEquals('"\u{E4F7C}"', JSON.stringify('\u{E4F7C}')); -assertEquals('"\u{E6BB3}"', JSON.stringify('\u{E6BB3}')); -assertEquals('"\u{E972D}"', JSON.stringify('\u{E972D}')); -assertEquals('"\u{EB335}"', JSON.stringify('\u{EB335}')); -assertEquals('"\u{ED3F8}"', JSON.stringify('\u{ED3F8}')); -assertEquals('"\u{ED940}"', JSON.stringify('\u{ED940}')); -assertEquals('"\u{EF6F8}"', JSON.stringify('\u{EF6F8}')); -assertEquals('"\u{F1F57}"', JSON.stringify('\u{F1F57}')); -assertEquals('"\u{F33B5}"', JSON.stringify('\u{F33B5}')); -assertEquals('"\u{F4D2A}"', JSON.stringify('\u{F4D2A}')); -assertEquals('"\u{F70BA}"', JSON.stringify('\u{F70BA}')); -assertEquals('"\u{F899F}"', JSON.stringify('\u{F899F}')); -assertEquals('"\u{1034BF}"', JSON.stringify('\u{1034BF}')); -assertEquals('"\u{107ACF}"', JSON.stringify('\u{107ACF}')); -assertEquals('"\u{10881F}"', JSON.stringify('\u{10881F}')); -assertEquals('"\u{1098A5}"', JSON.stringify('\u{1098A5}')); -assertEquals('"\u{10ABD1}"', JSON.stringify('\u{10ABD1}')); -assertEquals('"\u{10B5C5}"', JSON.stringify('\u{10B5C5}')); -assertEquals('"\u{10CC79}"', JSON.stringify('\u{10CC79}')); -assertEquals('"\u{10CD19}"', JSON.stringify('\u{10CD19}')); -assertEquals('"\u{10FFFF}"', JSON.stringify('\u{10FFFF}')); diff --git a/implementation-contributed/v8/mjsunit/has-own-property-evaluation-order.js b/implementation-contributed/v8/mjsunit/has-own-property-evaluation-order.js deleted file mode 100644 index ae021803960..00000000000 --- a/implementation-contributed/v8/mjsunit/has-own-property-evaluation-order.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function MyError() {} - -assertThrows(function() { - Object.prototype.hasOwnProperty.call(null, { - toString() { - throw new MyError(); - } - }); -}, MyError); diff --git a/implementation-contributed/v8/mjsunit/has-own-property.js b/implementation-contributed/v8/mjsunit/has-own-property.js deleted file mode 100644 index 5ff8db5f7b0..00000000000 --- a/implementation-contributed/v8/mjsunit/has-own-property.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check for objects. -assertTrue({x:12}.hasOwnProperty('x')); -assertFalse({x:12}.hasOwnProperty('y')); - -// Check for strings. -assertTrue(''.hasOwnProperty('length')); -assertTrue(Object.prototype.hasOwnProperty.call('', 'length')); - -// Check for numbers. -assertFalse((123).hasOwnProperty('length')); -assertFalse(Object.prototype.hasOwnProperty.call(123, 'length')); diff --git a/implementation-contributed/v8/mjsunit/hash-code.js b/implementation-contributed/v8/mjsunit/hash-code.js deleted file mode 100644 index 1a0057ff38d..00000000000 --- a/implementation-contributed/v8/mjsunit/hash-code.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - var x = { a: 1 } - var set = new Set(); - set.add(x); - - x.b = 1; - x.c = 2; - x.d = 3; - x.e = 4; - x.f = 5; - x.g = 6; - - assertTrue(set.has(x)); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/heapObjectVerify.js b/implementation-contributed/v8/mjsunit/heapObjectVerify.js deleted file mode 100644 index 2383f847d93..00000000000 --- a/implementation-contributed/v8/mjsunit/heapObjectVerify.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var largeArray = []; -largeArray[0xFFFF00] = 123; - -function sloppyArguments() { - return arguments; -} - -function sloppyArguments2(a, b) { - return arguments; -} - -function slowSloppyArguments() { - arguments[0xFFFFF] = -1; - return arguments; -} - -function slowSloppyArguments2(a, b) { - arguments[0xFFFFF] = -1; - return arguments; -} - - -var objects = [ - this, - true, false, null, undefined, - 1, -1, 1.1, -2.2, -0, 0, - Infinity, -Infinity, NaN, - "aasdfasdfasdfasdf", "a"+"b", - {}, {1:1}, {a:1}, {1:1, 2:2}, Object.create(null), - [], [{}, {}], [1, 1, 1], [1.1, 1.1, 1.1, 1.1, 2], largeArray, - new Proxy({},{}), - new Date(), new String(" a"), - new Uint8Array(12), new Float32Array([1, 2, 4, 5]), - new Uint8ClampedArray(2048), - /asdf/, new RegExp(), - Object.create, Object, Array, - Symbol.iterator, - [][Symbol.iterator](), - new Map(), new Set(), - (new Map()).entries(), (new Set()).entries(), - sloppyArguments(), sloppyArguments(1, 2, 3, 4), - sloppyArguments2(), sloppyArguments2(1, 2, 3, 4), - slowSloppyArguments(), slowSloppyArguments(1, 2, 3, 4), - slowSloppyArguments2(), slowSloppyArguments2(1, 2, 3, 4), - -]; -for (var o of objects) %HeapObjectVerify(o); diff --git a/implementation-contributed/v8/mjsunit/hex-parsing.js b/implementation-contributed/v8/mjsunit/hex-parsing.js deleted file mode 100644 index 6a42f4901bf..00000000000 --- a/implementation-contributed/v8/mjsunit/hex-parsing.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var k = 0x1000000000000081; -assertEquals(1152921504606847200, k); -k = 0x1000000000000281; -assertEquals(1152921504606847700, k); -k = 0x10000000000002810; -assertEquals(18446744073709564000, k); -k = 0x10000000000002810000; -assertEquals(7.555786372591437e+22, k); -k = 0xffffffffffffffff; -assertEquals(18446744073709552000, k); -k = 0xffffffffffffffffffff; -assertEquals(1.2089258196146292e+24, k); diff --git a/implementation-contributed/v8/mjsunit/holy-double-no-arg-array.js b/implementation-contributed/v8/mjsunit/holy-double-no-arg-array.js deleted file mode 100644 index 73e2ddc6cea..00000000000 --- a/implementation-contributed/v8/mjsunit/holy-double-no-arg-array.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - function f() { - return new Array(); - } - var a = f(); - a[0] = 0.5; - var b = f(); - b[2] = 0.5; - assertEquals(undefined, b[0]); -})(); diff --git a/implementation-contributed/v8/mjsunit/html-comments.js b/implementation-contributed/v8/mjsunit/html-comments.js deleted file mode 100644 index cc2315b0f2a..00000000000 --- a/implementation-contributed/v8/mjsunit/html-comments.js +++ /dev/null @@ -1,57 +0,0 @@ ---> must work at beginning of file! - -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = 1; ---> this must be ignored... - --> so must this... - --> and this. -x-->0; -assertEquals(0, x, 'a'); - - -var x = 0; x " + migr_desc.name); - print("==========================================================="); - } - - // Clean ICs and transitions. - %NotifyContextDisposed(); - gc(); gc(); gc(); - - - // create objects - if (verbose) { - print("-----------------------------"); - print("--- construct"); - print(); - } - for (var i = 0; i < n; i++) { - objects[i] = ctor_desc.ctor.apply(ctor_desc, ctor_desc.args(i)); - } - - try { - // use them - if (verbose) { - print("-----------------------------"); - print("--- use 1"); - print(); - } - var use = use_desc.use1; - for (var i = 0; i < n; i++) { - if (i == 3) %OptimizeFunctionOnNextCall(use); - results[i] = use(objects[i], i); - } - - // trigger migrations - if (verbose) { - print("-----------------------------"); - print("--- trigger migration"); - print(); - } - var migr = migr_desc.migr; - for (var i = 0; i < n; i++) { - if (i == 3) %OptimizeFunctionOnNextCall(migr); - migr(objects[i], i); - } - - // use again - if (verbose) { - print("-----------------------------"); - print("--- use 2"); - print(); - } - var use = use_desc.use2 !== undefined ? use_desc.use2 : use_desc.use1; - for (var i = 0; i < n; i++) { - if (i == 3) %OptimizeFunctionOnNextCall(use); - results[i] = use(objects[i], i); - if (verbose >= 2) print(results[i]); - } - - } catch (e) { - if (verbose) print("--- incompatible use: " + e); - } - return results; -} - - -var ctors = [ - { - name: "none-to-double", - ctor: function(v) { return {a: v}; }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "double", - ctor: function(v) { var o = {}; o.a = v; return o; }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "none-to-smi", - ctor: function(v) { return {a: v}; }, - args: function(i) { return [i]; }, - }, - { - name: "smi", - ctor: function(v) { var o = {}; o.a = v; return o; }, - args: function(i) { return [i]; }, - }, - { - name: "none-to-object", - ctor: function(v) { return {a: v}; }, - args: function(i) { return ["s"]; }, - }, - { - name: "object", - ctor: function(v) { var o = {}; o.a = v; return o; }, - args: function(i) { return ["s"]; }, - }, - { - name: "{a:, b:, c:}", - ctor: function(v1, v2, v3) { return {a: v1, b: v2, c: v3}; }, - args: function(i) { return [1.5 + i, 1.6, 1.7]; }, - }, - { - name: "{a..h:}", - ctor: function(v) { var o = {}; o.h=o.g=o.f=o.e=o.d=o.c=o.b=o.a=v; return o; }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "1", - ctor: function(v) { var o = 1; o.a = v; return o; }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "f()", - ctor: function(v) { var o = function() { return v;}; o.a = v; return o; }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "f().bind", - ctor: function(v) { var o = function(a,b,c) { return a+b+c; }; o = o.bind(o, v, v+1, v+2.2); return o; }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "dictionary elements", - ctor: function(v) { var o = []; o[1] = v; o[200000] = v; return o; }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "json", - ctor: function(v) { var json = '{"a":' + v + ',"b":' + v + '}'; return JSON.parse(json); }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "fast accessors", - accessor: { - get: function() { return this.a_; }, - set: function(value) {this.a_ = value; }, - configurable: true, - }, - ctor: function(v) { - var o = {a_:v}; - Object.defineProperty(o, "a", this.accessor); - return o; - }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "slow accessor", - accessor1: { value: this.a_, configurable: true }, - accessor2: { - get: function() { return this.a_; }, - set: function(value) {this.a_ = value; }, - configurable: true, - }, - ctor: function(v) { - var o = {a_:v}; - Object.defineProperty(o, "a", this.accessor1); - Object.defineProperty(o, "a", this.accessor2); - return o; - }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "slow", - proto: {}, - ctor: function(v) { - var o = {__proto__: this.proto}; - o.a = v; - for (var i = 0; %HasFastProperties(o); i++) o["f"+i] = v; - return o; - }, - args: function(i) { return [1.5 + i]; }, - }, - { - name: "global", - ctor: function(v) { return global; }, - args: function(i) { return [i]; }, - }, -]; - - - -var uses = [ - { - name: "o.a+1.0", - use1: function(o, i) { return o.a + 1.0; }, - use2: function(o, i) { return o.a + 1.1; }, - }, - { - name: "o.b+1.0", - use1: function(o, i) { return o.b + 1.0; }, - use2: function(o, i) { return o.b + 1.1; }, - }, - { - name: "o[1]+1.0", - use1: function(o, i) { return o[1] + 1.0; }, - use2: function(o, i) { return o[1] + 1.1; }, - }, - { - name: "o[-1]+1.0", - use1: function(o, i) { return o[-1] + 1.0; }, - use2: function(o, i) { return o[-1] + 1.1; }, - }, - { - name: "()", - use1: function(o, i) { return o() + 1.0; }, - use2: function(o, i) { return o() + 1.1; }, - }, -]; - - - -var migrations = [ - { - name: "to smi", - migr: function(o, i) { if (i == 0) o.a = 1; }, - }, - { - name: "to double", - migr: function(o, i) { if (i == 0) o.a = 1.1; }, - }, - { - name: "to object", - migr: function(o, i) { if (i == 0) o.a = {}; }, - }, - { - name: "set prototype {}", - migr: function(o, i) { o.__proto__ = {}; }, - }, - { - name: "modify prototype", - migr: function(o, i) { if (i == 0) o.__proto__.__proto1__ = [,,,5,,,]; }, - }, - { - name: "freeze prototype", - migr: function(o, i) { if (i == 0) Object.freeze(o.__proto__); }, - }, - { - name: "delete and re-add property", - migr: function(o, i) { var v = o.a; delete o.a; o.a = v; }, - }, - { - name: "modify prototype", - migr: function(o, i) { if (i >= 0) o.__proto__ = {}; }, - }, - { - name: "set property callback", - migr: function(o, i) { - Object.defineProperty(o, "a", { - get: function() { return 1.5 + i; }, - set: function(value) {}, - configurable: true, - }); - }, - }, - { - name: "seal", - migr: function(o, i) { Object.seal(o); }, - }, - { // Must be the last in the sequence, because after the global object freeze - // the other modifications does not make sense. - name: "freeze", - migr: function(o, i) { Object.freeze(o); }, - }, -]; - - - -migrations.forEach(function(migr) { - uses.forEach(function(use) { - ctors.forEach(function(ctor) { - test(ctor, use, migr); - }); - }); -}); diff --git a/implementation-contributed/v8/mjsunit/mjsunit-assertion-error.js b/implementation-contributed/v8/mjsunit/mjsunit-assertion-error.js deleted file mode 100644 index 08c6ff619df..00000000000 --- a/implementation-contributed/v8/mjsunit/mjsunit-assertion-error.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let fileName = 'mjsunit-assertion-error.js'; - -function addDefaultFrames(frameExpectations) { - // The last frame contains the error instantiation. - frameExpectations.unshift('assertTrue.*mjsunit.js'); - // Frist frame is the top-level script. - frameExpectations.push(fileName); -} - -function assertErrorMessage(frameExpectations, error) { - let stack = error.stack.split("\n"); - let title = stack.shift(); - assertContains('MjsUnitAssertionError', title); - addDefaultFrames(frameExpectations); - // Add default frames to the expectations. - assertEquals(frameExpectations.length, stack.length); - for (let i = 0; i < stack.length; i++) { - let frame = stack[i]; - let expectation = frameExpectations[i]; - assertTrue(frame.search(expectation) != -1, - `Frame ${i}: Did not find '${expectation}' in '${frame}'`); - } -} - -// Toplevel -try { - assertTrue(false); -} catch(e) { - assertErrorMessage([], e); -} - -// Single function. -function throwError() { - assertTrue(false); -} -try { - throwError(); - assertUnreachable(); -} catch(e) { - assertErrorMessage(['throwError'], e); -} - -// Nested function. -function outer() { - throwError(); -} -try { - outer(); - assertUnreachable(); -} catch(e) { - assertErrorMessage(['throwError', 'outer'], e); -} - -// Test Array helper nesting -try { - [1].map(throwError); - assertUnreachable(); -} catch(e) { - assertErrorMessage(['throwError', 'Array.map'], e); -} -try { - Array.prototype.map.call([1], throwError); - assertUnreachable(); -} catch(e) { - assertErrorMessage(['throwError', 'Array.map'], e); -} - -// Test eval -try { - eval("assertTrue(false);"); - assertUnreachable(); -} catch(e) { - assertErrorMessage(['eval'], e); -} - -(function testNestedEval() { - try { - eval("assertTrue(false);"); - assertUnreachable(); - } catch(e) { - assertErrorMessage(['eval', 'testNestedEval'], e); - } -})(); - - -(function testConstructor() { - class Failer { - constructor() { - assertTrue(false); - } - } - try { - new Failer(); - assertUnreachable(); - } catch(e) { - assertErrorMessage(['new Failer', 'testConstructor'], e); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/mjsunit.js b/implementation-contributed/v8/mjsunit/mjsunit.js deleted file mode 100644 index b81c9676e6e..00000000000 --- a/implementation-contributed/v8/mjsunit/mjsunit.js +++ /dev/null @@ -1,782 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function MjsUnitAssertionError(message) { - this.message = message; - // Temporarily install a custom stack trace formatter and restore the - // previous value. - let prevPrepareStackTrace = Error.prepareStackTrace; - try { - Error.prepareStackTrace = MjsUnitAssertionError.prepareStackTrace; - // This allows fetching the stack trace using TryCatch::StackTrace. - this.stack = new Error("MjsUnitAssertionError").stack; - } finally { - Error.prepareStackTrace = prevPrepareStackTrace; - } -} - -/* - * This file is included in all mini jsunit test cases. The test - * framework expects lines that signal failed tests to start with - * the f-word and ignore all other lines. - */ - -MjsUnitAssertionError.prototype.toString = function () { - return this.message + "\n\nStack: " + this.stack; -}; - - -// Expected and found values the same objects, or the same primitive -// values. -// For known primitive values, please use assertEquals. -var assertSame; - -// Inverse of assertSame. -var assertNotSame; - -// Expected and found values are identical primitive values or functions -// or similarly structured objects (checking internal properties -// of, e.g., Number and Date objects, the elements of arrays -// and the properties of non-Array objects). -var assertEquals; - -// Deep equality predicate used by assertEquals. -var deepEquals; - -// Expected and found values are not identical primitive values or functions -// or similarly structured objects (checking internal properties -// of, e.g., Number and Date objects, the elements of arrays -// and the properties of non-Array objects). -var assertNotEquals; - -// The difference between expected and found value is within certain tolerance. -var assertEqualsDelta; - -// The found object is an Array with the same length and elements -// as the expected object. The expected object doesn't need to be an Array, -// as long as it's "array-ish". -var assertArrayEquals; - -// The found object must have the same enumerable properties as the -// expected object. The type of object isn't checked. -var assertPropertiesEqual; - -// Assert that the string conversion of the found value is equal to -// the expected string. Only kept for backwards compatibility, please -// check the real structure of the found value. -var assertToStringEquals; - -// Checks that the found value is true. Use with boolean expressions -// for tests that doesn't have their own assertXXX function. -var assertTrue; - -// Checks that the found value is false. -var assertFalse; - -// Checks that the found value is null. Kept for historical compatibility, -// please just use assertEquals(null, expected). -var assertNull; - -// Checks that the found value is *not* null. -var assertNotNull; - -// Assert that the passed function or eval code throws an exception. -// The optional second argument is an exception constructor that the -// thrown exception is checked against with "instanceof". -// The optional third argument is a message type string that is compared -// to the type property on the thrown exception. -var assertThrows; - -// Assert that the passed function throws an exception. -// The exception is checked against the second argument using assertEquals. -var assertThrowsEquals; - -// Assert that the passed function or eval code does not throw an exception. -var assertDoesNotThrow; - -// Asserts that the found value is an instance of the constructor passed -// as the second argument. -var assertInstanceof; - -// Assert that this code is never executed (i.e., always fails if executed). -var assertUnreachable; - -// Assert that the function code is (not) optimized. If "no sync" is passed -// as second argument, we do not wait for the concurrent optimization thread to -// finish when polling for optimization status. -// Only works with --allow-natives-syntax. -var assertOptimized; -var assertUnoptimized; - -// Assert that a string contains another expected substring. -var assertContains; - -// Assert that a string matches a given regex. -var assertMatches; - -// Assert that a promise resolves or rejects. -// Parameters: -// {promise} - the promise -// {success} - optional - a callback which is called with the result of the -// resolving promise. -// {fail} - optional - a callback which is called with the result of the -// rejecting promise. If the promise is rejected but no {fail} -// callback is set, the error is propagated out of the promise -// chain. -var assertPromiseResult; - -var promiseTestChain; -var promiseTestCount = 0; - -// These bits must be in sync with bits defined in Runtime_GetOptimizationStatus -var V8OptimizationStatus = { - kIsFunction: 1 << 0, - kNeverOptimize: 1 << 1, - kAlwaysOptimize: 1 << 2, - kMaybeDeopted: 1 << 3, - kOptimized: 1 << 4, - kTurboFanned: 1 << 5, - kInterpreted: 1 << 6, - kMarkedForOptimization: 1 << 7, - kMarkedForConcurrentOptimization: 1 << 8, - kOptimizingConcurrently: 1 << 9, - kIsExecuting: 1 << 10, - kTopmostFrameIsTurboFanned: 1 << 11, - kLiteMode: 1 << 12, -}; - -// Returns true if --lite-mode is on and we can't ever turn on optimization. -var isNeverOptimizeLiteMode; - -// Returns true if --no-opt mode is on. -var isNeverOptimize; - -// Returns true if --always-opt mode is on. -var isAlwaysOptimize; - -// Returns true if given function in interpreted. -var isInterpreted; - -// Returns true if given function is optimized. -var isOptimized; - -// Returns true if given function is compiled by TurboFan. -var isTurboFanned; - -// Monkey-patchable all-purpose failure handler. -var failWithMessage; - -// Returns the formatted failure text. Used by test-async.js. -var formatFailureText; - -// Returns a pretty-printed string representation of the passed value. -var prettyPrinted; - -(function () { // Scope for utility functions. - - var ObjectPrototypeToString = Object.prototype.toString; - var NumberPrototypeValueOf = Number.prototype.valueOf; - var BooleanPrototypeValueOf = Boolean.prototype.valueOf; - var StringPrototypeValueOf = String.prototype.valueOf; - var DatePrototypeValueOf = Date.prototype.valueOf; - var RegExpPrototypeToString = RegExp.prototype.toString; - var ArrayPrototypeForEach = Array.prototype.forEach; - var ArrayPrototypeJoin = Array.prototype.join; - var ArrayPrototypeMap = Array.prototype.map; - var ArrayPrototypePush = Array.prototype.push; - - var BigIntPrototypeValueOf; - // TODO(neis): Remove try-catch once BigInts are enabled by default. - try { - BigIntPrototypeValueOf = BigInt.prototype.valueOf; - } catch (e) {} - - function classOf(object) { - // Argument must not be null or undefined. - var string = ObjectPrototypeToString.call(object); - // String has format [object ]. - return string.substring(8, string.length - 1); - } - - - function ValueOf(value) { - switch (classOf(value)) { - case "Number": - return NumberPrototypeValueOf.call(value); - case "BigInt": - return BigIntPrototypeValueOf.call(value); - case "String": - return StringPrototypeValueOf.call(value); - case "Boolean": - return BooleanPrototypeValueOf.call(value); - case "Date": - return DatePrototypeValueOf.call(value); - default: - return value; - } - } - - - prettyPrinted = function prettyPrinted(value) { - switch (typeof value) { - case "string": - return JSON.stringify(value); - case "bigint": - return String(value) + "n"; - case "number": - if (value === 0 && (1 / value) < 0) return "-0"; - // FALLTHROUGH. - case "boolean": - case "undefined": - case "function": - case "symbol": - return String(value); - case "object": - if (value === null) return "null"; - var objectClass = classOf(value); - switch (objectClass) { - case "Number": - case "BigInt": - case "String": - case "Boolean": - case "Date": - return objectClass + "(" + prettyPrinted(ValueOf(value)) + ")"; - case "RegExp": - return RegExpPrototypeToString.call(value); - case "Array": - var mapped = ArrayPrototypeMap.call( - value, prettyPrintedArrayElement); - var joined = ArrayPrototypeJoin.call(mapped, ","); - return "[" + joined + "]"; - case "Uint8Array": - case "Int8Array": - case "Int16Array": - case "Uint16Array": - case "Uint32Array": - case "Int32Array": - case "Float32Array": - case "Float64Array": - var joined = ArrayPrototypeJoin.call(value, ","); - return objectClass + "([" + joined + "])"; - case "Object": - break; - default: - return objectClass + "(" + String(value) + ")"; - } - // [[Class]] is "Object". - var name = value.constructor.name; - if (name) return name + "()"; - return "Object()"; - default: - return "-- unknown value --"; - } - } - - - function prettyPrintedArrayElement(value, index, array) { - if (value === undefined && !(index in array)) return ""; - return prettyPrinted(value); - } - - - failWithMessage = function failWithMessage(message) { - throw new MjsUnitAssertionError(message); - } - - formatFailureText = function(expectedText, found, name_opt) { - var message = "Fail" + "ure"; - if (name_opt) { - // Fix this when we ditch the old test runner. - message += " (" + name_opt + ")"; - } - - var foundText = prettyPrinted(found); - if (expectedText.length <= 40 && foundText.length <= 40) { - message += ": expected <" + expectedText + "> found <" + foundText + ">"; - } else { - message += ":\nexpected:\n" + expectedText + "\nfound:\n" + foundText; - } - return message; - } - - function fail(expectedText, found, name_opt) { - return failWithMessage(formatFailureText(expectedText, found, name_opt)); - } - - - function deepObjectEquals(a, b) { - var aProps = Object.keys(a); - aProps.sort(); - var bProps = Object.keys(b); - bProps.sort(); - if (!deepEquals(aProps, bProps)) { - return false; - } - for (var i = 0; i < aProps.length; i++) { - if (!deepEquals(a[aProps[i]], b[aProps[i]])) { - return false; - } - } - return true; - } - - - deepEquals = function deepEquals(a, b) { - if (a === b) { - // Check for -0. - if (a === 0) return (1 / a) === (1 / b); - return true; - } - if (typeof a !== typeof b) return false; - if (typeof a === "number") return isNaN(a) && isNaN(b); - if (typeof a !== "object" && typeof a !== "function") return false; - // Neither a nor b is primitive. - var objectClass = classOf(a); - if (objectClass !== classOf(b)) return false; - if (objectClass === "RegExp") { - // For RegExp, just compare pattern and flags using its toString. - return RegExpPrototypeToString.call(a) === - RegExpPrototypeToString.call(b); - } - // Functions are only identical to themselves. - if (objectClass === "Function") return false; - if (objectClass === "Array") { - var elementCount = 0; - if (a.length !== b.length) { - return false; - } - for (var i = 0; i < a.length; i++) { - if (!deepEquals(a[i], b[i])) return false; - } - return true; - } - if (objectClass === "String" || objectClass === "Number" || - objectClass === "BigInt" || objectClass === "Boolean" || - objectClass === "Date") { - if (ValueOf(a) !== ValueOf(b)) return false; - } - return deepObjectEquals(a, b); - } - - assertSame = function assertSame(expected, found, name_opt) { - // TODO(mstarzinger): We should think about using Harmony's egal operator - // or the function equivalent Object.is() here. - if (found === expected) { - if (expected !== 0 || (1 / expected) === (1 / found)) return; - } else if ((expected !== expected) && (found !== found)) { - return; - } - fail(prettyPrinted(expected), found, name_opt); - }; - - assertNotSame = function assertNotSame(expected, found, name_opt) { - // TODO(mstarzinger): We should think about using Harmony's egal operator - // or the function equivalent Object.is() here. - if (found !== expected) { - if (expected === 0 || (1 / expected) !== (1 / found)) return; - } else if (!((expected !== expected) && (found !== found))) { - return; - } - fail(prettyPrinted(expected), found, name_opt); - } - - assertEquals = function assertEquals(expected, found, name_opt) { - if (!deepEquals(found, expected)) { - fail(prettyPrinted(expected), found, name_opt); - } - }; - - assertNotEquals = function assertNotEquals(expected, found, name_opt) { - if (deepEquals(found, expected)) { - fail("not equals to " + prettyPrinted(expected), found, name_opt); - } - }; - - - assertEqualsDelta = - function assertEqualsDelta(expected, found, delta, name_opt) { - if (Math.abs(expected - found) > delta) { - fail(prettyPrinted(expected) + " +- " + prettyPrinted(delta), found, name_opt); - } - }; - - - assertArrayEquals = function assertArrayEquals(expected, found, name_opt) { - var start = ""; - if (name_opt) { - start = name_opt + " - "; - } - assertEquals(expected.length, found.length, start + "array length"); - if (expected.length === found.length) { - for (var i = 0; i < expected.length; ++i) { - assertEquals(expected[i], found[i], - start + "array element at index " + i); - } - } - }; - - - assertPropertiesEqual = function assertPropertiesEqual(expected, found, - name_opt) { - // Check properties only. - if (!deepObjectEquals(expected, found)) { - fail(expected, found, name_opt); - } - }; - - - assertToStringEquals = function assertToStringEquals(expected, found, - name_opt) { - if (expected !== String(found)) { - fail(expected, found, name_opt); - } - }; - - - assertTrue = function assertTrue(value, name_opt) { - assertEquals(true, value, name_opt); - }; - - - assertFalse = function assertFalse(value, name_opt) { - assertEquals(false, value, name_opt); - }; - - - assertNull = function assertNull(value, name_opt) { - if (value !== null) { - fail("null", value, name_opt); - } - }; - - - assertNotNull = function assertNotNull(value, name_opt) { - if (value === null) { - fail("not null", value, name_opt); - } - }; - - function executeCode(code) { - if (typeof code === 'function') return code(); - if (typeof code === 'string') return eval(code); - failWithMessage( - 'Given code is neither function nor string, but ' + (typeof code) + - ': <' + prettyPrinted(code) + '>'); - } - - assertThrows = function assertThrows(code, type_opt, cause_opt) { - try { - executeCode(code); - } catch (e) { - if (typeof type_opt === 'function') { - assertInstanceof(e, type_opt); - } else if (type_opt !== void 0) { - failWithMessage( - 'invalid use of assertThrows, maybe you want assertThrowsEquals'); - } - if (arguments.length >= 3) { - if (cause_opt instanceof RegExp) { - assertMatches(cause_opt, e.message, "Error message"); - } else { - assertEquals(cause_opt, e.message, "Error message"); - } - } - // Success. - return; - } - failWithMessage("Did not throw exception"); - }; - - assertThrowsEquals = function assertThrowsEquals(fun, val) { - try { - fun(); - } catch (e) { - assertSame(val, e); - return; - } - failWithMessage("Did not throw exception"); - }; - - - assertInstanceof = function assertInstanceof(obj, type) { - if (!(obj instanceof type)) { - var actualTypeName = null; - var actualConstructor = Object.getPrototypeOf(obj).constructor; - if (typeof actualConstructor === "function") { - actualTypeName = actualConstructor.name || String(actualConstructor); - } - failWithMessage("Object <" + prettyPrinted(obj) + "> is not an instance of <" + - (type.name || type) + ">" + - (actualTypeName ? " but of <" + actualTypeName + ">" : "")); - } - }; - - assertDoesNotThrow = function assertDoesNotThrow(code, name_opt) { - try { - executeCode(code); - } catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; - failWithMessage("threw an exception: " + (e.message || e)); - } - }; - - assertUnreachable = function assertUnreachable(name_opt) { - // Fix this when we ditch the old test runner. - var message = "Fail" + "ure: unreachable"; - if (name_opt) { - message += " - " + name_opt; - } - failWithMessage(message); - }; - - assertContains = function(sub, value, name_opt) { - if (value == null ? (sub != null) : value.indexOf(sub) == -1) { - fail("contains '" + String(sub) + "'", value, name_opt); - } - }; - - assertMatches = function(regexp, str, name_opt) { - if (!(regexp instanceof RegExp)) { - regexp = new RegExp(regexp); - } - if (!str.match(regexp)) { - fail("should match '" + regexp + "'", str, name_opt); - } - }; - - function concatenateErrors(stack, exception) { - // If the exception does not contain a stack trace, wrap it in a new Error. - if (!exception.stack) exception = new Error(exception); - - // If the exception already provides a special stack trace, we do not modify - // it. - if (typeof exception.stack !== 'string') { - return exception; - } - exception.stack = stack + '\n\n' + exception.stack; - return exception; - } - - assertPromiseResult = function(promise, success, fail) { - if (success !== undefined) assertEquals('function', typeof success); - if (fail !== undefined) assertEquals('function', typeof fail); - const stack = (new Error()).stack; - - var test_promise = promise.then( - result => { - try { - if (--promiseTestCount == 0) testRunner.notifyDone(); - if (success !== undefined) success(result); - } catch (e) { - // Use setTimeout to throw the error again to get out of the promise - // chain. - setTimeout(_ => { - throw concatenateErrors(stack, e); - }, 0); - } - }, - result => { - try { - if (--promiseTestCount == 0) testRunner.notifyDone(); - if (fail === undefined) throw result; - fail(result); - } catch (e) { - // Use setTimeout to throw the error again to get out of the promise - // chain. - setTimeout(_ => { - throw concatenateErrors(stack, e); - }, 0); - } - }); - - if (!promiseTestChain) promiseTestChain = Promise.resolve(); - // waitUntilDone is idempotent. - testRunner.waitUntilDone(); - ++promiseTestCount; - return promiseTestChain.then(test_promise); - }; - - var OptimizationStatusImpl = undefined; - - var OptimizationStatus = function(fun, sync_opt) { - if (OptimizationStatusImpl === undefined) { - try { - OptimizationStatusImpl = new Function( - "fun", "sync", "return %GetOptimizationStatus(fun, sync);"); - } catch (e) { - throw new Error("natives syntax not allowed"); - } - } - return OptimizationStatusImpl(fun, sync_opt); - } - - assertUnoptimized = function assertUnoptimized( - fun, sync_opt, name_opt, skip_if_maybe_deopted = true) { - if (sync_opt === undefined) sync_opt = ""; - var opt_status = OptimizationStatus(fun, sync_opt); - // Tests that use assertUnoptimized() do not make sense if --always-opt - // option is provided. Such tests must add --no-always-opt to flags comment. - assertFalse((opt_status & V8OptimizationStatus.kAlwaysOptimize) !== 0, - "test does not make sense with --always-opt"); - assertTrue((opt_status & V8OptimizationStatus.kIsFunction) !== 0, name_opt); - if (skip_if_maybe_deopted && - (opt_status & V8OptimizationStatus.kMaybeDeopted) !== 0) { - // When --deopt-every-n-times flag is specified it's no longer guaranteed - // that particular function is still deoptimized, so keep running the test - // to stress test the deoptimizer. - return; - } - assertFalse((opt_status & V8OptimizationStatus.kOptimized) !== 0, name_opt); - } - - assertOptimized = function assertOptimized( - fun, sync_opt, name_opt, skip_if_maybe_deopted = true) { - if (sync_opt === undefined) sync_opt = ""; - var opt_status = OptimizationStatus(fun, sync_opt); - // Tests that use assertOptimized() do not make sense for Lite mode where - // optimization is always disabled, explicitly exit the test with a warning. - if (opt_status & V8OptimizationStatus.kLiteMode) { - print("Warning: Test uses assertOptimized in Lite mode, skipping test."); - quit(0); - } - // Tests that use assertOptimized() do not make sense if --no-opt - // option is provided. Such tests must add --opt to flags comment. - assertFalse((opt_status & V8OptimizationStatus.kNeverOptimize) !== 0, - "test does not make sense with --no-opt"); - assertTrue( - (opt_status & V8OptimizationStatus.kIsFunction) !== 0, - 'should be a function: ' + name_opt); - if (skip_if_maybe_deopted && - (opt_status & V8OptimizationStatus.kMaybeDeopted) !== 0) { - // When --deopt-every-n-times flag is specified it's no longer guaranteed - // that particular function is still optimized, so keep running the test - // to stress test the deoptimizer. - return; - } - assertTrue( - (opt_status & V8OptimizationStatus.kOptimized) !== 0, - 'should be optimized: ' + name_opt); - } - - isNeverOptimizeLiteMode = function isNeverOptimizeLiteMode() { - var opt_status = OptimizationStatus(undefined, ""); - return (opt_status & V8OptimizationStatus.kLiteMode) !== 0; - } - - isNeverOptimize = function isNeverOptimize() { - var opt_status = OptimizationStatus(undefined, ""); - return (opt_status & V8OptimizationStatus.kNeverOptimize) !== 0; - } - - isAlwaysOptimize = function isAlwaysOptimize() { - var opt_status = OptimizationStatus(undefined, ""); - return (opt_status & V8OptimizationStatus.kAlwaysOptimize) !== 0; - } - - isInterpreted = function isInterpreted(fun) { - var opt_status = OptimizationStatus(fun, ""); - assertTrue((opt_status & V8OptimizationStatus.kIsFunction) !== 0, - "not a function"); - return (opt_status & V8OptimizationStatus.kOptimized) === 0 && - (opt_status & V8OptimizationStatus.kInterpreted) !== 0; - } - - isOptimized = function isOptimized(fun) { - var opt_status = OptimizationStatus(fun, ""); - assertTrue((opt_status & V8OptimizationStatus.kIsFunction) !== 0, - "not a function"); - return (opt_status & V8OptimizationStatus.kOptimized) !== 0; - } - - isTurboFanned = function isTurboFanned(fun) { - var opt_status = OptimizationStatus(fun, ""); - assertTrue((opt_status & V8OptimizationStatus.kIsFunction) !== 0, - "not a function"); - return (opt_status & V8OptimizationStatus.kOptimized) !== 0 && - (opt_status & V8OptimizationStatus.kTurboFanned) !== 0; - } - - // Custom V8-specific stack trace formatter that is temporarily installed on - // the Error object. - MjsUnitAssertionError.prepareStackTrace = function(error, stack) { - // Trigger default formatting with recursion. - try { - // Filter-out all but the first mjsunit frame. - let filteredStack = []; - let inMjsunit = true; - for (let i = 0; i < stack.length; i++) { - let frame = stack[i]; - if (inMjsunit) { - let file = frame.getFileName(); - if (!file || !file.endsWith("mjsunit.js")) { - inMjsunit = false; - // Push the last mjsunit frame, typically containing the assertion - // function. - if (i > 0) ArrayPrototypePush.call(filteredStack, stack[i-1]); - ArrayPrototypePush.call(filteredStack, stack[i]); - } - continue; - } - ArrayPrototypePush.call(filteredStack, frame); - } - stack = filteredStack; - - // Infer function names and calculate {max_name_length} - let max_name_length = 0; - ArrayPrototypeForEach.call(stack, each => { - let name = each.getFunctionName(); - if (name == null) name = ""; - if (each.isEval()) { - name = name; - } else if (each.isConstructor()) { - name = "new " + name; - } else if (each.isNative()) { - name = "native " + name; - } else if (!each.isToplevel()) { - name = each.getTypeName() + "." + name; - } - each.name = name; - max_name_length = Math.max(name.length, max_name_length) - }); - - // Format stack frames. - stack = ArrayPrototypeMap.call(stack, each => { - let frame = " at " + each.name.padEnd(max_name_length); - let fileName = each.getFileName(); - if (each.isEval()) return frame + " " + each.getEvalOrigin(); - frame += " " + (fileName ? fileName : ""); - let line= each.getLineNumber(); - frame += " " + (line ? line : ""); - let column = each.getColumnNumber(); - frame += (column ? ":" + column : ""); - return frame; - }); - return "" + error.message + "\n" + ArrayPrototypeJoin.call(stack, "\n"); - } catch (e) {}; - return error.stack; - } -})(); diff --git a/implementation-contributed/v8/mjsunit/mjsunit.status b/implementation-contributed/v8/mjsunit/mjsunit.status deleted file mode 100644 index fd13b2750f4..00000000000 --- a/implementation-contributed/v8/mjsunit/mjsunit.status +++ /dev/null @@ -1,2168 +0,0 @@ -# Copyright 2012 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -[ -[ALWAYS, { - # Modules which are only meant to be imported from by other tests, not to be - # tested standalone. - 'modules-skip*': [SKIP], - 'harmony/modules-skip*': [SKIP], - 'regress/modules-skip*': [SKIP], - 'wasm/exceptions-utils': [SKIP], - 'wasm/wasm-constants': [SKIP], - 'wasm/wasm-module-builder': [SKIP], - - # All tests in the bug directory are expected to fail. - 'bugs/*': [FAIL], - - ############################################################################## - # Fails. - 'regress/regress-1119': [FAIL], - - # Issue 1719: Slow to collect arrays over several contexts. - 'regress/regress-524': [SKIP], - # When that bug is fixed, revert the expectation to: - # Skip long running test in debug. - # regress/regress-524: [PASS, ['mode == debug', SKIP]], - - # This test non-deterministically runs out of memory on Windows ia32. - 'regress/regress-crbug-160010': [SKIP], - - # Issue 3784: setters-on-elements is flaky - 'setters-on-elements': [PASS, FAIL], - - # Issue 5495: enable the test when the constant field tracking in enabled. - 'const-field-tracking': [SKIP], - - # Issue 8505: Math.pow is incorrect for asm.js - 'regress/wasm/regress-8505': [SKIP], - - ############################################################################## - # Too slow in debug mode with --stress-opt mode. - 'regress/regress-create-exception': [PASS, ['mode == debug', SKIP]], - - ############################################################################## - # Too slow in debug mode for validation of elements. - 'regress/regress-430201': [PASS, ['mode == debug', SKIP], ['tsan', SKIP]], - 'regress/regress-430201b': [PASS, ['mode == debug', SKIP]], - 'regress/regress-716044': [PASS, ['mode == debug', SKIP]], - - ############################################################################## - # Too slow in debug mode for GC stress mode. - 'regress/regress-crbug-217858': [PASS, ['mode == debug', SKIP]], - - # Too slow in debug mode and under turbofan. - 'regress/regress-4595': [PASS, NO_VARIANTS, ['mode == debug', SKIP]], - - ############################################################################## - # Only RegExp stuff tested, no need for extensive optimizing compiler tests. - 'regexp-global': [PASS, NO_VARIANTS], - 'third_party/regexp-pcre/regexp-pcre': [PASS, NO_VARIANTS], - - ############################################################################## - # No need to waste time for this test. - 'd8/d8-performance-now': [PASS, NO_VARIANTS], - 'regress/regress-crbug-491062': [PASS, NO_VARIANTS], - - # Issue 488: this test sometimes times out. - # TODO(arm): This seems to flush out a bug on arm with simulator. - 'array-constructor': [PASS, SLOW, ['arch == arm and simulator_run == True', SKIP]], - - # Very slow test - 'regress/regress-crbug-808192' : [PASS, SLOW, NO_VARIANTS, ['mode == debug or arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips64 or arch == mips or arch == s390 or arch == s390x or arch == ppc or arch == ppc64', SKIP]], - - # Very slow on ARM and MIPS, contains no architecture dependent code. - 'unicode-case-overoptimization': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips64 or arch == mips', SKIP]], - 'regress/regress-3976': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips64 or arch == mips', SKIP]], - 'regress/regress-crbug-482998': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips', SKIP]], - 'regress/regress-740784': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips', SKIP]], - - # This test allocates a 2G block of memory and if there are multiple - # variants this can lead to OOM. - 'regress/regress-crbug-514081': [PASS, NO_VARIANTS], - - ############################################################################## - # Skip long running tests that time out in debug mode. - 'generated-transition-stub': [PASS, ['mode == debug', SKIP]], - 'migrations': [SKIP], - 'array-functions-prototype-misc': [PASS, SLOW, ['mode == debug', SKIP]], - 'compiler/regress-808472': [PASS, ['mode == debug', SKIP]], - 'es6/promise-all-overflow-1': [SKIP], - 'es6/promise-all-overflow-2': [PASS, SLOW, ['mode == debug or arch != x64', SKIP]], - - ############################################################################## - # This test sets the umask on a per-process basis and hence cannot be - # used in multi-threaded runs. - # On android there is no /tmp directory. - # Currently d8-os generates a temporary directory name using Math.random(), so - # we cannot run several variants of d8-os simultaneously, since all of them - # get the same random seed and would generate the same directory name. Besides - # that, it doesn't make sense to run several variants of d8-os anyways. - 'd8/d8-os': [PASS, NO_VARIANTS, ['isolates or arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]], - 'tools/tickprocessor': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]], - 'tools/dumpcpp': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]], - - ############################################################################## - # These tests generate files in the test directory, so we cannot run several - # variants of them simultaneously. Additionally they should not be affected by - # variants. - 'd8/enable-tracing': [PASS, NO_VARIANTS], - 'tools/compiler-trace-flags': [PASS, NO_VARIANTS], - - ############################################################################## - # Long running test that reproduces memory leak and should be run manually. - 'regress/regress-2073': [SKIP], - - ############################################################################## - # Tests verifying CHECK and ASSERT. - 'verify-check-false': [FAIL, NO_VARIANTS], - 'verify-assert-false': [NO_VARIANTS, ['mode == release and dcheck_always_on == False', PASS], ['mode == debug', FAIL]], - - ############################################################################## - # Tests with different versions for release and debug. - 'compiler/alloc-number': [PASS, ['mode == debug', SKIP]], - 'compiler/alloc-number-debug': [PASS, ['mode == release', SKIP]], - 'regress/regress-634-debug': [PASS, ['mode == release', SKIP]], - - # BUG(v8:2989). - 'regress/regress-2989': [FAIL, NO_VARIANTS, ['lite_mode == True', SKIP]], - - # This test variant makes only sense on arm. - 'math-floor-of-div-nosudiv': [PASS, SLOW, ['arch not in [arm, arm64, android_arm, android_arm64]', SKIP]], - - # Too slow for slow variants. - 'asm/embenchen/*': [PASS, SLOW, NO_VARIANTS], - 'asm/poppler/*': [PASS, SLOW, NO_VARIANTS], - 'asm/sqlite3/*': [PASS, SLOW, NO_VARIANTS], - - # OOM flakes in isolates tests because too many largish heaps are created. - 'asm/asm-heap': [PASS, NO_VARIANTS, ['isolates', SKIP]], - - # Slow tests. - 'copy-on-write-assert': [PASS, SLOW], - 'es6/typedarray-construct-offset-not-smi': [PASS, SLOW], - 'harmony/regexp-property-script-extensions': [PASS, SLOW], - 'md5': [PASS, SLOW], - 'numops-fuzz-part*': [PASS, ['mode == debug', SLOW]], - 'readonly': [PASS, SLOW], - 'regress/regress-1122': [PASS, SLOW], - 'regress/regress-605470': [PASS, SLOW], - 'regress/regress-655573': [PASS, SLOW], - 'regress/regress-1200351': [PASS, SLOW], - 'regress/wasm/regress-810973': [PASS, SLOW], - 'string-replace-gc': [PASS, SLOW], - 'wasm/asm-wasm-f32': [PASS, SLOW], - 'wasm/asm-wasm-f64': [PASS, SLOW], - 'wasm/embenchen/*': [PASS, SLOW], - 'wasm/grow-memory': [PASS, SLOW], - 'wasm/unreachable-validation': [PASS, SLOW], - 'wasm/atomics-stress': [PASS, SLOW, NO_VARIANTS, ['mode != release or dcheck_always_on', SKIP], ['(arch == arm or arch == arm64) and simulator_run', SKIP], ['tsan', SKIP]], - 'wasm/atomics64-stress': [PASS, SLOW, NO_VARIANTS, ['mode != release or dcheck_always_on', SKIP], ['(arch == arm or arch == arm64) and simulator_run', SKIP], ['tsan', SKIP]], - 'wasm/compare-exchange-stress': [PASS, SLOW, NO_VARIANTS], - 'wasm/compare-exchange64-stress': [PASS, SLOW, NO_VARIANTS], - - # case-insensitive unicode regexp relies on case mapping provided by ICU. - 'es6/unicode-regexp-ignore-case': [PASS, ['no_i18n == True', FAIL]], - 'es6/unicode-regexp-ignore-case-noi18n': [FAIL, ['no_i18n == True', PASS]], - 'regress/regress-5036': [PASS, ['no_i18n == True', FAIL]], - 'es7/regexp-ui-word': [PASS, ['no_i18n == True', FAIL]], - 'regexp-modifiers-i18n': [PASS, ['no_i18n == True', FAIL]], - 'regexp-modifiers-autogenerated-i18n': [PASS, ['no_i18n == True', FAIL]], - # desugaring regexp property class relies on ICU. - 'harmony/regexp-property-*': [PASS, ['no_i18n == True', FAIL]], - 'regress/regress-793588': [PASS, ['no_i18n == True', FAIL]], - - # noi18n build cannot parse characters in supplementary plane. - 'harmony/regexp-named-captures': [PASS, ['no_i18n == True', FAIL]], - - # noi18n cannot turn on ICU backend for Date - 'icu-date-to-string': [PASS, ['no_i18n == True', SKIP]], - 'icu-date-lord-howe': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-transition-apia': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-transition-lord-howe': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-transition-moscow': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-transition-new-york': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-seoul': [PASS, ['no_i18n == True', SKIP]], - - # TODO(bmeurer): Flaky timeouts (sometimes <1s, sometimes >3m). - 'unicodelctest': [PASS, NO_VARIANTS], - 'unicodelctest-no-optimization': [PASS, NO_VARIANTS], - - # TODO(vogelheim): big-object-literal exceeds the stack in debug builds, - # which makes the test useless. - 'big-object-literal': [PASS, ['mode == debug', SKIP]], - - # Runs out of stack space in debug builds. - 'big-array-literal': [PASS, ['mode == debug', SKIP]], - - # BUG(v8:6306). - 'wasm/huge-memory': [SKIP], - - # Allocates a huge string and then flattens it, very slow in debug mode. - 'regress/regress-752764': [PASS, ['mode == debug', SLOW]], - - # https://crbug.com/v8/7697 - 'array-literal-feedback': [PASS, FAIL], - - # https://crbug.com/v8/7775 - 'allocation-site-info': [SKIP], - - # BUG(v8:8169) - 'external-backing-store-gc': [SKIP], -}], # ALWAYS - -['novfp3 == True', { - 'asm/embenchen/box2d': [SKIP], - 'asm/embenchen/zlib': [SKIP], - 'asm/embenchen/memops': [SKIP], - 'asm/embenchen/lua_binarytrees': [SKIP], -}], # novfp3 == True - -############################################################################## -# TODO(ahaas): Port multiple return values to ARM, MIPS, S390 and PPC -['arch == arm or arch == arm64 or arch == mips or arch == mips64 or arch == mipsel or arch == mips64el or arch == s390 or arch == s390x or arch == ppc or arch == ppc64', { - 'wasm/multi-value': [SKIP], -}], - -############################################################################## -['gc_stress == True', { - # Skip tests not suitable for GC stress. - 'allocation-site-info': [SKIP], - 'array-constructor-feedback': [SKIP], - 'array-feedback': [SKIP], - 'array-literal-feedback': [SKIP], - 'd8/d8-performance-now': [SKIP], - 'elements-kind': [SKIP], - 'elements-transition-hoisting': [SKIP], - 'fast-prototype': [SKIP], - 'field-type-tracking': [SKIP], - 'getters-on-elements': [SKIP], - 'es6/block-let-crankshaft': [SKIP], - 'opt-elements-kind': [SKIP], - 'osr-elements-kind': [SKIP], - 'regress/regress-crbug-137689': [SKIP], - 'regress/regress-trap-allocation-memento': [SKIP], - 'regress/regress-2249': [SKIP], - 'regress/regress-4121': [SKIP], - 'regress/regress-6989': [SKIP], - 'compare-known-objects-slow': [SKIP], - 'compiler/array-multiple-receiver-maps': [SKIP], - # Tests taking too long - 'packed-elements': [SKIP], - 'regress/regress-1122': [SKIP], - 'regress/regress-331444': [SKIP], - 'regress/regress-353551': [SKIP], - 'regress/regress-crbug-119926': [SKIP], - 'regress/short-circuit': [SKIP], - 'stack-traces-overflow': [SKIP], - 'unicode-test': [SKIP], - 'whitespaces': [SKIP], - - # Unsuitable for GC stress because coverage information is lost on GC. - 'code-coverage-ad-hoc': [SKIP], - 'code-coverage-precise': [SKIP], - - # TODO(mstarzinger): Takes too long with TF. - 'array-sort': [PASS, NO_VARIANTS], - 'regress/regress-91008': [PASS, NO_VARIANTS], - 'regress/regress-transcendental': [PASS, ['arch == arm64', NO_VARIANTS]], - 'compiler/osr-regress-max-locals': [PASS, NO_VARIANTS], - 'math-floor-of-div': [PASS, NO_VARIANTS], - 'unicodelctest': [PASS, NO_VARIANTS], - 'unicodelctest-no-optimization': [PASS, NO_VARIANTS], - - # TODO(jkummerow): Doesn't work correctly in GC stress. - 'regress/regress-crbug-500497': [SKIP], - - # Too slow for gc stress. - 'asm/embenchen/box2d': [SKIP], - - # BUG(v8:4237) - 'regress/regress-3976': [SKIP], - - # Slow tests. - 'array-constructor': [PASS, SLOW], - 'json': [PASS, SLOW], - - # BUG(v8:4779): Crashes flakily with stress mode on arm64. - 'array-splice': [PASS, SLOW, ['arch == arm64', NO_VARIANTS]], - - # BUG(v8:7880): Slow tests. - 'regress/regress-707066': [SKIP], - 'regress/regress-446389': [SKIP], - 'regress/regress-458987': [SKIP], - 'es6/regress/regress-crbug-465671': [SKIP], - 'regress/regress-inline-getter-near-stack-limit': [SKIP], - 'es6/regress/regress-crbug-465671-null': [SKIP], - 'regress/regress-148378': [SKIP], - 'regress/regress-crbug-762472': [SKIP], -}], # 'gc_stress == True' - -############################################################################## -['lite_mode', { - # Skip tests not suitable for lite_mode. - - # TODO(8596): We cache the templates in the feedback vector. In lite mode - # without feedback vectors we need to implement some other mechanism to cache - # them. Enable this test after fixing it. - 'es6/templates': [SKIP], - - # code coverage needs feedback vectors - 'code-coverage-ad-hoc': [SKIP], - 'code-coverage-class-fields': [SKIP], - 'code-coverage-block-noopt': [SKIP], - 'code-coverage-block': [SKIP], - 'code-coverage-precise': [SKIP], - - # Needs feedback vector - tests for allocation sites - 'array-constructor-feedback': [SKIP], - 'regress/regress-trap-allocation-memento': [SKIP], - 'regress/regress-4121': [SKIP], - - # Slow tests without feedback vectors - # TODO(mythria): Investigate why they are slow and either fix if - # possible are update the reason why they are slow. - 'spread-large-string': [SKIP], - 'spread-large-array': [SKIP], - - # TODO(v8:7777): Re-enable once wasm is supported in jitless mode. - 'regress/wasm/*': [SKIP], - 'tools/compiler-trace-flags': [SKIP], - 'wasm/*': [SKIP], - - # Other tests that use asm / wasm / optimized code. - 'asm/asm-heap': [SKIP], - 'asm/asm-validation': [SKIP], - 'asm/call-stdlib': [SKIP], - 'asm/call-annotation': [SKIP], - 'asm/global-imports': [SKIP], - 'asm/regress-913822': [SKIP], - 'asm/return-types': [SKIP], - 'regress/regress-599719': [SKIP], - 'regress/regress-6196': [SKIP], - 'regress/regress-6700': [SKIP], - 'regress/regress-6838-2': [SKIP], - 'regress/regress-6838-3': [SKIP], - - # Timeouts in lite / jitless mode. - 'asm/embenchen/*': [SKIP], - - # Tests that generate code at runtime. - 'code-comments': [SKIP], - 'regress/regress-617526': [SKIP], - 'regress/regress-7893': [SKIP], - 'regress/regress-8377': [SKIP], - 'regress/regress-863810': [SKIP], - 'regress/regress-crbug-721835': [SKIP], - 'regress/regress-crbug-759327': [SKIP], - 'regress/regress-crbug-898974': [SKIP], -}], # 'lite_mode' - -############################################################################## -['byteorder == big', { - # Emscripten requires little-endian, skip all tests on big endian platforms. - 'asm/embenchen/*': [SKIP], - 'asm/poppler/*': [SKIP], - 'asm/sqlite3/*': [SKIP], - # TODO(mips-team): Fix Wasm for big-endian. - 'wasm/*': [SKIP], -}], # 'byteorder == big' - -############################################################################## -['arch == arm64 or arch == android_arm64', { - - # Requires bigger stack size in the Genesis and if stack size is increased, - # the test requires too much time to run. However, the problem test covers - # should be platform-independent. - 'regress/regress-1132': [SKIP], - - # Pass but take too long to run. Skip. - # Some similar tests (with fewer iterations) may be included in arm64-js - # tests. - 'asm/embenchen/box2d': [SKIP], - 'asm/embenchen/lua_binarytrees': [SKIP], - 'big-object-literal': [SKIP], - 'compiler/regress-arguments': [SKIP], - 'compiler/regress-gvn': [SKIP], - 'compiler/regress-4': [SKIP], - 'compiler/regress-or': [SKIP], - 'compiler/regress-rep-change': [SKIP], - 'regress/regress-1117': [SKIP], - 'regress/regress-1849': [SKIP], - 'regress/regress-3247124': [SKIP], - 'regress/regress-91008': [SKIP], - 'regress/regress-91010': [SKIP], - 'regress/regress-91013': [SKIP], - 'regress/regress-99167': [SKIP], - - # BUG(v8:3457). - 'deserialize-reference': [PASS, FAIL], - - # BUG(v8:4016) - 'regress/regress-crbug-467047': [SKIP], - - # Slow tests. - 'array-concat': [PASS, SLOW], - 'array-indexing': [PASS, SLOW], - 'array-reduce': [PASS, SLOW], - 'array-sort': [PASS, SLOW], - 'array-splice': [PASS, SLOW], - 'bit-not': [PASS, SLOW], - 'compiler/alloc-number': [PASS, SLOW], - 'compiler/osr-with-args': [PASS, SLOW], - 'generated-transition-stub': [PASS, SLOW], - 'json2': [PASS, SLOW], - 'math-floor-of-div-nosudiv': [PASS, SLOW], - 'math-floor-of-div': [PASS, SLOW], - 'messages': [PASS, SLOW], - 'packed-elements': [PASS, SLOW], - 'regress/regress-2790': [PASS, SLOW], - 'regress/regress-331444': [PASS, SLOW], - 'regress/regress-490': [PASS, SLOW], - 'regress/regress-crbug-217858': [PASS, SLOW], - 'regress/regress-create-exception': [PASS, SLOW], - 'regress/regress-json-stringify-gc': [PASS, SLOW], - 'string-indexof-2': [PASS, SLOW], - 'unicodelctest-no-optimization': [PASS, SLOW], - 'unicodelctest': [PASS, SLOW], - 'unicode-test': [PASS, SLOW], - 'wasm/atomics': [PASS, SLOW], - 'whitespaces': [PASS, SLOW], - - # BUG(v8:7247). - 'regress/regress-779407': [PASS, SLOW, NO_VARIANTS], -}], # 'arch == arm64' - -['arch == arm64 and mode == debug and simulator_run', { - - # Pass but take too long with the simulator in debug mode. - 'array-sort': [PASS, SLOW], - 'packed-elements': [SKIP], - 'regexp-global': [SKIP], - 'math-floor-of-div': [PASS, SLOW], - 'math-floor-of-div-nosudiv': [PASS, SLOW], - 'unicodelctest': [PASS, SLOW], - 'unicodelctest-no-optimization': [PASS, SLOW], - # Issue 3219: - 'getters-on-elements': [PASS, ['gc_stress == True', FAIL]], -}], # 'arch == arm64 and mode == debug and simulator_run' - -############################################################################## -['asan == True', { - # Skip tests not suitable for ASAN. - 'big-array-literal': [SKIP], - 'big-object-literal': [SKIP], - 'regress/regress-crbug-178790': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4639 - # The failed allocation causes an asan/msan/tsan error - 'es6/typedarray-construct-offset-not-smi': [SKIP], - - # Exception thrown during bootstrapping on ASAN builds, see issue 4236. - 'regress/regress-1132': [SKIP], - - # Flaky on ASAN builds: https://bugs.chromium.org/p/v8/issues/detail?id=6305 - 'regress/regress-430201': [SKIP], - 'regress/regress-430201b': [SKIP], - - # Stack overflow on windows. - 'es8/regress/regress-624300': [PASS, ['system == windows', SKIP]], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7102 - # Flaky due to huge string allocation. - 'regress/regress-748069': [SKIP], -}], # 'asan == True' - -############################################################################## -['msan == True', { - # Skip tests not suitable for MSAN. - 'big-array-literal': [SKIP], - # ICU upstream issues. - 'date': [SKIP], - 'deep-recursion': [SKIP], - 'regress/regress-builtinbust-7': [SKIP], - 'string-localecompare': [SKIP], - - # Too slow. - 'harmony/regexp-property-lu-ui': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7102 - # Flaky due to huge string allocation. - 'regress/regress-748069': [SKIP], - # Slow test. - 'regress/regress-779407': [PASS, SLOW], -}], # 'msan == True' - -############################################################################## -['tsan == True', { - # https://bugs.chromium.org/p/v8/issues/detail?id=7102 - # Flaky due to huge string allocation. - 'regress/regress-748069': [SKIP], - - # Allocates a large array buffer, which TSAN sometimes cannot handle. - 'regress/regress-599717': [SKIP], - - # BUG(v8:7042). Uses a lot of memory. - 'regress/regress-678917': [SKIP], - - # BUG(v8:8103). Uses a lot of memory. - 'regress/regress-852258': [SKIP], - - # BUG(v8:6924). The test uses a lot of memory. - 'regress/wasm/regress-694433': [SKIP], - 'es6/typedarray': [PASS, NO_VARIANTS], - 'regress/regress-752764': [PASS, NO_VARIANTS], -}], # 'tsan == True' - -############################################################################## -['arch == arm or arch == android_arm', { - - # Slow tests which times out in debug mode. - 'try': [PASS, ['mode == debug', SKIP]], - 'array-constructor': [PASS, ['mode == debug', SKIP]], - 'regress/regress-1122': [PASS, SLOW, ['mode == debug and arch == android_arm', SKIP]], - - # Flaky test that can hit compilation-time stack overflow in debug mode. - 'unicode-test': [PASS, ['mode == debug', PASS, FAIL]], - - # Slow in release mode on ARM. - 'compiler/regress-stacktrace-methods': [PASS, SLOW], - 'array-splice': [PASS, SLOW], - - # Long running tests. Skipping because having them timeout takes too long on - # the buildbot. - 'big-object-literal': [SKIP], - 'compiler/alloc-number': [SKIP], - 'regress/regress-490': [SKIP], - 'regress/regress-create-exception': [SKIP], - 'regress/regress-3247124': [SKIP], - - # Requires bigger stack size in the Genesis and if stack size is increased, - # the test requires too much time to run. However, the problem test covers - # should be platform-independent. - 'regress/regress-1132': [SKIP], - - # Currently always deopt on minus zero - 'math-floor-of-div-minus-zero': [SKIP], - - # Slow tests. - 'array-sort': [PASS, SLOW], - 'compiler/osr-with-args': [PASS, SLOW], - 'packed-elements': [PASS, SLOW], - 'regress/regress-2790': [PASS, SLOW], - 'regress/regress-91008': [PASS, SLOW], - 'regress/regress-json-stringify-gc': [PASS, SLOW], - 'string-indexof-2': [PASS, SLOW], - 'wasm/atomics': [PASS, SLOW], -}], # 'arch == arm or arch == android_arm' - -############################################################################## -['(arch == mipsel or arch == mips or arch == mips64el or arch == mips64) and simulator_run != True', { - # These tests fail occasionally on the buildbots because they consume - # a large amount of memory if executed in parallel. Therefore we - # run only a single instance of these tests - 'regress/regress-crbug-514081': [PASS, NO_VARIANTS], - 'regress/regress-599717': [PASS, NO_VARIANTS], - 'regress/regress-599414-array-concat-fast-path': [PASS, NO_VARIANTS], - 'array-functions-prototype-misc': [PASS, NO_VARIANTS], -}], # 'arch == mipsel or arch == mips or arch == mips64el or arch == mips64' - -############################################################################## -['arch == mipsel or arch == mips or arch == mips64el or arch == mips64 or arch == ppc or arch == ppc64', { - # These tests fail because qNaN and sNaN values are encoded differently on - # MIPS and ARM/x86 architectures - 'wasm/float-constant-folding': [SKIP], -}], - -############################################################################## -['arch == mipsel or arch == mips', { - - # Slow tests which times out in debug mode. - 'try': [PASS, ['mode == debug', SKIP]], - 'array-constructor': [PASS, ['mode == debug', SKIP]], - - # Slow in release mode on MIPS. - 'compiler/regress-stacktrace-methods': [PASS, SLOW], - 'array-splice': [PASS, SLOW], - - # Long running test. - 'string-indexof-2': [PASS, SLOW], - - # Long running tests. Skipping because having them timeout takes too long on - # the buildbot. - 'compiler/alloc-number': [SKIP], - 'regress/regress-490': [SKIP], - 'regress/regress-create-exception': [SKIP], - 'regress/regress-3247124': [SKIP], - - # Requires bigger stack size in the Genesis and if stack size is increased, - # the test requires too much time to run. However, the problem test covers - # should be platform-independent. - 'regress/regress-1132': [SKIP], - - # Currently always deopt on minus zero - 'math-floor-of-div-minus-zero': [SKIP], - - # Requires too much memory on MIPS. - 'regress/regress-752764': [SKIP], - 'regress/regress-779407': [SKIP], - 'harmony/bigint/regressions': [SKIP], - - # Pre-r6 MIPS32 doesn't have instructions needed to properly handle 64-bit - # atomic instructions. - 'wasm/atomics64-stress': [PASS, ['mips_arch_variant != r6', SKIP]], -}], # 'arch == mipsel or arch == mips' - -############################################################################## -['arch == mips64el or arch == mips64', { - - # Slow tests which times out in debug mode. - 'try': [PASS, ['mode == debug', SKIP]], - 'array-constructor': [PASS, ['mode == debug', SKIP]], - - # Slow in release mode on MIPS. - 'compiler/regress-stacktrace-methods': [PASS, SLOW], - 'array-splice': [PASS, SLOW], - - # Long running test. - 'string-indexof-2': [PASS, SLOW], - - # BUG(3251035): Timeouts in long looping crankshaft optimization - # tests. Skipping because having them timeout takes too long on the - # buildbot. - 'compiler/alloc-number': [PASS, SLOW], - 'compiler/array-length': [PASS, SLOW], - 'compiler/assignment-deopt': [PASS, SLOW], - 'compiler/deopt-args': [PASS, SLOW], - 'compiler/inline-compare': [PASS, SLOW], - 'compiler/inline-global-access': [PASS, SLOW], - 'compiler/optimized-function-calls': [PASS, SLOW], - 'compiler/pic': [PASS, SLOW], - 'compiler/property-calls': [PASS, SLOW], - 'compiler/recursive-deopt': [PASS, SLOW], - 'compiler/regress-4': [PASS, SLOW], - 'compiler/regress-funcaller': [PASS, SLOW], - 'compiler/regress-rep-change': [PASS, SLOW], - 'compiler/regress-arguments': [PASS, SLOW], - 'compiler/regress-funarguments': [PASS, SLOW], - 'compiler/regress-3249650': [PASS, SLOW], - 'compiler/simple-deopt': [PASS, SLOW], - 'regress/regress-490': [PASS, SLOW], - 'regress/regress-create-exception': [PASS, SLOW], - 'regress/regress-3218915': [PASS, SLOW], - 'regress/regress-3247124': [PASS, SLOW], - - # Requires bigger stack size in the Genesis and if stack size is increased, - # the test requires too much time to run. However, the problem test covers - # should be platform-independent. - 'regress/regress-1132': [SKIP], - - # Currently always deopt on minus zero - 'math-floor-of-div-minus-zero': [SKIP], - - # Requires too much memory on MIPS. - 'regress/regress-752764': [SKIP], - 'regress/regress-779407': [SKIP], -}], # 'arch == mips64el or arch == mips64' - -['(arch == mips64el or arch == mips64) and simulator_run', { - # Slow tests which have flaky timeout on simulator. - 'wasm/atomics64-stress': [SKIP], -}], # '(arch == mips64el or arch == mips64) and simulator_run' - -############################################################################## -['system == windows', { - # TODO(mstarzinger): Too slow with turbo fan. - 'big-object-literal': [SKIP], - 'math-floor-of-div': [PASS, ['mode == debug', SKIP]], - 'math-floor-of-div-nosudiv': [PASS, ['mode == debug', SKIP]], - 'unicodelctest': [PASS, ['mode == debug', SKIP]], - - # Setting the timezone and locale with environment variables unavailable - 'icu-date-to-string': [SKIP], - 'icu-date-lord-howe': [SKIP], - 'regress/regress-6288': [SKIP], - 'tzoffset-transition-apia': [SKIP], - 'tzoffset-transition-lord-howe': [SKIP], - 'tzoffset-transition-moscow': [SKIP], - 'tzoffset-transition-new-york': [SKIP], - 'tzoffset-transition-new-york-noi18n': [SKIP], - 'tzoffset-seoul': [SKIP], - 'tzoffset-seoul-noi18n': [SKIP], -}], # 'system == windows' - -############################################################################## -['system == android', { - # Tests consistently failing on Android. - # Unable to change locale on Android: - 'icu-date-to-string': [FAIL], - 'regress/regress-6288': [FAIL], - # OOM: - 'regress/regress-748069': [FAIL], - 'regress/regress-752764': [FAIL], - 'regress/regress-779407': [FAIL], - # Flaky OOM: - 'regress/regress-852258': [SKIP], -}], # 'system == android' - -############################################################################## -['system == macos', { - # BUG(v8:5333) - 'big-object-literal': [SKIP], -}], # 'system == macos' - -############################################################################## -['isolates', { - # Slow tests. - 'es6/typedarray-of': [PASS, SLOW], - 'regress/regress-crbug-854299': [PASS, SLOW], -}], # 'isolates' - -############################################################################## -['deopt_fuzzer == True', { - - # Skip tests that are not suitable for deoptimization fuzzing. - 'never-optimize': [SKIP], - 'readonly': [SKIP], - 'array-feedback': [SKIP], - 'deopt-recursive-eager-once': [SKIP], - 'deopt-recursive-lazy-once': [SKIP], - 'deopt-recursive-soft-once': [SKIP], - 'code-coverage-block-opt': [SKIP], - - # Bounds check triggers forced deopt for array constructors. - 'array-constructor-feedback': [SKIP], - - # Deopting uses just enough memory to make this one OOM. - 'regress/regress-3976': [SKIP], - - # Forced optimisation path tests. - 'shared-function-tier-up-turbo': [SKIP], - - # Fails deopt_fuzzer due to --deopt_every_n_times - 'es6/array-iterator-turbo': [SKIP] -}], # 'deopt_fuzzer == True' - -############################################################################## -['gc_fuzzer', { - 'regress/regress-336820': [SKIP], - 'regress/regress-748069': [SKIP], - 'regress/regress-778668': [SKIP], - 'ignition/regress-672027': [PASS, ['tsan', SKIP]], - 'string-replace-gc': [PASS, SLOW, ['mode == debug', SKIP]], - - # Unsuitable for GC fuzzing because coverage information is lost on GC. - 'code-coverage-ad-hoc': [SKIP], - 'code-coverage-precise': [SKIP], - - # Passes incompatible arguments. - 'd8/d8-arguments': [SKIP], - - # Fails allocation on tsan. - 'es6/classes': [PASS, ['tsan', SKIP]], - - # Tests that fail some assertions due to checking internal state sensitive - # to GC. We mark PASS,FAIL to not skip those tests on the endurance fuzzer. - 'array-literal-feedback': [PASS, FAIL], - 'compiler/dataview-neutered': [PASS, FAIL], - 'compiler/native-context-specialization-hole-check': [PASS, FAIL], - 'elements-transition-hoisting': [PASS, FAIL], - 'es6/collections-constructor-custom-iterator': [PASS, FAIL], - 'harmony/weakrefs/clear-clears-factory-pointer': [PASS, FAIL], - 'ignition/throw-if-not-hole': [PASS, FAIL], - 'keyed-load-with-symbol-key': [PASS, FAIL], - 'object-seal': [PASS, FAIL], - 'regress/regress-3709': [PASS, FAIL], - 'regress/regress-385565': [PASS, FAIL], - 'regress/regress-6948': [PASS, FAIL], - 'regress/regress-7014-1': [PASS, FAIL], - 'regress/regress-7014-2': [PASS, FAIL], - 'regress/regress-7510': [PASS, FAIL], - 'regress/regress-crbug-882233-2': [PASS, FAIL], - 'regress/regress-trap-allocation-memento': [PASS, FAIL], - 'regress/regress-unlink-closures-on-deopt': [PASS, FAIL], - 'shared-function-tier-up-turbo': [PASS, FAIL], -}], # 'gc_fuzzer' - -############################################################################## -['endurance_fuzzer', { - # BUG(v8:7400). - 'wasm/lazy-compilation': [SKIP], - - # BUG(v8:7429). - 'regress/regress-599414-array-concat-fast-path': [SKIP], - - # Often crashes due to memory consumption. - 'regress/regress-655573': [SKIP], - - # TSAN allocation failures. - 'deep-recursion': [PASS, ['tsan', SKIP]], - 'regress/regress-430201b': [PASS, ['tsan', SKIP]], - 'regress/regress-crbug-493779': [PASS, ['tsan', SKIP]], - 'regress/wasm/regress-763439': [PASS, ['tsan', SKIP]], -}], # 'endurance_fuzzer' - -############################################################################## -['predictable == True', { - - # Skip tests that are known to be non-deterministic. - 'd8/d8-worker-sharedarraybuffer': [SKIP], - 'd8/d8-os': [SKIP], - 'harmony/futex': [SKIP], - - # BUG(v8:7166). - 'd8/enable-tracing': [SKIP], - # Relies on async compilation which requires background tasks. - 'wasm/streaming-error-position': [SKIP], - # Intentionally non-deterministic using shared arraybuffers. - 'wasm/atomics-stress': [SKIP], - 'wasm/atomics64-stress': [SKIP], - 'wasm/futex': [SKIP], -}], # 'predictable == True' - -############################################################################## -['simulator_run and (arch == ppc or arch == ppc64 or arch == s390 or arch == s390x)', { - - # take too long with the simulator. - 'regress/regress-1132': [SKIP], - 'regress/regress-740784': [SKIP], - 'regress/regress-crbug-482998': [PASS, SLOW], - 'regress/regress-91008': [PASS, SLOW], - 'harmony/regexp-property-lu-ui': [PASS, SLOW], - 'whitespaces': [PASS, SLOW], - 'wasm/atomics-stress': [SKIP], - 'wasm/atomics64-stress': [SKIP], -}], # 'simulator_run and (arch == ppc or arch == ppc64 or arch == s390 or arch == s390x)' - -############################################################################## -['arch == ppc64', { - - # stack overflow - 'big-array-literal': [SKIP], - 'regress/regress-353551': [SKIP], -}], # 'arch == ppc64' - -############################################################################## -['arch == ppc64 or arch == ppc or arch == s390 or arch == s390x', { - - # TODO(ppc/s390): fix constant pool issue and implement tagging for reloc - 'wasm/compiled-module-serialization': [SKIP], - 'regress/wasm/regress-808980': [SKIP], - 'regress/wasm/regress-808848': [SKIP], -}], # 'arch == ppc64 or arch == ppc or arch == s390 or arch == s390x' - -############################################################################## -['variant == stress', { - # Slow tests. - 'array-natives-elements': [SKIP], - 'big-object-literal': [SKIP], - 'es6/array-iterator-turbo': [SKIP], - 'ignition/regress-599001-verifyheap': [SKIP], - 'unicode-test': [SKIP], - - # Flaky crash on Odroid devices: https://crbug.com/v8/7678 - 'regress/regress-336820': [PASS, ['arch == arm and not simulator_run', SKIP]], - - # Too slow for TSAN in stress mode. - 'es6/classes': [PASS, ['tsan', SKIP]], - 'regress/regress-1122': [PASS, ['tsan', SKIP]], - - # Too slow with gc_stress on arm64. - 'messages': [PASS, ['gc_stress and arch == arm64', SKIP]], - - # Slow on arm64 simulator: https://crbug.com/v8/7783 - 'string-replace-gc': [PASS, ['arch == arm64 and simulator_run', SKIP]], - - # Too memory hungry on Odroid devices. - 'regress/regress-678917': [PASS, ['arch == arm and not simulator_run', SKIP]], -}], # variant == stress - -############################################################################## -['variant == stress and (arch == arm or arch == arm64) and simulator_run', { - # Slow tests: https://crbug.com/v8/7783 - 'generated-transition-stub': [SKIP], - 'regress/regress-336820': [SKIP], - 'wasm/grow-memory': [SKIP], -}], # variant == stress and (arch == arm or arch == arm64) and simulator_run - -############################################################################## -['variant == nooptimization and (arch == arm or arch == arm64) and simulator_run', { - # Slow tests: https://crbug.com/v8/7783 - 'md5': [SKIP], - 'packed-elements': [SKIP], - 'regress/regress-crbug-319860': [SKIP], - 'wasm/asm-wasm-f32': [SKIP], - 'wasm/asm-wasm-f64': [SKIP], - 'wasm/grow-memory': [SKIP], -}], # variant == nooptimization and (arch == arm or arch == arm64) and simulator_run - -############################################################################## -['(arch == arm or arch == arm64)', { - # Flaky tests: https://crbug.com/v8/8090 - 'regress/regress-752764': [SKIP], -}], # (arch == arm or arch == arm64) - -############################################################################## -['gcov_coverage', { - # Tests taking too long. - 'array-functions-prototype-misc': [SKIP], - - # Stack overflow. - 'big-array-literal': [SKIP], -}], # 'gcov_coverage' - -############################################################################## -['variant == no_wasm_traps', { - # Skip stuff uninteresting for wasm traps - 'bugs/*': [SKIP], - 'compiler/*': [SKIP], - 'es6/*': [SKIP], - 'es7/*': [SKIP], - 'es8/*': [SKIP], - 'harmony/*': [SKIP], - 'ignition/*': [SKIP], - 'lithium/*': [SKIP], - 'third_party/*': [SKIP], - 'tools/*': [SKIP], - 'apply': [SKIP], - 'math-*': [SKIP], - 'unicode-test': [SKIP], - 'whitespaces': [SKIP], -}], # variant == no_wasm_traps - -############################################################################## -['no_harness', { - # skip assertion tests since the stack trace is broken if mjsunit is - # included in the snapshot - 'mjsunit-assertion-error' : [SKIP], -}], # no_harness - -############################################################################## -['arch != x64 or deopt_fuzzer', { - # Skip stress-deopt-count tests since it's in x64 only - 'compiler/stress-deopt-count-*': [SKIP], -}], # arch != x64 or deopt_fuzzer - -############################################################################## -# Liftoff is currently only sufficiently implemented on x64, ia32, arm64 and -# arm. -# TODO(clemensh): Implement on all other platforms (crbug.com/v8/6600). -['arch != x64 and arch != ia32 and arch != arm64 and arch != arm', { - 'wasm/liftoff': [SKIP], - 'wasm/tier-up-testing-flag': [SKIP], -}], # arch != x64 and arch != ia32 and arch != arm64 and arch != arm - -############################################################################## -['variant == slow_path and gc_stress', { - # Slow tests. - 'regress/regress-crbug-493779': [SKIP], - 'string-replace-gc': [SKIP], -}], # variant == slow_path - -############################################################################## -['arch == x64', { - # TODO: Flaky test: crbug.com/v8/7899 - 'wasm/asm-wasm-i32': [SKIP], - 'wasm/asm-wasm-f64': [SKIP], -}], # arch == x64 - -############################################################################## -['arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips]', { - # TODO(ssauleau): implement BigInt<>Wasm conversion for other arch - - # crbug.com/v8/7741 - 'wasm/bigint': [SKIP], -}], # arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips] - -############################################################################## -['arch not in [x64, arm, arm64] or system != linux', { - # Unwinding info writer is only supported on x64, arm, and arm64 Linux - 'regress/regress-913844': [SKIP], -}], - -] - - /* - ********************************** test262-automation ********************************** - Summary: The two files have now diverged. - File Status: Partially curated & modified. - Source Status: Modified since its export. - Below is the current and modified source which was exported on Mon Feb 04 2019 19:40:41 GMT+0000 (Coordinated Universal Time) - */ - # Copyright 2012 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -[ -[ALWAYS, { - # Modules which are only meant to be imported from by other tests, not to be - # tested standalone. - 'modules-skip*': [SKIP], - 'harmony/modules-skip*': [SKIP], - 'regress/modules-skip*': [SKIP], - 'wasm/exceptions-utils': [SKIP], - 'wasm/wasm-module-builder': [SKIP], - - # All tests in the bug directory are expected to fail. - 'bugs/*': [FAIL], - - ############################################################################## - # Fails. - 'regress/regress-1119': [FAIL], - - # Issue 1719: Slow to collect arrays over several contexts. - 'regress/regress-524': [SKIP], - # When that bug is fixed, revert the expectation to: - # Skip long running test in debug. - # regress/regress-524: [PASS, ['mode == debug', SKIP]], - - # This test non-deterministically runs out of memory on Windows ia32. - 'regress/regress-crbug-160010': [SKIP], - - # Issue 3784: setters-on-elements is flaky - 'setters-on-elements': [PASS, FAIL], - - # Issue 5495: enable the test when the constant field tracking in enabled. - 'const-field-tracking': [SKIP], - - # Issue 8505: Math.pow is incorrect for asm.js - 'regress/wasm/regress-8505': [SKIP], - - ############################################################################## - # Too slow in debug mode with --stress-opt mode. - 'regress/regress-create-exception': [PASS, ['mode == debug', SKIP]], - - ############################################################################## - # Too slow in debug mode for validation of elements. - 'regress/regress-430201': [PASS, ['mode == debug', SKIP], ['tsan', SKIP]], - 'regress/regress-430201b': [PASS, ['mode == debug', SKIP]], - 'regress/regress-716044': [PASS, ['mode == debug', SKIP]], - - ############################################################################## - # Too slow in debug mode for GC stress mode. - 'regress/regress-crbug-217858': [PASS, ['mode == debug', SKIP]], - - # Too slow in debug mode and under turbofan. - 'regress/regress-4595': [PASS, NO_VARIANTS, ['mode == debug', SKIP]], - - ############################################################################## - # Only RegExp stuff tested, no need for extensive optimizing compiler tests. - 'regexp-global': [PASS, NO_VARIANTS], - 'third_party/regexp-pcre/regexp-pcre': [PASS, NO_VARIANTS], - - ############################################################################## - # No need to waste time for this test. - 'd8/d8-performance-now': [PASS, NO_VARIANTS], - 'regress/regress-crbug-491062': [PASS, NO_VARIANTS], - - # Issue 488: this test sometimes times out. - # TODO(arm): This seems to flush out a bug on arm with simulator. - 'array-constructor': [PASS, SLOW, ['arch == arm and simulator_run == True', SKIP]], - - # Very slow test - 'regress/regress-crbug-808192' : [PASS, SLOW, NO_VARIANTS, ['mode == debug or arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips64 or arch == mips or arch == s390 or arch == s390x or arch == ppc or arch == ppc64', SKIP]], - - # Very slow on ARM and MIPS, contains no architecture dependent code. - 'unicode-case-overoptimization': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips64 or arch == mips', SKIP]], - 'regress/regress-3976': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips64 or arch == mips', SKIP]], - 'regress/regress-crbug-482998': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips', SKIP]], - 'regress/regress-740784': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips', SKIP]], - - # This test allocates a 2G block of memory and if there are multiple - # variants this can lead to OOM. - 'regress/regress-crbug-514081': [PASS, NO_VARIANTS], - - ############################################################################## - # Skip long running tests that time out in debug mode. - 'generated-transition-stub': [PASS, ['mode == debug', SKIP]], - 'migrations': [SKIP], - 'array-functions-prototype-misc': [PASS, SLOW, ['mode == debug', SKIP]], - 'compiler/regress-808472': [PASS, ['mode == debug', SKIP]], - 'es6/promise-all-overflow-1': [SKIP], - 'es6/promise-all-overflow-2': [PASS, SLOW, ['mode == debug or arch != x64', SKIP]], - - ############################################################################## - # This test sets the umask on a per-process basis and hence cannot be - # used in multi-threaded runs. - # On android there is no /tmp directory. - # Currently d8-os generates a temporary directory name using Math.random(), so - # we cannot run several variants of d8-os simultaneously, since all of them - # get the same random seed and would generate the same directory name. Besides - # that, it doesn't make sense to run several variants of d8-os anyways. - 'd8/d8-os': [PASS, NO_VARIANTS, ['isolates or arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]], - 'tools/tickprocessor': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]], - 'tools/dumpcpp': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]], - - ############################################################################## - # These tests generate files in the test directory, so we cannot run several - # variants of them simultaneously. Additionally they should not be affected by - # variants. - 'd8/enable-tracing': [PASS, NO_VARIANTS], - 'tools/compiler-trace-flags': [PASS, NO_VARIANTS], - - ############################################################################## - # Long running test that reproduces memory leak and should be run manually. - 'regress/regress-2073': [SKIP], - - ############################################################################## - # Tests verifying CHECK and ASSERT. - 'verify-check-false': [FAIL, NO_VARIANTS], - 'verify-assert-false': [NO_VARIANTS, ['mode == release and dcheck_always_on == False', PASS], ['mode == debug', FAIL]], - - ############################################################################## - # Tests with different versions for release and debug. - 'compiler/alloc-number': [PASS, ['mode == debug', SKIP]], - 'compiler/alloc-number-debug': [PASS, ['mode == release', SKIP]], - 'regress/regress-634-debug': [PASS, ['mode == release', SKIP]], - - # BUG(v8:2989). - 'regress/regress-2989': [FAIL, NO_VARIANTS, ['lite_mode == True', SKIP]], - - # This test variant makes only sense on arm. - 'math-floor-of-div-nosudiv': [PASS, SLOW, ['arch not in [arm, arm64, android_arm, android_arm64]', SKIP]], - - # Too slow for slow variants. - 'asm/embenchen/*': [PASS, SLOW, NO_VARIANTS], - 'asm/poppler/*': [PASS, SLOW, NO_VARIANTS], - 'asm/sqlite3/*': [PASS, SLOW, NO_VARIANTS], - - # OOM flakes in isolates tests because too many largish heaps are created. - 'asm/asm-heap': [PASS, NO_VARIANTS, ['isolates', SKIP]], - - # Slow tests. - 'copy-on-write-assert': [PASS, SLOW], - 'es6/typedarray-construct-offset-not-smi': [PASS, SLOW], - 'harmony/regexp-property-script-extensions': [PASS, SLOW], - 'md5': [PASS, SLOW], - 'numops-fuzz-part*': [PASS, ['mode == debug', SLOW]], - 'readonly': [PASS, SLOW], - 'regress/regress-1122': [PASS, SLOW], - 'regress/regress-605470': [PASS, SLOW], - 'regress/regress-655573': [PASS, SLOW], - 'regress/regress-1200351': [PASS, SLOW], - 'regress/wasm/regress-810973': [PASS, SLOW], - 'string-replace-gc': [PASS, SLOW], - 'wasm/asm-wasm-f32': [PASS, SLOW], - 'wasm/asm-wasm-f64': [PASS, SLOW], - 'wasm/embenchen/*': [PASS, SLOW], - 'wasm/grow-memory': [PASS, SLOW], - 'wasm/unreachable-validation': [PASS, SLOW], - 'wasm/atomics-stress': [PASS, SLOW, NO_VARIANTS, ['mode != release or dcheck_always_on', SKIP], ['(arch == arm or arch == arm64) and simulator_run', SKIP], ['tsan', SKIP]], - 'wasm/atomics64-stress': [PASS, SLOW, NO_VARIANTS, ['mode != release or dcheck_always_on', SKIP], ['(arch == arm or arch == arm64) and simulator_run', SKIP], ['tsan', SKIP]], - 'wasm/compare-exchange-stress': [PASS, SLOW, NO_VARIANTS], - 'wasm/compare-exchange64-stress': [PASS, SLOW, NO_VARIANTS], - - # case-insensitive unicode regexp relies on case mapping provided by ICU. - 'es6/unicode-regexp-ignore-case': [PASS, ['no_i18n == True', FAIL]], - 'es6/unicode-regexp-ignore-case-noi18n': [FAIL, ['no_i18n == True', PASS]], - 'regress/regress-5036': [PASS, ['no_i18n == True', FAIL]], - 'es7/regexp-ui-word': [PASS, ['no_i18n == True', FAIL]], - 'regexp-modifiers-i18n': [PASS, ['no_i18n == True', FAIL]], - 'regexp-modifiers-autogenerated-i18n': [PASS, ['no_i18n == True', FAIL]], - # desugaring regexp property class relies on ICU. - 'harmony/regexp-property-*': [PASS, ['no_i18n == True', FAIL]], - 'regress/regress-793588': [PASS, ['no_i18n == True', FAIL]], - - # noi18n build cannot parse characters in supplementary plane. - 'harmony/regexp-named-captures': [PASS, ['no_i18n == True', FAIL]], - - # noi18n cannot turn on ICU backend for Date - 'icu-date-to-string': [PASS, ['no_i18n == True', SKIP]], - 'icu-date-lord-howe': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-transition-apia': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-transition-lord-howe': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-transition-moscow': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-transition-new-york': [PASS, ['no_i18n == True', SKIP]], - 'tzoffset-seoul': [PASS, ['no_i18n == True', SKIP]], - - # TODO(bmeurer): Flaky timeouts (sometimes <1s, sometimes >3m). - 'unicodelctest': [PASS, NO_VARIANTS], - 'unicodelctest-no-optimization': [PASS, NO_VARIANTS], - - # TODO(vogelheim): big-object-literal exceeds the stack in debug builds, - # which makes the test useless. - 'big-object-literal': [PASS, ['mode == debug', SKIP]], - - # Runs out of stack space in debug builds. - 'big-array-literal': [PASS, ['mode == debug', SKIP]], - - # BUG(v8:6306). - 'wasm/huge-memory': [SKIP], - - # Allocates a huge string and then flattens it, very slow in debug mode. - 'regress/regress-752764': [PASS, ['mode == debug', SLOW]], - - # https://crbug.com/v8/7697 - 'array-literal-feedback': [PASS, FAIL], - - # https://crbug.com/v8/7775 - 'allocation-site-info': [SKIP], - - # BUG(v8:8169) - 'external-backing-store-gc': [SKIP], - - # https://crbug.com/v8/8781 - 'compiler/string-from-code-point': [PASS, FAIL], -}], # ALWAYS - -['novfp3 == True', { - 'asm/embenchen/box2d': [SKIP], - 'asm/embenchen/zlib': [SKIP], - 'asm/embenchen/memops': [SKIP], - 'asm/embenchen/lua_binarytrees': [SKIP], -}], # novfp3 == True - -############################################################################## -# TODO(ahaas): Port multiple return values to ARM, MIPS, S390 and PPC -['arch == arm or arch == arm64 or arch == mips or arch == mips64 or arch == mipsel or arch == mips64el or arch == s390 or arch == s390x or arch == ppc or arch == ppc64', { - 'wasm/multi-value': [SKIP], -}], - -############################################################################## -['gc_stress == True', { - # Skip tests not suitable for GC stress. - 'allocation-site-info': [SKIP], - 'array-constructor-feedback': [SKIP], - 'array-feedback': [SKIP], - 'array-literal-feedback': [SKIP], - 'd8/d8-performance-now': [SKIP], - 'elements-kind': [SKIP], - 'elements-transition-hoisting': [SKIP], - 'fast-prototype': [SKIP], - 'field-type-tracking': [SKIP], - 'getters-on-elements': [SKIP], - 'es6/block-let-crankshaft': [SKIP], - 'opt-elements-kind': [SKIP], - 'osr-elements-kind': [SKIP], - 'regress/regress-crbug-137689': [SKIP], - 'regress/regress-trap-allocation-memento': [SKIP], - 'regress/regress-2249': [SKIP], - 'regress/regress-4121': [SKIP], - 'regress/regress-6989': [SKIP], - 'compare-known-objects-slow': [SKIP], - 'compiler/array-multiple-receiver-maps': [SKIP], - # Tests taking too long - 'packed-elements': [SKIP], - 'regress/regress-1122': [SKIP], - 'regress/regress-331444': [SKIP], - 'regress/regress-353551': [SKIP], - 'regress/regress-crbug-119926': [SKIP], - 'regress/short-circuit': [SKIP], - 'stack-traces-overflow': [SKIP], - 'unicode-test': [SKIP], - 'whitespaces': [SKIP], - - # Unsuitable for GC stress because coverage information is lost on GC. - 'code-coverage-ad-hoc': [SKIP], - 'code-coverage-precise': [SKIP], - - # TODO(mstarzinger): Takes too long with TF. - 'array-sort': [PASS, NO_VARIANTS], - 'regress/regress-91008': [PASS, NO_VARIANTS], - 'regress/regress-transcendental': [PASS, ['arch == arm64', NO_VARIANTS]], - 'compiler/osr-regress-max-locals': [PASS, NO_VARIANTS], - 'math-floor-of-div': [PASS, NO_VARIANTS], - 'unicodelctest': [PASS, NO_VARIANTS], - 'unicodelctest-no-optimization': [PASS, NO_VARIANTS], - - # TODO(jkummerow): Doesn't work correctly in GC stress. - 'regress/regress-crbug-500497': [SKIP], - - # Too slow for gc stress. - 'asm/embenchen/box2d': [SKIP], - - # BUG(v8:4237) - 'regress/regress-3976': [SKIP], - - # Slow tests. - 'array-constructor': [PASS, SLOW], - 'json': [PASS, SLOW], - - # BUG(v8:4779): Crashes flakily with stress mode on arm64. - 'array-splice': [PASS, SLOW, ['arch == arm64', NO_VARIANTS]], - - # BUG(v8:7880): Slow tests. - 'regress/regress-707066': [SKIP], - 'regress/regress-446389': [SKIP], - 'regress/regress-458987': [SKIP], - 'es6/regress/regress-crbug-465671': [SKIP], - 'regress/regress-inline-getter-near-stack-limit': [SKIP], - 'es6/regress/regress-crbug-465671-null': [SKIP], - 'regress/regress-148378': [SKIP], - 'regress/regress-crbug-762472': [SKIP], -}], # 'gc_stress == True' - -############################################################################## -['lite_mode or variant == jitless', { - # Skip tests not suitable for lite_mode. - - # TODO(8596): We cache the templates in the feedback vector. In lite mode - # without feedback vectors we need to implement some other mechanism to cache - # them. Enable this test after fixing it. - 'es6/templates': [SKIP], - - # code coverage needs feedback vectors - 'code-coverage-ad-hoc': [SKIP], - 'code-coverage-class-fields': [SKIP], - 'code-coverage-block-noopt': [SKIP], - 'code-coverage-block': [SKIP], - 'code-coverage-precise': [SKIP], - - # Needs feedback vector - tests for allocation sites - 'array-constructor-feedback': [SKIP], - 'regress/regress-trap-allocation-memento': [SKIP], - 'regress/regress-4121': [SKIP], - - # Slow tests without feedback vectors - # TODO(mythria): Investigate why they are slow and either fix if - # possible are update the reason why they are slow. - 'spread-large-string': [SKIP], - 'spread-large-array': [SKIP], - - # TODO(v8:7777): Re-enable once wasm is supported in jitless mode. - 'regress/regress-5888': [SKIP], - 'regress/regress-5911': [SKIP], - 'regress/regress-813440': [SKIP], - 'regress/regress-crbug-746835': [SKIP], - 'regress/regress-crbug-772056': [SKIP], - 'regress/wasm/*': [SKIP], - 'tools/compiler-trace-flags': [SKIP], - 'wasm/*': [SKIP], - - # Other tests that use asm / wasm / optimized code. - 'asm/asm-heap': [SKIP], - 'asm/asm-validation': [SKIP], - 'asm/call-stdlib': [SKIP], - 'asm/call-annotation': [SKIP], - 'asm/global-imports': [SKIP], - 'asm/regress-913822': [SKIP], - 'asm/return-types': [SKIP], - 'regress/regress-599719': [SKIP], - 'regress/regress-6196': [SKIP], - 'regress/regress-6700': [SKIP], - 'regress/regress-6838-2': [SKIP], - 'regress/regress-6838-3': [SKIP], - - # Timeouts in lite / jitless mode. - 'asm/embenchen/*': [SKIP], - - # Tests that generate code at runtime. - 'code-comments': [SKIP], - 'regress/regress-617526': [SKIP], - 'regress/regress-7893': [SKIP], - 'regress/regress-8377': [SKIP], - 'regress/regress-863810': [SKIP], - 'regress/regress-crbug-721835': [SKIP], - 'regress/regress-crbug-759327': [SKIP], - 'regress/regress-crbug-898974': [SKIP], -}], # 'lite_mode or variant == jitless' - -############################################################################## -['variant == jitless', { - # https://crbug.com/v8/7777 - 'array-literal-transitions': [SKIP], - 'array-push5': [SKIP], - 'array-shift4': [SKIP], - 'array-store-and-grow': [SKIP], - 'code-coverage-block-opt': [SKIP], - 'compiler/abstract-equal-receiver': [SKIP], - 'compiler/abstract-equal-symbol': [SKIP], - 'compiler/abstract-equal-undetectable': [SKIP], - 'compiler/array-buffer-is-view': [SKIP], - 'compiler/array-multiple-receiver-maps': [SKIP], - 'compiler/array-push-3': [SKIP], - 'compiler/array-slice-clone': [SKIP], - 'compiler/constant-fold-cow-array': [SKIP], - 'compiler/dataview-deopt': [SKIP], - 'compiler/dataview-get': [SKIP], - 'compiler/dataview-neutered': [SKIP], - 'compiler/dataview-set': [SKIP], - 'compiler/deopt-array-builtins': [SKIP], - 'compiler/deopt-array-push': [SKIP], - 'compiler/deopt-inlined-from-call': [SKIP], - 'compiler/deopt-numberoroddball-binop': [SKIP], - 'compiler/deopt-string-outofbounds': [SKIP], - 'compiler/increment-typefeedback': [SKIP], - 'compiler/inlined-array-pop-opt': [SKIP], - 'compiler/inlined-call': [SKIP], - 'compiler/integral32-add-sub': [SKIP], - 'compiler/manual-concurrent-recompile': [SKIP], - 'compiler/math-imul': [SKIP], - 'compiler/native-context-specialization-hole-check': [SKIP], - 'compiler/number-abs': [SKIP], - 'compiler/number-ceil': [SKIP], - 'compiler/number-comparison-truncations': [SKIP], - 'compiler/number-divide': [SKIP], - 'compiler/number-floor': [SKIP], - 'compiler/number-max': [SKIP], - 'compiler/number-min': [SKIP], - 'compiler/number-modulus': [SKIP], - 'compiler/number-round': [SKIP], - 'compiler/number-toboolean': [SKIP], - 'compiler/number-trunc': [SKIP], - 'compiler/optimized-float32array-length': [SKIP], - 'compiler/optimized-float64array-length': [SKIP], - 'compiler/optimized-int32array-length': [SKIP], - 'compiler/optimized-uint32array-length': [SKIP], - 'compiler/opt-next-call': [SKIP], - 'compiler/opt-next-call-turbo': [SKIP], - 'compiler/promise-resolve-stable-maps': [SKIP], - 'compiler/redundancy-elimination': [SKIP], - 'compiler/regress-5320': [SKIP], - 'compiler/regress-compare-negate': [SKIP], - 'compiler/stress-deopt-count-1': [SKIP], - 'compiler/stress-deopt-count-2': [SKIP], - 'compiler/string-from-code-point': [SKIP], - 'compiler/uint8-clamped-array': [SKIP], - 'constant-folding-2': [SKIP], - 'default-nospec': [SKIP], - 'deopt-minus-zero': [SKIP], - 'deopt-recursive-eager-once': [SKIP], - 'deopt-recursive-lazy-once': [SKIP], - 'deopt-recursive-soft-once': [SKIP], - 'deopt-unlinked': [SKIP], - 'deopt-with-fp-regs': [SKIP], - 'deserialize-optimize-inner': [SKIP], - 'div-mul-minus-one': [SKIP], - 'elements-transition-hoisting': [SKIP], - 'ensure-growing-store-learns': [SKIP], - 'es6/array-iterator-turbo': [SKIP], - 'es6/block-let-crankshaft': [SKIP], - 'es6/block-let-crankshaft-sloppy': [SKIP], - 'es6/block-scoping': [SKIP], - 'es6/block-scoping-sloppy': [SKIP], - 'es6/collections-constructor-custom-iterator': [SKIP], - 'es6/collections-constructor-iterator-side-effect': [SKIP], - 'es6/collections-constructor-with-modified-array-prototype': [SKIP], - 'es6/collections-constructor-with-modified-protoype': [SKIP], - 'es6/map-constructor-entry-side-effect': [SKIP], - 'es6/map-constructor-entry-side-effect2': [SKIP], - 'es6/map-constructor-entry-side-effect3': [SKIP], - 'es6/map-constructor-entry-side-effect4': [SKIP], - 'field-type-tracking': [SKIP], - 'getters-on-elements': [SKIP], - 'ignition/throw-if-hole': [SKIP], - 'ignition/throw-if-not-hole': [SKIP], - 'ignition/throw-super-not-called': [SKIP], - 'keyed-load-hole-to-undefined': [SKIP], - 'keyed-load-with-string-key': [SKIP], - 'keyed-load-with-symbol-key': [SKIP], - 'math-deopt': [SKIP], - 'math-floor-of-div-minus-zero': [SKIP], - 'modules-turbo1': [SKIP], - 'never-optimize': [SKIP], - 'object-seal': [SKIP], - 'optimized-map': [SKIP], - 'regress/regress-2132': [SKIP], - 'regress/regress-2250': [SKIP], - 'regress/regress-2315': [SKIP], - 'regress/regress-2339': [SKIP], - 'regress/regress-2451': [SKIP], - 'regress/regress-252797': [SKIP], - 'regress/regress-2618': [SKIP], - 'regress/regress-3176': [SKIP], - 'regress/regress-3650-3': [SKIP], - 'regress/regress-3709': [SKIP], - 'regress/regress-385565': [SKIP], - 'regress/regress-4380': [SKIP], - 'regress/regress-5404': [SKIP], - 'regress/regress-5790': [SKIP], - 'regress/regress-5802': [SKIP], - 'regress/regress-6607-1': [SKIP], - 'regress/regress-6607-2': [SKIP], - 'regress/regress-6941': [SKIP], - 'regress/regress-6948': [SKIP], - 'regress/regress-6989': [SKIP], - 'regress/regress-6991': [SKIP], - 'regress/regress-7014-1': [SKIP], - 'regress/regress-7014-2': [SKIP], - 'regress/regress-7135': [SKIP], - 'regress/regress-7254': [SKIP], - 'regress/regress-7510': [SKIP], - 'regress/regress-794825': [SKIP], - 'regress/regress-crbug-554831': [SKIP], - 'regress/regress-crbug-587068': [SKIP], - 'regress/regress-crbug-594183': [SKIP], - 'regress/regress-crbug-882233-2': [SKIP], - 'regress/regress-embedded-cons-string': [SKIP], - 'regress/regress-map-invalidation-2': [SKIP], - 'regress/regress-param-local-type': [SKIP], - 'regress/regress-store-uncacheable': [SKIP], - 'regress/regress-v8-5697': [SKIP], - 'shared-function-tier-up-turbo': [SKIP], - 'shift-for-integer-div': [SKIP], - 'sin-cos': [SKIP], - 'smi-mul': [SKIP], - 'smi-mul-const': [SKIP], - 'string-deopt': [SKIP], - 'strong-rooted-literals': [SKIP], - 'unary-minus-deopt': [SKIP], -}], # variant == jitless - -############################################################################## -['byteorder == big', { - # Emscripten requires little-endian, skip all tests on big endian platforms. - 'asm/embenchen/*': [SKIP], - 'asm/poppler/*': [SKIP], - 'asm/sqlite3/*': [SKIP], - # TODO(mips-team): Fix Wasm for big-endian. - 'wasm/*': [SKIP], -}], # 'byteorder == big' - -############################################################################## -['arch == arm64 or arch == android_arm64', { - - # Requires bigger stack size in the Genesis and if stack size is increased, - # the test requires too much time to run. However, the problem test covers - # should be platform-independent. - 'regress/regress-1132': [SKIP], - - # Pass but take too long to run. Skip. - # Some similar tests (with fewer iterations) may be included in arm64-js - # tests. - 'asm/embenchen/box2d': [SKIP], - 'asm/embenchen/lua_binarytrees': [SKIP], - 'big-object-literal': [SKIP], - 'compiler/regress-arguments': [SKIP], - 'compiler/regress-gvn': [SKIP], - 'compiler/regress-4': [SKIP], - 'compiler/regress-or': [SKIP], - 'compiler/regress-rep-change': [SKIP], - 'regress/regress-1117': [SKIP], - 'regress/regress-1849': [SKIP], - 'regress/regress-3247124': [SKIP], - 'regress/regress-91008': [SKIP], - 'regress/regress-91010': [SKIP], - 'regress/regress-91013': [SKIP], - 'regress/regress-99167': [SKIP], - - # BUG(v8:3457). - 'deserialize-reference': [PASS, FAIL], - - # BUG(v8:4016) - 'regress/regress-crbug-467047': [SKIP], - - # Slow tests. - 'array-concat': [PASS, SLOW], - 'array-indexing': [PASS, SLOW], - 'array-reduce': [PASS, SLOW], - 'array-sort': [PASS, SLOW], - 'array-splice': [PASS, SLOW], - 'bit-not': [PASS, SLOW], - 'compiler/alloc-number': [PASS, SLOW], - 'compiler/osr-with-args': [PASS, SLOW], - 'generated-transition-stub': [PASS, SLOW], - 'json2': [PASS, SLOW], - 'math-floor-of-div-nosudiv': [PASS, SLOW], - 'math-floor-of-div': [PASS, SLOW], - 'messages': [PASS, SLOW], - 'packed-elements': [PASS, SLOW], - 'regress/regress-2790': [PASS, SLOW], - 'regress/regress-331444': [PASS, SLOW], - 'regress/regress-490': [PASS, SLOW], - 'regress/regress-crbug-217858': [PASS, SLOW], - 'regress/regress-create-exception': [PASS, SLOW], - 'regress/regress-json-stringify-gc': [PASS, SLOW], - 'string-indexof-2': [PASS, SLOW], - 'unicodelctest-no-optimization': [PASS, SLOW], - 'unicodelctest': [PASS, SLOW], - 'unicode-test': [PASS, SLOW], - 'wasm/atomics': [PASS, SLOW], - 'whitespaces': [PASS, SLOW], - - # BUG(v8:7247). - 'regress/regress-779407': [PASS, SLOW, NO_VARIANTS], -}], # 'arch == arm64' - -['arch == arm64 and mode == debug and simulator_run', { - - # Pass but take too long with the simulator in debug mode. - 'array-sort': [PASS, SLOW], - 'packed-elements': [SKIP], - 'regexp-global': [SKIP], - 'math-floor-of-div': [PASS, SLOW], - 'math-floor-of-div-nosudiv': [PASS, SLOW], - 'unicodelctest': [PASS, SLOW], - 'unicodelctest-no-optimization': [PASS, SLOW], - # Issue 3219: - 'getters-on-elements': [PASS, ['gc_stress == True', FAIL]], -}], # 'arch == arm64 and mode == debug and simulator_run' - -############################################################################## -['asan == True', { - # Skip tests not suitable for ASAN. - 'big-array-literal': [SKIP], - 'big-object-literal': [SKIP], - 'regress/regress-crbug-178790': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4639 - # The failed allocation causes an asan/msan/tsan error - 'es6/typedarray-construct-offset-not-smi': [SKIP], - - # Exception thrown during bootstrapping on ASAN builds, see issue 4236. - 'regress/regress-1132': [SKIP], - - # Flaky on ASAN builds: https://bugs.chromium.org/p/v8/issues/detail?id=6305 - 'regress/regress-430201': [SKIP], - 'regress/regress-430201b': [SKIP], - - # Stack overflow on windows. - 'es8/regress/regress-624300': [PASS, ['system == windows', SKIP]], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7102 - # Flaky due to huge string allocation. - 'regress/regress-748069': [SKIP], -}], # 'asan == True' - -############################################################################## -['msan == True', { - # Skip tests not suitable for MSAN. - 'big-array-literal': [SKIP], - # ICU upstream issues. - 'date': [SKIP], - 'deep-recursion': [SKIP], - 'regress/regress-builtinbust-7': [SKIP], - 'string-localecompare': [SKIP], - - # Too slow. - 'harmony/regexp-property-lu-ui': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7102 - # Flaky due to huge string allocation. - 'regress/regress-748069': [SKIP], - # Slow test. - 'regress/regress-779407': [PASS, SLOW], -}], # 'msan == True' - -############################################################################## -['tsan == True', { - # https://bugs.chromium.org/p/v8/issues/detail?id=7102 - # Flaky due to huge string allocation. - 'regress/regress-748069': [SKIP], - - # Allocates a large array buffer, which TSAN sometimes cannot handle. - 'regress/regress-599717': [SKIP], - - # BUG(v8:7042). Uses a lot of memory. - 'regress/regress-678917': [SKIP], - - # BUG(v8:8103). Uses a lot of memory. - 'regress/regress-852258': [SKIP], - - # BUG(v8:6924). The test uses a lot of memory. - 'regress/wasm/regress-694433': [SKIP], - 'es6/typedarray': [PASS, NO_VARIANTS], - 'regress/regress-752764': [PASS, NO_VARIANTS], -}], # 'tsan == True' - -############################################################################## -['arch == arm or arch == android_arm', { - - # Slow tests which times out in debug mode. - 'try': [PASS, ['mode == debug', SKIP]], - 'array-constructor': [PASS, ['mode == debug', SKIP]], - 'regress/regress-1122': [PASS, SLOW, ['mode == debug and arch == android_arm', SKIP]], - - # Flaky test that can hit compilation-time stack overflow in debug mode. - 'unicode-test': [PASS, ['mode == debug', PASS, FAIL]], - - # Slow in release mode on ARM. - 'compiler/regress-stacktrace-methods': [PASS, SLOW], - 'array-splice': [PASS, SLOW], - - # Long running tests. Skipping because having them timeout takes too long on - # the buildbot. - 'big-object-literal': [SKIP], - 'compiler/alloc-number': [SKIP], - 'regress/regress-490': [SKIP], - 'regress/regress-create-exception': [SKIP], - 'regress/regress-3247124': [SKIP], - - # Requires bigger stack size in the Genesis and if stack size is increased, - # the test requires too much time to run. However, the problem test covers - # should be platform-independent. - 'regress/regress-1132': [SKIP], - - # Currently always deopt on minus zero - 'math-floor-of-div-minus-zero': [SKIP], - - # Slow tests. - 'array-sort': [PASS, SLOW], - 'compiler/osr-with-args': [PASS, SLOW], - 'packed-elements': [PASS, SLOW], - 'regress/regress-2790': [PASS, SLOW], - 'regress/regress-91008': [PASS, SLOW], - 'regress/regress-json-stringify-gc': [PASS, SLOW], - 'string-indexof-2': [PASS, SLOW], - 'wasm/atomics': [PASS, SLOW], -}], # 'arch == arm or arch == android_arm' - -############################################################################## -['(arch == mipsel or arch == mips or arch == mips64el or arch == mips64) and simulator_run != True', { - # These tests fail occasionally on the buildbots because they consume - # a large amount of memory if executed in parallel. Therefore we - # run only a single instance of these tests - 'regress/regress-crbug-514081': [PASS, NO_VARIANTS], - 'regress/regress-599717': [PASS, NO_VARIANTS], - 'regress/regress-599414-array-concat-fast-path': [PASS, NO_VARIANTS], - 'array-functions-prototype-misc': [PASS, NO_VARIANTS], -}], # 'arch == mipsel or arch == mips or arch == mips64el or arch == mips64' - -############################################################################## -['arch == mipsel or arch == mips or arch == mips64el or arch == mips64 or arch == ppc or arch == ppc64', { - # These tests fail because qNaN and sNaN values are encoded differently on - # MIPS and ARM/x86 architectures - 'wasm/float-constant-folding': [SKIP], -}], - -############################################################################## -['arch == mipsel or arch == mips', { - - # Slow tests which times out in debug mode. - 'try': [PASS, ['mode == debug', SKIP]], - 'array-constructor': [PASS, ['mode == debug', SKIP]], - - # Slow in release mode on MIPS. - 'compiler/regress-stacktrace-methods': [PASS, SLOW], - 'array-splice': [PASS, SLOW], - - # Long running test. - 'string-indexof-2': [PASS, SLOW], - - # Long running tests. Skipping because having them timeout takes too long on - # the buildbot. - 'compiler/alloc-number': [SKIP], - 'regress/regress-490': [SKIP], - 'regress/regress-create-exception': [SKIP], - 'regress/regress-3247124': [SKIP], - - # Requires bigger stack size in the Genesis and if stack size is increased, - # the test requires too much time to run. However, the problem test covers - # should be platform-independent. - 'regress/regress-1132': [SKIP], - - # Currently always deopt on minus zero - 'math-floor-of-div-minus-zero': [SKIP], - - # Requires too much memory on MIPS. - 'regress/regress-752764': [SKIP], - 'regress/regress-779407': [SKIP], - 'harmony/bigint/regressions': [SKIP], - - # Pre-r6 MIPS32 doesn't have instructions needed to properly handle 64-bit - # atomic instructions. - 'wasm/atomics64-stress': [PASS, ['mips_arch_variant != r6', SKIP]], -}], # 'arch == mipsel or arch == mips' - -############################################################################## -['arch == mips64el or arch == mips64', { - - # Slow tests which times out in debug mode. - 'try': [PASS, ['mode == debug', SKIP]], - 'array-constructor': [PASS, ['mode == debug', SKIP]], - - # Slow in release mode on MIPS. - 'compiler/regress-stacktrace-methods': [PASS, SLOW], - 'array-splice': [PASS, SLOW], - - # Long running test. - 'string-indexof-2': [PASS, SLOW], - - # BUG(3251035): Timeouts in long looping crankshaft optimization - # tests. Skipping because having them timeout takes too long on the - # buildbot. - 'compiler/alloc-number': [PASS, SLOW], - 'compiler/array-length': [PASS, SLOW], - 'compiler/assignment-deopt': [PASS, SLOW], - 'compiler/deopt-args': [PASS, SLOW], - 'compiler/inline-compare': [PASS, SLOW], - 'compiler/inline-global-access': [PASS, SLOW], - 'compiler/optimized-function-calls': [PASS, SLOW], - 'compiler/pic': [PASS, SLOW], - 'compiler/property-calls': [PASS, SLOW], - 'compiler/recursive-deopt': [PASS, SLOW], - 'compiler/regress-4': [PASS, SLOW], - 'compiler/regress-funcaller': [PASS, SLOW], - 'compiler/regress-rep-change': [PASS, SLOW], - 'compiler/regress-arguments': [PASS, SLOW], - 'compiler/regress-funarguments': [PASS, SLOW], - 'compiler/regress-3249650': [PASS, SLOW], - 'compiler/simple-deopt': [PASS, SLOW], - 'regress/regress-490': [PASS, SLOW], - 'regress/regress-create-exception': [PASS, SLOW], - 'regress/regress-3218915': [PASS, SLOW], - 'regress/regress-3247124': [PASS, SLOW], - - # Requires bigger stack size in the Genesis and if stack size is increased, - # the test requires too much time to run. However, the problem test covers - # should be platform-independent. - 'regress/regress-1132': [SKIP], - - # Currently always deopt on minus zero - 'math-floor-of-div-minus-zero': [SKIP], - - # Requires too much memory on MIPS. - 'regress/regress-752764': [SKIP], - 'regress/regress-779407': [SKIP], -}], # 'arch == mips64el or arch == mips64' - -['(arch == mips64el or arch == mips64) and simulator_run', { - # Slow tests which have flaky timeout on simulator. - 'wasm/atomics64-stress': [SKIP], -}], # '(arch == mips64el or arch == mips64) and simulator_run' - -############################################################################## -['system == windows', { - # TODO(mstarzinger): Too slow with turbo fan. - 'big-object-literal': [SKIP], - 'math-floor-of-div': [PASS, ['mode == debug', SKIP]], - 'math-floor-of-div-nosudiv': [PASS, ['mode == debug', SKIP]], - 'unicodelctest': [PASS, ['mode == debug', SKIP]], - - # Setting the timezone and locale with environment variables unavailable - 'icu-date-to-string': [SKIP], - 'icu-date-lord-howe': [SKIP], - 'regress/regress-6288': [SKIP], - 'tzoffset-transition-apia': [SKIP], - 'tzoffset-transition-lord-howe': [SKIP], - 'tzoffset-transition-moscow': [SKIP], - 'tzoffset-transition-new-york': [SKIP], - 'tzoffset-transition-new-york-noi18n': [SKIP], - 'tzoffset-seoul': [SKIP], - 'tzoffset-seoul-noi18n': [SKIP], -}], # 'system == windows' - -############################################################################## -['system == android', { - # Tests consistently failing on Android. - # Unable to change locale on Android: - 'icu-date-to-string': [FAIL], - 'regress/regress-6288': [FAIL], - # OOM: - 'regress/regress-748069': [FAIL], - 'regress/regress-752764': [FAIL], - 'regress/regress-779407': [FAIL], - # Flaky OOM: - 'regress/regress-852258': [SKIP], -}], # 'system == android' - -############################################################################## -['system == macos', { - # BUG(v8:5333) - 'big-object-literal': [SKIP], -}], # 'system == macos' - -############################################################################## -['isolates', { - # Slow tests. - 'es6/typedarray-of': [PASS, SLOW], - 'regress/regress-crbug-854299': [PASS, SLOW], -}], # 'isolates' - -############################################################################## -['deopt_fuzzer == True', { - - # Skip tests that are not suitable for deoptimization fuzzing. - 'never-optimize': [SKIP], - 'readonly': [SKIP], - 'array-feedback': [SKIP], - 'deopt-recursive-eager-once': [SKIP], - 'deopt-recursive-lazy-once': [SKIP], - 'deopt-recursive-soft-once': [SKIP], - 'code-coverage-block-opt': [SKIP], - - # Bounds check triggers forced deopt for array constructors. - 'array-constructor-feedback': [SKIP], - - # Deopting uses just enough memory to make this one OOM. - 'regress/regress-3976': [SKIP], - - # Forced optimisation path tests. - 'shared-function-tier-up-turbo': [SKIP], - - # Fails deopt_fuzzer due to --deopt_every_n_times - 'es6/array-iterator-turbo': [SKIP] -}], # 'deopt_fuzzer == True' - -############################################################################## -['gc_fuzzer', { - 'regress/regress-336820': [SKIP], - 'regress/regress-748069': [SKIP], - 'regress/regress-778668': [SKIP], - 'ignition/regress-672027': [PASS, ['tsan', SKIP]], - 'string-replace-gc': [PASS, SLOW, ['mode == debug', SKIP]], - - # Unsuitable for GC fuzzing because coverage information is lost on GC. - 'code-coverage-ad-hoc': [SKIP], - 'code-coverage-precise': [SKIP], - - # Passes incompatible arguments. - 'd8/d8-arguments': [SKIP], - - # Fails allocation on tsan. - 'es6/classes': [PASS, ['tsan', SKIP]], - - # Tests that fail some assertions due to checking internal state sensitive - # to GC. We mark PASS,FAIL to not skip those tests on the endurance fuzzer. - 'array-literal-feedback': [PASS, FAIL], - 'compiler/dataview-neutered': [PASS, FAIL], - 'compiler/native-context-specialization-hole-check': [PASS, FAIL], - 'elements-transition-hoisting': [PASS, FAIL], - 'es6/collections-constructor-custom-iterator': [PASS, FAIL], - 'ignition/throw-if-not-hole': [PASS, FAIL], - 'keyed-load-with-symbol-key': [PASS, FAIL], - 'object-seal': [PASS, FAIL], - 'regress/regress-3709': [PASS, FAIL], - 'regress/regress-385565': [PASS, FAIL], - 'regress/regress-6948': [PASS, FAIL], - 'regress/regress-7014-1': [PASS, FAIL], - 'regress/regress-7014-2': [PASS, FAIL], - 'regress/regress-7510': [PASS, FAIL], - 'regress/regress-crbug-882233-2': [PASS, FAIL], - 'regress/regress-trap-allocation-memento': [PASS, FAIL], - 'regress/regress-unlink-closures-on-deopt': [PASS, FAIL], - 'shared-function-tier-up-turbo': [PASS, FAIL], -}], # 'gc_fuzzer' - -############################################################################## -['endurance_fuzzer', { - # BUG(v8:7400). - 'wasm/lazy-compilation': [SKIP], - - # BUG(v8:7429). - 'regress/regress-599414-array-concat-fast-path': [SKIP], - - # Often crashes due to memory consumption. - 'regress/regress-655573': [SKIP], - - # TSAN allocation failures. - 'deep-recursion': [PASS, ['tsan', SKIP]], - 'regress/regress-430201b': [PASS, ['tsan', SKIP]], - 'regress/regress-crbug-493779': [PASS, ['tsan', SKIP]], - 'regress/wasm/regress-763439': [PASS, ['tsan', SKIP]], -}], # 'endurance_fuzzer' - -############################################################################## -['predictable == True', { - - # Skip tests that are known to be non-deterministic. - 'd8/d8-worker-sharedarraybuffer': [SKIP], - 'd8/d8-os': [SKIP], - 'harmony/futex': [SKIP], - - # BUG(v8:7166). - 'd8/enable-tracing': [SKIP], - # Relies on async compilation which requires background tasks. - 'wasm/streaming-error-position': [SKIP], - # Intentionally non-deterministic using shared arraybuffers. - 'wasm/atomics-stress': [SKIP], - 'wasm/atomics64-stress': [SKIP], - 'wasm/futex': [SKIP], -}], # 'predictable == True' - -############################################################################## -['simulator_run and (arch == ppc or arch == ppc64 or arch == s390 or arch == s390x)', { - - # take too long with the simulator. - 'regress/regress-1132': [SKIP], - 'regress/regress-740784': [SKIP], - 'regress/regress-crbug-482998': [PASS, SLOW], - 'regress/regress-91008': [PASS, SLOW], - 'harmony/regexp-property-lu-ui': [PASS, SLOW], - 'whitespaces': [PASS, SLOW], - 'wasm/atomics-stress': [SKIP], - 'wasm/atomics64-stress': [SKIP], -}], # 'simulator_run and (arch == ppc or arch == ppc64 or arch == s390 or arch == s390x)' - -############################################################################## -['arch == ppc64', { - - # stack overflow - 'big-array-literal': [SKIP], - 'regress/regress-353551': [SKIP], -}], # 'arch == ppc64' - -############################################################################## -['arch == ppc64 or arch == ppc or arch == s390 or arch == s390x', { - - # TODO(ppc/s390): fix constant pool issue and implement tagging for reloc - 'wasm/compiled-module-serialization': [SKIP], - 'regress/wasm/regress-808980': [SKIP], - 'regress/wasm/regress-808848': [SKIP], -}], # 'arch == ppc64 or arch == ppc or arch == s390 or arch == s390x' - -############################################################################## -['variant == stress', { - # Slow tests. - 'array-natives-elements': [SKIP], - 'big-object-literal': [SKIP], - 'es6/array-iterator-turbo': [SKIP], - 'ignition/regress-599001-verifyheap': [SKIP], - 'unicode-test': [SKIP], - - # Flaky crash on Odroid devices: https://crbug.com/v8/7678 - 'regress/regress-336820': [PASS, ['arch == arm and not simulator_run', SKIP]], - - # Too slow for TSAN in stress mode. - 'es6/classes': [PASS, ['tsan', SKIP]], - 'regress/regress-1122': [PASS, ['tsan', SKIP]], - - # Too slow with gc_stress on arm64. - 'messages': [PASS, ['gc_stress and arch == arm64', SKIP]], - - # Slow on arm64 simulator: https://crbug.com/v8/7783 - 'string-replace-gc': [PASS, ['arch == arm64 and simulator_run', SKIP]], - - # Too memory hungry on Odroid devices. - 'regress/regress-678917': [PASS, ['arch == arm and not simulator_run', SKIP]], -}], # variant == stress - -############################################################################## -['variant == stress and (arch == arm or arch == arm64) and simulator_run', { - # Slow tests: https://crbug.com/v8/7783 - 'generated-transition-stub': [SKIP], - 'regress/regress-336820': [SKIP], - 'wasm/grow-memory': [SKIP], -}], # variant == stress and (arch == arm or arch == arm64) and simulator_run - -############################################################################## -['variant == nooptimization and (arch == arm or arch == arm64) and simulator_run', { - # Slow tests: https://crbug.com/v8/7783 - 'md5': [SKIP], - 'packed-elements': [SKIP], - 'regress/regress-crbug-319860': [SKIP], - 'wasm/asm-wasm-f32': [SKIP], - 'wasm/asm-wasm-f64': [SKIP], - 'wasm/grow-memory': [SKIP], -}], # variant == nooptimization and (arch == arm or arch == arm64) and simulator_run - -############################################################################## -['(arch == arm or arch == arm64)', { - # Flaky tests: https://crbug.com/v8/8090 - 'regress/regress-752764': [SKIP], -}], # (arch == arm or arch == arm64) - -############################################################################## -['gcov_coverage', { - # Tests taking too long. - 'array-functions-prototype-misc': [SKIP], - - # Stack overflow. - 'big-array-literal': [SKIP], -}], # 'gcov_coverage' - -############################################################################## -['variant == no_wasm_traps', { - # Skip stuff uninteresting for wasm traps - 'bugs/*': [SKIP], - 'compiler/*': [SKIP], - 'es6/*': [SKIP], - 'es7/*': [SKIP], - 'es8/*': [SKIP], - 'harmony/*': [SKIP], - 'ignition/*': [SKIP], - 'lithium/*': [SKIP], - 'third_party/*': [SKIP], - 'tools/*': [SKIP], - 'apply': [SKIP], - 'math-*': [SKIP], - 'unicode-test': [SKIP], - 'whitespaces': [SKIP], -}], # variant == no_wasm_traps - -############################################################################## -['no_harness', { - # skip assertion tests since the stack trace is broken if mjsunit is - # included in the snapshot - 'mjsunit-assertion-error' : [SKIP], -}], # no_harness - -############################################################################## -['arch != x64 or deopt_fuzzer', { - # Skip stress-deopt-count tests since it's in x64 only - 'compiler/stress-deopt-count-*': [SKIP], -}], # arch != x64 or deopt_fuzzer - -############################################################################## -# Liftoff is currently only sufficiently implemented on x64, ia32, arm64 and -# arm. -# TODO(clemensh): Implement on all other platforms (crbug.com/v8/6600). -['arch != x64 and arch != ia32 and arch != arm64 and arch != arm', { - 'wasm/liftoff': [SKIP], - 'wasm/tier-up-testing-flag': [SKIP], -}], # arch != x64 and arch != ia32 and arch != arm64 and arch != arm - -############################################################################## -['variant == slow_path and gc_stress', { - # Slow tests. - 'regress/regress-crbug-493779': [SKIP], - 'string-replace-gc': [SKIP], -}], # variant == slow_path - -############################################################################## -['arch == x64', { - # TODO: Flaky test: crbug.com/v8/7899 - 'wasm/asm-wasm-i32': [SKIP], - 'wasm/asm-wasm-f64': [SKIP], -}], # arch == x64 - -############################################################################## -['arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips]', { - # TODO(ssauleau): implement BigInt<>Wasm conversion for other arch - - # crbug.com/v8/7741 - 'wasm/bigint': [SKIP], -}], # arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips] - -############################################################################## -['arch not in [x64, arm, arm64] or system != linux', { - # Unwinding info writer is only supported on x64, arm, and arm64 Linux - 'regress/regress-913844': [SKIP], -}], - -] diff --git a/implementation-contributed/v8/mjsunit/mjsunit_suppressions.js b/implementation-contributed/v8/mjsunit/mjsunit_suppressions.js deleted file mode 100644 index 1bd466993f9..00000000000 --- a/implementation-contributed/v8/mjsunit/mjsunit_suppressions.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -// This turns all mjsunit asserts into no-ops used for fuzzing. -(function () { - failWithMessage = function () {} -})(); diff --git a/implementation-contributed/v8/mjsunit/mod-range.js b/implementation-contributed/v8/mjsunit/mod-range.js deleted file mode 100644 index 0cded89b500..00000000000 --- a/implementation-contributed/v8/mjsunit/mod-range.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g1(i) { - var x = i * 1; - return (x >>> 0) % 1000000000000; -} - -function g2(i) { - var x = i * 1; - return ((x >>> 0) % 1000000000000) | 0; -} - -function test1() { - assertEquals(2294967296, g1(-2000000000)); - assertEquals(2294967295, g1(-2000000001)); - assertEquals(2294967290, g1(-2000000006)); - - assertEquals(2147483651, g1(-2147483645)); - assertEquals(2147483650, g1(-2147483646)); - assertEquals(2147483649, g1(-2147483647)); - assertEquals(2147483648, g1(-2147483648)); - assertEquals(2147483647, g1(-2147483649)); - - assertEquals(3000000000, g1(3000000000)); - assertEquals(3000000001, g1(3000000001)); - assertEquals(3000000002, g1(3000000002)); - - assertEquals(4000000000, g1(4000000000)); - assertEquals(4000400001, g1(4000400001)); - assertEquals(4000400002, g1(4000400002)); - - assertEquals(3, g1(4294967299)); - assertEquals(2, g1(4294967298)); - assertEquals(1, g1(4294967297)); - assertEquals(0, g1(4294967296)); - assertEquals(4294967295, g1(4294967295)); - assertEquals(4294967294, g1(4294967294)); - assertEquals(4294967293, g1(4294967293)); - assertEquals(4294967292, g1(4294967292)); -} - -%NeverOptimizeFunction(test1); -test1(); - -function test2() { - assertEquals(-2000000000, g2(-2000000000)); - assertEquals(-2000000001, g2(-2000000001)); - assertEquals(-2000000006, g2(-2000000006)); - - assertEquals(-2147483645, g2(-2147483645)); - assertEquals(-2147483646, g2(-2147483646)); - assertEquals(-2147483647, g2(-2147483647)); - assertEquals(-2147483648, g2(-2147483648)); - assertEquals(2147483647, g2(-2147483649)); - - assertEquals(-1294967296, g2(3000000000)); - assertEquals(-1294967295, g2(3000000001)); - assertEquals(-1294967294, g2(3000000002)); - - assertEquals(-294967296, g2(4000000000)); - assertEquals(-294567295, g2(4000400001)); - assertEquals(-294567294, g2(4000400002)); - - assertEquals(3, g2(4294967299)); - assertEquals(2, g2(4294967298)); - assertEquals(1, g2(4294967297)); - assertEquals(0, g2(4294967296)); - assertEquals(-1, g2(4294967295)); - assertEquals(-2, g2(4294967294)); - assertEquals(-3, g2(4294967293)); - assertEquals(-4, g2(4294967292)); -} - -%NeverOptimizeFunction(test2); -test2(); diff --git a/implementation-contributed/v8/mjsunit/mod.js b/implementation-contributed/v8/mjsunit/mod.js deleted file mode 100644 index 8ad98fa7ec8..00000000000 --- a/implementation-contributed/v8/mjsunit/mod.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function foo() { - for (var i = 1; i < 100; i++) { - var answer = 1; - for (var j = 1; j < 100; j++) { - if (answer == i) answer = 0; - // Positive case. - print(j + " % " + i + " = " + answer); - m = j % i; - assertEquals(answer, m, j + " % " + i); - m = j % (-i); - assertEquals(answer, m, j + " % -" + i); - // Negative case. - m = (-j) % i; - assertEquals(-answer, m, j + " % " + i); - // Check for negative zero. - if (answer == 0) assertEquals(-Infinity, 1/m); - m = (-j) % (-i); - assertEquals(-answer, m, j + " % -" + i); - // Check for negative zero. - if (answer == 0) assertEquals(-Infinity, 1/m); - answer++; - } - } -} - -foo(); diff --git a/implementation-contributed/v8/mjsunit/modules-circular-valid.js b/implementation-contributed/v8/mjsunit/modules-circular-valid.js deleted file mode 100644 index e381eefdbc8..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-circular-valid.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -export {a as b} from "modules-skip-circular-valid.js"; diff --git a/implementation-contributed/v8/mjsunit/modules-cycle.js b/implementation-contributed/v8/mjsunit/modules-cycle.js deleted file mode 100644 index 6b775a568e9..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-cycle.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import "modules-skip-cycle.js"; -export {a as foo} from "modules-skip-1.js" diff --git a/implementation-contributed/v8/mjsunit/modules-default-name1.js b/implementation-contributed/v8/mjsunit/modules-default-name1.js deleted file mode 100644 index 54c3afeec59..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default-name1.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {default as goo} from "modules-skip-default-name1.js"; -assertEquals( - {value: "gaga", configurable: true, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(goo, 'name')); diff --git a/implementation-contributed/v8/mjsunit/modules-default-name2.js b/implementation-contributed/v8/mjsunit/modules-default-name2.js deleted file mode 100644 index 51e64139ca4..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default-name2.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {default as goo} from "modules-skip-default-name2.js"; -assertEquals( - {value: "gaga", configurable: true, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(goo, 'name')); diff --git a/implementation-contributed/v8/mjsunit/modules-default-name3.js b/implementation-contributed/v8/mjsunit/modules-default-name3.js deleted file mode 100644 index caab3eb32a5..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default-name3.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {default as goo} from "modules-skip-default-name3.js"; -assertEquals( - {value: "default", configurable: true, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(goo, 'name')); diff --git a/implementation-contributed/v8/mjsunit/modules-default-name4.js b/implementation-contributed/v8/mjsunit/modules-default-name4.js deleted file mode 100644 index c69da9d02b9..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default-name4.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {default as goo} from "modules-skip-default-name4.js"; -assertEquals( - {value: "Gaga", configurable: true, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(goo, 'name')); diff --git a/implementation-contributed/v8/mjsunit/modules-default-name5.js b/implementation-contributed/v8/mjsunit/modules-default-name5.js deleted file mode 100644 index d6e0e5c049e..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default-name5.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {default as goo} from "modules-skip-default-name5.js"; -assertEquals( - {value: "Gaga", configurable: true, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(goo, 'name')); diff --git a/implementation-contributed/v8/mjsunit/modules-default-name6.js b/implementation-contributed/v8/mjsunit/modules-default-name6.js deleted file mode 100644 index 1ac1bcb0c91..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default-name6.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {default as goo} from "modules-skip-default-name6.js"; -assertEquals( - {value: "default", configurable: true, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(goo, 'name')); diff --git a/implementation-contributed/v8/mjsunit/modules-default-name7.js b/implementation-contributed/v8/mjsunit/modules-default-name7.js deleted file mode 100644 index 82904d42123..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default-name7.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {default as goo} from "modules-skip-default-name7.js"; -let descr = Reflect.getOwnPropertyDescriptor(goo, 'name'); -assertEquals(descr, - {value: descr.value, configurable: true, writable: true, enumerable: false}); -assertEquals("yo", descr.value()); diff --git a/implementation-contributed/v8/mjsunit/modules-default-name8.js b/implementation-contributed/v8/mjsunit/modules-default-name8.js deleted file mode 100644 index b192a2544ab..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default-name8.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {default as goo} from "modules-skip-default-name8.js"; -assertEquals( - {value: "default", configurable: true, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(goo, 'name')); diff --git a/implementation-contributed/v8/mjsunit/modules-default-name9.js b/implementation-contributed/v8/mjsunit/modules-default-name9.js deleted file mode 100644 index 3ba711f47ed..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default-name9.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {default as goo} from "modules-skip-default-name9.js"; -assertEquals( - {value: "default", configurable: true, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(goo, 'name')); diff --git a/implementation-contributed/v8/mjsunit/modules-default.js b/implementation-contributed/v8/mjsunit/modules-default.js deleted file mode 100644 index 304703b246f..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-default.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import foo from "modules-skip-1.js"; -assertEquals(42, foo); - -import {default as gaga} from "modules-skip-1.js"; -assertEquals(42, gaga); diff --git a/implementation-contributed/v8/mjsunit/modules-empty-import1.js b/implementation-contributed/v8/mjsunit/modules-empty-import1.js deleted file mode 100644 index 60498f187aa..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-empty-import1.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import "modules-skip-empty-import.js"; -import {counter} from "modules-skip-empty-import-aux.js"; -assertEquals(1, counter); diff --git a/implementation-contributed/v8/mjsunit/modules-empty-import2.js b/implementation-contributed/v8/mjsunit/modules-empty-import2.js deleted file mode 100644 index 8862c94c922..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-empty-import2.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {} from "modules-skip-empty-import.js"; -import {counter} from "modules-skip-empty-import-aux.js"; -assertEquals(1, counter); diff --git a/implementation-contributed/v8/mjsunit/modules-empty-import3.js b/implementation-contributed/v8/mjsunit/modules-empty-import3.js deleted file mode 100644 index 0503891fcec..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-empty-import3.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -export {} from "modules-skip-empty-import.js"; -import {counter} from "modules-skip-empty-import-aux.js"; -assertEquals(1, counter); diff --git a/implementation-contributed/v8/mjsunit/modules-empty-import4.js b/implementation-contributed/v8/mjsunit/modules-empty-import4.js deleted file mode 100644 index 0cea6434148..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-empty-import4.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import "modules-skip-empty-import.js"; -import {} from "modules-skip-empty-import.js"; -export {} from "modules-skip-empty-import.js"; -import {counter} from "modules-skip-empty-import-aux.js"; -assertEquals(1, counter); diff --git a/implementation-contributed/v8/mjsunit/modules-error-trace.js b/implementation-contributed/v8/mjsunit/modules-error-trace.js deleted file mode 100644 index bbf83c510dd..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-error-trace.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -// Make sure the generator resume function doesn't show up in the stack trace. -const stack = (new Error).stack; -assertEquals(2, stack.split(/\r\n|\r|\n/).length); diff --git a/implementation-contributed/v8/mjsunit/modules-export-star-as1.js b/implementation-contributed/v8/mjsunit/modules-export-star-as1.js deleted file mode 100644 index 1696c1c84de..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-export-star-as1.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE -// Flags: --harmony-namespace-exports - -import {foo} from "./modules-skip-8.js"; -assertEquals(42, foo.default); -assertEquals(1, foo.get_a()); diff --git a/implementation-contributed/v8/mjsunit/modules-export-star-as2.js b/implementation-contributed/v8/mjsunit/modules-export-star-as2.js deleted file mode 100644 index 57828ebd670..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-export-star-as2.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE -// Flags: --harmony-namespace-exports - -export * as self from "./modules-export-star-as2.js"; -export * as self_again from "./modules-export-star-as2.js"; -import {self as myself} from "./modules-export-star-as2.js"; -import {self_again as myself_again} from "./modules-export-star-as2.js"; - -assertEquals(["self", "self_again"], Object.keys(myself)); -assertEquals(myself, myself.self); -assertEquals(myself_again, myself.self_again); -assertEquals(myself, myself_again); - -assertThrows(_ => self, ReferenceError); -assertThrows(_ => self_again, ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/modules-export-star-as3.js b/implementation-contributed/v8/mjsunit/modules-export-star-as3.js deleted file mode 100644 index 4077cbd9c60..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-export-star-as3.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE -// Flags: --harmony-namespace-exports - -let self = 42; -export * as self from "./modules-export-star-as3.js"; -import {self as myself} from "./modules-export-star-as3.js"; -assertEquals(["self"], Object.keys(myself)); -assertEquals(myself, myself.self); -assertEquals(42, self); -self++; -assertEquals(43, self); diff --git a/implementation-contributed/v8/mjsunit/modules-exports1.js b/implementation-contributed/v8/mjsunit/modules-exports1.js deleted file mode 100644 index 260f545225d..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-exports1.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE - -export var myvar = "VAR"; -assertEquals("VAR", myvar); -assertEquals("VAR", eval("myvar")); -(() => assertEquals("VAR", myvar))(); - -export let mylet = "LET"; -assertEquals("LET", mylet); -assertEquals("LET", eval("mylet")); -(() => assertEquals("LET", mylet))(); - -export const myconst = "CONST"; -assertEquals("CONST", myconst); -assertEquals("CONST", eval("myconst")); -(() => assertEquals("CONST", myconst))(); - - -myvar = 1; -assertEquals(1, myvar); -assertEquals(1, eval("myvar")); -(() => assertEquals(1, myvar))(); -(() => myvar = 2)(); -assertEquals(2, myvar); -(() => assertEquals(2, myvar))(); -{ - let f = () => assertEquals(2, myvar); - f(); -} - -mylet = 1; -assertEquals(1, mylet); -assertEquals(1, eval("mylet")); -(() => assertEquals(1, mylet))(); -(() => mylet = 2)(); -assertEquals(2, mylet); -assertEquals(2, eval("mylet")); -(() => assertEquals(2, mylet))(); -{ - let f = () => assertEquals(2, mylet); - f(); -} - -assertThrows(() => myconst = 1, TypeError); -assertEquals("CONST", myconst); -assertEquals("CONST", eval("myconst")); -(() => assertEquals("CONST", myconst))(); -{ - let f = () => assertEquals("CONST", myconst); - f(); -} diff --git a/implementation-contributed/v8/mjsunit/modules-exports2.js b/implementation-contributed/v8/mjsunit/modules-exports2.js deleted file mode 100644 index 77f6bb6ccc7..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-exports2.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE - -export function foo() { return 42 } -assertEquals(42, foo()); -foo = 1; -assertEquals(1, foo); - -let gaga = 43; -export {gaga as gugu}; -assertEquals(43, gaga); - -export default (function bar() { return 43 }) -assertThrows(() => bar(), ReferenceError); -assertThrows("default", SyntaxError); -assertThrows("*default*", SyntaxError); - - -var bla = 44; -var blu = 45; -export {bla}; -export {bla as blu}; -export {bla as bli}; -assertEquals(44, bla); -assertEquals(45, blu); -bla = 46; -assertEquals(46, bla); -assertEquals(45, blu); diff --git a/implementation-contributed/v8/mjsunit/modules-exports3.js b/implementation-contributed/v8/mjsunit/modules-exports3.js deleted file mode 100644 index a792852ad90..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-exports3.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE - -export { myvar, mylet, myconst }; - -var myvar = "VAR"; -assertEquals("VAR", myvar); -let mylet = "LET"; -assertEquals("LET", mylet); -const myconst = "CONST"; -assertEquals("CONST", myconst); - -function* gaga() { yield 1 } -assertEquals(1, gaga().next().value); -export {gaga}; -export default gaga; -export {gaga as gigi}; -assertEquals(1, gaga().next().value); - - -export let gugu = 42; - -{ - assertEquals(42, gugu); -} - -try { - assertEquals(42, gugu); -} catch(_) { - assertUnreachable(); -} - -try { - throw {}; -} catch(_) { - assertEquals(42, gugu); -} - -try { - throw {}; -} catch({x=gugu}) { - assertEquals(42, x); -} - -assertEquals(5, eval("var x = 5; x")); diff --git a/implementation-contributed/v8/mjsunit/modules-imports1.js b/implementation-contributed/v8/mjsunit/modules-imports1.js deleted file mode 100644 index f2e33f0f6a2..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-imports1.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {a as x, set_a as set_x} from "modules-skip-1.js" - -let get_x = () => x; - -assertEquals(1, x); -assertEquals(1, (() => x)()); -assertEquals(1, eval('x')); -assertEquals(1, get_x()); - -assertThrows(() => x = 666, TypeError); -assertEquals(1, x); -assertEquals(1, (() => x)()); -assertEquals(1, eval('x')); -assertEquals(1, get_x()); - -set_x("foo"); -assertEquals("foo", x); -assertEquals("foo", (() => x)()); -assertEquals("foo", eval('x')); -assertEquals("foo", get_x()); diff --git a/implementation-contributed/v8/mjsunit/modules-imports2.js b/implementation-contributed/v8/mjsunit/modules-imports2.js deleted file mode 100644 index 35a7f766915..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-imports2.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -let get_x = () => x; - -assertEquals(1, x); -assertEquals(1, (() => x)()); -assertEquals(1, eval('x')); -assertEquals(1, get_x()); - -assertThrows(() => x = 666, TypeError); -assertEquals(1, x); -assertEquals(1, (() => x)()); -assertEquals(1, eval('x')); -assertEquals(1, get_x()); - -set_x("foo"); -assertEquals("foo", x); -assertEquals("foo", (() => x)()); -assertEquals("foo", eval('x')); -assertEquals("foo", get_x()); - -import {a as x, set_a as set_x} from "modules-skip-1.js" diff --git a/implementation-contributed/v8/mjsunit/modules-imports3.js b/implementation-contributed/v8/mjsunit/modules-imports3.js deleted file mode 100644 index 42fcdcecb7b..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-imports3.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {a as x, a as y} from "modules-skip-1.js"; -import {b as z, get_a, set_a} from "modules-skip-1.js"; - -assertEquals(1, get_a()); -assertEquals(1, x); -assertEquals(1, y); -assertEquals(1, z); - -set_a(2); -assertEquals(2, get_a()); -assertEquals(2, x); -assertEquals(2, y); -assertEquals(2, z); - -assertThrows(() => x = 3, TypeError); -assertThrows(() => y = 3, TypeError); -assertThrows(() => z = 3, TypeError); - -assertEquals(2, get_a()); -assertEquals(2, x); -assertEquals(2, y); -assertEquals(2, z); - -assertEquals(2, eval('get_a()')); -assertEquals(2, eval('x')); -assertEquals(2, eval('y')); -assertEquals(2, eval('z')); - -assertEquals(2, (() => get_a())()); -assertEquals(2, (() => x)()); -assertEquals(2, (() => y)()); -assertEquals(2, (() => z)()); diff --git a/implementation-contributed/v8/mjsunit/modules-imports4.js b/implementation-contributed/v8/mjsunit/modules-imports4.js deleted file mode 100644 index 4d734878aa0..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-imports4.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {b, c} from "modules-skip-2.js"; -import {a, set_a} from "modules-skip-1.js"; -import x from "modules-skip-2.js"; - -assertEquals(42, x); - -assertEquals(1, a); -assertEquals(1, b); -assertEquals(1, c); - -set_a(2); -assertEquals(2, a); -assertEquals(2, b); -assertEquals(2, c); - -assertThrows(() => a = 3, TypeError); -assertThrows(() => b = 3, TypeError); -assertThrows(() => c = 3, TypeError); - -assertEquals(2, a); -assertEquals(2, b); -assertEquals(2, c); - -assertThrows(() => x = 43, TypeError); -assertEquals(42, x); diff --git a/implementation-contributed/v8/mjsunit/modules-imports5.js b/implementation-contributed/v8/mjsunit/modules-imports5.js deleted file mode 100644 index b494c7e1a76..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-imports5.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {a} from "modules-skip-3.js"; -export var b = 20; -assertEquals(42, a+b); diff --git a/implementation-contributed/v8/mjsunit/modules-imports6.js b/implementation-contributed/v8/mjsunit/modules-imports6.js deleted file mode 100644 index 4cb117a98d9..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-imports6.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {b, c} from "modules-skip-4.js"; -import {a, set_a} from "modules-skip-4.js"; - -assertEquals(1, a); -assertEquals(1, b); -assertEquals(1, c); - -set_a(2); -assertEquals(2, a); -assertEquals(2, b); -assertEquals(2, c); - -assertThrows(() => a = 3, TypeError); -assertThrows(() => b = 3, TypeError); -assertThrows(() => c = 3, TypeError); - -assertEquals(2, a); -assertEquals(2, b); -assertEquals(2, c); diff --git a/implementation-contributed/v8/mjsunit/modules-imports7.js b/implementation-contributed/v8/mjsunit/modules-imports7.js deleted file mode 100644 index 25014817972..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-imports7.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {a} from "modules-skip-6.js"; -assertEquals(10, a); diff --git a/implementation-contributed/v8/mjsunit/modules-imports8.js b/implementation-contributed/v8/mjsunit/modules-imports8.js deleted file mode 100644 index 56ea60f4c36..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-imports8.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE -// Flags: --harmony-namespace-exports - -import {a, b} from "./modules-skip-9.js"; -assertSame(a, b); -assertEquals(42, a.default); -assertEquals(1, a.a); diff --git a/implementation-contributed/v8/mjsunit/modules-init1.js b/implementation-contributed/v8/mjsunit/modules-init1.js deleted file mode 100644 index fbc8df2cd12..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-init1.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import "modules-skip-init1.js"; -export function bar() { return 42 }; -bar = 5; diff --git a/implementation-contributed/v8/mjsunit/modules-init2.js b/implementation-contributed/v8/mjsunit/modules-init2.js deleted file mode 100644 index 866cb2742a5..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-init2.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {bar} from "modules-init1.js"; -assertEquals(5, bar); diff --git a/implementation-contributed/v8/mjsunit/modules-init3.js b/implementation-contributed/v8/mjsunit/modules-init3.js deleted file mode 100644 index e8b46106f7e..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-init3.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {check} from "modules-skip-init3.js"; - -assertSame(undefined, w); -assertThrows(() => x, ReferenceError); -assertThrows(() => y, ReferenceError); -assertThrows(() => z, ReferenceError); - -assertEquals(23, w = 23); -assertThrows(() => x = 666, ReferenceError); -assertThrows(() => y = 666, ReferenceError); -assertThrows(() => z = 666, TypeError); - -export function* v() { return 40 } -export var w = 41; -export let x = 42; -export class y {}; -export const z = "hello world"; - -assertTrue(check()); diff --git a/implementation-contributed/v8/mjsunit/modules-init4.js b/implementation-contributed/v8/mjsunit/modules-init4.js deleted file mode 100644 index 6b9e47726ca..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-init4.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import "./modules-skip-init4a.js" -export {foo, ns} from "./modules-skip-init4b.js" diff --git a/implementation-contributed/v8/mjsunit/modules-namespace-getownproperty1.js b/implementation-contributed/v8/mjsunit/modules-namespace-getownproperty1.js deleted file mode 100644 index 55b4db03f59..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-namespace-getownproperty1.js +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE - -import * as ns from "./modules-namespace-getownproperty1.js"; - - -//////////////////////////////////////////////////////////////////////////////// -// There are three exports, a and b and c (all let-declared). Variable b is -// declared AFTER the first set of tests ran (see below). -export let a = 1; -export let c = 3; -//////////////////////////////////////////////////////////////////////////////// - - -// for-in -assertThrows(() => { for (let p in ns) {} }, ReferenceError); - -// Object.prototype.propertyIsEnumerable -assertTrue(Object.prototype.propertyIsEnumerable.call(ns, 'a')); -assertThrows(() => Object.prototype.propertyIsEnumerable.call(ns, 'b'), - ReferenceError); -assertTrue(Object.prototype.propertyIsEnumerable.call(ns, 'c')); - -// Object.prototype.hasOwnProperty -assertTrue(Object.prototype.hasOwnProperty.call(ns, 'a')); -assertThrows(() => Object.prototype.hasOwnProperty.call(ns, 'b'), - ReferenceError); -assertTrue(Object.prototype.hasOwnProperty.call(ns, 'c')); - -// Object.keys -assertThrows(() => Object.keys(ns), ReferenceError); - -// Object.entries -assertThrows(() => Object.entries(ns), ReferenceError); - -// Object.values -assertThrows(() => Object.values(ns), ReferenceError); - -// Object.getOwnPropertyNames -assertEquals(['a', 'b', 'c'], Object.getOwnPropertyNames(ns)); - -// Object.getOwnPropertySymbols -assertEquals([Symbol.toStringTag], Object.getOwnPropertySymbols(ns)); - -// Reflect.ownKeys -assertEquals(['a', 'b', 'c', Symbol.toStringTag], Reflect.ownKeys(ns)); - -// Object.assign -var copy = {}; -assertThrows(() => Object.assign(copy, ns), ReferenceError); -assertEquals({a: 1}, copy); - -// Object.isFrozen -assertFalse(Object.isFrozen(ns)); - -// Object.isSealed -assertThrows(() => Object.isSealed(ns), ReferenceError); - -// Object.freeze -assertThrows(() => Object.freeze(ns), TypeError); - -// Object.seal -assertThrows(() => Object.seal(ns), ReferenceError); - -// JSON.stringify -assertThrows(() => JSON.stringify(ns), ReferenceError); - -// PropertyDefinition -assertThrows(() => ({...copy} = ns), ReferenceError); - -// delete -assertThrows(() => delete ns.b, TypeError); -assertFalse(Reflect.deleteProperty(ns, 'b')); - - -//////////////////////////////////////////////////////////////////////////////// -// Variable b is declared here. -export let b = 2; -//////////////////////////////////////////////////////////////////////////////// - - -// for-in -var i = 1; -for (let p in ns) { - assertEquals(i, ns[p]); - i++ -} -assertEquals(i, 4); - -// Object.prototype.propertyIsEnumerable -assertTrue(Object.prototype.propertyIsEnumerable.call(ns, 'a')); -assertTrue(Object.prototype.propertyIsEnumerable.call(ns, 'b')); -assertTrue(Object.prototype.propertyIsEnumerable.call(ns, 'c')); - -// Object.prototype.hasOwnProperty -assertTrue(Object.prototype.hasOwnProperty.call(ns, 'a')); -assertTrue(Object.prototype.hasOwnProperty.call(ns, 'b')); -assertTrue(Object.prototype.hasOwnProperty.call(ns, 'c')); - -// Object.keys -assertEquals(['a', 'b', 'c'], Object.keys(ns)); - -// Object.entries -assertEquals([['a', 1], ['b', 2], ['c', 3]], Object.entries(ns)); - -// Object.values -assertEquals([1, 2, 3], Object.values(ns)); - -// Object.getOwnPropertyNames -assertEquals(['a', 'b', 'c'], Object.getOwnPropertyNames(ns)); - -// Object.getOwnPropertySymbols -assertEquals([Symbol.toStringTag], Object.getOwnPropertySymbols(ns)); - -// Reflect.ownKeys -assertEquals(['a', 'b', 'c', Symbol.toStringTag], Reflect.ownKeys(ns)); - -// Object.assign -copy = {}; -Object.assign(copy, ns); -assertEquals({a: 1, b:2, c:3}, copy); - -// Object.isFrozen -assertFalse(Object.isFrozen(ns)); - -// Object.isSealed -assertTrue(Object.isSealed(ns)); - -// Object.freeze -assertThrows(() => Object.freeze(ns), TypeError); - -// Object.seal -assertDoesNotThrow(() => Object.seal(ns)); - -// JSON.stringify -assertEquals('{"a":1,"b":2,"c":3}', JSON.stringify(ns)); - -// PropertyDefinition -copy = {}; -({...copy} = ns); -assertEquals({a: 1, b:2, c:3}, copy); - -// delete -assertThrows(() => delete ns.b, TypeError); -assertFalse(Reflect.deleteProperty(ns, 'b')); diff --git a/implementation-contributed/v8/mjsunit/modules-namespace-getownproperty2.js b/implementation-contributed/v8/mjsunit/modules-namespace-getownproperty2.js deleted file mode 100644 index c276a09210d..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-namespace-getownproperty2.js +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE - -import * as ns from "./modules-namespace-getownproperty2.js"; - -// This tests the same as modules-namespace-getownproperty1.js except that here -// variable a doesn't exist. This means that the late-declared variable b is the -// (alphabetically) first property of the namespace object, which makes a -// difference for some operations. - - -//////////////////////////////////////////////////////////////////////////////// -// There are two exports, b and c (both let-declared). Variable b is -// declared AFTER the first set of tests ran (see below). -export let c = 3; -//////////////////////////////////////////////////////////////////////////////// - - -// for-in -assertThrows(() => { for (let p in ns) {} }, ReferenceError); - -// Object.prototype.propertyIsEnumerable -assertThrows(() => Object.prototype.propertyIsEnumerable.call(ns, 'b'), - ReferenceError); -assertTrue(Object.prototype.propertyIsEnumerable.call(ns, 'c')); - -// Object.prototype.hasOwnProperty -assertThrows(() => Object.prototype.hasOwnProperty.call(ns, 'b'), - ReferenceError); -assertTrue(Object.prototype.hasOwnProperty.call(ns, 'c')); - -// Object.keys -assertThrows(() => Object.keys(ns), ReferenceError); - -// Object.entries -assertThrows(() => Object.entries(ns), ReferenceError); - -// Object.values -assertThrows(() => Object.values(ns), ReferenceError); - -// Object.getOwnPropertyNames -assertEquals(['b', 'c'], Object.getOwnPropertyNames(ns)); - -// Object.getOwnPropertySymbols -assertEquals([Symbol.toStringTag], Object.getOwnPropertySymbols(ns)); - -// Reflect.ownKeys -assertEquals(['b', 'c', Symbol.toStringTag], Reflect.ownKeys(ns)); - -// Object.assign -var copy = {}; -assertThrows(() => Object.assign(copy, ns), ReferenceError); -assertEquals({}, copy); - -// Object.isFrozen -assertThrows(() => Object.isFrozen(ns), ReferenceError); - -// Object.isSealed -assertThrows(() => Object.isSealed(ns), ReferenceError); - -// Object.freeze -assertThrows(() => Object.freeze(ns), ReferenceError); - -// Object.seal -assertThrows(() => Object.seal(ns), ReferenceError); - -// JSON.stringify -assertThrows(() => JSON.stringify(ns), ReferenceError); - -// PropertyDefinition -assertThrows(() => ({...copy} = ns), ReferenceError); - -// delete -assertThrows(() => delete ns.b, TypeError); -assertFalse(Reflect.deleteProperty(ns, 'b')); - - -//////////////////////////////////////////////////////////////////////////////// -// Variable b is declared here. -export let b = 2; -//////////////////////////////////////////////////////////////////////////////// - - -// for-in -var i = 2; -for (let p in ns) { - assertEquals(i, ns[p]); - i++ -} -assertEquals(i, 4); - -// Object.prototype.propertyIsEnumerable -assertTrue(Object.prototype.propertyIsEnumerable.call(ns, 'b')); -assertTrue(Object.prototype.propertyIsEnumerable.call(ns, 'c')); - -// Object.prototype.hasOwnProperty -assertTrue(Object.prototype.hasOwnProperty.call(ns, 'b')); -assertTrue(Object.prototype.hasOwnProperty.call(ns, 'c')); - -// Object.keys -assertEquals(['b', 'c'], Object.keys(ns)); - -// Object.entries -assertEquals([['b', 2], ['c', 3]], Object.entries(ns)); - -// Object.values -assertEquals([2, 3], Object.values(ns)); - -// Object.getOwnPropertyNames -assertEquals(['b', 'c'], Object.getOwnPropertyNames(ns)); - -// Object.getOwnPropertySymbols -assertEquals([Symbol.toStringTag], Object.getOwnPropertySymbols(ns)); - -// Reflect.ownKeys -assertEquals(['b', 'c', Symbol.toStringTag], Reflect.ownKeys(ns)); - -// Object.assign -copy = {}; -Object.assign(copy, ns); -assertEquals({b:2, c:3}, copy); - -// Object.isFrozen -assertFalse(Object.isFrozen(ns)); - -// Object.isSealed -assertTrue(Object.isSealed(ns)); - -// Object.freeze -assertThrows(() => Object.freeze(ns), TypeError); - -// Object.seal -assertDoesNotThrow(() => Object.seal(ns)); - -// JSON.stringify -assertEquals('{"b":2,"c":3}', JSON.stringify(ns)); - -// PropertyDefinition -copy = {}; -({...copy} = ns); -assertEquals({b:2, c:3}, copy); - -// delete -assertThrows(() => delete ns.b, TypeError); -assertFalse(Reflect.deleteProperty(ns, 'b')); diff --git a/implementation-contributed/v8/mjsunit/modules-namespace1.js b/implementation-contributed/v8/mjsunit/modules-namespace1.js deleted file mode 100644 index 82b1e528ad3..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-namespace1.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -let ja = 42; -export {ja as yo}; -export const bla = "blaa"; -export {foo as foo_again}; -// See further below for the actual star import that declares "foo". - -// The object itself. -assertEquals("object", typeof foo); -assertThrows(() => foo = 666, TypeError); -assertFalse(Reflect.isExtensible(foo)); -assertTrue(Reflect.preventExtensions(foo)); -assertThrows(() => Reflect.apply(foo, {}, [])); -assertThrows(() => Reflect.construct(foo, {}, [])); -assertSame(null, Reflect.getPrototypeOf(foo)); -assertTrue(Reflect.setPrototypeOf(foo, null)); -assertFalse(Reflect.setPrototypeOf(foo, {})); -assertSame(null, Reflect.getPrototypeOf(foo)); -assertEquals( - ["bla", "foo_again", "yo", Symbol.toStringTag], Reflect.ownKeys(foo)); - -// Its "yo" property. -assertEquals( - {value: 42, enumerable: true, configurable: false, writable: true}, - Reflect.getOwnPropertyDescriptor(foo, "yo")); -assertFalse(Reflect.deleteProperty(foo, "yo")); -assertTrue(Reflect.has(foo, "yo")); -assertFalse(Reflect.set(foo, "yo", true)); -// TODO(neis): The next two should be False. -assertTrue(Reflect.defineProperty(foo, "yo", - Reflect.getOwnPropertyDescriptor(foo, "yo"))); -assertTrue(Reflect.defineProperty(foo, "yo", {})); -assertFalse(Reflect.defineProperty(foo, "yo", {get() {return 1}})); -assertEquals(42, Reflect.get(foo, "yo")); -assertEquals(43, (ja++, foo.yo)); - -// Its "foo_again" property. -assertSame(foo, foo.foo_again); - -// Its @@toStringTag property. -assertTrue(Reflect.has(foo, Symbol.toStringTag)); -assertEquals("string", typeof Reflect.get(foo, Symbol.toStringTag)); -assertEquals( - {value: "Module", configurable: false, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(foo, Symbol.toStringTag)); -assertFalse(Reflect.deleteProperty(foo, Symbol.toStringTag)); -assertEquals( - {value: "Module", configurable: false, writable: false, enumerable: false}, - Reflect.getOwnPropertyDescriptor(foo, Symbol.toStringTag)); - -// Nonexistent properties. -let nonexistent = ["gaga", 123, Symbol('')]; -for (let key of nonexistent) { - assertSame(undefined, Reflect.getOwnPropertyDescriptor(foo, key)); - assertTrue(Reflect.deleteProperty(foo, key)); - assertFalse(Reflect.set(foo, key, true)); - assertSame(undefined, Reflect.get(foo, key)); - assertFalse(Reflect.defineProperty(foo, key, {get() {return 1}})); - assertFalse(Reflect.has(foo, key)); -} - -// The actual star import that we are testing. Namespace imports are -// initialized before evaluation. -import * as foo from "modules-namespace1.js"; - -// There can be only one namespace object. -import * as bar from "modules-namespace1.js"; -assertSame(foo, bar); diff --git a/implementation-contributed/v8/mjsunit/modules-namespace2.js b/implementation-contributed/v8/mjsunit/modules-namespace2.js deleted file mode 100644 index 03c90a0099e..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-namespace2.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -assertEquals( - ["b", "c", "get_a", "ns2", "set_a", "zzz", Symbol.toStringTag], - Reflect.ownKeys(ns)); - -import * as foo from "modules-skip-1.js"; -assertSame(foo.a, ns.b); -assertSame(foo.a, ns.c); -assertSame(foo.get_a, ns.get_a); -assertSame(foo.set_a, ns.set_a); -assertEquals(123, ns.zzz); - -assertSame(ns, ns.ns2.ns); -import * as ns from "modules-skip-namespace.js"; -export {ns}; diff --git a/implementation-contributed/v8/mjsunit/modules-namespace3.js b/implementation-contributed/v8/mjsunit/modules-namespace3.js deleted file mode 100644 index df9ef7806bc..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-namespace3.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import * as foo from "modules-namespace3.js"; -export * from "modules-namespace3.js"; -export var bar; -assertEquals(["bar", "default"], Object.getOwnPropertyNames(foo)); -export default function() {}; diff --git a/implementation-contributed/v8/mjsunit/modules-namespace4.js b/implementation-contributed/v8/mjsunit/modules-namespace4.js deleted file mode 100644 index ef508d5fb85..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-namespace4.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import * as foo from "modules-namespace4.js"; - -assertSame(undefined, a); -assertThrows(() => b, ReferenceError); -assertThrows(() => B, ReferenceError); -assertThrows(() => c, ReferenceError); -assertEquals(45, d()); - -assertSame(undefined, foo.a); -assertThrows(() => foo.b, ReferenceError); -assertThrows(() => foo.B, ReferenceError); -assertThrows(() => foo.c, ReferenceError); -assertEquals(45, foo.d()); -assertThrows(() => foo.default, ReferenceError); -assertSame(undefined, foo.doesnotexist); - -Function("Foo", " \ - with (Foo) { \ - assertEquals(undefined, a); \ - assertThrows(() => b, ReferenceError); \ - assertThrows(() => B, ReferenceError); \ - assertThrows(() => c, ReferenceError); \ - assertEquals(45, d()); \ - }")(foo); - -export var a = 42; -export let b = 43; -export {b as B}; -export const c = 44; -export function d() { return 45 }; -export default 46; - -assertEquals(42, a); -assertEquals(43, b); -assertEquals(44, c); -assertEquals(45, d()); - -assertEquals(42, foo.a); -assertEquals(43, foo.b); -assertEquals(43, foo.B); -assertEquals(44, foo.c); -assertEquals(45, foo.d()); -assertEquals(46, foo.default); -assertSame(undefined, foo.doesnotexist); - -Function("Foo", " \ - with (Foo) { \ - assertEquals(42, a); \ - assertEquals(43, b); \ - assertEquals(43, B); \ - assertEquals(44, c); \ - assertEquals(45, d()); \ - }")(foo); diff --git a/implementation-contributed/v8/mjsunit/modules-preparse.js b/implementation-contributed/v8/mjsunit/modules-preparse.js deleted file mode 100644 index d5922bb1aa4..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-preparse.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -let foo = 42; -function testFoo(x) { assertEquals(x, foo); } -testFoo(42); -foo++; -testFoo(43); diff --git a/implementation-contributed/v8/mjsunit/modules-relative-path.js b/implementation-contributed/v8/mjsunit/modules-relative-path.js deleted file mode 100644 index 7e6a37ac1c5..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-relative-path.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import {x as y} from "./modules-relative-path.js"; -export let x = 0; - -assertEquals(0, x); -assertEquals(x, y); -x++; -assertEquals(1, x); -assertEquals(x, y); diff --git a/implementation-contributed/v8/mjsunit/modules-skip-1.js b/implementation-contributed/v8/mjsunit/modules-skip-1.js deleted file mode 100644 index 35731806bb6..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-1.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default 42; -export let a = 1; -export {a as b}; -export function set_a(x) { a = x }; -export function get_a() { return a }; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-2.js b/implementation-contributed/v8/mjsunit/modules-skip-2.js deleted file mode 100644 index d5ff578b497..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-2.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export {a as b, default} from "modules-skip-1.js"; -import {a as tmp} from "modules-skip-1.js"; -export {tmp as c}; -export const zzz = 999; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-3.js b/implementation-contributed/v8/mjsunit/modules-skip-3.js deleted file mode 100644 index 38ead4923ad..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-3.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import {b} from "modules-imports5.js"; -export let a = 22; -assertSame(undefined, b); -assertEquals(22, a); diff --git a/implementation-contributed/v8/mjsunit/modules-skip-4.js b/implementation-contributed/v8/mjsunit/modules-skip-4.js deleted file mode 100644 index 092e27b5fd3..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-4.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export * from "modules-skip-1.js"; -export * from "modules-skip-2.js"; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-5.js b/implementation-contributed/v8/mjsunit/modules-skip-5.js deleted file mode 100644 index 6a1ef495e69..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-5.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export function a() { return "ooo" } diff --git a/implementation-contributed/v8/mjsunit/modules-skip-6.js b/implementation-contributed/v8/mjsunit/modules-skip-6.js deleted file mode 100644 index 4a0ef8da645..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-6.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export * from "modules-skip-1.js"; -export * from "modules-skip-5.js"; -export const a = 10; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-7.js b/implementation-contributed/v8/mjsunit/modules-skip-7.js deleted file mode 100644 index 9f469903739..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-7.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export * from "modules-skip-1.js" -export * from "modules-skip-5.js" diff --git a/implementation-contributed/v8/mjsunit/modules-skip-8.js b/implementation-contributed/v8/mjsunit/modules-skip-8.js deleted file mode 100644 index 376788e283b..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-8.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export * as foo from "./modules-skip-1.js"; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-9.js b/implementation-contributed/v8/mjsunit/modules-skip-9.js deleted file mode 100644 index c0afcdf99ec..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-9.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import * as b from "./modules-skip-1.js"; -export {b}; -export * as a from "./modules-skip-1.js"; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-circular-valid.js b/implementation-contributed/v8/mjsunit/modules-skip-circular-valid.js deleted file mode 100644 index c22544aed0c..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-circular-valid.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export let a = {key: 'value'}; -import {b} from "modules-circular-valid.js"; -assertSame(a, b); -assertEquals('value', a.key); diff --git a/implementation-contributed/v8/mjsunit/modules-skip-cycle.js b/implementation-contributed/v8/mjsunit/modules-skip-cycle.js deleted file mode 100644 index b4adbc7ab3d..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-cycle.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export {foo} from "modules-cycle.js"; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-default-name1.js b/implementation-contributed/v8/mjsunit/modules-skip-default-name1.js deleted file mode 100644 index 30a95cd691d..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-default-name1.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default function gaga() {} diff --git a/implementation-contributed/v8/mjsunit/modules-skip-default-name2.js b/implementation-contributed/v8/mjsunit/modules-skip-default-name2.js deleted file mode 100644 index a064b0526df..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-default-name2.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default (function gaga() {}) diff --git a/implementation-contributed/v8/mjsunit/modules-skip-default-name3.js b/implementation-contributed/v8/mjsunit/modules-skip-default-name3.js deleted file mode 100644 index ed26e463bb3..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-default-name3.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default (function () {}) diff --git a/implementation-contributed/v8/mjsunit/modules-skip-default-name4.js b/implementation-contributed/v8/mjsunit/modules-skip-default-name4.js deleted file mode 100644 index 1c569bed56c..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-default-name4.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default class Gaga { } diff --git a/implementation-contributed/v8/mjsunit/modules-skip-default-name5.js b/implementation-contributed/v8/mjsunit/modules-skip-default-name5.js deleted file mode 100644 index df723367182..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-default-name5.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default (class Gaga { }) diff --git a/implementation-contributed/v8/mjsunit/modules-skip-default-name6.js b/implementation-contributed/v8/mjsunit/modules-skip-default-name6.js deleted file mode 100644 index 02f562998db..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-default-name6.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default (class { }) diff --git a/implementation-contributed/v8/mjsunit/modules-skip-default-name7.js b/implementation-contributed/v8/mjsunit/modules-skip-default-name7.js deleted file mode 100644 index e4400ca409f..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-default-name7.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default (class { static name() {return "yo"} }) diff --git a/implementation-contributed/v8/mjsunit/modules-skip-default-name8.js b/implementation-contributed/v8/mjsunit/modules-skip-default-name8.js deleted file mode 100644 index 83e1ae43ff2..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-default-name8.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default function() { } diff --git a/implementation-contributed/v8/mjsunit/modules-skip-default-name9.js b/implementation-contributed/v8/mjsunit/modules-skip-default-name9.js deleted file mode 100644 index ac166f39f93..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-default-name9.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default class { } diff --git a/implementation-contributed/v8/mjsunit/modules-skip-empty-import-aux.js b/implementation-contributed/v8/mjsunit/modules-skip-empty-import-aux.js deleted file mode 100644 index 1eb5b151594..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-empty-import-aux.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export let counter = 0; -export function incr() { counter++ }; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-empty-import.js b/implementation-contributed/v8/mjsunit/modules-skip-empty-import.js deleted file mode 100644 index 74d4d3ab485..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-empty-import.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import {incr} from "modules-skip-empty-import-aux.js"; -incr(); diff --git a/implementation-contributed/v8/mjsunit/modules-skip-init1.js b/implementation-contributed/v8/mjsunit/modules-skip-init1.js deleted file mode 100644 index 4eb4a0a8657..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-init1.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import {bar} from "modules-init1.js"; -assertEquals(42, bar()); diff --git a/implementation-contributed/v8/mjsunit/modules-skip-init3.js b/implementation-contributed/v8/mjsunit/modules-skip-init3.js deleted file mode 100644 index 589b2cfb16c..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-init3.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import {v, w, x, y, z} from "modules-init3.js"; - -assertEquals({value: 40, done: true}, v().next()); -assertSame(undefined, w); -assertThrows(() => x, ReferenceError); -assertThrows(() => y, ReferenceError); -assertThrows(() => z, ReferenceError); - -assertThrows(() => v = 666, TypeError); -assertThrows(() => w = 666, TypeError); -assertThrows(() => x = 666, TypeError); -assertThrows(() => y = 666, TypeError); -assertThrows(() => z = 666, TypeError); - -export function check() { - assertEquals({value: 40, done: true}, v().next()); - assertEquals(41, w); - assertEquals(42, x); - assertEquals("y", y.name); - assertEquals("hello world", z); - return true; -} diff --git a/implementation-contributed/v8/mjsunit/modules-skip-init4a.js b/implementation-contributed/v8/mjsunit/modules-skip-init4a.js deleted file mode 100644 index 66f4e8276bf..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-init4a.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import {foo, ns} from "./modules-init4.js" -assertEquals(foo(), 42) -assertEquals(ns.foo(), 42) -assertSame(foo, ns.foo) diff --git a/implementation-contributed/v8/mjsunit/modules-skip-init4b.js b/implementation-contributed/v8/mjsunit/modules-skip-init4b.js deleted file mode 100644 index 502c93b8f48..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-init4b.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import * as ns from "./modules-skip-init4b.js" -export function foo() { return 42 } -export {ns} diff --git a/implementation-contributed/v8/mjsunit/modules-skip-namespace.js b/implementation-contributed/v8/mjsunit/modules-skip-namespace.js deleted file mode 100644 index ff6a7b81d3b..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-namespace.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -//assertEquals( -// ["ns", Symbol.toStringTag, Symbol.iterator], Reflect.ownKeys(ns2)); -//assertEquals(["ns"], [...ns2]); - -export * from "modules-skip-4.js"; -export * from "modules-skip-5.js"; -export var zzz = 123; -export {ns2}; -import * as ns2 from "modules-namespace2.js"; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-star-exports-conflict.js b/implementation-contributed/v8/mjsunit/modules-skip-star-exports-conflict.js deleted file mode 100644 index 5cbcd85a330..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-star-exports-conflict.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export * from "modules-skip-1.js"; -export * from "modules-skip-5.js"; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-star-exports-cycle.js b/implementation-contributed/v8/mjsunit/modules-skip-star-exports-cycle.js deleted file mode 100644 index ab67ca803d5..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-skip-star-exports-cycle.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export * from "modules-skip-star-exports-cycle.js"; -export * from "modules-star-exports-cycle.js"; diff --git a/implementation-contributed/v8/mjsunit/modules-star-exports-cycle.js b/implementation-contributed/v8/mjsunit/modules-star-exports-cycle.js deleted file mode 100644 index 6af3139af01..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-star-exports-cycle.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -const bar = 42; -export {bar as foo}; - -import {foo} from "modules-skip-star-exports-cycle.js"; -assertEquals(42, foo); diff --git a/implementation-contributed/v8/mjsunit/modules-this.js b/implementation-contributed/v8/mjsunit/modules-this.js deleted file mode 100644 index 2c8fc74fe75..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-this.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE - -assertEquals(undefined, this); diff --git a/implementation-contributed/v8/mjsunit/modules-turbo1.js b/implementation-contributed/v8/mjsunit/modules-turbo1.js deleted file mode 100644 index 20df5c04dd2..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-turbo1.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE -// Flags: --allow-natives-syntax --opt --turbo-filter=* - -export let x = 0; -function foo() { x++ }; -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); -assertOptimized(foo); -assertEquals(2, x); diff --git a/implementation-contributed/v8/mjsunit/modules-turbo2.js b/implementation-contributed/v8/mjsunit/modules-turbo2.js deleted file mode 100644 index 2e080863770..00000000000 --- a/implementation-contributed/v8/mjsunit/modules-turbo2.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE -// Flags: --allow-natives-syntax - -export let x = 0; - -function foo() { return x++ }; - -function gaga(f) { return f() }; - -assertEquals(0, gaga(foo)); -assertEquals(1, gaga(foo)); -%OptimizeFunctionOnNextCall(gaga); -assertEquals(2, gaga(foo)); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part1.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part1.js deleted file mode 100644 index 7902cc2e67e..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part1.js +++ /dev/null @@ -1,491 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 0; -f(0, 0); -x = 1; -f(0, 0); -f(1, 1); -x = 2; -f(0, 0); -f(2, 1); -f(4, 2); -x = 3; -f(0, 0); -f(3, 1); -f(6, 2); -f(9, 3); -x = 4; -f(0, 0); -f(4, 1); -f(8, 2); -f(12, 3); -f(16, 4); -x = 5; -f(0, 0); -f(5, 1); -f(10, 2); -f(15, 3); -f(20, 4); -f(25, 5); -x = 7; -f(0, 0); -f(7, 1); -f(14, 2); -f(21, 3); -f(28, 4); -f(35, 5); -f(49, 7); -x = 8; -f(0, 0); -f(8, 1); -f(16, 2); -f(24, 3); -f(32, 4); -f(40, 5); -f(56, 7); -f(64, 8); -x = 9; -f(0, 0); -f(9, 1); -f(18, 2); -f(27, 3); -f(36, 4); -f(45, 5); -f(63, 7); -f(72, 8); -f(81, 9); -x = 15; -f(0, 0); -f(15, 1); -f(30, 2); -f(45, 3); -f(60, 4); -f(75, 5); -f(105, 7); -f(120, 8); -f(135, 9); -f(225, 15); -x = 16; -f(0, 0); -f(16, 1); -f(32, 2); -f(48, 3); -f(64, 4); -f(80, 5); -f(112, 7); -f(128, 8); -f(144, 9); -f(240, 15); -f(256, 16); -x = 17; -f(0, 0); -f(17, 1); -f(34, 2); -f(51, 3); -f(68, 4); -f(85, 5); -f(119, 7); -f(136, 8); -f(153, 9); -f(255, 15); -f(272, 16); -f(289, 17); -x = 31; -f(0, 0); -f(31, 1); -f(62, 2); -f(93, 3); -f(124, 4); -f(155, 5); -f(217, 7); -f(248, 8); -f(279, 9); -f(465, 15); -f(496, 16); -f(527, 17); -f(961, 31); -x = 32; -f(0, 0); -f(32, 1); -f(64, 2); -f(96, 3); -f(128, 4); -f(160, 5); -f(224, 7); -f(256, 8); -f(288, 9); -f(480, 15); -f(512, 16); -f(544, 17); -f(992, 31); -f(1024, 32); -x = 33; -f(0, 0); -f(33, 1); -f(66, 2); -f(99, 3); -f(132, 4); -f(165, 5); -f(231, 7); -f(264, 8); -f(297, 9); -f(495, 15); -f(528, 16); -f(561, 17); -f(1023, 31); -f(1056, 32); -f(1089, 33); -x = 63; -f(0, 0); -f(63, 1); -f(126, 2); -f(189, 3); -f(252, 4); -f(315, 5); -f(441, 7); -f(504, 8); -f(567, 9); -f(945, 15); -f(1008, 16); -f(1071, 17); -f(1953, 31); -f(2016, 32); -f(2079, 33); -f(3969, 63); -x = 64; -f(0, 0); -f(64, 1); -f(128, 2); -f(192, 3); -f(256, 4); -f(320, 5); -f(448, 7); -f(512, 8); -f(576, 9); -f(960, 15); -f(1024, 16); -f(1088, 17); -f(1984, 31); -f(2048, 32); -f(2112, 33); -f(4032, 63); -f(4096, 64); -x = 65; -f(0, 0); -f(65, 1); -f(130, 2); -f(195, 3); -f(260, 4); -f(325, 5); -f(455, 7); -f(520, 8); -f(585, 9); -f(975, 15); -f(1040, 16); -f(1105, 17); -f(2015, 31); -f(2080, 32); -f(2145, 33); -f(4095, 63); -f(4160, 64); -f(4225, 65); -x = 127; -f(0, 0); -f(127, 1); -f(254, 2); -f(381, 3); -f(508, 4); -f(635, 5); -f(889, 7); -f(1016, 8); -f(1143, 9); -f(1905, 15); -f(2032, 16); -f(2159, 17); -f(3937, 31); -f(4064, 32); -f(4191, 33); -f(8001, 63); -f(8128, 64); -f(8255, 65); -f(16129, 127); -x = 128; -f(0, 0); -f(128, 1); -f(256, 2); -f(384, 3); -f(512, 4); -f(640, 5); -f(896, 7); -f(1024, 8); -f(1152, 9); -f(1920, 15); -f(2048, 16); -f(2176, 17); -f(3968, 31); -f(4096, 32); -f(4224, 33); -f(8064, 63); -f(8192, 64); -f(8320, 65); -f(16256, 127); -f(16384, 128); -x = 129; -f(0, 0); -f(129, 1); -f(258, 2); -f(387, 3); -f(516, 4); -f(645, 5); -f(903, 7); -f(1032, 8); -f(1161, 9); -f(1935, 15); -f(2064, 16); -f(2193, 17); -f(3999, 31); -f(4128, 32); -f(4257, 33); -f(8127, 63); -f(8256, 64); -f(8385, 65); -f(16383, 127); -f(16512, 128); -f(16641, 129); -x = 255; -f(0, 0); -f(255, 1); -f(510, 2); -f(765, 3); -f(1020, 4); -f(1275, 5); -f(1785, 7); -f(2040, 8); -f(2295, 9); -f(3825, 15); -f(4080, 16); -f(4335, 17); -f(7905, 31); -f(8160, 32); -f(8415, 33); -f(16065, 63); -f(16320, 64); -f(16575, 65); -f(32385, 127); -f(32640, 128); -f(32895, 129); -f(65025, 255); -x = 256; -f(0, 0); -f(256, 1); -f(512, 2); -f(768, 3); -f(1024, 4); -f(1280, 5); -f(1792, 7); -f(2048, 8); -f(2304, 9); -f(3840, 15); -f(4096, 16); -f(4352, 17); -f(7936, 31); -f(8192, 32); -f(8448, 33); -f(16128, 63); -f(16384, 64); -f(16640, 65); -f(32512, 127); -f(32768, 128); -f(33024, 129); -f(65280, 255); -f(65536, 256); -x = 257; -f(0, 0); -f(257, 1); -f(514, 2); -f(771, 3); -f(1028, 4); -f(1285, 5); -f(1799, 7); -f(2056, 8); -f(2313, 9); -f(3855, 15); -f(4112, 16); -f(4369, 17); -f(7967, 31); -f(8224, 32); -f(8481, 33); -f(16191, 63); -f(16448, 64); -f(16705, 65); -f(32639, 127); -f(32896, 128); -f(33153, 129); -f(65535, 255); -f(65792, 256); -f(66049, 257); -x = 511; -f(0, 0); -f(511, 1); -f(1022, 2); -f(1533, 3); -f(2044, 4); -f(2555, 5); -f(3577, 7); -f(4088, 8); -f(4599, 9); -f(7665, 15); -f(8176, 16); -f(8687, 17); -f(15841, 31); -f(16352, 32); -f(16863, 33); -f(32193, 63); -f(32704, 64); -f(33215, 65); -f(64897, 127); -f(65408, 128); -f(65919, 129); -f(130305, 255); -f(130816, 256); -f(131327, 257); -f(261121, 511); -x = 512; -f(0, 0); -f(512, 1); -f(1024, 2); -f(1536, 3); -f(2048, 4); -f(2560, 5); -f(3584, 7); -f(4096, 8); -f(4608, 9); -f(7680, 15); -f(8192, 16); -f(8704, 17); -f(15872, 31); -f(16384, 32); -f(16896, 33); -f(32256, 63); -f(32768, 64); -f(33280, 65); -f(65024, 127); -f(65536, 128); -f(66048, 129); -f(130560, 255); -f(131072, 256); -f(131584, 257); -f(261632, 511); -f(262144, 512); -x = 513; -f(0, 0); -f(513, 1); -f(1026, 2); -f(1539, 3); -f(2052, 4); -f(2565, 5); -f(3591, 7); -f(4104, 8); -f(4617, 9); -f(7695, 15); -f(8208, 16); -f(8721, 17); -f(15903, 31); -f(16416, 32); -f(16929, 33); -f(32319, 63); -f(32832, 64); -f(33345, 65); -f(65151, 127); -f(65664, 128); -f(66177, 129); -f(130815, 255); -f(131328, 256); -f(131841, 257); -f(262143, 511); -f(262656, 512); -f(263169, 513); -x = 1023; -f(0, 0); -f(1023, 1); -f(2046, 2); -f(3069, 3); -f(4092, 4); -f(5115, 5); -f(7161, 7); -f(8184, 8); -f(9207, 9); -f(15345, 15); -f(16368, 16); -f(17391, 17); -f(31713, 31); -f(32736, 32); -f(33759, 33); -f(64449, 63); -f(65472, 64); -f(66495, 65); -f(129921, 127); -f(130944, 128); -f(131967, 129); -f(260865, 255); -f(261888, 256); -f(262911, 257); -f(522753, 511); -f(523776, 512); -f(524799, 513); -f(1046529, 1023); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part10.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part10.js deleted file mode 100644 index 166ec52171e..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part10.js +++ /dev/null @@ -1,470 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 4294967296; -f(0, 0); -f(4294967296, 1); -f(8589934592, 2); -f(12884901888, 3); -f(17179869184, 4); -f(21474836480, 5); -f(30064771072, 7); -f(34359738368, 8); -f(38654705664, 9); -f(64424509440, 15); -f(68719476736, 16); -f(73014444032, 17); -f(133143986176, 31); -f(137438953472, 32); -f(141733920768, 33); -f(270582939648, 63); -f(274877906944, 64); -f(279172874240, 65); -f(545460846592, 127); -f(549755813888, 128); -f(554050781184, 129); -f(1095216660480, 255); -f(1099511627776, 256); -f(1103806595072, 257); -f(2194728288256, 511); -f(2199023255552, 512); -f(2203318222848, 513); -f(4393751543808, 1023); -f(4398046511104, 1024); -f(4402341478400, 1025); -f(8791798054912, 2047); -f(8796093022208, 2048); -f(8800387989504, 2049); -f(17587891077120, 4095); -f(17592186044416, 4096); -f(17596481011712, 4097); -f(35180077121536, 8191); -f(35184372088832, 8192); -f(35188667056128, 8193); -f(70364449210368, 16383); -f(70368744177664, 16384); -f(70373039144960, 16385); -f(140733193388032, 32767); -f(140737488355328, 32768); -f(140741783322624, 32769); -f(281470681743360, 65535); -f(281474976710656, 65536); -f(281479271677952, 65537); -f(562945658454016, 131071); -f(562949953421312, 131072); -f(562954248388608, 131073); -f(1125895611875328, 262143); -f(1125899906842624, 262144); -f(1125904201809920, 262145); -x = 4294967297; -f(0, 0); -f(4294967297, 1); -f(8589934594, 2); -f(12884901891, 3); -f(17179869188, 4); -f(21474836485, 5); -f(30064771079, 7); -f(34359738376, 8); -f(38654705673, 9); -f(64424509455, 15); -f(68719476752, 16); -f(73014444049, 17); -f(133143986207, 31); -f(137438953504, 32); -f(141733920801, 33); -f(270582939711, 63); -f(274877907008, 64); -f(279172874305, 65); -f(545460846719, 127); -f(549755814016, 128); -f(554050781313, 129); -f(1095216660735, 255); -f(1099511628032, 256); -f(1103806595329, 257); -f(2194728288767, 511); -f(2199023256064, 512); -f(2203318223361, 513); -f(4393751544831, 1023); -f(4398046512128, 1024); -f(4402341479425, 1025); -f(8791798056959, 2047); -f(8796093024256, 2048); -f(8800387991553, 2049); -f(17587891081215, 4095); -f(17592186048512, 4096); -f(17596481015809, 4097); -f(35180077129727, 8191); -f(35184372097024, 8192); -f(35188667064321, 8193); -f(70364449226751, 16383); -f(70368744194048, 16384); -f(70373039161345, 16385); -f(140733193420799, 32767); -f(140737488388096, 32768); -f(140741783355393, 32769); -f(281470681808895, 65535); -f(281474976776192, 65536); -f(281479271743489, 65537); -f(562945658585087, 131071); -f(562949953552384, 131072); -f(562954248519681, 131073); -f(1125895612137471, 262143); -f(1125899907104768, 262144); -f(1125904202072065, 262145); -x = 8589934591; -f(0, 0); -f(8589934591, 1); -f(17179869182, 2); -f(25769803773, 3); -f(34359738364, 4); -f(42949672955, 5); -f(60129542137, 7); -f(68719476728, 8); -f(77309411319, 9); -f(128849018865, 15); -f(137438953456, 16); -f(146028888047, 17); -f(266287972321, 31); -f(274877906912, 32); -f(283467841503, 33); -f(541165879233, 63); -f(549755813824, 64); -f(558345748415, 65); -f(1090921693057, 127); -f(1099511627648, 128); -f(1108101562239, 129); -f(2190433320705, 255); -f(2199023255296, 256); -f(2207613189887, 257); -f(4389456576001, 511); -f(4398046510592, 512); -f(4406636445183, 513); -f(8787503086593, 1023); -f(8796093021184, 1024); -f(8804682955775, 1025); -f(17583596107777, 2047); -f(17592186042368, 2048); -f(17600775976959, 2049); -f(35175782150145, 4095); -f(35184372084736, 4096); -f(35192962019327, 4097); -f(70360154234881, 8191); -f(70368744169472, 8192); -f(70377334104063, 8193); -f(140728898404353, 16383); -f(140737488338944, 16384); -f(140746078273535, 16385); -f(281466386743297, 32767); -f(281474976677888, 32768); -f(281483566612479, 32769); -f(562941363421185, 65535); -f(562949953355776, 65536); -f(562958543290367, 65537); -f(1125891316776961, 131071); -f(1125899906711552, 131072); -f(1125908496646143, 131073); -x = 8589934592; -f(0, 0); -f(8589934592, 1); -f(17179869184, 2); -f(25769803776, 3); -f(34359738368, 4); -f(42949672960, 5); -f(60129542144, 7); -f(68719476736, 8); -f(77309411328, 9); -f(128849018880, 15); -f(137438953472, 16); -f(146028888064, 17); -f(266287972352, 31); -f(274877906944, 32); -f(283467841536, 33); -f(541165879296, 63); -f(549755813888, 64); -f(558345748480, 65); -f(1090921693184, 127); -f(1099511627776, 128); -f(1108101562368, 129); -f(2190433320960, 255); -f(2199023255552, 256); -f(2207613190144, 257); -f(4389456576512, 511); -f(4398046511104, 512); -f(4406636445696, 513); -f(8787503087616, 1023); -f(8796093022208, 1024); -f(8804682956800, 1025); -f(17583596109824, 2047); -f(17592186044416, 2048); -f(17600775979008, 2049); -f(35175782154240, 4095); -f(35184372088832, 4096); -f(35192962023424, 4097); -f(70360154243072, 8191); -f(70368744177664, 8192); -f(70377334112256, 8193); -f(140728898420736, 16383); -f(140737488355328, 16384); -f(140746078289920, 16385); -f(281466386776064, 32767); -f(281474976710656, 32768); -f(281483566645248, 32769); -f(562941363486720, 65535); -f(562949953421312, 65536); -f(562958543355904, 65537); -f(1125891316908032, 131071); -f(1125899906842624, 131072); -f(1125908496777216, 131073); -x = 8589934593; -f(0, 0); -f(8589934593, 1); -f(17179869186, 2); -f(25769803779, 3); -f(34359738372, 4); -f(42949672965, 5); -f(60129542151, 7); -f(68719476744, 8); -f(77309411337, 9); -f(128849018895, 15); -f(137438953488, 16); -f(146028888081, 17); -f(266287972383, 31); -f(274877906976, 32); -f(283467841569, 33); -f(541165879359, 63); -f(549755813952, 64); -f(558345748545, 65); -f(1090921693311, 127); -f(1099511627904, 128); -f(1108101562497, 129); -f(2190433321215, 255); -f(2199023255808, 256); -f(2207613190401, 257); -f(4389456577023, 511); -f(4398046511616, 512); -f(4406636446209, 513); -f(8787503088639, 1023); -f(8796093023232, 1024); -f(8804682957825, 1025); -f(17583596111871, 2047); -f(17592186046464, 2048); -f(17600775981057, 2049); -f(35175782158335, 4095); -f(35184372092928, 4096); -f(35192962027521, 4097); -f(70360154251263, 8191); -f(70368744185856, 8192); -f(70377334120449, 8193); -f(140728898437119, 16383); -f(140737488371712, 16384); -f(140746078306305, 16385); -f(281466386808831, 32767); -f(281474976743424, 32768); -f(281483566678017, 32769); -f(562941363552255, 65535); -f(562949953486848, 65536); -f(562958543421441, 65537); -f(1125891317039103, 131071); -f(1125899906973696, 131072); -f(1125908496908289, 131073); -x = 17179869183; -f(0, 0); -f(17179869183, 1); -f(34359738366, 2); -f(51539607549, 3); -f(68719476732, 4); -f(85899345915, 5); -f(120259084281, 7); -f(137438953464, 8); -f(154618822647, 9); -f(257698037745, 15); -f(274877906928, 16); -f(292057776111, 17); -f(532575944673, 31); -f(549755813856, 32); -f(566935683039, 33); -f(1082331758529, 63); -f(1099511627712, 64); -f(1116691496895, 65); -f(2181843386241, 127); -f(2199023255424, 128); -f(2216203124607, 129); -f(4380866641665, 255); -f(4398046510848, 256); -f(4415226380031, 257); -f(8778913152513, 511); -f(8796093021696, 512); -f(8813272890879, 513); -f(17575006174209, 1023); -f(17592186043392, 1024); -f(17609365912575, 1025); -f(35167192217601, 2047); -f(35184372086784, 2048); -f(35201551955967, 2049); -f(70351564304385, 4095); -f(70368744173568, 4096); -f(70385924042751, 4097); -f(140720308477953, 8191); -f(140737488347136, 8192); -f(140754668216319, 8193); -f(281457796825089, 16383); -f(281474976694272, 16384); -f(281492156563455, 16385); -f(562932773519361, 32767); -f(562949953388544, 32768); -f(562967133257727, 32769); -f(1125882726907905, 65535); -f(1125899906777088, 65536); -f(1125917086646271, 65537); -x = 17179869184; -f(0, 0); -f(17179869184, 1); -f(34359738368, 2); -f(51539607552, 3); -f(68719476736, 4); -f(85899345920, 5); -f(120259084288, 7); -f(137438953472, 8); -f(154618822656, 9); -f(257698037760, 15); -f(274877906944, 16); -f(292057776128, 17); -f(532575944704, 31); -f(549755813888, 32); -f(566935683072, 33); -f(1082331758592, 63); -f(1099511627776, 64); -f(1116691496960, 65); -f(2181843386368, 127); -f(2199023255552, 128); -f(2216203124736, 129); -f(4380866641920, 255); -f(4398046511104, 256); -f(4415226380288, 257); -f(8778913153024, 511); -f(8796093022208, 512); -f(8813272891392, 513); -f(17575006175232, 1023); -f(17592186044416, 1024); -f(17609365913600, 1025); -f(35167192219648, 2047); -f(35184372088832, 2048); -f(35201551958016, 2049); -f(70351564308480, 4095); -f(70368744177664, 4096); -f(70385924046848, 4097); -f(140720308486144, 8191); -f(140737488355328, 8192); -f(140754668224512, 8193); -f(281457796841472, 16383); -f(281474976710656, 16384); -f(281492156579840, 16385); -f(562932773552128, 32767); -f(562949953421312, 32768); -f(562967133290496, 32769); -f(1125882726973440, 65535); -f(1125899906842624, 65536); -f(1125917086711808, 65537); -x = 17179869185; -f(0, 0); -f(17179869185, 1); -f(34359738370, 2); -f(51539607555, 3); -f(68719476740, 4); -f(85899345925, 5); -f(120259084295, 7); -f(137438953480, 8); -f(154618822665, 9); -f(257698037775, 15); -f(274877906960, 16); -f(292057776145, 17); -f(532575944735, 31); -f(549755813920, 32); -f(566935683105, 33); -f(1082331758655, 63); -f(1099511627840, 64); -f(1116691497025, 65); -f(2181843386495, 127); -f(2199023255680, 128); -f(2216203124865, 129); -f(4380866642175, 255); -f(4398046511360, 256); -f(4415226380545, 257); -f(8778913153535, 511); -f(8796093022720, 512); -f(8813272891905, 513); -f(17575006176255, 1023); -f(17592186045440, 1024); -f(17609365914625, 1025); -f(35167192221695, 2047); -f(35184372090880, 2048); -f(35201551960065, 2049); -f(70351564312575, 4095); -f(70368744181760, 4096); -f(70385924050945, 4097); -f(140720308494335, 8191); -f(140737488363520, 8192); -f(140754668232705, 8193); -f(281457796857855, 16383); -f(281474976727040, 16384); -f(281492156596225, 16385); -f(562932773584895, 32767); -f(562949953454080, 32768); -f(562967133323265, 32769); -f(1125882727038975, 65535); -f(1125899906908160, 65536); -f(1125917086777345, 65537); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part2.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part2.js deleted file mode 100644 index 4c4a1238476..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part2.js +++ /dev/null @@ -1,525 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 1024; -f(0, 0); -f(1024, 1); -f(2048, 2); -f(3072, 3); -f(4096, 4); -f(5120, 5); -f(7168, 7); -f(8192, 8); -f(9216, 9); -f(15360, 15); -f(16384, 16); -f(17408, 17); -f(31744, 31); -f(32768, 32); -f(33792, 33); -f(64512, 63); -f(65536, 64); -f(66560, 65); -f(130048, 127); -f(131072, 128); -f(132096, 129); -f(261120, 255); -f(262144, 256); -f(263168, 257); -f(523264, 511); -f(524288, 512); -f(525312, 513); -f(1047552, 1023); -f(1048576, 1024); -x = 1025; -f(0, 0); -f(1025, 1); -f(2050, 2); -f(3075, 3); -f(4100, 4); -f(5125, 5); -f(7175, 7); -f(8200, 8); -f(9225, 9); -f(15375, 15); -f(16400, 16); -f(17425, 17); -f(31775, 31); -f(32800, 32); -f(33825, 33); -f(64575, 63); -f(65600, 64); -f(66625, 65); -f(130175, 127); -f(131200, 128); -f(132225, 129); -f(261375, 255); -f(262400, 256); -f(263425, 257); -f(523775, 511); -f(524800, 512); -f(525825, 513); -f(1048575, 1023); -f(1049600, 1024); -f(1050625, 1025); -x = 2047; -f(0, 0); -f(2047, 1); -f(4094, 2); -f(6141, 3); -f(8188, 4); -f(10235, 5); -f(14329, 7); -f(16376, 8); -f(18423, 9); -f(30705, 15); -f(32752, 16); -f(34799, 17); -f(63457, 31); -f(65504, 32); -f(67551, 33); -f(128961, 63); -f(131008, 64); -f(133055, 65); -f(259969, 127); -f(262016, 128); -f(264063, 129); -f(521985, 255); -f(524032, 256); -f(526079, 257); -f(1046017, 511); -f(1048064, 512); -f(1050111, 513); -f(2094081, 1023); -f(2096128, 1024); -f(2098175, 1025); -f(4190209, 2047); -x = 2048; -f(0, 0); -f(2048, 1); -f(4096, 2); -f(6144, 3); -f(8192, 4); -f(10240, 5); -f(14336, 7); -f(16384, 8); -f(18432, 9); -f(30720, 15); -f(32768, 16); -f(34816, 17); -f(63488, 31); -f(65536, 32); -f(67584, 33); -f(129024, 63); -f(131072, 64); -f(133120, 65); -f(260096, 127); -f(262144, 128); -f(264192, 129); -f(522240, 255); -f(524288, 256); -f(526336, 257); -f(1046528, 511); -f(1048576, 512); -f(1050624, 513); -f(2095104, 1023); -f(2097152, 1024); -f(2099200, 1025); -f(4192256, 2047); -f(4194304, 2048); -x = 2049; -f(0, 0); -f(2049, 1); -f(4098, 2); -f(6147, 3); -f(8196, 4); -f(10245, 5); -f(14343, 7); -f(16392, 8); -f(18441, 9); -f(30735, 15); -f(32784, 16); -f(34833, 17); -f(63519, 31); -f(65568, 32); -f(67617, 33); -f(129087, 63); -f(131136, 64); -f(133185, 65); -f(260223, 127); -f(262272, 128); -f(264321, 129); -f(522495, 255); -f(524544, 256); -f(526593, 257); -f(1047039, 511); -f(1049088, 512); -f(1051137, 513); -f(2096127, 1023); -f(2098176, 1024); -f(2100225, 1025); -f(4194303, 2047); -f(4196352, 2048); -f(4198401, 2049); -x = 4095; -f(0, 0); -f(4095, 1); -f(8190, 2); -f(12285, 3); -f(16380, 4); -f(20475, 5); -f(28665, 7); -f(32760, 8); -f(36855, 9); -f(61425, 15); -f(65520, 16); -f(69615, 17); -f(126945, 31); -f(131040, 32); -f(135135, 33); -f(257985, 63); -f(262080, 64); -f(266175, 65); -f(520065, 127); -f(524160, 128); -f(528255, 129); -f(1044225, 255); -f(1048320, 256); -f(1052415, 257); -f(2092545, 511); -f(2096640, 512); -f(2100735, 513); -f(4189185, 1023); -f(4193280, 1024); -f(4197375, 1025); -f(8382465, 2047); -f(8386560, 2048); -f(8390655, 2049); -f(16769025, 4095); -x = 4096; -f(0, 0); -f(4096, 1); -f(8192, 2); -f(12288, 3); -f(16384, 4); -f(20480, 5); -f(28672, 7); -f(32768, 8); -f(36864, 9); -f(61440, 15); -f(65536, 16); -f(69632, 17); -f(126976, 31); -f(131072, 32); -f(135168, 33); -f(258048, 63); -f(262144, 64); -f(266240, 65); -f(520192, 127); -f(524288, 128); -f(528384, 129); -f(1044480, 255); -f(1048576, 256); -f(1052672, 257); -f(2093056, 511); -f(2097152, 512); -f(2101248, 513); -f(4190208, 1023); -f(4194304, 1024); -f(4198400, 1025); -f(8384512, 2047); -f(8388608, 2048); -f(8392704, 2049); -f(16773120, 4095); -f(16777216, 4096); -x = 4097; -f(0, 0); -f(4097, 1); -f(8194, 2); -f(12291, 3); -f(16388, 4); -f(20485, 5); -f(28679, 7); -f(32776, 8); -f(36873, 9); -f(61455, 15); -f(65552, 16); -f(69649, 17); -f(127007, 31); -f(131104, 32); -f(135201, 33); -f(258111, 63); -f(262208, 64); -f(266305, 65); -f(520319, 127); -f(524416, 128); -f(528513, 129); -f(1044735, 255); -f(1048832, 256); -f(1052929, 257); -f(2093567, 511); -f(2097664, 512); -f(2101761, 513); -f(4191231, 1023); -f(4195328, 1024); -f(4199425, 1025); -f(8386559, 2047); -f(8390656, 2048); -f(8394753, 2049); -f(16777215, 4095); -f(16781312, 4096); -f(16785409, 4097); -x = 8191; -f(0, 0); -f(8191, 1); -f(16382, 2); -f(24573, 3); -f(32764, 4); -f(40955, 5); -f(57337, 7); -f(65528, 8); -f(73719, 9); -f(122865, 15); -f(131056, 16); -f(139247, 17); -f(253921, 31); -f(262112, 32); -f(270303, 33); -f(516033, 63); -f(524224, 64); -f(532415, 65); -f(1040257, 127); -f(1048448, 128); -f(1056639, 129); -f(2088705, 255); -f(2096896, 256); -f(2105087, 257); -f(4185601, 511); -f(4193792, 512); -f(4201983, 513); -f(8379393, 1023); -f(8387584, 1024); -f(8395775, 1025); -f(16766977, 2047); -f(16775168, 2048); -f(16783359, 2049); -f(33542145, 4095); -f(33550336, 4096); -f(33558527, 4097); -f(67092481, 8191); -x = 8192; -f(0, 0); -f(8192, 1); -f(16384, 2); -f(24576, 3); -f(32768, 4); -f(40960, 5); -f(57344, 7); -f(65536, 8); -f(73728, 9); -f(122880, 15); -f(131072, 16); -f(139264, 17); -f(253952, 31); -f(262144, 32); -f(270336, 33); -f(516096, 63); -f(524288, 64); -f(532480, 65); -f(1040384, 127); -f(1048576, 128); -f(1056768, 129); -f(2088960, 255); -f(2097152, 256); -f(2105344, 257); -f(4186112, 511); -f(4194304, 512); -f(4202496, 513); -f(8380416, 1023); -f(8388608, 1024); -f(8396800, 1025); -f(16769024, 2047); -f(16777216, 2048); -f(16785408, 2049); -f(33546240, 4095); -f(33554432, 4096); -f(33562624, 4097); -f(67100672, 8191); -f(67108864, 8192); -x = 8193; -f(0, 0); -f(8193, 1); -f(16386, 2); -f(24579, 3); -f(32772, 4); -f(40965, 5); -f(57351, 7); -f(65544, 8); -f(73737, 9); -f(122895, 15); -f(131088, 16); -f(139281, 17); -f(253983, 31); -f(262176, 32); -f(270369, 33); -f(516159, 63); -f(524352, 64); -f(532545, 65); -f(1040511, 127); -f(1048704, 128); -f(1056897, 129); -f(2089215, 255); -f(2097408, 256); -f(2105601, 257); -f(4186623, 511); -f(4194816, 512); -f(4203009, 513); -f(8381439, 1023); -f(8389632, 1024); -f(8397825, 1025); -f(16771071, 2047); -f(16779264, 2048); -f(16787457, 2049); -f(33550335, 4095); -f(33558528, 4096); -f(33566721, 4097); -f(67108863, 8191); -f(67117056, 8192); -f(67125249, 8193); -x = 16383; -f(0, 0); -f(16383, 1); -f(32766, 2); -f(49149, 3); -f(65532, 4); -f(81915, 5); -f(114681, 7); -f(131064, 8); -f(147447, 9); -f(245745, 15); -f(262128, 16); -f(278511, 17); -f(507873, 31); -f(524256, 32); -f(540639, 33); -f(1032129, 63); -f(1048512, 64); -f(1064895, 65); -f(2080641, 127); -f(2097024, 128); -f(2113407, 129); -f(4177665, 255); -f(4194048, 256); -f(4210431, 257); -f(8371713, 511); -f(8388096, 512); -f(8404479, 513); -f(16759809, 1023); -f(16776192, 1024); -f(16792575, 1025); -f(33536001, 2047); -f(33552384, 2048); -f(33568767, 2049); -f(67088385, 4095); -f(67104768, 4096); -f(67121151, 4097); -f(134193153, 8191); -f(134209536, 8192); -f(134225919, 8193); -f(268402689, 16383); -x = 16384; -f(0, 0); -f(16384, 1); -f(32768, 2); -f(49152, 3); -f(65536, 4); -f(81920, 5); -f(114688, 7); -f(131072, 8); -f(147456, 9); -f(245760, 15); -f(262144, 16); -f(278528, 17); -f(507904, 31); -f(524288, 32); -f(540672, 33); -f(1032192, 63); -f(1048576, 64); -f(1064960, 65); -f(2080768, 127); -f(2097152, 128); -f(2113536, 129); -f(4177920, 255); -f(4194304, 256); -f(4210688, 257); -f(8372224, 511); -f(8388608, 512); -f(8404992, 513); -f(16760832, 1023); -f(16777216, 1024); -f(16793600, 1025); -f(33538048, 2047); -f(33554432, 2048); -f(33570816, 2049); -f(67092480, 4095); -f(67108864, 4096); -f(67125248, 4097); -f(134201344, 8191); -f(134217728, 8192); -f(134234112, 8193); -f(268419072, 16383); -f(268435456, 16384); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part3.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part3.js deleted file mode 100644 index 06e41a1d461..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part3.js +++ /dev/null @@ -1,532 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 16385; -f(0, 0); -f(16385, 1); -f(32770, 2); -f(49155, 3); -f(65540, 4); -f(81925, 5); -f(114695, 7); -f(131080, 8); -f(147465, 9); -f(245775, 15); -f(262160, 16); -f(278545, 17); -f(507935, 31); -f(524320, 32); -f(540705, 33); -f(1032255, 63); -f(1048640, 64); -f(1065025, 65); -f(2080895, 127); -f(2097280, 128); -f(2113665, 129); -f(4178175, 255); -f(4194560, 256); -f(4210945, 257); -f(8372735, 511); -f(8389120, 512); -f(8405505, 513); -f(16761855, 1023); -f(16778240, 1024); -f(16794625, 1025); -f(33540095, 2047); -f(33556480, 2048); -f(33572865, 2049); -f(67096575, 4095); -f(67112960, 4096); -f(67129345, 4097); -f(134209535, 8191); -f(134225920, 8192); -f(134242305, 8193); -f(268435455, 16383); -f(268451840, 16384); -f(268468225, 16385); -x = 32767; -f(0, 0); -f(32767, 1); -f(65534, 2); -f(98301, 3); -f(131068, 4); -f(163835, 5); -f(229369, 7); -f(262136, 8); -f(294903, 9); -f(491505, 15); -f(524272, 16); -f(557039, 17); -f(1015777, 31); -f(1048544, 32); -f(1081311, 33); -f(2064321, 63); -f(2097088, 64); -f(2129855, 65); -f(4161409, 127); -f(4194176, 128); -f(4226943, 129); -f(8355585, 255); -f(8388352, 256); -f(8421119, 257); -f(16743937, 511); -f(16776704, 512); -f(16809471, 513); -f(33520641, 1023); -f(33553408, 1024); -f(33586175, 1025); -f(67074049, 2047); -f(67106816, 2048); -f(67139583, 2049); -f(134180865, 4095); -f(134213632, 4096); -f(134246399, 4097); -f(268394497, 8191); -f(268427264, 8192); -f(268460031, 8193); -f(536821761, 16383); -f(536854528, 16384); -f(536887295, 16385); -f(1073676289, 32767); -x = 32768; -f(0, 0); -f(32768, 1); -f(65536, 2); -f(98304, 3); -f(131072, 4); -f(163840, 5); -f(229376, 7); -f(262144, 8); -f(294912, 9); -f(491520, 15); -f(524288, 16); -f(557056, 17); -f(1015808, 31); -f(1048576, 32); -f(1081344, 33); -f(2064384, 63); -f(2097152, 64); -f(2129920, 65); -f(4161536, 127); -f(4194304, 128); -f(4227072, 129); -f(8355840, 255); -f(8388608, 256); -f(8421376, 257); -f(16744448, 511); -f(16777216, 512); -f(16809984, 513); -f(33521664, 1023); -f(33554432, 1024); -f(33587200, 1025); -f(67076096, 2047); -f(67108864, 2048); -f(67141632, 2049); -f(134184960, 4095); -f(134217728, 4096); -f(134250496, 4097); -f(268402688, 8191); -f(268435456, 8192); -f(268468224, 8193); -f(536838144, 16383); -f(536870912, 16384); -f(536903680, 16385); -f(1073709056, 32767); -f(1073741824, 32768); -x = 32769; -f(0, 0); -f(32769, 1); -f(65538, 2); -f(98307, 3); -f(131076, 4); -f(163845, 5); -f(229383, 7); -f(262152, 8); -f(294921, 9); -f(491535, 15); -f(524304, 16); -f(557073, 17); -f(1015839, 31); -f(1048608, 32); -f(1081377, 33); -f(2064447, 63); -f(2097216, 64); -f(2129985, 65); -f(4161663, 127); -f(4194432, 128); -f(4227201, 129); -f(8356095, 255); -f(8388864, 256); -f(8421633, 257); -f(16744959, 511); -f(16777728, 512); -f(16810497, 513); -f(33522687, 1023); -f(33555456, 1024); -f(33588225, 1025); -f(67078143, 2047); -f(67110912, 2048); -f(67143681, 2049); -f(134189055, 4095); -f(134221824, 4096); -f(134254593, 4097); -f(268410879, 8191); -f(268443648, 8192); -f(268476417, 8193); -f(536854527, 16383); -f(536887296, 16384); -f(536920065, 16385); -f(1073741823, 32767); -f(1073774592, 32768); -f(1073807361, 32769); -x = 65535; -f(0, 0); -f(65535, 1); -f(131070, 2); -f(196605, 3); -f(262140, 4); -f(327675, 5); -f(458745, 7); -f(524280, 8); -f(589815, 9); -f(983025, 15); -f(1048560, 16); -f(1114095, 17); -f(2031585, 31); -f(2097120, 32); -f(2162655, 33); -f(4128705, 63); -f(4194240, 64); -f(4259775, 65); -f(8322945, 127); -f(8388480, 128); -f(8454015, 129); -f(16711425, 255); -f(16776960, 256); -f(16842495, 257); -f(33488385, 511); -f(33553920, 512); -f(33619455, 513); -f(67042305, 1023); -f(67107840, 1024); -f(67173375, 1025); -f(134150145, 2047); -f(134215680, 2048); -f(134281215, 2049); -f(268365825, 4095); -f(268431360, 4096); -f(268496895, 4097); -f(536797185, 8191); -f(536862720, 8192); -f(536928255, 8193); -f(1073659905, 16383); -f(1073725440, 16384); -f(1073790975, 16385); -f(2147385345, 32767); -f(2147450880, 32768); -f(2147516415, 32769); -f(4294836225, 65535); -x = 65536; -f(0, 0); -f(65536, 1); -f(131072, 2); -f(196608, 3); -f(262144, 4); -f(327680, 5); -f(458752, 7); -f(524288, 8); -f(589824, 9); -f(983040, 15); -f(1048576, 16); -f(1114112, 17); -f(2031616, 31); -f(2097152, 32); -f(2162688, 33); -f(4128768, 63); -f(4194304, 64); -f(4259840, 65); -f(8323072, 127); -f(8388608, 128); -f(8454144, 129); -f(16711680, 255); -f(16777216, 256); -f(16842752, 257); -f(33488896, 511); -f(33554432, 512); -f(33619968, 513); -f(67043328, 1023); -f(67108864, 1024); -f(67174400, 1025); -f(134152192, 2047); -f(134217728, 2048); -f(134283264, 2049); -f(268369920, 4095); -f(268435456, 4096); -f(268500992, 4097); -f(536805376, 8191); -f(536870912, 8192); -f(536936448, 8193); -f(1073676288, 16383); -f(1073741824, 16384); -f(1073807360, 16385); -f(2147418112, 32767); -f(2147483648, 32768); -f(2147549184, 32769); -f(4294901760, 65535); -f(4294967296, 65536); -x = 65537; -f(0, 0); -f(65537, 1); -f(131074, 2); -f(196611, 3); -f(262148, 4); -f(327685, 5); -f(458759, 7); -f(524296, 8); -f(589833, 9); -f(983055, 15); -f(1048592, 16); -f(1114129, 17); -f(2031647, 31); -f(2097184, 32); -f(2162721, 33); -f(4128831, 63); -f(4194368, 64); -f(4259905, 65); -f(8323199, 127); -f(8388736, 128); -f(8454273, 129); -f(16711935, 255); -f(16777472, 256); -f(16843009, 257); -f(33489407, 511); -f(33554944, 512); -f(33620481, 513); -f(67044351, 1023); -f(67109888, 1024); -f(67175425, 1025); -f(134154239, 2047); -f(134219776, 2048); -f(134285313, 2049); -f(268374015, 4095); -f(268439552, 4096); -f(268505089, 4097); -f(536813567, 8191); -f(536879104, 8192); -f(536944641, 8193); -f(1073692671, 16383); -f(1073758208, 16384); -f(1073823745, 16385); -f(2147450879, 32767); -f(2147516416, 32768); -f(2147581953, 32769); -f(4294967295, 65535); -f(4295032832, 65536); -f(4295098369, 65537); -x = 131071; -f(0, 0); -f(131071, 1); -f(262142, 2); -f(393213, 3); -f(524284, 4); -f(655355, 5); -f(917497, 7); -f(1048568, 8); -f(1179639, 9); -f(1966065, 15); -f(2097136, 16); -f(2228207, 17); -f(4063201, 31); -f(4194272, 32); -f(4325343, 33); -f(8257473, 63); -f(8388544, 64); -f(8519615, 65); -f(16646017, 127); -f(16777088, 128); -f(16908159, 129); -f(33423105, 255); -f(33554176, 256); -f(33685247, 257); -f(66977281, 511); -f(67108352, 512); -f(67239423, 513); -f(134085633, 1023); -f(134216704, 1024); -f(134347775, 1025); -f(268302337, 2047); -f(268433408, 2048); -f(268564479, 2049); -f(536735745, 4095); -f(536866816, 4096); -f(536997887, 4097); -f(1073602561, 8191); -f(1073733632, 8192); -f(1073864703, 8193); -f(2147336193, 16383); -f(2147467264, 16384); -f(2147598335, 16385); -f(4294803457, 32767); -f(4294934528, 32768); -f(4295065599, 32769); -f(8589737985, 65535); -f(8589869056, 65536); -f(8590000127, 65537); -f(17179607041, 131071); -x = 131072; -f(0, 0); -f(131072, 1); -f(262144, 2); -f(393216, 3); -f(524288, 4); -f(655360, 5); -f(917504, 7); -f(1048576, 8); -f(1179648, 9); -f(1966080, 15); -f(2097152, 16); -f(2228224, 17); -f(4063232, 31); -f(4194304, 32); -f(4325376, 33); -f(8257536, 63); -f(8388608, 64); -f(8519680, 65); -f(16646144, 127); -f(16777216, 128); -f(16908288, 129); -f(33423360, 255); -f(33554432, 256); -f(33685504, 257); -f(66977792, 511); -f(67108864, 512); -f(67239936, 513); -f(134086656, 1023); -f(134217728, 1024); -f(134348800, 1025); -f(268304384, 2047); -f(268435456, 2048); -f(268566528, 2049); -f(536739840, 4095); -f(536870912, 4096); -f(537001984, 4097); -f(1073610752, 8191); -f(1073741824, 8192); -f(1073872896, 8193); -f(2147352576, 16383); -f(2147483648, 16384); -f(2147614720, 16385); -f(4294836224, 32767); -f(4294967296, 32768); -f(4295098368, 32769); -f(8589803520, 65535); -f(8589934592, 65536); -f(8590065664, 65537); -f(17179738112, 131071); -f(17179869184, 131072); -x = 131073; -f(0, 0); -f(131073, 1); -f(262146, 2); -f(393219, 3); -f(524292, 4); -f(655365, 5); -f(917511, 7); -f(1048584, 8); -f(1179657, 9); -f(1966095, 15); -f(2097168, 16); -f(2228241, 17); -f(4063263, 31); -f(4194336, 32); -f(4325409, 33); -f(8257599, 63); -f(8388672, 64); -f(8519745, 65); -f(16646271, 127); -f(16777344, 128); -f(16908417, 129); -f(33423615, 255); -f(33554688, 256); -f(33685761, 257); -f(66978303, 511); -f(67109376, 512); -f(67240449, 513); -f(134087679, 1023); -f(134218752, 1024); -f(134349825, 1025); -f(268306431, 2047); -f(268437504, 2048); -f(268568577, 2049); -f(536743935, 4095); -f(536875008, 4096); -f(537006081, 4097); -f(1073618943, 8191); -f(1073750016, 8192); -f(1073881089, 8193); -f(2147368959, 16383); -f(2147500032, 16384); -f(2147631105, 16385); -f(4294868991, 32767); -f(4295000064, 32768); -f(4295131137, 32769); -f(8589869055, 65535); -f(8590000128, 65536); -f(8590131201, 65537); -f(17179869183, 131071); -f(17180000256, 131072); -f(17180131329, 131073); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part4.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part4.js deleted file mode 100644 index de9f9835b2b..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part4.js +++ /dev/null @@ -1,509 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 262143; -f(0, 0); -f(262143, 1); -f(524286, 2); -f(786429, 3); -f(1048572, 4); -f(1310715, 5); -f(1835001, 7); -f(2097144, 8); -f(2359287, 9); -f(3932145, 15); -f(4194288, 16); -f(4456431, 17); -f(8126433, 31); -f(8388576, 32); -f(8650719, 33); -f(16515009, 63); -f(16777152, 64); -f(17039295, 65); -f(33292161, 127); -f(33554304, 128); -f(33816447, 129); -f(66846465, 255); -f(67108608, 256); -f(67370751, 257); -f(133955073, 511); -f(134217216, 512); -f(134479359, 513); -f(268172289, 1023); -f(268434432, 1024); -f(268696575, 1025); -f(536606721, 2047); -f(536868864, 2048); -f(537131007, 2049); -f(1073475585, 4095); -f(1073737728, 4096); -f(1073999871, 4097); -f(2147213313, 8191); -f(2147475456, 8192); -f(2147737599, 8193); -f(4294688769, 16383); -f(4294950912, 16384); -f(4295213055, 16385); -f(8589639681, 32767); -f(8589901824, 32768); -f(8590163967, 32769); -f(17179541505, 65535); -f(17179803648, 65536); -f(17180065791, 65537); -f(34359345153, 131071); -f(34359607296, 131072); -f(34359869439, 131073); -f(68718952449, 262143); -x = 262144; -f(0, 0); -f(262144, 1); -f(524288, 2); -f(786432, 3); -f(1048576, 4); -f(1310720, 5); -f(1835008, 7); -f(2097152, 8); -f(2359296, 9); -f(3932160, 15); -f(4194304, 16); -f(4456448, 17); -f(8126464, 31); -f(8388608, 32); -f(8650752, 33); -f(16515072, 63); -f(16777216, 64); -f(17039360, 65); -f(33292288, 127); -f(33554432, 128); -f(33816576, 129); -f(66846720, 255); -f(67108864, 256); -f(67371008, 257); -f(133955584, 511); -f(134217728, 512); -f(134479872, 513); -f(268173312, 1023); -f(268435456, 1024); -f(268697600, 1025); -f(536608768, 2047); -f(536870912, 2048); -f(537133056, 2049); -f(1073479680, 4095); -f(1073741824, 4096); -f(1074003968, 4097); -f(2147221504, 8191); -f(2147483648, 8192); -f(2147745792, 8193); -f(4294705152, 16383); -f(4294967296, 16384); -f(4295229440, 16385); -f(8589672448, 32767); -f(8589934592, 32768); -f(8590196736, 32769); -f(17179607040, 65535); -f(17179869184, 65536); -f(17180131328, 65537); -f(34359476224, 131071); -f(34359738368, 131072); -f(34360000512, 131073); -f(68719214592, 262143); -f(68719476736, 262144); -x = 262145; -f(0, 0); -f(262145, 1); -f(524290, 2); -f(786435, 3); -f(1048580, 4); -f(1310725, 5); -f(1835015, 7); -f(2097160, 8); -f(2359305, 9); -f(3932175, 15); -f(4194320, 16); -f(4456465, 17); -f(8126495, 31); -f(8388640, 32); -f(8650785, 33); -f(16515135, 63); -f(16777280, 64); -f(17039425, 65); -f(33292415, 127); -f(33554560, 128); -f(33816705, 129); -f(66846975, 255); -f(67109120, 256); -f(67371265, 257); -f(133956095, 511); -f(134218240, 512); -f(134480385, 513); -f(268174335, 1023); -f(268436480, 1024); -f(268698625, 1025); -f(536610815, 2047); -f(536872960, 2048); -f(537135105, 2049); -f(1073483775, 4095); -f(1073745920, 4096); -f(1074008065, 4097); -f(2147229695, 8191); -f(2147491840, 8192); -f(2147753985, 8193); -f(4294721535, 16383); -f(4294983680, 16384); -f(4295245825, 16385); -f(8589705215, 32767); -f(8589967360, 32768); -f(8590229505, 32769); -f(17179672575, 65535); -f(17179934720, 65536); -f(17180196865, 65537); -f(34359607295, 131071); -f(34359869440, 131072); -f(34360131585, 131073); -f(68719476735, 262143); -f(68719738880, 262144); -f(68720001025, 262145); -x = 524287; -f(0, 0); -f(524287, 1); -f(1048574, 2); -f(1572861, 3); -f(2097148, 4); -f(2621435, 5); -f(3670009, 7); -f(4194296, 8); -f(4718583, 9); -f(7864305, 15); -f(8388592, 16); -f(8912879, 17); -f(16252897, 31); -f(16777184, 32); -f(17301471, 33); -f(33030081, 63); -f(33554368, 64); -f(34078655, 65); -f(66584449, 127); -f(67108736, 128); -f(67633023, 129); -f(133693185, 255); -f(134217472, 256); -f(134741759, 257); -f(267910657, 511); -f(268434944, 512); -f(268959231, 513); -f(536345601, 1023); -f(536869888, 1024); -f(537394175, 1025); -f(1073215489, 2047); -f(1073739776, 2048); -f(1074264063, 2049); -f(2146955265, 4095); -f(2147479552, 4096); -f(2148003839, 4097); -f(4294434817, 8191); -f(4294959104, 8192); -f(4295483391, 8193); -f(8589393921, 16383); -f(8589918208, 16384); -f(8590442495, 16385); -f(17179312129, 32767); -f(17179836416, 32768); -f(17180360703, 32769); -f(34359148545, 65535); -f(34359672832, 65536); -f(34360197119, 65537); -f(68718821377, 131071); -f(68719345664, 131072); -f(68719869951, 131073); -f(137438167041, 262143); -f(137438691328, 262144); -f(137439215615, 262145); -f(274876858369, 524287); -x = 524288; -f(0, 0); -f(524288, 1); -f(1048576, 2); -f(1572864, 3); -f(2097152, 4); -f(2621440, 5); -f(3670016, 7); -f(4194304, 8); -f(4718592, 9); -f(7864320, 15); -f(8388608, 16); -f(8912896, 17); -f(16252928, 31); -f(16777216, 32); -f(17301504, 33); -f(33030144, 63); -f(33554432, 64); -f(34078720, 65); -f(66584576, 127); -f(67108864, 128); -f(67633152, 129); -f(133693440, 255); -f(134217728, 256); -f(134742016, 257); -f(267911168, 511); -f(268435456, 512); -f(268959744, 513); -f(536346624, 1023); -f(536870912, 1024); -f(537395200, 1025); -f(1073217536, 2047); -f(1073741824, 2048); -f(1074266112, 2049); -f(2146959360, 4095); -f(2147483648, 4096); -f(2148007936, 4097); -f(4294443008, 8191); -f(4294967296, 8192); -f(4295491584, 8193); -f(8589410304, 16383); -f(8589934592, 16384); -f(8590458880, 16385); -f(17179344896, 32767); -f(17179869184, 32768); -f(17180393472, 32769); -f(34359214080, 65535); -f(34359738368, 65536); -f(34360262656, 65537); -f(68718952448, 131071); -f(68719476736, 131072); -f(68720001024, 131073); -f(137438429184, 262143); -f(137438953472, 262144); -f(137439477760, 262145); -f(274877382656, 524287); -f(274877906944, 524288); -x = 524289; -f(0, 0); -f(524289, 1); -f(1048578, 2); -f(1572867, 3); -f(2097156, 4); -f(2621445, 5); -f(3670023, 7); -f(4194312, 8); -f(4718601, 9); -f(7864335, 15); -f(8388624, 16); -f(8912913, 17); -f(16252959, 31); -f(16777248, 32); -f(17301537, 33); -f(33030207, 63); -f(33554496, 64); -f(34078785, 65); -f(66584703, 127); -f(67108992, 128); -f(67633281, 129); -f(133693695, 255); -f(134217984, 256); -f(134742273, 257); -f(267911679, 511); -f(268435968, 512); -f(268960257, 513); -f(536347647, 1023); -f(536871936, 1024); -f(537396225, 1025); -f(1073219583, 2047); -f(1073743872, 2048); -f(1074268161, 2049); -f(2146963455, 4095); -f(2147487744, 4096); -f(2148012033, 4097); -f(4294451199, 8191); -f(4294975488, 8192); -f(4295499777, 8193); -f(8589426687, 16383); -f(8589950976, 16384); -f(8590475265, 16385); -f(17179377663, 32767); -f(17179901952, 32768); -f(17180426241, 32769); -f(34359279615, 65535); -f(34359803904, 65536); -f(34360328193, 65537); -f(68719083519, 131071); -f(68719607808, 131072); -f(68720132097, 131073); -f(137438691327, 262143); -f(137439215616, 262144); -f(137439739905, 262145); -f(274877906943, 524287); -f(274878431232, 524288); -f(274878955521, 524289); -x = 1048575; -f(0, 0); -f(1048575, 1); -f(2097150, 2); -f(3145725, 3); -f(4194300, 4); -f(5242875, 5); -f(7340025, 7); -f(8388600, 8); -f(9437175, 9); -f(15728625, 15); -f(16777200, 16); -f(17825775, 17); -f(32505825, 31); -f(33554400, 32); -f(34602975, 33); -f(66060225, 63); -f(67108800, 64); -f(68157375, 65); -f(133169025, 127); -f(134217600, 128); -f(135266175, 129); -f(267386625, 255); -f(268435200, 256); -f(269483775, 257); -f(535821825, 511); -f(536870400, 512); -f(537918975, 513); -f(1072692225, 1023); -f(1073740800, 1024); -f(1074789375, 1025); -f(2146433025, 2047); -f(2147481600, 2048); -f(2148530175, 2049); -f(4293914625, 4095); -f(4294963200, 4096); -f(4296011775, 4097); -f(8588877825, 8191); -f(8589926400, 8192); -f(8590974975, 8193); -f(17178804225, 16383); -f(17179852800, 16384); -f(17180901375, 16385); -f(34358657025, 32767); -f(34359705600, 32768); -f(34360754175, 32769); -f(68718362625, 65535); -f(68719411200, 65536); -f(68720459775, 65537); -f(137437773825, 131071); -f(137438822400, 131072); -f(137439870975, 131073); -f(274876596225, 262143); -f(274877644800, 262144); -f(274878693375, 262145); -f(549754241025, 524287); -f(549755289600, 524288); -f(549756338175, 524289); -f(1099509530625, 1048575); -x = 1048576; -f(0, 0); -f(1048576, 1); -f(2097152, 2); -f(3145728, 3); -f(4194304, 4); -f(5242880, 5); -f(7340032, 7); -f(8388608, 8); -f(9437184, 9); -f(15728640, 15); -f(16777216, 16); -f(17825792, 17); -f(32505856, 31); -f(33554432, 32); -f(34603008, 33); -f(66060288, 63); -f(67108864, 64); -f(68157440, 65); -f(133169152, 127); -f(134217728, 128); -f(135266304, 129); -f(267386880, 255); -f(268435456, 256); -f(269484032, 257); -f(535822336, 511); -f(536870912, 512); -f(537919488, 513); -f(1072693248, 1023); -f(1073741824, 1024); -f(1074790400, 1025); -f(2146435072, 2047); -f(2147483648, 2048); -f(2148532224, 2049); -f(4293918720, 4095); -f(4294967296, 4096); -f(4296015872, 4097); -f(8588886016, 8191); -f(8589934592, 8192); -f(8590983168, 8193); -f(17178820608, 16383); -f(17179869184, 16384); -f(17180917760, 16385); -f(34358689792, 32767); -f(34359738368, 32768); -f(34360786944, 32769); -f(68718428160, 65535); -f(68719476736, 65536); -f(68720525312, 65537); -f(137437904896, 131071); -f(137438953472, 131072); -f(137440002048, 131073); -f(274876858368, 262143); -f(274877906944, 262144); -f(274878955520, 262145); -f(549754765312, 524287); -f(549755813888, 524288); -f(549756862464, 524289); -f(1099510579200, 1048575); -f(1099511627776, 1048576); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part5.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part5.js deleted file mode 100644 index e92998575be..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part5.js +++ /dev/null @@ -1,505 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 1048577; -f(0, 0); -f(1048577, 1); -f(2097154, 2); -f(3145731, 3); -f(4194308, 4); -f(5242885, 5); -f(7340039, 7); -f(8388616, 8); -f(9437193, 9); -f(15728655, 15); -f(16777232, 16); -f(17825809, 17); -f(32505887, 31); -f(33554464, 32); -f(34603041, 33); -f(66060351, 63); -f(67108928, 64); -f(68157505, 65); -f(133169279, 127); -f(134217856, 128); -f(135266433, 129); -f(267387135, 255); -f(268435712, 256); -f(269484289, 257); -f(535822847, 511); -f(536871424, 512); -f(537920001, 513); -f(1072694271, 1023); -f(1073742848, 1024); -f(1074791425, 1025); -f(2146437119, 2047); -f(2147485696, 2048); -f(2148534273, 2049); -f(4293922815, 4095); -f(4294971392, 4096); -f(4296019969, 4097); -f(8588894207, 8191); -f(8589942784, 8192); -f(8590991361, 8193); -f(17178836991, 16383); -f(17179885568, 16384); -f(17180934145, 16385); -f(34358722559, 32767); -f(34359771136, 32768); -f(34360819713, 32769); -f(68718493695, 65535); -f(68719542272, 65536); -f(68720590849, 65537); -f(137438035967, 131071); -f(137439084544, 131072); -f(137440133121, 131073); -f(274877120511, 262143); -f(274878169088, 262144); -f(274879217665, 262145); -f(549755289599, 524287); -f(549756338176, 524288); -f(549757386753, 524289); -f(1099511627775, 1048575); -f(1099512676352, 1048576); -f(1099513724929, 1048577); -x = 2097151; -f(0, 0); -f(2097151, 1); -f(4194302, 2); -f(6291453, 3); -f(8388604, 4); -f(10485755, 5); -f(14680057, 7); -f(16777208, 8); -f(18874359, 9); -f(31457265, 15); -f(33554416, 16); -f(35651567, 17); -f(65011681, 31); -f(67108832, 32); -f(69205983, 33); -f(132120513, 63); -f(134217664, 64); -f(136314815, 65); -f(266338177, 127); -f(268435328, 128); -f(270532479, 129); -f(534773505, 255); -f(536870656, 256); -f(538967807, 257); -f(1071644161, 511); -f(1073741312, 512); -f(1075838463, 513); -f(2145385473, 1023); -f(2147482624, 1024); -f(2149579775, 1025); -f(4292868097, 2047); -f(4294965248, 2048); -f(4297062399, 2049); -f(8587833345, 4095); -f(8589930496, 4096); -f(8592027647, 4097); -f(17177763841, 8191); -f(17179860992, 8192); -f(17181958143, 8193); -f(34357624833, 16383); -f(34359721984, 16384); -f(34361819135, 16385); -f(68717346817, 32767); -f(68719443968, 32768); -f(68721541119, 32769); -f(137436790785, 65535); -f(137438887936, 65536); -f(137440985087, 65537); -f(274875678721, 131071); -f(274877775872, 131072); -f(274879873023, 131073); -f(549753454593, 262143); -f(549755551744, 262144); -f(549757648895, 262145); -f(1099509006337, 524287); -f(1099511103488, 524288); -f(1099513200639, 524289); -f(2199020109825, 1048575); -f(2199022206976, 1048576); -f(2199024304127, 1048577); -f(4398042316801, 2097151); -x = 2097152; -f(0, 0); -f(2097152, 1); -f(4194304, 2); -f(6291456, 3); -f(8388608, 4); -f(10485760, 5); -f(14680064, 7); -f(16777216, 8); -f(18874368, 9); -f(31457280, 15); -f(33554432, 16); -f(35651584, 17); -f(65011712, 31); -f(67108864, 32); -f(69206016, 33); -f(132120576, 63); -f(134217728, 64); -f(136314880, 65); -f(266338304, 127); -f(268435456, 128); -f(270532608, 129); -f(534773760, 255); -f(536870912, 256); -f(538968064, 257); -f(1071644672, 511); -f(1073741824, 512); -f(1075838976, 513); -f(2145386496, 1023); -f(2147483648, 1024); -f(2149580800, 1025); -f(4292870144, 2047); -f(4294967296, 2048); -f(4297064448, 2049); -f(8587837440, 4095); -f(8589934592, 4096); -f(8592031744, 4097); -f(17177772032, 8191); -f(17179869184, 8192); -f(17181966336, 8193); -f(34357641216, 16383); -f(34359738368, 16384); -f(34361835520, 16385); -f(68717379584, 32767); -f(68719476736, 32768); -f(68721573888, 32769); -f(137436856320, 65535); -f(137438953472, 65536); -f(137441050624, 65537); -f(274875809792, 131071); -f(274877906944, 131072); -f(274880004096, 131073); -f(549753716736, 262143); -f(549755813888, 262144); -f(549757911040, 262145); -f(1099509530624, 524287); -f(1099511627776, 524288); -f(1099513724928, 524289); -f(2199021158400, 1048575); -f(2199023255552, 1048576); -f(2199025352704, 1048577); -f(4398044413952, 2097151); -f(4398046511104, 2097152); -x = 2097153; -f(0, 0); -f(2097153, 1); -f(4194306, 2); -f(6291459, 3); -f(8388612, 4); -f(10485765, 5); -f(14680071, 7); -f(16777224, 8); -f(18874377, 9); -f(31457295, 15); -f(33554448, 16); -f(35651601, 17); -f(65011743, 31); -f(67108896, 32); -f(69206049, 33); -f(132120639, 63); -f(134217792, 64); -f(136314945, 65); -f(266338431, 127); -f(268435584, 128); -f(270532737, 129); -f(534774015, 255); -f(536871168, 256); -f(538968321, 257); -f(1071645183, 511); -f(1073742336, 512); -f(1075839489, 513); -f(2145387519, 1023); -f(2147484672, 1024); -f(2149581825, 1025); -f(4292872191, 2047); -f(4294969344, 2048); -f(4297066497, 2049); -f(8587841535, 4095); -f(8589938688, 4096); -f(8592035841, 4097); -f(17177780223, 8191); -f(17179877376, 8192); -f(17181974529, 8193); -f(34357657599, 16383); -f(34359754752, 16384); -f(34361851905, 16385); -f(68717412351, 32767); -f(68719509504, 32768); -f(68721606657, 32769); -f(137436921855, 65535); -f(137439019008, 65536); -f(137441116161, 65537); -f(274875940863, 131071); -f(274878038016, 131072); -f(274880135169, 131073); -f(549753978879, 262143); -f(549756076032, 262144); -f(549758173185, 262145); -f(1099510054911, 524287); -f(1099512152064, 524288); -f(1099514249217, 524289); -f(2199022206975, 1048575); -f(2199024304128, 1048576); -f(2199026401281, 1048577); -f(4398046511103, 2097151); -f(4398048608256, 2097152); -f(4398050705409, 2097153); -x = 4194303; -f(0, 0); -f(4194303, 1); -f(8388606, 2); -f(12582909, 3); -f(16777212, 4); -f(20971515, 5); -f(29360121, 7); -f(33554424, 8); -f(37748727, 9); -f(62914545, 15); -f(67108848, 16); -f(71303151, 17); -f(130023393, 31); -f(134217696, 32); -f(138411999, 33); -f(264241089, 63); -f(268435392, 64); -f(272629695, 65); -f(532676481, 127); -f(536870784, 128); -f(541065087, 129); -f(1069547265, 255); -f(1073741568, 256); -f(1077935871, 257); -f(2143288833, 511); -f(2147483136, 512); -f(2151677439, 513); -f(4290771969, 1023); -f(4294966272, 1024); -f(4299160575, 1025); -f(8585738241, 2047); -f(8589932544, 2048); -f(8594126847, 2049); -f(17175670785, 4095); -f(17179865088, 4096); -f(17184059391, 4097); -f(34355535873, 8191); -f(34359730176, 8192); -f(34363924479, 8193); -f(68715266049, 16383); -f(68719460352, 16384); -f(68723654655, 16385); -f(137434726401, 32767); -f(137438920704, 32768); -f(137443115007, 32769); -f(274873647105, 65535); -f(274877841408, 65536); -f(274882035711, 65537); -f(549751488513, 131071); -f(549755682816, 131072); -f(549759877119, 131073); -f(1099507171329, 262143); -f(1099511365632, 262144); -f(1099515559935, 262145); -f(2199018536961, 524287); -f(2199022731264, 524288); -f(2199026925567, 524289); -f(4398041268225, 1048575); -f(4398045462528, 1048576); -f(4398049656831, 1048577); -f(8796086730753, 2097151); -f(8796090925056, 2097152); -f(8796095119359, 2097153); -f(17592177655809, 4194303); -x = 4194304; -f(0, 0); -f(4194304, 1); -f(8388608, 2); -f(12582912, 3); -f(16777216, 4); -f(20971520, 5); -f(29360128, 7); -f(33554432, 8); -f(37748736, 9); -f(62914560, 15); -f(67108864, 16); -f(71303168, 17); -f(130023424, 31); -f(134217728, 32); -f(138412032, 33); -f(264241152, 63); -f(268435456, 64); -f(272629760, 65); -f(532676608, 127); -f(536870912, 128); -f(541065216, 129); -f(1069547520, 255); -f(1073741824, 256); -f(1077936128, 257); -f(2143289344, 511); -f(2147483648, 512); -f(2151677952, 513); -f(4290772992, 1023); -f(4294967296, 1024); -f(4299161600, 1025); -f(8585740288, 2047); -f(8589934592, 2048); -f(8594128896, 2049); -f(17175674880, 4095); -f(17179869184, 4096); -f(17184063488, 4097); -f(34355544064, 8191); -f(34359738368, 8192); -f(34363932672, 8193); -f(68715282432, 16383); -f(68719476736, 16384); -f(68723671040, 16385); -f(137434759168, 32767); -f(137438953472, 32768); -f(137443147776, 32769); -f(274873712640, 65535); -f(274877906944, 65536); -f(274882101248, 65537); -f(549751619584, 131071); -f(549755813888, 131072); -f(549760008192, 131073); -f(1099507433472, 262143); -f(1099511627776, 262144); -f(1099515822080, 262145); -f(2199019061248, 524287); -f(2199023255552, 524288); -f(2199027449856, 524289); -f(4398042316800, 1048575); -f(4398046511104, 1048576); -f(4398050705408, 1048577); -f(8796088827904, 2097151); -f(8796093022208, 2097152); -f(8796097216512, 2097153); -f(17592181850112, 4194303); -f(17592186044416, 4194304); -x = 4194305; -f(0, 0); -f(4194305, 1); -f(8388610, 2); -f(12582915, 3); -f(16777220, 4); -f(20971525, 5); -f(29360135, 7); -f(33554440, 8); -f(37748745, 9); -f(62914575, 15); -f(67108880, 16); -f(71303185, 17); -f(130023455, 31); -f(134217760, 32); -f(138412065, 33); -f(264241215, 63); -f(268435520, 64); -f(272629825, 65); -f(532676735, 127); -f(536871040, 128); -f(541065345, 129); -f(1069547775, 255); -f(1073742080, 256); -f(1077936385, 257); -f(2143289855, 511); -f(2147484160, 512); -f(2151678465, 513); -f(4290774015, 1023); -f(4294968320, 1024); -f(4299162625, 1025); -f(8585742335, 2047); -f(8589936640, 2048); -f(8594130945, 2049); -f(17175678975, 4095); -f(17179873280, 4096); -f(17184067585, 4097); -f(34355552255, 8191); -f(34359746560, 8192); -f(34363940865, 8193); -f(68715298815, 16383); -f(68719493120, 16384); -f(68723687425, 16385); -f(137434791935, 32767); -f(137438986240, 32768); -f(137443180545, 32769); -f(274873778175, 65535); -f(274877972480, 65536); -f(274882166785, 65537); -f(549751750655, 131071); -f(549755944960, 131072); -f(549760139265, 131073); -f(1099507695615, 262143); -f(1099511889920, 262144); -f(1099516084225, 262145); -f(2199019585535, 524287); -f(2199023779840, 524288); -f(2199027974145, 524289); -f(4398043365375, 1048575); -f(4398047559680, 1048576); -f(4398051753985, 1048577); -f(8796090925055, 2097151); -f(8796095119360, 2097152); -f(8796099313665, 2097153); -f(17592186044415, 4194303); -f(17592190238720, 4194304); -f(17592194433025, 4194305); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part6.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part6.js deleted file mode 100644 index fb2b2ce8e5c..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part6.js +++ /dev/null @@ -1,554 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 8388607; -f(0, 0); -f(8388607, 1); -f(16777214, 2); -f(25165821, 3); -f(33554428, 4); -f(41943035, 5); -f(58720249, 7); -f(67108856, 8); -f(75497463, 9); -f(125829105, 15); -f(134217712, 16); -f(142606319, 17); -f(260046817, 31); -f(268435424, 32); -f(276824031, 33); -f(528482241, 63); -f(536870848, 64); -f(545259455, 65); -f(1065353089, 127); -f(1073741696, 128); -f(1082130303, 129); -f(2139094785, 255); -f(2147483392, 256); -f(2155871999, 257); -f(4286578177, 511); -f(4294966784, 512); -f(4303355391, 513); -f(8581544961, 1023); -f(8589933568, 1024); -f(8598322175, 1025); -f(17171478529, 2047); -f(17179867136, 2048); -f(17188255743, 2049); -f(34351345665, 4095); -f(34359734272, 4096); -f(34368122879, 4097); -f(68711079937, 8191); -f(68719468544, 8192); -f(68727857151, 8193); -f(137430548481, 16383); -f(137438937088, 16384); -f(137447325695, 16385); -f(274869485569, 32767); -f(274877874176, 32768); -f(274886262783, 32769); -f(549747359745, 65535); -f(549755748352, 65536); -f(549764136959, 65537); -f(1099503108097, 131071); -f(1099511496704, 131072); -f(1099519885311, 131073); -f(2199014604801, 262143); -f(2199022993408, 262144); -f(2199031382015, 262145); -f(4398037598209, 524287); -f(4398045986816, 524288); -f(4398054375423, 524289); -f(8796083585025, 1048575); -f(8796091973632, 1048576); -f(8796100362239, 1048577); -f(17592175558657, 2097151); -f(17592183947264, 2097152); -f(17592192335871, 2097153); -f(35184359505921, 4194303); -f(35184367894528, 4194304); -f(35184376283135, 4194305); -f(70368727400449, 8388607); -x = 8388608; -f(0, 0); -f(8388608, 1); -f(16777216, 2); -f(25165824, 3); -f(33554432, 4); -f(41943040, 5); -f(58720256, 7); -f(67108864, 8); -f(75497472, 9); -f(125829120, 15); -f(134217728, 16); -f(142606336, 17); -f(260046848, 31); -f(268435456, 32); -f(276824064, 33); -f(528482304, 63); -f(536870912, 64); -f(545259520, 65); -f(1065353216, 127); -f(1073741824, 128); -f(1082130432, 129); -f(2139095040, 255); -f(2147483648, 256); -f(2155872256, 257); -f(4286578688, 511); -f(4294967296, 512); -f(4303355904, 513); -f(8581545984, 1023); -f(8589934592, 1024); -f(8598323200, 1025); -f(17171480576, 2047); -f(17179869184, 2048); -f(17188257792, 2049); -f(34351349760, 4095); -f(34359738368, 4096); -f(34368126976, 4097); -f(68711088128, 8191); -f(68719476736, 8192); -f(68727865344, 8193); -f(137430564864, 16383); -f(137438953472, 16384); -f(137447342080, 16385); -f(274869518336, 32767); -f(274877906944, 32768); -f(274886295552, 32769); -f(549747425280, 65535); -f(549755813888, 65536); -f(549764202496, 65537); -f(1099503239168, 131071); -f(1099511627776, 131072); -f(1099520016384, 131073); -f(2199014866944, 262143); -f(2199023255552, 262144); -f(2199031644160, 262145); -f(4398038122496, 524287); -f(4398046511104, 524288); -f(4398054899712, 524289); -f(8796084633600, 1048575); -f(8796093022208, 1048576); -f(8796101410816, 1048577); -f(17592177655808, 2097151); -f(17592186044416, 2097152); -f(17592194433024, 2097153); -f(35184363700224, 4194303); -f(35184372088832, 4194304); -f(35184380477440, 4194305); -f(70368735789056, 8388607); -f(70368744177664, 8388608); -x = 8388609; -f(0, 0); -f(8388609, 1); -f(16777218, 2); -f(25165827, 3); -f(33554436, 4); -f(41943045, 5); -f(58720263, 7); -f(67108872, 8); -f(75497481, 9); -f(125829135, 15); -f(134217744, 16); -f(142606353, 17); -f(260046879, 31); -f(268435488, 32); -f(276824097, 33); -f(528482367, 63); -f(536870976, 64); -f(545259585, 65); -f(1065353343, 127); -f(1073741952, 128); -f(1082130561, 129); -f(2139095295, 255); -f(2147483904, 256); -f(2155872513, 257); -f(4286579199, 511); -f(4294967808, 512); -f(4303356417, 513); -f(8581547007, 1023); -f(8589935616, 1024); -f(8598324225, 1025); -f(17171482623, 2047); -f(17179871232, 2048); -f(17188259841, 2049); -f(34351353855, 4095); -f(34359742464, 4096); -f(34368131073, 4097); -f(68711096319, 8191); -f(68719484928, 8192); -f(68727873537, 8193); -f(137430581247, 16383); -f(137438969856, 16384); -f(137447358465, 16385); -f(274869551103, 32767); -f(274877939712, 32768); -f(274886328321, 32769); -f(549747490815, 65535); -f(549755879424, 65536); -f(549764268033, 65537); -f(1099503370239, 131071); -f(1099511758848, 131072); -f(1099520147457, 131073); -f(2199015129087, 262143); -f(2199023517696, 262144); -f(2199031906305, 262145); -f(4398038646783, 524287); -f(4398047035392, 524288); -f(4398055424001, 524289); -f(8796085682175, 1048575); -f(8796094070784, 1048576); -f(8796102459393, 1048577); -f(17592179752959, 2097151); -f(17592188141568, 2097152); -f(17592196530177, 2097153); -f(35184367894527, 4194303); -f(35184376283136, 4194304); -f(35184384671745, 4194305); -f(70368744177663, 8388607); -f(70368752566272, 8388608); -f(70368760954881, 8388609); -x = 16777215; -f(0, 0); -f(16777215, 1); -f(33554430, 2); -f(50331645, 3); -f(67108860, 4); -f(83886075, 5); -f(117440505, 7); -f(134217720, 8); -f(150994935, 9); -f(251658225, 15); -f(268435440, 16); -f(285212655, 17); -f(520093665, 31); -f(536870880, 32); -f(553648095, 33); -f(1056964545, 63); -f(1073741760, 64); -f(1090518975, 65); -f(2130706305, 127); -f(2147483520, 128); -f(2164260735, 129); -f(4278189825, 255); -f(4294967040, 256); -f(4311744255, 257); -f(8573156865, 511); -f(8589934080, 512); -f(8606711295, 513); -f(17163090945, 1023); -f(17179868160, 1024); -f(17196645375, 1025); -f(34342959105, 2047); -f(34359736320, 2048); -f(34376513535, 2049); -f(68702695425, 4095); -f(68719472640, 4096); -f(68736249855, 4097); -f(137422168065, 8191); -f(137438945280, 8192); -f(137455722495, 8193); -f(274861113345, 16383); -f(274877890560, 16384); -f(274894667775, 16385); -f(549739003905, 32767); -f(549755781120, 32768); -f(549772558335, 32769); -f(1099494785025, 65535); -f(1099511562240, 65536); -f(1099528339455, 65537); -f(2199006347265, 131071); -f(2199023124480, 131072); -f(2199039901695, 131073); -f(4398029471745, 262143); -f(4398046248960, 262144); -f(4398063026175, 262145); -f(8796075720705, 524287); -f(8796092497920, 524288); -f(8796109275135, 524289); -f(17592168218625, 1048575); -f(17592184995840, 1048576); -f(17592201773055, 1048577); -f(35184353214465, 2097151); -f(35184369991680, 2097152); -f(35184386768895, 2097153); -f(70368723206145, 4194303); -f(70368739983360, 4194304); -f(70368756760575, 4194305); -f(140737463189505, 8388607); -f(140737479966720, 8388608); -f(140737496743935, 8388609); -f(281474943156225, 16777215); -x = 16777216; -f(0, 0); -f(16777216, 1); -f(33554432, 2); -f(50331648, 3); -f(67108864, 4); -f(83886080, 5); -f(117440512, 7); -f(134217728, 8); -f(150994944, 9); -f(251658240, 15); -f(268435456, 16); -f(285212672, 17); -f(520093696, 31); -f(536870912, 32); -f(553648128, 33); -f(1056964608, 63); -f(1073741824, 64); -f(1090519040, 65); -f(2130706432, 127); -f(2147483648, 128); -f(2164260864, 129); -f(4278190080, 255); -f(4294967296, 256); -f(4311744512, 257); -f(8573157376, 511); -f(8589934592, 512); -f(8606711808, 513); -f(17163091968, 1023); -f(17179869184, 1024); -f(17196646400, 1025); -f(34342961152, 2047); -f(34359738368, 2048); -f(34376515584, 2049); -f(68702699520, 4095); -f(68719476736, 4096); -f(68736253952, 4097); -f(137422176256, 8191); -f(137438953472, 8192); -f(137455730688, 8193); -f(274861129728, 16383); -f(274877906944, 16384); -f(274894684160, 16385); -f(549739036672, 32767); -f(549755813888, 32768); -f(549772591104, 32769); -f(1099494850560, 65535); -f(1099511627776, 65536); -f(1099528404992, 65537); -f(2199006478336, 131071); -f(2199023255552, 131072); -f(2199040032768, 131073); -f(4398029733888, 262143); -f(4398046511104, 262144); -f(4398063288320, 262145); -f(8796076244992, 524287); -f(8796093022208, 524288); -f(8796109799424, 524289); -f(17592169267200, 1048575); -f(17592186044416, 1048576); -f(17592202821632, 1048577); -f(35184355311616, 2097151); -f(35184372088832, 2097152); -f(35184388866048, 2097153); -f(70368727400448, 4194303); -f(70368744177664, 4194304); -f(70368760954880, 4194305); -f(140737471578112, 8388607); -f(140737488355328, 8388608); -f(140737505132544, 8388609); -f(281474959933440, 16777215); -f(281474976710656, 16777216); -x = 16777217; -f(0, 0); -f(16777217, 1); -f(33554434, 2); -f(50331651, 3); -f(67108868, 4); -f(83886085, 5); -f(117440519, 7); -f(134217736, 8); -f(150994953, 9); -f(251658255, 15); -f(268435472, 16); -f(285212689, 17); -f(520093727, 31); -f(536870944, 32); -f(553648161, 33); -f(1056964671, 63); -f(1073741888, 64); -f(1090519105, 65); -f(2130706559, 127); -f(2147483776, 128); -f(2164260993, 129); -f(4278190335, 255); -f(4294967552, 256); -f(4311744769, 257); -f(8573157887, 511); -f(8589935104, 512); -f(8606712321, 513); -f(17163092991, 1023); -f(17179870208, 1024); -f(17196647425, 1025); -f(34342963199, 2047); -f(34359740416, 2048); -f(34376517633, 2049); -f(68702703615, 4095); -f(68719480832, 4096); -f(68736258049, 4097); -f(137422184447, 8191); -f(137438961664, 8192); -f(137455738881, 8193); -f(274861146111, 16383); -f(274877923328, 16384); -f(274894700545, 16385); -f(549739069439, 32767); -f(549755846656, 32768); -f(549772623873, 32769); -f(1099494916095, 65535); -f(1099511693312, 65536); -f(1099528470529, 65537); -f(2199006609407, 131071); -f(2199023386624, 131072); -f(2199040163841, 131073); -f(4398029996031, 262143); -f(4398046773248, 262144); -f(4398063550465, 262145); -f(8796076769279, 524287); -f(8796093546496, 524288); -f(8796110323713, 524289); -f(17592170315775, 1048575); -f(17592187092992, 1048576); -f(17592203870209, 1048577); -f(35184357408767, 2097151); -f(35184374185984, 2097152); -f(35184390963201, 2097153); -f(70368731594751, 4194303); -f(70368748371968, 4194304); -f(70368765149185, 4194305); -f(140737479966719, 8388607); -f(140737496743936, 8388608); -f(140737513521153, 8388609); -f(281474976710655, 16777215); -f(281474993487872, 16777216); -f(281475010265089, 16777217); -x = 33554431; -f(0, 0); -f(33554431, 1); -f(67108862, 2); -f(100663293, 3); -f(134217724, 4); -f(167772155, 5); -f(234881017, 7); -f(268435448, 8); -f(301989879, 9); -f(503316465, 15); -f(536870896, 16); -f(570425327, 17); -f(1040187361, 31); -f(1073741792, 32); -f(1107296223, 33); -f(2113929153, 63); -f(2147483584, 64); -f(2181038015, 65); -f(4261412737, 127); -f(4294967168, 128); -f(4328521599, 129); -f(8556379905, 255); -f(8589934336, 256); -f(8623488767, 257); -f(17146314241, 511); -f(17179868672, 512); -f(17213423103, 513); -f(34326182913, 1023); -f(34359737344, 1024); -f(34393291775, 1025); -f(68685920257, 2047); -f(68719474688, 2048); -f(68753029119, 2049); -f(137405394945, 4095); -f(137438949376, 4096); -f(137472503807, 4097); -f(274844344321, 8191); -f(274877898752, 8192); -f(274911453183, 8193); -f(549722243073, 16383); -f(549755797504, 16384); -f(549789351935, 16385); -f(1099478040577, 32767); -f(1099511595008, 32768); -f(1099545149439, 32769); -f(2198989635585, 65535); -f(2199023190016, 65536); -f(2199056744447, 65537); -f(4398012825601, 131071); -f(4398046380032, 131072); -f(4398079934463, 131073); -f(8796059205633, 262143); -f(8796092760064, 262144); -f(8796126314495, 262145); -f(17592151965697, 524287); -f(17592185520128, 524288); -f(17592219074559, 524289); -f(35184337485825, 1048575); -f(35184371040256, 1048576); -f(35184404594687, 1048577); -f(70368708526081, 2097151); -f(70368742080512, 2097152); -f(70368775634943, 2097153); -f(140737450606593, 4194303); -f(140737484161024, 4194304); -f(140737517715455, 4194305); -f(281474934767617, 8388607); -f(281474968322048, 8388608); -f(281475001876479, 8388609); -f(562949903089665, 16777215); -f(562949936644096, 16777216); -f(562949970198527, 16777217); -f(1125899839733761, 33554431); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part7.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part7.js deleted file mode 100644 index d517225e7c7..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part7.js +++ /dev/null @@ -1,497 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 33554432; -f(0, 0); -f(33554432, 1); -f(67108864, 2); -f(100663296, 3); -f(134217728, 4); -f(167772160, 5); -f(234881024, 7); -f(268435456, 8); -f(301989888, 9); -f(503316480, 15); -f(536870912, 16); -f(570425344, 17); -f(1040187392, 31); -f(1073741824, 32); -f(1107296256, 33); -f(2113929216, 63); -f(2147483648, 64); -f(2181038080, 65); -f(4261412864, 127); -f(4294967296, 128); -f(4328521728, 129); -f(8556380160, 255); -f(8589934592, 256); -f(8623489024, 257); -f(17146314752, 511); -f(17179869184, 512); -f(17213423616, 513); -f(34326183936, 1023); -f(34359738368, 1024); -f(34393292800, 1025); -f(68685922304, 2047); -f(68719476736, 2048); -f(68753031168, 2049); -f(137405399040, 4095); -f(137438953472, 4096); -f(137472507904, 4097); -f(274844352512, 8191); -f(274877906944, 8192); -f(274911461376, 8193); -f(549722259456, 16383); -f(549755813888, 16384); -f(549789368320, 16385); -f(1099478073344, 32767); -f(1099511627776, 32768); -f(1099545182208, 32769); -f(2198989701120, 65535); -f(2199023255552, 65536); -f(2199056809984, 65537); -f(4398012956672, 131071); -f(4398046511104, 131072); -f(4398080065536, 131073); -f(8796059467776, 262143); -f(8796093022208, 262144); -f(8796126576640, 262145); -f(17592152489984, 524287); -f(17592186044416, 524288); -f(17592219598848, 524289); -f(35184338534400, 1048575); -f(35184372088832, 1048576); -f(35184405643264, 1048577); -f(70368710623232, 2097151); -f(70368744177664, 2097152); -f(70368777732096, 2097153); -f(140737454800896, 4194303); -f(140737488355328, 4194304); -f(140737521909760, 4194305); -f(281474943156224, 8388607); -f(281474976710656, 8388608); -f(281475010265088, 8388609); -f(562949919866880, 16777215); -f(562949953421312, 16777216); -f(562949986975744, 16777217); -f(1125899873288192, 33554431); -f(1125899906842624, 33554432); -x = 33554433; -f(0, 0); -f(33554433, 1); -f(67108866, 2); -f(100663299, 3); -f(134217732, 4); -f(167772165, 5); -f(234881031, 7); -f(268435464, 8); -f(301989897, 9); -f(503316495, 15); -f(536870928, 16); -f(570425361, 17); -f(1040187423, 31); -f(1073741856, 32); -f(1107296289, 33); -f(2113929279, 63); -f(2147483712, 64); -f(2181038145, 65); -f(4261412991, 127); -f(4294967424, 128); -f(4328521857, 129); -f(8556380415, 255); -f(8589934848, 256); -f(8623489281, 257); -f(17146315263, 511); -f(17179869696, 512); -f(17213424129, 513); -f(34326184959, 1023); -f(34359739392, 1024); -f(34393293825, 1025); -f(68685924351, 2047); -f(68719478784, 2048); -f(68753033217, 2049); -f(137405403135, 4095); -f(137438957568, 4096); -f(137472512001, 4097); -f(274844360703, 8191); -f(274877915136, 8192); -f(274911469569, 8193); -f(549722275839, 16383); -f(549755830272, 16384); -f(549789384705, 16385); -f(1099478106111, 32767); -f(1099511660544, 32768); -f(1099545214977, 32769); -f(2198989766655, 65535); -f(2199023321088, 65536); -f(2199056875521, 65537); -f(4398013087743, 131071); -f(4398046642176, 131072); -f(4398080196609, 131073); -f(8796059729919, 262143); -f(8796093284352, 262144); -f(8796126838785, 262145); -f(17592153014271, 524287); -f(17592186568704, 524288); -f(17592220123137, 524289); -f(35184339582975, 1048575); -f(35184373137408, 1048576); -f(35184406691841, 1048577); -f(70368712720383, 2097151); -f(70368746274816, 2097152); -f(70368779829249, 2097153); -f(140737458995199, 4194303); -f(140737492549632, 4194304); -f(140737526104065, 4194305); -f(281474951544831, 8388607); -f(281474985099264, 8388608); -f(281475018653697, 8388609); -f(562949936644095, 16777215); -f(562949970198528, 16777216); -f(562950003752961, 16777217); -f(1125899906842623, 33554431); -f(1125899940397056, 33554432); -f(1125899973951489, 33554433); -x = 67108863; -f(0, 0); -f(67108863, 1); -f(134217726, 2); -f(201326589, 3); -f(268435452, 4); -f(335544315, 5); -f(469762041, 7); -f(536870904, 8); -f(603979767, 9); -f(1006632945, 15); -f(1073741808, 16); -f(1140850671, 17); -f(2080374753, 31); -f(2147483616, 32); -f(2214592479, 33); -f(4227858369, 63); -f(4294967232, 64); -f(4362076095, 65); -f(8522825601, 127); -f(8589934464, 128); -f(8657043327, 129); -f(17112760065, 255); -f(17179868928, 256); -f(17246977791, 257); -f(34292628993, 511); -f(34359737856, 512); -f(34426846719, 513); -f(68652366849, 1023); -f(68719475712, 1024); -f(68786584575, 1025); -f(137371842561, 2047); -f(137438951424, 2048); -f(137506060287, 2049); -f(274810793985, 4095); -f(274877902848, 4096); -f(274945011711, 4097); -f(549688696833, 8191); -f(549755805696, 8192); -f(549822914559, 8193); -f(1099444502529, 16383); -f(1099511611392, 16384); -f(1099578720255, 16385); -f(2198956113921, 32767); -f(2199023222784, 32768); -f(2199090331647, 32769); -f(4397979336705, 65535); -f(4398046445568, 65536); -f(4398113554431, 65537); -f(8796025782273, 131071); -f(8796092891136, 131072); -f(8796159999999, 131073); -f(17592118673409, 262143); -f(17592185782272, 262144); -f(17592252891135, 262145); -f(35184304455681, 524287); -f(35184371564544, 524288); -f(35184438673407, 524289); -f(70368676020225, 1048575); -f(70368743129088, 1048576); -f(70368810237951, 1048577); -f(140737419149313, 2097151); -f(140737486258176, 2097152); -f(140737553367039, 2097153); -f(281474905407489, 4194303); -f(281474972516352, 4194304); -f(281475039625215, 4194305); -f(562949877923841, 8388607); -f(562949945032704, 8388608); -f(562950012141567, 8388609); -f(1125899822956545, 16777215); -f(1125899890065408, 16777216); -f(1125899957174271, 16777217); -x = 67108864; -f(0, 0); -f(67108864, 1); -f(134217728, 2); -f(201326592, 3); -f(268435456, 4); -f(335544320, 5); -f(469762048, 7); -f(536870912, 8); -f(603979776, 9); -f(1006632960, 15); -f(1073741824, 16); -f(1140850688, 17); -f(2080374784, 31); -f(2147483648, 32); -f(2214592512, 33); -f(4227858432, 63); -f(4294967296, 64); -f(4362076160, 65); -f(8522825728, 127); -f(8589934592, 128); -f(8657043456, 129); -f(17112760320, 255); -f(17179869184, 256); -f(17246978048, 257); -f(34292629504, 511); -f(34359738368, 512); -f(34426847232, 513); -f(68652367872, 1023); -f(68719476736, 1024); -f(68786585600, 1025); -f(137371844608, 2047); -f(137438953472, 2048); -f(137506062336, 2049); -f(274810798080, 4095); -f(274877906944, 4096); -f(274945015808, 4097); -f(549688705024, 8191); -f(549755813888, 8192); -f(549822922752, 8193); -f(1099444518912, 16383); -f(1099511627776, 16384); -f(1099578736640, 16385); -f(2198956146688, 32767); -f(2199023255552, 32768); -f(2199090364416, 32769); -f(4397979402240, 65535); -f(4398046511104, 65536); -f(4398113619968, 65537); -f(8796025913344, 131071); -f(8796093022208, 131072); -f(8796160131072, 131073); -f(17592118935552, 262143); -f(17592186044416, 262144); -f(17592253153280, 262145); -f(35184304979968, 524287); -f(35184372088832, 524288); -f(35184439197696, 524289); -f(70368677068800, 1048575); -f(70368744177664, 1048576); -f(70368811286528, 1048577); -f(140737421246464, 2097151); -f(140737488355328, 2097152); -f(140737555464192, 2097153); -f(281474909601792, 4194303); -f(281474976710656, 4194304); -f(281475043819520, 4194305); -f(562949886312448, 8388607); -f(562949953421312, 8388608); -f(562950020530176, 8388609); -f(1125899839733760, 16777215); -f(1125899906842624, 16777216); -f(1125899973951488, 16777217); -x = 67108865; -f(0, 0); -f(67108865, 1); -f(134217730, 2); -f(201326595, 3); -f(268435460, 4); -f(335544325, 5); -f(469762055, 7); -f(536870920, 8); -f(603979785, 9); -f(1006632975, 15); -f(1073741840, 16); -f(1140850705, 17); -f(2080374815, 31); -f(2147483680, 32); -f(2214592545, 33); -f(4227858495, 63); -f(4294967360, 64); -f(4362076225, 65); -f(8522825855, 127); -f(8589934720, 128); -f(8657043585, 129); -f(17112760575, 255); -f(17179869440, 256); -f(17246978305, 257); -f(34292630015, 511); -f(34359738880, 512); -f(34426847745, 513); -f(68652368895, 1023); -f(68719477760, 1024); -f(68786586625, 1025); -f(137371846655, 2047); -f(137438955520, 2048); -f(137506064385, 2049); -f(274810802175, 4095); -f(274877911040, 4096); -f(274945019905, 4097); -f(549688713215, 8191); -f(549755822080, 8192); -f(549822930945, 8193); -f(1099444535295, 16383); -f(1099511644160, 16384); -f(1099578753025, 16385); -f(2198956179455, 32767); -f(2199023288320, 32768); -f(2199090397185, 32769); -f(4397979467775, 65535); -f(4398046576640, 65536); -f(4398113685505, 65537); -f(8796026044415, 131071); -f(8796093153280, 131072); -f(8796160262145, 131073); -f(17592119197695, 262143); -f(17592186306560, 262144); -f(17592253415425, 262145); -f(35184305504255, 524287); -f(35184372613120, 524288); -f(35184439721985, 524289); -f(70368678117375, 1048575); -f(70368745226240, 1048576); -f(70368812335105, 1048577); -f(140737423343615, 2097151); -f(140737490452480, 2097152); -f(140737557561345, 2097153); -f(281474913796095, 4194303); -f(281474980904960, 4194304); -f(281475048013825, 4194305); -f(562949894701055, 8388607); -f(562949961809920, 8388608); -f(562950028918785, 8388609); -f(1125899856510975, 16777215); -f(1125899923619840, 16777216); -f(1125899990728705, 16777217); -x = 134217727; -f(0, 0); -f(134217727, 1); -f(268435454, 2); -f(402653181, 3); -f(536870908, 4); -f(671088635, 5); -f(939524089, 7); -f(1073741816, 8); -f(1207959543, 9); -f(2013265905, 15); -f(2147483632, 16); -f(2281701359, 17); -f(4160749537, 31); -f(4294967264, 32); -f(4429184991, 33); -f(8455716801, 63); -f(8589934528, 64); -f(8724152255, 65); -f(17045651329, 127); -f(17179869056, 128); -f(17314086783, 129); -f(34225520385, 255); -f(34359738112, 256); -f(34493955839, 257); -f(68585258497, 511); -f(68719476224, 512); -f(68853693951, 513); -f(137304734721, 1023); -f(137438952448, 1024); -f(137573170175, 1025); -f(274743687169, 2047); -f(274877904896, 2048); -f(275012122623, 2049); -f(549621592065, 4095); -f(549755809792, 4096); -f(549890027519, 4097); -f(1099377401857, 8191); -f(1099511619584, 8192); -f(1099645837311, 8193); -f(2198889021441, 16383); -f(2199023239168, 16384); -f(2199157456895, 16385); -f(4397912260609, 32767); -f(4398046478336, 32768); -f(4398180696063, 32769); -f(8795958738945, 65535); -f(8796092956672, 65536); -f(8796227174399, 65537); -f(17592051695617, 131071); -f(17592185913344, 131072); -f(17592320131071, 131073); -f(35184237608961, 262143); -f(35184371826688, 262144); -f(35184506044415, 262145); -f(70368609435649, 524287); -f(70368743653376, 524288); -f(70368877871103, 524289); -f(140737353089025, 1048575); -f(140737487306752, 1048576); -f(140737621524479, 1048577); -f(281474840395777, 2097151); -f(281474974613504, 2097152); -f(281475108831231, 2097153); -f(562949815009281, 4194303); -f(562949949227008, 4194304); -f(562950083444735, 4194305); -f(1125899764236289, 8388607); -f(1125899898454016, 8388608); -f(1125900032671743, 8388609); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part8.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part8.js deleted file mode 100644 index 7e5f2851c9b..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part8.js +++ /dev/null @@ -1,526 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 134217728; -f(0, 0); -f(134217728, 1); -f(268435456, 2); -f(402653184, 3); -f(536870912, 4); -f(671088640, 5); -f(939524096, 7); -f(1073741824, 8); -f(1207959552, 9); -f(2013265920, 15); -f(2147483648, 16); -f(2281701376, 17); -f(4160749568, 31); -f(4294967296, 32); -f(4429185024, 33); -f(8455716864, 63); -f(8589934592, 64); -f(8724152320, 65); -f(17045651456, 127); -f(17179869184, 128); -f(17314086912, 129); -f(34225520640, 255); -f(34359738368, 256); -f(34493956096, 257); -f(68585259008, 511); -f(68719476736, 512); -f(68853694464, 513); -f(137304735744, 1023); -f(137438953472, 1024); -f(137573171200, 1025); -f(274743689216, 2047); -f(274877906944, 2048); -f(275012124672, 2049); -f(549621596160, 4095); -f(549755813888, 4096); -f(549890031616, 4097); -f(1099377410048, 8191); -f(1099511627776, 8192); -f(1099645845504, 8193); -f(2198889037824, 16383); -f(2199023255552, 16384); -f(2199157473280, 16385); -f(4397912293376, 32767); -f(4398046511104, 32768); -f(4398180728832, 32769); -f(8795958804480, 65535); -f(8796093022208, 65536); -f(8796227239936, 65537); -f(17592051826688, 131071); -f(17592186044416, 131072); -f(17592320262144, 131073); -f(35184237871104, 262143); -f(35184372088832, 262144); -f(35184506306560, 262145); -f(70368609959936, 524287); -f(70368744177664, 524288); -f(70368878395392, 524289); -f(140737354137600, 1048575); -f(140737488355328, 1048576); -f(140737622573056, 1048577); -f(281474842492928, 2097151); -f(281474976710656, 2097152); -f(281475110928384, 2097153); -f(562949819203584, 4194303); -f(562949953421312, 4194304); -f(562950087639040, 4194305); -f(1125899772624896, 8388607); -f(1125899906842624, 8388608); -f(1125900041060352, 8388609); -x = 134217729; -f(0, 0); -f(134217729, 1); -f(268435458, 2); -f(402653187, 3); -f(536870916, 4); -f(671088645, 5); -f(939524103, 7); -f(1073741832, 8); -f(1207959561, 9); -f(2013265935, 15); -f(2147483664, 16); -f(2281701393, 17); -f(4160749599, 31); -f(4294967328, 32); -f(4429185057, 33); -f(8455716927, 63); -f(8589934656, 64); -f(8724152385, 65); -f(17045651583, 127); -f(17179869312, 128); -f(17314087041, 129); -f(34225520895, 255); -f(34359738624, 256); -f(34493956353, 257); -f(68585259519, 511); -f(68719477248, 512); -f(68853694977, 513); -f(137304736767, 1023); -f(137438954496, 1024); -f(137573172225, 1025); -f(274743691263, 2047); -f(274877908992, 2048); -f(275012126721, 2049); -f(549621600255, 4095); -f(549755817984, 4096); -f(549890035713, 4097); -f(1099377418239, 8191); -f(1099511635968, 8192); -f(1099645853697, 8193); -f(2198889054207, 16383); -f(2199023271936, 16384); -f(2199157489665, 16385); -f(4397912326143, 32767); -f(4398046543872, 32768); -f(4398180761601, 32769); -f(8795958870015, 65535); -f(8796093087744, 65536); -f(8796227305473, 65537); -f(17592051957759, 131071); -f(17592186175488, 131072); -f(17592320393217, 131073); -f(35184238133247, 262143); -f(35184372350976, 262144); -f(35184506568705, 262145); -f(70368610484223, 524287); -f(70368744701952, 524288); -f(70368878919681, 524289); -f(140737355186175, 1048575); -f(140737489403904, 1048576); -f(140737623621633, 1048577); -f(281474844590079, 2097151); -f(281474978807808, 2097152); -f(281475113025537, 2097153); -f(562949823397887, 4194303); -f(562949957615616, 4194304); -f(562950091833345, 4194305); -f(1125899781013503, 8388607); -f(1125899915231232, 8388608); -f(1125900049448961, 8388609); -x = 268435455; -f(0, 0); -f(268435455, 1); -f(536870910, 2); -f(805306365, 3); -f(1073741820, 4); -f(1342177275, 5); -f(1879048185, 7); -f(2147483640, 8); -f(2415919095, 9); -f(4026531825, 15); -f(4294967280, 16); -f(4563402735, 17); -f(8321499105, 31); -f(8589934560, 32); -f(8858370015, 33); -f(16911433665, 63); -f(17179869120, 64); -f(17448304575, 65); -f(34091302785, 127); -f(34359738240, 128); -f(34628173695, 129); -f(68451041025, 255); -f(68719476480, 256); -f(68987911935, 257); -f(137170517505, 511); -f(137438952960, 512); -f(137707388415, 513); -f(274609470465, 1023); -f(274877905920, 1024); -f(275146341375, 1025); -f(549487376385, 2047); -f(549755811840, 2048); -f(550024247295, 2049); -f(1099243188225, 4095); -f(1099511623680, 4096); -f(1099780059135, 4097); -f(2198754811905, 8191); -f(2199023247360, 8192); -f(2199291682815, 8193); -f(4397778059265, 16383); -f(4398046494720, 16384); -f(4398314930175, 16385); -f(8795824553985, 32767); -f(8796092989440, 32768); -f(8796361424895, 32769); -f(17591917543425, 65535); -f(17592185978880, 65536); -f(17592454414335, 65537); -f(35184103522305, 131071); -f(35184371957760, 131072); -f(35184640393215, 131073); -f(70368475480065, 262143); -f(70368743915520, 262144); -f(70369012350975, 262145); -f(140737219395585, 524287); -f(140737487831040, 524288); -f(140737756266495, 524289); -f(281474707226625, 1048575); -f(281474975662080, 1048576); -f(281475244097535, 1048577); -f(562949682888705, 2097151); -f(562949951324160, 2097152); -f(562950219759615, 2097153); -f(1125899634212865, 4194303); -f(1125899902648320, 4194304); -f(1125900171083775, 4194305); -x = 268435456; -f(0, 0); -f(268435456, 1); -f(536870912, 2); -f(805306368, 3); -f(1073741824, 4); -f(1342177280, 5); -f(1879048192, 7); -f(2147483648, 8); -f(2415919104, 9); -f(4026531840, 15); -f(4294967296, 16); -f(4563402752, 17); -f(8321499136, 31); -f(8589934592, 32); -f(8858370048, 33); -f(16911433728, 63); -f(17179869184, 64); -f(17448304640, 65); -f(34091302912, 127); -f(34359738368, 128); -f(34628173824, 129); -f(68451041280, 255); -f(68719476736, 256); -f(68987912192, 257); -f(137170518016, 511); -f(137438953472, 512); -f(137707388928, 513); -f(274609471488, 1023); -f(274877906944, 1024); -f(275146342400, 1025); -f(549487378432, 2047); -f(549755813888, 2048); -f(550024249344, 2049); -f(1099243192320, 4095); -f(1099511627776, 4096); -f(1099780063232, 4097); -f(2198754820096, 8191); -f(2199023255552, 8192); -f(2199291691008, 8193); -f(4397778075648, 16383); -f(4398046511104, 16384); -f(4398314946560, 16385); -f(8795824586752, 32767); -f(8796093022208, 32768); -f(8796361457664, 32769); -f(17591917608960, 65535); -f(17592186044416, 65536); -f(17592454479872, 65537); -f(35184103653376, 131071); -f(35184372088832, 131072); -f(35184640524288, 131073); -f(70368475742208, 262143); -f(70368744177664, 262144); -f(70369012613120, 262145); -f(140737219919872, 524287); -f(140737488355328, 524288); -f(140737756790784, 524289); -f(281474708275200, 1048575); -f(281474976710656, 1048576); -f(281475245146112, 1048577); -f(562949684985856, 2097151); -f(562949953421312, 2097152); -f(562950221856768, 2097153); -f(1125899638407168, 4194303); -f(1125899906842624, 4194304); -f(1125900175278080, 4194305); -x = 268435457; -f(0, 0); -f(268435457, 1); -f(536870914, 2); -f(805306371, 3); -f(1073741828, 4); -f(1342177285, 5); -f(1879048199, 7); -f(2147483656, 8); -f(2415919113, 9); -f(4026531855, 15); -f(4294967312, 16); -f(4563402769, 17); -f(8321499167, 31); -f(8589934624, 32); -f(8858370081, 33); -f(16911433791, 63); -f(17179869248, 64); -f(17448304705, 65); -f(34091303039, 127); -f(34359738496, 128); -f(34628173953, 129); -f(68451041535, 255); -f(68719476992, 256); -f(68987912449, 257); -f(137170518527, 511); -f(137438953984, 512); -f(137707389441, 513); -f(274609472511, 1023); -f(274877907968, 1024); -f(275146343425, 1025); -f(549487380479, 2047); -f(549755815936, 2048); -f(550024251393, 2049); -f(1099243196415, 4095); -f(1099511631872, 4096); -f(1099780067329, 4097); -f(2198754828287, 8191); -f(2199023263744, 8192); -f(2199291699201, 8193); -f(4397778092031, 16383); -f(4398046527488, 16384); -f(4398314962945, 16385); -f(8795824619519, 32767); -f(8796093054976, 32768); -f(8796361490433, 32769); -f(17591917674495, 65535); -f(17592186109952, 65536); -f(17592454545409, 65537); -f(35184103784447, 131071); -f(35184372219904, 131072); -f(35184640655361, 131073); -f(70368476004351, 262143); -f(70368744439808, 262144); -f(70369012875265, 262145); -f(140737220444159, 524287); -f(140737488879616, 524288); -f(140737757315073, 524289); -f(281474709323775, 1048575); -f(281474977759232, 1048576); -f(281475246194689, 1048577); -f(562949687083007, 2097151); -f(562949955518464, 2097152); -f(562950223953921, 2097153); -f(1125899642601471, 4194303); -f(1125899911036928, 4194304); -f(1125900179472385, 4194305); -x = 536870911; -f(0, 0); -f(536870911, 1); -f(1073741822, 2); -f(1610612733, 3); -f(2147483644, 4); -f(2684354555, 5); -f(3758096377, 7); -f(4294967288, 8); -f(4831838199, 9); -f(8053063665, 15); -f(8589934576, 16); -f(9126805487, 17); -f(16642998241, 31); -f(17179869152, 32); -f(17716740063, 33); -f(33822867393, 63); -f(34359738304, 64); -f(34896609215, 65); -f(68182605697, 127); -f(68719476608, 128); -f(69256347519, 129); -f(136902082305, 255); -f(137438953216, 256); -f(137975824127, 257); -f(274341035521, 511); -f(274877906432, 512); -f(275414777343, 513); -f(549218941953, 1023); -f(549755812864, 1024); -f(550292683775, 1025); -f(1098974754817, 2047); -f(1099511625728, 2048); -f(1100048496639, 2049); -f(2198486380545, 4095); -f(2199023251456, 4096); -f(2199560122367, 4097); -f(4397509632001, 8191); -f(4398046502912, 8192); -f(4398583373823, 8193); -f(8795556134913, 16383); -f(8796093005824, 16384); -f(8796629876735, 16385); -f(17591649140737, 32767); -f(17592186011648, 32768); -f(17592722882559, 32769); -f(35183835152385, 65535); -f(35184372023296, 65536); -f(35184908894207, 65537); -f(70368207175681, 131071); -f(70368744046592, 131072); -f(70369280917503, 131073); -f(140736951222273, 262143); -f(140737488093184, 262144); -f(140738024964095, 262145); -f(281474439315457, 524287); -f(281474976186368, 524288); -f(281475513057279, 524289); -f(562949415501825, 1048575); -f(562949952372736, 1048576); -f(562950489243647, 1048577); -f(1125899367874561, 2097151); -f(1125899904745472, 2097152); -f(1125900441616383, 2097153); -x = 536870912; -f(0, 0); -f(536870912, 1); -f(1073741824, 2); -f(1610612736, 3); -f(2147483648, 4); -f(2684354560, 5); -f(3758096384, 7); -f(4294967296, 8); -f(4831838208, 9); -f(8053063680, 15); -f(8589934592, 16); -f(9126805504, 17); -f(16642998272, 31); -f(17179869184, 32); -f(17716740096, 33); -f(33822867456, 63); -f(34359738368, 64); -f(34896609280, 65); -f(68182605824, 127); -f(68719476736, 128); -f(69256347648, 129); -f(136902082560, 255); -f(137438953472, 256); -f(137975824384, 257); -f(274341036032, 511); -f(274877906944, 512); -f(275414777856, 513); -f(549218942976, 1023); -f(549755813888, 1024); -f(550292684800, 1025); -f(1098974756864, 2047); -f(1099511627776, 2048); -f(1100048498688, 2049); -f(2198486384640, 4095); -f(2199023255552, 4096); -f(2199560126464, 4097); -f(4397509640192, 8191); -f(4398046511104, 8192); -f(4398583382016, 8193); -f(8795556151296, 16383); -f(8796093022208, 16384); -f(8796629893120, 16385); -f(17591649173504, 32767); -f(17592186044416, 32768); -f(17592722915328, 32769); -f(35183835217920, 65535); -f(35184372088832, 65536); -f(35184908959744, 65537); -f(70368207306752, 131071); -f(70368744177664, 131072); -f(70369281048576, 131073); -f(140736951484416, 262143); -f(140737488355328, 262144); -f(140738025226240, 262145); -f(281474439839744, 524287); -f(281474976710656, 524288); -f(281475513581568, 524289); -f(562949416550400, 1048575); -f(562949953421312, 1048576); -f(562950490292224, 1048577); -f(1125899369971712, 2097151); -f(1125899906842624, 2097152); -f(1125900443713536, 2097153); diff --git a/implementation-contributed/v8/mjsunit/mul-exhaustive-part9.js b/implementation-contributed/v8/mjsunit/mul-exhaustive-part9.js deleted file mode 100644 index f329a5a147b..00000000000 --- a/implementation-contributed/v8/mjsunit/mul-exhaustive-part9.js +++ /dev/null @@ -1,533 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x; - -// Converts a number to string respecting -0. -function stringify(n) { - if ((1 / n) === -Infinity) return "-0"; - return String(n); -} - -function f(expected, y) { - function testEval(string, x, y) { - var mulFunction = Function("x, y", "return " + string); - return mulFunction(x, y); - } - function mulTest(expected, x, y) { - assertEquals(expected, x * y); - assertEquals(expected, testEval(stringify(x) + " * y", x, y)); - assertEquals(expected, testEval("x * " + stringify(y), x, y)); - assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y)); - } - mulTest(expected, x, y); - mulTest(-expected, -x, y); - mulTest(-expected, x, -y); - mulTest(expected, -x, -y); - if (x === y) return; // Symmetric cases not necessary. - mulTest(expected, y, x); - mulTest(-expected, -y, x); - mulTest(-expected, y, -x); - mulTest(expected, -y, -x); -} - -x = 536870913; -f(0, 0); -f(536870913, 1); -f(1073741826, 2); -f(1610612739, 3); -f(2147483652, 4); -f(2684354565, 5); -f(3758096391, 7); -f(4294967304, 8); -f(4831838217, 9); -f(8053063695, 15); -f(8589934608, 16); -f(9126805521, 17); -f(16642998303, 31); -f(17179869216, 32); -f(17716740129, 33); -f(33822867519, 63); -f(34359738432, 64); -f(34896609345, 65); -f(68182605951, 127); -f(68719476864, 128); -f(69256347777, 129); -f(136902082815, 255); -f(137438953728, 256); -f(137975824641, 257); -f(274341036543, 511); -f(274877907456, 512); -f(275414778369, 513); -f(549218943999, 1023); -f(549755814912, 1024); -f(550292685825, 1025); -f(1098974758911, 2047); -f(1099511629824, 2048); -f(1100048500737, 2049); -f(2198486388735, 4095); -f(2199023259648, 4096); -f(2199560130561, 4097); -f(4397509648383, 8191); -f(4398046519296, 8192); -f(4398583390209, 8193); -f(8795556167679, 16383); -f(8796093038592, 16384); -f(8796629909505, 16385); -f(17591649206271, 32767); -f(17592186077184, 32768); -f(17592722948097, 32769); -f(35183835283455, 65535); -f(35184372154368, 65536); -f(35184909025281, 65537); -f(70368207437823, 131071); -f(70368744308736, 131072); -f(70369281179649, 131073); -f(140736951746559, 262143); -f(140737488617472, 262144); -f(140738025488385, 262145); -f(281474440364031, 524287); -f(281474977234944, 524288); -f(281475514105857, 524289); -f(562949417598975, 1048575); -f(562949954469888, 1048576); -f(562950491340801, 1048577); -f(1125899372068863, 2097151); -f(1125899908939776, 2097152); -f(1125900445810689, 2097153); -x = 1073741823; -f(0, 0); -f(1073741823, 1); -f(2147483646, 2); -f(3221225469, 3); -f(4294967292, 4); -f(5368709115, 5); -f(7516192761, 7); -f(8589934584, 8); -f(9663676407, 9); -f(16106127345, 15); -f(17179869168, 16); -f(18253610991, 17); -f(33285996513, 31); -f(34359738336, 32); -f(35433480159, 33); -f(67645734849, 63); -f(68719476672, 64); -f(69793218495, 65); -f(136365211521, 127); -f(137438953344, 128); -f(138512695167, 129); -f(273804164865, 255); -f(274877906688, 256); -f(275951648511, 257); -f(548682071553, 511); -f(549755813376, 512); -f(550829555199, 513); -f(1098437884929, 1023); -f(1099511626752, 1024); -f(1100585368575, 1025); -f(2197949511681, 2047); -f(2199023253504, 2048); -f(2200096995327, 2049); -f(4396972765185, 4095); -f(4398046507008, 4096); -f(4399120248831, 4097); -f(8795019272193, 8191); -f(8796093014016, 8192); -f(8797166755839, 8193); -f(17591112286209, 16383); -f(17592186028032, 16384); -f(17593259769855, 16385); -f(35183298314241, 32767); -f(35184372056064, 32768); -f(35185445797887, 32769); -f(70367670370305, 65535); -f(70368744112128, 65536); -f(70369817853951, 65537); -f(140736414482433, 131071); -f(140737488224256, 131072); -f(140738561966079, 131073); -f(281473902706689, 262143); -f(281474976448512, 262144); -f(281476050190335, 262145); -f(562948879155201, 524287); -f(562949952897024, 524288); -f(562951026638847, 524289); -f(1125898832052225, 1048575); -f(1125899905794048, 1048576); -f(1125900979535871, 1048577); -x = 1073741824; -f(0, 0); -f(1073741824, 1); -f(2147483648, 2); -f(3221225472, 3); -f(4294967296, 4); -f(5368709120, 5); -f(7516192768, 7); -f(8589934592, 8); -f(9663676416, 9); -f(16106127360, 15); -f(17179869184, 16); -f(18253611008, 17); -f(33285996544, 31); -f(34359738368, 32); -f(35433480192, 33); -f(67645734912, 63); -f(68719476736, 64); -f(69793218560, 65); -f(136365211648, 127); -f(137438953472, 128); -f(138512695296, 129); -f(273804165120, 255); -f(274877906944, 256); -f(275951648768, 257); -f(548682072064, 511); -f(549755813888, 512); -f(550829555712, 513); -f(1098437885952, 1023); -f(1099511627776, 1024); -f(1100585369600, 1025); -f(2197949513728, 2047); -f(2199023255552, 2048); -f(2200096997376, 2049); -f(4396972769280, 4095); -f(4398046511104, 4096); -f(4399120252928, 4097); -f(8795019280384, 8191); -f(8796093022208, 8192); -f(8797166764032, 8193); -f(17591112302592, 16383); -f(17592186044416, 16384); -f(17593259786240, 16385); -f(35183298347008, 32767); -f(35184372088832, 32768); -f(35185445830656, 32769); -f(70367670435840, 65535); -f(70368744177664, 65536); -f(70369817919488, 65537); -f(140736414613504, 131071); -f(140737488355328, 131072); -f(140738562097152, 131073); -f(281473902968832, 262143); -f(281474976710656, 262144); -f(281476050452480, 262145); -f(562948879679488, 524287); -f(562949953421312, 524288); -f(562951027163136, 524289); -f(1125898833100800, 1048575); -f(1125899906842624, 1048576); -f(1125900980584448, 1048577); -x = 1073741825; -f(0, 0); -f(1073741825, 1); -f(2147483650, 2); -f(3221225475, 3); -f(4294967300, 4); -f(5368709125, 5); -f(7516192775, 7); -f(8589934600, 8); -f(9663676425, 9); -f(16106127375, 15); -f(17179869200, 16); -f(18253611025, 17); -f(33285996575, 31); -f(34359738400, 32); -f(35433480225, 33); -f(67645734975, 63); -f(68719476800, 64); -f(69793218625, 65); -f(136365211775, 127); -f(137438953600, 128); -f(138512695425, 129); -f(273804165375, 255); -f(274877907200, 256); -f(275951649025, 257); -f(548682072575, 511); -f(549755814400, 512); -f(550829556225, 513); -f(1098437886975, 1023); -f(1099511628800, 1024); -f(1100585370625, 1025); -f(2197949515775, 2047); -f(2199023257600, 2048); -f(2200096999425, 2049); -f(4396972773375, 4095); -f(4398046515200, 4096); -f(4399120257025, 4097); -f(8795019288575, 8191); -f(8796093030400, 8192); -f(8797166772225, 8193); -f(17591112318975, 16383); -f(17592186060800, 16384); -f(17593259802625, 16385); -f(35183298379775, 32767); -f(35184372121600, 32768); -f(35185445863425, 32769); -f(70367670501375, 65535); -f(70368744243200, 65536); -f(70369817985025, 65537); -f(140736414744575, 131071); -f(140737488486400, 131072); -f(140738562228225, 131073); -f(281473903230975, 262143); -f(281474976972800, 262144); -f(281476050714625, 262145); -f(562948880203775, 524287); -f(562949953945600, 524288); -f(562951027687425, 524289); -f(1125898834149375, 1048575); -f(1125899907891200, 1048576); -f(1125900981633025, 1048577); -x = 2147483647; -f(0, 0); -f(2147483647, 1); -f(4294967294, 2); -f(6442450941, 3); -f(8589934588, 4); -f(10737418235, 5); -f(15032385529, 7); -f(17179869176, 8); -f(19327352823, 9); -f(32212254705, 15); -f(34359738352, 16); -f(36507221999, 17); -f(66571993057, 31); -f(68719476704, 32); -f(70866960351, 33); -f(135291469761, 63); -f(137438953408, 64); -f(139586437055, 65); -f(272730423169, 127); -f(274877906816, 128); -f(277025390463, 129); -f(547608329985, 255); -f(549755813632, 256); -f(551903297279, 257); -f(1097364143617, 511); -f(1099511627264, 512); -f(1101659110911, 513); -f(2196875770881, 1023); -f(2199023254528, 1024); -f(2201170738175, 1025); -f(4395899025409, 2047); -f(4398046509056, 2048); -f(4400193992703, 2049); -f(8793945534465, 4095); -f(8796093018112, 4096); -f(8798240501759, 4097); -f(17590038552577, 8191); -f(17592186036224, 8192); -f(17594333519871, 8193); -f(35182224588801, 16383); -f(35184372072448, 16384); -f(35186519556095, 16385); -f(70366596661249, 32767); -f(70368744144896, 32768); -f(70370891628543, 32769); -f(140735340806145, 65535); -f(140737488289792, 65536); -f(140739635773439, 65537); -f(281472829095937, 131071); -f(281474976579584, 131072); -f(281477124063231, 131073); -f(562947805675521, 262143); -f(562949953159168, 262144); -f(562952100642815, 262145); -f(1125897758834689, 524287); -f(1125899906318336, 524288); -f(1125902053801983, 524289); -x = 2147483648; -f(0, 0); -f(2147483648, 1); -f(4294967296, 2); -f(6442450944, 3); -f(8589934592, 4); -f(10737418240, 5); -f(15032385536, 7); -f(17179869184, 8); -f(19327352832, 9); -f(32212254720, 15); -f(34359738368, 16); -f(36507222016, 17); -f(66571993088, 31); -f(68719476736, 32); -f(70866960384, 33); -f(135291469824, 63); -f(137438953472, 64); -f(139586437120, 65); -f(272730423296, 127); -f(274877906944, 128); -f(277025390592, 129); -f(547608330240, 255); -f(549755813888, 256); -f(551903297536, 257); -f(1097364144128, 511); -f(1099511627776, 512); -f(1101659111424, 513); -f(2196875771904, 1023); -f(2199023255552, 1024); -f(2201170739200, 1025); -f(4395899027456, 2047); -f(4398046511104, 2048); -f(4400193994752, 2049); -f(8793945538560, 4095); -f(8796093022208, 4096); -f(8798240505856, 4097); -f(17590038560768, 8191); -f(17592186044416, 8192); -f(17594333528064, 8193); -f(35182224605184, 16383); -f(35184372088832, 16384); -f(35186519572480, 16385); -f(70366596694016, 32767); -f(70368744177664, 32768); -f(70370891661312, 32769); -f(140735340871680, 65535); -f(140737488355328, 65536); -f(140739635838976, 65537); -f(281472829227008, 131071); -f(281474976710656, 131072); -f(281477124194304, 131073); -f(562947805937664, 262143); -f(562949953421312, 262144); -f(562952100904960, 262145); -f(1125897759358976, 524287); -f(1125899906842624, 524288); -f(1125902054326272, 524289); -x = 2147483649; -f(0, 0); -f(2147483649, 1); -f(4294967298, 2); -f(6442450947, 3); -f(8589934596, 4); -f(10737418245, 5); -f(15032385543, 7); -f(17179869192, 8); -f(19327352841, 9); -f(32212254735, 15); -f(34359738384, 16); -f(36507222033, 17); -f(66571993119, 31); -f(68719476768, 32); -f(70866960417, 33); -f(135291469887, 63); -f(137438953536, 64); -f(139586437185, 65); -f(272730423423, 127); -f(274877907072, 128); -f(277025390721, 129); -f(547608330495, 255); -f(549755814144, 256); -f(551903297793, 257); -f(1097364144639, 511); -f(1099511628288, 512); -f(1101659111937, 513); -f(2196875772927, 1023); -f(2199023256576, 1024); -f(2201170740225, 1025); -f(4395899029503, 2047); -f(4398046513152, 2048); -f(4400193996801, 2049); -f(8793945542655, 4095); -f(8796093026304, 4096); -f(8798240509953, 4097); -f(17590038568959, 8191); -f(17592186052608, 8192); -f(17594333536257, 8193); -f(35182224621567, 16383); -f(35184372105216, 16384); -f(35186519588865, 16385); -f(70366596726783, 32767); -f(70368744210432, 32768); -f(70370891694081, 32769); -f(140735340937215, 65535); -f(140737488420864, 65536); -f(140739635904513, 65537); -f(281472829358079, 131071); -f(281474976841728, 131072); -f(281477124325377, 131073); -f(562947806199807, 262143); -f(562949953683456, 262144); -f(562952101167105, 262145); -f(1125897759883263, 524287); -f(1125899907366912, 524288); -f(1125902054850561, 524289); -x = 4294967295; -f(0, 0); -f(4294967295, 1); -f(8589934590, 2); -f(12884901885, 3); -f(17179869180, 4); -f(21474836475, 5); -f(30064771065, 7); -f(34359738360, 8); -f(38654705655, 9); -f(64424509425, 15); -f(68719476720, 16); -f(73014444015, 17); -f(133143986145, 31); -f(137438953440, 32); -f(141733920735, 33); -f(270582939585, 63); -f(274877906880, 64); -f(279172874175, 65); -f(545460846465, 127); -f(549755813760, 128); -f(554050781055, 129); -f(1095216660225, 255); -f(1099511627520, 256); -f(1103806594815, 257); -f(2194728287745, 511); -f(2199023255040, 512); -f(2203318222335, 513); -f(4393751542785, 1023); -f(4398046510080, 1024); -f(4402341477375, 1025); -f(8791798052865, 2047); -f(8796093020160, 2048); -f(8800387987455, 2049); -f(17587891073025, 4095); -f(17592186040320, 4096); -f(17596481007615, 4097); -f(35180077113345, 8191); -f(35184372080640, 8192); -f(35188667047935, 8193); -f(70364449193985, 16383); -f(70368744161280, 16384); -f(70373039128575, 16385); -f(140733193355265, 32767); -f(140737488322560, 32768); -f(140741783289855, 32769); -f(281470681677825, 65535); -f(281474976645120, 65536); -f(281479271612415, 65537); -f(562945658322945, 131071); -f(562949953290240, 131072); -f(562954248257535, 131073); -f(1125895611613185, 262143); -f(1125899906580480, 262144); -f(1125904201547775, 262145); diff --git a/implementation-contributed/v8/mjsunit/multiline.js b/implementation-contributed/v8/mjsunit/multiline.js deleted file mode 100644 index ba538db7169..00000000000 --- a/implementation-contributed/v8/mjsunit/multiline.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var s = 'foo\ -bar'; -assertEquals("foobar", s); diff --git a/implementation-contributed/v8/mjsunit/multiple-return.js b/implementation-contributed/v8/mjsunit/multiple-return.js deleted file mode 100644 index 610a367f6d1..00000000000 --- a/implementation-contributed/v8/mjsunit/multiple-return.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function F() { - for (var x in [1,2,3]) { - return 42; - } - return 87; -} - - -function G() { - for (var x in [1,2,3]) { - try { - return 42; - } finally { - // Do nothing. - } - } - return 87; -} - - -function H() { - for (var x in [1,2,3]) { - try { - return 42; - } catch (e) { - // Do nothing. - } - } - return 87; -} - - -assertEquals(42, F()); -assertEquals(42, G()); -assertEquals(42, H()); diff --git a/implementation-contributed/v8/mjsunit/nans.js b/implementation-contributed/v8/mjsunit/nans.js deleted file mode 100644 index 5630e5b061c..00000000000 --- a/implementation-contributed/v8/mjsunit/nans.js +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Helper to determine endian - returns true on little endian platforms -function isLittleEndian() { - return ((new Uint32Array((new Uint8Array([4,3,2,1])).buffer))[0]) - == 0x01020304; -} - -// Test that both kinds of NaNs (signaling or quiet) do not signal - -function TestAllModes(f) { - f(); // Runtime - f(); // IC - f(); // IC second time - %OptimizeFunctionOnNextCall(f); - f(); // hydrogen -} - -function TestDoubleSignalingNan() { - // NaN with signal bit set - function f() { - if(isLittleEndian()) { - var bytes = new Uint32Array([1, 0x7FF00000]); - } else { - var bytes = new Uint32Array([0x7FF00000, 1]); - } - var doubles = new Float64Array(bytes.buffer); - assertTrue(isNaN(doubles[0])); - assertTrue(isNaN(doubles[0]*2.0)); - assertTrue(isNaN(doubles[0] + 0.5)); - } - - TestAllModes(f); -} - -TestDoubleSignalingNan(); - -function TestDoubleQuietNan() { - // NaN with signal bit cleared - function f() { - if(isLittleEndian()) { - var bytes = new Uint32Array([0, 0x7FF80000]); - } else { - var bytes = new Uint32Array([0x7FF80000, 0]); - } - var doubles = new Float64Array(bytes.buffer); - assertTrue(isNaN(doubles[0])); - assertTrue(isNaN(doubles[0]*2.0)); - assertTrue(isNaN(doubles[0] + 0.5)); - } - - TestAllModes(f); -} - -TestDoubleQuietNan(); - -function TestFloatSignalingNan() { - // NaN with signal bit set - function f() { - var bytes = new Uint32Array([0x7F800001]); - var floats = new Float32Array(bytes.buffer); - assertTrue(isNaN(floats[0])); - assertTrue(isNaN(floats[0]*2.0)); - assertTrue(isNaN(floats[0] + 0.5)); - } - - TestAllModes(f); -} - -TestFloatSignalingNan(); - -function TestFloatQuietNan() { - // NaN with signal bit cleared - function f() { - var bytes = new Uint32Array([0x7FC00000]); - var floats = new Float32Array(bytes.buffer); - assertTrue(isNaN(floats[0])); - assertTrue(isNaN(floats[0]*2.0)); - assertTrue(isNaN(floats[0] + 0.5)); - } - - TestAllModes(f); -} - -TestFloatQuietNan(); diff --git a/implementation-contributed/v8/mjsunit/negate-zero.js b/implementation-contributed/v8/mjsunit/negate-zero.js deleted file mode 100644 index 558be94c3d4..00000000000 --- a/implementation-contributed/v8/mjsunit/negate-zero.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function IsNegativeZero(x) { - assertTrue(x == 0); // Is 0 or -0. - var y = 1 / x; - assertFalse(isFinite(y)); - return y < 0; -} - -var pz = 0; -var nz = -0; - -assertTrue(IsNegativeZero(nz), "-0"); -assertFalse(IsNegativeZero(-nz), "-(-0)"); - -assertFalse(IsNegativeZero(pz), "0"); -assertTrue(IsNegativeZero(-pz), "-(0)"); diff --git a/implementation-contributed/v8/mjsunit/negate.js b/implementation-contributed/v8/mjsunit/negate.js deleted file mode 100644 index 70daf24352b..00000000000 --- a/implementation-contributed/v8/mjsunit/negate.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -const SMI_MAX = (1 << 30) - 1; -const SMI_MIN = -(1 << 30); - -function testmulneg(a, b) { - var base = a * b; - assertEquals(-base, a * -b, "a * -b where a = " + a + ", b = " + b); - assertEquals(-base, -a * b, "-a * b where a = " + a + ", b = " + b); - assertEquals(base, -a * -b, "*-a * -b where a = " + a + ", b = " + b); -} - -testmulneg(2, 3); -testmulneg(SMI_MAX, 3); -testmulneg(SMI_MIN, 3); -testmulneg(3.2, 2.3); - -var x = { valueOf: function() { return 2; } }; -var y = { valueOf: function() { return 3; } }; - -testmulneg(x, y); - -// The test below depends on the correct evaluation order, which is not -// implemented by any of the known JS engines. -var z; -var v = { valueOf: function() { z+=2; return z; } }; -var w = { valueOf: function() { z+=3; return z; } }; - -z = 0; -var base = v * w; -z = 0; -assertEquals(-base, -v * w); -z = 0; -assertEquals(base, -v * -w); diff --git a/implementation-contributed/v8/mjsunit/neuter-twice.js b/implementation-contributed/v8/mjsunit/neuter-twice.js deleted file mode 100644 index 1bf0fa94056..00000000000 --- a/implementation-contributed/v8/mjsunit/neuter-twice.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -var ab = new ArrayBuffer(100); -%ArrayBufferDetach(ab); -%ArrayBufferDetach(ab); diff --git a/implementation-contributed/v8/mjsunit/never-optimize.js b/implementation-contributed/v8/mjsunit/never-optimize.js deleted file mode 100644 index 5efaa47de3e..00000000000 --- a/implementation-contributed/v8/mjsunit/never-optimize.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -function o1() { -} - -o1(); o1(); -%OptimizeFunctionOnNextCall(o1); -o1(); - -// Check that the given function was optimized. -assertOptimized(o1); - -// Test the %NeverOptimizeFunction runtime call. -%NeverOptimizeFunction(u1); -function u1() { -} - -function u2() { - u1(); -} - -u1(); u1(); -u2(); u2(); - -%OptimizeFunctionOnNextCall(u1); -%OptimizeFunctionOnNextCall(u2); - -u1(); u1(); -u2(); u2(); - -assertUnoptimized(u1); -assertOptimized(u2); diff --git a/implementation-contributed/v8/mjsunit/new-function.js b/implementation-contributed/v8/mjsunit/new-function.js deleted file mode 100644 index 794bd765e96..00000000000 --- a/implementation-contributed/v8/mjsunit/new-function.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = 0; -try { - Function("}), x = this, (function() {"); -} catch(e) { - print("Caught " + e); -} -assertTrue(x === 0); diff --git a/implementation-contributed/v8/mjsunit/new.js b/implementation-contributed/v8/mjsunit/new.js deleted file mode 100644 index ca098a12bd6..00000000000 --- a/implementation-contributed/v8/mjsunit/new.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function Construct(x) { return x; } - -assertFalse(null == new Construct(null)); -assertFalse(void 0 == new Construct(void 0)); -assertFalse(0 == new Construct(0)); -assertFalse(1 == new Construct(1)); -assertFalse(4.2 == new Construct(4.2)); -assertFalse('foo' == new Construct('foo')); -assertFalse(true == new Construct(true)); - -x = {}; -assertTrue(x === new Construct(x)); -assertFalse(x === new Construct(null)); -assertFalse(x === new Construct(void 0)); -assertFalse(x === new Construct(1)); -assertFalse(x === new Construct(3.2)); -assertFalse(x === new Construct(false)); -assertFalse(x === new Construct('bar')); -x = []; -assertTrue(x === new Construct(x)); -x = new Boolean(true); -assertTrue(x === new Construct(x)); -x = new Number(42); -assertTrue(x === new Construct(x)); -x = new String('foo'); -assertTrue(x === new Construct(x)); -x = function() { }; -assertTrue(x === new Construct(x)); diff --git a/implementation-contributed/v8/mjsunit/newline-in-string.js b/implementation-contributed/v8/mjsunit/newline-in-string.js deleted file mode 100644 index d52b0e5941c..00000000000 --- a/implementation-contributed/v8/mjsunit/newline-in-string.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test multiline string literal. -var str = 'asdf\ -\nasdf\ -\rasdf\ -\tasdf\ -\\\ -\ -'; -assertEquals('asdf\nasdf\rasdf\tasdf\\', str); - -// Allow escaped CR+LF in multiline string literals. -var code = "'asdf\\" + String.fromCharCode(0xD) + String.fromCharCode(0xA) + "asdf'"; -assertEquals("asdfasdf", eval(code)); - -// Allow individually escaped LF+CR in multiline string literals. -code = "'asdf\\" + String.fromCharCode(0xA) + "\\" + String.fromCharCode(0xD) + "asdf'"; -assertEquals("asdfasdf", eval(code)); - -// Do not allow LF+CR in multiline string literals. (crbug.com/v8/6401) -code = "'asdf\\" + String.fromCharCode(0xA) + String.fromCharCode(0xD) + "asdf'"; -assertThrows(code); diff --git a/implementation-contributed/v8/mjsunit/no-branch-elimination.js b/implementation-contributed/v8/mjsunit/no-branch-elimination.js deleted file mode 100644 index 538039b2324..00000000000 --- a/implementation-contributed/v8/mjsunit/no-branch-elimination.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Branch elimination on ARM build eliminate bl branches. It was wrong. - -if (1 & true) { } - -try { - throw "error"; -} catch (e) { - assertEquals("error", e); -} diff --git a/implementation-contributed/v8/mjsunit/no-octal-constants-above-256.js b/implementation-contributed/v8/mjsunit/no-octal-constants-above-256.js deleted file mode 100644 index 1525d6ae998..00000000000 --- a/implementation-contributed/v8/mjsunit/no-octal-constants-above-256.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Octal constants above \377 should not be allowed; instead they -// should parse as two-digit octals constants followed by digits. -assertEquals(2, "\400".length); -assertEquals("\40".charCodeAt(0), "\400".charCodeAt(0)); -assertEquals("0", "\400".charAt(1)); diff --git a/implementation-contributed/v8/mjsunit/no-semicolon.js b/implementation-contributed/v8/mjsunit/no-semicolon.js deleted file mode 100644 index 273ec4bccbb..00000000000 --- a/implementation-contributed/v8/mjsunit/no-semicolon.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Random tests to make sure you can leave out semicolons -// in various places. - -function f() { return } - -function g() { - return - 4; -} - -assertTrue(f() === void 0); -assertTrue(g() === void 0); - -for (var i = 0; i < 10; i++) { break } -assertEquals(0, i); - -for (var i = 0; i < 10; i++) { continue } -assertEquals(10, i); diff --git a/implementation-contributed/v8/mjsunit/non-ascii-replace.js b/implementation-contributed/v8/mjsunit/non-ascii-replace.js deleted file mode 100644 index 2ccaed10634..00000000000 --- a/implementation-contributed/v8/mjsunit/non-ascii-replace.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for bug #743664. -assertEquals("uu", "\x60\x60".replace(/\x60/g, "u")); -assertEquals("uu", "\xAB\xAB".replace(/\xAB/g, "u")); diff --git a/implementation-contributed/v8/mjsunit/noopt.js b/implementation-contributed/v8/mjsunit/noopt.js deleted file mode 100644 index 70aed326d4d..00000000000 --- a/implementation-contributed/v8/mjsunit/noopt.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --noopt --no-always-opt - - -// Check that --noopt actually works. - -function f() { return 42; } - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); - -assertUnoptimized(f); diff --git a/implementation-contributed/v8/mjsunit/not.js b/implementation-contributed/v8/mjsunit/not.js deleted file mode 100644 index 550a981feb0..00000000000 --- a/implementation-contributed/v8/mjsunit/not.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function testNot(x) { - // The VM constant folds so we use that to check the result. - var expected = eval("!(" + x + ")"); - var actual = !x; - assertEquals(expected, actual, "x: " + x); -} - -testNot(0); -testNot(1); -testNot(-1); -testNot(-0); - -testNot(NaN); -testNot(Infinity); -testNot(-Infinity); - -testNot(true); -testNot(false); - -assertTrue(!""); -assertFalse(!"foo"); - -assertFalse(![]); -assertFalse(![1]); -assertFalse(![1,2]); - -assertFalse(!{}); -assertFalse(!{foo:1}); -assertFalse(!{foo:1,bar:2}); - -assertFalse(!!0); -assertTrue(!!1); diff --git a/implementation-contributed/v8/mjsunit/nul-characters.js b/implementation-contributed/v8/mjsunit/nul-characters.js deleted file mode 100644 index 22da82d2e09..00000000000 --- a/implementation-contributed/v8/mjsunit/nul-characters.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var a = [ '\0', '\u0000', '\x00' ] -for (var i in a) { - assertEquals(1, a[i].length); - assertEquals(0, a[i].charCodeAt(0)); -} - -assertEquals(7, 'foo\0bar'.length); -assertEquals(7, 'foo\x00bar'.length); -assertEquals(7, 'foo\u0000bar'.length); - -assertEquals(2, ('\0' + '\0').length); diff --git a/implementation-contributed/v8/mjsunit/number-is.js b/implementation-contributed/v8/mjsunit/number-is.js deleted file mode 100644 index 53f08767869..00000000000 --- a/implementation-contributed/v8/mjsunit/number-is.js +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test number predicates that Harmony adds to the Number constructor: -// isFinite(), isNaN(), isInteger(), isSafeInteger(). - -assertTrue(Number.isFinite(0)); -assertTrue(Number.isFinite(Number.MIN_VALUE)); -assertTrue(Number.isFinite(Number.MAX_VALUE)); -assertTrue(Number.isFinite(Number.MIN_SAFE_INTEGER)); -assertTrue(Number.isFinite(Number.MIN_SAFE_INTEGER - 13)); -assertTrue(Number.isFinite(Number.MAX_SAFE_INTEGER)); -assertTrue(Number.isFinite(Number.MAX_SAFE_INTEGER + 23)); -assertFalse(Number.isFinite(Number.NaN)); -assertFalse(Number.isFinite(Number.POSITIVE_INFINITY)); -assertFalse(Number.isFinite(Number.NEGATIVE_INFINITY)); -assertFalse(Number.isFinite(new Number(0))); -assertFalse(Number.isFinite(1/0)); -assertFalse(Number.isFinite(-1/0)); -assertFalse(Number.isFinite({})); -assertFalse(Number.isFinite([])); -assertFalse(Number.isFinite("s")); -assertFalse(Number.isFinite(null)); -assertFalse(Number.isFinite(undefined)); - -assertFalse(Number.isNaN(0)); -assertFalse(Number.isNaN(Number.MIN_VALUE)); -assertFalse(Number.isNaN(Number.MAX_VALUE)); -assertFalse(Number.isNaN(Number.MIN_SAFE_INTEGER - 13)); -assertFalse(Number.isNaN(Number.MAX_SAFE_INTEGER + 23)); -assertTrue(Number.isNaN(Number.NaN)); -assertFalse(Number.isNaN(Number.POSITIVE_INFINITY)); -assertFalse(Number.isNaN(Number.NEGATIVE_INFINITY)); -assertFalse(Number.isNaN(Number.EPSILON)); -assertFalse(Number.isNaN(new Number(0))); -assertFalse(Number.isNaN(1/0)); -assertFalse(Number.isNaN(-1/0)); -assertFalse(Number.isNaN({})); -assertFalse(Number.isNaN([])); -assertFalse(Number.isNaN("s")); -assertFalse(Number.isNaN(null)); -assertFalse(Number.isNaN(undefined)); - -assertFalse(Number.isInteger({})); -assertFalse(Number.isInteger([])); -assertFalse(Number.isInteger("s")); -assertFalse(Number.isInteger(null)); -assertFalse(Number.isInteger(undefined)); -assertFalse(Number.isInteger(new Number(2))); -assertTrue(Number.isInteger(0)); -assertFalse(Number.isInteger(Number.MIN_VALUE)); -assertTrue(Number.isInteger(Number.MAX_VALUE)); -assertTrue(Number.isInteger(Number.MIN_SAFE_INTEGER)); -assertTrue(Number.isInteger(Number.MIN_SAFE_INTEGER - 13)); -assertTrue(Number.isInteger(Number.MAX_SAFE_INTEGER)); -assertTrue(Number.isInteger(Number.MAX_SAFE_INTEGER + 23)); -assertFalse(Number.isInteger(Number.NaN)); -assertFalse(Number.isInteger(Number.POSITIVE_INFINITY)); -assertFalse(Number.isInteger(Number.NEGATIVE_INFINITY)); -assertFalse(Number.isInteger(1/0)); -assertFalse(Number.isInteger(-1/0)); -assertFalse(Number.isInteger(Number.EPSILON)); - -assertFalse(Number.isSafeInteger({})); -assertFalse(Number.isSafeInteger([])); -assertFalse(Number.isSafeInteger("s")); -assertFalse(Number.isSafeInteger(null)); -assertFalse(Number.isSafeInteger(undefined)); -assertFalse(Number.isSafeInteger(new Number(2))); -assertTrue(Number.isSafeInteger(0)); -assertTrue(Number.isSafeInteger(Number.MIN_SAFE_INTEGER)); -assertFalse(Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 13)); -assertTrue(Number.isSafeInteger(Number.MIN_SAFE_INTEGER + 13)); -assertTrue(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)); -assertFalse(Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 23)); -assertTrue(Number.isSafeInteger(Number.MAX_SAFE_INTEGER - 23)); -assertFalse(Number.isSafeInteger(Number.MIN_VALUE)); -assertFalse(Number.isSafeInteger(Number.MAX_VALUE)); -assertFalse(Number.isSafeInteger(Number.NaN)); -assertFalse(Number.isSafeInteger(Number.POSITIVE_INFINITY)); -assertFalse(Number.isSafeInteger(Number.NEGATIVE_INFINITY)); -assertFalse(Number.isSafeInteger(1/0)); -assertFalse(Number.isSafeInteger(-1/0)); -assertFalse(Number.isSafeInteger(Number.EPSILON)); - -var near_upper = Math.pow(2, 52); -assertTrue(Number.isSafeInteger(near_upper)); -assertFalse(Number.isSafeInteger(2 * near_upper)); -assertTrue(Number.isSafeInteger(2 * near_upper - 1)); -assertTrue(Number.isSafeInteger(2 * near_upper - 2)); -assertFalse(Number.isSafeInteger(2 * near_upper + 1)); -assertFalse(Number.isSafeInteger(2 * near_upper + 2)); -assertFalse(Number.isSafeInteger(2 * near_upper + 7)); - -var near_lower = -near_upper; -assertTrue(Number.isSafeInteger(near_lower)); -assertFalse(Number.isSafeInteger(2 * near_lower)); -assertTrue(Number.isSafeInteger(2 * near_lower + 1)); -assertTrue(Number.isSafeInteger(2 * near_lower + 2)); -assertFalse(Number.isSafeInteger(2 * near_lower - 1)); -assertFalse(Number.isSafeInteger(2 * near_lower - 2)); -assertFalse(Number.isSafeInteger(2 * near_lower - 7)); diff --git a/implementation-contributed/v8/mjsunit/number-isnan-opt.js b/implementation-contributed/v8/mjsunit/number-isnan-opt.js deleted file mode 100644 index a5d4b9f3372..00000000000 --- a/implementation-contributed/v8/mjsunit/number-isnan-opt.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo(x) { return Number.isNaN(x); } - - assertTrue(foo(+undefined)); - assertFalse(foo(undefined)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(+undefined)); - assertFalse(foo(undefined)); -})(); - -(function() { - function foo(x) { return Number.isNaN(+x); } - - assertTrue(foo(+undefined)); - assertFalse(foo(0)); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo(+undefined)); - assertFalse(foo(0)); -})(); - -(function() { - function foo(x) { return Number.isNaN(x|0); } - - assertFalse(foo(+undefined)); - assertFalse(foo(0)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(+undefined)); - assertFalse(foo(0)); -})(); - -(function() { - function foo(x) { return Number.isNaN("" + x); } - - assertFalse(foo(undefined)); - assertFalse(foo(0)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(undefined)); - assertFalse(foo(0)); -})(); - -(function() { - function foo(x) { return Number.isNaN(0/0); } - - assertTrue(foo()); - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); - assertTrue(foo()); -})(); diff --git a/implementation-contributed/v8/mjsunit/number-limits.js b/implementation-contributed/v8/mjsunit/number-limits.js deleted file mode 100644 index 99ed4e1b41b..00000000000 --- a/implementation-contributed/v8/mjsunit/number-limits.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Ensure that Number.MAX_VALUE and Number.MIN_VALUE are extreme. -function testLimits() { - var i; var eps; - for (i = 0, eps = 1; i < 1100; i++, eps /= 2) { - var mulAboveMax = Number.MAX_VALUE * (1 + eps); - var addAboveMax = Number.MAX_VALUE + 1/eps; - var mulBelowMin = Number.MIN_VALUE * (1 - eps); - var addBelowMin = Number.MIN_VALUE - eps; - assertTrue(mulAboveMax == Number.MAX_VALUE || - mulAboveMax == Infinity, "mul" + i); - assertTrue(addAboveMax == Number.MAX_VALUE || - addAboveMax == Infinity, "add" + i); - assertTrue(mulBelowMin == Number.MIN_VALUE || - mulBelowMin <= 0, "mul2" + i); - assertTrue(addBelowMin == Number.MIN_VALUE || - addBelowMin <= 0, "add2" + i); - } -} - -testLimits(); diff --git a/implementation-contributed/v8/mjsunit/number-literal.js b/implementation-contributed/v8/mjsunit/number-literal.js deleted file mode 100644 index 7191a1c76fa..00000000000 --- a/implementation-contributed/v8/mjsunit/number-literal.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function test(message, a, b, skipStrictMode) { - assertSame(eval(a), eval(b), message); - if (!skipStrictMode) { - (function() { - 'use strict'; - assertSame(eval(a), eval(b), message); - })(); - } -} - -test('hex-int', '0x20', '32'); -test('oct-int', '040', '32', true); // Octals disallowed in strict mode. -test('dec-int', '32.00', '32'); -test('dec-underflow-int', '32.00000000000000000000000000000000000000001', '32'); -test('exp-int', '3.2e1', '32'); -test('exp-int', '3200e-2', '32'); -test('overflow-inf', '1e2000', 'Infinity'); -test('overflow-inf-exact', '1.797693134862315808e+308', 'Infinity'); -test('non-overflow-inf-exact', '1.797693134862315807e+308', - '1.7976931348623157e+308'); -test('underflow-0', '1e-2000', '0'); -test('underflow-0-exact', '2.4703282292062E-324', '0'); -test('non-underflow-0-exact', '2.4703282292063E-324', '5e-324'); -test('precission-loss-high', '9007199254740992', '9007199254740993'); -test('precission-loss-low', '1.9999999999999998', '1.9999999999999997'); -test('non-canonical-literal-int', '1.0', '1'); -test('non-canonical-literal-frac', '1.50', '1.5'); -test('rounding-down', '1.12512512512512452', '1.1251251251251244'); -test('rounding-up', '1.12512512512512453', '1.1251251251251246'); diff --git a/implementation-contributed/v8/mjsunit/number-string-index-call.js b/implementation-contributed/v8/mjsunit/number-string-index-call.js deleted file mode 100644 index 85b79d1ca29..00000000000 --- a/implementation-contributed/v8/mjsunit/number-string-index-call.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var callbacks = [ function() {return 'foo'}, "nonobject", /abc/ ]; -assertEquals('foo', callbacks['0']()); -assertThrows("callbacks['1']()"); -assertThrows("callbacks['2']('abcdefg')"); diff --git a/implementation-contributed/v8/mjsunit/number-tostring-add.js b/implementation-contributed/v8/mjsunit/number-tostring-add.js deleted file mode 100644 index 41d3cbd5250..00000000000 --- a/implementation-contributed/v8/mjsunit/number-tostring-add.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function add(a, b) { - return a + b; -} - -function testToString(a, b) { - assertEquals(a, b.toString()); - assertEquals(a, "" + b); - assertEquals(a, add("", b)); - assertEquals("yes" + a, add("yes", b)); -} - -testToString("NaN", (NaN)); -testToString("Infinity", (1/0)); -testToString("-Infinity", (-1/0)); -testToString("0", (0)); -testToString("9", (9)); -testToString("90", (90)); -testToString("90.12", (90.12)); -testToString("0.1", (0.1)); -testToString("0.01", (0.01)); -testToString("0.0123", (0.0123)); -testToString("111111111111111110000", (111111111111111111111)); -testToString("1.1111111111111111e+21", (1111111111111111111111)); -testToString("1.1111111111111111e+22", (11111111111111111111111)); -testToString("0.00001", (0.00001)); -testToString("0.000001", (0.000001)); -testToString("1e-7", (0.0000001)); -testToString("1.2e-7", (0.00000012)); -testToString("1.23e-7", (0.000000123)); -testToString("1e-8", (0.00000001)); -testToString("1.2e-8", (0.000000012)); -testToString("1.23e-8", (0.0000000123)); - -testToString("0", (-0)); -testToString("-9", (-9)); -testToString("-90", (-90)); -testToString("-90.12", (-90.12)); -testToString("-0.1", (-0.1)); -testToString("-0.01", (-0.01)); -testToString("-0.0123", (-0.0123)); -testToString("-111111111111111110000", (-111111111111111111111)); -testToString("-1.1111111111111111e+21", (-1111111111111111111111)); -testToString("-1.1111111111111111e+22", (-11111111111111111111111)); -testToString("-0.00001", (-0.00001)); -testToString("-0.000001", (-0.000001)); -testToString("-1e-7", (-0.0000001)); -testToString("-1.2e-7", (-0.00000012)); -testToString("-1.23e-7", (-0.000000123)); -testToString("-1e-8", (-0.00000001)); -testToString("-1.2e-8", (-0.000000012)); -testToString("-1.23e-8", (-0.0000000123)); - -testToString("1000", (1000)); -testToString("0.00001", (0.00001)); -testToString("1000000000000000100", (1000000000000000128)); -testToString("1e+21", (1000000000000000012800)); -testToString("-1e+21", (-1000000000000000012800)); -testToString("1e-7", (0.0000001)); -testToString("-1e-7", (-0.0000001)); -testToString("1.0000000000000001e+21", (1000000000000000128000)); -testToString("0.000001", (0.000001)); -testToString("1e-7", (0.0000001)); diff --git a/implementation-contributed/v8/mjsunit/number-tostring-big-integer.js b/implementation-contributed/v8/mjsunit/number-tostring-big-integer.js deleted file mode 100644 index e1b6b4bf30a..00000000000 --- a/implementation-contributed/v8/mjsunit/number-tostring-big-integer.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This file is a subset of the number-tostring mjsunit tests which test -// precision for base conversion for large integers. - -// ---------------------------------------------------------------------- -// toString -assertEquals("314404114120101444444424000000000000000", - (1.2345e+27).toString(5)); diff --git a/implementation-contributed/v8/mjsunit/number-tostring-func.js b/implementation-contributed/v8/mjsunit/number-tostring-func.js deleted file mode 100644 index 4fc97e5e0da..00000000000 --- a/implementation-contributed/v8/mjsunit/number-tostring-func.js +++ /dev/null @@ -1,364 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// ---------------------------------------------------------------------- -// toString -function testToString(a, b) { - assertEquals(a, b.toString()); -} - -function testToStringP(a, b, c) { - assertEquals(a, b.toString(c)); -} - -testToString("NaN", (NaN)); -testToString("Infinity", (1/0)); -testToString("-Infinity", (-1/0)); -testToString("0", (0)); -testToString("9", (9)); -testToString("90", (90)); -testToString("90.12", (90.12)); -testToString("0.1", (0.1)); -testToString("0.01", (0.01)); -testToString("0.0123", (0.0123)); -testToString("111111111111111110000", (111111111111111111111)); -testToString("1.1111111111111111e+21", (1111111111111111111111)); -testToString("1.1111111111111111e+22", (11111111111111111111111)); -testToString("0.00001", (0.00001)); -testToString("0.000001", (0.000001)); -testToString("1e-7", (0.0000001)); -testToString("1.2e-7", (0.00000012)); -testToString("1.23e-7", (0.000000123)); -testToString("1e-8", (0.00000001)); -testToString("1.2e-8", (0.000000012)); -testToString("1.23e-8", (0.0000000123)); - -testToString("0", (-0)); -testToString("-9", (-9)); -testToString("-90", (-90)); -testToString("-90.12", (-90.12)); -testToString("-0.1", (-0.1)); -testToString("-0.01", (-0.01)); -testToString("-0.0123", (-0.0123)); -testToString("-111111111111111110000", (-111111111111111111111)); -testToString("-1.1111111111111111e+21", (-1111111111111111111111)); -testToString("-1.1111111111111111e+22", (-11111111111111111111111)); -testToString("-0.00001", (-0.00001)); -testToString("-0.000001", (-0.000001)); -testToString("-1e-7", (-0.0000001)); -testToString("-1.2e-7", (-0.00000012)); -testToString("-1.23e-7", (-0.000000123)); -testToString("-1e-8", (-0.00000001)); -testToString("-1.2e-8", (-0.000000012)); -testToString("-1.23e-8", (-0.0000000123)); - -testToString("1000", (1000)); -testToString("0.00001", (0.00001)); -testToString("1000000000000000100", (1000000000000000128)); -testToString("1e+21", (1000000000000000012800)); -testToString("-1e+21", (-1000000000000000012800)); -testToString("1e-7", (0.0000001)); -testToString("-1e-7", (-0.0000001)); -testToString("1.0000000000000001e+21", (1000000000000000128000)); -testToString("0.000001", (0.000001)); -testToString("1e-7", (0.0000001)); - -testToStringP("NaN", (NaN), 16); -testToStringP("Infinity", (1/0), 16); -testToStringP("-Infinity", (-1/0), 16); -testToStringP("0", (0), 16); -testToStringP("9", (9), 16); -testToStringP("5a", (90), 16); -testToStringP("5a.1eb851eb852", (90.12), 16); -testToStringP("0.1999999999999a", (0.1), 16); -testToStringP("0.028f5c28f5c28f6", (0.01), 16); -testToStringP("0.032617c1bda511a", (0.0123), 16); -testToStringP("605f9f6dd18bc8000", (111111111111111111111), 16); -testToStringP("3c3bc3a4a2f75c0000", (1111111111111111111111), 16); -testToStringP("25a55a46e5da9a00000", (11111111111111111111111), 16); -testToStringP("0.0000a7c5ac471b4788", (0.00001), 16); -testToStringP("0.000010c6f7a0b5ed8d", (0.000001), 16); -testToStringP("0.000001ad7f29abcaf48", (0.0000001), 16); -testToStringP("0.000002036565348d256", (0.00000012), 16); -testToStringP("0.0000021047ee22aa466", (0.000000123), 16); -testToStringP("0.0000002af31dc4611874", (0.00000001), 16); -testToStringP("0.000000338a23b87483be", (0.000000012), 16); -testToStringP("0.00000034d3fe36aaa0a2", (0.0000000123), 16); - -testToStringP("0", (-0), 16); -testToStringP("-9", (-9), 16); -testToStringP("-5a", (-90), 16); -testToStringP("-5a.1eb851eb852", (-90.12), 16); -testToStringP("-0.1999999999999a", (-0.1), 16); -testToStringP("-0.028f5c28f5c28f6", (-0.01), 16); -testToStringP("-0.032617c1bda511a", (-0.0123), 16); -testToStringP("-605f9f6dd18bc8000", (-111111111111111111111), 16); -testToStringP("-3c3bc3a4a2f75c0000", (-1111111111111111111111), 16); -testToStringP("-25a55a46e5da9a00000", (-11111111111111111111111), 16); -testToStringP("-0.0000a7c5ac471b4788", (-0.00001), 16); -testToStringP("-0.000010c6f7a0b5ed8d", (-0.000001), 16); -testToStringP("-0.000001ad7f29abcaf48", (-0.0000001), 16); -testToStringP("-0.000002036565348d256", (-0.00000012), 16); -testToStringP("-0.0000021047ee22aa466", (-0.000000123), 16); -testToStringP("-0.0000002af31dc4611874", (-0.00000001), 16); -testToStringP("-0.000000338a23b87483be", (-0.000000012), 16); -testToStringP("-0.00000034d3fe36aaa0a2", (-0.0000000123), 16); - -testToString("4294967296", Math.pow(2,32)); -testToStringP("ffffffff", (Math.pow(2,32)-1), 16); -testToStringP("11111111111111111111111111111111", (Math.pow(2,32)-1), 2); -testToStringP("5yc1z", (10000007), 36); -testToStringP("0", (0), 36); -testToStringP("0", (0), 16); -testToStringP("0", (0), 10); -testToStringP("0", (0), 8); -testToStringP("0", (0), 2); -testToStringP("100000000000000000000000000000000", Math.pow(2,32), 2); -testToStringP("100000000000000000000000000000001", (Math.pow(2,32) + 1), 2); -testToStringP("100000000000080", (0x100000000000081), 16); -testToStringP("1000000000000100", (-(-'0x1000000000000081')), 16); -testToStringP("1000000000000000", (-(-'0x1000000000000080')), 16); -testToStringP("1000000000000000", (-(-'0x100000000000007F')), 16); -testToStringP("100000000000000000000000000000000000000000000000010000000", (0x100000000000081), 2); -testToStringP("-11111111111111111111111111111111", (-(Math.pow(2,32)-1)), 2); -testToStringP("-5yc1z", (-10000007), 36); -testToStringP("-100000000000000000000000000000000", (-Math.pow(2,32)), 2); -testToStringP("-100000000000000000000000000000001", (-(Math.pow(2,32) + 1)), 2); -testToStringP("-100000000000080", (-0x100000000000081), 16); -testToStringP("-100000000000000000000000000000000000000000000000010000000", (-0x100000000000081), 2); -testToStringP("8.8", (8.5), 16); -testToStringP("-8.8", (-8.5), 16); - -// ---------------------------------------------------------------------- -// toFixed -function testToFixed(a, b, c) { - assertEquals(a, b.toFixed(c)); -} - -testToFixed("NaN", (NaN), (2)); -testToFixed("Infinity", (1/0), (2)); -testToFixed("-Infinity", (-1/0), (2)); - -testToFixed("1.1111111111111111e+21", (1111111111111111111111), (8)); -testToFixed("0.1", (0.1), (1)); -testToFixed("0.10", (0.1), (2)); -testToFixed("0.100", (0.1), (3)); -testToFixed("0.01", (0.01), (2)); -testToFixed("0.010", (0.01), (3)); -testToFixed("0.0100", (0.01), (4)); -testToFixed("0.00", (0.001), (2)); -testToFixed("0.001", (0.001), (3)); -testToFixed("0.0010", (0.001), (4)); -testToFixed("1.0000", (1), (4)); -testToFixed("1.0", (1), (1)); -testToFixed("1", (1), (0)); -testToFixed("12", (12), (0)); -testToFixed("1", (1.1), (0)); -testToFixed("12", (12.1), (0)); -testToFixed("1", (1.12), (0)); -testToFixed("12", (12.12), (0)); -testToFixed("0.0000006", (0.0000006), (7)); -testToFixed("0.00000006", (0.00000006), (8)); -testToFixed("0.000000060", (0.00000006), (9)); -testToFixed("0.0000000600", (0.00000006), (10)); -testToFixed("0", (0), (0)); -testToFixed("0.0", (0), (1)); -testToFixed("0.00", (0), (2)); - -testToFixed("-1.1111111111111111e+21", (-1111111111111111111111), (8)); -testToFixed("-0.1", (-0.1), (1)); -testToFixed("-0.10", (-0.1), (2)); -testToFixed("-0.100", (-0.1), (3)); -testToFixed("-0.01", (-0.01), (2)); -testToFixed("-0.010", (-0.01), (3)); -testToFixed("-0.0100", (-0.01), (4)); -testToFixed("-0.00", (-0.001), (2)); -testToFixed("-0.001", (-0.001), (3)); -testToFixed("-0.0010", (-0.001), (4)); -testToFixed("-1.0000", (-1), (4)); -testToFixed("-1.0", (-1), (1)); -testToFixed("-1", (-1), (0)); -testToFixed("-1", (-1.1), (0)); -testToFixed("-12", (-12.1), (0)); -testToFixed("-1", (-1.12), (0)); -testToFixed("-12", (-12.12), (0)); -testToFixed("-0.0000006", (-0.0000006), (7)); -testToFixed("-0.00000006", (-0.00000006), (8)); -testToFixed("-0.000000060", (-0.00000006), (9)); -testToFixed("-0.0000000600", (-0.00000006), (10)); -testToFixed("0", (-0), (0)); -testToFixed("0.0", (-0), (1)); -testToFixed("0.00", (-0), (2)); - -testToFixed("0.00001", (0.00001), (5)); -testToFixed("0.00000000000000000010", (0.0000000000000000001), (20)); -testToFixed("0.00001000000000000", (0.00001), (17)); -testToFixed("1.00000000000000000", (1), (17)); -testToFixed("100000000000000128.0", (100000000000000128), (1)); -testToFixed("10000000000000128.00", (10000000000000128), (2)); -testToFixed("10000000000000128.00000000000000000000", (10000000000000128), (20)); -testToFixed("-42.000", (-42), (3)); -testToFixed("-0.00000000000000000010", (-0.0000000000000000001), (20)); -testToFixed("0.12312312312312299889", (0.123123123123123), (20)); - -assertEquals("-1000000000000000128", (-1000000000000000128).toFixed()); -assertEquals("0", (0).toFixed()); -assertEquals("1000000000000000128", (1000000000000000128).toFixed()); -assertEquals("1000", (1000).toFixed()); -assertEquals("0", (0.00001).toFixed()); -// Test that we round up even when the last digit generated is even. -// dtoa does not do this in its original form. -assertEquals("1", 0.5.toFixed(0), "0.5.toFixed(0)"); -assertEquals("-1", (-0.5).toFixed(0), "(-0.5).toFixed(0)"); -assertEquals("1.3", 1.25.toFixed(1), "1.25.toFixed(1)"); -// This is bizare, but Spidermonkey and KJS behave the same. -assertEquals("234.2040", (234.20405).toFixed(4), "234.2040.toFixed(4)"); -assertEquals("234.2041", (234.2040506).toFixed(4)); - -// ---------------------------------------------------------------------- -// toExponential -function testToExponential(a, b) { - assertEquals(a, b.toExponential()); -} - -function testToExponentialP(a, b, c) { - assertEquals(a, b.toExponential(c)); -} - -testToExponential("1e+0", (1)); -testToExponential("1.1e+1", (11)); -testToExponential("1.12e+2", (112)); -testToExponential("1e-1", (0.1)); -testToExponential("1.1e-1", (0.11)); -testToExponential("1.12e-1", (0.112)); -testToExponential("-1e+0", (-1)); -testToExponential("-1.1e+1", (-11)); -testToExponential("-1.12e+2", (-112)); -testToExponential("-1e-1", (-0.1)); -testToExponential("-1.1e-1", (-0.11)); -testToExponential("-1.12e-1", (-0.112)); -testToExponential("0e+0", (0)); -testToExponential("1.12356e-4", (0.000112356)); -testToExponential("-1.12356e-4", (-0.000112356)); - -testToExponentialP("1e+0", (1), (0)); -testToExponentialP("1e+1", (11), (0)); -testToExponentialP("1e+2", (112), (0)); -testToExponentialP("1.0e+0", (1), (1)); -testToExponentialP("1.1e+1", (11), (1)); -testToExponentialP("1.1e+2", (112), (1)); -testToExponentialP("1.00e+0", (1), (2)); -testToExponentialP("1.10e+1", (11), (2)); -testToExponentialP("1.12e+2", (112), (2)); -testToExponentialP("1.000e+0", (1), (3)); -testToExponentialP("1.100e+1", (11), (3)); -testToExponentialP("1.120e+2", (112), (3)); -testToExponentialP("1e-1", (0.1), (0)); -testToExponentialP("1e-1", (0.11), (0)); -testToExponentialP("1e-1", (0.112), (0)); -testToExponentialP("1.0e-1", (0.1), (1)); -testToExponentialP("1.1e-1", (0.11), (1)); -testToExponentialP("1.1e-1", (0.112), (1)); -testToExponentialP("1.00e-1", (0.1), (2)); -testToExponentialP("1.10e-1", (0.11), (2)); -testToExponentialP("1.12e-1", (0.112), (2)); -testToExponentialP("1.000e-1", (0.1), (3)); -testToExponentialP("1.100e-1", (0.11), (3)); -testToExponentialP("1.120e-1", (0.112), (3)); - -testToExponentialP("-1e+0", (-1), (0)); -testToExponentialP("-1e+1", (-11), (0)); -testToExponentialP("-1e+2", (-112), (0)); -testToExponentialP("-1.0e+0", (-1), (1)); -testToExponentialP("-1.1e+1", (-11), (1)); -testToExponentialP("-1.1e+2", (-112), (1)); -testToExponentialP("-1.00e+0", (-1), (2)); -testToExponentialP("-1.10e+1", (-11), (2)); -testToExponentialP("-1.12e+2", (-112), (2)); -testToExponentialP("-1.000e+0", (-1), (3)); -testToExponentialP("-1.100e+1", (-11), (3)); -testToExponentialP("-1.120e+2", (-112), (3)); -testToExponentialP("-1e-1", (-0.1), (0)); -testToExponentialP("-1e-1", (-0.11), (0)); -testToExponentialP("-1e-1", (-0.112), (0)); -testToExponentialP("-1.0e-1", (-0.1), (1)); -testToExponentialP("-1.1e-1", (-0.11), (1)); -testToExponentialP("-1.1e-1", (-0.112), (1)); -testToExponentialP("-1.00e-1", (-0.1), (2)); -testToExponentialP("-1.10e-1", (-0.11), (2)); -testToExponentialP("-1.12e-1", (-0.112), (2)); -testToExponentialP("-1.000e-1", (-0.1), (3)); -testToExponentialP("-1.100e-1", (-0.11), (3)); -testToExponentialP("-1.120e-1", (-0.112), (3)); - -testToExponentialP("NaN", (NaN), (2)); -testToExponentialP("Infinity", (Infinity), (2)); -testToExponentialP("-Infinity", (-Infinity), (2)); -testToExponentialP("1e+0", (1), (0)); -testToExponentialP("0.00e+0", (0), (2)); -testToExponentialP("1e+1", (11.2356), (0)); -testToExponentialP("1.1236e+1", (11.2356), (4)); -testToExponentialP("1.1236e-4", (0.000112356), (4)); -testToExponentialP("-1.1236e-4", (-0.000112356), (4)); - -// ---------------------------------------------------------------------- -// toPrecision -function testToPrecision(a, b, c) { - assertEquals(a, b.toPrecision(c)); -} - -testToPrecision("NaN", (NaN), (1)); -testToPrecision("Infinity", (Infinity), (2)); -testToPrecision("-Infinity", (-Infinity), (2)); -testToPrecision("0.000555000000000000", (0.000555), (15)); -testToPrecision("5.55000000000000e-7", (0.000000555), (15)); -testToPrecision("-5.55000000000000e-7", (-0.000000555), (15)); -testToPrecision("1e+8", (123456789), (1)); -testToPrecision("123456789", (123456789), (9)); -testToPrecision("1.2345679e+8", (123456789), (8)); -testToPrecision("1.234568e+8", (123456789), (7)); -testToPrecision("-1.234568e+8", (-123456789), (7)); -testToPrecision("-1.2e-9", Number(-.0000000012345), (2)); -testToPrecision("-1.2e-8", Number(-.000000012345), (2)); -testToPrecision("-1.2e-7", Number(-.00000012345), (2)); -testToPrecision("-0.0000012", Number(-.0000012345), (2)); -testToPrecision("-0.000012", Number(-.000012345), (2)); -testToPrecision("-0.00012", Number(-.00012345), (2)); -testToPrecision("-0.0012", Number(-.0012345), (2)); -testToPrecision("-0.012", Number(-.012345), (2)); -testToPrecision("-0.12", Number(-.12345), (2)); -testToPrecision("-1.2", Number(-1.2345), (2)); -testToPrecision("-12", Number(-12.345), (2)); -testToPrecision("-1.2e+2", Number(-123.45), (2)); -testToPrecision("-1.2e+3", Number(-1234.5), (2)); -testToPrecision("-1.2e+4", Number(-12345), (2)); -testToPrecision("-1.235e+4", Number(-12345.67), (4)); -testToPrecision("-1.234e+4", Number(-12344.67), (4)); -// Test that we round up even when the last digit generated is even. -// dtoa does not do this in its original form. -assertEquals("1.3", 1.25.toPrecision(2), "1.25.toPrecision(2)"); -assertEquals("1.4", 1.35.toPrecision(2), "1.35.toPrecision(2)"); diff --git a/implementation-contributed/v8/mjsunit/number-tostring-small.js b/implementation-contributed/v8/mjsunit/number-tostring-small.js deleted file mode 100644 index 068b3a46e56..00000000000 --- a/implementation-contributed/v8/mjsunit/number-tostring-small.js +++ /dev/null @@ -1,394 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This file is a concatenation of the number-tostring and -// to-precision mjsunit tests where the mjsunit assert code has been -// removed. - -// ---------------------------------------------------------------------- -// toString -(NaN).toString(); -(1/0).toString(); -(-1/0).toString(); -(0).toString(); -(9).toString(); -(90).toString(); -(90.12).toString(); -(0.1).toString(); -(0.01).toString(); -(0.0123).toString(); -(111111111111111111111).toString(); -(1111111111111111111111).toString(); -(11111111111111111111111).toString(); -(0.00001).toString(); -(0.000001).toString(); -(0.0000001).toString(); -(0.00000012).toString(); -(0.000000123).toString(); -(0.00000001).toString(); -(0.000000012).toString(); -(0.0000000123).toString(); - -(-0).toString(); -(-9).toString(); -(-90).toString(); -(-90.12).toString(); -(-0.1).toString(); -(-0.01).toString(); -(-0.0123).toString(); -(-111111111111111111111).toString(); -(-1111111111111111111111).toString(); -(-11111111111111111111111).toString(); -(-0.00001).toString(); -(-0.000001).toString(); -(-0.0000001).toString(); -(-0.00000012).toString(); -(-0.000000123).toString(); -(-0.00000001).toString(); -(-0.000000012).toString(); -(-0.0000000123).toString(); - -(NaN).toString(16); -(1/0).toString(16); -(-1/0).toString(16); -(0).toString(16); -(9).toString(16); -(90).toString(16); -(90.12).toString(16); -(0.1).toString(16); -(0.01).toString(16); -(0.0123).toString(16); -(111111111111111111111).toString(16); -(1111111111111111111111).toString(16); -(11111111111111111111111).toString(16); -(0.00001).toString(16); -(0.000001).toString(16); -(0.0000001).toString(16); -(0.00000012).toString(16); -(0.000000123).toString(16); -(0.00000001).toString(16); -(0.000000012).toString(16); -(0.0000000123).toString(16); - -(-0).toString(16); -(-9).toString(16); -(-90).toString(16); -(-90.12).toString(16); -(-0.1).toString(16); -(-0.01).toString(16); -(-0.0123).toString(16); -(-111111111111111111111).toString(16); -(-1111111111111111111111).toString(16); -(-11111111111111111111111).toString(16); -(-0.00001).toString(16); -(-0.000001).toString(16); -(-0.0000001).toString(16); -(-0.00000012).toString(16); -(-0.000000123).toString(16); -(-0.00000001).toString(16); -(-0.000000012).toString(16); -(-0.0000000123).toString(16); - -(2,32).toString(); -(Math.pow(2,32)-1).toString(16); -(Math.pow(2,32)-1).toString(2); -(10000007).toString(36); -(0).toString(36); -(0).toString(16); -(0).toString(10); -(0).toString(8); -(0).toString(2); -(2,32).toString(2); -(Math.pow(2,32) + 1).toString(2); -(0x100000000000081).toString(16); -(-(-'0x1000000000000081')).toString(16); -(0x100000000000081).toString(2); -(-(Math.pow(2,32)-1)).toString(2); -(-10000007).toString(36); -(-Math.pow(2,32)).toString(2); -(-(Math.pow(2,32) + 1)).toString(2); -(-0x100000000000081).toString(16); -(-0x100000000000081).toString(2); -(1000).toString(); -(0.00001).toString(); -(1000000000000000128).toString(); -(1000000000000000012800).toString(); -(-1000000000000000012800).toString(); -(0.0000001).toString(); -(-0.0000001).toString(); -(1000000000000000128000).toString(); -(0.000001).toString(); -(0.0000001).toString(); -(8.5).toString(16); -(-8.5).toString(16); - -// ---------------------------------------------------------------------- -// toFixed -(NaN).toFixed(2); -(1/0).toFixed(2); -(-1/0).toFixed(2); - -(1111111111111111111111).toFixed(8); -(0.1).toFixed(1); -(0.1).toFixed(2); -(0.1).toFixed(3); -(0.01).toFixed(2); -(0.01).toFixed(3); -(0.01).toFixed(4); -(0.001).toFixed(2); -(0.001).toFixed(3); -(0.001).toFixed(4); -(1).toFixed(4); -(1).toFixed(1); -(1).toFixed(0); -(12).toFixed(0); -(1.1).toFixed(0); -(12.1).toFixed(0); -(1.12).toFixed(0); -(12.12).toFixed(0); -(0.0000006).toFixed(7); -(0.00000006).toFixed(8); -(0.00000006).toFixed(9); -(0.00000006).toFixed(10); -(0).toFixed(0); -(0).toFixed(1); -(0).toFixed(2); - -(-1111111111111111111111).toFixed(8); -(-0.1).toFixed(1); -(-0.1).toFixed(2); -(-0.1).toFixed(3); -(-0.01).toFixed(2); -(-0.01).toFixed(3); -(-0.01).toFixed(4); -(-0.001).toFixed(2); -(-0.001).toFixed(3); -(-0.001).toFixed(4); -(-1).toFixed(4); -(-1).toFixed(1); -(-1).toFixed(0); -(-1.1).toFixed(0); -(-12.1).toFixed(0); -(-1.12).toFixed(0); -(-12.12).toFixed(0); -(-0.0000006).toFixed(7); -(-0.00000006).toFixed(8); -(-0.00000006).toFixed(9); -(-0.00000006).toFixed(10); -(-0).toFixed(0); -(-0).toFixed(1); -(-0).toFixed(2); - -(1000).toFixed(); -(0.00001).toFixed(); -(0.00001).toFixed(5); -(0.0000000000000000001).toFixed(20); -(0.00001).toFixed(17); -(1).toFixed(17); -(1000000000000000128).toFixed(); -(100000000000000128).toFixed(1); -(10000000000000128).toFixed(2); -(10000000000000128).toFixed(20); -(0).toFixed(); -((-42).toFixed(3)); -(-1000000000000000128).toFixed(); -(-0.0000000000000000001).toFixed(20); -(0.123123123123123).toFixed(20); -// Test that we round up even when the last digit generated is even. -// dtoa does not do this in its original form. -(0.5).toFixed(0); -(-0.5).toFixed(0); -(1.25).toFixed(1); -// This is bizare, but Spidermonkey and KJS behave the same. -(234.20405).toFixed(4); -(234.2040506).toFixed(4); - -// ---------------------------------------------------------------------- -// toExponential -(1).toExponential(); -(11).toExponential(); -(112).toExponential(); -(1).toExponential(0); -(11).toExponential(0); -(112).toExponential(0); -(1).toExponential(1); -(11).toExponential(1); -(112).toExponential(1); -(1).toExponential(2); -(11).toExponential(2); -(112).toExponential(2); -(1).toExponential(3); -(11).toExponential(3); -(112).toExponential(3); -(0.1).toExponential(); -(0.11).toExponential(); -(0.112).toExponential(); -(0.1).toExponential(0); -(0.11).toExponential(0); -(0.112).toExponential(0); -(0.1).toExponential(1); -(0.11).toExponential(1); -(0.112).toExponential(1); -(0.1).toExponential(2); -(0.11).toExponential(2); -(0.112).toExponential(2); -(0.1).toExponential(3); -(0.11).toExponential(3); -(0.112).toExponential(3); - -(-1).toExponential(); -(-11).toExponential(); -(-112).toExponential(); -(-1).toExponential(0); -(-11).toExponential(0); -(-112).toExponential(0); -(-1).toExponential(1); -(-11).toExponential(1); -(-112).toExponential(1); -(-1).toExponential(2); -(-11).toExponential(2); -(-112).toExponential(2); -(-1).toExponential(3); -(-11).toExponential(3); -(-112).toExponential(3); -(-0.1).toExponential(); -(-0.11).toExponential(); -(-0.112).toExponential(); -(-0.1).toExponential(0); -(-0.11).toExponential(0); -(-0.112).toExponential(0); -(-0.1).toExponential(1); -(-0.11).toExponential(1); -(-0.112).toExponential(1); -(-0.1).toExponential(2); -(-0.11).toExponential(2); -(-0.112).toExponential(2); -(-0.1).toExponential(3); -(-0.11).toExponential(3); -(-0.112).toExponential(3); - -(NaN).toExponential(2); -(Infinity).toExponential(2); -(-Infinity).toExponential(2); -(1).toExponential(0); -(0).toExponential(); -(0).toExponential(2); -(11.2356).toExponential(0); -(11.2356).toExponential(4); -(0.000112356).toExponential(4); -(-0.000112356).toExponential(4); -(0.000112356).toExponential(); -(-0.000112356).toExponential(); - -// ---------------------------------------------------------------------- -// toPrecision -(NaN).toPrecision(1); -(Infinity).toPrecision(2); -(-Infinity).toPrecision(2); -(0.000555).toPrecision(15); -(0.000000555).toPrecision(15); -(-0.000000555).toPrecision(15); -(123456789).toPrecision(1); -(123456789).toPrecision(9); -(123456789).toPrecision(8); -(123456789).toPrecision(7); -(-123456789).toPrecision(7); -(-.0000000012345).toPrecision(2); -(-.000000012345).toPrecision(2); -(-.00000012345).toPrecision(2); -(-.0000012345).toPrecision(2); -(-.000012345).toPrecision(2); -(-.00012345).toPrecision(2); -(-.0012345).toPrecision(2); -(-.012345).toPrecision(2); -(-.12345).toPrecision(2); -(-1.2345).toPrecision(2); -(-12.345).toPrecision(2); -(-123.45).toPrecision(2); -(-1234.5).toPrecision(2); -(-12345).toPrecision(2); -(-12345.67).toPrecision(4); -Number(-12344.67).toPrecision(4); -// Test that we round up even when the last digit generated is even. -// dtoa does not do this in its original form. -(1.25).toPrecision(2); -(1.35).toPrecision(2); - -// Test the exponential notation output. -(1.2345e+27).toPrecision(1); -(1.2345e+27).toPrecision(2); -(1.2345e+27).toPrecision(3); -(1.2345e+27).toPrecision(4); -(1.2345e+27).toPrecision(5); -(1.2345e+27).toPrecision(6); -(1.2345e+27).toPrecision(7); - -(-1.2345e+27).toPrecision(1); -(-1.2345e+27).toPrecision(2); -(-1.2345e+27).toPrecision(3); -(-1.2345e+27).toPrecision(4); -(-1.2345e+27).toPrecision(5); -(-1.2345e+27).toPrecision(6); -(-1.2345e+27).toPrecision(7); - - -// Test the fixed notation output. -(7).toPrecision(1); -(7).toPrecision(2); -(7).toPrecision(3); - -(-7).toPrecision(1); -(-7).toPrecision(2); -(-7).toPrecision(3); - -(91).toPrecision(1); -(91).toPrecision(2); -(91).toPrecision(3); -(91).toPrecision(4); - -(-91).toPrecision(1); -(-91).toPrecision(2); -(-91).toPrecision(3); -(-91).toPrecision(4); - -(91.1234).toPrecision(1); -(91.1234).toPrecision(2); -(91.1234).toPrecision(3); -(91.1234).toPrecision(4); -(91.1234).toPrecision(5); -(91.1234).toPrecision(6); -(91.1234).toPrecision(7); -(91.1234).toPrecision(8); - -(-91.1234).toPrecision(1); -(-91.1234).toPrecision(2); -(-91.1234).toPrecision(3); -(-91.1234).toPrecision(4); -(-91.1234).toPrecision(5); -(-91.1234).toPrecision(6); -(-91.1234).toPrecision(7); -(-91.1234).toPrecision(8); diff --git a/implementation-contributed/v8/mjsunit/number-tostring.js b/implementation-contributed/v8/mjsunit/number-tostring.js deleted file mode 100644 index d428b697fe8..00000000000 --- a/implementation-contributed/v8/mjsunit/number-tostring.js +++ /dev/null @@ -1,344 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// ---------------------------------------------------------------------- -// toString -assertEquals("NaN", (NaN).toString()); -assertEquals("Infinity", (1/0).toString()); -assertEquals("-Infinity", (-1/0).toString()); -assertEquals("0", (0).toString()); -assertEquals("9", (9).toString()); -assertEquals("90", (90).toString()); -assertEquals("90.12", (90.12).toString()); -assertEquals("0.1", (0.1).toString()); -assertEquals("0.01", (0.01).toString()); -assertEquals("0.0123", (0.0123).toString()); -assertEquals("111111111111111110000", (111111111111111111111).toString()); -assertEquals("1.1111111111111111e+21", (1111111111111111111111).toString()); -assertEquals("1.1111111111111111e+22", (11111111111111111111111).toString()); -assertEquals("0.00001", (0.00001).toString()); -assertEquals("0.000001", (0.000001).toString()); -assertEquals("1e-7", (0.0000001).toString()); -assertEquals("1.2e-7", (0.00000012).toString()); -assertEquals("1.23e-7", (0.000000123).toString()); -assertEquals("1e-8", (0.00000001).toString()); -assertEquals("1.2e-8", (0.000000012).toString()); -assertEquals("1.23e-8", (0.0000000123).toString()); - -assertEquals("0", (-0).toString()); -assertEquals("-9", (-9).toString()); -assertEquals("-90", (-90).toString()); -assertEquals("-90.12", (-90.12).toString()); -assertEquals("-0.1", (-0.1).toString()); -assertEquals("-0.01", (-0.01).toString()); -assertEquals("-0.0123", (-0.0123).toString()); -assertEquals("-111111111111111110000", (-111111111111111111111).toString()); -assertEquals("-1.1111111111111111e+21", (-1111111111111111111111).toString()); -assertEquals("-1.1111111111111111e+22", (-11111111111111111111111).toString()); -assertEquals("-0.00001", (-0.00001).toString()); -assertEquals("-0.000001", (-0.000001).toString()); -assertEquals("-1e-7", (-0.0000001).toString()); -assertEquals("-1.2e-7", (-0.00000012).toString()); -assertEquals("-1.23e-7", (-0.000000123).toString()); -assertEquals("-1e-8", (-0.00000001).toString()); -assertEquals("-1.2e-8", (-0.000000012).toString()); -assertEquals("-1.23e-8", (-0.0000000123).toString()); - -assertEquals("NaN", (NaN).toString(16)); -assertEquals("Infinity", (1/0).toString(16)); -assertEquals("-Infinity", (-1/0).toString(16)); -assertEquals("0", (0).toString(16)); -assertEquals("9", (9).toString(16)); -assertEquals("5a", (90).toString(16)); -assertEquals("5a.1eb851eb852", (90.12).toString(16)); -assertEquals("0.1999999999999a", (0.1).toString(16)); -assertEquals("0.028f5c28f5c28f6", (0.01).toString(16)); -assertEquals("0.032617c1bda511a", (0.0123).toString(16)); -assertEquals("605f9f6dd18bc8000", (111111111111111111111).toString(16)); -assertEquals("3c3bc3a4a2f75c0000", (1111111111111111111111).toString(16)); -assertEquals("25a55a46e5da9a00000", (11111111111111111111111).toString(16)); -assertEquals("0.0000a7c5ac471b4788", (0.00001).toString(16)); -assertEquals("0.000010c6f7a0b5ed8d", (0.000001).toString(16)); -assertEquals("0.000001ad7f29abcaf48", (0.0000001).toString(16)); -assertEquals("0.000002036565348d256", (0.00000012).toString(16)); -assertEquals("0.0000021047ee22aa466", (0.000000123).toString(16)); -assertEquals("0.0000002af31dc4611874", (0.00000001).toString(16)); -assertEquals("0.000000338a23b87483be", (0.000000012).toString(16)); -assertEquals("0.00000034d3fe36aaa0a2", (0.0000000123).toString(16)); - -assertEquals("0", (-0).toString(16)); -assertEquals("-9", (-9).toString(16)); -assertEquals("-5a", (-90).toString(16)); -assertEquals("-5a.1eb851eb852", (-90.12).toString(16)); -assertEquals("-0.1999999999999a", (-0.1).toString(16)); -assertEquals("-0.028f5c28f5c28f6", (-0.01).toString(16)); -assertEquals("-0.032617c1bda511a", (-0.0123).toString(16)); -assertEquals("-605f9f6dd18bc8000", (-111111111111111111111).toString(16)); -assertEquals("-3c3bc3a4a2f75c0000", (-1111111111111111111111).toString(16)); -assertEquals("-25a55a46e5da9a00000", (-11111111111111111111111).toString(16)); -assertEquals("-0.0000a7c5ac471b4788", (-0.00001).toString(16)); -assertEquals("-0.000010c6f7a0b5ed8d", (-0.000001).toString(16)); -assertEquals("-0.000001ad7f29abcaf48", (-0.0000001).toString(16)); -assertEquals("-0.000002036565348d256", (-0.00000012).toString(16)); -assertEquals("-0.0000021047ee22aa466", (-0.000000123).toString(16)); -assertEquals("-0.0000002af31dc4611874", (-0.00000001).toString(16)); -assertEquals("-0.000000338a23b87483be", (-0.000000012).toString(16)); -assertEquals("-0.00000034d3fe36aaa0a2", (-0.0000000123).toString(16)); - -assertEquals("4294967296", Math.pow(2,32).toString()); -assertEquals("ffffffff", (Math.pow(2,32)-1).toString(16)); -assertEquals("11111111111111111111111111111111", (Math.pow(2,32)-1).toString(2)); -assertEquals("5yc1z", (10000007).toString(36)); -assertEquals("0", (0).toString(36)); -assertEquals("0", (0).toString(16)); -assertEquals("0", (0).toString(10)); -assertEquals("0", (0).toString(8)); -assertEquals("0", (0).toString(2)); -assertEquals("100000000000000000000000000000000", Math.pow(2,32).toString(2)); -assertEquals("100000000000000000000000000000001", (Math.pow(2,32) + 1).toString(2)); -assertEquals("100000000000080", (0x100000000000081).toString(16)); -assertEquals("1000000000000100", (-(-'0x1000000000000081')).toString(16)); -assertEquals("1000000000000000", (-(-'0x1000000000000080')).toString(16)); -assertEquals("1000000000000000", (-(-'0x100000000000007F')).toString(16)); -assertEquals("100000000000000000000000000000000000000000000000010000000", (0x100000000000081).toString(2)); -assertEquals("-11111111111111111111111111111111", (-(Math.pow(2,32)-1)).toString(2)); -assertEquals("-5yc1z", (-10000007).toString(36)); -assertEquals("-100000000000000000000000000000000", (-Math.pow(2,32)).toString(2)); -assertEquals("-100000000000000000000000000000001", (-(Math.pow(2,32) + 1)).toString(2)); -assertEquals("-100000000000080", (-0x100000000000081).toString(16)); -assertEquals("-100000000000000000000000000000000000000000000000010000000", (-0x100000000000081).toString(2)); -assertEquals("1000", (1000).toString()); -assertEquals("0.00001", (0.00001).toString()); -assertEquals("1000000000000000100", (1000000000000000128).toString()); -assertEquals("1e+21", (1000000000000000012800).toString()); -assertEquals("-1e+21", (-1000000000000000012800).toString()); -assertEquals("1e-7", (0.0000001).toString()); -assertEquals("-1e-7", (-0.0000001).toString()); -assertEquals("1.0000000000000001e+21", (1000000000000000128000).toString()); -assertEquals("0.000001", (0.000001).toString()); -assertEquals("1e-7", (0.0000001).toString()); -assertEquals("8.8", (8.5).toString(16)); -assertEquals("-8.8", (-8.5).toString(16)); - -assertEquals("1.1", (4/3).toString(3)); -assertEquals("11.1", (13/3).toString(3)); -assertEquals("0.01", (1/9).toString(3)); -assertEquals("10000", (81).toString(3)); -assertEquals("10000.01", (81 + 1/9).toString(3)); -assertEquals("0.0212010212010212010212010212010212", (2/7).toString(3)); - -// ---------------------------------------------------------------------- -// toFixed -assertEquals("NaN", (NaN).toFixed(2)); -assertEquals("Infinity", (1/0).toFixed(2)); -assertEquals("-Infinity", (-1/0).toFixed(2)); - -assertEquals("1.1111111111111111e+21", (1111111111111111111111).toFixed(8)); -assertEquals("0.1", (0.1).toFixed(1)); -assertEquals("0.10", (0.1).toFixed(2)); -assertEquals("0.100", (0.1).toFixed(3)); -assertEquals("0.01", (0.01).toFixed(2)); -assertEquals("0.010", (0.01).toFixed(3)); -assertEquals("0.0100", (0.01).toFixed(4)); -assertEquals("0.00", (0.001).toFixed(2)); -assertEquals("0.001", (0.001).toFixed(3)); -assertEquals("0.0010", (0.001).toFixed(4)); -assertEquals("1.0000", (1).toFixed(4)); -assertEquals("1.0", (1).toFixed(1)); -assertEquals("1", (1).toFixed(0)); -assertEquals("12", (12).toFixed(0)); -assertEquals("1", (1.1).toFixed(0)); -assertEquals("12", (12.1).toFixed(0)); -assertEquals("1", (1.12).toFixed(0)); -assertEquals("12", (12.12).toFixed(0)); -assertEquals("0.0000006", (0.0000006).toFixed(7)); -assertEquals("0.00000006", (0.00000006).toFixed(8)); -assertEquals("0.000000060", (0.00000006).toFixed(9)); -assertEquals("0.0000000600", (0.00000006).toFixed(10)); -assertEquals("0", (0).toFixed(0)); -assertEquals("0.0", (0).toFixed(1)); -assertEquals("0.00", (0).toFixed(2)); - -assertEquals("-1.1111111111111111e+21", (-1111111111111111111111).toFixed(8)); -assertEquals("-0.1", (-0.1).toFixed(1)); -assertEquals("-0.10", (-0.1).toFixed(2)); -assertEquals("-0.100", (-0.1).toFixed(3)); -assertEquals("-0.01", (-0.01).toFixed(2)); -assertEquals("-0.010", (-0.01).toFixed(3)); -assertEquals("-0.0100", (-0.01).toFixed(4)); -assertEquals("-0.00", (-0.001).toFixed(2)); -assertEquals("-0.001", (-0.001).toFixed(3)); -assertEquals("-0.0010", (-0.001).toFixed(4)); -assertEquals("-1.0000", (-1).toFixed(4)); -assertEquals("-1.0", (-1).toFixed(1)); -assertEquals("-1", (-1).toFixed(0)); -assertEquals("-1", (-1.1).toFixed(0)); -assertEquals("-12", (-12.1).toFixed(0)); -assertEquals("-1", (-1.12).toFixed(0)); -assertEquals("-12", (-12.12).toFixed(0)); -assertEquals("-0.0000006", (-0.0000006).toFixed(7)); -assertEquals("-0.00000006", (-0.00000006).toFixed(8)); -assertEquals("-0.000000060", (-0.00000006).toFixed(9)); -assertEquals("-0.0000000600", (-0.00000006).toFixed(10)); -assertEquals("0", (-0).toFixed(0)); -assertEquals("0.0", (-0).toFixed(1)); -assertEquals("0.00", (-0).toFixed(2)); - -assertEquals("1000", (1000).toFixed()); -assertEquals("0", (0.00001).toFixed()); -assertEquals("0.00001", (0.00001).toFixed(5)); -assertEquals("0.00000000000000000010", (0.0000000000000000001).toFixed(20)); -assertEquals("0.00001000000000000", (0.00001).toFixed(17)); -assertEquals("1.00000000000000000", (1).toFixed(17)); -assertEquals("1000000000000000128", (1000000000000000128).toFixed()); -assertEquals("100000000000000128.0", (100000000000000128).toFixed(1)); -assertEquals("10000000000000128.00", (10000000000000128).toFixed(2)); -assertEquals("10000000000000128.00000000000000000000", (10000000000000128).toFixed(20)); -assertEquals("0", (0).toFixed()); -assertEquals("-42.000", ((-42).toFixed(3))); -assertEquals("-1000000000000000128", (-1000000000000000128).toFixed()); -assertEquals("-0.00000000000000000010", (-0.0000000000000000001).toFixed(20)); -assertEquals("0.12312312312312299889", (0.123123123123123).toFixed(20)); -// Test that we round up even when the last digit generated is even. -// dtoa does not do this in its original form. -assertEquals("1", 0.5.toFixed(0), "0.5.toFixed(0)"); -assertEquals("-1", (-0.5).toFixed(0), "(-0.5).toFixed(0)"); -assertEquals("1.3", 1.25.toFixed(1), "1.25.toFixed(1)"); -// This is bizare, but Spidermonkey and KJS behave the same. -assertEquals("234.2040", (234.20405).toFixed(4), "234.2040.toFixed(4)"); -assertEquals("234.2041", (234.2040506).toFixed(4)); - -// ---------------------------------------------------------------------- -// toExponential -assertEquals("1e+0", (1).toExponential()); -assertEquals("1.1e+1", (11).toExponential()); -assertEquals("1.12e+2", (112).toExponential()); -assertEquals("1e+0", (1).toExponential(0)); -assertEquals("1e+1", (11).toExponential(0)); -assertEquals("1e+2", (112).toExponential(0)); -assertEquals("1.0e+0", (1).toExponential(1)); -assertEquals("1.1e+1", (11).toExponential(1)); -assertEquals("1.1e+2", (112).toExponential(1)); -assertEquals("1.00e+0", (1).toExponential(2)); -assertEquals("1.10e+1", (11).toExponential(2)); -assertEquals("1.12e+2", (112).toExponential(2)); -assertEquals("1.000e+0", (1).toExponential(3)); -assertEquals("1.100e+1", (11).toExponential(3)); -assertEquals("1.120e+2", (112).toExponential(3)); -assertEquals("1e-1", (0.1).toExponential()); -assertEquals("1.1e-1", (0.11).toExponential()); -assertEquals("1.12e-1", (0.112).toExponential()); -assertEquals("1e-1", (0.1).toExponential(0)); -assertEquals("1e-1", (0.11).toExponential(0)); -assertEquals("1e-1", (0.112).toExponential(0)); -assertEquals("1.0e-1", (0.1).toExponential(1)); -assertEquals("1.1e-1", (0.11).toExponential(1)); -assertEquals("1.1e-1", (0.112).toExponential(1)); -assertEquals("1.00e-1", (0.1).toExponential(2)); -assertEquals("1.10e-1", (0.11).toExponential(2)); -assertEquals("1.12e-1", (0.112).toExponential(2)); -assertEquals("1.000e-1", (0.1).toExponential(3)); -assertEquals("1.100e-1", (0.11).toExponential(3)); -assertEquals("1.120e-1", (0.112).toExponential(3)); - -assertEquals("-1e+0", (-1).toExponential()); -assertEquals("-1.1e+1", (-11).toExponential()); -assertEquals("-1.12e+2", (-112).toExponential()); -assertEquals("-1e+0", (-1).toExponential(0)); -assertEquals("-1e+1", (-11).toExponential(0)); -assertEquals("-1e+2", (-112).toExponential(0)); -assertEquals("-1.0e+0", (-1).toExponential(1)); -assertEquals("-1.1e+1", (-11).toExponential(1)); -assertEquals("-1.1e+2", (-112).toExponential(1)); -assertEquals("-1.00e+0", (-1).toExponential(2)); -assertEquals("-1.10e+1", (-11).toExponential(2)); -assertEquals("-1.12e+2", (-112).toExponential(2)); -assertEquals("-1.000e+0", (-1).toExponential(3)); -assertEquals("-1.100e+1", (-11).toExponential(3)); -assertEquals("-1.120e+2", (-112).toExponential(3)); -assertEquals("-1e-1", (-0.1).toExponential()); -assertEquals("-1.1e-1", (-0.11).toExponential()); -assertEquals("-1.12e-1", (-0.112).toExponential()); -assertEquals("-1e-1", (-0.1).toExponential(0)); -assertEquals("-1e-1", (-0.11).toExponential(0)); -assertEquals("-1e-1", (-0.112).toExponential(0)); -assertEquals("-1.0e-1", (-0.1).toExponential(1)); -assertEquals("-1.1e-1", (-0.11).toExponential(1)); -assertEquals("-1.1e-1", (-0.112).toExponential(1)); -assertEquals("-1.00e-1", (-0.1).toExponential(2)); -assertEquals("-1.10e-1", (-0.11).toExponential(2)); -assertEquals("-1.12e-1", (-0.112).toExponential(2)); -assertEquals("-1.000e-1", (-0.1).toExponential(3)); -assertEquals("-1.100e-1", (-0.11).toExponential(3)); -assertEquals("-1.120e-1", (-0.112).toExponential(3)); - -assertEquals("NaN", (NaN).toExponential(2)); -assertEquals("Infinity", (Infinity).toExponential(2)); -assertEquals("-Infinity", (-Infinity).toExponential(2)); -assertEquals("1e+0", (1).toExponential(0)); -assertEquals("0e+0", (0).toExponential()); -assertEquals("0.00e+0", (0).toExponential(2)); -assertEquals("1e+1", (11.2356).toExponential(0)); -assertEquals("1.1236e+1", (11.2356).toExponential(4)); -assertEquals("1.1236e-4", (0.000112356).toExponential(4)); -assertEquals("-1.1236e-4", (-0.000112356).toExponential(4)); -assertEquals("1.12356e-4", (0.000112356).toExponential()); -assertEquals("-1.12356e-4", (-0.000112356).toExponential()); - -// ---------------------------------------------------------------------- -// toPrecision -assertEquals("NaN", (NaN).toPrecision(1)); -assertEquals("Infinity", (Infinity).toPrecision(2)); -assertEquals("-Infinity", (-Infinity).toPrecision(2)); -assertEquals("0.000555000000000000", (0.000555).toPrecision(15)); -assertEquals("5.55000000000000e-7", (0.000000555).toPrecision(15)); -assertEquals("-5.55000000000000e-7", (-0.000000555).toPrecision(15)); -assertEquals("1e+8", (123456789).toPrecision(1)); -assertEquals("123456789", (123456789).toPrecision(9)); -assertEquals("1.2345679e+8", (123456789).toPrecision(8)); -assertEquals("1.234568e+8", (123456789).toPrecision(7)); -assertEquals("-1.234568e+8", (-123456789).toPrecision(7)); -assertEquals("-1.2e-9", Number(-.0000000012345).toPrecision(2)); -assertEquals("-1.2e-8", Number(-.000000012345).toPrecision(2)); -assertEquals("-1.2e-7", Number(-.00000012345).toPrecision(2)); -assertEquals("-0.0000012", Number(-.0000012345).toPrecision(2)); -assertEquals("-0.000012", Number(-.000012345).toPrecision(2)); -assertEquals("-0.00012", Number(-.00012345).toPrecision(2)); -assertEquals("-0.0012", Number(-.0012345).toPrecision(2)); -assertEquals("-0.012", Number(-.012345).toPrecision(2)); -assertEquals("-0.12", Number(-.12345).toPrecision(2)); -assertEquals("-1.2", Number(-1.2345).toPrecision(2)); -assertEquals("-12", Number(-12.345).toPrecision(2)); -assertEquals("-1.2e+2", Number(-123.45).toPrecision(2)); -assertEquals("-1.2e+3", Number(-1234.5).toPrecision(2)); -assertEquals("-1.2e+4", Number(-12345).toPrecision(2)); -assertEquals("-1.235e+4", Number(-12345.67).toPrecision(4)); -assertEquals("-1.234e+4", Number(-12344.67).toPrecision(4)); -// Test that we round up even when the last digit generated is even. -// dtoa does not do this in its original form. -assertEquals("1.3", 1.25.toPrecision(2), "1.25.toPrecision(2)"); -assertEquals("1.4", 1.35.toPrecision(2), "1.35.toPrecision(2)"); diff --git a/implementation-contributed/v8/mjsunit/numops-fuzz-part1.js b/implementation-contributed/v8/mjsunit/numops-fuzz-part1.js deleted file mode 100644 index 8e98ae6323c..00000000000 --- a/implementation-contributed/v8/mjsunit/numops-fuzz-part1.js +++ /dev/null @@ -1,1172 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - var x = 0; - var tmp = 0; - assertEquals(0, x /= (tmp = 798469700.4090232, tmp)); - assertEquals(0, x *= (2714102322.365509)); - assertEquals(0, x *= x); - assertEquals(139516372, x -= (tmp = -139516372, tmp)); - assertEquals(1, x /= (x%(2620399703.344006))); - assertEquals(0, x >>>= x); - assertEquals(-2772151192.8633175, x -= (tmp = 2772151192.8633175, tmp)); - assertEquals(-2786298206.8633175, x -= (14147014)); - assertEquals(1509750523, x |= ((1073767916)-(tmp = 919311632.2789925, tmp))); - assertEquals(2262404051.926751, x += ((752653528.9267509)%x)); - assertEquals(-270926893, x |= (tmp = 1837232194, tmp)); - assertEquals(0.17730273401688765, x /= ((tmp = -2657202795, tmp)-(((((x|(tmp = -1187733892.282897, tmp))-x)<<(556523578))-x)+(-57905508.42881298)))); - assertEquals(122483.56550261026, x *= ((((tmp = 2570017060.15193, tmp)%((-1862621126.9968336)>>x))>>(x>>(tmp = 2388674677, tmp)))>>>(-2919657526.470434))); - assertEquals(0, x ^= x); - assertEquals(0, x <<= (tmp = 2705124845.0455265, tmp)); - assertEquals(0, x &= (-135286835.07069612)); - assertEquals(-0, x *= ((tmp = -165810479.10020828, tmp)|x)); - assertEquals(248741888, x += ((735976871.1308595)<<(-2608055185.0700903))); - assertEquals(139526144, x &= (tmp = -1454301068, tmp)); - assertEquals(-0.047221345672746884, x /= (tmp = -2954726130.994727, tmp)); - assertEquals(0, x <<= (x>>x)); - assertEquals(0, x >>>= ((x+(912111201.488966))-(tmp = 1405800042.6070075, tmp))); - assertEquals(-1663642733, x |= (((-1663642733.5700119)<<(x^x))<>>= (-1106714178.701668)); - assertEquals(1, x %= (((x>>(x>>(tmp = -3052773846.817114, tmp)))*(tmp = 1659218887.379526, tmp))&x)); - assertEquals(-943225672, x += (-943225673)); - assertEquals(-0.41714300120060854, x /= (tmp = 2261156652, tmp)); - assertEquals(0, x >>>= ((3107060934.8863482)<<(tmp = 1902730887, tmp))); - assertEquals(0, x &= x); - assertEquals(1476628, x |= ((tmp = -2782899841.390033, tmp)>>>(2097653770))); - assertEquals(0.0008887648921591833, x /= ((tmp = 1661438264.5253348, tmp)%((tmp = 2555939813, tmp)*(-877024323.6515315)))); - assertEquals(0, x <<= (tmp = -2366551345, tmp)); - assertEquals(0, x &= (tmp = 1742843591, tmp)); - assertEquals(0, x -= x); - assertEquals(4239, x += ((-3183564176.232031)>>>(349622674.1255014))); - assertEquals(-67560, x -= ((2352742295)>>>x)); - assertEquals(-67560, x &= x); - assertEquals(-0.00003219917807302283, x /= (2098190203.699741)); - assertEquals(0, x -= x); - assertEquals(0, x >>= ((((tmp = -869086522.8358297, tmp)/(187820779))-(tmp = -2000970995.1931965, tmp))|(1853528755.6064696))); - assertEquals(0, x >>= (-3040509919)); - assertEquals(0, x %= (((tmp = -2386688049.194946, tmp)<<(tmp = -669711391, tmp))|x)); - assertEquals(0, x %= (tmp = -298431511.4839926, tmp)); - assertEquals(0, x /= (2830845091.2793818)); - assertEquals(0, x /= ((((-2529926178)|x)^((tmp = 2139313707.0894063, tmp)%((-1825768525.0541775)-(-952600362.7758243))))+x)); - assertEquals(NaN, x /= x); - assertEquals(NaN, x -= x); - assertEquals(NaN, x /= (tmp = -432944480, tmp)); - assertEquals(0, x <<= (((((x^((-1777523727)+(2194962794)))>>>(((((-590335134.8224905)%(x*(2198198974)))|(tmp = -2068556796, tmp))/(1060765637))*(-147051676)))/((tmp = -477350113.92686677, tmp)<<((x/(2018712621.0397925))^((tmp = 491163813.3921983, tmp)+(((x|((((x%(1990073256.812654))%((-2024388518.9599915)>>((tmp = 223182187, tmp)*(-722241065))))>>>(tmp = 2517147885.305745, tmp))%(1189996239.11222)))&x)%(-306932860))))))&((tmp = 1117802724.485684, tmp)+((-1391614045)-x)))%((((x>>((2958453447)*x))^(((410825859)|(((tmp = -1119269292.5495896, tmp)>>>(((((((x%(tmp = 648541746.6059314, tmp))*((-2304508480)<<((((x^(1408199888.1454597))|((251623937)|x))/((-382389946.9984102)|(tmp = -2082681143.5893767, tmp)))-(((tmp = 631243472, tmp)>>>(1407556544))/(((x>>>x)>>>(tmp = -6329025.47865057, tmp))>>>(tmp = 948664752.543093, tmp))))))/((((-183248880)>>x)&x)&x))>>x)&(((-978737284.8492057)%(tmp = 2983300011.737006, tmp))&(tmp = 2641937234.2954116, tmp)))<>(2795416632.9722223)))%((((tmp = -50926632, tmp)/x)&(((tmp = -2510786916, tmp)/x)/(-699755674)))|((((tmp = 1411792593, tmp)>>(924286570.2637128))>>((1609997725)>>(2735658951.0762663)))*(tmp = 726205435, tmp)))))<<(tmp = -2135055357.3156831, tmp)))/(tmp = 1408695065, tmp))^(tmp = -1343267739.8562133, tmp)))); - assertEquals(0, x %= (-437232116)); - assertEquals(-2463314518.2747326, x -= (2463314518.2747326)); - assertEquals(109, x >>= (2401429560)); - assertEquals(-2687641732.0253763, x += (-2687641841.0253763)); - assertEquals(-2336375490019484000, x *= (tmp = 869303174.6678596, tmp)); - assertEquals(5.458650430363785e+36, x *= x); - assertEquals(0, x |= ((((-1676972008.797291)*x)*((tmp = 2606991807, tmp)-x))<>>= x); - assertEquals(-1.381429241671034e-7, x /= ((tmp = -962771116.8101778, tmp)^x)); - assertEquals(-1092268961, x |= ((tmp = 3202672531, tmp)-((x-(tmp = 845529357, tmp))>>(tmp = -868680593, tmp)))); - assertEquals(-1092268961, x %= (tmp = 2670840415.304719, tmp)); - assertEquals(-122794480, x %= (tmp = 969474481, tmp)); - assertEquals(-297606521542193600, x *= (2423614820)); - assertEquals(72460064, x >>>= (tmp = -1230798655, tmp)); - assertEquals(-203714325373689600, x *= (-2811401400)); - assertEquals(2154914048, x >>>= (((2241377026.001436)/x)+x)); - assertEquals(1177864081, x ^= (tmp = -968513903, tmp)); - assertEquals(35947664, x &= (-2086226758.2704995)); - assertEquals(20795732539020670, x += (x*(578500247))); - assertEquals(-892004992, x >>= x); - assertEquals(-7023661.354330708, x /= ((((((1740714214)%((tmp = -459699286, tmp)+(tmp = -1700187400, tmp)))>>(tmp = -3170295237, tmp))+(tmp = -497509780, tmp))+((1971976144.6197853)+(661992813.6077721)))>>>(-1683802728))); - assertEquals(-1634205696, x <<= x); - assertEquals(-7, x >>= (-3187653764.930914)); - assertEquals(-5.095345981491203, x -= ((tmp = 748315289, tmp)/(tmp = -392887780, tmp))); - assertEquals(1486531570, x &= (1486531570.9300508)); - assertEquals(5670, x >>= (((tmp = -2486758205.26425, tmp)*(732510414))|x)); - assertEquals(5670, x >>= (((-1811879946.2553763)%(1797475764))/(((tmp = -2159923884, tmp)|x)+(tmp = -1774410807, tmp)))); - assertEquals(38, x %= (x>>>x)); - assertEquals(-151134215, x ^= (((tmp = -2593085609.5622163, tmp)+((tmp = -814992345.7516887, tmp)-(534809571)))|(tmp = -232678571, tmp))); - assertEquals(-234881024, x <<= x); - assertEquals(-234881024, x <<= (x>>>x)); - assertEquals(55169095435288580, x *= x); - assertEquals(0, x >>= (tmp = 1176612256, tmp)); - assertEquals(0, x <<= (1321866341.2486475)); - assertEquals(0, x %= (x-(-602577995))); - assertEquals(0, x >>>= (((((tmp = -125628635.79970193, tmp)^(tmp = 1294209955.229382, tmp))&(((tmp = -2353256654.0725203, tmp)|((-1136743028.9425385)|((((950703429.1110399)-(x>>>x))/((((x%(-252705869.21126103))/((tmp = 886957620, tmp)<<(x%((tmp = -1952249741, tmp)*(tmp = -1998149844, tmp)))))|(tmp = 1933366713, tmp))|((tmp = -2957141565, tmp)>>>(tmp = 1408598804, tmp))))+(((((((-2455002047.4910946)%(tmp = -528017836, tmp))&((-2693432769)/(tmp = 2484427670.9045153, tmp)))%(-356969659))-((((((tmp = 3104828644.0753174, tmp)%(x>>>(tmp = 820832137.8175925, tmp)))*((tmp = 763080553.9260503, tmp)+(3173597855)))<<(((-510785437)^x)<<(x|(((x*(x%((tmp = -1391951515, tmp)/x)))-x)|(x-((-522681793.93221474)/((2514619703.2162743)*(2936688324))))))))|x)>>>(-2093210042)))&(763129279.3651779))&x))))-x))%(((-1331164821)&(tmp = 1342684586, tmp))<<(x<<(tmp = 2675008614.588005, tmp))))>>((2625292569.8984914)+(-3185992401)))); - assertEquals(0, x *= (tmp = 671817215.1147974, tmp)); - assertEquals(-1608821121, x ^= ((tmp = 2686146175.04077, tmp)>>>x)); - assertEquals(-0, x %= x); - assertEquals(-0, x /= ((tmp = 286794551.0720866, tmp)|(x%x))); - assertEquals(0, x <<= (x|(tmp = 1095503996.2285218, tmp))); - assertEquals(443296752, x ^= (443296752)); - assertEquals(110824188, x >>= ((184708570)>>(x&x))); - assertEquals(0.7908194935161674, x /= ((((167151154.63381648)&((tmp = -1434120690, tmp)-(tmp = 2346173080, tmp)))/(56656051.87305987))^(140138414))); - assertEquals(-0.9027245492678485, x *= ((tmp = 1724366578, tmp)/(((2979477411)<<(((897038568)>>(tmp = 348960298, tmp))%(281056223.2037884)))^((((-1383133388)-(((-1379748375)-((x>>(x&(tmp = 2456582046, tmp)))>>>(-2923911755.565961)))&x))<<(-2825791731))^(tmp = -1979992970, tmp))))); - assertEquals(0, x &= (2482304279)); - assertEquals(-0, x *= (-2284213673)); - assertEquals(0, x <<= ((2874381218.015819)|x)); - assertEquals(0, x *= (x>>>(tmp = 2172786480, tmp))); - assertEquals(0, x &= (-1638727867.2978938)); - assertEquals(0, x %= ((tmp = -2213947368.285817, tmp)>>x)); - assertEquals(0, x >>>= (tmp = -531324706, tmp)); - assertEquals(0, x %= (tmp = -2338792486, tmp)); - assertEquals(0, x <<= (((tmp = 351012164, tmp)<<(x|((tmp = -3023836638.5337825, tmp)^(-2678806692))))|x)); - assertEquals(0, x %= (x-(tmp = -3220231305.45039, tmp))); - assertEquals(0, x <<= (-2132833261)); - assertEquals(0, x >>>= x); - assertEquals(0, x %= ((2544970469)+(((-2633093458.5911965)&(644108176))-(x>>>(tmp = -949043718, tmp))))); - assertEquals(-2750531265, x += (-2750531265)); - assertEquals(0, x >>= x); - assertEquals(0, x *= ((tmp = 1299005700, tmp)-x)); - assertEquals(0, x >>= x); - assertEquals(-1785515304, x -= (((((-806054462.5563161)/x)>>>x)+(1785515304))|((tmp = 2937069788.9396844, tmp)/x))); - assertEquals(-3810117159.173689, x -= (2024601855.1736891)); - assertEquals(-6.276064139320051, x /= (607087033.3053156)); - assertEquals(134217727, x >>>= (((x%(tmp = 924293127, tmp))^x)|((x>>>(x&((((tmp = -413386639, tmp)/(x>>(tmp = 599075308.8479941, tmp)))^(tmp = -1076703198, tmp))*((tmp = -2239117284, tmp)>>(655036983)))))-x))); - assertEquals(134217727, x %= (tmp = 2452642261.038778, tmp)); - assertEquals(-569504740360507, x *= ((tmp = -1086243941, tmp)>>(tmp = 1850668904.4885683, tmp))); - assertEquals(113378806, x >>>= (tmp = -2558233435, tmp)); - assertEquals(979264375, x -= (((x>>(1950008052))%((2917183569.0209)*(tmp = 1184250640.446752, tmp)))|((((tmp = -691875212, tmp)-(-2872881803))>>(tmp = 44162204.97461021, tmp))^(tmp = 865885647, tmp)))); - assertEquals(-1127813632, x <<= ((((tmp = -2210499281, tmp)>>>x)-(tmp = 2359697240, tmp))-x)); - assertEquals(-1707799657, x ^= (653518231.3995534)); - assertEquals(2916579668449318000, x *= x); - assertEquals(2916579669254640600, x += (x&(tmp = 2986558026.399422, tmp))); - assertEquals(870995175, x ^= (2598813927.8991632)); - assertEquals(870995175, x %= (-2857038782)); - assertEquals(1869503575895591000, x *= (x|(x|(((tmp = 2478650307.4118147, tmp)*((tmp = 2576240847.476932, tmp)>>>x))<>>(x-(((-1960937402)-(-1907735074.2875962))%((1827808310)^(tmp = -2788307127, tmp)))))); - assertEquals(-134824702, x |= (((2912578752.2395406)^(x%(((-2585660111.0638976)<<(((((tmp = 747742706, tmp)%(-1630261205))&((((x|(x|(-2619903144.278758)))|((2785710568.8651934)>>((-968301967.5982246)<<(x&x))))>>((x>>>((x>>>(tmp = -1402085797.0310762, tmp))*((tmp = -323729645.2250068, tmp)<<(tmp = 2234667799, tmp))))>>>(-167003745)))>>((924665972.4681011)<>>x)<<((((x+x)+x)-(((tmp = 2399203431.0526247, tmp)-(-2872533271))-(((tmp = 914778794.2087344, tmp)-(tmp = 806353942.9502392, tmp))|(((tmp = 262924334.99231672, tmp)&x)|(tmp = -460248836.5602243, tmp)))))/x)))%((-1681000689)/(tmp = -2805054623.654228, tmp)))))*(tmp = 957346233.9619625, tmp))); - assertEquals(-3274838, x %= ((((tmp = 3155450543.3524327, tmp)>>>x)<<(tmp = 2103079652.3410985, tmp))>>x)); - assertEquals(-3274838, x |= ((((tmp = 2148004645.639173, tmp)>>>(tmp = -1285119223, tmp))<<(((((-711596054)>>>(tmp = -2779776371.3473206, tmp))^(((((tmp = -1338880329.383915, tmp)<<((-1245247254.477341)>>x))*(tmp = -2649052844.20065, tmp))>>((1734345880.4600453)%(x/(2723093117.118899))))*(1252918475.3285656)))<<(2911356885))^x))<<(-1019761103))); - assertEquals(1703281954, x &= (((tmp = 1036570471.7412028, tmp)+((tmp = 3043119517, tmp)%(2374310816.8346715)))%(tmp = -2979155076, tmp))); - assertEquals(1741588391, x |= ((tmp = 1230009575.6003838, tmp)>>>(-1247515003.8152597))); - assertEquals(72869474.64782429, x %= (tmp = 1668718916.3521757, tmp)); - assertEquals(770936242.104203, x += (698066767.4563787)); - assertEquals(-0.2820604726420833, x /= (tmp = -2733230342, tmp)); - assertEquals(403480578, x |= ((969730374)&(tmp = 1577889835, tmp))); - assertEquals(-1669557233, x ^= ((-1616812135)+(tmp = -456209292, tmp))); - assertEquals(-1630427, x >>= ((2327783031.1175823)/(226947662.4579488))); - assertEquals(131022, x >>>= ((tmp = -1325018897.2482083, tmp)>>(x&((((((-1588579772.9240348)<<(tmp = -1775580288.356329, tmp))<<(tmp = -1021528325.2075481, tmp))>>((tmp = 2373033451.079956, tmp)*(tmp = 810304612, tmp)))-((tmp = -639152097, tmp)<<(tmp = 513879484, tmp)))&(2593958513))))); - assertEquals(1, x >>= ((3033200222)-x)); - assertEquals(-561146816.4851823, x += (tmp = -561146817.4851823, tmp)); - assertEquals(-4.347990105831158, x /= ((((-1270435902)*x)%((tmp = 637328492.7386824, tmp)-(x>>(-749100689))))%(x+x))); - assertEquals(-1, x >>= x); - assertEquals(1, x *= x); - assertEquals(111316849706694460, x += ((966274056)*(x|(115202150)))); - assertEquals(-1001883840, x >>= x); - assertEquals(-1001883840, x &= x); - assertEquals(-3006880758, x += ((((-2275110637.4054556)/((x+(tmp = -1390035090.4324536, tmp))>>(-5910593)))&(tmp = 378982420, tmp))|(tmp = 2289970378.568629, tmp))); - assertEquals(314474, x >>>= (x>>((tmp = -228007336.31281257, tmp)%(tmp = 1127648013, tmp)))); - assertEquals(-17694827, x ^= ((tmp = 2095133598.1849852, tmp)|(-1978322311))); - assertEquals(1, x /= x); - assertEquals(1, x %= (-2323617209.7531185)); - assertEquals(0, x >>>= (x*(tmp = -1574455400.489434, tmp))); - assertEquals(0, x >>= (3131854684)); - assertEquals(2853609824, x += ((-231012098)-(tmp = -3084621922, tmp))); - assertEquals(8143089027629311000, x *= x); - assertEquals(313052685, x ^= (tmp = 2962303501, tmp)); - assertEquals(4776, x >>= (tmp = 2271457232, tmp)); - assertEquals(0.000002812258572702285, x /= (tmp = 1698279115, tmp)); - assertEquals(0, x >>>= (tmp = 1698465782.0927145, tmp)); - assertEquals(0, x <<= x); - assertEquals(0, x |= ((x<<((-1824760240.3040407)<<(2798263764.39145)))&(tmp = 1795988253.0493627, tmp))); - assertEquals(1782206945, x ^= (-2512760351.7881565)); - assertEquals(7610569113843172000, x *= (((tmp = -44415823.92972565, tmp)&(tmp = 1402483498.9421625, tmp))+(tmp = 2909778666, tmp))); - assertEquals(15221138227873292000, x += (x-(tmp = -186948658.394145, tmp))); - assertEquals(0, x -= x); - assertEquals(-2238823252, x -= ((tmp = 2238823252, tmp)+x)); - assertEquals(0, x -= x); - assertEquals(0, x >>= (2976069570)); - assertEquals(0, x >>= ((tmp = -2358157433, tmp)/x)); - assertEquals(-949967713, x ^= (tmp = -949967713, tmp)); - assertEquals(-1, x >>= x); - assertEquals(-1522291702.1977966, x *= (1522291702.1977966)); - assertEquals(-1522291702, x >>= ((((2290279800)|x)|(1793154434.6798015))&((-1161390929.0766077)>>>x))); - assertEquals(83894274, x &= (tmp = 1571058486, tmp)); - assertEquals(43186847.90522933, x += ((tmp = -1131332988.0947707, tmp)%x)); - assertEquals(0, x >>= (tmp = -1968312707.269359, tmp)); - assertEquals(0, x &= (2507747643.26175)); - assertEquals(0, x %= (tmp = 3190525303.366887, tmp)); - assertEquals(-1968984602, x ^= (((x/(x|(-1607062026.5338054)))<<(tmp = 2207669861.8770065, tmp))+(tmp = 2325982694.956348, tmp))); - assertEquals(554, x >>>= (((tmp = -2302283871.993821, tmp)>>>(-3151835112))|(((((x%(-1534374264))/((731246012)<<(((883830997.1194847)<<(((-1337895080.1937215)/(tmp = 3166402571.8157315, tmp))^(tmp = -1563897595.5799441, tmp)))>>(tmp = -556816951.0537591, tmp))))>>(-2682203577))<<(x/((1654294674.865079)+x)))/((x^(-2189474695.4259806))/(-475915245.7363057))))); - assertEquals(1372586111, x ^= (1372586581)); - assertEquals(1166831229, x -= ((-834168138)&(762573579))); - assertEquals(2333662456, x -= ((x>>x)-x)); - assertEquals(-1961304840, x &= x); - assertEquals(-2130143128, x &= (2982852718.0711775)); - assertEquals(1073741824, x <<= (-1446978661.6426942)); - assertEquals(2097152, x >>>= ((-1424728215)-(((127872198)%(tmp = -2596923298, tmp))&x))); - assertEquals(2097152, x >>>= x); - assertEquals(0, x &= (x/(tmp = -518419194.42994523, tmp))); - assertEquals(0, x >>= ((x/(-1865078245))%(tmp = 2959239210, tmp))); - assertEquals(-0, x *= ((x|(-1721307400))|(-3206147171.9491577))); - assertEquals(0, x >>>= ((-694741143)&(tmp = -2196513947.699142, tmp))); - assertEquals(0, x <<= x); - assertEquals(0, x &= ((tmp = 2037824385.8836646, tmp)+((tmp = 1203034986.4647732, tmp)/(x>>>(((-1374881234)/(899771270.3237157))+((-2296524362.8020077)|(-1529870870))))))); - assertEquals(0, x >>= (tmp = 2770637816, tmp)); - assertEquals(0, x ^= x); - assertEquals(-1861843456, x |= ((632402668)*((x|(tmp = -1032952662.8269436, tmp))|(tmp = 2671272511, tmp)))); - assertEquals(-1861843456, x >>= (((x>>>x)+x)<<(-1600908842))); - assertEquals(-58182608, x >>= (x-(tmp = -2496617861, tmp))); - assertEquals(-3636413, x >>= (tmp = -400700028, tmp)); - assertEquals(-7272826, x += x); - assertEquals(-1, x >>= ((tmp = -3184897005.3614545, tmp)-((-1799843014)|(tmp = 2832132915, tmp)))); - assertEquals(-121800925.94209385, x *= (121800925.94209385)); - assertEquals(-30450232, x >>= (-979274206.6261561)); - assertEquals(-30450232, x >>= (tmp = -1028204832.5078967, tmp)); - assertEquals(-30450232, x |= x); - assertEquals(965888871, x ^= (((((-2157753481.3375635)*((tmp = -1810667184.8165767, tmp)&((tmp = 2503908344.422232, tmp)|x)))>>(x>>(1601560785)))<>>= x); - assertEquals(7546006, x <<= ((tmp = 1388931761.780241, tmp)*(x-(tmp = -1245147647.0070577, tmp)))); - assertEquals(12985628, x += (x&(-1520746354))); - assertEquals(12985628, x &= x); - assertEquals(12985628, x %= (tmp = 308641965, tmp)); - assertEquals(685733278, x |= ((tmp = -1275653544, tmp)-((tmp = -1956798010.3773859, tmp)%(tmp = 2086889575.643448, tmp)))); - assertEquals(679679376, x &= (2860752368)); - assertEquals(1770773904, x |= (x<<(3200659207))); - assertEquals(1224886544, x &= (-585733767.6876519)); - assertEquals(1224886544, x %= ((tmp = -114218494, tmp)-x)); - assertEquals(1208109328, x &= (tmp = 1854361593, tmp)); - assertEquals(18434, x >>>= x); - assertEquals(-349394636955256100, x *= (x*(-1028198742))); - assertEquals(-519536600.7713163, x %= (-1054085356.9120367)); - assertEquals(-1610612736, x ^= ((tmp = -3126078854, tmp)&x)); - assertEquals(-2637321565906333700, x *= (1637464740.5658746)); - assertEquals(-2637321568051070500, x -= ((tmp = -1006718806, tmp)<<(3005848133.106345))); - assertEquals(368168695, x ^= (x^(tmp = 368168695.6881037, tmp))); - assertEquals(43, x >>>= x); - assertEquals(-2081297089, x |= ((167169305.77248895)+(-2248466405.3199244))); - assertEquals(-2474622167, x -= (tmp = 393325078, tmp)); - assertEquals(-135109701, x %= (-1169756233)); - assertEquals(0, x ^= x); - assertEquals(0, x >>= (((((tmp = -164768854, tmp)/(tmp = -1774989993.1909926, tmp))+x)-((-921438912)>>(tmp = -191772028.69249105, tmp)))-(tmp = 558728578.22033, tmp))); - assertEquals(0, x %= (tmp = 2188003745, tmp)); - assertEquals(0, x <<= (((tmp = -999335540, tmp)>>((((325101977)/(tmp = -3036991542, tmp))<<(tmp = -213302488, tmp))+x))|(tmp = -1054204587, tmp))); - assertEquals(0, x &= ((2844053429.4720345)>>>x)); - assertEquals(NaN, x %= x); - assertEquals(NaN, x -= (-1481729275.9118822)); - assertEquals(NaN, x *= (tmp = 1098314618.2397528, tmp)); - assertEquals(-1073741824, x ^= ((tmp = 1718545772, tmp)<<(((tmp = -81058910, tmp)-(2831123087.424368))+(tmp = 576710057.2361784, tmp)))); - assertEquals(-2921155898.4793186, x -= (1847414074.4793184)); - assertEquals(-1295646720, x <<= (2178621744)); - assertEquals(-0.8906779709597907, x /= ((tmp = -2840292585.6837263, tmp)<<(x&((tmp = 892527695.6172305, tmp)>>>x)))); - assertEquals(0, x <<= (((tmp = 3149667213.298993, tmp)>>(tmp = 1679370761.7226725, tmp))^(115417747.21537328))); - assertEquals(0, x |= x); - assertEquals(0, x %= ((-1112849427)>>(-1245508870.7514496))); - assertEquals(0, x &= x); - assertEquals(0, x |= x); - assertEquals(0, x >>>= ((3144100694.930459)>>>(tmp = 2408610503, tmp))); - assertEquals(0, x <<= ((tmp = 2671709754.0318713, tmp)%x)); - assertEquals(0, x >>>= (x|((tmp = -3048578701, tmp)-(674147224)))); - assertEquals(NaN, x %= x); - assertEquals(0, x &= ((tmp = -2084883715, tmp)|(((((-3008427069)+(875536047.4283574))>>>x)%(tmp = -450003426.1091652, tmp))%(((-2956878433.269356)|(x/((((x%((((((x<<(((tmp = -1581063482.510351, tmp)^x)-(tmp = 1364458217, tmp)))^((tmp = 1661446342, tmp)+(1307091014)))/(342270750.9901335))>>>(x&((1760980812.898993)&((tmp = 2878165745.6401143, tmp)/(((tmp = -981178013, tmp)/(-2338761668.29912))>>(-958462630))))))*((1807522840)^((tmp = 1885835034, tmp)^(-2538647938))))*(1673607540.0854697)))%x)>>x)<>>= x); - assertEquals(-1162790279, x -= (1162790279)); - assertEquals(-1162790279, x >>= (((-490178658)*x)/((((((tmp = -1883861998.6699312, tmp)/(tmp = -2369967345.240594, tmp))+(3142759868.266447))&(508784917.8158537))&x)>>(-2129532322)))); - assertEquals(-1360849740.9829152, x -= (x+(1360849740.9829152))); - assertEquals(1928392181, x ^= (-602670783)); - assertEquals(19478708.898989897, x /= (((-2617861994)>>(tmp = 797256920, tmp))%(-1784987906))); - assertEquals(-8648903.575540157, x *= (((tmp = 673979276, tmp)/(-1517908716))%(x/x))); - assertEquals(-8648903.575540157, x %= ((((643195610.4221292)>>>(tmp = 2342669302, tmp))>>>(tmp = -1682965878, tmp))^((tmp = -208158937.63443017, tmp)>>((907286989)&(x<<(448634893)))))); - assertEquals(1399288769, x ^= (tmp = -1407486728, tmp)); - assertEquals(0, x &= (((1999255838.815517)/(tmp = 564646001, tmp))/(-3075888101.3274765))); - assertEquals(0, x ^= ((-78451711.59404826)%x)); - assertEquals(-1351557131, x |= (2943410165)); - assertEquals(1715626371, x -= (-3067183502)); - assertEquals(71434240, x &= ((-1800066426)<<(((((x<<(-324796375))+x)<<(tmp = 2696824955.735132, tmp))^x)%(tmp = 444916469, tmp)))); - assertEquals(71434240, x >>>= (((x&((x%x)|x))+(tmp = 2226992348.3050146, tmp))<<(-305526260))); - assertEquals(0, x -= (x%(tmp = 582790928.5832802, tmp))); - assertEquals(0, x *= ((x%(1865155340))>>>((x<<(2600488191))^(-308995123)))); - assertEquals(0, x >>= (x&(-3120043868.8531103))); - assertEquals(0, x |= x); - assertEquals(-0, x *= (tmp = -172569944, tmp)); - assertEquals(0, x <<= (-1664372874)); - assertEquals(1377713344.6784928, x += (tmp = 1377713344.6784928, tmp)); - assertEquals(1377713344, x |= x); - assertEquals(-232833282, x |= (tmp = 2685870654, tmp)); - assertEquals(84639, x -= (((((2778531079.998492)%(2029165314))>>>(tmp = -468881172.3729558, tmp))^x)|((x>>>((((x%(3044318992.943596))&(1996754328.2214756))^(1985227172.7485228))%(tmp = -1984848676.1347625, tmp)))|((tmp = 2637662639, tmp)<>= (-2148785379.428976)); - assertEquals(2, x &= (tmp = -3087007874, tmp)); - assertEquals(0, x %= x); - assertEquals(0, x >>>= x); - assertEquals(0, x >>>= x); - assertEquals(0, x += x); - assertEquals(0, x &= (2055693082)); - assertEquals(-1349456492, x += (x^(-1349456492.315998))); - assertEquals(671088640, x <<= (x>>(-2030805724.5472062))); - assertEquals(-417654580004782100, x *= (tmp = -622353822, tmp)); - assertEquals(1538160360, x |= (195983080.56698656)); - assertEquals(733, x >>>= (tmp = 661085269, tmp)); - assertEquals(657, x &= (-1611460943.993404)); - assertEquals(431649, x *= x); - assertEquals(863298, x += x); - assertEquals(0, x &= ((1899423003)/((472439729)>>((tmp = 2903738952, tmp)+(tmp = 2164601630.3456993, tmp))))); - assertEquals(0, x &= (x>>>(tmp = 1939167951.2828958, tmp))); - assertEquals(1557813284, x |= (x-(-1557813284))); - assertEquals(72876068, x &= (662438974.2372154)); - assertEquals(0.6695448637501589, x /= (tmp = 108844189.45702457, tmp)); - assertEquals(0, x -= x); - assertEquals(2944889412, x += (2944889412)); - assertEquals(3787980288, x -= ((((tmp = -2003814373.2301111, tmp)<>>(tmp = -3088357284.4405823, tmp))-(843090884))); - assertEquals(1, x >>>= (729274079)); - assertEquals(1, x %= (-148002187.33869123)); - assertEquals(3073988415.673201, x *= (tmp = 3073988415.673201, tmp)); - assertEquals(4839166225.673201, x += (tmp = 1765177810, tmp)); - assertEquals(4529373898.673201, x += (-309792327)); - assertEquals(3097903.090496063, x %= (-150875866.51942348)); - assertEquals(1270874112, x <<= ((((((tmp = -960966763.1418135, tmp)>>((((-3208596981.613482)>>>(tmp = 746403937.6913509, tmp))>>>(-2190042854.066803))/(2449323432)))*(-1272232665.791577))<<(-99306767.7209444))^((-1942103828)/((1570981655)/(tmp = 2381666337, tmp))))+(tmp = -1946759395.1558368, tmp))); - assertEquals(1273845956, x |= (tmp = -3197282108.6120167, tmp)); - assertEquals(159230744, x >>= (((tmp = -1036031403.8108604, tmp)>>>(((3084964493)>>((x*x)^x))+(((2980108409.352001)^x)-(tmp = -2501685423.513927, tmp))))&(326263839))); - assertEquals(-370091747145550100, x *= (tmp = -2324248055.674161, tmp)); - assertEquals(143384219.54999557, x /= (tmp = -2581119096, tmp)); - assertEquals(1843396287, x |= (tmp = 1842718767, tmp)); - assertEquals(2.4895593465813803, x /= (740450831)); - assertEquals(2.4895593465813803, x %= ((((((((-3175333618)>>>((tmp = -1403880166, tmp)<<(tmp = -134875360, tmp)))>>>(2721317334.998084))<<(x&(tmp = 2924634208.1484184, tmp)))*((((x>>(tmp = -200319931.15328693, tmp))-(tmp = -495128933, tmp))+((-788052518.6610589)*((((tmp = 107902557, tmp)&(1221562660))%(x<<(((3155498059)*(((tmp = -1354381139.4897022, tmp)^(tmp = 3084557138.332852, tmp))*((((tmp = 1855251464.8464525, tmp)/((-1857403525.2008865)>>x))|x)-(-2061968455.0023944))))*(1917481864.84619))))^(x-(-508176709.52712965)))))+((((x%(-1942063404))+(x%(tmp = 855152281.180481, tmp)))|(-522863804))>>x)))>>>((tmp = -2515550553, tmp)&(((((-801095375)-(tmp = -2298729336.9792976, tmp))^x)/(tmp = 2370468053, tmp))>>(x|(tmp = -900008879, tmp)))))>>>(((tmp = -810295719.9509168, tmp)*((tmp = -1306212963.6226444, tmp)/(((tmp = 3175881540.9514832, tmp)|(-1439142297.819246))+((tmp = -134415617, tmp)|((-245801870)+x)))))>>(tmp = 1889815478, tmp)))-(((tmp = 597031177, tmp)%(858071823.7655672))+((tmp = 2320838665.8243756, tmp)|((938555608)<<(2351739219.6461897)))))); - assertEquals(6.197905740150709, x *= x); - assertEquals(1, x /= x); - assertEquals(0, x >>= (-1639664165.9076233)); - assertEquals(0, x >>= (-3135317748.801177)); - assertEquals(0, x &= (3185479232.5325994)); - assertEquals(-0, x *= ((-119759439.19668174)/(tmp = 2123964608, tmp))); - assertEquals(0, x /= (-1183061929.2827876)); - assertEquals(0, x <<= (-1981831198)); - assertEquals(0, x >>= ((((x<<(((((((-2133752838)&((tmp = -3045157736.9331336, tmp)>>>(x%x)))>>x)%(tmp = 3082217039, tmp))&(tmp = 270770770.97558427, tmp))|((-2212037556)^((((((2089224421)|(tmp = 360979560, tmp))<>>(2915907189.4873834)))+(x*x))%(1637581117))%(tmp = 2363861105.3786244, tmp))); - assertEquals(0, x &= ((-2765495757.873004)&(1727406493))); - assertEquals(NaN, x -= (((((-1419667515.2616255)|x)-(150530256.48022234))%((((x|x)<>>(x^x))+x))-((-1216384577.3749187)*(495244398)))); - assertEquals(NaN, x += (x^((tmp = 2472035493, tmp)+x))); - assertEquals(NaN, x %= ((tmp = -1753037412.885754, tmp)|((tmp = 2507058310, tmp)<<(1475945705)))); - assertEquals(-1008981005, x |= ((tmp = -1140889842.6099494, tmp)-(tmp = -131908837, tmp))); - assertEquals(999230327.5872104, x -= (tmp = -2008211332.5872104, tmp)); - assertEquals(975810, x >>= (((-1211913874)*x)>>>((-2842129009)>>(x&(tmp = -1410865834, tmp))))); - assertEquals(7623, x >>= ((tmp = -1051327071, tmp)-(((tmp = -237716102.8005445, tmp)|((2938903833.416546)&x))|(((-1831064579)^x)/((tmp = 2999232092, tmp)-(981996301.2875179)))))); - assertEquals(0, x -= x); - assertEquals(0, x %= (x|(tmp = -666201160.5810485, tmp))); - assertEquals(-1347124100, x |= (-1347124100)); - assertEquals(-0, x %= (x&x)); - assertEquals(-661607963, x ^= (tmp = -661607963.3794863, tmp)); - assertEquals(3465, x >>>= (-828119020.8056595)); - assertEquals(-268431991, x -= (((tmp = -1386256352, tmp)^((tmp = 743629575, tmp)%((x*((tmp = -1719517658, tmp)>>(2019516558)))<<((2637317661)|x))))<<(tmp = -51637065, tmp))); - assertEquals(1578876380, x += ((tmp = 1847308371, tmp)&(((((((tmp = 1487934776.1893163, tmp)%(tmp = 1423264469.3137975, tmp))|(((2653260792.5668964)/(-2417905016.043802))>>>(2097411118.4501896)))^x)^(((tmp = -71334226, tmp)|x)>>>(tmp = -2771758874.7696714, tmp)))^((tmp = -1464849031.3240793, tmp)%(tmp = 2349739690.6430283, tmp)))/x))); - assertEquals(3269293934, x += (1690417554)); - assertEquals(4025392608.031957, x -= (((tmp = 268501120.7225704, tmp)<<(tmp = 2841620654.8903794, tmp))+((tmp = 1606704462.8455591, tmp)/((-2601879963)/(tmp = 2966620168.989736, tmp))))); - assertEquals(7, x >>>= (x^(-1913800035))); - assertEquals(1.4326776816275493e-8, x /= ((((tmp = -2703417892, tmp)/x)^((-2693772270.396241)>>>((x-(tmp = 615999818.5666655, tmp))>>((((2308121439.3702726)<<((-1794701502)>>(x+(tmp = -2253406035.972883, tmp))))<<((tmp = -197103799.0624652, tmp)|(629975898)))>>>x))))>>>((tmp = 2833656803, tmp)^(x^(tmp = -1580436025, tmp))))); - assertEquals(0, x >>>= (tmp = 1525372830.2126007, tmp)); - assertEquals(0, x %= ((2354010949.24469)>>>(x<>>(-2205692260.552064)))); - assertEquals(0, x >>>= (x<<((1488533932)*(tmp = 1707754286, tmp)))); - assertEquals(0, x >>= (((tmp = 1232547376.463387, tmp)%((x>>(711691823.1608362))>>>x))>>(((895039781.7478573)*(((((-334946524)&x)*(tmp = -1214529640, tmp))^(tmp = -1586820245, tmp))*(1062595445)))+x))); - assertEquals(0, x *= (1863299863.2631998)); - assertEquals(0, x /= (tmp = 1858428705.1330547, tmp)); - assertEquals(0, x &= x); - assertEquals(611788028, x += (x^(611788028.1510412))); - assertEquals(1, x /= x); - assertEquals(0, x >>= ((tmp = -1617320707.1784317, tmp)-((-2139400380)-(-1402777976)))); - assertEquals(0, x >>= (415866827.34665)); - assertEquals(-1990811897, x -= (tmp = 1990811897, tmp)); - assertEquals(-1990811895, x += ((x>>>(tmp = -2175453282.769696, tmp))&(tmp = -1459450498.7327478, tmp))); - assertEquals(-2377017935.149517, x += (-386206040.1495173)); - assertEquals(1946129845, x |= (tmp = -2890956796.936539, tmp)); - assertEquals(0, x %= x); - assertEquals(0, x <<= (1616188263)); - assertEquals(-1081213596, x ^= (tmp = 3213753700, tmp)); - assertEquals(3213753700, x >>>= (tmp = -3211181312, tmp)); - assertEquals(-1081213596, x &= x); - assertEquals(-1081213583, x ^= (((tmp = 1599988273.4926577, tmp)>>((((-1061394954.6331315)^x)+((-1835761078)*x))+(x%(tmp = -696221869, tmp))))/((tmp = -1156966790.3436491, tmp)^x))); - assertEquals(0, x ^= x); - assertEquals(NaN, x /= x); - assertEquals(NaN, x += (-1257400530.9263027)); - assertEquals(NaN, x /= (753062089)); - assertEquals(NaN, x *= ((tmp = 305418865.57012296, tmp)^(((-2797769706)+((((tmp = -33288276.988654375, tmp)%(tmp = 1242979846, tmp))|(-316574800))-((tmp = -1766083579.4203427, tmp)*(((x*(tmp = -2400342309.2349987, tmp))>>(tmp = 2632061795, tmp))^(tmp = -1001440809, tmp)))))^((((x-(tmp = -1469542637.6925495, tmp))-x)-(3184196890))%(((((((633226688)*((tmp = -2692547856, tmp)>>(((tmp = -1244311756, tmp)>>>x)+((1746013631.405202)>>>(941829464.1962085)))))%(x-x))+(995681795))-(tmp = -3047070551.3642616, tmp))/(1968259705))-((-2853237880)^(tmp = -2746628223.4540343, tmp))))))); - assertEquals(0, x >>= x); - assertEquals(0.5713172378854926, x += (((x+(((x+x)/(tmp = 2642822318, tmp))*(-2590095885.4280834)))|(tmp = -1769210836, tmp))/(tmp = -3096722308.8665104, tmp))); - assertEquals(-0.000002311097780334994, x /= ((2269858877.9010344)>>(-2992512915.984787))); - assertEquals(-0.000002311097780334994, x %= (-1139222821)); - assertEquals(-0.000004622195560669988, x += x); - assertEquals(1, x /= x); - assertEquals(1, x >>>= (((3002169429.6061807)/(-3068577366))>>>((tmp = -1844537620, tmp)%((((tmp = 2087505119, tmp)>>>x)+x)&(2179989542))))); - assertEquals(-534213071, x *= (-534213071)); - assertEquals(-534213077.3716287, x -= (((tmp = -2390432951.154034, tmp)^x)/(-290501980))); - assertEquals(1836305, x >>>= (x&x)); - assertEquals(1836305, x %= ((x|((3070123855)^(49986396)))+((-1863644960.4202995)>>>((tmp = 1886126804.6019692, tmp)^x)))); - assertEquals(28692, x >>>= ((2561362139.491764)>>(((((tmp = -1347469854.7413375, tmp)/(((x|(x+x))^((x^(tmp = -2737413775.4595394, tmp))^x))<<(((tmp = 225344844.07128417, tmp)&x)&(tmp = 145794498, tmp))))*x)<<(1424529187))/((-2924344715)/(tmp = -2125770148, tmp))))); - assertEquals(-2089419535.2717648, x += (-2089448227.2717648)); - assertEquals(18957929, x ^= (tmp = 2186590872, tmp)); - assertEquals(-708972800, x -= (727930729)); - assertEquals(-4198593, x |= (799483455.1885371)); - assertEquals(-1, x >>= (-2330654693.6413193)); - assertEquals(-1, x |= (((tmp = -116877155, tmp)>>>((((tmp = -1677422314.1333556, tmp)/(tmp = -3108738499.0798397, tmp))%((x&(x/x))%((tmp = -695607185.1561592, tmp)-(tmp = 2302449181.622259, tmp))))^(((-1482743646.5604773)^((897705064)>>>x))-(tmp = -2933836669, tmp))))%(((tmp = -2991584625, tmp)|(((x>>x)+(-1101066835))-x))>>(-33192973.819939613)))); - assertEquals(-1, x &= x); - assertEquals(-524288, x <<= (-1177513101.3087924)); - assertEquals(1978770334.9189441, x += (tmp = 1979294622.9189441, tmp)); - assertEquals(901783582, x &= ((-368584615)^(((((-478030699.2647903)<>(tmp = 2417481141, tmp))); - assertEquals(-1077333228, x ^= (tmp = 3218755006, tmp)); - assertEquals(-50218, x |= (tmp = -1044436526.6435988, tmp)); - assertEquals(-1, x >>= (-154655245.18921852)); - assertEquals(0.00006276207290978003, x *= (((tmp = 2234286992.9800305, tmp)>>(tmp = 2132564046.0696363, tmp))/((((tmp = -2565534644.3428087, tmp)>>>(tmp = 2622809851.043325, tmp))>>>((tmp = 311277386, tmp)&x))-(tmp = -2003980974, tmp)))); - assertEquals(0, x %= x); - assertEquals(1282114076, x += ((((422838227)>>>((tmp = 1024613366.1899053, tmp)-((368275340)<<(((tmp = -3066121318, tmp)+(-2319101378))&x))))^(x>>(tmp = 1920136319.803412, tmp)))^(1282264803.3968434))); - assertEquals(-277097604, x |= (-283585688.9123297)); - assertEquals(553816692, x &= (x&(tmp = 554082036.676608, tmp))); - assertEquals(658505728, x <<= x); - assertEquals(658505728, x &= (x%(2846071230))); - assertEquals(39, x >>= (334728536.5172192)); - assertEquals(0, x -= x); - assertEquals(0, x += x); - assertEquals(0, x &= (tmp = -335285336, tmp)); - assertEquals(0, x <<= (tmp = 1255594828.3430014, tmp)); - assertEquals(0, x %= (-630772751.1248167)); - assertEquals(NaN, x /= ((((x&(tmp = -1576090612, tmp))%x)>>>x)*((-1038073094.2787619)>>>x))); - assertEquals(NaN, x += x); - assertEquals(NaN, x -= (((tmp = -2663887803, tmp)&((x+(-1402421046))/x))/(-2675654483))); - assertEquals(NaN, x %= (x&(tmp = 672002093, tmp))); - assertEquals(0, x |= x); - assertEquals(-2698925754, x += (tmp = -2698925754, tmp)); - assertEquals(-2057748993, x += ((tmp = -2263466497, tmp)^x)); - assertEquals(1, x /= x); - assertEquals(-2769559719.4045835, x -= (2769559720.4045835)); - assertEquals(-1.3964174646069973, x /= (tmp = 1983332198, tmp)); - assertEquals(-2140716624.3964174, x += (tmp = -2140716623, tmp)); - assertEquals(0, x <<= ((2589073007)-(-816764911.8571186))); - assertEquals(-2837097288.161354, x -= (tmp = 2837097288.161354, tmp)); - assertEquals(-1445059927.161354, x += (tmp = 1392037361, tmp)); - assertEquals(155197984, x &= (tmp = -2694712730.924674, tmp)); - assertEquals(155197984, x |= (x>>>(tmp = 69118015.20305443, tmp))); - assertEquals(155197984, x >>>= (((x^(-1353660241))*x)<<(((((x%(tmp = -1905584634, tmp))>>>(tmp = -860171244.5963638, tmp))&(-1084415001.7039547))+(x-(((tmp = 298064661, tmp)>>x)>>((tmp = 378629912.383446, tmp)-(x%x)))))+(((3212580683)/(((((x^x)>>(tmp = -1502887218, tmp))<>(tmp = 2473373497.467914, tmp))^((234025940)*x))+(tmp = 520098202.9546956, tmp))*(x*(tmp = -362929250.1775775, tmp)))^(-2379972900))))*(tmp = -1385817972, tmp))))+(-1788631834))))); - assertEquals(0, x >>= ((tmp = -18671049, tmp)/((tmp = 651261550.6716013, tmp)>>(-58105114.70740628)))); - assertEquals(0, x *= ((((x>>(tmp = 2256492150.737681, tmp))<<(x<<(((-2738910707)&x)<<(1892428322))))*(tmp = 1547934638, tmp))>>((((319464033.7888391)|(((((tmp = 2705641070, tmp)<<((tmp = 1566904759.36666, tmp)*((-682175559.7540412)&(-691692016.3021002))))%(tmp = 1118101737, tmp))|(902774462))<>>x))%x)*(tmp = -20297481.556210756, tmp))>>>(1927423855.1719701))-((2047811185.6278129)-(tmp = 2952219346.72126, tmp))))))|(-1685518403.7513878)))); - assertEquals(0, x /= (tmp = 1858074757.563318, tmp)); - assertEquals(-1351623058, x ^= (-1351623058.4756806)); - assertEquals(1, x /= x); - assertEquals(0, x ^= x); - assertEquals(0, x -= (x&(997878144.9798675))); - assertEquals(-0, x /= (-2769731277)); - assertEquals(0, x >>>= ((-2598508325)>>(-1355571351))); - assertEquals(0, x >>>= x); - assertEquals(0, x -= (x&(tmp = 1672810223, tmp))); - assertEquals(-924449908.1999881, x -= (924449908.1999881)); - assertEquals(-0, x %= x); - assertEquals(-0, x /= (tmp = 2007131382.059545, tmp)); - assertEquals(-0, x += x); - assertEquals(225132064, x += ((((tmp = -2422670578.1260514, tmp)|x)+x)^(1660142894.7066057))); - assertEquals(Infinity, x /= (x-x)); - assertEquals(0, x ^= x); - assertEquals(0, x <<= x); - assertEquals(-2455424946.732606, x -= (2455424946.732606)); - assertEquals(1208029258, x &= ((tmp = 1823728509, tmp)+x)); - assertEquals(1.3682499724725645, x /= ((((tmp = 1267938464.3854322, tmp)%((tmp = 2510853574, tmp)+(((2979355693.866435)-(tmp = 1989726095.7746763, tmp))<>>(2515004943.0865674)))-(2532799222.353197))))<<(tmp = -2168058960.2694826, tmp))); - assertEquals(0.13799826710735907, x %= ((-1090423235)/(tmp = 2659024727, tmp))); - assertEquals(0, x >>= (1688542889.082693)); - assertEquals(0, x <<= x); - assertEquals(NaN, x %= ((((tmp = 1461037539, tmp)<<((x<<(tmp = 2101282906.5302017, tmp))>>(-2792197742)))%(((x%x)^(((tmp = 1399565526, tmp)^(tmp = 643902, tmp))-((tmp = -1449543738, tmp)|x)))/x))*(x<<(471967867)))); - assertEquals(0, x &= ((tmp = -2121748100.6824129, tmp)>>(tmp = -2817271480.6497793, tmp))); - assertEquals(0, x &= (3169130964.6291866)); - assertEquals(-0, x /= (-2303316806)); - assertEquals(0, x <<= (tmp = 120185946.51617038, tmp)); - assertEquals(449448375, x ^= ((((tmp = -836410266.014014, tmp)/x)&((x>>>(tmp = -2602671283, tmp))+x))+(tmp = 449448375, tmp))); - assertEquals(202003841790140640, x *= x); - assertEquals(202003840800829020, x += (((tmp = -1339865843, tmp)+(tmp = 350554234.15375435, tmp))<<((((((tmp = -1798499687.8208885, tmp)>>(((x-(x^x))|((tmp = 463627396.23932934, tmp)/(2714928060)))&(tmp = 3048222568.1103754, tmp)))&(-3127578553))<<(tmp = -2569797028.8299003, tmp))&x)<<((tmp = 2104393646, tmp)/((tmp = 2314471015.742891, tmp)<<((2704090554.1746845)>>(((tmp = 1935999696, tmp)*(((1348554815)>>>x)>>>(146665093.82445252)))%x))))))); - assertEquals(202003841764125400, x -= (tmp = -963296372.2846234, tmp)); - assertEquals(-413485056, x <<= (tmp = -2474480506.6054573, tmp)); - assertEquals(-3171894580.186845, x += ((tmp = -1261111102, tmp)+(tmp = -1497298422.1868448, tmp))); - assertEquals(17136, x >>= (tmp = 3055058160, tmp)); - assertEquals(17136, x %= (tmp = 1706784063.3577294, tmp)); - assertEquals(17136, x >>= ((tmp = 2161213808, tmp)*x)); - assertEquals(-17136, x /= ((((tmp = -1492618154, tmp)>>x)|(1381949066))>>(tmp = 2014457960, tmp))); - assertEquals(-34272, x += x); - assertEquals(-1498690902, x += (-1498656630)); - assertEquals(-1168674482, x ^= (486325220)); - assertEquals(-1168674482, x <<= ((x^x)*x)); - assertEquals(794521557347068000, x *= (-679848469)); - assertEquals(1.3330392590424505e+26, x *= (tmp = 167778866, tmp)); - assertEquals(0, x <<= (tmp = -2501540637.3664584, tmp)); - assertEquals(0, x >>>= (x-(x*(-890638026.1825848)))); - assertEquals(0, x %= ((-285010538.2813468)&(1314684460.7634423))); - assertEquals(0, x -= x); - assertEquals(0, x *= x); - assertEquals(NaN, x %= (x*(x<>x)); - assertEquals(0, x &= (tmp = 1107152048, tmp)); - assertEquals(0, x >>= (1489117056.8200984)); - assertEquals(518749976, x ^= (518749976.20107937)); - assertEquals(356718654, x += (tmp = -162031322, tmp)); - assertEquals(356718654, x %= (((x>>>((tmp = -373747439.09634733, tmp)*(tmp = 563665566, tmp)))*(tmp = 2853322586.588251, tmp))*((1303537213)%(-2995314284)))); - assertEquals(5573728, x >>= (tmp = -2095997978, tmp)); - assertEquals(5573728, x <<= x); - assertEquals(5573728, x >>= (((((tmp = 1745399178.334154, tmp)<<(tmp = 2647999783.8219824, tmp))^(tmp = 1571286759, tmp))%x)/(2166250345.181711))); - assertEquals(10886, x >>>= ((682837289)+(x*x))); - assertEquals(170, x >>>= x); - assertEquals(169.95167497151652, x -= (((tmp = 527356024.19706845, tmp)+((tmp = 1263164619.2954736, tmp)|(tmp = 2942471886, tmp)))/((3017909419.131321)+(tmp = 2137746252.8006272, tmp)))); - assertEquals(-1915170061, x ^= (tmp = -1915170214, tmp)); - assertEquals(206045792, x &= (((tmp = 887031922, tmp)>>>x)-((-1861922770)|(9633541)))); - assertEquals(-1940321674, x |= (tmp = -2012149162.1817405, tmp)); - assertEquals(-1940321674, x &= x); - assertEquals(1128412272.160699, x += (tmp = 3068733946.160699, tmp)); - assertEquals(0.47486363523180236, x /= (tmp = 2376286976.807289, tmp)); - assertEquals(-1.4931079540252477e-10, x /= (tmp = -3180370407.5892467, tmp)); - assertEquals(0, x |= (((1220765170.5933602)*(884017786))*((x%(tmp = -2538196897.226384, tmp))<<(x^x)))); - assertEquals(-525529894, x += (tmp = -525529894, tmp)); - assertEquals(1621426184, x &= ((3046517714)*(((((-162481040.8033898)+(x/((x&(1489724492))/((x|(tmp = 943542303, tmp))>>>((-1840491388.1365871)<<(2338177232))))))+(((-2268887573.2430763)>>>(((tmp = 2919141667, tmp)+((tmp = 1326295559.692003, tmp)<<(-2256653815)))>>>(((((tmp = 1602731976.7514615, tmp)*(856036244.3730336))^x)>>>((((2846316421.252943)&(915324162))%(tmp = 1144577211.0221815, tmp))%x))*(x*x))))%(tmp = -2641416560, tmp)))*(x+(x>>>x)))>>x))); - assertEquals(1621426184, x %= (tmp = 1898223948, tmp)); - assertEquals(-3.383396676504762, x /= ((tmp = 2211088034.5234556, tmp)^x)); - assertEquals(7120923705.122882, x *= (((((tmp = 2632382342.914504, tmp)/(-615440284.1762738))&(2162453853.6658797))<<(-849038082.5298986))|(tmp = -2104667110.5603983, tmp))); - assertEquals(-1469010887, x &= x); - assertEquals(850767635866964700, x *= (tmp = -579143179.5338116, tmp)); - assertEquals(0, x %= x); - assertEquals(-571457, x |= ((2849326490.8464212)|(tmp = 1450592063, tmp))); - assertEquals(-571457, x &= x); - assertEquals(-0.00018638416434019244, x /= (3066016912.021368)); - assertEquals(0, x <<= (2058262829)); - assertEquals(NaN, x %= ((x|((x%x)>>>x))%((tmp = -2970314895.6974382, tmp)+x))); - assertEquals(NaN, x *= (-698693934.9483855)); - assertEquals(NaN, x += (-100150720.64391875)); - assertEquals(NaN, x %= x); - assertEquals(NaN, x -= (-530301478)); - assertEquals(NaN, x /= (1507673244)); - assertEquals(0, x <<= (x%(tmp = 2977838420.857235, tmp))); - assertEquals(0, x <<= (tmp = 3200877763, tmp)); - assertEquals(0, x <<= (tmp = -2592127060, tmp)); - assertEquals(NaN, x -= (((((((1930632619)*(3018666359))<<((tmp = 2676511886, tmp)&(-2786714482.25468)))%x)-(-633193192))<<((tmp = 403293598, tmp)*(-2765170226)))%x)); - assertEquals(530062092, x |= (tmp = 530062092, tmp)); - assertEquals(129409, x >>>= x); - assertEquals(-152430382316341.78, x *= (-1177896300.229055)); - assertEquals(-304860764632683.56, x += x); - assertEquals(0, x ^= x); - assertEquals(0, x %= (tmp = -63071565.367660046, tmp)); - assertEquals(0, x &= ((((tmp = -1007464338, tmp)<<(x<<((x^(tmp = -726826835, tmp))|x)))>>>x)*(((tmp = 469293335.9161849, tmp)<<(((((tmp = 1035077379, tmp)*(tmp = -555174353.7567515, tmp))&(3109222796.8286266))-(((((x-(tmp = 1128900353.6650414, tmp))|(tmp = 3119921303, tmp))&((-1353827690)&(x%((-924615958)&x))))>>>x)+(tmp = 1167787910, tmp)))+x))%((605363594)>>(1784370958.269381))))); - assertEquals(0, x %= (2953812835.9781704)); - assertEquals(0, x -= x); - assertEquals(0, x <<= x); - assertEquals(-901209266, x += (-901209266)); - assertEquals(-901209266, x &= x); - assertEquals(404, x >>>= (-3195686249)); - assertEquals(824237108, x ^= (824237472)); - assertEquals(497790936.1853996, x /= ((tmp = 1253776028, tmp)/(757207285))); - assertEquals(497790936, x >>>= ((tmp = -2212598336, tmp)<<(x^(1335355792.9363852)))); - assertEquals(0, x %= x); - assertEquals(-2659887352.6415873, x += (tmp = -2659887352.6415873, tmp)); - assertEquals(1635079945, x |= ((x&(1234659380))>>((((tmp = 2694276886.979136, tmp)|x)^((tmp = 132795582, tmp)<<((-1089828902)>>>x)))<<((((tmp = -2098728613.0310376, tmp)<<(x/(tmp = -2253865599, tmp)))*((x+(x>>>((48633053.82579231)-(385301592))))*(tmp = -1847454853.333535, tmp)))/((-540428068.8583717)+x))))); - assertEquals(1, x /= x); - assertEquals(33554432, x <<= ((((2803140769)<>>(tmp = -2273336965.575082, tmp))); - assertEquals(67108864, x += x); - assertEquals(9007199254740992, x *= (x+((x>>x)%(2674760854)))); - assertEquals(55369784, x %= (x|(-170725544.20038843))); - assertEquals(55369784, x %= (-1186186787)); - assertEquals(0, x ^= x); - assertEquals(0, x <<= x); - assertEquals(NaN, x /= ((-2968110098)-((x/(x|(((((x|((x&((-130329882)>>>(((-135670650)|(x<<(tmp = 1280371822, tmp)))^x)))-(-1183024707.2230911)))&(-1072829280))>>>(-340696948.41492534))>>>(tmp = 436308526.4938295, tmp))<<(((tmp = 3113787500, tmp)*((2038309320)>>>(-1818917055)))&((2808000707)/(774731251))))))%x))); - assertEquals(0, x |= (x*(tmp = -843074864, tmp))); - assertEquals(0, x &= (tmp = -752261173.8090212, tmp)); - assertEquals(0, x >>>= (tmp = 1532349931.7517128, tmp)); - assertEquals(0, x <<= ((tmp = -8628768, tmp)-((((tmp = 225928543, tmp)%(x>>>(x+x)))^((tmp = -2051536806.5249376, tmp)-x))-((tmp = -2274310376.9964137, tmp)%(tmp = 2251342739, tmp))))); - assertEquals(0, x >>= (1011388449)); - assertEquals(0, x += x); - assertEquals(0, x >>>= x); - assertEquals(-0, x *= ((-1781234179.8663826)>>(((1514201119.9761915)>>(((((1174857164.90042)^(tmp = 1124973934, tmp))^x)+((-1059246013.8834443)<<(2997611138.4876065)))%(((798188010)*(-1428293122))>>>(tmp = -3087267036.8035297, tmp))))<>x)))); - assertEquals(0, x -= x); - assertEquals(-25232836, x -= ((tmp = 25232836, tmp)|x)); - assertEquals(-49, x >>= (x+((tmp = 2201204630.2897243, tmp)|(-1929326509)))); - assertEquals(-1605632, x <<= x); - assertEquals(-165965313, x += (tmp = -164359681, tmp)); - assertEquals(9.220413724941365e-10, x /= (((((tmp = 2579760013.0808706, tmp)*(tmp = -2535370639.9805303, tmp))>>((tmp = 2138199747.0301933, tmp)-(tmp = -2698019325.0972376, tmp)))*(tmp = -425284716, tmp))/((-1951538149.6611228)/(x^(2632919130))))); - assertEquals(0, x &= x); - assertEquals(0, x &= ((-645189137)/(tmp = 800952748, tmp))); - assertEquals(0, x &= (tmp = -1773606925, tmp)); - assertEquals(0, x += x); - assertEquals(0, x >>>= (tmp = 211399355.0741787, tmp)); - assertEquals(0, x <<= ((-1317040231.5737965)/((((((tmp = 838897586.0147077, tmp)|((-1902447594)|(tmp = 404942728.83034873, tmp)))^(2462760692.2907705))%((((((x%(tmp = -2888980287, tmp))<<(-368505224.49609876))-((x>>>(532513369))&(((((((tmp = -1298067543, tmp)^(tmp = -3130435881.100909, tmp))>>x)/(tmp = -3041161992, tmp))>>(x|(-431685991.95776653)))^((tmp = 1031777777, tmp)^((-105610810)>>>((-631433779)>>(tmp = -2577780871.167671, tmp)))))%(tmp = -3170517650.088039, tmp))))-(((tmp = 2175146237.968785, tmp)-((384631158.50508535)>>((893912279.4646157)|(tmp = -1478803924.5338967, tmp))))%(x/(-1089156420))))<<(tmp = -2024709456, tmp))>>x))*(tmp = -1423824994.6993582, tmp))%(tmp = 1739143409, tmp)))); - assertEquals(-1799353648, x |= ((-1799353648.3589036)>>>((((x&(-923571640.1012449))%x)+((tmp = 971885508, tmp)>>((tmp = -2207464428.2123804, tmp)+(-3108177894.0459776))))-(-2048954486.7014258)))); - assertEquals(-3666808032.2958965, x -= (tmp = 1867454384.2958965, tmp)); - assertEquals(-260069478915415100, x *= (tmp = 70925305.23136711, tmp)); - assertEquals(1142096768, x &= (tmp = 1866401706.9144325, tmp)); - assertEquals(1, x >>>= (tmp = 2701377150.5717473, tmp)); - assertEquals(1865946805, x |= (tmp = -2429020492, tmp)); - assertEquals(1424222287, x ^= ((((tmp = 433781338, tmp)>>(x>>>((-2914418422.4829016)/(tmp = 1600920669, tmp))))|(tmp = 588320482.9566053, tmp))>>>((((((x+(tmp = -2556387365.5071325, tmp))+(tmp = -2381889946.1830974, tmp))/(3154278191))>>>(-1069701268.8022757))>>(((tmp = 182049089.28866422, tmp)>>x)>>>(tmp = -447146173, tmp)))/(x-(2103883357.0929923))))); - assertEquals(0, x ^= x); - assertEquals(0, x -= (x%(3036884806))); - assertEquals(0, x >>>= (tmp = -652793480.3870945, tmp)); - assertEquals(0, x += x); - assertEquals(304031003, x ^= ((tmp = -900156495, tmp)^(-666397014.0711515))); - assertEquals(1, x /= x); - assertEquals(-1974501681, x |= (x^(-1974501681.4628205))); - assertEquals(-1.3089278317616264, x /= (((-1723703186.962839)>>>x)|((2061022161.6239533)<>(tmp = -2301588485.2811003, tmp)))>>>(((tmp = 1812723993, tmp)>>>((x^(((tmp = -3154100157.951021, tmp)%((tmp = -1254955564.4553523, tmp)-(((x>>>(((-1762886343)*x)*x))*(x^(x*(-750918563.4387553))))*x)))|((x>>x)>>(x<<((((-1766797454.5634143)^(tmp = -2251474340, tmp))-(-787637516.5276759))<<((1390653368)^(-1937605249.245374)))))))|(((tmp = 1156611894, tmp)<>((((x+(tmp = 2170166060.881797, tmp))&(x>>>(tmp = -1749295923.1498983, tmp)))>>(((-1014973878)|x)&(1302866805.684057)))*(tmp = 560439074.4002491, tmp))))))|(-2758270803.4510045)))&x)); - assertEquals(0, x |= x); - assertEquals(0, x += ((x>>((x+(tmp = -2776680860.870219, tmp))-(((688502468)<<(((tmp = 475364260.57888806, tmp)<>>= (-770595225)); - assertEquals(NaN, x += (((x>>x)/(tmp = 281621135, tmp))/x)); - assertEquals(0, x >>= (1363890241)); - assertEquals(1639023942.9945002, x += (1639023942.9945002)); - assertEquals(-2568590958567747000, x *= (-1567146697)); - assertEquals(1793554700, x ^= (tmp = 3215813388.405799, tmp)); - assertEquals(437879, x >>= x); - assertEquals(1339485943, x |= (1339220210)); - assertEquals(1, x /= x); - assertEquals(512, x <<= (2509226729.1477118)); - assertEquals(512, x <<= ((x>>(1326274040.7181284))<<(tmp = -760670199, tmp))); - assertEquals(1, x /= (x<<(x^x))); - assertEquals(0, x >>>= (((((1382512625.8298302)&(x>>>x))*(tmp = -815316595, tmp))>>>x)-(-95538051))); - assertEquals(-544344229.3548596, x -= (tmp = 544344229.3548596, tmp)); - assertEquals(-1088688458.7097192, x += x); - assertEquals(-1022850479579041900, x *= (939525418.3104812)); - assertEquals(2069622661, x |= (-2632744187.7721186)); - assertEquals(-1353480538017756400, x -= ((tmp = 1308085980, tmp)*((x>>>(-629663391.5165792))&(tmp = 3182319856.674114, tmp)))); - assertEquals(1.3702811563654176e+27, x *= ((((3061414617.6321163)/(tmp = 2628865442, tmp))+(-1549548261))+(x&((tmp = 809684398, tmp)|(x^(tmp = 801765002, tmp)))))); - assertEquals(0, x >>>= ((-2988504159)&((tmp = -260444190.02252054, tmp)^(2178729442.260293)))); - assertEquals(-1518607002, x -= (tmp = 1518607002, tmp)); - assertEquals(724566016, x <<= (tmp = 1042915731.7055794, tmp)); - assertEquals(707584, x >>>= (-208959862.93305588)); - assertEquals(0, x >>>= (((tmp = 877181764, tmp)>>(-970697753.3318911))%x)); - assertEquals(0, x ^= x); - assertEquals(0, x += x); - assertEquals(0, x <<= x); - assertEquals(0, x /= (x^((x/(-2903618412.4936123))+(tmp = 1169288899, tmp)))); - assertEquals(0, x >>>= x); - assertEquals(-1302645245, x ^= ((1855892732.3544865)+(tmp = 1136429319.5633948, tmp))); - assertEquals(0, x ^= x); - assertEquals(0, x &= (-1384534597.409375)); - assertEquals(-0, x /= (tmp = -680466419.8289509, tmp)); - assertEquals(-0, x *= (318728599.95017374)); - assertEquals(NaN, x %= (x>>(2019695267))); - assertEquals(0, x >>= (tmp = 1280789995, tmp)); - assertEquals(0, x *= (tmp = 2336951458, tmp)); - assertEquals(0, x >>= ((2981466013.758637)%(731947033))); - assertEquals(0, x -= x); - assertEquals(0, x ^= x); - assertEquals(0, x /= ((((3068070149.1452317)>>x)%(((1448965452)*((tmp = -2961594129, tmp)+(1829082104.0681171)))>>(-2331499703)))>>>(tmp = -3206314941.2626476, tmp))); - assertEquals(0, x >>= (x%(1869217101.9823673))); - assertEquals(0, x <<= (x+x)); - assertEquals(0, x >>>= ((1202130282)>>>x)); - assertEquals(0, x += x); - assertEquals(2603245248.6273212, x += (tmp = 2603245248.6273212, tmp)); - assertEquals(-1691864471, x ^= (x>>>(2504513614.117516))); - assertEquals(136835305, x -= ((-1618979896)&(-746953306))); - assertEquals(-2568499564.1261334, x += (tmp = -2705334869.1261334, tmp)); - assertEquals(1038075700, x ^= (1530399136)); - assertEquals(2076151400, x += x); - assertEquals(-524018410.1751909, x -= ((2398973627.175191)-(-201196183))); - assertEquals(0.327110599608614, x /= ((3181340288.602796)&x)); - assertEquals(0.327110599608614, x %= (tmp = -2284484060, tmp)); - assertEquals(0, x |= x); - assertEquals(403217947.5779772, x += (tmp = 403217947.5779772, tmp)); - assertEquals(403217947, x |= x); - assertEquals(-Infinity, x *= ((58693583.845808744)+(((tmp = -1527787016, tmp)*x)/((((2532689893.3191843)/(tmp = 2781746479.850424, tmp))|(((((460850355.9211761)/((((tmp = 626683450, tmp)<<((tmp = 1349974710, tmp)-((tmp = -1349602292, tmp)/(-2199808871.1229663))))>>((x/(-3092436372.3078623))&(tmp = -1190631012.0323825, tmp)))^((-2907082828.4552956)-(tmp = 1858683340.1157017, tmp))))^(-1513755598.5398848))%x)/x))&(1147739260.136806))))); - assertEquals(0, x &= (tmp = -3047356844.109563, tmp)); - assertEquals(637934616, x -= (tmp = -637934616, tmp)); - assertEquals(-1553350083, x ^= (-2056266203.094929)); - assertEquals(-0.13467351026547192, x %= ((tmp = 824736251, tmp)/(2544186314))); - assertEquals(1, x /= x); - assertEquals(1, x |= x); - assertEquals(0, x >>>= (2166609431.9515543)); - assertEquals(0, x <<= (x|(tmp = 121899222.14603412, tmp))); - assertEquals(0, x *= (1300447849.6595674)); - assertEquals(0, x %= (tmp = -2360500865.3944597, tmp)); - assertEquals(0, x %= (tmp = -1693401247, tmp)); - assertEquals(0, x >>= x); - assertEquals(0, x /= (471265307)); - assertEquals(257349748, x ^= (257349748.689448)); - assertEquals(257349748, x &= x); - assertEquals(981, x >>>= (tmp = -1959001422, tmp)); - assertEquals(0, x >>= ((-79932778.18114972)/x)); - assertEquals(0, x <<= (((-2599621472)^(tmp = 662071103, tmp))%(tmp = -2675822640.7641535, tmp))); - assertEquals(0, x &= (tmp = 2582354953.878623, tmp)); - assertEquals(0, x /= ((-953254484)/((-2571632163.376176)-(tmp = -342034471, tmp)))); - assertEquals(0, x <<= ((x-(tmp = -3013057672, tmp))&(tmp = -3204761036, tmp))); - assertEquals(0, x ^= ((x&((515934453)>>>x))/x)); - assertEquals(1, x |= ((-1914707646.2075093)>>>(tmp = -1918045025, tmp))); - assertEquals(-2002844120.8792589, x += (tmp = -2002844121.8792589, tmp)); - assertEquals(573030794, x >>>= (tmp = 1707788162, tmp)); - assertEquals(1.917619109627369, x /= ((1909436830.484202)%((123114323)<<(tmp = -1288988388.6444468, tmp)))); - assertEquals(-1400358045, x |= (-1400358046)); - assertEquals(-2043022529.4273133, x += (tmp = -642664484.4273133, tmp)); - assertEquals(-81408068.86728716, x %= (tmp = -980807230.2800131, tmp)); - assertEquals(0.1436896445024992, x /= (((tmp = 3201789924.913518, tmp)%(tmp = -962242528.6008646, tmp))^((tmp = -338830119.55884504, tmp)*(tmp = -916120166, tmp)))); - assertEquals(0.1436896445024992, x %= (tmp = 2598469263, tmp)); - assertEquals(0, x *= (x-x)); - assertEquals(-1409286144, x += (((-111514798.64745283)|(2372059654))<<(tmp = 175644313, tmp))); - assertEquals(-2393905467.0073113, x += (-984619323.0073113)); - assertEquals(-835111172.0073113, x %= (x^(-765900532.5585573))); - assertEquals(-835111172.0073113, x %= (tmp = -946478116, tmp)); - assertEquals(-100, x >>= ((-1020515908)>>(((x&((x^(169474253.53811646))>>(-221739002)))+x)*((201939882.92880356)/(tmp = -50402570, tmp))))); - assertEquals(2131506964, x &= (tmp = -2163460268, tmp)); - assertEquals(1074275840, x &= ((-1561930379.8719592)*(tmp = -2871750052.876917, tmp))); - assertEquals(-954232605.5377102, x -= (tmp = 2028508445.5377102, tmp)); - assertEquals(-29, x >>= (-279577351.87217045)); - assertEquals(-232, x <<= x); - assertEquals(-70, x |= (215185578)); - assertEquals(-1, x >>= (x>>(-1691303095))); - assertEquals(1, x /= x); - assertEquals(3149465364.2236686, x *= (3149465364.2236686)); - assertEquals(3304787832.3790073, x += (tmp = 155322468.15533853, tmp)); - assertEquals(100068712.23500109, x %= (tmp = 3204719120.1440063, tmp)); - assertEquals(91628864, x &= (tmp = 629090241, tmp)); - assertEquals(-113202292046379710, x *= (-1235443583)); - assertEquals(122, x >>>= (tmp = 3196555256, tmp)); - assertEquals(122, x >>>= (((2226535734)-x)^(2248399036.393125))); - assertEquals(6.904199169070746e-8, x /= (tmp = 1767040564.9149356, tmp)); - assertEquals(-212687449.99999994, x += ((((2244322375)*(((2515994102)^x)>>x))<<(x-(-832407685.3251972)))^(2266670502))); - assertEquals(366515938514778750, x *= (tmp = -1723260768.3940866, tmp)); - assertEquals(366515938514778750, x += ((-1643386193.9159095)/(tmp = 425161225.95316494, tmp))); - assertEquals(654872716.4123061, x /= ((-1377382984)-(tmp = -1937058061.811642, tmp))); - assertEquals(654872716, x &= x); - assertEquals(-86260926.17813063, x -= (tmp = 741133642.1781306, tmp)); - assertEquals(1052176592, x >>>= x); - assertEquals(2020882856, x ^= (-3107796616)); - assertEquals(0, x <<= ((606939871.9812952)|(tmp = -3127138319.1557302, tmp))); - assertEquals(NaN, x -= ((x%((1120711400.2242608)%x))*(tmp = -930171286.7999947, tmp))); - assertEquals(NaN, x %= (3215044180)); - assertEquals(NaN, x %= (tmp = 2882893804.20102, tmp)); - assertEquals(NaN, x %= ((217170359.5778643)^x)); - assertEquals(0, x &= ((-1095125960.9903677)>>(x^(-2227981276)))); - assertEquals(-748549860, x += (-748549860)); - assertEquals(1816208256, x <<= (-610872411.3826082)); - assertEquals(201400576, x &= (((tmp = 1910394603.4836266, tmp)<>((765467065)+(x|(2673651811.9494815)))))<<((-1463378514)|(((x/(tmp = -1075050081, tmp))-((-879974865)+x))>>>(tmp = 2172883926, tmp))))); - assertEquals(433013198, x ^= (433013198.2833413)); - assertEquals(0, x >>= ((((-2404431196)%(x%(tmp = 1443152875.8809233, tmp)))&(x|((1414364997.0517852)/((tmp = -435854369, tmp)+(tmp = 2737625141, tmp)))))|(((tmp = 2241746562.2197237, tmp)^(tmp = -1606928010.1992552, tmp))|((tmp = -3083227418.686173, tmp)>>(tmp = -2717460410, tmp))))); - assertEquals(0, x >>= x); - assertEquals(0, x *= ((tmp = 2302521322, tmp)>>>(((((((tmp = 344089066.9725498, tmp)%(tmp = 1765830559, tmp))-x)|x)^(((-2450263325)/(tmp = 371928405.17475057, tmp))>>>(1330100413.7731652)))^(((173024329)%(tmp = -2927276187, tmp))+(x>>>(-1042229940.308507))))|(((((tmp = 379074096, tmp)+((142762508)-((-2773070834.526266)-(x&((tmp = 57957493, tmp)<<(2189553500))))))+((36991093)+(tmp = 339487168.58069587, tmp)))*(-1257565451))&(tmp = 645233114, tmp))))); - assertEquals(-2644503151.1185284, x += (-2644503151.1185284)); - assertEquals(-5289006302.237057, x += x); - assertEquals(-4008773824.2370567, x -= (tmp = -1280232478, tmp)); - assertEquals(1975449413, x |= ((tmp = 1957832005.4285066, tmp)>>((1681236712.9715524)&(-675823978)))); - assertEquals(-146472960, x <<= (-648510672.5644083)); - assertEquals(-3, x |= (((((x>>>(tmp = 2271744104, tmp))+(tmp = -210058133.30147195, tmp))+(tmp = -2827493425, tmp))/(tmp = 765962538, tmp))%(tmp = 1048631551, tmp))); - assertEquals(1, x /= x); - assertEquals(0, x >>= (1070524782.5154183)); - assertEquals(0, x <<= (462502504)); - assertEquals(0, x %= (540589670.0730014)); - assertEquals(NaN, x %= x); - assertEquals(NaN, x /= ((-1268640098)%x)); - assertEquals(NaN, x %= (1741157613.744652)); - assertEquals(NaN, x += x); - assertEquals(NaN, x %= ((x|(tmp = 1992323492.7000637, tmp))*x)); - assertEquals(NaN, x /= ((tmp = -2271503368.0341196, tmp)>>((tmp = 1224449194, tmp)>>>(tmp = 2976803997, tmp)))); - assertEquals(NaN, x += (tmp = -1078313742.1633894, tmp)); - assertEquals(NaN, x += (-787923311)); - assertEquals(NaN, x %= x); - assertEquals(-1299878219, x ^= (2995089077)); - assertEquals(536887953, x &= ((625660571.2651105)&(x^(((tmp = 950150725.2319129, tmp)+(-2122154205.466675))/(tmp = 1754964696.974752, tmp))))); - assertEquals(4096, x >>>= x); - assertEquals(1, x /= x); - assertEquals(-82508517, x ^= (((-930231800)%(tmp = -423861640.4356506, tmp))+x)); - assertEquals(-82508517, x &= (x&x)); - assertEquals(-479519, x %= ((tmp = 1861364600.595756, tmp)|x)); - assertEquals(479518, x ^= (((x>>(-1539139751.6860313))>>(tmp = -456165734, tmp))|(-2786433531))); - assertEquals(959036, x += x); - assertEquals(29, x >>>= ((tmp = -1049329009.7632706, tmp)^(((((((1117739997)/(((-841179741.4939663)*(-1211599672))>>>((-413696355)%(tmp = -1753423217.2170188, tmp))))<<(tmp = 1599076219.09274, tmp))>>>(-1382960317))^(((x^(tmp = 515115394, tmp))>>>(tmp = -388476217, tmp))>>>(x/x)))^x)<<(136327532.213817)))); - assertEquals(24, x &= (2388755418)); - assertEquals(0, x >>>= (tmp = -405535917, tmp)); - assertEquals(0, x &= (tmp = -1427139674, tmp)); - assertEquals(NaN, x /= (x^((1530470340)%x))); - assertEquals(0, x |= ((x>>(-1429690909.8472774))*((((tmp = 2033516515, tmp)/(1314782862))>>>x)>>(tmp = 1737186497.6441216, tmp)))); - assertEquals(0, x -= x); - assertEquals(0, x %= (3115422786)); - assertEquals(-0, x *= (x+(tmp = -2558930842.267017, tmp))); - assertEquals(NaN, x %= x); - assertEquals(0, x &= (2695531252.254449)); - assertEquals(-613178182, x ^= (-613178182)); - assertEquals(54, x >>>= (x%(((tmp = 2277868389, tmp)^((((tmp = -1143932265.3616111, tmp)^((x&((x-((-2100384445.7850044)|(tmp = 908075129.3456883, tmp)))*x))+(((tmp = 1031013284.0275401, tmp)*((((tmp = -233393205, tmp)>>>(tmp = -111859419, tmp))*(-1199307178))|(tmp = -1998399599, tmp)))>>>((((-731759641.9036775)>>>(tmp = 2147849691, tmp))>>>(tmp = -2121899736, tmp))>>>(x>>>x)))))>>((1900348757.360562)^(tmp = 2726336203.6149445, tmp)))>>>((x*((tmp = -2697628471.0234947, tmp)%((x^(tmp = -2751379613.9474974, tmp))*x)))+(x>>(tmp = 42868998.384643435, tmp)))))+(598988941)))); - assertEquals(34, x &= ((tmp = 2736218794.4991407, tmp)%(2169273288.1339874))); - assertEquals(2.086197133417468, x /= ((tmp = 2176358852.297597, tmp)%x)); - assertEquals(2, x <<= (((tmp = -1767330075, tmp)|(-3107230779.8512735))&x)); - assertEquals(4194304, x <<= (tmp = 1061841749.105744, tmp)); - assertEquals(48609515, x ^= (44415211.320786595)); - assertEquals(48609515, x %= (1308576139)); - assertEquals(23735, x >>>= ((-324667786)-x)); - assertEquals(23735, x <<= ((-1270911229)<<(((((tmp = -882992909.2692418, tmp)+(tmp = 394833767.947718, tmp))-x)<<(702856751))/x))); - assertEquals(-31080872939240, x *= (tmp = -1309495384, tmp)); - assertEquals(-14625.31935626114, x /= ((668084131)+(1457057357))); - assertEquals(-14625.31935626114, x %= (266351304.6585492)); - assertEquals(-12577, x |= (-945583977.619837)); - assertEquals(-4097, x |= ((tmp = -2621808583.2322493, tmp)-(tmp = -2219802863.9072213, tmp))); - assertEquals(-1004843865, x &= ((-1004839768)+((tmp = 2094772311, tmp)/(-1340720370.275643)))); - assertEquals(-31401371, x >>= ((2035921047)>>>((tmp = -1756995278, tmp)>>>(-537713689)))); - assertEquals(1791746374.016472, x -= ((tmp = -1823147745, tmp)-(x/(tmp = -1906333520, tmp)))); - assertEquals(3.7289343120517406, x /= (tmp = 480498240, tmp)); - assertEquals(7.457868624103481, x += x); - assertEquals(234881024, x <<= (-781128807.2532628)); - assertEquals(67108864, x &= (tmp = -2060391332, tmp)); - assertEquals(-605958718, x -= (673067582)); - assertEquals(-605958718, x <<= ((x%x)&((tmp = 1350579401.0801518, tmp)|x))); - assertEquals(-109268090.4715271, x %= (tmp = -496690627.5284729, tmp)); - assertEquals(-109268090, x <<= (((-2004197436.8023896)%((x|((tmp = 271117765.61283946, tmp)-((1595775845.0754795)*(555248692.2512416))))/x))<>>= ((tmp = 586618136, tmp)>>>(tmp = 699144121.9458897, tmp))); - assertEquals(-28611391568319.285, x *= (tmp = -1913933478.3811147, tmp)); - assertEquals(1680557633, x &= (((tmp = 2606436319.199714, tmp)<<(1575299025.6917372))|((-1092689109)/(735420388)))); - assertEquals(1680361024, x &= ((tmp = 1860756552.2186172, tmp)|(-360434860.1699109))); - assertEquals(820488, x >>>= (1788658731)); - assertEquals(820488, x >>= (-1555444352)); - assertEquals(2104296413, x ^= (2103543509)); - assertEquals(16843328, x &= ((x<<((-2920883149)/(1299091676)))-(((((tmp = 3199460211, tmp)+(-237287821.61504316))&(tmp = -1524515028.3596857, tmp))-(tmp = -700644414.6785603, tmp))+(-180715428.86124516)))); - assertEquals(1326969834, x |= (tmp = -2968063574.793867, tmp)); - assertEquals(0, x %= (x>>>(tmp = 1350490461.0012388, tmp))); - assertEquals(0, x &= ((-2620439260.902854)+x)); - assertEquals(-1775533561, x |= ((-1775533561)|(((x>>>((861896808.2264911)>>>(970216466.6532537)))%x)%(tmp = 2007357223.8893046, tmp)))); - assertEquals(-1775533561, x &= x); - assertEquals(-23058877.415584415, x /= ((tmp = -3002439857, tmp)>>((((x-(tmp = 1583620685.137125, tmp))|x)%(-2568798248.6863875))^x))); - assertEquals(-577.4155844151974, x %= (((-1440361053.047877)+((tmp = 821546785.0910633, tmp)-(((tmp = 1023830881.1444875, tmp)/(-754884477))+(tmp = 651938896.6258571, tmp))))>>(tmp = 346467413.8959185, tmp))); - assertEquals(-1, x >>= (tmp = 2993867511, tmp)); - assertEquals(-1, x |= (tmp = 823150253.4916545, tmp)); - assertEquals(-0, x %= x); - assertEquals(-0, x /= ((tmp = 997969036, tmp)&((((tmp = 928480121, tmp)>>(((-2610875857.086055)>>>(tmp = -2251704283, tmp))|x))+(10781750))>>x))); - assertEquals(0, x >>>= ((tmp = -1872319523, tmp)>>>(-278173884))); - assertEquals(0, x |= (x/(x*x))); - assertEquals(0, x %= ((77912826.10575807)^(tmp = 2770214585.3019757, tmp))); - assertEquals(0, x &= (tmp = 722275824, tmp)); - assertEquals(-1417226266, x |= (tmp = 2877741030.1195555, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x %= (tmp = -1740126105, tmp)); - assertEquals(910709964, x |= (tmp = 910709964, tmp)); - assertEquals(-1744830464, x <<= (tmp = -2445932551.1762686, tmp)); - assertEquals(318767104, x >>>= (tmp = -2465332061.628887, tmp)); - assertEquals(301989888, x &= (-2771167302.022801)); - assertEquals(301989888, x |= x); - assertEquals(37748736, x >>= (tmp = -835820125, tmp)); - assertEquals(1474977371, x ^= (tmp = -2857738661.6610327, tmp)); - assertEquals(470467500, x += (-1004509871)); - assertEquals(0.30466562575942585, x /= (((tmp = 1515955042, tmp)<<(x+((1607647367)-(tmp = 1427642709.697169, tmp))))^x)); - assertEquals(1.0348231148499734e-10, x /= (tmp = 2944132397, tmp)); - assertEquals(0, x >>= (x>>>(tmp = -2847037519.569043, tmp))); - assertEquals(NaN, x /= x); - assertEquals(0, x >>>= (-1817784819.9058492)); - assertEquals(0, x >>= x); - assertEquals(-0, x *= ((tmp = -1387748473, tmp)|(x+(352432111)))); - assertEquals(-0, x *= (((-2591789329)/(tmp = -2144460203, tmp))>>(tmp = -568837912.5033123, tmp))); - assertEquals(0, x <<= (-2963600437.305708)); - assertEquals(0, x &= ((588720662)>>>x)); - assertEquals(1561910729, x += (1561910729)); - assertEquals(0, x ^= x); - assertEquals(-0, x *= (-2722445702)); - assertEquals(0, x &= (tmp = -2738643199.732308, tmp)); - assertEquals(0, x /= (((1859901899.227291)>>>((tmp = -1067365693, tmp)+((-1975435278)|x)))|((1844023313.3719304)&(tmp = -624215417.0227654, tmp)))); - assertEquals(NaN, x %= x); - assertEquals(NaN, x %= (-2852766277)); - assertEquals(0, x <<= (-1482859558)); - assertEquals(0, x >>= x); - assertEquals(-1196775786, x += (tmp = -1196775786, tmp)); - assertEquals(-68176201, x |= ((tmp = 2336517643, tmp)+x)); - assertEquals(0, x ^= x); - assertEquals(0, x <<= x); - assertEquals(0, x >>= (2969141362.868086)); - assertEquals(NaN, x %= x); - assertEquals(0, x >>= ((x-((((tmp = -905994835, tmp)|(tmp = 2850569869.33876, tmp))<<((-2405056608.27147)>>(tmp = 1280271785, tmp)))&(-1942926558)))*(tmp = 707499803.177796, tmp))); - assertEquals(0, x &= ((-697565829.8780258)+((2978584888.549406)%x))); - assertEquals(0, x >>= (748642824.4181392)); - assertEquals(0, x += x); - assertEquals(0, x >>>= (-1701028721)); - assertEquals(92042539, x -= ((-92042539)|(x*(x%(-293705541.00228095))))); - assertEquals(0, x %= x); - assertEquals(0, x >>= x); - assertEquals(0, x %= (-2278672472.458228)); - assertEquals(0, x %= (((-2374117528.0359464)/((tmp = -2809986062, tmp)|(tmp = 895734980, tmp)))&(tmp = 1564711307.41494, tmp))); - assertEquals(0, x >>>= x); - assertEquals(0, x += x); - assertEquals(-0, x /= ((tmp = -2749286790.3666043, tmp)<<(x^(-2966741582.324482)))); - assertEquals(0, x *= x); - assertEquals(0, x >>>= x); - assertEquals(-1882562314, x ^= (2412404982.782115)); - assertEquals(-806620, x %= (((tmp = 1527219936.5232096, tmp)*(-1139841417))>>>(tmp = 201632907.3236668, tmp))); - assertEquals(-1613240, x += x); - assertEquals(-1664766177387640, x *= (1031939561)); - assertEquals(-9.478083550117849e+23, x *= (tmp = 569334221.1571662, tmp)); - assertEquals(-8.462574598319509e+21, x /= ((x-(tmp = -2985531211.114498, tmp))>>(tmp = 174615992.91117632, tmp))); - assertEquals(1638924288, x <<= (((((x>>((-1823401733.4788911)+((tmp = 1362371590, tmp)>>>x)))^(tmp = -56634380, tmp))/(tmp = 2387980757.1540084, tmp))%((((tmp = -3175469977, tmp)^(tmp = -1816794042, tmp))+(232726694))*(tmp = 822706176, tmp)))/(tmp = 1466729893.836311, tmp))); - assertEquals(2686072821796307000, x *= x); - assertEquals(-1007977445.9812208, x /= (-2664814408.800125)); - assertEquals(-1007977445, x &= x); - assertEquals(322314656346249100, x *= (tmp = -319763758.54942775, tmp)); - assertEquals(197436885.26815608, x /= (tmp = 1632494637, tmp)); - assertEquals(-67191339, x |= ((-399580815.1746769)/((1335558363)/(tmp = 224694526, tmp)))); - assertEquals(1229588737, x &= (tmp = 1296763683.5732255, tmp)); - assertEquals(1229588737, x -= ((((1171546503)|((tmp = -2701891308, tmp)%(-2155432197.022206)))/(-306122816.85682726))>>x)); - assertEquals(4162606632, x -= (tmp = -2933017895, tmp)); - assertEquals(1.6487311395551163, x /= (2524733434.1748486)); - assertEquals(-1929308648.9913044, x += (-1929308650.6400356)); - assertEquals(-3858617297.982609, x += x); - assertEquals(788529152, x <<= (x^(1401824663))); - assertEquals(6160384, x >>>= ((((((x>>>x)>>((((x*(tmp = -1958877151, tmp))>>>(1310891043))-(tmp = 564909413.9962088, tmp))%(-175978438)))%x)|((tmp = -1193552419.7837512, tmp)*(tmp = 1508330424.9068346, tmp)))|(1428324616.3303494))-((1828673751)/(tmp = 1281364779, tmp)))); - assertEquals(6160384, x |= x); - assertEquals(1, x /= x); - assertEquals(1, x &= (tmp = -855689741, tmp)); - assertEquals(0, x >>>= x); - assertEquals(-1088569655.3528988, x -= (tmp = 1088569655.3528988, tmp)); - assertEquals(-1088569655, x >>= ((tmp = 2429646226.626727, tmp)<<((-1539293782.4487276)>>(x^((tmp = 1140855945.537702, tmp)+x))))); - assertEquals(-311, x %= ((x/x)<>= (615837464.0921166)); - assertEquals(0, x >>>= (tmp = -2993750670.683118, tmp)); - assertEquals(0, x >>>= (x%x)); - assertEquals(1610612736, x ^= ((-1322905256.6770213)<<(-2567950598))); - assertEquals(1693676493, x ^= (83063757.63660407)); - assertEquals(-758030371, x ^= (tmp = -1239274480, tmp)); - assertEquals(-758030371, x %= (tmp = 1961339006, tmp)); - assertEquals(-1509754528, x ^= (tmp = 1960027837, tmp)); - assertEquals(-1509754528, x <<= x); - assertEquals(-1509754528, x -= (((tmp = -50690205.33559728, tmp)/((tmp = -1364565380, tmp)<<(tmp = 2585052504, tmp)))<<(tmp = -2356889596, tmp))); - assertEquals(1, x >>>= (-3204164321)); - assertEquals(1, x *= x); - assertEquals(1114370230.591965, x *= ((tmp = 1114370229.591965, tmp)+x)); - assertEquals(-4.886305275432552, x /= ((-228059887.33344483)%(2841553631.3685856))); - assertEquals(2.358309397373389e-9, x /= (((x*(tmp = 203428818.08174622, tmp))&(x-(((510438355)*x)+x)))+x)); - assertEquals(0, x >>>= ((tmp = 1444810010, tmp)&(tmp = -3135701995.2235208, tmp))); - assertEquals(0, x /= (1865982928.6819582)); - assertEquals(0, x *= x); - assertEquals(2078726016.3772051, x -= (tmp = -2078726016.3772051, tmp)); - assertEquals(1580337898, x ^= ((tmp = -2714629398.447015, tmp)^x)); - assertEquals(1268363034, x -= ((x+((tmp = 1144068248.3834887, tmp)&(-954104940.155973)))<<(tmp = 1270573731.7828264, tmp))); - assertEquals(1744830464, x <<= (((1444869551.7830744)>>>((((x+(tmp = -904688528, tmp))<>= ((-3191405201.168252)*((tmp = -1941299639.695196, tmp)|(((x>>(((3215741220)>>>x)/(x+x)))^(((tmp = -2144862025.9842231, tmp)|((tmp = -1966913385, tmp)&x))%x))*((tmp = -1124749626.6112225, tmp)/(tmp = 837842574, tmp)))))); - assertEquals(402653184, x &= ((x|x)>>x)); - assertEquals(134217728, x &= ((2720231644.3849487)*x)); - assertEquals(134217726.75839183, x -= ((2438054684.738043)/(((((-984359711)*(x|((tmp = 177559682, tmp)^x)))/(-1253443505))/((2727868438.416792)*(x+((x<<(((tmp = 3023774345, tmp)&(-705699616.0846889))/x))<>x)%(-1556081693))|(x/(((1166243186.6325684)-(((tmp = 2870118257.1019487, tmp)/(x+(-69909960)))^(2270610694.671496)))/((1463187204.5849519)-x))))-x)-(x<<(-3077313003)))%x)); - assertEquals(-1065725846, x &= ((tmp = -1808223767, tmp)|(-481628214.3871765))); - assertEquals(-1065725846, x ^= (x&(((tmp = -1785170598, tmp)-(tmp = -2525350446.346484, tmp))/((((((-1783948056)^(tmp = 3027265884.41588, tmp))|((((tmp = 2195362566.2237773, tmp)<<(-2919444619))<<((tmp = -2507253075.2897573, tmp)^(x^((tmp = 1067516137, tmp)+((667737752)^(x*(tmp = -1187604212.7293758, tmp)))))))%(-617406719.5140038)))*(tmp = 511060465.6632478, tmp))*((tmp = 2580189800.752836, tmp)|((((tmp = 2357895660, tmp)%((-814381220)*(x-((x>>>(((x<>>((-2756011312.136148)>>(tmp = -1603458856, tmp))))))/((tmp = -1609199312, tmp)&(-3127643445)))%x)))<<(-2261731798))))); - assertEquals(1.6020307924030301, x /= (tmp = -665234308.2628405, tmp)); - assertEquals(-1120020556.697667, x *= (tmp = -699125486.2321637, tmp)); - assertEquals(-215875188, x -= (((((tmp = -1307845034, tmp)>>>((((-2820720421)^x)-(((x<>(x<>>((-344896580.0694165)>>>((-13450558)+x)))^x)))); - assertEquals(1, x /= x); - assertEquals(0, x >>>= (2355750790)); - assertEquals(1969435421.4409347, x += (1969435421.4409347)); - assertEquals(0, x -= x); - assertEquals(0, x >>>= (((x*((-1022802960.6953495)<<(tmp = -2848428731.8339424, tmp)))^(-1630921485))%(1532937011))); - assertEquals(0, x <<= ((x+((x^(x^(tmp = 2017651860, tmp)))&(((x<<(((tmp = -1913317290.8189478, tmp)|(x-((((x%((tmp = -3035245210, tmp)+(-2270863807)))>>>((-2351852712)*(x^(-2422943296.0239563))))&((((-1578312517)%x)*x)*(-65592270.28452802)))>>>(tmp = 1104329727.2094703, tmp))))-(tmp = -1431159990.3340137, tmp)))&x)|((tmp = -2589292678.801344, tmp)&(x+((((tmp = -2557773457.456996, tmp)>>(451910805.309445))-x)>>(((tmp = -1937832765.7654495, tmp)^x)%x)))))))%x)); - assertEquals(0, x %= (tmp = -626944459, tmp)); - assertEquals(-732310021, x |= (tmp = -732310021, tmp)); - assertEquals(-732310021, x |= x); - assertEquals(671352839, x ^= (x-((-3087309090.7153115)|x))); - assertEquals(134479872, x &= (tmp = 2357183984, tmp)); - assertEquals(18084835973136384, x *= x); - assertEquals(0, x <<= ((1040482277)-(tmp = -357113781.82650447, tmp))); - assertEquals(74957, x |= ((((tmp = -70789345.7489841, tmp)%(tmp = 1415750131, tmp))&x)|((307027314)>>(2284275468)))); - assertEquals(9, x >>>= x); - assertEquals(0, x &= (x&((x*((x*(x%x))%(x>>x)))/x))); - assertEquals(-1872875060, x |= (2422092236.6850452)); - assertEquals(9, x >>>= (-382763684)); - assertEquals(4608, x <<= x); - assertEquals(40.480234260614935, x /= (((((((tmp = 814638767.5666755, tmp)&((tmp = 2081507162, tmp)^(x>>>(1460148331.2229118))))&(tmp = 1187669197.7318723, tmp))<<(412000677.93339765))^((tmp = 556111951, tmp)>>(tmp = -2232569601.292395, tmp)))&(-3006386864))/x)); - assertEquals(32, x &= (-3053435209.383913)); - assertEquals(418357217, x ^= (418357185)); - assertEquals(204275, x >>= ((-1188650337.9010527)^((51494580)%(-2544545273)))); - assertEquals(982392804, x += (((x+(((tmp = -982596937.9757051, tmp)+x)%(-2298479347)))^((((tmp = 1610297674.0732534, tmp)>>>x)*(((x>>(-2746780903.08599))&(-2376190704.247188))^(((20545353)/(tmp = 1468302977, tmp))-(x<>(((-1434332028.0447056)/((tmp = 1983686888, tmp)&((tmp = 2324500847, tmp)%(394330230.6163173))))%(((-1129687479.2158055)+((-3127595161)*((-3066570223)&((tmp = 3192134577.4963055, tmp)/(-2697915283.3233275)))))+(-1112243977.5306559)))))|(x&(-2622725228)))); - assertEquals(-2735750653096133600, x *= (-2784782870.9218984)); - assertEquals(-1876329472, x |= ((((((2752866171)<<(-1681590319))/x)>>((tmp = 1451415208, tmp)>>>(1126858636.6634417)))+(((tmp = 2165569430.4844217, tmp)/x)^(((tmp = -1675421843.4364457, tmp)-(-2187743422.2866993))|x)))*x)); - assertEquals(3520612287495799000, x *= x); - assertEquals(-200278016, x |= ((((-2379590931)%((((-1558827450.833285)&x)>>(-665140792))-((tmp = -445783631.05567217, tmp)+(tmp = 93938389.53113222, tmp))))/(3103476273.734701))^x)); - assertEquals(-9178285062592.75, x *= ((2042671875.7211144)%(((tmp = 589269308.0452716, tmp)/x)<<(-130695915.9934752)))); - assertEquals(60048960, x |= (x<>>((((969371919)>>((tmp = -3153268403.2565875, tmp)-((((573811084)/x)^(tmp = -968372697.4844134, tmp))>>>(((-3096129189)>>x)/(tmp = 830228804.6249363, tmp)))))<<(((1243972633.3592157)|x)&((-1687610429)&(tmp = -1945063977.458529, tmp))))<<(((tmp = -217456781.37068868, tmp)-(400259171.68077815))^x)))>>>x))%(((2728450651.300167)/(((-2713666705.089135)%(tmp = 740472459, tmp))^x))|x))^x)*(-2463032364))); - assertEquals(60048960, x %= (tmp = -442107222.9513445, tmp)); - assertEquals(-1573781504, x <<= (960581227)); - assertEquals(1297, x >>>= (tmp = -1692919563, tmp)); - assertEquals(1297, x &= x); - assertEquals(-3113308397155.233, x *= (tmp = -2400391979.3024154, tmp)); - assertEquals(-3115513013486.233, x -= (2204616331)); - assertEquals(-3113809649082.233, x -= (-1703364404)); - assertEquals(0, x >>>= (((-1181206665)-(550946816.586771))|(tmp = -2346300456, tmp))); - assertEquals(0, x %= (tmp = 1649529739.2785435, tmp)); - assertEquals(0, x ^= ((tmp = -2452761827.2870226, tmp)%(((1090281070.5550141)/(tmp = 992149154.6500508, tmp))*(x<<((((((x>>>x)|((tmp = -2410892363, tmp)%(tmp = 2585150431.0231533, tmp)))/x)*(tmp = 1541294271, tmp))+x)&((97566561.77126992)&((((-640933510.1287451)&(((((x>>>((-1821077041)<<((tmp = -1138504062.093695, tmp)-(tmp = -181292160, tmp))))%x)-(x>>((x&(((tmp = 1067551355, tmp)/(x|(1004837864.8550552)))&(x-(-103229639.25084043))))&((tmp = 2064184671.210937, tmp)+((((tmp = -2245728052, tmp)|(1538407002.8365717))+(x<<((x>>((76549490)/(tmp = 628901902.6084052, tmp)))<<((x<>>((((-1911547456.933543)-((-512313175)+((tmp = -2620903017, tmp)^(tmp = 2148757592.244808, tmp))))<<((-1740876865)>>>x))+((tmp = 691314720.9488736, tmp)<<(614057604.4104803))))|(x^((tmp = -3040687.291528702, tmp)/(x^(((x+(-2899641915))^((tmp = -1220211746, tmp)/x))%x))))))^(tmp = 119850608, tmp))%(2091975696)))))))); - assertEquals(291273239, x -= (tmp = -291273239, tmp)); - assertEquals(2206394018, x += (1915120779)); - assertEquals(235641480, x <<= (x&(x&(-1810963865.1415658)))); - assertEquals(28764, x >>= ((tmp = -1927011875, tmp)^((tmp = -1986461808, tmp)|((-868139264.8399222)*((421956566)%(3068424525)))))); - assertEquals(-99780626900900, x *= ((tmp = -1512869526.3223472, tmp)+(tmp = -1956071751, tmp))); - assertEquals(51218520, x &= (((-2353401311)>>>x)-(2216842509))); - assertEquals(51218520, x >>>= ((tmp = -1534539302.6990812, tmp)<>((tmp = 2540545320.96558, tmp)&(tmp = -2343790880, tmp)))>>>((((((x^((-172697043.94487858)/((2627260337)>>(2879112814.1247935))))&(tmp = 3000943191, tmp))<<(tmp = 1094830905, tmp))-x)>>>x)>>((((tmp = 3095796200, tmp)^(x|(tmp = 1460377694, tmp)))<<(x^(tmp = -357546193, tmp)))/((2729539495)>>x))))%(tmp = 268894171.74961245, tmp))|(x>>(tmp = 2735650924, tmp)))/(-2197885357.09768))); - assertEquals(-2147483648, x |= x); - assertEquals(-1967162776824578000, x *= (tmp = 916031551, tmp)); - assertEquals(-2147483648, x &= x); - assertEquals(-457743917756973060, x *= (tmp = 213153622, tmp)); - assertEquals(0, x >>>= ((((tmp = 2930076928.480559, tmp)+(x^x))<<(tmp = -1349755597.1280541, tmp))|(x+(2865632849)))); - assertEquals(0, x <<= ((x>>x)-(x>>(-2629977861)))); - assertEquals(0, x <<= x); - assertEquals(NaN, x /= x); - assertEquals(0, x |= x); - assertEquals(0, x >>>= x); - assertEquals(749327478, x |= ((tmp = 749327478, tmp)^(x>>(tmp = 881107862, tmp)))); - assertEquals(1897869364, x += (1148541886)); - assertEquals(463347, x >>>= (tmp = -726431220, tmp)); - assertEquals(-395990542, x += (-396453889)); - assertEquals(-2824792585.1675367, x -= (2428802043.1675367)); - assertEquals(-2147483648, x <<= (tmp = -1420072385.9175675, tmp)); - assertEquals(8388608, x >>>= (-2211390680.488455)); - assertEquals(8388608, x >>= (((x/(x|(((x^(((tmp = -2175960170.8055067, tmp)|((tmp = -1964957385.9669886, tmp)/(tmp = -475033330, tmp)))&((x|((tmp = 1386597019.2014387, tmp)>>((tmp = -2406589229.8801174, tmp)+x)))<<(tmp = -844032843.8415492, tmp))))>>(x^x))|x)))-((x&((tmp = 1858138856, tmp)*(-3156357504)))%x))<<(((2046448340)+x)/(-2645926916)))); - assertEquals(8359470765396279, x *= ((tmp = 871437183.7888144, tmp)-(-125089387.17460155))); - assertEquals(0, x ^= x); - assertEquals(-303039014, x += ((tmp = -2475713214, tmp)|(-372871718.2343409))); - assertEquals(2655126577, x -= (-2958165591)); - assertEquals(1830332793, x ^= (tmp = -212161208, tmp)); - assertEquals(1830332793, x ^= (((2352454407.0126333)<<((((tmp = 3083552367, tmp)/x)-(-1243111279))-((tmp = -1669093976, tmp)%(((-757485455)-(tmp = -116051602, tmp))<>(((((-2235071915.9536905)>>(tmp = -1284656185, tmp))-x)>>((-1807028069.7202528)>>>((x%((tmp = -3070857953.311804, tmp)+((tmp = 2759633693.441942, tmp)%((169489938)*(-1582267384)))))<<(x^((tmp = -787578860, tmp)<>((x/(x|(409464362)))-(tmp = -64033017, tmp))))); - assertEquals(397605933.90319204, x %= (tmp = 716363429.548404, tmp)); - assertEquals(186400, x &= (((x%(-1745754586))>>>x)<<(x&(x&((-2163627752)-((1784050895)+(((-2864781121.899456)>>>x)&x))))))); - assertEquals(186400, x %= (tmp = -423209729, tmp)); - assertEquals(186400, x <<= ((x<<(x+(1232575114.4447284)))*x)); - assertEquals(1386299, x ^= ((tmp = -1074209615, tmp)>>>(x>>>((tmp = -1456741008.2654872, tmp)>>((1724761067)>>(-2016103779.9084842)))))); - assertEquals(347302967.20758367, x -= (-345916668.20758367)); - assertEquals(1.9325619389304094, x /= (179711170.03359854)); - assertEquals(-3703324711.628227, x *= (tmp = -1916277371, tmp)); - assertEquals(-920980517031624800, x *= (tmp = 248690187.53332615, tmp)); - assertEquals(0, x &= (((tmp = -2753945953.082594, tmp)*x)-(172907186))); - assertEquals(-0, x /= (((((-2744323543.187253)>>((tmp = 2663112845, tmp)>>(((-121791600)+(x^x))*(2758944252.4214177))))|x)/(tmp = -2746716631.6805267, tmp))-x)); - assertEquals(0, x ^= ((tmp = 983113117, tmp)&((2638307333)+((((tmp = 3076361304.56189, tmp)<<(-2663410588.5895214))%((-1109962112)-(tmp = -2381021732, tmp)))%((tmp = 410559095, tmp)&x))))); - assertEquals(0, x <<= (tmp = 1510895336.5111506, tmp)); - assertEquals(0, x <<= (tmp = -1688348296.2730422, tmp)); - assertEquals(2269471424, x -= (-2269471424)); - assertEquals(-2022580224, x ^= (x%((tmp = 160999480.21415842, tmp)&x))); - assertEquals(-2077171712, x &= (tmp = 3032415014.3817654, tmp)); - assertEquals(270727, x >>>= (2973489165.1553965)); - assertEquals(270727, x |= x); - assertEquals(-1895894537, x |= ((tmp = -1895903118.129186, tmp)|x)); - assertEquals(-1895894537, x -= ((((((((3143124509)>>>(-2866190144.8724117))*((x>>((961021882)*(tmp = 2363055833.8634424, tmp)))/((2032785518)+((2713643671.3420825)>>((-447782997.0173557)*((tmp = 1174918125.3178625, tmp)*((((tmp = -541539365.548115, tmp)%(-359633101))|(1765169562.2880063))+(tmp = -2512371966.374508, tmp))))))))/x)>>(x*((((-847238927.6399388)&(857288850))%(-2427015402))^((2221426567)%(x+x)))))>>>x)<<((tmp = 2009453564.2808268, tmp)>>((2924411494)<<(x>>(tmp = -1240031020.8711805, tmp)))))%(tmp = 3118159353, tmp))); - assertEquals(0, x ^= x); - assertEquals(0, x %= (-30151583)); - assertEquals(-1035186736, x ^= ((tmp = -517593368, tmp)<<(tmp = 3216155585, tmp))); - assertEquals(49740, x >>>= x); - assertEquals(49740, x %= (640223506)); - assertEquals(388, x >>>= ((x>>(tmp = 3161620923.50496, tmp))+(2605183207))); - assertEquals(776, x += x); - assertEquals(-97905, x ^= ((((((tmp = 145447047.8783008, tmp)^(((x>>>(tmp = 3014858214.2409887, tmp))>>>(629911626.132971))>>(((x+((369309637.229408)-x))<<(-2661038814.9204755))*(x+(x%(3025191323.4780884))))))+x)*(-482550691))|(-632782135))/x)); - assertEquals(-97905, x %= ((((-492914681)-((-2508632959.269368)&(tmp = 1209318291, tmp)))>>(-723512989.459533))>>>(((-528429623.985692)&(x^(tmp = -925044503, tmp)))-(-1696531234)))); - assertEquals(9585389025, x *= x); - assertEquals(-715425728, x <<= ((583763091)<<(-1223615295))); - assertEquals(-520093696, x <<= ((tmp = -1891357699.671592, tmp)*(((tmp = 3206095739.5163193, tmp)+(-2908596651.798733))>>>((tmp = -2820415686, tmp)>>(x|((((tmp = -566367675.6250327, tmp)*(-959117054))>>((((-187457085.89686918)*x)*(tmp = -2394776877.5373516, tmp))>>>x))|(((tmp = 80478970.46290505, tmp)<<(tmp = 2173570349.493097, tmp))-(x/((-2896765964)-((x/((tmp = 198741535.7034216, tmp)%(436741457)))%(tmp = 2936044280.0587225, tmp))))))))))); - assertEquals(-2520.5909527086624, x /= ((211290893.06029093)>>(663265322))); - assertEquals(-2520.5909527086624, x %= (x^((1057915688)<<(tmp = 1914820571.1142511, tmp)))); - assertEquals(1, x >>>= (((894963408.7746166)+(tmp = -2888351666, tmp))|x)); - assertEquals(-1989841636629996300, x += ((1424670316.224575)*((-2144149843.0876865)|((((421479301.0983993)|((3082651798)^(tmp = -271906497, tmp)))>>x)+((tmp = -178372083, tmp)%x))))); - assertEquals(17935384255.088326, x /= (((((((tmp = 1168194849.2361898, tmp)>>>(-107316520.53815603))>>>(x^(((x%((x>>>(((-2456622387)/x)&((2124689803)|(((-1130151701)^(2796315158))>>x))))-((-884686033.5491502)>>>((-2371185318.5358763)&x))))+(tmp = 558422989, tmp))|((tmp = -420359120.0596726, tmp)/((-1820568437.0587764)&(2298602280.266465))))))>>(x-((tmp = -1164568978, tmp)^x)))^x)-x)+x)); - assertEquals(134233150, x &= ((x>>(((tmp = 98498118.13041973, tmp)-(804574397))/(tmp = -1564490985.7904541, tmp)))+x)); - assertEquals(4, x >>= (449610809)); - assertEquals(1912543790, x |= (1912543790)); - assertEquals(2487274263, x += (tmp = 574730473, tmp)); - assertEquals(-2140759118, x ^= (tmp = 338055333.9701035, tmp)); - assertEquals(311607367, x += (2452366485)); - assertEquals(9509, x >>= (372113647.84365284)); - assertEquals(-2001075684.1562128, x += (-2001085193.1562128)); - assertEquals(-638703280, x ^= (((tmp = 1096152237, tmp)&x)|((2707404245.0966487)-(((tmp = 1550233654.9691348, tmp)+(tmp = 2008619647, tmp))&((tmp = -2653266325, tmp)+(tmp = -280936332, tmp)))))); - assertEquals(-101811850, x |= (-2250090202)); - assertEquals(-13, x >>= ((-561312810.0218933)|(tmp = 79838949.86521482, tmp))); - assertEquals(-13, x >>= ((tmp = -936543584, tmp)/(1180727664.1746705))); - assertEquals(-1547, x *= (((tmp = 1005197689, tmp)>>>x)>>>(tmp = 34607588, tmp))); - assertEquals(2393209, x *= x); - assertEquals(2393209, x |= x); - assertEquals(0, x >>= (-2691279235.1215696)); - assertEquals(0, x *= (((896175510.4920144)*((((tmp = 1770236555.7788959, tmp)%(537168585.7310632))/x)&(tmp = 1094337576, tmp)))&(((x-x)-x)>>x))); - assertEquals(-1922620126, x ^= (-1922620126)); - assertEquals(3.43481396325761, x /= (tmp = -559745053.6088333, tmp)); - assertEquals(0, x >>= x); - assertEquals(0, x >>>= (tmp = 2106956255.6602135, tmp)); - assertEquals(-1339003770, x ^= ((tmp = 2955963526.960022, tmp)+x)); - assertEquals(-0, x *= ((((tmp = 368669994, tmp)>>>(x*x))<<(tmp = 2355889375, tmp))&(tmp = -2267550563.9174895, tmp))); - assertEquals(0, x >>= (753848520.8946902)); - assertEquals(0, x >>>= x); - assertEquals(0, x %= ((tmp = -2872753234.2257266, tmp)|x)); - assertEquals(NaN, x %= (x>>>(tmp = 890474186.0898918, tmp))); - assertEquals(NaN, x %= ((tmp = 1341133992.284471, tmp)&(tmp = -2979219283.794898, tmp))); - assertEquals(NaN, x += (-2865467651.1743298)); - assertEquals(NaN, x += ((-1424445677)%(x^(tmp = 1150366884, tmp)))); - assertEquals(0, x &= (x+((tmp = 1499426534, tmp)+x))); - assertEquals(0, x |= (((((tmp = -2413914642, tmp)<<((x>>>x)^(1218748804)))+((((-1085643932.2642736)-(-1199134221.533854))>>(tmp = 2148778719, tmp))-((tmp = 1589158782.0040946, tmp)/(tmp = -2485474016.1575155, tmp))))>>>(x>>x))/(2230919719))); - assertEquals(0, x %= ((tmp = -2576387170.517563, tmp)>>>((tmp = -2362334915.919525, tmp)>>>(((3096453582)-(700067891.4834484))^(2396394772.9253683))))); - assertEquals(-1798103432, x ^= (((((tmp = 2396144191, tmp)*(x>>>(1512158325)))&(((-1256228298.5444434)&(((-2963136043.434966)&((tmp = 2472984854, tmp)+(tmp = -454900927, tmp)))%(tmp = 484255852.65332687, tmp)))>>((x%x)-x)))&(tmp = 929723984, tmp))^(tmp = -1798103432.5838807, tmp))); - assertEquals(-2137913344, x &= ((((x|(-2970116473))&(((x/x)/((tmp = 2853070005, tmp)>>>x))%(((tmp = -3123344846, tmp)/((2224296621.6742916)-(tmp = -2246403296.455411, tmp)))+((x&(((x^(x*(2829687641)))+x)&(tmp = 988992521, tmp)))^x))))<<((((-820608336)^(tmp = 2851897085, tmp))>>(tmp = -402427624, tmp))>>>x))-(((x*(((-2287402266.4821453)%(tmp = -520664172.1831205, tmp))^(x/(1875488837))))<<(tmp = 402393637, tmp))&(tmp = 1576638746.3047547, tmp)))); - assertEquals(-2827557853031924000, x *= (tmp = 1322578326.6507945, tmp)); - assertEquals(6.424459501778244e+27, x *= (tmp = -2272087729.3065624, tmp)); - assertEquals(-1586887483, x |= (-1586887483)); - assertEquals(-567868980691736100, x *= (tmp = 357850816, tmp)); - assertEquals(1489101591, x ^= (x%(x|(421921075)))); - assertEquals(-801213804822328000, x *= (x|(-672326904.6888077))); - assertEquals(612257233.6612054, x /= (((tmp = -350127617, tmp)>>>(-1140467595.9752212))<<((x^x)+(-3117914887)))); - assertEquals(19097.231243331422, x /= ((x^(tmp = -570012517, tmp))>>>x)); - assertEquals(0, x >>= ((x%(((-2347648358)%((x-(tmp = -456496327, tmp))|(x^(-1977407615.4582832))))<<(x/(tmp = -2021394626.214082, tmp))))%(tmp = -949323000.2442119, tmp))); - assertEquals(0, x <<= x); - assertEquals(NaN, x %= (x^(x>>(((tmp = 597147546.7701412, tmp)&(((((-972400689.6267757)|(tmp = -2390675341.6367044, tmp))|(tmp = 1890069123.9831812, tmp))<<(((1606974563)-(tmp = -2211617255.8450356, tmp))&((((x+((2433096953)&(-2527357746.681596)))*(tmp = -313956807.55609417, tmp))|((tmp = -2146031047.968496, tmp)/(tmp = 2851650714.68952, tmp)))>>(((tmp = 2630692376.6265225, tmp)-(tmp = -3162222598, tmp))>>((tmp = 1915552466, tmp)*(x>>>(-2413248225.7536864)))))))&(x%((((1218471556)|x)+(tmp = -849693122.6355379, tmp))+x))))>>>(x/((tmp = 689889363, tmp)/x)))))); - assertEquals(0, x >>>= (45649573.23297)); - assertEquals(0, x >>>= (tmp = 1084439432.771266, tmp)); - assertEquals(NaN, x /= x); - assertEquals(NaN, x *= (tmp = 1642750077, tmp)); - assertEquals(0, x >>>= (tmp = -1944001182.0778434, tmp)); - assertEquals(1682573000, x |= (tmp = -2612394296.2858696, tmp)); - assertEquals(3041823595, x -= (((tmp = 720576773, tmp)|(x^(-1068335724.2253149)))>>(x*(-2501017061)))); - assertEquals(6083647190, x += x); - assertEquals(-6536258988089986000, x *= ((tmp = 632312939.6147232, tmp)|((-1621821634)+(((tmp = -2281369913.562131, tmp)&((tmp = -381226774, tmp)|x))&(664399051))))); - assertEquals(4.272268155938712e+37, x *= x); - assertEquals(733271152, x %= (-1345127171)); - assertEquals(847089925, x ^= (tmp = 432620917.57699084, tmp)); - assertEquals(1337073824, x <<= x); - assertEquals(-25810602, x ^= (tmp = 2982414838, tmp)); - assertEquals(-25282209, x |= ((tmp = -2927596922, tmp)>>>(-2404046645.01413))); - assertEquals(639190091919681, x *= x); - assertEquals(173568320, x &= ((((tmp = -718515534.4119437, tmp)&(tmp = 2989263401, tmp))<>>= (tmp = -1844717424.917882, tmp)); - assertEquals(0, x >>= (tmp = -462881544.2225325, tmp)); - assertEquals(0, x >>= x); - assertEquals(-1868450038, x ^= (2426517258.6111603)); - assertEquals(1, x /= x); - assertEquals(1175936039.4202638, x += (tmp = 1175936038.4202638, tmp)); - assertEquals(-127916015, x ^= ((x/(1841969600.3012052))-(tmp = 1099467723, tmp))); - assertEquals(395713785658171900, x *= (-3093543726)); - assertEquals(395713787128560900, x += (((((-717204758)*(tmp = -588182129.6898501, tmp))-x)+(tmp = 20638023, tmp))^x)); - assertEquals(-962609355, x |= ((x^(-3118556619.912983))<<((tmp = 876126864, tmp)&x))); - assertEquals(-962609355, x %= (tmp = -2079049990, tmp)); -} -f(); diff --git a/implementation-contributed/v8/mjsunit/numops-fuzz-part2.js b/implementation-contributed/v8/mjsunit/numops-fuzz-part2.js deleted file mode 100644 index 51260a44921..00000000000 --- a/implementation-contributed/v8/mjsunit/numops-fuzz-part2.js +++ /dev/null @@ -1,1178 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - var x = -962609355; - var tmp = 0; - assertEquals(-114583755, x -= (((-2806715240)&(((1961136061.0329285)>>>((2087162059)*x))+((tmp = -1890084022.7631018, tmp)%(tmp = 2137514142.358262, tmp))))+(x<<(tmp = 2991240918, tmp)))); - assertEquals(-425721856, x <<= x); - assertEquals(3778560, x >>>= ((x|(3198503572))>>(1158434541.1099558))); - assertEquals(3778560, x %= (tmp = -2592585378.9592104, tmp)); - assertEquals(624640, x &= (tmp = 2261638192.9864054, tmp)); - assertEquals(1249280, x += x); - assertEquals(1048576, x &= ((tmp = -2144301819.9892588, tmp)^((x-x)<>= ((-469330345.3589895)%((x^(((2554170843.4978285)/(2495676674.815263))>>>x))*(-918892963)))); - assertEquals(-134217728, x <<= (x|(((((1687450853.1321645)+(tmp = 2369533014.5803776, tmp))+(tmp = -2613779445, tmp))+(tmp = -2488826226.3733397, tmp))>>(tmp = -220646936.41245174, tmp)))); - assertEquals(704164545131708400, x *= ((-2632786741)+(-2613647956))); - assertEquals(9216, x >>>= (-1925405359.657349)); - assertEquals(4491403261551.008, x *= (tmp = 487348444.1787118, tmp)); - assertEquals(4490606381829.008, x -= (tmp = 796879722, tmp)); - assertEquals(-60294056, x >>= x); - assertEquals(-3193966580.494005, x += (tmp = -3133672524.494005, tmp)); - assertEquals(550500358, x >>>= ((tmp = -2779637628.390116, tmp)-((tmp = 29230786.984039664, tmp)%(tmp = -310649504.7704866, tmp)))); - assertEquals(68812544, x >>= (-1347584797)); - assertEquals(1.2120221595741834e-11, x /= ((2791020260)*((((1964870148.6358237)^x)|(-3082869417))-((x^x)&((1234292117.8790703)<<(-1792461937.2469518)))))); - assertEquals(1.2120221595741834e-11, x %= (x-(2780439348))); - assertEquals(-1421552183, x |= (tmp = -1421552183.5930738, tmp)); - assertEquals(-1420954119, x |= ((((-2547788562.5735893)<>(x|x))); - assertEquals(1, x /= x); - assertEquals(1, x >>= (x>>>(((2975715011.501709)-(tmp = -1473273552.981069, tmp))/(1654883913.042487)))); - assertEquals(-65382, x ^= ((x/((tmp = -2780026200, tmp)<>(-1716245874)))); - assertEquals(1530921106, x &= (1530940914)); - assertEquals(1, x /= x); - assertEquals(0, x >>= x); - assertEquals(0, x /= (tmp = 773741434.1972584, tmp)); - assertEquals(0, x |= x); - assertEquals(0, x <<= (-67977514.99888301)); - assertEquals(0, x %= (2496550482.524729)); - assertEquals(-0, x /= (tmp = -515040417, tmp)); - assertEquals(0, x <<= (-1673460935.2858837)); - assertEquals(-2638209488, x += (-2638209488)); - assertEquals(-2400951839498683400, x *= (910068685)); - assertEquals(1600582036, x ^= (((-1247602308.4812562)>>(((-2393714444.179732)>>>x)%(-778140635.7165127)))+(-1933914727.2268424))); - assertEquals(0, x *= ((x-x)>>(-1270234575))); - assertEquals(0, x >>>= (tmp = 3193676327.493656, tmp)); - assertEquals(0, x ^= (x>>>(1148676785.389884))); - assertEquals(0, x >>= (tmp = -2269181763.8663893, tmp)); - assertEquals(0, x >>= (3149450221)); - assertEquals(0, x >>= (1069630750)); - assertEquals(-625009654, x ^= ((-2143499112)%(-759244728.6214335))); - assertEquals(3583943, x >>>= (-2942645558.1204453)); - assertEquals(1791971, x >>= (x/x)); - assertEquals(223996, x >>= x); - assertEquals(6999, x >>= (tmp = -1051883611.9443719, tmp)); - assertEquals(1459617792, x <<= (-1572314984)); - assertEquals(2622356453.269262, x -= (tmp = -1162738661.2692618, tmp)); - assertEquals(5103676461.269262, x += (2481320008)); - assertEquals(823989684.2692623, x %= (x^(((((1048362966)*((tmp = -2423040747.6233954, tmp)>>>x))*((tmp = 2330818588.4081, tmp)>>(tmp = 103312020.98346841, tmp)))+(tmp = 2264492857.144133, tmp))>>>((tmp = 2523442834, tmp)<>>= (tmp = -2018700898.531027, tmp)); - assertEquals(NaN, x /= x); - assertEquals(0, x <<= (tmp = -2489442223, tmp)); - assertEquals(0, x >>= ((3045836220)>>>x)); - assertEquals(-1156905149, x ^= (3138062147)); - assertEquals(-0, x %= x); - assertEquals(-3118433907.512866, x -= ((tmp = 1338611238, tmp)-(-1779822669.5128663))); - assertEquals(100679693, x &= (1040565279)); - assertEquals(10136400582574248, x *= x); - assertEquals(0, x %= x); - assertEquals(2400318405, x += (2400318405)); - assertEquals(1.0036190808578471, x /= (((tmp = -2313492253.9889445, tmp)|(x-((tmp = -205459123, tmp)>>x)))+x)); - assertEquals(0, x >>>= (tmp = 882343227.1675215, tmp)); - assertEquals(0, x &= ((tmp = 2307828832.2706165, tmp)^((((((1404388047)<<((807879382)-(-2862921873)))-x)*(tmp = -1897734732, tmp))>>(tmp = 1981888881.2306776, tmp))%x))); - assertEquals(0, x <<= x); - assertEquals(0, x *= (((x*x)*((((2764801384.171454)%(x>>>x))&(384818815))+(x>>(tmp = -1481683516, tmp))))&x)); - assertEquals(0, x >>= (tmp = -2202536436, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x &= (tmp = 15161124, tmp)); - assertEquals(-1586110900, x ^= (-1586110900)); - assertEquals(-1586127952, x -= ((tmp = 560737212, tmp)%((1349529668)>>>(tmp = -1956656528, tmp)))); - assertEquals(-1174945870, x -= ((1178456190)|x)); - assertEquals(1335167624.3422346, x -= (tmp = -2510113494.3422346, tmp)); - assertEquals(1329952126.3422346, x -= (x>>x)); - assertEquals(1, x >>= x); - assertEquals(3, x |= (x<>= (tmp = 2420877826.353099, tmp)); - assertEquals(-477017165, x %= ((tmp = -2919204062.3683634, tmp)-(tmp = -2263328990, tmp))); - assertEquals(-2105539936, x &= ((tmp = -1630795440, tmp)-(x&((933423833)>>(-475069901))))); - assertEquals(-4979480720, x -= (tmp = 2873940784, tmp)); - assertEquals(-4190953472, x -= (x&(tmp = -645918862.9001305, tmp))); - assertEquals(17564091004468855000, x *= x); - assertEquals(-857277134, x |= (tmp = 2363948338, tmp)); - assertEquals(1015632515, x -= (-1872909649)); - assertEquals(-1150380043, x ^= (tmp = -2014853770, tmp)); - assertEquals(1607729152, x <<= ((2194449589)+(x|(tmp = -1470075256.4605722, tmp)))); - assertEquals(1608356496, x |= ((((x|(670426524))<<((-2415862218)>>(tmp = 1572561529.9213061, tmp)))^((-1989566800.3681061)|x))&(2170270618.3401785))); - assertEquals(-1836056576, x <<= (tmp = 2906301296.540217, tmp)); - assertEquals(-2952415961567723500, x *= (tmp = 1608020145, tmp)); - assertEquals(1435500544, x <<= x); - assertEquals(700928, x >>>= (tmp = 2924829771.1804566, tmp)); - assertEquals(0, x <<= ((x^(2410009094))|(((-164334714.18698573)%(x*x))|(tmp = 2182431441.2575436, tmp)))); - assertEquals(-143321285, x ^= (tmp = -143321285, tmp)); - assertEquals(-2, x >>= x); - assertEquals(-1, x >>= (x&(1109737404))); - assertEquals(1, x >>>= x); - assertEquals(0, x ^= x); - assertEquals(-2463707358.165766, x += (-2463707358.165766)); - assertEquals(1831259938, x >>= (((((x-(tmp = 1359448920.5452857, tmp))%(tmp = -104541523, tmp))/((3133289055.9780197)*x))>>x)%x)); - assertEquals(1858895646, x ^= ((tmp = 131424376, tmp)>>(tmp = -396761023, tmp))); - assertEquals(1, x >>= x); - assertEquals(-1888369021, x |= ((tmp = -2038869285.046599, tmp)^((tmp = -1318286592.4250565, tmp)-(tmp = 2825123496, tmp)))); - assertEquals(1036458508, x <<= ((tmp = 2722401450, tmp)/((tmp = 1090712291, tmp)>>((tmp = -2155694696.9755683, tmp)*(tmp = 1661107340, tmp))))); - assertEquals(1, x /= (x%((tmp = -1716050484, tmp)+(tmp = -1683833551.797319, tmp)))); - assertEquals(0, x >>= (tmp = -2899315628, tmp)); - assertEquals(0, x |= x); - assertEquals(0, x >>>= x); - assertEquals(0, x <<= x); - assertEquals(1546062911, x |= (1546062911)); - assertEquals(1546195271, x += ((tmp = -3210667091, tmp)>>(tmp = 1323121165, tmp))); - assertEquals(3092390542, x += x); - assertEquals(-1199626354, x |= (406783756)); - assertEquals(-3650317194584908300, x *= (tmp = 3042878461.625484, tmp)); - assertEquals(-7.650495675092354e+27, x *= (2095844078)); - assertEquals(0, x >>= (tmp = 342617880.3384919, tmp)); - assertEquals(22, x ^= (((tmp = 381409558.9104688, tmp)>>((2823172888.974557)>>x))>>x)); - assertEquals(736383550, x += (736383528)); - assertEquals(0, x %= x); - assertEquals(0, x += x); - assertEquals(-1553157831, x -= (1553157831)); - assertEquals(1838556960, x <<= (3158944357.262641)); - assertEquals(5503285699.188747, x *= ((tmp = 2437440276, tmp)/(814308583.8128904))); - assertEquals(5824889900.188747, x -= (((tmp = 1171445694, tmp)-(tmp = -1584666956, tmp))^(tmp = 1217545373, tmp))); - assertEquals(747032, x >>>= (-89332085)); - assertEquals(747032, x |= (x^(x^(x>>>x)))); - assertEquals(747032, x >>>= ((-1558482440)*((tmp = -2413907480, tmp)+(3003996862.384156)))); - assertEquals(7.747761349084291e+23, x += ((tmp = 518064022.64624584, tmp)*((tmp = 2001951702, tmp)*x))); - assertEquals(0, x <<= (2769324707.5640426)); - assertEquals(NaN, x %= (((((((-2458056470.7717686)&x)>>(tmp = -361831232.42602444, tmp))*(2611108609.6727047))>>>x)/(-1713747021.8431413))*(-1143281532))); - assertEquals(NaN, x %= ((x^((-613836813)*(tmp = -3180432597.0601435, tmp)))%x)); - assertEquals(NaN, x /= ((-1607092857)^x)); - assertEquals(0, x &= (-1190719534)); - assertEquals(0, x >>>= x); - assertEquals(0, x += (x>>(642177579.1580218))); - assertEquals(-3129552333, x += (-3129552333)); - assertEquals(1165414963, x &= x); - assertEquals(2222, x >>= (((tmp = 2606317568, tmp)|x)+(tmp = 1844107136, tmp))); - assertEquals(NaN, x %= ((x^x)<<(x/(((tmp = -1362148700, tmp)&((tmp = 76371048, tmp)<>>((x^(-2605741153))>>(((tmp = -2131608159.7634726, tmp)|(((2827792229.8004875)|(((-848439251)+(-2576768890.123433))|((tmp = -2617711776, tmp)-((-199980264)&((tmp = -46967951.76266599, tmp)/(-733253537))))))*(tmp = 1820087608, tmp)))>>>(tmp = -3118359396.4298744, tmp))))))); - assertEquals(NaN, x /= ((2144871731)*x)); - assertEquals(NaN, x *= x); - assertEquals(NaN, x %= (tmp = 234811462.08692443, tmp)); - assertEquals(0, x >>>= ((1121416685)|(x^(((tmp = -2905413334, tmp)<<(tmp = -3091554324.030834, tmp))<>(((tmp = 1976810951, tmp)%x)<<(x*(x>>(x%(3146266192))))))%(tmp = 1756971968.122397, tmp))>>>(-2859440157.8352804))/(-1001406.1919288635))>>>(-1358031926)))); - assertEquals(-0, x *= (tmp = -1756000533, tmp)); - assertEquals(-0, x %= (2522761446.869926)); - assertEquals(0, x >>>= (((1087690535)>>>(2741387979))^x)); - assertEquals(0, x -= x); - assertEquals(0, x >>= (-819422694.2188396)); - assertEquals(0, x ^= x); - assertEquals(NaN, x /= x); - assertEquals(0, x &= (tmp = 86627723, tmp)); - assertEquals(0, x += x); - assertEquals(0, x %= (tmp = -2317915475, tmp)); - assertEquals(Infinity, x += (((-3072799584)^(-2487458319))/(((tmp = -3050692353, tmp)&x)>>(-777977292.8500206)))); - assertEquals(Infinity, x += x); - assertEquals(Infinity, x -= (tmp = 484428269, tmp)); - assertEquals(Infinity, x *= x); - assertEquals(Infinity, x /= (2059586218.2278104)); - assertEquals(Infinity, x *= (tmp = 415918523.8350445, tmp)); - assertEquals(-1800869091, x |= (((-1800869091)>>>(x>>>(tmp = -2832575051, tmp)))>>>x)); - assertEquals(6196126991451132000, x *= ((-1467292383.8458765)+(-1973339154.7911158))); - assertEquals(6196126992684649000, x += (1233517421)); - assertEquals(1, x /= x); - assertEquals(-7153809722216516000, x -= (((-2984550787.146106)<<(tmp = 743743974, tmp))*((3155151275)/((-1771412568.8965073)%x)))); - assertEquals(-7153809721471491000, x -= (-745024056)); - assertEquals(5.117699353102001e+37, x *= x); - assertEquals(0, x >>= x); - assertEquals(-0, x *= ((-2651785447.666973)<<(-1124902998))); - assertEquals(-0, x /= (2119202944)); - assertEquals(1042673805.5205957, x -= ((x<>>= (tmp = 2769597912.977452, tmp)); - assertEquals(34, x &= ((tmp = -61541150, tmp)%(x^(-943160469)))); - assertEquals(34, x ^= ((-2625482224.4605474)<<(-2277806338.3461556))); - assertEquals(536870912, x <<= ((-2373927426.4757633)^x)); - assertEquals(536870912, x &= x); - assertEquals(512, x >>>= ((-1626769708.310139)<<((tmp = 641796314, tmp)/(721629637.3215691)))); - assertEquals(0, x <<= (-113973033)); - assertEquals(NaN, x /= x); - assertEquals(NaN, x += (-1602711788.2390788)); - assertEquals(NaN, x *= (x%x)); - assertEquals(0, x &= (x<<(x|(x>>((x>>>(x%((1182960050)^(((-220896609)-((((tmp = 1518275435.360103, tmp)/(tmp = -88234820, tmp))^x)/x))>>(3169930777.548236)))))-(tmp = -2912668817.662395, tmp)))))); - assertEquals(0, x *= ((2323969408.7524366)/(((tmp = -3089229853, tmp)>>>((((tmp = -1012580544.5631487, tmp)>>(1138049418.9023373))>>x)&x))*(tmp = 626912001, tmp)))); - assertEquals(0, x >>>= x); - assertEquals(NaN, x /= (x%(-868024322))); - assertEquals(NaN, x /= (tmp = -1749532322, tmp)); - assertEquals(1861918711, x |= (-2433048585.853014)); - assertEquals(1861918711, x >>= (((102451747)>>>((((241651917.47259736)/((((((((1759022236)^(tmp = -2592022722, tmp))+((-1748044969)>>>(704597925)))/(-1639604842))%((1349846853.7345295)<<(-729695861)))/(x>>((tmp = -2654474404.7365866, tmp)>>x)))>>>(((-480356478)|(x%((tmp = -1668269244.6979945, tmp)+(tmp = -2441424458.565183, tmp))))^((1634981212.7598324)>>>(tmp = 122455570.22000062, tmp))))<>((tmp = -1568913034, tmp)-((tmp = 911458615, tmp)|x))))>>>(tmp = 2714767933.920696, tmp))))); - assertEquals(0, x ^= x); - assertEquals(-2080484602, x |= (((1544771831.4758213)|x)^(-538113039))); - assertEquals(696451072, x <<= (tmp = -1587032689, tmp)); - assertEquals(-162595645, x += (tmp = -859046717, tmp)); - assertEquals(516546456, x >>>= x); - assertEquals(623083588, x += ((-1371850352)^(tmp = -1469933252, tmp))); - assertEquals(92342412, x %= (tmp = -132685294, tmp)); - assertEquals(500272110, x |= ((tmp = 1616032506, tmp)%((tmp = 1589569590.4269853, tmp)|(-972791738.1829333)))); - assertEquals(3247086, x %= (((tmp = 1372216208, tmp)|(-638950076.3387425))&((-2619249161.849716)&(73957896)))); - assertEquals(0, x >>>= (tmp = -1482343462.6911879, tmp)); - assertEquals(1265125662, x ^= (tmp = -3029841634, tmp)); - assertEquals(4941897, x >>>= (-2039728632)); - assertEquals(206857, x &= (tmp = 226962365.45571184, tmp)); - assertEquals(1.0925018562586405e+24, x += ((tmp = 2687424146, tmp)*(((-1998020319)%x)*(-2080331363)))); - assertEquals(-1.755270751212437e+32, x *= (-160665242)); - assertEquals(0, x <<= (3152796521.6427975)); - assertEquals(0, x ^= ((((((tmp = -855001595, tmp)<<(2007525777))-(x-(x-x)))/(3036585090.9701214))&(1827983388))*((tmp = -915604789.0515733, tmp)&(((((tmp = -806628722.7820358, tmp)%x)/(tmp = -2773117447, tmp))|x)<<(((tmp = -2902300974.7300634, tmp)|x)/(-1608133440)))))); - assertEquals(0, x |= ((((((119024954)*(((x^(tmp = 2939514414, tmp))|x)^(x-(tmp = -1597415597.6795669, tmp))))+(((tmp = -182277816.14547157, tmp)<<(((-2983451324.3908825)^(tmp = 1572568307, tmp))+(-1165604960.8619013)))/(x>>((tmp = -2127699399, tmp)>>((x^(((((tmp = -1968667383, tmp)^(tmp = 3120052415.9964113, tmp))|(((x|(((x^((tmp = 2831505153, tmp)<<((-3150506831.547093)+((x%(tmp = 383761651, tmp))%(2856803457)))))+(((tmp = -2426953997, tmp)^(tmp = -2667954801.1010714, tmp))*(tmp = -2707801631, tmp)))&(tmp = 2082935238.794707, tmp)))^((tmp = 697573323.5349133, tmp)-x))%(tmp = 661936357, tmp)))/(-1717944600.261446))>>>((2423776015.0968056)^((-1410322010)|((x<<(tmp = 2935993226, tmp))/(tmp = -1533896392, tmp))))))*(tmp = -596675330, tmp))))))>>>(((2944268153)^(x&(144579050.93126357)))/(-2123810677.2619643)))>>>(1473040195.9009588))*x)); - assertEquals(0, x /= (2877666495)); - assertEquals(2174852514, x -= (tmp = -2174852514, tmp)); - assertEquals(543713128, x >>>= x); - assertEquals(2978128878.939105, x += (tmp = 2434415750.939105, tmp)); - assertEquals(3529591145844655600, x *= (tmp = 1185170719.3753138, tmp)); - assertEquals(659, x >>>= ((((((x<<(((((-425423078)/(((tmp = 160617689.20550323, tmp)&(-1524740325.5003028))%(tmp = -1869426475, tmp)))<<(((x^(-487449247))>>>(tmp = -1962893666.7754712, tmp))%x))*x)>>((tmp = 623413085, tmp)&(x+(((((-2200726309.083274)-(x-x))+x)&(-1304849509))|((((tmp = -431896184, tmp)>>>(x>>(-1932126133)))<<((1078543321.2196498)*(-10761352)))>>(tmp = -2681391737.5003796, tmp)))))))/x)-(tmp = -1768629117, tmp))/(((((tmp = -2320718566.0664535, tmp)%x)+(-2831503351.995921))>>>(-2695416841.3578796))*(943979723)))<>(1045534827.6806792)))); - assertEquals(531, x &= (tmp = -293707149, tmp)); - assertEquals(0, x >>= (tmp = -678056747.5701449, tmp)); - assertEquals(1184651529.8021393, x += (tmp = 1184651529.8021393, tmp)); - assertEquals(1721719611, x |= (tmp = 1645413178, tmp)); - assertEquals(-406880257, x |= (tmp = 2268544460, tmp)); - assertEquals(-4194304, x <<= (tmp = -109701322.43455839, tmp)); - assertEquals(17592186044416, x *= x); - assertEquals(0, x ^= (x&x)); - assertEquals(0, x <<= (tmp = 1715401127, tmp)); - assertEquals(-1793087394, x |= (tmp = -1793087394.730585, tmp)); - assertEquals(-2, x >>= x); - assertEquals(263607360.10747814, x += (tmp = 263607362.10747814, tmp)); - assertEquals(1073214955, x |= (893759979.3631718)); - assertEquals(703953930, x -= ((2738450011)%(x^(tmp = 679402836, tmp)))); - assertEquals(1, x >>= (tmp = 2262515165.6670284, tmp)); - assertEquals(0, x >>= (((tmp = 747896494, tmp)^((tmp = -1005070319, tmp)+x))|x)); - assertEquals(0, x >>= ((953612771)>>>(tmp = 3066170923.3875694, tmp))); - assertEquals(-314941454, x -= (x+(((314941454)%(((tmp = 2200222912.9440064, tmp)>>>(2534128736.805429))>>>(x|((747716234)%(((tmp = -252254528, tmp)%(-1553513480.1875453))&x)))))<>(tmp = -2193090564.5026345, tmp)))); - assertEquals(-1199953459.6090598, x %= ((tmp = 2986532440, tmp)*(2685122845))); - assertEquals(-1199953459.6090598, x %= (1951182743.7399902)); - assertEquals(51262285383887820, x *= (-42720228)); - assertEquals(-424776752, x |= x); - assertEquals(166221344210236600, x *= (tmp = -391314598.6158786, tmp)); - assertEquals(-1883425600, x >>= (((tmp = -1020679296, tmp)^((-1416867718)+(-1412351617)))<<(-2743753169))); - assertEquals(0, x &= (x/(-2250026610))); - assertEquals(-1111956501, x ^= (tmp = 3183010795, tmp)); - assertEquals(2012059503, x ^= (tmp = -900369276, tmp)); - assertEquals(15719214, x >>>= (tmp = -3196277049, tmp)); - assertEquals(15719214, x |= x); - assertEquals(100779035, x -= ((-1245802025)^(-2964289852))); - assertEquals(0, x >>= x); - assertEquals(0, x &= (((x<<((2361941389.708063)%x))>>((328256762.09842086)>>>((((tmp = 3094192285, tmp)-(((x>>(tmp = -2920437464, tmp))<<(tmp = -2693021467, tmp))-(x>>>((2410065554)%(x%(tmp = 2487056196.689908, tmp))))))-(tmp = -866314146, tmp))^((1754098471)-((((((-2450740191)-(tmp = 1977885539.6785035, tmp))*((tmp = -1205431332, tmp)>>>x))>>(-870601854))>>(tmp = -301859264, tmp))|((tmp = -2308971516.8301244, tmp)/x))))))&((2307007357)-((tmp = -1518812934, tmp)+(2562270162))))); - assertEquals(0, x <<= x); - assertEquals(-1802124619, x |= (-1802124619)); - assertEquals(-1802124619, x %= ((1617132364.306333)+((1678465962.079633)|((516698570)%(((569813606)*(-1800804098.6270027))%((tmp = 1976706935, tmp)-((tmp = -1830228989.5488424, tmp)>>(((x^((tmp = 1015246068.3791624, tmp)>>x))^((-2171682812.246772)-(tmp = -398330350, tmp)))&x)))))))); - assertEquals(904564673.6237984, x -= (tmp = -2706689292.6237984, tmp)); - assertEquals(818237248768128900, x *= x); - assertEquals(254842325.2585001, x %= (1550087667.9657679)); - assertEquals(-1163919360, x <<= x); - assertEquals(-3.4644526843674166, x /= ((-446801454)+(x>>>(tmp = -2025151870, tmp)))); - assertEquals(0, x &= ((((((((-1739617728)&(x&(((tmp = -2946470036.552597, tmp)/x)*x)))^(-1130501404))>>>x)/((1870230831)>>>(840301398)))%x)/x)/(-2927537567))); - assertEquals(0, x >>= x); - assertEquals(0, x >>>= (x&(x&x))); - assertEquals(0, x &= ((-579614044)-(-756012505.4048488))); - assertEquals(-2970367642, x -= (tmp = 2970367642, tmp)); - assertEquals(-415129376, x ^= (tmp = 2847041926.060355, tmp)); - assertEquals(-1505681312, x &= (tmp = -1225184902.9215767, tmp)); - assertEquals(-3174471329.5807734, x += (-1668790017.5807734)); - assertEquals(-Infinity, x /= (x>>x)); - assertEquals(NaN, x -= x); - assertEquals(0, x ^= (x^(((-1407936301.5682082)<<((x^(((tmp = 3213446217.307076, tmp)|x)|((tmp = 3219810777.3171635, tmp)/(tmp = 1561807400, tmp))))>>>((tmp = 2449910203.0949173, tmp)|((((1954662538.7453175)>>(tmp = -1711636239.9916713, tmp))>>>(tmp = 406219731.214718, tmp))<<(((-907908634.4609842)^((((((tmp = 2408712345, tmp)*(tmp = 1740346634.5154347, tmp))>>(tmp = 715783991, tmp))^(tmp = -655628853.2821262, tmp))%(tmp = 2819143280.434571, tmp))/(-1240412852)))*x)))))/x))); - assertEquals(0, x >>>= x); - assertEquals(0, x <<= x); - assertEquals(0, x >>>= (((-3198075268.8543105)>>(((((x+((tmp = -133461401.50823164, tmp)-((x&(((((tmp = 2617977319, tmp)>>((tmp = -2704719576.8734636, tmp)|((tmp = -977362542.2423751, tmp)<<(x<<(tmp = 3054487697.1441813, tmp)))))>>>((-1635655471)%x))/(-2079513672))%(tmp = 1993563806, tmp)))<<(tmp = -1310524200.6106496, tmp))))%((((-2558804500.7722936)+(tmp = -1641265491, tmp))<<((tmp = -1309608349, tmp)>>>x))/((tmp = -2306644272, tmp)<>>(-1322468310.3699632)))|x)); - assertEquals(90004223.44097246, x /= (((tmp = -481122620, tmp)&x)%((tmp = 1109368524, tmp)/(((-3150568522.633032)<<(tmp = 2923396776, tmp))^(x-((x/x)&(x/(-287976185.1049104)))))))); - assertEquals(0.4521931751193329, x /= (tmp = 199039323, tmp)); - assertEquals(1.8110466604491368e-10, x /= (2496860986.492693)); - assertEquals(0, x |= x); - assertEquals(-1225944576, x += ((tmp = -807700791.631221, tmp)<<((-700782615.4781106)-((((-2954619897)>>>x)<<((tmp = 997657844, tmp)>>>(1227994596)))/((-1234591654.8495834)*((tmp = -191189053.70693636, tmp)+(tmp = -3027659304, tmp))))))); - assertEquals(-1225811383, x |= (-1866233271)); - assertEquals(3069155913, x >>>= (((x/(-99524153.40911508))%(x>>>((((tmp = 2985975640, tmp)/(tmp = 2781516546.2494454, tmp))&(((2234114508)|(((x/(tmp = -1224195047, tmp))<>>((537884375.5698513)+x))))^((tmp = -2144817497.5089426, tmp)|(-498079183.8178189))))>>>((x+x)&(-3086080103.6460695)))))<<(((tmp = 2151157136, tmp)*x)/(((x/x)>>>(-1149734628.4364533))-((3025445835.654089)+(tmp = 530902725.91127443, tmp)))))); - assertEquals(-1733702568, x ^= (tmp = 776361489.423534, tmp)); - assertEquals(8981504, x &= ((tmp = 2902581847, tmp)*(x-(-2697760560)))); - assertEquals(1153166.8526612986, x -= ((x/(tmp = -1375025594.5027463, tmp))+((3043576689.1538706)%(x+x)))); - assertEquals(3389855, x |= (x+x)); - assertEquals(-488458393.17759943, x += (-491848248.17759943)); - assertEquals(40982867145206920, x *= ((3132857155)|(tmp = -218356553, tmp))); - assertEquals(688, x >>= (((((tmp = 403321821, tmp)+((tmp = 2536984658, tmp)%((tmp = 2759309029.8753624, tmp)|(((tmp = 1994203554.7417293, tmp)^((704660500.434877)*(tmp = 1536292958.2691746, tmp)))+(-164139788)))))/((1205950994.1255205)+x))^((((tmp = 975272146.0133443, tmp)-(150107797))/(-1764309514))^((x>>>(x^(x^x)))+(203250124))))>>>(tmp = 1864959239.512323, tmp))); - assertEquals(10, x >>= ((tmp = 1631996431.9620514, tmp)>>x)); - assertEquals(10, x %= (tmp = 2678904916, tmp)); - assertEquals(335544320, x <<= (tmp = -2759037415.6811256, tmp)); - assertEquals(-153389967, x |= ((tmp = -2411636565, tmp)+(tmp = -2305156154, tmp))); - assertEquals(-1171, x >>= x); - assertEquals(813080576, x &= (((tmp = -65428547, tmp)&(tmp = 3163266999, tmp))<>>(((tmp = 143240971.0661509, tmp)<>>((x/(((tmp = 482665912, tmp)-(x>>(tmp = 354425840.784659, tmp)))>>((-2012932893)>>>x)))/((tmp = -1354385830.6042836, tmp)>>>(-2149023857))))^((tmp = 585746520, tmp)+(tmp = 756104608, tmp)))^(517529841.184085))); - assertEquals(-997654012, x &= (((tmp = -404836025.15326166, tmp)+((tmp = 3035650114.0402126, tmp)<<((-1308209196)>>(tmp = 693748480, tmp))))<<(((465774671.4458921)<>(x&(x%(tmp = -1139279208.34768, tmp))))^x))))); - assertEquals(368031616, x &= x); - assertEquals(368031616, x %= (tmp = 1211767328, tmp)); - assertEquals(-67505614939510744, x *= (tmp = -183423412.56766033, tmp)); - assertEquals(959424552, x >>= ((tmp = -171120122.5083747, tmp)/x)); - assertEquals(30949179.096774194, x /= (((x-((((x&(tmp = -180770090, tmp))<<(((tmp = -2061363045.419958, tmp)*((655711531)^((1205768703)-(tmp = 2468523718.8679857, tmp))))+(-2746704581)))+((-853685888)*(tmp = -2299124234, tmp)))|(tmp = 2429502966, tmp)))|(((-985794986.0232368)>>>(2890862426))%x))>>(tmp = 1005542138.8415397, tmp))); - assertEquals(30949179, x |= x); - assertEquals(30949179, x %= (810126097.6814196)); - assertEquals(120895, x >>= (tmp = 3065886056.1873975, tmp)); - assertEquals(1934320, x <<= (1478650660.7445493)); - assertEquals(0, x >>= (1069658046.2191329)); - assertEquals(NaN, x %= x); - assertEquals(NaN, x %= (x*x)); - assertEquals(NaN, x *= ((((2148513916)+(tmp = -210070225.85489202, tmp))>>(975470028))+((-3060642402)>>x))); - assertEquals(NaN, x *= (2888778384)); - assertEquals(NaN, x -= (294531300.16350067)); - assertEquals(-465620423, x ^= (tmp = -465620423.5891335, tmp)); - assertEquals(1613303808, x &= (-2530649850.1952305)); - assertEquals(2045458658, x |= (tmp = 432158946.5708574, tmp)); - assertEquals(0, x >>>= (2277328255.770018)); - assertEquals(0, x &= (-64904722.41319156)); - assertEquals(0, x >>= x); - assertEquals(3109394857.361766, x += (3109394857.361766)); - assertEquals(1519021650, x ^= ((tmp = -2632472653, tmp)|(tmp = 2161964921.8225584, tmp))); - assertEquals(370854, x >>>= ((1486892931.4564312)-((tmp = 3017755741.9547133, tmp)>>>x))); - assertEquals(1333145110.39802, x -= ((-1051580495.39802)-(tmp = 281193761, tmp))); - assertEquals(0, x ^= x); - assertEquals(0, x |= x); - assertEquals(0, x <<= x); - assertEquals(0, x >>>= x); - assertEquals(799202788.1455135, x -= (tmp = -799202788.1455135, tmp)); - assertEquals(1539080192, x <<= (x%(((((x-x)|(((((x%(959993901))+(tmp = -2647575570.092733, tmp))/(tmp = -2040600976.5104427, tmp))*(x*(tmp = 2785252760, tmp)))>>(-377867259)))/((x&(1549738240.013423))>>>(tmp = -1502185618, tmp)))*x)%(1159283801.0002391)))); - assertEquals(0, x >>= (-268660225)); - assertEquals(-0, x /= (-2795206270.635887)); - assertEquals(0, x >>>= (1869556260.2489955)); - assertEquals(64202212, x ^= ((((tmp = -942983515.5386059, tmp)*(((1057759788)-x)*(tmp = 2038041858, tmp)))>>x)+(tmp = 64202212, tmp))); - assertEquals(2021126977, x -= ((tmp = -2009912898, tmp)^((2240062309)%x))); - assertEquals(4332348265459724000, x *= (tmp = 2143530968, tmp)); - assertEquals(1472, x >>>= ((283380755)<>((((((tmp = 626190172, tmp)/x)>>>(-824270996.8545206))/((1258369810.9498723)-(tmp = -2947556209, tmp)))^((((366784589.24711144)|(1462064104.828938))-(1571045395.777879))<<(444685689.60103726)))>>(tmp = -2757110357.410516, tmp)))/(x>>>((tmp = 829226010, tmp)>>>(629512715))))|x)); - assertEquals(-2905481691.264762, x -= (2905481690)); - assertEquals(-1710543566.1481905, x -= (-1194938125.1165714)); - assertEquals(-3421087132.296381, x += x); - assertEquals(-884178944, x <<= ((-1820881235)|x)); - assertEquals(-884178944, x &= (x%(tmp = -2298828530, tmp))); - assertEquals(1516503040, x <<= ((tmp = -3039882653, tmp)+((tmp = 1956034508, tmp)<<(x>>(tmp = 280388051, tmp))))); - assertEquals(3033006080, x += x); - assertEquals(846431222.321887, x %= (x+(-1939718651.1609435))); - assertEquals(-846431224, x ^= ((-1742116766.54132)/x)); - assertEquals(1157918728, x &= (tmp = 1966568030, tmp)); - assertEquals(1157918728, x >>>= ((((((tmp = -2392096728.184257, tmp)*(x&(-3051259597.301086)))>>>(((tmp = 1712991918.071982, tmp)*(tmp = -714525951, tmp))-((-1784801647)>>((-1270567991)%(((214272558)/(((-3110194570)|(tmp = 2558910020, tmp))&(-1266294955.717899)))*((2654922400.609189)>>>(tmp = 370485018, tmp)))))))*(((tmp = -2621203138.1838865, tmp)%(858913517))*((tmp = -1564229442.2596471, tmp)>>((tmp = 1898557618, tmp)|(-1282356275)))))*(tmp = -1253508468, tmp))+((-361964404.75944185)|x))); - assertEquals(961668975, x += (-196249753)); - assertEquals(1, x >>= (tmp = 890453053, tmp)); - assertEquals(1, x >>= (((((tmp = 871309275, tmp)/(x>>>((tmp = 2033022083, tmp)&(tmp = -1393761939, tmp))))%((437488665.104565)^(tmp = 2808776860.4572067, tmp)))-((tmp = -359283111.49483967, tmp)<<((tmp = 2985855945, tmp)%(tmp = -596479825.9114966, tmp))))/(-1965528507))); - assertEquals(0, x >>= ((tmp = -1753776989, tmp)%(tmp = 322622654, tmp))); - assertEquals(84411424, x ^= (((x|(x|(tmp = -1617122265, tmp)))&(tmp = -313813263, tmp))&(1472888112.0258927))); - assertEquals(67633184, x &= ((1556833131.0776267)<<(x<<(1501219716.5575724)))); - assertEquals(68002293, x |= (((tmp = 188984203.0350548, tmp)>>>(tmp = 1356052777, tmp))%(x*(tmp = -2944960865, tmp)))); - assertEquals(67108864, x &= (((1046644783.9042064)<>>(((-1913290350.3687286)<<(((((tmp = -2223692353, tmp)>>x)&(x<<(x>>((((tmp = -976850020, tmp)%(tmp = 1379692507, tmp))>>>(1120103052.2077985))>>(tmp = 5592070.612784743, tmp)))))<<(x+((tmp = -3154037212.9764376, tmp)%(((x-(-1961060483.6965141))+(((1920670676)-(2852444470.7530622))/(((1445954602)>>((1353665887)>>(tmp = 111411560.64111042, tmp)))<>(1511187313.2680469)))))|((tmp = -1107142147, tmp)|(tmp = -768165441.4956136, tmp)))))); - assertEquals(0, x -= x); - assertEquals(0, x %= (tmp = -1655707538.0778136, tmp)); - assertEquals(-184120712930843900, x += (x+((tmp = -3174410166, tmp)+((tmp = -301807453, tmp)*(tmp = 610060182.1666535, tmp))))); - assertEquals(-54598560, x >>= (-1365351357)); - assertEquals(-6763.94449950446, x /= (((-1953016847)<<((673287269.7002038)%(-558739761)))>>>(tmp = 1607754129, tmp))); - assertEquals(-1, x >>= x); - assertEquals(1, x >>>= x); - assertEquals(0, x >>>= x); - assertEquals(0, x >>= ((-384747983)+((((tmp = -949058352.381772, tmp)>>>(-1920744986))-(-882729639))^((x^((tmp = 2351364046, tmp)<<(((tmp = -3110165747, tmp)^(-1266489735))-((tmp = -371614326, tmp)>>((tmp = -2064968414, tmp)&(-2075036504.617934))))))&(((-2616501739)&(tmp = 2591437335.4029164, tmp))>>x))))); - assertEquals(0, x >>>= ((tmp = 2946468282, tmp)&((-2741453019)>>x))); - assertEquals(0, x -= ((x%(-134700915))&(-1955768279))); - assertEquals(NaN, x /= x); - assertEquals(NaN, x /= (x^(((((((tmp = 3185669685.772061, tmp)>>(tmp = -1973500738, tmp))-(tmp = -87401348.93002152, tmp))>>(tmp = -2813508730, tmp))&(tmp = -778957225, tmp))<<(x-(x&((-2821756608)+(((((tmp = 2475456548, tmp)/(tmp = 997998362, tmp))<<((tmp = -83043634, tmp)|x))%(636120329))%(tmp = -1910213427.7556462, tmp))))))%x))); - assertEquals(0, x &= x); - assertEquals(0, x <<= x); - assertEquals(0, x >>>= (x%x)); - assertEquals(0, x %= (745221113)); - assertEquals(0, x >>>= ((1467615554.7672596)|x)); - assertEquals(0, x /= (tmp = 735317995, tmp)); - assertEquals(-1513001460, x |= (2781965836)); - assertEquals(-1513001460, x |= (x%(1970577124.3780568))); - assertEquals(-0, x %= x); - assertEquals(1864972269, x ^= (-2429995027.840316)); - assertEquals(1226843341, x &= (tmp = -639621923.5135081, tmp)); - assertEquals(1226843339.3171186, x += ((1297620268.272113)/(-771070549))); - assertEquals(76677708, x >>>= (1009134980)); - assertEquals(0, x ^= x); - assertEquals(0, x ^= x); - assertEquals(NaN, x /= x); - assertEquals(716040787, x |= ((1851586229)-(1135545441.3502865))); - assertEquals(1385693184, x <<= x); - assertEquals(1321, x >>= (x^((tmp = -1576632297.0860603, tmp)>>>(405218605)))); - assertEquals(-1319012931, x |= (-1319014243)); - assertEquals(-1319012931, x >>= ((((1689898279.3580785)<<((((x^(x>>>((((tmp = 2635260332, tmp)*(tmp = 2053357650, tmp))*x)*(2856480122.339903))))>>x)&(-2382703000.077593))%(1183918594)))*(tmp = -1670081449, tmp))<>>(((-1865885282.8723454)&(x&(x|((900188006.3757659)>>>(x&x)))))+(2227126244.0526423)))*x)); - assertEquals(1450593, x >>>= ((2157053647)>>(x+(-2934071355.418474)))); - assertEquals(576782336, x <<= ((1054640368.827202)&((tmp = -3182236876.434615, tmp)>>(tmp = 2129856634.0328193, tmp)))); - assertEquals(2950754326, x -= (tmp = -2373971990, tmp)); - assertEquals(738197504, x <<= (1188157369.5988827)); - assertEquals(0, x <<= (x+((tmp = -839533141, tmp)&((((((tmp = -1148768474.7306862, tmp)|(172650299))+(tmp = -2739838654, tmp))/(3132557129))%x)>>>(tmp = -1229961746.2466633, tmp))))); - assertEquals(0, x %= (tmp = -2974207636, tmp)); - assertEquals(0, x %= ((2323482163)>>>x)); - assertEquals(0, x &= (((x/(x+(x>>((tmp = 55935149, tmp)%x))))|((3109182235)>>>(tmp = 1217127738.8831062, tmp)))+((((tmp = -385114910, tmp)*((((((tmp = -2535158574.634239, tmp)&(x+x))<<(-2821692922.43476))&(-776804130.9457026))>>((-1374832535)^(tmp = 2175402162.701251, tmp)))%(-1646995095)))-(x*(tmp = -921556123, tmp)))^(79224621)))); - assertEquals(128935435, x |= ((tmp = 2279459038, tmp)%(tmp = -537630900.5271742, tmp))); - assertEquals(128935435, x /= ((((((x<<(2750024311))-((-1332480769.4784315)&(1418160003)))&(1551783357))<<(((((-2870460218.55027)|((-1958752193.7746758)&(2551525625)))>>>((((tmp = -1698256471, tmp)^(((((((((tmp = -830799466, tmp)+x)-(-111590590))+(tmp = -1105568112.3921182, tmp))/((tmp = -3058577907, tmp)|(((-1944923240.2965696)%(-2884545285))<<(tmp = -1993196044.1645615, tmp))))^(x>>(tmp = -2961488181.3795304, tmp)))&x)*x)|(((tmp = 97259132.88922262, tmp)<<((1601451019.343733)&x))*(x|x))))+((((x>>x)<>>((((-2382311775.753495)^(-2062191030.2406163))>>>(tmp = -1054563031, tmp))/(-862111938.7009578))))%x)+(-3103170117.625942)))%((tmp = -1144062234, tmp)>>x))>>>(tmp = 1216332814.00042, tmp))); - assertEquals(41.631074722901715, x /= (x&(-2542806180.962227))); - assertEquals(41.631074722901715, x %= (-14003386.556780577)); - assertEquals(8, x &= (x&((-2231622948)%(tmp = 488279963.9445952, tmp)))); - assertEquals(9.002961614252625e-9, x /= ((53802728.56204891)<<(((867697152.3709695)-(538719895.5707034))&(-631307825.4491808)))); - assertEquals(0, x >>= x); - assertEquals(-0, x *= (tmp = -785674989, tmp)); - assertEquals(-0, x += x); - assertEquals(0, x /= (-250703244)); - assertEquals(0, x <<= ((tmp = -661062581.5511999, tmp)|x)); - assertEquals(0, x &= (-1299482308)); - assertEquals(0, x &= ((-399690060)>>>(2448074202.385213))); - assertEquals(0, x &= (2574341201)); - assertEquals(0, x <<= ((x|(((tmp = 2458873162.645012, tmp)+(tmp = -1999705422.8188977, tmp))<<((x^(tmp = -392530472, tmp))>>>x)))&(((tmp = 2463000826.7781224, tmp)|(tmp = 3020656037, tmp))-x))); - assertEquals(1397603760, x += ((tmp = -1359413071, tmp)-(tmp = -2757016831, tmp))); - assertEquals(513823851, x -= (883779909)); - assertEquals(-1765712747, x ^= (2288060670.6797976)); - assertEquals(3117741504918286000, x *= x); - assertEquals(3117741506284045300, x += (1365759456)); - assertEquals(6035555595.597267, x /= (tmp = 516562470, tmp)); - assertEquals(104203275, x &= (tmp = 376835755.32434213, tmp)); - assertEquals(10858322520725624, x *= x); - assertEquals(59458951, x >>>= (153765028)); - assertEquals(49370856, x += ((tmp = -1291276092, tmp)>>x)); - assertEquals(0, x %= x); - assertEquals(0, x += x); - assertEquals(-1494589645, x -= (1494589645)); - assertEquals(-0, x %= x); - assertEquals(0, x <<= (x&((2730708043.467806)<>>((tmp = 1800568769, tmp)^((((((tmp = 1351568510, tmp)>>(tmp = -1337992543.2562337, tmp))>>>(tmp = 2602239360.40513, tmp))*x)%x)+(-2095840128.0700707))))); - assertEquals(-0, x /= ((2363946613)^(tmp = -2227868069, tmp))); - assertEquals(0, x &= ((((2634933507)<<(2798775374.140882))>>>x)>>>(((tmp = 1135200853.6396222, tmp)-(tmp = -1529829490.7007523, tmp))-(((((((((x^((x|(2135742668.591568))-(924230444.8390535)))%(tmp = -2459525610.51898, tmp))+(x&((tmp = 1177231743.809653, tmp)/(tmp = 1743270357.2735395, tmp))))|(((tmp = -1894305017, tmp)^((tmp = 1791704240, tmp)&x))%(-1569751461)))>>>(tmp = -2078321944, tmp))|x)*(((x*(tmp = -163239354, tmp))<<((tmp = 2859087562.694203, tmp)&(-657988325.9410558)))^(2508013840)))-((-243572350)+(x%((-1095206140)+((tmp = 3213566608.942816, tmp)*((2256442613)%((tmp = 1723751298, tmp)^(x-((-1145710681.2693722)|x)))))))))+(1556870627))))); - assertEquals(130883024.97423434, x -= (-130883024.97423434)); - assertEquals(0.046720352789736276, x /= (tmp = 2801413456, tmp)); - assertEquals(1806558189, x |= (tmp = 1806558189.157823, tmp)); - assertEquals(72.40475060062144, x /= (x%((1932591076.531628)>>(1982030182)))); - assertEquals(-1077558321.5975945, x += (tmp = -1077558394.002345, tmp)); - assertEquals(98187, x >>>= x); - assertEquals(97792, x &= (tmp = -1032487404, tmp)); - assertEquals(709197609, x |= (x^(709179177))); - assertEquals(11081212, x >>>= (tmp = 1412940006.169063, tmp)); - assertEquals(11081212, x &= x); - assertEquals(-1920311203, x -= ((tmp = 1931392415, tmp)<<((x%(tmp = -2873576383, tmp))%x))); - assertEquals(-1920311203, x |= (x&(-993884718.2172024))); - assertEquals(-4, x >>= (1409411613.0051966)); - assertEquals(-7947632484, x *= ((-2856731734)^((-1181032235.9132767)-((tmp = 780101930, tmp)+((tmp = -1732707132.6253016, tmp)^x))))); - assertEquals(-2016362769, x ^= (tmp = 2711125619.2455907, tmp)); - assertEquals(-61535, x >>= x); - assertEquals(-124771649, x ^= (tmp = 124726558, tmp)); - assertEquals(-1, x >>= x); - assertEquals(-0, x %= (x*x)); - assertEquals(0, x <<= x); - assertEquals(0, x /= (2444628112)); - assertEquals(0, x <<= ((-38968517.72504854)<>>= ((1825218368)<<(-1843582593.2843356))); - assertEquals(7786038495492170000, x *= x); - assertEquals(-11011696, x |= (((tmp = 2931644407.4936504, tmp)-(3077095016.001658))%(tmp = -1731851949, tmp))); - assertEquals(-107866, x %= ((-697845074.1661191)>>(772708134))); - assertEquals(356779149, x ^= (-356884949.503757)); - assertEquals(0, x %= x); - assertEquals(0, x *= ((tmp = 1542291783, tmp)^x)); - assertEquals(0, x += ((tmp = 1105314644.002441, tmp)&x)); - assertEquals(-1005882993, x ^= (-1005882993.0899806)); - assertEquals(-1301065066, x += (tmp = -295182073, tmp)); - assertEquals(-1454702592, x <<= ((-2440858737.390277)&(-1363565201.7888322))); - assertEquals(-201539012492525570, x *= ((((tmp = -1416268089, tmp)|x)-(tmp = 1669129769, tmp))&(x<<((x/(-2614041678.7423654))%x)))); - assertEquals(-2.1995276811535986e+25, x *= (x/(-1846667987.154371))); - assertEquals(0, x |= ((x*(((x>>>((tmp = 1044173034, tmp)>>>((x<<((tmp = -2906412863, tmp)%((tmp = -437401503, tmp)<<(((((x|(2167319070))<<((tmp = 2766179640.1840167, tmp)&(-2372076054)))*(tmp = -241617431.06416297, tmp))*((((((tmp = 2570465382.5574293, tmp)>>>(x/((-2851324509.354545)%x)))>>(((x+((tmp = -614687945, tmp)^x))^((((tmp = 1653437743, tmp)>>x)/(tmp = 3072995069, tmp))>>x))*(((((-290508242)>>((tmp = 2969511554, tmp)<<(tmp = 158176292.95642304, tmp)))<<(32376015))+(tmp = 2391895870.4562025, tmp))*x)))&((((x/(tmp = 365292078.53605413, tmp))>>x)/(1167322811.0008812))|(((tmp = 2487970377.365221, tmp)^x)<<((tmp = 2342607988.711308, tmp)/(((2276081555.340126)-(((tmp = -2571071930, tmp)>>(tmp = -248468735.76550984, tmp))>>>(tmp = -2862254985.608489, tmp)))^(-1312017395))))))<>((-1433975206)/((tmp = -2064757738.6740267, tmp)<<((((tmp = -1563531255, tmp)-(-589277532.2110934))<>>(((tmp = -1752877566, tmp)<>= (tmp = -3165079200.229641, tmp)); - assertEquals(-44086313.1323726, x %= ((x%(-254466243.48728585))-((x>>(-457411829.1063688))-((-2606923436.9333453)/x)))); - assertEquals(-44086313, x |= x); - assertEquals(1037812, x >>>= ((tmp = 342497258.9786743, tmp)+(1652928385.8150895))); - assertEquals(-2371695599678100, x *= (tmp = -2285284425, tmp)); - assertEquals(-2371697387004653, x += (tmp = -1787326553.0542095, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x >>= ((x^(tmp = 544039787, tmp))>>>x)); - assertEquals(0, x &= ((x%(((((((tmp = -424572417.1088555, tmp)|(-2381863189))/(tmp = -2007482475.1809125, tmp))&(((((tmp = 311016073, tmp)>>(tmp = -1548839845, tmp))+((-2557740399.7947464)<<(2399113209)))&x)>>>x))%(-297180308.7721617))-(tmp = 860906293, tmp))^x))%(-2740622304))); - assertEquals(4971841192462909000, x += ((tmp = -2723203837.572612, tmp)+((((-2909100706)+(-951999374))|(-3116735764))*(3087123539.422669)))); - assertEquals(-460, x >>= (1081807537.557404)); - assertEquals(2354165127.3906384, x += (tmp = 2354165587.3906384, tmp)); - assertEquals(357.8680960002211, x /= ((((x<<(((x&x)+(1113841407))|((x/(tmp = 384533564, tmp))>>>(-605853882))))%x)&((tmp = 2050375842, tmp)>>>x))>>(((2745147573)^x)<<(x-(900043292))))); - assertEquals(0, x *= (x>>>(-295974954.5058532))); - assertEquals(0, x *= ((-2448592125.815531)*(tmp = -94957474.8986013, tmp))); - assertEquals(0, x &= ((x>>x)^(tmp = -1335129180, tmp))); - assertEquals(395092065, x |= ((3081659156)^(tmp = -1608334475, tmp))); - assertEquals(395092065, x &= x); - assertEquals(-413337639, x += (x^(tmp = -664996071.3641524, tmp))); - assertEquals(-1604423637896759800, x *= (x>>>(tmp = 1242912352.955432, tmp))); - assertEquals(0, x &= ((((((tmp = 651293313, tmp)|(((2541604468.635497)>>>(tmp = 758815817.7145422, tmp))>>>((-1948795647)/x)))&x)/((tmp = -3161497100, tmp)+(782910972.3648237)))>>>x)%(834206255.5560443))); - assertEquals(0, x >>>= (tmp = 125945571, tmp)); - assertEquals(NaN, x -= (x%x)); - assertEquals(NaN, x %= (tmp = 282259853, tmp)); - assertEquals(NaN, x += (tmp = -2081332383, tmp)); - assertEquals(0, x >>>= (((x>>(-2298589097.7522116))|((((x>>>(x-(tmp = 755218194, tmp)))|x)%x)-(tmp = 2206031927, tmp)))>>>((((x&(x-x))^(tmp = 2836686653, tmp))*((x<<(tmp = -1624140906.4099245, tmp))>>>((2942895486)|((x>>>x)>>>(-1586571476)))))|((781668993)+(-1857786909))))); - assertEquals(0, x &= (tmp = -708084218.9248881, tmp)); - assertEquals(0, x %= (1645913394.5625715)); - assertEquals(0, x <<= ((x^((tmp = 1185413900, tmp)*((-2441179733.997965)*(tmp = 2554099020.066989, tmp))))%((1704286567.29923)/x))); - assertEquals(0, x += x); - assertEquals(0, x *= x); - assertEquals(0, x |= (x>>>(139138112.141927))); - assertEquals(0, x >>>= (tmp = 2142326564, tmp)); - assertEquals(0, x |= x); - assertEquals(-0, x /= ((((x+(2817799428))|x)%((1050079768)-(x>>>((1452893834.8981247)|((((tmp = -1737187310.889149, tmp)/(tmp = -362842139, tmp))%(1234225406))%(((x|x)*((-1055695643.739629)-((x-x)*(945954197.676585))))-(tmp = 786185315.346615, tmp)))))))<<(-173891691))); - assertEquals(0, x &= (-2842855092.319309)); - assertEquals(0, x &= ((-3188403836.570895)/x)); - assertEquals(0, x *= (x+x)); - assertEquals(NaN, x /= (x>>>(((tmp = 391037497.68871593, tmp)/((192754032)*(1382659402.5745282)))/((((-2187364928)>>>x)>>(tmp = 2563448665.7594023, tmp))^(tmp = 1500866009.7632217, tmp))))); - assertEquals(NaN, x /= ((tmp = -935036555.2500343, tmp)-(x/(((x&(x^(tmp = -3001352832.5034075, tmp)))^x)/((1122547613)>>x))))); - assertEquals(0, x >>= (tmp = -2951766379.0809536, tmp)); - assertEquals(-632945188, x ^= (-632945188.7188203)); - assertEquals(-632945188, x %= ((((((tmp = -3181527314.82724, tmp)&(2280175415))>>(x^(x|x)))^(tmp = -524233678.52970886, tmp))*x)|((tmp = 1782882786, tmp)>>>(tmp = -592607219, tmp)))); - assertEquals(404189184, x <<= ((tmp = -2761472127, tmp)^(36616299.88780403))); - assertEquals(872651572, x ^= (tmp = 739568436.6252247, tmp)); - assertEquals(13, x >>>= ((tmp = -1033843418.865577, tmp)%(x%(1247263629.0445533)))); - assertEquals(0, x >>>= x); - assertEquals(0, x >>= (3189175317)); - assertEquals(0, x &= (((2391973519.6142406)^((-2950058736.191456)|(x*x)))>>(tmp = 343822384.294345, tmp))); - assertEquals(0, x >>>= (tmp = -2306246544, tmp)); - assertEquals(-1572339598, x ^= ((tmp = 2991380083.337327, tmp)&(tmp = -1361507970, tmp))); - assertEquals(649, x >>>= ((1961407923.4950056)>>(x-(-872821523.7513013)))); - assertEquals(649, x ^= (((x&(tmp = -702931788, tmp))^(((x>>x)|(((tmp = 2710759269, tmp)/(x>>(x*((((((tmp = -2428445134.9555864, tmp)+(-1859938743))%(x<>(-1315823020)))))%(1461368627.1293125)))>>>(tmp = -2921804417.5735087, tmp)))/(x>>>(((tmp = 2175260691.824617, tmp)/((-582958935.7628009)-((((((x>>x)|(2590503723.4810824))^(tmp = -1994324549, tmp))-(-684683327))/(tmp = -3133419531, tmp))|(tmp = -328974092.05095506, tmp))))>>(-447624639.4518213))))); - assertEquals(649, x %= ((((1854382717)|(((x+(tmp = 2568081234, tmp))-x)+((tmp = 1043086140, tmp)<<((tmp = 2979118595.0496006, tmp)+((x&(2669577199.852803))/(-2567808445.101112))))))<<((((tmp = -1471092047, tmp)&((-3099138855.21041)-((tmp = -798574377.526715, tmp)&((2255586141)<<(-1069867774)))))>>>(((x*(tmp = -2810255707.781517, tmp))/x)*(2706435744.054121)))^(394262253)))^((844325548.0612085)/(tmp = 1434691648, tmp)))); - assertEquals(823215943.1924392, x += (tmp = 823215294.1924392, tmp)); - assertEquals(536872706, x &= ((-334612686)%((1303605874)|x))); - assertEquals(-30666374.413486242, x += ((tmp = -567539080.4134862, tmp)%(tmp = -1655555936.3195171, tmp))); - assertEquals(-56438727096752984, x *= (tmp = 1840410814, tmp)); - assertEquals(-33200107.984488487, x %= (((tmp = 3007206509, tmp)-(3079337725.6659536))%(1819565202.5011497))); - assertEquals(-1214493182, x ^= (-3060193769)); - assertEquals(-1214493179.1335113, x -= ((-3218099496.595745)/(1122662554))); - assertEquals(-1214493179, x >>= ((-375364195)<<(((tmp = 619439637.8754326, tmp)>>(-1830023279.9486575))&(tmp = -1106180387.2448823, tmp)))); - assertEquals(-303623295, x >>= (-2109241374.3349872)); - assertEquals(-0, x %= x); - assertEquals(0, x |= x); - assertEquals(1917126206, x -= (-1917126206)); - assertEquals(2659779928, x -= (tmp = -742653722, tmp)); - assertEquals(-1635187368, x >>= ((tmp = -674385169, tmp)*((9848362.783326745)|(x*(55220544.00989556))))); - assertEquals(-1981113695, x ^= ((tmp = 392404985, tmp)>>(((x<<((2006207061)<<(tmp = 2558988218, tmp)))*((((tmp = 1789304307.1153054, tmp)/(2538061546))<<(tmp = 556026116, tmp))&((tmp = 1076457999.6424632, tmp)*(tmp = -1822378633.2489474, tmp))))%(((((-1117046924)&((-69013651)%(x&(((-2320327696)/(x&x))-(tmp = 2458222544, tmp)))))>>((-3092360983.0037227)/(-3171415636)))*(((tmp = 2520431213, tmp)<<(1066492762.6149663))+((tmp = 1272200889, tmp)^((1687693123.2295754)+x))))-(-1096823395))))); - assertEquals(-990556848, x >>= x); - assertEquals(981202869119695100, x *= x); - assertEquals(981202869119695100, x -= (x/x)); - assertEquals(0, x ^= (x>>x)); - assertEquals(NaN, x %= x); - assertEquals(0, x ^= x); - assertEquals(0, x *= ((((2980512718)>>>x)<<((x^(-1111233869))>>((2531466092.6036797)>>>(((tmp = -1791229364, tmp)*(-2210950307.206208))%((tmp = -806645443, tmp)<<((((((((tmp = 112334634.26187229, tmp)%(x|((((2154021796.1166573)+x)&((-1047293079.9686966)^(tmp = -1894127139, tmp)))+(tmp = 1910946653.2314827, tmp))))^(293142672.5016146))-x)<<(-1593533039.8718698))+x)>>(x<<(((46359706.50393462)&(tmp = 272146661, tmp))|(tmp = 2117690168, tmp))))%(tmp = -1784737092.4924843, tmp)))))))-(1465796246))); - assertEquals(0, x &= x); - assertEquals(NaN, x %= x); - assertEquals(0, x &= (x+(-1612418456))); - assertEquals(0, x &= ((tmp = -843964311, tmp)/x)); - assertEquals(NaN, x /= x); - assertEquals(NaN, x *= x); - assertEquals(NaN, x += (x>>>(54020240))); - assertEquals(489206868, x |= (489206868)); - assertEquals(489206868, x &= x); - assertEquals(489206848, x &= ((tmp = -1699133906.2361684, tmp)>>(tmp = 2658633814, tmp))); - assertEquals(489206848, x |= x); - assertEquals(1910559006, x -= (tmp = -1421352158, tmp)); - assertEquals(1, x >>= x); - assertEquals(0, x -= x); - assertEquals(0, x %= (x^(tmp = 2745376003.2927403, tmp))); - assertEquals(0, x %= (((tmp = 3199743302.1063356, tmp)^((-1905944176)&(x>>>(187247029.5209098))))<<((x*((-1394648387)*(1252234289)))-(3140049815)))); - assertEquals(0, x <<= (-2567872355)); - assertEquals(0, x %= (tmp = 1057707555.8604916, tmp)); - assertEquals(0, x %= ((tmp = -1877857405.0228279, tmp)>>>(((tmp = 423831184, tmp)*((tmp = -2106757468.324615, tmp)%(tmp = -1197717524.6540637, tmp)))>>(tmp = -93746263.46774769, tmp)))); - assertEquals(0, x |= x); - assertEquals(-0, x *= ((tmp = 1317609776.6323466, tmp)*(tmp = -26959885.89325118, tmp))); - assertEquals(0, x >>= (-1288116122.0091262)); - assertEquals(0, x &= ((370818172.92511404)%((tmp = -528319853.54781747, tmp)*(x/((tmp = -2839758076, tmp)^(x+(((-1258213460.041857)<<(tmp = 302017800.72064054, tmp))|((((tmp = -624254210, tmp)^((-338165065.97507)|((623392964)-x)))>>>x)%(tmp = 2767629843.0643625, tmp))))))))); - assertEquals(0, x >>>= x); - assertEquals(0, x >>>= x); - assertEquals(0, x |= ((-2001549164.1988192)*x)); - assertEquals(0, x -= x); - assertEquals(0, x *= (((((165836842.14390492)*(tmp = -3220002961, tmp))|(-2840620221.747431))%((x/(tmp = 3153915610, tmp))>>>(tmp = 2018941558, tmp)))>>>x)); - assertEquals(-0, x *= (-231994402.93764925)); - assertEquals(0, x <<= x); - assertEquals(0, x %= (tmp = 2702385056.1149964, tmp)); - assertEquals(0, x <<= (tmp = 378459323, tmp)); - assertEquals(0, x >>>= ((x&(x&(((-1014963013)<<(x&((tmp = -3110294840, tmp)|(x+(x<<(1129643420))))))+(1093795819.1853619))))+((((tmp = -2295103369.697398, tmp)&(((370501313.43019223)>>>(2465439579))/x))-x)>>x))); - assertEquals(0, x /= ((tmp = 1779625847, tmp)+(tmp = -662459654.6908865, tmp))); - assertEquals(0, x -= x); - assertEquals(0, x %= ((tmp = 2723291421, tmp)|(277246502.4027958))); - assertEquals(0, x ^= (((-2936270162)>>>((((tmp = -2019015609.1648235, tmp)|(47218153))*(-823685284))+x))&(x<<(x*(x|(((tmp = -941955398, tmp)^(tmp = -2365238993.5300865, tmp))-(778674685))))))); - assertEquals(0, x >>>= x); - assertEquals(NaN, x %= x); - assertEquals(0, x &= (-175235975.8858137)); - assertEquals(-2684493800.1062117, x += (tmp = -2684493800.1062117, tmp)); - assertEquals(-1290806265.6063132, x -= (-1393687534.4998984)); - assertEquals(-1290806265, x >>= (((x>>(tmp = -1710112056.4935386, tmp))*(586227650.2860553))<<(tmp = -2918251533.6052856, tmp))); - assertEquals(23470008, x >>>= x); - assertEquals(1668734969, x |= ((-295560682.9663689)^(x|((((tmp = -1183847364, tmp)&(3135327694))+(1679127747.1406744))-((-1895825528)%((tmp = -3180115006, tmp)+((tmp = 2373812187, tmp)|x))))))); - assertEquals(1744306169, x |= (1188503928.5009093)); - assertEquals(1744306169, x %= (tmp = -2723982401.4997177, tmp)); - assertEquals(3488612338, x += x); - assertEquals(3488612337, x += (((x/(-325849204))>>x)|(-1820624550.9149108))); - assertEquals(-1511119305, x ^= (tmp = 1778506182.2952862, tmp)); - assertEquals(-12211415, x %= (x^(tmp = -54943035, tmp))); - assertEquals(-12211415, x %= ((-1267051884)%(-643566443.0122576))); - assertEquals(-30.84976063258681, x /= (((1052047194)>>>x)&(1495698235.5117269))); - assertEquals(-61.69952126517362, x += x); - assertEquals(-244, x <<= (x^(x+(tmp = -2822258210.076373, tmp)))); - assertEquals(-6652, x &= ((tmp = 2593685093, tmp)>>((((2047688852.4609032)<<((x*(-611076291))*x))^(-2665364024.817528))>>>(165267874)))); - assertEquals(0, x -= x); - assertEquals(0, x /= (2454186758)); - assertEquals(0, x &= (tmp = -2226895206, tmp)); - assertEquals(0, x += x); - assertEquals(-21390701, x += ((-1369004846.0816503)>>(tmp = -2661552634.039692, tmp))); - assertEquals(-0.012568536912921919, x /= (1701924507.856429)); - assertEquals(7.09517966608176e-11, x /= (tmp = -177141911.8955555, tmp)); - assertEquals(0, x >>= (tmp = 231535697, tmp)); - assertEquals(1383687797, x ^= (tmp = -2911279499.568808, tmp)); - assertEquals(1383687797, x %= (tmp = -2258636646.5294995, tmp)); - assertEquals(1319, x >>= ((tmp = -2549411892.8426056, tmp)/(((((1532476676)^(153720871.82640445))+x)/(((2988190456.3206205)&(tmp = -2920873674, tmp))-(((((tmp = -1044518167.0581458, tmp)>>x)-((((tmp = -194701879.13505793, tmp)&(498352051))&((tmp = -2167339635.6529818, tmp)^(((x>>(tmp = 700159851, tmp))*(tmp = 2874921158, tmp))/x)))-((2856128689)|((-1876321441)>>>(2110732915)))))^((((tmp = -193379494.18825436, tmp)/(-3055182489.533142))<>(tmp = 698475484.3987849, tmp))))^(3182231653.500364))))|(((tmp = -194670835, tmp)>>>((786780139)%(((2114171416.2305853)^(1703145352.8143656))/x)))>>>((tmp = -3029462067, tmp)>>((67647572.02624655)&(x*(-2394283060)))))))); - assertEquals(13903855, x |= ((tmp = -2515306586, tmp)>>>x)); - assertEquals(54311, x >>>= ((-2413722658)-((tmp = -2159787584, tmp)^(tmp = 949937622.9744623, tmp)))); - assertEquals(108622, x += x); - assertEquals(1250717187, x ^= ((tmp = 842692148, tmp)+(((2649331689.694273)<>>= (x*(x>>>x))); - assertEquals(-1076374105, x |= (2589443367)); - assertEquals(-0.2818750938197037, x /= (((tmp = -1559525732.9603848, tmp)|(-477068917.5483327))>>>((-688616257)*((((tmp = -1192490153.1226473, tmp)*(-502280624.0265591))<<(-442688727.4881985))%(x+(((((tmp = -2948836853.831935, tmp)-(tmp = -2850398330.910424, tmp))>>>(x>>>(-1947835558)))^x)+(x*x))))))); - assertEquals(2032826546, x |= (tmp = 2032826546.819327, tmp)); - assertEquals(3408404827.14316, x += (tmp = 1375578281.1431599, tmp)); - assertEquals(258183922.14315987, x %= (tmp = 350024545, tmp)); - assertEquals(479694848, x <<= (tmp = -481187157, tmp)); - assertEquals(-2147483648, x <<= (((tmp = -2956588045.472398, tmp)>>>(((tmp = -1838455399.1775856, tmp)&(((((tmp = -637547, tmp)/x)&(x^((-44876328.1767962)+(((-2059598286)-(1071496688))%(tmp = -1492254402, tmp)))))-(x%x))*(x|x)))>>(1226250760)))<>(x&(tmp = 222293461, tmp))))>>>(((784519621)|x)^((-580766922)>>(tmp = -947264116, tmp)))))>>>((((2794210354.22964)>>>(((2896952532.0183973)*((x+(tmp = -1813175940, tmp))<<(tmp = -1302618293, tmp)))&x))>>(x-(((x|((1456466890.1952953)*x))^(-169979758.19158387))-(x-x))))>>x))&(tmp = 2671604078.3026733, tmp))))/(-1701675745))); - assertEquals(0.675840332689047, x %= ((tmp = 2421871143, tmp)^x)); - assertEquals(NaN, x %= ((((tmp = 1175526323.433271, tmp)+(tmp = 2813009575.952405, tmp))%((tmp = -3112133516.3303423, tmp)&x))&((((((-424329392)^(tmp = 1430146361, tmp))+x)-(1533557337.268306))%((tmp = -3117619446, tmp)-(-3127129232)))>>>x))); - assertEquals(NaN, x += x); - assertEquals(0, x >>>= ((1710641057.7325037)%(104961723.56541145))); - assertEquals(0, x <<= (tmp = -970072906, tmp)); - assertEquals(0, x *= (87768668)); - assertEquals(-1464968122, x ^= (tmp = -1464968122, tmp)); - assertEquals(-1467983895, x ^= ((tmp = -1204896021, tmp)>>>(((91792661)&(x>>>(((-2364345606)>>>x)*x)))+x))); - assertEquals(2.991581508270506, x /= (-490704963.5591147)); - assertEquals(0, x >>>= x); - assertEquals(0, x >>= ((tmp = 639854873, tmp)%(tmp = 743486160.3597239, tmp))); - assertEquals(0, x <<= (tmp = 1045577245.3403939, tmp)); - assertEquals(0, x >>= ((tmp = -1932462290, tmp)|(tmp = 1629217987, tmp))); - assertEquals(517617438, x ^= ((tmp = 2737789043, tmp)%(tmp = -2220171604.135681, tmp))); - assertEquals(126371, x >>>= ((tmp = 205210223.69909227, tmp)-(tmp = 598118404, tmp))); - assertEquals(918548455, x |= ((918228734.8363427)+(x+x))); - assertEquals(918548455, x |= ((tmp = 599828198, tmp)>>((tmp = -851081330, tmp)|(tmp = -1152596996.8443217, tmp)))); - assertEquals(918548443.7739062, x -= ((tmp = 1497642976.2260938, tmp)%(x>>(tmp = -548469702.5849569, tmp)))); - assertEquals(0.7739062309265137, x %= (x&x)); - assertEquals(2317939163.8239403, x *= (tmp = 2995116296, tmp)); - assertEquals(1014415360, x <<= (-279972114)); - assertEquals(0, x &= ((296810932)/(x*(tmp = -2750499950, tmp)))); - assertEquals(0, x *= (x%((126285451.05086231)>>>(x*(tmp = -2789790532, tmp))))); - assertEquals(0, x >>>= ((975695102.5771483)%(x-((-1011726540)-((tmp = 2223194882, tmp)/x))))); - assertEquals(-1747794584, x |= (-1747794584.3839395)); - assertEquals(-543544679, x %= (tmp = -1204249905, tmp)); - assertEquals(-543544679, x %= (-881024001)); - assertEquals(1, x /= x); - assertEquals(-1879376393, x |= ((tmp = 161643764, tmp)|(tmp = 2281346499.9084272, tmp))); - assertEquals(1.321124264431369, x /= (-1422558379.7061746)); - assertEquals(1, x >>>= (x&(tmp = -963118950.4710281, tmp))); - assertEquals(3, x ^= ((x+x)/x)); - assertEquals(1, x /= x); - assertEquals(1, x &= (2090796073)); - assertEquals(-1284301873, x ^= (((-11041168.146357536)+(tmp = -1273260707.8134556, tmp))+x)); - assertEquals(292559045, x &= (x&((-2401110739)^((tmp = 630802904, tmp)^(((1012634447.0346229)+x)%((tmp = -1240091095, tmp)%(x/(-1483936527)))))))); - assertEquals(0, x %= x); - assertEquals(0, x /= (tmp = 613145428.3653506, tmp)); - assertEquals(0, x /= ((x-(tmp = 3116638456, tmp))*(-973300716))); - assertEquals(0, x %= (tmp = -1794741286.0464535, tmp)); - assertEquals(0, x &= x); - assertEquals(0, x >>= (-551370105.0746605)); - assertEquals(-1471996874, x ^= ((2822970422.2331414)-x)); - assertEquals(-277914313, x |= (tmp = -818980601.2544096, tmp)); - assertEquals(-34, x >>= x); - assertEquals(305422768, x -= (-305422802)); - assertEquals(-2406146240, x += (tmp = -2711569008, tmp)); - assertEquals(1073745408, x &= (tmp = -3046625618, tmp)); - assertEquals(1073745408, x <<= ((-1234108306.7646303)<<((-233519302)|x))); - assertEquals(1073745408, x %= (tmp = 1898831268, tmp)); - assertEquals(1073745408, x <<= (((tmp = 3089406038, tmp)/x)&(-2960027680))); - assertEquals(65536, x >>>= (2858188366)); - assertEquals(128, x >>>= ((-2640257239.857275)%((tmp = -3185405235.3177376, tmp)*x))); - assertEquals(128, x >>>= x); - assertEquals(128, x -= (x&(x-(tmp = -247588018, tmp)))); - assertEquals(81616906825.07776, x *= (tmp = 637632084.57092, tmp)); - assertEquals(78860097686.07776, x -= (((1507215684)^((709254783)+(((x<>>x)-((2920546109.72129)+x))); - assertEquals(-2879412281.721283, x += ((-1662428756)>>>(tmp = -1928491386.6926208, tmp))); - assertEquals(67403845, x &= (tmp = 2921644117, tmp)); - assertEquals(16850961, x >>>= (((-1039328365)>>>(tmp = -768615112, tmp))<<((1037261855)*(tmp = -2906902831.4797926, tmp)))); - assertEquals(0, x ^= x); - assertEquals(0, x *= ((-2729056530)/((-1776175111)%(1493002300.4604707)))); - assertEquals(0, x *= (tmp = 370696035.22912216, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x |= ((((((tmp = -1541196993, tmp)^x)/(854730380.1799632))/(2879117705.492209))+((((-2892068577)^(-2460614446.1044483))>>>((743413943)<<(-1285280084.4220598)))/(tmp = -1719994579.5141463, tmp)))%(((((tmp = 2522797851.088227, tmp)<<(tmp = 2257160597.1538725, tmp))/(-680406007))&((x>>>(tmp = -260350730, tmp))^(tmp = 1920522110.852598, tmp)))>>(-697620442)))); - assertEquals(0, x &= x); - assertEquals(-591399642.958673, x += (x-(tmp = 591399642.958673, tmp))); - assertEquals(27, x >>>= (tmp = -726721317.2109983, tmp)); - assertEquals(-2043736843, x -= (2043736870)); - assertEquals(-3991674, x >>= (tmp = 1098126089, tmp)); - assertEquals(-997919, x >>= ((x%(((x*(((-1497329257.1781685)%(2334511329.2690516))/(-3072526140.6635056)))+(-1843998852))-(tmp = 240300314.34070587, tmp)))+(714080860.6032693))); - assertEquals(-0, x %= x); - assertEquals(NaN, x /= x); - assertEquals(0, x >>= (tmp = 538348328.5363884, tmp)); - assertEquals(0, x *= (800317515)); - assertEquals(0, x -= x); - assertEquals(0, x >>= (984205514)); - assertEquals(857282491, x += (tmp = 857282491, tmp)); - assertEquals(587792897, x &= (tmp = 2951307845.164059, tmp)); - assertEquals(595301269, x |= (tmp = 24285588.90314555, tmp)); - assertEquals(1190602538, x += x); - assertEquals(0, x -= x); - assertEquals(-442423060, x |= ((x^((x-(tmp = 2342497475.637024, tmp))%(-1900074414.7678084)))|((tmp = 1932380130, tmp)%(x%(2291727569.817062))))); - assertEquals(-442423060, x %= (((tmp = 703479475.545413, tmp)>>(x-x))<<(2435723056.753845))); - assertEquals(1, x /= x); - assertEquals(0, x >>= x); - assertEquals(-1265317851, x |= (tmp = -1265317851, tmp)); - assertEquals(-2, x >>= (-2015895906.8256726)); - assertEquals(-0, x %= x); - assertEquals(-0, x %= (((1219237746)+(284683029))*(((tmp = 2288119628, tmp)|(-404658161.2563329))*(-265228691.74142504)))); - assertEquals(1039509109, x -= (-1039509109)); - assertEquals(2079018218, x += x); - assertEquals(-1979.9362673719077, x /= ((3219723500)>>x)); - assertEquals(-62, x >>= ((x/(326466691))*(tmp = -607654070, tmp))); - assertEquals(-45, x |= (tmp = -2954888429.549882, tmp)); - assertEquals(-1180929712, x &= (3114037588.570232)); - assertEquals(815550480, x &= (-2302684143.3378315)); - assertEquals(815550480, x %= (-2177479570)); - assertEquals(815550480, x %= (tmp = 2895822167, tmp)); - assertEquals(815550480, x %= (-1247621230.5438688)); - assertEquals(283929811, x -= ((tmp = 251831053.17096448, tmp)|((tmp = 1140463506.004994, tmp)+(tmp = -743224673.546309, tmp)))); - assertEquals(1825767424, x <<= (((tmp = 1732353599, tmp)^(tmp = 658726044, tmp))>>>((-2827889370.932477)%(tmp = 1950139204.3291233, tmp)))); - assertEquals(1828450414, x |= (tmp = 1618538606, tmp)); - assertEquals(0, x <<= (-2411670689.045702)); - assertEquals(0, x <<= (-27744888.428537607)); - assertEquals(-0, x /= (tmp = -1597552450, tmp)); - assertEquals(0, x >>>= (((2165722776.7220936)>>>(tmp = 1233069931, tmp))>>>(-1120420811))); - assertEquals(-0, x *= ((tmp = -1505252656, tmp)>>((((3035637099.6156535)&((467761577.7669761)>>(-361034537)))^(tmp = -2347994840.6541123, tmp))*(tmp = -2191739821, tmp)))); - assertEquals(0, x &= (795727404.0738752)); - assertEquals(-0, x *= (tmp = -3125944685.3991394, tmp)); - assertEquals(-0, x *= (x&x)); - assertEquals(0, x >>= ((tmp = -2045709233, tmp)^x)); - assertEquals(NaN, x /= (x>>(x/(3102894071)))); - assertEquals(NaN, x += ((tmp = 2149079756.8941655, tmp)-(tmp = 810121645.305179, tmp))); - assertEquals(0, x >>>= (-859842989)); - assertEquals(0, x >>>= (tmp = 2530531143.9369526, tmp)); - assertEquals(0, x >>= (((-932981419.6254237)|(tmp = 1591591715, tmp))>>>(x+((3149795006)>>>(tmp = 613352154, tmp))))); - assertEquals(-4294967295, x -= ((((-2289331668)%(-282648480.0078714))>>(-1373720705.5142756))>>>((tmp = 15511563.517014384, tmp)/(360279080)))); - assertEquals(1, x &= x); - assertEquals(0, x >>= (x^(-2791872557.5190563))); - assertEquals(0, x &= ((tmp = 336466956.7847167, tmp)>>((1235728252.053619)|(x<<((1828176636.13488)%x))))); - assertEquals(-0, x *= (-364042830.8894656)); - assertEquals(0, x >>>= x); - assertEquals(-1675298680, x |= ((2323049541.321387)+(296619075))); - assertEquals(-0, x %= x); - assertEquals(-1583048579.4420977, x += (-1583048579.4420977)); - assertEquals(0, x -= x); - assertEquals(-2, x ^= ((603171992.0545617)/(((-271888695.718297)%(tmp = -400159585, tmp))^((((tmp = 1536123971, tmp)-(tmp = -2310418666.6243773, tmp))|((tmp = 2242779597.1219435, tmp)<<(tmp = 1758127684.4745512, tmp)))/x)))); - assertEquals(-2, x &= (x&x)); - assertEquals(0, x &= ((tmp = -1098806007.4049063, tmp)/(((2862384059.3229523)/((((tmp = -92960842, tmp)-(x>>(tmp = 1244068344.2269042, tmp)))&x)*(tmp = -1919148313, tmp)))<<(-2486665929)))); - assertEquals(0, x &= x); - assertEquals(-1441272634.582818, x -= (1441272634.582818)); - assertEquals(-3, x >>= (tmp = 3186393693.7727594, tmp)); - assertEquals(-1206855850, x ^= (((tmp = 607979495.303539, tmp)-(tmp = -2480131951, tmp))^(x*((tmp = 1324153477, tmp)/((1248126288)+(x|(1917331780.0741704))))))); - assertEquals(-1206855853, x ^= (x>>>(653288765.1749961))); - assertEquals(-1206857725, x &= (3149461539.6019173)); - assertEquals(3088109571, x >>>= (x*(x<<(tmp = 1543540084, tmp)))); - assertEquals(536903680, x &= (tmp = 644851760, tmp)); - assertEquals(536903674.312194, x += (((-3183290076)-((tmp = 40738191.12097299, tmp)-x))/((x>>>(3151371851.9408646))^(tmp = 472698205.22445416, tmp)))); - assertEquals(2127424750.0506563, x -= (tmp = -1590521075.7384624, tmp)); - assertEquals(2127424750.0506563, x %= (tmp = 3027273433.361373, tmp)); - assertEquals(0, x >>= (x>>(1445204441.702043))); - assertEquals(NaN, x %= (x<>>= (tmp = -979481631.33442, tmp)); - assertEquals(0, x >>= x); - assertEquals(0, x &= (((x%((((((tmp = 1657446354.6820035, tmp)>>(-1916527001.2992697))/x)>>(tmp = 1450467955, tmp))&(277676820))+(x/(-945587805))))/((tmp = -690095354, tmp)^x))+(tmp = -2651195021, tmp))); - assertEquals(0, x <<= (752343428.2934296)); - assertEquals(0, x /= (tmp = 3022310299, tmp)); - assertEquals(0, x >>= (x%((388245402)>>>x))); - assertEquals(NaN, x %= x); - assertEquals(NaN, x %= ((tmp = 1205123529.8649468, tmp)>>>(-2848300932))); - assertEquals(0, x >>= ((x>>>x)<<(tmp = 487841938, tmp))); - assertEquals(0, x *= (((273436000.9463471)|(tmp = 141134074.27978027, tmp))^(tmp = 1220326800.7885802, tmp))); - assertEquals(1525600768, x |= (((x^(-2674777396))-(tmp = 1966360716.3434916, tmp))<<(794782595.9340223))); - assertEquals(761927595, x %= (tmp = -763673173, tmp)); - assertEquals(1.1353588586934338, x /= ((x&((-1897159300.4789193)*(-348338328.0939896)))&(978680905.6470605))); - assertEquals(8.631173314966319e-10, x /= (1315416592)); - assertEquals(0, x >>= ((tmp = -2581239435, tmp)-((-628818404.1122074)<>= (tmp = 80518779.81608999, tmp)); - assertEquals(1953477932.8046472, x += (tmp = 1953477932.8046472, tmp)); - assertEquals(1953477932, x >>= (tmp = 3025539936, tmp)); - assertEquals(1953477932, x -= ((-2675119685.8812313)>>(x/(-1808264410.9754841)))); - assertEquals(1292620430, x += ((-660857502)%((((tmp = -698782819, tmp)%(tmp = 2847304199, tmp))<<(-2423443217.1315413))+x))); - assertEquals(78895, x >>>= x); - assertEquals(2, x >>= x); - assertEquals(2, x <<= (tmp = 1313641888.8301702, tmp)); - assertEquals(1857416935.2532766, x += (tmp = 1857416933.2532766, tmp)); - assertEquals(-1677721600, x <<= (tmp = -2482476902, tmp)); - assertEquals(309226853.62854385, x -= (tmp = -1986948453.6285439, tmp)); - assertEquals(33965156, x &= (2409088742)); - assertEquals(Infinity, x /= (x-(x<<((x/(tmp = -3106546671.536726, tmp))/((tmp = 2695710176, tmp)-((((-2102442864)&(857636911.7079853))/x)%(-65640292))))))); - assertEquals(1270005091, x |= (tmp = 1270005091.0081215, tmp)); - assertEquals(1270005091, x %= (tmp = -1833876598.2761571, tmp)); - assertEquals(158750636, x >>>= x); - assertEquals(-1000809106.0879555, x -= (tmp = 1159559742.0879555, tmp)); - assertEquals(72400936, x &= ((2448271389.3097963)%(tmp = 1517733861, tmp))); - assertEquals(282816, x >>= x); - assertEquals(282816, x %= (tmp = 3192677386, tmp)); - assertEquals(0.00021521351827207216, x /= (1314118194.2040696)); - assertEquals(Infinity, x /= (((tmp = 2822091386.1977024, tmp)&x)%(tmp = -3155658210, tmp))); - assertEquals(NaN, x %= (-359319199)); - assertEquals(0, x >>>= (((tmp = -2651558483, tmp)-(x<<(tmp = 2537675226.941645, tmp)))<<(tmp = 667468049.0240343, tmp))); - assertEquals(-0, x *= (tmp = -2827980482.12998, tmp)); - assertEquals(-0, x %= (((tmp = -689972329.3533998, tmp)>>>x)|(tmp = -7488144, tmp))); - assertEquals(0, x >>>= x); - assertEquals(0, x |= x); - assertEquals(-2410373675.2262926, x -= (2410373675.2262926)); - assertEquals(1840423, x >>= ((-1081642113)^x)); - assertEquals(-4829451429403412, x *= (-2624098606.35485)); - assertEquals(-94552231, x %= (tmp = -97015883, tmp)); - assertEquals(-94433287, x ^= (((tmp = -2297735280, tmp)&(((tmp = 2261074987.7072973, tmp)%((((2565078998)^(-2573247878))|x)|(((tmp = -2120919004.7239416, tmp)>>(tmp = -579224101, tmp))>>>(1905808441))))*(x|(3149383322))))>>(542664972))); - assertEquals(0, x ^= (x<<(tmp = -3112569312, tmp))); - assertEquals(0, x <<= (-2141934818.7052917)); - assertEquals(0, x >>= (tmp = -2539525922, tmp)); - assertEquals(-434467613, x ^= (tmp = -434467613, tmp)); - assertEquals(-274792709, x |= (1233452601.462551)); - assertEquals(-274726917, x |= (-2130333750)); - assertEquals(-272629761, x |= (-1516071602.5622227)); - assertEquals(-272629761, x |= ((tmp = 3012131694, tmp)&((tmp = -2595342375.8674774, tmp)-((tmp = -2710765792, tmp)>>>((x-(tmp = 2397845540, tmp))+(2496667307)))))); - assertEquals(-4194305, x |= (1343705633.165825)); - assertEquals(4190207, x >>>= ((tmp = 276587830, tmp)*((tmp = -1517753936, tmp)>>x))); - assertEquals(0, x >>= (x|((2247486919)-((-1664642412.4710495)*((((tmp = -358185292.17083216, tmp)-(tmp = -1472193444, tmp))*(tmp = 2699733752, tmp))&((x|(x<<(1137610148.1318119)))>>(((375089690.8764564)*x)&(tmp = 859788933.9560187, tmp)))))))); - assertEquals(0, x %= (3080673960)); - assertEquals(0, x >>>= (1328846190.1963305)); - assertEquals(1249447579, x |= (-3045519717.580775)); - assertEquals(-0.8743931060971377, x /= (-1428931187)); - assertEquals(1, x |= ((tmp = -1756877535.7557893, tmp)/((-142900015.93200803)<<(1414557031.347334)))); - assertEquals(759627265, x ^= (759627264.0514802)); - assertEquals(741823, x >>= (1106391210)); - assertEquals(610451, x &= ((x>>>((919849416)+((tmp = -427708986, tmp)^((x%x)|(tmp = -2853100288.932063, tmp)))))*x)); - assertEquals(372650423401, x *= x); - assertEquals(410404493, x >>>= ((((-1425086765)>>>x)>>((2813118707.914771)>>(-424850240)))^x)); - assertEquals(120511585729013, x *= ((tmp = -1889454669, tmp)>>>x)); - assertEquals(120513295294304.22, x -= (tmp = -1709565291.2115698, tmp)); - assertEquals(6164, x >>>= ((2244715719.397763)^(tmp = -741235818.6903033, tmp))); - assertEquals(937572790.468221, x -= (tmp = -937566626.468221, tmp)); - assertEquals(937572790, x |= ((2129102867.156146)*(x%x))); - assertEquals(32, x &= ((2700124055.3712993)>>>((1977241506)>>>(-2915605511)))); - assertEquals(32, x %= (tmp = -2513825862, tmp)); - assertEquals(0, x <<= (-1379604802)); - assertEquals(0, x >>>= (tmp = -1033248759, tmp)); - assertEquals(-1151517050, x ^= (3143450246)); - assertEquals(-180577, x |= ((738373819.4081701)^(-357134176))); - assertEquals(-0, x %= x); - assertEquals(-2086887759, x |= (tmp = 2208079537, tmp)); - assertEquals(-2, x >>= (1460216478.7305799)); - assertEquals(-2, x %= ((-1979700249.0593133)^(-3156454032.4790583))); - assertEquals(-256, x <<= ((1810316926)>>>(tmp = 414362256, tmp))); - assertEquals(-1, x >>= (((((((-1616428585.595561)*((tmp = 2574896242.9045777, tmp)|(86659152.37838173)))>>(((tmp = 2476869361, tmp)&((x+((tmp = -2445847462.1974697, tmp)>>(tmp = -1960643509.5255682, tmp)))+(x|(((((2231574372.778028)|(tmp = 1824767560, tmp))>>>((1108035230.2692142)|(tmp = 2354035815, tmp)))/((tmp = -2602922032, tmp)>>(-925080304.7681987)))-x))))-(x>>x)))>>>((tmp = 751425805.8402164, tmp)|(tmp = 1165240270.3437088, tmp)))-x)*(2870745939))-(x>>>((tmp = 2986532631.405425, tmp)>>>(((tmp = 2547448699, tmp)+(((((x<<(((((-2756908638.4197435)>>>(3134770084))-(-1147872642.3756688))%(x*(tmp = -282198341.6600039, tmp)))+(-770969864.2055655)))+((-2725270341)^x))/(-3093925722))>>(x&x))>>((tmp = -2705768192, tmp)>>>(((tmp = 577253091.6042917, tmp)/(((x&(((((x+x)>>>(-1000588972))/(x&(717414336)))^(tmp = 428782104.21504414, tmp))>>>(1084724288.953223)))%(tmp = -2130932217.4562194, tmp))&x))-(-286367389)))))+((x>>(tmp = 2001277117, tmp))>>((tmp = 1028512592, tmp)^((tmp = 2055148650, tmp)+((tmp = 1490798399, tmp)/(tmp = -2077566434.2678986, tmp)))))))))); - assertEquals(-1, x |= (tmp = 1542129482, tmp)); - assertEquals(-671816743, x &= (tmp = -671816743.9111726, tmp)); - assertEquals(-1840333080, x -= (1168516337)); - assertEquals(-1755382023, x |= ((((tmp = 2625163636.0142937, tmp)>>>((tmp = 1534304735, tmp)^x))-(tmp = -1959666777.9995313, tmp))%x)); - assertEquals(-1750421896, x += (x>>>(tmp = -1364828055.1003118, tmp))); - assertEquals(-72864007, x %= (tmp = 239651127, tmp)); - assertEquals(-72863956, x -= (((tmp = -1103261657.626319, tmp)*((tmp = 2789506613, tmp)+((tmp = 2294239314, tmp)>>>(2588428607.5454817))))>>x)); - assertEquals(-170337477, x -= (tmp = 97473521, tmp)); - assertEquals(-170337477, x |= (((tmp = 246292300.58998203, tmp)/(((tmp = -2664407492, tmp)|((-2416228818)^(tmp = 909802077, tmp)))%(tmp = 532643021.68109465, tmp)))/(tmp = 1015597843.8295637, tmp))); - assertEquals(1, x >>>= (((tmp = -2247554641.7422867, tmp)/(1186555294))%(tmp = -785511772.3124621, tmp))); - assertEquals(1188939891.668705, x -= (tmp = -1188939890.668705, tmp)); - assertEquals(1188939891, x &= x); - assertEquals(1188413555, x &= (((tmp = -372965330.5709038, tmp)%(((tmp = 3108909487, tmp)|(x^(-1056955571.9951684)))^(-1549217484.009048)))/(x>>>(1403428437.9368362)))); - assertEquals(-0.7343692094664643, x /= (-1618278026.4758227)); - assertEquals(0, x -= x); - assertEquals(0, x &= (-2701762139.7500515)); - assertEquals(0, x >>>= (((-1692761485.2299166)^x)+(tmp = -1221349575.938864, tmp))); - assertEquals(0, x <<= ((2148160230)<>(x/((tmp = -1921545150.1239789, tmp)/(-3015379806))))); - assertEquals(0, x <<= x); - assertEquals(NaN, x /= (x|x)); - assertEquals(0, x >>= (tmp = -2265988773, tmp)); - assertEquals(-0, x *= (((x<<(-928153614))<<(-989694208))^(2544757713.481016))); - assertEquals(0, x >>= ((tmp = 578009959.5299993, tmp)>>x)); - assertEquals(0, x /= ((((tmp = 412689800.0431709, tmp)&(1630886276))*(tmp = 2028783080.7296097, tmp))/x)); - assertEquals(0, x |= ((((x*(-2197198786))>>((2719887264.761987)<<(tmp = 2253246512, tmp)))-(tmp = -150703768.07045603, tmp))/(((-3160098146)%(((((1486098047.843547)>>(((tmp = -593773744.1144242, tmp)&(x<<(2651087978)))|((-680492758.930413)>>(tmp = 88363052.13662052, tmp))))<>= ((1935211663.5568764)>>(x-(tmp = 2116580032, tmp)))); - assertEquals(-1725272693, x ^= (tmp = -1725272693, tmp)); - assertEquals(313683, x >>>= (-1782632531.2877684)); - assertEquals(0.009772287443565642, x /= (tmp = 32099240, tmp)); - assertEquals(-647945916.9902277, x += (-647945917)); - assertEquals(3647021380, x >>>= ((((((((2470411371.688199)<>x)-(x>>>((tmp = 1750747780, tmp)/x)))-x)<<(tmp = -2666186351.695101, tmp))^(((tmp = 2749205312.6666174, tmp)%x)&(2069802830.360536)))<<(tmp = 6051917.9244532585, tmp))); - assertEquals(-647939220, x |= ((x>>>((tmp = -2980404582.794245, tmp)>>>(-996846982)))^x)); - assertEquals(-572178450, x |= ((-800571300.3277931)+(tmp = 2084365671, tmp))); - assertEquals(1172311208, x &= (x&((tmp = -1207487657.8953774, tmp)^x))); - assertEquals(12176516458994, x += ((((tmp = -1534997221, tmp)%(412142731))*((tmp = 2958726303, tmp)>>(1489169839)))+(((-574726407.2051775)>>>(((1772885017)<<(947804536.9958035))>>(-2406844737)))>>x))); - assertEquals(-1480065024, x <<= x); - assertEquals(-1736999042.227129, x += (tmp = -256934018.22712898, tmp)); - assertEquals(-1338699394, x ^= ((((((x%(((tmp = -2551168455.222048, tmp)|(3213507293.930222))/((-1559278033)>>((tmp = 3107774495.3698573, tmp)-(2456375180.8660913)))))*((x*(tmp = 1088820004.8562922, tmp))+((tmp = 1850986704.9836102, tmp)%(tmp = -1226590364, tmp))))*(1786192008))&(((2193303940.310299)%(tmp = 1041726867.0602217, tmp))|((2210722848)/((-1293401295.6714435)&((tmp = 3052430315, tmp)|x)))))>>>(tmp = -2028014470.1524236, tmp))+(((1695818039.0383925)<<((1669068145)*(-2746592133.899276)))<<(tmp = 519092169, tmp)))); - assertEquals(-334674849, x >>= (1170377794)); - assertEquals(-10214, x >>= ((tmp = 1074704264.3712895, tmp)>>>((tmp = -1200860192, tmp)^((tmp = 539325023.4101218, tmp)*((tmp = -588989295, tmp)|x))))); - assertEquals(1384169472, x &= (1384171140)); - assertEquals(1384169472, x >>>= ((tmp = -2161405973.830981, tmp)*(tmp = 2054628644, tmp))); - assertEquals(1610140972, x |= (527961388)); - assertEquals(1073273198, x += ((tmp = -259650225.71344328, tmp)&(tmp = -344359694, tmp))); - assertEquals(65507, x >>= ((x<<((tmp = 2925070713.5245204, tmp)%(x+((tmp = -1229447799, tmp)/(((x/(x|(((-2337139694)|((((((2996268529.7965417)&x)%(((tmp = -1088587413, tmp)>>(-1384104418.90339))>>((tmp = -1643984822.3946526, tmp)+x)))%(((1118125268.4540217)-((((-1975051668.6652594)-(-704573232))+((tmp = 1674952373, tmp)/(tmp = 1321895696.0062659, tmp)))*(tmp = 1820002533.2021284, tmp)))>>>(tmp = -583960746.9993203, tmp)))|((tmp = -2577675508.550925, tmp)&x))/(tmp = 1459790066, tmp)))/(((((1051712301.7804044)&(tmp = -2726396354, tmp))^(tmp = 263937254.18934345, tmp))+(((x^x)*(((tmp = -2289491571, tmp)+x)%(-2239181148)))&x))>>(tmp = -1743418186.3030887, tmp)))))/(tmp = 1475718622, tmp))<>= (x-(tmp = 2300626270, tmp))); - assertEquals(8384512, x <<= (tmp = -1917680820, tmp)); - assertEquals(0, x <<= (2393691134)); - assertEquals(0, x >>= x); - assertEquals(649995936.5853252, x -= (tmp = -649995936.5853252, tmp)); - assertEquals(649995936, x &= x); - assertEquals(-0.33672017582945424, x /= (tmp = -1930374188, tmp)); - assertEquals(-0.33672017582945424, x += (x&((1208055031)^(-2761287670.968586)))); - assertEquals(0, x |= x); - assertEquals(0, x <<= ((-2038368978)/x)); - assertEquals(0, x >>= (x&((tmp = 2481378057.738218, tmp)&(x+(1172701643))))); - assertEquals(0, x <<= ((x*(((((((tmp = 70690601.3046323, tmp)&(((((((((((x+(x+(x^(3118107461))))<<(264682213.41888392))&(tmp = -709415381.8623683, tmp))%(((((-1840054964)>>>(tmp = -405893120.89603686, tmp))|((-625507229)^(3128979265)))>>(x>>((tmp = -2480442390, tmp)*((x>>(tmp = -421414980.88330936, tmp))>>>((tmp = 1850868592, tmp)&(-2948543832.879225))))))|((2986545185)&((tmp = -1947550706, tmp)%(((tmp = 2590238422.1414256, tmp)/(((tmp = -361038812, tmp)>>x)|(((tmp = 1798444068, tmp)|((x&((tmp = -3104542069, tmp)-x))*((tmp = -1158658918, tmp)+((tmp = 2777031040.5552707, tmp)<<(-2816019335.9008327)))))<>>(2521189250))*((tmp = -2533527920, tmp)+(tmp = 1762281307.2162101, tmp)))))))))/x)/(tmp = 1047121955.5357032, tmp))|(((-121292251)<<(x^(x-(tmp = 1420006180, tmp))))%((-2278606219)>>>(((tmp = -1412487726, tmp)&(((((tmp = 253596554.16016424, tmp)/(tmp = 2083376247.0079951, tmp))^(x^((1549116789.8449988)>>>((((-1844170084)^(tmp = 1886066422, tmp))&x)<<(34918329)))))^(tmp = -440805555.3369155, tmp))-x))%(-1936512969)))))+(2911511178.4035435))|(1012059391))|(x>>>(tmp = -2551794626.158037, tmp)))+((2926596072.210515)/(tmp = -280299595.0450909, tmp))))&((tmp = 1501086971, tmp)^(tmp = 2114076983, tmp)))-((-1679390574.1466925)-(941349044)))-((x>>x)>>((-2600539474.2033434)+(tmp = 2567056503.9079475, tmp))))*(tmp = 1285896052, tmp))%(((tmp = 1191465410.7595167, tmp)>>((tmp = -2857472754, tmp)%x))>>>(((tmp = 1960819627.6552541, tmp)&(-2651207221.127376))*((((-687312743)+((x>>x)<>x))))%(tmp = -2063962943, tmp))*x)*(734060600))&(-3049417708)))+(((((1084267726)+((x|x)^((tmp = -1917070472.4858549, tmp)%((690016078.9375831)*x))))%((((((tmp = -2091172769, tmp)%(2532365378))>>>(-871354260))/(tmp = 254167019.07825458, tmp))&(1330216175.9871218))>>(tmp = 1931099207, tmp)))^(-1116448185.2618852))>>((961660080.8135855)/x)))))))>>>(-1486048007.7053368))); - assertEquals(0, x >>= x); - assertEquals(0, x %= (tmp = -1202200444.6506357, tmp)); - assertEquals(-0, x *= (-527500796.4145117)); - assertEquals(0, x >>= (tmp = -2082822707, tmp)); - assertEquals(0, x *= ((-1882398459.290778)>>>x)); - assertEquals(0, x &= (x/(tmp = -1569332286.392817, tmp))); - assertEquals(-390169607, x |= (-390169607.11600184)); - assertEquals(-780339214, x += x); - assertEquals(-780339214, x %= (2765959073)); - assertEquals(-5954, x >>= (tmp = -1900007055, tmp)); - assertEquals(743563420, x &= ((((-1520146483.5367205)|(-2075330284.3762321))-(tmp = -2263151872, tmp))%(-1264641939.957402))); - assertEquals(1487126840, x += (x>>>(((x+((tmp = -1263274491, tmp)>>>x))&(470419048.0490037))%(tmp = -2642587112, tmp)))); - assertEquals(Infinity, x /= (x^x)); - assertEquals(0, x ^= ((tmp = -1436368543, tmp)+(x/(tmp = -1125415374.3297129, tmp)))); - assertEquals(0, x += x); - assertEquals(0, x <<= x); - assertEquals(0, x &= (tmp = 3101147204.2905564, tmp)); - assertEquals(0, x &= (tmp = 2914487586.606511, tmp)); - assertEquals(0, x += x); - assertEquals(0, x -= (((-1738542908.6138556)&(((x+x)-(tmp = -2801153969, tmp))%(tmp = -1206684064.1477358, tmp)))>>((-2575546469.271897)|(tmp = -2573119106, tmp)))); - assertEquals(-1468808707, x ^= (tmp = -1468808707, tmp)); - assertEquals(1357349882, x <<= (tmp = -2808501087.7003627, tmp)); - assertEquals(-572025862, x |= ((((tmp = -2415486246.573399, tmp)/((tmp = -707895732.4593301, tmp)&x))%((-1960091005.0425267)*(972618070.9166157)))-(1649962343))); - assertEquals(327213586796843100, x *= (x%(1337884626))); - assertEquals(42991616, x &= (-2905576654.1280055)); - assertEquals(-26049289585042860, x *= (-605915571.6557121)); - assertEquals(597809748, x >>= ((362850791.077795)/(tmp = 1222777657.4401796, tmp))); - assertEquals(597809748, x |= x); - assertEquals(770065246, x -= ((-711227660)|(tmp = -508554506, tmp))); - assertEquals(593000483097040500, x *= x); - assertEquals(0, x %= x); - assertEquals(0, x <<= (317862995.456813)); - assertEquals(0, x >>= ((tmp = 2518385735, tmp)+((-2973864605.267604)/(-930953312.718833)))); - assertEquals(1227822411, x ^= (x^(1227822411.8553264))); - assertEquals(1090520320, x &= (x+((((-2100097959)>>(x/(tmp = -2002285068, tmp)))/(-364207954.9242482))-((tmp = 2771293106.7927113, tmp)-(tmp = -847237774, tmp))))); - assertEquals(1090520320, x >>= (((((2439492849)<<((-2932672756.2578926)*((743648426.7224461)+((2942284935)<<((x/(((tmp = 886289462.6565771, tmp)+(-459458622.7475352))>>(tmp = -785521448.4979162, tmp)))|(tmp = -11630282.877367258, tmp))))))-(tmp = -647511106.9602091, tmp))^x)&x)); - assertEquals(115944291.48829031, x %= (243644007.12792742)); - assertEquals(1, x /= x); - assertEquals(0, x >>>= ((tmp = -819782567, tmp)%(tmp = 2774793208.1994505, tmp))); - assertEquals(0, x >>= (tmp = 721096000.2409859, tmp)); - assertEquals(0, x &= ((x%x)%x)); - assertEquals(-0, x *= ((-1670466344)<>= (-677240844.904707)); - assertEquals(NaN, x %= (((((-1575993236.6126876)/(-2846264078.9581823))^((((-2220459664)-(((-1809496020)>>>(tmp = -3015964803.4566207, tmp))&x))/(tmp = -3081895596.0486784, tmp))>>>(x&x)))%(x^(-1338943139)))^(x-((((2074140963.2841332)^(tmp = 1878485274, tmp))%(((x/(-2568856967.6491556))^x)<<((x+x)^((((2139002721)|(x<<(-1356174045.840464)))>>x)-(tmp = 2305062176, tmp)))))>>>(((((x<<(tmp = -1663280319.078543, tmp))-((1498355849.4158854)-((-1321681257)>>>(tmp = -1321415088.6152222, tmp))))^(-2266278142.1584673))+(858538943))&((((x-((x|(((tmp = -1576599651, tmp)+((tmp = 1595319586, tmp)&(-2736785205.9203863)))>>((x+((-1856237826)+x))<<(tmp = -1590561854.3540869, tmp))))^(((-41283672.55606127)&(tmp = 2971132248, tmp))+x)))/(-849371349.1667476))%(x*((-1705070934.6892798)>>>x)))<<((2418200640)*x))))))); - assertEquals(0, x >>>= (tmp = 664214199.5283061, tmp)); - assertEquals(0, x <<= ((-2827299151)<<(1815817649))); - assertEquals(1405772596, x |= (tmp = 1405772596, tmp)); - assertEquals(-1483422104, x <<= (-2791499935.6822596)); - assertEquals(-45271, x >>= (1740128943.4254808)); - assertEquals(-45271, x <<= ((2072269957)-((tmp = -2553664811.4472017, tmp)*(tmp = -2502730352, tmp)))); - assertEquals(1192951471.6745887, x -= (-1192996742.6745887)); - assertEquals(-353370112, x <<= (tmp = -1410280844, tmp)); - assertEquals(0, x ^= (x%((2754092728)*(-1017564599.1094015)))); - assertEquals(-2662096003.2397957, x -= (tmp = 2662096003.2397957, tmp)); - assertEquals(-2587094028.50764, x -= (tmp = -75001974.7321558, tmp)); - assertEquals(6693055512339889000, x *= x); - assertEquals(897526784, x %= (x-((tmp = 897526813, tmp)%(-1525574090)))); - assertEquals(7011928, x >>= ((-440899641.344357)%x)); - assertEquals(8382047686388683, x += (x*(1195398423.8538609))); - assertEquals(16764095372777366, x += x); - assertEquals(16764096859576696, x -= (tmp = -1486799329.7207344, tmp)); - assertEquals(16764099774187724, x += (2914611029)); - assertEquals(16764102926624664, x -= (-3152436939.724612)); - assertEquals(-538220648, x |= x); - assertEquals(269110324, x /= (((-2114698894.6014318)/(tmp = 767687453, tmp))>>(623601568.1558858))); - assertEquals(256, x >>= x); - assertEquals(-293446891, x += (x+(-293447403))); - assertEquals(119, x >>>= ((1759400753)>>(2481263470.4489403))); - assertEquals(14, x >>= (762849027.89693)); - assertEquals(16, x += (x&(x>>(1104537666.1510491)))); - assertEquals(-12499808227.980995, x *= (tmp = -781238014.2488122, tmp)); - assertEquals(1, x /= x); - assertEquals(1, x &= x); - assertEquals(0, x >>>= ((tmp = 1513381008, tmp)|(tmp = 1593208075.7259543, tmp))); - assertEquals(0, x &= (-788154636.2843091)); - assertEquals(-0, x /= (tmp = -2124830879, tmp)); - assertEquals(0, x &= (934237436)); - assertEquals(0, x |= x); - assertEquals(-79370942.97651315, x += (-79370942.97651315)); - assertEquals(-79370942.97651315, x %= ((tmp = -2683255523, tmp)<<(tmp = 2323123280.287587, tmp))); - assertEquals(-79370942, x |= x); - assertEquals(0.05861647801688159, x /= (-1354072177.061561)); - assertEquals(0, x <<= (((((((tmp = 1989257036, tmp)&(tmp = 1565496213.6578887, tmp))&x)&(tmp = -2798643735.905287, tmp))&(2354854813.43784))%(tmp = 1118124748, tmp))<<((tmp = 2453617740, tmp)*(((tmp = 1762604500.492329, tmp)<<(-2865619363))%(((2474193854.640994)|((tmp = 1425847419.6256948, tmp)|(((-1271669386)%((x|((tmp = -2059795445.3607287, tmp)+x))*(x*x)))>>>(tmp = -2997360849.0750895, tmp))))/(tmp = 2326894252, tmp)))))); - assertEquals(0, x >>>= ((-671325215)/((-727408755.8793397)>>(tmp = 315457854, tmp)))); - assertEquals(0, x >>= (x&x)); - assertEquals(0, x <<= ((x/x)>>>(((((x&x)-((x*(((tmp = -2689062497.0087833, tmp)^x)/((-1465906334.9701924)<<(tmp = -349000262, tmp))))*x))%(1630399442.5429945))*x)+((tmp = 605234630, tmp)%(tmp = 2325750892.5065155, tmp))))); - assertEquals(0, x |= (x%((x>>(((((tmp = 1622100459, tmp)<>((x<>>(-470336002.1246581))|((tmp = 871348531, tmp)*x))>>(2866448831.23781))))-((2352334552)-(-562797641.6467373))))-(x^(tmp = -681731388, tmp))))); - assertEquals(0, x <<= (tmp = -1358347010.3729038, tmp)); - assertEquals(-260967814, x |= ((tmp = -260967814.45976686, tmp)%(tmp = 1126020255.1772437, tmp))); - assertEquals(NaN, x %= ((((tmp = 3176388281, tmp)<<(tmp = 611228283.2600244, tmp))>>>((tmp = 3068009824, tmp)+(tmp = 2482705111, tmp)))>>>((tmp = -750778285.2580311, tmp)>>>x))); - assertEquals(0, x <<= (x>>>x)); - assertEquals(0, x /= (1238919162)); - assertEquals(0, x >>= (x^x)); - assertEquals(0, x &= (-2137844801)); - assertEquals(0, x >>>= (x^(x*(-1774217252)))); - assertEquals(0, x >>= x); - assertEquals(0, x |= x); - assertEquals(0, x &= (x<<(tmp = 2791377560, tmp))); - assertEquals(-1330674638.8117397, x += (tmp = -1330674638.8117397, tmp)); - assertEquals(353, x >>>= (-212202857.4320326)); - assertEquals(353, x ^= ((((x+(tmp = 1448262278, tmp))-(-3141272537))>>(tmp = 1116596587.7832575, tmp))>>>((x-(((tmp = 303953098, tmp)>>>((tmp = 691514425, tmp)/((176223098)*(((2876180016)%(-1805235275.892374))|x))))<<(((tmp = 528736141.838547, tmp)^(2556817082))*(2898381286.2846575))))|((-1445518239)&(tmp = 389789481.9604758, tmp))))); - assertEquals(0, x >>>= (-227376461.14343977)); - assertEquals(0, x <<= (tmp = -2575967504, tmp)); - assertEquals(0, x <<= (x^((-2668391896)>>((x+(tmp = 598697235.9205595, tmp))+((((-2105306785)|((-1174912319.794015)>>>(x-((148979923)%((((tmp = -2459140558.4436393, tmp)|(1265905916.494016))^(tmp = 1213922357.2230597, tmp))|(1028030636))))))%x)+(((tmp = 1393280827.0135512, tmp)^((tmp = 1210906638, tmp)+(-1572777641.1396031)))<>>x)&(tmp = 2197525295, tmp))))); - assertEquals(-2045706240, x ^= (((522049712.14743733)>>(tmp = -2695628092, tmp))>>>(tmp = -2603972068, tmp))); - assertEquals(2249261056, x >>>= x); - assertEquals(-33291, x |= ((((1891467762)<<(184547486.213719))-((458875403.50689447)^(((x&(x*x))|x)%(-3127945140))))|(-100765232))); - assertEquals(-33291, x %= (1460486884.1367688)); - assertEquals(-1, x >>= (tmp = -2667341441, tmp)); - assertEquals(-3.6289151568259606e-10, x /= (tmp = 2755644474.4072013, tmp)); - assertEquals(-3.6289151568259606e-10, x %= (tmp = 1186700893.0751028, tmp)); - assertEquals(0, x <<= (tmp = -1199872107.9612694, tmp)); - assertEquals(371216449, x ^= ((tmp = 371324611.1357789, tmp)&(x-(x|((tmp = -518410357, tmp)>>((tmp = 687379733, tmp)/x)))))); - assertEquals(0.3561383159088311, x /= (((((x%(((((-2293101242)%((((495316779)/x)-((-3198854939.8857965)>>>((tmp = -288916023, tmp)-(x^(tmp = -2504080119.431858, tmp)))))^(-1201674989)))-((2965433901)*(405932927)))/((1974547923)|(tmp = 534069372, tmp)))-(x-((x+(-1258297330))%x))))<<(((-2648166176.4947824)^(-3043930615))&(1550481610)))<<(tmp = -3118264986.743822, tmp))<>= ((tmp = -731454087.0621192, tmp)>>>x)); - assertEquals(-2.7207928474520667e-9, x /= (((x<<(x|((tmp = -1650731700.9540024, tmp)/(tmp = -677823292, tmp))))^((((((1972576122.928667)>>x)%(2952412902.115453))<<((-2888879343)+(tmp = -425663504, tmp)))>>>(((((tmp = 1089969932, tmp)>>>(x|((-2088509661)/(1131470551))))>>>x)+x)|(tmp = 955695979.7982506, tmp)))|(((((tmp = 826954002.6188571, tmp)^(2016485728))|((x/(((x<<(tmp = 2493217141, tmp))/(-2259979800.997408))-(tmp = -427592173.41389966, tmp)))%(((-471172918)/x)>>>((383234436.16425097)&(tmp = 1664411146.5308032, tmp)))))*(tmp = 1863669754.7545495, tmp))*(x>>(2062197604)))))>>>((x-(2624545856))*(tmp = 1025803102, tmp)))); - assertEquals(0, x >>= ((tmp = 1068702028, tmp)*(296106770))); - assertEquals(0, x ^= (x/x)); - assertEquals(85359536, x ^= (((x|(((tmp = 740629227, tmp)<<(-1107397366))%((tmp = 2315368172, tmp)>>(((-2269513683)|(-2698795048))+(-396757976)))))*(929482738.803125))^(((-1415213955.4198723)-(tmp = -2885808324, tmp))>>>((tmp = -472842353.85736656, tmp)&(tmp = 1684231312.4497018, tmp))))); - assertEquals(2075131904, x <<= x); - assertEquals(123, x >>>= (x>>>(tmp = 754093009, tmp))); - assertEquals(0, x >>= ((-2690948145)/((1988638799)+x))); - assertEquals(0, x >>>= (tmp = -798849903.2467625, tmp)); - assertEquals(NaN, x %= x); - assertEquals(NaN, x *= (2431863540.4609756)); - assertEquals(484934656, x |= ((-2322193663)*(tmp = -2754666771, tmp))); - assertEquals(-82505091404694530, x *= (tmp = -170136513, tmp)); - assertEquals(-82505090515370620, x += ((-148762237)&(tmp = 889417717, tmp))); - assertEquals(-908221124, x %= (tmp = -2346393300, tmp)); - assertEquals(-1242515799, x ^= (2083328917)); - assertEquals(-1126056310271520600, x *= ((((tmp = -3065605442, tmp)<<(-3012703413))|x)^(-2081329316.4781387))); - assertEquals(-1126056309941068000, x += ((((tmp = 1886925157, tmp)&((tmp = -163003119.31722307, tmp)/((tmp = 2094816076, tmp)>>((tmp = -706947027, tmp)^x))))^((1819889650.5261197)<<(-1641091933)))>>x)); - assertEquals(-1864360191, x |= (((x/x)|x)|x)); - assertEquals(-1864360191, x &= x); - assertEquals(-3728720382, x += x); - assertEquals(1042663165, x ^= (535165183.4230335)); - assertEquals(2644530017.8833704, x += (1601866852.8833704)); - assertEquals(-574949401, x |= ((tmp = 943193254.5210983, tmp)^((x%(tmp = -2645213497, tmp))*(-1904818769)))); - assertEquals(1763223578, x ^= ((x^(tmp = -2244359016, tmp))^(tmp = 320955522, tmp))); - assertEquals(-1.9640961474334235, x /= (tmp = -897727731.0502782, tmp)); - assertEquals(1, x >>>= (x-(-3183031393.8967886))); - assertEquals(1, x &= (tmp = 1732572051.4196641, tmp)); - assertEquals(1, x >>= (-1642797568)); - assertEquals(-2339115203.3140306, x += (-2339115204.3140306)); - assertEquals(1955852093, x ^= (((((-1469402389)/(-2648643333.1454573))>>>x)<<(x/x))>>x)); - assertEquals(-965322519, x ^= (3001399252)); - assertEquals(-2139727840, x &= (tmp = 2298411812.964484, tmp)); - assertEquals(2103328, x &= (tmp = -2488723009, tmp)); - assertEquals(1799011007, x |= (tmp = -2498057537.226923, tmp)); - assertEquals(1799011007, x |= ((-308193085)>>>x)); - assertEquals(1799011007, x |= x); - assertEquals(818879107, x ^= (1542823996.423564)); - assertEquals(-2601416919234843600, x *= ((-2357923057.076759)-x)); - assertEquals(-2601416920481796600, x -= (x|(tmp = -3048039765, tmp))); - assertEquals(-33690112, x <<= x); - assertEquals(1039491072, x &= (tmp = 1039491474.3389125, tmp)); - assertEquals(126891, x >>= (-3079837011.6151257)); - assertEquals(-163191923097543, x *= (((tmp = -2847221258.4048786, tmp)*(x-(tmp = 1527622853.5925639, tmp)))^x)); - assertEquals(753616551, x ^= (-946895202)); - assertEquals(-347691264, x <<= (tmp = -433184408.33790135, tmp)); - assertEquals(0, x <<= (x|(tmp = -1911731462.6835637, tmp))); - assertEquals(-0, x *= (tmp = -2616154415.1662617, tmp)); - assertEquals(0, x >>= x); - assertEquals(0, x -= x); - assertEquals(0, x *= (2272504250.501526)); - assertEquals(0, x ^= x); - assertEquals(NaN, x %= x); - assertEquals(0, x >>>= (2475346113)); - assertEquals(NaN, x /= (((x+(-2646140897))&(((tmp = 1039073714.142481, tmp)-x)*x))|(x*(((-1277822905.773948)>>(tmp = 2035512354.2400663, tmp))*(77938193.80013895))))); - assertEquals(0, x ^= (x<<(tmp = 2491934268, tmp))); - assertEquals(0, x &= (tmp = 569878335.4607931, tmp)); - assertEquals(-88575883, x ^= ((453890820.8012209)-((1569189876)%((-1280613677.7083852)^(-1902514249.29567))))); - assertEquals(-88575883, x %= (tmp = 257947563.19206762, tmp)); - assertEquals(-88575881.7863678, x -= ((tmp = 1257547359.029678, tmp)/(x^(tmp = 948265672.821815, tmp)))); - assertEquals(-169, x >>= (tmp = -2530523309.6703596, tmp)); - assertEquals(-1, x >>= x); - assertEquals(-1, x |= x); - assertEquals(131071, x >>>= (-673590289)); -} -f(); diff --git a/implementation-contributed/v8/mjsunit/numops-fuzz-part3.js b/implementation-contributed/v8/mjsunit/numops-fuzz-part3.js deleted file mode 100644 index 7813f918205..00000000000 --- a/implementation-contributed/v8/mjsunit/numops-fuzz-part3.js +++ /dev/null @@ -1,1178 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - var x = 131071; - var tmp = 0; - assertEquals(1117196836, x -= (-1117065765)); - assertEquals(3092236000.7125187, x -= (-1975039164.7125185)); - assertEquals(1, x /= x); - assertEquals(-1599945863, x ^= (tmp = 2695021432.453696, tmp)); - assertEquals(940543782, x ^= (tmp = 2561494111, tmp)); - assertEquals(891400321673221800, x *= (tmp = 947749949.2662871, tmp)); - assertEquals(-1509927296, x >>= ((tmp = 1113290009, tmp)-x)); - assertEquals(-23, x >>= (tmp = 3216989626.7370152, tmp)); - assertEquals(-0, x %= x); - assertEquals(0, x <<= (431687857.15246475)); - assertEquals(-0, x /= (tmp = -1924652745.081665, tmp)); - assertEquals(0, x <<= (1312950547.2179976)); - assertEquals(0, x %= ((tmp = 2110842937.8580878, tmp)|(x<>>= ((((-386879000)-((tmp = -2334036143.9396124, tmp)/((tmp = 965101904.2841234, tmp)<<(((3029227182.8426695)<<((tmp = -464466927, tmp)>>((((((tmp = 849594477.4111787, tmp)^(x&((513950657.6663146)%(x>>>x))))-((2898589263)|x))+(tmp = 2842171258.621288, tmp))>>>(tmp = -3158746843, tmp))<<(tmp = -2891369879, tmp))))-(x-(x&(tmp = -1707413686.2706504, tmp)))))))-(-2860419051))*(-1708418923))); - assertEquals(-328055783, x += ((((2857010474.8010874)|((tmp = -1415997622.320347, tmp)-(-1706423374)))%(tmp = 824357977.1339042, tmp))^(x>>(x|x)))); - assertEquals(-168539902503779140, x *= ((tmp = -1057687018, tmp)<<((1408752963)-(2030056734)))); - assertEquals(-Infinity, x /= ((x-(2232683614.320658))*(((tmp = 195551174, tmp)*((((739595970)>>>(tmp = -2218890946.8788786, tmp))>>>(((tmp = -240716255.22407627, tmp)&(((((1598029916.3478878)|((tmp = -881749732, tmp)+(x>>x)))^(4443059))<<(((tmp = 2453020763, tmp)+((x>>>(tmp = -1904203813, tmp))&(-355424604.49235344)))<<(tmp = 2814696070, tmp)))%((tmp = -250266444, tmp)>>>(((((2710614972)&(((tmp = 910572052.6994087, tmp)^(tmp = -1028443184.3220406, tmp))/((-2718010521)^(tmp = 676361106, tmp))))|x)^(-1326539884))>>(-1573782639.7129154)))))/(tmp = 1923172768, tmp)))>>>(tmp = -2858780232.4886074, tmp)))/((((((-2060319376.353397)%x)>>(tmp = -3122570085.9065285, tmp))/(tmp = -1499018723.8064275, tmp))*((-655257391)<>x)))); - assertEquals(NaN, x += ((3059633304)%((((tmp = 2538190083, tmp)*((tmp = -2386800763.356364, tmp)/x))&(1341370996))%(-2929765076.078223)))); - assertEquals(NaN, x %= ((x&(347774821))>>>(462318570.2578629))); - assertEquals(NaN, x *= ((2829810152.071517)*(tmp = 768565684.6892327, tmp))); - assertEquals(NaN, x -= x); - assertEquals(0, x >>>= (x&(tmp = 1786182552, tmp))); - assertEquals(973967377, x ^= ((tmp = 2115869489.836838, tmp)&(994956497))); - assertEquals(985246427.4230617, x += (11279050.423061728)); - assertEquals(985246427, x &= x); - assertEquals(0, x >>= ((tmp = 1090502660.1867907, tmp)>>((-1599370623.5747645)-(tmp = -1321550958, tmp)))); - assertEquals(0, x %= (tmp = -2386531950.018572, tmp)); - assertEquals(0, x >>>= x); - assertEquals(NaN, x /= x); - assertEquals(0, x >>>= (tmp = -1535987507.682257, tmp)); - assertEquals(-0, x /= (-2570639987)); - assertEquals(-542895632, x |= (tmp = -542895632, tmp)); - assertEquals(-33930977, x >>= (tmp = -861198108.1147206, tmp)); - assertEquals(-0, x %= x); - assertEquals(0, x ^= (x*(-608154714.1872904))); - assertEquals(-140011520, x |= ((tmp = 377418995, tmp)<<((1989575902)>>(tmp = -2558458031.066773, tmp)))); - assertEquals(-140026048, x -= ((((tmp = 1465272774.7540011, tmp)<<((2164701398)<<(tmp = -818119264, tmp)))>>((tmp = -1490486001, tmp)>>(664410099.6412607)))>>(x>>>(((tmp = -2438272073.2205153, tmp)%(tmp = 2142162105.4572072, tmp))-(tmp = 2259040711.6543813, tmp))))); - assertEquals(39214588236996610, x *= (x<<(-401696127.06632423))); - assertEquals(1, x /= x); - assertEquals(0, x %= x); - assertEquals(0, x *= ((tmp = -1709874807.176726, tmp)&(-2786424611))); - assertEquals(-1320474063.3408537, x += (tmp = -1320474063.3408537, tmp)); - assertEquals(88, x >>>= (tmp = -3179247911.7094674, tmp)); - assertEquals(1606348131, x += ((tmp = 1555621121.5726175, tmp)|(-3026277110.9493155))); - assertEquals(200793516, x >>>= x); - assertEquals(-2952688672.1074514, x -= (tmp = 3153482188.1074514, tmp)); - assertEquals(1342278624, x >>>= ((x>>>((tmp = 1264475713, tmp)-(-913041544)))>>>((tmp = 2008379930, tmp)%(tmp = 3105129336, tmp)))); - assertEquals(0, x ^= x); - assertEquals(0, x /= (tmp = 788363717, tmp)); - assertEquals(430466213, x -= (tmp = -430466213, tmp)); - assertEquals(164757385222499550, x *= (tmp = 382741735, tmp)); - assertEquals(164757385222499550, x %= (((tmp = 1974063648, tmp)%((806015603)>>>x))*((tmp = 2836795324, tmp)<<(tmp = -1785878767, tmp)))); - assertEquals(-190957725.86956096, x /= (x^((-2939333300.066044)-(x|(-2085991826))))); - assertEquals(-190957725.86956096, x %= (tmp = -948386352, tmp)); - assertEquals(0.6457336106922105, x /= (-295722141)); - assertEquals(0, x |= ((415991250)&((x>>(tmp = -3188277823, tmp))<<(511898664.1008285)))); - assertEquals(0, x &= ((793238922)|x)); - assertEquals(-1576701979, x ^= (2718265317)); - assertEquals(-49271937, x >>= x); - assertEquals(-49271937, x |= x); - assertEquals(-49271937, x &= x); - assertEquals(775316382, x -= (-824588319)); - assertEquals(912498176, x <<= (tmp = -2223542776.836312, tmp)); - assertEquals(0, x -= (x&((tmp = 1999412385.1074471, tmp)/(-1628205254)))); - assertEquals(0, x -= x); - assertEquals(0, x >>= (-768730139.7749677)); - assertEquals(-1861304245, x |= (((5128483)^(((tmp = -1768372004, tmp)/(x^(tmp = 1310002444.757094, tmp)))*((tmp = 188242683.09898067, tmp)^(tmp = -2263757432, tmp))))^((tmp = 2223246327, tmp)*((tmp = -2360528979, tmp)-((tmp = 2442334308, tmp)>>(458302081)))))); - assertEquals(1, x /= x); - assertEquals(2, x += x); - assertEquals(1, x /= x); - assertEquals(0, x ^= x); - assertEquals(-0, x *= (-1852374359.3930533)); - assertEquals(0, x <<= (tmp = 1223645195.148961, tmp)); - assertEquals(1789655087, x |= ((-2505312209.770559)>>x)); - assertEquals(-65568768, x <<= x); - assertEquals(4229398528, x >>>= x); - assertEquals(-8408187, x |= (-3029781627)); - assertEquals(-8408187, x |= (((2322165037)-((tmp = -1424506897.362995, tmp)%x))&x)); - assertEquals(-7884926, x += (x>>>(x|(2738095820)))); - assertEquals(-7884926, x %= (576507013)); - assertEquals(751801768, x ^= (tmp = -750241238, tmp)); - assertEquals(-1986010067668600800, x *= (tmp = -2641667195, tmp)); - assertEquals(1921196240, x ^= (x%(-1954178308))); - assertEquals(847388880, x ^= ((tmp = 1632856124, tmp)&((tmp = -1536309755, tmp)<<(tmp = -3158362800, tmp)))); - assertEquals(-469662000.6651099, x += (tmp = -1317050880.6651099, tmp)); - assertEquals(-812358332, x ^= ((-2832480471)>>>(2016495937))); - assertEquals(21, x ^= (((tmp = 1815603134.2513008, tmp)/((tmp = 147415927, tmp)%(-1059701742)))+x)); - assertEquals(-2844409139.792712, x += (tmp = -2844409160.792712, tmp)); - assertEquals(177070, x >>>= x); - assertEquals(0, x %= x); - assertEquals(0, x >>= x); - assertEquals(1459126376, x ^= (tmp = -2835840920, tmp)); - assertEquals(1459126376, x %= (-1462864282)); - assertEquals(0, x >>>= (tmp = 2922724319, tmp)); - assertEquals(338995506, x ^= (338995506.6411549)); - assertEquals(336896258, x &= (2635904967)); - assertEquals(336634112, x -= (x&(tmp = 1659656287, tmp))); - assertEquals(NaN, x %= (x-x)); - assertEquals(NaN, x /= (tmp = -674606200, tmp)); - assertEquals(NaN, x %= ((x|(2788108542))/(x+(tmp = 600941473, tmp)))); - assertEquals(0, x >>>= ((-1858251597.3970242)>>>x)); - assertEquals(1951294747, x |= (tmp = 1951294747, tmp)); - assertEquals(1951294747, x &= x); - assertEquals(-153190625, x |= (-1500095737)); - assertEquals(23467367587890624, x *= x); - assertEquals(346531290.1813514, x /= (((((-513617734.11148167)|x)/((tmp = -2042982150.1170752, tmp)%((x%((x%x)>>>(((-1369980151)&(((922678983)%(x&(tmp = -855337708, tmp)))-((tmp = -2717183760, tmp)>>>((1939904985.4701347)%(((tmp = -2473316858, tmp)&((tmp = -599556221.9046664, tmp)>>((tmp = -6352213, tmp)/x)))&x)))))%x)))/((tmp = -1842773812.8648412, tmp)>>>(((x>>>(tmp = 499774063, tmp))<<(((tmp = -1353532660.5755146, tmp)*(-3070956509))>>(((-905883994.0188017)>>(tmp = -16637173, tmp))<<((tmp = 471668537, tmp)*((tmp = -232036004.26637793, tmp)/x)))))&(tmp = 85227224, tmp))))))>>>(x|(-2528471983)))-((tmp = 1531574803, tmp)+((x>>>x)-(2889291290.158888))))); - assertEquals(-94.42225749399837, x /= (((tmp = 2381634642.1432824, tmp)>>(tmp = -2637618935, tmp))|(2307200473))); - assertEquals(-47, x >>= (1524333345.141235)); - assertEquals(-2.8699253616435082e-8, x /= (1637673252)); - assertEquals(0, x |= x); - assertEquals(1083427040, x += ((-2012055268)<<(tmp = -2192382589.6911573, tmp))); - assertEquals(1083427040, x %= (x*x)); - assertEquals(2694039776, x += ((((-1740065704.9004602)<<(-736392934))%(2781638048.424092))>>>(x&x))); - assertEquals(-1600927520, x |= ((tmp = 2904430054.869525, tmp)*(((1054051883.4751332)*x)*((-939020743)-(tmp = 1636935481.1834455, tmp))))); - assertEquals(-1600927520, x -= (x%x)); - assertEquals(3037584978216498700, x *= (tmp = -1897390694, tmp)); - assertEquals(372598954.1823988, x %= (tmp = 1553763703.5082102, tmp)); - assertEquals(-1476395008, x <<= ((x>>((tmp = 282496335.49494267, tmp)^((-1948623419.6947453)|((((((tmp = -1203306995, tmp)-(-5554612.355098486))>>>(1867254951.4836824))>>x)|(-695777865))/((-59122652.19377303)<<(-609999229.7448442))))))>>(x/(tmp = -1207010654.9993455, tmp)))); - assertEquals(-2.2540185787941605, x /= (((tmp = 1364159859.9199843, tmp)*x)>>x)); - assertEquals(-2, x |= x); - assertEquals(2241824008, x *= ((3174055292.962967)>>(((-2379151623.602476)>>(tmp = -1423760236, tmp))>>(tmp = -522536019.2225733, tmp)))); - assertEquals(-2138158385, x ^= ((x>>((((1316131966.9180691)-((x*x)>>x))>>>x)>>((-2712430284)|(((((x<<(-616185937.6090865))-(((x-(tmp = 2957048661, tmp))<<(tmp = 617564839.888214, tmp))/(x%((tmp = -447175647.9393475, tmp)<<(2203298493.460617)))))-((x&((x<<(914944265))^(((-1294901094)*((tmp = 2512344795, tmp)+((((tmp = -1227572518, tmp)%(1831277766.4920158))*((x|x)^(tmp = 2515415182.6718826, tmp)))*x)))-(961485129))))>>>(tmp = 2079018304, tmp)))>>(tmp = 734028202, tmp))^(554858721.6149715)))))-((tmp = 1312985279.5114603, tmp)^(tmp = 2450817476.179955, tmp)))); - assertEquals(2.759030298237921, x /= (x|(tmp = -775901745.3688724, tmp))); - assertEquals(8, x <<= x); - assertEquals(NaN, x %= (((x&((1792031228.831834)>>(-1174912501)))%(((-2351757750)+(tmp = -2610099430, tmp))*(-2811655968)))*(x&(tmp = -1881632878, tmp)))); - assertEquals(0, x &= ((x*(616116645.7508612))^(2789436828.536846))); - assertEquals(0, x *= x); - assertEquals(35097452, x ^= ((tmp = 1023684579, tmp)%(((x|((tmp = -757953041, tmp)+(772988909)))+(tmp = -2934577578, tmp))>>>((tmp = -1973224283, tmp)>>>((x*(2244818063.270375))|(x-(-716709285))))))); - assertEquals(0.015207441433418992, x /= (2307913014.4056892)); - assertEquals(-5865042.942076175, x -= (5865042.957283616)); - assertEquals(-67719.94207617454, x %= (((1464126615.2493973)+(398302030.0108756))>>>x)); - assertEquals(4294899577, x >>>= (x<>= (tmp = 607447902, tmp)); - assertEquals(-1, x >>= (3081219749.9119744)); - assertEquals(6.53694303504065e-10, x /= (tmp = -1529767040.4034374, tmp)); - assertEquals(6.53694303504065e-10, x %= ((tmp = 899070650.7190754, tmp)&(tmp = -1101166301, tmp))); - assertEquals(6.53694303504065e-10, x %= (tmp = -2207346460, tmp)); - assertEquals(NaN, x %= (((x&x)>>x)%(((-10980184)+x)&(tmp = -1473044870.4729445, tmp)))); - assertEquals(NaN, x -= x); - assertEquals(-1755985426, x ^= (tmp = 2538981870, tmp)); - assertEquals(-13842, x %= ((((-2258237411.3816605)+(-1325704332.0531585))<<((tmp = -877665450.1877053, tmp)>>(((((2420989037)+(2084279990.6278818))*(-327869571.9348242))+x)^x)))>>>x)); - assertEquals(1, x /= x); - assertEquals(1, x >>= ((2241312290)^(2859250114))); - assertEquals(0, x >>= x); - assertEquals(-1615631756, x |= (-1615631756.1469975)); - assertEquals(-1615631756, x |= x); - assertEquals(-627245056, x <<= ((x*(tmp = -1308330685.5971081, tmp))|(tmp = 1479586158, tmp))); - assertEquals(-627245056, x |= x); - assertEquals(1786953888, x ^= (-1340096352.1839824)); - assertEquals(1668014353, x -= (tmp = 118939535, tmp)); - assertEquals(1, x /= x); - assertEquals(-645681, x ^= ((-1322356629)>>(tmp = 1829870283, tmp))); - assertEquals(-1322354688, x <<= (-794779253)); - assertEquals(-4310084378.672725, x += (-2987729690.6727247)); - assertEquals(-8620168757.34545, x += x); - assertEquals(-8720421, x |= (tmp = -748107877.6417065, tmp)); - assertEquals(-1508858270, x ^= (1500137913)); - assertEquals(-0.825735756765112, x /= (1827289490.1767085)); - assertEquals(1253449509.1742642, x += (((tmp = 1253449509.9576545, tmp)-(((tmp = 2860243975, tmp)+(367947569.85976696))>>(((((530960315)>>>((((x%(tmp = -2203199228, tmp))<<(x*(((tmp = -117302283, tmp)/(x-((2579576936)%(-1225024012))))&(tmp = -2857767500.1967726, tmp))))/((x/((tmp = -166066119, tmp)<>>x))|(((2771852372)>>(((tmp = -3103692094.1463976, tmp)-(tmp = 2867208546.069278, tmp))>>>(702718610.1963737)))|(tmp = 2680447361, tmp)))>>x)>>(-2006613979.051014))))^((-1665626277.9339101)/(x<<(tmp = 342268763, tmp))))); - assertEquals(1693336701.1742642, x += (tmp = 439887192, tmp)); - assertEquals(0.8479581831275719, x /= ((1171383583)+(((x&x)>>>(51482548.618915915))-(tmp = -825572595.1031849, tmp)))); - assertEquals(28, x |= ((tmp = -2355932919.6737213, tmp)>>(tmp = -2395605638, tmp))); - assertEquals(0, x %= x); - assertEquals(0, x -= x); - assertEquals(0, x <<= (x^((tmp = 2793423893.484949, tmp)*(1585074754.3250475)))); - assertEquals(0, x >>= (x/(x-((957719861.9175875)&(1288527195))))); - assertEquals(0, x >>>= ((-1429196921.4432657)/x)); - assertEquals(-852424225.734199, x -= (tmp = 852424225.734199, tmp)); - assertEquals(-46674433, x |= ((tmp = -2335242963, tmp)*((2135206646.2614377)>>(tmp = 505649511.8292929, tmp)))); - assertEquals(2944662357, x += (tmp = 2991336790, tmp)); - assertEquals(1404, x >>>= (849155189.1503456)); - assertEquals(-846755170, x ^= (tmp = -846753822.4471285, tmp)); - assertEquals(52615, x >>>= ((-517068110)+x)); - assertEquals(1475021859.9916897, x += (tmp = 1474969244.9916897, tmp)); - assertEquals(0, x %= x); - assertEquals(0, x %= ((539583595.8244679)*(tmp = 1469751690.9193692, tmp))); - assertEquals(0, x &= (807524227.2057163)); - assertEquals(NaN, x %= x); - assertEquals(NaN, x -= (x^((tmp = -362481588, tmp)%(2611296227)))); - assertEquals(NaN, x *= x); - assertEquals(0, x >>= ((-2519875630.999908)<>(tmp = 2326979823, tmp))%(x-(((-1296334640.7476478)&x)<>= (((tmp = 1370704131, tmp)^((((tmp = 793217372.7587746, tmp)>>(((-1455696484.109328)|(((((-2186284424.5379324)<<(tmp = 3052914152.254852, tmp))-(x>>(tmp = 3121403408, tmp)))+((778194280)-(((((tmp = 2398957652, tmp)-(x+(((-2592019996.937958)>>((tmp = 1648537981, tmp)>>x))<<(-677436594))))<<(39366669.09012544))|((tmp = 3133808408.9582872, tmp)-(-2987527245.010673)))*x)))|((tmp = -2178662629, tmp)<>(2822040993))|((x*x)^(((1072489842.6785052)|(x-(((464054192.7390214)^x)<<(tmp = -2754448095, tmp))))*((tmp = -1544182396, tmp)/(tmp = -3198554481, tmp)))))))^(tmp = 1946162396.9841106, tmp))); - assertEquals(371272192, x |= (((x^((x-(x/x))&(tmp = 2370429394, tmp)))-(tmp = -403692829, tmp))*(tmp = 2808636109, tmp))); - assertEquals(929786482, x |= ((729966239.8987448)^(x-((tmp = 120127779, tmp)^((tmp = -3088531385, tmp)>>>((x+((tmp = 2364833601, tmp)>>>(((599149090.6666714)>>(tmp = 2838821032, tmp))%(tmp = -662846011, tmp))))-(tmp = 1168491221.1813436, tmp))))))); - assertEquals(-681121542, x += ((-1610909505.998718)^((tmp = -957338882, tmp)>>>(tmp = 1935594133.6531684, tmp)))); - assertEquals(-2147483648, x <<= ((tmp = 15161708, tmp)|(2453975670))); - assertEquals(-2147483648, x >>= x); - assertEquals(0, x <<= (2080486058)); - assertEquals(0, x &= (((x&(tmp = -767821326, tmp))/((tmp = 1877040536, tmp)>>>(tmp = 2378603217.75597, tmp)))*(-1601799835))); - assertEquals(0, x %= (-1820240383)); - assertEquals(1621233920, x ^= ((tmp = 820230232, tmp)*(1727283900))); - assertEquals(1621233920, x |= (x>>>x)); - assertEquals(1621233931, x += ((tmp = 794966194.9011587, tmp)>>(tmp = -597737830.5450518, tmp))); - assertEquals(1621276543, x |= (((x^((2354444886)+(tmp = 685142845.4708651, tmp)))-(tmp = 790204976.9120214, tmp))>>>((((tmp = -2792921939, tmp)/(((((tmp = -80705524, tmp)<>>x)%((-529882150)>>>(tmp = -1682409624, tmp)))<<((-42043756.29025769)-(-1803729173.6855814)))/(2937202170.118023))*(tmp = -1998098798.5722106, tmp))*(tmp = -2996229463.904228, tmp)))&x)>>>(-301330643)))/(-2858859382.0050273))-(tmp = 1571854256.0740635, tmp)))); - assertEquals(810638271, x >>>= (x/(1553632833))); - assertEquals(810638271, x <<= (tmp = -1467397440, tmp)); - assertEquals(-2147483648, x <<= x); - assertEquals(871068871, x ^= (tmp = 3018552519, tmp)); - assertEquals(-1073743881, x |= ((tmp = 2294122324.020989, tmp)|(tmp = -1799706842.4493146, tmp))); - assertEquals(-77816868, x += (((-2225296403)&x)>>(tmp = -2667103424.445239, tmp))); - assertEquals(-1215889, x >>= (tmp = 1876107590.8391647, tmp)); - assertEquals(-2431778, x += x); - assertEquals(4292535518, x >>>= (((x>>(-1825580683))/x)%x)); - assertEquals(4292802560, x -= (x|(1492864090))); - assertEquals(0, x -= x); - assertEquals(0, x >>= x); - assertEquals(0, x %= (tmp = 2173121205, tmp)); - assertEquals(0, x *= (x>>x)); - assertEquals(1565261471, x |= ((1565261471.323931)>>>x)); - assertEquals(0, x -= x); - assertEquals(-86980804, x |= (-86980804)); - assertEquals(-698956484, x -= (((((2754713793.1746016)*(((((-1514587465.0698888)>>(tmp = -1307050817, tmp))/(tmp = 2368054667.438519, tmp))*(-1908125943.5714772))<<(x>>>(-357164827.4932244))))+(1257487617))<<(2954979945))&(612330472))); - assertEquals(-1073741824, x <<= x); - assertEquals(54497747, x ^= (-1019244077.098908)); - assertEquals(54501375, x |= (((tmp = 1944912427, tmp)>>>x)%x)); - assertEquals(0, x -= x); - assertEquals(0, x -= x); - assertEquals(-0, x *= (-1748215388)); - assertEquals(0, x >>= x); - assertEquals(0, x >>>= (((tmp = 988769112, tmp)%(tmp = -3133658477, tmp))<>>= (x+((793467168)-(tmp = 135877882, tmp)))); - assertEquals(0, x %= ((tmp = -2406801984, tmp)%(tmp = -987618172, tmp))); - assertEquals(0, x *= ((-2943444887.953456)|(tmp = -2327469738.4544783, tmp))); - assertEquals(0, x >>= x); - assertEquals(-145484729.70167828, x += (tmp = -145484729.70167828, tmp)); - assertEquals(1140855872, x &= (x^(tmp = 3151437967.965556, tmp))); - assertEquals(1486808408, x += (tmp = 345952536, tmp)); - assertEquals(107846582.36594129, x %= (-1378961825.6340587)); - assertEquals(-642031616, x <<= (x+x)); - assertEquals(151747770.95108718, x *= (x/(tmp = 2716379907, tmp))); - assertEquals(192723456, x <<= (tmp = -1731167384, tmp)); - assertEquals(2151208003, x -= ((-2151208003)+x)); - assertEquals(1, x /= x); - assertEquals(1, x |= x); - assertEquals(1996766603, x |= (1996766602)); - assertEquals(895606123, x ^= (tmp = 1113972960.966081, tmp)); - assertEquals(-1500036886, x ^= (tmp = 2482412929, tmp)); - assertEquals(-1542644247, x ^= (x>>>((tmp = 51449105, tmp)>>>(((-2057313176)*x)/(-1768119916))))); - assertEquals(-1496074063273093600, x *= ((tmp = 786152274, tmp)^(387292498))); - assertEquals(-794329073, x %= (((tmp = -2314637675.617696, tmp)*((((x*(411053423.29070306))-(2889448433.4240828))/((-970630131)/(tmp = -2886607600.7423067, tmp)))<<(tmp = 1263617112.9362245, tmp)))|(2816980223.8209996))); - assertEquals(2468008436047106600, x *= (tmp = -3107035257.725115, tmp)); - assertEquals(3040956928, x >>>= ((tmp = 1514372119.1787262, tmp)*(3169809008))); - assertEquals(-19, x >>= (tmp = -266966022.10604453, tmp)); - assertEquals(-1.6505580654964654e-8, x /= ((-3143841480)>>(x-x))); - assertEquals(-2.2420284729165577e-7, x *= (x*((((703414102.2523813)%(tmp = 2989948152, tmp))-((-1583401827.2949386)^((tmp = -1916731338, tmp)%((331500653.3566053)|(((tmp = 29865940, tmp)+((tmp = -2294889418.6764183, tmp)<<(tmp = -1558629267.255229, tmp)))>>>(x*(x+x)))))))|((988977957)&(-2986790281))))); - assertEquals(0, x ^= (x/(tmp = 781117823.345541, tmp))); - assertEquals(NaN, x *= (((x^((((tmp = -2969290335, tmp)+(((((tmp = -175387021, tmp)&(tmp = -1080807973, tmp))<<(tmp = -2395571076.6876855, tmp))|((tmp = -1775289899.4106793, tmp)^x))|(-2963463918)))*(tmp = -1761443911, tmp))^(tmp = 847135725, tmp)))<<((146689636)<>= (x<<(-45408034))); - assertEquals(5.759243187540471e+27, x *= (((x&(1456298805))+(x<<(106573181)))*((566861317.2877743)+(2262937360.3733215)))); - assertEquals(5.759243187540471e+27, x -= (tmp = -1365873935, tmp)); - assertEquals(0, x <<= x); - assertEquals(0, x >>= (1960073319.3465362)); - assertEquals(0, x <<= x); - assertEquals(560463904, x += ((tmp = 1844076589.9286406, tmp)&((((((-691675777.5800121)|(-745631201))|x)+(tmp = 1504458593.2843904, tmp))-x)<>>= ((-1346666404.362477)*(tmp = 2798191459, tmp))); - assertEquals(1080100929, x &= (1122097879.882534)); - assertEquals(1276833905.8093092, x *= ((1276833905.8093092)/x)); - assertEquals(1276833905.8093092, x %= (1796226525.7152414)); - assertEquals(1276833905, x <<= (((tmp = -491205007.83412814, tmp)*(tmp = 1496201476.496839, tmp))>>(x+((tmp = -854043282.114594, tmp)-((x|(tmp = -807842056, tmp))*x))))); - assertEquals(1276833905, x %= (((-1870099318)>>>(((tmp = -2689717222, tmp)/(248095232))/(tmp = 1036728800.5566598, tmp)))&(((((857866837)>>(tmp = 3034825801.740485, tmp))|(-1676371984))>>>(x<>= (((tmp = 2586723314.38089, tmp)/(x&(tmp = -697978283.9961061, tmp)))<<(x%((-1167534676)>>(x^((tmp = -284763535, tmp)*((x%x)&((((tmp = 2916973220.726839, tmp)%x)/(tmp = -1338421209.0621986, tmp))|((tmp = -834710536.803335, tmp)%x))))))))); - assertEquals(-3267683406, x -= (tmp = 1791939766, tmp)); - assertEquals(-2090420900700614100, x *= (639725653)); - assertEquals(-1540353536, x %= ((-1800269105)<<((((x&(((tmp = 1135087416.3945065, tmp)^(613708290))>>x))>>(tmp = -1234604858.7683473, tmp))^(2404822882.7666225))>>>((tmp = -287205516, tmp)-((1648853730.1462333)^((x+(x%((tmp = 359176339, tmp)%((2856479172)<<(tmp = -1995209313, tmp)))))^(((tmp = 2857919171.839304, tmp)>>>(tmp = 2779498870, tmp))>>x))))))); - assertEquals(-2093767030, x ^= (654554250.498078)); - assertEquals(1, x >>>= ((tmp = -166296226.12181997, tmp)^(x/x))); - assertEquals(-1487427474, x -= ((x<>= (-1354035390)); - assertEquals(0, x %= x); - assertEquals(0, x &= (tmp = 2733387603, tmp)); - assertEquals(1485905453, x |= ((((tmp = -1321532329.304437, tmp)&((((tmp = 1817382709.4180388, tmp)%(((tmp = 2089156555.7749293, tmp)-(-1555460267))|(tmp = 717392475.9986715, tmp)))%(tmp = 1976713214, tmp))^x))>>>x)+(tmp = -2812404197.002721, tmp))); - assertEquals(1485905453, x |= x); - assertEquals(-997658264, x <<= (-1409757949.6038744)); - assertEquals(-997657290, x -= ((-2041106361)>>(tmp = -2014750507, tmp))); - assertEquals(-2138512124, x &= (tmp = 2565597060, tmp)); - assertEquals(8422400, x &= ((-2819342693.5172367)*(tmp = 1441722560, tmp))); - assertEquals(111816531.81703067, x -= (-103394131.81703067)); - assertEquals(59606682.673836395, x *= ((tmp = -1451690098, tmp)/(x-(2835050651.717734)))); - assertEquals(-119213365.34767279, x *= (x|((-2656365050)/((-66180492)+(tmp = 284225706.32323086, tmp))))); - assertEquals(-232839, x >>= (1694344809.435083)); - assertEquals(-1, x >>= x); - assertEquals(1, x *= x); - assertEquals(1, x |= x); - assertEquals(0, x >>= (tmp = 397239268, tmp)); - assertEquals(-1525784563, x -= (tmp = 1525784563, tmp)); - assertEquals(-153.62740888512675, x /= (((tmp = -2040622579.5354173, tmp)*(tmp = -1149025861.549324, tmp))%(((tmp = 2981701364.0073133, tmp)*(tmp = 2993366361, tmp))|(x|(tmp = 1800299979, tmp))))); - assertEquals(-1671795135, x &= (-1671795135.6173766)); - assertEquals(-4253, x |= ((((x*((1533721762.8796673)<<((tmp = 1026164775.0081646, tmp)<>((((((tmp = -481536070.7067797, tmp)&(tmp = 1663121016, tmp))>>>(-2974733313.5449667))+(tmp = -493019653, tmp))>>x)&(tmp = 879307404.8600142, tmp)))>>>x)%(x-(tmp = -1806412445.788453, tmp)))%x))<<(x<<(x+x)))+x))>>((tmp = -332473688.28477216, tmp)<<((tmp = 1701065928, tmp)+(((((tmp = -2407330783, tmp)+x)-((tmp = 584100783, tmp)%(tmp = -3077106506, tmp)))^x)>>x))))<>>= x); - assertEquals(0, x >>>= (1578470476.6074834)); - assertEquals(0, x >>>= (974609751)); - assertEquals(-120, x += (x-((tmp = -245718438.0842378, tmp)>>>(tmp = -1870354951, tmp)))); - assertEquals(-6.134465505515781e-8, x /= (1956160645)); - assertEquals(-0, x %= x); - assertEquals(0, x *= (tmp = -399718472.70049024, tmp)); - assertEquals(-1803198769.8413258, x += (-1803198769.8413258)); - assertEquals(988624943, x ^= ((((tmp = 320776739.5608537, tmp)*(((tmp = -983452570.3150327, tmp)^x)&(tmp = -3181597938, tmp)))-(tmp = -1367913740.9036021, tmp))/(((tmp = -535854933.2943456, tmp)-(717666905.8122432))>>>(((((x^(tmp = 380453258.60062766, tmp))^(tmp = -1242333929, tmp))/((tmp = 1072416261, tmp)+(((2090466933)*(x*(tmp = -386283072, tmp)))|((tmp = 789259942, tmp)<<(tmp = -1475723636.1901488, tmp)))))>>>x)%((x>>(tmp = -1243048658.3818703, tmp))|((((((tmp = -619553509, tmp)|x)/(878117279.285609))|((x<<(x>>>(tmp = -749568437.7390883, tmp)))*x))/(tmp = 1674804407, tmp))-(x*(tmp = 1528620873, tmp)))))))); - assertEquals(988625135, x |= (x>>>(tmp = 2402222006, tmp))); - assertEquals(988625135, x %= (-2691094165.990094)); - assertEquals(0, x %= x); - assertEquals(-0, x *= (tmp = -1409904262, tmp)); - assertEquals(-0, x /= ((1176483512.8626208)<>= (tmp = -1296960457, tmp)); - assertEquals(0, x |= x); - assertEquals(NaN, x /= x); - assertEquals(0, x <<= (x>>(-3127984289.9112387))); - assertEquals(0, x %= ((tmp = 190018725.45957255, tmp)<<((x>>>x)/x))); - assertEquals(0, x /= (1185681972)); - assertEquals(0, x &= ((tmp = -1285574617, tmp)>>x)); - assertEquals(0, x >>>= ((tmp = 2498246277.2054763, tmp)+(((tmp = 924534435, tmp)&x)>>(tmp = 1379755429, tmp)))); - assertEquals(0, x -= x); - assertEquals(0, x /= (3093439341)); - assertEquals(0, x *= (x>>>x)); - assertEquals(0, x &= (tmp = 551328367, tmp)); - assertEquals(-0, x /= (-3153411714.834353)); - assertEquals(1217585288, x ^= (tmp = -3077382008.637764, tmp)); - assertEquals(-639702017, x |= ((tmp = -640922633, tmp)%(tmp = -879654762, tmp))); - assertEquals(-1645297680, x <<= (tmp = 1418982820.8182912, tmp)); - assertEquals(-1.4059558868398736, x /= (1170234212.4674253)); - assertEquals(-2650856935.66554, x *= (1885448157)); - assertEquals(1326259953.26931, x *= (((x>>(x|(-496195134.78045774)))+((2029515886)%(tmp = 1148955580, tmp)))/(tmp = -1760016519, tmp))); - assertEquals(0, x &= (((((-273334205)+(tmp = 797224093.682485, tmp))/x)>>>((((tmp = -887577414, tmp)/x)+x)%(tmp = 720417467, tmp)))^(((x-(tmp = -309071035, tmp))>>(-3123114729.33889))/x))); - assertEquals(0, x ^= x); - assertEquals(0, x %= ((tmp = -2243857462, tmp)/((((((2642220700.6673346)&x)*(tmp = 1454878837, tmp))|((-25825087.30002737)%(851535616.3479034)))<<(tmp = -697581582, tmp))%(tmp = 2248990486, tmp)))); - assertEquals(0, x >>= (((x|(((tmp = -220437911, tmp)&((((255690498)*(((2993252642)>>>(tmp = 300426048.0338713, tmp))>>x))&((-364232989)+(x<<(-1824069275))))%(x+(tmp = 2696406059.026349, tmp))))+((tmp = 2911683270, tmp)/(tmp = 2718991915, tmp))))*(x/(((tmp = -982851060.0744538, tmp)^((-2903383954)<<((-85365803.80553412)^x)))%(1489258330.5730634))))>>>x)); - assertEquals(0.7805921633088815, x += (((-1886920875)/(-2417294156.5304217))%(tmp = -1176793645.8923106, tmp))); - assertEquals(0, x <<= x); - assertEquals(-2215008905, x -= (2215008905)); - assertEquals(1931542900, x &= (-215923724.72133207)); - assertEquals(907191462, x ^= (-3133954606.357727)); - assertEquals(453595731, x >>>= (((tmp = 2726241550, tmp)/(tmp = -332682163, tmp))*((((tmp = 2500467531, tmp)>>>(((x<<(tmp = -1847200310.4863105, tmp))/x)^x))+x)<<(191688342.22953415)))); - assertEquals(-0.21671182880645923, x /= ((((-1169180683.1316955)%x)>>>(1650525418))^((2198033206.797462)&((-6913973.910871983)%(1758398541.8440342))))); - assertEquals(-375102237.1603561, x += (tmp = -375102236.9436443, tmp)); - assertEquals(1, x &= (((84374105.89811504)|((tmp = -2480295008.926951, tmp)>>((605043461)>>(tmp = -2495122811, tmp))))>>(-2129266088))); - assertEquals(1, x |= x); - assertEquals(0.0000024171579540208214, x /= (((-2600416098)>>(-2076954196))^x)); - assertEquals(0.0000024171579540208214, x %= (tmp = -2632420148.815531, tmp)); - assertEquals(1809220936.0126908, x -= (-1809220936.0126884)); - assertEquals(1682452118.2686126, x += (((2358977542)<<(x/(tmp = -2862107929, tmp)))+(x+(x%((-3101674407)/(((x*((x>>(tmp = 630458691.3736696, tmp))>>>(tmp = -852137742, tmp)))/x)-((-1875892391.1022017)&(tmp = -1027359748.9533749, tmp)))))))); - assertEquals(1682452118, x <<= (((tmp = -80832958.07816291, tmp)>>x)%(x-((x^(x<<(tmp = -156565345, tmp)))|((tmp = -1208807363.727137, tmp)/(tmp = 2614737513.304538, tmp)))))); - assertEquals(6572078, x >>= (-1573364824)); - assertEquals(13144156, x += x); - assertEquals(1731678184, x ^= ((tmp = 593370804.9985657, tmp)|(-3124896848.53273))); - assertEquals(845545, x >>>= (tmp = -605637621.2299933, tmp)); - assertEquals(-1383361088, x ^= (tmp = -1383632087, tmp)); - assertEquals(-82545896480031520, x += ((x+(1023183845.7316296))*((((tmp = 576673669, tmp)>>(((-584800080.1625061)/(2388147521.9174623))+((((x>>>(-905032341.5830328))^(tmp = -2170356357, tmp))-x)+((136459319)+(-1799824119.689473)))))|x)&(tmp = -2688743506.0257063, tmp)))); - assertEquals(-895206176, x |= x); - assertEquals(-0, x %= x); - assertEquals(1791306023, x ^= ((tmp = -3219480856, tmp)+(tmp = 715819582.0181161, tmp))); - assertEquals(1791306023, x &= x); - assertEquals(2725167636753240600, x *= (1521330025)); - assertEquals(-281190679, x |= (tmp = -1422045975.798171, tmp)); - assertEquals(-281190679, x += (x%x)); - assertEquals(-2342097426.906673, x -= (tmp = 2060906747.906673, tmp)); - assertEquals(-4651462701.906673, x -= (2309365275)); - assertEquals(1878, x >>>= (2544974549.345834)); - assertEquals(1964, x += (x&((1067649861)>>(182139255.7513579)))); - assertEquals(2209, x += (x>>(tmp = -1775039165, tmp))); - assertEquals(0, x -= x); - assertEquals(-0, x /= (tmp = -1634697185, tmp)); - assertEquals(NaN, x /= x); - assertEquals(0, x >>>= ((tmp = 3075747652, tmp)&(tmp = 819236484, tmp))); - assertEquals(0, x /= ((1276203810.476657)%(-2434960500.784484))); - assertEquals(0, x >>>= (tmp = -503633649, tmp)); - assertEquals(-982731931, x |= (-982731931)); - assertEquals(-1965463862, x += x); - assertEquals(-0.221469672913716, x %= ((tmp = -1742292120, tmp)/x)); - assertEquals(-0.221469672913716, x %= (-2021391941.1839576)); - assertEquals(0, x <<= (((((tmp = -2802447851, tmp)>>((2534456072.6518855)&x))%(tmp = 2841162496.610816, tmp))<<((89341820)/(2565367990.0552235)))>>(tmp = 2700250984.4830647, tmp))); - assertEquals(0, x >>= x); - assertEquals(0, x >>= ((tmp = -636189745, tmp)>>>(x/(((tmp = 2634252476, tmp)%(2026595795))>>(tmp = -2048078394.743723, tmp))))); - assertEquals(NaN, x %= ((x%((((x%((tmp = -2583207106, tmp)&x))|(190357769))<<(tmp = 595856931.2599536, tmp))%x))*((-2433186614.6715775)<<((2856869562.1088696)^(tmp = 1112328003, tmp))))); - assertEquals(1621713910, x |= (tmp = 1621713910.0282416, tmp)); - assertEquals(3243427820, x += x); - assertEquals(0, x *= (x&(x-x))); - assertEquals(0, x >>>= (((2871235439)<<((x+((tmp = -1319445828.9659343, tmp)+(tmp = 1595655077.959171, tmp)))>>(tmp = -86333903, tmp)))-(x/(2907174373.268768)))); - assertEquals(0, x >>= (-1091774077.2173789)); - assertEquals(NaN, x /= x); - assertEquals(NaN, x *= (tmp = 1976023677.7015994, tmp)); - assertEquals(NaN, x -= (-3013707698)); - assertEquals(NaN, x += ((x+(((tmp = -3119865782.9691515, tmp)<<(1327383504.0158405))^(((-143382411.7239611)>>>((-2157016781)+(((-335815848)/x)<<(tmp = 1953515427, tmp))))&(-2715729178))))/(413738158.2334299))); - assertEquals(NaN, x %= x); - assertEquals(NaN, x += (-845480493)); - assertEquals(-789816013, x |= (tmp = -789816013.129916, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x <<= (3032573320)); - assertEquals(47630, x ^= ((1086705488)%((x^(tmp = -1610832418, tmp))>>>(tmp = 1136352558, tmp)))); - assertEquals(47630, x >>= (tmp = 1035320352.4269229, tmp)); - assertEquals(47630, x >>= ((((x^x)<<(x*((((x&((-1657468419)*((tmp = -674435523, tmp)&((tmp = 2992300334, tmp)|x))))*((tmp = -489509378.31950426, tmp)*(tmp = 2276316053, tmp)))>>>x)<>= x); - assertEquals(0, x *= (tmp = 30051865, tmp)); - assertEquals(0, x ^= ((x&(((x&x)>>>(((((((x+(2319551861.0414495))>>>(tmp = -3099624461, tmp))^((((tmp = 1574312763, tmp)|x)>>>((-2723797246)&(tmp = -1993956152, tmp)))|(-1830179045)))|(((((((-2545698704.3662167)>>>x)-(((-79478653)|x)%(x+(x>>((tmp = 2386405508.2180576, tmp)/x)))))>>((((-1947911815.2808042)*((x+(368522081.2884482))-(tmp = 2452991210, tmp)))>>(343556643.1123545))>>((((tmp = 1869261547.537739, tmp)>>(3193214755))|x)&(x*(2027025120)))))<<((-1149196187)>>>(814378291.8374172)))+((((((((-160721403)/(2079201480.2186408))+((x|((((tmp = -299595483.16805863, tmp)>>>((x|((x+x)/(-2359032023.9366207)))<<(tmp = -3095108545, tmp)))>>((tmp = -1547963617.9087071, tmp)*(x>>x)))&((tmp = -1568186648.7499216, tmp)+(((2646528453)^(-2004832723.0506048))>>>(tmp = -3188715603.921877, tmp)))))+(tmp = 1578824724, tmp)))^x)^x)/(tmp = -985331362, tmp))|(tmp = 445135036, tmp))<<(tmp = -73386074.43413758, tmp)))+(((-1674995105.9837937)-(tmp = 1392915573, tmp))>>x)))%(tmp = 1215953864, tmp))&((tmp = -439264643.5238693, tmp)>>>x))+(((tmp = 2311895902, tmp)|(1604405793.6399229))&(tmp = -565192829, tmp))))-x))>>(-2455985321))); - assertEquals(0, x %= ((1177798817)>>(tmp = 2081394163.5420477, tmp))); - assertEquals(0, x >>>= ((x^(tmp = -41947528.33954811, tmp))>>(x>>>((tmp = 1367644771, tmp)+x)))); - assertEquals(0, x %= ((x+((tmp = 163275724, tmp)<<((tmp = -514460883.3040788, tmp)+x)))|(tmp = -287112073.2482593, tmp))); - assertEquals(0, x &= (3067975906)); - assertEquals(201342051, x |= (tmp = 201342051, tmp)); - assertEquals(0, x %= (((((-2580351108.8990865)<<(tmp = 2675329316, tmp))&((1338398946)%((-1548041558)+((x>>(-1568233868.7366815))|((x>>((tmp = -1064582207, tmp)/(-1062237014)))>>(tmp = 854123209, tmp))))))<<(((989032887)*(1842748656))%(tmp = -1566983130, tmp)))-x)); - assertEquals(-0, x /= (tmp = -828519512.617768, tmp)); - assertEquals(0, x &= ((((1449608518)+(-1829731972))*(1828894311))*(((tmp = -1121326205.614264, tmp)^(-2057547855))<<(tmp = -2758835896, tmp)))); - assertEquals(NaN, x %= ((tmp = -2138671333, tmp)%x)); - assertEquals(0, x &= x); - assertEquals(665568613.0328879, x += (665568613.0328879)); - assertEquals(317, x >>= (2627267349.735873)); - assertEquals(0, x -= x); - assertEquals(0, x &= (((tmp = 3030611035, tmp)*(((tmp = 476143340.933007, tmp)>>(x-(2238302130.2331467)))|(x|x)))%(tmp = 320526262, tmp))); - assertEquals(0, x <<= (tmp = 729401206, tmp)); - assertEquals(0, x >>>= (1721412276)); - assertEquals(217629949.3530736, x += ((tmp = 217629949.3530736, tmp)%((-931931100.601475)%(x^(tmp = -2149340123.548764, tmp))))); - assertEquals(217629949.3530736, x %= (tmp = 2275384959.4243402, tmp)); - assertEquals(0, x >>>= (1112677437.5524077)); - assertEquals(0, x *= (500256656.7476063)); - assertEquals(0, x >>>= x); - assertEquals(0, x -= x); - assertEquals(0, x -= x); - assertEquals(0, x &= (-1076968794)); - assertEquals(0, x /= (tmp = 1774420931.0082943, tmp)); - assertEquals(0, x |= x); - assertEquals(0, x >>= x); - assertEquals(0, x %= (-2978890122.943079)); - assertEquals(-0, x /= (tmp = -2954608787, tmp)); - assertEquals(-800048201, x ^= ((tmp = -800048201.7227018, tmp)>>>((-2016227566.1480863)/(tmp = -2263395521, tmp)))); - assertEquals(3333, x >>>= (-2038839052)); - assertEquals(487957736.625432, x += (487954403.625432)); - assertEquals(-1650983426, x |= (2643918270)); - assertEquals(-1861867448, x &= (tmp = -251254199.12813115, tmp)); - assertEquals(-7.934314690172143e-18, x %= ((((x^(-703896560.6519544))>>(tmp = -1853262409, tmp))/(tmp = -1168012152.177894, tmp))/(tmp = 837616075.1097361, tmp))); - assertEquals(0, x ^= x); - assertEquals(0, x &= (tmp = -2328150260.5399947, tmp)); - assertEquals(-1954860020, x |= (tmp = 2340107276, tmp)); - assertEquals(-1954860020, x >>= ((tmp = 159177341, tmp)*(x&(-705832619)))); - assertEquals(-1954895727, x -= (x>>>((-1443742544.7183702)^((((tmp = 869581714.0137681, tmp)+x)^((x%(tmp = -1036566362.5189383, tmp))^(x%x)))>>x)))); - assertEquals(1.0241361338078498, x /= (tmp = -1908824093.2692068, tmp)); - assertEquals(16777216, x <<= (x*(((-1925197281)^(tmp = -1392300089.4750946, tmp))|x))); - assertEquals(-225882765524992, x *= (tmp = -13463662, tmp)); - assertEquals(-1845493760, x |= x); - assertEquals(-1845493760, x %= (tmp = 3181618519.786825, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x <<= x); - assertEquals(0, x >>>= x); - assertEquals(NaN, x /= (x>>>x)); - assertEquals(NaN, x %= (((((tmp = -521176477, tmp)>>(((tmp = 370693623, tmp)/(((tmp = -1181033022.4136918, tmp)>>(x|(x*(2601660441))))+(tmp = -1696992780, tmp)))|(x|(-1197454193.198036))))>>>(((2512453418.3855605)+((((((tmp = 799501914, tmp)&(((1788580469.7069902)*(((((1476778529.5109258)<<(tmp = -1873387738.3541565, tmp))-((tmp = -521988584.7945764, tmp)*(-1598785351.3914914)))&(-1899161721.8061454))&((x/x)*(690506460))))>>>((tmp = 2255896398.840741, tmp)>>((tmp = -1331486014.6180065, tmp)+(-1159698058.534132)))))*((1112115365.2633948)&((x>>((x>>(-784426389.4693215))&(-492064338.97227573)))>>x)))^((x-((tmp = 2986028023, tmp)>>(tmp = 2347380320.00517, tmp)))*(tmp = -1463851121, tmp)))*(tmp = -1059437133, tmp))%(x-(tmp = 1238739493.7636225, tmp))))^(2029235174)))*(-1923899530))>>>x)); - assertEquals(0, x >>>= (2848792983.510682)); - assertEquals(0, x >>= (((tmp = 3042817032.705198, tmp)>>>x)&((((tmp = -829389221, tmp)-((2669682285.8576303)+(tmp = 1812236814.3082042, tmp)))^x)%((tmp = -2401726554, tmp)^((tmp = 2464685683, tmp)|(-2685039620.224061)))))); - assertEquals(2069649722, x |= (2069649722.311271)); - assertEquals(NaN, x %= (((((-68757739.39282179)&(-1382816369))/(3122326124))<<(x-(-507995800.3369653)))<<(((-1962768567.343907)+((tmp = 1357057125, tmp)/x))^(tmp = 1997617124, tmp)))); - assertEquals(NaN, x += x); - assertEquals(0, x >>= (26895919)); - assertEquals(0, x >>>= x); - assertEquals(0, x %= (tmp = 1092448030, tmp)); - assertEquals(0, x <<= (tmp = -477672441.46258235, tmp)); - assertEquals(0, x /= (2113701907)); - assertEquals(0, x >>>= x); - assertEquals(NaN, x /= x); - assertEquals(1341078673, x |= (-2953888623)); - assertEquals(1341078673, x &= x); - assertEquals(0, x %= x); - assertEquals(414817852.151006, x -= (-414817852.151006)); - assertEquals(1006632960, x <<= ((((((126465614.8316778)+(x-(2511803375)))+(tmp = 1620717148.352402, tmp))*x)/(tmp = -3013745105.5275207, tmp))-((tmp = -418034061.6865432, tmp)/(-300492911)))); - assertEquals(1055624813, x |= (tmp = 921407085, tmp)); - assertEquals(-3, x |= ((((tmp = 1382397819.7507677, tmp)+(tmp = -111851147.7289567, tmp))+x)/((tmp = 247980405.7238742, tmp)^(tmp = -592156399.8577058, tmp)))); - assertEquals(35161, x &= (((((((-2973570544.725141)*(tmp = -1244715638, tmp))+x)<<(x/((x>>>(-2143371615.073137))/(226072236))))%((x-(tmp = 1971392936, tmp))^(tmp = 2653103658, tmp)))%((tmp = 2828319571.7066674, tmp)>>((1528970502)^((tmp = -55869558, tmp)%x))))>>(889380585.6738582))); - assertEquals(0, x ^= x); - assertEquals(0, x *= (2749718750)); - assertEquals(0, x >>>= ((((-1633495402.6252813)*(tmp = 2943656739.1108646, tmp))+(tmp = 977432165, tmp))&((tmp = -2338132019, tmp)*(408176349.8061733)))); - assertEquals(-1778794752, x -= (((tmp = -1391412154.5199084, tmp)-((-3172342474)|x))&(1854366052))); - assertEquals(-1778794752, x %= (tmp = 2024807296.6901965, tmp)); - assertEquals(-1114410.466337204, x %= ((tmp = -240344444.24487805, tmp)%(-47661164))); - assertEquals(-0, x %= x); - assertEquals(0, x >>= (x>>x)); - assertEquals(0, x *= x); - assertEquals(0, x /= ((-3134902611)|(tmp = -3131158951, tmp))); - assertEquals(-0, x /= (((tmp = 1430247610.634234, tmp)&x)+((tmp = -2047191110.8623483, tmp)-((((x%((((x/(tmp = -2599234213, tmp))|(tmp = 2650380060, tmp))|x)+x))>>>x)&(-1961373866))<>>= (((tmp = 2480472883.078992, tmp)<>((2035208402.8039393)&(tmp = 492980449, tmp)))); - assertEquals(434034142, x %= (x&((x>>>(311110449.48751545))|(-243530647)))); - assertEquals(524703439.3065736, x += (((tmp = 1392771723.3065736, tmp)%(x&x))%(tmp = -2199704930, tmp))); - assertEquals(373686272, x &= (x<<((tmp = 2103372351.9456532, tmp)%(tmp = -1367109519, tmp)))); - assertEquals(373686272, x >>= x); - assertEquals(-0.12245430020241108, x /= (tmp = -3051638622.5907507, tmp)); - assertEquals(1, x /= x); - assertEquals(1, x %= (3095983855)); - assertEquals(-1454736871, x ^= (x*(tmp = -1454736872, tmp))); - assertEquals(-1454736866, x ^= (((724989405.7338341)|(tmp = -2834298786.384371, tmp))>>>(tmp = -2029602148.1758833, tmp))); - assertEquals(-1454736866, x &= x); - assertEquals(-197394432, x <<= (tmp = -1562128975, tmp)); - assertEquals(251658240, x <<= (tmp = 2126510950, tmp)); - assertEquals(3295700610.703306, x -= (tmp = -3044042370.703306, tmp)); - assertEquals(-51152917, x |= ((949179883.1784958)|(((tmp = -2046168220, tmp)>>(x/x))/(((835064313)*(tmp = 2197600689, tmp))^(((tmp = 2717104216, tmp)&x)<<(-1402661995.3845913)))))); - assertEquals(-1549204421, x ^= ((((tmp = -481013711, tmp)>>>((tmp = 119589341.80209589, tmp)%(-995489985.2905662)))-(635717011))^(x+(x*x)))); - assertEquals(-1078356672.3999934, x += (470847748.6000067)); - assertEquals(1484987268.4638166, x += (tmp = 2563343940.86381, tmp)); - assertEquals(277020804, x &= (tmp = 2532819117, tmp)); - assertEquals(-2097118208, x <<= (x>>>x)); - assertEquals(-2147483648, x <<= (tmp = 761285045, tmp)); - assertEquals(2147483648, x >>>= x); - assertEquals(-935909870282997800, x *= ((-2583300643)|x)); - assertEquals(-370753566.54721737, x %= (-1084543510.4524941)); - assertEquals(-177, x >>= (-946264747.6588805)); - assertEquals(-416077682, x ^= (tmp = 416077761, tmp)); - assertEquals(NaN, x %= ((((tmp = 779607408, tmp)*(((tmp = -3007128117, tmp)*(851442866.6153773))+x))&(1283388806))/(-876363553))); - assertEquals(NaN, x %= (x/(tmp = -1668413939.652408, tmp))); - assertEquals(-1726405921, x ^= (tmp = -1726405921, tmp)); - assertEquals(-1, x >>= ((3031008213.807012)>>x)); - assertEquals(4294967295, x >>>= ((x>>>x)&(tmp = 2788082290, tmp))); - assertEquals(8544111670008449000, x *= (tmp = 1989331020.0417833, tmp)); - assertEquals(268435456, x <<= (tmp = 3121736017.2098465, tmp)); - assertEquals(-2.1011176170964474e+26, x -= (((tmp = 1392503299, tmp)*(tmp = 1446108825.1572113, tmp))*(x^(tmp = 372776014.213725, tmp)))); - assertEquals(0, x |= x); - assertEquals(0, x >>= ((-112413907.70074797)*(-702798603))); - assertEquals(1829518838, x |= (tmp = -2465448458, tmp)); - assertEquals(57172463, x >>= ((tmp = 2979642955.241792, tmp)%(tmp = -2464398693.291434, tmp))); - assertEquals(114344926, x += x); - assertEquals(113279134, x &= (2397742238.6877637)); - assertEquals(54, x >>= (1908522709.6377516)); - assertEquals(-2.966982919573829e-7, x /= (tmp = -182003070, tmp)); - assertEquals(0, x <<= (-1078417156)); - assertEquals(-147831390, x ^= (((-147831390)>>>x)+x)); - assertEquals(0, x -= x); - assertEquals(-242221450.44696307, x -= (tmp = 242221450.44696307, tmp)); - assertEquals(-484442900, x <<= (((tmp = -2033947265.088614, tmp)&x)/(x^(tmp = -2893953848, tmp)))); - assertEquals(-3227648, x <<= (x<<((tmp = -193993010, tmp)*((983187830)|(3146465242.2783365))))); - assertEquals(-6455296, x += x); - assertEquals(-1771542585, x -= (x^(tmp = -1767335879, tmp))); - assertEquals(-0, x %= x); - assertEquals(0, x >>>= ((((tmp = -1612864670.4532743, tmp)*(tmp = 786265765.210487, tmp))*((((tmp = -893735877.3250401, tmp)*((x^(tmp = -2804782464.233885, tmp))<>>(-1648118674.380736))); - assertEquals(0, x >>= ((tmp = -2706058813.0028524, tmp)>>(2745047169))); - assertEquals(0, x += x); - assertEquals(0, x %= (-898267735.137356)); - assertEquals(0, x >>>= x); - assertEquals(0, x >>= ((265527509)/((tmp = 2190845136.7048635, tmp)+((x>>x)>>>((x%(x-x))&((((-2080184609.8989801)&((-327231633)>>>((tmp = 864849136, tmp)%(((-524363239)*(((((tmp = 2245852565.3713694, tmp)&(1918365.8978698254))>>>(tmp = -2463081769, tmp))-(((2438244059.471446)|((((-135303645.38470244)*(-861663832.2253196))%(tmp = 1273185196.0261836, tmp))|((2261539338.832875)%((320267076.2363237)+x))))>>(tmp = -2731398821, tmp)))/(tmp = -1947938611, tmp)))^x))))>>(tmp = 833666235, tmp))|x)))))); - assertEquals(-1116704570, x ^= (-1116704570)); - assertEquals(1379561710, x ^= (tmp = -280362968.19654894, tmp)); - assertEquals(-1673822208, x <<= x); - assertEquals(-1673822208, x |= (x<<(tmp = 1389479193.9038138, tmp))); - assertEquals(2559712, x >>>= (-2703763734.0354066)); - assertEquals(2593499, x ^= (x>>>((tmp = 148668150.03291285, tmp)^(tmp = -1580360304, tmp)))); - assertEquals(2070393855, x |= (tmp = -2227002907, tmp)); - assertEquals(304197770, x &= (tmp = 2453257354, tmp)); - assertEquals(304197770, x <<= ((-669331453.8814087)-(x^(x^(tmp = 33804899.98928583, tmp))))); - assertEquals(297068, x >>= x); - assertEquals(Infinity, x /= (x-x)); - assertEquals(NaN, x %= x); - assertEquals(0, x ^= x); - assertEquals(0, x %= ((tmp = 1723087085, tmp)%(2859382131.304421))); - assertEquals(0, x %= (((tmp = 2935439763, tmp)<<(-3163992768.637094))%(tmp = 67176733, tmp))); - assertEquals(0, x &= (tmp = 2480771277, tmp)); - assertEquals(0, x >>>= (x+(tmp = -3168690063, tmp))); - assertEquals(0, x *= ((tmp = -1915275449.1806245, tmp)>>>((tmp = -1644482094.1822858, tmp)/(tmp = -432927173, tmp)))); - assertEquals(0, x += (((2766509428.071809)/(x/((942453848.5423365)/(((tmp = -1284574492, tmp)&((tmp = 760186450.7301528, tmp)-(2464974117.358138)))/((x/(x|(672536969)))*(x>>(-1272232579)))))))>>(x*(-3175565978)))); - assertEquals(-1277710521, x -= (1277710521)); - assertEquals(-1277710521, x >>= (((tmp = -2349135858, tmp)-x)-x)); - assertEquals(-1277710521, x >>= ((tmp = 2135645051, tmp)*(tmp = -2468555366, tmp))); - assertEquals(-155971, x >>= (-1294859507)); - assertEquals(-0, x %= x); - assertEquals(0, x >>>= (((861078292.6597499)|(-268063679))-(((((-221864206.9494424)-(-3186868203.2201176))&(tmp = 1287132927, tmp))<<(((tmp = 1964887915, tmp)<<((25908382)^(tmp = -688293519.875164, tmp)))*(2075946055)))&(x-((x>>x)&(1395338223.7954774)))))); - assertEquals(788002218, x -= (-788002218)); - assertEquals(716399906, x &= (-1145868506)); - assertEquals(145776674, x &= (-1661931477.360386)); - assertEquals(145776674, x |= x); - assertEquals(-0.05255700469257692, x /= (tmp = -2773686873, tmp)); - assertEquals(-660918434, x |= (-660918434.2915542)); - assertEquals(1223537346, x ^= (tmp = -1871274596, tmp)); - assertEquals(305884336, x >>= (x&x)); - assertEquals(-1.1123775647978218e-8, x *= ((tmp = -793393031.4229445, tmp)/((tmp = -503919284, tmp)*(((((tmp = 429810625, tmp)>>>x)-((2091544148.870375)<<(((((x^x)%x)|x)/(-260773261))<<((tmp = -1323834653, tmp)&x))))*((-1231800099.3724015)+x))*((x+((-559726167)^x))>>>((-549148877)<<((((tmp = 1196115201, tmp)/((tmp = -2654658968.390111, tmp)%(tmp = -1044419580, tmp)))*(((((x>>>(733571228))+(2919762692.511447))/(-2718451983.570547))^x)+((2891533060.1804514)^((tmp = -2514488663, tmp)&x))))<<(tmp = -2526139641.6733007, tmp)))))))); - assertEquals(0, x >>>= x); - assertEquals(0, x *= x); - assertEquals(0, x |= x); - assertEquals(3076984066.336236, x -= ((tmp = -3076984066.336236, tmp)+((tmp = -446575828.5155368, tmp)&x))); - assertEquals(1, x /= x); - assertEquals(1513281647.839972, x *= (1513281647.839972)); - assertEquals(1251138155, x ^= ((tmp = 2124481052, tmp)&(2431937351.4392214))); - assertEquals(1, x /= x); - assertEquals(0, x &= (tmp = 627050040, tmp)); - assertEquals(497153016, x ^= (497153016)); - assertEquals(-1112801283, x |= (tmp = 2752196557, tmp)); - assertEquals(0.5735447276296568, x /= ((((tmp = -500878794, tmp)%(tmp = -2559962372.2930336, tmp))%(2661010102))+(tmp = -1439338297, tmp))); - assertEquals(1.0244795995097235e-9, x /= (559840067)); - assertEquals(0.43468811912309857, x *= (424301391)); - assertEquals(-1972757928, x ^= (tmp = -1972757928.9227014, tmp)); - assertEquals(-606757265, x ^= (tmp = -2923461577.264596, tmp)); - assertEquals(-37, x >>= (((-2736561559.7474318)%(tmp = -27668972.662741184, tmp))*(2774711606))); - assertEquals(-1923785671, x += ((-1923785597)+x)); - assertEquals(-3877639176, x += (tmp = -1953853505, tmp)); - assertEquals(-4688259242, x -= ((810620066.4394455)>>(((-1474285107.459875)>>x)/(((((-570672326.4007359)>>(tmp = -3086802075, tmp))%x)>>>(((tmp = 286938819.28193486, tmp)>>>((1712478502)>>(tmp = 3045149117.796816, tmp)))<<(tmp = 750463263.292952, tmp)))&(tmp = 2055350255.5669963, tmp))))); - assertEquals(-0, x %= x); - assertEquals(0, x <<= (1037856162.5105649)); - assertEquals(0, x *= x); - assertEquals(0, x &= (997845077.4917375)); - assertEquals(0, x *= x); - assertEquals(0, x *= x); - assertEquals(0, x <<= (((x<>(786927663))); - assertEquals(0, x ^= x); - assertEquals(0, x += x); - assertEquals(0, x &= (-2131910624.1429484)); - assertEquals(0, x >>>= (-43787814)); - assertEquals(-2415062021, x += (tmp = -2415062021, tmp)); - assertEquals(-4830124042, x += x); - assertEquals(-186683401, x |= (tmp = 1960135383, tmp)); - assertEquals(NaN, x *= ((tmp = -1674740173.9864025, tmp)%(((((((-432895485.7261934)-x)^x)>>>(((-1627743078.3383338)>>(179992151))<<((tmp = 911484278.0555259, tmp)|(((tmp = -3042492703, tmp)>>(((-663866035.302746)>>(((x-((440661929.50030375)>>>(tmp = 263692082, tmp)))*x)+x))/((1546004407)^(((tmp = 2023662889.1594632, tmp)*(tmp = -2456602312, tmp))+(tmp = 755602286.1810379, tmp)))))%((tmp = -336449961, tmp)|(tmp = 206780145, tmp))))))/(1068005219.1508512))<<(tmp = -474008862.6864624, tmp))/(((((((1518711056.5437899)>>>(tmp = 287418286.63085747, tmp))<<(tmp = 2823048707, tmp))^(((x<<(x^(-1600970311)))&(x>>(((tmp = 157300110.7636031, tmp)*(tmp = -3047000529, tmp))&(1743024951.3535223))))>>x))-(tmp = -2895435807, tmp))*((tmp = -314120704, tmp)&(tmp = 1759205369, tmp)))>>(tmp = 1833555960.046526, tmp))))); - assertEquals(NaN, x -= (tmp = 694955369, tmp)); - assertEquals(NaN, x *= (x%x)); - assertEquals(0, x |= x); - assertEquals(0, x ^= x); - assertEquals(0, x &= x); - assertEquals(NaN, x /= (x+x)); - assertEquals(NaN, x %= ((tmp = -1595988845, tmp)*((1754043345)>>>(-601631332)))); - assertEquals(0, x >>>= (tmp = 862768754.5445609, tmp)); - assertEquals(NaN, x /= x); - assertEquals(NaN, x %= x); - assertEquals(NaN, x *= (tmp = -1774545519, tmp)); - assertEquals(0, x >>>= (tmp = -2492937784, tmp)); - assertEquals(0, x %= ((((x<<(-1657262788.2028513))&((x^(tmp = -671811451, tmp))<<(-2984124996)))^(1455422699.7504625))-((-340550620)>>x))); - assertEquals(918278025, x ^= ((tmp = -918278027, tmp)^((tmp = 2889422870, tmp)/(tmp = -657306935.7725658, tmp)))); - assertEquals(918278025, x %= (2603186571.0582614)); - assertEquals(107034679.32509923, x %= (tmp = -811243345.6749008, tmp)); - assertEquals(53517339, x >>= (x%((((x*((tmp = -983766424, tmp)^(-1881545357.8686862)))|(tmp = -1429937087, tmp))>>((x<>((((tmp = -2347470476, tmp)&x)+((x&x)<<(396061331.6476157)))*(tmp = -3136296453.209073, tmp))))>>>(((tmp = 908427836, tmp)|(tmp = 207737064, tmp))|(((1253036041)-(tmp = 2705074182, tmp))+(-431215157.82083917)))))); - assertEquals(53477378, x &= ((((-1128036654.165636)*x)+x)>>(x>>(3080099059)))); - assertEquals(0, x >>= (-590692293)); - assertEquals(0, x %= (-2395850570.9700127)); - assertEquals(0, x *= ((tmp = 1377485272, tmp)&(1129370608))); - assertEquals(0, x += (x>>>(x%(((((tmp = -1746827236, tmp)+((tmp = -326913490, tmp)&((-58256967)&x)))*(tmp = -1176487022.001651, tmp))>>>(-2089147643))-x)))); - assertEquals(0, x <<= (tmp = 1073298160.2914447, tmp)); - assertEquals(-837811832, x ^= (-837811832)); - assertEquals(102760448, x <<= (tmp = 2833582450.4544373, tmp)); - assertEquals(0, x &= (((((((tmp = 2595641175, tmp)*x)+(tmp = -2049260172.1025927, tmp))%((2986747823)>>(tmp = -2120598518, tmp)))&((tmp = -2742408622, tmp)&x))>>x)*((1043474247.9601482)&(tmp = 1686365779.9885998, tmp)))); - assertEquals(0, x >>= ((tmp = 1717862848, tmp)-(tmp = 1077024446.4160957, tmp))); - assertEquals(NaN, x /= x); - assertEquals(NaN, x /= (-1669429787.975099)); - assertEquals(NaN, x -= (-2299895633.4807186)); - assertEquals(138173970, x ^= (138173970.56627905)); - assertEquals(-2084183776, x <<= (3073345316)); - assertEquals(-0, x %= x); - assertEquals(0, x >>= (-3080556066.068573)); - assertEquals(0, x &= ((tmp = -2587514820, tmp)*(x-((x^(1995672257))*(1125326747.2339358))))); - assertEquals(NaN, x %= x); - assertEquals(0, x >>= (tmp = 2139186585, tmp)); - assertEquals(-1904096640, x |= ((-602301360.1919911)*(-1270444810))); - assertEquals(1073741824, x <<= (tmp = -1069467849, tmp)); - assertEquals(1073741824, x ^= (x-x)); - assertEquals(536870912, x >>>= (-1579466367.160293)); - assertEquals(512, x >>= (972402804.3890183)); - assertEquals(512, x &= (tmp = 2664796831, tmp)); - assertEquals(16777216, x <<= (-2738292561)); - assertEquals(0, x >>>= ((((1397663615.3889246)|(1117420260.6730964))-(-1173734560))<<((tmp = 1007006104.0172879, tmp)<<((tmp = -623002097, tmp)%(tmp = -35829654.379403114, tmp))))); - assertEquals(1200191544, x ^= (tmp = -3094775752, tmp)); - assertEquals(71, x >>>= x); - assertEquals(71, x |= x); - assertEquals(1394763772, x += (1394763701)); - assertEquals(-1.492717171027427, x /= ((x&(tmp = 1243787435, tmp))-(2043911970.26752))); - assertEquals(-1.1002448961224718e-8, x /= ((((835185744)*(((tmp = 2165818437, tmp)^(tmp = 2567417009.1166553, tmp))/x))/x)/(((63485842.39971793)^(2668248282.597389))/x))); - assertEquals(0, x <<= (tmp = 1598238578.637568, tmp)); - assertEquals(0, x |= (x&((tmp = -1812945547.5373957, tmp)>>>x))); - assertEquals(0, x >>>= (x+(-1969679729.7299538))); - assertEquals(1582033662, x += (tmp = 1582033662, tmp)); - assertEquals(1, x >>>= x); - assertEquals(-550748739, x += ((tmp = -550748740, tmp)/(x&((2537822642.235506)^((-2167656297)%(tmp = 1161201210, tmp)))))); - assertEquals(-268921, x >>= (tmp = 1916069547.7381654, tmp)); - assertEquals(-0.00021776939364231114, x /= (tmp = 1234888868, tmp)); - assertEquals(0, x <<= (-1036375023)); - assertEquals(0, x &= ((((x/(2398886792.27443))&(x|((-1813057854.1797302)-x)))&(x/(((tmp = 3091133731.4967556, tmp)|(3013139691.823039))<>>(2542784636.963599))); - assertEquals(0, x += ((x*x)/(tmp = 347079383, tmp))); - assertEquals(788347904, x |= ((1462257124.6374629)*((3180592147.4065146)-(x&(1922244678))))); - assertEquals(2130672735, x |= (tmp = -2846986145, tmp)); - assertEquals(-1331327970, x ^= ((656251304)-(tmp = 1489152359, tmp))); - assertEquals(-0.14377179742889856, x %= (((2889747597.813753)-(1730428996))/(((tmp = -1378710998, tmp)&x)|x))); - assertEquals(-1754612583.143772, x += ((-1754725729)^((-2285838408)>>>(1434074349)))); - assertEquals(-0, x %= x); - assertEquals(0, x &= (tmp = -1031961332, tmp)); - assertEquals(NaN, x /= x); - assertEquals(NaN, x /= (3059476325)); - assertEquals(NaN, x *= ((x*((((tmp = 13529540.462185979, tmp)&x)^((x<<(-1312696238.1628869))&(-2029766712.3852897)))>>x))/x)); - assertEquals(1657339940, x ^= ((tmp = -488956817.1491232, tmp)&(tmp = -2352413900.1983714, tmp))); - assertEquals(-530683621952432200, x *= (tmp = -320202035.2882054, tmp)); - assertEquals(229226258, x ^= ((tmp = -1263410990.026416, tmp)+(((-808046349)&(tmp = -1294442506, tmp))&((tmp = 1147437219, tmp)<<((tmp = -820299900, tmp)-(tmp = -1947748943.3443851, tmp)))))); - assertEquals(7163320, x >>= (-2631307131)); - assertEquals(-68, x |= (((-1271721343)>>x)%x)); - assertEquals(-39956523818.38862, x *= (587595938.505715)); - assertEquals(0, x -= x); - assertEquals(0, x >>>= ((x^(x+x))<<(tmp = 265212367, tmp))); - assertEquals(0, x |= (((x>>((tmp = 2294761023, tmp)/(x>>(2125624288))))&((-2125650113)|(tmp = 1014409884, tmp)))%(tmp = -527324757, tmp))); - assertEquals(0, x >>= ((tmp = 2267075595, tmp)*(-1681569641.8304193))); - assertEquals(0, x >>>= x); - assertEquals(0.5738410949707031, x -= ((tmp = -1846572645.573841, tmp)%((((((x^(((-156613905.64173532)/x)<>>x))^x))/(570585894.8542807))+(x&(-2544708558)))^((((tmp = -2539082152.490635, tmp)+((((-657138283)/(2204743293))-((tmp = -1422552246.565012, tmp)+x))<<(x-x)))>>(x/(x>>>(tmp = -3027022305.484394, tmp))))<>>= ((((tmp = 2473451837.613817, tmp)>>((2526373359.1434193)>>(x<>>= x); - assertEquals(-1073741824, x <<= x); - assertEquals(3221225472, x >>>= ((x*(1478586441.081221))&(tmp = -3050416829.2279186, tmp))); - assertEquals(0, x ^= x); - assertEquals(0, x *= x); - assertEquals(-1017771903.0298333, x -= (1017771903.0298333)); - assertEquals(0.6404112721149928, x /= ((tmp = -144667370, tmp)^(-2849599562))); - assertEquals(-2410517638773644000, x -= (((tmp = 1759631550, tmp)*x)*((((tmp = -2949481475, tmp)>>>x)*x)|(tmp = -2977983804, tmp)))); - assertEquals(-0, x %= (x+((((tmp = -1307866327.7569134, tmp)<<((x&((tmp = -2380043169.8405933, tmp)|x))>>(472992789.7639668)))|(((((x<<(tmp = -1416427232.7298179, tmp))%(-1404989679.409946))*((x/(tmp = -992416608, tmp))/(tmp = 524646495, tmp)))-(tmp = 734405570, tmp))>>x))/(1079256317.7325506)))); - assertEquals(0, x <<= (tmp = 2459834668, tmp)); - assertEquals(-0, x /= (tmp = -1892164840.5719755, tmp)); - assertEquals(0, x >>= (x|(((1299844244)>>>(((tmp = -2422924469.9824634, tmp)|x)-((((1914590293.2194016)+(-3033885853.8243046))-((tmp = -1720088308, tmp)%x))<<(tmp = 2210817619, tmp))))<>>(((x^(2944537154))|(tmp = -1334426566, tmp))*(((((((-2705218389)&x)+(1987320749))+(tmp = -111851605, tmp))|(2894234323))-(265580345))&x)))%(((tmp = 1431928204.6987057, tmp)&(tmp = 914901046, tmp))&(x>>>x)))); - assertEquals(0, x >>>= (tmp = 1941940941, tmp)); - assertEquals(0, x %= (3089014384)); - assertEquals(0, x += ((tmp = 2948646615, tmp)*x)); - assertEquals(-0, x /= (tmp = -1480146895, tmp)); - assertEquals(NaN, x /= x); - assertEquals(NaN, x %= (-2995257724.158043)); - assertEquals(NaN, x %= (tmp = 2714835455, tmp)); - assertEquals(NaN, x /= (tmp = -311440765.98078775, tmp)); - assertEquals(NaN, x -= (-1600234513.697098)); - assertEquals(0, x <<= x); - assertEquals(0, x <<= (-1499045929)); - assertEquals(-0, x *= (-2491783113)); - assertEquals(0, x ^= (x%((x>>(((1234398704.3681123)>>>x)%(x+x)))>>(402257223.4673699)))); - assertEquals(-643225204, x ^= (((-55960194.698637486)+((((721411198)-(((tmp = 1308676208.7953796, tmp)%(2242904895))-x))>>((((tmp = 332791012, tmp)&((tmp = -2094787948, tmp)/((x/(2427791092))^(2444944499.6414557))))%(((x+(1253986263.5049214))+(((((3135584075.248715)+((tmp = -2569819028.5414333, tmp)%(440908176.1619092)))>>>(x<<((3061615025)-x)))%x)%(x+((2369612016)*((((tmp = 1173615806, tmp)*(-1910894327))&(2428053015.077821))*(-55668334.70082307))))))<<(tmp = -2129259989.0307562, tmp)))+(1579400360)))%((-3053590451.8996153)>>x)))+(x>>(x%(x^((-1772493876)^x)))))); - assertEquals(413738663060841600, x *= x); - assertEquals(1581062538.4501781, x %= ((tmp = -1298397672.0300272, tmp)-((2237197923)+(tmp = -1385478459, tmp)))); - assertEquals(755644566.8709538, x %= (tmp = -825417971.5792243, tmp)); - assertEquals(1, x /= x); - assertEquals(0, x >>>= ((89330582)%(-1012731642.4855506))); - assertEquals(0, x >>>= x); - assertEquals(NaN, x %= ((x>>>((x/(tmp = -1848848941.2352903, tmp))>>>(tmp = -71862893, tmp)))&(-2385996598.2015553))); - assertEquals(NaN, x += (-2292484503.318904)); - assertEquals(NaN, x *= (2961064461)); - assertEquals(NaN, x += (x<<((2076798243.6442)/((tmp = -81541044.75366282, tmp)^((3041366498.551101)+((2126874365)/(tmp = -177610359, tmp))))))); - assertEquals(NaN, x %= ((x/((x/x)+x))>>>x)); - assertEquals(NaN, x /= x); - assertEquals(NaN, x += (1171761980.678)); - assertEquals(NaN, x += ((2355675823)<<(-390497521))); - assertEquals(NaN, x %= x); - assertEquals(0, x &= (tmp = -658428225.56619, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x <<= (1643310725.5713737)); - assertEquals(0, x <<= x); - assertEquals(0, x <<= (-397005335.3712895)); - assertEquals(0, x >>>= (tmp = -2804713458.166788, tmp)); - assertEquals(0, x <<= (((((((tmp = 1879988501, tmp)%(1528081313.9360204))+(1376936736))*((((x>>>((1736268617.339198)>>>(-2598735297.4277673)))<<((((((((-2742982036)/(231867353.4549594))-(875335564))<>>((-1519588625.2332087)^(483024636.2600144)))); - assertEquals(52193878.40997505, x -= ((tmp = -341753803.40997505, tmp)%(tmp = -96519975, tmp))); - assertEquals(-1665844168.938803, x -= (1718038047.348778)); - assertEquals(3.6962232549405003e-19, x /= (((((-809583468.5507183)>>>((tmp = 286797763, tmp)%((1579183142.7321532)/(1853824036.001172))))<>(((x|x)^((tmp = -2641304815, tmp)<<(x<>(((((268338128.8300134)&(-1778318362.8509881))*(751081373.346478))<<(((525066612)>>(-1139761212))*(2949167563.299916)))<>>(x/(tmp = 46977522.46204984, tmp)))>>(-2466993199.615269))&(tmp = 14524430.287991166, tmp))); - assertEquals(0, x >>= x); - assertEquals(0, x /= (tmp = 578120637, tmp)); - assertEquals(-17267104, x -= (((tmp = 1515285919.495792, tmp)+(((tmp = -1364790286.7057304, tmp)+((954599071)>>((897770243.1509961)*x)))^x))>>>(566027942.1732262))); - assertEquals(-17267104, x &= x); - assertEquals(189138241, x ^= ((tmp = 1565742675.9503145, tmp)-((tmp = 1737806643, tmp)|((x*(tmp = -1382435297.5955122, tmp))*(-2820516692.153056))))); - assertEquals(189138241, x %= (x*(tmp = -1670678493, tmp))); - assertEquals(1693, x %= ((-2328713314)>>>(1623637325))); - assertEquals(1693, x %= ((-1019394014)*(x|x))); - assertEquals(3386, x += x); - assertEquals(9268970871604, x *= (2737439714)); - assertEquals(-4720.120483643183, x /= (tmp = -1963714889, tmp)); - assertEquals(-1, x >>= ((x^(((-2404688047.455056)|((1439590234.6203847)<<(tmp = -2496557617, tmp)))/((x<<((tmp = 1865549512.282249, tmp)/(((360384191.55661833)>>(tmp = -1225297117.344188, tmp))>>>(2703264010.4122753))))*(1521960888.0071676))))%(tmp = 2834001448.0508294, tmp))); - assertEquals(63, x >>>= (x&(-3079339174.6490154))); - assertEquals(0, x >>>= (1039770956.6196513)); - assertEquals(0, x >>>= (-1074820214)); - assertEquals(0, x >>>= (x/x)); - assertEquals(0, x >>= ((tmp = -449117604.2811785, tmp)&x)); - assertEquals(-0, x /= (tmp = -118266935.1241343, tmp)); - assertEquals(2226140134, x += (tmp = 2226140134, tmp)); - assertEquals(2068827161, x ^= ((tmp = -1950744808.846384, tmp)>>((2258661151)^((tmp = -1118176421.8650177, tmp)<<(2828634014))))); - assertEquals(123, x >>>= (-1779624840.0515127)); - assertEquals(0, x >>>= (x|((tmp = -239082904, tmp)<<(tmp = 1404827607, tmp)))); - assertEquals(0, x >>>= x); - assertEquals(1793109749, x ^= (tmp = -2501857547.710491, tmp)); - assertEquals(855, x >>>= x); - assertEquals(0, x >>>= (-847289833)); - assertEquals(0, x %= (-2271241045)); - assertEquals(169648072, x ^= (((tmp = 169648072.66759944, tmp)^x)|x)); - assertEquals(176025927479164930, x *= ((tmp = 1111997198.8803885, tmp)<<(tmp = 2913623691, tmp))); - assertEquals(176025926613281700, x += ((tmp = -865883245, tmp)<<(x+(-2624661650)))); - assertEquals(3406506912, x >>>= ((x|(tmp = 2436016535, tmp))*(((tmp = -1222337225, tmp)<<((1765930268)&x))*(tmp = 1600702938, tmp)))); - assertEquals(1.694694170868292, x %= (x/(-1597121830.794548))); - assertEquals(0, x >>= (tmp = -2443203089, tmp)); - assertEquals(0, x >>>= (1323174858.2229874)); - assertEquals(0, x &= ((tmp = 846556929.2764134, tmp)|(((1483000635.0020065)|(-3151225553))|(tmp = -229028309, tmp)))); - assertEquals(0, x >>= x); - assertEquals(0, x >>= ((((((-2677334787)>>>x)>>((tmp = 496077992, tmp)&((((x<<(x*(tmp = 1095163344.2352686, tmp)))+(-952017952))%((x<<((x*x)/(tmp = 2983152477, tmp)))^((tmp = -939521852.1514642, tmp)^(tmp = 143967625.83755958, tmp))))*((tmp = 551827709.8366535, tmp)>>>x))))^((-1552681253.69869)-(-1874069995)))>>>(x>>(x%(tmp = -2554673215, tmp))))|(tmp = -190693051.77664518, tmp))); - assertEquals(0, x /= (tmp = 427402761.37668264, tmp)); - assertEquals(0, x <<= x); - assertEquals(0, x |= (x>>>(((((-543326164.0673618)>>>(-2344090136.707964))>>>((((-563350246.6026886)/x)/(1525481037.3332934))&(tmp = -2917983401.88958, tmp)))^(-1094667845.1208413))^x))); - assertEquals(0, x &= (1080322749.897747)); - assertEquals(0, x %= (tmp = -1572157280, tmp)); - assertEquals(0, x >>>= x); - assertEquals(0, x %= ((377280936)|x)); - assertEquals(708335912, x -= (tmp = -708335912, tmp)); - assertEquals(2766937, x >>>= x); - assertEquals(547342779, x += (tmp = 544575842, tmp)); - assertEquals(546273751, x -= ((x>>>(472833385.9560914))|((tmp = -1164832103.9970903, tmp)/(3147856452.1699758)))); - assertEquals(546273751, x &= x); - assertEquals(0, x ^= x); - assertEquals(0, x >>>= (tmp = -3181805175, tmp)); - assertEquals(-375546685, x |= (-375546685.08261824)); - assertEquals(1089992785780217200, x *= (tmp = -2902416209, tmp)); - assertEquals(0, x %= x); - assertEquals(-1854981526, x -= ((x-x)-(-1854981526))); - assertEquals(-3709963052, x += x); - assertEquals(-316772482, x %= (tmp = -1696595285, tmp)); - assertEquals(-316772482, x |= x); - assertEquals(1, x /= x); - assertEquals(0, x -= x); - assertEquals(-1418375842, x ^= (-1418375842)); - assertEquals(-2, x >>= x); - assertEquals(-4, x += x); - assertEquals(-8388608, x &= (x<<(-350555339.30086184))); - assertEquals(-16777216, x += x); - assertEquals(-0, x %= x); - assertEquals(1083355129, x += (tmp = 1083355129, tmp)); - assertEquals(0, x &= (((tmp = 389729053, tmp)-(tmp = 2944192190.0939536, tmp))/(x-(2081712461.2657034)))); - assertEquals(0, x += x); - assertEquals(-3, x += ((3147270119.5831738)>>((2455837253.1801558)%((-2100649096)>>(((290236808.01408327)|(x&((2661741230.3235292)|((tmp = 1686874589.4690177, tmp)<>(((-2962686431)%x)>>((((2438370783)-(tmp = 2667305770.4839745, tmp))>>>x)>>>x)))<<((x&(tmp = 1428498616, tmp))|((tmp = 2621728539.102742, tmp)/(-204559901))))); - assertEquals(2, x ^= (x|((((tmp = 1751230118.6865973, tmp)/(-867465831.207304))>>((-808143600.0912395)+(-2882191493.0506454)))^x))); - assertEquals(2, x %= (-2015954220.2250996)); - assertEquals(0, x >>>= (tmp = 401373999, tmp)); - assertEquals(0, x >>= (2371830723)); - assertEquals(0, x >>>= ((((tmp = 2765919396, tmp)-x)-(530310269.7131671))|(tmp = -615761207.9006102, tmp))); - assertEquals(-145389011, x ^= (tmp = -145389011, tmp)); - assertEquals(-145389011, x |= x); - assertEquals(1632929832, x &= (-2518898392)); - assertEquals(4190540017.751949, x += (tmp = 2557610185.751949, tmp)); - assertEquals(4980024282.153588, x += ((1841304364.1177452)%(tmp = 1051820099.7161053, tmp))); - assertEquals(0, x >>>= (((((1379314342.4233718)>>((-2782805860)^((x%(tmp = 1328845288, tmp))>>>(tmp = 901403219.858733, tmp))))+(x/((tmp = -3078904299, tmp)/x)))/x)|(x|(1399702815)))); - assertEquals(-1820494882, x ^= (tmp = -1820494882.407127, tmp)); - assertEquals(-305870376, x %= (tmp = -757312253, tmp)); - assertEquals(-577530443, x += (x|(tmp = -1958083619.6653333, tmp))); - assertEquals(333541412591776260, x *= x); - assertEquals(-949341696, x >>= ((((1550069663)<<((x>>>(tmp = 2406565178.902887, tmp))>>>((1844746612.632984)/((tmp = 2233757197, tmp)*((-1524891464.1028347)>>(tmp = 2498623474.5616803, tmp))))))&x)<<(x&(tmp = -370379833.3884752, tmp)))); - assertEquals(-277202090, x |= ((-762200848.8405354)-(tmp = 1749136282, tmp))); - assertEquals(0.13704539927239265, x /= (tmp = -2022702633.373563, tmp)); - assertEquals(0, x -= x); - assertEquals(0, x %= ((132951580.19304836)-((427623236.27544415)-(1212242858)))); - assertEquals(0, x &= ((449148576)&(-1609588210.249217))); - assertEquals(0, x >>= x); - assertEquals(0, x -= x); - assertEquals(-0, x /= (tmp = -1640777090.9694843, tmp)); - assertEquals(0, x &= (((tmp = -1923412153, tmp)>>>((x>>(tmp = 3027958119.0651507, tmp))+(60243350)))>>(tmp = -2610106062, tmp))); - assertEquals(0, x ^= (((-186998676)/(tmp = 2697937056, tmp))-x)); - assertEquals(-1147950080, x |= ((2425449461)*(tmp = -2525854833, tmp))); - assertEquals(457688198, x ^= (2698274950.660941)); - assertEquals(8724, x %= ((1174351031)>>>((371599047.36048746)+(3025292010)))); - assertEquals(0, x <<= (tmp = -710011617, tmp)); - assertEquals(0, x >>>= (1693410026)); - assertEquals(1443005362, x ^= ((tmp = -2851961934, tmp)+((((x%x)-(tmp = 547622400, tmp))<<(((tmp = 722396486.5553623, tmp)|x)>>>((((tmp = -542268973.5080287, tmp)<<(tmp = 1347854903.771954, tmp))>>>(tmp = -889664427.7115686, tmp))&((tmp = 1549560114, tmp)*(tmp = 964918035, tmp)))))&(-2422502602.920377)))); - assertEquals(3986573462, x -= (-2543568100)); - assertEquals(7973146924, x += x); - assertEquals(-1, x >>= (-75987297)); - assertEquals(-12, x += ((2940824338.64834)>>(tmp = 3061467355, tmp))); - assertEquals(-3.8229398525977614e-8, x /= (313894554)); - assertEquals(-2.890709270374084e-17, x /= (tmp = 1322491989, tmp)); - assertEquals(0, x |= (x-x)); - assertEquals(0, x >>>= (tmp = -1205300664, tmp)); - assertEquals(-0, x /= (((2869505187.6914144)>>(tmp = 1541407065, tmp))/(((-571132581)>>>(x>>x))/((x^(170373762.8793683))>>>((((tmp = -363073421.05897164, tmp)|(((tmp = -1591421637, tmp)>>(1095719702.8838692))&(636687681.9145031)))^x)^(x|x)))))); - assertEquals(-1487828433, x ^= (-1487828433.3462324)); - assertEquals(-0, x %= x); - assertEquals(1716342498, x -= ((tmp = 2578624798, tmp)^x)); - assertEquals(1636, x >>= ((264194540)>>>(-801900756))); - assertEquals(0, x >>>= ((tmp = 2502688876, tmp)+((x<<(x|((-628272226.0338528)|((x<<(-2083074091))>>>(tmp = 1692123246.8418589, tmp)))))>>(1594759826.990993)))); - assertEquals(0, x <<= (tmp = -904399643, tmp)); - assertEquals(NaN, x /= ((x^(x-x))%((tmp = 1744962024.4882128, tmp)%x))); - assertEquals(NaN, x /= (-1013142883.1845908)); - assertEquals(NaN, x /= ((tmp = 793633198, tmp)^(-2993598490.8659954))); - assertEquals(0, x &= (x>>((tmp = 1200937851, tmp)<<(((tmp = -2807378465, tmp)&(tmp = -143778237, tmp))|(tmp = -1200772223, tmp))))); - assertEquals(0, x <<= x); - assertEquals(88144, x |= (((((tmp = 3002723937.8560686, tmp)*(tmp = -3171720774.2612267, tmp))%(((tmp = -2586705978.7271833, tmp)%((x+(-1553704278))&(2405085526.501994)))>>((-240842053)>>>(((((tmp = -1886367228.4794896, tmp)>>>x)^(tmp = 2604098316, tmp))^(tmp = 1362808529, tmp))<<((tmp = -1062263918, tmp)|((-172718753)%(tmp = -1910172365.4882073, tmp)))))))^((1444153362)>>((x&((-1205465523.2604182)^(tmp = -2062463383, tmp)))>>(tmp = 956712476, tmp))))>>((((-1004215312)^((((-1707378612.5424936)^(tmp = 2372161553, tmp))/((tmp = 1802586581, tmp)*((2082257.1896460056)&((tmp = -1270773477, tmp)^(tmp = 942517360.3447798, tmp)))))+x))%((((666494127)^(x^x))>>>(tmp = -2592829775, tmp))+((-1601528223)+((x+(tmp = -2417034771.7409983, tmp))>>>((tmp = -730673817, tmp)*x)))))>>x))); - assertEquals(-2603179111.7557006, x -= ((2603267255.755627)+(x/(1200979191.2823262)))); - assertEquals(1691788185, x >>= (tmp = 3088840032, tmp)); - assertEquals(-168382533, x |= (tmp = -780750941.4590135, tmp)); - assertEquals(-168382533, x >>= (60741120.48285198)); - assertEquals(-134287365, x |= (x*(tmp = 834637940.7151251, tmp))); - assertEquals(-1481917089, x -= (tmp = 1347629724, tmp)); - assertEquals(1, x >>>= x); - assertEquals(262144, x <<= (2680216914)); - assertEquals(1075132032, x ^= (x-((tmp = 3220359552.3398685, tmp)^(((-434474746.6039338)|((((((((tmp = 1945689314.9683735, tmp)>>(1300022273))>>>(333705550))&x)%(588357521))-(x+(x^(((tmp = -134560382, tmp)+x)-((((994246147.7195556)-(-1506599689.7383268))%(x<>((1256426985.5269494)+(tmp = 1860295952.8232574, tmp)))))))^(((tmp = 917333220.2226384, tmp)>>x)>>>(tmp = 865898066, tmp)))%((x|(x%((tmp = -2660580370, tmp)&(tmp = 2966426022, tmp))))*x)))/(((tmp = 682585452, tmp)&(-3219368609))+((tmp = -1330253964, tmp)+((x&(2857161427))/x))))))); - assertEquals(274944, x &= ((2606953028.1319966)-(-1707165702))); - assertEquals(266752, x &= ((x<<((x+(x+(x^(-1570175484))))^x))^(x+(x<<(tmp = 90330700.84649956, tmp))))); - assertEquals(266752, x &= ((((x*(tmp = 2033225408, tmp))-(x-((tmp = 1507658653, tmp)/(-3016036094))))>>>((1497480588)>>(2784070758)))|(tmp = -3025904401.93921, tmp))); - assertEquals(-1680442631, x |= ((x/(445284843))|((tmp = 2614520057.2723284, tmp)<>>= (tmp = -1577031386.938616, tmp)); - assertEquals(2493, x >>= ((3044630989.3662357)-(-2670572992.8580284))); - assertEquals(-0.0000017317105653562252, x /= (-1439617017.9207587)); - assertEquals(0, x &= (2359806567)); - assertEquals(623768541, x ^= (623768541)); - assertEquals(1028567149.0716183, x += (((tmp = 1307794561, tmp)%(x>>x))-(-404798608.0716183))); - assertEquals(-1.2971762489811298, x /= (tmp = -792927830.6471529, tmp)); - assertEquals(-1.2971762489811298, x %= ((-2426421701.2490773)/(-689566815.3393874))); - assertEquals(-2147483648, x <<= x); - assertEquals(-2147483648, x &= (tmp = -869991477, tmp)); - assertEquals(-268435456, x >>= (1383186659)); - assertEquals(0, x -= x); - assertEquals(-2009742037, x |= (-2009742037.5389993)); - assertEquals(-1386630820, x ^= (627864695)); - assertEquals(-1033479103975173600, x *= (tmp = 745316697.9046186, tmp)); - assertEquals(-1628048487, x |= (2662654361)); - assertEquals(325551, x >>>= (340874477)); - assertEquals(-1235730537, x ^= (tmp = 3059533880.0725217, tmp)); - assertEquals(-1235730537, x %= (2247137328)); - assertEquals(-220200960, x <<= ((x>>x)-x)); - assertEquals(0, x <<= ((tmp = 337220439.90653336, tmp)|(tmp = 2901619168.375105, tmp))); - assertEquals(0, x >>>= ((-2114406183)/x)); - assertEquals(0, x %= ((1425828626.3896675)/x)); - assertEquals(0, x >>>= ((3213757494)>>>(2595550834.3436537))); - assertEquals(0, x <<= x); - assertEquals(-0, x /= ((1544519069.5634403)/((tmp = -1332146306, tmp)&(-762835430.0022461)))); - assertEquals(0, x ^= x); - assertEquals(0, x >>= (x|((((x*((-786272700)+x))<>>(706010741))); - assertEquals(-964928697, x |= (-964928697)); - assertEquals(1, x /= x); - assertEquals(0, x >>= ((((tmp = 1778003555.3780043, tmp)>>(x%((tmp = -766158535, tmp)^((-2681449292.8257303)%((x-(x|(tmp = 1966478387.2443752, tmp)))^(((tmp = -1848398085, tmp)&x)>>>(tmp = -2860470842, tmp)))))))%(tmp = 2315077030, tmp))^x)); - assertEquals(0, x ^= x); - assertEquals(-288007757, x ^= ((tmp = 183607156.1803962, tmp)-(tmp = 471614914, tmp))); - assertEquals(-270573581, x |= (tmp = -849475741.9424644, tmp)); - assertEquals(-2129929, x |= (((((1942852445)&(tmp = 1280372312, tmp))*(x*(tmp = -1601900291, tmp)))^((509080002.81080174)-(tmp = 2699498226.9164257, tmp)))>>(((-335361221)>>(tmp = 843134832, tmp))%(-35532542)))); - assertEquals(-232622355, x ^= ((-3060885134.5375547)-(((tmp = 1965966723, tmp)-((tmp = 1248630129.6970558, tmp)<<(tmp = 1859637857.5027392, tmp)))*x))); - assertEquals(-52149658093200070, x *= (224181627.31264615)); - assertEquals(-697122968, x ^= (x-(x+(tmp = 2747211186.407712, tmp)))); - assertEquals(-2146269688, x &= ((tmp = -1466710519, tmp)^(x/(1419998975)))); - assertEquals(-536567422, x >>= (((((tmp = -1760701688.999274, tmp)>>(-1821976334))/(((tmp = -1660849531, tmp)>>>x)-((x+((tmp = -2489545009.4327965, tmp)>>>((tmp = -267360771.39148235, tmp)^x)))*(((-1453528661)%x)>>>(((243967010.3118453)/((((((2977476024)>>>((-1630798246)<>>x)|(1600638279)))^x)>>(x<<(tmp = -152589389, tmp))))>>>(x|(2821305924.9225664)))))))+(618968002.8307843))%(tmp = -1005408074.368274, tmp))); - assertEquals(40962, x &= (114403906)); - assertEquals(19741977727890, x *= ((-2367133915.963945)>>>(-3119344126))); - assertEquals(1313341440, x <<= x); - assertEquals(626, x >>>= ((((-333992843)%(tmp = -2742280618.6046286, tmp))>>>x)|x)); - assertEquals(0, x <<= (2598188575)); - assertEquals(NaN, x %= x); - assertEquals(NaN, x %= x); - assertEquals(0, x ^= (x%((2507288229.3233204)&(tmp = -1714553169.9276752, tmp)))); - assertEquals(0, x /= ((633436914.3859445)>>>(tmp = 1579804050.6442273, tmp))); - assertEquals(0, x *= ((tmp = 1172218326, tmp)<<((tmp = -2491306095.8456626, tmp)*(((tmp = 1305371897.9753594, tmp)>>((x^(((3077992060)*x)<<(492815553.904796)))>>((652151523)|x)))%x)))); - assertEquals(0, x <<= x); - assertEquals(0, x %= (1118131711)); - assertEquals(0, x &= ((tmp = 2734673884, tmp)|(x-((tmp = 2694578672.8975897, tmp)*(((x>>(2350811280.974167))*(1052548515))&(x^(x*(tmp = -1336287059.0982835, tmp)))))))); - assertEquals(-2632782867.1256156, x += ((tmp = -2743992725.1256156, tmp)+(tmp = 111209858, tmp))); - assertEquals(-0, x %= x); - assertEquals(0, x >>>= (((tmp = -2050519887, tmp)^(106865302.74529803))>>(1642851915.2909596))); - assertEquals(-171964826, x |= (tmp = -171964826.6087358, tmp)); - assertEquals(-2.113405951193522, x /= (tmp = 81368572.80206144, tmp)); - assertEquals(3, x >>>= x); - assertEquals(0, x %= x); - assertEquals(-1717345907.837667, x += (-1717345907.837667)); - assertEquals(-100964883, x |= (tmp = -109574931.80629134, tmp)); - assertEquals(-33849857, x |= (-974111718.2433801)); - assertEquals(1, x >>>= (tmp = -2556222849.005595, tmp)); - assertEquals(1, x /= x); - assertEquals(0, x >>>= (-1796630999.4739401)); - assertEquals(0, x >>>= x); - assertEquals(2031695758, x += (((x/(((tmp = -2364918403, tmp)%(x^((tmp = 277767803.6375599, tmp)>>((((tmp = 540036080, tmp)/(x|(2665298931)))/(x|((x>>(-2035456216.6165116))<<(2143184420.5651584))))^x))))&(tmp = 927798419.8784283, tmp)))-(-2031695758))>>>x)); - assertEquals(2031695758, x |= x); - assertEquals(2031695758, x <<= (((x>>(x%x))|(tmp = -1164531232.7384055, tmp))*x)); - assertEquals(124004, x >>>= x); - assertEquals(529846352, x += ((529722348)%((2417645298.865121)|(x>>(x>>>(x+x)))))); - assertEquals(60067920, x &= (((tmp = -3166008541.8486233, tmp)-x)|(x%x))); - assertEquals(1415594240755200, x *= ((-2786707452.873729)>>(((tmp = -2369315809, tmp)*((1559868465)|(1011218835.1735028)))>>>x))); - assertEquals(1415595182259140, x += (941503939.9023957)); - assertEquals(0, x <<= ((tmp = 2887184784.265529, tmp)/(-2575891671.0881453))); - assertEquals(0, x &= ((tmp = -1546339583, tmp)>>>(tmp = -587433830, tmp))); - assertEquals(0, x *= (((tmp = 1356991166.5990682, tmp)%(tmp = -284401292, tmp))*(1869973719.9757812))); - assertEquals(NaN, x %= x); - assertEquals(0, x ^= (((tmp = 92575404.43720293, tmp)>>>(263475358.17717505))%x)); - assertEquals(0, x <<= (((561514358)*(tmp = -439584969, tmp))%((((-3005411368.7172136)+x)|(-2230472917))&x))); - assertEquals(0, x >>= ((x>>>x)-((x-(1630649280.510933))+x))); - assertEquals(0, x >>= (tmp = -1772403084.7012017, tmp)); - assertEquals(0, x *= x); - assertEquals(0, x += x); - assertEquals(0, x &= x); - assertEquals(0, x >>= (tmp = 1622680387, tmp)); - assertEquals(1033887633558225200, x -= ((-510616337)*(tmp = 2024783695, tmp))); - assertEquals(-2.8073538539158063e+27, x *= (tmp = -2715337492, tmp)); - assertEquals(-2.8073538539158063e+27, x -= ((tmp = -1664804757, tmp)&((tmp = -226616419, tmp)>>>(1006711498)))); - assertEquals(1894539615, x |= (tmp = -2400427681.1831083, tmp)); - assertEquals(7400545, x >>= (774629608.4463601)); - assertEquals(456756268, x += (449355723)); - assertEquals(285771784, x &= (-1316427366)); - assertEquals(17, x >>= ((tmp = -220509931.20787525, tmp)*(((tmp = 2518859292, tmp)+(-1477543005.1586645))>>(tmp = 3172820250.687789, tmp)))); - assertEquals(85924262443, x *= (x*((tmp = -2856669745.965829, tmp)&(((tmp = 401420695, tmp)^(tmp = 2355371132, tmp))|(tmp = 590645330.021911, tmp))))); - assertEquals(1703875715, x ^= ((-2576394029.7843904)-x)); - assertEquals(1703875715, x %= (tmp = 2234144310, tmp)); - assertEquals(271405807, x ^= (1973569132)); - assertEquals(1060178, x >>>= (tmp = -84823096, tmp)); - assertEquals(8, x >>>= (tmp = 2246120561.905554, tmp)); - assertEquals(-2846791089, x += (-2846791097)); - assertEquals(104933962, x &= (x-(-2969030955.99584))); - assertEquals(489215611.96215343, x -= (-384281649.96215343)); - assertEquals(489215611, x |= x); - assertEquals(1186191360, x <<= ((tmp = 774407142.993727, tmp)%x)); - assertEquals(1186191360, x %= (1555004022)); - assertEquals(-1697134080, x ^= (tmp = -597421568, tmp)); - assertEquals(-1102053376, x <<= ((-927370769.4059179)^((tmp = 1093490918, tmp)>>(((-2522227493.3821955)%x)+(-2657319903))))); - assertEquals(1086450058, x ^= (-23991926.187098265)); - assertEquals(1086450058, x |= x); - assertEquals(-1.6554590588410778, x /= (x|(x<<(x+x)))); - assertEquals(67108863, x >>>= ((-926530233)+x)); - assertEquals(494553310, x ^= (tmp = 512079649, tmp)); - assertEquals(207751168, x &= (2892146720.6261826)); - assertEquals(207751168, x &= x); - assertEquals(207751168, x |= x); - assertEquals(6340, x >>>= (((((x<<(x-((-2819638321)*((x<>x)+(tmp = 2016170261, tmp))+(tmp = 2755496043.772017, tmp))+(-841368625.1402085))); - assertEquals(6340, x ^= ((x/(tmp = -192734784, tmp))>>>(((-140306239)&x)-x))); - assertEquals(1, x /= x); - assertEquals(0, x >>= x); - assertEquals(26786600, x ^= (tmp = 26786600, tmp)); - assertEquals(-0.014657576899542954, x /= ((-1454855938.0338)+(-372635753.3681567))); - assertEquals(0, x &= ((tmp = 2480635933, tmp)&(-2986584704.9165974))); - assertEquals(-2108639122, x += ((tmp = 2108639123.8683565, tmp)^((-881296055)/(((x<<(2026200582))|(tmp = -862495245.138771, tmp))-(-1111596494.892467))))); - assertEquals(1893466112, x <<= (tmp = 607974481, tmp)); - assertEquals(1893466112, x |= x); - assertEquals(1133122783.997418, x += ((tmp = -760343332, tmp)-((x-(tmp = -878561823.4218843, tmp))/(tmp = -693454632.596637, tmp)))); - assertEquals(8, x >>>= (tmp = 700339003.3919828, tmp)); - assertEquals(4.605305035175536e-9, x /= (1737127060.8343256)); - assertEquals(4.605305035175536e-9, x -= ((x%(897221779))>>>x)); - assertEquals(-1864423625.5704088, x += (tmp = -1864423625.5704088, tmp)); - assertEquals(1132240092, x <<= (1304417186.1193643)); - assertEquals(-2088985380, x ^= (x<>= ((tmp = 1959823884.0935726, tmp)%(-1679792398.569136))); - assertEquals(-268435456, x <<= ((tmp = 2586838136, tmp)|((tmp = -481716750.718518, tmp)>>>((1485826674.882607)/(tmp = -2826294011, tmp))))); - assertEquals(-32768, x >>= (2060648973)); - assertEquals(1, x /= x); - assertEquals(-2838976297, x -= (tmp = 2838976298, tmp)); - assertEquals(-1382985298, x <<= ((tmp = -2104305023, tmp)&x)); - assertEquals(10, x >>>= (x+x)); - assertEquals(10, x -= (x>>>(361588901.70779836))); - assertEquals(854603510, x -= (-854603500)); - assertEquals(-557842432, x <<= (tmp = 1212985813.6094751, tmp)); - assertEquals(-459390188241943040, x *= (tmp = 823512450.6304014, tmp)); - assertEquals(-232800033621957060, x /= ((((((686635689)/(tmp = 2013252543, tmp))*(tmp = -1591617746.8678951, tmp))|(((tmp = -1777454093.5611362, tmp)>>>((tmp = 2680809394, tmp)^(((x>>((((((tmp = -265022244, tmp)%((tmp = -3075004537, tmp)>>(((((1427784269.5686688)^((tmp = -1095171528.911587, tmp)^(-942424985.7979553)))>>(-1279441481.1987405))*((2493620394)>>(-2769016043)))/(x&((tmp = 2059033657, tmp)%(((tmp = 1948606940.1488457, tmp)-(tmp = -2645984114.13219, tmp))^x))))))^x)^x)%(x%((((tmp = 3209433446.4551353, tmp)%(tmp = 1364430104.0424738, tmp))/(tmp = -2103044578.349498, tmp))+(tmp = -2613222750, tmp))))*(2099218034)))&(((tmp = -378500985.49700975, tmp)>>(((x+x)|(x%(((-1841907486)<<(-1220613546.194021))<<(tmp = -1260884176, tmp))))^(tmp = 1858784116, tmp)))>>>((x%x)%((x>>>(tmp = -2540799113.7667685, tmp))|x))))/((((tmp = 642072894.6455215, tmp)-(-324951103.6679399))*(tmp = 1424524615, tmp))+((x<<(tmp = -904578863.5945344, tmp))*(tmp = 49233475.435349464, tmp))))))<<(tmp = 1680210257, tmp)))+((tmp = -1516431503, tmp)>>>(-1105406695.3068116)))/(-275019361.6764543))); - assertEquals(192359387.42913792, x /= (-1210234846)); - assertEquals(192359387.42913792, x %= (-2920206625.0154076)); - assertEquals(192359387.42913803, x -= (((((((tmp = -1263203016.3258834, tmp)-(2432034005.6011124))&x)<<(1479434294))>>((tmp = -1695856315.523002, tmp)>>>(tmp = 557391345, tmp)))/(tmp = -1280240246.2501266, tmp))%((tmp = -2196489823.034029, tmp)>>(((x&((912221637.1101809)+((tmp = -3003677979.652423, tmp)>>(tmp = -716129460.1668484, tmp))))-((x+(x-(-2780610859)))>>>(-2445608016)))<<((x*(x+(x+(((-2124412727.9007604)%(tmp = -593539041.5539455, tmp))&(tmp = 2404054468.768749, tmp)))))%(x>>(tmp = -2913066344.404591, tmp))))))); - assertEquals(11740, x >>= (688848398.7228824)); - assertEquals(11740, x >>= ((1545765912)*(307650529.9764147))); - assertEquals(23480, x += x); - assertEquals(0, x >>>= ((tmp = 1313078391, tmp)|x)); - assertEquals(1726251264, x -= ((1939413887)<<(1004888744.2840619))); - assertEquals(765324793.5278986, x %= (960926470.4721014)); - assertEquals(747387, x >>= ((2483010044)-(tmp = -413698190, tmp))); - assertEquals(1, x /= x); - assertEquals(3016811624, x *= (3016811624)); - assertEquals(17408, x &= (((tmp = -991624868, tmp)<<(((63107932)/(tmp = 2659939199, tmp))|(tmp = -1968768911.3575773, tmp)))>>(((-2876822038.9910746)|(tmp = 2550230179.243425, tmp))<<((x*(x<<((x<<((tmp = -1627718523.616604, tmp)|((2154120561.254636)-(x%(x<<(1484563622.1791654))))))<<((((x^(tmp = 3016524169, tmp))<<(((x+(tmp = 1887816698.2455955, tmp))+x)-x))-(-3023329069))-x))))+x)))); - assertEquals(0, x <<= (((1247441062.177967)/(-1717276234))+x)); - assertEquals(0, x |= ((x%((-1648299429.4520087)>>(-137511052)))>>(tmp = 221301016.4926411, tmp))); - assertEquals(0, x /= ((-2598501544.913707)>>>(-2177037696))); - assertEquals(NaN, x %= (x>>x)); - assertEquals(0, x &= (tmp = 1852419158, tmp)); - assertEquals(-829029120, x |= (((2122339180)*((((((tmp = 768748914, tmp)<<((1008490427)&((1937367899.957056)-(((635094486)>>(((tmp = -795046025, tmp)*(2665104134.4455256))^(tmp = 706594584.2462804, tmp)))/(504397522)))))/(-556057788))>>((x/(tmp = -2732280594, tmp))-x))+(-1989667473))+(tmp = 2766802447.789895, tmp)))<<(((tmp = -2969169096, tmp)-x)+(tmp = 2093593159.0942125, tmp)))); - assertEquals(0.6451933462602606, x /= ((-1284931292)<<(x<<(tmp = 1294716764, tmp)))); - assertEquals(1515416866.520901, x *= (2348779440)); - assertEquals(-1620606242886682600, x *= ((-993898625.5357854)&(((tmp = -571100481, tmp)/x)*((2428590177.311031)%(tmp = -2671379453, tmp))))); - assertEquals(-1137472828, x %= (tmp = -1195183004, tmp)); - assertEquals(-3096634005473250000, x *= (tmp = 2722380640, tmp)); - assertEquals(-3096634003996758500, x -= (-1476491033.833419)); - assertEquals(-3096634000805538000, x += (3191220521.978341)); - assertEquals(-3096634000805468000, x += ((((tmp = -3024976741, tmp)&(952616360))|((x*(-1547952311))+(x*x)))>>>(tmp = 981373323, tmp))); - assertEquals(-3096633998655594000, x += (2149873927)); - assertEquals(-118812224101.54297, x %= (((2641881276.9898443)*(((502159480)^x)<>>(x>>(-229103883.94961858)))&(((-1285047374.6746495)<<((-360045084)>>>((x-(tmp = -956123411.1260898, tmp))%x)))>>((tmp = -2375660287.5213504, tmp)+((((tmp = -2753478891, tmp)>>>(((tmp = 101438098, tmp)>>(((tmp = -2736502951, tmp)<<((tmp = -3084561882.368902, tmp)&(tmp = 1491700884, tmp)))|x))&(tmp = 1627412882.6404104, tmp)))>>>(tmp = 1039002116.6784904, tmp))<<((tmp = -2840130800, tmp)-(tmp = -740035567, tmp))))))&(tmp = -416316142, tmp))>>x)))); - assertEquals(86, x >>>= (tmp = -293489896.5572462, tmp)); - assertEquals(172, x += (x%((((-2635082487.364155)|((-2361650420.634912)&(-2147095650.7451198)))<<((tmp = 2258905145.9231243, tmp)%((((tmp = -1365987098.5130103, tmp)*(((((((932437391)/x)/(289270413.0780891))%(x-x))+((((2194986374.917528)>>(((((tmp = -1553805025, tmp)|x)^(((x>>(-564400586.0780811))^(tmp = 1738428582.0238137, tmp))>>(tmp = 1717774140, tmp)))&(tmp = -2789427438, tmp))%(((tmp = -1386118057, tmp)*(-2333221237.7915535))*(x>>>(((((41346648.46438944)&x)%(-478973697.6792319))|(tmp = 2108106738, tmp))/x)))))-(tmp = -133437701.64136505, tmp))>>>x))+(tmp = -1567210003, tmp))*(x+((x&x)-(2942851671)))))>>>(tmp = -446377136, tmp))*((((((tmp = 1597203255, tmp)>>>(619157171))|(-2766246629.005985))>>((tmp = 3130227370, tmp)%x))*(tmp = 2072227901.6101904, tmp))|((tmp = 1369019520, tmp)^(759659487))))))>>>x))); - assertEquals(1996475731, x ^= ((1456327892.2281098)|(1728022827))); - assertEquals(0, x %= x); - assertEquals(0, x &= (1323847974)); - assertEquals(3076829073.8848357, x += (3076829073.8848357)); - assertEquals(9569842648396755000, x *= (3110293883.2782717)); - assertEquals(9569842646260304000, x -= (2136450372.9038036)); - assertEquals(9.158188827418242e+37, x *= x); - assertEquals(0, x <<= ((x&(tmp = -2241179286, tmp))+((tmp = 2553144081, tmp)&((tmp = -1914709694, tmp)^(tmp = -1469651409.0651562, tmp))))); - assertEquals(0, x <<= x); - assertEquals(0, x /= (2177840666.276347)); - assertEquals(0, x %= (-690827104)); - assertEquals(0, x >>>= x); - assertEquals(0, x ^= x); - assertEquals(-0, x /= (tmp = -803415280, tmp)); - assertEquals(-2355576914.316743, x += (-2355576914.316743)); - assertEquals(-833671722514674000, x *= ((3053388806.692315)-(tmp = 2699474775.081724, tmp))); - assertEquals(1, x /= x); - assertEquals(1898147684, x += ((tmp = 1898147683, tmp)|(x<>>= ((2751021779)/(-952522559))); - assertEquals(321040461, x ^= ((321040461.153594)-x)); - assertEquals(-2.3814602031636922, x /= ((tmp = -170472190, tmp)|x)); - assertEquals(-1, x >>= (2200125174.177402)); - assertEquals(-2964432647.9379396, x += (-2964432646.9379396)); - assertEquals(-370116502.93793964, x %= (tmp = -518863229, tmp)); - assertEquals(777927355.2283959, x -= (-1148043858.1663356)); - assertEquals(0, x *= ((tmp = 1134913539, tmp)&(((x>>>((tmp = -989822787, tmp)>>>x))%x)&(tmp = 1078636160.7313156, tmp)))); - assertEquals(-1089245637, x ^= (3205721659.3548856)); - assertEquals(-1192493056, x <<= (-1173291054)); - assertEquals(78013832, x += ((tmp = 2462999944, tmp)+x)); - assertEquals(0, x %= x); - assertEquals(0, x >>>= (1794908927.7409873)); - assertEquals(1708338504, x += ((-2586628792.3484306)<>= (-545794789.3827574)); - assertEquals(0, x &= ((2753207225)<<(((-1776581207.557251)+((tmp = -2414140402, tmp)*x))+(x<<(x|(tmp = 772358560.3022032, tmp)))))); - assertEquals(0, x <<= ((tmp = -2755724712.152605, tmp)/((x>>(-732875466))&x))); - assertEquals(NaN, x *= (((tmp = 2617815318.1134562, tmp)/x)%(x|((((((-851659337.194871)<<(tmp = 2072294700, tmp))%((x+(2193880878.5566335))^((tmp = 3005338026, tmp)-(2947963290))))/x)/(x+(2091745239.4210382)))-(x>>x))))); - assertEquals(NaN, x /= (tmp = -427684595.0278094, tmp)); - assertEquals(NaN, x /= (tmp = -263945678, tmp)); - assertEquals(0, x <<= x); - assertEquals(0, x <<= x); - assertEquals(0, x -= (((x>>((x&x)-(tmp = -673697315, tmp)))>>(((1575095242.2330558)/(x-(-1816886266)))%(-1580195729)))>>>x)); - assertEquals(0, x >>>= x); - assertEquals(0, x >>= (-2815518206)); - assertEquals(0, x -= (x/(1795634670.692437))); - assertEquals(-2753579891, x += (tmp = -2753579891, tmp)); - assertEquals(2.7773776150171776, x /= (tmp = -991431585, tmp)); - assertEquals(5.554755230034355, x += x); - assertEquals(3.362161997528237e-9, x /= (1652137890.4758453)); - assertEquals(3.362161997528237e-9, x %= (tmp = -10848734.527020693, tmp)); - assertEquals(1, x /= x); - assertEquals(-2978012493, x -= (x+(2978012493))); - assertEquals(-5.158905851797543, x /= (((x+((tmp = -2548840164, tmp)>>x))<<(x^((tmp = -533281232.7294345, tmp)&x)))&(tmp = -1502692171, tmp))); - assertEquals(-5.158905851797543, x %= (-3009435255.5612025)); - assertEquals(-20971520, x <<= ((tmp = -2728812464, tmp)%(2619809573.672677))); - assertEquals(-1900019712, x &= (2398099552)); - assertEquals(-1991377, x %= ((tmp = 1562364373.7334614, tmp)>>>(((x-(-946283217))<<(-2044590694))^(((tmp = 1681238509, tmp)>>(-2801649769))-x)))); - assertEquals(1, x /= x); - assertEquals(1, x %= (x/(x-x))); - assertEquals(1.3525631913093335e-9, x /= (739336991)); - assertEquals(0, x &= ((x&(x|(-1530424204)))<<((((tmp = -295143065.9115021, tmp)>>x)+x)<>>= ((tmp = 1550624472.9157984, tmp)^x)); - assertEquals(506985, x >>>= ((254646626)<<(tmp = 1572845412.744642, tmp))); - assertEquals(32447040, x <<= (tmp = -2427326042, tmp)); - assertEquals(0, x -= (x<<((x|x)>>>x))); - assertEquals(0, x &= x); - assertEquals(0, x &= ((-484420357)|((tmp = 807540590.6132902, tmp)/(x/x)))); -} -f(); diff --git a/implementation-contributed/v8/mjsunit/numops-fuzz-part4.js b/implementation-contributed/v8/mjsunit/numops-fuzz-part4.js deleted file mode 100644 index c4ea614b325..00000000000 --- a/implementation-contributed/v8/mjsunit/numops-fuzz-part4.js +++ /dev/null @@ -1,1177 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - var x = 0; - var tmp = 0; - assertEquals(-890607324, x ^= ((tmp = -890607324, tmp)>>((((-2876826295)>>x)<<((tmp = 2351495148.117994, tmp)>>(tmp = 1368611893.274765, tmp)))*(tmp = 1531795251, tmp)))); - assertEquals(-729075363, x += (x+(tmp = 1052139285, tmp))); - assertEquals(531550884933581760, x *= x); - assertEquals(1980836332, x ^= ((-746269795.2320724)-((2400458512)>>((1290672548)>>>((((1536843439.5629003)&(3185059975.158061))*(tmp = -1339249276.2667086, tmp))&x))))); - assertEquals(941373096, x %= ((x+(-451098412))^(tmp = 1725497732, tmp))); - assertEquals(-1766019323, x += (tmp = -2707392419, tmp)); - assertEquals(2528947973, x >>>= (x^(-896237435.3809054))); - assertEquals(-263192576, x <<= (-866361580)); - assertEquals(-2008, x >>= (-2608071791)); - assertEquals(-88, x %= (((-1076807218.4792447)&((tmp = 601044863, tmp)>>((tmp = 1228976729, tmp)+((((-2711426325)*x)|x)|(x%(-2700007330.3266068))))))&(tmp = 3147972836.778858, tmp))); - assertEquals(1762886843, x ^= (tmp = 2532080403, tmp)); - assertEquals(1762886843, x %= ((((((tmp = -2059247788, tmp)>>x)/x)+(x<>>(-1969283040.3683646))); - assertEquals(4812334726.587896, x += (tmp = 3049447883.587897, tmp)); - assertEquals(1, x /= x); - assertEquals(1, x *= x); - assertEquals(-2150507334, x -= ((tmp = 1578221999, tmp)+(tmp = 572285336, tmp))); - assertEquals(-4546475858941548500, x *= ((tmp = -931533139.5546813, tmp)^(tmp = 3061503275, tmp))); - assertEquals(-269064192, x |= ((207217276.91936445)<<(tmp = -957353678.4997551, tmp))); - assertEquals(1, x /= x); - assertEquals(1, x <<= (((1463856021.8616743)%(x*(tmp = -2286419102, tmp)))/(-2852887593))); - assertEquals(2223868564.8383617, x *= (tmp = 2223868564.8383617, tmp)); - assertEquals(918797189.9033995, x -= ((1305071374.9349623)%(x+(2211992629)))); - assertEquals(-2212004787.4668465, x -= (tmp = 3130801977.370246, tmp)); - assertEquals(31783, x >>= (2951958960)); - assertEquals(31783, x ^= ((((tmp = -2441511566, tmp)&((tmp = 91427553.90168321, tmp)+((tmp = 3001737720.327718, tmp)%x)))>>>(-2263859841))>>>((2109161329)>>(tmp = -2816295136.7443414, tmp)))); - assertEquals(4068224, x <<= (x%((tmp = -682576250.4464607, tmp)*(x/(((x-x)>>>(x&((((x<<(x<>>((((2243036981.528562)/(((-1839328916.9411087)>>(-1907748022.162144))<<(x+x)))+((tmp = 2362574171, tmp)<<(tmp = 1987834539, tmp)))|(-444329240)))|(399451601.1717081))>>x)))&(968363335.6089249)))))); - assertEquals(0.0030991932898194294, x /= ((tmp = 1067316540.5529796, tmp)^(-2388640366))); - assertEquals(0, x >>= x); - assertEquals(0, x >>>= (tmp = -393433349.1636851, tmp)); - assertEquals(0, x *= (((x^(((1806955787.471396)<>>(x%(x<<(tmp = -276586733.4844558, tmp))))))%(1661242196.1472542))|x)); - assertEquals(0, x |= (x>>x)); - assertEquals(-155236210, x |= (tmp = -155236210.19366312, tmp)); - assertEquals(-606392, x >>= ((tmp = -1533446042.97781, tmp)^x)); - assertEquals(-1, x >>= (936126810)); - assertEquals(2325115611, x -= (-2325115612)); - assertEquals(0, x -= x); - assertEquals(0, x >>= (tmp = -354826623, tmp)); - assertEquals(-0, x *= (-1232528947.7321298)); - assertEquals(0, x |= x); - assertEquals(0, x <<= (((tmp = 187758893.4254812, tmp)&(x-(tmp = 648201576, tmp)))&(385106597))); - assertEquals(0, x >>= (tmp = 2554891961, tmp)); - assertEquals(-1311492611.2970417, x += (-1311492611.2970417)); - assertEquals(-688179220.3221785, x += (623313390.9748632)); - assertEquals(1416835528, x &= (tmp = 1953739224, tmp)); - assertEquals(-11.04719252755072, x /= (-128252995)); - assertEquals(-6.287413042114223e-9, x /= (tmp = 1757033052.1558928, tmp)); - assertEquals(-4231171, x |= (((((2022730885.7773404)*((-2495777565.221855)|(tmp = 274627292, tmp)))<<(-3072596920.4902725))>>>((-2215057529)+(-1134713759.4247034)))^((tmp = -1888181788, tmp)/(572025985.2748461)))); - assertEquals(-4194305, x |= ((tmp = 167328318.038759, tmp)>>>(153800904.34551537))); - assertEquals(-1316525687, x -= (1312331382)); - assertEquals(1448723245.7863903, x += (2765248932.7863903)); - assertEquals(1.7219707102205526, x /= (tmp = 841317008, tmp)); - assertEquals(1872027792.5217001, x *= (x|(tmp = 1087142645.6665378, tmp))); - assertEquals(3504488055973669400, x *= x); - assertEquals(-1075254784, x |= x); - assertEquals(-5, x >>= (((844461331.8957539)-((x&x)<<((tmp = 1443904777, tmp)+(tmp = 736164505.3670597, tmp))))-(((tmp = 1348422110, tmp)>>((tmp = -2878252514, tmp)/(-1175443113)))|((-2138724317)%(2057081133))))); - assertEquals(-3.038875804165675e-9, x /= (1645345292.8698258)); - assertEquals(1.25204541454491e-18, x /= (-2427129055.274914)); - assertEquals(-1.7151576137235622e-9, x *= (-1369884505.6247284)); - assertEquals(1590804618, x ^= (1590804618.4910607)); - assertEquals(5061318665300252000, x *= (x+x)); - assertEquals(5061318665300252000, x %= ((tmp = 1102144242, tmp)*x)); - assertEquals(-7, x >>= (2772167516.624264)); - assertEquals(16383, x >>>= (-2979259214.5855684)); - assertEquals(47108415435, x *= ((2944456517.839616)>>>(1041288554.5330646))); - assertEquals(61, x >>>= (x^(((-1305163705)<<((948566605)-x))-x))); - assertEquals(0, x %= x); - assertEquals(0, x ^= (((tmp = 1918861879.3521824, tmp)/((x%(tmp = 945292773.7188392, tmp))%(x|x)))>>x)); - assertEquals(-0, x *= ((((x|((2810775287)|(tmp = 1265530406, tmp)))^((tmp = 3198912504.175658, tmp)-(((tmp = 1422607729.281712, tmp)<<(tmp = 2969836271.8682737, tmp))&x)))<<((tmp = 844656612, tmp)*(((((tmp = -828311659, tmp)%(((-2083870654)>>>(x^(((((933133782)-(tmp = 1033670745, tmp))-(629026895.4391923))%((-605095673.8097742)*((((-227510375.38460112)*x)+x)&(((((tmp = 472873752.68609154, tmp)^(tmp = 2815407038.712165, tmp))+((x>>>((tmp = -1331030665.3510115, tmp)>>>(2281234581)))-(x>>>x)))&(tmp = -2160840573.325921, tmp))&x))))<<(tmp = 1411888595, tmp))))|(((tmp = -915703839.0444739, tmp)/((x+(418836101.8158506))%(-1112605325.4404268)))&((-3098311830.6721926)-x))))-((49446671.477988124)*(-2522433127)))+((tmp = 443068797, tmp)>>(tmp = 418030554.97275746, tmp)))*((tmp = 38931296.738208175, tmp)+(1842742215.3282685)))))-((tmp = 1325672181.205841, tmp)^(tmp = 669284428, tmp)))); - assertEquals(-0, x *= (tmp = 93843030, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x ^= x); - assertEquals(0, x <<= x); - assertEquals(0, x >>>= (x%((((((tmp = -107458601, tmp)>>(x*((x|((tmp = 2117286494, tmp)>>((x^(tmp = 114214295.42048478, tmp))>>>(tmp = 1032826615, tmp))))&((x*x)&(-225386977.67686415)))))^((-780566702.5911419)+(-1113319771)))|(((x^x)<<(1288064444))>>(-2292704291.619477)))>>(365125945))-((tmp = -1986270727.235776, tmp)/x)))); - assertEquals(-0, x *= (((-18925517.67125845)|((((-1975220517)+(tmp = -1250070128.296064, tmp))+(1085931410.5895243))<<(((x|(((x*(tmp = 160207581.50536323, tmp))|(tmp = 1798744469.7958293, tmp))-x))>>>(((x+((x%x)&((((x^x)<<((tmp = 2538012074.623554, tmp)^x))*x)&x)))/(x+(tmp = -2563837407, tmp)))/(tmp = 2189564730, tmp)))/(((-1703793330.5770798)<<((176432492)|x))<<(1347017755.345185)))))<<(((tmp = -577100582.7258489, tmp)&x)/(-31246973)))); - assertEquals(0, x >>>= x); - assertEquals(NaN, x %= ((x*(tmp = 1167625971, tmp))&(((tmp = -770445060, tmp)>>((339248786)^((2058689781.2387645)-((-2381162024)*(660448066)))))&x))); - assertEquals(NaN, x += ((3088519732.515986)-(-267270786.06493092))); - assertEquals(0, x &= (tmp = 2748768426.3393354, tmp)); - assertEquals(-1109969306, x ^= ((-1109969306)>>>x)); - assertEquals(-1109969306, x %= (tmp = 1150376563.581773, tmp)); - assertEquals(-2058145178, x &= (-2057586057)); - assertEquals(-850185626, x |= ((x^(tmp = 1223093422, tmp))&((-589909669)<<(2299786170)))); - assertEquals(1489215443, x += (2339401069)); - assertEquals(-23592960, x <<= x); - assertEquals(2063937322, x ^= (-2053296342.2317986)); - assertEquals(12922122, x %= (x^((-2259987830)>>(x*(((tmp = -799867804.7716949, tmp)&(tmp = -1068744142, tmp))*(((((1091932754.8596292)-((tmp = -1778727010, tmp)>>(((tmp = 1207737073.2689717, tmp)-(x-(tmp = -1191958946, tmp)))+(-631801383.7488799))))-(-618332177))>>>(-156558558))>>>(3032101547.6262517))))))); - assertEquals(12922122, x &= x); - assertEquals(Infinity, x /= (x%x)); - assertEquals(0, x &= (x*(-227800722.62070823))); - assertEquals(-865648691, x ^= (-865648691)); - assertEquals(1, x /= (x%(tmp = 1524739353.8907173, tmp))); - assertEquals(16, x <<= (x<<(2335214658.789205))); - assertEquals(0, x &= ((tmp = 570332368.1239192, tmp)^(-2278439501))); - assertEquals(1881145344, x -= (((-569715735.8853142)+(2093355159))<<(tmp = 2788920949, tmp))); - assertEquals(0, x ^= x); - assertEquals(NaN, x -= ((tmp = -1427789954, tmp)%((((((411038329.49866784)-x)-(x<<((-1330832247)+x)))/x)^((x*(845763550.2134092))>>(tmp = 1427987604.5938706, tmp)))>>>(1857667535)))); - assertEquals(NaN, x /= (-313793473)); - assertEquals(0, x >>>= (x/x)); - assertEquals(1869358566, x -= (-1869358566)); - assertEquals(-1901664519209545200, x += ((tmp = 944729941.3936644, tmp)*(-2012918653))); - assertEquals(-1901664519209545200, x += ((tmp = 1348246793, tmp)/(x&x))); - assertEquals(-1576791552, x &= (tmp = 2719250966.739456, tmp)); - assertEquals(-305087899, x ^= (-2955630491.030272)); - assertEquals(0, x ^= (x%(1575252839.559443))); - assertEquals(4184604407, x += ((((tmp = -244720076.17657042, tmp)|(2819320515))^((((tmp = 1222623743.9184055, tmp)*(-95662379.577173))/(x/(x+(((x-(tmp = -3024718107.6310973, tmp))^(-1494390781))&(tmp = 2284054218.8323536, tmp)))))>>>(tmp = 2090069761, tmp)))>>>(x%x))); - assertEquals(3148907440, x -= (((tmp = -332379100.7695112, tmp)-(-1145399547))^(((((((tmp = 3133792677.785844, tmp)+x)<<(2306999139.5799255))>>((tmp = -2051266106, tmp)*(((((x+(((-728654312.8954825)>>(x>>>(((x%x)&(-1587152364))|(((((-2114138294)&x)&(1547554688))^x)-(-1856094268)))))*(((-1135018784)&((x+(tmp = -1444020289, tmp))|x))+x)))>>x)&x)/(2449005489))<<((131073798.64314616)%(x>>>((-2592101383.2205048)^(tmp = -757096673.0381112, tmp)))))))^(2766467316.8307915))-(-2465892914.515834))-((((tmp = 234064056, tmp)^((x>>>(1622627548.7944543))+(-1750474146)))|(-1959662039.4687617))^((-1222880974)&(-2794536175.906498)))))); - assertEquals(-1157627488, x &= (-1156639323)); - assertEquals(-1342170624, x <<= ((x/((((1829945345.0613894)/(x*((tmp = 1278865203.0854595, tmp)/(((tmp = -2298274086.519347, tmp)+(tmp = -545203761, tmp))-(tmp = 2712195820, tmp)))))>>>((tmp = 240870798.9384452, tmp)-(tmp = -3188865300.4768195, tmp)))>>>(x%((648799266)>>>(tmp = 24460403.864815235, tmp)))))|((tmp = 232533924, tmp)|x))); - assertEquals(-2684341248, x += x); - assertEquals(1073755136, x &= (((-662718514.9245079)>>(tmp = -1915462105, tmp))+(tmp = 1478850441.8689613, tmp))); - assertEquals(-1073755136, x /= (x|((tmp = -1767915185, tmp)|((325827419.1430224)|(((-1343423676)|(tmp = -1929549501, tmp))|(-866933068.9585254)))))); - assertEquals(-1073755136, x %= ((tmp = 547342356, tmp)-((tmp = 2213249646.7047653, tmp)-((((((-2463314705)^(tmp = -993331620, tmp))^(((x%x)>>(tmp = 1798026491.3658786, tmp))-(((1024072781)/(tmp = -2407354455, tmp))%(1973295010))))<<(-1966787233))^x)|(-1787730004))))); - assertEquals(-1073754452, x |= (tmp = 3099823788.077907, tmp)); - assertEquals(-1540683096, x &= (-1540674632.7013893)); - assertEquals(-1540683052, x ^= ((tmp = -126183090, tmp)>>>((-622437575.5788481)|((((tmp = -2947914022, tmp)%(((tmp = 2512586745, tmp)>>x)>>>((27238232.23677671)/(tmp = 3203958551, tmp))))/(tmp = 2906005721.402535, tmp))^((((tmp = 1763897860.737334, tmp)^(1445562340.2485332))/x)+(-2393501217.716533)))))); - assertEquals(-1258599433, x |= (tmp = 351291767.59661686, tmp)); - assertEquals(-1241560065, x |= (626346046.5083935)); - assertEquals(-1241560065, x ^= ((2263372092)/((tmp = -2868907862, tmp)>>>x))); - assertEquals(-893685228, x -= (tmp = -347874837, tmp)); - assertEquals(3401282068, x >>>= (x*x)); - assertEquals(0, x %= x); - assertEquals(0, x >>>= x); - assertEquals(-2079237393, x ^= (tmp = 2215729903, tmp)); - assertEquals(NaN, x %= ((((tmp = 3203450436, tmp)/(2867575150.6528325))&(1864945829))&((x&((((tmp = -1927086741.3438427, tmp)|x)|(-1783290909.3240588))*((-1074778499.0697656)*(x-((tmp = -848983542.8456669, tmp)^(tmp = -1324673961, tmp))))))>>(tmp = -2144580304.245896, tmp)))); - assertEquals(-43334009, x |= (x^(-43334009.72683525))); - assertEquals(-43334009, x &= x); - assertEquals(-43334009, x %= (tmp = 1252450645.060542, tmp)); - assertEquals(-43334009, x |= (((((((tmp = 968062202, tmp)/(x|(tmp = 2766801984, tmp)))*((2173353793.938968)>>(((tmp = -2459317247, tmp)<<(tmp = -2333601397, tmp))>>>((tmp = -578254251.8969193, tmp)*(tmp = 839964110.7893236, tmp)))))&(((1675305119)&(tmp = -929153707, tmp))*((x*x)*x)))/x)|(x/(tmp = 384740559.43867135, tmp)))%(1657362591))); - assertEquals(0, x -= x); - assertEquals(0, x %= (-1334758781.1087842)); - assertEquals(0, x -= x); - assertEquals(-54, x += ((tmp = -1787151355.470972, tmp)>>((tmp = 237028977, tmp)>>(((2829473542)<<(x>>>(((((((x-(-1950724753))*(((x>>>(2807353513.6283565))<<((-583810779.1155353)>>(x*x)))>>(-1068513265)))^(x^(-696263908.5131407)))%(((tmp = -1325619399, tmp)<<((tmp = -1030194450, tmp)-x))^x))+((-2852768585.3718724)>>(tmp = -3160022361, tmp)))%(x&x))>>(tmp = 2667222702.5454206, tmp))))+((804998368.8915854)<>>= (tmp = -543199585.579128, tmp)); - assertEquals(4.732914708226396e-10, x /= (tmp = 2112862922, tmp)); - assertEquals(-4266932650, x -= ((((x^((((tmp = 2784618443, tmp)^(tmp = -2271260297.9010153, tmp))|((((tmp = -599752639.7516592, tmp)*(2751967680.3680997))^(tmp = -1478450055.578217, tmp))*x))-x))&((tmp = -520061982, tmp)-((tmp = 1400176711.9637299, tmp)^(((2100417541)|(x+(tmp = -674592897.0420957, tmp)))>>x))))^(tmp = -365650686.7947228, tmp))>>>((-2943521813)&(((tmp = -1888789582, tmp)>>(tmp = 700459655.488978, tmp))+(tmp = -1725725703.655931, tmp))))); - assertEquals(224277168, x <<= (tmp = 2885115011.8229475, tmp)); - assertEquals(224277168, x %= (tmp = -2655345206.442777, tmp)); - assertEquals(850395136, x <<= (x-(((((-769868538.1729524)/((tmp = -298603579, tmp)%(x^x)))+((2691475692)|(((x>>>(628995710.4745524))^(x<<(((tmp = -1046054749, tmp)|(919868171))-x)))^((-1377678789.8170452)&((3065147797)%(tmp = 2638804433, tmp))))))^(tmp = -2036295169, tmp))&(((tmp = -157844758.08476114, tmp)*(tmp = -2819601496, tmp))&((((tmp = 78921441, tmp)<<(653551762.5197772))/(1801316098))*(-1479268961.8276927)))))); - assertEquals(1645565728, x ^= (tmp = 1353013024, tmp)); - assertEquals(1645565728, x >>>= x); - assertEquals(3020513544, x += (1374947816)); - assertEquals(0, x %= x); - assertEquals(0, x %= ((((((tmp = -304228072.4115715, tmp)>>>((-90523260.45975709)-(tmp = -3013349171.084838, tmp)))%((-1640997281)*((tmp = -1600634553, tmp)%((tmp = 557387864, tmp)<<((888796080.766409)|(x^((((x%(((((tmp = 1164377954.1041703, tmp)*x)|(2742407432.192806))&((tmp = 1707928950, tmp)<<(1279554132.4481683)))+(tmp = -2108725405.7752397, tmp)))%(tmp = -465060827, tmp))^((tmp = 2422773793, tmp)+x))^((((((((tmp = -1755376249, tmp)^((-267446806)^x))/(((tmp = -1808578662.4939392, tmp)+((tmp = -1997100217, tmp)+x))+(((tmp = -2469853122.411479, tmp)/x)>>(tmp = 660624616.7956645, tmp))))%((x<<((((((tmp = -1701946558, tmp)-(tmp = 133302235, tmp))>>>x)/(738231394))<<(-1060468151.4959564))&(((((-1877380837.4678264)|(tmp = 2366186363, tmp))%x)>>>(-2382914822.1745577))>>((-1874291848.9775913)<<(tmp = 2522973186, tmp)))))<<(-2672141993)))|(tmp = 732379966, tmp))%x)^x)^x))))))))%(tmp = 2385998902.7287374, tmp))*x)+(tmp = -2195749866.017106, tmp))); - assertEquals(401488, x ^= (((-320896627)>>>(tmp = 2812780333.9572906, tmp))&(tmp = -2088849328, tmp))); - assertEquals(-1661116571.0046256, x += (tmp = -1661518059.0046256, tmp)); - assertEquals(-1616122720, x <<= x); - assertEquals(-1616122720, x >>= x); - assertEquals(-390439413, x %= (tmp = -1225683307, tmp)); - assertEquals(-84189205, x |= ((x|(2054757858))^(((x<<(((x|x)|(((x>>>((-2938303938.1397676)<<((2993545056)^((tmp = -643895708.5427527, tmp)/((1371449825.5345795)-(1896270238.695752))))))-(tmp = 1061837650, tmp))+(x+(tmp = 3072396681, tmp))))>>(x-((((tmp = -1877865355.1550744, tmp)&x)%(-2766344937))>>>(2055121782)))))-((x<>(-1625612979))))); - assertEquals(-168378410, x += x); - assertEquals(-168378410, x &= x); - assertEquals(-1534983792, x &= (-1501412943)); - assertEquals(-1821543761, x ^= (938439487)); - assertEquals(-1821543761, x &= (x^(((tmp = -4237854, tmp)>>x)/x))); - assertEquals(2358, x >>>= (2954252724.620632)); - assertEquals(4716, x <<= ((-75522382.8757689)/((tmp = 1074334479, tmp)|((tmp = -720387522, tmp)>>(x>>>(-3085295162.6877327)))))); - assertEquals(-1313079316, x |= (2981887904.020387)); - assertEquals(-1957790646, x -= (644711330)); - assertEquals(17831, x >>>= ((tmp = -2550108342, tmp)-(((tmp = 454671414.0146706, tmp)+(-661129693.9333956))>>(x>>>(((tmp = 1752959432.3473055, tmp)*(-2619510342.1812334))%(tmp = -456773274.2411971, tmp)))))); - assertEquals(689287937.6879716, x -= ((tmp = -397126863.6879716, tmp)-(((x>>x)^(x/(-1387467129.6278908)))|((x>>((tmp = -2361114214.8413954, tmp)<<(tmp = -805670024.4717407, tmp)))<<(-2724018098))))); - assertEquals(1378575875.3759432, x += x); - assertEquals(84112428460187.8, x *= (((((2681425112.3513584)%(tmp = -1757945333, tmp))|x)>>(-1793353713.0003397))%x)); - assertEquals(-3221, x >>= (-1976874128)); - assertEquals(-3221, x %= (((tmp = 2318583056.834932, tmp)|((tmp = -1016115125, tmp)+((-472566636.32567954)+x)))|(tmp = 3135899138.065598, tmp))); - assertEquals(-6596608, x <<= x); - assertEquals(-1249902592, x <<= (((tmp = -2025951709.5051148, tmp)/((-465639441)<<(-2273423897.9682302)))*((tmp = -2408892408.0294642, tmp)-(tmp = 1017739741, tmp)))); - assertEquals(73802092170444800, x *= (tmp = -59046275, tmp)); - assertEquals(-1619001344, x <<= x); - assertEquals(0, x <<= (tmp = 1610670303, tmp)); - assertEquals(-0, x *= ((((x+(tmp = 2039867675, tmp))|(tmp = 399355061, tmp))<<(1552355369.313559))^x)); - assertEquals(0, x *= x); - assertEquals(0, x >>>= (((2875576018.0610805)>>x)%(tmp = -2600467554, tmp))); - assertEquals(2290405226.139538, x -= (-2290405226.139538)); - assertEquals(0, x %= x); - assertEquals(0, x ^= (((tmp = 2542309844.485515, tmp)-x)%((-2950029429.0027323)/(tmp = 2943628481, tmp)))); - assertEquals(0, x += x); - assertEquals(0, x -= x); - assertEquals(0, x >>>= (tmp = 2337330038, tmp)); - assertEquals(0, x += (x/(((292272669.0808271)&(tmp = 2923699026.224247, tmp))^(tmp = 367745855, tmp)))); - assertEquals(0, x &= x); - assertEquals(0, x %= ((tmp = 1565155613.3644123, tmp)<<(-308403859.5844681))); - assertEquals(-1845345399.3731332, x += (tmp = -1845345399.3731332, tmp)); - assertEquals(5158590659731951000, x *= (-2795460763.8680177)); - assertEquals(-364664, x >>= (1837745292.5701954)); - assertEquals(1, x /= x); - assertEquals(-860616114.8182092, x += ((tmp = 2076961323.1817908, tmp)+(-2937577439))); - assertEquals(-860616115, x ^= ((x*(tmp = 2841422442.583121, tmp))>>>((tmp = 1929082917.9039137, tmp)>>(-2602087246.7521305)))); - assertEquals(-38387843, x |= (3114677624)); - assertEquals(2927507837, x += (tmp = 2965895680, tmp)); - assertEquals(1, x /= x); - assertEquals(-1792887531, x *= (-1792887531)); - assertEquals(-0, x %= ((x^x)+x)); - assertEquals(-0, x %= (tmp = 2800752702.562547, tmp)); - assertEquals(1384510548, x ^= (tmp = 1384510548, tmp)); - assertEquals(42251, x >>= (1645421551.363844)); - assertEquals(0, x >>>= (17537561)); - assertEquals(-2076742862, x ^= (tmp = 2218224434, tmp)); - assertEquals(-2.790313825067623, x /= (744268563.3934636)); - assertEquals(5313538, x &= (((((tmp = -2406579239.0691676, tmp)+((-1470174628)+(((tmp = -783981599, tmp)<<(tmp = -1789801141.272646, tmp))^(((((((tmp = -844643189.5616491, tmp)&(tmp = -252337862, tmp))&(x|x))%((-3159642145.7728815)+(tmp = 2149920003.9525595, tmp)))&(x>>(1737589807.9431858)))-((((((((1610161800)<<(497024994))>>x)<>>x)&x)-(757420763.2141517)))-(tmp = -3061016994.9596977, tmp)))))/(tmp = 1810041920.4089384, tmp))&(tmp = 5887654.786785364, tmp))&((tmp = 1626414403.2432103, tmp)+(x%x)))); - assertEquals(-2147483648, x <<= (tmp = 1304102366.8011155, tmp)); - assertEquals(-208418816, x %= (((((-2850404799)*(x+(3158771063.226051)))*(-2017465205))/(x>>x))>>(x%(tmp = 2760203322, tmp)))); - assertEquals(-2189223477, x -= (1980804661)); - assertEquals(-859239912, x ^= (tmp = 2974421971.3544703, tmp)); - assertEquals(-1599850415, x ^= (tmp = -2475871671.140151, tmp)); - assertEquals(-1600636847, x += ((((tmp = -1311002944, tmp)<<((tmp = -1137871342, tmp)<<(tmp = 115719116, tmp)))/(413107255.6242596))<<(x>>((((-1908022173)&(((-1519897333)^((x>>(x*(tmp = -2886087774.426503, tmp)))*(tmp = 530910975, tmp)))+(-2579617265.889692)))+((2518127437.127563)>>>((tmp = 481642471.56441486, tmp)>>>(792447239))))^(x<<(248857393.6819017)))))); - assertEquals(-191, x >>= (-1591265193)); - assertEquals(-192.27421813247196, x += ((tmp = 2627329028.207775, tmp)/(tmp = -2061914644.9523563, tmp))); - assertEquals(1230613220, x ^= (tmp = 3064354212.307105, tmp)); - assertEquals(1230613220, x &= x); - assertEquals(1230613220, x %= (1833479205.1064768)); - assertEquals(1230613220, x >>>= ((((1559450742.1425748)|((2151905260.956583)*(1213275165)))%(514723483.12764716))>>>x)); - assertEquals(1230613493, x |= ((((3004939197.578903)*(tmp = -576274956, tmp))+((tmp = 1037832416.2243971, tmp)^x))>>>(tmp = 2273969109.7735467, tmp))); - assertEquals(2461226986, x += x); - assertEquals(-27981, x >>= ((692831755.8048055)^((tmp = -1593598757, tmp)%(x-((((-1470536513.882593)|((tmp = -2716394020.466401, tmp)|(tmp = 2399097686, tmp)))&x)%x))))); - assertEquals(-1.4660454948034359e+23, x *= (((x>>>((((((tmp = -3056016696, tmp)<<(-2882888332))*(2041143608.321916))&(((tmp = -634710040, tmp)|(tmp = -2559412457, tmp))>>(1916553549.7552106)))%((-2150969350.3643866)*x))<<((x*(tmp = 2657960438.247278, tmp))|x)))%((tmp = 526041379, tmp)*(tmp = 2514771352.4509397, tmp)))*(1219908294.8107886))); - assertEquals(-1.4660454948034359e+23, x -= ((1709004428)>>(((x|(-422745730.626189))%x)>>x))); - assertEquals(-2247766068, x %= (-3105435508)); - assertEquals(-386845856.0649812, x -= (-1860920211.9350188)); - assertEquals(-386846803.0649812, x -= ((((-3214465921)|((tmp = -1326329034, tmp)+(((tmp = -1203188938.9833462, tmp)%((((((-1318276502)+(x+x))^((x<>>x)))+(tmp = -439689881, tmp))+((-1455448168.695214)^(x-((-388589993)>>((((940252202)^(-2218777278))|x)/(tmp = -1007511556, tmp))))))&(-140407706.28176737)))-(x/((888903270.7746506)-((tmp = -2885938478.632409, tmp)<<(((((tmp = -1750518830.270917, tmp)>>(((((((tmp = 868557365.7908674, tmp)/(tmp = -2805687195.5172157, tmp))*x)|((((((-1342484550)-((tmp = 1089284576, tmp)^(tmp = 120651272, tmp)))<<(tmp = 2230578669.4642825, tmp))-(x*x))%(x^(((tmp = -3177941534, tmp)+(x>>(-1595660968)))/(-1738933247))))>>>(tmp = 2860175623, tmp)))-(((2392690115.8475947)>>>(tmp = -1754609670.2068992, tmp))>>>(tmp = 2615573062, tmp)))-(tmp = 2590387730, tmp))^((x+((((x-(tmp = -2823664112.4548965, tmp))*(200070977))>>>(((x|((((tmp = 1361398, tmp)>>((tmp = 1649209268, tmp)%x))+x)+(x>>>(tmp = -2379989262.1245675, tmp))))|(x^((tmp = -647953298.7526417, tmp)-x)))&(tmp = -1881232501.1945808, tmp)))>>>x))%(x^(tmp = -1737853471.005935, tmp)))))>>>(427363558))>>>((tmp = -3076726422.0846386, tmp)^(-1518782569.1853383)))/x)))))))|x)>>>(1854299126))); - assertEquals(-386846803.0649812, x -= (x%x)); - assertEquals(238532, x >>>= (-448890706.10774803)); - assertEquals(232, x >>>= (-791593878)); - assertEquals(232, x <<= (((x^((x-x)&(tmp = 1219114201, tmp)))/(tmp = -427332955, tmp))%(tmp = 1076283154, tmp))); - assertEquals(210, x ^= (x>>>((2975097430)>>>x))); - assertEquals(1, x /= x); - assertEquals(2317899531, x *= (2317899531)); - assertEquals(1131786, x >>>= x); - assertEquals(2301667519.6379366, x += ((tmp = 193109669.63793683, tmp)+(tmp = 2107426064, tmp))); - assertEquals(3842614963.6379366, x += (((-1676516834)>>>(tmp = -1817478916.5658965, tmp))^(((tmp = 1122659711, tmp)>>>(tmp = -2190796437, tmp))|(tmp = -2754023244, tmp)))); - assertEquals(-452352333, x &= x); - assertEquals(-863, x >>= x); - assertEquals(-3.777863669459606e-7, x /= (2284359827.424491)); - assertEquals(-3.777863669459606e-7, x %= ((tmp = -2509759238, tmp)>>>x)); - assertEquals(0, x <<= (-814314066.6614306)); - assertEquals(0, x %= (tmp = 190720260, tmp)); - assertEquals(2301702913, x += (2301702913)); - assertEquals(-249158048, x >>= (tmp = -2392013853.302008, tmp)); - assertEquals(-249158048, x >>= x); - assertEquals(-498316096, x += x); - assertEquals(-498316096, x %= (tmp = 2981330372.914731, tmp)); - assertEquals(106616.2199211318, x *= (((((tmp = 1020104482.2766557, tmp)^((tmp = -416114189.96786, tmp)>>>(1844055704)))|(tmp = 1665418123, tmp))>>(1826111980.6564898))/(-2446724367))); - assertEquals(106616, x |= x); - assertEquals(1094927345, x -= (((-1229759420)|(741260479.7854375))-x)); - assertEquals(8353, x >>= x); - assertEquals(0, x >>>= (tmp = -327942828, tmp)); - assertEquals(-953397616.8888416, x += (tmp = -953397616.8888416, tmp)); - assertEquals(-1906641240.7776833, x += (x+((-3033450184.9106326)>>>(tmp = 2090901325.5617187, tmp)))); - assertEquals(-1906641240.7776833, x %= (tmp = 2584965124.3953505, tmp)); - assertEquals(-1098907671, x |= (tmp = -1272590495, tmp)); - assertEquals(-1.8305258600334393, x /= (600323489)); - assertEquals(-1, x &= x); - assertEquals(-1, x |= ((x+x)-x)); - assertEquals(1, x *= x); - assertEquals(867473898, x ^= (tmp = 867473899.0274491, tmp)); - assertEquals(6, x >>>= (tmp = 1174763611.341228, tmp)); - assertEquals(0, x >>= ((689882795)^(2250084531))); - assertEquals(0, x /= (tmp = 2545625607, tmp)); - assertEquals(0, x >>= x); - assertEquals(0, x += x); - assertEquals(0, x -= (x*(-1098372339.5157008))); - assertEquals(NaN, x %= x); - assertEquals(NaN, x -= (tmp = -1797344676.375759, tmp)); - assertEquals(1121476698, x |= (tmp = 1121476698, tmp)); - assertEquals(1, x /= x); - assertEquals(1, x &= (-191233693)); - assertEquals(330137888.92595553, x += (330137887.92595553)); - assertEquals(-1792236714, x ^= (tmp = 2256609910, tmp)); - assertEquals(269000724, x &= (316405813.62093115)); - assertEquals(256, x >>= x); - assertEquals(256, x %= ((2556320341.54669)|(1066176021.2344948))); - assertEquals(256, x |= x); - assertEquals(131072, x <<= ((-1650561175.8467631)|x)); - assertEquals(-286761951, x -= ((tmp = 287024095, tmp)-((-2293511421)&(x|x)))); - assertEquals(-1561852927, x &= (3002663949.0989227)); - assertEquals(-460778761, x %= (tmp = -550537083, tmp)); - assertEquals(-3023749308.0492287, x += (tmp = -2562970547.0492287, tmp)); - assertEquals(-481313332.04922867, x %= ((x|((tmp = -855929299, tmp)%((2181641323)%(x|(220607471.33018696)))))&x)); - assertEquals(17510668, x &= (tmp = 363557663, tmp)); - assertEquals(12552, x &= (3020225307)); - assertEquals(1814655896, x |= ((x<<(((-1475967464)*(-3122830185))*x))+(x^(-2480340864.2661023)))); - assertEquals(-3209124403525266400, x -= ((1146847590)*(tmp = 2798213497, tmp))); - assertEquals(-6418248807050533000, x += x); - assertEquals(1.1856589432073933e+28, x *= (-1847324681.313275)); - assertEquals(-1238853292, x ^= (-1238853292)); - assertEquals(-77428331, x >>= (x&((((2043976651.8514216)>>>x)^(x>>>(((tmp = -1785122464.9720652, tmp)%x)<<(1570073474.271266))))*x))); - assertEquals(2011, x >>>= x); - assertEquals(2011, x &= x); - assertEquals(0, x >>= (-2682377538)); - assertEquals(-1.1367252770299785, x -= (((tmp = 2704334195.566802, tmp)/(2379056972))%((((-1764065164)*((((468315142.8822602)>>((x%(((tmp = 2537190513.506641, tmp)+((x&(x|((tmp = -947458639, tmp)^(2653736677.417406))))*((x<<((1243371170.1759553)>>>(((tmp = 1572208816, tmp)<<((tmp = 963855806.1090456, tmp)>>>x))%((-3078281718.7743487)*x))))^(-1154518374))))^(-2839738226.6314087)))^((-2865141241.190915)*(-2400659423.8207664))))>>((tmp = 32940590, tmp)/(tmp = 2917024064.570817, tmp)))+(((27601850)/(tmp = 3168834986, tmp))>>x)))+(tmp = 2528181032.600125, tmp))/(3162473952)))); - assertEquals(-1697395408.7948515, x -= (1697395407.6581264)); - assertEquals(1536992607912062500, x *= (tmp = -905500627.5781817, tmp)); - assertEquals(102759872, x >>= (tmp = -707887133.4484048, tmp)); - assertEquals(102759872, x %= (tmp = -1764067619.7913327, tmp)); - assertEquals(12543, x >>>= (-144142995.1469829)); - assertEquals(-2059555229.2592103, x += ((-2059555229.2592103)-x)); - assertEquals(-537022593, x |= (tmp = -2770761410.407701, tmp)); - assertEquals(23777505, x ^= (-560496738.6854918)); - assertEquals(-64329014115772310, x *= ((tmp = -2729234369.198843, tmp)+x)); - assertEquals(189083830, x ^= (tmp = 933619934, tmp)); - assertEquals(189083830, x %= ((tmp = -2918083254, tmp)-(x|(x^(-2481479224.0329475))))); - assertEquals(378167660, x += x); - assertEquals(-0.45833387791900504, x /= ((tmp = 2727991875.241294, tmp)<<(tmp = 2570034571.9084663, tmp))); - assertEquals(0, x <<= x); - assertEquals(-0, x /= (tmp = -67528553.30662966, tmp)); - assertEquals(0, x <<= (938440044.3983492)); - assertEquals(-945479171, x ^= (tmp = -945479171, tmp)); - assertEquals(-225632619284361200, x *= (238643670.00884593)); - assertEquals(-0, x %= x); - assertEquals(-585826304, x ^= ((-1256265560)<<(tmp = 1144713549, tmp))); - assertEquals(-671583855, x ^= (183333265.1468178)); - assertEquals(-484311040, x <<= x); - assertEquals(-3969762.62295082, x /= ((((tmp = -1164308668.931008, tmp)-x)%x)>>>(((397816647)>>(-1605343671.4070785))<>(tmp = 1983292927, tmp))&(tmp = -860505131.4484091, tmp))); - assertEquals(0, x <<= x); - assertEquals(0, x &= x); - assertEquals(0, x %= ((3132981707)-(-2832016477))); - assertEquals(0, x >>= (x<<((1830195133.0342631)>>>(tmp = -1003969250, tmp)))); - assertEquals(NaN, x %= x); - assertEquals(NaN, x += (tmp = 273271019.87603223, tmp)); - assertEquals(NaN, x += (625749326.1155348)); - assertEquals(0, x >>= (tmp = -531039433.3702333, tmp)); - assertEquals(0, x -= (((tmp = 2029464099, tmp)-(x-(tmp = -329058111.411458, tmp)))*(x<>>(tmp = 2735119927, tmp)))); - assertEquals(-0, x /= (tmp = 544636506, tmp)); - assertEquals(0, x >>>= (x^(545093699))); - assertEquals(0, x %= (((tmp = -2208409647.5052004, tmp)+(3083455385.374988))+(((-482178732.7077277)*x)>>>((2661060565)*(-2125201239))))); - assertEquals(0, x >>>= (-212334007.34016395)); - assertEquals(0.7004300865203454, x -= ((2032883941)/(-2902336693.0154715))); - assertEquals(0, x <<= (x<<((265868133.50175047)>>>(1162631094)))); - assertEquals(604920272.4394834, x -= (-604920272.4394834)); - assertEquals(604920272, x &= x); - assertEquals(0, x <<= (((-1961880051.1127694)%(tmp = 1715021796, tmp))|((tmp = 2474759639.4587016, tmp)|(243416152.55635)))); - assertEquals(-46419074, x |= (((tmp = -518945938.5238774, tmp)%((x+(tmp = 242636408, tmp))+(-1974062910)))|(1546269242.0259726))); - assertEquals(-46419074, x += ((-629802130)*((tmp = -658144149, tmp)%((-905005358.5370393)>>>x)))); - assertEquals(-46419074, x |= (x%(-1103652494))); - assertEquals(7892881050983985, x *= (-170035297.36469936)); - assertEquals(1105701997.4273424, x %= ((((-490612260.0023911)>>>(tmp = 1803426906, tmp))^(x%(2725270344.2568116)))-(1010563167.8934317))); - assertEquals(1088619532, x &= (-2232199650)); - assertEquals(1073807364, x &= (-888024506.5008001)); - assertEquals(1153062254980628500, x *= x); - assertEquals(1153062255703627000, x -= (tmp = -722998613.897227, tmp)); - assertEquals(-1141418584, x |= (3017232552.4814596)); - assertEquals(-373464140, x ^= (-2914372068)); - assertEquals(994050048, x <<= x); - assertEquals(0, x ^= x); - assertEquals(0, x &= (tmp = -3166402389, tmp)); - assertEquals(0, x &= ((-1760842506.337213)|(tmp = 2538748127.795164, tmp))); - assertEquals(-0, x /= (-2635127769.808626)); - assertEquals(0, x &= ((((tmp = 1414701581, tmp)^(((2425608769)/((x<>>((x>>x)+((tmp = -1951107532, tmp)|x)))%x)*((2704859526.4047284)%((x*x)>>x)))))); - assertEquals(30754, x &= (1706162402.033193)); - assertEquals(30454.010307602264, x -= (((590456519)>>>(tmp = 2713582726.8181214, tmp))/x)); - assertEquals(8419062, x |= ((2848886788)<<(tmp = 2993383029.402275, tmp))); - assertEquals(16, x >>= (tmp = -1651287021, tmp)); - assertEquals(1, x /= x); - assertEquals(-1407643485, x ^= (-1407643486)); - assertEquals(2, x >>>= (-1126004674)); - assertEquals(470812081, x ^= ((-2411718964)>>>x)); - assertEquals(550443688.6407901, x += (tmp = 79631607.6407901, tmp)); - assertEquals(3669092443.64079, x -= (-3118648755)); - assertEquals(-625874853, x <<= (((tmp = -1640437346, tmp)/(((x*x)>>>x)<>>(tmp = -1330495518.8175917, tmp))<<(((tmp = 1369938417.8760853, tmp)*(-1217947853.8942266))<<(-2048029668))))-(-513455284)))>>>(tmp = 1980267333.6201067, tmp))))<<(((1503464217.2901971)>>(tmp = 2258265389, tmp))>>>(1868451148)))&(x-(x^(tmp = -1565209787, tmp))))*x)<<(tmp = -2426550685, tmp))); - assertEquals(-1921660672, x %= (((tmp = 523950472.3315773, tmp)+(((2971865706)^x)-x))&(-1773969177))); - assertEquals(420176973.1169958, x += (2341837645.116996)); - assertEquals(420176973, x >>>= (((tmp = -2485489141, tmp)<<((tmp = -2520928568.360244, tmp)+x))&(543950045.0932506))); - assertEquals(50, x ^= (x|((tmp = 2001660699.5898843, tmp)>>>(tmp = 1209151128, tmp)))); - assertEquals(138212770720.96973, x *= (2764255414.4193945)); - assertEquals(-28683, x |= (((-535647551)|x)>>((((2065261509)>>(-354214733))*x)+(-3218217378.2592907)))); - assertEquals(1627048838, x ^= (tmp = -1627044749, tmp)); - assertEquals(-839408795, x ^= (2903337187.480303)); - assertEquals(-1000652427, x += (tmp = -161243632, tmp)); - assertEquals(740237908.4196916, x += ((tmp = 1587000348, tmp)+(tmp = 153889987.41969144, tmp))); - assertEquals(Infinity, x /= (((((-615607376.1012697)&(57343184.023578644))+((-1967741575)|(-3082318496)))<<(((tmp = -958212971.99792, tmp)>>(tmp = 2962656321.3519197, tmp))-(x|(x*(969365195)))))<<(tmp = -1739470562.344624, tmp))); - assertEquals(-Infinity, x /= ((tmp = -1736849852, tmp)%x)); - assertEquals(0, x <<= x); - assertEquals(0, x %= (tmp = -226505646, tmp)); - assertEquals(1982856549, x -= (((x+(-1982856549))%(-2274946222))>>(x%(((tmp = -1289577208.9097936, tmp)>>x)^(778147661))))); - assertEquals(1648018703, x ^= ((3085618856)+((tmp = 1546283467, tmp)&(((x|((-2376306530)*(((((((tmp = -2807616416, tmp)%(((((tmp = 347097983.1491085, tmp)<>>(tmp = 1679395106, tmp)))^((1277761947)<<((tmp = -1614841203.5244312, tmp)>>x)))%((tmp = 1552249234.2065845, tmp)>>>x))>>>(tmp = -1677859287, tmp)))>>>(2605907565))/(tmp = 2291657422.221277, tmp)))%(((tmp = 425501732.6666014, tmp)>>>(1327403879.455553))+x))>>((tmp = -3075752653.2474413, tmp)&(x-(tmp = -71834630, tmp))))|((((2532199449.6500597)*(-842197612.4577162))%x)>>x))*(((1220047194.5100307)<<((tmp = 1642962251, tmp)<<((-662340)>>>((tmp = -1672316631.3251066, tmp)<<((tmp = 1762690952.542441, tmp)-(x/(1904755683.3277364)))))))>>x))|(((((tmp = 1625817700.7052522, tmp)%(tmp = -2990984460, tmp))|(2395645662))-((2619930607.550086)>>x))^(tmp = 130618712, tmp)))))&((-3142462204.4628367)/(1078126534.8819227)))%(((tmp = -256343715.2267704, tmp)+x)^(tmp = 2009243755, tmp)))))); - assertEquals(1937698223, x |= (((tmp = 866354374.7435778, tmp)+(tmp = 2751925259.3264275, tmp))%(-2252220455))); - assertEquals(0, x -= x); - assertEquals(-823946290.6515498, x -= (tmp = 823946290.6515498, tmp)); - assertEquals(706970324, x ^= (-457174758)); - assertEquals(32916, x &= (25740724)); - assertEquals(0, x >>>= ((-1658933418.6445677)|(tmp = -846929510.4794133, tmp))); - assertEquals(0, x ^= ((-834208600)/((-1256752740)&(tmp = 1973248337.8973258, tmp)))); - assertEquals(-1639195806, x += (-1639195806)); - assertEquals(-1559416478, x ^= ((tmp = 1349893449.0193534, tmp)*(tmp = 2044785568.1713037, tmp))); - assertEquals(0, x &= ((x>>(tmp = 1720833612, tmp))/((x+(-1305879952.5854573))^x))); - assertEquals(-0, x *= (tmp = -1713182743, tmp)); - assertEquals(0, x >>= x); - assertEquals(NaN, x /= (((x%((x>>>(((-1515761763.5499895)^(-3076528507.626539))<<(tmp = 1293944457.8983147, tmp)))<<(tmp = 276867491.8483894, tmp)))>>(tmp = -2831726496.6887417, tmp))%((((tmp = 1780632637.3666987, tmp)^x)%((208921173.18897665)>>(tmp = 633138136, tmp)))+x))); - assertEquals(0, x >>= (tmp = -2755513767.0561147, tmp)); - assertEquals(0, x |= x); - assertEquals(840992300.0324914, x -= ((-840992300.0324914)+x)); - assertEquals(840992300, x &= x); - assertEquals(-1094140277, x ^= (2364029095)); - assertEquals(-Infinity, x /= ((((((1257084956)<<(2009241695))>>(x+x))*x)>>>x)>>>(205318919.85870552))); - assertEquals(-Infinity, x -= (((x>>>(tmp = 3037168809.20163, tmp))&x)*(x&(((806151109)*x)-(tmp = -1741679480.58333, tmp))))); - assertEquals(400659949, x ^= (tmp = 400659949, tmp)); - assertEquals(5, x >>= (tmp = 1175519290, tmp)); - assertEquals(5, x |= x); - assertEquals(0, x >>= x); - assertEquals(0, x >>= ((1317772443)&(x<>>((((tmp = 363239924, tmp)>>x)|((((tmp = -1419142286.0523334, tmp)-(x<>>(((-2336511023.342298)&x)/(tmp = 2296926221.402897, tmp)))))>>((tmp = 1378982475.6839466, tmp)>>(tmp = -816522530, tmp))))&(x^(tmp = -1668642255.0586753, tmp)))%(((tmp = 921249300.1500335, tmp)^x)*(tmp = -2228816905, tmp)))>>x)); - assertEquals(-1460685191, x |= (tmp = 2834282105, tmp)); - assertEquals(-1463439264, x &= (tmp = 2881860064.146755, tmp)); - assertEquals(20.98100714963762, x /= (((3017150580.7875347)^((250499372.5339837)<<(tmp = -42767556.30788112, tmp)))|(x%(-2829281526)))); - assertEquals(1, x /= x); - assertEquals(2, x += x); - assertEquals(8, x <<= x); - assertEquals(0, x >>>= ((730174750)>>>x)); - assertEquals(0, x ^= x); - assertEquals(-1459637373, x ^= (2835329923.456409)); - assertEquals(-1233115861, x ^= (511678120)); - assertEquals(95682857, x >>>= ((tmp = 1534570885, tmp)|(tmp = -414425499.3786578, tmp))); - assertEquals(70254633, x &= (-1502067585)); - assertEquals(51384749748909710, x *= (tmp = 731407276, tmp)); - assertEquals(9390482.873469353, x %= (tmp = -592576964.7982686, tmp)); - assertEquals(4695241, x >>>= (tmp = -1879898431.5395758, tmp)); - assertEquals(-3129811912538149000, x += (((-727481809)^((3106908604)%x))*((((tmp = -1218123690, tmp)^(x>>((-942923806)^x)))/(x+x))>>>(-1508881888.969373)))); - assertEquals(1596870236, x ^= (-1135673764.9721224)); - assertEquals(0, x ^= x); - assertEquals(2133782410, x |= (((-2202469371)>>((tmp = 1327588406.183342, tmp)/(tmp = 253581265.7246865, tmp)))-((tmp = 2226575446.838795, tmp)^x))); - assertEquals(-81895217.83608055, x -= (tmp = 2215677627.8360806, tmp)); - assertEquals(812089344, x <<= ((tmp = 882824005, tmp)/(((x>>((((((((tmp = 1211145185, tmp)/((-137817273)-(((tmp = 2165480503.1144185, tmp)-(-1840859887.1288517))*((155886014.8393339)>>((-1984526598)<<(tmp = 1331249058.3246582, tmp))))))>>(x*x))%(2830324652))%(933701061))|(1346496215))^(tmp = -988800810, tmp))+x))>>>x)<<(-2372088384)))); - assertEquals(812089344, x <<= x); - assertEquals(8472, x %= ((((x|(((x%(tmp = 2772099481.664402, tmp))+(2894690616))-x))&(x&(((-715790638.6454093)>>(tmp = -1447931029, tmp))-(tmp = 1761027889, tmp))))^x)%(((tmp = 830969811, tmp)|x)|((-1102267929)-(3193018687))))); - assertEquals(-0.0000028559857417864914, x /= (-2966401364)); - assertEquals(0, x >>= x); - assertEquals(-701800392, x += (tmp = -701800392, tmp)); - assertEquals(2034756873, x -= (tmp = -2736557265, tmp)); - assertEquals(-0.9475075048394501, x /= (((((82879340.27231383)+((tmp = -2876678920.653639, tmp)*(-2801097850)))<>>((x<<(((((x|x)&(tmp = -1572694766, tmp))>>(x+(x/((x-(((tmp = 1435301275, tmp)|(tmp = 983577854.212041, tmp))>>(tmp = 632633852.1644179, tmp)))+x))))>>>x)|(-850932021)))>>x))<<(-821983991))); - assertEquals(0, x >>= (x>>(2424003553.0883207))); - assertEquals(2599386349, x -= (-2599386349)); - assertEquals(-68157441, x |= (((tmp = -1170343454.9327996, tmp)+((((tmp = 448468098, tmp)|(x>>(x>>(((x>>(((x/(x&(x<>>(-2953152591.015912)))%((tmp = -1304628613, tmp)/(x&((x|((-2000952119)%((691146914)/((tmp = 1480966978.7766845, tmp)<<((tmp = 2644449477.392441, tmp)|(-2143869305.871568))))))+(tmp = -315254308, tmp))))))))&(-2060205555))|((-604140518.8186448)^(x*x))))%(x*((tmp = 1383244000.2807684, tmp)/(3195793656))))); - assertEquals(-68157441, x |= x); - assertEquals(-1, x >>= x); - assertEquals(-2147483648, x <<= x); - assertEquals(-1.5257198286933313, x /= (tmp = 1407521622, tmp)); - assertEquals(1149084989.47428, x += (((tmp = 1149084991.9004865, tmp)&x)^((((((2797053000)/(x^x))*(-2829253694))>>>((tmp = -610924351, tmp)>>x))>>>(tmp = -675681012, tmp))<<(2812852729)))); - assertEquals(0, x %= x); - assertEquals(0, x <<= ((tmp = -584069073, tmp)*(-2953140326))); - assertEquals(0, x <<= (tmp = -481515023.6404002, tmp)); - assertEquals(-1441535370, x ^= (2853431926)); - assertEquals(2853431926, x >>>= (((((((tmp = 2215663525.9620194, tmp)%((-1102832735.9274108)/x))>>x)&(3220898702.76322))&(((2077584946)*((x>>x)<<((tmp = 1845701049, tmp)-x)))/(tmp = 1947184202.5737212, tmp)))|(((tmp = 2976351488, tmp)^(-42517339))%((2648230244.410125)^(1520051731.31089))))/(1761635964))); - assertEquals(43539, x >>>= (tmp = 1361671184.7432632, tmp)); - assertEquals(21769, x >>= ((tmp = -804932298.9572575, tmp)>>((((tmp = 1749006993.253409, tmp)+(276536978))^x)|(2698166994)))); - assertEquals(1103025563, x |= (tmp = 1103007891, tmp)); - assertEquals(1327594607, x += (tmp = 224569044, tmp)); - assertEquals(1327594607, x |= x); - assertEquals(-478674944, x <<= (((672378508)&x)^(((-2070209708.6470091)|x)|(x>>>x)))); - assertEquals(-478674943, x ^= ((-1832457698.6345716)>>>((tmp = -3077714019, tmp)/(1809383028)))); - assertEquals(229129701056053250, x *= x); - assertEquals(1, x /= x); - assertEquals(2, x <<= (-1522529727)); - assertEquals(2, x &= x); - assertEquals(-2016989182, x |= ((((tmp = -1267845511, tmp)*(1225350332))+((tmp = -1397690831.5717893, tmp)>>>(tmp = -2575382994, tmp)))+x)); - assertEquals(-241, x >>= (tmp = 931869591, tmp)); - assertEquals(-1048087547, x &= (tmp = -1048087403.1163051, tmp)); - assertEquals(-4004486369.844599, x += (tmp = -2956398822.844599, tmp)); - assertEquals(-4004486368.844599, x -= (((2701878498)>>x)|(x|(-1079354967)))); - assertEquals(1, x >>= (tmp = -1583689092, tmp)); - assertEquals(1, x *= (x>>(x%x))); - assertEquals(0, x %= x); - assertEquals(-0, x *= (-120818969)); - assertEquals(0, x >>= ((tmp = 1794099660, tmp)/(((x&(((-321906091)^(tmp = -3009885933.8449526, tmp))&((tmp = -140917780, tmp)|(2037803173.4075825))))&x)&(tmp = -745357154, tmp)))); - assertEquals(0, x <<= (563984257.3493614)); - assertEquals(NaN, x %= ((((x>>(tmp = -2190891392.320677, tmp))-x)<<(462714956))<<((tmp = -84413570, tmp)|((x|(-2787022855))-((tmp = 2028532622, tmp)|(tmp = 1103757073.9178817, tmp)))))); - assertEquals(NaN, x *= ((2137674085.3142445)|((tmp = -1054749859.2353804, tmp)%x))); - assertEquals(NaN, x /= (x>>>(((((tmp = 597103360.9069608, tmp)>>>(-2850217714.1866236))-((tmp = 1125150527, tmp)*x))%(tmp = -982662312, tmp))|((x/(((968656808.6069037)*(((128484784.15362918)>>x)^x))&((((x/((((tmp = 748775979, tmp)*((x-(((tmp = 709571811.9883962, tmp)%(-2083567026))%(x/(tmp = -680467505, tmp))))/((tmp = -167543858, tmp)/(tmp = -3113588783, tmp))))/x)<<(-2605415230)))>>>(tmp = 3133054172, tmp))%(tmp = -1904650393, tmp))*((x|(-1193709562))*(tmp = -1731312795.718104, tmp)))))/((tmp = -672386301, tmp)/(tmp = 808898833.4163612, tmp)))))); - assertEquals(-9, x |= (((((tmp = 150377964.57195818, tmp)/(tmp = 2161910879.0514045, tmp))-(-2381625849))>>(-2715928517))/(((452113643)^(-2502232011))/((-3076471740)^(((tmp = 1664851172, tmp)*(((-1460011714)>>>x)<<((-2870606437)%x)))*((tmp = -2836565755.609597, tmp)-((x/(tmp = -871461415, tmp))-(2278867564)))))))); - assertEquals(-1, x >>= x); - assertEquals(-1, x |= ((-1319927272)>>>(-2866709980))); - assertEquals(-1, x >>= ((2345179803.155703)&(-978025218.2243443))); - assertEquals(1, x /= x); - assertEquals(-260730973, x |= (tmp = -260730973, tmp)); - assertEquals(1174405120, x <<= (2681054073)); - assertEquals(1174405120, x &= x); - assertEquals(1073741824, x &= (tmp = 2017166572.7622075, tmp)); - assertEquals(1073741824, x |= x); - assertEquals(168806102, x %= ((((tmp = -2939969193.950067, tmp)|((-2325174027.614815)/(-2329212715)))*(x/(((((-2927776738)/(x|x))+(x%(tmp = -3007347037.698492, tmp)))<<(-1898633380))>>(tmp = 204338085.45241892, tmp))))^x)); - assertEquals(168806102, x %= ((-832849739.5197744)&(tmp = -141908598, tmp))); - assertEquals(-401033205.05225074, x -= (tmp = 569839307.0522507, tmp)); - assertEquals(-401033205, x &= x); - assertEquals(-401130402, x ^= ((x*(tmp = 311418759.22436893, tmp))>>x)); - assertEquals(793533469, x ^= (-950312893.5201888)); - assertEquals(756, x >>>= (-1096189516)); - assertEquals(711, x += ((tmp = -753105189, tmp)>>(599823192.5381484))); - assertEquals(0, x >>>= ((tmp = -2859668634.4641137, tmp)+(-1160392986.1521513))); - assertEquals(2427599726.176195, x -= (-2427599726.176195)); - assertEquals(1942312465.2523103, x -= (485287260.92388475)); - assertEquals(0, x >>>= ((tmp = -1740656456, tmp)/(tmp = 1339746799.9335847, tmp))); - assertEquals(0, x <<= ((-7017077.38786912)*((-699490904.4551768)^x))); - assertEquals(0, x <<= (tmp = 715662384, tmp)); - assertEquals(0, x *= (x>>>(2149735450.0758677))); - assertEquals(NaN, x /= x); - assertEquals(0, x >>= ((397078885)*((851639692.8982519)-x))); - assertEquals(0, x &= (-2526654445)); - assertEquals(0, x %= (-1204924598)); - assertEquals(251639720, x ^= (x|(tmp = 251639720, tmp))); - assertEquals(695433573, x ^= (663539405)); - assertEquals(-1038050104, x -= (1733483677)); - assertEquals(0, x ^= x); - assertEquals(NaN, x %= x); - assertEquals(0, x &= (392107269)); - assertEquals(0, x %= (-3084908458.241551)); - assertEquals(0, x ^= x); - assertEquals(-2121660509, x ^= (tmp = -2121660509.7861986, tmp)); - assertEquals(2285041855588855800, x *= (x|(3209046634))); - assertEquals(54915072, x >>>= (x%(((((x%((((tmp = -1429433339.5078833, tmp)|(tmp = 2906845137, tmp))^(3207260333))&(-848438650)))-(-2721099735))&(141851917.19978714))+x)/x))); - assertEquals(54915072, x &= x); - assertEquals(54915072, x %= (x+(1855489160))); - assertEquals(70078753, x ^= ((((((-1648661736)+(x%((-1421237596)+(tmp = 2053180992.3857927, tmp))))+(tmp = 38606889, tmp))<<((-241334284)%((x>>(215316122))*(tmp = 396488307, tmp))))+((tmp = -2900704565, tmp)^x))^(((1103481003.1111188)^x)-(tmp = 1304113534, tmp)))); - assertEquals(1149501440, x <<= ((x>>(tmp = 3203172843, tmp))*(tmp = -192535531, tmp))); - assertEquals(0, x ^= x); - assertEquals(0, x >>= ((tmp = 2751499787, tmp)&((tmp = 2217654798, tmp)*(tmp = -2798728014, tmp)))); - assertEquals(NaN, x /= ((((-2019592425)>>>((((-1571930240.741224)>>>((-183952981)/((((1990518443.672842)>>(((((2051371284)%(685322833.6793983))>>>(2662885938))<<(-1212029669.6675105))|((-2790877875)<<(1546643473))))<>>x)))&x)<<(tmp = -48558935.55320549, tmp))); - assertEquals(0, x <<= (x&x)); - assertEquals(0, x *= (x%(tmp = 301196068, tmp))); - assertEquals(398290944, x |= (((tmp = 1904146839, tmp)+(1521017178))*(-3174245888.562067))); - assertEquals(1256401076, x ^= (1566464180)); - assertEquals(149620758, x %= ((tmp = 532626355, tmp)^(tmp = -382971203, tmp))); - assertEquals(149620791, x |= (x>>x)); - assertEquals(-0.07034576194938641, x /= ((tmp = -1977313182.7573922, tmp)-x)); - assertEquals(0, x <<= x); - assertEquals(0, x &= x); - assertEquals(0, x /= ((2182424851.139966)%(((-2768516150)+x)>>>x))); - assertEquals(0, x %= (-504299638.53962016)); - assertEquals(-0, x *= (-2915134629.6909094)); - assertEquals(0, x <<= ((tmp = 952692723.402582, tmp)%(2146335996.785011))); - assertEquals(230457472, x |= ((tmp = -574776101.8681948, tmp)*(683185125))); - assertEquals(933795934, x ^= (tmp = 974395614, tmp)); - assertEquals(933801974, x ^= (x>>>((-148683729)*(((tmp = 2912596991.415531, tmp)^(-2883672328))/x)))); - assertEquals(222, x >>= (-3060224682)); - assertEquals(27, x >>>= (1429156099.1338701)); - assertEquals(754519106, x ^= (tmp = 754519129.7281355, tmp)); - assertEquals(188629776, x >>>= ((x>>>((1247267193)<<(tmp = -936228622, tmp)))%((tmp = 978604324.8236886, tmp)*((tmp = -3018953108, tmp)^(((tmp = 259650195, tmp)>>>(tmp = 2762928902.7901163, tmp))*(x>>((tmp = 787444263.5542864, tmp)/(x>>>(((-2039193776)<<(tmp = -1408159169, tmp))-(1238893783)))))))))); - assertEquals(188629775.33987066, x += ((tmp = 1040520414, tmp)/((-1576237184)|((tmp = -970083705, tmp)&(((tmp = -312062761.12228274, tmp)|(1171754278.2968853))<<(-2069846597.7723892)))))); - assertEquals(1473670, x >>>= ((tmp = 202409672, tmp)^x)); - assertEquals(2171703268900, x *= (x>>(((tmp = 840468550, tmp)&(-3208057101.2136793))/x))); - assertEquals(0, x ^= x); - assertEquals(0, x ^= (x&((tmp = 2569871408.2405066, tmp)|((tmp = -3149374622, tmp)<<(x-(x|((tmp = -821239139.1626894, tmp)>>>x))))))); - assertEquals(NaN, x /= x); - assertEquals(NaN, x %= (tmp = 1926106354, tmp)); - assertEquals(0, x >>= ((x/(-2848416))/(tmp = 2484293767, tmp))); - assertEquals(0, x <<= ((tmp = -2484137114, tmp)>>>(tmp = -887083772.8318355, tmp))); - assertEquals(0, x >>= (tmp = -2651389432, tmp)); - assertEquals(0, x ^= x); - assertEquals(1041871201, x += ((tmp = 1041871201.9272791, tmp)|(x<<(-1136959830)))); - assertEquals(651390879501530900, x *= ((tmp = 1250424964.0346212, tmp)>>x)); - assertEquals(1965815296.245636, x %= ((2650603245.655831)+((-1610821947.8640454)>>>(((878987151.6917406)*((((784630543)%(((1448720244)>>(((tmp = 3036767847, tmp)+((tmp = 1012548422, tmp)<<(1957000200)))-x))/(x>>x)))<<((tmp = 914710268, tmp)*(((x^(1559603121))<<(tmp = 3181816736, tmp))|((-1964115655)+x))))-(-1055603890)))&(946797797.0616649))))); - assertEquals(1965815296.245636, x %= (tmp = -2601038357.593118, tmp)); - assertEquals(-769384440.872302, x += (-2735199737.117938)); - assertEquals(-769384440.872302, x %= (2193123162)); - assertEquals(1, x /= x); - assertEquals(1, x -= (((x>>>(-1968465925))*((tmp = 563037904, tmp)>>((tmp = 3009534415.769578, tmp)>>((-2567240601.7038674)<<(tmp = -1258402723.4150183, tmp)))))%(3112239470.276867))); - assertEquals(1, x |= x); - assertEquals(1505461527, x ^= (tmp = 1505461526.5858076, tmp)); - assertEquals(406553877, x &= (tmp = 2558242293, tmp)); - assertEquals(406553877, x |= x); - assertEquals(-574902339, x |= ((-709809495)%(tmp = -2880884811.410611, tmp))); - assertEquals(-20281777.349363208, x %= (22184822.46602547)); - assertEquals(1, x /= x); - assertEquals(-4360732, x ^= ((x|(tmp = 3178620274, tmp))>>(((2686286888)&(((-1107223053.8716578)/(((-2955575332.3675404)+(-2770518721))|(-2705016953.640522)))-x))^((1473641110.4633303)*((((-1466496401)<>>(tmp = 1994541591.1032422, tmp))+(tmp = -1276676679.9747126, tmp))&((tmp = 1764029634.2493339, tmp)+((x|(tmp = -3050446156, tmp))-((tmp = -9441859, tmp)/(((-2072420232)&x)*(-1003199889))))))+(tmp = -2443230628, tmp))*x))*((x&((((x|(747566933))*(((2039741506)>>>((tmp = -2456000554, tmp)>>>(-1566360933.7788877)))^((tmp = 960600745, tmp)/x)))&(x^(((-2649310348.777452)^((2224282875)-(tmp = -2129141087.3182096, tmp)))<<((x<>(((-2686069468.8930416)-x)+(tmp = 367442353.2904701, tmp))))%(1218262628))))/x))^(-919079153.7857773))); - assertEquals(747, x >>>= (1229157974)); - assertEquals(747, x |= x); - assertEquals(NaN, x %= (((3086718766.4715977)*((7912648.497568846)*((-2713828337.1659327)*(-176492425.4011252))))<<(tmp = -1074475173, tmp))); - assertEquals(0, x >>>= ((((444923201)<>>(-883391420.2142565))*((((617245412)<>>x)*(-913086143.2793813)))); - assertEquals(1941802406, x ^= (tmp = -2353164890, tmp)); - assertEquals(14, x >>>= (-1600311077.4571416)); - assertEquals(-18229482703.7246, x += (((x+(-993157139.7880647))%x)*(1862419512.1781366))); - assertEquals(-14.531388114858734, x /= ((tmp = -1649072797.951641, tmp)<>= ((x/x)^x)); - assertEquals(2, x ^= ((-1597416259)/(-738770020))); - assertEquals(0, x >>= (tmp = -387850072.74833393, tmp)); - assertEquals(0, x >>>= ((2491085477.186817)>>(x*(((tmp = -1592498533, tmp)+(tmp = 2086841852, tmp))&(-3174019330.8288536))))); - assertEquals(0, x >>= x); - assertEquals(0, x >>>= (tmp = -3045348659.45243, tmp)); - assertEquals(-1208573479, x |= ((3086393817)-x)); - assertEquals(1460649854142163500, x *= x); - assertEquals(1588199424, x <<= (-1902076952)); - assertEquals(1586102272, x &= (tmp = 2139876091.9142454, tmp)); - assertEquals(-460908552.5528109, x -= (tmp = 2047010824.552811, tmp)); - assertEquals(-460908552.5528109, x %= (tmp = 507904117.09368753, tmp)); - assertEquals(-460908552.5528109, x %= (2749577642.527038)); - assertEquals(234012, x >>>= (-340465746.91275)); - assertEquals(0, x >>>= x); - assertEquals(0, x %= (tmp = -2601875531, tmp)); - assertEquals(0, x %= (x|(tmp = 650979981.1158671, tmp))); - assertEquals(0, x %= (tmp = -2286020987, tmp)); - assertEquals(0, x |= x); - assertEquals(0, x &= (x|((tmp = 2568101411, tmp)-(-1438002403)))); - assertEquals(0, x >>>= (1399248574)); - assertEquals(0, x %= (-1906670287.2043698)); - assertEquals(0, x >>= (1019286379.6962404)); - assertEquals(0, x |= (x/(tmp = -82583591.62643051, tmp))); - assertEquals(NaN, x %= x); - assertEquals(NaN, x *= (x^(1874776436))); - assertEquals(NaN, x -= ((-1238826797)-(-2971588236.7228813))); - assertEquals(0, x <<= (2064632559)); - assertEquals(-0.5967273958864694, x += (((tmp = 1502995019, tmp)>>x)/(-2518729707))); - assertEquals(0, x >>>= x); - assertEquals(-0, x /= (-1923030890)); - assertEquals(NaN, x %= x); - assertEquals(0, x >>= (tmp = 1081732779.9449487, tmp)); - assertEquals(-820183066, x |= ((tmp = -3169007292.4721155, tmp)|(-1912588318))); - assertEquals(0, x -= x); - assertEquals(NaN, x %= x); - assertEquals(NaN, x /= (tmp = 287181840, tmp)); - assertEquals(0, x &= (x/((tmp = -1139766051, tmp)<<(x&(tmp = 2779004578, tmp))))); - assertEquals(0, x >>= (((tmp = -1816938028, tmp)+(-224851993.3139863))*(-2933829524))); - assertEquals(0, x |= ((((tmp = 305077929.1808746, tmp)&((x-(((((tmp = 2122810346.7475111, tmp)<<(717271979))*(tmp = 256854043.72633624, tmp))%((x+(tmp = -318657223.9992106, tmp))*((1993144830)<<(2594890698.603228))))^((((tmp = 257370667, tmp)>>>((((x^(3160746820))>>>(2049640466.8116226))>>>(2543930504.7117066))^(x-x)))^(x%(964838975)))^x)))%(x*x)))>>>x)*(tmp = -46861540, tmp))); - assertEquals(747575633, x ^= ((-2406502427)-(-3154078060.3794584))); - assertEquals(0, x *= (x%x)); - assertEquals(0, x <<= (1313773705.3087234)); - assertEquals(0, x >>>= ((x+x)>>>(3068164056))); - assertEquals(-0, x *= (tmp = -1771797797, tmp)); - assertEquals(1784146970, x ^= (tmp = 1784146970, tmp)); - assertEquals(1784146970, x >>>= (tmp = -2219972320.7195597, tmp)); - assertEquals(1744830464, x <<= ((((-2769476584)-(((1798431604)>>(tmp = 1337687914.799577, tmp))>>>((-2802941943.15014)>>x)))>>>(tmp = 646033678, tmp))-x)); - assertEquals(3044433348102455300, x *= x); - assertEquals(0, x >>= ((tmp = 1592076570.1900845, tmp)-((645774223.6317859)>>x))); - assertEquals(0, x >>= (x>>>(-3045822290.1536255))); - assertEquals(-0, x *= (tmp = -2450298800.986624, tmp)); - assertEquals(0, x >>= (tmp = 1379605393, tmp)); - assertEquals(0, x &= (((x-((((tmp = 837939461.6683749, tmp)+((((-813261853.3247359)|(x&(((-2565113940)*(tmp = -2725085381.240134, tmp))|x)))%(-1457259320))-(x+((tmp = -273947066, tmp)%((1164825698.879649)>>(1653138880.3434052))))))>>>(2823967606.411492))>>>((((((((1189235604.9646997)/(tmp = -2875620103.4002438, tmp))-(tmp = -801261493, tmp))<<(((1832556579.5095325)<>(tmp = -2352814025, tmp))))-(tmp = -1445043552.99499, tmp))&(x<<(((((445325471)*(1293047043.1808558))>>>(((1901837408.5910044)-(tmp = -2349093446.5313253, tmp))>>>(tmp = 1000847053.1861948, tmp)))*(x>>>(1771853406.6567078)))>>x)))>>>x)>>>(x^((tmp = 2813422715, tmp)-(x+(-342599947)))))))&(x>>>x))*x)); - assertEquals(NaN, x %= ((tmp = -3027713526, tmp)-((((x%(((((x/((2711155710)^(((((x>>>x)%((1098599291.155015)^(((((tmp = 1855724377.8987885, tmp)/(x|x))*((-1963179786)*((x-((-1634717702)%x))<>(2008859507))>>((tmp = 2635024299.7983694, tmp)^(tmp = -602049246, tmp)))))*(x>>x))&(tmp = -1925103609, tmp))*((tmp = 2106913531.2828505, tmp)%((tmp = -200970069, tmp)*(-2809001910.951446))))))%x)*((1990098169)>>((x<<(2303347904.2601404))%x)))|(2767962065.9846206))+(201589933.301661)))>>(((tmp = 1921071149.5140274, tmp)>>(1054558799.1731887))|x))*(x/((((-2833879637.345674)>>>(tmp = 2849099601, tmp))%x)+(x%(x%(((tmp = 1983018049, tmp)^(tmp = -2659637454, tmp))>>((-1335497229.6945198)-(x+(((((tmp = 1136612609.848967, tmp)%(2471741030.01762))<<(x|(((tmp = 1644081190.1972675, tmp)&(-1422527338))^(2379264356.265957))))/(tmp = 2979299484.1884174, tmp))/x)))))))))*((tmp = 1858298882, tmp)^((tmp = -547417134.9651439, tmp)*x))))); - assertEquals(-7664, x |= ((2286000258.825538)>>(1716389170))); - assertEquals(-1, x >>= x); - assertEquals(-1231640486.3023372, x += ((tmp = 1231640485.3023372, tmp)*x)); - assertEquals(-2463280972.6046743, x += x); - assertEquals(1746, x >>>= x); - assertEquals(1746, x >>>= (((tmp = -562546488.0669937, tmp)*((-2475357745.8508205)&((x%(821425388.8633704))%((((-2315481592.687686)&(((tmp = 3130530521.7453523, tmp)+x)-x))^(-973033390.1773088))/x))))<>>= (tmp = 1249792906, tmp)); - assertEquals(0, x >>>= (tmp = -1068989615, tmp)); - assertEquals(0, x >>>= (tmp = 347969658.92579734, tmp)); - assertEquals(-2656611892, x -= (2656611892)); - assertEquals(1944539596, x |= (((tmp = 3000889963, tmp)-x)<<((tmp = 2917390580.5323124, tmp)^(-996041439)))); - assertEquals(1944539596, x |= x); - assertEquals(-739740167.0752468, x -= ((1712009965.0752468)+(x>>((tmp = -740611560.99014, tmp)>>>((tmp = -1033267419.6253037, tmp)&(862184116.3583733)))))); - assertEquals(-1479480334.1504936, x += x); - assertEquals(-4294967296.150494, x -= (x>>>((1219235492.3661718)&(3138970355.0665245)))); - assertEquals(0, x >>= (x*x)); - assertEquals(-0, x *= ((-2202530054.6558375)-(-676578695))); - assertEquals(-0, x %= (1336025846)); - assertEquals(0, x &= x); - assertEquals(0, x /= (1759366510)); - assertEquals(630007622, x |= (630007622)); - assertEquals(-0.22460286863455903, x /= (tmp = -2804984753, tmp)); - assertEquals(1102410276.775397, x -= (-1102410277)); - assertEquals(1102410276.775397, x %= ((((-2569525203)&x)*(x|(-1932675298)))/((-2376634450)>>>(x>>>(tmp = 936937604.9491489, tmp))))); - assertEquals(33642, x >>= (3028252527)); - assertEquals(2181106522.688034, x -= (-2181072880.688034)); - assertEquals(-2113861630, x &= (2523921542)); - assertEquals(-2147483646, x &= (-1996601566.9370148)); - assertEquals(-2147483648, x &= (tmp = -665669175.1968856, tmp)); - assertEquals(-2858673260.1367273, x -= (tmp = 711189612.1367272, tmp)); - assertEquals(350657, x >>= (tmp = -170243892.25474262, tmp)); - assertEquals(-0.0001405571562140975, x /= (-2494764474.7868776)); - assertEquals(0, x ^= x); - assertEquals(NaN, x /= ((x&(-2041236879))*((tmp = -2182530229, tmp)^((1274197078)*x)))); - assertEquals(0, x |= (x&(x-(1794950303)))); - assertEquals(1222105379, x |= (tmp = 1222105379, tmp)); - assertEquals(729884484, x ^= (tmp = 1666645607.6907792, tmp)); - assertEquals(729884484, x %= (tmp = -2896922082, tmp)); - assertEquals(8768, x &= ((tmp = 358940932, tmp)>>>(3159687631.3308897))); - assertEquals(1892384495, x |= (-2402591569)); - assertEquals(1892470533, x += ((((x^(-2266612043))>>>(tmp = -531009952, tmp))<<(x>>>((-1365315963.5698428)>>>((x+((-3168207800.184341)-(tmp = 1776222157.609917, tmp)))+(-1588857469.3596382)))))>>>x)); - assertEquals(143587205, x += (tmp = -1748883328, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x >>= (tmp = 2334880462.3195543, tmp)); - assertEquals(0, x &= ((tmp = 1819359625.4396145, tmp)|(tmp = -1323513565, tmp))); - assertEquals(-1102259874, x ^= (3192707422)); - assertEquals(2567457772588852700, x *= (-2329267202)); - assertEquals(-16783687, x |= ((-2212476227.060922)^(378973700.78452563))); - assertEquals(4278183609, x >>>= ((((((((tmp = 1766363150.197206, tmp)*(-2774552871))%x)>>>((3071429820)&((((((tmp = 351068445.27642524, tmp)<<(tmp = 2646575765, tmp))^(806452682))<<((x>>>(-2217968415.505327))<<(1564726716)))|x)-(tmp = -3110814468.9023848, tmp))))+x)^x)>>>(tmp = -617705282.0788529, tmp))>>>x)); - assertEquals(4314933530, x -= ((1032195469.789219)|(tmp = -448053861.9531791, tmp))); - assertEquals(9709850, x %= (((tmp = -3056286252.5853324, tmp)*x)&x)); - assertEquals(9709850, x %= (tmp = -2596800940, tmp)); - assertEquals(2655489828.9461126, x -= (tmp = -2645779978.9461126, tmp)); - assertEquals(369266212, x &= (((335712316.24874604)|(tmp = 33648215, tmp))-((x/(2639848695))<<((-499681175)<<(-2490554556))))); - assertEquals(-2147483648, x <<= (-834465507)); - assertEquals(1073741824, x >>>= (((tmp = 3018385473.1824775, tmp)>>(x*(-2574502558.216812)))|(((tmp = -1742844828, tmp)*(1698724455))&x))); - assertEquals(-270818218, x += (-1344560042)); - assertEquals(360710144, x <<= x); - assertEquals(0, x <<= (tmp = 612718075, tmp)); - assertEquals(0, x <<= x); - assertEquals(-0, x /= (tmp = -1922423684, tmp)); - assertEquals(-0, x *= ((((tmp = 741806213.3264687, tmp)%(-711184803.2022421))+((tmp = -3209040938, tmp)&(525355849.044886)))&(x<<(tmp = -698610297, tmp)))); - assertEquals(0, x <<= (-482471790)); - assertEquals(0, x &= ((-921538707)/(tmp = -482498765.988616, tmp))); - assertEquals(0, x ^= (x^x)); - assertEquals(-351721702, x ^= (-351721702.8850286)); - assertEquals(726242219625599900, x -= ((2064820612)*x)); - assertEquals(1452484439251199700, x += x); - assertEquals(2.52318299412847e-15, x %= ((((x<<((2508143285)+x))>>(-2493225905.011774))%(1867009511.0792103))/((((x<<(2542171236))>>((x|x)&(tmp = -384528563, tmp)))+((-1168755343)*(1731980691.6745195)))+(tmp = -1608066022.71164, tmp)))); - assertEquals(79905008, x += ((((-2702081714.590131)&(x+(tmp = -1254725471.2121565, tmp)))*(3088309981))%(((tmp = 1476844981.1453142, tmp)|((((tmp = -1243556934.7291331, tmp)%x)^(-1302096154))+((660489180)/(tmp = -681535480.8642154, tmp))))^(tmp = -8410710, tmp)))); - assertEquals(1215822204, x ^= ((-3008054900)>>>(tmp = -1990206464.460693, tmp))); - assertEquals(-394790532, x |= ((((-1334779133.2038574)+(tmp = -1407958866.832946, tmp))<<(1699208315))-(((x^(x%x))<<(3216443))>>(x+((((2576716374.3081336)|((tmp = 2316167191.348064, tmp)&((51086351.20208645)&((x|(tmp = -357261999, tmp))^(x/x)))))*(-45901631.10155654))*(((-439588079)>>>((-2358959768.7634916)|(1613636894.9373643)))+(((-908627176)<>>((x>>(1289400876))+(tmp = 2726174270, tmp))))))))))); - assertEquals(-0.17717467607696327, x /= (2228255982.974148)); - assertEquals(-1905616474, x ^= (tmp = 2389350822.851587, tmp)); - assertEquals(-0, x %= x); - assertEquals(2818124981.508915, x -= (-2818124981.508915)); - assertEquals(-1476842315, x |= x); - assertEquals(73408564, x &= (-3147390604.3453345)); - assertEquals(70, x >>>= x); - assertEquals(1, x >>= x); - assertEquals(3086527319.899181, x *= (3086527319.899181)); - assertEquals(-145, x >>= x); - assertEquals(-145, x %= (tmp = -2500421077.3982406, tmp)); - assertEquals(-1, x >>= (tmp = -2970678326.712191, tmp)); - assertEquals(-1, x %= ((tmp = -535932632.4668834, tmp)+(((-1226598339.347982)<<((tmp = 616949449, tmp)/(tmp = 2779464046, tmp)))/(214578501.67984307)))); - assertEquals(1, x *= x); - assertEquals(1, x >>= ((tmp = 11080208, tmp)<<(460763913))); - assertEquals(-1.8406600706723492e-19, x /= ((tmp = -2334126306.1720915, tmp)*(tmp = 2327566272.5901165, tmp))); - assertEquals(856681434186007200, x -= ((tmp = -2286974992.8133907, tmp)*(374591518))); - assertEquals(3126084224, x >>>= x); - assertEquals(-1160460669, x |= (tmp = 181716099, tmp)); - assertEquals(873988096, x <<= (tmp = 406702419, tmp)); - assertEquals(0, x <<= ((tmp = 802107965.4672925, tmp)-((tmp = 1644174603, tmp)>>((tmp = 604679952, tmp)+(tmp = -515450096.51425123, tmp))))); - assertEquals(NaN, x %= ((x>>(tmp = 2245570378, tmp))*(tmp = 1547616585, tmp))); - assertEquals(NaN, x /= ((tmp = -776657947.0382309, tmp)&(tmp = 163929332.28270507, tmp))); - assertEquals(NaN, x *= (tmp = 243725679.78916526, tmp)); - assertEquals(NaN, x /= (x>>x)); - assertEquals(0, x <<= ((tmp = -1293291295.5735884, tmp)%(((((63309078)>>>x)&(x&(-2835108260.025297)))+x)>>>(-1317213424)))); - assertEquals(0, x *= ((((tmp = -1140319441.0068483, tmp)*(tmp = 2102496185, tmp))&(-2326380427))<<(tmp = -2765904696, tmp))); - assertEquals(0, x /= (tmp = 2709618593, tmp)); - assertEquals(0, x >>= (-1753085095.7670164)); - assertEquals(1766381484, x |= (-2528585812)); - assertEquals(1766381484, x %= (2735943476.6363373)); - assertEquals(1766381484, x %= (x*(tmp = 2701354268, tmp))); - assertEquals(-2147483648, x <<= (-323840707.4949653)); - assertEquals(4611686018427388000, x *= (x<>>((((((((((399048996)>>((-107976581.61751771)>>>x))|(((-1502100015)<<(tmp = -1108852531.9494338, tmp))&(x/(tmp = -3198795871.7239237, tmp))))+((-2627653357)>>x))>>>x)*(1066736757.2718519))%(tmp = 1326732482.201604, tmp))/(tmp = 2513496019.814191, tmp))>>>((1694891519)>>>(-2860217254.378931)))<<(tmp = 31345503, tmp))))); - assertEquals(0, x ^= (x/((-2556481161)>>>(x/(x%(x&(1302923615.7148068))))))); - assertEquals(NaN, x /= x); - assertEquals(NaN, x += (tmp = 846522031, tmp)); - assertEquals(0, x >>= (x+(-1420249556.419045))); - assertEquals(0, x ^= (((x%(-1807673170))&x)-x)); - assertEquals(-3484.311990686845, x -= ((((((-510347602.0068991)>>>x)<<((tmp = 1647999950, tmp)&(((305407727)>>((1781066601.791009)&x))<<((tmp = -998795238, tmp)%(((x/x)+x)<<(((2586995491.434947)<>>x)>>>(((((2332534960.4595165)^(-3159493972.3695474))<<(tmp = 867030294, tmp))|(2950723135.753855))^(((3150916666)<>((tmp = 414988690, tmp)|((tmp = -1879594606, tmp)/(tmp = 1485647336.933429, tmp))))))))))))>>(tmp = -2676293177, tmp))%(617312699.1995015))/((((tmp = -1742121185, tmp)^((((x&x)<<(tmp = 698266916, tmp))/(-1860886248))+((-213304430)%((((((-2508973021.1333447)+(tmp = 2678876318.4903, tmp))&(tmp = -43584540, tmp))-x)^(-2251323850.4611115))-x))))>>>(tmp = 2555971284, tmp))%((((tmp = 16925106, tmp)^x)&x)|((x/((x|(tmp = -2787677257.125139, tmp))<<(-853699567)))+(tmp = -1721553520, tmp)))))); - assertEquals(-447873933.26863855, x += (-447870448.9566479)); - assertEquals(200591060101520900, x *= x); - assertEquals(200591062202483420, x -= (-2100962536)); - assertEquals(-5.261023346568228e+24, x *= ((tmp = -419641692.6377077, tmp)>>(tmp = -224703100, tmp))); - assertEquals(1269498660, x |= (195756836)); - assertEquals(1269498660, x |= x); - assertEquals(1269498660, x |= x); - assertEquals(-37.75978948486164, x /= (((tmp = -595793780, tmp)+((tmp = 2384365752, tmp)>>>(1597707155)))|((968887032)^(tmp = 2417905313.4337964, tmp)))); - assertEquals(-37.75978948486164, x %= (tmp = -1846958365.291661, tmp)); - assertEquals(1102319266.6421175, x += (1102319304.401907)); - assertEquals(-1664202255175155200, x -= ((x^(tmp = 407408729, tmp))*x)); - assertEquals(-752874653, x ^= (tmp = 314673507, tmp)); - assertEquals(-72474761, x |= (tmp = -2538726025.8884344, tmp)); - assertEquals(-72474761, x |= x); - assertEquals(-122849418, x += ((tmp = -2332080457, tmp)|(((((30496388.145492196)*(((-1654329438.451212)|(-2205923896))&(x>>(tmp = -1179784444.957002, tmp))))&(tmp = 319312118, tmp))*(651650825))|(((-2305190283)|x)>>>(-428229803))))); - assertEquals(994, x >>>= x); - assertEquals(614292, x *= (((((2565736877)/((tmp = 649009094, tmp)>>>(((x>>>(2208471260))>>(x>>>x))%x)))&(tmp = 357846438, tmp))<<(tmp = -2175355851, tmp))%x)); - assertEquals(1792008118, x |= (tmp = 1791924774.5121183, tmp)); - assertEquals(1246238208, x &= (tmp = 1264064009.9569638, tmp)); - assertEquals(-88877082, x ^= (2969289190.285704)); - assertEquals(0.044923746573582474, x /= ((tmp = -3057438043, tmp)^(-1009304907))); - assertEquals(0, x <<= ((-828383918)-((((x>>(734512101))*(tmp = -3108890379, tmp))-(x|((tmp = 3081370585.3127823, tmp)^((-271087194)-(x/(tmp = -2777995324.4073873, tmp))))))%x))); - assertEquals(1604111507.3365753, x -= (-1604111507.3365753)); - assertEquals(-1721314970, x ^= (tmp = -956686859, tmp)); - assertEquals(-102247425, x |= (tmp = -2535095555, tmp)); - assertEquals(-102247425, x %= (-955423877)); - assertEquals(1053144489850425, x *= (((tmp = 1583243590.9550207, tmp)&(1356978114.8592746))|(tmp = -10299961.622774363, tmp))); - assertEquals(-0.0043728190668037336, x /= ((-1196259252.435701)*(((-689529982)|(tmp = -1698518652.4373918, tmp))<>(tmp = 231666110.84104693, tmp))|x)); - assertEquals(-1, x >>= (tmp = -83214419.92958307, tmp)); - assertEquals(-1, x %= (-1303878209.6288595)); - assertEquals(2944850457.5213213, x -= (tmp = -2944850458.5213213, tmp)); - assertEquals(-1.6607884436053055, x /= (-1773164107)); - assertEquals(-0.6607884436053055, x %= ((x>>(1240245489.8629928))%(tmp = -3044136221, tmp))); - assertEquals(-0, x *= ((x*x)>>>((1069542313.7656753)+x))); - assertEquals(0, x >>>= (tmp = -202931587.00212693, tmp)); - assertEquals(-0, x *= (-375274420)); - assertEquals(0, x |= ((x/(((tmp = -876417141, tmp)*(x>>>x))&(-2406962078)))<>>= (1141042034)); - assertEquals(31928, x += x); - assertEquals(0, x ^= x); - assertEquals(-1159866377, x |= (-1159866377)); - assertEquals(0, x ^= x); - assertEquals(3072699529.4306993, x -= (tmp = -3072699529.4306993, tmp)); - assertEquals(1, x /= x); - assertEquals(-1471195029, x |= (2823772267.429641)); - assertEquals(-4152937108, x += (-2681742079)); - assertEquals(142030188, x |= x); - assertEquals(270, x >>= (tmp = 1013826483, tmp)); - assertEquals(0, x >>>= (529670686)); - assertEquals(-2912300367, x -= (2912300367)); - assertEquals(2213791134963007500, x *= (x<<((((-3214746140)>>(tmp = -588929463, tmp))+((tmp = -3084290306, tmp)>>x))>>x))); - assertEquals(2213791133466809900, x -= (tmp = 1496197641, tmp)); - assertEquals(69834416, x >>>= (x|(((2755815509.6323137)^(x%(((x*((((tmp = 375453453, tmp)<<(x*x))>>(tmp = -973199642, tmp))*x))>>((tmp = -356288629, tmp)>>(tmp = 2879464644, tmp)))<<((((1353647167.9291127)>>>(x/x))<<((2919449101)/(2954998123.5529594)))^x))))&((-2317273650)>>>(tmp = 34560010.71060455, tmp))))); - assertEquals(69834416, x >>>= (x^(-2117657680.8646245))); - assertEquals(2217318064, x -= ((tmp = 2035883891, tmp)<<(tmp = -1884739265, tmp))); - assertEquals(-1272875686, x ^= (tmp = 805889002.7165648, tmp)); - assertEquals(-1272875686, x >>= (x&(((1750455903)*x)>>((722098015)%((tmp = 1605335626, tmp)>>(tmp = -565369634, tmp)))))); - assertEquals(-1274351316, x -= (x>>>((tmp = 2382002632, tmp)-((tmp = -2355012843, tmp)+(1465018311.6735773))))); - assertEquals(-2982908522.4418216, x -= ((tmp = 1635549038.4418216, tmp)+(((1952167017.720186)&((tmp = -2284822073.1002254, tmp)>>(-1403893917)))%(tmp = 655347757, tmp)))); - assertEquals(312, x >>>= x); - assertEquals(1248, x <<= (2376583906)); - assertEquals(0, x ^= x); - assertEquals(0, x *= ((((tmp = 1914053541.881434, tmp)>>>(tmp = 1583032186, tmp))>>>(-2511688231))%(tmp = -2647173031, tmp))); - assertEquals(0, x >>>= (tmp = -2320612994.2421227, tmp)); - assertEquals(0, x %= (((x+(tmp = -720216298.5403998, tmp))<<(414712685))>>(tmp = 480416588, tmp))); - assertEquals(0, x >>= ((((3039442014.271272)<>(1361764256))/((tmp = -1723952801.9320493, tmp)%(477351810.2485285)))))); - assertEquals(-0, x /= (tmp = -1627035877, tmp)); - assertEquals(0, x >>>= (tmp = 1745193212, tmp)); - assertEquals(0, x >>>= (2309131575)); - assertEquals(NaN, x %= (((x*(tmp = -1730907131.6124666, tmp))%((((1481750041)|(x>>((((x>>>(tmp = 3128156522.5936565, tmp))/(tmp = -1277222645.9880452, tmp))^(tmp = -2327254789, tmp))+x)))>>>(-1161176960))>>>(tmp = 3135906272.5466847, tmp)))*(((((-2230902834.464362)^(1822893689.8183987))+(((tmp = 1597326356, tmp)/(x&((tmp = -3044163063.587389, tmp)>>(tmp = 2844997555, tmp))))%(x^x)))>>((x|x)/x))^(2634614167.2529745)))); - assertEquals(0, x &= (3081901595)); - assertEquals(0, x &= (-2453019214.8914948)); - assertEquals(0, x &= x); - assertEquals(0, x >>>= (-596810618.3666217)); - assertEquals(0, x >>= (((908276623)|x)/x)); - assertEquals(0, x ^= x); - assertEquals(958890056, x |= (tmp = 958890056.474458, tmp)); - assertEquals(1325436928, x <<= (tmp = -2474326583, tmp)); - assertEquals(711588532333838300, x *= ((-148161646.68183947)<<(tmp = -1149179108.8049204, tmp))); - assertEquals(0, x ^= (((2862565506)%x)/(tmp = -2865813112, tmp))); - assertEquals(-2064806628, x += (((tmp = -2677361175.7317276, tmp)/((817159440)>>>(tmp = 1895467706, tmp)))^(x|(tmp = -2309094859, tmp)))); - assertEquals(-69806982479424, x *= ((x&(tmp = 2857559765.1909904, tmp))&(-3166908966.754988))); - assertEquals(-430255744, x %= ((((((-2968574724.119535)<>= (tmp = 2206814124, tmp)); - assertEquals(-141746, x += x); - assertEquals(-141733.9831459089, x -= (((tmp = -806523527, tmp)>>>(tmp = 1897214891, tmp))/x)); - assertEquals(-141733.9831459089, x %= ((tmp = 1996295696, tmp)<<(tmp = 3124244672, tmp))); - assertEquals(141733.9831459089, x /= (x>>(2688555704.561076))); - assertEquals(3196954517.3075542, x -= (tmp = -3196812783.3244085, tmp)); - assertEquals(-19929155, x |= (((x|x)+x)^((tmp = 391754876, tmp)-(((((((tmp = -3051902902.5100636, tmp)*(x/(1546924993)))|(tmp = 1494375949, tmp))/((((-795378522)/(tmp = 509984856, tmp))>>>(tmp = -106173186, tmp))+x))|x)|(1916921307))>>>x)))); - assertEquals(1279271449, x &= ((tmp = 1289446971, tmp)&(tmp = 1836102619, tmp))); - assertEquals(17876992, x <<= (-207633461)); - assertEquals(0, x >>= (tmp = -903885218.9406946, tmp)); - assertEquals(0, x >>>= x); - assertEquals(-2999, x -= (((754533336.2183633)%(tmp = 557970276.0537136, tmp))>>(tmp = -1171045520, tmp))); - assertEquals(-0.000003020470363504361, x /= (tmp = 992891715.2229724, tmp)); - assertEquals(1, x /= x); - assertEquals(0.45768595820301217, x %= ((tmp = 673779031, tmp)/(tmp = -1242414872.3263657, tmp))); - assertEquals(-980843052.1872087, x += (tmp = -980843052.6448946, tmp)); - assertEquals(-Infinity, x /= ((((tmp = 317747175.8024508, tmp)&(x&(((tmp = 1632953053, tmp)>>x)/x)))%x)/(3145184986))); - assertEquals(0, x &= (x<>(tmp = -1839184810.2603343, tmp))^(((tmp = 1756918419, tmp)>>>(x+(x%(tmp = -2011122996.9794662, tmp))))<<(-3026600748.902623)))*((tmp = -2040286580, tmp)>>(-2899217430.655154)))))); - assertEquals(0, x >>>= (tmp = 2100066003.3046467, tmp)); - assertEquals(1362012169, x ^= (tmp = 1362012169, tmp)); - assertEquals(1476312683, x |= ((457898409)>>>(-3079768830.723079))); - assertEquals(1441711, x >>>= (905040778.7770994)); - assertEquals(2078530607521, x *= x); - assertEquals(-208193103, x |= ((tmp = -241750000, tmp)^x)); - assertEquals(745036378, x ^= (((tmp = -1737151062.4726632, tmp)<>>= ((1210741037)-(x-(x>>>((x^(-1273817997.0036907))+((2401915056.5471)%(x<<(tmp = 1696738364.277438, tmp)))))))); - assertEquals(0.0001604311565639742, x /= (1327622418)); - assertEquals(0, x <<= (tmp = 166631979.34529006, tmp)); - assertEquals(0, x *= ((((tmp = 657814984, tmp)/(((-831055031)>>>(1531978379.1768064))|((tmp = 2470027754.302619, tmp)^(-223467597))))/(tmp = 1678697269.468965, tmp))&(tmp = -1756260071.4360774, tmp))); - assertEquals(-2049375053, x ^= (tmp = -2049375053, tmp)); - assertEquals(-1879109889, x |= (tmp = -1963586818.0436726, tmp)); - assertEquals(718239919, x ^= (tmp = -1523550640.1925273, tmp)); - assertEquals(-1361085185, x |= (-1939964707)); - assertEquals(2, x >>>= (1864136030.7395325)); - assertEquals(0.794648722849246, x %= ((-668830999)*(((-2227700170.7193384)%(x^(x>>>x)))/(tmp = 399149892, tmp)))); - assertEquals(0, x >>= x); - assertEquals(0, x *= x); - assertEquals(0, x &= ((tmp = -2389008496.5948563, tmp)|((((tmp = -2635919193.905919, tmp)*((-64464127)<<(2136112830.1317358)))>>((184057979)*(-1204959085.8362718)))>>>(-442946870.3341484)))); - assertEquals(-243793920, x -= ((tmp = 3002998032, tmp)<<((537875759)<>(tmp = 3109693867, tmp)))>>>(x/(((((((tmp = 928294418, tmp)^(((-1018314535)/(tmp = -3167523001, tmp))%((((((tmp = -1639338126, tmp)-(tmp = -2613558829, tmp))&x)/x)%(tmp = 513624872, tmp))/((-520660667)&x))))*(2620452414))^((tmp = 2337189239.5949326, tmp)*(3200887846.7954993)))>>>((tmp = 1173330667, tmp)^x))<>(((tmp = -2475534594.982338, tmp)*x)|x))))); - assertEquals(0, x /= (2520915286)); - assertEquals(0, x &= x); - assertEquals(0, x >>= (-1908119327)); - assertEquals(0, x >>>= (tmp = 549007635, tmp)); - assertEquals(0, x >>= (-994747873.8117285)); - assertEquals(0, x <<= ((((x>>>((-3084793026.846681)%((1107295502)&(tmp = -296613957.8133817, tmp))))&((19637717.166736007)/(x+x)))+x)/(-2479724242))); - assertEquals(-695401420, x += (-695401420)); - assertEquals(-695401394, x += (x>>>(tmp = 2340097307.6556053, tmp))); - assertEquals(-555745552, x -= (x|(-483851950.68644))); - assertEquals(-17825792, x <<= x); - assertEquals(-17825792, x >>= x); - assertEquals(-17, x %= ((tmp = 1799361095, tmp)|((x>>(((-1201252592)<<((((543273288)+(-2859945716.606924))*x)<<((-3030193601)<<(3081129914.9217644))))|((1471431587.981769)>>(-246180750))))|(((tmp = -2689251055.1605787, tmp)>>x)&(((2131333169)^x)-((tmp = -951555489, tmp)/x)))))); - assertEquals(-8912896, x <<= (1146444211)); - assertEquals(2854567584, x += (tmp = 2863480480, tmp)); - assertEquals(426232502.24151134, x %= (1214167540.8792443)); - assertEquals(1806802048, x ^= (-2368317898)); - assertEquals(432537600, x <<= (tmp = 2831272652.589364, tmp)); - assertEquals(432537600, x %= (((1713810619.3880467)-x)&((-2853023009.553296)&(tmp = -3158798098.3355417, tmp)))); - assertEquals(-509804066, x += (tmp = -942341666, tmp)); - assertEquals(-509804066, x %= (-732349220)); - assertEquals(259900185710132350, x *= x); - assertEquals(711598501.7021885, x %= ((tmp = 2020395586.2280731, tmp)-(tmp = 3031459563.1386633, tmp))); - assertEquals(711598503.0618857, x += ((tmp = 967558548.4141241, tmp)/x)); - assertEquals(711598503, x &= x); - assertEquals(711598503, x ^= (((((1609355669.1963444)+((((tmp = -2660082403.258437, tmp)+(tmp = -235367868, tmp))&(x/x))*((-2595932186.69466)|((tmp = -3039202860, tmp)<>>(-951354869))-((tmp = -691482949.6335375, tmp)/(tmp = -1735502400, tmp)))/(tmp = 798440377, tmp))); - assertEquals(558262613882868500, x *= (784519095.4299527)); - assertEquals(558262611968479000, x -= ((((tmp = 1039039153.4026555, tmp)/(-3138845051.6240187))*(tmp = 633557994, tmp))&(1981507217))); - assertEquals(1170427648, x |= ((x>>((((-1086327124)%((tmp = -1818798806.368613, tmp)^(tmp = 2183576654.9959817, tmp)))>>x)&((((((tmp = 1315985464.0330539, tmp)&(2774283689.333836))%x)*((2722693772.8994813)&(tmp = -2720671984.945404, tmp)))^(tmp = -76808019, tmp))<<((tmp = 685037799.2336662, tmp)^((tmp = 1057250849, tmp)&(tmp = 1469205111.2989025, tmp))))))+(x*(((tmp = 448288818.47173154, tmp)-(-2527606231))-((8387088.402292728)>>x))))); - assertEquals(558, x >>>= (tmp = 2732701109, tmp)); - assertEquals(558, x &= x); - assertEquals(-0.00015855057024653912, x /= ((x+(((tmp = -1963815633, tmp)-(x>>x))-((x|x)>>x)))/x)); - assertEquals(1.3458861596445712e-13, x /= (-1178038492.4116466)); - assertEquals(0, x <<= (-104550232)); - assertEquals(0, x >>>= (x>>(tmp = -255275244.12613606, tmp))); - assertEquals(0, x >>= x); - assertEquals(375, x |= ((1576819294.6991196)>>>(-2570246122))); - assertEquals(96000, x <<= ((2252913843.0150948)>>>(-49239716))); - assertEquals(6144000, x <<= ((((tmp = -2478967279, tmp)&((x%((tmp = -1705332610.8018858, tmp)+(x+(tmp = 590766349, tmp))))<<(tmp = 1759375933, tmp)))+(-2024465658.849834))&(1564539207.3650014))); - assertEquals(-1149239296, x <<= (1862803657.7241006)); - assertEquals(-9, x >>= (((tmp = 463306384.05696774, tmp)^x)|((x>>((((-2098070856.799663)<<((-2054870274.9012866)<<(((-2582579691)/(829257170.0266814))<<(((((tmp = -1753535573.7074275, tmp)<<((x>>(-197886116))%((2487188445)%(tmp = 2465391564.873364, tmp))))&(((tmp = -500069832, tmp)&(tmp = 3016637032, tmp))&((tmp = 2525942628, tmp)|((((-920996215)|x)^((((tmp = -687548533.419106, tmp)&(1423222636.058937))<<((tmp = -1096532228, tmp)>>((((tmp = -3124481449.2740726, tmp)^(tmp = 2724328271.808975, tmp))>>x)*x)))+(-1661789589.5808442)))+(((x*(tmp = -1224371664.9549093, tmp))^((tmp = 3202970043, tmp)^x))/(tmp = 131494054.58501709, tmp))))))|(((tmp = -1654136720, tmp)<>((1652979932.362416)-(tmp = -863732721, tmp))))^(-113307998)))))^(-90820449.91417909))*((tmp = 641519890, tmp)-((((x<<(tmp = 2349936514.071881, tmp))*(2324420443.587892))^x)%(x<<((tmp = -1838473742, tmp)/(((-3154172718.4274178)-x)+x)))))))|(x>>>((tmp = 2096024376.4308293, tmp)<>x)))+(((-2207542725.4531174)^(x*x))*(tmp = 551575809.955105, tmp)))/x)))&((x>>x)&x))); - assertEquals(81, x %= (tmp = 279598358.6976975, tmp)); - assertEquals(101.72338484518858, x -= (((tmp = 2452584495.44003, tmp)%((-1181192721)+(((x>>(((x&x)^x)+((x>>>((x+(-2472793823.57181))/(((2854104951)>>(-1208718359.6554642))>>>(1089411895.694705))))/(x|(-2821482890.1780205)))))^(-1786654551))/(-29404242.70557475))))/(((-4352531)<<((-1227287545)<>>= (-2440404084)); - assertEquals(0, x >>= (tmp = 1029680958.405923, tmp)); - assertEquals(0, x >>>= (1213820208.7204895)); - assertEquals(-0, x /= (tmp = -103093683, tmp)); - assertEquals(0, x >>>= (-2098144813)); - assertEquals(-0, x /= (((-3087283334)+(((tmp = -3129028112.6859293, tmp)%(tmp = 2413829931.1605015, tmp))-(2578195237.8071446)))|x)); - assertEquals(-15, x |= ((((-178926550.92823577)>>>(-965071271))^((tmp = -484633724.7237625, tmp)-(tmp = 473098919.1486404, tmp)))>>((-2264998310.203265)%(tmp = -499034672, tmp)))); - assertEquals(0, x ^= x); - assertEquals(0, x >>= (((-3207915976.698118)<<(tmp = 2347058630, tmp))|(tmp = -2396250098.559627, tmp))); - assertEquals(NaN, x %= x); - assertEquals(NaN, x *= (621843222)); - assertEquals(0, x >>= (((-2409032228.7238913)*x)-(tmp = -887793239, tmp))); - assertEquals(NaN, x /= x); - assertEquals(1193017666, x ^= (tmp = 1193017666, tmp)); - assertEquals(3.5844761899682753, x /= (tmp = 332829011.206393, tmp)); - assertEquals(-888572929, x |= (((tmp = 1032409228, tmp)+(tmp = -1920982163.7853453, tmp))+x)); - assertEquals(-1817051951333455600, x *= (((-1506265102)^(tmp = -775881816, tmp))-(tmp = -32116372.59181881, tmp))); - assertEquals(-1638479616, x |= x); - assertEquals(-114489, x %= (((tmp = -247137297.37866855, tmp)>>>((((((-322805409)-x)^x)>>((((((((x>>>(tmp = -900610424.7148039, tmp))/(-1155208489.6240904))|((-2874045803)|(tmp = 3050499811, tmp)))+(x/((tmp = -613902712, tmp)^((-982142626.2892077)*((((tmp = -3201753245.6026397, tmp)|((1739238762.0423079)^x))/(243217629.47237313))^((tmp = -11944405.987132788, tmp)/(tmp = 2054031985.633406, tmp)))))))*(tmp = 2696108952.450961, tmp))*x)>>>(tmp = 3058430643.0660386, tmp))>>(x<>(-984468302.7450335))%((tmp = 1302320585.246251, tmp)>>>x)))%(tmp = -2436842285.8208156, tmp))); - assertEquals(2047, x >>>= (2380161237)); - assertEquals(0, x >>= x); - assertEquals(0, x &= (tmp = 980821012.975836, tmp)); - assertEquals(-1090535537, x -= ((-3064511503.1214876)&((tmp = -2598316939.163751, tmp)<<((tmp = -969452391.8925576, tmp)*x)))); - assertEquals(-2181071074, x += x); - assertEquals(1, x >>>= ((2902525386.449062)>>x)); - assertEquals(1, x += (x&(tmp = -2643758684.6636515, tmp))); - assertEquals(1, x %= ((tmp = -2646526891.7004848, tmp)/x)); - assertEquals(448735695.7888887, x -= (tmp = -448735694.7888887, tmp)); - assertEquals(1, x /= x); - assertEquals(1, x >>= ((-480385726)<<(2641021142))); - assertEquals(1, x %= (375099107.9200462)); - assertEquals(1, x >>= (((x&((tmp = -2402469116.9903326, tmp)%(tmp = -2862459555.860298, tmp)))*(tmp = -2834162871.0586414, tmp))%(((x>>>(tmp = 721589907.5073895, tmp))*(x^x))%(((tmp = 2844611489.231776, tmp)^((983556913)&(906035409.6693488)))^(x>>>(1239322375)))))); - assertEquals(268435456, x <<= (tmp = 178807644.80966163, tmp)); - assertEquals(44, x %= ((tmp = 2527026779.081539, tmp)>>>(2736129559))); - assertEquals(88, x += x); - assertEquals(0, x >>>= x); - assertEquals(0, x -= x); - assertEquals(-1523121602, x |= (2771845694)); - assertEquals(-2, x >>= x); - assertEquals(-4, x += x); - assertEquals(-256, x <<= (((2522793132.8616533)>>(tmp = 77232772.94058788, tmp))+(3118669244.49152))); - assertEquals(4294967040, x >>>= x); - assertEquals(-256, x &= x); - assertEquals(1278370155.835435, x -= (-1278370411.835435)); - assertEquals(-3.488228054921667, x /= (tmp = -366481243.6881058, tmp)); - assertEquals(1.162742684973889, x /= ((x|(((((2404819175.562809)*(tmp = -2524589506, tmp))&(tmp = -675727145, tmp))>>>(x*x))&((-413250006)<<(tmp = 2408322715, tmp))))|((2940367603)>>>x))); - assertEquals(0, x >>>= ((2513665793)-(tmp = 1249857454.3367786, tmp))); - assertEquals(0, x ^= x); - assertEquals(0, x ^= x); - assertEquals(1989998348.6336238, x -= (-1989998348.6336238)); - assertEquals(903237918.986834, x %= (1086760429.6467898)); - assertEquals(-4.4185765232981975, x /= (-204418304)); - assertEquals(1471621914, x ^= (tmp = -1471621914.1771696, tmp)); - assertEquals(1471621914, x |= ((((((x<<(tmp = -2676407394.536844, tmp))%(((343324258)+(x/(x>>(((-221193011)>>>x)|x))))>>(((-2737713893)^((tmp = -49214797.00735545, tmp)+((-2818106123.172874)/(tmp = -2361786565.3028684, tmp))))<<(1859353297.6355076))))*(tmp = -751970685, tmp))|((tmp = 2502717391.425871, tmp)/(tmp = -2647169430, tmp)))*((tmp = -1647567294, tmp)&(((tmp = 1819557651, tmp)/x)>>((((-3073469753)/x)-(((tmp = -1973810496.6407511, tmp)&((x-(x+(tmp = -2986851659, tmp)))>>>(tmp = -2226975699, tmp)))|(418770782.142766)))<>>x))%(x<<(tmp = -1445557137, tmp)))<>>(tmp = -1953751906, tmp))/((tmp = -2140573172.2979035, tmp)*((-108581964)^x)))|(-481484013.0393069)))); - assertEquals(1454179065, x += ((tmp = 947147038.2829313, tmp)|(tmp = -154822975.3629098, tmp))); - assertEquals(1, x /= x); - assertEquals(1, x %= ((((((tmp = -2262250297.991866, tmp)-(tmp = 481953960, tmp))/(1629215187.6020458))|(2515244216))>>>((tmp = -3040594752.2184515, tmp)-(tmp = -1116041279, tmp)))^(((-182133502)-(1065160192.6609197))+(((((-1850040207)^(tmp = -1570328610, tmp))^(tmp = 20542725.09256518, tmp))*x)|(2386866629))))); - assertEquals(1, x &= (2889186303)); - assertEquals(0, x >>= (((-1323093107.050538)>>(x%x))-(((((((-1736522840)+(tmp = -2623890690.8318863, tmp))*(959395040.5565329))*(233734920))<<((x+(x%((tmp = -2370717284.4370327, tmp)%(tmp = 2109311949, tmp))))-(tmp = -1005532894, tmp)))|(861703605))>>>((2399820772)/x)))); - assertEquals(0, x >>= x); - assertEquals(57233408, x |= ((tmp = 2655923764.4179816, tmp)*(-1353634624.3025436))); - assertEquals(997939728, x |= (980552208.9005274)); - assertEquals(1859642592476610800, x *= (1863481872)); - assertEquals(-977190656, x <<= x); - assertEquals(4.378357529141239e+26, x *= ((((x/(((tmp = 2429520991, tmp)/(x/(tmp = 784592802, tmp)))-(tmp = -2704781982, tmp)))*(tmp = -2161015768.2322354, tmp))&((((-3164868762)>>(tmp = 2390893153.32907, tmp))^x)>>(-2422626718.322538)))*(tmp = 278291869, tmp))); - assertEquals(4.378357529141239e+26, x -= (1710777896.992369)); - assertEquals(0, x &= (((((tmp = -2532956158.400033, tmp)|((2195255831.279001)|(1051047432)))|(-1628591858))|(tmp = -2042607521.947963, tmp))>>((-1471225208)/(((-133621318)>>(1980416325.7358408))*((1741069593.1036062)-(x|(2133911581.991011))))))); - assertEquals(-0, x /= (-656083507)); - assertEquals(NaN, x += ((tmp = -1071410982.2789869, tmp)%x)); - assertEquals(NaN, x *= (tmp = -1513535145.3146675, tmp)); - assertEquals(0, x >>= ((2831245247.5267224)>>(x<<((x+(((3068824580.7922907)|(1708295544.275714))*((tmp = -1662930228.1170444, tmp)-(((tmp = 1979994889, tmp)<<(tmp = -1826911988, tmp))&((x/(x<<(1909384611.043981)))+(1958052414.7139997))))))<<(tmp = 2481909816.56558, tmp))))); - assertEquals(0, x *= (((tmp = -2979739958.1614842, tmp)&x)+x)); - assertEquals(-0, x *= ((-332769864.50313234)^x)); - assertEquals(0, x >>= ((((689018886.1436445)+(tmp = -2819546038.620694, tmp))|(((tmp = -1459669934.9066005, tmp)|x)/x))<<(((tmp = 2640360389, tmp)/((x%((-1947492547.9056122)%((1487212416.2083092)-(-1751984129))))^x))%(tmp = 2666842881, tmp)))); - assertEquals(-1801321460, x |= (tmp = 2493645836, tmp)); - assertEquals(-1801321460, x %= (2400405136)); - assertEquals(-2905399858195810300, x *= (tmp = 1612926911, tmp)); - assertEquals(-2905399858195810300, x -= (x>>(tmp = 1603910263.9593458, tmp))); - assertEquals(-238798848, x &= ((tmp = -2638646212.767516, tmp)/(((tmp = 1755616291.436998, tmp)>>>(tmp = 1083349775, tmp))-(x%(((tmp = 1728859105.53634, tmp)^(1931522619.0403612))/(tmp = 712460587.0025489, tmp)))))); - assertEquals(-2363873607.2302856, x += (-2125074759.230286)); - assertEquals(1712665, x &= (((117229515)>>>(((1707090894.1915488)>>>((-1696008695)>>(((-1045367326.7522249)<<(tmp = -209334716, tmp))-x)))|(-1707909786.080653)))%(1260761349.172689))); - assertEquals(1073741824, x <<= (tmp = -289437762.34742975, tmp)); - assertEquals(1073741824, x &= (tmp = 2079141140, tmp)); - assertEquals(0, x <<= ((x^(-3139646716.1615124))-(((-362323071.74237394)|(tmp = 2989896849, tmp))*(tmp = -218217991, tmp)))); - assertEquals(0, x &= (tmp = -1476835288.425903, tmp)); - assertEquals(0, x >>>= (tmp = 61945262.70868635, tmp)); - assertEquals(0, x ^= x); - assertEquals(-2735263498.7189775, x -= (2735263498.7189775)); - assertEquals(-1182289920, x <<= (x+x)); - assertEquals(-1182289580, x ^= ((2858446263.2258)>>>(2387398039.6273785))); - assertEquals(696693056, x &= ((2178665823)*(-51848583))); - assertEquals(1652555776, x <<= (((tmp = 2943916975, tmp)-((-1544273901)>>(-1671503106.2896929)))|x)); - assertEquals(6455296, x >>>= (tmp = 1492638248.675439, tmp)); - assertEquals(2097152, x &= (((x|x)*(2873891571.7000637))^((2165264807)+(tmp = 451721563, tmp)))); - assertEquals(2097152, x %= (tmp = 1089484582.1455994, tmp)); - assertEquals(2097152, x <<= x); - assertEquals(2097152, x &= ((tmp = 119096343.4032247, tmp)^((-1947874541)*x))); - assertEquals(0, x &= (tmp = 2363070677, tmp)); - assertEquals(0, x &= ((tmp = -1897325383, tmp)>>>((2368480527)>>>((tmp = 1837528979, tmp)*(-1838904077))))); - assertEquals(-1898659416, x ^= (-1898659416.1125412)); - assertEquals(-725506048, x <<= x); - assertEquals(1392943104, x <<= (295287938.9104482)); - assertEquals(-63620329, x ^= ((tmp = -3175925826.5573816, tmp)-(tmp = 2474613927, tmp))); - assertEquals(-1135111726, x -= ((tmp = -1133259081, tmp)^(((tmp = -742228219, tmp)>>((-7801909.587711811)%((tmp = -642758873, tmp)+(tmp = 2893927824.6036444, tmp))))^((tmp = -2145465178.9142997, tmp)+x)))); - assertEquals(0, x ^= x); - assertEquals(660714589, x |= (660714589)); - assertEquals(660714676, x ^= ((-376720042.8047826)>>>(2196220344))); - assertEquals(660714676, x |= ((((((((x<<(-1140465568))-(tmp = -1648489774.1573918, tmp))%(((tmp = -2955505390.573639, tmp)*x)<<((((tmp = -1769375963, tmp)*(tmp = -440619797, tmp))&((tmp = 1904284066, tmp)%(-2420852665.0629807)))+(-324601009.2063596))))>>(tmp = 2317210783.9757776, tmp))^((tmp = 750057067.4541628, tmp)^(tmp = -1391814244.7286487, tmp)))>>((344544658.6054913)%((tmp = -1508630423.218488, tmp)&(tmp = 1918909238.2974637, tmp))))>>((-647746783.685822)&(tmp = 2444858958.3595476, tmp)))&x)); - assertEquals(-962337195, x ^= (tmp = -507358495.30825853, tmp)); - assertEquals(-182008925.58535767, x %= (tmp = -195082067.35366058, tmp)); - assertEquals(502070, x >>>= (tmp = 1459732237.1447744, tmp)); - assertEquals(-2391009930.7235765, x -= (tmp = 2391512000.7235765, tmp)); - assertEquals(1568669696, x <<= x); - assertEquals(0, x <<= (tmp = -571056688.2717848, tmp)); - assertEquals(1770376226, x ^= (tmp = 1770376226.0584736, tmp)); - assertEquals(0, x ^= x); - assertEquals(0, x &= ((((x<>>x)|x)|(((tmp = -2141573723, tmp)^x)|(64299956)))); - assertEquals(0, x ^= x); - assertEquals(0, x &= x); - assertEquals(0, x <<= (1106060336.7362857)); - assertEquals(-0, x /= (x|(tmp = 2760823963, tmp))); - assertEquals(0, x <<= ((-2436225757)|(-1800598694.4062433))); - assertEquals(0, x >>>= ((-728332508.9870625)<>((((((-1038799327)>>((782275464)^x))-(tmp = -2113814317.8539028, tmp))>>(2143804838))&x)-((2970418921)/(-3073015285.6587048)))))))&((-1759593079.4077306)%((1699128805)-((tmp = -467193967, tmp)&(((2225788267.3466334)*(((2687946762.5504274)+x)>>>x))<<(-1853556066.880512))))))); - assertEquals(-0.5520657226957338, x /= ((tmp = -755493878, tmp)&(tmp = 918108389, tmp))); - assertEquals(0.30477656217556287, x *= x); - assertEquals(0, x &= ((tmp = -2746007517, tmp)<<(2749629340))); - assertEquals(0, x ^= ((x%(tmp = 1683077876, tmp))%(-162706778))); - assertEquals(0, x *= (tmp = 10203423, tmp)); - assertEquals(119043212.1461842, x += (tmp = 119043212.1461842, tmp)); - assertEquals(587202560, x <<= (tmp = 658697910.7051642, tmp)); - assertEquals(-138689730, x |= (x-(tmp = 1296317634.5661907, tmp))); - assertEquals(-138663011, x -= ((-1751010109.5506423)>>(152829872))); - assertEquals(-138663011, x %= (-1266200468)); - assertEquals(-138663011, x &= (x|((tmp = -571277275.622529, tmp)<>= ((971259905.1265712)*(tmp = 2203764981, tmp))); - assertEquals(-138663011, x %= (-904715829)); - assertEquals(-138663011, x |= ((tmp = -2823047885.283391, tmp)>>>(((tmp = 533217000, tmp)|(650754598.7836078))|(-1475565890)))); - assertEquals(-1610612736, x <<= x); - assertEquals(-1610612736, x &= x); - assertEquals(163840, x >>>= (-188885010)); - assertEquals(-1224224814, x |= (tmp = 3070742482, tmp)); - assertEquals(1498726395213334500, x *= x); - assertEquals(1723591210, x |= ((tmp = 615164458, tmp)|x)); - assertEquals(1721910480, x ^= (x>>>x)); - assertEquals(4505284605.764313, x -= (tmp = -2783374125.7643127, tmp)); - assertEquals(-9504912393868483000, x *= (((tmp = 2896651872, tmp)<<(-2896385692.9017262))&(((((tmp = -2081179810.20238, tmp)|(tmp = -2484863999, tmp))>>((tmp = 1560885110.2665749, tmp)/(((tmp = 934324123.4289343, tmp)<<((tmp = -1591614157.0496385, tmp)+x))/(((x%(((tmp = 1672629986.8055913, tmp)%x)>>(tmp = 2116315086.2559657, tmp)))/(((-2687682697.5806303)>>x)/(-2034391222.5029132)))%(x-((((((tmp = 2598594967, tmp)/(((((((2950032233)%x)/x)^(tmp = -2126753451.3732262, tmp))<<(tmp = -3019113473, tmp))+(tmp = -2021220129.2320697, tmp))%((((-587645875.4666483)>>(((((x+x)+x)&(tmp = 533801785, tmp))|x)-((tmp = -2224808495.678903, tmp)/(1501942300))))>>>(-2558947646))>>((2798508249.020792)>>>x))))>>>((1060584557)/((((((((x&x)|(1426725365))>>>(tmp = 1500508838, tmp))>>(-1328705938))*((tmp = -2288009425.598777, tmp)>>>(((2586897285.9759064)%((-1605651559.2122297)>>>(tmp = 1936736684.4887302, tmp)))+((tmp = 2316261040, tmp)^(570340750.353874)))))&(x^((tmp = -2266524143, tmp)-(tmp = 2358520476, tmp))))+(tmp = 1449254900.9222453, tmp))%((-100598196)%((tmp = -2985318242.153491, tmp)>>((620722274.4565848)>>(871118975)))))))<>>(1038059916.2438471)))))))+((x/(-276990308.1264961))&(tmp = 2471016351.2195315, tmp)))|(((((tmp = -1288792769.3210807, tmp)+((tmp = -641817194, tmp)*(x<<(((-1933817364)>>(((tmp = 2084673536, tmp)|x)&x))&(tmp = -2752464480, tmp)))))%((796026752)*x))+(((tmp = -3083359669, tmp)|x)-((715303522)|(tmp = 181297266, tmp))))*(-1691520182.3207517))))); - assertEquals(0, x <<= (-2322389800)); - assertEquals(0, x *= (tmp = 3188682235, tmp)); - assertEquals(0, x |= (x>>>((tmp = -2729325231.8288336, tmp)^((-393497076.96012783)*(x/(tmp = -2198942459.9466457, tmp)))))); - assertEquals(0, x ^= x); - assertEquals(0, x %= (2835024997.4447937)); - assertEquals(0, x <<= x); - assertEquals(0, x >>= (tmp = 1109824126, tmp)); - assertEquals(0, x <<= (3013043386)); - assertEquals(206825782.74659085, x -= (-206825782.74659085)); - assertEquals(-645346761227699500, x *= (-3120243292)); - assertEquals(6825462, x >>= ((tmp = 1457908135, tmp)<>x)); - assertEquals(0, x ^= (x>>(((x>>>(1856200611.2269292))&(tmp = 2003217473, tmp))%((((((-107135673)+(((3062079356.170611)<<(tmp = -676928983, tmp))>>((tmp = -1487074941.2638814, tmp)|((-1601614031)/(1317006144.5025365)))))+x)*(((1163301641)>>>(448796567))/((x%((tmp = 72293197.34410787, tmp)+(-2304112723)))/((455610361)%(-2799431520)))))>>>(-217305041.09432888))<<(x-(tmp = -2168353649, tmp)))))); - assertEquals(0, x >>= x); - assertEquals(-Infinity, x -= (((-1651597599.8950624)+(1780404320))/x)); - assertEquals(0, x <<= (tmp = 2246420272.4321294, tmp)); - assertEquals(0, x *= ((2793605382)-(tmp = -272299011, tmp))); - assertEquals(0, x *= x); - assertEquals(0, x <<= x); - assertEquals(0, x >>= (tmp = 2556413090, tmp)); - assertEquals(0, x >>= ((tmp = -1784710085, tmp)%x)); - assertEquals(0, x %= (tmp = -1929880813, tmp)); - assertEquals(0, x *= (2586983368)); - assertEquals(0, x &= x); - assertEquals(0, x <<= (-2144588807)); - assertEquals(0, x ^= ((x<<(((((((-596537598)+((x-(((((((tmp = -3179604796, tmp)/((tmp = 1156725365.3543215, tmp)>>>(tmp = -2762144319, tmp)))%(x<>((tmp = -2569172808, tmp)/x)))^x)-(tmp = -1174006275.2213159, tmp))&x)&(((((((-2303274799)>>(tmp = -814839320, tmp))/(tmp = 183887306.09810615, tmp))>>(((tmp = 1054106394.3704875, tmp)|x)>>>x))-(x-(tmp = 1313696830, tmp)))-((tmp = 2373274399.0742035, tmp)|((((tmp = -3163779539.4902935, tmp)*(tmp = -3056125181.726942, tmp))&(((x^(x^(x/((tmp = -576441696.6015451, tmp)<<(tmp = -26223719.920306206, tmp)))))>>(tmp = -2332835940, tmp))|((-146303509.41093707)&(tmp = -2676964025, tmp))))/((((x*(tmp = 1059918020, tmp))|((((2341797349)|(tmp = -744763805.1381104, tmp))<>((-2671235923.2097874)<<(x&((((tmp = -621472314.0859051, tmp)-(((x*x)+x)>>>((tmp = 1834038956, tmp)+x)))*x)^(tmp = -2090567586.321468, tmp)))))<<(321395210))))))>>>(tmp = -1207661719, tmp)))+(-2877264053.3805156)))/(x%(tmp = -2226991657.709366, tmp)))); - assertEquals(0, x *= (tmp = 986904991.061398, tmp)); - assertEquals(0, x -= (x%(650819306.6671969))); - assertEquals(0, x >>>= (905893666.2871252)); - assertEquals(0, x += (((tmp = 2501942710.4804144, tmp)&x)/((tmp = -851080399.1751502, tmp)-(-1168623992)))); - assertEquals(-0, x *= (tmp = -2014577821.4554045, tmp)); - assertEquals(0, x &= (tmp = 1995246018, tmp)); - assertEquals(0, x %= (1724355237.7031958)); - assertEquals(-954696411, x += (((-2825222201)+(((1662353496.1795506)>>>(x-x))|(tmp = 225015046, tmp)))^(x&x))); - assertEquals(-2158427339993389800, x *= (2260852052.1539803)); - assertEquals(19559, x >>>= (-862409169.4978967)); - assertEquals(-0.000012241163878671237, x /= (x^(tmp = 2697144215.160239, tmp))); - assertEquals(0, x -= x); - assertEquals(1448177644, x |= (tmp = 1448177644.624848, tmp)); - assertEquals(1448177644, x %= (((-1497553637.4976408)+(402228446))<>(((((((x%(x<>>((((tmp = -2482370545.791443, tmp)*(tmp = -270543594, tmp))^x)*((1346780586)/(tmp = -625613363.885356, tmp)))))-(x<<(x/(-562307527))))&(-125701272))))*((x&x)%(tmp = 752963070, tmp)))>>>(tmp = 17419750.79086232, tmp))*x)^(x^((-157821212.04674292)-(tmp = 503849221.598824, tmp)))))-(tmp = 1479418449, tmp)))>>>((((((-78138548.2193842)<<(((2319032860.806689)-(tmp = -1564963892.5137577, tmp))>>>(-73673322.28957987)))<<((1797573493.3467085)*x))>>(tmp = 759994997, tmp))>>>(-1066441220))&(((((((tmp = 1972048857, tmp)*(((x&((-1347017320.0747669)>>>x))*(-2332716925.705054))%(-376976019.24362826)))>>>((tmp = -466479974, tmp)+x))&(-2282789473.3675604))|(((((((((269205423.7510414)-(tmp = 21919626.105656862, tmp))*((x-(tmp = -378670528, tmp))>>(tmp = -1045706598, tmp)))>>(tmp = -3062647341.234485, tmp))>>>x)|(tmp = -285399599.9386575, tmp))%(tmp = 2731214562, tmp))|((((tmp = 837093165.3438574, tmp)|(tmp = -2956931321, tmp))+((1871874558.3292787)<<((x|((tmp = -3169147427, tmp)%(((x^x)%(1479885041))%((1769991217)%(tmp = -1899472458, tmp)))))*(tmp = -837098563.71806, tmp))))>>(tmp = -1866722748, tmp)))-(2037734340.8345597)))>>((tmp = -1262019180.5332131, tmp)+(x*(1274173993.9800131))))*(tmp = 2336989321.855402, tmp)))))); - assertEquals(4, x >>= (tmp = -2577728327, tmp)); - assertEquals(16, x *= (x<<((2622323372.580596)*(tmp = -1947643367, tmp)))); - assertEquals(33554432, x <<= (tmp = -2938370507, tmp)); - assertEquals(-2399497018.987414, x -= (tmp = 2433051450.987414, tmp)); - assertEquals(1, x /= x); - assertEquals(2, x <<= x); - assertEquals(0, x >>= (x&x)); - assertEquals(0, x <<= x); -} -f(); diff --git a/implementation-contributed/v8/mjsunit/obj-construct.js b/implementation-contributed/v8/mjsunit/obj-construct.js deleted file mode 100644 index 98e09b2f955..00000000000 --- a/implementation-contributed/v8/mjsunit/obj-construct.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var consCalled = false; - -function Object() { - consCalled = true; -} - -function Array() { - consCalled = true; -} - -assertFalse(consCalled); -var x1 = { }; -assertFalse(consCalled); -var x2 = { a: 3, b: 4 }; -assertFalse(consCalled); -var x3 = [ ]; -assertFalse(consCalled); -var x4 = [ 1, 2, 3 ]; -assertFalse(consCalled); diff --git a/implementation-contributed/v8/mjsunit/object-create.js b/implementation-contributed/v8/mjsunit/object-create.js deleted file mode 100644 index d2f676e77cf..00000000000 --- a/implementation-contributed/v8/mjsunit/object-create.js +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test ES5 sections 15.2.3.5 Object.create. -// We do not support nonconfigurable properties on objects so that is not -// tested. We do test getters, setters, writable, enumerable and value. - -// Check that no exceptions are thrown. -Object.create(null); -Object.create(null, undefined); - -// Check that the right exception is thrown. -try { - Object.create(4); - assertTrue(false); -} catch (e) { - assertTrue(/Object or null/.test(e)); -} - -try { - Object.create("foo"); - print(2); - assertTrue(false); -} catch (e) { - assertTrue(/Object or null/.test(e)); -} - -try { - Object.create(null, this); - assertTrue(false); -} catch(e) { - assertTrue(/Property description/.test(e)) -} - -try { - Object.create(null, [1, 2, 3]); - assertTrue(false); -} catch(e) { - assertTrue(/Property description/.test(e)) -} - -try { - Object.create(null, new Proxy([1, 2, 3], {})); - assertTrue(false); -} catch(e) { - assertTrue(/Property description/.test(e)) -} - -var ctr = 0; -var ctr2 = 0; -var ctr3 = 0; -var ctr4 = 0; -var ctr5 = 0; -var ctr6 = 1000; - -var protoFoo = { foo: function() { ctr++; }}; -var fooValue = { foo: { writable: true, value: function() { ctr2++; }}}; -var fooGetter = { foo: { get: function() { return ctr3++; }}}; -var fooSetter = { foo: { set: function() { return ctr4++; }}}; -var fooAmbiguous = { foo: { get: function() { return ctr3++; }, - value: 3 }}; - -function valueGet() { ctr5++; return 3 }; -function getterGet() { ctr5++; return function() { return ctr6++; }; }; - -// Simple object with prototype, no properties added. -Object.create(protoFoo).foo(); -assertEquals(1, ctr); - -// Simple object with object with prototype, no properties added. -Object.create(Object.create(protoFoo)).foo(); -assertEquals(2, ctr); - -// Add a property foo that returns a function. -var v = Object.create(protoFoo, fooValue); -v.foo(); -assertEquals(2, ctr); -assertEquals(1, ctr2); - -// Ensure the property is writable. -v.foo = 42; -assertEquals(42, v.foo); -assertEquals(2, ctr); -assertEquals(1, ctr2); - -// Ensure by default properties are not writable. -v = Object.create(null, { foo: {value: 103}}); -assertEquals(103, v.foo); -v.foo = 42; -assertEquals(103, v.foo); - -// Add a getter foo that returns a counter value. -assertEquals(0, Object.create(protoFoo, fooGetter).foo); -assertEquals(2, ctr); -assertEquals(1, ctr2); -assertEquals(1, ctr3); - -// Add a setter foo that runs a function. -assertEquals(1, Object.create(protoFoo, fooSetter).foo = 1); -assertEquals(2, ctr); -assertEquals(1, ctr2); -assertEquals(1, ctr3); -assertEquals(1, ctr4); - -// Make sure that trying to add both a value and a getter -// will result in an exception. -try { - Object.create(protoFoo, fooAmbiguous); - assertTrue(false); -} catch (e) { - assertTrue(/Invalid property/.test(e)); -} -assertEquals(2, ctr); -assertEquals(1, ctr2); -assertEquals(1, ctr3); -assertEquals(1, ctr4); - -var ctr7 = 0; - -var metaProps = { - enumerable: { get: function() { - assertEquals(0, ctr7++); - return true; - }}, - configurable: { get: function() { - assertEquals(1, ctr7++); - return true; - }}, - value: { get: function() { - assertEquals(2, ctr7++); - return 4; - }}, - writable: { get: function() { - assertEquals(3, ctr7++); - return true; - }}, - get: { get: function() { - assertEquals(4, ctr7++); - return function() { }; - }}, - set: { get: function() { - assertEquals(5, ctr7++); - return function() { }; - }} -}; - - -// Instead of a plain props object, let's use getters to return its properties. -var magicValueProps = { foo: Object.create(null, { value: { get: valueGet }})}; -var magicGetterProps = { foo: Object.create(null, { get: { get: getterGet }})}; -var magicAmbiguousProps = { foo: Object.create(null, metaProps) }; - -assertEquals(3, Object.create(null, magicValueProps).foo); -assertEquals(1, ctr5); - -assertEquals(1000, Object.create(null, magicGetterProps).foo); -assertEquals(2, ctr5); - -// See if we do the steps in ToPropertyDescriptor in the right order. -// We shouldn't throw the exception for an ambiguous properties object -// before we got all the values out. -try { - Object.create(null, magicAmbiguousProps); - assertTrue(false); -} catch (e) { - assertTrue(/Invalid property/.test(e)); - assertEquals(6, ctr7); -} - -var magicWritableProps = { - foo: Object.create(null, { value: { value: 4 }, - writable: { get: function() { - ctr6++; - return false; - }}})}; - -var fooNotWritable = Object.create(null, magicWritableProps) -assertEquals(1002, ctr6); -assertEquals(4, fooNotWritable.foo); -fooNotWritable.foo = 5; -assertEquals(4, fooNotWritable.foo); - - -// Test enumerable flag. - -var fooNotEnumerable = - Object.create({fizz: 14}, {foo: {value: 3, enumerable: false}, - bar: {value: 4, enumerable: true}, - baz: {value: 5}}); -var sum = 0; -for (x in fooNotEnumerable) { - assertTrue(x === 'bar' || x === 'fizz'); - sum += fooNotEnumerable[x]; -} -assertEquals(18, sum); - - -try { - Object.create(null, {foo: { get: 0 }}); - assertTrue(false); -} catch (e) { - assertTrue(/Getter must be a function/.test(e)); -} - -try { - Object.create(null, {foo: { set: 0 }}); - assertTrue(false); -} catch (e) { - assertTrue(/Setter must be a function/.test(e)); -} - -try { - Object.create(null, {foo: { set: 0, get: 0 }}); - assertTrue(false); -} catch (e) { - assertTrue(/Getter must be a function/.test(e)); -} - - -// Ensure that only enumerable own properties on the descriptor are used. -var tricky = Object.create( - { foo: { value: 1, enumerable: true }}, - { bar: { value: { value: 2, enumerable: true }, enumerable: false }, - baz: { value: { value: 4, enumerable: false }, enumerable: true }, - fizz: { value: { value: 8, enumerable: false }, enumerable: false }, - buzz: { value: { value: 16, enumerable: true }, enumerable: true }}); - -assertEquals(1, tricky.foo.value); -assertEquals(2, tricky.bar.value); -assertEquals(4, tricky.baz.value); -assertEquals(8, tricky.fizz.value); -assertEquals(16, tricky.buzz.value); - -var sonOfTricky = Object.create(null, tricky); - -assertFalse("foo" in sonOfTricky); -assertFalse("bar" in sonOfTricky); -assertTrue("baz" in sonOfTricky); -assertFalse("fizz" in sonOfTricky); -assertTrue("buzz" in sonOfTricky); - -var sum = 0; -for (x in sonOfTricky) { - assertTrue(x === 'buzz'); - sum += sonOfTricky[x]; -} -assertEquals(16, sum); - - -(function createWithEmptyProtoInfoCreateMap() { - var proto = {a:1}; - var instance = {__proto__: proto }; - // Try force creation of prototype info on proto by loading a proto property. - assertEquals(instance.a, 1); - var result = Object.create(proto, {}); - assertEquals(result.a, 1); - assertEquals(result.__proto__, proto); -})() diff --git a/implementation-contributed/v8/mjsunit/object-define-properties.js b/implementation-contributed/v8/mjsunit/object-define-properties.js deleted file mode 100644 index 6d5032e044d..00000000000 --- a/implementation-contributed/v8/mjsunit/object-define-properties.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the Object.defineProperties method - ES 15.2.3.7 -// Note that the internal DefineOwnProperty method is tested through -// object-define-property.js, this file only contains tests specific for -// Object.defineProperties. Also note that object-create.js contains -// a range of indirect tests on this method since Object.create uses -// Object.defineProperties as a step in setting up the object. - -// Try defining with null as descriptor: -try { - Object.defineProperties({}, null); -} catch(e) { - assertTrue(/null to object/.test(e)); -} - -// Try defining with null as object -try { - Object.defineProperties(null, {}); -} catch(e) { - assertTrue(/called on non-object/.test(e)); -} - - -var desc = {foo: {value: 10}, bar: {get: function() {return 42; }}}; -var obj = {}; -// Check that we actually get the object back as returnvalue -var x = Object.defineProperties(obj, desc); - -assertEquals(x.foo, 10); -assertEquals(x.bar, 42); - - -// Make sure that all property descriptors are calculated before any -// modifications are done. - -var object = {}; - -assertThrows(function() { - Object.defineProperties(object, { - foo: { value: 1 }, - bar: { value: 2, get: function() { return 3; } } - }); - }, TypeError); - -assertEquals(undefined, object.foo); -assertEquals(undefined, object.bar); diff --git a/implementation-contributed/v8/mjsunit/object-define-property.js b/implementation-contributed/v8/mjsunit/object-define-property.js deleted file mode 100644 index cc9c0b79a68..00000000000 --- a/implementation-contributed/v8/mjsunit/object-define-property.js +++ /dev/null @@ -1,1159 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the object.defineProperty method - ES 15.2.3.6 - -// Flags: --allow-natives-syntax - -// Check that an exception is thrown when null is passed as object. -var exception = false; -try { - Object.defineProperty(null, null, null); -} catch (e) { - exception = true; - assertTrue(/called on non-object/.test(e)); -} -assertTrue(exception); - -// Check that an exception is thrown when undefined is passed as object. -exception = false; -try { - Object.defineProperty(undefined, undefined, undefined); -} catch (e) { - exception = true; - assertTrue(/called on non-object/.test(e)); -} -assertTrue(exception); - -// Check that an exception is thrown when non-object is passed as object. -exception = false; -try { - Object.defineProperty(0, "foo", undefined); -} catch (e) { - exception = true; - assertTrue(/called on non-object/.test(e)); -} -assertTrue(exception); - -// Object. -var obj1 = {}; - -// Values. -var val1 = 0; -var val2 = 0; -var val3 = 0; - -function setter1() {val1++; } -function getter1() {return val1; } - -function setter2() {val2++; } -function getter2() {return val2; } - -function setter3() {val3++; } -function getter3() {return val3; } - - -// Descriptors. -var emptyDesc = {}; - -var accessorConfigurable = { - set: setter1, - get: getter1, - configurable: true -}; - -var accessorNoConfigurable = { - set: setter2, - get: getter2, - configurable: false -}; - -var accessorOnlySet = { - set: setter3, - configurable: true -}; - -var accessorOnlyGet = { - get: getter3, - configurable: true -}; - -var accessorDefault = {set: function(){} }; - -var dataConfigurable = { value: 1000, configurable: true }; - -var dataNoConfigurable = { value: 2000, configurable: false }; - -var dataWritable = { value: 3000, writable: true}; - - -// Check that we can't add property with undefined attributes. -try { - Object.defineProperty(obj1, "foo", undefined); - assertTrue(false); -} catch (e) { - assertTrue(/must be an object/.test(e)); -} - -// Make sure that we can add a property with an empty descriptor and -// that it has the default descriptor values. -Object.defineProperty(obj1, "foo", emptyDesc); - -// foo should be undefined as it has no get, set or value -assertEquals(undefined, obj1.foo); - -// We should, however, be able to retrieve the propertydescriptor which should -// have all default values (according to 8.6.1). -var desc = Object.getOwnPropertyDescriptor(obj1, "foo"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertFalse(desc.writable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); -assertEquals(desc.value, undefined); - -// Make sure that getOwnPropertyDescriptor does not return a descriptor -// with default values if called with non existing property (otherwise -// the test above is invalid). -desc = Object.getOwnPropertyDescriptor(obj1, "bar"); -assertEquals(desc, undefined); - -// Make sure that foo can't be reset (as configurable is false). -try { - Object.defineProperty(obj1, "foo", accessorConfigurable); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - - -// Accessor properties - -Object.defineProperty(obj1, "bar", accessorConfigurable); -desc = Object.getOwnPropertyDescriptor(obj1, "bar"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.set, accessorConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.bar = 1); -assertEquals(1, val1); -assertEquals(1, obj1.bar = 1); -assertEquals(2, val1); -assertEquals(2, obj1.bar); - -// Redefine bar with non configurable test -Object.defineProperty(obj1, "bar", accessorNoConfigurable); -desc = Object.getOwnPropertyDescriptor(obj1, "bar"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorNoConfigurable.get); -assertEquals(desc.set, accessorNoConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.bar = 1); -assertEquals(2, val1); -assertEquals(1, val2); -assertEquals(1, obj1.bar = 1) -assertEquals(2, val1); -assertEquals(2, val2); -assertEquals(2, obj1.bar); - -// Try to redefine bar again - should fail as configurable is false. -try { - Object.defineProperty(obj1, "bar", accessorConfigurable); - assertTrue(false); -} catch(e) { - assertTrue(/Cannot redefine property/.test(e)); -} - -// Try to redefine bar again using the data descriptor - should fail. -try { - Object.defineProperty(obj1, "bar", dataConfigurable); - assertTrue(false); -} catch(e) { - assertTrue(/Cannot redefine property/.test(e)); -} - -// Redefine using same descriptor - should succeed. -Object.defineProperty(obj1, "bar", accessorNoConfigurable); -desc = Object.getOwnPropertyDescriptor(obj1, "bar"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorNoConfigurable.get); -assertEquals(desc.set, accessorNoConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.bar = 1); -assertEquals(2, val1); -assertEquals(3, val2); -assertEquals(1, obj1.bar = 1) -assertEquals(2, val1); -assertEquals(4, val2); -assertEquals(4, obj1.bar); - -// Define an accessor that has only a setter. -Object.defineProperty(obj1, "setOnly", accessorOnlySet); -desc = Object.getOwnPropertyDescriptor(obj1, "setOnly"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.set, accessorOnlySet.set); -assertEquals(desc.writable, undefined); -assertEquals(desc.value, undefined); -assertEquals(desc.get, undefined); -assertEquals(1, obj1.setOnly = 1); -assertEquals(1, val3); - -// Add a getter - should not touch the setter. -Object.defineProperty(obj1, "setOnly", accessorOnlyGet); -desc = Object.getOwnPropertyDescriptor(obj1, "setOnly"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.get, accessorOnlyGet.get); -assertEquals(desc.set, accessorOnlySet.set); -assertEquals(desc.writable, undefined); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.setOnly = 1); -assertEquals(2, val3); - -// The above should also work if redefining just a getter or setter on -// an existing property with both a getter and a setter. -Object.defineProperty(obj1, "both", accessorConfigurable); - -Object.defineProperty(obj1, "both", accessorOnlySet); -desc = Object.getOwnPropertyDescriptor(obj1, "both"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.set, accessorOnlySet.set); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.writable, undefined); -assertEquals(desc.value, undefined); -assertEquals(1, obj1.both = 1); -assertEquals(3, val3); - - -// Data properties - -Object.defineProperty(obj1, "foobar", dataConfigurable); -desc = Object.getOwnPropertyDescriptor(obj1, "foobar"); -assertEquals(obj1.foobar, 1000); -assertEquals(desc.value, 1000); -assertTrue(desc.configurable); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); -//Try writing to non writable attribute - should remain 1000 -obj1.foobar = 1001; -assertEquals(obj1.foobar, 1000); - - -// Redefine to writable descriptor - now writing to foobar should be allowed. -Object.defineProperty(obj1, "foobar", dataWritable); -desc = Object.getOwnPropertyDescriptor(obj1, "foobar"); -assertEquals(obj1.foobar, 3000); -assertEquals(desc.value, 3000); -// Note that since dataWritable does not define configurable the configurable -// setting from the redefined property (in this case true) is used. -assertTrue(desc.configurable); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); -// Writing to the property should now be allowed -obj1.foobar = 1001; -assertEquals(obj1.foobar, 1001); - - -// Redefine with non configurable data property. -Object.defineProperty(obj1, "foobar", dataNoConfigurable); -desc = Object.getOwnPropertyDescriptor(obj1, "foobar"); -assertEquals(obj1.foobar, 2000); -assertEquals(desc.value, 2000); -assertFalse(desc.configurable); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - -// Try redefine again - shold fail because configurable is now false. -try { - Object.defineProperty(obj1, "foobar", dataConfigurable); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - -// Try redefine again with accessor property - shold also fail. -try { - Object.defineProperty(obj1, "foobar", dataConfigurable); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - - -// Redifine with the same descriptor - should succeed (step 6). -Object.defineProperty(obj1, "foobar", dataNoConfigurable); -desc = Object.getOwnPropertyDescriptor(obj1, "foobar"); -assertEquals(obj1.foobar, 2000); -assertEquals(desc.value, 2000); -assertFalse(desc.configurable); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -// New object -var obj2 = {}; - -// Make accessor - redefine to data -Object.defineProperty(obj2, "foo", accessorConfigurable); - -// Redefine to data property -Object.defineProperty(obj2, "foo", dataConfigurable); -desc = Object.getOwnPropertyDescriptor(obj2, "foo"); -assertEquals(obj2.foo, 1000); -assertEquals(desc.value, 1000); -assertTrue(desc.configurable); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -// Redefine back to accessor -Object.defineProperty(obj2, "foo", accessorConfigurable); -desc = Object.getOwnPropertyDescriptor(obj2, "foo"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.set, accessorConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj2.foo = 1); -assertEquals(3, val1); -assertEquals(4, val2); -assertEquals(3, obj2.foo); - -// Make data - redefine to accessor -Object.defineProperty(obj2, "bar", dataConfigurable) - -// Redefine to accessor property -Object.defineProperty(obj2, "bar", accessorConfigurable); -desc = Object.getOwnPropertyDescriptor(obj2, "bar"); -assertTrue(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.set, accessorConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj2.bar = 1); -assertEquals(4, val1); -assertEquals(4, val2); -assertEquals(4, obj2.foo); - -// Redefine back to data property -Object.defineProperty(obj2, "bar", dataConfigurable); -desc = Object.getOwnPropertyDescriptor(obj2, "bar"); -assertEquals(obj2.bar, 1000); -assertEquals(desc.value, 1000); -assertTrue(desc.configurable); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -// Redefinition of an accessor defined using __defineGetter__ and -// __defineSetter__. -function get(){return this.x} -function set(x){this.x=x}; - -var obj3 = {x:1000}; -obj3.__defineGetter__("foo", get); -obj3.__defineSetter__("foo", set); - -desc = Object.getOwnPropertyDescriptor(obj3, "foo"); -assertTrue(desc.configurable); -assertTrue(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, get); -assertEquals(desc.set, set); -assertEquals(desc.value, undefined); -assertEquals(1, obj3.foo = 1); -assertEquals(1, obj3.x); -assertEquals(1, obj3.foo); - -// Redefine to accessor property (non configurable) - note that enumerable -// which we do not redefine should remain the same (true). -Object.defineProperty(obj3, "foo", accessorNoConfigurable); -desc = Object.getOwnPropertyDescriptor(obj3, "foo"); -assertFalse(desc.configurable); -assertTrue(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorNoConfigurable.get); -assertEquals(desc.set, accessorNoConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj3.foo = 1); -assertEquals(5, val2); -assertEquals(5, obj3.foo); - - -obj3.__defineGetter__("bar", get); -obj3.__defineSetter__("bar", set); - - -// Redefine back to data property -Object.defineProperty(obj3, "bar", dataConfigurable); -desc = Object.getOwnPropertyDescriptor(obj3, "bar"); -assertEquals(obj3.bar, 1000); -assertEquals(desc.value, 1000); -assertTrue(desc.configurable); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -var obj4 = {}; -var func = function (){return 42;}; -obj4.bar = func; -assertEquals(42, obj4.bar()); - -Object.defineProperty(obj4, "bar", accessorConfigurable); -desc = Object.getOwnPropertyDescriptor(obj4, "bar"); -assertTrue(desc.configurable); -assertTrue(desc.enumerable); -assertEquals(desc.writable, undefined); -assertEquals(desc.get, accessorConfigurable.get); -assertEquals(desc.set, accessorConfigurable.set); -assertEquals(desc.value, undefined); -assertEquals(1, obj4.bar = 1); -assertEquals(5, val1); -assertEquals(5, obj4.bar); - -// Make sure an error is thrown when trying to access to redefined function. -try { - obj4.bar(); - assertTrue(false); -} catch (e) { - assertTrue(/is not a function/.test(e)); -} - - -// Test that all possible differences in step 6 in DefineOwnProperty are -// exercised, i.e., any difference in the given property descriptor and the -// existing properties should not return true, but throw an error if the -// existing configurable property is false. - -var obj5 = {}; -// Enumerable will default to false. -Object.defineProperty(obj5, 'foo', accessorNoConfigurable); -desc = Object.getOwnPropertyDescriptor(obj5, 'foo'); -// First, test that we are actually allowed to set the accessor if all -// values are of the descriptor are the same as the existing one. -Object.defineProperty(obj5, 'foo', accessorNoConfigurable); - -// Different setter. -var descDifferent = { - configurable:false, - enumerable:false, - set: setter1, - get: getter2 -}; - -try { - Object.defineProperty(obj5, 'foo', descDifferent); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - -// Different getter. -descDifferent = { - configurable:false, - enumerable:false, - set: setter2, - get: getter1 -}; - -try { - Object.defineProperty(obj5, 'foo', descDifferent); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - -// Different enumerable. -descDifferent = { - configurable:false, - enumerable:true, - set: setter2, - get: getter2 -}; - -try { - Object.defineProperty(obj5, 'foo', descDifferent); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - -// Different configurable. -descDifferent = { - configurable:false, - enumerable:true, - set: setter2, - get: getter2 -}; - -try { - Object.defineProperty(obj5, 'foo', descDifferent); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - -// No difference. -descDifferent = { - configurable:false, - enumerable:false, - set: setter2, - get: getter2 -}; -// Make sure we can still redefine if all properties are the same. -Object.defineProperty(obj5, 'foo', descDifferent); - -// Make sure that obj5 still holds the original values. -desc = Object.getOwnPropertyDescriptor(obj5, 'foo'); -assertEquals(desc.get, getter2); -assertEquals(desc.set, setter2); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - - -// Also exercise step 6 on data property, writable and enumerable -// defaults to false. -Object.defineProperty(obj5, 'bar', dataNoConfigurable); - -// Test that redefinition with the same property descriptor is possible -Object.defineProperty(obj5, 'bar', dataNoConfigurable); - -// Different value. -descDifferent = { - configurable:false, - enumerable:false, - writable: false, - value: 1999 -}; - -try { - Object.defineProperty(obj5, 'bar', descDifferent); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - -// Different writable. -descDifferent = { - configurable:false, - enumerable:false, - writable: true, - value: 2000 -}; - -try { - Object.defineProperty(obj5, 'bar', descDifferent); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - - -// Different enumerable. -descDifferent = { - configurable:false, - enumerable:true , - writable:false, - value: 2000 -}; - -try { - Object.defineProperty(obj5, 'bar', descDifferent); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - - -// Different configurable. -descDifferent = { - configurable:true, - enumerable:false, - writable:false, - value: 2000 -}; - -try { - Object.defineProperty(obj5, 'bar', descDifferent); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot redefine property/.test(e)); -} - -// No difference. -descDifferent = { - configurable:false, - enumerable:false, - writable:false, - value:2000 -}; -// Make sure we can still redefine if all properties are the same. -Object.defineProperty(obj5, 'bar', descDifferent); - -// Make sure that obj5 still holds the original values. -desc = Object.getOwnPropertyDescriptor(obj5, 'bar'); -assertEquals(desc.value, 2000); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - - -// Make sure that we can't overwrite +0 with -0 and vice versa. -var descMinusZero = {value: -0, configurable: false}; -var descPlusZero = {value: +0, configurable: false}; - -Object.defineProperty(obj5, 'minuszero', descMinusZero); - -// Make sure we can redefine with -0. -Object.defineProperty(obj5, 'minuszero', descMinusZero); - -exception = false; -try { - Object.defineProperty(obj5, 'minuszero', descPlusZero); -} catch (e) { - exception = true; - assertTrue(/Cannot redefine property/.test(e)); -} -assertTrue(exception); - - -Object.defineProperty(obj5, 'pluszero', descPlusZero); - -// Make sure we can redefine with +0. -Object.defineProperty(obj5, 'pluszero', descPlusZero); - -exception = false; -try { - Object.defineProperty(obj5, 'pluszero', descMinusZero); -} catch (e) { - exception = true; - assertTrue(/Cannot redefine property/.test(e)); -} -assertTrue(exception); - - -var obj6 = {}; -obj6[1] = 'foo'; -obj6[2] = 'bar'; -obj6[3] = '42'; -obj6[4] = '43'; -obj6[5] = '44'; - -var descElement = { value: 'foobar' }; -var descElementNonConfigurable = { value: 'barfoo', configurable: false }; -var descElementNonWritable = { value: 'foofoo', writable: false }; -var descElementNonEnumerable = { value: 'barbar', enumerable: false }; -var descElementAllFalse = { value: 'foofalse', - configurable: false, - writable: false, - enumerable: false }; - - -// Redefine existing property. -Object.defineProperty(obj6, '1', descElement); -desc = Object.getOwnPropertyDescriptor(obj6, '1'); -assertEquals(desc.value, 'foobar'); -assertTrue(desc.writable); -assertTrue(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -Object.defineProperty(obj6, '2', descElementNonConfigurable); -desc = Object.getOwnPropertyDescriptor(obj6, '2'); -assertEquals(desc.value, 'barfoo'); -assertTrue(desc.writable); -assertTrue(desc.enumerable); -assertFalse(desc.configurable); - -// Can use defineProperty to change the value of a non -// configurable property. -try { - Object.defineProperty(obj6, '2', descElement); - desc = Object.getOwnPropertyDescriptor(obj6, '2'); - assertEquals(desc.value, 'foobar'); -} catch (e) { - assertUnreachable(); -} - -// Ensure that we can't change the descriptor of a -// non configurable property. -exception = false; -try { - var descAccessor = { get: function() { return 0; } }; - Object.defineProperty(obj6, '2', descAccessor); -} catch (e) { - exception = true; - assertTrue(/Cannot redefine property/.test(e)); -} -assertTrue(exception); - -Object.defineProperty(obj6, '2', descElementNonWritable); -desc = Object.getOwnPropertyDescriptor(obj6, '2'); -assertEquals(desc.value, 'foofoo'); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertFalse(desc.configurable); - -Object.defineProperty(obj6, '3', descElementNonWritable); -desc = Object.getOwnPropertyDescriptor(obj6, '3'); -assertEquals(desc.value, 'foofoo'); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -Object.defineProperty(obj6, '4', descElementNonEnumerable); -desc = Object.getOwnPropertyDescriptor(obj6, '4'); -assertEquals(desc.value, 'barbar'); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -Object.defineProperty(obj6, '5', descElementAllFalse); -desc = Object.getOwnPropertyDescriptor(obj6, '5'); -assertEquals(desc.value, 'foofalse'); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - -// Define non existing property - all attributes should default to false. -Object.defineProperty(obj6, '15', descElement); -desc = Object.getOwnPropertyDescriptor(obj6, '15'); -assertEquals(desc.value, 'foobar'); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - -// Make sure that we can't redefine using direct access. -obj6[15] ='overwrite'; -assertEquals(obj6[15],'foobar'); - - -// Repeat the above tests on an array. -var arr = new Array(); -arr[1] = 'foo'; -arr[2] = 'bar'; -arr[3] = '42'; -arr[4] = '43'; -arr[5] = '44'; - -var descElement = { value: 'foobar' }; -var descElementNonConfigurable = { value: 'barfoo', configurable: false }; -var descElementNonWritable = { value: 'foofoo', writable: false }; -var descElementNonEnumerable = { value: 'barbar', enumerable: false }; -var descElementAllFalse = { value: 'foofalse', - configurable: false, - writable: false, - enumerable: false }; - - -// Redefine existing property. -Object.defineProperty(arr, '1', descElement); -desc = Object.getOwnPropertyDescriptor(arr, '1'); -assertEquals(desc.value, 'foobar'); -assertTrue(desc.writable); -assertTrue(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -Object.defineProperty(arr, '2', descElementNonConfigurable); -desc = Object.getOwnPropertyDescriptor(arr, '2'); -assertEquals(desc.value, 'barfoo'); -assertTrue(desc.writable); -assertTrue(desc.enumerable); -assertFalse(desc.configurable); - -// Can use defineProperty to change the value of a non -// configurable property of an array. -try { - Object.defineProperty(arr, '2', descElement); - desc = Object.getOwnPropertyDescriptor(arr, '2'); - assertEquals(desc.value, 'foobar'); -} catch (e) { - assertUnreachable(); -} - -// Ensure that we can't change the descriptor of a -// non configurable property. -exception = false; -try { - var descAccessor = { get: function() { return 0; } }; - Object.defineProperty(arr, '2', descAccessor); -} catch (e) { - exception = true; - assertTrue(/Cannot redefine property/.test(e)); -} -assertTrue(exception); - -Object.defineProperty(arr, '2', descElementNonWritable); -desc = Object.getOwnPropertyDescriptor(arr, '2'); -assertEquals(desc.value, 'foofoo'); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertFalse(desc.configurable); - -Object.defineProperty(arr, '3', descElementNonWritable); -desc = Object.getOwnPropertyDescriptor(arr, '3'); -assertEquals(desc.value, 'foofoo'); -assertFalse(desc.writable); -assertTrue(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -Object.defineProperty(arr, '4', descElementNonEnumerable); -desc = Object.getOwnPropertyDescriptor(arr, '4'); -assertEquals(desc.value, 'barbar'); -assertTrue(desc.writable); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); - -// Redefine existing property with configurable: false. -Object.defineProperty(arr, '5', descElementAllFalse); -desc = Object.getOwnPropertyDescriptor(arr, '5'); -assertEquals(desc.value, 'foofalse'); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - -// Define non existing property - all attributes should default to false. -Object.defineProperty(arr, '15', descElement); -desc = Object.getOwnPropertyDescriptor(arr, '15'); -assertEquals(desc.value, 'foobar'); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); - -// Define non-array property, check that .length is unaffected. -assertEquals(16, arr.length); -Object.defineProperty(arr, '0x20', descElement); -assertEquals(16, arr.length); - -// See issue 968: http://code.google.com/p/v8/issues/detail?id=968 -var o = { x : 42 }; -Object.defineProperty(o, "x", { writable: false }); -assertEquals(42, o.x); -o.x = 37; -assertEquals(42, o.x); - -o = { x : 42 }; -Object.defineProperty(o, "x", {}); -assertEquals(42, o.x); -o.x = 37; -// Writability is preserved. -assertEquals(37, o.x); - -var o = { }; -Object.defineProperty(o, "x", { writable: false }); -assertEquals(undefined, o.x); -o.x = 37; -assertEquals(undefined, o.x); - -o = { get x() { return 87; } }; -Object.defineProperty(o, "x", { writable: false }); -assertEquals(undefined, o.x); -o.x = 37; -assertEquals(undefined, o.x); - -// Ignore inherited properties. -o = { __proto__ : { x : 87 } }; -Object.defineProperty(o, "x", { writable: false }); -assertEquals(undefined, o.x); -o.x = 37; -assertEquals(undefined, o.x); - -function testDefineProperty(obj, propertyName, desc, resultDesc) { - Object.defineProperty(obj, propertyName, desc); - var actualDesc = Object.getOwnPropertyDescriptor(obj, propertyName); - assertEquals(resultDesc.enumerable, actualDesc.enumerable); - assertEquals(resultDesc.configurable, actualDesc.configurable); - if (resultDesc.hasOwnProperty('value')) { - assertEquals(resultDesc.value, actualDesc.value); - assertEquals(resultDesc.writable, actualDesc.writable); - assertFalse(resultDesc.hasOwnProperty('get')); - assertFalse(resultDesc.hasOwnProperty('set')); - } else { - assertEquals(resultDesc.get, actualDesc.get); - assertEquals(resultDesc.set, actualDesc.set); - assertFalse(resultDesc.hasOwnProperty('value')); - assertFalse(resultDesc.hasOwnProperty('writable')); - } -} - -// tests redefining existing property with a generic descriptor -o = { p : 42 }; -testDefineProperty(o, 'p', - { }, - { value : 42, writable : true, enumerable : true, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : true }, - { value : 42, writable : true, enumerable : true, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { configurable : true }, - { value : 42, writable : true, enumerable : true, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : false }, - { value : 42, writable : true, enumerable : false, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { configurable : false }, - { value : 42, writable : true, enumerable : true, configurable : false }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : true, configurable : true }, - { value : 42, writable : true, enumerable : true, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : false, configurable : true }, - { value : 42, writable : true, enumerable : false, configurable : true }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : true, configurable : false }, - { value : 42, writable : true, enumerable : true, configurable : false }); - -o = { p : 42 }; -testDefineProperty(o, 'p', - { enumerable : false, configurable : false }, - { value : 42, writable : true, enumerable : false, configurable : false }); - -// can make a writable, non-configurable field non-writable -o = { p : 42 }; -Object.defineProperty(o, 'p', { configurable: false }); -testDefineProperty(o, 'p', - { writable: false }, - { value : 42, writable : false, enumerable : true, configurable : false }); - -// redefine of get only property with generic descriptor -o = {}; -Object.defineProperty(o, 'p', - { get : getter1, enumerable: true, configurable: true }); -testDefineProperty(o, 'p', - { enumerable : false, configurable : false }, - { get: getter1, set: undefined, enumerable : false, configurable : false }); - -// redefine of get/set only property with generic descriptor -o = {}; -Object.defineProperty(o, 'p', - { get: getter1, set: setter1, enumerable: true, configurable: true }); -testDefineProperty(o, 'p', - { enumerable : false, configurable : false }, - { get: getter1, set: setter1, enumerable : false, configurable : false }); - -// redefine of set only property with generic descriptor -o = {}; -Object.defineProperty(o, 'p', - { set : setter1, enumerable: true, configurable: true }); -testDefineProperty(o, 'p', - { enumerable : false, configurable : false }, - { get: undefined, set: setter1, enumerable : false, configurable : false }); - - -// Regression test: Ensure that growing dictionaries are not ignored. -o = {}; -for (var i = 0; i < 1000; i++) { - // Non-enumerable property forces dictionary mode. - Object.defineProperty(o, i, {value: i, enumerable: false}); -} -assertEquals(999, o[999]); - - -// Regression test: Bizarre behavior on non-strict arguments object. -// TODO(yangguo): Tests disabled, needs investigation! -/* -(function test(arg0) { - // Here arguments[0] is a fast alias on arg0. - Object.defineProperty(arguments, "0", { - value:1, - enumerable:false - }); - // Here arguments[0] is a slow alias on arg0. - Object.defineProperty(arguments, "0", { - value:2, - writable:false - }); - // Here arguments[0] is no alias at all. - Object.defineProperty(arguments, "0", { - value:3 - }); - assertEquals(2, arg0); - assertEquals(3, arguments[0]); -})(0); -*/ - -// Regression test: We should never observe the hole value. -var objectWithGetter = {}; -objectWithGetter.__defineGetter__('foo', function() {}); -assertEquals(undefined, objectWithGetter.__lookupSetter__('foo')); - -var objectWithSetter = {}; -objectWithSetter.__defineSetter__('foo', function(x) {}); -assertEquals(undefined, objectWithSetter.__lookupGetter__('foo')); - -// An object with a getter on the prototype chain. -function getter() { return 111; } -function anotherGetter() { return 222; } - -function testGetterOnProto(expected, o) { - assertEquals(expected, o.quebec); -} - -obj1 = {}; -Object.defineProperty(obj1, "quebec", { get: getter, configurable: true }); -obj2 = Object.create(obj1); -obj3 = Object.create(obj2); - -testGetterOnProto(111, obj3); -testGetterOnProto(111, obj3); -%OptimizeFunctionOnNextCall(testGetterOnProto); -testGetterOnProto(111, obj3); -testGetterOnProto(111, obj3); - -Object.defineProperty(obj1, "quebec", { get: anotherGetter }); - -testGetterOnProto(222, obj3); -testGetterOnProto(222, obj3); -%OptimizeFunctionOnNextCall(testGetterOnProto); -testGetterOnProto(222, obj3); -testGetterOnProto(222, obj3); - -// An object with a setter on the prototype chain. -var modifyMe; -function setter(x) { modifyMe = x+1; } -function anotherSetter(x) { modifyMe = x+2; } - -function testSetterOnProto(expected, o) { - modifyMe = 333; - o.romeo = 444; - assertEquals(expected, modifyMe); -} - -obj1 = {}; -Object.defineProperty(obj1, "romeo", { set: setter, configurable: true }); -obj2 = Object.create(obj1); -obj3 = Object.create(obj2); - -testSetterOnProto(445, obj3); -testSetterOnProto(445, obj3); -%OptimizeFunctionOnNextCall(testSetterOnProto); -testSetterOnProto(445, obj3); -testSetterOnProto(445, obj3); - -Object.defineProperty(obj1, "romeo", { set: anotherSetter }); - -testSetterOnProto(446, obj3); -testSetterOnProto(446, obj3); -%OptimizeFunctionOnNextCall(testSetterOnProto); -testSetterOnProto(446, obj3); -testSetterOnProto(446, obj3); - -// Removing a setter on the prototype chain. -function testSetterOnProtoStrict(o) { - "use strict"; - o.sierra = 12345; -} - -obj1 = {}; -Object.defineProperty(obj1, "sierra", - { get: getter, set: setter, configurable: true }); -obj2 = Object.create(obj1); -obj3 = Object.create(obj2); - -testSetterOnProtoStrict(obj3); -testSetterOnProtoStrict(obj3); -%OptimizeFunctionOnNextCall(testSetterOnProtoStrict); -testSetterOnProtoStrict(obj3); -testSetterOnProtoStrict(obj3); - -Object.defineProperty(obj1, "sierra", - { get: getter, set: undefined, configurable: true }); - -exception = false; -try { - testSetterOnProtoStrict(obj3); -} catch (e) { - exception = true; - assertTrue(/which has only a getter/.test(e)); -} -assertTrue(exception); - -// Test assignment to a getter-only property on the prototype chain. This makes -// sure that crankshaft re-checks its assumptions and doesn't rely only on type -// feedback (which would be monomorphic here). - -function Assign(o) { - o.blubb = 123; -} - -function C() {} - -Assign(new C); -Assign(new C); -%OptimizeFunctionOnNextCall(Assign); -Object.defineProperty(C.prototype, "blubb", {get: function() { return -42; }}); -Assign(new C); - -// Test that changes to the prototype of a simple constructor are not ignored, -// even after creating initial instances. -function C() { - this.x = 23; -} -assertEquals(23, new C().x); -C.prototype.__defineSetter__('x', function(value) { this.y = 23; }); -assertEquals(void 0, new C().x); diff --git a/implementation-contributed/v8/mjsunit/object-freeze-global.js b/implementation-contributed/v8/mjsunit/object-freeze-global.js deleted file mode 100644 index 8ab5b8529bc..00000000000 --- a/implementation-contributed/v8/mjsunit/object-freeze-global.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.freeze(this); -assertTrue(Object.isFrozen(this)); diff --git a/implementation-contributed/v8/mjsunit/object-freeze.js b/implementation-contributed/v8/mjsunit/object-freeze.js deleted file mode 100644 index 23f5af0f0c2..00000000000 --- a/implementation-contributed/v8/mjsunit/object-freeze.js +++ /dev/null @@ -1,398 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the Object.freeze and Object.isFrozen methods - ES 19.1.2.5 and -// ES 19.1.2.12 - -// Flags: --allow-natives-syntax - -// Test that we return obj if non-object is passed as argument -var non_objects = new Array(undefined, null, 1, -1, 0, 42.43, Symbol("test")); -for (var key in non_objects) { - assertSame(non_objects[key], Object.freeze(non_objects[key])); -} - -// Test that isFrozen always returns true for non-objects -for (var key in non_objects) { - assertTrue(Object.isFrozen(non_objects[key])); -} - -// Test normal data properties. -var obj = { x: 42, z: 'foobar' }; -var desc = Object.getOwnPropertyDescriptor(obj, 'x'); -assertTrue(desc.writable); -assertTrue(desc.configurable); -assertEquals(42, desc.value); - -desc = Object.getOwnPropertyDescriptor(obj, 'z'); -assertTrue(desc.writable); -assertTrue(desc.configurable); -assertEquals('foobar', desc.value); - -assertTrue(Object.isExtensible(obj)); -assertFalse(Object.isFrozen(obj)); - -Object.freeze(obj); - -// Make sure we are no longer extensible. -assertFalse(Object.isExtensible(obj)); -assertTrue(Object.isFrozen(obj)); - -obj.foo = 42; -assertEquals(obj.foo, undefined); - -desc = Object.getOwnPropertyDescriptor(obj, 'x'); -assertFalse(desc.writable); -assertFalse(desc.configurable); -assertEquals(42, desc.value); - -desc = Object.getOwnPropertyDescriptor(obj, 'z'); -assertFalse(desc.writable); -assertFalse(desc.configurable); -assertEquals("foobar", desc.value); - -// Make sure that even if we try overwrite a value that is not writable, it is -// not changed. -obj.x = "tete"; -assertEquals(42, obj.x); -obj.x = { get: function() {return 43}, set: function() {} }; -assertEquals(42, obj.x); - -// Test on accessors. -var obj2 = {}; -function get() { return 43; }; -function set() {}; -Object.defineProperty(obj2, 'x', { get: get, set: set, configurable: true }); - -desc = Object.getOwnPropertyDescriptor(obj2, 'x'); -assertTrue(desc.configurable); -assertEquals(undefined, desc.value); -assertEquals(set, desc.set); -assertEquals(get, desc.get); - -assertTrue(Object.isExtensible(obj2)); -assertFalse(Object.isFrozen(obj2)); -Object.freeze(obj2); -assertTrue(Object.isFrozen(obj2)); -assertFalse(Object.isExtensible(obj2)); - -desc = Object.getOwnPropertyDescriptor(obj2, 'x'); -assertFalse(desc.configurable); -assertEquals(undefined, desc.value); -assertEquals(set, desc.set); -assertEquals(get, desc.get); - -obj2.foo = 42; -assertEquals(obj2.foo, undefined); - - -// Test freeze on arrays. -var arr = new Array(42,43); - -desc = Object.getOwnPropertyDescriptor(arr, '0'); -assertTrue(desc.configurable); -assertTrue(desc.writable); -assertEquals(42, desc.value); - -desc = Object.getOwnPropertyDescriptor(arr, '1'); -assertTrue(desc.configurable); -assertTrue(desc.writable); -assertEquals(43, desc.value); - -assertTrue(Object.isExtensible(arr)); -assertFalse(Object.isFrozen(arr)); -Object.freeze(arr); -assertTrue(Object.isFrozen(arr)); -assertFalse(Object.isExtensible(arr)); - -desc = Object.getOwnPropertyDescriptor(arr, '0'); -assertFalse(desc.configurable); -assertFalse(desc.writable); -assertEquals(42, desc.value); - -desc = Object.getOwnPropertyDescriptor(arr, '1'); -assertFalse(desc.configurable); -assertFalse(desc.writable); -assertEquals(43, desc.value); - -arr[0] = 'foo'; - -assertEquals(arr[0], 42); - - -// Test that isFrozen return the correct value even if configurable has been set -// to false on all properties manually and the extensible flag has also been set -// to false manually. -var obj3 = { x: 42, y: 'foo' }; - -assertFalse(Object.isFrozen(obj3)); - -Object.defineProperty(obj3, 'x', {configurable: false, writable: false}); -Object.defineProperty(obj3, 'y', {configurable: false, writable: false}); -Object.preventExtensions(obj3); - -assertTrue(Object.isFrozen(obj3)); - - -// Make sure that an object that has only non-configurable, but one -// writable property, is not classified as frozen. -var obj4 = {}; -Object.defineProperty(obj4, 'x', {configurable: false, writable: true}); -Object.defineProperty(obj4, 'y', {configurable: false, writable: false}); -Object.preventExtensions(obj4); - -assertFalse(Object.isFrozen(obj4)); - -// Make sure that an object that has only non-writable, but one -// configurable property, is not classified as frozen. -var obj5 = {}; -Object.defineProperty(obj5, 'x', {configurable: true, writable: false}); -Object.defineProperty(obj5, 'y', {configurable: false, writable: false}); -Object.preventExtensions(obj5); - -assertFalse(Object.isFrozen(obj5)); - -// Make sure that Object.freeze returns the frozen object. -var obj6 = {} -assertTrue(obj6 === Object.freeze(obj6)) - -// Test that the enumerable attribute is unperturbed by freezing. -obj = { x: 42, y: 'foo' }; -Object.defineProperty(obj, 'y', {enumerable: false}); -Object.freeze(obj); -assertTrue(Object.isFrozen(obj)); -desc = Object.getOwnPropertyDescriptor(obj, 'x'); -assertTrue(desc.enumerable); -desc = Object.getOwnPropertyDescriptor(obj, 'y'); -assertFalse(desc.enumerable); - -// Fast properties should remain fast -obj = { x: 42, y: 'foo' }; -assertTrue(%HasFastProperties(obj)); -Object.freeze(obj); -assertTrue(Object.isFrozen(obj)); -assertTrue(%HasFastProperties(obj)); - -// Frozen objects should share maps where possible -obj = { prop1: 1, prop2: 2 }; -obj2 = { prop1: 3, prop2: 4 }; -assertTrue(%HaveSameMap(obj, obj2)); -Object.freeze(obj); -Object.freeze(obj2); -assertTrue(Object.isFrozen(obj)); -assertTrue(Object.isFrozen(obj2)); -assertTrue(%HaveSameMap(obj, obj2)); - -// Frozen objects should share maps even when they have elements -obj = { prop1: 1, prop2: 2, 75: 'foo' }; -obj2 = { prop1: 3, prop2: 4, 150: 'bar' }; -assertTrue(%HaveSameMap(obj, obj2)); -Object.freeze(obj); -Object.freeze(obj2); -assertTrue(Object.isFrozen(obj)); -assertTrue(Object.isFrozen(obj2)); -assertTrue(%HaveSameMap(obj, obj2)); - -// Setting elements after freezing should not be allowed -obj = { prop: 'thing' }; -Object.freeze(obj); -assertTrue(Object.isFrozen(obj)); -obj[0] = 'hello'; -assertFalse(obj.hasOwnProperty(0)); - -// Freezing an object in dictionary mode should work -// Also testing that getter/setter properties work after freezing -obj = { }; -for (var i = 0; i < 100; ++i) { - obj['x' + i] = i; -} -var accessorDidRun = false; -Object.defineProperty(obj, 'accessor', { - get: function() { return 42 }, - set: function() { accessorDidRun = true }, - configurable: true, - enumerable: true -}); - -assertFalse(%HasFastProperties(obj)); -Object.freeze(obj); -assertFalse(%HasFastProperties(obj)); -assertTrue(Object.isFrozen(obj)); -assertFalse(Object.isExtensible(obj)); -for (var i = 0; i < 100; ++i) { - desc = Object.getOwnPropertyDescriptor(obj, 'x' + i); - assertFalse(desc.writable); - assertFalse(desc.configurable); -} -assertEquals(42, obj.accessor); -assertFalse(accessorDidRun); -obj.accessor = 'ignored value'; -assertTrue(accessorDidRun); - -// Freezing arguments should work -var func = function(arg) { - Object.freeze(arguments); - assertTrue(Object.isFrozen(arguments)); -}; -func('hello', 'world'); -func('goodbye', 'world'); - -// Freezing sparse arrays -var sparseArr = [0, 1]; -sparseArr[10000] = 10000; -Object.freeze(sparseArr); -assertTrue(Object.isFrozen(sparseArr)); - -// Accessors on fast object should behavior properly after freezing -obj = {}; -Object.defineProperty(obj, 'accessor', { - get: function() { return 42 }, - set: function() { accessorDidRun = true }, - configurable: true, - enumerable: true -}); -assertTrue(%HasFastProperties(obj)); -Object.freeze(obj); -assertTrue(Object.isFrozen(obj)); -assertTrue(%HasFastProperties(obj)); -assertEquals(42, obj.accessor); -accessorDidRun = false; -obj.accessor = 'ignored value'; -assertTrue(accessorDidRun); - -// Test for regression in mixed accessor/data property objects. -// The strict function is one such object. -assertTrue(Object.isFrozen(Object.freeze(function(){"use strict";}))); - -// Also test a simpler case -obj = {}; -Object.defineProperty(obj, 'accessor2', { - get: function() { return 42 }, - set: function() { accessorDidRun = true }, - configurable: true, - enumerable: true -}); -obj.data = 'foo'; -assertTrue(%HasFastProperties(obj)); -Object.freeze(obj); -assertTrue(%HasFastProperties(obj)); -assertTrue(Object.isFrozen(obj)); - -// Test array built-in functions with freeze. -obj = [1,2,3]; -Object.freeze(obj); -// if frozen implies sealed, then the tests in object-seal.js are mostly -// sufficient. -assertTrue(Object.isSealed(obj)); - -// Verify that the length can't be written by builtins. -assertThrows(function() { obj.push(); }, TypeError); -assertThrows(function() { obj.unshift(); }, TypeError); -assertThrows(function() { obj.splice(0,0); }, TypeError); -assertTrue(Object.isFrozen(obj)); - -// Verify that an item can't be changed with splice. -assertThrows(function() { obj.splice(0,1,1); }, TypeError); -assertTrue(Object.isFrozen(obj)); - -// Verify that unshift() with no arguments will fail if it reifies from -// the prototype into the object. -obj = [1,,3]; -obj.__proto__[1] = 1; -assertEquals(1, obj[1]); -Object.freeze(obj); -assertThrows(function() { obj.unshift(); }, TypeError); - -// Sealing and then Freezing should do the right thing. -var obj = { foo: 'bar', 0: 'element' }; -Object.seal(obj); -assertTrue(Object.isSealed(obj)); -assertFalse(Object.isFrozen(obj)); -Object.freeze(obj); -assertTrue(Object.isSealed(obj)); -assertTrue(Object.isFrozen(obj)); - - -(function propertiesOfFrozenObjectNotFrozen() { - function Frozen() {} - Object.freeze(Frozen); - assertDoesNotThrow(function() { return new Frozen(); }); - Frozen.prototype.prototypeExists = true; - assertTrue((new Frozen()).prototypeExists); -})(); - - -(function frozenPrototypePreventsPUT() { - // A read-only property on the prototype should prevent a [[Put]] . - function Constructor() {} - Constructor.prototype.foo = 1; - Object.freeze(Constructor.prototype); - var obj = new Constructor(); - obj.foo = 2; - assertSame(1, obj.foo); -})(); - - -(function frozenFunctionSloppy() { - // Check that freezing a function works correctly. - var func = Object.freeze(function foo(){}); - assertTrue(Object.isFrozen(func)); - func.prototype = 42; - assertFalse(func.prototype === 42); - assertFalse(Object.getOwnPropertyDescriptor(func, "prototype").writable); -})(); - - -(function frozenFunctionStrict() { - // Check that freezing a strict function works correctly. - var func = Object.freeze(function foo(){ "use strict"; }); - assertTrue(Object.isFrozen(func)); - func.prototype = 42; - assertFalse(func.prototype === 42); - assertFalse(Object.getOwnPropertyDescriptor(func, "prototype").writable); -})(); - - -(function frozenArrayObject() { - // Check that freezing array objects works correctly. - var array = Object.freeze([0,1,2]); - assertTrue(Object.isFrozen(array)); - array[0] = 3; - assertEquals(0, array[0]); - assertFalse(Object.getOwnPropertyDescriptor(array, "length").writable); -})(); - - -(function frozenArgumentsObject() { - // Check that freezing arguments objects works correctly. - var args = Object.freeze((function(){ return arguments; })(0,1,2)); - assertTrue(Object.isFrozen(args)); - args[0] = 3; - assertEquals(0, args[0]); - assertFalse(Object.getOwnPropertyDescriptor(args, "length").writable); - assertFalse(Object.getOwnPropertyDescriptor(args, "callee").writable); -})(); diff --git a/implementation-contributed/v8/mjsunit/object-get-own-property-names.js b/implementation-contributed/v8/mjsunit/object-get-own-property-names.js deleted file mode 100644 index aee6585680b..00000000000 --- a/implementation-contributed/v8/mjsunit/object-get-own-property-names.js +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test ES5 section 15.2.3.4 Object.getOwnPropertyNames. - -// Check simple cases. -var obj = { a: 1, b: 2}; -var propertyNames = Object.getOwnPropertyNames(obj); -propertyNames.sort(); -assertEquals(2, propertyNames.length); -assertEquals("a", propertyNames[0]); -assertEquals("b", propertyNames[1]); - -var obj = { a: function(){}, b: function(){} }; -var propertyNames = Object.getOwnPropertyNames(obj); -propertyNames.sort(); -assertEquals(2, propertyNames.length); -assertEquals("a", propertyNames[0]); -assertEquals("b", propertyNames[1]); - -// Check slow case -var obj = { a: 1, b: 2, c: 3 }; -delete obj.b; -var propertyNames = Object.getOwnPropertyNames(obj) -propertyNames.sort(); -assertEquals(2, propertyNames.length); -assertEquals("a", propertyNames[0]); -assertEquals("c", propertyNames[1]); - -// Check that non-enumerable properties are being returned. -var propertyNames = Object.getOwnPropertyNames([1, 2]); -propertyNames.sort(); -assertEquals(3, propertyNames.length); -assertEquals("0", propertyNames[0]); -assertEquals("1", propertyNames[1]); -assertEquals("string", typeof propertyNames[0]); -assertEquals("string", typeof propertyNames[1]); -assertEquals("length", propertyNames[2]); - -// Check that no proto properties are returned. -var obj = { foo: "foo" }; -obj.__proto__ = { bar: "bar" }; -propertyNames = Object.getOwnPropertyNames(obj); -propertyNames.sort(); -assertEquals(1, propertyNames.length); -assertEquals("foo", propertyNames[0]); - -// Check that getter properties are returned. -var obj = {}; -obj.__defineGetter__("getter", function() {}); -propertyNames = Object.getOwnPropertyNames(obj); -propertyNames.sort(); -assertEquals(1, propertyNames.length); -assertEquals("getter", propertyNames[0]); - -// Check that implementation does not access Array.prototype. -var savedConcat = Array.prototype.concat; -Array.prototype.concat = function() { return []; } -propertyNames = Object.getOwnPropertyNames({0: 'foo', bar: 'baz'}); -assertEquals(2, propertyNames.length); -assertEquals('0', propertyNames[0]); -assertEquals('bar', propertyNames[1]); -assertSame(Array.prototype, propertyNames.__proto__); -Array.prototype.concat = savedConcat; - -assertEquals(Object.getOwnPropertyNames(4), []); -assertEquals(Object.getOwnPropertyNames("foo"), ["0", "1", "2", "length"]); -assertEquals(Object.getOwnPropertyNames(true), []); - -try { - Object.getOwnPropertyNames(undefined); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot convert undefined or null to object/.test(e)); -} - -try { - Object.getOwnPropertyNames(null); - assertTrue(false); -} catch (e) { - assertTrue(/Cannot convert undefined or null to object/.test(e)); -} diff --git a/implementation-contributed/v8/mjsunit/object-is.js b/implementation-contributed/v8/mjsunit/object-is.js deleted file mode 100644 index c57542f4780..00000000000 --- a/implementation-contributed/v8/mjsunit/object-is.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test both the Harmony egal operator and it's function equivalent. - -function TestEgal(expected, x, y) { - // TODO(mstarzinger): Once we have the egal operator, we can test it here. - assertSame(expected, Object.is(x, y)); -} - -var test_set = [ {}, [], Infinity, -Infinity, "s", "ア", 0, 0/-1, null, - undefined, true, false, Symbol("foo"), NaN ]; -for (var i = 0; i < test_set.length; i++) { - for (var j = 0; j < test_set.length; j++) { - if (i == j) { - assertSame(test_set[i], test_set[j]); - TestEgal(true, test_set[i], test_set[j]); - } else { - TestEgal(false, test_set[i], test_set[j]); - TestEgal(false, test_set[j], test_set[i]); - } - } -} diff --git a/implementation-contributed/v8/mjsunit/object-keys.js b/implementation-contributed/v8/mjsunit/object-keys.js deleted file mode 100644 index d20556c9057..00000000000 --- a/implementation-contributed/v8/mjsunit/object-keys.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Ensure that mutation of the Object.keys result doesn't affect the -// enumeration cache for fast-mode objects. -(function() { - const a = {x:1, y:2}; - let k = Object.keys(a); - %HeapObjectVerify(k); - assertEquals(2, k.length); - assertEquals("x", k[0]); - assertEquals("y", k[1]); - k[0] = "y"; - k[1] = "x"; - k = Object.keys(a); - assertEquals(2, k.length); - assertEquals("x", k[0]); - assertEquals("y", k[1]); -})(); - -// Ensure that the copy-on-write keys are handled properly, even in -// the presence of Symbols. -(function() { - const s = Symbol(); - const a = {[s]: 1}; - let k = Object.keys(a); - %HeapObjectVerify(k); - assertEquals(0, k.length); - k.shift(); - assertEquals(0, k.length); -})(); - -// Ensure we invoke all steps on proxies. -(function ObjectKeysProxy() { - let log = []; - let result = Object.keys(new Proxy({}, { - ownKeys(target) { - log.push('ownKeys'); - return ['a', 'b', 'c']; - }, - getOwnPropertyDescriptor(target, key) { - log.push('getOwnPropertyDescriptor-' + key); - if (key === 'b') return {enumerable: false, configurable: true}; - return {enumerable: true, configurable: true}; - } - })); - assertEquals(['a', 'c'], result); - assertEquals( - [ - 'ownKeys', 'getOwnPropertyDescriptor-a', 'getOwnPropertyDescriptor-b', - 'getOwnPropertyDescriptor-c' - ], - log); - - // Test normal target. - log = []; - let target = {a: 1, b: 1, c: 1}; - let handler = { - getOwnPropertyDescriptor(target, key) { - log.push('getOwnPropertyDescriptor-' + key); - if (key === 'b') return {enumerable: false, configurable: true}; - return {enumerable: true, configurable: true}; - } - }; - result = Object.keys(new Proxy(target, handler)); - assertEquals(['a', 'c'], result); - assertEquals( - [ - 'getOwnPropertyDescriptor-a', 'getOwnPropertyDescriptor-b', - 'getOwnPropertyDescriptor-c' - ], - log); - - // Test trap invocation with non-enumerable target properties. - log = []; - target = Object.create(Object.prototype, { - a: {enumerable: true, configurable: true}, - b: {enumerable: false, configurable: true}, - c: {enumerable: true, configurable: true} - }); - result = Object.keys(new Proxy(target, handler)); - assertEquals(['a', 'c'], result); - assertEquals( - [ - 'getOwnPropertyDescriptor-a', 'getOwnPropertyDescriptor-b', - 'getOwnPropertyDescriptor-c' - ], - log); -})(); diff --git a/implementation-contributed/v8/mjsunit/object-literal-conversions.js b/implementation-contributed/v8/mjsunit/object-literal-conversions.js deleted file mode 100644 index 7db2cf519c7..00000000000 --- a/implementation-contributed/v8/mjsunit/object-literal-conversions.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the various conversions between property names are correctly -// used when overwriting initializers. - -var test1 = { 13: 6, "13": 7 }; -var test2 = { 13: 7, "13.0": 6 }; -var test3 = { "13": 6, 13.0000000000000000: 7 }; -var test4 = { 13.213000: 6, "13.213": 7 }; - -assertEquals(7, test1[13]); -assertEquals(7, test2[13]); -assertEquals(7, test3[13]); -assertEquals(7, test4[13.213]); - -var test5 = { 13: function() {}, "13": 7 }; -var test6 = { 17.31: function() {}, "17.31": 7 }; - -assertEquals(7, test5[13]); -assertEquals(7, test6[17.31]); diff --git a/implementation-contributed/v8/mjsunit/object-literal-gc.js b/implementation-contributed/v8/mjsunit/object-literal-gc.js deleted file mode 100644 index ddbeef635b0..00000000000 --- a/implementation-contributed/v8/mjsunit/object-literal-gc.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Test that the clearing of object literal when normalizing objects -// works. In particular, test that the garbage collector handles the -// normalized object literals correctly. -function testLiteral(size) { - - // Build object-literal string. - var literal = "var o = { "; - - for (var i = 0; i < size; i++) { - if (i > 0) literal += ","; - literal += ("a" + i + ":" + i); - } - literal += "}"; - - // Create the object literal. - eval(literal); - - // Force normalization of the properties. - delete o["a" + (size - 1)]; - - // Perform GC. - gc(); - - // Check that the properties have the expected values. - for (var i = 0; i < size - 1; i++) { - assertEquals(i, o["a"+i]); - } -} - -// The sizes to test. -var sizes = [0, 1, 2, 100, 200, 400, 1000]; - -// Run the test. -for (var i = 0; i < sizes.length; i++) { - testLiteral(sizes[i]); -} diff --git a/implementation-contributed/v8/mjsunit/object-literal-modified-object-prototype.js b/implementation-contributed/v8/mjsunit/object-literal-modified-object-prototype.js deleted file mode 100644 index 1bf7d3d36c5..00000000000 --- a/implementation-contributed/v8/mjsunit/object-literal-modified-object-prototype.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestModifedPrototypeInObjectLiteral() { - // The prototype chain should not be used if the definition - // happens in the object literal. - - Object.defineProperty(Object.prototype, 'c', { - get: function () { - return 21; - }, - set: function () { - } - }); - - var o = {}; - o.c = 7; - assertEquals(21, o.c); - - var l = {c: 7}; - assertEquals(7, l.c); - - delete Object.prototype.c; -})(); diff --git a/implementation-contributed/v8/mjsunit/object-literal-multiple-fields.js b/implementation-contributed/v8/mjsunit/object-literal-multiple-fields.js deleted file mode 100644 index f36d14d0742..00000000000 --- a/implementation-contributed/v8/mjsunit/object-literal-multiple-fields.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestConstants() { - var o = { - p: 1, - p: 2, - }; - assertEquals(2, o.p); -})(); - - -(function TestMaterialized() { - var o = { - p: [1], - p: [2], - }; - assertEquals(2, o.p[0]); -})(); - - -(function TestMaterialize2() { - var o = { - p: function() {}, - p: 2, - }; - assertEquals(2, o.p); -})(); - - - -(function TestComputed() { - var o = { - p: (function() { return 1; })(), - p: (function() { return 2; })(), - }; - assertEquals(2, o.p); -})(); - - -(function TestComputed2() { - var o = { - p: (function() { return 1; })(), - p: 2, - }; - assertEquals(2, o.p); -})(); - - - -(function TestGetter() { - var o = { - get p() { return 1; }, - get p() { return 2; }, - }; - assertEquals(2, o.p); -})(); - - -(function TestGetterSetter() { - var o = { - get p() { return 1; }, - set p(_) {}, - }; - assertEquals(1, o.p); - - o = { - set p(_) {}, - get p() { return 2; }, - }; - assertEquals(2, o.p); -})(); - - -(function TestCombined() { - var o = { - get p() { return 1; }, - p: 2, - }; - assertEquals(2, o.p); - - o = { - get p() { return 1; }, - p: 2, - get p() { return 3; }, - }; - assertEquals(3, o.p); - - o = { - get p() { return 1; }, - p: 2, - set p(_) {}, - }; - assertEquals(undefined, o.p); -})(); diff --git a/implementation-contributed/v8/mjsunit/object-literal-multiple-proto-fields.js b/implementation-contributed/v8/mjsunit/object-literal-multiple-proto-fields.js deleted file mode 100644 index 1ab608bde2c..00000000000 --- a/implementation-contributed/v8/mjsunit/object-literal-multiple-proto-fields.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var p1 = {}; -var p2 = {}; -var p3 = {}; -var x = 0; -var y = 1; -var z = 2; -var o = 3; -assertThrows( - 'o = {' + - ' __proto__: (x++, p1),' + - ' __proto__: (y++, p2),' + - ' __proto__: (z++, p3)' + - '};', SyntaxError); -assertEquals(0, x); -assertEquals(1, y); -assertEquals(2, z); -assertEquals(3, o); diff --git a/implementation-contributed/v8/mjsunit/object-literal-overwrite.js b/implementation-contributed/v8/mjsunit/object-literal-overwrite.js deleted file mode 100644 index 4d19d35d12b..00000000000 --- a/implementation-contributed/v8/mjsunit/object-literal-overwrite.js +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Check that constants and computed properties are overwriting each other -// correctly, i.e., the last initializer for any name is stored in the object. - - -// Tests for the full code generator (if active). - -var foo1 = { - bar: 6, - bar: 7 -}; - -var foo2 = { - bar: function(a){}, - bar: 7 -}; - -var foo3 = { - bar: function(a){}, - bar: function(b){}, - bar: 7 -}; - -var foo4 = { - bar: function(b){}, - bar: 4, - bar: function(){return 7}, -}; - -var foo5 = { - 13: function(a){}, - 13: 7 -} - -var foo6 = { - 14.31: function(a){}, - 14.31: 7 -} - -var foo7 = { - 15: 6, - 15: 7 -} - -function foo8(i) { - var obj = { - x: {a: i}, - x: 7 - }; - return obj.x; -}; - -assertEquals(7, foo1.bar); -assertEquals(7, foo2.bar); -assertEquals(7, foo3.bar); -assertEquals(7, foo4.bar()); -assertEquals(7, foo5[13]); -assertEquals(7, foo6[14.31]); -assertEquals(7, foo7[15]); - -assertEquals(7, foo8(1)); -assertEquals(7, foo8(1)); -%OptimizeFunctionOnNextCall(foo8); -assertEquals(7, foo8(1)); - - -// Test for the classic code generator. - -function fun(x) { - var inner = { j: function(x) { return x; }, j: 7 }; - return inner.j; -} - -assertEquals(7, fun(7) ); - -// Check that the initializers of computed properties are executed, even if -// no store instructions are generated for the literals. - -var glob1 = 0; - -var bar1 = { x: glob1++, x: glob1++, x: glob1++, x: 7}; - -assertEquals(3, glob1); - - -var glob2 = 0; - -function fun2() { - var r = { y: glob2++, y: glob2++, y: glob2++, y: 7}; - return r.y; -} - -var y = fun2(); -assertEquals(7, y); -assertEquals(3, glob2); - -var glob3 = 0; - -function fun3() { - var r = { 113: glob3++, 113: glob3++, 113: glob3++, 113: 7}; - return r[113]; -} - -var y = fun3(); -assertEquals(7, y); -assertEquals(3, glob3); diff --git a/implementation-contributed/v8/mjsunit/object-literal.js b/implementation-contributed/v8/mjsunit/object-literal.js deleted file mode 100644 index cbc4f5de930..00000000000 --- a/implementation-contributed/v8/mjsunit/object-literal.js +++ /dev/null @@ -1,1568 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function runLiteralsTest(fn) { - // The first run creates an copy directly from the boilerplate decsription. - fn(); - // The second run will create the boilerplate. - fn(); - // The third run might copy literals directly in the stub. - fn(); - // Several invocations more to trigger potential map deprecations. - fn(); - fn(); - fn(); - // Make sure literals keep on workin in optimized code. - %OptimizeFunctionOnNextCall(fn); - fn(); -} - - -runLiteralsTest(function testEmptyObjectLiteral() { - let object = {}; - assertTrue(%HasFastProperties(object)); - assertTrue(%HasObjectElements(object )); - assertTrue(%HasHoleyElements(object)); - assertEquals([], Object.keys(object)); -}); - -runLiteralsTest(function testSingleGetter() { - let object = { get foo() { return 1 } }; - // For now getters create dict mode objects. - assertFalse(%HasFastProperties(object)); - assertTrue(%HasObjectElements(object )); - assertTrue(%HasHoleyElements(object)); - assertEquals(['foo'], Object.keys(object)); -}); - -runLiteralsTest(function testBasicPrototype() { - var obj = { - a: 7, - b: { x: 12, y: 24 }, - c: 'Zebra' - } - - assertEquals(7, obj.a); - assertEquals(12, obj.b.x); - assertEquals(24, obj.b.y); - assertEquals('Zebra', obj.c); - assertEquals(Object.getPrototypeOf(obj), Object.prototype); - assertEquals(Object.getPrototypeOf(obj.b), Object.prototype); -}); - -runLiteralsTest(function testDynamicValue() { - var z = 24; - - var obj2 = { - a: 7, - b: { x: 12, y: z }, - c: 'Zebra' - } - - assertEquals(7, obj2.a); - assertEquals(12, obj2.b.x); - assertEquals(24, obj2.b.y); - assertEquals('Zebra', obj2.c); -}); - -runLiteralsTest(function testMultipleInstatiations() { - var arr = []; - for (var i = 0; i < 2; i++) { - arr[i] = { - a: 7, - b: { x: 12, y: 24 }, - c: 'Zebra' - } - } - - arr[0].b.x = 2; - assertEquals(2, arr[0].b.x); - assertEquals(12, arr[1].b.x); -}); - - -runLiteralsTest(function TestSparseElements() { - function createSparseElements() { - let sa1 = { - '0': { x: 12, y: 24 }, - '1000000': { x: 1, y: 2 } - }; - %HeapObjectVerify(sa1); - assertEquals(['0', '1000000'], Object.keys(sa1)); - assertEquals(12, sa1[0].x); - assertEquals(24, sa1[0].y); - assertEquals(['x', 'y'], Object.keys(sa1[0])); - assertEquals(1, sa1[1000000].x); - assertEquals(2, sa1[1000000].y); - assertEquals(['x', 'y'], Object.keys(sa1[1000000])); - assertEquals(Object.prototype, Object.getPrototypeOf(sa1)); - assertEquals(Object.prototype, Object.getPrototypeOf(sa1[0])); - assertEquals(Object.prototype, Object.getPrototypeOf(sa1[1000000])); - return sa1; - } - - let object = createSparseElements(); - // modify the object and rerun the test, ensuring the literal didn't change. - object[1] = "a"; - object[0].x = -12; - createSparseElements(); -}); - -runLiteralsTest(function TestNonConstLiterals() { - // Test that non-constant literals work. - var n = new Object(); - - function makeNonConstantArray() { return [ [ n ] ]; } - - var a = makeNonConstantArray(); - var b = makeNonConstantArray(); - assertTrue(a[0][0] === n); - assertTrue(b[0][0] === n); - assertFalse(a[0] === b[0]); - a[0][0].foo = "bar"; - assertEquals("bar", n.foo); - - function makeNonConstantObject() { return { a: { b: n } }; } - - a = makeNonConstantObject(); - b = makeNonConstantObject(); - assertFalse(a.a === b.a); - assertTrue(a.a.b === b.a.b); - a.a.b.bar = "foo"; - assertEquals("foo", n.bar); -}); - -runLiteralsTest(function TestRegexpInArray() { - // Test that exceptions for regexps still hold. - function makeRegexpInArray() { return [ [ /a*/, {} ] ]; } - - let a = makeRegexpInArray(); - let b = makeRegexpInArray(); - assertFalse(a[0][0] === b[0][0]); - assertFalse(a[0][1] === b[0][1]); - assertEquals(Array.prototype, Object.getPrototypeOf(a)); - assertEquals(Array.prototype, Object.getPrototypeOf(b)); - assertEquals(Array.prototype, Object.getPrototypeOf(a[0])); - assertEquals(Array.prototype, Object.getPrototypeOf(b[0])); - assertEquals(RegExp.prototype, Object.getPrototypeOf(a[0][0])); - assertEquals(RegExp.prototype, Object.getPrototypeOf(b[0][0])); -}); - -runLiteralsTest(function TestRegexpInObject() { - function makeRegexpInObject() { return { a: { b: /b*/, c: {} } }; } - let a = makeRegexpInObject(); - let b = makeRegexpInObject(); - assertFalse(a.a.b === b.a.b); - assertFalse(a.a.c === b.a.c); - assertEquals(RegExp.prototype, Object.getPrototypeOf(a.a.b)); - assertEquals(RegExp.prototype, Object.getPrototypeOf(b.a.b)); -}); - -runLiteralsTest(function TestKeywordProperties() { - // Test keywords are valid as property names in initializers and dot-access. - var keywords = [ - "break", - "case", - "catch", - "const", - "continue", - "debugger", - "default", - "delete", - "do", - "else", - "false", - "finally", - "for", - "function", - "if", - "in", - "instanceof", - "new", - "null", - "return", - "switch", - "this", - "throw", - "true", - "try", - "typeof", - "var", - "void", - "while", - "with" - ]; - - function testKeywordProperty(keyword) { - var exception = false; - try { - // Sanity check that what we get is a keyword. - eval("var " + keyword + " = 42;"); - } catch (e) { - exception = true; - } - assertTrue(exception); - - // Simple property, read and write. - var x = eval("({" + keyword + ": 42})"); - assertEquals(42, x[keyword]); - assertEquals(42, eval("x." + keyword)); - eval("x." + keyword + " = 37"); - assertEquals(37, x[keyword]); - assertEquals(37, eval("x." + keyword)); - - // Getter/setter property, read and write. - var y = eval("({value : 42, get " + keyword + "(){return this.value}," + - " set " + keyword + "(v) { this.value = v; }})"); - assertEquals(42, y[keyword]); - assertEquals(42, eval("y." + keyword)); - eval("y." + keyword + " = 37"); - assertEquals(37, y[keyword]); - assertEquals(37, eval("y." + keyword)); - - // Quoted keyword works is read back by unquoted as well. - var z = eval("({\"" + keyword + "\": 42})"); - assertEquals(42, z[keyword]); - assertEquals(42, eval("z." + keyword)); - - // Function property, called. - var was_called; - function test_call() { this.was_called = true; was_called = true; } - var w = eval("({" + keyword + ": test_call, was_called: false})"); - eval("w." + keyword + "();"); - assertTrue(was_called); - assertTrue(w.was_called); - - // Function property, constructed. - function construct() { this.constructed = true; } - var v = eval("({" + keyword + ": construct})"); - var vo = eval("new v." + keyword + "()"); - assertTrue(vo instanceof construct); - assertTrue(vo.constructed); - } - - for (var i = 0; i < keywords.length; i++) { - testKeywordProperty(keywords[i]); - } -}); - -runLiteralsTest(function TestSimpleElements() { - var o = { 0:"zero", 1:"one", 2:"two" }; - assertEquals({0:"zero", 1:"one", 2:"two"}, o); - o[0] = 0; - assertEquals({0:0, 1:"one", 2:"two"}, o); -}); - -runLiteralsTest(function TestNumericNames() { - var o = { - 1: 1, - 2.: 2, - 3.0: 3, - 4e0: 4, - 5E0: 5, - 6e-0: 6, - 7E-0: 7, - 0x8: 8, - 0X9: 9, - }; - %HeapObjectVerify(o); - assertEquals(['1', '2', '3', '4', '5', '6', '7', '8', '9'], Object.keys(o)); - - o = { - 1.2: 1.2, - 1.30: 1.3 - }; - %HeapObjectVerify(o); - assertEquals(['1.2', '1.3'], Object.keys(o)); -}); - -runLiteralsTest(function TestDictionaryElements() { - let o = {1024: true}; - assertTrue(%HasDictionaryElements(o)); - assertEquals(true, o[1024]); - assertEquals(["1024"], Object.keys(o)); - assertEquals([true], Object.values(o)); - %HeapObjectVerify(o); - o[1024] = "test"; - assertEquals(["test"], Object.values(o)); - - let o2 = {1024: 1024}; - assertTrue(%HasDictionaryElements(o2)); - assertEquals(1024, o2[1024]); - assertEquals(["1024"], Object.keys(o2)); - assertEquals([1024], Object.values(o2)); - %HeapObjectVerify(o2); - o2[1024] = "test"; - assertEquals(["test"], Object.values(o2)); -}); - -runLiteralsTest(function TestLiteralElementsKind() { - let o = {0:0, 1:1, 2:2}; - assertTrue(%HasObjectElements(o)); - assertTrue(%HasHoleyElements(o)); - o = {0:0, 2:2}; - assertTrue(%HasObjectElements(o)); - assertTrue(%HasHoleyElements(o)); - - o = {0:0.1, 1:1, 2:2}; - assertTrue(%HasObjectElements(o)); - assertTrue(%HasHoleyElements(o)); - o = {0:0.1, 2:2}; - assertTrue(%HasObjectElements(o)); - assertTrue(%HasHoleyElements(o)); - - o = {0:0.1, 1:1, 2:true}; - assertTrue(%HasObjectElements(o)); - assertTrue(%HasHoleyElements(o)); - o = {0:0.1, 2:true}; - assertTrue(%HasObjectElements(o)); - assertTrue(%HasHoleyElements(o)); - - assertTrue(%HasDictionaryElements({0xFFFFFF:true})); -}); - -runLiteralsTest(function TestNonNumberElementValues() { - var o = { - 1: true, - 2: false, - 3: undefined, - 4: "" - }; - %HeapObjectVerify(o); - assertEquals(['1', '2', '3', '4'], Object.keys(o)); - assertEquals([true, false, undefined, ""], Object.values(o)); - o[1] = 'a'; - o[2] = 'b'; - assertEquals(['1', '2', '3', '4'], Object.keys(o)); - assertEquals(['a', 'b', undefined, ""], Object.values(o)); - - var o2 = { - 1: true, - 2: false, - 3: undefined, - 4: "", - a: 'a', - b: 'b' - }; - %HeapObjectVerify(o2); - assertEquals(['1', '2', '3', '4', 'a', 'b'], Object.keys(o2)); - assertEquals([true, false, undefined, "", 'a', 'b'], Object.values(o2)); - o2[1] = 'a'; - o2[2] = 'b'; - assertEquals(['1', '2', '3', '4', 'a', 'b'], Object.keys(o2)); - assertEquals(['a', 'b', undefined, "", 'a', 'b'], Object.values(o2)); - - var o3 = { - __proto__:null, - 1: true, - 2: false, - 3: undefined, - 4: "" - }; - %HeapObjectVerify(o3); - assertEquals(['1', '2', '3', '4'], Object.keys(o3)); - - var o4 = { - __proto__:null, - 1: true, - 2: false, - 3: undefined, - 4: "", - a: 'a', - b: 'b' - }; - %HeapObjectVerify(o4); - assertEquals(['1', '2', '3', '4', 'a', 'b'], Object.keys(o4)); -}) - - -runLiteralsTest(function numericGetters() { - function TestNumericNamesGetter(expectedKeys, object) { - assertEquals(expectedKeys, Object.keys(object)); - expectedKeys.forEach(function(key) { - var descr = Object.getOwnPropertyDescriptor(object, key); - assertEquals('get ' + key, descr.get.name); - }); - } - TestNumericNamesGetter(['1', '2', '3', '4', '5', '6', '7', '8', '9'], { - get 1() {}, - get 2.() {}, - get 3.0() {}, - get 4e0() {}, - get 5E0() {}, - get 6e-0() {}, - get 7E-0() {}, - get 0x8() {}, - get 0X9() {}, - }); - TestNumericNamesGetter(['1.2', '1.3'], { - get 1.2() {}, - get 1.30() {} - }); -}); - -runLiteralsTest(function numericSetters() { - function TestNumericNamesSetter(expectedKeys, object) { - assertEquals(expectedKeys, Object.keys(object)); - expectedKeys.forEach(function(key) { - var descr = Object.getOwnPropertyDescriptor(object, key); - assertEquals('set ' + key, descr.set.name); - }); - } - TestNumericNamesSetter(['1', '2', '3', '4', '5', '6', '7', '8', '9'], { - set 1(_) {}, - set 2.(_) {}, - set 3.0(_) {}, - set 4e0(_) {}, - set 5E0(_) {}, - set 6e-0(_) {}, - set 7E-0(_) {}, - set 0x8(_) {}, - set 0X9(_) {}, - }); - TestNumericNamesSetter(['1.2', '1.3'], { - set 1.2(_) {; }, - set 1.30(_) {; } - }); -}); - - -runLiteralsTest(function TestProxyWithDefinitionInObjectLiteral() { - // Trap for set should not be used if the definition - // happens in the object literal. - var handler = { - set: function(target, name, value) { - } - }; - - const prop = 'a'; - - var p = new Proxy({}, handler); - p[prop] = 'my value'; - assertEquals(undefined, p[prop]); - - - var l = new Proxy({[prop]: 'my value'}, handler); - assertEquals('my value', l[prop]); -}); - -runLiteralsTest(function TestLiteralWithNullProto() { - // Assume dictionary usage for simple null prototype literal objects, - // this is equivalent to Object.create(null). Note that on the first call - // the literal boilerplate is initialized, and from then on we use a the - // fast clone stub. - function testDictModeNullProtoLiteral(fn) { - let obj = fn(); - assertFalse(%HasFastProperties(obj)); - assertEquals(Object.getPrototypeOf(obj), null); - let next = fn(); - assertFalse(obj === next); - obj = next; - assertFalse(%HasFastProperties(obj)); - assertEquals(Object.getPrototypeOf(obj), null); - next = fn(); - assertFalse(obj === next); - obj = next; - assertFalse(%HasFastProperties(obj)); - assertEquals(Object.getPrototypeOf(obj), null); - } - testDictModeNullProtoLiteral(() => ({__proto__:null})); - testDictModeNullProtoLiteral(() => ({__proto__:null, a:1, b:2})); - testDictModeNullProtoLiteral(() => ({__proto__: null, ["a"]: 1})); - testDictModeNullProtoLiteral(() => ({__proto__: null, a: Object})); - testDictModeNullProtoLiteral(() => ({a:1, b:2, __proto__:null})); - testDictModeNullProtoLiteral(() => ({["a"]: 1, __proto__: null})); - testDictModeNullProtoLiteral(() => ({a: Object, __proto__: null})); -}); - -runLiteralsTest(function testNestedNullProtoLiteral() { - let obj; - obj = { foo: { __proto__:Math, bar:"barValue"}}; - assertTrue(%HasFastProperties(obj)); - assertTrue(%HasFastProperties(obj.foo)); - assertEquals(Object.prototype, Object.getPrototypeOf(obj)); - assertEquals(Math, Object.getPrototypeOf(obj.foo)); - assertEquals(["foo"], Object.keys(obj)); - assertEquals(["bar"], Object.keys(obj.foo)); - assertEquals("barValue", obj.foo.bar); - obj.foo.bar = "barValue2"; - assertEquals("barValue2", obj.foo.bar); - - obj = { foo: { __proto__:null, bar:"barValue"}}; - assertTrue(%HasFastProperties(obj)); - assertFalse(%HasFastProperties(obj.foo)); - assertEquals(Object.prototype, Object.getPrototypeOf(obj)); - assertEquals(null, Object.getPrototypeOf(obj.foo)); - assertEquals(["foo"], Object.keys(obj)); - assertEquals(["bar"], Object.keys(obj.foo)); - assertEquals("barValue", obj.foo.bar); - obj.foo.bar = "barValue2"; - assertEquals("barValue2", obj.foo.bar); -}); - - -runLiteralsTest(function TestSlowLiteralOptimized() { - function f() { - return {__proto__:null, bar:"barValue"}; - } - let obj = f(); - assertFalse(%HasFastProperties(obj)); - assertEquals(Object.getPrototypeOf(obj), null); - assertEquals(["bar"], Object.keys(obj)); - assertEquals("barValue", obj.bar); - obj.bar = "barValue2"; - assertEquals("barValue2", obj.bar); - - %OptimizeFunctionOnNextCall(f); - obj = f(); - assertFalse(%HasFastProperties(obj)); - assertEquals(Object.getPrototypeOf(obj), null); - assertEquals(["bar"], Object.keys(obj)); - assertEquals("barValue", obj.bar); - obj.bar = "barValue2"; - assertEquals("barValue2", obj.bar); -}); - -runLiteralsTest(function TestLargeDictionaryLiteral() { - // Create potential large-space object literal. - function createObject() { - // This literal has least kMaxRegularHeapObjectSize / 64 number of - // properties, forcing the backing store to be in large object space. - return { __proto__:null, - p1:'',p2:'',p3:'',p4:'',p5:'',p6:'',p7:'',p8:'', - p9:'',pa:'',pb:'',pc:'',pd:'',pe:'',pf:'',p10:'', - p11:'',p12:'',p13:'',p14:'',p15:'',p16:'',p17:'',p18:'', - p19:'',p1a:'',p1b:'',p1c:'',p1d:'',p1e:'',p1f:'',p20:'', - p21:'',p22:'',p23:'',p24:'',p25:'',p26:'',p27:'',p28:'', - p29:'',p2a:'',p2b:'',p2c:'',p2d:'',p2e:'',p2f:'',p30:'', - p31:'',p32:'',p33:'',p34:'',p35:'',p36:'',p37:'',p38:'', - p39:'',p3a:'',p3b:'',p3c:'',p3d:'',p3e:'',p3f:'',p40:'', - p41:'',p42:'',p43:'',p44:'',p45:'',p46:'',p47:'',p48:'', - p49:'',p4a:'',p4b:'',p4c:'',p4d:'',p4e:'',p4f:'',p50:'', - p51:'',p52:'',p53:'',p54:'',p55:'',p56:'',p57:'',p58:'', - p59:'',p5a:'',p5b:'',p5c:'',p5d:'',p5e:'',p5f:'',p60:'', - p61:'',p62:'',p63:'',p64:'',p65:'',p66:'',p67:'',p68:'', - p69:'',p6a:'',p6b:'',p6c:'',p6d:'',p6e:'',p6f:'',p70:'', - p71:'',p72:'',p73:'',p74:'',p75:'',p76:'',p77:'',p78:'', - p79:'',p7a:'',p7b:'',p7c:'',p7d:'',p7e:'',p7f:'',p80:'', - p81:'',p82:'',p83:'',p84:'',p85:'',p86:'',p87:'',p88:'', - p89:'',p8a:'',p8b:'',p8c:'',p8d:'',p8e:'',p8f:'',p90:'', - p91:'',p92:'',p93:'',p94:'',p95:'',p96:'',p97:'',p98:'', - p99:'',p9a:'',p9b:'',p9c:'',p9d:'',p9e:'',p9f:'',pa0:'', - pa1:'',pa2:'',pa3:'',pa4:'',pa5:'',pa6:'',pa7:'',pa8:'', - pa9:'',paa:'',pab:'',pac:'',pad:'',pae:'',paf:'',pb0:'', - pb1:'',pb2:'',pb3:'',pb4:'',pb5:'',pb6:'',pb7:'',pb8:'', - pb9:'',pba:'',pbb:'',pbc:'',pbd:'',pbe:'',pbf:'',pc0:'', - pc1:'',pc2:'',pc3:'',pc4:'',pc5:'',pc6:'',pc7:'',pc8:'', - pc9:'',pca:'',pcb:'',pcc:'',pcd:'',pce:'',pcf:'',pd0:'', - pd1:'',pd2:'',pd3:'',pd4:'',pd5:'',pd6:'',pd7:'',pd8:'', - pd9:'',pda:'',pdb:'',pdc:'',pdd:'',pde:'',pdf:'',pe0:'', - pe1:'',pe2:'',pe3:'',pe4:'',pe5:'',pe6:'',pe7:'',pe8:'', - pe9:'',pea:'',peb:'',pec:'',ped:'',pee:'',pef:'',pf0:'', - pf1:'',pf2:'',pf3:'',pf4:'',pf5:'',pf6:'',pf7:'',pf8:'', - pf9:'',pfa:'',pfb:'',pfc:'',pfd:'',pfe:'',pff:'',p100:'', - p101:'',p102:'',p103:'',p104:'',p105:'',p106:'',p107:'',p108:'', - p109:'',p10a:'',p10b:'',p10c:'',p10d:'',p10e:'',p10f:'',p110:'', - p111:'',p112:'',p113:'',p114:'',p115:'',p116:'',p117:'',p118:'', - p119:'',p11a:'',p11b:'',p11c:'',p11d:'',p11e:'',p11f:'',p120:'', - p121:'',p122:'',p123:'',p124:'',p125:'',p126:'',p127:'',p128:'', - p129:'',p12a:'',p12b:'',p12c:'',p12d:'',p12e:'',p12f:'',p130:'', - p131:'',p132:'',p133:'',p134:'',p135:'',p136:'',p137:'',p138:'', - p139:'',p13a:'',p13b:'',p13c:'',p13d:'',p13e:'',p13f:'',p140:'', - p141:'',p142:'',p143:'',p144:'',p145:'',p146:'',p147:'',p148:'', - p149:'',p14a:'',p14b:'',p14c:'',p14d:'',p14e:'',p14f:'',p150:'', - p151:'',p152:'',p153:'',p154:'',p155:'',p156:'',p157:'',p158:'', - p159:'',p15a:'',p15b:'',p15c:'',p15d:'',p15e:'',p15f:'',p160:'', - p161:'',p162:'',p163:'',p164:'',p165:'',p166:'',p167:'',p168:'', - p169:'',p16a:'',p16b:'',p16c:'',p16d:'',p16e:'',p16f:'',p170:'', - p171:'',p172:'',p173:'',p174:'',p175:'',p176:'',p177:'',p178:'', - p179:'',p17a:'',p17b:'',p17c:'',p17d:'',p17e:'',p17f:'',p180:'', - p181:'',p182:'',p183:'',p184:'',p185:'',p186:'',p187:'',p188:'', - p189:'',p18a:'',p18b:'',p18c:'',p18d:'',p18e:'',p18f:'',p190:'', - p191:'',p192:'',p193:'',p194:'',p195:'',p196:'',p197:'',p198:'', - p199:'',p19a:'',p19b:'',p19c:'',p19d:'',p19e:'',p19f:'',p1a0:'', - p1a1:'',p1a2:'',p1a3:'',p1a4:'',p1a5:'',p1a6:'',p1a7:'',p1a8:'', - p1a9:'',p1aa:'',p1ab:'',p1ac:'',p1ad:'',p1ae:'',p1af:'',p1b0:'', - p1b1:'',p1b2:'',p1b3:'',p1b4:'',p1b5:'',p1b6:'',p1b7:'',p1b8:'', - p1b9:'',p1ba:'',p1bb:'',p1bc:'',p1bd:'',p1be:'',p1bf:'',p1c0:'', - p1c1:'',p1c2:'',p1c3:'',p1c4:'',p1c5:'',p1c6:'',p1c7:'',p1c8:'', - p1c9:'',p1ca:'',p1cb:'',p1cc:'',p1cd:'',p1ce:'',p1cf:'',p1d0:'', - p1d1:'',p1d2:'',p1d3:'',p1d4:'',p1d5:'',p1d6:'',p1d7:'',p1d8:'', - p1d9:'',p1da:'',p1db:'',p1dc:'',p1dd:'',p1de:'',p1df:'',p1e0:'', - p1e1:'',p1e2:'',p1e3:'',p1e4:'',p1e5:'',p1e6:'',p1e7:'',p1e8:'', - p1e9:'',p1ea:'',p1eb:'',p1ec:'',p1ed:'',p1ee:'',p1ef:'',p1f0:'', - p1f1:'',p1f2:'',p1f3:'',p1f4:'',p1f5:'',p1f6:'',p1f7:'',p1f8:'', - p1f9:'',p1fa:'',p1fb:'',p1fc:'',p1fd:'',p1fe:'',p1ff:'',p200:'', - p201:'',p202:'',p203:'',p204:'',p205:'',p206:'',p207:'',p208:'', - p209:'',p20a:'',p20b:'',p20c:'',p20d:'',p20e:'',p20f:'',p210:'', - p211:'',p212:'',p213:'',p214:'',p215:'',p216:'',p217:'',p218:'', - p219:'',p21a:'',p21b:'',p21c:'',p21d:'',p21e:'',p21f:'',p220:'', - p221:'',p222:'',p223:'',p224:'',p225:'',p226:'',p227:'',p228:'', - p229:'',p22a:'',p22b:'',p22c:'',p22d:'',p22e:'',p22f:'',p230:'', - p231:'',p232:'',p233:'',p234:'',p235:'',p236:'',p237:'',p238:'', - p239:'',p23a:'',p23b:'',p23c:'',p23d:'',p23e:'',p23f:'',p240:'', - p241:'',p242:'',p243:'',p244:'',p245:'',p246:'',p247:'',p248:'', - p249:'',p24a:'',p24b:'',p24c:'',p24d:'',p24e:'',p24f:'',p250:'', - p251:'',p252:'',p253:'',p254:'',p255:'',p256:'',p257:'',p258:'', - p259:'',p25a:'',p25b:'',p25c:'',p25d:'',p25e:'',p25f:'',p260:'', - p261:'',p262:'',p263:'',p264:'',p265:'',p266:'',p267:'',p268:'', - p269:'',p26a:'',p26b:'',p26c:'',p26d:'',p26e:'',p26f:'',p270:'', - p271:'',p272:'',p273:'',p274:'',p275:'',p276:'',p277:'',p278:'', - p279:'',p27a:'',p27b:'',p27c:'',p27d:'',p27e:'',p27f:'',p280:'', - p281:'',p282:'',p283:'',p284:'',p285:'',p286:'',p287:'',p288:'', - p289:'',p28a:'',p28b:'',p28c:'',p28d:'',p28e:'',p28f:'',p290:'', - p291:'',p292:'',p293:'',p294:'',p295:'',p296:'',p297:'',p298:'', - p299:'',p29a:'',p29b:'',p29c:'',p29d:'',p29e:'',p29f:'',p2a0:'', - p2a1:'',p2a2:'',p2a3:'',p2a4:'',p2a5:'',p2a6:'',p2a7:'',p2a8:'', - p2a9:'',p2aa:'',p2ab:'',p2ac:'',p2ad:'',p2ae:'',p2af:'',p2b0:'', - p2b1:'',p2b2:'',p2b3:'',p2b4:'',p2b5:'',p2b6:'',p2b7:'',p2b8:'', - p2b9:'',p2ba:'',p2bb:'',p2bc:'',p2bd:'',p2be:'',p2bf:'',p2c0:'', - p2c1:'',p2c2:'',p2c3:'',p2c4:'',p2c5:'',p2c6:'',p2c7:'',p2c8:'', - p2c9:'',p2ca:'',p2cb:'',p2cc:'',p2cd:'',p2ce:'',p2cf:'',p2d0:'', - p2d1:'',p2d2:'',p2d3:'',p2d4:'',p2d5:'',p2d6:'',p2d7:'',p2d8:'', - p2d9:'',p2da:'',p2db:'',p2dc:'',p2dd:'',p2de:'',p2df:'',p2e0:'', - p2e1:'',p2e2:'',p2e3:'',p2e4:'',p2e5:'',p2e6:'',p2e7:'',p2e8:'', - p2e9:'',p2ea:'',p2eb:'',p2ec:'',p2ed:'',p2ee:'',p2ef:'',p2f0:'', - p2f1:'',p2f2:'',p2f3:'',p2f4:'',p2f5:'',p2f6:'',p2f7:'',p2f8:'', - p2f9:'',p2fa:'',p2fb:'',p2fc:'',p2fd:'',p2fe:'',p2ff:'',p300:'', - p301:'',p302:'',p303:'',p304:'',p305:'',p306:'',p307:'',p308:'', - p309:'',p30a:'',p30b:'',p30c:'',p30d:'',p30e:'',p30f:'',p310:'', - p311:'',p312:'',p313:'',p314:'',p315:'',p316:'',p317:'',p318:'', - p319:'',p31a:'',p31b:'',p31c:'',p31d:'',p31e:'',p31f:'',p320:'', - p321:'',p322:'',p323:'',p324:'',p325:'',p326:'',p327:'',p328:'', - p329:'',p32a:'',p32b:'',p32c:'',p32d:'',p32e:'',p32f:'',p330:'', - p331:'',p332:'',p333:'',p334:'',p335:'',p336:'',p337:'',p338:'', - p339:'',p33a:'',p33b:'',p33c:'',p33d:'',p33e:'',p33f:'',p340:'', - p341:'',p342:'',p343:'',p344:'',p345:'',p346:'',p347:'',p348:'', - p349:'',p34a:'',p34b:'',p34c:'',p34d:'',p34e:'',p34f:'',p350:'', - p351:'',p352:'',p353:'',p354:'',p355:'',p356:'',p357:'',p358:'', - p359:'',p35a:'',p35b:'',p35c:'',p35d:'',p35e:'',p35f:'',p360:'', - p361:'',p362:'',p363:'',p364:'',p365:'',p366:'',p367:'',p368:'', - p369:'',p36a:'',p36b:'',p36c:'',p36d:'',p36e:'',p36f:'',p370:'', - p371:'',p372:'',p373:'',p374:'',p375:'',p376:'',p377:'',p378:'', - p379:'',p37a:'',p37b:'',p37c:'',p37d:'',p37e:'',p37f:'',p380:'', - p381:'',p382:'',p383:'',p384:'',p385:'',p386:'',p387:'',p388:'', - p389:'',p38a:'',p38b:'',p38c:'',p38d:'',p38e:'',p38f:'',p390:'', - p391:'',p392:'',p393:'',p394:'',p395:'',p396:'',p397:'',p398:'', - p399:'',p39a:'',p39b:'',p39c:'',p39d:'',p39e:'',p39f:'',p3a0:'', - p3a1:'',p3a2:'',p3a3:'',p3a4:'',p3a5:'',p3a6:'',p3a7:'',p3a8:'', - p3a9:'',p3aa:'',p3ab:'',p3ac:'',p3ad:'',p3ae:'',p3af:'',p3b0:'', - p3b1:'',p3b2:'',p3b3:'',p3b4:'',p3b5:'',p3b6:'',p3b7:'',p3b8:'', - p3b9:'',p3ba:'',p3bb:'',p3bc:'',p3bd:'',p3be:'',p3bf:'',p3c0:'', - p3c1:'',p3c2:'',p3c3:'',p3c4:'',p3c5:'',p3c6:'',p3c7:'',p3c8:'', - p3c9:'',p3ca:'',p3cb:'',p3cc:'',p3cd:'',p3ce:'',p3cf:'',p3d0:'', - p3d1:'',p3d2:'',p3d3:'',p3d4:'',p3d5:'',p3d6:'',p3d7:'',p3d8:'', - p3d9:'',p3da:'',p3db:'',p3dc:'',p3dd:'',p3de:'',p3df:'',p3e0:'', - p3e1:'',p3e2:'',p3e3:'',p3e4:'',p3e5:'',p3e6:'',p3e7:'',p3e8:'', - p3e9:'',p3ea:'',p3eb:'',p3ec:'',p3ed:'',p3ee:'',p3ef:'',p3f0:'', - p3f1:'',p3f2:'',p3f3:'',p3f4:'',p3f5:'',p3f6:'',p3f7:'',p3f8:'', - p3f9:'',p3fa:'',p3fb:'',p3fc:'',p3fd:'',p3fe:'',p3ff:'',p400:'', - p401:'',p402:'',p403:'',p404:'',p405:'',p406:'',p407:'',p408:'', - p409:'',p40a:'',p40b:'',p40c:'',p40d:'',p40e:'',p40f:'',p410:'', - p411:'',p412:'',p413:'',p414:'',p415:'',p416:'',p417:'',p418:'', - p419:'',p41a:'',p41b:'',p41c:'',p41d:'',p41e:'',p41f:'',p420:'', - p421:'',p422:'',p423:'',p424:'',p425:'',p426:'',p427:'',p428:'', - p429:'',p42a:'',p42b:'',p42c:'',p42d:'',p42e:'',p42f:'',p430:'', - p431:'',p432:'',p433:'',p434:'',p435:'',p436:'',p437:'',p438:'', - p439:'',p43a:'',p43b:'',p43c:'',p43d:'',p43e:'',p43f:'',p440:'', - p441:'',p442:'',p443:'',p444:'',p445:'',p446:'',p447:'',p448:'', - p449:'',p44a:'',p44b:'',p44c:'',p44d:'',p44e:'',p44f:'',p450:'', - p451:'',p452:'',p453:'',p454:'',p455:'',p456:'',p457:'',p458:'', - p459:'',p45a:'',p45b:'',p45c:'',p45d:'',p45e:'',p45f:'',p460:'', - p461:'',p462:'',p463:'',p464:'',p465:'',p466:'',p467:'',p468:'', - p469:'',p46a:'',p46b:'',p46c:'',p46d:'',p46e:'',p46f:'',p470:'', - p471:'',p472:'',p473:'',p474:'',p475:'',p476:'',p477:'',p478:'', - p479:'',p47a:'',p47b:'',p47c:'',p47d:'',p47e:'',p47f:'',p480:'', - p481:'',p482:'',p483:'',p484:'',p485:'',p486:'',p487:'',p488:'', - p489:'',p48a:'',p48b:'',p48c:'',p48d:'',p48e:'',p48f:'',p490:'', - p491:'',p492:'',p493:'',p494:'',p495:'',p496:'',p497:'',p498:'', - p499:'',p49a:'',p49b:'',p49c:'',p49d:'',p49e:'',p49f:'',p4a0:'', - p4a1:'',p4a2:'',p4a3:'',p4a4:'',p4a5:'',p4a6:'',p4a7:'',p4a8:'', - p4a9:'',p4aa:'',p4ab:'',p4ac:'',p4ad:'',p4ae:'',p4af:'',p4b0:'', - p4b1:'',p4b2:'',p4b3:'',p4b4:'',p4b5:'',p4b6:'',p4b7:'',p4b8:'', - p4b9:'',p4ba:'',p4bb:'',p4bc:'',p4bd:'',p4be:'',p4bf:'',p4c0:'', - p4c1:'',p4c2:'',p4c3:'',p4c4:'',p4c5:'',p4c6:'',p4c7:'',p4c8:'', - p4c9:'',p4ca:'',p4cb:'',p4cc:'',p4cd:'',p4ce:'',p4cf:'',p4d0:'', - p4d1:'',p4d2:'',p4d3:'',p4d4:'',p4d5:'',p4d6:'',p4d7:'',p4d8:'', - p4d9:'',p4da:'',p4db:'',p4dc:'',p4dd:'',p4de:'',p4df:'',p4e0:'', - p4e1:'',p4e2:'',p4e3:'',p4e4:'',p4e5:'',p4e6:'',p4e7:'',p4e8:'', - p4e9:'',p4ea:'',p4eb:'',p4ec:'',p4ed:'',p4ee:'',p4ef:'',p4f0:'', - p4f1:'',p4f2:'',p4f3:'',p4f4:'',p4f5:'',p4f6:'',p4f7:'',p4f8:'', - p4f9:'',p4fa:'',p4fb:'',p4fc:'',p4fd:'',p4fe:'',p4ff:'',p500:'', - p501:'',p502:'',p503:'',p504:'',p505:'',p506:'',p507:'',p508:'', - p509:'',p50a:'',p50b:'',p50c:'',p50d:'',p50e:'',p50f:'',p510:'', - p511:'',p512:'',p513:'',p514:'',p515:'',p516:'',p517:'',p518:'', - p519:'',p51a:'',p51b:'',p51c:'',p51d:'',p51e:'',p51f:'',p520:'', - p521:'',p522:'',p523:'',p524:'',p525:'',p526:'',p527:'',p528:'', - p529:'',p52a:'',p52b:'',p52c:'',p52d:'',p52e:'',p52f:'',p530:'', - p531:'',p532:'',p533:'',p534:'',p535:'',p536:'',p537:'',p538:'', - p539:'',p53a:'',p53b:'',p53c:'',p53d:'',p53e:'',p53f:'',p540:'', - p541:'',p542:'',p543:'',p544:'',p545:'',p546:'',p547:'',p548:'', - p549:'',p54a:'',p54b:'',p54c:'',p54d:'',p54e:'',p54f:'',p550:'', - p551:'',p552:'',p553:'',p554:'',p555:'',p556:'',p557:'',p558:'', - p559:'',p55a:'',p55b:'',p55c:'',p55d:'',p55e:'',p55f:'',p560:'', - p561:'',p562:'',p563:'',p564:'',p565:'',p566:'',p567:'',p568:'', - p569:'',p56a:'',p56b:'',p56c:'',p56d:'',p56e:'',p56f:'',p570:'', - p571:'',p572:'',p573:'',p574:'',p575:'',p576:'',p577:'',p578:'', - p579:'',p57a:'',p57b:'',p57c:'',p57d:'',p57e:'',p57f:'',p580:'', - p581:'',p582:'',p583:'',p584:'',p585:'',p586:'',p587:'',p588:'', - p589:'',p58a:'',p58b:'',p58c:'',p58d:'',p58e:'',p58f:'',p590:'', - p591:'',p592:'',p593:'',p594:'',p595:'',p596:'',p597:'',p598:'', - p599:'',p59a:'',p59b:'',p59c:'',p59d:'',p59e:'',p59f:'',p5a0:'', - p5a1:'',p5a2:'',p5a3:'',p5a4:'',p5a5:'',p5a6:'',p5a7:'',p5a8:'', - p5a9:'',p5aa:'',p5ab:'',p5ac:'',p5ad:'',p5ae:'',p5af:'',p5b0:'', - p5b1:'',p5b2:'',p5b3:'',p5b4:'',p5b5:'',p5b6:'',p5b7:'',p5b8:'', - p5b9:'',p5ba:'',p5bb:'',p5bc:'',p5bd:'',p5be:'',p5bf:'',p5c0:'', - p5c1:'',p5c2:'',p5c3:'',p5c4:'',p5c5:'',p5c6:'',p5c7:'',p5c8:'', - p5c9:'',p5ca:'',p5cb:'',p5cc:'',p5cd:'',p5ce:'',p5cf:'',p5d0:'', - p5d1:'',p5d2:'',p5d3:'',p5d4:'',p5d5:'',p5d6:'',p5d7:'',p5d8:'', - p5d9:'',p5da:'',p5db:'',p5dc:'',p5dd:'',p5de:'',p5df:'',p5e0:'', - p5e1:'',p5e2:'',p5e3:'',p5e4:'',p5e5:'',p5e6:'',p5e7:'',p5e8:'', - p5e9:'',p5ea:'',p5eb:'',p5ec:'',p5ed:'',p5ee:'',p5ef:'',p5f0:'', - p5f1:'',p5f2:'',p5f3:'',p5f4:'',p5f5:'',p5f6:'',p5f7:'',p5f8:'', - p5f9:'',p5fa:'',p5fb:'',p5fc:'',p5fd:'',p5fe:'',p5ff:'',p600:'', - p601:'',p602:'',p603:'',p604:'',p605:'',p606:'',p607:'',p608:'', - p609:'',p60a:'',p60b:'',p60c:'',p60d:'',p60e:'',p60f:'',p610:'', - p611:'',p612:'',p613:'',p614:'',p615:'',p616:'',p617:'',p618:'', - p619:'',p61a:'',p61b:'',p61c:'',p61d:'',p61e:'',p61f:'',p620:'', - p621:'',p622:'',p623:'',p624:'',p625:'',p626:'',p627:'',p628:'', - p629:'',p62a:'',p62b:'',p62c:'',p62d:'',p62e:'',p62f:'',p630:'', - p631:'',p632:'',p633:'',p634:'',p635:'',p636:'',p637:'',p638:'', - p639:'',p63a:'',p63b:'',p63c:'',p63d:'',p63e:'',p63f:'',p640:'', - p641:'',p642:'',p643:'',p644:'',p645:'',p646:'',p647:'',p648:'', - p649:'',p64a:'',p64b:'',p64c:'',p64d:'',p64e:'',p64f:'',p650:'', - p651:'',p652:'',p653:'',p654:'',p655:'',p656:'',p657:'',p658:'', - p659:'',p65a:'',p65b:'',p65c:'',p65d:'',p65e:'',p65f:'',p660:'', - p661:'',p662:'',p663:'',p664:'',p665:'',p666:'',p667:'',p668:'', - p669:'',p66a:'',p66b:'',p66c:'',p66d:'',p66e:'',p66f:'',p670:'', - p671:'',p672:'',p673:'',p674:'',p675:'',p676:'',p677:'',p678:'', - p679:'',p67a:'',p67b:'',p67c:'',p67d:'',p67e:'',p67f:'',p680:'', - p681:'',p682:'',p683:'',p684:'',p685:'',p686:'',p687:'',p688:'', - p689:'',p68a:'',p68b:'',p68c:'',p68d:'',p68e:'',p68f:'',p690:'', - p691:'',p692:'',p693:'',p694:'',p695:'',p696:'',p697:'',p698:'', - p699:'',p69a:'',p69b:'',p69c:'',p69d:'',p69e:'',p69f:'',p6a0:'', - p6a1:'',p6a2:'',p6a3:'',p6a4:'',p6a5:'',p6a6:'',p6a7:'',p6a8:'', - p6a9:'',p6aa:'',p6ab:'',p6ac:'',p6ad:'',p6ae:'',p6af:'',p6b0:'', - p6b1:'',p6b2:'',p6b3:'',p6b4:'',p6b5:'',p6b6:'',p6b7:'',p6b8:'', - p6b9:'',p6ba:'',p6bb:'',p6bc:'',p6bd:'',p6be:'',p6bf:'',p6c0:'', - p6c1:'',p6c2:'',p6c3:'',p6c4:'',p6c5:'',p6c6:'',p6c7:'',p6c8:'', - p6c9:'',p6ca:'',p6cb:'',p6cc:'',p6cd:'',p6ce:'',p6cf:'',p6d0:'', - p6d1:'',p6d2:'',p6d3:'',p6d4:'',p6d5:'',p6d6:'',p6d7:'',p6d8:'', - p6d9:'',p6da:'',p6db:'',p6dc:'',p6dd:'',p6de:'',p6df:'',p6e0:'', - p6e1:'',p6e2:'',p6e3:'',p6e4:'',p6e5:'',p6e6:'',p6e7:'',p6e8:'', - p6e9:'',p6ea:'',p6eb:'',p6ec:'',p6ed:'',p6ee:'',p6ef:'',p6f0:'', - p6f1:'',p6f2:'',p6f3:'',p6f4:'',p6f5:'',p6f6:'',p6f7:'',p6f8:'', - p6f9:'',p6fa:'',p6fb:'',p6fc:'',p6fd:'',p6fe:'',p6ff:'',p700:'', - p701:'',p702:'',p703:'',p704:'',p705:'',p706:'',p707:'',p708:'', - p709:'',p70a:'',p70b:'',p70c:'',p70d:'',p70e:'',p70f:'',p710:'', - p711:'',p712:'',p713:'',p714:'',p715:'',p716:'',p717:'',p718:'', - p719:'',p71a:'',p71b:'',p71c:'',p71d:'',p71e:'',p71f:'',p720:'', - p721:'',p722:'',p723:'',p724:'',p725:'',p726:'',p727:'',p728:'', - p729:'',p72a:'',p72b:'',p72c:'',p72d:'',p72e:'',p72f:'',p730:'', - p731:'',p732:'',p733:'',p734:'',p735:'',p736:'',p737:'',p738:'', - p739:'',p73a:'',p73b:'',p73c:'',p73d:'',p73e:'',p73f:'',p740:'', - p741:'',p742:'',p743:'',p744:'',p745:'',p746:'',p747:'',p748:'', - p749:'',p74a:'',p74b:'',p74c:'',p74d:'',p74e:'',p74f:'',p750:'', - p751:'',p752:'',p753:'',p754:'',p755:'',p756:'',p757:'',p758:'', - p759:'',p75a:'',p75b:'',p75c:'',p75d:'',p75e:'',p75f:'',p760:'', - p761:'',p762:'',p763:'',p764:'',p765:'',p766:'',p767:'',p768:'', - p769:'',p76a:'',p76b:'',p76c:'',p76d:'',p76e:'',p76f:'',p770:'', - p771:'',p772:'',p773:'',p774:'',p775:'',p776:'',p777:'',p778:'', - p779:'',p77a:'',p77b:'',p77c:'',p77d:'',p77e:'',p77f:'',p780:'', - p781:'',p782:'',p783:'',p784:'',p785:'',p786:'',p787:'',p788:'', - p789:'',p78a:'',p78b:'',p78c:'',p78d:'',p78e:'',p78f:'',p790:'', - p791:'',p792:'',p793:'',p794:'',p795:'',p796:'',p797:'',p798:'', - p799:'',p79a:'',p79b:'',p79c:'',p79d:'',p79e:'',p79f:'',p7a0:'', - p7a1:'',p7a2:'',p7a3:'',p7a4:'',p7a5:'',p7a6:'',p7a7:'',p7a8:'', - p7a9:'',p7aa:'',p7ab:'',p7ac:'',p7ad:'',p7ae:'',p7af:'',p7b0:'', - p7b1:'',p7b2:'',p7b3:'',p7b4:'',p7b5:'',p7b6:'',p7b7:'',p7b8:'', - p7b9:'',p7ba:'',p7bb:'',p7bc:'',p7bd:'',p7be:'',p7bf:'',p7c0:'', - p7c1:'',p7c2:'',p7c3:'',p7c4:'',p7c5:'',p7c6:'',p7c7:'',p7c8:'', - p7c9:'',p7ca:'',p7cb:'',p7cc:'',p7cd:'',p7ce:'',p7cf:'',p7d0:'', - p7d1:'',p7d2:'',p7d3:'',p7d4:'',p7d5:'',p7d6:'',p7d7:'',p7d8:'', - p7d9:'',p7da:'',p7db:'',p7dc:'',p7dd:'',p7de:'',p7df:'',p7e0:'', - p7e1:'',p7e2:'',p7e3:'',p7e4:'',p7e5:'',p7e6:'',p7e7:'',p7e8:'', - p7e9:'',p7ea:'',p7eb:'',p7ec:'',p7ed:'',p7ee:'',p7ef:'',p7f0:'', - p7f1:'',p7f2:'',p7f3:'',p7f4:'',p7f5:'',p7f6:'',p7f7:'',p7f8:'', - p7f9:'',p7fa:'',p7fb:'',p7fc:'',p7fd:'',p7fe:'',p7ff:'',p800:'', - p801:'',p802:'',p803:'',p804:'',p805:'',p806:'',p807:'',p808:'', - p809:'',p80a:'',p80b:'',p80c:'',p80d:'',p80e:'',p80f:'',p810:'', - p811:'',p812:'',p813:'',p814:'',p815:'',p816:'',p817:'',p818:'', - p819:'',p81a:'',p81b:'',p81c:'',p81d:'',p81e:'',p81f:'',p820:'', - p821:'',p822:'',p823:'',p824:'',p825:'',p826:'',p827:'',p828:'', - p829:'',p82a:'',p82b:'',p82c:'',p82d:'',p82e:'',p82f:'',p830:'', - p831:'',p832:'',p833:'',p834:'',p835:'',p836:'',p837:'',p838:'', - p839:'',p83a:'',p83b:'',p83c:'',p83d:'',p83e:'',p83f:'',p840:'', - p841:'',p842:'',p843:'',p844:'',p845:'',p846:'',p847:'',p848:'', - p849:'',p84a:'',p84b:'',p84c:'',p84d:'',p84e:'',p84f:'',p850:'', - p851:'',p852:'',p853:'',p854:'',p855:'',p856:'',p857:'',p858:'', - p859:'',p85a:'',p85b:'',p85c:'',p85d:'',p85e:'',p85f:'',p860:'', - p861:'',p862:'',p863:'',p864:'',p865:'',p866:'',p867:'',p868:'', - p869:'',p86a:'',p86b:'',p86c:'',p86d:'',p86e:'',p86f:'',p870:'', - p871:'',p872:'',p873:'',p874:'',p875:'',p876:'',p877:'',p878:'', - p879:'',p87a:'',p87b:'',p87c:'',p87d:'',p87e:'',p87f:'',p880:'', - p881:'',p882:'',p883:'',p884:'',p885:'',p886:'',p887:'',p888:'', - p889:'',p88a:'',p88b:'',p88c:'',p88d:'',p88e:'',p88f:'',p890:'', - p891:'',p892:'',p893:'',p894:'',p895:'',p896:'',p897:'',p898:'', - p899:'',p89a:'',p89b:'',p89c:'',p89d:'',p89e:'',p89f:'',p8a0:'', - p8a1:'',p8a2:'',p8a3:'',p8a4:'',p8a5:'',p8a6:'',p8a7:'',p8a8:'', - p8a9:'',p8aa:'',p8ab:'',p8ac:'',p8ad:'',p8ae:'',p8af:'',p8b0:'', - p8b1:'',p8b2:'',p8b3:'',p8b4:'',p8b5:'',p8b6:'',p8b7:'',p8b8:'', - p8b9:'',p8ba:'',p8bb:'',p8bc:'',p8bd:'',p8be:'',p8bf:'',p8c0:'', - p8c1:'',p8c2:'',p8c3:'',p8c4:'',p8c5:'',p8c6:'',p8c7:'',p8c8:'', - p8c9:'',p8ca:'',p8cb:'',p8cc:'',p8cd:'',p8ce:'',p8cf:'',p8d0:'', - p8d1:'',p8d2:'',p8d3:'',p8d4:'',p8d5:'',p8d6:'',p8d7:'',p8d8:'', - p8d9:'',p8da:'',p8db:'',p8dc:'',p8dd:'',p8de:'',p8df:'',p8e0:'', - p8e1:'',p8e2:'',p8e3:'',p8e4:'',p8e5:'',p8e6:'',p8e7:'',p8e8:'', - p8e9:'',p8ea:'',p8eb:'',p8ec:'',p8ed:'',p8ee:'',p8ef:'',p8f0:'', - p8f1:'',p8f2:'',p8f3:'',p8f4:'',p8f5:'',p8f6:'',p8f7:'',p8f8:'', - p8f9:'',p8fa:'',p8fb:'',p8fc:'',p8fd:'',p8fe:'',p8ff:'',p900:'', - p901:'',p902:'',p903:'',p904:'',p905:'',p906:'',p907:'',p908:'', - p909:'',p90a:'',p90b:'',p90c:'',p90d:'',p90e:'',p90f:'',p910:'', - p911:'',p912:'',p913:'',p914:'',p915:'',p916:'',p917:'',p918:'', - p919:'',p91a:'',p91b:'',p91c:'',p91d:'',p91e:'',p91f:'',p920:'', - p921:'',p922:'',p923:'',p924:'',p925:'',p926:'',p927:'',p928:'', - p929:'',p92a:'',p92b:'',p92c:'',p92d:'',p92e:'',p92f:'',p930:'', - p931:'',p932:'',p933:'',p934:'',p935:'',p936:'',p937:'',p938:'', - p939:'',p93a:'',p93b:'',p93c:'',p93d:'',p93e:'',p93f:'',p940:'', - p941:'',p942:'',p943:'',p944:'',p945:'',p946:'',p947:'',p948:'', - p949:'',p94a:'',p94b:'',p94c:'',p94d:'',p94e:'',p94f:'',p950:'', - p951:'',p952:'',p953:'',p954:'',p955:'',p956:'',p957:'',p958:'', - p959:'',p95a:'',p95b:'',p95c:'',p95d:'',p95e:'',p95f:'',p960:'', - p961:'',p962:'',p963:'',p964:'',p965:'',p966:'',p967:'',p968:'', - p969:'',p96a:'',p96b:'',p96c:'',p96d:'',p96e:'',p96f:'',p970:'', - p971:'',p972:'',p973:'',p974:'',p975:'',p976:'',p977:'',p978:'', - p979:'',p97a:'',p97b:'',p97c:'',p97d:'',p97e:'',p97f:'',p980:'', - p981:'',p982:'',p983:'',p984:'',p985:'',p986:'',p987:'',p988:'', - p989:'',p98a:'',p98b:'',p98c:'',p98d:'',p98e:'',p98f:'',p990:'', - p991:'',p992:'',p993:'',p994:'',p995:'',p996:'',p997:'',p998:'', - p999:'',p99a:'',p99b:'',p99c:'',p99d:'',p99e:'',p99f:'',p9a0:'', - p9a1:'',p9a2:'',p9a3:'',p9a4:'',p9a5:'',p9a6:'',p9a7:'',p9a8:'', - p9a9:'',p9aa:'',p9ab:'',p9ac:'',p9ad:'',p9ae:'',p9af:'',p9b0:'', - p9b1:'',p9b2:'',p9b3:'',p9b4:'',p9b5:'',p9b6:'',p9b7:'',p9b8:'', - p9b9:'',p9ba:'',p9bb:'',p9bc:'',p9bd:'',p9be:'',p9bf:'',p9c0:'', - p9c1:'',p9c2:'',p9c3:'',p9c4:'',p9c5:'',p9c6:'',p9c7:'',p9c8:'', - p9c9:'',p9ca:'',p9cb:'',p9cc:'',p9cd:'',p9ce:'',p9cf:'',p9d0:'', - p9d1:'',p9d2:'',p9d3:'',p9d4:'',p9d5:'',p9d6:'',p9d7:'',p9d8:'', - p9d9:'',p9da:'',p9db:'',p9dc:'',p9dd:'',p9de:'',p9df:'',p9e0:'', - p9e1:'',p9e2:'',p9e3:'',p9e4:'',p9e5:'',p9e6:'',p9e7:'',p9e8:'', - p9e9:'',p9ea:'',p9eb:'',p9ec:'',p9ed:'',p9ee:'',p9ef:'',p9f0:'', - p9f1:'',p9f2:'',p9f3:'',p9f4:'',p9f5:'',p9f6:'',p9f7:'',p9f8:'', - p9f9:'',p9fa:'',p9fb:'',p9fc:'',p9fd:'',p9fe:'',p9ff:'',pa00:'', - pa01:'',pa02:'',pa03:'',pa04:'',pa05:'',pa06:'',pa07:'',pa08:'', - pa09:'',pa0a:'',pa0b:'',pa0c:'',pa0d:'',pa0e:'',pa0f:'',pa10:'', - pa11:'',pa12:'',pa13:'',pa14:'',pa15:'',pa16:'',pa17:'',pa18:'', - pa19:'',pa1a:'',pa1b:'',pa1c:'',pa1d:'',pa1e:'',pa1f:'',pa20:'', - pa21:'',pa22:'',pa23:'',pa24:'',pa25:'',pa26:'',pa27:'',pa28:'', - pa29:'',pa2a:'',pa2b:'',pa2c:'',pa2d:'',pa2e:'',pa2f:'',pa30:'', - pa31:'',pa32:'',pa33:'',pa34:'',pa35:'',pa36:'',pa37:'',pa38:'', - pa39:'',pa3a:'',pa3b:'',pa3c:'',pa3d:'',pa3e:'',pa3f:'',pa40:'', - pa41:'',pa42:'',pa43:'',pa44:'',pa45:'',pa46:'',pa47:'',pa48:'', - pa49:'',pa4a:'',pa4b:'',pa4c:'',pa4d:'',pa4e:'',pa4f:'',pa50:'', - pa51:'',pa52:'',pa53:'',pa54:'',pa55:'',pa56:'',pa57:'',pa58:'', - pa59:'',pa5a:'',pa5b:'',pa5c:'',pa5d:'',pa5e:'',pa5f:'',pa60:'', - pa61:'',pa62:'',pa63:'',pa64:'',pa65:'',pa66:'',pa67:'',pa68:'', - pa69:'',pa6a:'',pa6b:'',pa6c:'',pa6d:'',pa6e:'',pa6f:'',pa70:'', - pa71:'',pa72:'',pa73:'',pa74:'',pa75:'',pa76:'',pa77:'',pa78:'', - pa79:'',pa7a:'',pa7b:'',pa7c:'',pa7d:'',pa7e:'',pa7f:'',pa80:'', - pa81:'',pa82:'',pa83:'',pa84:'',pa85:'',pa86:'',pa87:'',pa88:'', - pa89:'',pa8a:'',pa8b:'',pa8c:'',pa8d:'',pa8e:'',pa8f:'',pa90:'', - pa91:'',pa92:'',pa93:'',pa94:'',pa95:'',pa96:'',pa97:'',pa98:'', - pa99:'',pa9a:'',pa9b:'',pa9c:'',pa9d:'',pa9e:'',pa9f:'',paa0:'', - paa1:'',paa2:'',paa3:'',paa4:'',paa5:'',paa6:'',paa7:'',paa8:'', - paa9:'',paaa:'',paab:'',paac:'',paad:'',paae:'',paaf:'',pab0:'', - pab1:'',pab2:'',pab3:'',pab4:'',pab5:'',pab6:'',pab7:'',pab8:'', - pab9:'',paba:'',pabb:'',pabc:'',pabd:'',pabe:'',pabf:'',pac0:'', - pac1:'',pac2:'',pac3:'',pac4:'',pac5:'',pac6:'',pac7:'',pac8:'', - pac9:'',paca:'',pacb:'',pacc:'',pacd:'',pace:'',pacf:'',pad0:'', - pad1:'',pad2:'',pad3:'',pad4:'',pad5:'',pad6:'',pad7:'',pad8:'', - pad9:'',pada:'',padb:'',padc:'',padd:'',pade:'',padf:'',pae0:'', - pae1:'',pae2:'',pae3:'',pae4:'',pae5:'',pae6:'',pae7:'',pae8:'', - pae9:'',paea:'',paeb:'',paec:'',paed:'',paee:'',paef:'',paf0:'', - paf1:'',paf2:'',paf3:'',paf4:'',paf5:'',paf6:'',paf7:'',paf8:'', - paf9:'',pafa:'',pafb:'',pafc:'',pafd:'',pafe:'',paff:'',pb00:'', - pb01:'',pb02:'',pb03:'',pb04:'',pb05:'',pb06:'',pb07:'',pb08:'', - pb09:'',pb0a:'',pb0b:'',pb0c:'',pb0d:'',pb0e:'',pb0f:'',pb10:'', - pb11:'',pb12:'',pb13:'',pb14:'',pb15:'',pb16:'',pb17:'',pb18:'', - pb19:'',pb1a:'',pb1b:'',pb1c:'',pb1d:'',pb1e:'',pb1f:'',pb20:'', - pb21:'',pb22:'',pb23:'',pb24:'',pb25:'',pb26:'',pb27:'',pb28:'', - pb29:'',pb2a:'',pb2b:'',pb2c:'',pb2d:'',pb2e:'',pb2f:'',pb30:'', - pb31:'',pb32:'',pb33:'',pb34:'',pb35:'',pb36:'',pb37:'',pb38:'', - pb39:'',pb3a:'',pb3b:'',pb3c:'',pb3d:'',pb3e:'',pb3f:'',pb40:'', - pb41:'',pb42:'',pb43:'',pb44:'',pb45:'',pb46:'',pb47:'',pb48:'', - pb49:'',pb4a:'',pb4b:'',pb4c:'',pb4d:'',pb4e:'',pb4f:'',pb50:'', - pb51:'',pb52:'',pb53:'',pb54:'',pb55:'',pb56:'',pb57:'',pb58:'', - pb59:'',pb5a:'',pb5b:'',pb5c:'',pb5d:'',pb5e:'',pb5f:'',pb60:'', - pb61:'',pb62:'',pb63:'',pb64:'',pb65:'',pb66:'',pb67:'',pb68:'', - pb69:'',pb6a:'',pb6b:'',pb6c:'',pb6d:'',pb6e:'',pb6f:'',pb70:'', - pb71:'',pb72:'',pb73:'',pb74:'',pb75:'',pb76:'',pb77:'',pb78:'', - pb79:'',pb7a:'',pb7b:'',pb7c:'',pb7d:'',pb7e:'',pb7f:'',pb80:'', - pb81:'',pb82:'',pb83:'',pb84:'',pb85:'',pb86:'',pb87:'',pb88:'', - pb89:'',pb8a:'',pb8b:'',pb8c:'',pb8d:'',pb8e:'',pb8f:'',pb90:'', - pb91:'',pb92:'',pb93:'',pb94:'',pb95:'',pb96:'',pb97:'',pb98:'', - pb99:'',pb9a:'',pb9b:'',pb9c:'',pb9d:'',pb9e:'',pb9f:'',pba0:'', - pba1:'',pba2:'',pba3:'',pba4:'',pba5:'',pba6:'',pba7:'',pba8:'', - pba9:'',pbaa:'',pbab:'',pbac:'',pbad:'',pbae:'',pbaf:'',pbb0:'', - pbb1:'',pbb2:'',pbb3:'',pbb4:'',pbb5:'',pbb6:'',pbb7:'',pbb8:'', - pbb9:'',pbba:'',pbbb:'',pbbc:'',pbbd:'',pbbe:'',pbbf:'',pbc0:'', - pbc1:'',pbc2:'',pbc3:'',pbc4:'',pbc5:'',pbc6:'',pbc7:'',pbc8:'', - pbc9:'',pbca:'',pbcb:'',pbcc:'',pbcd:'',pbce:'',pbcf:'',pbd0:'', - pbd1:'',pbd2:'',pbd3:'',pbd4:'',pbd5:'',pbd6:'',pbd7:'',pbd8:'', - pbd9:'',pbda:'',pbdb:'',pbdc:'',pbdd:'',pbde:'',pbdf:'',pbe0:'', - pbe1:'',pbe2:'',pbe3:'',pbe4:'',pbe5:'',pbe6:'',pbe7:'',pbe8:'', - pbe9:'',pbea:'',pbeb:'',pbec:'',pbed:'',pbee:'',pbef:'',pbf0:'', - pbf1:'',pbf2:'',pbf3:'',pbf4:'',pbf5:'',pbf6:'',pbf7:'',pbf8:'', - pbf9:'',pbfa:'',pbfb:'',pbfc:'',pbfd:'',pbfe:'',pbff:'',pc00:'', - pc01:'',pc02:'',pc03:'',pc04:'',pc05:'',pc06:'',pc07:'',pc08:'', - pc09:'',pc0a:'',pc0b:'',pc0c:'',pc0d:'',pc0e:'',pc0f:'',pc10:'', - pc11:'',pc12:'',pc13:'',pc14:'',pc15:'',pc16:'',pc17:'',pc18:'', - pc19:'',pc1a:'',pc1b:'',pc1c:'',pc1d:'',pc1e:'',pc1f:'',pc20:'', - pc21:'',pc22:'',pc23:'',pc24:'',pc25:'',pc26:'',pc27:'',pc28:'', - pc29:'',pc2a:'',pc2b:'',pc2c:'',pc2d:'',pc2e:'',pc2f:'',pc30:'', - pc31:'',pc32:'',pc33:'',pc34:'',pc35:'',pc36:'',pc37:'',pc38:'', - pc39:'',pc3a:'',pc3b:'',pc3c:'',pc3d:'',pc3e:'',pc3f:'',pc40:'', - pc41:'',pc42:'',pc43:'',pc44:'',pc45:'',pc46:'',pc47:'',pc48:'', - pc49:'',pc4a:'',pc4b:'',pc4c:'',pc4d:'',pc4e:'',pc4f:'',pc50:'', - pc51:'',pc52:'',pc53:'',pc54:'',pc55:'',pc56:'',pc57:'',pc58:'', - pc59:'',pc5a:'',pc5b:'',pc5c:'',pc5d:'',pc5e:'',pc5f:'',pc60:'', - pc61:'',pc62:'',pc63:'',pc64:'',pc65:'',pc66:'',pc67:'',pc68:'', - pc69:'',pc6a:'',pc6b:'',pc6c:'',pc6d:'',pc6e:'',pc6f:'',pc70:'', - pc71:'',pc72:'',pc73:'',pc74:'',pc75:'',pc76:'',pc77:'',pc78:'', - pc79:'',pc7a:'',pc7b:'',pc7c:'',pc7d:'',pc7e:'',pc7f:'',pc80:'', - pc81:'',pc82:'',pc83:'',pc84:'',pc85:'',pc86:'',pc87:'',pc88:'', - pc89:'',pc8a:'',pc8b:'',pc8c:'',pc8d:'',pc8e:'',pc8f:'',pc90:'', - pc91:'',pc92:'',pc93:'',pc94:'',pc95:'',pc96:'',pc97:'',pc98:'', - pc99:'',pc9a:'',pc9b:'',pc9c:'',pc9d:'',pc9e:'',pc9f:'',pca0:'', - pca1:'',pca2:'',pca3:'',pca4:'',pca5:'',pca6:'',pca7:'',pca8:'', - pca9:'',pcaa:'',pcab:'',pcac:'',pcad:'',pcae:'',pcaf:'',pcb0:'', - pcb1:'',pcb2:'',pcb3:'',pcb4:'',pcb5:'',pcb6:'',pcb7:'',pcb8:'', - pcb9:'',pcba:'',pcbb:'',pcbc:'',pcbd:'',pcbe:'',pcbf:'',pcc0:'', - pcc1:'',pcc2:'',pcc3:'',pcc4:'',pcc5:'',pcc6:'',pcc7:'',pcc8:'', - pcc9:'',pcca:'',pccb:'',pccc:'',pccd:'',pcce:'',pccf:'',pcd0:'', - pcd1:'',pcd2:'',pcd3:'',pcd4:'',pcd5:'',pcd6:'',pcd7:'',pcd8:'', - pcd9:'',pcda:'',pcdb:'',pcdc:'',pcdd:'',pcde:'',pcdf:'',pce0:'', - pce1:'',pce2:'',pce3:'',pce4:'',pce5:'',pce6:'',pce7:'',pce8:'', - pce9:'',pcea:'',pceb:'',pcec:'',pced:'',pcee:'',pcef:'',pcf0:'', - pcf1:'',pcf2:'',pcf3:'',pcf4:'',pcf5:'',pcf6:'',pcf7:'',pcf8:'', - pcf9:'',pcfa:'',pcfb:'',pcfc:'',pcfd:'',pcfe:'',pcff:'',pd00:'', - pd01:'',pd02:'',pd03:'',pd04:'',pd05:'',pd06:'',pd07:'',pd08:'', - pd09:'',pd0a:'',pd0b:'',pd0c:'',pd0d:'',pd0e:'',pd0f:'',pd10:'', - pd11:'',pd12:'',pd13:'',pd14:'',pd15:'',pd16:'',pd17:'',pd18:'', - pd19:'',pd1a:'',pd1b:'',pd1c:'',pd1d:'',pd1e:'',pd1f:'',pd20:'', - pd21:'',pd22:'',pd23:'',pd24:'',pd25:'',pd26:'',pd27:'',pd28:'', - pd29:'',pd2a:'',pd2b:'',pd2c:'',pd2d:'',pd2e:'',pd2f:'',pd30:'', - pd31:'',pd32:'',pd33:'',pd34:'',pd35:'',pd36:'',pd37:'',pd38:'', - pd39:'',pd3a:'',pd3b:'',pd3c:'',pd3d:'',pd3e:'',pd3f:'',pd40:'', - pd41:'',pd42:'',pd43:'',pd44:'',pd45:'',pd46:'',pd47:'',pd48:'', - pd49:'',pd4a:'',pd4b:'',pd4c:'',pd4d:'',pd4e:'',pd4f:'',pd50:'', - pd51:'',pd52:'',pd53:'',pd54:'',pd55:'',pd56:'',pd57:'',pd58:'', - pd59:'',pd5a:'',pd5b:'',pd5c:'',pd5d:'',pd5e:'',pd5f:'',pd60:'', - pd61:'',pd62:'',pd63:'',pd64:'',pd65:'',pd66:'',pd67:'',pd68:'', - pd69:'',pd6a:'',pd6b:'',pd6c:'',pd6d:'',pd6e:'',pd6f:'',pd70:'', - pd71:'',pd72:'',pd73:'',pd74:'',pd75:'',pd76:'',pd77:'',pd78:'', - pd79:'',pd7a:'',pd7b:'',pd7c:'',pd7d:'',pd7e:'',pd7f:'',pd80:'', - pd81:'',pd82:'',pd83:'',pd84:'',pd85:'',pd86:'',pd87:'',pd88:'', - pd89:'',pd8a:'',pd8b:'',pd8c:'',pd8d:'',pd8e:'',pd8f:'',pd90:'', - pd91:'',pd92:'',pd93:'',pd94:'',pd95:'',pd96:'',pd97:'',pd98:'', - pd99:'',pd9a:'',pd9b:'',pd9c:'',pd9d:'',pd9e:'',pd9f:'',pda0:'', - pda1:'',pda2:'',pda3:'',pda4:'',pda5:'',pda6:'',pda7:'',pda8:'', - pda9:'',pdaa:'',pdab:'',pdac:'',pdad:'',pdae:'',pdaf:'',pdb0:'', - pdb1:'',pdb2:'',pdb3:'',pdb4:'',pdb5:'',pdb6:'',pdb7:'',pdb8:'', - pdb9:'',pdba:'',pdbb:'',pdbc:'',pdbd:'',pdbe:'',pdbf:'',pdc0:'', - pdc1:'',pdc2:'',pdc3:'',pdc4:'',pdc5:'',pdc6:'',pdc7:'',pdc8:'', - pdc9:'',pdca:'',pdcb:'',pdcc:'',pdcd:'',pdce:'',pdcf:'',pdd0:'', - pdd1:'',pdd2:'',pdd3:'',pdd4:'',pdd5:'',pdd6:'',pdd7:'',pdd8:'', - pdd9:'',pdda:'',pddb:'',pddc:'',pddd:'',pdde:'',pddf:'',pde0:'', - pde1:'',pde2:'',pde3:'',pde4:'',pde5:'',pde6:'',pde7:'',pde8:'', - pde9:'',pdea:'',pdeb:'',pdec:'',pded:'',pdee:'',pdef:'',pdf0:'', - pdf1:'',pdf2:'',pdf3:'',pdf4:'',pdf5:'',pdf6:'',pdf7:'',pdf8:'', - pdf9:'',pdfa:'',pdfb:'',pdfc:'',pdfd:'',pdfe:'',pdff:'',pe00:'', - pe01:'',pe02:'',pe03:'',pe04:'',pe05:'',pe06:'',pe07:'',pe08:'', - pe09:'',pe0a:'',pe0b:'',pe0c:'',pe0d:'',pe0e:'',pe0f:'',pe10:'', - pe11:'',pe12:'',pe13:'',pe14:'',pe15:'',pe16:'',pe17:'',pe18:'', - pe19:'',pe1a:'',pe1b:'',pe1c:'',pe1d:'',pe1e:'',pe1f:'',pe20:'', - pe21:'',pe22:'',pe23:'',pe24:'',pe25:'',pe26:'',pe27:'',pe28:'', - pe29:'',pe2a:'',pe2b:'',pe2c:'',pe2d:'',pe2e:'',pe2f:'',pe30:'', - pe31:'',pe32:'',pe33:'',pe34:'',pe35:'',pe36:'',pe37:'',pe38:'', - pe39:'',pe3a:'',pe3b:'',pe3c:'',pe3d:'',pe3e:'',pe3f:'',pe40:'', - pe41:'',pe42:'',pe43:'',pe44:'',pe45:'',pe46:'',pe47:'',pe48:'', - pe49:'',pe4a:'',pe4b:'',pe4c:'',pe4d:'',pe4e:'',pe4f:'',pe50:'', - pe51:'',pe52:'',pe53:'',pe54:'',pe55:'',pe56:'',pe57:'',pe58:'', - pe59:'',pe5a:'',pe5b:'',pe5c:'',pe5d:'',pe5e:'',pe5f:'',pe60:'', - pe61:'',pe62:'',pe63:'',pe64:'',pe65:'',pe66:'',pe67:'',pe68:'', - pe69:'',pe6a:'',pe6b:'',pe6c:'',pe6d:'',pe6e:'',pe6f:'',pe70:'', - pe71:'',pe72:'',pe73:'',pe74:'',pe75:'',pe76:'',pe77:'',pe78:'', - pe79:'',pe7a:'',pe7b:'',pe7c:'',pe7d:'',pe7e:'',pe7f:'',pe80:'', - pe81:'',pe82:'',pe83:'',pe84:'',pe85:'',pe86:'',pe87:'',pe88:'', - pe89:'',pe8a:'',pe8b:'',pe8c:'',pe8d:'',pe8e:'',pe8f:'',pe90:'', - pe91:'',pe92:'',pe93:'',pe94:'',pe95:'',pe96:'',pe97:'',pe98:'', - pe99:'',pe9a:'',pe9b:'',pe9c:'',pe9d:'',pe9e:'',pe9f:'',pea0:'', - pea1:'',pea2:'',pea3:'',pea4:'',pea5:'',pea6:'',pea7:'',pea8:'', - pea9:'',peaa:'',peab:'',peac:'',pead:'',peae:'',peaf:'',peb0:'', - peb1:'',peb2:'',peb3:'',peb4:'',peb5:'',peb6:'',peb7:'',peb8:'', - peb9:'',peba:'',pebb:'',pebc:'',pebd:'',pebe:'',pebf:'',pec0:'', - pec1:'',pec2:'',pec3:'',pec4:'',pec5:'',pec6:'',pec7:'',pec8:'', - pec9:'',peca:'',pecb:'',pecc:'',pecd:'',pece:'',pecf:'',ped0:'', - ped1:'',ped2:'',ped3:'',ped4:'',ped5:'',ped6:'',ped7:'',ped8:'', - ped9:'',peda:'',pedb:'',pedc:'',pedd:'',pede:'',pedf:'',pee0:'', - pee1:'',pee2:'',pee3:'',pee4:'',pee5:'',pee6:'',pee7:'',pee8:'', - pee9:'',peea:'',peeb:'',peec:'',peed:'',peee:'',peef:'',pef0:'', - pef1:'',pef2:'',pef3:'',pef4:'',pef5:'',pef6:'',pef7:'',pef8:'', - pef9:'',pefa:'',pefb:'',pefc:'',pefd:'',pefe:'',peff:'',pf00:'', - pf01:'',pf02:'',pf03:'',pf04:'',pf05:'',pf06:'',pf07:'',pf08:'', - pf09:'',pf0a:'',pf0b:'',pf0c:'',pf0d:'',pf0e:'',pf0f:'',pf10:'', - pf11:'',pf12:'',pf13:'',pf14:'',pf15:'',pf16:'',pf17:'',pf18:'', - pf19:'',pf1a:'',pf1b:'',pf1c:'',pf1d:'',pf1e:'',pf1f:'',pf20:'', - pf21:'',pf22:'',pf23:'',pf24:'',pf25:'',pf26:'',pf27:'',pf28:'', - pf29:'',pf2a:'',pf2b:'',pf2c:'',pf2d:'',pf2e:'',pf2f:'',pf30:'', - pf31:'',pf32:'',pf33:'',pf34:'',pf35:'',pf36:'',pf37:'',pf38:'', - pf39:'',pf3a:'',pf3b:'',pf3c:'',pf3d:'',pf3e:'',pf3f:'',pf40:'', - pf41:'',pf42:'',pf43:'',pf44:'',pf45:'',pf46:'',pf47:'',pf48:'', - pf49:'',pf4a:'',pf4b:'',pf4c:'',pf4d:'',pf4e:'',pf4f:'',pf50:'', - pf51:'',pf52:'',pf53:'',pf54:'',pf55:'',pf56:'',pf57:'',pf58:'', - pf59:'',pf5a:'',pf5b:'',pf5c:'',pf5d:'',pf5e:'',pf5f:'',pf60:'', - pf61:'',pf62:'',pf63:'',pf64:'',pf65:'',pf66:'',pf67:'',pf68:'', - pf69:'',pf6a:'',pf6b:'',pf6c:'',pf6d:'',pf6e:'',pf6f:'',pf70:'', - pf71:'',pf72:'',pf73:'',pf74:'',pf75:'',pf76:'',pf77:'',pf78:'', - pf79:'',pf7a:'',pf7b:'',pf7c:'',pf7d:'',pf7e:'',pf7f:'',pf80:'', - pf81:'',pf82:'',pf83:'',pf84:'',pf85:'',pf86:'',pf87:'',pf88:'', - pf89:'',pf8a:'',pf8b:'',pf8c:'',pf8d:'',pf8e:'',pf8f:'',pf90:'', - pf91:'',pf92:'',pf93:'',pf94:'',pf95:'',pf96:'',pf97:'',pf98:'', - pf99:'',pf9a:'',pf9b:'',pf9c:'',pf9d:'',pf9e:'',pf9f:'',pfa0:'', - pfa1:'',pfa2:'',pfa3:'',pfa4:'',pfa5:'',pfa6:'',pfa7:'',pfa8:'', - pfa9:'',pfaa:'',pfab:'',pfac:'',pfad:'',pfae:'',pfaf:'',pfb0:'', - pfb1:'',pfb2:'',pfb3:'',pfb4:'',pfb5:'',pfb6:'',pfb7:'',pfb8:'', - pfb9:'',pfba:'',pfbb:'',pfbc:'',pfbd:'',pfbe:'',pfbf:'',pfc0:'', - pfc1:'',pfc2:'',pfc3:'',pfc4:'',pfc5:'',pfc6:'',pfc7:'',pfc8:'', - pfc9:'',pfca:'',pfcb:'',pfcc:'',pfcd:'',pfce:'',pfcf:'',pfd0:'', - pfd1:'',pfd2:'',pfd3:'',pfd4:'',pfd5:'',pfd6:'',pfd7:'',pfd8:'', - pfd9:'',pfda:'',pfdb:'',pfdc:'',pfdd:'',pfde:'',pfdf:'',pfe0:'', - pfe1:'',pfe2:'',pfe3:'',pfe4:'',pfe5:'',pfe6:'',pfe7:'',pfe8:'', - pfe9:'',pfea:'',pfeb:'',pfec:'',pfed:'',pfee:'',pfef:'',pff0:'', - pff1:'',pff2:'',pff3:'',pff4:'',pff5:'',pff6:'',pff7:'',pff8:'', - pff9:'',pffa:'',pffb:'',pffc:'',pffd:'',pffe:'',pfff:'',p1000:'', - p1001:'',p1002:'',p1003:'',p1004:'',p1005:'',p1006:'',p1007:'',p1008:'', - p1009:'',p100a:'',p100b:'',p100c:'',p100d:'',p100e:'',p100f:'',p1010:'', - p1011:'',p1012:'',p1013:'',p1014:'',p1015:'',p1016:'',p1017:'',p1018:'', - p1019:'',p101a:'',p101b:'',p101c:'',p101d:'',p101e:'',p101f:'',p1020:'', - p1021:'',p1022:'',p1023:'',p1024:'',p1025:'',p1026:'',p1027:'',p1028:'', - p1029:'',p102a:'',p102b:'',p102c:'',p102d:'',p102e:'',p102f:'',p1030:'', - p1031:'',p1032:'',p1033:'',p1034:'',p1035:'',p1036:'',p1037:'',p1038:'', - p1039:'',p103a:'',p103b:'',p103c:'',p103d:'',p103e:'',p103f:'',p1040:'', - p1041:'',p1042:'',p1043:'',p1044:'',p1045:'',p1046:'',p1047:'',p1048:'', - p1049:'',p104a:'',p104b:'',p104c:'',p104d:'',p104e:'',p104f:'',p1050:'', - p1051:'',p1052:'',p1053:'',p1054:'',p1055:'',p1056:'',p1057:'',p1058:'', - p1059:'',p105a:'',p105b:'',p105c:'',p105d:'',p105e:'',p105f:'',p1060:'', - p1061:'',p1062:'',p1063:'',p1064:'',p1065:'',p1066:'',p1067:'',p1068:'', - p1069:'',p106a:'',p106b:'',p106c:'',p106d:'',p106e:'',p106f:'',p1070:'', - p1071:'',p1072:'',p1073:'',p1074:'',p1075:'',p1076:'',p1077:'',p1078:'', - p1079:'',p107a:'',p107b:'',p107c:'',p107d:'',p107e:'',p107f:'',p1080:'', - p1081:'',p1082:'',p1083:'',p1084:'',p1085:'',p1086:'',p1087:'',p1088:'', - p1089:'',p108a:'',p108b:'',p108c:'',p108d:'',p108e:'',p108f:'',p1090:'', - p1091:'',p1092:'',p1093:'',p1094:'',p1095:'',p1096:'',p1097:'',p1098:'', - p1099:'',p109a:'',p109b:'',p109c:'',p109d:'',p109e:'',p109f:'',p10a0:'', - p10a1:'',p10a2:'',p10a3:'',p10a4:'',p10a5:'',p10a6:'',p10a7:'',p10a8:'', - p10a9:'',p10aa:'',p10ab:'',p10ac:'',p10ad:'',p10ae:'',p10af:'',p10b0:'', - p10b1:'',p10b2:'',p10b3:'',p10b4:'',p10b5:'',p10b6:'',p10b7:'',p10b8:'', - p10b9:'',p10ba:'',p10bb:'',p10bc:'',p10bd:'',p10be:'',p10bf:'',p10c0:'', - p10c1:'',p10c2:'',p10c3:'',p10c4:'',p10c5:'',p10c6:'',p10c7:'',p10c8:'', - p10c9:'',p10ca:'',p10cb:'',p10cc:'',p10cd:'',p10ce:'',p10cf:'',p10d0:'', - p10d1:'',p10d2:'',p10d3:'',p10d4:'',p10d5:'',p10d6:'',p10d7:'',p10d8:'', - p10d9:'',p10da:'',p10db:'',p10dc:'',p10dd:'',p10de:'',p10df:'',p10e0:'', - p10e1:'',p10e2:'',p10e3:'',p10e4:'',p10e5:'',p10e6:'',p10e7:'',p10e8:'', - p10e9:'',p10ea:'',p10eb:'',p10ec:'',p10ed:'',p10ee:'',p10ef:'',p10f0:'', - p10f1:'',p10f2:'',p10f3:'',p10f4:'',p10f5:'',p10f6:'',p10f7:'',p10f8:'', - p10f9:'',p10fa:'',p10fb:'',p10fc:'',p10fd:'',p10fe:'',p10ff:'',p1100:'', - p1101:'',p1102:'',p1103:'',p1104:'',p1105:'',p1106:'',p1107:'',p1108:'', - p1109:'',p110a:'',p110b:'',p110c:'',p110d:'',p110e:'',p110f:'',p1110:'', - p1111:'',p1112:'',p1113:'',p1114:'',p1115:'',p1116:'',p1117:'',p1118:'', - p1119:'',p111a:'',p111b:'',p111c:'',p111d:'',p111e:'',p111f:'',p1120:'', - p1121:'',p1122:'',p1123:'',p1124:'',p1125:'',p1126:'',p1127:'',p1128:'', - p1129:'',p112a:'',p112b:'',p112c:'',p112d:'',p112e:'',p112f:'',p1130:'', - p1131:'',p1132:'',p1133:'',p1134:'',p1135:'',p1136:'',p1137:'',p1138:'', - p1139:'',p113a:'',p113b:'',p113c:'',p113d:'',p113e:'',p113f:'',p1140:'', - p1141:'',p1142:'',p1143:'',p1144:'',p1145:'',p1146:'',p1147:'',p1148:'', - p1149:'',p114a:'',p114b:'',p114c:'',p114d:'',p114e:'',p114f:'',p1150:'', - p1151:'',p1152:'',p1153:'',p1154:'',p1155:'',p1156:'',p1157:'',p1158:'', - p1159:'',p115a:'',p115b:'',p115c:'',p115d:'',p115e:'',p115f:'',p1160:'', - p1161:'',p1162:'',p1163:'',p1164:'',p1165:'',p1166:'',p1167:'',p1168:'', - p1169:'',p116a:'',p116b:'',p116c:'',p116d:'',p116e:'',p116f:'',p1170:'', - p1171:'',p1172:'',p1173:'',p1174:'',p1175:'',p1176:'',p1177:'',p1178:'', - p1179:'',p117a:'',p117b:'',p117c:'',p117d:'',p117e:'',p117f:'',p1180:'', - p1181:'',p1182:'',p1183:'',p1184:'',p1185:'',p1186:'',p1187:'',p1188:'', - p1189:'',p118a:'',p118b:'',p118c:'',p118d:'',p118e:'',p118f:'',p1190:'', - p1191:'',p1192:'',p1193:'',p1194:'',p1195:'',p1196:'',p1197:'',p1198:'', - p1199:'',p119a:'',p119b:'',p119c:'',p119d:'',p119e:'',p119f:'',p11a0:'', - p11a1:'',p11a2:'',p11a3:'',p11a4:'',p11a5:'',p11a6:'',p11a7:'',p11a8:'', - p11a9:'',p11aa:'',p11ab:'',p11ac:'',p11ad:'',p11ae:'',p11af:'',p11b0:'', - p11b1:'',p11b2:'',p11b3:'',p11b4:'',p11b5:'',p11b6:'',p11b7:'',p11b8:'', - p11b9:'',p11ba:'',p11bb:'',p11bc:'',p11bd:'',p11be:'',p11bf:'',p11c0:'', - p11c1:'',p11c2:'',p11c3:'',p11c4:'',p11c5:'',p11c6:'',p11c7:'',p11c8:'', - p11c9:'',p11ca:'',p11cb:'',p11cc:'',p11cd:'',p11ce:'',p11cf:'',p11d0:'', - p11d1:'',p11d2:'',p11d3:'',p11d4:'',p11d5:'',p11d6:'',p11d7:'',p11d8:'', - p11d9:'',p11da:'',p11db:'',p11dc:'',p11dd:'',p11de:'',p11df:'',p11e0:'', - p11e1:'',p11e2:'',p11e3:'',p11e4:'',p11e5:'',p11e6:'',p11e7:'',p11e8:'', - p11e9:'',p11ea:'',p11eb:'',p11ec:'',p11ed:'',p11ee:'',p11ef:'',p11f0:'', - p11f1:'',p11f2:'',p11f3:'',p11f4:'',p11f5:'',p11f6:'',p11f7:'',p11f8:'', - p11f9:'',p11fa:'',p11fb:'',p11fc:'',p11fd:'',p11fe:'',p11ff:'',p1200:'', - p1201:'',p1202:'',p1203:'',p1204:'',p1205:'',p1206:'',p1207:'',p1208:'', - p1209:'',p120a:'',p120b:'',p120c:'',p120d:'',p120e:'',p120f:'',p1210:'', - p1211:'',p1212:'',p1213:'',p1214:'',p1215:'',p1216:'',p1217:'',p1218:'', - p1219:'',p121a:'',p121b:'',p121c:'',p121d:'',p121e:'',p121f:'',p1220:'', - p1221:'',p1222:'',p1223:'',p1224:'',p1225:'',p1226:'',p1227:'',p1228:'', - p1229:'',p122a:'',p122b:'',p122c:'',p122d:'',p122e:'',p122f:'',p1230:'', - p1231:'',p1232:'',p1233:'',p1234:'',p1235:'',p1236:'',p1237:'',p1238:'', - p1239:'',p123a:'',p123b:'',p123c:'',p123d:'',p123e:'',p123f:'',p1240:'', - p1241:'',p1242:'',p1243:'',p1244:'',p1245:'',p1246:'',p1247:'',p1248:'', - p1249:'',p124a:'',p124b:'',p124c:'',p124d:'',p124e:'',p124f:'',p1250:'', - p1251:'',p1252:'',p1253:'',p1254:'',p1255:'',p1256:'',p1257:'',p1258:'', - p1259:'',p125a:'',p125b:'',p125c:'',p125d:'',p125e:'',p125f:'',p1260:'', - p1261:'',p1262:'',p1263:'',p1264:'',p1265:'',p1266:'',p1267:'',p1268:'', - p1269:'',p126a:'',p126b:'',p126c:'',p126d:'',p126e:'',p126f:'',p1270:'', - p1271:'',p1272:'',p1273:'',p1274:'',p1275:'',p1276:'',p1277:'',p1278:'', - p1279:'',p127a:'',p127b:'',p127c:'',p127d:'',p127e:'',p127f:'',p1280:'', - p1281:'',p1282:'',p1283:'',p1284:'',p1285:'',p1286:'',p1287:'',p1288:'', - p1289:'',p128a:'',p128b:'',p128c:'',p128d:'',p128e:'',p128f:'',p1290:'', - p1291:'',p1292:'',p1293:'',p1294:'',p1295:'',p1296:'',p1297:'',p1298:'', - p1299:'',p129a:'',p129b:'',p129c:'',p129d:'',p129e:'',p129f:'',p12a0:'', - p12a1:'',p12a2:'',p12a3:'',p12a4:'',p12a5:'',p12a6:'',p12a7:'',p12a8:'', - p12a9:'',p12aa:'',p12ab:'',p12ac:'',p12ad:'',p12ae:'',p12af:'',p12b0:'', - p12b1:'',p12b2:'',p12b3:'',p12b4:'',p12b5:'',p12b6:'',p12b7:'',p12b8:'', - p12b9:'',p12ba:'',p12bb:'',p12bc:'',p12bd:'',p12be:'',p12bf:'',p12c0:'', - p12c1:'',p12c2:'',p12c3:'',p12c4:'',p12c5:'',p12c6:'',p12c7:'',p12c8:'', - p12c9:'',p12ca:'',p12cb:'',p12cc:'',p12cd:'',p12ce:'',p12cf:'',p12d0:'', - p12d1:'',p12d2:'',p12d3:'',p12d4:'',p12d5:'',p12d6:'',p12d7:'',p12d8:'', - p12d9:'',p12da:'',p12db:'',p12dc:'',p12dd:'',p12de:'',p12df:'',p12e0:'', - p12e1:'',p12e2:'',p12e3:'',p12e4:'',p12e5:'',p12e6:'',p12e7:'',p12e8:'', - p12e9:'',p12ea:'',p12eb:'',p12ec:'',p12ed:'',p12ee:'',p12ef:'',p12f0:'', - p12f1:'',p12f2:'',p12f3:'',p12f4:'',p12f5:'',p12f6:'',p12f7:'',p12f8:'', - p12f9:'',p12fa:'',p12fb:'',p12fc:'',p12fd:'',p12fe:'',p12ff:'',p1300:'', - p1301:'',p1302:'',p1303:'',p1304:'',p1305:'',p1306:'',p1307:'',p1308:'', - p1309:'',p130a:'',p130b:'',p130c:'',p130d:'',p130e:'',p130f:'',p1310:'', - p1311:'',p1312:'',p1313:'',p1314:'',p1315:'',p1316:'',p1317:'',p1318:'', - p1319:'',p131a:'',p131b:'',p131c:'',p131d:'',p131e:'',p131f:'',p1320:'', - p1321:'',p1322:'',p1323:'',p1324:'',p1325:'',p1326:'',p1327:'',p1328:'', - p1329:'',p132a:'',p132b:'',p132c:'',p132d:'',p132e:'',p132f:'',p1330:'', - p1331:'',p1332:'',p1333:'',p1334:'',p1335:'',p1336:'',p1337:'',p1338:'', - p1339:'',p133a:'',p133b:'',p133c:'',p133d:'',p133e:'',p133f:'',p1340:'', - p1341:'',p1342:'',p1343:'',p1344:'',p1345:'',p1346:'',p1347:'',p1348:'', - p1349:'',p134a:'',p134b:'',p134c:'',p134d:'',p134e:'',p134f:'',p1350:'', - p1351:'',p1352:'',p1353:'',p1354:'',p1355:'',p1356:'',p1357:'',p1358:'', - p1359:'',p135a:'',p135b:'',p135c:'',p135d:'',p135e:'',p135f:'',p1360:'', - p1361:'',p1362:'',p1363:'',p1364:'',p1365:'',p1366:'',p1367:'',p1368:'', - p1369:'',p136a:'',p136b:'',p136c:'',p136d:'',p136e:'',p136f:'',p1370:'', - p1371:'',p1372:'',p1373:'',p1374:'',p1375:'',p1376:'',p1377:'',p1378:'', - p1379:'',p137a:'',p137b:'',p137c:'',p137d:'',p137e:'',p137f:'',p1380:'', - p1381:'',p1382:'',p1383:'',p1384:'',p1385:'',p1386:'',p1387:'',p1388:'', - p1389:'',p138a:'',p138b:'',p138c:'',p138d:'',p138e:'',p138f:'',p1390:'', - p1391:'',p1392:'',p1393:'',p1394:'',p1395:'',p1396:'',p1397:'',p1398:'', - p1399:'',p139a:'',p139b:'',p139c:'',p139d:'',p139e:'',p139f:'',p13a0:'', - p13a1:'',p13a2:'',p13a3:'',p13a4:'',p13a5:'',p13a6:'',p13a7:'',p13a8:'', - p13a9:'',p13aa:'',p13ab:'',p13ac:'',p13ad:'',p13ae:'',p13af:'',p13b0:'', - p13b1:'',p13b2:'',p13b3:'',p13b4:'',p13b5:'',p13b6:'',p13b7:'',p13b8:'', - p13b9:'',p13ba:'',p13bb:'',p13bc:'',p13bd:'',p13be:'',p13bf:'',p13c0:'', - p13c1:'',p13c2:'',p13c3:'',p13c4:'',p13c5:'',p13c6:'',p13c7:'',p13c8:'', - p13c9:'',p13ca:'',p13cb:'',p13cc:'',p13cd:'',p13ce:'',p13cf:'',p13d0:'', - p13d1:'',p13d2:'',p13d3:'',p13d4:'',p13d5:'',p13d6:'',p13d7:'',p13d8:'', - p13d9:'',p13da:'',p13db:'',p13dc:'',p13dd:'',p13de:'',p13df:'',p13e0:'', - p13e1:'',p13e2:'',p13e3:'',p13e4:'',p13e5:'',p13e6:'',p13e7:'',p13e8:'', - p13e9:'',p13ea:'',p13eb:'',p13ec:'',p13ed:'',p13ee:'',p13ef:'',p13f0:'', - p13f1:'',p13f2:'',p13f3:'',p13f4:'',p13f5:'',p13f6:'',p13f7:'',p13f8:'', - p13f9:'',p13fa:'',p13fb:'',p13fc:'',p13fd:'',p13fe:'',p13ff:'',p1400:'', - p1401:'',p1402:'',p1403:'',p1404:'',p1405:'',p1406:'',p1407:'',p1408:'', - p1409:'',p140a:'',p140b:'',p140c:'',p140d:'',p140e:'',p140f:'',p1410:'', - p1411:'',p1412:'',p1413:'',p1414:'',p1415:'',p1416:'',p1417:'',p1418:'', - p1419:'',p141a:'',p141b:'',p141c:'',p141d:'',p141e:'',p141f:'',p1420:'', - p1421:'',p1422:'',p1423:'',p1424:'',p1425:'',p1426:'',p1427:'',p1428:'', - p1429:'',p142a:'',p142b:'',p142c:'',p142d:'',p142e:'',p142f:'',p1430:'', - p1431:'',p1432:'',p1433:'',p1434:'',p1435:'',p1436:'',p1437:'',p1438:'', - p1439:'',p143a:'',p143b:'',p143c:'',p143d:'',p143e:'',p143f:'',p1440:'', - p1441:'',p1442:'',p1443:'',p1444:'',p1445:'',p1446:'',p1447:'',p1448:'', - p1449:'',p144a:'',p144b:'',p144c:'',p144d:'',p144e:'',p144f:'',p1450:'', - p1451:'',p1452:'',p1453:'',p1454:'',p1455:'',p1456:'',p1457:'',p1458:'', - p1459:'',p145a:'',p145b:'',p145c:'',p145d:'',p145e:'',p145f:'',p1460:'', - p1461:'',p1462:'',p1463:'',p1464:'',p1465:'',p1466:'',p1467:'',p1468:'', - p1469:'',p146a:'',p146b:'',p146c:'',p146d:'',p146e:'',p146f:'',p1470:'', - p1471:'',p1472:'',p1473:'',p1474:'',p1475:'',p1476:'',p1477:'',p1478:'', - p1479:'',p147a:'',p147b:'',p147c:'',p147d:'',p147e:'',p147f:'',p1480:'', - p1481:'',p1482:'',p1483:'',p1484:'',p1485:'',p1486:'',p1487:'',p1488:'', - p1489:'',p148a:'',p148b:'',p148c:'',p148d:'',p148e:'',p148f:'',p1490:'', - p1491:'',p1492:'',p1493:'',p1494:'',p1495:'',p1496:'',p1497:'',p1498:'', - p1499:'',p149a:'',p149b:'',p149c:'',p149d:'',p149e:'',p149f:'',p14a0:'', - p14a1:'',p14a2:'',p14a3:'',p14a4:'',p14a5:'',p14a6:'',p14a7:'',p14a8:'', - p14a9:'',p14aa:'',p14ab:'',p14ac:'',p14ad:'',p14ae:'',p14af:'',p14b0:'', - p14b1:'',p14b2:'',p14b3:'',p14b4:'',p14b5:'',p14b6:'',p14b7:'',p14b8:'', - p14b9:'',p14ba:'',p14bb:'',p14bc:'',p14bd:'',p14be:'',p14bf:'',p14c0:'', - p14c1:'',p14c2:'',p14c3:'',p14c4:'',p14c5:'',p14c6:'',p14c7:'',p14c8:'', - p14c9:'',p14ca:'',p14cb:'',p14cc:'',p14cd:'',p14ce:'',p14cf:'',p14d0:'', - p14d1:'',p14d2:'',p14d3:'',p14d4:'',p14d5:'',p14d6:'',p14d7:'',p14d8:'', - p14d9:'',p14da:'',p14db:'',p14dc:'',p14dd:'',p14de:'',p14df:'',p14e0:'', - p14e1:'',p14e2:'',p14e3:'',p14e4:'',p14e5:'',p14e6:'',p14e7:'',p14e8:'', - p14e9:'',p14ea:'',p14eb:'',p14ec:'',p14ed:'',p14ee:'',p14ef:'',p14f0:'', - p14f1:'',p14f2:'',p14f3:'',p14f4:'',p14f5:'',p14f6:'',p14f7:'',p14f8:'', - p14f9:'',p14fa:'',p14fb:'',p14fc:'',p14fd:'',p14fe:'',p14ff:'',p1500:'', - p1501:'',p1502:'',p1503:'',p1504:'',p1505:'',p1506:'',p1507:'',p1508:'', - p1509:'',p150a:'',p150b:'',p150c:'',p150d:'',p150e:'',p150f:'',p1510:'', - p1511:'',p1512:'',p1513:'',p1514:'',p1515:'',p1516:'',p1517:'',p1518:'', - p1519:'',p151a:'',p151b:'',p151c:'',p151d:'',p151e:'',p151f:'',p1520:'', - p1521:'',p1522:'',p1523:'',p1524:'',p1525:'',p1526:'',p1527:'',p1528:'', - p1529:'',p152a:'',p152b:'',p152c:'',p152d:'',p152e:'',p152f:'',p1530:'', - p1531:'',p1532:'',p1533:'',p1534:'',p1535:'',p1536:'',p1537:'',p1538:'', - p1539:'',p153a:'',p153b:'',p153c:'',p153d:'',p153e:'',p153f:'',p1540:'', - p1541:'',p1542:'',p1543:'',p1544:'',p1545:'',p1546:'',p1547:'',p1548:'', - p1549:'',p154a:'',p154b:'',p154c:'',p154d:'',p154e:'',p154f:'',p1550:'', - p1551:'',p1552:'',p1553:'',p1554:'',p1555:'',p1556:'',p1557:'',p1558:'', - p1559:'',p155a:'',p155b:'',p155c:'',p155d:'',p155e:'',p155f:'',p1560:'', - p1561:'',p1562:'',p1563:'',p1564:'',p1565:'',p1566:'',p1567:'',p1568:'', - p1569:'',p156a:'',p156b:'',p156c:'',p156d:'',p156e:'',p156f:'',p1570:'', - p1571:'',p1572:'',p1573:'',p1574:'',p1575:'',p1576:'',p1577:'',p1578:'', - p1579:'',p157a:'',p157b:'',p157c:'',p157d:'',p157e:'',p157f:'',p1580:'', - p1581:'',p1582:'',p1583:'',p1584:'',p1585:'',p1586:'',p1587:'',p1588:'', - p1589:'',p158a:'',p158b:'',p158c:'',p158d:'',p158e:'',p158f:'',p1590:'', - p1591:'',p1592:'',p1593:'',p1594:'',p1595:'',p1596:'',p1597:'',p1598:'', - p1599:'',p159a:'',p159b:'',p159c:'',p159d:'',p159e:'',p159f:'',p15a0:'', - p15a1:'',p15a2:'',p15a3:'',p15a4:'',p15a5:'',p15a6:'',p15a7:'',p15a8:'', - p15a9:'',p15aa:'',p15ab:'',p15ac:'',p15ad:'',p15ae:'',p15af:'',p15b0:'', - p15b1:'',p15b2:'',p15b3:'',p15b4:'',p15b5:'',p15b6:'',p15b7:'',p15b8:'', - p15b9:'',p15ba:'',p15bb:'',p15bc:'',p15bd:'',p15be:'',p15bf:'',p15c0:'', - p15c1:'',p15c2:'',p15c3:'',p15c4:'',p15c5:'',p15c6:'',p15c7:'',p15c8:'', - p15c9:'',p15ca:'',p15cb:'',p15cc:'',p15cd:'',p15ce:'',p15cf:'',p15d0:'', - p15d1:'',p15d2:'',p15d3:'',p15d4:'',p15d5:'',p15d6:'',p15d7:'',p15d8:'', - p15d9:'',p15da:'',p15db:'',p15dc:'',p15dd:'',p15de:'',p15df:'',p15e0:'', - p15e1:'',p15e2:'',p15e3:'',p15e4:'',p15e5:'',p15e6:'',p15e7:'',p15e8:'', - p15e9:'',p15ea:'',p15eb:'',p15ec:'',p15ed:'',p15ee:'',p15ef:'',p15f0:'', - p15f1:'',p15f2:'',p15f3:'',p15f4:'',p15f5:'',p15f6:'',p15f7:'',p15f8:'', - p15f9:'',p15fa:'',p15fb:'',p15fc:'',p15fd:'',p15fe:'',p15ff:'',p1600:'', - p1601:'',p1602:'',p1603:'',p1604:'',p1605:'',p1606:'',p1607:'',p1608:'', - p1609:'',p160a:'',p160b:'',p160c:'',p160d:'',p160e:'',p160f:'',p1610:'', - p1611:'',p1612:'',p1613:'',p1614:'',p1615:'',p1616:'',p1617:'',p1618:'', - p1619:'',p161a:'',p161b:'',p161c:'',p161d:'',p161e:'',p161f:'',p1620:'', - p1621:'',p1622:'',p1623:'',p1624:'',p1625:'',p1626:'',p1627:'',p1628:'', - p1629:'',p162a:'',p162b:'',p162c:'',p162d:'',p162e:'',p162f:'',p1630:'', - p1631:'',p1632:'',p1633:'',p1634:'',p1635:'',p1636:'',p1637:'',p1638:'', - p1639:'',p163a:'',p163b:'',p163c:'',p163d:'',p163e:'',p163f:'',p1640:'', - p1641:'',p1642:'',p1643:'',p1644:'',p1645:'',p1646:'',p1647:'',p1648:'', - p1649:'',p164a:'',p164b:'',p164c:'',p164d:'',p164e:'',p164f:'',p1650:'', - p1651:'',p1652:'',p1653:'',p1654:'',p1655:'',p1656:'',p1657:'',p1658:'', - p1659:'',p165a:'',p165b:'',p165c:'',p165d:'',p165e:'',p165f:'',p1660:'', - p1661:'',p1662:'',p1663:'',p1664:'',p1665:'',p1666:'',p1667:'',p1668:'', - p1669:'',p166a:'',p166b:'',p166c:'',p166d:'',p166e:'',p166f:'',p1670:'', - p1671:'',p1672:'',p1673:'',p1674:'',p1675:'',p1676:'',p1677:'',p1678:'', - p1679:'',p167a:'',p167b:'',p167c:'',p167d:'',p167e:'',p167f:'',p1680:'', - p1681:'',p1682:'',p1683:'',p1684:'',p1685:'',p1686:'',p1687:'',p1688:'', - p1689:'',p168a:'',p168b:'',p168c:'',p168d:'',p168e:'',p168f:'',p1690:'', - p1691:'',p1692:'',p1693:'',p1694:'',p1695:'',p1696:'',p1697:'',p1698:'', - p1699:'',p169a:'',p169b:'',p169c:'',p169d:'',p169e:'',p169f:'',p16a0:'', - p16a1:'',p16a2:'',p16a3:'',p16a4:'',p16a5:'',p16a6:'',p16a7:'',p16a8:'', - p16a9:'',p16aa:'',p16ab:'',p16ac:'',p16ad:'',p16ae:'',p16af:'',p16b0:'', - p16b1:'',p16b2:'',p16b3:'',p16b4:'',p16b5:'',p16b6:'',p16b7:'',p16b8:'', - p16b9:'',p16ba:'',p16bb:'',p16bc:'',p16bd:'',p16be:'',p16bf:'',p16c0:'', - p16c1:'',p16c2:'',p16c3:'',p16c4:'',p16c5:'',p16c6:'',p16c7:'',p16c8:'', - p16c9:'',p16ca:'',p16cb:'',p16cc:'',p16cd:'',p16ce:'',p16cf:'',p16d0:'', - p16d1:'',p16d2:'',p16d3:'',p16d4:'',p16d5:'',p16d6:'',p16d7:'',p16d8:'', - p16d9:'',p16da:'',p16db:'',p16dc:'',p16dd:'',p16de:'',p16df:'',p16e0:'', - p16e1:'',p16e2:'',p16e3:'',p16e4:'',p16e5:'',p16e6:'',p16e7:'',p16e8:'', - p16e9:'',p16ea:'',p16eb:'',p16ec:'',p16ed:'',p16ee:'',p16ef:'',p16f0:'', - p16f1:'',p16f2:'',p16f3:'',p16f4:'',p16f5:'',p16f6:'',p16f7:'',p16f8:'', - p16f9:'',p16fa:'',p16fb:'',p16fc:'',p16fd:'',p16fe:'',p16ff:'',p1700:'', - p1701:'',p1702:'',p1703:'',p1704:'',p1705:'',p1706:'',p1707:'',p1708:'', - p1709:'',p170a:'',p170b:'',p170c:'',p170d:'',p170e:'',p170f:'',p1710:'', - p1711:'',p1712:'',p1713:'',p1714:'',p1715:'',p1716:'',p1717:'',p1718:'', - p1719:'',p171a:'',p171b:'',p171c:'',p171d:'',p171e:'',p171f:'',p1720:'', - p1721:'',p1722:'',p1723:'',p1724:'',p1725:'',p1726:'',p1727:'',p1728:'', - p1729:'',p172a:'',p172b:'',p172c:'',p172d:'',p172e:'',p172f:'',p1730:'', - p1731:'',p1732:'',p1733:'',p1734:'',p1735:'',p1736:'',p1737:'',p1738:'', - p1739:'',p173a:'',p173b:'',p173c:'',p173d:'',p173e:'',p173f:'',p1740:'', - p1741:'',p1742:'',p1743:'',p1744:'',p1745:'',p1746:'',p1747:'',p1748:'', - p1749:'',p174a:'',p174b:'',p174c:'',p174d:'',p174e:'',p174f:'',p1750:'', - p1751:'',p1752:'',p1753:'',p1754:'',p1755:'',p1756:'',p1757:'',p1758:'', - p1759:'',p175a:'',p175b:'',p175c:'',p175d:'',p175e:'',p175f:'',p1760:'', - p1761:'',p1762:'',p1763:'',p1764:'',p1765:'',p1766:'',p1767:'',p1768:'', - p1769:'',p176a:'',p176b:'',p176c:'',p176d:'',p176e:'',p176f:'',p1770:'', - p1771:'',p1772:'',p1773:'',p1774:'',p1775:'',p1776:'',p1777:'',p1778:'', - p1779:'',p177a:'',p177b:'',p177c:'',p177d:'',p177e:'',p177f:'',p1780:'', - p1781:'',p1782:'',p1783:'',p1784:'',p1785:'',p1786:'',p1787:'',p1788:'', - p1789:'',p178a:'',p178b:'',p178c:'',p178d:'',p178e:'',p178f:'',p1790:'', - p1791:'',p1792:'',p1793:'',p1794:'',p1795:'',p1796:'',p1797:'',p1798:'', - p1799:'',p179a:'',p179b:'',p179c:'',p179d:'',p179e:'',p179f:'',p17a0:'', - p17a1:'',p17a2:'',p17a3:'',p17a4:'',p17a5:'',p17a6:'',p17a7:'',p17a8:'', - p17a9:'',p17aa:'',p17ab:'',p17ac:'',p17ad:'',p17ae:'',p17af:'',p17b0:'', - p17b1:'',p17b2:'',p17b3:'',p17b4:'',p17b5:'',p17b6:'',p17b7:'',p17b8:'', - p17b9:'',p17ba:'',p17bb:'',p17bc:'',p17bd:'',p17be:'',p17bf:'',p17c0:'', - p17c1:'',p17c2:'',p17c3:'',p17c4:'',p17c5:'',p17c6:'',p17c7:'',p17c8:'', - p17c9:'',p17ca:'',p17cb:'',p17cc:'',p17cd:'',p17ce:'',p17cf:'',p17d0:'', - p17d1:'',p17d2:'',p17d3:'',p17d4:'',p17d5:'',p17d6:'',p17d7:'',p17d8:'', - p17d9:'',p17da:'',p17db:'',p17dc:'',p17dd:'',p17de:'',p17df:'',p17e0:'', - p17e1:'',p17e2:'',p17e3:'',p17e4:'',p17e5:'',p17e6:'',p17e7:'',p17e8:'', - p17e9:'',p17ea:'',p17eb:'',p17ec:'',p17ed:'',p17ee:'',p17ef:'',p17f0:'', - p17f1:'',p17f2:'',p17f3:'',p17f4:'',p17f5:'',p17f6:'',p17f7:'',p17f8:'', - p17f9:'',p17fa:'',p17fb:'',p17fc:'',p17fd:'',p17fe:'',p17ff:'',p1800:'', - p1801:'',p1802:'',p1803:'',p1804:'',p1805:'',p1806:'',p1807:'',p1808:'', - p1809:'',p180a:'',p180b:'',p180c:'',p180d:'',p180e:'',p180f:'',p1810:'', - p1811:'',p1812:'',p1813:'',p1814:'',p1815:'',p1816:'',p1817:'',p1818:'', - p1819:'',p181a:'',p181b:'',p181c:'',p181d:'',p181e:'',p181f:'',p1820:'', - p1821:'',p1822:'',p1823:'',p1824:'',p1825:'',p1826:'',p1827:'',p1828:'', - p1829:'',p182a:'',p182b:'',p182c:'',p182d:'',p182e:'',p182f:'',p1830:'', - p1831:'',p1832:'',p1833:'',p1834:'',p1835:'',p1836:'',p1837:'',p1838:'', - p1839:'',p183a:'',p183b:'',p183c:'',p183d:'',p183e:'',p183f:'',p1840:'', - p1841:'',p1842:'',p1843:'',p1844:'',p1845:'',p1846:'',p1847:'',p1848:'', - p1849:'',p184a:'',p184b:'',p184c:'',p184d:'',p184e:'',p184f:'',p1850:'', - p1851:'',p1852:'',p1853:'',p1854:'',p1855:'',p1856:'',p1857:'',p1858:'', - p1859:'',p185a:'',p185b:'',p185c:'',p185d:'',p185e:'',p185f:'',p1860:'', - p1861:'',p1862:'',p1863:'',p1864:'',p1865:'',p1866:'',p1867:'',p1868:'', - p1869:'',p186a:'',p186b:'',p186c:'',p186d:'',p186e:'',p186f:'',p1870:'', - p1871:'',p1872:'',p1873:'',p1874:'',p1875:'',p1876:'',p1877:'',p1878:'', - p1879:'',p187a:'',p187b:'',p187c:'',p187d:'',p187e:'',p187f:'',p1880:'', - p1881:'',p1882:'',p1883:'',p1884:'',p1885:'',p1886:'',p1887:'',p1888:'', - p1889:'',p188a:'',p188b:'',p188c:'',p188d:'',p188e:'',p188f:'',p1890:'', - p1891:'',p1892:'',p1893:'',p1894:'',p1895:'',p1896:'',p1897:'',p1898:'', - p1899:'',p189a:'',p189b:'',p189c:'',p189d:'',p189e:'',p189f:'',p18a0:'', - p18a1:'',p18a2:'',p18a3:'',p18a4:'',p18a5:'',p18a6:'',p18a7:'',p18a8:'', - p18a9:'',p18aa:'',p18ab:'',p18ac:'',p18ad:'',p18ae:'',p18af:'',p18b0:'', - p18b1:'',p18b2:'',p18b3:'',p18b4:'',p18b5:'',p18b6:'',p18b7:'',p18b8:'', - p18b9:'',p18ba:'',p18bb:'',p18bc:'',p18bd:'',p18be:'',p18bf:'',p18c0:'', - p18c1:'',p18c2:'',p18c3:'',p18c4:'',p18c5:'',p18c6:'',p18c7:'',p18c8:'', - p18c9:'',p18ca:'',p18cb:'',p18cc:'',p18cd:'',p18ce:'',p18cf:'',p18d0:'', - p18d1:'',p18d2:'',p18d3:'',p18d4:'',p18d5:'',p18d6:'',p18d7:'',p18d8:'', - p18d9:'',p18da:'',p18db:'',p18dc:'',p18dd:'',p18de:'',p18df:'',p18e0:'', - p18e1:'',p18e2:'',p18e3:'',p18e4:'',p18e5:'',p18e6:'',p18e7:'',p18e8:'', - p18e9:'',p18ea:'',p18eb:'',p18ec:'',p18ed:'',p18ee:'',p18ef:'',p18f0:'', - p18f1:'',p18f2:'',p18f3:'',p18f4:'',p18f5:'',p18f6:'',p18f7:'',p18f8:'', - p18f9:'',p18fa:'',p18fb:'',p18fc:'',p18fd:'',p18fe:'',p18ff:'',p1900:'', - p1901:'',p1902:'',p1903:'',p1904:'',p1905:'',p1906:'',p1907:'',p1908:'', - p1909:'',p190a:'',p190b:'',p190c:'',p190d:'',p190e:'',p190f:'',p1910:'', - p1911:'',p1912:'',p1913:'',p1914:'',p1915:'',p1916:'',p1917:'',p1918:'', - p1919:'',p191a:'',p191b:'',p191c:'',p191d:'',p191e:'',p191f:'',p1920:'', - p1921:'',p1922:'',p1923:'',p1924:'',p1925:'',p1926:'',p1927:'',p1928:'', - p1929:'',p192a:'',p192b:'',p192c:'',p192d:'',p192e:'',p192f:'',p1930:'', - p1931:'',p1932:'',p1933:'',p1934:'',p1935:'',p1936:'',p1937:'',p1938:'', - p1939:'',p193a:'',p193b:'',p193c:'',p193d:'',p193e:'',p193f:'',p1940:'', - p1941:'',p1942:'',p1943:'',p1944:'',p1945:'',p1946:'',p1947:'',p1948:'', - p1949:'',p194a:'',p194b:'',p194c:'',p194d:'',p194e:'',p194f:'',p1950:'', - p1951:'',p1952:'',p1953:'',p1954:'',p1955:'',p1956:'',p1957:'',p1958:'', - p1959:'',p195a:'',p195b:'',p195c:'',p195d:'',p195e:'',p195f:'',p1960:'', - p1961:'',p1962:'',p1963:'',p1964:'',p1965:'',p1966:'',p1967:'',p1968:'', - p1969:'',p196a:'',p196b:'',p196c:'',p196d:'',p196e:'',p196f:'',p1970:'', - p1971:'',p1972:'',p1973:'',p1974:'',p1975:'',p1976:'',p1977:'',p1978:'', - p1979:'',p197a:'',p197b:'',p197c:'',p197d:'',p197e:'',p197f:'',p1980:'', - p1981:'',p1982:'',p1983:'',p1984:'',p1985:'',p1986:'',p1987:'',p1988:'', - p1989:'',p198a:'',p198b:'',p198c:'',p198d:'',p198e:'',p198f:'',p1990:'', - p1991:'',p1992:'',p1993:'',p1994:'',p1995:'',p1996:'',p1997:'',p1998:'', - p1999:'',p199a:'',p199b:'',p199c:'',p199d:'',p199e:'',p199f:'',p19a0:'', - p19a1:'',p19a2:'',p19a3:'',p19a4:'',p19a5:'',p19a6:'',p19a7:'',p19a8:'', - p19a9:'',p19aa:'',p19ab:'',p19ac:'',p19ad:'',p19ae:'',p19af:'',p19b0:'', - p19b1:'',p19b2:'',p19b3:'',p19b4:'',p19b5:'',p19b6:'',p19b7:'',p19b8:'', - p19b9:'',p19ba:'',p19bb:'',p19bc:'',p19bd:'',p19be:'',p19bf:'',p19c0:'', - p19c1:'',p19c2:'',p19c3:'',p19c4:'',p19c5:'',p19c6:'',p19c7:'',p19c8:'', - p19c9:'',p19ca:'',p19cb:'',p19cc:'',p19cd:'',p19ce:'',p19cf:'',p19d0:'', - p19d1:'',p19d2:'',p19d3:'',p19d4:'',p19d5:'',p19d6:'',p19d7:'',p19d8:'', - p19d9:'',p19da:'',p19db:'',p19dc:'',p19dd:'',p19de:'',p19df:'',p19e0:'', - p19e1:'',p19e2:'',p19e3:'',p19e4:'',p19e5:'',p19e6:'',p19e7:'',p19e8:'', - p19e9:'',p19ea:'',p19eb:'',p19ec:'',p19ed:'',p19ee:'',p19ef:'',p19f0:'', - p19f1:'',p19f2:'',p19f3:'',p19f4:'',p19f5:'',p19f6:'',p19f7:'',p19f8:'', - p19f9:'',p19fa:'',p19fb:'',p19fc:'',p19fd:'',p19fe:'',p19ff:'',p1a00:'', - p1a01:'',p1a02:'',p1a03:'',p1a04:'',p1a05:'',p1a06:'',p1a07:'',p1a08:'', - p1a09:'',p1a0a:'',p1a0b:'',p1a0c:'',p1a0d:'',p1a0e:'',p1a0f:'',p1a10:'', - p1a11:'',p1a12:'',p1a13:'',p1a14:'',p1a15:'',p1a16:'',p1a17:'',p1a18:'', - p1a19:'',p1a1a:'',p1a1b:'',p1a1c:'',p1a1d:'',p1a1e:'',p1a1f:'',p1a20:'', - p1a21:'',p1a22:'',p1a23:'',p1a24:'',p1a25:'',p1a26:'',p1a27:'',p1a28:'', - p1a29:'',p1a2a:'',p1a2b:'',p1a2c:'',p1a2d:'',p1a2e:'',p1a2f:'',p1a30:'', - p1a31:'',p1a32:'',p1a33:'',p1a34:'',p1a35:'',p1a36:'',p1a37:'',p1a38:'', - p1a39:'',p1a3a:'',p1a3b:'',p1a3c:'',p1a3d:'',p1a3e:'',p1a3f:'',p1a40:'', - p1a41:'',p1a42:'',p1a43:'',p1a44:'',p1a45:'',p1a46:'',p1a47:'',p1a48:'', - p1a49:'',p1a4a:'',p1a4b:'',p1a4c:'',p1a4d:'',p1a4e:'',p1a4f:'',p1a50:'', - p1a51:'',p1a52:'',p1a53:'',p1a54:'',p1a55:'',p1a56:'',p1a57:'',p1a58:'', - p1a59:'',p1a5a:'',p1a5b:'',p1a5c:'',p1a5d:'',p1a5e:'',p1a5f:'',p1a60:'', - p1a61:'',p1a62:'',p1a63:'',p1a64:'',p1a65:'',p1a66:'',p1a67:'',p1a68:'', - p1a69:'',p1a6a:'',p1a6b:'',p1a6c:'',p1a6d:'',p1a6e:'',p1a6f:'',p1a70:'', - p1a71:'',p1a72:'',p1a73:'',p1a74:'',p1a75:'',p1a76:'',p1a77:'',p1a78:'', - p1a79:'',p1a7a:'',p1a7b:'',p1a7c:'',p1a7d:'',p1a7e:'',p1a7f:'',p1a80:'', - p1a81:'',p1a82:'',p1a83:'',p1a84:'',p1a85:'',p1a86:'',p1a87:'',p1a88:'', - p1a89:'',p1a8a:'',p1a8b:'',p1a8c:'',p1a8d:'',p1a8e:'',p1a8f:'',p1a90:'', - p1a91:'',p1a92:'',p1a93:'',p1a94:'',p1a95:'',p1a96:'',p1a97:'',p1a98:'', - p1a99:'',p1a9a:'',p1a9b:'',p1a9c:'',p1a9d:'',p1a9e:'',p1a9f:'',p1aa0:'', - p1aa1:'',p1aa2:'',p1aa3:'',p1aa4:'',p1aa5:'',p1aa6:'',p1aa7:'',p1aa8:'', - p1aa9:'',p1aaa:'',p1aab:'',p1aac:'',p1aad:'',p1aae:'',p1aaf:'',p1ab0:'', - p1ab1:'',p1ab2:'',p1ab3:'',p1ab4:'',p1ab5:'',p1ab6:'',p1ab7:'',p1ab8:'', - p1ab9:'',p1aba:'',p1abb:'',p1abc:'',p1abd:'',p1abe:'',p1abf:'',p1ac0:'', - p1ac1:'',p1ac2:'',p1ac3:'',p1ac4:'',p1ac5:'',p1ac6:'',p1ac7:'',p1ac8:'', - p1ac9:'',p1aca:'',p1acb:'',p1acc:'',p1acd:'',p1ace:'',p1acf:'',p1ad0:'', - p1ad1:'',p1ad2:'',p1ad3:'',p1ad4:'',p1ad5:'',p1ad6:'',p1ad7:'',p1ad8:'', - p1ad9:'',p1ada:'',p1adb:'',p1adc:'',p1add:'',p1ade:'',p1adf:'',p1ae0:'', - p1ae1:'',p1ae2:'',p1ae3:'',p1ae4:'',p1ae5:'',p1ae6:'',p1ae7:'',p1ae8:'', - p1ae9:'',p1aea:'',p1aeb:'',p1aec:'',p1aed:'',p1aee:'',p1aef:'',p1af0:'', - p1af1:'',p1af2:'',p1af3:'',p1af4:'',p1af5:'',p1af6:'',p1af7:'',p1af8:'', - p1af9:'',p1afa:'',p1afb:'',p1afc:'',p1afd:'',p1afe:'',p1aff:'',p1b00:'', - p1b01:'',p1b02:'',p1b03:'',p1b04:'',p1b05:'',p1b06:'',p1b07:'',p1b08:'', - p1b09:'',p1b0a:'',p1b0b:'',p1b0c:'',p1b0d:'',p1b0e:'',p1b0f:'',p1b10:'', - p1b11:'',p1b12:'',p1b13:'',p1b14:'',p1b15:'',p1b16:'',p1b17:'',p1b18:'', - p1b19:'',p1b1a:'',p1b1b:'',p1b1c:'',p1b1d:'',p1b1e:'',p1b1f:'',p1b20:'', - p1b21:'',p1b22:'',p1b23:'',p1b24:'',p1b25:'',p1b26:'',p1b27:'',p1b28:'', - p1b29:'',p1b2a:'',p1b2b:'',p1b2c:'',p1b2d:'',p1b2e:'',p1b2f:'',p1b30:'', - p1b31:'',p1b32:'',p1b33:'',p1b34:'',p1b35:'',p1b36:'',p1b37:'',p1b38:'', - p1b39:'',p1b3a:'',p1b3b:'',p1b3c:'',p1b3d:'',p1b3e:'',p1b3f:'',p1b40:'', - p1b41:'',p1b42:'',p1b43:'',p1b44:'',p1b45:'',p1b46:'',p1b47:'',p1b48:'', - p1b49:'',p1b4a:'',p1b4b:'',p1b4c:'',p1b4d:'',p1b4e:'',p1b4f:'',p1b50:'', - p1b51:'',p1b52:'',p1b53:'',p1b54:'',p1b55:'',p1b56:'',p1b57:'',p1b58:'', - p1b59:'',p1b5a:'',p1b5b:'',p1b5c:'',p1b5d:'',p1b5e:'',p1b5f:'',p1b60:'', - p1b61:'',p1b62:'',p1b63:'',p1b64:'',p1b65:'',p1b66:'',p1b67:'',p1b68:'', - p1b69:'',p1b6a:'',p1b6b:'',p1b6c:'',p1b6d:'',p1b6e:'',p1b6f:'',p1b70:'', - p1b71:'',p1b72:'',p1b73:'',p1b74:'',p1b75:'',p1b76:'',p1b77:'',p1b78:'', - p1b79:'',p1b7a:'',p1b7b:'',p1b7c:'',p1b7d:'',p1b7e:'',p1b7f:'',p1b80:'', - p1b81:'',p1b82:'',p1b83:'',p1b84:'',p1b85:'',p1b86:'',p1b87:'',p1b88:'', - p1b89:'',p1b8a:'',p1b8b:'',p1b8c:'',p1b8d:'',p1b8e:'',p1b8f:'',p1b90:'', - p1b91:'',p1b92:'',p1b93:'',p1b94:'',p1b95:'',p1b96:'',p1b97:'',p1b98:'', - p1b99:'',p1b9a:'',p1b9b:'',p1b9c:'',p1b9d:'',p1b9e:'',p1b9f:'',p1ba0:'', - p1ba1:'',p1ba2:'',p1ba3:'',p1ba4:'',p1ba5:'',p1ba6:'',p1ba7:'',p1ba8:'', - p1ba9:'',p1baa:'',p1bab:'',p1bac:'',p1bad:'',p1bae:'',p1baf:'',p1bb0:'', - p1bb1:'',p1bb2:'',p1bb3:'',p1bb4:'',p1bb5:'',p1bb6:'',p1bb7:'',p1bb8:'', - p1bb9:'',p1bba:'',p1bbb:'',p1bbc:'',p1bbd:'',p1bbe:'',p1bbf:'',p1bc0:'', - p1bc1:'',p1bc2:'',p1bc3:'',p1bc4:'',p1bc5:'',p1bc6:'',p1bc7:'',p1bc8:'', - p1bc9:'',p1bca:'',p1bcb:'',p1bcc:'',p1bcd:'',p1bce:'',p1bcf:'',p1bd0:'', - p1bd1:'',p1bd2:'',p1bd3:'',p1bd4:'',p1bd5:'',p1bd6:'',p1bd7:'',p1bd8:'', - p1bd9:'',p1bda:'',p1bdb:'',p1bdc:'',p1bdd:'',p1bde:'',p1bdf:'',p1be0:'', - p1be1:'',p1be2:'',p1be3:'',p1be4:'',p1be5:'',p1be6:'',p1be7:'',p1be8:'', - p1be9:'',p1bea:'',p1beb:'',p1bec:'',p1bed:'',p1bee:'',p1bef:'',p1bf0:'', - p1bf1:'',p1bf2:'',p1bf3:'',p1bf4:'',p1bf5:'',p1bf6:'',p1bf7:'',p1bf8:'', - p1bf9:'',p1bfa:'',p1bfb:'',p1bfc:'',p1bfd:'',p1bfe:'',p1bff:'',p1c00:'', - p1c01:'',p1c02:'',p1c03:'',p1c04:'',p1c05:'',p1c06:'',p1c07:'',p1c08:'', - p1c09:'',p1c0a:'',p1c0b:'',p1c0c:'',p1c0d:'',p1c0e:'',p1c0f:'',p1c10:'', - p1c11:'',p1c12:'',p1c13:'',p1c14:'',p1c15:'',p1c16:'',p1c17:'',p1c18:'', - p1c19:'',p1c1a:'',p1c1b:'',p1c1c:'',p1c1d:'',p1c1e:'',p1c1f:'',p1c20:'', - p1c21:'',p1c22:'',p1c23:'',p1c24:'',p1c25:'',p1c26:'',p1c27:'',p1c28:'', - p1c29:'',p1c2a:'',p1c2b:'',p1c2c:'',p1c2d:'',p1c2e:'',p1c2f:'',p1c30:'', - p1c31:'',p1c32:'',p1c33:'',p1c34:'',p1c35:'',p1c36:'',p1c37:'',p1c38:'', - p1c39:'',p1c3a:'',p1c3b:'',p1c3c:'',p1c3d:'',p1c3e:'',p1c3f:'',p1c40:'', - p1c41:'',p1c42:'',p1c43:'',p1c44:'',p1c45:'',p1c46:'',p1c47:'',p1c48:'', - p1c49:'',p1c4a:'',p1c4b:'',p1c4c:'',p1c4d:'',p1c4e:'',p1c4f:'',p1c50:'', - p1c51:'',p1c52:'',p1c53:'',p1c54:'',p1c55:'',p1c56:'',p1c57:'',p1c58:'', - p1c59:'',p1c5a:'',p1c5b:'',p1c5c:'',p1c5d:'',p1c5e:'',p1c5f:'',p1c60:'', - p1c61:'',p1c62:'',p1c63:'',p1c64:'',p1c65:'',p1c66:'',p1c67:'',p1c68:'', - p1c69:'',p1c6a:'',p1c6b:'',p1c6c:'',p1c6d:'',p1c6e:'',p1c6f:'',p1c70:'', - p1c71:'',p1c72:'',p1c73:'',p1c74:'',p1c75:'',p1c76:'',p1c77:'',p1c78:'', - p1c79:'',p1c7a:'',p1c7b:'',p1c7c:'',p1c7d:'',p1c7e:'',p1c7f:'',p1c80:'', - p1c81:'',p1c82:'',p1c83:'',p1c84:'',p1c85:'',p1c86:'',p1c87:'',p1c88:'', - p1c89:'',p1c8a:'',p1c8b:'',p1c8c:'',p1c8d:'',p1c8e:'',p1c8f:'',p1c90:'', - p1c91:'',p1c92:'',p1c93:'',p1c94:'',p1c95:'',p1c96:'',p1c97:'',p1c98:'', - p1c99:'',p1c9a:'',p1c9b:'',p1c9c:'',p1c9d:'',p1c9e:'',p1c9f:'',p1ca0:'', - p1ca1:'',p1ca2:'',p1ca3:'',p1ca4:'',p1ca5:'',p1ca6:'',p1ca7:'',p1ca8:'', - p1ca9:'',p1caa:'',p1cab:'',p1cac:'',p1cad:'',p1cae:'',p1caf:'',p1cb0:'', - p1cb1:'',p1cb2:'',p1cb3:'',p1cb4:'',p1cb5:'',p1cb6:'',p1cb7:'',p1cb8:'', - p1cb9:'',p1cba:'',p1cbb:'',p1cbc:'',p1cbd:'',p1cbe:'',p1cbf:'',p1cc0:'', - p1cc1:'',p1cc2:'',p1cc3:'',p1cc4:'',p1cc5:'',p1cc6:'',p1cc7:'',p1cc8:'', - p1cc9:'',p1cca:'',p1ccb:'',p1ccc:'',p1ccd:'',p1cce:'',p1ccf:'',p1cd0:'', - p1cd1:'',p1cd2:'',p1cd3:'',p1cd4:'',p1cd5:'',p1cd6:'',p1cd7:'',p1cd8:'', - p1cd9:'',p1cda:'',p1cdb:'',p1cdc:'',p1cdd:'',p1cde:'',p1cdf:'',p1ce0:'', - p1ce1:'',p1ce2:'',p1ce3:'',p1ce4:'',p1ce5:'',p1ce6:'',p1ce7:'',p1ce8:'', - p1ce9:'',p1cea:'',p1ceb:'',p1cec:'',p1ced:'',p1cee:'',p1cef:'',p1cf0:'', - p1cf1:'',p1cf2:'',p1cf3:'',p1cf4:'',p1cf5:'',p1cf6:'',p1cf7:'',p1cf8:'', - p1cf9:'',p1cfa:'',p1cfb:'',p1cfc:'',p1cfd:'',p1cfe:'',p1cff:'',p1d00:'', - p1d01:'',p1d02:'',p1d03:'',p1d04:'',p1d05:'',p1d06:'',p1d07:'',p1d08:'', - p1d09:'',p1d0a:'',p1d0b:'',p1d0c:'',p1d0d:'',p1d0e:'',p1d0f:'',p1d10:'', - p1d11:'',p1d12:'',p1d13:'',p1d14:'',p1d15:'',p1d16:'',p1d17:'',p1d18:'', - p1d19:'',p1d1a:'',p1d1b:'',p1d1c:'',p1d1d:'',p1d1e:'',p1d1f:'',p1d20:'', - p1d21:'',p1d22:'',p1d23:'',p1d24:'',p1d25:'',p1d26:'',p1d27:'',p1d28:'', - p1d29:'',p1d2a:'',p1d2b:'',p1d2c:'',p1d2d:'',p1d2e:'',p1d2f:'',p1d30:'', - p1d31:'',p1d32:'',p1d33:'',p1d34:'',p1d35:'',p1d36:'',p1d37:'',p1d38:'', - p1d39:'',p1d3a:'',p1d3b:'',p1d3c:'',p1d3d:'',p1d3e:'',p1d3f:'',p1d40:'', - p1d41:'',p1d42:'',p1d43:'',p1d44:'',p1d45:'',p1d46:'',p1d47:'',p1d48:'', - p1d49:'',p1d4a:'',p1d4b:'',p1d4c:'',p1d4d:'',p1d4e:'',p1d4f:'',p1d50:'', - p1d51:'',p1d52:'',p1d53:'',p1d54:'',p1d55:'',p1d56:'',p1d57:'',p1d58:'', - p1d59:'',p1d5a:'',p1d5b:'',p1d5c:'',p1d5d:'',p1d5e:'',p1d5f:'',p1d60:'', - p1d61:'',p1d62:'',p1d63:'',p1d64:'',p1d65:'',p1d66:'',p1d67:'',p1d68:'', - p1d69:'',p1d6a:'',p1d6b:'',p1d6c:'',p1d6d:'',p1d6e:'',p1d6f:'',p1d70:'', - p1d71:'',p1d72:'',p1d73:'',p1d74:'',p1d75:'',p1d76:'',p1d77:'',p1d78:'', - p1d79:'',p1d7a:'',p1d7b:'',p1d7c:'',p1d7d:'',p1d7e:'',p1d7f:'',p1d80:'', - p1d81:'',p1d82:'',p1d83:'',p1d84:'',p1d85:'',p1d86:'',p1d87:'',p1d88:'', - p1d89:'',p1d8a:'',p1d8b:'',p1d8c:'',p1d8d:'',p1d8e:'',p1d8f:'',p1d90:'', - p1d91:'',p1d92:'',p1d93:'',p1d94:'',p1d95:'',p1d96:'',p1d97:'',p1d98:'', - p1d99:'',p1d9a:'',p1d9b:'',p1d9c:'',p1d9d:'',p1d9e:'',p1d9f:'',p1da0:'', - p1da1:'',p1da2:'',p1da3:'',p1da4:'',p1da5:'',p1da6:'',p1da7:'',p1da8:'', - p1da9:'',p1daa:'',p1dab:'',p1dac:'',p1dad:'',p1dae:'',p1daf:'',p1db0:'', - p1db1:'',p1db2:'',p1db3:'',p1db4:'',p1db5:'',p1db6:'',p1db7:'',p1db8:'', - p1db9:'',p1dba:'',p1dbb:'',p1dbc:'',p1dbd:'',p1dbe:'',p1dbf:'',p1dc0:'', - p1dc1:'',p1dc2:'',p1dc3:'',p1dc4:'',p1dc5:'',p1dc6:'',p1dc7:'',p1dc8:'', - p1dc9:'',p1dca:'',p1dcb:'',p1dcc:'',p1dcd:'',p1dce:'',p1dcf:'',p1dd0:'', - p1dd1:'',p1dd2:'',p1dd3:'',p1dd4:'',p1dd5:'',p1dd6:'',p1dd7:'',p1dd8:'', - p1dd9:'',p1dda:'',p1ddb:'',p1ddc:'',p1ddd:'',p1dde:'',p1ddf:'',p1de0:'', - p1de1:'',p1de2:'',p1de3:'',p1de4:'',p1de5:'',p1de6:'',p1de7:'',p1de8:'', - p1de9:'',p1dea:'',p1deb:'',p1dec:'',p1ded:'',p1dee:'',p1def:'',p1df0:'', - p1df1:'',p1df2:'',p1df3:'',p1df4:'',p1df5:'',p1df6:'',p1df7:'',p1df8:'', - p1df9:'',p1dfa:'',p1dfb:'',p1dfc:'',p1dfd:'',p1dfe:'',p1dff:'',p1e00:'', - p1e01:'',p1e02:'',p1e03:'',p1e04:'',p1e05:'',p1e06:'',p1e07:'',p1e08:'', - p1e09:'',p1e0a:'',p1e0b:'',p1e0c:'',p1e0d:'',p1e0e:'',p1e0f:'',p1e10:'', - p1e11:'',p1e12:'',p1e13:'',p1e14:'',p1e15:'',p1e16:'',p1e17:'',p1e18:'', - p1e19:'',p1e1a:'',p1e1b:'',p1e1c:'',p1e1d:'',p1e1e:'',p1e1f:'',p1e20:'', - p1e21:'',p1e22:'',p1e23:'',p1e24:'',p1e25:'',p1e26:'',p1e27:'',p1e28:'', - p1e29:'',p1e2a:'',p1e2b:'',p1e2c:'',p1e2d:'',p1e2e:'',p1e2f:'',p1e30:'', - p1e31:'',p1e32:'',p1e33:'',p1e34:'',p1e35:'',p1e36:'',p1e37:'',p1e38:'', - p1e39:'',p1e3a:'',p1e3b:'',p1e3c:'',p1e3d:'',p1e3e:'',p1e3f:'',p1e40:'', - p1e41:'',p1e42:'',p1e43:'',p1e44:'',p1e45:'',p1e46:'',p1e47:'',p1e48:'', - p1e49:'',p1e4a:'',p1e4b:'',p1e4c:'',p1e4d:'',p1e4e:'',p1e4f:'',p1e50:'', - p1e51:'',p1e52:'',p1e53:'',p1e54:'',p1e55:'',p1e56:'',p1e57:'',p1e58:'', - p1e59:'',p1e5a:'',p1e5b:'',p1e5c:'',p1e5d:'',p1e5e:'',p1e5f:'',p1e60:'', - p1e61:'',p1e62:'',p1e63:'',p1e64:'',p1e65:'',p1e66:'',p1e67:'',p1e68:'', - p1e69:'',p1e6a:'',p1e6b:'',p1e6c:'',p1e6d:'',p1e6e:'',p1e6f:'',p1e70:'', - p1e71:'',p1e72:'',p1e73:'',p1e74:'',p1e75:'',p1e76:'',p1e77:'',p1e78:'', - p1e79:'',p1e7a:'',p1e7b:'',p1e7c:'',p1e7d:'',p1e7e:'',p1e7f:'',p1e80:'', - p1e81:'',p1e82:'',p1e83:'',p1e84:'',p1e85:'',p1e86:'',p1e87:'',p1e88:'', - p1e89:'',p1e8a:'',p1e8b:'',p1e8c:'',p1e8d:'',p1e8e:'',p1e8f:'',p1e90:'', - p1e91:'',p1e92:'',p1e93:'',p1e94:'',p1e95:'',p1e96:'',p1e97:'',p1e98:'', - p1e99:'',p1e9a:'',p1e9b:'',p1e9c:'',p1e9d:'',p1e9e:'',p1e9f:'',p1ea0:'', - p1ea1:'',p1ea2:'',p1ea3:'',p1ea4:'',p1ea5:'',p1ea6:'',p1ea7:'',p1ea8:'', - p1ea9:'',p1eaa:'',p1eab:'',p1eac:'',p1ead:'',p1eae:'',p1eaf:'',p1eb0:'', - p1eb1:'',p1eb2:'',p1eb3:'',p1eb4:'',p1eb5:'',p1eb6:'',p1eb7:'',p1eb8:'', - p1eb9:'',p1eba:'',p1ebb:'',p1ebc:'',p1ebd:'',p1ebe:'',p1ebf:'',p1ec0:'', - p1ec1:'',p1ec2:'',p1ec3:'',p1ec4:'',p1ec5:'',p1ec6:'',p1ec7:'',p1ec8:'', - p1ec9:'',p1eca:'',p1ecb:'',p1ecc:'',p1ecd:'',p1ece:'',p1ecf:'',p1ed0:'', - p1ed1:'',p1ed2:'',p1ed3:'',p1ed4:'',p1ed5:'',p1ed6:'',p1ed7:'',p1ed8:'', - p1ed9:'',p1eda:'',p1edb:'',p1edc:'',p1edd:'',p1ede:'',p1edf:'',p1ee0:'', - p1ee1:'',p1ee2:'',p1ee3:'',p1ee4:'',p1ee5:'',p1ee6:'',p1ee7:'',p1ee8:'', - p1ee9:'',p1eea:'',p1eeb:'',p1eec:'',p1eed:'',p1eee:'',p1eef:'',p1ef0:'', - p1ef1:'',p1ef2:'',p1ef3:'',p1ef4:'',p1ef5:'',p1ef6:'',p1ef7:'',p1ef8:'', - p1ef9:'',p1efa:'',p1efb:'',p1efc:'',p1efd:'',p1efe:'',p1eff:'',p1f00:'' - } - } - let object = createObject(); - %HeapObjectVerify(object); - assertFalse(%HasFastProperties(object)); - assertEquals(Object.getPrototypeOf(object ), null); - let keys = Object.keys(object); - // modify original object - object['new_property'] = {}; - object[1] = 12; - %HeapObjectVerify(object); - - let object2 = createObject(); - %HeapObjectVerify(object2); - assertFalse(object2 === object); - assertFalse(%HasFastProperties(object2)); - assertEquals(Object.getPrototypeOf(object2), null); - assertEquals(keys, Object.keys(object2)); -}); diff --git a/implementation-contributed/v8/mjsunit/object-prevent-extensions.js b/implementation-contributed/v8/mjsunit/object-prevent-extensions.js deleted file mode 100644 index 9f3091ebb44..00000000000 --- a/implementation-contributed/v8/mjsunit/object-prevent-extensions.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the Object.preventExtensions method - ES 15.2.3.10 - -// Flags: --allow-natives-syntax - - -var obj1 = {}; -// Extensible defaults to true. -assertTrue(Object.isExtensible(obj1)); -Object.preventExtensions(obj1); - -// Make sure the is_extensible flag is set. -assertFalse(Object.isExtensible(obj1)); -obj1.x = 42; -assertEquals(undefined, obj1.x); - -// Try adding a new element. -obj1[1] = 42; -assertEquals(undefined, obj1[1]); - - -// Try when the object has an existing property. -var obj2 = {}; -assertTrue(Object.isExtensible(obj2)); -obj2.x = 42; -assertEquals(42, obj2.x); -assertTrue(Object.isExtensible(obj2)); - -Object.preventExtensions(obj2); -assertEquals(42, obj2.x); - -obj2.y = 42; -// obj2.y should still be undefined. -assertEquals(undefined, obj2.y); -// Make sure we can still write values to obj.x. -obj2.x = 43; -assertEquals(43, obj2.x) - -obj2.y = new function() { return 42; }; -// obj2.y should still be undefined. -assertEquals(undefined, obj2.y); -assertEquals(43, obj2.x) - -try { - Object.defineProperty(obj2, "y", {value: 42}); -} catch (e) { - assertTrue(/object is not extensible/.test(e)); -} - -// obj2.y should still be undefined. -assertEquals(undefined, obj2.y); -assertEquals(43, obj2.x); - -obj2[1] = 42; -assertEquals(undefined, obj2[1]); - -var arr = new Array(); -arr[1] = 10; - -Object.preventExtensions(arr); - -arr[2] = 42; -assertEquals(10, arr[1]); - -// We should still be able to change existing elements. -arr[1]= 42; -assertEquals(42, arr[1]); - - -// Test the the extensible flag is not inherited. -var parent = {}; -parent.x = 42; -Object.preventExtensions(parent); - -var child = Object.create(parent); - -// We should be able to add new properties to the child object. -child.y = 42; - -// This should have no influence on the parent class. -parent.y = 29; - - -// Test that attributes on functions are also handled correctly. -function foo() { - return 42; -} - -Object.preventExtensions(foo); - -foo.x = 29; -assertEquals(undefined, foo.x); - -// when Object.isExtensible(o) === false -// assignment should return right hand side value -var o = Object.preventExtensions({}); -var v = o.v = 50; -assertEquals(undefined, o.v); -assertEquals(50, v); - -// test same behavior as above, but for integer properties -var n = o[0] = 100; -assertEquals(undefined, o[0]); -assertEquals(100, n); - -// Fast properties should remain fast -obj = { x: 42, y: 'foo' }; -assertTrue(%HasFastProperties(obj)); -Object.preventExtensions(obj); -assertFalse(Object.isExtensible(obj)); -assertFalse(Object.isSealed(obj)); -assertTrue(%HasFastProperties(obj)); - -// Non-extensible objects should share maps where possible -obj = { prop1: 1, prop2: 2 }; -obj2 = { prop1: 3, prop2: 4 }; -assertTrue(%HaveSameMap(obj, obj2)); -Object.preventExtensions(obj); -Object.preventExtensions(obj2); -assertFalse(Object.isExtensible(obj)); -assertFalse(Object.isExtensible(obj2)); -assertFalse(Object.isSealed(obj)); -assertFalse(Object.isSealed(obj2)); -assertTrue(%HaveSameMap(obj, obj2)); - -// Non-extensible objects should share maps even when they have elements -obj = { prop1: 1, prop2: 2, 75: 'foo' }; -obj2 = { prop1: 3, prop2: 4, 150: 'bar' }; -assertTrue(%HaveSameMap(obj, obj2)); -Object.preventExtensions(obj); -Object.preventExtensions(obj2); -assertFalse(Object.isExtensible(obj)); -assertFalse(Object.isExtensible(obj2)); -assertFalse(Object.isSealed(obj)); -assertFalse(Object.isSealed(obj2)); -assertTrue(%HaveSameMap(obj, obj2)); diff --git a/implementation-contributed/v8/mjsunit/object-seal-global.js b/implementation-contributed/v8/mjsunit/object-seal-global.js deleted file mode 100644 index ec9f82e9bff..00000000000 --- a/implementation-contributed/v8/mjsunit/object-seal-global.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.seal(this); -assertTrue(Object.isSealed(this)); -assertFalse(Object.isFrozen(this)); diff --git a/implementation-contributed/v8/mjsunit/object-seal.js b/implementation-contributed/v8/mjsunit/object-seal.js deleted file mode 100644 index 265e50abc30..00000000000 --- a/implementation-contributed/v8/mjsunit/object-seal.js +++ /dev/null @@ -1,395 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the Object.seal and Object.isSealed methods - ES 19.1.2.17 and -// ES 19.1.2.13 - -// Flags: --allow-natives-syntax --opt --noalways-opt - -// Test that we return obj if non-object is passed as argument -var non_objects = new Array(undefined, null, 1, -1, 0, 42.43, Symbol("test")); -for (var key in non_objects) { - assertSame(non_objects[key], Object.seal(non_objects[key])); -} - -// Test that isFrozen always returns true for non-objects -for (var key in non_objects) { - assertTrue(Object.isSealed(non_objects[key])); -} - -// Test normal data properties. -var obj = { x: 42, z: 'foobar' }; -var desc = Object.getOwnPropertyDescriptor(obj, 'x'); -assertTrue(desc.writable); -assertTrue(desc.configurable); -assertEquals(42, desc.value); - -desc = Object.getOwnPropertyDescriptor(obj, 'z'); -assertTrue(desc.writable); -assertTrue(desc.configurable); -assertEquals('foobar', desc.value); - -assertTrue(Object.isExtensible(obj)); -assertFalse(Object.isSealed(obj)); - -Object.seal(obj); - -// Make sure we are no longer extensible. -assertFalse(Object.isExtensible(obj)); -assertTrue(Object.isSealed(obj)); - -// We should not be frozen, since we are still able to -// update values. -assertFalse(Object.isFrozen(obj)); - -// We should not allow new properties to be added. -obj.foo = 42; -assertEquals(obj.foo, undefined); - -desc = Object.getOwnPropertyDescriptor(obj, 'x'); -assertTrue(desc.writable); -assertFalse(desc.configurable); -assertEquals(42, desc.value); - -desc = Object.getOwnPropertyDescriptor(obj, 'z'); -assertTrue(desc.writable); -assertFalse(desc.configurable); -assertEquals("foobar", desc.value); - -// Since writable is not affected by seal we should still be able to -// update the values. -obj.x = "43"; -assertEquals("43", obj.x); - -// Test on accessors. -var obj2 = {}; -function get() { return 43; }; -function set() {}; -Object.defineProperty(obj2, 'x', { get: get, set: set, configurable: true }); - -desc = Object.getOwnPropertyDescriptor(obj2, 'x'); -assertTrue(desc.configurable); -assertEquals(undefined, desc.value); -assertEquals(set, desc.set); -assertEquals(get, desc.get); - -assertTrue(Object.isExtensible(obj2)); -assertFalse(Object.isSealed(obj2)); -Object.seal(obj2); - -// Since this is an accessor property the object is now effectively both -// sealed and frozen (accessors has no writable attribute). -assertTrue(Object.isFrozen(obj2)); -assertFalse(Object.isExtensible(obj2)); -assertTrue(Object.isSealed(obj2)); - -desc = Object.getOwnPropertyDescriptor(obj2, 'x'); -assertFalse(desc.configurable); -assertEquals(undefined, desc.value); -assertEquals(set, desc.set); -assertEquals(get, desc.get); - -obj2.foo = 42; -assertEquals(obj2.foo, undefined); - -// Test seal on arrays. -var arr = new Array(42,43); - -desc = Object.getOwnPropertyDescriptor(arr, '0'); -assertTrue(desc.configurable); -assertTrue(desc.writable); -assertEquals(42, desc.value); - -desc = Object.getOwnPropertyDescriptor(arr, '1'); -assertTrue(desc.configurable); -assertTrue(desc.writable); -assertEquals(43, desc.value); - -assertTrue(Object.isExtensible(arr)); -assertFalse(Object.isSealed(arr)); -Object.seal(arr); -assertTrue(Object.isSealed(arr)); -assertFalse(Object.isExtensible(arr)); -// Since the values in the array is still writable this object -// is not frozen. -assertFalse(Object.isFrozen(arr)); - -desc = Object.getOwnPropertyDescriptor(arr, '0'); -assertFalse(desc.configurable); -assertTrue(desc.writable); -assertEquals(42, desc.value); - -desc = Object.getOwnPropertyDescriptor(arr, '1'); -assertFalse(desc.configurable); -assertTrue(desc.writable); -assertEquals(43, desc.value); - -arr[0] = 'foo'; - -// We should be able to overwrite the existing value. -assertEquals('foo', arr[0]); - - -// Test that isSealed returns the correct value even if configurable -// has been set to false on all properties manually and the extensible -// flag has also been set to false manually. -var obj3 = { x: 42, y: 'foo' }; - -assertFalse(Object.isFrozen(obj3)); - -Object.defineProperty(obj3, 'x', {configurable: false, writable: true}); -Object.defineProperty(obj3, 'y', {configurable: false, writable: false}); -Object.preventExtensions(obj3); - -assertTrue(Object.isSealed(obj3)); - - -// Make sure that an object that has a configurable property -// is not classified as sealed. -var obj4 = {}; -Object.defineProperty(obj4, 'x', {configurable: true, writable: false}); -Object.defineProperty(obj4, 'y', {configurable: false, writable: false}); -Object.preventExtensions(obj4); - -assertFalse(Object.isSealed(obj4)); - -// Make sure that Object.seal returns the sealed object. -var obj4 = {}; -assertTrue(obj4 === Object.seal(obj4)); - -// -// Test that built-in array functions can't modify a sealed array. -// -obj = [1, 2, 3]; -var objControl = [4, 5, 6]; - -// Allow these functions to set up monomorphic calls, using custom built-ins. -var push_call = function(a) { a.push(10); return a; } -var pop_call = function(a) { return a.pop(); } -for (var i = 0; i < 3; i++) { - push_call(obj); - pop_call(obj); -} - -Object.seal(obj); -assertThrows(function() { push_call(obj); }, TypeError); -assertThrows(function() { pop_call(obj); }, TypeError); - -// But the control object is fine at these sites. -assertDoesNotThrow(function() { push_call(objControl); }); -assertDoesNotThrow(function() { pop_call(objControl); }); - -assertDoesNotThrow(function() { obj.push(); }); -assertThrows(function() { obj.push(3); }, TypeError); -assertThrows(function() { obj.pop(); }, TypeError); -assertThrows(function() { obj.shift(3); }, TypeError); -assertDoesNotThrow(function() { obj.unshift(); }); -assertThrows(function() { obj.unshift(1); }, TypeError); -assertThrows(function() { obj.splice(0, 0, 100, 101, 102); }, TypeError); -assertDoesNotThrow(function() { obj.splice(0,0); }); - -assertDoesNotThrow(function() { objControl.push(3); }); -assertDoesNotThrow(function() { objControl.pop(); }); -assertDoesNotThrow(function() { objControl.shift(3); }); -assertDoesNotThrow(function() { objControl.unshift(); }); -assertDoesNotThrow(function() { objControl.splice(0, 0, 100, 101, 102); }); - -// Verify that crankshaft still does the right thing. -obj = [1, 2, 3]; - -push_call = function(a) { a.push(1000); return a; } -// Include a call site that doesn't have a custom built-in. -var shift_call = function(a) { a.shift(1000); return a; } -for (var i = 0; i < 3; i++) { - push_call(obj); - shift_call(obj); -} - -%OptimizeFunctionOnNextCall(push_call); -%OptimizeFunctionOnNextCall(shift_call); -push_call(obj); -shift_call(obj); -assertOptimized(push_call); -assertOptimized(shift_call); -Object.seal(obj); -assertThrows(function() { push_call(obj); }, TypeError); -assertThrows(function() { shift_call(obj); }, TypeError); -assertUnoptimized(push_call); -assertUnoptimized(shift_call); -assertDoesNotThrow(function() { push_call(objControl); }); -assertDoesNotThrow(function() { shift_call(objControl); }); - -// Verify special behavior of splice on sealed objects. -obj = [1,2,3]; -Object.seal(obj); -assertDoesNotThrow(function() { obj.splice(0,1,100); }); -assertEquals(100, obj[0]); -assertDoesNotThrow(function() { obj.splice(0,2,1,2); }); -assertDoesNotThrow(function() { obj.splice(1,2,1,2); }); -// Count of items to delete is clamped by length. -assertDoesNotThrow(function() { obj.splice(1,2000,1,2); }); -assertThrows(function() { obj.splice(0,0,1); }, TypeError); -assertThrows(function() { obj.splice(1,2000,1,2,3); }, TypeError); - -// Test that the enumerable attribute is unperturbed by sealing. -obj = { x: 42, y: 'foo' }; -Object.defineProperty(obj, 'y', {enumerable: false}); -Object.seal(obj); -assertTrue(Object.isSealed(obj)); -assertFalse(Object.isFrozen(obj)); -desc = Object.getOwnPropertyDescriptor(obj, 'x'); -assertTrue(desc.enumerable); -desc = Object.getOwnPropertyDescriptor(obj, 'y'); -assertFalse(desc.enumerable); - -// Fast properties should remain fast -obj = { x: 42, y: 'foo' }; -assertTrue(%HasFastProperties(obj)); -Object.seal(obj); -assertTrue(Object.isSealed(obj)); -assertFalse(Object.isFrozen(obj)); -assertTrue(%HasFastProperties(obj)); - -// Sealed objects should share maps where possible -obj = { prop1: 1, prop2: 2 }; -obj2 = { prop1: 3, prop2: 4 }; -assertTrue(%HaveSameMap(obj, obj2)); -Object.seal(obj); -Object.seal(obj2); -assertTrue(Object.isSealed(obj)); -assertTrue(Object.isSealed(obj2)); -assertFalse(Object.isFrozen(obj)); -assertFalse(Object.isFrozen(obj2)); -assertTrue(%HaveSameMap(obj, obj2)); - -// Sealed objects should share maps even when they have elements -obj = { prop1: 1, prop2: 2, 75: 'foo' }; -obj2 = { prop1: 3, prop2: 4, 150: 'bar' }; -assertTrue(%HaveSameMap(obj, obj2)); -Object.seal(obj); -Object.seal(obj2); -assertTrue(Object.isSealed(obj)); -assertTrue(Object.isSealed(obj2)); -assertFalse(Object.isFrozen(obj)); -assertFalse(Object.isFrozen(obj)); -assertTrue(%HaveSameMap(obj, obj2)); - -// Setting elements after sealing should not be allowed -obj = { prop: 'thing' }; -Object.seal(obj); -assertTrue(Object.isSealed(obj)); -assertFalse(Object.isFrozen(obj)); -obj[0] = 'hello'; -assertFalse(obj.hasOwnProperty(0)); - -// Sealing an object in dictionary mode should work -// Also testing that getter/setter properties work after sealing -obj = { }; -for (var i = 0; i < 100; ++i) { - obj['x' + i] = i; -} -var accessorDidRun = false; -Object.defineProperty(obj, 'accessor', { - get: function() { return 42 }, - set: function() { accessorDidRun = true }, - configurable: true, - enumerable: true -}); - -assertFalse(%HasFastProperties(obj)); -Object.seal(obj); -assertFalse(%HasFastProperties(obj)); -assertTrue(Object.isSealed(obj)); -assertFalse(Object.isFrozen(obj)); -assertFalse(Object.isExtensible(obj)); -for (var i = 0; i < 100; ++i) { - desc = Object.getOwnPropertyDescriptor(obj, 'x' + i); - assertFalse(desc.configurable); -} -assertEquals(42, obj.accessor); -assertFalse(accessorDidRun); -obj.accessor = 'ignored value'; -assertTrue(accessorDidRun); - -// Sealing arguments should work -var func = function(arg) { - Object.seal(arguments); - assertTrue(Object.isSealed(arguments)); -}; -func('hello', 'world'); -func('goodbye', 'world'); - -// Sealing sparse arrays -var sparseArr = [0, 1]; -sparseArr[10000] = 10000; -Object.seal(sparseArr); -assertTrue(Object.isSealed(sparseArr)); - -// Accessors on fast object should behavior properly after sealing -obj = {}; -Object.defineProperty(obj, 'accessor', { - get: function() { return 42 }, - set: function() { accessorDidRun = true }, - configurable: true, - enumerable: true -}); -assertTrue(%HasFastProperties(obj)); -Object.seal(obj); -assertTrue(Object.isSealed(obj)); -assertTrue(%HasFastProperties(obj)); -assertEquals(42, obj.accessor); -accessorDidRun = false; -obj.accessor = 'ignored value'; -assertTrue(accessorDidRun); - -// Test for regression in mixed accessor/data property objects. -// The strict function is one such object. -assertTrue(Object.isSealed(Object.seal(function(){"use strict";}))); - -// Also test a simpler case -obj = {}; -Object.defineProperty(obj, 'accessor2', { - get: function() { return 42 }, - set: function() { accessorDidRun = true }, - configurable: true, - enumerable: true -}); -obj.data = 'foo'; -assertTrue(%HasFastProperties(obj)); -Object.seal(obj); -assertTrue(%HasFastProperties(obj)); -assertTrue(Object.isSealed(obj)); - -function Sealed() {} -Object.seal(Sealed); -assertDoesNotThrow(function() { return new Sealed(); }); -Sealed.prototype.prototypeExists = true; -assertTrue((new Sealed()).prototypeExists); - -obj = new Int32Array(10) -Object.seal(obj); -assertTrue(Object.isSealed(obj)); diff --git a/implementation-contributed/v8/mjsunit/object-toprimitive.js b/implementation-contributed/v8/mjsunit/object-toprimitive.js deleted file mode 100644 index 34803ec9348..00000000000 --- a/implementation-contributed/v8/mjsunit/object-toprimitive.js +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the ToPrimitive internal function used by ToNumber/ToString. -// Does it [[Get]] and [[Call]] the object's toString and valueOf properties -// correctly. Specifically, does it call [[Get]] only once per property. - -var o1 = { toString: function() { return 42; }, - valueOf: function() { return "37"; } }; -var n1 = Number(o1); -var s1 = String(o1); -assertTrue(typeof n1 == "number"); -assertTrue(typeof s1 == "string"); - -var trace = []; -var valueOfValue = 42; -var toStringValue = "foo"; -function traceValueOf () { - trace.push("vo"); - return valueOfValue; -}; -function traceToString() { - trace.push("ts"); - return toStringValue; -}; -var valueOfFunc = traceValueOf; -var toStringFunc = traceToString; - -var ot = { get toString() { trace.push("gts"); - return toStringFunc; }, - get valueOf() { trace.push("gvo"); - return valueOfFunc; } -}; - -var nt = Number(ot); -assertEquals(42, nt); -assertEquals(["gvo","vo"], trace); - -trace = []; -var st = String(ot); -assertEquals("foo", st); -assertEquals(["gts","ts"], trace); - -trace = []; -valueOfValue = ["not primitive"]; -var nt = Number(ot); -assertEquals(Number("foo"), nt); -assertEquals(["gvo", "vo", "gts", "ts"], trace); - -trace = []; -valueOfValue = 42; -toStringValue = ["not primitive"]; -var st = String(ot); -assertEquals(String(42), st); -assertEquals(["gts", "ts", "gvo", "vo"], trace); - -trace = []; -valueOfValue = ["not primitive"]; -assertThrows("Number(ot)", TypeError); -assertEquals(["gvo", "vo", "gts", "ts"], trace); - - -toStringFunc = "not callable"; -trace = []; -valueOfValue = 42; -var st = String(ot); -assertEquals(String(42), st); -assertEquals(["gts", "gvo", "vo"], trace); - -valueOfFunc = "not callable"; -trace = []; -assertThrows("String(ot)", TypeError); -assertEquals(["gts", "gvo"], trace); - -toStringFunc = traceToString; -toStringValue = "87"; -trace = []; -var nt = Number(ot); -assertEquals(87, nt); -assertEquals(["gvo", "gts", "ts"], trace); - -assertThrows('Number(Symbol())', TypeError); diff --git a/implementation-contributed/v8/mjsunit/omit-constant-mapcheck.js b/implementation-contributed/v8/mjsunit/omit-constant-mapcheck.js deleted file mode 100644 index ae6308f215e..00000000000 --- a/implementation-contributed/v8/mjsunit/omit-constant-mapcheck.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var g1 = { a:1 } - -function load() { - return g1.a; -} - -assertEquals(1, load()); -assertEquals(1, load()); -%OptimizeFunctionOnNextCall(load); -assertEquals(1, load()); -delete g1.a; -assertEquals(undefined, load()); - -var g2 = { a:2 } - -function load2() { - return g2.a; -} - -assertEquals(2, load2()); -assertEquals(2, load2()); -%OptimizeFunctionOnNextCall(load2); -assertEquals(2, load2()); -g2.b = 10; -g2.a = 5; -assertEquals(5, load2()); - -var g3 = { a:2, b:9, c:1 } - -function store(v) { - g3.a = v; - return g3.a; -} - -assertEquals(5, store(5)); -assertEquals(8, store(8)); -%OptimizeFunctionOnNextCall(store); -assertEquals(10, store(10)); -delete g3.c; -store(7); -assertEquals({a:7, b:9}, g3); diff --git a/implementation-contributed/v8/mjsunit/opt-elements-kind.js b/implementation-contributed/v8/mjsunit/opt-elements-kind.js deleted file mode 100644 index 19e3981d44b..00000000000 --- a/implementation-contributed/v8/mjsunit/opt-elements-kind.js +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -// Limit the number of stress runs to reduce polymorphism it defeats some of the -// assumptions made about how elements transitions work because transition stubs -// end up going generic. -// Flags: --stress-runs=2 - -var elements_kind = { - fast_smi_only : 'fast smi only elements', - fast : 'fast elements', - fast_double : 'fast double elements', - dictionary : 'dictionary elements', - fixed_int32 : 'fixed int8 elements', - fixed_uint8 : 'fixed uint8 elements', - fixed_int16 : 'fixed int16 elements', - fixed_uint16 : 'fixed uint16 elements', - fixed_int32 : 'fixed int32 elements', - fixed_uint32 : 'fixed uint32 elements', - fixed_float32 : 'fixed float32 elements', - fixed_float64 : 'fixed float64 elements', - fixed_uint8_clamped : 'fixed uint8_clamped elements' -} - -function getKind(obj) { - if (%HasSmiElements(obj)) return elements_kind.fast_smi_only; - if (%HasObjectElements(obj)) return elements_kind.fast; - if (%HasDoubleElements(obj)) return elements_kind.fast_double; - if (%HasDictionaryElements(obj)) return elements_kind.dictionary; - - if (%HasFixedInt8Elements(obj)) { - return elements_kind.fixed_int8; - } - if (%HasFixedUint8Elements(obj)) { - return elements_kind.fixed_uint8; - } - if (%HasFixedInt16Elements(obj)) { - return elements_kind.fixed_int16; - } - if (%HasFixedUint16Elements(obj)) { - return elements_kind.fixed_uint16; - } - if (%HasFixedInt32Elements(obj)) { - return elements_kind.fixed_int32; - } - if (%HasFixedUint32Elements(obj)) { - return elements_kind.fixed_uint32; - } - if (%HasFixedFloat32Elements(obj)) { - return elements_kind.fixed_float32; - } - if (%HasFixedFloat64Elements(obj)) { - return elements_kind.fixed_float64; - } - if (%HasFixedUint8ClampedElements(obj)) { - return elements_kind.fixed_uint8_clamped; - } -} - -function assertKind(expected, obj, name_opt) { - assertEquals(expected, getKind(obj), name_opt); -} - -%NeverOptimizeFunction(construct_smis); - -// This code exists to eliminate the learning influence of AllocationSites -// on the following tests. -var __sequence = 0; -function make_array_string() { - this.__sequence = this.__sequence + 1; - return "/* " + this.__sequence + " */ [0, 0, 0];" -} -function make_array() { - return eval(make_array_string()); -} - -function construct_smis() { - var a = make_array(); - a[0] = 0; // Send the COW array map to the steak house. - assertKind(elements_kind.fast_smi_only, a); - return a; -} - -%NeverOptimizeFunction(construct_doubles); -function construct_doubles() { - var a = construct_smis(); - a[0] = 1.5; - assertKind(elements_kind.fast_double, a); - return a; -} - -%NeverOptimizeFunction(convert_mixed); -function convert_mixed(array, value, kind) { - array[1] = value; - assertKind(kind, array); - assertEquals(value, array[1]); -} - -function test1() { - // Test transition chain SMI->DOUBLE->FAST (crankshafted function will - // transition to FAST directly). - var smis = construct_smis(); - convert_mixed(smis, 1.5, elements_kind.fast_double); - - var doubles = construct_doubles(); - convert_mixed(doubles, "three", elements_kind.fast); - - convert_mixed(construct_smis(), "three", elements_kind.fast); - convert_mixed(construct_doubles(), "three", elements_kind.fast); - - if (%ICsAreEnabled()) { - // Test that allocation sites allocate correct elements kind initially based - // on previous transitions. - smis = construct_smis(); - doubles = construct_doubles(); - convert_mixed(smis, 1, elements_kind.fast); - convert_mixed(doubles, 1, elements_kind.fast); - assertTrue(%HaveSameMap(smis, doubles)); - } -} - -function clear_ic_state() { - %ClearFunctionFeedback(construct_smis); - %ClearFunctionFeedback(construct_doubles); - %ClearFunctionFeedback(convert_mixed); -} - -test1(); -clear_ic_state(); -test1(); -clear_ic_state(); -%OptimizeFunctionOnNextCall(test1); -test1(); -clear_ic_state(); diff --git a/implementation-contributed/v8/mjsunit/optimized-array-every.js b/implementation-contributed/v8/mjsunit/optimized-array-every.js deleted file mode 100644 index 0cbab7df673..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-array-every.js +++ /dev/null @@ -1,520 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-inline-array-builtins --opt -// Flags: --no-always-opt - -// Early exit from every functions properly. -(() => { - const a = [1, 2, 3, 4, 5]; - let result = 0; - function earlyExit() { - return a.every(v => { - result += v; - return v < 2; - }); - } - assertFalse(earlyExit()); - earlyExit(); - %OptimizeFunctionOnNextCall(earlyExit); - assertFalse(earlyExit()); - assertEquals(9, result); -})(); - -// Soft-deopt plus early exit. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let result = 0; - function softyPlusEarlyExit(deopt) { - return a.every(v => { - result += v; - if (v === 4 && deopt) { - a.abc = 25; - } - return v < 8; - }); - } - assertFalse(softyPlusEarlyExit(false)); - softyPlusEarlyExit(false); - %OptimizeFunctionOnNextCall(softyPlusEarlyExit); - assertFalse(softyPlusEarlyExit(true)); - assertEquals(36*3, result); -})(); - -// Soft-deopt synced with early exit, which forces the lazy deoptimization -// continuation handler to exit. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let called_values = []; - function softyPlusEarlyExit(deopt) { - called_values = []; - return a.every(v => { - called_values.push(v); - if (v === 4 && deopt) { - a.abc = 25; - return false; - } - return v < 8; - }); - } - assertFalse(softyPlusEarlyExit(false)); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8], called_values); - softyPlusEarlyExit(false); - %OptimizeFunctionOnNextCall(softyPlusEarlyExit); - assertFalse(softyPlusEarlyExit(true)); - assertArrayEquals([1, 2, 3, 4], called_values); -})(); - -// Unknown field access leads to soft-deopt unrelated to every, should still -// lead to correct result. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function eagerDeoptInCalled(deopt) { - return a.every((v, i) => { - if (i === 13 && deopt) { - a.abc = 25; - } - result += v; - return true; - }); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - assertTrue(eagerDeoptInCalled(true)); - eagerDeoptInCalled(); - assertEquals(1625, result); -})(); - -// Length change detected during loop, must cause properly handled eager deopt. -(() => { - let called_values; - function eagerDeoptInCalled(deopt) { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - called_values = []; - return a.every((v,i) => { - called_values.push(v); - a.length = (i === 5 && deopt) ? 8 : 10; - return true; - }); - } - assertTrue(eagerDeoptInCalled()); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], called_values); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - assertTrue(eagerDeoptInCalled()); - assertTrue(eagerDeoptInCalled(true)); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8], called_values); - eagerDeoptInCalled(); -})(); - -// Lazy deopt from a callback that changes the input array. Deopt in a callback -// execution that returns true. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.every((v, i) => { - if (i === 3 && deopt) { - a[3] = 100; - %DeoptimizeNow(); - } - return true; - }); - } - assertTrue(lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertTrue(lazyChanger(true)); - assertTrue(lazyChanger()); -})(); - -// Lazy deopt from a callback that will always return true and no element is -// found. Verifies the lazy-after-callback continuation builtin. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.every((v, i) => { - if (i === 3 && deopt) { - %DeoptimizeNow(); - } - return true; - }); - } - assertTrue(lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertTrue(lazyChanger(true)); - assertTrue(lazyChanger()); -})(); - -// Lazy deopt from a callback that changes the input array. Deopt in a callback -// execution that returns true. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.every((v, i) => { - if (i === 2 && deopt) { - a[3] = 100; - %DeoptimizeNow(); - } - return true; - }); - } - assertTrue(lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertTrue(lazyChanger(true)); - assertTrue(lazyChanger()); -})(); - -// Escape analyzed array -(() => { - let result = 0; - function eagerDeoptInCalled(deopt) { - const a_noescape = [0, 1, 2, 3, 4, 5]; - a_noescape.every((v, i) => { - result += v | 0; - if (i === 13 && deopt) { - a_noescape.length = 25; - } - return true; - }); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(75, result); -})(); - -// Lazy deopt from runtime call from inlined callback function. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function lazyDeopt(deopt) { - a.every((v, i) => { - result += i; - if (i === 13 && deopt) { - %DeoptimizeNow(); - } - return true; - }); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Lazy deopt from runtime call from non-inline callback function. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function lazyDeopt(deopt) { - function callback(v, i) { - result += i; - if (i === 13 && deopt) { - %DeoptimizeNow(); - } - return true; - } - %NeverOptimizeFunction(callback); - a.every(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Call to a.every is done inside a try-catch block and the callback function -// being called actually throws. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let caught = false; - function lazyDeopt(deopt) { - try { - a.every((v, i) => { - if (i === 1 && deopt) { - throw("a"); - } - return true; - }); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.every is done inside a try-catch block and the callback function -// being called actually throws, but the callback is not inlined. -(() => { - let a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let caught = false; - function lazyDeopt(deopt) { - function callback(v, i) { - if (i === 1 && deopt) { - throw("a"); - } - return true; - } - %NeverOptimizeFunction(callback); - try { - a.every(callback); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.every is done inside a try-catch block and the callback function -// being called throws into a deoptimized caller function. -(function TestThrowIntoDeoptimizedOuter() { - const a = [1, 2, 3, 4]; - function lazyDeopt(deopt) { - function callback(v, i) { - if (i === 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - throw "some exception"; - } - return true; - } - %NeverOptimizeFunction(callback); - let result = 0; - try { - result = a.every(callback); - } catch (e) { - assertEquals("some exception", e); - result = "nope"; - } - return result; - } - assertEquals(true, lazyDeopt(false)); - assertEquals(true, lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); - assertEquals("nope", lazyDeopt(true)); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertEquals(true, lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); -})(); - -// An error generated inside the callback includes every in it's -// stack trace. -(() => { - const re = /Array\.every/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let result = 0; - b.every((v, i) => { - result += v; - if (i === 1) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return true; - }); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -// An error generated inside a non-inlined callback function also -// includes every in it's stack trace. -(() => { - const re = /Array\.every/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let did_assert_error = false; - let result = 0; - function callback(v, i) { - result += v; - if (i === 1) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - did_assert_error = true; - } - return true; - } - %NeverOptimizeFunction(callback); - b.every(callback); - return did_assert_error; - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertTrue(lazyDeopt()); -})(); - -// An error generated inside a recently deoptimized callback function -// includes every in it's stack trace. -(() => { - const re = /Array\.every/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let did_assert_error = false; - let result = 0; - b.every((v, i) => { - result += v; - if (i === 1) { - %DeoptimizeNow(); - } else if (i === 2) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - did_assert_error = true; - } - return true; - }); - return did_assert_error; - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertTrue(lazyDeopt()); -})(); - -// Verify that various exception edges are handled appropriately. -// The thrown Error object should always indicate it was created from -// an every call stack. -(() => { - const re = /Array\.every/; - const a = [1, 2, 3]; - let result = 0; - function lazyDeopt() { - a.every((v, i) => { - result += i; - if (i === 1) { - %DeoptimizeFunction(lazyDeopt); - throw new Error(); - } - return true; - }); - } - assertThrows(() => lazyDeopt()); - assertThrows(() => lazyDeopt()); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } - %OptimizeFunctionOnNextCall(lazyDeopt); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } -})(); - -// Verify holes are skipped. -(() => { - const a = [1, 2, , 3, 4]; - function withHoles() { - const callback_values = []; - a.every(v => { - callback_values.push(v); - return true; - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1, 2, 3, 4], withHoles()); -})(); - -(() => { - const a = [1.5, 2.5, , 3.5, 4.5]; - function withHoles() { - const callback_values = []; - a.every(v => { - callback_values.push(v); - return true; - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1.5, 2.5, 3.5, 4.5], withHoles()); -})(); - -// Ensure that we handle side-effects between load and call. -(() => { - function side_effect(a, b) { if (b) a.foo = 3; return a; } - %NeverOptimizeFunction(side_effect); - - function unreliable(a, b) { - return a.every(x => true, side_effect(a, b)); - } - - let a = [1, 2, 3]; - unreliable(a, false); - unreliable(a, false); - %OptimizeFunctionOnNextCall(unreliable); - unreliable(a, false); - // Now actually do change the map. - unreliable(a, true); -})(); - -// Handle callback is not callable. -(() => { - const a = [1, 2, 3, 4, 5]; - function notCallable() { - return a.every(undefined); - } - - assertThrows(notCallable, TypeError); - try { notCallable(); } catch(e) { } - %OptimizeFunctionOnNextCall(notCallable); - assertThrows(notCallable, TypeError); -})(); - -// Messing with the Array prototype causes deoptimization. -(() => { - const a = [1, 2, 3]; - let result = 0; - function prototypeChanged() { - a.every((v, i) => { - result += v; - return true; - }); - } - prototypeChanged(); - prototypeChanged(); - %OptimizeFunctionOnNextCall(prototypeChanged); - prototypeChanged(); - a.constructor = {}; - prototypeChanged(); - assertUnoptimized(prototypeChanged); - assertEquals(24, result); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-array-find.js b/implementation-contributed/v8/mjsunit/optimized-array-find.js deleted file mode 100644 index abcd2cf704c..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-array-find.js +++ /dev/null @@ -1,460 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-inline-array-builtins --opt -// Flags: --no-always-opt - -// Unknown field access leads to soft-deopt unrelated to find, should still -// lead to correct result. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function eagerDeoptInCalled(deopt) { - return a.find((v, i) => { - if (i === 13 && deopt) { - a.abc = 25; - } - result += v; - return v === 20; - }); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - assertEquals(20, eagerDeoptInCalled(true)); - eagerDeoptInCalled(); - assertEquals(1050, result); -})(); - -// Length change detected during loop, must cause properly handled eager deopt. -(() => { - let called_values; - function eagerDeoptInCalled(deopt) { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - called_values = []; - return a.find((v,i) => { - called_values.push(v); - a.length = (i === 5 && deopt) ? 8 : 10; - return v === 9; - }); - } - assertEquals(9, eagerDeoptInCalled()); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], called_values); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - assertEquals(9, eagerDeoptInCalled()); - assertEquals(undefined, eagerDeoptInCalled(true)); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8, undefined, undefined], - called_values); - eagerDeoptInCalled(); -})(); - -// Lazy deopt from a callback that changes the input array. Deopt in a callback -// execution that returns true. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.find((v, i) => { - if (i === 3 && deopt) { - a[3] = 100; - %DeoptimizeNow(); - } - return v > 3; - }); - } - assertEquals(4, lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertEquals(4, lazyChanger(true)); - assertEquals(100, lazyChanger()); -})(); - -// Lazy deopt from a callback that will always return false and no element is -// found. Verifies the lazy-after-callback continuation builtin. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.find((v, i) => { - if (i === 3 && deopt) { - %DeoptimizeNow(); - } - return false; - }); - } - assertEquals(undefined, lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertEquals(undefined, lazyChanger(true)); - assertEquals(undefined, lazyChanger()); -})(); - -// Lazy deopt from a callback that changes the input array. Deopt in a callback -// execution that returns false. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.find((v, i) => { - if (i === 2 && deopt) { - a[3] = 100; - %DeoptimizeNow(); - } - return v > 3; - }); - } - assertEquals(4, lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertEquals(100, lazyChanger(true)); - assertEquals(100, lazyChanger()); -})(); - -// Escape analyzed array -(() => { - let result = 0; - function eagerDeoptInCalled(deopt) { - const a_noescape = [0, 1, 2, 3, 4, 5]; - a_noescape.find((v, i) => { - result += v | 0; - if (i === 13 && deopt) { - a_noescape.length = 25; - } - return false; - }); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(75, result); -})(); - -// Lazy deopt from runtime call from inlined callback function. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function lazyDeopt(deopt) { - a.find((v, i) => { - result += i; - if (i === 13 && deopt) { - %DeoptimizeNow(); - } - return false; - }); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Lazy deopt from runtime call from non-inline callback function. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function lazyDeopt(deopt) { - function callback(v, i) { - result += i; - if (i === 13 && deopt) { - %DeoptimizeNow(); - } - return false; - } - %NeverOptimizeFunction(callback); - a.find(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Call to a.find is done inside a try-catch block and the callback function -// being called actually throws. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let caught = false; - function lazyDeopt(deopt) { - try { - a.find((v, i) => { - if (i === 1 && deopt) { - throw("a"); - } - return false; - }); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.find is done inside a try-catch block and the callback function -// being called actually throws, but the callback is not inlined. -(() => { - let a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let caught = false; - function lazyDeopt(deopt) { - function callback(v, i) { - if (i === 1 && deopt) { - throw("a"); - } - return false; - } - %NeverOptimizeFunction(callback); - try { - a.find(callback); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.find is done inside a try-catch block and the callback function -// being called throws into a deoptimized caller function. -(function TestThrowIntoDeoptimizedOuter() { - const a = [1, 2, 3, 4]; - function lazyDeopt(deopt) { - function callback(v, i) { - if (i === 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - throw "some exception"; - } - return v === 3; - } - %NeverOptimizeFunction(callback); - let result = 0; - try { - result = a.find(callback); - } catch (e) { - assertEquals("some exception", e); - result = "nope"; - } - return result; - } - assertEquals(3, lazyDeopt(false)); - assertEquals(3, lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); - assertEquals("nope", lazyDeopt(true)); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertEquals(3, lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); -})(); - -// An error generated inside the callback includes find in it's -// stack trace. -(() => { - const re = /Array\.find/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let result = 0; - b.find((v, i) => { - result += v; - if (i === 1) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return false; - }); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -// An error generated inside a non-inlined callback function also -// includes find in it's stack trace. -(() => { - const re = /Array\.find/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let did_assert_error = false; - let result = 0; - function callback(v, i) { - result += v; - if (i === 1) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - did_assert_error = true; - } - return false; - } - %NeverOptimizeFunction(callback); - b.find(callback); - return did_assert_error; - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertTrue(lazyDeopt()); -})(); - -// An error generated inside a recently deoptimized callback function -// includes find in it's stack trace. -(() => { - const re = /Array\.find/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let did_assert_error = false; - let result = 0; - b.find((v, i) => { - result += v; - if (i === 1) { - %DeoptimizeNow(); - } else if (i === 2) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - did_assert_error = true; - } - return false; - }); - return did_assert_error; - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertTrue(lazyDeopt()); -})(); - -// Verify that various exception edges are handled appropriately. -// The thrown Error object should always indicate it was created from -// a find call stack. -(() => { - const re = /Array\.find/; - const a = [1, 2, 3]; - let result = 0; - function lazyDeopt() { - a.find((v, i) => { - result += i; - if (i === 1) { - %DeoptimizeFunction(lazyDeopt); - throw new Error(); - } - return false; - }); - } - assertThrows(() => lazyDeopt()); - assertThrows(() => lazyDeopt()); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } - %OptimizeFunctionOnNextCall(lazyDeopt); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } -})(); - -// Messing with the Array prototype causes deoptimization. -(() => { - const a = [1, 2, 3]; - let result = 0; - function prototypeChanged() { - a.find((v, i) => { - result += v; - return false; - }); - } - prototypeChanged(); - prototypeChanged(); - %OptimizeFunctionOnNextCall(prototypeChanged); - prototypeChanged(); - a.constructor = {}; - prototypeChanged(); - assertUnoptimized(prototypeChanged); - assertEquals(24, result); -})(); - -// Verify holes are replaced with undefined. -(() => { - const a = [1, 2, , 3, 4]; - function withHoles() { - const callback_values = []; - a.find(v => { - callback_values.push(v); - return false; - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1, 2, undefined, 3, 4], withHoles()); -})(); - -(() => { - const a = [1.5, 2.5, , 3.5, 4.5]; - function withHoles() { - const callback_values = []; - a.find(v => { - callback_values.push(v); - return false; - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1.5, 2.5, undefined, 3.5, 4.5], withHoles()); -})(); - -// Ensure that we handle side-effects between load and call. -(() => { - function side_effect(a, b) { if (b) a.foo = 3; return a; } - %NeverOptimizeFunction(side_effect); - - function unreliable(a, b) { - return a.find(x => false, side_effect(a, b)); - } - - let a = [1, 2, 3]; - unreliable(a, false); - unreliable(a, false); - %OptimizeFunctionOnNextCall(unreliable); - unreliable(a, false); - // Now actually do change the map. - unreliable(a, true); -})(); - -// Handle callback is not callable. -(() => { - const a = [1, 2, 3, 4, 5]; - function notCallable() { - return a.find(undefined); - } - - assertThrows(notCallable, TypeError); - try { notCallable(); } catch(e) { } - %OptimizeFunctionOnNextCall(notCallable); - assertThrows(notCallable, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-array-findindex.js b/implementation-contributed/v8/mjsunit/optimized-array-findindex.js deleted file mode 100644 index 91f4a6cc606..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-array-findindex.js +++ /dev/null @@ -1,460 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-inline-array-builtins --opt -// Flags: --no-always-opt - -// Unknown field access leads to soft-deopt unrelated to findIndex, should still -// lead to correct result. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function eagerDeoptInCalled(deopt) { - return a.findIndex((v, i) => { - if (i === 13 && deopt) { - a.abc = 25; - } - result += v; - return v === 20; - }); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - assertEquals(19, eagerDeoptInCalled(true)); - eagerDeoptInCalled(); - assertEquals(1050, result); -})(); - -// Length change detected during loop, must cause properly handled eager deopt. -(() => { - let called_values; - function eagerDeoptInCalled(deopt) { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - called_values = []; - return a.findIndex((v,i) => { - called_values.push(v); - a.length = (i === 5 && deopt) ? 8 : 10; - return v === 9; - }); - } - assertEquals(8, eagerDeoptInCalled()); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], called_values); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - assertEquals(8, eagerDeoptInCalled()); - assertEquals(-1, eagerDeoptInCalled(true)); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8, undefined, undefined], - called_values); - eagerDeoptInCalled(); -})(); - -// Lazy deopt from a callback that changes the input array. Deopt in a callback -// execution that returns true. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.findIndex((v, i) => { - if (i === 3 && deopt) { - a[3] = 3; - %DeoptimizeNow(); - } - return v > 3; - }); - } - assertEquals(3, lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertEquals(3, lazyChanger(true)); - assertEquals(4, lazyChanger()); -})(); - -// Lazy deopt from a callback that will always return false and no element is -// found. Verifies the lazy-after-callback continuation builtin. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.findIndex((v, i) => { - if (i === 3 && deopt) { - %DeoptimizeNow(); - } - return false; - }); - } - assertEquals(-1, lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertEquals(-1, lazyChanger(true)); - assertEquals(-1, lazyChanger()); -})(); - -// Lazy deopt from a callback that changes the input array. Deopt in a callback -// execution that returns false. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.findIndex((v, i) => { - if (i === 2 && deopt) { - a[3] = 2; - %DeoptimizeNow(); - } - return v > 3; - }); - } - assertEquals(3, lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertEquals(4, lazyChanger(true)); - assertEquals(4, lazyChanger()); -})(); - -// Escape analyzed array -(() => { - let result = 0; - function eagerDeoptInCalled(deopt) { - const a_noescape = [0, 1, 2, 3, 4, 5]; - a_noescape.findIndex((v, i) => { - result += v | 0; - if (i === 13 && deopt) { - a_noescape.length = 25; - } - return false; - }); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(75, result); -})(); - -// Lazy deopt from runtime call from inlined callback function. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function lazyDeopt(deopt) { - a.findIndex((v, i) => { - result += i; - if (i === 13 && deopt) { - %DeoptimizeNow(); - } - return false; - }); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Lazy deopt from runtime call from non-inline callback function. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function lazyDeopt(deopt) { - function callback(v, i) { - result += i; - if (i === 13 && deopt) { - %DeoptimizeNow(); - } - return false; - } - %NeverOptimizeFunction(callback); - a.findIndex(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Call to a.findIndex is done inside a try-catch block and the callback function -// being called actually throws. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let caught = false; - function lazyDeopt(deopt) { - try { - a.findIndex((v, i) => { - if (i === 1 && deopt) { - throw("a"); - } - return false; - }); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.findIndex is done inside a try-catch block and the callback function -// being called actually throws, but the callback is not inlined. -(() => { - let a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let caught = false; - function lazyDeopt(deopt) { - function callback(v, i) { - if (i === 1 && deopt) { - throw("a"); - } - return false; - } - %NeverOptimizeFunction(callback); - try { - a.findIndex(callback); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.findIndex is done inside a try-catch block and the callback function -// being called throws into a deoptimized caller function. -(function TestThrowIntoDeoptimizedOuter() { - const a = [1, 2, 3, 4]; - function lazyDeopt(deopt) { - function callback(v, i) { - if (i === 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - throw "some exception"; - } - return v === 3; - } - %NeverOptimizeFunction(callback); - let result = 0; - try { - result = a.findIndex(callback); - } catch (e) { - assertEquals("some exception", e); - result = "nope"; - } - return result; - } - assertEquals(2, lazyDeopt(false)); - assertEquals(2, lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); - assertEquals("nope", lazyDeopt(true)); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertEquals(2, lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); -})(); - -// An error generated inside the callback includes findIndex in it's -// stack trace. -(() => { - const re = /Array\.findIndex/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let result = 0; - b.findIndex((v, i) => { - result += v; - if (i === 1) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return false; - }); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -// An error generated inside a non-inlined callback function also -// includes findIndex in it's stack trace. -(() => { - const re = /Array\.findIndex/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let did_assert_error = false; - let result = 0; - function callback(v, i) { - result += v; - if (i === 1) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - did_assert_error = true; - } - return false; - } - %NeverOptimizeFunction(callback); - b.findIndex(callback); - return did_assert_error; - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertTrue(lazyDeopt()); -})(); - -// An error generated inside a recently deoptimized callback function -// includes findIndex in it's stack trace. -(() => { - const re = /Array\.findIndex/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let did_assert_error = false; - let result = 0; - b.findIndex((v, i) => { - result += v; - if (i === 1) { - %DeoptimizeNow(); - } else if (i === 2) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - did_assert_error = true; - } - return false; - }); - return did_assert_error; - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertTrue(lazyDeopt()); -})(); - -// Verify that various exception edges are handled appropriately. -// The thrown Error object should always indicate it was created from -// a findIndex call stack. -(() => { - const re = /Array\.findIndex/; - const a = [1, 2, 3]; - let result = 0; - function lazyDeopt() { - a.findIndex((v, i) => { - result += i; - if (i === 1) { - %DeoptimizeFunction(lazyDeopt); - throw new Error(); - } - return false; - }); - } - assertThrows(() => lazyDeopt()); - assertThrows(() => lazyDeopt()); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } - %OptimizeFunctionOnNextCall(lazyDeopt); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } -})(); - -// Messing with the Array prototype causes deoptimization. -(() => { - const a = [1, 2, 3]; - let result = 0; - function prototypeChanged() { - a.findIndex((v, i) => { - result += v; - return false; - }); - } - prototypeChanged(); - prototypeChanged(); - %OptimizeFunctionOnNextCall(prototypeChanged); - prototypeChanged(); - a.constructor = {}; - prototypeChanged(); - assertUnoptimized(prototypeChanged); - assertEquals(24, result); -})(); - -// Verify holes are replaced with undefined. -(() => { - const a = [1, 2, , 3, 4]; - function withHoles() { - const callback_values = []; - a.findIndex(v => { - callback_values.push(v); - return false; - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1, 2, undefined, 3, 4], withHoles()); -})(); - -(() => { - const a = [1.5, 2.5, , 3.5, 4.5]; - function withHoles() { - const callback_values = []; - a.findIndex(v => { - callback_values.push(v); - return false; - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1.5, 2.5, undefined, 3.5, 4.5], withHoles()); -})(); - -// Ensure that we handle side-effects between load and call. -(() => { - function side_effect(a, b) { if (b) a.foo = 3; return a; } - %NeverOptimizeFunction(side_effect); - - function unreliable(a, b) { - return a.findIndex(x => false, side_effect(a, b)); - } - - let a = [1, 2, 3]; - unreliable(a, false); - unreliable(a, false); - %OptimizeFunctionOnNextCall(unreliable); - unreliable(a, false); - // Now actually do change the map. - unreliable(a, true); -})(); - -// Handle callback is not callable. -(() => { - const a = [1, 2, 3, 4, 5]; - function notCallable() { - return a.findIndex(undefined); - } - - assertThrows(notCallable, TypeError); - try { notCallable(); } catch(e) { } - %OptimizeFunctionOnNextCall(notCallable); - assertThrows(notCallable, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-array-some.js b/implementation-contributed/v8/mjsunit/optimized-array-some.js deleted file mode 100644 index 8d0114aa64b..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-array-some.js +++ /dev/null @@ -1,502 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-inline-array-builtins --opt -// Flags: --no-always-opt - -// Early exit from some functions properly. -(() => { - const a = [1, 2, 3, 4, 5]; - let result = 0; - function earlyExit() { - return a.some(v => { - result += v; - return v > 2; - }); - } - assertTrue(earlyExit()); - earlyExit(); - %OptimizeFunctionOnNextCall(earlyExit); - assertTrue(earlyExit()); - assertEquals(18, result); -})(); - -// Soft-deopt plus early exit. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let result = 0; - function softyPlusEarlyExit(deopt) { - return a.some(v => { - result += v; - if (v === 4 && deopt) { - a.abc = 25; - } - return v > 7; - }); - } - assertTrue(softyPlusEarlyExit(false)); - softyPlusEarlyExit(false); - %OptimizeFunctionOnNextCall(softyPlusEarlyExit); - assertTrue(softyPlusEarlyExit(true)); - assertEquals(36*3, result); -})(); - -// Soft-deopt synced with early exit, which forces the lazy deoptimization -// continuation handler to exit. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let called_values = []; - function softyPlusEarlyExit(deopt) { - called_values = []; - return a.some(v => { - called_values.push(v); - if (v === 4 && deopt) { - a.abc = 25; - return true; - } - return v > 7; - }); - } - assertTrue(softyPlusEarlyExit(false)); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8], called_values); - softyPlusEarlyExit(false); - %OptimizeFunctionOnNextCall(softyPlusEarlyExit); - assertTrue(softyPlusEarlyExit(true)); - assertArrayEquals([1, 2, 3, 4], called_values); -})(); - -// Unknown field access leads to soft-deopt unrelated to some, should still -// lead to correct result. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function eagerDeoptInCalled(deopt) { - return a.some((v, i) => { - if (i === 13 && deopt) { - a.abc = 25; - } - result += v; - return false; - }); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - assertFalse(eagerDeoptInCalled(true)); - eagerDeoptInCalled(); - assertEquals(1625, result); -})(); - -// Length change detected during loop, must cause properly handled eager deopt. -(() => { - let called_values; - function eagerDeoptInCalled(deopt) { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - called_values = []; - return a.some((v,i) => { - called_values.push(v); - a.length = (i === 5 && deopt) ? 8 : 10; - return false; - }); - } - assertFalse(eagerDeoptInCalled()); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], called_values); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - assertFalse(eagerDeoptInCalled()); - assertFalse(eagerDeoptInCalled(true)); - assertArrayEquals([1, 2, 3, 4, 5, 6, 7, 8], called_values); - eagerDeoptInCalled(); -})(); - -// Lazy deopt from a callback that changes the input array. Deopt in a callback -// execution that returns true. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.some((v, i) => { - if (i === 3 && deopt) { - a[3] = 100; - %DeoptimizeNow(); - } - return false; - }); - } - assertFalse(lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertFalse(lazyChanger(true)); - assertFalse(lazyChanger()); -})(); - -// Lazy deopt from a callback that will always return false and no element is -// found. Verifies the lazy-after-callback continuation builtin. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.some((v, i) => { - if (i === 3 && deopt) { - %DeoptimizeNow(); - } - return false; - }); - } - assertFalse(lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertFalse(lazyChanger(true)); - assertFalse(lazyChanger()); -})(); - -// Lazy deopt from a callback that changes the input array. Deopt in a callback -// execution that returns false. -(() => { - const a = [1, 2, 3, 4, 5]; - function lazyChanger(deopt) { - return a.every((v, i) => { - if (i === 2 && deopt) { - a[3] = 100; - %DeoptimizeNow(); - } - return false; - }); - } - assertFalse(lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - assertFalse(lazyChanger(true)); - assertFalse(lazyChanger()); -})(); - -// Escape analyzed array -(() => { - let result = 0; - function eagerDeoptInCalled(deopt) { - const a_noescape = [0, 1, 2, 3, 4, 5]; - a_noescape.some((v, i) => { - result += v | 0; - if (i === 13 && deopt) { - a_noescape.length = 25; - } - return false; - }); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(75, result); -})(); - -// Lazy deopt from runtime call from inlined callback function. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function lazyDeopt(deopt) { - a.some((v, i) => { - result += i; - if (i === 13 && deopt) { - %DeoptimizeNow(); - } - return false; - }); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Lazy deopt from runtime call from non-inline callback function. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let result = 0; - function lazyDeopt(deopt) { - function callback(v, i) { - result += i; - if (i === 13 && deopt) { - %DeoptimizeNow(); - } - return false; - } - %NeverOptimizeFunction(callback); - a.some(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Call to a.some is done inside a try-catch block and the callback function -// being called actually throws. -(() => { - const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25]; - let caught = false; - function lazyDeopt(deopt) { - try { - a.some((v, i) => { - if (i === 1 && deopt) { - throw("a"); - } - return false; - }); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.some is done inside a try-catch block and the callback function -// being called actually throws, but the callback is not inlined. -(() => { - let a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let caught = false; - function lazyDeopt(deopt) { - function callback(v, i) { - if (i === 1 && deopt) { - throw("a"); - } - return false; - } - %NeverOptimizeFunction(callback); - try { - a.some(callback); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.some is done inside a try-catch block and the callback function -// being called throws into a deoptimized caller function. -(function TestThrowIntoDeoptimizedOuter() { - const a = [1, 2, 3, 4]; - function lazyDeopt(deopt) { - function callback(v, i) { - if (i === 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - throw "some exception"; - } - return false; - } - %NeverOptimizeFunction(callback); - let result = 0; - try { - result = a.some(callback); - } catch (e) { - assertEquals("some exception", e); - result = "nope"; - } - return result; - } - assertEquals(false, lazyDeopt(false)); - assertEquals(false, lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); - assertEquals("nope", lazyDeopt(true)); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertEquals(false, lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); -})(); - -// An error generated inside the callback includes some in it's -// stack trace. -(() => { - const re = /Array\.some/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let result = 0; - b.some((v, i) => { - result += v; - if (i === 1) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return false; - }); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -// An error generated inside a non-inlined callback function also -// includes some in it's stack trace. -(() => { - const re = /Array\.some/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let did_assert_error = false; - let result = 0; - function callback(v, i) { - result += v; - if (i === 1) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - did_assert_error = true; - } - return false; - } - %NeverOptimizeFunction(callback); - b.some(callback); - return did_assert_error; - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertTrue(lazyDeopt()); -})(); - -// An error generated inside a recently deoptimized callback function -// includes some in it's stack trace. -(() => { - const re = /Array\.some/; - function lazyDeopt(deopt) { - const b = [1, 2, 3]; - let did_assert_error = false; - let result = 0; - b.some((v, i) => { - result += v; - if (i === 1) { - %DeoptimizeNow(); - } else if (i === 2) { - const e = new Error(); - assertTrue(re.exec(e.stack) !== null); - did_assert_error = true; - } - return false; - }); - return did_assert_error; - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertTrue(lazyDeopt()); -})(); - -// Verify that various exception edges are handled appropriately. -// The thrown Error object should always indicate it was created from -// a some call stack. -(() => { - const re = /Array\.some/; - const a = [1, 2, 3]; - let result = 0; - function lazyDeopt() { - a.some((v, i) => { - result += i; - if (i === 1) { - %DeoptimizeFunction(lazyDeopt); - throw new Error(); - } - return false; - }); - } - assertThrows(() => lazyDeopt()); - assertThrows(() => lazyDeopt()); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } - %OptimizeFunctionOnNextCall(lazyDeopt); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } -})(); - -// Messing with the Array prototype causes deoptimization. -(() => { - const a = [1, 2, 3]; - let result = 0; - function prototypeChanged() { - a.some((v, i) => { - result += v; - return false; - }); - } - prototypeChanged(); - prototypeChanged(); - %OptimizeFunctionOnNextCall(prototypeChanged); - prototypeChanged(); - a.constructor = {}; - prototypeChanged(); - assertUnoptimized(prototypeChanged); - assertEquals(24, result); -})(); - -// Verify holes are skipped. -(() => { - const a = [1, 2, , 3, 4]; - function withHoles() { - const callback_values = []; - a.some(v => { - callback_values.push(v); - return false; - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1, 2, 3, 4], withHoles()); -})(); - -(() => { - const a = [1.5, 2.5, , 3.5, 4.5]; - function withHoles() { - const callback_values = []; - a.some(v => { - callback_values.push(v); - return false; - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1.5, 2.5, 3.5, 4.5], withHoles()); -})(); - -// Handle callback is not callable. -(() => { - const a = [1, 2, 3, 4, 5]; - function notCallable() { - return a.some(undefined); - } - - assertThrows(notCallable, TypeError); - try { notCallable(); } catch(e) { } - %OptimizeFunctionOnNextCall(notCallable); - assertThrows(notCallable, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-filter.js b/implementation-contributed/v8/mjsunit/optimized-filter.js deleted file mode 100644 index 3c7d827e0f2..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-filter.js +++ /dev/null @@ -1,493 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins -// Flags: --opt --no-always-opt - -// Unknown field access leads to soft-deopt unrelated to filter, should still -// lead to correct result. -(function() { - var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; - var result = 0; - var eagerDeoptInCalled = function(deopt) { - var callback = function(v,i,o) { - if (i == 13 && deopt) { - a.abc = 25; - } - - // Ensure that the output array is smaller by shaving off the first - // item. - if (i === 0) return false; - result += v; - return true; - } - return a.filter(callback); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - var deopt_result = eagerDeoptInCalled(true); - assertEquals(a.slice(1), deopt_result); - eagerDeoptInCalled(); - assertEquals(1620, result); -})(); - -// Length change detected during loop, must cause properly handled eager deopt. -(function() { - var eagerDeoptInCalled = function(deopt) { - var a = [1,2,3,4,5,6,7,8,9,10]; - var callback = function(v,i,o) { - a.length = (i == 5 && deopt) ? 8 : 10; - return i == 0 ? false : true; - } - return a.filter(callback); - } - var like_a = [1,2,3,4,5,6,7,8,9,10]; - assertEquals(like_a.slice(1), eagerDeoptInCalled()); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - assertEquals(like_a.slice(1), eagerDeoptInCalled()); - assertEquals(like_a.slice(1).slice(0, 7), eagerDeoptInCalled(true)); - eagerDeoptInCalled(); -})(); - -// Lazy deopt from a callback that changes the input array. Ensure that -// the value stored in the output array is from the original read. -(function() { - var a = [1, 2, 3, 4, 5]; - var lazyChanger = function(deopt) { - var callback = function(v,i,o) { - if (i === 2 && deopt) { - a[2] = 100; - %DeoptimizeNow(); - } - return true; - } - return a.filter(callback); - } - assertEquals(a, lazyChanger()); - lazyChanger(); - %OptimizeFunctionOnNextCall(lazyChanger); - var deopt_result = lazyChanger(true); - assertEquals([1, 2, 3, 4, 5], deopt_result); - assertEquals([1, 2, 100, 4, 5], lazyChanger()); -})(); - -// Lazy deopt from a callback that returns false at the deopt point. -// Ensure the non-selection is respected in the output array. -(function() { - var a = [1, 2, 3, 4, 5]; - var lazyDeselection = function(deopt) { - var callback = function(v,i,o) { - if (i === 2 && deopt) { - %DeoptimizeNow(); - return false; - } - return true; - } - return a.filter(callback); - } - assertEquals(a, lazyDeselection()); - lazyDeselection(); - %OptimizeFunctionOnNextCall(lazyDeselection); - var deopt_result = lazyDeselection(true); - assertEquals([1, 2, 4, 5], deopt_result); - assertEquals([1, 2, 3, 4, 5], lazyDeselection()); -})(); - - -// Escape analyzed array -(function() { - var result = 0; - var eagerDeoptInCalled = function(deopt) { - var a_noescape = [0,1,2,3,4,5]; - var callback = function(v,i,o) { - result += v; - if (i == 13 && deopt) { - a_noescape.length = 25; - } - return true; - } - a_noescape.filter(callback); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(75, result); -})(); - -// Escape analyzed array where callback function isn't inlined, forcing a lazy -// deopt with GC that relies on the stashed-away return result fro the lazy -// deopt being properly stored in a place on the stack that gets GC'ed. -(function() { - var result = 0; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var callback = function(v,i,o) { - result += i; - if (i == 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - } - gc(); gc(); - return true; - }; - %NeverOptimizeFunction(callback); - b.filter(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); -})(); - -// Lazy deopt from runtime call from inlined callback function. -(function() { - var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 13 && deopt) { - %DeoptimizeNow(); - } - return true; - } - a.filter(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Lazy deopt from runtime call from non-inline callback function. -(function() { - var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 13 && deopt) { - %DeoptimizeNow(); - } - return true; - }; - %NeverOptimizeFunction(callback); - a.filter(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -(function() { - var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 13 && deopt) { - %DeoptimizeNow(); - gc(); - gc(); - gc(); - } - return true; - } - a.filter(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Call to a.filter is done inside a try-catch block and the callback function -// being called actually throws. -(function() { - var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; - var caught = false; - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 1 && deopt) { - throw("a"); - } - return true; - } - try { - a.filter(callback); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.filter is done inside a try-catch block and the callback function -// being called actually throws, but the callback is not inlined. -(function() { - var a = [1,2,3,4,5,6,7,8,9,10]; - var caught = false; - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 1 && deopt) { - throw("a"); - } - return true; - }; - %NeverOptimizeFunction(callback); - try { - a.filter(callback); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(() => lazyDeopt(true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.filter is done inside a try-catch block and the callback function -// being called throws into a deoptimized caller function. -(function TestThrowIntoDeoptimizedOuter() { - var a = [1,2,3,4]; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - if (i == 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - throw "some exception"; - } - return true; - }; - %NeverOptimizeFunction(callback); - var result = 0; - try { - result = a.filter(callback); - } catch (e) { - assertEquals("some exception", e) - result = "nope"; - } - return result; - } - assertEquals([1,2,3,4], lazyDeopt(false)); - assertEquals([1,2,3,4], lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); - assertEquals("nope", lazyDeopt(true)); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertEquals([1,2,3,4], lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); -})(); - -// An error generated inside the callback includes filter in it's -// stack trace. -(function() { - var re = /Array\.filter/; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var result = 0; - var callback = function(v,i,o) { - result += v; - if (i == 1) { - var e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return true; - }; - var o = [1,2,3]; - b.filter(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -// An error generated inside a non-inlined callback function also -// includes filter in it's stack trace. -(function() { - var re = /Array\.filter/; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var result = 0; - var callback = function(v,i,o) { - result += v; - if (i == 1) { - var e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return true; - }; - %NeverOptimizeFunction(callback); - var o = [1,2,3]; - b.filter(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -// An error generated inside a recently deoptimized callback function -// includes filter in it's stack trace. -(function() { - var re = /Array\.filter/; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var result = 0; - var callback = function(v,i,o) { - result += v; - if (i == 1) { - %DeoptimizeNow(); - } else if (i == 2) { - var e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return true; - }; - var o = [1,2,3]; - b.filter(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -// Verify that various exception edges are handled appropriately. -// The thrown Error object should always indicate it was created from -// a filter call stack. -(function() { - var re = /Array\.filter/; - var a = [1,2,3]; - var result = 0; - var lazyDeopt = function() { - var callback = function(v,i,o) { - result += i; - if (i == 1) { - %DeoptimizeFunction(lazyDeopt); - throw new Error(); - } - return true; - }; - a.filter(callback); - } - assertThrows(() => lazyDeopt()); - assertThrows(() => lazyDeopt()); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } - %OptimizeFunctionOnNextCall(lazyDeopt); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } -})(); - -// Verify holes are skipped. -(() => { - const a = [1, 2, , 3, 4]; - let callback_values = []; - function withHoles() { - callback_values = []; - return a.filter(v => { - callback_values.push(v); - return true; - }); - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1, 2, 3, 4], withHoles()); - assertArrayEquals([1, 2, 3, 4], callback_values); -})(); - -(() => { - const a = [1.5, 2.5, , 3.5, 4.5]; - let callback_values = []; - function withHoles() { - callback_values = []; - return a.filter(v => { - callback_values.push(v); - return true; - }); - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1.5, 2.5, 3.5, 4.5], withHoles()); - assertArrayEquals([1.5, 2.5, 3.5, 4.5], callback_values); -})(); - -// Ensure that we handle side-effects between load and call. -(() => { - function side_effect(a, b) { if (b) a.foo = 3; return a; } - %NeverOptimizeFunction(side_effect); - - function unreliable(a, b) { - return a.filter(x => x % 2 === 0, side_effect(a, b)); - } - - let a = [1, 2, 3]; - unreliable(a, false); - unreliable(a, false); - %OptimizeFunctionOnNextCall(unreliable); - unreliable(a, false); - // Now actually do change the map. - unreliable(a, true); -})(); - -// Messing with the Array species constructor causes deoptimization. -(function() { - var result = 0; - var a = [1,2,3]; - var species_breakage = function() { - var callback = function(v,i,o) { - result += v; - return true; - } - a.filter(callback); - } - species_breakage(); - species_breakage(); - %OptimizeFunctionOnNextCall(species_breakage); - species_breakage(); - a.constructor = {}; - a.constructor[Symbol.species] = function() {}; - species_breakage(); - assertUnoptimized(species_breakage); - assertEquals(24, result); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-foreach-holey-2.js b/implementation-contributed/v8/mjsunit/optimized-foreach-holey-2.js deleted file mode 100644 index 6779377dbb9..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-foreach-holey-2.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins - -(function() { - var result = 0; - var proto_set_func = function(p, s) { - %NeverOptimizeFunction(proto_set_func); - if (s) { - p[0] = 1; - } - } - var f = function(s) { - var b = [,,]; - proto_set_func(b.__proto__, s); - b[1] = 0; - b[2] = 2; - var sum = function(v,i,o) { - result += v; - }; - b.forEach(sum); - } - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); - f(true); - f(); - assertEquals(12, result); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-foreach-holey-3.js b/implementation-contributed/v8/mjsunit/optimized-foreach-holey-3.js deleted file mode 100644 index a397a0ab089..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-foreach-holey-3.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins - -(function() { - var result = 0; - var proto_set_func = function(p, s) { - %NeverOptimizeFunction(proto_set_func); - if (s) { - p[0] = 1; - } - } - var f = function(s) { - var b = [,,]; - b[1] = 0; - b[2] = 2; - var sum = function(v,i,o) { - if (i==1) proto_set_func(b.__proto__, s); - result += v; - }; - b.forEach(sum); - } - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); - f(true); - f(); - assertEquals(11, result); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-foreach-holey.js b/implementation-contributed/v8/mjsunit/optimized-foreach-holey.js deleted file mode 100644 index 90145bfe5d4..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-foreach-holey.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins - -(function() { - var result = 0; - var f = function() { - var b = [,,]; - b[0] = 0; - b[2] = 2; - var sum = function(v,i,o) { - result += i; - }; - b.forEach(sum); - } - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); - f(); - f(); - assertEquals(10, result); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-foreach-polymorph.js b/implementation-contributed/v8/mjsunit/optimized-foreach-polymorph.js deleted file mode 100644 index ed4958354f6..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-foreach-polymorph.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins - -var a = [0, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,0,0]; -var b = [{}, {}]; -var c = [,,,,,2,3,4]; -var d = [0.5,3,4]; -var e = [,,,,0.5,3,4]; - -// Make sure that calls to forEach handle a certain degree of polymorphism (no -// hole check) -(function() { - var result = 0; - var polymorph1 = function(arg) { - var sum = function(v,i,o) { - result += i; - } - arg.forEach(sum); - } - polymorph1(a); - polymorph1(a); - polymorph1(b); - polymorph1(a); - polymorph1(a); - %OptimizeFunctionOnNextCall(polymorph1); - polymorph1(a); - polymorph1(b); - assertEquals(1757, result); -})(); - -// Make sure that calls to forEach handle a certain degree of polymorphism. -(function() { - var result = 0; - var polymorph1 = function(arg) { - var sum = function(v,i,o) { - result += i; - } - arg.forEach(sum); - } - polymorph1(a); - polymorph1(a); - polymorph1(b); - polymorph1(a); - polymorph1(c); - polymorph1(a); - %OptimizeFunctionOnNextCall(polymorph1); - polymorph1(a); - polymorph1(b); - assertEquals(1775, result); -})(); - -// Make sure that calls to forEach with mixed object/double arrays don't inline -// forEach. -(function() { - var result = 0; - var polymorph1 = function(arg) { - var sum = function(v,i,o) { - result += i; - } - arg.forEach(sum); - } - polymorph1(a); - polymorph1(a); - polymorph1(b); - polymorph1(a); - polymorph1(d); - polymorph1(a); - %OptimizeFunctionOnNextCall(polymorph1); - polymorph1(a); - polymorph1(b); - assertEquals(1760, result); -})(); - -// Make sure that calls to forEach with double arrays get the right result -(function() { - var result = 0; - var polymorph1 = function(arg) { - var sum = function(v,i,o) { - result += v; - } - arg.forEach(sum); - } - polymorph1(d); - polymorph1(d); - polymorph1(d); - %OptimizeFunctionOnNextCall(polymorph1); - polymorph1(d); - polymorph1(d); - assertEquals(37.5, result); -})(); - -// Make sure that calls to forEach with mixed double arrays get the right result -(function() { - var result = 0; - var polymorph1 = function(arg) { - var sum = function(v,i,o) { - result += v; - } - arg.forEach(sum); - } - polymorph1(d); - polymorph1(e); - polymorph1(d); - %OptimizeFunctionOnNextCall(polymorph1); - polymorph1(d); - polymorph1(e); - assertEquals(37.5, result); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-foreach.js b/implementation-contributed/v8/mjsunit/optimized-foreach.js deleted file mode 100644 index 1fe54b5e9f7..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-foreach.js +++ /dev/null @@ -1,395 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins - -var a = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,0,0]; -var b = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; -var c = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; - -// Unknown field access leads to soft-deopt unrelated to forEach, should still -// lead to correct result. -(function() { - var result = 0; - var eagerDeoptInCalled = function(deopt) { - var sum = function(v,i,o) { - result += v; - if (i == 13 && deopt) { - a.abc = 25; - } - } - a.forEach(sum); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(1500, result); -})(); - -// Length change detected during loop, must cause properly handled eager deopt. -(function() { - var result = 0; - var eagerDeoptInCalled = function(deopt) { - var sum = function(v,i,o) { - result += v; - a.length = (i == 13 && deopt) ? 25 : 27; - } - a.forEach(sum); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(1500, result); -})(); - -// Escape analyzed array -(function() { - var result = 0; - var eagerDeoptInCalled = function(deopt) { - var a_noescape = [0,1,2,3,4,5]; - var sum = function(v,i,o) { - result += v; - if (i == 13 && deopt) { - a_noescape.length = 25; - } - } - a_noescape.forEach(sum); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(75, result); -})(); - -// Escape analyzed array where sum function isn't inlined, forcing a lazy deopt -// with GC that relies on the stashed-away return result fro the lazy deopt -// being properly stored in a place on the stack that gets GC'ed. -(function() { - var result = 0; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var sum = function(v,i,o) { - result += i; - if (i == 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - } - gc(); gc(); - }; - %NeverOptimizeFunction(sum); - b.forEach(sum); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); -})(); - -// Lazy deopt from runtime call from inlined callback function. -(function() { - var result = 0; - var lazyDeopt = function(deopt) { - var sum = function(v,i,o) { - result += i; - if (i == 13 && deopt) { - %DeoptimizeNow(); - } - } - b.forEach(sum); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Lazy deopt from runtime call from non-inline callback function. -(function() { - var result = 0; - var lazyDeopt = function(deopt) { - var sum = function(v,i,o) { - result += i; - if (i == 13 && deopt) { - %DeoptimizeNow(); - } - }; - %NeverOptimizeFunction(sum); - b.forEach(sum); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -(function() { - var result = 0; - var lazyDeopt = function(deopt) { - var sum = function(v,i,o) { - result += i; - if (i == 13 && deopt) { - %DeoptimizeNow(); - gc(); - gc(); - gc(); - } - } - c.forEach(sum); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Call to a.forEach is done inside a try-catch block and the callback function -// being called actually throws. -(function() { - var caught = false; - var result = 0; - var lazyDeopt = function(deopt) { - var sum = function(v,i,o) { - result += i; - if (i == 1 && deopt) { - throw("a"); - } - } - try { - c.forEach(sum); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(lazyDeopt.bind(this, true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.forEach is done inside a try-catch block and the callback function -// being called actually throws, but the callback is not inlined. -(function() { - var caught = false; - var result = 0; - var lazyDeopt = function(deopt) { - var sum = function(v,i,o) { - result += i; - if (i == 1 && deopt) { - throw("a"); - } - }; - %NeverOptimizeFunction(sum); - try { - c.forEach(sum); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(lazyDeopt.bind(this, true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.forEach is done inside a try-catch block and the callback function -// being called throws into a deoptimized caller function. -(function TestThrowIntoDeoptimizedOuter() { - var a = [1,2,3,4]; - var lazyDeopt = function(deopt) { - var sum = function(v,i,o) { - result += v; - if (i == 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - throw "some exception"; - } - }; - %NeverOptimizeFunction(sum); - var result = 0; - try { - a.forEach(sum); - } catch (e) { - assertEquals("some exception", e) - result += 100; - } - return result; - } - assertEquals(10, lazyDeopt(false)); - assertEquals(10, lazyDeopt(false)); - assertEquals(103, lazyDeopt(true)); - assertEquals(103, lazyDeopt(true)); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertEquals(10, lazyDeopt(false)); - assertEquals(103, lazyDeopt(true)); -})(); - -(function() { - var re = /Array\.forEach/; - var lazyDeopt = function foobar(deopt) { - var b = [1,2,3]; - var result = 0; - var sum = function(v,i,o) { - result += v; - if (i == 1) { - var e = new Error(); - print(e.stack); - assertTrue(re.exec(e.stack) !== null); - } - }; - var o = [1,2,3]; - b.forEach(sum); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -(function() { - var re = /Array\.forEach/; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var result = 0; - var sum = function(v,i,o) { - result += v; - if (i == 1) { - var e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - }; - %NeverOptimizeFunction(sum); - var o = [1,2,3]; - b.forEach(sum); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -(function() { - var re = /Array\.forEach/; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var result = 0; - var sum = function(v,i,o) { - result += v; - if (i == 1) { - %DeoptimizeNow(); - } else if (i == 2) { - var e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - }; - var o = [1,2,3]; - b.forEach(sum); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -(function() { - var re = /Array\.forEach/; - var a = [1,2,3]; - var result = 0; - var lazyDeopt = function() { - var sum = function(v,i,o) { - result += i; - if (i == 1) { - %DeoptimizeFunction(lazyDeopt); - throw new Error(); - } - }; - a.forEach(sum); - } - assertThrows(() => lazyDeopt()); - assertThrows(() => lazyDeopt()); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } - %OptimizeFunctionOnNextCall(lazyDeopt); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } -})(); - -// Verify holes are skipped. -(() => { - const a = [1, 2, , 3, 4]; - function withHoles() { - const callback_values = []; - a.forEach(v => { - callback_values.push(v); - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1, 2, 3, 4], withHoles()); -})(); - -(() => { - const a = [1.5, 2.5, , 3.5, 4.5]; - function withHoles() { - const callback_values = []; - a.forEach(v => { - callback_values.push(v); - }); - return callback_values; - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1.5, 2.5, 3.5, 4.5], withHoles()); -})(); - -// Ensure that we handle side-effects between load and call. -(() => { - function side_effect(a, b) { if (b) a.foo = 3; return a; } - %NeverOptimizeFunction(side_effect); - - function unreliable(a, b) { - let sum = 0; - return a.forEach(x => sum += x, side_effect(a, b)); - } - - let a = [1, 2, 3]; - unreliable(a, false); - unreliable(a, false); - %OptimizeFunctionOnNextCall(unreliable); - unreliable(a, false); - // Now actually do change the map. - unreliable(a, true); -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-map.js b/implementation-contributed/v8/mjsunit/optimized-map.js deleted file mode 100644 index 6a3df4d7d49..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-map.js +++ /dev/null @@ -1,552 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins -// Flags: --opt --no-always-opt - -var a = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,0,0]; -var b = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; -var c = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; - -// Unknown field access leads to soft-deopt unrelated to map, should still -// lead to correct result. -(function() { - var result = 0; - var eagerDeoptInCalled = function(deopt) { - var callback = function(v,i,o) { - result += v; - if (i == 13 && deopt) { - a.abc = 25; - } - return v; - } - a.map(callback); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(1500, result); -})(); - -// Length change detected during loop, must cause properly handled eager deopt. -(function() { - var result = 0; - var eagerDeoptInCalled = function(deopt) { - var callback = function(v,i,o) { - result += v; - a.length = (i == 13 && deopt) ? 25 : 27; - return v; - } - a.map(callback); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(1500, result); -})(); - -// Escape analyzed array -(function() { - var result = 0; - var eagerDeoptInCalled = function(deopt) { - var a_noescape = [0,1,2,3,4,5]; - var callback = function(v,i,o) { - result += v; - if (i == 13 && deopt) { - a_noescape.length = 25; - } - return v; - } - a_noescape.map(callback); - } - eagerDeoptInCalled(); - eagerDeoptInCalled(); - %OptimizeFunctionOnNextCall(eagerDeoptInCalled); - eagerDeoptInCalled(); - eagerDeoptInCalled(true); - eagerDeoptInCalled(); - assertEquals(75, result); -})(); - -// Escape analyzed array where callback function isn't inlined, forcing a lazy -// deopt with GC that relies on the stashed-away return result fro the lazy -// deopt being properly stored in a place on the stack that gets GC'ed. -(function() { - var result = 0; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var callback = function(v,i,o) { - result += i; - if (i == 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - } - gc(); gc(); - return v; - }; - %NeverOptimizeFunction(callback); - b.map(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); -})(); - -// Escape analyzed array where callback function isn't inlined, forcing a lazy -// deopt. Check that the result of the callback function is passed correctly -// to the lazy deopt and that the final result of map is as expected. -(function() { - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var callback = function(v,i,o) { - if (i == 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - } - return 2 * v; - }; - %NeverOptimizeFunction(callback); - return b.map(callback); - } - assertEquals([2,4,6], lazyDeopt()); - assertEquals([2,4,6], lazyDeopt()); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertEquals([2,4,6], lazyDeopt(true)); -})(); - -// Lazy deopt from runtime call from inlined callback function. -(function() { - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 13 && deopt) { - %DeoptimizeNow(); - } - return v; - } - b.map(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Lazy deopt from runtime call from non-inline callback function. -(function() { - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 13 && deopt) { - %DeoptimizeNow(); - } - return v; - }; - %NeverOptimizeFunction(callback); - b.map(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -(function() { - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 13 && deopt) { - %DeoptimizeNow(); - gc(); - gc(); - gc(); - } - return v; - } - c.map(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - lazyDeopt(true); - lazyDeopt(); - assertEquals(1500, result); -})(); - -// Call to a.map is done inside a try-catch block and the callback function -// being called actually throws. -(function() { - var caught = false; - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 1 && deopt) { - throw("a"); - } - return v; - } - try { - c.map(callback); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(lazyDeopt.bind(this, true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.map is done inside a try-catch block and the callback function -// being called actually throws, but the callback is not inlined. -(function() { - var caught = false; - var result = 0; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - result += i; - if (i == 1 && deopt) { - throw("a"); - } - return v; - }; - %NeverOptimizeFunction(callback); - try { - c.map(callback); - } catch (e) { - caught = true; - } - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); - assertDoesNotThrow(lazyDeopt.bind(this, true)); - assertTrue(caught); - lazyDeopt(); -})(); - -// Call to a.map is done inside a try-catch block and the callback function -// being called throws into a deoptimized caller function. -(function TestThrowIntoDeoptimizedOuter() { - var a = [1,2,3,4]; - var lazyDeopt = function(deopt) { - var callback = function(v,i,o) { - if (i == 1 && deopt) { - %DeoptimizeFunction(lazyDeopt); - throw "some exception"; - } - return 2 * v; - }; - %NeverOptimizeFunction(callback); - var result = 0; - try { - result = a.map(callback); - } catch (e) { - assertEquals("some exception", e) - result = "nope"; - } - return result; - } - assertEquals([2,4,6,8], lazyDeopt(false)); - assertEquals([2,4,6,8], lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); - assertEquals("nope", lazyDeopt(true)); - %OptimizeFunctionOnNextCall(lazyDeopt); - assertEquals([2,4,6,8], lazyDeopt(false)); - assertEquals("nope", lazyDeopt(true)); -})(); - -(function() { - var re = /Array\.map/; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var result = 0; - var callback = function(v,i,o) { - result += v; - if (i == 1) { - var e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return v; - }; - var o = [1,2,3]; - b.map(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -(function() { - var re = /Array\.map/; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var result = 0; - var callback = function(v,i,o) { - result += v; - if (i == 1) { - var e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return v; - }; - %NeverOptimizeFunction(callback); - var o = [1,2,3]; - b.map(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -(function() { - var re = /Array\.map/; - var lazyDeopt = function(deopt) { - var b = [1,2,3]; - var result = 0; - var callback = function(v,i,o) { - result += v; - if (i == 1) { - %DeoptimizeNow(); - } else if (i == 2) { - var e = new Error(); - assertTrue(re.exec(e.stack) !== null); - } - return v; - }; - var o = [1,2,3]; - b.map(callback); - } - lazyDeopt(); - lazyDeopt(); - %OptimizeFunctionOnNextCall(lazyDeopt); - lazyDeopt(); -})(); - -(function() { - var re = /Array\.map/; - var a = [1,2,3]; - var result = 0; - var lazyDeopt = function() { - var callback = function(v,i,o) { - result += i; - if (i == 1) { - %DeoptimizeFunction(lazyDeopt); - throw new Error(); - } - return v; - }; - a.map(callback); - } - assertThrows(() => lazyDeopt()); - assertThrows(() => lazyDeopt()); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } - %OptimizeFunctionOnNextCall(lazyDeopt); - try { - lazyDeopt(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } -})(); - -// Verify that we remain in optimized code despite transitions in the output -// array. -(function() { - var result = 0; - var to_double = function() { - var callback = function(v,i,o) { - result += v; - if (i < 5) { - // First transition the output array to PACKED_DOUBLE_ELEMENTS. - return v + 0.5; - } else { - // Then return smi values and make sure they can live in the double - // array. - return v; - } - } - return c.map(callback); - } - to_double(); - to_double(); - %OptimizeFunctionOnNextCall(to_double); - var output = to_double(); - assertTrue(%HasDoubleElements(output)); - assertEquals(1.5, output[0]); - assertEquals(6, output[5]); - assertEquals(975, result); - assertOptimized(to_double); -})(); - -(function() { - var result = 0; - var to_fast = function() { - var callback = function(v,i,o) { - result += v; - if (i < 5) { - // First transition the output array to PACKED_DOUBLE_ELEMENTS. - return v + 0.5; - } else if (i < 10) { - // Then return smi values and make sure they can live in the double - // array. - return v; - } else { - // Later, to PACKED_ELEMENTS. - return v + 'hello'; - } - } - return c.map(callback); - } - to_fast(); - to_fast(); - %OptimizeFunctionOnNextCall(to_fast); - var output = to_fast(); - %HasObjectElements(output); - assertEquals(975, result); - assertEquals("11hello", output[10]); - assertOptimized(to_fast); -})(); - -// TurboFan specializes on number results, ensure the code path is -// tested. -(function() { - var a = [1, 2, 3]; - function double_results() { - // TurboFan recognizes the result is a double. - var callback = v => v + 0.5; - return a.map(callback); - } - double_results(); - double_results(); - %OptimizeFunctionOnNextCall(double_results); - double_results(); - assertEquals(1.5, double_results()[0]); -})(); - -// TurboFan specializes on non-number results, ensure the code path is -// tested. -(function() { - var a = [1, 2, 3]; - function string_results() { - // TurboFan recognizes the result is a string. - var callback = v => "hello" + v.toString(); - return a.map(callback); - } - string_results(); - string_results(); - %OptimizeFunctionOnNextCall(string_results); - string_results(); - assertEquals("hello1", string_results()[0]); -})(); - -// Verify holes are not visited. -(() => { - const a = [1, 2, , 3, 4]; - let callback_values = []; - function withHoles() { - callback_values = []; - return a.map(v => { - callback_values.push(v); - return v; - }); - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1, 2, , 3, 4], withHoles()); - assertArrayEquals([1, 2, 3, 4], callback_values); -})(); - -(() => { - const a = [1.5, 2.5, , 3.5, 4.5]; - let callback_values = []; - function withHoles() { - callback_values = []; - return a.map(v => { - callback_values.push(v); - return v; - }); - } - withHoles(); - withHoles(); - %OptimizeFunctionOnNextCall(withHoles); - assertArrayEquals([1.5, 2.5, , 3.5, 4.5], withHoles()); - assertArrayEquals([1.5, 2.5, 3.5, 4.5], callback_values); -})(); - -// Ensure that we handle side-effects between load and call. -(() => { - function side_effect(a, b) { if (b) a.foo = 3; return a; } - %NeverOptimizeFunction(side_effect); - - function unreliable(a, b) { - return a.map(x => x * 2, side_effect(a, b)); - } - - let a = [1, 2, 3]; - unreliable(a, false); - unreliable(a, false); - %OptimizeFunctionOnNextCall(unreliable); - unreliable(a, false); - // Now actually do change the map. - unreliable(a, true); -})(); - -// Messing with the Array species constructor causes deoptimization. -(function() { - var result = 0; - var a = [1,2,3]; - var species_breakage = function() { - var callback = function(v,i,o) { - result += v; - return v; - } - a.map(callback); - } - species_breakage(); - species_breakage(); - %OptimizeFunctionOnNextCall(species_breakage); - species_breakage(); - a.constructor = {}; - a.constructor[Symbol.species] = function() {}; - species_breakage(); - assertUnoptimized(species_breakage); - assertEquals(24, result); -})(); - -///////////////////////////////////////////////////////////////////////// -// -// Any tests added below species_breakage won't test optimized map calls -// because the array species constructor change disables inlining of -// Array.prototype.map across the isolate. -// -///////////////////////////////////////////////////////////////////////// diff --git a/implementation-contributed/v8/mjsunit/optimized-reduce.js b/implementation-contributed/v8/mjsunit/optimized-reduce.js deleted file mode 100644 index efcb7ccd1c2..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-reduce.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins -// Flags: --opt --no-always-opt - -// Make sure we gracefully handle the case of an empty array in -// optimized code. -(function() { - var nothingThere = function(only_holes) { - var a = [1,2,,3]; // holey smi array. - if (only_holes) { - a = [,,,]; // also a holey smi array. - } - return a.reduce((r,v,i,o)=>r+v); - } - nothingThere(); - nothingThere(); - %OptimizeFunctionOnNextCall(nothingThere); - assertThrows(() => nothingThere(true)); -})(); - -// An error generated inside the callback includes reduce in it's -// stack trace. -(function() { - var re = /Array\.reduce/; - var alwaysThrows = function() { - var b = [,,,]; - var result = 0; - var callback = function(r,v,i,o) { - return r + v; - }; - b.reduce(callback); - } - try { - alwaysThrows(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } - try { alwaysThrows(); } catch (e) {} - try { alwaysThrows(); } catch (e) {} - %OptimizeFunctionOnNextCall(alwaysThrows); - try { - alwaysThrows(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-reduceright.js b/implementation-contributed/v8/mjsunit/optimized-reduceright.js deleted file mode 100644 index 2689a39de53..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-reduceright.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins -// Flags: --opt --no-always-opt - -// Make sure we gracefully handle the case of an empty array in -// optimized code. -(function() { - var nothingThere = function(only_holes) { - var a = [1,2,,3]; // holey smi array. - if (only_holes) { - a = [,,,]; // also a holey smi array. - } - return a.reduceRight((r,v,i,o)=>r+v); - } - nothingThere(); - nothingThere(); - %OptimizeFunctionOnNextCall(nothingThere); - assertThrows(() => nothingThere(true)); -})(); - -// An error generated inside the callback includes reduce in it's -// stack trace. -(function() { - var re = /Array\.reduceRight/; - var alwaysThrows = function() { - var b = [,,,]; - var result = 0; - var callback = function(r,v,i,o) { - return r + v; - }; - b.reduceRight(callback); - } - try { - alwaysThrows(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } - try { alwaysThrows(); } catch (e) {} - try { alwaysThrows(); } catch (e) {} - %OptimizeFunctionOnNextCall(alwaysThrows); - try { - alwaysThrows(); - } catch (e) { - assertTrue(re.exec(e.stack) !== null); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/optimized-typeof.js b/implementation-contributed/v8/mjsunit/optimized-typeof.js deleted file mode 100644 index b0c0725c519..00000000000 --- a/implementation-contributed/v8/mjsunit/optimized-typeof.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function typeofDirectly() { - return typeof({}) === "undefined"; -} - -typeofDirectly(); -typeofDirectly(); -%OptimizeFunctionOnNextCall(typeofDirectly); -typeofDirectly(); - -function typeofViaVariable() { - var foo = typeof({}) - return foo === "undefined"; -} - -typeofViaVariable(); -typeofViaVariable(); -%OptimizeFunctionOnNextCall(typeofViaVariable); -typeofViaVariable(); diff --git a/implementation-contributed/v8/mjsunit/osr-elements-kind.js b/implementation-contributed/v8/mjsunit/osr-elements-kind.js deleted file mode 100644 index 2440f5c8adf..00000000000 --- a/implementation-contributed/v8/mjsunit/osr-elements-kind.js +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -// Limit the number of stress runs to reduce polymorphism it defeats some of the -// assumptions made about how elements transitions work because transition stubs -// end up going generic. -// Flags: --stress-runs=1 - -var elements_kind = { - fast_smi_only : 'fast smi only elements', - fast : 'fast elements', - fast_double : 'fast double elements', - dictionary : 'dictionary elements', - fixed_int32 : 'fixed int8 elements', - fixed_uint8 : 'fixed uint8 elements', - fixed_int16 : 'fixed int16 elements', - fixed_uint16 : 'fixed uint16 elements', - fixed_int32 : 'fixed int32 elements', - fixed_uint32 : 'fixed uint32 elements', - fixed_float32 : 'fixed float32 elements', - fixed_float64 : 'fixed float64 elements', - fixed_uint8_clamped : 'fixed uint8_clamped elements' -} - -function getKind(obj) { - if (%HasSmiElements(obj)) return elements_kind.fast_smi_only; - if (%HasObjectElements(obj)) return elements_kind.fast; - if (%HasDoubleElements(obj)) return elements_kind.fast_double; - if (%HasDictionaryElements(obj)) return elements_kind.dictionary; - - if (%HasFixedInt8Elements(obj)) { - return elements_kind.fixed_int8; - } - if (%HasFixedUint8Elements(obj)) { - return elements_kind.fixed_uint8; - } - if (%HasFixedInt16Elements(obj)) { - return elements_kind.fixed_int16; - } - if (%HasFixedUint16Elements(obj)) { - return elements_kind.fixed_uint16; - } - if (%HasFixedInt32Elements(obj)) { - return elements_kind.fixed_int32; - } - if (%HasFixedUint32Elements(obj)) { - return elements_kind.fixed_uint32; - } - if (%HasFixedFloat32Elements(obj)) { - return elements_kind.fixed_float32; - } - if (%HasFixedFloat64Elements(obj)) { - return elements_kind.fixed_float64; - } - if (%HasFixedUint8ClampedElements(obj)) { - return elements_kind.fixed_uint8_clamped; - } -} - -function assertKind(expected, obj, name_opt) { - assertEquals(expected, getKind(obj), name_opt); -} - -%NeverOptimizeFunction(construct_smis); -%NeverOptimizeFunction(construct_doubles); -%NeverOptimizeFunction(convert_mixed); -for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } - -// This code exists to eliminate the learning influence of AllocationSites -// on the following tests. -var __sequence = 0; -function make_array_string() { - this.__sequence = this.__sequence + 1; - return "/* " + this.__sequence + " */ [0, 0, 0];" -} -function make_array() { - return eval(make_array_string()); -} - -function construct_smis() { - var a = make_array(); - a[0] = 0; // Send the COW array map to the steak house. - assertKind(elements_kind.fast_smi_only, a); - return a; -} -function construct_doubles() { - var a = construct_smis(); - a[0] = 1.5; - assertKind(elements_kind.fast_double, a); - return a; -} - -// Test transition chain SMI->DOUBLE->FAST (optimized function will -// transition to FAST directly). -function convert_mixed(array, value, kind) { - array[1] = value; - assertKind(kind, array); - assertEquals(value, array[1]); -} -smis = construct_smis(); -convert_mixed(smis, 1.5, elements_kind.fast_double); - -doubles = construct_doubles(); -convert_mixed(doubles, "three", elements_kind.fast); - -convert_mixed(construct_smis(), "three", elements_kind.fast); -convert_mixed(construct_doubles(), "three", elements_kind.fast); - -if (%ICsAreEnabled()) { - // Test that allocation sites allocate correct elements kind initially based - // on previous transitions. - smis = construct_smis(); - doubles = construct_doubles(); - convert_mixed(smis, 1, elements_kind.fast); - convert_mixed(doubles, 1, elements_kind.fast); - assertTrue(%HaveSameMap(smis, doubles)); -} - -// Throw away type information in the ICs for next stress run. -gc(); diff --git a/implementation-contributed/v8/mjsunit/outobject-double-for-in.js b/implementation-contributed/v8/mjsunit/outobject-double-for-in.js deleted file mode 100644 index eb8ac940a7f..00000000000 --- a/implementation-contributed/v8/mjsunit/outobject-double-for-in.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function DoubleContainer() { - this.x0 = 0.5; - this.x1 = undefined; - this.x2 = undefined; - this.x3 = undefined; - this.x4 = undefined; - this.x5 = undefined; - this.x6 = undefined; - this.x7 = 5; - this.x8 = undefined; - this.x9 = undefined; - this.x10 = undefined; - this.x11 = undefined; - this.x12 = undefined; - this.x13 = undefined; - this.x14 = undefined; - this.x15 = undefined; - this.x16 = true; - this.y = 2.5; -} - -var z = new DoubleContainer(); - -function test_props(a) { - for (var i in a) { - assertTrue(i !== "x0" || a[i] === 0.5); - assertTrue(i !== "y" || a[i] === 2.5); - assertTrue(i !== "x12" || a[i] === undefined); - assertTrue(i !== "x16" || a[i] === true); - assertTrue(i !== "x7" || a[i] === 5); - } -} - -test_props(z); -test_props(z); -%OptimizeFunctionOnNextCall(test_props); -test_props(z); diff --git a/implementation-contributed/v8/mjsunit/override-read-only-property.js b/implementation-contributed/v8/mjsunit/override-read-only-property.js deleted file mode 100644 index f8114a66016..00000000000 --- a/implementation-contributed/v8/mjsunit/override-read-only-property.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// According to ECMA-262, sections 8.6.2.2 and 8.6.2.3 you're not -// allowed to override read-only properties, not even if the read-only -// property is in the prototype chain. -// -// However, for compatibility with WebKit/JSC, we allow the overriding -// of read-only properties in prototype chains. - -function F() {}; -F.prototype = Number; - -var original_number_max = Number.MAX_VALUE; - -// Assignment to a property which does not exist on the object itself, -// but is read-only in a prototype does not take effect. -var f = new F(); -assertEquals(original_number_max, f.MAX_VALUE); -f.MAX_VALUE = 42; -assertEquals(original_number_max, f.MAX_VALUE); - -// Assignment to a property which does not exist on the object itself, -// but is read-only in a prototype does not take effect. -f = new F(); -with (f) { - MAX_VALUE = 42; -} -assertEquals(original_number_max, f.MAX_VALUE); - -// Assignment to read-only property on the object itself is ignored. -Number.MAX_VALUE = 42; -assertEquals(original_number_max, Number.MAX_VALUE); - -// G should be read-only on the global object and the assignment is -// ignored. -(function G() { - eval("G = 42;"); - assertTrue(typeof G === 'function'); -})(); diff --git a/implementation-contributed/v8/mjsunit/packed-elements.js b/implementation-contributed/v8/mjsunit/packed-elements.js deleted file mode 100644 index d421c51f0d2..00000000000 --- a/implementation-contributed/v8/mjsunit/packed-elements.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function test1() { - var a = Array(8); - assertTrue(%HasSmiOrObjectElements(a)); - assertTrue(%HasHoleyElements(a)); -} - -function test2() { - var a = Array(); - assertTrue(%HasSmiOrObjectElements(a)); - assertFalse(%HasHoleyElements(a)); -} - -function test3() { - var a = Array(1,2,3,4,5,6,7); - assertTrue(%HasSmiOrObjectElements(a)); - assertFalse(%HasHoleyElements(a)); -} - -function test4() { - var a = [1, 2, 3, 4]; - assertTrue(%HasSmiElements(a)); - assertFalse(%HasHoleyElements(a)); - var b = [1, 2,, 4]; - assertTrue(%HasSmiElements(b)); - assertTrue(%HasHoleyElements(b)); -} - -function test5() { - var a = [1, 2, 3, 4.5]; - assertTrue(%HasDoubleElements(a)); - assertFalse(%HasHoleyElements(a)); - var b = [1,, 3.5, 4]; - assertTrue(%HasDoubleElements(b)); - assertTrue(%HasHoleyElements(b)); - var c = [1, 3.5,, 4]; - assertTrue(%HasDoubleElements(c)); - assertTrue(%HasHoleyElements(c)); -} - -function test6() { - var x = new Object(); - var a = [1, 2, 3.5, x]; - assertTrue(%HasObjectElements(a)); - assertFalse(%HasHoleyElements(a)); - assertEquals(1, a[0]); - assertEquals(2, a[1]); - assertEquals(3.5, a[2]); - assertEquals(x, a[3]); - var b = [1,, 3.5, x]; - assertTrue(%HasObjectElements(b)); - assertTrue(%HasHoleyElements(b)); - assertEquals(1, b[0]); - assertEquals(undefined, b[1]); - assertEquals(3.5, b[2]); - assertEquals(x, b[3]); - var c = [1, 3.5, x,,]; - assertTrue(%HasObjectElements(c)); - assertTrue(%HasHoleyElements(c)); - assertEquals(1, c[0]); - assertEquals(3.5, c[1]); - assertEquals(x, c[2]); - assertEquals(undefined, c[3]); -} - -function test_with_optimization(f) { - // Run tests in a loop to make sure that inlined Array() constructor runs out - // of new space memory and must fall back on runtime impl. - for (i = 0; i < 25000; ++i) f(); - %OptimizeFunctionOnNextCall(f); - for (i = 0; i < 25000; ++i) f(); // Make sure GC happens -} - -test_with_optimization(test1); -test_with_optimization(test2); -test_with_optimization(test3); -test_with_optimization(test4); -test_with_optimization(test5); -test_with_optimization(test6); diff --git a/implementation-contributed/v8/mjsunit/parallel-compile-tasks.js b/implementation-contributed/v8/mjsunit/parallel-compile-tasks.js deleted file mode 100644 index fbde5695568..00000000000 --- a/implementation-contributed/v8/mjsunit/parallel-compile-tasks.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --compiler-dispatcher --parallel-compile-tasks --use-external-strings - -(function(a) { - assertEquals(a, "IIFE"); -})("IIFE"); - -(function(a, ...rest) { - assertEquals(a, 1); - assertEquals(rest.length, 2); - assertEquals(rest[0], 2); - assertEquals(rest[1], 3); -})(1,2,3); - -var outer_var = 42; - -function lazy_outer() { - return 42; -} - -var eager_outer = (function() { return 42; }); - -(function() { - assertEquals(outer_var, 42); - assertEquals(lazy_outer(), 42); - assertEquals(eager_outer(), 42); -})(); - -var gen = (function*() { - yield 1; - yield 2; -})(); - -assertEquals(gen.next().value, 1); -assertEquals(gen.next().value, 2); - -var result = (function recursive(a=0) { - if (a == 1) { - return 42; - } - return recursive(1); -})(); - -assertEquals(result, 42); - -var a = 42; -var b; -var c = (a, b = (function z(){ return a+1; })()); -assertEquals(b, 43); -assertEquals(c, 43); -var c = (a, b = (function z(){ return a+1; })()) => { return b; }; -assertEquals(c(314), 315); - -// http://crbug.com/898076 -(function() { - class foo {}; -}); // Don't call IIFE so that it is compiled during idle time - -// http://crbug.com/900535 -(function() { - "use asm"; - function bar(i, j) { - i = i|0; - j = j|0; - } - return {bar: bar}; -}); // Don't call IIFE so that it is compiled during idle time diff --git a/implementation-contributed/v8/mjsunit/parallel-optimize-disabled.js b/implementation-contributed/v8/mjsunit/parallel-optimize-disabled.js deleted file mode 100644 index bcd7110263a..00000000000 --- a/implementation-contributed/v8/mjsunit/parallel-optimize-disabled.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --concurrent-recompilation -// Flags: --allow-natives-syntax --no-always-opt - -if (!%IsConcurrentRecompilationSupported()) { - print("Concurrent recompilation is disabled. Skipping this test."); - quit(); -} - -function g() { // g() cannot be optimized. - const x = 1; - // TODO(adamk): Is this test still testing anything? - // x++; -} - -function f(x) { - g(); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -%OptimizeFunctionOnNextCall(g, "concurrent"); -f(0); // g() is disabled for optimization on inlining attempt. -// Attempt to optimize g() should not run into any assertion. -assertUnoptimized(g, "sync"); diff --git a/implementation-contributed/v8/mjsunit/parse-int-float.js b/implementation-contributed/v8/mjsunit/parse-int-float.js deleted file mode 100644 index a0f50392303..00000000000 --- a/implementation-contributed/v8/mjsunit/parse-int-float.js +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(0, parseInt('0')); -assertEquals(0, parseInt(' 0')); -assertEquals(0, parseInt(' 0 ')); - -assertEquals(77, parseInt('077')); -assertEquals(77, parseInt(' 077')); -assertEquals(77, parseInt(' 077 ')); -assertEquals(-77, parseInt(' -077')); - -assertEquals(3, parseInt('11', 2)); -assertEquals(4, parseInt('11', 3)); -assertEquals(4, parseInt('11', 3.8)); - -assertEquals(0x12, parseInt('0x12')); -assertEquals(0x12, parseInt('0x12', 16)); -assertEquals(0x12, parseInt('0x12', 16.1)); -assertEquals(0x12, parseInt('0x12', NaN)); -assertTrue(isNaN(parseInt('0x '))); -assertTrue(isNaN(parseInt('0x'))); -assertTrue(isNaN(parseInt('0x ', 16))); -assertTrue(isNaN(parseInt('0x', 16))); -assertEquals(12, parseInt('12aaa')); - -assertEquals(0.1, parseFloat('0.1')); -assertEquals(0.1, parseFloat('0.1aaa')); -assertEquals(0, parseFloat('0aaa')); -assertEquals(0, parseFloat('0x12')); -assertEquals(77, parseFloat('077')); - -assertEquals(Infinity, parseInt('1000000000000000000000000000000000000000000000' - + '000000000000000000000000000000000000000000000000000000000000000000000000' - + '000000000000000000000000000000000000000000000000000000000000000000000000' - + '000000000000000000000000000000000000000000000000000000000000000000000000' - + '000000000000000000000000000000000000000000000000000000000000000000000000' - + '0000000000000')); - -assertEquals(Infinity, parseInt('0x10000000000000000000000000000000000000000000' - + '000000000000000000000000000000000000000000000000000000000000000000000000' - + '000000000000000000000000000000000000000000000000000000000000000000000000' - + '000000000000000000000000000000000000000000000000000000000000000000000000' - + '000000000000000000000000000000000000000000000000000000000000000000000000' - + '0000000000000')); - - -var i; -var y = 10; - -for (i = 1; i < 21; i++) { - var x = eval("1.2e" + i); - assertEquals(Math.floor(x), parseInt(x)); - x = eval("1e" + i); - assertEquals(x, y); - y *= 10; - assertEquals(Math.floor(x), parseInt(x)); - x = eval("-1e" + i); - assertEquals(Math.ceil(x), parseInt(x)); - x = eval("-1.2e" + i); - assertEquals(Math.ceil(x), parseInt(x)); -} - -for (i = 21; i < 53; i++) { - var x = eval("1e" + i); - assertEquals(1, parseInt(x)); - x = eval("-1e" + i); - assertEquals(-1, parseInt(x)); -} - -assertTrue(isNaN(parseInt(0/0))); -assertTrue(isNaN(parseInt(1/0)), "parseInt Infinity"); -assertTrue(isNaN(parseInt(-1/0)), "parseInt -Infinity"); - -assertTrue(isNaN(parseFloat(0/0))); -assertEquals(Infinity, parseFloat(1/0), "parseFloat Infinity"); -assertEquals(-Infinity, parseFloat(-1/0), "parseFloat -Infinity"); - -var state; -var throwingRadix = { valueOf: function() { state = "throwingRadix"; throw null; } }; -var throwingString = { toString: function() { state = "throwingString"; throw null; } }; -state = null; -try { parseInt('123', throwingRadix); } catch (e) {} -assertEquals(state, "throwingRadix"); - -state = null; -try { parseInt(throwingString, 10); } catch (e) {} -assertEquals(state, "throwingString"); - -state = null; -try { parseInt(throwingString, throwingRadix); } catch (e) {} -assertEquals(state, "throwingString"); - -// And finally, check that the Harmony additions to the Number -// constructor is available: -assertTrue("parseInt" in Number); -assertTrue("parseFloat" in Number); -assertSame( Number.parseInt, parseInt); -assertSame(Number.parseFloat, parseFloat); -assertEquals(Number.parseFloat('0.1'), parseFloat('0.1')); -assertEquals(Number.parseInt('0xea'), parseInt('0xEA')); diff --git a/implementation-contributed/v8/mjsunit/parse-surrogates.js b/implementation-contributed/v8/mjsunit/parse-surrogates.js deleted file mode 100644 index 5ed9b524ce2..00000000000 --- a/implementation-contributed/v8/mjsunit/parse-surrogates.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that the parser throws on unmatched surrogates. -assertThrows("var \uD801\uABCD;", SyntaxError); -assertThrows("'\\u000\uD801\uABCD'", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/pixel-array-rounding.js b/implementation-contributed/v8/mjsunit/pixel-array-rounding.js deleted file mode 100644 index b7db51c2c9d..00000000000 --- a/implementation-contributed/v8/mjsunit/pixel-array-rounding.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var pixels = new Uint8ClampedArray(11); - -function f() { - for (var i = 0; i < 8; i++) { - pixels[i] = (i * 1.1); - } - pixels[8] = 255.5; - pixels[9] = NaN; - pixels[10] = -0.5; - return pixels[1] + pixels[6]; -} - -f(); -f(); -assertEquals(6, pixels[5]); -%OptimizeFunctionOnNextCall(f); -f(); -assertEquals(6, pixels[5]); -assertEquals(255, pixels[8]); -assertEquals(0, pixels[9]); -assertEquals(0, pixels[10]); diff --git a/implementation-contributed/v8/mjsunit/polymorph-arrays.js b/implementation-contributed/v8/mjsunit/polymorph-arrays.js deleted file mode 100644 index 7d3221a20c5..00000000000 --- a/implementation-contributed/v8/mjsunit/polymorph-arrays.js +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -function init_array(a) { - for (var i = 0; i < 10; ++i ){ - a[i] = i; - } -} - -function init_sparse_array(a) { - for (var i = 0; i < 10; ++i ){ - a[i] = i; - } - a[200000] = 256; - return %NormalizeElements(a); -} - -function testPolymorphicLoads() { - function make_polymorphic_load_function() { - function load(a, i) { - return a[i]; - } - - var object_array = new Object; - var sparse_object_array = new Object; - var js_array = new Array(10); - var sparse_js_array = %NormalizeElements([]); - - init_array(object_array); - init_array(js_array); - init_sparse_array(sparse_object_array); - init_sparse_array(sparse_js_array); - - assertEquals(1, load(object_array, 1)); - assertEquals(1, load(js_array, 1)); - assertEquals(1, load(sparse_object_array, 1)); - assertEquals(1, load(sparse_js_array, 1)); - - return load; - } - - var object_array = new Object; - var sparse_object_array = new Object; - var js_array = new Array(10); - var sparse_js_array = %NormalizeElements([]); - - init_array(object_array); - init_array(js_array); - init_sparse_array(sparse_object_array); - init_sparse_array(sparse_js_array); - - load = make_polymorphic_load_function(); - assertEquals(undefined, load(js_array, new Object())); - load = make_polymorphic_load_function(); - assertEquals(undefined, load(object_array, new Object())); - load = make_polymorphic_load_function(); - assertEquals(undefined, load(sparse_js_array, new Object())); - load = make_polymorphic_load_function(); - assertEquals(undefined, load(sparse_object_array, new Object())); - - // Try with optimizing compiler. - load = make_polymorphic_load_function(); - %OptimizeFunctionOnNextCall(load); - assertEquals(1, load(object_array, 1)); - assertEquals(1, load(js_array, 1)); - assertEquals(1, load(sparse_object_array, 1)); - assertEquals(1, load(sparse_js_array, 1)); - - load = make_polymorphic_load_function(); - %OptimizeFunctionOnNextCall(load); - assertEquals(undefined, load(js_array, new Object())); - load = make_polymorphic_load_function(); - %OptimizeFunctionOnNextCall(load); - assertEquals(undefined, load(object_array, new Object())); - load = make_polymorphic_load_function(); - %OptimizeFunctionOnNextCall(load); - assertEquals(undefined, load(sparse_js_array, new Object())); - load = make_polymorphic_load_function(); - %OptimizeFunctionOnNextCall(load); - assertEquals(undefined, load(sparse_object_array, new Object())); -} - -function testPolymorphicStores() { - function make_polymorphic_store_function() { - function store(a, i, val) { - a[i] = val; - } - - var object_array = new Object; - var sparse_object_array = new Object; - var js_array = new Array(10); - var sparse_js_array = []; - sparse_js_array.length = 200001; - - init_array(object_array); - init_array(js_array); - init_sparse_array(sparse_object_array); - init_sparse_array(sparse_js_array); - - store(object_array, 1, 256); - store(js_array, 1, 256); - store(sparse_object_array, 1, 256); - store(sparse_js_array, 1, 256); - - return store; - } - - var object_array = new Object; - var sparse_object_array = new Object; - var js_array = new Array(10); - var sparse_js_array = %NormalizeElements([]); - sparse_js_array.length = 200001; - assertTrue(%HasDictionaryElements(sparse_js_array)); - - init_array(object_array); - init_array(js_array); - init_sparse_array(sparse_object_array); - init_sparse_array(sparse_js_array); - - store = make_polymorphic_store_function(); - store(object_array, 2, 257); - store = make_polymorphic_store_function(); - store(js_array, 2, 257); - store = make_polymorphic_store_function(); - store(sparse_object_array, 2, 257); - store = make_polymorphic_store_function(); - store(sparse_js_array, 2, 257); - - assertEquals(257, object_array[2]); - assertEquals(257, js_array[2]); - assertEquals(257, sparse_js_array[2]); - assertEquals(257, sparse_object_array[2]); - - // Now try Crankshaft optimized polymorphic stores - store = make_polymorphic_store_function(); - %OptimizeFunctionOnNextCall(store); - store(object_array, 3, 258); - store = make_polymorphic_store_function(); - %OptimizeFunctionOnNextCall(store); - store(js_array, 3, 258); - store = make_polymorphic_store_function(); - %OptimizeFunctionOnNextCall(store); - store(sparse_object_array, 3, 258); - store = make_polymorphic_store_function(); - %OptimizeFunctionOnNextCall(store); - store(sparse_js_array, 3, 258); - - assertEquals(258, object_array[3]); - assertEquals(258, js_array[3]); - assertEquals(258, sparse_js_array[3]); - assertEquals(258, sparse_object_array[3]); -} - -testPolymorphicLoads(); -testPolymorphicStores(); diff --git a/implementation-contributed/v8/mjsunit/preparse-toplevel-strict-eval.js b/implementation-contributed/v8/mjsunit/preparse-toplevel-strict-eval.js deleted file mode 100644 index b99507b34f9..00000000000 --- a/implementation-contributed/v8/mjsunit/preparse-toplevel-strict-eval.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -var x = 1; -var g = eval("var y = 100; function h(s) { if (s) x = s; return x+y; }; h"); - -assertEquals(101, g()); -assertEquals(102, g(2)); -assertEquals(102, g(2)); diff --git a/implementation-contributed/v8/mjsunit/primitive-keyed-access.js b/implementation-contributed/v8/mjsunit/primitive-keyed-access.js deleted file mode 100644 index c83975a8d30..00000000000 --- a/implementation-contributed/v8/mjsunit/primitive-keyed-access.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(Number.prototype, "0", - { set: function(v) { set = v; }}); -Object.defineProperty(String.prototype, "0", - { set: function(v) { set = v; }}); -Object.defineProperty(String.prototype, "3", - { set: function(v) { set = v; }}); - -var set; -var n = 1; -set = 0; -n[0] = 100; -assertEquals(100, set); -var s = "bla"; -s[0] = 200; -assertEquals(100, set); -s[3] = 300; -assertEquals(300, set); - -assertThrows(function(){"use strict"; var o = "123"; o[1] = 10; }); -assertThrows(function(){"use strict"; var o = ""; o[1] = 10; }); -assertThrows(function(){"use strict"; var o = 1; o[1] = 10; }); - -assertThrows(function() { - "use strict"; - var sym = Symbol('66'); - sym.a = 0; -}); - -assertThrows(function() { - "use strict"; - var sym = Symbol('66'); - sym['a' + 'b'] = 0; -}); - -assertThrows(function() { - "use strict"; - var sym = Symbol('66'); - sym[62] = 0; -}); - -assertThrows(function() { - "use strict"; - var o = "bla"; - o["0"] = 1; -}); diff --git a/implementation-contributed/v8/mjsunit/print.js b/implementation-contributed/v8/mjsunit/print.js deleted file mode 100644 index 1ec3383e47b..00000000000 --- a/implementation-contributed/v8/mjsunit/print.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals("function", typeof print, "print should be defined"); -assertEquals("function", typeof printErr, "printErr should be defined"); diff --git a/implementation-contributed/v8/mjsunit/property-load-across-eval.js b/implementation-contributed/v8/mjsunit/property-load-across-eval.js deleted file mode 100644 index 808ac5829e7..00000000000 --- a/implementation-contributed/v8/mjsunit/property-load-across-eval.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests loading of properties across eval calls. - -var x = 1; -function global_function() { return 'global'; } - -// Test loading across an eval call that does not shadow variables. -function testNoShadowing() { - var y = 2; - function local_function() { return 'local'; } - function f() { - eval('1'); - assertEquals(1, x); - try { typeof(asdf); } catch(e) { assertUnreachable(); } - assertEquals(2, y); - assertEquals('global', global_function()); - assertEquals('local', local_function()); - function g() { - assertEquals(1, x); - try { typeof(asdf); } catch(e) { assertUnreachable(); } - assertEquals(2, y); - assertEquals('global', global_function()); - assertEquals('local', local_function()); - } - g(); - } - f(); -} - -testNoShadowing(); - -// Test loading across eval calls that do not shadow variables. -function testNoShadowing2() { - var y = 2; - function local_function() { return 'local'; } - eval('1'); - function f() { - eval('1'); - assertEquals(1, x); - assertEquals(2, y); - assertEquals('global', global_function()); - assertEquals('local', local_function()); - function g() { - assertEquals(1, x); - assertEquals(2, y); - assertEquals('global', global_function()); - assertEquals('local', local_function()); - } - g(); - } - f(); -} - -testNoShadowing2(); - -// Test loading across an eval call that shadows variables. -function testShadowing() { - var y = 2; - function local_function() { return 'local'; } - function f() { - eval('var x = 3; var y = 4;'); - assertEquals(3, x); - assertEquals(4, y); - eval('function local_function() { return "new_local"; }'); - eval('function global_function() { return "new_nonglobal"; }'); - assertEquals('new_nonglobal', global_function()); - assertEquals('new_local', local_function()); - function g() { - assertEquals(3, x); - assertEquals(4, y); - assertEquals('new_nonglobal', global_function()); - assertEquals('new_local', local_function()); - } - g(); - } - f(); -} - -testShadowing(); diff --git a/implementation-contributed/v8/mjsunit/property-name-eval-arguments.js b/implementation-contributed/v8/mjsunit/property-name-eval-arguments.js deleted file mode 100644 index ebb07485c30..00000000000 --- a/implementation-contributed/v8/mjsunit/property-name-eval-arguments.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function TestSloppyMode() { - var e = 1, a = 2; - var o = { - get eval() { - return e; - }, - set eval(v) { - e = v; - }, - get arguments() { - return a; - }, - set arguments(v) { - a = v; - }, - }; - - assertEquals(1, o.eval); - o.eval = 3; - assertEquals(3, e); - - assertEquals(2, o.arguments); - o.arguments = 4; - assertEquals(4, a); -})(); - - -(function TestStrictMode() { - 'use strict'; - - var e = 1, a = 2; - var o = { - get eval() { - return e; - }, - set eval(v) { - e = v; - }, - get arguments() { - return a; - }, - set arguments(v) { - a = v; - }, - }; - - assertEquals(1, o.eval); - o.eval = 3; - assertEquals(3, e); - - assertEquals(2, o.arguments); - o.arguments = 4; - assertEquals(4, a); -})(); diff --git a/implementation-contributed/v8/mjsunit/property-object-key.js b/implementation-contributed/v8/mjsunit/property-object-key.js deleted file mode 100644 index 3556cb9ee29..00000000000 --- a/implementation-contributed/v8/mjsunit/property-object-key.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var key = { toString: function() { return 'baz'; } } -var object = { baz: 42 }; - -assertEquals(42, object[key]); -object[key] = 87; -assertEquals(87, object[key]); -object[key]++; -assertEquals(88, object[key]); diff --git a/implementation-contributed/v8/mjsunit/proto-accessor.js b/implementation-contributed/v8/mjsunit/proto-accessor.js deleted file mode 100644 index 690b10b5f13..00000000000 --- a/implementation-contributed/v8/mjsunit/proto-accessor.js +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Fake Symbol if undefined, allowing test to run in non-Harmony mode as well. -this.Symbol = typeof Symbol != 'undefined' ? Symbol : String; - - -function TestSetProtoValueCyclic() { - var objects = [ - Object.prototype, {}, - Array.prototype, [], - Error.prototype, new TypeError, - // etc ... - ]; - for (var i = 0; i < objects.length; i += 2) { - var object = objects[i]; - var value = objects[i + 1]; - assertThrows(function() { - object.__proto__ = value; - }, TypeError); - } -}; -TestSetProtoValueCyclic(); - - -var desc = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__"); -var getProto = desc.get; -var setProto = desc.set; - -function TestNoPoisonPill() { - assertEquals("function", typeof desc.get); - assertEquals("function", typeof desc.set); - assertDoesNotThrow("desc.get.call({})"); - assertDoesNotThrow("desc.set.call({}, {})"); - - var obj = {}; - var obj2 = {}; - desc.set.call(obj, obj2); - assertEquals(obj.__proto__, obj2); - assertEquals(desc.get.call(obj), obj2); -} -TestNoPoisonPill(); - - -function TestRedefineObjectPrototypeProtoGetter() { - Object.defineProperty(Object.prototype, "__proto__", { - get: function() { - return 42; - } - }); - assertEquals({}.__proto__, 42); - assertEquals(desc.get.call({}), Object.prototype); - - var desc2 = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__"); - assertEquals(desc2.get.call({}), 42); - assertEquals(desc2.set.call({}), undefined); - - Object.defineProperty(Object.prototype, "__proto__", { - set: function(x) {} - }); - var desc3 = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__"); - assertEquals(desc3.get.call({}), 42); - assertEquals(desc3.set.call({}), undefined); -} -TestRedefineObjectPrototypeProtoGetter(); - - -function TestRedefineObjectPrototypeProtoSetter() { - Object.defineProperty(Object.prototype, "__proto__", { set: undefined }); - assertThrows(function() { - "use strict"; - var o = {}; - var p = {}; - o.__proto__ = p; - }, TypeError); -} -TestRedefineObjectPrototypeProtoSetter(); - - -function TestGetProtoOfValues() { - assertEquals(getProto.call(1), Number.prototype); - assertEquals(getProto.call(true), Boolean.prototype); - assertEquals(getProto.call(false), Boolean.prototype); - assertEquals(getProto.call('s'), String.prototype); - assertEquals(getProto.call(Symbol()), Symbol.prototype); - - assertThrows(function() { getProto.call(null); }, TypeError); - assertThrows(function() { getProto.call(undefined); }, TypeError); -} -TestGetProtoOfValues(); - - -var values = [1, true, false, 's', Symbol()]; - - -function TestSetProtoOfValues() { - var proto = {}; - for (var i = 0; i < values.length; i++) { - assertEquals(setProto.call(values[i], proto), undefined); - } - - assertThrows(function() { setProto.call(null, proto); }, TypeError); - assertThrows(function() { setProto.call(undefined, proto); }, TypeError); -} -TestSetProtoOfValues(); - - -function TestSetProtoToValue() { - var object = {}; - var proto = {}; - setProto.call(object, proto); - - var valuesWithUndefined = values.concat(undefined); - - for (var i = 0; i < valuesWithUndefined.length; i++) { - assertEquals(setProto.call(object, valuesWithUndefined[i]), undefined); - assertEquals(getProto.call(object), proto); - } - - // null is the only valid value that can be used as a [[Prototype]]. - assertEquals(setProto.call(object, null), undefined); - assertEquals(getProto.call(object), null); -} -TestSetProtoToValue(); - - -function TestDeleteProto() { - assertTrue(delete Object.prototype.__proto__); - var o = {}; - var p = {}; - o.__proto__ = p; - assertEquals(Object.getPrototypeOf(o), Object.prototype); - var desc4 = Object.getOwnPropertyDescriptor(o, "__proto__"); - assertTrue(desc4.configurable); - assertTrue(desc4.enumerable); - assertTrue(desc4.writable); - assertEquals(desc4.value, p); -} -TestDeleteProto(); diff --git a/implementation-contributed/v8/mjsunit/proto-elements-add-during-foreach.js b/implementation-contributed/v8/mjsunit/proto-elements-add-during-foreach.js deleted file mode 100644 index 83b800011bb..00000000000 --- a/implementation-contributed/v8/mjsunit/proto-elements-add-during-foreach.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(()=>{ - var a = [0,1,2,,,,7]; - var proto = {} - a.__proto__ = proto; - var visits = 0; - Array.prototype.forEach.call(a, (v,i,o) => { ++visits; proto[4] = 4; }); - assertEquals(5, visits); -})(); - -// We have a fast path for arrays with the initial array prototype. -// If elements are inserted into the initial array prototype as we traverse -// a holey array, we should gracefully exit the fast path. -(()=>{ - let a = [1, 2, 3,,,, 7]; - function poison(v, i) { - if (i === 2) { - [].__proto__[4] = 3; - } - return v*v; - } - a.forEach(poison); -})(); - -// Same, but for a double array. -(()=>{ - let a = [1, 2.5, 3,,,, 7]; - function poison(v, i) { - if (i === 2) { - [].__proto__[4] = 3; - } - return v*v; - } - a.forEach(poison); -})(); diff --git a/implementation-contributed/v8/mjsunit/proto.js b/implementation-contributed/v8/mjsunit/proto.js deleted file mode 100644 index faf98b2251e..00000000000 --- a/implementation-contributed/v8/mjsunit/proto.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o1 = { x: 12 }; - -var o2 = { x: 12, y: 13 }; -delete o2.x; // normalize - -assertTrue(o1.__proto__ === o2.__proto__); diff --git a/implementation-contributed/v8/mjsunit/prototype-changes.js b/implementation-contributed/v8/mjsunit/prototype-changes.js deleted file mode 100644 index e7fcc7ee953..00000000000 --- a/implementation-contributed/v8/mjsunit/prototype-changes.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function A() { - this.a = "a"; -} -var a = new A(); - -function B() { - this.b = "b"; -} -B.prototype = a; - -function C() { - this.c = "c"; -} -C.prototype = new B(); - -var c = new C(); - -function f(expected) { - var result = c.z; - assertEquals(expected, result); -} -f(undefined); -f(undefined); -%OptimizeFunctionOnNextCall(f); -f(undefined); -a.z = "z"; -f("z"); -f("z"); - -// Test updating .__proto__ pointers. -var p1 = {foo: 1.5}; -var p2 = {}; p2.__proto__ = p1; -var p3 = {}; p3.__proto__ = p2; -var o = {}; o.__proto__ = p3; - -for (var i = 0; i < 2; i++) o.foo; // Force registration. - -var p1a = {foo: 1.7}; -p2.__proto__ = p1a; - -function g(o, expected) { - var result = o.foo; - assertEquals(expected, result); -} - -g(o, 1.7); -g(o, 1.7); -g(o, 1.7); -Object.defineProperty(p1a, "foo", {get: function() { return "foo"}}); -g(o, "foo"); diff --git a/implementation-contributed/v8/mjsunit/prototype-non-existing.js b/implementation-contributed/v8/mjsunit/prototype-non-existing.js deleted file mode 100644 index 367a59f5474..00000000000 --- a/implementation-contributed/v8/mjsunit/prototype-non-existing.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Dictionary object in the prototype chain. -(function() { - function A() { - this.z = "a"; - } - var a = new A(); - - function B() { - this.b = "b"; - } - B.prototype = a; - var b = new B(); - - // Ensure b stays slow. - for (var i = 0; i < 1200; i++) { - b["b"+i] = 0; - } - assertFalse(%HasFastProperties(b)); - - function C() { - this.c = "c"; - } - C.prototype = b; - var c = new C(); - - function f(expected) { - assertFalse(%HasFastProperties(b)); - var result = c.z; - assertEquals(expected, result); - } - f("a"); - f("a"); - f("a"); - %OptimizeFunctionOnNextCall(f); - f("a"); - - a.z = "z"; - f("z"); - f("z"); - f("z"); - - b.z = "bz"; - f("bz"); - f("bz"); - f("bz"); -})(); - - -// Global object in the prototype chain. -(function() { - var global = this; - - function A() { - this.z = "a"; - } - A.prototype = global.__proto__; - var a = new A(); - - global.__proto__ = a; - - function C() { - this.c = "c"; - } - C.prototype = global; - var c = new C(); - - function f(expected) { - var result = c.z; - assertEquals(expected, result); - } - f("a"); - f("a"); - f("a"); - %OptimizeFunctionOnNextCall(f); - f("a"); - - a.z = "z"; - f("z"); - f("z"); - f("z"); - - global.z = "bz"; - f("bz"); - f("bz"); - f("bz"); -})(); diff --git a/implementation-contributed/v8/mjsunit/prototype.js b/implementation-contributed/v8/mjsunit/prototype.js deleted file mode 100644 index a953422c325..00000000000 --- a/implementation-contributed/v8/mjsunit/prototype.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function A() { } -function B() { } -function C() { } - -function NewC() { - A.prototype = {}; - B.prototype = new A(); - C.prototype = new B(); - var result = new C(); - result.A = A.prototype; - result.B = B.prototype; - result.C = C.prototype; - return result; -} - -// Check that we can read properties defined in prototypes. -var c = NewC(); -c.A.x = 1; -c.B.y = 2; -c.C.z = 3; -assertEquals(1, c.x); -assertEquals(2, c.y); -assertEquals(3, c.z); - -var c = NewC(); -c.A.x = 0; -for (var i = 0; i < 2; i++) { - assertEquals(i, c.x); - c.B.x = 1; -} - - -// Regression test: -// Make sure we preserve the prototype of an object in the face of map transitions. - -function D() { - this.d = 1; -} -var p = new Object(); -p.y = 1; -new D(); - -D.prototype = p -assertEquals(1, (new D).y); - - -// Regression test: -// Make sure that arrays and functions in the prototype chain works; -// check length. -function X() { } -function Y() { } - -X.prototype = function(a,b) { }; -Y.prototype = [1,2,3]; - -assertEquals(2, (new X).length); -assertEquals(3, (new Y).length); - - -// Test setting the length of an object where the prototype is from an array. -var test = new Object; -test.__proto__ = (new Array()).__proto__; -test.length = 14; -assertEquals(14, test.length); diff --git a/implementation-contributed/v8/mjsunit/random-bit-correlations.js b/implementation-contributed/v8/mjsunit/random-bit-correlations.js deleted file mode 100644 index 2ac84c54a76..00000000000 --- a/implementation-contributed/v8/mjsunit/random-bit-correlations.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --random-seed=20 --nostress-opt --noalways-opt --predictable - -(function() { - var kHistory = 2; - var kRepeats = 100; - var history = new Uint32Array(kHistory); - - function random() { - return (Math.random() * Math.pow(2, 32)) >>> 0; - } - - function ChiSquared(m, n) { - var ys_minus_np1 = (m - n / 2.0); - var chi_squared_1 = ys_minus_np1 * ys_minus_np1 * 2.0 / n; - var ys_minus_np2 = ((n - m) - n / 2.0); - var chi_squared_2 = ys_minus_np2 * ys_minus_np2 * 2.0 / n; - return chi_squared_1 + chi_squared_2; - } - for (var predictor_bit = -2; predictor_bit < 32; predictor_bit++) { - // The predicted bit is one of the bits from the PRNG. - for (var random_bit = 0; random_bit < 32; random_bit++) { - for (var ago = 0; ago < kHistory; ago++) { - // We don't want to check whether each bit predicts itself. - if (ago == 0 && predictor_bit == random_bit) continue; - // Enter the new random value into the history - for (var i = ago; i >= 0; i--) { - history[i] = random(); - } - // Find out how many of the bits are the same as the prediction bit. - var m = 0; - for (var i = 0; i < kRepeats; i++) { - for (var j = ago - 1; j >= 0; j--) history[j + 1] = history[j]; - history[0] = random(); - var predicted; - if (predictor_bit >= 0) { - predicted = (history[ago] >> predictor_bit) & 1; - } else { - predicted = predictor_bit == -2 ? 0 : 1; - } - var bit = (history[0] >> random_bit) & 1; - if (bit == predicted) m++; - } - // Chi squared analysis for k = 2 (2, states: same/not-same) and one - // degree of freedom (k - 1). - var chi_squared = ChiSquared(m, kRepeats); - if (chi_squared > 24) { - var percent = Math.floor(m * 100.0 / kRepeats); - if (predictor_bit < 0) { - var bit_value = predictor_bit == -2 ? 0 : 1; - print(`Bit ${random_bit} is ${bit_value} ${percent}% of the time`); - } else { - print(`Bit ${random_bit} is the same as bit ${predictor_bit} ` + - `${ago} ago ${percent}% of the time`); - } - } - // For 1 degree of freedom this corresponds to 1 in a million. We are - // running ~8000 tests, so that would be surprising. - assertTrue(chi_squared <= 24); - // If the predictor bit is a fixed 0 or 1 then it makes no sense to - // repeat the test with a different age. - if (predictor_bit < 0) break; - } - } - } -})(); diff --git a/implementation-contributed/v8/mjsunit/readonly-accessor.js b/implementation-contributed/v8/mjsunit/readonly-accessor.js deleted file mode 100644 index 5a73525fea6..00000000000 --- a/implementation-contributed/v8/mjsunit/readonly-accessor.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var foo = {}; -foo.__proto__ = new String("bar"); -foo.length = 20; diff --git a/implementation-contributed/v8/mjsunit/readonly.js b/implementation-contributed/v8/mjsunit/readonly.js deleted file mode 100644 index 72a08a7c863..00000000000 --- a/implementation-contributed/v8/mjsunit/readonly.js +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Different ways to create an object. - -function CreateFromLiteral() { - return {}; -} - -function CreateFromObject() { - return new Object; -} - -function CreateDefault() { - return Object.create(Object.prototype); -} - -function CreateFromConstructor(proto) { - function C() {} - (new C).b = 9; // Make sure that we can have an in-object property. - C.prototype = proto; - return function() { return new C; } -} - -function CreateFromApi(proto) { - return function() { return Object.create(proto); } -} - -function CreateWithProperty(proto) { - function C() { this.a = -100; } - C.prototype = proto; - return function() { return new C; } -} - -var bases = [CreateFromLiteral, CreateFromObject, CreateDefault]; -var inherits = [CreateFromConstructor, CreateFromApi, CreateWithProperty]; -var constructs = [CreateFromConstructor, CreateFromApi]; - -function TestAllCreates(f) { - // The depth of the prototype chain up the. - for (var depth = 0; depth < 3; ++depth) { - // Introduce readonly-ness this far up the chain. - for (var up = 0; up <= depth; ++up) { - // Try different construction methods. - for (var k = 0; k < constructs.length; ++k) { - // Construct a fresh prototype chain from above functions. - for (var i = 0; i < bases.length; ++i) { - var p = bases[i](); - // There may be a preexisting property under the insertion point... - for (var j = 0; j < depth - up; ++j) { - p = inherits[Math.floor(inherits.length * Math.random())](p)(); - } - // ...but not above it. - for (var j = 0; j < up; ++j) { - p = constructs[Math.floor(constructs.length * Math.random())](p)(); - } - // Create a fresh constructor. - var c = constructs[k](p); - f(function() { - var o = c(); - o.up = o; - for (var j = 0; j < up; ++j) o.up = Object.getPrototypeOf(o.up); - return o; - }) - } - } - } - } -} - - -// Different ways to make a property read-only. - -function ReadonlyByNonwritableDataProperty(o, name) { - Object.defineProperty(o, name, {value: -41, writable: false}); -} - -function ReadonlyByAccessorPropertyWithoutSetter(o, name) { - Object.defineProperty(o, name, {get: function() { return -42; }}); -} - -function ReadonlyByGetter(o, name) { - o.__defineGetter__("a", function() { return -43; }); -} - -function ReadonlyByFreeze(o, name) { - o[name] = -44; - Object.freeze(o); -} - -function ReadonlyByProto(o, name) { - var p = Object.create(o.__proto__); - Object.defineProperty(p, name, {value: -45, writable: false}); - o.__proto__ = p; -} - -// TODO(neis,cbruni): Enable once the necessary traps work again. -// Allow Proxy to be undefined, so test can run in non-Harmony mode as well. -var global = this; - -function ReadonlyByProxy(o, name) { - if (!global.Proxy) return ReadonlyByFreeze(o, name); // Dummy. - var p = new global.Proxy({}, { - getPropertyDescriptor: function() { - return {value: -46, writable: false, configurable: true}; - } - }); - o.__proto__ = p; -} - -var readonlys = [ - ReadonlyByNonwritableDataProperty, ReadonlyByAccessorPropertyWithoutSetter, - ReadonlyByGetter, ReadonlyByFreeze, ReadonlyByProto // ReadonlyByProxy -] - -function TestAllReadonlys(f) { - // Provide various methods to making a property read-only. - for (var i = 0; i < readonlys.length; ++i) { - print(" readonly =", i) - f(readonlys[i]); - } -} - - -// Different use scenarios. - -function Assign(o, x) { - o.a = x; -} - -function AssignStrict(o, x) { - "use strict"; - o.a = x; -} - -function TestAllModes(f) { - for (var strict = 0; strict < 2; ++strict) { - print(" strict =", strict); - f(strict); - } -} - -function TestAllScenarios(f) { - for (var t = 0; t < 100; t = 2*t + 1) { - print("t =", t) - f(function(strict, create, readonly) { - // Make sure that the assignments are monomorphic. - %DeoptimizeFunction(Assign); - %DeoptimizeFunction(AssignStrict); - %ClearFunctionFeedback(Assign); - %ClearFunctionFeedback(AssignStrict); - for (var i = 0; i < t; ++i) { - var o = create(); - assertFalse("a" in o && !("a" in o.__proto__)); - if (strict === 0) - Assign(o, i); - else - AssignStrict(o, i); - assertEquals(i, o.a); - } - %OptimizeFunctionOnNextCall(Assign); - %OptimizeFunctionOnNextCall(AssignStrict); - var o = create(); - assertFalse("a" in o && !("a" in o.__proto__)); - readonly(o.up, "a"); - assertTrue("a" in o); - if (strict === 0) - Assign(o, t + 1); - else - assertThrows(function() { AssignStrict(o, t + 1) }, TypeError); - assertTrue(o.a < 0); - }); - } -} - - -// Runner. - -TestAllScenarios(function(scenario) { - TestAllModes(function(strict) { - TestAllReadonlys(function(readonly) { - TestAllCreates(function(create) { - scenario(strict, create, readonly); - }); - }); - }); -}); - - -// Extra test forcing bailout. - -function Assign2(o, x) { o.a = x } - -(function() { - var p = CreateFromConstructor(Object.prototype)(); - var c = CreateFromConstructor(p); - for (var i = 0; i < 3; ++i) { - var o = c(); - Assign2(o, i); - assertEquals(i, o.a); - } - %OptimizeFunctionOnNextCall(Assign2); - ReadonlyByNonwritableDataProperty(p, "a"); - var o = c(); - Assign2(o, 0); - assertTrue(o.a < 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/realm-property-access.js b/implementation-contributed/v8/mjsunit/realm-property-access.js deleted file mode 100644 index 679886d66a8..00000000000 --- a/implementation-contributed/v8/mjsunit/realm-property-access.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var r = Realm.create(); -var f = Realm.eval(r, "function f() { return this }; f()"); -assertEquals(f, Realm.global(r)); - -// Cross-origin property access throws -assertThrows(() => f.a, TypeError); -assertThrows(() => { 'use strict'; f.a = 1 }, TypeError); - -var r2 = Realm.createAllowCrossRealmAccess(); -var f2 = Realm.eval(r2, "function f() { return this }; f()"); -assertEquals(f2, Realm.global(r2)); - -// Same-origin property access doesn't throw -assertEquals(undefined, f2.a); -f2.a = 1; -assertEquals(1, f2.a); diff --git a/implementation-contributed/v8/mjsunit/receiver-in-with-calls.js b/implementation-contributed/v8/mjsunit/receiver-in-with-calls.js deleted file mode 100644 index 5f2bdac20f4..00000000000 --- a/implementation-contributed/v8/mjsunit/receiver-in-with-calls.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// When invoking functions from within a 'with' statement, we must set -// the receiver to the object where we found the function. - -(function () { - var x = { get_this: function() { return this; } }; - assertTrue(x === x.get_this()); - with (x) assertTrue(x === get_this()); -})(); - - -assertTrue({ f: function() { - function g() { return this; }; - return eval("g")(); -} }.f() == this); - - -assertTrue({ f: function() { - function g() { return this; }; - return eval("g()"); -} }.f() == this); diff --git a/implementation-contributed/v8/mjsunit/recursive-store-opt.js b/implementation-contributed/v8/mjsunit/recursive-store-opt.js deleted file mode 100644 index fb2649248db..00000000000 --- a/implementation-contributed/v8/mjsunit/recursive-store-opt.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function g() { - this.x = this; -} - -function f() { - return new g(); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regexp-UC16.js b/implementation-contributed/v8/mjsunit/regexp-UC16.js deleted file mode 100644 index f609e17bb75..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-UC16.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// UC16 -// Characters used: -// "\u03a3\u03c2\u03c3\u039b\u03bb" - Sigma, final sigma, sigma, Lambda, lamda -assertEquals("x\u03a3\u03c3x,\u03a3", - String(/x(.)\1x/i.exec("x\u03a3\u03c3x")), "backref-UC16"); -assertFalse(/x(...)\1/i.test("x\u03a3\u03c2\u03c3\u03c2\u03c3"), - "\\1 ASCII, string short"); -assertTrue(/\u03a3((?:))\1\1x/i.test("\u03c2x"), "backref-UC16-empty"); -assertTrue(/x(?:...|(...))\1x/i.test("x\u03a3\u03c2\u03c3x"), - "backref-UC16-uncaptured"); -assertTrue(/x(?:...|(...))\1x/i.test("x\u03c2\u03c3\u039b\u03a3\u03c2\u03bbx"), - "backref-UC16-backtrack"); -var longUC16String = "x\u03a3\u03c2\u039b\u03c2\u03c3\u03bb\u03c3\u03a3\u03bb"; -assertEquals(longUC16String + "," + longUC16String.substring(1,4), - String(/x(...)\1\1/i.exec(longUC16String)), - "backref-UC16-twice"); - -assertFalse(/\xc1/i.test('fooA'), "quickcheck-uc16-pattern-ascii-subject"); -assertFalse(/[\xe9]/.test('i'), "charclass-uc16-pattern-ascii-subject"); -assertFalse(/\u5e74|\u6708/.test('t'), "alternation-uc16-pattern-ascii-subject"); diff --git a/implementation-contributed/v8/mjsunit/regexp-cache-replace.js b/implementation-contributed/v8/mjsunit/regexp-cache-replace.js deleted file mode 100644 index ad33acbdfbd..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-cache-replace.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests that regexp caching isn't messing things up. - -var re1 = /(o)/g; -assertEquals("FxxBar", "FooBar".replace(re1, "x")); -assertEquals("o", RegExp.$1); -assertTrue(/(x)/.test("abcxdef")); -assertEquals("x", RegExp.$1); -assertEquals("FxxBar", "FooBar".replace(re1, "x")); -assertEquals("o", RegExp.$1); diff --git a/implementation-contributed/v8/mjsunit/regexp-call-as-function.js b/implementation-contributed/v8/mjsunit/regexp-call-as-function.js deleted file mode 100644 index add81ac25d5..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-call-as-function.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that regular expressions can be called as functions. Calling -// a regular expression as a function corresponds to calling it's exec -// method. - -var regexp = /a(b)(c)/; -var subject = "xyzabcde"; -var expected = 'abc,b,c'; -assertEquals(expected, String(regexp.exec(subject))); -assertThrows(function(){ regexp(subject); }); diff --git a/implementation-contributed/v8/mjsunit/regexp-capture-3.js b/implementation-contributed/v8/mjsunit/regexp-capture-3.js deleted file mode 100644 index 4c27ea454b7..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-capture-3.js +++ /dev/null @@ -1,218 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function oneMatch(re) { - "abcd".replace(re, function() { }); - assertEquals("abcd", RegExp.input); - assertEquals("a", RegExp.leftContext); - assertEquals("b", RegExp.lastMatch); - assertEquals("", RegExp.lastParen); - assertEquals(undefined, RegExp.lastIndex); - assertEquals(undefined, RegExp.index); - assertEquals("cd", RegExp.rightContext); - for (var i = 1; i < 10; i++) { - assertEquals("", RegExp['$' + i]); - } -} - -oneMatch(/b/); -oneMatch(/b/g); - -"abcdabcd".replace(/b/g, function() { }); -assertEquals("abcdabcd", RegExp.input); -assertEquals("abcda", RegExp.leftContext); -assertEquals("b", RegExp.lastMatch); -assertEquals("", RegExp.lastParen); -assertEquals(undefined, RegExp.lastIndex); -assertEquals(undefined, RegExp.index); -assertEquals("cd", RegExp.rightContext); -for (var i = 1; i < 10; i++) { - assertEquals("", RegExp['$' + i]); -} - -function captureMatch(re) { - "abcd".replace(re, function() { }); - assertEquals("abcd", RegExp.input); - assertEquals("a", RegExp.leftContext); - assertEquals("bc", RegExp.lastMatch); - assertEquals("c", RegExp.lastParen); - assertEquals(undefined, RegExp.lastIndex); - assertEquals(undefined, RegExp.index); - assertEquals("d", RegExp.rightContext); - assertEquals('b', RegExp.$1); - assertEquals('c', RegExp.$2); - for (var i = 3; i < 10; i++) { - assertEquals("", RegExp['$' + i]); - } -} - -captureMatch(/(b)(c)/); -captureMatch(/(b)(c)/g); - -"abcdabcd".replace(/(b)(c)/g, function() { }); -assertEquals("abcdabcd", RegExp.input); -assertEquals("abcda", RegExp.leftContext); -assertEquals("bc", RegExp.lastMatch); -assertEquals("c", RegExp.lastParen); -assertEquals(undefined, RegExp.lastIndex); -assertEquals(undefined, RegExp.index); -assertEquals("d", RegExp.rightContext); -assertEquals('b', RegExp.$1); -assertEquals('c', RegExp.$2); -for (var i = 3; i < 10; i++) { - assertEquals("", RegExp['$' + i]); -} - - -function Override() { - // Set the internal lastMatchInfoOverride. After calling this we do a normal - // match and verify the override was cleared and that we record the new - // captures. - "abcdabcd".replace(/(b)(c)/g, function() { }); -} - - -function TestOverride(input, expect, property, re_src) { - var re = new RegExp(re_src); - var re_g = new RegExp(re_src, "g"); - - function OverrideCase(fn) { - Override(); - fn(); - assertEquals(expect, RegExp[property]); - } - - OverrideCase(function() { return input.replace(re, "x"); }); - OverrideCase(function() { return input.replace(re_g, "x"); }); - OverrideCase(function() { return input.replace(re, ""); }); - OverrideCase(function() { return input.replace(re_g, ""); }); - OverrideCase(function() { return input.match(re); }); - OverrideCase(function() { return input.match(re_g); }); - OverrideCase(function() { return re.test(input); }); - OverrideCase(function() { return re_g.test(input); }); -} - -var input = "bar.foo baz......"; -var re_str = "(ba.).*?f"; -TestOverride(input, "bar", "$1", re_str); - -input = "foo bar baz"; -var re_str = "bar"; -TestOverride(input, "bar", "$&", re_str); - - -function no_last_match(fn) { - fn(); - assertEquals("hestfisk", RegExp.$1); -} - -/(hestfisk)/.test("There's no such thing as a hestfisk!"); - -no_last_match(function() { "foo".replace("f", ""); }); -no_last_match(function() { "foo".replace("f", "f"); }); -no_last_match(function() { "foo".split("o"); }); - -var base = "In the music. In the music. "; -var cons = base + base + base + base; -no_last_match(function() { cons.replace("x", "y"); }); -no_last_match(function() { cons.replace("e", "E"); }); - - -// Here's one that matches once, then tries to match again, but fails. -// Verify that the last match info is from the last match, not from the -// failure that came after. -"bar.foo baz......".replace(/(ba.).*?f/g, function() { return "x";}); -assertEquals("bar", RegExp.$1); - - -// A test that initially does a zero width match, but later does a non-zero -// width match. -var a = "foo bar baz".replace(/^|bar/g, ""); -assertEquals("foo baz", a); - -a = "foo bar baz".replace(/^|bar/g, "*"); -assertEquals("*foo * baz", a); - -// We test FilterASCII using regexps that will backtrack forever. Since -// a regexp with a non-ASCII character in it can never match an ASCII -// string we can test that the relevant node is removed by verifying that -// there is no hang. -function NoHang(re) { - "This is an ASCII string that could take forever".match(re); -} - -NoHang(/(((.*)*)*x)Ā/); // Continuation after loop is filtered, so is loop. -NoHang(/(((.*)*)*Ā)foo/); // Body of loop filtered. -NoHang(/Ā(((.*)*)*x)/); // Everything after a filtered character is filtered. -NoHang(/(((.*)*)*x)Ā/); // Everything before a filtered character is filtered. -NoHang(/[ćăĀ](((.*)*)*x)/); // Everything after a filtered class is filtered. -NoHang(/(((.*)*)*x)[ćăĀ]/); // Everything before a filtered class is filtered. -NoHang(/[^\x00-\xff](((.*)*)*x)/); // After negated class. -NoHang(/(((.*)*)*x)[^\x00-\xff]/); // Before negated class. -NoHang(/(?!(((.*)*)*x)Ā)foo/); // Negative lookahead is filtered. -NoHang(/(?!(((.*)*)*x))Ā/); // Continuation branch of negative lookahead. -NoHang(/(?=(((.*)*)*x)Ā)foo/); // Positive lookahead is filtered. -NoHang(/(?=(((.*)*)*x))Ā/); // Continuation branch of positive lookahead. -NoHang(/(?=Ā)(((.*)*)*x)/); // Positive lookahead also prunes continuation. -NoHang(/(æ|ø|Ā)(((.*)*)*x)/); // All branches of alternation are filtered. -NoHang(/(a|b|(((.*)*)*x))Ā/); // 1 out of 3 branches pruned. -NoHang(/(a|(((.*)*)*x)ă|(((.*)*)*x)Ā)/); // 2 out of 3 branches pruned. - -var s = "Don't prune based on a repetition of length 0"; -assertEquals(null, s.match(/å{1,1}prune/)); -assertEquals("prune", (s.match(/å{0,0}prune/)[0])); - -// Some very deep regexps where FilterASCII gives up in order not to make the -// stack overflow. -var regex6 = /a*\u0100*\w/; -var input0 = "a"; -regex6.exec(input0); - -var re = "\u0100*\\w"; - -for (var i = 0; i < 200; i++) re = "a*" + re; - -var regex7 = new RegExp(re); -regex7.exec(input0); - -var regex8 = new RegExp(re, "i"); -regex8.exec(input0); - -re = "[\u0100]*\\w"; -for (var i = 0; i < 200; i++) re = "a*" + re; - -var regex9 = new RegExp(re); -regex9.exec(input0); - -var regex10 = new RegExp(re, "i"); -regex10.exec(input0); - -var regex11 = /^(?:[^\u0000-\u0080]|[0-9a-z?,.!&\s#()])+$/i; -regex11.exec(input0); - -var regex12 = /u(\xf0{8}?\D*?|( ? !)$h??(|)*?(||)+?\6((?:\W\B|--\d-*-|)?$){0, }?|^Y( ? !1)\d+)+a/; -regex12.exec(""); diff --git a/implementation-contributed/v8/mjsunit/regexp-capture.js b/implementation-contributed/v8/mjsunit/regexp-capture.js deleted file mode 100644 index 307309482a6..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-capture.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests from http://blog.stevenlevithan.com/archives/npcg-javascript - -assertEquals(true, /(x)?\1y/.test("y")); -assertEquals(["y", undefined], /(x)?\1y/.exec("y")); -assertEquals(["y", undefined], /(x)?y/.exec("y")); -assertEquals(["y", undefined], "y".match(/(x)?\1y/)); -assertEquals(["y", undefined], "y".match(/(x)?y/)); -assertEquals(["y"], "y".match(/(x)?\1y/g)); -assertEquals(["", undefined, ""], "y".split(/(x)?\1y/)); -assertEquals(["", undefined, ""], "y".split(/(x)?y/)); -assertEquals(0, "y".search(/(x)?\1y/)); -assertEquals("z", "y".replace(/(x)?\1y/, "z")); -assertEquals("", "y".replace(/(x)?y/, "$1")); -assertEquals("undefined", "y".replace(/(x)?\1y/, - function($0, $1){ - return String($1); - })); -assertEquals("undefined", "y".replace(/(x)?y/, - function($0, $1){ - return String($1); - })); -assertEquals("undefined", "y".replace(/(x)?y/, - function($0, $1){ - return $1; - })); - -// See https://bugzilla.mozilla.org/show_bug.cgi?id=476146 -assertEquals(["bbc", "b"], /^(b+|a){1,2}?bc/.exec("bbc")); -assertEquals(["bbaa", "a", "", "a"], - /((\3|b)\2(a)){2,}/.exec("bbaababbabaaaaabbaaaabba")); - -// From crbug.com/128821 - don't hang: -"".match(/((a|i|A|I|u|o|U|O)(s|c|b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|y|z|B|C|D|F|G|H|J|K|L|M|N|P|Q|R|S|T|V|W|X|Y|Z)*) de\/da([.,!?\s]|$)/); diff --git a/implementation-contributed/v8/mjsunit/regexp-captures.js b/implementation-contributed/v8/mjsunit/regexp-captures.js deleted file mode 100644 index 91548d643b8..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-captures.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var re = /^(((N({)?)|(R)|(U)|(V)|(B)|(H)|(n((n)|(r)|(v)|(h))?)|(r(r)?)|(v)|(b((n)|(b))?)|(h))|((Y)|(A)|(E)|(o(u)?)|(p(u)?)|(q(u)?)|(s)|(t)|(u)|(w)|(x(u)?)|(y)|(z)|(a((T)|(A)|(L))?)|(c)|(e)|(f(u)?)|(g(u)?)|(i)|(j)|(l)|(m(u)?)))+/; -var r = new RegExp(re) -var str = "Avtnennan gunzvmu pubExnY nEvln vaTxh rmuhguhaTxnY" -assertTrue(r.test(str)); diff --git a/implementation-contributed/v8/mjsunit/regexp-compile.js b/implementation-contributed/v8/mjsunit/regexp-compile.js deleted file mode 100644 index f00178008cc..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-compile.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we don't cache the result of a regexp match across a -// compile event. -var re = /x/; -assertEquals("a.yb", "axyb".replace(re, ".")); - -re.compile("y"); -assertEquals("ax.b", "axyb".replace(re, ".")); - -re.compile("(x)"); - -assertEquals(["x", "x"], re.exec("axyb")); - -re.compile("(y)"); - -assertEquals(["y", "y"], re.exec("axyb")); - -assertEquals(2, re.compile.length); - -// If RegExp parsing fails, the RegExp is not modified -var r = /./; try { r.compile('? invalid'); } catch(err){} -assertEquals("/./", r.toString()); diff --git a/implementation-contributed/v8/mjsunit/regexp-global.js b/implementation-contributed/v8/mjsunit/regexp-global.js deleted file mode 100644 index 85016994581..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-global.js +++ /dev/null @@ -1,254 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Test that an optional capture is cleared between two matches. -var str = "ABX X"; -str = str.replace(/(\w)?X/g, function(match, capture) { - assertTrue(match.indexOf(capture) >= 0 || - capture === undefined); - return capture ? capture.toLowerCase() : "-"; - }); -assertEquals("Ab -", str); - -// Test zero-length matches. -str = "Als Gregor Samsa eines Morgens"; -str = str.replace(/\b/g, function(match, capture) { - return "/"; - }); -assertEquals("/Als/ /Gregor/ /Samsa/ /eines/ /Morgens/", str); - -// Test zero-length matches that have non-zero-length sub-captures. -str = "It was a pleasure to burn."; -str = str.replace(/(?=(\w+))\b/g, function(match, capture) { - return capture.length; - }); -assertEquals("2It 3was 1a 8pleasure 2to 4burn.", str); - -// Test multiple captures. -str = "Try not. Do, or do not. There is no try."; -str = str.replace(/(not?)|(do)|(try)/gi, - function(match, c1, c2, c3) { - assertTrue((c1 === undefined && c2 === undefined) || - (c2 === undefined && c3 === undefined) || - (c1 === undefined && c3 === undefined)); - if (c1) return "-"; - if (c2) return "+"; - if (c3) return "=" - }); -assertEquals("= -. +, or + -. There is - =.", str); - -// Test multiple alternate captures. -str = "FOUR LEGS GOOD, TWO LEGS BAD!"; -str = str.replace(/(FOUR|TWO) LEGS (GOOD|BAD)/g, - function(match, num_legs, likeability) { - assertTrue(num_legs !== undefined); - assertTrue(likeability !== undefined); - if (num_legs == "FOUR") assertTrue(likeability == "GOOD"); - if (num_legs == "TWO") assertTrue(likeability == "BAD"); - return match.length - 10; - }); -assertEquals("4, 2!", str); - - -// The same tests with UC16. - -//Test that an optional capture is cleared between two matches. -str = "AB\u1234 \u1234"; -str = str.replace(/(\w)?\u1234/g, - function(match, capture) { - assertTrue(match.indexOf(capture) >= 0 || - capture === undefined); - return capture ? capture.toLowerCase() : "-"; - }); -assertEquals("Ab -", str); - -// Test zero-length matches. -str = "Als \u2623\u2642 eines Morgens"; -str = str.replace(/\b/g, function(match, capture) { - return "/"; - }); -assertEquals("/Als/ \u2623\u2642 /eines/ /Morgens/", str); - -// Test zero-length matches that have non-zero-length sub-captures. -str = "It was a pleasure to \u70e7."; -str = str.replace(/(?=(\w+))\b/g, function(match, capture) { - return capture.length; - }); -assertEquals("2It 3was 1a 8pleasure 2to \u70e7.", str); - -// Test multiple captures. -str = "Try not. D\u26aa, or d\u26aa not. There is no try."; -str = str.replace(/(not?)|(d\u26aa)|(try)/gi, - function(match, c1, c2, c3) { - assertTrue((c1 === undefined && c2 === undefined) || - (c2 === undefined && c3 === undefined) || - (c1 === undefined && c3 === undefined)); - if (c1) return "-"; - if (c2) return "+"; - if (c3) return "=" - }); -assertEquals("= -. +, or + -. There is - =.", str); - -// Test multiple alternate captures. -str = "FOUR \u817f GOOD, TWO \u817f BAD!"; -str = str.replace(/(FOUR|TWO) \u817f (GOOD|BAD)/g, - function(match, num_legs, likeability) { - assertTrue(num_legs !== undefined); - assertTrue(likeability !== undefined); - if (num_legs == "FOUR") assertTrue(likeability == "GOOD"); - if (num_legs == "TWO") assertTrue(likeability == "BAD"); - return match.length - 7; - }); -assertEquals("4, 2!", str); - -// Test capture that is a real substring. -var str = "Beasts of England, beasts of Ireland"; -str = str.replace(/(.*)/g, function(match) { return '~'; }); -assertEquals("~~", str); - -// Test zero-length matches that have non-zero-length sub-captures that do not -// start at the match start position. -str = "up up up up"; -str = str.replace(/\b(?=u(p))/g, function(match, capture) { - return capture.length; - }); - -assertEquals("1up 1up 1up 1up", str); - - -// Create regexp that has a *lot* of captures. -var re_string = "(a)"; -for (var i = 0; i < 500; i++) { - re_string = "(" + re_string + ")"; -} -re_string = re_string + "1"; -// re_string = "(((...((a))...)))1" - -var regexps = new Array(); -var last_match_expectations = new Array(); -var first_capture_expectations = new Array(); - -// Atomic regexp. -regexps.push(/a1/g); -last_match_expectations.push("a1"); -first_capture_expectations.push(""); -// Small regexp (no capture); -regexps.push(/\w1/g); -last_match_expectations.push("a1"); -first_capture_expectations.push(""); -// Small regexp (one capture). -regexps.push(/(a)1/g); -last_match_expectations.push("a1"); -first_capture_expectations.push("a"); -// Large regexp (a lot of captures). -regexps.push(new RegExp(re_string, "g")); -last_match_expectations.push("a1"); -first_capture_expectations.push("a"); - -function test_replace(result_expectation, - subject, - regexp, - replacement) { - for (var i = 0; i < regexps.length; i++) { - // Overwrite last match info. - "deadbeef".replace(/(dead)beef/, "$1holeycow"); - // Conduct tests. - assertEquals(result_expectation, subject.replace(regexps[i], replacement)); - if (subject.length == 0) { - assertEquals("deadbeef", RegExp.lastMatch); - assertEquals("dead", RegExp["$1"]); - } else { - assertEquals(last_match_expectations[i], RegExp.lastMatch); - assertEquals(first_capture_expectations[i], RegExp["$1"]); - } - } -} - - -function test_match(result_expectation, - subject, - regexp) { - for (var i = 0; i < regexps.length; i++) { - // Overwrite last match info. - "deadbeef".replace(/(dead)beef/, "$1holeycow"); - // Conduct tests. - if (result_expectation == null) { - assertNull(subject.match(regexps[i])); - } else { - assertArrayEquals(result_expectation, subject.match(regexps[i])); - } - if (subject.length == 0) { - assertEquals("deadbeef", RegExp.lastMatch); - assertEquals("dead", RegExp["$1"]); - } else { - assertEquals(last_match_expectations[i], RegExp.lastMatch); - assertEquals(first_capture_expectations[i], RegExp["$1"]); - } - } -} - - -// Test for different number of matches. -for (var m = 0; m < 33; m++) { - // Create string that matches m times. - var subject = ""; - var test_1_expectation = ""; - var test_2_expectation = ""; - var test_3_expectation = (m == 0) ? null : new Array(); - for (var i = 0; i < m; i++) { - subject += "a11"; - test_1_expectation += "x1"; - test_2_expectation += "1"; - test_3_expectation.push("a1"); - } - - // Test 1a: String.replace with string. - test_replace(test_1_expectation, subject, /a1/g, "x"); - - // Test 1b: String.replace with function. - function f() { return "x"; } - test_replace(test_1_expectation, subject, /a1/g, f); - - // Test 2a: String.replace with empty string. - test_replace(test_2_expectation, subject, /a1/g, ""); - - // Test 3a: String.match. - test_match(test_3_expectation, subject, /a1/g); -} - - -// Test String hashing (compiling regular expression includes hashing). -var crosscheck = "\x80"; -for (var i = 0; i < 12; i++) crosscheck += crosscheck; -new RegExp(crosscheck); - -var subject = "ascii~only~string~here~"; -var replacement = "\x80"; -var result = subject.replace(/~/g, replacement); -for (var i = 0; i < 5; i++) result += result; -new RegExp(result); diff --git a/implementation-contributed/v8/mjsunit/regexp-indexof.js b/implementation-contributed/v8/mjsunit/regexp-indexof.js deleted file mode 100644 index 09f2fec0078..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-indexof.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function CheckMatch(re, str, matches) { - assertEquals(matches.length > 0, re.test(str)); - var result = str.match(re); - if (matches.length > 0) { - assertEquals(matches.length, result.length); - var lastExpected; - var lastFrom; - var lastLength; - for (var idx = 0; idx < matches.length; idx++) { - var from = matches[idx][0]; - var length = matches[idx][1]; - var expected = str.substr(from, length); - var name = str + "[" + from + ".." + (from+length) + "]"; - assertEquals(expected, result[idx], name); - if (re.global || idx == 0) { - lastExpected = expected; - lastFrom = from; - lastLength = length; - } - } - assertEquals(lastExpected, RegExp.lastMatch, "lastMatch"); - assertEquals(str.substr(0, lastFrom), RegExp.leftContext, "leftContext"); - assertEquals( - str.substr(lastFrom + lastLength), RegExp.rightContext, "rightContext"); - } else { - assertTrue(result === null); - } -} - -CheckMatch(/abc/, "xxxabcxxxabcxxx", [[3, 3]]); -CheckMatch(/abc/g, "xxxabcxxxabcxxx", [[3, 3], [9, 3]]); -CheckMatch(/abc/, "xxxabababcxxxabcxxx", [[7, 3]]); -CheckMatch(/abc/g, "abcabcabc", [[0, 3], [3, 3], [6, 3]]); -CheckMatch(/aba/g, "ababababa", [[0, 3], [4, 3]]); -CheckMatch(/foo/g, "ofooofoooofofooofo", [[1, 3], [5, 3], [12, 3]]); -CheckMatch(/foobarbaz/, "xx", []); -CheckMatch(new RegExp(""), "xxx", [[0, 0]]); -CheckMatch(/abc/, "abababa", []); - -assertEquals("xxxdefxxxdefxxx", "xxxabcxxxabcxxx".replace(/abc/g, "def")); -assertEquals("o-o-oofo-ofo", "ofooofoooofofooofo".replace(/foo/g, "-")); -assertEquals("deded", "deded".replace(/x/g, "-")); -assertEquals("-a-b-c-d-e-f-", "abcdef".replace(new RegExp("", "g"), "-")); - -CheckMatch(/a(.)/, "xyzzyabxyzzzyacxyzzy", [[5, 2], [6, 1]]); -CheckMatch(/a(.)/g, "xyzzyabxyzzyacxyzzy", [[5, 2], [12, 2]]); - -CheckMatch(/a|(?:)/g, "aba", [[0, 1], [1, 0], [2, 1], [3, 0]]); -CheckMatch(/a|(?:)/g, "baba", [[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]); -CheckMatch(/a|(?:)/g, "bab", [[0, 0], [1, 1], [2, 0], [3, 0]]); diff --git a/implementation-contributed/v8/mjsunit/regexp-lastIndex.js b/implementation-contributed/v8/mjsunit/regexp-lastIndex.js deleted file mode 100644 index 16b9f86d9bd..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-lastIndex.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// lastIndex is set only for global or sticky RegExps. On failure to find -// a match, it is set to 0. If a set fails, then it acts as if in strict mode -// and throws. - -var re = /x/g; -Object.defineProperty(re, 'lastIndex', {writable: false}); -assertThrows(() => re.exec(""), TypeError); -assertThrows(() => re.exec("x"), TypeError); - -var re = /x/y; -Object.defineProperty(re, 'lastIndex', {writable: false}); -assertThrows(() => re.exec(""), TypeError); -assertThrows(() => re.exec("x"), TypeError); - -var re = /x/; -Object.defineProperty(re, 'lastIndex', {writable: false}); -assertEquals(null, re.exec("")); -assertEquals(["x"], re.exec("x")); diff --git a/implementation-contributed/v8/mjsunit/regexp-lookahead.js b/implementation-contributed/v8/mjsunit/regexp-lookahead.js deleted file mode 100644 index 1188b56078e..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-lookahead.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests captures in positive and negative look-ahead in regular expressions. - -function stringEscape(string) { - // Converts string to source literal. - return '"' + string.replace(/["\\]/g, "\\$1") + '"'; -} - -function testRE(re, input, expected_result) { - var testName = re + ".test(" + stringEscape(input) +")"; - if (expected_result) { - assertTrue(re.test(input), testName); - } else { - assertFalse(re.test(input), testName); - } -} - -function execRE(re, input, expected_result) { - var testName = re + ".exec('" + stringEscape(input) +"')"; - assertEquals(expected_result, re.exec(input), testName); -} - -// Test of simple positive lookahead. - -var re = /^(?=a)/; -testRE(re, "a", true); -testRE(re, "b", false); -execRE(re, "a", [""]); - -re = /^(?=\woo)f\w/; -testRE(re, "foo", true); -testRE(re, "boo", false); -testRE(re, "fao", false); -testRE(re, "foa", false); -execRE(re, "foo", ["fo"]); - -re = /(?=\w).(?=\W)/; -testRE(re, ".a! ", true); -testRE(re, ".! ", false); -testRE(re, ".ab! ", true); -execRE(re, ".ab! ", ["b"]); - -re = /(?=f(?=[^f]o))../; -testRE(re, ", foo!", true); -testRE(re, ", fo!", false); -testRE(re, ", ffo", false); -execRE(re, ", foo!", ["fo"]); - -// Positive lookahead with captures. -re = /^[^\'\"]*(?=([\'\"])).*\1(\w+)\1/; -testRE(re, " 'foo' ", true); -testRE(re, ' "foo" ', true); -testRE(re, " \" 'foo' ", false); -testRE(re, " ' \"foo\" ", false); -testRE(re, " 'foo\" ", false); -testRE(re, " \"foo' ", false); -execRE(re, " 'foo' ", [" 'foo'", "'", "foo"]); -execRE(re, ' "foo" ', [' "foo"', '"', 'foo']); - -// Captures are cleared on backtrack past the look-ahead. -re = /^(?:(?=(.))a|b)\1$/; -testRE(re, "aa", true); -testRE(re, "b", true); -testRE(re, "bb", false); -testRE(re, "a", false); -execRE(re, "aa", ["aa", "a"]); -execRE(re, "b", ["b", undefined]); - -re = /^(?=(.)(?=(.)\1\2)\2\1)\1\2/; -testRE(re, "abab", true); -testRE(re, "ababxxxxxxxx", true); -testRE(re, "aba", false); -execRE(re, "abab", ["ab", "a", "b"]); - -re = /^(?:(?=(.))a|b|c)$/; -testRE(re, "a", true); -testRE(re, "b", true); -testRE(re, "c", true); -testRE(re, "d", false); -execRE(re, "a", ["a", "a"]); -execRE(re, "b", ["b", undefined]); -execRE(re, "c", ["c", undefined]); - -execRE(/^(?=(b))b/, "b", ["b", "b"]); -execRE(/^(?:(?=(b))|a)b/, "ab", ["ab", undefined]); -execRE(/^(?:(?=(b)(?:(?=(c))|d))|)bd/, "bd", ["bd", "b", undefined]); - - - -// Test of Negative Look-Ahead. - -re = /(?!x)./; -testRE(re, "y", true); -testRE(re, "x", false); -execRE(re, "y", ["y"]); - -re = /(?!(\d))|\d/; -testRE(re, "4", true); -execRE(re, "4", ["4", undefined]); -execRE(re, "x", ["", undefined]); - - -// Test mixed nested look-ahead with captures. - -re = /^(?=(x)(?=(y)))/; -testRE(re, "xy", true); -testRE(re, "xz", false); -execRE(re, "xy", ["", "x", "y"]); - -re = /^(?!(x)(?!(y)))/; -testRE(re, "xy", true); -testRE(re, "xz", false); -execRE(re, "xy", ["", undefined, undefined]); - -re = /^(?=(x)(?!(y)))/; -testRE(re, "xz", true); -testRE(re, "xy", false) -execRE(re, "xz", ["", "x", undefined]); - -re = /^(?!(x)(?=(y)))/; -testRE(re, "xz", true); -testRE(re, "xy", false); -execRE(re, "xz", ["", undefined, undefined]); - -re = /^(?=(x)(?!(y)(?=(z))))/; -testRE(re, "xaz", true); -testRE(re, "xya", true); -testRE(re, "xyz", false); -testRE(re, "a", false); -execRE(re, "xaz", ["", "x", undefined, undefined]); -execRE(re, "xya", ["", "x", undefined, undefined]); - -re = /^(?!(x)(?=(y)(?!(z))))/; -testRE(re, "a", true); -testRE(re, "xa", true); -testRE(re, "xyz", true); -testRE(re, "xya", false); -execRE(re, "a", ["", undefined, undefined, undefined]); -execRE(re, "xa", ["", undefined, undefined, undefined]); -execRE(re, "xyz", ["", undefined, undefined, undefined]); diff --git a/implementation-contributed/v8/mjsunit/regexp-loop-capture.js b/implementation-contributed/v8/mjsunit/regexp-loop-capture.js deleted file mode 100644 index 9a0c99ceefc..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-loop-capture.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(["abc",undefined,undefined,"c"], /(?:(a)|(b)|(c))+/.exec("abc")); -assertEquals(["ab",undefined], /(?:(a)|b)*/.exec("ab")); diff --git a/implementation-contributed/v8/mjsunit/regexp-modifiers-autogenerated-i18n.js b/implementation-contributed/v8/mjsunit/regexp-modifiers-autogenerated-i18n.js deleted file mode 100644 index aace7113a26..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-modifiers-autogenerated-i18n.js +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --regexp-mode-modifiers - -// These regexps are just grepped out of the other tests we already have -// and the syntax changed from out-of-line i flag to inline i flag. - -// These tests won't all run on the noi18n build of V8. - -assertTrue(/(?i)\u00e5/u.test("\u00c5")); -assertTrue(/(?i)\u00e5/u.test("\u00e5")); -assertTrue(/(?i)\u00c5/u.test("\u00e5")); -assertTrue(/(?i)\u00c5/u.test("\u00c5")); -assertTrue(/(?i)\u212b/u.test("\u212b")); -assertFalse(/(?i)\u00df/u.test("SS")); -assertFalse(/(?i)\u1f8d/u.test("\u1f05\u03b9")); -assertTrue(/(?i)\u1f6b/u.test("\u1f63")); -assertTrue(/(?i)\u00e5/u.test("\u212b")); -assertTrue(/(?i)\u00e5/u.test("\u00c5")); -assertTrue(/(?i)\u00e5/u.test("\u00e5")); -assertTrue(/(?i)\u00e5/u.test("\u212b")); -assertTrue(/(?i)\u00c5/u.test("\u00e5")); -assertTrue(/(?i)\u00c5/u.test("\u212b")); -assertTrue(/(?i)\u00c5/u.test("\u00c5")); -assertTrue(/(?i)\u212b/u.test("\u00c5")); -assertTrue(/(?i)\u212b/u.test("\u00e5")); -assertTrue(/(?i)\u212b/u.test("\u212b")); -assertTrue(/(?i)\u{10400}/u.test("\u{10428}")); -assertTrue(/(?i)\ud801\udc00/u.test("\u{10428}")); -assertTrue(/(?i)[\u{10428}]/u.test("\u{10400}")); -assertTrue(/(?i)[\ud801\udc28]/u.test("\u{10400}")); -assertFalse(/(?i)\u00df/u.test("SS")); -assertFalse(/(?i)\u1f8d/u.test("\u1f05\u03b9")); -assertTrue(/(?i)\u1f8d/u.test("\u1f85")); -assertTrue(/(?i)\u1f6b/u.test("\u1f63")); -assertTrue(/(?i)\u00e5\u00e5\u00e5/u.test("\u212b\u00e5\u00c5")); -assertTrue(/(?i)AB\u{10400}/u.test("ab\u{10428}")); -assertTrue(/(?i)\w/u.test('\u017F')); -assertTrue(/(?i)\w/u.test('\u212A')); -assertFalse(/(?i)\W/u.test('\u017F')); -assertFalse(/(?i)\W/u.test('\u212A')); -assertFalse(/(?i)\W/u.test('s')); -assertFalse(/(?i)\W/u.test('S')); -assertFalse(/(?i)\W/u.test('K')); -assertFalse(/(?i)\W/u.test('k')); -assertTrue(/(?i)[\w]/u.test('\u017F')); -assertTrue(/(?i)[\w]/u.test('\u212A')); -assertFalse(/(?i)[\W]/u.test('\u017F')); -assertFalse(/(?i)[\W]/u.test('\u212A')); -assertFalse(/(?i)[\W]/u.test('s')); -assertFalse(/(?i)[\W]/u.test('S')); -assertFalse(/(?i)[\W]/u.test('K')); -assertFalse(/(?i)[\W]/u.test('k')); -assertTrue(/(?i)\b/u.test('\u017F')); -assertTrue(/(?i)\b/u.test('\u212A')); -assertTrue(/(?i)\b/u.test('s')); -assertTrue(/(?i)\b/u.test('S')); -assertFalse(/(?i)\B/u.test('\u017F')); -assertFalse(/(?i)\B/u.test('\u212A')); -assertFalse(/(?i)\B/u.test('s')); -assertFalse(/(?i)\B/u.test('S')); -assertFalse(/(?i)\B/u.test('K')); -assertFalse(/(?i)\B/u.test('k')); -assertTrue(/(?i)\p{Ll}/u.test("a")); -assertTrue(/(?i)\p{Ll}/u.test("\u{118D4}")); -assertTrue(/(?i)\p{Ll}/u.test("A")); -assertTrue(/(?i)\p{Ll}/u.test("\u{118B4}")); -assertTrue(/(?i)\P{Ll}/u.test("a")); -assertTrue(/(?i)\P{Ll}/u.test("\u{118D4}")); -assertTrue(/(?i)\P{Ll}/u.test("A")); -assertTrue(/(?i)\P{Ll}/u.test("\u{118B4}")); -assertTrue(/(?i)\p{Lu}/u.test("a")); -assertTrue(/(?i)\p{Lu}/u.test("\u{118D4}")); -assertTrue(/(?i)\p{Lu}/u.test("A")); -assertTrue(/(?i)\p{Lu}/u.test("\u{118B4}")); -assertTrue(/(?i)\P{Lu}/u.test("a")); -assertTrue(/(?i)\P{Lu}/u.test("\u{118D4}")); -assertTrue(/(?i)\P{Lu}/u.test("A")); -assertTrue(/(?i)\P{Lu}/u.test("\u{118B4}")); diff --git a/implementation-contributed/v8/mjsunit/regexp-modifiers-autogenerated.js b/implementation-contributed/v8/mjsunit/regexp-modifiers-autogenerated.js deleted file mode 100644 index 82d1341b2a1..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-modifiers-autogenerated.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --regexp-mode-modifiers - -// These regexps are just grepped out of the other tests we already have -// and the syntax changed from out-of-line i flag to inline i flag. - -assertFalse(/(?i)x(...)\1/.test("x\u03a3\u03c2\u03c3\u03c2\u03c3")); -assertTrue(/(?i)\u03a3((?:))\1\1x/.test("\u03c2x"), "backref-UC16-empty"); -assertTrue(/(?i)x(?:...|(...))\1x/.test("x\u03a3\u03c2\u03c3x")); -assertTrue(/(?i)x(?:...|(...))\1x/.test("x\u03c2\u03c3\u039b\u03a3\u03c2\u03bbx")); -assertFalse(/(?i)\xc1/.test('fooA'), "quickcheck-uc16-pattern-ascii-subject"); -assertFalse(/(?i)x(...)\1/.test("xaaaaa"), "backref-ASCII-short"); -assertTrue(/(?i)x((?:))\1\1x/.test("xx"), "backref-ASCII-empty"); -assertTrue(/(?i)x(?:...|(...))\1x/.test("xabcx"), "backref-ASCII-uncaptured"); -assertTrue(/(?i)x(?:...|(...))\1x/.test("xabcABCx"), "backref-ASCII-backtrack"); -assertFalse(/(?i)f/.test('b')); -assertFalse(/(?i)[abc]f/.test('x')); -assertFalse(/(?i)[abc]f/.test('xa')); -assertFalse(/(?i)[abc] new RegExp("foo(?i:")); -assertThrows(() => new RegExp("foo(?--i)")); -assertThrows(() => new RegExp("foo(?i-i)")); - -assertThrows(() => new RegExp("foo(?m:")); -assertThrows(() => new RegExp("foo(?--m)")); -assertThrows(() => new RegExp("foo(?m-m)")); - -var re = /^\s(?m)^.$\s(?-m)$/; -assertTrue(re.test("\n.\n")); -assertFalse(re.test(" .\n")); -assertFalse(re.test("\n. ")); -assertFalse(re.test(" . ")); -assertFalse(re.test("_\n.\n")); -assertFalse(re.test("\n.\n_")); -assertFalse(re.test("_\n.\n_")); - -assertEquals(["abcd", "d"], /a.*?(.)(?i)\b/.exec('abcd\u017F cd')); -assertEquals(["abcd", "d"], /a.*?(.)(?i)\b/.exec('abcd\u212A cd')); - -assertEquals(["a\u017F ", " "], /a.*?(?i)\B(.)/.exec('a\u017F ')); -assertEquals(["a\u212A ", " "], /a.*?(?i)\B(.)/.exec('a\u212A ')); - -// Nested flags. -var res = [ - /^a(?i:b(?-i:c(?i:d)e)f)g$/, - /^a(?i:b(?-i)c(?i)d(?-i)e(?i)f)g$/, - /^(?-i:a(?i:b(?-i:c(?i:d)e)f)g)$/i, - /^(?-i:a(?i:b(?-i)c(?i)d(?-i)e(?i)f)g)$/i, -]; - -for (var idx = 0; idx < res.length; idx++) { - var re = res[idx]; - for (var i = 0; i < 128; i++) { - var s = (i & 1) ? "A" : "a"; - s += (i & 2) ? "B" : "b"; - s += (i & 4) ? "C" : "c"; - s += (i & 8) ? "D" : "d"; - s += (i & 16) ? "E" : "e"; - s += (i & 32) ? "F" : "f"; - s += (i & 64) ? "G" : "g"; - if ((i & (1 | 4 | 16 | 64)) != 0) { - assertFalse(re.test(s), s); - } else { - assertTrue(re.test(s), s); - } - } -} diff --git a/implementation-contributed/v8/mjsunit/regexp-multiline.js b/implementation-contributed/v8/mjsunit/regexp-multiline.js deleted file mode 100644 index 32edf25e5ee..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-multiline.js +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * @fileoverview Check that various regexp constructs work as intended. - * Particularly those regexps that use ^ and $. - */ - -assertTrue(/^bar/.test("bar")); -assertTrue(/^bar/.test("bar\nfoo")); -assertFalse(/^bar/.test("foo\nbar")); -assertTrue(/^bar/m.test("bar")); -assertTrue(/^bar/m.test("bar\nfoo")); -assertTrue(/^bar/m.test("foo\nbar")); - -assertTrue(/bar$/.test("bar")); -assertFalse(/bar$/.test("bar\nfoo")); -assertTrue(/bar$/.test("foo\nbar")); -assertTrue(/bar$/m.test("bar")); -assertTrue(/bar$/m.test("bar\nfoo")); -assertTrue(/bar$/m.test("foo\nbar")); - -assertFalse(/^bxr/.test("bar")); -assertFalse(/^bxr/.test("bar\nfoo")); -assertFalse(/^bxr/m.test("bar")); -assertFalse(/^bxr/m.test("bar\nfoo")); -assertFalse(/^bxr/m.test("foo\nbar")); - -assertFalse(/bxr$/.test("bar")); -assertFalse(/bxr$/.test("foo\nbar")); -assertFalse(/bxr$/m.test("bar")); -assertFalse(/bxr$/m.test("bar\nfoo")); -assertFalse(/bxr$/m.test("foo\nbar")); - - -assertTrue(/^.*$/.test("")); -assertTrue(/^.*$/.test("foo")); -assertFalse(/^.*$/.test("\n")); -assertTrue(/^.*$/m.test("\n")); - -assertTrue(/^[\s]*$/.test(" ")); -assertTrue(/^[\s]*$/.test("\n")); - -assertTrue(/^[^]*$/.test("")); -assertTrue(/^[^]*$/.test("foo")); -assertTrue(/^[^]*$/.test("\n")); - -assertTrue(/^([()\s]|.)*$/.test("()\n()")); -assertTrue(/^([()\n]|.)*$/.test("()\n()")); -assertFalse(/^([()]|.)*$/.test("()\n()")); -assertTrue(/^([()]|.)*$/m.test("()\n()")); -assertTrue(/^([()]|.)*$/m.test("()\n")); -assertTrue(/^[()]*$/m.test("()\n.")); - -assertTrue(/^[\].]*$/.test("...]...")); - - -function check_case(lc, uc) { - var a = new RegExp("^" + lc + "$"); - assertFalse(a.test(uc)); - a = new RegExp("^" + lc + "$", "i"); - assertTrue(a.test(uc)); - - var A = new RegExp("^" + uc + "$"); - assertFalse(A.test(lc)); - A = new RegExp("^" + uc + "$", "i"); - assertTrue(A.test(lc)); - - a = new RegExp("^[" + lc + "]$"); - assertFalse(a.test(uc)); - a = new RegExp("^[" + lc + "]$", "i"); - assertTrue(a.test(uc)); - - A = new RegExp("^[" + uc + "]$"); - assertFalse(A.test(lc)); - A = new RegExp("^[" + uc + "]$", "i"); - assertTrue(A.test(lc)); -} - - -check_case("a", "A"); -// Aring -check_case(String.fromCharCode(229), String.fromCharCode(197)); -// Russian G -check_case(String.fromCharCode(0x413), String.fromCharCode(0x433)); - - -assertThrows("a = new RegExp('[z-a]');"); diff --git a/implementation-contributed/v8/mjsunit/regexp-override-exec.js b/implementation-contributed/v8/mjsunit/regexp-override-exec.js deleted file mode 100644 index 66dbf1349f5..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-override-exec.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = "baa"; - -assertEquals(1, s.search(/a/)); -assertEquals(["aa"], s.match(/a./)); -assertEquals(["b", "", ""], s.split(/a/)); - -let o = { index : 3, 0 : "x" }; - -RegExp.prototype.exec = () => { return o; } -assertEquals(3, s.search(/a/)); -assertEquals(o, s.match(/a./)); -assertEquals("baar", s.replace(/a./, "r")); - -RegExp.prototype.exec = () => { return null; } -assertEquals(["baa"], s.split(/a/)); diff --git a/implementation-contributed/v8/mjsunit/regexp-override-symbol-match-all.js b/implementation-contributed/v8/mjsunit/regexp-override-symbol-match-all.js deleted file mode 100644 index b5b99f232d9..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-override-symbol-match-all.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-string-matchall - -var s = "baa"; - -assertEquals([["b"]], [...s.matchAll(/./)]); - -RegExp.prototype[Symbol.matchAll] = () => 42; -assertEquals(42, s.matchAll(/a./)); diff --git a/implementation-contributed/v8/mjsunit/regexp-override-symbol-match.js b/implementation-contributed/v8/mjsunit/regexp-override-symbol-match.js deleted file mode 100644 index da9b6f5aff1..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-override-symbol-match.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = "baa"; - -assertEquals(["aa"], s.match(/a./)); - -RegExp.prototype[Symbol.match] = () => 42; -assertEquals(42, s.match(/a./)); diff --git a/implementation-contributed/v8/mjsunit/regexp-override-symbol-replace.js b/implementation-contributed/v8/mjsunit/regexp-override-symbol-replace.js deleted file mode 100644 index 8f3e5c1620c..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-override-symbol-replace.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = "baa"; - -assertEquals("bca", s.replace(/a/, "c")); - -RegExp.prototype[Symbol.replace] = () => 42; -assertEquals(42, s.replace(/a./)); diff --git a/implementation-contributed/v8/mjsunit/regexp-override-symbol-search.js b/implementation-contributed/v8/mjsunit/regexp-override-symbol-search.js deleted file mode 100644 index 2daf25a65a7..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-override-symbol-search.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = "baa"; - -assertEquals(1, s.search(/a/)); - -RegExp.prototype[Symbol.search] = () => 42; -assertEquals(42, s.search(/a/)); diff --git a/implementation-contributed/v8/mjsunit/regexp-override-symbol-split.js b/implementation-contributed/v8/mjsunit/regexp-override-symbol-split.js deleted file mode 100644 index f5d35b1862d..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-override-symbol-split.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = "baa"; - -assertEquals(["b", "", ""], s.split(/a/)); - -RegExp.prototype[Symbol.split] = () => 42; -assertEquals(42, s.split(/a./)); diff --git a/implementation-contributed/v8/mjsunit/regexp-regexpexec.js b/implementation-contributed/v8/mjsunit/regexp-regexpexec.js deleted file mode 100644 index bfc42b6a164..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-regexpexec.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that the fallback path in RegExpExec executes the default exec -// implementation. -delete RegExp.prototype.exec; -assertEquals("b", "aba".replace(/a/g, "")); diff --git a/implementation-contributed/v8/mjsunit/regexp-results-cache.js b/implementation-contributed/v8/mjsunit/regexp-results-cache.js deleted file mode 100644 index 9de866106b4..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-results-cache.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Long string to trigger caching. -var string = -"Friends, Romans, countrymen, lend me your ears! \ - I come to bury Caesar, not to praise him. \ - The evil that men do lives after them, \ - The good is oft interred with their bones; \ - So let it be with Caesar. The noble Brutus \ - Hath told you Caesar was ambitious; \ - If it were so, it was a grievous fault, \ - And grievously hath Caesar answer'd it. \ - Here, under leave of Brutus and the rest- \ - For Brutus is an honorable man; \ - So are they all, all honorable men- \ - Come I to speak in Caesar's funeral. \ - He was my friend, faithful and just to me; \ - But Brutus says he was ambitious, \ - And Brutus is an honorable man. \ - He hath brought many captives home to Rome, \ - Whose ransoms did the general coffers fill. \ - Did this in Caesar seem ambitious? \ - When that the poor have cried, Caesar hath wept; \ - Ambition should be made of sterner stuff: \ - Yet Brutus says he was ambitious, \ - And Brutus is an honorable man. \ - You all did see that on the Lupercal \ - I thrice presented him a kingly crown, \ - Which he did thrice refuse. Was this ambition? \ - Yet Brutus says he was ambitious, \ - And sure he is an honorable man. \ - I speak not to disprove what Brutus spoke, \ - But here I am to speak what I do know. \ - You all did love him once, not without cause; \ - What cause withholds you then to mourn for him? \ - O judgement, thou art fled to brutish beasts, \ - And men have lost their reason. Bear with me; \ - My heart is in the coffin there with Caesar, \ - And I must pause till it come back to me."; - -var replaced = string.replace(/\b\w+\b/g, function() { return "foo"; }); -for (var i = 0; i < 3; i++) { - assertEquals(replaced, - string.replace(/\b\w+\b/g, function() { return "foo"; })); -} - -// Check that the result is in a COW array. -var words = string.split(" "); -assertEquals("Friends,", words[0]); -words[0] = "Enemies,"; -words = string.split(" "); -assertEquals("Friends,", words[0]); diff --git a/implementation-contributed/v8/mjsunit/regexp-sort.js b/implementation-contributed/v8/mjsunit/regexp-sort.js deleted file mode 100644 index 57d50701cd5..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-sort.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Test(lower, upper) { - var lx = lower + "x"; - var ux = upper + "x"; - var lp = lower + "|"; - var uxp = upper + "x|"; - assertEquals(lx, new RegExp(uxp + lp + lower + "cat", "i").exec(lx) + ""); - assertEquals(ux, new RegExp(uxp + lp + lower + "cat", "i").exec(ux) + ""); - assertEquals(lower, new RegExp(lp + uxp + lower + "cat", "i").exec(lx) + ""); - assertEquals(upper, new RegExp(lp + uxp + lower + "cat", "i").exec(ux) + ""); -} - -function TestFail(lower, upper) { - var lx = lower + "x"; - var ux = upper + "x"; - var lp = lower + "|"; - var uxp = upper + "x|"; - assertEquals(lower, new RegExp(uxp + lp + lower + "cat", "i").exec(lx) + ""); - assertEquals(ux, new RegExp(uxp + lp + lower + "cat", "i").exec(ux) + ""); - assertEquals(lower, new RegExp(lp + uxp + lower + "cat", "i").exec(lx) + ""); - assertEquals(ux, new RegExp(lp + uxp + lower + "cat", "i").exec(ux) + ""); -} - -Test("a", "A"); -Test("0", "0"); -TestFail("a", "b"); -// Small and capital o-umlaut -Test(String.fromCharCode(0xf6), String.fromCharCode(0xd6)); -// Small and capital kha. -Test(String.fromCharCode(0x445), String.fromCharCode(0x425)); -// Small and capital y-umlaut. -Test(String.fromCharCode(0xff), String.fromCharCode(0x178)); -// Small and large Greek mu. -Test(String.fromCharCode(0x3bc), String.fromCharCode(0x39c)); -// Micron and large Greek mu. -Test(String.fromCharCode(0xb5), String.fromCharCode(0x39c)); -// Micron and small Greek mu. -Test(String.fromCharCode(0xb5), String.fromCharCode(0x3bc)); -// German double s and capital S. These are not equivalent since one is double. -TestFail(String.fromCharCode(0xdf), "S"); -// Small i and Turkish capital dotted I. These are not equivalent due to -// 21.2.2.8.2 section 3g. One is below 128 and the other is above 127. -TestFail("i", String.fromCharCode(0x130)); -// Small dotless i and I. These are not equivalent either. -TestFail(String.fromCharCode(0x131), "I"); diff --git a/implementation-contributed/v8/mjsunit/regexp-stack-overflow.js b/implementation-contributed/v8/mjsunit/regexp-stack-overflow.js deleted file mode 100644 index 63f6971ace2..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-stack-overflow.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -var re = /\w/; -re.test("a"); // Trigger regexp compile. - -function rec() { - try { - return rec(); - } catch (e) { - return re.test("b"); - } -} - -assertTrue(rec()); diff --git a/implementation-contributed/v8/mjsunit/regexp-standalones.js b/implementation-contributed/v8/mjsunit/regexp-standalones.js deleted file mode 100644 index 4699754b8fa..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-standalones.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* Many of the Mozilla regexp tests used 'toSource' to test their - * results. Since we don't currently support toSource, those tests - * are disabled and standalone versions are included here. - */ - -// Tests from ecma_3/RegExp/regress-78156.js -var string = 'aaa\n789\r\nccc\r\n345'; -var pattern = /^\d/gm; -var result = string.match(pattern); -assertEquals(2, result.length, "1"); -assertEquals('7', result[0], "2"); -assertEquals('3', result[1], "3"); - -pattern = /\d$/gm; -result = string.match(pattern); -assertEquals(2, result.length, "4"); -assertEquals('9', result[0], "5"); -assertEquals('5', result[1], "6"); - -string = 'aaa\n789\r\nccc\r\nddd'; -pattern = /^\d/gm; -result = string.match(pattern); -assertEquals(1, result.length, "7"); -assertEquals('7', result[0], "8"); - -pattern = /\d$/gm; -result = string.match(pattern); -assertEquals(1, result.length, "9"); -assertEquals('9', result[0], "10"); - -// Tests from ecma_3/RegExp/regress-72964.js -pattern = /[\S]+/; -string = '\u00BF\u00CD\u00BB\u00A7'; -result = string.match(pattern); -assertEquals(1, result.length, "11"); -assertEquals(string, result[0], "12"); - -string = '\u00BF\u00CD \u00BB\u00A7'; -result = string.match(pattern); -assertEquals(1, result.length, "13"); -assertEquals('\u00BF\u00CD', result[0], "14"); - -string = '\u4e00\uac00\u4e03\u4e00'; -result = string.match(pattern); -assertEquals(1, result.length, "15"); -assertEquals(string, result[0], "16"); - -string = '\u4e00\uac00 \u4e03\u4e00'; -result = string.match(pattern); -assertEquals(1, result.length, "17"); -assertEquals('\u4e00\uac00', result[0], "18"); diff --git a/implementation-contributed/v8/mjsunit/regexp-static.js b/implementation-contributed/v8/mjsunit/regexp-static.js deleted file mode 100644 index 0d6d85c6600..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-static.js +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the (deprecated as of JS 1.5) properties of the RegExp function. -var re = /((\d+)\.(\d+))/; -var s = 'abc123.456def'; - -re.exec(s); - -assertEquals(s, RegExp.input); -assertEquals('123.456', RegExp.lastMatch); -assertEquals('456', RegExp.lastParen); -assertEquals('abc', RegExp.leftContext); -assertEquals('def', RegExp.rightContext); - -assertEquals(s, RegExp['$_']); -assertEquals('123.456', RegExp['$&']); -assertEquals('456', RegExp['$+']); -assertEquals('abc', RegExp['$`']); -assertEquals('def', RegExp["$'"]); - -assertEquals('123.456', RegExp['$1']); -assertEquals('123', RegExp['$2']); -assertEquals('456', RegExp['$3']); -for (var i = 4; i < 10; ++i) { - assertEquals('', RegExp['$' + i]); -} - -// They should be read only. -RegExp['$1'] = 'fisk'; -assertEquals('123.456', RegExp['$1']); - -// String.prototype.match and String.prototype.replace (when given a -// regexp) and also RegExp.prototype.test should all behave as if -// RegExp.prototype.exec were called. -s = 'ghi789.012jkl'; -s.match(re); -assertEquals(s, RegExp.input); -assertEquals('789.012', RegExp.lastMatch); -assertEquals('012', RegExp.lastParen); -assertEquals('ghi', RegExp.leftContext); -assertEquals('jkl', RegExp.rightContext); -assertEquals(s, RegExp['$_']); -assertEquals('789.012', RegExp['$&']); -assertEquals('012', RegExp['$+']); -assertEquals('ghi', RegExp['$`']); -assertEquals('jkl', RegExp["$'"]); -assertEquals('789.012', RegExp['$1']); -assertEquals('789', RegExp['$2']); -assertEquals('012', RegExp['$3']); -for (var i = 4; i < 10; ++i) { - assertEquals('', RegExp['$' + i]); -} - -s = 'abc123.456def'; -s.replace(re, 'whocares'); -assertEquals(s, RegExp.input); -assertEquals('123.456', RegExp.lastMatch); -assertEquals('456', RegExp.lastParen); -assertEquals('abc', RegExp.leftContext); -assertEquals('def', RegExp.rightContext); -assertEquals(s, RegExp['$_']); -assertEquals('123.456', RegExp['$&']); -assertEquals('456', RegExp['$+']); -assertEquals('abc', RegExp['$`']); -assertEquals('def', RegExp["$'"]); -assertEquals('123.456', RegExp['$1']); -assertEquals('123', RegExp['$2']); -assertEquals('456', RegExp['$3']); -for (var i = 4; i < 10; ++i) { - assertEquals('', RegExp['$' + i]); -} - -s = 'ghi789.012jkl'; -re.test(s); -assertEquals(s, RegExp.input); -assertEquals('789.012', RegExp.lastMatch); -assertEquals('012', RegExp.lastParen); -assertEquals('ghi', RegExp.leftContext); -assertEquals('jkl', RegExp.rightContext); -assertEquals(s, RegExp['$_']); -assertEquals('789.012', RegExp['$&']); -assertEquals('012', RegExp['$+']); -assertEquals('ghi', RegExp['$`']); -assertEquals('jkl', RegExp["$'"]); -assertEquals('789.012', RegExp['$1']); -assertEquals('789', RegExp['$2']); -assertEquals('012', RegExp['$3']); -for (var i = 4; i < 10; ++i) { - assertEquals('', RegExp['$' + i]); -} - -// String.prototype.replace must interleave matching and replacing when a -// global regexp is matched and replaced with the result of a function, in -// case the function uses the static properties of the regexp constructor. -re = /(.)/g; -function f() { return RegExp.$1; }; -assertEquals('dddd', 'abcd'.replace(re, f)); - -// lastParen where the last parenthesis didn't match. -assertEquals(["foo",undefined], /foo(?:a(x))?/.exec("foobx"), - "lastParen setup"); -assertEquals("", RegExp.lastParen, "lastParen"); - -// The same test for $1 to $9. -for (var i = 1; i <= 9; i++) { - var haystack = "foo"; - var re_text = "^foo"; - for (var j = 0; j < i - 1; j++) { - haystack += "x"; - re_text += "(x)"; - } - re_text += "(?:a(x))?"; - haystack += "bx"; - var re = new RegExp(re_text); - assertTrue(re.test(haystack), "$" + i + " setup"); - for (var j = 1; j < i - 1; j++) { - assertEquals("x", RegExp['$' + j], "$" + j + " in $" + i + " setup"); - } - assertEquals("", RegExp['$' + (i)], "$" + i); -} - -RegExp.input = Number(); -assertTrue(typeof RegExp.input == typeof String(), "RegExp.input coerces values to booleans"); - -// Ensure that we save the correct string as the last subject when -// we do a match on a sliced string (the top one not the underlying). -var foo = "lsdfj sldkfj sdklfj læsdfjl sdkfjlsdk fjsdl fjsdljskdj flsj flsdkj flskd regexp: /foobar/\nldkfj sdlkfj sdkl"; -assertTrue(/^([a-z]+): (.*)/.test(foo.substring(foo.indexOf("regexp:"))), "regexp: setup"); -assertEquals("regexp", RegExp.$1, "RegExp.$1"); - - -// Check that calling with no argument is the same as calling with undefined. -assertTrue(/^undefined$/.test()); -assertEquals(["undefined"], /^undefined$/.exec()); diff --git a/implementation-contributed/v8/mjsunit/regexp-string-methods.js b/implementation-contributed/v8/mjsunit/regexp-string-methods.js deleted file mode 100644 index d5ad9c33864..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp-string-methods.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regexp shouldn't use String.prototype.slice() -var s = new String("foo"); -assertEquals("f", s.slice(0,1)); -String.prototype.slice = function() { return "x"; }; -assertEquals("x", s.slice(0,1)); -assertEquals(["g"], /g/.exec("gg")); - -// Regexp shouldn't use String.prototype.charAt() -var f1 = new RegExp("f", "i"); -assertEquals(["F"], f1.exec("F")); -assertEquals("f", "foo".charAt(0)); -String.prototype.charAt = function(idx) { return 'g'; }; -assertEquals("g", "foo".charAt(0)); -var f2 = new RegExp("[g]", "i"); -assertEquals(["G"], f2.exec("G")); -assertTrue(f2.ignoreCase); diff --git a/implementation-contributed/v8/mjsunit/regexp.js b/implementation-contributed/v8/mjsunit/regexp.js deleted file mode 100644 index aabac1ed9f0..00000000000 --- a/implementation-contributed/v8/mjsunit/regexp.js +++ /dev/null @@ -1,826 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function testEscape(str, regex) { - assertEquals("foo:bar:baz", str.split(regex).join(":")); -} - -testEscape("foo\nbar\nbaz", /\n/); -testEscape("foo bar baz", /\s/); -testEscape("foo\tbar\tbaz", /\s/); -testEscape("foo-bar-baz", /\u002D/); - -// Test containing null char in regexp. -var s = '[' + String.fromCharCode(0) + ']'; -var re = new RegExp(s); -assertEquals(s.match(re).length, 1); -assertEquals(s.match(re)[0], String.fromCharCode(0)); - -// Test strings containing all line separators -s = 'aA\nbB\rcC\r\ndD\u2028eE\u2029fF'; -re = /^./gm; // any non-newline character at the beginning of a line -var result = s.match(re); -assertEquals(result.length, 6); -assertEquals(result[0], 'a'); -assertEquals(result[1], 'b'); -assertEquals(result[2], 'c'); -assertEquals(result[3], 'd'); -assertEquals(result[4], 'e'); -assertEquals(result[5], 'f'); - -re = /.$/gm; // any non-newline character at the end of a line -result = s.match(re); -assertEquals(result.length, 6); -assertEquals(result[0], 'A'); -assertEquals(result[1], 'B'); -assertEquals(result[2], 'C'); -assertEquals(result[3], 'D'); -assertEquals(result[4], 'E'); -assertEquals(result[5], 'F'); - -re = /^[^]/gm; // *any* character at the beginning of a line -result = s.match(re); -assertEquals(result.length, 7); -assertEquals(result[0], 'a'); -assertEquals(result[1], 'b'); -assertEquals(result[2], 'c'); -assertEquals(result[3], '\n'); -assertEquals(result[4], 'd'); -assertEquals(result[5], 'e'); -assertEquals(result[6], 'f'); - -re = /[^]$/gm; // *any* character at the end of a line -result = s.match(re); -assertEquals(result.length, 7); -assertEquals(result[0], 'A'); -assertEquals(result[1], 'B'); -assertEquals(result[2], 'C'); -assertEquals(result[3], '\r'); -assertEquals(result[4], 'D'); -assertEquals(result[5], 'E'); -assertEquals(result[6], 'F'); - -// Some tests from the Mozilla tests, where our behavior used to differ from -// SpiderMonkey. -// From ecma_3/RegExp/regress-334158.js -assertTrue(/\ca/.test( "\x01" )); -assertFalse(/\ca/.test( "\\ca" )); -assertFalse(/\ca/.test( "ca" )); -assertTrue(/\c[a/]/.test( "\\ca" )); -assertTrue(/\c[a/]/.test( "\\c/" )); - -// Test \c in character class -re = /^[\cM]$/; -assertTrue(re.test("\r")); -assertFalse(re.test("M")); -assertFalse(re.test("c")); -assertFalse(re.test("\\")); -assertFalse(re.test("\x03")); // I.e., read as \cc - -re = /^[\c]]$/; -assertTrue(re.test("c]")); -assertTrue(re.test("\\]")); -assertFalse(re.test("\x1d")); // ']' & 0x1f -assertFalse(re.test("\x03]")); // I.e., read as \cc - -re = /^[\c1]$/; // Digit control characters are masked in character classes. -assertTrue(re.test("\x11")); -assertFalse(re.test("\\")); -assertFalse(re.test("c")); -assertFalse(re.test("1")); - -re = /^[\c_]$/; // Underscore control character is masked in character classes. -assertTrue(re.test("\x1f")); -assertFalse(re.test("\\")); -assertFalse(re.test("c")); -assertFalse(re.test("_")); - -re = /^[\c$]$/; // Other characters are interpreted literally. -assertFalse(re.test("\x04")); -assertTrue(re.test("\\")); -assertTrue(re.test("c")); -assertTrue(re.test("$")); - -assertTrue(/^[Z-\c-e]*$/.test("Z[\\cde")); - -// Test that we handle \s and \S correctly on special Unicode characters. -re = /\s/; -assertTrue(re.test("\u2028")); -assertTrue(re.test("\u2029")); -assertTrue(re.test("\uFEFF")); - -re = /\S/; -assertFalse(re.test("\u2028")); -assertFalse(re.test("\u2029")); -assertFalse(re.test("\uFEFF")); - -// Test that we handle \s and \S correctly inside some bizarre -// character classes. -re = /[\s-:]/; -assertTrue(re.test('-')); -assertTrue(re.test(':')); -assertTrue(re.test(' ')); -assertTrue(re.test('\t')); -assertTrue(re.test('\n')); -assertFalse(re.test('a')); -assertFalse(re.test('Z')); - -re = /[\S-:]/; -assertTrue(re.test('-')); -assertTrue(re.test(':')); -assertFalse(re.test(' ')); -assertFalse(re.test('\t')); -assertFalse(re.test('\n')); -assertTrue(re.test('a')); -assertTrue(re.test('Z')); - -re = /[^\s-:]/; -assertFalse(re.test('-')); -assertFalse(re.test(':')); -assertFalse(re.test(' ')); -assertFalse(re.test('\t')); -assertFalse(re.test('\n')); -assertTrue(re.test('a')); -assertTrue(re.test('Z')); - -re = /[^\S-:]/; -assertFalse(re.test('-')); -assertFalse(re.test(':')); -assertTrue(re.test(' ')); -assertTrue(re.test('\t')); -assertTrue(re.test('\n')); -assertFalse(re.test('a')); -assertFalse(re.test('Z')); - -re = /[\s]/; -assertFalse(re.test('-')); -assertFalse(re.test(':')); -assertTrue(re.test(' ')); -assertTrue(re.test('\t')); -assertTrue(re.test('\n')); -assertFalse(re.test('a')); -assertFalse(re.test('Z')); - -re = /[^\s]/; -assertTrue(re.test('-')); -assertTrue(re.test(':')); -assertFalse(re.test(' ')); -assertFalse(re.test('\t')); -assertFalse(re.test('\n')); -assertTrue(re.test('a')); -assertTrue(re.test('Z')); - -re = /[\S]/; -assertTrue(re.test('-')); -assertTrue(re.test(':')); -assertFalse(re.test(' ')); -assertFalse(re.test('\t')); -assertFalse(re.test('\n')); -assertTrue(re.test('a')); -assertTrue(re.test('Z')); - -re = /[^\S]/; -assertFalse(re.test('-')); -assertFalse(re.test(':')); -assertTrue(re.test(' ')); -assertTrue(re.test('\t')); -assertTrue(re.test('\n')); -assertFalse(re.test('a')); -assertFalse(re.test('Z')); - -re = /[\s\S]/; -assertTrue(re.test('-')); -assertTrue(re.test(':')); -assertTrue(re.test(' ')); -assertTrue(re.test('\t')); -assertTrue(re.test('\n')); -assertTrue(re.test('a')); -assertTrue(re.test('Z')); - -re = /[^\s\S]/; -assertFalse(re.test('-')); -assertFalse(re.test(':')); -assertFalse(re.test(' ')); -assertFalse(re.test('\t')); -assertFalse(re.test('\n')); -assertFalse(re.test('a')); -assertFalse(re.test('Z')); - -// First - is treated as range operator, second as literal minus. -// This follows the specification in parsing, but doesn't throw on -// the \s at the beginning of the range. -re = /[\s-0-9]/; -assertTrue(re.test(' ')); -assertTrue(re.test('\xA0')); -assertTrue(re.test('-')); -assertTrue(re.test('0')); -assertTrue(re.test('9')); -assertFalse(re.test('1')); - -// Test beginning and end of line assertions with or without the -// multiline flag. -re = /^\d+/; -assertFalse(re.test("asdf\n123")); -re = /^\d+/m; -assertTrue(re.test("asdf\n123")); - -re = /\d+$/; -assertFalse(re.test("123\nasdf")); -re = /\d+$/m; -assertTrue(re.test("123\nasdf")); - -// Test that empty matches are handled correctly for multiline global -// regexps. -re = /^(.*)/mg; -assertEquals(3, "a\n\rb".match(re).length); -assertEquals("*a\n*b\r*c\n*\r*d\r*\n*e", "a\nb\rc\n\rd\r\ne".replace(re, "*$1")); - -// Test that empty matches advance one character -re = new RegExp("", "g"); -assertEquals("xAx", "A".replace(re, "x")); -assertEquals(3, String.fromCharCode(161).replace(re, "x").length); - -// Test that we match the KJS behavior with regard to undefined constructor -// arguments: -re = new RegExp(); -// KJS actually shows this as '//'. Here we match the Firefox behavior (ie, -// giving a syntactically legal regexp literal). -assertEquals('/(?:)/', re.toString()); -re = new RegExp(void 0); -assertEquals('/(?:)/', re.toString()); -re.compile(); -assertEquals('/(?:)/', re.toString()); -re.compile(void 0); -assertEquals('/(?:)/', re.toString()); - - -// Check for lazy RegExp literal creation -function lazyLiteral(doit) { - if (doit) return "".replace(/foo(/gi, ""); - return true; -} - -assertTrue(lazyLiteral(false)); -assertThrows("lazyLiteral(true)"); - -// Check $01 and $10 -re = new RegExp("(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)"); -assertEquals("t", "123456789t".replace(re, "$10"), "$10"); -assertEquals("15", "123456789t".replace(re, "$15"), "$10"); -assertEquals("1", "123456789t".replace(re, "$01"), "$01"); -assertEquals("$001", "123456789t".replace(re, "$001"), "$001"); -re = new RegExp("foo(.)"); -assertEquals("bar$0", "foox".replace(re, "bar$0"), "$0"); -assertEquals("bar$00", "foox".replace(re, "bar$00"), "$00"); -assertEquals("bar$000", "foox".replace(re, "bar$000"), "$000"); -assertEquals("barx", "foox".replace(re, "bar$01"), "$01 2"); -assertEquals("barx5", "foox".replace(re, "bar$15"), "$15"); - -assertFalse(/()foo$\1/.test("football"), "football1"); -assertFalse(/foo$(?=ball)/.test("football"), "football2"); -assertFalse(/foo$(?!bar)/.test("football"), "football3"); -assertTrue(/()foo$\1/.test("foo"), "football4"); -assertTrue(/foo$(?=(ball)?)/.test("foo"), "football5"); -assertTrue(/()foo$(?!bar)/.test("foo"), "football6"); -assertFalse(/(x?)foo$\1/.test("football"), "football7"); -assertFalse(/foo$(?=ball)/.test("football"), "football8"); -assertFalse(/foo$(?!bar)/.test("football"), "football9"); -assertTrue(/(x?)foo$\1/.test("foo"), "football10"); -assertTrue(/foo$(?=(ball)?)/.test("foo"), "football11"); -assertTrue(/foo$(?!bar)/.test("foo"), "football12"); - -// Check that the back reference has two successors. See -// BackReferenceNode::PropagateForward. -assertFalse(/f(o)\b\1/.test('foo')); -assertTrue(/f(o)\B\1/.test('foo')); - -// Back-reference, ignore case: -// ASCII -assertEquals("xaAx,a", String(/x(a)\1x/i.exec("xaAx")), "backref-ASCII"); -assertFalse(/x(...)\1/i.test("xaaaaa"), "backref-ASCII-short"); -assertTrue(/x((?:))\1\1x/i.test("xx"), "backref-ASCII-empty"); -assertTrue(/x(?:...|(...))\1x/i.test("xabcx"), "backref-ASCII-uncaptured"); -assertTrue(/x(?:...|(...))\1x/i.test("xabcABCx"), "backref-ASCII-backtrack"); -assertEquals("xaBcAbCABCx,aBc", - String(/x(...)\1\1x/i.exec("xaBcAbCABCx")), - "backref-ASCII-twice"); - -for (var i = 0; i < 128; i++) { - var testName = "backref-ASCII-char-" + i + "," + (i^0x20); - var test = /^(.)\1$/i.test(String.fromCharCode(i, i ^ 0x20)) - var c = String.fromCharCode(i); - if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) { - assertTrue(test, testName); - } else { - assertFalse(test, testName); - } -} - -assertFalse(/f(o)$\1/.test('foo'), "backref detects at_end"); - -// Check decimal escapes doesn't overflow. -// (Note: \214 is interpreted as octal). -assertArrayEquals(["\x8c7483648"], - /\2147483648/.exec("\x8c7483648"), - "Overflow decimal escape"); - - -// Check numbers in quantifiers doesn't overflow and doesn't throw on -// too large numbers. -assertFalse(/a{111111111111111111111111111111111111111111111}/.test('b'), - "overlarge1"); -assertFalse(/a{999999999999999999999999999999999999999999999}/.test('b'), - "overlarge2"); -assertFalse(/a{1,111111111111111111111111111111111111111111111}/.test('b'), - "overlarge3"); -assertFalse(/a{1,999999999999999999999999999999999999999999999}/.test('b'), - "overlarge4"); -assertFalse(/a{2147483648}/.test('b'), - "overlarge5"); -assertFalse(/a{21474836471}/.test('b'), - "overlarge6"); -assertFalse(/a{1,2147483648}/.test('b'), - "overlarge7"); -assertFalse(/a{1,21474836471}/.test('b'), - "overlarge8"); -assertFalse(/a{2147483648,2147483648}/.test('b'), - "overlarge9"); -assertFalse(/a{21474836471,21474836471}/.test('b'), - "overlarge10"); -assertFalse(/a{2147483647}/.test('b'), - "overlarge11"); -assertFalse(/a{1,2147483647}/.test('b'), - "overlarge12"); -assertTrue(/a{1,2147483647}/.test('a'), - "overlarge13"); -assertFalse(/a{2147483647,2147483647}/.test('a'), - "overlarge14"); - - -// Check that we don't read past the end of the string. -assertFalse(/f/.test('b')); -assertFalse(/[abc]f/.test('x')); -assertFalse(/[abc]f/.test('xa')); -assertFalse(/[abc]= 0, "overflow"); -} - - -// Test that compile works on modified objects -var re = /re+/; -assertEquals("re+", re.source); -assertFalse(re.global); -assertFalse(re.ignoreCase); -assertFalse(re.multiline); -assertEquals(0, re.lastIndex); - -re.compile("ro+", "gim"); -assertEquals("ro+", re.source); -assertTrue(re.global); -assertTrue(re.ignoreCase); -assertTrue(re.multiline); -assertEquals(0, re.lastIndex); - -re.lastIndex = 42; -re.someOtherProperty = 42; -re.someDeletableProperty = 42; -re[37] = 37; -re[42] = 42; - -re.compile("ra+", "i"); -assertEquals("ra+", re.source); -assertFalse(re.global); -assertTrue(re.ignoreCase); -assertFalse(re.multiline); -assertEquals(0, re.lastIndex); - -assertEquals(42, re.someOtherProperty); -assertEquals(42, re.someDeletableProperty); -assertEquals(37, re[37]); -assertEquals(42, re[42]); - -re.lastIndex = -1; -re.someOtherProperty = 37; -re[42] = 37; -assertTrue(delete re[37]); -assertTrue(delete re.someDeletableProperty); -re.compile("ri+", "gm"); - -assertEquals("ri+", re.source); -assertTrue(re.global); -assertFalse(re.ignoreCase); -assertTrue(re.multiline); -assertEquals(0, re.lastIndex); -assertEquals(37, re.someOtherProperty); -assertEquals(37, re[42]); - -// Test boundary-checks. -function assertRegExpTest(re, input, test) { - assertEquals(test, re.test(input), "test:" + re + ":" + input); -} - -assertRegExpTest(/b\b/, "b", true); -assertRegExpTest(/b\b$/, "b", true); -assertRegExpTest(/\bb/, "b", true); -assertRegExpTest(/^\bb/, "b", true); -assertRegExpTest(/,\b/, ",", false); -assertRegExpTest(/,\b$/, ",", false); -assertRegExpTest(/\b,/, ",", false); -assertRegExpTest(/^\b,/, ",", false); - -assertRegExpTest(/b\B/, "b", false); -assertRegExpTest(/b\B$/, "b", false); -assertRegExpTest(/\Bb/, "b", false); -assertRegExpTest(/^\Bb/, "b", false); -assertRegExpTest(/,\B/, ",", true); -assertRegExpTest(/,\B$/, ",", true); -assertRegExpTest(/\B,/, ",", true); -assertRegExpTest(/^\B,/, ",", true); - -assertRegExpTest(/b\b/, "b,", true); -assertRegExpTest(/b\b/, "ba", false); -assertRegExpTest(/b\B/, "b,", false); -assertRegExpTest(/b\B/, "ba", true); - -assertRegExpTest(/b\Bb/, "bb", true); -assertRegExpTest(/b\bb/, "bb", false); - -assertRegExpTest(/b\b[,b]/, "bb", false); -assertRegExpTest(/b\B[,b]/, "bb", true); -assertRegExpTest(/b\b[,b]/, "b,", true); -assertRegExpTest(/b\B[,b]/, "b,", false); - -assertRegExpTest(/[,b]\bb/, "bb", false); -assertRegExpTest(/[,b]\Bb/, "bb", true); -assertRegExpTest(/[,b]\bb/, ",b", true); -assertRegExpTest(/[,b]\Bb/, ",b", false); - -assertRegExpTest(/[,b]\b[,b]/, "bb", false); -assertRegExpTest(/[,b]\B[,b]/, "bb", true); -assertRegExpTest(/[,b]\b[,b]/, ",b", true); -assertRegExpTest(/[,b]\B[,b]/, ",b", false); -assertRegExpTest(/[,b]\b[,b]/, "b,", true); -assertRegExpTest(/[,b]\B[,b]/, "b,", false); - -// Test that caching of result doesn't share result objects. -// More iterations increases the chance of hitting a GC. -for (var i = 0; i < 100; i++) { - var re = /x(y)z/; - var res = re.exec("axyzb"); - assertTrue(!!res); - assertEquals(2, res.length); - assertEquals("xyz", res[0]); - assertEquals("y", res[1]); - assertEquals(1, res.index); - assertEquals("axyzb", res.input); - assertEquals(undefined, res.foobar); - - res.foobar = "Arglebargle"; - res[3] = "Glopglyf"; - assertEquals("Arglebargle", res.foobar); -} - -// Test that we perform the spec required conversions in the correct order. -var log; -var string = "the string"; -var fakeLastIndex = { - valueOf: function() { - log.push("li"); - return 0; - } - }; -var fakeString = { - toString: function() { - log.push("ts"); - return string; - }, - length: 0 - }; - -var re = /str/; -log = []; -re.lastIndex = fakeLastIndex; -var result = re.exec(fakeString); -assertEquals(["str"], result); -assertEquals(["ts", "li"], log); - -// Again, to check if caching interferes. -log = []; -re.lastIndex = fakeLastIndex; -result = re.exec(fakeString); -assertEquals(["str"], result); -assertEquals(["ts", "li"], log); - -// And one more time, just to be certain. -log = []; -re.lastIndex = fakeLastIndex; -result = re.exec(fakeString); -assertEquals(["str"], result); -assertEquals(["ts", "li"], log); - -// Now with a global regexp, where lastIndex is actually used. -re = /str/g; -log = []; -re.lastIndex = fakeLastIndex; -var result = re.exec(fakeString); -assertEquals(["str"], result); -assertEquals(["ts", "li"], log); - -// Again, to check if caching interferes. -log = []; -re.lastIndex = fakeLastIndex; -result = re.exec(fakeString); -assertEquals(["str"], result); -assertEquals(["ts", "li"], log); - -// And one more time, just to be certain. -log = []; -re.lastIndex = fakeLastIndex; -result = re.exec(fakeString); -assertEquals(["str"], result); -assertEquals(["ts", "li"], log); - - -// Check that properties of RegExp have the correct permissions. -var re = /x/g; -var desc = Object.getOwnPropertyDescriptor(re.__proto__, "global"); -assertInstanceof(desc.get, Function); -assertEquals(true, desc.configurable); -assertEquals(false, desc.enumerable); - -desc = Object.getOwnPropertyDescriptor(re.__proto__, "multiline"); -assertInstanceof(desc.get, Function); -assertEquals(true, desc.configurable); -assertEquals(false, desc.enumerable); - -desc = Object.getOwnPropertyDescriptor(re.__proto__, "ignoreCase"); -assertInstanceof(desc.get, Function); -assertEquals(true, desc.configurable); -assertEquals(false, desc.enumerable); - -desc = Object.getOwnPropertyDescriptor(re, "global"); -assertEquals(undefined, desc); - -desc = Object.getOwnPropertyDescriptor(re, "multiline"); -assertEquals(undefined, desc); - -desc = Object.getOwnPropertyDescriptor(re, "ignoreCase"); -assertEquals(undefined, desc); - -desc = Object.getOwnPropertyDescriptor(re, "lastIndex"); -assertEquals(0, desc.value); -assertEquals(false, desc.configurable); -assertEquals(false, desc.enumerable); -assertEquals(true, desc.writable); - - -// Check that end-anchored regexps are optimized correctly. -var re = /(?:a|bc)g$/; -assertTrue(re.test("ag")); -assertTrue(re.test("bcg")); -assertTrue(re.test("abcg")); -assertTrue(re.test("zimbag")); -assertTrue(re.test("zimbcg")); - -assertFalse(re.test("g")); -assertFalse(re.test("")); - -// Global regexp (non-zero start). -var re = /(?:a|bc)g$/g; -assertTrue(re.test("ag")); -re.lastIndex = 1; // Near start of string. -assertTrue(re.test("zimbag")); -re.lastIndex = 6; // At end of string. -assertFalse(re.test("zimbag")); -re.lastIndex = 5; // Near end of string. -assertFalse(re.test("zimbag")); -re.lastIndex = 4; -assertTrue(re.test("zimbag")); - -// Anchored at both ends. -var re = /^(?:a|bc)g$/g; -assertTrue(re.test("ag")); -re.lastIndex = 1; -assertFalse(re.test("ag")); -re.lastIndex = 1; -assertFalse(re.test("zag")); - -// Long max_length of RegExp. -var re = /VeryLongRegExp!{1,1000}$/; -assertTrue(re.test("BahoolaVeryLongRegExp!!!!!!")); -assertFalse(re.test("VeryLongRegExp")); -assertFalse(re.test("!")); - -// End anchor inside disjunction. -var re = /(?:a$|bc$)/; -assertTrue(re.test("a")); -assertTrue(re.test("bc")); -assertTrue(re.test("abc")); -assertTrue(re.test("zimzamzumba")); -assertTrue(re.test("zimzamzumbc")); -assertFalse(re.test("c")); -assertFalse(re.test("")); - -// Only partially anchored. -var re = /(?:a|bc$)/; -assertTrue(re.test("a")); -assertTrue(re.test("bc")); -assertEquals(["a"], re.exec("abc")); -assertEquals(4, re.exec("zimzamzumba").index); -assertEquals(["bc"], re.exec("zimzomzumbc")); -assertFalse(re.test("c")); -assertFalse(re.test("")); - -// Valid syntax in ES5. -re = RegExp("(?:x)*"); -re = RegExp("(x)*"); - -// Syntax extension relative to ES5, for matching JSC (and ES3). -// Shouldn't throw. -re = RegExp("(?=x)*"); -re = RegExp("(?!x)*"); - -// Should throw. Shouldn't hit asserts in debug mode. -assertThrows("RegExp('(*)')"); -assertThrows("RegExp('(?:*)')"); -assertThrows("RegExp('(?=*)')"); -assertThrows("RegExp('(?!*)')"); - -// Test trimmed regular expression for RegExp.test(). -assertTrue(/.*abc/.test("abc")); -assertFalse(/.*\d+/.test("q")); - -// Test that RegExp.prototype.toString() throws TypeError for -// incompatible receivers (ES5 section 15.10.6 and 15.10.6.4). -assertThrows("RegExp.prototype.toString.call(null)", TypeError); -assertThrows("RegExp.prototype.toString.call(0)", TypeError); -assertThrows("RegExp.prototype.toString.call('')", TypeError); -assertThrows("RegExp.prototype.toString.call(false)", TypeError); -assertThrows("RegExp.prototype.toString.call(true)", TypeError); - -// Test mutually recursive capture and backreferences. -assertEquals(["b", "", ""], /(\2)b(\1)/.exec("aba")); -assertEquals(["a", "", ""], /(\2).(\1)/.exec("aba")); -assertEquals(["aba", "a", "a"], /(.\2).(\1)/.exec("aba")); -assertEquals(["acbc", "c", "c"], /a(.\2)b(\1)$/.exec("acbc")); -assertEquals(["acbc", "c", "c"], /a(.\2)b(\1)/.exec("aabcacbc")); - -// Test surrogate pair detection in split. -// \u{daff}\u{e000} is not a surrogate pair, while \u{daff}\u{dfff} is. -assertEquals(["\u{daff}", "\u{e000}"], "\u{daff}\u{e000}".split(/[a-z]{0,1}/u)); -assertEquals(["\u{daff}\u{dfff}"], "\u{daff}\u{dfff}".split(/[a-z]{0,1}/u)); - -// Test that changing a property on RegExp.prototype results in us taking the -// slow path, which executes RegExp.prototype.exec instead of our -// RegExpExecStub. -const RegExpPrototypeExec = RegExp.prototype.exec; -RegExp.prototype.exec = function() { throw new Error(); } -assertThrows(() => "abc".replace(/./, "")); -RegExp.prototype.exec = RegExpPrototypeExec; - -// Test the code path in RE.proto[@@search] when previousLastIndex is a receiver -// but can't be converted to a primitive. This exposed a crash in an older -// C++ implementation of @@search which a) still relied on Object::Equals, -// and b) incorrectly returned isolate->pending_exception() on error. - -var re = /./; -re.lastIndex = { [Symbol.toPrimitive]: 42 }; -try { "abc".search(re); } catch (_) {} // Ensure we don't crash. - -// Test lastIndex values of -0.0 and NaN (since @@search uses SameValue). - -var re = /./; -re.exec = function(str) { assertEquals(0, re.lastIndex); return []; } -re.lastIndex = -0.0; -assertEquals(-0, re.lastIndex); -"abc".search(re); -assertEquals(-0, re.lastIndex); - -var re = /./; -re.exec = function(str) { assertEquals(0, re.lastIndex); return []; } -re.lastIndex = NaN; -assertEquals(NaN, re.lastIndex); -"abc".search(re); -assertEquals(NaN, re.lastIndex); - -// Annex B changes: https://github.com/tc39/ecma262/pull/303 - -assertThrows("/{1}/", SyntaxError); -assertTrue(/^{*$/.test("{{{")); -assertTrue(/^}*$/.test("}}}")); -assertTrue(/]/.test("]")); -assertTrue(/^\c%$/.test("\\c%")); // We go into ExtendedPatternCharacter. -assertTrue(/^\d%$/.test("2%")); // ... CharacterClassEscape. -assertTrue(/^\e%$/.test("e%")); // ... IdentityEscape. -assertTrue(/^\ca$/.test("\u{1}")); // ... ControlLetter. -assertTrue(/^\cA$/.test("\u{1}")); // ... ControlLetter. -assertTrue(/^\c9$/.test("\\c9")); // ... ExtendedPatternCharacter. -assertTrue(/^\c$/.test("\\c")); // ... ExtendedPatternCharacter. -assertTrue(/^[\c%]*$/.test("\\c%")); // TODO(v8:6201): Not covered by the spec. -assertTrue(/^[\c:]*$/.test("\\c:")); // TODO(v8:6201): Not covered by the spec. -assertTrue(/^[\c0]*$/.test("\u{10}")); // ... ClassControlLetter. -assertTrue(/^[\c1]*$/.test("\u{11}")); // ('0' % 32 == 0x10) -assertTrue(/^[\c2]*$/.test("\u{12}")); -assertTrue(/^[\c3]*$/.test("\u{13}")); -assertTrue(/^[\c4]*$/.test("\u{14}")); -assertTrue(/^[\c5]*$/.test("\u{15}")); -assertTrue(/^[\c6]*$/.test("\u{16}")); -assertTrue(/^[\c7]*$/.test("\u{17}")); -assertTrue(/^[\c8]*$/.test("\u{18}")); -assertTrue(/^[\c9]*$/.test("\u{19}")); -assertTrue(/^[\c_]*$/.test("\u{1F}")); -assertTrue(/^[\c11]*$/.test("\u{11}1")); -assertTrue(/^[\8]*$/.test("8")); // ... ClassEscape ~~> IdentityEscape. -assertTrue(/^[\7]*$/.test("\u{7}")); // ... ClassEscape - // ~~> LegacyOctalEscapeSequence. -assertTrue(/^[\11]*$/.test("\u{9}")); -assertTrue(/^[\111]*$/.test("\u{49}")); -assertTrue(/^[\222]*$/.test("\u{92}")); -assertTrue(/^[\333]*$/.test("\u{DB}")); -assertTrue(/^[\444]*$/.test("\u{24}4")); -assertTrue(/^[\d-X]*$/.test("234-X-432")); // CharacterRangeOrUnion. -assertTrue(/^[\d-X-Z]*$/.test("234-XZ-432")); -assertFalse(/^[\d-X-Z]*$/.test("234-XYZ-432")); - -// Lone leading surrogates. Just here to exercise specific parsing code-paths. - -assertFalse(/\uDB88|\uDBEC|aa/.test("")); -assertFalse(/\uDB88|\uDBEC|aa/u.test("")); - -// EscapeRegExpPattern -assertEquals("\\n", /\n/.source); -assertEquals("\\n", new RegExp("\n").source); -assertEquals("\\n", new RegExp("\\n").source); -assertEquals("\\\\n", /\\n/.source); -assertEquals("\\r", /\r/.source); -assertEquals("\\r", new RegExp("\r").source); -assertEquals("\\r", new RegExp("\\r").source); -assertEquals("\\\\r", /\\r/.source); -assertEquals("\\u2028", /\u2028/.source); -assertEquals("\\u2028", new RegExp("\u2028").source); -assertEquals("\\u2028", new RegExp("\\u2028").source); -assertEquals("\\u2029", /\u2029/.source); -assertEquals("\\u2029", new RegExp("\u2029").source); -assertEquals("\\u2029", new RegExp("\\u2029").source); diff --git a/implementation-contributed/v8/mjsunit/regress-906893.js b/implementation-contributed/v8/mjsunit/regress-906893.js deleted file mode 100644 index 4b4942d665a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress-906893.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const r = /x/; -let counter = 0; - -r.exec = () => { counter++; return null; } - -function f() { - r.test("ABcd"); -} - -f(); -assertEquals(1, counter); -%OptimizeFunctionOnNextCall(f); - -f(); -assertEquals(2, counter); diff --git a/implementation-contributed/v8/mjsunit/regress-918763.js b/implementation-contributed/v8/mjsunit/regress-918763.js deleted file mode 100644 index 45916f015a0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress-918763.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function C() {} -C.__proto__ = null; - -function f(c) { return 0 instanceof c; } - -f(C); -%OptimizeFunctionOnNextCall(f); -assertThrows(() => f(0)); diff --git a/implementation-contributed/v8/mjsunit/regress-regexp-functional-replace-slow.js b/implementation-contributed/v8/mjsunit/regress-regexp-functional-replace-slow.js deleted file mode 100644 index 033bcee1ef0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress-regexp-functional-replace-slow.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/a/.constructor = ""; - -assertEquals("b", "a".replace(/a/, () => "b")); diff --git a/implementation-contributed/v8/mjsunit/regress-v8-8445-2.js b/implementation-contributed/v8/mjsunit/regress-v8-8445-2.js deleted file mode 100644 index 828b877d0c5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress-v8-8445-2.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-string-matchall - -class MyRegExp { - exec() { return null; } -} - -var r = /c/; - -assertEquals(["ab", ""], "abc".split(r)); -assertEquals([["c"]], [..."c".matchAll(r)]); - -r.constructor = { [Symbol.species] : MyRegExp }; - -assertEquals(["abc"], "abc".split(r)); -assertEquals([], [..."c".matchAll(r)]); - -assertEquals(["ab", ""], "abc".split(/c/)); -assertEquals([["c"]], [..."c".matchAll(/c/)]); - -RegExp.prototype.constructor = { [Symbol.species] : MyRegExp }; - -assertEquals(["abc"], "abc".split(/c/)); -assertEquals([], [..."c".matchAll(/c/)]); diff --git a/implementation-contributed/v8/mjsunit/regress-v8-8445.js b/implementation-contributed/v8/mjsunit/regress-v8-8445.js deleted file mode 100644 index 7641416ba0f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress-v8-8445.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-string-matchall - -class MyRegExp { - exec() { return null; } -} - -assertEquals(["ab", ""], "abc".split(/c/)); -assertEquals([["a"]], [..."a".matchAll(/a/)]); - -Object.defineProperty(RegExp, Symbol.species, { get() { return MyRegExp; }}); - -assertEquals(["abc"], "abc".split(/c/)); -assertEquals([], [..."a".matchAll(/a/)]); diff --git a/implementation-contributed/v8/mjsunit/regress/binop-in-effect-context-deopt.js b/implementation-contributed/v8/mjsunit/regress/binop-in-effect-context-deopt.js deleted file mode 100644 index 8d60e9015ea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/binop-in-effect-context-deopt.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -(function BinopInEffectContextDeoptAndOsr() { - function f(a, deopt, osr) { - var result = (a + 10, "result"); - var dummy = deopt + 0; - for (var i = 0; osr && i < 2; i++) %OptimizeOsr(); - return result; - } - - assertEquals("result", f(true, 3, false)); - assertEquals("result", f(true, 3, false)); - %OptimizeFunctionOnNextCall(f); - assertEquals("result", f(true, "foo", true)); -})(); - - -(function BinopInEffectContextLazyDeopt() { - function deopt_f() { - %DeoptimizeFunction(f); - return "dummy"; - } - - function h() { - return { toString : deopt_f }; - } - - function g(x) { - } - - function f() { - return g(void(h() + "")); - }; - - f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/bitops-register-alias.js b/implementation-contributed/v8/mjsunit/regress/bitops-register-alias.js deleted file mode 100644 index 389255df05e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/bitops-register-alias.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the code generator can cope with left and right being in -// the same register for bitops. -function f() { for (var i = 10; i < 100; i++) { return i | i; } } -assertEquals(10, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/call-function-in-effect-context-deopt.js b/implementation-contributed/v8/mjsunit/regress/call-function-in-effect-context-deopt.js deleted file mode 100644 index 72d39385115..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/call-function-in-effect-context-deopt.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(deopt, osr) { - var result = "result"; - %_Call(function() {}, 0, 0); - var dummy = deopt + 0; - for (var i = 0; osr && i < 2; i++) %OptimizeOsr(); - return result; -} - -assertEquals("result", f(3, false)); -assertEquals("result", f(3, false)); -%OptimizeFunctionOnNextCall(f); -assertEquals("result", f("foo", true)); diff --git a/implementation-contributed/v8/mjsunit/regress/clear-keyed-call.js b/implementation-contributed/v8/mjsunit/regress/clear-keyed-call.js deleted file mode 100644 index 6870f606c03..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/clear-keyed-call.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --allow-natives-syntax - -function f(a) { - a[0](1); -} - -f([function(a) { return a; }]); -f([function(a) { return a; }]); -f([function(a) { return a; }]); -%NotifyContextDisposed(); -gc(); -gc(); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/compare-map-elim1.js b/implementation-contributed/v8/mjsunit/regress/compare-map-elim1.js deleted file mode 100644 index d98c089dec1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/compare-map-elim1.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --check-elimination - - -function foo(o) { - return o.foo1; -} - -function getter() { - return this.x + this.z + foo2(this); -} - -function foo2(o) { - return o.a; -} - -var o1 = {z:0, x:1}; -var o2 = {z:0, a:1.5, x:1}; -var o3 = {z:0, a:1.5}; -Object.defineProperty(o1, "foo1", {get:getter}); -Object.defineProperty(o2, "foo1", {get:getter}); - -foo(o1); -foo(o1); -foo(o2); -%ClearFunctionFeedback(foo2); -foo2(o2); -foo2(o2); -foo2(o3); -%OptimizeFunctionOnNextCall(foo); -foo(o1); diff --git a/implementation-contributed/v8/mjsunit/regress/comparison-in-effect-context-deopt.js b/implementation-contributed/v8/mjsunit/regress/comparison-in-effect-context-deopt.js deleted file mode 100644 index b28dff73a74..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/comparison-in-effect-context-deopt.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function lazyDeopt() { - %DeoptimizeFunction(test); - return "deopt"; -} - -var x = { toString : lazyDeopt }; - -function g(x) { - return "result"; -} - -function test(x) { - return g(void(x == "")); -} - -test(x); -%OptimizeFunctionOnNextCall(test); -assertEquals("result", test(x)); diff --git a/implementation-contributed/v8/mjsunit/regress/consolidated-holey-load.js b/implementation-contributed/v8/mjsunit/regress/consolidated-holey-load.js deleted file mode 100644 index ef8f1ef1400..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/consolidated-holey-load.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo(array) { - return array[0]; -} - -var a = [1, 2, , 4]; // Holey Smi elements. -var b = ["abcd", 0]; // Fast elements. -foo(b); // Observe fast elements first, or the IC will transition without -foo(a); // going polymorphic. -%OptimizeFunctionOnNextCall(foo); -var c = [, 0]; -assertEquals(undefined, foo(c)); // Elided hole check will leak the hole. diff --git a/implementation-contributed/v8/mjsunit/regress/cross-script-vars.js b/implementation-contributed/v8/mjsunit/regress/cross-script-vars.js deleted file mode 100644 index fd235f997bf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/cross-script-vars.js +++ /dev/null @@ -1,575 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function PrintDesc(desc, s) { - var json; - if (desc) { - json = JSON.stringify(desc); - } else { - json = ""; - } - if (s === undefined) { - print(json); - } else { - print(s + ": " + json); - } -} - - -var counters; -var test_realm; -var cfg; - - -function GetDescriptor() { - var code = 'Object.getOwnPropertyDescriptor(global, "x")'; - var desc = Realm.eval(test_realm, code); -// PrintDesc(desc); - return desc; -} - -function SetUp() { - counters = {}; - Realm.shared = {counters: counters}; - test_realm = Realm.create(); - Realm.eval(test_realm, 'var global = Realm.global(Realm.current());'); - print("====================="); - print("Test realm: " + test_realm); - assertEquals(undefined, GetDescriptor()); -} - -function TearDown() { - Realm.dispose(test_realm); - print("OK"); -} - - -function AddStrict(code, cfg) { - return cfg.strict ? '"use strict"; ' + code : code; -} - -function ForceMutablePropertyCellType() { - Realm.eval(test_realm, 'global.x = {}; global.x = undefined;'); -} - -function DeclareVar() { - var code = 'var x;'; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -function DefineVar(v) { - var code = 'var x = ' + v; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -function DefineLoadVar() { - var name = 'LoadVar_' + test_realm; - var code = - 'var x;' + - 'function ' + name + '() {' + - ' return x;' + - '};'; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -function LoadVar() { - var name = 'LoadVar_' + test_realm; - var code = - (cfg.optimize ? '%OptimizeFunctionOnNextCall(' + name + ');' : '') + - name + '();'; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -function DefineStoreVar() { - var name = 'StoreVar_' + test_realm; - var code = 'var g = (Function("return this"))();' + - 'var x;' + - 'function ' + name + '(v) {' + -// ' %DebugPrint(g);' + - ' return x = v;' + - '};'; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -function StoreVar(v) { - var name = 'StoreVar_' + test_realm; - var code = - (cfg.optimize ? '%OptimizeFunctionOnNextCall(' + name + ');' : '') + - name + '(' + v + ');'; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -// It does 13 iterations which results in 27 loads -// and 14 stores. -function LoadStoreLoop() { - var code = 'for(var x = 0; x < 13; x++);'; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -function DefineRWDataProperty() { - var code = - 'Object.defineProperty(global, "x", { ' + - ' value: 42, ' + - ' writable: true, ' + - ' enumerable: true, ' + - ' configurable: true ' + - '});'; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -function DefineRODataProperty() { - var code = - 'Object.defineProperty(global, "x", { ' + - ' value: 42, ' + - ' writable: false, ' + - ' enumerable: true, ' + - ' configurable: true ' + - '});'; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -function SetX_(v) { - var code = - 'global.x_ = ' + v + '; '; - return Realm.eval(test_realm, code); -} - -function DefineRWAccessorProperty() { - var code = - 'Object.defineProperty(global, "x", {' + - ' get: function() { Realm.shared.counters.get_count++; return this.x_; },' + - ' set: function(v) { Realm.shared.counters.set_count++; this.x_ = v; },' + - ' enumerable: true, configurable: true' + - '});'; - counters.get_count = 0; - counters.set_count = 0; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - -function DefineROAccessorProperty() { - var code = - 'Object.defineProperty(global, "x", {' + - ' get: function() { Realm.shared.counters.get_count++; return this.x_; },' + - ' enumerable: true, configurable: true' + - '});'; - counters.get_count = 0; - counters.set_count = 0; - return Realm.eval(test_realm, AddStrict(code, cfg)); -} - - -function testSuite(opt_cfg) { - // - // Non strict. - // - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: false}; - DeclareVar(); - DefineLoadVar(); - DefineStoreVar(); - assertEquals(undefined, LoadVar()); - assertEquals(false, GetDescriptor().configurable); - - // Force property cell type to kMutable. - DefineVar(undefined); - DefineVar(153); - assertEquals(false, GetDescriptor().configurable); - - assertEquals(153, LoadVar()); - assertEquals(113, StoreVar(113)); - assertEquals(113, LoadVar()); - LoadStoreLoop(); - assertEquals(13, LoadVar()); - TearDown(); - })(); - - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: false}; - ForceMutablePropertyCellType(); - DefineLoadVar(); - DefineStoreVar(); - DefineRWDataProperty(); - assertEquals(42, LoadVar()); - assertEquals(true, GetDescriptor().configurable); - - DefineVar(153); - assertEquals(true, GetDescriptor().configurable); - - assertEquals(153, LoadVar()); - assertEquals(113, StoreVar(113)); - assertEquals(113, LoadVar()); - LoadStoreLoop(); - assertEquals(13, LoadVar()); - - // Now reconfigure to accessor. - DefineRWAccessorProperty(); - assertEquals(undefined, GetDescriptor().value); - assertEquals(true, GetDescriptor().configurable); - assertEquals(0, counters.get_count); - assertEquals(0, counters.set_count); - - assertEquals(undefined, LoadVar()); - assertEquals(1, counters.get_count); - assertEquals(0, counters.set_count); - - LoadStoreLoop(); - assertEquals(28, counters.get_count); - assertEquals(14, counters.set_count); - - assertEquals(13, LoadVar()); - assertEquals(29, counters.get_count); - assertEquals(14, counters.set_count); - - TearDown(); - })(); - - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: false}; - ForceMutablePropertyCellType(); - DefineLoadVar(); - DefineStoreVar(); - DefineRODataProperty(); - assertEquals(42, LoadVar()); - assertEquals(true, GetDescriptor().configurable); - - DefineVar(153); - - assertEquals(42, LoadVar()); - assertEquals(113, StoreVar(113)); - assertEquals(42, LoadVar()); - LoadStoreLoop(); - assertEquals(42, LoadVar()); - - // Now reconfigure to accessor property. - DefineRWAccessorProperty(); - assertEquals(undefined, GetDescriptor().value); - assertEquals(true, GetDescriptor().configurable); - assertEquals(0, counters.get_count); - assertEquals(0, counters.set_count); - - assertEquals(undefined, LoadVar()); - assertEquals(1, counters.get_count); - assertEquals(0, counters.set_count); - - LoadStoreLoop(); - assertEquals(28, counters.get_count); - assertEquals(14, counters.set_count); - - assertEquals(13, LoadVar()); - assertEquals(29, counters.get_count); - assertEquals(14, counters.set_count); - - TearDown(); - })(); - - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: false}; - ForceMutablePropertyCellType(); - DefineLoadVar(); - DefineStoreVar(); - DefineRWAccessorProperty(); - assertEquals(0, counters.get_count); - assertEquals(0, counters.set_count); - assertEquals(true, GetDescriptor().configurable); - - assertEquals(undefined, LoadVar()); - assertEquals(1, counters.get_count); - assertEquals(0, counters.set_count); - - DefineVar(153); - assertEquals(true, GetDescriptor().configurable); - assertEquals(1, counters.get_count); - assertEquals(1, counters.set_count); - - assertEquals(153, LoadVar()); - assertEquals(2, counters.get_count); - assertEquals(1, counters.set_count); - - assertEquals(113, StoreVar(113)); - assertEquals(2, counters.get_count); - assertEquals(2, counters.set_count); - - assertEquals(113, LoadVar()); - assertEquals(3, counters.get_count); - assertEquals(2, counters.set_count); - - LoadStoreLoop(); - assertEquals(30, counters.get_count); - assertEquals(16, counters.set_count); - - assertEquals(13, LoadVar()); - assertEquals(31, counters.get_count); - assertEquals(16, counters.set_count); - - // Now reconfigure to data property. - DefineRWDataProperty(); - assertEquals(42, GetDescriptor().value); - assertEquals(42, LoadVar()); - assertEquals(113, StoreVar(113)); - assertEquals(31, counters.get_count); - assertEquals(16, counters.set_count); - - TearDown(); - })(); - - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: false}; - ForceMutablePropertyCellType(); - DefineLoadVar(); - DefineStoreVar(); - DefineROAccessorProperty(); - assertEquals(0, counters.get_count); - assertEquals(0, counters.set_count); - assertEquals(true, GetDescriptor().configurable); - - assertEquals(undefined, LoadVar()); - assertEquals(1, counters.get_count); - assertEquals(0, counters.set_count); - - SetX_(42); - assertEquals(42, LoadVar()); - assertEquals(2, counters.get_count); - assertEquals(0, counters.set_count); - - DefineVar(153); - assertEquals(true, GetDescriptor().configurable); - assertEquals(2, counters.get_count); - assertEquals(0, counters.set_count); - - assertEquals(42, LoadVar()); - assertEquals(3, counters.get_count); - assertEquals(0, counters.set_count); - - assertEquals(113, StoreVar(113)); - assertEquals(3, counters.get_count); - assertEquals(0, counters.set_count); - - assertEquals(42, LoadVar()); - assertEquals(4, counters.get_count); - assertEquals(0, counters.set_count); - - LoadStoreLoop(); - assertEquals(5, counters.get_count); - assertEquals(0, counters.set_count); - - assertEquals(42, LoadVar()); - assertEquals(6, counters.get_count); - assertEquals(0, counters.set_count); - - // Now reconfigure to data property. - DefineRWDataProperty(); - assertEquals(42, GetDescriptor().value); - assertEquals(42, LoadVar()); - assertEquals(113, StoreVar(113)); - assertEquals(6, counters.get_count); - assertEquals(0, counters.set_count); - - TearDown(); - })(); - - - // - // Strict. - // - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: true}; - DeclareVar(); - DefineLoadVar(); - DefineStoreVar(); - assertEquals(undefined, LoadVar()); - assertEquals(false, GetDescriptor().configurable); - - // Force property cell type to kMutable. - DefineVar(undefined); - DefineVar(153); - assertEquals(false, GetDescriptor().configurable); - - assertEquals(153, LoadVar()); - assertEquals(113, StoreVar(113)); - assertEquals(113, LoadVar()); - LoadStoreLoop(); - assertEquals(13, LoadVar()); - TearDown(); - })(); - - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: true}; - ForceMutablePropertyCellType(); - DefineLoadVar(); - DefineStoreVar(); - DefineRWDataProperty(); - assertEquals(42, LoadVar()); - assertEquals(true, GetDescriptor().configurable); - - DefineVar(153); - assertEquals(true, GetDescriptor().configurable); - - assertEquals(153, LoadVar()); - assertEquals(113, StoreVar(113)); - assertEquals(113, LoadVar()); - LoadStoreLoop(); - assertEquals(13, LoadVar()); - TearDown(); - })(); - - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: true}; - ForceMutablePropertyCellType(); - DefineLoadVar(); - DefineStoreVar(); - DefineRWDataProperty(); - assertEquals(true, GetDescriptor().configurable); - assertEquals(true, GetDescriptor().writable); - assertEquals(113, StoreVar(113)); - - DefineRODataProperty(); - assertEquals(true, GetDescriptor().configurable); - assertEquals(false, GetDescriptor().writable); - - assertEquals(42, LoadVar()); - assertEquals(true, GetDescriptor().configurable); - assertThrows('DefineVar(153)'); - assertEquals(42, LoadVar()); - assertThrows('StoreVar(113)'); - assertThrows('StoreVar(113)'); - assertEquals(42, LoadVar()); - assertThrows('StoreVar(42)'); - assertEquals(42, LoadVar()); - assertThrows('LoadStoreLoop()'); - assertEquals(42, LoadVar()); - TearDown(); - })(); - - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: true}; - ForceMutablePropertyCellType(); - DefineLoadVar(); - DefineStoreVar(); - DefineRWAccessorProperty(); - assertEquals(0, counters.get_count); - assertEquals(0, counters.set_count); - assertEquals(true, GetDescriptor().configurable); - - assertEquals(undefined, LoadVar()); - assertEquals(1, counters.get_count); - assertEquals(0, counters.set_count); - - DefineVar(153); - assertEquals(true, GetDescriptor().configurable); - assertEquals(1, counters.get_count); - assertEquals(1, counters.set_count); - - assertEquals(153, LoadVar()); - assertEquals(2, counters.get_count); - assertEquals(1, counters.set_count); - - assertEquals(113, StoreVar(113)); - assertEquals(2, counters.get_count); - assertEquals(2, counters.set_count); - - assertEquals(113, LoadVar()); - assertEquals(3, counters.get_count); - assertEquals(2, counters.set_count); - - LoadStoreLoop(); - assertEquals(30, counters.get_count); - assertEquals(16, counters.set_count); - - assertEquals(13, LoadVar()); - assertEquals(31, counters.get_count); - assertEquals(16, counters.set_count); - - // Now reconfigure to data property. - DefineRWDataProperty(); - assertEquals(42, GetDescriptor().value); - assertEquals(42, LoadVar()); - assertEquals(113, StoreVar(113)); - assertEquals(31, counters.get_count); - assertEquals(16, counters.set_count); - - TearDown(); - })(); - - - (function() { - SetUp(); - cfg = {optimize: opt_cfg.optimize, strict: true}; - ForceMutablePropertyCellType(); - DefineLoadVar(); - DefineStoreVar(); - DefineROAccessorProperty(); - assertEquals(0, counters.get_count); - assertEquals(0, counters.set_count); - assertEquals(true, GetDescriptor().configurable); - - assertEquals(undefined, LoadVar()); - assertEquals(1, counters.get_count); - assertEquals(0, counters.set_count); - - SetX_(42); - assertEquals(42, LoadVar()); - assertEquals(2, counters.get_count); - assertEquals(0, counters.set_count); - - assertThrows('DefineVar(153)'); - assertEquals(true, GetDescriptor().configurable); - assertEquals(2, counters.get_count); - assertEquals(0, counters.set_count); - - assertEquals(42, LoadVar()); - assertEquals(3, counters.get_count); - assertEquals(0, counters.set_count); - - assertThrows('StoreVar(113)'); - assertEquals(3, counters.get_count); - assertEquals(0, counters.set_count); - - assertEquals(42, LoadVar()); - assertEquals(4, counters.get_count); - assertEquals(0, counters.set_count); - - assertThrows('LoadStoreLoop()'); - assertEquals(4, counters.get_count); - assertEquals(0, counters.set_count); - - assertEquals(42, LoadVar()); - assertEquals(5, counters.get_count); - assertEquals(0, counters.set_count); - - // Now reconfigure to data property. - DefineRWDataProperty(); - assertEquals(42, GetDescriptor().value); - assertEquals(42, LoadVar()); - assertEquals(113, StoreVar(113)); - assertEquals(5, counters.get_count); - assertEquals(0, counters.set_count); - - TearDown(); - })(); - -} // testSuite - - -testSuite({optimize: false}); -testSuite({optimize: true}); diff --git a/implementation-contributed/v8/mjsunit/regress/d8-readbuffer.js b/implementation-contributed/v8/mjsunit/regress/d8-readbuffer.js deleted file mode 100644 index 8aec02dcac5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/d8-readbuffer.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that reading a file actually returns the file's contents. - -// Env: TEST_FILE_NAME -assertEquals("string", typeof TEST_FILE_NAME); - -var a = new Uint8Array(readbuffer(TEST_FILE_NAME)); - -// First line of this file. -var expected = "// Copyright 2014 the V8 project authors. All rights reserved."; - -for (var i = 0; i < expected.length; i++) { - assertEquals(expected.charCodeAt(i), a[i]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/external-and-normal-array-polymorphism.js b/implementation-contributed/v8/mjsunit/regress/external-and-normal-array-polymorphism.js deleted file mode 100644 index 0ac1545ca94..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/external-and-normal-array-polymorphism.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function store_generator(compare) { - return function(a,i,v) { - a[i] = v; - assertEquals(compare, a[i]); - assertEquals(compare, a[i]); - } -} - -f = store_generator(5); -a = [0,0,0]; -f(a,0,5); -a = [0,0,0]; -f(a,1,5); -a = [0,0,0]; -f(a,2,5); - -f = store_generator(5.5); -a = new Float32Array(5); -f(a,0,5.5); -f(a,1,5.5); -f(a,2,5.5); diff --git a/implementation-contributed/v8/mjsunit/regress/get-array-keys-oob.js b/implementation-contributed/v8/mjsunit/regress/get-array-keys-oob.js deleted file mode 100644 index 22a59e8beb3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/get-array-keys-oob.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Array.prototype[10000000] = 1; -Array(1000).join(); diff --git a/implementation-contributed/v8/mjsunit/regress/internalized-string-not-equal.js b/implementation-contributed/v8/mjsunit/regress/internalized-string-not-equal.js deleted file mode 100644 index 911279b43e6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/internalized-string-not-equal.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// A bug in r15773, when masks for internalized string and string types -// were reorganized. -function equal(o1, o2) { - return (o1 == o2); -} -var a = "abc"; -var b = "abc"; -equal(a, b); -equal(a, b); -%OptimizeFunctionOnNextCall(equal); -assertTrue(equal(1.3, 1.3)); diff --git a/implementation-contributed/v8/mjsunit/regress/json-stringifier-emptyhandle.js b/implementation-contributed/v8/mjsunit/regress/json-stringifier-emptyhandle.js deleted file mode 100644 index 970b0b834cd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/json-stringifier-emptyhandle.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -function explode() { - var array = [1,2,3]; - - Object.defineProperty(array, 4, { - get: function () { throw "dynamite"; }, - }); - - JSON.stringify(array); -} - -try { - explode(); - assertUnreachable(); -} catch(e) { - assertEquals("dynamite", e); -} diff --git a/implementation-contributed/v8/mjsunit/regress/math-min.js b/implementation-contributed/v8/mjsunit/regress/math-min.js deleted file mode 100644 index 942e9d0b7d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/math-min.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = new Float64Array(4); -a[2] *= -1; -a[3] *= -1; -assertEquals(0, a[0]); -assertEquals(0, a[1]); -assertEquals(-0, a[2]); -assertEquals(-0, a[3]); - -function f1() { - var z = a[0]; - // Same register. - assertEquals(0, Math.min(z, z)); -} - -function f2() { - // Different registers. - assertEquals(0, Math.min(a[0], a[1])); -} - -function f3() { - // Zero and minus zero. - assertEquals(-0, Math.min(a[1], a[2])); -} - -function f4() { - // Zero and minus zero, reversed order. - assertEquals(-0, Math.min(a[2], a[1])); -} - -function f5() { - // Minus zero, same register. - var m_z = a[2]; - assertEquals(-0, Math.min(m_z, m_z)); -} - -function f6() { - // Minus zero, different registers. - assertEquals(-0, Math.min(a[2], a[3])); -} - -for (var i = 0; i < 3; i++) { - f1(); - f2(); - f3(); - f4(); - f5(); - f6(); -} -%OptimizeFunctionOnNextCall(f1); -%OptimizeFunctionOnNextCall(f2); -%OptimizeFunctionOnNextCall(f3); -%OptimizeFunctionOnNextCall(f4); -%OptimizeFunctionOnNextCall(f5); -%OptimizeFunctionOnNextCall(f6); -f1(); -f2(); -f3(); -f4(); -f5(); -f6(); diff --git a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-1.js b/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-1.js deleted file mode 100644 index 1aa55aa9fb3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-1.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default () diff --git a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-2.js b/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-2.js deleted file mode 100644 index 855aa2e9d70..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-2.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default (...) diff --git a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-3.js b/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-3.js deleted file mode 100644 index e6d043d2ce5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-3.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default (a, ...b) diff --git a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-4.js b/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-4.js deleted file mode 100644 index fc7968d03d0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-4.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export default 1, 2; diff --git a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-5.js b/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-5.js deleted file mode 100644 index 10864c260f8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/modules-skip-regress-797581-5.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let x; -export default x = 0; diff --git a/implementation-contributed/v8/mjsunit/regress/negative_lookup.js b/implementation-contributed/v8/mjsunit/regress/negative_lookup.js deleted file mode 100644 index e23e365fc7c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/negative_lookup.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function s(v) { - v.x = 1; -} - -function c(p) { - return {__proto__: p}; -} - -var p = {}; - -// Make p the last prototype in the chain. -p.__proto__ = null; - -var o1 = c(p); -var o2 = c(p); -var o3 = c(p); -var o4 = c(p); - -// Make y go to slow mode. -// Do this after using p as prototype, since using an object as prototype kicks -// it back into fast mode. -p.y = 1; -delete p.y; - -// Initialize the store IC. -s(o1); -s(o2); - -// Do something with x in slow-mode p. -Object.defineProperty(p, "x", { writable: false, value: 5 }); - -// Verify that directly setting x fails. -o3.x = 10; -assertEquals(5, o3.x); - -// Verify that setting x through the IC fails. -s(o4); -assertEquals(5, o4.x); diff --git a/implementation-contributed/v8/mjsunit/regress/number-named-call-deopt.js b/implementation-contributed/v8/mjsunit/regress/number-named-call-deopt.js deleted file mode 100644 index 1598af12b49..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/number-named-call-deopt.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(x, deopt, osr) { - var res = "result"; - void(x.toString(10, deopt + 0)); - if (osr) for (var i = 0; i < 100000; i++) { } - return res; -} - -f(4, 0, false); -f(4, 0, false); -f(4, 0, false); -%OptimizeFunctionOnNextCall(f); -assertEquals("result", f(4, "deopt", true)); diff --git a/implementation-contributed/v8/mjsunit/regress/poly_count_operation.js b/implementation-contributed/v8/mjsunit/regress/poly_count_operation.js deleted file mode 100644 index a8a1ed2ebc3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/poly_count_operation.js +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var o1 = {x:1}; -var o2 = {}; -var deopt_getter = false; -var deopt_setter = false; - -function f_mono(o) { - return 5 + o.x++; -} - -var to_deopt = f_mono; - -var v = 1; -var g = 0; -var s = 0; - -Object.defineProperty(o2, "x", - {get:function() { - g++; - if (deopt_getter) { - deopt_getter = false; - %DeoptimizeFunction(to_deopt); - } - return v; - }, - set:function(new_v) { - v = new_v; - s++; - if (deopt_setter) { - deopt_setter = false; - %DeoptimizeFunction(to_deopt); - } - }}); - -assertEquals(6, f_mono(o2)); -assertEquals(1, g); -assertEquals(1, s); -assertEquals(7, f_mono(o2)); -assertEquals(2, g); -assertEquals(2, s); -%OptimizeFunctionOnNextCall(f_mono); -deopt_setter = true; -assertEquals(8, f_mono(o2)); -assertEquals(3, g); -assertEquals(3, s); - -function f_poly(o) { - return 5 + o.x++; -} - -v = 1; -to_deopt = f_poly; - -f_poly(o1); -f_poly(o1); -assertEquals(6, f_poly(o2)); -assertEquals(4, g); -assertEquals(4, s); -assertEquals(7, f_poly(o2)); -assertEquals(5, g); -assertEquals(5, s); -%OptimizeFunctionOnNextCall(f_poly); -deopt_setter = true; -assertEquals(8, f_poly(o2)); -assertEquals(6, g); -assertEquals(6, s); - -%OptimizeFunctionOnNextCall(f_poly); -v = undefined; -assertEquals(NaN, f_poly(o2)); -assertEquals(7, g); -assertEquals(7, s); - -function f_pre(o) { - return 5 + ++o.x; -} - -v = 1; -to_deopt = f_pre; - -f_pre(o1); -f_pre(o1); -assertEquals(7, f_pre(o2)); -assertEquals(8, g); -assertEquals(8, s); -assertEquals(8, f_pre(o2)); -assertEquals(9, g); -assertEquals(9, s); -%OptimizeFunctionOnNextCall(f_pre); -deopt_setter = true; -assertEquals(9, f_pre(o2)); -assertEquals(10, g); -assertEquals(10, s); - -%OptimizeFunctionOnNextCall(f_pre); -v = undefined; -assertEquals(NaN, f_pre(o2)); -assertEquals(11, g); -assertEquals(11, s); - - -function f_get(o) { - return 5 + o.x++; -} - -v = 1; -to_deopt = f_get; - -f_get(o1); -f_get(o1); -assertEquals(6, f_get(o2)); -assertEquals(12, g); -assertEquals(12, s); -assertEquals(7, f_get(o2)); -assertEquals(13, g); -assertEquals(13, s); -%OptimizeFunctionOnNextCall(f_get); -deopt_getter = true; -assertEquals(8, f_get(o2)); -assertEquals(14, g); -assertEquals(14, s); - -%OptimizeFunctionOnNextCall(f_get); -v = undefined; -assertEquals(NaN, f_get(o2)); -assertEquals(15, g); -assertEquals(15, s); diff --git a/implementation-contributed/v8/mjsunit/regress/polymorphic-accessor-test-context.js b/implementation-contributed/v8/mjsunit/regress/polymorphic-accessor-test-context.js deleted file mode 100644 index 6188279248d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/polymorphic-accessor-test-context.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function t1() { return this instanceof t1; } -function t2() { return this instanceof t2; } - -var o1 = new (function() { })(); -Object.defineProperty(o1, "t", {get:function() { return this instanceof o1.constructor; }}); -var o2 = new (function() { })(); -Object.defineProperty(o2, "t", {get:function() { return this instanceof o1.constructor; }}); -var o3 = new (function() { })(); -o3.t = true; - -function f(o) { - return 1 + (o.t ? 1 : 2); -} - -f(o1); -f(o1); -f(o2); -%OptimizeFunctionOnNextCall(f); -f(o3); diff --git a/implementation-contributed/v8/mjsunit/regress/post-increment-close-context.js b/implementation-contributed/v8/mjsunit/regress/post-increment-close-context.js deleted file mode 100644 index 08ade10f1d8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/post-increment-close-context.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var foo = {bar: -2}; -function crash() { - return !(foo.bar++); -} -assertFalse(crash()); -assertEquals(-1, foo.bar); -%OptimizeFunctionOnNextCall(crash); -assertFalse(crash()); -assertEquals(0, foo.bar); -assertTrue(crash()); -assertEquals(1, foo.bar); -assertFalse(crash()); -assertEquals(2, foo.bar); diff --git a/implementation-contributed/v8/mjsunit/regress/property-descriptor-to-object.js b/implementation-contributed/v8/mjsunit/regress/property-descriptor-to-object.js deleted file mode 100644 index e47d5a5b4de..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/property-descriptor-to-object.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = { prop: 1 }; -Object.prototype.value = 0; -var d = Object.getOwnPropertyDescriptor(o, "prop"); -assertEquals(1, d.value); diff --git a/implementation-contributed/v8/mjsunit/regress/readonly1.js b/implementation-contributed/v8/mjsunit/regress/readonly1.js deleted file mode 100644 index 366f432fbc4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/readonly1.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function s(v) { - v.x = 1; -} - -function s_strict(v) { - "use strict"; - v.x = 1; -} - -function c(p) { - return {__proto__: p}; -} - -var p = {}; - -var o1 = c(p); -var o2 = c(p); -var o3 = c(p); -var o4 = c(p); - -// Make p go slow. -// Do this after using p as prototype, since using an object as prototype kicks -// it back into fast mode. -p.y = 1; -delete p.y; -p.x = 5; - -// Initialize the store IC. -s(o1); -s(o2); -s_strict(o1); -s_strict(o2); - -// Make x non-writable. -Object.defineProperty(p, "x", { writable: false }); - -// Verify that direct setting fails. -o3.x = 20; -assertEquals(5, o3.x); - -// Verify that setting through the IC fails. -s(o4); -assertEquals(5, o4.x); -assertThrows("s_strict(o4);", TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/readonly2.js b/implementation-contributed/v8/mjsunit/regress/readonly2.js deleted file mode 100644 index 4e539250d55..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/readonly2.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Object.defineProperty(this, "x", { writable:true }); - -function s(v) { - v.x = 1; -} - -function s_strict(v) { - "use strict"; - v.x = 1; -} - -function c(p) { - return {__proto__: p}; -} - -var o1 = c(this); -var o2 = c(this); - -// Initialize the store IC. -s(c(this)); -s(c(this)); -s_strict(c(this)); -s_strict(c(this)); - -// Make x non-writable. -Object.defineProperty(this, "x", { writable:false, value:5 }); - -// Verify that direct setting fails. -o1.x = 20; -assertEquals(5, o1.x); - -// Verify that setting through the IC fails. -s(o2); -assertEquals(5, o2.x); -assertThrows("s_strict(o2);", TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/readonly3.js b/implementation-contributed/v8/mjsunit/regress/readonly3.js deleted file mode 100644 index f81979d2722..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/readonly3.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -this.x = 0; - -var p = {}; -Object.defineProperty(p, "x", {writable:false, value:5}); -this.__proto__ = p; - -function s(v) { - v.x = 1; -} - -function s_strict(v) { - "use strict"; - v.x = 1; -} - -function c(p) { - return {__proto__: p}; -} - -var o1 = c(this); -var o2 = c(this); - -// Initialize the store IC. -s(c(this)); -s(c(this)); -s_strict(c(this)); -s_strict(c(this)); - -delete this.x; - -// Verify that direct setting fails. -o1.x = 20; -assertEquals(5, o1.x); - -// Verify that setting through the IC fails. -s(o2); -assertEquals(5, o2.x); -assertThrows("s_strict(o2);", TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/readonly4.js b/implementation-contributed/v8/mjsunit/regress/readonly4.js deleted file mode 100644 index b2fde2953ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/readonly4.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var slow = {}; -var p = {}; - -slow.__proto__ = p; -slow.x = 10; -slow.y = 10; -Object.defineProperty(p, "x", {writable:false, value:5}); - -function c(p) { - return {__proto__: p}; -} - -function s(v) { - return v.x = 1; -} - -function s_strict(v) { - "use strict"; - v.x = 1; -} - -var o1 = c(slow); -var o2 = c(slow); -var o1_strict = c(slow); -var o2_strict = c(slow); -var o3 = c(slow); -var o4 = c(slow); - -// Make s slow. -// Do this after using slow as prototype, since using an object as prototype -// kicks it back into fast mode. -delete slow.y; - -s(o1); -s(o2); -s_strict(o1_strict); -s_strict(o2_strict); - -delete slow.x; -// Directly setting x should fail. -o3.x = 20 -assertEquals(5, o3.x); - -// Setting x through IC should fail. -s(o4); -assertEquals(5, o4.x); -assertThrows("s_strict(o4);", TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/readonly5.js b/implementation-contributed/v8/mjsunit/regress/readonly5.js deleted file mode 100644 index b1499ddfcfd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/readonly5.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -this.__proto__ = null; -this.x = 10; -delete this.x; - -function s(v) { - return v.x = 1; -} - -function s_strict(v) { - "use strict"; - return v.x = 1; -} - -function c() { - var o = {__proto__:this}; - return o; -} - -var o1 = c(); -var o2 = c(); -var o1_strict = c(); -var o2_strict = c(); -var o3 = c(); -var o4 = c(); - -// Initialize the store IC. -s(o1); -s(o2); -s_strict(o1_strict); -s_strict(o2_strict); - -Object.defineProperty(this, "x", {writable:false, configurable:true}); - -// Verify that directly setting x fails. -o3.x = 1; -assertEquals(undefined, o3.x); - -// Verify that setting x through the IC fails. -assertThrows("s_strict(o4)", TypeError); -s(o4); -assertEquals(undefined, o4.x); diff --git a/implementation-contributed/v8/mjsunit/regress/redeclaration-error-types.js b/implementation-contributed/v8/mjsunit/regress/redeclaration-error-types.js deleted file mode 100644 index 72e097db570..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/redeclaration-error-types.js +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function doTest(scripts, expectedError) { - var realm = Realm.create(); - - for (var i = 0; i < scripts.length - 1; i++) { - Realm.eval(realm, scripts[i]); - } - assertThrows(function() { - Realm.eval(realm, scripts[scripts.length - 1]); - }, Realm.eval(realm, expectedError)); - - Realm.dispose(realm); -} - -var tests = [ - { - // ES#sec-globaldeclarationinstantiation 5.a: - // If envRec.HasVarDeclaration(name) is true, throw a SyntaxError - // exception. - scripts: [ - "var a;", - "let a;", - ], - expectedError: "SyntaxError", - }, - { - // ES#sec-globaldeclarationinstantiation 6.a: - // If envRec.HasLexicalDeclaration(name) is true, throw a SyntaxError - // exception. - scripts: [ - "let a;", - "var a;", - ], - expectedError: "SyntaxError", - }, - { - // ES#sec-globaldeclarationinstantiation 5.b: - // If envRec.HasLexicalDeclaration(name) is true, throw a SyntaxError - // exception. - scripts: [ - "let a;", - "let a;", - ], - expectedError: "SyntaxError", - }, - { - // ES#sec-evaldeclarationinstantiation 5.a.i.1: - // If varEnvRec.HasLexicalDeclaration(name) is true, throw a SyntaxError - // exception. - scripts: [ - 'let a; eval("var a;");', - ], - expectedError: "SyntaxError", - }, - { - // ES#sec-evaldeclarationinstantiation 5.a.i.1: - // If varEnvRec.HasLexicalDeclaration(name) is true, throw a SyntaxError - // exception. - scripts: [ - 'let a; eval("function a() {}");', - ], - expectedError: "SyntaxError", - }, - { - // ES#sec-evaldeclarationinstantiation 5.d.ii.2.a.i: - // Throw a SyntaxError exception. - scripts: [ - '(function() { let a; eval("var a;"); })();', - ], - expectedError: "SyntaxError", - }, - { - // ES#sec-evaldeclarationinstantiation 5.d.ii.2.a.i: - // Throw a SyntaxError exception. - scripts: [ - '(function() { let a; eval("function a() {}"); })();', - ], - expectedError: "SyntaxError", - }, - { - // ES#sec-globaldeclarationinstantiation 5.d: - // If hasRestrictedGlobal is true, throw a SyntaxError exception. - scripts: [ - 'let NaN;', - ], - expectedError: "SyntaxError", - }, - { - // ES#sec-globaldeclarationinstantiation 5.d: - // If hasRestrictedGlobal is true, throw a SyntaxError exception. - scripts: [ - 'function NaN() {}', - ], - expectedError: "SyntaxError", - }, - - { - // ES#sec-evaldeclarationinstantiation 8.a.iv.1.b: - // If fnDefinable is false, throw a TypeError exception. - scripts: [ - 'eval("function NaN() {}");', - ], - expectedError: "TypeError", - }, - { - // ES#sec-evaldeclarationinstantiation 8.a.iv.1.b: - // If fnDefinable is false, throw a TypeError exception. - scripts: [ - ` - let a; - try { - eval("function a() {}"); - } catch (e) {} - eval("function NaN() {}"); - `, - ], - expectedError: "TypeError", - }, - { - // ES#sec-evaldeclarationinstantiation 8.a.iv.1.b: - // If fnDefinable is false, throw a TypeError exception. - scripts: [ - ` - eval(" - function f() { - function b() { - (0, eval)('function NaN() {}'); - } - b(); - } - f(); - "); - `.replace(/"/g, '`'), - ], - expectedError: "TypeError", - }, -]; - -tests.forEach(function(test) { - doTest(test.scripts, test.expectedError); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-100409.js b/implementation-contributed/v8/mjsunit/regress/regress-100409.js deleted file mode 100644 index c29250f28dc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-100409.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function outer () { - var val = 0; - - function foo () { - val = 0; - val; - var z = false; - var y = true; - if (!z) { - while (z = !z) { - if (y) val++; - } - } - return val++; - } - - return foo; -} - - -var foo = outer(); - -assertEquals(1, foo()); -assertEquals(1, foo()); - %OptimizeFunctionOnNextCall(foo); -assertEquals(1, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-100702.js b/implementation-contributed/v8/mjsunit/regress/regress-100702.js deleted file mode 100644 index 46494ab71db..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-100702.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for correct handling of non-object receiver values -// passed to built-in array functions. - -String.prototype.isThatMe = function () { - assertFalse(this === str); -}; - -var str = "abc"; -str.isThatMe(); -str.isThatMe.call(str); - -var arr = [1]; -arr.forEach("".isThatMe, str); -arr.filter("".isThatMe, str); -arr.some("".isThatMe, str); -arr.every("".isThatMe, str); -arr.map("".isThatMe, str); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1015.js b/implementation-contributed/v8/mjsunit/regress/regress-1015.js deleted file mode 100644 index 9e4406a9aab..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1015.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1015 - -// Object and array literals should be created using DefineOwnProperty, and -// therefore not hit setters in the prototype. - -function mkFail(message) { - return function () { assertUnreachable(message); } -} - -Object.defineProperty(Object.prototype, "foo", - {get: mkFail("oget"), set: mkFail("oset")}); -Object.defineProperty(Array.prototype, "2", - {get: mkFail("aget"), set: mkFail("aset")}); - -function inFunction() { - for (var i = 0; i < 10; i++) { - // in loop. - var ja = JSON.parse('[1,2,3,4]'); - var jo = JSON.parse('{"bar": 10, "foo": 20}') - var jop = JSON.parse('{"bar": 10, "__proto__": { }, "foo": 20}') - var a = [1,2,3,4]; - var o = { bar: 10, foo: 20 }; - var op = { __proto__: { set bar(v) { assertUnreachable("bset"); } }, - bar: 10 }; - } -} - -for (var i = 0; i < 10; i++) { - // In global scope. - var ja = JSON.parse('[1,2,3,4]'); - var jo = JSON.parse('{"bar": 10, "foo": 20}') - var jop = JSON.parse('{"bar": 10, "__proto__": { }, "foo": 20}') - var a = [1,2,3,4]; - var o = { bar: 10, foo: 20 }; - var op = { __proto__: { set bar(v) { assertUnreachable("bset"); } }, - bar: 10 }; - // In function scope. - inFunction(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1017.js b/implementation-contributed/v8/mjsunit/regress/regress-1017.js deleted file mode 100644 index 440449a5bf0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1017.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1017 - -// 32 ASCII-characters followed by a non-ASCII character. -// This causes an internal buffer to first expand to 64 bytes, then expand the -// 32 ASCII characters to 64 bytes of UC16 characters, leaving no room -// to store the 33rd character. This fails an ASSERT in debug mode. - -assertEquals(33, "12345678901234567890123456789012\u2028".length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1020.js b/implementation-contributed/v8/mjsunit/regress/regress-1020.js deleted file mode 100644 index 307a61e4397..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1020.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function isObject(o) { - return o instanceof Object; -} - -assertTrue(isObject(Object)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1030466.js b/implementation-contributed/v8/mjsunit/regress/regress-1030466.js deleted file mode 100644 index 8427ba028a9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1030466.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Whenever we enter a with-scope, we copy the context. This in itself is fine -// (contexts may escape), but when leaving a with-scope, we currently also copy -// the context instead of reverting to the original. This does not work because -// inner functions may already have been created using the original context. In -// the failing test case below, the inner function is run in the original context -// (where x is undefined), but the assignment to x after the with-statement is -// run in the copied context: - -var result = (function outer() { - with ({}) { } - var x = 10; - function inner() { - return x; - }; - return inner(); -})(); - -assertEquals(10, result); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-103259.js b/implementation-contributed/v8/mjsunit/regress/regress-103259.js deleted file mode 100644 index 447073caf78..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-103259.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = []; -a[8192] = ''; -assertTrue(%HasDictionaryElements(a)); -var uc16 = '\u0094'; -var test = uc16; -for (var i = 0; i < 13; i++) test += test; -assertEquals(test, a.join(uc16)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1036894.js b/implementation-contributed/v8/mjsunit/regress/regress-1036894.js deleted file mode 100644 index 03ed8f9d610..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1036894.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertThrows("$=function anonymous() { /*noex*/do {} while(({ get x(x) { break ; }, set x() { (undefined);} })); }"); - -function foo() { - assertThrows("$=function anonymous() { /*noex*/do {} while(({ get x(x) { break ; }, set x() { (undefined);} })); }"); -} -foo(); - -assertThrows("$=function anonymous() { /*noex*/do {} while(({ get x(x) { break ; }, set x() { (undefined);} })); }"); - -xeval = function(s) { eval(s); } -xeval('$=function(){L: {break L;break L;}};'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1039610.js b/implementation-contributed/v8/mjsunit/regress/regress-1039610.js deleted file mode 100644 index 757801fcee9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1039610.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure that the Debug object does not return to the global object -assertTrue(typeof(Debug) === 'undefined'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-105.js b/implementation-contributed/v8/mjsunit/regress/regress-105.js deleted file mode 100644 index 877cb82317a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-105.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var custom_valueOf = function() { - assertEquals(null, custom_valueOf.caller); - return 2; -} - -var custom_toString = function() { - assertEquals(null, custom_toString.caller); - return "I used to be an adventurer like you"; -} - -var object = {}; -object.valueOf = custom_valueOf; -object.toString = custom_toString; - -assertEquals(2, Number(object)); -assertEquals('I', String(object)[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1050043.js b/implementation-contributed/v8/mjsunit/regress/regress-1050043.js deleted file mode 100644 index e42728fc50f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1050043.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function unsignedShiftRight(val, shift) { - return val >>> shift; -} - -assertEquals( 15, unsignedShiftRight(15, 0), "15 >>> 0"); -assertEquals( 7, unsignedShiftRight(15, 1), "15 >>> 1"); -assertEquals( 3, unsignedShiftRight(15, 2), "15 >>> 2"); - -assertEquals(4294967288, unsignedShiftRight(-8, 0), "-8 >>> 0"); -assertEquals(2147483644, unsignedShiftRight(-8, 1), "-8 >>> 1"); -assertEquals(1073741822, unsignedShiftRight(-8, 2), "-8 >>> 2"); - -assertEquals( 1, unsignedShiftRight(-8, 31), "-8 >>> 31"); -assertEquals(4294967288, unsignedShiftRight(-8, 32), "-8 >>> 32"); -assertEquals(2147483644, unsignedShiftRight(-8, 33), "-8 >>> 33"); -assertEquals(1073741822, unsignedShiftRight(-8, 34), "-8 >>> 34"); - -assertEquals(2147483648, unsignedShiftRight(0x80000000, 0), "0x80000000 >>> 0"); -assertEquals(1073741824, unsignedShiftRight(0x80000000, 1), "0x80000000 >>> 1"); -assertEquals( 536870912, unsignedShiftRight(0x80000000, 2), "0x80000000 >>> 2"); - -assertEquals(1073741824, unsignedShiftRight(0x40000000, 0), "0x40000000 >>> 0"); -assertEquals( 536870912, unsignedShiftRight(0x40000000, 1), "0x40000000 >>> 1"); -assertEquals( 268435456, unsignedShiftRight(0x40000000, 2), "0x40000000 >>> 2"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1060.js b/implementation-contributed/v8/mjsunit/regress/regress-1060.js deleted file mode 100644 index 8abe178d80e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1060.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure that we do not record multiple bailouts in the unoptimized code -// for the (shared) .arguments proxy, even for calls. -function f(x) { arguments; return x() + x(); } - -assertEquals("hesthest", f(function () { return "hest"; })); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1062422.js b/implementation-contributed/v8/mjsunit/regress/regress-1062422.js deleted file mode 100644 index 1e2c7988c15..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1062422.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// 1062422 Ensure that accessors can handle unexpected receivers. -Number.prototype.__proto__ = String.prototype; -assertEquals((123).length, 0) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1066899.js b/implementation-contributed/v8/mjsunit/regress/regress-1066899.js deleted file mode 100644 index 5840f26234d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1066899.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This test case segfaults in generated code. See -// issue #1066899. -function Crash() { - for (var key in [0]) { - try { } finally { continue; } - } -} - -Crash(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1079.js b/implementation-contributed/v8/mjsunit/regress/regress-1079.js deleted file mode 100644 index 208dc5b41a2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1079.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Getting the arguments property of an optimized function should not crash, -// even if called through our optimized version of Function.prototype.apply. - -function optimized() { - return unoptimized.apply(null, arguments); -} - -// It's not crucial that this is unoptimized. -function unoptimized() { - with ({}) { - return optimized.arguments; - } -} - -for (var i = 0; i < 5; ++i) { - assertEquals(3, optimized(1, 2, 3).length); -} -%OptimizeFunctionOnNextCall(optimized); -assertEquals(3, optimized(1, 2, 3).length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-108296.js b/implementation-contributed/v8/mjsunit/regress/regress-108296.js deleted file mode 100644 index 38ecda778c7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-108296.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// This test checks that young immediates embedded into code objects -// are referenced through a cell. - -function f (k, a, b) { - // Create control flow for a.foo. Control flow resolution will - // be generated as a part of a gap move. Gap move operate on immediates as - // a.foo is a CONSTANT_FUNCTION. - var x = k ? a.foo : a.foo; - return x.prototype; -} - -var a = { }; - -// Make sure that foo is a CONSTANT_FUNCTION but not be pretenured. -a.foo = (function () { return function () {}; })(); - -// Ensure that both branches of ternary operator have monomorphic type feedback. -f(true, a, a); -f(true, a, a); -f(false, a, a); -f(false, a, a); -%OptimizeFunctionOnNextCall(f); -f(true, a, a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1083.js b/implementation-contributed/v8/mjsunit/regress/regress-1083.js deleted file mode 100644 index d231899b700..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1083.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that changing the generic descriptor flags on a property -// on the global object doesn't break invariants. -Object.defineProperty(this, 'Object', {enumerable:true}); - -var desc = Object.getOwnPropertyDescriptor(this, 'Object'); -assertTrue(desc.enumerable); -assertTrue(desc.configurable); -assertFalse(desc.hasOwnProperty('get')); -assertFalse(desc.hasOwnProperty('set')); -assertTrue(desc.hasOwnProperty('value')); -assertTrue(desc.writable); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1092.js b/implementation-contributed/v8/mjsunit/regress/regress-1092.js deleted file mode 100644 index 24efb37b402..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1092.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that CodeGenerator::EmitKeyedPropertyAssignment for the start -// of an initialization block doesn't normalize the properties of the -// JSGlobalProxy. -this.w = 0; -this.x = 1; -this.y = 2; -this.z = 3; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1099.js b/implementation-contributed/v8/mjsunit/regress/regress-1099.js deleted file mode 100644 index 49e4a52794f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1099.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that LApplyArguments lithium instruction restores context after the call. - -function X() { - var slot = "foo"; return function (a) { return slot === a; } -} - -function Y(x) { - var slot = "bar"; - return function (a) { - x.apply(this, arguments); - return slot === 'bar'; - }; -} - -var y = Y(X()); - -for (var i = 0; i < 5; i++) { - assertTrue(y("foo")); -} - -%OptimizeFunctionOnNextCall(y); -assertTrue(y("foo")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1102760.js b/implementation-contributed/v8/mjsunit/regress/regress-1102760.js deleted file mode 100644 index 890ecabcaa0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1102760.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function F() { - return arguments.length; -} - -assertEquals(0, F.apply(), "no receiver or args"); -assertEquals(0, F.apply(this), "no args"); -assertEquals(0, F.apply(this, []), "empty args"); -assertEquals(0, F.apply(this, [], 0), "empty args, extra argument"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1103.js b/implementation-contributed/v8/mjsunit/regress/regress-1103.js deleted file mode 100644 index 4ad25b3b7c0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1103.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that freezing the global object functions correctly and does not -// freeze the global proxy. - -var obj = this; -obj = Object.freeze(obj); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1104.js b/implementation-contributed/v8/mjsunit/regress/regress-1104.js deleted file mode 100644 index aca0a66477b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1104.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// A redeclaration of a variable that aliases a parameter and so rewrites to -// an arguments object access should not record duplicate AST IDs for -// bailout. -function test(f) { - function f() {} - function f() {} - return arguments; -} - -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-110509.js b/implementation-contributed/v8/mjsunit/regress/regress-110509.js deleted file mode 100644 index 132bd233bee..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-110509.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Verify that LRandom preserves rsi correctly. - -function foo() { - Math.random(); - new Function(""); -} - -foo(); -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1106.js b/implementation-contributed/v8/mjsunit/regress/regress-1106.js deleted file mode 100644 index e462d5dae70..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1106.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test for issue 1106, where the optimizing compiler broke when accessing -// a property lying on a prototype of the global object, and that prototype -// object was in dictionary mode. - -x = Object.prototype; -x.foo = 3; -x.bar = 4; -delete x.foo; -x.foo = 5; - -function f() { return foo; } - -for (i=0 ; i < 5; ++i) { - assertEquals(5, f()); -} -%OptimizeFunctionOnNextCall(f); -assertEquals(5, f()); - -// Test calls on functions defined in the prototype of the global object. -x.gee = function() { return 42; } -function g() { return gee(); } - -for (i=0 ; i < 5; ++i) { - assertEquals(42, g()); -} -%OptimizeFunctionOnNextCall(g); -assertEquals(42, g()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1107.js b/implementation-contributed/v8/mjsunit/regress/regress-1107.js deleted file mode 100644 index 4ba277a2e17..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1107.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that even if we cannot set element 0 on all the objects, we still -// can format exception messages to some extent. - -Object.prototype.__defineGetter__(0, function(){}); -assertThrows("x"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1110.js b/implementation-contributed/v8/mjsunit/regress/regress-1110.js deleted file mode 100644 index 124f520ca63..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1110.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the illegal continue is thrown at parse time. - -try { - eval("function Crash() { assertUnreachable(); continue;if (Crash) { } }"); - Crash(); - assertUnreachable(); -} catch (e) { - assertTrue(e instanceof SyntaxError); - assertTrue(/continue/.test(e.message)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1110164.js b/implementation-contributed/v8/mjsunit/regress/regress-1110164.js deleted file mode 100644 index 33f96af3ec2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1110164.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o = { x: 0, f: function() { return 42; } }; -delete o.x; // go dictionary - -function CallF(o) { - return o.f(); -} - -// Make sure the call IC in CallF is initialized. -for (var i = 0; i < 10; i++) assertEquals(42, CallF(o)); - -var caught = false; -o.f = 87; -try { - CallF(o); -} catch (e) { - caught = true; - assertTrue(e instanceof TypeError); -} -assertTrue(caught); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1112.js b/implementation-contributed/v8/mjsunit/regress/regress-1112.js deleted file mode 100644 index 41c91938986..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1112.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test making sure that defineProperty on the global proxy -// defines the property on the global object. - -Object.defineProperty(this, - 1, - { configurable: true, enumerable: true, value: 3 }); -assertEquals(3, this[1]); -assertTrue(this.hasOwnProperty("1")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1112051.js b/implementation-contributed/v8/mjsunit/regress/regress-1112051.js deleted file mode 100644 index 0af6bb43587..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1112051.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for issue #1112051. -function f() { } -assertThrows("f.call.apply()"); -assertThrows("f.call.apply(null)"); -assertThrows("f.call.apply(null, [], 0)"); -assertThrows("f.call.apply(null, [1,2,3,4,5,6,7,8,9], 0)"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1114040.js b/implementation-contributed/v8/mjsunit/regress/regress-1114040.js deleted file mode 100644 index ef7ee31f091..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1114040.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function TestBreak() { - var sequence = ""; - for (var a in [0,1]) { - L: { - for (var b in [2,3,4]) { - break L; - } - } - sequence += a; - } - return sequence; -} - - -function TestContinue() { - var sequence = ""; - for (var a in [0,1]) { - L: do { - for (var b in [2,3,4]) { - continue L; - } - } while (false); - sequence += a; - } - return sequence; -} - - -assertEquals("01", TestBreak()); -assertEquals("01", TestContinue()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1117.js b/implementation-contributed/v8/mjsunit/regress/regress-1117.js deleted file mode 100644 index 664dadd0671..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1117.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we actually return the right value (-0) when we multiply -// constant 0 with a negative integer. - -function foo(y) {return 0 * y; } -assertEquals(1/foo(-42), -Infinity); -assertEquals(1/foo(-42), -Infinity); -%OptimizeFunctionOnNextCall(foo); -assertEquals(1/foo(-42), -Infinity); - -function bar(x) { return x * 0; } -assertEquals(Infinity, 1/bar(5)); -assertEquals(Infinity, 1/bar(5)); -%OptimizeFunctionOnNextCall(bar); -assertEquals(-Infinity, 1/bar(-5)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1118.js b/implementation-contributed/v8/mjsunit/regress/regress-1118.js deleted file mode 100644 index 05b192d6f33..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1118.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// An exception thrown in a function optimized by on-stack replacement (OSR) -// should be able to construct a receiver from all optimized stack frames. - -function A() { } -A.prototype.f = function() { } - -function B() { } - -var o = new A(); - -// This function throws if o does not have an f property, and should not be -// inlined. -function g() { try { return o.f(); } finally { }} - -// This function should be optimized via OSR. -function h() { - for (var i = 0; i < 10; i++) %OptimizeOsr(); - g(); -} - -h(); -o = new B(); -assertThrows("h()"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1119.js b/implementation-contributed/v8/mjsunit/regress/regress-1119.js deleted file mode 100644 index 1163ca042e4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1119.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test runtime declaration of properties with var which are intercepted -// by JS accessors. - -this.__defineSetter__("x", function() { hasBeenInvoked = true; }); -this.__defineSetter__("y", function() { throw 'exception'; }); - -var hasBeenInvoked = false; -eval("try { } catch (e) { var x = false; }"); -assertTrue(hasBeenInvoked); - -// This has to run in global scope, so cannot use assertThrows... -try { - eval("try { } catch (e) { var y = false; }"); - assertUnreachable(); -} catch (e) { - assertEquals('exception', e); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1120.js b/implementation-contributed/v8/mjsunit/regress/regress-1120.js deleted file mode 100644 index c8c06aa5c18..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1120.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that retrieving the extensible value for the global object is -// working correctly and does not return the bit from the global proxy map. - -var obj = this; -Object.freeze(obj); -assertFalse(Object.isExtensible(obj)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1121.js b/implementation-contributed/v8/mjsunit/regress/regress-1121.js deleted file mode 100644 index 0ad29cc9630..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1121.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1121 - -// Test that changing Array.prototype.__proto__ keeps Array functions working. - -Array.prototype.__proto__ = null; -// pop has custom call generator, so we need some beefier function. -assertEquals([1, 2, 3], [1, 2, 3].slice()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1122.js b/implementation-contributed/v8/mjsunit/regress/regress-1122.js deleted file mode 100644 index 8f0bfb674b1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1122.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we can handle function calls with up to 32766 arguments, and -// that function calls with more arguments throw an exception. Apply a -// similar limit to the number of function parameters. - -// See http://code.google.com/p/v8/issues/detail?id=1122 and -// http://code.google.com/p/v8/issues/detail?id=1413. - -function function_with_n_params_and_m_args(n, m) { - test_prefix = 'prefix '; - test_suffix = ' suffix'; - var source = 'test_prefix + (function f('; - for (var arg = 0; arg < n ; arg++) { - if (arg != 0) source += ','; - source += 'arg' + arg; - } - source += ') { return arg' + (n - n % 2) / 2 + '; })('; - for (var arg = 0; arg < m ; arg++) { - if (arg != 0) source += ','; - source += arg; - } - source += ') + test_suffix'; - return eval(source); -} - -assertEquals('prefix 4000 suffix', - function_with_n_params_and_m_args(8000, 8000)); -assertEquals('prefix 3000 suffix', - function_with_n_params_and_m_args(6000, 8000)); -assertEquals('prefix 5000 suffix', - function_with_n_params_and_m_args(10000, 8000)); -assertEquals('prefix 9000 suffix', - function_with_n_params_and_m_args(18000, 18000)); -assertEquals('prefix 16000 suffix', - function_with_n_params_and_m_args(32000, 32000)); -assertEquals('prefix undefined suffix', - function_with_n_params_and_m_args(32000, 10000)); - -assertThrows("function_with_n_params_and_m_args(66000, 30000)"); -assertThrows("function_with_n_params_and_m_args(30000, 66000)"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1125.js b/implementation-contributed/v8/mjsunit/regress/regress-1125.js deleted file mode 100644 index b0e1cb72a66..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1125.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test a lot of updates to freshly created contexts. - -function f(x, y) { - with ("abcdefghijxxxxxxxxxx") - var y = {}; -} - -function g() { - f.apply(this, arguments); -} - -for (var i = 0; i < 150000; i++) { - g(i); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1126.js b/implementation-contributed/v8/mjsunit/regress/regress-1126.js deleted file mode 100644 index 303583b97ea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1126.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This should properly catch the exception from the setter triggered -// by the loaded file, and it should not fail an assertion in debug mode. - -try { - eval('--'); - assertUnreachable(); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1129.js b/implementation-contributed/v8/mjsunit/regress/regress-1129.js deleted file mode 100644 index 37bf9a81c59..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1129.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --verify-heap --expose-gc - -// This should not hit an assertion in debug mode. - -// Create RegExp that is syntactically correct, but throws a stack overflow -// during compilation. -var source = Array(50000).join("(") + "a" + Array(50000).join(")"); -var r = RegExp(source); -try { - // Try to compile in UC16 mode, and drop the exception. - r.test("\x80"); - assertUnreachable(); -} catch (e) { -} - -// Trigger a heap validation. -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1130.js b/implementation-contributed/v8/mjsunit/regress/regress-1130.js deleted file mode 100644 index 6ba430b04f2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1130.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that parser errors can be build up correctly even in the presence -// of JS accessors on Object's prototype elements. - -Object.prototype.__defineGetter__(0, function() { throw 42; } ); - -var exception = false; -try { - eval("(function() { const x; var x })")(); -} catch (e) { - exception = true; - assertTrue(e instanceof SyntaxError); -} -assertTrue(exception); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1131.js b/implementation-contributed/v8/mjsunit/regress/regress-1131.js deleted file mode 100644 index a1af9c90ca5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1131.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var nonArray = { length: 4, 0: 42, 2: 37, 0xf7da5000: undefined, 4: 0 }; -Array.prototype.sort.call(nonArray); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1132.js b/implementation-contributed/v8/mjsunit/regress/regress-1132.js deleted file mode 100644 index adb56b0fa8b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1132.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the case when exception is thrown from the parser when lazy -// compiling a function. - -// Flags: --stack-size=100 -// NOTE: stack size constant above has been empirically chosen. -// If the test starts to fail in Genesis, consider increasing this constant. - -function test() { - try { - test(1, test(1)); - } catch(e) { - assertFalse(delete e, "deleting catch variable"); - assertEquals(42, e); - } -} - -var exception = false; -try { - test(); -} catch (e) { - exception = true; -} -assertTrue(exception); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1134697.js b/implementation-contributed/v8/mjsunit/regress/regress-1134697.js deleted file mode 100644 index 3d851ae7751..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1134697.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test case for issue 1134697. -// Must run using valgrind. - -(-90).toPrecision(6); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-113924.js b/implementation-contributed/v8/mjsunit/regress/regress-113924.js deleted file mode 100644 index 3ecdec48f21..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-113924.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var count=12000; -while(count--) { - eval("var a = new Object(10); a[2] += 7;"); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-114.js b/implementation-contributed/v8/mjsunit/regress/regress-114.js deleted file mode 100644 index 6c1a6a348e6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-114.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// German eszett -assertEquals("FRIEDRICHSTRASSE 14", "friedrichstra\xDFe 14".toUpperCase()); -assertEquals("XXSSSSSSXX", "xx\xDF\xDF\xDFxx".toUpperCase()); -assertEquals("(SS)", "(\xDF)".toUpperCase()); -assertEquals("SS", "\xDF".toUpperCase()); - -// Turkish dotted upper-case I lower-case converts to two characters -assertEquals("i\u0307", "\u0130".toLowerCase()); -assertEquals("(i\u0307)", "(\u0130)".toLowerCase()); -assertEquals("xxi\u0307xx", "XX\u0130XX".toLowerCase()); - -// Greek small upsilon with dialytika and tonos upper-case converts to three -// characters -assertEquals("\u03A5\u0308\u0301", "\u03B0".toUpperCase()); -assertEquals("(\u03A5\u0308\u0301)", "(\u03B0)".toUpperCase()); -assertEquals("XX\u03A5\u0308\u0301XX", "xx\u03B0xx".toUpperCase()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1146.js b/implementation-contributed/v8/mjsunit/regress/regress-1146.js deleted file mode 100644 index e8028ce1d2f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1146.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test keyed calls with different key types. -function F() {} -var a = new F(); -function f(i) { return a[i](); } - -a.first = function() { return 11; } -a[0] = function() { return 22; } -var obj = {}; -a[obj] = function() { return 33; } - -// Make object slow-case. -a.foo = 0; -delete a.foo; -// Do multiple calls for IC transitions. -var b = "first"; -f(b); -f(b); - -assertEquals(11, f(b)); -assertEquals(22, f(0)); -assertEquals(33, f(obj)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1149.js b/implementation-contributed/v8/mjsunit/regress/regress-1149.js deleted file mode 100644 index d7a7d1b9109..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1149.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// We should not try to record duplicate bailout IDs for the 'left-hand -// side' of a for/in, even if it is a parameter in a function using the -// arguments object. - -function f(x) { - for (x in arguments) { - for (x in arguments) { - } - } -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1150.js b/implementation-contributed/v8/mjsunit/regress/regress-1150.js deleted file mode 100644 index 57f739a4ac3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1150.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that Object.keys is working correctly on the global object. - -var a = 10; -var global = (function () { return this; }) (); -var keys = Object.keys(global); -assertTrue(keys.indexOf("a") > 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1151.js b/implementation-contributed/v8/mjsunit/regress/regress-1151.js deleted file mode 100644 index 8d0bca90571..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1151.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we do not try to create prototypes on objects that has the, -// should_have_prototype flag set to false. - -__defineSetter__.__proto__ = function() {}; -__defineSetter__['prototype'] - -eval.__proto__ = function () { }; -eval['prototype'] = {}; - -// Test that we are compatible with Safari on prototypes set locally and -// on the actual prototype set using __proto__ on objects that has the -// should_have_prototype set to false. -function f() { return 42; } -f.prototype = 43; -__defineGetter__.__proto__ = f; - -// Regression test for not returning undefined. -assertEquals(__defineGetter__.prototype, 43); - -// Regression test for not crashing. -__defineGetter__.prototype = "foo"; -assertEquals(__defineGetter__.prototype, "foo"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-115100.js b/implementation-contributed/v8/mjsunit/regress/regress-115100.js deleted file mode 100644 index c917446eff0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-115100.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo(obj) { obj.prop = 0; } -function mk() { return Object.create(null); } - -foo(mk()); -foo(mk()); -%OptimizeFunctionOnNextCall(foo); -foo(mk()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-115452.js b/implementation-contributed/v8/mjsunit/regress/regress-115452.js deleted file mode 100644 index f745e1bad39..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-115452.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that a function declaration cannot overwrite a read-only property. - -function foobl() {} -assertTrue(typeof this.foobl == "function"); -assertTrue(Object.getOwnPropertyDescriptor(this, "foobl").writable); - -Object.defineProperty(this, "foobl", {value: 1, writable: false}); -assertSame(1, this.foobl); -assertFalse(Object.getOwnPropertyDescriptor(this, "foobl").writable); - -// This has to run in global scope, so cannot use assertThrows... -try { - eval("function foobl() {}"); // Should throw. - assertUnreachable(); -} catch (e) { - assertInstanceof(e, TypeError); -} -assertSame(1, this.foobl); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1156.js b/implementation-contributed/v8/mjsunit/regress/regress-1156.js deleted file mode 100644 index 344657816c0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1156.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we do not crash we invoke builtins from optimized code that -// is then deoptimized. - -function foo(a) { - delete a[1]; - delete a[2]; - delete a[3]; - delete a[4]; - delete a[5]; - return void 0; -} - -function call_and_deopt() { - var b = [1,2,3]; - foo(b); - foo(b); - %DeoptimizeFunction(foo); -} - -call_and_deopt(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-116.js b/implementation-contributed/v8/mjsunit/regress/regress-116.js deleted file mode 100644 index 7b4620ca1dd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-116.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var testCache = {}; -var doLookup = function(id) { - return testCache[id] = 'foo'; -}; - -var r2 = doLookup(0); -var r1 = doLookup([0]); - -assertFalse(r1 === testCache); -assertEquals('foo', r1); -assertEquals('f', r1[0]); -assertEquals('foo', r2); -assertEquals('f', r2[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1160.js b/implementation-contributed/v8/mjsunit/regress/regress-1160.js deleted file mode 100644 index 10d3bc3ed28..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1160.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1160 - -// Array.prototype.join uses a temporary array internally. Verify it -// does not crash and throws an illegal argument exception instead -// when keyed store on the array does not work as expected because of -// the setter on its prototype. - -var N = 10; -var array = Array(N); -for (var i = 0; i < N; ++i) { - array[i] = i; -} -Array.prototype.__defineSetter__(2, function() { }); -assertEquals("0,1,2,3,4,5,6,7,8,9", array.join(",")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1166.js b/implementation-contributed/v8/mjsunit/regress/regress-1166.js deleted file mode 100644 index 8278abae68e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1166.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Deoptimization after a short-circuit logical operation in an effect -// context should not see the value of the expression. -function observe(x, y) { return x; } - -function test(x) { return observe(1, ((false || false), x + 1)); } - -for (var i = 0; i < 5; ++i) test(0); -%OptimizeFunctionOnNextCall(test); -test(0); - -test("a"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1167.js b/implementation-contributed/v8/mjsunit/regress/regress-1167.js deleted file mode 100644 index 2206f3d0d05..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1167.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Deoptimization after a logical not in an effect context should not see a -// value for the logical not expression. -function test0(n) { - var a = new Array(n); - for (var i = 0; i < n; ++i) { - // ~ of a non-numeric value is used to trigger deoptimization. - a[i] = void(!(delete 'object')) % ~(delete 4); - } -} - -// OSR (after deoptimization) is used to observe the stack height mismatch. -for (var i = 0; i < 5; ++i) { - for (var j = 1; j < 12; ++j) { - test0(j * 1000); - } -} - - -// Similar test with a different subexpression of unary !. -function test1(n) { - var a = new Array(n); - for (var i = 0; i < n; ++i) { - a[i] = void(!(- 'object')) % ~(delete 4); - } -} - -for (i = 0; i < 5; ++i) { - for (j = 1; j < 12; ++j) { - test1(j * 1000); - } -} - - -// A similar issue, different subexpression of unary ! (e0 !== e1 is -// translated into !(e0 == e1)) and different effect context. -function side_effect() { } -function observe(x, y) { return x; } -function test2(x) { - return observe(this, - (((side_effect.observe <= side_effect.side_effect) !== false), - x + 1)); -} - -for (var i = 0; i < 5; ++i) test2(0); -%OptimizeFunctionOnNextCall(test2); -test2(0); -test2(test2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1170.js b/implementation-contributed/v8/mjsunit/regress/regress-1170.js deleted file mode 100644 index 5d5800ee373..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1170.js +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var setter_value = 0; - -this.__defineSetter__("a", function(v) { setter_value = v; }); -eval("var a = 1"); -assertEquals(1, setter_value); -assertFalse("value" in Object.getOwnPropertyDescriptor(this, "a")); - -eval("with({}) { eval('var a = 2') }"); -assertTrue("get" in Object.getOwnPropertyDescriptor(this, "a")); -assertFalse("value" in Object.getOwnPropertyDescriptor(this, "a")); -assertEquals(2, setter_value); - -// Function declarations are treated specially to match Safari. We do -// not call setters for them. -this.__defineSetter__("a", function(v) { assertUnreachable(); }); -eval("function a() {}"); -assertTrue("value" in Object.getOwnPropertyDescriptor(this, "a")); - -this.__defineSetter__("b", function(v) { setter_value = v; }); -try { - eval("const b = 3"); -} catch(e) { } -assertEquals(2, setter_value); - -try { - eval("with({}) { eval('const b = 23') }"); -} catch(e) { - assertInstanceof(e, TypeError); -} - -this.__defineSetter__("c", function(v) { throw 42; }); -try { - eval("var c = 1"); - assertUnreachable(); -} catch(e) { - assertEquals(42, e); - assertFalse("value" in Object.getOwnPropertyDescriptor(this, "c")); -} - - - - -__proto__.__defineSetter__("aa", function(v) { assertUnreachable(); }); -eval("var aa = 1"); -assertTrue(this.hasOwnProperty("aa")); - -__proto__.__defineSetter__("bb", function(v) { assertUnreachable(); }); -eval("with({}) { eval('var bb = 2') }"); -assertTrue(this.hasOwnProperty("bb")); - -// Function declarations are treated specially to match Safari. We do -// not call setters for them. -__proto__.__defineSetter__("cc", function(v) { assertUnreachable(); }); -eval("function cc() {}"); -assertTrue(this.hasOwnProperty("cc")); - -__proto__.__defineSetter__("dd", function(v) { assertUnreachable(); }); -try { - eval("const dd = 23"); -} catch(e) { - assertUnreachable(); -} - -try { - eval("with({}) { eval('const dd = 23') }"); -} catch(e) { - assertInstanceof(e, TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1172-bis.js b/implementation-contributed/v8/mjsunit/regress/regress-1172-bis.js deleted file mode 100644 index 01b637ce113..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1172-bis.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Verifies that exception thrown from JS accessors when attempting a call -// are properly treated. - -Object.prototype.__defineGetter__(0, function() { throw 42; }); -var exception = false; -try { - Object[0](); -} catch(e) { - exception = true; - assertEquals(42, e); -} -assertTrue(exception); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1172.js b/implementation-contributed/v8/mjsunit/regress/regress-1172.js deleted file mode 100644 index f5ef67b86ec..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1172.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that 'constructor' property is forcefully installed on -// function's prototype even in the presence of JS accessors. - -// Note: no setters would lead to runtime exception if we ever attempt -// to use JS accessors to set 'constructor' property. -Object.prototype.__defineGetter__('constructor', function() { throw 42; }); - -function f() {} -assertSame(f, f.prototype.constructor); - -var o = new f(); -assertSame(f, o.constructor); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1173979.js b/implementation-contributed/v8/mjsunit/regress/regress-1173979.js deleted file mode 100644 index 42649d0abf9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1173979.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Ensure that null only equals null and undefined, also for variables. - -var null_var = null; -var undef_var = [][0]; -var boolean_var = false; -var number_var = 0; -var string_var = ""; -var object_var = { foo : 0 }; - -assertTrue(null_var == null_var); -assertTrue(null_var == undef_var); -assertTrue(null_var != boolean_var); -assertTrue(null_var != number_var); -assertTrue(null_var != string_var); -assertTrue(null_var != object_var); - -assertTrue(undef_var == null_var); -assertTrue(boolean_var != null_var); -assertTrue(number_var != null_var); -assertTrue(string_var != null_var); -assertTrue(object_var != null_var); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1174.js b/implementation-contributed/v8/mjsunit/regress/regress-1174.js deleted file mode 100644 index 7c014bf02f4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1174.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we do not crash when doing deoptimization of a function that has -// reloc info that only take up 1 byte per call (like KeyedStoreIC). - -function Regular() { - this[0] >>= 0; - this[1] ^= 1; -} - -function foo() { - var regular = new Regular(); - %DeoptimizeFunction(Regular); -} - -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-117409.js b/implementation-contributed/v8/mjsunit/regress/regress-117409.js deleted file mode 100644 index 98aab5ac2d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-117409.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -function KeyedStoreIC(a) { a[0] = Math.E; } - -// Create literal with a fast double elements backing store -var literal = [1.2]; - -// Specialize the IC for fast double elements -KeyedStoreIC(literal); -KeyedStoreIC(literal); - -// Truncate array to 0 elements, at which point backing store will be replaced -// with empty fixed array. -literal.length = 0; - -// ArrayPush built-in will replace empty fixed array backing store with 19 -// elements fixed array backing store. This leads to a mismatch between the map -// and the backing store. Debug mode will crash here in set_elements accessor. -literal.push(Math.E, Math.E); - -// Corrupt the backing store! -KeyedStoreIC(literal); - -// Release mode will crash here when trying to visit parts of E as pointers. -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1175390.js b/implementation-contributed/v8/mjsunit/regress/regress-1175390.js deleted file mode 100644 index 7b1a7e077ad..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1175390.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --print-code --debug-code -// Simply ensure that we can generate comments without crashing. -a = 0; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1176.js b/implementation-contributed/v8/mjsunit/regress/regress-1176.js deleted file mode 100644 index 58eda1bf360..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1176.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict"; -function strict_delete_this() { - // "delete this" is allowed in strict mode. - delete this; -} -strict_delete_this(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1177518.js b/implementation-contributed/v8/mjsunit/regress/regress-1177518.js deleted file mode 100644 index 2ba3c119528..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1177518.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure that natives and delayed natives don't use methods from the global -// scope that could have been modified by input javascript. - -isFinite = 0; -Math.floor = 0; -Math.abs = 0; - -// uses Math.floor -assertEquals(4, parseInt(4.5)); - -// uses Math.abs, Math.floor and isFinite -assertEquals('string', typeof (new Date(9999)).toString()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1177809.js b/implementation-contributed/v8/mjsunit/regress/regress-1177809.js deleted file mode 100644 index 703e60739f5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1177809.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// The encoding of large pc jumps caused code to be overwritten with -// relocation information. We pass this test if it does not crash. - -String.fromCharCode(48,48,48,59,32,102,111,110,116,45,119,101,105,103,104,116,58,98,111,108,100,59,102,111,110,116,45,102,97,109,105,108,121,58,65,114,105,97,108,44,32,72,101,108,118,101,116,105,99,97,44,32,115,97,110,115,45,115,101,114,105,102,44,86,101,114,100,97,110,97,34,32,99,111,108,111,114,61,34,35,70,70,48,48,48,48,34,62,70,79,82,69,88,47,80,65,82,38,35,51,48,52,59,60,119,98,114,32,47,62,84,69,32,38,35,51,48,52,59,38,35,51,53,48,59,76,69,77,76,69,82,38,35,51,48,52,59,60,47,102,111,110,116,62,60,47,115,112,97,110,62,60,47,116,100,62,10,60,47,116,114,62,60,116,114,62,10,60,116,100,32,97,108,105,103,110,61,34,108,101,102,116,34,62,60,115,112,97,110,32,105,100,61,34,97,99,95,100,101,115,99,34,62,60,102,111,110,116,32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,49,112,120,59,32,99,111,108,111,114,58,35,48,48,48,48,48,48,59,32,102,111,110,116,45,102,97,109,105,108,121,58,65,114,105,97,108,44,32,72,101,108,118,101,116,105,99,97,44,32,115,97,110,115,45,115,101,114,105,102,44,86,101,114,100,97,110,97,34,62,38,112,111,117,110,100,59,47,36,32,50,32,112,105,112,44,32,89,84,76,32,49,50,32,112,105,112,44,65,108,116,38,35,51,48,53,59,110,32,51,32,99,101,110,116,46,32,83,97,98,105,116,32,83,112,114,101,97,100,45,84,38,117,117,109,108,59,114,60,119,98,114,32,47,62,107,32,66,97,110,107,97,115,38,35,51,48,53,59,32,65,86,65,78,84,65,74,73,60,47,102,111,110,116,62,60,47,115,112,97,110,62,60,47,116,100,62,10,60,47,116,114,62,60,116,114,62,10,60,116,100,32,97,108,105,103,110,61,34,108,101,102,116,34,62,60,100,105,118,32,105,100,61,34,97,99,95,117,114,108,34,62,60,102,111,110,116,32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,48,112,120,59,32,99,111,108,111,114,58,35,70,70,54,54,57,57,59,32,102,111,110,116,45,102,97,109,105,108,121,58,65,114,105,97,108,44,32,72,101,108,118,101,116,105,99,97,44,32,115,97,110,115,45,115,101,114,105,102,44,86,101,114,100,97,110,97,34,62,119,119,119,46,104,101,100,101,102,111,60,119,98,114,32,47,62,110,108,105,110,101,46,99,111,109,60,47,102,111,110,116,62,60,47,100,105,118,62,60,47,116,100,62,60,47,116,114,62,60,47,116,97,98,108,101,62,60,47,116,100,62,60,47,116,114,62,60,116,114,62,10,60,116,100,32,99,108,97,115,115,61,34,97,99,95,107,97,114,105,109,34,32,104,101,105,103,104,116,61,34,50,48,37,34,32,98,103,99,111,108,111,114,61,34,35,70,70,70,70,70,70,34,32,105,100,61,34,116,97,119,52,34,32,97,108,105,103,110,61,34,108,101,102,116,34,32,118,97,108,105,103,110,61,34,109,105,100,100,108,101,34,32,111,110,70,111,99,117,115,61,34,115,115,40,39,103,111,32,116,111,32,119,119,119,46,107,97,108,101,100,101,60,119,98,114,32,47,62,46,99,111,109,39,44,39,97,119,52,39,41,34,32,111,110,77,111,117,115,101,79,118,101,114,61,34,115,115,40,39,103,111,32,116,111,32,119,119,119,46,107,97,108,101,100,101,60,119,98,114,32,47,62,46,99,111,109,39,44,39,97,119,52,39,41,34,32,32,111,110,77,111,117,115,101,79,117,116,61,34,99,115,40,41,34,32,111,110,67,108,105,99,107,61,34,103,97,40,39,104,116,116,112,58,47,47,97,100,115,101,114,118,101,114,46,109,121,110,101,116,46,99,111,109,47,65,100,83,101,114,118,101,114,47,99,108,105,99,107,46,106,115,112,63,117,114,108,61,56,56,49,48,48,50,53,49,50,49,55,54,51,57,52,54,50,51,49,56,52,52,48,51,57,54,48,48,54,51,49,51,54,54,52,52,56,50,56,54,50,48,49,49,49,52,55,51,55,54,52,51,50,57,50,52,50,56,51,53,56,51,54,53,48,48,48,48,53,56,49,55,50,56,57,53,48,48,52,49,57,48,54,56,56,55,50,56,49,55,48,55,53,48,57,50,55,53,55,57,57,51,54,53,50,52,54,49,51,56,49,57,53,55,52,53,50,49,52,50,55,54,48,57,53,57,56,52,55,50,55,48,56,52,51,49,54,52,49,54,57,53,48,56,57,50,54,54,54,48,57,49,54,53,55,57,48,57,49,55,57,52,55,52,55,57,50,48,55,50,55,51,51,53,51,50,55,53,50,54,55,50,56,48,51,57,49,56,54,50,56,55,49,51,55,48,52,51,49,51,52,55,56,51,54,51,52,53,50,54,55,53,57,48,57,48,56,54,57,49,52,53,49,49,52,55,53,50,120,49,57,50,88,49,54,56,88,51,56,88,52,49,88,56,48,56,48,88,65,39,41,34,32,115,116,121,108,101,61,34,99,117,114,115,111,114,58,112,111,105,110,116,101,114,34,62,10,60,116,97,98,108,101,32,119,105,100,116,104,61,34,49,53,54,34,32,98,111,114,100,101,114,61,34,48,34,32,99,101,108,108,115,112,97,99,105,110,103,61,34,49,34,32,99,101,108,108,112,97,100,100,105,110,103,61,34,49,34,62,10,60,116,114,62,10,32,32,60,116,100,32,97,108,105,103,110,61,34,108,101,102,116,34,32,62,60,115,112,97,110,32,105,100,61,34,97,99,95,116,105,116,108,101,34,62,60,102,111,110,116,32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,50,112,120,59,32,99,111,108,111,114,58,35,70,70,48,48,48,48,59,32,102,111,110,116,45,119,101,105,103,104,116,58,98,111,108,100,59,102,111,110,116,45,102,97,109,105,108,121,58,65,114,105,97,108,44,32,72,101,108,118,101,116,105,99,97,44,32,115,97,110,115,45,115,101,114,105,102,44,86,101,114,100,97,110,97,34,32,99,111,108,111,114,61,34,35,70,70,48,48,48,48,34,62,66,108,117,101,32,72,111,117,115,101,32,77,105,107,115,101,114,39,100,101,32,38,35,51,53,48,59,111,107,33,60,47,102,111,110,116,62,60,47,115,112,97,110,62,60,47,116,100,62,10,60,47,116,114,62,60,116,114,62,10,60,116,100,32,97,108,105,103,110,61,34,108,101,102,116,34,62,60,115,112,97,110,32,105,100,61,34,97,99,95,100,101,115,99,34,62,60,102,111,110,116,32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,49,112,120,59,32,99,111,108,111,114,58,35,48,48,48,48,48,48,59,32,102,111,110,116,45,102,97,109,105,108,121,58,65,114,105,97,108,44,32,72,101,108,118,101,116,105,99,97,44,32,115,97,110,115,45,115,101,114,105,102,44,86,101,114,100,97,110,97,34,62,66,108,117,101,32,72,111,117,115,101,32,77,105,107,115,101,114,39,100,101,32,65,110,110,101,108,101,114,101,32,38,79,117,109,108,59,122,101,108,32,70,105,121,97,116,32,83,65,68,69,67,69,32,50,57,44,57,54,32,89,84,76,33,60,47,102,111,110,116,62,60,47,115,112,97,110,62,60,47,116,100,62,10,60,47,116,114,62,60,116,114,62,10,60,116,100,32,97,108,105,103,110,61,34,108,101,102,116,34,62,60,100,105,118,32,105,100,61,34,97,99,95,117,114,108,34,62,60,102,111,110,116,32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,48,112,120,59,32,99,111,108,111,114,58,35,70,70,54,54,57,57,59,32,102,111,110,116,45,102,97,109,105,108,121,58,65,114,105,97,108,44,32,72,101,108,118,101,116,105,99,97,44,32,115,97,110,115,45,115,101,114,105,102,44,86,101,114,100,97,110,97,34,62,119,119,119,46,107,97,108,101,100,101,60,119,98,114,32,47,62,46,99,111,109,60,47,102,111,110,116,62,60,47,100,105,118,62,60,47,116,100,62,60,47,116,114,62,60,47,116,97,98,108,101,62,60,47,116,100,62,60,47,116,114,62,60,116,114,62,10,60,116,100,32,99,108,97,115,115,61,34,97,99,95,107,97,114,105,109,34,32,104,101,105,103,104,116,61,34,50,48,37,34,32,98,103,99,111,108,111,114,61,34,35,70,70,70,70,70,70,34,32,105,100,61,34,116,97,119,53,34,32,97,108,105,103,110,61,34,108,101,102,116,34,32,118,97,108,105,103,110,61,34,109,105,100,100,108,101,34,32,111,110,70,111,99,117,115,61,34,115,115,40,39,103,111,32,116,111,32,119,119,119,46,98,105,116,109,101,100,60,119,98,114,32,47,62,101,110,46,99,111,109,39,44,39,97,119,53,39,41,34,32,111,110,77,111,117,115,101,79,118,101,114,61,34,115,115,40,39,103,111,32,116,111,32,119,119,119,46,98,105,116,109,101,100,60,119,98,114,32,47,62,101,110,46,99,111,109,39,44,39,97,119,53,39,41,34,32,32,111,110,77,111,117,115,101,79,117,116,61,34,99,115,40,41,34,32,111,110,67,108,105,99,107,61,34,103,97,40,39,104,116,116,112,58,47,47,97,100,115,101,114,118,101,114,46,109,121,110,101,116,46,99,111,109,47,65,100,83,101,114,118,101,114,47,99,108,105,99,107,46,106,115,112,63,117,114,108,61,51,51,54,49,55,53,56,50,56,51,56,50,53,52,57,55,54,49,48) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-117794.js b/implementation-contributed/v8/mjsunit/regress/regress-117794.js deleted file mode 100644 index 5e11b40035f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-117794.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Loads specialized to be from the global object should not omit the -// smi check on the receiver. The code below should not crash. - -print = function() {} - -function constructor() {}; - -function assertHasOwnProperties(object, limit) { - for (var i = 0; i < limit; i++) { } -} - -try { - Object.keys(); -} catch(exc2) { - print(exc2.stack); -} - -var x1 = new Object(); - -try { - new Function("A Man Called Horse", x1.d); -} catch(exc3) { - print(exc3.stack); -} - -try { - (-(true)).toPrecision(0x30, 'lib1-f1'); -} catch(exc1) { - print(exc1.stack); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1178598.js b/implementation-contributed/v8/mjsunit/regress/regress-1178598.js deleted file mode 100644 index cca5016d6b7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1178598.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test cases for issue 1178598. - - -// Make sure that catch variables can be accessed using eval. -var value = (function() { - var result; - try { - throw 42; - } catch (e) { - result = eval("e"); - } - return result; -})(); - -assertEquals(42, value); - - - -// Make sure that heap-allocated locals for catch variables aren't -// visible outside the catch scope and that they are visible from -// within. -var value = (function() { - var result; - try { - throw 87; - } catch(e) { - // Force the 'e' variable to be heap-allocated - // by capturing it in a function closure. - (function() { e; }); - result = eval("e"); - } - - // Expect accessing 'e' to yield an exception because - // it is not defined in the current scope. - try { - eval("e"); - assertTrue(false); // should throw exception - } catch(exception) { - assertTrue(exception instanceof ReferenceError); - return result; - } -})(); - -assertEquals(87, value); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1181.js b/implementation-contributed/v8/mjsunit/regress/regress-1181.js deleted file mode 100644 index d5b8ab1797d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1181.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// The first count times, test is called with an integer argument and -// crankshaft produces code for int32 representation. Test that the -// implementation correctly deoptimizes. - -// Flags: --allow-natives-syntax - -function test(x) { - var xp = x * 1 - 1; - return xp; -} - - -function check(count) { - %DeoptimizeFunction(test); - var i; - for(var x=0; x < count; x++){ - for(var y=0; y < count; y++){ - i = test(x / 100); - } - } - assertEquals((count - 1) / 100, i + 1); -} - - -check(150); -check(200); -check(350); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1184.js b/implementation-contributed/v8/mjsunit/regress/regress-1184.js deleted file mode 100644 index 0bb1b3c0b9e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1184.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the case when finally clause throws another exception (stack overflow) -// which goes through some try/catch block---we need to clear v8::TryCatch -// catcher as it doesn't catch original exception any more. - -o = {}; -o.__defineGetter__('foo', function() { throw 42; }); -function f() { - try { - // throw below sets up Top::thread_local_.catcher_... - throw 42; - } finally { - // ...JS accessor traverses v8 runtime/JS boundary and - // when coming back from JS to v8 runtime, retraverses - // stack with catcher set while processing exception - // which is not caught by external try catch. - try { o.foo; } catch(e) { }; - return; - } -}; -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1187524.js b/implementation-contributed/v8/mjsunit/regress/regress-1187524.js deleted file mode 100644 index 2aeb1c51703..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1187524.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure we don't die on conversion to Smi in string indexing - -assertEquals(undefined, ""[0x40000000]); -assertEquals(undefined, ""[0x80000000]); -assertEquals(undefined, ""[-1]); -assertEquals(undefined, ""[-0x40000001]); -assertEquals(undefined, ""[-0x80000000]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-119429.js b/implementation-contributed/v8/mjsunit/regress/regress-119429.js deleted file mode 100644 index 859702ac7e9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-119429.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var d = 0; -function recurse() { - if (++d == 25135) { // A magic number just below stack overflow on ia32 - %HandleDebuggerStatement(); - } - recurse(); -} -assertThrows(function() { recurse();} ); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-119925.js b/implementation-contributed/v8/mjsunit/regress/regress-119925.js deleted file mode 100644 index 67127548c3d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-119925.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the throw is not inlined if object literals cannot be -// inlined. -Array.prototype.__proto__ = { 77e4 : null }; -function continueWithinLoop() { - for (var key in [(1.2)]) { } -}; -continueWithinLoop(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1199401.js b/implementation-contributed/v8/mjsunit/regress/regress-1199401.js deleted file mode 100644 index cc7985d820e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1199401.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Ensure that we can correctly change the sign of the most negative smi. - -// Possible Smi ranges. -var ranges = [{min: -1073741824, max: 1073741823, bits: 31}, - {min: -2147483648, max: 2147483647, bits: 32}]; - -for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var min_smi = range.min; - var max_smi = range.max; - var bits = range.bits; - var name = bits + "-bit"; - - var result = max_smi + 1; - - // Min smi as literal - assertEquals(result, eval(min_smi + " * -1"), name + "-litconmult"); - assertEquals(result, eval(min_smi + " / -1"), name + "-litcondiv"); - assertEquals(result, eval("-(" + min_smi + ")"), name + "-litneg"); - assertEquals(result, eval("0 - (" + min_smi + ")")), name + "-conlitsub"; - - // As variable: - assertEquals(result, min_smi * -1, name + "-varconmult"); - assertEquals(result, min_smi / -1, name + "-varcondiv"); - assertEquals(result, -min_smi, name + "-varneg"); - assertEquals(result, 0 - min_smi, name + "-convarsub"); - - // Only variables: - var zero = 0; - var minus_one = -1; - - assertEquals(result, min_smi * minus_one, name + "-varvarmult"); - assertEquals(result, min_smi / minus_one, name + "-varvardiv"); - assertEquals(result, zero - min_smi, name + "-varvarsub"); - - // Constants as variables - assertEquals(result, eval(min_smi + " * minus_one"), name + "-litvarmult"); - assertEquals(result, eval(min_smi + " / minus_one"), name + "-litvarmdiv"); - assertEquals(result, eval("0 - (" + min_smi + ")"), name + "-varlitsub"); - - var half_min_smi = -(1 << (bits >> 1)); - var half_max_smi = 1 << ((bits - 1) >> 1); - - assertEquals(max_smi + 1, -half_min_smi * half_max_smi, name + "-half1"); - assertEquals(max_smi + 1, half_min_smi * -half_max_smi, name + "-half2"); - assertEquals(max_smi + 1, half_max_smi * -half_min_smi, name + "-half3"); - assertEquals(max_smi + 1, -half_max_smi * half_min_smi, name + "-half4"); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1199637.js b/implementation-contributed/v8/mjsunit/regress/regress-1199637.js deleted file mode 100644 index 763484d8505..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1199637.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Make sure that we can introduce global variables that shadow even -// READ_ONLY variables in the prototype chain. -var NONE = 0; -var READ_ONLY = 1; - -function AddNamedProperty(object, name, value, attrs) { - Object.defineProperty(object, name, { - value, - configurable: true, - enumerable: true, - writable: (attrs & READ_ONLY) === 0 - }); -} - -// Use DeclareGlobal... -AddNamedProperty(this.__proto__, "a", 1234, NONE); -assertEquals(1234, a); -eval("var a = 5678;"); -assertEquals(5678, a); - -AddNamedProperty(this.__proto__, "b", 1234, NONE); -assertEquals(1234, b); -eval("var b = 5678;"); -assertEquals(5678, b); - -AddNamedProperty(this.__proto__, "c", 1234, READ_ONLY); -assertEquals(1234, c); -eval("var c = 5678;"); -assertEquals(5678, c); - -AddNamedProperty(this.__proto__, "d", 1234, READ_ONLY); -assertEquals(1234, d); -eval("var d = 5678;"); -assertEquals(5678, d); - -// Use DeclareContextSlot... -AddNamedProperty(this.__proto__, "x", 1234, NONE); -assertEquals(1234, x); -eval("with({}) { var x = 5678; }"); -assertEquals(5678, x); - -AddNamedProperty(this.__proto__, "y", 1234, NONE); -assertEquals(1234, y); -eval("with({}) { var y = 5678; }"); -assertEquals(5678, y); - -AddNamedProperty(this.__proto__, "z", 1234, READ_ONLY); -assertEquals(1234, z); -eval("with({}) { var z = 5678; }"); -assertEquals(5678, z); - -AddNamedProperty(this.__proto__, "w", 1234, READ_ONLY); -assertEquals(1234, w); -eval("with({}) { var w = 5678; }"); -assertEquals(5678, w); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1200351.js b/implementation-contributed/v8/mjsunit/regress/regress-1200351.js deleted file mode 100644 index f752a1e1a40..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1200351.js +++ /dev/null @@ -1,2032 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure the 'constructor' property isn't enumerable. -var enums = ""; -for (var k in this) enums += (k + '|'); -assertEquals(-1, enums.split('|').indexOf("constructor")); - -// Make sure this doesn't crash. -new this.constructor; -new this.constructor(); -new this.constructor(1,2,3,4,5,6); - -var x = 0; -try { - eval("SetValueOf(typeof(break.prototype.name), Math.max(typeof(break)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export Join((void), false.className(), null instanceof continue, return 'a', 0.__defineGetter__(x,function(){native}))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ void&&null.push(goto NaN) : Math.max(undef).toText }) { {-1/null,1.isNull} }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new break>>>=native.charCodeAt(-1.valueOf())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Number(this > native)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new {native,0.2}?continue+undef:IsSmi(0.2)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = break.toString()&&return continue") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (-1==continue.toJSONProtocol, GetFunctionFor(break.call(NaN)), (!new RegExp).prototype.new Object()<>>=GetFunctionFor(-1) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (parseFloat(NaN).splice() in null.add(1).className()) { true[0.2]< 0) { print (e.message); } }; - -try { - eval("let (debugger.constructor.valueOf()) { this.sort().true.splice() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("unescape(break.toObject()).prototype.new RegExp.continue.__lookupGetter__(x.slice(1, NaN)) = typeof(null.push(0.2))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(Iterator(continue.pop()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return new RegExp.shift().concat({debugger,continue}) }; X(return goto 0)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(0.add(break)&&x > null)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ eval(Array(x)) : 1.call('a').superConstructor }) { debugger.lastIndex.toLocaleString() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = return true.__defineGetter__(this,function(){0.2})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new typeof(0)&this.lastIndex") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("String(new RegExp.call(1)).prototype.unescape(parseFloat(-1)) = false< 0) { print (e.message); } }; - -try { - eval("with ({ 1+debugger.valueOf() : continue.join().name() }) { parseInt(true)==undef.sort() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new RegExp>>0.2.superConstructor.prototype.eval(void).className() = false.join().prototype.name") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export (new Object()?undef:native)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new null.isNull.slice(x.prototype.value, Iterator(undef))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export function () { 0.2 }.unshift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Math.max(continue.valueOf())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = return debugger.toObject()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (-1.length+new Object().prototype.name) { case (debugger.constructor.sort()): IsPrimitive(undef.__defineSetter__(undef,function(){native})); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete (!new Object().toLocaleString())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(0<<'a'>>>=new RegExp['a'])") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native {unescape(true),new RegExp.isNull}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = -1.lastIndexOf(false)?parseFloat(void):Join(null, continue, new Object(), x, break)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label null/void-break.__lookupGetter__(native)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(0.2.join().constructor)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label function () { false }.__lookupGetter__(this==1)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(-1.prototype.0.2.unshift())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new return goto -1") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new {Number(debugger)}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (parseInt(break) instanceof 0.length) { this.(!0.2) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(break.superConstructor[throw new false(true)], this.~x)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(function () { IsSmi(-1) }, unescape(IsPrimitive(void)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (new RegExp.join().className() in new Object().length()>>true.toObject()) { parseFloat(escape(debugger)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new String(debugger).toJSONProtocol") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(1.indexOf('a')< 0) { print (e.message); } }; - -try { - eval("const x = new {parseInt(0)}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(void.join().add(escape(undef)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native parseFloat(false.charAt(new RegExp))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(~Iterator(void))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(NaN.shift().toJSONProtocol)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(native-debugger< 0) { print (e.message); } }; - -try { - eval("x = parseFloat(~new Object())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (null.size/true.add(void) in 0+continue&true.null) { continue.toObject()/throw new true(debugger) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (Iterator(native+break) in debugger.superConstructor.constructor) { Math.max(0.add(undef)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new {-1.add(native),true.sort()}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new {IsSmi(break),throw new 'a'(null)}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (parseInt(0).length()) { case ('a'.toObject().__defineSetter__(GetFunctionFor(null),function(){(!x)})): IsSmi(void).constructor; break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new 0.lastIndexOf(NaN).shift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ 0>>>=this.lastIndex : new Object().lastIndexOf(true).toObject() }) { x.lastIndex > 1.__defineSetter__(false,function(){this}) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ throw new false(0.2).prototype.name : parseFloat(false)+(!debugger) }) { escape(undef.lastIndex) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Math.pow(0.2).toJSONProtocol.prototype.break.superConstructor.slice(NaN.exec(undef), -1.lastIndexOf(NaN)) = true.splice().length") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native continue.className().constructor") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (0.2.isNull&undef.toString()) { continue/void+parseInt(null) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new Math.pow(break==this)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(continue.__lookupGetter__(null).constructor, debugger.filter(0.2)>>>=this.'a')") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ 0.2.unshift() > true.size : return Math.max(new RegExp) }) { void.splice().toString() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new unescape(false).unshift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return this.true?'a'==this:0.2.__lookupGetter__(void) }; X(Iterator(false).length)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = function () { null }.__defineSetter__(0.charCodeAt(new Object()),function(){null>>>=new Object()})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import goto 'a'.charAt(native.className())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import 0.2.isNull.__lookupGetter__(debugger.size)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (~new Object().push(Array(null)) in new RegExp>>>=void.prototype.name) { goto break.lastIndex }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete String(x).slice(String('a'), parseFloat(false))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new parseInt(continue.__defineGetter__(0.2,function(){1}))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(true.concat(undef)==0.2.new RegExp)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return NaN['a']?-1.exec(0):NaN.prototype.this }; X(native.prototype.name.toLocaleString())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (debugger==continue.toObject(), Array(NaN.className()), Math.max(new RegExp).prototype.value) { GetFunctionFor('a').prototype.value }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new parseInt(break)==Array(x)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (parseInt(0.2.charCodeAt(this)), this.continue.prototype.name, native.superConstructor.superConstructor) { Join(0.__defineGetter__(continue,function(){undef}), {1}, parseFloat(0), undef.__defineSetter__(break,function(){null}), x?-1:-1) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export Join(debugger.splice(), parseInt(NaN), new RegExp.pop(), this.false, x.-1)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = Math.max(native).charCodeAt(continue==break)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (void==NaN.sort(), new Object()==new RegExp.toObject(), -1/NaN.unshift()) { GetFunctionFor(true).name() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for ((!'a'.join()), ~NaN.__defineGetter__(undef,function(){this}), Math.pow(NaN).__lookupGetter__(typeof(false))) { throw new debugger.toObject()(Math.max(-1)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (NaN.shift()&&undef&&continue in throw new x(NaN).prototype.-1&x) { return native.toJSONProtocol }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new (0).charAt(this.charCodeAt(new Object()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return x.valueOf().size }; X(0.2.unshift().unshift())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (eval(new Object().valueOf())) { break.prototype.name.__defineGetter__(eval(NaN),function(){Math.max(native)}) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (Math.pow(1).isNull in Iterator(continue.length())) { Join(true, 0.2, null, x, new Object()).length }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(0>>>=void.unshift(), void.exec('a').undef.length())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete throw new this(0.2).pop()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Iterator(unescape(continue))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return unescape(goto debugger) }; X(new RegExp.push(break).name())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = undef/'a'.indexOf(-1.exec(false))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (continue.isNull.filter(this.toText), function () { throw new 'a'(0.2) }, native?break:undef.prototype.return continue) { Array(void.toText) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new this.slice(new Object(), 1).isNull") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (0.2.className().call((!debugger)), native.__defineGetter__(0,function(){x}).name(), null.splice().splice()) { NaN.charCodeAt(new Object()) > true.toString() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native false.length?new RegExp instanceof this:Array(undef)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new ~0.2.call(typeof(false))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Number(0.2.sort())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new x.join().shift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (~new Object().toText) { case (new RegExp.unshift().exec(new RegExp< 0) { print (e.message); } }; - -try { - eval("new parseInt(~true)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new unescape(debugger.call(null))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new GetFunctionFor(0.2).toObject()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete IsPrimitive(null.join())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (eval(0.2) instanceof debugger.splice() in null.superConstructor==new Object()&void) { Number(0+x) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let ('a'-continue?null.length():escape(continue)) { return undef.push(false.shift()) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (Array(x.length) in 'a'.length().sort()) { goto (new Object()) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (NaN==true.length) { IsPrimitive(0.2).prototype.value }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(return true&&void, new RegExp.toObject().length())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Math.pow(void).length") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(void.add(continue).charCodeAt(this.toObject()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export Join(break.toObject(), 0.2.isNull, false.call(0), break.filter(break), 1.length())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (1/NaN.__lookupGetter__(undef.prototype.value)) { escape(eval(this)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(Join(unescape(x), new RegExp.__defineGetter__(debugger,function(){NaN}), 'a'.indexOf(0.2), false.prototype.name, (this)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new Math.pow(native).indexOf(1>>>=-1)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new RegExp?native:continue.join().prototype.Math.max(x.__defineSetter__(1,function(){continue})) = parseFloat(parseInt(null))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native function () { new RegExp }.new RegExp.pop()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import typeof(new RegExp.valueOf())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (0.2.size>>NaN-continue) { case ('a'.push(true).indexOf(NaN.lastIndexOf(-1))): {0.2,x}.toObject(); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (IsSmi(new Object())/false.filter('a')) { function () { Iterator(debugger) } }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = break.lastIndex.size") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(new Object() > 0.length())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native IsPrimitive(continue)==break.charCodeAt(new Object())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new break.true<<'a'-NaN") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Number(-1?'a':-1)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (parseFloat('a'.exec(continue)) in (!new RegExp)&&0.2.toObject()) { {true,x}.add(void.prototype.NaN) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (-1.prototype.value.join()) { (!1.prototype.name) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new GetFunctionFor(continue).toJSONProtocol") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (Math.pow(continue.slice(null, native)), goto (!0), native?1:this.charAt(String(debugger))) { parseFloat(~this) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(debugger.pop().length, new RegExp.isNull.toText)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (typeof(new RegExp.slice(new RegExp, 0)) in native.toLocaleString().lastIndexOf(0.2.length())) { native>>>=new RegExp.length() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native x.join().className()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new 0?0:true.toLocaleString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = IsPrimitive(0).concat(new Object().name())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new parseFloat(x)?this.valueOf():IsSmi(x)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new 'a'.slice(null, -1).shift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label 'a'+void.concat('a'>>>=-1)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(escape(0.length))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = parseInt(0.lastIndexOf(NaN))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(null&debugger.valueOf(), 0[false].push(false.add(debugger)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = parseInt(new RegExp.__lookupGetter__(break))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(~false&&break>>0, new RegExp.lastIndex.add({this}))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = Join(break, continue, 0, debugger, NaN).toLocaleString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import new Object().sort().superConstructor") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new IsSmi(goto -1)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return Iterator(null).toObject() }; X(-1==new Object()==0.__lookupGetter__(native))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native void.join().add(parseFloat(continue))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (function () { -1 }.shift()) { escape(1.unshift()) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(new RegExp.indexOf(1).filter(continue instanceof break))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (NaN?continue:NaN.shift()) { native.push(null).add(new Object().superConstructor) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return new Object().length().toText }; X(debugger.indexOf(this).toText)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new Object().call('a').charCodeAt(native.size)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new function () { continue }.add(true.slice(continue, new RegExp))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x[native] instanceof -1.join().prototype.this.null.size = 0.2.prototype.x+0.2.indexOf(false)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (this instanceof new RegExp.splice() in null>>>=new RegExp.valueOf()) { function () { unescape(1) } }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (true.shift()/native.null in undef.call(NaN).isNull) { native+this-x.size }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return false.pop()<>x))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if ({parseFloat(null),Math.max(native)}) { 0.2-new Object().__lookupGetter__(eval(new Object())) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(Array(1).toLocaleString(), null.name().exec(undef.filter(false)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(true.filter(this).pop())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (break.lastIndex.superConstructor) { new Object().toString().length() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label (!0.2/debugger)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ NaN.concat(new RegExp)+Join(1, false, new Object(), new Object(), x) : unescape(x).concat(Iterator(-1)) }) { 'a'.isNull.__lookupGetter__(this+native) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export break.name()/IsPrimitive(this)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new {null}.prototype.value") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new true+false.__lookupGetter__(null&continue)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (-1.push(new RegExp)[void.valueOf()]) { new RegExp.className().__lookupGetter__(Array(0)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export NaN.__lookupGetter__(undef).__lookupGetter__(void.isNull)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ ~new RegExp.filter(undef&&this) : String(continue)< 0) { print (e.message); } }; - -try { - eval("for (true&void.exec(void.exec(continue)) in Join('a', undef, new Object(), continue, x) instanceof {undef}) { unescape(-1.prototype.name) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import void.push(true).join()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf({break}&x.name(), 1.charAt(false).slice(continue.superConstructor, this&&break))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (this.call(this) > Iterator(continue)) { new Object().prototype.value.slice(1.slice(native, -1), (!false)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export parseInt(new RegExp>>>=x)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (escape(x==debugger), NaN.shift()&debugger?false:0.2, (!new RegExp)&goto break) { unescape(x.toText) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(throw new NaN.toObject()(this?break:true))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new (typeof(this))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (unescape('a'/0) in ~new Object().lastIndex) { IsSmi(0).push(0.concat(0.2)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("(!new RegExp)[0.2 > new Object()].prototype.Number(debugger.join()) = native&-1.size") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new false.toJSONProtocol&&0.2.constructor") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (~0?0.2:undef in new RegExp.charCodeAt(0).prototype.name) { NaN.toLocaleString().splice() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (~IsPrimitive(new RegExp), true.toString().size, null.charCodeAt('a') > null.concat(0)) { break.toJSONProtocol/IsPrimitive(break) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new parseInt(new Object()).lastIndexOf(NaN > void)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export break.splice()&&-1.prototype.new Object()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("{{true,0}}.prototype.break.length.splice() = 'a'.toText.superConstructor") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (debugger>>>=continue > break.exec(1)) { Math.pow(new RegExp)==NaN>>>=0.2 }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ 0.2==0.2/goto true : IsSmi(native).isNull }) { throw new {x,null}(false.className()) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = {false.concat(null),Math.pow(NaN)}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export Array(null).add(NaN.valueOf())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (parseFloat(new Object()==true) in GetFunctionFor('a'&false)) { native&undef.toJSONProtocol }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new {eval(null),(debugger)}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import {this.0,debugger.filter(NaN)}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import break.charAt(-1)< 0) { print (e.message); } }; - -try { - eval("x = goto false > new Object()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("null.superConstructor[debugger.isNull].prototype.Math.max('a').shift() = parseInt(0).size") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native eval(void.add(break))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(x > void.join())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ {this.toObject()} : Number(NaN).toJSONProtocol }) { 0.2.className().prototype.name }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (false.__defineGetter__(undef,function(){undef}).exec(NaN.splice())) { typeof(Join(void, new RegExp, break, -1, -1)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (false.splice().toObject(), continue.name().size, Join(void?debugger:this, new RegExp.__defineSetter__(NaN,function(){NaN}), x.unshift(), this.true, parseInt(break))) { undef< 0) { print (e.message); } }; - -try { - eval("let (this.0.indexOf(break)) { break.charAt(this).unshift() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import Join(new Object().splice(), this instanceof 1, parseFloat(NaN), undef.concat(x), void.className())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(goto NaN.toString())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label 'a'< 0) { print (e.message); } }; - -try { - eval("const x = Iterator(continue)[new Object()>>NaN]") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = Join(new RegExp, 'a', this, void, true)>>>=continue>>native") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import new Object().toJSONProtocol.splice()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return undef.__defineSetter__(native,function(){void}).toJSONProtocol }; X(eval(x).charCodeAt('a'.concat(true)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(throw new 0.2.__defineGetter__(NaN,function(){-1})(void&&new RegExp))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = 0.unshift() > IsSmi(NaN)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label x.call(null).lastIndex") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(IsSmi(0.2.add(0)), x.add(break).this.__defineGetter__(undef,function(){new RegExp}))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native Number(this).toObject()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new NaN.shift().add(String(new Object()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new null.name().splice()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = 1.undef.push(new Object().call(null))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(parseInt(1).size)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = this.x.sort()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(continue.valueOf().prototype.new RegExp.splice())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(this.charAt(continue)?undef+'a':unescape(1))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf({throw new 'a'(0.2),void.lastIndexOf(NaN)}, Math.pow(new Object().className()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (1.slice(new Object(), this).valueOf()) { parseInt(true).pop() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ 0.2.superConstructor.lastIndex : goto debugger< 0) { print (e.message); } }; - -try { - eval("-1.exec(debugger).length.prototype.debugger > null.slice(Iterator(void), continue.concat(0)) = parseInt(throw new 1(1))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(new Object().constructor.call(Number(1)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new null.unshift().call(escape(x))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (Math.pow(native).toLocaleString()) { case (false instanceof native.join()): Math.pow(NaN).size; break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label function () { new Object() }.prototype.true.size") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = Join('a', 0.2, false, new Object(), void).continue.className()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = IsPrimitive(break.__lookupGetter__(-1))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new Object()>>0.2.prototype.name") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new IsPrimitive(new Object()).shift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (Array(parseInt(break))) { 'a'.toString().unshift() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = return 0.2>>>=-1?undef:undef") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Object().splice().unshift().prototype.null&&native.__lookupGetter__(undef>>>=NaN) = (1< 0) { print (e.message); } }; - -try { - eval("delete NaN.charAt(1).concat(NaN.0.2)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(new RegExp.sort().toJSONProtocol)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return GetFunctionFor(false).lastIndexOf(1.shift()) }; X(this.0.2.charCodeAt(0.2))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (goto NaN.toObject(), ~true.'a', parseInt(debugger)+eval(false)) { eval(0.2.constructor) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (parseInt(debugger).pop()) { case (this.push(true).valueOf()): Join(continue, debugger, native, native, debugger).filter(Array(continue)); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new debugger.sort() instanceof this>>1") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ parseFloat(false).prototype.(!new Object()) : {unescape(-1)} }) { Math.max(new RegExp.superConstructor) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate({Math.pow(break)})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import typeof(break.valueOf())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(Math.pow(-1[new RegExp]))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native IsPrimitive(1).concat({x,null})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("NaN.length.prototype.value.prototype.function () { null==new Object() } = break.name()&IsPrimitive(0)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete NaN.prototype.-1.toString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new continue.unshift()+parseFloat(undef)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new NaN-break.call(false.pop())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native new RegExp.exec(break).pop()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf({'a',null}.prototype.value, 1.shift() instanceof {'a',0})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (debugger.valueOf().size, function () { x.unshift() }, IsSmi(1)&&true==native) { new Object().__defineGetter__(this,function(){'a'})&&eval(native) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export 'a'.pop().charCodeAt(x.className())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export String(IsSmi(debugger))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("typeof(debugger).valueOf().prototype.(1).lastIndexOf(this.break) = x.prototype.name.toLocaleString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native Array(typeof(false))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(1.__defineGetter__(1,function(){1}).null.constructor)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = 1.charAt(0).toObject()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(Math.max('a'.filter(new Object())))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(void.prototype.name.unshift())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (-1.toJSONProtocol.call(-1.size) in ~x.sort()) { eval(0&debugger) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for ('a'==undef.join() in Math.pow(IsSmi(false))) { undef > this>>goto x }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate('a'.constructor.isNull)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (GetFunctionFor(this.slice(0.2, this)), this.prototype.void?null.unshift():native.className(), Number(new Object().call(-1))) { 0.splice() > debugger&&this }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ {goto new RegExp,Join(new Object(), native, continue, -1, x)} : NaN&x/{0,break} }) { this.lastIndexOf(new RegExp).join() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (typeof(break.length())) { native&&false.sort() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new parseFloat(-1 instanceof break)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label throw new continue.unshift()(null.shift())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import Math.max(0.2.toLocaleString())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return false.unshift().className() }; X(escape(NaN&NaN))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(Join(native.toText, goto x, 0.2.splice(), Join('a', 0, void, NaN, 1), eval(native)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (GetFunctionFor(true.prototype.name)) { parseInt(NaN).toLocaleString() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new escape(native).__defineSetter__(return native,function(){undef > native})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new typeof(true > 'a')") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (debugger.prototype.0.2< 0) { print (e.message); } }; - -try { - eval("label true-NaN.prototype.native.shift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new typeof(new RegExp.splice())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (function () { this.NaN }) { case (this.continue.prototype.parseFloat(false)): IsPrimitive(new Object()-'a'); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export break.__lookupGetter__(debugger).indexOf(native.pop())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (GetFunctionFor(NaN.lastIndex)) { case (new RegExp.lastIndex.toLocaleString()): NaN.join().indexOf(eval(-1)); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native {void.charAt(true)}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new new Object()==NaN.join()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(typeof(Array(new Object())))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label throw new (false)(eval(x))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new new RegExp.size.charAt(true > -1)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = debugger.toObject().charAt(this< 0) { print (e.message); } }; - -try { - eval("with ({ 'a'.valueOf()+parseInt(undef) : IsPrimitive(null).lastIndex }) { NaN.toObject().isNull }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new new Object()&&void.lastIndexOf(0.2.splice())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ 1+1.name() : Join(Math.pow(debugger), new RegExp-1, x > 1, x<<-1, new RegExp.size) }) { undef[undef].size }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete native.call(-1).isNull") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (new Object()>>>=break==Math.pow(debugger)) { IsPrimitive(this).lastIndex }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for ((!x&&new RegExp) in undef.toLocaleString().slice(new RegExp.indexOf(NaN), IsPrimitive(-1))) { false.size+debugger[x] }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import 0.length.__defineGetter__(0.2.shift(),function(){'a'.className()})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(goto new Object().push(void))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ Array(this.0) : parseFloat(void).pop() }) { escape(true).slice(continue.lastIndex, false.toObject()) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new native==true.filter({NaN,-1})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for ('a'.__defineSetter__(continue,function(){-1}).unshift(), Array(undef).toLocaleString(), undef.__lookupGetter__(void).toLocaleString()) { parseInt(false/native) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("this.x<>Math.max(true)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return this.prototype.name.splice() }; X(unescape(x).__lookupGetter__(Number(debugger)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new (!NaN).unshift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(escape(Iterator(this)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return Number(new RegExp)< 0) { print (e.message); } }; - -try { - eval("export this.void.splice()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (this.prototype.null.sort() in -1.className()&void.filter(new Object())) { GetFunctionFor(new Object()).pop() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label 0[break].sort()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (null.length().toString(), eval(-1).toObject(), (!continue.concat(continue))) { true.name()/native< 0) { print (e.message); } }; - -try { - eval("for (unescape(null).sort(), Number(undef).charCodeAt(IsPrimitive(NaN)), null>>true/null.join()) { 0.2.toObject() > IsPrimitive(new RegExp) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date({NaN,native}&&1+undef)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(IsPrimitive(undef>>>=1))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (Join(true, 'a', true, 1, NaN).add({1}), GetFunctionFor(new Object().push(new Object())), goto 1.length) { Math.pow(GetFunctionFor(native)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return break.isNull > parseInt(continue) }; X((new RegExp instanceof 1))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ Number(false).indexOf(x instanceof new Object()) : function () { x.toString() } }) { false.name().indexOf(GetFunctionFor(null)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date('a'.constructor.prototype.name)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("GetFunctionFor(void&new Object()).prototype.debugger.add(null)[void.unshift()] = new RegExp.isNull.Iterator(this)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete false?break:undef.constructor") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ (native.filter(1)) : eval(this&&0.2) }) { undef.length instanceof new Object().toText }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export String(break.lastIndexOf(null))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label (!Iterator(new RegExp))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(String(null==-1), {1&0})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(parseInt('a' > 0))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(debugger.toJSONProtocol.indexOf(escape(0)), this.filter(null).__defineSetter__(continue.break,function(){debugger>>null}))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("this.name().length().prototype.goto false.exec(true.charCodeAt(continue)) = Join(-1-false, undef.superConstructor, 'a'.shift(), (!x), NaN.this)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(typeof(new RegExp).sort())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new 0.2.concat(x).splice()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (goto void.indexOf(throw new x(1)), typeof(return new RegExp), IsPrimitive(-1).add(void.lastIndexOf(debugger))) { null.indexOf(void).toText }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("return new RegExp.pop().prototype.String(x.toObject()) = 1.superConstructor.charCodeAt(new RegExp.charCodeAt(null))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new null&true.prototype.name") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = -1>>>=NaN.indexOf((debugger))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new parseFloat(null).splice()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import -1.lastIndexOf(new RegExp) instanceof throw new void(0.2)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if ((0.shift())) { Join(IsPrimitive(-1), break.__defineSetter__(true,function(){break}), parseInt(null), parseFloat(break), true/null) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new escape(1 > continue)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (parseInt(undef)>>false.filter(continue)) { case (this.undef/new Object()): 'a'.toJSONProtocol.__defineGetter__(new RegExp-undef,function(){parseFloat(new RegExp)}); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("{void}.shift().prototype.this.Array(new Object()) = {0.2,new RegExp}.lastIndexOf(break.splice())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new continue&&new Object().lastIndexOf(new Object() instanceof 1)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (throw new 'a'.exec(x)(return false), native/void.constructor, {native}==true.toLocaleString()) { goto 1 instanceof 1.isNull }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (break.concat(break) > native>>>=-1, (debugger.x), Join(x, void, void, new RegExp, null).name()) { void.charCodeAt(true).valueOf() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new 'a'>>0 instanceof new Object().push(new RegExp)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (return ~break) { break.__defineGetter__(break,function(){-1}).shift() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(Join(null, -1, undef, null, 0).toString())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let ({new RegExp,void}.slice(break.isNull, false.shift())) { eval(debugger.slice(this, 1)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return {GetFunctionFor(0)} }; X('a'.prototype.debugger.concat(void.constructor))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (~true instanceof continue) { escape(new RegExp.toObject()) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("escape(0[native]).prototype.debugger.add(1).unshift() = (true.join())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (unescape(void).length, undef.toObject() instanceof x.toObject(), 0.2+true.concat(true.__lookupGetter__(this))) { (x).toJSONProtocol }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(escape(null).__lookupGetter__(undef.size))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label Array(continue[false])") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return Number(this&&false) }; X(NaN.toJSONProtocol.toJSONProtocol)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("null.toString().shift().prototype.Array(x).__lookupGetter__('a'.prototype.x) = {1.length,break.join()}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new 1.charCodeAt(break)+IsSmi(false)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(String(this) > 0.2.toText, new RegExp.length.lastIndexOf(1<<0.2))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (new RegExp.pop().charAt(IsSmi(new RegExp))) { case (native.indexOf(this)/native.lastIndex): this.debugger.indexOf(debugger); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(Number(x)[debugger.prototype.break])") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return new RegExp>>>=x.unshift() }; X(Math.max(continue.name()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(IsSmi(null.size))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = native?0.2:1+GetFunctionFor(void)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (IsPrimitive(-1)>>>=break.valueOf() in String(0 > 0.2)) { Math.max(true.length()) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (escape(unescape(NaN))) { case (Math.pow(eval(undef))): true.charAt(null)&new RegExp.pop(); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete Join(new RegExp, 1, false, new Object(), this).toLocaleString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label return x.filter(x.join())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new new RegExp.pop().shift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new (!debugger.size)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label Math.max(debugger.__lookupGetter__(NaN))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(eval(debugger[debugger]))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new 0.2.filter(true)&throw new true(debugger)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(continue.exec(debugger) > Math.pow(0.2))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("void.prototype.value.name().prototype.Number(undef&NaN) = false.__lookupGetter__(-1).name()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(null.__defineGetter__(native,function(){continue}).valueOf())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ {new Object()[continue],native.length()} : undef.name().superConstructor }) { Math.pow(break).indexOf(0.toJSONProtocol) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (Iterator(native.call(new RegExp))) { case (String(new RegExp).isNull): goto new RegExp.pop(); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new x.constructor instanceof undef.indexOf(-1)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(this.~null, continue.pop()&0&'a')") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (GetFunctionFor(~0)) { case ('a'.'a'< 0) { print (e.message); } }; - -try { - eval("function X(x) { return debugger.unshift().0.toString() }; X(Number(break).0.2>>>=false)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(Iterator(x)/undef.pop())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(undef.join().toLocaleString(), null.add(false).valueOf())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("IsSmi(x).toString().prototype.0>>continue.indexOf(NaN.__lookupGetter__(new Object())) = ~-1&typeof(0)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (continue.__lookupGetter__(new RegExp).toObject(), false-0.toString(), return native.sort()) { new RegExp.name().className() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (escape(new RegExp).toString()) { case (goto eval(1)): this.filter(new Object()).call(new RegExp.slice(null, this)); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = debugger-false.toText") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = Number(null>>new RegExp)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete this&native.indexOf('a'.splice())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(~Math.max(break), 0.2.valueOf().length)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(Number(native.charCodeAt(x)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new goto continue.add(0)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete typeof(debugger).name()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("'a'< 0) { print (e.message); } }; - -try { - eval("native 'a'.indexOf(debugger).charAt(NaN.add(new Object()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(break>>false.toString(), (false.indexOf(this)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete goto NaN==(!debugger)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(0.2.join().superConstructor)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new this.void.toLocaleString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("SetValueOf(x.exec(debugger)[GetFunctionFor(0)], native.toObject().exec(new RegExp.sort()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(0.2.valueOf().toLocaleString())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(-1.toJSONProtocol.prototype.name)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(Array(-1.shift()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export break.concat(undef).unshift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native parseFloat(-1)?NaN.toText:debugger.toString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (void-continue/continue.prototype.undef in String(break.toText)) { parseInt(false).isNull }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(true.isNull.toObject())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ typeof(debugger).toObject() : x.constructor>>>=null.__defineGetter__(native,function(){debugger}) }) { unescape(undef.lastIndexOf(false)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export unescape(continue)< 0) { print (e.message); } }; - -try { - eval("if (String(0).unescape(debugger)) { {break.pop(),0.2.constructor} }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("String({true}).prototype.break.length.call(false > 0.2) = GetFunctionFor(0.prototype.new RegExp)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ false.push(0.2).indexOf(Math.max(debugger)) : x&x.prototype.name }) { goto 1.lastIndex }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(0.2.lastIndex&0.2?break:NaN)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = -1.prototype.value.toText") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import native.toLocaleString()-1.prototype.0") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export debugger[-1].indexOf(Join(new Object(), 0, x, new Object(), 0.2))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return (!true).lastIndexOf(true.splice()) }; X(NaN.toString().prototype.value)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return continue.slice(-1, 1).prototype.true.name() }; X('a'.push(void).prototype.value)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (goto new RegExp.length(), x.sort().className(), Math.max(new RegExp.toJSONProtocol)) { (IsSmi(-1)) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = 0.splice()&&-1.sort()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (Math.max(-1>>1)) { break.toLocaleString().toJSONProtocol }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new {void.prototype.break,new RegExp.toString()}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new IsSmi(debugger).name()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new 'a'.concat(undef).sort()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new {debugger.toObject(),'a' > false}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (goto 1.concat(Join(x, undef, native, x, new Object()))) { new RegExp.prototype.name==new RegExp.superConstructor }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return new Object().__defineGetter__(0.2,function(){0.2}).length() }; X(void.isNull< 0) { print (e.message); } }; - -try { - eval("delete continue.toJSONProtocol.toLocaleString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (continue.constructor.toObject() in true&&undef.toJSONProtocol) { String(0+break) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import true.call(continue)>>break.toString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label escape(this) > Math.pow(new RegExp)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new {void}/IsSmi(new Object())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (native==null?debugger.prototype.name:null.toLocaleString()) { case (NaN.push(this).join()): (break instanceof continue); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new Math.pow(x.push(0))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new (Array(NaN))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label IsSmi(new RegExp).toLocaleString()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label NaN.push(1).shift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("{escape(undef),debugger.filter(0.2)}.prototype.-1 > new RegExp[0.2.valueOf()] = new RegExp.prototype.value.splice()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new Join(0.2, x, continue, debugger, new Object()).size") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("with ({ Number(null).name() : Math.pow(true).__defineGetter__(debugger.toString(),function(){false+0.2}) }) { this.{x,break} }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Math.pow(goto debugger)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = IsPrimitive(void.pop())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new Object().toString().toJSONProtocol") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(this.String(0.2))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let ({-1.call(new RegExp)}) { break.length().splice() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import null.size.__defineGetter__(void.filter(x),function(){null.pop()})") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new IsPrimitive(null.superConstructor)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new eval(-1.prototype.continue)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (typeof(Iterator('a'))) { case (0.constructor>>~1): void.__defineGetter__(void,function(){1})/GetFunctionFor(0); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for (false instanceof x.add(true.charAt(new RegExp)) in Join(undef.lastIndexOf(break), 0.2.add(new Object()), Iterator(1), {'a',x}, Array(new Object()))) { function () { null }/1&&-1 }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new escape('a'.concat(undef))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(Math.pow(NaN).toText)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new throw new 0(NaN).className()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete String(GetFunctionFor(new Object()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = Iterator(new Object()).charAt((0.2))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Number(undef.charAt(1)).prototype.undef.lastIndexOf(true).slice(1.className(), undef.filter(-1)) = null< 0) { print (e.message); } }; - -try { - eval("x = {Math.max(1),IsSmi(new Object())}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch (new Object().exec(0).isNull) { case (escape(IsSmi(false))): false.toObject()-null.size; break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new 'a'.__defineSetter__(debugger,function(){false}).name()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = debugger?-1:0+true.prototype.1") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new {false instanceof continue,native.size}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("GetFunctionFor(continue.__lookupGetter__(0.2)).prototype.Math.max(1.splice()) = true.__defineGetter__(undef,function(){NaN}).filter(String(new RegExp))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("null.size-1.toLocaleString().prototype.(this).shift() = GetFunctionFor(native.charAt(break))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate((!null.indexOf(-1)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = {break.sort()}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new throw new debugger.splice()(this.__lookupGetter__(undef))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("unescape(x[native]).prototype.0.splice().-1.prototype.true = x.prototype.value.className()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export x+true.length") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export debugger.indexOf(-1).indexOf(true.constructor)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("for ({break}.exec(new Object().continue) in eval(0.2.charAt(new Object()))) { throw new null.length(null?break:-1) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = NaN.toLocaleString().toObject()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return Math.pow(break+false) }; X(Join(true.add(new Object()), null[-1], new RegExp[true], NaN&&debugger, x.charAt(undef)))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("switch ((break).add(true.sort())) { case (undef.charAt(native).__defineGetter__(IsPrimitive(1),function(){NaN< this.charCodeAt(this); break; }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import return 0.2.length") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("continue.join().toText.prototype.Number(debugger).slice(new RegExp.-1, (NaN)) = function () { (!null) }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export Number(break.__lookupGetter__(false))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Date(return null/x)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export Number(undef).shift()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = 1[native]/this&true") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete typeof(debugger.unshift())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import x.charAt(false)&-1>>x") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("if (null.toText.superConstructor) { typeof(-1).toString() }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (parseFloat(continue.superConstructor)) { 0.2.toText.prototype.value }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label parseInt(IsSmi(null))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete new Object().valueOf().indexOf(true-x)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new unescape(1.__defineGetter__(new Object(),function(){x}))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("let (undef.size.splice()) { 1.constructor.charCodeAt(0+'a') }") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("this.new RegExp.pop().prototype.eval(debugger).toJSONProtocol = unescape(continue).valueOf()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("const x = new this.new RegExp.indexOf(unescape(new Object()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = new break instanceof false instanceof native.length()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate(parseFloat(x).valueOf())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label {escape(true),Math.max(null)}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("'a'>>>=void.prototype.value.prototype.break.prototype.break.indexOf(0.className()) = (!this&native)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("import Number(NaN).push(IsSmi(break))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("export true.exec(void).toObject()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function({'a',true}/eval(new Object()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("label null.concat(null).toObject()") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("native {0.2.length,new RegExp.lastIndexOf(-1)}") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("function X(x) { return Math.max({0.2}) }; X(true.charCodeAt(null).add(new RegExp.name()))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("delete -1.lastIndex.length") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("new Function(0.2[1].call(true > break))") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("Instantiate('a'.toLocaleString().splice())") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; - -try { - eval("x = typeof(void&&void)") -} catch (e) { if (e.message.length > 0) { print (e.message); } }; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-120099.js b/implementation-contributed/v8/mjsunit/regress/regress-120099.js deleted file mode 100644 index 3b06f4da2cc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-120099.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -'use strict'; - -var a = Object.create(Object.prototype); -var b = Object.create(Object.prototype); -assertFalse(a === b); - -Object.defineProperty(a, 'x', { value: 1 }); -assertTrue(a.x === 1); -assertTrue(b.x === undefined); - -b.x = 2; -assertTrue(a.x === 1); -assertTrue(b.x === 2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1203459.js b/implementation-contributed/v8/mjsunit/regress/regress-1203459.js deleted file mode 100644 index da1e0eda129..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1203459.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Ensure that we allow non-index number properties in object literals. -var obj = { 0.2 : 'a' } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1207.js b/implementation-contributed/v8/mjsunit/regress/regress-1207.js deleted file mode 100644 index 102178abba4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1207.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test throwing an exception from instanceof. -try { -var object = { }; -function fib(n) { - var f0 = (object instanceof encodeURI)('#2: var x = 1; x <= 1 === true'), f1 = 1; -} -fib(75); -} catch (o) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1209.js b/implementation-contributed/v8/mjsunit/regress/regress-1209.js deleted file mode 100644 index c017fb51073..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1209.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function crashMe(n) { - var nasty = []; - while (n--) - nasty.push("a" + 0); - return Function.apply(null, nasty); -} -crashMe(64 + 1).length; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1210.js b/implementation-contributed/v8/mjsunit/regress/regress-1210.js deleted file mode 100644 index 43500e7ba17..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1210.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Deoptimization of the key expression in an arguments access should see -// the arguments object as the value of the receiver. - -var a = 0; - -function observe(x, y) { return x; } - -function side_effect(x) { a = x; } - -function test() { - // We will trigger deoptimization of 'a + 0' which should bail out to - // immediately after the call to 'side_effect' (i.e., still in the key - // subexpression of the arguments access). - return observe(a, arguments[side_effect(a), a + 0]); -} - -// Run enough to optimize assuming global 'a' is a smi. -for (var i = 0; i < 10; ++i) test(0); -%OptimizeFunctionOnNextCall(test); -test(0); - -a = "hello"; -test(0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1213.js b/implementation-contributed/v8/mjsunit/regress/regress-1213.js deleted file mode 100644 index d66e3cefc4f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1213.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we do not allow overwriting a global property with a -// redeclaration that makes the property configurable (and hence -// deletable). - -var x = 0; - -function TestGlobal() { - for (var i = 0; i < 2; i++) { - x = x + 1; - } - this.eval('function x() {};'); - delete this['x']; -} - -TestGlobal(); -TestGlobal(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1213516.js b/implementation-contributed/v8/mjsunit/regress/regress-1213516.js deleted file mode 100644 index 6703f326041..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1213516.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function run() { - var a = 0; - L: try { - throw "x"; - } catch(x) { - break L; - } finally { - a = 1; - } - assertEquals(1, a); -} - -run(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-121407.js b/implementation-contributed/v8/mjsunit/regress/regress-121407.js deleted file mode 100644 index 44037081847..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-121407.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var a = [0,1,2,3]; -a[2000000] = 2000000; -a.length=2000; -for (var i = 0; i <= 256; i++) { - a[i] = new Object(); -} - -a = [0.5,1.5,2.5,3.5,4.5,5.5]; -a[2000000] = 2000000; -a.length=2000; -for (var i = 0; i <= 256; i++) { - a[i] = new Object(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1215.js b/implementation-contributed/v8/mjsunit/regress/regress-1215.js deleted file mode 100644 index 93a89f6a3fb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1215.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure that the "message" property on Error.prototype -// has the following descriptor: -// {writable: true, enumerable: false, and configurable: true} - -var desc = Object.getOwnPropertyDescriptor(Error.prototype, 'message'); - -assertEquals(desc.writable, true); -assertEquals(desc.enumerable, false); -assertEquals(desc.configurable, true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1215653.js b/implementation-contributed/v8/mjsunit/regress/regress-1215653.js deleted file mode 100644 index 881e22c021b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1215653.js +++ /dev/null @@ -1,365 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure this doesn't crash the VM. - -var caught = false; -try { - OverflowParserStack(); - assertTrue(false); -} catch (e) { - assertTrue(e instanceof RangeError); - caught = true; -} -assertTrue(caught); - - -function OverflowParserStack() { - var s = - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" + - "(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("; - eval(s); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1218.js b/implementation-contributed/v8/mjsunit/regress/regress-1218.js deleted file mode 100644 index dd036edbd7c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1218.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Builtin functions should not have prototype objects. -assertFalse(Error.prototype.toString.hasOwnProperty("prototype")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1233.js b/implementation-contributed/v8/mjsunit/regress/regress-1233.js deleted file mode 100644 index a09b7152121..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1233.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that Object.freeze and Object.getOwnPropertyDescriptor do not -// call toString or valueOf on members of the object. - -// See http://code.google.com/p/v8/issues/detail?id=1233. - - -var delicate = new Object(); -delicate.toString = function(){ throw Error("toString"); }; -delicate.valueOf = function(){ throw Error("valueOf"); }; - -var x = { foo: delicate }; - -var status = "fail"; -try { - Object.getOwnPropertyDescriptor(x, "foo"); - Object.freeze(x); - status = "succeed"; -} catch (e) {} - -assertEquals("succeed", status); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-123512.js b/implementation-contributed/v8/mjsunit/regress/regress-123512.js deleted file mode 100644 index 8a747bc5f7c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-123512.js +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that boilerplate objects for array literals with non-constant -// elements (which will contain the hole at non-constant positions) will -// not cause prototype chain lookups when generating optimized code. - -function f(x) { - return [x][0]; -} - -// Test data element on prototype. -Object.prototype[0] = 23; -assertSame(1, f(1)); -assertSame(2, f(2)); -%OptimizeFunctionOnNextCall(f); -assertSame(3, f(3)); -%DeoptimizeFunction(f); - -// Test accessor element on prototype. -Object.prototype.__defineGetter__(0, function() { throw Error(); }); -assertSame(4, f(4)); -assertSame(5, f(5)); -%OptimizeFunctionOnNextCall(f); -assertSame(6, f(6)); -%DeoptimizeFunction(f); - -// Test the same on boilerplate objects for object literals that contain -// both non-constant properties and non-constant elements. - -function g(x, y) { - var o = { foo:x, 0:y }; - return o.foo + o[0]; -} - -// Test data property and element on prototype. -Object.prototype[0] = 23; -Object.prototype.foo = 42; -assertSame(3, g(1, 2)); -assertSame(5, g(2, 3)); -%OptimizeFunctionOnNextCall(g); -assertSame(7, g(3, 4)); -%DeoptimizeFunction(g); - -// Test accessor property and element on prototype. -Object.prototype.__defineGetter__(0, function() { throw Error(); }); -Object.prototype.__defineGetter__('foo', function() { throw Error(); }); -assertSame(3, g(1, 2)); -assertSame(5, g(2, 3)); -%OptimizeFunctionOnNextCall(g); -assertSame(7, g(3, 4)); -%DeoptimizeFunction(g); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1236.js b/implementation-contributed/v8/mjsunit/regress/regress-1236.js deleted file mode 100644 index 48e3d3d3779..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1236.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should not crash. - -pattern = RegExp("",""); // RegExp is irrelevant, as long as it's not an atom. -string = 'a'; // Anything non-empty (flat ASCII). -pattern.exec(string); // Ensure that JSRegExp is compiled. -pattern["@"] = 42; // Change layout of JSRegExp object. -pattern.exec(string); // Call again to trigger bug in stub. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1237.js b/implementation-contributed/v8/mjsunit/regress/regress-1237.js deleted file mode 100644 index 111df803f47..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1237.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Deoptimization after a conditional expression in an effect context should -// not see the value of the expression. -function observe(x, y) { return x; } -function test(x) { - return observe(1, ((x? observe(observe.prototype.x): 'c'), x + 1)); -} - -for (var i = 0; i < 5; ++i) test(0); -%OptimizeFunctionOnNextCall(test); -test(0); - -test("a"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-123919.js b/implementation-contributed/v8/mjsunit/regress/regress-123919.js deleted file mode 100644 index be3460815bd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-123919.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --gc-global - -function g(max,val) { - this.x = 0; - for (var i = 0; i < max; i++) { - this.x = i/100; - } - this.val = val; -} - -function f(max) { - var val = 0.5; - var obj = new g(max,val); - assertSame(val, obj.val); -} - -f(1); -f(1); -%OptimizeFunctionOnNextCall(f); -f(200000); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-124.js b/implementation-contributed/v8/mjsunit/regress/regress-124.js deleted file mode 100644 index 119746797d0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-124.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals("[object global]", this.toString()); -assertEquals("[object Undefined]", toString()); - -assertEquals("[object global]", eval("this.toString()")); -assertEquals("[object Undefined]", eval("toString()")); - -assertEquals("[object global]", eval("var f; this.toString()")); -assertEquals("[object Undefined]", eval("var f; toString()")); - - -function F(f) { - assertEquals("[object global]", this.toString()); - assertEquals("[object Undefined]", toString()); - - assertEquals("[object global]", eval("this.toString()")); - assertEquals("[object Undefined]", eval("toString()")); - - assertEquals("[object global]", eval("var f; this.toString()")); - assertEquals("[object Undefined]", eval("var f; toString()")); - - assertEquals("[object Undefined]", eval("f()")); - - // Receiver should be the arguments object here. - assertEquals("[object Arguments]", eval("arguments[0]()")); - with (arguments) { - assertEquals("[object Arguments]", toString()); - } -} - -F(Object.prototype.toString); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1240.js b/implementation-contributed/v8/mjsunit/regress/regress-1240.js deleted file mode 100644 index 57d72b0a5a1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1240.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This regression tests that we are not allowed to overwrite an existing -// non-configurable getter with a new getter. In addition, we should not -// be able to change the configurable flag from false to true. - -var a = {}; -Object.defineProperty(a, 'b', - { get: function () { return 42; }, configurable: false }); -// Do not allow us to redefine b on a. -try { - a.__defineGetter__('b', function _b(){ return 'foo'; }); -} catch (e) {} -assertEquals(42, a.b); -var desc = Object.getOwnPropertyDescriptor(a, 'b'); -assertFalse(desc.configurable); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-124594.js b/implementation-contributed/v8/mjsunit/regress/regress-124594.js deleted file mode 100644 index d51e1f661c9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-124594.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -// Test that a GC inside a constructor frame is correctly handled right -// after we deoptimize from an inlined constructor to a constructor stub -// stack frame. - -function f(deopt) { - var x = 1; - if (deopt) { - x = x + "foo"; - gc(); - } - this.x = x; -} - -function g(deopt) { - return new f(deopt); -} - -assertEquals({x:1}, g(false)); -assertEquals({x:1}, g(false)); -%OptimizeFunctionOnNextCall(g); -assertEquals({x:"1foo"}, g(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1254366.js b/implementation-contributed/v8/mjsunit/regress/regress-1254366.js deleted file mode 100644 index 9acda3c19b5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1254366.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function gee() {}; - -Object.prototype.findOrStore = function() { - var z = this.vvv = gee; - return z; -}; - -var a = new Object(); -assertEquals(gee, a.findOrStore()); -assertEquals(gee, a.findOrStore()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-125515.js b/implementation-contributed/v8/mjsunit/regress/regress-125515.js deleted file mode 100644 index 91650ceb8fd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-125515.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --debug-code - -function test(a) { - a[0] = 1.5; - assertEquals(0, a.length = 0); -} -a = new Array(); -test(a); -test(a); -// Make sure that a ends up in old space -gc(); -gc(); -test(a); -test(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1257.js b/implementation-contributed/v8/mjsunit/regress/regress-1257.js deleted file mode 100644 index c5ed14dd3ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1257.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g(y) { assertEquals(y, 12); } - -var X = 0; - -function foo () { - var cnt = 0; - var l = -1; - var x = 0; - while (1) switch (l) { - case -1: - var y = x + 12; - l = 0; - break; - case 0: - if (cnt++ == 5) { - %OptimizeOsr(); - l = 1; - } - break; - case 1: - // This case will contain deoptimization - // because it has no type feedback. - g(y); - return; - }; -} - -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-126412.js b/implementation-contributed/v8/mjsunit/regress/regress-126412.js deleted file mode 100644 index 0677f70913d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-126412.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"".match(/(A{9999999999}B|C*)*D/); -"C".match(/(A{9999999999}B|C*)*D/); -"".match(/(A{9999999999}B|C*)*/ ); -"C".match(/(A{9999999999}B|C*)*/ ); -"".match(/(9u|(2\`shj{2147483649,}\r|3|f|y|3*)+8\B)\W93+/); -"9u8 ".match(/(9u|(2\`shj{2147483649,}\r|3|f|y|3*)+8\B)\W93+/); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1278.js b/implementation-contributed/v8/mjsunit/regress/regress-1278.js deleted file mode 100644 index 7ad8cda7250..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1278.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1278 - -// Test that that handling of 0/-0 is correct for binary operations when the -// TypeRecordingBinaryOpStub transitions through different states. - -function add(x, y) { - return x + y; -} - -function sub(x, y) { - return x - y; -} - -function mul(x, y) { - return x * y; -} - -function div(x, y) { - return x / y; -} - -for (var i = 0; i < 10; i++) { - assertEquals(0, add(0, 0)); - assertEquals(0, add(0, -0)); - assertEquals(0, add(-0, 0)); - assertEquals(-0, add(-0, -0)); - - assertEquals(0, sub(0, 0)); - assertEquals(0, sub(0, -0)); - assertEquals(-0, sub(-0, 0)); - assertEquals(0, sub(-0, -0)); - - assertEquals(0, mul(0, 0)); - assertEquals(-0, mul(0, -0)); - assertEquals(-0, mul(-0, 0)); - assertEquals(0, mul(-0, -0)); - - assertEquals(0, div(0, 1)); - assertEquals(-0, div(0, -1)); - assertEquals(-0, div(-0, 1)); - assertEquals(0, div(-0, -1)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-128018.js b/implementation-contributed/v8/mjsunit/regress/regress-128018.js deleted file mode 100644 index 7bd15858e6c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-128018.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -function KeyedStoreIC(a) { a[(1)] = Math.E; } -var literal = [1.2]; -literal.length = 0; -literal.push('0' && 0 ); -KeyedStoreIC(literal); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-128146.js b/implementation-contributed/v8/mjsunit/regress/regress-128146.js deleted file mode 100644 index 730dd91065e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-128146.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Define accessor properties, resulting in an AccessorPair with 2 transitions. -Object.defineProperty({},"foo",{set:function(){},configurable:false}); -Object.defineProperty({},"foo",{get:function(){},configurable:false}); - -// Define a data property under the same name. -Object.defineProperty({},"foo",{}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1309.js b/implementation-contributed/v8/mjsunit/regress/regress-1309.js deleted file mode 100644 index 122e59153f3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1309.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -var o = Object.preventExtensions({}); -assertThrows("o.__proto__ = {}"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-131923.js b/implementation-contributed/v8/mjsunit/regress/regress-131923.js deleted file mode 100644 index 58da07cb91f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-131923.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertFalse(/\u9999{4}/.test("")); -assertTrue(/\u9999{0,4}/.test("")); -assertFalse(/\u9999{4,}/.test("")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1323.js b/implementation-contributed/v8/mjsunit/regress/regress-1323.js deleted file mode 100644 index 552a48db2dc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1323.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Regression test for load/store operating with wrong number of bits. -function get(a, index) { - return a[index]; -} - -var a = new Float32Array(2); -a[0] = 2.5; -a[1] = 3.5; -for (var i = 0; i < 5; i++) get(a, 0); -%OptimizeFunctionOnNextCall(get); -assertEquals(2.5, get(a, 0)); -assertEquals(3.5, get(a, 1)); - -function set(a, index, value) { - a[index] = value; -} -for (var i = 0; i < 5; i++) set(a, 0, 4.5); -%OptimizeFunctionOnNextCall(set); -set(a, 0, 4.5); -assertEquals(4.5, a[0]); -assertEquals(3.5, a[1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1327557.js b/implementation-contributed/v8/mjsunit/regress/regress-1327557.js deleted file mode 100644 index cd8f08f5a72..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1327557.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = { valueOf: function() { throw "x"; } }; -var y = { valueOf: function() { throw "y"; } }; - -var exception = false; -try { - x * -y; -} catch (e) { - exception = true; - assertEquals("y", e); -} -assertTrue(exception); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-133211.js b/implementation-contributed/v8/mjsunit/regress/regress-133211.js deleted file mode 100644 index f9473d1ddf5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-133211.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure we don't leak maps when reading intermediate property descriptors. - -var o = {}; -var x = {}; -Object.defineProperty(o, "foo", { get: undefined }); -Object.defineProperty(x, "foo", { get: undefined, set: undefined }); -var pd = Object.getOwnPropertyDescriptor(o, "foo"); -assertEquals(undefined, pd.set); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-133211b.js b/implementation-contributed/v8/mjsunit/regress/regress-133211b.js deleted file mode 100644 index 87e35f45616..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-133211b.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -setter = function(x) { return; } -var o = {}; -Object.defineProperty(o, "foo", { set: setter }); -var x = {}; -Object.defineProperty(x, "foo", { set: setter }); -x.bar = 20; -x = {}; -gc(); -o.foo = 20; -assertEquals(undefined, o.foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1337.js b/implementation-contributed/v8/mjsunit/regress/regress-1337.js deleted file mode 100644 index ebcf84b99c4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1337.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that the throw is not inlined if object literals cannot be -// inlined. -function bar() { throw {}; } - -function foo() { bar(); } - -for (var i = 0; i < 5; ++i) { - try { foo() } catch (e) { } -} -%OptimizeFunctionOnNextCall(foo) -try { foo() } catch (e) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1346700.js b/implementation-contributed/v8/mjsunit/regress/regress-1346700.js deleted file mode 100644 index fe2d6fac4ab..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1346700.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2007-2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o = {"\u59cb\u53d1\u7ad9": 1}; -assertEquals(1, o.\u59cb\u53d1\u7ad9); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1351.js b/implementation-contributed/v8/mjsunit/regress/regress-1351.js deleted file mode 100644 index 656b19f6bbe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1351.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that the arguments value is does not escape when it appears as -// an intermediate value in an expression. - -function h() { } - -function f() { - var a = null; - h(a = arguments); -} - -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1355.js b/implementation-contributed/v8/mjsunit/regress/regress-1355.js deleted file mode 100644 index de9364a76b2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1355.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that an exception is not thrown when trying to set a value for -// a property that has only a defined getter, except when in strict mode. - -var foo = Object.defineProperty({}, "bar", { - get: function () { - return 10; - } - }); - -assertDoesNotThrow("foo.bar = 20"); - -function shouldThrow() { - 'use strict'; - foo.bar = 20; -} - -assertThrows("shouldThrow()"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1360.js b/implementation-contributed/v8/mjsunit/regress/regress-1360.js deleted file mode 100644 index bebad28bd8e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1360.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check the receiver for the sort and replace functions to -// Array.prototype.sort and String.prototype.replace. - -var global = this; -function strict() { "use strict"; assertEquals(void 0, this); } -function non_strict() { assertEquals(global, this); } - -[1,2,3].sort(strict); -[1,2,3].sort(non_strict); - -"axc".replace("x", strict); -"axc".replace("x", non_strict); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-136048.js b/implementation-contributed/v8/mjsunit/regress/regress-136048.js deleted file mode 100644 index 21ae622840e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-136048.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -try { - eval("/foo/\\u0069") -} catch (e) { - assertEquals( - "SyntaxError: Invalid regular expression flags", - e.toString()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1365.js b/implementation-contributed/v8/mjsunit/regress/regress-1365.js deleted file mode 100644 index 59290f9ebc7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1365.js +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1365 - -// Check that builtin methods are passed undefined as the receiver -// when called as functions through variables. - -// Flags: --allow-natives-syntax - -// Global variable. -var valueOf = Object.prototype.valueOf; -var hasOwnProperty = Object.prototype.hasOwnProperty; - -function callGlobalValueOf() { valueOf(); } -function callGlobalHasOwnProperty() { valueOf(); } - -assertEquals(Object.prototype, Object.prototype.valueOf()); -assertThrows(callGlobalValueOf); -assertThrows(callGlobalHasOwnProperty); - -%OptimizeFunctionOnNextCall(Object.prototype.valueOf); -Object.prototype.valueOf(); - -assertEquals(Object.prototype, Object.prototype.valueOf()); -assertThrows(callGlobalValueOf); -assertThrows(callGlobalHasOwnProperty); - -function CheckExceptionCallLocal() { - var valueOf = Object.prototype.valueOf; - var hasOwnProperty = Object.prototype.hasOwnProperty; - var exception = false; - try { valueOf(); } catch(e) { exception = true; } - assertTrue(exception); - exception = false; - try { hasOwnProperty(); } catch(e) { exception = true; } - assertTrue(exception); -} -CheckExceptionCallLocal(); - -function CheckExceptionCallParameter(f) { - var exception = false; - try { f(); } catch(e) { exception = true; } - assertTrue(exception); -} -CheckExceptionCallParameter(Object.prototype.valueOf); -CheckExceptionCallParameter(Object.prototype.hasOwnProperty); - -function CheckPotentiallyShadowedByEval() { - var exception = false; - try { - eval("hasOwnProperty('x')"); - } catch(e) { - exception = true; - } - assertTrue(exception); -} -CheckPotentiallyShadowedByEval(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1369.js b/implementation-contributed/v8/mjsunit/regress/regress-1369.js deleted file mode 100644 index 48a8e7ede04..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1369.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -assertDoesNotThrow('gc.call(1)'); -assertDoesNotThrow('gc.call("asdf")'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-137.js b/implementation-contributed/v8/mjsunit/regress/regress-137.js deleted file mode 100644 index f343eba14a0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-137.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See - -(function () { - var strNum = 170; - var base = strNum / 16; - var rem = strNum % 16; - var base = base - (rem / 16); // base is now HeapNumber with valid Smi value. - - switch(base) { - case 10: return "A"; // Expected result. - case 11: return "B"; - case 12: return "C"; - case 13: return "D"; - case 14: return "E"; - case 15: return "F"; // Enough cases to trigger fast-case Smi switch. - }; - fail("case 10", "Default case", "Heap number not recognized as Smi value"); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-137768.js b/implementation-contributed/v8/mjsunit/regress/regress-137768.js deleted file mode 100644 index 9fbd7f30aef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-137768.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Create elements in a constructor function to ensure map sharing. -function TestConstructor() { - this[0] = 1; - this[1] = 2; - this[2] = 3; -} - -function bad_func(o,a) { - var s = 0; - for (var i = 0; i < 1; ++i) { - o.newFileToChangeMap = undefined; - var x = a[0]; - s += x; - } - return s; -} - -o = new Object(); -a = new TestConstructor(); -bad_func(o, a); - -// Make sure that we're out of pre-monomorphic state for the member add of -// 'newFileToChangeMap' which causes a map transition. -o = new Object(); -a = new TestConstructor(); -bad_func(o, a); - -// Optimize, before the fix, the element load and subsequent tagged-to-i were -// hoisted above the map check, which can't be hoisted due to the map-changing -// store. -o = new Object(); -a = new TestConstructor(); -%OptimizeFunctionOnNextCall(bad_func); -bad_func(o, a); - -// Pass in a array of doubles. Before the fix, the optimized load and -// tagged-to-i will treat part of a double value as a pointer and de-ref it -// before the map check was executed that should have deopt. -o = new Object(); -// Pass in an elements buffer where the bit representation of the double numbers -// are two adjacent small 32-bit values with the lowest bit set to one, causing -// tagged-to-i to SIGSEGV. -a = [2.122e-314, 2.122e-314, 2.122e-314]; -bad_func(o, a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1383.js b/implementation-contributed/v8/mjsunit/regress/regress-1383.js deleted file mode 100644 index 387c8b4004c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1383.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that passing the strict_mode flag in extra ic state from -// StubCache::ComputeKeyedLoadOrStoreExternalArray does not -// hit an assertion in Code::ComputeFlags. - -x=""; -function foo(){ - "use strict"; - var wxemsx=(4); - var wxemsx_0=new Float32Array(wxemsx); - wxemsx_0[0]={}; -} - -foo() diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1387.js b/implementation-contributed/v8/mjsunit/regress/regress-1387.js deleted file mode 100644 index 0d58eab4994..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1387.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests that we always return the same type error function when trying to -// access or set strict mode callee. - -function foo() { - 'use strict'; - return arguments; -} - -var get = Object.getOwnPropertyDescriptor(foo(), "callee").get; -var set = Object.getOwnPropertyDescriptor(foo(), "callee").set; -assertEquals(get, set); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1389.js b/implementation-contributed/v8/mjsunit/regress/regress-1389.js deleted file mode 100644 index 9b89bbffd55..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1389.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test optimized implementation of postfix ++ on undefined input. -// See http://code.google.com/p/v8/issues/detail?id=1389 - -for (var i=0; i<4; i++) { - (function () { - (function () { - (function () { - var x; - y = x++; - })(); - })(); - })(); -} - -assertEquals(NaN, y); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1401.js b/implementation-contributed/v8/mjsunit/regress/regress-1401.js deleted file mode 100644 index 33eb0677eb2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1401.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1401 - -var bottom = 0; -var sizes = new Array(); - -for (i = 0; i < 10; i++) { - sizes[i] = 0; -} - -function foo() { - var size = bottom + 1 + 10; - var t = (sizes[++bottom] = size); - return t; -} - -for (i = 0; i < 5; i++) { - assertEquals(i + 11, foo()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1403.js b/implementation-contributed/v8/mjsunit/regress/regress-1403.js deleted file mode 100644 index 91df6d65f60..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1403.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1403 - -a = []; -assertThrows(() => Object.prototype.__proto__ = { __proto__: null }, TypeError); -a.shift(); - -a = []; -Array.prototype.__proto__ = { __proto__: null }; -a.shift(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1412.js b/implementation-contributed/v8/mjsunit/regress/regress-1412.js deleted file mode 100644 index b043f1900fc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1412.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the apply with arguments optimization passes values -// unchanged to strict-mode functions and builtins. - -// Flags: --allow-natives-syntax - -function strict() { "use strict"; return this; } - -function test_strict() { - assertEquals(void 0, strict.apply(undefined, arguments)); - assertEquals(42, strict.apply(42, arguments)); - assertEquals("asdf", strict.apply("asdf", arguments)); -} - -for (var i = 0; i < 10; i++) test_strict(); -%OptimizeFunctionOnNextCall(test_strict); -test_strict(); - -function test_builtin(receiver) { - Object.prototype.valueOf.apply(receiver, arguments); -} - -for (var i = 0; i < 10; i++) test_builtin(this); -%OptimizeFunctionOnNextCall(test_builtin); -test_builtin(this); - -var exception = false; -try { - test_builtin(undefined); -} catch(e) { - exception = true; -} -assertTrue(exception); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1415.js b/implementation-contributed/v8/mjsunit/regress/regress-1415.js deleted file mode 100644 index f993e9b3d85..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1415.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Surrogate pair range. -// U+D800 -assertThrows(function(){ decodeURIComponent("%ED%A0%80"); }, URIError); -// U+DBFF -assertThrows(function(){ decodeURIComponent("%ED%AF%BF"); }, URIError); -// U+DC00 -assertThrows(function(){ decodeURIComponent("%ED%B0%80"); }, URIError); -// U+DFFF -assertThrows(function(){ decodeURIComponent("%ED%BF%BF"); }, URIError); - -// Overlong encodings -// U+007F in two bytes. -assertThrows(function(){ decodeURIComponent("%C1%BF"); }, URIError); -// U+07FF in three bytes. -assertThrows(function(){ decodeURIComponent("%E0%9F%BF"); }, URIError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1419.js b/implementation-contributed/v8/mjsunit/regress/regress-1419.js deleted file mode 100644 index 55bcd7ccaa0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1419.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that using bind several time does not change the length of existing -// bound functions. - -function foo() { -} - -var f1 = function (x) {}.bind(foo); -var f2 = function () {}; - -assertEquals(1, f1.length); - -// the object we bind to can be any object -f2.bind(foo); - -assertEquals(1, f1.length); - -var desc = Object.getOwnPropertyDescriptor(f1, 'length'); -assertEquals(false, desc.writable); -assertEquals(false, desc.enumerable); -assertEquals(true, desc.configurable); - -Object.defineProperty(f1, 'length', { - value: 'abc', - writable: true -}); -assertEquals('abc', f1.length); -f1.length = 42; -assertEquals(42, f1.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1423.js b/implementation-contributed/v8/mjsunit/regress/regress-1423.js deleted file mode 100644 index b0d0ca37755..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1423.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that the Lithium environment iterator does stop iteration early. -"use strict"; - -function f0() { - return f1('literal', true); -} - -function f1(x, y) { - return f2(x, y); -} - -// Because it's strict, f2 has an environment containing only the constants -// undefined, 'literal', and false. Bug 1423 would cause environment -// iteration to stop early. -// -// Bug manifests as UNREACHABLE code (due to an unallocated register) in -// debug builds. -function f2(x, y) { - if (y) { - if (f3(x, 'other-literal')) { - return 0; - } else { - return 1; - } - } else { - return 2; - } -} - -function f3(x, y) { - return x === y; -} - -for (var i = 0; i < 5; ++i) f0(); -%OptimizeFunctionOnNextCall(f0); -assertEquals(1, f0()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1434.js b/implementation-contributed/v8/mjsunit/regress/regress-1434.js deleted file mode 100644 index 6f197afaf95..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1434.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function compare(a, b) { - return a === b; -} - -compare(1.5, 2.5); -%OptimizeFunctionOnNextCall(compare); -assertTrue(compare(undefined, undefined)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1436.js b/implementation-contributed/v8/mjsunit/regress/regress-1436.js deleted file mode 100644 index 390ccee4c38..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1436.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that reduce and reduceRight call the callback function with -// undefined as the receiver (which for non-strict functions is -// transformed to the global object). - -// Check receiver for reduce and reduceRight. - -var global = this; -function non_strict(){ assertEquals(global, this); } -function strict(){ "use strict"; assertEquals(void 0, this); } -function strict_null(){ "use strict"; assertEquals(null, this); } - -[2, 3].reduce(non_strict); -[2, 3].reduce(strict); -[2, 3].reduceRight(non_strict); -[2, 3].reduceRight(strict); - - -// Check the receiver for callbacks in other array methods. -[2, 3].every(non_strict); -[2, 3].every(non_strict, undefined); -[2, 3].every(non_strict, null); -[2, 3].every(strict); -[2, 3].every(strict, undefined); -[2, 3].every(strict_null, null); - -[2, 3].filter(non_strict); -[2, 3].filter(non_strict, undefined); -[2, 3].filter(non_strict, null); -[2, 3].filter(strict); -[2, 3].filter(strict, undefined); -[2, 3].filter(strict_null, null); - -[2, 3].forEach(non_strict); -[2, 3].forEach(non_strict, undefined); -[2, 3].forEach(non_strict, null); -[2, 3].forEach(strict); -[2, 3].forEach(strict, undefined); -[2, 3].forEach(strict_null, null); - -[2, 3].map(non_strict); -[2, 3].map(non_strict, undefined); -[2, 3].map(non_strict, null); -[2, 3].map(strict); -[2, 3].map(strict, undefined); -[2, 3].map(strict_null, null); - -[2, 3].some(non_strict); -[2, 3].some(non_strict, undefined); -[2, 3].some(non_strict, null); -[2, 3].some(strict); -[2, 3].some(strict, undefined); -[2, 3].some(strict_null, null); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1439135.js b/implementation-contributed/v8/mjsunit/regress/regress-1439135.js deleted file mode 100644 index 737a7ba082b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1439135.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -function Test() { - var left = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; - var right = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"; - for (var i = 0; i < 100000; i++) { - var cons = left + right; - var substring = cons.substring(20, 80); - var index = substring.indexOf('Y'); - assertEquals(34, index); - } -} - -Test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-143967.js b/implementation-contributed/v8/mjsunit/regress/regress-143967.js deleted file mode 100644 index 7c12e671533..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-143967.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that Accessors::FunctionGetPrototype traverses the prototype -// chain correctly and doesn't get stuck. - -var functionWithoutProto = [].filter; -var obj = Object.create(functionWithoutProto); -functionWithoutProto.__proto__ = function() {}; -assertEquals(functionWithoutProto.prototype, obj.prototype); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1447.js b/implementation-contributed/v8/mjsunit/regress/regress-1447.js deleted file mode 100644 index 2c1ee5917d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1447.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -[0].forEach(function(){ Object.freeze(Array.prototype.forEach); }); -[0].every(function(){ Object.seal(Array.prototype.every); }); - -function testStrict(){ - "use strict"; - [0].forEach(function(){ Object.freeze(Array.prototype.forEach); }); - [0].every(function(){ Object.seal(Array.prototype.every); }); -} - -testStrict(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-145201.js b/implementation-contributed/v8/mjsunit/regress/regress-145201.js deleted file mode 100644 index 7fe7bceda15..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-145201.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Fix some corner cases in skipping native methods using caller. -var net = []; - - -var x = 0; - -function collect () { - function item(operator) { - binary(operator, 1, false); - binary(operator, 1, true); - binary(operator, '{}', false); - binary(operator, '{}', true); - binary(operator, '"x"', false); - binary(operator, '"x"', true); - unary(operator, ""); - } - - function unary(op, after) { - // Capture: - try { - eval(op + " custom " + after); - } catch(e) { - } - } - - function binary(op, other_side, inverted) { - // Capture: - try { - if (inverted) { - eval("custom " + op + " " + other_side); - } else { - eval(other_side + " " + op + " custom"); - } - } catch(e) { - } - } - - function catcher() { - var caller = catcher.caller; - if (/native/i.test(caller) || /ADD/.test(caller)) { - net[caller] = 0; - } - } - - var custom = Object.create(null, { - toString: { value: catcher }, - length: { get: catcher } - }); - - item('^'); - item('~'); - item('<<'); - item('<'); - item('=='); - item('>>>'); - item('>>'); - item('|'); - item('-'); - item('*'); - item('&'); - item('%'); - item('+'); - item('in'); - item('instanceof'); - unary('{}[', ']'); - unary('delete {}[', ']'); - unary('(function() {}).apply(null, ', ')'); -} - -collect(); -collect(); -collect(); - -var keys = 0; -for (var key in net) { - print(key); - keys++; -} - -assertTrue(keys == 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1472.js b/implementation-contributed/v8/mjsunit/regress/regress-1472.js deleted file mode 100644 index b2a30d22625..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1472.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Avoid excessive expansions of regexp repetitions inside regexp repetitions. -// Some of these caused stack overflows, others cause out-of-memory. -var r1 = /(?:a(?:b(?:c(?:d(?:e(?:f(?:g(?:h(?:i(?:j(?:k(?:l(?:m(?:n(?:o(?:p(?:q(?:r(?:s(?:t(?:u(?:v(?:w(?:x(?:y(?:z(?:FooBar)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)/; -"xxx".match(r1); - -var r2 = /(?:a(?:b(?:c(?:d(?:e(?:f(?:g(?:h(?:i(?:j(?:k(?:l(?:FooBar){0,2}){0,2}){0,2}){0,2}){0,2}){0,2}){0,2}){0,2}){0,2}){0,2}){0,2}){0,2}){0,2}/; -"xxx".match(r2); - -var r3 = /(?:a(?:b(?:c(?:d(?:e(?:f(?:g(?:h(?:i(?:j(?:k(?:l(?:FooBar){2}){2}){2}){2}){2}){2}){2}){2}){2}){2}){2}){2}){2}/; -"xxx".match(r3); - -var r4 = /(?:a(?:b(?:c(?:d(?:e(?:f(?:g(?:h(?:i(?:FooBar){3,6}){3,6}){3,6}){3,6}){3,6}){3,6}){3,6}){3,6}){3,6}){3,6}/; -"xxx".match(r4); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1476.js b/implementation-contributed/v8/mjsunit/regress/regress-1476.js deleted file mode 100644 index 1277e7f6c5b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1476.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo (i) { return (i % 2) | 0; } - -assertEquals (-1, foo(-1)); -assertEquals (-1, foo(-1)); -%OptimizeFunctionOnNextCall(foo); -assertEquals (-1, foo(-1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-148378.js b/implementation-contributed/v8/mjsunit/regress/regress-148378.js deleted file mode 100644 index d37cea1cf75..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-148378.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"a".replace(/a/g, function() { return "c"; }); - -function test() { - try { - test(); - } catch(e) { - "b".replace(/(b)/g, function() { return "c"; }); - } -} - -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-149.js b/implementation-contributed/v8/mjsunit/regress/regress-149.js deleted file mode 100644 index 6377a5b755d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-149.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(String.fromCharCode(0x26B), String.fromCharCode(0x2C62).toLowerCase()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1491.js b/implementation-contributed/v8/mjsunit/regress/regress-1491.js deleted file mode 100644 index 1a3d3bfd7bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1491.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the Array length accessor correctly deals with non-array -// receivers. - -// Create an object with an array as the prototype. -var o = Object.create([]); - -// Check that writing the length property of the non-array object -// works as expected. -var value = "asdf"; -o.length = value; -assertEquals(value, o.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1493017.js b/implementation-contributed/v8/mjsunit/regress/regress-1493017.js deleted file mode 100644 index b46397c8a04..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1493017.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test collection of abandoned maps. Tests that deleted map -// transitions do not show up as properties in for in. - -// Flags: --expose-gc - -function C() {} - - -// Create an instance of C. Add a property to the instance and then -// remove all references to instances of C. -var o = new C(); -o.x = 42; -o = null; - -// Force a global GC. This will collect the maps starting from C and -// delete map transitions. -gc(); - -// Create a new instance of C. -o = new C(); - -// Test that the deleted map transitions do not show up in for in. -for (var p in o) { - assertTrue(false); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1513.js b/implementation-contributed/v8/mjsunit/regress/regress-1513.js deleted file mode 100644 index 06c5edf1020..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1513.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Deleting a mapped arguments property and adding it via -// Object.defineProperty should not crash. - -function testcase() { - return (function (a, b, c) { - delete arguments[0]; - Object.defineProperty(arguments, "0", { - value: 10, - writable: false, - enumerable: false, - configurable: false - }); - assertEquals(10, arguments[0]); - }(0, 1, 2)); -} - -testcase(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1521.js b/implementation-contributed/v8/mjsunit/regress/regress-1521.js deleted file mode 100644 index 3149f05a5e9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1521.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Flags: --allow-natives-syntax - -// Optimized variable access inside through a catch context should work. -function test(x) { - try { - throw new Error(); - } catch (e) { - var y = {f: 1}; - var f = function () { - var z = y; - var g = function () { - if (y.f === z.f) return x; - }; - %OptimizeFunctionOnNextCall(g); - return g; - } - assertEquals(3, f()()); - } -} - -test(3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1528.js b/implementation-contributed/v8/mjsunit/regress/regress-1528.js deleted file mode 100644 index 2eb6be19462..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1528.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// With (or catch) scopes nested inside catch scopes should look at the -// first outer non-catch scope to decide which closure to use when -// allocating the new context. - -// Code below should not assert or crash. -try { - fail; -} catch (e) { - with({}) { // With scope inside catch scope. - // Dynamic declaration forces runtime lookup to observe the context chain. - eval('const x = 7'); - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1529.js b/implementation-contributed/v8/mjsunit/regress/regress-1529.js deleted file mode 100644 index 212d7b399eb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1529.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1529 - -try { - Error.prepareStackTrace = function (error, stackTrace) { - stackTrace.some(); - }; - x; -} catch (e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1530.js b/implementation-contributed/v8/mjsunit/regress/regress-1530.js deleted file mode 100644 index fa86f62ce56..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1530.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that redefining the 'prototype' property of a function object -// does actually set the internal value and does not screw up any -// shadowing between said property and the internal value. - -var f = function() {}; - -// Verify that normal assignment of 'prototype' property works properly -// and updates the internal value. -var a = { foo: 'bar' }; -f.prototype = a; -assertSame(f.prototype, a); -assertSame(f.prototype.foo, 'bar'); -assertSame(new f().foo, 'bar'); -assertSame(Object.getPrototypeOf(new f()), a); -assertSame(Object.getOwnPropertyDescriptor(f, 'prototype').value, a); -assertTrue(Object.getOwnPropertyDescriptor(f, 'prototype').writable); - -// Verify that 'prototype' behaves like a data property when it comes to -// redefining with Object.defineProperty() and the internal value gets -// updated. -var b = { foo: 'baz' }; -Object.defineProperty(f, 'prototype', { value: b, writable: true }); -assertSame(f.prototype, b); -assertSame(f.prototype.foo, 'baz'); -assertSame(new f().foo, 'baz'); -assertSame(Object.getPrototypeOf(new f()), b); -assertSame(Object.getOwnPropertyDescriptor(f, 'prototype').value, b); -assertTrue(Object.getOwnPropertyDescriptor(f, 'prototype').writable); - -// Verify that the previous redefinition didn't screw up callbacks and -// the internal value still gets updated. -var c = { foo: 'other' }; -f.prototype = c; -assertSame(f.prototype, c); -assertSame(f.prototype.foo, 'other'); -assertSame(new f().foo, 'other'); -assertSame(Object.getPrototypeOf(new f()), c); -assertSame(Object.getOwnPropertyDescriptor(f, 'prototype').value, c); -assertTrue(Object.getOwnPropertyDescriptor(f, 'prototype').writable); - -// Verify that 'prototype' can be redefined to contain a different value -// and have a different writability attribute at the same time. -var d = { foo: 'final' }; -Object.defineProperty(f, 'prototype', { value: d, writable: false }); -assertSame(f.prototype, d); -assertSame(f.prototype.foo, 'final'); -assertSame(new f().foo, 'final'); -assertSame(Object.getPrototypeOf(new f()), d); -assertSame(Object.getOwnPropertyDescriptor(f, 'prototype').value, d); -assertFalse(Object.getOwnPropertyDescriptor(f, 'prototype').writable); - -// Verify that non-writability of redefined 'prototype' is respected. -assertThrows("'use strict'; f.prototype = {}"); -assertThrows("Object.defineProperty(f, 'prototype', { value: {} })"); - -// Verify that non-configurability of other properties is respected, but -// non-writability is ignored by Object.defineProperty(). -// name and length are configurable in ES6 -Object.defineProperty(f, 'name', { value: {} }); -Object.defineProperty(f, 'length', { value: {} }); -assertThrows("Object.defineProperty(f, 'caller', { value: {} })"); -assertThrows("Object.defineProperty(f, 'arguments', { value: {} })"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1531.js b/implementation-contributed/v8/mjsunit/regress/regress-1531.js deleted file mode 100644 index 09e61a60405..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1531.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for computing elements keys of arguments object. Should -// not crash or assert. -function test(x) { - arguments[10] = 0; - var arr = []; - for (var p in arguments) arr.push(p); - return arr; -} -assertEquals(["0", "10"], test(0)); - -// Regression test for lookup after delete of a dictionary-mode arguments -// backing store. Should not crash or assert. -function test1(x, y, z) { - // Put into dictionary mode. - arguments.__defineGetter__("5", function () { return 0; }); - // Delete a property from the dictionary. - delete arguments[5]; - // Look up a property in the dictionary. - return arguments[2]; -} - -assertEquals(void 0, test1(0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1546.js b/implementation-contributed/v8/mjsunit/regress/regress-1546.js deleted file mode 100644 index 3f1839cd379..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1546.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1546 - -// Should't throw. Scanner incorrectly truncated to char before comparing -// with "*", so it ended the comment early. -eval("/*\u822a/ */"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1548.js b/implementation-contributed/v8/mjsunit/regress/regress-1548.js deleted file mode 100644 index 5330e131ec4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1548.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the caller and arguments objects are not available on native -// functions. - -function testfn(f) { return [1].map(f)[0]; } -function foo() { return [].map.caller; } -assertThrows(function() { testfn(foo); } ); - -// Try to delete the caller property (to make sure that we can't get to the -// caller accessor on the prototype. -delete Array.prototype.map.caller; -assertThrows(function() { testfn(foo); } ); - -// Redo tests with arguments object. -function testarguments(f) { return [1].map(f)[0]; } -function bar() { return [].map.arguments; } -assertThrows(function() { testarguments(bar); } ); - -// Try to delete the arguments property (to make sure that we can't get to the -// caller accessor on the prototype. -delete Array.prototype.map.arguments; -assertThrows(function() { testarguments(bar); } ); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-155924.js b/implementation-contributed/v8/mjsunit/regress/regress-155924.js deleted file mode 100644 index 666e3ba5ced..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-155924.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// A HeapNumber with certain bits in the mantissa of the floating point -// value should not be able to masquerade as a string in a keyed lookup -// inline cache stub. See http://codereview.chromium.org/155924. - -A = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; - -function foo() { - x = 1 << 26; - x = x * x; - // The following floating-point heap number has a second word similar - // to that of the string "5": - // 2^52 + index << cached_index_shift + cached_index_tag - x = x + (5 << 2) + (1 << 1); - return A[x]; -} - -assertEquals(undefined, foo(), "First lookup A[bad_float]"); -assertEquals(undefined, foo(), "Second lookup A[bad_float]"); -assertEquals(undefined, foo(), "Third lookup A[bad_float]"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1560.js b/implementation-contributed/v8/mjsunit/regress/regress-1560.js deleted file mode 100644 index a0aa7e64d5f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1560.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -function mkCOWArray() { - var a = ['']; - assertEquals('', a[0]); - return a; -} - -function mkArray() { - var a = []; - a[0] = ''; - return a; -} - -function mkNumberDictionary() { - var a = new Array(); - a[0] = ''; - a[100000] = ''; - return a; -} - -function write(a, i) { a[i] = "bazinga!"; } - -function test(factories, w) { - factories.forEach(function(f) { w(f(), 0); }); - factories.forEach(function(f) { w(f(), 0); }); - %OptimizeFunctionOnNextCall(w); - factories.forEach(function(f) { w(f(), 0); }); -} - -// Monomorphic case. -for (var i = 0; i < 5; i++) write(mkArray(), 0); -%OptimizeFunctionOnNextCall(write); -write(mkCOWArray(), 0); -var failure = mkCOWArray(); - -// Cleanup, then polymorphic case. -%DeoptimizeFunction(write); -gc(); -test([mkArray, mkNumberDictionary], write); -test([mkArray, mkNumberDictionary, mkCOWArray], write); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1563.js b/implementation-contributed/v8/mjsunit/regress/regress-1563.js deleted file mode 100644 index 884b12595a6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1563.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -obj = new Uint8ClampedArray(10); - -// Test that undefined gets properly clamped in Crankshafted pixel array -// assignments. -function set_pixel(obj, arg) { - obj[0] = arg; -} - -set_pixel(obj, 1.5); -set_pixel(obj, NaN); -%OptimizeFunctionOnNextCall(set_pixel); -set_pixel(obj, undefined); -set_pixel(obj, undefined); - -assertEquals(0, obj[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1582.js b/implementation-contributed/v8/mjsunit/regress/regress-1582.js deleted file mode 100644 index 346d68ac340..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1582.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(restIsArray, rest) { - var arr; - if (typeof rest === "object" && (rest instanceof Array)) { - arr = rest; - } else { - arr = arguments; - } - var i = arr.length; - while (--i >= 0) arr[i]; - var arrIsArguments = (arr[1] !== rest); - assertEquals(restIsArray, arrIsArguments); -} - -f(false, 'b', 'c'); -f(false, 'b', 'c'); -f(false, 'b', 'c'); -%OptimizeFunctionOnNextCall(f); -f(true, ['b', 'c']); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1583.js b/implementation-contributed/v8/mjsunit/regress/regress-1583.js deleted file mode 100644 index c4a344ccf89..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1583.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Regression test for a bug in recompilation of anonymous functions inside -// catch. We would incorrectly hoist them outside the catch in some cases. -function f() { - try { - throw 0; - } catch (e) { - try { - var x = { a: 'hest' }; - x.m = function (e) { return x.a; }; - } catch (e) { - } - } - return x; -} - -var o = f(); -assertEquals('hest', o.m()); -assertEquals('hest', o.m()); -assertEquals('hest', o.m()); -%OptimizeFunctionOnNextCall(o.m); -assertEquals('hest', o.m()); - -// Fixing the bug above introduced (revealed?) an inconsistency in named -// getters and setters. The property name was also treated as a function -// name. -var global = 'horse'; -var p = { get global() { return global; }}; -assertEquals('horse', p.global); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1591.js b/implementation-contributed/v8/mjsunit/regress/regress-1591.js deleted file mode 100644 index dbf40dfdbe6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1591.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var stack; -var used_custom_lookup = false; - -({ - __lookupGetter__ : function() { - used_custom_lookup = true; - }, - - test : function() { - try { - f(); - } catch (err) { - stack = err.stack; - } - } -}).test(); - -var expected_message = "ReferenceError: f is not defined"; -assertTrue(stack.indexOf(expected_message) >= 0); -assertFalse(used_custom_lookup); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1592.js b/implementation-contributed/v8/mjsunit/regress/regress-1592.js deleted file mode 100644 index 8f6fba01a99..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1592.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var f = { - apply: function(a, b) {} -}; - -function test(a) { - f.apply(this, arguments); -} - -// Initialize ICs. -test(1); -test(1); - -%OptimizeFunctionOnNextCall(test); - -// Kaboom! -test(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1620.js b/implementation-contributed/v8/mjsunit/regress/regress-1620.js deleted file mode 100644 index 6d729745666..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1620.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Don't allow malformed unicode escape sequences in identifiers. -// In strings and regexps we currently allow malformed unicode escape -// sequences without throwing a SyntaxError. Instead "\u22gk" would -// treat the "\u" as an identity escape, and evaluate to "u22gk". -// Due to code sharing, we did the same in identifiers. This should -// no longer be the case. -// See: http://code.google.com/p/v8/issues/detail?id=1620 - -assertThrows("var \\u\\u\\u = 42;"); -assertThrows("var \\u41 = 42;"); -assertThrows("var \\u123 = 42;"); -eval("var \\u1234 = 42;"); -assertEquals(42, eval("\u1234")); -assertThrows("var uuu = 42; var x = \\u\\u\\u"); - -// Regressions introduced and fixed again while fixing the above. - -// Handle 0xFFFD correctly (it's a valid value, and shouldn't be used -// to mark an error). -assertEquals(0xFFFD, "\uFFFD".charCodeAt(0)); - -// Handle unicode escapes in regexp flags correctly. -assertThrows("/x/g\\uim", SyntaxError); -assertThrows("/x/g\\u2im", SyntaxError); -assertThrows("/x/g\\u22im", SyntaxError); -assertThrows("/x/g\\u222im", SyntaxError); -assertThrows("/x/g\\\\u2222im", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1624-strict.js b/implementation-contributed/v8/mjsunit/regress/regress-1624-strict.js deleted file mode 100644 index 8bc58d5abb3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1624-strict.js +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that global eval calls of strict code (independent from whether being -// direct or indirect) have their own lexical and variable environment. - -"use strict"; -var evil = eval; - -// Test global direct strict eval in strict script. -// Expects new environment. -var no_touch = 0; -eval('"use strict"; var no_touch = 1;'); -assertSame(0, no_touch); - -// Test global indirect strict eval in strict script. -// Expects new environment. -var no_touch = 0; -evil('"use strict"; var no_touch = 2;'); -assertSame(0, no_touch); - -// Test global direct non-strict eval in strict script. -// Expects new environment. -var no_touch = 0; -eval('var no_touch = 3;'); -assertSame(0, no_touch); - -// Test global indirect non-strict eval in strict script. -// Expects global environment. -var no_touch = 0; -evil('var no_touch = 4;'); -assertSame(4, no_touch); - -// Test non-global direct strict eval in strict script. -// Expects new environment. -var no_touch = 0; -(function() { - var no_touch = 0; - eval('"use strict"; var no_touch = 5;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global indirect strict eval in strict script. -// Expects new environment. -var no_touch = 0; -(function() { - var no_touch = 0; - evil('"use strict"; var no_touch = 6;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global direct non-strict eval in strict script. -// Expects new environment. -var no_touch = 0; -(function() { - var no_touch = 0; - eval('var no_touch = 7;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global indirect non-strict eval in strict script. -// Expects global environment. -var no_touch = 0; -(function() { - var no_touch = 0; - evil('var no_touch = 8;'); - assertSame(0, no_touch); -})() -assertSame(8, no_touch); - -// Test non-global direct strict eval in strict script. -// Expects new environment. -var no_touch = 0; -(function() { - "use strict"; - var no_touch = 0; - eval('"use strict"; var no_touch = 9;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global indirect strict eval in strict script. -// Expects new environment. -var no_touch = 0; -(function() { - "use strict"; - var no_touch = 0; - evil('"use strict"; var no_touch = 10;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global direct non-strict eval in strict script. -// Expects new environment. -var no_touch = 0; -(function() { - "use strict"; - var no_touch = 0; - eval('var no_touch = 11;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global indirect non-strict eval in strict script. -// Expects global environment. -var no_touch = 0; -(function() { - "use strict"; - var no_touch = 0; - evil('var no_touch = 12;'); - assertSame(0, no_touch); -})() -assertSame(12, no_touch); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1624.js b/implementation-contributed/v8/mjsunit/regress/regress-1624.js deleted file mode 100644 index 987e036d700..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1624.js +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that global eval calls of strict code (independent from whether being -// direct or indirect) have their own lexical and variable environment. - -var evil = eval; - -// Test global direct strict eval. -// Expects new environment. -var no_touch = 0; -eval('"use strict"; var no_touch = 1;'); -assertSame(0, no_touch); - -// Test global indirect strict eval. -// Expects new environment. -var no_touch = 0; -evil('"use strict"; var no_touch = 2;'); -assertSame(0, no_touch); - -// Test global direct non-strict eval. -// Expects global environment. -var no_touch = 0; -eval('var no_touch = 3;'); -assertSame(3, no_touch); - -// Test global indirect non-strict eval. -// Expects global environment. -var no_touch = 0; -evil('var no_touch = 4;'); -assertSame(4, no_touch); - -// Test non-global direct strict eval in non-strict function. -// Expects new environment. -var no_touch = 0; -(function() { - var no_touch = 0; - eval('"use strict"; var no_touch = 5;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global indirect strict eval in non-strict function. -// Expects new environment. -var no_touch = 0; -(function() { - var no_touch = 0; - evil('"use strict"; var no_touch = 6;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global direct non-strict eval in non-strict function. -// Expects function environment. -var no_touch = 0; -(function() { - var no_touch = 0; - eval('var no_touch = 7;'); - assertSame(7, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global indirect non-strict eval in non-strict function. -// Expects global environment. -var no_touch = 0; -(function() { - var no_touch = 0; - evil('var no_touch = 8;'); - assertSame(0, no_touch); -})() -assertSame(8, no_touch); - -// Test non-global direct strict eval in strict function. -// Expects new environment. -var no_touch = 0; -(function() { - "use strict"; - var no_touch = 0; - eval('"use strict"; var no_touch = 9;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global indirect strict eval in strict function. -// Expects new environment. -var no_touch = 0; -(function() { - "use strict"; - var no_touch = 0; - evil('"use strict"; var no_touch = 10;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global direct non-strict eval in strict function. -// Expects new environment. -var no_touch = 0; -(function() { - "use strict"; - var no_touch = 0; - eval('var no_touch = 11;'); - assertSame(0, no_touch); -})() -assertSame(0, no_touch); - -// Test non-global indirect non-strict eval in strict function. -// Expects global environment. -var no_touch = 0; -(function() { - "use strict"; - var no_touch = 0; - evil('var no_touch = 12;'); - assertSame(0, no_touch); -})() -assertSame(12, no_touch); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1625.js b/implementation-contributed/v8/mjsunit/regress/regress-1625.js deleted file mode 100644 index a2ef8df6529..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1625.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that overwriting Array.prototype.push does not make -// Object.defineProperties misbehave. - -Array.prototype.push = 1; -var desc = {foo: {value: 10}, bar: {get: function() {return 42; }}}; -var obj = {}; -var x = Object.defineProperties(obj, desc); -assertEquals(x.foo, 10); -assertEquals(x.bar, 42); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-164442.js b/implementation-contributed/v8/mjsunit/regress/regress-164442.js deleted file mode 100644 index 1160d874f5b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-164442.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Should not take a very long time (n^2 algorithms are bad) - - -function ensureNotNegative(x) { - return Math.max(0, x | 0); -} - - -ensureNotNegative(1); -ensureNotNegative(2); - -%OptimizeFunctionOnNextCall(ensureNotNegative); - -var r = ensureNotNegative(-1); - -assertEquals(0, r); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1647.js b/implementation-contributed/v8/mjsunit/regress/regress-1647.js deleted file mode 100644 index ab6608c1ef7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1647.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test for correct deoptimization in named function expressions. - -var t = { foo: function() {} }; - -var f = (function bar() { - t.foo(); - assertEquals("function", typeof bar); -}); - -for (var i = 0; i < 10; i++) f(); -%OptimizeFunctionOnNextCall(f); -t.number = 2; -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1650.js b/implementation-contributed/v8/mjsunit/regress/regress-1650.js deleted file mode 100644 index fb6a17814d1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1650.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function g(f) { return f.call.apply(f.bind, arguments); } - -var x = new Object; - -function t() { } - -g(t, x); -g(t, x); -g(t, x); -%OptimizeFunctionOnNextCall(g); - -function Fake() {} - -var fakeCallInvoked = false; - -Fake.prototype.call = function () { - assertSame(Fake.prototype.bind, this); - assertEquals(2, arguments.length); - assertSame(fake, arguments[0]); - assertSame(x, arguments[1]); - fakeCallInvoked = true; -}; - -Fake.prototype.bind = function () { -}; - -var fake = new Fake; - -g(fake, x); - -assertTrue(fakeCallInvoked); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-165637.js b/implementation-contributed/v8/mjsunit/regress/regress-165637.js deleted file mode 100644 index 2a7fc4421fc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-165637.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Make sure that packed and unpacked array slices are still properly handled -var holey_array = [1, 2, 3, 4, 5,,,,,,]; -assertEquals([undefined], holey_array.slice(6, 7)); -assertEquals(undefined, holey_array.slice(6, 7)[0]); -assertEquals([], holey_array.slice(2, 1)); -assertEquals(3, holey_array.slice(2, 3)[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-166379.js b/implementation-contributed/v8/mjsunit/regress/regress-166379.js deleted file mode 100644 index 2cda61182b8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-166379.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function mod(a, b) { return a % b; } - -// Feed integer type info and optimize. -assertEquals(0, mod(4, 2)); -assertEquals(1, mod(3, 2)); -%OptimizeFunctionOnNextCall(mod); - -// Surprise mod with overflow. -assertEquals(-Infinity, 1/mod(-2147483648, -1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-166553.js b/implementation-contributed/v8/mjsunit/regress/regress-166553.js deleted file mode 100644 index 38fc0b5e76e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-166553.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -JSON.stringify(String.fromCharCode(1, -11).toString()) -gc(); -var s = String.fromCharCode(1, -11) -assertEquals(65525, s.charCodeAt(1)) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1692.js b/implementation-contributed/v8/mjsunit/regress/regress-1692.js deleted file mode 100644 index 32be87f989d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1692.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that Object.prototype.propertyIsEnumerable handles array indices -// correctly. - -var p = Object.create({}, { - a : { value : 42, enumerable : true }, - b : { value : 42, enumerable : false }, - 1 : { value : 42, enumerable : true }, - 2 : { value : 42, enumerable : false }, - f : { get: function(){}, enumerable: true }, - g : { get: function(){}, enumerable: false }, - 11 : { get: function(){}, enumerable: true }, - 12 : { get: function(){}, enumerable: false } -}); -var o = Object.create(p, { - c : { value : 42, enumerable : true }, - d : { value : 42, enumerable : false }, - 3 : { value : 42, enumerable : true }, - 4 : { value : 42, enumerable : false }, - h : { get: function(){}, enumerable: true }, - k : { get: function(){}, enumerable: false }, - 13 : { get: function(){}, enumerable: true }, - 14 : { get: function(){}, enumerable: false } -}); - -// Inherited properties are ignored. -assertFalse(o.propertyIsEnumerable("a")); -assertFalse(o.propertyIsEnumerable("b")); -assertFalse(o.propertyIsEnumerable("1")); -assertFalse(o.propertyIsEnumerable("2")); - -// Own properties. -assertTrue(o.propertyIsEnumerable("c")); -assertFalse(o.propertyIsEnumerable("d")); -assertTrue(o.propertyIsEnumerable("3")); -assertFalse(o.propertyIsEnumerable("4")); - -// Inherited accessors. -assertFalse(o.propertyIsEnumerable("f")); -assertFalse(o.propertyIsEnumerable("g")); -assertFalse(o.propertyIsEnumerable("11")); -assertFalse(o.propertyIsEnumerable("12")); - -// Own accessors. -assertTrue(o.propertyIsEnumerable("h")); -assertFalse(o.propertyIsEnumerable("k")); -assertTrue(o.propertyIsEnumerable("13")); -assertFalse(o.propertyIsEnumerable("14")); - -// Nonexisting properties. -assertFalse(o.propertyIsEnumerable("xxx")); -assertFalse(o.propertyIsEnumerable("999")); - -// String object properties. -var o = Object("string"); -// Non-string property on String object. -o[10] = 42; -assertTrue(o.propertyIsEnumerable(10)); -assertTrue(o.propertyIsEnumerable(0)); - -// Fast elements. -var o = [1,2,3,4,5]; -assertTrue(o.propertyIsEnumerable(3)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1708.js b/implementation-contributed/v8/mjsunit/regress/regress-1708.js deleted file mode 100644 index a2937750d74..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1708.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test of a very rare corner case where left-trimming an -// array caused invalid marking bit patterns on lazily swept pages. -// -// Lazy sweeping was deprecated. We are keeping the test case to make -// sure that concurrent sweeping, which relies on similar assumptions -// as lazy sweeping works correctly. - -// Flags: --expose-gc --noincremental-marking --max-semi-space-size=1 - -(function() { - var head = new Array(1); - var tail = head; - - // Fill heap to increase old-space size and trigger concurrent sweeping on - // some of the old-space pages. - for (var i = 0; i < 200; i++) { - tail[1] = new Array(1000); - tail = tail[1]; - } - array = new Array(100); - gc(); gc(); - - // At this point "array" should have been promoted to old-space and be - // located in a concurrently swept page with intact marking bits. Now shift - // the array to trigger left-trimming operations. - assertEquals(100, array.length); - for (var i = 0; i < 50; i++) { - array.shift(); - } - assertEquals(50, array.length); - - // At this point "array" should have been trimmed from the left with - // marking bits being correctly transferred to the new object start. - // Scavenging operations cause concurrent sweeping to advance and verify - // that marking bit patterns are still sane. - for (var i = 0; i < 200; i++) { - tail[1] = new Array(1000); - tail = tail[1]; - } -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-171.js b/implementation-contributed/v8/mjsunit/regress/regress-171.js deleted file mode 100644 index fe981dad0d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-171.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f(s) { return s.length; } -function g(s, key) { return s[key]; } - -assertEquals(f(new String("a")), 1); -assertEquals(f(new String("a")), 1); -assertEquals(f(new String("a")), 1); -assertEquals(f("a"), 1); -assertEquals(f(new String("a")), 1); - -assertEquals(g(new String("a"), "length"), 1); -assertEquals(g(new String("a"), "length"), 1); -assertEquals(g(new String("a"), "length"), 1); -assertEquals(g("a", "length"), 1); -assertEquals(g(new String("a"), "length"), 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1711.js b/implementation-contributed/v8/mjsunit/regress/regress-1711.js deleted file mode 100644 index 15591b1e016..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1711.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// string.split needs to evaluate the separator's toString even if limit -// is 0 because toString may have side effects. - -var side_effect = false; -var separator = new Object(); -separator.toString = function() { - side_effect = true; - return undefined; -} -'subject'.split(separator, 0); -assertTrue(side_effect); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-171641.js b/implementation-contributed/v8/mjsunit/regress/regress-171641.js deleted file mode 100644 index 8db67818213..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-171641.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo(k, p) { - for (var i = 0; i < 1; i++) { - p = Math.min(p, i); - } - m = Math.floor((k | 0) / p); -} - -foo(0, 1); -foo(0, 1); -%OptimizeFunctionOnNextCall(foo); -foo(0, 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1748.js b/implementation-contributed/v8/mjsunit/regress/regress-1748.js deleted file mode 100644 index 41b7c70c01e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1748.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that /^/ only matches at beginning of string. -// Bug in x64 caused it to match when executing the RegExp on a part -// of a string that starts at a multiplum of 256. - -var str = Array(10000).join("X"); -str.replace(/^|X/g, function(m, i, s) { - if (i > 0) assertEquals("X", m, "at position 0x" + i.toString(16)); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1757.js b/implementation-contributed/v8/mjsunit/regress/regress-1757.js deleted file mode 100644 index a850f70c653..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1757.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --string-slices --expose-externalize-string - -var a = "internalized dummy"; -a = "abcdefghijklmnopqrstuvqxy"+"z"; -externalizeString(a, true); -assertEquals('b', a.substring(1).charAt(0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-176.js b/implementation-contributed/v8/mjsunit/regress/regress-176.js deleted file mode 100644 index ef0c4f11d40..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-176.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=176 - -assertArrayEquals(["f", undefined], - "foo".match(/(?:(?=(f)o))?f/), - "zero length match in (?:) with capture in lookahead"); -assertArrayEquals(["f", undefined], - "foo".match(/(?=(f)o)?f/), - "zero length match in (?=) with capture in lookahead"); -assertArrayEquals(["fo", "f"], - "foo".match(/(?:(?=(f)o)f)?o/), - "non-zero length match with capture in lookahead"); -assertArrayEquals(["fo", "f"], - "foo".match(/(?:(?=(f)o)f?)?o/), - "non-zero length match with greedy ? in (?:)"); -assertArrayEquals(["fo", "f"], - "foo".match(/(?:(?=(f)o)f??)?o/), - "non-zero length match with non-greedy ? in (?:), o forces backtrack"); -assertArrayEquals(["fo", "f"], - "foo".match(/(?:(?=(f)o)f??)?./), - "non-zero length match with non-greedy ? in (?:), zero length match causes backtrack"); -assertArrayEquals(["f", undefined], - "foo".match(/(?:(?=(f)o)fx)?./), - "x causes backtrack inside (?:)"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1790.js b/implementation-contributed/v8/mjsunit/regress/regress-1790.js deleted file mode 100644 index 8848eeaf6d6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1790.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test checking that the sequence of element access in built-in -// array functions is specification conform (i.e. [[HasProperty]] might return -// bogus result after [[Get]] has been called). - -function CheckSequence(builtin, callback) { - var array = [1,2,3]; - var callback_count = 0; - var callback_wrapper = function() { - callback_count++; - return callback() - } - - // Define getter that will delete itself upon first invocation. - Object.defineProperty(array, '1', { - get: function () { delete array[1]; }, - configurable: true - }); - - assertTrue(array.hasOwnProperty('1')); - builtin.apply(array, [callback_wrapper, 'argument']); - assertFalse(array.hasOwnProperty('1')); - assertEquals(3, callback_count); -} - -CheckSequence(Array.prototype.every, function() { return true; }); -CheckSequence(Array.prototype.filter, function() { return true; }); -CheckSequence(Array.prototype.forEach, function() { return 0; }); -CheckSequence(Array.prototype.map, function() { return 0; }); -CheckSequence(Array.prototype.reduce, function() { return 0; }); -CheckSequence(Array.prototype.reduceRight, function() { return 0; }); -CheckSequence(Array.prototype.some, function() { return false; }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1849.js b/implementation-contributed/v8/mjsunit/regress/regress-1849.js deleted file mode 100644 index d12c0c6b39d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1849.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1849 - -// Flags: --allow-natives-syntax - -var count = 1e5; -var arr = new Array(count); -assertFalse(%HasDoubleElements(arr)); -for (var i = 0; i < count; i++) { - arr[i] = 0; -} -assertFalse(%HasDoubleElements(arr)); -assertTrue(%HasSmiElements(arr)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-186.js b/implementation-contributed/v8/mjsunit/regress/regress-186.js deleted file mode 100644 index 0c2dbc696d0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-186.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure that eval can introduce a local variable called __proto__. -// See http://code.google.com/p/v8/issues/detail?id=186 - -var setterCalled = false; - -var o = {}; -o.__defineSetter__("x", function() { setterCalled = true; }); - -function runTest(test) { - setterCalled = false; - test(); -} - -function testLocal() { - // Add property called __proto__ to the extension object. - eval("var __proto__ = o"); - // Check that the extension object's prototype did not change. - eval("var x = 27"); - assertFalse(setterCalled, "prototype of extension object changed"); - assertEquals(o, eval("__proto__")); -} - -function testGlobal() { - // Assign to the global __proto__ property. - eval("__proto__ = o"); - // Check that the prototype of the global object changed. - eval("x = 27"); - assertTrue(setterCalled, "prototype of global object did not change"); - setterCalled = false; - assertEquals(o, eval("__proto__")); -} - -runTest(testLocal); -runTest(testGlobal); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-187.js b/implementation-contributed/v8/mjsunit/regress/regress-187.js deleted file mode 100644 index 2f8b0a15676..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-187.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=187 - -assertEquals(["f", undefined], "foo".match(/(?:(?=(f)o)fx|)./)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-189.js b/implementation-contributed/v8/mjsunit/regress/regress-189.js deleted file mode 100644 index a84b62058fe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-189.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we can handle initialization of a deleted const variable. - -// See http://code.google.com/p/v8/issues/detail?id=189. - -function f() { - eval("delete x; const x = 32"); -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1898.js b/implementation-contributed/v8/mjsunit/regress/regress-1898.js deleted file mode 100644 index 5440446fbf7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1898.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(x) { - Math.log(Math.min(0.1, Math.abs(x))); -} - -f(0.1); -f(0.1); -%OptimizeFunctionOnNextCall(f); -f(0.1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-191.js b/implementation-contributed/v8/mjsunit/regress/regress-191.js deleted file mode 100644 index ca513c991d8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-191.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure that accessor setters are ignored on context extension -// objects. -// See http://code.google.com/p/v8/issues/detail?id=191 - -var setterCalled = false; - -Object.prototype.__defineSetter__("x", function() { setterCalled = true; }); - -function test() { - eval("var x = 42"); - assertFalse(setterCalled, "accessor setter call on context object"); - assertEquals(42, eval("x")); -} - -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1919169.js b/implementation-contributed/v8/mjsunit/regress/regress-1919169.js deleted file mode 100644 index fbb82bae678..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1919169.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -function test() { - var s2 = "s2"; - for (var i = 0; i < 2; i++) { - // Crashes in round i==1 with IllegalAccess in %StringAdd(x,y) - var res = 1 + s2; - s2 = 2; - } -} - -// Crash does not occur when code is run at the top level. -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-192.js b/implementation-contributed/v8/mjsunit/regress/regress-192.js deleted file mode 100644 index a8e5e9da330..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-192.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that exceptions are correctly propagated when creating object -// literals. - -// See http://code.google.com/p/v8/issues/detail?id=192 - -// UPDATE: This bug report is no longer valid. In ES5, creating object -// literals MUST NOT trigger inherited accessors, but act as if creating -// the properties using DefineOwnProperty. - -Object.prototype.__defineGetter__("x", function() {}); -Object.prototype.__defineSetter__("y", - function() { assertUnreachable("setter"); }); - -// Creating this object literal will *not* throw an exception because we are -// assigning to a property that has only a getter. -var x = ({ x: 42, y: 37 }); -assertEquals(42, x.x); -assertEquals(37, x.y); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1924.js b/implementation-contributed/v8/mjsunit/regress/regress-1924.js deleted file mode 100644 index 80395414e04..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1924.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// For http://code.google.com/p/v8/issues/detail?id=1924 - -a: break a; -a: b: break a; -a: b: break b; -assertThrows("a: break a a", SyntaxError) -assertThrows("a: break a 1", SyntaxError) -assertThrows("a: break a ''", SyntaxError) -assertThrows("a: break a var b", SyntaxError) -assertThrows("a: break a {}", SyntaxError) - -a: if (0) break a; -b: if (0) {break b;} else {} -c: if (0) break c; else {} -d: if (0) break d; else break d; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-193.js b/implementation-contributed/v8/mjsunit/regress/regress-193.js deleted file mode 100644 index 457c208153c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-193.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that context extension objects do not have a constructor -// property. - -// See http://code.google.com/p/v8/issues/detail?id=193. - -function f() { - return eval("var x; constructor"); -} - -// It should be ok to call the constructor function returned by f. -f()(); - -// The call to f should get the constructor of the receiver which is -// the constructor of the global object. -assertEquals(constructor, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1973.js b/implementation-contributed/v8/mjsunit/regress/regress-1973.js deleted file mode 100644 index 8708bf12757..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1973.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that getters and setters pass unwrapped this values in strict mode -// and wrapped this values is non-strict mode. - -function TestAccessorWrapping(primitive) { - var prototype = Object.getPrototypeOf(Object(primitive)) - // Check that strict mode passes unwrapped this value. - var strict_type = typeof primitive; - Object.defineProperty(prototype, "strict", { - get: function() { "use strict"; assertSame(strict_type, typeof this); }, - set: function() { "use strict"; assertSame(strict_type, typeof this); } - }); - primitive.strict = primitive.strict; - // Check that non-strict mode passes wrapped this value. - var sloppy_type = typeof Object(primitive); - Object.defineProperty(prototype, "sloppy", { - get: function() { assertSame(sloppy_type, typeof this); }, - set: function() { assertSame(sloppy_type, typeof this); } - }); - primitive.sloppy = primitive.sloppy; -} - -TestAccessorWrapping(true); -TestAccessorWrapping(0); -TestAccessorWrapping({}); -TestAccessorWrapping(""); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-1980.js b/implementation-contributed/v8/mjsunit/regress/regress-1980.js deleted file mode 100644 index e1e492b8839..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-1980.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=1980 - -var msg = "Method Error.prototype.toString called on incompatible receiver "; - -var invalid_this = [ "invalid", 23, undefined, null ]; -for (var i = 0; i < invalid_this.length; i++) { - var exception = false; - try { - Error.prototype.toString.call(invalid_this[i]); - } catch (e) { - exception = true; - assertEquals(msg + invalid_this[i], e.message); - } - assertTrue(exception); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-20070207.js b/implementation-contributed/v8/mjsunit/regress/regress-20070207.js deleted file mode 100644 index 701a079ade2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-20070207.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// The following regression test illustrates a problem in using the -// value of setting a property in the arguments object. - -function f(s) { - arguments.length; - return (s += 10) < 0; -} - -assertTrue(f(-100)); -assertTrue(f(-20)); -assertFalse(f(-10)); -assertFalse(f(-5)); -assertFalse(f(0)); -assertFalse(f(10)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-201.js b/implementation-contributed/v8/mjsunit/regress/regress-201.js deleted file mode 100644 index 8847fc01736..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-201.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=201. - -function testsort(n) { - n=1*n; - var numbers=new Array(n); - for (var i=0;i N) throw new Error; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2055.js b/implementation-contributed/v8/mjsunit/regress/regress-2055.js deleted file mode 100644 index 1eaf62c7dae..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2055.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that array literal boilerplate objects can be transitioned while -// existing un-transitioned clones are still being populated. - -function test1(depth) { - if (--depth < 0) { - return []; - } else { - return [ 0, test1(depth) ]; - } -} -assertEquals([0,[0,[]]], test1(2)); - -function test2(depth) { - if (--depth < 0) { - return []; - } else { - var o = [ 0, test2(depth) ]; - return (depth == 0) ? 0.5 : o; - } -} -assertEquals([0,0.5], test2(2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2056.js b/implementation-contributed/v8/mjsunit/regress/regress-2056.js deleted file mode 100644 index d34a7500aa6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2056.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var cases = [ - [0.0, 0.0, 0.0, 0,0], - [undefined, 0.0, NaN, NaN], - [0.0, undefined, NaN, NaN], - [NaN, 0.0, NaN, NaN], - [0.0, NaN, NaN, NaN], - [-NaN, 0.0, NaN, NaN], - [0.0, -NaN, NaN, NaN], - [Infinity, 0.0, Infinity, 0.0], - [0.0, Infinity, Infinity, 0.0], - [-Infinity, 0.0, 0.0, -Infinity], - [0.0, -Infinity, 0.0, -Infinity] -]; - -function do_min(a, b) { - return Math.min(a, b); -} - -function do_max(a, b) { - return Math.max(a, b); -} - -// Make sure that non-crankshaft results match expectations. -for (i = 0; i < cases.length; ++i) { - var c = cases[i]; - assertEquals(c[3], do_min(c[0], c[1])); - assertEquals(c[2], do_max(c[0], c[1])); -} - -// Make sure that crankshaft results match expectations. -for (i = 0; i < cases.length; ++i) { - var c = cases[i]; - %OptimizeFunctionOnNextCall(do_min); - %OptimizeFunctionOnNextCall(do_max); - assertEquals(c[3], do_min(c[0], c[1])); - assertEquals(c[2], do_max(c[0], c[1])); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2058.js b/implementation-contributed/v8/mjsunit/regress/regress-2058.js deleted file mode 100644 index 9a69ea1621f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2058.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// See http://code.google.com/p/v8/issues/detail?id=2058 - -// A match after a replace with a function argument needs to reset -// the flag that determines whether we are using indices or substrings -// to indicate the last match. -"Now is the".replace(/Now (\w+) the/g, function() { - "foo bar".match(/( )/); - assertEquals(RegExp.$1, " "); -}) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2071.js b/implementation-contributed/v8/mjsunit/regress/regress-2071.js deleted file mode 100644 index 91ae2a7b030..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2071.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -a = {}; - -a.b = 42; - -with(a) { - a.f = (function f1() { - function f2() { - return b; - }; - return f2; - })(); -} - -for(var i = 0; i < 10000; i++) { - assertEquals(42, a.f()); -} - -with(a) { - a.g = (function f1() { - function f2() { - function f3() { - return b; - } - return f3; - }; - return f2(); - })(); -} - -for(var i = 0; i < 10000; i++) { - assertEquals(42, a.g()); -} - -function outer() { - with(a) { - a.h = (function f1() { - function f2() { - function f3() { - return b; - } - return f3; - }; - return f2(); - })(); - } -}; - -outer(); - -for(var i = 0; i < 10000; i++) { - assertEquals(42, a.h()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2073.js b/implementation-contributed/v8/mjsunit/regress/regress-2073.js deleted file mode 100644 index 4e40b044c73..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2073.js +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Running this test with --trace_gc will show heap size growth due to -// leaking objects via embedded maps in optimized code. - -var counter = 0; - -function nextid() { - counter += 1; - return counter; -} - -function Scope() { - this.id = nextid(); - this.parent = null; - this.left = null; - this.right = null; - this.head = null; - this.tail = null; - this.counter = 0; -} - -Scope.prototype = { - new: function() { - var Child, - child; - Child = function() {}; - Child.prototype = this; - child = new Child(); - child.id = nextid(); - child.parent = this; - child.left = this.last; - child.right = null; - child.head = null; - child.tail = null; - child.counter = 0; - if (this.head) { - this.tail.right = child; - this.tail = child; - } else { - this.head = this.tail = child; - } - return child; - }, - - destroy: function() { - if ($root == this) return; - var parent = this.parent; - if (parent.head == this) parent.head = this.right; - if (parent.tail == this) parent.tail = this.left; - if (this.left) this.left.right = this.right; - if (this.right) this.right.left = this.left; - } -}; - -function inc(scope) { - scope.counter = scope.counter + 1; -} - -var $root = new Scope(); - -n = 100000; -m = 10; - -function doit() { - var a = $root.new(); - var b = a.new(); - inc(b); - if (i > m) $root.head.destroy(); -} - -for (var i = 0; i < n; i++) { - doit(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2110.js b/implementation-contributed/v8/mjsunit/regress/regress-2110.js deleted file mode 100644 index d7f78d26a7b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2110.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var uint8 = new Uint8Array(1); - -function test() { - uint8[0] = 0x800000aa; - assertEquals(0xaa, uint8[0]); -} - -test(); -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); - -var uint32 = new Uint32Array(1); - -function test2() { - uint32[0] = 0x80123456789abcde; - assertEquals(0x789ac000, uint32[0]); -} - -test2(); -test2(); -%OptimizeFunctionOnNextCall(test2); -test2(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2119.js b/implementation-contributed/v8/mjsunit/regress/regress-2119.js deleted file mode 100644 index b735ddf3a66..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2119.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --nouse-ic - -function strict_function() { - "use strict" - undeclared = 1; -} - -assertThrows(strict_function); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2132.js b/implementation-contributed/v8/mjsunit/regress/regress-2132.js deleted file mode 100644 index c2f6c297b46..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2132.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -function mul(x, y) { - return (x * y) | 0; -} - -mul(0, 0); -mul(0, 0); -%OptimizeFunctionOnNextCall(mul); -assertEquals(0, mul(0, -1)); -assertOptimized(mul); - -function div(x, y) { - return (x / y) | 0; -} - -div(4, 2); -div(4, 2); -%OptimizeFunctionOnNextCall(div); -assertEquals(1, div(5, 3)); -assertOptimized(div); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2153.js b/implementation-contributed/v8/mjsunit/regress/regress-2153.js deleted file mode 100644 index 3170042bedc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2153.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o = {}; -o.__defineGetter__('foo', function () { return null; }); -var o = {}; -o.foo = 42; -assertEquals(42, o.foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2163.js b/implementation-contributed/v8/mjsunit/regress/regress-2163.js deleted file mode 100644 index bfce9ff462f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2163.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Handy abbreviation. -var dp = Object.defineProperty; - -function getter() { return 111; } -function setter(x) { print(222); } -function anotherGetter() { return 333; } -function anotherSetter(x) { print(444); } -var obj1, obj2; - -// obj1 and obj2 share the getter accessor. -obj1 = {}; -dp(obj1, "alpha", { get: getter, set: setter }); -obj2 = {} -dp(obj2, "alpha", { get: getter }); -obj1 = {}; -assertEquals(111, obj2.alpha); -gc(); -assertEquals(111, obj2.alpha); - -// obj1, obj2, and obj3 share the getter accessor. -obj1 = {}; -dp(obj1, "alpha", { get: getter, set: setter }); -obj2 = {} -dp(obj2, "alpha", { get: getter }); -obj1 = {}; -gc(); -obj3 = {} -dp(obj3, "alpha", { get: getter }); - - -// obj1 and obj2 share the getter and setter accessor. -obj1 = {}; -dp(obj1, "alpha", { get: getter, set: setter }); -obj1.beta = 10; -obj2 = {} -dp(obj2, "alpha", { get: getter, set: setter }); -obj1 = {}; -assertEquals(111, obj2.alpha); -gc(); -obj2.alpha = 100 -assertEquals(111, obj2.alpha); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2170.js b/implementation-contributed/v8/mjsunit/regress/regress-2170.js deleted file mode 100644 index 99f432dfcf7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2170.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function array_fun() { - for (var i = 0; i < 2; i++) { - var a = [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8]; - var x = new Array(); - x.fixed$length = true; - for (var j = 0; j < a.length; j++) { - x.push(a[j]); - } - for(var j = 0; j < x.length; j++) { - if (typeof x[j] != 'number') { - throw "foo"; - } - x[j] = x[j]; - } - } -} - -try { - for (var i = 0; i < 10; ++i) { - array_fun(); - } - %OptimizeFunctionOnNextCall(array_fun); - for (var i = 0; i < 10; ++i) { - array_fun(); - } -} catch (e) { - assertUnreachable(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2172.js b/implementation-contributed/v8/mjsunit/regress/regress-2172.js deleted file mode 100644 index 6d938453d32..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2172.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -for (var i = 0; i < 10000; i++){ - (i + "\0").split(/(.)\1/i); -} - -for (var i = 0; i < 10000; i++){ - (i + "\u1234\0").split(/(.)\1/i); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-219.js b/implementation-contributed/v8/mjsunit/regress/regress-219.js deleted file mode 100644 index b751f0f60f1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-219.js +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests handling of flags for regexps. - -// We should now allow duplicates of flags. -// (See http://code.google.com/p/v8/issues/detail?id=219) - -// This has been reversed by issue 1628, since other browsers have also -// tightened their syntax. -// (See http://code.google.com/p/v8/issues/detail?id=1628) - -// Base tests: we recognize the basic flags - -function assertFlags(re, global, multiline, ignoreCase) { - var name = re + " flag: "; - (global ? assertTrue : assertFalse)(re.global, name + "g"); - (multiline ? assertTrue : assertFalse)(re.multiline, name + "m"); - (ignoreCase ? assertTrue : assertFalse)(re.ignoreCase, name + "i"); -} - -var re = /a/; -assertFlags(re, false, false, false) - -re = /a/gim; -assertFlags(re, true, true, true) - -re = RegExp("a",""); -assertFlags(re, false, false, false) - -re = RegExp("a", "gim"); -assertFlags(re, true, true, true) - -// Double i's - -assertThrows("/a/ii"); - -assertThrows("/a/gii"); - -assertThrows("/a/igi"); - -assertThrows("/a/iig"); - -assertThrows("/a/gimi"); - -assertThrows("/a/giim"); - -assertThrows("/a/igim"); - -assertThrows(function(){ return RegExp("a", "ii"); }) - -assertThrows(function(){ return RegExp("a", "gii"); }) - -assertThrows(function(){ return RegExp("a", "igi"); }) - -assertThrows(function(){ return RegExp("a", "iig"); }) - -assertThrows(function(){ return RegExp("a", "gimi"); }) - -assertThrows(function(){ return RegExp("a", "giim"); }) - -assertThrows(function(){ return RegExp("a", "igim"); }) - -// Tripple i's - -assertThrows("/a/iii"); - -assertThrows("/a/giii"); - -assertThrows("/a/igii"); - -assertThrows("/a/iigi"); - -assertThrows("/a/iiig"); - -assertThrows("/a/miiig"); - -assertThrows(function(){ return RegExp("a", "iii"); }) - -assertThrows(function(){ return RegExp("a", "giii"); }) - -assertThrows(function(){ return RegExp("a", "igii"); }) - -assertThrows(function(){ return RegExp("a", "iigi"); }) - -assertThrows(function(){ return RegExp("a", "iiig"); }) - -assertThrows(function(){ return RegExp("a", "miiig"); }) - -// Illegal flags - valid flags late in string. - -assertThrows("/a/arglebargleglopglyf"); - -assertThrows("/a/arglebargleglopglif"); - -assertThrows("/a/arglebargleglopglym"); - -assertThrows("/a/arglebargleglopglim"); - -// Case of flags still matters. - -var re = /a/gmi; -assertFlags(re, true, true, true) - -assertThrows("/a/Gmi"); - -assertThrows("/a/gMi"); - -assertThrows("/a/gmI"); - -assertThrows("/a/GMi"); - -assertThrows("/a/GmI"); - -assertThrows("/a/gMI"); - -assertThrows("/a/GMI"); - -// Unicode escape sequences are not interpreted. - -assertThrows("/a/\\u0067"); -assertThrows("/a/\\u0069"); -assertThrows("/a/\\u006d"); -assertThrows("/a/\\u006D"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2193.js b/implementation-contributed/v8/mjsunit/regress/regress-2193.js deleted file mode 100644 index 4ec050e10a6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2193.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function bozo() {}; -function MakeClosure() { - return function f(use_literals) { - if (use_literals) { - return [1,2,3,3,4,5,6,7,8,9,bozo]; - } else { - return 0; - } - } -} - -// Create two closures that share the same literal boilerplates. -var closure1 = MakeClosure(); -var closure2 = MakeClosure(); -var expected = [1,2,3,3,4,5,6,7,8,9,bozo]; - -// Make sure we generate optimized code for the first closure after -// warming it up properly so that the literals boilerplate is generated -// and the optimized code uses CreateArrayLiteralShallow runtime call. -assertEquals(0, closure1(false)); -assertEquals(expected, closure1(true)); -%OptimizeFunctionOnNextCall(closure1); -assertEquals(expected, closure1(true)); - -// Optimize the second closure, which should reuse the optimized code -// from the first closure with the same literal boilerplates. -assertEquals(0, closure2(false)); -%OptimizeFunctionOnNextCall(closure2); -assertEquals(expected, closure2(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2226.js b/implementation-contributed/v8/mjsunit/regress/regress-2226.js deleted file mode 100644 index 1ac3d3062a0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2226.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var foo = function() { 0; /* foo function */ }; -var bar = function() { 1; /* bar function */ }; -var baz = function() { 2; /* baz function */ }; - -var test = foo.test = bar.test = baz; - -assertEquals(baz, test); -assertEquals(baz, foo.test); -assertEquals(baz, bar.test); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2234.js b/implementation-contributed/v8/mjsunit/regress/regress-2234.js deleted file mode 100644 index 8da513e30e4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2234.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function test(i) { - // Overwrite random parts of the transcendental cache. - Math.sin(i / 1779 * Math.PI); - // Check whether the first cache line has been accidentally overwritten - // with incorrect key. - assertEquals(0, Math.sin(0)); -} - -for (i = 0; i < 10000; ++i) { - test(i); - if (i == 0) %OptimizeFunctionOnNextCall(test); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2249.js b/implementation-contributed/v8/mjsunit/regress/regress-2249.js deleted file mode 100644 index 07d687d8191..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2249.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --gc-interval=10 --stress-compaction - -var o = {}; -o[Math.pow(2,30)-1] = 0; -o[Math.pow(2,31)-1] = 0; -o[1] = 0; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2249423.js b/implementation-contributed/v8/mjsunit/regress/regress-2249423.js deleted file mode 100644 index a590f33f68d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2249423.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/chromium/issues/detail?id=27227 -// Regression test for stack corruption issue. - -function top() { - function g(a, b) {} - function t() { - for (var i=0; i<1; ++i) { - g(32768, g()); - } - } - t(); -} -top(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-225.js b/implementation-contributed/v8/mjsunit/regress/regress-225.js deleted file mode 100644 index e101ca070f1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-225.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=225 - -assertEquals("foo", "foo".replace(/(?:)/g, function() { return ""; })); - -assertEquals("foo", "foo".replace(/(?:)/g, "")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2250.js b/implementation-contributed/v8/mjsunit/regress/regress-2250.js deleted file mode 100644 index e2ce5466281..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2250.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -// The original problem from the bug: In the example below SMI check for b -// generated for inlining of equals invocation (marked with (*)) will be hoisted -// out of the loop across the typeof b === "object" condition and cause an -// immediate deopt. Another problem here is that no matter how many time we -// deopt and reopt we will continue to produce the wrong code. -// -// The fix is to notice when a deopt and subsequent reopt doesn't find -// additional type information, indicating that optimistic LICM should be -// disabled during compilation. - -function eq(a, b) { - if (typeof b === "object") { - return b.equals(a); // (*) - } - return a === b; -} - -Object.prototype.equals = function (other) { - return (this === other); -}; - -function test() { - for (var i = 0; !eq(i, 10); i++) - ; -} - -eq({}, {}); -eq({}, {}); -eq(1, 1); -eq(1, 1); -test(); -%OptimizeFunctionOnNextCall(test); -test(); -%OptimizeFunctionOnNextCall(test); -// Second compilation should have noticed that LICM wasn't a good idea, and now -// function should no longer deopt when called. -test(); -assertOptimized(test); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2261.js b/implementation-contributed/v8/mjsunit/regress/regress-2261.js deleted file mode 100644 index 000e07de5b5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2261.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test materialization of the arguments object when deoptimizing a -// strict mode closure after modifying an argument. - -(function () { - var forceDeopt = 0; - function inner(x) { - "use strict"; - x = 2; - // Do not remove this %DebugPrint as it makes sure the deopt happens - // after the assignment and is not hoisted above the assignment. - %DebugPrint(arguments[0]); - forceDeopt + 1; - return arguments[0]; - } - - assertEquals(1, inner(1)); - assertEquals(1, inner(1)); - %OptimizeFunctionOnNextCall(inner); - assertEquals(1, inner(1)); - forceDeopt = "not a number"; - assertEquals(1, inner(1)); -})(); - - -// Test materialization of the arguments object when deoptimizing an -// inlined strict mode closure after modifying an argument. - -(function () { - var forceDeopt = 0; - function inner(x) { - "use strict"; - x = 2; - // Do not remove this %DebugPrint as it makes sure the deopt happens - // after the assignment and is not hoisted above the assignment. - %DebugPrint(arguments[0]); - forceDeopt + 1; - return arguments[0]; - } - - function outer(x) { - return inner(x); - } - - assertEquals(1, outer(1)); - assertEquals(1, outer(1)); - %OptimizeFunctionOnNextCall(outer); - assertEquals(1, outer(1)); - forceDeopt = "not a number"; - assertEquals(1, outer(1)); -})(); - - -// Test materialization of the multiple arguments objects when -// deoptimizing several inlined closure after modifying an argument. - -(function () { - var forceDeopt = 0; - function inner(x,y,z) { - "use strict"; - x = 3; - // Do not remove this %DebugPrint as it makes sure the deopt happens - // after the assignment and is not hoisted above the assignment. - %DebugPrint(arguments[0]); - forceDeopt + 1; - return arguments[0]; - } - - function middle(x) { - "use strict"; - x = 2; - return inner(10*x, 20*x, 30*x) + arguments[0]; - } - - function outer(x) { - return middle(x); - } - - assertEquals(21, outer(1)); - assertEquals(21, outer(1)); - %OptimizeFunctionOnNextCall(outer); - assertEquals(21, outer(1)); - forceDeopt = "not a number"; - assertEquals(21, outer(1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2263.js b/implementation-contributed/v8/mjsunit/regress/regress-2263.js deleted file mode 100644 index 9e4b079bdc6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2263.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertThrows = function assertThrows(code, type_opt, cause_opt) { - var threwException = true; - try { - if (typeof code === 'function') { - code(); - } else { - eval(code); - } - threwException = false; - } catch (e) { - if (typeof type_opt === 'function') { - assertInstanceof(e, type_opt); - } else if (type_opt !== void 0) { - failWithMessage("invalid use of assertThrows, maybe you want assertThrowsEquals"); - } - if (arguments.length >= 3) { - assertEquals(e.type, cause_opt); - } - // Success. - return; - } - failWithMessage("Did not throw exception"); -}; - -var obj = { length: { valueOf: function(){ throw { type: "length" }}}}; -var sep = { toString: function(){ throw { type: "toString" }}}; -assertThrows("Array.prototype.join.call(obj, sep)", undefined, "length"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-227.js b/implementation-contributed/v8/mjsunit/regress/regress-227.js deleted file mode 100644 index ebb46272dc1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-227.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var re = /\u23a1|x/; -var res = re.exec("!"); -assertEquals(null, res, "Throwing away high bits on ASCII string"); - -res = re.exec("!x"); -assertEquals(["x"], res, "Throwing away high bits on ASCII string"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2273.js b/implementation-contributed/v8/mjsunit/regress/regress-2273.js deleted file mode 100644 index 76b5ab6aa6b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2273.js +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var CheckStringReceiver = function() { - "use strict"; - // Receivers of strict functions are not coerced. - assertEquals("string", typeof this); -}; - -var CheckNumberReceiver = function() { - "use strict"; - // Receivers of strict functions are not coerced. - assertEquals("number", typeof this); -}; - -var CheckUndefinedReceiver = function() { - "use strict"; - // Receivers of strict functions are not coerced. - assertEquals("undefined", String(this)); -}; - -var CheckNullReceiver = function() { - "use strict"; - // Receivers of strict functions are not coerced. - assertEquals("null", String(this)); -}; - -var CheckCoersion = function() { - // Receivers of non-strict functions are coerced to objects. - assertEquals("object", typeof this); -}; - - -function strict_mode() { - "use strict"; - CheckStringReceiver.call("foo"); - CheckNumberReceiver.call(42); - CheckUndefinedReceiver.call(undefined); - CheckNullReceiver.call(null); - [1].forEach(CheckStringReceiver, "foo"); - [2].every(CheckStringReceiver, "foo"); - [3].filter(CheckStringReceiver, "foo"); - [4].some(CheckNumberReceiver, 42); - [5].map(CheckNumberReceiver, 42); - - CheckCoersion.call("foo"); - CheckCoersion.call(42); - CheckCoersion.call(undefined); - CheckCoersion.call(null); - [1].forEach(CheckCoersion, "foo"); - [2].every(CheckCoersion, "foo"); - [3].filter(CheckCoersion, "foo"); - [4].some(CheckCoersion, 42); - [5].map(CheckCoersion, 42); -}; -strict_mode(); - -function sloppy_mode() { - CheckStringReceiver.call("foo"); - CheckNumberReceiver.call(42); - CheckUndefinedReceiver.call(undefined); - CheckNullReceiver.call(null); - [1].forEach(CheckStringReceiver, "foo"); - [2].every(CheckStringReceiver, "foo"); - [3].filter(CheckStringReceiver, "foo"); - [4].some(CheckNumberReceiver, 42); - [5].map(CheckNumberReceiver, 42); - - CheckCoersion.call("foo"); - CheckCoersion.call(42); - CheckCoersion.call(undefined); - CheckCoersion.call(null); - [1].forEach(CheckCoersion, "foo"); - [2].every(CheckCoersion, "foo"); - [3].filter(CheckCoersion, "foo"); - [4].some(CheckCoersion, 42); - [5].map(CheckCoersion, 42); -}; -sloppy_mode(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2284.js b/implementation-contributed/v8/mjsunit/regress/regress-2284.js deleted file mode 100644 index 24bf58e2db6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2284.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -assertThrows("%foobar();", Error); -assertThrows("%constructor();", Error); -assertThrows("%constructor(23);", Error); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2286.js b/implementation-contributed/v8/mjsunit/regress/regress-2286.js deleted file mode 100644 index 02649004428..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2286.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -assertThrows("f()", ReferenceError); -assertThrows("%f()", Error); -assertThrows("%_f()", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2289.js b/implementation-contributed/v8/mjsunit/regress/regress-2289.js deleted file mode 100644 index d860bbbf70c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2289.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var foo = "a"; -for (var i = 0; i < 12; i++) foo += foo; -foo = foo + 'b' + foo; - -foo.replace(/b/, "a"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2291.js b/implementation-contributed/v8/mjsunit/regress/regress-2291.js deleted file mode 100644 index 96627fc6f0b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2291.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function StrictCompare(x) { return x === Object(x); } - -var obj = new Object(); -var obj2 = new Object(); -obj == obj; // Populate IC cache with non-strict comparison. - -StrictCompare(obj); // Set IC in StrictCompare from IC cache. - -assertFalse(StrictCompare('foo')); // Use == stub for === operation. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2294.js b/implementation-contributed/v8/mjsunit/regress/regress-2294.js deleted file mode 100644 index 43ba10df030..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2294.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var clampedArray = new Uint8ClampedArray(10); - -function test() { - clampedArray[0] = 0.499; - assertEquals(0, clampedArray[0]); - clampedArray[0] = 0.5; - assertEquals(0, clampedArray[0]); - clampedArray[0] = 0.501; - assertEquals(1, clampedArray[0]); - clampedArray[0] = 1.499; - assertEquals(1, clampedArray[0]); - clampedArray[0] = 1.5; - assertEquals(2, clampedArray[0]); - clampedArray[0] = 1.501; - assertEquals(2, clampedArray[0]); - clampedArray[0] = 2.5; - assertEquals(2, clampedArray[0]); - clampedArray[0] = 3.5; - assertEquals(4, clampedArray[0]); - clampedArray[0] = 252.5; - assertEquals(252, clampedArray[0]); - clampedArray[0] = 253.5; - assertEquals(254, clampedArray[0]); - clampedArray[0] = 254.5; - assertEquals(254, clampedArray[0]); - clampedArray[0] = 256.5; - assertEquals(255, clampedArray[0]); - clampedArray[0] = -0.5; - assertEquals(0, clampedArray[0]); - clampedArray[0] = -1.5; - assertEquals(0, clampedArray[0]); - clampedArray[0] = 1000000000000; - assertEquals(255, clampedArray[0]); - clampedArray[0] = -1000000000000; - assertEquals(0, clampedArray[0]); -} - -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-231.js b/implementation-contributed/v8/mjsunit/regress/regress-231.js deleted file mode 100644 index bce05000130..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-231.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See issue 231 -// A stack growth during a look-ahead could restore a pointer to the old stack. -// (Test derived from crash at ibs.blumex.com). - -var re = /Ggcy\b[^D]*D((?:(?=([^G]+))\2|G(?!gcy\b[^D]*D))*?)GIgcyD/; - -var str = 'GgcyDGgcy.saaaa.aDGaaa.aynaaaaaaaaacaaaaagcaaaaaaaancaDGgnayr' + - '.aryycnaaaataaaa.aryyacnaaataaaa.aaaaraaaaa.aaagaaaaaaaaDGgaaaaDGga' + - '.aaagaaaaaaaaDGga.nyataaaaragraa.anyataaagaca.agayraaarataga.aaacaa' + - '.aaagaa.aaacaaaDGaaa.aynaaaaaaaaacaaaaagcaaaaaacaagaa.agayraaaGgaaa' + - '.trgaaaaaagaatGanyara.caagaaGaD.araaaa_aat_aayDDaaDGaaa.aynaaaaaaaa' + - 'acaaaaagcaaaaaacaaaaa.agayraaaGgaaa.trgaaaaaaatGanyaraDDaaDGacna.ay' + - 'naaaaaaaaacaaaaagcaaaaaacaaaraGgaaa.naaaaagaaaaaaraynaaGanyaraDDaaD' + - 'aGgaaa.saaangaaaaraaaGgaaa.trgaaaragaaaarGanyaraDDDaGIacnaDGIaaaDGI' + - 'aaaDGIgaDGga.anyataaagaca.agayraaaaagaa.aaaaa.cnaaaata.aca.aca.aca.' + - 'acaaaDGgnayr.aaaaraaaaa.aaagaaaaaaaaDGgaaaaDGgaDGga.aayacnaaaaa.ayn' + - 'aaaaaaaaacaaaaagcaaaaaanaraDGaDacaaaaag_anaraGIaDGIgaDGIgaDGgaDGga.' + - 'aayacnaaaaa.aaagaaaaaaaaDGaa.aaagaaaaaaaa.aaaraaaa.aaaanaraaaa.IDGI' + - 'gaDGIgaDGgaDGga.aynaaaaaaaaacaaaaagcaaaaaaaraaaa.anyataaagacaDaGgaa' + - 'a.trgGragaaaacgGaaaaaaaG_aaaaa_Gaaaaaaaaa,.aGanar.anaraDDaaGIgaDGga' + - '.aynaaaaaaaaacaaaaagcaaaaaaanyara.anyataaagacaDGaDaaaaag_caaaaag_an' + - 'araGIaDGIgaDGIgaDGgaDGga.aynaaaaaaaaacaaaaagcaaaaaaaraaaa.anyataaag' + - 'acaDaGgaaa.trgGragaaaacgGaaaaaaaG_aaaaa_aaaaaa,.aaaaacaDDaaGIgaDGga' + - '.aynaaaaaaaaacaaaaagcaaaaaaanyara.anyataaagacaDGaDataaac_araaaaGIaD' + - 'GIgaDGIgaDaagcyaaGgaDGga.aayacnaaaaa.aaagaaaaaaaaDGaa.aaagaaaaaaaa.' + - 'aaaraaaa.aaaanaraaaa.IDGIgaDGIgaDGgcy.asaadanyaga.aa.aaaDGgaDGga.ay' + - 'naaaaaaaaacaaaaagcaaaaaaaraaaa.anyataaagacaDaGgaaa.trgGragaaaacgGaa' + - 'aaaaaG_aaaaa_DaaaaGaa,.aDanyagaaDDaaGIgaDGga.aynaaaaaaaaacaaaaagcaa' + - 'aaaaanyara.anyataaagacaDGaDadanyagaaGIaDGIgaDGIgaDGIgcyDGgcy.asaaga' + - 'cras.agra_yratga.aa.aaaarsaaraa.aa.agra_yratga.aa.aaaDGgaDGga.aynaa' + - 'aaaaaaacaaaaagcaaaaaaaraaaa.anyataaagacaDaGgaaa.trgGragaaaacgGaaaaa' + - 'aaG_aaaaa_aGaaaaaaGaa,.aaratgaaDDaaGIgaDGga.aynaaaaaaaaacaaaaagcaaa' + - 'aaaanyara.anyataaagacaDGaDaagra_yratgaaGIaDGIgaDGIgaDGIgcyDGgcy.asa' + - 'agacras.aratag.aa.aaaarsaaraa.aa.aratag.aa.aaaDGgaDGga.aynaaaaaaaaa' + - 'caaaaagcaaaaaaaraaaa.anyataaagacaDaGgaaa.trgGragaaaacgGaaaaaaaG_aaa' + - 'aa_aaaaaGa,.aaratagaDDaaGIgaDGga.aynaaaaaaaaacaaaaagcaaaaaaanyara.a' + - 'nyataaagacaDGaDaaratagaGIaDGIgaDGIgaDGIgcyDGgcy.asaagacras.gaaax_ar' + - 'atag.aa.aaaarsaaraa.aa.gaaax_aratag.aa.aaaDGgaDGga.aynaaaaaaaaacaaa' + - 'aagcaaaaaaaraaaa.anyataaagacaDaGgaaa.trgGragaaaacgGaaaaaaaG_aaaaa_G' + - 'aaaaaaaaaGa,.aaratagaDDaaGIgaDGga.aynaaaaaaaaacaaaaagcaaaaaaanyara.' + - 'anyataaagacaDGaDagaaax_aratagaGIaDGIgaDGIgaDGIgcyDGgcy.asaagacras.c' + - 'ag_aaar.aa.aaaarsaaraa.aa.cag_aaar.aa.aaaDGgaDGga.aynaaaaaaaaacaaaa' + - 'agcaaaaaaaraaaa.anyataaagacaDaGgaaa.trgGragaaaacgGaaaaaaaG_aaaaa_aa' + - 'Gaaaaa,.aaagaaaraDDaaGIgaDGga.aynaaaaaaaaacaaaaagcaaaaaaanyara.anya' + - 'taaagacaDGaDacag_aaaraGIaDGIgaDGIgaDGIgcyDGgcy.asaagacras.aaggaata_' + - 'aa_cynaga_cc.aa.aaaarsaaraa.aa.aaggaata_aa_cynaga_cc.aa.aaaDGgaDGga' + - '.aynaaaaaaaaacaaaaagcaaaaaaaraaaa.anyataaagacaDaGgaaa.trgGragaaaacg' + - 'GaaaaaaaG_aaaaa_aaGGaaaa_aa_aaaaGa_aaa,.aaynagaIcagaDDaaGIgaDGga.ay' + - 'naaaaaaaaacaaaaagcaaaaaaanyara.anyataaagacaDGaDaaaggaata_aa_cynaga_' + - 'ccaGIaDGIgaDGIgaDGIgcyDGgcy.asaagacras.syaara_aanargra.aa.aaaarsaar' + - 'aa.aa.syaara_aanargra.aa.aaaDGgaDGga.aynaaaaaaaaacaaaaagcaaaaaaaraa' + - 'aa.anyataaagacaDaGgaaa.trgGragaaaacgGaaaaaaaG_aaaaa_aaaaaaaaaaaGaaa' + - ',.aaanargraaDDaaGIgaDGga.aynaaaaaaaaacaaaaagcaaaaaaanyara.anyataaag' + - 'acaDGaDasyaara_aanargraaGIaDGIgaDGIgaDGIgcyDGgcy.asaagacras.cynag_a' + - 'anargra.aa.aaaarsaaraa.aa.cynag_aanargra.aa.aaaDGgaDGga.aynaaaaaaaa' + - 'acaaaaagcaaaaaaaraaaa.anyataaagacaDaGgaaa.trgGragaaaacgGaaaaaaaG_aa' + - 'aaa_aaaaGaaaaaGaaa,.aaanargraaDDaaGIgaDGga.aynaaaaaaaaacaaaaagcaaaa' + - 'aaanyara.anyataaagacaDGaDacynag_aanargraaGIaDGIgaDGIgaDGIgcyDGgaDGg' + - 'a.aynaaaaaaaaacaaaaagcaaaaaaaraaaa.anyataaagacaDaGgaaa.trgGragaaaac' + - 'gGaaaaaaaG'; - -//Shouldn't crash. - -var res = re.test(str); -assertTrue(res); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2315.js b/implementation-contributed/v8/mjsunit/regress/regress-2315.js deleted file mode 100644 index 9e40d0d3e3f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2315.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -var foo = (function() { - return eval("(function bar() { return 1; })"); -})(); - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); - -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2326.js b/implementation-contributed/v8/mjsunit/regress/regress-2326.js deleted file mode 100644 index d2edf2b1648..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2326.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This tests that we do not share optimized code across closures that -// were optimized using OSR (for a particular OSR entry AST id) even if -// caching of optimized code kicks in. - -function makeClosure() { - function f(mode, iterations) { - var accumulator = 0; - if (mode == 1) { - while (--iterations > 0) accumulator = Math.ceil(accumulator); - return 1; - } else { - while (--iterations > 0) accumulator = Math.floor(accumulator); - return 2; - } - } - return f; -} - -// Generate two closures sharing the same underlying function literal. -var f1 = makeClosure(); -var f2 = makeClosure(); - -// This function should be optimized via OSR in the first tight loop. -assertSame(1, f1(1, 100000)); - -// This function should be optimized via OSR in the second tight loop. -assertSame(2, f2(2, 100000)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-233.js b/implementation-contributed/v8/mjsunit/regress/regress-233.js deleted file mode 100644 index 8723679baf3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-233.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See issue 233 -// A stack overflow detected by a global regexp match wasn't handled correctly. - -// This code shouldn't segmentation fault. -function loop(s) { - loop(s.replace(/\s/g, "")); -} -try { - loop("No"); -} catch(e) { - // Stack overflow caught. -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2339.js b/implementation-contributed/v8/mjsunit/regress/regress-2339.js deleted file mode 100644 index d7d2bb398a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2339.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --opt - -function simple() { - return simple_two_args(0, undefined); -} - -function simple_two_args(always_zero, always_undefined) { - var always_five = always_undefined || 5; - return always_zero * always_five * .5; -} - - -simple(); -simple(); -%OptimizeFunctionOnNextCall(simple); -simple(); -assertOptimized(simple); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-234101.js b/implementation-contributed/v8/mjsunit/regress/regress-234101.js deleted file mode 100644 index 74228dfabe5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-234101.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Currently, the gap resolver doesn't handle moves from a ConstantOperand to a -// DoubleRegister, but these kind of moves appeared when HConstant::EmitAtUses -// was changed to allow special double values (-0, NaN, hole). So we should -// either enhance the gap resolver or make sure that such moves don't happen. - -function foo(x) { - return (x ? NaN : 0.2) + 0.1; -} - -foo(false); -foo(false); -%OptimizeFunctionOnNextCall(foo); -foo(false); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2346.js b/implementation-contributed/v8/mjsunit/regress/regress-2346.js deleted file mode 100644 index 4c88b3e284d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2346.js +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This file only tests very simple descriptors that always have -// configurable, enumerable, and writable set to true. -// A range of more elaborate tests are performed in -// object-define-property.js - -// Flags: --stress-runs=5 - -function get() { return x; } -function set(x) { this.x = x; } - -var obj = {x: 1}; -obj.__defineGetter__("accessor", get); -obj.__defineSetter__("accessor", set); -var a = new Array(); -a[1] = 42; -obj[1] = 42; - -var descIsData = Object.getOwnPropertyDescriptor(obj, 'x'); -assertTrue(descIsData.enumerable); -assertTrue(descIsData.writable); -assertTrue(descIsData.configurable); - -var descIsAccessor = Object.getOwnPropertyDescriptor(obj, 'accessor'); -assertTrue(descIsAccessor.enumerable); -assertTrue(descIsAccessor.configurable); -assertTrue(descIsAccessor.get == get); -assertTrue(descIsAccessor.set == set); - -var descIsNotData = Object.getOwnPropertyDescriptor(obj, 'not-x'); -assertTrue(descIsNotData == undefined); - -var descIsNotAccessor = Object.getOwnPropertyDescriptor(obj, 'not-accessor'); -assertTrue(descIsNotAccessor == undefined); - -var descArray = Object.getOwnPropertyDescriptor(a, '1'); -assertTrue(descArray.enumerable); -assertTrue(descArray.configurable); -assertTrue(descArray.writable); -assertEquals(descArray.value, 42); - -var descObjectElement = Object.getOwnPropertyDescriptor(obj, '1'); -assertTrue(descObjectElement.enumerable); -assertTrue(descObjectElement.configurable); -assertTrue(descObjectElement.writable); -assertEquals(descObjectElement.value, 42); - -// String objects. -var a = new String('foobar'); -for (var i = 0; i < a.length; i++) { - var descStringObject = Object.getOwnPropertyDescriptor(a, i); - assertTrue(descStringObject.enumerable); - assertFalse(descStringObject.configurable); - assertFalse(descStringObject.writable); - assertEquals(descStringObject.value, a.substring(i, i+1)); -} - -// Support for additional attributes on string objects. -a.x = 42; -a[10] = 'foo'; -var descStringProperty = Object.getOwnPropertyDescriptor(a, 'x'); -assertTrue(descStringProperty.enumerable); -assertTrue(descStringProperty.configurable); -assertTrue(descStringProperty.writable); -assertEquals(descStringProperty.value, 42); - -var descStringElement = Object.getOwnPropertyDescriptor(a, '10'); -assertTrue(descStringElement.enumerable); -assertTrue(descStringElement.configurable); -assertTrue(descStringElement.writable); -assertEquals(descStringElement.value, 'foo'); - -// Test that elements in the prototype chain is not returned. -var proto = {}; -proto[10] = 42; - -var objWithProto = new Array(); -objWithProto.prototype = proto; -objWithProto[0] = 'bar'; -var descWithProto = Object.getOwnPropertyDescriptor(objWithProto, '10'); -assertEquals(undefined, descWithProto); - -// Test elements on global proxy object. -var global = (function() { return this; })(); - -global[42] = 42; - -function el_getter() { return 239; }; -function el_setter() {}; -Object.defineProperty(global, '239', {get: el_getter, set: el_setter}); - -var descRegularElement = Object.getOwnPropertyDescriptor(global, '42'); -assertEquals(42, descRegularElement.value); - -var descAccessorElement = Object.getOwnPropertyDescriptor(global, '239'); -assertEquals(el_getter, descAccessorElement.get); -assertEquals(el_setter, descAccessorElement.set); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-235311.js b/implementation-contributed/v8/mjsunit/regress/regress-235311.js deleted file mode 100644 index 300714718f7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-235311.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var new_space_string = ""; -for (var i = 0; i < 12800; ++i) { - new_space_string += - String.fromCharCode(Math.random() * 26 + (4294967295) | 0); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2373.js b/implementation-contributed/v8/mjsunit/regress/regress-2373.js deleted file mode 100644 index 16a87ece6f5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2373.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o = JSON.parse('{"a":2600753951}'); -assertEquals(2600753951, o.a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2374.js b/implementation-contributed/v8/mjsunit/regress/regress-2374.js deleted file mode 100644 index f379cc55b7f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2374.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var msg = '{"result":{"profile":{"head":{"functionName":"(root)","url":"","lineNumber":0,"totalTime":495.7243772462511,"selfTime":0,"numberOfCalls":0,"visible":true,"callUID":2771605942,"children":[{"functionName":"(program)","url":"","lineNumber":0,"totalTime":495.7243772462511,"selfTime":495.7243772462511,"numberOfCalls":0,"visible":true,"callUID":1902715303,"children":[]}]},"bottomUpHead":{"functionName":"(root)","url":"","lineNumber":0,"totalTime":495.7243772462511,"selfTime":0,"numberOfCalls":0,"visible":true,"callUID":2771605942,"children":[{"functionName":"(program)","url":"","lineNumber":0,"totalTime":495.7243772462511,"selfTime":495.7243772462511,"numberOfCalls":0,"visible":true,"callUID":1902715303,"children":[]}]}}},"id":41}'; - -var obj = JSON.parse(msg); -var obj2 = JSON.parse(msg); - -assertEquals(JSON.stringify(obj), JSON.stringify(obj2)); -assertEquals(JSON.stringify(obj, null, 0), JSON.stringify(obj2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-237617.js b/implementation-contributed/v8/mjsunit/regress/regress-237617.js deleted file mode 100644 index 7b7e50f247c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-237617.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict" - -function f() { - throw new Error("test stack"); -} - -var error_stack = ""; -try { - f.call(null); -} catch (e) { - error_stack = e.stack; -} - -assertTrue(error_stack.indexOf("test stack") > 0); -assertTrue(error_stack.indexOf("illegal") < 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2398.js b/implementation-contributed/v8/mjsunit/regress/regress-2398.js deleted file mode 100644 index 1c66e7f84c0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2398.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict"; - -var observed = false; - -var object = { get toString() { observed = true; } }; -Object.defineProperty(object, "ro", { value: 1 }); - -try { - object.ro = 2; // TypeError caused by trying to write to read-only. -} catch (e) { - e.message; // Forces formatting of the message object. -} - -assertFalse(observed); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2410.js b/implementation-contributed/v8/mjsunit/regress/regress-2410.js deleted file mode 100644 index c16fd14cdc6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2410.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Object.prototype should be ignored in Object.getOwnPropertyNames -// -// See http://code.google.com/p/v8/issues/detail?id=2410 for details. - -Object.defineProperty(Object.prototype, - 'thrower', - { get: function() { throw Error('bug') } }); -var obj = { thrower: 'local' }; -assertEquals(['thrower'], Object.getOwnPropertyNames(obj)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-241344.js b/implementation-contributed/v8/mjsunit/regress/regress-241344.js deleted file mode 100644 index 32a9dd33762..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-241344.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Create a JSON string for an object with indexed properties. -// Parsing that string creates a sparse array that grows dense. - -var jsonstring = '{"0":0.1, "10000":0.4, '; -for (var i = 1; i < 9999; i++) { - jsonstring += '"' + i + '":0.2, '; -} -jsonstring += '"9999":0.3}'; - -var jsonobject = JSON.parse(jsonstring); -for (var i = 1; i < 9999; i++) { - assertEquals(0.2, jsonobject[i]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2416.js b/implementation-contributed/v8/mjsunit/regress/regress-2416.js deleted file mode 100644 index 02afeb9a596..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2416.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertFalse(2147483647 < -2147483648) -assertFalse(2147483647 <= -2147483648) -assertFalse(2147483647 == -2147483648) -assertTrue(2147483647 >= -2147483648) -assertTrue(2147483647 > -2147483648) - -assertTrue(-2147483648 < 2147483647) -assertTrue(-2147483648 <= 2147483647) -assertFalse(-2147483648 == 2147483647) -assertFalse(-2147483648 >= 2147483647) -assertFalse(-2147483648 > 2147483647) - -assertFalse(2147483647 < 2147483647) -assertTrue(2147483647 <= 2147483647) -assertTrue(2147483647 == 2147483647) -assertTrue(2147483647 >= 2147483647) -assertFalse(2147483647 > 2147483647) - -assertFalse(-2147483648 < -2147483648) -assertTrue(-2147483648 <= -2147483648) -assertTrue(-2147483648 == -2147483648) -assertTrue(-2147483648 >= -2147483648) -assertFalse(-2147483648 > -2147483648) - - -assertFalse(1073741823 < -1073741824) -assertFalse(1073741823 <= -1073741824) -assertFalse(1073741823 == -1073741824) -assertTrue(1073741823 >= -1073741824) -assertTrue(1073741823 > -1073741824) - -assertTrue(-1073741824 < 1073741823) -assertTrue(-1073741824 <= 1073741823) -assertFalse(-1073741824 == 1073741823) -assertFalse(-1073741824 >= 1073741823) -assertFalse(-1073741824 > 1073741823) - -assertFalse(1073741823 < 1073741823) -assertTrue(1073741823 <= 1073741823) -assertTrue(1073741823 == 1073741823) -assertTrue(1073741823 >= 1073741823) -assertFalse(1073741823 > 1073741823) - -assertFalse(-1073741824 < -1073741824) -assertTrue(-1073741824 <= -1073741824) -assertTrue(-1073741824 == -1073741824) -assertTrue(-1073741824 >= -1073741824) -assertFalse(-1073741824 > -1073741824) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2419.js b/implementation-contributed/v8/mjsunit/regress/regress-2419.js deleted file mode 100644 index 612e6dbfda3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2419.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var a = [5, 4, 3, 2, 1, 0]; -Object.freeze(a); -assertThrows(function() { a.sort(); }); -assertArrayEquals([5, 4, 3, 2, 1, 0], a); - -var b = {0: 5, 1: 4, 2: 3, 3: 2, 4: 1, 5: 0, length: 6}; -Object.freeze(b); -assertThrows(function() { Array.prototype.sort.call(b); }); -assertPropertiesEqual({0: 5, 1: 4, 2: 3, 3: 2, 4: 1, 5: 0, length: 6}, b); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2433.js b/implementation-contributed/v8/mjsunit/regress/regress-2433.js deleted file mode 100644 index dfe7131b59a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2433.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Transitioning from a PackedSmi to PackedDouble should fill the destination -// with holes. -// -// See http://code.google.com/p/v8/issues/detail?id=2433 for details. - -arr = []; -arr[0] = 0; -arr[0] = 1.1; -assertEquals(undefined, arr[1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2435.js b/implementation-contributed/v8/mjsunit/regress/regress-2435.js deleted file mode 100644 index 05a4027339b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2435.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function arrayLikeToString(a) { - return String.fromCharCode.apply(this, a); -} - -const klasses = [ - Int8Array, - Uint8Array, - Uint8ClampedArray, - Int16Array, - Uint16Array, - Int32Array, - Uint32Array, - Float32Array, - Float64Array -]; -const string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - -for (const klass of klasses) { - const array = klass.from(string, s => s.charCodeAt(0)); - assertEquals(string, arrayLikeToString(array)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2437.js b/implementation-contributed/v8/mjsunit/regress/regress-2437.js deleted file mode 100644 index d11307948c4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2437.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Summary of the spec: lastIndex is reset to 0 if -// - a global or sticky regexp fails to match. -// - a global regexp is used in a function that returns multiple results, -// such as String.prototype.replace or String.prototype.match, since it -// repeats the regexp until it fails to match. -// Otherwise lastIndex is only set when a global regexp matches, to the index -// after the match. - -// Test Regexp.prototype.exec -r = /a/; -r.lastIndex = 1; -r.exec("zzzz"); -assertEquals(1, r.lastIndex); - -// Test Regexp.prototype.test -r = /a/; -r.lastIndex = 1; -r.test("zzzz"); -assertEquals(1, r.lastIndex); - -// Test String.prototype.match -r = /a/; -r.lastIndex = 1; -"zzzz".match(r); -assertEquals(1, r.lastIndex); - -// Test String.prototype.replace with atomic regexp and empty string. -r = /a/; -r.lastIndex = 1; -"zzzz".replace(r, ""); -assertEquals(1, r.lastIndex); - -// Test String.prototype.replace with non-atomic regexp and empty string. -r = /\d/; -r.lastIndex = 1; -"zzzz".replace(r, ""); -assertEquals(1, r.lastIndex); - -// Test String.prototype.replace with atomic regexp and non-empty string. -r = /a/; -r.lastIndex = 1; -"zzzz".replace(r, "a"); -assertEquals(1, r.lastIndex); - -// Test String.prototype.replace with non-atomic regexp and non-empty string. -r = /\d/; -r.lastIndex = 1; -"zzzz".replace(r, "a"); -assertEquals(1, r.lastIndex); - -// Test String.prototype.replace with replacement function -r = /a/; -r.lastIndex = 1; -"zzzz".replace(r, function() { return ""; }); -assertEquals(1, r.lastIndex); - -// Regexp functions that returns multiple results: -// A global regexp always resets lastIndex regardless of whether it matches. -r = /a/g; -r.lastIndex = -1; -"0123abcd".replace(r, "x"); -assertEquals(0, r.lastIndex); - -r.lastIndex = -1; -"01234567".replace(r, "x"); -assertEquals(0, r.lastIndex); - -r.lastIndex = -1; -"0123abcd".match(r); -assertEquals(0, r.lastIndex); - -r.lastIndex = -1; -"01234567".match(r); -assertEquals(0, r.lastIndex); - -// A non-global regexp resets lastIndex iff it is sticky. -r = /a/; -r.lastIndex = -1; -"0123abcd".replace(r, "x"); -assertEquals(-1, r.lastIndex); - -r.lastIndex = -1; -"01234567".replace(r, "x"); -assertEquals(-1, r.lastIndex); - -r.lastIndex = -1; -"0123abcd".match(r); -assertEquals(-1, r.lastIndex); - -r.lastIndex = -1; -"01234567".match(r); -assertEquals(-1, r.lastIndex); - -r = /a/y; -r.lastIndex = -1; -"0123abcd".replace(r, "x"); -assertEquals(0, r.lastIndex); - -r.lastIndex = -1; -"01234567".replace(r, "x"); -assertEquals(0, r.lastIndex); - - -// Also test RegExp.prototype.exec and RegExp.prototype.test -r = /a/g; -r.lastIndex = 1; -r.exec("01234567"); -assertEquals(0, r.lastIndex); - -r.lastIndex = 1; -r.exec("0123abcd"); -assertEquals(5, r.lastIndex); - -r = /a/; -r.lastIndex = 1; -r.exec("01234567"); -assertEquals(1, r.lastIndex); - -r.lastIndex = 1; -r.exec("0123abcd"); -assertEquals(1, r.lastIndex); - -r = /a/g; -r.lastIndex = 1; -r.test("01234567"); -assertEquals(0, r.lastIndex); - -r.lastIndex = 1; -r.test("0123abcd"); -assertEquals(5, r.lastIndex); - -r = /a/; -r.lastIndex = 1; -r.test("01234567"); -assertEquals(1, r.lastIndex); - -r.lastIndex = 1; -r.test("0123abcd"); -assertEquals(1, r.lastIndex); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2438.js b/implementation-contributed/v8/mjsunit/regress/regress-2438.js deleted file mode 100644 index b9d8875cb59..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2438.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function testSideEffects(subject, re) { - var counter = 0; - var side_effect_object = { valueOf: function() { return counter++; } }; - re.lastIndex = side_effect_object; - re.exec(subject); - - assertEquals(1, counter); - - re.lastIndex = side_effect_object; - re.test(subject); - - assertEquals(2, counter); -} - -testSideEffects("zzzz", /a/); -testSideEffects("zzzz", /a/g); -testSideEffects("xaxa", /a/); -testSideEffects("xaxa", /a/g); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-244.js b/implementation-contributed/v8/mjsunit/regress/regress-244.js deleted file mode 100644 index 7503b1549f7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-244.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var kLegalPairs = [ - [0x00, '%00'], - [0x01, '%01'], - [0x7f, '%7F'], - [0x80, '%C2%80'], - [0x81, '%C2%81'], - [0x7ff, '%DF%BF'], - [0x800, '%E0%A0%80'], - [0x801, '%E0%A0%81'], - [0xd7ff, '%ED%9F%BF'], - [0xffff, '%EF%BF%BF'] -]; - -var kIllegalEncoded = [ - '%80', '%BF', '%80%BF', '%80%BF%80', '%C0%22', '%DF', - '%EF%BF', '%F7BFBF', '%FE', '%FF', '%FE%FE%FF%FF', - '%C0%AF', '%E0%9F%BF', '%F0%8F%BF%BF', '%C0%80', - '%E0%80%80' -]; - -function run() { - for (var i = 0; i < kLegalPairs.length; i++) { - var decoded = String.fromCharCode(kLegalPairs[i][0]); - var encoded = kLegalPairs[i][1]; - assertEquals(decodeURI(encoded), decoded); - assertEquals(encodeURI(decoded), encoded); - } - for (var i = 0; i < kIllegalEncoded.length; i++) { - var value = kIllegalEncoded[i]; - var exception = false; - try { - decodeURI(value); - } catch (e) { - exception = true; - assertInstanceof(e, URIError); - } - assertTrue(exception); - } -} - -run(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2441.js b/implementation-contributed/v8/mjsunit/regress/regress-2441.js deleted file mode 100644 index 72ce2484ceb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2441.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o = {}; -Object.preventExtensions(o); -assertThrows("Object.defineProperty(o, 'foobarloo', {value:{}});", TypeError); -assertThrows("Object.defineProperty(o, '__proto__', {value:{}});", TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2443.js b/implementation-contributed/v8/mjsunit/regress/regress-2443.js deleted file mode 100644 index 0800c45c024..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2443.js +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Number.prototype methods on non-Numbers. - -assertThrows(function() { Number.prototype.toExponential.call({}) }, - TypeError); - -assertThrows(function() { Number.prototype.toPrecision.call({}) }, - TypeError); - -assertThrows(function() { Number.prototype.toFixed.call({}) }, - TypeError); - -assertThrows(function() { Number.prototype.toString.call({}) }, - TypeError); - -assertThrows(function() { Number.prototype.toLocaleString.call({}) }, - TypeError); - -assertThrows(function() { Number.prototype.ValueOf.call({}) }, - TypeError); - - -// Call on Number objects with custom valueOf method. - -var x_obj = new Number(1); -x_obj.valueOf = function() { assertUnreachable(); }; - -assertEquals("1.00e+0", - Number.prototype.toExponential.call(x_obj, 2)); - -assertEquals("1.0", - Number.prototype.toPrecision.call(x_obj, 2)); - -assertEquals("1.00", - Number.prototype.toFixed.call(x_obj, 2)); - -// Call on primitive numbers. -assertEquals("1.00e+0", - Number.prototype.toExponential.call(1, 2)); - -assertEquals("1.0", - Number.prototype.toPrecision.call(1, 2)); - -assertEquals("1.00", - Number.prototype.toFixed.call(1, 2)); - - -// toExponential and toPrecision does following steps in order -// 1) convert the argument using ToInteger -// 2) check for non-finite receiver, on which it returns, -// 3) check argument range and throw exception if out of range. -// Note that the the last two steps are reversed for toFixed. -// Luckily, the receiver is expected to be a number or number -// wrapper, so that getting its value is not observable. - -var f_flag = false; -var f_obj = { valueOf: function() { f_flag = true; return 1000; } }; - -assertEquals("NaN", - Number.prototype.toExponential.call(NaN, f_obj)); -assertTrue(f_flag); - -f_flag = false; -assertEquals("Infinity", - Number.prototype.toExponential.call(1/0, f_obj)); -assertTrue(f_flag); - -f_flag = false; -assertEquals("-Infinity", - Number.prototype.toExponential.call(-1/0, f_obj)); -assertTrue(f_flag); - -f_flag = false; -assertEquals("NaN", - Number.prototype.toPrecision.call(NaN, f_obj)); -assertTrue(f_flag); - -f_flag = false; -assertEquals("Infinity", - Number.prototype.toPrecision.call(1/0, f_obj)); -assertTrue(f_flag); - -f_flag = false; -assertEquals("-Infinity", - Number.prototype.toPrecision.call(-1/0, f_obj)); -assertTrue(f_flag); - -// The odd man out: toFixed. - -f_flag = false; -assertThrows(function() { Number.prototype.toFixed.call(NaN, f_obj) }, - RangeError); -assertTrue(f_flag); - -f_flag = false; -assertThrows(function() { Number.prototype.toFixed.call(1/0, f_obj) }, - RangeError); -assertTrue(f_flag); - -f_flag = false; -assertThrows(function() { Number.prototype.toFixed.call(-1/0, f_obj) }, - RangeError); -assertTrue(f_flag); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2444.js b/implementation-contributed/v8/mjsunit/regress/regress-2444.js deleted file mode 100644 index 41b6a95e7ad..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2444.js +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -var flags; - -function resetFlags(size) { - flags = Array(size); - while (size--) flags[size] = 0; -} - -function assertFlags(array) { - assertArrayEquals(array, flags); -} - -function object_factory(flag_index, value, expected_flags) { - var obj = {}; - obj.valueOf = function() { - assertFlags(expected_flags); - flags[flag_index]++; - return value; - } - return obj; -} - - -assertEquals(-Infinity, Math.max()); - -resetFlags(1); -assertEquals(NaN, - Math.max(object_factory(0, NaN, [0]))); -assertFlags([1]); - -resetFlags(2); -assertEquals(NaN, - Math.max(object_factory(0, NaN, [0, 0]), - object_factory(1, 0, [1, 0]))); -assertFlags([1, 1]); - -resetFlags(3); -assertEquals(NaN, - Math.max(object_factory(0, NaN, [0, 0, 0]), - object_factory(1, 0, [1, 0, 0]), - object_factory(2, 1, [1, 1, 0]))); -assertFlags([1, 1, 1]); - -resetFlags(3); -assertEquals(NaN, - Math.max(object_factory(0, 2, [0, 0, 0]), - object_factory(1, 0, [1, 0, 0]), - object_factory(2, NaN, [1, 1, 0]))); -assertFlags([1, 1, 1]); - -resetFlags(3); -assertEquals(2, - Math.max(object_factory(0, 2, [0, 0, 0]), - object_factory(1, 0, [1, 0, 0]), - object_factory(2, 1, [1, 1, 0]))); -assertFlags([1, 1, 1]); - - -assertEquals(+Infinity, Math.min()); - -resetFlags(1); -assertEquals(NaN, - Math.min(object_factory(0, NaN, [0]))); -assertFlags([1]); - -resetFlags(2); -assertEquals(NaN, - Math.min(object_factory(0, NaN, [0, 0]), - object_factory(1, 0, [1, 0]))); -assertFlags([1, 1]); - -resetFlags(3); -assertEquals(NaN, - Math.min(object_factory(0, NaN, [0, 0, 0]), - object_factory(1, 0, [1, 0, 0]), - object_factory(2, 1, [1, 1, 0]))); -assertFlags([1, 1, 1]); - -resetFlags(3); -assertEquals(NaN, - Math.min(object_factory(0, 2, [0, 0, 0]), - object_factory(1, 0, [1, 0, 0]), - object_factory(2, NaN, [1, 1, 0]))); -assertFlags([1, 1, 1]); - -resetFlags(3); -assertEquals(0, - Math.min(object_factory(0, 2, [0, 0, 0]), - object_factory(1, 0, [1, 0, 0]), - object_factory(2, 1, [1, 1, 0]))); -assertFlags([1, 1, 1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2451.js b/implementation-contributed/v8/mjsunit/regress/regress-2451.js deleted file mode 100644 index 08efda23250..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2451.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -function f() { - assertEquals(-1.0, Math.round(-1.5)); - assertEquals(-2.0, Math.round(-2.5)); - assertEquals(-1.0, Math.round(-0.5000000000000001)); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); -assertOptimized(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-246.js b/implementation-contributed/v8/mjsunit/regress/regress-246.js deleted file mode 100644 index 22e29fdde01..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-246.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=246 - -assertTrue(/(?:text)/.test("text")); -assertEquals(["text"], /(?:text)/.exec("text")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2470.js b/implementation-contributed/v8/mjsunit/regress/regress-2470.js deleted file mode 100644 index 708af54ca36..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2470.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test whether the opening parenthesis can be eaten up by a comment. -assertThrows('Function("/*", "*/){");', SyntaxError); - -// Test whether the function literal can be closed prematurely. -assertThrows('Function("});(function(){");', SyntaxError); - -// Test whether block comments are handled correctly. -assertDoesNotThrow('Function("/*", "*/", "/**/");'); -assertDoesNotThrow('Function("/*", "a", "*/", "/**/");'); -assertDoesNotThrow('Function("a", "/*", "*/", "/**/");'); -assertThrows('Function("a", "/*", "*/", "b", "/*", "*/", "/**/");', SyntaxError); - -// Test whether line comments are handled correctly. -assertDoesNotThrow('Function("//", "//")'); -assertDoesNotThrow('Function("//", "//", "//")'); -assertDoesNotThrow('Function("a", "//", "//")'); -assertThrows('Function("a", "", "//", "//")', SyntaxError); - -// Some embedders rely on the string representation of the resulting -// function in cases where no formal parameters are specified. -var asString = Function("return 23").toString(); -assertSame("function anonymous(\n) {\nreturn 23\n}", asString); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-247688.js b/implementation-contributed/v8/mjsunit/regress/regress-247688.js deleted file mode 100644 index 80e2884c705..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-247688.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = {}; -a.x = 1 -a.y = 1.5 - -var b = {} -b.x = 1.5; -b.y = 1; - -var c = {} -c.x = 1.5; - -var d = {} -d.x = 1.5; - -var e = {} -e.x = 1.5; - -var f = {} -f.x = 1.5; - -var g = {} -g.x = 1.5; - -var h = {} -h.x = 1.5; - -var i = {} -i.x = 1.5; - -var o = {} -var p = {y : 10, z : 1} -o.__proto__ = p; -delete p.z - -function foo(v, w) { - // Make load via IC in optimized code. Its target will get overwritten by - // lazy deopt patch for the stack check. - v.y; - // Make store with transition to make this code dependent on the map. - w.y = 1; - return b.y; -} - -foo(o, c); -foo(o, d); -foo(o, e); -%OptimizeFunctionOnNextCall(foo); -foo(b, f); -foo(b, g); -foo(b, h); -foo(a, i); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2489.js b/implementation-contributed/v8/mjsunit/regress/regress-2489.js deleted file mode 100644 index 882c4f794a8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2489.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -"use strict"; - -function f(a, b) { - return g("c", "d"); -} - -function g(a, b) { - g.constructor.apply(this, arguments); -} - -g.constructor = function(a, b) { - assertEquals("c", a); - assertEquals("d", b); -} - -f("a", "b"); -f("a", "b"); -%OptimizeFunctionOnNextCall(f); -f("a", "b"); -g.x = "deopt"; -f("a", "b"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2499.js b/implementation-contributed/v8/mjsunit/regress/regress-2499.js deleted file mode 100644 index 52aad874db6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2499.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo(word, nBits) { - return (word[1] >>> nBits) | (word[0] << (32 - nBits)); -} - -word = [0x1001, 0]; - -var expected = foo(word, 1); -foo(word, 1); -%OptimizeFunctionOnNextCall(foo); -var optimized = foo(word, 1); -assertEquals(expected, optimized) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-252797.js b/implementation-contributed/v8/mjsunit/regress/regress-252797.js deleted file mode 100644 index 08b22176af4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-252797.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -// The type feedback oracle had a bug when retrieving the map from an IC -// starting with a negative lookup. - -// Create a holder in fast mode. -var holder = Object.create({}, { - holderMethod: {value: function() {}} -}); -assertTrue(%HasFastProperties(holder)); - -// We assume dict usage for null prototype. -var holder = Object.create(null, { - holderMethod: {value: function() {}} -}); -assertFalse(%HasFastProperties(holder)); - -// Create a receiver into dictionary mode. -var receiver = Object.create(holder, { - killMe: {value: 0, configurable: true}, - keepMe: {value: 0, configurable: true} -}); -delete receiver.killMe; -assertFalse(%HasFastProperties(receiver)); - -// The actual function to test, triggering the retrieval of the wrong map. -function callConstantFunctionOnPrototype(obj) { - obj.holderMethod(); -} - -callConstantFunctionOnPrototype(receiver); -callConstantFunctionOnPrototype(receiver); -%OptimizeFunctionOnNextCall(callConstantFunctionOnPrototype); -callConstantFunctionOnPrototype(receiver); - -// Make sure that the function is still optimized. -assertOptimized(callConstantFunctionOnPrototype); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2529.js b/implementation-contributed/v8/mjsunit/regress/regress-2529.js deleted file mode 100644 index cec56a60f51..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2529.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Regression test for v8 bug 2529. - -function makeScript(s) { - return 'while(true) { try { "try"; break } finally { "finally" }; ' + s + ' }'; -} - -var s1 = makeScript(''); -var s2 = makeScript('y = "done"'); -var s3 = makeScript('if (true) 2; else var x = 3;'); -var s4 = makeScript('if (true) 2; else 3;'); - -assertEquals("try", eval(s1)); -assertEquals("try", eval(s2)); -assertEquals("try", eval(s3)); -assertEquals("try", eval(s4)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-253.js b/implementation-contributed/v8/mjsunit/regress/regress-253.js deleted file mode 100644 index 72c5dc1499a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-253.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = 0; -x[0] = 0; -x[0] = 1; -x[0] = 2; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2537.js b/implementation-contributed/v8/mjsunit/regress/regress-2537.js deleted file mode 100644 index 1a86000619c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2537.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var large_int = 0x40000000; - -function foo(x, expected) { - assertEquals(expected, x); // This succeeds. - x += 0; // Force int32 representation so that - // CompareNumericAndBranch is used. - if (3 != x) { - x += 0; // Poor man's "iDef". - // Fails due to Smi-tagging without overflow check. - assertEquals(expected, x); - } -} - -foo(1, 1); -foo(3, 3); -%OptimizeFunctionOnNextCall(foo); -foo(large_int, large_int); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2539.js b/implementation-contributed/v8/mjsunit/regress/regress-2539.js deleted file mode 100644 index 5d263f8912b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2539.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -"use strict"; -var dispatcher = {}; -dispatcher.func = C; - -function A() { - B(10, 11); -} - -function B(x,y) { - x = 0; y = 0; - dispatcher.func.apply(this, arguments); - assertSame(2, arguments.length); - assertSame(10, arguments[0]); - assertSame(11, arguments[1]); -} - -function C(x,y) { - assertSame(2, arguments.length); - assertSame(10, arguments[0]); - assertSame(11, arguments[1]); -} - -A(); -A(); -%OptimizeFunctionOnNextCall(A); -A(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-254.js b/implementation-contributed/v8/mjsunit/regress/regress-254.js deleted file mode 100644 index ec4b40ac677..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-254.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=254 - -// RegExp with global flag: exec and test updates lastIndex. -var re = /x/g; - -assertEquals(0, re.lastIndex, "Global, initial lastIndex"); - -assertTrue(re.test("x"), "Global, test 1"); -assertEquals(1, re.lastIndex, "Global, lastIndex after test 1"); -assertFalse(re.test("x"), "Global, test 2"); -assertEquals(0, re.lastIndex, "Global, lastIndex after test 2"); - -assertEquals(["x"], re.exec("x"), "Global, exec 1"); -assertEquals(1, re.lastIndex, "Global, lastIndex after exec 1"); -assertEquals(null, re.exec("x"), "Global, exec 2"); -assertEquals(0, re.lastIndex, "Global, lastIndex after exec 2"); - -// RegExp without global flag: exec and test leavs lastIndex at zero. -var re2 = /x/; - -assertEquals(0, re2.lastIndex, "Non-global, initial lastIndex"); - -assertTrue(re2.test("x"), "Non-global, test 1"); -assertEquals(0, re2.lastIndex, "Non-global, lastIndex after test 1"); -assertTrue(re2.test("x"), "Non-global, test 2"); -assertEquals(0, re2.lastIndex, "Non-global, lastIndex after test 2"); - -assertEquals(["x"], re2.exec("x"), "Non-global, exec 1"); -assertEquals(0, re2.lastIndex, "Non-global, lastIndex after exec 1"); -assertEquals(["x"], re2.exec("x"), "Non-global, exec 2"); -assertEquals(0, re2.lastIndex, "Non-global, lastIndex after exec 2"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2564.js b/implementation-contributed/v8/mjsunit/regress/regress-2564.js deleted file mode 100644 index 21b40e0b095..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2564.js +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o = [ function f0() { throw new Error(); }, - function f1() { o[0](); }, - function f2() { o[1](); }, - function f3() { o[2](); } ]; - -Error.prepareStackTrace = function(error, frames) { - Error.prepareStackTrace = undefined; // Prevent recursion. - try { - assertEquals(5, frames.length); - // Don't check the last frame since that's the top-level code. - for (var i = 0; i < frames.length - 1; i++) { - assertEquals(o[i], frames[i].getFunction()); - assertEquals(o, frames[i].getThis()); - // Private fields are no longer accessible. - assertEquals(undefined, frames[i].receiver); - assertEquals(undefined, frames[i].fun); - assertEquals(undefined, frames[i].pos); - } - return "success"; - } catch (e) { - return "fail"; - } -} - -try { - o[3](); -} catch (e) { - assertEquals("success", e.stack); -}; - - -var o = [ function f0() { throw new Error(); }, - function f1() { o[0](); }, - function f2() { "use strict"; o[1](); }, - function f3() { o[2](); } ]; - -Error.prepareStackTrace = function(error, frames) { - Error.prepareStackTrace = undefined; // Prevent recursion. - try { - assertEquals(5, frames.length); - for (var i = 0; i < 2; i++) { - // The first two frames are still sloppy mode. - assertEquals(o[i], frames[i].getFunction()); - assertEquals(o, frames[i].getThis()); - } - for (var i = 2; i < frames.length; i++) { - // The rest are poisoned by the first strict mode function. - assertEquals(undefined, frames[i].getFunction()); - assertEquals(undefined, frames[i].getThis()); - } - for (var i = 0; i < frames.length - 1; i++) { - // Function name remains accessible. - assertEquals("f"+i, frames[i].getFunctionName()); - } - return "success"; - } catch (e) { - return e; - } -} - -try { - o[3](); -} catch (e) { - assertEquals("success", e.stack); -}; - - -var o = [ function f0() { "use strict"; throw new Error(); }, - function f1() { o[0](); }, - function f2() { o[1](); }, - function f3() { o[2](); } ]; - -Error.prepareStackTrace = function(error, frames) { - Error.prepareStackTrace = undefined; // Prevent recursion. - try { - assertEquals(5, frames.length); - for (var i = 0; i < frames.length; i++) { - // The rest are poisoned by the first strict mode function. - assertEquals(undefined, frames[i].getFunction()); - assertEquals(undefined, frames[i].getThis()); - if (i < frames.length - 1) { // Function name remains accessible. - assertEquals("f"+i, frames[i].getFunctionName()); - } - } - return "success"; - } catch (e) { - return e; - } -} - -try { - o[3](); -} catch (e) { - assertEquals("success", e.stack); -}; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2565.js b/implementation-contributed/v8/mjsunit/regress/regress-2565.js deleted file mode 100644 index a77806a62e2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2565.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Object.freeze(Object.prototype); -var p = {}; -var o = Object.create(p); -assertSame(p, o.__proto__); -assertSame(p, Object.getPrototypeOf(o)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2566.js b/implementation-contributed/v8/mjsunit/regress/regress-2566.js deleted file mode 100644 index 582bad97960..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2566.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function setProp(obj, prop, val) { - obj[prop] = val; -} -var obj = []; -setProp(obj, 'length', 1); -setProp(obj, 0, 5); -assertEquals(1, obj.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2568.js b/implementation-contributed/v8/mjsunit/regress/regress-2568.js deleted file mode 100644 index 7918e148c48..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2568.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function pluck1(a, key) { - return a.map(function(item) { return item[key]; }); -}; -assertArrayEquals([2, 2], pluck1([[0, 0], [0, 0]], 'length')); -assertArrayEquals([1, 3], pluck1([[1, 2], [3, 4]], '0')); - -function pluck2(a, key) { - return a.map(function(item) { return item[key]; }); -}; -assertArrayEquals([2, 2], pluck2(["ab", "cd"], 'length')); -assertArrayEquals(["a", "c"], pluck2(["ab", "cd"], '0')); - -function pluck3(a, key) { - return a.map(function(item) { return item[key]; }); -}; -f = function() { 1 }; -f.prototype = g = function() { 2 }; -assertArrayEquals([g, g], pluck3([f, f], 'prototype')); -assertArrayEquals([undefined, undefined], pluck3([f, f], '0')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2570.js b/implementation-contributed/v8/mjsunit/regress/regress-2570.js deleted file mode 100644 index f1331e88051..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2570.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o = ["\u56e7", // Switch JSON stringifier to two-byte mode. - "\u00e6"]; // Latin-1 character. - -assertEquals('["\u56e7","\u00e6"]', JSON.stringify(o)); -assertEquals('["\u56e7","\u00e6"]', JSON.stringify(o, null, 0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-259.js b/implementation-contributed/v8/mjsunit/regress/regress-259.js deleted file mode 100644 index f0476ffc375..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-259.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we do not crash when compiling a try/finally with an -// infinite loop (with no normal exits) in the try block. - -// See http://code.google.com/p/v8/issues/detail?id=259 - -assertThrows("try { while (true) { throw 0; }} finally {}"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2593.js b/implementation-contributed/v8/mjsunit/regress/regress-2593.js deleted file mode 100644 index b9e497f67f5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2593.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -p1 = { }; -p2 = { }; -p3 = { x : 1 }; -p2.__proto__ = p3 -p1.__proto__ = p2 - -// Normalize p1. -p1.z = 1 -delete p1.z - -// Make sure all objects are in old space. -for (var i = 0; i < 10; i++) gc(); - -function f2() { - p2.x; -} - -function f1() { - return p1.x; -} - -// Create load stub in p2. -for (var i = 0; i < 10; i++) f2(); - -// Create load stub in p2 for p1. -for (var i = 0; i < 10; i++) f1(); - -assertEquals(1, f1()); - -p2.x = 2; - -assertEquals(2, f1()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2594.js b/implementation-contributed/v8/mjsunit/regress/regress-2594.js deleted file mode 100644 index 60720cb8048..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2594.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// In the assertions but the first, the ES5 spec actually requires 0, but -// that is arguably a spec bug, and other browsers return 1 like us. -// In ES6, all of those will presumably result in a ReferenceError. -// Our main concern with this test is that we do not crash, though. - -function f1() { - var XXX = 0 - try { throw 1 } catch (XXX) { - eval("var h = function() { return XXX }") - } - return h() -} -assertEquals(1, f1()) - -function f2() { - var XXX = 0 - try { throw 1 } catch (XXX) { - eval("function h(){ return XXX }") - } - return h() -} -assertEquals(1, f2()) - -function f3() { - var XXX = 0 - try { throw 1 } catch (XXX) { - try { throw 2 } catch (y) { - eval("function h(){ return XXX }") - } - } - return h() -} -assertEquals(1, f3()) - -function f4() { - var XXX = 0 - try { throw 1 } catch (XXX) { - with ({}) { - eval("function h(){ return XXX }") - } - } - return h() -} -assertEquals(1, f4()) - -function f5() { - var XXX = 0 - try { throw 1 } catch (XXX) { - eval('eval("function h(){ return XXX }")') - } - return h() -} -assertEquals(1, f5()) - -function f6() { - var XXX = 0 - try { throw 1 } catch (XXX) { - eval("var h = (function() { function g(){ return XXX } return g })()") - } - return h() -} -assertEquals(1, f6()) - -function f7() { - var XXX = 0 - try { throw 1 } catch (XXX) { - eval("function h() { var XXX=2; function g(){ return XXX } return g }") - } - return h()() -} -assertEquals(2, f7()) // ! - -var XXX = 0 -try { throw 1 } catch (XXX) { - eval("function h(){ return XXX }") -} -assertEquals(1, h()) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2595.js b/implementation-contributed/v8/mjsunit/regress/regress-2595.js deleted file mode 100644 index c7e95711a8f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2595.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var p = { f: function () { return "p"; } }; -var o = Object.create(p); -o.x = true; -delete o.x; // slow case object - -var u = { x: 0, f: function () { return "u"; } }; // object with some other map - -function F(x) { - return x.f(); -} - -// First make CALL IC in F go MEGAMORPHIC and ensure that we put the stub -// that calls p.f (guarded by a negative dictionary lookup on the receiver) -// into the stub cache -assertEquals("p", F(o)); -assertEquals("p", F(o)); -assertEquals("u", F(u)); -assertEquals("p", F(o)); -assertEquals("u", F(u)); - -// Optimize F. We will inline p.f into F guarded by map checked against -// receiver which does not work for slow case objects. -%OptimizeFunctionOnNextCall(F); -assertEquals("p", F(o)); - -// Add f to o. o's map will *not* change. -o.f = function () { return "o"; }; -assertEquals("o", F(o)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2596.js b/implementation-contributed/v8/mjsunit/regress/regress-2596.js deleted file mode 100644 index 6500988bd69..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2596.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var ab = new ArrayBuffer(8); -var i_view = new Int32Array(ab); -i_view[0] = %GetHoleNaNUpper() -i_view[1] = %GetHoleNaNLower(); -var doubles = new Float64Array(ab); // kHoleNaN -assertTrue(isNaN(doubles[0])); - -var prototype = [2.5, 2.5]; -var array = [3.5, 3.5]; -array.__proto__ = prototype; -assertTrue(%HasDoubleElements(array)); - -function boom(index) { - array[index] = doubles[0]; - return array[index]; -} - -assertTrue(isNaN(boom(0))); -assertTrue(isNaN(boom(0))); -assertTrue(isNaN(boom(0))); - -// Test hydrogen -%OptimizeFunctionOnNextCall(boom); -assertTrue(isNaN(boom(0))); -assertTrue(isNaN(boom(0))); -assertTrue(isNaN(boom(0))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-260.js b/implementation-contributed/v8/mjsunit/regress/regress-260.js deleted file mode 100644 index 65242bcf57c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-260.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// We should not compile the bodies of function literals in loop -// conditions twice, even in cases where the loop condition is -// compiled twice. - -function test() { eval("while(!function () { var x; });"); } -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2606.js b/implementation-contributed/v8/mjsunit/regress/regress-2606.js deleted file mode 100644 index b704f7d1eb4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2606.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check baseline for __proto__. -var desc = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__"); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); -assertEquals("function", typeof desc.get); -assertEquals("function", typeof desc.set); - -// Check redefining getter for __proto__. -function replaced_get() {}; -Object.defineProperty(Object.prototype, "__proto__", { get:replaced_get }); -desc = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__"); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); -assertSame(replaced_get, desc.get); - -// Check redefining setter for __proto__. -function replaced_set(x) {}; -Object.defineProperty(Object.prototype, "__proto__", { set:replaced_set }); -desc = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__"); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); -assertSame(replaced_set, desc.set); - -// Check changing configurability of __proto__. -Object.defineProperty(Object.prototype, "__proto__", { configurable:false }); -desc = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__"); -assertFalse(desc.enumerable); -assertFalse(desc.configurable); -assertSame(replaced_get, desc.get); -assertSame(replaced_set, desc.set); - -// Check freezing Object.prototype completely. -Object.freeze(Object.prototype); -assertTrue(Object.isFrozen(Object.prototype)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2612.js b/implementation-contributed/v8/mjsunit/regress/regress-2612.js deleted file mode 100644 index 600894845e2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2612.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Create a function to get a long series of removable simulates. -// f() { -// var _0 = , _1 = , ... _1000 = , -// _1001 = + , -// _1002 = + , -// ... -// _99999 = + , -// x = 1; -// return _0; -// } - -var seed = 1; - -function rand() { - seed = seed * 171 % 1337 + 17; - return (seed % 1000) / 1000; -} - -function randi(max) { - seed = seed * 131 % 1773 + 13; - return seed % max; -} - -function varname(i) { - return "_" + i; -} - -var source = "var "; - -for (var i = 0; i < 750; i++) { - source += [varname(i), "=", rand(), ","].join(""); -} - -for (var i = 750; i < 3000; i++) { - source += [varname(i), "=", - varname(randi(i)), "+", - varname(randi(i)), ","].join(""); -} - -source += "x=1; return _0;" -var f = new Function(source); - -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2615.js b/implementation-contributed/v8/mjsunit/regress/regress-2615.js deleted file mode 100644 index 6b277e8765b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2615.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -a = [1]; -Object.defineProperty(a, "1", {writable:false, configurable:false, value: 100}); -assertThrows("a.unshift(4);", TypeError); -assertEquals([1, 100, 100], a); -var desc = Object.getOwnPropertyDescriptor(a, "1"); -assertEquals(false, desc.writable); -assertEquals(false, desc.configurable); - -a = [1]; -var g = function() { return 100; }; -Object.defineProperty(a, "1", {get:g}); -assertThrows("a.unshift(0);", TypeError); -assertEquals([1, 100, 100], a); -desc = Object.getOwnPropertyDescriptor(a, "1"); -assertEquals(false, desc.configurable); -assertEquals(g, desc.get); - -a = [1]; -var c = 0; -var s = function(v) { c += 1; }; -Object.defineProperty(a, "1", {set:s}); -a.unshift(10); -assertEquals([10, undefined, undefined], a); -assertEquals(1, c); -desc = Object.getOwnPropertyDescriptor(a, "1"); -assertEquals(false, desc.configurable); -assertEquals(s, desc.set); - -a = [1]; -Object.defineProperty(a, "1", {configurable:false, value:10}); -assertThrows("a.splice(1,1);", TypeError); -assertEquals([1, 10], a); -desc = Object.getOwnPropertyDescriptor(a, "1"); -assertEquals(false, desc.configurable); - -a = [0,1,2,3,4,5,6]; -Object.defineProperty(a, "3", {configurable:false, writable:false, value:3}); -assertThrows("a.splice(1,4);", TypeError); -assertEquals([0,5,6,3,,,,], a); -desc = Object.getOwnPropertyDescriptor(a, "3"); -assertEquals(false, desc.configurable); -assertEquals(false, desc.writable); - -a = [0,1,2,3,4,5,6]; -Object.defineProperty(a, "5", {configurable:false, value:5}); -assertThrows("a.splice(1,4);", TypeError); -assertEquals([0,5,6,3,4,5,,], a); -desc = Object.getOwnPropertyDescriptor(a, "5"); -assertEquals(false, desc.configurable); - -a = [1,2,3,,5]; -Object.defineProperty(a, "1", {configurable:false, writable:true, value:2}); -assertEquals(1, a.shift()); -assertEquals([2,3,,5], a); -desc = Object.getOwnPropertyDescriptor(a, "1"); -assertEquals(false, desc.configurable); -assertEquals(true, desc.writable); -assertThrows("a.shift();", TypeError); -assertEquals([3,3,,5], a); -desc = Object.getOwnPropertyDescriptor(a, "1"); -assertEquals(false, desc.configurable); -assertEquals(true, desc.writable); - -a = [1,2,3]; -Object.defineProperty(a, "2", {configurable:false, value:3}); -assertThrows("a.pop();", TypeError); -assertEquals([1,2,3], a); -desc = Object.getOwnPropertyDescriptor(a, "2"); -assertEquals(false, desc.configurable); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2618.js b/implementation-contributed/v8/mjsunit/regress/regress-2618.js deleted file mode 100644 index 9feb911c81e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2618.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --use-osr --allow-natives-syntax --ignition-osr --opt -// Flags: --no-always-opt - -// Can't OSR with always-opt or in Lite mode. -if (isNeverOptimizeLiteMode()) { - print("Warning: skipping test that requires optimization in Lite mode."); - quit(0); -} -assertFalse(isAlwaysOptimize()); - -function f() { - do { - do { - for (var i = 0; i < 10; i++) %OptimizeOsr(); - // Note: this check can't be wrapped in a function, because - // calling that function causes a deopt from lack of call - // feedback. - var opt_status = %GetOptimizationStatus(f); - assertTrue( - (opt_status & V8OptimizationStatus.kMaybeDeopted) !== 0 || - (opt_status & V8OptimizationStatus.kTopmostFrameIsTurboFanned) !== 0); - } while (false); - } while (false); -} - -f(); - -function g() { - for (var i = 0; i < 1; i++) { } - - do { - do { - for (var i = 0; i < 1; i++) { } - } while (false); - } while (false); - - do { - do { - do { - do { - do { - do { - do { - do { - for (var i = 0; i < 10; i++) %OptimizeOsr(); - var opt_status = %GetOptimizationStatus(g); - assertTrue( - (opt_status & V8OptimizationStatus.kMaybeDeopted) !== 0 || - (opt_status & - V8OptimizationStatus.kTopmostFrameIsTurboFanned) !== 0); - } while (false); - } while (false); - } while (false); - } while (false); - } while (false); - } while (false); - } while (false); - } while (false); -} - -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2624.js b/implementation-contributed/v8/mjsunit/regress/regress-2624.js deleted file mode 100644 index fe94a10133c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2624.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --print-code - -var source = '"snowmen invasion " + "'; -for(var i = 0; i < 800; i++) { - source += '\u2603'; -} -source += '"'; -eval(source); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-263.js b/implementation-contributed/v8/mjsunit/regress/regress-263.js deleted file mode 100644 index 123bde67e78..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-263.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Exits via return, break, or continue from within try/finally or -// for/in should not crash or trigger a debug assert. - -// See http://code.google.com/p/v8/issues/detail?id=263 - -function test0() { with({}) for(var x in {}) return; } -test0(); - - -function test1() { with({}) try { } finally { with({}) return; } } -test1(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-264203.js b/implementation-contributed/v8/mjsunit/regress/regress-264203.js deleted file mode 100644 index fa007566257..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-264203.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo(x) { - var a = [1, 2, 3, 4, 5, 6, 7, 8]; - a[x + 5]; - var result; - for (var i = 0; i < 3; i++) { - result = a[0 - x]; - } - return result; -} - -foo(0); -foo(0); -%OptimizeFunctionOnNextCall(foo); -var r = foo(-2); -assertEquals(3, r); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2646.js b/implementation-contributed/v8/mjsunit/regress/regress-2646.js deleted file mode 100644 index ef72556e043..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2646.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var expectedItemsCount = 10000, - itemSize = 5, - heap = new ArrayBuffer(expectedItemsCount * itemSize * 8), - storage = []; - -for (var i = 0; i < expectedItemsCount; i++) { - storage.push(new Float64Array(heap, 0, itemSize)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-265.js b/implementation-contributed/v8/mjsunit/regress/regress-265.js deleted file mode 100644 index 21ac1a6a2f2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-265.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// When returning or breaking out of a deeply nested try/finally, we -// should not crash. - -// See http://code.google.com/p/v8/issues/detail?id=263 - -function test0() { - try { - try { - return 0; - } finally { - try { - return 0; - } finally { - } - } - } finally { - } -} - -test0(); - -function test1() { -L0: - try { - try { - break L0; - } finally { - try { - break L0; - } finally { - } - } - } finally { - } -} - -test1(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-267.js b/implementation-contributed/v8/mjsunit/regress/regress-267.js deleted file mode 100644 index bb61606a3e9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-267.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=267 - -var global = (function(){ return this; })(); -function taint(fn){var v = fn(); eval("taint"); return v; } -function getThis(){ return this; } -var obj = taint(getThis); - -assertEquals(global, obj, "Should be the global object."); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2671-1.js b/implementation-contributed/v8/mjsunit/regress/regress-2671-1.js deleted file mode 100644 index 7937d6a3363..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2671-1.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var y; -function f() { - var a = []; - a[20] = 0; - y = 3; - var i = 7 * (y + -0); - a[i]++; - assertTrue(isNaN(a[i])); -} - -f(); -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2671.js b/implementation-contributed/v8/mjsunit/regress/regress-2671.js deleted file mode 100644 index 73a3098d804..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2671.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var y; -function f() { - var a = []; - a[20] = 0; - y = 3; - var i = 7 * (y + -0); - a[i] = 1/y; - assertFalse(isNaN(a[i])); -} - -f(); -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2686.js b/implementation-contributed/v8/mjsunit/regress/regress-2686.js deleted file mode 100644 index bd6106f9ca6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2686.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check Function doesn't use String.prototype.indexOf. - -assertThrows(function() { Function('){ function foo(', '}') }, SyntaxError); -String.prototype.indexOf = function () { return -1; } -assertThrows(function() { Function('){ function foo(', '}') }, SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2690.js b/implementation-contributed/v8/mjsunit/regress/regress-2690.js deleted file mode 100644 index 0ed4c5c679a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2690.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertTrue(/\1[a]/.test("\1a")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-270142.js b/implementation-contributed/v8/mjsunit/regress/regress-270142.js deleted file mode 100644 index 63f4d1414ea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-270142.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that "name"'s property descriptor for non-strict and strict -// functions correspond. - -function f(x) { - return x; -} - -function g(x) { - "use strict"; - return x; -} - -function checkNameDescriptor(f) { - var descriptor = Object.getOwnPropertyDescriptor(f, "name"); - assertTrue(descriptor.configurable); - assertFalse(descriptor.enumerable); - assertFalse(descriptor.writable); -} - -checkNameDescriptor(f); -checkNameDescriptor(g); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2711.js b/implementation-contributed/v8/mjsunit/regress/regress-2711.js deleted file mode 100644 index d5ac2baa336..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2711.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that frozen arrays don't let their length change -var a = Object.freeze([1]); -assertThrows(function() { a.push(2); }, TypeError); -assertEquals(1, a.length); -assertThrows(function() { a.push(2); }, TypeError); -assertEquals(1, a.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2717.js b/implementation-contributed/v8/mjsunit/regress/regress-2717.js deleted file mode 100644 index 4f8f7915b1c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2717.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test re-initializing existing field which is already being tracked as -// having double representation. -(function() { - function test1(a) { - return { x: 1.5, x: a }; - }; - - assertEquals({}, test1({}).x); -})(); - -// Test initializing new field which follows an existing transition to a -// map that tracks it as having double representation. -(function() { - function test1(a) { - return { y: a }; - }; - - function test2(a) { - return { y: a }; - }; - - assertEquals(1.5, test1(1.5).y); - assertEquals({}, test2({}).y); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2758.js b/implementation-contributed/v8/mjsunit/regress/regress-2758.js deleted file mode 100644 index ee788444000..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2758.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var functions = [ - function() { var f = [].concat; f() }, - function() { var f = [].push; f() }, - function() { var f = [].shift; f() }, - function() { (0, [].concat)() }, - function() { (0, [].push)() }, - function() { (0, [].shift)() } -] - -for (var i = 0; i < 5; ++i) { - for (var j in functions) { - print(functions[i]) - assertThrows(functions[j], TypeError) - } - - if (i === 3) { - for (var j in functions) - %OptimizeFunctionOnNextCall(functions[j]); - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-279.js b/implementation-contributed/v8/mjsunit/regress/regress-279.js deleted file mode 100644 index e500dd6ff89..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-279.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function makeArrayInObject() { - return { foo: [] }; -} - -var a = makeArrayInObject(); -a.foo.push(5); -var b = makeArrayInObject(); -assertEquals(0, b.foo.length, "Array in object"); - -function makeObjectInObject() { - return { foo: {} }; -} - -a = makeObjectInObject(); -a.foo.bar = 1; -b = makeObjectInObject(); -assertEquals('undefined', typeof(b.foo.bar), "Object in object"); - -function makeObjectInArray() { - return [ {} ]; -} - -a = makeObjectInArray(); -a[0].bar = 1; -b = makeObjectInArray(); -assertEquals('undefined', typeof(b[0].bar), "Object in array"); - -function makeArrayInArray() { - return [ [] ]; -} - -a = makeArrayInArray(); -a[0].push(5); -b = makeArrayInArray(); -assertEquals(0, b[0].length, "Array in array"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2790.js b/implementation-contributed/v8/mjsunit/regress/regress-2790.js deleted file mode 100644 index ac79e640459..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2790.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we can create arrays of any size. -for (var i = 1000; i < 1000000; i += 19703) { - new Array(i); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-280531.js b/implementation-contributed/v8/mjsunit/regress/regress-280531.js deleted file mode 100644 index 6799574f691..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-280531.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var contextA = Realm.create(); -var date1 = Realm.eval(contextA, "new Date('Thu, 29 Aug 2013 00:00:00 UTC')"); -new Date('Thu, 29 Aug 2013 00:00:01 UTC'); -var date2 = Realm.eval(contextA, "new Date('Thu, 29 Aug 2013 00:00:00 UTC')"); -assertEquals(date1, date2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2813.js b/implementation-contributed/v8/mjsunit/regress/regress-2813.js deleted file mode 100644 index 97ae43b316a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2813.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo(x) { - var a = x + 1; - var b = x + 2; - if (x != 0) { - if (x > 0 & x < 100) { - return a; - } - } - return 0; -} - -assertEquals(0, foo(0)); -assertEquals(0, foo(0)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(3, foo(2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2836.js b/implementation-contributed/v8/mjsunit/regress/regress-2836.js deleted file mode 100644 index 682cc5e841f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2836.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f() { - var end = 1073741823; // 2^30 - 1 - var start = end - 100000; // Run long enough to trigger OSR. - for (var i = start; i <= end; ++i) { - assertTrue(i >= start); // No overflow allowed! - } -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-284.js b/implementation-contributed/v8/mjsunit/regress/regress-284.js deleted file mode 100644 index ecfdeeac030..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-284.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=284 - -function continueWithinLoop() { - var result; - for (var key in [0]) { - result = "hopla"; - continue; - } - return result; -}; - -assertEquals("hopla", continueWithinLoop()); - -function breakWithinLoop() { - var result; - for (var key in [0]) { - result = "hopla"; - break; - } - return result; -}; - -assertEquals("hopla", continueWithinLoop()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2843.js b/implementation-contributed/v8/mjsunit/regress/regress-2843.js deleted file mode 100644 index 5b28c2d7948..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2843.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function bailout() { throw "bailout"; } -var global; - -function foo(x, fun) { - var a = x + 1; - var b = x + 2; // Need another Simulate to fold the first one into. - global = true; // Need a side effect to deopt to. - fun(); - return a; -} - -assertThrows("foo(1, bailout)"); -assertThrows("foo(1, bailout)"); -%OptimizeFunctionOnNextCall(foo); -assertThrows("foo(1, bailout)"); -assertEquals(2, foo(1, function() {})); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2855.js b/implementation-contributed/v8/mjsunit/regress/regress-2855.js deleted file mode 100644 index 24ec452d599..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2855.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function foo(a) { - for (var i = 0; i < 100; ++i) - a = new String(a); - return a; -} - -var expected = "hello"; -for (var i = 0; i < 4; ++i) { - if (i == 2) { - String.prototype.valueOf = function() { return 42; } - expected = "42"; - } - assertEquals(expected, "" + foo("hello")); -} - -// Make sure we look up "valueOf" only once. -var count = 0; -var x = new String("foo"); -Object.defineProperty(x, "valueOf", - { get: function() { - count++; - return function() { - return 11; - } - } - }); -for (var i = 0; i < 3; i++) { - assertEquals("11", "" + x); - assertEquals(i + 1, count); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-286.js b/implementation-contributed/v8/mjsunit/regress/regress-286.js deleted file mode 100644 index 361b72655eb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-286.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=286 - -function test() { - var o = [1]; - var a = o[o ^= 1]; - return a; -}; - -assertEquals(1, test()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2931.js b/implementation-contributed/v8/mjsunit/regress/regress-2931.js deleted file mode 100644 index a2ea912682d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2931.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Typed array constructors should be immune from changes to -// value of ArrayBuffer on global object. -// See http://code.google.com/p/v8/issues/detail?id=294 - -this.ArrayBuffer = function() { throw Error('BAM'); }; -var u8 = new Uint8Array(100); -assertSame(100, u8.byteLength); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-294.js b/implementation-contributed/v8/mjsunit/regress/regress-294.js deleted file mode 100644 index 285b447fb57..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-294.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should not crash. -// See http://code.google.com/p/v8/issues/detail?id=294 - -function f() { return false; } - -function test(x) { - var y = x; - if (x == "kat") x = "kat"; - else { - x = "hund"; - var z = f(); - if (!z) x = "kat"; - } -} - -test("hund"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2980.js b/implementation-contributed/v8/mjsunit/regress/regress-2980.js deleted file mode 100644 index 071a73353a7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2980.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -function test(expected, holder) { - assertEquals(expected, holder.property); -} - -var holder = {} -holder.__proto__ = null; -holder.property = "foo"; -delete holder.property; -test(undefined, holder); -test(undefined, holder); -test(undefined, holder); -holder.property = "bar"; -test("bar", holder); -test("bar", holder); - -// Now the same thing with a nontrivial prototype chain. - -function test2(expected, holder) { - assertEquals(expected, holder.prop2); -} - -var holder2 = {} -holder2.prop2 = "foo"; -holder2.__proto__ = null; -function Receiver() {} -Receiver.prototype = holder2; - -var rec2 = new Receiver(); -delete holder2.prop2; - -test2(undefined, rec2); -test2(undefined, rec2); -test2(undefined, rec2); -holder2.prop2 = "bar"; -test2("bar", rec2); -test2("bar", rec2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-298269.js b/implementation-contributed/v8/mjsunit/regress/regress-298269.js deleted file mode 100644 index 46f525edb81..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-298269.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Cb(a, trigger) { - var f, g; - for(f = a.length; f--;) { - g = a.charCodeAt(f); - // This will fail after OSR if Runtime_StringCharCodeAt is modified - // to iterates optimized frames and visit safepoint pointers. - if (g == "C".charCodeAt(0)) %OptimizeOsr(); - } - return g; -} - -var s1 = "long string to make cons string 1"; -var s2 = "long string to make cons string 2"; -Cb(s1 + s2); -Cb(s1); -var s3 = "string for triggering osr in Cb"; -Cb(s3 + s3); -Cb(s1 + s2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2984.js b/implementation-contributed/v8/mjsunit/regress/regress-2984.js deleted file mode 100644 index 914409cd91f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2984.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals("\u0178", "\xff".toUpperCase()); -assertEquals("abcdefghijklmn\xffopq", - ("ABCDEFGHIJKL" + "MN\u0178OPQ").toLowerCase()); -assertEquals("\xff", "\u0178".toLowerCase()); -assertEquals("ABCDEFGHIJKLMN\u0178OPQ", - ("abcdefghijk" + "lmn\xffopq").toUpperCase()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2987.js b/implementation-contributed/v8/mjsunit/regress/regress-2987.js deleted file mode 100644 index 02927e22278..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2987.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// This tests that stores on captured objects are correctly tracked even -// when DCE is enabled. We cannot delete simulations of captured objects -// that are still needed to replay the environment correctly. - -function constructor() { - this.x = 0; -} - -var deopt = { deopt:false }; -function boogeyman(mode, value) { - var object = new constructor(); - if (mode) { - object.x = 1; - } else { - object.x = 2; - } - deopt.deopt; - assertEquals(value, object.x); -} - -boogeyman(true, 1); -boogeyman(true, 1); -boogeyman(false, 2); -boogeyman(false, 2); -%OptimizeFunctionOnNextCall(boogeyman); -boogeyman(false, 2); -delete deopt.deopt; -boogeyman(false, 2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-2989.js b/implementation-contributed/v8/mjsunit/regress/regress-2989.js deleted file mode 100644 index d11e3521053..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-2989.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -if (isNeverOptimizeLiteMode()) { - print("Warning: skipping test that requires optimization in Lite mode."); - quit(0); -} - -(function ArgumentsObjectChange() { - function f(x) { - x = 42; - return f.arguments[0]; - } - - f(0); - %OptimizeFunctionOnNextCall(f); - assertEquals(42, f(0)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-299979.js b/implementation-contributed/v8/mjsunit/regress/regress-299979.js deleted file mode 100644 index 0afbcb35717..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-299979.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -(function(){ - "use strict"; - var list = Object.freeze([1, 2, 3]); - assertThrows(function() { list.unshift(4); }, TypeError); - assertThrows(function() { list.shift(); }, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3006390.js b/implementation-contributed/v8/mjsunit/regress/regress-3006390.js deleted file mode 100644 index 4f916ef76fb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3006390.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function X() { } -X.prototype.valueOf = function () { return 7; } - -function f(x, y) { return x % y; } - -assertEquals(1, f(8, new X())); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3010.js b/implementation-contributed/v8/mjsunit/regress/regress-3010.js deleted file mode 100644 index 7aeec648280..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3010.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -(function() { - function testOneSize(current_size) { - var eval_string = 'obj = {'; - for (var current = 0; current <= current_size; ++current) { - eval_string += 'k' + current + ':' + current + ',' - } - eval_string += '};'; - eval(eval_string); - for (var i = 0; i <= current_size; i++) { - assertEquals(i, obj['k'+i]); - } - var current_number = 0; - for (var x in obj) { - assertEquals(current_number, obj[x]); - current_number++; - } - } - - testOneSize(127); - testOneSize(128); - testOneSize(129); - - testOneSize(255); - testOneSize(256); - testOneSize(257); - - testOneSize(511); - testOneSize(512); - testOneSize(513); - - testOneSize(1023); - testOneSize(1024); - testOneSize(1025); - - testOneSize(2047); - testOneSize(2048); - testOneSize(2049); -}()) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3025.js b/implementation-contributed/v8/mjsunit/regress/regress-3025.js deleted file mode 100644 index ccb3830687b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3025.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var n = 0x8000000000000800; -assertEquals(n, 9223372036854778000); -var s = n.toString(5); -var v = parseInt(s, 5); -assertEquals(n, v); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3026.js b/implementation-contributed/v8/mjsunit/regress/regress-3026.js deleted file mode 100644 index d25c88d4327..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3026.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals([], "abc".split(undefined, 0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3027.js b/implementation-contributed/v8/mjsunit/regress/regress-3027.js deleted file mode 100644 index 6336594052d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3027.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test to exceed the Page::MaxRegularHeapObjectSize with an array -// constructor call taking many arguments. - -function boom() { - var args = []; - for (var i = 0; i < 125000; i++) { - args.push(i); - } - return Array.apply(Array, args); -} - -var array = boom(); - -assertEquals(125000, array.length); -assertEquals(124999, array[124999]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3029.js b/implementation-contributed/v8/mjsunit/regress/regress-3029.js deleted file mode 100644 index ae412dff2ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3029.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function c(x) { - undefined.boom(); -} - -function f() { - return new c(); -} - -function g() { - f(); -} - -assertThrows("g()", TypeError); -assertThrows("g()", TypeError); -%OptimizeFunctionOnNextCall(g); -assertThrows("g()", TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3032.js b/implementation-contributed/v8/mjsunit/regress/regress-3032.js deleted file mode 100644 index 9b18e146ce6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3032.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); } -var xl = 4096; -var z = i % xl; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3039.js b/implementation-contributed/v8/mjsunit/regress/regress-3039.js deleted file mode 100644 index 3c7f62c16e6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3039.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function do_div(x, y) { - return (x / y) | 0; -} - -// Preparation. -assertEquals(17, do_div(51, 3)); -assertEquals(13, do_div(65, 5)); -%OptimizeFunctionOnNextCall(do_div); -assertEquals(11, do_div(77, 7)); - -// The actual test. We should not trigger a floating point exception. -assertEquals(-2147483648, do_div(-2147483648, -1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3116.js b/implementation-contributed/v8/mjsunit/regress/regress-3116.js deleted file mode 100644 index ca55ccc888b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3116.js +++ /dev/null @@ -1,314 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function timezone(tz) { - var str = (new Date(2014, 0, 10)).toString(); - if (tz == "CET") { - return str == "Fri Jan 10 2014 00:00:00 GMT+0100 (CET)"; - } - if (tz == "BRT") { - return str == "Fri Jan 10 2014 00:00:00 GMT-0200 (BRST)"; - } - if (tz == "PST") { - return str == "Fri Jan 10 2014 00:00:00 GMT-0800 (PST)"; - } - return false; -} - -if (timezone("CET")) { - assertEquals("Sat Mar 29 2014 22:59:00 GMT+0100 (CET)", - (new Date(2014, 2, 29, 22, 59)).toString()); - assertEquals("Sat, 29 Mar 2014 21:59:00 GMT", - (new Date(2014, 2, 29, 22, 59)).toUTCString()); - assertEquals("Sat Mar 29 2014 23:00:00 GMT+0100 (CET)", - (new Date(2014, 2, 29, 23, 0)).toString()); - assertEquals("Sat, 29 Mar 2014 22:00:00 GMT", - (new Date(2014, 2, 29, 23, 0)).toUTCString()); - assertEquals("Sat Mar 29 2014 23:59:00 GMT+0100 (CET)", - (new Date(2014, 2, 29, 23, 59)).toString()); - assertEquals("Sat, 29 Mar 2014 22:59:00 GMT", - (new Date(2014, 2, 29, 23, 59)).toUTCString()); - assertEquals("Sun Mar 30 2014 00:00:00 GMT+0100 (CET)", - (new Date(2014, 2, 30, 0, 0)).toString()); - assertEquals("Sat, 29 Mar 2014 23:00:00 GMT", - (new Date(2014, 2, 30, 0, 0)).toUTCString()); - assertEquals("Sun Mar 30 2014 00:59:00 GMT+0100 (CET)", - (new Date(2014, 2, 30, 0, 59)).toString()); - assertEquals("Sat, 29 Mar 2014 23:59:00 GMT", - (new Date(2014, 2, 30, 0, 59)).toUTCString()); - assertEquals("Sun Mar 30 2014 01:00:00 GMT+0100 (CET)", - (new Date(2014, 2, 30, 1, 0)).toString()); - assertEquals("Sun, 30 Mar 2014 00:00:00 GMT", - (new Date(2014, 2, 30, 1, 0)).toUTCString()); - assertEquals("Sun Mar 30 2014 01:59:00 GMT+0100 (CET)", - (new Date(2014, 2, 30, 1, 59)).toString()); - assertEquals("Sun, 30 Mar 2014 00:59:00 GMT", - (new Date(2014, 2, 30, 1, 59)).toUTCString()); - assertEquals("Sun Mar 30 2014 03:00:00 GMT+0200 (CEST)", - (new Date(2014, 2, 30, 2, 0)).toString()); - assertEquals("Sun, 30 Mar 2014 01:00:00 GMT", - (new Date(2014, 2, 30, 2, 0)).toUTCString()); - assertEquals("Sun Mar 30 2014 03:59:00 GMT+0200 (CEST)", - (new Date(2014, 2, 30, 2, 59)).toString()); - assertEquals("Sun, 30 Mar 2014 01:59:00 GMT", - (new Date(2014, 2, 30, 2, 59)).toUTCString()); - assertEquals("Sun Mar 30 2014 03:00:00 GMT+0200 (CEST)", - (new Date(2014, 2, 30, 3, 0)).toString()); - assertEquals("Sun, 30 Mar 2014 01:00:00 GMT", - (new Date(2014, 2, 30, 3, 0)).toUTCString()); - assertEquals("Sun Mar 30 2014 03:59:00 GMT+0200 (CEST)", - (new Date(2014, 2, 30, 3, 59)).toString()); - assertEquals("Sun, 30 Mar 2014 01:59:00 GMT", - (new Date(2014, 2, 30, 3, 59)).toUTCString()); - assertEquals("Sun Mar 30 2014 04:00:00 GMT+0200 (CEST)", - (new Date(2014, 2, 30, 4, 0)).toString()); - assertEquals("Sun, 30 Mar 2014 02:00:00 GMT", - (new Date(2014, 2, 30, 4, 0)).toUTCString()); - assertEquals("Sat Oct 25 2014 22:59:00 GMT+0200 (CEST)", - (new Date(2014, 9, 25, 22, 59)).toString()); - assertEquals("Sat, 25 Oct 2014 20:59:00 GMT", - (new Date(2014, 9, 25, 22, 59)).toUTCString()); - assertEquals("Sat Oct 25 2014 23:00:00 GMT+0200 (CEST)", - (new Date(2014, 9, 25, 23, 0)).toString()); - assertEquals("Sat, 25 Oct 2014 21:00:00 GMT", - (new Date(2014, 9, 25, 23, 0)).toUTCString()); - assertEquals("Sat Oct 25 2014 23:59:00 GMT+0200 (CEST)", - (new Date(2014, 9, 25, 23, 59)).toString()); - assertEquals("Sat, 25 Oct 2014 21:59:00 GMT", - (new Date(2014, 9, 25, 23, 59)).toUTCString()); - assertEquals("Sun Oct 26 2014 00:00:00 GMT+0200 (CEST)", - (new Date(2014, 9, 26, 0, 0)).toString()); - assertEquals("Sat, 25 Oct 2014 22:00:00 GMT", - (new Date(2014, 9, 26, 0, 0)).toUTCString()); - assertEquals("Sun Oct 26 2014 00:59:00 GMT+0200 (CEST)", - (new Date(2014, 9, 26, 0, 59)).toString()); - assertEquals("Sat, 25 Oct 2014 22:59:00 GMT", - (new Date(2014, 9, 26, 0, 59)).toUTCString()); - assertEquals("Sun Oct 26 2014 01:00:00 GMT+0200 (CEST)", - (new Date(2014, 9, 26, 1, 0)).toString()); - assertEquals("Sat, 25 Oct 2014 23:00:00 GMT", - (new Date(2014, 9, 26, 1, 0)).toUTCString()); - assertEquals("Sun Oct 26 2014 01:59:00 GMT+0200 (CEST)", - (new Date(2014, 9, 26, 1, 59)).toString()); - assertEquals("Sat, 25 Oct 2014 23:59:00 GMT", - (new Date(2014, 9, 26, 1, 59)).toUTCString()); - assertEquals("Sun Oct 26 2014 02:00:00 GMT+0200 (CEST)", - (new Date(2014, 9, 26, 2, 0)).toString()); - assertEquals("Sun, 26 Oct 2014 00:00:00 GMT", - (new Date(2014, 9, 26, 2, 0)).toUTCString()); - assertEquals("Sun Oct 26 2014 02:59:00 GMT+0200 (CEST)", - (new Date(2014, 9, 26, 2, 59)).toString()); - assertEquals("Sun, 26 Oct 2014 00:59:00 GMT", - (new Date(2014, 9, 26, 2, 59)).toUTCString()); - assertEquals("Sun Oct 26 2014 03:00:00 GMT+0100 (CET)", - (new Date(2014, 9, 26, 3, 0)).toString()); - assertEquals("Sun, 26 Oct 2014 02:00:00 GMT", - (new Date(2014, 9, 26, 3, 0)).toUTCString()); - assertEquals("Sun Oct 26 2014 03:59:00 GMT+0100 (CET)", - (new Date(2014, 9, 26, 3, 59)).toString()); - assertEquals("Sun, 26 Oct 2014 02:59:00 GMT", - (new Date(2014, 9, 26, 3, 59)).toUTCString()); - assertEquals("Sun Oct 26 2014 04:00:00 GMT+0100 (CET)", - (new Date(2014, 9, 26, 4, 0)).toString()); - assertEquals("Sun, 26 Oct 2014 03:00:00 GMT", - (new Date(2014, 9, 26, 4, 0)).toUTCString()); -} - -if (timezone("BRT")) { - assertEquals("Sat Oct 18 2014 22:59:00 GMT-0300 (BRT)", - (new Date(2014, 9, 18, 22, 59)).toString()); - assertEquals("Sun, 19 Oct 2014 01:59:00 GMT", - (new Date(2014, 9, 18, 22, 59)).toUTCString()); - assertEquals("Sat Oct 18 2014 23:00:00 GMT-0300 (BRT)", - (new Date(2014, 9, 18, 23, 0)).toString()); - assertEquals("Sun, 19 Oct 2014 02:00:00 GMT", - (new Date(2014, 9, 18, 23, 0)).toUTCString()); - assertEquals("Sat Oct 18 2014 23:59:00 GMT-0300 (BRT)", - (new Date(2014, 9, 18, 23, 59)).toString()); - assertEquals("Sun, 19 Oct 2014 02:59:00 GMT", - (new Date(2014, 9, 18, 23, 59)).toUTCString()); - assertEquals("Sun Oct 19 2014 01:00:00 GMT-0200 (BRST)", - (new Date(2014, 9, 19, 0, 0)).toString()); - assertEquals("Sun, 19 Oct 2014 03:00:00 GMT", - (new Date(2014, 9, 19, 0, 0)).toUTCString()); - assertEquals("Sun Oct 19 2014 01:59:00 GMT-0200 (BRST)", - (new Date(2014, 9, 19, 0, 59)).toString()); - assertEquals("Sun, 19 Oct 2014 03:59:00 GMT", - (new Date(2014, 9, 19, 0, 59)).toUTCString()); - assertEquals("Sun Oct 19 2014 01:00:00 GMT-0200 (BRST)", - (new Date(2014, 9, 19, 1, 0)).toString()); - assertEquals("Sun, 19 Oct 2014 03:00:00 GMT", - (new Date(2014, 9, 19, 1, 0)).toUTCString()); - assertEquals("Sun Oct 19 2014 01:59:00 GMT-0200 (BRST)", - (new Date(2014, 9, 19, 1, 59)).toString()); - assertEquals("Sun, 19 Oct 2014 03:59:00 GMT", - (new Date(2014, 9, 19, 1, 59)).toUTCString()); - assertEquals("Sun Oct 19 2014 02:00:00 GMT-0200 (BRST)", - (new Date(2014, 9, 19, 2, 0)).toString()); - assertEquals("Sun, 19 Oct 2014 04:00:00 GMT", - (new Date(2014, 9, 19, 2, 0)).toUTCString()); - assertEquals("Sun Oct 19 2014 02:59:00 GMT-0200 (BRST)", - (new Date(2014, 9, 19, 2, 59)).toString()); - assertEquals("Sun, 19 Oct 2014 04:59:00 GMT", - (new Date(2014, 9, 19, 2, 59)).toUTCString()); - assertEquals("Sun Oct 19 2014 03:00:00 GMT-0200 (BRST)", - (new Date(2014, 9, 19, 3, 0)).toString()); - assertEquals("Sun, 19 Oct 2014 05:00:00 GMT", - (new Date(2014, 9, 19, 3, 0)).toUTCString()); - assertEquals("Sun Oct 19 2014 03:59:00 GMT-0200 (BRST)", - (new Date(2014, 9, 19, 3, 59)).toString()); - assertEquals("Sun, 19 Oct 2014 05:59:00 GMT", - (new Date(2014, 9, 19, 3, 59)).toUTCString()); - assertEquals("Sun Oct 19 2014 04:00:00 GMT-0200 (BRST)", - (new Date(2014, 9, 19, 4, 0)).toString()); - assertEquals("Sun, 19 Oct 2014 06:00:00 GMT", - (new Date(2014, 9, 19, 4, 0)).toUTCString()); - assertEquals("Sat Feb 15 2014 22:59:00 GMT-0200 (BRST)", - (new Date(2014, 1, 15, 22, 59)).toString()); - assertEquals("Sun, 16 Feb 2014 00:59:00 GMT", - (new Date(2014, 1, 15, 22, 59)).toUTCString()); - assertEquals("Sat Feb 15 2014 23:00:00 GMT-0200 (BRST)", - (new Date(2014, 1, 15, 23, 0)).toString()); - assertEquals("Sun, 16 Feb 2014 01:00:00 GMT", - (new Date(2014, 1, 15, 23, 0)).toUTCString()); - assertEquals("Sat Feb 15 2014 23:59:00 GMT-0200 (BRST)", - (new Date(2014, 1, 15, 23, 59)).toString()); - assertEquals("Sun, 16 Feb 2014 01:59:00 GMT", - (new Date(2014, 1, 15, 23, 59)).toUTCString()); - assertEquals("Sun Feb 16 2014 00:00:00 GMT-0300 (BRT)", - (new Date(2014, 1, 16, 0, 0)).toString()); - assertEquals("Sun, 16 Feb 2014 03:00:00 GMT", - (new Date(2014, 1, 16, 0, 0)).toUTCString()); - assertEquals("Sun Feb 16 2014 00:59:00 GMT-0300 (BRT)", - (new Date(2014, 1, 16, 0, 59)).toString()); - assertEquals("Sun, 16 Feb 2014 03:59:00 GMT", - (new Date(2014, 1, 16, 0, 59)).toUTCString()); - assertEquals("Sun Feb 16 2014 01:00:00 GMT-0300 (BRT)", - (new Date(2014, 1, 16, 1, 0)).toString()); - assertEquals("Sun, 16 Feb 2014 04:00:00 GMT", - (new Date(2014, 1, 16, 1, 0)).toUTCString()); - assertEquals("Sun Feb 16 2014 01:59:00 GMT-0300 (BRT)", - (new Date(2014, 1, 16, 1, 59)).toString()); - assertEquals("Sun, 16 Feb 2014 04:59:00 GMT", - (new Date(2014, 1, 16, 1, 59)).toUTCString()); - assertEquals("Sun Feb 16 2014 02:00:00 GMT-0300 (BRT)", - (new Date(2014, 1, 16, 2, 0)).toString()); - assertEquals("Sun, 16 Feb 2014 05:00:00 GMT", - (new Date(2014, 1, 16, 2, 0)).toUTCString()); - assertEquals("Sun Feb 16 2014 02:59:00 GMT-0300 (BRT)", - (new Date(2014, 1, 16, 2, 59)).toString()); - assertEquals("Sun, 16 Feb 2014 05:59:00 GMT", - (new Date(2014, 1, 16, 2, 59)).toUTCString()); - assertEquals("Sun Feb 16 2014 03:00:00 GMT-0300 (BRT)", - (new Date(2014, 1, 16, 3, 0)).toString()); - assertEquals("Sun, 16 Feb 2014 06:00:00 GMT", - (new Date(2014, 1, 16, 3, 0)).toUTCString()); - assertEquals("Sun Feb 16 2014 03:59:00 GMT-0300 (BRT)", - (new Date(2014, 1, 16, 3, 59)).toString()); - assertEquals("Sun, 16 Feb 2014 06:59:00 GMT", - (new Date(2014, 1, 16, 3, 59)).toUTCString()); - assertEquals("Sun Feb 16 2014 04:00:00 GMT-0300 (BRT)", - (new Date(2014, 1, 16, 4, 0)).toString()); - assertEquals("Sun, 16 Feb 2014 07:00:00 GMT", - (new Date(2014, 1, 16, 4, 0)).toUTCString()); -} - -if (timezone("PST")) { - assertEquals("Sat Mar 08 2014 22:59:00 GMT-0800 (PST)", - (new Date(2014, 2, 8, 22, 59)).toString()); - assertEquals("Sun, 09 Mar 2014 06:59:00 GMT", - (new Date(2014, 2, 8, 22, 59)).toUTCString()); - assertEquals("Sat Mar 08 2014 23:00:00 GMT-0800 (PST)", - (new Date(2014, 2, 8, 23, 0)).toString()); - assertEquals("Sun, 09 Mar 2014 07:00:00 GMT", - (new Date(2014, 2, 8, 23, 0)).toUTCString()); - assertEquals("Sat Mar 08 2014 23:59:00 GMT-0800 (PST)", - (new Date(2014, 2, 8, 23, 59)).toString()); - assertEquals("Sun, 09 Mar 2014 07:59:00 GMT", - (new Date(2014, 2, 8, 23, 59)).toUTCString()); - assertEquals("Sun Mar 09 2014 00:00:00 GMT-0800 (PST)", - (new Date(2014, 2, 9, 0, 0)).toString()); - assertEquals("Sun, 09 Mar 2014 08:00:00 GMT", - (new Date(2014, 2, 9, 0, 0)).toUTCString()); - assertEquals("Sun Mar 09 2014 00:59:00 GMT-0800 (PST)", - (new Date(2014, 2, 9, 0, 59)).toString()); - assertEquals("Sun, 09 Mar 2014 08:59:00 GMT", - (new Date(2014, 2, 9, 0, 59)).toUTCString()); - assertEquals("Sun Mar 09 2014 01:00:00 GMT-0800 (PST)", - (new Date(2014, 2, 9, 1, 0)).toString()); - assertEquals("Sun, 09 Mar 2014 09:00:00 GMT", - (new Date(2014, 2, 9, 1, 0)).toUTCString()); - assertEquals("Sun Mar 09 2014 01:59:00 GMT-0800 (PST)", - (new Date(2014, 2, 9, 1, 59)).toString()); - assertEquals("Sun, 09 Mar 2014 09:59:00 GMT", - (new Date(2014, 2, 9, 1, 59)).toUTCString()); - assertEquals("Sun Mar 09 2014 03:00:00 GMT-0700 (PDT)", - (new Date(2014, 2, 9, 2, 0)).toString()); - assertEquals("Sun, 09 Mar 2014 10:00:00 GMT", - (new Date(2014, 2, 9, 2, 0)).toUTCString()); - assertEquals("Sun Mar 09 2014 03:59:00 GMT-0700 (PDT)", - (new Date(2014, 2, 9, 2, 59)).toString()); - assertEquals("Sun, 09 Mar 2014 10:59:00 GMT", - (new Date(2014, 2, 9, 2, 59)).toUTCString()); - assertEquals("Sun Mar 09 2014 03:00:00 GMT-0700 (PDT)", - (new Date(2014, 2, 9, 3, 0)).toString()); - assertEquals("Sun, 09 Mar 2014 10:00:00 GMT", - (new Date(2014, 2, 9, 3, 0)).toUTCString()); - assertEquals("Sun Mar 09 2014 03:59:00 GMT-0700 (PDT)", - (new Date(2014, 2, 9, 3, 59)).toString()); - assertEquals("Sun, 09 Mar 2014 10:59:00 GMT", - (new Date(2014, 2, 9, 3, 59)).toUTCString()); - assertEquals("Sun Mar 09 2014 04:00:00 GMT-0700 (PDT)", - (new Date(2014, 2, 9, 4, 0)).toString()); - assertEquals("Sun, 09 Mar 2014 11:00:00 GMT", - (new Date(2014, 2, 9, 4, 0)).toUTCString()); - assertEquals("Sat Nov 01 2014 22:59:00 GMT-0700 (PDT)", - (new Date(2014, 10, 1, 22, 59)).toString()); - assertEquals("Sun, 02 Nov 2014 05:59:00 GMT", - (new Date(2014, 10, 1, 22, 59)).toUTCString()); - assertEquals("Sat Nov 01 2014 23:00:00 GMT-0700 (PDT)", - (new Date(2014, 10, 1, 23, 0)).toString()); - assertEquals("Sun, 02 Nov 2014 06:00:00 GMT", - (new Date(2014, 10, 1, 23, 0)).toUTCString()); - assertEquals("Sat Nov 01 2014 23:59:00 GMT-0700 (PDT)", - (new Date(2014, 10, 1, 23, 59)).toString()); - assertEquals("Sun, 02 Nov 2014 06:59:00 GMT", - (new Date(2014, 10, 1, 23, 59)).toUTCString()); - assertEquals("Sun Nov 02 2014 00:00:00 GMT-0700 (PDT)", - (new Date(2014, 10, 2, 0, 0)).toString()); - assertEquals("Sun, 02 Nov 2014 07:00:00 GMT", - (new Date(2014, 10, 2, 0, 0)).toUTCString()); - assertEquals("Sun Nov 02 2014 00:59:00 GMT-0700 (PDT)", - (new Date(2014, 10, 2, 0, 59)).toString()); - assertEquals("Sun, 02 Nov 2014 07:59:00 GMT", - (new Date(2014, 10, 2, 0, 59)).toUTCString()); - assertEquals("Sun Nov 02 2014 01:00:00 GMT-0700 (PDT)", - (new Date(2014, 10, 2, 1, 0)).toString()); - assertEquals("Sun, 02 Nov 2014 08:00:00 GMT", - (new Date(2014, 10, 2, 1, 0)).toUTCString()); - assertEquals("Sun Nov 02 2014 01:59:00 GMT-0700 (PDT)", - (new Date(2014, 10, 2, 1, 59)).toString()); - assertEquals("Sun, 02 Nov 2014 08:59:00 GMT", - (new Date(2014, 10, 2, 1, 59)).toUTCString()); - assertEquals("Sun Nov 02 2014 02:00:00 GMT-0800 (PST)", - (new Date(2014, 10, 2, 2, 0)).toString()); - assertEquals("Sun, 02 Nov 2014 10:00:00 GMT", - (new Date(2014, 10, 2, 2, 0)).toUTCString()); - assertEquals("Sun Nov 02 2014 02:59:00 GMT-0800 (PST)", - (new Date(2014, 10, 2, 2, 59)).toString()); - assertEquals("Sun, 02 Nov 2014 10:59:00 GMT", - (new Date(2014, 10, 2, 2, 59)).toUTCString()); - assertEquals("Sun Nov 02 2014 03:00:00 GMT-0800 (PST)", - (new Date(2014, 10, 2, 3, 0)).toString()); - assertEquals("Sun, 02 Nov 2014 11:00:00 GMT", - (new Date(2014, 10, 2, 3, 0)).toUTCString()); - assertEquals("Sun Nov 02 2014 03:59:00 GMT-0800 (PST)", - (new Date(2014, 10, 2, 3, 59)).toString()); - assertEquals("Sun, 02 Nov 2014 11:59:00 GMT", - (new Date(2014, 10, 2, 3, 59)).toUTCString()); - assertEquals("Sun Nov 02 2014 04:00:00 GMT-0800 (PST)", - (new Date(2014, 10, 2, 4, 0)).toString()); - assertEquals("Sun, 02 Nov 2014 12:00:00 GMT", - (new Date(2014, 10, 2, 4, 0)).toUTCString()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-312.js b/implementation-contributed/v8/mjsunit/regress/regress-312.js deleted file mode 100644 index 0fb8c21f5eb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-312.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should not trigger debug ASSERT. -// See http://code.google.com/p/v8/issues/detail?id=312 - -var o = { f: "x" ? function () {} : function () {} }; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3135.js b/implementation-contributed/v8/mjsunit/regress/regress-3135.js deleted file mode 100644 index f15c9a86d8d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3135.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Properties are serialized once. -assertEquals('{"x":1}', JSON.stringify({ x : 1 }, ["x", 1, "x", 1])); -assertEquals('{"1":1}', JSON.stringify({ 1 : 1 }, ["x", 1, "x", 1])); -assertEquals('{"1":1}', JSON.stringify({ 1 : 1 }, ["1", 1, "1", 1])); -assertEquals('{"1":1}', JSON.stringify({ 1 : 1 }, [1, "1", 1, "1"])); - -// Properties are visited at most once. -var fired = 0; -var getter_obj = { get x() { fired++; return 2; } }; -assertEquals('{"x":2}', JSON.stringify(getter_obj, ["x", "y", "x"])); -assertEquals(1, fired); - -// Order of the replacer array is followed. -assertEquals('{"y":4,"x":3}', JSON.stringify({ x : 3, y : 4}, ["y", "x"])); -assertEquals('{"y":4,"1":2,"x":3}', - JSON.stringify({ x : 3, y : 4, 1 : 2 }, ["y", 1, "x"])); - -// With a replacer array the value of the property is retrieved using [[Get]] -// ignoring own and enumerability. -var a = { x : 8 }; -assertEquals('{"__proto__":{"__proto__":null},"x":8}', - JSON.stringify(a, ["__proto__", "x", "__proto__"])); -a.__proto__ = { x : 7 }; -assertEquals('{"__proto__":{"__proto__":{"__proto__":null},"x":7},"x":8}', - JSON.stringify(a, ["__proto__", "x"])); -var b = { __proto__: { x: 9 } }; -assertEquals('{}', JSON.stringify(b)); -assertEquals('{"x":9}', JSON.stringify(b, ["x"])); -var c = {x: 10}; -Object.defineProperty(c, 'x', { enumerable: false }); -assertEquals('{}', JSON.stringify(c)); -assertEquals('{"x":10}', JSON.stringify(c, ["x"])); - -// Arrays are not affected by the replacer array. -assertEquals("[9,8,7]", JSON.stringify([9, 8, 7], [1, 1])); -var mixed_arr = [11,12,13]; -mixed_arr.x = 10; -assertEquals('[11,12,13]', JSON.stringify(mixed_arr, [1, 0, 1])); - -// Array elements of objects are affected. -var mixed_obj = { x : 3 }; -mixed_obj[0] = 6; -mixed_obj[1] = 5; -assertEquals('{"1":5,"0":6}', JSON.stringify(mixed_obj, [1, 0, 1])); - -// Nested object. -assertEquals('{"z":{"x":3},"x":1}', - JSON.stringify({ x: 1, y:2, z: {x:3, b:4}}, ["z","x"])); - -// Objects in the replacer array are ignored. -assertEquals('{}', - JSON.stringify({ x : 1, "1": 1 }, [{}])); -assertEquals('{}', - JSON.stringify({ x : 1, "1": 1 }, [true, undefined, null])); -assertEquals('{}', - JSON.stringify({ x : 1, "1": 1 }, - [{ toString: function() { return "x";} }])); -assertEquals('{}', - JSON.stringify({ x : 1, "1": 1 }, - [{ valueOf: function() { return 1;} }])); - -// Make sure that property names that clash with the names of Object.prototype -// still works. -assertEquals('{"toString":42}', JSON.stringify({ toString: 42 }, ["toString"])); - -// Number wrappers and String wrappers should be unwrapped. -assertEquals('{"1":1,"s":"s"}', - JSON.stringify({ 1: 1, s: "s" }, - [new Number(1), new String("s")])); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3138.js b/implementation-contributed/v8/mjsunit/regress/regress-3138.js deleted file mode 100644 index 4f607ed6d23..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3138.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function f(){ - assertEquals("function", typeof f); -})(); - -(function f(){ - var f; // Variable shadows function name. - assertEquals("undefined", typeof f); -})(); - -(function f(){ - var f; - assertEquals("undefined", typeof f); - with ({}); // Force context allocation of both variable and function name. -})(); - -assertEquals("undefined", typeof f); - -// var initialization is intercepted by with scope. -(function() { - var o = { a: 1 }; - with (o) { - var a = 2; - } - assertEquals("undefined", typeof a); - assertEquals(2, o.a); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3158.js b/implementation-contributed/v8/mjsunit/regress/regress-3158.js deleted file mode 100644 index c69127395e5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3158.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -Array.prototype[0] = 'a'; -delete Array.prototype[0]; - -function foo(a, i) { - return a[i]; -} - -var a = new Array(100000); -a[3] = 'x'; - -foo(a, 3); -foo(a, 3); -foo(a, 3); -%OptimizeFunctionOnNextCall(foo); -foo(a, 3); -Array.prototype[0] = 'a'; -var z = foo(a, 0); -assertEquals('a', z); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3159.js b/implementation-contributed/v8/mjsunit/regress/regress-3159.js deleted file mode 100644 index cfc8a39b8d0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3159.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - new Uint32Array(new ArrayBuffer(1), 2, 3); -} catch (e) { - assertEquals("start offset of Uint32Array should be a multiple of 4", - e.message); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-317.js b/implementation-contributed/v8/mjsunit/regress/regress-317.js deleted file mode 100644 index 85f408b8413..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-317.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Ensure replacement with string allows $ in replacement string. - -assertEquals("a$ec", "abc".replace("b", "$e"), "$e isn't meaningful"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3176.js b/implementation-contributed/v8/mjsunit/regress/regress-3176.js deleted file mode 100644 index dbfe8218fd3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3176.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo(a) { - var sum = 0; - for (var i = 0; i < 10; i++) { - sum += a[i]; - - if (i > 6) { - sum -= a[i - 4]; - sum -= a[i - 5]; - } - } - return sum; -} - -var a = new Int32Array(10); - -foo(a); -foo(a); -%OptimizeFunctionOnNextCall(foo); -foo(a); -%OptimizeFunctionOnNextCall(foo); -foo(a); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-318.js b/implementation-contributed/v8/mjsunit/regress/regress-318.js deleted file mode 100644 index e94f1cba13a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-318.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should not crash or raise an exception. - -function test(value) { - if (typeof(value) == 'boolean') value = value + ''; - if (typeof(value) == 'number') value = value + ''; -} - -assertDoesNotThrow('test(0)'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3183.js b/implementation-contributed/v8/mjsunit/regress/regress-3183.js deleted file mode 100644 index 4551621e65d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3183.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -(function DeoptimizeArgCallFunctionGeneric() { - var a = []; - - function f1(method, array, elem, deopt) { - assertEquals('push', method); - } - - function f2() { } - - function bar(x, deopt, f) { - f('push', a, [x], deopt + 0); - } - - function foo() { return bar(arguments[0], arguments[1], arguments[2]); } - function baz(f, deopt) { return foo("x", deopt, f); } - - baz(f1, 0); - baz(f2, 0); - %OptimizeFunctionOnNextCall(baz); - baz(f1, "deopt"); -})(); - - -(function DeoptimizeArgGlobalFunctionGeneric() { - var a = []; - - var f1; - - f1 = function(method, array, elem, deopt) { - assertEquals('push', method); - } - - function bar(x, deopt, f) { - f1('push', a, [x], deopt + 0); - } - - function foo() { return bar(arguments[0], arguments[1]); } - function baz(deopt) { return foo("x", deopt); } - - baz(0); - baz(0); - %OptimizeFunctionOnNextCall(baz); - baz("deopt"); -})(); - - -(function DeoptimizeArgCallFunctionRuntime() { - var a = []; - - var f1; - - f1 = function(method, array, elem, deopt) { - assertEquals('push', method); - } - - function bar(x, deopt) { - %_Call(f1, null, 'push', [x][0], ((deopt + 0), 1)); - } - - function foo() { return bar(arguments[0], arguments[1]); } - function baz(deopt) { return foo(0, deopt); } - - baz(0); - baz(0); - %OptimizeFunctionOnNextCall(baz); - baz("deopt"); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-318420.js b/implementation-contributed/v8/mjsunit/regress/regress-318420.js deleted file mode 100644 index 77bef10ec4e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-318420.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function bar(a, b) { with(a) {return a + b;} } - -var obj = { - functions: [bar, bar, bar, bar], - receivers: [bar, bar, undefined, null], - foo: function () { - for (var a = this.functions, e = this.receivers, c = a.length, - d = 0; d < c ; d++) { - a[d].apply(e[d], arguments) - } - } -} - -obj.foo(1, 2, 3, 4); -obj.foo(1, 2, 3, 4); -%OptimizeFunctionOnNextCall(obj.foo); -obj.foo(1, 2, 3, 4); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3185905.js b/implementation-contributed/v8/mjsunit/regress/regress-3185905.js deleted file mode 100644 index bd611ab14ea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3185905.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function test1(x) { - var a = arguments.callee; - x = 1; - x = 2; - assertEquals(2, x); -} -test1(0) - -function test2(x) { - var a = arguments.callee; - x++; - x++; - assertEquals(2, x); -} -test2(0) - -function test3(x) { - var a = arguments.callee; - x += 1; - x += 1; - assertEquals(2, x); -} -test3(0) - -function test4(x) { - var arguments = { 0 : 3, 'x' : 4 }; - x += 1; - x += 1; - assertEquals(2, x); - assertEquals(3, arguments[0]) - assertEquals(4, arguments['x']) -} -test4(0) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-319722-ArrayBuffer.js b/implementation-contributed/v8/mjsunit/regress/regress-319722-ArrayBuffer.js deleted file mode 100644 index 4a48a61ab38..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-319722-ArrayBuffer.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --nostress-opt --allow-natives-syntax --mock-arraybuffer-allocator -var maxSize = %MaxSmi() + 1; -var ab; - -// Allocate the largest ArrayBuffer we can on this architecture. -for (k = 8; k >= 1 && ab == null; k = k/2) { - try { - ab = new ArrayBuffer(maxSize * k); - } catch (e) { - ab = null; - } -} - -assertTrue(ab != null); - -function TestArray(constr) { - assertThrows(function() { - new constr(ab, 0, maxSize); - }, RangeError); -} - -TestArray(Uint8Array); -TestArray(Int8Array); -TestArray(Uint16Array); -TestArray(Int16Array); -TestArray(Uint32Array); -TestArray(Int32Array); -TestArray(Float32Array); -TestArray(Float64Array); -TestArray(Uint8ClampedArray); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-319722-TypedArrays.js b/implementation-contributed/v8/mjsunit/regress/regress-319722-TypedArrays.js deleted file mode 100644 index 0445e2d2cf0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-319722-TypedArrays.js +++ /dev/null @@ -1,45 +0,0 @@ - -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --nostress-opt --allow-natives-syntax -var maxSize = %MaxSmi() + 1; -function TestArray(constr) { - assertThrows(function() { - new constr(maxSize); - }, RangeError); -} - -TestArray(Uint8Array); -TestArray(Int8Array); -TestArray(Uint16Array); -TestArray(Int16Array); -TestArray(Uint32Array); -TestArray(Int32Array); -TestArray(Float32Array); -TestArray(Float64Array); -TestArray(Uint8ClampedArray); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3199913.js b/implementation-contributed/v8/mjsunit/regress/regress-3199913.js deleted file mode 100644 index e202af18f3e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3199913.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that bailout during evaluation of the key for a keyed call works as -// intended. - -var y = { - 'a' : function (x, y) { return 'called a(' + x + ', ' + y + ')' }, - 'b' : function (x, y) { return 'called b(' + x + ', ' + y + ')' } -} - -function C() { -} - -C.prototype.f = function () { - return y[(this.a == 1 ? "a" : "b")](0, 1); -} - -obj = new C() -assertEquals('called b(0, 1)', obj.f()) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3204.js b/implementation-contributed/v8/mjsunit/regress/regress-3204.js deleted file mode 100644 index b3161be4970..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3204.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// ----------------------------------------------------------------------------- - -function SmiTaggingCanOverflow(x) { - x = x | 0; - if (x == 0) return; - return x; -} - -SmiTaggingCanOverflow(2147483647); -SmiTaggingCanOverflow(2147483647); -%OptimizeFunctionOnNextCall(SmiTaggingCanOverflow); -assertEquals(2147483647, SmiTaggingCanOverflow(2147483647)); - -// ----------------------------------------------------------------------------- - -function ModILeftCanBeNegative() { - var x = 0; - for (var i = -1; i < 0; ++i) x = i % 2; - return x; -} - -ModILeftCanBeNegative(); -%OptimizeFunctionOnNextCall(ModILeftCanBeNegative); -assertEquals(-1, ModILeftCanBeNegative()); - -// ----------------------------------------------------------------------------- - -function ModIRightCanBeZero() { - var x = 0; - for (var i = -1; i <= 0; ++i) x = (2 % i) | 0; - return x; -} - -ModIRightCanBeZero(); -%OptimizeFunctionOnNextCall(ModIRightCanBeZero); -ModIRightCanBeZero(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-320532.js b/implementation-contributed/v8/mjsunit/regress/regress-320532.js deleted file mode 100644 index 75595507790..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-320532.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Flags: --allow-natives-syntax --expose-gc -// Flags: --stress-runs=8 --send-idle-notification --gc-global - - -function bar() { return new Array(); } -bar(); -bar(); -%OptimizeFunctionOnNextCall(bar); -a = bar(); -function foo(len) { return new Array(len); } -foo(0); -foo(0); -%OptimizeFunctionOnNextCall(bar); -foo(0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3218530.js b/implementation-contributed/v8/mjsunit/regress/regress-3218530.js deleted file mode 100644 index 54c66dfded7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3218530.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This tests that a global key values are preserved when used in -// an expression which will bail out. - -var m = Math; -var p = "floor"; - -function test() { - var bignumber = 31363200000; - assertEquals(m[p](Math.round(bignumber/864E5)/7)+1, 52); -} - -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3218915.js b/implementation-contributed/v8/mjsunit/regress/regress-3218915.js deleted file mode 100644 index 4b08a6e8250..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3218915.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Checks that comma expression in conditional context is processed correctly. - -function withCommaExpressionInConditional(x) { - if (x > 1000) { for (var i = 0; i < 10000; i++) { } } - var y; - if (y = x, y > 1) { - return 'big'; - } - return (y = x + 1, y > 1) ? 'medium' : 'small'; -} - -for (var i = 0; i < 5; i++) { - withCommaExpressionInConditional(i); -} -%OptimizeFunctionOnNextCall(withCommaExpressionInConditional); -withCommaExpressionInConditional(i); -withCommaExpressionInConditional("1") diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3220.js b/implementation-contributed/v8/mjsunit/regress/regress-3220.js deleted file mode 100644 index 6f8e8c8f0ee..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3220.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --use-strict - -String(new Date()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3229.js b/implementation-contributed/v8/mjsunit/regress/regress-3229.js deleted file mode 100644 index 53e14cd5418..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3229.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Escape '/'. -function testEscapes(expected, regexp) { - assertEquals(expected, regexp.source); - assertEquals("/" + expected + "/", regexp.toString()); -} - -testEscapes("\\/", /\//); -testEscapes("\\/\\/", /\/\//); -testEscapes("\\/", new RegExp("/")); -testEscapes("\\/", new RegExp("\\/")); -testEscapes("\\\\\\/", new RegExp("\\\\/")); -testEscapes("\\/\\/", new RegExp("\\/\\/")); -testEscapes("\\/\\/\\/\\/", new RegExp("////")); -testEscapes("\\/\\/\\/\\/", new RegExp("\\//\\//")); -testEscapes("(?:)", new RegExp("")); - -// Read-only property. -var r = /\/\//; -testEscapes("\\/\\/", r); -r.source = "garbage"; -testEscapes("\\/\\/", r); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3230771.js b/implementation-contributed/v8/mjsunit/regress/regress-3230771.js deleted file mode 100644 index bd00798462b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3230771.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for missing stack-overflow check in -// VisitForStatement in hydrogen graph building. - -function f() { - for (var h = typeof arguments[0] == "object" ? 0 : arguments; false; ) { } -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-323845.js b/implementation-contributed/v8/mjsunit/regress/regress-323845.js deleted file mode 100644 index 4e816579178..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-323845.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test that breaks escape analysis because objects escape over -// the arguments object. - -// Flags: --allow-natives-syntax - -function h() { - g.arguments; -} - -function g(x) { - h(); -} - -function f() { - g({}); -} - -f(); f(); f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-324028.js b/implementation-contributed/v8/mjsunit/regress/regress-324028.js deleted file mode 100644 index 7fe0fcd81f9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-324028.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var badObj = { length : 1e40 }; - -assertThrows(function() { new Uint8Array(badObj); }, RangeError); -assertThrows(function() { new Uint8ClampedArray(badObj); }, RangeError); -assertThrows(function() { new Int8Array(badObj); }, RangeError); -assertThrows(function() { new Uint16Array(badObj); }, RangeError); -assertThrows(function() { new Int16Array(badObj); }, RangeError); -assertThrows(function() { new Uint32Array(badObj); }, RangeError); -assertThrows(function() { new Int32Array(badObj); }, RangeError); -assertThrows(function() { new Float32Array(badObj); }, RangeError); -assertThrows(function() { new Float64Array(badObj); }, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3247124.js b/implementation-contributed/v8/mjsunit/regress/regress-3247124.js deleted file mode 100644 index fe4ec4e3c90..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3247124.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var foo = unescape("%E0%E2%EA%F4%FB%E3%F5%E1%E9%ED%F3%FA%E7%FC%C0%C2%CA%D4%DB%C3%D5%C1%C9%CD%D3%DA%C7%DC"); - -function bar(x) { - var s = new String(x); - var a = new String(foo); - var b = new String('aaeouaoaeioucuAAEOUAOAEIOUCU'); - - var i = new Number(); - var j = new Number(); - var c = new String(); - var r = ''; - - for (i = 0; i < s.length; i++) { - c = s.substring(i, i + 1); - for (j = 0; j < a.length; j++) { - if (a.substring(j, j + 1) == c) { - c = b.substring(j, j + 1); - } - } - r += c; - } - - return r.toLowerCase(); -} - -for (var i = 0; i < 100; i++) bar(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3252443.js b/implementation-contributed/v8/mjsunit/regress/regress-3252443.js deleted file mode 100644 index cd7aa40e7d7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3252443.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var document = new Object(); -document.getElementById = function(s) { return { style: {}}}; -function x(p0, p1, p2, p3) { - document.getElementById(p1+p0).style.display=''; - document.getElementById(p1+''+p0).style.backgroundColor = ""; - document.getElementById(p1+''+p0).style.color=""; - document.getElementById(p1+''+p0).style.borderBottomColor = ""; - for (var i = p3; i <= p2; ++i) { - if (i != p0) { - document.getElementById(p1+i).style.display=''; - document.getElementById(p1+''+i).style.backgroundColor = ""; - document.getElementById(p1+''+i).style.color=""; - document.getElementById(p1+''+i).style.borderBottomColor = ""; - } - } -} - -x(1, "xxx", 10000, 1) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3255.js b/implementation-contributed/v8/mjsunit/regress/regress-3255.js deleted file mode 100644 index 3526d600c96..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3255.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --enable-slow-asserts - -var arr = []; -var str = new String('x'); - -function f(a,b) { - a[b] = 1; -} - -f(arr, 0); -f(str, 0); -f(str, 0); - -// This is just to trigger elements validation, object already broken. -%SetKeyedProperty(str, 1, 'y'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-326.js b/implementation-contributed/v8/mjsunit/regress/regress-326.js deleted file mode 100644 index fcd102e132b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-326.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should not crash or raise an exception. -// Should sort non-array into equivalent of [37,42,undefined,,0] - -var nonArray = { length: 4, 0: 42, 2: 37, 3: undefined, 4: 0 }; -Array.prototype.sort.call(nonArray); - -assertEquals(4, nonArray.length, "preserve length"); -assertEquals(37, nonArray[0], "sort smallest first"); -assertEquals(42, nonArray[1], "sort largest last"); -assertTrue(2 in nonArray, "don't delete undefined"); -assertEquals(undefined, nonArray[2], "sort undefined after largest"); -assertFalse(3 in nonArray, "don't create non-existing"); -assertEquals(0, nonArray[4], "don't affect after length."); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3294.js b/implementation-contributed/v8/mjsunit/regress/regress-3294.js deleted file mode 100644 index 400e6b68860..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3294.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var e = new Error('message'); -var keys = Object.keys(e); -e.stack; -assertEquals(keys, Object.keys(e)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-330046.js b/implementation-contributed/v8/mjsunit/regress/regress-330046.js deleted file mode 100644 index 24557b4cc67..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-330046.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --use-osr --allow-natives-syntax --opt - -var o1 = {a : 10}; -var o2 = { }; -o2.__proto__ = o1; -var o3 = { }; -o3.__proto__ = o2; - -function f(n, x, b) { - var sum = x.a; - for (var i = 0; i < n; i++) { - sum = 1.0 / i; - } - return sum; -} - -f(10, o3); -f(20, o3); -f(30, o3); -%OptimizeFunctionOnNextCall(f, "concurrent"); -f(100000, o3); -// At this point OSR replaces already optimized code. -// Check that it evicts old code from cache. - -// This causes all code for f to be lazily deopted. -o2.a = 5; - -// If OSR did not evict the old code, it will be installed in f here. -%OptimizeFunctionOnNextCall(f); -f(10, o3); - -// The old code is already deoptimized, but f still points to it. -// Disassembling it will crash. -%DisassembleFunction(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3307.js b/implementation-contributed/v8/mjsunit/regress/regress-3307.js deleted file mode 100644 index 1fc770d20c8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3307.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function p(x) { - this.x = x; -} - -function f() { - var a = new p(1), b = new p(2); - for (var i = 0; i < 1; i++) { - a.x += b.x; - } - return a.x; -} - -new p(0.1); // make 'x' mutable box double field in p. - -assertEquals(3, f()); -assertEquals(3, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(3, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-331416.js b/implementation-contributed/v8/mjsunit/regress/regress-331416.js deleted file mode 100644 index 0c60fced14e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-331416.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function load(a, i) { - return a[i]; -} -load([1, 2, 3], "length"); -load(3); -load([1, 2, 3], 3); -load(0, 0); -%OptimizeFunctionOnNextCall(load); -assertEquals(2, load([1, 2, 3], 1)); -assertEquals(undefined, load(0, 0)); - -function store(a, i, x) { - a[i] = x; -} -store([1, 2, 3], "length", 3); -store(3); -store([1, 2, 3], 3, 3); -store(0, 0, 1); -%OptimizeFunctionOnNextCall(store); -var a = [1, 2, 3]; -store(a, 1, 1); -assertEquals(1, a[1]); -store(0, 0, 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-331444.js b/implementation-contributed/v8/mjsunit/regress/regress-331444.js deleted file mode 100644 index c78d6fb71b7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-331444.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -function boom() { - var args = []; - for (var i = 0; i < 125000; i++) - args.push(i); - return Array.apply(Array, args); -} -var array = boom(); -function fib(n) { - var f0 = 0, f1 = 1; - for (; n > 0; n = n - 1) { - f0 + f1; - f0 = array; - } -} -fib(12); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3334.js b/implementation-contributed/v8/mjsunit/regress/regress-3334.js deleted file mode 100644 index 301155dbde7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3334.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo(){} -Object.defineProperty(foo, "prototype", { value: 2 }); -assertEquals(2, foo.prototype); - -function bar(){} -Object.defineProperty(bar, "prototype", { value: 2, writable: false }); -assertEquals(2, bar.prototype); -assertThrows(function() { "use strict"; bar.prototype = 10; }, TypeError); -assertEquals(false, Object.getOwnPropertyDescriptor(bar,"prototype").writable); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-333594.js b/implementation-contributed/v8/mjsunit/regress/regress-333594.js deleted file mode 100644 index 6f6dbaafcd6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-333594.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = { x: 1.1 }; -a.x = 0; -var G = a.x; -var o = { x: {} }; - -function func() { - return {x: G}; -} - -func(); -func(); -%OptimizeFunctionOnNextCall(func); -assertEquals(0, func().x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-334.js b/implementation-contributed/v8/mjsunit/regress/regress-334.js deleted file mode 100644 index 9a20c6ae76a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-334.js +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test for http://code.google.com/p/v8/issues/detail?id=334 - -var READ_ONLY = 1; -var DONT_ENUM = 2; -var DONT_DELETE = 4; - -function AddNamedProperty(object, name, value, attrs) { - Object.defineProperty(object, name, { - value, - configurable: (attrs & DONT_DELETE) === 0, - enumerable: (attrs & DONT_ENUM) === 0, - writable: (attrs & READ_ONLY) === 0 - }); -} - -function func1(){} -function func2(){} - -var object = {__proto__:{}}; -AddNamedProperty(object, "foo", func1, DONT_ENUM | DONT_DELETE); -AddNamedProperty(object, "bar", func1, DONT_ENUM | READ_ONLY); -AddNamedProperty(object, "baz", func1, DONT_DELETE | READ_ONLY); -AddNamedProperty(object.__proto__, "bif", func1, DONT_ENUM | DONT_DELETE); -object.bif = func2; - -function enumerable(obj) { - var res = []; - for (var i in obj) { - res.push(i); - } - res.sort(); - return res; -} - -// Sanity check: expected initial state. -assertArrayEquals(["baz", "bif"], enumerable(object), "enum0"); -assertFalse(delete object.foo, "delete foo"); -assertFalse(delete object.baz, "delete baz"); -assertEquals(func1, object.foo, "read foo"); -assertEquals(func1, object.bar, "read bar"); -assertEquals(func1, object.baz, "read baz"); -assertEquals(func2, object.bif, "read bif"); - -// Can't assign to READ_ONLY. -object.bar = "NO WAY"; -assertEquals(func1, object.bar, "read bar 2"); -assertArrayEquals(["baz", "bif"], enumerable(object), "enum1"); - -// Assignment to non-readonly. Assignment shouldn't change attributes! -object.foo = func2; -assertArrayEquals(["baz", "bif"], enumerable(object), "enum2"); -assertFalse(delete object.foo, "delete foo 2"); - -// Delete should erase attributes if value set again. -assertTrue(delete object.bar, "delete bar"); -assertFalse("bar" in object, "has bar"); -object.bar = func2; -assertTrue("bar" in object, "has bar 2"); -assertEquals(func2, object.bar, "read bar 3"); - -assertArrayEquals(["bar", "baz", "bif"], enumerable(object), "enum3"); - -// Unshadowing a prototype property exposes its attributes. -assertTrue(delete object.bif, "delete bif"); -assertArrayEquals(["bar", "baz"], enumerable(object), "enum4"); -assertEquals(func1, object.bif, "read bif 2"); -// Can't delete prototype property. -assertTrue(delete object.bif, "delete bif 2"); -assertArrayEquals(["bar", "baz"], enumerable(object), "enum5"); -assertEquals(func1, object.bif, "read bif3"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-334708.js b/implementation-contributed/v8/mjsunit/regress/regress-334708.js deleted file mode 100644 index f0291bbdab6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-334708.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo(x, y) { - return Math.floor(x / y); -} - -function bar(x, y) { - return foo(x + 1, y + 1); -} - -foo(16, "4"); - -bar(64, 2); -%OptimizeFunctionOnNextCall(bar); -bar(64, 2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3359.js b/implementation-contributed/v8/mjsunit/regress/regress-3359.js deleted file mode 100644 index 0973797e7e7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3359.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - return 1 >> Boolean.constructor + 1; -} -assertEquals(1, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(1, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-336820.js b/implementation-contributed/v8/mjsunit/regress/regress-336820.js deleted file mode 100644 index 660a8fc3147..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-336820.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --max-old-space-size=1600 - -assertThrows((function() { - let str = "a".repeat(1e7); - let arr = new Array(2000); - for (let i = 0; i < 200; ++i) { - arr[i*10] = str; - } - let res = arr.join(':'); -}), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3380.js b/implementation-contributed/v8/mjsunit/regress/regress-3380.js deleted file mode 100644 index 2fae459b3b4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3380.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a) { - return (a[0] >>> 0) > 0; -} - -var a = new Uint32Array([4]); -var b = new Uint32Array([0x80000000]); -assertTrue(foo(a)); -assertTrue(foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(b)) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3392.js b/implementation-contributed/v8/mjsunit/regress/regress-3392.js deleted file mode 100644 index 375f30210ce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3392.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - var a = {b: -1.5}; - for (var i = 0; i < 1; i++) { - a.b = 1; - } - assertTrue(0 <= a.b); -} - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-340125.js b/implementation-contributed/v8/mjsunit/regress/regress-340125.js deleted file mode 100644 index a3e40a8d5ac..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-340125.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -var a = new Int8Array(2); -var b = a.subarray(2, 4); -assertThrows(function () { a.set(b, 1e10); }, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3404.js b/implementation-contributed/v8/mjsunit/regress/regress-3404.js deleted file mode 100644 index c4d280e577d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3404.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function testError(error) { - // Reconfigure e.stack to be non-configurable - var desc1 = Object.getOwnPropertyDescriptor(error, "stack"); - Object.defineProperty(error, "stack", - {get: desc1.get, set: desc1.set, configurable: false}); - - var desc2 = Object.getOwnPropertyDescriptor(error, "stack"); - assertFalse(desc2.configurable); - assertEquals(desc1.get, desc2.get); - assertEquals(desc2.get, desc2.get); -} - -function stackOverflow() { - function f() { f(); } - try { f() } catch (e) { return e; } -} - -function referenceError() { - try { g() } catch (e) { return e; } -} - -testError(referenceError()); -testError(stackOverflow()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3408144.js b/implementation-contributed/v8/mjsunit/regress/regress-3408144.js deleted file mode 100644 index 8bd7b20eb9f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3408144.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test incorrect code generation for alternations on ARM. - - -function foo() { - return (0 > ("10"||10) - 1); -} - -assertFalse(foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-341.js b/implementation-contributed/v8/mjsunit/regress/regress-341.js deleted file mode 100644 index 4db6bc69626..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-341.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should not crash. -// See http://code.google.com/p/v8/issues/detail?id=341 - -function F() {} - -F.prototype = 1; -var o = {}; - -assertThrows("o instanceof F"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-343609.js b/implementation-contributed/v8/mjsunit/regress/regress-343609.js deleted file mode 100644 index 520b54e52cf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-343609.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --block-concurrent-recompilation -// Flags: --expose-gc - -function Ctor() { - this.a = 1; -} - -function get_closure() { - return function add_field(obj) { - obj.c = 3; - obj.a = obj.a + obj.c; - return obj.a; - } -} -function get_closure2() { - return function cc(obj) { - obj.c = 3; - obj.a = obj.a + obj.c; - } -} - -function dummy() { - (function () { - var o = {c: 10}; - var f1 = get_closure2(); - f1(o); - f1(o); - %OptimizeFunctionOnNextCall(f1); - f1(o); - })(); -} - -var o = new Ctor(); -function opt() { - (function () { - var f1 = get_closure(); - f1(new Ctor()); - f1(new Ctor()); - %OptimizeFunctionOnNextCall(f1); - f1(o); - })(); -} - -// Optimize add_field and install its code in optimized code cache. -opt(); -opt(); -opt(); - -// Optimize dummy function to remove the add_field from head of optimized -// function list in the context. -dummy(); -dummy(); - -// Kill add_field in new space GC. -for(var i = 0; i < 3; i++) gc(true); - -// Trigger deopt. -o.c = 2.2; - -// Fetch optimized code of add_field from cache and crash. -var f2 = get_closure(); -f2(new Ctor()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-345.js b/implementation-contributed/v8/mjsunit/regress/regress-345.js deleted file mode 100644 index f7f28a1a2d5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-345.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Escaping to the same target from both the try and catch blocks of -// try...catch...finally should not fail at compile-time. -// -// Reported by nth10sd. -// See http://code.google.com/p/v8/issues/detail?id=345 - -do { - try { - continue; - } catch (e) { - continue; - } finally { - } -} while (false); - - -L: { - try { - break L; - } catch (e) { - break L; - } finally { - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3456.js b/implementation-contributed/v8/mjsunit/regress/regress-3456.js deleted file mode 100644 index ac86339d247..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3456.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Arrow function parsing (commit r22366) changed the flags stored in -// PreParserExpression, and IsValidReferenceExpression() would return -// false for certain valid expressions. This case is the minimum amount -// of code needed to validate that IsValidReferenceExpression() works -// properly. If it does not, a ReferenceError is thrown during parsing. - -function f() { ++(this.foo) } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3462.js b/implementation-contributed/v8/mjsunit/regress/regress-3462.js deleted file mode 100644 index 5a3355920b5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3462.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function TestFunctionPrototypeSetter() { - var f = function() {}; - var o = {__proto__: f}; - o.prototype = 42; - assertEquals(42, o.prototype); - assertTrue(o.hasOwnProperty('prototype')); -} -TestFunctionPrototypeSetter(); - - -function TestFunctionPrototypeSetterOnValue() { - var f = function() {}; - var fp = f.prototype; - Number.prototype.__proto__ = f; - var n = 42; - var o = {}; - n.prototype = o; - assertEquals(fp, n.prototype); - assertEquals(fp, f.prototype); - assertFalse(Number.prototype.hasOwnProperty('prototype')); -} -TestFunctionPrototypeSetterOnValue(); - - -function TestArrayLengthSetter() { - var a = [1]; - var o = {__proto__: a}; - o.length = 2; - assertEquals(2, o.length); - assertEquals(1, a.length); - assertTrue(o.hasOwnProperty('length')); -} -TestArrayLengthSetter(); - - -function TestArrayLengthSetterOnValue() { - Number.prototype.__proto__ = [1]; - var n = 42; - n.length = 2; - assertEquals(1, n.length); - assertFalse(Number.prototype.hasOwnProperty('length')); -} -TestArrayLengthSetterOnValue(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-346343.js b/implementation-contributed/v8/mjsunit/regress/regress-346343.js deleted file mode 100644 index e4c10663138..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-346343.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(o) { - for (var i = 1; i < 2; ++i) { - var y = o.y; - } -} -f({y:1.1}); -f({y:1.1}); - -function g(x) { f({z:x}); } -g(1); -g(2); -%OptimizeFunctionOnNextCall(g); -g(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-346587.js b/implementation-contributed/v8/mjsunit/regress/regress-346587.js deleted file mode 100644 index e907002f38f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-346587.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(obj) { - assertTrue(obj.x === 'baz'); -} - -function foo() { - bar({ x : 'baz' }); -} - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-347262.js b/implementation-contributed/v8/mjsunit/regress/regress-347262.js deleted file mode 100644 index 76bc34a2cdc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-347262.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -(function ArgumentsObjectWithOtherArgumentsInFrame() { - function g() { - return g.arguments; - } - - function f(x) { - g(); - return arguments[0]; - } - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); - - -(function ArgumentsObjectWithOtherArgumentsDeopt() { - function g(y) { - y.o2 = 2; - return g.arguments; - } - - function f(x) { - var o1 = { o2 : 1 }; - var a = g(o1); - o1.o2 = 3; - return arguments[0] + a[0].o2; - } - f(0); - f(0); - %OptimizeFunctionOnNextCall(f); - assertEquals(3, f(0)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-347530.js b/implementation-contributed/v8/mjsunit/regress/regress-347530.js deleted file mode 100644 index 330fda38c01..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-347530.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc -a = []; -a[1000] = .1; -a.length = 0; -gc(); -gc(); -a[1000] = .1; -assertEquals(.1, a[1000]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-347542.js b/implementation-contributed/v8/mjsunit/regress/regress-347542.js deleted file mode 100644 index 901d798fb7f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-347542.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() {} -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); -%NeverOptimizeFunction(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-347543.js b/implementation-contributed/v8/mjsunit/regress/regress-347543.js deleted file mode 100644 index ddea23a97f0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-347543.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --debug-code - -function f(a) { - a[5000000] = 256; - assertEquals(256, a[5000000]); -} - -var v1 = new Array(5000001); -var v2 = new Array(10); -f(v1); -f(v2); -f(v2); -%OptimizeFunctionOnNextCall(f); -f(v2); -f(v1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3476.js b/implementation-contributed/v8/mjsunit/regress/regress-3476.js deleted file mode 100644 index f4333dbbfc0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3476.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function MyWrapper(v) { - return { valueOf: function() { return v } }; -} - -function f() { - assertEquals("truex", true + "x"); - assertEquals("truey", true + new String("y")); - assertEquals("truez", true + new MyWrapper("z")); - - assertEquals("xtrue", "x" + true); - assertEquals("ytrue", new String("y") + true); - assertEquals("ztrue", new MyWrapper("z") + true); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-347904.js b/implementation-contributed/v8/mjsunit/regress/regress-347904.js deleted file mode 100644 index 1a27b054a4b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-347904.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stress-runs=2 - -var v = /abc/; -function f() { - v = 1578221999; -}; -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-347909.js b/implementation-contributed/v8/mjsunit/regress/regress-347909.js deleted file mode 100644 index 90a8e6a759e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-347909.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = {y:1.5}; -a.y = 0; -var b = a.y; -a.y = {}; -var d = 1; -function f() { - d = 0; - return {y: b}; -} -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-347912.js b/implementation-contributed/v8/mjsunit/regress/regress-347912.js deleted file mode 100644 index b609e36c3d4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-347912.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var __v_4 = {}; -__v_2 = {}; -__v_2[1024] = 0; -%DebugPrint(__v_4); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-347914.js b/implementation-contributed/v8/mjsunit/regress/regress-347914.js deleted file mode 100644 index 170a4f8b522..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-347914.js +++ /dev/null @@ -1,91 +0,0 @@ - // Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --debug-code --gc-interval=201 --verify-heap -// Flags: --max-inlined-bytecode-size=999999 --max-inlined-bytecode-size-cumulative=999999 -// Flags: --opt --no-always-opt - -// Begin stripped down and modified version of mjsunit.js for easy minimization in CF. -function MjsUnitAssertionError(message) {} -MjsUnitAssertionError.prototype.toString = function () { return this.message; }; -var assertSame; -var assertEquals; -var assertEqualsDelta; -var assertArrayEquals; -var assertPropertiesEqual; -var assertToStringEquals; -var assertTrue; -var assertFalse; -var triggerAssertFalse; -var assertNull; -var assertNotNull; -var assertThrows; -var assertDoesNotThrow; -var assertInstanceof; -var assertUnreachable; -var assertOptimized; -var assertUnoptimized; -function classOf(object) { var string = Object.prototype.toString.call(object); return string.substring(8, string.length - 1); } -function PrettyPrint(value) { return ""; } -function PrettyPrintArrayElement(value, index, array) { return ""; } -function fail(expectedText, found, name_opt) { } -function deepObjectEquals(a, b) { var aProps = Object.keys(a); aProps.sort(); var bProps = Object.keys(b); bProps.sort(); if (!deepEquals(aProps, bProps)) { return false; } for (var i = 0; i < aProps.length; i++) { if (!deepEquals(a[aProps[i]], b[aProps[i]])) { return false; } } return true; } -function deepEquals(a, b) { if (a === b) { if (a === 0) return (1 / a) === (1 / b); return true; } if (typeof a != typeof b) return false; if (typeof a == "number") return isNaN(a) && isNaN(b); if (typeof a !== "object" && typeof a !== "function") return false; var objectClass = classOf(a); if (objectClass !== classOf(b)) return false; if (objectClass === "RegExp") { return (a.toString() === b.toString()); } if (objectClass === "Function") return false; if (objectClass === "Array") { var elementCount = 0; if (a.length != b.length) { return false; } for (var i = 0; i < a.length; i++) { if (!deepEquals(a[i], b[i])) return false; } return true; } if (objectClass == "String" || objectClass == "Number" || objectClass == "Boolean" || objectClass == "Date") { if (a.valueOf() !== b.valueOf()) return false; } return deepObjectEquals(a, b); } -assertSame = function assertSame(expected, found, name_opt) { if (found === expected) { if (expected !== 0 || (1 / expected) == (1 / found)) return; } else if ((expected !== expected) && (found !== found)) { return; } fail(PrettyPrint(expected), found, name_opt); }; assertEquals = function assertEquals(expected, found, name_opt) { if (!deepEquals(found, expected)) { fail(PrettyPrint(expected), found, name_opt); } }; -assertEqualsDelta = function assertEqualsDelta(expected, found, delta, name_opt) { assertTrue(Math.abs(expected - found) <= delta, name_opt); }; assertArrayEquals = function assertArrayEquals(expected, found, name_opt) { var start = ""; if (name_opt) { start = name_opt + " - "; } assertEquals(expected.length, found.length, start + "array length"); if (expected.length == found.length) { for (var i = 0; i < expected.length; ++i) { assertEquals(expected[i], found[i], start + "array element at index " + i); } } }; -assertPropertiesEqual = function assertPropertiesEqual(expected, found, name_opt) { if (!deepObjectEquals(expected, found)) { fail(expected, found, name_opt); } }; -assertToStringEquals = function assertToStringEquals(expected, found, name_opt) { if (expected != String(found)) { fail(expected, found, name_opt); } }; -assertTrue = function assertTrue(value, name_opt) { assertEquals(true, value, name_opt); }; -assertFalse = function assertFalse(value, name_opt) { assertEquals(false, value, name_opt); }; - -assertNull = function assertNull(value, name_opt) { if (value !== null) { fail("null", value, name_opt); } }; -assertNotNull = function assertNotNull(value, name_opt) { if (value === null) { fail("not null", value, name_opt); } }; -as1sertThrows = function assertThrows(code, type_opt, cause_opt) { var threwException = true; try { if (typeof code == 'function') { code(); } else { eval(code); } threwException = false; } catch (e) { if (typeof type_opt == 'function') { assertInstanceof(e, type_opt); } if (arguments.length >= 3) { assertEquals(e.type, cause_opt); } return; } }; -assertInstanceof = function assertInstanceof(obj, type) { if (!(obj instanceof type)) { var actualTypeName = null; var actualConstructor = Object.getPrototypeOf(obj).constructor; if (typeof actualConstructor == "function") { actualTypeName = actualConstructor.name || String(actualConstructor); } fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" + (type.name || type) + ">" + (actualTypeName ? " but of < " + actualTypeName + ">" : "")); } }; -assertDoesNotThrow = function assertDoesNotThrow(code, name_opt) { try { if (typeof code == 'function') { code(); } else { eval(code); } } catch (e) { fail("threw an exception: ", e.message || e, name_opt); } }; -assertUnreachable = function assertUnreachable(name_opt) { var message = "Fail" + "ure: unreachable"; if (name_opt) { message += " - " + name_opt; } }; -var OptimizationStatus; -try { OptimizationStatus = new Function("fun", "sync", "return %GetOptimizationStatus(fun, sync);"); } catch (e) { OptimizationStatus = function() { } } -assertUnoptimized = function assertUnoptimized(fun, sync_opt, name_opt) { if (sync_opt === undefined) sync_opt = ""; assertTrue(OptimizationStatus(fun, sync_opt) != 1, name_opt); } -assertOptimized = function assertOptimized(fun, sync_opt, name_opt) { if (sync_opt === undefined) sync_opt = ""; assertTrue(OptimizationStatus(fun, sync_opt) != 2, name_opt); } -triggerAssertFalse = function() { } -// End stripped down and modified version of mjsunit.js. - -var __v_1 = {}; -var __v_2 = {}; -var __v_3 = {}; -var __v_4 = {}; -var __v_5 = {}; -var __v_6 = {}; -var __v_7 = {}; -var __v_8 = {}; -var __v_9 = {}; -var __v_10 = {}; -var __v_0 = 'fisk'; -assertEquals('fisk', __v_0); -var __v_0; -assertEquals('fisk', __v_0); -var __v_6 = 'hest'; -assertEquals('hest', __v_0); -this.bar = 'fisk'; -assertEquals('fisk', __v_1); -__v_1; -assertEquals('fisk', __v_1); -__v_1 = 'hest'; -assertEquals('hest', __v_1); - -function __f_0(o) { - o.g(); - if (!o.g()) { - assertTrue(false); - } -} -__v_4 = {}; -__v_4.size = function() { return 42; } -__v_4.g = function() { return this.size(); }; -__f_0({g: __v_4.g, size:__v_4.size}); -for (var __v_0 = 0; __v_0 < 5; __v_0++) __f_0(__v_4); -%OptimizeFunctionOnNextCall(__f_0); -__f_0(__v_4); -__f_0({g: __v_4.g, size:__v_4.size}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-348280.js b/implementation-contributed/v8/mjsunit/regress/regress-348280.js deleted file mode 100644 index 319c270bef8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-348280.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function baz(f) { f(); } -function goo() {} -baz(goo); -baz(goo); - -function bar(p) { if (p == 0) baz(1); } -bar(1); -bar(1); -%OptimizeFunctionOnNextCall(bar); -bar(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3483.js b/implementation-contributed/v8/mjsunit/regress/regress-3483.js deleted file mode 100644 index dec95c48ffe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3483.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertFalse(Object.prototype.isPrototypeOf.call()); -assertFalse(Object.prototype.isPrototypeOf.call(null, 1)); -assertFalse(Object.prototype.isPrototypeOf.call(undefined, 1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-348512.js b/implementation-contributed/v8/mjsunit/regress/regress-348512.js deleted file mode 100644 index 7d896664c24..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-348512.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function h(y) { assertEquals(42, y.u); } -function g() { h.apply(0, arguments); } -function f(x) { g({ u : x }); } - -f(42); -f(42); -%OptimizeFunctionOnNextCall(f); -f(42); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-349.js b/implementation-contributed/v8/mjsunit/regress/regress-349.js deleted file mode 100644 index 1a60e3e127f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-349.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should not crash. -// See http://code.google.com/p/v8/issues/detail?id=349 - -var str = "bbaabbbbbbbbabbaaaabbaaabbbaaaabbaaabbabaaabb"; -assertEquals(str, str.replace(/aabab/g, "foo")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-349885.js b/implementation-contributed/v8/mjsunit/regress/regress-349885.js deleted file mode 100644 index dd3e7952604..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-349885.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// The bug 349885 - -function foo(a) { - a[292755462] = new Object(); -} -foo(new Array(5)); -foo(new Array(5)); -%OptimizeFunctionOnNextCall(foo); -foo(new Array(10)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-35.js b/implementation-contributed/v8/mjsunit/regress/regress-35.js deleted file mode 100644 index 2fcdbe75d2b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-35.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var result; -eval("result = 42; while(true)break"); -assertEquals(42, result); - -eval("result = 87; while(false)continue"); -assertEquals(87, result); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-350863.js b/implementation-contributed/v8/mjsunit/regress/regress-350863.js deleted file mode 100644 index 616792b82c0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-350863.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Flags: --allow-natives-syntax - -var __v_7 = { }; -function __f_8(base, condition) { - __v_7[base + 3] = 0; - __v_7[base + 4] = 0; - if (condition) { - __v_7[base + 0] = 0; - __v_7[base + 5] = 0; - } else { - __v_7[base + 0] = 0; - __v_7[base + 18] = 0; - } -} -__f_8(1, true); -__f_8(1, false); -%OptimizeFunctionOnNextCall(__f_8); -__f_8(5, false); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-350865.js b/implementation-contributed/v8/mjsunit/regress/regress-350865.js deleted file mode 100644 index 74234db8842..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-350865.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stress-compaction --stack-size=150 - -/\2/.test("1"); - -function rec() { - try { - rec(); - } catch(e) { - /\2/.test("1"); - } -} - -rec(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-350884.js b/implementation-contributed/v8/mjsunit/regress/regress-350884.js deleted file mode 100644 index 86568534ee7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-350884.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var obj = new Array(1); -obj[0] = 0; -obj[1] = 0; -function foo(flag_index) { - obj[flag_index]++; -} - -// Force dictionary properties on obj. -obj[-8] = 3; -foo(1); -foo(2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-350887.js b/implementation-contributed/v8/mjsunit/regress/regress-350887.js deleted file mode 100644 index 638aa30780d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-350887.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var arr = []; -assertSame(0, arr.length); -assertSame(undefined, arr[0]); -Object.defineProperty(arr, '2501866687', { value: 4, configurable: false }); -// 2501866688 is out of smi range. -assertSame(2501866688, arr.length); -assertSame(undefined, arr[0]); -arr.length = 0; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-351.js b/implementation-contributed/v8/mjsunit/regress/regress-351.js deleted file mode 100644 index 44470db32df..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-351.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should use index of 0 if provided index is negative. -// See http://code.google.com/p/v8/issues/detail?id=351 - -assertEquals(0, "test".lastIndexOf("test", -1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-351261.js b/implementation-contributed/v8/mjsunit/regress/regress-351261.js deleted file mode 100644 index 5a634fad120..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-351261.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function store(a) { - a[5000000] = 1; -} - -function foo() { - var __v_8 = new Object; - var __v_7 = new Array(4999990); - store(__v_8); - store(__v_7); -} -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-351263.js b/implementation-contributed/v8/mjsunit/regress/regress-351263.js deleted file mode 100644 index 28edbcdb624..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-351263.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var __v_12 = {}; -function __f_30(x, sa) { - return (x >>> sa) | (x << (__v_12 - sa)); -} -__f_30(1.4, 1); -__f_30(1.4, 1); -%OptimizeFunctionOnNextCall(__f_30); -__f_30(1.4, 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-351319.js b/implementation-contributed/v8/mjsunit/regress/regress-351319.js deleted file mode 100644 index a2afbb6a98a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-351319.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function __f_0(a, base) { - a[base] = 1; - a[base] = -1749557862; -} -var __v_0 = new Array(1024); -var __v_1 = new Array(128); -__f_0(__v_0, 1); -__f_0(__v_1, -2); -%OptimizeFunctionOnNextCall(__f_0); -__f_0(__v_0, -2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-351624.js b/implementation-contributed/v8/mjsunit/regress/regress-351624.js deleted file mode 100644 index fc3715b65a3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-351624.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var big = 1e10; -var backup = new Float64Array(1); - -function mult0(val){ - var prod = val * big; - backup[0] = prod; - var rounded = Math.round(prod); - assertEquals(prod, backup[0]); - return rounded; -} - -var count = 5; -for (var i = 0; i < count; i++) { - if (i == count - 1) %OptimizeFunctionOnNextCall(mult0); - var result = mult0(-1); - assertEquals(result, -big); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-352059.js b/implementation-contributed/v8/mjsunit/regress/regress-352059.js deleted file mode 100644 index cd1a4c28f77..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-352059.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var foo = false; - -function bar() { - foo = 2; - return 4 % foo; -} - -bar(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-352982.js b/implementation-contributed/v8/mjsunit/regress/regress-352982.js deleted file mode 100644 index 5d3ce1c67d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-352982.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -function __f_4(i1) { - return __v_3[i1] * __v_3[0]; -} -function __f_3(i1) { - __f_4(i1); - __f_4(i1 + 16); - __f_4(i1 + 32); - %OptimizeFunctionOnNextCall(__f_4); - var x = __f_4(i1 + 993); - return x; -} -function __f_5() { - __v_3[0] = +__v_3[0]; - gc(); - __f_3(0) | 0; - __v_3 = /\u23a1|x/; - return 0; -} -var __v_3 = new Float32Array(1000); -__f_5(); -__f_5(); -__f_5(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-353004.js b/implementation-contributed/v8/mjsunit/regress/regress-353004.js deleted file mode 100644 index f5430c6df4b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-353004.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var buffer1 = new ArrayBuffer(100 * 1024); - -assertThrows(function() { - var array1 = new Uint8Array(buffer1, {valueOf : function() { - %ArrayBufferDetach(buffer1); - return 0; - }}); -}, TypeError); - -var buffer2 = new ArrayBuffer(100 * 1024); - -assertThrows(function() { - var array2 = new Uint8Array(buffer2, 0, {valueOf : function() { - %ArrayBufferDetach(buffer2); - return 100 * 1024; - }}); -}, TypeError); - -let convertedOffset = false; -let convertedLength = false; -assertThrows(() => - new Uint8Array(buffer1, {valueOf : function() { - convertedOffset = true; - return 0; - }}, {valueOf : function() { - convertedLength = true; - %ArrayBufferDetach(buffer1); - return 0; - }}), TypeError); -assertTrue(convertedOffset); -assertTrue(convertedLength); - -var buffer3 = new ArrayBuffer(100 * 1024 * 1024); -var dataView1 = new DataView(buffer3, {valueOf : function() { - %ArrayBufferDetach(buffer3); - return 0; -}}); - -assertEquals(0, dataView1.byteLength); - -var buffer4 = new ArrayBuffer(100 * 1024); -assertThrows(function() { - var dataView2 = new DataView(buffer4, 0, {valueOf : function() { - %ArrayBufferDetach(buffer4); - return 100 * 1024 * 1024; - }}); -}, RangeError); - - -var buffer5 = new ArrayBuffer(100 * 1024); -assertThrows(function() { - buffer5.slice({valueOf : function() { - %ArrayBufferDetach(buffer5); - return 0; - }}, 100 * 1024 * 1024); -}, TypeError); - - -var buffer7 = new ArrayBuffer(100 * 1024 * 1024); -assertThrows(function() { - buffer7.slice(0, {valueOf : function() { - %ArrayBufferDetach(buffer7); - return 100 * 1024 * 1024; - }}); -}, TypeError); - -var buffer9 = new ArrayBuffer(1024); -var array9 = new Uint8Array(buffer9); -assertThrows(() => - array9.subarray({valueOf : function() { - %ArrayBufferDetach(buffer9); - return 0; - }}, 1024), TypeError); -assertEquals(0, array9.length); - -var buffer11 = new ArrayBuffer(1024); -var array11 = new Uint8Array(buffer11); -assertThrows(() => - array11.subarray(0, {valueOf : function() { - %ArrayBufferDetach(buffer11); - return 1024; - }}), TypeError); -assertEquals(0, array11.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-353058.js b/implementation-contributed/v8/mjsunit/regress/regress-353058.js deleted file mode 100644 index 0fef2462471..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-353058.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=150 -// Requries ASAN. - -function runNearStackLimit(f) { function t() { try { t(); } catch(e) { f(); } }; try { t(); } catch(e) {} } -function __f_0( - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x -) { } -runNearStackLimit(__f_0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-353551.js b/implementation-contributed/v8/mjsunit/regress/regress-353551.js deleted file mode 100644 index 973067b250e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-353551.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var depth = 0; -function __f_3(x) { - var __v_1 = arguments; - __v_1[1000] = 123; - depth++; - if (depth > 2200) return; - function __f_4() { - ++__v_1[0]; - __f_3(0.5); - }; - __f_4(); -} -__f_3(0.5); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-354357.js b/implementation-contributed/v8/mjsunit/regress/regress-354357.js deleted file mode 100644 index 84b7ebd620b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-354357.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --always-opt - -var v = {}; -function inlined() { - return !(v.bar++); -} -function outer() { - inlined(); -}; - -outer(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-354433.js b/implementation-contributed/v8/mjsunit/regress/regress-354433.js deleted file mode 100644 index 80ea2862302..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-354433.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var __v_0 = {}; -var __v_5 = {}; -function __f_2() { - this.__defineGetter__('str', function() { return __f_2(this); }); - this.str = "1"; - this.toString = function() { - return this.str; - }; -}; - -__v_5 = new __f_2(); -__v_0 = new __f_2(); - -function __f_5(fun,a,b) { - __v_5.str = a; - __v_0.str = b; - fun(__v_5, __v_0); -} - -function __f_8(a,b) { return a%b }; - -__f_5(__f_8, 1 << 30, 1); -__f_5(__f_8, 1, 1 << 30); -%OptimizeFunctionOnNextCall(__f_8); -__f_5(__f_8, 1, 1 << 30); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-355485.js b/implementation-contributed/v8/mjsunit/regress/regress-355485.js deleted file mode 100644 index 3c66884c000..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-355485.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals("\u039c", "\u00b5".toUpperCase()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-355486.js b/implementation-contributed/v8/mjsunit/regress/regress-355486.js deleted file mode 100644 index 55362a13416..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-355486.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { var v = arguments[0]; } -function g() { f(); } - -g(); -g(); -%OptimizeFunctionOnNextCall(g); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-355523.js b/implementation-contributed/v8/mjsunit/regress/regress-355523.js deleted file mode 100644 index d61fe844ed2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-355523.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// This test requires ASAN. - -function __f_4(a, b) { } -function __f_8(n) { return __f_4(arguments[13], arguments[-10]); } -function __f_6(a) { return __f_8(0, a); } -__f_8(0); -__f_8(0); -%OptimizeFunctionOnNextCall(__f_8); -__f_8(0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-356053.js b/implementation-contributed/v8/mjsunit/regress/regress-356053.js deleted file mode 100644 index 2695c48fd1b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-356053.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --noconcurrent-recompilation --expose-gc --allow-natives-syntax -// Flags: --concurrent-recompilation --block-concurrent-recompilation - -gc(); -try { %UnblockConcurrentRecompilation(); } catch (e) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3564.js b/implementation-contributed/v8/mjsunit/regress/regress-3564.js deleted file mode 100644 index a0b9eb29945..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3564.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function MyWrapper(v) { - return { valueOf: function() { return v } }; -} - -function f() { - assertTrue("a" < "x"); - assertTrue("a" < new String("y")); - assertTrue("a" < new MyWrapper("z")); - - assertFalse("a" > "x"); - assertFalse("a" > new String("y")); - assertFalse("a" > new MyWrapper("z")); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-357054.js b/implementation-contributed/v8/mjsunit/regress/regress-357054.js deleted file mode 100644 index 92a066edc11..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-357054.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[].__defineSetter__(0, function() { }); -function f(a,i,v) { a[i] = v; } -a = [0,0,0]; -f(a,0,5); -a = new Float32Array(5); -f(a,2,5.5); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-357103.js b/implementation-contributed/v8/mjsunit/regress/regress-357103.js deleted file mode 100644 index c56c8893b38..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-357103.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -%SetAllocationTimeout(1, 1); - -var key = "Huckleberry Finn" + "Tom Sawyer"; -var o = {}; -function f() { o[key] = "Adventures"; } - -f(); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-357105.js b/implementation-contributed/v8/mjsunit/regress/regress-357105.js deleted file mode 100644 index d3eefd0f1b6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-357105.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -var global = { }; - -function do_nothing() { } - -function f(opt_gc) { - var x = new Array(3); - x[0] = 10; - opt_gc(); - global[1] = 15.5; - return x; -} - -gc(); -global = f(gc); -global = f(do_nothing); -%OptimizeFunctionOnNextCall(f); -global = f(do_nothing); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-357108.js b/implementation-contributed/v8/mjsunit/regress/regress-357108.js deleted file mode 100644 index b20975b02b5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-357108.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --typed-array-max-size-in-heap=64 - -function TestArray(constructor) { - function Check(a) { - a[0] = ""; - assertEquals(0, a[0]); - a[0] = {}; - assertEquals(0, a[0]); - a[0] = { valueOf : function() { return 27; } }; - assertEquals(27, a[0]); - } - Check(new constructor(1)); - Check(new constructor(100)); -} - -TestArray(Uint8Array); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-358057.js b/implementation-contributed/v8/mjsunit/regress/regress-358057.js deleted file mode 100644 index c5fe73a032c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-358057.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -__v_0 = new Uint8ClampedArray(10); -for (var i = 0; i < 10; i++) { - __v_0[i] = 0xAA; -} -function __f_12(__v_6) { - if (__v_6 < 0) { - __v_1 = __v_0[__v_6 + 10]; - return __v_1; - } -} - -assertEquals(0xAA, __f_12(-1)); -%OptimizeFunctionOnNextCall(__f_12); -assertEquals(0xAA, __f_12(-1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-358059.js b/implementation-contributed/v8/mjsunit/regress/regress-358059.js deleted file mode 100644 index 30738f9ae89..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-358059.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a, b) { return b + (a.x++); } -var o = {}; -o.__defineGetter__('x', function() { return 1; }); -assertEquals(4, f(o, 3)); -assertEquals(4, f(o, 3)); -%OptimizeFunctionOnNextCall(f); -assertEquals(4, f(o, 3)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-358088.js b/implementation-contributed/v8/mjsunit/regress/regress-358088.js deleted file mode 100644 index 222bba60d1c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-358088.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a) { - a[a.length] = 1; -} - -function g(a, i, v) { - a[i] = v; -} - -f([]); // f KeyedStoreIC goes to 1.GROW -o = {}; -g(o); // We've added property "undefined" to o - -o = {}; // A transition on property "undefined" exists from {} -f(o); // Store should go generic. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-358090.js b/implementation-contributed/v8/mjsunit/regress/regress-358090.js deleted file mode 100644 index d9c07e857dd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-358090.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var x = Array(100000); -y = Array.apply(Array, x); -y.unshift(4); -y.shift(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-359441.js b/implementation-contributed/v8/mjsunit/regress/regress-359441.js deleted file mode 100644 index d96468c3359..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-359441.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g() { - this.x = {}; -} - -function f() { - new g(); -} - -function deopt(x) { - %DeoptimizeFunction(f); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -Object.prototype.__defineSetter__('x', deopt); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-359491.js b/implementation-contributed/v8/mjsunit/regress/regress-359491.js deleted file mode 100644 index d72875a2968..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-359491.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function () { - function f(a, b, mode) { - if (mode) { - return a === b; - } else { - return a === b; - } - } - - // Gather type feedback for both branches. - f("a", "b", 1); - f("c", "d", 1); - f("a", "b", 0); - f("c", "d", 0); - - function g(mode) { - var x = 1e10 | 0; - f(x, x, mode); - } - - // Gather type feedback for g, but only on one branch for f. - g(1); - g(1); - %OptimizeFunctionOnNextCall(g); - // Optimize g, which inlines f. Both branches in f will see the constant. - g(0); -})(); - -(function () { - function f(a, b, mode) { - if (mode) { - return a === b; - } else { - return a === b; - } - } - - // Gather type feedback for both branches. - f({ a : 1}, {b : 1}, 1); - f({ c : 1}, {d : 1}, 1); - f({ a : 1}, {c : 1}, 0); - f({ b : 1}, {d : 1}, 0); - - function g(mode) { - var x = 1e10 | 0; - f(x, x, mode); - } - - // Gather type feedback for g, but only on one branch for f. - g(1); - g(1); - %OptimizeFunctionOnNextCall(g); - // Optimize g, which inlines f. Both branches in f will see the constant. - g(0); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-359525.js b/implementation-contributed/v8/mjsunit/regress/regress-359525.js deleted file mode 100644 index 6a82a38fd3d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-359525.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test BinaryOpICStub substract -var a; -for (var i = 0; i < 2; i++) { - var x = 42 + a - {}; - print(x); - a = ""; -} - -// Test BinaryOpICStub add -var b = 1.4; -var val = 0; -var o = {valueOf:function() { val++; return 10; }}; -for (var i = 0; i < 2; i++) { - var x = (b + i) + o; - b = ""; -} -assertEquals(val, 2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-360733.js b/implementation-contributed/v8/mjsunit/regress/regress-360733.js deleted file mode 100644 index d9abece30d9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-360733.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=150 - -function f(a) { - f(a + 1); -} - -Error.__defineGetter__('stackTraceLimit', function() { }); -try { - f(0); -} catch (e) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-361025.js b/implementation-contributed/v8/mjsunit/regress/regress-361025.js deleted file mode 100644 index 74f50d86e8d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-361025.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var x = new Object(); -x.__defineGetter__('a', function() { return 7 }); -JSON.parse('{"a":2600753951}'); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3612.js b/implementation-contributed/v8/mjsunit/regress/regress-3612.js deleted file mode 100644 index 8c30ebf8ab5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3612.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = [1]; -var getterValue = 2; -var endIndex = 0xffff; -Object.defineProperty(a, endIndex, { - get: function() { - this[1] = 3; - return getterValue; - }, - set: function(val) { - getterValue = val; - }, - configurable: true, - enumerable: true -}); -a.reverse(); -assertFalse(a.hasOwnProperty(1)); -assertEquals(3, a[endIndex-1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-361608.js b/implementation-contributed/v8/mjsunit/regress/regress-361608.js deleted file mode 100644 index b3cc90cfd4b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-361608.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() {}; -int_array = [1]; - -function foo() { - var x; - for (var i = -1; i < 0; i++) { - x = int_array[i + 1]; - f(function() { x = i; }); - } -} - -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3621.js b/implementation-contributed/v8/mjsunit/regress/regress-3621.js deleted file mode 100644 index 16ddde16961..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3621.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = []; -var endIndex = 0xffff; -a[endIndex] = 3; -Object.defineProperty(a, 0, { get: function() { this[1] = 2; return 1; } }); -assertEquals('123', a.join('')); -delete a[1]; // reset the array -assertEquals('1,2,', a.join().slice(0, 4)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-362128.js b/implementation-contributed/v8/mjsunit/regress/regress-362128.js deleted file mode 100644 index 18ac5db9076..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-362128.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// Flags: --allow-natives-syntax - -function genM() { - "use strict"; - return function () { - return this.field; - }; -} - -function genR() { - var x = { - field: 10 - } - return x; -} - -method = {}; -receiver = {}; - -method = genM("A"); -receiver = genR("A"); - -var foo = (function () { - return function suspect (name) { - "use strict"; - return method.apply(receiver, arguments); - } -})(); - -foo("a", "b", "c"); -foo("a", "b", "c"); -foo("a", "b", "c"); -%OptimizeFunctionOnNextCall(foo); -foo("a", "b", "c"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-362870.js b/implementation-contributed/v8/mjsunit/regress/regress-362870.js deleted file mode 100644 index c8d3fe7e4b7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-362870.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Adding a property via Object.defineProperty should not be taken as hint that -// we construct a dictionary, quite the opposite. -var obj = {}; - -for (var i = 0; i < 100; i++) { - Object.defineProperty(obj, "x" + i, { value: 31415 }); - Object.defineProperty(obj, "y" + i, { - get: function() { return 42; }, - set: function(value) { } - }); - assertTrue(%HasFastProperties(obj)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-363956.js b/implementation-contributed/v8/mjsunit/regress/regress-363956.js deleted file mode 100644 index 76d6728c02e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-363956.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Fuu() { this.x = this.x.x; } -Fuu.prototype.x = {x: 1} -new Fuu(); -new Fuu(); -%OptimizeFunctionOnNextCall(Fuu); -new Fuu(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3641.js b/implementation-contributed/v8/mjsunit/regress/regress-3641.js deleted file mode 100644 index 9aff8c8f7de..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3641.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// If a Promise's then method is overridden, that should be respected -// even if the promise is already resolved. x's resolution function is -// only called by Promise.resolve(); there shouldn't be a resolution -// check before when calling x.then. - - -// Async assert framework copied from mjsunit/es6/promises.js - -var asyncAssertsExpected = 0; - -function assertAsyncRan() { ++asyncAssertsExpected } - -function assertLater(f, name) { - assertFalse(f()); // should not be true synchronously - ++asyncAssertsExpected; - var iterations = 0; - function runAssertion() { - if (f()) { - print(name, "succeeded"); - --asyncAssertsExpected; - } else if (iterations++ < 10) { - %EnqueueMicrotask(runAssertion); - } else { - %AbortJS(name + " FAILED!"); - } - } - %EnqueueMicrotask(runAssertion); -} - -function assertAsyncDone(iteration) { - var iteration = iteration || 0; - %EnqueueMicrotask(function() { - if (asyncAssertsExpected === 0) - assertAsync(true, "all") - else if (iteration > 10) // Shouldn't take more. - assertAsync(false, "all... " + asyncAssertsExpected) - else - assertAsyncDone(iteration + 1) - }); -} - -// End async assert framework - -var y; -var x = Promise.resolve(); -x.then = () => { y = true; } -Promise.resolve().then(() => x); -assertLater(() => y === true, "y === true"); - -assertAsyncDone(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3643.js b/implementation-contributed/v8/mjsunit/regress/regress-3643.js deleted file mode 100644 index bbc94fd73b9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3643.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function newArrayWithGetter() { - var arr = [1, 2, 3]; - Object.defineProperty(arr, '1', { - get: function() { delete this[1]; return undefined; }, - configurable: true - }); - return arr; -} - -var a = newArrayWithGetter(); -var s = a.slice(1); -assertTrue('0' in s); - -// Sparse case should hit the same code as above due to presence of the getter. -a = newArrayWithGetter(); -a[0xffff] = 4; -s = a.slice(1); -assertTrue('0' in s); - -a = newArrayWithGetter(); -a.shift(); -assertTrue('0' in a); - -a = newArrayWithGetter(); -a.unshift(0); -assertTrue('2' in a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3650-1.js b/implementation-contributed/v8/mjsunit/regress/regress-3650-1.js deleted file mode 100644 index f5aad4f259f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3650-1.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --deopt-every-n-times=55 - -function f(t) { - var result = []; - for (var i in t) { - for (var j in t) { - result.push(i + j + t[i] + t[j]); - continue; - } - } - return result.join(''); -} - -var t = {a: "1", b: "2"}; -assertEquals("aa11ab12ba21bb22", f(t)); -%OptimizeFunctionOnNextCall(f); -assertEquals("aa11ab12ba21bb22", f(t)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3650-2.js b/implementation-contributed/v8/mjsunit/regress/regress-3650-2.js deleted file mode 100644 index aaa6d55b68c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3650-2.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = {} -var b = {} -a.x = 1; -a.y = 1; -b.x = 1; - -function foo(c) { - var s = 0; - for (var p in c) { s++; } - return s; -} - -assertEquals(2, foo(a)); -assertEquals(1, foo(b)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(2, foo(a)); -assertEquals(1, foo(b)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3650-3.js b/implementation-contributed/v8/mjsunit/regress/regress-3650-3.js deleted file mode 100644 index 6195b124414..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3650-3.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo(a) { - for (var d in a) { - delete a[1]; - } -} - -foo([1,2,3]); -foo([2,3,4]); -%OptimizeFunctionOnNextCall(foo); -foo([1,2,3]); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-365172-1.js b/implementation-contributed/v8/mjsunit/regress/regress-365172-1.js deleted file mode 100644 index ea68285ea03..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-365172-1.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --track-field-types - -var b1 = {d: 1}; var b2 = {d: 2}; -var f1 = {x: 1}; var f2 = {x: 2}; -f1.b = b1; -f2.x = {}; -b2.d = 4.2; -f2.b = b2; -var x = f1.x; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-365172-2.js b/implementation-contributed/v8/mjsunit/regress/regress-365172-2.js deleted file mode 100644 index 265901c5c0b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-365172-2.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --track-field-types - -var b1 = {d: 1}; var b2 = {d: 2}; -var f1 = {x: 1}; var f2 = {x: 2}; -f1.b = b1; -f2.x = {}; -b2.d = 4.2; -f2.b = b2; -%TryMigrateInstance(f1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-365172-3.js b/implementation-contributed/v8/mjsunit/regress/regress-365172-3.js deleted file mode 100644 index 103d3d03b8a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-365172-3.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --track-field-types - -function f1(a) { return {x:a, v:''}; } -function f2(a) { return {x:{v:a}, v:''}; } -function f3(a) { return {x:[], v:{v:''}}; } -f3([0]); -a = f1(1); -a.__defineGetter__('v', function() { gc(); return f2(this); }); -a.v; -f3(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-368243.js b/implementation-contributed/v8/mjsunit/regress/regress-368243.js deleted file mode 100644 index 6647d122868..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-368243.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a, c){ - for(var f in c) { - if ("object" === typeof c[f]) { - a[f] = c[f]; - foo(a[f], c[f]); - } - } -}; - -c = { - "one" : { x : 1}, - "two" : { x : 2}, - "thr" : { x : 3, z : 4}, -}; - -foo({}, c); -foo({}, c); -%OptimizeFunctionOnNextCall(foo); -foo({}, c); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3687.js b/implementation-contributed/v8/mjsunit/regress/regress-3687.js deleted file mode 100644 index e1df1b4e1d3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3687.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var t1 = { f1: 0 }; -var t2 = { f2: 0 }; - -var z = { - x: { - x: t1, - y: { - x: {}, - z1: { - x: t2, - y: 1 - } - } - }, - z2: 0 -}; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-369450.js b/implementation-contributed/v8/mjsunit/regress/regress-369450.js deleted file mode 100644 index e4523619f08..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-369450.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --enable-slow-asserts - -var v = [1.3]; -v.length = 0; - -var json = JSON.stringify(v); -assertEquals("[]", json); - -Array.prototype[0] = 5.5; -var arr = [].concat(v, [{}], [2.3]); -assertEquals([{}, 2.3], arr); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-370384.js b/implementation-contributed/v8/mjsunit/regress/regress-370384.js deleted file mode 100644 index e07cc06082f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-370384.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --deopt-every-n-times=1 --no-enable-sse4-1 - -function g(f, x, name) { - var v2 = f(x); - for (var i = 0; i < 13000; i++) { - f(i); - } - var v1 = f(x); - assertEquals(v1, v2); -} - -g(Math.sin, 6.283185307179586, "Math.sin"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-370827.js b/implementation-contributed/v8/mjsunit/regress/regress-370827.js deleted file mode 100644 index e6d5185e706..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-370827.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -function g(dummy, x) { - var start = ""; - if (x) { start = x + " - "; } - start = start + "array length"; -}; - -function f() { - gc(); - g([0.1]); -} - -f(); -%OptimizeFunctionOnNextCall(f); -f(); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3709.js b/implementation-contributed/v8/mjsunit/regress/regress-3709.js deleted file mode 100644 index ecb906a9088..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3709.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -function getobj() { - return { bar : function() { return 0}}; -} - -function foo() { - var obj = getobj(); - var length = arguments.length; - if (length == 0) { - obj.bar(); - } else { - obj.bar.apply(obj, arguments); - } -} - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); -assertOptimized(foo); -foo(10); -assertUnoptimized(foo); -%ClearFunctionFeedback(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3718.js b/implementation-contributed/v8/mjsunit/regress/regress-3718.js deleted file mode 100644 index ec180bc3ef1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3718.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -function getTypeName(receiver) { - Error.prepareStackTrace = function(e, stack) { return stack; } - var stack = (function() { return new Error().stack; }).call(receiver); - Error.prepareStackTrace = undefined; - return stack[0].getTypeName(); -} - -assertNull(getTypeName(undefined)); -assertNull(getTypeName(null)); -assertEquals("Number", getTypeName(1)); -assertEquals("String", getTypeName("")); -assertEquals("Boolean", getTypeName(false)); -assertEquals("Object", getTypeName({})); -assertEquals("Array", getTypeName([])); -assertEquals("Proxy", getTypeName(new Proxy({},{}))); -assertEquals("Custom", getTypeName(new (function Custom(){})())); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3756.js b/implementation-contributed/v8/mjsunit/regress/regress-3756.js deleted file mode 100644 index 6b1f029093a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3756.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestIdentityEscapes() { - // \u not followed by 4 hex digits is treated as an identity escape. - var r0 = /\u/; - assertTrue(r0.test("u")); - - r0 = RegExp("\\u"); - assertTrue(r0.test("u")); - - var r1 = /\usecond/; - assertTrue(r1.test("usecond")); - - r1 = RegExp("\\usecond"); - assertTrue(r1.test("usecond")); - - var r2 = /first\u/; - assertTrue(r2.test("firstu")); - // This used to return true (which was a bug). - assertFalse(r2.test("first\\u")); - - r2 = RegExp("first\\u"); - assertTrue(r2.test("firstu")); - // This used to return true (which was a bug). - assertFalse(r2.test("first\\u")); - - var r3 = /first\usecond/; - assertTrue(r3.test("firstusecond")); - assertFalse(r3.test("first\\usecond")); - - r3 = RegExp("first\\usecond"); - assertTrue(r3.test("firstusecond")); - assertFalse(r3.test("first\\usecond")); - - var r4 = /first\u123second/; - assertTrue(r4.test("firstu123second")); - assertFalse(r4.test("first\\u123second")); - - r4 = RegExp("first\\u123second"); - assertTrue(r4.test("firstu123second")); - assertFalse(r4.test("first\\u123second")); - - // \X where X is not a legal escape character is treated as identity escape - // too. - var r5 = /\a/; - assertTrue(r5.test("a")); - - r5 = RegExp("\\a"); - assertTrue(r5.test("a")); - - var r6 = /\asecond/; - assertTrue(r6.test("asecond")); - - r6 = RegExp("\\asecond"); - assertTrue(r6.test("asecond")); - - var r7 = /first\a/; - assertTrue(r7.test("firsta")); - assertFalse(r7.test("first\\a")); - - r7 = RegExp("first\\a"); - assertTrue(r7.test("firsta")); - assertFalse(r7.test("first\\a")); - - var r8 = /first\asecond/; - assertTrue(r8.test("firstasecond")); - assertFalse(r8.test("first\\asecond")); - - r8 = RegExp("first\\asecond"); - assertTrue(r8.test("firstasecond")); - assertFalse(r8.test("first\\asecond")); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-377290.js b/implementation-contributed/v8/mjsunit/regress/regress-377290.js deleted file mode 100644 index 23e31e79d95..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-377290.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -Object.prototype.__defineGetter__('constructor', function() { throw 42; }); -__v_7 = [ - function() { [].push() }, -]; -for (var __v_6 = 0; __v_6 < 5; ++__v_6) { - for (var __v_8 in __v_7) { - print(__v_8, " -> ", __v_7[__v_8]); - gc(); - try { __v_7[__v_8](); } catch (e) {}; - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-379770.js b/implementation-contributed/v8/mjsunit/regress/regress-379770.js deleted file mode 100644 index ab1b339f7d6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-379770.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// Flags: --allow-natives-syntax --nostress-opt -// Flags: --nouse-osr - -function foo(obj) { - var counter = 1; - for (var i = 0; i < obj.length; i++) %OptimizeOsr(); - counter += obj; - return counter; -} - -function bar() { - var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; - for (var i = 0; i < 100; i++ ) { - foo(a); - } -} - -try { - bar(); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-380092.js b/implementation-contributed/v8/mjsunit/regress/regress-380092.js deleted file mode 100644 index fe6b0b7619c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-380092.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function many_hoist(o, index) { - return o[index + 33554427]; -} - -var obj = {}; -many_hoist(obj, 0); -%OptimizeFunctionOnNextCall(many_hoist); -many_hoist(obj, 5); - -function constant_too_large(o, index) { - return o[index + 1033554433]; -} - -constant_too_large(obj, 0); -%OptimizeFunctionOnNextCall(constant_too_large); -constant_too_large(obj, 5); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-381313.js b/implementation-contributed/v8/mjsunit/regress/regress-381313.js deleted file mode 100644 index d2b9d7c11d3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-381313.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var g = 0; - -function f(x, deopt) { - var a0 = x; - var a1 = 2 * x; - var a2 = 3 * x; - var a3 = 4 * x; - var a4 = 5 * x; - var a5 = 6 * x; - var a6 = 7 * x; - var a7 = 8 * x; - var a8 = 9 * x; - var a9 = 10 * x; - var a10 = 11 * x; - var a11 = 12 * x; - var a12 = 13 * x; - var a13 = 14 * x; - var a14 = 15 * x; - var a15 = 16 * x; - var a16 = 17 * x; - var a17 = 18 * x; - var a18 = 19 * x; - var a19 = 20 * x; - - g = 1; - - deopt + 0; - - return a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + - a10 + a11 + a12 + a13 + a14 + a15 + a16 + a17 + a18 + a19; -} - -f(0.5, 0); -f(0.5, 0); -%OptimizeFunctionOnNextCall(f); -print(f(0.5, "")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-385054.js b/implementation-contributed/v8/mjsunit/regress/regress-385054.js deleted file mode 100644 index 115bca0d219..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-385054.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - var a = [1, 2]; - a[x]; - return a[0 - x]; -} - -f(0); -f(0); -%OptimizeFunctionOnNextCall(f); -assertEquals(undefined, f(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-385565.js b/implementation-contributed/v8/mjsunit/regress/regress-385565.js deleted file mode 100644 index 541e461d961..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-385565.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -var calls = 0; - -function callsFReceiver(o) { - return [].f.call(new Number(o.m), 1, 2, 3); -} - -// For the HConstant -Array.prototype.f = function() { - calls++; - return +this; -}; - - -var o1 = {m: 1}; -var o2 = {a: 0, m:1}; - -var r1 = callsFReceiver(o1); -callsFReceiver(o1); -%OptimizeFunctionOnNextCall(callsFReceiver); -var r2 = callsFReceiver(o1); -assertOptimized(callsFReceiver); -callsFReceiver(o2); -assertUnoptimized(callsFReceiver); -var r3 = callsFReceiver(o1); - -assertEquals(1, r1); -assertTrue(r1 === r2); -assertTrue(r2 === r3); - -r1 = callsFReceiver(o1); -callsFReceiver(o1); -%OptimizeFunctionOnNextCall(callsFReceiver); -r2 = callsFReceiver(o1); -callsFReceiver(o2); -r3 = callsFReceiver(o1); - -assertEquals(1, r1); -assertTrue(r1 === r2); -assertTrue(r2 === r3); - -assertEquals(10, calls); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3859.js b/implementation-contributed/v8/mjsunit/regress/regress-3859.js deleted file mode 100644 index 3248ef14ac7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3859.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(1, new Set([NaN, NaN, NaN]).size); -assertEquals(42, new Map([[NaN, 42]]).get(NaN)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-386.js b/implementation-contributed/v8/mjsunit/regress/regress-386.js deleted file mode 100644 index 06e4b8edfe4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-386.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Test for http://code.google.com/p/v8/issues/detail?id=386 -// This test creates enough properties in A so that adding i as -// a constant function, in the first call to the constructor, leaves -// the object's map in the fast case and adds a constant function map -// transition. -// Adding i in the second call to the constructor creates a real property, -// and simultaneously converts the object from fast case to slow case -// and changes i from a map transition to a real property. There was -// a flaw in the code that handled this combination of events. - -function A() { - for (var i = 0; i < 13; i++) { - this['a' + i] = i; - } - this.i = function(){}; -}; - -new A(); -new A(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-386034.js b/implementation-contributed/v8/mjsunit/regress/regress-386034.js deleted file mode 100644 index d770ce91bd6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-386034.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - var v = x; - for (i = 0; i < 1; i++) { - v.apply(this, arguments); - } -} - -function g() {} - -f(g); -f(g); -%OptimizeFunctionOnNextCall(f); -assertThrows(function() { f('----'); }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3865.js b/implementation-contributed/v8/mjsunit/regress/regress-3865.js deleted file mode 100644 index 0d1d02f00da..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3865.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar() { - var radix = 10; - return 21 / radix | 0; -} -assertEquals(2, bar()); -assertEquals(2, bar()); -%OptimizeFunctionOnNextCall(bar); -assertEquals(2, bar()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3884.js b/implementation-contributed/v8/mjsunit/regress/regress-3884.js deleted file mode 100644 index ecd000f6c7d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3884.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -function f(x) { - // TurboFan will hoist the CompareIC for x === 'some_string' and spill it. - if (x === 'some_other_string_1' || x === 'some_string') { - gc(); - } - if (x === 'some_other_string_2' || x === 'some_string') { - gc(); - } - // TurboFan will hoist the CompareIC for x === 1.4 and spill it. - if (x === 1.7 || x === 1.4) { - gc(); - } - if (x === 1.9 || x === 1.4) { - gc(); - } -} - -%OptimizeFunctionOnNextCall(f); - -f('some_other_string_1'); -f(1.7); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-392.js b/implementation-contributed/v8/mjsunit/regress/regress-392.js deleted file mode 100644 index 3cabcacf113..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-392.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for issue 392 reported by nth10sd; see -// http://code.google.com/p/v8/issues/detail?id=392 - -assertTrue(isNaN((function(){return arguments++})())); -assertTrue(isNaN((function(){return ++arguments})())); -assertTrue(isNaN((function(){return arguments--})())); -assertTrue(isNaN((function(){return --arguments})())); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3926.js b/implementation-contributed/v8/mjsunit/regress/regress-3926.js deleted file mode 100644 index 4d9b2983d23..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3926.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// See: http://code.google.com/p/v8/issues/detail?id=3926 - -// Switch statements should disable hole check elimination - -// Ensure that both reads and writes encounter the hole check -// FullCodeGen had an issue on reads; TurboFan had an issue on writes -function f(x) { - var z; - switch (x) { - case 1: - let y = 1; - case 2: - y = 2; - case 3: - z = y; - } - return z; -} -assertEquals(2, f(1)); -assertThrows(function() {f(2)}, ReferenceError); -assertThrows(function() {f(3)}, ReferenceError); - -// Ensure that hole checks are done even in subordinate scopes -assertThrows(function() { - switch (1) { - case 0: - let x = 2; - case 1: - { // this block, plus the let below, adds another linear lexical scope - let y = 3; - x; - } - } -}, ReferenceError); - -// Ensure that inner functions and eval don't skip hole checks - -function g(x) { - switch (x) { - case 1: - let z; - case 2: - return function() { z = 1; } - case 3: - return function() { return z; } - case 4: - return eval("z = 1"); - case 5: - return eval("z"); - } -} - -assertEquals(undefined, g(1)()); -assertThrows(g(2), ReferenceError); -assertThrows(g(3), ReferenceError); -assertThrows(function () {g(4)}, ReferenceError); -assertThrows(function () {g(5)}, ReferenceError); - -// Ensure the same in strict mode, with different eval and function semantics - -function h(x) { - 'use strict' - switch (x) { - case 1: - let z; - case 2: - return function() { z = 1; } - case 3: - return function() { return z; } - case 4: - return eval("z = 1"); - case 5: - return eval("z"); - } -} - -assertEquals(undefined, h(1)()); -assertThrows(h(2), ReferenceError); -assertThrows(h(3), ReferenceError); -assertThrows(function () {h(4)}, ReferenceError); -assertThrows(function () {h(5)}, ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-394.js b/implementation-contributed/v8/mjsunit/regress/regress-394.js deleted file mode 100644 index 1537483918a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-394.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See - -function setx(){ - x=1; -} - -function getx(){ - return x; -} - -setx() -setx() -this.__defineSetter__('x',function(){}); -this.__defineGetter__('x',function(){return 2;}); -setx() -assertEquals(2, x); - -assertEquals(2, getx()); -assertEquals(2, getx()); -assertEquals(2, getx()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-396.js b/implementation-contributed/v8/mjsunit/regress/regress-396.js deleted file mode 100644 index e6f2ce3a61a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-396.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// http://code.google.com/p/v8/issues/detail?id=396 - -function DateYear(date) { - var string = date.getYear() + ''; - if (string.length < 4) { - string = '' + (string - 0 + 1900); - } - return string; -} - -assertEquals('1995', DateYear(new Date('Dec 25, 1995'))); -assertEquals('2005', DateYear(new Date('Dec 25, 2005'))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3969.js b/implementation-contributed/v8/mjsunit/regress/regress-3969.js deleted file mode 100644 index 4659e1caf8a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3969.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Inner() { - this.property = "OK"; - this.o2 = 1; -} - -function Outer(inner) { - this.inner = inner; -} - -var inner = new Inner(); -var outer = new Outer(inner); - -Outer.prototype.boom = function() { - return this.inner.property; -} - -assertEquals("OK", outer.boom()); -assertEquals("OK", outer.boom()); -%OptimizeFunctionOnNextCall(Outer.prototype.boom); -assertEquals("OK", outer.boom()); - -inner = undefined; -%SetAllocationTimeout(0 /*interval*/, 2 /*timeout*/); -// Call something that will do GC while holding a handle to outer's map. -// The key is that this lets inner's map die while keeping outer's map alive. -delete outer.inner; - -outer = new Outer({field: 1.51, property: "OK"}); - -assertEquals("OK", outer.boom()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-397.js b/implementation-contributed/v8/mjsunit/regress/regress-397.js deleted file mode 100644 index 0e4143d032d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-397.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -// See http://code.google.com/p/v8/issues/detail?id=397 - - -function test() { - assertEquals("Infinity", String(Math.pow(Infinity, 0.5))); - assertEquals(0, Math.pow(Infinity, -0.5)); - - assertEquals("Infinity", String(Math.pow(-Infinity, 0.5))); - assertEquals(0, Math.pow(-Infinity, -0.5)); -} - -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3976.js b/implementation-contributed/v8/mjsunit/regress/regress-3976.js deleted file mode 100644 index efa3ac03bc0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3976.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --max-old-space-size=60 --check-handle-count - -table = []; - -for (var i = 0; i < 32; i++) { - table[i] = String.fromCharCode(i + 0x410); -} - - -var random = (function() { - var seed = 10; - return function() { - seed = (seed * 1009) % 8831; - return seed; - }; -})(); - - -function key(length) { - var s = ""; - for (var i = 0; i < length; i++) { - s += table[random() % 32]; - } - return '"' + s + '"'; -} - - -function value() { - return '[{' + '"field1" : ' + random() + ', "field2" : ' + random() + '}]'; -} - - -function generate(n) { - var s = '{'; - for (var i = 0; i < n; i++) { - if (i > 0) s += ', '; - s += key(random() % 10 + 7); - s += ':'; - s += value(); - } - s += '}'; - return s; -} - - -print("generating"); - -var str = generate(50000); - -print("parsing " + str.length); -JSON.parse(str); - -print("done"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-3985.js b/implementation-contributed/v8/mjsunit/regress/regress-3985.js deleted file mode 100644 index 6dbc4bdadd3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-3985.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var shouldThrow = false; - -function h() { - try { // Prevent inlining in Crankshaft. - } catch(e) { } - var res = g.arguments[0].x; - if (shouldThrow) { - throw res; - } - return res; -} - -function g(o) { h(); } - -function f1() { - var o = { x : 1 }; - g(o); - return o.x; -} - -function f2() { - var o = { x : 2 }; - g(o); - return o.x; -} - -f1(); -f2(); -f1(); -f2(); -%OptimizeFunctionOnNextCall(f1); -%OptimizeFunctionOnNextCall(f2); -shouldThrow = true; -try { f1(); } catch(e) { - assertEquals(e, 1); -} -try { f2(); } catch(e) { - assertEquals(e, 2); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-399.js b/implementation-contributed/v8/mjsunit/regress/regress-399.js deleted file mode 100644 index 6c8eab545b8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-399.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=399 - -var date = new Date(1.009804e12); -var year = Number(String(date).match(/.*(200\d)/)[1]); -assertEquals(year, date.getFullYear()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4023.js b/implementation-contributed/v8/mjsunit/regress/regress-4023.js deleted file mode 100644 index 902741f6f5c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4023.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --block-concurrent-recompilation - -function Inner() { - this.property = "OK"; - this.prop2 = 1; -} - -function Outer() { - this.o = "u"; -} -function KeepMapAlive(o) { - return o.o; -} -function SetInner(o, i) { - o.inner_field = i; -} -function Crash(o) { - return o.inner_field.property; -} - -var inner = new Inner(); -var outer = new Outer(); - -// Collect type feedback. -SetInner(new Outer(), inner); -SetInner(outer, inner); - -// This function's only purpose is to stash away a Handle that keeps -// outer's map alive during the gc() call below. We store this handle -// on the compiler thread :-) -KeepMapAlive(outer); -KeepMapAlive(outer); -%OptimizeFunctionOnNextCall(KeepMapAlive, "concurrent"); -KeepMapAlive(outer); - -// So far, all is well. Collect type feedback and optimize. -print(Crash(outer)); -print(Crash(outer)); -%OptimizeFunctionOnNextCall(Crash); -print(Crash(outer)); - -// Null out references and perform GC. This will keep outer's map alive -// (due to the handle created above), but will let inner's map die. Hence, -// inner_field's field type stored in outer's map will get cleared. -inner = undefined; -outer = undefined; -gc(); - -// We could unblock the compiler thread now. But why bother? - -// Now optimize SetInner while inner_field's type is still cleared! -// This will generate optimized code that stores arbitrary objects -// into inner_field without checking their type against the field type. -%OptimizeFunctionOnNextCall(SetInner); - -// Use the optimized code to store an arbitrary object into -// o2's inner_field, without triggering any dependent code deopts... -var o2 = new Outer(); -SetInner(o2, { invalid: 1.51, property: "OK" }); -// ...and then use the existing code expecting an Inner-class object to -// read invalid data (in this case, a raw double). -// We crash trying to convert the raw double into a printable string. -print(Crash(o2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4027.js b/implementation-contributed/v8/mjsunit/regress/regress-4027.js deleted file mode 100644 index 3a5d11b8e58..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4027.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -function Inner() { - this.inner_name = "inner"; -} - -function Boom() { - this.boom = "boom"; -} - -function Outer() { - this.outer_name = "outer"; -} - -function SetInner(inner, value) { - inner.prop = value; -} - -function SetOuter(outer, value) { - outer.inner = value; -} - -var inner1 = new Inner(); -var inner2 = new Inner(); - -SetInner(inner1, 10); -SetInner(inner2, 10); - -var outer1 = new Outer(); -var outer2 = new Outer(); -var outer3 = new Outer(); - -SetOuter(outer1, inner1); -SetOuter(outer1, inner1); -SetOuter(outer1, inner1); - -SetOuter(outer2, inner2); -SetOuter(outer2, inner2); -SetOuter(outer2, inner2); - -SetOuter(outer3, inner2); -SetOuter(outer3, inner2); -SetOuter(outer3, inner2); - - -SetInner(inner2, 6.5); - -outer1 = null; -inner1 = null; - -gc(); - -var boom = new Boom(); -SetOuter(outer2, boom); - -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-404981.js b/implementation-contributed/v8/mjsunit/regress/regress-404981.js deleted file mode 100644 index 5508d6fea71..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-404981.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var large_object = new Array(5000001); -large_object.length = 23; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-406.js b/implementation-contributed/v8/mjsunit/regress/regress-406.js deleted file mode 100644 index f48a5de916e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-406.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test of constant folding of boolean-valued expressions. - -// See http://code.google.com/p/v8/issues/detail?id=406 - -assertFalse(typeof(0) == "zero"); -assertTrue(typeof(0) != "zero"); - -// The and and or truth tables with both operands constant. -assertFalse(typeof(0) == "zero" && typeof(0) == "zero"); -assertFalse(typeof(0) == "zero" && typeof(0) != "zero"); -assertFalse(typeof(0) != "zero" && typeof(0) == "zero"); -assertTrue(typeof(0) != "zero" && typeof(0) != "zero"); - -assertFalse(typeof(0) == "zero" || typeof(0) == "zero"); -assertTrue(typeof(0) == "zero" || typeof(0) != "zero"); -assertTrue(typeof(0) != "zero" || typeof(0) == "zero"); -assertTrue(typeof(0) != "zero" || typeof(0) != "zero"); - -// Same with just the left operand constant. -// Helper function to prevent simple constant folding. -function one() { return 1; } - -assertFalse(typeof(0) == "zero" && one() < 0); -assertFalse(typeof(0) == "zero" && one() > 0); -assertFalse(typeof(0) != "zero" && one() < 0); -assertTrue(typeof(0) != "zero" && one() > 0); - -assertFalse(typeof(0) == "zero" || one() < 0); -assertTrue(typeof(0) == "zero" || one() > 0); -assertTrue(typeof(0) != "zero" || one() < 0); -assertTrue(typeof(0) != "zero" || one() > 0); - -// Same with just the right operand constant. -assertFalse(one() < 0 && typeof(0) == "zero"); -assertFalse(one() < 0 && typeof(0) != "zero"); -assertFalse(one() > 0 && typeof(0) == "zero"); -assertTrue(one() > 0 && typeof(0) != "zero"); - -assertFalse(one() < 0 || typeof(0) == "zero"); -assertTrue(one() < 0 || typeof(0) != "zero"); -assertTrue(one() > 0 || typeof(0) == "zero"); -assertTrue(one() > 0 || typeof(0) != "zero"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-410030.js b/implementation-contributed/v8/mjsunit/regress/regress-410030.js deleted file mode 100644 index efd4b1e7584..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-410030.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - throw 0; -} catch(e) { - assertSame(3, eval("delete x; const x=3; x")); -} - - -try { - throw 0; -} catch(e) { - assertSame(3, (1,eval)("delete x1; const x1=3; x1")); -} - - -try { - throw 0; -} catch(e) { - with({}) { - assertSame(3, eval("delete x2; const x2=3; x2")); - } -} - - -(function f() { - try { - throw 0; - } catch(e) { - assertSame(3, eval("delete x; const x=3; x")); - } -}()); - - -(function f() { - try { - throw 0; - } catch(e) { - assertSame(3, (1,eval)("delete x4; const x4=3; x4")); - } -}()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-410912.js b/implementation-contributed/v8/mjsunit/regress/regress-410912.js deleted file mode 100644 index 9a2e46d7bf0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-410912.js +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --opt --no-always-opt - -var assertDoesNotThrow; -var assertInstanceof; -var assertUnreachable; -var assertOptimized; -var assertUnoptimized; -function classOf(object) { var string = Object.prototype.toString.call(object); return string.substring(8, string.length - 1); } -function PrettyPrint(value) { return ""; } -function PrettyPrintArrayElement(value, index, array) { return ""; } -function fail(expectedText, found, name_opt) { } -function deepObjectEquals(a, b) { var aProps = Object.keys(a); aProps.sort(); var bProps = Object.keys(b); bProps.sort(); if (!deepEquals(aProps, bProps)) { return false; } for (var i = 0; i < aProps.length; i++) { if (!deepEquals(a[aProps[i]], b[aProps[i]])) { return false; } } return true; } -function deepEquals(a, b) { if (a === b) { if (a === 0) return (1 / a) === (1 / b); return true; } if (typeof a != typeof b) return false; if (typeof a == "number") return isNaN(a) && isNaN(b); if (typeof a !== "object" && typeof a !== "function") return false; var objectClass = classOf(a); if (objectClass !== classOf(b)) return false; if (objectClass === "RegExp") { return (a.toString() === b.toString()); } if (objectClass === "Function") return false; if (objectClass === "Array") { var elementCount = 0; if (a.length != b.length) { return false; } for (var i = 0; i < a.length; i++) { if (!deepEquals(a[i], b[i])) return false; } return true; } if (objectClass == "String" || objectClass == "Number" || objectClass == "Boolean" || objectClass == "Date") { if (a.valueOf() !== b.valueOf()) return false; } return deepObjectEquals(a, b); } -assertSame = function assertSame(expected, found, name_opt) { if (found === expected) { if (expected !== 0 || (1 / expected) == (1 / found)) return; } else if ((expected !== expected) && (found !== found)) { return; } fail(PrettyPrint(expected), found, name_opt); }; assertEquals = function assertEquals(expected, found, name_opt) { if (!deepEquals(found, expected)) { fail(PrettyPrint(expected), found, name_opt); } }; -assertEqualsDelta = function assertEqualsDelta(expected, found, delta, name_opt) { assertTrue(Math.abs(expected - found) <= delta, name_opt); }; -assertArrayEquals = function assertArrayEquals(expected, found, name_opt) { var start = ""; if (name_opt) { start = name_opt + " - "; } assertEquals(expected.length, found.length, start + "array length"); if (expected.length == found.length) { for (var i = 0; i < expected.length; ++i) { assertEquals(expected[i], found[i], start + "array element at index " + i); } } }; -assertPropertiesEqual = function assertPropertiesEqual(expected, found, name_opt) { if (!deepObjectEquals(expected, found)) { fail(expected, found, name_opt); } }; -assertToStringEquals = function assertToStringEquals(expected, found, name_opt) { if (expected != String(found)) { fail(expected, found, name_opt); } }; -assertTrue = function assertTrue(value, name_opt) { assertEquals(true, value, name_opt); }; -assertFalse = function assertFalse(value, name_opt) { assertEquals(false, value, name_opt); }; -assertNull = function assertNull(value, name_opt) { if (value !== null) { fail("null", value, name_opt); } }; -assertNotNull = function assertNotNull(value, name_opt) { if (value === null) { fail("not null", value, name_opt); } }; -var __v_39 = {}; -var __v_40 = {}; -var __v_41 = {}; -var __v_42 = {}; -var __v_43 = {}; -var __v_44 = {}; -try { -__v_0 = [1.5,,1.7]; -__v_1 = {__v_0:1.8}; -} catch(e) { print("Caught: " + e); } -function __f_0(__v_1,__v_0,i) { - __v_1.a = __v_0[i]; - gc(); -} -try { -__f_0(__v_1,__v_0,0); -__f_0(__v_1,__v_0,0); -%OptimizeFunctionOnNextCall(__f_0); -__f_0(__v_1,__v_0,1); -assertEquals(undefined, __v_1.a); -__v_0 = [1,,3]; -__v_1 = {ab:5}; -} catch(e) { print("Caught: " + e); } -function __f_1(__v_1,__v_0,i) { - __v_1.ab = __v_0[i]; -} -try { -__f_1(__v_1,__v_0,1); -} catch(e) { print("Caught: " + e); } -function __f_5(x) { - return ~x; -} -try { -__f_5(42); -assertEquals(~12, __f_5(12.45)); -assertEquals(~46, __f_5(42.87)); -__v_2 = 1, __v_4 = 2, __v_3 = 4, __v_6 = 8; -} catch(e) { print("Caught: " + e); } -function __f_4() { - return __v_2 | (__v_4 | (__v_3 | __v_6)); -} -try { -__f_4(); -__v_3 = "16"; -assertEquals(17 | -13 | 0 | -5, __f_4()); -} catch(e) { print("Caught: " + e); } -function __f_6() { - return __f_4(); -} -try { -assertEquals(1 | 2 | 16 | 8, __f_6()); -__f_4 = function() { return 42; }; -assertEquals(42, __f_6()); -__v_5 = {}; -__v_5.__f_4 = __f_4; -} catch(e) { print("Caught: " + e); } -function __f_7(o) { - return o.__f_4(); -} -try { -for (var __v_7 = 0; __v_7 < 5; __v_7++) __f_7(__v_5); -%OptimizeFunctionOnNextCall(__f_7); -__f_7(__v_5); -assertEquals(42, __f_7(__v_5)); -assertEquals(87, __f_7({__f_4: function() { return 87; }})); -} catch(e) { print("Caught: " + e); } -function __f_8(x,y) { - x = 42; - y = 1; - y = y << "0"; - return x | y; -} -try { -assertEquals(43, __f_8(0,0)); -} catch(e) { print("Caught: " + e); } -function __f_2(x) { - return 'lit[' + (x + ']'); -} -try { -assertEquals('lit[-87]', __f_2(-87)); -assertEquals('lit[0]', __f_2(0)); -assertEquals('lit[42]', __f_2(42)); -__v_9 = "abc"; -gc(); -var __v_8; -} catch(e) { print("Caught: " + e); } -function __f_9(n) { return __v_9.charAt(n); } -try { -for (var __v_7 = 0; __v_7 < 5; __v_7++) { - __v_8 = __f_9(0); -} -%OptimizeFunctionOnNextCall(__f_9); -__v_8 = __f_9(0); -} catch(e) { print("Caught: " + e); } -function __f_3(__v_2,__v_4,__v_3,__v_6) { - return __v_2+__v_4+__v_3+__v_6; -} -try { -assertEquals(0x40000003, __f_3(1,1,2,0x3fffffff)); -} catch(e) { print("Caught: " + e); } -try { -__v_19 = { - fast_smi_only : 'fast smi only elements', - fast : 'fast elements', - fast_double : 'fast double elements', - dictionary : 'dictionary elements', - external_int32 : 'external int8 elements', - external_uint8 : 'external uint8 elements', - external_int16 : 'external int16 elements', - external_uint16 : 'external uint16 elements', - external_int32 : 'external int32 elements', - external_uint32 : 'external uint32 elements', - external_float32 : 'external float32 elements', - external_float64 : 'external float64 elements', - external_uint8_clamped : 'external uint8_clamped elements', - fixed_int32 : 'fixed int8 elements', - fixed_uint8 : 'fixed uint8 elements', - fixed_int16 : 'fixed int16 elements', - fixed_uint16 : 'fixed uint16 elements', - fixed_int32 : 'fixed int32 elements', - fixed_uint32 : 'fixed uint32 elements', - fixed_float32 : 'fixed float32 elements', - fixed_float64 : 'fixed float64 elements', - fixed_uint8_clamped : 'fixed uint8_clamped elements' -} -} catch(e) { print("Caught: " + e); } -function __f_12() { -} -__v_10 = {}; -__v_10.dance = 0xD15C0; -__v_10.drink = 0xC0C0A; -__f_12(__v_19.fast, __v_10); -__v_24 = [1,2,3]; -__f_12(__v_19.fast_smi_only, __v_24); -__v_24.dance = 0xD15C0; -__v_24.drink = 0xC0C0A; -__f_12(__v_19.fast_smi_only, __v_24); -function __f_18() { - var __v_27 = new Array(); - __f_12(__v_19.fast_smi_only, __v_27); - for (var __v_18 = 0; __v_18 < 1337; __v_18++) { - var __v_16 = __v_18; - if (__v_18 == 1336) { - __f_12(__v_19.fast_smi_only, __v_27); - __v_16 = new Object(); - } - __v_27[__v_18] = __v_16; - } - __f_12(__v_19.fast, __v_27); - var __v_15 = []; - __v_15[912570] = 7; - __f_12(__v_19.dictionary, __v_15); - var __v_26 = new Array(912561); - %SetAllocationTimeout(100000000, 10000000); - for (var __v_18 = 0; __v_18 < 0x20000; __v_18++) { - __v_26[0] = __v_18 / 2; - } - __f_12(__v_19.fixed_int8, new Int8Array(007)); - __f_12(__v_19.fixed_uint8, new Uint8Array(007)); - __f_12(__v_19.fixed_int16, new Int16Array(666)); - __f_12(__v_19.fixed_uint16, new Uint16Array(42)); - __f_12(__v_19.fixed_int32, new Int32Array(0xF)); - __f_12(__v_19.fixed_uint32, new Uint32Array(23)); - __f_12(__v_19.fixed_float32, new Float32Array(7)); - __f_12(__v_19.fixed_float64, new Float64Array(0)); - __f_12(__v_19.fixed_uint8_clamped, new Uint8ClampedArray(512)); - var __v_13 = new ArrayBuffer(128); - __f_12(__v_19.external_int8, new Int8Array(__v_13)); - __f_12(__v_37.external_uint8, new Uint8Array(__v_13)); - __f_12(__v_19.external_int16, new Int16Array(__v_13)); - __f_12(__v_19.external_uint16, new Uint16Array(__v_13)); - __f_12(__v_19.external_int32, new Int32Array(__v_13)); - __f_12(__v_19.external_uint32, new Uint32Array(__v_13)); - __f_12(__v_19.external_float32, new Float32Array(__v_13)); - __f_12(__v_19.external_float64, new Float64Array(__v_13)); - __f_12(__v_19.external_uint8_clamped, new Uint8ClampedArray(__v_13)); -} -try { -__f_18(); -} catch(e) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-411210.js b/implementation-contributed/v8/mjsunit/regress/regress-411210.js deleted file mode 100644 index 2dbc5ff70c4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-411210.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --gc-interval=439 --random-seed=-423594851 - -var __v_3; -function __f_2() { - var __v_1 = new Array(3); - __v_1[0] = 10; - __v_1[1] = 15.5; - __v_3 = __f_2(); - __v_1[2] = 20; - return __v_1; -} - -try { - for (var __v_2 = 0; __v_2 < 3; ++__v_2) { - __v_3 = __f_2(); - } -} -catch (e) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4121.js b/implementation-contributed/v8/mjsunit/regress/regress-4121.js deleted file mode 100644 index 0f03e79cf24..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4121.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt - -function literals_sharing_test(warmup, optimize) { - function closure() { - // Ensure small array literals start in specific element kind mode. - assertTrue(%HasSmiElements([])); - assertTrue(%HasSmiElements([1])); - assertTrue(%HasSmiElements([1,2])); - assertTrue(%HasDoubleElements([1.1])); - assertTrue(%HasDoubleElements([1.1,2])); - - var a = [1, 2, 3]; - if (warmup) { - // Transition elements kind during warmup... - assertTrue(%HasSmiElements(a)); - assertEquals(4, a.push(1.3)); - } - // ... and ensure that the information about transitioning is - // propagated to the next closure. - assertTrue(%HasDoubleElements(a)); - }; - if (optimize) %OptimizeFunctionOnNextCall(closure); - closure(); -} - - -function test() { - var warmup = true; - for (var i = 0; i < 3; i++) { - print("iter: " + i + ", warmup: "+ warmup); - literals_sharing_test(warmup, false); - warmup = false; - } - print("iter: " + i + ", opt: true"); - literals_sharing_test(warmup, true); -} - -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-412162.js b/implementation-contributed/v8/mjsunit/regress/regress-412162.js deleted file mode 100644 index 6a7ad0c57fc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-412162.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test() { - Math.abs(-NaN).toString(); -} - -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-416.js b/implementation-contributed/v8/mjsunit/regress/regress-416.js deleted file mode 100644 index d204bd3b84b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-416.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test of invalid Date construction, and TimeClip function. - -// See http://code.google.com/p/v8/issues/detail?id=416 - -assertTrue(isNaN(new Date(1e81).getTime()), "new Date(1e81)"); -assertTrue(isNaN(new Date(-1e81).getTime()), "new Date(-1e81)"); -assertTrue(isNaN(new Date(1e81, "").getTime()), "new Date(1e81, \"\")"); -assertTrue(isNaN(new Date(-1e81, "").getTime()), "new Date(-1e81, \"\")"); -assertTrue(isNaN(new Date(Number.NaN).getTime()), "new Date(Number.NaN)"); -assertTrue(isNaN(new Date(Number.NaN, "").getTime()), - "new Date(Number.NaN, \"\")"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-416416.js b/implementation-contributed/v8/mjsunit/regress/regress-416416.js deleted file mode 100644 index 66e882e0fc3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-416416.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo() { - try { - String.prototype.length.x(); - } catch (e) { - } -} - -foo(); -foo(); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-416730.js b/implementation-contributed/v8/mjsunit/regress/regress-416730.js deleted file mode 100644 index 8d7f207fd96..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-416730.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var d = {x: undefined, y: undefined}; - -function Crash(left, right) { - var c = { - x: right.x - left.x, - y: right.y - left.y - }; - return c.x * c.y; -} - -var a = {x: 0.5, y: 0}; -var b = {x: 1, y: 0}; - -for (var i = 0; i < 3; i++) Crash(a, b); -%OptimizeFunctionOnNextCall(Crash); -Crash(a, b); - -Crash({x: 0, y: 0.5}, b); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4169.js b/implementation-contributed/v8/mjsunit/regress/regress-4169.js deleted file mode 100644 index df2de039844..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4169.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -with ({}) { - eval("var x = 23"); - assertEquals(23, x); -} -assertEquals(23, x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4173.js b/implementation-contributed/v8/mjsunit/regress/regress-4173.js deleted file mode 100644 index 9aa49be7012..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4173.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Migrator(o) { - return o.foo; -} -function Loader(o) { - return o[0]; -} - -var first_smi_array = [1]; -var second_smi_array = [2]; -var first_object_array = ["first"]; -var second_object_array = ["string"]; - -assertTrue(%HasSmiElements(first_smi_array)); -assertTrue(%HasSmiElements(second_smi_array)); -assertTrue(%HasObjectElements(first_object_array)); -assertTrue(%HasObjectElements(second_object_array)); - -// Prepare identical transition chains for smi and object arrays. -first_smi_array.foo = 0; -second_smi_array.foo = 0; -first_object_array.foo = 0; -second_object_array.foo = 0; - -// Collect type feedback for not-yet-deprecated original object array map. -for (var i = 0; i < 3; i++) Migrator(second_object_array); - -// Blaze a migration trail for smi array maps. -// This marks the migrated smi array map as a migration target. -first_smi_array.foo = 0.5; -print(second_smi_array.foo); - -// Deprecate original object array map. -// Use TryMigrate from deferred optimized code to migrate second object array. -first_object_array.foo = 0.5; -%OptimizeFunctionOnNextCall(Migrator); -Migrator(second_object_array); - -// |second_object_array| now erroneously has a smi map. -// Optimized code assuming smi elements will expose this. - -for (var i = 0; i < 3; i++) Loader(second_smi_array); -%OptimizeFunctionOnNextCall(Loader); -assertEquals("string", Loader(second_object_array)); - -// Any of the following checks will also fail: -assertTrue(%HasObjectElements(second_object_array)); -assertFalse(%HasSmiElements(second_object_array)); -assertTrue(%HaveSameMap(first_object_array, second_object_array)); -assertFalse(%HaveSameMap(first_smi_array, second_object_array)); - -%ClearFunctionFeedback(Loader); -%ClearFunctionFeedback(Migrator); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4214.js b/implementation-contributed/v8/mjsunit/regress/regress-4214.js deleted file mode 100644 index 7c28104b8aa..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4214.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = { eval: function() { return this; } } -with (o) assertSame(o, eval()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-423633.js b/implementation-contributed/v8/mjsunit/regress/regress-423633.js deleted file mode 100644 index 12d248333fb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-423633.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(Array.prototype, '0', { - get: function() { return false; }, -}); -var a = [1, 2, 3]; -assertEquals(a, a.slice()); -assertEquals([3], a.splice(2, 1)); - -a = [1, 2, 3]; -a[0xffff] = 4; -// nulling the prototype lets us stay in the sparse case; otherwise the -// getter on Array.prototype would force us into the non-sparse code. -a.__proto__ = null; -assertEquals(a, Array.prototype.slice.call(a)); -assertEquals([3], Array.prototype.splice.call(a, 2, 1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4255-1.js b/implementation-contributed/v8/mjsunit/regress/regress-4255-1.js deleted file mode 100644 index 78fe860290b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4255-1.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation - -'use strict'; -{ - let x = function() {}; - // Trigger OSR. - for (var i = 0; i < 1000000; i++); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4255-2.js b/implementation-contributed/v8/mjsunit/regress/regress-4255-2.js deleted file mode 100644 index bae82be5120..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4255-2.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation - -'use strict'; -for (let i = function f() {}; !i;); - // Trigger OSR. -for (var i = 0; i < 1000000; i++); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4255-3.js b/implementation-contributed/v8/mjsunit/regress/regress-4255-3.js deleted file mode 100644 index 531d0a34dec..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4255-3.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation - -'use strict'; -for (let i in [1, 2, 3]) { function f() {} } -// Trigger OSR. -for (var i = 0; i < 1000000; i++); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4255-4.js b/implementation-contributed/v8/mjsunit/regress/regress-4255-4.js deleted file mode 100644 index 4de62d905bb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4255-4.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation -// comments to trigger lazy compilation comments to trigger lazy compilation - -'use strict'; -class C { constructor() {} } -// Trigger OSR -for (var i = 0; i < 1000000; i++); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-425551.js b/implementation-contributed/v8/mjsunit/regress/regress-425551.js deleted file mode 100644 index eee5e32f04e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-425551.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var array = new Int8Array(10); -array[/\u007d\u00fc\u0043/] = 1.499 -assertEquals(1.499, array[/\u007d\u00fc\u0043/]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4266.js b/implementation-contributed/v8/mjsunit/regress/regress-4266.js deleted file mode 100644 index f886250a873..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4266.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-filter=test --allow-natives-syntax - -function test() { - try { - [].foo(); - } catch (e) { - return e.message; - } -} - -assertEquals("[].foo is not a function", test()); -%OptimizeFunctionOnNextCall(test); -assertEquals("[].foo is not a function", test()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4267.js b/implementation-contributed/v8/mjsunit/regress/regress-4267.js deleted file mode 100644 index f8cf7467230..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4267.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; - -var a = []; -Object.defineProperty(a, "0", {configurable: false, value: 10}); -assertEquals(1, a.length); -var setter = ()=>{ a.length = 0; }; -assertThrows(setter); -assertThrows(setter); -%OptimizeFunctionOnNextCall(setter); -assertThrows(setter); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4271.js b/implementation-contributed/v8/mjsunit/regress/regress-4271.js deleted file mode 100644 index 5b724b01b64..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4271.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - // Throw rather than overflow internal field index - assertThrows(function() { - Worker.prototype.terminate(); - }); - - assertThrows(function() { - Worker.prototype.getMessage(); - }); - - assertThrows(function() { - Worker.prototype.postMessage({}); - }); - - // Don't throw for real worker - var worker = new Worker('', {type: 'string'}); - worker.getMessage(); - worker.postMessage({}); - worker.terminate(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4279.js b/implementation-contributed/v8/mjsunit/regress/regress-4279.js deleted file mode 100644 index ddc272793e6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4279.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker && this.quit) { - try { - new Function(new Worker("55"), {type: 'string'}); - } catch(err) {} - - quit(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4296.js b/implementation-contributed/v8/mjsunit/regress/regress-4296.js deleted file mode 100644 index 5774952a944..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4296.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function () { - var o = new String("ab"); - function store(o, i, v) { o[i] = v; } - function load(o, i) { return o[i]; } - - // Initialize the IC. - store(o, 2, 10); - load(o, 2); - - store(o, 0, 100); - assertEquals("a", load(o, 0)); -})(); - -(function () { - var o = {__proto__: new String("ab")}; - function store(o, i, v) { o[i] = v; } - function load(o, i) { return o[i]; } - - // Initialize the IC. - store(o, 2, 10); - load(o, 2); - - store(o, 0, 100); - assertEquals("a", load(o, 0)); -})(); - -(function () { - "use strict"; - var o = {__proto__: {}}; - function store(o, i, v) { o[i] = v; } - - // Initialize the IC. - store(o, 0, 100); - o.__proto__.__proto__ = new String("bla"); - assertThrows(function () { store(o, 1, 100) }); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-430201.js b/implementation-contributed/v8/mjsunit/regress/regress-430201.js deleted file mode 100644 index 9443d1ddc4b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-430201.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --nostress-incremental-marking -// Flags: --stress-compaction - -var array_1 = []; - -for (var a = 0; a < 10000; a++) { array_1[a * 100] = 0; } - -gc(); -gc(); - -var array_2 = []; -for (var i = 0; i < 321361; i++) { - array_2[i] = String.fromCharCode(i)[0]; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-430201b.js b/implementation-contributed/v8/mjsunit/regress/regress-430201b.js deleted file mode 100644 index 7e890b79308..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-430201b.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --stress-compaction - -(function() { - var array_1 = []; - - for (var a = 0; a < 10000; a++) { array_1[a * 100] = 0; } - - gc(); - gc(); - - var array_2 = []; - for (var i = 0; i < 321361; i++) { - array_2[i] = String.fromCharCode(i)[0]; - } -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4325.js b/implementation-contributed/v8/mjsunit/regress/regress-4325.js deleted file mode 100644 index 27d690d5799..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4325.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -function Inner() { - this.p1 = 0; - this.p2 = 3; -} - -function Outer() { - this.p3 = 0; -} - -var i1 = new Inner(); -var i2 = new Inner(); -var o1 = new Outer(); -o1.inner = i1; -// o1.map now thinks "inner" has type Inner.map1. -// Deprecate Inner.map1: -i1.p1 = 0.5; -// Let Inner.map1 die by migrating i2 to Inner.map2: -print(i2.p1); -gc(); -// o1.map's descriptor for "inner" is now a cleared weak reference; -// o1.inner's actual map is Inner.map2. -// Prepare Inner.map3, deprecating Inner.map2. -i2.p2 = 0.5; -// Deprecate o1's map. -var o2 = new Outer(); -o2.p3 = 0.5; -o2.inner = i2; -// o2.map (Outer.map2) now says that o2.inner's type is Inner.map3. -// Migrate o1 to Outer.map2. -print(o1.p3); -// o1.map now thinks that o1.inner has map Inner.map3 just like o2.inner, -// but in fact o1.inner.map is still Inner.map2! - -function loader(o) { - return o.inner.p2; -} -loader(o2); -loader(o2); -%OptimizeFunctionOnNextCall(loader); -assertEquals(0.5, loader(o2)); -assertEquals(3, loader(o1)); -gc(); // Crashes with --verify-heap. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-435073.js b/implementation-contributed/v8/mjsunit/regress/regress-435073.js deleted file mode 100644 index dbaa612afae..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-435073.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap - -function test(x) { [x,,]; } - -test(0); -test(0); -%OptimizeFunctionOnNextCall(test); -test(0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-435477.js b/implementation-contributed/v8/mjsunit/regress/regress-435477.js deleted file mode 100644 index 0a150002c9a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-435477.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -var a = new Array(128); - -function f(a, base) { - a[base] = 2; -} - -f(a, undefined); -f("r12", undefined); -f(a, 0); -%OptimizeFunctionOnNextCall(f); -f(a, 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-436893.js b/implementation-contributed/v8/mjsunit/regress/regress-436893.js deleted file mode 100644 index 38e7b5fb86c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-436893.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var x = 11; -function foo() { - return 42; -} -// Test passing null or undefined as receiver. -function g() { return foo.apply(null, x()++); } -%OptimizeFunctionOnNextCall(g); -assertThrows(g); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4374.js b/implementation-contributed/v8/mjsunit/regress/regress-4374.js deleted file mode 100644 index afae71c5956..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4374.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --function-context-specialization -// Flags: --turbo-filter=f --turbo-inlining - -var f = (function() { - var max = Math.max; - return function f() { return max(0, -1); }; -})(); - -assertEquals(0, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(0, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4376-1.js b/implementation-contributed/v8/mjsunit/regress/regress-4376-1.js deleted file mode 100644 index edb97ee2a9a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4376-1.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Bar() { } -function Baz() { } -Baz.prototype = { __proto__: new Bar() } -var x = new Baz(); -function foo(y) { return y instanceof Bar; } -assertTrue(foo(x)); -Baz.prototype.__proto__ = null; -assertFalse(foo(x)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4376-2.js b/implementation-contributed/v8/mjsunit/regress/regress-4376-2.js deleted file mode 100644 index 2a37204eabe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4376-2.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Foo() {} -var x = new Foo(); -Foo.prototype = 1; -function foo() { return x instanceof Foo; } -assertThrows(foo, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4376-3.js b/implementation-contributed/v8/mjsunit/regress/regress-4376-3.js deleted file mode 100644 index 3240cf0cd90..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4376-3.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Foo() {} -var x = new Foo(); -function foo() { return x instanceof Foo; } -assertTrue(foo()); -Foo.prototype = 1; -assertThrows(foo, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4377.js b/implementation-contributed/v8/mjsunit/regress/regress-4377.js deleted file mode 100644 index 3c4278ac0bb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4377.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// See: http://code.google.com/p/v8/issues/detail?id=4377 - -// Switch statements should introduce their own lexical scope - -'use strict'; - -switch (1) { case 1: let x = 2; } - -assertThrows(function() { return x; }, ReferenceError); - -{ - let result; - let x = 1; - switch (x) { - case 1: - let x = 2; - result = x; - break; - default: - result = 0; - break; - } - assertEquals(1, x); - assertEquals(2, result); -} - -{ - let result; - let x = 1; - switch (eval('x')) { - case 1: - let x = 2; - result = x; - break; - default: - result = 0; - break; - } - assertEquals(1, x); - assertEquals(2, result); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-437713.js b/implementation-contributed/v8/mjsunit/regress/regress-437713.js deleted file mode 100644 index 704dd3ed8ae..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-437713.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --enable-slow-asserts - -var o1 = { - a00:0, a01:0, a02:0, a03:0, a04:0, a05:0, a06:0, a07:0, a08:0, a09:0, a0a:0, a0b:0, a0c:0, a0d:0, a0e:0, a0f:0, - a10:0, a11:0, a12:0, a13:0, a14:0, a15:0, a16:0, a17:0, a18:0, a19:0, a1a:0, a1b:0, a1c:0, a1d:0, a1e:0, a1f:0, - - dbl: 0.1, - - some_double: 2.13, -}; - -var o2 = { - a00:0, a01:0, a02:0, a03:0, a04:0, a05:0, a06:0, a07:0, a08:0, a09:0, a0a:0, a0b:0, a0c:0, a0d:0, a0e:0, a0f:0, - a10:0, a11:0, a12:0, a13:0, a14:0, a15:0, a16:0, a17:0, a18:0, a19:0, a1a:0, a1b:0, a1c:0, a1d:0, a1e:0, a1f:0, - - dbl: 0.1, - - boom: [], -}; - -o2.boom.push(42); -assertEquals(42, o2.boom[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-437765.js b/implementation-contributed/v8/mjsunit/regress/regress-437765.js deleted file mode 100644 index 698c39d3780..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-437765.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x, y) { - return Math.floor(x / y); -} - -function bar(x, y) { - return foo(x + 1, y + 1); -} - -function baz() { - bar(64, 2); -} - -baz(); -baz(); -%OptimizeFunctionOnNextCall(baz); -baz(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4380.js b/implementation-contributed/v8/mjsunit/regress/regress-4380.js deleted file mode 100644 index 06a64790efe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4380.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function bar(a) { - var x = a[0]; - return x == undefined; -} - -// Make the keyed load be polymorphic on holey smi and holey fast. -bar([, 2, 3]); -bar([, 'two', 'three']); -bar([, 2, 3]); - -%OptimizeFunctionOnNextCall(bar); -bar([, 2, 3]); -// Verify that loading the hole doesn't cause deoptimization. -assertOptimized(bar); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4388.js b/implementation-contributed/v8/mjsunit/regress/regress-4388.js deleted file mode 100644 index 908bcccb4e0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4388.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-filter=test* - -// Tests that TurboFan emits a dynamic hole-check for the temporal dead zone at -// a non-initializing assignments to a {let} variable. -function test_hole_check_for_let(a) { - 'use strict'; - { switch (a) { - case 0: let x; - case 1: x = 9; - } - } -} -assertDoesNotThrow("test_hole_check_for_let(0)"); -assertThrows("test_hole_check_for_let(1)", ReferenceError); -%OptimizeFunctionOnNextCall(test_hole_check_for_let) -assertThrows("test_hole_check_for_let(1)", ReferenceError); - -// Tests that TurboFan emits a dynamic hole-check for the temporal dead zone at -// a non-initializing assignments to a {const} variable. -function test_hole_check_for_const(a) { - 'use strict'; - { switch (a) { - case 0: const x = 3; - case 1: x = 2; - } - } -} -assertThrows("test_hole_check_for_const(0)", TypeError); -assertThrows("test_hole_check_for_const(1)", ReferenceError); -%OptimizeFunctionOnNextCall(test_hole_check_for_const) -assertThrows("test_hole_check_for_const(1)", ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4399-01.js b/implementation-contributed/v8/mjsunit/regress/regress-4399-01.js deleted file mode 100644 index c76c0c83b55..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4399-01.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that switch has the appropriate 'eval' value - -assertEquals("foo", eval('switch(1) { case 1: "foo" }')); -assertEquals("foo", eval('{ switch(1) { case 1: "foo" } }')); -assertEquals("foo", eval('switch(1) { case 1: { "foo" } }')); -assertEquals("foo", eval('switch(1) { case 1: "foo"; break; case 2: "bar"; break }')); -assertEquals("bar", eval('switch(2) { case 1: "foo"; break; case 2: "bar"; break }')); -assertEquals("bar", eval('switch(1) { case 1: "foo"; case 2: "bar"; break }')); - -// The tag is not the value, if there's no value - -assertEquals(undefined, eval('switch (1) {}')); -assertEquals(undefined, eval('switch (1) { case 1: {} }')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4399-02.js b/implementation-contributed/v8/mjsunit/regress/regress-4399-02.js deleted file mode 100644 index a8fdab7d9d6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4399-02.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -if (this.Worker) { - assertThrows(function() { Worker.prototype.constructor("55"); }); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-441099.js b/implementation-contributed/v8/mjsunit/regress/regress-441099.js deleted file mode 100644 index 63aecfd25c4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-441099.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var Module; -if (!Module) Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()'); -else if (ENVIRONMENT_IS_SHELL) { -} -var Runtime = { - stackSave: function () { - }, - alignMemory: function (quantum) { var ret = size = Math.ceil()*(quantum ? quantum : 8); return ret; }} -function allocate() { -} -function callRuntimeCallbacks(callbacks) { - var callback = callbacks.shift(); - var func = callback.func; - if (typeof func === 'number') { - } else { - func(); - } -} -var __ATINIT__ = []; // functions called during startup -function ensureInitRuntime() { - callRuntimeCallbacks(__ATINIT__); -} -/* global initializers */ __ATINIT__.push({ func: function() { runPostSets() } }); - function __formatString() { - switch (next) { - } - } - var Browser={mainLoop:{queue:[],pause:function () { - }},moduleContextCreatedCallbacks:[],workers:[],init:function () { - }}; -var asm = (function() { - 'use asm'; -function setThrew() { -} -function runPostSets() { -} -function _main() { -} -function _free() { -} - return { runPostSets: runPostSets}; -}) -(); -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; -var i64Math = (function() { // Emscripten wrapper - /** - */ -})(); - ensureInitRuntime(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-444805.js b/implementation-contributed/v8/mjsunit/regress/regress-444805.js deleted file mode 100644 index 5a533acd5eb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-444805.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - load("test/mjsunit/regress/regress-444805.js-script"); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-444805.js-script b/implementation-contributed/v8/mjsunit/regress/regress-444805.js-script deleted file mode 100644 index 17b233b5613..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-444805.js-script +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Error.prepareStackTrace = function(dummyObject, v8StackTrace) -{ - throw new Error('boom'); -}; - - -throw new Error('just error'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4450.js b/implementation-contributed/v8/mjsunit/regress/regress-4450.js deleted file mode 100644 index 31ff4f19c26..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4450.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -({})['foobar\u2653'.slice(0, 6)] = null; -var x; -eval('x = function foobar() { return foobar };'); -x(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-446389.js b/implementation-contributed/v8/mjsunit/regress/regress-446389.js deleted file mode 100644 index d6006387e4e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-446389.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function runNearStackLimit(f) { function t() { try { t(); } catch(e) { f(); } }; try { t(); } catch(e) {} } -%OptimizeFunctionOnNextCall(__f_3); -function __f_3() { - var __v_5 = a[0]; -} -runNearStackLimit(function() { __f_3(); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-447526.js b/implementation-contributed/v8/mjsunit/regress/regress-447526.js deleted file mode 100644 index 9f9396f2eea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-447526.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar() { - throw "done"; -} - -function foo() { - var i; - while (i) { - while (i) { -} - i++; - } - while (true) { - bar(); - } -} - - -%OptimizeFunctionOnNextCall(foo); -assertThrows(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-447561.js b/implementation-contributed/v8/mjsunit/regress/regress-447561.js deleted file mode 100644 index e1a5ba5aa59..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-447561.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -__proto__ = /foo/gi; -assertThrows(function() { source }); -assertThrows(function() { global }); -assertThrows(function() { ignoreCase }); -assertThrows(function() { multiline }); -assertEquals(0, lastIndex); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-447756.js b/implementation-contributed/v8/mjsunit/regress/regress-447756.js deleted file mode 100644 index 1fc7518c130..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-447756.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -function TestConstructor(c) { - var a = new c(-0); - assertSame(Infinity, 1 / a.length); - assertSame(Infinity, 1 / a.byteLength); - - var ab = new ArrayBuffer(-0); - assertSame(Infinity, 1 / ab.byteLength); - - var a1 = new c(ab, -0, -0); - assertSame(Infinity, 1 / a1.length); - assertSame(Infinity, 1 / a1.byteLength); - assertSame(Infinity, 1 / a1.byteOffset); -} - -var constructors = - [ Uint8Array, Int8Array, Uint8ClampedArray, - Uint16Array, Int16Array, - Uint32Array, Int32Array, - Float32Array, Float64Array ]; -for (var i = 0; i < constructors.length; i++) { - TestConstructor(constructors[i]); -} - - -function TestOptimizedCode() { - var a = new Uint8Array(-0); - assertSame(Infinity, 1 / a.length); - assertSame(Infinity, 1 / a.byteLength); - - var ab = new ArrayBuffer(-0); - assertSame(Infinity, 1 / ab.byteLength); - - var a1 = new Uint8Array(ab, -0, -0); - assertSame(Infinity, 1 / a1.length); - assertSame(Infinity, 1 / a1.byteLength); - assertSame(Infinity, 1 / a1.byteOffset); -} - -%OptimizeFunctionOnNextCall(Uint8Array); -for (var i = 0; i < 1000; i++) { - TestOptimizedCode(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-448711.js b/implementation-contributed/v8/mjsunit/regress/regress-448711.js deleted file mode 100644 index b7628ab2eb7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-448711.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -function f() { - this.a = { text: "Hello!" }; -} -var v4 = new f(); -var v7 = new f(); -v7.b = {}; -Object.defineProperty(v4, '2', {}); -var v6 = new f(); -v6.a = {}; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-449291.js b/implementation-contributed/v8/mjsunit/regress/regress-449291.js deleted file mode 100644 index fb56027b67f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-449291.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -a = {y:1.5}; -a.y = 1093445778; -b = a.y; -c = {y:{}}; - -function f() { - return {y: b}; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals(f().y, 1093445778); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4493-1.js b/implementation-contributed/v8/mjsunit/regress/regress-4493-1.js deleted file mode 100644 index a24c8b07dce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4493-1.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function baz(x, f) { return x.length; }; - -function bar(x, y) { - if (y) {} - baz(x, function() { return x; }); -}; - -function foo(x) { bar(x, ''); } -%OptimizeFunctionOnNextCall(foo); -foo(['a']); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4495.js b/implementation-contributed/v8/mjsunit/regress/regress-4495.js deleted file mode 100644 index 2af5bc2445c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4495.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo(a, s) { a[s] = 35; } -var x = { bilbo: 3 }; -var y = { frodo: 3, bilbo: 'hi' }; -foo(x, "bilbo"); -foo(x, "bilbo"); -// Without the fix for 4495, this will crash on ia32: -foo(y, "bilbo"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4507.js b/implementation-contributed/v8/mjsunit/regress/regress-4507.js deleted file mode 100644 index a3fe5107be5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4507.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function broken(value) { - return Math.floor(value/65536); -} -function toUnsigned(i) { - return i >>> 0; -} -function outer(i) { - return broken(toUnsigned(i)); -} -for (var i = 0; i < 5; i++) outer(0); -broken(0x80000000); // Spice things up with a sprinkling of type feedback. -%OptimizeFunctionOnNextCall(outer); -assertEquals(32768, outer(0x80000000)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-450895.js b/implementation-contributed/v8/mjsunit/regress/regress-450895.js deleted file mode 100644 index 48aa00d956c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-450895.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v = new Array(); -Object.freeze(v); -v = v.concat(0.5); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4509-Class-constructor-typeerror-realm.js b/implementation-contributed/v8/mjsunit/regress/regress-4509-Class-constructor-typeerror-realm.js deleted file mode 100644 index bc83a11802c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4509-Class-constructor-typeerror-realm.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -var realm = Realm.create(); -var OtherTypeError = Realm.eval(realm, 'TypeError'); - -class Derived extends Object { - constructor() { - return null; - } -} - -assertThrows(() => { new Derived() }, TypeError); - -var OtherDerived = Realm.eval(realm, - "'use strict';" + - "class Derived extends Object {" + - "constructor() {" + - "return null;" + - "}};"); - -// Before throwing the TypeError we have to switch to the caller context. -assertThrows(() => { new OtherDerived() }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-451322.js b/implementation-contributed/v8/mjsunit/regress/regress-451322.js deleted file mode 100644 index b7794f52f06..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-451322.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var foo = 0; - -function bar() { - var baz = 0 - {}; - if (foo > 24) return baz * 0; -} - -bar(); -bar(); -%OptimizeFunctionOnNextCall(bar); -bar(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4515.js b/implementation-contributed/v8/mjsunit/regress/regress-4515.js deleted file mode 100644 index 81610f08a59..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4515.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-filter=f - -function f(array) { - return array.length >>> 0; -} - -var a = new Array(); -a[4000000000] = "A"; - -assertEquals(4000000001, f(a)); -assertEquals(4000000001, f(a)); -%OptimizeFunctionOnNextCall(f); -assertEquals(4000000001, f(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-451958.js b/implementation-contributed/v8/mjsunit/regress/regress-451958.js deleted file mode 100644 index 33695f2b3e2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-451958.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function k() { throw "e"; } -var a = true; -var a = false; -function foo(a) { - var i, j; - if (a) { - for (i = 0; i < 1; j++) ; - for (i = 0; i < 1; k()) ; - for (i = 0; i < 1; i++) ; - } -} -%OptimizeFunctionOnNextCall(foo); -foo(); - -function bar() { -var __v_45; - for (__v_45 = 0; __v_45 < 64; __v_63++) { - } - for (__v_45 = 0; __v_45 < 128; __v_36++) { - } - for (__v_45 = 128; __v_45 < 256; __v_45++) { - } -} -%OptimizeFunctionOnNextCall(bar); -assertThrows(bar); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4521.js b/implementation-contributed/v8/mjsunit/regress/regress-4521.js deleted file mode 100644 index f9bdafcea81..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4521.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; - -class B { - foo() { return 23 } -} - -class C extends B { - bar() { return super[%DeoptimizeFunction(C.prototype.bar), "foo"]() } -} - -assertEquals(23, new C().bar()); -assertEquals(23, new C().bar()); -%OptimizeFunctionOnNextCall(C.prototype.bar); -assertEquals(23, new C().bar()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4525.js b/implementation-contributed/v8/mjsunit/regress/regress-4525.js deleted file mode 100644 index b962dc07ca0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4525.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function receiver() { - return this; -} - -function construct(f) { - "use strict"; - class B {} - class C extends B { - bar() { return super.foo() } - } - B.prototype.foo = f; - return new C(); -} - -function check(x, value, type) { - assertEquals("object", typeof x); - assertInstanceof(x, type); - assertEquals(value, x); -} - -var o = construct(receiver); -check(o.bar.call(123), Object(123), Number); -check(o.bar.call("a"), Object("a"), String); -check(o.bar.call(undefined), this, Object); -check(o.bar.call(null), this, Object); - -%OptimizeFunctionOnNextCall(o.bar); -check(o.bar.call(456), Object(456), Number); -check(o.bar.call("b"), Object("b"), String); -check(o.bar.call(undefined), this, Object); -check(o.bar.call(null), this, Object); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4534.js b/implementation-contributed/v8/mjsunit/regress/regress-4534.js deleted file mode 100644 index 7042958ad2b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4534.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -var dp = Object.defineProperty; -function getter() { return 111; } -function setter(x) { print(222); } -obj1 = {}; -dp(obj1, "golf", { get: getter, configurable: true }); -dp(obj1, "golf", { set: setter, configurable: true }); -gc(); -obj2 = {}; -dp(obj2, "golf", { get: getter, configurable: true }); -dp(obj2, "golf", { set: setter, configurable: true }); -assertTrue(%HaveSameMap(obj1, obj2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-453481.js b/implementation-contributed/v8/mjsunit/regress/regress-453481.js deleted file mode 100644 index 2bc9e464335..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-453481.js +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --always-opt - -var __v_0 = ""; -var __v_1 = {}; -var __v_2 = {}; -var __v_3 = {}; -var __v_4 = {}; -var __v_5 = {}; -var __v_6 = {}; -var __v_7 = {}; -var __v_8 = {}; -var __v_10 = {}; -var __v_13 = {}; -var __v_15 = {}; -var __v_16 = /abc/; -var __v_17 = {}; -var __v_18 = function() {}; -var __v_19 = this; -var __v_20 = {}; -var __v_21 = this; - -function __f_5(s) { - return __f_11(__f_3(__f_7(s), s.length * 8)); -} -function __f_3(x, len) { - var __v_3 = 1732584193; - var __v_6 = -271733879; - var __v_5 = -1732584194; - var __v_7 = 271733892; - - for (var i = 0; i < 1; i++) { - var __v_11 = __v_3; - var __v_14 = __v_6; - var __v_13 = __v_5; - var __v_15 = __v_7; - - __v_3 = __f_10(__v_3, __v_6, __v_5, __v_7, x[__v_8+ 0], 6 , -198630844); - __v_7 = __f_10(__v_7, __v_3, __v_6, __v_5, x[__v_8+ 7], 10, 1126891415); - __v_5 = __f_10(__v_5, __v_7, __v_3, __v_6, x[__v_8+14], 15, -1416354905); - __v_6 = __f_10(__v_6, __v_5, __v_7, __v_3, x[__v_8+ 5], 21, -57434055); - __v_3 = __f_10(__v_3, __v_6, __v_5, __v_7, x[__v_8+12], 6 , 1700485571); - __v_7 = __f_10(__v_7, __v_3, __v_6, __v_5, x[__v_8+ 3], 10, -1894986606); - __v_5 = __f_10(__v_5, __v_7, __v_3, __v_6, x[__v_8+10], 15, -1051523); - __v_6 = __f_10(__v_6, __v_5, __v_7, __v_3, x[__v_8+ 1], 21, -2054922799); - __v_3 = __f_10(__v_3, __v_6, __v_5, __v_7, x[__v_8+ 8], 6 , 1873313359); - __v_7 = __f_10(__v_7, __v_3, __v_6, __v_5, x[__v_8+15], 10, -30611744); - __v_5 = __f_10(__v_5, __v_7, __v_3, __v_6, x[__v_8+ 22], 14, -1560198371); - __v_3 = __f_10(__v_3, __v_6, __v_5, __v_7, x[__v_8+ 4], 6 , -145523070); - __v_7 = __f_10(__v_7, __v_3, __v_6, __v_5, x[__v_8+11], 10, -1120210379); - __v_5 = __f_10(__v_5, __v_7, __v_3, __v_6, x[__v_8+ 2], 15, 718787259); - __v_6 = __f_10(__v_13, __v_5, __v_7, __v_3, x[__v_8+ 9], 21, -343485551); - __v_3 = __f_6(__v_3, __v_11); - __v_6 = __f_6(__v_6, __v_14); - __v_5 = __f_6(__v_5, __v_13); - __v_7 = __f_6(__v_7, __v_15); - - } - - return Array(__v_3, __v_13, __v_4, __v_19); -} -function __f_4(q, __v_3, __v_6, x, s, t) { - return __f_6(__f_12(__f_6(__f_6(__v_3, q), __f_6(x, t)), s),__v_6); -} -function __f_13(__v_3, __v_6, __v_5, __v_7, x, s, t) { - return __f_4((__v_6 & __v_5) | ((~__v_6) & __v_7), __v_3, __v_6, x, s, t); -} -function __f_8(__v_3, __v_6, __v_5, __v_7, x, s, t) { - return __f_4((__v_6 & __v_7) | (__v_5 & (~__v_7)), __v_3, __v_6, x, s, t); -} -function __f_9(__v_3, __v_6, __v_5, __v_7, x, s, t) { - return __f_4(__v_6 ^ __v_5 ^ __v_7, __v_3, __v_6, x, s, t); -} -function __f_10(__v_3, __v_6, __v_5, __v_7, x, s, t) { - return __f_4(__v_5 ^ (__v_6 | (~__v_7)), __v_3, __v_6, x, s, t); -} -function __f_6(x, y) { - var __v_12 = (x & 0xFFFF) + (y & 0xFFFF); - var __v_18 = (x >> 16) + (y >> 16) + (__v_12 >> 16); - return (__v_18 << 16) | (__v_12 & 0xFFFF); -} -function __f_12(num, cnt) { - return (num << cnt) | (num >>> (32 - cnt)); -} -function __f_7(__v_16) { - var __v_4 = Array(); - var __v_9 = (1 << 8) - 1; - for(var __v_8 = 0; __v_8 < __v_16.length * 8; __v_8 += 8) - __v_4[__v_8>>5] |= (__v_16.charCodeAt(__v_8 / 8) & __v_9) << (__v_8%32); - return __v_4; -} - -function __f_11(binarray) { return __v_16; } - -try { -__v_10 = "Rebellious subjects, enemies to peace,\n\ -Profaners of this neighbour-stained steel,--\n\ -Will they not hear? What, ho! you men, you beasts,\n\ -That quench the fire of your pernicious rage\n\ -With purple fountains issuing from your veins,\n\ -On pain of torture, from those bloody hands\n\ -Throw your mistemper'__v_7 weapons to the ground,\n\ -And hear the sentence of your moved prince.\n\ -Three civil brawls, bred of an airy word,\n\ -By thee, old Capulet, and Montague,\n\ -Have thrice disturb'__v_7 the quiet of our streets,\n\ -And made Verona's ancient citizens\n\ -Cast by their grave beseeming ornaments,\n\ -To wield old partisans, in hands as old,\n\ -Canker'__v_7 with peace, to part your canker'__v_7 hate:\n\ -If ever you disturb our streets again,\n\ -Your lives shall pay the forfeit of the peace.\n\ -For this time, all the rest depart away:\n\ -You Capulet; shall go along with me:\n\ -And, Montague, come you this afternoon,\n\ -To know our further pleasure in this case,\n\ -To old Free-town, our common judgment-place.\n\ -Once more, on pain of death, all men depart.\n" - function assertEquals(a, b) { } -for (var __v_8 = 0; __v_8 < 11; ++__v_8) { - assertEquals(__f_5(__v_10), "1b8719c72d5d8bfd06e096ef6c6288c5"); -} - -} catch(e) { print("Caught: " + e); } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-45469.js b/implementation-contributed/v8/mjsunit/regress/regress-45469.js deleted file mode 100644 index 1abe0f9d771..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-45469.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that global regexps capture and fail in the correct cyclic way. - -var re = /x/g; - -for (var i = 0; i < 15; i++) { - assertEquals(i % 3, re.lastIndex, "preindex" + i); - var res = re.exec("xx"); - assertEquals(i % 3 == 2 ? null : ["x"], res, "res" + i); -} - -re = /x/g; - -for (var i = 0; i < 15; i++) { - assertEquals(i % 3, re.lastIndex, "testpreindex" + i); - var res = re.test("xx"); - assertEquals(i % 3 != 2, res, "testres" + i); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-454725.js b/implementation-contributed/v8/mjsunit/regress/regress-454725.js deleted file mode 100644 index a2469d11a0f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-454725.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --expose-gc - -var __v_9 = {}; -var depth = 15; -var current = 0; - -function __f_15(__v_3) { - if ((__v_3 % 50) != 0) { - return __v_3; - } else { - return __v_9 + 0.5; - } -} -function __f_13(a) { - a[100000 - 2] = 1; - for (var __v_3= 0; __v_3 < 70000; ++__v_3 ) { - a[__v_3] = __f_15(__v_3); - } -} -function __f_2(size) { - -} -var tmp; -function __f_18(allocator) { - current++; - if (current == depth) return; - var __v_7 = new allocator(100000); - __f_13(__v_7); - var __v_4 = 6; - for (var __v_3= 0; __v_3 < 70000; __v_3 += 501 ) { - tmp += __v_3; - } - __f_18(Array); - current--; -} - -gc(); -__f_18(__f_2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-455207.js b/implementation-contributed/v8/mjsunit/regress/regress-455207.js deleted file mode 100644 index 88fec4a3b97..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-455207.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -var s = ""; -for (var i = 16; i < 1085; i++) { - s += ("var a" + i + " = " + i + ";"); -} -s += "const x = 10;" + - "assertEquals(10, x); x = 11; assertEquals(11, x)"; -assertThrows(function() { eval(s); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-455212.js b/implementation-contributed/v8/mjsunit/regress/regress-455212.js deleted file mode 100644 index f2fd033c3d0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-455212.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Typeof expression must resolve to 'undefined' when it used on a -// non-existing property. It is *not* allowed to throw a -// ReferenceError. - -// eval("\u0060\u005c") is an unterminated template string (\u0060) -assertThrows("\u0060\u005c", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4577.js b/implementation-contributed/v8/mjsunit/regress/regress-4577.js deleted file mode 100644 index ea46fdd2b0d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4577.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(...arguments) { - return Array.isArray(arguments); -} -assertTrue(f()); - -function g({arguments}) { - return arguments === 42; -} -assertTrue(g({arguments: 42})); - -function foo() { - let arguments = 2; - return arguments; -} -assertEquals(2, foo()); - -assertThrows(function(x = arguments, arguments) {}, ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-457935.js b/implementation-contributed/v8/mjsunit/regress/regress-457935.js deleted file mode 100644 index d34db05de43..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-457935.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function dummy(x) { }; - -function g() { - return g.arguments; -} - -function f(limit) { - var i = 0; - var o = {}; - for (; i < limit; i++) { - o.y = +o.y; - g(); - } -} - -f(1); -f(1); -%OptimizeFunctionOnNextCall(f); -dummy(f(1)); -dummy(f(2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-458876.js b/implementation-contributed/v8/mjsunit/regress/regress-458876.js deleted file mode 100644 index 7df0615d649..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-458876.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function module() { - "use asm"; - function foo() { - do ; while (foo ? 0 : 1) ; - return -1 > 0 ? -1 : 0; - } - return foo; -} - -var foo = module(); -assertEquals(0, foo()); -assertEquals(0, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-458987.js b/implementation-contributed/v8/mjsunit/regress/regress-458987.js deleted file mode 100644 index f7a7edcef4e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-458987.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function () { - "use asm"; - - function g() {} - - runNearStackLimit(g); -})(); - -function runNearStackLimit(f) { - function g() { try { g(); } catch(e) { f(); } }; - g(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4595.js b/implementation-contributed/v8/mjsunit/regress/regress-4595.js deleted file mode 100644 index 53b759ac231..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4595.js +++ /dev/null @@ -1,10008 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Should parse quickly and successfully (and not run out of memory). -var obj = { -foo0: () => {}, -foo1: () => {}, -foo2: () => {}, -foo3: () => {}, -foo4: () => {}, -foo5: () => {}, -foo6: () => {}, -foo7: () => {}, -foo8: () => {}, -foo9: () => {}, -foo10: () => {}, -foo11: () => {}, -foo12: () => {}, -foo13: () => {}, -foo14: () => {}, -foo15: () => {}, -foo16: () => {}, -foo17: () => {}, -foo18: () => {}, -foo19: () => {}, -foo20: () => {}, -foo21: () => {}, -foo22: () => {}, -foo23: () => {}, -foo24: () => {}, -foo25: () => {}, -foo26: () => {}, -foo27: () => {}, -foo28: () => {}, -foo29: () => {}, -foo30: () => {}, -foo31: () => {}, -foo32: () => {}, -foo33: () => {}, -foo34: () => {}, -foo35: () => {}, -foo36: () => {}, -foo37: () => {}, -foo38: () => {}, -foo39: () => {}, -foo40: () => {}, -foo41: () => {}, -foo42: () => {}, -foo43: () => {}, -foo44: () => {}, -foo45: () => {}, -foo46: () => {}, -foo47: () => {}, -foo48: () => {}, -foo49: () => {}, -foo50: () => {}, -foo51: () => {}, -foo52: () => {}, -foo53: () => {}, -foo54: () => {}, -foo55: () => {}, -foo56: () => {}, -foo57: () => {}, -foo58: () => {}, -foo59: () => {}, -foo60: () => {}, -foo61: () => {}, -foo62: () => {}, -foo63: () => {}, -foo64: () => {}, -foo65: () => {}, -foo66: () => {}, -foo67: () => {}, -foo68: () => {}, -foo69: () => {}, -foo70: () => {}, -foo71: () => {}, -foo72: () => {}, -foo73: () => {}, -foo74: () => {}, -foo75: () => {}, -foo76: () => {}, -foo77: () => {}, -foo78: () => {}, -foo79: () => {}, -foo80: () => {}, -foo81: () => {}, -foo82: () => {}, -foo83: () => {}, -foo84: () => {}, -foo85: () => {}, -foo86: () => {}, -foo87: () => {}, -foo88: () => {}, -foo89: () => {}, -foo90: () => {}, -foo91: () => {}, -foo92: () => {}, -foo93: () => {}, -foo94: () => {}, -foo95: () => {}, -foo96: () => {}, -foo97: () => {}, -foo98: () => {}, -foo99: () => {}, -foo100: () => {}, -foo101: () => {}, -foo102: () => {}, -foo103: () => {}, -foo104: () => {}, -foo105: () => {}, -foo106: () => {}, -foo107: () => {}, -foo108: () => {}, -foo109: () => {}, -foo110: () => {}, -foo111: () => {}, -foo112: () => {}, -foo113: () => {}, -foo114: () => {}, -foo115: () => {}, -foo116: () => {}, -foo117: () => {}, -foo118: () => {}, -foo119: () => {}, -foo120: () => {}, -foo121: () => {}, -foo122: () => {}, -foo123: () => {}, -foo124: () => {}, -foo125: () => {}, -foo126: () => {}, -foo127: () => {}, -foo128: () => {}, -foo129: () => {}, -foo130: () => {}, -foo131: () => {}, -foo132: () => {}, -foo133: () => {}, -foo134: () => {}, -foo135: () => {}, -foo136: () => {}, -foo137: () => {}, -foo138: () => {}, -foo139: () => {}, -foo140: () => {}, -foo141: () => {}, -foo142: () => {}, -foo143: () => {}, -foo144: () => {}, -foo145: () => {}, -foo146: () => {}, -foo147: () => {}, -foo148: () => {}, -foo149: () => {}, -foo150: () => {}, -foo151: () => {}, -foo152: () => {}, -foo153: () => {}, -foo154: () => {}, -foo155: () => {}, -foo156: () => {}, -foo157: () => {}, -foo158: () => {}, -foo159: () => {}, -foo160: () => {}, -foo161: () => {}, -foo162: () => {}, -foo163: () => {}, -foo164: () => {}, -foo165: () => {}, -foo166: () => {}, -foo167: () => {}, -foo168: () => {}, -foo169: () => {}, -foo170: () => {}, -foo171: () => {}, -foo172: () => {}, -foo173: () => {}, -foo174: () => {}, -foo175: () => {}, -foo176: () => {}, -foo177: () => {}, -foo178: () => {}, -foo179: () => {}, -foo180: () => {}, -foo181: () => {}, -foo182: () => {}, -foo183: () => {}, -foo184: () => {}, -foo185: () => {}, -foo186: () => {}, -foo187: () => {}, -foo188: () => {}, -foo189: () => {}, -foo190: () => {}, -foo191: () => {}, -foo192: () => {}, -foo193: () => {}, -foo194: () => {}, -foo195: () => {}, -foo196: () => {}, -foo197: () => {}, -foo198: () => {}, -foo199: () => {}, -foo200: () => {}, -foo201: () => {}, -foo202: () => {}, -foo203: () => {}, -foo204: () => {}, -foo205: () => {}, -foo206: () => {}, -foo207: () => {}, -foo208: () => {}, -foo209: () => {}, -foo210: () => {}, -foo211: () => {}, -foo212: () => {}, -foo213: () => {}, -foo214: () => {}, -foo215: () => {}, -foo216: () => {}, -foo217: () => {}, -foo218: () => {}, -foo219: () => {}, -foo220: () => {}, -foo221: () => {}, -foo222: () => {}, -foo223: () => {}, -foo224: () => {}, -foo225: () => {}, -foo226: () => {}, -foo227: () => {}, -foo228: () => {}, -foo229: () => {}, -foo230: () => {}, -foo231: () => {}, -foo232: () => {}, -foo233: () => {}, -foo234: () => {}, -foo235: () => {}, -foo236: () => {}, -foo237: () => {}, -foo238: () => {}, -foo239: () => {}, -foo240: () => {}, -foo241: () => {}, -foo242: () => {}, -foo243: () => {}, -foo244: () => {}, -foo245: () => {}, -foo246: () => {}, -foo247: () => {}, -foo248: () => {}, -foo249: () => {}, -foo250: () => {}, -foo251: () => {}, -foo252: () => {}, -foo253: () => {}, -foo254: () => {}, -foo255: () => {}, -foo256: () => {}, -foo257: () => {}, -foo258: () => {}, -foo259: () => {}, -foo260: () => {}, -foo261: () => {}, -foo262: () => {}, -foo263: () => {}, -foo264: () => {}, -foo265: () => {}, -foo266: () => {}, -foo267: () => {}, -foo268: () => {}, -foo269: () => {}, -foo270: () => {}, -foo271: () => {}, -foo272: () => {}, -foo273: () => {}, -foo274: () => {}, -foo275: () => {}, -foo276: () => {}, -foo277: () => {}, -foo278: () => {}, -foo279: () => {}, -foo280: () => {}, -foo281: () => {}, -foo282: () => {}, -foo283: () => {}, -foo284: () => {}, -foo285: () => {}, -foo286: () => {}, -foo287: () => {}, -foo288: () => {}, -foo289: () => {}, -foo290: () => {}, -foo291: () => {}, -foo292: () => {}, -foo293: () => {}, -foo294: () => {}, -foo295: () => {}, -foo296: () => {}, -foo297: () => {}, -foo298: () => {}, -foo299: () => {}, -foo300: () => {}, -foo301: () => {}, -foo302: () => {}, -foo303: () => {}, -foo304: () => {}, -foo305: () => {}, -foo306: () => {}, -foo307: () => {}, -foo308: () => {}, -foo309: () => {}, -foo310: () => {}, -foo311: () => {}, -foo312: () => {}, -foo313: () => {}, -foo314: () => {}, -foo315: () => {}, -foo316: () => {}, -foo317: () => {}, -foo318: () => {}, -foo319: () => {}, -foo320: () => {}, -foo321: () => {}, -foo322: () => {}, -foo323: () => {}, -foo324: () => {}, -foo325: () => {}, -foo326: () => {}, -foo327: () => {}, -foo328: () => {}, -foo329: () => {}, -foo330: () => {}, -foo331: () => {}, -foo332: () => {}, -foo333: () => {}, -foo334: () => {}, -foo335: () => {}, -foo336: () => {}, -foo337: () => {}, -foo338: () => {}, -foo339: () => {}, -foo340: () => {}, -foo341: () => {}, -foo342: () => {}, -foo343: () => {}, -foo344: () => {}, -foo345: () => {}, -foo346: () => {}, -foo347: () => {}, -foo348: () => {}, -foo349: () => {}, -foo350: () => {}, -foo351: () => {}, -foo352: () => {}, -foo353: () => {}, -foo354: () => {}, -foo355: () => {}, -foo356: () => {}, -foo357: () => {}, -foo358: () => {}, -foo359: () => {}, -foo360: () => {}, -foo361: () => {}, -foo362: () => {}, -foo363: () => {}, -foo364: () => {}, -foo365: () => {}, -foo366: () => {}, -foo367: () => {}, -foo368: () => {}, -foo369: () => {}, -foo370: () => {}, -foo371: () => {}, -foo372: () => {}, -foo373: () => {}, -foo374: () => {}, -foo375: () => {}, -foo376: () => {}, -foo377: () => {}, -foo378: () => {}, -foo379: () => {}, -foo380: () => {}, -foo381: () => {}, -foo382: () => {}, -foo383: () => {}, -foo384: () => {}, -foo385: () => {}, -foo386: () => {}, -foo387: () => {}, -foo388: () => {}, -foo389: () => {}, -foo390: () => {}, -foo391: () => {}, -foo392: () => {}, -foo393: () => {}, -foo394: () => {}, -foo395: () => {}, -foo396: () => {}, -foo397: () => {}, -foo398: () => {}, -foo399: () => {}, -foo400: () => {}, -foo401: () => {}, -foo402: () => {}, -foo403: () => {}, -foo404: () => {}, -foo405: () => {}, -foo406: () => {}, -foo407: () => {}, -foo408: () => {}, -foo409: () => {}, -foo410: () => {}, -foo411: () => {}, -foo412: () => {}, -foo413: () => {}, -foo414: () => {}, -foo415: () => {}, -foo416: () => {}, -foo417: () => {}, -foo418: () => {}, -foo419: () => {}, -foo420: () => {}, -foo421: () => {}, -foo422: () => {}, -foo423: () => {}, -foo424: () => {}, -foo425: () => {}, -foo426: () => {}, -foo427: () => {}, -foo428: () => {}, -foo429: () => {}, -foo430: () => {}, -foo431: () => {}, -foo432: () => {}, -foo433: () => {}, -foo434: () => {}, -foo435: () => {}, -foo436: () => {}, -foo437: () => {}, -foo438: () => {}, -foo439: () => {}, -foo440: () => {}, -foo441: () => {}, -foo442: () => {}, -foo443: () => {}, -foo444: () => {}, -foo445: () => {}, -foo446: () => {}, -foo447: () => {}, -foo448: () => {}, -foo449: () => {}, -foo450: () => {}, -foo451: () => {}, -foo452: () => {}, -foo453: () => {}, -foo454: () => {}, -foo455: () => {}, -foo456: () => {}, -foo457: () => {}, -foo458: () => {}, -foo459: () => {}, -foo460: () => {}, -foo461: () => {}, -foo462: () => {}, -foo463: () => {}, -foo464: () => {}, -foo465: () => {}, -foo466: () => {}, -foo467: () => {}, -foo468: () => {}, -foo469: () => {}, -foo470: () => {}, -foo471: () => {}, -foo472: () => {}, -foo473: () => {}, -foo474: () => {}, -foo475: () => {}, -foo476: () => {}, -foo477: () => {}, -foo478: () => {}, -foo479: () => {}, -foo480: () => {}, -foo481: () => {}, -foo482: () => {}, -foo483: () => {}, -foo484: () => {}, -foo485: () => {}, -foo486: () => {}, -foo487: () => {}, -foo488: () => {}, -foo489: () => {}, -foo490: () => {}, -foo491: () => {}, -foo492: () => {}, -foo493: () => {}, -foo494: () => {}, -foo495: () => {}, -foo496: () => {}, -foo497: () => {}, -foo498: () => {}, -foo499: () => {}, -foo500: () => {}, -foo501: () => {}, -foo502: () => {}, -foo503: () => {}, -foo504: () => {}, -foo505: () => {}, -foo506: () => {}, -foo507: () => {}, -foo508: () => {}, -foo509: () => {}, -foo510: () => {}, -foo511: () => {}, -foo512: () => {}, -foo513: () => {}, -foo514: () => {}, -foo515: () => {}, -foo516: () => {}, -foo517: () => {}, -foo518: () => {}, -foo519: () => {}, -foo520: () => {}, -foo521: () => {}, -foo522: () => {}, -foo523: () => {}, -foo524: () => {}, -foo525: () => {}, -foo526: () => {}, -foo527: () => {}, -foo528: () => {}, -foo529: () => {}, -foo530: () => {}, -foo531: () => {}, -foo532: () => {}, -foo533: () => {}, -foo534: () => {}, -foo535: () => {}, -foo536: () => {}, -foo537: () => {}, -foo538: () => {}, -foo539: () => {}, -foo540: () => {}, -foo541: () => {}, -foo542: () => {}, -foo543: () => {}, -foo544: () => {}, -foo545: () => {}, -foo546: () => {}, -foo547: () => {}, -foo548: () => {}, -foo549: () => {}, -foo550: () => {}, -foo551: () => {}, -foo552: () => {}, -foo553: () => {}, -foo554: () => {}, -foo555: () => {}, -foo556: () => {}, -foo557: () => {}, -foo558: () => {}, -foo559: () => {}, -foo560: () => {}, -foo561: () => {}, -foo562: () => {}, -foo563: () => {}, -foo564: () => {}, -foo565: () => {}, -foo566: () => {}, -foo567: () => {}, -foo568: () => {}, -foo569: () => {}, -foo570: () => {}, -foo571: () => {}, -foo572: () => {}, -foo573: () => {}, -foo574: () => {}, -foo575: () => {}, -foo576: () => {}, -foo577: () => {}, -foo578: () => {}, -foo579: () => {}, -foo580: () => {}, -foo581: () => {}, -foo582: () => {}, -foo583: () => {}, -foo584: () => {}, -foo585: () => {}, -foo586: () => {}, -foo587: () => {}, -foo588: () => {}, -foo589: () => {}, -foo590: () => {}, -foo591: () => {}, -foo592: () => {}, -foo593: () => {}, -foo594: () => {}, -foo595: () => {}, -foo596: () => {}, -foo597: () => {}, -foo598: () => {}, -foo599: () => {}, -foo600: () => {}, -foo601: () => {}, -foo602: () => {}, -foo603: () => {}, -foo604: () => {}, -foo605: () => {}, -foo606: () => {}, -foo607: () => {}, -foo608: () => {}, -foo609: () => {}, -foo610: () => {}, -foo611: () => {}, -foo612: () => {}, -foo613: () => {}, -foo614: () => {}, -foo615: () => {}, -foo616: () => {}, -foo617: () => {}, -foo618: () => {}, -foo619: () => {}, -foo620: () => {}, -foo621: () => {}, -foo622: () => {}, -foo623: () => {}, -foo624: () => {}, -foo625: () => {}, -foo626: () => {}, -foo627: () => {}, -foo628: () => {}, -foo629: () => {}, -foo630: () => {}, -foo631: () => {}, -foo632: () => {}, -foo633: () => {}, -foo634: () => {}, -foo635: () => {}, -foo636: () => {}, -foo637: () => {}, -foo638: () => {}, -foo639: () => {}, -foo640: () => {}, -foo641: () => {}, -foo642: () => {}, -foo643: () => {}, -foo644: () => {}, -foo645: () => {}, -foo646: () => {}, -foo647: () => {}, -foo648: () => {}, -foo649: () => {}, -foo650: () => {}, -foo651: () => {}, -foo652: () => {}, -foo653: () => {}, -foo654: () => {}, -foo655: () => {}, -foo656: () => {}, -foo657: () => {}, -foo658: () => {}, -foo659: () => {}, -foo660: () => {}, -foo661: () => {}, -foo662: () => {}, -foo663: () => {}, -foo664: () => {}, -foo665: () => {}, -foo666: () => {}, -foo667: () => {}, -foo668: () => {}, -foo669: () => {}, -foo670: () => {}, -foo671: () => {}, -foo672: () => {}, -foo673: () => {}, -foo674: () => {}, -foo675: () => {}, -foo676: () => {}, -foo677: () => {}, -foo678: () => {}, -foo679: () => {}, -foo680: () => {}, -foo681: () => {}, -foo682: () => {}, -foo683: () => {}, -foo684: () => {}, -foo685: () => {}, -foo686: () => {}, -foo687: () => {}, -foo688: () => {}, -foo689: () => {}, -foo690: () => {}, -foo691: () => {}, -foo692: () => {}, -foo693: () => {}, -foo694: () => {}, -foo695: () => {}, -foo696: () => {}, -foo697: () => {}, -foo698: () => {}, -foo699: () => {}, -foo700: () => {}, -foo701: () => {}, -foo702: () => {}, -foo703: () => {}, -foo704: () => {}, -foo705: () => {}, -foo706: () => {}, -foo707: () => {}, -foo708: () => {}, -foo709: () => {}, -foo710: () => {}, -foo711: () => {}, -foo712: () => {}, -foo713: () => {}, -foo714: () => {}, -foo715: () => {}, -foo716: () => {}, -foo717: () => {}, -foo718: () => {}, -foo719: () => {}, -foo720: () => {}, -foo721: () => {}, -foo722: () => {}, -foo723: () => {}, -foo724: () => {}, -foo725: () => {}, -foo726: () => {}, -foo727: () => {}, -foo728: () => {}, -foo729: () => {}, -foo730: () => {}, -foo731: () => {}, -foo732: () => {}, -foo733: () => {}, -foo734: () => {}, -foo735: () => {}, -foo736: () => {}, -foo737: () => {}, -foo738: () => {}, -foo739: () => {}, -foo740: () => {}, -foo741: () => {}, -foo742: () => {}, -foo743: () => {}, -foo744: () => {}, -foo745: () => {}, -foo746: () => {}, -foo747: () => {}, -foo748: () => {}, -foo749: () => {}, -foo750: () => {}, -foo751: () => {}, -foo752: () => {}, -foo753: () => {}, -foo754: () => {}, -foo755: () => {}, -foo756: () => {}, -foo757: () => {}, -foo758: () => {}, -foo759: () => {}, -foo760: () => {}, -foo761: () => {}, -foo762: () => {}, -foo763: () => {}, -foo764: () => {}, -foo765: () => {}, -foo766: () => {}, -foo767: () => {}, -foo768: () => {}, -foo769: () => {}, -foo770: () => {}, -foo771: () => {}, -foo772: () => {}, -foo773: () => {}, -foo774: () => {}, -foo775: () => {}, -foo776: () => {}, -foo777: () => {}, -foo778: () => {}, -foo779: () => {}, -foo780: () => {}, -foo781: () => {}, -foo782: () => {}, -foo783: () => {}, -foo784: () => {}, -foo785: () => {}, -foo786: () => {}, -foo787: () => {}, -foo788: () => {}, -foo789: () => {}, -foo790: () => {}, -foo791: () => {}, -foo792: () => {}, -foo793: () => {}, -foo794: () => {}, -foo795: () => {}, -foo796: () => {}, -foo797: () => {}, -foo798: () => {}, -foo799: () => {}, -foo800: () => {}, -foo801: () => {}, -foo802: () => {}, -foo803: () => {}, -foo804: () => {}, -foo805: () => {}, -foo806: () => {}, -foo807: () => {}, -foo808: () => {}, -foo809: () => {}, -foo810: () => {}, -foo811: () => {}, -foo812: () => {}, -foo813: () => {}, -foo814: () => {}, -foo815: () => {}, -foo816: () => {}, -foo817: () => {}, -foo818: () => {}, -foo819: () => {}, -foo820: () => {}, -foo821: () => {}, -foo822: () => {}, -foo823: () => {}, -foo824: () => {}, -foo825: () => {}, -foo826: () => {}, -foo827: () => {}, -foo828: () => {}, -foo829: () => {}, -foo830: () => {}, -foo831: () => {}, -foo832: () => {}, -foo833: () => {}, -foo834: () => {}, -foo835: () => {}, -foo836: () => {}, -foo837: () => {}, -foo838: () => {}, -foo839: () => {}, -foo840: () => {}, -foo841: () => {}, -foo842: () => {}, -foo843: () => {}, -foo844: () => {}, -foo845: () => {}, -foo846: () => {}, -foo847: () => {}, -foo848: () => {}, -foo849: () => {}, -foo850: () => {}, -foo851: () => {}, -foo852: () => {}, -foo853: () => {}, -foo854: () => {}, -foo855: () => {}, -foo856: () => {}, -foo857: () => {}, -foo858: () => {}, -foo859: () => {}, -foo860: () => {}, -foo861: () => {}, -foo862: () => {}, -foo863: () => {}, -foo864: () => {}, -foo865: () => {}, -foo866: () => {}, -foo867: () => {}, -foo868: () => {}, -foo869: () => {}, -foo870: () => {}, -foo871: () => {}, -foo872: () => {}, -foo873: () => {}, -foo874: () => {}, -foo875: () => {}, -foo876: () => {}, -foo877: () => {}, -foo878: () => {}, -foo879: () => {}, -foo880: () => {}, -foo881: () => {}, -foo882: () => {}, -foo883: () => {}, -foo884: () => {}, -foo885: () => {}, -foo886: () => {}, -foo887: () => {}, -foo888: () => {}, -foo889: () => {}, -foo890: () => {}, -foo891: () => {}, -foo892: () => {}, -foo893: () => {}, -foo894: () => {}, -foo895: () => {}, -foo896: () => {}, -foo897: () => {}, -foo898: () => {}, -foo899: () => {}, -foo900: () => {}, -foo901: () => {}, -foo902: () => {}, -foo903: () => {}, -foo904: () => {}, -foo905: () => {}, -foo906: () => {}, -foo907: () => {}, -foo908: () => {}, -foo909: () => {}, -foo910: () => {}, -foo911: () => {}, -foo912: () => {}, -foo913: () => {}, -foo914: () => {}, -foo915: () => {}, -foo916: () => {}, -foo917: () => {}, -foo918: () => {}, -foo919: () => {}, -foo920: () => {}, -foo921: () => {}, -foo922: () => {}, -foo923: () => {}, -foo924: () => {}, -foo925: () => {}, -foo926: () => {}, -foo927: () => {}, -foo928: () => {}, -foo929: () => {}, -foo930: () => {}, -foo931: () => {}, -foo932: () => {}, -foo933: () => {}, -foo934: () => {}, -foo935: () => {}, -foo936: () => {}, -foo937: () => {}, -foo938: () => {}, -foo939: () => {}, -foo940: () => {}, -foo941: () => {}, -foo942: () => {}, -foo943: () => {}, -foo944: () => {}, -foo945: () => {}, -foo946: () => {}, -foo947: () => {}, -foo948: () => {}, -foo949: () => {}, -foo950: () => {}, -foo951: () => {}, -foo952: () => {}, -foo953: () => {}, -foo954: () => {}, -foo955: () => {}, -foo956: () => {}, -foo957: () => {}, -foo958: () => {}, -foo959: () => {}, -foo960: () => {}, -foo961: () => {}, -foo962: () => {}, -foo963: () => {}, -foo964: () => {}, -foo965: () => {}, -foo966: () => {}, -foo967: () => {}, -foo968: () => {}, -foo969: () => {}, -foo970: () => {}, -foo971: () => {}, -foo972: () => {}, -foo973: () => {}, -foo974: () => {}, -foo975: () => {}, -foo976: () => {}, -foo977: () => {}, -foo978: () => {}, -foo979: () => {}, -foo980: () => {}, -foo981: () => {}, -foo982: () => {}, -foo983: () => {}, -foo984: () => {}, -foo985: () => {}, -foo986: () => {}, -foo987: () => {}, -foo988: () => {}, -foo989: () => {}, -foo990: () => {}, -foo991: () => {}, -foo992: () => {}, -foo993: () => {}, -foo994: () => {}, -foo995: () => {}, -foo996: () => {}, -foo997: () => {}, -foo998: () => {}, -foo999: () => {}, -foo1000: () => {}, -foo1001: () => {}, -foo1002: () => {}, -foo1003: () => {}, -foo1004: () => {}, -foo1005: () => {}, -foo1006: () => {}, -foo1007: () => {}, -foo1008: () => {}, -foo1009: () => {}, -foo1010: () => {}, -foo1011: () => {}, -foo1012: () => {}, -foo1013: () => {}, -foo1014: () => {}, -foo1015: () => {}, -foo1016: () => {}, -foo1017: () => {}, -foo1018: () => {}, -foo1019: () => {}, -foo1020: () => {}, -foo1021: () => {}, -foo1022: () => {}, -foo1023: () => {}, -foo1024: () => {}, -foo1025: () => {}, -foo1026: () => {}, -foo1027: () => {}, -foo1028: () => {}, -foo1029: () => {}, -foo1030: () => {}, -foo1031: () => {}, -foo1032: () => {}, -foo1033: () => {}, -foo1034: () => {}, -foo1035: () => {}, -foo1036: () => {}, -foo1037: () => {}, -foo1038: () => {}, -foo1039: () => {}, -foo1040: () => {}, -foo1041: () => {}, -foo1042: () => {}, -foo1043: () => {}, -foo1044: () => {}, -foo1045: () => {}, -foo1046: () => {}, -foo1047: () => {}, -foo1048: () => {}, -foo1049: () => {}, -foo1050: () => {}, -foo1051: () => {}, -foo1052: () => {}, -foo1053: () => {}, -foo1054: () => {}, -foo1055: () => {}, -foo1056: () => {}, -foo1057: () => {}, -foo1058: () => {}, -foo1059: () => {}, -foo1060: () => {}, -foo1061: () => {}, -foo1062: () => {}, -foo1063: () => {}, -foo1064: () => {}, -foo1065: () => {}, -foo1066: () => {}, -foo1067: () => {}, -foo1068: () => {}, -foo1069: () => {}, -foo1070: () => {}, -foo1071: () => {}, -foo1072: () => {}, -foo1073: () => {}, -foo1074: () => {}, -foo1075: () => {}, -foo1076: () => {}, -foo1077: () => {}, -foo1078: () => {}, -foo1079: () => {}, -foo1080: () => {}, -foo1081: () => {}, -foo1082: () => {}, -foo1083: () => {}, -foo1084: () => {}, -foo1085: () => {}, -foo1086: () => {}, -foo1087: () => {}, -foo1088: () => {}, -foo1089: () => {}, -foo1090: () => {}, -foo1091: () => {}, -foo1092: () => {}, -foo1093: () => {}, -foo1094: () => {}, -foo1095: () => {}, -foo1096: () => {}, -foo1097: () => {}, -foo1098: () => {}, -foo1099: () => {}, -foo1100: () => {}, -foo1101: () => {}, -foo1102: () => {}, -foo1103: () => {}, -foo1104: () => {}, -foo1105: () => {}, -foo1106: () => {}, -foo1107: () => {}, -foo1108: () => {}, -foo1109: () => {}, -foo1110: () => {}, -foo1111: () => {}, -foo1112: () => {}, -foo1113: () => {}, -foo1114: () => {}, -foo1115: () => {}, -foo1116: () => {}, -foo1117: () => {}, -foo1118: () => {}, -foo1119: () => {}, -foo1120: () => {}, -foo1121: () => {}, -foo1122: () => {}, -foo1123: () => {}, -foo1124: () => {}, -foo1125: () => {}, -foo1126: () => {}, -foo1127: () => {}, -foo1128: () => {}, -foo1129: () => {}, -foo1130: () => {}, -foo1131: () => {}, -foo1132: () => {}, -foo1133: () => {}, -foo1134: () => {}, -foo1135: () => {}, -foo1136: () => {}, -foo1137: () => {}, -foo1138: () => {}, -foo1139: () => {}, -foo1140: () => {}, -foo1141: () => {}, -foo1142: () => {}, -foo1143: () => {}, -foo1144: () => {}, -foo1145: () => {}, -foo1146: () => {}, -foo1147: () => {}, -foo1148: () => {}, -foo1149: () => {}, -foo1150: () => {}, -foo1151: () => {}, -foo1152: () => {}, -foo1153: () => {}, -foo1154: () => {}, -foo1155: () => {}, -foo1156: () => {}, -foo1157: () => {}, -foo1158: () => {}, -foo1159: () => {}, -foo1160: () => {}, -foo1161: () => {}, -foo1162: () => {}, -foo1163: () => {}, -foo1164: () => {}, -foo1165: () => {}, -foo1166: () => {}, -foo1167: () => {}, -foo1168: () => {}, -foo1169: () => {}, -foo1170: () => {}, -foo1171: () => {}, -foo1172: () => {}, -foo1173: () => {}, -foo1174: () => {}, -foo1175: () => {}, -foo1176: () => {}, -foo1177: () => {}, -foo1178: () => {}, -foo1179: () => {}, -foo1180: () => {}, -foo1181: () => {}, -foo1182: () => {}, -foo1183: () => {}, -foo1184: () => {}, -foo1185: () => {}, -foo1186: () => {}, -foo1187: () => {}, -foo1188: () => {}, -foo1189: () => {}, -foo1190: () => {}, -foo1191: () => {}, -foo1192: () => {}, -foo1193: () => {}, -foo1194: () => {}, -foo1195: () => {}, -foo1196: () => {}, -foo1197: () => {}, -foo1198: () => {}, -foo1199: () => {}, -foo1200: () => {}, -foo1201: () => {}, -foo1202: () => {}, -foo1203: () => {}, -foo1204: () => {}, -foo1205: () => {}, -foo1206: () => {}, -foo1207: () => {}, -foo1208: () => {}, -foo1209: () => {}, -foo1210: () => {}, -foo1211: () => {}, -foo1212: () => {}, -foo1213: () => {}, -foo1214: () => {}, -foo1215: () => {}, -foo1216: () => {}, -foo1217: () => {}, -foo1218: () => {}, -foo1219: () => {}, -foo1220: () => {}, -foo1221: () => {}, -foo1222: () => {}, -foo1223: () => {}, -foo1224: () => {}, -foo1225: () => {}, -foo1226: () => {}, -foo1227: () => {}, -foo1228: () => {}, -foo1229: () => {}, -foo1230: () => {}, -foo1231: () => {}, -foo1232: () => {}, -foo1233: () => {}, -foo1234: () => {}, -foo1235: () => {}, -foo1236: () => {}, -foo1237: () => {}, -foo1238: () => {}, -foo1239: () => {}, -foo1240: () => {}, -foo1241: () => {}, -foo1242: () => {}, -foo1243: () => {}, -foo1244: () => {}, -foo1245: () => {}, -foo1246: () => {}, -foo1247: () => {}, -foo1248: () => {}, -foo1249: () => {}, -foo1250: () => {}, -foo1251: () => {}, -foo1252: () => {}, -foo1253: () => {}, -foo1254: () => {}, -foo1255: () => {}, -foo1256: () => {}, -foo1257: () => {}, -foo1258: () => {}, -foo1259: () => {}, -foo1260: () => {}, -foo1261: () => {}, -foo1262: () => {}, -foo1263: () => {}, -foo1264: () => {}, -foo1265: () => {}, -foo1266: () => {}, -foo1267: () => {}, -foo1268: () => {}, -foo1269: () => {}, -foo1270: () => {}, -foo1271: () => {}, -foo1272: () => {}, -foo1273: () => {}, -foo1274: () => {}, -foo1275: () => {}, -foo1276: () => {}, -foo1277: () => {}, -foo1278: () => {}, -foo1279: () => {}, -foo1280: () => {}, -foo1281: () => {}, -foo1282: () => {}, -foo1283: () => {}, -foo1284: () => {}, -foo1285: () => {}, -foo1286: () => {}, -foo1287: () => {}, -foo1288: () => {}, -foo1289: () => {}, -foo1290: () => {}, -foo1291: () => {}, -foo1292: () => {}, -foo1293: () => {}, -foo1294: () => {}, -foo1295: () => {}, -foo1296: () => {}, -foo1297: () => {}, -foo1298: () => {}, -foo1299: () => {}, -foo1300: () => {}, -foo1301: () => {}, -foo1302: () => {}, -foo1303: () => {}, -foo1304: () => {}, -foo1305: () => {}, -foo1306: () => {}, -foo1307: () => {}, -foo1308: () => {}, -foo1309: () => {}, -foo1310: () => {}, -foo1311: () => {}, -foo1312: () => {}, -foo1313: () => {}, -foo1314: () => {}, -foo1315: () => {}, -foo1316: () => {}, -foo1317: () => {}, -foo1318: () => {}, -foo1319: () => {}, -foo1320: () => {}, -foo1321: () => {}, -foo1322: () => {}, -foo1323: () => {}, -foo1324: () => {}, -foo1325: () => {}, -foo1326: () => {}, -foo1327: () => {}, -foo1328: () => {}, -foo1329: () => {}, -foo1330: () => {}, -foo1331: () => {}, -foo1332: () => {}, -foo1333: () => {}, -foo1334: () => {}, -foo1335: () => {}, -foo1336: () => {}, -foo1337: () => {}, -foo1338: () => {}, -foo1339: () => {}, -foo1340: () => {}, -foo1341: () => {}, -foo1342: () => {}, -foo1343: () => {}, -foo1344: () => {}, -foo1345: () => {}, -foo1346: () => {}, -foo1347: () => {}, -foo1348: () => {}, -foo1349: () => {}, -foo1350: () => {}, -foo1351: () => {}, -foo1352: () => {}, -foo1353: () => {}, -foo1354: () => {}, -foo1355: () => {}, -foo1356: () => {}, -foo1357: () => {}, -foo1358: () => {}, -foo1359: () => {}, -foo1360: () => {}, -foo1361: () => {}, -foo1362: () => {}, -foo1363: () => {}, -foo1364: () => {}, -foo1365: () => {}, -foo1366: () => {}, -foo1367: () => {}, -foo1368: () => {}, -foo1369: () => {}, -foo1370: () => {}, -foo1371: () => {}, -foo1372: () => {}, -foo1373: () => {}, -foo1374: () => {}, -foo1375: () => {}, -foo1376: () => {}, -foo1377: () => {}, -foo1378: () => {}, -foo1379: () => {}, -foo1380: () => {}, -foo1381: () => {}, -foo1382: () => {}, -foo1383: () => {}, -foo1384: () => {}, -foo1385: () => {}, -foo1386: () => {}, -foo1387: () => {}, -foo1388: () => {}, -foo1389: () => {}, -foo1390: () => {}, -foo1391: () => {}, -foo1392: () => {}, -foo1393: () => {}, -foo1394: () => {}, -foo1395: () => {}, -foo1396: () => {}, -foo1397: () => {}, -foo1398: () => {}, -foo1399: () => {}, -foo1400: () => {}, -foo1401: () => {}, -foo1402: () => {}, -foo1403: () => {}, -foo1404: () => {}, -foo1405: () => {}, -foo1406: () => {}, -foo1407: () => {}, -foo1408: () => {}, -foo1409: () => {}, -foo1410: () => {}, -foo1411: () => {}, -foo1412: () => {}, -foo1413: () => {}, -foo1414: () => {}, -foo1415: () => {}, -foo1416: () => {}, -foo1417: () => {}, -foo1418: () => {}, -foo1419: () => {}, -foo1420: () => {}, -foo1421: () => {}, -foo1422: () => {}, -foo1423: () => {}, -foo1424: () => {}, -foo1425: () => {}, -foo1426: () => {}, -foo1427: () => {}, -foo1428: () => {}, -foo1429: () => {}, -foo1430: () => {}, -foo1431: () => {}, -foo1432: () => {}, -foo1433: () => {}, -foo1434: () => {}, -foo1435: () => {}, -foo1436: () => {}, -foo1437: () => {}, -foo1438: () => {}, -foo1439: () => {}, -foo1440: () => {}, -foo1441: () => {}, -foo1442: () => {}, -foo1443: () => {}, -foo1444: () => {}, -foo1445: () => {}, -foo1446: () => {}, -foo1447: () => {}, -foo1448: () => {}, -foo1449: () => {}, -foo1450: () => {}, -foo1451: () => {}, -foo1452: () => {}, -foo1453: () => {}, -foo1454: () => {}, -foo1455: () => {}, -foo1456: () => {}, -foo1457: () => {}, -foo1458: () => {}, -foo1459: () => {}, -foo1460: () => {}, -foo1461: () => {}, -foo1462: () => {}, -foo1463: () => {}, -foo1464: () => {}, -foo1465: () => {}, -foo1466: () => {}, -foo1467: () => {}, -foo1468: () => {}, -foo1469: () => {}, -foo1470: () => {}, -foo1471: () => {}, -foo1472: () => {}, -foo1473: () => {}, -foo1474: () => {}, -foo1475: () => {}, -foo1476: () => {}, -foo1477: () => {}, -foo1478: () => {}, -foo1479: () => {}, -foo1480: () => {}, -foo1481: () => {}, -foo1482: () => {}, -foo1483: () => {}, -foo1484: () => {}, -foo1485: () => {}, -foo1486: () => {}, -foo1487: () => {}, -foo1488: () => {}, -foo1489: () => {}, -foo1490: () => {}, -foo1491: () => {}, -foo1492: () => {}, -foo1493: () => {}, -foo1494: () => {}, -foo1495: () => {}, -foo1496: () => {}, -foo1497: () => {}, -foo1498: () => {}, -foo1499: () => {}, -foo1500: () => {}, -foo1501: () => {}, -foo1502: () => {}, -foo1503: () => {}, -foo1504: () => {}, -foo1505: () => {}, -foo1506: () => {}, -foo1507: () => {}, -foo1508: () => {}, -foo1509: () => {}, -foo1510: () => {}, -foo1511: () => {}, -foo1512: () => {}, -foo1513: () => {}, -foo1514: () => {}, -foo1515: () => {}, -foo1516: () => {}, -foo1517: () => {}, -foo1518: () => {}, -foo1519: () => {}, -foo1520: () => {}, -foo1521: () => {}, -foo1522: () => {}, -foo1523: () => {}, -foo1524: () => {}, -foo1525: () => {}, -foo1526: () => {}, -foo1527: () => {}, -foo1528: () => {}, -foo1529: () => {}, -foo1530: () => {}, -foo1531: () => {}, -foo1532: () => {}, -foo1533: () => {}, -foo1534: () => {}, -foo1535: () => {}, -foo1536: () => {}, -foo1537: () => {}, -foo1538: () => {}, -foo1539: () => {}, -foo1540: () => {}, -foo1541: () => {}, -foo1542: () => {}, -foo1543: () => {}, -foo1544: () => {}, -foo1545: () => {}, -foo1546: () => {}, -foo1547: () => {}, -foo1548: () => {}, -foo1549: () => {}, -foo1550: () => {}, -foo1551: () => {}, -foo1552: () => {}, -foo1553: () => {}, -foo1554: () => {}, -foo1555: () => {}, -foo1556: () => {}, -foo1557: () => {}, -foo1558: () => {}, -foo1559: () => {}, -foo1560: () => {}, -foo1561: () => {}, -foo1562: () => {}, -foo1563: () => {}, -foo1564: () => {}, -foo1565: () => {}, -foo1566: () => {}, -foo1567: () => {}, -foo1568: () => {}, -foo1569: () => {}, -foo1570: () => {}, -foo1571: () => {}, -foo1572: () => {}, -foo1573: () => {}, -foo1574: () => {}, -foo1575: () => {}, -foo1576: () => {}, -foo1577: () => {}, -foo1578: () => {}, -foo1579: () => {}, -foo1580: () => {}, -foo1581: () => {}, -foo1582: () => {}, -foo1583: () => {}, -foo1584: () => {}, -foo1585: () => {}, -foo1586: () => {}, -foo1587: () => {}, -foo1588: () => {}, -foo1589: () => {}, -foo1590: () => {}, -foo1591: () => {}, -foo1592: () => {}, -foo1593: () => {}, -foo1594: () => {}, -foo1595: () => {}, -foo1596: () => {}, -foo1597: () => {}, -foo1598: () => {}, -foo1599: () => {}, -foo1600: () => {}, -foo1601: () => {}, -foo1602: () => {}, -foo1603: () => {}, -foo1604: () => {}, -foo1605: () => {}, -foo1606: () => {}, -foo1607: () => {}, -foo1608: () => {}, -foo1609: () => {}, -foo1610: () => {}, -foo1611: () => {}, -foo1612: () => {}, -foo1613: () => {}, -foo1614: () => {}, -foo1615: () => {}, -foo1616: () => {}, -foo1617: () => {}, -foo1618: () => {}, -foo1619: () => {}, -foo1620: () => {}, -foo1621: () => {}, -foo1622: () => {}, -foo1623: () => {}, -foo1624: () => {}, -foo1625: () => {}, -foo1626: () => {}, -foo1627: () => {}, -foo1628: () => {}, -foo1629: () => {}, -foo1630: () => {}, -foo1631: () => {}, -foo1632: () => {}, -foo1633: () => {}, -foo1634: () => {}, -foo1635: () => {}, -foo1636: () => {}, -foo1637: () => {}, -foo1638: () => {}, -foo1639: () => {}, -foo1640: () => {}, -foo1641: () => {}, -foo1642: () => {}, -foo1643: () => {}, -foo1644: () => {}, -foo1645: () => {}, -foo1646: () => {}, -foo1647: () => {}, -foo1648: () => {}, -foo1649: () => {}, -foo1650: () => {}, -foo1651: () => {}, -foo1652: () => {}, -foo1653: () => {}, -foo1654: () => {}, -foo1655: () => {}, -foo1656: () => {}, -foo1657: () => {}, -foo1658: () => {}, -foo1659: () => {}, -foo1660: () => {}, -foo1661: () => {}, -foo1662: () => {}, -foo1663: () => {}, -foo1664: () => {}, -foo1665: () => {}, -foo1666: () => {}, -foo1667: () => {}, -foo1668: () => {}, -foo1669: () => {}, -foo1670: () => {}, -foo1671: () => {}, -foo1672: () => {}, -foo1673: () => {}, -foo1674: () => {}, -foo1675: () => {}, -foo1676: () => {}, -foo1677: () => {}, -foo1678: () => {}, -foo1679: () => {}, -foo1680: () => {}, -foo1681: () => {}, -foo1682: () => {}, -foo1683: () => {}, -foo1684: () => {}, -foo1685: () => {}, -foo1686: () => {}, -foo1687: () => {}, -foo1688: () => {}, -foo1689: () => {}, -foo1690: () => {}, -foo1691: () => {}, -foo1692: () => {}, -foo1693: () => {}, -foo1694: () => {}, -foo1695: () => {}, -foo1696: () => {}, -foo1697: () => {}, -foo1698: () => {}, -foo1699: () => {}, -foo1700: () => {}, -foo1701: () => {}, -foo1702: () => {}, -foo1703: () => {}, -foo1704: () => {}, -foo1705: () => {}, -foo1706: () => {}, -foo1707: () => {}, -foo1708: () => {}, -foo1709: () => {}, -foo1710: () => {}, -foo1711: () => {}, -foo1712: () => {}, -foo1713: () => {}, -foo1714: () => {}, -foo1715: () => {}, -foo1716: () => {}, -foo1717: () => {}, -foo1718: () => {}, -foo1719: () => {}, -foo1720: () => {}, -foo1721: () => {}, -foo1722: () => {}, -foo1723: () => {}, -foo1724: () => {}, -foo1725: () => {}, -foo1726: () => {}, -foo1727: () => {}, -foo1728: () => {}, -foo1729: () => {}, -foo1730: () => {}, -foo1731: () => {}, -foo1732: () => {}, -foo1733: () => {}, -foo1734: () => {}, -foo1735: () => {}, -foo1736: () => {}, -foo1737: () => {}, -foo1738: () => {}, -foo1739: () => {}, -foo1740: () => {}, -foo1741: () => {}, -foo1742: () => {}, -foo1743: () => {}, -foo1744: () => {}, -foo1745: () => {}, -foo1746: () => {}, -foo1747: () => {}, -foo1748: () => {}, -foo1749: () => {}, -foo1750: () => {}, -foo1751: () => {}, -foo1752: () => {}, -foo1753: () => {}, -foo1754: () => {}, -foo1755: () => {}, -foo1756: () => {}, -foo1757: () => {}, -foo1758: () => {}, -foo1759: () => {}, -foo1760: () => {}, -foo1761: () => {}, -foo1762: () => {}, -foo1763: () => {}, -foo1764: () => {}, -foo1765: () => {}, -foo1766: () => {}, -foo1767: () => {}, -foo1768: () => {}, -foo1769: () => {}, -foo1770: () => {}, -foo1771: () => {}, -foo1772: () => {}, -foo1773: () => {}, -foo1774: () => {}, -foo1775: () => {}, -foo1776: () => {}, -foo1777: () => {}, -foo1778: () => {}, -foo1779: () => {}, -foo1780: () => {}, -foo1781: () => {}, -foo1782: () => {}, -foo1783: () => {}, -foo1784: () => {}, -foo1785: () => {}, -foo1786: () => {}, -foo1787: () => {}, -foo1788: () => {}, -foo1789: () => {}, -foo1790: () => {}, -foo1791: () => {}, -foo1792: () => {}, -foo1793: () => {}, -foo1794: () => {}, -foo1795: () => {}, -foo1796: () => {}, -foo1797: () => {}, -foo1798: () => {}, -foo1799: () => {}, -foo1800: () => {}, -foo1801: () => {}, -foo1802: () => {}, -foo1803: () => {}, -foo1804: () => {}, -foo1805: () => {}, -foo1806: () => {}, -foo1807: () => {}, -foo1808: () => {}, -foo1809: () => {}, -foo1810: () => {}, -foo1811: () => {}, -foo1812: () => {}, -foo1813: () => {}, -foo1814: () => {}, -foo1815: () => {}, -foo1816: () => {}, -foo1817: () => {}, -foo1818: () => {}, -foo1819: () => {}, -foo1820: () => {}, -foo1821: () => {}, -foo1822: () => {}, -foo1823: () => {}, -foo1824: () => {}, -foo1825: () => {}, -foo1826: () => {}, -foo1827: () => {}, -foo1828: () => {}, -foo1829: () => {}, -foo1830: () => {}, -foo1831: () => {}, -foo1832: () => {}, -foo1833: () => {}, -foo1834: () => {}, -foo1835: () => {}, -foo1836: () => {}, -foo1837: () => {}, -foo1838: () => {}, -foo1839: () => {}, -foo1840: () => {}, -foo1841: () => {}, -foo1842: () => {}, -foo1843: () => {}, -foo1844: () => {}, -foo1845: () => {}, -foo1846: () => {}, -foo1847: () => {}, -foo1848: () => {}, -foo1849: () => {}, -foo1850: () => {}, -foo1851: () => {}, -foo1852: () => {}, -foo1853: () => {}, -foo1854: () => {}, -foo1855: () => {}, -foo1856: () => {}, -foo1857: () => {}, -foo1858: () => {}, -foo1859: () => {}, -foo1860: () => {}, -foo1861: () => {}, -foo1862: () => {}, -foo1863: () => {}, -foo1864: () => {}, -foo1865: () => {}, -foo1866: () => {}, -foo1867: () => {}, -foo1868: () => {}, -foo1869: () => {}, -foo1870: () => {}, -foo1871: () => {}, -foo1872: () => {}, -foo1873: () => {}, -foo1874: () => {}, -foo1875: () => {}, -foo1876: () => {}, -foo1877: () => {}, -foo1878: () => {}, -foo1879: () => {}, -foo1880: () => {}, -foo1881: () => {}, -foo1882: () => {}, -foo1883: () => {}, -foo1884: () => {}, -foo1885: () => {}, -foo1886: () => {}, -foo1887: () => {}, -foo1888: () => {}, -foo1889: () => {}, -foo1890: () => {}, -foo1891: () => {}, -foo1892: () => {}, -foo1893: () => {}, -foo1894: () => {}, -foo1895: () => {}, -foo1896: () => {}, -foo1897: () => {}, -foo1898: () => {}, -foo1899: () => {}, -foo1900: () => {}, -foo1901: () => {}, -foo1902: () => {}, -foo1903: () => {}, -foo1904: () => {}, -foo1905: () => {}, -foo1906: () => {}, -foo1907: () => {}, -foo1908: () => {}, -foo1909: () => {}, -foo1910: () => {}, -foo1911: () => {}, -foo1912: () => {}, -foo1913: () => {}, -foo1914: () => {}, -foo1915: () => {}, -foo1916: () => {}, -foo1917: () => {}, -foo1918: () => {}, -foo1919: () => {}, -foo1920: () => {}, -foo1921: () => {}, -foo1922: () => {}, -foo1923: () => {}, -foo1924: () => {}, -foo1925: () => {}, -foo1926: () => {}, -foo1927: () => {}, -foo1928: () => {}, -foo1929: () => {}, -foo1930: () => {}, -foo1931: () => {}, -foo1932: () => {}, -foo1933: () => {}, -foo1934: () => {}, -foo1935: () => {}, -foo1936: () => {}, -foo1937: () => {}, -foo1938: () => {}, -foo1939: () => {}, -foo1940: () => {}, -foo1941: () => {}, -foo1942: () => {}, -foo1943: () => {}, -foo1944: () => {}, -foo1945: () => {}, -foo1946: () => {}, -foo1947: () => {}, -foo1948: () => {}, -foo1949: () => {}, -foo1950: () => {}, -foo1951: () => {}, -foo1952: () => {}, -foo1953: () => {}, -foo1954: () => {}, -foo1955: () => {}, -foo1956: () => {}, -foo1957: () => {}, -foo1958: () => {}, -foo1959: () => {}, -foo1960: () => {}, -foo1961: () => {}, -foo1962: () => {}, -foo1963: () => {}, -foo1964: () => {}, -foo1965: () => {}, -foo1966: () => {}, -foo1967: () => {}, -foo1968: () => {}, -foo1969: () => {}, -foo1970: () => {}, -foo1971: () => {}, -foo1972: () => {}, -foo1973: () => {}, -foo1974: () => {}, -foo1975: () => {}, -foo1976: () => {}, -foo1977: () => {}, -foo1978: () => {}, -foo1979: () => {}, -foo1980: () => {}, -foo1981: () => {}, -foo1982: () => {}, -foo1983: () => {}, -foo1984: () => {}, -foo1985: () => {}, -foo1986: () => {}, -foo1987: () => {}, -foo1988: () => {}, -foo1989: () => {}, -foo1990: () => {}, -foo1991: () => {}, -foo1992: () => {}, -foo1993: () => {}, -foo1994: () => {}, -foo1995: () => {}, -foo1996: () => {}, -foo1997: () => {}, -foo1998: () => {}, -foo1999: () => {}, -foo2000: () => {}, -foo2001: () => {}, -foo2002: () => {}, -foo2003: () => {}, -foo2004: () => {}, -foo2005: () => {}, -foo2006: () => {}, -foo2007: () => {}, -foo2008: () => {}, -foo2009: () => {}, -foo2010: () => {}, -foo2011: () => {}, -foo2012: () => {}, -foo2013: () => {}, -foo2014: () => {}, -foo2015: () => {}, -foo2016: () => {}, -foo2017: () => {}, -foo2018: () => {}, -foo2019: () => {}, -foo2020: () => {}, -foo2021: () => {}, -foo2022: () => {}, -foo2023: () => {}, -foo2024: () => {}, -foo2025: () => {}, -foo2026: () => {}, -foo2027: () => {}, -foo2028: () => {}, -foo2029: () => {}, -foo2030: () => {}, -foo2031: () => {}, -foo2032: () => {}, -foo2033: () => {}, -foo2034: () => {}, -foo2035: () => {}, -foo2036: () => {}, -foo2037: () => {}, -foo2038: () => {}, -foo2039: () => {}, -foo2040: () => {}, -foo2041: () => {}, -foo2042: () => {}, -foo2043: () => {}, -foo2044: () => {}, -foo2045: () => {}, -foo2046: () => {}, -foo2047: () => {}, -foo2048: () => {}, -foo2049: () => {}, -foo2050: () => {}, -foo2051: () => {}, -foo2052: () => {}, -foo2053: () => {}, -foo2054: () => {}, -foo2055: () => {}, -foo2056: () => {}, -foo2057: () => {}, -foo2058: () => {}, -foo2059: () => {}, -foo2060: () => {}, -foo2061: () => {}, -foo2062: () => {}, -foo2063: () => {}, -foo2064: () => {}, -foo2065: () => {}, -foo2066: () => {}, -foo2067: () => {}, -foo2068: () => {}, -foo2069: () => {}, -foo2070: () => {}, -foo2071: () => {}, -foo2072: () => {}, -foo2073: () => {}, -foo2074: () => {}, -foo2075: () => {}, -foo2076: () => {}, -foo2077: () => {}, -foo2078: () => {}, -foo2079: () => {}, -foo2080: () => {}, -foo2081: () => {}, -foo2082: () => {}, -foo2083: () => {}, -foo2084: () => {}, -foo2085: () => {}, -foo2086: () => {}, -foo2087: () => {}, -foo2088: () => {}, -foo2089: () => {}, -foo2090: () => {}, -foo2091: () => {}, -foo2092: () => {}, -foo2093: () => {}, -foo2094: () => {}, -foo2095: () => {}, -foo2096: () => {}, -foo2097: () => {}, -foo2098: () => {}, -foo2099: () => {}, -foo2100: () => {}, -foo2101: () => {}, -foo2102: () => {}, -foo2103: () => {}, -foo2104: () => {}, -foo2105: () => {}, -foo2106: () => {}, -foo2107: () => {}, -foo2108: () => {}, -foo2109: () => {}, -foo2110: () => {}, -foo2111: () => {}, -foo2112: () => {}, -foo2113: () => {}, -foo2114: () => {}, -foo2115: () => {}, -foo2116: () => {}, -foo2117: () => {}, -foo2118: () => {}, -foo2119: () => {}, -foo2120: () => {}, -foo2121: () => {}, -foo2122: () => {}, -foo2123: () => {}, -foo2124: () => {}, -foo2125: () => {}, -foo2126: () => {}, -foo2127: () => {}, -foo2128: () => {}, -foo2129: () => {}, -foo2130: () => {}, -foo2131: () => {}, -foo2132: () => {}, -foo2133: () => {}, -foo2134: () => {}, -foo2135: () => {}, -foo2136: () => {}, -foo2137: () => {}, -foo2138: () => {}, -foo2139: () => {}, -foo2140: () => {}, -foo2141: () => {}, -foo2142: () => {}, -foo2143: () => {}, -foo2144: () => {}, -foo2145: () => {}, -foo2146: () => {}, -foo2147: () => {}, -foo2148: () => {}, -foo2149: () => {}, -foo2150: () => {}, -foo2151: () => {}, -foo2152: () => {}, -foo2153: () => {}, -foo2154: () => {}, -foo2155: () => {}, -foo2156: () => {}, -foo2157: () => {}, -foo2158: () => {}, -foo2159: () => {}, -foo2160: () => {}, -foo2161: () => {}, -foo2162: () => {}, -foo2163: () => {}, -foo2164: () => {}, -foo2165: () => {}, -foo2166: () => {}, -foo2167: () => {}, -foo2168: () => {}, -foo2169: () => {}, -foo2170: () => {}, -foo2171: () => {}, -foo2172: () => {}, -foo2173: () => {}, -foo2174: () => {}, -foo2175: () => {}, -foo2176: () => {}, -foo2177: () => {}, -foo2178: () => {}, -foo2179: () => {}, -foo2180: () => {}, -foo2181: () => {}, -foo2182: () => {}, -foo2183: () => {}, -foo2184: () => {}, -foo2185: () => {}, -foo2186: () => {}, -foo2187: () => {}, -foo2188: () => {}, -foo2189: () => {}, -foo2190: () => {}, -foo2191: () => {}, -foo2192: () => {}, -foo2193: () => {}, -foo2194: () => {}, -foo2195: () => {}, -foo2196: () => {}, -foo2197: () => {}, -foo2198: () => {}, -foo2199: () => {}, -foo2200: () => {}, -foo2201: () => {}, -foo2202: () => {}, -foo2203: () => {}, -foo2204: () => {}, -foo2205: () => {}, -foo2206: () => {}, -foo2207: () => {}, -foo2208: () => {}, -foo2209: () => {}, -foo2210: () => {}, -foo2211: () => {}, -foo2212: () => {}, -foo2213: () => {}, -foo2214: () => {}, -foo2215: () => {}, -foo2216: () => {}, -foo2217: () => {}, -foo2218: () => {}, -foo2219: () => {}, -foo2220: () => {}, -foo2221: () => {}, -foo2222: () => {}, -foo2223: () => {}, -foo2224: () => {}, -foo2225: () => {}, -foo2226: () => {}, -foo2227: () => {}, -foo2228: () => {}, -foo2229: () => {}, -foo2230: () => {}, -foo2231: () => {}, -foo2232: () => {}, -foo2233: () => {}, -foo2234: () => {}, -foo2235: () => {}, -foo2236: () => {}, -foo2237: () => {}, -foo2238: () => {}, -foo2239: () => {}, -foo2240: () => {}, -foo2241: () => {}, -foo2242: () => {}, -foo2243: () => {}, -foo2244: () => {}, -foo2245: () => {}, -foo2246: () => {}, -foo2247: () => {}, -foo2248: () => {}, -foo2249: () => {}, -foo2250: () => {}, -foo2251: () => {}, -foo2252: () => {}, -foo2253: () => {}, -foo2254: () => {}, -foo2255: () => {}, -foo2256: () => {}, -foo2257: () => {}, -foo2258: () => {}, -foo2259: () => {}, -foo2260: () => {}, -foo2261: () => {}, -foo2262: () => {}, -foo2263: () => {}, -foo2264: () => {}, -foo2265: () => {}, -foo2266: () => {}, -foo2267: () => {}, -foo2268: () => {}, -foo2269: () => {}, -foo2270: () => {}, -foo2271: () => {}, -foo2272: () => {}, -foo2273: () => {}, -foo2274: () => {}, -foo2275: () => {}, -foo2276: () => {}, -foo2277: () => {}, -foo2278: () => {}, -foo2279: () => {}, -foo2280: () => {}, -foo2281: () => {}, -foo2282: () => {}, -foo2283: () => {}, -foo2284: () => {}, -foo2285: () => {}, -foo2286: () => {}, -foo2287: () => {}, -foo2288: () => {}, -foo2289: () => {}, -foo2290: () => {}, -foo2291: () => {}, -foo2292: () => {}, -foo2293: () => {}, -foo2294: () => {}, -foo2295: () => {}, -foo2296: () => {}, -foo2297: () => {}, -foo2298: () => {}, -foo2299: () => {}, -foo2300: () => {}, -foo2301: () => {}, -foo2302: () => {}, -foo2303: () => {}, -foo2304: () => {}, -foo2305: () => {}, -foo2306: () => {}, -foo2307: () => {}, -foo2308: () => {}, -foo2309: () => {}, -foo2310: () => {}, -foo2311: () => {}, -foo2312: () => {}, -foo2313: () => {}, -foo2314: () => {}, -foo2315: () => {}, -foo2316: () => {}, -foo2317: () => {}, -foo2318: () => {}, -foo2319: () => {}, -foo2320: () => {}, -foo2321: () => {}, -foo2322: () => {}, -foo2323: () => {}, -foo2324: () => {}, -foo2325: () => {}, -foo2326: () => {}, -foo2327: () => {}, -foo2328: () => {}, -foo2329: () => {}, -foo2330: () => {}, -foo2331: () => {}, -foo2332: () => {}, -foo2333: () => {}, -foo2334: () => {}, -foo2335: () => {}, -foo2336: () => {}, -foo2337: () => {}, -foo2338: () => {}, -foo2339: () => {}, -foo2340: () => {}, -foo2341: () => {}, -foo2342: () => {}, -foo2343: () => {}, -foo2344: () => {}, -foo2345: () => {}, -foo2346: () => {}, -foo2347: () => {}, -foo2348: () => {}, -foo2349: () => {}, -foo2350: () => {}, -foo2351: () => {}, -foo2352: () => {}, -foo2353: () => {}, -foo2354: () => {}, -foo2355: () => {}, -foo2356: () => {}, -foo2357: () => {}, -foo2358: () => {}, -foo2359: () => {}, -foo2360: () => {}, -foo2361: () => {}, -foo2362: () => {}, -foo2363: () => {}, -foo2364: () => {}, -foo2365: () => {}, -foo2366: () => {}, -foo2367: () => {}, -foo2368: () => {}, -foo2369: () => {}, -foo2370: () => {}, -foo2371: () => {}, -foo2372: () => {}, -foo2373: () => {}, -foo2374: () => {}, -foo2375: () => {}, -foo2376: () => {}, -foo2377: () => {}, -foo2378: () => {}, -foo2379: () => {}, -foo2380: () => {}, -foo2381: () => {}, -foo2382: () => {}, -foo2383: () => {}, -foo2384: () => {}, -foo2385: () => {}, -foo2386: () => {}, -foo2387: () => {}, -foo2388: () => {}, -foo2389: () => {}, -foo2390: () => {}, -foo2391: () => {}, -foo2392: () => {}, -foo2393: () => {}, -foo2394: () => {}, -foo2395: () => {}, -foo2396: () => {}, -foo2397: () => {}, -foo2398: () => {}, -foo2399: () => {}, -foo2400: () => {}, -foo2401: () => {}, -foo2402: () => {}, -foo2403: () => {}, -foo2404: () => {}, -foo2405: () => {}, -foo2406: () => {}, -foo2407: () => {}, -foo2408: () => {}, -foo2409: () => {}, -foo2410: () => {}, -foo2411: () => {}, -foo2412: () => {}, -foo2413: () => {}, -foo2414: () => {}, -foo2415: () => {}, -foo2416: () => {}, -foo2417: () => {}, -foo2418: () => {}, -foo2419: () => {}, -foo2420: () => {}, -foo2421: () => {}, -foo2422: () => {}, -foo2423: () => {}, -foo2424: () => {}, -foo2425: () => {}, -foo2426: () => {}, -foo2427: () => {}, -foo2428: () => {}, -foo2429: () => {}, -foo2430: () => {}, -foo2431: () => {}, -foo2432: () => {}, -foo2433: () => {}, -foo2434: () => {}, -foo2435: () => {}, -foo2436: () => {}, -foo2437: () => {}, -foo2438: () => {}, -foo2439: () => {}, -foo2440: () => {}, -foo2441: () => {}, -foo2442: () => {}, -foo2443: () => {}, -foo2444: () => {}, -foo2445: () => {}, -foo2446: () => {}, -foo2447: () => {}, -foo2448: () => {}, -foo2449: () => {}, -foo2450: () => {}, -foo2451: () => {}, -foo2452: () => {}, -foo2453: () => {}, -foo2454: () => {}, -foo2455: () => {}, -foo2456: () => {}, -foo2457: () => {}, -foo2458: () => {}, -foo2459: () => {}, -foo2460: () => {}, -foo2461: () => {}, -foo2462: () => {}, -foo2463: () => {}, -foo2464: () => {}, -foo2465: () => {}, -foo2466: () => {}, -foo2467: () => {}, -foo2468: () => {}, -foo2469: () => {}, -foo2470: () => {}, -foo2471: () => {}, -foo2472: () => {}, -foo2473: () => {}, -foo2474: () => {}, -foo2475: () => {}, -foo2476: () => {}, -foo2477: () => {}, -foo2478: () => {}, -foo2479: () => {}, -foo2480: () => {}, -foo2481: () => {}, -foo2482: () => {}, -foo2483: () => {}, -foo2484: () => {}, -foo2485: () => {}, -foo2486: () => {}, -foo2487: () => {}, -foo2488: () => {}, -foo2489: () => {}, -foo2490: () => {}, -foo2491: () => {}, -foo2492: () => {}, -foo2493: () => {}, -foo2494: () => {}, -foo2495: () => {}, -foo2496: () => {}, -foo2497: () => {}, -foo2498: () => {}, -foo2499: () => {}, -foo2500: () => {}, -foo2501: () => {}, -foo2502: () => {}, -foo2503: () => {}, -foo2504: () => {}, -foo2505: () => {}, -foo2506: () => {}, -foo2507: () => {}, -foo2508: () => {}, -foo2509: () => {}, -foo2510: () => {}, -foo2511: () => {}, -foo2512: () => {}, -foo2513: () => {}, -foo2514: () => {}, -foo2515: () => {}, -foo2516: () => {}, -foo2517: () => {}, -foo2518: () => {}, -foo2519: () => {}, -foo2520: () => {}, -foo2521: () => {}, -foo2522: () => {}, -foo2523: () => {}, -foo2524: () => {}, -foo2525: () => {}, -foo2526: () => {}, -foo2527: () => {}, -foo2528: () => {}, -foo2529: () => {}, -foo2530: () => {}, -foo2531: () => {}, -foo2532: () => {}, -foo2533: () => {}, -foo2534: () => {}, -foo2535: () => {}, -foo2536: () => {}, -foo2537: () => {}, -foo2538: () => {}, -foo2539: () => {}, -foo2540: () => {}, -foo2541: () => {}, -foo2542: () => {}, -foo2543: () => {}, -foo2544: () => {}, -foo2545: () => {}, -foo2546: () => {}, -foo2547: () => {}, -foo2548: () => {}, -foo2549: () => {}, -foo2550: () => {}, -foo2551: () => {}, -foo2552: () => {}, -foo2553: () => {}, -foo2554: () => {}, -foo2555: () => {}, -foo2556: () => {}, -foo2557: () => {}, -foo2558: () => {}, -foo2559: () => {}, -foo2560: () => {}, -foo2561: () => {}, -foo2562: () => {}, -foo2563: () => {}, -foo2564: () => {}, -foo2565: () => {}, -foo2566: () => {}, -foo2567: () => {}, -foo2568: () => {}, -foo2569: () => {}, -foo2570: () => {}, -foo2571: () => {}, -foo2572: () => {}, -foo2573: () => {}, -foo2574: () => {}, -foo2575: () => {}, -foo2576: () => {}, -foo2577: () => {}, -foo2578: () => {}, -foo2579: () => {}, -foo2580: () => {}, -foo2581: () => {}, -foo2582: () => {}, -foo2583: () => {}, -foo2584: () => {}, -foo2585: () => {}, -foo2586: () => {}, -foo2587: () => {}, -foo2588: () => {}, -foo2589: () => {}, -foo2590: () => {}, -foo2591: () => {}, -foo2592: () => {}, -foo2593: () => {}, -foo2594: () => {}, -foo2595: () => {}, -foo2596: () => {}, -foo2597: () => {}, -foo2598: () => {}, -foo2599: () => {}, -foo2600: () => {}, -foo2601: () => {}, -foo2602: () => {}, -foo2603: () => {}, -foo2604: () => {}, -foo2605: () => {}, -foo2606: () => {}, -foo2607: () => {}, -foo2608: () => {}, -foo2609: () => {}, -foo2610: () => {}, -foo2611: () => {}, -foo2612: () => {}, -foo2613: () => {}, -foo2614: () => {}, -foo2615: () => {}, -foo2616: () => {}, -foo2617: () => {}, -foo2618: () => {}, -foo2619: () => {}, -foo2620: () => {}, -foo2621: () => {}, -foo2622: () => {}, -foo2623: () => {}, -foo2624: () => {}, -foo2625: () => {}, -foo2626: () => {}, -foo2627: () => {}, -foo2628: () => {}, -foo2629: () => {}, -foo2630: () => {}, -foo2631: () => {}, -foo2632: () => {}, -foo2633: () => {}, -foo2634: () => {}, -foo2635: () => {}, -foo2636: () => {}, -foo2637: () => {}, -foo2638: () => {}, -foo2639: () => {}, -foo2640: () => {}, -foo2641: () => {}, -foo2642: () => {}, -foo2643: () => {}, -foo2644: () => {}, -foo2645: () => {}, -foo2646: () => {}, -foo2647: () => {}, -foo2648: () => {}, -foo2649: () => {}, -foo2650: () => {}, -foo2651: () => {}, -foo2652: () => {}, -foo2653: () => {}, -foo2654: () => {}, -foo2655: () => {}, -foo2656: () => {}, -foo2657: () => {}, -foo2658: () => {}, -foo2659: () => {}, -foo2660: () => {}, -foo2661: () => {}, -foo2662: () => {}, -foo2663: () => {}, -foo2664: () => {}, -foo2665: () => {}, -foo2666: () => {}, -foo2667: () => {}, -foo2668: () => {}, -foo2669: () => {}, -foo2670: () => {}, -foo2671: () => {}, -foo2672: () => {}, -foo2673: () => {}, -foo2674: () => {}, -foo2675: () => {}, -foo2676: () => {}, -foo2677: () => {}, -foo2678: () => {}, -foo2679: () => {}, -foo2680: () => {}, -foo2681: () => {}, -foo2682: () => {}, -foo2683: () => {}, -foo2684: () => {}, -foo2685: () => {}, -foo2686: () => {}, -foo2687: () => {}, -foo2688: () => {}, -foo2689: () => {}, -foo2690: () => {}, -foo2691: () => {}, -foo2692: () => {}, -foo2693: () => {}, -foo2694: () => {}, -foo2695: () => {}, -foo2696: () => {}, -foo2697: () => {}, -foo2698: () => {}, -foo2699: () => {}, -foo2700: () => {}, -foo2701: () => {}, -foo2702: () => {}, -foo2703: () => {}, -foo2704: () => {}, -foo2705: () => {}, -foo2706: () => {}, -foo2707: () => {}, -foo2708: () => {}, -foo2709: () => {}, -foo2710: () => {}, -foo2711: () => {}, -foo2712: () => {}, -foo2713: () => {}, -foo2714: () => {}, -foo2715: () => {}, -foo2716: () => {}, -foo2717: () => {}, -foo2718: () => {}, -foo2719: () => {}, -foo2720: () => {}, -foo2721: () => {}, -foo2722: () => {}, -foo2723: () => {}, -foo2724: () => {}, -foo2725: () => {}, -foo2726: () => {}, -foo2727: () => {}, -foo2728: () => {}, -foo2729: () => {}, -foo2730: () => {}, -foo2731: () => {}, -foo2732: () => {}, -foo2733: () => {}, -foo2734: () => {}, -foo2735: () => {}, -foo2736: () => {}, -foo2737: () => {}, -foo2738: () => {}, -foo2739: () => {}, -foo2740: () => {}, -foo2741: () => {}, -foo2742: () => {}, -foo2743: () => {}, -foo2744: () => {}, -foo2745: () => {}, -foo2746: () => {}, -foo2747: () => {}, -foo2748: () => {}, -foo2749: () => {}, -foo2750: () => {}, -foo2751: () => {}, -foo2752: () => {}, -foo2753: () => {}, -foo2754: () => {}, -foo2755: () => {}, -foo2756: () => {}, -foo2757: () => {}, -foo2758: () => {}, -foo2759: () => {}, -foo2760: () => {}, -foo2761: () => {}, -foo2762: () => {}, -foo2763: () => {}, -foo2764: () => {}, -foo2765: () => {}, -foo2766: () => {}, -foo2767: () => {}, -foo2768: () => {}, -foo2769: () => {}, -foo2770: () => {}, -foo2771: () => {}, -foo2772: () => {}, -foo2773: () => {}, -foo2774: () => {}, -foo2775: () => {}, -foo2776: () => {}, -foo2777: () => {}, -foo2778: () => {}, -foo2779: () => {}, -foo2780: () => {}, -foo2781: () => {}, -foo2782: () => {}, -foo2783: () => {}, -foo2784: () => {}, -foo2785: () => {}, -foo2786: () => {}, -foo2787: () => {}, -foo2788: () => {}, -foo2789: () => {}, -foo2790: () => {}, -foo2791: () => {}, -foo2792: () => {}, -foo2793: () => {}, -foo2794: () => {}, -foo2795: () => {}, -foo2796: () => {}, -foo2797: () => {}, -foo2798: () => {}, -foo2799: () => {}, -foo2800: () => {}, -foo2801: () => {}, -foo2802: () => {}, -foo2803: () => {}, -foo2804: () => {}, -foo2805: () => {}, -foo2806: () => {}, -foo2807: () => {}, -foo2808: () => {}, -foo2809: () => {}, -foo2810: () => {}, -foo2811: () => {}, -foo2812: () => {}, -foo2813: () => {}, -foo2814: () => {}, -foo2815: () => {}, -foo2816: () => {}, -foo2817: () => {}, -foo2818: () => {}, -foo2819: () => {}, -foo2820: () => {}, -foo2821: () => {}, -foo2822: () => {}, -foo2823: () => {}, -foo2824: () => {}, -foo2825: () => {}, -foo2826: () => {}, -foo2827: () => {}, -foo2828: () => {}, -foo2829: () => {}, -foo2830: () => {}, -foo2831: () => {}, -foo2832: () => {}, -foo2833: () => {}, -foo2834: () => {}, -foo2835: () => {}, -foo2836: () => {}, -foo2837: () => {}, -foo2838: () => {}, -foo2839: () => {}, -foo2840: () => {}, -foo2841: () => {}, -foo2842: () => {}, -foo2843: () => {}, -foo2844: () => {}, -foo2845: () => {}, -foo2846: () => {}, -foo2847: () => {}, -foo2848: () => {}, -foo2849: () => {}, -foo2850: () => {}, -foo2851: () => {}, -foo2852: () => {}, -foo2853: () => {}, -foo2854: () => {}, -foo2855: () => {}, -foo2856: () => {}, -foo2857: () => {}, -foo2858: () => {}, -foo2859: () => {}, -foo2860: () => {}, -foo2861: () => {}, -foo2862: () => {}, -foo2863: () => {}, -foo2864: () => {}, -foo2865: () => {}, -foo2866: () => {}, -foo2867: () => {}, -foo2868: () => {}, -foo2869: () => {}, -foo2870: () => {}, -foo2871: () => {}, -foo2872: () => {}, -foo2873: () => {}, -foo2874: () => {}, -foo2875: () => {}, -foo2876: () => {}, -foo2877: () => {}, -foo2878: () => {}, -foo2879: () => {}, -foo2880: () => {}, -foo2881: () => {}, -foo2882: () => {}, -foo2883: () => {}, -foo2884: () => {}, -foo2885: () => {}, -foo2886: () => {}, -foo2887: () => {}, -foo2888: () => {}, -foo2889: () => {}, -foo2890: () => {}, -foo2891: () => {}, -foo2892: () => {}, -foo2893: () => {}, -foo2894: () => {}, -foo2895: () => {}, -foo2896: () => {}, -foo2897: () => {}, -foo2898: () => {}, -foo2899: () => {}, -foo2900: () => {}, -foo2901: () => {}, -foo2902: () => {}, -foo2903: () => {}, -foo2904: () => {}, -foo2905: () => {}, -foo2906: () => {}, -foo2907: () => {}, -foo2908: () => {}, -foo2909: () => {}, -foo2910: () => {}, -foo2911: () => {}, -foo2912: () => {}, -foo2913: () => {}, -foo2914: () => {}, -foo2915: () => {}, -foo2916: () => {}, -foo2917: () => {}, -foo2918: () => {}, -foo2919: () => {}, -foo2920: () => {}, -foo2921: () => {}, -foo2922: () => {}, -foo2923: () => {}, -foo2924: () => {}, -foo2925: () => {}, -foo2926: () => {}, -foo2927: () => {}, -foo2928: () => {}, -foo2929: () => {}, -foo2930: () => {}, -foo2931: () => {}, -foo2932: () => {}, -foo2933: () => {}, -foo2934: () => {}, -foo2935: () => {}, -foo2936: () => {}, -foo2937: () => {}, -foo2938: () => {}, -foo2939: () => {}, -foo2940: () => {}, -foo2941: () => {}, -foo2942: () => {}, -foo2943: () => {}, -foo2944: () => {}, -foo2945: () => {}, -foo2946: () => {}, -foo2947: () => {}, -foo2948: () => {}, -foo2949: () => {}, -foo2950: () => {}, -foo2951: () => {}, -foo2952: () => {}, -foo2953: () => {}, -foo2954: () => {}, -foo2955: () => {}, -foo2956: () => {}, -foo2957: () => {}, -foo2958: () => {}, -foo2959: () => {}, -foo2960: () => {}, -foo2961: () => {}, -foo2962: () => {}, -foo2963: () => {}, -foo2964: () => {}, -foo2965: () => {}, -foo2966: () => {}, -foo2967: () => {}, -foo2968: () => {}, -foo2969: () => {}, -foo2970: () => {}, -foo2971: () => {}, -foo2972: () => {}, -foo2973: () => {}, -foo2974: () => {}, -foo2975: () => {}, -foo2976: () => {}, -foo2977: () => {}, -foo2978: () => {}, -foo2979: () => {}, -foo2980: () => {}, -foo2981: () => {}, -foo2982: () => {}, -foo2983: () => {}, -foo2984: () => {}, -foo2985: () => {}, -foo2986: () => {}, -foo2987: () => {}, -foo2988: () => {}, -foo2989: () => {}, -foo2990: () => {}, -foo2991: () => {}, -foo2992: () => {}, -foo2993: () => {}, -foo2994: () => {}, -foo2995: () => {}, -foo2996: () => {}, -foo2997: () => {}, -foo2998: () => {}, -foo2999: () => {}, -foo3000: () => {}, -foo3001: () => {}, -foo3002: () => {}, -foo3003: () => {}, -foo3004: () => {}, -foo3005: () => {}, -foo3006: () => {}, -foo3007: () => {}, -foo3008: () => {}, -foo3009: () => {}, -foo3010: () => {}, -foo3011: () => {}, -foo3012: () => {}, -foo3013: () => {}, -foo3014: () => {}, -foo3015: () => {}, -foo3016: () => {}, -foo3017: () => {}, -foo3018: () => {}, -foo3019: () => {}, -foo3020: () => {}, -foo3021: () => {}, -foo3022: () => {}, -foo3023: () => {}, -foo3024: () => {}, -foo3025: () => {}, -foo3026: () => {}, -foo3027: () => {}, -foo3028: () => {}, -foo3029: () => {}, -foo3030: () => {}, -foo3031: () => {}, -foo3032: () => {}, -foo3033: () => {}, -foo3034: () => {}, -foo3035: () => {}, -foo3036: () => {}, -foo3037: () => {}, -foo3038: () => {}, -foo3039: () => {}, -foo3040: () => {}, -foo3041: () => {}, -foo3042: () => {}, -foo3043: () => {}, -foo3044: () => {}, -foo3045: () => {}, -foo3046: () => {}, -foo3047: () => {}, -foo3048: () => {}, -foo3049: () => {}, -foo3050: () => {}, -foo3051: () => {}, -foo3052: () => {}, -foo3053: () => {}, -foo3054: () => {}, -foo3055: () => {}, -foo3056: () => {}, -foo3057: () => {}, -foo3058: () => {}, -foo3059: () => {}, -foo3060: () => {}, -foo3061: () => {}, -foo3062: () => {}, -foo3063: () => {}, -foo3064: () => {}, -foo3065: () => {}, -foo3066: () => {}, -foo3067: () => {}, -foo3068: () => {}, -foo3069: () => {}, -foo3070: () => {}, -foo3071: () => {}, -foo3072: () => {}, -foo3073: () => {}, -foo3074: () => {}, -foo3075: () => {}, -foo3076: () => {}, -foo3077: () => {}, -foo3078: () => {}, -foo3079: () => {}, -foo3080: () => {}, -foo3081: () => {}, -foo3082: () => {}, -foo3083: () => {}, -foo3084: () => {}, -foo3085: () => {}, -foo3086: () => {}, -foo3087: () => {}, -foo3088: () => {}, -foo3089: () => {}, -foo3090: () => {}, -foo3091: () => {}, -foo3092: () => {}, -foo3093: () => {}, -foo3094: () => {}, -foo3095: () => {}, -foo3096: () => {}, -foo3097: () => {}, -foo3098: () => {}, -foo3099: () => {}, -foo3100: () => {}, -foo3101: () => {}, -foo3102: () => {}, -foo3103: () => {}, -foo3104: () => {}, -foo3105: () => {}, -foo3106: () => {}, -foo3107: () => {}, -foo3108: () => {}, -foo3109: () => {}, -foo3110: () => {}, -foo3111: () => {}, -foo3112: () => {}, -foo3113: () => {}, -foo3114: () => {}, -foo3115: () => {}, -foo3116: () => {}, -foo3117: () => {}, -foo3118: () => {}, -foo3119: () => {}, -foo3120: () => {}, -foo3121: () => {}, -foo3122: () => {}, -foo3123: () => {}, -foo3124: () => {}, -foo3125: () => {}, -foo3126: () => {}, -foo3127: () => {}, -foo3128: () => {}, -foo3129: () => {}, -foo3130: () => {}, -foo3131: () => {}, -foo3132: () => {}, -foo3133: () => {}, -foo3134: () => {}, -foo3135: () => {}, -foo3136: () => {}, -foo3137: () => {}, -foo3138: () => {}, -foo3139: () => {}, -foo3140: () => {}, -foo3141: () => {}, -foo3142: () => {}, -foo3143: () => {}, -foo3144: () => {}, -foo3145: () => {}, -foo3146: () => {}, -foo3147: () => {}, -foo3148: () => {}, -foo3149: () => {}, -foo3150: () => {}, -foo3151: () => {}, -foo3152: () => {}, -foo3153: () => {}, -foo3154: () => {}, -foo3155: () => {}, -foo3156: () => {}, -foo3157: () => {}, -foo3158: () => {}, -foo3159: () => {}, -foo3160: () => {}, -foo3161: () => {}, -foo3162: () => {}, -foo3163: () => {}, -foo3164: () => {}, -foo3165: () => {}, -foo3166: () => {}, -foo3167: () => {}, -foo3168: () => {}, -foo3169: () => {}, -foo3170: () => {}, -foo3171: () => {}, -foo3172: () => {}, -foo3173: () => {}, -foo3174: () => {}, -foo3175: () => {}, -foo3176: () => {}, -foo3177: () => {}, -foo3178: () => {}, -foo3179: () => {}, -foo3180: () => {}, -foo3181: () => {}, -foo3182: () => {}, -foo3183: () => {}, -foo3184: () => {}, -foo3185: () => {}, -foo3186: () => {}, -foo3187: () => {}, -foo3188: () => {}, -foo3189: () => {}, -foo3190: () => {}, -foo3191: () => {}, -foo3192: () => {}, -foo3193: () => {}, -foo3194: () => {}, -foo3195: () => {}, -foo3196: () => {}, -foo3197: () => {}, -foo3198: () => {}, -foo3199: () => {}, -foo3200: () => {}, -foo3201: () => {}, -foo3202: () => {}, -foo3203: () => {}, -foo3204: () => {}, -foo3205: () => {}, -foo3206: () => {}, -foo3207: () => {}, -foo3208: () => {}, -foo3209: () => {}, -foo3210: () => {}, -foo3211: () => {}, -foo3212: () => {}, -foo3213: () => {}, -foo3214: () => {}, -foo3215: () => {}, -foo3216: () => {}, -foo3217: () => {}, -foo3218: () => {}, -foo3219: () => {}, -foo3220: () => {}, -foo3221: () => {}, -foo3222: () => {}, -foo3223: () => {}, -foo3224: () => {}, -foo3225: () => {}, -foo3226: () => {}, -foo3227: () => {}, -foo3228: () => {}, -foo3229: () => {}, -foo3230: () => {}, -foo3231: () => {}, -foo3232: () => {}, -foo3233: () => {}, -foo3234: () => {}, -foo3235: () => {}, -foo3236: () => {}, -foo3237: () => {}, -foo3238: () => {}, -foo3239: () => {}, -foo3240: () => {}, -foo3241: () => {}, -foo3242: () => {}, -foo3243: () => {}, -foo3244: () => {}, -foo3245: () => {}, -foo3246: () => {}, -foo3247: () => {}, -foo3248: () => {}, -foo3249: () => {}, -foo3250: () => {}, -foo3251: () => {}, -foo3252: () => {}, -foo3253: () => {}, -foo3254: () => {}, -foo3255: () => {}, -foo3256: () => {}, -foo3257: () => {}, -foo3258: () => {}, -foo3259: () => {}, -foo3260: () => {}, -foo3261: () => {}, -foo3262: () => {}, -foo3263: () => {}, -foo3264: () => {}, -foo3265: () => {}, -foo3266: () => {}, -foo3267: () => {}, -foo3268: () => {}, -foo3269: () => {}, -foo3270: () => {}, -foo3271: () => {}, -foo3272: () => {}, -foo3273: () => {}, -foo3274: () => {}, -foo3275: () => {}, -foo3276: () => {}, -foo3277: () => {}, -foo3278: () => {}, -foo3279: () => {}, -foo3280: () => {}, -foo3281: () => {}, -foo3282: () => {}, -foo3283: () => {}, -foo3284: () => {}, -foo3285: () => {}, -foo3286: () => {}, -foo3287: () => {}, -foo3288: () => {}, -foo3289: () => {}, -foo3290: () => {}, -foo3291: () => {}, -foo3292: () => {}, -foo3293: () => {}, -foo3294: () => {}, -foo3295: () => {}, -foo3296: () => {}, -foo3297: () => {}, -foo3298: () => {}, -foo3299: () => {}, -foo3300: () => {}, -foo3301: () => {}, -foo3302: () => {}, -foo3303: () => {}, -foo3304: () => {}, -foo3305: () => {}, -foo3306: () => {}, -foo3307: () => {}, -foo3308: () => {}, -foo3309: () => {}, -foo3310: () => {}, -foo3311: () => {}, -foo3312: () => {}, -foo3313: () => {}, -foo3314: () => {}, -foo3315: () => {}, -foo3316: () => {}, -foo3317: () => {}, -foo3318: () => {}, -foo3319: () => {}, -foo3320: () => {}, -foo3321: () => {}, -foo3322: () => {}, -foo3323: () => {}, -foo3324: () => {}, -foo3325: () => {}, -foo3326: () => {}, -foo3327: () => {}, -foo3328: () => {}, -foo3329: () => {}, -foo3330: () => {}, -foo3331: () => {}, -foo3332: () => {}, -foo3333: () => {}, -foo3334: () => {}, -foo3335: () => {}, -foo3336: () => {}, -foo3337: () => {}, -foo3338: () => {}, -foo3339: () => {}, -foo3340: () => {}, -foo3341: () => {}, -foo3342: () => {}, -foo3343: () => {}, -foo3344: () => {}, -foo3345: () => {}, -foo3346: () => {}, -foo3347: () => {}, -foo3348: () => {}, -foo3349: () => {}, -foo3350: () => {}, -foo3351: () => {}, -foo3352: () => {}, -foo3353: () => {}, -foo3354: () => {}, -foo3355: () => {}, -foo3356: () => {}, -foo3357: () => {}, -foo3358: () => {}, -foo3359: () => {}, -foo3360: () => {}, -foo3361: () => {}, -foo3362: () => {}, -foo3363: () => {}, -foo3364: () => {}, -foo3365: () => {}, -foo3366: () => {}, -foo3367: () => {}, -foo3368: () => {}, -foo3369: () => {}, -foo3370: () => {}, -foo3371: () => {}, -foo3372: () => {}, -foo3373: () => {}, -foo3374: () => {}, -foo3375: () => {}, -foo3376: () => {}, -foo3377: () => {}, -foo3378: () => {}, -foo3379: () => {}, -foo3380: () => {}, -foo3381: () => {}, -foo3382: () => {}, -foo3383: () => {}, -foo3384: () => {}, -foo3385: () => {}, -foo3386: () => {}, -foo3387: () => {}, -foo3388: () => {}, -foo3389: () => {}, -foo3390: () => {}, -foo3391: () => {}, -foo3392: () => {}, -foo3393: () => {}, -foo3394: () => {}, -foo3395: () => {}, -foo3396: () => {}, -foo3397: () => {}, -foo3398: () => {}, -foo3399: () => {}, -foo3400: () => {}, -foo3401: () => {}, -foo3402: () => {}, -foo3403: () => {}, -foo3404: () => {}, -foo3405: () => {}, -foo3406: () => {}, -foo3407: () => {}, -foo3408: () => {}, -foo3409: () => {}, -foo3410: () => {}, -foo3411: () => {}, -foo3412: () => {}, -foo3413: () => {}, -foo3414: () => {}, -foo3415: () => {}, -foo3416: () => {}, -foo3417: () => {}, -foo3418: () => {}, -foo3419: () => {}, -foo3420: () => {}, -foo3421: () => {}, -foo3422: () => {}, -foo3423: () => {}, -foo3424: () => {}, -foo3425: () => {}, -foo3426: () => {}, -foo3427: () => {}, -foo3428: () => {}, -foo3429: () => {}, -foo3430: () => {}, -foo3431: () => {}, -foo3432: () => {}, -foo3433: () => {}, -foo3434: () => {}, -foo3435: () => {}, -foo3436: () => {}, -foo3437: () => {}, -foo3438: () => {}, -foo3439: () => {}, -foo3440: () => {}, -foo3441: () => {}, -foo3442: () => {}, -foo3443: () => {}, -foo3444: () => {}, -foo3445: () => {}, -foo3446: () => {}, -foo3447: () => {}, -foo3448: () => {}, -foo3449: () => {}, -foo3450: () => {}, -foo3451: () => {}, -foo3452: () => {}, -foo3453: () => {}, -foo3454: () => {}, -foo3455: () => {}, -foo3456: () => {}, -foo3457: () => {}, -foo3458: () => {}, -foo3459: () => {}, -foo3460: () => {}, -foo3461: () => {}, -foo3462: () => {}, -foo3463: () => {}, -foo3464: () => {}, -foo3465: () => {}, -foo3466: () => {}, -foo3467: () => {}, -foo3468: () => {}, -foo3469: () => {}, -foo3470: () => {}, -foo3471: () => {}, -foo3472: () => {}, -foo3473: () => {}, -foo3474: () => {}, -foo3475: () => {}, -foo3476: () => {}, -foo3477: () => {}, -foo3478: () => {}, -foo3479: () => {}, -foo3480: () => {}, -foo3481: () => {}, -foo3482: () => {}, -foo3483: () => {}, -foo3484: () => {}, -foo3485: () => {}, -foo3486: () => {}, -foo3487: () => {}, -foo3488: () => {}, -foo3489: () => {}, -foo3490: () => {}, -foo3491: () => {}, -foo3492: () => {}, -foo3493: () => {}, -foo3494: () => {}, -foo3495: () => {}, -foo3496: () => {}, -foo3497: () => {}, -foo3498: () => {}, -foo3499: () => {}, -foo3500: () => {}, -foo3501: () => {}, -foo3502: () => {}, -foo3503: () => {}, -foo3504: () => {}, -foo3505: () => {}, -foo3506: () => {}, -foo3507: () => {}, -foo3508: () => {}, -foo3509: () => {}, -foo3510: () => {}, -foo3511: () => {}, -foo3512: () => {}, -foo3513: () => {}, -foo3514: () => {}, -foo3515: () => {}, -foo3516: () => {}, -foo3517: () => {}, -foo3518: () => {}, -foo3519: () => {}, -foo3520: () => {}, -foo3521: () => {}, -foo3522: () => {}, -foo3523: () => {}, -foo3524: () => {}, -foo3525: () => {}, -foo3526: () => {}, -foo3527: () => {}, -foo3528: () => {}, -foo3529: () => {}, -foo3530: () => {}, -foo3531: () => {}, -foo3532: () => {}, -foo3533: () => {}, -foo3534: () => {}, -foo3535: () => {}, -foo3536: () => {}, -foo3537: () => {}, -foo3538: () => {}, -foo3539: () => {}, -foo3540: () => {}, -foo3541: () => {}, -foo3542: () => {}, -foo3543: () => {}, -foo3544: () => {}, -foo3545: () => {}, -foo3546: () => {}, -foo3547: () => {}, -foo3548: () => {}, -foo3549: () => {}, -foo3550: () => {}, -foo3551: () => {}, -foo3552: () => {}, -foo3553: () => {}, -foo3554: () => {}, -foo3555: () => {}, -foo3556: () => {}, -foo3557: () => {}, -foo3558: () => {}, -foo3559: () => {}, -foo3560: () => {}, -foo3561: () => {}, -foo3562: () => {}, -foo3563: () => {}, -foo3564: () => {}, -foo3565: () => {}, -foo3566: () => {}, -foo3567: () => {}, -foo3568: () => {}, -foo3569: () => {}, -foo3570: () => {}, -foo3571: () => {}, -foo3572: () => {}, -foo3573: () => {}, -foo3574: () => {}, -foo3575: () => {}, -foo3576: () => {}, -foo3577: () => {}, -foo3578: () => {}, -foo3579: () => {}, -foo3580: () => {}, -foo3581: () => {}, -foo3582: () => {}, -foo3583: () => {}, -foo3584: () => {}, -foo3585: () => {}, -foo3586: () => {}, -foo3587: () => {}, -foo3588: () => {}, -foo3589: () => {}, -foo3590: () => {}, -foo3591: () => {}, -foo3592: () => {}, -foo3593: () => {}, -foo3594: () => {}, -foo3595: () => {}, -foo3596: () => {}, -foo3597: () => {}, -foo3598: () => {}, -foo3599: () => {}, -foo3600: () => {}, -foo3601: () => {}, -foo3602: () => {}, -foo3603: () => {}, -foo3604: () => {}, -foo3605: () => {}, -foo3606: () => {}, -foo3607: () => {}, -foo3608: () => {}, -foo3609: () => {}, -foo3610: () => {}, -foo3611: () => {}, -foo3612: () => {}, -foo3613: () => {}, -foo3614: () => {}, -foo3615: () => {}, -foo3616: () => {}, -foo3617: () => {}, -foo3618: () => {}, -foo3619: () => {}, -foo3620: () => {}, -foo3621: () => {}, -foo3622: () => {}, -foo3623: () => {}, -foo3624: () => {}, -foo3625: () => {}, -foo3626: () => {}, -foo3627: () => {}, -foo3628: () => {}, -foo3629: () => {}, -foo3630: () => {}, -foo3631: () => {}, -foo3632: () => {}, -foo3633: () => {}, -foo3634: () => {}, -foo3635: () => {}, -foo3636: () => {}, -foo3637: () => {}, -foo3638: () => {}, -foo3639: () => {}, -foo3640: () => {}, -foo3641: () => {}, -foo3642: () => {}, -foo3643: () => {}, -foo3644: () => {}, -foo3645: () => {}, -foo3646: () => {}, -foo3647: () => {}, -foo3648: () => {}, -foo3649: () => {}, -foo3650: () => {}, -foo3651: () => {}, -foo3652: () => {}, -foo3653: () => {}, -foo3654: () => {}, -foo3655: () => {}, -foo3656: () => {}, -foo3657: () => {}, -foo3658: () => {}, -foo3659: () => {}, -foo3660: () => {}, -foo3661: () => {}, -foo3662: () => {}, -foo3663: () => {}, -foo3664: () => {}, -foo3665: () => {}, -foo3666: () => {}, -foo3667: () => {}, -foo3668: () => {}, -foo3669: () => {}, -foo3670: () => {}, -foo3671: () => {}, -foo3672: () => {}, -foo3673: () => {}, -foo3674: () => {}, -foo3675: () => {}, -foo3676: () => {}, -foo3677: () => {}, -foo3678: () => {}, -foo3679: () => {}, -foo3680: () => {}, -foo3681: () => {}, -foo3682: () => {}, -foo3683: () => {}, -foo3684: () => {}, -foo3685: () => {}, -foo3686: () => {}, -foo3687: () => {}, -foo3688: () => {}, -foo3689: () => {}, -foo3690: () => {}, -foo3691: () => {}, -foo3692: () => {}, -foo3693: () => {}, -foo3694: () => {}, -foo3695: () => {}, -foo3696: () => {}, -foo3697: () => {}, -foo3698: () => {}, -foo3699: () => {}, -foo3700: () => {}, -foo3701: () => {}, -foo3702: () => {}, -foo3703: () => {}, -foo3704: () => {}, -foo3705: () => {}, -foo3706: () => {}, -foo3707: () => {}, -foo3708: () => {}, -foo3709: () => {}, -foo3710: () => {}, -foo3711: () => {}, -foo3712: () => {}, -foo3713: () => {}, -foo3714: () => {}, -foo3715: () => {}, -foo3716: () => {}, -foo3717: () => {}, -foo3718: () => {}, -foo3719: () => {}, -foo3720: () => {}, -foo3721: () => {}, -foo3722: () => {}, -foo3723: () => {}, -foo3724: () => {}, -foo3725: () => {}, -foo3726: () => {}, -foo3727: () => {}, -foo3728: () => {}, -foo3729: () => {}, -foo3730: () => {}, -foo3731: () => {}, -foo3732: () => {}, -foo3733: () => {}, -foo3734: () => {}, -foo3735: () => {}, -foo3736: () => {}, -foo3737: () => {}, -foo3738: () => {}, -foo3739: () => {}, -foo3740: () => {}, -foo3741: () => {}, -foo3742: () => {}, -foo3743: () => {}, -foo3744: () => {}, -foo3745: () => {}, -foo3746: () => {}, -foo3747: () => {}, -foo3748: () => {}, -foo3749: () => {}, -foo3750: () => {}, -foo3751: () => {}, -foo3752: () => {}, -foo3753: () => {}, -foo3754: () => {}, -foo3755: () => {}, -foo3756: () => {}, -foo3757: () => {}, -foo3758: () => {}, -foo3759: () => {}, -foo3760: () => {}, -foo3761: () => {}, -foo3762: () => {}, -foo3763: () => {}, -foo3764: () => {}, -foo3765: () => {}, -foo3766: () => {}, -foo3767: () => {}, -foo3768: () => {}, -foo3769: () => {}, -foo3770: () => {}, -foo3771: () => {}, -foo3772: () => {}, -foo3773: () => {}, -foo3774: () => {}, -foo3775: () => {}, -foo3776: () => {}, -foo3777: () => {}, -foo3778: () => {}, -foo3779: () => {}, -foo3780: () => {}, -foo3781: () => {}, -foo3782: () => {}, -foo3783: () => {}, -foo3784: () => {}, -foo3785: () => {}, -foo3786: () => {}, -foo3787: () => {}, -foo3788: () => {}, -foo3789: () => {}, -foo3790: () => {}, -foo3791: () => {}, -foo3792: () => {}, -foo3793: () => {}, -foo3794: () => {}, -foo3795: () => {}, -foo3796: () => {}, -foo3797: () => {}, -foo3798: () => {}, -foo3799: () => {}, -foo3800: () => {}, -foo3801: () => {}, -foo3802: () => {}, -foo3803: () => {}, -foo3804: () => {}, -foo3805: () => {}, -foo3806: () => {}, -foo3807: () => {}, -foo3808: () => {}, -foo3809: () => {}, -foo3810: () => {}, -foo3811: () => {}, -foo3812: () => {}, -foo3813: () => {}, -foo3814: () => {}, -foo3815: () => {}, -foo3816: () => {}, -foo3817: () => {}, -foo3818: () => {}, -foo3819: () => {}, -foo3820: () => {}, -foo3821: () => {}, -foo3822: () => {}, -foo3823: () => {}, -foo3824: () => {}, -foo3825: () => {}, -foo3826: () => {}, -foo3827: () => {}, -foo3828: () => {}, -foo3829: () => {}, -foo3830: () => {}, -foo3831: () => {}, -foo3832: () => {}, -foo3833: () => {}, -foo3834: () => {}, -foo3835: () => {}, -foo3836: () => {}, -foo3837: () => {}, -foo3838: () => {}, -foo3839: () => {}, -foo3840: () => {}, -foo3841: () => {}, -foo3842: () => {}, -foo3843: () => {}, -foo3844: () => {}, -foo3845: () => {}, -foo3846: () => {}, -foo3847: () => {}, -foo3848: () => {}, -foo3849: () => {}, -foo3850: () => {}, -foo3851: () => {}, -foo3852: () => {}, -foo3853: () => {}, -foo3854: () => {}, -foo3855: () => {}, -foo3856: () => {}, -foo3857: () => {}, -foo3858: () => {}, -foo3859: () => {}, -foo3860: () => {}, -foo3861: () => {}, -foo3862: () => {}, -foo3863: () => {}, -foo3864: () => {}, -foo3865: () => {}, -foo3866: () => {}, -foo3867: () => {}, -foo3868: () => {}, -foo3869: () => {}, -foo3870: () => {}, -foo3871: () => {}, -foo3872: () => {}, -foo3873: () => {}, -foo3874: () => {}, -foo3875: () => {}, -foo3876: () => {}, -foo3877: () => {}, -foo3878: () => {}, -foo3879: () => {}, -foo3880: () => {}, -foo3881: () => {}, -foo3882: () => {}, -foo3883: () => {}, -foo3884: () => {}, -foo3885: () => {}, -foo3886: () => {}, -foo3887: () => {}, -foo3888: () => {}, -foo3889: () => {}, -foo3890: () => {}, -foo3891: () => {}, -foo3892: () => {}, -foo3893: () => {}, -foo3894: () => {}, -foo3895: () => {}, -foo3896: () => {}, -foo3897: () => {}, -foo3898: () => {}, -foo3899: () => {}, -foo3900: () => {}, -foo3901: () => {}, -foo3902: () => {}, -foo3903: () => {}, -foo3904: () => {}, -foo3905: () => {}, -foo3906: () => {}, -foo3907: () => {}, -foo3908: () => {}, -foo3909: () => {}, -foo3910: () => {}, -foo3911: () => {}, -foo3912: () => {}, -foo3913: () => {}, -foo3914: () => {}, -foo3915: () => {}, -foo3916: () => {}, -foo3917: () => {}, -foo3918: () => {}, -foo3919: () => {}, -foo3920: () => {}, -foo3921: () => {}, -foo3922: () => {}, -foo3923: () => {}, -foo3924: () => {}, -foo3925: () => {}, -foo3926: () => {}, -foo3927: () => {}, -foo3928: () => {}, -foo3929: () => {}, -foo3930: () => {}, -foo3931: () => {}, -foo3932: () => {}, -foo3933: () => {}, -foo3934: () => {}, -foo3935: () => {}, -foo3936: () => {}, -foo3937: () => {}, -foo3938: () => {}, -foo3939: () => {}, -foo3940: () => {}, -foo3941: () => {}, -foo3942: () => {}, -foo3943: () => {}, -foo3944: () => {}, -foo3945: () => {}, -foo3946: () => {}, -foo3947: () => {}, -foo3948: () => {}, -foo3949: () => {}, -foo3950: () => {}, -foo3951: () => {}, -foo3952: () => {}, -foo3953: () => {}, -foo3954: () => {}, -foo3955: () => {}, -foo3956: () => {}, -foo3957: () => {}, -foo3958: () => {}, -foo3959: () => {}, -foo3960: () => {}, -foo3961: () => {}, -foo3962: () => {}, -foo3963: () => {}, -foo3964: () => {}, -foo3965: () => {}, -foo3966: () => {}, -foo3967: () => {}, -foo3968: () => {}, -foo3969: () => {}, -foo3970: () => {}, -foo3971: () => {}, -foo3972: () => {}, -foo3973: () => {}, -foo3974: () => {}, -foo3975: () => {}, -foo3976: () => {}, -foo3977: () => {}, -foo3978: () => {}, -foo3979: () => {}, -foo3980: () => {}, -foo3981: () => {}, -foo3982: () => {}, -foo3983: () => {}, -foo3984: () => {}, -foo3985: () => {}, -foo3986: () => {}, -foo3987: () => {}, -foo3988: () => {}, -foo3989: () => {}, -foo3990: () => {}, -foo3991: () => {}, -foo3992: () => {}, -foo3993: () => {}, -foo3994: () => {}, -foo3995: () => {}, -foo3996: () => {}, -foo3997: () => {}, -foo3998: () => {}, -foo3999: () => {}, -foo4000: () => {}, -foo4001: () => {}, -foo4002: () => {}, -foo4003: () => {}, -foo4004: () => {}, -foo4005: () => {}, -foo4006: () => {}, -foo4007: () => {}, -foo4008: () => {}, -foo4009: () => {}, -foo4010: () => {}, -foo4011: () => {}, -foo4012: () => {}, -foo4013: () => {}, -foo4014: () => {}, -foo4015: () => {}, -foo4016: () => {}, -foo4017: () => {}, -foo4018: () => {}, -foo4019: () => {}, -foo4020: () => {}, -foo4021: () => {}, -foo4022: () => {}, -foo4023: () => {}, -foo4024: () => {}, -foo4025: () => {}, -foo4026: () => {}, -foo4027: () => {}, -foo4028: () => {}, -foo4029: () => {}, -foo4030: () => {}, -foo4031: () => {}, -foo4032: () => {}, -foo4033: () => {}, -foo4034: () => {}, -foo4035: () => {}, -foo4036: () => {}, -foo4037: () => {}, -foo4038: () => {}, -foo4039: () => {}, -foo4040: () => {}, -foo4041: () => {}, -foo4042: () => {}, -foo4043: () => {}, -foo4044: () => {}, -foo4045: () => {}, -foo4046: () => {}, -foo4047: () => {}, -foo4048: () => {}, -foo4049: () => {}, -foo4050: () => {}, -foo4051: () => {}, -foo4052: () => {}, -foo4053: () => {}, -foo4054: () => {}, -foo4055: () => {}, -foo4056: () => {}, -foo4057: () => {}, -foo4058: () => {}, -foo4059: () => {}, -foo4060: () => {}, -foo4061: () => {}, -foo4062: () => {}, -foo4063: () => {}, -foo4064: () => {}, -foo4065: () => {}, -foo4066: () => {}, -foo4067: () => {}, -foo4068: () => {}, -foo4069: () => {}, -foo4070: () => {}, -foo4071: () => {}, -foo4072: () => {}, -foo4073: () => {}, -foo4074: () => {}, -foo4075: () => {}, -foo4076: () => {}, -foo4077: () => {}, -foo4078: () => {}, -foo4079: () => {}, -foo4080: () => {}, -foo4081: () => {}, -foo4082: () => {}, -foo4083: () => {}, -foo4084: () => {}, -foo4085: () => {}, -foo4086: () => {}, -foo4087: () => {}, -foo4088: () => {}, -foo4089: () => {}, -foo4090: () => {}, -foo4091: () => {}, -foo4092: () => {}, -foo4093: () => {}, -foo4094: () => {}, -foo4095: () => {}, -foo4096: () => {}, -foo4097: () => {}, -foo4098: () => {}, -foo4099: () => {}, -foo4100: () => {}, -foo4101: () => {}, -foo4102: () => {}, -foo4103: () => {}, -foo4104: () => {}, -foo4105: () => {}, -foo4106: () => {}, -foo4107: () => {}, -foo4108: () => {}, -foo4109: () => {}, -foo4110: () => {}, -foo4111: () => {}, -foo4112: () => {}, -foo4113: () => {}, -foo4114: () => {}, -foo4115: () => {}, -foo4116: () => {}, -foo4117: () => {}, -foo4118: () => {}, -foo4119: () => {}, -foo4120: () => {}, -foo4121: () => {}, -foo4122: () => {}, -foo4123: () => {}, -foo4124: () => {}, -foo4125: () => {}, -foo4126: () => {}, -foo4127: () => {}, -foo4128: () => {}, -foo4129: () => {}, -foo4130: () => {}, -foo4131: () => {}, -foo4132: () => {}, -foo4133: () => {}, -foo4134: () => {}, -foo4135: () => {}, -foo4136: () => {}, -foo4137: () => {}, -foo4138: () => {}, -foo4139: () => {}, -foo4140: () => {}, -foo4141: () => {}, -foo4142: () => {}, -foo4143: () => {}, -foo4144: () => {}, -foo4145: () => {}, -foo4146: () => {}, -foo4147: () => {}, -foo4148: () => {}, -foo4149: () => {}, -foo4150: () => {}, -foo4151: () => {}, -foo4152: () => {}, -foo4153: () => {}, -foo4154: () => {}, -foo4155: () => {}, -foo4156: () => {}, -foo4157: () => {}, -foo4158: () => {}, -foo4159: () => {}, -foo4160: () => {}, -foo4161: () => {}, -foo4162: () => {}, -foo4163: () => {}, -foo4164: () => {}, -foo4165: () => {}, -foo4166: () => {}, -foo4167: () => {}, -foo4168: () => {}, -foo4169: () => {}, -foo4170: () => {}, -foo4171: () => {}, -foo4172: () => {}, -foo4173: () => {}, -foo4174: () => {}, -foo4175: () => {}, -foo4176: () => {}, -foo4177: () => {}, -foo4178: () => {}, -foo4179: () => {}, -foo4180: () => {}, -foo4181: () => {}, -foo4182: () => {}, -foo4183: () => {}, -foo4184: () => {}, -foo4185: () => {}, -foo4186: () => {}, -foo4187: () => {}, -foo4188: () => {}, -foo4189: () => {}, -foo4190: () => {}, -foo4191: () => {}, -foo4192: () => {}, -foo4193: () => {}, -foo4194: () => {}, -foo4195: () => {}, -foo4196: () => {}, -foo4197: () => {}, -foo4198: () => {}, -foo4199: () => {}, -foo4200: () => {}, -foo4201: () => {}, -foo4202: () => {}, -foo4203: () => {}, -foo4204: () => {}, -foo4205: () => {}, -foo4206: () => {}, -foo4207: () => {}, -foo4208: () => {}, -foo4209: () => {}, -foo4210: () => {}, -foo4211: () => {}, -foo4212: () => {}, -foo4213: () => {}, -foo4214: () => {}, -foo4215: () => {}, -foo4216: () => {}, -foo4217: () => {}, -foo4218: () => {}, -foo4219: () => {}, -foo4220: () => {}, -foo4221: () => {}, -foo4222: () => {}, -foo4223: () => {}, -foo4224: () => {}, -foo4225: () => {}, -foo4226: () => {}, -foo4227: () => {}, -foo4228: () => {}, -foo4229: () => {}, -foo4230: () => {}, -foo4231: () => {}, -foo4232: () => {}, -foo4233: () => {}, -foo4234: () => {}, -foo4235: () => {}, -foo4236: () => {}, -foo4237: () => {}, -foo4238: () => {}, -foo4239: () => {}, -foo4240: () => {}, -foo4241: () => {}, -foo4242: () => {}, -foo4243: () => {}, -foo4244: () => {}, -foo4245: () => {}, -foo4246: () => {}, -foo4247: () => {}, -foo4248: () => {}, -foo4249: () => {}, -foo4250: () => {}, -foo4251: () => {}, -foo4252: () => {}, -foo4253: () => {}, -foo4254: () => {}, -foo4255: () => {}, -foo4256: () => {}, -foo4257: () => {}, -foo4258: () => {}, -foo4259: () => {}, -foo4260: () => {}, -foo4261: () => {}, -foo4262: () => {}, -foo4263: () => {}, -foo4264: () => {}, -foo4265: () => {}, -foo4266: () => {}, -foo4267: () => {}, -foo4268: () => {}, -foo4269: () => {}, -foo4270: () => {}, -foo4271: () => {}, -foo4272: () => {}, -foo4273: () => {}, -foo4274: () => {}, -foo4275: () => {}, -foo4276: () => {}, -foo4277: () => {}, -foo4278: () => {}, -foo4279: () => {}, -foo4280: () => {}, -foo4281: () => {}, -foo4282: () => {}, -foo4283: () => {}, -foo4284: () => {}, -foo4285: () => {}, -foo4286: () => {}, -foo4287: () => {}, -foo4288: () => {}, -foo4289: () => {}, -foo4290: () => {}, -foo4291: () => {}, -foo4292: () => {}, -foo4293: () => {}, -foo4294: () => {}, -foo4295: () => {}, -foo4296: () => {}, -foo4297: () => {}, -foo4298: () => {}, -foo4299: () => {}, -foo4300: () => {}, -foo4301: () => {}, -foo4302: () => {}, -foo4303: () => {}, -foo4304: () => {}, -foo4305: () => {}, -foo4306: () => {}, -foo4307: () => {}, -foo4308: () => {}, -foo4309: () => {}, -foo4310: () => {}, -foo4311: () => {}, -foo4312: () => {}, -foo4313: () => {}, -foo4314: () => {}, -foo4315: () => {}, -foo4316: () => {}, -foo4317: () => {}, -foo4318: () => {}, -foo4319: () => {}, -foo4320: () => {}, -foo4321: () => {}, -foo4322: () => {}, -foo4323: () => {}, -foo4324: () => {}, -foo4325: () => {}, -foo4326: () => {}, -foo4327: () => {}, -foo4328: () => {}, -foo4329: () => {}, -foo4330: () => {}, -foo4331: () => {}, -foo4332: () => {}, -foo4333: () => {}, -foo4334: () => {}, -foo4335: () => {}, -foo4336: () => {}, -foo4337: () => {}, -foo4338: () => {}, -foo4339: () => {}, -foo4340: () => {}, -foo4341: () => {}, -foo4342: () => {}, -foo4343: () => {}, -foo4344: () => {}, -foo4345: () => {}, -foo4346: () => {}, -foo4347: () => {}, -foo4348: () => {}, -foo4349: () => {}, -foo4350: () => {}, -foo4351: () => {}, -foo4352: () => {}, -foo4353: () => {}, -foo4354: () => {}, -foo4355: () => {}, -foo4356: () => {}, -foo4357: () => {}, -foo4358: () => {}, -foo4359: () => {}, -foo4360: () => {}, -foo4361: () => {}, -foo4362: () => {}, -foo4363: () => {}, -foo4364: () => {}, -foo4365: () => {}, -foo4366: () => {}, -foo4367: () => {}, -foo4368: () => {}, -foo4369: () => {}, -foo4370: () => {}, -foo4371: () => {}, -foo4372: () => {}, -foo4373: () => {}, -foo4374: () => {}, -foo4375: () => {}, -foo4376: () => {}, -foo4377: () => {}, -foo4378: () => {}, -foo4379: () => {}, -foo4380: () => {}, -foo4381: () => {}, -foo4382: () => {}, -foo4383: () => {}, -foo4384: () => {}, -foo4385: () => {}, -foo4386: () => {}, -foo4387: () => {}, -foo4388: () => {}, -foo4389: () => {}, -foo4390: () => {}, -foo4391: () => {}, -foo4392: () => {}, -foo4393: () => {}, -foo4394: () => {}, -foo4395: () => {}, -foo4396: () => {}, -foo4397: () => {}, -foo4398: () => {}, -foo4399: () => {}, -foo4400: () => {}, -foo4401: () => {}, -foo4402: () => {}, -foo4403: () => {}, -foo4404: () => {}, -foo4405: () => {}, -foo4406: () => {}, -foo4407: () => {}, -foo4408: () => {}, -foo4409: () => {}, -foo4410: () => {}, -foo4411: () => {}, -foo4412: () => {}, -foo4413: () => {}, -foo4414: () => {}, -foo4415: () => {}, -foo4416: () => {}, -foo4417: () => {}, -foo4418: () => {}, -foo4419: () => {}, -foo4420: () => {}, -foo4421: () => {}, -foo4422: () => {}, -foo4423: () => {}, -foo4424: () => {}, -foo4425: () => {}, -foo4426: () => {}, -foo4427: () => {}, -foo4428: () => {}, -foo4429: () => {}, -foo4430: () => {}, -foo4431: () => {}, -foo4432: () => {}, -foo4433: () => {}, -foo4434: () => {}, -foo4435: () => {}, -foo4436: () => {}, -foo4437: () => {}, -foo4438: () => {}, -foo4439: () => {}, -foo4440: () => {}, -foo4441: () => {}, -foo4442: () => {}, -foo4443: () => {}, -foo4444: () => {}, -foo4445: () => {}, -foo4446: () => {}, -foo4447: () => {}, -foo4448: () => {}, -foo4449: () => {}, -foo4450: () => {}, -foo4451: () => {}, -foo4452: () => {}, -foo4453: () => {}, -foo4454: () => {}, -foo4455: () => {}, -foo4456: () => {}, -foo4457: () => {}, -foo4458: () => {}, -foo4459: () => {}, -foo4460: () => {}, -foo4461: () => {}, -foo4462: () => {}, -foo4463: () => {}, -foo4464: () => {}, -foo4465: () => {}, -foo4466: () => {}, -foo4467: () => {}, -foo4468: () => {}, -foo4469: () => {}, -foo4470: () => {}, -foo4471: () => {}, -foo4472: () => {}, -foo4473: () => {}, -foo4474: () => {}, -foo4475: () => {}, -foo4476: () => {}, -foo4477: () => {}, -foo4478: () => {}, -foo4479: () => {}, -foo4480: () => {}, -foo4481: () => {}, -foo4482: () => {}, -foo4483: () => {}, -foo4484: () => {}, -foo4485: () => {}, -foo4486: () => {}, -foo4487: () => {}, -foo4488: () => {}, -foo4489: () => {}, -foo4490: () => {}, -foo4491: () => {}, -foo4492: () => {}, -foo4493: () => {}, -foo4494: () => {}, -foo4495: () => {}, -foo4496: () => {}, -foo4497: () => {}, -foo4498: () => {}, -foo4499: () => {}, -foo4500: () => {}, -foo4501: () => {}, -foo4502: () => {}, -foo4503: () => {}, -foo4504: () => {}, -foo4505: () => {}, -foo4506: () => {}, -foo4507: () => {}, -foo4508: () => {}, -foo4509: () => {}, -foo4510: () => {}, -foo4511: () => {}, -foo4512: () => {}, -foo4513: () => {}, -foo4514: () => {}, -foo4515: () => {}, -foo4516: () => {}, -foo4517: () => {}, -foo4518: () => {}, -foo4519: () => {}, -foo4520: () => {}, -foo4521: () => {}, -foo4522: () => {}, -foo4523: () => {}, -foo4524: () => {}, -foo4525: () => {}, -foo4526: () => {}, -foo4527: () => {}, -foo4528: () => {}, -foo4529: () => {}, -foo4530: () => {}, -foo4531: () => {}, -foo4532: () => {}, -foo4533: () => {}, -foo4534: () => {}, -foo4535: () => {}, -foo4536: () => {}, -foo4537: () => {}, -foo4538: () => {}, -foo4539: () => {}, -foo4540: () => {}, -foo4541: () => {}, -foo4542: () => {}, -foo4543: () => {}, -foo4544: () => {}, -foo4545: () => {}, -foo4546: () => {}, -foo4547: () => {}, -foo4548: () => {}, -foo4549: () => {}, -foo4550: () => {}, -foo4551: () => {}, -foo4552: () => {}, -foo4553: () => {}, -foo4554: () => {}, -foo4555: () => {}, -foo4556: () => {}, -foo4557: () => {}, -foo4558: () => {}, -foo4559: () => {}, -foo4560: () => {}, -foo4561: () => {}, -foo4562: () => {}, -foo4563: () => {}, -foo4564: () => {}, -foo4565: () => {}, -foo4566: () => {}, -foo4567: () => {}, -foo4568: () => {}, -foo4569: () => {}, -foo4570: () => {}, -foo4571: () => {}, -foo4572: () => {}, -foo4573: () => {}, -foo4574: () => {}, -foo4575: () => {}, -foo4576: () => {}, -foo4577: () => {}, -foo4578: () => {}, -foo4579: () => {}, -foo4580: () => {}, -foo4581: () => {}, -foo4582: () => {}, -foo4583: () => {}, -foo4584: () => {}, -foo4585: () => {}, -foo4586: () => {}, -foo4587: () => {}, -foo4588: () => {}, -foo4589: () => {}, -foo4590: () => {}, -foo4591: () => {}, -foo4592: () => {}, -foo4593: () => {}, -foo4594: () => {}, -foo4595: () => {}, -foo4596: () => {}, -foo4597: () => {}, -foo4598: () => {}, -foo4599: () => {}, -foo4600: () => {}, -foo4601: () => {}, -foo4602: () => {}, -foo4603: () => {}, -foo4604: () => {}, -foo4605: () => {}, -foo4606: () => {}, -foo4607: () => {}, -foo4608: () => {}, -foo4609: () => {}, -foo4610: () => {}, -foo4611: () => {}, -foo4612: () => {}, -foo4613: () => {}, -foo4614: () => {}, -foo4615: () => {}, -foo4616: () => {}, -foo4617: () => {}, -foo4618: () => {}, -foo4619: () => {}, -foo4620: () => {}, -foo4621: () => {}, -foo4622: () => {}, -foo4623: () => {}, -foo4624: () => {}, -foo4625: () => {}, -foo4626: () => {}, -foo4627: () => {}, -foo4628: () => {}, -foo4629: () => {}, -foo4630: () => {}, -foo4631: () => {}, -foo4632: () => {}, -foo4633: () => {}, -foo4634: () => {}, -foo4635: () => {}, -foo4636: () => {}, -foo4637: () => {}, -foo4638: () => {}, -foo4639: () => {}, -foo4640: () => {}, -foo4641: () => {}, -foo4642: () => {}, -foo4643: () => {}, -foo4644: () => {}, -foo4645: () => {}, -foo4646: () => {}, -foo4647: () => {}, -foo4648: () => {}, -foo4649: () => {}, -foo4650: () => {}, -foo4651: () => {}, -foo4652: () => {}, -foo4653: () => {}, -foo4654: () => {}, -foo4655: () => {}, -foo4656: () => {}, -foo4657: () => {}, -foo4658: () => {}, -foo4659: () => {}, -foo4660: () => {}, -foo4661: () => {}, -foo4662: () => {}, -foo4663: () => {}, -foo4664: () => {}, -foo4665: () => {}, -foo4666: () => {}, -foo4667: () => {}, -foo4668: () => {}, -foo4669: () => {}, -foo4670: () => {}, -foo4671: () => {}, -foo4672: () => {}, -foo4673: () => {}, -foo4674: () => {}, -foo4675: () => {}, -foo4676: () => {}, -foo4677: () => {}, -foo4678: () => {}, -foo4679: () => {}, -foo4680: () => {}, -foo4681: () => {}, -foo4682: () => {}, -foo4683: () => {}, -foo4684: () => {}, -foo4685: () => {}, -foo4686: () => {}, -foo4687: () => {}, -foo4688: () => {}, -foo4689: () => {}, -foo4690: () => {}, -foo4691: () => {}, -foo4692: () => {}, -foo4693: () => {}, -foo4694: () => {}, -foo4695: () => {}, -foo4696: () => {}, -foo4697: () => {}, -foo4698: () => {}, -foo4699: () => {}, -foo4700: () => {}, -foo4701: () => {}, -foo4702: () => {}, -foo4703: () => {}, -foo4704: () => {}, -foo4705: () => {}, -foo4706: () => {}, -foo4707: () => {}, -foo4708: () => {}, -foo4709: () => {}, -foo4710: () => {}, -foo4711: () => {}, -foo4712: () => {}, -foo4713: () => {}, -foo4714: () => {}, -foo4715: () => {}, -foo4716: () => {}, -foo4717: () => {}, -foo4718: () => {}, -foo4719: () => {}, -foo4720: () => {}, -foo4721: () => {}, -foo4722: () => {}, -foo4723: () => {}, -foo4724: () => {}, -foo4725: () => {}, -foo4726: () => {}, -foo4727: () => {}, -foo4728: () => {}, -foo4729: () => {}, -foo4730: () => {}, -foo4731: () => {}, -foo4732: () => {}, -foo4733: () => {}, -foo4734: () => {}, -foo4735: () => {}, -foo4736: () => {}, -foo4737: () => {}, -foo4738: () => {}, -foo4739: () => {}, -foo4740: () => {}, -foo4741: () => {}, -foo4742: () => {}, -foo4743: () => {}, -foo4744: () => {}, -foo4745: () => {}, -foo4746: () => {}, -foo4747: () => {}, -foo4748: () => {}, -foo4749: () => {}, -foo4750: () => {}, -foo4751: () => {}, -foo4752: () => {}, -foo4753: () => {}, -foo4754: () => {}, -foo4755: () => {}, -foo4756: () => {}, -foo4757: () => {}, -foo4758: () => {}, -foo4759: () => {}, -foo4760: () => {}, -foo4761: () => {}, -foo4762: () => {}, -foo4763: () => {}, -foo4764: () => {}, -foo4765: () => {}, -foo4766: () => {}, -foo4767: () => {}, -foo4768: () => {}, -foo4769: () => {}, -foo4770: () => {}, -foo4771: () => {}, -foo4772: () => {}, -foo4773: () => {}, -foo4774: () => {}, -foo4775: () => {}, -foo4776: () => {}, -foo4777: () => {}, -foo4778: () => {}, -foo4779: () => {}, -foo4780: () => {}, -foo4781: () => {}, -foo4782: () => {}, -foo4783: () => {}, -foo4784: () => {}, -foo4785: () => {}, -foo4786: () => {}, -foo4787: () => {}, -foo4788: () => {}, -foo4789: () => {}, -foo4790: () => {}, -foo4791: () => {}, -foo4792: () => {}, -foo4793: () => {}, -foo4794: () => {}, -foo4795: () => {}, -foo4796: () => {}, -foo4797: () => {}, -foo4798: () => {}, -foo4799: () => {}, -foo4800: () => {}, -foo4801: () => {}, -foo4802: () => {}, -foo4803: () => {}, -foo4804: () => {}, -foo4805: () => {}, -foo4806: () => {}, -foo4807: () => {}, -foo4808: () => {}, -foo4809: () => {}, -foo4810: () => {}, -foo4811: () => {}, -foo4812: () => {}, -foo4813: () => {}, -foo4814: () => {}, -foo4815: () => {}, -foo4816: () => {}, -foo4817: () => {}, -foo4818: () => {}, -foo4819: () => {}, -foo4820: () => {}, -foo4821: () => {}, -foo4822: () => {}, -foo4823: () => {}, -foo4824: () => {}, -foo4825: () => {}, -foo4826: () => {}, -foo4827: () => {}, -foo4828: () => {}, -foo4829: () => {}, -foo4830: () => {}, -foo4831: () => {}, -foo4832: () => {}, -foo4833: () => {}, -foo4834: () => {}, -foo4835: () => {}, -foo4836: () => {}, -foo4837: () => {}, -foo4838: () => {}, -foo4839: () => {}, -foo4840: () => {}, -foo4841: () => {}, -foo4842: () => {}, -foo4843: () => {}, -foo4844: () => {}, -foo4845: () => {}, -foo4846: () => {}, -foo4847: () => {}, -foo4848: () => {}, -foo4849: () => {}, -foo4850: () => {}, -foo4851: () => {}, -foo4852: () => {}, -foo4853: () => {}, -foo4854: () => {}, -foo4855: () => {}, -foo4856: () => {}, -foo4857: () => {}, -foo4858: () => {}, -foo4859: () => {}, -foo4860: () => {}, -foo4861: () => {}, -foo4862: () => {}, -foo4863: () => {}, -foo4864: () => {}, -foo4865: () => {}, -foo4866: () => {}, -foo4867: () => {}, -foo4868: () => {}, -foo4869: () => {}, -foo4870: () => {}, -foo4871: () => {}, -foo4872: () => {}, -foo4873: () => {}, -foo4874: () => {}, -foo4875: () => {}, -foo4876: () => {}, -foo4877: () => {}, -foo4878: () => {}, -foo4879: () => {}, -foo4880: () => {}, -foo4881: () => {}, -foo4882: () => {}, -foo4883: () => {}, -foo4884: () => {}, -foo4885: () => {}, -foo4886: () => {}, -foo4887: () => {}, -foo4888: () => {}, -foo4889: () => {}, -foo4890: () => {}, -foo4891: () => {}, -foo4892: () => {}, -foo4893: () => {}, -foo4894: () => {}, -foo4895: () => {}, -foo4896: () => {}, -foo4897: () => {}, -foo4898: () => {}, -foo4899: () => {}, -foo4900: () => {}, -foo4901: () => {}, -foo4902: () => {}, -foo4903: () => {}, -foo4904: () => {}, -foo4905: () => {}, -foo4906: () => {}, -foo4907: () => {}, -foo4908: () => {}, -foo4909: () => {}, -foo4910: () => {}, -foo4911: () => {}, -foo4912: () => {}, -foo4913: () => {}, -foo4914: () => {}, -foo4915: () => {}, -foo4916: () => {}, -foo4917: () => {}, -foo4918: () => {}, -foo4919: () => {}, -foo4920: () => {}, -foo4921: () => {}, -foo4922: () => {}, -foo4923: () => {}, -foo4924: () => {}, -foo4925: () => {}, -foo4926: () => {}, -foo4927: () => {}, -foo4928: () => {}, -foo4929: () => {}, -foo4930: () => {}, -foo4931: () => {}, -foo4932: () => {}, -foo4933: () => {}, -foo4934: () => {}, -foo4935: () => {}, -foo4936: () => {}, -foo4937: () => {}, -foo4938: () => {}, -foo4939: () => {}, -foo4940: () => {}, -foo4941: () => {}, -foo4942: () => {}, -foo4943: () => {}, -foo4944: () => {}, -foo4945: () => {}, -foo4946: () => {}, -foo4947: () => {}, -foo4948: () => {}, -foo4949: () => {}, -foo4950: () => {}, -foo4951: () => {}, -foo4952: () => {}, -foo4953: () => {}, -foo4954: () => {}, -foo4955: () => {}, -foo4956: () => {}, -foo4957: () => {}, -foo4958: () => {}, -foo4959: () => {}, -foo4960: () => {}, -foo4961: () => {}, -foo4962: () => {}, -foo4963: () => {}, -foo4964: () => {}, -foo4965: () => {}, -foo4966: () => {}, -foo4967: () => {}, -foo4968: () => {}, -foo4969: () => {}, -foo4970: () => {}, -foo4971: () => {}, -foo4972: () => {}, -foo4973: () => {}, -foo4974: () => {}, -foo4975: () => {}, -foo4976: () => {}, -foo4977: () => {}, -foo4978: () => {}, -foo4979: () => {}, -foo4980: () => {}, -foo4981: () => {}, -foo4982: () => {}, -foo4983: () => {}, -foo4984: () => {}, -foo4985: () => {}, -foo4986: () => {}, -foo4987: () => {}, -foo4988: () => {}, -foo4989: () => {}, -foo4990: () => {}, -foo4991: () => {}, -foo4992: () => {}, -foo4993: () => {}, -foo4994: () => {}, -foo4995: () => {}, -foo4996: () => {}, -foo4997: () => {}, -foo4998: () => {}, -foo4999: () => {}, -foo5000: () => {}, -foo5001: () => {}, -foo5002: () => {}, -foo5003: () => {}, -foo5004: () => {}, -foo5005: () => {}, -foo5006: () => {}, -foo5007: () => {}, -foo5008: () => {}, -foo5009: () => {}, -foo5010: () => {}, -foo5011: () => {}, -foo5012: () => {}, -foo5013: () => {}, -foo5014: () => {}, -foo5015: () => {}, -foo5016: () => {}, -foo5017: () => {}, -foo5018: () => {}, -foo5019: () => {}, -foo5020: () => {}, -foo5021: () => {}, -foo5022: () => {}, -foo5023: () => {}, -foo5024: () => {}, -foo5025: () => {}, -foo5026: () => {}, -foo5027: () => {}, -foo5028: () => {}, -foo5029: () => {}, -foo5030: () => {}, -foo5031: () => {}, -foo5032: () => {}, -foo5033: () => {}, -foo5034: () => {}, -foo5035: () => {}, -foo5036: () => {}, -foo5037: () => {}, -foo5038: () => {}, -foo5039: () => {}, -foo5040: () => {}, -foo5041: () => {}, -foo5042: () => {}, -foo5043: () => {}, -foo5044: () => {}, -foo5045: () => {}, -foo5046: () => {}, -foo5047: () => {}, -foo5048: () => {}, -foo5049: () => {}, -foo5050: () => {}, -foo5051: () => {}, -foo5052: () => {}, -foo5053: () => {}, -foo5054: () => {}, -foo5055: () => {}, -foo5056: () => {}, -foo5057: () => {}, -foo5058: () => {}, -foo5059: () => {}, -foo5060: () => {}, -foo5061: () => {}, -foo5062: () => {}, -foo5063: () => {}, -foo5064: () => {}, -foo5065: () => {}, -foo5066: () => {}, -foo5067: () => {}, -foo5068: () => {}, -foo5069: () => {}, -foo5070: () => {}, -foo5071: () => {}, -foo5072: () => {}, -foo5073: () => {}, -foo5074: () => {}, -foo5075: () => {}, -foo5076: () => {}, -foo5077: () => {}, -foo5078: () => {}, -foo5079: () => {}, -foo5080: () => {}, -foo5081: () => {}, -foo5082: () => {}, -foo5083: () => {}, -foo5084: () => {}, -foo5085: () => {}, -foo5086: () => {}, -foo5087: () => {}, -foo5088: () => {}, -foo5089: () => {}, -foo5090: () => {}, -foo5091: () => {}, -foo5092: () => {}, -foo5093: () => {}, -foo5094: () => {}, -foo5095: () => {}, -foo5096: () => {}, -foo5097: () => {}, -foo5098: () => {}, -foo5099: () => {}, -foo5100: () => {}, -foo5101: () => {}, -foo5102: () => {}, -foo5103: () => {}, -foo5104: () => {}, -foo5105: () => {}, -foo5106: () => {}, -foo5107: () => {}, -foo5108: () => {}, -foo5109: () => {}, -foo5110: () => {}, -foo5111: () => {}, -foo5112: () => {}, -foo5113: () => {}, -foo5114: () => {}, -foo5115: () => {}, -foo5116: () => {}, -foo5117: () => {}, -foo5118: () => {}, -foo5119: () => {}, -foo5120: () => {}, -foo5121: () => {}, -foo5122: () => {}, -foo5123: () => {}, -foo5124: () => {}, -foo5125: () => {}, -foo5126: () => {}, -foo5127: () => {}, -foo5128: () => {}, -foo5129: () => {}, -foo5130: () => {}, -foo5131: () => {}, -foo5132: () => {}, -foo5133: () => {}, -foo5134: () => {}, -foo5135: () => {}, -foo5136: () => {}, -foo5137: () => {}, -foo5138: () => {}, -foo5139: () => {}, -foo5140: () => {}, -foo5141: () => {}, -foo5142: () => {}, -foo5143: () => {}, -foo5144: () => {}, -foo5145: () => {}, -foo5146: () => {}, -foo5147: () => {}, -foo5148: () => {}, -foo5149: () => {}, -foo5150: () => {}, -foo5151: () => {}, -foo5152: () => {}, -foo5153: () => {}, -foo5154: () => {}, -foo5155: () => {}, -foo5156: () => {}, -foo5157: () => {}, -foo5158: () => {}, -foo5159: () => {}, -foo5160: () => {}, -foo5161: () => {}, -foo5162: () => {}, -foo5163: () => {}, -foo5164: () => {}, -foo5165: () => {}, -foo5166: () => {}, -foo5167: () => {}, -foo5168: () => {}, -foo5169: () => {}, -foo5170: () => {}, -foo5171: () => {}, -foo5172: () => {}, -foo5173: () => {}, -foo5174: () => {}, -foo5175: () => {}, -foo5176: () => {}, -foo5177: () => {}, -foo5178: () => {}, -foo5179: () => {}, -foo5180: () => {}, -foo5181: () => {}, -foo5182: () => {}, -foo5183: () => {}, -foo5184: () => {}, -foo5185: () => {}, -foo5186: () => {}, -foo5187: () => {}, -foo5188: () => {}, -foo5189: () => {}, -foo5190: () => {}, -foo5191: () => {}, -foo5192: () => {}, -foo5193: () => {}, -foo5194: () => {}, -foo5195: () => {}, -foo5196: () => {}, -foo5197: () => {}, -foo5198: () => {}, -foo5199: () => {}, -foo5200: () => {}, -foo5201: () => {}, -foo5202: () => {}, -foo5203: () => {}, -foo5204: () => {}, -foo5205: () => {}, -foo5206: () => {}, -foo5207: () => {}, -foo5208: () => {}, -foo5209: () => {}, -foo5210: () => {}, -foo5211: () => {}, -foo5212: () => {}, -foo5213: () => {}, -foo5214: () => {}, -foo5215: () => {}, -foo5216: () => {}, -foo5217: () => {}, -foo5218: () => {}, -foo5219: () => {}, -foo5220: () => {}, -foo5221: () => {}, -foo5222: () => {}, -foo5223: () => {}, -foo5224: () => {}, -foo5225: () => {}, -foo5226: () => {}, -foo5227: () => {}, -foo5228: () => {}, -foo5229: () => {}, -foo5230: () => {}, -foo5231: () => {}, -foo5232: () => {}, -foo5233: () => {}, -foo5234: () => {}, -foo5235: () => {}, -foo5236: () => {}, -foo5237: () => {}, -foo5238: () => {}, -foo5239: () => {}, -foo5240: () => {}, -foo5241: () => {}, -foo5242: () => {}, -foo5243: () => {}, -foo5244: () => {}, -foo5245: () => {}, -foo5246: () => {}, -foo5247: () => {}, -foo5248: () => {}, -foo5249: () => {}, -foo5250: () => {}, -foo5251: () => {}, -foo5252: () => {}, -foo5253: () => {}, -foo5254: () => {}, -foo5255: () => {}, -foo5256: () => {}, -foo5257: () => {}, -foo5258: () => {}, -foo5259: () => {}, -foo5260: () => {}, -foo5261: () => {}, -foo5262: () => {}, -foo5263: () => {}, -foo5264: () => {}, -foo5265: () => {}, -foo5266: () => {}, -foo5267: () => {}, -foo5268: () => {}, -foo5269: () => {}, -foo5270: () => {}, -foo5271: () => {}, -foo5272: () => {}, -foo5273: () => {}, -foo5274: () => {}, -foo5275: () => {}, -foo5276: () => {}, -foo5277: () => {}, -foo5278: () => {}, -foo5279: () => {}, -foo5280: () => {}, -foo5281: () => {}, -foo5282: () => {}, -foo5283: () => {}, -foo5284: () => {}, -foo5285: () => {}, -foo5286: () => {}, -foo5287: () => {}, -foo5288: () => {}, -foo5289: () => {}, -foo5290: () => {}, -foo5291: () => {}, -foo5292: () => {}, -foo5293: () => {}, -foo5294: () => {}, -foo5295: () => {}, -foo5296: () => {}, -foo5297: () => {}, -foo5298: () => {}, -foo5299: () => {}, -foo5300: () => {}, -foo5301: () => {}, -foo5302: () => {}, -foo5303: () => {}, -foo5304: () => {}, -foo5305: () => {}, -foo5306: () => {}, -foo5307: () => {}, -foo5308: () => {}, -foo5309: () => {}, -foo5310: () => {}, -foo5311: () => {}, -foo5312: () => {}, -foo5313: () => {}, -foo5314: () => {}, -foo5315: () => {}, -foo5316: () => {}, -foo5317: () => {}, -foo5318: () => {}, -foo5319: () => {}, -foo5320: () => {}, -foo5321: () => {}, -foo5322: () => {}, -foo5323: () => {}, -foo5324: () => {}, -foo5325: () => {}, -foo5326: () => {}, -foo5327: () => {}, -foo5328: () => {}, -foo5329: () => {}, -foo5330: () => {}, -foo5331: () => {}, -foo5332: () => {}, -foo5333: () => {}, -foo5334: () => {}, -foo5335: () => {}, -foo5336: () => {}, -foo5337: () => {}, -foo5338: () => {}, -foo5339: () => {}, -foo5340: () => {}, -foo5341: () => {}, -foo5342: () => {}, -foo5343: () => {}, -foo5344: () => {}, -foo5345: () => {}, -foo5346: () => {}, -foo5347: () => {}, -foo5348: () => {}, -foo5349: () => {}, -foo5350: () => {}, -foo5351: () => {}, -foo5352: () => {}, -foo5353: () => {}, -foo5354: () => {}, -foo5355: () => {}, -foo5356: () => {}, -foo5357: () => {}, -foo5358: () => {}, -foo5359: () => {}, -foo5360: () => {}, -foo5361: () => {}, -foo5362: () => {}, -foo5363: () => {}, -foo5364: () => {}, -foo5365: () => {}, -foo5366: () => {}, -foo5367: () => {}, -foo5368: () => {}, -foo5369: () => {}, -foo5370: () => {}, -foo5371: () => {}, -foo5372: () => {}, -foo5373: () => {}, -foo5374: () => {}, -foo5375: () => {}, -foo5376: () => {}, -foo5377: () => {}, -foo5378: () => {}, -foo5379: () => {}, -foo5380: () => {}, -foo5381: () => {}, -foo5382: () => {}, -foo5383: () => {}, -foo5384: () => {}, -foo5385: () => {}, -foo5386: () => {}, -foo5387: () => {}, -foo5388: () => {}, -foo5389: () => {}, -foo5390: () => {}, -foo5391: () => {}, -foo5392: () => {}, -foo5393: () => {}, -foo5394: () => {}, -foo5395: () => {}, -foo5396: () => {}, -foo5397: () => {}, -foo5398: () => {}, -foo5399: () => {}, -foo5400: () => {}, -foo5401: () => {}, -foo5402: () => {}, -foo5403: () => {}, -foo5404: () => {}, -foo5405: () => {}, -foo5406: () => {}, -foo5407: () => {}, -foo5408: () => {}, -foo5409: () => {}, -foo5410: () => {}, -foo5411: () => {}, -foo5412: () => {}, -foo5413: () => {}, -foo5414: () => {}, -foo5415: () => {}, -foo5416: () => {}, -foo5417: () => {}, -foo5418: () => {}, -foo5419: () => {}, -foo5420: () => {}, -foo5421: () => {}, -foo5422: () => {}, -foo5423: () => {}, -foo5424: () => {}, -foo5425: () => {}, -foo5426: () => {}, -foo5427: () => {}, -foo5428: () => {}, -foo5429: () => {}, -foo5430: () => {}, -foo5431: () => {}, -foo5432: () => {}, -foo5433: () => {}, -foo5434: () => {}, -foo5435: () => {}, -foo5436: () => {}, -foo5437: () => {}, -foo5438: () => {}, -foo5439: () => {}, -foo5440: () => {}, -foo5441: () => {}, -foo5442: () => {}, -foo5443: () => {}, -foo5444: () => {}, -foo5445: () => {}, -foo5446: () => {}, -foo5447: () => {}, -foo5448: () => {}, -foo5449: () => {}, -foo5450: () => {}, -foo5451: () => {}, -foo5452: () => {}, -foo5453: () => {}, -foo5454: () => {}, -foo5455: () => {}, -foo5456: () => {}, -foo5457: () => {}, -foo5458: () => {}, -foo5459: () => {}, -foo5460: () => {}, -foo5461: () => {}, -foo5462: () => {}, -foo5463: () => {}, -foo5464: () => {}, -foo5465: () => {}, -foo5466: () => {}, -foo5467: () => {}, -foo5468: () => {}, -foo5469: () => {}, -foo5470: () => {}, -foo5471: () => {}, -foo5472: () => {}, -foo5473: () => {}, -foo5474: () => {}, -foo5475: () => {}, -foo5476: () => {}, -foo5477: () => {}, -foo5478: () => {}, -foo5479: () => {}, -foo5480: () => {}, -foo5481: () => {}, -foo5482: () => {}, -foo5483: () => {}, -foo5484: () => {}, -foo5485: () => {}, -foo5486: () => {}, -foo5487: () => {}, -foo5488: () => {}, -foo5489: () => {}, -foo5490: () => {}, -foo5491: () => {}, -foo5492: () => {}, -foo5493: () => {}, -foo5494: () => {}, -foo5495: () => {}, -foo5496: () => {}, -foo5497: () => {}, -foo5498: () => {}, -foo5499: () => {}, -foo5500: () => {}, -foo5501: () => {}, -foo5502: () => {}, -foo5503: () => {}, -foo5504: () => {}, -foo5505: () => {}, -foo5506: () => {}, -foo5507: () => {}, -foo5508: () => {}, -foo5509: () => {}, -foo5510: () => {}, -foo5511: () => {}, -foo5512: () => {}, -foo5513: () => {}, -foo5514: () => {}, -foo5515: () => {}, -foo5516: () => {}, -foo5517: () => {}, -foo5518: () => {}, -foo5519: () => {}, -foo5520: () => {}, -foo5521: () => {}, -foo5522: () => {}, -foo5523: () => {}, -foo5524: () => {}, -foo5525: () => {}, -foo5526: () => {}, -foo5527: () => {}, -foo5528: () => {}, -foo5529: () => {}, -foo5530: () => {}, -foo5531: () => {}, -foo5532: () => {}, -foo5533: () => {}, -foo5534: () => {}, -foo5535: () => {}, -foo5536: () => {}, -foo5537: () => {}, -foo5538: () => {}, -foo5539: () => {}, -foo5540: () => {}, -foo5541: () => {}, -foo5542: () => {}, -foo5543: () => {}, -foo5544: () => {}, -foo5545: () => {}, -foo5546: () => {}, -foo5547: () => {}, -foo5548: () => {}, -foo5549: () => {}, -foo5550: () => {}, -foo5551: () => {}, -foo5552: () => {}, -foo5553: () => {}, -foo5554: () => {}, -foo5555: () => {}, -foo5556: () => {}, -foo5557: () => {}, -foo5558: () => {}, -foo5559: () => {}, -foo5560: () => {}, -foo5561: () => {}, -foo5562: () => {}, -foo5563: () => {}, -foo5564: () => {}, -foo5565: () => {}, -foo5566: () => {}, -foo5567: () => {}, -foo5568: () => {}, -foo5569: () => {}, -foo5570: () => {}, -foo5571: () => {}, -foo5572: () => {}, -foo5573: () => {}, -foo5574: () => {}, -foo5575: () => {}, -foo5576: () => {}, -foo5577: () => {}, -foo5578: () => {}, -foo5579: () => {}, -foo5580: () => {}, -foo5581: () => {}, -foo5582: () => {}, -foo5583: () => {}, -foo5584: () => {}, -foo5585: () => {}, -foo5586: () => {}, -foo5587: () => {}, -foo5588: () => {}, -foo5589: () => {}, -foo5590: () => {}, -foo5591: () => {}, -foo5592: () => {}, -foo5593: () => {}, -foo5594: () => {}, -foo5595: () => {}, -foo5596: () => {}, -foo5597: () => {}, -foo5598: () => {}, -foo5599: () => {}, -foo5600: () => {}, -foo5601: () => {}, -foo5602: () => {}, -foo5603: () => {}, -foo5604: () => {}, -foo5605: () => {}, -foo5606: () => {}, -foo5607: () => {}, -foo5608: () => {}, -foo5609: () => {}, -foo5610: () => {}, -foo5611: () => {}, -foo5612: () => {}, -foo5613: () => {}, -foo5614: () => {}, -foo5615: () => {}, -foo5616: () => {}, -foo5617: () => {}, -foo5618: () => {}, -foo5619: () => {}, -foo5620: () => {}, -foo5621: () => {}, -foo5622: () => {}, -foo5623: () => {}, -foo5624: () => {}, -foo5625: () => {}, -foo5626: () => {}, -foo5627: () => {}, -foo5628: () => {}, -foo5629: () => {}, -foo5630: () => {}, -foo5631: () => {}, -foo5632: () => {}, -foo5633: () => {}, -foo5634: () => {}, -foo5635: () => {}, -foo5636: () => {}, -foo5637: () => {}, -foo5638: () => {}, -foo5639: () => {}, -foo5640: () => {}, -foo5641: () => {}, -foo5642: () => {}, -foo5643: () => {}, -foo5644: () => {}, -foo5645: () => {}, -foo5646: () => {}, -foo5647: () => {}, -foo5648: () => {}, -foo5649: () => {}, -foo5650: () => {}, -foo5651: () => {}, -foo5652: () => {}, -foo5653: () => {}, -foo5654: () => {}, -foo5655: () => {}, -foo5656: () => {}, -foo5657: () => {}, -foo5658: () => {}, -foo5659: () => {}, -foo5660: () => {}, -foo5661: () => {}, -foo5662: () => {}, -foo5663: () => {}, -foo5664: () => {}, -foo5665: () => {}, -foo5666: () => {}, -foo5667: () => {}, -foo5668: () => {}, -foo5669: () => {}, -foo5670: () => {}, -foo5671: () => {}, -foo5672: () => {}, -foo5673: () => {}, -foo5674: () => {}, -foo5675: () => {}, -foo5676: () => {}, -foo5677: () => {}, -foo5678: () => {}, -foo5679: () => {}, -foo5680: () => {}, -foo5681: () => {}, -foo5682: () => {}, -foo5683: () => {}, -foo5684: () => {}, -foo5685: () => {}, -foo5686: () => {}, -foo5687: () => {}, -foo5688: () => {}, -foo5689: () => {}, -foo5690: () => {}, -foo5691: () => {}, -foo5692: () => {}, -foo5693: () => {}, -foo5694: () => {}, -foo5695: () => {}, -foo5696: () => {}, -foo5697: () => {}, -foo5698: () => {}, -foo5699: () => {}, -foo5700: () => {}, -foo5701: () => {}, -foo5702: () => {}, -foo5703: () => {}, -foo5704: () => {}, -foo5705: () => {}, -foo5706: () => {}, -foo5707: () => {}, -foo5708: () => {}, -foo5709: () => {}, -foo5710: () => {}, -foo5711: () => {}, -foo5712: () => {}, -foo5713: () => {}, -foo5714: () => {}, -foo5715: () => {}, -foo5716: () => {}, -foo5717: () => {}, -foo5718: () => {}, -foo5719: () => {}, -foo5720: () => {}, -foo5721: () => {}, -foo5722: () => {}, -foo5723: () => {}, -foo5724: () => {}, -foo5725: () => {}, -foo5726: () => {}, -foo5727: () => {}, -foo5728: () => {}, -foo5729: () => {}, -foo5730: () => {}, -foo5731: () => {}, -foo5732: () => {}, -foo5733: () => {}, -foo5734: () => {}, -foo5735: () => {}, -foo5736: () => {}, -foo5737: () => {}, -foo5738: () => {}, -foo5739: () => {}, -foo5740: () => {}, -foo5741: () => {}, -foo5742: () => {}, -foo5743: () => {}, -foo5744: () => {}, -foo5745: () => {}, -foo5746: () => {}, -foo5747: () => {}, -foo5748: () => {}, -foo5749: () => {}, -foo5750: () => {}, -foo5751: () => {}, -foo5752: () => {}, -foo5753: () => {}, -foo5754: () => {}, -foo5755: () => {}, -foo5756: () => {}, -foo5757: () => {}, -foo5758: () => {}, -foo5759: () => {}, -foo5760: () => {}, -foo5761: () => {}, -foo5762: () => {}, -foo5763: () => {}, -foo5764: () => {}, -foo5765: () => {}, -foo5766: () => {}, -foo5767: () => {}, -foo5768: () => {}, -foo5769: () => {}, -foo5770: () => {}, -foo5771: () => {}, -foo5772: () => {}, -foo5773: () => {}, -foo5774: () => {}, -foo5775: () => {}, -foo5776: () => {}, -foo5777: () => {}, -foo5778: () => {}, -foo5779: () => {}, -foo5780: () => {}, -foo5781: () => {}, -foo5782: () => {}, -foo5783: () => {}, -foo5784: () => {}, -foo5785: () => {}, -foo5786: () => {}, -foo5787: () => {}, -foo5788: () => {}, -foo5789: () => {}, -foo5790: () => {}, -foo5791: () => {}, -foo5792: () => {}, -foo5793: () => {}, -foo5794: () => {}, -foo5795: () => {}, -foo5796: () => {}, -foo5797: () => {}, -foo5798: () => {}, -foo5799: () => {}, -foo5800: () => {}, -foo5801: () => {}, -foo5802: () => {}, -foo5803: () => {}, -foo5804: () => {}, -foo5805: () => {}, -foo5806: () => {}, -foo5807: () => {}, -foo5808: () => {}, -foo5809: () => {}, -foo5810: () => {}, -foo5811: () => {}, -foo5812: () => {}, -foo5813: () => {}, -foo5814: () => {}, -foo5815: () => {}, -foo5816: () => {}, -foo5817: () => {}, -foo5818: () => {}, -foo5819: () => {}, -foo5820: () => {}, -foo5821: () => {}, -foo5822: () => {}, -foo5823: () => {}, -foo5824: () => {}, -foo5825: () => {}, -foo5826: () => {}, -foo5827: () => {}, -foo5828: () => {}, -foo5829: () => {}, -foo5830: () => {}, -foo5831: () => {}, -foo5832: () => {}, -foo5833: () => {}, -foo5834: () => {}, -foo5835: () => {}, -foo5836: () => {}, -foo5837: () => {}, -foo5838: () => {}, -foo5839: () => {}, -foo5840: () => {}, -foo5841: () => {}, -foo5842: () => {}, -foo5843: () => {}, -foo5844: () => {}, -foo5845: () => {}, -foo5846: () => {}, -foo5847: () => {}, -foo5848: () => {}, -foo5849: () => {}, -foo5850: () => {}, -foo5851: () => {}, -foo5852: () => {}, -foo5853: () => {}, -foo5854: () => {}, -foo5855: () => {}, -foo5856: () => {}, -foo5857: () => {}, -foo5858: () => {}, -foo5859: () => {}, -foo5860: () => {}, -foo5861: () => {}, -foo5862: () => {}, -foo5863: () => {}, -foo5864: () => {}, -foo5865: () => {}, -foo5866: () => {}, -foo5867: () => {}, -foo5868: () => {}, -foo5869: () => {}, -foo5870: () => {}, -foo5871: () => {}, -foo5872: () => {}, -foo5873: () => {}, -foo5874: () => {}, -foo5875: () => {}, -foo5876: () => {}, -foo5877: () => {}, -foo5878: () => {}, -foo5879: () => {}, -foo5880: () => {}, -foo5881: () => {}, -foo5882: () => {}, -foo5883: () => {}, -foo5884: () => {}, -foo5885: () => {}, -foo5886: () => {}, -foo5887: () => {}, -foo5888: () => {}, -foo5889: () => {}, -foo5890: () => {}, -foo5891: () => {}, -foo5892: () => {}, -foo5893: () => {}, -foo5894: () => {}, -foo5895: () => {}, -foo5896: () => {}, -foo5897: () => {}, -foo5898: () => {}, -foo5899: () => {}, -foo5900: () => {}, -foo5901: () => {}, -foo5902: () => {}, -foo5903: () => {}, -foo5904: () => {}, -foo5905: () => {}, -foo5906: () => {}, -foo5907: () => {}, -foo5908: () => {}, -foo5909: () => {}, -foo5910: () => {}, -foo5911: () => {}, -foo5912: () => {}, -foo5913: () => {}, -foo5914: () => {}, -foo5915: () => {}, -foo5916: () => {}, -foo5917: () => {}, -foo5918: () => {}, -foo5919: () => {}, -foo5920: () => {}, -foo5921: () => {}, -foo5922: () => {}, -foo5923: () => {}, -foo5924: () => {}, -foo5925: () => {}, -foo5926: () => {}, -foo5927: () => {}, -foo5928: () => {}, -foo5929: () => {}, -foo5930: () => {}, -foo5931: () => {}, -foo5932: () => {}, -foo5933: () => {}, -foo5934: () => {}, -foo5935: () => {}, -foo5936: () => {}, -foo5937: () => {}, -foo5938: () => {}, -foo5939: () => {}, -foo5940: () => {}, -foo5941: () => {}, -foo5942: () => {}, -foo5943: () => {}, -foo5944: () => {}, -foo5945: () => {}, -foo5946: () => {}, -foo5947: () => {}, -foo5948: () => {}, -foo5949: () => {}, -foo5950: () => {}, -foo5951: () => {}, -foo5952: () => {}, -foo5953: () => {}, -foo5954: () => {}, -foo5955: () => {}, -foo5956: () => {}, -foo5957: () => {}, -foo5958: () => {}, -foo5959: () => {}, -foo5960: () => {}, -foo5961: () => {}, -foo5962: () => {}, -foo5963: () => {}, -foo5964: () => {}, -foo5965: () => {}, -foo5966: () => {}, -foo5967: () => {}, -foo5968: () => {}, -foo5969: () => {}, -foo5970: () => {}, -foo5971: () => {}, -foo5972: () => {}, -foo5973: () => {}, -foo5974: () => {}, -foo5975: () => {}, -foo5976: () => {}, -foo5977: () => {}, -foo5978: () => {}, -foo5979: () => {}, -foo5980: () => {}, -foo5981: () => {}, -foo5982: () => {}, -foo5983: () => {}, -foo5984: () => {}, -foo5985: () => {}, -foo5986: () => {}, -foo5987: () => {}, -foo5988: () => {}, -foo5989: () => {}, -foo5990: () => {}, -foo5991: () => {}, -foo5992: () => {}, -foo5993: () => {}, -foo5994: () => {}, -foo5995: () => {}, -foo5996: () => {}, -foo5997: () => {}, -foo5998: () => {}, -foo5999: () => {}, -foo6000: () => {}, -foo6001: () => {}, -foo6002: () => {}, -foo6003: () => {}, -foo6004: () => {}, -foo6005: () => {}, -foo6006: () => {}, -foo6007: () => {}, -foo6008: () => {}, -foo6009: () => {}, -foo6010: () => {}, -foo6011: () => {}, -foo6012: () => {}, -foo6013: () => {}, -foo6014: () => {}, -foo6015: () => {}, -foo6016: () => {}, -foo6017: () => {}, -foo6018: () => {}, -foo6019: () => {}, -foo6020: () => {}, -foo6021: () => {}, -foo6022: () => {}, -foo6023: () => {}, -foo6024: () => {}, -foo6025: () => {}, -foo6026: () => {}, -foo6027: () => {}, -foo6028: () => {}, -foo6029: () => {}, -foo6030: () => {}, -foo6031: () => {}, -foo6032: () => {}, -foo6033: () => {}, -foo6034: () => {}, -foo6035: () => {}, -foo6036: () => {}, -foo6037: () => {}, -foo6038: () => {}, -foo6039: () => {}, -foo6040: () => {}, -foo6041: () => {}, -foo6042: () => {}, -foo6043: () => {}, -foo6044: () => {}, -foo6045: () => {}, -foo6046: () => {}, -foo6047: () => {}, -foo6048: () => {}, -foo6049: () => {}, -foo6050: () => {}, -foo6051: () => {}, -foo6052: () => {}, -foo6053: () => {}, -foo6054: () => {}, -foo6055: () => {}, -foo6056: () => {}, -foo6057: () => {}, -foo6058: () => {}, -foo6059: () => {}, -foo6060: () => {}, -foo6061: () => {}, -foo6062: () => {}, -foo6063: () => {}, -foo6064: () => {}, -foo6065: () => {}, -foo6066: () => {}, -foo6067: () => {}, -foo6068: () => {}, -foo6069: () => {}, -foo6070: () => {}, -foo6071: () => {}, -foo6072: () => {}, -foo6073: () => {}, -foo6074: () => {}, -foo6075: () => {}, -foo6076: () => {}, -foo6077: () => {}, -foo6078: () => {}, -foo6079: () => {}, -foo6080: () => {}, -foo6081: () => {}, -foo6082: () => {}, -foo6083: () => {}, -foo6084: () => {}, -foo6085: () => {}, -foo6086: () => {}, -foo6087: () => {}, -foo6088: () => {}, -foo6089: () => {}, -foo6090: () => {}, -foo6091: () => {}, -foo6092: () => {}, -foo6093: () => {}, -foo6094: () => {}, -foo6095: () => {}, -foo6096: () => {}, -foo6097: () => {}, -foo6098: () => {}, -foo6099: () => {}, -foo6100: () => {}, -foo6101: () => {}, -foo6102: () => {}, -foo6103: () => {}, -foo6104: () => {}, -foo6105: () => {}, -foo6106: () => {}, -foo6107: () => {}, -foo6108: () => {}, -foo6109: () => {}, -foo6110: () => {}, -foo6111: () => {}, -foo6112: () => {}, -foo6113: () => {}, -foo6114: () => {}, -foo6115: () => {}, -foo6116: () => {}, -foo6117: () => {}, -foo6118: () => {}, -foo6119: () => {}, -foo6120: () => {}, -foo6121: () => {}, -foo6122: () => {}, -foo6123: () => {}, -foo6124: () => {}, -foo6125: () => {}, -foo6126: () => {}, -foo6127: () => {}, -foo6128: () => {}, -foo6129: () => {}, -foo6130: () => {}, -foo6131: () => {}, -foo6132: () => {}, -foo6133: () => {}, -foo6134: () => {}, -foo6135: () => {}, -foo6136: () => {}, -foo6137: () => {}, -foo6138: () => {}, -foo6139: () => {}, -foo6140: () => {}, -foo6141: () => {}, -foo6142: () => {}, -foo6143: () => {}, -foo6144: () => {}, -foo6145: () => {}, -foo6146: () => {}, -foo6147: () => {}, -foo6148: () => {}, -foo6149: () => {}, -foo6150: () => {}, -foo6151: () => {}, -foo6152: () => {}, -foo6153: () => {}, -foo6154: () => {}, -foo6155: () => {}, -foo6156: () => {}, -foo6157: () => {}, -foo6158: () => {}, -foo6159: () => {}, -foo6160: () => {}, -foo6161: () => {}, -foo6162: () => {}, -foo6163: () => {}, -foo6164: () => {}, -foo6165: () => {}, -foo6166: () => {}, -foo6167: () => {}, -foo6168: () => {}, -foo6169: () => {}, -foo6170: () => {}, -foo6171: () => {}, -foo6172: () => {}, -foo6173: () => {}, -foo6174: () => {}, -foo6175: () => {}, -foo6176: () => {}, -foo6177: () => {}, -foo6178: () => {}, -foo6179: () => {}, -foo6180: () => {}, -foo6181: () => {}, -foo6182: () => {}, -foo6183: () => {}, -foo6184: () => {}, -foo6185: () => {}, -foo6186: () => {}, -foo6187: () => {}, -foo6188: () => {}, -foo6189: () => {}, -foo6190: () => {}, -foo6191: () => {}, -foo6192: () => {}, -foo6193: () => {}, -foo6194: () => {}, -foo6195: () => {}, -foo6196: () => {}, -foo6197: () => {}, -foo6198: () => {}, -foo6199: () => {}, -foo6200: () => {}, -foo6201: () => {}, -foo6202: () => {}, -foo6203: () => {}, -foo6204: () => {}, -foo6205: () => {}, -foo6206: () => {}, -foo6207: () => {}, -foo6208: () => {}, -foo6209: () => {}, -foo6210: () => {}, -foo6211: () => {}, -foo6212: () => {}, -foo6213: () => {}, -foo6214: () => {}, -foo6215: () => {}, -foo6216: () => {}, -foo6217: () => {}, -foo6218: () => {}, -foo6219: () => {}, -foo6220: () => {}, -foo6221: () => {}, -foo6222: () => {}, -foo6223: () => {}, -foo6224: () => {}, -foo6225: () => {}, -foo6226: () => {}, -foo6227: () => {}, -foo6228: () => {}, -foo6229: () => {}, -foo6230: () => {}, -foo6231: () => {}, -foo6232: () => {}, -foo6233: () => {}, -foo6234: () => {}, -foo6235: () => {}, -foo6236: () => {}, -foo6237: () => {}, -foo6238: () => {}, -foo6239: () => {}, -foo6240: () => {}, -foo6241: () => {}, -foo6242: () => {}, -foo6243: () => {}, -foo6244: () => {}, -foo6245: () => {}, -foo6246: () => {}, -foo6247: () => {}, -foo6248: () => {}, -foo6249: () => {}, -foo6250: () => {}, -foo6251: () => {}, -foo6252: () => {}, -foo6253: () => {}, -foo6254: () => {}, -foo6255: () => {}, -foo6256: () => {}, -foo6257: () => {}, -foo6258: () => {}, -foo6259: () => {}, -foo6260: () => {}, -foo6261: () => {}, -foo6262: () => {}, -foo6263: () => {}, -foo6264: () => {}, -foo6265: () => {}, -foo6266: () => {}, -foo6267: () => {}, -foo6268: () => {}, -foo6269: () => {}, -foo6270: () => {}, -foo6271: () => {}, -foo6272: () => {}, -foo6273: () => {}, -foo6274: () => {}, -foo6275: () => {}, -foo6276: () => {}, -foo6277: () => {}, -foo6278: () => {}, -foo6279: () => {}, -foo6280: () => {}, -foo6281: () => {}, -foo6282: () => {}, -foo6283: () => {}, -foo6284: () => {}, -foo6285: () => {}, -foo6286: () => {}, -foo6287: () => {}, -foo6288: () => {}, -foo6289: () => {}, -foo6290: () => {}, -foo6291: () => {}, -foo6292: () => {}, -foo6293: () => {}, -foo6294: () => {}, -foo6295: () => {}, -foo6296: () => {}, -foo6297: () => {}, -foo6298: () => {}, -foo6299: () => {}, -foo6300: () => {}, -foo6301: () => {}, -foo6302: () => {}, -foo6303: () => {}, -foo6304: () => {}, -foo6305: () => {}, -foo6306: () => {}, -foo6307: () => {}, -foo6308: () => {}, -foo6309: () => {}, -foo6310: () => {}, -foo6311: () => {}, -foo6312: () => {}, -foo6313: () => {}, -foo6314: () => {}, -foo6315: () => {}, -foo6316: () => {}, -foo6317: () => {}, -foo6318: () => {}, -foo6319: () => {}, -foo6320: () => {}, -foo6321: () => {}, -foo6322: () => {}, -foo6323: () => {}, -foo6324: () => {}, -foo6325: () => {}, -foo6326: () => {}, -foo6327: () => {}, -foo6328: () => {}, -foo6329: () => {}, -foo6330: () => {}, -foo6331: () => {}, -foo6332: () => {}, -foo6333: () => {}, -foo6334: () => {}, -foo6335: () => {}, -foo6336: () => {}, -foo6337: () => {}, -foo6338: () => {}, -foo6339: () => {}, -foo6340: () => {}, -foo6341: () => {}, -foo6342: () => {}, -foo6343: () => {}, -foo6344: () => {}, -foo6345: () => {}, -foo6346: () => {}, -foo6347: () => {}, -foo6348: () => {}, -foo6349: () => {}, -foo6350: () => {}, -foo6351: () => {}, -foo6352: () => {}, -foo6353: () => {}, -foo6354: () => {}, -foo6355: () => {}, -foo6356: () => {}, -foo6357: () => {}, -foo6358: () => {}, -foo6359: () => {}, -foo6360: () => {}, -foo6361: () => {}, -foo6362: () => {}, -foo6363: () => {}, -foo6364: () => {}, -foo6365: () => {}, -foo6366: () => {}, -foo6367: () => {}, -foo6368: () => {}, -foo6369: () => {}, -foo6370: () => {}, -foo6371: () => {}, -foo6372: () => {}, -foo6373: () => {}, -foo6374: () => {}, -foo6375: () => {}, -foo6376: () => {}, -foo6377: () => {}, -foo6378: () => {}, -foo6379: () => {}, -foo6380: () => {}, -foo6381: () => {}, -foo6382: () => {}, -foo6383: () => {}, -foo6384: () => {}, -foo6385: () => {}, -foo6386: () => {}, -foo6387: () => {}, -foo6388: () => {}, -foo6389: () => {}, -foo6390: () => {}, -foo6391: () => {}, -foo6392: () => {}, -foo6393: () => {}, -foo6394: () => {}, -foo6395: () => {}, -foo6396: () => {}, -foo6397: () => {}, -foo6398: () => {}, -foo6399: () => {}, -foo6400: () => {}, -foo6401: () => {}, -foo6402: () => {}, -foo6403: () => {}, -foo6404: () => {}, -foo6405: () => {}, -foo6406: () => {}, -foo6407: () => {}, -foo6408: () => {}, -foo6409: () => {}, -foo6410: () => {}, -foo6411: () => {}, -foo6412: () => {}, -foo6413: () => {}, -foo6414: () => {}, -foo6415: () => {}, -foo6416: () => {}, -foo6417: () => {}, -foo6418: () => {}, -foo6419: () => {}, -foo6420: () => {}, -foo6421: () => {}, -foo6422: () => {}, -foo6423: () => {}, -foo6424: () => {}, -foo6425: () => {}, -foo6426: () => {}, -foo6427: () => {}, -foo6428: () => {}, -foo6429: () => {}, -foo6430: () => {}, -foo6431: () => {}, -foo6432: () => {}, -foo6433: () => {}, -foo6434: () => {}, -foo6435: () => {}, -foo6436: () => {}, -foo6437: () => {}, -foo6438: () => {}, -foo6439: () => {}, -foo6440: () => {}, -foo6441: () => {}, -foo6442: () => {}, -foo6443: () => {}, -foo6444: () => {}, -foo6445: () => {}, -foo6446: () => {}, -foo6447: () => {}, -foo6448: () => {}, -foo6449: () => {}, -foo6450: () => {}, -foo6451: () => {}, -foo6452: () => {}, -foo6453: () => {}, -foo6454: () => {}, -foo6455: () => {}, -foo6456: () => {}, -foo6457: () => {}, -foo6458: () => {}, -foo6459: () => {}, -foo6460: () => {}, -foo6461: () => {}, -foo6462: () => {}, -foo6463: () => {}, -foo6464: () => {}, -foo6465: () => {}, -foo6466: () => {}, -foo6467: () => {}, -foo6468: () => {}, -foo6469: () => {}, -foo6470: () => {}, -foo6471: () => {}, -foo6472: () => {}, -foo6473: () => {}, -foo6474: () => {}, -foo6475: () => {}, -foo6476: () => {}, -foo6477: () => {}, -foo6478: () => {}, -foo6479: () => {}, -foo6480: () => {}, -foo6481: () => {}, -foo6482: () => {}, -foo6483: () => {}, -foo6484: () => {}, -foo6485: () => {}, -foo6486: () => {}, -foo6487: () => {}, -foo6488: () => {}, -foo6489: () => {}, -foo6490: () => {}, -foo6491: () => {}, -foo6492: () => {}, -foo6493: () => {}, -foo6494: () => {}, -foo6495: () => {}, -foo6496: () => {}, -foo6497: () => {}, -foo6498: () => {}, -foo6499: () => {}, -foo6500: () => {}, -foo6501: () => {}, -foo6502: () => {}, -foo6503: () => {}, -foo6504: () => {}, -foo6505: () => {}, -foo6506: () => {}, -foo6507: () => {}, -foo6508: () => {}, -foo6509: () => {}, -foo6510: () => {}, -foo6511: () => {}, -foo6512: () => {}, -foo6513: () => {}, -foo6514: () => {}, -foo6515: () => {}, -foo6516: () => {}, -foo6517: () => {}, -foo6518: () => {}, -foo6519: () => {}, -foo6520: () => {}, -foo6521: () => {}, -foo6522: () => {}, -foo6523: () => {}, -foo6524: () => {}, -foo6525: () => {}, -foo6526: () => {}, -foo6527: () => {}, -foo6528: () => {}, -foo6529: () => {}, -foo6530: () => {}, -foo6531: () => {}, -foo6532: () => {}, -foo6533: () => {}, -foo6534: () => {}, -foo6535: () => {}, -foo6536: () => {}, -foo6537: () => {}, -foo6538: () => {}, -foo6539: () => {}, -foo6540: () => {}, -foo6541: () => {}, -foo6542: () => {}, -foo6543: () => {}, -foo6544: () => {}, -foo6545: () => {}, -foo6546: () => {}, -foo6547: () => {}, -foo6548: () => {}, -foo6549: () => {}, -foo6550: () => {}, -foo6551: () => {}, -foo6552: () => {}, -foo6553: () => {}, -foo6554: () => {}, -foo6555: () => {}, -foo6556: () => {}, -foo6557: () => {}, -foo6558: () => {}, -foo6559: () => {}, -foo6560: () => {}, -foo6561: () => {}, -foo6562: () => {}, -foo6563: () => {}, -foo6564: () => {}, -foo6565: () => {}, -foo6566: () => {}, -foo6567: () => {}, -foo6568: () => {}, -foo6569: () => {}, -foo6570: () => {}, -foo6571: () => {}, -foo6572: () => {}, -foo6573: () => {}, -foo6574: () => {}, -foo6575: () => {}, -foo6576: () => {}, -foo6577: () => {}, -foo6578: () => {}, -foo6579: () => {}, -foo6580: () => {}, -foo6581: () => {}, -foo6582: () => {}, -foo6583: () => {}, -foo6584: () => {}, -foo6585: () => {}, -foo6586: () => {}, -foo6587: () => {}, -foo6588: () => {}, -foo6589: () => {}, -foo6590: () => {}, -foo6591: () => {}, -foo6592: () => {}, -foo6593: () => {}, -foo6594: () => {}, -foo6595: () => {}, -foo6596: () => {}, -foo6597: () => {}, -foo6598: () => {}, -foo6599: () => {}, -foo6600: () => {}, -foo6601: () => {}, -foo6602: () => {}, -foo6603: () => {}, -foo6604: () => {}, -foo6605: () => {}, -foo6606: () => {}, -foo6607: () => {}, -foo6608: () => {}, -foo6609: () => {}, -foo6610: () => {}, -foo6611: () => {}, -foo6612: () => {}, -foo6613: () => {}, -foo6614: () => {}, -foo6615: () => {}, -foo6616: () => {}, -foo6617: () => {}, -foo6618: () => {}, -foo6619: () => {}, -foo6620: () => {}, -foo6621: () => {}, -foo6622: () => {}, -foo6623: () => {}, -foo6624: () => {}, -foo6625: () => {}, -foo6626: () => {}, -foo6627: () => {}, -foo6628: () => {}, -foo6629: () => {}, -foo6630: () => {}, -foo6631: () => {}, -foo6632: () => {}, -foo6633: () => {}, -foo6634: () => {}, -foo6635: () => {}, -foo6636: () => {}, -foo6637: () => {}, -foo6638: () => {}, -foo6639: () => {}, -foo6640: () => {}, -foo6641: () => {}, -foo6642: () => {}, -foo6643: () => {}, -foo6644: () => {}, -foo6645: () => {}, -foo6646: () => {}, -foo6647: () => {}, -foo6648: () => {}, -foo6649: () => {}, -foo6650: () => {}, -foo6651: () => {}, -foo6652: () => {}, -foo6653: () => {}, -foo6654: () => {}, -foo6655: () => {}, -foo6656: () => {}, -foo6657: () => {}, -foo6658: () => {}, -foo6659: () => {}, -foo6660: () => {}, -foo6661: () => {}, -foo6662: () => {}, -foo6663: () => {}, -foo6664: () => {}, -foo6665: () => {}, -foo6666: () => {}, -foo6667: () => {}, -foo6668: () => {}, -foo6669: () => {}, -foo6670: () => {}, -foo6671: () => {}, -foo6672: () => {}, -foo6673: () => {}, -foo6674: () => {}, -foo6675: () => {}, -foo6676: () => {}, -foo6677: () => {}, -foo6678: () => {}, -foo6679: () => {}, -foo6680: () => {}, -foo6681: () => {}, -foo6682: () => {}, -foo6683: () => {}, -foo6684: () => {}, -foo6685: () => {}, -foo6686: () => {}, -foo6687: () => {}, -foo6688: () => {}, -foo6689: () => {}, -foo6690: () => {}, -foo6691: () => {}, -foo6692: () => {}, -foo6693: () => {}, -foo6694: () => {}, -foo6695: () => {}, -foo6696: () => {}, -foo6697: () => {}, -foo6698: () => {}, -foo6699: () => {}, -foo6700: () => {}, -foo6701: () => {}, -foo6702: () => {}, -foo6703: () => {}, -foo6704: () => {}, -foo6705: () => {}, -foo6706: () => {}, -foo6707: () => {}, -foo6708: () => {}, -foo6709: () => {}, -foo6710: () => {}, -foo6711: () => {}, -foo6712: () => {}, -foo6713: () => {}, -foo6714: () => {}, -foo6715: () => {}, -foo6716: () => {}, -foo6717: () => {}, -foo6718: () => {}, -foo6719: () => {}, -foo6720: () => {}, -foo6721: () => {}, -foo6722: () => {}, -foo6723: () => {}, -foo6724: () => {}, -foo6725: () => {}, -foo6726: () => {}, -foo6727: () => {}, -foo6728: () => {}, -foo6729: () => {}, -foo6730: () => {}, -foo6731: () => {}, -foo6732: () => {}, -foo6733: () => {}, -foo6734: () => {}, -foo6735: () => {}, -foo6736: () => {}, -foo6737: () => {}, -foo6738: () => {}, -foo6739: () => {}, -foo6740: () => {}, -foo6741: () => {}, -foo6742: () => {}, -foo6743: () => {}, -foo6744: () => {}, -foo6745: () => {}, -foo6746: () => {}, -foo6747: () => {}, -foo6748: () => {}, -foo6749: () => {}, -foo6750: () => {}, -foo6751: () => {}, -foo6752: () => {}, -foo6753: () => {}, -foo6754: () => {}, -foo6755: () => {}, -foo6756: () => {}, -foo6757: () => {}, -foo6758: () => {}, -foo6759: () => {}, -foo6760: () => {}, -foo6761: () => {}, -foo6762: () => {}, -foo6763: () => {}, -foo6764: () => {}, -foo6765: () => {}, -foo6766: () => {}, -foo6767: () => {}, -foo6768: () => {}, -foo6769: () => {}, -foo6770: () => {}, -foo6771: () => {}, -foo6772: () => {}, -foo6773: () => {}, -foo6774: () => {}, -foo6775: () => {}, -foo6776: () => {}, -foo6777: () => {}, -foo6778: () => {}, -foo6779: () => {}, -foo6780: () => {}, -foo6781: () => {}, -foo6782: () => {}, -foo6783: () => {}, -foo6784: () => {}, -foo6785: () => {}, -foo6786: () => {}, -foo6787: () => {}, -foo6788: () => {}, -foo6789: () => {}, -foo6790: () => {}, -foo6791: () => {}, -foo6792: () => {}, -foo6793: () => {}, -foo6794: () => {}, -foo6795: () => {}, -foo6796: () => {}, -foo6797: () => {}, -foo6798: () => {}, -foo6799: () => {}, -foo6800: () => {}, -foo6801: () => {}, -foo6802: () => {}, -foo6803: () => {}, -foo6804: () => {}, -foo6805: () => {}, -foo6806: () => {}, -foo6807: () => {}, -foo6808: () => {}, -foo6809: () => {}, -foo6810: () => {}, -foo6811: () => {}, -foo6812: () => {}, -foo6813: () => {}, -foo6814: () => {}, -foo6815: () => {}, -foo6816: () => {}, -foo6817: () => {}, -foo6818: () => {}, -foo6819: () => {}, -foo6820: () => {}, -foo6821: () => {}, -foo6822: () => {}, -foo6823: () => {}, -foo6824: () => {}, -foo6825: () => {}, -foo6826: () => {}, -foo6827: () => {}, -foo6828: () => {}, -foo6829: () => {}, -foo6830: () => {}, -foo6831: () => {}, -foo6832: () => {}, -foo6833: () => {}, -foo6834: () => {}, -foo6835: () => {}, -foo6836: () => {}, -foo6837: () => {}, -foo6838: () => {}, -foo6839: () => {}, -foo6840: () => {}, -foo6841: () => {}, -foo6842: () => {}, -foo6843: () => {}, -foo6844: () => {}, -foo6845: () => {}, -foo6846: () => {}, -foo6847: () => {}, -foo6848: () => {}, -foo6849: () => {}, -foo6850: () => {}, -foo6851: () => {}, -foo6852: () => {}, -foo6853: () => {}, -foo6854: () => {}, -foo6855: () => {}, -foo6856: () => {}, -foo6857: () => {}, -foo6858: () => {}, -foo6859: () => {}, -foo6860: () => {}, -foo6861: () => {}, -foo6862: () => {}, -foo6863: () => {}, -foo6864: () => {}, -foo6865: () => {}, -foo6866: () => {}, -foo6867: () => {}, -foo6868: () => {}, -foo6869: () => {}, -foo6870: () => {}, -foo6871: () => {}, -foo6872: () => {}, -foo6873: () => {}, -foo6874: () => {}, -foo6875: () => {}, -foo6876: () => {}, -foo6877: () => {}, -foo6878: () => {}, -foo6879: () => {}, -foo6880: () => {}, -foo6881: () => {}, -foo6882: () => {}, -foo6883: () => {}, -foo6884: () => {}, -foo6885: () => {}, -foo6886: () => {}, -foo6887: () => {}, -foo6888: () => {}, -foo6889: () => {}, -foo6890: () => {}, -foo6891: () => {}, -foo6892: () => {}, -foo6893: () => {}, -foo6894: () => {}, -foo6895: () => {}, -foo6896: () => {}, -foo6897: () => {}, -foo6898: () => {}, -foo6899: () => {}, -foo6900: () => {}, -foo6901: () => {}, -foo6902: () => {}, -foo6903: () => {}, -foo6904: () => {}, -foo6905: () => {}, -foo6906: () => {}, -foo6907: () => {}, -foo6908: () => {}, -foo6909: () => {}, -foo6910: () => {}, -foo6911: () => {}, -foo6912: () => {}, -foo6913: () => {}, -foo6914: () => {}, -foo6915: () => {}, -foo6916: () => {}, -foo6917: () => {}, -foo6918: () => {}, -foo6919: () => {}, -foo6920: () => {}, -foo6921: () => {}, -foo6922: () => {}, -foo6923: () => {}, -foo6924: () => {}, -foo6925: () => {}, -foo6926: () => {}, -foo6927: () => {}, -foo6928: () => {}, -foo6929: () => {}, -foo6930: () => {}, -foo6931: () => {}, -foo6932: () => {}, -foo6933: () => {}, -foo6934: () => {}, -foo6935: () => {}, -foo6936: () => {}, -foo6937: () => {}, -foo6938: () => {}, -foo6939: () => {}, -foo6940: () => {}, -foo6941: () => {}, -foo6942: () => {}, -foo6943: () => {}, -foo6944: () => {}, -foo6945: () => {}, -foo6946: () => {}, -foo6947: () => {}, -foo6948: () => {}, -foo6949: () => {}, -foo6950: () => {}, -foo6951: () => {}, -foo6952: () => {}, -foo6953: () => {}, -foo6954: () => {}, -foo6955: () => {}, -foo6956: () => {}, -foo6957: () => {}, -foo6958: () => {}, -foo6959: () => {}, -foo6960: () => {}, -foo6961: () => {}, -foo6962: () => {}, -foo6963: () => {}, -foo6964: () => {}, -foo6965: () => {}, -foo6966: () => {}, -foo6967: () => {}, -foo6968: () => {}, -foo6969: () => {}, -foo6970: () => {}, -foo6971: () => {}, -foo6972: () => {}, -foo6973: () => {}, -foo6974: () => {}, -foo6975: () => {}, -foo6976: () => {}, -foo6977: () => {}, -foo6978: () => {}, -foo6979: () => {}, -foo6980: () => {}, -foo6981: () => {}, -foo6982: () => {}, -foo6983: () => {}, -foo6984: () => {}, -foo6985: () => {}, -foo6986: () => {}, -foo6987: () => {}, -foo6988: () => {}, -foo6989: () => {}, -foo6990: () => {}, -foo6991: () => {}, -foo6992: () => {}, -foo6993: () => {}, -foo6994: () => {}, -foo6995: () => {}, -foo6996: () => {}, -foo6997: () => {}, -foo6998: () => {}, -foo6999: () => {}, -foo7000: () => {}, -foo7001: () => {}, -foo7002: () => {}, -foo7003: () => {}, -foo7004: () => {}, -foo7005: () => {}, -foo7006: () => {}, -foo7007: () => {}, -foo7008: () => {}, -foo7009: () => {}, -foo7010: () => {}, -foo7011: () => {}, -foo7012: () => {}, -foo7013: () => {}, -foo7014: () => {}, -foo7015: () => {}, -foo7016: () => {}, -foo7017: () => {}, -foo7018: () => {}, -foo7019: () => {}, -foo7020: () => {}, -foo7021: () => {}, -foo7022: () => {}, -foo7023: () => {}, -foo7024: () => {}, -foo7025: () => {}, -foo7026: () => {}, -foo7027: () => {}, -foo7028: () => {}, -foo7029: () => {}, -foo7030: () => {}, -foo7031: () => {}, -foo7032: () => {}, -foo7033: () => {}, -foo7034: () => {}, -foo7035: () => {}, -foo7036: () => {}, -foo7037: () => {}, -foo7038: () => {}, -foo7039: () => {}, -foo7040: () => {}, -foo7041: () => {}, -foo7042: () => {}, -foo7043: () => {}, -foo7044: () => {}, -foo7045: () => {}, -foo7046: () => {}, -foo7047: () => {}, -foo7048: () => {}, -foo7049: () => {}, -foo7050: () => {}, -foo7051: () => {}, -foo7052: () => {}, -foo7053: () => {}, -foo7054: () => {}, -foo7055: () => {}, -foo7056: () => {}, -foo7057: () => {}, -foo7058: () => {}, -foo7059: () => {}, -foo7060: () => {}, -foo7061: () => {}, -foo7062: () => {}, -foo7063: () => {}, -foo7064: () => {}, -foo7065: () => {}, -foo7066: () => {}, -foo7067: () => {}, -foo7068: () => {}, -foo7069: () => {}, -foo7070: () => {}, -foo7071: () => {}, -foo7072: () => {}, -foo7073: () => {}, -foo7074: () => {}, -foo7075: () => {}, -foo7076: () => {}, -foo7077: () => {}, -foo7078: () => {}, -foo7079: () => {}, -foo7080: () => {}, -foo7081: () => {}, -foo7082: () => {}, -foo7083: () => {}, -foo7084: () => {}, -foo7085: () => {}, -foo7086: () => {}, -foo7087: () => {}, -foo7088: () => {}, -foo7089: () => {}, -foo7090: () => {}, -foo7091: () => {}, -foo7092: () => {}, -foo7093: () => {}, -foo7094: () => {}, -foo7095: () => {}, -foo7096: () => {}, -foo7097: () => {}, -foo7098: () => {}, -foo7099: () => {}, -foo7100: () => {}, -foo7101: () => {}, -foo7102: () => {}, -foo7103: () => {}, -foo7104: () => {}, -foo7105: () => {}, -foo7106: () => {}, -foo7107: () => {}, -foo7108: () => {}, -foo7109: () => {}, -foo7110: () => {}, -foo7111: () => {}, -foo7112: () => {}, -foo7113: () => {}, -foo7114: () => {}, -foo7115: () => {}, -foo7116: () => {}, -foo7117: () => {}, -foo7118: () => {}, -foo7119: () => {}, -foo7120: () => {}, -foo7121: () => {}, -foo7122: () => {}, -foo7123: () => {}, -foo7124: () => {}, -foo7125: () => {}, -foo7126: () => {}, -foo7127: () => {}, -foo7128: () => {}, -foo7129: () => {}, -foo7130: () => {}, -foo7131: () => {}, -foo7132: () => {}, -foo7133: () => {}, -foo7134: () => {}, -foo7135: () => {}, -foo7136: () => {}, -foo7137: () => {}, -foo7138: () => {}, -foo7139: () => {}, -foo7140: () => {}, -foo7141: () => {}, -foo7142: () => {}, -foo7143: () => {}, -foo7144: () => {}, -foo7145: () => {}, -foo7146: () => {}, -foo7147: () => {}, -foo7148: () => {}, -foo7149: () => {}, -foo7150: () => {}, -foo7151: () => {}, -foo7152: () => {}, -foo7153: () => {}, -foo7154: () => {}, -foo7155: () => {}, -foo7156: () => {}, -foo7157: () => {}, -foo7158: () => {}, -foo7159: () => {}, -foo7160: () => {}, -foo7161: () => {}, -foo7162: () => {}, -foo7163: () => {}, -foo7164: () => {}, -foo7165: () => {}, -foo7166: () => {}, -foo7167: () => {}, -foo7168: () => {}, -foo7169: () => {}, -foo7170: () => {}, -foo7171: () => {}, -foo7172: () => {}, -foo7173: () => {}, -foo7174: () => {}, -foo7175: () => {}, -foo7176: () => {}, -foo7177: () => {}, -foo7178: () => {}, -foo7179: () => {}, -foo7180: () => {}, -foo7181: () => {}, -foo7182: () => {}, -foo7183: () => {}, -foo7184: () => {}, -foo7185: () => {}, -foo7186: () => {}, -foo7187: () => {}, -foo7188: () => {}, -foo7189: () => {}, -foo7190: () => {}, -foo7191: () => {}, -foo7192: () => {}, -foo7193: () => {}, -foo7194: () => {}, -foo7195: () => {}, -foo7196: () => {}, -foo7197: () => {}, -foo7198: () => {}, -foo7199: () => {}, -foo7200: () => {}, -foo7201: () => {}, -foo7202: () => {}, -foo7203: () => {}, -foo7204: () => {}, -foo7205: () => {}, -foo7206: () => {}, -foo7207: () => {}, -foo7208: () => {}, -foo7209: () => {}, -foo7210: () => {}, -foo7211: () => {}, -foo7212: () => {}, -foo7213: () => {}, -foo7214: () => {}, -foo7215: () => {}, -foo7216: () => {}, -foo7217: () => {}, -foo7218: () => {}, -foo7219: () => {}, -foo7220: () => {}, -foo7221: () => {}, -foo7222: () => {}, -foo7223: () => {}, -foo7224: () => {}, -foo7225: () => {}, -foo7226: () => {}, -foo7227: () => {}, -foo7228: () => {}, -foo7229: () => {}, -foo7230: () => {}, -foo7231: () => {}, -foo7232: () => {}, -foo7233: () => {}, -foo7234: () => {}, -foo7235: () => {}, -foo7236: () => {}, -foo7237: () => {}, -foo7238: () => {}, -foo7239: () => {}, -foo7240: () => {}, -foo7241: () => {}, -foo7242: () => {}, -foo7243: () => {}, -foo7244: () => {}, -foo7245: () => {}, -foo7246: () => {}, -foo7247: () => {}, -foo7248: () => {}, -foo7249: () => {}, -foo7250: () => {}, -foo7251: () => {}, -foo7252: () => {}, -foo7253: () => {}, -foo7254: () => {}, -foo7255: () => {}, -foo7256: () => {}, -foo7257: () => {}, -foo7258: () => {}, -foo7259: () => {}, -foo7260: () => {}, -foo7261: () => {}, -foo7262: () => {}, -foo7263: () => {}, -foo7264: () => {}, -foo7265: () => {}, -foo7266: () => {}, -foo7267: () => {}, -foo7268: () => {}, -foo7269: () => {}, -foo7270: () => {}, -foo7271: () => {}, -foo7272: () => {}, -foo7273: () => {}, -foo7274: () => {}, -foo7275: () => {}, -foo7276: () => {}, -foo7277: () => {}, -foo7278: () => {}, -foo7279: () => {}, -foo7280: () => {}, -foo7281: () => {}, -foo7282: () => {}, -foo7283: () => {}, -foo7284: () => {}, -foo7285: () => {}, -foo7286: () => {}, -foo7287: () => {}, -foo7288: () => {}, -foo7289: () => {}, -foo7290: () => {}, -foo7291: () => {}, -foo7292: () => {}, -foo7293: () => {}, -foo7294: () => {}, -foo7295: () => {}, -foo7296: () => {}, -foo7297: () => {}, -foo7298: () => {}, -foo7299: () => {}, -foo7300: () => {}, -foo7301: () => {}, -foo7302: () => {}, -foo7303: () => {}, -foo7304: () => {}, -foo7305: () => {}, -foo7306: () => {}, -foo7307: () => {}, -foo7308: () => {}, -foo7309: () => {}, -foo7310: () => {}, -foo7311: () => {}, -foo7312: () => {}, -foo7313: () => {}, -foo7314: () => {}, -foo7315: () => {}, -foo7316: () => {}, -foo7317: () => {}, -foo7318: () => {}, -foo7319: () => {}, -foo7320: () => {}, -foo7321: () => {}, -foo7322: () => {}, -foo7323: () => {}, -foo7324: () => {}, -foo7325: () => {}, -foo7326: () => {}, -foo7327: () => {}, -foo7328: () => {}, -foo7329: () => {}, -foo7330: () => {}, -foo7331: () => {}, -foo7332: () => {}, -foo7333: () => {}, -foo7334: () => {}, -foo7335: () => {}, -foo7336: () => {}, -foo7337: () => {}, -foo7338: () => {}, -foo7339: () => {}, -foo7340: () => {}, -foo7341: () => {}, -foo7342: () => {}, -foo7343: () => {}, -foo7344: () => {}, -foo7345: () => {}, -foo7346: () => {}, -foo7347: () => {}, -foo7348: () => {}, -foo7349: () => {}, -foo7350: () => {}, -foo7351: () => {}, -foo7352: () => {}, -foo7353: () => {}, -foo7354: () => {}, -foo7355: () => {}, -foo7356: () => {}, -foo7357: () => {}, -foo7358: () => {}, -foo7359: () => {}, -foo7360: () => {}, -foo7361: () => {}, -foo7362: () => {}, -foo7363: () => {}, -foo7364: () => {}, -foo7365: () => {}, -foo7366: () => {}, -foo7367: () => {}, -foo7368: () => {}, -foo7369: () => {}, -foo7370: () => {}, -foo7371: () => {}, -foo7372: () => {}, -foo7373: () => {}, -foo7374: () => {}, -foo7375: () => {}, -foo7376: () => {}, -foo7377: () => {}, -foo7378: () => {}, -foo7379: () => {}, -foo7380: () => {}, -foo7381: () => {}, -foo7382: () => {}, -foo7383: () => {}, -foo7384: () => {}, -foo7385: () => {}, -foo7386: () => {}, -foo7387: () => {}, -foo7388: () => {}, -foo7389: () => {}, -foo7390: () => {}, -foo7391: () => {}, -foo7392: () => {}, -foo7393: () => {}, -foo7394: () => {}, -foo7395: () => {}, -foo7396: () => {}, -foo7397: () => {}, -foo7398: () => {}, -foo7399: () => {}, -foo7400: () => {}, -foo7401: () => {}, -foo7402: () => {}, -foo7403: () => {}, -foo7404: () => {}, -foo7405: () => {}, -foo7406: () => {}, -foo7407: () => {}, -foo7408: () => {}, -foo7409: () => {}, -foo7410: () => {}, -foo7411: () => {}, -foo7412: () => {}, -foo7413: () => {}, -foo7414: () => {}, -foo7415: () => {}, -foo7416: () => {}, -foo7417: () => {}, -foo7418: () => {}, -foo7419: () => {}, -foo7420: () => {}, -foo7421: () => {}, -foo7422: () => {}, -foo7423: () => {}, -foo7424: () => {}, -foo7425: () => {}, -foo7426: () => {}, -foo7427: () => {}, -foo7428: () => {}, -foo7429: () => {}, -foo7430: () => {}, -foo7431: () => {}, -foo7432: () => {}, -foo7433: () => {}, -foo7434: () => {}, -foo7435: () => {}, -foo7436: () => {}, -foo7437: () => {}, -foo7438: () => {}, -foo7439: () => {}, -foo7440: () => {}, -foo7441: () => {}, -foo7442: () => {}, -foo7443: () => {}, -foo7444: () => {}, -foo7445: () => {}, -foo7446: () => {}, -foo7447: () => {}, -foo7448: () => {}, -foo7449: () => {}, -foo7450: () => {}, -foo7451: () => {}, -foo7452: () => {}, -foo7453: () => {}, -foo7454: () => {}, -foo7455: () => {}, -foo7456: () => {}, -foo7457: () => {}, -foo7458: () => {}, -foo7459: () => {}, -foo7460: () => {}, -foo7461: () => {}, -foo7462: () => {}, -foo7463: () => {}, -foo7464: () => {}, -foo7465: () => {}, -foo7466: () => {}, -foo7467: () => {}, -foo7468: () => {}, -foo7469: () => {}, -foo7470: () => {}, -foo7471: () => {}, -foo7472: () => {}, -foo7473: () => {}, -foo7474: () => {}, -foo7475: () => {}, -foo7476: () => {}, -foo7477: () => {}, -foo7478: () => {}, -foo7479: () => {}, -foo7480: () => {}, -foo7481: () => {}, -foo7482: () => {}, -foo7483: () => {}, -foo7484: () => {}, -foo7485: () => {}, -foo7486: () => {}, -foo7487: () => {}, -foo7488: () => {}, -foo7489: () => {}, -foo7490: () => {}, -foo7491: () => {}, -foo7492: () => {}, -foo7493: () => {}, -foo7494: () => {}, -foo7495: () => {}, -foo7496: () => {}, -foo7497: () => {}, -foo7498: () => {}, -foo7499: () => {}, -foo7500: () => {}, -foo7501: () => {}, -foo7502: () => {}, -foo7503: () => {}, -foo7504: () => {}, -foo7505: () => {}, -foo7506: () => {}, -foo7507: () => {}, -foo7508: () => {}, -foo7509: () => {}, -foo7510: () => {}, -foo7511: () => {}, -foo7512: () => {}, -foo7513: () => {}, -foo7514: () => {}, -foo7515: () => {}, -foo7516: () => {}, -foo7517: () => {}, -foo7518: () => {}, -foo7519: () => {}, -foo7520: () => {}, -foo7521: () => {}, -foo7522: () => {}, -foo7523: () => {}, -foo7524: () => {}, -foo7525: () => {}, -foo7526: () => {}, -foo7527: () => {}, -foo7528: () => {}, -foo7529: () => {}, -foo7530: () => {}, -foo7531: () => {}, -foo7532: () => {}, -foo7533: () => {}, -foo7534: () => {}, -foo7535: () => {}, -foo7536: () => {}, -foo7537: () => {}, -foo7538: () => {}, -foo7539: () => {}, -foo7540: () => {}, -foo7541: () => {}, -foo7542: () => {}, -foo7543: () => {}, -foo7544: () => {}, -foo7545: () => {}, -foo7546: () => {}, -foo7547: () => {}, -foo7548: () => {}, -foo7549: () => {}, -foo7550: () => {}, -foo7551: () => {}, -foo7552: () => {}, -foo7553: () => {}, -foo7554: () => {}, -foo7555: () => {}, -foo7556: () => {}, -foo7557: () => {}, -foo7558: () => {}, -foo7559: () => {}, -foo7560: () => {}, -foo7561: () => {}, -foo7562: () => {}, -foo7563: () => {}, -foo7564: () => {}, -foo7565: () => {}, -foo7566: () => {}, -foo7567: () => {}, -foo7568: () => {}, -foo7569: () => {}, -foo7570: () => {}, -foo7571: () => {}, -foo7572: () => {}, -foo7573: () => {}, -foo7574: () => {}, -foo7575: () => {}, -foo7576: () => {}, -foo7577: () => {}, -foo7578: () => {}, -foo7579: () => {}, -foo7580: () => {}, -foo7581: () => {}, -foo7582: () => {}, -foo7583: () => {}, -foo7584: () => {}, -foo7585: () => {}, -foo7586: () => {}, -foo7587: () => {}, -foo7588: () => {}, -foo7589: () => {}, -foo7590: () => {}, -foo7591: () => {}, -foo7592: () => {}, -foo7593: () => {}, -foo7594: () => {}, -foo7595: () => {}, -foo7596: () => {}, -foo7597: () => {}, -foo7598: () => {}, -foo7599: () => {}, -foo7600: () => {}, -foo7601: () => {}, -foo7602: () => {}, -foo7603: () => {}, -foo7604: () => {}, -foo7605: () => {}, -foo7606: () => {}, -foo7607: () => {}, -foo7608: () => {}, -foo7609: () => {}, -foo7610: () => {}, -foo7611: () => {}, -foo7612: () => {}, -foo7613: () => {}, -foo7614: () => {}, -foo7615: () => {}, -foo7616: () => {}, -foo7617: () => {}, -foo7618: () => {}, -foo7619: () => {}, -foo7620: () => {}, -foo7621: () => {}, -foo7622: () => {}, -foo7623: () => {}, -foo7624: () => {}, -foo7625: () => {}, -foo7626: () => {}, -foo7627: () => {}, -foo7628: () => {}, -foo7629: () => {}, -foo7630: () => {}, -foo7631: () => {}, -foo7632: () => {}, -foo7633: () => {}, -foo7634: () => {}, -foo7635: () => {}, -foo7636: () => {}, -foo7637: () => {}, -foo7638: () => {}, -foo7639: () => {}, -foo7640: () => {}, -foo7641: () => {}, -foo7642: () => {}, -foo7643: () => {}, -foo7644: () => {}, -foo7645: () => {}, -foo7646: () => {}, -foo7647: () => {}, -foo7648: () => {}, -foo7649: () => {}, -foo7650: () => {}, -foo7651: () => {}, -foo7652: () => {}, -foo7653: () => {}, -foo7654: () => {}, -foo7655: () => {}, -foo7656: () => {}, -foo7657: () => {}, -foo7658: () => {}, -foo7659: () => {}, -foo7660: () => {}, -foo7661: () => {}, -foo7662: () => {}, -foo7663: () => {}, -foo7664: () => {}, -foo7665: () => {}, -foo7666: () => {}, -foo7667: () => {}, -foo7668: () => {}, -foo7669: () => {}, -foo7670: () => {}, -foo7671: () => {}, -foo7672: () => {}, -foo7673: () => {}, -foo7674: () => {}, -foo7675: () => {}, -foo7676: () => {}, -foo7677: () => {}, -foo7678: () => {}, -foo7679: () => {}, -foo7680: () => {}, -foo7681: () => {}, -foo7682: () => {}, -foo7683: () => {}, -foo7684: () => {}, -foo7685: () => {}, -foo7686: () => {}, -foo7687: () => {}, -foo7688: () => {}, -foo7689: () => {}, -foo7690: () => {}, -foo7691: () => {}, -foo7692: () => {}, -foo7693: () => {}, -foo7694: () => {}, -foo7695: () => {}, -foo7696: () => {}, -foo7697: () => {}, -foo7698: () => {}, -foo7699: () => {}, -foo7700: () => {}, -foo7701: () => {}, -foo7702: () => {}, -foo7703: () => {}, -foo7704: () => {}, -foo7705: () => {}, -foo7706: () => {}, -foo7707: () => {}, -foo7708: () => {}, -foo7709: () => {}, -foo7710: () => {}, -foo7711: () => {}, -foo7712: () => {}, -foo7713: () => {}, -foo7714: () => {}, -foo7715: () => {}, -foo7716: () => {}, -foo7717: () => {}, -foo7718: () => {}, -foo7719: () => {}, -foo7720: () => {}, -foo7721: () => {}, -foo7722: () => {}, -foo7723: () => {}, -foo7724: () => {}, -foo7725: () => {}, -foo7726: () => {}, -foo7727: () => {}, -foo7728: () => {}, -foo7729: () => {}, -foo7730: () => {}, -foo7731: () => {}, -foo7732: () => {}, -foo7733: () => {}, -foo7734: () => {}, -foo7735: () => {}, -foo7736: () => {}, -foo7737: () => {}, -foo7738: () => {}, -foo7739: () => {}, -foo7740: () => {}, -foo7741: () => {}, -foo7742: () => {}, -foo7743: () => {}, -foo7744: () => {}, -foo7745: () => {}, -foo7746: () => {}, -foo7747: () => {}, -foo7748: () => {}, -foo7749: () => {}, -foo7750: () => {}, -foo7751: () => {}, -foo7752: () => {}, -foo7753: () => {}, -foo7754: () => {}, -foo7755: () => {}, -foo7756: () => {}, -foo7757: () => {}, -foo7758: () => {}, -foo7759: () => {}, -foo7760: () => {}, -foo7761: () => {}, -foo7762: () => {}, -foo7763: () => {}, -foo7764: () => {}, -foo7765: () => {}, -foo7766: () => {}, -foo7767: () => {}, -foo7768: () => {}, -foo7769: () => {}, -foo7770: () => {}, -foo7771: () => {}, -foo7772: () => {}, -foo7773: () => {}, -foo7774: () => {}, -foo7775: () => {}, -foo7776: () => {}, -foo7777: () => {}, -foo7778: () => {}, -foo7779: () => {}, -foo7780: () => {}, -foo7781: () => {}, -foo7782: () => {}, -foo7783: () => {}, -foo7784: () => {}, -foo7785: () => {}, -foo7786: () => {}, -foo7787: () => {}, -foo7788: () => {}, -foo7789: () => {}, -foo7790: () => {}, -foo7791: () => {}, -foo7792: () => {}, -foo7793: () => {}, -foo7794: () => {}, -foo7795: () => {}, -foo7796: () => {}, -foo7797: () => {}, -foo7798: () => {}, -foo7799: () => {}, -foo7800: () => {}, -foo7801: () => {}, -foo7802: () => {}, -foo7803: () => {}, -foo7804: () => {}, -foo7805: () => {}, -foo7806: () => {}, -foo7807: () => {}, -foo7808: () => {}, -foo7809: () => {}, -foo7810: () => {}, -foo7811: () => {}, -foo7812: () => {}, -foo7813: () => {}, -foo7814: () => {}, -foo7815: () => {}, -foo7816: () => {}, -foo7817: () => {}, -foo7818: () => {}, -foo7819: () => {}, -foo7820: () => {}, -foo7821: () => {}, -foo7822: () => {}, -foo7823: () => {}, -foo7824: () => {}, -foo7825: () => {}, -foo7826: () => {}, -foo7827: () => {}, -foo7828: () => {}, -foo7829: () => {}, -foo7830: () => {}, -foo7831: () => {}, -foo7832: () => {}, -foo7833: () => {}, -foo7834: () => {}, -foo7835: () => {}, -foo7836: () => {}, -foo7837: () => {}, -foo7838: () => {}, -foo7839: () => {}, -foo7840: () => {}, -foo7841: () => {}, -foo7842: () => {}, -foo7843: () => {}, -foo7844: () => {}, -foo7845: () => {}, -foo7846: () => {}, -foo7847: () => {}, -foo7848: () => {}, -foo7849: () => {}, -foo7850: () => {}, -foo7851: () => {}, -foo7852: () => {}, -foo7853: () => {}, -foo7854: () => {}, -foo7855: () => {}, -foo7856: () => {}, -foo7857: () => {}, -foo7858: () => {}, -foo7859: () => {}, -foo7860: () => {}, -foo7861: () => {}, -foo7862: () => {}, -foo7863: () => {}, -foo7864: () => {}, -foo7865: () => {}, -foo7866: () => {}, -foo7867: () => {}, -foo7868: () => {}, -foo7869: () => {}, -foo7870: () => {}, -foo7871: () => {}, -foo7872: () => {}, -foo7873: () => {}, -foo7874: () => {}, -foo7875: () => {}, -foo7876: () => {}, -foo7877: () => {}, -foo7878: () => {}, -foo7879: () => {}, -foo7880: () => {}, -foo7881: () => {}, -foo7882: () => {}, -foo7883: () => {}, -foo7884: () => {}, -foo7885: () => {}, -foo7886: () => {}, -foo7887: () => {}, -foo7888: () => {}, -foo7889: () => {}, -foo7890: () => {}, -foo7891: () => {}, -foo7892: () => {}, -foo7893: () => {}, -foo7894: () => {}, -foo7895: () => {}, -foo7896: () => {}, -foo7897: () => {}, -foo7898: () => {}, -foo7899: () => {}, -foo7900: () => {}, -foo7901: () => {}, -foo7902: () => {}, -foo7903: () => {}, -foo7904: () => {}, -foo7905: () => {}, -foo7906: () => {}, -foo7907: () => {}, -foo7908: () => {}, -foo7909: () => {}, -foo7910: () => {}, -foo7911: () => {}, -foo7912: () => {}, -foo7913: () => {}, -foo7914: () => {}, -foo7915: () => {}, -foo7916: () => {}, -foo7917: () => {}, -foo7918: () => {}, -foo7919: () => {}, -foo7920: () => {}, -foo7921: () => {}, -foo7922: () => {}, -foo7923: () => {}, -foo7924: () => {}, -foo7925: () => {}, -foo7926: () => {}, -foo7927: () => {}, -foo7928: () => {}, -foo7929: () => {}, -foo7930: () => {}, -foo7931: () => {}, -foo7932: () => {}, -foo7933: () => {}, -foo7934: () => {}, -foo7935: () => {}, -foo7936: () => {}, -foo7937: () => {}, -foo7938: () => {}, -foo7939: () => {}, -foo7940: () => {}, -foo7941: () => {}, -foo7942: () => {}, -foo7943: () => {}, -foo7944: () => {}, -foo7945: () => {}, -foo7946: () => {}, -foo7947: () => {}, -foo7948: () => {}, -foo7949: () => {}, -foo7950: () => {}, -foo7951: () => {}, -foo7952: () => {}, -foo7953: () => {}, -foo7954: () => {}, -foo7955: () => {}, -foo7956: () => {}, -foo7957: () => {}, -foo7958: () => {}, -foo7959: () => {}, -foo7960: () => {}, -foo7961: () => {}, -foo7962: () => {}, -foo7963: () => {}, -foo7964: () => {}, -foo7965: () => {}, -foo7966: () => {}, -foo7967: () => {}, -foo7968: () => {}, -foo7969: () => {}, -foo7970: () => {}, -foo7971: () => {}, -foo7972: () => {}, -foo7973: () => {}, -foo7974: () => {}, -foo7975: () => {}, -foo7976: () => {}, -foo7977: () => {}, -foo7978: () => {}, -foo7979: () => {}, -foo7980: () => {}, -foo7981: () => {}, -foo7982: () => {}, -foo7983: () => {}, -foo7984: () => {}, -foo7985: () => {}, -foo7986: () => {}, -foo7987: () => {}, -foo7988: () => {}, -foo7989: () => {}, -foo7990: () => {}, -foo7991: () => {}, -foo7992: () => {}, -foo7993: () => {}, -foo7994: () => {}, -foo7995: () => {}, -foo7996: () => {}, -foo7997: () => {}, -foo7998: () => {}, -foo7999: () => {}, -foo8000: () => {}, -foo8001: () => {}, -foo8002: () => {}, -foo8003: () => {}, -foo8004: () => {}, -foo8005: () => {}, -foo8006: () => {}, -foo8007: () => {}, -foo8008: () => {}, -foo8009: () => {}, -foo8010: () => {}, -foo8011: () => {}, -foo8012: () => {}, -foo8013: () => {}, -foo8014: () => {}, -foo8015: () => {}, -foo8016: () => {}, -foo8017: () => {}, -foo8018: () => {}, -foo8019: () => {}, -foo8020: () => {}, -foo8021: () => {}, -foo8022: () => {}, -foo8023: () => {}, -foo8024: () => {}, -foo8025: () => {}, -foo8026: () => {}, -foo8027: () => {}, -foo8028: () => {}, -foo8029: () => {}, -foo8030: () => {}, -foo8031: () => {}, -foo8032: () => {}, -foo8033: () => {}, -foo8034: () => {}, -foo8035: () => {}, -foo8036: () => {}, -foo8037: () => {}, -foo8038: () => {}, -foo8039: () => {}, -foo8040: () => {}, -foo8041: () => {}, -foo8042: () => {}, -foo8043: () => {}, -foo8044: () => {}, -foo8045: () => {}, -foo8046: () => {}, -foo8047: () => {}, -foo8048: () => {}, -foo8049: () => {}, -foo8050: () => {}, -foo8051: () => {}, -foo8052: () => {}, -foo8053: () => {}, -foo8054: () => {}, -foo8055: () => {}, -foo8056: () => {}, -foo8057: () => {}, -foo8058: () => {}, -foo8059: () => {}, -foo8060: () => {}, -foo8061: () => {}, -foo8062: () => {}, -foo8063: () => {}, -foo8064: () => {}, -foo8065: () => {}, -foo8066: () => {}, -foo8067: () => {}, -foo8068: () => {}, -foo8069: () => {}, -foo8070: () => {}, -foo8071: () => {}, -foo8072: () => {}, -foo8073: () => {}, -foo8074: () => {}, -foo8075: () => {}, -foo8076: () => {}, -foo8077: () => {}, -foo8078: () => {}, -foo8079: () => {}, -foo8080: () => {}, -foo8081: () => {}, -foo8082: () => {}, -foo8083: () => {}, -foo8084: () => {}, -foo8085: () => {}, -foo8086: () => {}, -foo8087: () => {}, -foo8088: () => {}, -foo8089: () => {}, -foo8090: () => {}, -foo8091: () => {}, -foo8092: () => {}, -foo8093: () => {}, -foo8094: () => {}, -foo8095: () => {}, -foo8096: () => {}, -foo8097: () => {}, -foo8098: () => {}, -foo8099: () => {}, -foo8100: () => {}, -foo8101: () => {}, -foo8102: () => {}, -foo8103: () => {}, -foo8104: () => {}, -foo8105: () => {}, -foo8106: () => {}, -foo8107: () => {}, -foo8108: () => {}, -foo8109: () => {}, -foo8110: () => {}, -foo8111: () => {}, -foo8112: () => {}, -foo8113: () => {}, -foo8114: () => {}, -foo8115: () => {}, -foo8116: () => {}, -foo8117: () => {}, -foo8118: () => {}, -foo8119: () => {}, -foo8120: () => {}, -foo8121: () => {}, -foo8122: () => {}, -foo8123: () => {}, -foo8124: () => {}, -foo8125: () => {}, -foo8126: () => {}, -foo8127: () => {}, -foo8128: () => {}, -foo8129: () => {}, -foo8130: () => {}, -foo8131: () => {}, -foo8132: () => {}, -foo8133: () => {}, -foo8134: () => {}, -foo8135: () => {}, -foo8136: () => {}, -foo8137: () => {}, -foo8138: () => {}, -foo8139: () => {}, -foo8140: () => {}, -foo8141: () => {}, -foo8142: () => {}, -foo8143: () => {}, -foo8144: () => {}, -foo8145: () => {}, -foo8146: () => {}, -foo8147: () => {}, -foo8148: () => {}, -foo8149: () => {}, -foo8150: () => {}, -foo8151: () => {}, -foo8152: () => {}, -foo8153: () => {}, -foo8154: () => {}, -foo8155: () => {}, -foo8156: () => {}, -foo8157: () => {}, -foo8158: () => {}, -foo8159: () => {}, -foo8160: () => {}, -foo8161: () => {}, -foo8162: () => {}, -foo8163: () => {}, -foo8164: () => {}, -foo8165: () => {}, -foo8166: () => {}, -foo8167: () => {}, -foo8168: () => {}, -foo8169: () => {}, -foo8170: () => {}, -foo8171: () => {}, -foo8172: () => {}, -foo8173: () => {}, -foo8174: () => {}, -foo8175: () => {}, -foo8176: () => {}, -foo8177: () => {}, -foo8178: () => {}, -foo8179: () => {}, -foo8180: () => {}, -foo8181: () => {}, -foo8182: () => {}, -foo8183: () => {}, -foo8184: () => {}, -foo8185: () => {}, -foo8186: () => {}, -foo8187: () => {}, -foo8188: () => {}, -foo8189: () => {}, -foo8190: () => {}, -foo8191: () => {}, -foo8192: () => {}, -foo8193: () => {}, -foo8194: () => {}, -foo8195: () => {}, -foo8196: () => {}, -foo8197: () => {}, -foo8198: () => {}, -foo8199: () => {}, -foo8200: () => {}, -foo8201: () => {}, -foo8202: () => {}, -foo8203: () => {}, -foo8204: () => {}, -foo8205: () => {}, -foo8206: () => {}, -foo8207: () => {}, -foo8208: () => {}, -foo8209: () => {}, -foo8210: () => {}, -foo8211: () => {}, -foo8212: () => {}, -foo8213: () => {}, -foo8214: () => {}, -foo8215: () => {}, -foo8216: () => {}, -foo8217: () => {}, -foo8218: () => {}, -foo8219: () => {}, -foo8220: () => {}, -foo8221: () => {}, -foo8222: () => {}, -foo8223: () => {}, -foo8224: () => {}, -foo8225: () => {}, -foo8226: () => {}, -foo8227: () => {}, -foo8228: () => {}, -foo8229: () => {}, -foo8230: () => {}, -foo8231: () => {}, -foo8232: () => {}, -foo8233: () => {}, -foo8234: () => {}, -foo8235: () => {}, -foo8236: () => {}, -foo8237: () => {}, -foo8238: () => {}, -foo8239: () => {}, -foo8240: () => {}, -foo8241: () => {}, -foo8242: () => {}, -foo8243: () => {}, -foo8244: () => {}, -foo8245: () => {}, -foo8246: () => {}, -foo8247: () => {}, -foo8248: () => {}, -foo8249: () => {}, -foo8250: () => {}, -foo8251: () => {}, -foo8252: () => {}, -foo8253: () => {}, -foo8254: () => {}, -foo8255: () => {}, -foo8256: () => {}, -foo8257: () => {}, -foo8258: () => {}, -foo8259: () => {}, -foo8260: () => {}, -foo8261: () => {}, -foo8262: () => {}, -foo8263: () => {}, -foo8264: () => {}, -foo8265: () => {}, -foo8266: () => {}, -foo8267: () => {}, -foo8268: () => {}, -foo8269: () => {}, -foo8270: () => {}, -foo8271: () => {}, -foo8272: () => {}, -foo8273: () => {}, -foo8274: () => {}, -foo8275: () => {}, -foo8276: () => {}, -foo8277: () => {}, -foo8278: () => {}, -foo8279: () => {}, -foo8280: () => {}, -foo8281: () => {}, -foo8282: () => {}, -foo8283: () => {}, -foo8284: () => {}, -foo8285: () => {}, -foo8286: () => {}, -foo8287: () => {}, -foo8288: () => {}, -foo8289: () => {}, -foo8290: () => {}, -foo8291: () => {}, -foo8292: () => {}, -foo8293: () => {}, -foo8294: () => {}, -foo8295: () => {}, -foo8296: () => {}, -foo8297: () => {}, -foo8298: () => {}, -foo8299: () => {}, -foo8300: () => {}, -foo8301: () => {}, -foo8302: () => {}, -foo8303: () => {}, -foo8304: () => {}, -foo8305: () => {}, -foo8306: () => {}, -foo8307: () => {}, -foo8308: () => {}, -foo8309: () => {}, -foo8310: () => {}, -foo8311: () => {}, -foo8312: () => {}, -foo8313: () => {}, -foo8314: () => {}, -foo8315: () => {}, -foo8316: () => {}, -foo8317: () => {}, -foo8318: () => {}, -foo8319: () => {}, -foo8320: () => {}, -foo8321: () => {}, -foo8322: () => {}, -foo8323: () => {}, -foo8324: () => {}, -foo8325: () => {}, -foo8326: () => {}, -foo8327: () => {}, -foo8328: () => {}, -foo8329: () => {}, -foo8330: () => {}, -foo8331: () => {}, -foo8332: () => {}, -foo8333: () => {}, -foo8334: () => {}, -foo8335: () => {}, -foo8336: () => {}, -foo8337: () => {}, -foo8338: () => {}, -foo8339: () => {}, -foo8340: () => {}, -foo8341: () => {}, -foo8342: () => {}, -foo8343: () => {}, -foo8344: () => {}, -foo8345: () => {}, -foo8346: () => {}, -foo8347: () => {}, -foo8348: () => {}, -foo8349: () => {}, -foo8350: () => {}, -foo8351: () => {}, -foo8352: () => {}, -foo8353: () => {}, -foo8354: () => {}, -foo8355: () => {}, -foo8356: () => {}, -foo8357: () => {}, -foo8358: () => {}, -foo8359: () => {}, -foo8360: () => {}, -foo8361: () => {}, -foo8362: () => {}, -foo8363: () => {}, -foo8364: () => {}, -foo8365: () => {}, -foo8366: () => {}, -foo8367: () => {}, -foo8368: () => {}, -foo8369: () => {}, -foo8370: () => {}, -foo8371: () => {}, -foo8372: () => {}, -foo8373: () => {}, -foo8374: () => {}, -foo8375: () => {}, -foo8376: () => {}, -foo8377: () => {}, -foo8378: () => {}, -foo8379: () => {}, -foo8380: () => {}, -foo8381: () => {}, -foo8382: () => {}, -foo8383: () => {}, -foo8384: () => {}, -foo8385: () => {}, -foo8386: () => {}, -foo8387: () => {}, -foo8388: () => {}, -foo8389: () => {}, -foo8390: () => {}, -foo8391: () => {}, -foo8392: () => {}, -foo8393: () => {}, -foo8394: () => {}, -foo8395: () => {}, -foo8396: () => {}, -foo8397: () => {}, -foo8398: () => {}, -foo8399: () => {}, -foo8400: () => {}, -foo8401: () => {}, -foo8402: () => {}, -foo8403: () => {}, -foo8404: () => {}, -foo8405: () => {}, -foo8406: () => {}, -foo8407: () => {}, -foo8408: () => {}, -foo8409: () => {}, -foo8410: () => {}, -foo8411: () => {}, -foo8412: () => {}, -foo8413: () => {}, -foo8414: () => {}, -foo8415: () => {}, -foo8416: () => {}, -foo8417: () => {}, -foo8418: () => {}, -foo8419: () => {}, -foo8420: () => {}, -foo8421: () => {}, -foo8422: () => {}, -foo8423: () => {}, -foo8424: () => {}, -foo8425: () => {}, -foo8426: () => {}, -foo8427: () => {}, -foo8428: () => {}, -foo8429: () => {}, -foo8430: () => {}, -foo8431: () => {}, -foo8432: () => {}, -foo8433: () => {}, -foo8434: () => {}, -foo8435: () => {}, -foo8436: () => {}, -foo8437: () => {}, -foo8438: () => {}, -foo8439: () => {}, -foo8440: () => {}, -foo8441: () => {}, -foo8442: () => {}, -foo8443: () => {}, -foo8444: () => {}, -foo8445: () => {}, -foo8446: () => {}, -foo8447: () => {}, -foo8448: () => {}, -foo8449: () => {}, -foo8450: () => {}, -foo8451: () => {}, -foo8452: () => {}, -foo8453: () => {}, -foo8454: () => {}, -foo8455: () => {}, -foo8456: () => {}, -foo8457: () => {}, -foo8458: () => {}, -foo8459: () => {}, -foo8460: () => {}, -foo8461: () => {}, -foo8462: () => {}, -foo8463: () => {}, -foo8464: () => {}, -foo8465: () => {}, -foo8466: () => {}, -foo8467: () => {}, -foo8468: () => {}, -foo8469: () => {}, -foo8470: () => {}, -foo8471: () => {}, -foo8472: () => {}, -foo8473: () => {}, -foo8474: () => {}, -foo8475: () => {}, -foo8476: () => {}, -foo8477: () => {}, -foo8478: () => {}, -foo8479: () => {}, -foo8480: () => {}, -foo8481: () => {}, -foo8482: () => {}, -foo8483: () => {}, -foo8484: () => {}, -foo8485: () => {}, -foo8486: () => {}, -foo8487: () => {}, -foo8488: () => {}, -foo8489: () => {}, -foo8490: () => {}, -foo8491: () => {}, -foo8492: () => {}, -foo8493: () => {}, -foo8494: () => {}, -foo8495: () => {}, -foo8496: () => {}, -foo8497: () => {}, -foo8498: () => {}, -foo8499: () => {}, -foo8500: () => {}, -foo8501: () => {}, -foo8502: () => {}, -foo8503: () => {}, -foo8504: () => {}, -foo8505: () => {}, -foo8506: () => {}, -foo8507: () => {}, -foo8508: () => {}, -foo8509: () => {}, -foo8510: () => {}, -foo8511: () => {}, -foo8512: () => {}, -foo8513: () => {}, -foo8514: () => {}, -foo8515: () => {}, -foo8516: () => {}, -foo8517: () => {}, -foo8518: () => {}, -foo8519: () => {}, -foo8520: () => {}, -foo8521: () => {}, -foo8522: () => {}, -foo8523: () => {}, -foo8524: () => {}, -foo8525: () => {}, -foo8526: () => {}, -foo8527: () => {}, -foo8528: () => {}, -foo8529: () => {}, -foo8530: () => {}, -foo8531: () => {}, -foo8532: () => {}, -foo8533: () => {}, -foo8534: () => {}, -foo8535: () => {}, -foo8536: () => {}, -foo8537: () => {}, -foo8538: () => {}, -foo8539: () => {}, -foo8540: () => {}, -foo8541: () => {}, -foo8542: () => {}, -foo8543: () => {}, -foo8544: () => {}, -foo8545: () => {}, -foo8546: () => {}, -foo8547: () => {}, -foo8548: () => {}, -foo8549: () => {}, -foo8550: () => {}, -foo8551: () => {}, -foo8552: () => {}, -foo8553: () => {}, -foo8554: () => {}, -foo8555: () => {}, -foo8556: () => {}, -foo8557: () => {}, -foo8558: () => {}, -foo8559: () => {}, -foo8560: () => {}, -foo8561: () => {}, -foo8562: () => {}, -foo8563: () => {}, -foo8564: () => {}, -foo8565: () => {}, -foo8566: () => {}, -foo8567: () => {}, -foo8568: () => {}, -foo8569: () => {}, -foo8570: () => {}, -foo8571: () => {}, -foo8572: () => {}, -foo8573: () => {}, -foo8574: () => {}, -foo8575: () => {}, -foo8576: () => {}, -foo8577: () => {}, -foo8578: () => {}, -foo8579: () => {}, -foo8580: () => {}, -foo8581: () => {}, -foo8582: () => {}, -foo8583: () => {}, -foo8584: () => {}, -foo8585: () => {}, -foo8586: () => {}, -foo8587: () => {}, -foo8588: () => {}, -foo8589: () => {}, -foo8590: () => {}, -foo8591: () => {}, -foo8592: () => {}, -foo8593: () => {}, -foo8594: () => {}, -foo8595: () => {}, -foo8596: () => {}, -foo8597: () => {}, -foo8598: () => {}, -foo8599: () => {}, -foo8600: () => {}, -foo8601: () => {}, -foo8602: () => {}, -foo8603: () => {}, -foo8604: () => {}, -foo8605: () => {}, -foo8606: () => {}, -foo8607: () => {}, -foo8608: () => {}, -foo8609: () => {}, -foo8610: () => {}, -foo8611: () => {}, -foo8612: () => {}, -foo8613: () => {}, -foo8614: () => {}, -foo8615: () => {}, -foo8616: () => {}, -foo8617: () => {}, -foo8618: () => {}, -foo8619: () => {}, -foo8620: () => {}, -foo8621: () => {}, -foo8622: () => {}, -foo8623: () => {}, -foo8624: () => {}, -foo8625: () => {}, -foo8626: () => {}, -foo8627: () => {}, -foo8628: () => {}, -foo8629: () => {}, -foo8630: () => {}, -foo8631: () => {}, -foo8632: () => {}, -foo8633: () => {}, -foo8634: () => {}, -foo8635: () => {}, -foo8636: () => {}, -foo8637: () => {}, -foo8638: () => {}, -foo8639: () => {}, -foo8640: () => {}, -foo8641: () => {}, -foo8642: () => {}, -foo8643: () => {}, -foo8644: () => {}, -foo8645: () => {}, -foo8646: () => {}, -foo8647: () => {}, -foo8648: () => {}, -foo8649: () => {}, -foo8650: () => {}, -foo8651: () => {}, -foo8652: () => {}, -foo8653: () => {}, -foo8654: () => {}, -foo8655: () => {}, -foo8656: () => {}, -foo8657: () => {}, -foo8658: () => {}, -foo8659: () => {}, -foo8660: () => {}, -foo8661: () => {}, -foo8662: () => {}, -foo8663: () => {}, -foo8664: () => {}, -foo8665: () => {}, -foo8666: () => {}, -foo8667: () => {}, -foo8668: () => {}, -foo8669: () => {}, -foo8670: () => {}, -foo8671: () => {}, -foo8672: () => {}, -foo8673: () => {}, -foo8674: () => {}, -foo8675: () => {}, -foo8676: () => {}, -foo8677: () => {}, -foo8678: () => {}, -foo8679: () => {}, -foo8680: () => {}, -foo8681: () => {}, -foo8682: () => {}, -foo8683: () => {}, -foo8684: () => {}, -foo8685: () => {}, -foo8686: () => {}, -foo8687: () => {}, -foo8688: () => {}, -foo8689: () => {}, -foo8690: () => {}, -foo8691: () => {}, -foo8692: () => {}, -foo8693: () => {}, -foo8694: () => {}, -foo8695: () => {}, -foo8696: () => {}, -foo8697: () => {}, -foo8698: () => {}, -foo8699: () => {}, -foo8700: () => {}, -foo8701: () => {}, -foo8702: () => {}, -foo8703: () => {}, -foo8704: () => {}, -foo8705: () => {}, -foo8706: () => {}, -foo8707: () => {}, -foo8708: () => {}, -foo8709: () => {}, -foo8710: () => {}, -foo8711: () => {}, -foo8712: () => {}, -foo8713: () => {}, -foo8714: () => {}, -foo8715: () => {}, -foo8716: () => {}, -foo8717: () => {}, -foo8718: () => {}, -foo8719: () => {}, -foo8720: () => {}, -foo8721: () => {}, -foo8722: () => {}, -foo8723: () => {}, -foo8724: () => {}, -foo8725: () => {}, -foo8726: () => {}, -foo8727: () => {}, -foo8728: () => {}, -foo8729: () => {}, -foo8730: () => {}, -foo8731: () => {}, -foo8732: () => {}, -foo8733: () => {}, -foo8734: () => {}, -foo8735: () => {}, -foo8736: () => {}, -foo8737: () => {}, -foo8738: () => {}, -foo8739: () => {}, -foo8740: () => {}, -foo8741: () => {}, -foo8742: () => {}, -foo8743: () => {}, -foo8744: () => {}, -foo8745: () => {}, -foo8746: () => {}, -foo8747: () => {}, -foo8748: () => {}, -foo8749: () => {}, -foo8750: () => {}, -foo8751: () => {}, -foo8752: () => {}, -foo8753: () => {}, -foo8754: () => {}, -foo8755: () => {}, -foo8756: () => {}, -foo8757: () => {}, -foo8758: () => {}, -foo8759: () => {}, -foo8760: () => {}, -foo8761: () => {}, -foo8762: () => {}, -foo8763: () => {}, -foo8764: () => {}, -foo8765: () => {}, -foo8766: () => {}, -foo8767: () => {}, -foo8768: () => {}, -foo8769: () => {}, -foo8770: () => {}, -foo8771: () => {}, -foo8772: () => {}, -foo8773: () => {}, -foo8774: () => {}, -foo8775: () => {}, -foo8776: () => {}, -foo8777: () => {}, -foo8778: () => {}, -foo8779: () => {}, -foo8780: () => {}, -foo8781: () => {}, -foo8782: () => {}, -foo8783: () => {}, -foo8784: () => {}, -foo8785: () => {}, -foo8786: () => {}, -foo8787: () => {}, -foo8788: () => {}, -foo8789: () => {}, -foo8790: () => {}, -foo8791: () => {}, -foo8792: () => {}, -foo8793: () => {}, -foo8794: () => {}, -foo8795: () => {}, -foo8796: () => {}, -foo8797: () => {}, -foo8798: () => {}, -foo8799: () => {}, -foo8800: () => {}, -foo8801: () => {}, -foo8802: () => {}, -foo8803: () => {}, -foo8804: () => {}, -foo8805: () => {}, -foo8806: () => {}, -foo8807: () => {}, -foo8808: () => {}, -foo8809: () => {}, -foo8810: () => {}, -foo8811: () => {}, -foo8812: () => {}, -foo8813: () => {}, -foo8814: () => {}, -foo8815: () => {}, -foo8816: () => {}, -foo8817: () => {}, -foo8818: () => {}, -foo8819: () => {}, -foo8820: () => {}, -foo8821: () => {}, -foo8822: () => {}, -foo8823: () => {}, -foo8824: () => {}, -foo8825: () => {}, -foo8826: () => {}, -foo8827: () => {}, -foo8828: () => {}, -foo8829: () => {}, -foo8830: () => {}, -foo8831: () => {}, -foo8832: () => {}, -foo8833: () => {}, -foo8834: () => {}, -foo8835: () => {}, -foo8836: () => {}, -foo8837: () => {}, -foo8838: () => {}, -foo8839: () => {}, -foo8840: () => {}, -foo8841: () => {}, -foo8842: () => {}, -foo8843: () => {}, -foo8844: () => {}, -foo8845: () => {}, -foo8846: () => {}, -foo8847: () => {}, -foo8848: () => {}, -foo8849: () => {}, -foo8850: () => {}, -foo8851: () => {}, -foo8852: () => {}, -foo8853: () => {}, -foo8854: () => {}, -foo8855: () => {}, -foo8856: () => {}, -foo8857: () => {}, -foo8858: () => {}, -foo8859: () => {}, -foo8860: () => {}, -foo8861: () => {}, -foo8862: () => {}, -foo8863: () => {}, -foo8864: () => {}, -foo8865: () => {}, -foo8866: () => {}, -foo8867: () => {}, -foo8868: () => {}, -foo8869: () => {}, -foo8870: () => {}, -foo8871: () => {}, -foo8872: () => {}, -foo8873: () => {}, -foo8874: () => {}, -foo8875: () => {}, -foo8876: () => {}, -foo8877: () => {}, -foo8878: () => {}, -foo8879: () => {}, -foo8880: () => {}, -foo8881: () => {}, -foo8882: () => {}, -foo8883: () => {}, -foo8884: () => {}, -foo8885: () => {}, -foo8886: () => {}, -foo8887: () => {}, -foo8888: () => {}, -foo8889: () => {}, -foo8890: () => {}, -foo8891: () => {}, -foo8892: () => {}, -foo8893: () => {}, -foo8894: () => {}, -foo8895: () => {}, -foo8896: () => {}, -foo8897: () => {}, -foo8898: () => {}, -foo8899: () => {}, -foo8900: () => {}, -foo8901: () => {}, -foo8902: () => {}, -foo8903: () => {}, -foo8904: () => {}, -foo8905: () => {}, -foo8906: () => {}, -foo8907: () => {}, -foo8908: () => {}, -foo8909: () => {}, -foo8910: () => {}, -foo8911: () => {}, -foo8912: () => {}, -foo8913: () => {}, -foo8914: () => {}, -foo8915: () => {}, -foo8916: () => {}, -foo8917: () => {}, -foo8918: () => {}, -foo8919: () => {}, -foo8920: () => {}, -foo8921: () => {}, -foo8922: () => {}, -foo8923: () => {}, -foo8924: () => {}, -foo8925: () => {}, -foo8926: () => {}, -foo8927: () => {}, -foo8928: () => {}, -foo8929: () => {}, -foo8930: () => {}, -foo8931: () => {}, -foo8932: () => {}, -foo8933: () => {}, -foo8934: () => {}, -foo8935: () => {}, -foo8936: () => {}, -foo8937: () => {}, -foo8938: () => {}, -foo8939: () => {}, -foo8940: () => {}, -foo8941: () => {}, -foo8942: () => {}, -foo8943: () => {}, -foo8944: () => {}, -foo8945: () => {}, -foo8946: () => {}, -foo8947: () => {}, -foo8948: () => {}, -foo8949: () => {}, -foo8950: () => {}, -foo8951: () => {}, -foo8952: () => {}, -foo8953: () => {}, -foo8954: () => {}, -foo8955: () => {}, -foo8956: () => {}, -foo8957: () => {}, -foo8958: () => {}, -foo8959: () => {}, -foo8960: () => {}, -foo8961: () => {}, -foo8962: () => {}, -foo8963: () => {}, -foo8964: () => {}, -foo8965: () => {}, -foo8966: () => {}, -foo8967: () => {}, -foo8968: () => {}, -foo8969: () => {}, -foo8970: () => {}, -foo8971: () => {}, -foo8972: () => {}, -foo8973: () => {}, -foo8974: () => {}, -foo8975: () => {}, -foo8976: () => {}, -foo8977: () => {}, -foo8978: () => {}, -foo8979: () => {}, -foo8980: () => {}, -foo8981: () => {}, -foo8982: () => {}, -foo8983: () => {}, -foo8984: () => {}, -foo8985: () => {}, -foo8986: () => {}, -foo8987: () => {}, -foo8988: () => {}, -foo8989: () => {}, -foo8990: () => {}, -foo8991: () => {}, -foo8992: () => {}, -foo8993: () => {}, -foo8994: () => {}, -foo8995: () => {}, -foo8996: () => {}, -foo8997: () => {}, -foo8998: () => {}, -foo8999: () => {}, -foo9000: () => {}, -foo9001: () => {}, -foo9002: () => {}, -foo9003: () => {}, -foo9004: () => {}, -foo9005: () => {}, -foo9006: () => {}, -foo9007: () => {}, -foo9008: () => {}, -foo9009: () => {}, -foo9010: () => {}, -foo9011: () => {}, -foo9012: () => {}, -foo9013: () => {}, -foo9014: () => {}, -foo9015: () => {}, -foo9016: () => {}, -foo9017: () => {}, -foo9018: () => {}, -foo9019: () => {}, -foo9020: () => {}, -foo9021: () => {}, -foo9022: () => {}, -foo9023: () => {}, -foo9024: () => {}, -foo9025: () => {}, -foo9026: () => {}, -foo9027: () => {}, -foo9028: () => {}, -foo9029: () => {}, -foo9030: () => {}, -foo9031: () => {}, -foo9032: () => {}, -foo9033: () => {}, -foo9034: () => {}, -foo9035: () => {}, -foo9036: () => {}, -foo9037: () => {}, -foo9038: () => {}, -foo9039: () => {}, -foo9040: () => {}, -foo9041: () => {}, -foo9042: () => {}, -foo9043: () => {}, -foo9044: () => {}, -foo9045: () => {}, -foo9046: () => {}, -foo9047: () => {}, -foo9048: () => {}, -foo9049: () => {}, -foo9050: () => {}, -foo9051: () => {}, -foo9052: () => {}, -foo9053: () => {}, -foo9054: () => {}, -foo9055: () => {}, -foo9056: () => {}, -foo9057: () => {}, -foo9058: () => {}, -foo9059: () => {}, -foo9060: () => {}, -foo9061: () => {}, -foo9062: () => {}, -foo9063: () => {}, -foo9064: () => {}, -foo9065: () => {}, -foo9066: () => {}, -foo9067: () => {}, -foo9068: () => {}, -foo9069: () => {}, -foo9070: () => {}, -foo9071: () => {}, -foo9072: () => {}, -foo9073: () => {}, -foo9074: () => {}, -foo9075: () => {}, -foo9076: () => {}, -foo9077: () => {}, -foo9078: () => {}, -foo9079: () => {}, -foo9080: () => {}, -foo9081: () => {}, -foo9082: () => {}, -foo9083: () => {}, -foo9084: () => {}, -foo9085: () => {}, -foo9086: () => {}, -foo9087: () => {}, -foo9088: () => {}, -foo9089: () => {}, -foo9090: () => {}, -foo9091: () => {}, -foo9092: () => {}, -foo9093: () => {}, -foo9094: () => {}, -foo9095: () => {}, -foo9096: () => {}, -foo9097: () => {}, -foo9098: () => {}, -foo9099: () => {}, -foo9100: () => {}, -foo9101: () => {}, -foo9102: () => {}, -foo9103: () => {}, -foo9104: () => {}, -foo9105: () => {}, -foo9106: () => {}, -foo9107: () => {}, -foo9108: () => {}, -foo9109: () => {}, -foo9110: () => {}, -foo9111: () => {}, -foo9112: () => {}, -foo9113: () => {}, -foo9114: () => {}, -foo9115: () => {}, -foo9116: () => {}, -foo9117: () => {}, -foo9118: () => {}, -foo9119: () => {}, -foo9120: () => {}, -foo9121: () => {}, -foo9122: () => {}, -foo9123: () => {}, -foo9124: () => {}, -foo9125: () => {}, -foo9126: () => {}, -foo9127: () => {}, -foo9128: () => {}, -foo9129: () => {}, -foo9130: () => {}, -foo9131: () => {}, -foo9132: () => {}, -foo9133: () => {}, -foo9134: () => {}, -foo9135: () => {}, -foo9136: () => {}, -foo9137: () => {}, -foo9138: () => {}, -foo9139: () => {}, -foo9140: () => {}, -foo9141: () => {}, -foo9142: () => {}, -foo9143: () => {}, -foo9144: () => {}, -foo9145: () => {}, -foo9146: () => {}, -foo9147: () => {}, -foo9148: () => {}, -foo9149: () => {}, -foo9150: () => {}, -foo9151: () => {}, -foo9152: () => {}, -foo9153: () => {}, -foo9154: () => {}, -foo9155: () => {}, -foo9156: () => {}, -foo9157: () => {}, -foo9158: () => {}, -foo9159: () => {}, -foo9160: () => {}, -foo9161: () => {}, -foo9162: () => {}, -foo9163: () => {}, -foo9164: () => {}, -foo9165: () => {}, -foo9166: () => {}, -foo9167: () => {}, -foo9168: () => {}, -foo9169: () => {}, -foo9170: () => {}, -foo9171: () => {}, -foo9172: () => {}, -foo9173: () => {}, -foo9174: () => {}, -foo9175: () => {}, -foo9176: () => {}, -foo9177: () => {}, -foo9178: () => {}, -foo9179: () => {}, -foo9180: () => {}, -foo9181: () => {}, -foo9182: () => {}, -foo9183: () => {}, -foo9184: () => {}, -foo9185: () => {}, -foo9186: () => {}, -foo9187: () => {}, -foo9188: () => {}, -foo9189: () => {}, -foo9190: () => {}, -foo9191: () => {}, -foo9192: () => {}, -foo9193: () => {}, -foo9194: () => {}, -foo9195: () => {}, -foo9196: () => {}, -foo9197: () => {}, -foo9198: () => {}, -foo9199: () => {}, -foo9200: () => {}, -foo9201: () => {}, -foo9202: () => {}, -foo9203: () => {}, -foo9204: () => {}, -foo9205: () => {}, -foo9206: () => {}, -foo9207: () => {}, -foo9208: () => {}, -foo9209: () => {}, -foo9210: () => {}, -foo9211: () => {}, -foo9212: () => {}, -foo9213: () => {}, -foo9214: () => {}, -foo9215: () => {}, -foo9216: () => {}, -foo9217: () => {}, -foo9218: () => {}, -foo9219: () => {}, -foo9220: () => {}, -foo9221: () => {}, -foo9222: () => {}, -foo9223: () => {}, -foo9224: () => {}, -foo9225: () => {}, -foo9226: () => {}, -foo9227: () => {}, -foo9228: () => {}, -foo9229: () => {}, -foo9230: () => {}, -foo9231: () => {}, -foo9232: () => {}, -foo9233: () => {}, -foo9234: () => {}, -foo9235: () => {}, -foo9236: () => {}, -foo9237: () => {}, -foo9238: () => {}, -foo9239: () => {}, -foo9240: () => {}, -foo9241: () => {}, -foo9242: () => {}, -foo9243: () => {}, -foo9244: () => {}, -foo9245: () => {}, -foo9246: () => {}, -foo9247: () => {}, -foo9248: () => {}, -foo9249: () => {}, -foo9250: () => {}, -foo9251: () => {}, -foo9252: () => {}, -foo9253: () => {}, -foo9254: () => {}, -foo9255: () => {}, -foo9256: () => {}, -foo9257: () => {}, -foo9258: () => {}, -foo9259: () => {}, -foo9260: () => {}, -foo9261: () => {}, -foo9262: () => {}, -foo9263: () => {}, -foo9264: () => {}, -foo9265: () => {}, -foo9266: () => {}, -foo9267: () => {}, -foo9268: () => {}, -foo9269: () => {}, -foo9270: () => {}, -foo9271: () => {}, -foo9272: () => {}, -foo9273: () => {}, -foo9274: () => {}, -foo9275: () => {}, -foo9276: () => {}, -foo9277: () => {}, -foo9278: () => {}, -foo9279: () => {}, -foo9280: () => {}, -foo9281: () => {}, -foo9282: () => {}, -foo9283: () => {}, -foo9284: () => {}, -foo9285: () => {}, -foo9286: () => {}, -foo9287: () => {}, -foo9288: () => {}, -foo9289: () => {}, -foo9290: () => {}, -foo9291: () => {}, -foo9292: () => {}, -foo9293: () => {}, -foo9294: () => {}, -foo9295: () => {}, -foo9296: () => {}, -foo9297: () => {}, -foo9298: () => {}, -foo9299: () => {}, -foo9300: () => {}, -foo9301: () => {}, -foo9302: () => {}, -foo9303: () => {}, -foo9304: () => {}, -foo9305: () => {}, -foo9306: () => {}, -foo9307: () => {}, -foo9308: () => {}, -foo9309: () => {}, -foo9310: () => {}, -foo9311: () => {}, -foo9312: () => {}, -foo9313: () => {}, -foo9314: () => {}, -foo9315: () => {}, -foo9316: () => {}, -foo9317: () => {}, -foo9318: () => {}, -foo9319: () => {}, -foo9320: () => {}, -foo9321: () => {}, -foo9322: () => {}, -foo9323: () => {}, -foo9324: () => {}, -foo9325: () => {}, -foo9326: () => {}, -foo9327: () => {}, -foo9328: () => {}, -foo9329: () => {}, -foo9330: () => {}, -foo9331: () => {}, -foo9332: () => {}, -foo9333: () => {}, -foo9334: () => {}, -foo9335: () => {}, -foo9336: () => {}, -foo9337: () => {}, -foo9338: () => {}, -foo9339: () => {}, -foo9340: () => {}, -foo9341: () => {}, -foo9342: () => {}, -foo9343: () => {}, -foo9344: () => {}, -foo9345: () => {}, -foo9346: () => {}, -foo9347: () => {}, -foo9348: () => {}, -foo9349: () => {}, -foo9350: () => {}, -foo9351: () => {}, -foo9352: () => {}, -foo9353: () => {}, -foo9354: () => {}, -foo9355: () => {}, -foo9356: () => {}, -foo9357: () => {}, -foo9358: () => {}, -foo9359: () => {}, -foo9360: () => {}, -foo9361: () => {}, -foo9362: () => {}, -foo9363: () => {}, -foo9364: () => {}, -foo9365: () => {}, -foo9366: () => {}, -foo9367: () => {}, -foo9368: () => {}, -foo9369: () => {}, -foo9370: () => {}, -foo9371: () => {}, -foo9372: () => {}, -foo9373: () => {}, -foo9374: () => {}, -foo9375: () => {}, -foo9376: () => {}, -foo9377: () => {}, -foo9378: () => {}, -foo9379: () => {}, -foo9380: () => {}, -foo9381: () => {}, -foo9382: () => {}, -foo9383: () => {}, -foo9384: () => {}, -foo9385: () => {}, -foo9386: () => {}, -foo9387: () => {}, -foo9388: () => {}, -foo9389: () => {}, -foo9390: () => {}, -foo9391: () => {}, -foo9392: () => {}, -foo9393: () => {}, -foo9394: () => {}, -foo9395: () => {}, -foo9396: () => {}, -foo9397: () => {}, -foo9398: () => {}, -foo9399: () => {}, -foo9400: () => {}, -foo9401: () => {}, -foo9402: () => {}, -foo9403: () => {}, -foo9404: () => {}, -foo9405: () => {}, -foo9406: () => {}, -foo9407: () => {}, -foo9408: () => {}, -foo9409: () => {}, -foo9410: () => {}, -foo9411: () => {}, -foo9412: () => {}, -foo9413: () => {}, -foo9414: () => {}, -foo9415: () => {}, -foo9416: () => {}, -foo9417: () => {}, -foo9418: () => {}, -foo9419: () => {}, -foo9420: () => {}, -foo9421: () => {}, -foo9422: () => {}, -foo9423: () => {}, -foo9424: () => {}, -foo9425: () => {}, -foo9426: () => {}, -foo9427: () => {}, -foo9428: () => {}, -foo9429: () => {}, -foo9430: () => {}, -foo9431: () => {}, -foo9432: () => {}, -foo9433: () => {}, -foo9434: () => {}, -foo9435: () => {}, -foo9436: () => {}, -foo9437: () => {}, -foo9438: () => {}, -foo9439: () => {}, -foo9440: () => {}, -foo9441: () => {}, -foo9442: () => {}, -foo9443: () => {}, -foo9444: () => {}, -foo9445: () => {}, -foo9446: () => {}, -foo9447: () => {}, -foo9448: () => {}, -foo9449: () => {}, -foo9450: () => {}, -foo9451: () => {}, -foo9452: () => {}, -foo9453: () => {}, -foo9454: () => {}, -foo9455: () => {}, -foo9456: () => {}, -foo9457: () => {}, -foo9458: () => {}, -foo9459: () => {}, -foo9460: () => {}, -foo9461: () => {}, -foo9462: () => {}, -foo9463: () => {}, -foo9464: () => {}, -foo9465: () => {}, -foo9466: () => {}, -foo9467: () => {}, -foo9468: () => {}, -foo9469: () => {}, -foo9470: () => {}, -foo9471: () => {}, -foo9472: () => {}, -foo9473: () => {}, -foo9474: () => {}, -foo9475: () => {}, -foo9476: () => {}, -foo9477: () => {}, -foo9478: () => {}, -foo9479: () => {}, -foo9480: () => {}, -foo9481: () => {}, -foo9482: () => {}, -foo9483: () => {}, -foo9484: () => {}, -foo9485: () => {}, -foo9486: () => {}, -foo9487: () => {}, -foo9488: () => {}, -foo9489: () => {}, -foo9490: () => {}, -foo9491: () => {}, -foo9492: () => {}, -foo9493: () => {}, -foo9494: () => {}, -foo9495: () => {}, -foo9496: () => {}, -foo9497: () => {}, -foo9498: () => {}, -foo9499: () => {}, -foo9500: () => {}, -foo9501: () => {}, -foo9502: () => {}, -foo9503: () => {}, -foo9504: () => {}, -foo9505: () => {}, -foo9506: () => {}, -foo9507: () => {}, -foo9508: () => {}, -foo9509: () => {}, -foo9510: () => {}, -foo9511: () => {}, -foo9512: () => {}, -foo9513: () => {}, -foo9514: () => {}, -foo9515: () => {}, -foo9516: () => {}, -foo9517: () => {}, -foo9518: () => {}, -foo9519: () => {}, -foo9520: () => {}, -foo9521: () => {}, -foo9522: () => {}, -foo9523: () => {}, -foo9524: () => {}, -foo9525: () => {}, -foo9526: () => {}, -foo9527: () => {}, -foo9528: () => {}, -foo9529: () => {}, -foo9530: () => {}, -foo9531: () => {}, -foo9532: () => {}, -foo9533: () => {}, -foo9534: () => {}, -foo9535: () => {}, -foo9536: () => {}, -foo9537: () => {}, -foo9538: () => {}, -foo9539: () => {}, -foo9540: () => {}, -foo9541: () => {}, -foo9542: () => {}, -foo9543: () => {}, -foo9544: () => {}, -foo9545: () => {}, -foo9546: () => {}, -foo9547: () => {}, -foo9548: () => {}, -foo9549: () => {}, -foo9550: () => {}, -foo9551: () => {}, -foo9552: () => {}, -foo9553: () => {}, -foo9554: () => {}, -foo9555: () => {}, -foo9556: () => {}, -foo9557: () => {}, -foo9558: () => {}, -foo9559: () => {}, -foo9560: () => {}, -foo9561: () => {}, -foo9562: () => {}, -foo9563: () => {}, -foo9564: () => {}, -foo9565: () => {}, -foo9566: () => {}, -foo9567: () => {}, -foo9568: () => {}, -foo9569: () => {}, -foo9570: () => {}, -foo9571: () => {}, -foo9572: () => {}, -foo9573: () => {}, -foo9574: () => {}, -foo9575: () => {}, -foo9576: () => {}, -foo9577: () => {}, -foo9578: () => {}, -foo9579: () => {}, -foo9580: () => {}, -foo9581: () => {}, -foo9582: () => {}, -foo9583: () => {}, -foo9584: () => {}, -foo9585: () => {}, -foo9586: () => {}, -foo9587: () => {}, -foo9588: () => {}, -foo9589: () => {}, -foo9590: () => {}, -foo9591: () => {}, -foo9592: () => {}, -foo9593: () => {}, -foo9594: () => {}, -foo9595: () => {}, -foo9596: () => {}, -foo9597: () => {}, -foo9598: () => {}, -foo9599: () => {}, -foo9600: () => {}, -foo9601: () => {}, -foo9602: () => {}, -foo9603: () => {}, -foo9604: () => {}, -foo9605: () => {}, -foo9606: () => {}, -foo9607: () => {}, -foo9608: () => {}, -foo9609: () => {}, -foo9610: () => {}, -foo9611: () => {}, -foo9612: () => {}, -foo9613: () => {}, -foo9614: () => {}, -foo9615: () => {}, -foo9616: () => {}, -foo9617: () => {}, -foo9618: () => {}, -foo9619: () => {}, -foo9620: () => {}, -foo9621: () => {}, -foo9622: () => {}, -foo9623: () => {}, -foo9624: () => {}, -foo9625: () => {}, -foo9626: () => {}, -foo9627: () => {}, -foo9628: () => {}, -foo9629: () => {}, -foo9630: () => {}, -foo9631: () => {}, -foo9632: () => {}, -foo9633: () => {}, -foo9634: () => {}, -foo9635: () => {}, -foo9636: () => {}, -foo9637: () => {}, -foo9638: () => {}, -foo9639: () => {}, -foo9640: () => {}, -foo9641: () => {}, -foo9642: () => {}, -foo9643: () => {}, -foo9644: () => {}, -foo9645: () => {}, -foo9646: () => {}, -foo9647: () => {}, -foo9648: () => {}, -foo9649: () => {}, -foo9650: () => {}, -foo9651: () => {}, -foo9652: () => {}, -foo9653: () => {}, -foo9654: () => {}, -foo9655: () => {}, -foo9656: () => {}, -foo9657: () => {}, -foo9658: () => {}, -foo9659: () => {}, -foo9660: () => {}, -foo9661: () => {}, -foo9662: () => {}, -foo9663: () => {}, -foo9664: () => {}, -foo9665: () => {}, -foo9666: () => {}, -foo9667: () => {}, -foo9668: () => {}, -foo9669: () => {}, -foo9670: () => {}, -foo9671: () => {}, -foo9672: () => {}, -foo9673: () => {}, -foo9674: () => {}, -foo9675: () => {}, -foo9676: () => {}, -foo9677: () => {}, -foo9678: () => {}, -foo9679: () => {}, -foo9680: () => {}, -foo9681: () => {}, -foo9682: () => {}, -foo9683: () => {}, -foo9684: () => {}, -foo9685: () => {}, -foo9686: () => {}, -foo9687: () => {}, -foo9688: () => {}, -foo9689: () => {}, -foo9690: () => {}, -foo9691: () => {}, -foo9692: () => {}, -foo9693: () => {}, -foo9694: () => {}, -foo9695: () => {}, -foo9696: () => {}, -foo9697: () => {}, -foo9698: () => {}, -foo9699: () => {}, -foo9700: () => {}, -foo9701: () => {}, -foo9702: () => {}, -foo9703: () => {}, -foo9704: () => {}, -foo9705: () => {}, -foo9706: () => {}, -foo9707: () => {}, -foo9708: () => {}, -foo9709: () => {}, -foo9710: () => {}, -foo9711: () => {}, -foo9712: () => {}, -foo9713: () => {}, -foo9714: () => {}, -foo9715: () => {}, -foo9716: () => {}, -foo9717: () => {}, -foo9718: () => {}, -foo9719: () => {}, -foo9720: () => {}, -foo9721: () => {}, -foo9722: () => {}, -foo9723: () => {}, -foo9724: () => {}, -foo9725: () => {}, -foo9726: () => {}, -foo9727: () => {}, -foo9728: () => {}, -foo9729: () => {}, -foo9730: () => {}, -foo9731: () => {}, -foo9732: () => {}, -foo9733: () => {}, -foo9734: () => {}, -foo9735: () => {}, -foo9736: () => {}, -foo9737: () => {}, -foo9738: () => {}, -foo9739: () => {}, -foo9740: () => {}, -foo9741: () => {}, -foo9742: () => {}, -foo9743: () => {}, -foo9744: () => {}, -foo9745: () => {}, -foo9746: () => {}, -foo9747: () => {}, -foo9748: () => {}, -foo9749: () => {}, -foo9750: () => {}, -foo9751: () => {}, -foo9752: () => {}, -foo9753: () => {}, -foo9754: () => {}, -foo9755: () => {}, -foo9756: () => {}, -foo9757: () => {}, -foo9758: () => {}, -foo9759: () => {}, -foo9760: () => {}, -foo9761: () => {}, -foo9762: () => {}, -foo9763: () => {}, -foo9764: () => {}, -foo9765: () => {}, -foo9766: () => {}, -foo9767: () => {}, -foo9768: () => {}, -foo9769: () => {}, -foo9770: () => {}, -foo9771: () => {}, -foo9772: () => {}, -foo9773: () => {}, -foo9774: () => {}, -foo9775: () => {}, -foo9776: () => {}, -foo9777: () => {}, -foo9778: () => {}, -foo9779: () => {}, -foo9780: () => {}, -foo9781: () => {}, -foo9782: () => {}, -foo9783: () => {}, -foo9784: () => {}, -foo9785: () => {}, -foo9786: () => {}, -foo9787: () => {}, -foo9788: () => {}, -foo9789: () => {}, -foo9790: () => {}, -foo9791: () => {}, -foo9792: () => {}, -foo9793: () => {}, -foo9794: () => {}, -foo9795: () => {}, -foo9796: () => {}, -foo9797: () => {}, -foo9798: () => {}, -foo9799: () => {}, -foo9800: () => {}, -foo9801: () => {}, -foo9802: () => {}, -foo9803: () => {}, -foo9804: () => {}, -foo9805: () => {}, -foo9806: () => {}, -foo9807: () => {}, -foo9808: () => {}, -foo9809: () => {}, -foo9810: () => {}, -foo9811: () => {}, -foo9812: () => {}, -foo9813: () => {}, -foo9814: () => {}, -foo9815: () => {}, -foo9816: () => {}, -foo9817: () => {}, -foo9818: () => {}, -foo9819: () => {}, -foo9820: () => {}, -foo9821: () => {}, -foo9822: () => {}, -foo9823: () => {}, -foo9824: () => {}, -foo9825: () => {}, -foo9826: () => {}, -foo9827: () => {}, -foo9828: () => {}, -foo9829: () => {}, -foo9830: () => {}, -foo9831: () => {}, -foo9832: () => {}, -foo9833: () => {}, -foo9834: () => {}, -foo9835: () => {}, -foo9836: () => {}, -foo9837: () => {}, -foo9838: () => {}, -foo9839: () => {}, -foo9840: () => {}, -foo9841: () => {}, -foo9842: () => {}, -foo9843: () => {}, -foo9844: () => {}, -foo9845: () => {}, -foo9846: () => {}, -foo9847: () => {}, -foo9848: () => {}, -foo9849: () => {}, -foo9850: () => {}, -foo9851: () => {}, -foo9852: () => {}, -foo9853: () => {}, -foo9854: () => {}, -foo9855: () => {}, -foo9856: () => {}, -foo9857: () => {}, -foo9858: () => {}, -foo9859: () => {}, -foo9860: () => {}, -foo9861: () => {}, -foo9862: () => {}, -foo9863: () => {}, -foo9864: () => {}, -foo9865: () => {}, -foo9866: () => {}, -foo9867: () => {}, -foo9868: () => {}, -foo9869: () => {}, -foo9870: () => {}, -foo9871: () => {}, -foo9872: () => {}, -foo9873: () => {}, -foo9874: () => {}, -foo9875: () => {}, -foo9876: () => {}, -foo9877: () => {}, -foo9878: () => {}, -foo9879: () => {}, -foo9880: () => {}, -foo9881: () => {}, -foo9882: () => {}, -foo9883: () => {}, -foo9884: () => {}, -foo9885: () => {}, -foo9886: () => {}, -foo9887: () => {}, -foo9888: () => {}, -foo9889: () => {}, -foo9890: () => {}, -foo9891: () => {}, -foo9892: () => {}, -foo9893: () => {}, -foo9894: () => {}, -foo9895: () => {}, -foo9896: () => {}, -foo9897: () => {}, -foo9898: () => {}, -foo9899: () => {}, -foo9900: () => {}, -foo9901: () => {}, -foo9902: () => {}, -foo9903: () => {}, -foo9904: () => {}, -foo9905: () => {}, -foo9906: () => {}, -foo9907: () => {}, -foo9908: () => {}, -foo9909: () => {}, -foo9910: () => {}, -foo9911: () => {}, -foo9912: () => {}, -foo9913: () => {}, -foo9914: () => {}, -foo9915: () => {}, -foo9916: () => {}, -foo9917: () => {}, -foo9918: () => {}, -foo9919: () => {}, -foo9920: () => {}, -foo9921: () => {}, -foo9922: () => {}, -foo9923: () => {}, -foo9924: () => {}, -foo9925: () => {}, -foo9926: () => {}, -foo9927: () => {}, -foo9928: () => {}, -foo9929: () => {}, -foo9930: () => {}, -foo9931: () => {}, -foo9932: () => {}, -foo9933: () => {}, -foo9934: () => {}, -foo9935: () => {}, -foo9936: () => {}, -foo9937: () => {}, -foo9938: () => {}, -foo9939: () => {}, -foo9940: () => {}, -foo9941: () => {}, -foo9942: () => {}, -foo9943: () => {}, -foo9944: () => {}, -foo9945: () => {}, -foo9946: () => {}, -foo9947: () => {}, -foo9948: () => {}, -foo9949: () => {}, -foo9950: () => {}, -foo9951: () => {}, -foo9952: () => {}, -foo9953: () => {}, -foo9954: () => {}, -foo9955: () => {}, -foo9956: () => {}, -foo9957: () => {}, -foo9958: () => {}, -foo9959: () => {}, -foo9960: () => {}, -foo9961: () => {}, -foo9962: () => {}, -foo9963: () => {}, -foo9964: () => {}, -foo9965: () => {}, -foo9966: () => {}, -foo9967: () => {}, -foo9968: () => {}, -foo9969: () => {}, -foo9970: () => {}, -foo9971: () => {}, -foo9972: () => {}, -foo9973: () => {}, -foo9974: () => {}, -foo9975: () => {}, -foo9976: () => {}, -foo9977: () => {}, -foo9978: () => {}, -foo9979: () => {}, -foo9980: () => {}, -foo9981: () => {}, -foo9982: () => {}, -foo9983: () => {}, -foo9984: () => {}, -foo9985: () => {}, -foo9986: () => {}, -foo9987: () => {}, -foo9988: () => {}, -foo9989: () => {}, -foo9990: () => {}, -foo9991: () => {}, -foo9992: () => {}, -foo9993: () => {}, -foo9994: () => {}, -foo9995: () => {}, -foo9996: () => {}, -foo9997: () => {}, -foo9998: () => {}, -foo9999: () => {}, -foo10000: () => {}, -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-459955.js b/implementation-contributed/v8/mjsunit/regress/regress-459955.js deleted file mode 100644 index 24eff6d40ca..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-459955.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(x) { - var v; - if (x) v = 0; - return v <= 1; -} -assertFalse(f(false)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-460917.js b/implementation-contributed/v8/mjsunit/regress/regress-460917.js deleted file mode 100644 index ed64c9cb781..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-460917.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function boom(a1, a2) { - // Do something with a2 that needs a map check (for DOUBLE_ELEMENTS). - var s = a2[0]; - // Emit a load that transitions a1 to PACKED_ELEMENTS. - var t = a1[0]; - // Emit a store to a2 that assumes DOUBLE_ELEMENTS. - // The map check is considered redundant and will be eliminated. - a2[0] = 0.3; -} - -// Prepare type feedback for the "t = a1[0]" load: fast elements. -var fast_elem = new Array(1); -fast_elem[0] = "tagged"; -boom(fast_elem, [1]); - -// Prepare type feedback for the "a2[0] = 0.3" store: double elements. -var double_elem = new Array(1); -double_elem[0] = 0.1; -boom(double_elem, double_elem); - -// Reset |double_elem| and go have a party. -double_elem = new Array(10); -double_elem[0] = 0.1; - -%OptimizeFunctionOnNextCall(boom); -boom(double_elem, double_elem); - -assertEquals(0.3, double_elem[0]); -assertEquals(undefined, double_elem[1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-463028.js b/implementation-contributed/v8/mjsunit/regress/regress-463028.js deleted file mode 100644 index 1454ef1aea9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-463028.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {} -Object.defineProperty(o, "z", { - set: function() { - %DeoptimizeFunction(f); - }, -}); - -function f(o) { - return 19 + (void(o.z = 12)); -} - -f(o); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4640.js b/implementation-contributed/v8/mjsunit/regress/regress-4640.js deleted file mode 100644 index ed609bbb1f1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4640.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Some surrounding cases which already worked, for good measure -assertTrue(new Date('275760-10-14') == 'Invalid Date'); -assertTrue(new Date('275760-09-23') == 'Invalid Date'); -assertTrue(new Date('+275760-09-24') == 'Invalid Date'); -assertTrue(new Date('+275760-10-13') == 'Invalid Date'); - -// The following cases used to throw "illegal access" -assertTrue(new Date('275760-09-24') == 'Invalid Date'); -assertTrue(new Date('275760-10-13') == 'Invalid Date'); -assertTrue(new Date('+275760-10-13 ') == 'Invalid Date'); - -// However, dates within the range or valid -assertTrue(new Date('100000-10-13') != 'Invalid Date'); -assertTrue(new Date('+100000-10-13') != 'Invalid Date'); -assertTrue(new Date('+100000-10-13 ') != 'Invalid Date'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4654.js b/implementation-contributed/v8/mjsunit/regress/regress-4654.js deleted file mode 100644 index eb08b1126ea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4654.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals('hello\u0000foobar', 'hello\u0000foobar'.normalize('NFC')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4659.js b/implementation-contributed/v8/mjsunit/regress/regress-4659.js deleted file mode 100644 index 8992bb89fee..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4659.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var obj = { - get longerName(){ - return 42; - } -}; -assertEquals(42, obj.longerName); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4665.js b/implementation-contributed/v8/mjsunit/regress/regress-4665.js deleted file mode 100644 index 9aed4ed0ce4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4665.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// First test case - -function FirstBuffer () {} -FirstBuffer.prototype.__proto__ = Uint8Array.prototype -FirstBuffer.__proto__ = Uint8Array - -var buf = new Uint8Array(10) -buf.__proto__ = FirstBuffer.prototype - -assertThrows(() => buf.subarray(2), TypeError); - -// Second test case - -let seen_args = []; - -function SecondBuffer (arg) { - seen_args.push(arg); - var arr = new Uint8Array(arg) - arr.__proto__ = SecondBuffer.prototype - return arr -} -SecondBuffer.prototype.__proto__ = Uint8Array.prototype -SecondBuffer.__proto__ = Uint8Array - -var buf3 = new SecondBuffer(10) -assertEquals([10], seen_args); - -var buf4 = buf3.subarray(2) - -assertEquals(10, buf4.length); -assertEquals([10, buf3.buffer], seen_args); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-466993.js b/implementation-contributed/v8/mjsunit/regress/regress-466993.js deleted file mode 100644 index 6bf02bbbae0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-466993.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var test = function() { - var a = {"1": false, "2": false, "3": false, "4": false}; - assertEquals(false, a[1]); - a[1] = true; -}; -test(); -test(); -test(); -%OptimizeFunctionOnNextCall(test); -test(); -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-467481.js b/implementation-contributed/v8/mjsunit/regress/regress-467481.js deleted file mode 100644 index dcb12d89b0b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-467481.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a1, a2) { - var v7 = a2[0]; - var v8 = a1[0]; - a2[0] = 0.3; -} -v6 = new Array(1); -v6[0] = "tagged"; -f(v6, [1]); -v5 = new Array(1); -v5[0] = 0.1; -f(v5, v5); -v5 = new Array(10); -f(v5, v5); -%OptimizeFunctionOnNextCall(f); -f(v5, v5); -v5[0]; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4693.js b/implementation-contributed/v8/mjsunit/regress/regress-4693.js deleted file mode 100644 index 2c31cd95e60..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4693.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// - -// In sloppy mode we allow function redeclarations within blocks for webcompat. -(function() { - assertEquals(undefined, f); // Annex B - if (true) { - assertEquals(2, f()); - function f() { return 1 } - assertEquals(2, f()); - function f() { return 2 } - assertEquals(2, f()); - } - assertEquals(2, f()); // Annex B -})(); - -// Should still fail in strict mode -assertThrows(` - (function() { - "use strict"; - if (true) { - function f() { return 1 } - function f() { return 2 } - } - })(); -`, SyntaxError); - -// Conflicts between let and function still throw -assertThrows(` - (function() { - if (true) { - let f; - function f() { return 2 } - } - })(); -`, SyntaxError); - -assertThrows(` - (function() { - if (true) { - function f() { return 2 } - let f; - } - })(); -`, SyntaxError); - -// Conflicts between const and function still throw -assertThrows(` - (function() { - if (true) { - const f; - function f() { return 2 } - } - })(); -`, SyntaxError); - -assertThrows(` - (function() { - if (true) { - function f() { return 2 } - const f; - } - })(); -`, SyntaxError); - -// Annex B redefinition semantics still apply with more blocks -(function() { - assertEquals(undefined, f); // Annex B - if (true) { - assertEquals(undefined, f); - { function f() { return 1 } } - assertEquals(1, f()); - { function f() { return 2 } } - assertEquals(2, f()); - } - assertEquals(2, f()); // Annex B -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-469605.js b/implementation-contributed/v8/mjsunit/regress/regress-469605.js deleted file mode 100644 index 65725117bd5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-469605.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function counter() { - var i = 100; - return function() { - if (i-- > 0) return i; - throw "done"; - } -} - -var c1 = counter(); -var c2 = counter(); - -var f = (function() { - "use asm"; - return function f(i) { - i = i|0; - do { - if (i > 0) c1(); - else c2(); - } while (true); - } -})(); - -assertThrows(function() { f(0); }); -assertThrows(function() { f(1); }); - -var c3 = counter(); - -var g = (function() { - "use asm"; - return function g(i) { - i = i + 1; - do { - i = c3(i); - } while (true); - } -})(); - -assertThrows(function() { g(0); }); -assertThrows(function() { g(1); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-469605b.js b/implementation-contributed/v8/mjsunit/regress/regress-469605b.js deleted file mode 100644 index de176761735..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-469605b.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function counter() { - var i = 10000; - return function() { - if (i-- > 0) return i; - throw "done"; - } -} - - -var f = (function() { - "use asm"; - return function f(i, c1, c2) { - i = i|0; - do { - if (i > 0) { while (0 ? this : this) { c1(); } } - else c2(); - } while (true); - } -})(); - -assertThrows(function() { f(0, counter(), counter()); }); -assertThrows(function() { f(1, counter(), counter()); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-470804.js b/implementation-contributed/v8/mjsunit/regress/regress-470804.js deleted file mode 100644 index cebb91f7e05..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-470804.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --expose-gc - -function f() { - this.foo00 = 0; - this.foo01 = 0; - this.foo02 = 0; - this.foo03 = 0; - this.foo04 = 0; - this.foo05 = 0; - this.foo06 = 0; - this.foo07 = 0; - this.foo08 = 0; - this.foo09 = 0; - this.foo0a = 0; - this.foo0b = 0; - this.foo0c = 0; - this.foo0d = 0; - this.foo0e = 0; - this.foo0f = 0; - this.foo10 = 0; - this.foo11 = 0; - this.foo12 = 0; - this.foo13 = 0; - this.foo14 = 0; - this.foo15 = 0; - this.foo16 = 0; - this.foo17 = 0; - this.foo18 = 0; - this.foo19 = 0; - this.foo1a = 0; - this.foo1b = 0; - this.foo1c = 0; - this.foo1d = 0; - this.foo1e = 0; - this.foo1f = 0; - this.d = 1.3; - gc(); - this.boom = 230; - this.boom = 1.4; -} - -function g() { - return new f(); -} -g(); -g(); -var o = g(); -assertEquals(0, o.foo00); -assertEquals(1.4, o.boom); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4715.js b/implementation-contributed/v8/mjsunit/regress/regress-4715.js deleted file mode 100644 index 33041208e79..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4715.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -var training = {}; -training.a = "nop"; -training.slow = "nop"; -delete training.slow; // Dictionary-mode properties => slow-mode for-in. - -var keepalive = {}; -keepalive.a = "nop"; // Keep a map early in the transition chain alive. - -function GetReal() { - var r = {}; - r.a = "nop"; - r.b = "nop"; - r.c = "dictionarize", - r.d = "gc"; - r.e = "result"; - return r; -}; - -function SideEffect(object, action) { - if (action === "dictionarize") { - delete object.a; - } else if (action === "gc") { - gc(); - } -} - -function foo(object) { - for (var key in object) { - SideEffect(object, object[key]); - } - return key; -} - -// Collect type feedback for slow-mode for-in. -foo(training); -SideEffect({a: 0}, "dictionarize"); -SideEffect({}, "gc"); - -// Compile for slow-mode objects... -%OptimizeFunctionOnNextCall(foo); -// ...and pass in a fast-mode object. -assertEquals("e", foo(GetReal())); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-472504.js b/implementation-contributed/v8/mjsunit/regress/regress-472504.js deleted file mode 100644 index 0e956f6e94d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-472504.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Should not crash in ASAN. -function shouldThrow() { - shouldThrow(JSON.parse('{"0":1}')); -} -assertThrows("shouldThrow()", RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-475.js b/implementation-contributed/v8/mjsunit/regress/regress-475.js deleted file mode 100644 index 4b7dbbdafc2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-475.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(1, (function (){return 1|-1%1})()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-475705.js b/implementation-contributed/v8/mjsunit/regress/regress-475705.js deleted file mode 100644 index ec8416aed44..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-475705.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Crankshaft changes the stack usage and messes up the binary search for the -// stack depth that causes a stack overflow. The issue only arises without -// regexp optimization, which can happen on pages that create a lot of regexps. -// Flags: --noopt --noregexp-optimization - -// Should not crash with a stack overflow in the regexp compiler, even when the -// JS has used most of the stack. -function use_space_then_do_test(depth) { - try { - // The "+ depth" is to avoid the regexp compilation cache. - var regexp_src = repeat(".(.)", 12) + depth; - use_space(depth, regexp_src); - return true; - } catch (e) { - assertFalse(("" + e).indexOf("tack") == -1); // Check for [Ss]tack. - return false; - } -} - -function use_space(n, regexp_src) { - if (--n == 0) { - do_test(regexp_src); - return; - } - use_space(n, regexp_src); -} - -function repeat(str, n) { - var answer = ""; - while (n-- != 0) { - answer += str; - } - return answer; -} - -var subject = repeat("y", 200); - -function do_test(regexp_src) { - var re = new RegExp(regexp_src); - re.test(subject); -} - -function try_different_stack_limits() { - var lower = 100; - var higher = 100000; - while (lower < higher - 1) { - var average = Math.floor((lower + higher) / 2); - if (use_space_then_do_test(average)) { - lower = average; - } else { - higher = average; - } - } - for (var i = lower - 5; i < higher + 5; i++) { - use_space_then_do_test(i); - } -} - -try_different_stack_limits(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-476488.js b/implementation-contributed/v8/mjsunit/regress/regress-476488.js deleted file mode 100644 index 2db6819c0dd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-476488.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt --expose-gc - -function __f_0(message, a) { - eval(), message; - (function blue() { - 'use strict'; - eval(), eval(), message; - gc(); - })(); -} -__f_0(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4769.js b/implementation-contributed/v8/mjsunit/regress/regress-4769.js deleted file mode 100644 index 6fbd01fe140..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4769.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://bugs.chromium.org/p/v8/issues/detail?id=4769 - -Object.getPrototypeOf([])[Symbol.iterator] = () => assertUnreachable(); - -JSON.stringify({foo: [42]}); -JSON.stringify({foo: [42]}, []); -JSON.stringify({foo: [42]}, undefined, ' '); -JSON.stringify({foo: [42]}, [], ' '); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4788-1.js b/implementation-contributed/v8/mjsunit/regress/regress-4788-1.js deleted file mode 100644 index 347ab5e5929..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4788-1.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var f = (function() { - "use asm"; - function foo(x) { - return x == 0; - } - return foo; -})(); - -function deopt(f) { - return { - toString : function() { - %DeoptimizeFunction(f); - return "2"; - } - }; -} - -%OptimizeFunctionOnNextCall(f); -assertFalse(f(deopt(f))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4788-2.js b/implementation-contributed/v8/mjsunit/regress/regress-4788-2.js deleted file mode 100644 index 5441705d546..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4788-2.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var f = (function() { - "use asm"; - function foo(x) { - return x < x; - } - return foo; -})(); - -function deopt(f) { - return { - toString : function() { - %DeoptimizeFunction(f); - return "2"; - } - }; -} - -%OptimizeFunctionOnNextCall(f); -assertFalse(f(deopt(f))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-479528.js b/implementation-contributed/v8/mjsunit/regress/regress-479528.js deleted file mode 100644 index be0dfaff45b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-479528.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var __v_7 = {"__proto__": this}; -__v_9 = %CreatePrivateSymbol("__v_9"); -this[__v_9] = "moo"; -function __f_5() { - __v_7[__v_9] = "bow-wow"; -} -__f_5(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4800.js b/implementation-contributed/v8/mjsunit/regress/regress-4800.js deleted file mode 100644 index af7cbc0b8f4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4800.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x, len) { - var distraction = []; - var result = new Array(25); - - // Create a bunch of double values with long live ranges. - var d0 = x + 0.5; - var d1 = x + 1.5; - var d2 = x + 2.5; - var d3 = x + 3.5; - var d4 = x + 4.5; - var d5 = x + 5.5; - var d6 = x + 6.5; - var d7 = x + 7.5; - var d8 = x + 8.5; - var d9 = x + 9.5; - var d10 = x + 10.5; - var d11 = x + 11.5; - var d12 = x + 12.5; - var d13 = x + 13.5; - var d14 = x + 14.5; - var d15 = x + 15.5; - var d16 = x + 16.5; - var d17 = x + 17.5; - var d18 = x + 18.5; - var d19 = x + 19.5; - var d20 = x + 20.5; - var d21 = x + 21.5; - var d22 = x + 22.5; - var d23 = x + 23.5; - var d24 = x + 24.5; - - // Trigger a stub failure when the array grows too big. - distraction[len] = 0; - - // Write the long-lived doubles to memory and verify them. - result[0] = d0; - result[1] = d1; - result[2] = d2; - result[3] = d3; - result[4] = d4; - result[5] = d5; - result[6] = d6; - result[7] = d7; - result[8] = d8; - result[9] = d9; - result[10] = d10; - result[11] = d11; - result[12] = d12; - result[13] = d13; - result[14] = d14; - result[15] = d15; - result[16] = d16; - result[17] = d17; - result[18] = d18; - result[19] = d19; - result[20] = d20; - result[21] = d21; - result[22] = d22; - result[23] = d23; - result[24] = d24; - - for (var i = 0; i < result.length; i++) { - assertEquals(x + i + 0.5, result[i]); - } -} - -f(0, 10); -f(0, 10); -%OptimizeFunctionOnNextCall(f); -f(0, 80000); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4815.js b/implementation-contributed/v8/mjsunit/regress/regress-4815.js deleted file mode 100644 index 68764865f7c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4815.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var thrower = { [Symbol.toPrimitive]: () => FAIL }; - -// Tests that a native conversion function is included in the -// stack trace. -function testTraceNativeConversion(nativeFunc) { - var nativeFuncName = nativeFunc.name; - try { - nativeFunc(thrower); - assertUnreachable(nativeFuncName); - } catch (e) { - assertTrue(e.stack.indexOf(nativeFuncName) >= 0, nativeFuncName); - } -} - -// C++ builtins. -testTraceNativeConversion(Math.acos); -testTraceNativeConversion(Math.asin); -testTraceNativeConversion(Math.fround); -testTraceNativeConversion(Math.imul); - - -function testBuiltinInStackTrace(script, expectedString) { - try { - eval(script); - assertUnreachable(expectedString); - } catch (e) { - assertTrue(e.stack.indexOf(expectedString) >= 0, expectedString); - } -} - -// C++ builtins. -testBuiltinInStackTrace("Boolean.prototype.toString.call(thrower);", - "at Object.toString"); - -// Constructor builtins. -testBuiltinInStackTrace("new Date(thrower);", "at new Date"); - -// Ensure we correctly pick up the receiver's string tag. -testBuiltinInStackTrace("Math.acos(thrower);", "at Math.acos"); -testBuiltinInStackTrace("Math.asin(thrower);", "at Math.asin"); -testBuiltinInStackTrace("Math.fround(thrower);", "at Math.fround"); -testBuiltinInStackTrace("Math.imul(thrower);", "at Math.imul"); - -// As above, but function passed as an argument and then called. -testBuiltinInStackTrace("((f, x) => f(x))(Math.acos, thrower);", "at acos"); -testBuiltinInStackTrace("((f, x) => f(x))(Math.asin, thrower);", "at asin"); -testBuiltinInStackTrace("((f, x) => f(x))(Math.fround, thrower);", "at fround"); -testBuiltinInStackTrace("((f, x) => f(x))(Math.imul, thrower);", "at imul"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4825.js b/implementation-contributed/v8/mjsunit/regress/regress-4825.js deleted file mode 100644 index fafd3db73ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4825.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function enumerate(o) { - var keys = []; - for (var key in o) keys.push(key); - return keys; -} - -(function testSlowSloppyArgumentsElements() { - function slowSloppyArguments(a, b, c) { - %HeapObjectVerify(arguments); - arguments[10000] = "last"; - arguments[4000] = "first"; - arguments[6000] = "second"; - arguments[5999] = "x"; - arguments[3999] = "y"; - %HeapObjectVerify(arguments); - return arguments; - } - assertEquals(["0", "1", "2", "3999", "4000", "5999", "6000", "10000"], - Object.keys(slowSloppyArguments(1, 2, 3))); - - assertEquals(["0", "1", "2", "3999", "4000", "5999", "6000", "10000"], - enumerate(slowSloppyArguments(1,2,3))); -})(); - -(function testSlowSloppyArgumentsElementsNotEnumerable() { - function slowSloppyArguments(a, b, c) { - Object.defineProperty(arguments, 10000, { - enumerable: false, configurable: false, value: "NOPE" - }); - %HeapObjectVerify(arguments); - arguments[4000] = "first"; - arguments[6000] = "second"; - arguments[5999] = "x"; - arguments[3999] = "y"; - %HeapObjectVerify(arguments); - return arguments; - } - - assertEquals(["0", "1", "2", "3999", "4000", "5999", "6000"], - Object.keys(slowSloppyArguments(1, 2, 3))); - - assertEquals(["0", "1", "2", "3999", "4000", "5999", "6000"], - enumerate(slowSloppyArguments(1,2,3))); -})(); - - -(function testFastSloppyArgumentsElements() { - function fastSloppyArguments(a, b, c) { - arguments[5] = 1; - arguments[7] = 0; - arguments[3] = 2; - %HeapObjectVerify(arguments); - return arguments; - } - assertEquals(["0", "1", "2", "3", "5", "7"], - Object.keys(fastSloppyArguments(1, 2, 3))); - - assertEquals( - ["0", "1", "2", "3", "5", "7"], enumerate(fastSloppyArguments(1, 2, 3))); - - function fastSloppyArguments2(a, b, c) { - delete arguments[0]; - %DebugPrint(arguments); - %HeapObjectVerify(arguments); - arguments[0] = "test"; - %DebugPrint(arguments); - %HeapObjectVerify(arguments); - return arguments; - } - - assertEquals(["0", "1", "2"], Object.keys(fastSloppyArguments2(1, 2, 3))); - assertEquals(["0", "1", "2"], enumerate(fastSloppyArguments2(1, 2, 3))); -})(); - -(function testFastSloppyArgumentsElementsNotEnumerable() { - function fastSloppyArguments(a, b, c) { - Object.defineProperty(arguments, 5, { - enumerable: false, configurable: false, value: "NOPE" - }); - %HeapObjectVerify(arguments); - arguments[7] = 0; - arguments[3] = 2; - %HeapObjectVerify(arguments); - return arguments; - } - assertEquals( - ["0", "1", "2", "3", "7"], Object.keys(fastSloppyArguments(1, 2, 3))); - - assertEquals( - ["0", "1", "2", "3", "7"], enumerate(fastSloppyArguments(1,2,3))); - - function fastSloppyArguments2(a, b, c) { - delete arguments[0]; - %HeapObjectVerify(arguments); - Object.defineProperty(arguments, 1, { - enumerable: false, configurable: false, value: "NOPE" - }); - arguments[0] = "test"; - %HeapObjectVerify(arguments); - return arguments; - } - - assertEquals(["0", "2"], Object.keys(fastSloppyArguments2(1, 2, 3))); - assertEquals(["0", "2"], enumerate(fastSloppyArguments2(1, 2, 3))); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-483.js b/implementation-contributed/v8/mjsunit/regress/regress-483.js deleted file mode 100644 index 7370134d6df..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-483.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function X() { - this.x = this.x.x; -} - -X.prototype.x = {x:1} - -new X() diff --git a/implementation-contributed/v8/mjsunit/regress/regress-484544.js b/implementation-contributed/v8/mjsunit/regress/regress-484544.js deleted file mode 100644 index f8ba1d631a8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-484544.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --stress-compaction --predictable - -function f() { - return [[], [], [[], [], []]]; -} - -for (var i=0; i<10000; i++) { - f(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-485.js b/implementation-contributed/v8/mjsunit/regress/regress-485.js deleted file mode 100644 index f26e0eb1113..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-485.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=485 - -// Ensure that we don't expose the builtins object when calling -// builtin functions that use or return "this". - -var global = this; -var global2 = (function(){return this;})(); -assertEquals(global, global2, "direct call to local function returns global"); - -// Builtin that depends on value of this to compute result. -var builtin2 = Object.prototype.toString; - -// Global object has class "Object" according to Object.prototype.toString. -// Builtins object displays as "[object builtins]". -assertTrue("[object builtins]" != builtin2(), "Direct call to toString"); -assertTrue("[object builtins]" != builtin2.call(), "call() to toString"); -assertTrue("[object builtins]" != builtin2.apply(), "call() to toString"); -assertTrue("[object builtins]" != builtin2.call.call(builtin2), - "call.call() to toString"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-486.js b/implementation-contributed/v8/mjsunit/regress/regress-486.js deleted file mode 100644 index c1e29a63625..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-486.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var st = "\u0422\u0435\u0441\u0442"; // Test in Cyrillic characters. -var cyrillicMatch = /^[\u0430-\u044fa-z]+$/i.test(st); // a-ja a-z. -assertTrue(cyrillicMatch); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4870.js b/implementation-contributed/v8/mjsunit/regress/regress-4870.js deleted file mode 100644 index 6e105485989..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4870.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Intl) { - assertThrows(() => Object.getOwnPropertyDescriptor(Intl.Collator.prototype, - 'compare') - .get.call(new Intl.DateTimeFormat())('a', 'b'), - TypeError) -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-487981.js b/implementation-contributed/v8/mjsunit/regress/regress-487981.js deleted file mode 100644 index 829c25c59d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-487981.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stress-compaction - -// To reliably reproduce the crash use --verify-heap --random-seed=-133185440 - -function __f_2(o) { - return o.field.b.x; -} - -try { - %OptimizeFunctionOnNextCall(__f_2); - __v_1 = __f_2(); -} catch(e) { } - -function __f_3() { __f_3(/./.test()); }; - -try { -__f_3(); -} catch(e) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-488398.js b/implementation-contributed/v8/mjsunit/regress/regress-488398.js deleted file mode 100644 index 77ea293a263..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-488398.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var __v_10 = 4294967295; -__v_0 = []; -__v_0.__proto__ = []; -__v_16 = __v_0; -function __f_17(__v_16, base) { - __v_16[base + 1] = 1; - __v_16[base + 4] = base + 4; -} -__f_17(__v_16, true); -__f_17(__v_16, 14); -%OptimizeFunctionOnNextCall(__f_17); -__f_17(__v_16, 2048); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-489151.js b/implementation-contributed/v8/mjsunit/regress/regress-489151.js deleted file mode 100644 index 25a655585be..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-489151.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -this.__proto__ = Array.prototype; -Object.freeze(this); -function __f_0() { - for (var __v_0 = 0; __v_0 < 10; __v_0++) { - this.length = 1; - } -} - __f_0(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-490.js b/implementation-contributed/v8/mjsunit/regress/regress-490.js deleted file mode 100644 index 6ce89db2f0e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-490.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=490 - -var kXXX = 11 -// Build a string longer than 2^11. See StringBuilderConcatHelper and -// Runtime_StringBuilderConcat in runtime.cc and -// ReplaceResultBuilder.prototype.addSpecialSlice in string.js. -var a = ''; -while (a.length < (2 << 11)) { a+= 'x'; } - -// Test specific for bug introduced in r3153. -a.replace(/^(.*)/, '$1$1$1'); - -// More generalized test. -for (var i = 0; i < 10; i++) { - var b = ''; - for (var j = 0; j < 10; j++) { - b += '$1'; - - // TODO(machenbach): Do we need all these replacements? Wouldn't corner - // cases like smallest and biggest suffice? - a.replace(/^(.*)/, b); - } - a += a; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4908.js b/implementation-contributed/v8/mjsunit/regress/regress-4908.js deleted file mode 100644 index ec618b32c54..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4908.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --always-opt --no-lazy - -(function() { ((s = 17, y = s) => s)() })(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-491.js b/implementation-contributed/v8/mjsunit/regress/regress-491.js deleted file mode 100644 index 2cf5e20ed6a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-491.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=491 -// This should not hit any asserts in debug mode on ARM. - -function function_with_n_strings(n) { - var source = '(function f(){'; - for (var i = 0; i < n; i++) { - if (i != 0) source += ';'; - source += '"x"'; - } - source += '})()'; - eval(source); -} - -var i; -for (i = 500; i < 600; i++) { - function_with_n_strings(i); -} -for (i = 1100; i < 1200; i++) { - function_with_n_strings(i); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-491481.js b/implementation-contributed/v8/mjsunit/regress/regress-491481.js deleted file mode 100644 index 196b6aeb79f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-491481.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -try { -%OptimizeFunctionOnNextCall(print); -try { - __f_16(); -} catch(e) { print(e); } -try { - __f_10(); -} catch(e) {; } -} catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-492.js b/implementation-contributed/v8/mjsunit/regress/regress-492.js deleted file mode 100644 index 53b3195cfea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-492.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=492 -// This should not hit any asserts in debug mode on ARM. - -function function_with_n_args(n) { - var source = '(function f' + n + '('; - for (var arg = 0; arg < n; arg++) { - if (arg != 0) source += ','; - source += 'arg' + arg; - } - source += ') { })()'; - eval(source); -} - -var args; -for (args = 250; args < 270; args++) { - function_with_n_args(args); -} - -for (args = 500; args < 520; args++) { - function_with_n_args(args); -} - -for (args = 1019; args < 1041; args++) { - function_with_n_args(args); -} - - -function foo( - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, - x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x -) {} - -for (var i = 0; i < 10000; ++i) foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4945.js b/implementation-contributed/v8/mjsunit/regress/regress-4945.js deleted file mode 100644 index 8e595e6fde9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4945.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function* g(o) { - yield 'x' in o; -} - -assertTrue(g({x: 1}).next().value); -assertFalse(g({}).next().value); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-496.js b/implementation-contributed/v8/mjsunit/regress/regress-496.js deleted file mode 100644 index 33c1a677eb8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-496.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for http://code.google.com/p/v8/issues/detail?id=496. -// -// Tests that we do not treat the unaliased eval call in g as an -// aliased call to eval. - -function h() { - function f() { return eval; } - function g() { var x = 44; return eval("x"); } - assertEquals(44, g()); -} - -h(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4962.js b/implementation-contributed/v8/mjsunit/regress/regress-4962.js deleted file mode 100644 index f8c96e336e8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4962.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Intl) { - assertInstanceof(Intl.NumberFormat.call(new Proxy({},{})), Intl.NumberFormat); - assertThrows(() => - Intl.DateTimeFormat.prototype.formatToParts.call( - new Proxy({}, {})), - TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4964.js b/implementation-contributed/v8/mjsunit/regress/regress-4964.js deleted file mode 100644 index ad259dca540..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4964.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Detached source -var ab = new ArrayBuffer(10); -ab.constructor = { get [Symbol.species]() { %ArrayBufferDetach(ab); return ArrayBuffer; } }; -assertThrows(() => ab.slice(0), TypeError); - -// Detached target -class DetachedArrayBuffer extends ArrayBuffer { - constructor(...args) { - super(...args); - %ArrayBufferDetach(this); - } -} - -var ab2 = new ArrayBuffer(10); -ab2.constructor = DetachedArrayBuffer; -assertThrows(() => ab2.slice(0), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4967.js b/implementation-contributed/v8/mjsunit/regress/regress-4967.js deleted file mode 100644 index 9b36405cf4e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4967.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => { - new class extends Object { - constructor() { (() => delete super[super()])(); } - } -}, ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4970.js b/implementation-contributed/v8/mjsunit/regress/regress-4970.js deleted file mode 100644 index da0033b34f5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4970.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -function g() { - var f; - class C extends eval("f = () => delete C; Array") {} - f(); -} - -assertThrows(g, SyntaxError); -%OptimizeFunctionOnNextCall(g); -assertThrows(g, SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4971.js b/implementation-contributed/v8/mjsunit/regress/regress-4971.js deleted file mode 100644 index 041f6c2a57f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-4971.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestDeoptInNamedSuperGetter() { - class C { m() { return 23 } } - class D extends C { f() { return super.boom() } } - - var should_deoptimize_caller = false; - Object.defineProperty(C.prototype, "boom", { get: function() { - if (should_deoptimize_caller) %DeoptimizeFunction(D.prototype.f); - return this.m - }}) - - assertEquals(23, new D().f()); - assertEquals(23, new D().f()); - %OptimizeFunctionOnNextCall(D.prototype.f); - assertEquals(23, new D().f()); - should_deoptimize_caller = true; - assertEquals(23, new D().f()); -})(); - -(function TestDeoptInKeyedSuperGetter() { - class C { m() { return 23 } } - class D extends C { f(name) { return super[name]() } } - - var should_deoptimize_caller = false; - Object.defineProperty(C.prototype, "boom", { get: function() { - if (should_deoptimize_caller) %DeoptimizeFunction(D.prototype.f); - return this.m - }}) - - assertEquals(23, new D().f("boom")); - assertEquals(23, new D().f("boom")); - %OptimizeFunctionOnNextCall(D.prototype.f); - assertEquals(23, new D().f("boom")); - should_deoptimize_caller = true; - assertEquals(23, new D().f("boom")); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-499790.js b/implementation-contributed/v8/mjsunit/regress/regress-499790.js deleted file mode 100644 index ce2cd03f025..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-499790.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -var a = [1]; -a.foo = "bla"; -delete a.foo; -a[0] = 1.5; - -var a2 = []; -a2.foo = "bla"; -delete a2.foo; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-500173.js b/implementation-contributed/v8/mjsunit/regress/regress-500173.js deleted file mode 100644 index b7083b2c516..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-500173.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a) { - a.foo = {}; - a[0] = 1; - a.__defineGetter__('foo', function() {}); - a[0] = {}; - a.bar = 0; -} -f(new Array()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-500176.js b/implementation-contributed/v8/mjsunit/regress/regress-500176.js deleted file mode 100644 index 6700ef0f334..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-500176.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __f_0(p) { - var __v_0 = -2147483642; - for (var __v_1 = 0; __v_1 < 10; __v_1++) { - if (__v_1 > 5) { __v_0 = __v_0 + p; break;} - } -} -for (var __v_2 = 0; __v_2 < 100000; __v_2++) __f_0(42); -__v_2 = { f: function () { return x + y; }, - 2: function () { return x - y} }; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5004.js b/implementation-contributed/v8/mjsunit/regress/regress-5004.js deleted file mode 100644 index 234f5d4eb6b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5004.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertAsync(b, s) { - if (!b) { - %AbortJS(" FAILED!") - } -} - -class P extends Promise { - constructor() { - super(...arguments) - return new Proxy(this, { - get: (_, key) => { - return key == 'then' ? - this.then.bind(this) : - this.constructor.resolve(20) - } - }) - } -} - -let p = P.resolve(10) -p.key.then(v => assertAsync(v === 20)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5006.js b/implementation-contributed/v8/mjsunit/regress/regress-5006.js deleted file mode 100644 index 29f145de0ac..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5006.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return Math.imul(x|0, 2); } -print(foo(1)); -print(foo(1)); -%OptimizeFunctionOnNextCall(foo); -print(foo(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-500831.js b/implementation-contributed/v8/mjsunit/regress/regress-500831.js deleted file mode 100644 index 3895c4de043..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-500831.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// To reproduce reliably use: --random-seed=-2012454635 --nodebug-code - -function deepEquals(a, b) { - if (a === b) {; - return true; - } - if (typeof a != typeof b) return false; - if (typeof a == "number"); - if (typeof a !== "object" && typeof a !== "function") - return false; - var objectClass = classOf(); - if (b) return false; - if (objectClass === "RegExp") {; - } - if (objectClass === "Function") return false; - if (objectClass === "Array") { - var elementCount = 0; - if (a.length != b.length) { - return false; - } - for (var i = 0; i < a.length; i++) { - if (a[i][i]) return false; - } - return true; - } - if (objectClass == "String" || objectClass == "Number" || - objectClass == "Boolean" || objectClass == "Date") { - if (a.valueOf()) return false; - }; -} -function equals(expected, found, name_opt) { - if (!deepEquals(found, expected)) {} -}; -function instof(obj, type) { - if (!(obj instanceof type)) { - var actualTypeName = null; - var actualConstructor = Object.getPrototypeOf().constructor; - if (typeof actualConstructor == "function") {; - }; - } -}; -var __v_0 = 1; -var __v_6 = {}; -var __v_9 = {}; - -function __f_4() { - return function() {}; -} -__v_6 = new Uint8ClampedArray(10); - -function __f_6() { - __v_6[0] = 0.499; - instof(__f_4(), Function); - equals(); - __v_6[0] = 0.5; - equals(); - __v_0[0] = 0.501; - equals(__v_6[4294967295]); - __v_6[0] = 1.499; - equals(); - __v_6[0] = 1.5; - equals(); - __v_6[0] = 1.501; - equals(); - __v_6[0] = 2.5; - equals(__v_6[-1073741824]); - __v_6[0] = 3.5; - equals(); - __v_6[0] = 252.5; - equals(); - __v_6[0] = 253.5; - equals(); - __v_6[0] = 254.5; - equals(); - __v_6[0] = 256.5; - equals(); - __v_6[0] = -0.5; - equals(__v_6[8]); - __v_6[0] = -1.5; - equals(); - __v_6[0] = 1000000000000; - equals(); - __v_9[0] = -1000000000000; - equals(__v_6[0]); -} -__f_6(); -__f_6(); %OptimizeFunctionOnNextCall(__f_6); -__f_6(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-500980.js b/implementation-contributed/v8/mjsunit/regress/regress-500980.js deleted file mode 100644 index 841d26aa4a6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-500980.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = "a"; -assertThrows(function() { while (true) a += a; }, RangeError); -assertThrows(function() { a in a; }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5018.js b/implementation-contributed/v8/mjsunit/regress/regress-5018.js deleted file mode 100644 index 22025dc2d8c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5018.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var dv = new DataView(new ArrayBuffer(4), 2); - -function getByteLength(a) { - return a.byteLength; -} - -assertEquals(2, getByteLength(dv)); -assertEquals(2, getByteLength(dv)); - -Object.defineProperty(dv.__proto__, 'byteLength', {value: 42}); - -assertEquals(42, dv.byteLength); -assertEquals(42, getByteLength(dv)); - -function getByteOffset(a) { - return a.byteOffset; -} - -assertEquals(2, getByteOffset(dv)); -assertEquals(2, getByteOffset(dv)); - -Object.defineProperty(dv.__proto__, 'byteOffset', {value: 42}); - -assertEquals(42, dv.byteOffset); -assertEquals(42, getByteOffset(dv)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-502.js b/implementation-contributed/v8/mjsunit/regress/regress-502.js deleted file mode 100644 index d3c9381da8b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-502.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for http://code.google.com/p/v8/issues/detail?id=502. -// -// Test that we do not generate an inlined version of the constructor -// function C. - -var X = 'x'; -function C() { this[X] = 42; } -var a = new C(); -var b = new C(); -assertEquals(42, a.x); -assertEquals(42, b.x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-503.js b/implementation-contributed/v8/mjsunit/regress/regress-503.js deleted file mode 100644 index 5b156b27cc2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-503.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertTrue(undefined == undefined, 1); -assertFalse(undefined <= undefined, 2); -assertFalse(undefined >= undefined, 3); -assertFalse(undefined < undefined, 4); -assertFalse(undefined > undefined, 5); - -assertTrue(null == null, 6); -assertTrue(null <= null, 7); -assertTrue(null >= null, 8); -assertFalse(null < null, 9); -assertFalse(null > null, 10); - -assertTrue(void 0 == void 0, 11); -assertFalse(void 0 <= void 0, 12); -assertFalse(void 0 >= void 0, 13); -assertFalse(void 0 < void 0, 14); -assertFalse(void 0 > void 0, 15); - -var x = void 0; - -assertTrue(x == x, 16); -assertFalse(x <= x, 17); -assertFalse(x >= x, 18); -assertFalse(x < x, 19); -assertFalse(x > x, 20); - -var not_undefined = [null, 0, 1, 1/0, -1/0, "", true, false]; -for (var i = 0; i < not_undefined.length; i++) { - x = not_undefined[i]; - - assertTrue(x == x, "" + 21 + x); - assertTrue(x <= x, "" + 22 + x); - assertTrue(x >= x, "" + 23 + x); - assertFalse(x < x, "" + 24 + x); - assertFalse(x > x, "" + 25 + x); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5033.js b/implementation-contributed/v8/mjsunit/regress/regress-5033.js deleted file mode 100644 index 728094fc6d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5033.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var test = function() { - var t = Date.now(); // Just any non-constant double value. - var o = { - ['p']: 1, - t - }; -}; - -function caller() { - test(); -} -caller(); -caller(); -%OptimizeFunctionOnNextCall(caller); -caller(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-503565.js b/implementation-contributed/v8/mjsunit/regress/regress-503565.js deleted file mode 100644 index 9aebe8d7d1e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-503565.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Crashes without the fix for bug 503565. -function f() {} -function g() {} -function h() { - g() -} -(function() { - eval("\ - \"use strict\";\ - g = (function(x) {\ - +Math.log(+Math.log((+(+x>0)), f(Math.log())))\ - })\ - ") -})() -for (var j = 0; j < 999; j++) { - h() -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5036.js b/implementation-contributed/v8/mjsunit/regress/regress-5036.js deleted file mode 100644 index 77bd242490e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5036.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(["1\u212a"], /\d\w/ui.exec("1\u212a")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-507980.js b/implementation-contributed/v8/mjsunit/regress/regress-507980.js deleted file mode 100644 index d1a1f79f24e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-507980.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -__v_1 = new Float64Array(1); -__v_8 = { valueOf: function() { __v_13.y = "bar"; return 42; }}; -__v_13 = __v_1; -__v_13[0] = __v_8; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5085.js b/implementation-contributed/v8/mjsunit/regress/regress-5085.js deleted file mode 100644 index 167bfa0f447..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5085.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -g = async function () { - await 10; -} -assertEquals(undefined, g.prototype) -g(); -assertEquals(undefined, g.prototype) - -gen = function* () { - yield 10; -} -assertTrue(gen.prototype != undefined && gen.prototype != null) -gen() -assertTrue(gen.prototype != undefined && gen.prototype != null) - -async_gen = async function* () { - yield 10; -} -assertTrue(async_gen.prototype != undefined && async_gen.prototype != null) -async_gen() -assertTrue(async_gen.prototype != undefined && async_gen.prototype != null) - -function foo(x) { - return x instanceof Proxy; -} - -function test_for_exception() { - caught_exception = false; - try { - foo({}); - } catch (e) { - caught_exception = true; - assertEquals( - 'Function has non-object prototype \'undefined\' in instanceof check', - e.message); - } finally { - assertTrue(caught_exception) - } -} - -test_for_exception(); -test_for_exception(); -%OptimizeFunctionOnNextCall(foo); -test_for_exception(); - -Proxy.__proto__.prototype = Function.prototype; -assertTrue((() => {}) instanceof Proxy); - -assertEquals( - new Proxy({}, { - get(o, s) { - return s - } - }).test, - 'test'); - -Proxy.__proto__ = { - prototype: {b: 2}, - a: 1 -}; -assertEquals(Proxy.prototype, {b: 2}); - -(function testProxyCreationContext() { - let realm = Realm.create(); - let p1 = new Proxy({}, {}); - let p2 = Realm.eval(realm, "new Proxy({}, {})"); - assertEquals(0, Realm.owner(p1)); - assertEquals(1, Realm.owner(p2)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-509961.js b/implementation-contributed/v8/mjsunit/regress/regress-509961.js deleted file mode 100644 index d28bc8a268d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-509961.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = { x: 0 }; -delete o.x; -function store(o, p, v) { o[p] = v; } -store(o, "x", 1); -store(o, "x", 1); -store(o, "0", 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5106.js b/implementation-contributed/v8/mjsunit/regress/regress-5106.js deleted file mode 100644 index 52d550a8784..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5106.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function* g1() { - try { - throw {}; - } catch ({a = class extends (yield) {}}) { - } -} -g1().next(); // crashes without fix - -function* g2() { - let x = function(){}; - try { - throw {}; - } catch ({b = class extends x {}}) { - } -} -g2().next(); // crashes without fix - -function* g3() { - let x = 42; - try { - throw {}; - } catch ({c = (function() { return x })()}) { - } -} -g3().next(); // throws a ReferenceError without fix diff --git a/implementation-contributed/v8/mjsunit/regress/regress-515.js b/implementation-contributed/v8/mjsunit/regress/regress-515.js deleted file mode 100644 index 7675fe19ed0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-515.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for http://code.google.com/p/v8/issues/detail?id=515. -// -// The test passes if it does not crash. - -var length = 2048; -var s = ""; -for (var i = 0; i < 2048; i++) { - s += '.'; -} - -var string = s + 'x' + s + 'x' + s; - -string.replace(/x/g, "") diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5173.js b/implementation-contributed/v8/mjsunit/regress/regress-5173.js deleted file mode 100644 index 74f58cc4737..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5173.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var thrower = { [Symbol.toPrimitive]: () => FAIL }; - -// Tests that a native conversion function is included in the -// stack trace. -function testTraceNativeConversion(nativeFunc) { - var nativeFuncName = nativeFunc.name; - try { - nativeFunc(thrower); - assertUnreachable(nativeFuncName); - } catch (e) { - assertTrue(e.stack.indexOf(nativeFuncName) >= 0, nativeFuncName); - } -} - -testTraceNativeConversion(Math.max); -testTraceNativeConversion(Math.min); - -function testBuiltinInStackTrace(script, expectedString) { - try { - eval(script); - assertUnreachable(expectedString); - } catch (e) { - assertTrue(e.stack.indexOf(expectedString) >= 0, expectedString); - } -} - -testBuiltinInStackTrace("Date.prototype.getDate.call('')", "at String.getDate"); -testBuiltinInStackTrace("Date.prototype.getUTCDate.call('')", - "at String.getUTCDate"); -testBuiltinInStackTrace("Date.prototype.getTime.call('')", "at String.getTime"); - -testBuiltinInStackTrace("Number(thrower);", "at Number"); -testBuiltinInStackTrace("new Number(thrower);", "at new Number"); -testBuiltinInStackTrace("String(thrower);", "at String"); -testBuiltinInStackTrace("new String(thrower);", "at new String"); - -// Ensure we correctly pick up the receiver's string tag. -testBuiltinInStackTrace("Math.acos(thrower);", "at Math.acos"); -testBuiltinInStackTrace("Math.asin(thrower);", "at Math.asin"); -testBuiltinInStackTrace("Math.fround(thrower);", "at Math.fround"); -testBuiltinInStackTrace("Math.imul(thrower);", "at Math.imul"); - -// As above, but function passed as an argument and then called. -testBuiltinInStackTrace("((f, x) => f(x))(Math.acos, thrower);", "at acos"); -testBuiltinInStackTrace("((f, x) => f(x))(Math.asin, thrower);", "at asin"); -testBuiltinInStackTrace("((f, x) => f(x))(Math.fround, thrower);", "at fround"); -testBuiltinInStackTrace("((f, x) => f(x))(Math.imul, thrower);", "at imul"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5174.js b/implementation-contributed/v8/mjsunit/regress/regress-5174.js deleted file mode 100644 index 390d24e6821..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5174.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// // Use of this source code is governed by a BSD-style license that can be -// // found in the LICENSE file. - -assertEquals([], Object.keys(new Proxy([], {}))); -assertEquals([], Object.keys(new Proxy(/regex/, {}))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5178.js b/implementation-contributed/v8/mjsunit/regress/regress-5178.js deleted file mode 100644 index cf10ae71871..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5178.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => { - try { throw {} } catch({a=b, b}) { a+b } -}, ReferenceError); - -try { throw {a: 42} } catch({a, b=a}) { assertEquals(42, b) }; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5181.js b/implementation-contributed/v8/mjsunit/regress/regress-5181.js deleted file mode 100644 index d8dfc4a0b6e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5181.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var target = Object.create(null); -var proxy = new Proxy(target, { - ownKeys: function() { - return ['a']; - } -}); -for (var key in proxy) ; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5199.js b/implementation-contributed/v8/mjsunit/regress/regress-5199.js deleted file mode 100644 index 818e71a06d3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5199.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertTrue(/(a[\u1000A])+/i.test('aa')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-520029.js b/implementation-contributed/v8/mjsunit/regress/regress-520029.js deleted file mode 100644 index 9a1d2003078..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-520029.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that hoisting a function out of a lexical scope does not -// lead to a parsing error - -// This used to cause a crash in the parser -function f(one) { class x { } { class x { } function g() { one; x; } g() } } f() - -// This used to lead to a ReferenceError -function g() { var x = 1; { let x = 2; function g() { x; } g(); } } -assertEquals(undefined, g()); - -// This used to cause a crash in the parser -function __f_4(one) { - var __v_10 = one + 1; - { - let __v_10 = one + 3; - function __f_6() { - one; - __v_10; - } - __f_6(); - } -} -__f_4(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5205.js b/implementation-contributed/v8/mjsunit/regress/regress-5205.js deleted file mode 100644 index 0d88f450539..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5205.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --gc-global - -(function TestGCDuringToObjectForWith() { - function f(o) { - if (o == 'warmup') { return g() } - with (o) { return x } - } - function g() { - // Only a marker function serving as weak embedded object. - } - - // Warm up 'f' so that weak embedded object 'g' will be used. - f('warmup'); - f('warmup'); - g = null; - - // Test that 'f' behaves correctly unoptimized. - assertEquals(23, f({ x:23 })); - assertEquals(42, f({ x:42 })); - - // Test that 'f' behaves correctly optimized. - %OptimizeFunctionOnNextCall(f); - assertEquals(65, f({ x:65 })); - - // Test that 'f' behaves correctly on numbers. - Number.prototype.x = 99; - assertEquals(99, f(0)); - - // Make sure the next [[ToObject]] allocation triggers GC. This in turn will - // deoptimize 'f' because it has the weak embedded object 'g' in the code. - %SetAllocationTimeout(1000, 1, false); - assertEquals(99, f(0)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5213.js b/implementation-contributed/v8/mjsunit/regress/regress-5213.js deleted file mode 100644 index 831e1346d82..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5213.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// See http://code.google.com/p/v8/issues/detail?id=5213 - -assertEquals(0, Math.pow(2,-2147483648)); -assertEquals(0, Math.pow(2,-9223372036854775808)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5214.js b/implementation-contributed/v8/mjsunit/regress/regress-5214.js deleted file mode 100644 index f90a590253c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5214.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// See http://code.google.com/p/v8/issues/detail?id=5214 - - -assertEquals(Infinity, Math.pow(2, 0x80000000)); -assertEquals(Infinity, Math.pow(2, 0xc0000000)); -assertEquals(0, Math.pow(2, -0x80000000)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5216.js b/implementation-contributed/v8/mjsunit/regress/regress-5216.js deleted file mode 100644 index 9097310fc2c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5216.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Ensure that custom error constructors don't show up in stack traces. - -class MyError extends Error { } -assertFalse(new MyError().stack.includes("at MyError")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-524.js b/implementation-contributed/v8/mjsunit/regress/regress-524.js deleted file mode 100644 index b37ad8ad7f1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-524.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test allocation of a large number of maps. - -var i = 500000 -var a = new Array(i) -for (var j = 0; j < i; j++) { var o = {}; o.x = 42; delete o.x; a[j] = o; } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5245.js b/implementation-contributed/v8/mjsunit/regress/regress-5245.js deleted file mode 100644 index 9c4f6e7dbd7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5245.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -// After captureStackTrace. - -var a = {}; -Error.captureStackTrace(a, Error); -a.stack = 1; // Should not throw, stack should be writable. - -// After the standard Error constructor. - -var b = new Error(); -b.stack = 1; // Should not throw, stack should be writable. -b.stack = 1; // Still writable. - -// After read access to stack. - -var c = new Error(); -var old_stack = c.stack; -c.stack = 1; // Should not throw, stack should be writable. -c.stack = 1; // Still writable. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5252.js b/implementation-contributed/v8/mjsunit/regress/regress-5252.js deleted file mode 100644 index 41f3feeec2b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5252.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --ignition-osr - -(function TestNonLoopyLoop() { - function f() { - do { - %OptimizeOsr(); - return 23; - } while(false) - } - assertEquals(23, f()); - assertEquals(23, f()); -})(); - -(function TestNonLoopyGenerator() { - function* g() { - do { - %OptimizeOsr(); - yield 23; - yield 42; - } while(false) - return 999; - } - var gen = g(); - assertEquals({ value:23, done:false }, gen.next()); - assertEquals({ value:42, done:false }, gen.next()); - assertEquals({ value:999, done:true }, gen.next()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-526.js b/implementation-contributed/v8/mjsunit/regress/regress-526.js deleted file mode 100644 index 0cae97aa265..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-526.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test object literals with computed property and getter. - -var o = { foo: function() { }, get bar() { return {x:42} } }; - -assertEquals(42, o.bar.x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5262.js b/implementation-contributed/v8/mjsunit/regress/regress-5262.js deleted file mode 100644 index 06932a2f0f6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5262.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --ignition-osr --allow-natives-syntax - -function g() { return 23 } -function h() { return 42 } -function boom(o) { o.g = h } -function f(osr_and_recurse) { - if (osr_and_recurse) { - for (var i = 0; i < 3; ++i) { - if (i == 1) %OptimizeOsr(); - } - %OptimizeFunctionOnNextCall(f); - f(false); // Trigger tier-up due to recursive call. - boom(this); // Causes a deopt due to below dependency. - var x = g(); // Install dependency on the {g} function. - return x; - } - return 65; -} -assertEquals(65, f(false)); -assertEquals(65, f(false)); -assertEquals(42, f(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5275-1.js b/implementation-contributed/v8/mjsunit/regress/regress-5275-1.js deleted file mode 100644 index 542bae0602d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5275-1.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - var a = new Array(1); - a[0] = x; - return a; -} - -assertEquals([1], foo(1)); -assertEquals([1], foo(1)); -%OptimizeFunctionOnNextCall(foo); -assertEquals([1], foo(1)); -Array.prototype.__defineSetter__("0", function() {}); -assertEquals([undefined], foo(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5275-2.js b/implementation-contributed/v8/mjsunit/regress/regress-5275-2.js deleted file mode 100644 index 2da422de973..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5275-2.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - var a = new Array(1); - a[0] = x; - return a; -} - -assertEquals([1], foo(1)); -assertEquals([1], foo(1)); -%OptimizeFunctionOnNextCall(foo); -assertEquals([1], foo(1)); -Object.prototype.__defineSetter__("0", function() {}); -assertEquals([undefined], foo(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-52801.js b/implementation-contributed/v8/mjsunit/regress/regress-52801.js deleted file mode 100644 index 9a34b812fcf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-52801.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Whenever we enter a with-scope, we copy the context. This in itself is fine -// (contexts may escape), but when leaving a with-scope, we currently also copy -// the context instead of reverting to the original. This does not work because -// inner functions may already have been created using the original context. In -// the failing test case below, the inner function is run in the original context -// (where x is undefined), but the assignment to x after the with-statement is -// run in the copied context: - -// RegExp caching doesn't set lastIndex correctly. -// See http://code.google.com/p/chromium/issues/detail?id=52801 - -var re = /a/g; - -var str = "bbbbabbbbabbbb"; - -// Test - -re.test(str); -assertEquals(5, re.lastIndex); - -re.lastIndex = 0; -re.test(str); -assertEquals(5, re.lastIndex); // Fails if caching. - -re.lastIndex = 0; -re.test(str); -assertEquals(5, re.lastIndex); // Fails if caching. - -// Exec - -re = /a/g; - -re.exec(str); -assertEquals(5, re.lastIndex); - -re.lastIndex = 0; -re.exec(str); -assertEquals(5, re.lastIndex); // Fails if caching. - -re.lastIndex = 0; -re.exec(str); -assertEquals(5, re.lastIndex); // Fails if caching. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5286.js b/implementation-contributed/v8/mjsunit/regress/regress-5286.js deleted file mode 100644 index 210d986a66f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5286.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo(x, y) { return x % y; } - - assertEquals(0, foo(2, 2)); - assertEquals(0, foo(4, 4)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-0, foo(-8, 8)); -})(); - -(function() { - function foo(x, y) { return x % y; } - - assertEquals(0, foo(1, 1)); - assertEquals(0, foo(2, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-0, foo(-3, 3)); -})(); - -(function() { - function foo(x, y) { return x % y; } - - assertEquals(0, foo(1, 1)); - assertEquals(0, foo(2, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-0, foo(-2147483648, -1)); -})(); - -(function() { - function foo(x, y) { return x % y; } - - assertEquals(0, foo(1, 1)); - assertEquals(0, foo(2, 2)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-0, foo(-2147483648, -2147483648)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5295-2.js b/implementation-contributed/v8/mjsunit/regress/regress-5295-2.js deleted file mode 100644 index 9f97562d6fe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5295-2.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --test-small-max-function-context-stub-size - -// Generate an eval scope with a very large closure. -// Ensure that vars are leaked out properly in this case. -source = "var x;"; -for (var i = 0; i < 11; i++) { - source += " let a_" + i + " = 0;\n"; -} -source += " (function () {\n" -for (var i = 0; i < 11; i++) { - source += "a_" + i + "++;\n"; -} -source += "})();\n" - -eval(source); -assertEquals(undefined, x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5295.js b/implementation-contributed/v8/mjsunit/regress/regress-5295.js deleted file mode 100644 index 631b5cf778c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5295.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -eval('var x; let y; ()=>y'); -assertEquals(undefined, x); - -function foo() { - eval('var z = 1; let w; ()=>w'); - return z; -} -assertEquals(1, foo()); - -// Multiply nested eval hoisting works - -eval('let a; ()=>a; eval("let b; ()=>b; var c; function d() {}")'); -assertEquals(undefined, c); -assertEquals("d", d.name); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5332.js b/implementation-contributed/v8/mjsunit/regress/regress-5332.js deleted file mode 100644 index f0a0ef9ac84..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5332.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo() { - var a = new Array(2); - a[1] = 1.5; - return a; - } - - assertEquals(undefined, foo()[0]); - assertEquals(undefined, foo()[0]); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo()[0]); -})(); - -(function() { - function foo() { - var a = Array(2); - a[1] = 1.5; - return a; - } - - assertEquals(undefined, foo()[0]); - assertEquals(undefined, foo()[0]); - %OptimizeFunctionOnNextCall(foo); - assertEquals(undefined, foo()[0]); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5342.js b/implementation-contributed/v8/mjsunit/regress/regress-5342.js deleted file mode 100644 index 8cdd808622a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5342.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = {} -Error.captureStackTrace(o); -assertEquals(-1, o.stack.indexOf("captureStackTrace")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5351.js b/implementation-contributed/v8/mjsunit/regress/regress-5351.js deleted file mode 100644 index c9e6d3153a6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5351.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var re = /[bc]/; -var str = "baba"; - -assertEquals(["", "a", "a"], str.split(re)); - -// Force slow path. -re.exec = (string) => RegExp.prototype.exec.call(re, string); -assertEquals(["", "a", "a"], str.split(re)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5357.js b/implementation-contributed/v8/mjsunit/regress/regress-5357.js deleted file mode 100644 index 11ada60708f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5357.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a) { - a++; - a = Math.max(0, a); - a++; - return a; -} - -foo(0); -foo(0); -%OptimizeFunctionOnNextCall(foo); -assertEquals(2147483648, foo(2147483646)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-539875.js b/implementation-contributed/v8/mjsunit/regress/regress-539875.js deleted file mode 100644 index b100c3bcf0b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-539875.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testSeal() { - var sloppy = arguments; - var sym = Symbol(); - sloppy[sym] = 123; - Object.seal(sloppy); - assertTrue(Object.isSealed(sloppy)); - var desc = Object.getOwnPropertyDescriptor(sloppy, sym); - assertEquals(123, desc.value); - assertFalse(desc.configurable); - assertTrue(desc.writable); -})(); - - -(function testFreeze() { - var sloppy = arguments; - var sym = Symbol(); - sloppy[sym] = 123; - Object.freeze(sloppy); - assertTrue(Object.isFrozen(sloppy)); - var desc = Object.getOwnPropertyDescriptor(sloppy, sym); - assertEquals(123, desc.value); - assertFalse(desc.configurable); - assertFalse(desc.writable); -})(); - - -(function testIsFrozenAndIsSealed() { - var sym = Symbol(); - var obj = { [sym]: 123 }; - Object.preventExtensions(obj); - assertFalse(Object.isFrozen(obj)); - assertFalse(Object.isSealed(obj)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-540.js b/implementation-contributed/v8/mjsunit/regress/regress-540.js deleted file mode 100644 index c40fa2cb178..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-540.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test context slot declarations in the arguments object. -// See http://code.google.com/p/v8/issues/detail?id=540 - -function f(x, y) { eval(x); return y(); } -var result = f("function y() { return 1; }", function () { return 0; }) -assertEquals(1, result); - -result = - (function (x) { - function x() { return 3; } - return x(); - })(function () { return 2; }); -assertEquals(3, result); - -result = - (function (x) { - function x() { return 5; } - return arguments[0](); - })(function () { return 4; }); -assertEquals(5, result); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5404.js b/implementation-contributed/v8/mjsunit/regress/regress-5404.js deleted file mode 100644 index eddd1837a81..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5404.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo(a, b) { - return a + "0123456789012"; -} - -foo("a"); -foo("a"); -%OptimizeFunctionOnNextCall(foo); -foo("a"); - -var a = "a".repeat(%StringMaxLength()); -assertThrows(function() { foo(a); }, RangeError); - -%OptimizeFunctionOnNextCall(foo); -assertThrows(function() { foo(a); }, RangeError); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5405.js b/implementation-contributed/v8/mjsunit/regress/regress-5405.js deleted file mode 100644 index e21818c880e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5405.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let log = []; - -(async function() { - with ({get ['.promise']() { log.push('async') }}) { - return 10; - } -})(); -%PerformMicrotaskCheckpoint(); - -(function() { - with ({get ['.new.target']() { log.push('new.target') }}) { - return new.target; - } -})(); - -(function() { - with ({get ['this']() { log.push('this') }}) { - return this; - } -})(); - -assertArrayEquals([], log); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-542823.js b/implementation-contributed/v8/mjsunit/regress/regress-542823.js deleted file mode 100644 index d9c23396d4a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-542823.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -__v_0 = 100000; -__v_1 = new Array(); -for (var __v_2 = 0; __v_2 < __v_0; __v_2++) { - __v_1[__v_2] = 0.5; -} -for (var __v_2 = 0; __v_2 < 10; __v_2++) { - var __v_0 = __v_1 + 0.5; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5434.js b/implementation-contributed/v8/mjsunit/regress/regress-5434.js deleted file mode 100644 index 8c45a960795..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5434.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Ensure that we have the correct number of accesses to exec in split, and -// that exec is called at the correct point in time. - -var lastIndexHasBeenSet = false; -var countOfExecGets = 0; - -// Force the slow path and make sure the created splitter object has our -// overwritten exec method (@@split does not call exec on the original regexp -// but on a newly-created splitter which is guaranteed to be sticky). -class ObservableExecRegExp extends RegExp { - constructor(pattern, flags) { - super(pattern, flags); - this.lastIndex = 42; - - const re = this; - Object.defineProperty(this, "exec", { - get: function() { - // Ensure exec is first accessed after lastIndex has been reset to - // satisfy the spec. - assertTrue(re.lastIndex != 42); - countOfExecGets++; - return RegExp.prototype.exec; - } - }); - } -} - - - -var re = new ObservableExecRegExp(/x/); - -assertEquals(42, re.lastIndex); -assertEquals(0, countOfExecGets); - -var result = "axbxc".split(re); - -assertEquals(5, countOfExecGets); -assertEquals(["a", "b", "c"], result); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-543994.js b/implementation-contributed/v8/mjsunit/regress/regress-543994.js deleted file mode 100644 index 950a3290ea2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-543994.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --always-opt --gc-interval=163 --stress-compaction - -try { a = f(); -} catch(e) { -} -var i = 0; -function f() { - try { - f(); - } catch(e) { - i++; - []; - } -} -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5440.js b/implementation-contributed/v8/mjsunit/regress/regress-5440.js deleted file mode 100644 index 2c985e5013f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5440.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt - -// The rightmost cons string is created first, resulting in an empty left part. -eval(" " + ("" + "try {;} catch (_) {}")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-544991.js b/implementation-contributed/v8/mjsunit/regress/regress-544991.js deleted file mode 100644 index a9fd809a3be..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-544991.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -var typedArray = new Int8Array(1); -var saved; -var called; -class TypedArraySubclass extends Int8Array { - constructor(x) { - super(x); - called = true; - saved = x; - } -} -typedArray.constructor = TypedArraySubclass -typedArray.map(function(){}); - -assertTrue(called); -assertEquals(saved, 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-545.js b/implementation-contributed/v8/mjsunit/regress/regress-545.js deleted file mode 100644 index 36cde6ddf38..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-545.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=545 -// and: http://code.google.com/p/chromium/issues/detail?id=28353 - -// The "this" variable proxy was reused. If context annotations differ between -// uses, this can cause a use in a value context to assume a test context. Since -// it has no true/false labels set, it causes a null-pointer dereference and -// segmentation fault. - -// Code should not crash: - -// Original bug report by Robert Swiecki (wrapped to not throw): -try { - new IsPrimitive(load())?this.join():String(' ').charCodeAt((!this>Math)); -} catch (e) {} - -// Shorter examples: - -this + !this; - -this + (this ? 1 : 2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5454.js b/implementation-contributed/v8/mjsunit/regress/regress-5454.js deleted file mode 100644 index ca6a9433b24..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5454.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function(...[b = !b]) { }, ReferenceError); -assertThrows(() => (function([b = !b]) { })([]), ReferenceError); -assertThrows(() => (function({b = !b}) { })({}), ReferenceError); - -assertThrows((...[b = !b]) => { }, ReferenceError); -assertThrows(() => (([b = !b]) => { })([]), ReferenceError); -assertThrows(() => (({b = !b}) => { })({}), ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5476.js b/implementation-contributed/v8/mjsunit/regress/regress-5476.js deleted file mode 100644 index 5d18cebf7a4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5476.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -'use strict' - -class LeakyPromise extends Promise { - constructor(executor) { - super((resolve, reject) => { resolve();}); - this.resolve = function() {assertEquals(this, undefined); }; - this.reject = function() {assertEquals(this, undefined); }; - executor(this.resolve, this.reject); - } -} - -const p1 = new LeakyPromise((r) => r()); -const p2 = new LeakyPromise((_, r) => r()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-552302.js b/implementation-contributed/v8/mjsunit/regress/regress-552302.js deleted file mode 100644 index 87c4718335e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-552302.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -assertThrows('var %OptimizeFunctionOnNextCall()', SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-554865.js b/implementation-contributed/v8/mjsunit/regress/regress-554865.js deleted file mode 100644 index d16ac918aed..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-554865.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - var x = {}; - ((y = [42]) => assertEquals(42, y[0]))(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-556543.js b/implementation-contributed/v8/mjsunit/regress/regress-556543.js deleted file mode 100644 index 9e9bedd6f55..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-556543.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - for (var __v_2 = 0; __v_2 < __v_5; ++__v_2) { - for (var __v_5 = 0; __v_3 < 1; ++__v_8) { - if (true || 0 > -6) continue; - for (var __v_3 = 0; __v_3 < 1; ++__v_3) { - } - } - } -} -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5566.js b/implementation-contributed/v8/mjsunit/regress/regress-5566.js deleted file mode 100644 index 98e1f07208f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5566.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://github.com/tc39/proposal-regexp-legacy-features#additional-properties-of-the-regexp-constructor - -const props = [ "input", "$_" - , "lastMatch", "$&" - , "lastParen", "$+" - , "leftContext", "$`" - , "rightContext", "$'" - , "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "$9" - ]; - -for (let i = 0; i < props.length; i++) { - const prop = props[i]; - const desc = Object.getOwnPropertyDescriptor(RegExp, prop); - assertTrue(desc.configurable, prop); - assertFalse(desc.enumerable, prop); - assertTrue(desc.get !== undefined, prop); - - // TODO(jgruber): Although the spec proposal specifies setting setters to - // undefined, we are not sure that this change would be web-compatible, and - // we are intentionally sticking with the old behavior for now. - assertTrue(desc.set !== undefined, prop); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5636-1.js b/implementation-contributed/v8/mjsunit/regress/regress-5636-1.js deleted file mode 100644 index c1cafe639ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5636-1.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --function-context-specialization - -function f(n) { - var a = []; - function g() { return x } - for (var i = 0; i < n; ++i) { - var x = i; - a[i] = g; - %OptimizeFunctionOnNextCall(g); - g(); - } - return a; -} -var a = f(3); -assertEquals(3, a.length); -assertEquals(2, a[0]()); -assertEquals(2, a[1]()); -assertEquals(2, a[2]()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5636-2.js b/implementation-contributed/v8/mjsunit/regress/regress-5636-2.js deleted file mode 100644 index e76733654d0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5636-2.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(n) { - "use asm"; - var a = []; - function g() { return x } - for (var i = 0; i < n; ++i) { - var x = i; - a[i] = g; - %OptimizeFunctionOnNextCall(g); - g(); - } - return a; -} -var a = f(3); -assertEquals(3, a.length); -assertEquals(2, a[0]()); -assertEquals(2, a[1]()); -assertEquals(2, a[2]()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5638.js b/implementation-contributed/v8/mjsunit/regress/regress-5638.js deleted file mode 100644 index 034e4c40beb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5638.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class MyErrorA {} - -class MyErrorB {} - -class A {} - -class B extends A { - constructor() { - try { - super(); - } catch (e) { - throw new MyErrorB(); - } - } -} - -var thrower = new Proxy(A, { - get(target, property, receiver) { - if (property === 'prototype') throw new MyErrorA(); - } -}); - -assertThrows(() => Reflect.construct(B, [], thrower), MyErrorB); -assertThrows(() => Reflect.construct(B, [], thrower), MyErrorB); -%OptimizeFunctionOnNextCall(B); -assertThrows(() => Reflect.construct(B, [], thrower), MyErrorB); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5638b.js b/implementation-contributed/v8/mjsunit/regress/regress-5638b.js deleted file mode 100644 index b72a80eac5e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5638b.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class A { - constructor(arg) { - assertEquals(123, arg); - assertSame(observer, new.target); - superclass_counter++; - } -} - -class B extends A { - constructor() { - super(123); - construction_counter++; - } -} - -var superclass_counter = 0; - -var construction_counter = 0; - -var observation_counter = 0; - -var observer = new Proxy(A, { - get(target, property, receiver) { - if (property === 'prototype') { - %DeoptimizeFunction(B); - observation_counter++; - } - return Reflect.get(target, property, receiver); - } -}); - -Reflect.construct(B, [], observer); -Reflect.construct(B, [], observer); -%OptimizeFunctionOnNextCall(B); -Reflect.construct(B, [], observer); -assertEquals(3, observation_counter); -assertEquals(3, construction_counter); -assertEquals(3, superclass_counter); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5648.js b/implementation-contributed/v8/mjsunit/regress/regress-5648.js deleted file mode 100644 index 3e9ea074566..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5648.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -var iter = {} -iter[Symbol.iterator] = () => ({ - next: () => ({}), - return: () => {throw 666} -}); - - -function* foo() { - for (let x of iter) {throw 42} -} -assertThrowsEquals(() => foo().next(), 42); - - -function* bar() { - let x; - { let gaga = () => {x}; - [[x]] = iter; - } -} -assertThrows(() => bar().next(), TypeError); - - -function baz() { - let x; - { let gaga = () => {x}; - let gugu = () => {gaga}; - [[x]] = iter; - } -} -assertThrows(baz, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5664.js b/implementation-contributed/v8/mjsunit/regress/regress-5664.js deleted file mode 100644 index 206822a037d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5664.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --nolazy - -var f = (x, y=()=>eval("x")) => y(); -assertEquals(100, f(100)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5669.js b/implementation-contributed/v8/mjsunit/regress/regress-5669.js deleted file mode 100644 index 05f917fa235..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5669.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a, i, v) { a[i] = v; } -f("make it generic", 0, 0); - -var a = new Array(); -Object.defineProperty(a, "length", {value: 3, writable: false}); -print(JSON.stringify(Object.getOwnPropertyDescriptor(a, "length"))); -assertEquals(3, a.length); -f(a, 3, 3); -assertFalse(Object.getOwnPropertyDescriptor(a, "length").writable); -assertEquals(3, a.length); - -var b = new Array(); -b.length = 3; -Object.freeze(b); -assertEquals(3, b.length); -f(b, 3, 3); -assertEquals(3, b.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5691.js b/implementation-contributed/v8/mjsunit/regress/regress-5691.js deleted file mode 100644 index b460ac4b991..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5691.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -var log = ""; -var result; -Promise.resolve() - .then(() => log += "|turn1") - .then(() => log += "|turn2") - .then(() => log += "|turn3") - .then(() => log += "|turn4") - .then(() => result = "|start|turn1|fast-resolve|turn2|turn3|slow-resolve|turn4\n"+log) - .catch(e => print("ERROR", e)); - -Promise.resolve(Promise.resolve()).then(() => log += "|fast-resolve"); -(class extends Promise {}).resolve(Promise.resolve()).then(() => log += "|slow-resolve"); - -log += "|start"; -%PerformMicrotaskCheckpoint(); -assertEquals("|start|turn1|fast-resolve|turn2|turn3|slow-resolve|turn4\n\ -|start|turn1|fast-resolve|turn2|turn3|slow-resolve|turn4", result); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5692.js b/implementation-contributed/v8/mjsunit/regress/regress-5692.js deleted file mode 100644 index af9f131c44a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5692.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// "let" in non-strict mode can be a label, even if composed of unicode escape -// sequences. - -var wasTouched = false; -l\u0065t: -do { - break l\u0065t; - wasTouched = true; -} while (false); -// Verify that in addition to no exception thrown, breaking to the label also -// works. -assertFalse(wasTouched); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-57.js b/implementation-contributed/v8/mjsunit/regress/regress-57.js deleted file mode 100644 index 1d410b92e91..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-57.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -try { - delete (void 0).x; -} catch (e) { - print(e.toString()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-572589.js b/implementation-contributed/v8/mjsunit/regress/regress-572589.js deleted file mode 100644 index 1fd755ad1e8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-572589.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax --no-lazy - -"use strict"; -eval(); -var f = ({x}) => { }; -%OptimizeFunctionOnNextCall(f); -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5736.js b/implementation-contributed/v8/mjsunit/regress/regress-5736.js deleted file mode 100644 index 6583da38da8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5736.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var my_global = 0; - -// The problem was that we allowed lazy functions inside evals, but did not -// force context allocation on the eval scope. Thus, foo was not context -// allocated since we didn't realize that a lazy function referred to it. -eval(`let foo = 1; - let maybe_lazy = function() { foo = 2; } - maybe_lazy(); - my_global = foo;`); -assertEquals(2, my_global); - -(function TestVarInStrictEval() { - "use strict"; - eval(`var foo = 3; - let maybe_lazy = function() { foo = 4; } - maybe_lazy(); - my_global = foo;`); - assertEquals(4, my_global); -})(); - -eval("let foo = 1; function lazy() { foo = 2; } lazy(); my_global = foo;"); -assertEquals(my_global, 2); - -// Lexical variable inside a subscope in eval. -eval(`{ let foo = 5; - function not_lazy() { foo = 6; } - not_lazy(); - my_global = foo; - }`); -assertEquals(my_global, 6); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5749.js b/implementation-contributed/v8/mjsunit/regress/regress-5749.js deleted file mode 100644 index 42e88321efb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5749.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - (x ** 1) === ''; -} -f(); -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); - -function g(x) { - '' === (x ** 1); -} -g(); -g(); -g(); -%OptimizeFunctionOnNextCall(g); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-575364.js b/implementation-contributed/v8/mjsunit/regress/regress-575364.js deleted file mode 100644 index 0b967a0b53a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-575364.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --validate-asm --allow-natives-syntax - -function f() { - "use asm"; - -} -assertFalse(%IsAsmWasmCode(f)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5763-1.js b/implementation-contributed/v8/mjsunit/regress/regress-5763-1.js deleted file mode 100644 index 50ad4035aec..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5763-1.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -try { - var TA = Object.getPrototypeOf(Int8Array); - var obj = Reflect.construct(TA, [], Int8Array); - Int8Array.prototype.values.call(obj).next(); -} catch (e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5763-2.js b/implementation-contributed/v8/mjsunit/regress/regress-5763-2.js deleted file mode 100644 index 0964b7f8e67..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5763-2.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -try { - var TA = Object.getPrototypeOf(Int8Array); - var obj = Reflect.construct(TA, [], Int8Array); - new Int8Array(4).set(obj); -} catch (e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5767.js b/implementation-contributed/v8/mjsunit/regress/regress-5767.js deleted file mode 100644 index 75c83c027df..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5767.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals("0", Number.MIN_VALUE.toString(35)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5772.js b/implementation-contributed/v8/mjsunit/regress/regress-5772.js deleted file mode 100644 index e1f68f80ef4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5772.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function sloppyPackedArguments() { - function f(a) { - for (var i = 0; i < 2; i++) { - a[i] = 0; - } - } - var boom; - function g() { - var a = arguments; - f(a); - boom = a[5]; - assertEquals(undefined, boom); - } - - f([]); - g(1); -})(); - -(function strictPackedArguments() { - "use strict"; - function f(a) { - for (var i = 0; i < 2; i++) { - a[i] = 0; - } - } - var boom; - function g() { - var a = arguments; - f(a); - boom = a[5]; - assertEquals(undefined, boom); - } - - f([]); - g(1); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5780.js b/implementation-contributed/v8/mjsunit/regress/regress-5780.js deleted file mode 100644 index 5a6f1711c15..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5780.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function testMutatedPrimitiveToStringTag(primitive) { - Object.defineProperty( - primitive.__proto__, Symbol.toStringTag, - {value: "bogus", configurable: true, writable: false, enumerable: false}); - assertEquals("[object bogus]", Object.prototype.toString.call(primitive)); -} - -testMutatedPrimitiveToStringTag(''); -testMutatedPrimitiveToStringTag(true); -testMutatedPrimitiveToStringTag(42); -testMutatedPrimitiveToStringTag(42.42); -testMutatedPrimitiveToStringTag(Symbol()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5783.js b/implementation-contributed/v8/mjsunit/regress/regress-5783.js deleted file mode 100644 index 828bb3dc56f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5783.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -class C {} -class D extends C { constructor(...args) { super(...args, 75) } } -D.__proto__ = null; -assertThrows(() => new D(), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-578775.js b/implementation-contributed/v8/mjsunit/regress/regress-578775.js deleted file mode 100644 index afeaf3d9148..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-578775.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://code.google.com/p/chromium/issues/detail?id=578775 - -var __v_9 = {}; -for (var __v_0 = 0; __v_0 < 1000; __v_0++) { -} -__v_2 = { __v_2: 1 }; -__v_12 = new Proxy({}, {}); -function f() { - var __v_10 = new Proxy({}, __v_2); - __v_9.__proto__ = __v_10; - __v_2.getPrototypeOf = function () { return __v_9 }; - Object.prototype.isPrototypeOf.call(__v_0, __v_10); -}; -assertThrows(f, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5790.js b/implementation-contributed/v8/mjsunit/regress/regress-5790.js deleted file mode 100644 index eb405237e14..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5790.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo(a) { - "use strict"; - if (a) return arguments[1]; -} - -foo(false); -foo(false); -%OptimizeFunctionOnNextCall(foo); -foo(true, 1); -foo(true, 1); -%OptimizeFunctionOnNextCall(foo); -foo(false); -foo(true, 1); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-580.js b/implementation-contributed/v8/mjsunit/regress/regress-580.js deleted file mode 100644 index 6b1d098c0d6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-580.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test constant folding of smi operations that overflow a 32-bit int -// See http://code.google.com/p/v8/issues/detail?id=580 - -function num_ops() { - var x; - var tmp = 0; - x = (tmp = 1578221999, tmp)+(tmp = 572285336, tmp); - assertEquals(2150507335, x, "++"); - x = 1578221999 + 572285336; - assertEquals(2150507335, x); - - x = (tmp = -1500000000, tmp)+(tmp = -2000000000, tmp); - assertEquals(-3500000000, x, "+-"); - x = -1500000000 + -2000000000; - assertEquals(-3500000000, x); - - x = (tmp = 1578221999, tmp)-(tmp = -572285336, tmp); - assertEquals(2150507335, x, "--"); - x = 1578221999 - -572285336; - assertEquals(2150507335, x); - - x = (tmp = -1500000000, tmp)-(tmp = 2000000000, tmp); - assertEquals(-3500000000, x, "-+"); - x = -1500000000 - 2000000000; - assertEquals(-3500000000, x); -} - -num_ops(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5802.js b/implementation-contributed/v8/mjsunit/regress/regress-5802.js deleted file mode 100644 index 57c8198c0c2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5802.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -(function() { - function eq(a, b) { return a == b; } - - var o = { [Symbol.toPrimitive]: () => "o" }; - - assertTrue(eq(o, o)); - assertTrue(eq(o, o)); - %OptimizeFunctionOnNextCall(eq); - assertTrue(eq(o, o)); - assertTrue(eq("o", o)); - assertTrue(eq(o, "o")); - %OptimizeFunctionOnNextCall(eq); - assertTrue(eq(o, o)); - assertTrue(eq("o", o)); - assertTrue(eq(o, "o")); - assertOptimized(eq); -})(); - -(function() { - function ne(a, b) { return a != b; } - - var o = { [Symbol.toPrimitive]: () => "o" }; - - assertFalse(ne(o, o)); - assertFalse(ne(o, o)); - %OptimizeFunctionOnNextCall(ne); - assertFalse(ne(o, o)); - assertFalse(ne("o", o)); - assertFalse(ne(o, "o")); - %OptimizeFunctionOnNextCall(ne); - assertFalse(ne(o, o)); - assertFalse(ne("o", o)); - assertFalse(ne(o, "o")); - assertOptimized(ne); -})(); - -(function() { - function eq(a, b) { return a == b; } - - var a = {}; - var b = {b}; - var u = %GetUndetectable(); - - assertTrue(eq(a, a)); - assertTrue(eq(b, b)); - assertFalse(eq(a, b)); - assertFalse(eq(b, a)); - assertTrue(eq(a, a)); - assertTrue(eq(b, b)); - assertFalse(eq(a, b)); - assertFalse(eq(b, a)); - %OptimizeFunctionOnNextCall(eq); - assertTrue(eq(a, a)); - assertTrue(eq(b, b)); - assertFalse(eq(a, b)); - assertFalse(eq(b, a)); - assertTrue(eq(null, u)); - assertTrue(eq(undefined, u)); - assertTrue(eq(u, null)); - assertTrue(eq(u, undefined)); - %OptimizeFunctionOnNextCall(eq); - assertTrue(eq(a, a)); - assertTrue(eq(b, b)); - assertFalse(eq(a, b)); - assertFalse(eq(b, a)); - assertTrue(eq(null, u)); - assertTrue(eq(undefined, u)); - assertTrue(eq(u, null)); - assertTrue(eq(u, undefined)); - assertOptimized(eq); -})(); - -(function() { - function ne(a, b) { return a != b; } - - var a = {}; - var b = {b}; - var u = %GetUndetectable(); - - assertFalse(ne(a, a)); - assertFalse(ne(b, b)); - assertTrue(ne(a, b)); - assertTrue(ne(b, a)); - assertFalse(ne(a, a)); - assertFalse(ne(b, b)); - assertTrue(ne(a, b)); - assertTrue(ne(b, a)); - %OptimizeFunctionOnNextCall(ne); - assertFalse(ne(a, a)); - assertFalse(ne(b, b)); - assertTrue(ne(a, b)); - assertTrue(ne(b, a)); - assertFalse(ne(null, u)); - assertFalse(ne(undefined, u)); - assertFalse(ne(u, null)); - assertFalse(ne(u, undefined)); - %OptimizeFunctionOnNextCall(ne); - assertFalse(ne(a, a)); - assertFalse(ne(b, b)); - assertTrue(ne(a, b)); - assertTrue(ne(b, a)); - assertFalse(ne(null, u)); - assertFalse(ne(undefined, u)); - assertFalse(ne(u, null)); - assertFalse(ne(u, undefined)); - assertOptimized(ne); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-581.js b/implementation-contributed/v8/mjsunit/regress/regress-581.js deleted file mode 100644 index 1b40f580e2c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-581.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var pow30 = Math.pow(2, 30); -var pow31 = Math.pow(2, 31); - -var a = []; -a[pow31] = 31; - -assertEquals(pow31 + 1, a.length); -assertThrows(function() { a.concat(a); }, RangeError); - -var b = []; -b[pow31 - 3] = 32; -var ab = a.concat(b); -assertEquals(2 * pow31 - 1, ab.length); -assertEquals(31, ab[pow31]); -assertEquals(32, ab[2 * pow31 - 2]); -assertEquals(undefined, ab[2 * pow31 - 1]); - -var c = []; -c[pow30] = 30; -assertThrows(function() { c.concat(c, a); }, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-583260.js b/implementation-contributed/v8/mjsunit/regress/regress-583260.js deleted file mode 100644 index b0c01f6e9db..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-583260.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -__v_1 = { - has() { return true } -}; -__v_2 = new Proxy({}, __v_1); -function __f_5(object) { - with (object) { return delete __v_3; } -} - __f_5(__v_2) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5836.js b/implementation-contributed/v8/mjsunit/regress/regress-5836.js deleted file mode 100644 index 2af02fcc398..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5836.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var previous = RegExp.lastMatch; -'hello world'.anchor('"hi"'); -assertEquals(previous, RegExp.lastMatch); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5845.js b/implementation-contributed/v8/mjsunit/regress/regress-5845.js deleted file mode 100644 index 45a580b24ff..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5845.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertDoesNotThrow('/(?:(?=(foo)))?/u.exec("foo")'); -assertThrows('/(?=(foo))?/u.exec("foo")'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-585041.js b/implementation-contributed/v8/mjsunit/regress/regress-585041.js deleted file mode 100644 index c072ed2a15b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-585041.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(arr, i) { - arr[i] = 50; -} - -function boom(dummy) { - var arr = new Array(10); - f(arr, 10); - if (dummy) { - f(arr, -2147483648); - } -} - -boom(false); -%OptimizeFunctionOnNextCall(boom); -boom(false); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-585775.js b/implementation-contributed/v8/mjsunit/regress/regress-585775.js deleted file mode 100644 index 1805b9e7392..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-585775.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var pattern = /foo/; -assertEquals(pattern, pattern.compile(pattern)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-587004.js b/implementation-contributed/v8/mjsunit/regress/regress-587004.js deleted file mode 100644 index 9dc6052c43f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-587004.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --min-semi-space-size=32 - -// We need to set --min-semi-space-size to enable allocation site pretenuring. - -function foo(i) { - with({}) {}; - x = {}; - x.a = 0.23; - x.b = 0.3; - return x; -} - -var all = []; -function step() { - for (var i = 0; i < 100; i++) { - var z = foo(i); - // Write unboxed double in object slack. - z.c = 0.1 + z.b - all.push(z); - } - gc(1); - gc(1); -} - -step(); -// Now foo will allocate objects in old space. -step(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-58740.js b/implementation-contributed/v8/mjsunit/regress/regress-58740.js deleted file mode 100644 index ab3e93b53e3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-58740.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/chromium/issues/detail?id=58740 - -var re = /.+/g; -re.exec(""); -re.exec("anystring"); -re=/.+/g; -re.exec(""); -assertEquals(0, re.lastIndex); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-588599.js b/implementation-contributed/v8/mjsunit/regress/regress-588599.js deleted file mode 100644 index eece4926e38..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-588599.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertFalse(Infinity == -Infinity); -assertEquals(Infinity, 1 / 1e-9999); -assertEquals(-Infinity, 1 / -1e-9999); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5888.js b/implementation-contributed/v8/mjsunit/regress/regress-5888.js deleted file mode 100644 index 6481c79338f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5888.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(32, 32, false); - builder.addFunction("test", kSig_i_iii) - .addBodyWithEnd([ -// body: -kExprI64Const, 0xb4, 0x42, -kExprI64Const, 0x7a, -kExprI64Const, 0x42, -kExprI64Const, 0x7a, -kExprI64Ior, -kExprI64Ctz, -kExprI64Ctz, -kExprI64Shl, -kExprI64Mul, -kExprI64Const, 0x41, -kExprI64Ctz, -kExprI64Ctz, -kExprI64Shl, -kExprF32SConvertI64, -kExprI64Const, 0x42, -kExprI64Const, 0x02, -kExprI64Const, 0x7a, -kExprI64Mul, -kExprI64Const, 0x42, -kExprI64Ctz, -kExprI64Shl, -kExprI64Const, 0x7a, -kExprI64Ctz, -kExprI64Shl, -kExprI64Mul, -kExprI64Const, 0x41, -kExprI64Ctz, -kExprI64Ctz, -kExprI64Shl, -kExprF32SConvertI64, -kExprUnreachable, -kExprEnd, // @65 - ]) - .exportFunc(); - var module = new WebAssembly.Module(builder.toBuffer()); -})(); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(16, 32, false); - builder.addFunction("test", kSig_i_iii) - .addBodyWithEnd([ - // body: - kExprI64Const, 0x42, - kExprI64Const, 0x7a, - kExprI64Ctz, - kExprI64Mul, - kExprI64Ctz, - kExprI64Const, 0x41, - kExprI64Ctz, - kExprI64Ctz, - kExprI64Shl, - kExprI64Const, 0x41, - kExprI64Ctz, - kExprI64Ctz, - kExprI64Shl, - kExprF32SConvertI64, - kExprUnreachable, - kExprEnd, // @20 - ]) - .exportFunc(); - var module = new WebAssembly.Module(builder.toBuffer()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-590074.js b/implementation-contributed/v8/mjsunit/regress/regress-590074.js deleted file mode 100644 index 80ae41b2762..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-590074.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -var __v_5 = {}; - -function __f_10() { - var __v_2 = [0, 0, 0]; - __v_2[0] = 0; - gc(); - return __v_2; -} - -function __f_2(array) { - array[1] = undefined; -} - -function __f_9() { - var __v_4 = __f_10(); - __f_2(__f_10()); - __v_5 = __f_10(); - __v_4 = __f_10(); - __f_2(__v_5); -} -__f_9(); -%OptimizeFunctionOnNextCall(__f_9); -__f_9(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5902.js b/implementation-contributed/v8/mjsunit/regress/regress-5902.js deleted file mode 100644 index 60541045706..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5902.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var log = []; - -function check(predicate, item) { - if (!predicate) log.push(item); -} - -var global = this; - -Object.getOwnPropertyNames(global).forEach(function(name) { - // Only check for global properties with uppercase names. - if (name[0] != name[0].toUpperCase()) return; - - var obj = global[name]; - - // Skip non-receivers. - if (!%IsJSReceiver(obj)) return; - - // Skip non-natives. - if (!obj.toString().includes('native')) return; - - // Construct an instance. - try { - new obj(); - } catch (e) { - } - - // Check the object. - check(%HasFastProperties(obj), `${name}`); - - // Check the constructor. - var constructor = obj.constructor; - if (!%IsJSReceiver(constructor)) return; - check(%HasFastProperties(constructor), `${name}.constructor`); - - // Check the prototype. - var prototype = obj.prototype; - if (!%IsJSReceiver(prototype)) return; - check(%HasFastProperties(prototype), `${name}.prototype`); - - // Check the prototype.constructor. - var prototype_constructor = prototype.constructor; - if (!%IsJSReceiver(prototype_constructor)) return; - check( - %HasFastProperties(prototype_constructor), - `${name}.prototype.constructor`); -}); - -// There should be no dictionary mode builtin objects. -assertEquals([], log); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5911.js b/implementation-contributed/v8/mjsunit/regress/regress-5911.js deleted file mode 100644 index 9d6d4ae5b83..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5911.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(32, 32, false); - builder.addFunction("test", kSig_i_iii) - .addBodyWithEnd([ - // body: - kExprI64Const, 0x42, - kExprI64Const, 0x7a, - kExprI64RemU, - kExprI64Const, 0x42, - kExprI64Const, 0x37, - kExprI64Mul, - kExprI64Const, 0x36, - kExprI64Mul, - kExprI64Const, 0x42, - kExprI64Ctz, - kExprI64Ctz, - kExprI64Shl, - kExprF32SConvertI64, - kExprUnreachable, - kExprEnd, // @21 - ]) - .exportFunc(); - var module = new WebAssembly.Module(builder.toBuffer()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-592341.js b/implementation-contributed/v8/mjsunit/regress/regress-592341.js deleted file mode 100644 index 2fa475294f9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-592341.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function id(a) { - return a; -} - -(function LiteralCompareNullDeopt() { - function f() { - return id(null == %DeoptimizeNow()); - } - - %OptimizeFunctionOnNextCall(f); - assertTrue(f()); -})(); - -(function LiteralCompareUndefinedDeopt() { - function f() { - return id(undefined == %DeoptimizeNow()); - } - - %OptimizeFunctionOnNextCall(f); - assertTrue(f()); -})(); - -(function LiteralCompareTypeofDeopt() { - function f() { - return id("undefined" == typeof(%DeoptimizeNow())); - } - - %OptimizeFunctionOnNextCall(f); - assertTrue(f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-592352.js b/implementation-contributed/v8/mjsunit/regress/regress-592352.js deleted file mode 100644 index 7947fdba2c2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-592352.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --validate-asm - -function __f_76() { - "use asm"; - function __f_72() { - %OptimizeFunctionOnNextCall(); - } - return {__f_72:__f_72}; -} - -try { - assertTrue(%IsAsmWasmCode(__f_76)); - assertTrue(false); -} catch (e) { - print("Caught: " + e); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-592353.js b/implementation-contributed/v8/mjsunit/regress/regress-592353.js deleted file mode 100644 index f4e3b6859a4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-592353.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax --no-lazy - -with ({}) {} -f = ({x}) => { }; -%OptimizeFunctionOnNextCall(f); -f({}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5927.js b/implementation-contributed/v8/mjsunit/regress/regress-5927.js deleted file mode 100644 index bcec611f8b3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5927.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let a = Object.freeze({}); -assertThrows(() => class C {[a.b = "foo"]() {}}, TypeError); -assertThrows(() => class C extends (a.c = null) {}, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-593299.js b/implementation-contributed/v8/mjsunit/regress/regress-593299.js deleted file mode 100644 index ce6af1a1af3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-593299.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -function h(global) { return global.boom(); } -function g() { var r = h({}); return r; } -function f() { - var o = {}; - o.__defineGetter__('prop1', g); - o.prop1; -} - -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5938.js b/implementation-contributed/v8/mjsunit/regress/regress-5938.js deleted file mode 100644 index 567498ed476..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5938.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --lazy-inner-functions - -let global = 0; -{ - let confusing = 13; - function lazy_func(b = confusing) { let confusing = 0; global = b; } - lazy_func(); -} - -assertEquals(13, global); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5943.js b/implementation-contributed/v8/mjsunit/regress/regress-5943.js deleted file mode 100644 index df21c20e952..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5943.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function createHTML() { - return '' + '

new NoDefinePropertyArray().concat([1]), MyException); - -// Ensure elements are added to the instance, rather than calling [[Set]]. -class ZeroGetterArray extends Array { get 0() {} }; -assertArrayEquals([1], new ZeroGetterArray().concat(1)); - -// Frozen arrays lead to throwing - -class FrozenArray extends Array { - constructor(...args) { super(...args); Object.freeze(this); } -} -assertThrows(() => new FrozenArray().concat([1]), TypeError); - -// Non-configurable non-writable zero leads to throwing -class ZeroFrozenArray extends Array { - constructor(...args) { - super(...args); - Object.defineProperty(this, 0, {value: 1}); - } -} -assertThrows(() => new ZeroFrozenArray().concat([1]), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-596718.js b/implementation-contributed/v8/mjsunit/regress/regress-596718.js deleted file mode 100644 index 6116427e732..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-596718.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Error.prepareStackTrace = function(e, frames) { return frames; } -assertThrows(() => new Error().stack[0].getMethodName.call({}), TypeError); - -Error.prepareStackTrace = function(e, frames) { return frames.map(frame => new Proxy(frame, {})); } -assertThrows(() => new Error().stack[0].getMethodName(), TypeError); - -Error.prepareStackTrace = function(e, frames) { return frames; } -assertEquals(null, new Error().stack[0].getMethodName()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5972.js b/implementation-contributed/v8/mjsunit/regress/regress-5972.js deleted file mode 100644 index 68fe3ac7209..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5972.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var undetectable = %GetUndetectable(); - -function foo(a) { - const o = a ? foo : undetectable; - return typeof o === 'function'; -} - -assertFalse(foo(false)); -assertFalse(foo(false)); -%OptimizeFunctionOnNextCall(foo); -assertFalse(foo(false)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-5974.js b/implementation-contributed/v8/mjsunit/regress/regress-5974.js deleted file mode 100644 index b9d263844d5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-5974.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - var a = Array(...Array(5)).map(() => 1); - - assertEquals([1, 1, 1, 1, 1], a); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-599068-func-bindings.js b/implementation-contributed/v8/mjsunit/regress/regress-599068-func-bindings.js deleted file mode 100644 index 887c00099a7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-599068-func-bindings.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Tests function bindings are correctly handled in ignition. -(function f() { - function assignSloppy() { - f = 0; - } - assertDoesNotThrow(assignSloppy); - - function assignStrict() { - 'use strict'; - f = 0; - } - assertThrows(assignStrict, TypeError); - - function assignStrictLookup() { - eval("'use strict'; f = 1;"); - } - assertThrows(assignStrictLookup, TypeError); -})(); - -// Tests for compound assignments which are handled differently -// in crankshaft. -(function f() { - function assignSloppy() { - f += "x"; - } - assertDoesNotThrow(assignSloppy); - assertDoesNotThrow(assignSloppy); - %OptimizeFunctionOnNextCall(assignSloppy); - assertDoesNotThrow(assignSloppy); - - function assignStrict() { - 'use strict'; - f += "x"; - } - assertThrows(assignStrict, TypeError); - assertThrows(assignStrict, TypeError); - %OptimizeFunctionOnNextCall(assignStrict); - assertThrows(assignStrict, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-599089-array-push.js b/implementation-contributed/v8/mjsunit/regress/regress-599089-array-push.js deleted file mode 100644 index 9049a4b8b66..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-599089-array-push.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -var array = [1.2, 1.2]; -array.length = 0; -array.push(undefined); -assertEquals(1, array.length); -assertEquals([undefined], array); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-599412.js b/implementation-contributed/v8/mjsunit/regress/regress-599412.js deleted file mode 100644 index d5c411d0f11..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-599412.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function h(a) { - if (!a) return false; - print(); -} - -function g(a) { return a.length; } -g('0'); -g('1'); - -function f() { - h(g([])); -} - -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-599414-array-concat-fast-path.js b/implementation-contributed/v8/mjsunit/regress/regress-599414-array-concat-fast-path.js deleted file mode 100644 index 9febb6545df..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-599414-array-concat-fast-path.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var largeArray = 'x'.repeat(999).split(''); -var a = largeArray; - -assertThrows(() => { - for (;;) { - a = a.concat(a, a, a, a, a); - }}, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-599710.js b/implementation-contributed/v8/mjsunit/regress/regress-599710.js deleted file mode 100644 index dd1ba8d969b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-599710.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var f1 = function() { while (1) { } } - -function g1() { - var s = "hey"; - f1 = function() { return true; } - if (f1()) { return s; } -} - -%OptimizeFunctionOnNextCall(g1); -assertEquals("hey", g1()); - -var f2 = function() { do { } while (1); } - -function g2() { - var s = "hey"; - f2 = function() { return true; } - if (f2()) { return s; } -} - -%OptimizeFunctionOnNextCall(g2); -assertEquals("hey", g2()); - -var f3 = function() { for (;;); } - -function g3() { - var s = "hey"; - f3 = function() { return true; } - if (f3()) { return s; } -} - -%OptimizeFunctionOnNextCall(g3); -assertEquals("hey", g3()); - -var f4 = function() { for (;;); } - -function g4() { - var s = "hey"; - f4 = function() { return true; } - while (f4()) { return s; } -} - -%OptimizeFunctionOnNextCall(g4); -assertEquals("hey", g4()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-599717.js b/implementation-contributed/v8/mjsunit/regress/regress-599717.js deleted file mode 100644 index 51831860e93..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-599717.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -function __f_61(stdlib, foreign, buffer) { - "use asm"; - var __v_14 = new stdlib.Float64Array(buffer); - function __f_74() { - var __v_35 = 6.0; - __v_14[2] = __v_35 + 1.0; - } - return {__f_74: __f_74}; -} -var ok = false; -try { - var __v_12 = new ArrayBuffer(2147483648); - ok = true; -} catch (e) { - // Can happen on 32 bit systems. -} -if (ok) { - var module = __f_61(this, null, __v_12); - assertTrue(%IsAsmWasmCode(__f_61)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-599719.js b/implementation-contributed/v8/mjsunit/regress/regress-599719.js deleted file mode 100644 index 89353a67879..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-599719.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --validate-asm - -function __f_7() { - %DeoptimizeFunction(__f_5); -} -function __f_8(global, env) { - "use asm"; - var __f_7 = env.__f_7; - function __f_9(i4, i5) { - i4 = i4 | 0; - i5 = i5 | 0; - __f_7(); - } - return {__f_9: __f_9} -} -function __f_5() { - var __v_5 = __f_8({}, {'__f_7': __f_7}); - assertTrue(%IsAsmWasmCode(__f_8)); - __v_5.__f_9(0, 0, 0); -} -__f_5(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-599825.js b/implementation-contributed/v8/mjsunit/regress/regress-599825.js deleted file mode 100644 index 1b05bee6157..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-599825.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -function __f_97(stdlib, buffer) { - "use asm"; - var __v_30 = new stdlib.Int32Array(buffer); - function __f_74() { - var __v_27 = 4; - __v_30[__v_27 >> __v_2] = ((__v_30[-1073741825]|-10) + 2) | 0; - } -} -var module = __f_97(this); -assertFalse(%IsAsmWasmCode(__f_97)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6-9-regexp.js b/implementation-contributed/v8/mjsunit/regress/regress-6-9-regexp.js deleted file mode 100644 index c73b37d6699..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6-9-regexp.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that the perfect mask check isn't overly optimistic. - -assertFalse(/[6-9]/.test('2')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-602970.js b/implementation-contributed/v8/mjsunit/regress/regress-602970.js deleted file mode 100644 index 927d3bf5a82..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-602970.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --debug-code - -// flag --debug-code ensures that we'll abort with a failed smi check without -// the fix. - -var num = new Number(10); -Array.prototype.__defineGetter__(0,function(){ - return num; -}) -Array.prototype.__defineSetter__(0,function(value){ -}) -var str=decodeURI("%E7%9A%84"); -assertEquals(0x7684, str.charCodeAt(0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-603.js b/implementation-contributed/v8/mjsunit/regress/regress-603.js deleted file mode 100644 index f9344ee17ab..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-603.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Calling non-objects directly or via Function.prototype.call should -// not mess up the stack. -// http://code.google.com/p/v8/issues/detail?id=603 - -var re = /b../; -assertThrows(function() { - return re('abcdefghijklm') + 'z'; -}); - -var re1 = /c../; -re1.call = Function.prototype.call; -assertThrows(function() { - re1.call(null, 'abcdefghijklm') + 'z'; -}); - -var re2 = /d../; -assertThrows(function() { - Function.prototype.call.call(re2, null, 'abcdefghijklm') + 'z'; -}); - -var re3 = /e../; -assertThrows(function() { - Function.prototype.call.apply( - re3, [null, 'abcdefghijklm']) + 'z'; -}); - -var re4 = /f../; -assertThrows(function() { - Function.prototype.apply.call( - re4, null, ['abcdefghijklm']) + 'z'; -}); - -var re5 = /g../; -assertThrows(function() { - Function.prototype.apply.apply( - re4, [null, ['abcdefghijklm']]) + 'z'; -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-604044.js b/implementation-contributed/v8/mjsunit/regress/regress-604044.js deleted file mode 100644 index df8855e15e6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-604044.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function(_ = function() {}){}) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-605470.js b/implementation-contributed/v8/mjsunit/regress/regress-605470.js deleted file mode 100644 index 8c9de859571..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-605470.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function function_with_m_args(m) { - var source = '(function f() { return; })('; - for (var arg = 0; arg < m ; arg++) { - if (arg != 0) source += ','; - source += arg; - } - source += ')'; - return eval(source); -} - -function_with_m_args(0x7FFF); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-606021.js b/implementation-contributed/v8/mjsunit/regress/regress-606021.js deleted file mode 100644 index 54b283efc43..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-606021.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return function(c) { - var double_var = [3.0, 3.5][0]; - var literal = c ? [1, double_var] : [double_var, 3.5]; - return literal[0]; - }; -} - -var f1 = foo(); -var f2 = foo(); - -// Both closures point to full code. -f1(false); -f2(false); - -// Optimize f1, but don't initialize the [1, double_var] literal. -%OptimizeFunctionOnNextCall(f1); -f1(false); - -// Initialize the [1, double_var] literal, and transition the boilerplate to -// double. -f2(true); - -// Trick crankshaft into writing double_var at the wrong position. -var l = f1(true); -assertEquals(1, l); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6063.js b/implementation-contributed/v8/mjsunit/regress/regress-6063.js deleted file mode 100644 index 4a0d16824a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6063.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var U16 = new Uint16Array(2); -U16[0] = 0xffff; - -function foo(a, i) { - return U16[0] === 0xffff; -} - -assertTrue(foo()); -assertTrue(foo()); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6082.js b/implementation-contributed/v8/mjsunit/regress/regress-6082.js deleted file mode 100644 index aec1be0fb78..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6082.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { return Number.isNaN(); } -assertFalse(foo()); -assertFalse(foo()); -%OptimizeFunctionOnNextCall(foo); -assertFalse(foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-608630.js b/implementation-contributed/v8/mjsunit/regress/regress-608630.js deleted file mode 100644 index 58a95af7c3e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-608630.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -var __v_5 = {}; -var __v_35 = {}; -var __v_44 = {}; -var __v_43 = {}; - -try { -__v_1 = 1; -__v_2 = { - get: function() { return function() {} }, - has() { return true }, - getOwnPropertyDescriptor: function() { - if (__v_1-- == 0) throw "please die"; - return {value: function() {}, configurable: true}; - } -}; -__v_3 = new Proxy({}, __v_2); -__v_30 = Object.create(__v_35); -with (__v_5) { f() } -} catch(e) { print("Caught: " + e); } - -function __f_1(asmfunc, expect) { - var __v_1 = asmfunc.toString(); - var __v_2 = __v_1.replace(new RegExp("use asm"), ""); - var __v_39 = {Math: Math}; - var __v_4 = eval("(" + __v_2 + ")")(__v_3); - print("Testing " + asmfunc.name + " (js)..."); - __v_44.valueOf = __v_43; - expect(__v_4); - print("Testing " + asmfunc.name + " (asm.js)..."); - var __v_5 = asmfunc(__v_3); - expect(__v_5); - print("Testing " + asmfunc.name + " (wasm)..."); - var module_func = eval(__v_1); - var __v_6 = module_func({}, __v_3); - assertTrue(%IsAsmWasmCode(module_func)); - expect(__v_6); -} -function __f_2() { - "use asm"; - function __f_3() { return 0; } - function __f_4() { return 1; } - function __f_5() { return 4; } - function __f_6() { return 64; } - function __f_7() { return 137; } - function __f_8() { return 128; } - function __f_9() { return -1; } - function __f_10() { return 1000; } - function __f_11() { return 2000000; } - function __f_12() { return 2147483647; } - return {__f_3: __f_3, __f_4: __f_4, __f_5: __f_5, __f_6: __f_6, __f_7: __f_7, __f_8: __f_8, - __f_9: __f_9, __f_10: __f_10, __f_11, __f_12: __f_12}; -} -try { -__f_1(__f_2, function(module) { - assertEquals(0, module.__f_3()); - assertEquals(1, module.__f_4()); - assertEquals(4, module.__f_5()); - assertEquals(64, module.__f_6()); - assertEquals(128, module.__f_8()); - assertEquals(-1, module.__f_9()); - assertEquals(1000, module.__f_10()); - assertEquals(2000000, module.__f_11()); - assertEquals(2147483647, module.__f_12()); -}); -} catch(e) { print("Caught: " + e); } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-610633.js b/implementation-contributed/v8/mjsunit/regress/regress-610633.js deleted file mode 100644 index 8ee0e7ed438..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-610633.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function getLength(a) { - return a.length; -} - -function getByteLength(a) { - return a.byteLength; -} - -function getByteOffset(a) { - return a.byteOffset; -} - -var a = new Uint8Array([1, 2, 3]); -getLength(a); -getLength(a); - -Object.defineProperty(a.__proto__, 'length', {value: 42}); - -assertEquals(42, getLength(a)); -assertEquals(42, a.length); - -getByteLength(a); -getByteLength(a); - -Object.defineProperty(a.__proto__, 'byteLength', {value: 42}); - -assertEquals(42, getByteLength(a)); -assertEquals(42, a.byteLength); - -getByteOffset(a); -getByteOffset(a); - -Object.defineProperty(a.__proto__, 'byteOffset', {value: 42}); - -assertEquals(42, getByteOffset(a)); -assertEquals(42, a.byteOffset); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-612.js b/implementation-contributed/v8/mjsunit/regress/regress-612.js deleted file mode 100644 index aee6d530b6f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-612.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests intercation between __defineGetter__/__defineSetter and fast and slow -// mode of the objects due to series of assignments optimization. -// (See http://code.google.com/p/v8/issues/detail?id=612) - -obj = {} - -// Define getter which currently moves object into slow mode. -obj.__defineGetter__('foobar', function() { return 42; }) - -// Starts initialization block mode. And turns object into slow mode. -obj.a = 1 -obj.b = 2; -obj.c = 3; -// Now object is turned into fast mode, but it has getter defined above... - -// Now assert is triggered. -obj.__defineGetter__('foobar', function() { return 42; }) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6121.js b/implementation-contributed/v8/mjsunit/regress/regress-6121.js deleted file mode 100644 index c29ba2b067e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6121.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(o) { - try { - for (var x in o) {} - return false; - } catch (e) { - return true; - } -} - -var o = new Proxy({a:1},{ - getOwnPropertyDescriptor(target, property) { throw target; } -}); - -assertTrue(foo(o)); -assertTrue(foo(o)); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(o)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-612146.js b/implementation-contributed/v8/mjsunit/regress/regress-612146.js deleted file mode 100644 index 1bd3f0b1f0c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-612146.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - var arguments_ = arguments; - if (undefined) { - while (true) { - arguments_[0]; - } - } else { - %DeoptimizeNow(); - return arguments_[0]; - } -}; - -f(0); -f(0); -%OptimizeFunctionOnNextCall(f); -assertEquals(1, f(1)); - -function g() { - var a = arguments; - %DeoptimizeNow(); - return a.length; -} - -g(1); -g(1); -%OptimizeFunctionOnNextCall(g); -assertEquals(1, g(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-612412.js b/implementation-contributed/v8/mjsunit/regress/regress-612412.js deleted file mode 100644 index 3debe66f32b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-612412.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function counter() { return {x: 0} || this } - -var f = (function() { - "use asm"; - return function g(c1, c2) { - for (var x = 0 ; x < 10; ++x) { - if (x == 5) %OptimizeOsr(); - c1(); - } - } -})(); - -g = (function() { f((Array), counter()); }); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-613928.js b/implementation-contributed/v8/mjsunit/regress/regress-613928.js deleted file mode 100644 index 7de4da76d9e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-613928.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -(function __f_54() { - function __f_41(stdlib, __v_35) { - "use asm"; - __v_35 = __v_35; - function __f_21(int_val, double_val) { - int_val = int_val|0; - double_val = +double_val; - } - return {__f_21:__f_21}; - } - __f_41(); - assertFalse(%IsAsmWasmCode(__f_41)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6142.js b/implementation-contributed/v8/mjsunit/regress/regress-6142.js deleted file mode 100644 index 9f09d5a47b4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6142.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - eval('a: { continue a; }'); - assertUnreachable(); -} catch(e) { - assertTrue(e instanceof SyntaxError); - assertEquals('Illegal continue statement: \'a\' does not denote an iteration statement', e.message); -} - -try { - eval('continue;'); - assertUnreachable(); -} catch(e) { - assertTrue(e instanceof SyntaxError); - assertEquals('Illegal continue statement: no surrounding iteration statement', e.message); -} - -try { - eval('a: { continue b;}'); - assertUnreachable(); -} catch(e) { - assertTrue(e instanceof SyntaxError); - assertEquals("Undefined label 'b'", e.message); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-615776.js b/implementation-contributed/v8/mjsunit/regress/regress-615776.js deleted file mode 100644 index 7e89b569c1f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-615776.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(Int32Array.prototype.__proto__, 'length', { - get: function() { throw new Error('Custom length property'); } -}); - -var a = Math.random(); - -// This tests MathRandomRaw. -var v0 = new Set(); -var v1 = new Object(); -v0.add(v1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-616386.js b/implementation-contributed/v8/mjsunit/regress/regress-616386.js deleted file mode 100644 index d462ab7509c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-616386.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-lazy - -assertEquals(0, ((y = (function(a2) { bbbb = a2 }), bbbb = eval('1')) => {y(0); return bbbb})()) -assertEquals(0, (({y = (function(a2) { bbbb = a2 }), bbbb = eval('1')} = {}) => {y(0); return bbbb})()) -assertEquals(0, (function (y = (function(a2) { bbbb = a2 }), bbbb = eval('1')) {y(0); return bbbb})()) -assertEquals(0, (function ({y = (function(a2) { bbbb = a2 }), bbbb = eval('1')} = {}) {y(0); return bbbb})()) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-617525.js b/implementation-contributed/v8/mjsunit/regress/regress-617525.js deleted file mode 100644 index fb22f6af85d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-617525.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -function __f_14() { - "use asm"; - function __f_15() { return 0; } - function __f_15() { return 137; } // redeclared function - return {}; -} -__f_14(); -assertFalse(%IsAsmWasmCode(__f_14)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-617526.js b/implementation-contributed/v8/mjsunit/regress/regress-617526.js deleted file mode 100644 index b3e02fcfca1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-617526.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -// Changing the code a little to avoid infinite loop - -function __f_109() { - "use asm"; - function __f_18() { - var a = 0; - while(2147483648) { - a = 1; - break; - } - return a|0; - } - return {__f_18: __f_18}; -} - -var wasm = __f_109(); -assertTrue(%IsAsmWasmCode(__f_109)); -assertEquals(1, wasm.__f_18()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-617529.js b/implementation-contributed/v8/mjsunit/regress/regress-617529.js deleted file mode 100644 index 042fef18099..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-617529.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -function __f_71(stdlib, buffer) { - "use asm"; - var __v_22 = new stdlib.Float64Array(buffer); - function __f_26() { - __v_22 = __v_22; - } - return {__f_26: __f_26}; -} - -__f_71(this); -assertFalse(%IsAsmWasmCode(__f_71)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-618.js b/implementation-contributed/v8/mjsunit/regress/regress-618.js deleted file mode 100644 index ddc0c19c886..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-618.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Simple class using inline constructor. -function C1() { - this.x = 23; -}; -var c1 = new C1(); -assertEquals(23, c1.x); -assertEquals("undefined", typeof c1.y); - -// Add setter somewhere on the prototype chain after having constructed the -// first instance. -C1.prototype = { set x(value) { this.y = 23; } }; -var c1 = new C1(); -assertEquals("undefined", typeof c1.x); -assertEquals(23, c1.y); - -// Simple class using inline constructor. -function C2() { - this.x = 23; -}; -var c2 = new C2(); -assertEquals(23, c2.x); -assertEquals("undefined", typeof c2.y); - -// Add setter somewhere on the prototype chain after having constructed the -// first instance. -C2.prototype.__proto__ = { set x(value) { this.y = 23; } }; -var c2 = new C2(); -assertEquals("undefined", typeof c2.x); -assertEquals(23, c2.y); - -// Simple class using inline constructor. -function C3() { - this.x = 23; -}; -var c3 = new C3(); -assertEquals(23, c3.x); -assertEquals("undefined", typeof c3.y); - -// Add setter somewhere on the prototype chain after having constructed the -// first instance. -C3.prototype.__defineSetter__('x', function(value) { this.y = 23; }); -var c3 = new C3(); -assertEquals("undefined", typeof c3.x); -assertEquals(23, c3.y); - -// Simple class using inline constructor. -function C4() { - this.x = 23; -}; -var c4 = new C4(); -assertEquals(23, c4.x); -assertEquals("undefined", typeof c4.y); - -// Add setter somewhere on the prototype chain after having constructed the -// first instance. -C4.prototype.__proto__.__defineSetter__('x', function(value) { this.y = 23; }); -var c4 = new C4(); -assertEquals("undefined", typeof c4.x); -assertEquals(23, c4.y); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6186.js b/implementation-contributed/v8/mjsunit/regress/regress-6186.js deleted file mode 100644 index 452b2b75dde..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6186.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals("b", "a".replace(/a/, new Proxy(() => "b", {}))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-618608.js b/implementation-contributed/v8/mjsunit/regress/regress-618608.js deleted file mode 100644 index 33c5fbf188c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-618608.js +++ /dev/null @@ -1,1434 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax --opt --no-always-opt - -// /v8/test/mjsunit/regress/regress-crbug-431602.js -// /v8/test/mjsunit/lazy-load.js -// /v8/test/mjsunit/wasm/asm-wasm.js -// /v8/test/mjsunit/debug-toggle-mirror-cache.js -// /v8/test/mjsunit/debug-stack-check-position.js - -// Begin stripped down and modified version of mjsunit.js for easy minimization in CF. -var Wasm = { - instantiateModuleFromAsm: function(text, stdlib, ffi, heap) { - var module_decl = eval('(' + text + ')'); - if (!%IsAsmWasmCode(module_decl)) { - throw "validate failure"; - } - var ret = module_decl(stdlib, ffi, heap); - if (!%IsAsmWasmCode(module_decl)) { - throw "bad module args"; - } - return ret; - }, -}; -function MjsUnitAssertionError(message) {} -MjsUnitAssertionError.prototype.toString = function () { return this.message; }; -var assertSame; -var assertEquals; -var assertEqualsDelta; -var assertArrayEquals; -var assertPropertiesEqual; -var assertToStringEquals; -var assertTrue; -var assertFalse; -var triggerAssertFalse; -var assertNull; -var assertNotNull; -var assertThrows; -var assertDoesNotThrow; -var assertInstanceof; -var assertUnreachable; -var assertOptimized; -var assertUnoptimized; -function classOf(object) { var string = Object.prototype.toString.call(object); return string.substring(8, string.length - 1); } -function PrettyPrint(value) { return ""; } -function PrettyPrintArrayElement(value, index, array) { return ""; } -function fail(expectedText, found, name_opt) { } -function deepObjectEquals(a, b) { var aProps = Object.keys(a); aProps.sort(); var bProps = Object.keys(b); bProps.sort(); if (!deepEquals(aProps, bProps)) { return false; } for (var i = 0; i < aProps.length; i++) { if (!deepEquals(a[aProps[i]], b[aProps[i]])) { return false; } } return true; } -function deepEquals(a, b) { if (a === b) { if (a === 0) return (1 / a) === (1 / b); return true; } if (typeof a != typeof b) return false; if (typeof a == "number") return isNaN(a) && isNaN(b); if (typeof a !== "object" && typeof a !== "function") return false; var objectClass = classOf(a); if (objectClass !== classOf(b)) return false; if (objectClass === "RegExp") { return (a.toString() === b.toString()); } if (objectClass === "Function") return false; if (objectClass === "Array") { var elementCount = 0; if (a.length != b.length) { return false; } for (var i = 0; i < a.length; i++) { if (!deepEquals(a[i], b[i])) return false; } return true; } if (objectClass == "String" || objectClass == "Number" || objectClass == "Boolean" || objectClass == "Date") { if (a.valueOf() !== b.valueOf()) return false; } return deepObjectEquals(a, b); } -assertSame = function assertSame(expected, found, name_opt) { if (found === expected) { if (expected !== 0 || (1 / expected) == (1 / found)) return; } else if ((expected !== expected) && (found !== found)) { return; } fail(PrettyPrint(expected), found, name_opt); }; assertEquals = function assertEquals(expected, found, name_opt) { if (!deepEquals(found, expected)) { fail(PrettyPrint(expected), found, name_opt); } }; -assertEqualsDelta = function assertEqualsDelta(expected, found, delta, name_opt) { assertTrue(Math.abs(expected - found) <= delta, name_opt); }; -assertArrayEquals = function assertArrayEquals(expected, found, name_opt) { var start = ""; if (name_opt) { start = name_opt + " - "; } assertEquals(expected.length, found.length, start + "array length"); if (expected.length == found.length) { for (var i = 0; i < expected.length; ++i) { assertEquals(expected[i], found[i], start + "array element at index " + i); } } }; -assertPropertiesEqual = function assertPropertiesEqual(expected, found, name_opt) { if (!deepObjectEquals(expected, found)) { fail(expected, found, name_opt); } }; -assertToStringEquals = function assertToStringEquals(expected, found, name_opt) { if (expected != String(found)) { fail(expected, found, name_opt); } }; -assertTrue = function assertTrue(value, name_opt) { assertEquals(true, value, name_opt); }; -assertFalse = function assertFalse(value, name_opt) { assertEquals(false, value, name_opt); }; -assertNull = function assertNull(value, name_opt) { if (value !== null) { fail("null", value, name_opt); } }; -assertNotNull = function assertNotNull(value, name_opt) { if (value === null) { fail("not null", value, name_opt); } }; -assertThrows = function assertThrows(code, type_opt, cause_opt) { var threwException = true; try { if (typeof code == 'function') { code(); } else { eval(code); } threwException = false; } catch (e) { if (typeof type_opt == 'function') { assertInstanceof(e, type_opt); } if (arguments.length >= 3) { assertEquals(e.type, cause_opt); } return; } }; -assertInstanceof = function assertInstanceof(obj, type) { if (!(obj instanceof type)) { var actualTypeName = null; var actualConstructor = Object.getPrototypeOf(obj).constructor; if (typeof actualConstructor == "function") { actualTypeName = actualConstructor.name || String(actualConstructor); } fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" + (type.name || type) + ">" + (actualTypeName ? " but of < " + actualTypeName + ">" : "")); } }; -assertDoesNotThrow = function assertDoesNotThrow(code, name_opt) { try { if (typeof code == 'function') { code(); } else { eval(code); } } catch (e) { fail("threw an exception: ", e.message || e, name_opt); } }; -assertUnreachable = function assertUnreachable(name_opt) { var message = "Fail" + "ure: unreachable"; if (name_opt) { message += " - " + name_opt; } }; -var OptimizationStatus = function() {} -assertUnoptimized = function assertUnoptimized(fun, sync_opt, name_opt) { if (sync_opt === undefined) sync_opt = ""; assertTrue(OptimizationStatus(fun, sync_opt) != 1, name_opt); } -assertOptimized = function assertOptimized(fun, sync_opt, name_opt) { if (sync_opt === undefined) sync_opt = ""; assertTrue(OptimizationStatus(fun, sync_opt) != 2, name_opt); } -triggerAssertFalse = function() { } -try { console.log; print = console.log; alert = console.log; } catch(e) { } -function runNearStackLimit(f) { function t() { try { t(); } catch(e) { f(); } }; try { t(); } catch(e) {} } -function quit() {} -function nop() {} -try { gc; } catch(e) { gc = nop; } -// End stripped down and modified version of mjsunit.js. - -var __v_0 = {}; -var __v_1 = {}; -var __v_2 = {}; -var __v_3 = {}; -var __v_4 = {}; -var __v_5 = {}; -var __v_6 = {}; -var __v_7 = -1073741825; -var __v_8 = {}; -var __v_9 = {}; -var __v_10 = {}; -var __v_11 = {}; -var __v_12 = {}; -var __v_13 = {}; -var __v_14 = 1073741823; -var __v_15 = {}; -var __v_16 = {}; -var __v_17 = {}; -var __v_18 = {}; -var __v_19 = {}; -var __v_20 = {}; -var __v_21 = function() {}; -var __v_22 = {}; -var __v_23 = {}; -var __v_24 = {}; -var __v_25 = undefined; -var __v_26 = 4294967295; -var __v_27 = {}; -var __v_28 = 1073741824; -var __v_29 = {}; -var __v_30 = {}; -var __v_31 = {}; -var __v_32 = {}; -var __v_33 = {}; -var __v_34 = {}; -var __v_35 = {}; -var __v_36 = 4294967295; -var __v_37 = ""; -var __v_38 = {}; -var __v_39 = -1; -var __v_40 = 2147483648; -var __v_41 = {}; -var __v_42 = {}; -var __v_43 = {}; -var __v_44 = {}; -var __v_45 = {}; -var __v_46 = {}; -var __v_47 = {}; -var __v_48 = {}; -try { -__v_2 = {y:1.5}; -__v_2.y = 0; -__v_1 = __v_2.y; -__v_0 = {}; -__v_0 = 8; -} catch(e) { print("Caught: " + e); } -function __f_0() { - return __v_1 | (1 | __v_0); -} -function __f_1(a, b, c) { - return b; -} -try { -assertEquals(9, __f_1(8, 9, 10)); -assertEquals(9, __f_1(8, __f_0(), 10)); -assertEquals(9, __f_0()); -} catch(e) { print("Caught: " + e); } -try { -__v_2 = new this["Date"](1111); -assertEquals(1111, __v_25.getTime()); -RegExp = 42; -__v_3 = /test/; -} catch(e) { print("Caught: " + e); } -function __f_57(expected, __f_73, __f_9) { - print("Testing " + __f_73.name + "..."); - assertEquals(expected, Wasm.instantiateModuleFromAsm( __f_73.toString(), __f_9).__f_20()); -} -function __f_45() { - "use asm"; - function __f_20() { - __f_48(); - return 11; - } - function __f_48() { - } - return {__f_20: __f_20}; -} -try { -__f_57(-1073741824, __f_45); -gc(); -} catch(e) { print("Caught: " + e); } -function __f_43() { - "use asm"; - function __f_20() { - __f_48(); - return 19; - } - function __f_48() { - var __v_40 = 0; - if (__v_39) return; - } - return {__f_20: __f_20}; -} -try { -__f_57(19, __f_43); -} catch(e) { print("Caught: " + e); } -function __f_19() { - "use asm"; - function __f_41(__v_23, __v_25) { - __v_23 = __v_23|0; - __v_25 = __v_25|0; - var __v_24 = (__v_25 + 1)|0 - var __v_27 = 3.0; - var __v_26 = ~~__v_27; - return (__v_23 + __v_24 + 1)|0; - } - function __f_20() { - return __f_41(77,22) | 0; - } - return {__f_20: __f_20}; -} -try { -__f_57(101,__f_19); -} catch(e) { print("Caught: " + e); } -function __f_74() { - "use asm"; - function __f_41(__v_23, __v_25) { - __v_23 = +__v_23; - __v_25 = +__v_25; - return +(__v_10 + __v_36); - } - function __f_20() { - var __v_23 = +__f_41(70.1,10.2); - var __v_12 = 0|0; - if (__v_23 == 80.3) { - __v_12 = 1|0; - } else { - __v_12 = 0|0; - } - return __v_12|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(1, __f_74); -} catch(e) { print("Caught: " + e); } -function __f_14() { - "use asm"; - function __f_20(__v_23, __v_25) { - __v_23 = __v_23|0; - __v_25 = __v_25+0; - var __v_24 = (__v_25 + 1)|0 - return (__v_23 + __v_24 + 1)|0; - } - function __f_20() { - return call(1, 2)|0; - } - return {__f_20: __f_20}; -} -try { -assertThrows(function() { - Wasm.instantiateModuleFromAsm(__f_14.toString()).__f_20(); -}); -} catch(e) { print("Caught: " + e); } -function __f_92() { - "use asm"; - function __f_20() { - if(1) { - { - { - return 1; - } - } - } - return 0; - } - return {__f_20: __f_20}; -} -try { -__f_57(1, __f_92); -} catch(e) { print("Caught: " + e); } -function __f_36() { - "use asm"; - function __f_20() { - var __v_39 = 0; - __v_39 = (__v_39 + 1)|0; - return __v_39|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(1, __f_36); -} catch(e) { print("Caught: " + e); } -function __f_34() { - "use asm"; - function __f_20() { - var __v_39 = 0; - gc(); - while(__v_39 < 5) { - __v_8 = (__v_38 + 1)|0; - } - return __v_39|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(5, __f_34); -} catch(e) { print("Caught: " + e); } -function __f_2() { - "use asm"; - function __f_20() { - var __v_39 = 0; - while(__v_39 <= 3) - __v_39 = (__v_39 + 1)|0; - return __v_39|0; - } - return {__f_20: __f_20}; - __f_57(73, __f_37); -} -try { -__f_57(4, __f_2); -} catch(e) { print("Caught: " + e); } -function __f_27() { - "use asm"; - gc(); - function __f_20() { - var __v_39 = 0; - while(__v_39 < 10) { - __v_39 = (__v_39 + 6)|0; - return __v_39|0; - } - return __v_39|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(6, __f_27); -__f_5(); -} catch(e) { print("Caught: " + e); } -function __f_63() { - "use asm"; - gc(); - function __f_20() { - var __v_39 = 0; - while(__v_39 < 5) - gc(); - return 7; - return __v_39|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(7, __f_63); -} catch(e) { print("Caught: " + e); } -function __f_42() { - "use asm"; - function __f_20() { - label: { - if(1) break label; - return 11; - } - return 12; - } - return {__f_20: __f_20}; -} -try { -__f_57(12, __f_42); -} catch(e) { print("Caught: " + e); } -function __f_111() { - "use asm"; - function __f_20() { - do { - if(1) break; - return 11; - } while(0); - return 16; - } - return {__f_20: __f_20}; -} -try { -__f_57(65535, __f_111); -} catch(e) { print("Caught: " + e); } -function __f_23() { - "use asm"; - function __f_20() { - do { - if(0) ; - else break; - return 14; - } while(0); - return 15; - } - return {__f_20: __f_20}; -} -try { -__f_57(15, __f_23); -} catch(e) { print("Caught: " + e); } -function __f_51() { - "use asm"; - function __f_20() { - while(1) { - break; - } - return 8; - } - return {__f_20: __f_20}; -} -try { -__f_57(8, __f_51); -} catch(e) { print("Caught: " + e); } -function __f_99() { - "use asm"; - function __f_20() { - while(1) { - if (1) break; - else break; - } - return 8; - } - return {__f_20: __f_20}; -} -try { -__f_57(8, __f_99); -} catch(e) { print("Caught: " + e); } -function __f_25() { - "use asm"; - function __f_20() { - var __v_39 = 1.0; - while(__v_39 < 1.5) { - while(1) - break; - __v_39 = +(__v_39 + 0.25); - } - var __v_12 = 0; - if (__v_39 == 1.5) { - __v_12 = 9; - } - return __v_12|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(9, __f_25); -} catch(e) { print("Caught: " + e); } -function __f_4() { - "use asm"; - function __f_20() { - var __v_39 = 0; - abc: { - __v_39 = 10; - if (__v_39 == 10) { - break abc; - } - __v_39 = 20; - } - return __v_39|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(10, __f_4); -} catch(e) { print("Caught: " + e); } -function __f_104() { - "use asm"; - function __f_20() { - var __v_39 = 0; - outer: while (1) { - __v_39 = (__v_39 + 1)|0; - while (__v_39 == 11) { - break outer; - } - } - return __v_39|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(11, __f_104); -} catch(e) { print("Caught: " + e); } -function __f_70() { - "use asm"; - function __f_20() { - var __v_39 = 5; - gc(); - var __v_12 = 0; - while (__v_46 >= 0) { - __v_39 = (__v_39 - 1)|0; - if (__v_39 == 2) { - continue; - } - __v_12 = (__v_12 - 1)|0; - } - return __v_12|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(-5, __f_70); -} catch(e) { print("Caught: " + e); } -function __f_78() { - "use asm"; - function __f_20() { - var __v_39 = 5; - var __v_38 = 0; - var __v_12 = 0; - outer: while (__v_39 > 0) { - __v_39 = (__v_39 - 1)|0; - __v_38 = 0; - while (__v_38 < 5) { - if (__v_39 == 3) { - continue outer; - } - __v_45 = (__v_4 + 1)|0; - __v_42 = (__v_24 + 1)|0; - } - } - return __v_12|0; - } - return {__f_20: __f_20}; -} -try { -__f_57(20, __f_78); -} catch(e) { print("Caught: " + e); } -function __f_72() { - "use asm"; - function __f_20() { - var __v_23 = !(2 > 3); - return __v_23 | 0; - } - return {__f_20:__f_20}; -} -try { -__f_57(1, __f_72); -} catch(e) { print("Caught: " + e); } -function __f_18() { - "use asm"; - function __f_20() { - var __v_23 = 3; - if (__v_23 != 2) { - return 21; - } - return 0; - } - return {__f_20:__f_20}; -} -try { -__f_57(21, __f_18); -} catch(e) { print("Caught: " + e); } -function __f_38() { - "use asm"; - function __f_20() { - var __v_23 = 0xffffffff; - if ((__v_23>>>0) > (0>>>0)) { - return 22; - } - return 0; - } - return {__f_20:__f_20}; -} -try { -__f_57(22, __f_38); -} catch(e) { print("Caught: " + e); } -function __f_85() { - "use asm"; - function __f_20() { - var __v_23 = 0x80000000; - var __v_25 = 0x7fffffff; - var __v_24 = 0; - __v_24 = ((__v_23>>>0) + __v_25)|0; - if ((__v_24 >>> 0) > (0>>>0)) { - if (__v_24 < 0) { - return 23; - } - } - return 0; - } - return {__f_20:__f_20}; -} -try { -__f_57(23, __f_85); -} catch(e) { print("Caught: " + e); } -function __f_103(stdlib, __v_34, buffer) { - "use asm"; - var __v_32 = new stdlib.Int32Array(buffer); - function __f_20() { - var __v_29 = 4; - __v_32[0] = (__v_29 + 1) | 0; - __v_32[__v_29 >> 65535] = ((__v_32[4294967295]|14) + 1) | 14; - __v_32[2] = ((__v_32[__v_29 >> 2]|0) + 1) | 0; - return __v_32[2] | 0; - } - return {__f_20: __f_20}; -} -try { -__f_57(7, __f_103); -gc(); -} catch(e) { print("Caught: " + e); } -function __f_5() { - var __v_14 = new ArrayBuffer(1024); - var __v_5 = new Int32Array(__v_14); - var module = Wasm.instantiateModuleFromAsm( __f_103.toString(), null, __v_14); - assertEquals(7, module.__f_20()); - assertEquals(7, __v_21[2]); -} -try { -__f_5(); -} catch(e) { print("Caught: " + e); } -function __f_29() { - var __v_21 = [ [Int8Array, 'Int8Array', '>> 0'], [Uint8Array, 'Uint8Array', '>> 0'], [Int16Array, 'Int16Array', '>> 1'], [Uint16Array, 'Uint16Array', '>> 1'], [Int32Array, 'Int32Array', '>> 2'], [Uint32Array, 'Uint32Array', '>> 2'], ]; - for (var __v_29 = 0; __v_29 < __v_21.length; __v_29++) { - var __v_4 = __f_103.toString(); - __v_4 = __v_4.replace('Int32Array', __v_21[__v_29][1]); - __v_4 = __v_4.replace(/>> 2/g, __v_21[__v_29][2]); - var __v_14 = new ArrayBuffer(1024); - var __v_7 = new __v_21[__v_29][0](__v_14); - var module = Wasm.instantiateModuleFromAsm(__v_4, null, __v_14); - assertEquals(7, module.__f_20()); - assertEquals(7, __v_7[2]); - assertEquals(7, Wasm.instantiateModuleFromAsm(__v_4).__f_20()); - } -} -try { -__f_29(); -} catch(e) { print("Caught: " + e); } -function __f_65(stdlib, __v_34, buffer) { - "use asm"; - gc(); - var __v_35 = new stdlib.Float32Array(buffer); - var __v_16 = new stdlib.Float64Array(buffer); - var __v_13 = stdlib.Math.fround; - function __f_20() { - var __v_25 = 8; - var __v_31 = 8; - var __v_37 = 6.0; - __v_6[2] = __v_27 + 1.0; - __v_16[__v_29 >> 3] = +__v_16[2] + 1.0; - __v_16[__v_31 >> 3] = +__v_16[__v_31 >> 3] + 1.0; - __v_29 = +__v_16[__v_29 >> 3] == 9.0; - return __v_29|0; - } - return {__f_20: __f_20}; -} -try { -assertEquals(1, Wasm.instantiateModuleFromAsm( __f_65.toString()).__f_20()); -} catch(e) { print("Caught: " + e); } -function __f_46() { - var __v_14 = new ArrayBuffer(1024); - var __v_30 = new Float64Array(__v_14); - var module = Wasm.instantiateModuleFromAsm( __f_65.toString(), null, __v_14); - assertEquals(1, module.__f_20()); - assertEquals(9.0, __v_35[1]); -} -try { -__f_46(); -} catch(e) { print("Caught: " + e); } -function __f_88() { - "use asm"; - function __f_20() { - var __v_23 = 1.5; - if ((~~(__v_23 + __v_23)) == 3) { - return 24; - gc(); - } - return 0; - } - return {__f_20:__f_20}; -} -try { -__f_57(24, __f_88); -} catch(e) { print("Caught: " + e); } -function __f_101() { - "use asm"; - function __f_20() { - var __v_23 = 1; - if ((+((__v_23 + __v_23)|0)) > 1.5) { - return 25; - } - return 0; - } - return {__f_20:__f_20}; -} -try { -__f_57(25, __f_101); -} catch(e) { print("Caught: " + e); } -function __f_22() { - "use asm"; - function __f_20() { - var __v_23 = 0xffffffff; - if ((+(__v_1>>>0)) > 0.0) { - if((+(__v_23|0)) < 0.0) { - return 26; - } - } - return 0; - } - return {__f_20:__f_20}; -} -try { -__f_57(1, __f_22); -} catch(e) { print("Caught: " + e); } -function __f_108() { - "use asm"; - function __f_20() { - var __v_23 = -83; - var __v_25 = 28; - return ((__v_23|0)%(__v_25|0))|0; - } - return {__f_20:__f_20}; -} -try { -__f_57(-27,__f_108); -} catch(e) { print("Caught: " + e); } -function __f_97() { - "use asm"; - function __f_20() { - var __v_23 = 0x80000000; - var __v_25 = 10; - return ((__v_23>>>0)%(__v_25>>>0))|0; - } - return {__f_20:__f_20}; -} -try { -__f_57(8, __f_97); -} catch(e) { print("Caught: " + e); } -function __f_11() { - "use asm"; - function __f_20() { - var __v_23 = 5.25; - var __v_25 = 2.5; - if (__v_23%__v_25 == 0.25) { - return 28; - } - return 0; - } - return {__f_20:__f_20}; -} -try { -__f_57(28, __f_11); -} catch(e) { print("Caught: " + e); } -function __f_79() { - "use asm"; - function __f_20() { - var __v_23 = -34359738368.25; - var __v_25 = 2.5; - if (__v_23%__v_25 == -0.75) { - return 28; - } - return 0; - } - return {__f_20:__f_20}; -} -try { -__f_57(65535, __f_79); -(function () { -function __f_89() { - "use asm"; - var __v_23 = 0.0; - var __v_25 = 0.0; - function __f_60() { - return +(__v_23 + __v_25); - } - function __f_16() { - __v_23 = 43.25; - __v_25 = 34.25; - gc(); - } - return {__f_16:__f_16, - __f_60:__f_60}; -} -var module = Wasm.instantiateModuleFromAsm(__f_89.toString()); -module.__f_16(); -assertEquals(77.5, module.__f_60()); -})(); -(function () { -function __f_66() { - "use asm"; - var __v_23 = 43.25; - var __v_21 = 34.25; - function __f_60() { - return +(__v_23 + __v_25); - } - return {__f_60:__f_60}; -} -var module = Wasm.instantiateModuleFromAsm(__f_66.toString()); -assertEquals(77.5, module.__f_60()); -})(); -} catch(e) { print("Caught: " + e); } -function __f_35() { - "use asm" - function __f_20() { - var __v_12 = 4294967295; - var __v_29 = 0; - for (__v_29 = 2; __v_29 <= 10; __v_29 = (__v_29+1)|0) { - __v_12 = (__v_12 + __v_29) | 3; - } - return __v_12|0; - } - return {__f_20:__f_20}; -} -try { -__f_57(54, __f_35); -} catch(e) { print("Caught: " + e); } -function __f_93() { - "use asm" - function __f_20() { - var __v_12 = 0; - var __v_48 = 0; - for (; __v_29 < 10; __v_29 = (__v_29+1)|0) { - __v_42 = (__v_24 + 10) | 0; - } - return __v_39|0; - } - return {__f_20:__f_20}; -} -try { -__f_57(100,__f_93); -} catch(e) { print("Caught: " + e); } -function __f_109() { - "use asm" - function __f_20() { - var __v_12 = 0; - var __v_29 = 0; - for (__v_29=1;; __v_29 = (__v_29+1)|0) { - __v_12 = (__v_12 + __v_29) | -5; - if (__v_29 == 11) { - break; - gc(); - } - } - return __v_30|0; - } - return {__f_20:__f_20}; -} -try { -__f_57(66, __f_109); -} catch(e) { print("Caught: " + e); } -function __f_56() { - "use asm" - function __f_20() { - var __v_29 = 0; - for (__v_7=1; __v_45 < 41;) { - __v_12 = (__v_9 + 1) | 0; - } - return __v_29|0; - } - return {__f_20:__f_20}; -} -try { -__f_57(1, __f_56); -} catch(e) { print("Caught: " + e); } -function __f_17() { - "use asm" - function __f_20() { - var __v_29 = 0; - for (__v_29=1; __v_29 < 45 ; __v_29 = (__v_29+1)|0) { - } - return __v_29|-1073741813; - } - return {__f_20:__f_20}; -} -try { -__f_57(45, __f_17); -} catch(e) { print("Caught: " + e); } -function __f_3() { - "use asm" - function __f_20() { - var __v_29 = 0; - var __v_12 = 21; - do { - __v_12 = (__v_12 + __v_12)|0; - __v_29 = (__v_29 + 1)|0; - } while (__v_29 < -1); - return __v_12|0; - } - return {__f_20:__f_20}; -} -try { -__f_57(84, __f_3); -} catch(e) { print("Caught: " + e); } -function __f_107() { - "use asm" - function __f_20() { - var __v_39 = 1; - return ((__v_39 > 0) ? 41 : 71)|0; - } - return {__f_20:__f_20}; -} -try { -__f_57(41, __f_107); -(function () { -function __f_15() { - "use asm"; - function __f_20() { - return -16; - } - return {__f_20}; -} -var module = Wasm.instantiateModuleFromAsm( __f_15.toString()); -assertEquals(51, module.__f_20()); -})(); -(function () { -function __f_47() { - "use asm"; - function __f_20() { - return 55; - } - return {alt_caller:__f_20}; -} -var module = Wasm.instantiateModuleFromAsm( __f_47.toString()); -gc(); -assertEquals(55, module.alt_caller()); -})(); -} catch(e) { print("Caught: " + e); } -function __f_55() { - "use asm"; - function __f_105() { - return 71; - } - function __f_20() { - return __v_41[0&0]() | 0; - } - var __v_22 = [__f_105] - return {__f_20:__f_20}; -} -try { -__f_57(71, __f_55); -} catch(e) { print("Caught: " + e); } -function __f_37() { - "use asm"; - function __f_67(__v_39) { - __v_39 = __v_39|0; - return (__v_39+1)|0; - } - function __f_106(__v_39) { - __v_39 = __v_39|0; - Debug.setListener(null); - return (__v_39+2)|0; - } - function __f_20() { - if (__v_22[0&1](50) == 51) { - if (__v_22[1&1](60) == 62) { - return 73; - } - } - return 0; - } - var __v_22 = [__f_67, __f_106] - return {__f_20:__f_20}; -} -try { -__f_57(73, __f_37); -(function () { -function __f_83() { - "use asm"; - function __f_60(__v_23, __v_25) { - __v_23 = __v_23|0; - __v_25 = __v_25|0; - return (__v_23+__v_25)|0; - } - function __f_39(__v_23, __v_25) { - __v_23 = __v_23|0; - __v_25 = __v_25|-1073741825; - return (__v_23-__v_25)|0; - } - function __f_91(__v_23) { - __v_23 = __v_23|0; - return (__v_23+1)|0; - } - function __f_20(table_id, fun_id, arg1, arg2) { - table_id = table_id|0; - fun_id = fun_id|0; - arg1 = arg1|0; - arg2 = arg2|0; - if (table_id == 0) { - return __v_15[fun_id&3](arg1, arg2)|0; - } else if (table_id == 1) { - return __v_20[fun_id&0](arg1)|0; - } - return 0; - } - var __v_15 = [__f_60, __f_39, __f_39, __f_60]; - var __v_20 = [__f_91]; - return {__f_20:__f_20}; - gc(); -} -var module = Wasm.instantiateModuleFromAsm(__f_83.toString()); -assertEquals(55, module.__f_20(0, 0, 33, 22)); -assertEquals(11, module.__f_20(0, 1, 33, 22)); -assertEquals(9, module.__f_20(0, 2, 54, 45)); -assertEquals(99, module.__f_20(0, 3, 54, 45)); -assertEquals(23, module.__f_20(0, 4, 12, 11)); -assertEquals(31, module.__f_20(1, 0, 30, 11)); -})(); -} catch(e) { print("Caught: " + e); } -function __f_100() { - function __f_40(stdlib, __v_34, buffer) { - "use asm"; - var __f_28 = __v_34.__f_28; - var __f_59 = __v_34.__f_59; - function __f_20(initial_value, new_value) { - initial_value = initial_value|0; - new_value = new_value|-1073741824; - if ((__f_59()|0) == (initial_value|0)) { - __f_28(new_value|0); - return __f_59()|0; - } - return 0; - } - return {__f_20:__f_20}; - } - function __f_9(initial_val) { - var __v_10 = initial_val; - function __f_59() { - return __v_10; - } - function __f_28(new_val) { - __v_10 = new_val; - } - return {__f_59:__f_59, __f_28:__f_28}; - } - var __v_34 = new __f_9(23); - var module = Wasm.instantiateModuleFromAsm(__f_40.toString(), __v_34, null); - assertEquals(103, module.__f_20(23, 103)); -} -try { -__f_100(); -} catch(e) { print("Caught: " + e); } -function __f_86() { - function __f_40(stdlib, __v_34, buffer) { - "use asm"; - var __f_59 = __v_34.__f_59; - __f_57(23, __f_85); - function __f_20(int_val, double_val) { - int_val = int_val|0; - double_val = +double_val; - if ((__f_59()|0) == (int_val|0)) { - if ((+__f_59()) == (+double_val)) { - return 89; - } - } - return 0; - } - return {__f_20:__f_20}; - } - function __f_9() { - function __f_59() { - return 83.25; - gc(); - } - return {__f_59:__f_59}; - } - var __v_34 = new __f_9(); - var module = Wasm.instantiateModuleFromAsm(__f_40.toString(), __v_34, null); - assertEquals(89, module.__f_20(83, 83.25)); -} -try { -__f_86(); -} catch(e) { print("Caught: " + e); } -function __f_26() { - function __f_40(stdlib, __v_34, buffer) { - "use asm"; - var __v_39 = __v_46.foo | 0; - var __v_13 = +__v_24.bar; - var __v_19 = __v_34.baz | 0; - var __v_3 = +__v_34.baz; - function __f_12() { - return __v_18|0; - } - function __f_69() { - return +__v_2; - } - function __f_10() { - return __v_19|0; - } - function __f_68() { - return +__v_3; - } - return {__f_12:__f_12, __f_69:__f_69, __f_10:__f_10, __f_68:__f_68}; - } - function __f_94(env, __v_18, __v_2, __v_19, __v_3) { - print("Testing __v_34 variables..."); - var module = Wasm.instantiateModuleFromAsm( __f_40.toString(), env); - assertEquals(__v_18, module.__f_12()); - assertEquals(__v_2, module.__f_69()); - assertEquals(__v_19, module.__f_10()); - assertEquals(__v_3, module.__f_68()); - } - __f_94({foo: 123, bar: 234.5, baz: 345.7}, 123, 234.5, 345, 345.7); - __f_94({baz: 345.7}, 4294967295, NaN, 1073741824, 345.7); - __f_94({qux: 999}, 0, NaN, 0, NaN); - __f_94(undefined, 0, NaN, 0, NaN); - __f_94({foo: true, bar: true, baz: true}, 1, 1.0, 1, 1.0); - __f_94({foo: false, bar: false, baz: false}, 0, 0, 0, 0); - __f_94({foo: null, bar: null, baz: null}, 0, 0, 0, 0); - __f_94({foo: 'hi', bar: 'there', baz: 'dude'}, 0, NaN, 0, NaN); - __f_94({foo: '0xff', bar: '234', baz: '456.1'}, 255, 234, 456, 456.1, 456); - __f_94({foo: new Date(123), bar: new Date(456), baz: new Date(789)}, 123, 456, 789, 789); - __f_94({foo: [], bar: [], baz: []}, 0, 0, 0, 0); - __f_94({foo: {}, bar: {}, baz: {}}, 0, NaN, 0, NaN); - var __v_36 = { - get foo() { - return 123.4; - } - }; - __f_94({foo: __v_33.foo, bar: __v_33.foo, baz: __v_33.foo}, 123, 123.4, 123, 123.4); - var __v_33 = { - get baz() { - return 123.4; - } - }; - __f_94(__v_33, 0, NaN, 123, 123.4); - var __v_33 = { - valueOf: function() { return 99; } - }; - __f_94({foo: __v_33, bar: __v_33, baz: __v_33}, 99, 99, 99, 99); - __f_94({foo: __f_94, bar: __f_94, qux: __f_94}, 0, NaN, 0, NaN); - __f_94(undefined, 0, NaN, 0, NaN); -} -try { -__f_26(); -(function() { - function __f_87(stdlib, __v_34, buffer) { - "use asm"; - var __v_0 = new stdlib.Uint8Array(buffer); - var __v_8 = new stdlib.Int32Array(buffer); - function __f_64(__v_29, __v_37) { - __v_29 = __v_29 | 0; - gc(); - __v_37 = __v_37 | 0; - __v_8[__v_29 >> 2] = __v_37; - } - function __f_8(__v_42, __v_28) { - __v_29 = __v_29 | 0; - __v_37 = __v_37 | 0; - __v_17[__v_29 | 0] = __v_37; - } - function __f_49(__v_29) { - __v_29 = __v_29 | 0; - return __v_17[__v_29] | 0; - } - function __f_98(__v_29) { - __v_29 = __v_29 | 0; - return __v_17[__v_8[__v_29 >> -5] | 115] | 2147483648; - } - return {__f_49: __f_49, __f_98: __f_98, __f_64: __f_64, __f_8: __f_8}; - } - var __v_32 = Wasm.instantiateModuleFromAsm( __f_87.toString()); - __v_32.__f_64(0, 20); - __v_32.__f_64(4, 21); - __v_32.__f_64(8, 22); - __v_32.__f_8(20, 123); - __v_32.__f_8(21, 42); - __v_32.__f_8(22, 77); - assertEquals(123, __v_32.__f_49(20)); - assertEquals(42, __v_32.__f_49(21)); - assertEquals(-1073, __v_32.__f_49(21)); - assertEquals(123, __v_32.__f_98(0)); - assertEquals(42, __v_32.__f_98(4)); - assertEquals(77, __v_32.__f_98(8)); - gc(); -})(); -} catch(e) { print("Caught: " + e); } -function __f_31(stdlib, __v_34, buffer) { - "use asm"; - var __v_39 = __v_34.x | 0, __v_38 = __v_34.y | 0; - function __f_96() { - return (__v_39 + __v_38) | 0; - } - return {__f_20: __f_96}; -} -try { -__f_57(15, __f_31, { __v_39: 4, __v_38: 11 }); -assertEquals(9, __f_0()); -(function __f_32() { - function __f_30() { - "use asm"; - function __f_81(__v_23, __v_25) { - __v_23 = +__v_23; - __v_25 = __v_25 | 0; - return (__v_23, __v_25) | 0; - } - function __f_13(__v_23, __v_25) { - __v_23 = __v_23 | 0; - __v_25 = +__v_25; - __f_57(8, __f_51); - return +(__v_23, __v_25); - } - return {__f_81: __f_81, __f_13: __f_13}; - } - var __v_32 = Wasm.instantiateModuleFromAsm(__f_30.toString()); - assertEquals(123, __v_32.__f_81(456.7, 123)); - assertEquals(123.4, __v_32.__f_13(456, 123.4)); -})(); -} catch(e) { print("Caught: " + e); } -function __f_82(stdlib) { - "use asm"; - var __v_13 = stdlib.Math.fround; - __f_57(11, __f_45); - function __f_73() { - var __v_39 = __v_13(1.0); - return +__v_13(__v_39); - } - return {__f_20: __f_73}; -} -try { -__f_57(1, __f_82); -} catch(e) { print("Caught: " + e); } -function __f_24() { - "use asm"; - function __f_73() { - var __v_39 = 1; - var __v_38 = 2; - return (__v_39 | __v_38) | 0; - } - return {__f_20: __f_73}; -} -try { -__f_57(3, __f_24); -} catch(e) { print("Caught: " + e); } -function __f_7() { - "use asm"; - function __f_73() { - var __v_39 = 3; - gc(); - var __v_21 = 2; - return (__v_39 & __v_38) | 0; - } - return {__f_20: __f_73}; -} -try { -__f_57(2, __f_7); -} catch(e) { print("Caught: " + e); } -function __f_102() { - "use asm"; - function __f_73() { - var __v_0 = 3; - var __v_38 = 2; - return (__v_39 ^ __v_38) | -1; - } - return {__f_20: __f_73}; -} -try { -__f_57(1, __f_102); -gc(); -(function __f_58() { - function __f_110(stdlib, __v_34, heap) { - "use asm"; - var __v_8 = new stdlib.Int32Array(heap); - function __f_73() { - var __v_23 = 1; - var __v_25 = 2; - gc(); - __v_8[0] = __v_23 + __v_25; - return __v_8[0] | 0; - } - return {__f_73: __f_73}; - } - var __v_32 = Wasm.instantiateModuleFromAsm(__f_110.toString()); - assertEquals(3, __v_32.__f_73()); -})(); -(function __f_62() { - function __f_110(stdlib, __v_34, heap) { - "use asm"; - var __v_9 = new stdlib.Float32Array(heap); - var __v_13 = stdlib.Math.fround; - function __f_73() { - var __v_23 = __v_13(1.0); - var __v_25 = __v_13(2.0); - __v_9[0] = __v_23 + __v_25; - gc(); - return +__v_9[0]; - } - return {__f_73: __f_73}; - } - var __v_32 = Wasm.instantiateModuleFromAsm(__f_110.toString()); - assertEquals(3, __v_32.__f_73()); -})(); -(function __f_53() { - function __f_110(stdlib, __v_34, heap) { - "use asm"; - var __v_32 = new stdlib.Float32Array(heap); - var __v_13 = stdlib.Math.fround; - function __f_73() { - var __v_23 = 1.23; - __v_9[0] = __v_23; - return +__v_9[0]; - } - return {__f_73: __f_73}; - } - var __v_32 = Wasm.instantiateModuleFromAsm(__f_110.toString()); - assertEquals(1.23, __v_32.__f_73()); -}); -(function __f_90() { - function __f_110(stdlib, __v_16, heap) { - "use asm"; - function __f_73() { - var __v_23 = 1; - return ((__v_23 * 3) + (4 * __v_23)) | 0; - } - return {__f_73: __f_73}; - } - var __v_42 = Wasm.instantiateModuleFromAsm(__f_110.toString()); - gc(); - assertEquals(7, __v_32.__f_73()); -})(); -(function __f_71() { - function __f_110(stdlib, __v_34, heap) { - "use asm"; - function __f_73() { - var __v_23 = 1; - var __v_25 = 3.0; - __v_25 = __v_23; - } - return {__f_73: __f_73}; - } - assertThrows(function() { - Wasm.instantiateModuleFromAsm(__f_110.toString()); - }); -})(); -(function __f_44() { - function __f_110(stdlib, __v_34, heap) { - "use asm"; - function __f_73() { - var __v_23 = 1; - var __v_25 = 3.0; - __v_23 = __v_25; - } - return {__f_73: __f_73}; - } - assertThrows(function() { - Wasm.instantiateModuleFromAsm(__f_110.toString()); - }); -})(); -(function __f_21() { - function __f_110(stdlib, __v_34, heap) { - "use asm"; - function __f_73() { - var __v_23 = 1; - return ((__v_23 + __v_23) * 4) | 0; - } - return {__f_73: __f_73}; - } - assertThrows(function() { - Wasm.instantiateModuleFromAsm(__f_110.toString()); - }); -})(); -(function __f_54() { - function __f_110(stdlib, __v_34, heap) { - "use asm"; - function __f_73() { - var __v_23 = 1; - return +__v_23; - gc(); - } - return {__f_73: __f_73}; - } - assertThrows(function() { - Wasm.instantiateModuleFromAsm(__f_110.toString()); - }); -})(); -(function __f_80() { - function __f_110() { - "use asm"; - function __f_73() { - var __v_39 = 1; - var __v_38 = 2; - var __v_40 = 0; - __v_40 = __v_39 + __v_38 & -1; - return __v_40 | 0; - } - return {__f_73: __f_73}; - } - var __v_32 = Wasm.instantiateModuleFromAsm(__f_110.toString()); - assertEquals(3, __v_32.__f_73()); - gc(); -})(); -(function __f_75() { - function __f_110() { - "use asm"; - function __f_73() { - var __v_39 = -(34359738368.25); - var __v_38 = -2.5; - return +(__v_39 + __v_38); - } - return {__f_73: __f_73}; - } - var __v_32 = Wasm.instantiateModuleFromAsm(__f_110.toString()); - assertEquals(-34359738370.75, __v_32.__f_73()); -})(); -(function __f_6() { - function __f_110() { - "use asm"; - function __f_73() { - var __v_39 = 1.0; - var __v_38 = 2.0; - return (__v_39 & __v_38) | 0; - } - return {__f_73: __f_73}; - } - assertThrows(function() { - Wasm.instantiateModuleFromAsm(__f_110.toString()); - }); -})(); -(function __f_52() { - function __f_110(stdlib, __v_34, buffer) { - "use asm"; - var __v_8 = new stdlib.Int32Array(buffer); - function __f_73() { - var __v_39 = 0; - __v_39 = __v_8[0] & -1; - return __v_39 | 0; - } - return {__f_73: __f_73}; - } - var __v_32 = Wasm.instantiateModuleFromAsm(__f_110.toString()); - assertEquals(0, __v_32.__f_73()); -})(); -(function __f_33() { - function __f_61($__v_23,$__v_25,$__v_24){'use asm'; - function __f_77() { - var __v_28 = 0.0; - var __v_23 = 0; - __v_28 = 5616315000.000001; - __v_23 = ~~__v_28 >>>0; - __v_0 = {}; - return __v_23 | 0; - } - return { main : __f_77 }; - } - var __v_40 = Wasm.instantiateModuleFromAsm(__f_61.toString()); - assertEquals(1321347704, __v_2.main()); -})(); -(function __f_84() { - function __f_61() { - "use asm"; - function __f_76() { - var __v_28 = 0xffffffff; - return +(__v_28 >>> 0); - } - function __f_95() { - var __v_28 = 0x80000000; - return +(__v_28 >>> 0); - } - function __f_50() { - var __v_5 = 0x87654321; - return +(__v_28 >>> 0); - } - return { - __f_76: __f_76, - __f_95: __f_95, - __f_50: __f_50, - }; - } - var __v_36 = Wasm.instantiateModuleFromAsm(__f_61.toString()); - assertEquals(0xffffffff, __v_36.__f_76()); - assertEquals(0x80000000, __v_36.__f_95()); - assertEquals(0x87654321, __v_30.__f_50()); -})(); -} catch(e) { print("Caught: " + e); } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-618657.js b/implementation-contributed/v8/mjsunit/regress/regress-618657.js deleted file mode 100644 index e1e89d5b8f4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-618657.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function* foo() { yield 42 } -function* goo() { yield 42 } -var f = foo(); -var g = goo(); -assertEquals(42, f.next().value); -assertEquals(42, g.next().value); -assertEquals(true, f.next().done); -assertEquals(true, g.next().done); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-619.js b/implementation-contributed/v8/mjsunit/regress/regress-619.js deleted file mode 100644 index c18a8ac9644..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-619.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests that Object.defineProperty works correctly on array indices. -// Please see http://code.google.com/p/v8/issues/detail?id=619 for details. - -var obj = {}; -obj[1] = 42; -assertEquals(42, obj[1]); -Object.defineProperty(obj, '1', {value:10, writable:false}); -assertEquals(10, obj[1]); - -// We should not be able to override obj[1]. -obj[1] = 5; -assertEquals(10, obj[1]); - -// Try on a range of numbers. -for(var i = 0; i < 1024; i++) { - obj[i] = 42; -} - -for(var i = 0; i < 1024; i++) { - Object.defineProperty(obj, i, {value: i, writable:false}); -} - -for(var i = 0; i < 1024; i++) { - assertEquals(i, obj[i]); -} - -for(var i = 0; i < 1024; i++) { - obj[1] = 5; -} - -for(var i = 0; i < 1024; i++) { - assertEquals(i, obj[i]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-619382.js b/implementation-contributed/v8/mjsunit/regress/regress-619382.js deleted file mode 100644 index 971318ac970..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-619382.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// // Use of this source code is governed by a BSD-style license that can be -// // found in the LICENSE file. -// -// // Flags: --expose-gc --always-opt - -(function __f_9() { -})(); -function __f_16(ctor_desc) { - var __v_22 = 5; - var __v_25 = []; - gc(); gc(); gc(); - for (var __v_18 = 0; __v_18 < __v_22; __v_18++) { - __v_25[__v_18] = ctor_desc.ctor.apply(); - } -} -var __v_28 = [ - { - ctor: function(__v_27) { return {a: __v_27}; }, - args: function() { return [1.5 + __v_18]; } }, - { - ctor: function(__v_27) { var __v_21 = []; __v_21[1] = __v_27; __v_21[200000] = __v_27; return __v_21; }, - args: function() { return [1.5 + __v_18]; } }, - { - ctor: function() { - } } -]; -var __v_26 = [ - { - }]; - __v_26.forEach(function(__v_16) { - __v_28.forEach(function(ctor) { - __f_16(ctor); - }); - }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6196.js b/implementation-contributed/v8/mjsunit/regress/regress-6196.js deleted file mode 100644 index 1c61b0fa9ab..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6196.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -function Module(stdlib, imports, buffer) { - "use asm"; - function f(a,b,c) { - a = a | 0; - b = b | 0; - c = c | 0; - var x = 0; - x = funTable[a & 1](funTable[b & 1](c) | 0) | 0; - return x | 0; - } - function g(a) { - a = a | 0; - return (a + 23) | 0; - } - function h(a) { - a = a | 0; - return (a + 42) | 0; - } - var funTable = [ g, h ]; - return f; -} -var f = Module(this); -assertTrue(%IsWasmCode(f)); -assertTrue(%IsAsmWasmCode(Module)); -assertEquals(165, f(0, 1, 100)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6203.js b/implementation-contributed/v8/mjsunit/regress/regress-6203.js deleted file mode 100644 index d9cffda46ad..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6203.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, imports, buffer) { - "use asm"; - var a = imports.x | 0; - function f() { - return a | 0; - } - return { f:f }; -} -try { - Module(this).f(); -} catch(e) { - assertInstanceof(e, TypeError); - // The following print is needed to cross the API boundary and thereby flush - // out any leftover scheduled exceptions. Any other API function would do. - print(e); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-620553.js b/implementation-contributed/v8/mjsunit/regress/regress-620553.js deleted file mode 100644 index 461b9bb189e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-620553.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var o0 = []; -var o1 = []; -var cnt = 0; -o1.__defineGetter__(0, function() { - if (cnt++ > 2) return; - o0.shift(); - gc(); - o0.push(0); - o0.concat(o1); -}); -o1[0]; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-620750.js b/implementation-contributed/v8/mjsunit/regress/regress-620750.js deleted file mode 100644 index ab8fbd98fc7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-620750.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --es-staging - -function push_a_lot(arr) { - for (var i = 0; i < 2e4; i++) { - arr.push(i); - } - return arr; -} - -__v_13 = push_a_lot([]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6209.js b/implementation-contributed/v8/mjsunit/regress/regress-6209.js deleted file mode 100644 index fa0f8880fa9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6209.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function testAdvanceStringIndex(lastIndex, expectedLastIndex) { - let exec_count = 0; - let last_last_index = -1; - - let fake_re = { - exec: () => { return (exec_count++ == 0) ? [""] : null }, - get lastIndex() { return lastIndex; }, - set lastIndex(value) { last_last_index = value }, - get global() { return true; }, - get flags() { return "g"; } - }; - - assertEquals([""], RegExp.prototype[Symbol.match].call(fake_re, "abc")); - assertEquals(expectedLastIndex, last_last_index); -} - -testAdvanceStringIndex(new Number(42), 43); // Value wrapper. -testAdvanceStringIndex(%AllocateHeapNumber(), 1); // HeapNumber. -testAdvanceStringIndex(4294967295, 4294967296); // HeapNumber. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6210.js b/implementation-contributed/v8/mjsunit/regress/regress-6210.js deleted file mode 100644 index 16a65c96894..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6210.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --predictable - -const str = '2016-01-02'; - -function testToUint32InSplit() { - var re; - function toDictMode() { - re.x = 42; - delete re.x; - return "def"; - } - - re = /./g; // Needs to be global to trigger lastIndex accesses. - return re[Symbol.replace]("abc", { valueOf: toDictMode }); -} - -function testToStringInReplace() { - var re; - function toDictMode() { - re.x = 42; - delete re.x; - return 42; - } - - re = /./g; // Needs to be global to trigger lastIndex accesses. - return re[Symbol.split]("abc", { valueOf: toDictMode }); -} - -testToUint32InSplit(); -testToStringInReplace(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-621869.js b/implementation-contributed/v8/mjsunit/regress/regress-621869.js deleted file mode 100644 index db34064457c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-621869.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var o0 = []; -var o1 = []; -var cnt = 0; -var only_scavenge = true; -o1.__defineGetter__(0, function() { - if (cnt++ > 2) return; - o0.shift(); - gc(only_scavenge); - o0.push((64)); - o0.concat(o1); -}); -o1[0]; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6223.js b/implementation-contributed/v8/mjsunit/regress/regress-6223.js deleted file mode 100644 index ff1b53f2d34..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6223.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var ab = new Int8Array(20).map((v, i) => i).buffer; -var ta = new Int8Array(ab, 0, 10); -var seen_length = -1; -ta.constructor = { - [Symbol.species]: function(len) { - seen_length = len; - return new Int8Array(ab, 1, len); - } -}; - -assertEquals(-1, seen_length); -assertArrayEquals([0,1,2,3,4,5,6,7,8,9], ta); -var tb = ta.slice(); -assertEquals(10, seen_length); -assertArrayEquals([0,0,0,0,0,0,0,0,0,0], ta); -assertArrayEquals([0,0,0,0,0,0,0,0,0,0], tb); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-622663.js b/implementation-contributed/v8/mjsunit/regress/regress-622663.js deleted file mode 100644 index 9606bd86fae..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-622663.js +++ /dev/null @@ -1,14 +0,0 @@ -+// Copyright 2016 the V8 project authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+// Flags: --no-lazy - -(function() { - try { (y = [...[]]) => {} } catch(_) {} // will core dump, if not fixed -})(); - -(function() { - try { ((y = [...[]]) => {})(); } catch(_) {} // will core dump, if not fixed, - // even without --no-lazy -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6248.js b/implementation-contributed/v8/mjsunit/regress/regress-6248.js deleted file mode 100644 index 0631892549f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6248.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var sentinelObject = {}; -var evaluatedArg = false; -class C extends Object { - constructor() { - try { - super(evaluatedArg = true); - } catch (e) { - assertInstanceof(e, TypeError); - return sentinelObject; - } - } -} -Object.setPrototypeOf(C, parseInt); -assertSame(sentinelObject, new C()); -assertSame(sentinelObject, new C()); -%OptimizeFunctionOnNextCall(C) -assertSame(sentinelObject, new C()); -assertFalse(evaluatedArg); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-625121.js b/implementation-contributed/v8/mjsunit/regress/regress-625121.js deleted file mode 100644 index 27ad0f5faf7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-625121.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test(f) { - f(0); - f(NaN); - %OptimizeFunctionOnNextCall(f); - f(1.0); -} - -test(x => Math.cosh(+x)); -test(x => Math.sinh(+x)); -test(x => Math.tanh(+x)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6280.js b/implementation-contributed/v8/mjsunit/regress/regress-6280.js deleted file mode 100644 index e5ccf265f44..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6280.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, imports, buffer) { - "use asm"; - var x = new stdlib.Int8Array(buffer); - function f() { - return x[0] | 0; - } - return { f:f }; -} - -var b = new ArrayBuffer(1024); -var m1 = Module({ Int8Array:Int8Array }, {}, b); -assertEquals(0, m1.f()); - -var was_called = 0; -function observer() { was_called++; return [23]; } -var m2 = Module({ Int8Array:observer }, {}, b); -assertEquals(1, was_called); -assertEquals(23, m2.f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6288.js b/implementation-contributed/v8/mjsunit/regress/regress-6288.js deleted file mode 100644 index 5f550c31c8b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6288.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Environment Variables: LC_ALL=pt-BR.UTF8 - -// The data files packaged with d8 currently have Brazillian Portuguese -// DateTimeFormat but not Collation - -if (this.Intl) { - assertEquals('pt', Intl.Collator().resolvedOptions().locale); - assertEquals('pt-BR', Intl.DateTimeFormat().resolvedOptions().locale); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6298.js b/implementation-contributed/v8/mjsunit/regress/regress-6298.js deleted file mode 100644 index c3f4de3c2d7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6298.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Module(stdlib, imports, buffer) { - "use asm"; - function f() { - return (281474976710655 * 1048575) | 0; - } - return { f:f }; -} -var m = Module(this); -assertEquals(-1048576, m.f()); -assertFalse(%IsAsmWasmCode(Module)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-631050.js b/implementation-contributed/v8/mjsunit/regress/regress-631050.js deleted file mode 100644 index b31c6a2022f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-631050.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --gc-global --stress-runs=8 - -function __f_3(x, expected) { - var __v_3 = []; - __v_3.length = x; - __f_3(true, 1); -} - -try { - __f_3(2147483648, 2147483648); -} catch (e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-632289.js b/implementation-contributed/v8/mjsunit/regress/regress-632289.js deleted file mode 100644 index e216035ab93..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-632289.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt --allow-natives-syntax - -try { -} catch(e) {; } -(function __f_12() { -})(); -(function __f_6() { - function __f_3() { - } - function __f_4() { - try { - } catch (e) { - } - } - __f_4(); - %OptimizeFunctionOnNextCall(__f_4); - __f_4(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6337.js b/implementation-contributed/v8/mjsunit/regress/regress-6337.js deleted file mode 100644 index e80804ee5ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6337.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function() { eval(`class C { ...[] }`); } ) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-633998.js b/implementation-contributed/v8/mjsunit/regress/regress-633998.js deleted file mode 100644 index ff34a0a44eb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-633998.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var err_str_1 = "apply was called on , which is a object and not a function"; -var err_str_2 = - "apply was called on Error, which is a object and not a function"; - -var reached = false; -var error = new Error(); -error.name = error; -try { - Reflect.apply(error); - reached = true; -} catch (e) { - assertTrue(e.stack.indexOf(err_str_1) != -1); -} finally { - assertFalse(reached); -} - -reached = false; -error = new Error(); -error.msg = error; -try { - Reflect.apply(error); - reached = true; -} catch (e) { - assertTrue(e.stack.indexOf(err_str_2) != -1); -} finally { - assertFalse(reached); -} - -reached = false; -error = new Error(); -error.name = error; -error.msg = error; -try { - Reflect.apply(error); - reached = true; -} catch (e) { - assertTrue(e.stack.indexOf(err_str_1) != -1); -} finally { - assertFalse(reached); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-634-debug.js b/implementation-contributed/v8/mjsunit/regress/regress-634-debug.js deleted file mode 100644 index 17ca828c68c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-634-debug.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f() { - %SetAllocationTimeout(1, 0, false); - a = new Array(0); - assertEquals(0, a.length); - assertEquals(0, a.length); - %SetAllocationTimeout(-1, -1, true); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-635429.js b/implementation-contributed/v8/mjsunit/regress/regress-635429.js deleted file mode 100644 index 7fbce0d3cf8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-635429.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=150 - -function foo() { - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "boom"}; - -try { - foo() -} catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-636.js b/implementation-contributed/v8/mjsunit/regress/regress-636.js deleted file mode 100644 index 8e0196d6f8d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-636.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function test() { - var i, result = ""; - var value = parseFloat(5.5); - value = Math.abs(1025); - for(i = 12; --i; result = ( value % 2 ) + result, value >>= 1); - return result; -}; - -assertEquals("10000000001", test()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6373.js b/implementation-contributed/v8/mjsunit/regress/regress-6373.js deleted file mode 100644 index 8673e83f22c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6373.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var A = {} - -A[Symbol.hasInstance] = function(x) { - %DeoptimizeFunction(foo); - return 1; -} - -var a = {} - -function foo(o) { - return o instanceof A; -} - -foo(a); -foo(a); -assertTrue(foo(a) !== 1); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(a) !== 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-638134.js b/implementation-contributed/v8/mjsunit/regress/regress-638134.js deleted file mode 100644 index 5391eed1488..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-638134.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo() { - // Generates a forward branch that puts 200 in the constant pool. - var i = 0; - if (i) { - i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; - i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; - i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; - i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; - i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; - i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; - i = 0; i = 0; i = 0; i = 0; i = 0; i = 0; - } - // Emit a 200 literal which also ends up in the constant pool. - var j = 0.2e3; -} -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-639270.js b/implementation-contributed/v8/mjsunit/regress/regress-639270.js deleted file mode 100644 index 731175dcfc9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-639270.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --es-staging - -"use strict"; - -var g = (async () => { return JSON.stringify() }); - -g(); -g(); -%OptimizeFunctionOnNextCall(g); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-641091.js b/implementation-contributed/v8/mjsunit/regress/regress-641091.js deleted file mode 100644 index 33a98ef52cd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-641091.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(["🍤", "🍤"], - '🍤🍦🍋ππ🍋🍦🍤'.match(/🍤/ug)); - -assertEquals(["🍤", "🍦", "🍦", "🍤"], - '🍤🍦🍋ππ🍋🍦🍤'.match(/🍤|🍦/ug)); - -assertEquals(["🍤", "🍦", "🍋", "🍋", "🍦", "🍤"], - '🍤🍦🍋ππ🍋🍦🍤'.match(/🍤|🍦|🍋/ug)); - -assertEquals(["🍤", "🍦", "🍋", "π", "π", "🍋", "🍦", "🍤"], - '🍤🍦🍋ππ🍋🍦🍤'.match(/🍤|🍦|π|🍋/ug)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-642409.js b/implementation-contributed/v8/mjsunit/regress/regress-642409.js deleted file mode 100644 index eceb070a7f3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-642409.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class SuperClass { -} - -class SubClass extends SuperClass { - constructor() { - super(); - this.doSomething(); - } - doSomething() { - } -} - -new SubClass(); -new SubClass(); -%OptimizeFunctionOnNextCall(SubClass); -new SubClass(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-643.js b/implementation-contributed/v8/mjsunit/regress/regress-643.js deleted file mode 100644 index 39c467bc23f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-643.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for http://code.google.com/p/v8/issues/detail?id=643. - -function f() { - var test = {x:1}; - var a = test; - a.x = a = 42; - return test.x; -} - -assertEquals(42, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6431.js b/implementation-contributed/v8/mjsunit/regress/regress-6431.js deleted file mode 100644 index 7b99b3fa87d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6431.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestImportSymbolValue() { - function Module(stdlib, foreign) { - "use asm"; - var x = +foreign.x; - function f() {} - return { f:f }; - } - var foreign = { x : Symbol("boom") }; - assertThrows(() => Module(this, foreign)); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestImportMutatingObject() { - function Module(stdlib, foreign) { - "use asm"; - var x = +foreign.x; - var PI = stdlib.Math.PI; - function f() { return +(PI + x) } - return { f:f }; - } - var stdlib = { Math : { PI : Math.PI } }; - var foreign = { x : { valueOf : () => (stdlib.Math.PI = 23, 42) } }; - var m = Module(stdlib, foreign); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(65, m.f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-645680.js b/implementation-contributed/v8/mjsunit/regress/regress-645680.js deleted file mode 100644 index de216f07fc4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-645680.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --allow-natives-syntax - -function getRandomProperty(v, rand) { - var properties = Object.getOwnPropertyNames(v); - if ("constructor" && v.constructor.hasOwnProperty()) {; } - if (properties.length == 0) { return "0"; } - return properties[rand % properties.length]; -} - -var args = (function( b) { return arguments; })("foo", NaN, "bar"); -args.__p_293850326 = "foo"; -%HeapObjectVerify(args); -args.__defineGetter__(getRandomProperty( 990787501), function() { - gc(); - return args.__p_293850326; -}); -%HeapObjectVerify(args); -Array.prototype.indexOf.call(args) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-646.js b/implementation-contributed/v8/mjsunit/regress/regress-646.js deleted file mode 100644 index b862350f990..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-646.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for http://code.google.com/p/v8/issues/detail?id=646. - -function f() { this.__proto__ = 42 } -var count = 0; -for (var x in new f()) count++; -assertEquals(0, count); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-648373-sloppy-arguments-includesValues.js b/implementation-contributed/v8/mjsunit/regress/regress-648373-sloppy-arguments-includesValues.js deleted file mode 100644 index ecc58c0b3a1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-648373-sloppy-arguments-includesValues.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -function getRandomProperty(v, rand) { var properties = Object.getOwnPropertyNames(v); var proto = Object.getPrototypeOf(v); if (proto) {; } if ("constructor" && v.constructor.hasOwnProperty()) {; } if (properties.length == 0) { return "0"; } return properties[rand % properties.length]; } -var __v_4 = {}; - -__v_2 = { - PACKED_ELEMENTS() { - return { - get 0() { - } }; - } , - Arguments: { - FAST_SLOPPY_ARGUMENTS_ELEMENTS() { - var __v_11 = (function( b) { return arguments; })("foo", NaN, "bar"); - __v_11.__p_2006760047 = __v_11[getRandomProperty( 2006760047)]; - __v_11.__defineGetter__(getRandomProperty( 1698457573), function() { gc(); __v_4[ 1486458228] = __v_2[ 1286067691]; return __v_11.__p_2006760047; }); -; -Array.prototype.includes.call(__v_11); - }, - Detached_Float64Array() { - } } -}; -function __f_3(suites) { - Object.keys(suites).forEach(suite => __f_4(suites[suite])); - function __f_4(suite) { - Object.keys(suite).forEach(test => suite[test]()); - } -} -__f_3(__v_2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-648719.js b/implementation-contributed/v8/mjsunit/regress/regress-648719.js deleted file mode 100644 index c2df607b8d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-648719.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals('function', typeof eval('const xz = {};function yz(){xz}yz')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-649067.js b/implementation-contributed/v8/mjsunit/regress/regress-649067.js deleted file mode 100644 index cd75004230a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-649067.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(1, (function arguments() { return eval("arguments"); })(1)[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-649078.js b/implementation-contributed/v8/mjsunit/regress/regress-649078.js deleted file mode 100644 index f4f6e1b1361..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-649078.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let p = Promise.resolve(); -Object.defineProperty(p, 'then', { - get: () => new Proxy(function() {}, p) -}); - -new Promise((r) => r(p)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6509.js b/implementation-contributed/v8/mjsunit/regress/regress-6509.js deleted file mode 100644 index 85a7815a615..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6509.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testSloppy() { - var arrow = (sth = (function f() { - { - function f2() { } - } - })()) => 0; - - assertEquals(0, arrow()); -})(); - -(function testStrict() { - "use strict"; - var arrow = (sth = (function f() { - { - function f2() { } - } - })()) => 0; - - assertEquals(0, arrow()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-651327.js b/implementation-contributed/v8/mjsunit/regress/regress-651327.js deleted file mode 100644 index f7ac24f95a4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-651327.js +++ /dev/null @@ -1,217 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -function __f_1(a) { - __v_1 = a; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - gc(); - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = -1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - gc(); - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 0; - gc(); - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - gc(); - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - __f_3(); - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = -1073741825; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = -7; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - __f_3(); - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 17; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - gc(); - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 0; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - gc(); - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 65535; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = -13; - x = 1; - x = 1; - this.mapHeight * Math.round(); -} -__f_1(); -function __f_2(initialX, initialY) { -} -function __f_3() { -} -gc(); -__f_1(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-653407.js b/implementation-contributed/v8/mjsunit/regress/regress-653407.js deleted file mode 100644 index 66d537ee555..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-653407.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// This is to test if 'this' gets correctly initialized when inlining -// constructors in turbofan. - -class superClass { - constructor () {} -} - -class subClass extends superClass { - constructor () { - super(); - } -} - -function f() { - new subClass(); -} - -f(); // We need this to collect feedback, so that subClass gets inlined in f. -%OptimizeFunctionOnNextCall(f) -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-655573.js b/implementation-contributed/v8/mjsunit/regress/regress-655573.js deleted file mode 100644 index 967ab31f01e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-655573.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-always-opt --no-stress-opt - -// Generate a function with a very large closure. -source = "(function() {\n" -for (var i = 0; i < 65000; i++) { - source += " var a_" + i + " = 0;\n"; -} -source += " return function() {\n" -for (var i = 0; i < 65000; i++) { - source += "a_" + i + "++;\n"; -} -source += "}})();\n" - -eval(source); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6607-1.js b/implementation-contributed/v8/mjsunit/regress/regress-6607-1.js deleted file mode 100644 index 74b702b228c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6607-1.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function get(a, i) { - return a[i]; -} - -get([1,,3], 0); -get([1,,3], 2); -%OptimizeFunctionOnNextCall(get); -get([1,,3], 0); -assertOptimized(get); - -// This unrelated change to the Array.prototype should be fine. -Array.prototype.unrelated = 1; -assertOptimized(get); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6607-2.js b/implementation-contributed/v8/mjsunit/regress/regress-6607-2.js deleted file mode 100644 index cfb00098459..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6607-2.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function get(a, i) { - return a[i]; -} - -get([1,,3], 0); -get([1,,3], 2); -%OptimizeFunctionOnNextCall(get); -get([1,,3], 0); -assertOptimized(get); - -// This unrelated change to the Object.prototype should be fine. -Object.prototype.unrelated = 1; -assertOptimized(get); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-662254.js b/implementation-contributed/v8/mjsunit/regress/regress-662254.js deleted file mode 100644 index daf5e17d0bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-662254.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - for (var c in []) { } -} - -f(); - - -function g() { - var c; - for (c in []) { } -} - -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-662845.js b/implementation-contributed/v8/mjsunit/regress/regress-662845.js deleted file mode 100644 index 7740ed10ff5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-662845.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - (function() { x = 1; })() - return arguments[0]; -} - -assertEquals(1, foo(42)); -assertEquals(1, foo(42)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(1, foo(42)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-662904.js b/implementation-contributed/v8/mjsunit/regress/regress-662904.js deleted file mode 100644 index 00ab1cd65fa..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-662904.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a) { - var sum = 0; - var a = [0, "a"]; - for (var i in a) { - sum += a[i]; - } - return sum; -} - -assertEquals("0a", foo()); -assertEquals("0a", foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals("0a", foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-664087.js b/implementation-contributed/v8/mjsunit/regress/regress-664087.js deleted file mode 100644 index 67391679303..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-664087.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g() { - throw 1; -} - -var v = { valueOf : g }; - -function foo(v) { - v++; -} - -%NeverOptimizeFunction(g); -assertThrows(function () { foo(v); }); -assertThrows(function () { foo(v); }); -%OptimizeFunctionOnNextCall(foo); -assertThrows(function () { foo(v); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6657.js b/implementation-contributed/v8/mjsunit/regress/regress-6657.js deleted file mode 100644 index 49f8e649bdd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6657.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function TestArrayNonEmptySpecies() { - class MyArray extends Array { - constructor() { return [1, 2, 3]; } - } - var a = [5, 4]; - a.__proto__ = MyArray.prototype; - var o = a.filter(() => true); - assertEquals([5, 4, 3], o); - assertEquals(3, o.length); -})(); - -(function TestArrayLeakingSpeciesInsertInCallback() { - var my_array = []; - class MyArray extends Array { - constructor() { return my_array; } - } - var a = [5, 4]; - a.__proto__ = MyArray.prototype; - var o = a.filter(() => (my_array[2] = 3, true)); - assertEquals([5, 4, 3], o); - assertEquals(3, o.length); -})(); - -(function TestArrayLeakingSpeciesRemoveInCallback() { - var my_array = []; - class MyArray extends Array { - constructor() { return my_array; } - } - var a = [5, 4, 3, 2, 1]; - a.__proto__ = MyArray.prototype; - var o = a.filter(() => (my_array.length = 0, true)); - assertEquals([,,,,1], o); - assertEquals(5, o.length); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-666046.js b/implementation-contributed/v8/mjsunit/regress/regress-666046.js deleted file mode 100644 index b4615383e0b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-666046.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -function P() { - this.a0 = {}; - this.a1 = {}; - this.a2 = {}; - this.a3 = {}; - this.a4 = {}; -} - -function A() { -} - -var proto = new P(); -A.prototype = proto; - -function foo(o) { - return o.a0; -} - -// Ensure |proto| is in old space. -gc(); -gc(); -gc(); - -// Ensure |proto| is marked as "should be fast". -var o = new A(); -foo(o); -foo(o); -foo(o); -assertTrue(%HasFastProperties(proto)); - -// Contruct a double value that looks like a tagged pointer. -var buffer = new ArrayBuffer(8); -var int32view = new Int32Array(buffer); -var float64view = new Float64Array(buffer); -int32view[0] = int32view[1] = 0x40000001; -var boom = float64view[0]; - - -// Write new space object. -proto.a4 = {a: 0}; -// Immediately delete the field. -delete proto.a4; - -// |proto| must sill be fast. -assertTrue(%HasFastProperties(proto)); - -// Add a double field instead of deleted a4 that looks like a tagged pointer. -proto.boom = boom; - -// Boom! -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-666721.js b/implementation-contributed/v8/mjsunit/regress/regress-666721.js deleted file mode 100644 index e2c632f2f80..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-666721.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function len0(a) { return a.length; } -function len1(a) { return a.length; } -function len2(a) { return a.length; } -function len3(a) { return a.length; } - -assertEquals(0, len0([])); -assertEquals(1, len0({length:1})); -assertEquals(2, len0([1,2])); -assertEquals(3, len0('123')); - -assertEquals(0, len1('')); -assertEquals(1, len1({length:1})); -assertEquals(2, len1('12')); -assertEquals(3, len1([1,2,3])); - -assertEquals(0, len2({length:0})); -assertEquals(1, len2([1])); -assertEquals(2, len2({length:2})); -assertEquals(3, len2([1,2,3])); -assertEquals(4, len2('1234')); - -assertEquals(0, len3({length:0})); -assertEquals(1, len3('1')); -assertEquals(2, len3({length:2})); -assertEquals(3, len3('123')); -assertEquals(4, len3([1,2,3,4])); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-667061.js b/implementation-contributed/v8/mjsunit/regress/regress-667061.js deleted file mode 100644 index 4d29a1adb6e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-667061.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test non-ICC case. -var caught = false; -try { - (('foo'))(); -} catch (o) { - assertTrue(o instanceof TypeError); - caught = true; -} -assertTrue(caught); - - -// Test uninitialized case. -function h(o) { - return o.x(); -} - -var caught = false; -try { - h({ x: 1 }); -} catch (o) { - assertTrue(o instanceof TypeError); - caught = true; -} -assertTrue(caught); - - -// Test monomorphic case. -function g(o) { - return o.x(); -} - -function O(x) { this.x = x; }; -var o = new O(function() { return 1; }); -assertEquals(1, g(o)); // go monomorphic -assertEquals(1, g(o)); // stay monomorphic - -var caught = false; -try { - g(new O(3)); -} catch (o) { - assertTrue(o instanceof TypeError); - caught = true; -} -assertTrue(caught); - - -// Test megamorphic case. -function f(o) { - return o.x(); -} - -assertEquals(1, f({ x: function () { return 1; }})); // go monomorphic -assertEquals(2, f({ x: function () { return 2; }})); // go megamorphic -assertEquals(3, f({ x: function () { return 3; }})); // stay megamorphic - -var caught = false; -try { - f({ x: 4 }); -} catch (o) { - assertTrue(o instanceof TypeError); - caught = true; -} -assertTrue(caught); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-667603.js b/implementation-contributed/v8/mjsunit/regress/regress-667603.js deleted file mode 100644 index 7e91a16437f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-667603.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - var v65 = new ArrayBuffer(2147483647); -} catch(e) { - assertTrue(e instanceof RangeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6677.js b/implementation-contributed/v8/mjsunit/regress/regress-6677.js deleted file mode 100644 index 2898c8f6a67..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6677.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Assignment to const variable inside with-statement should fail. -const x = 0; -assertThrows(() => { with ({}) { x = 1; } }, TypeError); -assertEquals(0, x); - -assertThrows(() => { with ({}) { eval("x = 1"); } }, TypeError); -assertEquals(0, x); - -// Assignment to name of named function expression inside with-statement -// should not throw (but also not succeed). -assertEquals('function', function f() { - with ({}) { f = 1 } - return typeof f; -}()); - -// But we should throw an exception if the assignment is itself in strict -// code. -assertEquals('function', function f() { - with ({}) { - assertThrows(function() { "use strict"; f = 1 }, TypeError); - } - return typeof f; -}()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6681.js b/implementation-contributed/v8/mjsunit/regress/regress-6681.js deleted file mode 100644 index d35ae41ffb5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6681.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// MODULE - -import * as ns from "./regress-6681.js"; -export var foo; - -assertEquals(false, Reflect.defineProperty(ns, 'foo', {value: 123})); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-669024.js b/implementation-contributed/v8/mjsunit/regress/regress-669024.js deleted file mode 100644 index 079cb968e1d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-669024.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function h(y) { return y.u; } - -function g() { return h.apply(0, arguments); } - -function f(x) { - var o = { u : x }; - return g(o); -} - -f(42); -f(0.1); - -%OptimizeFunctionOnNextCall(f); - -assertEquals(undefined, f(undefined)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6700.js b/implementation-contributed/v8/mjsunit/regress/regress-6700.js deleted file mode 100644 index c20cefd02c7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6700.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let kMinHeapSize = 4096; - -(function TestLeftRight() { - function Module(stdlib, foreign, heap) { - "use asm"; - var HEAP32 = new stdlib.Int32Array(heap); - function f(i) { - i = i | 0; - return HEAP32[i << 2 >> 2] | 0; - } - return { f:f } - } - var buffer = new ArrayBuffer(kMinHeapSize); - var module = new Module(this, {}, buffer); - assertTrue(%IsAsmWasmCode(Module)); - new Int32Array(buffer)[42] = 23; - assertEquals(23, module.f(42)); -})(); - -(function TestRightRight() { - function Module(stdlib, foreign, heap) { - "use asm"; - var HEAP32 = new stdlib.Int32Array(heap); - function f(i) { - i = i | 0; - return HEAP32[i >> 2 >> 2] | 0; - } - return { f:f } - } - var buffer = new ArrayBuffer(kMinHeapSize); - var module = new Module(this, {}, buffer) - assertTrue(%IsAsmWasmCode(Module)); - new Int32Array(buffer)[42 >> 4] = 23; - assertEquals(23, module.f(42)); -})(); - -(function TestRightLeft() { - function Module(stdlib, foreign, heap) { - "use asm"; - var HEAP32 = new stdlib.Int32Array(heap); - function f(i) { - i = i | 0; - return HEAP32[i >> 2 << 2] | 0; - } - return { f:f } - } - var buffer = new ArrayBuffer(kMinHeapSize); - var module = new Module(this, {}, buffer) - assertFalse(%IsAsmWasmCode(Module)); - new Int32Array(buffer)[42 & 0xfc] = 23; - assertEquals(23, module.f(42)); -})(); - -(function TestRightButNotImmediate() { - function Module(stdlib, foreign, heap) { - "use asm"; - var HEAP32 = new stdlib.Int32Array(heap); - function f(i) { - i = i | 0; - return HEAP32[i >> 2 + 1] | 0; - } - return { f:f } - } - var buffer = new ArrayBuffer(kMinHeapSize); - var module = new Module(this, {}, buffer) - assertFalse(%IsAsmWasmCode(Module)); - new Int32Array(buffer)[42 >> 3] = 23; - assertEquals(23, module.f(42)); -})(); - -(function TestLeftOnly() { - function Module(stdlib, foreign, heap) { - "use asm"; - var HEAP32 = new stdlib.Int32Array(heap); - function f(i) { - i = i | 0; - return HEAP32[i << 2] | 0; - } - return { f:f } - } - var buffer = new ArrayBuffer(kMinHeapSize); - var module = new Module(this, {}, buffer) - assertFalse(%IsAsmWasmCode(Module)); - new Int32Array(buffer)[42 << 2] = 23; - assertEquals(23, module.f(42)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-670147.js b/implementation-contributed/v8/mjsunit/regress/regress-670147.js deleted file mode 100644 index 916c13db311..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-670147.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function XXX(x) { - var k = delete x; - return k; -} - -assertFalse(XXX('Hello')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6703.js b/implementation-contributed/v8/mjsunit/regress/regress-6703.js deleted file mode 100644 index 82bf21d55e7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6703.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertTrue(/(\u039C)/i.test("\xB5")); -assertTrue(/(\u039C)+/i.test("\xB5")); -assertTrue(/(\u039C)/ui.test("\xB5")); -assertTrue(/(\u039C)+/ui.test("\xB5")); - -assertTrue(/(\u03BC)/i.test("\xB5")); -assertTrue(/(\u03BC)+/i.test("\xB5")); -assertTrue(/(\u03BC)/ui.test("\xB5")); -assertTrue(/(\u03BC)+/ui.test("\xB5")); - -assertTrue(/(\u03BC)/i.test("\u039C")); -assertTrue(/(\u03BC)+/i.test("\u039C")); -assertTrue(/(\u03BC)/ui.test("\u039C")); -assertTrue(/(\u03BC)+/ui.test("\u039C")); - -assertTrue(/(\u0178)/i.test("\xFF")); -assertTrue(/(\u0178)+/i.test("\xFF")); -assertTrue(/(\u0178)/ui.test("\xFF")); -assertTrue(/(\u0178)+/ui.test("\xFF")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-670671.js b/implementation-contributed/v8/mjsunit/regress/regress-670671.js deleted file mode 100644 index 06925de5b9d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-670671.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Trigger an infinite loop through RegExp.prototype[@@match], which results -// in unbounded growth of the results array. - -// Limit the number of iterations to avoid OOM while still triggering large -// object space allocation. -const min_ptr_size = 4; -const max_regular_heap_object_size = 507136; -const num_iterations = max_regular_heap_object_size / min_ptr_size; - -let i = 0; - -const re = /foo.bar/; -const RegExpPrototypeExec = RegExp.prototype.exec; -re.exec = (str) => { - return (i++ < num_iterations) ? RegExpPrototypeExec.call(re, str) : null; -}; -re.__defineGetter__("global", () => true); // Triggers infinite loop. - -"foo*bar".match(re); // Should not crash. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6707.js b/implementation-contributed/v8/mjsunit/regress/regress-6707.js deleted file mode 100644 index 1a8984a7c95..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6707.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = [0, 1]; -a.constructor = { - [Symbol.species]: function(len) { - var arr = {length: 0}; - Object.defineProperty(arr, "length", {writable: false}); - return arr; - } -} -assertThrows(() => { Array.prototype.concat.call(a) }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6708.js b/implementation-contributed/v8/mjsunit/regress/regress-6708.js deleted file mode 100644 index 06b68357951..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6708.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = [0, 1]; -a.constructor = { - [Symbol.species]: function(len) { - var arr = Array(20); - return arr; - } -}; -assertEquals([0, 1], Array.prototype.concat.call(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-670808.js b/implementation-contributed/v8/mjsunit/regress/regress-670808.js deleted file mode 100644 index d5e0b51be6a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-670808.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var sym = Symbol(); -function asm(stdlib, ffi) { - "use asm"; - var get_sym = ffi.get_sym; - function crash() { - get_sym()|0; - } - return {crash: crash}; -} -function get_sym() { - return sym; -} -try { - asm(null, {get_sym: get_sym}).crash(); -} catch (e) { - if (!(e instanceof TypeError)) - throw e; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-670981-array-push.js b/implementation-contributed/v8/mjsunit/regress/regress-670981-array-push.js deleted file mode 100644 index c0afe7faca7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-670981-array-push.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var array = []; -array.length = .6e+7; -array.push( ); -assertEquals(array.length, .6e+7); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6711.js b/implementation-contributed/v8/mjsunit/regress/regress-6711.js deleted file mode 100644 index c1b61c72a1d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6711.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// ensure `delete this` throws before `super` is called. -assertThrows(()=>{ - new class extends Object { - constructor() { - delete this; - super(); - } - } -}, ReferenceError); - -// ensure `delete this` doesn't throw after `super` is called. -new class extends Object { - constructor() { - super(); - delete this; - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-672041.js b/implementation-contributed/v8/mjsunit/regress/regress-672041.js deleted file mode 100644 index ceea4fd5907..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-672041.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Trigger an infinite loop through RegExp.prototype[@@match], which results -// in unbounded growth of the results array. - -// Limit the number of iterations to avoid OOM while still triggering large -// object space allocation. -const min_ptr_size = 4; -const max_regular_heap_object_size = 507136; -const num_iterations = max_regular_heap_object_size / min_ptr_size; - -const RegExpPrototypeExec = RegExp.prototype.exec; - -let i = 0; - -RegExp.prototype.__defineGetter__("global", () => true); -RegExp.prototype.exec = function(str) { - return (i++ < num_iterations) ? RegExpPrototypeExec.call(this, str) : null; -}; - -"a".match(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-673241.js b/implementation-contributed/v8/mjsunit/regress/regress-673241.js deleted file mode 100644 index a4d6ffe96fc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-673241.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm - -function generateAsmJs() { - 'use asm'; - function fun() { fun(); } - return fun; -} - -assertThrows(generateAsmJs()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-673242.js b/implementation-contributed/v8/mjsunit/regress/regress-673242.js deleted file mode 100644 index ceb60f563ca..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-673242.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --mark-shared-functions-for-tier-up --allow-natives-syntax --expose-gc - -function foo() { - function bar() { - } - return bar; -} - -// Mark bar's shared function info for tier-up -// (but don't optimize). -var bar = foo(); -%OptimizeFunctionOnNextCall(bar); - -// Avoid flushing foo (and thereby making bar's shared function info -// dead) by marking it to be optimized. -%OptimizeFunctionOnNextCall(foo); - -// Throw away the JSFunction we have for bar and GC until its code has -// been flushed. -bar = null; -for (var i = 0; i < 6; i++) { - gc(); -} - -// Now create a new JSFunction from bar's shared function info and call it, -// we should not optimize without recompiling the baseline code. -foo()(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-673297.js b/implementation-contributed/v8/mjsunit/regress/regress-673297.js deleted file mode 100644 index 9a00a908350..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-673297.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm - -function generateAsmJs() { - 'use asm'; - function fun() { fun(); } - return fun; -} - -assertThrows(generateAsmJs(), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6733.js b/implementation-contributed/v8/mjsunit/regress/regress-6733.js deleted file mode 100644 index 76a6911df13..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6733.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let x; -Realm.eval(Realm.current(), "let y"); -assertFalse(delete x); -assertFalse(delete y); -assertFalse(eval("delete x")); -assertFalse(eval("delete y")); - -(function() { - let z; - assertFalse(delete x); - assertFalse(delete y); - assertFalse(delete z); - assertFalse(eval("delete x")); - assertFalse(eval("delete y")); - assertFalse(eval("delete z")); -})(); - -assertFalse(eval("let z; delete z")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-674232.js b/implementation-contributed/v8/mjsunit/regress/regress-674232.js deleted file mode 100644 index 424ac85e207..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-674232.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function getRandomProperty(v, rand) { var properties = Object.getOwnPropertyNames(v); var proto = Object.getPrototypeOf(v); if (proto) {; } if ("constructor" && v.constructor.hasOwnProperty()) {; } if (properties.length == 0) { return "0"; } return properties[rand % properties.length]; } -function __f_11() { - var __v_8 = new Array(); - var __v_9 = __v_8.entries(); - __v_9.__p_118574531 = __v_9[ 118574531]; - __v_9.__defineGetter__(getRandomProperty(__v_9, 1442724132), function() {; __v_0[getRandomProperty()] = __v_1[getRandomProperty()]; return __v_9.__p_118574531; }); -} -function __f_10() { - __f_11(); -} -__f_10(); -__f_10(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-674753.js b/implementation-contributed/v8/mjsunit/regress/regress-674753.js deleted file mode 100644 index d8a504a6957..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-674753.js +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var undetectable = %GetUndetectable(); - -// Number -assertTrue(typeof 0 == 'number'); -assertTrue(typeof 0 === 'number'); -assertFalse(typeof 0 != 'number'); -assertFalse(typeof 0 !== 'number'); -assertTrue(typeof 1.2 == 'number'); -assertTrue(typeof 1.2 === 'number'); -assertFalse(typeof 1.2 != 'number'); -assertFalse(typeof 1.2 !== 'number'); -assertTrue(typeof 'x' != 'number'); -assertTrue(typeof 'x' !== 'number'); -assertFalse(typeof 'x' == 'number'); -assertFalse(typeof 'x' === 'number'); -assertTrue(typeof Object() != 'number'); -assertTrue(typeof Object() !== 'number'); -assertFalse(typeof Object() == 'number'); -assertFalse(typeof Object() === 'number'); - -// String -assertTrue(typeof 'x' == 'string'); -assertTrue(typeof 'x' === 'string'); -assertFalse(typeof 'x' != 'string'); -assertFalse(typeof 'x' !== 'string'); -assertTrue(typeof ('x' + 'x') == 'string'); -assertTrue(typeof ('x' + 'x') === 'string'); -assertFalse(typeof ('x' + 'x') != 'string'); -assertFalse(typeof ('x' + 'x') !== 'string'); -assertTrue(typeof 1 != 'string'); -assertTrue(typeof 1 !== 'string'); -assertFalse(typeof 1 == 'string'); -assertFalse(typeof 1 === 'string'); -assertTrue(typeof Object() != 'string'); -assertTrue(typeof Object() !== 'string'); -assertFalse(typeof Object() == 'string'); -assertFalse(typeof Object() === 'string'); - -// Boolean -assertTrue(typeof true == 'boolean'); -assertTrue(typeof true === 'boolean'); -assertFalse(typeof true != 'boolean'); -assertFalse(typeof true !== 'boolean'); -assertTrue(typeof false == 'boolean'); -assertTrue(typeof false === 'boolean'); -assertFalse(typeof false != 'boolean'); -assertFalse(typeof false !== 'boolean'); -assertTrue(typeof 1 != 'boolean'); -assertTrue(typeof 1 !== 'boolean'); -assertFalse(typeof 1 == 'boolean'); -assertFalse(typeof 1 === 'boolean'); -assertTrue(typeof 'x' != 'boolean'); -assertTrue(typeof 'x' !== 'boolean'); -assertFalse(typeof 'x' == 'boolean'); -assertFalse(typeof 'x' === 'boolean'); -assertTrue(typeof Object() != 'boolean'); -assertTrue(typeof Object() !== 'boolean'); -assertFalse(typeof Object() == 'boolean'); -assertFalse(typeof Object() === 'boolean'); - -// Undefined -assertTrue(typeof void 0 == 'undefined'); -assertTrue(typeof void 0 === 'undefined'); -assertFalse(typeof void 0 != 'undefined'); -assertFalse(typeof void 0 !== 'undefined'); -assertTrue(typeof 1 != 'undefined'); -assertTrue(typeof 1 !== 'undefined'); -assertFalse(typeof 1 == 'undefined'); -assertFalse(typeof 1 === 'undefined'); -assertTrue(typeof null != 'undefined'); -assertTrue(typeof null !== 'undefined'); -assertFalse(typeof null == 'undefined'); -assertFalse(typeof null === 'undefined'); -assertTrue(typeof Object() != 'undefined'); -assertTrue(typeof Object() !== 'undefined'); -assertFalse(typeof Object() == 'undefined'); -assertFalse(typeof Object() === 'undefined'); -assertTrue(typeof undetectable == 'undefined'); -assertTrue(typeof undetectable === 'undefined'); -assertFalse(typeof undetectable != 'undefined'); -assertFalse(typeof undetectable !== 'undefined'); - -// Function -assertTrue(typeof Object == 'function'); -assertTrue(typeof Object === 'function'); -assertFalse(typeof Object != 'function'); -assertFalse(typeof Object !== 'function'); -assertTrue(typeof 1 != 'function'); -assertTrue(typeof 1 !== 'function'); -assertFalse(typeof 1 == 'function'); -assertFalse(typeof 1 === 'function'); -assertTrue(typeof Object() != 'function'); -assertTrue(typeof Object() !== 'function'); -assertFalse(typeof Object() == 'function'); -assertFalse(typeof Object() === 'function'); -assertTrue(typeof undetectable != 'function'); -assertTrue(typeof undetectable !== 'function'); -assertFalse(typeof undetectable == 'function'); -assertFalse(typeof undetectable === 'function'); - -// Object -assertTrue(typeof Object() == 'object'); -assertTrue(typeof Object() === 'object'); -assertFalse(typeof Object() != 'object'); -assertFalse(typeof Object() !== 'object'); -assertTrue(typeof new String('x') == 'object'); -assertTrue(typeof new String('x') === 'object'); -assertFalse(typeof new String('x') != 'object'); -assertFalse(typeof new String('x') !== 'object'); -assertTrue(typeof ['x'] == 'object'); -assertTrue(typeof ['x'] === 'object'); -assertFalse(typeof ['x'] != 'object'); -assertFalse(typeof ['x'] !== 'object'); -assertTrue(typeof null == 'object'); -assertTrue(typeof null === 'object'); -assertFalse(typeof null != 'object'); -assertFalse(typeof null !== 'object'); -assertTrue(typeof 1 != 'object'); -assertTrue(typeof 1 !== 'object'); -assertFalse(typeof 1 == 'object'); -assertFalse(typeof 1 === 'object'); -assertTrue(typeof 'x' != 'object'); -assertTrue(typeof 'x' !== 'object'); -assertFalse(typeof 'x' == 'object'); // bug #674753 -assertFalse(typeof 'x' === 'object'); -assertTrue(typeof Object != 'object'); -assertTrue(typeof Object !== 'object'); -assertFalse(typeof Object == 'object'); -assertFalse(typeof Object === 'object'); -assertTrue(typeof undetectable != 'object'); -assertTrue(typeof undetectable !== 'object'); -assertFalse(typeof undetectable == 'object'); -assertFalse(typeof undetectable === 'object'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-675.js b/implementation-contributed/v8/mjsunit/regress/regress-675.js deleted file mode 100644 index bef7b27a411..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-675.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for http://code.google.com/p/v8/issues/detail?id=675. -// -// Test that load ICs for nonexistent properties check global -// property cells. - -function f() { return this.x; } - -// Initialize IC for nonexistent x property on global object. -f(); -f(); - -// Assign to global property cell for x. -this.x = 23; - -// Check that we bail out from the IC. -assertEquals(23, f()); - - -// Same test, but test that the global property cell is also checked -// if the global object is the last object in the prototype chain for -// the load. -this.__proto__ = null; -function g() { return this.y; } - -// Initialize IC. -g(); -g(); - -// Update global property cell. -this.y = 42; - -// Check that IC bails out. -assertEquals(42, g()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-676025.js b/implementation-contributed/v8/mjsunit/regress/regress-676025.js deleted file mode 100644 index 15157f2c09a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-676025.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var result; -try { eval('a=/(/'); } catch (e) { result = e; } -assertEquals('object', typeof result); -assertTrue(result instanceof SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-677055.js b/implementation-contributed/v8/mjsunit/regress/regress-677055.js deleted file mode 100644 index d65cec8edd6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-677055.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Intl) { - v5 = new Intl.NumberFormat(); - v9 = new Intl.DateTimeFormat(); - v52 = v9["formatToParts"]; - var v55 = {}; - assertThrows(() => Reflect.apply(v52, v5, v55), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-677685.js b/implementation-contributed/v8/mjsunit/regress/regress-677685.js deleted file mode 100644 index 59076a92bd8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-677685.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -function Module(stdlib) { - "use asm"; - - var fround = stdlib.Math.fround; - - // f: double -> float - function f(a) { - a = +a; - return fround(a); - } - - return { f: f }; -} - -var f = Module({ Math: Math }).f; - -function runNearStackLimit() { - function g() { try { g(); } catch(e) { f(); } }; - g(); -} - -(function () { - function g() {} - - runNearStackLimit(g); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-678525.js b/implementation-contributed/v8/mjsunit/regress/regress-678525.js deleted file mode 100644 index 49059c6f148..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-678525.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(0, '\0'.charCodeAt(0)); -assertEquals(1, '\1'.charCodeAt(0)); -assertEquals(2, '\2'.charCodeAt(0)); -assertEquals(3, '\3'.charCodeAt(0)); -assertEquals(4, '\4'.charCodeAt(0)); -assertEquals(5, '\5'.charCodeAt(0)); -assertEquals(6, '\6'.charCodeAt(0)); -assertEquals(7, '\7'.charCodeAt(0)); -assertEquals(56, '\8'.charCodeAt(0)); - -assertEquals('\010', '\10'); -assertEquals('\011', '\11'); -assertEquals('\012', '\12'); -assertEquals('\013', '\13'); -assertEquals('\014', '\14'); -assertEquals('\015', '\15'); -assertEquals('\016', '\16'); -assertEquals('\017', '\17'); - -assertEquals('\020', '\20'); -assertEquals('\021', '\21'); -assertEquals('\022', '\22'); -assertEquals('\023', '\23'); -assertEquals('\024', '\24'); -assertEquals('\025', '\25'); -assertEquals('\026', '\26'); -assertEquals('\027', '\27'); - -assertEquals(73, '\111'.charCodeAt(0)); -assertEquals(105, '\151'.charCodeAt(0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-678917.js b/implementation-contributed/v8/mjsunit/regress/regress-678917.js deleted file mode 100644 index a8ce04212bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-678917.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --max-old-space-size=1600 --nostress-incremental-marking - -// This test uses a lot of memory and fails with flaky OOM when run -// with --stress-incremental-marking on TSAN. - -s1 = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; -s1 += s1; -s1 += s1; -s1 += s1; -s1 += s1; - -s0 = 'a'; - -function g() { - for (var j = 0; j < 1000000; j++) { - s0 += s1; - } -} - -try { - g(); -} catch (e) { -} - -assertEquals('x', s0[10]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-679727.js b/implementation-contributed/v8/mjsunit/regress/regress-679727.js deleted file mode 100644 index 40931ca39cc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-679727.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -f = (e=({} = {} = 1)) => {}; f(1); -((e = ({} = {} = {})) => {})(1) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-681.js b/implementation-contributed/v8/mjsunit/regress/regress-681.js deleted file mode 100644 index 6708d058f61..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-681.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for http://code.google.com/p/v8/issues/detail?id=681. -// -// Test that load ICs for nonexistent properties bail out on smi receiver. - - -var x = {}; -function f() { return x.y; } - -// Initialize IC for nonexistent y property on x. -f(); -f(); - -// Make x a smi. -x = 23; - -// Check that we bail out from the IC. -assertEquals(undefined, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-681171-1.js b/implementation-contributed/v8/mjsunit/regress/regress-681171-1.js deleted file mode 100644 index 41c91e81f9b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-681171-1.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt --function-context-specialization --verify-heap - -bar = function() { } - -try { - (function() { - bar(...(function*(){ yield 1; yield 2; yield 3; })()); - })(); -} catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-681171-2.js b/implementation-contributed/v8/mjsunit/regress/regress-681171-2.js deleted file mode 100644 index 2f69b68f40d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-681171-2.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt --function-context-specialization --verify-heap - -function* gen() { - for (var i = 0; i < 3; ++i) { - yield i - } -} -gen().next(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-681171-3.js b/implementation-contributed/v8/mjsunit/regress/regress-681171-3.js deleted file mode 100644 index a299e8e522d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-681171-3.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt --function-context-specialization --verify-heap - -(function __f_5() { - var __v_0 = { *['a']() { yield 2; } }; - var __v_3 = __v_0.a(); - __v_3.next(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-681383.js b/implementation-contributed/v8/mjsunit/regress/regress-681383.js deleted file mode 100644 index e8c3593574f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-681383.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(deopt) { - let array = [42]; - let it = array[Symbol.iterator](); - if (deopt) { - %_DeoptimizeNow(); - return it.next().value; - } -} - -f(false); -f(false); -%OptimizeFunctionOnNextCall(f); -assertEquals(f(true), 42); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-681984.js b/implementation-contributed/v8/mjsunit/regress/regress-681984.js deleted file mode 100644 index ffc51f34005..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-681984.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __f_0() { - try { - __f_0(); - } catch(e) { - - Realm.create(); - } -} -__f_0(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-682242.js b/implementation-contributed/v8/mjsunit/regress/regress-682242.js deleted file mode 100644 index c22d976ec9f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-682242.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --es-staging - -class BaseClass { - method() { - return 1; - } -} -class SubClass extends BaseClass { - method(...args) { - return super.method(...args); - } -} -var a = new SubClass(); -a.method(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-682349.js b/implementation-contributed/v8/mjsunit/regress/regress-682349.js deleted file mode 100644 index f82f242f038..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-682349.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let success = false; -function f() { - success = (f.caller === null); -} -Promise.resolve().then(f); -%PerformMicrotaskCheckpoint(); -assertTrue(success); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-682649.js b/implementation-contributed/v8/mjsunit/regress/regress-682649.js deleted file mode 100644 index f23aed5a854..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-682649.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Should return [object global], v8 returns [object Object] - -assertEquals(this.toString(), eval("this.toString()")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-683617.js b/implementation-contributed/v8/mjsunit/regress/regress-683617.js deleted file mode 100644 index 18da682f2ee..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-683617.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -global = 'n'; -function f(deopt) { - let it = global[Symbol.iterator](); - if (deopt) { - return it.next().value; - } -} -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals('n', f(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6838-1.js b/implementation-contributed/v8/mjsunit/regress/regress-6838-1.js deleted file mode 100644 index bab6a194d31..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6838-1.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestMathMaxOnLargeInt() { - function Module(stdlib) { - "use asm"; - var max = stdlib.Math.max; - function f() { - return max(42,0xffffffff); - } - return f; - } - var f = Module(this); - assertEquals(0xffffffff, f()); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestMathMinOnLargeInt() { - function Module(stdlib) { - "use asm"; - var min = stdlib.Math.min; - function f() { - return min(42,0xffffffff); - } - return f; - } - var f = Module(this); - assertEquals(42, f()); - assertFalse(%IsAsmWasmCode(Module)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6838-2.js b/implementation-contributed/v8/mjsunit/regress/regress-6838-2.js deleted file mode 100644 index 31b94b43c2b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6838-2.js +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestMathCeilReturningFloatish() { - function Module(stdlib) { - "use asm"; - var ceil = stdlib.Math.ceil; - var fround = stdlib.Math.fround; - function f(a) { - a = fround(a); - return ceil(a); - } - return f; - } - var f = Module(this); - assertEquals(3, f(2.2)); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestMathFloorReturningFloatish() { - function Module(stdlib) { - "use asm"; - var floor = stdlib.Math.floor; - var fround = stdlib.Math.fround; - function f(a) { - a = fround(a); - return floor(a); - } - return f; - } - var f = Module(this); - assertEquals(2, f(2.2)); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestMathSqrtReturningFloatish() { - function Module(stdlib) { - "use asm"; - var sqrt = stdlib.Math.sqrt; - var fround = stdlib.Math.fround; - function f(a) { - a = fround(a); - return sqrt(a); - } - return f; - } - var f = Module(this); - assertEquals(Math.sqrt(Math.fround(2.2)), f(2.2)); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestMathAbsReturningFloatish() { - function Module(stdlib) { - "use asm"; - var abs = stdlib.Math.abs; - var fround = stdlib.Math.fround; - function f(a) { - a = fround(a); - return abs(a); - } - return f; - } - var f = Module(this); - assertEquals(Math.fround(2.2), f(-2.2)); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestMathMinReturningFloat() { - function Module(stdlib) { - "use asm"; - var min = stdlib.Math.min; - var fround = stdlib.Math.fround; - function f(a) { - a = fround(a); - return min(a, a); - } - return f; - } - var f = Module(this); - assertEquals(Math.fround(2.2), f(2.2)); - assertTrue(%IsAsmWasmCode(Module)); -})(); - -(function TestMathMaxReturningFloat() { - function Module(stdlib) { - "use asm"; - var max = stdlib.Math.max; - var fround = stdlib.Math.fround; - function f(a) { - a = fround(a); - return max(a, a); - } - return f; - } - var f = Module(this); - assertEquals(Math.fround(2.2), f(2.2)); - assertTrue(%IsAsmWasmCode(Module)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6838-3.js b/implementation-contributed/v8/mjsunit/regress/regress-6838-3.js deleted file mode 100644 index 639ffa5da70..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6838-3.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestMathAbsReturningUnsigned() { - function Module(stdlib) { - "use asm"; - var abs=stdlib.Math.abs; - function f(a, b) { - a = a | 0; - b = b | 0; - return (abs(a >> 0) == (b >>> 0)) | 0; - } - return f; - } - var f = Module(this); - assertEquals(0, f(1, 2)); - assertEquals(1, f(23, 23)); - assertEquals(1, f(-42, 42)); - assertEquals(1, f(-0x7fffffff, 0x7fffffff)); - assertEquals(1, f(-0x80000000, 0x80000000)); - assertTrue(%IsAsmWasmCode(Module)); -})(); - -(function TestMathAbsOverflowSignedValue() { - function Module(stdlib) { - "use asm"; - var abs=stdlib.Math.abs; - function f() { - return (abs(-0x80000000) > 0) | 0; - } - return f; - } - var f = Module(this); - assertEquals(1, f()); - assertTrue(%IsAsmWasmCode(Module)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-685086.js b/implementation-contributed/v8/mjsunit/regress/regress-685086.js deleted file mode 100644 index 2cdaec4221b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-685086.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - Math.max(...0); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-687.js b/implementation-contributed/v8/mjsunit/regress/regress-687.js deleted file mode 100644 index 9dffcc1a9e4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-687.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This regression includes a number of cases where we did not correctly -// update a accessor property to a data property using Object.defineProperty. - -var obj = { get value() {}, set value (v) { throw "Error";} }; -Object.defineProperty(obj, "value", - { value: 5, writable:true, configurable: true }); -var desc = Object.getOwnPropertyDescriptor(obj, "value"); -assertEquals(obj.value, 5); -assertTrue(desc.configurable); -assertTrue(desc.enumerable); -assertTrue(desc.writable); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -var proto = { - get value() {}, - set value(v) { Object.defineProperty(this, "value", {value: v}); } -}; - -var create = Object.create(proto); - -assertEquals(create.value, undefined); -create.value = 4; -assertEquals(create.value, 4); - -// These tests where provided in bug 959, but are all related to the this issue. -var obj1 = {}; -Object.defineProperty(obj1, 'p', {get: undefined, set: undefined}); -assertTrue("p" in obj1); -desc = Object.getOwnPropertyDescriptor(obj1, "p"); -assertFalse(desc.configurable); -assertFalse(desc.enumerable); -assertEquals(desc.value, undefined); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); - - -var obj2 = { get p() {}}; -Object.defineProperty(obj2, 'p', {get: undefined}) -assertTrue("p" in obj2); -desc = Object.getOwnPropertyDescriptor(obj2, "p"); -assertTrue(desc.configurable); -assertTrue(desc.enumerable); -assertEquals(desc.value, undefined); -assertEquals(desc.get, undefined); -assertEquals(desc.set, undefined); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-688690.js b/implementation-contributed/v8/mjsunit/regress/regress-688690.js deleted file mode 100644 index ac4eb77e232..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-688690.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var foo = "01234567"; - -foo += foo; -foo += foo; -foo += foo; -foo += foo; -foo += foo; // foo.length = 256; - -// Create an adaptor frame, and take the StringReplaceOneCharWithString runtime -// fast path. This crashed originally since TailCallRuntime could not handle -// adaptor frames. -var bar = foo.replace('x', 'y', 'z'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-689016.js b/implementation-contributed/v8/mjsunit/regress/regress-689016.js deleted file mode 100644 index da31350fed0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-689016.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - function f() {} - - assertThrows(function() { - f(...Array(1000000)); - }, RangeError); - -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-69.js b/implementation-contributed/v8/mjsunit/regress/regress-69.js deleted file mode 100644 index 3fb1f76bdee..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-69.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This tests a switch statement with only default clause leaves -// balanced stack. It should not trigger the break point when --debug_code -// flag is turned on. -// See issue: http://code.google.com/p/v8/issues/detail?id=69 - -// Flags: --debug-code --expose-gc -function unbalanced_switch(a) { - try { - switch (a) { - default: break; - } - } catch (e) {} - gc(); -} - -unbalanced_switch(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6907.js b/implementation-contributed/v8/mjsunit/regress/regress-6907.js deleted file mode 100644 index 0749365fede..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6907.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestDematerializedContextInBuiltin() { - var f = function() { - var b = [1,2,3]; - var callback = function(v,i,o) { - %_DeoptimizeNow(); - }; - try { throw 0 } catch(e) { - return b.forEach(callback); - } - } - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-693500.js b/implementation-contributed/v8/mjsunit/regress/regress-693500.js deleted file mode 100644 index 89b80882b25..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-693500.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Reflect.get(new Error(), "stack", 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6941.js b/implementation-contributed/v8/mjsunit/regress/regress-6941.js deleted file mode 100644 index a8370831f82..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6941.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo(x) { - return Symbol.iterator == x; -} - -function main() { - foo(Symbol()); - foo({valueOf() { return Symbol.toPrimitive}}); -} - -%NeverOptimizeFunction(main); -main(); -%OptimizeFunctionOnNextCall(foo); -main(); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6948.js b/implementation-contributed/v8/mjsunit/regress/regress-6948.js deleted file mode 100644 index c7e0fae28f9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6948.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -var o = {}; - -function foo(s) { return o[s]; } - -var s = 'c' + 'c'; -foo(s); -foo(s); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo(s)); -assertOptimized(foo); -assertEquals(undefined, foo('c' + 'c')); -assertOptimized(foo); -assertEquals(undefined, foo('ccddeeffgg'.slice(0, 2))); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-696.js b/implementation-contributed/v8/mjsunit/regress/regress-696.js deleted file mode 100644 index e443c4243dc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-696.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=696 -// Because of the change in dateparser in revision 4557 to support time -// only strings in Date.parse we also misleadingly supported strings with non -// leading numbers. - -assertTrue(isNaN(Date.parse('x'))); -assertTrue(isNaN(Date.parse('1x'))); -assertTrue(isNaN(Date.parse('xT10:00:00'))); -assertTrue(isNaN(Date.parse('This is a relatively long string'))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-696251.js b/implementation-contributed/v8/mjsunit/regress/regress-696251.js deleted file mode 100644 index b31a8760468..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-696251.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = new Uint8Array(1000); -a.fill(255); -a.sort(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-696332.js b/implementation-contributed/v8/mjsunit/regress/regress-696332.js deleted file mode 100644 index 6d8241ac485..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-696332.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - throw 1 -} catch (v) { - function foo() { return v; } - foo(); - v = 2 -} -assertEquals(2, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-696651.js b/implementation-contributed/v8/mjsunit/regress/regress-696651.js deleted file mode 100644 index 650c9787f6f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-696651.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function get_a() { return "aaaaaaaaaaaaaa"; } -function get_b() { return "bbbbbbbbbbbbbb"; } - -function get_string() { - return get_a() + get_b(); -} - -function prefix(s) { - return s + get_string(); -} - -prefix(""); -prefix(""); -%OptimizeFunctionOnNextCall(prefix); -var s = prefix(""); -assertFalse(s === "aaaaaaaaaaaaaabbbbbbbbbbbbbc"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-697.js b/implementation-contributed/v8/mjsunit/regress/regress-697.js deleted file mode 100644 index a59e2b2b4b6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-697.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=697 - -try { - Object.create(function(){}); -} catch (e) { - assertTrue(false); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6970.js b/implementation-contributed/v8/mjsunit/regress/regress-6970.js deleted file mode 100644 index 64f8caf1022..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6970.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(42, (({a = {b} = {b: 42}}) => a.b)({})); -assertEquals(42, b); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-698790.js b/implementation-contributed/v8/mjsunit/regress/regress-698790.js deleted file mode 100644 index 8791cb5d176..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-698790.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Call RegExp constructor with a cons string. - -var cons_string = %ConstructConsString("", "aaaaaaaaaaaaaa"); -new RegExp(cons_string); - -// Same thing but using TF lowering. - -function make_cons_string(s) { return s + "aaaaaaaaaaaaaa"; } -make_cons_string(""); -%OptimizeFunctionOnNextCall(make_cons_string); -var cons_str = make_cons_string(""); -new RegExp(cons_str); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6989.js b/implementation-contributed/v8/mjsunit/regress/regress-6989.js deleted file mode 100644 index b4a33c59c92..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6989.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -(function() { - function foo(o) { o["x"] = 1; } - - assertThrows(() => foo(undefined)); - assertThrows(() => foo(undefined)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(undefined)); - assertOptimized(foo); -})(); - -(function() { - function foo(o) { o["x"] = 1; } - - assertThrows(() => foo(null)); - assertThrows(() => foo(null)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(null)); - assertOptimized(foo); -})(); - -(function() { - function foo(o) { return o["x"]; } - - assertThrows(() => foo(undefined)); - assertThrows(() => foo(undefined)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(undefined)); - assertOptimized(foo); -})(); - -(function() { - function foo(o) { return o["x"]; } - - assertThrows(() => foo(null)); - assertThrows(() => foo(null)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(null)); - assertOptimized(foo); -})(); - -(function() { - function foo(o) { o.x = 1; } - - assertThrows(() => foo(undefined)); - assertThrows(() => foo(undefined)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(undefined)); - assertOptimized(foo); -})(); - -(function() { - function foo(o) { o.x = 1; } - - assertThrows(() => foo(null)); - assertThrows(() => foo(null)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(null)); - assertOptimized(foo); -})(); - -(function() { - function foo(o) { return o.x; } - - assertThrows(() => foo(undefined)); - assertThrows(() => foo(undefined)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(undefined)); - assertOptimized(foo); -})(); - -(function() { - function foo(o) { return o.x; } - - assertThrows(() => foo(null)); - assertThrows(() => foo(null)); - %OptimizeFunctionOnNextCall(foo); - assertThrows(() => foo(null)); - assertOptimized(foo); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6991.js b/implementation-contributed/v8/mjsunit/regress/regress-6991.js deleted file mode 100644 index 1c6b9769776..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-6991.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo(o) { return o.x; } - -assertEquals(undefined, foo({})); -assertEquals(undefined, foo(1)); -assertEquals(undefined, foo({})); -assertEquals(undefined, foo(1)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo({})); -assertOptimized(foo); -assertEquals(undefined, foo(1)); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-70066.js b/implementation-contributed/v8/mjsunit/regress/regress-70066.js deleted file mode 100644 index 8787b766467..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-70066.js +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for Chromium issue 70066. Delete should work properly -// from inside 'with' scopes. -// http://code.google.com/p/chromium/issues/detail?id=70066 - -x = 0; - -// Delete on a slot from a function's own context. -function test1() { - var value = 1; - var status; - with ({}) { status = delete value; } - return value + ":" + status; -} - -assertEquals("1:false", test1(), "test1"); -assertEquals(0, x, "test1"); // Global x is undisturbed. - - -// Delete on a slot from an outer context. -function test2() { - function f() { - with ({}) { return delete value; } - } - var value = 2; - var status = f(); - return value + ":" + status; -} - -assertEquals("2:false", test2(), "test2"); -assertEquals(0, x, "test2"); // Global x is undisturbed. - - -// Delete on a parameter. -function test3(value) { - var status; - with ({}) { status = delete value; } - return value + ":" + status; -} - -assertEquals("3:false", test3(3), "test3"); -assertEquals(0, x, "test3"); // Global x is undisturbed. - - -// Delete on a parameter found in an outer context. -function test4(value) { - function f() { - with ({}) { return delete value; } - } - var status = f(); - return value + ":" + status; -} - -assertEquals("4:false", test4(4), "test4"); -assertEquals(0, x, "test4"); // Global x is undisturbed. - - -// Delete on a parameter, arguments object should be unaffected. -function test5(value) { - var status; - with ({}) { status = delete value; } - return arguments[0] + ":" + status; -} - -assertEquals("5:false", test5(5), "test5"); -assertEquals(0, x, "test5"); // Global x is undisturbed. - -function test6(value) { - function f() { - with ({}) { return delete value; } - } - var status = f(); - return arguments[0] + ":" + status; -} - -assertEquals("6:false", test6(6), "test6"); -assertEquals(0, x, "test6"); // Global x is undisturbed. - - -// Delete on a property found on 'with' object. -function test7(object) { - with (object) { return delete value; } -} - -var o = {value: 7}; -assertEquals(true, test7(o), "test7"); -assertEquals(void 0, o.value, "test7"); -assertEquals(0, x, "test7"); // Global x is undisturbed. - - -// Delete on a global property. -function test8() { - with ({}) { return delete x; } -} - -assertEquals(true, test8(), "test8"); -assertThrows("x"); // Global x should be deleted. - - -// Delete on a property that is not found anywhere. -function test9() { - with ({}) { return delete x; } -} - -assertThrows("x"); // Make sure it's not there. -assertEquals(true, test9(), "test9"); - - -// Delete on a DONT_DELETE property of the global object. -var y = 10; -function test10() { - with ({}) { return delete y; } -} - -assertEquals(false, test10(), "test10"); -assertEquals(10, y, "test10"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7014-1.js b/implementation-contributed/v8/mjsunit/regress/regress-7014-1.js deleted file mode 100644 index 6aadf91aa2b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7014-1.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -function foo(s) { - return s[5]; -} - -assertEquals("f", foo("abcdef")); -assertEquals(undefined, foo("a")); -%OptimizeFunctionOnNextCall(foo); -assertEquals("f", foo("abcdef")); -assertEquals(undefined, foo("a")); -assertOptimized(foo); - -// Now mess with the String.prototype. -String.prototype[5] = "5"; - -assertEquals("f", foo("abcdef")); -assertEquals("5", foo("a")); -%OptimizeFunctionOnNextCall(foo); -assertEquals("f", foo("abcdef")); -assertEquals("5", foo("a")); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7014-2.js b/implementation-contributed/v8/mjsunit/regress/regress-7014-2.js deleted file mode 100644 index 057e170d90f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7014-2.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -function foo(s) { - return s[5]; -} - -assertEquals("f", foo("abcdef")); -assertEquals(undefined, foo("a")); -%OptimizeFunctionOnNextCall(foo); -assertEquals("f", foo("abcdef")); -assertEquals(undefined, foo("a")); -assertOptimized(foo); - -// Now mess with the String.prototype. -String.prototype.__proto__ = new Proxy(String.prototype.__proto__, { - get(target, property) { - return "5"; - } -}); - -assertEquals("f", foo("abcdef")); -assertEquals("5", foo("a")); -%OptimizeFunctionOnNextCall(foo); -assertEquals("f", foo("abcdef")); -assertEquals("5", foo("a")); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7026.js b/implementation-contributed/v8/mjsunit/regress/regress-7026.js deleted file mode 100644 index f02d2f3505b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7026.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo(o, k) { return o[k]; } - -const a = "a"; -foo([1], 0); -foo({a:1}, a); - -const p = new Proxy({}, { - get(target, name) { - return name; - } -}); - -assertEquals(a + "b", foo(p, a + "b")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-704811.js b/implementation-contributed/v8/mjsunit/regress/regress-704811.js deleted file mode 100644 index dcdeb4e930f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-704811.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// The bug was that destructuring assignments which occur inside a lazy arrow -// function parameter list were not rewritten. - -// Repro from the bug (slightly modified so that it doesn't produce a run-time -// exception). -(({x = {} = {}}) => {})({}); - -// ... and without the parens. -let a0 = ({x = {} = {}}) => {}; -a0({}); - -// Testing that the destructuring assignments also work properly. The semantics -// are: The value of the destructuring assignment is an object {myprop: 2115} -// and 2115 also gets assigned to global_side_assignment. So the default value -// for x is {myprop: 2115}. This is the value which x will have if the function -// is called with an object which doesn't have property x. -let called = false; -let global_side_assignment = undefined; -(({x = {myprop: global_side_assignment} = {myprop: 2115}}) => { - assertTrue('myprop' in x); - assertEquals(2115, x.myprop); - called = true; -})({}); -assertTrue(called); -assertEquals(2115, global_side_assignment); - -// If the parameter is an object which has property x, the default value is not -// used. -called = false; -global_side_assignment = undefined; -(({x = {myprop: global_side_assignment} = {myprop: 2115}}) => { - assertEquals(3000, x); - called = true; -})({x: 3000}); -assertTrue(called); -// Global side assignment doesn't happen, since the default value was not used. -assertEquals(undefined, global_side_assignment); - -// Different kinds of lazy arrow functions (it's actually a bit weird that the -// above functions are lazy, since they are parenthesized). -called = false; -global_side_assignment = undefined; -let a1 = ({x = {myprop: global_side_assignment} = {myprop: 2115}}) => { - assertTrue('myprop' in x); - assertEquals(2115, x.myprop); - called = true; -} -a1({}); -assertTrue(called); -assertEquals(2115, global_side_assignment); - -called = false; -global_side_assignment = undefined; -let a2 = ({x = {myprop: global_side_assignment} = {myprop: 2115}}) => { - assertEquals(3000, x); - called = true; -} -a2({x: 3000}); -assertTrue(called); -assertEquals(undefined, global_side_assignment); - -// We never had a problem with non-arrow functions, but testing them too for -// completeness. -called = false; -global_side_assignment = undefined; -function f1({x = {myprop: global_side_assignment} = {myprop: 2115}}) { - assertTrue('myprop' in x); - assertEquals(2115, x.myprop); - assertEquals(2115, global_side_assignment); - called = true; -} -f1({}); -assertTrue(called); -assertEquals(2115, global_side_assignment); - -called = false; -global_side_assignment = undefined; -function f2({x = {myprop: global_side_assignment} = {myprop: 2115}}) { - assertEquals(3000, x); - called = true; -} -f2({x: 3000}); -assertTrue(called); -assertEquals(undefined, global_side_assignment); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-705934.js b/implementation-contributed/v8/mjsunit/regress/regress-705934.js deleted file mode 100644 index cd8ecc766f4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-705934.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -function call_replace_close_to_stack_overflow() { - try { - call_replace_close_to_stack_overflow(); - } catch { - "b".replace(/(b)/g); - } -} - -call_replace_close_to_stack_overflow(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-706234-2.js b/implementation-contributed/v8/mjsunit/regress/regress-706234-2.js deleted file mode 100644 index ed5facf7f44..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-706234-2.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Lazy top-level arrow function which must be re-parsed and eagerly compiled. -var f = ({ x } = { x: 1 }) => { - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; -}; - -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-706234.js b/implementation-contributed/v8/mjsunit/regress/regress-706234.js deleted file mode 100644 index aee31ae8330..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-706234.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var fn = ({foo = {} = {}}) => { return foo; } -if (true) { - fn({}); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-707066.js b/implementation-contributed/v8/mjsunit/regress/regress-707066.js deleted file mode 100644 index b5d70c2e6b1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-707066.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// There was a bug in CreateDynamicFunction where a stack overflow -// situation caused an assertion failure. - -function test(api) { - function f() { - try { - // induce a stack overflow - f(); - } catch(e) { - // this might result in even more stack overflows - api(); - } - } - f(); -} - -test(( function (){}).constructor); // Function -test(( function*(){}).constructor); // GeneratorFunction -test((async function (){}).constructor); // AsyncFunction diff --git a/implementation-contributed/v8/mjsunit/regress/regress-707187.js b/implementation-contributed/v8/mjsunit/regress/regress-707187.js deleted file mode 100644 index 3c4d768d4b0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-707187.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let i = 0; -let re = /./g; -re.exec = () => { - if (i++ == 0) return { length: 2 ** 16 }; - return null; -}; - -"".replace(re); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-707410.js b/implementation-contributed/v8/mjsunit/regress/regress-707410.js deleted file mode 100644 index cc3f58cdb5f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-707410.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = new Uint8Array(1024*1024); -%ArrayBufferDetach(a.buffer); -assertThrows(() => new Uint8Array(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-707675.js b/implementation-contributed/v8/mjsunit/regress/regress-707675.js deleted file mode 100644 index 0cbfd69e649..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-707675.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -Array.prototype.__proto__ = null; -new Uint8Array(Array.prototype); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-708247.js b/implementation-contributed/v8/mjsunit/regress/regress-708247.js deleted file mode 100644 index 7512791cd95..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-708247.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --predictable - -const str = '2016-01-02'; - -function t() { - var re; - function toDictMode() { - for (var i = 0; i < 100; i++) { // Loop is required. - re.x = 42; - delete re.x; - } - return 0; - } - - re = /-/g; // Needs to be global to trigger lastIndex accesses. - re.lastIndex = { valueOf : toDictMode }; - return re.exec(str); -} - -for (var q = 0; q < 10000; q++) { - t(); // Needs repetitions to trigger a crash. -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-708598.js b/implementation-contributed/v8/mjsunit/regress/regress-708598.js deleted file mode 100644 index 74fe71fc2ee..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-708598.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Regression test for hitting a DCHECK; if we just get a syntax error, it's ok. - -assertThrows(`function lazy_does_not_compile(x) { - break; - } - new lazy_does_not_compile();`, SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-709029.js b/implementation-contributed/v8/mjsunit/regress/regress-709029.js deleted file mode 100644 index b9bcabbc27b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-709029.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Changes the map of obj. -function mutateObjectOnStringConversion(obj) { - return { toString: () => { obj.x = 42;return "";}}; -} - -{ - const re = /./; - re.exec(mutateObjectOnStringConversion(re)); -} - -{ - const re = /./; - re.test(mutateObjectOnStringConversion(re)); -} - -{ - const re = /./; - re[Symbol.match](mutateObjectOnStringConversion(re)); -} - -{ - const re = /./; - re[Symbol.search](mutateObjectOnStringConversion(re)); -} - -{ - const re = /./; - re[Symbol.split](mutateObjectOnStringConversion(re)); -} - -{ - const re = /./; - re[Symbol.replace](mutateObjectOnStringConversion(re)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-709782.js b/implementation-contributed/v8/mjsunit/regress/regress-709782.js deleted file mode 100644 index e33f694ec91..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-709782.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = [0]; -function bar(x) { return x; } -function foo() { return a.reduce(bar); } - -assertEquals(0, foo()); -assertEquals(0, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(0, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-711165.js b/implementation-contributed/v8/mjsunit/regress/regress-711165.js deleted file mode 100644 index 9a42451e25a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-711165.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This is testing a leak failure. - -try { - Realm.navigate(0); -} catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7115.js b/implementation-contributed/v8/mjsunit/regress/regress-7115.js deleted file mode 100644 index 837c11e9302..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7115.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function TestBuiltinSubclassing(Builtin) { - assertTrue(%HasFastProperties(Builtin)); - assertTrue(%HasFastProperties(Builtin.prototype)); - assertTrue(%HasFastProperties(Builtin.prototype.__proto__)); - - class SubClass extends Builtin {} - - assertTrue(%HasFastProperties(Builtin)); - assertTrue(%HasFastProperties(Builtin.prototype)); - assertTrue(%HasFastProperties(Builtin.prototype.__proto__)); -} - -let TypedArray = Uint8Array.__proto__; - -TestBuiltinSubclassing(RegExp); -TestBuiltinSubclassing(Promise); -TestBuiltinSubclassing(Array); -TestBuiltinSubclassing(TypedArray); -TestBuiltinSubclassing(Uint8Array); -TestBuiltinSubclassing(Int8Array); -TestBuiltinSubclassing(Uint16Array); -TestBuiltinSubclassing(Int16Array); -TestBuiltinSubclassing(Uint32Array); -TestBuiltinSubclassing(Int32Array); -TestBuiltinSubclassing(Float32Array); -TestBuiltinSubclassing(Float64Array); -TestBuiltinSubclassing(Uint8ClampedArray); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-712.js b/implementation-contributed/v8/mjsunit/regress/regress-712.js deleted file mode 100644 index b26b94a6070..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-712.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This regression test is used to ensure that Object.defineProperty -// can't be called with an empty property descriptor on a non-configurable -// existing property and override the existing property. -// See: http://code.google.com/p/v8/issues/detail?id=712 - -var obj = {}; -Object.defineProperty(obj, "x", { get: function() { return "42"; }, - configurable: false }); -assertEquals(obj.x, "42"); -Object.defineProperty(obj, 'x', {}); -assertEquals(obj.x, "42"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7135.js b/implementation-contributed/v8/mjsunit/regress/regress-7135.js deleted file mode 100644 index 2387241eee8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7135.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo() { return -"0" } -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); -assertOptimized(foo); - -function bar() { return -"1" } -bar(); -%OptimizeFunctionOnNextCall(bar); -bar(); -assertOptimized(bar); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-715582.js b/implementation-contributed/v8/mjsunit/regress/regress-715582.js deleted file mode 100644 index 0e81a923bff..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-715582.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Should not crash. -// -this.__defineGetter__( - "x", (a = (function f() { return; (function() {}); })()) => { }); -x; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-716044.js b/implementation-contributed/v8/mjsunit/regress/regress-716044.js deleted file mode 100644 index 264424c8114..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-716044.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --verify-heap - -class Array1 extends Array { - constructor(len) { - super(1); - } -}; - -class MyArray extends Array { - static get [Symbol.species]() { - return Array1; - } -} - -a = new MyArray(); - -for (var i = 0; i < 100000; i++) { - a.push(1); -} - -a.map(function(x) { return 42; }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-71647.js b/implementation-contributed/v8/mjsunit/regress/regress-71647.js deleted file mode 100644 index 44510116d9f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-71647.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var qe = 'object'; - -function g() { - for (var i = 0; i < 10000; i++) typeof i === qe; -} - -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-718285.js b/implementation-contributed/v8/mjsunit/regress/regress-718285.js deleted file mode 100644 index 409f343693d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-718285.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo_reference(n) { - var array = new Int32Array(n + 1); - for (var i = 0; i < n; ++i) { - array[i] = i; - } - var array2 = new Int32Array(array); - array2.set(new Uint8Array(array.buffer, 0, n), 1); - return array2; -} - -function foo(n) { - var array = new Int32Array(n + 1); - for (var i = 0; i < n; ++i) { - array[i] = i; - } - array.set(new Uint8Array(array.buffer, 0, n), 1); - return array; -} - -function bar_reference(n) { - var array = new Int32Array(n + 1); - for (var i = 0; i < n; ++i) { - array[i] = i; - } - var array2 = new Int32Array(array); - array2.set(new Uint8Array(array.buffer, 34), 0); - return array2; -} - -function bar(n) { - var array = new Int32Array(n + 1); - for (var i = 0; i < n; ++i) { - array[i] = i; - } - array.set(new Uint8Array(array.buffer, 34), 0); - return array; -} - -foo(10); -foo_reference(10); -bar(10); -bar_reference(10); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-718891.js b/implementation-contributed/v8/mjsunit/regress/regress-718891.js deleted file mode 100644 index 209568dca3e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-718891.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -function Data() { -} -Data.prototype = { x: 1 }; - -function TriggerDeopt() { - Data.prototype = { x: 2 }; -} - -function TestDontSelfHealWithDeoptedCode(run_unoptimized, ClosureFactory) { - // Create some function closures which don't have - // optimized code. - var unoptimized_closure = ClosureFactory(); - if (run_unoptimized) { - unoptimized_closure(); - } - - // Run and optimize the code (do this in a separate function - // so that the closure doesn't leak in a dead register). - (() => { - var optimized_closure = ClosureFactory(); - // Use .call to avoid the CallIC retaining the JSFunction in the - // feedback vector via a weak map, which would mean it wouldn't be - // collected in the minor gc below. - optimized_closure.call(undefined); - %OptimizeFunctionOnNextCall(optimized_closure); - optimized_closure.call(undefined); - })(); - - // Optimize a dummy function, just so it gets linked into the - // Contexts optimized_functions list head, which is in the old - // space, and the link from to the optimized_closure's JSFunction - // moves to the inline link in dummy's JSFunction in the new space, - // otherwise optimized_closure's JSFunction will be retained by the - // old->new remember set. - (() => { - var dummy = function() { return 1; }; - %OptimizeFunctionOnNextCall(dummy); - dummy(); - })(); - - // GC the optimized closure with a minor GC - the optimized - // code will remain in the feedback vector. - gc(true); - - // Trigger deoptimization by changing the prototype of Data. This - // will mark the code for deopt, but since no live JSFunction has - // optimized code, we won't clear the feedback vector. - TriggerDeopt(); - - // Call pre-existing functions, these will try to self-heal with the - // optimized code in the feedback vector op, but should bail-out - // since the code is marked for deoptimization. - unoptimized_closure(); -} - -// Run with the unoptimized closure both uncomplied and compiled for the -// interpreter initially, to test self healing on both CompileLazy and -// the InterpreterEntryTrampoline respectively. -TestDontSelfHealWithDeoptedCode(false, - () => { return () => { return new Data() }}); -TestDontSelfHealWithDeoptedCode(true, - () => { return () => { return new Data() }}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-719380.js b/implementation-contributed/v8/mjsunit/regress/regress-719380.js deleted file mode 100644 index 4d41609c519..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-719380.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -TypeError.prototype.__defineGetter__("name", () => { throw 42; }); -try { console.log({ toString: () => { throw new TypeError() }}); } catch (e) {} -try { new WebAssembly.Table({}); } catch (e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-720.js b/implementation-contributed/v8/mjsunit/regress/regress-720.js deleted file mode 100644 index 267b32d0885..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-720.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This regression test is used to ensure that Object.defineProperty -// keeps the existing value of the writable flag if none is given -// in the provided descriptor. -// See: http://code.google.com/p/v8/issues/detail?id=720 - -var o = {x: 10}; -Object.defineProperty(o, "x", {value: 5}); -var desc = Object.getOwnPropertyDescriptor(o, "x"); -assertTrue(desc["writable"]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-720247.js b/implementation-contributed/v8/mjsunit/regress/regress-720247.js deleted file mode 100644 index 571e7e47dc4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-720247.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals('function', typeof (function() { - return eval('with ({a: 1}) { function a() {} }; a') -})()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-722978.js b/implementation-contributed/v8/mjsunit/regress/regress-722978.js deleted file mode 100644 index 082c1f8be39..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-722978.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt - -var __v_3 = {}; -function __f_0() { - var __v_30 = -0; - __v_30.__defineGetter__("0", function() { return undefined; }); - __v_30 = 0; - __v_3 = 0; - assertTrue(Object.is(0, __v_30)); -} -__f_0(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-723366.js b/implementation-contributed/v8/mjsunit/regress/regress-723366.js deleted file mode 100644 index ba1915db98e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-723366.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = {foo: 0, 0: 0, 2: 2, 3: 3}; -o.__defineSetter__("1", function(v) { this.foo = 0.1; }); - -for(var i = 0; i < 4; i++) { - switch (i) { - case 0: o.p1 = 0; break; - case 1: o.p2 = 0; break; - } - o[i] = i; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7254.js b/implementation-contributed/v8/mjsunit/regress/regress-7254.js deleted file mode 100644 index 8231a8fd746..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7254.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo(a) { - a[0]; - a[1] = ""; -} - -foo([0,0].map(x => x)); -foo([0,0].map(x => x)); -%OptimizeFunctionOnNextCall(foo); -foo([0,0].map(x => x)); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-725858.js b/implementation-contributed/v8/mjsunit/regress/regress-725858.js deleted file mode 100644 index 466673f8162..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-725858.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() {} -var src = 'f(' + '0,'.repeat(0x201f) + ')'; -var boom = new Function(src); -%OptimizeFunctionOnNextCall(boom); -boom(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-726625.js b/implementation-contributed/v8/mjsunit/regress/regress-726625.js deleted file mode 100644 index 6a368f41180..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-726625.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function abc() { return; } -assertThrows("abc" + String.fromCharCode(65534) + "(1)"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-726636.js b/implementation-contributed/v8/mjsunit/regress/regress-726636.js deleted file mode 100644 index 843cfdf8834..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-726636.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -Object.defineProperty(Promise, Symbol.species, { value: 0 }); -var p = new Promise(function() {}); -try { - p.then(); - assertUnreachable(); -} catch(e) { - assertTrue(e instanceof TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-727218.js b/implementation-contributed/v8/mjsunit/regress/regress-727218.js deleted file mode 100644 index 8b2aa06a201..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-727218.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var f = ({ x } = { x: y }) => { - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; -}; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-727662.js b/implementation-contributed/v8/mjsunit/regress/regress-727662.js deleted file mode 100644 index 62b53b41873..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-727662.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -(function() { - function thingo(i, b) { - var s = b ? "ac" : "abcd"; - i = i >>> 0; - if (i < s.length) { - var c = s.charCodeAt(i); - gc(); - return c; - } - } - thingo(0, true); - thingo(0, true); - %OptimizeFunctionOnNextCall(thingo); - thingo(0, true); - -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-728.js b/implementation-contributed/v8/mjsunit/regress/regress-728.js deleted file mode 100644 index 196b1188a6f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-728.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var obj = { 0: "obj0" }; - -// Array index k is to big to fit into the string hash field. -var k = 16777217; -var h = "" + k; - -obj[k] = "obj" + k; - -// Force computation of hash for the string representation of array index. -for (var i = 0; i < 10; i++) { ({})[h]; } - -function get(idx) { return obj[idx]; } - -assertEquals(get(0), "obj0"); -assertEquals(get(h), "obj" + h); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-729671.js b/implementation-contributed/v8/mjsunit/regress/regress-729671.js deleted file mode 100644 index 90791c1307f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-729671.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = { 0: 11, 1: 9}; -assertThrows(() => JSON.parse('[0,0]', function() { this[1] = o; }), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-730254.js b/implementation-contributed/v8/mjsunit/regress/regress-730254.js deleted file mode 100644 index 2db49ce4bdf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-730254.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -var __v_0 = {}; -__v_0 = new Map(); -function __f_0() { - __v_0[0] --; -} -__f_0(); -%OptimizeFunctionOnNextCall(__f_0); -__f_0(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-732.js b/implementation-contributed/v8/mjsunit/regress/regress-732.js deleted file mode 100644 index 2b02ea637d4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-732.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// idx is a valid array index but is too big to be cached in hash field. -var idx = 10000000; - -// Create a JSObject with NumberDictionary as a backing store for elements. -var obj = { }; -for (var i = 0; i < 100000; i += 100) { obj[i] = "obj" + i; } - -// Set value using numeric index. -obj[idx] = "obj" + idx; - -// Make a string from index. -var str = "" + idx; - -// Force hash computation for the string representation of index. -for (var i = 0; i < 10; i++) { ({})[str]; } - -// Try getting value back using string and number representations of -// the same index. -assertEquals(obj[str], obj[idx]) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-732836.js b/implementation-contributed/v8/mjsunit/regress/regress-732836.js deleted file mode 100644 index 20e852c317f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-732836.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function boom() { - var args = []; - for (var i = 0; i < 125000; i++) - args.push(1.1); - return Array.apply(Array, args); -} -var array = boom(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-733059.js b/implementation-contributed/v8/mjsunit/regress/regress-733059.js deleted file mode 100644 index 1da8413c702..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-733059.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --enable-slow-asserts - -a = new Proxy([], { - defineProperty() { - b.length = 1; gc(); - return Object.defineProperty.apply(this, arguments); - } -}); - -class MyArray extends Array { - static get[Symbol.species](){ - return function() { - return a; - } - }; -} - -b = new MyArray(65535); -b[1] = 0.1; -c = Array.prototype.concat.call(b); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-734862.js b/implementation-contributed/v8/mjsunit/regress/regress-734862.js deleted file mode 100644 index 40e5b1dcdb2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-734862.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function catcher(o, p) { - try { o[p]; } catch (e) { return e; } - throw p; -} - -assertTrue(catcher(null, 'foo') instanceof TypeError); -assertTrue(catcher(void 0, 'foo') instanceof TypeError); -assertTrue(catcher(null, 123) instanceof TypeError); -assertTrue(catcher(void 0, 123) instanceof TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7369.js b/implementation-contributed/v8/mjsunit/regress/regress-7369.js deleted file mode 100644 index de715ef6dcd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7369.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(-Infinity, 1/parseInt(-0.9)); -assertEquals(-Infinity, 1/parseInt("-0.9")); -assertEquals(-Infinity, 1/parseInt(-0.09)); -assertEquals(-Infinity, 1/parseInt(-0.009)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-737588.js b/implementation-contributed/v8/mjsunit/regress/regress-737588.js deleted file mode 100644 index 0f71dfc0bc4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-737588.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var goog = goog || {} ; -goog.global = this; -goog.globalEval = function(script) { - return goog.global.eval(script); -}; - -assertEquals(125, goog.globalEval('var foofoofoo = 125; foofoofoo')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-74.js b/implementation-contributed/v8/mjsunit/regress/regress-74.js deleted file mode 100644 index bdc3b5cf799..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-74.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the variable introduced by catch blocks is DontDelete. -// See http://code.google.com/p/v8/issues/detail?id=74 - -function test() { - try { - throw 42; - } catch(e) { - assertFalse(delete e, "deleting catch variable"); - assertEquals(42, e); - } -} - -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-740694.js b/implementation-contributed/v8/mjsunit/regress/regress-740694.js deleted file mode 100644 index 6f31fef0c7d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-740694.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony --allow-natives-syntax --stack-size=100 - -function __f_0() { - try { - return __f_0(); - } catch(e) { - return import('no-such-file'); - } -} - -var done = false; -var error; -var promise = __f_0(); -promise.then(assertUnreachable, - err => { done = true; error = err }); -%PerformMicrotaskCheckpoint(); -assertTrue(error.startsWith('Error reading')); -assertTrue(done); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-740784.js b/implementation-contributed/v8/mjsunit/regress/regress-740784.js deleted file mode 100644 index 920f9f1d43d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-740784.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --turbo-inline-array-builtins - -"".stack;;var isNeverOptimize;var isAlwaysOptimize;var isInterpreted;var isOptimized;var isCrankshafted;var isTurboFanned;var failWithMessage;(function(){{;} -function PrettyPrint(){switch(typeof value){case"string":return JSON.stringify();case"number":if(1/value<0);case"object":if(value===null);switch(objectClass){case"Number":case"String":case"Boolean":case"Date":return objectClass+"("+PrettyPrint();return objectClass+"(["+joined+"])";case"Object":break;default:return objectClass+"()";} -var name=value.constructor.name;if(name)return name+"()";return"Object()";default:return"-- unknown value --";}} -function fail(){var message="Fail"+"ure";if(name_opt){message+=" ("+name_opt+")";} -return true;} -assertSame=function assertSame(){if(found===expected){return;}else if((expected!==expected)&&(found!==found)){return;} -};assertThrows=function assertThrows(code){try{if(typeof code==='function'){code();}else{;}}catch(e){if(typeof type_opt==='function'){;}else if(type_opt!==void 0){;} -return;} -;;} -isTurboFanned=function isTurboFanned(){opt_status&V8OptimizationStatus.kOptimized!==0;}})(); -function __isPropertyOfType(){let desc;try{;}catch(e){return false;} -return false;return typeof type==='undefined'||typeof desc.value===type;} -function __getProperties(obj){if(typeof obj==="undefined"||obj===null) -return[];let properties=[];for(let name of Object.getOwnPropertyNames(obj)){ -properties.push(name);} -let proto=Object.getPrototypeOf(obj);while(proto&&proto!=Object.prototype){Object.getOwnPropertyNames(proto).forEach(name=>{if(name!=='constructor'){__isPropertyOfType() -;}});proto=Object.getPrototypeOf(proto);} -return properties;} -function*__getObjects(root=this,level=0){if(level>4) -return;let obj_names=__getProperties(root);for(let obj_name of obj_names){let obj=root[obj_name];if(obj===root) -continue;yield obj;yield*__getObjects();}} -function __getRandomObject(){let objects=[];for(let obj of __getObjects()){;} -return objects[seed%objects.length];} -for (var __v_0 = 0; __v_0 < 2000; __v_0++) { - Object.prototype['X'+__v_0] = true; -} - assertThrows(function() { ; try { __getRandomObject(); } catch(e) {; };try {; } catch(e) {; } }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-743622.js b/implementation-contributed/v8/mjsunit/regress/regress-743622.js deleted file mode 100644 index 60512585c2c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-743622.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm - -function Module(stdlib, foreign, heap) { - "use asm"; - var a = stdlib.Math.PI; - function f() { return a } - return { f:f }; -} -Module.length diff --git a/implementation-contributed/v8/mjsunit/regress/regress-744292.js b/implementation-contributed/v8/mjsunit/regress/regress-744292.js deleted file mode 100644 index 02c77cac202..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-744292.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --harmony-dynamic-import - -__v_1 = { -}; -function __f_8() { - try { - __f_8(); - } catch(e) { - import(__v_1); - } -} -__f_8(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-746909.js b/implementation-contributed/v8/mjsunit/regress/regress-746909.js deleted file mode 100644 index e3bd224908c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-746909.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-dynamic-import - -eval(`import('modules-skip-2.js');`); -eval(`eval(import('modules-skip-2.js'));`); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-747.js b/implementation-contributed/v8/mjsunit/regress/regress-747.js deleted file mode 100644 index a3de1314837..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-747.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// This test makes sure that we do flush code with heap allocated locals. -// This can be a problem if eval is used within the scope. -// See: http://code.google.com/p/v8/issues/detail?id=747 - -(function() { - var x = 42; - this.callEval = function() {eval('x');}; -})(); - -try { - callEval(); -} catch (e) { - assertUnreachable(); -} - -gc(); -gc(); -gc(); -gc(); -gc(); -gc(); - -try { - callEval(); -} catch (e) { - assertUnreachable(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-747075.js b/implementation-contributed/v8/mjsunit/regress/regress-747075.js deleted file mode 100644 index 28165079353..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-747075.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -r = [ - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 -]; - - -function f() { - r2 = r.map(function(y) {return y/64} ); - assertTrue(r2[0] < 1); -} - -for (let i = 0; i < 1000; ++i) f(); -for (let i = 0; i < 1000; ++i) f(); -%OptimizeFunctionOnNextCall(f); -for (let i = 0; i < 1000; ++i) f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-747825.js b/implementation-contributed/v8/mjsunit/regress/regress-747825.js deleted file mode 100644 index f61693e2cd9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-747825.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var g = 0; -g = function() {} - -function f() { - var r = /[abc]/i; // Optimized out. - g(r); -} - -f(); f(); %OptimizeFunctionOnNextCall(f); // Warm-up. - -var re; -g = function(r) { re = r; } -f(); // Lazy deopt is forced here. - -assertNotEquals(undefined, re); -assertEquals("[abc]", re.source); -assertEquals("i", re.flags); -assertEquals(0, re.lastIndex); -assertArrayEquals(["a"], re.exec("a")); -assertArrayEquals(["A"], re.exec("A")); -assertNull(re.exec("d")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-748069.js b/implementation-contributed/v8/mjsunit/regress/regress-748069.js deleted file mode 100644 index 86c2f8f5ec3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-748069.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This test gets very slow with slow asserts. -// Flags: --noenable-slow-asserts - -try { - var a = 'a'.repeat(1 << 28); -} catch (e) { - // If the allocation fails, we don't care, because we can't cause the - // overflow. -} -// Cause an overflow in worst-case calculation for string replacement. -JSON.stringify(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7510.js b/implementation-contributed/v8/mjsunit/regress/regress-7510.js deleted file mode 100644 index 0dd934573ae..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7510.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function foo(a) { - for (const x of a) { - a[100] = 1; - } -} - -foo([1]); -foo([1]); -%OptimizeFunctionOnNextCall(foo); -foo([1]); -%OptimizeFunctionOnNextCall(foo); -foo([1]); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-751789.js b/implementation-contributed/v8/mjsunit/regress/regress-751789.js deleted file mode 100644 index 049acd71a81..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-751789.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => eval('async A=>{s.await i}')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-752.js b/implementation-contributed/v8/mjsunit/regress/regress-752.js deleted file mode 100644 index d38870ef036..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-752.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that JSON.stringify correctly unwraps Boolean objects. - -// See: http://code.google.com/p/v8/issues/detail?id=752 - -function replacer(key, value) { - return value === 42 ? new Boolean(false) : value; -} - -assertEquals("[false]", JSON.stringify([42], replacer)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-752764.js b/implementation-contributed/v8/mjsunit/regress/regress-752764.js deleted file mode 100644 index 30ab7b2a6de..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-752764.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --nostress-incremental-marking - -// This test uses a lot of memory and fails with flaky OOM when run -// with --stress-incremental-marking on TSAN. - -a = "a".repeat(%StringMaxLength() - 3); -assertThrows(() => new RegExp("a" + a), SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-753.js b/implementation-contributed/v8/mjsunit/regress/regress-753.js deleted file mode 100644 index 0253962f50e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-753.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that JSON.stringify correctly truncates floating point numbers. -// This test is based on chapter15/15.12/15.12.3/15.12.3-6-a-2.js in the -// ES5 conformance tests. - -// See: http://code.google.com/p/v8/issues/detail?id=753 - -var obj = {a1: {b1: [1,2,3,4], b2: {c1: 1, c2: 2}},a2: 'a2'}; -assertEquals(JSON.stringify(obj, null, 5.99999), JSON.stringify(obj, null, 5)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-754.js b/implementation-contributed/v8/mjsunit/regress/regress-754.js deleted file mode 100644 index 0b8441628b9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-754.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that Array.prototype.lastIndexOf correctly handles null and undefined -// as fromIndex argument. - -// See: http://code.google.com/p/v8/issues/detail?id=754 - -var a = new Array(1,2,1); -assertEquals(1, a.lastIndexOf(2)); -assertEquals(2, a.lastIndexOf(1)); -assertEquals(0, a.lastIndexOf(1, undefined)); -assertEquals(0, a.lastIndexOf(1, null)); -assertEquals(-1, a.lastIndexOf(2, undefined)); -assertEquals(-1, a.lastIndexOf(2, null)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-756608.js b/implementation-contributed/v8/mjsunit/regress/regress-756608.js deleted file mode 100644 index 50377bec28a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-756608.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function() { - 'foo' in new Proxy({}, {has: 0}); -}, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-758763.js b/implementation-contributed/v8/mjsunit/regress/regress-758763.js deleted file mode 100644 index 87839c20968..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-758763.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const re = /./g; -function toSlowMode() { re.slow = true; } -re[Symbol.split]("abc", { valueOf: toSlowMode }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-760-1.js b/implementation-contributed/v8/mjsunit/regress/regress-760-1.js deleted file mode 100644 index 081c99309df..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-760-1.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that when valueOf for a String object is overwritten it is called and -// the result used when that object is added with a string. - -// See: http://code.google.com/p/v8/issues/detail?id=760 - -String.prototype.valueOf = function() { return 'y' }; - -function test() { - var o = Object('x'); - assertEquals('y', o + ''); - assertEquals('y', '' + o); -} - -for (var i = 0; i < 10; i++) { - var o = Object('x'); - assertEquals('y', o + ''); - assertEquals('y', '' + o); -} - -for (var i = 0; i < 10; i++) { - test() -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-760-2.js b/implementation-contributed/v8/mjsunit/regress/regress-760-2.js deleted file mode 100644 index 549ed4ee41c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-760-2.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that when valueOf for a String object is overwritten it is called and -// the result used when that object is added with a string. - -// See: http://code.google.com/p/v8/issues/detail?id=760 - -function test() { - var o = Object('x'); - o.valueOf = function() { return 'y' }; - assertEquals('y', o + ''); - assertEquals('y', '' + o); -} - -for (var i = 0; i < 10; i++) { - var o = Object('x'); - o.valueOf = function() { return 'y' }; - assertEquals('y', o + ''); - assertEquals('y', '' + o); -} - -for (var i = 0; i < 10; i++) { - test() -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-760268.js b/implementation-contributed/v8/mjsunit/regress/regress-760268.js deleted file mode 100644 index 6884ae1dca1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-760268.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var obj = this; -var handler = { - has: function() { return false; } -} -var proxy = new Proxy(obj, handler); -Object.defineProperty(obj, "nonconf", {}); -assertThrows("'nonconf' in proxy"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-760790.js b/implementation-contributed/v8/mjsunit/regress/regress-760790.js deleted file mode 100644 index 75770bad189..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-760790.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function g() { - var a = Array(0); - a[0]++; -} -g(); -g(); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-761639.js b/implementation-contributed/v8/mjsunit/regress/regress-761639.js deleted file mode 100644 index a5fa69f6d82..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-761639.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Regression test for hitting a DCHECK in StoreProxy. - - -for (var i = 0; i < 10; i++) { - __proto__ = new Proxy({}, { getPrototypeOf() { } }); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-761831.js b/implementation-contributed/v8/mjsunit/regress/regress-761831.js deleted file mode 100644 index 80ae256351d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-761831.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function OrigReproCase() { - assertThrows('var f = ([x=[a=undefined]=[]]) => {}; f();', TypeError); -} -OrigReproCase(); - -function SimpleReproCase() { - assertThrows('var f = ([x=[]=[]]) => {}; f()', TypeError); -} -SimpleReproCase(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7642.js b/implementation-contributed/v8/mjsunit/regress/regress-7642.js deleted file mode 100644 index fa9f023e8ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7642.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-public-fields - -const a = [2]; -const b = [4]; - -let log; - -class C { - constructor(...args) { - log = args; - } -} - -class D extends C { - field = 42; - constructor() { super(1) }; -} -assertEquals(42, (new D).field); -assertEquals([1], log); - -class E extends C { - field = 42; - constructor() { super(...a) }; -} -assertEquals(42, (new E).field); -assertEquals([2], log); - -class F extends C { - field = 42; - constructor() { super(1, ...a) }; -} -assertEquals(42, (new F).field); -assertEquals([1, 2], log); - -class G extends C { - field = 42; - constructor() { super(1, ...a, 3) }; -} -assertEquals(42, (new G).field); -assertEquals([1, 2, 3], log); - -class H extends C { - field = 42; - constructor() { super(1, ...a, 3, ...b) }; -} -assertEquals(42, (new H).field); -assertEquals([1, 2, 3, 4], log); - -class I extends C { - field = 42; - constructor() { super(1, ...a, 3, ...b, 5) }; -} -assertEquals(42, (new I).field); -assertEquals([1, 2, 3, 4, 5], log); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7652.js b/implementation-contributed/v8/mjsunit/regress/regress-7652.js deleted file mode 100644 index c83df25f8d9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7652.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const splice = Array.prototype.splice; -const unshift = Array.prototype.unshift; - -{ - let a = {length: 2**53 - 1}; - assertThrows(() => unshift.call(a, 42), TypeError); - assertEquals(unshift.call(a), 2**53 - 1); -} - -{ - let a = {length: 2**53 - 1}; - assertThrows(() => splice.call(a, 0, 0, 42), TypeError); - assertEquals(splice.call(a, 0, 1, 42).length, 1); - assertEquals(a[0], 42); -} - -{ - let a = {length: 2**53 - 1, [Symbol.isConcatSpreadable]: true}; - assertThrows(() => [42].concat(a), TypeError); - assertThrows(() => [, ].concat(a), TypeError); - assertThrows(() => [].concat(42, a), TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7677.js b/implementation-contributed/v8/mjsunit/regress/regress-7677.js deleted file mode 100644 index 0c951de6f75..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7677.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -// Generate a frozen or sealed array-like object. -function arraylike(freeze) { - let x; - const obj = {length: 42}; - Object.defineProperty(obj, 5, {get() {return x}, set(y) {x = y}}); - return freeze ? Object.freeze(obj) : Object.seal(obj); -} - -// Array.prototype.fill -{ - const sealed = arraylike(false); - Array.prototype.fill.call(sealed, "foo", 5, 6); - assertEquals("foo", sealed[5]); - assertThrows(() => Array.prototype.fill.call(sealed, "foo"), TypeError); -}{ - const frozen = arraylike(true); - Array.prototype.fill.call(frozen, "foo", 5, 6); - assertEquals("foo", frozen[5]); - assertThrows(() => Array.prototype.fill.call(frozen, "foo"), TypeError); -} - -// Array.prototype.shift -{ - const sealed = Object.seal({length: 0}); - assertEquals(undefined, Array.prototype.shift.call(sealed)); -}{ - const sealed = Object.seal({length: 42}); - assertEquals(undefined, Array.prototype.shift.call(sealed)); -}{ - let x; - let obj = {length: 42, [1]: "foo"}; - Object.defineProperty(obj, 0, {get() {return x}, set(y) {x = y}}); - const sealed = Object.seal(obj); - assertThrows(() => Array.prototype.shift.call(sealed), TypeError); - assertEquals("foo", sealed[0]); -}{ - const frozen = Object.freeze({length: 0}); - assertThrows(() => Array.prototype.shift.call(frozen), TypeError); -} - -// Array.prototype.splice -{ - const sealed = arraylike(false); - assertEquals([undefined], Array.prototype.splice.call(sealed, 5, 1, "foo")); - assertEquals("foo", sealed[5]); - assertThrows(() => Array.prototype.splice.call(sealed, 5, 0, "bar"), - TypeError); - assertEquals("foo", sealed[5]); -}{ - const frozen = arraylike(true); - assertThrows(() => Array.prototype.splice.call(frozen, 5, 1, "foo"), - TypeError); - assertEquals("foo", frozen[5]); - assertThrows(() => Array.prototype.splice.call(frozen, 5, 0, "bar"), - TypeError); - assertEquals("foo", frozen[5]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7716.js b/implementation-contributed/v8/mjsunit/regress/regress-7716.js deleted file mode 100644 index 8ce83678d93..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7716.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -// Deeply nested target. - -let proxy = new Proxy(function(){}, {}); -for (let i = 0; i < 100000; i++) { - proxy = new Proxy(proxy, {}); -} - -// Ensure these nested calls don't segfault. They may not all throw exceptions -// depending on whether the compiler is able to perform tail call optimization -// on the affected routines. -try { Reflect.apply(proxy, {}, []) } catch(_) {} -try { Reflect.construct(proxy, []) } catch(_) {} -try { Reflect.defineProperty(proxy, "x", {}) } catch(_) {} -try { Reflect.deleteProperty(proxy, "x") } catch(_) {} -try { Reflect.get(proxy, "x") } catch(_) {} -try { Reflect.getOwnPropertyDescriptor(proxy, "x") } catch(_) {} -try { Reflect.getPrototypeOf(proxy) } catch(_) {} -try { Reflect.has(proxy, "x") } catch(_) {} -try { Reflect.isExtensible(proxy) } catch(_) {} -try { Reflect.ownKeys(proxy) } catch(_) {} -try { Reflect.preventExtensions(proxy) } catch(_) {} -try { Reflect.setPrototypeOf(proxy, {}) } catch(_) {} -try { Reflect.set(proxy, "x", {}) } catch(_) {} - - -// Recursive handler. - -function run(trap, ...args) { - let handler = {}; - const proxy = new Proxy(function(){}, handler); - handler[trap] = (target, ...args) => Reflect[trap](proxy, ...args); - return Reflect[trap](proxy, ...args); -} - -assertThrows(() => run("apply", {}, []), RangeError); -assertThrows(() => run("construct", []), RangeError); -assertThrows(() => run("defineProperty", "x", {}), RangeError); -assertThrows(() => run("deleteProperty", "x"), RangeError); -assertThrows(() => run("get", "x"), RangeError); -assertThrows(() => run("getOwnPropertyDescriptor", "x"), RangeError); -assertThrows(() => run("has", "x"), RangeError); -assertThrows(() => run("isExtensible"), RangeError); -assertThrows(() => run("ownKeys"), RangeError); -assertThrows(() => run("preventExtensions"), RangeError); -assertThrows(() => run("setPrototypeOf", {}), RangeError); -assertThrows(() => run("set", "x", {}), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-772190.js b/implementation-contributed/v8/mjsunit/regress/regress-772190.js deleted file mode 100644 index 008ed63b4db..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-772190.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt - -assertThrows(function() { - __v_13383[4]; - let __v_13383 = {}; -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7740.js b/implementation-contributed/v8/mjsunit/regress/regress-7740.js deleted file mode 100644 index 01c21891e24..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7740.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var x = 0; -x = 42; - -function foo(a, b) { - let y = a < a; - if (b) x = y; -} - -foo(1, false); -foo(1, false); -%OptimizeFunctionOnNextCall(foo); -foo(1, true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-774475.js b/implementation-contributed/v8/mjsunit/regress/regress-774475.js deleted file mode 100644 index b11ea6c231b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-774475.js +++ /dev/null @@ -1,938 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = function f3() { - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-774824.js b/implementation-contributed/v8/mjsunit/regress/regress-774824.js deleted file mode 100644 index ca2deccad91..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-774824.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - var a = new Set().values(); - a.outOfObjectProperty = undefined; - %DeoptimizeNow(); - return !a; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-775888.js b/implementation-contributed/v8/mjsunit/regress/regress-775888.js deleted file mode 100644 index 8aa809e8124..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-775888.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function __f_7586(__v_27535) { - let a = __v_27535.shift(); - return a; -} - -function __f_7587() { - var __v_27536 = [ 1, 15, 16]; - __f_7586(__v_27536); - __v_27536.unshift(__v_27536); -} -__f_7587(); -__f_7587(); - -%OptimizeFunctionOnNextCall(__f_7586); -__f_7587(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-776309.js b/implementation-contributed/v8/mjsunit/regress/regress-776309.js deleted file mode 100644 index 98a38c05e59..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-776309.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function C() { } - -function f(b) { - var o = new C(); - // Create out-of-object properties only on one branch so that escape - // analysis does not analyze the property array away. - if (b) o.t = 1.1; - %_DeoptimizeNow(); - return o.t; -} - -// Finish slack tracking for C. -for (var i = 0; i < 1000; i++) new C(); - -f(true); -f(true); -f(false); - -%OptimizeFunctionOnNextCall(f); - -assertEquals(1.1, f(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-776338.js b/implementation-contributed/v8/mjsunit/regress/regress-776338.js deleted file mode 100644 index ce0cf40d8c7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-776338.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const obj = {}; -Object.defineProperty(obj, 'value', { - enumerable: true, - configurable: true, - get: assertUnreachable, - set: assertUnreachable, -}); - -let called_get = false; -let called_has = false; -let called_set = false; - -const has = function(target, prop) { - assertEquals('value', prop); - called_has = true; - return false; // Need to return false to trigger GetOwnProperty call. -}; - -const get = function(target, prop) { - assertEquals('value', prop); - called_get = true; - return 'yep'; -}; - -const set = function(target, prop, value) { - assertEquals('value', prop); - called_set = true; - return true; // Need to return true to trigger GetOwnProperty call. -}; - -const proxy = new Proxy(obj, { has, get, set }); - -assertFalse(Reflect.has(proxy, 'value')); -assertTrue(called_has); - -assertEquals('nope', proxy.value = 'nope'); -assertTrue(called_set); - -assertEquals('yep', proxy.value); -assertTrue(called_get); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7773.js b/implementation-contributed/v8/mjsunit/regress/regress-7773.js deleted file mode 100644 index 7930ae91063..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7773.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testFunctionNames() { - let descriptor = { - value: '', - writable: false, - enumerable: false, - configurable: true - }; - // Functions have a "name" property by default. - assertEquals( - descriptor, Object.getOwnPropertyDescriptor(function(){}, 'name')); - let a = { fn: function(){} }; - assertSame('fn', a.fn.name); - descriptor.value = 'fn'; - assertEquals(descriptor, Object.getOwnPropertyDescriptor(a.fn, 'name')); - - let b = { __proto__: function(){} }; - assertSame('', b.__proto__.name); - descriptor.value = ''; - assertEquals( - descriptor, Object.getOwnPropertyDescriptor(b.__proto__, 'name')); - - let c = { fn: function F(){} }; - assertSame('F', c.fn.name); - descriptor.value = 'F'; - assertEquals(descriptor, Object.getOwnPropertyDescriptor(c.fn, 'name')); - - let d = { __proto__: function E(){} }; - assertSame('E', d.__proto__.name); - descriptor.value = 'E'; - assertEquals( - descriptor, Object.getOwnPropertyDescriptor(d.__proto__, 'name')); -})(); - -(function testClassNames() { - let descriptor = { - value: '', - writable: false, - enumerable: false, - configurable: true - }; - - // Anonymous classes do not have a "name" property by default. - assertSame(undefined, Object.getOwnPropertyDescriptor(class {}, 'name')); - descriptor.value = 'C'; - assertEquals(descriptor, Object.getOwnPropertyDescriptor(class C {}, 'name')); - - let a = { fn: class {} }; - assertSame('fn', a.fn.name); - descriptor.value = 'fn'; - assertEquals(descriptor, Object.getOwnPropertyDescriptor(a.fn, 'name')); - - let b = { __proto__: class {} }; - assertSame('', b.__proto__.name); - assertSame( - undefined, Object.getOwnPropertyDescriptor(b.__proto__, 'name')); - - let c = { fn: class F {} }; - assertSame('F', c.fn.name); - descriptor.value = 'F'; - assertEquals(descriptor, Object.getOwnPropertyDescriptor(c.fn, 'name')); - - let d = { __proto__: class F {} }; - assertSame('F', d.__proto__.name); - descriptor.value = 'F'; - assertEquals( - descriptor, Object.getOwnPropertyDescriptor(d.__proto__, 'name')); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-778574.js b/implementation-contributed/v8/mjsunit/regress/regress-778574.js deleted file mode 100644 index 862418e5037..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-778574.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function () { - arguments.length = 7; - Array.prototype.slice.call(arguments); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-778668.js b/implementation-contributed/v8/mjsunit/regress/regress-778668.js deleted file mode 100644 index 93bde122229..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-778668.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function () { - function f() { - arguments.length = -5; - Array.prototype.slice.call(arguments); - } - f('a') -})(); - -(function () { - function f() { - arguments.length = 2.3; - Array.prototype.slice.call(arguments); - } - f('a') -})(); - -(function () { - function f( __v_59960) { - arguments.length = -5; - Array.prototype.slice.call(arguments); - } - f('a') -})(); - -(function () { - function f( __v_59960) { - arguments.length = 2.3; - Array.prototype.slice.call(arguments); - } - f('a') -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7791.js b/implementation-contributed/v8/mjsunit/regress/regress-7791.js deleted file mode 100644 index 9b4d2c4f1a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7791.js +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - - -// Data property last. - -{ - const o = { - get foo() { return 666 }, - foo: 42, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value); -} - -{ - const o = { - set foo(_) { }, - foo: 42, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value); -} - -{ - const o = { - get foo() { return 666 }, - set foo(_) { }, - foo: 42, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value); -} - -{ - const o = { - get foo() { return 666 }, - set ['foo'.slice()](_) { }, - foo: 42, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value); -} - -{ - const o = { - get ['foo'.slice()]() { return 666 }, - set ['foo'.slice()](_) { }, - foo: 42, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').value); -} - - -// Data property first. - -{ - const o = { - foo: 666, - get foo() { return 42 }, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get()); -} - -{ - const o = { - foo: 666, - set foo(_) { }, - }; - assertEquals(undefined, Object.getOwnPropertyDescriptor(o, 'foo').get); - assertEquals(undefined, Object.getOwnPropertyDescriptor(o, 'foo').value); -} - -{ - const o = { - foo: 666, - get foo() { return 42 }, - set foo(_) { }, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get()); -} - -{ - const o = { - foo: 666, - get ['foo'.slice()]() { return 42 }, - set foo(_) { }, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get()); -} - -{ - const o = { - foo: 666, - get ['foo'.slice()]() { return 42 }, - set ['foo'](_) { }, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get()); -} - - -// Data property in the middle. - -{ - const o = { - get foo() { return 42 }, - foo: 666, - set foo(_) { }, - }; - assertEquals(undefined, Object.getOwnPropertyDescriptor(o, 'foo').get); - assertEquals(undefined, Object.getOwnPropertyDescriptor(o, 'foo').set()); -} - -{ - const o = { - set foo(_) { }, - foo: 666, - get foo() { return 42 }, - }; - assertEquals(42, Object.getOwnPropertyDescriptor(o, 'foo').get()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-779407.js b/implementation-contributed/v8/mjsunit/regress/regress-779407.js deleted file mode 100644 index 140f7bdd747..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-779407.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = '\u1234-------'; -for (var i = 0; i < 17; i++) { - try { - s += s; - s += s; - } catch (e) { - } -} -s.replace(/[a]/g); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-780423.js b/implementation-contributed/v8/mjsunit/regress/regress-780423.js deleted file mode 100644 index 862db324ab7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-780423.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var Class = { - create: function() { - return function kurt() { - } - } -}; - -var o1 = Class.create(); -var o2 = Class.create(); - -assertTrue(o1 !== o2, "different functions"); -assertTrue(o1.prototype !== o2.prototype, "different protos"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-781218.js b/implementation-contributed/v8/mjsunit/regress/regress-781218.js deleted file mode 100644 index f51e99f32b4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-781218.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var m = new Map(); - -function C() { } - -// Make sure slack tracking kicks in and shrinks the default size to prevent -// any further in-object properties. -%CompleteInobjectSlackTracking(new C()); - -function f(o) { - o.x = true; -} - -// Warm up {f}. -f(new C()); -f(new C()); - - -var o = new C(); -%HeapObjectVerify(o); - -// We need at least 2 elements in the Map. -m.set({}, 3); -// This creates hash code on o. -m.set(o, 1); - -// Add an out-of-object property. -o.x = true; -%HeapObjectVerify(o); -// Delete the property (so we have no out-of-object properties). -delete o.x; -%HeapObjectVerify(o); - - -// Ensure that growing the properties backing store in optimized code preserves -// the hash. -%OptimizeFunctionOnNextCall(f); -f(o); - -%HeapObjectVerify(o); -assertEquals(1, m.get(o)); - -// Grow the Map and ensure the object is still found. -for (let i = 0; i < 1000; i++) { - let object = {}; - m.set(object, object); - assertEquals(1, m.get(o)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-782145.js b/implementation-contributed/v8/mjsunit/regress/regress-782145.js deleted file mode 100644 index 65464e23cd7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-782145.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function newFastRegExp() { return new RegExp('.'); } -function toSlowRegExp(re) { re.exec = 42; } - -let re = newFastRegExp(); -const evil_nonstring = { [Symbol.toPrimitive]: () => toSlowRegExp(re) }; -const empty_string = ""; - -String.prototype.replace.call(evil_nonstring, re, empty_string); - -re = newFastRegExp(); -String.prototype.match.call(evil_nonstring, re, empty_string); - -re = newFastRegExp(); -String.prototype.search.call(evil_nonstring, re, empty_string); - -re = newFastRegExp(); -String.prototype.split.call(evil_nonstring, re, empty_string); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-78270.js b/implementation-contributed/v8/mjsunit/regress/regress-78270.js deleted file mode 100644 index b9ce286feb8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-78270.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -for (var i = 0; i < 10000; i++) { - try { - var object = { }; - function g(f0) { - var f0 = (object instanceof encodeURI)('foo'); - } - g(75); - } catch (g) { - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-782754.js b/implementation-contributed/v8/mjsunit/regress/regress-782754.js deleted file mode 100644 index 608c48ad9ec..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-782754.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let a = [1,2]; -function f(skip) { g(undefined, skip) } -function g(x, skip) { - if (skip) return; - return a[x+1]; -} -g(0, false); -g(0, false); -f(true); -f(true); -%OptimizeFunctionOnNextCall(f); -f(false); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-783051.js b/implementation-contributed/v8/mjsunit/regress/regress-783051.js deleted file mode 100644 index 0e5af37a212..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-783051.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { return Math.abs([][0]); } -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-783119.js b/implementation-contributed/v8/mjsunit/regress/regress-783119.js deleted file mode 100644 index 68200a837f5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-783119.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let a = [,,,,,,,,,,,,,,,,,,,,,,,11,12,13,14,15,16,17,18,19]; -%NormalizeElements(a); -let b = a.slice(19); -assertEquals(11, b[4]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-784.js b/implementation-contributed/v8/mjsunit/regress/regress-784.js deleted file mode 100644 index 4ba02276e10..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-784.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that CallApplyLazy, generating optimized code for apply calls of the -// form x.apply(y, arguments), does not leave an extra copy of the result -// on the stack. - -// See http://code.google.com/p/v8/issues/detail?id=784 - -A = {x:{y:function(i){return i;}}}; -B = function(x){return 17;}; - -foo = function () { - A.x.y(B.apply(this, arguments)); -}; - -foo(); -foo("Hello", "There"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-784080.js b/implementation-contributed/v8/mjsunit/regress/regress-784080.js deleted file mode 100644 index 83b32b678fa..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-784080.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -(function() { - function f(a, b, a) { - return Array.prototype.slice.call(arguments); - } - let result = f(456, 789, 111112); - assertEquals(result[0], 456); - assertEquals(result[1], 789); - assertEquals(result[2], 111112); - assertEquals(result.length, 3); -})(); - -(function() { - function f(a, b, a) { - return Array.prototype.slice.call(arguments); - } - let result = f(456, 789, 111112, 543, 654); - assertEquals(result[0], 456); - assertEquals(result[1], 789); - assertEquals(result[2], 111112); - assertEquals(result[3], 543); - assertEquals(result[4], 654); - assertEquals(result.length, 5); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-784862.js b/implementation-contributed/v8/mjsunit/regress/regress-784862.js deleted file mode 100644 index 54710020155..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-784862.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This test triggers table allocation in large object space. We don't care -// about the result as long as we don't crash. -const array = new Array(); -array[0x80000] = 1; -array.unshift({}); -assertThrows(() => new WeakMap(array)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-784863.js b/implementation-contributed/v8/mjsunit/regress/regress-784863.js deleted file mode 100644 index 1612197af2b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-784863.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -var __v_18522 = [ 4.2, true, false]; -Object.defineProperty(__v_18522, 2, { - get: function () { - return false; - }, -}); -__v_18522.shift(); -__v_18522.slice(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-784990.js b/implementation-contributed/v8/mjsunit/regress/regress-784990.js deleted file mode 100644 index 7a572530787..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-784990.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const key1 = {}; -const key2 = {}; - -const set = new Set([, 1]); -assertEquals(set.has(undefined), true); -assertEquals(set.has(1), true); - -const doubleSet = new Set([,1.234]); -assertEquals(doubleSet.has(undefined), true); -assertEquals(doubleSet.has(1.234), true); - -const map = new Map([[, key1], [key2, ]]); -assertEquals(map.get(undefined), key1); -assertEquals(map.get(key2), undefined); - -const doublesMap = new Map([[, 1.234]]); -assertEquals(doublesMap.get(undefined), 1.234); - -const weakmap = new WeakMap([[key1, ]]); -assertEquals(weakmap.get(key1), undefined); - -assertThrows(() => new WeakSet([, {}])); -assertThrows(() => new WeakSet([, 1.234])); -assertThrows(() => new Map([, [, key1]])); -assertThrows(() => new WeakMap([[, key1]])); -assertThrows(() => new WeakMap([, [, key1]])); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-785804.js b/implementation-contributed/v8/mjsunit/regress/regress-785804.js deleted file mode 100644 index 2dce3be73e5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-785804.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let __v_25059 = { - valueOf: function () { - let __v_25062 = __v_25055.length; - __v_25055.length = 1; - return __v_25062; - } -}; -let __v_25060 = []; -for (let __v_25063 = 0; __v_25063 < 1500; __v_25063++) { - __v_25060.push("" + 0.1); -} -for (let __v_25064 = 0; __v_25064 < 75; __v_25064++) { - __v_25055 = __v_25060.slice(); - __v_25056 = __v_25055.slice(0, __v_25059); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-786573.js b/implementation-contributed/v8/mjsunit/regress/regress-786573.js deleted file mode 100644 index a7d5f37e756..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-786573.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let cnt = 0; -let reg = /./g; -reg.exec = () => { - // Note: it's still possible to trigger OOM by passing huge values here, since - // the spec requires building a list of all captures in - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace - if (cnt++ == 0) return {length: 2 ** 16}; - cnt = 0; - return null; -}; - -assertThrows(() => ''.replace(reg, () => {}), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-786784.js b/implementation-contributed/v8/mjsunit/regress/regress-786784.js deleted file mode 100644 index fb0f3a95b3d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-786784.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - function g(arg) { return arg; } - // The closure contains a call IC slot. - return function() { return g(42); }; -} - -const a = Realm.create(); -const b = Realm.create(); - -// Create two closures in different contexts sharing the same -// SharedFunctionInfo (shared due to code caching). -const x = Realm.eval(a, f.toString() + " f()"); -const y = Realm.eval(b, f.toString() + " f()"); - -// Run the first closure to create SFI::code. -x(); - -// At this point, SFI::code is set and `x` has a feedback vector (`y` does not). - -// Enabling block code coverage deoptimizes all functions and triggers the -// buggy code path in which we'd unconditionally replace JSFunction::code with -// its SFI::code (but skip feedback vector setup). -%DebugToggleBlockCoverage(true); - -// Still no feedback vector set on `y` but it now contains code. Run it to -// trigger the crash when attempting to write into the non-existent feedback -// vector. -y(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7893.js b/implementation-contributed/v8/mjsunit/regress/regress-7893.js deleted file mode 100644 index 5ed008e7cf9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-7893.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -function Module(stdlib, imports, buffer) { - "use asm"; - function f() { - var bar = 0; - return 0x1e+bar|0; - } - return f; -} -var f = Module(this); -assertTrue(%IsWasmCode(f)); -assertTrue(%IsAsmWasmCode(Module)); -assertEquals(0x1e, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-791334.js b/implementation-contributed/v8/mjsunit/regress/regress-791334.js deleted file mode 100644 index 9f2748fdad7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-791334.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// MODULE - -let foo = () => { return this }; -assertEquals(undefined, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-791345.js b/implementation-contributed/v8/mjsunit/regress/regress-791345.js deleted file mode 100644 index 3a92dcde98f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-791345.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function(a) { - var len = 0x80000000; - arguments.length = len; - Array.prototype.slice.call(arguments, len - 1, len); -}('a')); - -(function(a) { - var len = 0x40000000; - arguments.length = len; - Array.prototype.slice.call(arguments, len - 1, len); -}('a')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-791958.js b/implementation-contributed/v8/mjsunit/regress/regress-791958.js deleted file mode 100644 index 443ef6e3592..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-791958.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -obj = {m: print}; -function foo() { - for (var x = -536870912; x != -536870903; ++x) { - obj.m(-x >= 1000000 ? x % 1000000 : y); - } -} -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-793588.js b/implementation-contributed/v8/mjsunit/regress/regress-793588.js deleted file mode 100644 index ea30d127753..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-793588.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertNull(/a\P{Any}a/u.exec("a\u{d83d}a")); -assertEquals(["a\u{d83d}a"], /a\p{Any}a/u.exec("a\u{d83d}a")); -assertEquals(["a\u{d83d}a"], /(?:a\P{Any}a|a\p{Any}a)/u.exec("a\u{d83d}a")); -assertNull(/a[\P{Any}]a/u.exec("a\u{d83d}a")); -assertEquals(["a\u{d83d}a"], /a[^\P{Any}]a/u.exec("a\u{d83d}a")); -assertEquals(["a\u{d83d}a"], /a[^\P{Any}x]a/u.exec("a\u{d83d}a")); -assertNull(/a[^\P{Any}x]a/u.exec("axa")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-793793.js b/implementation-contributed/v8/mjsunit/regress/regress-793793.js deleted file mode 100644 index f7f57c7104a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-793793.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => new RegExp("\\1(\\P{P\0[}()/", "u"), SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-794.js b/implementation-contributed/v8/mjsunit/regress/regress-794.js deleted file mode 100644 index 409b2ef46c0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-794.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the a bound function does not have a prototype. - -function foo() {} -assertFalse("prototype" in foo.bind()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-794822.js b/implementation-contributed/v8/mjsunit/regress/regress-794822.js deleted file mode 100644 index c9b46001d17..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-794822.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function* opt(arg = () => arg) { - let tmp = opt.x; // LdaNamedProperty - for (;;) { - arg; - yield; - function inner() { tmp } - break; - } -} - -opt(); -%OptimizeFunctionOnNextCall(opt); -opt(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-794825.js b/implementation-contributed/v8/mjsunit/regress/regress-794825.js deleted file mode 100644 index 3709e8eabc4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-794825.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - - -function* opt() { - // The for loop to generate a SwitchOnSmiNoFeedback with holes - // at the end since yield will be eliminated. - for (;;) - if (true) { - } else { - yield; - } - - // Another loop to force more holes in the constant pool to - // verify if bounds checks works when iterating over the jump - // table. - for (;;) - if (true) { - } else { - yield; - } -} - -opt(); -// Optimize function to trigger the iteration over jump -// table. -%OptimizeFunctionOnNextCall(opt); -opt(); -assertOptimized(opt); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-796427.js b/implementation-contributed/v8/mjsunit/regress/regress-796427.js deleted file mode 100644 index c09688d1ec1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-796427.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --stack-size=150 - -assertThrows(() => "" + { toString: Object.prototype.toLocaleString }, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-797481.js b/implementation-contributed/v8/mjsunit/regress/regress-797481.js deleted file mode 100644 index 7963dbd3b77..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-797481.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -const a = /x/; - -a.exec = RegExp.prototype.test; -assertThrows(() => RegExp.prototype.test.call(a), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-797581.js b/implementation-contributed/v8/mjsunit/regress/regress-797581.js deleted file mode 100644 index 3dfad4c4630..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-797581.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --harmony-dynamic-import -// Resources: test/mjsunit/regress/modules-skip-regress-797581-1.js -// Resources: test/mjsunit/regress/modules-skip-regress-797581-2.js -// Resources: test/mjsunit/regress/modules-skip-regress-797581-3.js -// Resources: test/mjsunit/regress/modules-skip-regress-797581-4.js -// Resources: test/mjsunit/regress/modules-skip-regress-797581-5.js - -function TryToLoadModule(filename, expect_error, token) { - let caught_error; - - function SetError(e) { - caught_error = e; - } - - import(filename).catch(SetError); - %PerformMicrotaskCheckpoint(); - - if (expect_error) { - assertTrue(caught_error instanceof SyntaxError); - assertEquals("Unexpected token " + token, caught_error.message); - } else { - assertEquals(undefined, caught_error); - } -} - -TryToLoadModule("modules-skip-regress-797581-1.js", true, ")"); -TryToLoadModule("modules-skip-regress-797581-2.js", true, ")"); -TryToLoadModule("modules-skip-regress-797581-3.js", true, "..."); -TryToLoadModule("modules-skip-regress-797581-4.js", true, ","); -TryToLoadModule("modules-skip-regress-797581-5.js", false); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-798.js b/implementation-contributed/v8/mjsunit/regress/regress-798.js deleted file mode 100644 index 182eb4da771..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-798.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = {}; - -// Add property a with getter/setter. -x.__defineGetter__("a", function() { - try { - y.x = 40; - } catch (e) { - assertEquals(3, e.stack.split('\n').length); - } - return 40; -}); - -x.__defineSetter__("a", function(val) { - try { - y.x = 40; - } catch(e) { - assertEquals(3, e.stack.split('\n').length); - } -}); - -// Add property b with getter/setter. -function getB() { - try { - y.x = 30; - } catch (e) { - assertEquals(3, e.stack.split('\n').length); - } - return 30; -} - -function setB(val) { - try { - y.x = 30; - } catch(e) { - assertEquals(3, e.stack.split('\n').length); - } -} - -x.__defineGetter__("b", getB); -x.__defineSetter__("b", setB); - -// Add property c with getter/setter. -var descriptor = { - get: function() { - try { - y.x = 40; - } catch (e) { - assertEquals(3, e.stack.split('\n').length); - } - return 40; - }, - set: function(val) { - try { - y.x = 40; - } catch(e) { - assertEquals(3, e.stack.split('\n').length); - } - } -} - -Object.defineProperty(x, 'c', descriptor) - -// Check that the stack for an exception in a getter and setter produce the -// expected stack height. -x.a; -x.b; -x.c; -x.a = 1; -x.b = 1; -x.c = 1; - -// Do the same with the getters/setters on the a prototype object. -xx = {} -xx.__proto__ = x - -xx.a; -xx.b; -xx.c; -xx.a = 1; -xx.b = 1; -xx.c = 1; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-799690.js b/implementation-contributed/v8/mjsunit/regress/regress-799690.js deleted file mode 100644 index e7bf143bb00..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-799690.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=500 - -function asm() { - "use asm"; - function f(a) { - a = a | 0; - while (1) return 1; - return 0; - } - return { f: f}; -} -const mod = asm(); -function call_f() { - mod.f(); - call_f(); -} -assertThrows(call_f, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-799813.js b/implementation-contributed/v8/mjsunit/regress/regress-799813.js deleted file mode 100644 index cc357fc25f1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-799813.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function testAdvanceLastIndex(initial_last_index_value, - expected_final_last_index_value) { - let exec_call_count = 0; - let last_index_setter_call_count = 0; - let final_last_index_value; - - var customRegexp = { - get flags() { return "gu"; }, - get global() { return true; }, - get unicode() { return true; }, - get lastIndex() { - return initial_last_index_value; - }, - set lastIndex(v) { - last_index_setter_call_count++; - final_last_index_value = v; - }, - exec() { - return (exec_call_count++ == 0) ? [""] : null; - } - }; - - RegExp.prototype[Symbol.replace].call(customRegexp); - - assertEquals(2, exec_call_count); - assertEquals(2, last_index_setter_call_count); - assertEquals(expected_final_last_index_value, final_last_index_value); -} - -testAdvanceLastIndex(-1, 1); -testAdvanceLastIndex( 0, 1); -testAdvanceLastIndex(2**31 - 2, 2**31 - 1); -testAdvanceLastIndex(2**31 - 1, 2**31 - 0); -testAdvanceLastIndex(2**32 - 3, 2**32 - 2); -testAdvanceLastIndex(2**32 - 2, 2**32 - 1); -testAdvanceLastIndex(2**32 - 1, 2**32 - 0); -testAdvanceLastIndex(2**53 - 2, 2**53 - 1); -testAdvanceLastIndex(2**53 - 1, 2**53 - 0); -testAdvanceLastIndex(2**53 - 0, 2**53 - 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-800538.js b/implementation-contributed/v8/mjsunit/regress/regress-800538.js deleted file mode 100644 index bc420d676c9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-800538.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -RegExp.prototype.__defineGetter__("global", () => true); -assertEquals("/()/g", /()/.toString()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-800651.js b/implementation-contributed/v8/mjsunit/regress/regress-800651.js deleted file mode 100644 index 05e31fe4ca1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-800651.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -var list = []; -function log(item) { list.push(item); } -async function f() { - try { - let namespace = await import(/a/); - } catch(e) { - log(1); - } -} -f(); - -async function importUndefined() { - try { - await import({ get toString() { return undefined; }}) - } catch(e) { - log(2); - } -} - -function g() { - let namespace = Promise.resolve().then(importUndefined); -} -g(); -%PerformMicrotaskCheckpoint(); -assertEquals(list, [1,2]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-801171.js b/implementation-contributed/v8/mjsunit/regress/regress-801171.js deleted file mode 100644 index 4bd85eeafc9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-801171.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let called_custom_unicode_getter = false; -const re = /./; - -function f() { - re.__defineGetter__("unicode", function() { - called_custom_unicode_getter = true; - }); - return 2; -} - -assertEquals(["","",], re[Symbol.split]("abc", { valueOf: f })); - -// The spec mandates retrieving the regexp instance's flags before -// ToUint(limit), i.e. the unicode getter must still be unmodified when -// flags are retrieved. -assertFalse(called_custom_unicode_getter); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-801772.js b/implementation-contributed/v8/mjsunit/regress/regress-801772.js deleted file mode 100644 index 06597e251ae..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-801772.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo(f) { f(); } - -foo(function arguments() { - function skippable() { } -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-802060.js b/implementation-contributed/v8/mjsunit/regress/regress-802060.js deleted file mode 100644 index e9756154843..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-802060.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertEquals(expected, found) { - found.length !== expected.length; -} -assertEquals([], []) -assertEquals("a", "a"); -assertEquals([], []); -function f() { - assertEquals(0, undefined); -} -try { - f(); -} catch (e) { -} -%OptimizeFunctionOnNextCall(f); -try { - f(); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8033.js b/implementation-contributed/v8/mjsunit/regress/regress-8033.js deleted file mode 100644 index 437ca2a0a6a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8033.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("foo: if (true) do { continue foo } while (false)", SyntaxError); -assertThrows("foo: if (true) while (false) { continue foo }", SyntaxError); -assertThrows("foo: if (true) for (; false; ) { continue foo }", SyntaxError); -assertThrows("foo: if (true) for (let x of []) { continue foo }", SyntaxError); -assertThrows("foo: if (true) for (let x in []) { continue foo }", SyntaxError); - -assertThrows("foo: if (true) { do { continue foo } while (false) }", SyntaxError); -assertThrows("foo: if (true) { while (false) { continue foo } }", SyntaxError); -assertThrows("foo: if (true) { for (; false; ) { continue foo } }", SyntaxError); -assertThrows("foo: if (true) { for (let x of []) { continue foo } }", SyntaxError); -assertThrows("foo: if (true) { for (let x in []) { continue foo } }", SyntaxError); - -assertThrows("foo: goo: if (true) do { continue foo } while (false)", SyntaxError); -assertThrows("foo: goo: if (true) while (false) { continue foo }", SyntaxError); -assertThrows("foo: goo: if (true) for (; false; ) { continue foo }", SyntaxError); -assertThrows("foo: goo: if (true) for (let x of []) { continue foo }", SyntaxError); -assertThrows("foo: goo: if (true) for (let x in []) { continue foo }", SyntaxError); - -assertThrows("foo: goo: if (true) { do { continue foo } while (false) }", SyntaxError); -assertThrows("foo: goo: if (true) { while (false) { continue foo } }", SyntaxError); -assertThrows("foo: goo: if (true) { for (; false; ) { continue foo } }", SyntaxError); -assertThrows("foo: goo: if (true) { for (let x of []) { continue foo } }", SyntaxError); -assertThrows("foo: goo: if (true) { for (let x in []) { continue foo } }", SyntaxError); - -assertDoesNotThrow("if (true) foo: goo: do { continue foo } while (false)"); -assertDoesNotThrow("if (true) foo: goo: while (false) { continue foo }"); -assertDoesNotThrow("if (true) foo: goo: for (; false; ) { continue foo }"); -assertDoesNotThrow("if (true) foo: goo: for (let x of []) { continue foo }"); -assertDoesNotThrow("if (true) foo: goo: for (let x in []) { continue foo }"); - -assertThrows("if (true) foo: goo: { do { continue foo } while (false) }", SyntaxError); -assertThrows("if (true) foo: goo: { while (false) { continue foo } }", SyntaxError); -assertThrows("if (true) foo: goo: { for (; false; ) { continue foo } }", SyntaxError); -assertThrows("if (true) foo: goo: { for (let x of []) { continue foo } }", SyntaxError); -assertThrows("if (true) foo: goo: { for (let x in []) { continue foo } }", SyntaxError); - -assertDoesNotThrow("if (true) { foo: goo: do { continue foo } while (false) }"); -assertDoesNotThrow("if (true) { foo: goo: while (false) { continue foo } }"); -assertDoesNotThrow("if (true) { foo: goo: for (; false; ) { continue foo } }"); -assertDoesNotThrow("if (true) { foo: goo: for (let x of []) { continue foo } }"); -assertDoesNotThrow("if (true) { foo: goo: for (let x in []) { continue foo } }"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-803750.js b/implementation-contributed/v8/mjsunit/regress/regress-803750.js deleted file mode 100644 index 3541ff9a35e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-803750.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Verify that very large arrays can be constructed. -assertEquals(Array.isArray(Array.of.apply(Array, Array(65536))), true); -assertEquals(Array.isArray(Array.of.apply(null, Array(65536))), true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-804096.js b/implementation-contributed/v8/mjsunit/regress/regress-804096.js deleted file mode 100644 index 43a2ef47548..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-804096.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --opt - -for (let i = 0; i < 5000; i++) { - try { - [].reduce(function() {}); - } catch (x) { - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-804176.js b/implementation-contributed/v8/mjsunit/regress/regress-804176.js deleted file mode 100644 index ab36c8ccbb9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-804176.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const set_entries = [{}]; -set_entries[Symbol.iterator] = function() {}; -assertThrows(() => new Set(set_entries), TypeError); -assertThrows(() => new WeakSet(set_entries), TypeError); - -const map_entries = [[{}, 1]]; -map_entries[Symbol.iterator] = function() {}; -assertThrows(() => new Set(map_entries), TypeError); -assertThrows(() => new WeakSet(map_entries), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-804177.js b/implementation-contributed/v8/mjsunit/regress/regress-804177.js deleted file mode 100644 index b1004805995..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-804177.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Tests that insertion at the beginning via unshift won't crash when using a -// constructor that creates an array larger than normal. (Also values inserted -// by original constructor past the end should not survive into the result of -// unshift). -(function testUnshift() { - a = [1]; - function f() { - return a; - } - b = Array.of.call(f); - b.unshift(2); - assertEquals(b, [2]); -})(); - -// Tests that insertion past the end won't expose values previously put into the -// backing store by using a constructor that creates an array larger than normal. -(function testInsertionPastEnd() { - a = [9,9,9,9]; - function f() { - return a; - } - b = Array.of.call(f,1,2); - b[4] = 1; - assertEquals(b, [1, 2, undefined, undefined, 1]); -})(); - -// Tests that using Array.of with a constructor returning an object with an -// unwriteable length throws a TypeError. -(function testFrozenArrayThrows() { - function f() { - return Object.freeze([1,2,3]); - } - assertThrows(function() { Array.of.call(f); }, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-804188.js b/implementation-contributed/v8/mjsunit/regress/regress-804188.js deleted file mode 100644 index 72fe8ef6516..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-804188.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(Array.prototype, Symbol.iterator, { - value: function* () {} -}); -const arrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]()); -arrayIteratorProto.next = function() {}; - -assertThrows(() => new Map([[{}, 1], [{}, 2]]), TypeError); -assertThrows(() => new WeakMap([[{}, 1], [{}, 2]]), TypeError); -assertThrows(() => new Set([{}]), TypeError); -assertThrows(() => new WeakSet([{}]), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-804288.js b/implementation-contributed/v8/mjsunit/regress/regress-804288.js deleted file mode 100644 index 6f7855d68c0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-804288.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var arr = [{}]; -Object.setPrototypeOf(arr, {}); -var ta = new Uint8Array(arr); - -let kDeclNoLocals = 0; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-804801.js b/implementation-contributed/v8/mjsunit/regress/regress-804801.js deleted file mode 100644 index daec8dc92fd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-804801.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { return 42; } -const bound_function = f.bind(); -const callable_proxy = new Proxy(function(){}.__proto__, {}); - -function testSet(ctor) { - new ctor([]); - new ctor([{},{}]); -} - -function testMap(ctor) { - new ctor([]); - new ctor([[{},{}],[{},{}]]); -} - -function testAllVariants(set_or_add_function) { - Set.prototype.add = set_or_add_function; - testSet(Set); - - WeakSet.prototype.add = set_or_add_function; - testSet(WeakSet); - - Map.prototype.set = set_or_add_function; - testMap(Map); - - WeakMap.prototype.set = set_or_add_function; - testMap(WeakMap); -} - -testAllVariants(bound_function); -testAllVariants(callable_proxy); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-804837.js b/implementation-contributed/v8/mjsunit/regress/regress-804837.js deleted file mode 100644 index 2e5e603a7fa..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-804837.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --opt --allow-natives-syntax - -var __v_25662 = [, 1.8]; -function __f_6214(__v_25668) { - __v_25662.reduce(() => {1}); -} -__f_6214(); -__f_6214(); -%OptimizeFunctionOnNextCall(__f_6214); -__f_6214(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-805729.js b/implementation-contributed/v8/mjsunit/regress/regress-805729.js deleted file mode 100644 index 0703aa2ad8e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-805729.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -async function* asyncGenerator() {}; -let gen = asyncGenerator(); -gen.return({ get then() { delete this.then; gen.next(); } }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-805768.js b/implementation-contributed/v8/mjsunit/regress/regress-805768.js deleted file mode 100644 index e36106fdb3e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-805768.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - var a = ['']; - print(a[0]); - return a; -} - -function bar(a) { a[0] = "bazinga!"; } - -for (var i = 0; i < 5; i++) bar([]); - -%OptimizeFunctionOnNextCall(bar); -bar(foo()); -assertEquals([''], foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-806.js b/implementation-contributed/v8/mjsunit/regress/regress-806.js deleted file mode 100644 index 1bb3e0f286b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-806.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we do no use r12 as a receiver in inlined NamedStores on x64. - -// See: http://code.google.com/p/v8/issues/detail?id=806 - -function foo(a) { - for (var o = 1; o < 2; o++) { - for (var n = 1; n < 2; n++) { - for (var m = 1; m < 2; m++) { - for (var l = 1; l < 2; l++) { - for (var i = 1; i < 2; i++) { - for (var j = 1; j < 2; j++) { - for (var k = 1; k < 2; k++) { - var z = a.foo; - z.foo = i * j * k * m * n * o; - } - } - } - } - } - } - } -} - -foo({foo: {foo: 1}}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-806473.js b/implementation-contributed/v8/mjsunit/regress/regress-806473.js deleted file mode 100644 index 91c9a9f60b2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-806473.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -function catchThese() { - L: { - try { - break L; - } catch (e) {} - } -} - -function finallyThese() { - L: { - try { - break L; - } finally {} - } -} - - -for (var i = 0; i < 10; i++) { - catchThese(); - gc(); -} - -for (var j = 0; j < 10; j++) { - finallyThese(); - gc(); -} - -assertEquals(10, i); -assertEquals(10, j); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-812451.js b/implementation-contributed/v8/mjsunit/regress/regress-812451.js deleted file mode 100644 index 8ccad1d124b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-812451.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var x = []; -function foo(x, p) { - x[p] = 5.3; -} -foo(x, 1); -foo(x, 2); -foo(x, -1); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8133-1.js b/implementation-contributed/v8/mjsunit/regress/regress-8133-1.js deleted file mode 100644 index 8f3cc734a62..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8133-1.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const arr = [1, , 3]; - -function mapper(x) { - Array.prototype[1] = 2; - return x + 1; -} - -// This iterates over arr using the iterator protocol, which turns the hole into -// undefined. The mapper function then gets called in a separate iteration over -// the acquired elements, where it increments undefined, which produces NaN and -// gets converted to 0. -assertArrayEquals([2, 0, 4], Uint16Array.from(arr, mapper)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8133-2.js b/implementation-contributed/v8/mjsunit/regress/regress-8133-2.js deleted file mode 100644 index e163e3c784d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8133-2.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const arr = [1, , 3]; - -function mapper(x) { - Array.prototype[1] = 2; - return x + 1; -} - -// We force a direct iteration (using the array length, not the iterator -// protocol). The mapper function gets called during this iteration, not in a -// separate one. Hence when index 1 is read, 2 is retrieved from the prototype -// and incremented to 3. -Array.prototype[Symbol.iterator] = undefined; -assertArrayEquals([2, 3, 4], Uint16Array.from(arr, mapper)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-813440.js b/implementation-contributed/v8/mjsunit/regress/regress-813440.js deleted file mode 100644 index f4df95daae7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-813440.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --invoke-weak-callbacks --omit-quit --expose-wasm --allow-natives-syntax - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -const builder = new WasmModuleBuilder(); -builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 42]); -const buffer = builder.toBuffer(); -// Start async compilation, but don't wait for it to finish. -const module = WebAssembly.compile(buffer); - -// This create the collator. -'퓛'.localeCompare(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-814643.js b/implementation-contributed/v8/mjsunit/regress/regress-814643.js deleted file mode 100644 index 085c56fe84f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-814643.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Number.prototype.__proto__ = String.prototype; -Uint8Array.from(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-815.js b/implementation-contributed/v8/mjsunit/regress/regress-815.js deleted file mode 100644 index 803c0fb3027..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-815.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// 815 describes a situation in which the ARM code generator could -// end up in a spilled scope in code that only worked in a register -// allocated scope. Test that this no longer happens. -// -// The code generated for unary + assumes that we are not in a spilled -// scope. - -var o = new Object(); - -// The code for the iterated-over object in for-in used to be emitted -// in a spilled scope: -for (x in +o) { } - -// Emitting code for the left hand side of a for-in. -for (a[+o] in o) {} - -// The receiver in an obj[index](1, 2, 3) call: -try { - o[+o](1,2,3) -} catch(e) { - // It's OK as long as it does not hit an assert. -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-816289.js b/implementation-contributed/v8/mjsunit/regress/regress-816289.js deleted file mode 100644 index 4a3a4b629de..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-816289.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -delete String.prototype[Symbol.iterator]; -Int8Array.from("anything"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-816317.js b/implementation-contributed/v8/mjsunit/regress/regress-816317.js deleted file mode 100644 index 304786e694e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-816317.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let a = new Float64Array(15); -Object.defineProperty(a, "length", { - get: function () { - return 6; - } -}); -delete a.__proto__.__proto__[Symbol.iterator]; -Float64Array.from(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-818070.js b/implementation-contributed/v8/mjsunit/regress/regress-818070.js deleted file mode 100644 index 7afb695b29d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-818070.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --opt --no-always-opt --allow-natives-syntax - -function f(a) { - Math.imul(a); -} - -x = { [Symbol.toPrimitive]: () => FAIL }; -f(1); -f(1); -%OptimizeFunctionOnNextCall(f); -assertThrows(() => f(x), ReferenceError); - -function f(a) { - Math.pow(a); -} - -x = { [Symbol.toPrimitive]: () => FAIL }; -f(1); -f(1); -%OptimizeFunctionOnNextCall(f); -assertThrows(() => f(x), ReferenceError); - -function f(a) { - Math.atan2(a); -} - -x = { [Symbol.toPrimitive]: () => FAIL }; -f(1); -f(1); -%OptimizeFunctionOnNextCall(f); -assertThrows(() => f(x), ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-818438.js b/implementation-contributed/v8/mjsunit/regress/regress-818438.js deleted file mode 100644 index 67f235df32a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-818438.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo(b) { - [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ...b]; -} -Array.prototype.__defineSetter__("0", () => {}); -foo([3.3, 3.3, 3.3]); -foo([{}, 3.3]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-821137.js b/implementation-contributed/v8/mjsunit/regress/regress-821137.js deleted file mode 100644 index 639b3b998a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-821137.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Tests that creating an iterator that shrinks the array populated by -// Array.from does not lead to out of bounds writes. -let oobArray = []; -let maxSize = 1028 * 8; -Array.from.call(function() { return oobArray }, {[Symbol.iterator] : _ => ( - { - counter : 0, - next() { - let result = this.counter++; - if (this.counter > maxSize) { - oobArray.length = 0; - return {done: true}; - } else { - return {value: result, done: false}; - } - } - } -) }); -assertEquals(oobArray.length, maxSize); - -// iterator reset the length to 0 just before returning done, so this will crash -// if the backing store was not resized correctly. -oobArray[oobArray.length - 1] = 0x41414141; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-821368.js b/implementation-contributed/v8/mjsunit/regress/regress-821368.js deleted file mode 100644 index 8f8a01b3f73..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-821368.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const worker = new Worker("onmessage = function(){}", {type: 'string'}); -const buffer = new ArrayBuffer(); -worker.postMessage(buffer, [buffer]); -try { - worker.postMessage(buffer, [buffer]); -} catch (e) { - if (e != "ArrayBuffer could not be transferred") { - throw e; - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8241.js b/implementation-contributed/v8/mjsunit/regress/regress-8241.js deleted file mode 100644 index fb9d5475cb3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8241.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(x) { } -f(x=>x, [x,y] = [1,2]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8265.js b/implementation-contributed/v8/mjsunit/regress/regress-8265.js deleted file mode 100644 index ffe6191c9f4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8265.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --random-seed=1 - -for (let i = 0; i < 54; ++i) Math.random(); -let sum = 0; -for (let i = 0; i < 10; ++i) - sum += Math.floor(Math.random() * 50); - -assertNotEquals(0, sum); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-82769.js b/implementation-contributed/v8/mjsunit/regress/regress-82769.js deleted file mode 100644 index 6a95e9a927d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-82769.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --noinline-new - -x = -1; -y = -0; -for (var i = 0; i < 5; i++) { - assertEquals(0xFFFFFFFF, (x >>> y)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8377.js b/implementation-contributed/v8/mjsunit/regress/regress-8377.js deleted file mode 100644 index 32d2eb74fb8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8377.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Module(global, env, buffer) { - "use asm"; - function test1() { - var x = 0; - x = -1 / 1 | 0; - return x | 0; - } - function test2() { - var x = 0; - x = (-1 / 1) | 0; - return x | 0; - } - return { test1: test1, test2: test2 }; -}; -let module = Module(this); -assertEquals(-1, module.test1()); -assertEquals(-1, module.test2()); -assertTrue(%IsAsmWasmCode(Module)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8384.js b/implementation-contributed/v8/mjsunit/regress/regress-8384.js deleted file mode 100644 index bbb0d575e44..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8384.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assert(cond) { if (!cond) throw "Assert"; } - -function Constructor() { - this.padding1 = null; - this.padding2 = null; - this.padding3 = null; - this.padding4 = null; - this.padding5 = null; - this.padding6 = null; - this.padding7 = null; - this.padding8 = null; - this.padding9 = null; - this.padding10 = null; - this.padding11 = null; - this.padding12 = null; - this.padding13 = null; - this.padding14 = null; - this.padding15 = null; - this.padding16 = null; - this.padding17 = null; - this.padding18 = null; - this.padding19 = null; - this.padding20 = null; - this.padding21 = null; - this.padding22 = null; - this.padding23 = null; - this.padding24 = null; - this.padding25 = null; - this.padding26 = null; - this.padding27 = null; - this.padding28 = null; - this.padding29 = null; - this.array = null; - this.accumulator = 0; -} - -function f(k) { - var c = k.accumulator | 0; - k.accumulator = k.array[(k.accumulator + 1 | 0)] | 0; - k.array[c + 1 | 0] = (-1); - var head = k.accumulator; - assert((head + c) & 1); - while (head >= 0) { - head = k.array[head + 1 | 0]; - } - return; -} - -const tmp = new Constructor(); -tmp.array = new Int32Array(5); -for (var i = 1; i < 5; i++) - tmp.array[i] = i | 0; -tmp.accumulator = 0; - -f(tmp); -f(tmp); -%OptimizeFunctionOnNextCall(f); -f(tmp); // This must not trigger the {assert}. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-838766.js b/implementation-contributed/v8/mjsunit/regress/regress-838766.js deleted file mode 100644 index 1626ee24283..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-838766.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -function foo(x) { - x = x | 2147483648; - return Number.parseInt(x + 65535, 8); -} -assertEquals(-72161, foo()); -assertEquals(-72161, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(-72161, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-840106.js b/implementation-contributed/v8/mjsunit/regress/regress-840106.js deleted file mode 100644 index 568ab754792..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-840106.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var buffer = new ArrayBuffer(1024 * 1024); -buffer.constructor = { - [Symbol.species]: new Proxy(function() {}, { - get: _ => { - %ArrayBufferDetach(buffer); - } - }) -}; -var array1 = new Uint8Array(buffer, 0, 1024); -assertThrows(() => new Uint8Array(array1)); -assertThrows(() => new Int8Array(array1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-842.js b/implementation-contributed/v8/mjsunit/regress/regress-842.js deleted file mode 100644 index 18ad6d3d15b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-842.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// 842 describes a scenario where Object.prototype or Array.prototype is -// changed (a property is added) after which freeze and seal would fail -// since that property would be listed when doing a "for (var key in names)" - -Array.prototype.myfunc = function() {}; -Array.prototype[10] = 42; -Array.prototype.length = 3000; - -var obj = { name: "n1" }; - -try { - obj = Object.freeze(obj); -} catch (e) { - assertUnreachable(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-842017.js b/implementation-contributed/v8/mjsunit/regress/regress-842017.js deleted file mode 100644 index 3a367bbddb5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-842017.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -function break_from_for_in() { - L: { - try { - for (var x in [1,2,3]) { - break L; - } - } finally {} - } -} - -function break_from_finally() { - L: { - try { - } finally { - break L; - } - } -} - -for (var i = 0; i < 10; i++) { - break_from_for_in(); - gc(); -} - -for (var j = 0; j < 10; j++) { - break_from_finally(); - gc(); -} - -assertEquals(10, i); -assertEquals(10, j); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-842078.js b/implementation-contributed/v8/mjsunit/regress/regress-842078.js deleted file mode 100644 index 9ce6aecfd6e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-842078.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-externalize-string - -// Attempt to externalize a string that's in RO_SPACE, which is not allowed as -// the string's map would need to be writable. -assertThrows(() => { - externalizeString("1", false) -}); -assertThrows(() => { - externalizeString("1", true) -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-84234.js b/implementation-contributed/v8/mjsunit/regress/regress-84234.js deleted file mode 100644 index 6377fb31373..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-84234.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --noopt - -var gTestcases = new Array(); - -function TestCase(n, d, e, a) { - gTestcases[gTc++] = this; - for ( gTc=0; gTc < gTestcases.length; gTc++ ); -} - -for ( var i = 0x0530; i <= 0x058F; i++ ) { - new TestCase("15.5.4.11-6", - eval("var s = new String(String.fromCharCode(i)); s.toLowerCase().charCodeAt(0)")); -} -var gTc= 0; - - -for (var j = 0; j < 10; j++) { - test(); - function test() { - for ( 0; gTc < gTestcases.length; gTc++ ) { - var MYOBJECT = new MyObject(); - } - gc(); - } - function MyObject( n ) { - this.__proto__ = Number.prototype; - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-842612.js b/implementation-contributed/v8/mjsunit/regress/regress-842612.js deleted file mode 100644 index d489f969c55..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-842612.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var arr = [undefined]; - -function f() { - assertEquals(0, arr.indexOf(undefined, -1)); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-843062-1.js b/implementation-contributed/v8/mjsunit/regress/regress-843062-1.js deleted file mode 100644 index 60ea65abf5e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-843062-1.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var sparse_array = []; - -sparse_array[100] = 3; -sparse_array[200] = undefined; -sparse_array[300] = 4; -sparse_array[400] = 5; -sparse_array[500] = 6; -sparse_array[600] = 5; -sparse_array[700] = 4; -sparse_array[800] = undefined; -sparse_array[900] = 3 -sparse_array[41999] = "filler"; - -sparse_array.lastIndexOf(3, 99); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-843062-2.js b/implementation-contributed/v8/mjsunit/regress/regress-843062-2.js deleted file mode 100644 index 30170d5a254..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-843062-2.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -class C { - [1]() { return 'B'; } -} -Object.keys(C.prototype); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-843062-3.js b/implementation-contributed/v8/mjsunit/regress/regress-843062-3.js deleted file mode 100644 index e9ff907b4a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-843062-3.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(len) { return new Array(len); } -bar(0); -%OptimizeFunctionOnNextCall(bar); -bar(0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-843543.js b/implementation-contributed/v8/mjsunit/regress/regress-843543.js deleted file mode 100644 index 7e7f86b5722..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-843543.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -const o = {x:9}; -o.__proto__ = Array.prototype; - -function foo(o) { - return o.indexOf(undefined); -} - -assertEquals(-1, foo(o)); -assertEquals(-1, foo(o)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(-1, foo(o)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8449.js b/implementation-contributed/v8/mjsunit/regress/regress-8449.js deleted file mode 100644 index 32fa82aa6e9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8449.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -{ - const x = [, 1]; - x.__proto__ = [42]; - const y = [...x]; - assertEquals([42, 1], y); - assertTrue(y.hasOwnProperty(0)); -} - -{ - const x = [, 1]; - x.__proto__ = [42]; - assertEquals(42, x[Symbol.iterator]().next().value); -} - -{ - const array_prototype = [].__proto__; - array_prototype[0] = 42; - const x = [, 1]; - assertEquals(42, x[Symbol.iterator]().next().value); - delete array_prototype[0]; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-849663.js b/implementation-contributed/v8/mjsunit/regress/regress-849663.js deleted file mode 100644 index 8e8304feb4a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-849663.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const v1 = 0xFFFFFFFF; -const v3 = new Float64Array(); -new Date(v3, v3, 0xFFFFFFFF,); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-851.js b/implementation-contributed/v8/mjsunit/regress/regress-851.js deleted file mode 100644 index d8f693ee8c2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-851.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var i = 0; -for (var i = 0; i < 10000; i++) { - Object.freeze({}); - assertNull(JSON.stringify({x: null}).match(/\0/)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-852258.js b/implementation-contributed/v8/mjsunit/regress/regress-852258.js deleted file mode 100644 index 0cf1a45c711..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-852258.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - let ta0 = new Int16Array(0x24924925); - let ta2 = ta0.slice(1); - let ta1 = ta0.slice(0x24924924); -} catch (e) { - // Allocation failed, that's fine. -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-852765.js b/implementation-contributed/v8/mjsunit/regress/regress-852765.js deleted file mode 100644 index 393adf2079e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-852765.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// The actual regression test -assertThrows("(import(foo)) =>", undefined, "Invalid destructuring assignment target"); - -// Other related tests -assertThrows("import(foo) =>", undefined, "Malformed arrow function parameter list"); -assertThrows("(a, import(foo)) =>", undefined, "Invalid destructuring assignment target"); -assertThrows("(1, import(foo)) =>", undefined, "Invalid destructuring assignment target"); -assertThrows("(super(foo)) =>", undefined, "'super' keyword unexpected here"); -assertThrows("(bar(foo)) =>", undefined, "Invalid destructuring assignment target"); - -// No syntax errors -assertThrows("[import(foo).then] = [1];", undefined, "foo is not defined"); -assertThrows("[[import(foo).then]] = [[1]];", undefined, "foo is not defined"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-854066-2.js b/implementation-contributed/v8/mjsunit/regress/regress-854066-2.js deleted file mode 100644 index d37126b0f6e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-854066-2.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -oobArray = []; -delete oobArray.__proto__[Symbol.iterator]; -for (let i = 0; i < 1e5; ++i) { - oobArray[i] = 1.1; -} -floatArray = new Float64Array(oobArray.length); -Float64Array.from.call(function(length) { - oobArray.length = 0; - return floatArray; -}, oobArray); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-854066.js b/implementation-contributed/v8/mjsunit/regress/regress-854066.js deleted file mode 100644 index 418084b2a74..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-854066.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -oobArray = []; -for (let i = 0; i < 1e5; ++i) { - oobArray[i] = 1.1; -} -floatArray = new Float64Array(oobArray.length); -Float64Array.from.call(function(length) { - oobArray.length = 0; - return floatArray; -}, oobArray); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-857.js b/implementation-contributed/v8/mjsunit/regress/regress-857.js deleted file mode 100644 index 183248d4c61..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-857.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure ES5 15.9.1.15 (ISO 8601 / RFC 3339) time zone offsets of -// the form "+09:00" & "-09:00" get parsed as expected -assertEquals(1283326536000, Date.parse("2010-08-31T22:35:36-09:00")); -assertEquals(1283261736000, Date.parse("2010-08-31T22:35:36+09:00")); -assertEquals(1283326536000, Date.parse("2010-08-31T22:35:36.0-09:00")); -assertEquals(1283261736000, Date.parse("2010-08-31T22:35:36.0+09:00")); -// colon-less time expressions in time zone offsets are not conformant -// with ES5 15.9.1.15 but are nonetheless supported in V8 -assertEquals(1283326536000, Date.parse("2010-08-31T22:35:36-0900")); -assertEquals(1283261736000, Date.parse("2010-08-31T22:35:36+0900")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-86.js b/implementation-contributed/v8/mjsunit/regress/regress-86.js deleted file mode 100644 index a33b60bc98e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-86.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var aList = [1, 2, 3]; -var loopCount = 0; -var leftThroughFinally = false; -var enteredFinally = false; -for (x in aList) { - leftThroughFinally = true; - try { - throw "ex1"; - } catch(er1) { - loopCount += 1; - } finally { - enteredFinally = true; - continue; - } - leftThroughFinally = false; -} -assertEquals(3, loopCount); -assertTrue(enteredFinally); -assertTrue(leftThroughFinally); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8607.js b/implementation-contributed/v8/mjsunit/regress/regress-8607.js deleted file mode 100644 index 9f77bc5d79f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8607.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("[({ p: this }), [][0]] = x", SyntaxError); -assertThrows("[...a, [][0]] = []", SyntaxError); -assertThrows("[...o=1,[][0]] = []", SyntaxError); -assertThrows("({x(){},y:[][0]} = {})", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-862433.js b/implementation-contributed/v8/mjsunit/regress/regress-862433.js deleted file mode 100644 index 015a45a2b04..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-862433.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var arr = []; -for (var i = 1; i != 390000; ++i) { - arr.push("f()"); -} -new Function(arr.join()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8630.js b/implementation-contributed/v8/mjsunit/regress/regress-8630.js deleted file mode 100644 index f51807b4a55..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8630.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Parameters can't have parentheses (both patterns and identifiers) -assertThrows("( ({x: 1}) ) => {};", SyntaxError); -assertThrows("( (x) ) => {}", SyntaxError); -assertThrows("( ({x: 1}) = y ) => {}", SyntaxError); -assertThrows("( (x) = y ) => {}", SyntaxError); - -// Declarations can't have parentheses (both patterns and identifiers) -assertThrows("let [({x: 1})] = [];", SyntaxError); -assertThrows("let [(x)] = [];", SyntaxError); -assertThrows("let [({x: 1}) = y] = [];", SyntaxError); -assertThrows("let [(x) = y] = [];", SyntaxError); -assertThrows("var [({x: 1})] = [];", SyntaxError); -assertThrows("var [(x)] = [];", SyntaxError); -assertThrows("var [({x: 1}) = y] = [];", SyntaxError); -assertThrows("var [(x) = y] = [];", SyntaxError); - -// Patterns in can't have parentheses in assignments either -assertThrows("[({x: 1}) = y] = [];", SyntaxError); - -// Parentheses are fine around identifiers in assignments though, even inside a -// pattern -var x; -[(x)] = [2]; -assertEquals(x, 2); -[(x) = 3] = []; -assertEquals(x, 3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-863155.js b/implementation-contributed/v8/mjsunit/regress/regress-863155.js deleted file mode 100644 index fb5d465d801..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-863155.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt - -for (let i = 0; i < 5; i++) { - try { typeof x } catch (e) {}; - let x; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-863810.js b/implementation-contributed/v8/mjsunit/regress/regress-863810.js deleted file mode 100644 index 3bec6f5ae97..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-863810.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-liftoff --no-wasm-tier-up --no-future --debug-code - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction('main', kSig_i_v) - .addBody([ - kExprI64Const, 0xa3, 0x82, 0x83, 0x86, 0x8c, 0xd8, 0xae, 0xb5, 0x40, - kExprI32ConvertI64, - kExprI32Const, 0x00, - kExprI32Sub, - ]).exportFunc(); -const instance = builder.instantiate(); -print(instance.exports.main(1, 2, 3)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-865310.js b/implementation-contributed/v8/mjsunit/regress/regress-865310.js deleted file mode 100644 index 57f976991ac..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-865310.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -check = function() { - assertEquals(null, check.caller); -} - -var obj = {}; -obj.valueOf = check; - -function f() { - Number(obj); -} - -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8659.js b/implementation-contributed/v8/mjsunit/regress/regress-8659.js deleted file mode 100644 index 636c667c799..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8659.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("const [(x)] = []", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-869735.js b/implementation-contributed/v8/mjsunit/regress/regress-869735.js deleted file mode 100644 index dfa7b8385be..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-869735.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - return arguments.length; -} - -var a = []; -%OptimizeFunctionOnNextCall(f); -a.length = 81832; -f(...a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-87.js b/implementation-contributed/v8/mjsunit/regress/regress-87.js deleted file mode 100644 index 10446fdf45a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-87.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// In Issue 87, we allowed unicode escape sequences in RegExp flags. -// However, according to ES5, they should not be interpreted, but passed -// verbatim to the RegExp constructor. -// (On top of that, the original test was bugged and never tested anything). -// The behavior was changed in r8969 to not interpret escapes, but this -// test didn't test that, and only failed when making invalid flag characters -// an error too. - -assertThrows("/x/\\u0067"); -assertThrows("/x/\\u0069"); -assertThrows("/x/\\u006d"); - -assertThrows("/x/\\u0067i"); -assertThrows("/x/\\u0069m"); -assertThrows("/x/\\u006dg"); - -assertThrows("/x/m\\u0067"); -assertThrows("/x/g\\u0069"); -assertThrows("/x/i\\u006d"); - -assertThrows("/x/m\\u0067i"); -assertThrows("/x/g\\u0069m"); -assertThrows("/x/i\\u006dg"); - -assertThrows("/x/\\u0068"); -assertThrows("/x/\\u0020"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8708.js b/implementation-contributed/v8/mjsunit/regress/regress-8708.js deleted file mode 100644 index 4faff3324ce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8708.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -let array = new Array(1); -array.splice(1, 0, array); - -assertThrows(() => array.flat(Infinity), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-874.js b/implementation-contributed/v8/mjsunit/regress/regress-874.js deleted file mode 100644 index 384d9c78866..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-874.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = { }; - -var getter = function(){ return 42; }; -var setter = function(value){ }; -x.__defineGetter__(0, getter); -x.__defineSetter__(0, setter); - -assertEquals (undefined, Object.getOwnPropertyDescriptor(x, 0).value); -assertEquals (getter, Object.getOwnPropertyDescriptor(x, 0).get); -assertEquals (setter, Object.getOwnPropertyDescriptor(x, 0).set); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-874178.js b/implementation-contributed/v8/mjsunit/regress/regress-874178.js deleted file mode 100644 index 0ed5434a1ea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-874178.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function foo(){} -assertTrue(Function.prototype.isPrototypeOf(foo)); - -foo.bar = 'hello'; -assertTrue(foo.propertyIsEnumerable('bar')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-875031.js b/implementation-contributed/v8/mjsunit/regress/regress-875031.js deleted file mode 100644 index f18b08475b2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-875031.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for issue 875031. - -var caught = false; -try { - eval("return;"); - assertTrue(false); // should not reach here -} catch (e) { - caught = true; -} -assertTrue(caught); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-875493.js b/implementation-contributed/v8/mjsunit/regress/regress-875493.js deleted file mode 100644 index 81fbac4319e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-875493.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function test() { - const re = /./y; - re.lastIndex = 3; - const str = 'fg'; - return re[Symbol.replace](str, '$'); -} - -%SetForceSlowPath(false); -const fast = test(); -%SetForceSlowPath(true); -const slow = test(); -%SetForceSlowPath(false); - -assertEquals(slow, fast); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-877615.js b/implementation-contributed/v8/mjsunit/regress/regress-877615.js deleted file mode 100644 index bec5a4d1b8d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-877615.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Number.prototype.toLocaleString = function() { return 'invalid'; }; -assertEquals('invalid', [1].toLocaleString()); // invalid - -Number.prototype.toLocaleString = 'invalid'; -assertThrows(function() { [1].toLocaleString(); }); // Not callable. - -delete Number.prototype.toLocaleString; -Number.prototype.toString = function() { return 'invalid' }; -assertEquals([1].toLocaleString(), 'invalid'); // Uses ToObject on elements. -assertEquals([1].toString(), '1'); // Uses ToString directly on elements. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-883059.js b/implementation-contributed/v8/mjsunit/regress/regress-883059.js deleted file mode 100644 index ed70feddb4c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-883059.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --random-seed=-1595876594 --disable-in-process-stack-traces --no-lazy - -var __v_47 = ({[__v_46]: __f_52}) => { var __v_46 = 'b'; return __f_52; }; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-88591.js b/implementation-contributed/v8/mjsunit/regress/regress-88591.js deleted file mode 100644 index 878e7918b18..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-88591.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for a crash. A data property in the global object's -// prototype shadowed by a setter in the global object's prototype's -// prototype would crash or assert when seen by Runtime_DeclareContextSlot. -var called = false; -Object.prototype.__defineSetter__('x', function(x) { called = true; }); -Object.prototype.__defineGetter__('x', function () { return 0; }); - -this.__proto__ = { x: 1 }; - -try { fail; } catch (e) { eval('var x = 2'); } - -var o = Object.getOwnPropertyDescriptor(this, 'x'); -assertFalse(called); -assertEquals(2, o.value); -assertEquals(true, o.writable); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-88858.js b/implementation-contributed/v8/mjsunit/regress/regress-88858.js deleted file mode 100644 index ba33f87036a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-88858.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Verify that JSObject::PreventExtensions works for arguments objects. - -try { - function make_watcher(name) { } - var o, p; - function f(flag) { - if (flag) { - o = arguments; - } else { - p = arguments; - o.watch(0, (arguments-1901)('o')); - p.watch(0, make_watcher('p')); - p.unwatch(0); - o.unwatch(0); - p[0] = 4; - assertEq(flag, 4); - } - } - f(true); - f(false); - reportCompare(true, true); -} catch(exc1) { } - -try { - function __noSuchMethod__() { - if (anonymous == "1") - return NaN; - return __construct__; - } - f.p = function() { }; - Object.freeze(p); - new new freeze().p; - reportCompare(0, 0, "ok"); -} catch(exc2) { } - -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-889722.js b/implementation-contributed/v8/mjsunit/regress/regress-889722.js deleted file mode 100644 index c883dbe4895..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-889722.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function getRandomProperty(v, rand) { - var properties = Object.getOwnPropertyNames(v); - return properties[rand % properties.length]; -} -r = Realm.create(); -o = Realm.eval(r, "() => { return Realm.global(-10) instanceof Object }"); -o.__p_211203344 = o[getRandomProperty(o, 211203344)]; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-890553.js b/implementation-contributed/v8/mjsunit/regress/regress-890553.js deleted file mode 100644 index 33f13e8f26b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-890553.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -var s = "function __f_9(func, testName) {" + - "var __v_0 = function __f_10(__v_14, __v_14) {" + - " return __v_16;" + - "}; " + -"}" -assertThrows(function() { eval(s); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-892742.js b/implementation-contributed/v8/mjsunit/regress/regress-892742.js deleted file mode 100644 index fd79fc0fac0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-892742.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - return/* Counts as non-line-terminating whitespace */1; -}; - -// According to ECMA-262, this comment should be parsed as a -// line terminator making g() return undefined. -function g() { - return/* Counts as line-terminator whitespace. - */2; -}; - -function h() { - return// Comment doesn't include line-terminator at end. - 3; -}; - - -assertEquals(1, f()); -assertEquals(undefined, g()); -assertEquals(undefined, h()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-892858.js b/implementation-contributed/v8/mjsunit/regress/regress-892858.js deleted file mode 100644 index ec921e3d43a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-892858.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -async function foo() { - await Promise.resolve(42); -} - -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-895691.js b/implementation-contributed/v8/mjsunit/regress/regress-895691.js deleted file mode 100644 index 6f63ac6c9b0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-895691.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const n = 2**32; -const x = new Float32Array(); - -function f() { - for (var i = 96; i < 100; i += 4) { - x[i] = i + n; - } -} - -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-896326.js b/implementation-contributed/v8/mjsunit/regress/regress-896326.js deleted file mode 100644 index 88c2e56e2cd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-896326.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -function f() { -} - -var large_array = Array(150 * 1024); -assertThrows('new f(... large_array)', RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-897366.js b/implementation-contributed/v8/mjsunit/regress/regress-897366.js deleted file mode 100644 index 990e21590e5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-897366.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --gc-interval=100 - -let xs = []; -for (let i = 0; i < 205; ++i) { - xs.push(i); -} -xs.sort((a, b) => { - xs.shift(); - xs[xs.length] = -246; - return a - b; -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-897512.js b/implementation-contributed/v8/mjsunit/regress/regress-897512.js deleted file mode 100644 index 649ee2b922d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-897512.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Fill up the Array prototype's elements. -for (let i = 0; i < 100; i++) Array.prototype.unshift(3.14); - -// Create a holey double elements array. -const o31 = [1.1]; -o31[37] = 2.2; - -// Concat converts to dictionary elements. -const o51 = o31.concat(false); - -// Set one element to undefined to trigger the movement bug. -o51[0] = undefined; - -assertEquals(o51.length, 39); - -// Sort triggers the bug. -o51.sort(); - -assertEquals(o51.length, 39); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-897815.js b/implementation-contributed/v8/mjsunit/regress/regress-897815.js deleted file mode 100644 index 40a8c5e1efd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-897815.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function __f_19350() { - function __f_19351() { - function __f_19352() { - } - } - try { - __f_19350(); - } catch (e) {} - %OptimizeFunctionOnNextCall(__f_19351) -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-898812.js b/implementation-contributed/v8/mjsunit/regress/regress-898812.js deleted file mode 100644 index 889bd53d3a0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-898812.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("(async)(a)=>{}", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-898936.js b/implementation-contributed/v8/mjsunit/regress/regress-898936.js deleted file mode 100644 index b32c4691c4d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-898936.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("async(...x=e)()=>"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-899115.js b/implementation-contributed/v8/mjsunit/regress/regress-899115.js deleted file mode 100644 index 5b4099792ff..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-899115.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - Object.getPrototypeOf([]).includes(); -} - -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-899133.js b/implementation-contributed/v8/mjsunit/regress/regress-899133.js deleted file mode 100644 index 4e11d491604..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-899133.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("let fun = ({a} = {a: 30}) => {", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-899474.js b/implementation-contributed/v8/mjsunit/regress/regress-899474.js deleted file mode 100644 index ea16bb0098e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-899474.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("class A {...", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-899537.js b/implementation-contributed/v8/mjsunit/regress/regress-899537.js deleted file mode 100644 index 3cd772cc659..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-899537.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[ class { c = [ c ] = c } ] diff --git a/implementation-contributed/v8/mjsunit/regress/regress-900.js b/implementation-contributed/v8/mjsunit/regress/regress-900.js deleted file mode 100644 index 9f94348dd33..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-900.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that we allow accessors on JSArray elements. - -var a = []; -var b = {} -Object.defineProperty(a, "1", {get: function() {return "foo";}}); -Object.defineProperty( - b, "1", {get: function() {return "bar";}, set: function() {this.x = 42;}}); -assertEquals(a[1], 'foo'); -assertEquals(b[1], 'bar'); -// Make sure we can't overwrite an accessor, but that the setter is -// instead called. -b[1] = 'foobar'; -assertEquals(b[1], 'bar'); -assertEquals(b.x, 42); - -var desc = Object.getOwnPropertyDescriptor(b, "1"); -assertEquals(desc['writable'], undefined); -assertFalse(desc['enumerable']); -assertFalse(desc['configurable']); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-900055.js b/implementation-contributed/v8/mjsunit/regress/regress-900055.js deleted file mode 100644 index 9a02f222c2d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-900055.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var alias = eval; -function e(s) { return alias(s); } - -assertEquals(42, e("42")); -assertEquals(Object, e("Object")); -assertEquals(e, e("e")); - -var caught = false; -try { - e('s'); // should throw exception since aliased eval is global -} catch (e) { - caught = true; - assertTrue(e instanceof ReferenceError); -} -assertTrue(caught); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-900085.js b/implementation-contributed/v8/mjsunit/regress/regress-900085.js deleted file mode 100644 index 5efaf7e80e7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-900085.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows( - "async function f() { let v = 1; for await (var v of {}) { }", - SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-900585.js b/implementation-contributed/v8/mjsunit/regress/regress-900585.js deleted file mode 100644 index 8969644f950..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-900585.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("/*for..in*/for(var [x5, functional] = this = function(id) { return id } in false) var x2, x;", ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-900786.js b/implementation-contributed/v8/mjsunit/regress/regress-900786.js deleted file mode 100644 index c012e3fcd8e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-900786.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("{function g(){}function g(){+", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-900966.js b/implementation-contributed/v8/mjsunit/regress/regress-900966.js deleted file mode 100644 index 99603c12ef1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-900966.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertTrue('abc'[10] === undefined); -String.prototype[10] = 'x'; -assertEquals('abc'[10], 'x'); - -// Test that the fast case character-at stub handles an out-of-bound -// index correctly. We need to call the function twice to initialize -// the character-at stub. -function f() { - assertEquals('abc'[10], 'x'); -} -f(); -f(); -f(); -f(); - -assertTrue(2[11] === undefined); -Number.prototype[11] = 'y'; -assertEquals(2[11], 'y'); - -assertTrue(true[12] === undefined); -Boolean.prototype[12] = 'z'; -assertEquals(true[12], 'z'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-901633.js b/implementation-contributed/v8/mjsunit/regress/regress-901633.js deleted file mode 100644 index 220926c8543..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-901633.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const magic0 = 2396; -const magic1 = 1972; - -// Fill xs with float arrays. -const xs = []; -for (let j = 0; j < magic0; ++j) { - xs[j] = [j + 0.1]; -} - -// Sort, but trim the array at some point. -let cmp_calls = 0; -xs.sort((lhs, rhs) => { - lhs = lhs || [0]; - rhs = rhs || [0]; - if (cmp_calls++ == magic1) xs.length = 1; - return lhs[0] - rhs[0]; -}); - -// The final shape of the array is unspecified since the comparison function is -// inconsistent. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-901798.js b/implementation-contributed/v8/mjsunit/regress/regress-901798.js deleted file mode 100644 index 67022a70e82..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-901798.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a) { - return (a >>> 1073741824) + -3; -} - -assertEquals(-3, f(0)); -assertEquals(-2, f(1)); -%OptimizeFunctionOnNextCall(f); -assertEquals(4294967291, f(-2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-902552.js b/implementation-contributed/v8/mjsunit/regress/regress-902552.js deleted file mode 100644 index 081df058e2d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-902552.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var C = class {}; -for (var i = 0; i < 4; ++i) { - if (i == 2) %OptimizeOsr(); - C.prototype.foo = 42; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-902810.js b/implementation-contributed/v8/mjsunit/regress/regress-902810.js deleted file mode 100644 index 76ea7d94437..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-902810.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("((__v_4 = __v_4, __v_0) => eval(__v_4))()", ReferenceError) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-903527.js b/implementation-contributed/v8/mjsunit/regress/regress-903527.js deleted file mode 100644 index fe56d8c2168..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-903527.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("e*!`\\2`", SyntaxError) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-903697.js b/implementation-contributed/v8/mjsunit/regress/regress-903697.js deleted file mode 100644 index 85f970fe8eb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-903697.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --verify-heap - -C = class {}; -for (var i = 0; i < 5; ++i) { - gc(); - if (i == 2) %OptimizeOsr(); - C.prototype.foo = i + 9000000000000000; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-904255.js b/implementation-contributed/v8/mjsunit/regress/regress-904255.js deleted file mode 100644 index dd24dbdc485..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-904255.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("((__v_0 = __v_0.replace(...new Array(), '0').slice(...new Int32Array(), '0')) => print())()", ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-904275.js b/implementation-contributed/v8/mjsunit/regress/regress-904275.js deleted file mode 100644 index 10233d96295..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-904275.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __isPropertyOfType(obj, name) { - Object.getOwnPropertyDescriptor(obj, name) -} -function __getProperties(obj, type) { - for (let name of Object.getOwnPropertyNames(obj)) { - __isPropertyOfType(obj, name); - } -} -function __getRandomProperty(obj) { - let properties = __getProperties(obj); -} -function __f_6776(__v_33890, __v_33891) { - var __v_33896 = __v_33891(); - __getRandomProperty([]) -} -(function __f_6777() { - var __v_33906 = async () => { }; - __f_6776(1, () => __v_33906()) -})(); -(function __f_6822() { - try { - __f_6776(1, () => __f_6822()); - } catch (e) {} - var __v_34059 = async (__v_34079 = () => eval()) => { }; - delete __v_34059[__getRandomProperty(__v_34059)]; -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-904417.js b/implementation-contributed/v8/mjsunit/regress/regress-904417.js deleted file mode 100644 index dc469cca084..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-904417.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(o) { - return o.hello, Object.getPrototypeOf(o); -} - -var y = { __proto__: {}, hello: 44 }; -var z = { hello: 45 }; - -bar(y); -bar(z); -bar(y); -%OptimizeFunctionOnNextCall(bar); -bar(y); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-904707.js b/implementation-contributed/v8/mjsunit/regress/regress-904707.js deleted file mode 100644 index fdf89c2b55c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-904707.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -delete Float64Array.prototype.__proto__[Symbol.iterator]; - -let a = new Float64Array(9); -Object.defineProperty(a, "length", { - get: function () { %ArrayBufferDetach(a.buffer); return 6; } -}); - -Float64Array.from(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-905587.js b/implementation-contributed/v8/mjsunit/regress/regress-905587.js deleted file mode 100644 index 297846d02b9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-905587.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("function test() { '\\u`''\\u' }", SyntaxError) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-905907.js b/implementation-contributed/v8/mjsunit/regress/regress-905907.js deleted file mode 100644 index 06bbb51f56c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-905907.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var g = function f(a = 3) { - var context_allocated = undefined; - function inner() { f(); f(context_allocated) }; - inner(); -}; -assertThrows("g()", RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-906406.js b/implementation-contributed/v8/mjsunit/regress/regress-906406.js deleted file mode 100644 index eb79ff0a0ce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-906406.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -for (x = 0; x < 10000; ++x) { - [(x) => x, [, 4294967295].find((x) => x), , 2].includes('x', -0); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-907479.js b/implementation-contributed/v8/mjsunit/regress/regress-907479.js deleted file mode 100644 index e3e1d0926a7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-907479.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -{ - const x = [42]; - x.splice(0, 0, 23); - assertEquals([23, 42], x); - x.length++; - assertEquals([23, 42, ,], x); - assertFalse(x.hasOwnProperty(2)); -} - -{ - const x = [4.2]; - x.splice(0, 0, 23); - assertEquals([23, 4.2], x); - x.length++; - assertEquals([23, 4.2, ,], x); - assertFalse(x.hasOwnProperty(2)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-907575.js b/implementation-contributed/v8/mjsunit/regress/regress-907575.js deleted file mode 100644 index 2f63c3d8709..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-907575.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("0 || () =>", SyntaxError); -assertThrows("++(a) =>", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-907669.js b/implementation-contributed/v8/mjsunit/regress/regress-907669.js deleted file mode 100644 index 155ff060d3b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-907669.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("function f() { function g() { (); ", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-908231.js b/implementation-contributed/v8/mjsunit/regress/regress-908231.js deleted file mode 100644 index 8af5f305914..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-908231.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(` - class C { - get [(function() { function lazy() { Syntax Error } })()]() {} - }`, SyntaxError) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-908250.js b/implementation-contributed/v8/mjsunit/regress/regress-908250.js deleted file mode 100644 index 78f071d2308..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-908250.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("(al,al,e={}=e)=>l", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-908975.js b/implementation-contributed/v8/mjsunit/regress/regress-908975.js deleted file mode 100644 index b80f4ce9c4b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-908975.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[] = []; -a => 0 diff --git a/implementation-contributed/v8/mjsunit/regress/regress-91.js b/implementation-contributed/v8/mjsunit/regress/regress-91.js deleted file mode 100644 index 7f6263d91ad..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-91.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var date = new Date(); -var year = date.getYear(); -date.setMilliseconds(Number.NaN); -date.setYear(1900 + year); -assertEquals(year, date.getYear()); -assertEquals(0, date.getMonth()); -assertEquals(1, date.getDate()); -assertEquals(0, date.getHours()); -assertEquals(0, date.getMinutes()); -assertEquals(0, date.getSeconds()); -assertEquals(0, date.getMilliseconds()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-91008.js b/implementation-contributed/v8/mjsunit/regress/regress-91008.js deleted file mode 100644 index d7ea2df9ae7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-91008.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function testsort(n) { - var numbers=new Array(n); - for (var i=0;i { 'use strict'; let }", SyntaxError) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-921382.js b/implementation-contributed/v8/mjsunit/regress/regress-921382.js deleted file mode 100644 index d7cce2b723f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-921382.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("(d * f * g) * e => 0", SyntaxError) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-923723.js b/implementation-contributed/v8/mjsunit/regress/regress-923723.js deleted file mode 100644 index 5a838e558f6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-923723.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=50 - -function __f_3() { - try { - __f_3(); - } catch(e) { - eval("let fun = ({a} = {a: 30}) => {"); - } -} -assertThrows(__f_3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-925537.js b/implementation-contributed/v8/mjsunit/regress/regress-925537.js deleted file mode 100644 index 6d755046936..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-925537.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function assertClose(expected, actual) { - var delta = 0.00001; - if (Math.abs(expected - actual) > delta) { - print('Failure: Expected <' + actual + '> to be close to <' + - expected + '>'); - } -} - -assertEquals(1, Math.pow(NaN, 0)); -var pinf = Number.POSITIVE_INFINITY, ninf = Number.NEGATIVE_INFINITY; -assertClose( Math.PI / 4, Math.atan2(pinf, pinf)); -assertClose(-Math.PI / 4, Math.atan2(ninf, pinf)); -assertClose( 3 * Math.PI / 4, Math.atan2(pinf, ninf)); -assertClose(-3 * Math.PI / 4, Math.atan2(ninf, ninf)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-926036.js b/implementation-contributed/v8/mjsunit/regress/regress-926036.js deleted file mode 100644 index 3c8f49c956f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-926036.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("async() => { for await (var a ;;) {} }", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-927.js b/implementation-contributed/v8/mjsunit/regress/regress-927.js deleted file mode 100644 index c671f7d480c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-927.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function a1() { - var a2 = -1756315459; - return ((((a2 & a2) ^ 1) * a2) << -10); -} - -assertEquals(a1(), -2147483648); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-931.js b/implementation-contributed/v8/mjsunit/regress/regress-931.js deleted file mode 100644 index d2fb8cc2b79..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-931.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://code.google.com/p/v8/issues/detail?id=931. - -var sequence = ''; - -var o = { f: function (x, y) { return x + y; }, - 2: function (x, y) { return x - y} }; - -function first() { sequence += "1"; return o; } -function second() { sequence += "2"; return "f"; } -function third() { sequence += "3"; return 3; } -function fourth() { sequence += "4"; return 4; } - -var result = (first()[second()](third(), fourth())) -assertEquals(7, result); -assertEquals("1234", sequence); - -function second_prime() { sequence += "2'"; return 2; } - -var result = (first()[second_prime()](third(), fourth())) -assertEquals(-1, result); -assertEquals("123412'34", sequence); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-937896.js b/implementation-contributed/v8/mjsunit/regress/regress-937896.js deleted file mode 100644 index e7831da3c85..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-937896.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This used to crash because the label collector in the parser didn't -// discard duplicates which caused the outer-most continue statement -// to try to unlink the inner try-handler that wasn't on the stack. - -function f() { - try { - for (var i = 0; i < 2; i++) { - continue; - try { - continue; - continue; - } catch (ex) { - // Empty. - } - } - } catch (e) { - // Empty. - } - return 42; -} - - -assertEquals(42, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-944.js b/implementation-contributed/v8/mjsunit/regress/regress-944.js deleted file mode 100644 index d165336f1f8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-944.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check for parsing of proper ES5 15.9.1.15 (ISO 8601 / RFC 3339) time -// strings that contain millisecond values with exactly 3 digits (as is -// required by the spec format if the string has milliseconds at all). -assertEquals(1290722550521, Date.parse("2010-11-25T22:02:30.521Z")); - -// Check for parsing of extension/generalization of the ES5 15.9.1.15 spec -// format where millisecond values have only 1 or 2 digits. -assertEquals(1290722550500, Date.parse("2010-11-25T22:02:30.5Z")); -assertEquals(1290722550520, Date.parse("2010-11-25T22:02:30.52Z")); -assertFalse(Date.parse("2010-11-25T22:02:30.5Z") === Date.parse("2010-11-25T22:02:30.005Z")); - -// Check that we truncate millisecond values having more than 3 digits. -assertEquals(Date.parse("2010-11-25T22:02:30.1005Z"), Date.parse("2010-11-25T22:02:30.100Z")); - -// Check that we accept lots of digits. -assertEquals(Date.parse("2010-11-25T22:02:30.999Z"), Date.parse("2010-11-25T22:02:30.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999Z")); - -// Fail if there's a decimal point but zero digits for (expected) milliseconds. -assertTrue(isNaN(Date.parse("2010-11-25T22:02:30.Z"))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-94425.js b/implementation-contributed/v8/mjsunit/regress/regress-94425.js deleted file mode 100644 index 4a48f4ad5ce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-94425.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -var N = 2040 - 2 + 10; -var arr = new Array(N); - -gc(); -gc(); -gc(); - -// arr is in the large object space now. -// Write new space object into it. -arr[arr.length - 2] = new Object; - -// Shift array multiple times to ensure that young -// object crosses region boundary. -for (var i = 0; i < 9; i++) arr.shift(); - -// Do a GC to verify region dirty marks. -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-95113.js b/implementation-contributed/v8/mjsunit/regress/regress-95113.js deleted file mode 100644 index 9d5a631465e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-95113.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function get_double_array() { - var a = new Array(100000); - var i = 0; - while (!%HasDoubleElements(a)) { - a[i] = i + 0.1; - i += 1; - } - assertTrue(%HasDoubleElements(a)); - a.length = 1; - a[0] = 1.5; - a.length = 2; - a[1] = 2.5; - assertEquals(a[0], 1.5); - assertEquals(a[1], 2.5); - assertTrue(%HasDoubleElements(a)); - return a; -} - -var a = get_double_array(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-95485.js b/implementation-contributed/v8/mjsunit/regress/regress-95485.js deleted file mode 100644 index 2510072e0b3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-95485.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function Test() { - var left = 'XXX'; - var right = 'YYY'; - for (var i = 0; i < 3; i++) { - var cons = left + right; - var substring = cons.substring(2, 4); - try { - with ({Test: i}) - continue; - } finally { } - } - return substring; -} - -assertEquals('XY', Test()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-955.js b/implementation-contributed/v8/mjsunit/regress/regress-955.js deleted file mode 100644 index 9a9a0b0d2a3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-955.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=955 - -// Correctly parse signed numbers. -assertEquals(-0, parseInt("-0")); -assertEquals(0, parseInt("+0")); - -// Don't allow whitespace after signs in parseInt. -assertEquals(NaN, parseInt("- 0")); -assertEquals(NaN, parseInt("+ 0")); -assertEquals(NaN, parseInt("-\t0")); -assertEquals(NaN, parseInt("+\t0")); - -// Do allow whitespace at start. -assertEquals(-0, parseInt(" -0")); -assertEquals(0, parseInt(" +0")); -assertEquals(-0, parseInt("\t-0")); -assertEquals(0, parseInt("\t+0")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-95920.js b/implementation-contributed/v8/mjsunit/regress/regress-95920.js deleted file mode 100644 index 55849655614..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-95920.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests that objects with external arrays cannot be sealed or have their -// properties redefined. - -Object.preventExtensions(new Int8Array(42)); -Object.seal(new Int8Array(42)); - -// No elements, so should succeed. -Object.freeze(new Int8Array(0)); - -var o = new Int8Array(42); -assertThrows(function() { - Object.freeze(o); - assertUnreable(); - }, TypeError); - -// Freeze should still have managed to preventExtensions o. -assertFalse(Object.isExtensible(o)); - -assertThrows(function() { - Object.defineProperty(new Int8Array(42), "1", - { writable: false, value: "1" }); - assertUnreable(); - }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-962.js b/implementation-contributed/v8/mjsunit/regress/regress-962.js deleted file mode 100644 index 85ada0c8abb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-962.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function L(scope) { this.s = new Object(); } - -L.prototype.c = function() { return true; } - -function F() { - this.l = [new L, new L]; -} - -F.prototype.foo = function () { - var f, d = arguments, - e, b = this.l, - g; - for (e = 0; e < b.length; e++) { - g = b[e]; - f = g.c.apply(g.s, d); - if (f === false) { - break - } - } - return f -} - - -var ctx = new F; - -for (var i = 0; i < 5; i++) ctx.foo(); -%OptimizeFunctionOnNextCall(F.prototype.foo); -ctx.foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-96523.js b/implementation-contributed/v8/mjsunit/regress/regress-96523.js deleted file mode 100644 index e611ce36607..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-96523.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -with ({x:'outer'}) { - (function() { - var x = 'inner'; - try { - throw 'Exception'; - } catch (e) { - assertEquals('inner', x); - } - })() -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-969.js b/implementation-contributed/v8/mjsunit/regress/regress-969.js deleted file mode 100644 index c2ba0ac9e8e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-969.js +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Regression test for bugs when deoptimizing after assignments in effect -// contexts. - -// Bug 989 is that there was an extra value on the expression stack when -// deoptimizing after an assignment in effect context (the value of the -// assignment was lingering). This is hard to observe in the unoptimized -// code. -// -// This test uses comma expressions to put assignments in effect contexts, -// references to deleted global variables to force deoptimization, and -// function calls to observe an extra value. - -function first(x, y) { return x; } -var y = 0; -var o = {}; -o.x = 0; -o[0] = 0; - -// Assignment to global variable. -x0 = 0; -function test0() { return first((y = 1, typeof x0), 2); } -// Call the function once to compile it. -assertEquals('number', test0()); -// Delete to force deoptimization on the next call. -delete x0; -assertEquals('undefined', test0()); - -// Compound assignment to global variable. -x1 = 0; -function test1() { return first((y += 1, typeof x1), 2); } -assertEquals('number', test1(), 'test1 before'); -delete x1; -assertEquals('undefined', test1(), 'test1 after'); - -// Pre and post-increment of global variable. -x2 = 0; -function test2() { return first((++y, typeof x2), 2); } -assertEquals('number', test2(), 'test2 before'); -delete x2; -assertEquals('undefined', test2(), 'test2 after'); - -x3 = 0; -function test3() { return first((y++, typeof x3), 2); } -assertEquals('number', test3(), 'test3 before'); -delete x3; -assertEquals('undefined', test3(), 'test3 after'); - - -// Assignment, compound assignment, and pre and post-increment of named -// properties. -x4 = 0; -function test4() { return first((o.x = 1, typeof x4), 2); } -assertEquals('number', test4()); -delete x4; -assertEquals('undefined', test4()); - -x5 = 0; -function test5() { return first((o.x += 1, typeof x5), 2); } -assertEquals('number', test5()); -delete x5; -assertEquals('undefined', test5()); - -x6 = 0; -function test6() { return first((++o.x, typeof x6), 2); } -assertEquals('number', test6()); -delete x6; -assertEquals('undefined', test6()); - -x7 = 0; -function test7() { return first((o.x++, typeof x7), 2); } -assertEquals('number', test7()); -delete x7; -assertEquals('undefined', test7()); - - -// Assignment, compound assignment, and pre and post-increment of indexed -// properties. -x8 = 0; -function test8(index) { return first((o[index] = 1, typeof x8), 2); } -assertEquals('number', test8()); -delete x8; -assertEquals('undefined', test8()); - -x9 = 0; -function test9(index) { return first((o[index] += 1, typeof x9), 2); } -assertEquals('number', test9()); -delete x9; -assertEquals('undefined', test9()); - -x10 = 0; -function test10(index) { return first((++o[index], typeof x10), 2); } -assertEquals('number', test10()); -delete x10; -assertEquals('undefined', test10()); - -x11 = 0; -function test11(index) { return first((o[index]++, typeof x11), 2); } -assertEquals('number', test11()); -delete x11; -assertEquals('undefined', test11()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-97116.js b/implementation-contributed/v8/mjsunit/regress/regress-97116.js deleted file mode 100644 index b858ca5e869..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-97116.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --allow-natives-syntax - -// Check that we are not flushing code for inlined functions that -// have a pending lazy deoptimization on the stack. - -function deopt() { - try { } catch (e) { } // Avoid inlining. - %DeoptimizeFunction(outer); - for (var i = 0; i < 10; i++) gc(); // Force code flushing. -} - -function outer(should_deopt) { - inner(should_deopt); -} - -function inner(should_deopt) { - if (should_deopt) deopt(); -} - -outer(false); -outer(false); -%OptimizeFunctionOnNextCall(outer); -outer(true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-97116b.js b/implementation-contributed/v8/mjsunit/regress/regress-97116b.js deleted file mode 100644 index 91e7d6e0cad..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-97116b.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --allow-natives-syntax - -// Check that we are not flushing code for inlined functions that -// have a pending lazy deoptimization on the stack. - -%NeverOptimizeFunction(deopt); -function deopt() { - %DeoptimizeFunction(outer); - for (var i = 0; i < 10; i++) gc(); // Force code flushing. -} - -function outer(should_deopt) { - inner(should_deopt); -} - -function inner(should_deopt) { - if (should_deopt) deopt(); -} - -outer(false); -outer(false); -%OptimizeFunctionOnNextCall(outer); -outer(true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-974.js b/implementation-contributed/v8/mjsunit/regress/regress-974.js deleted file mode 100644 index d6362cd0b11..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-974.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Verify that GC is safe in a finally block entered by falling off the try -// block. -eval("(function(){try { } catch(x) { } finally { gc() }})")(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-982.js b/implementation-contributed/v8/mjsunit/regress/regress-982.js deleted file mode 100644 index d88543a74d4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-982.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f(a) { - return {className: 'xxx'}; -}; - -var x = 1; - -function g(active) { - for (i = 1; i <= 20000; i++) { - if (i == active) { - x = i; - if (f("" + i) != null) { } - } else { - if (f("" + i) != null) { } - } - } -} - -g(0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-98773.js b/implementation-contributed/v8/mjsunit/regress/regress-98773.js deleted file mode 100644 index eb24eb5d1ef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-98773.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Calling Array.sort on an external array is not supposed to crash. - -var array = new Int16Array(23); -array[7] = 7; array[9] = 9; -assertEquals(23, array.length); -assertEquals(7, array[7]); -assertEquals(9, array[9]); - -Array.prototype.sort.call(array); -assertEquals(23, array.length); -assertEquals(7, array[21]); -assertEquals(9, array[22]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-990205.js b/implementation-contributed/v8/mjsunit/regress/regress-990205.js deleted file mode 100644 index 7eb66f06168..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-990205.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// We throw syntax errors early for invalid break and continue statements. -// (Notice that the example isn't valid ECMAScript due to the -// function declaration that is not at top level.) - -function f() { - // Force eager compilation of x through the use of eval. The break - // in function x should not try to break out of the enclosing while. - return eval("while(0) function x() { break; }; 42"); -}; - -assertThrows("f()"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-99167.js b/implementation-contributed/v8/mjsunit/regress/regress-99167.js deleted file mode 100644 index eac49d12b05..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-99167.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --max-semi-space-size=1 - -eval("function Node() { this.a = 1; this.a = 3; }"); -new Node; -for (var i = 0; i < 4; ++i) gc(); -for (var i = 0; i < 100000; ++i) new Node; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-992.js b/implementation-contributed/v8/mjsunit/regress/regress-992.js deleted file mode 100644 index dbe25a5f638..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-992.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Object.defineProperty with generic desc on existing property -// should just update enumerable/configurable flags. - -var obj = { get p() { return 42; } }; -var desc = Object.getOwnPropertyDescriptor(obj, 'p'); -var getter = desc.get; - -Object.defineProperty(obj, 'p', {enumerable: false }); -assertEquals(obj.p, 42); -desc = Object.getOwnPropertyDescriptor(obj, 'p'); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); -assertEquals(desc.get, getter); -assertEquals(desc.set, undefined); -assertFalse(desc.hasOwnProperty('value')); -assertFalse(desc.hasOwnProperty('writable')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-992733.js b/implementation-contributed/v8/mjsunit/regress/regress-992733.js deleted file mode 100644 index d0f7511c0cb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-992733.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals("object", typeof this); -var threw = false; -try { - this(); -} catch (e) { - threw = true; -} -assertTrue(threw); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-995.js b/implementation-contributed/v8/mjsunit/regress/regress-995.js deleted file mode 100644 index cf680da1e79..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-995.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// -// A number of hydrogen instructions did not correctly compare its -// data during GVN. -// -// Flags: --allow-natives-syntax - -// HHasInstance. -function f(value) { - if (%_IsJSReceiver(value)) { - if ((%_IsArray(value))) assertTrue(false); - } -} -f(new String("bar")); - -// HIsNull. -function h(value) { - if (value == null) { - if (value === null) assertTrue(false); - } -} -h(undefined); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-996542.js b/implementation-contributed/v8/mjsunit/regress/regress-996542.js deleted file mode 100644 index 8fc704eb28d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-996542.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var zero = 0; -var one = 1; -var minus_one = -1; - -assertEquals(-Infinity, 1 / (0 / -1)); -assertEquals(-Infinity, one / (zero / minus_one)); -assertEquals(Infinity, 1 / (0 / 1)); -assertEquals(Infinity, one / (zero / one)); - -assertEquals(-Infinity, 1 / (-1 % 1)); -assertEquals(-Infinity, one / (minus_one % one)) -assertEquals(Infinity, 1 / (1 % 1)); -assertEquals(Infinity, one / (one % one)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-abort-context-allocate-params.js b/implementation-contributed/v8/mjsunit/regress/regress-abort-context-allocate-params.js deleted file mode 100644 index 3089f7817a8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-abort-context-allocate-params.js +++ /dev/null @@ -1,941 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(getter) { - arguments = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-abort-preparsing-params.js b/implementation-contributed/v8/mjsunit/regress/regress-abort-preparsing-params.js deleted file mode 100644 index d5353217955..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-abort-preparsing-params.js +++ /dev/null @@ -1,946 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var outer_a; - -function f(a, b, a) { - outer_a = a; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; - x = 1; -} -f(1, 2, 1); -assertEquals(1, outer_a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-add-minus-zero.js b/implementation-contributed/v8/mjsunit/regress/regress-add-minus-zero.js deleted file mode 100644 index cb77cdfb61d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-add-minus-zero.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var o = { a: 0 }; - -function f(x) { return -o.a + 0; }; - -assertEquals("Infinity", String(1/f())); -assertEquals("Infinity", String(1/f())); -%OptimizeFunctionOnNextCall(f); -assertEquals("Infinity", String(1/f())); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-alloc-smi-check.js b/implementation-contributed/v8/mjsunit/regress/regress-alloc-smi-check.js deleted file mode 100644 index 295048a13ef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-alloc-smi-check.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -var x = {}; - -function f(a) { - a[200000000] = x; -} - -f(new Array(100000)); -f([]); -%OptimizeFunctionOnNextCall(f); -f([]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-arg-materialize-store.js b/implementation-contributed/v8/mjsunit/regress/regress-arg-materialize-store.js deleted file mode 100644 index 2a30dc87a33..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-arg-materialize-store.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - return f.arguments; -} - -function g(deopt) { - var o = { x : 2 }; - f(); - o.x = 1; - deopt + 0; - return o.x; -} - -g(0); -g(0); -%OptimizeFunctionOnNextCall(g); -assertEquals(1, g({})); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-arguments-liveness-analysis.js b/implementation-contributed/v8/mjsunit/regress/regress-arguments-liveness-analysis.js deleted file mode 100644 index 95c2c002624..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-arguments-liveness-analysis.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function r(v) { return v.f } -function h() { } -function y(v) { - var x = arguments; - h.apply(r(v), x); -}; - -y({f:3}); -y({f:3}); -y({f:3}); - -%OptimizeFunctionOnNextCall(y); - -y({ f : 3, u : 4 }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-arguments-slice.js b/implementation-contributed/v8/mjsunit/regress/regress-arguments-slice.js deleted file mode 100644 index f7cd8c6ec8c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-arguments-slice.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { return arguments; } -var o = f(); -o.length = -100; -Array.prototype.slice.call(o); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-arm64-spillslots.js b/implementation-contributed/v8/mjsunit/regress/regress-arm64-spillslots.js deleted file mode 100644 index 1791b248431..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-arm64-spillslots.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; - -function Message(message) { - this.message = message; -} - -function Inlined(input) { - var dummy = arguments[1] === undefined; - if (input instanceof Message) { - return input; - } - print("unreachable, but we must create register allocation complexity"); - return []; -} - -function Process(input) { - var ret = []; - ret.push(Inlined(input[0], 1, 2)); - return ret; -} - -var input = [new Message("TEST PASS")]; - -Process(input); -Process(input); -%OptimizeFunctionOnNextCall(Process); -var result = Process(input); -assertEquals("TEST PASS", result[0].message); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-array-pop-deopt.js b/implementation-contributed/v8/mjsunit/regress/regress-array-pop-deopt.js deleted file mode 100644 index 9a0d35d3aa6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-array-pop-deopt.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var o = [6,7,8,9]; - -function f(b) { - var v = o.pop() + b; - return v; -} - -assertEquals(10, f(1)); -assertEquals(9, f(1)); -assertEquals(8, f(1)); -%OptimizeFunctionOnNextCall(f); -assertEquals("61", f("1")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-array-pop-nonconfigurable.js b/implementation-contributed/v8/mjsunit/regress/regress-array-pop-nonconfigurable.js deleted file mode 100644 index 823bb6b1a85..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-array-pop-nonconfigurable.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var a = []; -Object.defineProperty(a, 0, {}); -assertThrows(function() { a.pop(); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-arrow-single-expression-eval.js b/implementation-contributed/v8/mjsunit/regress/regress-arrow-single-expression-eval.js deleted file mode 100644 index 83a9ca1a56d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-arrow-single-expression-eval.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -((x=1) => eval("var x = 10"))(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-assignment-in-test-context.js b/implementation-contributed/v8/mjsunit/regress/regress-assignment-in-test-context.js deleted file mode 100644 index 61ca2202931..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-assignment-in-test-context.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --always-opt --turbo-filter=* - -function assertEquals() {} - -function f(o) { - if (o.setterProperty = 0) { - return 1; - } - return 2; -} - -function deopt() { %DeoptimizeFunction(f); } - -assertEquals(2, - f(Object.defineProperty({}, "setterProperty", { set: deopt }))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-bce-underflow.js b/implementation-contributed/v8/mjsunit/regress/regress-bce-underflow.js deleted file mode 100644 index daa776005e7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-bce-underflow.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a, i, bool) { - var result; - if (bool) { - // Make sure i - -0x80000000 doesn't overflow in BCE, missing a check for - // x-0 later on. - result = f2(a, 0x7fffffff, i, i, -0x80000000); - } else { - result = f2(a, -3, 4, i, 0); - } - return result; -} - -function f2(a, c, x, i, d) { - return a[x + c] + a[x - 0] + a[i - d]; -} - - -var a = []; -var i = 0; -a.push(i++); -a.push(i++); -a.push(i++); -a.push(i++); -a.push(i++); -f(a, 0, false); -f(a, 0, false); -f(a, 0, false); -%OptimizeFunctionOnNextCall(f); -%DebugPrint(f(a, -0x7fffffff, true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-bind-receiver.js b/implementation-contributed/v8/mjsunit/regress/regress-bind-receiver.js deleted file mode 100644 index fc83a4e5d9f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-bind-receiver.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function strict() { 'use strict'; return this; } -function lenient() { return this; } -var obj = {}; - -assertEquals(true, strict.bind(true)()); -assertEquals(42, strict.bind(42)()); -assertEquals("", strict.bind("")()); -assertEquals(null, strict.bind(null)()); -assertEquals(undefined, strict.bind(undefined)()); -assertEquals(obj, strict.bind(obj)()); - -assertEquals(true, lenient.bind(true)() instanceof Boolean); -assertEquals(true, lenient.bind(42)() instanceof Number); -assertEquals(true, lenient.bind("")() instanceof String); -assertEquals(this, lenient.bind(null)()); -assertEquals(this, lenient.bind(undefined)()); -assertEquals(obj, lenient.bind(obj)()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-binop.js b/implementation-contributed/v8/mjsunit/regress/regress-binop.js deleted file mode 100644 index 7a8b41924dd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-binop.js +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// general tests -var e31 = Math.pow(2, 31); - -assertEquals(-e31, -1*e31); -assertEquals(e31, -1*e31*(-1)); -assertEquals(e31, -1*-e31); -assertEquals(e31, -e31*(-1)); - -var x = {toString : function() {return 1}} -function add(a,b){return a+b;} -add(1,x); -add(1,x); -%OptimizeFunctionOnNextCall(add); -add(1,x); -x.toString = function() {return "2"}; - -assertEquals(add(1,x), "12"); - -// Test the correct placement of the simulates in TruncateToNumber: -function Checker() { - this.str = "1"; - var toStringCalled = 0; - var toStringExpected = 0; - this.toString = function() { - toStringCalled++; - return this.str; - }; - this.check = function() { - toStringExpected++; - assertEquals(toStringExpected, toStringCalled); - }; -}; -var left = new Checker(); -var right = new Checker(); - -function test(fun,check_fun,a,b,does_throw) { - left.str = a; - right.str = b; - try { - assertEquals(check_fun(a,b), fun(left, right)); - assertTrue(!does_throw); - } catch(e) { - if (e instanceof TypeError) { - assertTrue(!!does_throw); - } else { - throw e; - } - } finally { - left.check(); - if (!does_throw || does_throw>1) { - right.check(); - } - } -} - -function minus(a,b) { return a-b }; -function check_minus(a,b) { return a-b }; -function mod(a,b) { return a%b }; -function check_mod(a,b) { return a%b }; - -test(minus,check_minus,1,2); -// Bailout on left -test(minus,check_minus,1<<30,1); -// Bailout on right -test(minus,check_minus,1,1<<30); -// Bailout on result -test(minus,check_minus,1<<30,-(1<<30)); - -// Some more interesting things -test(minus,check_minus,1,1.4); -test(minus,check_minus,1.3,4); -test(minus,check_minus,1.3,1.4); -test(minus,check_minus,1,2); -test(minus,check_minus,1,undefined); -test(minus,check_minus,1,2); -test(minus,check_minus,1,true); -test(minus,check_minus,1,2); -test(minus,check_minus,1,null); -test(minus,check_minus,1,2); -test(minus,check_minus,1,""); -test(minus,check_minus,1,2); - -// Throw on left -test(minus,check_minus,{},1,1); -// Throw on right -test(minus,check_minus,1,{},2); -// Throw both -test(minus,check_minus,{},{},1); - -test(minus,check_minus,1,2); - -// Now with optimized code -test(mod,check_mod,1,2); -%OptimizeFunctionOnNextCall(mod); -test(mod,check_mod,1,2); - -test(mod,check_mod,1<<30,1); -%OptimizeFunctionOnNextCall(mod); -test(mod,check_mod,1<<30,1); -test(mod,check_mod,1,1<<30); -%OptimizeFunctionOnNextCall(mod); -test(mod,check_mod,1,1<<30); -test(mod,check_mod,1<<30,-(1<<30)); -%OptimizeFunctionOnNextCall(mod); -test(mod,check_mod,1<<30,-(1<<30)); - -test(mod,check_mod,1,{},2); -%OptimizeFunctionOnNextCall(mod); -test(mod,check_mod,1,{},2); - -test(mod,check_mod,1,2); - - -// test oddballs -function t1(a, b) {return a-b} -assertEquals(t1(1,2), 1-2); -assertEquals(t1(2,true), 2-1); -assertEquals(t1(false,2), 0-2); -assertEquals(t1(1,2.4), 1-2.4); -assertEquals(t1(1.3,2.4), 1.3-2.4); -assertEquals(t1(true,2.4), 1-2.4); -assertEquals(t1(1,undefined), 1-NaN); -assertEquals(t1(1,1<<30), 1-(1<<30)); -assertEquals(t1(1,2), 1-2); - -function t2(a, b) {return a/b} -assertEquals(t2(1,2), 1/2); -assertEquals(t2(null,2), 0/2); -assertEquals(t2(null,-2), 0/-2); -assertEquals(t2(2,null), 2/0); -assertEquals(t2(-2,null), -2/0); -assertEquals(t2(1,2.4), 1/2.4); -assertEquals(t2(1.3,2.4), 1.3/2.4); -assertEquals(t2(null,2.4), 0/2.4); -assertEquals(t2(1.3,null), 1.3/0); -assertEquals(t2(undefined,2), NaN/2); -assertEquals(t2(1,1<<30), 1/(1<<30)); -assertEquals(t2(1,2), 1/2); - - -// Assert that the hole is not truncated to nan for string add. -function string_add(a,i) { - var d = [0.1, ,0.3]; - return a + d[i]; -} - -string_add(1.1, 0); -string_add("", 0); -%OptimizeFunctionOnNextCall(string_add); -string_add(1.1, 0); -// There comes the hole -assertEquals("undefined", string_add("", 1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-builtin-array-op.js b/implementation-contributed/v8/mjsunit/regress/regress-builtin-array-op.js deleted file mode 100644 index ea5891f7dfc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-builtin-array-op.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we invoke the correct sort function in -// array operations. - -var foo = "hest"; -Array.prototype.sort = function(fn) { foo = "fisk"; }; -Function.prototype.call = function() { foo = "caramel"; }; -var a = [2,3,1]; -a[100000] = 0; -a.join(); -assertEquals("hest", foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-1.js b/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-1.js deleted file mode 100644 index 33a75634b63..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-1.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function nope() { return false; } -var a = [ 1, 2, 3 ]; -Object.seal(a); -Object.isSealed = nope; - -assertThrows(function() { a.pop(); }, TypeError); -assertThrows(function() { a.push(5); }, TypeError); -assertThrows(function() { a.shift(); }, TypeError); -assertThrows(function() { a.unshift(5); }, TypeError); -assertThrows(function() { a.splice(0, 1); }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-3.js b/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-3.js deleted file mode 100644 index f5a0c39eaa4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-3.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function produce_object() { - var real_length = 1; - function set_length() { real_length = "boom"; } - function get_length() { return real_length; } - var o = { __proto__:Array.prototype , 0:"x" }; - Object.defineProperty(o, "length", { set:set_length, get:get_length }) - return o; -} - -assertEquals(2, produce_object().push("y")); -assertEquals(2, produce_object().unshift("y")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-4.js b/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-4.js deleted file mode 100644 index dbaa2454daf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-4.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = { __proto__:Array.prototype, 0:"x" }; -function boomer() { return 0; } -Object.defineProperty(o, "length", { get:boomer, set:boomer }); -Object.seal(o); - -assertDoesNotThrow(function() { o.push(1); }); -assertEquals(0, o.length); -assertEquals(1, o[0]); - -assertDoesNotThrow(function() { o.unshift(2); }); -assertEquals(0, o.length); -assertEquals(2, o[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-5.js b/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-5.js deleted file mode 100644 index 266e4d48bd2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-5.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = [ 1, 2, 3 ]; -var was_called = false; -function poison() { was_called = true; } -a.hasOwnProperty = poison; -Object.freeze(a); - -assertThrows("a.unshift()", TypeError); -assertEquals(3, a.length); -assertFalse(was_called); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-6.js b/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-6.js deleted file mode 100644 index d926bd0488a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-6.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that Array builtins can be called on primitive values. -var values = [ 23, 4.2, true, false, 0/0 ]; -for (var i = 0; i < values.length; ++i) { - var v = values[i]; - Array.prototype.join.call(v); - Array.prototype.pop.call(v); - Array.prototype.push.call(v); - Array.prototype.reverse.call(v); - Array.prototype.shift.call(v); - Array.prototype.slice.call(v); - Array.prototype.splice.call(v); - Array.prototype.unshift.call(v); -} - -// Test that ToObject on primitive values is only called once. -var length_receiver, element_receiver; -function length() { length_receiver = this; return 2; } -function element() { element_receiver = this; return "x"; } -Object.defineProperty(Number.prototype, "length", { get:length, set:length }); -Object.defineProperty(Number.prototype, "0", { get:element, set:element }); -Object.defineProperty(Number.prototype, "1", { get:element, set:element }); -Object.defineProperty(Number.prototype, "2", { get:element, set:element }); -function test_receiver(expected, call_string) { - assertDoesNotThrow(call_string); - assertEquals(new Number(expected), length_receiver); - assertSame(length_receiver, element_receiver); -} - -test_receiver(11, "Array.prototype.join.call(11)") -test_receiver(23, "Array.prototype.pop.call(23)"); -test_receiver(42, "Array.prototype.push.call(42, 'y')"); -test_receiver(49, "Array.prototype.reverse.call(49)"); -test_receiver(65, "Array.prototype.shift.call(65)"); -test_receiver(77, "Array.prototype.slice.call(77, 1)"); -test_receiver(88, "Array.prototype.splice.call(88, 1, 1)"); -test_receiver(99, "Array.prototype.unshift.call(99, 'z')"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-7.js b/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-7.js deleted file mode 100644 index 8581eead7fc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-builtinbust-7.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if ("Intl" in this) { - function overflow() { - return overflow() + 1; - } - Object.defineProperty = overflow; - assertDoesNotThrow(function() { Intl.Collator.supportedLocalesOf("en"); }); - - var date = new Date(Date.UTC(2004, 12, 25, 3, 0, 0)); - var options = { - weekday: "long", - year: "numeric", - month: "long", - day: "numeric" - }; - - Object.apply = overflow; - assertDoesNotThrow(function() { date.toLocaleDateString("de-DE", options); }); - - var options_incomplete = {}; - assertDoesNotThrow(function() { - date.toLocaleDateString("de-DE", options_incomplete); - }); - assertFalse(options_incomplete.hasOwnProperty("year")); - - assertDoesNotThrow(function() { date.toLocaleDateString("de-DE", undefined); }); - assertDoesNotThrow(function() { date.toLocaleDateString("de-DE"); }); - assertThrows(function() { date.toLocaleDateString("de-DE", null); }, TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-calls-with-migrating-prototypes.js b/implementation-contributed/v8/mjsunit/regress/regress-calls-with-migrating-prototypes.js deleted file mode 100644 index a306e5d9d89..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-calls-with-migrating-prototypes.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f() { - return 1; -} -function C1(f) { - this.f = f; -} -var o1 = new C1(f); -var o2 = {__proto__: new C1(f) } -function foo(o) { - return o.f(); -} -foo(o1); -foo(o1); -foo(o2); -foo(o1); -var o3 = new C1(function() { return 2; }); -%OptimizeFunctionOnNextCall(foo); -assertEquals(1, foo(o2)); -o2.__proto__.f = function() { return 3; }; -assertEquals(3, foo(o2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-captured-object-no-dummy-use.js b/implementation-contributed/v8/mjsunit/regress/regress-captured-object-no-dummy-use.js deleted file mode 100644 index cdf548d5fa6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-captured-object-no-dummy-use.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -var global = "10.1"; -function f() { } -function g(a) { this.d = a; } -function h() { - var x = new f(); - global.dummy = this; - var y = new g(x); -} -h(); -h(); -%OptimizeFunctionOnNextCall(h); -h(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-charat-empty.js b/implementation-contributed/v8/mjsunit/regress/regress-charat-empty.js deleted file mode 100644 index 6548ad5b2fd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-charat-empty.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --opt --no-always-opt --allow-natives-syntax -(() => { - function f(s) { - return s.charAt(); - } - f(""); - f(""); - %OptimizeFunctionOnNextCall(f); - f(""); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-check-eliminate-loop-phis.js b/implementation-contributed/v8/mjsunit/regress/regress-check-eliminate-loop-phis.js deleted file mode 100644 index 3791c35f71c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-check-eliminate-loop-phis.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - var o = {x:1}; - var y = {y:2.5, x:0}; - var result; - for (var i = 0; i < 2; i++) { - result = o.x + 3; - o = y; - } - return result; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals(3, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-clobbered-fp-regs.js b/implementation-contributed/v8/mjsunit/regress/regress-clobbered-fp-regs.js deleted file mode 100644 index 7795ae9a304..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-clobbered-fp-regs.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Flags: --allow-natives-syntax - -function store(a, x, y) { - var f1 = 0.1 * y; - var f2 = 0.2 * y; - var f3 = 0.3 * y; - var f4 = 0.4 * y; - var f5 = 0.5 * y; - var f6 = 0.6 * y; - var f7 = 0.7 * y; - var f8 = 0.8 * y; - a[0] = x; - var sum = (f1 + f2 + f3 + f4 + f5 + f6 + f7 + f8); - assertEquals(1, y); - var expected = 3.6; - if (Math.abs(expected - sum) > 0.01) { - assertEquals(expected, sum); - } -} - -// Generate TransitionElementsKindStub. -store([1], 1, 1); -store([1], 1.1, 1); -store([1], 1.1, 1); -%OptimizeFunctionOnNextCall(store); -// This will trap on allocation site in TransitionElementsKindStub. -store([1], 1, 1) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-cnlt-elements.js b/implementation-contributed/v8/mjsunit/regress/regress-cnlt-elements.js deleted file mode 100644 index 634534c5330..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-cnlt-elements.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -var a = JSON.parse('{"b":1,"c":2,"d":3,"e":4}'); -var b = JSON.parse('{"12040200":1, "a":2, "b":2}'); -var c = JSON.parse('{"24050300":1}'); -b = null; -gc(); -gc(); -c.a1 = 2; -c.a2 = 2; -c.a3 = 2; -c.a4 = 2; -c.a5 = 2; -c.a6 = 2; -c.a7 = 2; -c.a8 = 2; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-cnlt-enum-indices.js b/implementation-contributed/v8/mjsunit/regress/regress-cnlt-enum-indices.js deleted file mode 100644 index 03582bbbe42..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-cnlt-enum-indices.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -var o = {}; -var o2 = {}; - -o.a = 1; -o2.a = 1; -function f() { return 10; } -// Adds a non-field enumerable property. -Object.defineProperty(o, "b", { get: f, enumerable: true }); -Object.defineProperty(o2, "b", { get: f, enumerable: true }); -assertTrue(%HaveSameMap(o, o2)); -o.c = 2; - -for (var x in o) { } -o = null; - -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-cntl-descriptors-enum.js b/implementation-contributed/v8/mjsunit/regress/regress-cntl-descriptors-enum.js deleted file mode 100644 index ee30d071db3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-cntl-descriptors-enum.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -var o = {}; -Object.defineProperty(o, "a", { - value: 0, configurable: true, writable: true, enumerable: false -}); - -var o2 = {}; -Object.defineProperty(o2, "a", { - value: 0, configurable: true, writable: true, enumerable: false -}); - - -assertTrue(%HaveSameMap(o, o2)); - -o.y = 2; - -for (var v in o) { print(v); } -o = {}; -gc(); - -for (var v in o2) { print(v); } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-compare-constant-doubles.js b/implementation-contributed/v8/mjsunit/regress/regress-compare-constant-doubles.js deleted file mode 100644 index 0f8ffe307d1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-compare-constant-doubles.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var left = 1.5; -var right; - -var keepalive; - -function foo() { - // Fill XMM registers with cruft. - var a1 = Math.sin(1) + 10; - var a2 = a1 + 1; - var a3 = a2 + 1; - var a4 = a3 + 1; - var a5 = a4 + 1; - var a6 = a5 + 1; - keepalive = [a1, a2, a3, a4, a5, a6]; - - // Actual test. - if (left < right) return "ok"; - return "bad"; -} - -function prepare(base) { - right = 0.5 * base; -} - -prepare(21); -assertEquals("ok", foo()); -assertEquals("ok", foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals("ok", foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-conditional-position.js b/implementation-contributed/v8/mjsunit/regress/regress-conditional-position.js deleted file mode 100644 index c9badd68307..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-conditional-position.js +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --noopt - -var functionToCatch; -var lineNumber; - -function catchLineNumber () { - var x = {}; - - Error.prepareStackTrace = function (error, stackTrace) { - stackTrace.some(function (frame) { - if (frame.getFunction() == functionToCatch) { - lineNumber = frame.getLineNumber(); - return true; - } - return false; - }); - return lineNumber; - }; - - Error.captureStackTrace(x); - return x.stack; -} - -function log() { - catchLineNumber(); -} - -function foo() {} - -function test1() { - log(foo() == foo() - ? 'a' - : 'b'); -} - -function test2() { - var o = { foo: function () {}} - log(o.foo() == o.foo() - ? 'a' - : 'b'); -} - -function test3() { - var o = { log: log, foo: function() { } }; - o.log(o.foo() == o.foo() - ? 'a' - : 'b'); - -} - -function test(f, expectedLineNumber) { - functionToCatch = f; - f(); - - assertEquals(expectedLineNumber, lineNumber); -} - -test(test1, 58); -test(test2, 65); -test(test3, 72); - -eval(test1.toString() + "//@ sourceUrl=foo"); -eval(test2.toString() + "//@ sourceUrl=foo"); -eval(test3.toString() + "//@ sourceUrl=foo"); - -test(test1, 2); -test(test2, 3); -test(test3, 3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-context-osr.js b/implementation-contributed/v8/mjsunit/regress/regress-context-osr.js deleted file mode 100644 index b74907de6a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-context-osr.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict"; -function f() { - try { } catch (e) { } -} - -for (this.x = 0; this.x < 1; ++this.x) { - for (this.y = 0; this.y < 1; ++this.y) { - for (this.ll = 0; this.ll < 70670; ++this.ll) { - f(); - } - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-convert-enum.js b/implementation-contributed/v8/mjsunit/regress/regress-convert-enum.js deleted file mode 100644 index c624cad5af7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-convert-enum.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Create a transition tree A (no descriptors) -> B (descriptor for a) -> C -// (descriptor for a and c), that all share the descriptor array [a,c]. C is the -// owner of the descriptor array. -var o = {}; -o.a = 1; -o.c = 2; - -// Add a transition B -> D where D has its own descriptor array [a,b] where b is -// a constant function. -var o1 = {}; -o1.a = 1; - -// Install an enumeration cache in the descriptor array [a,c] at map B. -for (var x in o1) { } -o1.b = function() { return 1; }; - -// Return ownership of the descriptor array [a,c] to B and trim it to [a]. -o = null; -gc(); - -// Convert the transition B -> D into a transition to B -> E so that E uses the -// instance descriptors [a,b] with b being a field. -var o2 = {}; -o2.a = 1; -o2.b = 10; - -// Create an object with map B and iterate over it. -var o3 = {}; -o3.a = 1; - -for (var y in o3) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-convert-enum2.js b/implementation-contributed/v8/mjsunit/regress/regress-convert-enum2.js deleted file mode 100644 index cdc7fbe2b68..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-convert-enum2.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o = {}; -o.a = 1; -o.b = function() { return 1; }; -o.d = 2; - -for (var x in o) { } - -var o1 = {}; -o1.a = 1; -o1.b = 10; -o1.c = 20; - -var keys = ["a", "b", "c"]; - -var i = 0; -for (var y in o1) { - assertEquals(keys[i], y); - i += 1; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-convert-function-to-double.js b/implementation-contributed/v8/mjsunit/regress/regress-convert-function-to-double.js deleted file mode 100644 index fca44f96324..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-convert-function-to-double.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f(v) { - this.func = v; -} - -var o1 = new f(f); -var d = 1.4; -var o2 = new f(d); -o2.func = 1.8; -assertEquals(1.4, d) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-convert-hole.js b/implementation-contributed/v8/mjsunit/regress/regress-convert-hole.js deleted file mode 100644 index 1e9c3f31380..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-convert-hole.js +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f_store(test, test2, a, i) { - var o = [0.5,1,,3]; - var d; - if (test) { - d = 1.5; - } else { - d = o[i]; - } - if (test2) { - d += 1; - } - a[i] = d; - return d; -} - -var a1 = [0, 0, 0, {}]; -f_store(true, false, a1, 0); -f_store(true, true, a1, 0); -f_store(false, false, a1, 1); -f_store(false, true, a1, 1); -%OptimizeFunctionOnNextCall(f_store); -f_store(false, false, a1, 2); -assertEquals(undefined, a1[2]); - -function test_arg(expected) { - return function(v) { - assertEquals(expected, v); - } -} - -function f_call(f, test, test2, i) { - var o = [0.5,1,,3]; - var d; - if (test) { - d = 1.5; - } else { - d = o[i]; - } - if (test2) { - d += 1; - } - f(d); - return d; -} - -f_call(test_arg(1.5), true, false, 0); -f_call(test_arg(2.5), true, true, 0); -f_call(test_arg(1), false, false, 1); -f_call(test_arg(2), false, true, 1); -%OptimizeFunctionOnNextCall(f_call); -f_call(test_arg(undefined), false, false, 2); - - -function f_external(test, test2, test3, a, i) { - var o = [0.5,1,,3]; - var d; - if (test) { - d = 1.5; - } else { - d = o[i]; - } - if (test2) { - d += 1; - } - if (test3) { - d = d|0; - } - a[d] = 1; - assertEquals(1, a[d]); - return d; -} - -var a2 = new Int32Array(10); -f_external(true, false, true, a2, 0); -f_external(true, true, true, a2, 0); -f_external(false, false, true, a2, 1); -f_external(false, true, true, a2, 1); -%OptimizeFunctionOnNextCall(f_external); -f_external(false, false, false, a2, 2); -assertEquals(1, a2[undefined]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-convert-hole2.js b/implementation-contributed/v8/mjsunit/regress/regress-convert-hole2.js deleted file mode 100644 index 02ef4dd1ddc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-convert-hole2.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Flags: --allow-natives-syntax - -// Test adding undefined from hole in double-holey to string. -var a = [1.5, , 1.8]; - -function f(a, i, l) { - var v = a[i]; - return l + v; -} - -assertEquals("test1.5", f(a, 0, "test")); -assertEquals("test1.5", f(a, 0, "test")); -%OptimizeFunctionOnNextCall(f); -assertEquals("testundefined", f(a, 1, "test")); - -// Test double-hole going through a phi to a string-add. -function f2(b, a1, a2) { - var v; - if (b) { - v = a1[0]; - } else { - v = a2[0]; - } - x = v * 2; - return "test" + v + x; -} - -f2(true, [1.4,1.8,,1.9], [1.4,1.8,,1.9]); -f2(true, [1.4,1.8,,1.9], [1.4,1.8,,1.9]); -f2(false, [1.4,1.8,,1.9], [1.4,1.8,,1.9]); -f2(false, [1.4,1.8,,1.9], [1.4,1.8,,1.9]); -%OptimizeFunctionOnNextCall(f2); -assertEquals("testundefinedNaN", f2(false, [,1.8,,1.9], [,1.9,,1.9])); - -// Test converting smi-hole to double-hole. -function t_smi(a) { - a[0] = 1.5; -} - -t_smi([1,,3]); -t_smi([1,,3]); -t_smi([1,,3]); -%OptimizeFunctionOnNextCall(t_smi); -var ta = [1,,3]; -t_smi(ta); -ta.__proto__ = [6,6,6]; -assertEquals([1.5,6,3], ta); - -// Test converting double-hole to tagged-hole. -function t(b) { - b[1] = {}; -} - -t([1.4, 1.6,,1.8, NaN]); -t([1.4, 1.6,,1.8, NaN]); -%OptimizeFunctionOnNextCall(t); -var a = [1.6, 1.8,,1.9, NaN]; -t(a); -a.__proto__ = [6,6,6,6,6]; -assertEquals([1.6, {}, 6, 1.9, NaN], a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-convert-transition.js b/implementation-contributed/v8/mjsunit/regress/regress-convert-transition.js deleted file mode 100644 index 057dc8045c0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-convert-transition.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var input = '{ "a1":1, "a2":1, "a3":1, "a4":1, "a5":1, "a6":1, "a7":1,\ - "a8":1, "a9":1, "a10":1, "a11":1, "a12":1, "a13":1}'; -var a = JSON.parse(input); -a.a = function() { return 10; }; - -// Force conversion of field to slow mode. -var b = JSON.parse(input); -b.a = 10; - -// Add another property to the object that would transition to a. -var c = JSON.parse(input); -c.x = 10; -assertEquals(undefined, c.a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-copy-hole-to-field.js b/implementation-contributed/v8/mjsunit/regress/regress-copy-hole-to-field.js deleted file mode 100644 index fa3db92928a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-copy-hole-to-field.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Copy a hole from HOLEY_DOUBLE to double field. -var a = [1.5,,1.7]; -var o = {a:1.8}; - -function f1(o,a,i) { - o.a = a[i]; -} - -f1(o,a,0); -f1(o,a,0); -assertEquals(1.5, o.a); -%OptimizeFunctionOnNextCall(f1); -f1(o,a,1); -assertEquals(undefined, o.a); - -// Copy a hole from HOLEY_SMI to smi field. -var a = [1,,3]; -var o = {ab:5}; - -function f2(o,a,i) { - o.ab = a[i]; -} - -f2(o,a,0); -f2(o,a,0); -%OptimizeFunctionOnNextCall(f2); -f2(o,a,1); -assertEquals(undefined, o.ab); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-cr-344285.js b/implementation-contributed/v8/mjsunit/regress/regress-cr-344285.js deleted file mode 100644 index 42e8bd109bb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-cr-344285.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function __f_1(g) { return (g/-1) ^ 1; } -var __v_0 = 1 << 31; -var __v_2 = __f_1(__v_0); -caught = false; -try { - Realm.eval(__v_2, "Realm.global(0).y = 1"); -} catch (e) { - caught = true; -} -assertTrue(caught, "exception not caught"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-cr-658267.js b/implementation-contributed/v8/mjsunit/regress/regress-cr-658267.js deleted file mode 100644 index 9caada7954f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-cr-658267.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("class D extends async() =>", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-100859.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-100859.js deleted file mode 100644 index 6824426271a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-100859.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This used to trigger a crash because of an unhandled stack overflow. -function setx() { - setx(typeof new Uint16Array('x') === 'object'); -} -var exception = false; -try { - setx(); -} catch (ex) { - assertTrue(ex instanceof RangeError); - exception = true; -} -assertTrue(exception); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-109362.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-109362.js deleted file mode 100644 index cf7cd4e5fa7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-109362.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function test(expectation, f) { - var stack; - try { - f(); - } catch (e) { - stack = e.stack; - } - assertTrue(stack.indexOf("at eval (evaltest:" + expectation + ")") > 0); -} - -/* -(function( -) { -1 + reference_error //@ sourceURL=evaltest -}) -*/ -test("3:5", new Function( - '1 + reference_error //@ sourceURL=evaltest')); -/* -(function(x -) { - - 1 + reference_error //@ sourceURL=evaltest -}) -*/ -test("4:6", new Function( - 'x', '\n 1 + reference_error //@ sourceURL=evaltest')); -/* -(function(x - -,z// -,y -) { - - 1 + reference_error //@ sourceURL=evaltest -}) -*/ -test("7:6", new Function( - 'x\n\n', "z//\n", "y", '\n 1 + reference_error //@ sourceURL=evaltest')); -/* -(function(x/\*,z// -,y*\/ -) { -1 + reference_error //@ sourceURL=evaltest -}) -*/ -test("4:5", new Function( - 'x/*', "z//\n", "y*/", '1 + reference_error //@ sourceURL=evaltest')); -/* -(function () { - 1 + reference_error //@ sourceURL=evaltest5 -}) -*/ -test("2:6", eval( - '(function () {\n 1 + reference_error //@ sourceURL=evaltest\n})')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-119926.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-119926.js deleted file mode 100644 index 1ad250a2b83..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-119926.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --gc-global - -// Test that array elements don't break upon garbage collection. - -var a = new Array(500); -for (var i = 0; i < 100000; i++) { - a[i] = new Object(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-122271.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-122271.js deleted file mode 100644 index 8fb99230be8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-122271.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Tests that ElementsKind transitions and regular transitions don't -// interfere badly with each other. - -var a = [0, 0, 0, 1]; -var b = [0, 0, 0, "one"]; -var c = [0, 0, 0, 1]; -c.foo = "baz"; - -function foo(array) { - array.foo = "bar"; -} - -assertTrue(%HasSmiElements(a)); -assertTrue(%HasObjectElements(b)); - -foo(a); -foo(b); - -assertTrue(%HasSmiElements(a)); -assertTrue(%HasObjectElements(b)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-125148.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-125148.js deleted file mode 100644 index 0f7bcd8cab2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-125148.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function ToDictionaryMode(x) { - %OptimizeObjectForAddingMultipleProperties(x, 100); -} - -var A, B, C; - -// The initial bug report was about calling a know function... -A = {}; -Object.defineProperty(A, "foo", { value: function() { assertUnreachable(); }}); - -B = Object.create(A); -Object.defineProperty(B, "foo", { value: function() { return 111; }}); - -C = Object.create(B); - -function bar(x) { return x.foo(); } - -assertEquals(111, bar(C)); -assertEquals(111, bar(C)); -ToDictionaryMode(B); -%OptimizeFunctionOnNextCall(bar); -assertEquals(111, bar(C)); - -// Although this was not in the initial bug report: The same for getters... -A = {}; -Object.defineProperty(A, "baz", { get: function() { assertUnreachable(); }}); - -B = Object.create(A); -Object.defineProperty(B, "baz", { get: function() { return 111; }}); - -C = Object.create(B); - -function boo(x) { return x.baz; } - -assertEquals(111, boo(C)); -assertEquals(111, boo(C)); -ToDictionaryMode(B); -%OptimizeFunctionOnNextCall(boo); -assertEquals(111, boo(C)); - -// And once more for setters... -A = {}; -Object.defineProperty(A, "huh", { set: function(x) { assertUnreachable(); }}); - -B = Object.create(A); -var setterValue; -Object.defineProperty(B, "huh", { set: function(x) { setterValue = x; }}); - -C = Object.create(B); - -function fuu(x) { - setterValue = 222; - x.huh = 111; - return setterValue; -} - -assertEquals(111, fuu(C)); -assertEquals(111, fuu(C)); -ToDictionaryMode(B); -%OptimizeFunctionOnNextCall(fuu); -assertEquals(111, fuu(C)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-126414.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-126414.js deleted file mode 100644 index 6674267d74d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-126414.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function foo(bar) { - return arguments[bar]; -} -foo(0); // Handled in runtime. -foo(-536870912); // Triggers bug. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-134055.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-134055.js deleted file mode 100644 index 9b658fb6f65..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-134055.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function crash(obj) { - return obj.foo; -} - -function base(number_of_properties) { - var result = new Array(); - for (var i = 0; i < number_of_properties; i++) { - result["property" + i] = "value" + i; - } - result.foo = number_of_properties; - return result; -} - -var a = base(12); -var b = base(13); -var c = base(14); -var d = base(15); - -crash(a); // Premonomorphic. -crash(a); -crash(b); -crash(c); -crash(d); // Polymorphic, degree 4. - -//Prepare ElementsKind transition map chain. -var x = base(13); -x[0] = "object"; -x = base(14); -x[0] = "object"; -x = base(15); -x[0] = "object"; - -%OptimizeFunctionOnNextCall(crash); -crash(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-134609.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-134609.js deleted file mode 100644 index da7d85dcb65..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-134609.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --inline-accessors - -var forceDeopt = {x:0}; - -var objectWithGetterProperty = (function (value) { - var obj = {}; - Object.defineProperty(obj, "getterProperty", { - get: function foo() { - forceDeopt.x; - return value; - }, - }); - return obj; -})("bad"); - -function test() { - var iAmContextAllocated = "good"; - objectWithGetterProperty.getterProperty; - return iAmContextAllocated; - - // Make sure that the local variable is context allocated. - function unused() { iAmContextAllocated; } -} - -assertEquals("good", test()); -assertEquals("good", test()); -%OptimizeFunctionOnNextCall(test); -assertEquals("good", test()); - -// At this point, foo should have been inlined into test. Let's deopt... -delete forceDeopt.x; -assertEquals("good", test()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-135008.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-135008.js deleted file mode 100644 index 2be396e8055..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-135008.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Filler long enough to trigger lazy parsing. -var filler = "//" + new Array(1024).join('x'); - -var scope = { x:23 }; - -with(scope) { - eval( - "scope.f = (function outer() {" + - " function inner() {" + - " return x;" + - " }" + - " return inner;" + - "})();" + - filler - ); -}; - -assertSame(23, scope.f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-135066.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-135066.js deleted file mode 100644 index 35e9ff8c87c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-135066.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Filler long enough to trigger lazy parsing. -var filler = "//" + new Array(1024).join('x'); - -// Test strict eval in global context. -assertEquals(23, eval( - "'use strict';" + - "var x = 23;" + - "var f = function bozo1() {" + - " return x;" + - "};" + - "assertSame(23, f());" + - "f;" + - filler -)()); - -// Test default eval in strict context. -assertEquals(42, (function() { - "use strict"; - return eval( - "var y = 42;" + - "var g = function bozo2() {" + - " return y;" + - "};" + - "assertSame(42, g());" + - "g;" + - filler - )(); -})()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-137689.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-137689.js deleted file mode 100644 index ef79d240f89..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-137689.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function getter() { return 10; } -function setter(v) { } -function getter2() { return 20; } - -var o = {}; -var o2 = {}; - -Object.defineProperty(o, "foo", { get: getter, configurable: true }); -Object.defineProperty(o2, "foo", { get: getter, configurable: true }); -assertTrue(%HaveSameMap(o, o2)); - -Object.defineProperty(o, "bar", { get: getter2 }); -Object.defineProperty(o2, "bar", { get: getter2 }); -assertTrue(%HaveSameMap(o, o2)); - -Object.defineProperty(o, "foo", { set: setter, configurable: true }); -Object.defineProperty(o2, "foo", { set: setter, configurable: true }); -assertTrue(%HaveSameMap(o, o2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-138887.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-138887.js deleted file mode 100644 index 8d8e1694b62..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-138887.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function worker1(ignored) { - return 100; -} - -function factory(worker) { - return function(call_depth) { - if (call_depth == 0) return 10; - return 1 + worker(call_depth - 1); - } -} - -var f1 = factory(worker1); -var f2 = factory(f1); -assertEquals(11, f2(1)); // Result: 1 + f1(0) == 1 + 10. -assertEquals(11, f2(1)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(10, f1(0)); // Terminates immediately -> returns 10. -%OptimizeFunctionOnNextCall(f2); -assertEquals(102, f2(1000)); // 1 + f1(999) == 1 + 1 + worker1(998) == 102 diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-140083.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-140083.js deleted file mode 100644 index e38192cd8a7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-140083.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that the absence of a setter in a compound/count operation works. - -Object.defineProperty(Object.prototype, "foo", - { get: function() { return 123; } }); - -function bar(o) { - o.foo += 42; - o.foo++; -} - -var baz = {}; -bar(baz); -bar(baz); -%OptimizeFunctionOnNextCall(bar) -bar(baz); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-142087.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-142087.js deleted file mode 100644 index 881ca60fba3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-142087.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var string = "What are you looking for?"; - -var expected_match = [""]; -for (var i = 0; i < string.length; i++) { - expected_match.push(""); -} - -string.replace(/(_)|(_|)/g, ""); -assertArrayEquals(expected_match, string.match(/(_)|(_|)/g, "")); - -'***************************************'.match(/((\\)|(\*)|(\$))/g, "."); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-142218.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-142218.js deleted file mode 100644 index 373f83bca34..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-142218.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -length = 1 << 16; -a = new Array(length); - -function insert_element(key) { - a[key] = 42; -} - -insert_element(1); -%OptimizeFunctionOnNextCall(insert_element); -insert_element(new Object()); -count = 0; -for (var i = 0; i < length; i++) { - if (a[i] != undefined) count++; -} -assertEquals(1, count); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-145961.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-145961.js deleted file mode 100644 index eb88945e0f9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-145961.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This test causes the operands to be passed in as Integer32 registers. -// Flags: --allow-natives-syntax -function test() { - var a = new Int32Array(2); - var x = a[0]; - return Math.min(x, x); -} - -assertEquals(0, test()); -assertEquals(0, test()); -%OptimizeFunctionOnNextCall(test); -assertEquals(0, test()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-146910.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-146910.js deleted file mode 100644 index 120f8097319..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-146910.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = []; -assertSame(0, x.length); -assertSame(undefined, x[0]); - -Object.defineProperty(x, '0', { value: 7, configurable: false }); -assertSame(1, x.length); -assertSame(7, x[0]); - -x.length = 0; -assertSame(1, x.length); -assertSame(7, x[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-147475.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-147475.js deleted file mode 100644 index 180744c730f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-147475.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function worker1(ignored) { - return 100; -} - -function factory(worker) { - return function(call_depth) { - if (call_depth == 0) return 10; - return 1 + worker(call_depth - 1); - } -} - -var f1 = factory(worker1); -var f2 = factory(f1); -assertEquals(11, f2(1)); -%OptimizeFunctionOnNextCall(f1); -assertEquals(10, f1(0)); -%OptimizeFunctionOnNextCall(f2); -assertEquals(102, f2(2)); -assertEquals(102, f2(2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-148376.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-148376.js deleted file mode 100644 index 55bb5f16fa7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-148376.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function defineSetter(o) { - o.__defineSetter__('property', function() {}); -} - -defineSetter(Object.prototype); -property = 0; -defineSetter(this); -var keys = Object.keys(this); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-150545.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-150545.js deleted file mode 100644 index cfee0618ecf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-150545.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test that we do not generate OSR entry points that have an arguments -// stack height different from zero. The OSR machinery cannot generate -// frames for that. - -(function() { - "use strict"; - - var instantReturn = false; - function inner() { - if (instantReturn) return; - assertSame(3, arguments.length); - assertSame(1, arguments[0]); - assertSame(2, arguments[1]); - assertSame(3, arguments[2]); - } - - function outer() { - inner(1,2,3); - for (var i = 0; i < 3; i++) %OptimizeOsr(); - } - - outer(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-150729.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-150729.js deleted file mode 100644 index 15aa587d184..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-150729.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var t = 0; -function burn() { - i = [t, 1]; - var M = [i[0], Math.cos(t) + i[7074959]]; - t += .05; -} -for (var j = 0; j < 5; j++) { - if (j == 2) %OptimizeFunctionOnNextCall(burn); - burn(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-157019.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-157019.js deleted file mode 100644 index 66eb41bdd2c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-157019.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --noopt - -function makeConstructor() { - return function() { - this.a = 1; - this.b = 2; - }; -} - -var c1 = makeConstructor(); -var o1 = new c1(); - -c1.prototype = {}; - -for (var i = 0; i < 10; i++) { - var o = new c1(); - for (var j = 0; j < 8; j++) { - o["x" + j] = 0; - } -} - -var c2 = makeConstructor(); -var o2 = new c2(); - -for (var i = 0; i < 50000; i++) { - new c2(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-157520.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-157520.js deleted file mode 100644 index 95700853337..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-157520.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --noopt - -(function(){ - var f = function(arg) { - arg = 2; - return arguments[0]; - }; - for (var i = 0; i < 50000; i++) { - assertSame(2, f(1)); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-158185.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-158185.js deleted file mode 100644 index 5cb5900c8a0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-158185.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals("0023456", - Object.keys(JSON.parse('{"0023456": 1}'))[0]); -assertEquals("1234567890123", - Object.keys(JSON.parse('{"1234567890123": 1}'))[0]); -assertEquals("123456789ABCD", - Object.keys(JSON.parse('{"123456789ABCD": 1}'))[0]); -assertEquals("12A", - Object.keys(JSON.parse('{"12A": 1}'))[0]); - -assertEquals(1, JSON.parse('{"0":1}')[0]); -assertEquals(undefined, JSON.parse('{"00":1}')[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-160010.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-160010.js deleted file mode 100644 index 586bddd7c23..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-160010.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var str = "a"; -for (var i = 0; i < 28; i++) { - str += str; - %FlattenString(str); // Evil performance hack -} -JSON.stringify(str); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-162085.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-162085.js deleted file mode 100644 index a53b2c9987f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-162085.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Ensure extending an empty packed smi array with a double initializes the -// array with holes. -var a = [1,2,3]; -a.length = 0; -a[0] = 1.4; -assertEquals(1.4, a[0]); -assertEquals(undefined, a[1]); -assertEquals(undefined, a[2]); -assertEquals(undefined, a[3]); - -// Ensure the double array growstub initializes the array with holes. -function grow_store(a,i,v) { - a[i] = v; -} - -var a2 = [1.3]; -grow_store(a2,1,1.4); -a2.length = 0; -grow_store(a2,0,1.5); -assertEquals(1.5, a2[0]); -assertEquals(undefined, a2[1]); -assertEquals(undefined, a2[2]); -assertEquals(undefined, a2[3]); - -// Check storing objects using the double grow stub. -var a3 = [1.3]; -var o = {}; -grow_store(a3, 1, o); -assertEquals(1.3, a3[0]); -assertEquals(o, a3[1]); - -// Ensure the double array growstub initializes the array with holes. -function grow_store2(a,i,v) { - a[i] = v; -} - -var a4 = [1.3]; -grow_store2(a4,1,1.4); -a4.length = 0; -grow_store2(a4,0,1); -assertEquals(1, a4[0]); -assertEquals(undefined, a4[1]); -assertEquals(undefined, a4[2]); -assertEquals(undefined, a4[3]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-163530.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-163530.js deleted file mode 100644 index 7abae14a8be..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-163530.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test materialization of an arguments object with unknown argument -// values in non-strict mode (length has to be zero). -(function() { - var deoptimize = { deopt:true }; - var object = {}; - - object.a = function A(x, y, z) { - assertSame(0, arguments.length); - return this.b(); - }; - - object.b = function B() { - assertSame(0, arguments.length); - deoptimize.deopt; - return arguments.length; - }; - - assertSame(0, object.a()); - assertSame(0, object.a()); - %OptimizeFunctionOnNextCall(object.a); - assertSame(0, object.a()); - delete deoptimize.deopt; - assertSame(0, object.a()); -})(); - - -// Test materialization of an arguments object with unknown argument -// values in strict mode (length is allowed to exceed stack size). -(function() { - 'use strict'; - var deoptimize = { deopt:true }; - var object = {}; - - object.a = function A(x, y, z) { - assertSame(0, arguments.length); - return this.b(1, 2, 3, 4, 5, 6, 7, 8); - }; - - object.b = function B(a, b, c, d, e, f, g, h) { - assertSame(8, arguments.length); - deoptimize.deopt; - return arguments.length; - }; - - assertSame(8, object.a()); - assertSame(8, object.a()); - %OptimizeFunctionOnNextCall(object.a); - assertSame(8, object.a()); - delete deoptimize.deopt; - assertSame(8, object.a()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-168545.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-168545.js deleted file mode 100644 index acc065e4110..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-168545.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var o = {}; -Object.defineProperty(o, "length", { get: function() { throw "bail"; }}); -assertThrows("new Int16Array(o);"); - -var a = []; -Object.defineProperty(a, "0", { get: function() { throw "bail"; }}); -assertThrows("new Int16Array(a);"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-170856.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-170856.js deleted file mode 100644 index 2e73b12caaf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-170856.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -r = new RegExp("a"); -for (var i = 0; i < 100; i++) { - r["abc" + i] = i; -} -"zzzz".replace(r, ""); -assertEquals(0, r.lastIndex); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-172345.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-172345.js deleted file mode 100644 index 711501caa79..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-172345.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f(a,i) { - return a[i]; -} - -f([1,2,3], "length"); -f([1,2,3], "length"); -f([1,2,3], 2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-173907.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-173907.js deleted file mode 100644 index 9f92fefa788..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-173907.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var X = 1.1; -var K = 0.5; - -var O = 0; -var result = new Float64Array(2); - -function spill() { - try { } catch (e) { } -} - -function buggy() { - var v = X; - var phi1 = v + K; - var phi2 = v - K; - - spill(); // At this point initial values for phi1 and phi2 are spilled. - - var xmm1 = v; - var xmm2 = v*v*v; - var xmm3 = v*v*v*v; - var xmm4 = v*v*v*v*v; - var xmm5 = v*v*v*v*v*v; - var xmm6 = v*v*v*v*v*v*v; - var xmm7 = v*v*v*v*v*v*v*v; - var xmm8 = v*v*v*v*v*v*v*v*v; - - // All registers are blocked and phis for phi1 and phi2 are spilled because - // their left (incoming) value is spilled, there are no free registers, - // and phis themselves have only ANY-policy uses. - - for (var x = 0; x < 2; x++) { - xmm1 += xmm1 * xmm6; - xmm2 += xmm1 * xmm5; - xmm3 += xmm1 * xmm4; - xmm4 += xmm1 * xmm3; - xmm5 += xmm1 * xmm2; - - // Now swap values of phi1 and phi2 to create cycle between phis. - var t = phi1; - phi1 = phi2; - phi2 = t; - } - - // Now we want to get values of phi1 and phi2. However we would like to - // do it in a way that does not produce any uses of phi1&phi2 that have - // a register beneficial policy. How? We just hide these uses behind phis. - result[0] = (O === 0) ? phi1 : phi2; - result[1] = (O !== 0) ? phi1 : phi2; -} - -function test() { - buggy(); - assertArrayEquals([X + K, X - K], result); -} - -test(); -test(); -%OptimizeFunctionOnNextCall(buggy); -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-173907b.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-173907b.js deleted file mode 100644 index 4ecfd64eaf7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-173907b.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var X = 1.1; -var K = 0.5; - -var O = 0; -var result = new Float64Array(2); - -%NeverOptimizeFunction(spill); -function spill() { -} - -function buggy() { - var v = X; - var phi1 = v + K; - var phi2 = v - K; - - spill(); // At this point initial values for phi1 and phi2 are spilled. - - var xmm1 = v; - var xmm2 = v*v*v; - var xmm3 = v*v*v*v; - var xmm4 = v*v*v*v*v; - var xmm5 = v*v*v*v*v*v; - var xmm6 = v*v*v*v*v*v*v; - var xmm7 = v*v*v*v*v*v*v*v; - var xmm8 = v*v*v*v*v*v*v*v*v; - - // All registers are blocked and phis for phi1 and phi2 are spilled because - // their left (incoming) value is spilled, there are no free registers, - // and phis themselves have only ANY-policy uses. - - for (var x = 0; x < 2; x++) { - xmm1 += xmm1 * xmm6; - xmm2 += xmm1 * xmm5; - xmm3 += xmm1 * xmm4; - xmm4 += xmm1 * xmm3; - xmm5 += xmm1 * xmm2; - - // Now swap values of phi1 and phi2 to create cycle between phis. - var t = phi1; - phi1 = phi2; - phi2 = t; - } - - // Now we want to get values of phi1 and phi2. However we would like to - // do it in a way that does not produce any uses of phi1&phi2 that have - // a register beneficial policy. How? We just hide these uses behind phis. - result[0] = (O === 0) ? phi1 : phi2; - result[1] = (O !== 0) ? phi1 : phi2; -} - -function test() { - buggy(); - assertArrayEquals([X + K, X - K], result); -} - -test(); -test(); -%OptimizeFunctionOnNextCall(buggy); -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-173974.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-173974.js deleted file mode 100644 index 905bd6058a0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-173974.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f() { - var count = ""; - count[0] --; -} -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-178790.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-178790.js deleted file mode 100644 index f04b6068a8d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-178790.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --stack-size=1200 - -// Create a regexp in the form of a?a?...a? so that fully -// traversing the entire graph would be prohibitively expensive. -// This should not cause time out. -var r1 = ""; -for (var i = 0; i < 1000; i++) { - r1 += "a?"; -} -"test".match(RegExp(r1)); - -var r2 = ""; -for (var i = 0; i < 100; i++) { - r2 += "(a?|b?|c?|d?|e?|f?|g?)"; -} -"test".match(RegExp(r2)); - -// Create a regexp in the form of ((..(a)a..)a. -// Compiling it causes EatsAtLeast to reach the maximum -// recursion depth possible with a given budget. -// This should not cause a stack overflow. -var r3 = "a"; -for (var i = 0; i < 1000; i++) { - r3 = "(" + r3 + ")a"; -} -"test".match(RegExp(r3)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-181422.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-181422.js deleted file mode 100644 index 52826f3110d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-181422.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertArrayEquals(["\u00a0"], "ab\u00a0cd".match(/\s/)); -assertArrayEquals(["a", "b", "c", "d"], "ab\u00a0cd".match(/\S/g)); - -assertArrayEquals(["\u00a0"], "\u2604b\u00a0cd".match(/\s/)); -assertArrayEquals(["\u2604", "b", "c", "d"], "\u2604b\u00a0cd".match(/\S/g)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-18639.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-18639.js deleted file mode 100644 index 6c8e6ad2c62..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-18639.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://crbug.com/18639 - -try { - toString = toString; - __defineGetter__("z", (0).toLocaleString); - z; - z; - ((0).toLocaleString)(); -} catch (e) { - assertInstanceof(e, TypeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-196583.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-196583.js deleted file mode 100644 index c486158e22e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-196583.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = 1; -a.__proto__.f = 1; -a.__proto__.f = function() { return 1; } - -// Create some polymorphism. -function B() {} -B.prototype = {f: function() { return 2; }}; -var b = new B(); -function C() {} -C.prototype = {g: "foo", f: function() { return 3; }}; -var c = new C(); - -function crash(obj) { - return obj.f(); -} - -for (var i = 0; i < 2; i++) { - crash(a); - crash(b); - crash(c); -} -%OptimizeFunctionOnNextCall(crash); -assertEquals(1, crash(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-217858.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-217858.js deleted file mode 100644 index 26414c2b5a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-217858.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --noanalyze-environment-liveness --allow-natives-syntax - -var r = /r/; -function f() { - r[r] = function() {}; -} - -for (var i = 0; i < 300; i++) { - f(); - if (i == 150) %OptimizeOsr(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-229923.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-229923.js deleted file mode 100644 index 95c0dedefd6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-229923.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-externalize-string - -var slice = "slow path of JSON.stringify for sliced string".substring(1); -assertEquals('"' + slice + '"', JSON.stringify(slice, null, 0)); - -var parent = "external string turned into two byte"; -var slice_of_external = parent.substring(1); -try { - // Turn the string to a two-byte external string, so that the sliced - // string looks like one-byte, but its parent is actually two-byte. - externalizeString(parent, true); -} catch (e) { } -assertEquals('"' + slice_of_external + '"', - JSON.stringify(slice_of_external, null, 0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-233737.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-233737.js deleted file mode 100644 index df8aa15c936..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-233737.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = new Array(2); -a[0] = 1; -assertTrue(%HasSmiElements(a)); -assertTrue(%HasHoleyElements(a)); - -function hole(i) { - return a[i] << 0; -} - -assertEquals(1, hole(0)); -assertEquals(1, hole(0)); -%OptimizeFunctionOnNextCall(hole); -assertEquals(0, hole(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-240032.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-240032.js deleted file mode 100644 index 7ce95d34bd0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-240032.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Generate closures in that live in new-space. -function mk() { - return function() {}; -} -assertInstanceof(mk(), Function); -assertInstanceof(mk(), Function); - -// Setup constant function using above closures. -var o = {}; -o.func = mk(); - -// Optimize object comparison with new-space RHS. -function cmp(o, f) { - return f === o.func; -} -assertTrue(cmp(o, o.func)); -assertTrue(cmp(o, o.func)); -%OptimizeFunctionOnNextCall(cmp); -assertTrue(cmp(o, o.func)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-242502.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-242502.js deleted file mode 100644 index 8ee764029d4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-242502.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --allow-natives-syntax - -function f() { - return 23; -} - -function call(o) { - return o[''](); -} - -function test() { - var o1 = %ToFastProperties(Object.create({ foo:1 }, { '': { value:f }})); - var o2 = %ToFastProperties(Object.create({ bar:1 }, { '': { value:f }})); - var o3 = %ToFastProperties(Object.create({ baz:1 }, { '': { value:f }})); - var o4 = %ToFastProperties(Object.create({ qux:1 }, { '': { value:f }})); - var o5 = %ToFastProperties(Object.create({ loo:1 }, { '': { value:f }})); - // Called twice on o1 to turn monomorphic. - assertEquals(23, call(o1)); - assertEquals(23, call(o1)); - // Called on four other objects to turn megamorphic. - assertEquals(23, call(o2)); - assertEquals(23, call(o3)); - assertEquals(23, call(o4)); - assertEquals(23, call(o5)); - return o1; -} - -// Fill stub cache with entries. -test(); - -// Clear stub cache during GC. -gc(); - -// Turn IC megamorphic again. -var oboom = test(); - -// Optimize with previously cleared stub cache. -%OptimizeFunctionOnNextCall(call); -assertEquals(23, call(oboom)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-242870.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-242870.js deleted file mode 100644 index 7183375ca81..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-242870.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var non_const_true = true; - -function f() { - return (non_const_true || true && g()); -} - -function g() { - for (;;) {} -} - -assertTrue(f()); -assertTrue(f()); -%OptimizeFunctionOnNextCall(f); -assertTrue(f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-242924.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-242924.js deleted file mode 100644 index 68ad7c6fd4e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-242924.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --gc-global - -function f() { - return [,{}]; -} - -assertEquals([,{}], f()); -assertEquals([,{}], f()); -%OptimizeFunctionOnNextCall(f); -assertEquals([,{}], f()); -gc(); - -function g() { - return [[,1.5],{}]; -} - -assertEquals([[,1.5],{}], g()); -assertEquals([[,1.5],{}], g()); -%OptimizeFunctionOnNextCall(g); -assertEquals([[,1.5],{}], g()); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-243868.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-243868.js deleted file mode 100644 index 106d9cc78bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-243868.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var non_const_true = true; - -function f(o) { - return (non_const_true && (o.val == null || false)); -} - -// Create an object with a constant function in another realm. -var realm = Realm.create(); -var realmObject = Realm.eval(realm, "function g() {}; var o = { val:g }; o;") - -// Make the CompareNil IC in the function monomorphic. -assertFalse(f(realmObject)); -assertFalse(f(realmObject)); - -// Optimize the function containing the CompareNil IC. -%OptimizeFunctionOnNextCall(f); -assertFalse(f(realmObject)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-244461.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-244461.js deleted file mode 100644 index 2afb76ac127..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-244461.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function foo(arg) { - var a = arg(); - return a; -} - - -foo(Array); -foo(Array); -%OptimizeFunctionOnNextCall(foo); -// Compilation of foo will crash without the bugfix for 244461 -foo(Array); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-245424.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-245424.js deleted file mode 100644 index 005c8baba94..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-245424.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function boom() { - var a = { - foo: "bar", - foo: "baz" - }; - return a; -} - -assertEquals("baz", boom().foo); -assertEquals("baz", boom().foo); -%OptimizeFunctionOnNextCall(boom); -assertEquals("baz", boom().foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-245480.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-245480.js deleted file mode 100644 index b8557c9d91c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-245480.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc --noalways-opt - -function isHoley(obj) { - if (%HasHoleyElements(obj)) return true; - return false; -} - -function assertHoley(obj, name_opt) { - assertEquals(true, isHoley(obj), name_opt); -} - -function create_array(arg) { - return new Array(arg); -} - -obj = create_array(0); -assertHoley(obj); -create_array(0); -%OptimizeFunctionOnNextCall(create_array); -obj = create_array(10); -assertHoley(obj); - -// The code below would assert in debug or crash in release -function f(length) { - return new Array(length) -} - -f(0); -f(0); -%OptimizeFunctionOnNextCall(f); -var a = f(10); - -function g(a) { - return a[0]; -} - -var b = [0]; -g(b); -g(b); -assertEquals(undefined, g(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-258519.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-258519.js deleted file mode 100644 index b2015a8426f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-258519.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = { - compare_null: function(x) { return null != x; }, - kaboom: function() {} -} - -function crash(x) { - var b = a; - b.compare_null(x) && b.kaboom(); - return "ok"; -} - -assertEquals("ok", crash(null)); -assertEquals("ok", crash(null)); -%OptimizeFunctionOnNextCall(crash); -// Used to throw: "TypeError: Cannot call method 'kaboom' of undefined". -assertEquals("ok", crash(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-260345.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-260345.js deleted file mode 100644 index 75832ab4beb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-260345.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var steps = 100000; -var undefined_values = [undefined, "go on"]; -var null_values = [null, "go on"]; - -function get_undefined_object(i) { - return undefined_values[(i / steps) | 0]; -} - -function test_undefined() { - var objects = 0; - for (var i = 0; i < 2 * steps; i++) { - undefined == get_undefined_object(i) && objects++; - } - return objects; -} - -assertEquals(steps, test_undefined()); - - -function get_null_object(i) { - return null_values[(i / steps) | 0]; -} - -function test_null() { - var objects = 0; - for (var i = 0; i < 2 * steps; i++) { - null == get_null_object(i) && objects++; - } - return objects; -} - -assertEquals(steps, test_null()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-263276.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-263276.js deleted file mode 100644 index 05aa94cc857..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-263276.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var array1 = []; -array1.foo = true; - -var array2 = []; -array2.bar = true; - -function bad(array) { - array[array.length] = 1; -} - -bad(array1); -bad(array1); -bad(array2); // Length is now 1. -bad(array2); // Length is now 2. -%OptimizeFunctionOnNextCall(bad); -bad(array2); // Length is now 3. -assertEquals(3, array2.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-272564.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-272564.js deleted file mode 100644 index 5475298a88c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-272564.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function Bb(w) { - this.width = w; -} - -function ce(a, b) { - "number" == typeof a && (a = (b ? Math.round(a) : a) + "px"); - return a -} - -function pe(a, b, c) { - if (b instanceof Bb) b = b.width; - a.width = ce(b, !0); -} - -var a = new Bb(1); -var b = new Bb(5); -pe(a, b, 0); -pe(a, b, 0); -%OptimizeFunctionOnNextCall(pe); -pe(a, b, 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-274438.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-274438.js deleted file mode 100644 index 5d6817d1291..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-274438.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(a, b) { - var x = { a:a }; - switch(b) { case "string": } - var y = { b:b }; - return y; -} - -f("a", "b"); -f("a", "b"); -%OptimizeFunctionOnNextCall(f); -f("a", "b"); -%SetAllocationTimeout(100, 0); -var killer = f("bang", "bo" + "om"); -assertEquals("boom", killer.b); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-280333.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-280333.js deleted file mode 100644 index ca3fdc77460..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-280333.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function funky() { return false; } -var global; - -function foo(x, fun) { - var a = x + 1; - var b = x + 2; // Need another Simulate to fold the first one into. - global = true; // Need a side effect to deopt to. - if (fun()) { - return a; - } - return 0; -} - -assertEquals(0, foo(1, funky)); -assertEquals(0, foo(1, funky)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(0, foo(1, funky)); -assertEquals(2, foo(1, function() { return true; })); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-285355.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-285355.js deleted file mode 100644 index ebd480a7103..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-285355.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function inverted_index() { - return ~1; -} - -%NeverOptimizeFunction(inverted_index); - -function crash(array) { - return array[~inverted_index()] = 2; -} - -assertEquals(2, crash(new Array(1))); -assertEquals(2, crash(new Array(1))); -%OptimizeFunctionOnNextCall(crash) -assertEquals(2, crash(new Array(1))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-305309.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-305309.js deleted file mode 100644 index cd89bedc112..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-305309.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function BadProto() { - this.constant_function = function() {}; - this.one = 1; - this.two = 2; -} -var b1 = new BadProto(); -var b2 = new BadProto(); - -function Ctor() {} -Ctor.prototype = b1; -var a = new Ctor(); - -function Two(x) { - return x.two; -} -assertEquals(2, Two(a)); -assertEquals(2, Two(a)); -b2.constant_function = "no longer constant!"; -%OptimizeFunctionOnNextCall(Two); -assertEquals(2, Two(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-306220.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-306220.js deleted file mode 100644 index a481ee9dba1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-306220.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var CustomError = function(x) { this.x = x; }; -CustomError.prototype = new Error(); -CustomError.prototype.x = "prototype"; - -Object.defineProperties(CustomError.prototype, { - 'message': { - 'get': function() { return this.x; } - } -}); - -assertEquals("Error: instance", String(new CustomError("instance"))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-306851.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-306851.js deleted file mode 100644 index 77b711a656c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-306851.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function Counter() { - this.value = 0; -}; - -Object.defineProperty(Counter.prototype, 'count', { - get: function() { return this.value; }, - set: function(value) { this.value = value; } -}); - -var obj = new Counter(); - -function bummer() { - obj.count++; - return obj.count; -} - -assertEquals(1, bummer()); -assertEquals(2, bummer()); -assertEquals(3, bummer()); -%OptimizeFunctionOnNextCall(bummer); -assertEquals(4, bummer()); -assertEquals(5, bummer()); -assertEquals(6, bummer()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-309623.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-309623.js deleted file mode 100644 index c77611af46c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-309623.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var u = new Uint32Array(2); -u[0] = 1; -u[1] = 0xEE6B2800; - -var a = [0, 1, 2]; -a[0] = 0; // Kill the COW. -assertTrue(%HasSmiElements(a)); - -function foo(i) { - a[0] = u[i]; - return a[0]; -} - -assertEquals(u[0], foo(0)); -assertEquals(u[0], foo(0)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(u[1], foo(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-315252.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-315252.js deleted file mode 100644 index 51454bf2858..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-315252.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(a, b, c) { - this.a = a; - this.b = b; - this.c = c; -} -var o3 = new f(1, 2, 3.5); -var o4 = new f(1, 2.5, 3); -var o1 = new f(1.5, 2, 3); -var o2 = new f(1.5, 2, 3); -function migrate(o) { - return o.a; -} -// Use migrate to stabilize o1, o2 and o4 in [double, double, smi]. -migrate(o4); -migrate(o1); -migrate(o2); -function store_transition(o) { - o.d = 1; -} -// Optimize "store_transition" to transition from [double, double, smi] to -// [double, double, smi, smi]. This adds a dependency on the -// [double, double, smi] map. -store_transition(o4); -store_transition(o1); -store_transition(o2); -%OptimizeFunctionOnNextCall(store_transition); -// Pass in a deprecated object of format [smi, smi, double]. This will migrate -// the instance, forcing a merge with [double, double, smi], ending up with -// [double, double, double], which deprecates [double, double, smi] and -// deoptimizes all dependencies of [double, double, smi], including -// store_transition itself. -store_transition(o3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-3184.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-3184.js deleted file mode 100644 index 054668ea55d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-3184.js +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Object.extend = function (dest, source) { - for (property in source) dest[property] = source[property]; - return dest; -}; - -Object.extend ( Function.prototype, -{ - wrap : function (wrapper) { - var method = this; - var bmethod = (function(_method) { - return function () { - this.$$$parentMethodStore$$$ = this.$proceed; - this.$proceed = function() { return _method.apply(this, arguments); }; - }; - })(method); - var amethod = function () { - this.$proceed = this.$$$parentMethodStore$$$; - if (this.$proceed == undefined) delete this.$proceed; - delete this.$$$parentMethodStore$$$; - }; - var value = function() { bmethod.call(this); retval = wrapper.apply(this, arguments); amethod.call(this); return retval; }; - return value; - } -}); - -String.prototype.cap = function() { - return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); -}; - -String.prototype.cap = String.prototype.cap.wrap( - function(each) { - if (each && this.indexOf(" ") != -1) { - return this.split(" ").map( - function (value) { - return value.cap(); - } - ).join(" "); - } else { - return this.$proceed(); - } -}); - -Object.extend( Array.prototype, -{ - map : function(fun) { - if (typeof fun != "function") throw new TypeError(); - var len = this.length; - var res = new Array(len); - var thisp = arguments[1]; - for (var i = 0; i < len; i++) { if (i in this) res[i] = fun.call(thisp, this[i], i, this); } - return res; - } -}); -assertEquals("Test1 test1", "test1 test1".cap()); -assertEquals("Test2 Test2", "test2 test2".cap(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-318671.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-318671.js deleted file mode 100644 index 54a7d5eeb6c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-318671.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function add(x, y) { return x + y; } - -print(add({ a: 1 }, "a")); -print(add({ b: 1 }, "b")); -print(add({ c: 1 }, "c")); - -%OptimizeFunctionOnNextCall(add); - -print(add("a", 1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-319835.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-319835.js deleted file mode 100644 index 48f871f0a0d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-319835.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -try {} catch(e) {} // No need to optimize the top level. - -var size = 0x20000; -var a = new Float64Array(size); -var training = new Float64Array(10); -function store(a, index) { - var offset = 0x20000000; - for (var i = 0; i < 1; i++) { - a[index + offset] = 0xcc; - } -} - -store(training, -0x20000000); -store(training, -0x20000000 + 1); -store(training, -0x20000000); -store(training, -0x20000000 + 1); -%OptimizeFunctionOnNextCall(store); - -// Segfault maybe? -for (var i = -0x20000000; i < -0x20000000 + size; i++) { - store(a, i); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-319860.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-319860.js deleted file mode 100644 index b81fb85ba71..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-319860.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function read(a, index) { - var offset = 0x2000000; - var result; - for (var i = 0; i < 1; i++) { - result = a[index + offset]; - } - return result; -} - -var a = new Int8Array(0x2000001); -read(a, 0); -read(a, 0); -%OptimizeFunctionOnNextCall(read); - -// Segfault maybe? -for (var i = 0; i > -1000000; --i) { - read(a, i); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-323942.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-323942.js deleted file mode 100644 index 15af494b0fd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-323942.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -"use strict"; - -// Function is defined on the prototype chain. -var holder = { f: function() { return 42; } }; -var receiver = { }; -receiver.__proto__ = { }; -receiver.__proto__.__proto__ = holder; - -// Inline two levels. -function h(o) { return o.f.apply(this, arguments); } -function g(o) { return h(o); } - -// Collect type information for apply call. -assertEquals(42, g(receiver)); -assertEquals(42, g(receiver)); - -// Sneakily remove the function from the prototype chain. -// The receiver map does not change. -receiver.__proto__.__proto__ = {}; - -// Lookup of o.f during graph creation fails. -%OptimizeFunctionOnNextCall(g); - -assertThrows(function() { g(receiver); }); - -// Put function back. -receiver.__proto__.__proto__ = holder; -assertEquals(42, g(receiver)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-325225.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-325225.js deleted file mode 100644 index 798d54839d8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-325225.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f1(a) { - a[0](0); -} - -function do1() { - f1([f1]); -} - -assertThrows(do1, TypeError); - -function f2(a) { - a[0](true); -} - -function do2() { - f2([function(a) { return f2("undefined", typeof f2(42, 0)); }]); -} - -assertThrows(do2, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-329709.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-329709.js deleted file mode 100644 index c5316f391ce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-329709.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function boom(x) { - switch(x) { - case 1: return "one"; - case 1500000000: return "non-smi int32"; - default: return "default"; - } -} - -assertEquals("one", boom(1)); -assertEquals("one", boom(1)); -%OptimizeFunctionOnNextCall(boom) -assertEquals("non-smi int32", boom(1500000000)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-336148.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-336148.js deleted file mode 100644 index 8157c9fcc19..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-336148.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(o) { - var a = 1; - if (true) return o.v && a; -} - -f({}); -f({}); -%OptimizeFunctionOnNextCall(f); -assertEquals(1, f({ v: 1 })); - - -function f1() { return 1 && 2; }; -function f2() { return 1 || 2; }; -function f3() { return 0 && 2; }; -function f4() { return 0 || 2; }; - -function test() { - assertEquals(2, f1()); - assertEquals(1, f2()); - assertEquals(0, f3()); - assertEquals(2, f4()); -} - -test(); -test(); -[f1, f2, f3, f4].forEach(function(f) { %OptimizeFunctionOnNextCall(f); }); -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-340064.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-340064.js deleted file mode 100644 index f2ab1d66759..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-340064.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(v) { - return v.length; -} - -assertEquals(4, f("test")); -assertEquals(4, f("test")); -assertEquals(undefined, f(true)); -%OptimizeFunctionOnNextCall(f); -assertEquals(undefined, f(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-344186.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-344186.js deleted file mode 100644 index 6486f3864f9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-344186.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var dummy = new Int32Array(100); -var array = new Int32Array(128); -function fun(base) { - array[base - 95] = 1; - array[base - 99] = 2; - array[base + 4] = 3; -} -fun(100); -%OptimizeFunctionOnNextCall(fun); -fun(0); - -for (var i = 0; i < dummy.length; i++) { - assertEquals(0, dummy[i]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-345715.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-345715.js deleted file mode 100644 index a3753417dfb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-345715.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -a = {y:1.5}; -a.y = 0; -b = a.y; -c = {y:{}}; - -function f() { - return 1; -} - -function g() { - var e = {y: b}; - var d = {x:f()}; - var d = {x:f()}; - return [e, d]; -} - -g(); -g(); -%OptimizeFunctionOnNextCall(g); -assertEquals(1, g()[1].x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-345820.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-345820.js deleted file mode 100644 index bdd0af9b12d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-345820.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --debug-code - -var __v_6 = {}; -__v_6 = new Int32Array(5); -for (var i = 0; i < __v_6.length; i++) __v_6[i] = 0; - -function __f_7(N) { - for (var i = -1; i < N; i++) { - __v_6[i] = i; - } -} -__f_7(1); -%OptimizeFunctionOnNextCall(__f_7); -__f_7(__v_6.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-346636.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-346636.js deleted file mode 100644 index 247f8be4822..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-346636.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertSame(expected, found) { - if (found === expected) { - if (expected !== 0 || (1 / expected) == (1 / found)) return; - } - return; -}; - -function foo(x) { - return x.bar; -} - -function getter1() { - assertSame(this, this); -} -var o1 = Object.defineProperty({}, "bar", { get: getter1 }); -foo(o1); -foo(o1); - -function getter2() { - assertSame(this, this); -} -var o2 = Object.defineProperty({}, "bar", { get: getter2 }); -foo(o2); -%OptimizeFunctionOnNextCall(foo); -foo(o2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-347903.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-347903.js deleted file mode 100644 index 62572da095c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-347903.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap - -function f() { - var a = new Array(84632); - // Allocation folding will bail out trying to fold the elements alloc of - // array "b." - var b = new Array(84632); - var c = new Array(84632); - return [a, b, c]; -} -f(); f(); -%OptimizeFunctionOnNextCall(f); -for(var i = 0; i < 10; i++) { - f(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-349079.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-349079.js deleted file mode 100644 index b1076ea435c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-349079.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertEquals(expected, found) { - return found === expected; -}; -%NeverOptimizeFunction(assertEquals); - -function crash() { - var a = 1; - var b = -0; - var c = 1.5; - assertEquals(b, Math.max(b++, c++)); - assertEquals(c, Math.min(b++, c++)); - assertEquals(b, Math.max(b++, a++)); -} -crash(); -crash(); -%OptimizeFunctionOnNextCall(crash); -crash(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-349465.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-349465.js deleted file mode 100644 index 21887504cc7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-349465.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --debug-code - -function f(a, base) { - a[base] = 1; - a[base + 4] = 2; - a[base] = 3; -} -var a1 = new Array(1024); -var a2 = new Array(128); -f(a1, 1); -f(a2, -2); -%OptimizeFunctionOnNextCall(f); -f(a1, -2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-349853.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-349853.js deleted file mode 100644 index 53af64c9d02..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-349853.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = ["string"]; -function funky(array) { return array[0] = 1; } -funky(a); - -function crash() { - var q = [0]; - // The failing ASSERT was only triggered when compiling for OSR. - for (var i = 0; i < 100000; i++) { - funky(q); - } - q[0] = 0; - funky(q) -} - -crash(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-349878.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-349878.js deleted file mode 100644 index 5ed048ff547..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-349878.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a, b) { - a == b; -} - -f({}, {}); - -var a = { y: 1.5 }; -a.y = 777; -var b = a.y; - -function h() { - var d = 1; - var e = 777; - while (d-- > 0) e++; - f(1, e); -} - -var global; -function g() { - global = b; - return h(b); -} - -g(); -g(); -%OptimizeFunctionOnNextCall(g); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-350434.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-350434.js deleted file mode 100644 index 8a9a8e53012..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-350434.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --gc-global --noincremental-marking --allow-natives-syntax - -function Ctor() { - this.foo = 1; -} - -var o = new Ctor(); -var p = new Ctor(); - - -function crash(o, timeout) { - var s = "4000111222"; // Outside Smi range. - %SetAllocationTimeout(100000, timeout); - // This allocates a heap number, causing a GC, triggering lazy deopt. - var end = s >>> 0; - s = s.substring(0, end); - // This creates a map dependency, which gives the GC a reason to trigger - // a lazy deopt when that map dies. - o.bar = 2; -} - -crash(o, 100000); -crash(o, 100000); -crash(p, 100000); -%OptimizeFunctionOnNextCall(crash); -crash(o, 100000); -o = null; -p = null; -crash({}, 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-350864.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-350864.js deleted file mode 100644 index 510834be3e4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-350864.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var v0 = new WeakMap; -var v1 = {}; -v0.set(v1, 1); -var sym = Symbol(); -v1[sym] = 1; -var symbols = Object.getOwnPropertySymbols(v1); -assertArrayEquals([sym], symbols); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-350867.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-350867.js deleted file mode 100644 index d8b826cff5c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-350867.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f1(a, i) { - return a[i]; -} -function f2(a, b, c, index) { - return f1(arguments, index); -} - -f2(2, 3, 4, "foo"); -f2(2, 3, 4, "foo"); -assertEquals(11, f1([11, 22, 33], 0)); -assertEquals(22, f2(22, 33, 44, 0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-350890.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-350890.js deleted file mode 100644 index b60a2aaf962..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-350890.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function set_length(a, l) { - a.length = l; -} - -function test1() { - var l = {}; - var a = Array(l); - set_length(a, 3); - set_length(a, 3); - assertEquals(3, a.length); -} - -function test2() { - var a = []; - set_length(a, 10); - set_length(a, 10); - Object.freeze(a); - set_length(a, 3); - set_length(a, 3); - assertEquals(10, a.length); -} - -function test3() { - var a = [2]; - Object.defineProperty(a, "length", {value:2, writable: false}); - %ToFastProperties(a); - set_length([], 10); - set_length([], 10); - set_length(a, 10); - set_length(a, 10); - assertEquals(2, a.length); -} - -test1(); -test2(); -test3(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-351262.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-351262.js deleted file mode 100644 index a2f4eadc0de..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-351262.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -for (var x in this) {}; -JSON.stringify(this); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-351320.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-351320.js deleted file mode 100644 index 3ffef0ba82b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-351320.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var result = 0; -var o1 = {}; -o2 = {y:1.5}; -o2.y = 0; -o3 = o2.y; - -function crash() { - for (var i = 0; i < 10; i++) { - result += o1.x + o3.foo; - } -} - -crash(); -%OptimizeFunctionOnNextCall(crash); -crash(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-351658.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-351658.js deleted file mode 100644 index ae6b50ec875..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-351658.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -try { - var f = eval("(function(){0 = y + y})"); - %OptimizeFunctionOnNextCall(f); - f(); - assertUnreachable(); -} catch(e) { - assertTrue(e instanceof ReferenceError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-351787.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-351787.js deleted file mode 100644 index 74cabf2b9a3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-351787.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var ab1 = new ArrayBuffer(8); -ab1.__defineGetter__("byteLength", function() { return 1000000; }); -var ab2 = ab1.slice(800000, 900000); -var array = new Uint8Array(ab2); -for (var i = 0; i < array.length; i++) { - assertEquals(0, array[i]); -} -assertEquals(0, array.length); - - -var ab3 = new ArrayBuffer(8); -ab3.__defineGetter__("byteLength", function() { return 0xFFFFFFFC; }); -var aaa = new DataView(ab3); - -for (var i = 10; i < aaa.length; i++) { - aaa.setInt8(i, 0xcc); -} -assertEquals(8, aaa.byteLength); - - -var a = new Int8Array(4); -a.__defineGetter__("length", function() { return 0xFFFF; }); -var b = new Int8Array(a); -for (var i = 0; i < b.length; i++) { - assertEquals(0, b[i]); -} - - -var ab4 = new ArrayBuffer(8); -ab4.__defineGetter__("byteLength", function() { return 0xFFFFFFFC; }); -var aaaa = new Uint32Array(ab4); - -for (var i = 10; i < aaaa.length; i++) { - aaaa[i] = 0xcccccccc; -} -assertEquals(2, aaaa.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-352058.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-352058.js deleted file mode 100644 index e270d830074..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-352058.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --check-elimination --stress-opt - -var v0 = this; -var v2 = this; -function f() { - v2 = [1.2, 2.3]; - v0 = [12, 23]; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-352586.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-352586.js deleted file mode 100644 index 18b5390c58f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-352586.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = {}; - -function getter() { - do { - return a + 1; - } while (false); -} - -a.__proto__ = Error(""); -a.__defineGetter__('message', getter); -assertThrows(()=>a.message, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-352929.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-352929.js deleted file mode 100644 index a5872c12588..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-352929.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var dummy = new Int32Array(100); -array = new Int32Array(100); -var dummy2 = new Int32Array(100); - -array[-17] = 0; -function fun(base,cond) { - array[base - 1] = 1; - array[base - 2] = 2; - if (cond) { - array[base - 4] = 3; - array[base - 5] = 4; - } else { - array[base - 6] = 5; - array[base - 100] = 777; - } -} -fun(5,true); -fun(7,false); -%OptimizeFunctionOnNextCall(fun); -fun(7,false); - -for (var i = 0; i < dummy.length; i++) { - assertEquals(0, dummy[i]); -} -for (var i = 0; i < dummy2.length; i++) { - assertEquals(0, dummy2[i]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-354391.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-354391.js deleted file mode 100644 index e652bd3d0f2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-354391.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function load(a, i) { - return a[i]; -} - -function f2(a, b, c, d, index) { - return load(arguments, index); -} - -f2(1, 2, 3, 4, "foo"); -f2(1, 2, 3, 4, "foo"); -load([11, 22, 33], 0); -assertEquals(11, f2(11, 22, 33, 44, 0)); - -%OptimizeFunctionOnNextCall(load); -assertEquals(11, f2(11, 22, 33, 44, 0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-357052.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-357052.js deleted file mode 100644 index 7a583964077..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-357052.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - var str = ""; - for (var i = 0; i < 30; i++) { - str += "abcdefgh12345678" + str; - } - return str; -} -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-357137.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-357137.js deleted file mode 100644 index a780426f012..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-357137.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var locals = ""; -for (var i = 0; i < 1024; i++) locals += "var v" + i + ";"; -eval("function f() {" + locals + "f();}"); -assertThrows("f()", RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-357330.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-357330.js deleted file mode 100644 index b3edf00843e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-357330.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(foo) { - var g; - true ? (g = foo + 0) : g = null; - if (null != g) {} -}; - -f(1.4); -f(1.4); -%OptimizeFunctionOnNextCall(f); -f(1.4); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-364374.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-364374.js deleted file mode 100644 index d8ae91fffef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-364374.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Intl) { - // chromium:364374 - - // Locations with 2 underscores are accepted and normalized. - // 'of' and 'es' are always lowercased. - df = new Intl.DateTimeFormat('en-US', {'timeZone': 'eUrope/isLe_OF_man'}) - assertEquals('Europe/Isle_of_Man', df.resolvedOptions().timeZone); - - df = new Intl.DateTimeFormat('en-US', {'timeZone': 'africa/Dar_eS_salaam'}) - assertEquals('Africa/Dar_es_Salaam', df.resolvedOptions().timeZone); - - df = new Intl.DateTimeFormat('en-US', {'timeZone': 'America/port_of_spain'}) - assertEquals('America/Port_of_Spain', df.resolvedOptions().timeZone); - - // Zone ids with more than 2 parts are accepted and normalized. - df = new Intl.DateTimeFormat('en-US', {'timeZone': 'America/north_Dakota/new_salem'}) - assertEquals('America/North_Dakota/New_Salem', df.resolvedOptions().timeZone); - - // 3-part zone IDs are accepted and normalized. - // Two Buenose Aires aliases are identical. - df1 = new Intl.DateTimeFormat('en-US', {'timeZone': 'America/aRgentina/buenos_aIres'}) - df2 = new Intl.DateTimeFormat('en-US', {'timeZone': 'America/Argentina/Buenos_Aires'}) - assertEquals(df1.resolvedOptions().timeZone, df2.resolvedOptions().timeZone); - - df2 = new Intl.DateTimeFormat('en-US', {'timeZone': 'America/Buenos_Aires'}) - assertEquals(df1.resolvedOptions().timeZone, df2.resolvedOptions().timeZone); - - df1 = new Intl.DateTimeFormat('en-US', {'timeZone': 'America/Indiana/Indianapolis'}) - df2 = new Intl.DateTimeFormat('en-US', {'timeZone': 'America/Indianapolis'}) - assertEquals(df1.resolvedOptions().timeZone, df2.resolvedOptions().timeZone); - - // ICU does not recognize East-Indiana. Add later when it does. - // df2 = new Intl.DateTimeFormat('en-US', {'timeZone': 'America/East-Indiana'}) - // assertEquals(df1.resolvedOptions().timeZone, df2.resolvedOptions().timeZone); - - - // Zone IDs with hyphens. 'au' has to be in lowercase. - df = new Intl.DateTimeFormat('en-US', {'timeZone': 'America/port-aU-pRince'}) - assertEquals('America/Port-au-Prince', df.resolvedOptions().timeZone); - - // Accepts Ho_Chi_Minh and treats it as identical to Saigon - df1 = new Intl.DateTimeFormat('en-US', {'timeZone': 'Asia/Ho_Chi_Minh'}) - df2 = new Intl.DateTimeFormat('en-US', {'timeZone': 'Asia/Saigon'}) - assertEquals(df1.resolvedOptions().timeZone, df2.resolvedOptions().timeZone); - - // Throws for invalid timezone ids. - assertThrows(() => Intl.DateTimeFormat(undefined, {timeZone: 'Europe/_Paris'})); - assertThrows(() => Intl.DateTimeFormat(undefined, {timeZone: 'America/New__York'})); - assertThrows(() => Intl.DateTimeFormat(undefined, {timeZone: 'America//New_York'})); - assertThrows(() => Intl.DateTimeFormat(undefined, {timeZone: 'America/New_York_'})); - assertThrows(() => Intl.DateTimeFormat(undefined, {timeZone: 'America/New_Y0rk'})); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-374838.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-374838.js deleted file mode 100644 index 614b4d9a877..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-374838.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - var a = [0]; - result = 0; - for (var i = 0; i < 4; i++) { - result += a.length; - a.shift(); - } - return result; -} - -assertEquals(1, foo()); -assertEquals(1, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(1, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-37853.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-37853.js deleted file mode 100644 index 047fbcbdd1e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-37853.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://crbug.com/37853 - -function f(o, k) { return o[k]; } -a = {'a':1, 1:'a'} -f(a, 'a') -f(a, 'a') -f(a, 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-380512.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-380512.js deleted file mode 100644 index af78ba7183a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-380512.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { [].lastIndexOf(42); } - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-381534.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-381534.js deleted file mode 100644 index 2aa39296774..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-381534.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var obj = {}; - -function f(v) { - var v1 = -(4/3); - var v2 = 1; - var arr = new Array(+0, true, 0, -0, false, undefined, null, "0", obj, v1, -(4/3), -1.3333333333333, "str", v2, 1, false); - assertEquals(10, arr.lastIndexOf(-(4/3))); - assertEquals(9, arr.indexOf(-(4/3))); - - assertEquals(10, arr.lastIndexOf(v)); - assertEquals(9, arr.indexOf(v)); - - assertEquals(8, arr.lastIndexOf(obj)); - assertEquals(8, arr.indexOf(obj)); -} - -function g(v, x, index) { - var arr = new Array({}, x-1.1, x-2, x-3.1); - assertEquals(index, arr.indexOf(0)); - assertEquals(index, arr.lastIndexOf(0)); - - assertEquals(index, arr.indexOf(v)); - assertEquals(index, arr.lastIndexOf(v)); -} - -f(-(4/3)); -f(-(4/3)); -%OptimizeFunctionOnNextCall(f); -f(-(4/3)); - -g(0, 2, 2); -g(0, 3.1, 3); -%OptimizeFunctionOnNextCall(g); -g(0, 1.1, 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-382143.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-382143.js deleted file mode 100644 index 9f37b2e478c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-382143.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function A() { - Object.defineProperty(this, "x", { set: function () {}, get: function () {}}); - this.a = function () { return 1; } -} - -function B() { - A.apply( this ); - this.a = function () { return 2; } -} - -var b = new B(); -assertTrue(Object.getOwnPropertyDescriptor(b, "a").enumerable); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-382513.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-382513.js deleted file mode 100644 index 59d2dcac72b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-382513.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { return [+0,false].indexOf(-(4/3)); } -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-385002.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-385002.js deleted file mode 100644 index e9023e1d6d5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-385002.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=200 --allow-natives-syntax - -%ScheduleBreak(); // Schedule an interrupt that does not go away. - -function f() { f(); } -assertThrows(f, RangeError); - -var locals = ""; -for (var i = 0; i < 1024; i++) locals += "var v" + i + ";"; -eval("function g() {" + locals + "f();}"); -assertThrows("g()", RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-3867.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-3867.js deleted file mode 100644 index 03001b6c797..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-3867.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function props(x) { - var result = []; - for (var p in x) result.push(p); - return result; -} - -function A() { - this.a1 = 1234; - this.a2 = "D"; - this.a3 = false; -} - -function B() { - this.b3 = false; - this.b2 = "D"; - this.b1 = 1234; -} - -function C() { - this.c3 = false; - this.c1 = 1234; - this.c2 = "D"; -} - -assertArrayEquals(["a1", "a2", "a3"], props(new A())); -assertArrayEquals(["b3", "b2", "b1"], props(new B())); -assertArrayEquals(["c3", "c1", "c2"], props(new C())); -assertArrayEquals(["s1", "s2", "s3"], props({s1: 0, s2: 0, s3: 0})); -assertArrayEquals(["s3", "s2", "s1"], props({s3: 0, s2: 0, s1: 0})); -assertArrayEquals(["s3", "s1", "s2"], props({s3: 0, s1: 0, s2: 0})); - -var a = new A() -a.a0 = 0; -a.a4 = 0; -assertArrayEquals(["a1", "a2", "a3", "a0", "a4"], props(a)); - -var b = new B() -b.b4 = 0; -b.b0 = 0; -assertArrayEquals(["b3", "b2", "b1", "b4", "b0"], props(b)); - -var o1 = {s1: 0, s2: 0, s3: 0} -o1.s0 = 0; -o1.s4 = 0; -assertArrayEquals(["s1", "s2", "s3", "s0", "s4"], props(o1)); - -var o2 = {s3: 0, s2: 0, s1: 0} -o2.s4 = 0; -o2.s0 = 0; -assertArrayEquals(["s3", "s2", "s1", "s4", "s0"], props(o2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-387031.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-387031.js deleted file mode 100644 index 77f52a9d35e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-387031.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -a = [1]; -b = []; -a.__defineGetter__(0, function () { - b.length = 0xffffffff; -}); -c = a.concat(b); -for (var i = 0; i < 20; i++) { - assertEquals(undefined, (c[i])); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-387636.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-387636.js deleted file mode 100644 index 1e50ace45a2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-387636.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - [].indexOf(0x40000000); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-390918.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-390918.js deleted file mode 100644 index 4c202b3a9b2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-390918.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(scale) { - var arr = {a: 1.1}; - - for (var i = 0; i < 2; i++) { - arr[2 * scale] = 0; - } -} - -f({}); -f({}); -%OptimizeFunctionOnNextCall(f); -f(1004); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-39160.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-39160.js deleted file mode 100644 index a8a8567903b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-39160.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://crbug.com/39160 - -// To reproduce the bug we need an inlined comparison (i.e. in a loop) where -// the left hand side is known to be a smi (max smi value is 1073741823). This -// test crashes with the bug. -function f(a) { - for (var i = 1073741820; i < 1073741822; i++) { - if (a < i) { - a += i; - } - } -} - -f(5) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-393988.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-393988.js deleted file mode 100644 index 9543e1e4c4a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-393988.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = {}; -Error.captureStackTrace(o); -Object.defineProperty(o, "stack", { value: 1 }); -assertEquals(1, o.stack); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-403409.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-403409.js deleted file mode 100644 index ffd100b4689..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-403409.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Array.prototype[0] = 777; -var kElements = 10; - -var input_array = []; -for (var i = 1; i < kElements; i++) { - input_array[i] = 0.5; -} -var output_array = input_array.concat(0.5); - -assertEquals(kElements + 1, output_array.length); -assertEquals(777, output_array[0]); -for (var j = 1; j < kElements; j++) { - assertEquals(0.5, output_array[j]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-405517.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-405517.js deleted file mode 100644 index 578e76adedf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-405517.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --gc-interval=203 - -function f() { - var e = [0]; - Object.preventExtensions(e); - for (var i = 0; i < 4; i++) e.shift(); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-407946.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-407946.js deleted file mode 100644 index d5687cca342..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-407946.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(n) { return [0].indexOf((n - n) + 0); } - -assertEquals(0, f(.1)); -assertEquals(0, f(.1)); -%OptimizeFunctionOnNextCall(f); -assertEquals(0, f(.1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-40931.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-40931.js deleted file mode 100644 index 2dbff6ea51c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-40931.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://crbug.com/40931 - -// To reproduce this we need to split a comma separated string and check the -// indices which should only contain the numeric indices corresponding to the -// number of values of the split. - -var names = "a,b,c,d"; - -for(var i = 0; i < 10; i++) { - var splitNames = names.split(/,/); - var forInNames = []; - var count = 0; - for (name in splitNames) { - forInNames[count++] = name; - } - forInNames.sort(); - assertEquals("0,1,2,3", forInNames.join()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412203.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-412203.js deleted file mode 100644 index f15085954f4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412203.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var b = []; -b[10000] = 1; -// Required to reproduce the bug. -assertTrue(%HasDictionaryElements(b)); - -var a1 = [1.5]; -b.__proto__ = a1; -assertEquals(1.5, ([].concat(b))[0]); - -var a2 = new Int32Array(2); -a2[0] = 3; -b.__proto__ = a2 -assertEquals(3, ([].concat(b))[0]); - -function foo(x, y) { - var a = []; - a[10000] = 1; - assertTrue(%HasDictionaryElements(a)); - - a.__proto__ = arguments; - var c = [].concat(a); - for (var i = 0; i < arguments.length; i++) { - assertEquals(i + 2, c[i]); - } - assertEquals(undefined, c[arguments.length]); - assertEquals(undefined, c[arguments.length + 1]); -} -foo(2); -foo(2, 3); -foo(2, 3, 4); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412208.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-412208.js deleted file mode 100644 index a194f855b4c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412208.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var non_const_true = true; - -function f() { - return non_const_true || (f() = this); -} - -assertTrue(f()); -assertTrue(f()); -%OptimizeFunctionOnNextCall(f); -assertTrue(f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412210.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-412210.js deleted file mode 100644 index 6ec7d62379c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412210.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - return (x ? "" >> 0 : "") + /a/; -}; - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412215.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-412215.js deleted file mode 100644 index ad926fc4a2a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412215.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var dummy = {foo: "true"}; - -var a = {y:0.5}; -a.y = 357; -var b = a.y; - -var d; -function f( ) { - d = 357; - return {foo: b}; -} -f(); -f(); -%OptimizeFunctionOnNextCall(f); -var x = f(); - -// With the bug, x is now an invalid object; the code below -// triggers a crash. - -function g(obj) { - return obj.foo.length; -} - -g(dummy); -g(dummy); -%OptimizeFunctionOnNextCall(g); -g(x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412319.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-412319.js deleted file mode 100644 index 158fc59ae66..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-412319.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function __f_6() { - var __v_7 = [0]; - Object.preventExtensions(__v_7); - for (var __v_6 = -2; __v_6 < 19; __v_6++) __v_7.shift(); - __f_7(__v_7); -} -__f_6(); -__f_6(); -%OptimizeFunctionOnNextCall(__f_6); -__f_6(); -function __f_7(__v_7) { - __v_7.pop(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-416558.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-416558.js deleted file mode 100644 index 375ad406eaa..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-416558.js +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - function store(x) { x[0] = 0; } - store([]); - var c = /x/; - store(c); - function get_hole() { - var b = /x/; - store(b); - return b[1]; - } - assertEquals(undefined, get_hole()); - assertEquals(undefined, get_hole()); -})(); - -(function() { - function store(x) { x[0] = 0; } - store([]); - var c = new Date(); - store(c); - function get_hole() { - var b = new Date(); - store(b); - return b[1]; - } - assertEquals(undefined, get_hole()); - assertEquals(undefined, get_hole()); -})(); - -(function() { - function store(x) { x[0] = 0; } - store([]); - var c = new Number(1); - store(c); - function get_hole() { - var b = new Number(1); - store(b); - return b[1]; - } - assertEquals(undefined, get_hole()); - assertEquals(undefined, get_hole()); -})(); - -(function() { - function store(x) { x[0] = 0; } - store([]); - var c = new Boolean(); - store(c); - function get_hole() { - var b = new Boolean(); - store(b); - return b[1]; - } - assertEquals(undefined, get_hole()); - assertEquals(undefined, get_hole()); -})(); - -(function() { - function store(x) { x[0] = 0; } - store([]); - var c = new Map(); - store(c); - function get_hole() { - var b = new Map(); - store(b); - return b[1]; - } - assertEquals(undefined, get_hole()); - assertEquals(undefined, get_hole()); -})(); - -(function() { - function store(x) { x[0] = 0; } - store([]); - var c = new Set(); - store(c); - function get_hole() { - var b = new Set(); - store(b); - return b[1]; - } - assertEquals(undefined, get_hole()); - assertEquals(undefined, get_hole()); -})(); - -(function() { - function store(x) { x[0] = 0; } - store([]); - var c = new WeakMap(); - store(c); - function get_hole() { - var b = new WeakMap(); - store(b); - return b[1]; - } - assertEquals(undefined, get_hole()); - assertEquals(undefined, get_hole()); -})(); - -(function() { - function store(x) { x[0] = 0; } - store([]); - var c = new WeakSet(); - store(c); - function get_hole() { - var b = new WeakSet(); - store(b); - return b[1]; - } - assertEquals(undefined, get_hole()); - assertEquals(undefined, get_hole()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-417508.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-417508.js deleted file mode 100644 index 589fb88443b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-417508.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - var k = "value"; - return x[k] = 1; -} -var obj = {}; -Object.defineProperty(obj, "value", {set: function(x) { throw "nope"; }}); -try { foo(obj); } catch(e) {} -try { foo(obj); } catch(e) {} -%OptimizeFunctionOnNextCall(foo); -try { foo(obj); } catch(e) {} - -function bar(x) { - var k = "value"; - return (x[k] = 1) ? "ok" : "nope"; -} -var obj2 = {}; -Object.defineProperty(obj2, "value", - {set: function(x) { throw "nope"; return true; } }); - -try { bar(obj2); } catch(e) {} -try { bar(obj2); } catch(e) {} -%OptimizeFunctionOnNextCall(bar); -try { bar(obj2); } catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-422858.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-422858.js deleted file mode 100644 index ba75fc01a43..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-422858.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var date = new Date("2016/01/02 10:00 GMT-8") -assertEquals(0, date.getMinutes()); -assertEquals(18, date.getUTCHours()); - -date = new Date("2016/01/02 10:00 GMT-12") -assertEquals(0, date.getMinutes()); -assertEquals(22, date.getUTCHours()); - -date = new Date("2016/01/02 10:00 GMT-123") -assertEquals(23, date.getMinutes()); -assertEquals(11, date.getUTCHours()); - -date = new Date("2016/01/02 10:00 GMT-0856") -assertEquals(56, date.getMinutes()); -assertEquals(18, date.getUTCHours()); - -date = new Date("2016/01/02 10:00 GMT-08000") -assertEquals(NaN, date.getMinutes()); -assertEquals(NaN, date.getUTCHours()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-423687.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-423687.js deleted file mode 100644 index 60003527e81..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-423687.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var json = '{"a":{"c":2.1,"d":0},"b":{"c":7,"1024":8}}'; -var data = JSON.parse(json); - -data.b.c++; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-425519.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-425519.js deleted file mode 100644 index d08e7b91aad..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-425519.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function load(a, i) { - return a[i]; -} - -load([]); -load(0); -load("x", 0); -%OptimizeFunctionOnNextCall(load); -load([], 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-425585.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-425585.js deleted file mode 100644 index c27febba790..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-425585.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -var correct_result = "This is the correct result."; - -function foo(recursion_depth) { - if (recursion_depth > 0) return foo(recursion_depth - 1); - return new String(correct_result, 1, 2, 3, 4, 5, 6); -} - -// Roll our own non-strict assertEquals replacement. -function test(i) { - var actual = foo(i); - if (correct_result != actual) { - var msg = "Expected \"" + correct_result + "\", found " + actual; - throw new MjsUnitAssertionError(msg); - } -} - -test(1); -test(1); -test(10); -test(100); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-429159.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-429159.js deleted file mode 100644 index 69f18564f9c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-429159.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - var src = "return " + Array(12000).join("src,") + "src"; - var fun = Function(src); - assertEquals(src, fun()); -} catch (e) { - // Some architectures throw a RangeError, that is fine. - assertInstanceof(e, RangeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-430846.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-430846.js deleted file mode 100644 index 3047c7fc342..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-430846.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { return 1; }; -var o1 = {}; -o1.foo = foo; - -var json = '{"foo": {"x": 1}}'; -var o2 = JSON.parse(json); -var o3 = JSON.parse(json); -assertTrue(%HaveSameMap(o2, o3)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-431602.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-431602.js deleted file mode 100644 index 2467aaf8be0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-431602.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt - -var heap_number_producer = {y:1.5}; -heap_number_producer.y = 0; -var heap_number_zero = heap_number_producer.y; -var non_constant_eight = {}; -non_constant_eight = 8; - -function BreakIt() { - return heap_number_zero | (1 | non_constant_eight); -} - -function expose(a, b, c) { - return b; -} - -assertEquals(9, expose(8, 9, 10)); -assertEquals(9, expose(8, BreakIt(), 10)); -assertEquals(9, BreakIt()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-433332.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-433332.js deleted file mode 100644 index d763243b2ce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-433332.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(foo) { - var g; - true ? (g = 0.1) : g |= null; - if (null != g) {} -}; - -f(1.4); -f(1.4); -%OptimizeFunctionOnNextCall(f); -f(1.4); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-433766.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-433766.js deleted file mode 100644 index fae94837d46..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-433766.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var filler = "//" + new Array(('@')).join('x'); - -// Test strict eval in global context. -eval( - "'use strict';" + - "var x = 23;" + - "var f = function bozo1() {" + - " return x;" + - "};" + - "f;" + - filler -)(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-435825.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-435825.js deleted file mode 100644 index 959535bcb5a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-435825.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Error.prepareStackTrace = function (a,b) { return b; }; - -try { - /(invalid regexp/; -} catch (e) { - assertEquals("[object global]", e.stack[0].getThis().toString()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-436820.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-436820.js deleted file mode 100644 index eea386ce185..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-436820.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function c(p) { - return {__proto__: p}; -} -var p = {}; -var o = c(p); -p.x = 0.6; -Object.defineProperty(p, "x", { writable: false }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-450642.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-450642.js deleted file mode 100644 index 7f821e0ffc0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-450642.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function() { with (undefined) {} }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-450960.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-450960.js deleted file mode 100644 index 28db6dff8b8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-450960.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -"a".replace(/a/g, ""); - -var count = 0; -function test() { - try { - test(); - } catch(e) { - if (count < 50) { - count++; - "b".replace(/(b)/g, new []); - } - } -} - -try { - test(); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-451013.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-451013.js deleted file mode 100644 index d843d3334b0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-451013.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function testDeepArrayLiteral() { - testDeepArrayLiteral([], [], [[]]); -}, RangeError); - -assertThrows(function testDeepObjectLiteral() { - testDeepObjectLiteral({}, {}, {x:[[]]}); -}, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-451016.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-451016.js deleted file mode 100644 index 93152c36650..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-451016.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-filter=STRICT_EQUALS - -var value = NaN; -for (i = 0; i < 256; i++) { - value === "A" || value === "B"; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-451770.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-451770.js deleted file mode 100644 index b4f088d00e5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-451770.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function f() { - var t = { toString: function() { throw new Error(); } }; - var o = { [t]: 23 }; -}, Error); - -assertThrows(function f() { - var t = { toString: function() { throw new Error(); } }; - class C { [t]() { return 23; } }; -}, Error); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-454091.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-454091.js deleted file mode 100644 index 2705e96bfd0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-454091.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -this.__proto__ = Array.prototype; -Object.freeze(this); -this.length = 1; -assertThrows('this.__proto__ = {}'); -assertEquals(Array.prototype, this.__proto__); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-455644.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-455644.js deleted file mode 100644 index 4993d857a89..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-455644.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function f() { - do { return 23; } while(false); - with (0) { - try { - return 42; - } finally {} - } -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-465564.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-465564.js deleted file mode 100644 index 383070be9e4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-465564.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --cache=code - -assertTrue(%StringLessThan("a", "b")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-467047.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-467047.js deleted file mode 100644 index 373e984a2c9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-467047.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -function captureMatch(re) { - var local_variable = 0; - "abcd".replace(re, function() { }); - assertEquals("abcd", RegExp.input); - assertEquals("a", RegExp.leftContext); - assertEquals("bc", RegExp.lastMatch); - assertEquals("d", RegExp.rightContext); - assertEquals("foo", captureMatch(/^bar/)); -} - -assertThrows(function() { captureMatch(/(bc)/) }, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-467531.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-467531.js deleted file mode 100644 index 73256c7acc7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-467531.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-filter=* --always-opt - -assertThrows(function() { - "use strict"; - try { - x = ref_error; - let x = 0; - } catch (e) { - throw e; - } -}, ReferenceError); - -assertThrows(function() { - "use strict"; - try { - x = ref_error; - let x = 0; - } finally { - // re-throw - } -}, ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-469768.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-469768.js deleted file mode 100644 index e8a16b06e33..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-469768.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Try several different argument counts to make sure none of them -// sneak through the system of stack checks. - -try { - Array.prototype.concat.apply([], new Array(100000)); -} catch (e) { - // Throwing is fine, just don't crash. -} - - -try { - Array.prototype.concat.apply([], new Array(150000)); -} catch (e) { - // Throwing is fine, just don't crash. -} - - -try { - Array.prototype.concat.apply([], new Array(200000)); -} catch (e) { - // Throwing is fine, just don't crash. -} - - -try { - Array.prototype.concat.apply([], new Array(248000)); -} catch (e) { - // Throwing is fine, just don't crash. -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-471659.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-471659.js deleted file mode 100644 index fa27baa3e81..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-471659.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -var s = "0123456789ABCDEF"; -for (var i = 0; i < 16; i++) s += s; - -var count = 0; -function f() { - try { - f(); - if (count < 10) { - f(); - } - } catch(e) { - s.replace("+", "-"); - } - count++; -} -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-476477-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-476477-1.js deleted file mode 100644 index 881c602bd7c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-476477-1.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var obj = { - _leftTime: 12345678, - _divider: function() { - var s = Math.floor(this._leftTime / 3600); - var e = Math.floor(s / 24); - var i = s % 24; - return { - s: s, - e: e, - i: i, - } - } -} - -for (var i = 0; i < 1000; i++) { - obj._divider(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-476477-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-476477-2.js deleted file mode 100644 index 4dbb41b7d4c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-476477-2.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - var s = Math.floor(x / 3600); - Math.floor(s); - return s % 24; -} - -foo(12345678); -foo(12345678); -%OptimizeFunctionOnNextCall(foo); -foo(12345678); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-477924.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-477924.js deleted file mode 100644 index feaf2d0db1a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-477924.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var dummy = new ReferenceError("dummy"); - -constructors = [ ReferenceError, TypeError]; - -for (var i in constructors) { - constructors[i].prototype.__defineGetter__("stack", function() {}); -} - -for (var i in constructors) { - var obj = new constructors[i]; - obj.toString(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-478011.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-478011.js deleted file mode 100644 index fcc05280407..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-478011.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var e = {}; -Object.preventExtensions(e); -assertThrows(function() { Error.captureStackTrace(e) }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-478612.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-478612.js deleted file mode 100644 index 3419722cd01..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-478612.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// This is used to force binary operations below to have tagged representation. -var z = {valueOf: function() { return 3; }}; - - -function f() { - var y = -2; - return (1 & z) - y++; -} - -assertEquals(3, f()); -assertEquals(3, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(3, f()); - - -function g() { - var y = 2; - return (1 & z) | y++; -} - -assertEquals(3, g()); -assertEquals(3, g()); -%OptimizeFunctionOnNextCall(g); -assertEquals(3, g()); - - -function h() { - var y = 3; - return (3 & z) & y++; -} - -assertEquals(3, h()); -assertEquals(3, h()); -%OptimizeFunctionOnNextCall(h); -assertEquals(3, h()); - - -function i() { - var y = 2; - return (1 & z) ^ y++; -} - -assertEquals(3, i()); -assertEquals(3, i()); -%OptimizeFunctionOnNextCall(i); -assertEquals(3, i()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-480807.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-480807.js deleted file mode 100644 index a1448d6de65..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-480807.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr --noalways-opt - -function foo() { - var c = 0; - for (var e = 0; e < 1; ++e) { - for (var a = 1; a > 0; a--) { - c += 1; - } - for (var b = 1; b > 0; b--) { - %OptimizeOsr(); - } - } - return c; -} -try { - foo(); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-480819.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-480819.js deleted file mode 100644 index 086f6c84c23..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-480819.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-filter=* --always-opt --noanalyze-environment-liveness - -(function() { - "use strict"; - class C1 {} -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-482998.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-482998.js deleted file mode 100644 index 80933a7a6d3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-482998.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Should not time out. Running time 0.5s vs. 120s before the change. -function collapse(flags) { - var src = "(?:"; - for (var i = 128; i < 0x1000; i++) { - src += String.fromCharCode(96 + i % 26) + String.fromCharCode(i) + "|"; - } - src += "aa)"; - var collapsible = new RegExp(src, flags); - var subject = "zzzzzzz" + String.fromCharCode(3000); - for (var i = 0; i < 1000; i++) { - subject += "xxxxxxx"; - } - for (var i = 0; i < 2000; i++) { - assertFalse(collapsible.test(subject)); - } -} - -collapse("i"); -collapse(""); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-484077.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-484077.js deleted file mode 100644 index 26fa7a2d43a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-484077.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertEquals("", %FunctionGetInferredName((function(){}).bind({}))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-485410.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-485410.js deleted file mode 100644 index bb11c82908d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-485410.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var doubles = new Float64Array(1); -function ToHeapNumber(i) { - doubles[0] = i; - return doubles[0]; -} -for (var i = 0; i < 3; i++) ToHeapNumber(i); -%OptimizeFunctionOnNextCall(ToHeapNumber); -ToHeapNumber(1); - -function Fail(a, i, v) { - a[i] = v; -} - -for (var i = 0; i < 3; i++) Fail(new Array(1), 1, i); -%OptimizeFunctionOnNextCall(Fail); -// 1050 > JSObject::kMaxGap, causing stub failure and runtime call. -Fail(new Array(1), ToHeapNumber(1050), 3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-485548-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-485548-1.js deleted file mode 100644 index 6a25dcd2df3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-485548-1.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -var inner = new Array(); -inner.a = {x:1}; -inner[0] = 1.5; -inner.b = {x:2}; -assertTrue(%HasDoubleElements(inner)); - -function foo(o) { - return o.field.a.x; -} - -var outer = {}; -outer.field = inner; -foo(outer); -foo(outer); -foo(outer); -%OptimizeFunctionOnNextCall(foo); -foo(outer); - -// Generalize representation of field "a" of inner object. -var v = { get x() { return 0x7fffffff; } }; -inner.a = v; - -gc(); - -var boom = foo(outer); -print(boom); -assertEquals(0x7fffffff, boom); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-485548-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-485548-2.js deleted file mode 100644 index 02c6326d129..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-485548-2.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -var inner = new Array(); -inner.a = {x:1}; -inner[0] = 1.5; -inner.b = {x:2}; -assertTrue(%HasDoubleElements(inner)); - -function foo(o) { - return o.field.b.x; -} - -var outer = {}; -outer.field = inner; -foo(outer); -foo(outer); -foo(outer); -%OptimizeFunctionOnNextCall(foo); -foo(outer); - -// Generalize representation of field "b" of inner object. -var v = { get x() { return 0x7fffffff; } }; -inner.b = v; - -gc(); - -var boom = foo(outer); -print(boom); -assertEquals(0x7fffffff, boom); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-487105.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-487105.js deleted file mode 100644 index 160f9b04e03..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-487105.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -function assertThrows() { - eval(); -}; -eval("delete this;") diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-487322.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-487322.js deleted file mode 100644 index 6338cf4da87..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-487322.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Intl) { - // Normalizes Kat{h,}mandu (chromium:487322) - // According to the IANA timezone db, Kathmandu is the current canonical - // name, but ICU got it backward. To make this test robust against a future - // ICU change ( http://bugs.icu-project.org/trac/ticket/12044 ), - // just check that Kat(h)mandu is resolved identically. - df1 = new Intl.DateTimeFormat('en-US', {'timeZone': 'Asia/Katmandu'}) - df2 = new Intl.DateTimeFormat('en-US', {'timeZone': 'Asia/Kathmandu'}) - assertEquals(df1.resolvedOptions().timeZone, df2.resolvedOptions().timeZone); - - // Normalizes Ulan_Bator to Ulaanbaatar. Unlike Kat(h)mandu, ICU got this - // right so that we make sure that Ulan_Bator is resolved to Ulaanbaatar. - df = new Intl.DateTimeFormat('en-US', {'timeZone': 'Asia/Ulaanbaatar'}) - assertEquals('Asia/Ulaanbaatar', df.resolvedOptions().timeZone); - - df = new Intl.DateTimeFormat('en-US', {'timeZone': 'Asia/Ulan_Bator'}) - assertEquals('Asia/Ulaanbaatar', df.resolvedOptions().timeZone); - - // Throws for unsupported time zones. - assertThrows(() => Intl.DateTimeFormat(undefined, {timeZone: 'Aurope/Paris'})); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-487608.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-487608.js deleted file mode 100644 index c1eafce5efe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-487608.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function inlined(a, i) { - return a[i + 1]; -} - -function foo(index) { - var a = [0, 1, 2, 3]; - var result = 0; - result += a[index]; - result += inlined(a, index); - return result; -} - -foo(0); -foo(0); -%OptimizeFunctionOnNextCall(foo); -foo(0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-489293.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-489293.js deleted file mode 100644 index bcfc702df32..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-489293.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-filter=f -// Flags: --noanalyze-environment-liveness - -function f() { - var x = 0; - for (var y = 0; y < 0; ++y) { - x = (x + y) | 0; - } - return unbound; -} -%OptimizeFunctionOnNextCall(f); -assertThrows(f, ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-489597.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-489597.js deleted file mode 100644 index b10af92b5f3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-489597.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - load("test/mjsunit/regress/regress-crbug-489597.js-script"); -} catch (e) { -} - -var o = this; -Error.captureStackTrace(o); -o.stack; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-489597.js-script b/implementation-contributed/v8/mjsunit/regress/regress-crbug-489597.js-script deleted file mode 100644 index cb4dd84df3e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-489597.js-script +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -throw new Error("boom"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-490021.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-490021.js deleted file mode 100644 index 745c0a80105..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-490021.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var global = new Object(3); -function f() { - global[0] = global[0] >>> 15.5; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-490680.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-490680.js deleted file mode 100644 index 735f3b7f501..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-490680.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var sentinel = null; - -try { - throw { toString: function() { sentinel = "observed"; } }; -} catch (e) { -} - -L: try { - throw { toString: function() { sentinel = "observed"; } }; -} finally { - break L; -} - -assertNull(sentinel); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-491062.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-491062.js deleted file mode 100644 index 41136548bca..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-491062.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stack-size=100 - -function g() {} - -var count = 0; -function f() { - try { - f(); - } catch(e) { - print(e.stack); - } - if (count < 100) { - count++; - %DebugGetLoadedScriptIds(); - } -} -f(); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-493284.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-493284.js deleted file mode 100644 index 64f94634712..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-493284.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --invoke-weak-callbacks --omit-quit --no-test - -if (this.Intl) { - var coll = new Intl.Collator(); - assertEquals(-1, coll.compare('a', 'c')); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-493290.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-493290.js deleted file mode 100644 index 6ff9fe1a656..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-493290.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - throw "boom"; - try {} catch (e) {} -} -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-493779.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-493779.js deleted file mode 100644 index 1071ed23ac9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-493779.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -var s = "\u1234-------"; -for (var i = 0; i < 17; i++) { - s += s; -} -s.replace(/[\u1234]/g, ""); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-495493.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-495493.js deleted file mode 100644 index 149ebdcb3d5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-495493.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts --debug-code - -function foo(p) { - for (var i = 0; i < 100000; ++i) { - p = Math.min(-1, 0); - } -} -foo(0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-498022.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-498022.js deleted file mode 100644 index 178eb8efcea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-498022.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --debug-code - -"use strict"; -class Base { -} -class Derived extends Base { - constructor() { - eval(); - } -} -assertThrows("new Derived()", ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-498811.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-498811.js deleted file mode 100644 index 53f57b8c171..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-498811.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// NO HARNESS - -"use strict"; -let l = 0; -eval("eval('this')"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-500435.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-500435.js deleted file mode 100644 index acc17ac5ecc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-500435.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(a) { - delete a[1]; -} - -function foo(a) { - var d; - for (d in a) { - assertFalse(d === undefined); - bar(a); - } -} - -foo([1,2]); -foo([2,3]); -%OptimizeFunctionOnNextCall(foo); -foo([1,2]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-500497.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-500497.js deleted file mode 100644 index 4917193261d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-500497.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// New space must be at max capacity to trigger pretenuring decision. -// Flags: --allow-natives-syntax --verify-heap --max-semi-space-size=1 -// Flags: --expose-gc --no-always-opt - -var global = []; // Used to keep some objects alive. - -function Ctor() { - var result = {a: {}, b: {}, c: {}, d: {}, e: {}, f: {}, g: {}}; - return result; -} - -gc(); - -for (var i = 0; i < 120; i++) { - // Make the "a" property long-lived, while everything else is short-lived. - global.push(Ctor().a); - (function FillNewSpace() { new Array(10000); })(); -} - -// The bad situation is only triggered if Ctor wasn't optimized too early. -assertUnoptimized(Ctor); -// Optimized code for Ctor will pretenure the "a" property, so it will have -// three allocations: -// #1 Allocate the "result" object in new-space. -// #2 Allocate the object stored in the "a" property in old-space. -// #3 Allocate the objects for the "b" through "g" properties in new-space. -%OptimizeFunctionOnNextCall(Ctor); -for (var i = 0; i < 10000; i++) { - // At least one of these calls will run out of new space. The bug is - // triggered when it is allocation #3 that triggers GC. - Ctor(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-500824.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-500824.js deleted file mode 100644 index 08d0d107cad..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-500824.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function get_thrower() { - "use strict"; - return Object.getOwnPropertyDescriptor(arguments, "callee").get; -} - -var f = (function(v) { - "use asm"; - function fun() { - switch (v) {} - } - return { - fun: fun - }; -})(get_thrower()).fun; - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-501711.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-501711.js deleted file mode 100644 index b253e9c9122..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-501711.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -function f() { - try { - f(); - } catch(e) { - try { - Realm.create(); - } catch (e) { - quit(); - } - } -} -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-501808.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-501808.js deleted file mode 100644 index f9b97841c49..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-501808.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var r = Realm.create(); -assertEquals(0, "a".localeCompare("a")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-501809.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-501809.js deleted file mode 100644 index aa235bc4eaa..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-501809.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-sharedarraybuffer -var sab = new SharedArrayBuffer(8); -var ta = new Int32Array(sab); -ta.__defineSetter__('length', function() {;}); -assertThrows(function() { - Atomics.compareExchange(ta, 4294967295, 0, 0); -}, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-502930.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-502930.js deleted file mode 100644 index ef21a1a69e1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-502930.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -var accessor_to_data_case = (function() { - var v = {}; - Object.defineProperty(v, "foo", { get: function() { return 42; }, configurable: true}); - - var obj = {}; - obj["boom"] = v; - - Object.defineProperty(v, "foo", { value: 0, writable: true, configurable: true }); - return obj; -})(); - - -var data_to_accessor_case = (function() { - var v = {}; - Object.defineProperty(v, "bar", { value: 0, writable: true, configurable: true }); - - var obj = {}; - obj["bam"] = v; - - Object.defineProperty(v, "bar", { get: function() { return 42; }, configurable: true}); - return obj; -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-503578.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-503578.js deleted file mode 100644 index 59c33da20e8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-503578.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - function __f_0(byteLength) { - var __v_1 = new ArrayBuffer(byteLength); - var __v_5 = new Uint32Array(__v_1); - return __v_5; - } - var __v_6 = new Worker('onmessage = function() {}', {type: 'string'}); - var __v_3 = __f_0(16); - __v_6.postMessage(__v_3); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-503698.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-503698.js deleted file mode 100644 index c817bede29e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-503698.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --invoke-weak-callbacks - -if (this.Worker) { - var __v_6 = new Worker('', {type: 'string'}); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-503968.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-503968.js deleted file mode 100644 index 0552163144c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-503968.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - function __f_0() { this.s = new Object(); } - function __f_1() { - this.l = [new __f_0, new __f_0]; - } - __v_6 = new __f_1; - var __v_9 = new Worker('', {type: 'string'}); - __v_9.postMessage(__v_6); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-503991.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-503991.js deleted file mode 100644 index 7b96e92677d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-503991.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - __v_3 = ""; - var __v_6 = new Worker('', {type: 'string'}); - __v_6.postMessage(__v_3); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-504136.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-504136.js deleted file mode 100644 index 25b11e0fec3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-504136.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - var __v_10 = new Worker('', {type: 'string'}); - __v_10.terminate(); - __v_10.getMessage(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-504727.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-504727.js deleted file mode 100644 index a295a1bd35b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-504727.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-test - -if (this.Worker) { - var __v_2 = new Worker('', {type: 'string'}); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-504729.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-504729.js deleted file mode 100644 index 8b1f8b08995..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-504729.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - Function.prototype.toString = "foo"; - function __f_7() {} - assertThrows(function() { var __v_5 = new Worker(__f_7.toString(), {type: 'string'}) }); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-504787.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-504787.js deleted file mode 100644 index ac592e08fb5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-504787.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - "use asm"; - function g() { - function f() {}; - } - return g; -} - -f()(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-505354.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-505354.js deleted file mode 100644 index 61c40c44dac..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-505354.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-filter=f - -function f() { - "use strict"; - try { - for (let i = 0; i < 10; i++) {} - } catch(e) {} -} -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-505370.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-505370.js deleted file mode 100644 index f67d82b66f7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-505370.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = { - get 0() { reference_error; }, - get length() { return 1; } -}; - -var method_name; - -try { - o[0]; -} catch (e) { - thrown = true; - Error.prepareStackTrace = function(exception, frames) { return frames; }; - var frames = e.stack; - Error.prepareStackTrace = undefined; - method_name = frames[0].getMethodName(); -} - -assertEquals("0", method_name); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-505778.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-505778.js deleted file mode 100644 index 3d87ba6982b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-505778.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - var __v_7 = new Worker('onmessage = function() {}', {type: 'string'}); - __v_7.postMessage(""); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-505907.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-505907.js deleted file mode 100644 index ec7b80baa83..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-505907.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - var p = new Proxy({}, { - getPropertyDescriptor: function() { return [] } - }); - var o = Object.create(p); - with (o) { unresolved_name() } -} catch(e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-506549.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-506549.js deleted file mode 100644 index 219fd10cb7b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-506549.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - var __v_5 = {}; - __v_5.__defineGetter__('byteLength', function() {foo();}); - var __v_8 = new Worker('onmessage = function() {};', {type: 'string'}); - assertThrows(function() { __v_8.postMessage(__v_5); }); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-506956.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-506956.js deleted file mode 100644 index 8bca70803fb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-506956.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - var p = new Proxy({}, { - getPropertyDescriptor: function() { throw "boom"; } - }); - var o = Object.create(p); - with (o) { delete unresolved_name; } -} catch(e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-510426.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-510426.js deleted file mode 100644 index c82dbacfa92..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-510426.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = new String('a'); -s[10000000] = 'bente'; -assertEquals(['0', '10000000'], Object.keys(s)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-510738.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-510738.js deleted file mode 100644 index 0e154a9a946..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-510738.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function check(f, result) { - %OptimizeFunctionOnNextCall(f); - assertEquals(result, f()); -} - -var x = 17; -function generic_load() { return x; } -check(generic_load, 17); - -function generic_store() { x = 13; return x; } -check(generic_store, 13); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-511880.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-511880.js deleted file mode 100644 index 5dceb2a7339..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-511880.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - var __v_8 = - `var __v_9 = new Worker('postMessage(42)', {type: 'string'}); - onmessage = function(parentMsg) { - __v_9.postMessage(parentMsg); - };`; - var __v_9 = new Worker(__v_8, {type: 'string'}); - __v_9.postMessage(9); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-513471.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-513471.js deleted file mode 100644 index 48c793e5123..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-513471.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var g = (function*(){}); -var f = g(); -%OptimizeFunctionOnNextCall(g); -f.next(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-513472.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-513472.js deleted file mode 100644 index 456fe0a11d9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-513472.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -this.__proto__ = Error(); -assertThrows(function() { NaN = 1; }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-513507.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-513507.js deleted file mode 100644 index ae321ba9067..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-513507.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// The following triggers a GC in Context::AddToOSROptimizedCodeCache. -// Flags: --gc-interval=1234 --gc-global - -function makeFun() { - function fun(osr_fuse) { - for (var i = 0; i < 3; ++i) { - if (i == osr_fuse) %OptimizeOsr(); - } - for (var i = 3; i < 6; ++i) { - if (i == osr_fuse) %OptimizeOsr(); - } - } - return fun; -} - -makeFun()(7); // Warm up. -makeFun()(4); // Optimize once. -makeFun()(1); // Optimize again. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-513602.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-513602.js deleted file mode 100644 index ae0441cbc70..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-513602.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Parent() {} - -function Child() {} -Child.prototype = new Parent(); -var child = new Child(); - -function crash() { - return child.__proto__; -} - -crash(); -crash(); - -// Trigger a fast->slow->fast dance of Parent.prototype's map... -Parent.prototype.__defineSetter__("foo", function() { print("A"); }); -Parent.prototype.__defineSetter__("foo", function() { print("B"); }); -// ...and collect more type feedback. -crash(); - -// Now modify the prototype chain. The right cell fails to get invalidated. -delete Object.prototype.__proto__; -crash(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-514081.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-514081.js deleted file mode 100644 index 3d99b4586ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-514081.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - var __v_7 = new Worker('onmessage = function() {};', {type: 'string'}); - var e; - var ab = new ArrayBuffer(2 * 1000 * 1000); - try { - __v_7.postMessage(ab); - threw = false; - } catch (e) { - // postMessage failed, should be a DataCloneError message. - assertContains('cloned', e.message); - threw = true; - } - assertTrue(threw, 'Should throw when trying to serialize large message.'); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-515897.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-515897.js deleted file mode 100644 index 45a812c781a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-515897.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var r1 = new RegExp("\\\\/"); -assertTrue(r1.test("\\/")); -var r2 = eval("/" + r1.source + "/"); -assertEquals("\\\\\\/", r1.source); -assertEquals("\\\\\\/", r2.source); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-516592.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-516592.js deleted file mode 100644 index 1887824a6ca..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-516592.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var i = Math.pow(2, 31); -var a = []; -a[i] = 31; -var b = []; -b[i - 2] = 33; -try { - // This is supposed to throw a RangeError. - var c = a.concat(b); - // If it didn't, ObservableSetLength will detect the problem. - Object.observe(c, function() {}); - c.length = 1; -} catch(e) { - assertTrue(e instanceof RangeError); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-516775.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-516775.js deleted file mode 100644 index df190c149bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-516775.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function arguments_with_length_getter(f) { - arguments.__defineGetter__('length', f); - return arguments; -} - -var count = 0; -function increment_count_return() { count++; return "boom"; } -function increment_count_throw() { count++; throw "boom"; } - -// Do not read the length of an arguments object on the prototype chain of -// an array. -var a1 = []; -%NormalizeElements(a1); -a1.__proto__ = arguments_with_length_getter(increment_count_return); -[].concat(a1); -assertEquals(0, count); - -var a2 = []; -%NormalizeElements(a2); -a2.__proto__ = arguments_with_length_getter(increment_count_throw); -[].concat(a2); -assertEquals(0, count); - -// Do read the length of an arguments object if spreadable. -var a3 = arguments_with_length_getter(increment_count_return); -a3[Symbol.isConcatSpreadable] = true; -[].concat(a3); -assertEquals(1, count); - -var a4 = arguments_with_length_getter(increment_count_throw); -a4[Symbol.isConcatSpreadable] = true; -assertThrows(function() { [].concat(a4); }); -assertEquals(2, count); - -// Do read the length of an arguments object on the prototype chain of -// an object. -var a5 = {}; -a5.__proto__ = arguments_with_length_getter(increment_count_return); -a5[Symbol.isConcatSpreadable] = true; -[].concat(a5); -assertEquals(3, count); - -var a6 = {}; -a6.__proto__ = arguments_with_length_getter(increment_count_throw); -a6[Symbol.isConcatSpreadable] = true; -assertThrows(function() { [].concat(a6); }); -assertEquals(4, count); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-518747.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-518747.js deleted file mode 100644 index 2a4058d401f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-518747.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - Worker.prototype = 12; - var __v_6 = new Worker('', {type: 'string'}); - __v_6.postMessage([]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-522380.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-522380.js deleted file mode 100644 index eba07f783f6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-522380.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var global = this; -global.__defineSetter__('x', function(v) { x = v; }); -assertThrows("global.x = 0", RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-522496.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-522496.js deleted file mode 100644 index 4dea5a89ac5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-522496.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Worker) { - var worker = new Worker("onmessage = function(){}", {type: 'string'}); - var buf = new ArrayBuffer(); - worker.postMessage(buf, [buf]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-522895.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-522895.js deleted file mode 100644 index f28f3a1cb93..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-522895.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --use-osr - -var body = - "function bar1( ) {" + - " var i = 35; " + - " while (i-- > 31) {" + - " %OptimizeOsr(); " + - " j = 9; " + - " while (j-- > 7);" + - " } " + - " return i; " + - "}"; - -function gen() { - return eval("(" + body + ")"); -} - -gen()(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-523213.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-523213.js deleted file mode 100644 index 15b16bb4f9e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-523213.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v1 = []; -var v2 = []; -v1.__proto__ = v2; - -function f(){ - var a = []; - for(var i=0; i<2; i++){ - a.push([]); - a = v2; - } -} - -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-523307.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-523307.js deleted file mode 100644 index f2909675b24..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-523307.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - var c = x * x << 366; - var a = c + c; - return a; -} - -f(1); -f(1); -%OptimizeFunctionOnNextCall(f); -f(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-523308.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-523308.js deleted file mode 100644 index 36114791b9d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-523308.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var error; -try { reference_error(); } catch (e) { error = e; } -toString = error.toString; -error.__proto__ = []; -assertEquals("Error: reference_error is not defined", toString.call(error)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-523919.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-523919.js deleted file mode 100644 index 4b2a8fe93e4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-523919.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --cache=code - -[1.5, -[2.5, -[3.5, -[4.5, -[5.5, -[6.5, -[7.5, -[8.5, -[9.5, -[10.5, -[11.5, -[12.5, -[13.5, -[14.5, -[15.5, -[16.5, -[17.5, -[18.5, -[19.5, -[20.5, -[21.5, -[22.5, -[23.5, -[24.5, -[25.5]]]]]]]]]]]]]]]]]]]]]]]]]; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-527364.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-527364.js deleted file mode 100644 index 914bed01abc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-527364.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 --allow-natives-syntax - -function module() { - "use asm"; - var abs = Math.abs; - function f() { - return +abs(); - } - return { f:f }; -} - -function run_close_to_stack_limit(f) { - try { - run_close_to_stack_limit(f); - f(); - } catch(e) { - } -} - -var boom = module().f; -%OptimizeFunctionOnNextCall(boom) -run_close_to_stack_limit(boom); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-528379.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-528379.js deleted file mode 100644 index f335f6a104b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-528379.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -Error.prepareStackTrace = function(e, frames) { return frames; } -assertThrows(function() { new Error().stack[0].getMethodName.call({}); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-530598.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-530598.js deleted file mode 100644 index f38552377f3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-530598.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-inlining - -var f1 = (function() { - "use asm"; - function g() { throw 0; } - function f() { return g(); } - return f; -})(); -assertThrows("f1()"); -%OptimizeFunctionOnNextCall(f1); -assertThrows("f1()"); - -var f2 = (function() { - "use asm"; - function g() { for (;;); } - function f(a) { return a || g(); } - return f; -})(); -assertTrue(f2(true)); -%OptimizeFunctionOnNextCall(f2); -assertTrue(f2(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-537444.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-537444.js deleted file mode 100644 index d6fe6b89a36..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-537444.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stress-inline - -"use strict"; - -function f(x) { - return x; -} - -function g(x) { - return false ? 0 : f(x, 1); -} - -function h(x) { - var z = g(x, 1); - return z + 1; -} - - -h(1); -h(1); -%OptimizeFunctionOnNextCall(h); -h("a"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-538086.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-538086.js deleted file mode 100644 index 537cbda5fce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-538086.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -this[1]++; -for (var x in this) {}; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-542101.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-542101.js deleted file mode 100644 index 1a4c2b37ceb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-542101.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - Error.prototype.toString.call({ - get name() { return { __proto__: this }; }, - get message() { } - }); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-545364.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-545364.js deleted file mode 100644 index 4fe99d0133d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-545364.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - "use asm"; - return function(x) { - for (var i = 0; i < 100000; ++i) {} - return x; - } -})()(this + "i"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-548580.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-548580.js deleted file mode 100644 index cf0afff1c90..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-548580.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function store(v) { - var re = /(?=[d#.])/; - re.a = v; - return re; -} - -var re1 = store(undefined); -var re2 = store(42); - -assertEquals(re1.a, undefined); -assertEquals(re2.a, 42); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-549162.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-549162.js deleted file mode 100644 index 072bdd52d9e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-549162.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var s = Symbol("foo"); -var __v_13 = {} -Object.defineProperty( __v_13, s, {value: {}, enumerable: true}); -for (var __v_14 in __v_13) {} -__v_13 = {} -Object.defineProperty( __v_13, s, {value: {}, enumerable: true}); -var __v_14 = Object.create(Object.prototype, __v_13) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-551287.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-551287.js deleted file mode 100644 index a85deef4bb0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-551287.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { do { } while (true); } - -function boom(x) { - switch(x) { - case 1: - case f(): return; - } -} - -%OptimizeFunctionOnNextCall(boom) -boom(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-552304.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-552304.js deleted file mode 100644 index fa3baa34c12..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-552304.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - "use asm"; - return function() { - for (var i = 0; i < 100000; delete unresolved_name) {++i} - return 0; - } -})()(this + "i"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-554831.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-554831.js deleted file mode 100644 index 3d022b257b2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-554831.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -(function() { - var key = "s"; - function f(object) { return object[key]; }; - f(""); - f(""); - %OptimizeFunctionOnNextCall(f); - f(""); - assertOptimized(f); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-554946.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-554946.js deleted file mode 100644 index fbb79f61b0b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-554946.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var array = []; -var funky = { - toJSON: function() { array.length = 1; return "funky"; } -}; -for (var i = 0; i < 10; i++) array[i] = i; -array[0] = funky; -assertEquals('["funky",null,null,null,null,null,null,null,null,null]', - JSON.stringify(array)); - -array = []; -funky = { - get value() { array.length = 1; return "funky"; } -}; -for (var i = 0; i < 10; i++) array[i] = i; -array[3] = funky; -assertEquals('[0,1,2,{"value":"funky"},null,null,null,null,null,null]', - JSON.stringify(array)); - -array = []; -funky = { - get value() { array.pop(); return "funky"; } -}; -for (var i = 0; i < 10; i++) array[i] = i; -array[3] = funky; -assertEquals('[0,1,2,{"value":"funky"},4,5,6,7,8,null]', JSON.stringify(array)); - -array = []; -funky = { - get value() { delete array[9]; return "funky"; } -}; -for (var i = 0; i < 10; i++) array[i] = i; -array[3] = funky; -assertEquals('[0,1,2,{"value":"funky"},4,5,6,7,8,null]', JSON.stringify(array)); - -array = []; -funky = { - get value() { delete array[6]; return "funky"; } -}; -for (var i = 0; i < 10; i++) array[i] = i; -array[3] = funky; -assertEquals('[0,1,2,{"value":"funky"},4,5,null,7,8,9]', JSON.stringify(array)); - -array = []; -funky = { - get value() { array[12] = 12; return "funky"; } -}; -for (var i = 0; i < 10; i++) array[i] = i; -array[3] = funky; -assertEquals('[0,1,2,{"value":"funky"},4,5,6,7,8,9]', JSON.stringify(array)); - -array = []; -funky = { - get value() { array[10000000] = 12; return "funky"; } -}; -for (var i = 0; i < 10; i++) array[i] = i; -array[3] = funky; -assertEquals('[0,1,2,{"value":"funky"},4,5,6,7,8,9]', JSON.stringify(array)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-557807.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-557807.js deleted file mode 100644 index a96bc990031..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-557807.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar() { return { __proto__: this }; } -function foo(a) { a[0] = 0.3; } -foo(bar()); -%OptimizeFunctionOnNextCall(foo); -foo(bar()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-561973.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-561973.js deleted file mode 100644 index 51b6e611e18..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-561973.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Date.parse('Sat, 01 Jan 100 08:00:00 UT-59011430400000'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-563929.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-563929.js deleted file mode 100644 index a9a112dd8de..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-563929.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var x = 0; -function a() { - eval(""); - return (function() { - eval(""); - return (function() { - eval(""); - return (function() { - eval(""); - return (function() { - eval(""); - return (function() { - eval(""); - return (function() { - eval(""); - return (function() { - eval(""); - return x; - })(); - }) (); - })(); - })(); - })(); - })(); - })(); -} -assertEquals(a(), 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-565917.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-565917.js deleted file mode 100644 index 2cccedf9b4a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-565917.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { -} catch(e) {; } -new ArrayBuffer(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-568525.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-568525.js deleted file mode 100644 index c916bfe649a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-568525.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = /a/; -a[4] = 1.5; -for (var x in a) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-569534.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-569534.js deleted file mode 100644 index e1419ea8b00..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-569534.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var array = [,0.5]; -array.length = 0; -for (var i in array) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-570241.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-570241.js deleted file mode 100644 index 1b52f1b3475..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-570241.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertTrue(/(?<=12345123451234512345)/.test("12345123451234512345")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-571064.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-571064.js deleted file mode 100644 index a28a3833b18..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-571064.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --enable-slow-asserts - -Array.prototype.__proto__ = null; -var func = Array.prototype.push; -var prototype = Array.prototype; -function CallFunc(a) { - func.call(a); -} -function CallFuncWithPrototype() { - CallFunc(prototype); -} -CallFunc([]); -CallFunc([]); -%OptimizeFunctionOnNextCall(CallFuncWithPrototype); -CallFuncWithPrototype(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-571370.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-571370.js deleted file mode 100644 index 5fd9a2484b8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-571370.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var val = [0.5]; -var arr = [0.5]; -for (var i = -1; i < 1; i++) { - arr[i] = val; -} -assertEquals(val, arr[-1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-571517.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-571517.js deleted file mode 100644 index ca7d7f73ba6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-571517.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Receiver() { this.receiver = "receiver"; } -function Proto() { this.proto = "proto"; } - -function f(a) { - return a.foo; -} - -var rec = new Receiver(); - -// Formerly, this mutated rec.__proto__.__proto__, but -// the global object prototype chain is now immutable; -// not sure if this test now hits the original hazard case. -var proto = rec.__proto__; - -// Initialize prototype chain dependent IC (nonexistent load). -assertEquals(undefined, f(rec)); -assertEquals(undefined, f(rec)); - -// Add a new prototype to the end of the chain. -var p2 = new Proto(); -p2.__proto__ = null; -proto.__proto__ = p2; - -// Update the IC. -assertEquals(undefined, f(rec)); - -// Now modify the most recently added prototype by adding a property... -p2.foo = "bar"; -assertEquals("bar", f(rec)); - -// ...and removing it again. Due to missing prototype user registrations, -// this fails to invalidate the IC. -delete p2.foo; -p2.secret = "GAME OVER"; -assertEquals(undefined, f(rec)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-572590.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-572590.js deleted file mode 100644 index 5871005423a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-572590.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --verify-heap - -function g() { } -var f = g.bind(); -f.__defineGetter__('length', g); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-573857.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-573857.js deleted file mode 100644 index d2892c924f6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-573857.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --verify-heap - -function f() {} -f = f.bind(); -f.x = f.name; -f.__defineGetter__('name', function() { return f.x; }); -function g() {} -g.prototype = f; -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-573858.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-573858.js deleted file mode 100644 index 270df5a64aa..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-573858.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var throw_type_error = Object.getOwnPropertyDescriptor( - (function() {"use strict"}).__proto__, "caller").get; - -function create_initial_map() { this instanceof throw_type_error } -%OptimizeFunctionOnNextCall(create_initial_map); -assertThrows(create_initial_map); - -function test() { new throw_type_error } -%OptimizeFunctionOnNextCall(test); -assertThrows(test); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-575080.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-575080.js deleted file mode 100644 index c549e9caff8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-575080.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --es-staging - -class A extends Function { - constructor(...args) { - super(...args); - this.a = 42; - this.d = 4.2; - this.o = 0; - } -} -var obj = new A("'use strict';"); -obj.o = 0.1; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-575082.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-575082.js deleted file mode 100644 index d9cc0f91404..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-575082.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var y = new Date("-1073741824"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-575314.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-575314.js deleted file mode 100644 index 7a5bd4eb707..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-575314.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// https://code.google.com/p/chromium/issues/detail?id=575314 - -// Overwriting the constructor of a Promise with something that doesn't have -// @@species shouldn't result in a rejection, even if that constructor -// is somewhat bogus. - -var test = new Promise(function(){}); -test.constructor = function(){}; -Promise.resolve(test).catch(e => %AbortJS(e + " FAILED!")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-577112.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-577112.js deleted file mode 100644 index 504f921a335..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-577112.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Array.prototype.__proto__ = null; -var prototype = Array.prototype; -function f() { - prototype.lastIndexOf({}); -} -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-578039-Proxy_construct_prototype_change.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-578039-Proxy_construct_prototype_change.js deleted file mode 100644 index 30b3f219e9a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-578039-Proxy_construct_prototype_change.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function target() {}; - -var proxy = new Proxy(target, { - get() { - // Reset the initial map of the target. - target.prototype = 123; - }}); - -new proxy(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-580506.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-580506.js deleted file mode 100644 index fb036982cfb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-580506.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - 'use strict'; - class A extends Function { - constructor(...args) { - super(...args); - this.a = 42; - } - } - var v1 = new A("'use strict';"); - function f(func) { - func.__defineSetter__('a', function() { }); - } - var v2 = new A(); - f(v2); - f(v1); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-580584.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-580584.js deleted file mode 100644 index cb6776f54c8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-580584.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { return arguments } - -// Reconfiguring function.name should update both the attributes and the value. -Object.defineProperty(f, "name", { - writable: true, configurable: true, value: 10}); -assertEquals({value: 10, writable: true, enumerable: false, configurable: true}, - Object.getOwnPropertyDescriptor(f, "name")); - -var args = f(); - -// Setting a value for arguments[Symbol.iterator] should not affect the -// attributes. -args[Symbol.iterator] = 10; -assertEquals({value: 10, writable: true, configurable: true, enumerable: false}, - Object.getOwnPropertyDescriptor(args, Symbol.iterator)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-580934.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-580934.js deleted file mode 100644 index 9f3ffd52a3b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-580934.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; -{ - let one = () => { - return "example.com"; - }; - - let two = () => { - return one(); - }; - - assertEquals("example.com", two()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-581577.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-581577.js deleted file mode 100644 index d95ada5f5a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-581577.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals("", RegExp.prototype.flags); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-583257.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-583257.js deleted file mode 100644 index 85a08c7c812..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-583257.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(String.prototype, "0", { __v_1: 1}); -Object.defineProperty(String.prototype, "3", { __v_1: 1}); - -(function () { - var s = new String(); - function set(object, index, value) { object[index] = value; } - set(s, 10, "value"); - set(s, 1073741823, "value"); -})(); - -function __f_11() { - Object.preventExtensions(new String()); -} -__f_11(); -__f_11(); - -(function() { - var i = 10; - var a = new String("foo"); - for (var j = 0; j < i; j++) { - a[j] = {}; - } -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-584188.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-584188.js deleted file mode 100644 index f54e5593b71..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-584188.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var x = {}; -try { -Object.defineProperty(String.prototype, "3", { x: function() { x = v; }}); -string = "bla"; -} catch(e) {; } -assertThrows("Array.prototype.sort.call(string);", TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-587068.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-587068.js deleted file mode 100644 index 864f8ce7d29..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-587068.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// The Crankshaft fast case for String.fromCharCode used to unconditionally -// deoptimize on non int32 indices. -function foo(i) { return String.fromCharCode(i); } -foo(33); -foo(33); -%OptimizeFunctionOnNextCall(foo); -foo(33.3); -assertOptimized(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-589472.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-589472.js deleted file mode 100644 index 41a5bd63294..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-589472.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -// Not guaranteed to throw because the stack limits are different on all -// architectures, hence we use try-catch instead of assertThrows here. -try { f() } catch(e) { assertInstanceof(e, RangeError) } - -function f() { - return Math.max( - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + "a" + - "boom", 1, 2, 3, 4, 5, 6, 7, 8, 9); -}; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-589792.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-589792.js deleted file mode 100644 index f735afceaef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-589792.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var boom = (function(stdlib, foreign, heap) { - "use asm"; - var MEM8 = new stdlib.Uint8Array(heap); - var MEM32 = new stdlib.Int32Array(heap); - function foo(i, j) { - j = MEM8[256]; - // This following value '10' determines the value of 'rax' - MEM32[j >> 10] = 0xabcdefaa; - return MEM32[j >> 2] + j - } - return foo -})(this, 0, new ArrayBuffer(256)); -%OptimizeFunctionOnNextCall(boom); -boom(0, 0x1000); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-590989-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-590989-1.js deleted file mode 100644 index 73118eb20e8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-590989-1.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {} -var p = {foo: 1.5} - -function g(x) { return x.foo === +x.foo; } - -assertEquals(false, g(o)); -assertEquals(false, g(o)); -%OptimizeFunctionOnNextCall(g); -assertEquals(false, g(o)); // Still fine here. -assertEquals(true, g(p)); -%OptimizeFunctionOnNextCall(g); -assertEquals(false, g(o)); // Confused by type feedback. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-590989-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-590989-2.js deleted file mode 100644 index cae1d9db5bd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-590989-2.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { return x === +x; } - -assertEquals(false, f(undefined)); -assertEquals(false, f(undefined)); -%OptimizeFunctionOnNextCall(f); -assertEquals(false, f(undefined)); // Interestingly this fails right away. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-592340.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-592340.js deleted file mode 100644 index 49794b815ef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-592340.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -class MyArray extends Array { } -Object.prototype[Symbol.species] = MyArray; -delete Array[Symbol.species]; -__v_1 = Math.pow(2, 31); -__v_2 = []; -__v_2[__v_1] = 31; -__v_4 = []; -__v_4[__v_1 - 2] = 33; -assertThrows(() => __v_2.concat(__v_4), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-592343.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-592343.js deleted file mode 100644 index c98e921b003..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-592343.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var r = /[^\u{1}-\u{1000}\u{1002}-\u{2000}]/u; -assertTrue(r.test("\u{0}")); -assertFalse(r.test("\u{1}")); -assertFalse(r.test("\u{1000}")); -assertTrue(r.test("\u{1001}")); -assertFalse(r.test("\u{1002}")); -assertFalse(r.test("\u{2000}")); -assertTrue(r.test("\u{2001}")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-593282.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-593282.js deleted file mode 100644 index 85c4e10a12d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-593282.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --stack-size=120 - -var __v_11 = {}; -function __f_2(depth) { - try { - __f_5(depth, __v_11); - return true; - } catch (e) { - gc(); - } -} -function __f_5(n, __v_4) { - if (--n == 0) { - __f_1(__v_4); - return; - } - __f_5(n, __v_4); -} -function __f_1(__v_4) { - var __v_5 = new RegExp(__v_4); -} -function __f_4() { - var __v_1 = 100; - var __v_8 = 100000; - while (__v_1 < __v_8 - 1) { - var __v_3 = Math.floor((__v_1 + __v_8) / 2); - if (__f_2(__v_3)) { - __v_1 = __v_3; - } else { - __v_8 = __v_3; - } - } -} -__f_4(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-593697-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-593697-2.js deleted file mode 100644 index c26fdfdf671..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-593697-2.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stress-inline - -"use strict"; - -var f5 = (function f6(stdlib) { - "use asm"; - var cos = stdlib.Math.cos; - function f5() { - return cos(); - } - return { f5: f5 }; -})(this, {}).f5(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-594183.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-594183.js deleted file mode 100644 index cb8003404d6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-594183.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -var global = {} - -var fish = [ - {'name': 'foo'}, - {'name': 'bar'}, -]; - -for (var i = 0; i < fish.length; i++) { - global[fish[i].name] = 1; -} - -function load() { - var sum = 0; - for (var i = 0; i < fish.length; i++) { - var name = fish[i].name; - sum += global[name]; - } - return sum; -} - -load(); -load(); -%OptimizeFunctionOnNextCall(load); -load(); -assertOptimized(load); - -function store() { - for (var i = 0; i < fish.length; i++) { - var name = fish[i].name; - global[name] = 1; - } -} - -store(); -store(); -%OptimizeFunctionOnNextCall(store); -store(); -assertOptimized(store); - -// Regression test for KeyedStoreIC bug: would use PROPERTY mode erroneously. - -function store_element(obj, key) { - obj[key] = 0; -} - -var o1 = new Array(3); -var o2 = new Array(3); -o2.o2 = "o2"; -var o3 = new Array(3); -o3.o3 = "o3"; -var o4 = new Array(3); -o4.o4 = "o4"; -var o5 = new Array(3); -o5.o5 = "o5"; -// Make the KeyedStoreIC megamorphic. -store_element(o1, 0); // Premonomorphic -store_element(o1, 0); // Monomorphic -store_element(o2, 0); // 2-way polymorphic. -store_element(o3, 0); // 3-way polymorphic. -store_element(o4, 0); // 4-way polymorphic. -store_element(o5, 0); // Megamorphic. - -function inferrable_store(key) { - store_element(o5, key); -} - -inferrable_store(0); -inferrable_store(0); -%OptimizeFunctionOnNextCall(inferrable_store); -inferrable_store(0); -assertOptimized(inferrable_store); -// If |inferrable_store| emitted a generic keyed store, it won't deopt upon -// seeing a property name key. It should have inferred a receiver map and -// emitted an elements store, however. -inferrable_store("deopt"); - -// TurboFan is not sophisticated enough to use key type provided by ICs. -if (!isTurboFanned(inferrable_store)) { - assertUnoptimized(inferrable_store); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-594574-concat-leak-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-594574-concat-leak-1.js deleted file mode 100644 index d5f51a49cac..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-594574-concat-leak-1.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -array = new Array(10); -array[0] = 0.1; -// array[1] = THE_HOLE, reading through the prototype chain -array[2] = 2.1; -array[3] = 3.1; - -var copy = array.slice(0, array.length); - -// Change the array's prototype. -var proto = {}; -array.__proto__ = proto; - -// Define [1] on the prototype to alter the array during concatenation. -Object.defineProperty( - proto, 1, { - get() { - // Alter the array. - array.length = 1; - // Force gc to move the array. - gc(); - return "value from proto"; - }, - set(new_value) { } -}); - -var concatted_array = Array.prototype.concat.call(array); -assertEquals(concatted_array[0], 0.1); -assertEquals(concatted_array[1], "value from proto"); -assertEquals(concatted_array[2], undefined); -assertEquals(concatted_array[3], undefined); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-594574-concat-leak-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-594574-concat-leak-2.js deleted file mode 100644 index f359cfd80b5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-594574-concat-leak-2.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -array = new Array(10); -array[0] = 0.1; -// array[1] = THE_HOLE, reading through the prototype chain -array[2] = 2.1; -array[3] = 3.1; - -var copy = array.slice(0, array.length); - -// Use the defaul array prototype. -var proto = array.__proto__; - -// Define [1] on the prototype to alter the array during concatenation. -Object.defineProperty( - proto, 1, { - get() { - // Alter the array. - array.length = 1; - // Force gc to move the array. - gc(); - return "value from proto"; - }, - set(new_value) { } -}); - -var concatted_array = Array.prototype.concat.call(array); -assertEquals(concatted_array[0], 0.1); -assertEquals(concatted_array[1], "value from proto"); -assertEquals(concatted_array[2], undefined); -assertEquals(concatted_array[3], undefined); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-594955.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-594955.js deleted file mode 100644 index 69db053f4a4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-594955.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function g(s, key) { return s[key]; } - -assertEquals(g(new String("a"), "length"), 1); -assertEquals(g(new String("a"), "length"), 1); -assertEquals(g("a", 32), undefined); -assertEquals(g("a", "length"), 1); -assertEquals(g(new String("a"), "length"), 1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-595615.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-595615.js deleted file mode 100644 index f5d0ee53446..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-595615.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; - -function f(o) { - return o.x(); -} -try { f({ x: 1 }); } catch(e) {} -try { f({ x: 1 }); } catch(e) {} -%OptimizeFunctionOnNextCall(f); -try { f({ x: 1 }); } catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-595657.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-595657.js deleted file mode 100644 index 653259781be..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-595657.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -function test() { - try { - test(); - } catch(e) { - /(\2)(a)/.test(""); - } -} - -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-595738.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-595738.js deleted file mode 100644 index d2409ab4aea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-595738.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo() { return 1; } -var x = {toJSON: foo.bind()}; -assertEquals("1", JSON.stringify(x)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-596394.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-596394.js deleted file mode 100644 index 37c8d2777bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-596394.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// In ES#sec-array.prototype.concat -// When concat makes a new integer-indexed exotic object, the resulting properties -// are non-configurable and cannot have CreateDataPropertyOrThrow called on them, -// so it throws a TypeError on failure to make a new property. - -__v_0 = new Uint8Array(100); -array = new Array(10); -array.__proto__ = __v_0; -assertThrows(() => Array.prototype.concat.call(array), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-598998.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-598998.js deleted file mode 100644 index a2a02623f5d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-598998.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stress-inline - -"use strict"; - -function deopt_function(func) { - %DeoptimizeFunction(func); -} - -function f(x) { - return deopt_function(h); -} - -function g(x) { - return f(x, 1); -} - -function h(x) { - g(x, 1); -} - -%NeverOptimizeFunction(deopt_function); - -h(1); -h(1); -%OptimizeFunctionOnNextCall(h); -h(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599003.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-599003.js deleted file mode 100644 index da29455661b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599003.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --verify-heap - -function A() {} - -function g1() { - var obj = new A(); - obj.v0 = 0; - obj.v1 = 0; - obj.v2 = 0; - obj.v3 = 0; - obj.v4 = 0; - obj.v5 = 0; - obj.v6 = 0; - obj.v7 = 0; - obj.v8 = 0; - obj.v9 = 0; - return obj; -} - -function g2() { - return new A(); -} - -var o = g1(); -%OptimizeFunctionOnNextCall(g2); -g2(); -o = null; -gc(); - -for (var i = 0; i < 20; i++) { - var o = new A(); -} -g2(); - -gc(); // Boom! diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599067.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-599067.js deleted file mode 100644 index de3c99af033..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599067.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - var o = {}; - var p = new Proxy({}, o); - Error.captureStackTrace(p); -} catch(e) { - assertEquals("invalid_argument", e.message); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-1.js deleted file mode 100644 index fc89fe4c66a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-1.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(Boolean.prototype, "v", {get:constructor}); - -function foo(b) { return b.v; } - -foo(true); -foo(true); -foo(true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-2.js deleted file mode 100644 index 947468a08b8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-2.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(Boolean.prototype, "v", {set:constructor}); - -function foo(b) { b.v = 1; } - -foo(true); -foo(true); -foo(true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-3.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-3.js deleted file mode 100644 index 2892f562aa0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-3.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(Number.prototype, "v", {get:constructor}); - -function foo(b) { return b.v; } - -foo(2); -foo(3); -foo(4); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-4.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-4.js deleted file mode 100644 index 0d6854cbb32..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599073-4.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(Number.prototype, "v", {set:constructor}); - -function foo(b) { b.v = 1; } - -foo(2); -foo(3); -foo(4); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599714.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-599714.js deleted file mode 100644 index 98de3406b79..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-599714.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var custom_toString = function() { - var boom = custom_toString.caller; - return boom; -} - -var object = {}; -object.toString = custom_toString; - -try { Object.hasOwnProperty(object); } catch (e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-600257.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-600257.js deleted file mode 100644 index 87bd2e39af3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-600257.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -(function rec() { - try { - rec(); - } catch (e) { - /{/; - } -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-601617.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-601617.js deleted file mode 100644 index e1a5cbd2c78..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-601617.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function h() { - var res = g.arguments[0].x; - return res; -} - -function g(o) { - var res = h(); - return res; -} - -function f1() { - var o = { x : 1 }; - var res = g(o); - return res; -} - -function f0() { - "use strict"; - return f1(5); -} - -%NeverOptimizeFunction(h); -f0(); -f0(); -%OptimizeFunctionOnNextCall(f0); -assertEquals(1, f0()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-602184.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-602184.js deleted file mode 100644 index c7d793bb0e5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-602184.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(test, a) { - var v; - if (test) { - v = v|0; - } - a[v] = 1; -} -var v = new String(); -f(false, v); -f(false, v); - -v = new Int32Array(10); -f(true, v); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-602595.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-602595.js deleted file mode 100644 index 7f6d478e05d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-602595.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(a) { return [a] } - -assertEquals([23], f(23)); -assertEquals([42], f(42)); -%OptimizeFunctionOnNextCall(f); -assertEquals([65], f(65)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-603463.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-603463.js deleted file mode 100644 index 20bfae65c54..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-603463.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function load(a, i) { - return a[i]; -} - -function f() { - return load(new Proxy({}, {}), undefined); -} - -f(); -f(); -load([11, 22, 33], 0); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-604299.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-604299.js deleted file mode 100644 index 9908f2df4d3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-604299.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Array.prototype.__defineSetter__(0,function(value){}); - -if (this.Intl) { - var o = new Intl.DateTimeFormat('en-US', {'timeZone': 'Asia/Katmandu'}) -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-604680.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-604680.js deleted file mode 100644 index 8835807e86e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-604680.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function h() { - var res = g.arguments; - return res; -} - -function g(o) { - var res = h(); - return res; -} - -function f1() { - var o = { x : 42 }; - var res = g(o); - return 1; -} - -function f0(a, b) { - "use strict"; - return f1(5); -} - -function boom(b) { - if (b) throw new Error("boom!"); -} - -%NeverOptimizeFunction(h); -f0(); -f0(); -%OptimizeFunctionOnNextCall(f0); - -boom(false); -boom(false); -%OptimizeFunctionOnNextCall(boom); - -try { - f0(1, 2, 3); - boom(true, 1, 2, 3); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-605060.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-605060.js deleted file mode 100644 index d2dc79a310b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-605060.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Array.prototype.__defineGetter__('map', function(){}); -Array.prototype.__defineGetter__('map', function(){}); -Array.prototype.__defineGetter__('map', function(){}); -assertTrue(%HasFastProperties(Array.prototype)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-605862.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-605862.js deleted file mode 100644 index 82a5d454ec9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-605862.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/[]*1/u.exec("\u1234"); -/[^\u0000-\u{10ffff}]*1/u.exec("\u1234"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-608278.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-608278.js deleted file mode 100644 index c8d2fcc745a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-608278.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stress-inline - -"use strict"; - -function h() { - var stack = (new Error("boom")).stack; - print(stack); - %DeoptimizeFunction(f1); - %DeoptimizeFunction(f2); - %DeoptimizeFunction(f3); - %DeoptimizeFunction(g); - %DeoptimizeFunction(h); - return 1; -} -%NeverOptimizeFunction(h); - -function g(v) { - return h(); -} - - -function f1() { - var o = {}; - o.__defineGetter__('p', g); - o.p; -} - -f1(); -f1(); -%OptimizeFunctionOnNextCall(f1); -f1(); - - -function f2() { - var o = {}; - o.__defineSetter__('q', g); - o.q = 1; -} - -f2(); -f2(); -%OptimizeFunctionOnNextCall(f2); -f2(); - - -function A() { - return h(); -} - -function f3() { - new A(); -} - -f3(); -f3(); -%OptimizeFunctionOnNextCall(f3); -f3(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-608279.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-608279.js deleted file mode 100644 index 22c69f252d0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-608279.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --always-opt --no-lazy - -function __f_38() { - try { - throw 0; - } catch (e) { - eval(); - var __v_38 = { a: 'hest' }; - __v_38.m = function () { return __v_38.a; }; - } - return __v_38; -} -var __v_40 = __f_38(); -__v_40.m(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-609029.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-609029.js deleted file mode 100644 index bd77de28a99..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-609029.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt --function-context-specialization --gc-interval=14 -// Flags: --turbo-filter=match --verify-heap -"xxx".match(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-610207.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-610207.js deleted file mode 100644 index 4396a56a771..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-610207.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Error.prepareStackTrace = function(exception, frames) { - return frames[0].getEvalOrigin(); -} - -try { - Realm.eval(0, "throw new Error('boom');"); -} catch(e) { - print(e.stack); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-612109.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-612109.js deleted file mode 100644 index 202bd96c774..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-612109.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -s = "string for triggering osr in __f_0"; -for (var i = 0; i < 16; i++) s = s + s; -decodeURI(encodeURI(s)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-612142.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-612142.js deleted file mode 100644 index de2dc8d04ac..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-612142.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var thrower = {[Symbol.toPrimitive]: function(e) { throw e }}; -try { - for (var i = 0; i < 10; i++) { } - for (var i = 0.5; i < 100000; ++i) { } - for (var i = 16 | 0 || 0 || this || 1; i;) { String.fromCharCode(thrower); } -} catch (e) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-613494.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-613494.js deleted file mode 100644 index 6fcc1e94f40..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-613494.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape --noanalyze-environment-liveness - -function f() { - var bound = 0; - function g() { return bound } -} -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-613570.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-613570.js deleted file mode 100644 index 3cd9857761f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-613570.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals("[\n\u26031,\n\u26032\n]", - JSON.stringify([1, 2], null, "\u2603")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-613905.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-613905.js deleted file mode 100644 index 8bb38c9b9d1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-613905.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Error.prepareStackTrace = (e,s) => s; -var CallSiteConstructor = Error().stack[0].constructor; - -try { - (new CallSiteConstructor(3, 6)).toString(); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-613919.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-613919.js deleted file mode 100644 index cbd3e43b967..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-613919.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function g(a) { - if (a) return arguments; - %DeoptimizeNow(); - return 23; -} -function f() { - return g(false); -} -assertEquals(23, f()); -assertEquals(23, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(23, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-614292.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-614292.js deleted file mode 100644 index 3a67c17f601..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-614292.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return [] | 0 && values[0] || false; -} - -%OptimizeFunctionOnNextCall(foo); -try { - foo(); -} catch (e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-614644.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-614644.js deleted file mode 100644 index d219cd3b927..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-614644.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a, x) { - a.shift(2, a.length = 2); - a[0] = x; -} - -f([ ], 1.1); -f([1], 1.1); -%OptimizeFunctionOnNextCall(f); -f([1], 1.1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-614727.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-614727.js deleted file mode 100644 index 0845afc5ac6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-614727.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -"use strict"; - -function f(a, b, c) { return arguments } -function g(...args) { return args } - -// On 64-bit machine this produces a 768K array which is sufficiently small to -// not cause a stack overflow, but big enough to move the allocated arguments -// object into large object space (kMaxRegularHeapObjectSize == 600K). -var length = Math.pow(2, 15) * 3; -var args = new Array(length); -assertEquals(length, f.apply(null, args).length); -assertEquals(length, g.apply(null, args).length); - -// On 32-bit machines this produces an equally sized array, however it might in -// turn trigger a stack overflow on 64-bit machines, which we need to catch. -var length = Math.pow(2, 16) * 3; -var args = new Array(length); -try { f.apply(null, args) } catch(e) {} -try { g.apply(null, args) } catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-615774.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-615774.js deleted file mode 100644 index ea5e67513e6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-615774.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Error.prepareStackTrace = (e,s) => s; -var CallSiteConstructor = Error().stack[0].constructor; - -try { - (new CallSiteConstructor(CallSiteConstructor, 6)).toString(); -} catch (e) { -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-616709-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-616709-1.js deleted file mode 100644 index 75abe3c2e1e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-616709-1.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Make the Object prototype have dictionary properties. -for (var i = 0; i < 2000; i++) { - Object.prototype['X'+i] = true; -} - -function boom(a1) { - return a1[0]; -} - -var a = new Array(1); -a[0] = 0.1; -boom(a); -boom(a); -%OptimizeFunctionOnNextCall(boom); -boom(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-616709-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-616709-2.js deleted file mode 100644 index 27e5d2d9da1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-616709-2.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Make the Array prototype have dictionary properties. -for (var i = 0; i < 2000; i++) { - Array.prototype['X'+i] = true; -} - -function boom(a1) { - return a1[0]; -} - -var a = new Array(1); -a[0] = 0.1; -boom(a); -boom(a); -%OptimizeFunctionOnNextCall(boom); -boom(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-617524.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-617524.js deleted file mode 100644 index b32eeef5f4d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-617524.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --always-opt - -function f(a,b,c) { - a.a = b; - a[1] = c; - return a; -} - -f(new Array(5),.5,0); -var o1 = f(new Array(5),0,.5); -gc(); -var o2 = f(new Array(5),0,0); -var o3 = f(new Array(5),0); -assertEquals(0, o3.a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-617527.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-617527.js deleted file mode 100644 index cf4662871c4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-617527.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts - -Object.defineProperty(Array.prototype, "1", { get: toLocaleString }); -assertThrows(_ => new RegExp(0, 0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-617567.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-617567.js deleted file mode 100644 index f0c696e14b2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-617567.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --turbo-filter=* --allow-natives-syntax - -var v1 = {}; -function g() { - v1 = []; - for (var i = 0; i < 1; i++) { - v1[i](); - } -} - -var v2 = {}; -var v3 = {}; -function f() { - v3 = v2; - g(); -} - -assertThrows(g); -%OptimizeFunctionOnNextCall(f); -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-618788.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-618788.js deleted file mode 100644 index a104d8d39ed..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-618788.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Slice and splice both try to set the length property of their return -// value. Add a bogus setter to allow that. -Object.defineProperty(Int32Array.prototype, 'length', { set(v) { } }); - -(function testSlice() { - var a = new Array(); - a.constructor = Int32Array; - a.length = 1000; // Make the length >= 1000 so UseSparseVariant returns true. - assertTrue(a.slice() instanceof Int32Array); -})(); - -(function testSplice() { - var a = new Array(); - a.constructor = Int32Array; - a.length = 1000; // Make the length >= 1000 so UseSparseVariant returns true. - assertTrue(a.splice(1) instanceof Int32Array); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-618845.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-618845.js deleted file mode 100644 index ea3baba0bb9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-618845.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Foo() {} -Object.defineProperty(Foo.prototype, "name", - {get: function() { return "FooName"; }}); - -function ic(f) { - return f.prototype.name; -} - -assertEquals("FooName", ic(Foo)); -assertEquals("FooName", ic(Foo)); // Don't crash, don't time out. diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-619476.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-619476.js deleted file mode 100644 index 33204ae7739..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-619476.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var x = {}; -// Crashes in debug mode if an erroneous DCHECK in dfb8d333 is not removed. -eval, x[eval]; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-620119.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-620119.js deleted file mode 100644 index cbe5a78713d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-620119.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-lazy - -assertEquals(0, ((x, {[(x = function() { y = 0 }, "foo")]: y = eval(1)}) => { x(); return y })(42, {})); -assertEquals(0, (function (x, {[(x = function() { y = 0 }, "foo")]: y = eval(1)}) { x(); return y })(42, {})); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-620253.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-620253.js deleted file mode 100644 index 811a4e77154..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-620253.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --throws - -load("test/mjsunit/regress/regress-crbug-620253.js"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-620650.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-620650.js deleted file mode 100644 index 25a92cab20e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-620650.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - function f(src, dst, i) { - dst[i] = src[i]; - } - var buf = new ArrayBuffer(16); - var view_int32 = new Int32Array(buf); - view_int32[1] = 0xFFF7FFFF; - var view_f64 = new Float64Array(buf); - var arr = [,0.1]; - f(view_f64, arr, -1); - f(view_f64, arr, 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-621611.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-621611.js deleted file mode 100644 index bf9a4605cdb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-621611.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(Math.E, Math.exp(1)); -assertEquals(Math.LN10, Math.log(10)); -assertEquals(Math.LN2, Math.log(2)); -assertEquals(Math.LOG10E, Math.log10(Math.E)); -assertEquals(Math.LOG2E, Math.log2(Math.E)); -assertEquals(Math.SQRT1_2, Math.sqrt(0.5)); -assertEquals(Math.SQRT2, Math.sqrt(2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-621816.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-621816.js deleted file mode 100644 index 8ef291a00c6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-621816.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - var o = {}; - o.a = 1; -} -function g() { - var o = { ['a']: function(){} }; - f(); -} -f(); -f(); -%OptimizeFunctionOnNextCall(g); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-621868.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-621868.js deleted file mode 100644 index dcd7b8755ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-621868.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap - -function f(a) { // First parameter is tagged. - var n = 1 + a; -} - -function g() { - f(); - var d = {x : f()}; - return [d]; -} - -g(); -g(); -%OptimizeFunctionOnNextCall(g); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-624747.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-624747.js deleted file mode 100644 index 7927263f8ec..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-624747.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --es-staging - -"use strict"; - -function bar() { - try { - unref; - } catch (e) { - return (1 instanceof TypeError) && unref(); // Call in tail position! - } -} - -function foo() { - return bar(); // Call in tail position! -} - -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-624919.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-624919.js deleted file mode 100644 index 5a2b100daff..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-624919.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a, b, c, d, e) { - if (a && (b, c ? d() : e())) return 0; -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-625547.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-625547.js deleted file mode 100644 index 20eb85db5e3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-625547.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -var v1 = {}; -v1 = 0; -var v2 = {}; -v2 = 0; -gc(); - -var minus_zero = {z:-0.0}.z; -var nan = undefined + 1; -function f() { - v1 = minus_zero; - v2 = nan; -}; -%OptimizeFunctionOnNextCall(f); -f(); -gc(); // Boom! diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-625590.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-625590.js deleted file mode 100644 index aa9ff8a5df2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-625590.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var obj = {}; -function f() {} -f.prototype = { - mSloppy() { - super[obj] = 15; - } -}; -new f().mSloppy(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-626715.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-626715.js deleted file mode 100644 index e842fa61c7e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-626715.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Create a prototype object which has a lot of fast properties. -var body = ""; -for (var i = 0; i < 100; i++) { - body += `this.a${i} = 0;\n`; -} -var Proto = new Function(body); - -function A() {} -A.prototype = new Proto(); - -// Create a object and add properties that already exist in the prototype. -// At some point the object will turn into a dictionary mode and one of -// the fast details from the prototype will be reinterpreted as a details -// for a new property ... -var o = new A(); -for (var i = 0; i < 100; i++) { - o["a" + i] = i; -} - -// ... which will break the enumeration order of the slow properties. -var names = Object.getOwnPropertyNames(o); -for (var i = 0; i < 100; i++) { - assertEquals("a" + i, names[i]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-627828.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-627828.js deleted file mode 100644 index 12c59a37c6e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-627828.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestDeoptFromComputedNameInObjectLiteral() { - function f() { - var o = { - toString: function() { - %DeoptimizeFunction(f); - return "x"; - } - }; - return { [o]() { return 23 } }; - } - assertEquals(23, f().x()); - assertEquals(23, f().x()); - %OptimizeFunctionOnNextCall(f); - assertEquals(23, f().x()); -})(); - -(function TestDeoptFromComputedNameInObjectLiteralWithModifiedPrototype() { - // The prototype chain should not be used if the definition - // happens in the object literal. - - Object.defineProperty(Object.prototype, 'x_proto', { - get: function () { - return 21; - }, - set: function () { - } - }); - - - function f() { - var o = { - toString: function() { - %DeoptimizeFunction(f); - return "x_proto"; - } - }; - return { [o]() { return 23 } }; - } - assertEquals(23, f().x_proto()); - assertEquals(23, f().x_proto()); - %OptimizeFunctionOnNextCall(f); - assertEquals(23, f().x_proto()); - - delete Object.prototype.c; - -})(); - -(function TestDeoptFromComputedNameInClassLiteral() { - function g() { - var o = { - toString: function() { - %DeoptimizeFunction(g); - return "y"; - } - }; - class C { - [o]() { return 42 }; - } - return new C(); - } - assertEquals(42, g().y()); - assertEquals(42, g().y()); - %OptimizeFunctionOnNextCall(g); - assertEquals(42, g().y()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-627934.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-627934.js deleted file mode 100644 index 242dc4a78ec..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-627934.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var x = "1".repeat(32 * 1024 * 1024); -for (var z = x;;) { - try { - z += {toString: function() { return x; }}; - } catch (e) { - break; - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-627935.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-627935.js deleted file mode 100644 index fdc4d2acdec..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-627935.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Intl) { - assertThrows("Intl.DateTimeFormat('en-US', {timeZone: 0})", RangeError); - assertThrows("Intl.DateTimeFormat('en-US', {timeZone: true})", RangeError); - assertThrows("Intl.DateTimeFormat('en-US', {timeZone: null})", RangeError); - - var object = { toString: function() { return "UTC" } }; - assertDoesNotThrow("Intl.DateTimeFormat('en-US', {timeZone: object})"); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-628573.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-628573.js deleted file mode 100644 index 5ba184d9aba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-628573.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var z = {valueOf: function() { return 3; }}; - -(function() { - try { - var tmp = { x: 12 }; - with (tmp) { - z++; - } - throw new Error("boom"); - } catch(e) {} -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-629062.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-629062.js deleted file mode 100644 index 228ae6d2d50..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-629062.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - return 1 + ((1 == 0) && undefined); -} - -foo(false); -foo(false); -%OptimizeFunctionOnNextCall(foo); -foo(true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-629435.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-629435.js deleted file mode 100644 index b73f601c71f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-629435.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(v) { - v.constructor; -} - -bar([]); -bar([]); - -function foo() { - var x = -0; - bar(x + 1); -} -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-629823.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-629823.js deleted file mode 100644 index bbf74b80afd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-629823.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {} -function bar() { - o[0] = +o[0]; - o = /\u23a1|__v_4/; -} -bar(); -bar(); -bar(); -function foo() { bar(); } -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630559.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-630559.js deleted file mode 100644 index f9623ed879f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630559.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertThrows("try{}%"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630561.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-630561.js deleted file mode 100644 index 798f33d6589..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630561.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --gc-interval=30 - -var dict_elements = {}; - -for (var i= 0; i< 100; i++) { - dict_elements[2147483648 + i] = i; -} - -var keys = Object.keys(dict_elements); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630923.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-630923.js deleted file mode 100644 index ff0d2dd05ef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630923.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {}; -function bar(o) { - return 1 + (o.t ? 1 : 2); -} -function foo() { - bar(o); -} -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630951.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-630951.js deleted file mode 100644 index 58af024d3ac..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630951.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - "use asm"; - var o = new Int32Array(64 * 1024); - return () => { o[i1 >> 2] | 0; } -} -assertThrows(foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630952.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-630952.js deleted file mode 100644 index 42d30a3ec1e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-630952.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt -try { -function __f_4(sign_bit, - mantissa_29_bits) { -} -__f_4.prototype.returnSpecial = function() { - this.mantissa_29_bits * mantissa_29_shift; -} -__f_4.prototype.toSingle = function() { - if (-65535) return this.toSingleSubnormal(); -} -__f_4.prototype.toSingleSubnormal = function() { - if (__v_15) { - var __v_7 = this.mantissa_29_bits == -1 && - (__v_13 & __v_10 ) == 0; - } - __v_8 >>= __v_7; -} -__v_14 = new __f_4(); -__v_14.toSingle(); -} catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631027.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631027.js deleted file mode 100644 index f3d04b8efd4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631027.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function f() { - with ({ value:"foo" }) { return value; } -} -assertEquals("foo", f()); -%OptimizeFunctionOnNextCall(f); -assertEquals("foo", f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-1.js deleted file mode 100644 index bd40dcd3a2c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-1.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x < x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-10.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-10.js deleted file mode 100644 index 1c4fccaac19..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-10.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x << x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-11.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-11.js deleted file mode 100644 index a03a125ede0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-11.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x >> x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-12.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-12.js deleted file mode 100644 index f710bd01496..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-12.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x >>> x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-13.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-13.js deleted file mode 100644 index 7a784481eec..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-13.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x & x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-14.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-14.js deleted file mode 100644 index 829bf900b67..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-14.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x | x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-15.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-15.js deleted file mode 100644 index 1257d797ae8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-15.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x ^ x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-2.js deleted file mode 100644 index ce46b27886d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-2.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x > x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-3.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-3.js deleted file mode 100644 index 4258b155081..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-3.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x >= x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-4.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-4.js deleted file mode 100644 index 7e8cdf8f565..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-4.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x <= x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-5.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-5.js deleted file mode 100644 index acdedcba134..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-5.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x + x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-6.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-6.js deleted file mode 100644 index d17772f17c8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-6.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x / x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-7.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-7.js deleted file mode 100644 index 7d03fa85516..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-7.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x * x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-8.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-8.js deleted file mode 100644 index 474110b53dd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-8.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x % x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-9.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-9.js deleted file mode 100644 index ad472e0722c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631318-9.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { return x - x; } -foo(1); -foo(2); - -function bar(x) { foo(x); } -%OptimizeFunctionOnNextCall(bar); - -assertThrows(() => bar(Symbol.toPrimitive)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631917.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-631917.js deleted file mode 100644 index ca7a94c8443..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-631917.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var b = { toString: function() { return "b"; } }; -var c = { toString: function() { return "c"; } }; - -(function() { - var expected_receiver; - var obj1 = { - a: 100, - b_: 200, - get b() { assertEquals(expected_receiver, this); return this.b_; }, - set b(v) { assertEquals(expected_receiver, this); this.b_ = v; }, - c_: 300, - get c() { assertEquals(expected_receiver, this); return this.c_; }, - set c(v) { assertEquals(expected_receiver, this); this.c_ = v; }, - }; - var obj2 = { - boom() { - super.a++; - super[b]++; - super[c]++; - }, - } - Object.setPrototypeOf(obj2, obj1); - - expected_receiver = obj2; - obj2.boom(); - assertEquals(101, obj2.a); - assertEquals(201, obj2[b]); - assertEquals(301, obj2[c]); - - expected_receiver = obj1; - assertEquals(100, obj1.a); - assertEquals(200, obj1[b]); - assertEquals(300, obj1[c]); -}()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-632800.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-632800.js deleted file mode 100644 index 9848a838825..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-632800.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --ignition-osr - -function osr() { - for (var i = 0; i < 50000; ++i) Math.random(); -} -osr(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-633585.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-633585.js deleted file mode 100644 index 5b2a52b37d7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-633585.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --always-opt - -function f() { this.x = this.x.x; } -gc(); -f.prototype.x = { x:1 } -new f(); -new f(); - -function g() { - function h() {}; - h.prototype = { set x(value) { } }; - new f(); -} -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-633884.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-633884.js deleted file mode 100644 index 6f46e96725d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-633884.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -try { - // Leave "blarg" as the hole in a new ScriptContext. - Realm.eval(Realm.current(), "throw Error(); let blarg"); -} catch (e) { } - -// Access "blarg" via a dynamic lookup. Should not crash! -assertThrows(function() { - // Prevent full-codegen from optimizing away the %LoadLookupSlot call. - eval("var x = 5"); - blarg; -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-635798.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-635798.js deleted file mode 100644 index 0a89aa19f77..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-635798.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - var x = []; - var y = []; - x.__proto__ = y; - for (var i = 0; i < 10000; ++i) { - y[i] = 1; - } -} -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-635923.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-635923.js deleted file mode 100644 index 5101b7973e5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-635923.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-filter=f - -function f(x) { return x + 23 } -function g(x) { return f(x) + 42 } - -assertEquals(23, f(0)); -assertEquals(24, f(1)); -assertEquals(67, g(2)); -assertEquals(68, g(3)); - -// Optimize {g} with Crankshaft, causing {f} to be inlined. -%OptimizeFunctionOnNextCall(g); -assertEquals(65, g(0)); - -// Optimize {f} with Turbofan, after it has been inlined. -%OptimizeFunctionOnNextCall(f); -assertEquals(23, f(0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-638551.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-638551.js deleted file mode 100644 index f812359d8d9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-638551.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --no-lazy - -function f() { - for (var i = 0; i < 10; i++) if (i == 5) %OptimizeOsr(); - function g() {} - %OptimizeFunctionOnNextCall(g); - g(); -} -f(); -gc(); // Make sure that ... -gc(); // ... code flushing ... -gc(); // ... clears code ... -gc(); // ... attached to {g}. -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-640369.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-640369.js deleted file mode 100644 index 97982d1224f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-640369.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function A() { - this.x = 0; - for (var i = 0; i < max; ) {} -} -function foo() { - for (var i = 0; i < 1; i = 2) %OptimizeOsr(); - return new A(); -} -try { foo(); } catch (e) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-640497.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-640497.js deleted file mode 100644 index 3b90d1bcfee..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-640497.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -// Warm up {g} with arrays and strings. -function g(v) { return v.length; } -assertEquals(1, g("x")); -assertEquals(2, g("xy")); -assertEquals(1, g([1])); -assertEquals(2, g([1,2])); - -// Inline into {f}, where we see only an array. -function f() { assertEquals(0, g([])); } -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-642056.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-642056.js deleted file mode 100644 index ca9fc78ef61..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-642056.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(o) { - return o.x instanceof Array; -} - -var o = { x : 1.5 }; -o.x = 0; - -f(o); -f(o); -%OptimizeFunctionOnNextCall(f); -f(o); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-643073.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-643073.js deleted file mode 100644 index 1301ddd1843..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-643073.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -for (i in [0,0]) {} -function foo() { - i = 0; - return i < 0; -} -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644111.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-644111.js deleted file mode 100644 index 285e3d1ab31..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644111.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --always-opt - -function Module() { - "use asm"; - return {}; -} -var m = Module(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644215.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-644215.js deleted file mode 100644 index 969e672acc0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644215.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var arr = [...[],,]; -assertTrue(%HasHoleyElements(arr)); -assertEquals(1, arr.length); -assertFalse(arr.hasOwnProperty(0)); -assertEquals(undefined, arr[0]); -// Should not crash. -assertThrows(() => arr[0][0], TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644245.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-644245.js deleted file mode 100644 index 86714902c03..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644245.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function f() { - try { - throw "boom"; - } catch(e) { - %_DeoptimizeNow(); - } -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644631.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-644631.js deleted file mode 100644 index 2805fdbec43..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644631.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --always-opt - -function f() { - var obj = Object.freeze({}); - %_CreateDataProperty(obj, "foo", "bar"); -} - -// Should not crash -assertThrows(f, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644689-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-644689-1.js deleted file mode 100644 index 49bf9020472..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644689-1.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -for (var i = 0; i < 1024; ++i) Object.prototype["i" + i] = i; - -function foo() { [].push(1); } - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644689-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-644689-2.js deleted file mode 100644 index 03831b15a8c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-644689-2.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -for (var i = 0; i < 1024; ++i) Object.prototype["i" + i] = i; - -function foo() { [1].pop(); } - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-645103.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-645103.js deleted file mode 100644 index b81b9f2b042..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-645103.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class Base {} -class Subclass extends Base { - constructor() { - %DeoptimizeNow(); - super(); - } -} -new Subclass(); -new Subclass(); -%OptimizeFunctionOnNextCall(Subclass); -new Subclass(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-645438.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-645438.js deleted file mode 100644 index ff171524a03..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-645438.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function n(x,y){ - y = (y-(0x80000000|0)|0); - return (x/y)|0; -}; -var x = -0x80000000; -var y = 0x7fffffff; -n(x,y); -n(x,y); -%OptimizeFunctionOnNextCall(n); -assertEquals(x, n(x,y)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-645888.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-645888.js deleted file mode 100644 index 06879723ea0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-645888.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - for (var i = 0; i < 3; ++i) { - if (i == 1) { - %OptimizeOsr(); - break; // Trigger next loop. - } - } - while (true) { - throw "no loop, thank you"; - } -} -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-647217.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-647217.js deleted file mode 100644 index ab45c9afa9c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-647217.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stack-size=100 --stress-inline - -var source = "return 1" + new Array(2048).join(' + a') + ""; -eval("function g(a) {" + source + "}"); - -function f(a) { return g(a) } -%OptimizeFunctionOnNextCall(f); -try { f(0) } catch(e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-647887.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-647887.js deleted file mode 100644 index 84e598d5aa9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-647887.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(obj) { - var key; - for (key in obj) { } - return key === undefined; -} - -%OptimizeFunctionOnNextCall(f); -assertFalse(f({ foo:0 })); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-648539.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-648539.js deleted file mode 100644 index c12f16dce4e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-648539.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - "use strict"; - return undefined(0, 0); -} -function g() { - return f(); -} -assertThrows(g, TypeError); -assertThrows(g, TypeError); -%OptimizeFunctionOnNextCall(g); -assertThrows(g, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-648737.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-648737.js deleted file mode 100644 index e78cb20d6f4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-648737.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -function f(str) { - var s = "We turn {" + str + "} into a ConsString now"; - return s.length; -} -assertEquals(33, f("a")); -assertEquals(33, f("b")); -%OptimizeFunctionOnNextCall(f); -assertEquals(33, f("c")); - -function g(str) { - var s = "We also try to materalize {" + str + "} when deopting"; - %DeoptimizeNow(); - return s.length; -} -assertEquals(43, g("a")); -assertEquals(43, g("b")); -%OptimizeFunctionOnNextCall(g); -assertEquals(43, g("c")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-648740.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-648740.js deleted file mode 100644 index c32aa05cad8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-648740.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function () { - function foo() { - const arguments = 42; - } -})() diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-650404.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-650404.js deleted file mode 100644 index ebf14e69b31..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-650404.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function c4(w, h) { - var size = w * h; - if (size < 0) size = 0; - return new Uint32Array(size); -} - -for (var i = 0; i < 3; i++) { - // Computing -0 as the result makes the "size = w * h" multiplication IC - // go into double mode. - c4(0, -1); -} -// Optimize Uint32ConstructFromLength. -for (var i = 0; i < 1000; i++) c4(2, 2); - -// This array will have a HeapNumber as its length: -var bomb = c4(2, 2); - -function reader(o, i) { - // Dummy try-catch, so that TurboFan is used to optimize this. - try {} catch(e) {} - return o[i]; -} -// Optimize reader! -for (var i = 0; i < 3; i++) reader(bomb, 0); -%OptimizeFunctionOnNextCall(reader); -reader(bomb, 0); - -for (var i = bomb.length; i < 100; i++) { - assertEquals(undefined, reader(bomb, i)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-650933.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-650933.js deleted file mode 100644 index e579f0d0ab1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-650933.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = [0, 1, 2, 3, 4, 5, 6, 7, 8]; -var o = {length: 1e40}; -try { new Uint8Array(o); } catch (e) { } -new Float64Array(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-650973.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-650973.js deleted file mode 100644 index 9c2d8c67475..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-650973.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v = {p:0}; -// Turn the object into dictionary mode. -v.__defineGetter__("p", function() { return 13; }); - -function f() { - var boom = (v.foo = v); - assertEquals(v, boom.foo); -} - -f(); -f(); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-651403-global.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-651403-global.js deleted file mode 100644 index e27e076dc31..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-651403-global.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt - -x = ""; - -function f () { - function g() { - try { - eval(''); - return x; - } catch(e) { - } - } - return g(); -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-651403.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-651403.js deleted file mode 100644 index c180e237525..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-651403.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt - -function f () { - var x = ""; - function g() { - try { - eval(''); - return x; - } catch(e) { - } - } - return g(); -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-652186-global.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-652186-global.js deleted file mode 100644 index 0e869e2ff00..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-652186-global.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt - -x = 1; -print(eval("eval('var x = 2'); x;")); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-652186-local.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-652186-local.js deleted file mode 100644 index 39f283432d0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-652186-local.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --always-opt - -function f() { - var x = 1; - return eval("eval('var x = 2'); x;"); -} -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-654723.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-654723.js deleted file mode 100644 index fa812335223..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-654723.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var k = "0101010101010101" + "01010101"; - -function foo(s) { - return k + s; -} - -foo("a"); -foo("a"); -%OptimizeFunctionOnNextCall(foo); -var x = foo(""); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-655004.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-655004.js deleted file mode 100644 index 1cba1efc826..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-655004.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a) { - a.x = 0; - if (a.x === 0) a[1] = 0.1; - a.x = {}; -} -foo(new Array(1)); -foo(new Array(1)); -%OptimizeFunctionOnNextCall(foo); -foo(new Array(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-656037.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-656037.js deleted file mode 100644 index 47d09aaa4b9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-656037.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a) { - return a.push(true); -} - -var a = []; -assertEquals(1, foo(a)); -assertEquals(2, foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(3, foo(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-656275.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-656275.js deleted file mode 100644 index 74b29c14586..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-656275.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = 1; - -function foo(x) { a = Math.fround(x + 1); } - -foo(1); -foo(1); -%OptimizeFunctionOnNextCall(foo); -foo(1.3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-657478.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-657478.js deleted file mode 100644 index 0827a7a1c73..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-657478.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(o) { return %_ToLength(o.length); } - -foo(new Array(4)); -foo(new Array(Math.pow(2, 32) - 1)); -foo({length: 10}); -%OptimizeFunctionOnNextCall(foo); -foo({length: 10}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-658185.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-658185.js deleted file mode 100644 index 60de8d6458d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-658185.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --turbo-escape - -var t = 0; -function foo() { - var o = {x:1}; - var p = {y:2.5, x:0}; - o = []; - for (var i = 0; i < 2; ++i) { - t = o.x; - o = p; - } -} -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-658528.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-658528.js deleted file mode 100644 index a6b07482b7f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-658528.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - eval("var x = 1"); - const x = 2; -} - -assertThrows(f, SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-658691.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-658691.js deleted file mode 100644 index 4f226e78bb3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-658691.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// The {f} function is compiled using TurboFan. -// 1) The call to {Reflect.set} has no arguments adaptation. -// 2) The call to {Reflect.set} is in tail position. -function f(a, b, c) { - "use strict"; - return Reflect.set({}); -} - -// The {g} function is compiled using Ignition. -// 1) The call to {f} requires arguments adaptation. -// 2) The call to {f} is not in tail position. -function g() { - return f() + "-no-tail"; -} - -assertEquals("true-no-tail", g()); -%OptimizeFunctionOnNextCall(f); -assertEquals("true-no-tail", g()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659475-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-659475-1.js deleted file mode 100644 index 2648203b8c1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659475-1.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var n; - -function Ctor() { - n = new Set(); -} - -function Check() { - n.xyz = 0x826852f4; -} - -Ctor(); -Ctor(); -%OptimizeFunctionOnNextCall(Ctor); -Ctor(); - -Check(); -Check(); -%OptimizeFunctionOnNextCall(Check); -Check(); - -Ctor(); -Check(); - -parseInt('AAAAAAAA'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659475-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-659475-2.js deleted file mode 100644 index 49e02fde009..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659475-2.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var n; - -function Ctor() { - try { } catch (e) {} - n = new Set(); -} - -function Check() { - n.xyz = 0x826852f4; -} - -Ctor(); -Ctor(); -%OptimizeFunctionOnNextCall(Ctor); -Ctor(); - -Check(); -Check(); -%OptimizeFunctionOnNextCall(Check); -Check(); - -Ctor(); -Check(); - -parseInt('AAAAAAAA'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659915a.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-659915a.js deleted file mode 100644 index 507a0f134cc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659915a.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let x; -function f(a) { - x += a; -} -function g(a) { - f(a); return x; -} -function h(a) { - x = a; return x; -} - -function boom() { return g(1) } - -assertEquals(1, h(1)); -assertEquals(2, boom()); -assertEquals(3, boom()); -%OptimizeFunctionOnNextCall(boom); -assertEquals(4, boom()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659915b.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-659915b.js deleted file mode 100644 index 6fdb13f4919..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659915b.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - var x = 23; - function f() { return x; } - function g() { [x] = [x + 1]; } - function h() { g(); return x; } - - function boom() { return h() } - - assertEquals(24, boom()); - assertEquals(25, boom()); - assertEquals(26, boom()); - %OptimizeFunctionOnNextCall(boom); - assertEquals(27, boom()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659967.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-659967.js deleted file mode 100644 index 654f00de60c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-659967.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { null >> arguments; } - -f(); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-660379.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-660379.js deleted file mode 100644 index 84634628d6a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-660379.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function InlinedThrowAtEndOfTry() { - function g() { - %DeoptimizeFunction(f); - throw "boom"; - } - function f() { - try { - g(); // Right at the end of try. - } catch (e) { - assertEquals("boom", e) - } - } - assertDoesNotThrow(f); - assertDoesNotThrow(f); - %OptimizeFunctionOnNextCall(f); - assertDoesNotThrow(f); -})(); - -(function InlinedThrowInFrontOfTry() { - function g() { - %DeoptimizeFunction(f); - throw "boom"; - } - function f() { - g(); // Right in front of try. - try { - Math.random(); - } catch (e) { - assertUnreachable(); - } - } - assertThrows(f); - assertThrows(f); - %OptimizeFunctionOnNextCall(f); - assertThrows(f); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-661949.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-661949.js deleted file mode 100644 index e083cae349e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-661949.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var foo = (function() { - 'use asm'; - function foo() { ''[0]; } - return foo; -})(); - -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662367.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-662367.js deleted file mode 100644 index fcaf545427c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662367.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var zero = 0; - -(function ConstantFoldZeroDivZero() { - function f() { - return 0 / zero; - } - assertTrue(isNaN(f())); - assertTrue(isNaN(f())); - %OptimizeFunctionOnNextCall(f); - assertTrue(isNaN(f())); -})(); - -(function ConstantFoldMinusZeroDivZero() { - function f() { - return -0 / zero; - } - assertTrue(isNaN(f())); - assertTrue(isNaN(f())); - %OptimizeFunctionOnNextCall(f); - assertTrue(isNaN(f())); -})(); - -(function ConstantFoldNaNDivZero() { - function f() { - return NaN / 0; - } - assertTrue(isNaN(f())); - assertTrue(isNaN(f())); - %OptimizeFunctionOnNextCall(f); - assertTrue(isNaN(f())); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662410.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-662410.js deleted file mode 100644 index f1cbc6b8245..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662410.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g(v) { return v.constructor; } - -g({}); -g({}); - -function f() { - var i = 0; - do { - i = i + 1; - g(i); - } while (i < 1); -} - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662830.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-662830.js deleted file mode 100644 index 3126978d7db..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662830.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - %_DeoptimizeNow(); - throw 1; -} - -function g() { - try { f(); } catch(e) { } - for (var i = 0; i < 3; ++i) if (i === 1) %OptimizeOsr(); - %_DeoptimizeNow(); -} - -%OptimizeFunctionOnNextCall(g); -g(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662854.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-662854.js deleted file mode 100644 index ecfc990e13e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662854.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - typeof boom; - boom; -} - -assertThrows(()=>f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662907.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-662907.js deleted file mode 100644 index 3cc3b600e2f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-662907.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -(function() { - function foo() { - var a = new Array(); - a[0] = 10; - return a; - } - - assertEquals(1, foo().length); - - gc(); - gc(); - gc(); - gc(); - - // Change prototype elements from fast smi to slow elements dictionary. - // The validity cell is invalidated by the change of Array.prototype's - // map. - Array.prototype.__defineSetter__("0", function() {}); - - assertEquals(0, foo().length); -})(); - - -(function() { - function foo() { - var a = new Array(); - a[0] = 10; - return a; - } - - // Change prototype elements from fast smi to dictionary. - Array.prototype[123456789] = 42; - Array.prototype.length = 0; - - assertEquals(1, foo().length); - - gc(); - gc(); - gc(); - gc(); - - // Change prototype elements from dictionary to slow elements dictionary. - // The validity cell is invalidated by making the elements dictionary slow. - Array.prototype.__defineSetter__("0", function() {}); - - assertEquals(0, foo().length); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-663340.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-663340.js deleted file mode 100644 index 37d285dc73d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-663340.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var expected = undefined; - -function foo() { - var a = [0,,{}]; - a.shift(); - assertEquals(expected, a[0]); -} -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); - -expected = 42; -Array.prototype[0] = 153; -Array.prototype[1] = expected; -foo(); - -function bar() { - var a = [0,,{}]; - a.shift(); - assertEquals(expected, a[0]); -} -bar(); -bar(); -%OptimizeFunctionOnNextCall(bar); -bar(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-663402.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-663402.js deleted file mode 100644 index 5368bd6e804..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-663402.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var g_eval = eval; -function emit_f(size) { - var body = "function f(x) {" + - " if (x < 0) return x;" + - " var a = [1];" + - " if (x > 0) return ["; - for (var i = 0; i < size; i++) { - body += "0.1, "; - } - body += " ];" + - " return a;" + - "}"; - g_eval(body); -} - -// Length must be big enough to make the backing store's size not fit into -// a single instruction's immediate field (2^12). -var kLength = 701; -emit_f(kLength); -f(1); -f(1); -%OptimizeFunctionOnNextCall(f); -var a = f(1); - -// Allocating something else should not disturb |a|. -var b = new Object(); -for (var i = 0; i < kLength; i++) { - assertEquals(0.1, a[i]); -} - -// Allocating more should not crash. -for (var i = 0; i < 300; i++) { - f(1); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-663410.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-663410.js deleted file mode 100644 index 6d2a4877155..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-663410.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function alert(x) {}; -assertThrows( - 'Function("a=`","`,xss=1){alert(xss)")' -); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-663750.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-663750.js deleted file mode 100644 index 1b3b531a58b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-663750.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v = 0; -function foo(a) { - v = a; -} -this.x = 0; -delete x; - -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); -assertEquals(undefined, v); - -Object.freeze(this); - -foo(4); -foo(5); -%OptimizeFunctionOnNextCall(foo); -foo(6); -assertEquals(undefined, v); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664084.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-664084.js deleted file mode 100644 index 79e221e4955..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664084.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return +({} + 1); -} - -assertEquals(NaN, foo()); -assertEquals(NaN, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(NaN, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664469.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-664469.js deleted file mode 100644 index e1633911125..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664469.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a, i) { - a[i] = "object"; -} - -f("make it generic", 0); - -// Nearly kMaxRegularHeapObjectSize's worth of doubles. -var kLength = 500000 / 8; -var kValue = 0.1; -var a = new Array(kLength); -for (var i = 0; i < kLength; i++) { - a[i] = kValue; -} -f(a, 0); -for (var i = 1; i < kLength; i++) { - assertEquals(kValue, a[i]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664506.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-664506.js deleted file mode 100644 index b0bf5e7591d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664506.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --predictable --random-seed=-1109634722 - -gc(); -gc(); -assertEquals("[object Object]", Object.prototype.toString.call({})); -gc(); -assertEquals("[object Array]", Object.prototype.toString.call([])); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664802.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-664802.js deleted file mode 100644 index 3395f4c6763..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664802.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = {}; -o.__proto__ = new Proxy({}, {}); - -var m = new Map(); -m.set({}); -m.set(o); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664942.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-664942.js deleted file mode 100644 index 3b769905118..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664942.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return 'x'[0]; -} -foo(); -%OptimizeFunctionOnNextCall(foo); -assertEquals("x", foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664974.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-664974.js deleted file mode 100644 index 37ad4f9dc24..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-664974.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -for (var i = 0; i < 2000; i++) { - Object.prototype['X'+i] = true; -} - -var m = new Map(); -m.set(Object.prototype, 23); - -var o = {}; -m.set(o, 42); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-665587.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-665587.js deleted file mode 100644 index a9b3841218f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-665587.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -var a = new (function() { this[0] = 1 }); -function f() { - for (var i = 0; i < 4; ++i) { - var x = a[0]; - (function() { return x }); - if (i == 1) %OptimizeOsr(); - gc(); - } -} -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-665793.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-665793.js deleted file mode 100644 index d445d5194e8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-665793.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return 'x'[1]; -} -assertEquals(undefined, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-665886.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-665886.js deleted file mode 100644 index b3309c249f7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-665886.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[1].toLocaleString(); -delete Number.prototype.toLocaleString; -[1].toLocaleString(); -var o = {}; -o.__proto__ = { toString: Array.prototype.toString }; -o.toString(); -Number.prototype.arrayToString = Array.prototype.toString; -(42).arrayToString(); -var a = [7]; -a.toLocaleString(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-666308.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-666308.js deleted file mode 100644 index 5e0e3746bb9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-666308.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo() {} -foo.prototype = 1; -v = new foo(); -function bar() { return v instanceof foo; } -assertThrows(bar); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-666742.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-666742.js deleted file mode 100644 index d3fba617194..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-666742.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var p = {x:1}; -__proto__ = p; -assertEquals(x, 1); -__proto__ = {x:13}; -assertEquals(x, 13); -__proto__ = {x:42}; -p = null; -gc(); -assertEquals(x, 42); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-667689.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-667689.js deleted file mode 100644 index e83c40eeda6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-667689.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() {} -foo.__defineGetter__(undefined, function() {}) - -function bar() {} -function baz(x) { return x instanceof bar }; -%OptimizeFunctionOnNextCall(baz); -baz(); -Object.setPrototypeOf(bar, null); -bar[Symbol.hasInstance] = function() { return true }; -assertTrue(baz()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-668101.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-668101.js deleted file mode 100644 index 5645dce0711..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-668101.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a, i, v) { - a[i] = v; -} - -f("make it generic", 0, 0); - -var a = new Array(3); -// Fast properties. -f(a, "length", 2); -assertEquals(2, a.length); - -// Dictionary properties. -%OptimizeObjectForAddingMultipleProperties(a, 1); -f(a, "length", 1); -assertEquals(1, a.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-668414.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-668414.js deleted file mode 100644 index c37442081a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-668414.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testSmiArrayConcat() { - var result = [].concat([-12]); - - assertEquals(1, result.length); - assertEquals([-12], result); -})(); - -(function testDoubleArrayConcat() { - var result = [].concat([-1073741825]); - - assertEquals(1, result.length); - assertEquals([-1073741825], result); -})(); - -(function testSmiArrayNonConcatSpreadable() { - var array = [-10]; - array[Symbol.isConcatSpreadable] = false; - var result = [].concat(array); - - assertEquals(1, result.length); - assertEquals(1, result[0].length); - assertEquals([-10], result[0]); -})(); - -(function testDoubleArrayNonConcatSpreadable() { - var array = [-1073741825]; - array[Symbol.isConcatSpreadable] = false; - var result = [].concat(array); - - assertEquals(1, result.length); - assertEquals(1, result[0].length); - assertEquals([-1073741825], result[0]); -})(); - -Array.prototype[Symbol.isConcatSpreadable] = false; - - -(function testSmiArray() { - var result = [].concat([-12]); - - assertEquals(2, result.length); - assertEquals(0, result[0].length); - assertEquals(1, result[1].length); - assertEquals([-12], result[1]); -})(); - -(function testDoubleArray() { - var result = [].concat([-1073741825]); - - assertEquals(2, result.length); - assertEquals(0, result[0].length); - assertEquals(1, result[1].length); - assertEquals([-1073741825], result[1]); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-668795.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-668795.js deleted file mode 100644 index b85d222080c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-668795.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g() { - return g.arguments; -} - -function f() { - var result = "R:"; - for (var i = 0; i < 3; ++i) { - if (i == 1) %OptimizeOsr(); - result += g([1])[0]; - result += g([2])[0]; - } - return result; -} - -assertEquals("R:121212", f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-669411.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-669411.js deleted file mode 100644 index 469934f8ffb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-669411.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(o) { - o[5000000] = 0; -} -var o = Object.create(null); -f(o); -f(o); -f(o); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-669451.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-669451.js deleted file mode 100644 index 0bbc1c1a968..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-669451.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - var a = [,]; - a[0] = {} - a[0].toString = FAIL; -} -try { foo(); } catch (e) {} -try { foo(); } catch (e) {} -%OptimizeFunctionOnNextCall(foo); -try { foo(); } catch (e) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-669540.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-669540.js deleted file mode 100644 index d029d889342..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-669540.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f({ - [ - (function g() { - assertThrows(function(){ - print(eval("p")); - }, ReferenceError); - })() - ]: p -}) {}; - -f({}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-669850.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-669850.js deleted file mode 100644 index 50f5940f084..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-669850.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -eval('function f(a) { return [' + new Array(1 << 17) + ',a] }'); -assertEquals(23, f(23)[1 << 17]); -assertEquals(42, f(42)[1 << 17]); -%OptimizeFunctionOnNextCall(f); -assertEquals(65, f(65)[1 << 17]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-671576.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-671576.js deleted file mode 100644 index b9c7bccedea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-671576.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - for (var i of [NaN].keys()); -} - -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-672792.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-672792.js deleted file mode 100644 index d458f7c6d59..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-672792.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Generate a function {f} containing a large array literal of doubles. -eval("function f() { return [" + String("0.1,").repeat(65535) + "] }"); - -// Running the function once will initialize the boilerplate. -assertEquals(65535, f().length); - -// Running the function again will perform cloning. -assertEquals(65535, f().length); - -// Running the function as optimized code next. -%OptimizeFunctionOnNextCall(f); -assertEquals(65535, f().length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-673008.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-673008.js deleted file mode 100644 index 4e232fa99ca..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-673008.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = { - "33": true, - "-1": true -}; - -var strkeys = Object.keys(a).map(function(k) { return "" + k }); -var numkeys = Object.keys(a).map(function(k) { return +k }); -var keys = strkeys.concat(numkeys); - -keys.forEach(function(k) { - assertTrue(a.hasOwnProperty(k), - "property not found: " + k + "(" + (typeof k) + ")"); -}); - -var b = {}; -b.__proto__ = a; -keys.forEach(function(k) { - assertTrue(k in b, "property not found: " + k + "(" + (typeof k) + ")"); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-677757.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-677757.js deleted file mode 100644 index 044970c27b3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-677757.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -for (var i = 0; i < 50000; i++) { - ("Foo"[0] + "barbarbarbarbarbar")[0]; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-679202.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-679202.js deleted file mode 100644 index e4350224fd5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-679202.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var x = Object.prototype; - -function f() { return x <= x; } - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-679378.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-679378.js deleted file mode 100644 index fded13fc815..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-679378.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var x = {}; -x.__defineGetter__('0', () => 0); -x.a = {v: 1.51}; - -var y = {}; -y.a = {u:"OK"}; - -function foo(o) { return o.a.u; } -foo(y); -foo(y); -foo(x); -%OptimizeFunctionOnNextCall(foo); -%DebugPrint(foo(x)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-679841.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-679841.js deleted file mode 100644 index a21c9f218cb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-679841.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(-1e-301).toString(2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-681983.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-681983.js deleted file mode 100644 index eab161c97ca..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-681983.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g(a) { - a = a >>> 0; - %_DeoptimizeNow(); - return a; -} - -function f() { - return g(-1); -} - -%OptimizeFunctionOnNextCall(f); -assertEquals(4294967295, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-682194.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-682194.js deleted file mode 100644 index 62a4347eefe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-682194.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var proxy = new Proxy([], { - defineProperty() { - w.length = 1; // shorten the array so the backstore pointer is relocated - gc(); // force gc to move the array's elements backstore - return Object.defineProperty.apply(this, arguments); - } -}); - -class MyArray extends Array { - // custom constructor which returns a proxy object - static get[Symbol.species](){ - return function() { - return proxy; - } - }; -} - -var w = new MyArray(100); -w[1] = 0.1; -w[2] = 0.1; - -var result = Array.prototype.concat.call(w); - -assertEquals(undefined, result[0]); -assertEquals(0.1, result[1]); - -for (var i = 2; i < 200; i++) { - assertEquals(undefined, result[i]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-683581.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-683581.js deleted file mode 100644 index 6b6c54b4a8b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-683581.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var v = 0; -function foo() { - for (var i = 0; i < 70000; i++) { - v += i; - } - eval(); -} -foo() -assertEquals(2449965000, v); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-683667.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-683667.js deleted file mode 100644 index adba5221297..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-683667.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --verify-heap - -var realm = Realm.create(); -var g = Realm.global(realm); -var obj = {x: 0, g: g}; - -// Navigation will replace JSGlobalObject behind the JSGlobalProxy g and -// therefore will change the g's map. The old map must be marked as non-stable. -Realm.navigate(realm); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-684208.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-684208.js deleted file mode 100644 index 7055a7eb821..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-684208.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - var a = [1, 2.3, /*hole*/, 4.2]; - %_DeoptimizeNow(); - return a[2]; -} -assertSame(undefined, foo()); -assertSame(undefined, foo()); -%OptimizeFunctionOnNextCall(foo) -assertSame(undefined, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685050.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-685050.js deleted file mode 100644 index 2560e2ee613..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685050.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(a) { - a[0] = 0; - a[1] = 0; -} - -var a = new Int32Array(2); -bar([1, 2, 3]); -function foo() { - bar([1, 2, 3]); - bar(a); -} -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685504.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-685504.js deleted file mode 100644 index 83975bfd6de..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685504.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var v2 = 1073741823; -var v13 = {}; -function f1(a, b) { - var v4 = a + b; - var v1 = v4.substring(20); - v2[v4]; - return v1; -} - -v5 = f1("abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz"); -function f8(name, input, regexp) { - var v14 = input.match(regexp); - RegExp["$'"]} -f8("CaptureGlobal", v5, v13, []["anama"]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685506.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-685506.js deleted file mode 100644 index 1be9c02bc06..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685506.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --noconcurrent-recompilation - -var a = {}; - -function init() { - a = []; - for (var __v_1 = 0; __v_1 < 10016; __v_1++) { - a.push({}); - } - a.map(function() {}) + ""; -} -init(); - -function foo() { - a.push((a + "!", 23)); - return a; -} -assertEquals(23, foo()[10016]); -assertEquals(23, foo()[10017]); -assertEquals(23, foo()[10018]); -%OptimizeFunctionOnNextCall(foo); -assertEquals(23, foo()[10019]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685634.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-685634.js deleted file mode 100644 index 2032744539e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685634.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; - -function foo(f) { return f.apply(this, arguments); } -function bar() {} - -foo(bar); -%OptimizeFunctionOnNextCall(foo); -foo(bar); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685680.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-685680.js deleted file mode 100644 index 3c23e414cbc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685680.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(s) { - s = s + '0123456789012'; - return s.indexOf('0'); -} - -assertEquals(0, foo('0')); -assertEquals(0, foo('0')); -%OptimizeFunctionOnNextCall(foo); -assertEquals(0, foo('0')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685965.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-685965.js deleted file mode 100644 index 1f2c6c8536c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-685965.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __f_0(a) { - var __v_3 = a + undefined; - var __v_0 = __v_3.substring(0, 20); - var __v_1 = {}; - __v_1[__v_3]; - return __v_0; -} -__v_4 = __f_0( "abcdefghijklmnopqrstuvwxyz"); -assertEquals("bcdefg", __v_4.substring(7, 1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-686102.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-686102.js deleted file mode 100644 index 13f45035418..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-686102.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = []; -Object.freeze(a); -function foo() { - return a.length; -} -assertEquals(0, foo()); -assertEquals(0, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(0, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-686427.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-686427.js deleted file mode 100644 index b1827a4d680..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-686427.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a, base) { - a[base + 4] = 23; - return a; -} -var i = 1073741824; -assertEquals(23, f({}, 1)[1 + 4]); -assertEquals(23, f([], 2)[2 + 4]); -%OptimizeFunctionOnNextCall(f); -assertEquals(23, f({}, i)[i + 4]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-686737.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-686737.js deleted file mode 100644 index aab7113c6af..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-686737.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Object.prototype.__defineGetter__(0, () => { throw Error() }); -var a = [,0.1]; -function foo(i) { a[i]; } -foo(1); -foo(1); -%OptimizeFunctionOnNextCall(foo); -assertThrows(() => foo(0), Error); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-687029.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-687029.js deleted file mode 100644 index c3ca01fad17..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-687029.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - x = Math.clz32(x); - return "a".indexOf("a", x); -} -foo(1); -foo(1); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-687063.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-687063.js deleted file mode 100644 index 8c579331fbc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-687063.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Collect the actual properties looked up on the Proxy. -const actual = []; - -// Perform a relational comparison with a Proxy on the right hand -// side and a Symbol which cannot be turned into a Number on the -// left hand side. -function foo() { - actual.length = 0; - const lhs = Symbol(); - const rhs = new Proxy({}, { - get: function(target, property, receiver) { - actual.push(property); - return undefined; - } - }); - return lhs < rhs; -} - -assertThrows(foo, TypeError); -assertEquals([Symbol.toPrimitive, 'valueOf', 'toString'], actual); -assertThrows(foo, TypeError); -assertEquals([Symbol.toPrimitive, 'valueOf', 'toString'], actual); -%OptimizeFunctionOnNextCall(foo); -assertThrows(foo, TypeError); -assertEquals([Symbol.toPrimitive, 'valueOf', 'toString'], actual); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-687990.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-687990.js deleted file mode 100644 index 24100854c4c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-687990.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var x = 1; - -var foo = (function() { - "use asm"; - var o = this; - return function() { o.x = null; } -})(); - -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-688567.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-688567.js deleted file mode 100644 index 5f66bc0d774..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-688567.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -{ - function a(){} - function b(){} - function c(){} - function d(){} - function e(){} - function f(){} - function g(){} - function h(){} -} - -var names = Object.getOwnPropertyNames(this); -names = names.filter(n => Array.prototype.includes.call("abcdefgh", n)); -assertEquals("a,b,c,d,e,f,g,h", names.join()); - -{ - { - let j; - { - // This j will not be hoisted - function j(){} - } - } - function i(){} - - // but this j will be. - function j(){} -} - -var names = Object.getOwnPropertyNames(this); -names = names.filter(n => Array.prototype.includes.call("ij", n)); -assertEquals("i,j", names.join()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-688734.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-688734.js deleted file mode 100644 index 90acd5ddd0e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-688734.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo(a) { - a[0] = 3; -} -var v = [,6]; -v.__proto__ = []; -foo(v); -delete v[0]; -var count = 0; -v.__proto__.__defineSetter__(0, function() { count++; }); -foo([1,,,2]); -foo(v); -assertEquals(1, count); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-691323.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-691323.js deleted file mode 100644 index 5002ceaf206..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-691323.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -var buffer = new ArrayBuffer(0x100); -var array = new Uint8Array(buffer).fill(55); -var tmp = {}; -tmp[Symbol.toPrimitive] = function () { - %ArrayBufferDetach(array.buffer) - return 0; -}; - - -assertEquals(-1, Array.prototype.indexOf.call(array, 0x00, tmp)); - -buffer = new ArrayBuffer(0x100); -array = new Uint8Array(buffer).fill(55); -tmp = {}; -tmp[Symbol.toPrimitive] = function () { - %ArrayBufferDetach(array.buffer) - return 0; -}; - - -assertEquals(false, Array.prototype.includes.call(array, 0x00, tmp)); - -buffer = new ArrayBuffer(0x100); -array = new Uint8Array(buffer).fill(55); -tmp = {}; -tmp[Symbol.toPrimitive] = function () { - %ArrayBufferDetach(array.buffer) - return 0; -}; -assertEquals(true, Array.prototype.includes.call(array, undefined, tmp)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-691687.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-691687.js deleted file mode 100644 index 1d058749192..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-691687.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --always-opt --no-lazy --turbo-filter=whatever - -function g() { eval() } -with ({}) { } -f = ({x}) => x; -assertEquals(42, f({x: 42})); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-694416.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-694416.js deleted file mode 100644 index 14303f25bfe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-694416.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var good = 23; -var boom = 42; - -function foo(name) { - return this[name]; -} - -assertEquals(23, foo('good')); -assertEquals(23, foo('good')); -%OptimizeFunctionOnNextCall(foo); -assertEquals(42, foo('boom')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-694709.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-694709.js deleted file mode 100644 index 407b47732c6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-694709.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(primitive) { - return primitive.__proto__; -} -assertEquals(Symbol.prototype, f(Symbol())); -assertEquals(Symbol.prototype, f(Symbol())); -%OptimizeFunctionOnNextCall(f); -assertEquals(Symbol.prototype, f(Symbol())); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-696622.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-696622.js deleted file mode 100644 index 5b8d2e3ffe9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-696622.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class C {} -class D extends C { constructor() { super(...unresolved, 75) } } -D.__proto__ = null; - -assertThrows(() => new D(), TypeError); -assertThrows(() => new D(), TypeError); -%OptimizeFunctionOnNextCall(D); -assertThrows(() => new D(), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-697017.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-697017.js deleted file mode 100644 index adfaa3b3fd7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-697017.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -for (var i = 0; i < 100; i++) { - print(i); - (Int32Array)["abc" + i] = i; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-698607.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-698607.js deleted file mode 100644 index c9df4257f14..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-698607.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function assertSame(expected, found) { - if (found === expected) { - } else if ((expected !== expected) && (found !== found)) { - } -} - -function foo() { - var x = {var: 0.5}; - assertSame(x, x.val); - return () => x; -} - -foo(1); -foo(1); -%OptimizeFunctionOnNextCall(foo); -foo(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-699282.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-699282.js deleted file mode 100644 index 726b1f7f320..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-699282.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v = 1; -function foo() { return Math.floor(-v / 125); } -assertEquals(-1, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(-1, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-700678.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-700678.js deleted file mode 100644 index 1a9623ac4ea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-700678.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testNonConfigurableProperty() { - function ownKeys(x) { return ["23", "length"]; } - var target = []; - var proxy = new Proxy(target, {ownKeys:ownKeys}); - Object.defineProperty(target, "23", {value:true}); - assertEquals(["23", "length"], Object.getOwnPropertyNames(proxy)); -})(); - -(function testPreventedExtension() { - function ownKeys(x) { return ["42", "length"]; } - var target = []; - var proxy = new Proxy(target, {ownKeys:ownKeys}); - target[42] = true; - Object.preventExtensions(target); - assertEquals(["42", "length"], Object.getOwnPropertyNames(proxy)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-700733.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-700733.js deleted file mode 100644 index 0a130fa34be..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-700733.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap --expose-gc - -(function test_keyed_load() { - var smi_arr = [0]; - smi_arr.load = 42; - - var double_arr = [0.5]; - double_arr.load = 42; - - var obj_arr = [{}]; - obj_arr.load = 42; - - var arrs = [smi_arr, double_arr, obj_arr]; - - var tmp; - function do_keyed_load(arrs) { - for (var i = 0; i < arrs.length; i++) { - var arr = arrs[i]; - tmp = arr[0]; - } - } - - var obj = {}; - obj.load_boom = smi_arr; - - do_keyed_load(arrs); - do_keyed_load(arrs); - %OptimizeFunctionOnNextCall(do_keyed_load); - do_keyed_load(arrs); - - gc(); -})(); - -(function test_keyed_store() { - var smi_arr = [0]; - smi_arr.store = 42; - - var double_arr = [0.5]; - double_arr.store = 42; - - var obj_arr = [{}]; - obj_arr.store = 42; - - var arrs = [smi_arr, double_arr, obj_arr]; - - function do_keyed_store(arrs) { - for (var i = 0; i < arrs.length; i++) { - var arr = arrs[i]; - arr[0] = 0; - } - } - - var obj = {}; - obj.store_boom = smi_arr; - - do_keyed_store(arrs); - do_keyed_store(arrs); - %OptimizeFunctionOnNextCall(do_keyed_store); - do_keyed_store(arrs); - - gc(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-1.js deleted file mode 100644 index 6f0190660a9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-1.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var arr = []; -for (var i = 0; i < 100000; i++) arr[i] = 0; -var fromIndex = {valueOf: function() { arr.length = 0; }}; -arr.indexOf(1, fromIndex); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-2.js deleted file mode 100644 index a4bb18deefe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-2.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var arr = []; -for (var i = 0; i < 100000; i++) arr[i] = 0.1; -var fromIndex = {valueOf: function() { arr.length = 0; }}; -arr.indexOf(1.1, fromIndex); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-3.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-3.js deleted file mode 100644 index f78fdc001e2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702058-3.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var arr = []; -for (var i = 0; i < 100000; i++) arr[i] = []; -var fromIndex = {valueOf: function() { arr.length = 0; }}; -arr.indexOf({}, fromIndex); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702793.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-702793.js deleted file mode 100644 index a2982bce9f1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702793.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -prop = "property"; - -function f(o) { - return o.prop; -} - -f(this); -f(this); - -delete this.prop; - -gc(); -assertEquals(undefined, f(this)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702798.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-702798.js deleted file mode 100644 index 861271a28e5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-702798.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Access any property that's also available on the global of the other realm. -this.__defineGetter__("Object", ()=>0); -__proto__ = Realm.global(Realm.create()); -Object; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-703610.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-703610.js deleted file mode 100644 index a8901d56d10..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-703610.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function fun() {}; -fun.prototype = 42; -new fun(); -function f() { - return fun.prototype; -} -assertEquals(42, f()); -assertEquals(42, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(42, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-706642.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-706642.js deleted file mode 100644 index 4467c684951..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-706642.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class A extends Object { - constructor(arg) { - super(); - superclass_counter++; - if (superclass_counter === 3) { - return 1; - } - } -} - -class B extends A { - constructor() { - let x = super(123); - return x.a; - } -} - -var superclass_counter = 0; -var observer = new Proxy(A, { - get(target, property, receiver) { - if (property === 'prototype') { - %DeoptimizeFunction(B); - } - return Reflect.get(target, property, receiver); - } -}); - -Reflect.construct(B, [], observer); -Reflect.construct(B, [], observer); -%OptimizeFunctionOnNextCall(B); -assertThrows(() => Reflect.construct(B, [], observer), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-707580.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-707580.js deleted file mode 100644 index 37d13d219f6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-707580.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var thrower = { [Symbol.toPrimitive] : function() { throw "I was called!" } }; -var heap_number = 4.2; -var smi_number = 23; - -assertThrows(() => heap_number.hasOwnProperty(thrower)); -assertThrows(() => smi_number.hasOwnProperty(thrower)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-708050-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-708050-1.js deleted file mode 100644 index be26e10c849..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-708050-1.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v = {} - -function foo() { - v[0] = 5; - v[-0] = 27; - return v[0]; -} - -assertEquals(27, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(27, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-708050-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-708050-2.js deleted file mode 100644 index a7d9b29c2eb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-708050-2.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v = []; - -function foo() { - v[0] = 5; - v[-0] = 27; - return v[0]; -} - -assertEquals(27, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(27, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-709537.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-709537.js deleted file mode 100644 index 088c65b3320..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-709537.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return { 0: {}, x: {} }; -} -var ref = foo(); -assertEquals(ref, foo()); -assertEquals(ref, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(ref, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-709753.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-709753.js deleted file mode 100644 index e4d4d4ed37f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-709753.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a, i) { a[i].x; } - -var a = [,0.1]; -foo(a, 1); -foo(a, 1); -%OptimizeFunctionOnNextCall(foo); -assertThrows(() => foo(a, 0), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-711166.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-711166.js deleted file mode 100644 index 7f4acb963da..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-711166.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -'use strict' -function g() { - var x = 1; - try { undefined.x } catch (e) { x = e; } - (function() { x }); - return x; -} -function f(a) { - var args = arguments; - assertInstanceof(g(), TypeError); - return args.length; -} -assertEquals(1, f(0)); -assertEquals(1, f(0)); -%OptimizeFunctionOnNextCall(f); -assertEquals(1, f(0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-712802.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-712802.js deleted file mode 100644 index e23519e179b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-712802.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(...args) { return Array.isArray(args); } - -assertTrue(foo()); -assertTrue(foo()); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-714696.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-714696.js deleted file mode 100644 index ad5925478d8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-714696.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -if (this.Intl) { - new Intl.v8BreakIterator(); - new Intl.DateTimeFormat(); - try { console.log({ toString: function() { throw 1; }}); } catch (e) {} - new Intl.v8BreakIterator(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-714872.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-714872.js deleted file mode 100644 index 88dee1401ed..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-714872.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() {} -f.prototype = 1; -f.foo = 1; -f.prototype = {}; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-714971.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-714971.js deleted file mode 100644 index d72c7a0fad6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-714971.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Module(stdlib, foreign, heap) { - "use asm"; - var a = new stdlib.Int16Array(heap); - function f() { - return a[23 >> -1]; - } - return { f:f }; -} -var b = new ArrayBuffer(1024); -var m = Module(this, {}, b); -new Int16Array(b)[0] = 42; -assertEquals(42, m.f()); -assertFalse(%IsAsmWasmCode(Module)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-714981.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-714981.js deleted file mode 100644 index e6a664d4224..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-714981.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function addProperties(o) -{ - o.p1 = 1; - o.p2 = 2; - o.p3 = 3; - o.p4 = 4; - o.p5 = 5; - o.p6 = 6; - o.p7 = 7; - o.p8 = 8; -} -function removeProperties(o) -{ - delete o.p8; - delete o.p7; - delete o.p6; - delete o.p5; -} -function makeO() -{ - var o = { }; - addProperties(o); - removeProperties(o); - addProperties(o); -} -for (var i = 0; i < 3; ++i) { - o = makeO(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-715151.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-715151.js deleted file mode 100644 index c0b2c5dba8c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-715151.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap - -function foo() { - var a = [0]; - Object.preventExtensions(a); - return a.pop(); -} -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-715404.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-715404.js deleted file mode 100644 index 8ff2d00ba03..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-715404.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { Array(-1); } -assertThrows(foo, RangeError); -assertThrows(foo, RangeError); -%OptimizeFunctionOnNextCall(foo); -assertThrows(foo, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-715455.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-715455.js deleted file mode 100644 index 87b240227d4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-715455.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function MODULE() { - "use asm"; - function f() { - bogus_function_table[0 & LIMIT](); - } - return { f:f }; -} - -var bogus_function_table = [ Object ]; -var test_set = [ 0x3fffffff, 0x7fffffff, 0xffffffff ]; -for (var i = 0; i < test_set.length; ++i) { - bogus_function_table[i] = Object; - var src = MODULE.toString(); - src = src.replace(/MODULE/g, "Module" + i); - src = src.replace(/LIMIT/g, test_set[i]); - var module = eval("(" + src + ")"); - module(this).f(); - assertFalse(%IsAsmWasmCode(module)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-715862.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-715862.js deleted file mode 100644 index 60e836ddc42..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-715862.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap - -function f(a) { - a.x = 0; - a[1] = 0.1; - a.x = {}; -} - -f(new Array(1)); -f(new Array()); - -%OptimizeFunctionOnNextCall(f); -f(new Array(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-716520.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-716520.js deleted file mode 100644 index 5058c94a6b2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-716520.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var __v_0 = {}; -var __v_8 = this; -var __v_11 = -1073741825; -__v_1 = this; -try { -} catch(e) {; } - function __f_4() {} - __f_4.prototype = __v_0; - function __f_9() { return new __f_4().v; } - __f_9(); __f_9(); -try { -(function() { -})(); -} catch(e) {; } - Object.assign(__v_0, __v_1, __v_0); -(function() { -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-716804.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-716804.js deleted file mode 100644 index 181a3d6c681..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-716804.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var v = []; -v.__proto__ = function() {}; -v.prototype; - -var v = []; -v.__proto__ = new Error(); -v.stack; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-716912.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-716912.js deleted file mode 100644 index ca1663d61a9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-716912.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --invoke-weak-callbacks - -function __f_6() { -this.a4 = {}; -} -__v_6 = new __f_6(); -__v_6.prototype = __v_6; -__v_6 = new __f_6(); -gc(); -gc(); - -buf = new ArrayBuffer(8); -__v_8 = new Int32Array(buf); -__v_9 = new Float64Array(buf); - -__v_8[0] = 1; -__v_6.a4 = {a: 0}; -delete __v_6.a4; -__v_6.boom = __v_9[0]; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-718779.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-718779.js deleted file mode 100644 index e62c10729f8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-718779.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __f_1() -{ - __v_1.p2 = 2147483648; - __v_1.p3 = 3; - __v_1.p4 = 4; - __v_1.p5 = 2147483648; - __v_1.p6 = 6; -} -function __f_2() -{ - delete __v_1.p6; - delete __v_1.p5; -} -var __v_1 = { }; -__f_1(__v_1); -__f_2(__v_1); -__f_1(__v_1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-719384.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-719384.js deleted file mode 100644 index 8b6a8385b01..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-719384.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestThrowingObserver() { - function Module(stdlib, foreign) { - "use asm"; - var x = foreign.x | 0; - function f() {} - return { f:f }; - } - var observer = { get x() { throw new Error() } }; - assertThrows(() => Module(this, observer)); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestMutatingObserver() { - function Module(stdlib, foreign) { - "use asm"; - var x = +foreign.x; - var PI = stdlib.Math.PI; - function f() { - return +(PI + x); - } - return { f:f }; - } - var stdlib = { Math : { PI : Math.PI } }; - var observer = { get x() { stdlib.Math.PI = 23; return 42; } }; - var m = Module(stdlib, observer); - assertFalse(%IsAsmWasmCode(Module)); - assertEquals(65, m.f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-719479.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-719479.js deleted file mode 100644 index dac49de3b7c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-719479.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function baz(a, b) { - for (var i = 0; i < a.length; i++) { - if (a[i], b[i]) return false; - } -} -function bar(expected, found) { - if (!baz(found, expected)) { - } -}; -bar([{}, 6, NaN], [1.8, , NaN]); -function foo() { - var a = [1,2,3,4]; - bar(a.length, a.length); -} -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-721835.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-721835.js deleted file mode 100644 index 80f99e6dd59..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-721835.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -(function TestValidationFailureInForStatement() { - function Module() { - "use asm" - function f() { - var a = 0; - for (a = b; 0; 0) {}; - return 0; - } - return { f:f }; - } - assertThrows(() => Module().f(), ReferenceError); - assertFalse(%IsAsmWasmCode(Module)); -})(); - -(function TestForStatementInVoidFunction() { - function Module() { - "use asm" - function f() { - for (1; 0; 0) {}; - } - return { f:f }; - } - assertDoesNotThrow(() => Module().f()); - assertTrue(%IsAsmWasmCode(Module)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-722348.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-722348.js deleted file mode 100644 index 6c99e70e438..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-722348.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Module(global, env) { - "use asm"; - var unused_fun = env.fun; - function f() {} - return { f:f } -} -assertThrows(() => Module(), TypeError); -assertFalse(%IsAsmWasmCode(Module)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-722756.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-722756.js deleted file mode 100644 index b4d82ad9391..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-722756.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var array = [[{}], [1.1]]; - -function transition() { - for(var i = 0; i < array.length; i++){ - var arr = array[i]; - arr[0] = {}; - } -} - -var double_arr2 = [1.1,2.2]; - -var flag = 0; -function swap() { - try {} catch(e) {} // Prevent Crankshaft from inlining this. - if (flag == 1) { - array[1] = double_arr2; - } -} - -var expected = 6.176516726456e-312; -function f(){ - swap(); - double_arr2[0] = 1; - transition(); - double_arr2[1] = expected; -} - -for(var i = 0; i < 3; i++) { - f(); -} -%OptimizeFunctionOnNextCall(f); -flag = 1; -f(); -assertEquals(expected, double_arr2[1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-722783.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-722783.js deleted file mode 100644 index 32ffd4e33c9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-722783.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function set_x(v) { - x = v; -} - -var o = {}; -set_x(o); -set_x(o); -assertEquals(o, x); -Object.defineProperty(this, "x", { value:5, writable:false, configurable:true }); -assertEquals(5, x); -set_x(o); -set_x(o); -assertEquals(5, x); -Object.defineProperty(this, "x", { value:42, writable:true, configurable:true }); -assertEquals(42, x); -set_x(o); -assertEquals(o, x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-722871.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-722871.js deleted file mode 100644 index e71f083be6b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-722871.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -let sab = new SharedArrayBuffer(10 * 4); -let memory = new Int32Array(sab); -let workers = []; -let runningWorkers = 0; - -function startWorker(script) { - let worker = new Worker(script, {type: 'string'}); - worker.done = false; - worker.idx = workers.length; - workers.push(worker); - worker.postMessage(memory); - ++runningWorkers; -}; - -let shared = ` - function wait(memory, index, waitCondition, wakeCondition) { - while (memory[index] == waitCondition) { - var result = Atomics.wait(memory, index, waitCondition); - switch (result) { - case 'not-equal': - case 'ok': - break; - default: - postMessage('Error: bad result from wait: ' + result); - break; - } - var value = memory[index]; - if (value != wakeCondition) { - postMessage( - 'Error: wait returned not-equal but the memory has a bad value: ' + - value); - } - } - var value = memory[index]; - if (value != wakeCondition) { - postMessage( - 'Error: done waiting but the memory has a bad value: ' + value); - } - } - - function wake(memory, index) { - var result = Atomics.wake(memory, index, 1); - if (result != 0 && result != 1) { - postMessage('Error: bad result from wake: ' + result); - } - } -`; - -let worker1 = startWorker(shared + ` - onmessage = function(msg) { - let memory = msg; - const didStartIdx = 0; - const shouldGoIdx = 1; - const didEndIdx = 2; - - postMessage("started"); - postMessage("memory: " + memory); - wait(memory, didStartIdx, 0, 1); - memory[shouldGoIdx] = 1; - wake(memory, shouldGoIdx); - wait(memory, didEndIdx, 0, 1); - postMessage("memory: " + memory); - postMessage("done"); - }; -`); - -let worker2 = startWorker(shared + ` - onmessage = function(msg) { - let memory = msg; - const didStartIdx = 0; - const shouldGoIdx = 1; - const didEndIdx = 2; - - postMessage("started"); - postMessage("memory: " + memory); - Atomics.store(memory, didStartIdx, 1); - wake(memory, didStartIdx); - wait(memory, shouldGoIdx, 0, 1); - Atomics.store(memory, didEndIdx, 1); - wake(memory, didEndIdx, 1); - postMessage("memory: " + memory); - postMessage("done"); - }; -`); - -let running = true; -while (running) { - for (let worker of workers) { - if (worker.done) continue; - - let msg = worker.getMessage(); - if (msg) { - switch (msg) { - case "done": - if (worker.done === false) { - print("worker #" + worker.idx + " done."); - worker.done = true; - if (--runningWorkers === 0) { - running = false; - } - } - break; - - default: - print("msg from worker #" + worker.idx + ": " + msg); - break; - } - } - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-723132.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-723132.js deleted file mode 100644 index 99189f6f218..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-723132.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function outer() { - function* generator() { - let arrow = () => { - assertSame(expectedReceiver, this); - assertEquals(42, arguments[0]); - }; - arrow(); - } - generator.call(this, 42).next(); -} -let expectedReceiver = {}; -outer.call(expectedReceiver); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-723455.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-723455.js deleted file mode 100644 index 85f5e3c1d5d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-723455.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap - -function f(a) { - a.x = 0; - a[0] = 0.1; - a.x = {}; -} - -f(new Array(1)); -f(new Array(1)); -f(new Array()); - -%OptimizeFunctionOnNextCall(f); -f(new Array(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-724153.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-724153.js deleted file mode 100644 index e167bec2f5a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-724153.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-turbo-verify - -(function TestParameterLimit() { - var src = '(function f(a,'; - for (var i = 0; i < 65534 - 2; i++) { - src += 'b' + i + ','; - } - src += 'c) { return a + c })'; - var f = eval(src); - assertEquals(NaN, f(1)); - assertEquals(NaN, f(2)); - %OptimizeFunctionOnNextCall(f); - assertEquals(NaN, f(3)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-724608.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-724608.js deleted file mode 100644 index cd91211f072..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-724608.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - return {['p']: 0, x}; -} -foo(); -var a = {['p']: ''}; -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-725201.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-725201.js deleted file mode 100644 index c540b6dffc8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-725201.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function __f_1() { - function __f_2() { - Array.prototype.__proto__ = { 77e4 : null }; - } - __f_2(); - %OptimizeFunctionOnNextCall(__f_2); - __f_2(); -} -try { -__f_1(); -} catch(e) {; } -for (var __v_6 in [(1.2)]) { } - -%HeapObjectVerify([(1.2)]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-725537.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-725537.js deleted file mode 100644 index ed72d54a947..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-725537.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --verify-heap - -const AsyncFunction = async function(){}.constructor; -class MyAsync extends AsyncFunction {} -var af = new MyAsync(); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-72736.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-72736.js deleted file mode 100644 index 4b4b145759e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-72736.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See http://crbug.com/72736 - -// This tests that Object.defineProperty actually allows to change the value of -// a non-writable property if configurable is true. - -var obj = {}; -Object.defineProperty(obj, 'foo', { value: 10, configurable: true }); -assertEquals(obj.foo, 10); -Object.defineProperty(obj, 'foo', { value: 20, configurable: true }); -assertEquals(obj.foo, 20); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-728813.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-728813.js deleted file mode 100644 index b5a8a997ded..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-728813.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var p = new Proxy({}, { - has: function () { throw "nope"; } -}); -p.length = 2; -assertThrows(() => Array.prototype.indexOf.call(p)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-729573-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-729573-1.js deleted file mode 100644 index 1b596abe2f7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-729573-1.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo() { - var a = foo.bind(this); - %DeoptimizeNow(); - if (!a) return a; - return 0; - } - - assertEquals(0, foo()); - assertEquals(0, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo()); -})(); - -(function() { - "use strict"; - - function foo() { - var a = foo.bind(this); - %DeoptimizeNow(); - if (!a) return a; - return 0; - } - - assertEquals(0, foo()); - assertEquals(0, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo()); -})(); - -(function() { - function foo() { - var a = foo.bind(this); - %DeoptimizeNow(); - if (!a) return a; - return 0; - } - foo.prototype = {custom: "prototype"}; - - assertEquals(0, foo()); - assertEquals(0, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo()); -})(); - -(function() { - "use strict"; - - function foo() { - var a = foo.bind(this); - %DeoptimizeNow(); - if (!a) return a; - return 0; - } - foo.prototype = {custom: "prototype"}; - - assertEquals(0, foo()); - assertEquals(0, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0, foo()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-729573-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-729573-2.js deleted file mode 100644 index 45486ec2a30..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-729573-2.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(x) { - "use strict"; - return this + x; -} - -function foo(f) { - var a = bar.bind(42, 1); - return f() ? 0 : a; -} - -function t() { return true; } - -assertEquals(0, foo(t)); -assertEquals(0, foo(t)); -%OptimizeFunctionOnNextCall(foo); -var a = foo(_ => false); -assertEquals(43, a()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-729597.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-729597.js deleted file mode 100644 index b4c54e8e885..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-729597.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --verify-heap - -function __f_3(f) { - arguments.__defineGetter__('length', f); - return arguments; -} -function __f_4() { return "boom"; } - -__v_4 = []; -__v_13 = ""; - -for (var i = 0; i < 12800; ++i) { - __v_13 += __v_4.__proto__ = __f_3(__f_4); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-731193.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-731193.js deleted file mode 100644 index 6c1c088ce13..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-731193.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { -} - -// Make prototype of f go dictionary-mode. -for (var i = 0; i < 10000; i++) { - f.prototype["b" + i] = 1; -} - -var o = new f(); - -function access(o, k) { - return o[k]; -} - -// Create a thin string. -var p = "b"; -p += 10001; - -assertEquals(undefined, access(o, p)); -assertEquals(undefined, access(o, p)); -assertEquals(undefined, access(o, p)); -f.prototype[p] = 100; -assertEquals(100, access(o, p)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-732169.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-732169.js deleted file mode 100644 index 41dc9d2f382..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-732169.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestGeneratorMaterialization() { - function* f([x]) { yield x } - // No warm-up of {f} to trigger soft deopt. - %OptimizeFunctionOnNextCall(f); - var gen = f([23]); - assertEquals("[object Generator]", gen.toString()); - assertEquals({ done:false, value:23 }, gen.next()); - assertEquals({ done:true, value:undefined }, gen.next()); -})(); - -(function TestGeneratorMaterializationWithProperties() { - function* f(x = (%_DeoptimizeNow(), 23)) { yield x } - function g() { - var gen = f(); - gen.p = 42; - return gen; - } - function h() { f() } - // Enough warm-up to make {p} an in-object property. - for (var i = 0; i < 100; ++i) { g(); h(); } - %OptimizeFunctionOnNextCall(h); - h(); // In {h} the generator does not escape. -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-734051.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-734051.js deleted file mode 100644 index 2655db08a7e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-734051.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function TestMutableHeapNumberLiteral() { - var data = { a: 0, b: 0 }; - data.a += 0.1; - assertEquals(0.1, data.a); - assertEquals(0, data.b); -}; -TestMutableHeapNumberLiteral(); -TestMutableHeapNumberLiteral(); -TestMutableHeapNumberLiteral(); -TestMutableHeapNumberLiteral(); -TestMutableHeapNumberLiteral(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-734162.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-734162.js deleted file mode 100644 index 24ea1f06f5e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-734162.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -(function TestSmi() { - var v_0 = {}; - function f_0(constructor, closure) { - var v_2 = { value: 0 }; - v_4 = closure(constructor, 1073741823, v_0, v_2); - assertEquals(1, v_2.value); - } - function f_1(constructor, val, deopt, v_2) { - if (!new constructor(val, deopt, v_2)) { - } - } - function f_10(constructor) { - f_0(constructor, f_1); - f_0(constructor, f_1); - f_0(constructor, f_1); - } - function f_12(val, deopt, v_2) { - v_2.value++; - } - f_10(f_12); -})(); - -(function TestHeapNumber() { - var v_0 = {}; - function f_0(constructor, closure) { - var v_2 = { value: 1.5 }; - v_4 = closure(constructor, 1073741823, v_0, v_2); - assertEquals(2.5, v_2.value); - } - function f_1(constructor, val, deopt, v_2) { - if (!new constructor(val, deopt, v_2)) { - } - } - function f_10(constructor) { - f_0(constructor, f_1); - f_0(constructor, f_1); - f_0(constructor, f_1); - } - function f_12(val, deopt, v_2) { - v_2.value++; - } - f_10(f_12); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-736451.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-736451.js deleted file mode 100644 index 3f70fe271b3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-736451.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-externalize-string --no-stress-opt - -!function() { - const s0 = "external string turned into two byte"; - const s1 = s0.substring(1); - externalizeString(s0, true); - - s1.toLowerCase(); -}(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-736575.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-736575.js deleted file mode 100644 index 3622b09b97f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-736575.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - return [...[/*hole*/, 2.3]]; -} - -assertEquals(undefined, f()[0]); -assertEquals(undefined, f()[0]); -%OptimizeFunctionOnNextCall(f); -assertEquals(undefined, f()[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-736633.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-736633.js deleted file mode 100644 index 4c9f0cc97d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-736633.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(x) { - switch (x | 0) { - case 0: - case 1: - case 2: - case -2147483644: - case 2147483647: - return x + 1; - } - return 0; -} -assertEquals(1, f(0)); -assertEquals(2, f(1)); -%OptimizeFunctionOnNextCall(f); -assertEquals(3, f(2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-737645.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-737645.js deleted file mode 100644 index 13d3087e3fc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-737645.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -for (let i = 0; i < 100; i++) { - // - length > 2 to trigger sorting. - // - key > kRequiresSlowElementsLimit required to set the according bit on the - // dictionary elements store. - let key = 1073741800 + i; - var a = { length: 12, 1: 0xFA, [key]: 0xFB }; - %HeapObjectVerify(a); - assertEquals(["1", ""+key, "length"], Object.keys(a)); - // Sort, everything > length is ignored. - Array.prototype.sort.call(a); - %HeapObjectVerify(a); - assertEquals(["0", ""+key, "length"], Object.keys(a)); - // Sorting again to trigger bug caused by not setting requires_slow_elements - Array.prototype.sort.call(a); - %HeapObjectVerify(a); - assertEquals(["0", ""+key, "length"], Object.keys(a)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-738763.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-738763.js deleted file mode 100644 index 71cb67b22eb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-738763.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --verify-heap --allow-natives-syntax --expose-gc - -let constant = { a: 1 }; - -function update_array(array) { - array.x = constant; - %HeapObjectVerify(array); - array[0] = undefined; - %HeapObjectVerify(array); - return array; -} - -let ar1 = [1]; -let ar2 = [2]; -let ar3 = [3]; -gc(); -gc(); - -update_array(ar1); -constant = update_array(ar2); -update_array(ar3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-740116.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-740116.js deleted file mode 100644 index dc6fb6401c3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-740116.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestReflectGetPrototypeOfOnPrimitive() { - function f() { return Reflect.getPrototypeOf(""); } - assertThrows(f, TypeError); - assertThrows(f, TypeError); - %OptimizeFunctionOnNextCall(f); - assertThrows(f, TypeError); -})(); - -(function TestObjectGetPrototypeOfOnPrimitive() { - function f() { return Object.getPrototypeOf(""); } - assertSame(String.prototype, f()); - assertSame(String.prototype, f()); - %OptimizeFunctionOnNextCall(f); - assertSame(String.prototype, f()); -})(); - -(function TestDunderProtoOnPrimitive() { - function f() { return "".__proto__; } - assertSame(String.prototype, f()); - assertSame(String.prototype, f()); - %OptimizeFunctionOnNextCall(f); - assertSame(String.prototype, f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-740398.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-740398.js deleted file mode 100644 index 36241070528..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-740398.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var longString = (function() { - return "a".repeat(%StringMaxLength()); -})(); - -assertThrows(() => { return { get[longString]() { } } }, RangeError); -assertThrows(() => { return { set[longString](v) { } } }, RangeError); -assertThrows(() => { return { [Symbol(longString)]: () => {} } }, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-740591.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-740591.js deleted file mode 100644 index c3f516199ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-740591.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function regressionCaseOne() { - var c; - for (let [a, b = c = function() { return a + b }] of [[0]]) { - function f() { return a }; - } - c(); -})(); - -(function testForInFunction() { - for (const {length: a, b = function() { return a, b }} in {foo: 42}) { - assertSame(b, (function() { return b() })()); - } -})(); - -(function testForOfFunction() { - for (const [a, b = function() { return a, b }] of [[42]]) { - assertSame(b, (function() { return b() })()); - } -})(); - -(function testForInVariableProxy() { - for (const {length: a, b = a} in {foo: 42}) { - assertEquals(3, a); - assertEquals(a, b); - } -})(); - -(function testForOfVariableProxy() { - for (const [a, b = a] of [[42]]) { - assertEquals(42, a); - assertEquals(a, b); - } -})(); - -(function testClassLiteral() { - for (let { a, b = class c { static f() { return a, b } } } of [{}]) { - assertSame(b, (function() { return b.f() })()); - } -})(); - -// Methods in class literals remain inside the -// class scope after scope reparenting. -(function testClassLiteralMethod() { - for (let { a, b = class c { m() { return c } } } of [{}]) { - assertSame(b, (function() { return (new b).m() })()); - } -})(); - -// Function literals in computed class names remain inside the -// class scope after scope reparenting. -(function testClassLiteralComputedName() { - let d; - for (let { a, b = class c { [d = function() { return c }]() { } } } of [{}]) { - assertSame(b, (function() { return b, d() })()); - } -})(); - -// Function literals in class extends expressions names remain inside the -// class scope after scope reparenting. -(function testClassLiteralComputedName() { - let d; - for (let { a, b = class c extends (d = function() { return c }, Object) { } } of [{}]) { - assertSame(b, (function() { return b, d() })()); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-740803.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-740803.js deleted file mode 100644 index b470ecafbfd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-740803.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -({ - m() { - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; x; - x; - } -}) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-741078.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-741078.js deleted file mode 100644 index 8dfea726177..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-741078.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -function* gen() {} - -(function warmup() { - for (var i = 0; i < 100; ++i) { - var g = gen(); - g.p = 42; - } -})(); - -gc(); // Ensure no instance alive. -gen(); // Still has unused fields. -%OptimizeFunctionOnNextCall(gen); -gen(); // Was shrunk, boom! diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-743154.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-743154.js deleted file mode 100644 index cf9adea0bfb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-743154.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - - -Object.prototype[1] = 1.5; - -var v = { length: 12, [1073741824]: 0 }; - -assertEquals(['1073741824', 'length'], Object.keys(v)); -assertEquals(undefined, v[0]); -assertEquals(1.5, v[1]); -assertEquals(0, v[1073741824]); - -// Properly handle out of range HeapNumber keys on 32bit platforms. -Array.prototype.sort.call(v); - -assertEquals(['0', '1073741824', 'length'], Object.keys(v)); -assertTrue(v.hasOwnProperty(0)); -assertEquals(1.5, v[0]); -assertFalse(v.hasOwnProperty(1)); -assertEquals(1.5, v[1]); -assertEquals(0, v[1073741824]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-746835.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-746835.js deleted file mode 100644 index ab5e3549d46..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-746835.js +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This example crashes if the AllocationSites have not been properly added to -// the allocation_sites_list. - -// Flags: --expose-gc - -function __getProperties() { - return []; - let properties = []; - for (let name of Object.getOwnPropertyNames()) {; - } - return properties; -} - -function __getRandomProperty() { - let properties = __getProperties(); - if (!properties.length) - return undefined; - return properties[seed % properties.length]; -} -var kWasmH0 = 0; -var kWasmH1 = 0x61; -var kWasmH2 = 0x73; -var kWasmH3 = 0x6d; -var kWasmV0 = 0x1; -var kWasmV1 = 0; -var kWasmV2 = 0; -var kWasmV3 = 0; -class Binary extends Array { - emit_header() { - this.push(kWasmH0, kWasmH1, kWasmH2, kWasmH3, - kWasmV0, kWasmV1, kWasmV2, kWasmV3); - } -} -class WasmModuleBuilder { - constructor() { - this.exports = []; - } - addImportedMemory() {} - setFunctionTableLength() {} - toArray() { - let binary = new Binary; - let wasm = this; - binary.emit_header(); - "emitting imports @ " + binary.length; - section => {}; - var mem_export = (wasm.memory !== undefined && wasm.memory.exp); - var exports_count = wasm.exports.length + (mem_export ? 1 : 0); - return binary; - } - toBuffer() { - let bytes = this.toArray(); - let buffer = new ArrayBuffer(bytes.length); - let view = new Uint8Array(buffer); - for (let i = 0; i < bytes.length; i++) { - let val = bytes[i]; - view[i] = val | 0; - } - return buffer; - } - instantiate(ffi) { - let module = new WebAssembly.Module(this.toBuffer()); - let instance = new WebAssembly.Instance(module); - } -} - -var v_40 = 0; -var v_43 = NaN; - -try { - v_23 = new WasmModuleBuilder(); -} catch (e) { - print("Caught: " + e); -} - -try { - v_31 = [0xff]; - v_29 = [v_31]; -} catch (e) { - print("Caught: " + e); -} - -try { - v_25 = ["main"]; - gc(); -} catch (e) { - print("Caught: " + e); -} -for (var v_28 of [[2]]) { - try { - gc(); - } catch (e) { - print("Caught: " + e); - } -} -try { - module = v_23.instantiate(); -} catch (e) { - print("Caught: " + e); -} -try { - v_41 = []; -} catch (e) {; -} -for (var v_43 = 0; v_43 < 100000; v_43++) try { - v_41[v_43] = []; -} catch (e) { - "Caught: " + e; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-747062.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-747062.js deleted file mode 100644 index 7e0e92ad7ee..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-747062.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestNonCallableForEach() { - function foo() { [].forEach(undefined) } - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); -})(); - -(function TestNonCallableForEachCaught() { - function foo() { try { [].forEach(undefined) } catch(e) { return e } } - assertInstanceof(foo(), TypeError); - assertInstanceof(foo(), TypeError); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), TypeError); -})(); - -(function TestNonCallableMap() { - function foo() { [].map(undefined); } - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); -})(); - -(function TestNonCallableMapCaught() { - function foo() { try { [].map(undefined) } catch(e) { return e } } - assertInstanceof(foo(), TypeError); - assertInstanceof(foo(), TypeError); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), TypeError); -})(); - -(function TestNonCallableFilter() { - function foo() { [].filter(undefined); } - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); -})(); - -(function TestNonCallableFilterCaught() { - function foo() { try { [].filter(undefined) } catch(e) { return e } } - assertInstanceof(foo(), TypeError); - assertInstanceof(foo(), TypeError); - %OptimizeFunctionOnNextCall(foo); - assertInstanceof(foo(), TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-747979.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-747979.js deleted file mode 100644 index bbdea1ddf5a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-747979.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a) { - %HeapObjectVerify(a); - a[1] = 0; - %HeapObjectVerify(a); -} - -function foo() {} - -var arr1 = [0]; -var arr2 = [0]; -var arr3 = [0]; - -arr1.f = foo; -arr1[0] = 4.2; - -arr2.f = foo; - -arr3.f = foo; -arr3[0] = 4.2; -arr3.f = f; - -f(arr1); -f(arr2); -f(arr3); -%OptimizeFunctionOnNextCall(f); -f(arr3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-748539.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-748539.js deleted file mode 100644 index bae598710e3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-748539.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f1() {} -function f2() {} - -var o1 = []; -o1.a = 0; -o1.f = f1; -%HeapObjectVerify(o1); - -var o2 = []; -o2.a = 4.2; -o2.f = f2; -%HeapObjectVerify(o2); - -o1.a; -%HeapObjectVerify(o1); -%HeapObjectVerify(o2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-751109.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-751109.js deleted file mode 100644 index 035e64697dd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-751109.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --verify-heap - -(new constructor)[0] = null; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-751715.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-751715.js deleted file mode 100644 index 68241ebb18a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-751715.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class Base {} -class Derived extends Base { - constructor() { super(); } -} -var proxy = new Proxy(Base, { get() {} }); -assertDoesNotThrow(() => Reflect.construct(Derived, [])); -assertThrows(() => Reflect.construct(Derived, [], proxy), TypeError); -assertThrows(() => Reflect.construct(Derived, [], proxy), TypeError); -%OptimizeFunctionOnNextCall(Derived); -assertThrows(() => Reflect.construct(Derived, [], proxy), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-752481.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-752481.js deleted file mode 100644 index d0cc6a32a2c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-752481.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const A = class A {} - -function test(foo) { - assertThrows(foo); - assertThrows(foo); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo); -} - -// Test combinations of rest parameters and primitive new.targets -test((...args) => Reflect.construct(A, args, 0)); -test((...args) => Reflect.construct(A, args, true)); -test((...args) => Reflect.construct(A, args, false)); -test((...args) => Reflect.construct(A, args, "")); -test((...args) => Reflect.construct(A, args, null)); -test((...args) => Reflect.construct(A, args, undefined)); -test((...args) => Reflect.construct(A, args, Symbol.species)); - -// Test combinations of arguments object and primitive new.targets. -test(function() { Reflect.construct(A, arguments, 0); }); -test(function() { Reflect.construct(A, arguments, true); }); -test(function() { Reflect.construct(A, arguments, false); }); -test(function() { Reflect.construct(A, arguments, ""); }); -test(function() { Reflect.construct(A, arguments, null); }); -test(function() { Reflect.construct(A, arguments, undefined); }); -test(function() { Reflect.construct(A, arguments, Symbol.species); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-752712.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-752712.js deleted file mode 100644 index 12d833ca5fb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-752712.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Proxy get trap doesn't fail when the value returned by it -// is a number. - -var number = 1; - -(function testFailingInvariant() { - var obj = {}; - var handler = { - get: function() {} - }; - var proxy = new Proxy(obj, handler); - Object.defineProperty(handler, 'get', { - get: function() { - return number; - } - }); - assertThrows(function(){ proxy.property; }, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-752826.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-752826.js deleted file mode 100644 index d0e124ed2b7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-752826.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function h(a) { - return a[1]; -} -assertEquals(0, h(new Int8Array(10))); -assertEquals(0, h(new Int8Array(10))); - -function g() { - return h(arguments); -} -function f() { - return g(23, 42); -} -assertEquals(42, f()); -assertEquals(42, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(42, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-752846.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-752846.js deleted file mode 100644 index c2095dc57fc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-752846.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Check that the receiver of Runtime_GetPropertyWithReceiver can be -// a plain JS value. - -var values = [ - 10, - false, - "test" -]; - -for (let val of values) { - var proto = Object.getPrototypeOf(val); - - var proxy = new Proxy({}, {}); - Object.setPrototypeOf(proto, proxy); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-754175.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-754175.js deleted file mode 100644 index 5490ba35b91..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-754175.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --mock-arraybuffer-allocator - -function Module(stdlib, foreign, buffer) { - "use asm"; - var heap = new stdlib.Int8Array(buffer); - function foo() { return heap[23] | 0 } - return { foo:foo }; -} -function instantiate() { - // On 32-bit architectures buffer allocation will throw. - var buffer = new ArrayBuffer(0x100000000); - // On 64-bit architectures instantiation will throw. - var module = Module(this, {}, buffer); -} -assertThrows(instantiate, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-754177.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-754177.js deleted file mode 100644 index 1c105a3bf2c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-754177.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Do not crash on non-JSFunction input. -%NeverOptimizeFunction(undefined); -%NeverOptimizeFunction(true); -%NeverOptimizeFunction(1); -%NeverOptimizeFunction({}); -assertThrows("%NeverOptimizeFunction()", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-755044.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-755044.js deleted file mode 100644 index 45f0e846615..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-755044.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(f){ - f.caller; -} -function bar(f) { - new foo(f); -} -bar(function() {}); -%OptimizeFunctionOnNextCall(bar); -bar(function() {}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-756332.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-756332.js deleted file mode 100644 index 10bccbc8f97..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-756332.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -{ - let z = ({x: {y} = {y: 42}} = {}) => y; - assertEquals(42, z()); -} - -{ - let z = ({x: [y] = [42]} = {}) => y; - assertEquals(42, z()); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-757199.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-757199.js deleted file mode 100644 index d2e9502b392..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-757199.js +++ /dev/null @@ -1,31 +0,0 @@ -/// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var obj1 = {}; -var obj2 = {}; - -function h() {} - -h.prototype = obj2; - -function g(v) { - v.constructor; -} -function f() { - g(obj1); -} - -obj1.x = 0; -f(); - -obj1.__defineGetter__("x", function() {}); - -g(obj2); - -obj2.y = 0; - -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-758773.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-758773.js deleted file mode 100644 index 1dbcdd13972..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-758773.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(0).__defineGetter__(0, function() { }); -Number.prototype[0] = "string"; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-759327.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-759327.js deleted file mode 100644 index 4aed8a456a3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-759327.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -function Module(stdlib, env, heap) { - "use asm"; - var MEM = new stdlib.Int32Array(heap); - function f() { - MEM[0] = 0; - } - return { f: f }; -} -function instantiate() { - var buffer = new ArrayBuffer(4096); - Module(this, {}, buffer).f(); - try {} finally {} - gc(); - Module(this, {}, buffer).f(); -} -instantiate(); -assertTrue(%IsAsmWasmCode(Module)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-762472.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-762472.js deleted file mode 100644 index e8d28426b3f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-762472.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -function Module() { - "use asm"; - function f() {} - return { f:f } -} - -function InstantiateNearStackLimit() { - try { - var fuse = InstantiateNearStackLimit(); - if (fuse == 0) Module(); - return fuse - 1; - } catch(e) { - return init_fuse; - } -} - -var init_fuse = 0; -for (init_fuse = 0; init_fuse < 10; init_fuse++) { - InstantiateNearStackLimit(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-762874-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-762874-1.js deleted file mode 100644 index ab1b7c1578f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-762874-1.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const maxLength = %StringMaxLength(); -const s = 'A'.repeat(maxLength); - -function foo(s) { - let x = s.indexOf("", maxLength); - return x === maxLength; -} - -assertTrue(foo(s)); -assertTrue(foo(s)); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(s)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-762874-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-762874-2.js deleted file mode 100644 index 6d301b5ae36..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-762874-2.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const maxLength = %StringMaxLength(); -const s = 'A'.repeat(maxLength); - -function foo(s) { - let x = s.lastIndexOf("", maxLength); - return x === maxLength; -} - -assertTrue(foo(s)); -assertTrue(foo(s)); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(s)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-763683.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-763683.js deleted file mode 100644 index 92ba46ce9ad..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-763683.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function test() { - var proxy = new Proxy({}, {}); - var key_or_proxy = 0; - - function failing_get() { - return proxy[key_or_proxy]; - } - - failing_get(); - - key_or_proxy = new Proxy({ - toString() { - throw new TypeError('error'); - } - }, {}); - - failing_get(); -}, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-764219.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-764219.js deleted file mode 100644 index 2a92d66d2e3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-764219.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - function f(o) { - o.x = 42; - }; - - f({}); - f(this); - f(this); -})(); - -(function() { - function f(o) { - o.y = 153; - }; - - Object.setPrototypeOf(this, new Proxy({}, {})); - f({}); - f(this); - f(this); -})(); - -(function() { - function f(o) { - o.z = 153; - }; - - Object.setPrototypeOf(this, new Proxy({get z(){}}, {})); - f({}); - f(this); - f(this); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-766635.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-766635.js deleted file mode 100644 index ae0de0a600f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-766635.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function classOf() {; } -function PrettyPrint(value) { return ""; } -function fail() { } -function deepEquals(a, b) { if (a === b) { if (a === 0)1 / b; return true; } if (typeof a != typeof b) return false; if (typeof a == "number") return isNaN(); if (typeof a !== "object" && typeof a !== "function") return false; var objectClass = classOf(); if (b) return false; if (objectClass === "RegExp") {; } if (objectClass === "Function") return false; if (objectClass === "Array") { var elementCount = 0; if (a.length != b.length) { return false; } for (var i = 0; i < a.length; i++) { if (a[i][i]) return false; } return true; } if (objectClass == "String" || objectClass == "Number" || objectClass == "Boolean" || objectClass == "Date") { if (a.valueOf()) return false; }; } -assertSame = function assertSame() { if (found === expected) { if (1 / found) return; } else if ((expected !== expected) && (found !== found)) { return; }; }; assertEquals = function assertEquals(expected, found, name_opt) { if (!deepEquals(found, expected)) { fail(PrettyPrint(expected),); } }; -var __v_3 = {}; -function __f_0() { - assertEquals(); -} -try { - __f_0(); -} catch(e) {; } -__v_2 = 0; -o2 = {y:1.5}; -o2.y = 0; -o3 = o2.y; -function __f_1() { - for (var __v_1 = 0; __v_1 < 10; __v_1++) { - __v_2 += __v_3.x + o3.foo; - [ 3].filter(__f_9); - } -} -__f_1(); -%OptimizeFunctionOnNextCall(__f_1); -__f_1(); -function __f_9(){ "use __f_9"; assertEquals( this); } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-768080.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-768080.js deleted file mode 100644 index cfd1fc1f352..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-768080.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestReflectConstructBogusNewTarget1() { - class C {} - function g() { - Reflect.construct(C, arguments, 23); - } - function f() { - return new g(); - } - new C(); // Warm-up! - assertThrows(f, TypeError); - assertThrows(f, TypeError); - %OptimizeFunctionOnNextCall(f); - assertThrows(f, TypeError); -})(); - -(function TestReflectConstructBogusNewTarget2() { - class C {} - // Note that {unescape} is an example of a non-constructable function. If that - // ever changes and this test needs to be adapted, make sure to choose another - // non-constructable {JSFunction} object instead. - function g() { - Reflect.construct(C, arguments, unescape); - } - function f() { - return new g(); - } - new C(); // Warm-up! - assertThrows(f, TypeError); - assertThrows(f, TypeError); - %OptimizeFunctionOnNextCall(f); - assertThrows(f, TypeError); -})(); - -(function TestReflectConstructBogusTarget() { - function g() { - Reflect.construct(23, arguments); - } - function f() { - return new g(); - } - assertThrows(f, TypeError); - assertThrows(f, TypeError); - %OptimizeFunctionOnNextCall(f); - assertThrows(f, TypeError); -})(); - -(function TestReflectApplyBogusTarget() { - function g() { - Reflect.apply(23, this, arguments); - } - function f() { - return g(); - } - assertThrows(f, TypeError); - assertThrows(f, TypeError); - %OptimizeFunctionOnNextCall(f); - assertThrows(f, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-768158.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-768158.js deleted file mode 100644 index f33f0efae03..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-768158.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --always-opt - -(function testOriginalRepro() { - var result; - var dict = { toString() { result = v;} }; - for (var v of ['fontsize', 'sup']) { - String.prototype[v].call(dict); - assertEquals(v, result); - } -})(); - -(function testSimpler() { - var result; - function setResult() { result = v; } - for (var v of ['hello', 'world']) { - setResult(); - assertEquals(v, result); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-768367.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-768367.js deleted file mode 100644 index d1041f32ce1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-768367.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const o = {}; - -function foo() { return o[4294967295]; } - -assertEquals(undefined, foo()); -assertEquals(undefined, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-768875.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-768875.js deleted file mode 100644 index 4b5ecdee1c3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-768875.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -this.__defineGetter__('x', function() { return 0; }); -function store_x() { - x = 23; -} -store_x(); -store_x(); -assertEquals(0, x); -Realm.eval(Realm.current(), "let x = 42"); -assertEquals(42, x); -store_x(); -assertEquals(23, x); - - -this.__defineGetter__('y', function() { return 0; }); -function store_y() { - y = 23; -} -store_y(); -store_y(); -assertEquals(0, y); -Realm.eval(Realm.current(), "const y = 42"); -assertEquals(42, y); -assertThrows(store_y, TypeError); -assertEquals(42, y); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-769852.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-769852.js deleted file mode 100644 index 120ea0109e5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-769852.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(o) { - function g() {} - Object.keys(o).forEach(suite => g()); -} -assertDoesNotThrow(() => f({})); -assertDoesNotThrow(() => f({ x:0 })); -%OptimizeFunctionOnNextCall(f); -assertDoesNotThrow(() => f({ x:0 })); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-770543.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-770543.js deleted file mode 100644 index 5397a499c3d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-770543.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function FunctionCallerFromInlinedBuiltin() { - function f() { - function g() { - Object.getOwnPropertyDescriptor(g, "caller"); - }; - [0].forEach(g); - } - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); - -(function FunctionArgumentsFromInlinedBuiltin() { - function g() { - g.arguments; - } - function f() { - [0].forEach(g); - } - f(); - f(); - %OptimizeFunctionOnNextCall(f); - f(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-770581.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-770581.js deleted file mode 100644 index 64edec97cde..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-770581.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(callback) { - [Object].forEach(callback); -} - -function message_of_f() { - try { - f("a teapot"); - } catch(e) { - return String(e); - } -} - -assertEquals("TypeError: a teapot is not a function", message_of_f()); -assertEquals("TypeError: a teapot is not a function", message_of_f()); -%OptimizeFunctionOnNextCall(f); -assertEquals("TypeError: a teapot is not a function", message_of_f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-771428.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-771428.js deleted file mode 100644 index 3bebfa102c8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-771428.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -function Module() { - "use asm"; - function f(i) { - i = i | 0; - switch (i | 0) { - case 2: - // Exceeds value range. - i = 0x1ffffffff; - break; - } - return i | 0; - } - return f; -} -var f = Module(); -assertEquals(0, f(0)); -assertEquals(1, f(1)); -assertEquals(-1, f(2)); -assertFalse(%IsAsmWasmCode(Module)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-771971.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-771971.js deleted file mode 100644 index cb40db5aa39..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-771971.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { Object.is(); } - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772056.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-772056.js deleted file mode 100644 index d9fb4d51d2e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772056.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -var builder = new WasmModuleBuilder(); -builder.addImportedTable("x", "table", 1, 10000000); -let module = new WebAssembly.Module(builder.toBuffer()); -let table = new WebAssembly.Table({element: "anyfunc", - initial: 1, maximum:1000000}); -let instance = new WebAssembly.Instance(module, {x: {table:table}}); - -assertThrows(() => table.grow(Infinity), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772610.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-772610.js deleted file mode 100644 index d68ebbf2be9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772610.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap --expose-gc - -function f() { - var o = [{ - [Symbol.toPrimitive]() {} - }]; - %_DeoptimizeNow(); - return o.length; -} -assertEquals(1, f()); -assertEquals(1, f()); -%OptimizeFunctionOnNextCall(f); -assertEquals(1, f()); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772672.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-772672.js deleted file mode 100644 index 86e738344a9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772672.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { return new Array(120 * 1024); } - -foo()[0] = 0.1; -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772689.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-772689.js deleted file mode 100644 index 32e220daa7b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772689.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const A = class A extends Array { - constructor() { - super(); - this.y = 1; - } -} - -function foo(x) { - var a = new A(); - if (x) return a.y; -} - -assertEquals(undefined, foo(false)); -assertEquals(undefined, foo(false)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo(false)); -assertEquals(1, foo(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772720.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-772720.js deleted file mode 100644 index 3e359f6c16c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772720.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var global; -function f() { - var local = 'abcdefghijklmnopqrst'; - local += 'abcdefghijkl' + (0 + global); - global += 'abcdefghijkl'; -} -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772897.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-772897.js deleted file mode 100644 index c2e4b25fb04..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-772897.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function store(obj, name) { - return obj[name] = 0; -} - -function f(obj) { - var key = { - toString() { throw new Error("boom"); } - }; - store(obj, key); -} - -(function() { - var proxy = new Proxy({}, {}); - store(proxy, 0) - assertThrows(() => f(proxy), Error); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-774459.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-774459.js deleted file mode 100644 index 4263c3252df..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-774459.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - const m = new Map(); - const k = Math.pow(2, 31) - 1; - m.set(k, 1); - - function foo(m, k) { - return m.get(k | 0); - } - - assertEquals(1, foo(m, k)); - assertEquals(1, foo(m, k)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(1, foo(m, k)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-774860.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-774860.js deleted file mode 100644 index e0ba5e3d8a7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-774860.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --verify-heap - -(function () { - class F extends Function {} - let f = new F("'use strict';"); - // Create enough objects to complete slack tracking. - for (let i = 0; i < 20; i++) { - new F(); - } - gc(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-774994.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-774994.js deleted file mode 100644 index 5810417f79d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-774994.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --preparser-scope-analysis - -function f() { - new class extends Object { - constructor() { - eval("super(); super.__f_10();"); - } - } -} -assertThrows(f, TypeError); - -function g() { - let obj = { - m() { - eval("super.foo()"); - } - } - obj.m(); -} -assertThrows(g, TypeError); - -function h() { - let obj = { - get m() { - eval("super.foo()"); - } - } - obj.m; -} -assertThrows(h, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-776511.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-776511.js deleted file mode 100644 index f757bc2cc26..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-776511.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --enable-slow-asserts --expose-gc --allow-natives-syntax - -function __getProperties(obj) { - let properties = []; - for (let name of Object.getOwnPropertyNames(obj)) { - properties.push(name); - } - return properties; -} -function __getRandomProperty(obj, seed) { - let properties = __getProperties(obj); - return properties[seed % properties.length]; -} -(function() { - var __v_59904 = [12, 13, 14, 16, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - var __v_59906 = function(__v_59908) { - var __v_59909 = function(__v_59910, __v_59911) { - if (__v_59911 == 13 && __v_59908) { - __v_59904.abc = 25; - } - return true; - }; - return __v_59904.filter(__v_59909); - }; - print(__v_59906()); - __v_59904[__getRandomProperty(__v_59904, 366855)] = this, gc(); - print(__v_59906()); - %OptimizeFunctionOnNextCall(__v_59906); - var __v_59907 = __v_59906(true); - print(__v_59907); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-778952.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-778952.js deleted file mode 100644 index d07c478ecf9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-778952.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function() { - const p = new Proxy({}, {}); - (new Set).add(p); // Compute the hash code for p. - null[p] = 0; -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-779344.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-779344.js deleted file mode 100644 index 9211071653c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-779344.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = {}; -var proxy = new Proxy(() => {}, o); -o.apply = proxy; -assertThrows(proxy); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-779367.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-779367.js deleted file mode 100644 index 3836b34fc16..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-779367.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g(o) { - return o.x; -} - -Object.defineProperty(g, 'x', {set(v) {}}); - -g.prototype = 1; -g(g); -g(g); -%OptimizeFunctionOnNextCall(g); -g(g); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-779457.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-779457.js deleted file mode 100644 index 0e0504023b4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-779457.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function testEager() { - (function({name = [foo] = eval("[]")}) {})({}); - (function([name = [foo] = eval("[]")]) {})([]); -})(); - -(function testLazy() { - function f({name = [foo] = eval("[]")}) {} - function g([name = [foo] = eval("[]")]) {} - f({}); - g([]); -})(); - -(function testEagerArrow() { - (({name = [foo] = eval("[]")}) => {})({}); - (([name = [foo] = eval("[]")]) => {})([]); -})(); - -(function testLazyArrow() { - var f = ({name = [foo] = eval("[]")}) => {}; - var g = ([name = [foo] = eval("[]")]) => {}; - f({}); - g([]); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781116-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-781116-1.js deleted file mode 100644 index fb3f7da54e0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781116-1.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function baz(obj, store) { - if (store === true) obj[0] = 1; -} -function bar(store) { - baz(Array.prototype, store); -} -bar(false); -bar(false); -%OptimizeFunctionOnNextCall(bar); -bar(true); - -function foo() { [].push(); } -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781116-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-781116-2.js deleted file mode 100644 index 0af8d6f1a89..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781116-2.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function baz(obj, store) { - if (store === true) obj[0] = 1; -} -function bar(store) { - baz(Object.prototype, store); -} -bar(false); -bar(false); -%OptimizeFunctionOnNextCall(bar); -bar(true); - -function foo() { [].push(); } -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-1.js deleted file mode 100644 index 6048fb92504..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-1.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a) { return a[0]; } - -assertEquals(undefined, foo(x => x)); -assertEquals(undefined, foo({})); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo(x => x)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-2.js deleted file mode 100644 index 71801df14af..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-2.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(o) { return o[0]; } - -assertEquals(undefined, foo({})); -Array.prototype[0] = 0; -assertEquals(undefined, foo({})); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo({})); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-3.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-3.js deleted file mode 100644 index 70b29896f74..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781506-3.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a, i) { return a[i] + 0.5; } - -foo({}, 1); -Array.prototype.unshift(1.5); -assertTrue(Number.isNaN(foo({}, 1))); -%OptimizeFunctionOnNextCall(foo); -assertTrue(Number.isNaN(foo({}, 1))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781583.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-781583.js deleted file mode 100644 index fd14ad7bce3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-781583.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function* generator(a) { - a.pop().next(); -} - -function prepareGenerators(n) { - var a = [{ next: () => 0 }]; - for (var i = 0; i < n; ++i) { - a.push(generator(a)); - } - return a; -} - -var gens1 = prepareGenerators(10); -assertDoesNotThrow(() => gens1.pop().next()); - -%OptimizeFunctionOnNextCall(generator); - -var gens2 = prepareGenerators(200000); -assertThrows(() => gens2.pop().next(), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-783132.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-783132.js deleted file mode 100644 index 600a6bf5b69..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-783132.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --verify-heap - -function f(o, v) { - try { - f(o, v + 1); - } catch (e) { - } - o[v] = 43.35 + v * 5.3; -} - -f(Array.prototype, 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-783902.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-783902.js deleted file mode 100644 index 6739704a2a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-783902.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -class A {} - -class B extends A { - *gf() { - yield super.f(); - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-784835.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-784835.js deleted file mode 100644 index 340e3cf2216..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-784835.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo(o, k) { return o[k]; } - -var a = [1,2]; -a["-1"] = 42; - -assertEquals(1, foo(a, 0)); -assertEquals(2, foo(a, 1)); -assertEquals(undefined, foo(a, 3)); -assertEquals(42, foo(a, -1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-786020.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-786020.js deleted file mode 100644 index fbad074bf86..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-786020.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -%SetAllocationTimeout(1000, 90); -(new constructor)[0x40000000] = null; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-786723.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-786723.js deleted file mode 100644 index d4e0957c5ea..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-786723.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --function-context-specialization - -function f() { - var o = {}; - function g() { - o.x = 1; - return Object.create(o); - }; - gc(); - o.x = 10; - %OptimizeFunctionOnNextCall(g); - g(); -} -f(); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-789764.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-789764.js deleted file mode 100644 index c377e644fc2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-789764.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original repro (used to crash): -_v3 = ({ _v7 = (function outer() { - for ([...[]][function inner() {}] in []) { - } - })} = {}) => { -}; -_v3(); - -// Smaller repro (used to crash): -a = (b = !function outer() { for (function inner() {}.foo in []) {} }) => {}; -a(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-7907.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-7907.js deleted file mode 100644 index fafa659af83..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-7907.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let arr = new Array(10); -Object.defineProperty(arr, 0, {value: 10, writable: false}); -Object.defineProperty(arr, 9, {value: 1, writable: false}); - -assertThrows(() => arr.sort(), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-791245-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-791245-1.js deleted file mode 100644 index 0d51f8a4a01..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-791245-1.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const s = new Map; - -function foo(s) { - const i = s[Symbol.iterator](); - i.next(); - return i; -} - -console.log(foo(s)); -console.log(foo(s)); -%OptimizeFunctionOnNextCall(foo); -console.log(foo(s)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-791245-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-791245-2.js deleted file mode 100644 index 6734ed2baa0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-791245-2.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const s = new Set; - -function foo(s) { - const i = s[Symbol.iterator](); - i.next(); - return i; -} - -console.log(foo(s)); -console.log(foo(s)); -%OptimizeFunctionOnNextCall(foo); -console.log(foo(s)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-791256.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-791256.js deleted file mode 100644 index bf9fc25977b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-791256.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original repro. A DCHECK used to fire. -(function* (name = (eval(foo), foo, prototype)) { }); - -// Simpler repro. -(function (name = (foo, bar, baz) ) { }); - -// A test which uses the value of the n-ary operation. -(function (param = (0, 1, 2)) { assertEquals(2, param); })(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-795922.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-795922.js deleted file mode 100644 index da2b36740e9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-795922.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows( - // Should throw a syntax error, but not crash. - "({ __proto__: null, __proto__: 1 })", - SyntaxError -); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-798026.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-798026.js deleted file mode 100644 index 46cd150e3f9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-798026.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --expose-gc - -array = new Array(4 * 1024 * 1024); -Set.prototype.add = value => { - if (array.length != 1) { - array.length = 1; - gc(); - } -} -new Set(array); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-798644.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-798644.js deleted file mode 100644 index c878a6fda84..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-798644.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let arr = []; -// Make the array large enough to trigger re-checking for compaction. -arr[1000] = 0x1234; - -arr.__defineGetter__(256, function () { - // Remove the getter so we can compact the array. - delete arr[256]; - // Trigger compaction. - arr.unshift(1.1); -}); - -let results = Object.entries(arr); -%HeapObjectVerify(results); -%HeapObjectVerify(arr); -let str = results.toString(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-800032.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-800032.js deleted file mode 100644 index 2b4bc067fb8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-800032.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - - -class Derived extends RegExp { - constructor(a) { throw "error" } -} - -let o = Reflect.construct(RegExp, [], Derived); -%HeapObjectVerify(o); -// Check that we can properly access lastIndex. -assertEquals(o.lastIndex, 0); -o.lastIndex = 1; -assertEquals(o.lastIndex, 1); -o.lastIndex = 0; -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-800077.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-800077.js deleted file mode 100644 index 13679073fe2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-800077.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var sample = new Float64Array(1); -Reflect.has(sample, undefined); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-800810.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-800810.js deleted file mode 100644 index 22ac38833ef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-800810.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var array = []; -Object.defineProperty(array , 506519, {}); -Object.defineProperty(array , 3, { - get: function () { - Object.defineProperty(array , undefined, { - }) - } -}); -array.includes(61301); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-801627.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-801627.js deleted file mode 100644 index 0e51fff2b1d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-801627.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --enable-slow-asserts - -class Base { - constructor() { - this.x = 1; - } -} - -class Derived extends Base { - constructor() { - super(); - } -} - -// Feed a bound function as new.target -// to the profiler, so HeapObjectMatcher -// can find it. -Reflect.construct(Derived, [], Object.bind()); -%OptimizeFunctionOnNextCall(Derived); -new Derived(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-802333.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-802333.js deleted file mode 100644 index 35d762187bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-802333.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function deferred_func() { - class C { - method1() { - - } - } -} - -let bound = (a => a).bind(this, 0); - -function opt() { - deferred_func.prototype; // ReduceJSLoadNamed - - return bound(); -} - -assertEquals(0, opt()); -%OptimizeFunctionOnNextCall(opt); - -assertEquals(0, opt()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-805765.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-805765.js deleted file mode 100644 index b630efb4c72..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-805765.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var code = "(function* gen() {" -for (var i = 0; i < 256; ++i) { - code += `var v_${i} = 0;` -} -code += `yield; })` - -var gen = eval(code); -var g = gen(); -g.next(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-806200.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-806200.js deleted file mode 100644 index dbd66019a5b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-806200.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertThrows("%Foo(...spread)", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-806388.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-806388.js deleted file mode 100644 index 138ae18dae5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-806388.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --enable-slow-asserts --expose-gc - -class Derived extends Array { - constructor(a) { throw "error" } -} - -// Derived is not a subclass of RegExp -let o = Reflect.construct(RegExp, [], Derived); -o.lastIndex = 0x1234; -%HeapObjectVerify(o); - -gc(); -%HeapObjectVerify(o); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-807096.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-807096.js deleted file mode 100644 index c503fdad970..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-807096.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax --no-lazy - -load('test/mjsunit/test-async.js'); - -// For regression testing, it's important that these functions are: -// 1) toplevel -// 2) arrow functions with single-expression bodies -// 3) eagerly compiled - -let f = ({a = (({b = {a = c} = { - a: 0x1234 -}}) => 1)({})}, c) => 1; - -assertThrows(() => f({}), ReferenceError); - -let g = ({a = (async ({b = {a = c} = { - a: 0x1234 -}}) => 1)({})}, c) => a; - -testAsync(assert => { - assert.plan(1); - g({}).catch(e => { - assert.equals("ReferenceError", e.name); - }); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-808192.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-808192.js deleted file mode 100644 index f57d5fc3a69..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-808192.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -const f = eval(`(function f(i) { - if (i == 0) { - class Derived extends Object { - constructor() { - super(); - ${"this.a=1;".repeat(0x3fffe-8)} - } - } - return Derived; - } - - class DerivedN extends f(i-1) { - constructor() { - super(); - ${"this.a=1;".repeat(0x40000-8)} - } - } - - return DerivedN; -})`); - -let a = new (f(0x7ff))(); -a.a = 1; -gc(); -assertEquals(1, a.a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-813427.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-813427.js deleted file mode 100644 index 95fa015de2a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-813427.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Create {count} property assignments. -function createPropertiesAssignment(count) { - let result = ""; - for (let i = 0; i < count; i++) { - result += "this.p"+i+" = undefined;"; - } - return result; -} - -function testSubclassProtoProperties(count) { - const MyClass = eval(`(class MyClass { - constructor() { - ${createPropertiesAssignment(count)} - } - });`); - - class BaseClass {}; - class SubClass extends BaseClass { - constructor() { - super() - } - }; - - const boundMyClass = MyClass.bind(); - %HeapObjectVerify(boundMyClass); - - SubClass.__proto__ = boundMyClass; - var instance = new SubClass(); - - %HeapObjectVerify(instance); - // Create some more instances to complete in-object slack tracking. - let results = []; - for (let i = 0; i < 4000; i++) { - results.push(new SubClass()); - } - var instance = new SubClass(); - %HeapObjectVerify(instance); -} - - -for (let count = 0; count < 10; count++) { - testSubclassProtoProperties(count); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-813450.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-813450.js deleted file mode 100644 index b301012950d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-813450.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var constructorArgs = new Array(0x10100); -var constructor = function() {}; -var target = new Proxy(constructor, { - construct: function() { - } -}); -var proxy = new Proxy(target, { - construct: function(newTarget, args) { - return Reflect.construct(constructor, []); - } -}); -var instance = new proxy(); -var instance2 = Reflect.construct(proxy, constructorArgs); -%HeapObjectVerify(target); -%HeapObjectVerify(proxy); -%HeapObjectVerify(instance); -%HeapObjectVerify(instance2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-813630.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-813630.js deleted file mode 100644 index 7ec9e35c0d9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-813630.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Regression test for a bug where aborting a function which has a rest -// parameter didn't work correctly. -function g(...args) { - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; - x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x; -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-816961.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-816961.js deleted file mode 100644 index c1637ad2c54..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-816961.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(function() { - var memory = new WebAssembly.Memory({initial: 64 * 1024 * 1024 / 0x10000}); - var array = new Uint8Array(memory.buffer); - Uint8Array.of.call(function() { return array }, - {valueOf() { memory.grow(1); } }); -}, TypeError); - -assertThrows(function() { - var memory = new WebAssembly.Memory({initial: 64 * 1024 * 1024 / 0x10000}); - var array = new Uint8Array(memory.buffer); - Uint8Array.from.call(function() { return array }, - [{valueOf() { memory.grow(1); } }], - x => x); -}, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-819086.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-819086.js deleted file mode 100644 index 85f76a1fb5d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-819086.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return [...[, -Infinity]]; -} - -foo()[0]; -foo()[0]; -%OptimizeFunctionOnNextCall(foo); -foo()[0]; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-819298.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-819298.js deleted file mode 100644 index 0c28aeb48c8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-819298.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = new Int32Array(2); - -function foo(base) { - a[base - 91] = 1; -} - -foo(""); -foo(""); -%OptimizeFunctionOnNextCall(foo); -foo(NaN); -assertEquals(0, a[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-820312.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-820312.js deleted file mode 100644 index 448d4e97c0f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-820312.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let arr = new Array(0x10000); -let resolve_element_closures = new Array(0x10000); - -for (let i = 0; i < arr.length; i++) { - arr[i] = new Promise(() => {}); - arr[i].then = ((idx, resolve) => { - resolve_element_closures[idx] = resolve; - }).bind(null, i); -} - -Promise.all(arr); - -// 0xffff is too large, transitions to DICTIONARY_ELEMENTS -resolve_element_closures[0xffff](); - -// grows the capacity, the elements kind of the result array is still DICTIONARY_ELEMENTS, but the elements object of it is no more a dictionary. -resolve_element_closures[100](); - -// You can observe that V8 crashes here in debug mode. -resolve_element_closures[0xfffe](); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-820820.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-820820.js deleted file mode 100644 index bdee5589917..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-820820.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function* generator() { - yield undefined; -} -function bar(x) { - const objects = []; - for (let obj of generator()) { - } - return objects[0]; -} -function foo() { - try { undefined[0] = bar(); } catch (e) { } - Math.min(bar(), bar(), bar()); -} -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-1.js deleted file mode 100644 index 058688a340b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-1.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Array.prototype[0] = 0; -Math.max(...[3]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-2.js deleted file mode 100644 index a982068c9b3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-2.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Object.prototype[0] = 0; -Math.max(...[3]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-3.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-3.js deleted file mode 100644 index 2bb09c76feb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-3.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Array.prototype[0] = 0; -Math.max(...[3.1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-4.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-4.js deleted file mode 100644 index ec596c60da2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-821159-4.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -Object.prototype[0] = 0; -Math.max(...[3.1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-822284.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-822284.js deleted file mode 100644 index 97a38259e34..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-822284.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(a) { - a = "" + Math.abs(a); - return a.charCodeAt(0); -} - -// Add '1' to the number to string table (as SeqString). -String.fromCharCode(49); - -// Turn the SeqString into a ThinString via forced internalization. -const o = {}; -o[(1).toString()] = 1; - -assertEquals(49, foo(1)); -assertEquals(49, foo(1)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(49, foo(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-823069.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-823069.js deleted file mode 100644 index c3820339189..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-823069.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var v = []; -Object.defineProperty(v, "length", {value: 3, writable: false}); -assertThrows(()=>{v.pop();}); -assertThrows(()=>{v.shift();}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-823130.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-823130.js deleted file mode 100644 index 42174f1acf7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-823130.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var __v_1 = new Array(); -var __v_2 = 0x30; -var __v_4 = "abc"; -var __v_3 = "def"; - -function __f_2(b) { - [...b]; -} -__f_2([1]); -__f_2([3.3]); -__f_2([{}]); - -var vars = [__v_1, __v_2, __v_3, __v_4]; - -for (var j = 0; j < vars.length && j < 7; j++) { - for (var k = j; k < vars.length && k < 7 + j; k++) { - var v1 = vars[j]; - var e1, e2; - try { - __f_2(v1); - __f_2(); - } catch (e) { - e1 = "" + e; - } - gc(); - try { - __f_2(v1); - __f_2(); - } catch (e) { - e2 = "" + e; - } - assertEquals(e1, e2); - } -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-825045.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-825045.js deleted file mode 100644 index 34af20897a0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-825045.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const obj = new class A extends (async function (){}.constructor) {}; -delete obj.name; -Number.prototype.__proto__ = obj; -function foo() { return obj.bind(); } -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-827013.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-827013.js deleted file mode 100644 index 83ace68d8db..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-827013.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function Test() { - var f = () => 42; - delete f.length; - delete f.name; - - var g = Object.create(f); - for (var i = 0; i < 5; i++) { - g.dummy; - } - assertTrue(%HasFastProperties(f)); - - var h = f.bind(this); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-830565.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-830565.js deleted file mode 100644 index 00f49bb9ffb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-830565.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -load('test/mjsunit/test-async.js'); - -testAsync(assert => { - assert.plan(1); - const error = new TypeError('Throwing'); - Promise.resolve({ then(resolve, reject) { - throw error; - }}).then(v => { - assert.unreachable(); - }, e => { - assert.equals(error, e); - }); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-831943.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-831943.js deleted file mode 100644 index b69da066551..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-831943.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -class MyRegExp extends RegExp { - exec(str) { - const r = super.exec.call(this, str); - if (r) r[0] = 0; - return r; - } -} - -const result = 'a'.match(new MyRegExp('.', 'g')); -assertArrayEquals(result, ['0']); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-831984.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-831984.js deleted file mode 100644 index c4833232c4e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-831984.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -let arr = [...Array(9000)]; -for (let j = 0; j < 40; j++) { - Reflect.ownKeys(arr).shift(); - Array(64386); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-840220.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-840220.js deleted file mode 100644 index 8245635463d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-840220.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var boundFunction = (function(){}).bind(); - -var instance = new Uint8Array() -instance.constructor = { - [Symbol.species]: boundFunction -}; - -assertThrows(() => instance.map(each => each * 2), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-841592.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-841592.js deleted file mode 100644 index bc64fd977c9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-841592.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// a has packed SMI elements -a = []; - -// a has dictionary elements -a.length = 0xFFFFFFF; - -// a has dictionary elements and the backing array is -// empty_slow_element_dictionary (length 0) -a.length = 0; - -// a has dictionary elements and the backing array is -// empty_slow_element_dictionary (length 0xFFFFFFF) -a.length = 0xFFFFFFF; - -// This will crash if V8 attempts to remove 0 elements from -// empty_slow_element_dictionary as it is in RO_SPACE. -a.length = 1; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-843022.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-843022.js deleted file mode 100644 index 868054fa61f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-843022.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Produce an fast, but empty result. -const fast_regexp_result = /./g.exec("a"); -fast_regexp_result.length = 0; -class RegExpWithFastResult extends RegExp { - constructor() { super(".", "g"); this.number_of_runs = 0; } - exec(str) { return (this.number_of_runs++ == 0) ? fast_regexp_result : null; } -} - -// A slow empty result. -const slow_regexp_result = []; -class RegExpWithSlowResult extends RegExp { - constructor() { super(".", "g"); this.number_of_runs = 0; } - exec(str) { return (this.number_of_runs++ == 0) ? slow_regexp_result : null; } -} - -assertEquals(["undefined"], "a".match(new RegExpWithFastResult())); -assertEquals(["undefined"], "a".match(new RegExpWithSlowResult())); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-848165.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-848165.js deleted file mode 100644 index 670e70fe689..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-848165.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -class cls0 { - static get length(){ return 42; }; - static get [1](){ return 21; }; -}; -Object.defineProperty(cls0, "length", {value:'1'}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-849024.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-849024.js deleted file mode 100644 index a1df5777df8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-849024.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -this.__proto__ = new Proxy({}, {}); - -function test1() { - eval("bla"); -} - -assertThrows(test1, ReferenceError); -assertThrows(test1, ReferenceError); -assertThrows(test1, ReferenceError); - -function test2() { - gc(); - eval("bla"); -} - -assertThrows(test2, ReferenceError); -assertThrows(test2, ReferenceError); -assertThrows(test2, ReferenceError); - -function foo() { - try { - eval("bla"); - } catch(e) { - return; - } - throw 1337; -} - -function test3() { - gc(); - foo(); - foo(); -} - -assertDoesNotThrow(test3); -assertDoesNotThrow(test3); -assertDoesNotThrow(test3); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-850005.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-850005.js deleted file mode 100644 index d80d4663d10..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-850005.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let args = [3.34, ]; -function f(a, b, c) {}; -f(...args); -args = args.splice(); -f(...args); -args = []; -f(...args); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-851393.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-851393.js deleted file mode 100644 index 82060b5841d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-851393.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var proxy = new Proxy({}, {}); - -Object.assign(proxy, { b: "boom", 060: "ah", o: "ouch" }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-852592.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-852592.js deleted file mode 100644 index 356c51c72ef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-852592.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const kArraySize = 1024; - -let array = []; -for (let i = 1; i < kArraySize; ++i) { - array[i] = i + 0.1; -} - -assertEquals(array.length, kArraySize); - -let executed = false; -compareFn = _ => { - if (!executed) { - executed = true; - - array.length = 1; // shrink - array.length = 0; // replace - array.length = kArraySize; // restore the original length - } -} - -array.sort(compareFn); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-854299.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-854299.js deleted file mode 100644 index 3aa296ae5ac..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-854299.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -let rand = n => Math.floor(Math.random() * n); - -for (let i = 0; i < 1000; ++i) { - array = []; - let len = rand(30); - for(let i = 0; i < len; ++i) { - array[i] = [i + 0.1]; - } - - let counter = 0; - array.sort((a, b) => { - a = a || [0]; - b = b || [0]; - - if (counter++ == rand(30)) { - array.length = 1; - gc(); - } - return a[0] - b[0]; - }); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-856095.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-856095.js deleted file mode 100644 index ae55ec65cb0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-856095.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a, b, c) { } -function a() { - let o1; - o1 = new Array(); - f(...o1); - o1[1000] = Infinity; -} - -a(); -a(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-859809.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-859809.js deleted file mode 100644 index af5dd7a904a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-859809.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -let xs = []; -const kSize = 200; -for (let i = 0; i < kSize; ++i) { - xs.push(i); -} - -let counter = 0; -xs.sort((a, b) => { - if (counter++ % 10 == 0) { - xs.shift(); - gc(); - } - - return a - b; -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-860788.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-860788.js deleted file mode 100644 index fe0dcb83af9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-860788.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-async-hooks - -try { -Object.prototype.__defineGetter__(0, function(){}); -assertThrows("x"); -} catch(e) { print("Caught: " + e); } - -try { -(function() { - let asyncIds = [], triggerIds = []; - let ah = async_hooks.createHook({ - init(asyncId, type, triggerAsyncId, resource) { - if (type !== 'PROMISE') { return; } - assertThrows("asyncIds.push(asyncId);"); - assertThrows("triggerIds.push(triggerAsyncId)"); - }, - }); - ah.enable(); - async function foo() {} - foo(); -})(); -} catch(e) { print("Caught: " + e); } -try { - var obj = {prop: 7}; - assertThrows("nonexistent(obj)"); -} catch(e) { print("Caught: " + e); } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-862538.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-862538.js deleted file mode 100644 index f5da2eecbe9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-862538.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var uvwxyzundefined; - -function __f_5778(__v_29973) { - var __v_29975 = __v_29973 + undefined; - var __v_29976 = __v_29975.substring( 20); - ({})[__v_29975]; - return eval(__v_29976); -} -__f_5778("abcdefghijklmnopqrstuvwxyz"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-865312.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-865312.js deleted file mode 100644 index 8df1bd92d2b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-865312.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const intArrayConstructors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Uint8ClampedArray -]; - -const floatArrayConstructors = [ - Float32Array, - Float64Array -]; - -const typedArrayConstructors = [...intArrayConstructors, - ...floatArrayConstructors]; - -for (let constructor of typedArrayConstructors) { - // Shadowing the length of a TypedArray should work for Array.p.fill, - // but not crash it. - let array = new constructor([2, 2]); - assertEquals(2, array.length); - - Object.defineProperty(array, 'length', {value: 5}); - Array.prototype.fill.call(array, 5); - - assertArrayEquals([5, 5], [array[0], array[1]]); - assertEquals(undefined, array[2]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-865892.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-865892.js deleted file mode 100644 index f2d2f6ff71e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-865892.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-async-hooks - -let ah = async_hooks.createHook( -{ - init(asyncId, type) { - if (type !== 'PROMISE') { return; } - assertThrows('asyncIds.push(asyncId);'); - } -}); -ah.enable(); - -async function foo() { - let x = { toString() { return 'modules-skip-1.js' } }; - assertThrows('await import(x);'); -} -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-866315.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-866315.js deleted file mode 100644 index 4eb032d78e1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-866315.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-async-hooks - -let num = 42; -let ah = async_hooks.createHook({}); - -num.__proto__.__proto__ = ah; -assertThrows('num.enable()'); -assertThrows('num.disable()'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-867776.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-867776.js deleted file mode 100644 index 76d21216409..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-867776.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -for (var i = 0; i < 3; i++) { - var array = new BigInt64Array(200); - - function evil_callback() { - %ArrayBufferDetach(array.buffer); - gc(); - return 1094795585n; - } - - var evil_object = {valueOf: evil_callback}; - var root; - try { - root = BigInt64Array.of.call(function() { return array }, evil_object); - } catch(e) {} - gc(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-869313.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-869313.js deleted file mode 100644 index 1b4f9c5445a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-869313.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - try { - var a = new ArrayBuffer(1073741824); - var d = new DataView(a); - return d.getUint8() === 0; - } catch(e) { - return true; - } -} - -!f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-871886.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-871886.js deleted file mode 100644 index 011443145b7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-871886.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let arr = [1.5, 2.5]; -arr.slice(0, - { valueOf: function () { - arr.length = 0; - return 2; - } - }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-87478.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-87478.js deleted file mode 100644 index 115b3fdc127..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-87478.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that arguments access ICs correctly handle non-JSObject -// receivers. -function f(array) { return array[0]; } -function args(a) { return arguments; } -// Put the keyed load in f into the keyed-load-arguments state. -for (var i = 0; i < 10; i++) { - f(args(1)); -} -f('123'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-876443.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-876443.js deleted file mode 100644 index 33ffa020f3f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-876443.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: - -var a = [5.65]; -a.splice(0); -var b = a.splice(-4, 9, 10); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-878845.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-878845.js deleted file mode 100644 index 2913f9e8493..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-878845.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let arr = [, 0.1]; - -Array.prototype.lastIndexOf.call(arr, 100, { - valueOf() { - arr.length = 0; - } -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-879560.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-879560.js deleted file mode 100644 index a17deadfcdd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-879560.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - var x = 1; - x = undefined; - while (x--) ; -} -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-879898.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-879898.js deleted file mode 100644 index c97001ae5c2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-879898.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - return Symbol.toPrimitive++; -} -assertThrows(foo); -%OptimizeFunctionOnNextCall(foo); -assertThrows(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-880207.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-880207.js deleted file mode 100644 index 09796a9ff4d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-880207.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function TestOptimizedFastExpm1MinusZero() { - function foo() { - return Object.is(Math.expm1(-0), -0); - } - - assertTrue(foo()); - %OptimizeFunctionOnNextCall(foo); - assertTrue(foo()); -})(); - -(function TestOptimizedExpm1MinusZeroSlowPath() { - function f(x) { - return Object.is(Math.expm1(x), -0); - } - - function g() { - return f(-0); - } - - f(0); - // Compile function optimistically for numbers (with fast inlined - // path for Math.expm1). - %OptimizeFunctionOnNextCall(f); - // Invalidate the optimistic assumption, deopting and marking non-number - // input feedback in the call IC. - f("0"); - // Optimize again, now with non-lowered call to Math.expm1. - assertTrue(g()); - %OptimizeFunctionOnNextCall(g); - assertTrue(g()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-881247.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-881247.js deleted file mode 100644 index 4605c3f51bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-881247.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const resolvedPromise = Promise.resolve(); - -function spread() { - const result = { ...resolvedPromise }; - %HeapObjectVerify(result); - return result; -} - -resolvedPromise[undefined] = {a:1}; -%HeapObjectVerify(resolvedPromise); - -spread(); - -resolvedPromise[undefined] = undefined; -%HeapObjectVerify(resolvedPromise); - -spread(); -%HeapObjectVerify(resolvedPromise); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-882233-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-882233-1.js deleted file mode 100644 index 197660a683d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-882233-1.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Intended to test bug [882233] on CSA fast-path. - -let array = []; -Object.defineProperty(array, 'length', {writable: false}); - -assertEquals(array.length, 0); -assertThrows(() => array.shift(), TypeError); - -let object = { length: 0 }; -Object.defineProperty(object, 'length', {writable: false}); - -assertEquals(object.length, 0); -assertThrows(() => Array.prototype.shift.call(object)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-882233-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-882233-2.js deleted file mode 100644 index 565e5fbc23b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-882233-2.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -// Intended to test bug [882233] on TF inlined (js-call-reducer) path. - -function shift_array() { - let array = []; - Object.defineProperty(array, 'length', {writable : false}); - return array.shift(); -} - -assertThrows(shift_array); -assertThrows(shift_array); -%OptimizeFunctionOnNextCall(shift_array); -assertThrows(shift_array); -assertOptimized(shift_array); - - -function shift_object() { - let object = { length: 0 }; - Object.defineProperty(object, 'length', {writable : false}); - return object.shift(); -} - -assertThrows(shift_object); -assertThrows(shift_object); -%OptimizeFunctionOnNextCall(shift_object); -assertThrows(shift_object); -assertOptimized(shift_object); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-884933.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-884933.js deleted file mode 100644 index 447d303bbf9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-884933.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test Uint8 -> Word64 conversions. -(function() { - function bar(x, y) { - return x + y; - } - - bar(0.1, 0.2); - bar(0.1, 0.2); - - function foo(dv) { - return bar(dv.getUint8(0, true), 0xFFFFFFFF); - } - - const dv = new DataView(new ArrayBuffer(8)); - assertEquals(0xFFFFFFFF, foo(dv)); - assertEquals(0xFFFFFFFF, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0xFFFFFFFF, foo(dv)); -})(); - -// Test Int8 -> Word64 conversions. -(function() { - function bar(x, y) { - return x + y; - } - - bar(0.1, 0.2); - bar(0.1, 0.2); - - function foo(dv) { - return bar(dv.getInt8(0, true), 0xFFFFFFFF); - } - - const dv = new DataView(new ArrayBuffer(8)); - assertEquals(0xFFFFFFFF, foo(dv)); - assertEquals(0xFFFFFFFF, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0xFFFFFFFF, foo(dv)); -})(); - -// Test Uint16 -> Word64 conversions. -(function() { - function bar(x, y) { - return x + y; - } - - bar(0.1, 0.2); - bar(0.1, 0.2); - - function foo(dv) { - return bar(dv.getUint16(0, true), 0xFFFFFFFF); - } - - const dv = new DataView(new ArrayBuffer(8)); - assertEquals(0xFFFFFFFF, foo(dv)); - assertEquals(0xFFFFFFFF, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0xFFFFFFFF, foo(dv)); -})(); - -// Test Int16 -> Word64 conversions. -(function() { - function bar(x, y) { - return x + y; - } - - bar(0.1, 0.2); - bar(0.1, 0.2); - - function foo(dv) { - return bar(dv.getInt16(0, true), 0xFFFFFFFF); - } - - const dv = new DataView(new ArrayBuffer(8)); - assertEquals(0xFFFFFFFF, foo(dv)); - assertEquals(0xFFFFFFFF, foo(dv)); - %OptimizeFunctionOnNextCall(foo); - assertEquals(0xFFFFFFFF, foo(dv)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-885404.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-885404.js deleted file mode 100644 index 534b883a012..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-885404.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --verify-heap --expose-gc - -var ab = new ArrayBuffer(2); -try { new Int32Array(ab); } catch (e) { } -assertEquals(2, ab.byteLength); -gc(); -assertEquals(2, ab.byteLength); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-887891.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-887891.js deleted file mode 100644 index 0e72ab263a2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-887891.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap - -const l = 1000000000; -const a = []; -function foo() { var x = new Int32Array(l); } -try { foo(); } catch (e) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-888825.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-888825.js deleted file mode 100644 index 9aa52d62e1d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-888825.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -eval("((a=function g() { function g() {}}) => {})();"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-890243.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-890243.js deleted file mode 100644 index 0d889b27873..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-890243.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// We need a SpeculativeNumberAdd with Number feedback. -function bar(x) { return x + x; } -bar(0.1); - -// We also need an indirection via an object field such -// that only after escape analysis TurboFan can figure -// out that the value `y` is actually a Number in the -// safe integer range. -function baz(y) { return {y}; } -baz(null); baz(0); - -// Now we can put all of that together to get a kRepBit -// use of a kWord64 value (on 64-bit architectures). -function foo(o) { - return !baz(bar(o.x)).y; -} - -assertFalse(foo({x:1})); -assertFalse(foo({x:1})); -%OptimizeFunctionOnNextCall(foo); -assertFalse(foo({x:1})); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-891627.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-891627.js deleted file mode 100644 index afe4093c96c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-891627.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// We need a NumberModulus, so we make sure that we have a -// SpeculativeNumberModulus with Number feedback, and later -// on use it with known Number inputs (via the bitwise or), -// such that JSTypedLowering turns it into the NumberModulus. -function bar(x) { return x % 2; } -bar(0.1); - -// Check that the Word32->Float64 conversion works properly. -(function() { - function foo(x) { - // The NumberEqual identifies 0 and -0. - return bar(x | -1) == 4294967295; - } - - assertFalse(foo(1)); - assertFalse(foo(0)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1)); - assertFalse(foo(0)); -})(); - -// Check that the Word32->Word32 conversion works properly. -(function() { - function makeFoo(y) { - return function foo(x) { - return bar(x | -1) == y; - } - } - makeFoo(0); // Defeat the function context specialization. - const foo = makeFoo(1); - - assertFalse(foo(1)); - assertFalse(foo(0)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1)); - assertFalse(foo(0)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-892472-1.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-892472-1.js deleted file mode 100644 index d6332fd3991..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-892472-1.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --async-stack-traces - -const a = /x/; -a.exec = RegExp.prototype.test; -assertThrows(() => RegExp.prototype.test.call(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-892472-2.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-892472-2.js deleted file mode 100644 index 0f9a2c18164..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-892472-2.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --async-stack-traces - -assertThrows(_ => '' + {toString: Object.prototype.toLocaleString}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-895199.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-895199.js deleted file mode 100644 index 7975ffc6990..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-895199.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - var a = new Array(2); - a[0] = 23.1234; - a[1] = 25.1234; - %DeoptimizeNow(); - return a[2]; -} -foo(); -foo(); -%OptimizeFunctionOnNextCall(foo); -foo() diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-896181.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-896181.js deleted file mode 100644 index 9aef4fc1d5f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-896181.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = new Array(); -a[0] = 0.1; -a[2] = 0.2; -Object.defineProperty(a, 1, { - get: function() { - a[4] = 0.3; - }, -}); - -assertSame('0.1,,0.2', a.join()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-896700.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-896700.js deleted file mode 100644 index 3e6232a96f3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-896700.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --async-stack-traces --expose-async-hooks - -async_hooks.createHook({ - after() { throw new Error(); } -}).enable(); -Promise.resolve().then(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-897098.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-897098.js deleted file mode 100644 index fe11aa17f60..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-897098.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const arr = [1.1,2.2,3.3]; -arr.pop(); -const start = {toString: function() {arr.pop();}} -arr.includes(0, start); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-897404.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-897404.js deleted file mode 100644 index 7e8b48de85c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-897404.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function TestError() {} - -const a = new Array(2**32 - 1); - -// Force early exit to avoid an unreasonably long test. -a[0] = { - toString() { throw new TestError(); } -}; - -// Verify join throws test error and does not fail due to asserts (Negative -// length fixed array allocation). -assertThrows(() => a.join(), TestError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-897406.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-897406.js deleted file mode 100644 index 62eeeebbef5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-897406.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --async-stack-traces --expose-async-hooks - -async_hooks.createHook({ - after() { throw new Error(); } -}).enable(); - -(async function() { - await 1; - await 1; -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-897514.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-897514.js deleted file mode 100644 index 822a6bcf5e7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-897514.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Create transtion => 'get a'. -let o = {}; -Object.defineProperty(o, 'a', { - enumerable: true, - configurable: true, - get: function() { return 7 } -}); - -function spread(o) { - let result = { ...o }; - %HeapObjectVerify(result); - return result; -} - -for (let i = 0; i<3; i++) { - spread([]); - // Use different transition => 'a'. - spread({ a:0 }); - spread("abc"); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-898785.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-898785.js deleted file mode 100644 index 668b095c6ef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-898785.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = [0, 1]; -var o = { [Symbol.toPrimitive]() { a.length = 1; return 2; } }; - -a.push(2); -a.lastIndexOf(5, o); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-898974.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-898974.js deleted file mode 100644 index 1b9b07ab748..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-898974.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Module(global, env, buffer) { - "use asm"; - var HEAPF64 = new global.Float64Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var Math_fround = global.Math.fround; - function main_d_f() { - HEAPF64[0] = Math_fround(+HEAPF64[0]); - } - function main_d_fq() { - HEAPF64[1] = HEAPF32[4096]; - } - function main_f_dq() { - HEAPF32[4] = HEAPF64[4096]; - } - return {main_d_f: main_d_f, main_d_fq: main_d_fq, main_f_dq: main_f_dq}; -}; -let buffer = new ArrayBuffer(4096); -let module = Module(this, undefined, buffer); -let view64 = new Float64Array(buffer); -let view32 = new Float32Array(buffer); -assertEquals(view64[0] = 2.3, view64[0]); -module.main_d_f(); -module.main_d_fq(); -module.main_f_dq(); -assertTrue(%IsAsmWasmCode(Module)); -assertEquals(Math.fround(2.3), view64[0]); -assertTrue(isNaN(view64[1])); -assertTrue(isNaN(view32[4])); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-899464.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-899464.js deleted file mode 100644 index 1deaa30c2d1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-899464.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --harmony-string-matchall - -''.matchAll(/./u); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-899524.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-899524.js deleted file mode 100644 index 32d28c9b091..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-899524.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function empty() { } - -function baz(expected, found) { - var start = ""; - found.length, start + 'x'; - if (expected.length === found.length) { - for (var i = 0; i < expected.length; ++i) { - empty(found[i]); - } - } -} - -baz([1], new (class A extends Array {})); - -(function () { - "use strict"; - function bar() { - baz([1,2], arguments); - } - function foo() { - bar(2147483648,-[]); - } - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-899535.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-899535.js deleted file mode 100644 index aab112bb7dc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-899535.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let a = [1.1, 2.2, 3.3]; -a.includes(4.4, { toString: () => a.length = 0 }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-900674.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-900674.js deleted file mode 100644 index 7549b36a4e7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-900674.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { - let val = Promise.resolve().then(); -} -foo(); -%OptimizeFunctionOnNextCall(foo); -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-902395.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-902395.js deleted file mode 100644 index 79aaecf6fa3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-902395.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function opt() { - try{ - Object.seal({}) - }finally{ - try{ - // Carefully crafted by clusterfuzz to alias the temporary object literal - // register with the below dead try block's context register. - ( - { - toString(){ - } - } - ).apply(-1).x( ) - } - finally{ - if(2.2) - { - return - } - // This code should be dead. - try{ - Reflect.construct - }finally{ - } - } - } -} - -opt(); -%OptimizeFunctionOnNextCall(opt); -opt(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-902610.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-902610.js deleted file mode 100644 index 11b88f288ba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-902610.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows(() => { - // Make a function with 65535 args. This should throw a SyntaxError because -1 - // is reserved for the "don't adapt arguments" sentinel. - var f_with_65535_args = - eval("(function(" + Array(65535).fill("x").join(",") + "){})"); - f_with_65535_args(); -}, SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-902672.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-902672.js deleted file mode 100644 index 4073b554e91..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-902672.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = this; -var b = {}; -a.length = 4294967296; // 2 ^ 32 (max array length + 1) -assertThrows(() => Array.prototype.join.call(a,b), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-903043.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-903043.js deleted file mode 100644 index a877e6e12ab..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-903043.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo() { - const x = 1e-1; - return Object.is(-0, x * (-1e-308)); - } - - assertFalse(foo()); - assertFalse(foo()); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo()); -})(); - -(function() { - function foo(x) { - return Object.is(-0, x * (-1e-308)); - } - - assertFalse(foo(1e-1)); - assertFalse(foo(1e-1)); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1e-1)); -})(); - -(function() { - function foo(x) { - return Object.is(-0, x); - } - - assertFalse(foo(1e-1 * (-1e-308))); - assertFalse(foo(1e-1 * (-1e-308))); - %OptimizeFunctionOnNextCall(foo); - assertFalse(foo(1e-1 * (-1e-308))); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-905457.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-905457.js deleted file mode 100644 index 3a97a875203..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-905457.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo(x) { - return Math.abs(Math.min(+x, 0)); - } - - assertEquals(NaN, foo()); - assertEquals(NaN, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(NaN, foo()); -})(); - -(function() { - function foo(x) { - return Math.abs(Math.min(-x, 0)); - } - - assertEquals(NaN, foo()); - assertEquals(NaN, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(NaN, foo()); -})(); - -(function() { - function foo(x) { - return Math.abs(Math.max(0, +x)); - } - - assertEquals(NaN, foo()); - assertEquals(NaN, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(NaN, foo()); -})(); - -(function() { - function foo(x) { - return Math.abs(Math.max(0, -x)); - } - - assertEquals(NaN, foo()); - assertEquals(NaN, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(NaN, foo()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-906043.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-906043.js deleted file mode 100644 index dbc283fa9f8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-906043.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function fun(arg) { - let x = arguments.length; - a1 = new Array(0x10); - a1[0] = 1.1; - a2 = new Array(0x10); - a2[0] = 1.1; - a1[(x >> 16) * 21] = 1.39064994160909e-309; // 0xffff00000000 - a1[(x >> 16) * 41] = 8.91238232205e-313; // 0x2a00000000 -} - -var a1, a2; -var a3 = [1.1, 2.2]; -a3.length = 0x11000; -a3.fill(3.3); - -var a4 = [1.1]; - -for (let i = 0; i < 3; i++) fun(...a4); -%OptimizeFunctionOnNextCall(fun); -fun(...a4); - -res = fun(...a3); - -assertEquals(16, a2.length); -for (let i = 8; i < 32; i++) { - assertEquals(undefined, a2[i]); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-906220.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-906220.js deleted file mode 100644 index 580ff59bdd8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-906220.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo() { new Array().pop(); } - -assertEquals(undefined, foo()); -assertEquals(undefined, foo()); -%OptimizeFunctionOnNextCall(foo); -assertEquals(undefined, foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-906870.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-906870.js deleted file mode 100644 index d94ee67a4c9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-906870.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function foo() { - return Infinity / Math.max(-0, +0); - } - - assertEquals(+Infinity, foo()); - assertEquals(+Infinity, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(+Infinity, foo()); -})(); - -(function() { - function foo() { - return Infinity / Math.max(+0, -0); - } - - assertEquals(+Infinity, foo()); - assertEquals(+Infinity, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(+Infinity, foo()); -})(); - -(function() { - function foo() { - return Infinity / Math.min(-0, +0); - } - - assertEquals(-Infinity, foo()); - assertEquals(-Infinity, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-Infinity, foo()); -})(); - -(function() { - function foo() { - return Infinity / Math.min(+0, -0); - } - - assertEquals(-Infinity, foo()); - assertEquals(-Infinity, foo()); - %OptimizeFunctionOnNextCall(foo); - assertEquals(-Infinity, foo()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-90771.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-90771.js deleted file mode 100644 index b541ff8cc21..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-90771.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -// Flags: --allow-natives-syntax -function target() {}; - -for (let key of Object.getOwnPropertyNames(this)) { - try { - let newTarget = this[key]; - let arg = target; - Reflect.construct(target, arg, newTarget); - } catch {} -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-908309.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-908309.js deleted file mode 100644 index c2d939001da..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-908309.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const p = Object.defineProperty(Promise.resolve(), 'then', { - value() { return 0; } -}); - -(function() { - function foo() { return p.catch().catch(); } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); -})(); - -(function() { - function foo() { return p.finally().finally(); } - - assertThrows(foo, TypeError); - assertThrows(foo, TypeError); - %OptimizeFunctionOnNextCall(foo); - assertThrows(foo, TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-909614.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-909614.js deleted file mode 100644 index 4070c9b8212..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-909614.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let just_under = 2n ** 30n - 1n; -let just_above = 2n ** 30n; - -assertDoesNotThrow(() => { var dummy = 2n ** just_under; }); -assertThrows(() => { var dummy = 2n ** just_above; }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-911416.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-911416.js deleted file mode 100644 index 60d7ae892ac..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-911416.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals(7, ({[Symbol.hasInstance.description]:7})["Symbol.hasInstance"]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-913212.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-913212.js deleted file mode 100644 index 2de99d6efc8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-913212.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const globalThis = this; -Object.setPrototypeOf(this, new Proxy({}, { - get(target, prop, receiver) { - assertTrue(receiver === globalThis); - } -})); -undefined_name_access diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-913296.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-913296.js deleted file mode 100644 index 3fab06607f5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-913296.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(trigger) { - return Object.is((trigger ? -0 : 0) - 0, -0); -} - -assertFalse(foo(false)); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-915783.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-915783.js deleted file mode 100644 index 9220b4aa54a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-915783.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const constructors = [ - [Uint8Array, [0, 1]], - [Int8Array, [0, 1]], - [Uint16Array, [0, 1]], - [Int16Array, [0, 1]], - [Uint32Array, [0, 1]], - [Int32Array, [0, 1]], - [Float32Array, [0, 1]], - [Float64Array, [0, 1]], - [Uint8ClampedArray, [0, 1]], - [BigInt64Array, [0n, 1n]], - [BigUint64Array, [0n, 1n]] -]; - -let typedArray; -function detachBuffer() { - %ArrayBufferDetach(typedArray.buffer); - return 'a'; -} -Number.prototype.toString = detachBuffer; -BigInt.prototype.toString = detachBuffer; -Number.prototype.toLocaleString = detachBuffer; -BigInt.prototype.toLocaleString = detachBuffer; - -constructors.forEach(([constructor, arr]) => { - typedArray = new constructor(arr); - assertSame(typedArray.join(), '0,1'); - assertSame(typedArray.toLocaleString(), 'a,'); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-916288.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-916288.js deleted file mode 100644 index aa170c93838..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-916288.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("(a()=0)=>0", SyntaxError) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-917076.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-917076.js deleted file mode 100644 index 7c19c022045..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-917076.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -let speciesCounter = 0; - -Object.defineProperty(Promise, Symbol.species, { - value: function(...args) { - speciesCounter++; - return new Promise(...args); - } -}); - -async function foo() { } - -assertPromiseResult(Promise.all([foo()]), () => { - assertEquals(3, speciesCounter); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-917980.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-917980.js deleted file mode 100644 index 18dc782400b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-917980.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const constructors = [ - [Uint8Array, [0, 1]], - [Int8Array, [0, 1]], - [Uint16Array, [0, 1]], - [Int16Array, [0, 1]], - [Uint32Array, [0, 1]], - [Int32Array, [0, 1]], - [Float32Array, [0, 1]], - [Float64Array, [0, 1]], - [Uint8ClampedArray, [0, 1]], - [BigInt64Array, [0n, 1n]], - [BigUint64Array, [0n, 1n]] -]; - -let typedArray; - -const separator = { - toString() { - %ArrayBufferDetach(typedArray.buffer); - return '*'; - } -}; - -constructors.forEach(([constructor, arr]) => { - typedArray = new constructor(arr); - assertSame(typedArray.join(separator), '*'); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-920184.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-920184.js deleted file mode 100644 index c38f1817507..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-920184.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --verify-heap --enable-slow-asserts - -var Ctor = function() { - return []; -}; -var a = ["one", "two", "three"]; -a.constructor = {}; -a.constructor[Symbol.species] = Ctor; - -a.filter(function() { return true; }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-923264.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-923264.js deleted file mode 100644 index e8c0d430228..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-923264.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --verify-heap --expose-gc - -let paramName = ''; -for (let i=0; i < 2**10; i++) { - paramName += 'a'; -} - -let params = ''; -for (let i = 0; i < 2**10; i++) { - params += paramName + i + ','; -} - -let fn = eval(`( - class A { - constructor (${params}) { - function lazy() { - return function lazier() { return ${paramName+1} } - }; - return lazy; - } -})`); - -gc() diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-923265.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-923265.js deleted file mode 100644 index 8e6125b34be..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-923265.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let a = {0: 5, 1: 4, 2: 3, length: 2}; -Object.freeze(a); - -assertThrows(() => Array.prototype.sort.call(a)); -assertPropertiesEqual({0: 5, 1: 4, 2: 3, length: 2}, a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-923705.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-923705.js deleted file mode 100644 index 9cdb98b15b2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-923705.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --verify-heap - -function __f_5() { - function __f_1() { - function __f_0() { - ({y = eval()}) => assertEquals()(); - } - } -} - -__f_5(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-926819.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-926819.js deleted file mode 100644 index 060c72f60e7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-926819.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("a(function(){{let f;function f}})", SyntaxError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-926856.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-926856.js deleted file mode 100644 index a3fa9344839..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-926856.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Need a fast array with enough elements to surpass -// kMaxRegularHeapObjectSize. -var size = 63392; -var a = []; -function build() { - for (let i = 0; i < size; i++) { - a.push(i); - } -} - -build(); - -function c(v) { return v + 0.5; } -a.map(c); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-create-exception.js b/implementation-contributed/v8/mjsunit/regress/regress-create-exception.js deleted file mode 100644 index 440449cf5fd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-create-exception.js +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --max-semi-space-size=1 -"use strict"; - -// Check for GC bug constructing exceptions. -var v = [1, 2, 3, 4] - -Object.preventExtensions(v); - -function foo() { - var re = /2147483647/; // Equal to 0x7fffffff. - for (var i = 0; i < 10000; i++) { - var ok = false; - try { - var j = 1; - // Allocate some heap numbers in order to randomize the behaviour of the - // garbage collector. 93 is chosen to be a prime number to avoid the - // allocation settling into a too neat pattern. - for (var j = 0; j < i % 93; j++) { - j *= 1.123567; // An arbitrary floating point number. - } - v[0x7fffffff] = 0; // Trigger exception. - assertTrue(false); - return j; // Make sure that future optimizations don't eliminate j. - } catch(e) { - ok = true; - assertTrue(re.test(e), 'e: ' + e); - } - assertTrue(ok); - } -} - -foo(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-deep-proto.js b/implementation-contributed/v8/mjsunit/regress/regress-deep-proto.js deleted file mode 100644 index 6b1387447d4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-deep-proto.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function poly(x) { - return x.foo; -} - -var one = {foo: 0}; -var two = {foo: 0, bar: 1}; -var three = {bar: 0}; -three.__proto__ = {}; -three.__proto__.__proto__ = {}; -three.__proto__.__proto__.__proto__ = {}; -three.__proto__.__proto__.__proto__.__proto__ = {}; -three.__proto__.__proto__.__proto__.__proto__.__proto__ = {}; - -poly(one); -poly(two); -poly(three); - -%OptimizeFunctionOnNextCall(poly); - -poly(one); -poly(two); -poly(three); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-delete-empty-double.js b/implementation-contributed/v8/mjsunit/regress/regress-delete-empty-double.js deleted file mode 100644 index c27cb55a2a6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-delete-empty-double.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -a = [1.1,2.2,3.3]; -a.length = 1; -delete a[1]; - -assertTrue(%HasDoubleElements(a)); -assertFalse(%HasHoleyElements(a)); - -delete a[0]; - -assertTrue(%HasDoubleElements(a)); -assertTrue(%HasHoleyElements(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-deopt-gc.js b/implementation-contributed/v8/mjsunit/regress/regress-deopt-gc.js deleted file mode 100644 index a74e2c5ea44..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-deopt-gc.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -// This tests that we can correctly handle a GC immediately after a function -// has been deoptimized, even when we have an activation of this function on -// the stack. - -// Ensure that there is code objects before the code for the opt_me function. -(function() { var a = 10; a++; })(); - -function opt_me() { - deopt(); -} - -function deopt() { - // Make sure we don't inline this function - try { var a = 42; } catch(o) {}; - %DeoptimizeFunction(opt_me); - gc(); -} - - -opt_me(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-deopt-gcb.js b/implementation-contributed/v8/mjsunit/regress/regress-deopt-gcb.js deleted file mode 100644 index fed92b424f9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-deopt-gcb.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -// This tests that we can correctly handle a GC immediately after a function -// has been deoptimized, even when we have an activation of this function on -// the stack. - -// Ensure that there is code objects before the code for the opt_me function. -(function() { var a = 10; a++; })(); - -function opt_me() { - deopt(); -} - -// Make sure we don't inline this function -%NeverOptimizeFunction(deopt); -function deopt() { - %DeoptimizeFunction(opt_me); - gc(); -} - - -opt_me(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-deopt-in-array-literal-spread.js b/implementation-contributed/v8/mjsunit/regress/regress-deopt-in-array-literal-spread.js deleted file mode 100644 index 8bebbe27f58..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-deopt-in-array-literal-spread.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a,b,c,d) { return [a, ...(%DeoptimizeNow(), [b,c]), d]; } - -assertEquals([1,2,3,4], f(1,2,3,4)); -assertEquals([1,2,3,4], f(1,2,3,4)); -%OptimizeFunctionOnNextCall(f); -assertEquals([1,2,3,4], f(1,2,3,4)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-deopt-store-effect.js b/implementation-contributed/v8/mjsunit/regress/regress-deopt-store-effect.js deleted file mode 100644 index 59094d3aeb7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-deopt-store-effect.js +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test deopt after generic store with effect context. -var pro = { x : 1 } -var a = {} -a.__proto__ = pro -delete pro.x - -function g(o) { - return 7 + (o.z = 1, 20); -} - -g(a); -g(a); -%OptimizeFunctionOnNextCall(g); -Object.defineProperty(pro, "z", { - set: function(v) { %DeoptimizeFunction(g); }, - get: function() { return 20; } -}); - -assertEquals(27, g(a)); - -// Test deopt after polymorphic as monomorphic store with effect context. - -var i = { z : 2, r : 1 } -var j = { z : 2 } -var p = { a : 10 } -var pp = { a : 20, b : 1 } - -function bar(o, p) { - return 7 + (o.z = 1, p.a); -} - -bar(i, p); -bar(i, p); -bar(j, p); -%OptimizeFunctionOnNextCall(bar); -assertEquals(27, bar(i, pp)); - -// Test deopt after polymorphic store with effect context. - -var i = { r : 1, z : 2 } -var j = { z : 2 } -var p = { a : 10 } -var pp = { a : 20, b : 1 } - -function bar1(o, p) { - return 7 + (o.z = 1, p.a); -} - -bar1(i, p); -bar1(i, p); -bar1(j, p); -%OptimizeFunctionOnNextCall(bar1); -assertEquals(27, bar1(i, pp)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-deoptimize-constant-keyed-load.js b/implementation-contributed/v8/mjsunit/regress/regress-deoptimize-constant-keyed-load.js deleted file mode 100644 index ed63133c0fc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-deoptimize-constant-keyed-load.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = { }; -o.__defineGetter__("progressChanged", function() { %DeoptimizeFunction(f); return 10; }) - -function g(a, b, c) { - return a + b + c; -} - -function f() { - var t="progressChanged"; - return g(1, o[t], 100); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -assertEquals(111, f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-dictionary-to-fast-arguments.js b/implementation-contributed/v8/mjsunit/regress/regress-dictionary-to-fast-arguments.js deleted file mode 100644 index f12679a663d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-dictionary-to-fast-arguments.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a, b) { - for (var i = 10000; i > 0; i--) { - arguments[i] = 0; - } -} - -f(1.5, 2.5); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-directive.js b/implementation-contributed/v8/mjsunit/regress/regress-directive.js deleted file mode 100644 index ff38f864690..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-directive.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - 'use strict' - in Number -} - -f.arguments diff --git a/implementation-contributed/v8/mjsunit/regress/regress-double-canonicalization.js b/implementation-contributed/v8/mjsunit/regress/regress-double-canonicalization.js deleted file mode 100644 index 2b345d2bb70..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-double-canonicalization.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var ab = new ArrayBuffer(8); -var i_view = new Int32Array(ab); -i_view[0] = %GetHoleNaNUpper() -i_view[1] = %GetHoleNaNLower(); -var hole_nan = (new Float64Array(ab))[0]; - -var array = []; - -function write() { - array[0] = hole_nan; -} - -write(); -%OptimizeFunctionOnNextCall(write); -write(); -array[1] = undefined; -assertTrue(isNaN(array[0])); -assertEquals("number", typeof array[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-double-property.js b/implementation-contributed/v8/mjsunit/regress/regress-double-property.js deleted file mode 100644 index 2ddb45b4b66..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-double-property.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a) { - return {0.1: a}; -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-embedded-cons-string.js b/implementation-contributed/v8/mjsunit/regress/regress-embedded-cons-string.js deleted file mode 100644 index b95b619d39b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-embedded-cons-string.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc --allow-natives-syntax -// Flags: --concurrent-recompilation --block-concurrent-recompilation -// Flags: --opt --no-always-opt - -if (!%IsConcurrentRecompilationSupported()) { - print("Concurrent recompilation is disabled. Skipping this test."); - quit(); -} - -function test(fun) { - fun(); - fun(); - // Mark for concurrent optimization. - %OptimizeFunctionOnNextCall(fun, "concurrent"); - // Kick off recompilation. - fun(); - // Tenure cons string after compile graph has been created. - gc(); - // In the mean time, concurrent recompiling is still blocked. - assertUnoptimized(fun, "no sync"); - // Let concurrent recompilation proceed. - %UnblockConcurrentRecompilation(); - // Concurrent recompilation eventually finishes, embeds tenured cons string. - assertOptimized(fun, "sync"); - // Visit embedded cons string during mark compact. - gc(); -} - -function f() { - return "abcdefghijklmn" + "123456789"; -} - -function g() { - return "abcdefghijklmn\u2603" + "123456789"; -} - -function h() { - return "abcdefghijklmn\u2603" + "123456789\u2604"; -} - -test(f); -test(g); -test(h); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-empty-fixed-double-array.js b/implementation-contributed/v8/mjsunit/regress/regress-empty-fixed-double-array.js deleted file mode 100644 index 1db9e2b3e54..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-empty-fixed-double-array.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --enable-slow-asserts - -function f(a, x) { - a.shift(); - a[0] = x; -} - -f([1], 1.1); -f([1], 1.1); -%OptimizeFunctionOnNextCall(f); -f([1], 1.1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-ensure-initial-map.js b/implementation-contributed/v8/mjsunit/regress/regress-ensure-initial-map.js deleted file mode 100644 index dbd4762fcda..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-ensure-initial-map.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var x = Object.getOwnPropertyDescriptor({get x() {}}, "x").get; -function f(o, b) { - if (b) { - return o instanceof x; - } -} - -%OptimizeFunctionOnNextCall(f); -f(); - -function g() { - return new x(); -} - -%OptimizeFunctionOnNextCall(g); -assertThrows(()=>g()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-enum-prop-keys-cache-size.js b/implementation-contributed/v8/mjsunit/regress/regress-enum-prop-keys-cache-size.js deleted file mode 100644 index 1227500eeaf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-enum-prop-keys-cache-size.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --stress-compaction - -%SetAllocationTimeout(100000, 100000); - -var x = {}; -x.a = 1; -x.b = 2; -x = {}; - -var y = {}; -y.a = 1; - -%SetAllocationTimeout(100000, 0); - -for (var z in y) { } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-escape-preserve-smi-representation.js b/implementation-contributed/v8/mjsunit/regress/regress-escape-preserve-smi-representation.js deleted file mode 100644 index fd899d64e23..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-escape-preserve-smi-representation.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function deepEquals(a, b) { - if (a === b) { if (a === 0) return (1 / a) === (1 / b); return true; } - if (typeof a != typeof b) return false; - if (typeof a == "number") return isNaN(a) && isNaN(b); - if (typeof a !== "object" && typeof a !== "function") return false; - if (objectClass === "RegExp") { return (a.toString() === b.toString()); } - if (objectClass === "Function") return false; - if (objectClass === "Array") { - var elementsCount = 0; - if (a.length != b.length) { return false; } - for (var i = 0; i < a.length; i++) { - if (!deepEquals(a[i], b[i])) return false; - } - return true; - } -} - - -function __f_1(){ - var __v_0 = []; - for(var i=0; i<2; i++){ - __v_0.push([]) - deepEquals(2, __v_0.length); - } -} -__f_1(); -%OptimizeFunctionOnNextCall(__f_1); -__f_1(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-et-clobbers-doubles.js b/implementation-contributed/v8/mjsunit/regress/regress-et-clobbers-doubles.js deleted file mode 100644 index 47fa47925fe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-et-clobbers-doubles.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax -function t_smi(a) { - a[0] = 1.5; -} - -t_smi([1,,3]); -t_smi([1,,3]); -t_smi([1,,3]); -%OptimizeFunctionOnNextCall(t_smi); -var ta = [1,,3]; -t_smi(ta); -assertEquals([1.5,,3], ta); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-eval-cache.js b/implementation-contributed/v8/mjsunit/regress/regress-eval-cache.js deleted file mode 100644 index 8f8dc18f6ce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-eval-cache.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function f() { - try { - throw 1; - } catch (e) { - var a = 0; - var b = 0; - var c = 0; - var x = 1; - var result = eval('eval("x")').toString(); - assertEquals("1", result); - } - var x = 2; - var result = eval('eval("x")').toString(); - assertEquals("2", result); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-eval-context.js b/implementation-contributed/v8/mjsunit/regress/regress-eval-context.js deleted file mode 100644 index e3762824612..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-eval-context.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - 'use strict'; - var x = 0; - - { - let x = 1; - assertEquals(1, eval("x")); - } - - { - let y = 2; - assertEquals(0, eval("x")); - } - - assertEquals(0, eval("x")); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-existing-shared-function-info.js b/implementation-contributed/v8/mjsunit/regress/regress-existing-shared-function-info.js deleted file mode 100644 index a53014c0340..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-existing-shared-function-info.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -function f() { - return function g() { - return function h() {} - } -} - -var h = f()(); - -// Make sure code has been flushed. -for (var i of Array(10)) gc(); - -f()(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-fast-empty-string.js b/implementation-contributed/v8/mjsunit/regress/regress-fast-empty-string.js deleted file mode 100644 index 9b9fea963a4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-fast-empty-string.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = {}; -o[""] = 1; -var x = {__proto__:o}; -for (i = 0; i < 3; i++) { - o[""]; -} -for (i = 0; i < 3; i++) { - assertEquals(undefined, o.x); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-fast-literal-transition.js b/implementation-contributed/v8/mjsunit/regress/regress-fast-literal-transition.js deleted file mode 100644 index 2dc6a971d47..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-fast-literal-transition.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --always-opt --expose-gc - -// Test that the elements kind of the boilerplate object is sufficiently -// checked in LFastLiteral, so that unoptimized code can transition the -// boilerplate. The --always-opt flag makes sure that optimized code is -// not thrown away at deoptimization. - -// The switch statement in f() makes sure that f() is not inlined. If we -// start inlining switch statements, we will still catch the bug on the -// final --stress-opt run. - -function f(x) { - switch(x) { - case 1: return 1.4; - case 2: return 1.5; - case 3: return {}; - default: gc(); - } -} - -function g(x) { - return [1.1, 1.2, 1.3, f(x)]; -} - -// Step 1: Optimize g() to contain a PACKED_DOUBLE_ELEMENTS boilerplate. -assertEquals([1.1, 1.2, 1.3, 1.4], g(1)); -assertEquals([1.1, 1.2, 1.3, 1.5], g(2)); -%OptimizeFunctionOnNextCall(g); - -// Step 2: Deoptimize g() and transition to PACKED_ELEMENTS boilerplate. -assertEquals([1.1, 1.2, 1.3, {}], g(3)); - -// Step 3: Cause a GC while broken clone of boilerplate is on the heap, -// hence causing heap verification to catch it. -assertEquals([1.1, 1.2, 1.3, undefined], g(4)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-filter-contexts.js b/implementation-contributed/v8/mjsunit/regress/regress-filter-contexts.js deleted file mode 100644 index d2abe003254..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-filter-contexts.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { return f.x; } -f.__proto__ = null; -f.prototype = ""; - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-force-constant-representation.js b/implementation-contributed/v8/mjsunit/regress/regress-force-constant-representation.js deleted file mode 100644 index 4ec2a6a7998..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-force-constant-representation.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Test push double as tagged. -var a = [{}]; -function f(a) { - a.push(Infinity); -} - -f(a); -f(a); -f(a); -%OptimizeFunctionOnNextCall(f); -f(a); -assertEquals([{}, Infinity, Infinity, Infinity, Infinity], a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-force-representation.js b/implementation-contributed/v8/mjsunit/regress/regress-force-representation.js deleted file mode 100644 index 8f6746b7f2c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-force-representation.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function optimize(crankshaft_test) { - crankshaft_test(); - crankshaft_test(); - %OptimizeFunctionOnNextCall(crankshaft_test); - crankshaft_test(); -} - -function f() { - var v1 = 0; - var v2 = -0; - var t = v2++; - v2++; - return Math.max(v2++, v1++); -} - -optimize(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-freeze-setter.js b/implementation-contributed/v8/mjsunit/regress/regress-freeze-setter.js deleted file mode 100644 index c5ac98667fe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-freeze-setter.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -Object.defineProperty(this, 'x', {set: function() { }}); -Object.freeze(this); -eval('"use strict"; x = 20;'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-freeze.js b/implementation-contributed/v8/mjsunit/regress/regress-freeze.js deleted file mode 100644 index 6f3de2a4c98..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-freeze.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// CountOperation -function f(o) { o.x++ }; -var o = {x: 5}; -Object.freeze(o); -f(o); -f(o); -%OptimizeFunctionOnNextCall(f); -f(o); -assertEquals(5, o.x); - -// Compound Assignment -function f2(o) { o.x+=3 }; -f2(o); -f2(o); -%OptimizeFunctionOnNextCall(f2); -f2(o); -assertEquals(5, o.x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-function-length-strict.js b/implementation-contributed/v8/mjsunit/regress/regress-function-length-strict.js deleted file mode 100644 index 77cca240548..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-function-length-strict.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the length property of a function is read-only in strict mode. - -"use strict"; - -function foo(a, b, c) { - return b; -} - -var desc = Object.getOwnPropertyDescriptor(foo, 'length'); -assertEquals(3, desc.value); -assertFalse(desc.writable); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); -assertThrows(function() { foo.length = 2; }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-fundecl.js b/implementation-contributed/v8/mjsunit/regress/regress-fundecl.js deleted file mode 100644 index fddb5895eb0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-fundecl.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test hoisting of function declarations in the optimizing -// compiler in case of deoptimization. - -function h(a, b) { - var r = a + b; - function X() { return 42; } - return r + X(); -} - -for (var i = 0; i < 5; i++) h(1,2); - -%OptimizeFunctionOnNextCall(h); - -assertEquals(45, h(1,2)); -assertEquals("foo742", h("foo", 7)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-grow-deopt.js b/implementation-contributed/v8/mjsunit/regress/regress-grow-deopt.js deleted file mode 100644 index df3a83fe8b9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-grow-deopt.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(a, v) { - a[a.length] = v; -} - -var a = [1.4]; -f(a, 1); -f(a, 2); -%OptimizeFunctionOnNextCall(f); -f(a, {}); -assertEquals(4, a.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-grow-store-smi-check.js b/implementation-contributed/v8/mjsunit/regress/regress-grow-store-smi-check.js deleted file mode 100644 index 381141d5231..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-grow-store-smi-check.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// The below test function was generated from part of a WebKit layout -// test library setup routine: fast/canvas/webgl/resources/pnglib.js - -function test(crc32) { - for (var i = 0; i < 256; i++) { - var c = i; - for (var j = 0; j < 8; j++) { - if (c & 1) { - c = -306674912 ^ ((c >> 1) & 0x7fffffff); - } else { - c = (c >> 1) & 0x7fffffff; - } - } - crc32[i] = c; - } -} - -var a = [0.5]; -for (var i = 0; i < 256; ++i) a[i] = i; - -test([0.5]); -test(a); -%OptimizeFunctionOnNextCall(test); -test(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-gvn-ftt.js b/implementation-contributed/v8/mjsunit/regress/regress-gvn-ftt.js deleted file mode 100644 index dee57654386..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-gvn-ftt.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --track-field-types - -function A(id) { - this.id = id; -} - -var a1 = new A(1); -var a2 = new A(2); - - -var g; -function f(o, value) { - g = o.o; - o.o = value; - return o.o; -} - -var obj = {o: a1}; - -f(obj, a1); -f(obj, a1); -%OptimizeFunctionOnNextCall(f); -assertEquals(a2.id, f(obj, a2).id); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-hoist-load-named-field.js b/implementation-contributed/v8/mjsunit/regress/regress-hoist-load-named-field.js deleted file mode 100644 index 7df07a04ce3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-hoist-load-named-field.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Load fields should not be hoisted beyond their check maps when the check maps -// cannot be hoisted due to changes in elements kinds. -function f(o, a) { - var v; - var i = 1; - while (i < 2) { - v = o.y; - a[0] = 1.5; - i++; - } - return v; -} - -f({y:1.4}, [1]); -f({y:1.6}, [1]); -%OptimizeFunctionOnNextCall(f); -f({x:1}, [1]); - -// Polymorphic loads should not be hoisted beyond their compare maps. -function f2(o) { - var i = 0; - var v; - while (i < 1) { - v = o.x; - i++; - } - return v; -} - -var o1 = { x: 1.5 }; -var o2 = { y: 1, x: 1 }; - -f2(o1); -f2(o1); -f2(o2); -%OptimizeFunctionOnNextCall(f2); -f2(o2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-indirect-push-unchecked.js b/implementation-contributed/v8/mjsunit/regress/regress-indirect-push-unchecked.js deleted file mode 100644 index dca7e96d4e8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-indirect-push-unchecked.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = [1.5]; - -function p() { - Array.prototype.push.call(a, 1.7); -} - -p(); -p(); -p(); -%OptimizeFunctionOnNextCall(p); -p(); -a.push({}); -p(); -assertEquals(1.7, a[a.length - 1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-inline-arrow-as-construct.js b/implementation-contributed/v8/mjsunit/regress/regress-inline-arrow-as-construct.js deleted file mode 100644 index bd8fa311023..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-inline-arrow-as-construct.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// This tests that inlining a constructor call to a function which cannot be -// used as a constructor (e.g. arrow function) still throws correctly. - -var g = () => {} - -function f() { - return new g(); -} - -assertThrows(f); -assertThrows(f); -%OptimizeFunctionOnNextCall(f); -assertThrows(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-inline-class-constructor.js b/implementation-contributed/v8/mjsunit/regress/regress-inline-class-constructor.js deleted file mode 100644 index 1d771767585..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-inline-class-constructor.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; - -var B = class extends Int32Array { } - -function f(b) { - if (b) { - null instanceof B; - } -} - -f(); -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); - -function f2() { - return new B(); -} - -%OptimizeFunctionOnNextCall(f2); -f2(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-inline-constant-load.js b/implementation-contributed/v8/mjsunit/regress/regress-inline-constant-load.js deleted file mode 100644 index 303639c74f0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-inline-constant-load.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o1 = {}; -var o2 = {}; - -function foo(x) { - return x.bar; -} - -Object.defineProperty(o1, "bar", {value:200}); -foo(o1); -foo(o1); - -function f(b) { - var o = o2; - if (b) { return foo(o) } -} - -f(false); -%OptimizeFunctionOnNextCall(f); -assertEquals(undefined, f(false)); -Object.defineProperty(o2, "bar", {value: 100}); -assertEquals(100, f(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-inline-getter-near-stack-limit.js b/implementation-contributed/v8/mjsunit/regress/regress-inline-getter-near-stack-limit.js deleted file mode 100644 index d459a7a8d3e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-inline-getter-near-stack-limit.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax - -function runNearStackLimit(f) { - function t() { - try { t(); } catch(e) { f(); } - }; - try { t(); } catch(e) {} -} - -function g(x) { return x.bar; } -function f1() { } -function f2() { } - -var x = Object.defineProperty({}, "bar", { get: f1 }); -g(x); -g(x); -var y = Object.defineProperty({}, "bar", { get: f2 }); -g(y); -%OptimizeFunctionOnNextCall(g); -runNearStackLimit(function() { g(y); }); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-inlining-function-literal-context.js b/implementation-contributed/v8/mjsunit/regress/regress-inlining-function-literal-context.js deleted file mode 100644 index 9b7f7ac7688..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-inlining-function-literal-context.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --expose-gc - -function mkbaz(x) { - function baz() { - return function () { - return [x]; - } - } - return baz; -} - -var baz = mkbaz(1); - -function foo() { - var f = baz(); - return f(); -} - -// Tenure. -gc(); -gc(); - -assertArrayEquals([1], foo()); -assertArrayEquals([1], foo()); -%OptimizeFunctionOnNextCall(foo); -assertArrayEquals([1], foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-int32-truncation.js b/implementation-contributed/v8/mjsunit/regress/regress-int32-truncation.js deleted file mode 100644 index dec4ac1195a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-int32-truncation.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(i, b) { - var a = 0; - if (b) { - var c = 1 << i; - a = c + c; - } - var x = a >> 3; - return a; -} - -f(1, false); -f(1, true); -%OptimizeFunctionOnNextCall(f); -assertEquals((1 << 30) * 2, f(30, true)); - - -var global = 1; - -function f2(b) { - var a = 0; - if (b) { - a = global; - } - var x = a >> 3; - return a; -} - -f2(false); -f2(true); -%OptimizeFunctionOnNextCall(f2); -global = 2.5; -assertEquals(global, f2(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-integer-indexed-element.js b/implementation-contributed/v8/mjsunit/regress/regress-integer-indexed-element.js deleted file mode 100644 index 1bae2d06f57..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-integer-indexed-element.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = {__proto__:new Int32Array(100)}; -Object.prototype[1.3] = 10; -assertEquals(undefined, o[1.3]); - -var o = new Int32Array(100); -var o2 = new Int32Array(200); -o.__proto__ = o2; -assertEquals(undefined, Reflect.get(o, 1.3, o2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-is-contextual.js b/implementation-contributed/v8/mjsunit/regress/regress-is-contextual.js deleted file mode 100644 index 844f4a22649..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-is-contextual.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// CallIC accumulates feedback that string index is out of bounds, then -// misses -function foo(index) { - return text.charAt(index); -} - -var text = "hi there"; -foo(0); -foo(0); -foo(100); // Accumulate feedback that index is out of bounds. -text = false; - -// This line ASSERTS in debug without fix. -assertThrows(function () { foo(); }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-is-smi-repr.js b/implementation-contributed/v8/mjsunit/regress/regress-is-smi-repr.js deleted file mode 100644 index e9f2b516b57..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-is-smi-repr.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; - -var global; - -function g() { global = this; } -Object.defineProperty(Number.prototype, "prop", { get: g }); -function f(s) { s.prop; } - -f(1); -f(1); -%OptimizeFunctionOnNextCall(f); -f(1); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-iteration-order.js b/implementation-contributed/v8/mjsunit/regress/regress-iteration-order.js deleted file mode 100644 index 76f5c3ffcaf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-iteration-order.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = {a: 1, b: 2, c: 3}; - -x.__proto__ = {}; - -delete x.b; - -x.d = 4; - -s = ""; - -for (key in x) { - s += x[key]; -} - -assertEquals("134", s); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-json-parse-index.js b/implementation-contributed/v8/mjsunit/regress/regress-json-parse-index.js deleted file mode 100644 index d1a785aaf1e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-json-parse-index.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = JSON.parse('{"\\u0030":100}'); -assertEquals(100, o[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-json-stringify-gc.js b/implementation-contributed/v8/mjsunit/regress/regress-json-stringify-gc.js deleted file mode 100644 index 905ab406941..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-json-stringify-gc.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var a = []; -var new_space_string = "a"; -for (var i = 0; i < 8; i++) { - new_space_string += new_space_string; -} -for (var i = 0; i < 10000; i++) a.push(new_space_string); - -// At some point during the first stringify, allocation causes a GC and -// new_space_string is moved to old space. Make sure that this does not -// screw up reading from the correct location. -json1 = JSON.stringify(a); -json2 = JSON.stringify(a); -assertTrue(json1 == json2, "GC caused JSON.stringify to fail."); - -// Check that the slow path of JSON.stringify works correctly wrt GC. -for (var i = 0; i < 10000; i++) { - var s = i.toString(); - assertEquals('"' + s + '"', JSON.stringify(s, null, 0)); -} - -for (var i = 0; i < 10000; i++) { - var s = i.toString() + "\u2603"; - assertEquals('"' + s + '"', JSON.stringify(s, null, 0)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-keyed-access-string-length.js b/implementation-contributed/v8/mjsunit/regress/regress-keyed-access-string-length.js deleted file mode 100644 index f2ead686c6b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-keyed-access-string-length.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(i) { - return "abc"[i]; -} - -f("length"); -f("length"); -%OptimizeFunctionOnNextCall(f); -f("length"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-keyed-store-global.js b/implementation-contributed/v8/mjsunit/regress/regress-keyed-store-global.js deleted file mode 100644 index 1b127776d6c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-keyed-store-global.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --verify-heap -function f(a) { - for (var i = 0; i < 256; i++) a[i] = i; -} - -f([]); -f([]); -f(this); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-keyed-store-non-strict-arguments.js b/implementation-contributed/v8/mjsunit/regress/regress-keyed-store-non-strict-arguments.js deleted file mode 100644 index 865d600ad90..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-keyed-store-non-strict-arguments.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function args(arg) { return arguments; } -var a = args(false); - -(function () { - "use strict"; - a["const" + 0] = 0; -})(); - -(function () { - "use strict"; - a[0] = 0; -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-latin-1.js b/implementation-contributed/v8/mjsunit/regress/regress-latin-1.js deleted file mode 100644 index e7f31366c1a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-latin-1.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals(String.fromCharCode(97, 220, 256), 'a' + '\u00DC' + '\u0100'); -assertEquals(String.fromCharCode(97, 220, 256), 'a\u00DC\u0100'); - -assertEquals(0x80, JSON.stringify("\x80").charCodeAt(1)); -assertEquals(0x80, JSON.stringify("\x80", 0, null).charCodeAt(1)); - -assertEquals(['a', 'b', '\xdc'], ['b', '\xdc', 'a'].sort()); - -assertEquals(['\xfc\xdc', '\xfc'], new RegExp('(\xdc)\\1', 'i').exec('\xfc\xdc')); -// Same test but for all values in Latin-1 range. -var total_lo = 0; -for (var i = 0; i < 0xff; i++) { - var base = String.fromCharCode(i); - var escaped = base; - if (base == '(' || base == ')' || base == '*' || base == '+' || - base == '?' || base == '[' || base == ']' || base == '\\' || - base == '$' || base == '^' || base == '|') { - escaped = '\\' + base; - } - var lo = String.fromCharCode(i + 0x20); - base_result = new RegExp('(' + escaped + ')\\1', 'i').exec(base + base); - assertEquals( base_result, [base + base, base]); - lo_result = new RegExp('(' + escaped + ')\\1', 'i').exec(base + lo); - if (base.toLowerCase() == lo) { - assertEquals([base + lo, base], lo_result); - total_lo++; - } else { - assertEquals(null, lo_result); - } -} -// Should have hit the branch for the following char codes: -// [A-Z], [192-222] but not 215 -assertEquals((90-65+1)+(222-192-1+1), total_lo); - -// Latin-1 whitespace character -assertEquals( 1, +(String.fromCharCode(0xA0) + '1') ); - -// Latin-1 \W characters -assertEquals(["+\u00a3", "=="], "+\u00a3==".match(/\W\W/g)); - -// Latin-1 character that uppercases out of Latin-1. -assertTrue(/\u0178/i.test('\u00ff')); - -// Unicode equivalence -assertTrue(/\u039c/i.test('\u00b5')); -assertTrue(/\u039c/i.test('\u03bc')); -assertTrue(/\u00b5/i.test('\u03bc')); -// Unicode equivalence ranges -assertTrue(/[\u039b-\u039d]/i.test('\u00b5')); -assertFalse(/[^\u039b-\u039d]/i.test('\u00b5')); -assertFalse(/[\u039b-\u039d]/.test('\u00b5')); -assertTrue(/[^\u039b-\u039d]/.test('\u00b5')); - -// Check a regression in QuoteJsonSlow and WriteQuoteJsonString -for (var testNumber = 0; testNumber < 2; testNumber++) { - var testString = "\xdc"; - var loopLength = testNumber == 0 ? 0 : 20; - for (var i = 0; i < loopLength; i++ ) { - testString += testString; - } - var stringified = JSON.stringify({"test" : testString}, null, 0); - var stringifiedExpected = '{"test":"' + testString + '"}'; - assertEquals(stringifiedExpected, stringified); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-inlining.js b/implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-inlining.js deleted file mode 100644 index 6cda168dff5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-inlining.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; -function f1(d) { - return 1 + f2(f3(d)); -} - -function f2(v) { return v; } - -function f3(d) { - if (d) %DeoptimizeFunction(f1); - return 2; -} - -%NeverOptimizeFunction(f3); - -f1(false); -f1(false); -%OptimizeFunctionOnNextCall(f1); -assertEquals(3, f1(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-inlining2.js b/implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-inlining2.js deleted file mode 100644 index 7b73b142322..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-inlining2.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -"use strict"; -function f1(d) { - return 1 + f2(1, f3(d), d); -} - -function f2(v0, v1, v2) { return v1; } - -function f3(d) { - if (d) %DeoptimizeFunction(f1); - return 2; -} - -%NeverOptimizeFunction(f3); - -f1(false); -f1(false); -%OptimizeFunctionOnNextCall(f1); -assertEquals(3, f1(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-reloc.js b/implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-reloc.js deleted file mode 100644 index f1fe6d55a6d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-lazy-deopt-reloc.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Do not generate debug code since that will space things differently -// in the generated code. -// Flags: --allow-natives-syntax --expose-gc --nodebug-code - -// Regression test for issue where we did not pad the relocation -// information enough to have room for lazy deoptimization. - -function kaboom() { - var a = function () {}, - b = function () {}, - c, d = function () { var d = []; }, - e = function () { var e = {}; }; - c = function () { d(); b(); }; - return function (x, y) { - c(); - a(); - return function f() { }({}); - }; -} - -kaboom(); - -%DeoptimizeFunction(kaboom); - -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-lea-matching.js b/implementation-contributed/v8/mjsunit/regress/regress-lea-matching.js deleted file mode 100644 index 988368ad0f3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-lea-matching.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a, b, c) { - a = a|0; - b = b|0; - c = c|0; - var r = 0; - r = a + ((b << 1) + c) | 0; - return r|0; -} - -assertEquals(8, f(1, 2, 3)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-load-elements.js b/implementation-contributed/v8/mjsunit/regress/regress-load-elements.js deleted file mode 100644 index 68cdc8e8a15..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-load-elements.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function bad_func(o,a) { - for (var i = 0; i < 1; ++i) { - o.prop = 0; - var x = a[0]; - } -} - -o = new Object(); -a = {}; -a[0] = 1; -bad_func(o, a); - -o = new Object(); -bad_func(o, a); - -// Optimize. Before the fix, the elements-load and subsequent fixed-array-length -// were hoisted above the map check. This is invalid since not all types -// necessarily have elements. -%OptimizeFunctionOnNextCall(bad_func); -bad_func(o, ""); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-load-field-by-index.js b/implementation-contributed/v8/mjsunit/regress/regress-load-field-by-index.js deleted file mode 100644 index c572c1ee363..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-load-field-by-index.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {a:1.5, b:{}}; - -function f(o) { - var result = []; - for (var k in o) { - result[result.length] = o[k]; - } - return result; -} - -f(o); -f(o); -%OptimizeFunctionOnNextCall(f); -var array = f(o); -o.a = 1.7; -assertEquals(1.5, array[0]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-loop-var-assign-without-block-scope.js b/implementation-contributed/v8/mjsunit/regress/regress-loop-var-assign-without-block-scope.js deleted file mode 100644 index 8c85c1380fd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-loop-var-assign-without-block-scope.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax -function f() { - // Loop with a body that's not wrapped in a block. - for (i = 0; i < 2; i++) - var x = i, // var x that's assigned on each iteration - y = y||(()=>x), // single arrow function that returns x - z = (%OptimizeFunctionOnNextCall(y), y()); // optimize y on first iteration - return y() -}; -assertEquals(1, f()) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-map-invalidation-1.js b/implementation-contributed/v8/mjsunit/regress/regress-map-invalidation-1.js deleted file mode 100644 index 430972b75a3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-map-invalidation-1.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var c = { x: 2, y: 1 }; - -function h() { - %TryMigrateInstance(c); - return 2; -} -%NeverOptimizeFunction(h); - -function f() { - for (var i = 0; i < 100000; i++) { - var n = c.x + h(); - assertEquals(4, n); - } - var o2 = [{ x: 2.5, y:1 }]; - return o2; -} - -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-map-invalidation-2.js b/implementation-contributed/v8/mjsunit/regress/regress-map-invalidation-2.js deleted file mode 100644 index ece96b3ff02..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-map-invalidation-2.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -var c = { x: 2, y: 1 }; - -function g() { - var outer = { foo: 1 }; - function f(b, c) { - var n = outer.foo; - for (var i = 0; i < 10; i++) { - n += c.x + outer.foo; - } - if (b) return [{ x: 1.5, y: 1 }]; - else return c; - } - // Clear type feedback from previous stress runs. - %ClearFunctionFeedback(f); - return f; -} - -var fun = g(); -fun(false, c); -fun(false, c); -fun(false, c); -%OptimizeFunctionOnNextCall(fun); -fun(false, c); -fun(true, c); -assertOptimized(fun); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-mask-array-length.js b/implementation-contributed/v8/mjsunit/regress/regress-mask-array-length.js deleted file mode 100644 index bd87e7c5db1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-mask-array-length.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = []; -var o = { - __proto__: a -}; -Object.preventExtensions(o); -o.length = 'abc'; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-merge-descriptors.js b/implementation-contributed/v8/mjsunit/regress/regress-merge-descriptors.js deleted file mode 100644 index 98e2f26674e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-merge-descriptors.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var extend = function (d, b) { - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; - -var Car = (function (Super) { - var Car = function () { - var self = this; - - Super.call(self); - - Object.defineProperties(self, { - "make": { - enumerable: true, - configurable: true, - get: function () { - return "Ford"; - } - } - }); - - self.copy = function () { - throw new Error("Meant to be overriden"); - }; - - return self; - }; - - extend(Car, Super); - - return Car; -}(Object)); - - -var SuperCar = ((function (Super) { - var SuperCar = function (make) { - var self = this; - - Super.call(self); - - - Object.defineProperties(self, { - "make": { - enumerable: true, - configurable: true, - get: function () { - return make; - } - } - }); - - // Convert self.copy from DATA_CONSTANT to DATA. - self.copy = function () { }; - - return self; - }; - extend(SuperCar, Super); - return SuperCar; -})(Car)); - -assertEquals("Ford", new Car().make); -assertEquals("Bugatti", new SuperCar("Bugatti").make); -assertEquals("Lambo", new SuperCar("Lambo").make); -assertEquals("Shelby", new SuperCar("Shelby").make); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-migrate-callbacks.js b/implementation-contributed/v8/mjsunit/regress/regress-migrate-callbacks.js deleted file mode 100644 index b1979ea4420..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-migrate-callbacks.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o1 = {}; -o1.x = 1 -o1.y = 1.5 -var o2 = {} -o2.x = 1.5; -o2.__defineSetter__('y', function(v) { }); -o1.y; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-mul-canoverflow.js b/implementation-contributed/v8/mjsunit/regress/regress-mul-canoverflow.js deleted file mode 100644 index e3e21caec8f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-mul-canoverflow.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function boom(a) { - return ((a | 0) * (a | 0)) | 0; -} -function boom_unoptimized(a) { - try {} catch(_) {} - return ((a | 0) * (a | 0)) | 0; -} - -boom(1, 1); -boom(2, 2); - -%OptimizeFunctionOnNextCall(boom); -var big_int = 0x5F00000F; -var expected = boom_unoptimized(big_int); -var actual = boom(big_int) -assertEquals(expected, actual); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-mul-canoverflowb.js b/implementation-contributed/v8/mjsunit/regress/regress-mul-canoverflowb.js deleted file mode 100644 index 4203ac48da3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-mul-canoverflowb.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function boom(a) { - return ((a | 0) * (a | 0)) | 0; -} -%NeverOptimizeFunction(boom_unoptimized); -function boom_unoptimized(a) { - return ((a | 0) * (a | 0)) | 0; -} - -boom(1, 1); -boom(2, 2); - -%OptimizeFunctionOnNextCall(boom); -var big_int = 0x5F00000F; -var expected = boom_unoptimized(big_int); -var actual = boom(big_int) -assertEquals(expected, actual); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-no-dummy-use-for-arguments-object.js b/implementation-contributed/v8/mjsunit/regress/regress-no-dummy-use-for-arguments-object.js deleted file mode 100644 index 658d776ea3b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-no-dummy-use-for-arguments-object.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function g() { - arguments.length; -} - -var global = ""; - -function f() { - global.dummy = this; - g({}); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-ntl.js b/implementation-contributed/v8/mjsunit/regress/regress-ntl.js deleted file mode 100644 index 993599e5523..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-ntl.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function mod1() { - var v_1 = 1; - var v_2 = 1; - v_1++; - v_2 = {valueOf: function() { throw "gagh"; }}; - - function bug1() { - for (var i = 0; i < 1; v_2++) { - if (v_1 == 1) ; - } - } - - return bug1; -} - -var f = mod1(); -assertThrows(f); -%OptimizeFunctionOnNextCall(f); -assertThrows(f); - - -var v_3 = 1; -var v_4 = 1; -v_3++; -v_4 = {valueOf: function() { throw "gagh"; }}; - -function bug2() { - for (var i = 0; i < 1; v_4++) { - if (v_3 == 1) ; - } -} - -assertThrows(bug2); -%OptimizeFunctionOnNextCall(bug2); -assertThrows(bug2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-object-assign-deprecated-2.js b/implementation-contributed/v8/mjsunit/regress/regress-object-assign-deprecated-2.js deleted file mode 100644 index 89693de1a44..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-object-assign-deprecated-2.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var x = {a:1, b:2}; -Object.defineProperty(x, "c", {set(v) {}}) -var y = {get c() { return {a:1, b:2.5} }}; -Object.assign(x, y, x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-object-assign-deprecated.js b/implementation-contributed/v8/mjsunit/regress/regress-object-assign-deprecated.js deleted file mode 100644 index d2e60f99e51..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-object-assign-deprecated.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var x = {a:1, b:2}; -var y = {a:1, b:2.5}; -Object.assign(x, x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-omit-checks.js b/implementation-contributed/v8/mjsunit/regress/regress-omit-checks.js deleted file mode 100644 index e5d50749888..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-omit-checks.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var a = {x:1}; -var a_deprecate = {x:1}; -a_deprecate.x = 1.5; -function create() { - return {__proto__:a, y:1}; -} -var b1 = create(); -var b2 = create(); -var b3 = create(); -var b4 = create(); - -function set(b) { - b.x = 5; - b.z = 10; -} - -set(b1); -set(b2); -%OptimizeFunctionOnNextCall(set); -set(b3); -var called = false; -a.x = 1.5; -Object.defineProperty(a, "z", {set:function(v) { called = true; }}); -set(b4); -assertTrue(called); -assertEquals(undefined, b4.z); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-opt-typeof-null.js b/implementation-contributed/v8/mjsunit/regress/regress-opt-typeof-null.js deleted file mode 100644 index e4721a18c5e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-opt-typeof-null.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() { - return typeof null === "object"; -}; - -%OptimizeFunctionOnNextCall(f); -assertTrue(f()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-osr-context.js b/implementation-contributed/v8/mjsunit/regress/regress-osr-context.js deleted file mode 100644 index a73954156ce..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-osr-context.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --function-context-specialization -// Flags: --turbo-filter=f - -(function() { - "use strict"; - var a = 23; - function f() { - for (let i = 0; i < 5; ++i) { - a--; // Make sure {a} is non-immutable, hence context allocated. - function g() { return i } // Make sure block has a context. - if (i == 2) %OptimizeOsr(); - } - return a; - } - assertEquals(18, f()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-param-local-type.js b/implementation-contributed/v8/mjsunit/regress/regress-param-local-type.js deleted file mode 100644 index 0eaca50af51..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-param-local-type.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -// Test that we do not confuse the first local and the first parameter -// when gathering type information. - -function f(a) { // First parameter is tagged. - var s = ''; // First local has string type. - var n = 0; - var i = 1; - n = i + a; -} - -f(1); -f(1); -%OptimizeFunctionOnNextCall(f); -f(1); -assertOptimized(f); - - -function g() { // 0th parameter (receiver) is tagged. - var s = ''; // First local has string type. - var n = 0; - var i = 1; - n = i + this; -} - -g.call(1); -g.call(1); -%OptimizeFunctionOnNextCall(g); -g.call(1); -assertOptimized(g); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-parse-use-strict.js b/implementation-contributed/v8/mjsunit/regress/regress-parse-use-strict.js deleted file mode 100644 index 9dd0f4c97c0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-parse-use-strict.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Filler long enough to trigger lazy parsing. -var filler = "/*" + new Array(1024).join('x') + "*/"; - -// Snippet trying to switch to strict mode. -var strict = '"use strict"; with({}) {}'; - -// Test switching to strict mode after string literal. -assertThrows('function f() { "use sanity";' + strict + '}'); -assertThrows('function f() { "use sanity";' + strict + filler + '}'); - -// Test switching to strict mode after function declaration. -// We must use eval instead of assertDoesNotThrow here to make sure that -// lazy parsing is triggered. Otherwise the bug won't reproduce. -eval('function f() { function g() {}' + strict + '}'); -eval('function f() { function g() {}' + strict + filler + '}'); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-parseint.js b/implementation-contributed/v8/mjsunit/regress/regress-parseint.js deleted file mode 100644 index 05501f31fdb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-parseint.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f(string, radix) { - // Use a phi to force radix into heap number representation. - radix = (radix == 0) ? radix : (radix >> 0); - if (radix != 2) return NaN; - return %StringParseInt(string, radix); -} - -assertEquals(2, (-4294967294) >> 0); -assertEquals(3, f("11", -4294967294)); -assertEquals(NaN, f("11", -2147483650)); -%OptimizeFunctionOnNextCall(f); -assertEquals(3, f("11", -4294967294)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-phi-truncation.js b/implementation-contributed/v8/mjsunit/regress/regress-phi-truncation.js deleted file mode 100644 index 940efe33573..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-phi-truncation.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function test(fun, expectation) { - assertEquals(1, fun(1)); - %OptimizeFunctionOnNextCall(fun); - assertEquals(expectation, fun(0)); -} - -test(function(x) { - var a = x ? true : false; - return a | 0; -}, 0); - -test(function(x) { - var a = x ? true : true; - return a | 0; -}, 1); - -test(function(x) { - var a = x ? true : "0"; - return a | 0; -}, 0); - -test(function(x) { - var a = x ? true : "1"; - return a | 0; -}, 1); - -test(function(x) { - var a = x ? true : "-1"; - return a | 0; -}, -1); - -test(function(x) { - var a = x ? true : "-0"; - return a | 0; -}, 0); - -test(function(x) { - var a = x ? true : "0x1234"; - return a | 0; -}, 0x1234); - -test(function(x) { - var a = x ? true : { valueOf: function() { return 2; } }; - return a | 0; -}, 2); - -test(function(x) { - var a = x ? true : undefined; - return a | 0; -}, 0); - -test(function(x) { - var a = x ? true : null; - return a | 0; -}, 0); - -test(function(x) { - var a = x ? true : ""; - return a | 0; -}, 0); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-polymorphic-load.js b/implementation-contributed/v8/mjsunit/regress/regress-polymorphic-load.js deleted file mode 100644 index 2545e85f60a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-polymorphic-load.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(o) { - return o.x; -} - -var o1 = {x:1}; -var o2 = {__proto__: {x:2}}; - -f(o2); -f(o2); -f(o2); -f(o1); -%OptimizeFunctionOnNextCall(f); -assertEquals(1, f(o1)); -assertEquals(2, f(o2)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-polymorphic-store.js b/implementation-contributed/v8/mjsunit/regress/regress-polymorphic-store.js deleted file mode 100644 index 4723a7f4343..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-polymorphic-store.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var o1 = {}; -o1.f1 = function() { return 10; }; -o1.x = 5; -o1.y = 2; -var o2 = {}; -o2.x = 5; -o2.y = 5; - -function store(o, v) { - o.y = v; -} - -store(o2, 0); -store(o1, 0); -store(o2, 0); -%OptimizeFunctionOnNextCall(store); -store(o1, 10); -assertEquals(5, o1.x); -assertEquals(10, o1.y); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-preparse-inner-arrow-duplicate-parameter.js b/implementation-contributed/v8/mjsunit/regress/regress-preparse-inner-arrow-duplicate-parameter.js deleted file mode 100644 index cff5fcc666a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-preparse-inner-arrow-duplicate-parameter.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertThrows("()=>{ (x,x)=>1 }", SyntaxError) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-private-enumerable.js b/implementation-contributed/v8/mjsunit/regress/regress-private-enumerable.js deleted file mode 100644 index 6627c538ec9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-private-enumerable.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class A {} -class B {} -Object.assign(B, A); -assertEquals("class B {}", B.toString()); - -(function() { - function f(a, i, v) { - a[i] = v; - } - - f("make it generic", 0, 0); - - var o = {foo: "foo"}; - %OptimizeObjectForAddingMultipleProperties(o, 10); - - var s = %CreatePrivateSymbol("priv"); - f(o, s, "private"); - %ToFastProperties(o); - - var desc = Object.getOwnPropertyDescriptor(o, s); - assertEquals("private", desc.value); - assertTrue(desc.writable); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-push-args-twice.js b/implementation-contributed/v8/mjsunit/regress/regress-push-args-twice.js deleted file mode 100644 index faa6007ca78..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-push-args-twice.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that the ADD binary op stub correctly handles non-number arguments -// passed on registers. - -try { - for (var key = 0; key != 10; key++) { - var x = 1 + undefined; - } -} catch(e) { - fail("no exception", e); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-put-prototype-transition.js b/implementation-contributed/v8/mjsunit/regress/regress-put-prototype-transition.js deleted file mode 100644 index bc63d219c01..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-put-prototype-transition.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --stress-compaction --gc-interval=255 - -function deepEquals(a, b) { if (a === b) { if (a === 0) return (1 / a) === (1 / b); return true; } if (typeof a != typeof b) return false; if (typeof a == "number") return isNaN(a) && isNaN(b); if (typeof a !== "object" && typeof a !== "function") return false; var objectClass = classOf(a); if (objectClass !== classOf(b)) return false; if (objectClass === "RegExp") { return (a.toString() === b.toString()); } if (objectClass === "Function") return false; if (objectClass === "Array") { var elementCount = 0; if (a.length != b.length) { return false; } for (var i = 0; i < a.length; i++) { if (!deepEquals(a[i], b[i])) return false; } return true; } if (objectClass == "String" || objectClass == "Number" || objectClass == "Boolean" || objectClass == "Date") { if (a.valueOf() !== b.valueOf()) return false; } return deepObjectEquals(a, b); } -assertSame = function assertSame(expected, found, name_opt) { if (found === expected) { if (expected !== 0 || (1 / expected) == (1 / found)) return; } else if ((expected !== expected) && (found !== found)) { return; } fail(PrettyPrint(expected), found, name_opt); }; assertEquals = function assertEquals(expected, found, name_opt) { if (!deepEquals(found, expected)) { fail(PrettyPrint(expected), found, name_opt); } }; -assertEqualsDelta = function assertEqualsDelta(expected, found, delta, name_opt) { assertTrue(Math.abs(expected - found) <= delta, name_opt); }; assertArrayEquals = function assertArrayEquals(expected, found, name_opt) { var start = ""; if (name_opt) { start = name_opt + " - "; } assertEquals(expected.length, found.length, start + "array length"); if (expected.length == found.length) { for (var i = 0; i < expected.length; ++i) { assertEquals(expected[i], found[i], start + "array element at index " + i); } } }; -assertTrue = function assertTrue(value, name_opt) { assertEquals(true, value, name_opt); }; -assertFalse = function assertFalse(value, name_opt) { assertEquals(false, value, name_opt); }; -// End stripped down and modified version of mjsunit.js. - -var __v_0 = {}; -var __v_1 = {}; -function __f_3() { } -function __f_4(obj) { - for (var __v_2 = 0; __v_2 < 26; __v_2++) { - obj["__v_5" + __v_2] = 0; - } -} -function __f_0(__v_1, __v_6) { - (new __f_3()).__proto__ = __v_1; -} -%DebugPrint(undefined); -function __f_1(__v_4, add_first, __v_6, same_map_as) { - var __v_1 = __v_4 ? new __f_3() : {}; - assertTrue(__v_4 || %HasFastProperties(__v_1)); - if (add_first) { - __f_4(__v_1); - assertFalse(%HasFastProperties(__v_1)); - __f_0(__v_1, __v_6); - assertFalse(%HasFastProperties(__v_1)); - } else { - __f_0(__v_1, __v_6); - assertTrue(__v_4 || !%HasFastProperties(__v_1)); - __f_4(__v_1); - assertTrue(__v_4 || !%HasFastProperties(__v_1)); - } -} -gc(); -for (var __v_2 = 0; __v_2 < 4; __v_2++) { - var __v_6 = ((__v_2 & 2) != 7); - var __v_4 = ((__v_2 & 2) != 0); - __f_1(__v_4, true, __v_6); - var __v_0 = __f_1(__v_4, false, __v_6); - __f_1(__v_4, false, __v_6, __v_0); -} -__v_5 = {a: 1, b: 2, c: 3}; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-r3391.js b/implementation-contributed/v8/mjsunit/regress/regress-r3391.js deleted file mode 100644 index d55728436f4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-r3391.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check what we do if toLocaleString doesn't return a string when we are -// calling Array.prototype.toLocaleString. The standard is somewhat -// vague on this point. This test is now passed by both V8 and JSC. - -var evil_called = 0; -var evil_locale_called = 0; -var exception_thrown = 0; - -function evil_to_string() { - evil_called++; - return this; -} - -function evil_to_locale_string() { - evil_locale_called++; - return this; -} - -var o = {toString: evil_to_string, toLocaleString: evil_to_locale_string}; - -try { - [o].toLocaleString(); -} catch(e) { - exception_thrown++; -} - -assertEquals(1, evil_called, "evil1"); -assertEquals(1, evil_locale_called, "local1"); -assertEquals(1, exception_thrown, "exception1"); - -try { - [o].toString(); -} catch(e) { - exception_thrown++; -} - -assertEquals(2, evil_called, "evil2"); -assertEquals(1, evil_locale_called, "local2"); -assertEquals(2, exception_thrown, "exception2"); - -try { - [o].join(o); -} catch(e) { - exception_thrown++; -} - -assertEquals(3, evil_called, "evil3"); -assertEquals(1, evil_locale_called, "local3"); -assertEquals(3, exception_thrown, "exception3"); -print("ok"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-r4998.js b/implementation-contributed/v8/mjsunit/regress/regress-r4998.js deleted file mode 100644 index a82c266777e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-r4998.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test for a broken fast-smi-loop that does not save the incremented value -// of the loop index. If this test fails, it loops forever, and times out. - -// Calling foo() spills the virtual frame. -function foo() { - return; -} - -function bar() { - var x1 = 3; - var x2 = 3; - var x3 = 3; - var x4 = 3; - var x5 = 3; - var x6 = 3; - var x7 = 3; - var x8 = 3; - var x9 = 3; - var x10 = 3; - var x11 = 3; - var x12 = 3; - var x13 = 3; - - foo(); - - x1 = 257; - x2 = 258; - x3 = 259; - x4 = 260; - x5 = 261; - x6 = 262; - x7 = 263; - x8 = 264; - x9 = 265; - x10 = 266; - x11 = 267; - x12 = 268; - x13 = 269; - - // The loop variable x7 is initialized to 3, - // and then MakeMergeable is called on the virtual frame. - // MakeMergeable has forced the loop variable x7 to be spilled, - // so it is marked as synced - // The back edge then merges its virtual frame, which incorrectly - // claims that x7 is synced, and does not save the modified - // value. - for (x7 = 3; x7 < 10; ++x7) { - foo(); - } -} - -bar(); - -function aliasing() { - var x = 3; - var j; - for (j = 7; j < 11; ++j) { - x = j; - } - - assertEquals(10, x); - assertEquals(11, j); -} - -aliasing(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-recurse-patch-binary-op.js b/implementation-contributed/v8/mjsunit/regress/regress-recurse-patch-binary-op.js deleted file mode 100644 index 842cc79fc8f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-recurse-patch-binary-op.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var i = 0 -function valueOf() { - while (true) return i++ < 4 ? 1 + this : 2 -} - -1 + ({valueOf}) diff --git a/implementation-contributed/v8/mjsunit/regress/regress-refreeze-same-map.js b/implementation-contributed/v8/mjsunit/regress/regress-refreeze-same-map.js deleted file mode 100644 index 19cdb502a12..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-refreeze-same-map.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// precondition -assertTrue(%HaveSameMap(Object.freeze({}), Object.freeze({}))); -assertTrue(%HaveSameMap(Object.freeze({a: 1}), Object.freeze({a: 1}))); -assertTrue(%HaveSameMap(Object.freeze([]), Object.freeze([]))); -assertTrue(%HaveSameMap(Object.freeze([1,2]), Object.freeze([1,2]))); - -assertTrue(%HaveSameMap(Object.seal({}), Object.seal({}))); -assertTrue(%HaveSameMap(Object.seal({a: 1}), Object.seal({a: 1}))); -assertTrue(%HaveSameMap(Object.seal([]), Object.seal([]))); -assertTrue(%HaveSameMap(Object.seal([1,2]), Object.seal([1,2]))); - -// refreezing an already frozen obj does not keep adding transitions -assertTrue(%HaveSameMap(Object.freeze({}), Object.freeze( Object.freeze({}) ))); -assertTrue(%HaveSameMap(Object.freeze({a: 1}), Object.freeze( Object.freeze({a: 1}) ))); -assertTrue(%HaveSameMap(Object.freeze([]), Object.freeze( Object.freeze([]) ))); -assertTrue(%HaveSameMap(Object.freeze([1,2]), Object.freeze( Object.freeze([1,2]) ))); - -// resealing a sealed object is idempotent -assertTrue(%HaveSameMap(Object.seal({}), Object.seal( Object.seal({}) ))); -assertTrue(%HaveSameMap(Object.seal({a: 1}), Object.seal( Object.seal({a: 1}) ))); -assertTrue(%HaveSameMap(Object.seal([]), Object.seal( Object.seal([]) ))); -assertTrue(%HaveSameMap(Object.seal([1,2]), Object.seal( Object.seal([1,2]) ))); - -// sealing a frozen object is idempotent -assertTrue(%HaveSameMap(Object.freeze({}), Object.seal( Object.freeze({}) ))); -assertTrue(%HaveSameMap(Object.freeze({a: 1}), Object.seal( Object.freeze({a: 1}) ))); -assertTrue(%HaveSameMap(Object.freeze([]), Object.seal( Object.freeze([]) ))); -assertTrue(%HaveSameMap(Object.freeze([1,2]), Object.seal( Object.freeze([1,2]) ))); - -// freezing a sealed empty is idempotent -assertTrue(%HaveSameMap(Object.freeze(Object.seal({})), Object.seal({}))); - -// sealing a unextensible empty object is idempotent -assertTrue(%HaveSameMap(Object.seal(Object.preventExtensions({})), Object.preventExtensions({}))); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-regexp-codeflush.js b/implementation-contributed/v8/mjsunit/regress/regress-regexp-codeflush.js deleted file mode 100644 index 03fe321690a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-regexp-codeflush.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --gc-global - -// Regression test for regexp that has multiple matches and which -// internally calls RegExpImpl::IrregexpExecOnce more than once without -// ensuring that the regexp is compiled. -// This can create a crash if the code was exchanged with the sweep -// generation (for code flushing support) in GC during the matching. - -var re = new RegExp('(s)', "g"); - -function foo() { - return "42"; -} - -// Run enough times to get a number of GC's (all mark sweep because of the -// --gc_global) flag. -for ( var i = 0; i < 10; i++) { - // Make a long string with plenty of matches for re. - var x = "s foo s bar s foo s bar s"; - x = x + x; - x = x + x; - x = x + x; - x = x + x; - x = x + x; - x = x + x; - x = x + x; - x.replace(re, foo); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-regexp-construct-result.js b/implementation-contributed/v8/mjsunit/regress/regress-regexp-construct-result.js deleted file mode 100644 index 84bdd2004bb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-regexp-construct-result.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Create a huge regexp with many alternative capture groups, most of -// which do not capture anything, but the corresponding capture slot -// in the result object has to exist, even though filled with undefined. -// Having a large result array helps stressing GC. - -var num_captures = 1000; -var regexp_string = "(a)"; -for (var i = 0; i < num_captures - 1; i++) { - regexp_string += "|(b)"; -} -var regexp = new RegExp(regexp_string); - -for (var i = 0; i < 10; i++) { - var matches = regexp.exec("a"); - var count = 0; - matches.forEach(function() { count++; }); - assertEquals(num_captures + 1, count); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-regexp-nocase.js b/implementation-contributed/v8/mjsunit/regress/regress-regexp-nocase.js deleted file mode 100644 index 27637da0913..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-regexp-nocase.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var s = "('')x\nx\uF670"; - -assertEquals(s.match(/\((').*\1\)/i), ["('')", "'"]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-reset-dictionary-elements.js b/implementation-contributed/v8/mjsunit/regress/regress-reset-dictionary-elements.js deleted file mode 100644 index d3d093ec09c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-reset-dictionary-elements.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var a = []; -a[10000] = 1; -a.length = 0; -a[1] = 1; -a.length = 0; -assertEquals(undefined, a[1]); - -var o = {}; -Object.freeze(o); -assertEquals(undefined, o[1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-set-flags-stress-compact.js b/implementation-contributed/v8/mjsunit/regress/regress-set-flags-stress-compact.js deleted file mode 100644 index f86148659ff..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-set-flags-stress-compact.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --gc-interval=164 --stress-compaction - -var a = []; -for (var i = 0; i < 10000; i++) { a[i * 100] = 0; } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-shift-enumerable.js b/implementation-contributed/v8/mjsunit/regress/regress-shift-enumerable.js deleted file mode 100644 index f3ee258bf65..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-shift-enumerable.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var arr = [1, 2]; -Object.defineProperty(arr, 0xfffe, { - value: 3, - configurable: true, - writable: true, - enumerable: false -}); -arr[0xffff] = 4; -arr.shift(); -var desc = Object.getOwnPropertyDescriptor(arr, 0xfffe); -assertEquals(4, desc.value); -assertFalse(desc.enumerable); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-sliced-external-cons-regexp.js b/implementation-contributed/v8/mjsunit/regress/regress-sliced-external-cons-regexp.js deleted file mode 100644 index 145c831896a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-sliced-external-cons-regexp.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-externalize-string --expose-gc - -var re = /(B)/; -var cons1 = "0123456789" + "ABCDEFGHIJ"; -var cons2 = "0123456789\u1234" + "ABCDEFGHIJ"; -gc(); -gc(); // Promote cons. - -try { externalizeString(cons1, false); } catch (e) { } -try { externalizeString(cons2, true); } catch (e) { } - -var slice1 = cons1.slice(1,-1); -var slice2 = cons2.slice(1,-1); -for (var i = 0; i < 10; i++) { - assertEquals(["B", "B"], re.exec(slice1)); - assertEquals(["B", "B"], re.exec(slice2)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-sloppy-block-function-hoisting-dynamic.js b/implementation-contributed/v8/mjsunit/regress/regress-sloppy-block-function-hoisting-dynamic.js deleted file mode 100644 index 59758eda5e9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-sloppy-block-function-hoisting-dynamic.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -with({}) { eval("{function f(){f}}") }; -f() diff --git a/implementation-contributed/v8/mjsunit/regress/regress-smi-math-floor-round.js b/implementation-contributed/v8/mjsunit/regress/regress-smi-math-floor-round.js deleted file mode 100644 index 7c033a3bd05..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-smi-math-floor-round.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - - -function f(o) { - return Math.floor(o.x_smi) + 1; -} - -assertEquals(2, f({x_smi:1})); -assertEquals(2, f({x_smi:1})); -%OptimizeFunctionOnNextCall(f); -assertEquals(2, f({x_smi:1})); - -function f2(o) { - return Math.floor(o.x_tagged) + 1; -} - -var o = {x_tagged:{}}; -o.x_tagged = 1.4; -assertEquals(2, f2(o)); -assertEquals(2, f2(o)); -%OptimizeFunctionOnNextCall(f2); -assertEquals(2, f2(o)); - -function f3(o) { - return Math.round(o.x_smi) + 1; -} - -assertEquals(2, f3({x_smi:1})); -assertEquals(2, f3({x_smi:1})); -%OptimizeFunctionOnNextCall(f3); -assertEquals(2, f3({x_smi:1})); - -function f4(o) { - return Math.round(o.x_tagged) + 1; -} - -assertEquals(2, f4(o)); -assertEquals(2, f4(o)); -%OptimizeFunctionOnNextCall(f4); -assertEquals(2, f4(o)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-smi-only-concat.js b/implementation-contributed/v8/mjsunit/regress/regress-smi-only-concat.js deleted file mode 100644 index 503f3064d68..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-smi-only-concat.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// This tests that concatenating a fast smi-only array and a fast object array -// results in a fast object array. - -var fast_array = ['a', 'b']; -var array = fast_array.concat(fast_array); - -assertTrue(%HasObjectElements(fast_array)); -assertTrue(%HasObjectElements(array)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-smi-scanning.js b/implementation-contributed/v8/mjsunit/regress/regress-smi-scanning.js deleted file mode 100644 index 56cf9f9a2e6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-smi-scanning.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -x = 2 -3; -assertEquals(2, x); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-sort-arguments.js b/implementation-contributed/v8/mjsunit/regress/regress-sort-arguments.js deleted file mode 100644 index 54ebeb111bb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-sort-arguments.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a) { return arguments; } -var a = f(1,2,3); -delete a[1]; -Array.prototype.sort.apply(a); -a[10000000] = 4; -Array.prototype.sort.apply(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-sqrt.js b/implementation-contributed/v8/mjsunit/regress/regress-sqrt.js deleted file mode 100644 index f2a7e55242c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-sqrt.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Check that Math.sqrt returns the same value regardless of being -// optimized or not. - -function f(x) { - return Math.sqrt(x); -} - -var x = 7.0506280066499245e-233; - -var a = f(x); - -f(0.1); -f(0.2); -%OptimizeFunctionOnNextCall(f); - -var b = f(x); - -assertEquals(a, b); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-store-global-proxy.js b/implementation-contributed/v8/mjsunit/regress/regress-store-global-proxy.js deleted file mode 100644 index c85531c5fd9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-store-global-proxy.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -delete Object.prototype.__proto__; - -function f() { - this.toString = 1; -} - -f.apply({}); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-store-heapobject.js b/implementation-contributed/v8/mjsunit/regress/regress-store-heapobject.js deleted file mode 100644 index 9f2a1b8ffad..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-store-heapobject.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var o = {a: undefined}; - -function store(o, v) { - o.a = v; -} - -store(o, undefined); -store(o, undefined); - -function f(bool) { - var o = {a: undefined}; - if (bool) { - store(o, 1); - } - return o; -} - -f(false); -f(false); -%OptimizeFunctionOnNextCall(f); -f(true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-store-transition-dict.js b/implementation-contributed/v8/mjsunit/regress/regress-store-transition-dict.js deleted file mode 100644 index 8199a1d8125..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-store-transition-dict.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -(function() { - function SetX(o, v) { - o.x = v; - } - - function SetY(o, v) { - o.y = v; - } - - var p = {}; - - function Create() { - var o = {__proto__:p, b:1, a:2}; - delete o.b; - assertFalse(%HasFastProperties(o)); - return o; - } - - for (var i = 0; i < 10; i++) { - var o = Create(); - SetX(o, 13); - SetY(o, 13); - } - - Object.defineProperty(p, "x", {value:42, configurable: true, writable: false}); - - for (var i = 0; i < 10; i++) { - var o = Create(); - SetY(o, 13); - } - - var o = Create(); - assertEquals(42, o.x); - SetX(o, 13); - assertEquals(42, o.x); -})(); - - -(function() { - var p1 = {a:10}; - Object.defineProperty(p1, "x", {value:42, configurable: true, writable: false}); - - var p2 = {__proto__: p1, x:153}; - for (var i = 0; i < 2000; i++) { - p1["p" + i] = 0; - p2["p" + i] = 0; - } - assertFalse(%HasFastProperties(p1)); - assertFalse(%HasFastProperties(p2)); - - function GetX(o) { - return o.x; - } - function SetX(o, v) { - o.x = v; - } - - function Create() { - var o = {__proto__:p2, b:1, a:2}; - return o; - } - - for (var i = 0; i < 10; i++) { - var o = Create(); - assertEquals(153, GetX(o)); - SetX(o, 13); - assertEquals(13, GetX(o)); - } - - delete p2.x; - assertFalse(%HasFastProperties(p1)); - assertFalse(%HasFastProperties(p2)); - - var o = Create(); - assertEquals(42, GetX(o)); - SetX(o, 13); - assertEquals(42, GetX(o)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-store-uncacheable.js b/implementation-contributed/v8/mjsunit/regress/regress-store-uncacheable.js deleted file mode 100644 index 4baedbacae7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-store-uncacheable.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt - -function f() { - var o = {}; - o[""] = 123; -} - -f(); -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); -assertOptimized(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-string-from-char-code-tonumber.js b/implementation-contributed/v8/mjsunit/regress/regress-string-from-char-code-tonumber.js deleted file mode 100644 index a02a2778b69..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-string-from-char-code-tonumber.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var thrower = { [Symbol.toPrimitive]: function() { FAIL } }; - -function testTrace(func) { - try { - func(thrower); - assertUnreachable(); - } catch (e) { - assertTrue(e.stack.indexOf("fromCharCode") >= 0); - } -} - -testTrace(String.fromCharCode); - -function foo(x) { return String.fromCharCode(x); } - -foo(1); -foo(2); -testTrace(foo); -%OptimizeFunctionOnNextCall(foo); -testTrace(foo); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-stringAt-boundsCheck.js b/implementation-contributed/v8/mjsunit/regress/regress-stringAt-boundsCheck.js deleted file mode 100644 index 2e14aa027c7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-stringAt-boundsCheck.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --opt --allow-natives-syntax - -(() => { - function f(u) { - for (var j = 0; j < 20; ++j) { - print("" + u.codePointAt()); - } - } - - f("test"); - f("foo"); - %OptimizeFunctionOnNextCall(f); - f(""); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-swapelements.js b/implementation-contributed/v8/mjsunit/regress/regress-swapelements.js deleted file mode 100644 index 7c7a6836238..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-swapelements.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check that modifying an array while sorting it does not segfault. See -// http://code.google.com/p/chromium/issues/detail?id=66099. - -function Item(val) { - this.value = val; -} - - -var size = 23; -var array1 = new Array(size); - - -function myToString() { - array1.splice(0, 1); - return this.value.toString(); -} - - -function test() { - for (var i = 0; i < size; i++) { - array1[i] = new Item(i); - array1[i].toString = myToString; - } - array1.sort(); -} - - -test(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-sync-optimized-lists.js b/implementation-contributed/v8/mjsunit/regress/regress-sync-optimized-lists.js deleted file mode 100644 index 9297c2df54f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-sync-optimized-lists.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --block-concurrent-recompilation - -function Ctor() { - this.a = 1; -} - -function get_closure() { - return function add_field(obj, osr) { - obj.c = 3; - var x = 0; - if (osr) %OptimizeOsr(); - for (var i = 0; i < 10; i++) { - x = i + 1; - } - return x; - } -} - -var f1 = get_closure(); -f1(new Ctor(), false); -f1(new Ctor(), false); - -%OptimizeFunctionOnNextCall(f1, "concurrent"); - -// Kick off concurrent recompilation and OSR. -var o = new Ctor(); -f1(o, true); - -// Flush the optimizing compiler's queue. -%NotifyContextDisposed(); - -// Trigger deopt. -o.c = 2.2; - -var f2 = get_closure(); -f2(new Ctor(), true); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-transcendental.js b/implementation-contributed/v8/mjsunit/regress/regress-transcendental.js deleted file mode 100644 index 4065f50bbee..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-transcendental.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Test whether the runtime implementation and generated code of -// sine and tangens return the same results. - -function test(f, x, name) { - // Reset transcendental cache. - gc(); - // Initializing cache leads to a runtime call. - var runtime_result = f(x); - // Flush transcendental cache entries and optimize f. - for (var i = 0; i < 100000; i++) f(i); - // Calculate using generated code. - var gencode_result = f(x); - print(name + " runtime function: " + runtime_result); - print(name + " generated code : " + gencode_result); - assertEquals(gencode_result, runtime_result); -} - -test(Math.tan, -1.57079632679489660000, "Math.tan"); -test(Math.sin, 6.283185307179586, "Math.sin"); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-trap-allocation-memento.js b/implementation-contributed/v8/mjsunit/regress/regress-trap-allocation-memento.js deleted file mode 100644 index e31fb883542..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-trap-allocation-memento.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --noalways-opt - -var elements_kind = { - fast_smi_only : 'fast smi only elements', - fast : 'fast elements', - fast_double : 'fast double elements', - dictionary : 'dictionary elements', -} - -function getKind(obj) { - if (%HasSmiElements(obj)) return elements_kind.fast_smi_only; - if (%HasObjectElements(obj)) return elements_kind.fast; - if (%HasDoubleElements(obj)) return elements_kind.fast_double; - if (%HasDictionaryElements(obj)) return elements_kind.dictionary; -} - -function assertKind(expected, obj, name_opt) { - assertEquals(expected, getKind(obj), name_opt); -} - -(function() { - function make1() { return new Array(); } - function make2() { return new Array(); } - function make3() { return new Array(); } - function foo(a, i) { a[0] = i; } - - function run_test(maker_function) { - var one = maker_function(); - assertKind(elements_kind.fast_smi_only, one); - // Use memento to pre-transition allocation site to DOUBLE elements. - foo(one, 1.5); - // Newly created arrays should now have DOUBLE elements right away. - var two = maker_function(); - assertKind(elements_kind.fast_double, two); - } - - // Initialize the KeyedStoreIC in foo; the actual operation will be done - // in the runtime. - run_test(make1); - // Run again; the IC optimistically assumed to only see the transitioned - // (double-elements) map again, so this will make it polymorphic. - // The actual operation will again be done in the runtime. - run_test(make2); - // Finally, check if the initialized IC honors the allocation memento. - run_test(make3); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-typedarray-length.js b/implementation-contributed/v8/mjsunit/regress/regress-typedarray-length.js deleted file mode 100644 index 0dde61fc277..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-typedarray-length.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = new Int32Array(100); -a.__proto__ = null; - -function get(a) { - return a.length; -} - -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -%OptimizeFunctionOnNextCall(get); -assertEquals(undefined, get(a)); - -get = function(a) { - return a.byteLength; -} - -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -%OptimizeFunctionOnNextCall(get); -assertEquals(undefined, get(a)); - -get = function(a) { - return a.byteOffset; -} - -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -%OptimizeFunctionOnNextCall(get); -assertEquals(undefined, get(a)); - -(function() { - "use strict"; - - class MyTypedArray extends Int32Array { - get length() { - return "length"; - } - } - - a = new MyTypedArray(); - - get = function(a) { - return a.length; - } - - assertEquals("length", get(a)); - assertEquals("length", get(a)); - assertEquals("length", get(a)); - %OptimizeFunctionOnNextCall(get); - assertEquals("length", get(a)); - - a.__proto__ = null; - - get = function(a) { - return a.length; - } - - assertEquals(undefined, get(a)); - assertEquals(undefined, get(a)); - assertEquals(undefined, get(a)); - %OptimizeFunctionOnNextCall(get); - assertEquals(undefined, get(a)); -})(); - -(function() { - "use strict"; - - class MyTypedArray extends Int32Array { - constructor(length) { - super(length); - } - } - - a = new MyTypedArray(1024); - - get = function(a) { - return a.length; - } - - assertEquals(1024, get(a)); - assertEquals(1024, get(a)); - assertEquals(1024, get(a)); - %OptimizeFunctionOnNextCall(get); - assertEquals(1024, get(a)); -})(); - -(function() { - "use strict"; - var a = new Uint8Array(4); - Object.defineProperty(a, "length", {get: function() { return "blah"; }}); - get = function(a) { - return a.length; - } - - assertEquals("blah", get(a)); - assertEquals("blah", get(a)); - assertEquals("blah", get(a)); - %OptimizeFunctionOnNextCall(get); - assertEquals("blah", get(a)); -})(); - -// Ensure we can delete length, byteOffset, byteLength. -assertTrue(Int32Array.prototype.__proto__.hasOwnProperty("length")); -assertTrue(Int32Array.prototype.__proto__.hasOwnProperty("byteOffset")); -assertTrue(Int32Array.prototype.__proto__.hasOwnProperty("byteLength")); -assertTrue(delete Int32Array.prototype.__proto__.length); -assertTrue(delete Int32Array.prototype.__proto__.byteOffset); -assertTrue(delete Int32Array.prototype.__proto__.byteLength); - -a = new Int32Array(100); - -get = function(a) { - return a.length; -} - -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -%OptimizeFunctionOnNextCall(get); -assertEquals(undefined, get(a)); - -get = function(a) { - return a.byteLength; -} - -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -%OptimizeFunctionOnNextCall(get); -assertEquals(undefined, get(a)); - -get = function(a) { - return a.byteOffset; -} - -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -assertEquals(undefined, get(a)); -%OptimizeFunctionOnNextCall(get); -assertEquals(undefined, get(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-undefined-nan.js b/implementation-contributed/v8/mjsunit/regress/regress-undefined-nan.js deleted file mode 100644 index 0e9b3d3f4a1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-undefined-nan.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function loader(dst, src, i) { - dst[i] = src[i]; -} - -var ab = new ArrayBuffer(8); -var i_view = new Int32Array(ab); -i_view[0] = %GetHoleNaNUpper() -i_view[1] = %GetHoleNaNLower(); -var f_view = new Float64Array(ab); - -var fixed_double_elements = new Float64Array(1); - -function opt_store() { fixed_double_elements[0] = f_view[0]; } - -opt_store(); -opt_store(); -%OptimizeFunctionOnNextCall(opt_store); -opt_store(); - -var i32 = new Int32Array(fixed_double_elements.buffer); -assertEquals(i_view[0], i32[0]); -assertEquals(i_view[1], i32[1]); - -var doubles = [0.5]; -loader(doubles, fixed_double_elements, 0); -loader(doubles, fixed_double_elements, 0); -%OptimizeFunctionOnNextCall(loader); -loader(doubles, fixed_double_elements, 0); -assertTrue(doubles[0] !== undefined); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-undefined-nan2.js b/implementation-contributed/v8/mjsunit/regress/regress-undefined-nan2.js deleted file mode 100644 index 9b0a05f8fdd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-undefined-nan2.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function foo(a, i) { - var o = [0.5,,1]; - a[i] = o[i]; -} -var a1 = [0.1,0.1]; -foo(a1, 0); -foo(a1, 1); -assertEquals(undefined, a1[1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-undefined-nan3.js b/implementation-contributed/v8/mjsunit/regress/regress-undefined-nan3.js deleted file mode 100644 index 5a0bc38c07d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-undefined-nan3.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var ab = new ArrayBuffer(8); -var i_view = new Int32Array(ab); -i_view[0] = %GetHoleNaNUpper() -i_view[1] = %GetHoleNaNLower(); -var f_view = new Float64Array(ab); - -var fixed_double_elements = new Float64Array(1); -fixed_double_elements[0] = f_view[0]; - -function A(src) { this.x = src[0]; } - -new A(fixed_double_elements); -new A(fixed_double_elements); - -%OptimizeFunctionOnNextCall(A); - -var obj = new A(fixed_double_elements); - -function move_x(dst, obj) { dst[0] = obj.x; } - -var doubles = [0.5]; -move_x(doubles, obj); -move_x(doubles, obj); -%OptimizeFunctionOnNextCall(move_x); -move_x(doubles, obj); -assertTrue(doubles[0] !== undefined); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-undefined-store-keyed-fast-element.js b/implementation-contributed/v8/mjsunit/regress/regress-undefined-store-keyed-fast-element.js deleted file mode 100644 index 9e6ec9db07e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-undefined-store-keyed-fast-element.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f(v) { - return [0.0, 0.1, 0.2, v]; -} - -assertEquals([0.0, 0.1, 0.2, NaN], f(NaN)); -assertEquals([0.0, 0.1, 0.2, NaN], f(NaN)); -%OptimizeFunctionOnNextCall(f); -assertEquals([0.0, 0.1, 0.2, undefined], f(undefined)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-unlink-closures-on-deopt.js b/implementation-contributed/v8/mjsunit/regress/regress-unlink-closures-on-deopt.js deleted file mode 100644 index b7fa2b1a754..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-unlink-closures-on-deopt.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --noalways-opt - -function foo() { - function g(o) { - return o.f; - } - return g; -} - -let g1 = foo(); -let g2 = foo(); - -g1({ f : 1}); -g1({ f : 2}); -g2({ f : 2}); -g2({ f : 2}); - -%OptimizeFunctionOnNextCall(g1); -%OptimizeFunctionOnNextCall(g2); - -g1({ f : 1}); -g2({ f : 2}); -g1({}); - -assertUnoptimized(g1); - -// Deoptimization of g1 should also deoptimize g2 because they should share -// the optimized code object. (Unfortunately, this test bakes in various -// other assumptions about dealing with optimized code, and thus might break -// in future.) -assertUnoptimized(g2); - -g2({}); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-unsigned-mul-add.js b/implementation-contributed/v8/mjsunit/regress/regress-unsigned-mul-add.js deleted file mode 100644 index 0a2fc650176..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-unsigned-mul-add.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f(a) { - var x = a >>> 0; - return (x * 1.0 + x * 1.0) << 0; -} - -assertEquals(-2, f(-1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-update-field-type-attributes.js b/implementation-contributed/v8/mjsunit/regress/regress-update-field-type-attributes.js deleted file mode 100644 index c23d062067e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-update-field-type-attributes.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function test(){ - function InnerClass(){} - var container = {field: new InnerClass()}; - return Object.freeze(container); -}; - -assertTrue(Object.isFrozen(test())); -assertTrue(Object.isFrozen(test())); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-4839.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-4839.js deleted file mode 100644 index 120685b1def..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-4839.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function dummy() { } - -(function InlinedFunctionTestContext() { - var f = function() { } - - function g() { - var s = "hey"; - dummy(); // Force a deopt point. - if (f()) return s; - } - - g(); - g(); - g(); - %OptimizeFunctionOnNextCall(g); - f = function() { return true; } - assertEquals("hey", g()); -})(); - -(function InlinedConstructorReturnTestContext() { - function c() { return 1; } - - var f = function() { return !(new c()); } - - function g() { - var s = "hey"; - dummy(); // Force a deopt point. - if (f()) return s; - } - - g(); - g(); - g(); - %OptimizeFunctionOnNextCall(g); - f = function() { return true; } - assertEquals("hey", g()); -})(); - -(function InlinedConstructorNoReturnTestContext() { - function c() { } - - var f = function() { return !(new c()); } - - function g() { - var s = "hey"; - dummy(); // Force a deopt point. - if (f()) return s; - } - - g(); - g(); - g(); - %OptimizeFunctionOnNextCall(g); - f = function() { return true; } - assertEquals("hey", g()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-4972.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-4972.js deleted file mode 100644 index 689ae039ba3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-4972.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -new class extends new Proxy(class {},{}) {} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-5009.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-5009.js deleted file mode 100644 index f4995488b33..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-5009.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function fn1() { -} - -function fn2() { -} - -function fn3() { -} - -function create(id) { - // Just some `FunctionTemplate` to hang on - var o = new version(); - - o.id = id; - o[0] = null; - - return o; -} - -function setM1(o) { - o.m1 = fn1; -} - -function setM2(o) { - o.m2 = fn2; -} - -function setAltM2(o) { - // Failing StoreIC happens here - o.m2 = fn3; -} - -function setAltM1(o) { - o.m1 = null; -} - -function test(o) { - o.m2(); - o.m1(); -} - -var p0 = create(0); -var p1 = create(1); -var p2 = create(2); - -setM1(p0); -setM1(p1); -setM1(p2); - -setM2(p0); -setAltM2(p0); -setAltM1(p0); - -setAltM2(p1); - -setAltM2(p2); -test(p2); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-5254-1.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-5254-1.js deleted file mode 100644 index 624c85f4772..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-5254-1.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var foo = (function() { - "use asm"; - var a = new Uint16Array(2); - a[0] = 32815; - a[1] = 32114; - - function foo() { - var x = a[0]|0; - var y = a[1]|0; - if (x < 0) x = 4294967296 + x|0; - if (y < 0) y = 4294967296 + y|0; - return x >= y; - } - - return foo; -})(); - -assertTrue(foo()); -assertTrue(foo()); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-5254-2.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-5254-2.js deleted file mode 100644 index f486fa8aa39..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-5254-2.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var foo = (function() { - "use asm"; - var a = new Uint8Array(2); - a[0] = 128; - a[1] = 127; - - function foo() { - var x = a[0]|0; - var y = a[1]|0; - if (x < 0) x = 4294967296 + x|0; - if (y < 0) y = 4294967296 + y|0; - return x >= y; - } - - return foo; -})(); - -assertTrue(foo()); -assertTrue(foo()); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo()); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-5255-1.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-5255-1.js deleted file mode 100644 index cd14d637922..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-5255-1.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - return (x ? true : "7") >> 0; -} - -assertEquals(1, foo(1)); -assertEquals(1, foo(1)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(7, foo(0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-5255-2.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-5255-2.js deleted file mode 100644 index 5ae57ce64a0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-5255-2.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - return (x ? true : "7") << 0; -} - -assertEquals(1, foo(1)); -assertEquals(1, foo(1)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(7, foo(0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-5255-3.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-5255-3.js deleted file mode 100644 index 004d6874ad3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-5255-3.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function foo(x) { - return (x ? true : "7") >>> 0; -} - -assertEquals(1, foo(1)); -assertEquals(1, foo(1)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(7, foo(0)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-5697.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-5697.js deleted file mode 100644 index d7c1679fa16..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-5697.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt - -function load(o) { return o.x; } - -for (var x = 0; x < 1000; ++x) { - load({x}); - load({x}); - %OptimizeFunctionOnNextCall(load); - try { load(); } catch (e) { } -} - -assertOptimized(load); - - -function store(o) { o.x = -1; } - -for (var x = 0; x < 1000; ++x) { - store({x}); - store({x}); - %OptimizeFunctionOnNextCall(store); - try { store(); } catch (e) { } -} - -assertOptimized(store); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-5958.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-5958.js deleted file mode 100644 index dc5b95db522..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-5958.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -class A {} -class B {} - -A.__proto__ = new Proxy(A.__proto__, { - get: function (target, property, receiver) { - if (property === Symbol.hasInstance) throw new B; - } -}); - -assertThrows(() => (new A) instanceof A, B); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-6706.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-6706.js deleted file mode 100644 index 36ce229fd83..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-6706.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const str = "a-b-c"; - -function test(re) { - assertArrayEquals(["a", "b", "c"], re[Symbol.split](str)); -} - -!function() { - const re = /-/y; - re.lastIndex = 1; - test(re); -}(); - -!function() { - const re = /-/y; - re.lastIndex = 3; - test(re); -}(); - -!function() { - const re = /-/y; - re.lastIndex = -1; - test(re); -}(); - -!function() { - const re = /-/y; - test(re); -}(); - -!function() { - const re = /-/g; - test(re); -}(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-6712.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-6712.js deleted file mode 100644 index 0c5d5442faf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-6712.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var log = []; - -function f() {} -Object.defineProperty(Function.prototype, "name", { - get() { log.push("getter"); return "ok"; } -}); -delete f.name; -var b = f.bind(); -assertEquals("bound ok", b.name); -assertEquals("bound ok", b.name); -assertEquals("bound ok", b.name); -assertEquals(["getter"], log); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-6716.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-6716.js deleted file mode 100644 index 3033fa7c5f3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-6716.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() {} -var a = Array(2 ** 16); // Elements in large-object-space. -f.bind(...a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-6906.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-6906.js deleted file mode 100644 index 72aa9858d29..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-6906.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function f() {} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); -%DeoptimizeFunction(f); - -%DisassembleFunction(f); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-6940.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-6940.js deleted file mode 100644 index c5bb6a950a9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-6940.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertTrue(/[ŸŶ]/i.test('ÿ')); -assertTrue(/[ŸY]/i.test('ÿ')); - -assertTrue(/[YÝŸŶỲ]/i.test('ÿ')); -assertTrue(/[YÝŸŶỲ]/iu.test('ÿ')); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-7245.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-7245.js deleted file mode 100644 index c1a9df2bb3f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-7245.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const { revoke } = Proxy.revocable({}, {}); -assertEquals("", revoke.name); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-7682.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-7682.js deleted file mode 100644 index 86f12f5b743..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-7682.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -const impl = Symbol(); -class MyArrayLike { - constructor() { - this[impl] = [2, 1]; - Object.freeze(this); - } - get 0() { return this[impl][0]; } - set 0(value) { this[impl][0] = value; } - get 1() { return this[impl][1]; } - set 1(value) { this[impl][1] = value; } - get length() { return 2; } -} - -const xs = new MyArrayLike(); -Array.prototype.sort.call(xs); - -// Sort-order is implementation-defined as we actually hit two conditions from -// the spec: -// - "xs" is sparse and IsExtensible(xs) is false (its frozen). -// - "xs" is sparse and the prototype has properties in the sort range. -assertEquals(2, xs[0]); -assertEquals(1, xs[1]); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-7725.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-7725.js deleted file mode 100644 index 6bda4a4555d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-7725.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var proxy = new Proxy({}, {}); - -Object.assign(proxy, { b: "boom", a: "ah", o: "ouch" }); -assertEquals(["b", "a", "o"], Object.getOwnPropertyNames(proxy)); -assertEquals("boom", proxy.b); -assertEquals("ah", proxy.a); -assertEquals("ouch", proxy.o); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-8070.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-8070.js deleted file mode 100644 index a75230da1f3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-8070.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function bar(iterator) { - for (const entry of iterator) {} -} - -%NeverOptimizeFunction(bar); - -function foo(a) { - const iterator = a.values(); - bar(iterator); - return iterator.next().done; -} - -const a = [1, 2, 3]; -assertTrue(foo(a)); -assertTrue(foo(a)); -%OptimizeFunctionOnNextCall(foo); -assertTrue(foo(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-v8-8357.js b/implementation-contributed/v8/mjsunit/regress/regress-v8-8357.js deleted file mode 100644 index 6f27e84abb3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-v8-8357.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -const s = "Umbridge has been reading your mail, Harry." - -{ - let monkey_called = false; - s.__proto__.__proto__[Symbol.replace] = - () => { monkey_called = true; }; - s.replace(s); - assertTrue(monkey_called); -} - -{ - let monkey_called = false; - s.__proto__.__proto__[Symbol.search] = - () => { monkey_called = true; }; - s.search(s); - assertTrue(monkey_called); -} - -{ - let monkey_called = false; - s.__proto__.__proto__[Symbol.match] = - () => { monkey_called = true; }; - s.match(s); - assertTrue(monkey_called); -} diff --git a/implementation-contributed/v8/mjsunit/regress/regress-wasm-crbug-599413.js b/implementation-contributed/v8/mjsunit/regress/regress-wasm-crbug-599413.js deleted file mode 100644 index 113fc892cc2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-wasm-crbug-599413.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -function __f_100() { - "use asm"; - function __f_76() { - var __v_39 = 0; - outer: while (1) { - while (__v_39 == 4294967295) { - } - } - } - return {__f_76: __f_76}; -} -assertFalse(%IsAsmWasmCode(__f_100)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-wasm-crbug-618602.js b/implementation-contributed/v8/mjsunit/regress/regress-wasm-crbug-618602.js deleted file mode 100644 index aa5bca9d802..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-wasm-crbug-618602.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -function __f_1() { - 'use asm'; - function __f_3() { - var __v_11 = 1, __v_10 = 0, __v_12 = 0; - __v_12 = (__v_10 | 12) % 4294967295 | -1073741824; - } - return { __f_3: __f_3 }; -} -assertFalse(%IsAsmWasmCode(__f_1)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-weakening-multiplication.js b/implementation-contributed/v8/mjsunit/regress/regress-weakening-multiplication.js deleted file mode 100644 index dcf00114b7e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-weakening-multiplication.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f() { - for (var j = 1; j < 1; j *= -8) { - } - for (var i = 1; i < 1; j += 2) { - j * -1; - } -} -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-x87.js b/implementation-contributed/v8/mjsunit/regress/regress-x87.js deleted file mode 100644 index c5edb709f82..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-x87.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Regression for register allocation. -var x; -var a = new Float32Array([1,2, 4, 6, 8, 11, NaN, 1/0, -3]) -var val = 2.1*a[1]*a[0]*a[1*2*3*0]*a[1*1]*1.0; -assertEquals(8.4, val); - -// Regression for double-phis -var a; -var t = true; -var res = [2.5, 2]; -for (var i = 0; i < 2; i++) { - if (t) { - a = 1.5; - } else { - a = true; - } - assertEquals(res[i], a+1); - t = false; -} diff --git a/implementation-contributed/v8/mjsunit/regress/setter.js b/implementation-contributed/v8/mjsunit/regress/setter.js deleted file mode 100644 index e3a8000f2bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/setter.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function s(v) { - v.x = 1; -} - -function c(p) { - return {__proto__: p}; -} - -var p = {}; - -var o1 = c(p); -var o2 = c(p); -var o3 = c(p); -var o4 = c(p); -var o5 = c(p); - -// Initialize the store IC. -s(o1); -s(o2); - -// Install a setter on p.x -var count = 0; -Object.defineProperty(p, "x", { - set: function(x) { - count += 1; - } -}); - -// Verify that the setter was called directly. -o3.x = 20; -assertEquals(1, count); - -// Verify that monomorphic prototype failure is triggered in the IC. -s(o4); -assertEquals(2, count); - -// Verify that the newly installed IC is correct. -s(o5); -assertEquals(3, count); diff --git a/implementation-contributed/v8/mjsunit/regress/short-circuit.js b/implementation-contributed/v8/mjsunit/regress/short-circuit.js deleted file mode 100644 index 25363d6b31b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/short-circuit.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var arr = []; - -for (var i = 0; i < 28000; i++) { - arr.push(new RegExp("prefix" + i.toString() + i.toString() + i.toString())); -} diff --git a/implementation-contributed/v8/mjsunit/regress/splice-missing-wb.js b/implementation-contributed/v8/mjsunit/regress/splice-missing-wb.js deleted file mode 100644 index 5ff0d81e8b0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/splice-missing-wb.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Create array large enough to span several page regions. -var a = new Array(500); - -// Fill it with values. -for (var i = 0; i < a.length; i++) a[i] = {idx:i}; - -// Force it into oldspace. -gc(); -gc(); - -// Array should be in old space now. Store young object into array. -// Region will be marked. -a[0] = {idx:0}; - -// Delete elements a[2] .. a[201]. Internally we will use -// trimming of backing store. a[0] a[1] will be moved to -// memory location previously occupied by a[200] a[201]. -a.splice(2, 200); - -// Force gc and heap verification. -gc(); - -// Try accessing a[0].idx. It will segfault if write-barrier was accidentally -// omitted. -assertEquals(0, a[0].idx); -assertEquals(1, a[1].idx); -assertEquals(202, a[2].idx); diff --git a/implementation-contributed/v8/mjsunit/regress/string-compare-memcmp.js b/implementation-contributed/v8/mjsunit/regress/string-compare-memcmp.js deleted file mode 100644 index aedffcaebfc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/string-compare-memcmp.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -assertTrue(%StringLessThan("abc\u0102", "abc\u0201")); diff --git a/implementation-contributed/v8/mjsunit/regress/string-fromcharcode-sideeffect.js b/implementation-contributed/v8/mjsunit/regress/string-fromcharcode-sideeffect.js deleted file mode 100644 index 432ba2c38dd..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/string-fromcharcode-sideeffect.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var counter = 0; -var a = { valueOf: function() { counter++; return 0x100; } }; -assertEquals("A\u0100\u0100\u0100", String.fromCharCode(65, a, a, a)); -assertEquals(3, counter); diff --git a/implementation-contributed/v8/mjsunit/regress/string-next-encoding.js b/implementation-contributed/v8/mjsunit/regress/string-next-encoding.js deleted file mode 100644 index 27b99a9c9e5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/string-next-encoding.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --opt --allow-natives-syntax - -function f() { - var s = "äϠ�𝌆"; - var i = s[Symbol.iterator](); - assertEquals("ä", i.next().value); - assertEquals("Ϡ", i.next().value); - assertEquals("�", i.next().value); - assertEquals("𝌆", i.next().value); - assertSame(undefined, i.next().value); -} - -f(); -f(); -%OptimizeFunctionOnNextCall(f); -f(); diff --git a/implementation-contributed/v8/mjsunit/regress/string-split-monkey-patching.js b/implementation-contributed/v8/mjsunit/regress/string-split-monkey-patching.js deleted file mode 100644 index ea5c8679cb6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/string-split-monkey-patching.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that String.prototype.split with an regexp does not call the -// monkey-patchable Array.prototype.push or PutValue. - -Array.prototype.push = assertUnreachable; - -Object.defineProperty(Array.prototype, "0", { - get: assertUnreachable, - set: assertUnreachable }); - -"-".split(/-/); -"I-must-not-use-push!".split(/-/); -"Oh-no!".split(/(-)/); -"a".split(/(a)|(b)/); diff --git a/implementation-contributed/v8/mjsunit/regress/typed-array-lifetime.js b/implementation-contributed/v8/mjsunit/regress/typed-array-lifetime.js deleted file mode 100644 index db9a216531f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/typed-array-lifetime.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --allow-natives-syntax --typed-array-max-size-in-heap=1 - -var foo = (function () { - var y = 0; - return function foo(x) { - // Needs to be an external array. - var a = new Float64Array(32); - a[0] = 42; - y = x + 0.1; // This has to allocate. - return a[0]; - } -})(); - -foo(1); -foo(1); -%OptimizeFunctionOnNextCall(foo); -foo(1); -// Try to force a GC during allocation in above marked line. -for (var i = 0; i < 20; ++i) { - %SetAllocationTimeout(i, i, false); - assertEquals(42, foo(2)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/loop-stack-check.js b/implementation-contributed/v8/mjsunit/regress/wasm/loop-stack-check.js deleted file mode 100644 index b1e92fa4ec2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/loop-stack-check.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addFunction("foo", kSig_i_ii) - .addBody([ - kExprLoop, 00, - kExprBrTable, 0xfb, 0xff, 0xff, 0xff, - ]) - .exportFunc(); - assertThrows(function() { builder.instantiate(); }); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-02256.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-02256.js deleted file mode 100644 index 791d2a1d2d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-02256.js +++ /dev/null @@ -1,967 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --random-seed=891196975 --expose-gc --allow-natives-syntax -// Flags: --gc-interval=207 --stress-compaction --validate-asm -// Flags: --opt --no-always-opt -// -// /v8/test/mjsunit/wasm/grow-memory.js -// /v8/test/mjsunit/regress/regress-540.js -// /v8/test/mjsunit/regress/wasm/regression-02862.js -// /v8/test/mjsunit/regress/regress-2813.js -// /v8/test/mjsunit/regress/regress-323845.js -// Begin stripped down and modified version of mjsunit.js for easy minimization in CF. - -function MjsUnitAssertionError(message) {} -MjsUnitAssertionError.prototype.toString = function() { - return this.message; -}; -var assertSame; -var assertEquals; -var assertEqualsDelta; -var assertArrayEquals; -var assertPropertiesEqual; -var assertToStringEquals; -var assertTrue; -var assertFalse; -var triggerAssertFalse; -var assertNull; -var assertNotNull; -var assertThrows; -var assertDoesNotThrow; -var assertInstanceof; -var assertUnreachable; -var assertOptimized; -var assertUnoptimized; - -function classOf(object) { - var string = Object.prototype.toString.call(object); - return string.substring(8, string.length - 1); -} - -function PrettyPrint(value) { - return ""; -} - -function PrettyPrintArrayElement(value, index, array) { - return ""; -} - -function fail(expectedText, found, name_opt) {} - -function deepObjectEquals(a, b) { - var aProps = Object.keys(a); - aProps.sort(); - var bProps = Object.keys(b); - bProps.sort(); - if (!deepEquals(aProps, bProps)) { - return false; - } - for (var i = 0; i < aProps.length; i++) { - if (!deepEquals(a[aProps[i]], b[aProps[i]])) { - return false; - } - } - return true; -} - -function deepEquals(a, b) { - if (a === b) { - if (a === 0) return (1 / a) === (1 / b); - return true; - } - if (typeof a != typeof b) return false; - if (typeof a == "number") return isNaN(a) && isNaN(b); - if (typeof a !== "object" && typeof a !== "function") return false; - var objectClass = classOf(a); - if (objectClass !== classOf(b)) return false; - if (objectClass === "RegExp") { - return (a.toString() === b.toString()); - } - if (objectClass === "Function") return false; - if (objectClass === "Array") { - var elementCount = 0; - if (a.length != b.length) { - return false; - } - for (var i = 0; i < a.length; i++) { - if (!deepEquals(a[i], b[i])) return false; - } - return true; - } - if (objectClass == "String" || objectClass == "Number" || objectClass == "Boolean" || objectClass == "Date") { - if (a.valueOf() !== b.valueOf()) return false; - } - return deepObjectEquals(a, b); -} -assertSame = function assertSame(expected, found, name_opt) { - if (found === expected) { - if (expected !== 0 || (1 / expected) == (1 / found)) return; - } else if ((expected !== expected) && (found !== found)) { - return; - } - fail(PrettyPrint(expected), found, name_opt); -}; -assertEquals = function assertEquals(expected, found, name_opt) { - if (!deepEquals(found, expected)) { - fail(PrettyPrint(expected), found, name_opt); - } -}; -assertEqualsDelta = function assertEqualsDelta(expected, found, delta, name_opt) { - assertTrue(Math.abs(expected - found) <= delta, name_opt); -}; -assertArrayEquals = function assertArrayEquals(expected, found, name_opt) { - var start = ""; - if (name_opt) { - start = name_opt + " - "; - } - assertEquals(expected.length, found.length, start + "array length"); - if (expected.length == found.length) { - for (var i = 0; i < expected.length; ++i) { - assertEquals(expected[i], found[i], start + "array element at index " + i); - } - } -}; -assertPropertiesEqual = function assertPropertiesEqual(expected, found, name_opt) { - if (!deepObjectEquals(expected, found)) { - fail(expected, found, name_opt); - } -}; -assertToStringEquals = function assertToStringEquals(expected, found, name_opt) { - if (expected != String(found)) { - fail(expected, found, name_opt); - } -}; -assertTrue = function assertTrue(value, name_opt) { - assertEquals(true, value, name_opt); -}; -assertFalse = function assertFalse(value, name_opt) { - assertEquals(false, value, name_opt); -}; -assertNull = function assertNull(value, name_opt) { - if (value !== null) { - fail("null", value, name_opt); - } -}; -assertNotNull = function assertNotNull(value, name_opt) { - if (value === null) { - fail("not null", value, name_opt); - } -}; -assertThrows = function assertThrows(code, type_opt, cause_opt) { - var threwException = true; - try { - if (typeof code == 'function') { - code(); - } else { - eval(code); - } - threwException = false; - } catch (e) { - if (typeof type_opt == 'function') { - assertInstanceof(e, type_opt); - } - if (arguments.length >= 3) { - assertEquals(e.type, cause_opt); - } - return; - } -}; -assertInstanceof = function assertInstanceof(obj, type) { - if (!(obj instanceof type)) { - var actualTypeName = null; - var actualConstructor = Object.getPrototypeOf(obj).constructor; - if (typeof actualConstructor == "function") { - actualTypeName = actualConstructor.name || String(actualConstructor); - } - fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" + (type.name || type) + ">" + (actualTypeName ? " but of < " + actualTypeName + ">" : "")); - } -}; -assertDoesNotThrow = function assertDoesNotThrow(code, name_opt) { - try { - if (typeof code == 'function') { - code(); - } else { - eval(code); - } - } catch (e) { - fail("threw an exception: ", e.message || e, name_opt); - } -}; -assertUnreachable = function assertUnreachable(name_opt) { - var message = "Fail" + "ure: unreachable"; - if (name_opt) { - message += " - " + name_opt; - } -}; -var OptimizationStatus = function() {} -assertUnoptimized = function assertUnoptimized(fun, sync_opt, name_opt) { - if (sync_opt === undefined) sync_opt = ""; - assertTrue(OptimizationStatus(fun, sync_opt) != 1, name_opt); -} -assertOptimized = function assertOptimized(fun, sync_opt, name_opt) { - if (sync_opt === undefined) sync_opt = ""; - assertTrue(OptimizationStatus(fun, sync_opt) != 2, name_opt); -} -triggerAssertFalse = function() {} -try { - console.log; - print = console.log; - alert = console.log; -} catch (e) {} - -function runNearStackLimit(f) { - function t() { - try { - t(); - } catch (e) { - f(); - } - }; - try { - t(); - } catch (e) {} -} - -function quit() {} - -function nop() {} -try { - gc; -} catch (e) { - gc = nop; -} - -function getRandomProperty(v, rand) { - var properties = Object.getOwnPropertyNames(v); - var proto = Object.getPrototypeOf(v); - if (proto) { - properties = properties.concat(Object.getOwnPropertyNames(proto)); - } - if (properties.includes("constructor") && v.constructor.hasOwnProperty("__proto__")) { - properties = properties.concat(Object.getOwnPropertyNames(v.constructor.__proto__)); - } - if (properties.length == 0) { - return "0"; - } - return properties[rand % properties.length]; -} -// End stripped down and modified version of mjsunit.js. - -var __v_0 = {}; -var __v_1 = {}; -var __v_2 = {}; -var __v_3 = {}; -var __v_4 = -1073741824; -var __v_5 = {}; -var __v_6 = 1; -var __v_7 = 1073741823; -var __v_8 = {}; -var __v_9 = {}; -var __v_10 = 4294967295; -var __v_11 = this; -var __v_12 = {}; -var __v_13 = {}; -try { - load("test/mjsunit/wasm/wasm-module-__v_1.js"); - __v_2 = 0x10000; -} catch (e) { - print("Caught: " + e); -} - -function __f_16() { - var __v_1 = new WasmModuleBuilder(); - __v_1.addFunction("grow_memory", kSig_i_i) - .addBody([kExprGetLocal, 0, kExprMemoryGrow]) - .exportFunc(); - __v_1.addFunction("load", kSig_i_i) - .addBody([kExprGetLocal, 0, kExprI32LoadMem, 0, 0]) - .exportFunc(); - __v_1.addFunction("store", kSig_i_ii) - .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem, 0, 0, kExprGetLocal, 1]) - .exportFunc(); - __v_1.addFunction("load16", kSig_i_i) - .addBody([kExprGetLocal, 0, kExprI32LoadMem16U, 0, 0]) - .exportFunc(); - __v_1.addFunction("store16", kSig_i_ii) - .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem16, 0, 0, kExprGetLocal, 1]) - .exportFunc(); - __v_1.__p_1551105852 = __v_1[getRandomProperty(__v_1, 1551105852)]; - __v_1.__defineGetter__(getRandomProperty(__v_1, 348910887), function() { - gc(); - __v_9[getRandomProperty(__v_9, 1894652048)] = __v_13[getRandomProperty(__v_13, 1352929371)]; - return __v_1.__p_1551105852; - }); - __v_1.addFunction("load8", kSig_i_i) - .addBody([kExprGetLocal, 0, kExprI32LoadMem8U, 0, 0]) - .exportFunc(); - __v_1.addFunction("store8", kSig_i_ii) - .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem8, 0, 0, kExprGetLocal, 1]) - .exportFunc(); - return __v_1; -} - -function __f_14() { - var __v_4 = __f_16(); - __v_1.addMemory(1, 1, false); - var module = __v_1.instantiate(); - var __v_3; - - function __f_1() { - return module.exports.load(__v_3); - } - - function __f_2(value) { - return module.exports.store(__v_3, value); - } - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - for (__v_3 = 0; __v_3 <= (__v_2 - 4); __v_3 += 4) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = __v_2 - 3; __v_3 < __v_2 + 4; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - assertTraps(kTrapMemOutOfBounds, __f_1); - } - assertEquals(1, __f_8(3)); - for (__v_3 = __v_2; __v_3 <= 4 * __v_2 - 4; __v_3 += 4) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = 4 * __v_2 - 3; __v_3 < 4 * __v_2 + 4; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - assertTraps(kTrapMemOutOfBounds, __f_1); - } - assertEquals(4, __f_8(15)); - for (__v_3 = 4 * __v_2 - 3; __v_3 <= 4 * __v_2 + 4; __v_3 += 4) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = 19 * __v_2 - 10; __v_3 <= 19 * __v_2 - 4; __v_3 += 4) { - __f_2(20); - gc(); - assertEquals(12, __f_1()); - } - for (__v_3 = 19 * __v_2 - 3; __v_3 < 19 * __v_2 + 5; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - assertTraps(kTrapMemOutOfBounds, __f_1); - } -} -try { - __f_14(); -} catch (e) { - print("Caught: " + e); -} - -function __f_13() { - var __v_1 = __f_16(); - __v_1.__defineGetter__(getRandomProperty(__v_1, 1322348896), function() { - gc(); - return __f_28(__v_1); - }); - __v_1.addMemory(1, 1, false); - var module = __v_1.instantiate(); - assertEquals(0, __f_30(0)); - var __v_3; - - function __f_1() { - return module.exports.load16(__v_3); - } - - function __f_2(value) { - return module.exports.store16(__v_3, value); - } - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - for (__v_3 = 0; __v_3 <= (__v_2 - 2); __v_3 += 2) { - __f_2(20); - assertEquals(20, __f_1()); - __f_19(); - } - for (__v_3 = __v_2 - 1; __v_3 < __v_2 + 4; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - assertTraps(kTrapMemOutOfBounds, __f_1); - } - assertEquals(65535, __f_8(0)); - for (__v_3 = __v_2; __v_3 <= 4 * __v_2 - 2; __v_3 += 2) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = 4 * __v_2 - 1; __v_3 < 4 * __v_2 + 4; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - assertTraps(kTrapMemOutOfBounds, __f_1); - } - assertEquals(4, __f_8(15)); - for (__v_3 = 4 * __v_2 - 2; __v_3 <= 4 * __v_2 + 4; __v_3 += 2) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_1 = 19 * __v_11 - 10; __v_13 <= 19 * __v_2 - 2; __v_9 += 2) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = 19 * __v_2 - 1; __v_3 < 19 * __v_2 + 5; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - assertTraps(kTrapMemOutOfBounds, __f_1); - } -} -try { - __f_13(); -} catch (e) { - print("Caught: " + e); -} - -function __f_10() { - var __v_1 = __f_16(); - __v_1.addMemory(1, 1, false); - var module = __v_1.instantiate(); - var __v_3; - - function __f_1() { - return module.exports.load8(__v_3); - } - - function __f_2(value) { - return module.exports.store8(__v_3, value); - } - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - for (__v_3 = 0; __v_3 <= __v_2 - 1; __v_3++) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = __v_2; __v_3 < __v_2 + 4; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - assertTraps(kTrapMemOutOfBounds, __f_1); - } - assertEquals(1, __f_8(3)); - for (__v_3 = __v_2; __v_3 <= 4 * __v_2 - 1; __v_3++) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = 4 * __v_2; __v_3 < 4 * __v_2 + 4; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - assertTraps(kTrapMemOutOfBounds, __f_1); - } - assertEquals(4, __f_8(15)); - for (__v_3 = 4 * __v_2; __v_3 <= 4 * __v_2 + 4; __v_3++) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = 19 * __v_2 - 10; __v_3 <= 19 * __v_2 - 1; __v_3++) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = 19 * __v_2; __v_3 < 19 * __v_2 + 5; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - assertTraps(kTrapMemOutOfBounds, __f_1); - } -} -try { - __f_10(); -} catch (e) { - print("Caught: " + e); -} - -function __f_5() { - var __v_1 = __f_16(); - var module = __v_1.instantiate(); - var __v_3; - - function __f_1() { - return module.exports.load(__v_3); - } - - function __f_2(value) { - return module.exports.store(__v_3, value); - } - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - assertTraps(kTrapMemOutOfBounds, __f_1); - assertTraps(kTrapMemOutOfBounds, __f_2); - assertEquals(0, __f_8(1)); - for (__v_3 = 0; __v_3 <= __v_2 - 4; __v_3++) { - __f_2(20); - assertEquals(20, __f_1()); - } - for (__v_3 = __v_2; __v_3 <= __v_2 + 5; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_1); - } -} -try { - __f_5(); -} catch (e) { - print("Caught: " + e); -} - -function __f_9() { - var __v_1 = __f_16(); - var module = __v_1.instantiate(); - var __v_4 = 16385; - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - assertEquals(-1, __f_8(__v_13)); -} -try { - __f_9(); -} catch (e) { - print("Caught: " + e); -} - -function __f_12() { - var __v_1 = __f_16(); - __v_1.addMemory(1, 1, false); - var module = __v_9.instantiate(); - __v_4.__p_1905062277 = __v_4[getRandomProperty(__v_4, 1905062277)]; - __v_4.__defineGetter__(getRandomProperty(__v_4, 1764398743), function() { - gc(); - __v_0[getRandomProperty(__v_0, 1011363961)] = __v_8[getRandomProperty(__v_8, 1946768258)]; - return __v_4.__p_1905062277; - }); - var __v_4 = 16384; - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - assertEquals(-1, __f_8(__v_4)); -} -try { - __f_12(); -} catch (e) { - print("Caught: " + e); -} - -function __f_0() { - var __v_1 = __f_16(); - var module = __v_1.instantiate(); - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - assertEquals(-1, __f_8(-1)); -}; -try { - __f_0(); -} catch (e) { - print("Caught: " + e); -} - -function __f_4() { - var __v_1 = __f_16(); - __v_1.addMemory(1, 1, false); - __v_1.addFunction("memory_size", kSig_i_v) - .addBody([kExprMemorySize]) - .exportFunc(); - var module = __v_1.instantiate(); - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - - function __f_7() { - return module.exports.memory_size(); - } - assertEquals(1, __f_7()); - assertEquals(1, __f_8(1)); - assertEquals(2, __f_7()); -} -try { - __f_4(); - gc(); -} catch (e) { - print("Caught: " + e); -} - -function __f_6() { - var __v_1 = __f_16(); - __v_1.addMemory(1, 1, false); - var module = __v_1.instantiate(); - var __v_3, __v_0; - gc(); - - function __f_1() { - return module.exports.load(__v_3); - } - - function __f_2(value) { - return module.exports.store(__v_3, value); - } - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - gc(); - for (__v_3 = 0; __v_3 <= (__v_2 - 4); __v_3 += 4) { - __f_2(100000 - __v_3); - __v_3.__defineGetter__(getRandomProperty(__v_3, 764734523), function() { - gc(); - return __f_16(__v_3); - }); - assertEquals(100000 - __v_3, __f_1()); - } - assertEquals(1, __f_8(3)); - for (__v_3 = 0; __v_3 <= (__v_2 - 4); __v_3 += 4) { - assertEquals(100000 - __v_3, __f_1()); - } -} -try { - __f_6(); - gc(); -} catch (e) { - print("Caught: " + e); -} - -function __f_11() { - var __v_1 = __f_16(); - __v_1.addMemory(1, 1, false); - var module = __v_2.instantiate(); - var __v_3, __v_0; - - function __f_1() { - return module.exports.load16(__v_3); - } - - function __f_2(value) { - return module.exports.store16(__v_3, value); - } - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - for (__v_3 = 0; __v_3 <= (__v_2 - 2); __v_3 += 2) { - __f_2(65535 - __v_3); - assertEquals(65535 - __v_3, __f_1()); - } - assertEquals(1, __f_8(3)); - for (__v_3 = 0; __v_3 <= (__v_2 - 2); __v_3 += 2) { - assertEquals(65535 - __v_3, __f_1()); - } -} -try { - __f_11(); -} catch (e) { - print("Caught: " + e); -} - -function __f_15() { - var __v_1 = __f_16(); - __v_1.addMemory(1, 1, false); - var module = __v_1.instantiate(); - var __v_3, __v_0 = 0; - - function __f_1() { - return module.exports.load8(__v_10); - } - - function __f_2(value) { - return module.exports.store8(__v_3, value); - } - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - for (__v_3 = 0; __v_3 <= (__v_2 - 1); __v_3++, __v_0++) { - __f_2(__v_0); - assertEquals(__v_0, __f_1()); - if (__v_0 == 255) __v_0 = 0; - } - assertEquals(1, __f_8(3)); - __v_0 = 0; - for (__v_10 = 0; __v_4 <= (__v_0 - 1); __v_11++, __v_5++) { - assertEquals(__v_0, __f_1()); - if (__v_10 == 255) __v_5 = 0; - } -} -try { - __f_15(); -} catch (e) { - print("Caught: " + e); -} - -function __f_3() { - var __v_1 = __f_16(); - __v_1.addMemory(1, 1, false); - var module = __v_1.instantiate(); - var __v_3, __v_0; - - function __f_1() { - return module.exports.load(__v_3); - } - - function __f_2(value) { - return module.exports.store(__v_3, value); - } - - function __f_8(pages) { - return module.exports.grow_memory(pages); - } - gc(); - __v_3 = 3 * __v_2 + 4; - assertTraps(kTrapMemOutOfBounds, __f_2); - assertEquals(1, __f_8(1)); - assertTraps(kTrapMemOutOfBounds, __f_2); - assertEquals(2, __f_8(1)); - assertTraps(kTrapMemOutOfBounds, __f_2); - assertEquals(3, __f_8(1)); - for (__v_3 = 3 * __v_2; __v_3 <= 4 * __v_2 - 4; __v_3++) { - __f_2(0xaced); - assertEquals(0xaced, __f_1()); - } - for (__v_3 = 4 * __v_2 - 3; __v_3 <= 4 * __v_2 + 4; __v_3++) { - assertTraps(kTrapMemOutOfBounds, __f_2); - } -} -try { - __f_3(); -} catch (e) { - print("Caught: " + e); -} - -function __f_18(__f_17, y) { - eval(__f_17); - return y(); -} -try { - var __v_17 = __f_18("function y() { return 1; }", function() { - return 0; - }) - assertEquals(1, __v_17); - gc(); - __v_17 = - (function(__f_17) { - function __f_17() { - return 3; - } - return __f_17(); - })(function() { - return 2; - }); - assertEquals(3, __v_17); - __v_17 = - (function(__f_17) { - function __f_17() { - return 5; - } - return arguments[0](); - })(function() { - return -1073741825; - }); - assertEquals(5, __v_17); -} catch (e) { - print("Caught: " + e); -} - -function __f_27() {} -try { - var __v_24 = {}; - var __v_21 = {}; - var __v_22 = {}; - var __v_20 = {}; - __v_58 = { - instantiateModuleFromAsm: function(text, ffi, heap) { - var __v_21 = eval('(' + text + ')'); - if (__f_27()) { - throw "validate failure"; - } - var __v_20 = __v_21(); - if (__f_27()) { - throw "bad module args"; - } - } - }; - __f_21 = function __f_21() { - if (found === expected) { - if (1 / expected) return; - } else if ((expected !== expected) && (found !== found)) { - return; - }; - }; - __f_28 = function __f_28() { - if (!__f_23()) { - __f_125(__f_69(), found, name_opt); - } - }; - __f_24 = function __f_24(code, type_opt, cause_opt) { - var __v_24 = true; - try { - if (typeof code == 'function') { - code(); - } else { - eval(); - } - __v_24 = false; - } catch (e) { - if (typeof type_opt == 'function') { - __f_22(); - } - if (arguments.length >= 3) { - __f_28(); - } - return; - } - }; - __f_22 = function __f_22() { - if (obj instanceof type) { - obj.constructor; - if (typeof __v_57 == "function") {; - }; - } - }; - try { - __f_28(); - __v_82.__p_750895751 = __v_82[getRandomProperty()]; - } catch (e) { - "Caught: " + e; - } - __f_19(); - gc(); - __f_19(19, __f_24); - __f_19(); - __f_19(); - __f_24(function() { - __v_58.instantiateModuleFromAsm(__f_28.toString()).__f_20(); - }); -} catch (e) { - print("Caught: " + e); -} - -function __f_19() { - "use asm"; - - function __f_20() {} - return { - __f_20: __f_20 - }; -} -try { - __f_19(); - __f_19(); - __f_19(); -} catch (e) { - print("Caught: " + e); -} - -function __f_29() {} -try { - __f_19(); - try { - __f_19(); - gc(); - __f_25(); - } catch (e) { - "Caught: " + e; - } - __f_19(); - __f_19(); - __f_19(); -} catch (e) { - print("Caught: " + e); -} - -function __f_23() { - "use asm"; - - function __f_20() {} - return { - __f_20: __f_20 - }; -} -try { - __f_19(); - __f_19(); - __f_19(); - __f_19(); - gc(); - __f_19(); - __f_19(); - __f_19(); -} catch (e) { - print("Caught: " + e); -} - -function __f_26(stdlib) { - "use asm"; - var __v_2 = new stdlib.Int32Array(); - __v_22[4294967295] | 14 + 1 | 14; - return { - __f_20: __f_20 - }; -} - -function __f_25() { - var __v_19 = new ArrayBuffer(); - var __v_23 = new Int32Array(__v_19); - var module = __v_58.instantiateModuleFromAsm(__f_26.toString()); - __f_28(); - gc(); -} -try { - (function() {})(); - (function() {})(); - try { - (function() { - __v_23.__defineGetter__(getRandomProperty(__v_23, 580179357), function() { - gc(); - return __f_25(__v_23); - }); - var __v_23 = 0x87654321; - __v_19.__f_89(); - })(); - } catch (e) {; - } -} catch (e) { - print("Caught: " + e); -} - -function __f_30(x) { - var __v_30 = x + 1; - var __v_31 = x + 2; - if (x != 0) { - if (x > 0 & x < 100) { - return __v_30; - } - } - return 0; -} -try { - assertEquals(0, __f_30(0)); - assertEquals(0, __f_30(0)); - %OptimizeFunctionOnNextCall(__f_30); - assertEquals(3, __f_30(2)); -} catch (e) { - print("Caught: " + e); -} - -function __f_31() { - __f_32.arguments; -} - -function __f_32(x) { - __f_31(); -} - -function __f_33() { - __f_32({}); -} -try { - __f_33(); - __f_33(); - __f_33(); - %OptimizeFunctionOnNextCall(__f_33); - __f_33(); - gc(); -} catch (e) { - print("Caught: " + e); -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-02256b.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-02256b.js deleted file mode 100644 index 120643896d0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-02256b.js +++ /dev/null @@ -1,503 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --random-seed=891196975 --expose-gc --allow-natives-syntax -// Flags: --gc-interval=207 --stress-compaction --validate-asm -// Flags: --opt --no-always-opt -// -// /v8/test/mjsunit/wasm/grow-memory.js -// /v8/test/mjsunit/regress/regress-540.js -// /v8/test/mjsunit/regress/wasm/regression-02862.js -// /v8/test/mjsunit/regress/regress-2813.js -// /v8/test/mjsunit/regress/regress-323845.js -// Begin stripped down and modified version of mjsunit.js for easy minimization in CF. - -function MjsUnitAssertionError(message) {} -MjsUnitAssertionError.prototype.toString = function() { - return this.message; -}; -var assertSame; -var assertEquals; -var assertEqualsDelta; -var assertArrayEquals; -var assertPropertiesEqual; -var assertToStringEquals; -var assertTrue; -var assertFalse; -var triggerAssertFalse; -var assertNull; -var assertNotNull; -var assertThrows; -var assertDoesNotThrow; -var assertInstanceof; -var assertUnreachable; -var assertOptimized; -var assertUnoptimized; - -function classOf(object) { - var string = Object.prototype.toString.call(object); - return string.substring(8, string.length - 1); -} - -function PrettyPrint(value) { - return ""; -} - -function PrettyPrintArrayElement(value, index, array) { - return ""; -} - -function fail(expectedText, found, name_opt) {} - -function deepObjectEquals(a, b) { - var aProps = Object.keys(a); - aProps.sort(); - var bProps = Object.keys(b); - bProps.sort(); - if (!deepEquals(aProps, bProps)) { - return false; - } - for (var i = 0; i < aProps.length; i++) { - if (!deepEquals(a[aProps[i]], b[aProps[i]])) { - return false; - } - } - return true; -} - -function deepEquals(a, b) { - if (a === b) { - if (a === 0) return (1 / a) === (1 / b); - return true; - } - if (typeof a != typeof b) return false; - if (typeof a == "number") return isNaN(a) && isNaN(b); - if (typeof a !== "object" && typeof a !== "function") return false; - var objectClass = classOf(a); - if (objectClass !== classOf(b)) return false; - if (objectClass === "RegExp") { - return (a.toString() === b.toString()); - } - if (objectClass === "Function") return false; - if (objectClass === "Array") { - var elementCount = 0; - if (a.length != b.length) { - return false; - } - for (var i = 0; i < a.length; i++) { - if (!deepEquals(a[i], b[i])) return false; - } - return true; - } - if (objectClass == "String" || objectClass == "Number" || objectClass == "Boolean" || objectClass == "Date") { - if (a.valueOf() !== b.valueOf()) return false; - } - return deepObjectEquals(a, b); -} -assertSame = function assertSame(expected, found, name_opt) { - if (found === expected) { - if (expected !== 0 || (1 / expected) == (1 / found)) return; - } else if ((expected !== expected) && (found !== found)) { - return; - } - fail(PrettyPrint(expected), found, name_opt); -}; -assertEquals = function assertEquals(expected, found, name_opt) { - if (!deepEquals(found, expected)) { - fail(PrettyPrint(expected), found, name_opt); - } -}; -assertEqualsDelta = function assertEqualsDelta(expected, found, delta, name_opt) { - assertTrue(Math.abs(expected - found) <= delta, name_opt); -}; -assertArrayEquals = function assertArrayEquals(expected, found, name_opt) { - var start = ""; - if (name_opt) { - start = name_opt + " - "; - } - assertEquals(expected.length, found.length, start + "array length"); - if (expected.length == found.length) { - for (var i = 0; i < expected.length; ++i) { - assertEquals(expected[i], found[i], start + "array element at index " + i); - } - } -}; -assertPropertiesEqual = function assertPropertiesEqual(expected, found, name_opt) { - if (!deepObjectEquals(expected, found)) { - fail(expected, found, name_opt); - } -}; -assertToStringEquals = function assertToStringEquals(expected, found, name_opt) { - if (expected != String(found)) { - fail(expected, found, name_opt); - } -}; -assertTrue = function assertTrue(value, name_opt) { - assertEquals(true, value, name_opt); -}; -assertFalse = function assertFalse(value, name_opt) { - assertEquals(false, value, name_opt); -}; -assertNull = function assertNull(value, name_opt) { - if (value !== null) { - fail("null", value, name_opt); - } -}; -assertNotNull = function assertNotNull(value, name_opt) { - if (value === null) { - fail("not null", value, name_opt); - } -}; -assertThrows = function assertThrows(code, type_opt, cause_opt) { - var threwException = true; - try { - if (typeof code == 'function') { - code(); - } else { - eval(code); - } - threwException = false; - } catch (e) { - if (typeof type_opt == 'function') { - assertInstanceof(e, type_opt); - } - if (arguments.length >= 3) { - assertEquals(e.type, cause_opt); - } - return; - } -}; -assertInstanceof = function assertInstanceof(obj, type) { - if (!(obj instanceof type)) { - var actualTypeName = null; - var actualConstructor = Object.getPrototypeOf(obj).constructor; - if (typeof actualConstructor == "function") { - actualTypeName = actualConstructor.name || String(actualConstructor); - } - fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" + (type.name || type) + ">" + (actualTypeName ? " but of < " + actualTypeName + ">" : "")); - } -}; -assertDoesNotThrow = function assertDoesNotThrow(code, name_opt) { - try { - if (typeof code == 'function') { - code(); - } else { - eval(code); - } - } catch (e) { - fail("threw an exception: ", e.message || e, name_opt); - } -}; -assertUnreachable = function assertUnreachable(name_opt) { - var message = "Fail" + "ure: unreachable"; - if (name_opt) { - message += " - " + name_opt; - } -}; -var OptimizationStatus = function() {} -assertUnoptimized = function assertUnoptimized(fun, sync_opt, name_opt) { - if (sync_opt === undefined) sync_opt = ""; - assertTrue(OptimizationStatus(fun, sync_opt) != 1, name_opt); -} -assertOptimized = function assertOptimized(fun, sync_opt, name_opt) { - if (sync_opt === undefined) sync_opt = ""; - assertTrue(OptimizationStatus(fun, sync_opt) != 2, name_opt); -} -triggerAssertFalse = function() {} -try { - console.log; - print = console.log; - alert = console.log; -} catch (e) {} - -function runNearStackLimit(f) { - function t() { - try { - t(); - } catch (e) { - f(); - } - }; - try { - t(); - } catch (e) {} -} - -function quit() {} - -function nop() {} -try { - gc; -} catch (e) { - gc = nop; -} - -function getRandomProperty(v, rand) { - var properties = Object.getOwnPropertyNames(v); - var proto = Object.getPrototypeOf(v); - if (proto) { - properties = properties.concat(Object.getOwnPropertyNames(proto)); - } - if (properties.includes("constructor") && v.constructor.hasOwnProperty("__proto__")) { - properties = properties.concat(Object.getOwnPropertyNames(v.constructor.__proto__)); - } - if (properties.length == 0) { - return "0"; - } - return properties[rand % properties.length]; -} -// End stripped down and modified version of mjsunit.js. - -var __v_0 = {}; -var __v_1 = {}; -var __v_2 = {}; -var __v_3 = {}; -var __v_4 = -1073741824; -var __v_5 = {}; -var __v_6 = 1; -var __v_7 = 1073741823; -var __v_8 = {}; -var __v_9 = {}; -var __v_10 = 4294967295; -var __v_11 = this; -var __v_12 = {}; -var __v_13 = {}; - - -function __f_18(__f_17, y) { - eval(__f_17); - return y(); -} -try { - var __v_17 = __f_18("function y() { return 1; }", function() { - return 0; - }) - assertEquals(1, __v_17); - gc(); - __v_17 = - (function(__f_17) { - function __f_17() { - return 3; - } - return __f_17(); - })(function() { - return 2; - }); - assertEquals(3, __v_17); - __v_17 = - (function(__f_17) { - function __f_17() { - return 5; - } - return arguments[0](); - })(function() { - return -1073741825; - }); - assertEquals(5, __v_17); -} catch (e) { - print("Caught: " + e); -} - -function __f_27() {} -try { - var __v_24 = {}; - var __v_21 = {}; - var __v_22 = {}; - var __v_20 = {}; - __v_58 = { - instantiateModuleFromAsm: function(text, ffi, heap) { - var __v_21 = eval('(' + text + ')'); - if (__f_27()) { - throw "validate failure"; - } - var __v_20 = __v_21(); - if (__f_27()) { - throw "bad module args"; - } - } - }; - __f_21 = function __f_21() { - if (found === expected) { - if (1 / expected) return; - } else if ((expected !== expected) && (found !== found)) { - return; - }; - }; - __f_28 = function __f_28() { - if (!__f_23()) { - __f_125(__f_69(), found, name_opt); - } - }; - __f_24 = function __f_24(code, type_opt, cause_opt) { - var __v_24 = true; - try { - if (typeof code == 'function') { - code(); - } else { - eval(); - } - __v_24 = false; - } catch (e) { - if (typeof type_opt == 'function') { - __f_22(); - } - if (arguments.length >= 3) { - __f_28(); - } - return; - } - }; - __f_22 = function __f_22() { - if (obj instanceof type) { - obj.constructor; - if (typeof __v_57 == "function") {; - }; - } - }; - try { - __f_28(); - __v_82.__p_750895751 = __v_82[getRandomProperty()]; - } catch (e) { - "Caught: " + e; - } - __f_19(); - gc(); - __f_19(19, __f_24); - __f_19(); - __f_19(); - __f_24(function() { - __v_58.instantiateModuleFromAsm(__f_28.toString()).__f_20(); - }); -} catch (e) { - print("Caught: " + e); -} - -function __f_19() { - "use asm"; - - function __f_20() {} - return { - __f_20: __f_20 - }; -} -try { - __f_19(); - __f_19(); - __f_19(); -} catch (e) { - print("Caught: " + e); -} - -function __f_29() {} -try { - __f_19(); - try { - __f_19(); - gc(); - __f_25(); - } catch (e) { - "Caught: " + e; - } - __f_19(); - __f_19(); - __f_19(); -} catch (e) { - print("Caught: " + e); -} - -function __f_23() { - "use asm"; - - function __f_20() {} - return { - __f_20: __f_20 - }; -} -try { - __f_19(); - __f_19(); - __f_19(); - __f_19(); - gc(); - __f_19(); - __f_19(); - __f_19(); -} catch (e) { - print("Caught: " + e); -} - -function __f_26(stdlib) { - "use asm"; - var __v_2 = new stdlib.Int32Array(); - __v_22[4294967295] | 14 + 1 | 14; - return { - __f_20: __f_20 - }; -} - -function __f_25() { - var __v_19 = new ArrayBuffer(); - var __v_23 = new Int32Array(__v_19); - var module = __v_58.instantiateModuleFromAsm(__f_26.toString()); - __f_28(); - gc(); -} -try { - (function() {})(); - (function() {})(); - try { - (function() { - __v_23.__defineGetter__(getRandomProperty(__v_23, 580179357), function() { - gc(); - return __f_25(__v_23); - }); - var __v_23 = 0x87654321; - __v_19.__f_89(); - })(); - } catch (e) {; - } -} catch (e) { - print("Caught: " + e); -} - -function __f_30(x) { - var __v_30 = x + 1; - var __v_31 = x + 2; - if (x != 0) { - if (x > 0 & x < 100) { - return __v_30; - } - } - return 0; -} -try { - assertEquals(0, __f_30(0)); - assertEquals(0, __f_30(0)); - %OptimizeFunctionOnNextCall(__f_30); - assertEquals(3, __f_30(2)); -} catch (e) { - print("Caught: " + e); -} - -function __f_31() { - __f_32.arguments; -} - -function __f_32(x) { - __f_31(); -} - -function __f_33() { - __f_32({}); -} -try { - __f_33(); - __f_33(); - __f_33(); - %OptimizeFunctionOnNextCall(__f_33); - __f_33(); - gc(); -} catch (e) { - print("Caught: " + e); -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-02862.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-02862.js deleted file mode 100644 index 92ed1cd6c9c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-02862.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --random-seed=1557792826 --expose-gc --invoke-weak-callbacks --omit-quit --gc-interval=469 --validate-asm - -function nop() {} -var __v_42 = {}; -var __v_49 = {}; -var __v_70 = {}; -var __v_79 = {}; -__v_58 = { - instantiateModuleFromAsm: function(text, ffi, heap) { - var __v_49 = eval('(' + text + ')'); - if (nop()) { - throw "validate failure"; - } - var __v_79 = __v_49(); - if (nop()) { - throw "bad module args"; - } - }}; -__f_140 = function __f_140() { - if (found === expected) { - if (1 / expected) return; - } else if ((expected !== expected) && (found !== found)) { return; }; -}; -__f_128 = function __f_128() { if (!__f_105()) { __f_125(__f_69(), found, name_opt); } }; -__f_136 = function __f_136(code, type_opt, cause_opt) { - var __v_42 = true; - try { - if (typeof code == 'function') { code(); } - else { eval(); } - __v_42 = false; - } catch (e) { - if (typeof type_opt == 'function') { __f_101(); } - if (arguments.length >= 3) { __f_128(); } - return; - } -}; -__f_101 = function __f_101() { if (obj instanceof type) {obj.constructor; if (typeof __v_57 == "function") {; }; } }; -try { -__f_128(); -__v_82.__p_750895751 = __v_82[getRandomProperty()]; -} catch(e) {"Caught: " + e; } -__f_119(); -gc(); -__f_119(19, __f_136); -__f_119(); -__f_119(); -__f_136(function() { - __v_58.instantiateModuleFromAsm(__f_128.toString()).__f_108(); -}); -function __f_119() { - "use asm"; - function __f_108() { - } - return {__f_108: __f_108}; -} -__f_119(); -__f_119(); -__f_119(); -function __f_95() { -} -__f_119(); -try { -__f_119(); -__f_135(); -} catch(e) {"Caught: " + e; } -__f_119(); -__f_119(); -__f_119(); -function __f_105() { - "use asm"; - function __f_108() { - } - return {__f_108: __f_108}; -} -__f_119(); -__f_119(); -__f_119(); -__f_119(); -__f_119(); -__f_119(); -__f_119(); -function __f_93(stdlib) { - "use asm"; - var __v_70 = new stdlib.Int32Array(); -__v_70[4294967295]|14 + 1 | 14; - return {__f_108: __f_108}; -} -function __f_135() { - var __v_66 = new ArrayBuffer(); - var __v_54 = new Int32Array(__v_66); - var module = __v_58.instantiateModuleFromAsm( __f_93.toString()); - __f_128(); -} -(function () { -})(); -(function () { -})(); -try { -(function() { - var __v_54 = 0x87654321; - __v_66.__f_89(); -})(); -} catch(e) {; } diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-5531.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-5531.js deleted file mode 100644 index cea547d09c4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-5531.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(1, 1, false); - builder.addFunction("foo", kSig_i_v) - .addBody([ - kExprI32Const, 0x00, - kExprI32Const, 0x0b, - kExprI32Const, 0x0f, - kExprBrTable, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0xcb, 0x00 // entries=1238475 - ]) - .exportFunc(); - assertThrows(function() { builder.instantiate(); }); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-5800.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-5800.js deleted file mode 100644 index 77c436119c8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-5800.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function AddTest() { - let builder = new WasmModuleBuilder(); - - builder.addFunction("main", kSig_i_v) - .addBody([ - kExprBlock, kWasmStmt, - kExprI64Const, 0, - // 0x80 ... 0x10 is the LEB encoding of 0x100000000. This is chosen so - // that the 64-bit constant has a non-zero top half. In this bug, the - // top half was clobbering eax, leading to the function return 1 rather - // than 0. - kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x10, - kExprI64Add, - kExprI64Eqz, - kExprBrIf, 0, - kExprI32Const, 0, - kExprReturn, - kExprEnd, - kExprI32Const, 0 - ]) - .exportFunc(); - let module = builder.instantiate(); - assertEquals(0, module.exports.main()); -})(); - -(function SubTest() { - let builder = new WasmModuleBuilder(); - - builder.addFunction("main", kSig_i_v) - .addBody([ - kExprBlock, kWasmStmt, - kExprI64Const, 0, - // 0x80 ... 0x10 is the LEB encoding of 0x100000000. This is chosen so - // that the 64-bit constant has a non-zero top half. In this bug, the - // top half was clobbering eax, leading to the function return 1 rather - // than 0. - kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x10, - kExprI64Sub, - kExprI64Eqz, - kExprBrIf, 0, - kExprI32Const, 0, - kExprReturn, - kExprEnd, - kExprI32Const, 0 - ]) - .exportFunc(); - let module = builder.instantiate(); - assertEquals(0, module.exports.main()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-5860.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-5860.js deleted file mode 100644 index 961e52d2dc0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-5860.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --expose-wasm - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let module1 = (() => { - let builder = new WasmModuleBuilder(); - builder.addMemory(1, 1); - builder.addFunction('load', kSig_i_i) - .addBody([kExprI32Const, 0, kExprI32LoadMem, 0, 0]) - .exportAs('load'); - return new WebAssembly.Module(builder.toBuffer()); -})(); - -let module2 = (() => { - let builder = new WasmModuleBuilder(); - builder.addMemory(1, 1); - builder.addImport('A', 'load', kSig_i_i); - builder.addExportOfKind('load', kExternalFunction, 0); - return new WebAssembly.Module(builder.toBuffer()); -})(); - -let instance1 = new WebAssembly.Instance(module1); -let instance2 = new WebAssembly.Instance(module2, {A: instance1.exports}); - -assertEquals(0, instance2.exports.load()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-5884.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-5884.js deleted file mode 100644 index c6013d3f867..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-5884.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(31, 31, false); - builder.addFunction('test', kSig_i_iii) - .addBodyWithEnd([ - // body: - kExprI64Const, 0x41, kExprI64Const, 0x41, kExprI64LtS, kExprI32Const, - 0x01, kExprI32StoreMem, 0x00, 0x41, kExprUnreachable, - kExprEnd, // @60 - ]) - .exportFunc(); - var module = builder.instantiate(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-6054.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-6054.js deleted file mode 100644 index 3afb371131e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-6054.js +++ /dev/null @@ -1,341 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(16, 32, false); - builder.addFunction('test', kSig_i_i) - .addBodyWithEnd([ - kExprI32Const, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, - kExprI32LoadMem8S, 0x00, 0x00, -kExprEnd, // @44 - ]) - .exportFunc(); - var module = builder.instantiate(); - assertEquals(0, module.exports.test(1)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-6164.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-6164.js deleted file mode 100644 index ed728f5acc6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-6164.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(31, 31, false); - builder.addFunction('test', kSig_l_v) - .addBodyWithEnd([ -// body: -kExprUnreachable, -kExprEnd, // @374 - ]) - .exportFunc(); - var module = builder.instantiate(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-643595.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-643595.js deleted file mode 100644 index 9da074b6899..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-643595.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --cache=code --validate-asm - -(function f() { - "use asm"; - function g() { } - return { g: g }; -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-644682.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-644682.js deleted file mode 100644 index a48e5aeef07..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-644682.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { -var builder = new WasmModuleBuilder(); -builder.addFunction("regression_644682", kSig_i_v) - .addBody([ - kExprBlock, // @1 - kExprI32Const, 0x3b, - kExprI32LoadMem, 0x00, 0x00, - kExprI32Const, 0x10, - kExprBrIf, 0x01, 0x00, // arity=1 depth0 - kExprI32Const, 0x45, - kExprI32Const, 0x3b, - kExprI64LoadMem16S, 0x00, 0x3b, - kExprBrIf, 0x01, 0x00 // arity=1 depth0 - ]) - .exportFunc(); -assertThrows(function() { builder.instantiate(); }); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-647649.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-647649.js deleted file mode 100644 index dc89ebd8452..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-647649.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --nostress-opt --expose-gc --noalways-opt --invoke-weak-callbacks - -// This test was generated by the fuzzer. - -function getRandomProperty(v, rand) { - var properties = Object.getOwnPropertyNames(v); - var proto = Object.getPrototypeOf(v); - if (proto) {; } - if ("constructor" && v.constructor.hasOwnProperty()) {; } - if (properties.length == 0) { return "0"; } - return properties[rand % properties.length]; -} - -var __v_11 = {}; - -function __f_1(stdlib, foreign, buffer) { - "use asm"; - var __v_3 = new stdlib.Float64Array(buffer); - function __f_0() { - var __v_1 = 6.0; - __v_3[2] = __v_1 + 1.0; - } - return {__f_0: __f_0}; -} -try { - var __v_0 = new ArrayBuffer(207222809); - var module = __f_1(this, null, __v_0); -( { -})(); -} catch(e) {; } -__v_13 = '@3' -Array.prototype.__proto__ = {3: __v_13}; -Array.prototype.__proto__.__proto__ = {7: __v_11}; -__v_9 = [0, 1, , , 4, 5, , , , 9] -__v_12 = __v_9.splice(4, 1) -__v_9.__defineGetter__(getRandomProperty(__v_9, 1689439720), function() { return {}; }); - __v_9[8] -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-648079.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-648079.js deleted file mode 100644 index fbb54144803..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-648079.js +++ /dev/null @@ -1,327 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -// Non-standard opcodes. -let kSig_s_v = makeSig([], [kWasmS128]); -let kExprS128LoadMem = 0xc0; - -(function() { -"use asm"; -var builder = new WasmModuleBuilder(); -builder.addFunction("regression_648079", kSig_s_v) - .addBody([ - // locals: - 0x00, - // body: - kExprI64RemU, - kExprI64Ctz, - kExprI64LeU, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprI64Ctz, - kExprI64Ne, - kExprI64ShrS, - kExprI64GtS, - kExprI64RemU, - kExprUnreachable, - kExprI64RemU, - kExprI32Eqz, - kExprI64LeU, - kExprDrop, - kExprF32Add, - kExprI64Ior, - kExprF32CopySign, - kExprI64Ne, - kExprI64GeS, - kExprUnreachable, - kExprF32Trunc, - kExprF32Trunc, - kExprUnreachable, - kExprIf, 10, // @32 - kExprBlock, 00, // @34 - kExprBr, // depth=109 - kExprI64Shl, - kExprI64LeU, - kExprI64GeS, - kExprI64Clz, - kExprF32Min, - kExprF32Eq, - kExprF32Trunc, - kExprF32Trunc, - kExprF32Trunc, - kExprUnreachable, - kExprI32Const, - kExprUnreachable, - kExprBr, // depth=101 - kExprF32Div, - kExprI64GtU, - kExprI64GeS, - kExprI64Clz, - kExprSelect, - kExprI64GtS, - kExprI64RemU, - kExprI64LeU, - kExprI64Shl, - kExprI64Ctz, - kExprLoop, 01, // @63 i32 - kExprElse, // @65 - kExprI64LeU, - kExprI64RemU, - kExprI64Ne, - kExprI64GeS, - kExprI32Const, - kExprI64GtS, - kExprI64LoadMem32U, - kExprI64Clz, - kExprI64Shl, - kExprI64Ne, - kExprI64ShrS, - kExprI64GtS, - kExprI64DivU, - kExprI64Ne, - kExprI64GtS, - kExprI64Ne, - kExprI64Popcnt, - kExprI64DivU, - kExprI64DivU, - kExprSelect, - kExprI64Ctz, - kExprI64Popcnt, - kExprI64RemU, - kExprI64Clz, - kExprF64Sub, - kExprF32Trunc, - kExprF32Trunc, - kExprI64RemU, - kExprI64Ctz, - kExprI64LeU, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprBrIf, // depth=116 - kExprF32Min, - kExprI64GtU, - kExprBlock, 01, // @107 i32 - kExprTeeLocal, - kExprBlock, 01, // @111 i32 - kExprBlock, 01, // @113 i32 - kExprBlock, 01, // @115 i32 - kExprBlock, 01, // @117 i32 - kExprBlock, 01, // @119 i32 - kExprBlock, 01, // @121 i32 - kExprBlock, 01, // @123 i32 - kExprBlock, 88, // @125 - kExprF32Trunc, - kExprF32Trunc, - kExprF32Trunc, - kExprUnreachable, - kExprLoop, 40, // @131 - kExprUnreachable, - kExprUnreachable, - kExprI32Add, - kExprBlock, 05, // @136 - kExprUnreachable, - kExprIf, 02, // @139 i64 - kExprBlock, 01, // @141 i32 - kExprBrIf, // depth=16 - kExprLoop, 00, // @145 - kExprUnreachable, - kExprUnreachable, - kExprReturn, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprI64LoadMem16U, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprNop, - kExprBr, // depth=1 - kExprElse, // @164 - kExprF32Trunc, - kExprI32Add, - kExprCallIndirect, // sig #1 - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprBlock, 00, // @172 - kExprI64RemU, - kExprI64Ctz, - kExprI64LeU, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprDrop, - kExprI64Popcnt, - kExprF32Min, - kExprUnreachable, - kExprF64Sub, - kExprI32Const, - kExprUnreachable, - kExprGetLocal, - kExprI64LoadMem32U, - kExprUnreachable, - kExprI64RemU, - kExprI32Eqz, - kExprI64LeU, - kExprDrop, - kExprF32Add, - kExprI64Ior, - kExprF32CopySign, - kExprI64Ne, - kExprI64GeS, - kExprUnreachable, - kExprF32Trunc, - kExprF32Trunc, - kExprUnreachable, - kExprIf, 10, // @216 - kExprBlock, 00, // @218 - kExprBr, // depth=109 - kExprI64Shl, - kExprI64LeU, - kExprI64GeS, - kExprI64Clz, - kExprF32Min, - kExprF32Eq, - kExprF32Trunc, - kExprF32Trunc, - kExprF32Trunc, - kExprUnreachable, - kExprF64Min, - kExprI32Const, - kExprBr, // depth=101 - kExprF32Div, - kExprI64GtU, - kExprI64GeS, - kExprI64Clz, - kExprI64Popcnt, - kExprF64Lt, - kExprF32Trunc, - kExprF32Trunc, - kExprF32Trunc, - kExprUnreachable, - kExprLoop, 01, // @247 i32 - kExprElse, // @249 - kExprI64LeU, - kExprI64RemU, - kExprI64Ne, - kExprI64GeS, - kExprI32Const, - kExprBlock, 01, // @256 i32 - kExprBlock, 01, // @258 i32 - kExprBlock, 01, // @260 i32 - kExprBlock, 01, // @262 i32 - kExprBlock, 01, // @264 i32 - kExprF32Ge, - kExprF32Trunc, - kExprF32Trunc, - kExprF32Trunc, - kExprUnreachable, - kExprLoop, 40, // @271 - kExprUnreachable, - kExprUnreachable, - kExprI32Add, - kExprBlock, 01, // @276 i32 - kExprUnreachable, - kExprIf, 02, // @279 i64 - kExprBlock, 00, // @281 - kExprBrIf, // depth=16 - kExprLoop, 00, // @285 - kExprUnreachable, - kExprUnreachable, - kExprReturn, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprI64LoadMem16U, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprNop, - kExprBr, // depth=1 - kExprElse, // @304 - kExprF32Trunc, - kExprI32Add, - kExprCallIndirect, // sig #1 - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprBlock, 00, // @312 - kExprI64RemU, - kExprI64Ctz, - kExprI64LeU, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprDrop, - kExprI64Popcnt, - kExprF32Min, - kExprUnreachable, - kExprF64Sub, - kExprI32Const, - kExprUnreachable, - kExprGetLocal, - kExprI64LoadMem32U, - kExprUnreachable, - kExprUnreachable, - kExprNop, - kExprBr, // depth=1 - kExprElse, // @348 - kExprF32Trunc, - kExprI32Add, - kExprCallIndirect, // sig #1 - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprBlock, 00, // @356 - kExprI64RemU, - kExprI64Ctz, - kExprI64LeU, - kExprUnreachable, - kExprUnreachable, - kExprUnreachable, - kExprDrop, - kExprI64Popcnt, - kExprF32Min, - kExprUnreachable, - kExprF64Sub, - kExprI32Const, - kExprUnreachable, - kExprGetLocal, - kExprI64LoadMem32U, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF32Trunc, - kExprF32Trunc, - kExprF32Trunc, - kExprUnreachable, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF64Min, - kExprF64Min, - ]) - .exportFunc(); -assertThrows(function() { builder.instantiate(); }); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-651961.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-651961.js deleted file mode 100644 index f42f4317038..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-651961.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(1, 32, false); - builder.addFunction("foo", kSig_i_v) - .addBody([ - kExprMemorySize, kMemoryZero, - kExprI32Const, 0x10, - kExprMemoryGrow, kMemoryZero, - kExprI32Mul, - ]) - .exportFunc(); - var module = builder.instantiate(); - var result = module.exports.foo(); - assertEquals(1, result); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-654377.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-654377.js deleted file mode 100644 index 455139f0bb6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-654377.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(1, 1, false); - builder.addFunction("foo", kSig_i_v) - .addBody([ - kExprI32Const, 00, - kExprMemorySize, - kExprBrIf, 00, - kExprMemorySize, - kExprBr, 0xe7, 0xd2, 0xf2, 0xff, 0x1d - ]) - .exportFunc(); - assertThrows(function() { builder.instantiate(); }); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-663994.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-663994.js deleted file mode 100644 index 9643a86acbc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-663994.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - var builder = new WasmModuleBuilder(); - var module = builder.instantiate(); - assertTrue(typeof(module.exports) != "undefined"); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-666741.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-666741.js deleted file mode 100644 index 9531fc8fd2f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-666741.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --random-seed=-1101427159 --enable-slow-asserts --expose-wasm - -(function __f_7() { - assertThrows(() => new WebAssembly.Memory({initial: 59199}), RangeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-667745.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-667745.js deleted file mode 100644 index cae5122ca58..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-667745.js +++ /dev/null @@ -1,388 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(0, 0, false); - builder.addFunction("test", kSig_i_iii) - .addBody([ -kExprI32Const, 0x0b, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x67, -kExprI32Const, 0x07, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Eq, -kExprI32RemU, -kExprI32Clz, -kExprI32Const, 0x25, -kExprI32Const, 0x82, 0x6c, -kExprI32Add, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Const, 0x70, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x70, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x67, -kExprI32Clz, -kExprI32Clz, -kExprI32GeS, -kExprI32Const, 0x67, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x41, -kExprDrop, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprCallFunction, 0x00, // function #0 -kExprCallFunction, 0x00, // function #0 -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Const, 0x01, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprSelect, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x41, -kExprI32Const, 0x0e, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprCallFunction, 0x00, // function #0 -kExprCallFunction, 0x00, // function #0 -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Const, 0x01, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprSelect, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x41, -kExprI32Const, 0x0e, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprCallFunction, 0x00, // function #0 -kExprCallFunction, 0x00, // function #0 -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Const, 0x01, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprSelect, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x41, -kExprI32Const, 0x0e, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprCallFunction, 0x00, // function #0 -kExprCallFunction, 0x00, // function #0 -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Const, 0x01, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprSelect, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x41, -kExprI32Const, 0x0e, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprCallFunction, 0x00, // function #0 -kExprCallFunction, 0x00, // function #0 -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x4a, -kExprI32Const, 0x41, -kExprI32LtU, -kExprI32Const, 0x67, -kExprI32Clz, -kExprI32GtS, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Ne, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x41, -kExprI32Const, 0x1a, -kExprI32Const, 0x71, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32ShrS, -kExprI32Clz, -kExprCallFunction, 0x00, // function #0 -kExprCallFunction, 0x00, // function #0 -kExprI32Clz, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Const, 0x4a, -kExprI32Const, 0x41, -kExprI32LtU, -kExprI32Const, 0x67, -kExprI32Clz, -kExprI32GtS, -kExprI32Const, 0x41, -kExprI32Const, 0x41, -kExprI32Ne, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Const, 0x41, -kExprI32Const, 0x1a, -kExprI32Const, 0x71, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32And, -kExprI32ShrS, -kExprI32Clz, -kExprCallFunction, 0x00, // function #0 -kExprCallFunction, 0x00, // function #0 -kExprI32Clz, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprI32Clz, -kExprUnreachable, -kExprCallFunction, 0x00, // function #0 -kExprCallFunction, 0x00, // function #0 -kExprNop, -kExprNop, -kExprNop, -kExprNop, -kExprReturn - ]) - .exportFunc(); - var module = builder.instantiate(); - assertTrue(module != undefined); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-670683.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-670683.js deleted file mode 100644 index 7306e117f4d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-670683.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --allow-natives-syntax - -const bytes = new Uint8Array([ - 0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x05, 0x01, - 0x60, 0x00, 0x01, 0x7f, 0x03, 0x02, 0x01, 0x00, 0x05, 0x03, 0x01, - 0x00, 0x01, 0x07, 0x11, 0x02, 0x04, 0x67, 0x72, 0x6f, 0x77, 0x00, - 0x00, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x02, 0x00, 0x0a, - 0x08, 0x01, 0x06, 0x00, 0x41, 0x01, 0x40, 0x00, 0x0b -]); - -assertPromiseResult( - WebAssembly.compile(bytes), - module => { - print('promise resolved: ' + module); - new WebAssembly.Instance(module).exports.grow(); - }); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-674447.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-674447.js deleted file mode 100644 index 228b038334b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-674447.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --cache=code - -(function() { - "use asm"; - return function f() {} -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-680938.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-680938.js deleted file mode 100644 index 5471f60a71b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-680938.js +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var v17 = 42; -var v32 = { initial: 1 }; -v39 = new WebAssembly.Memory(v32); -v49 = v39.grow(v17); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-684858.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-684858.js deleted file mode 100644 index 1ac3cc6f2a5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-684858.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var name = 'regression_684858'; - -function patchNameLength(buffer) { - var count = 0; - var view = new Uint8Array(buffer); - for (var i = 0, e = view.length - name.length; i <= e; ++i) { - var subs = String.fromCharCode.apply(null, view.slice(i, i + name.length)); - if (subs != name) continue; - ++count; - // One byte before this name, its length is encoded. - // Patch this to 127, making it out of bounds. - if (view.length >= 127) throw Error('cannot patch reliably'); - if (view[i - 1] != name.length) throw Error('unexpected length'); - view[i - 1] = 0x7f; - } - if (count != 1) throw Error('did not find name'); -} - -var builder = new WasmModuleBuilder(); -builder.addFunction(name, kSig_i_v) - .addBody([kExprI32Const, 2, kExprI32Const, 0, kExprI32DivU]) - .exportAs('main'); -var buffer = builder.toBuffer(); -patchNameLength(buffer); -var module = new WebAssembly.Module(buffer); -var instance = new WebAssembly.Instance(module); -assertThrows(() => instance.exports.main(), WebAssembly.RuntimeError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-688876.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-688876.js deleted file mode 100644 index 5e142b34178..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-688876.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(16, 32, false); - builder.addFunction('test', kSig_i_i) - .addBodyWithEnd([ - kExprI32Const, 0x41, - kExprI32Const, 0x45, - kExprI32Const, 0x41, - kExprI32DivU, - kExprI32LoadMem8S, 0x00, 0x3a, - kExprI32Const, 0x75, - kExprI32Const, 0x75, - kExprI32Const, 0x6e, - kExprI32Eqz, - kExprI32LoadMem8S, 0x00, 0x3a, - kExprI32Add, - kExprI32DivU, - kExprI32LoadMem8S, 0x00, 0x74, - kExprI32And, - kExprI32Eqz, - kExprI32And, -kExprMemoryGrow, 0x00, - kExprI32Const, 0x55, - kExprI32LoadMem8S, 0x00, 0x3a, - kExprI32LoadMem16U, 0x00, 0x71, - kExprI32Const, 0x00, - kExprI32RemU, - kExprI32And, -kExprI32Eqz, -kExprEnd, // @44 - ]) - .exportFunc(); - var module = builder.instantiate(); - assertThrows(() => {module.exports.test(1);}); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-689450.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-689450.js deleted file mode 100644 index bcd25387b43..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-689450.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(16, 32, false); - builder.addFunction('test', kSig_i_i) - .addBodyWithEnd([ - kExprGetLocal, 0x00, - kExprI32Const, 0x29, - kExprI32Shl, - kExprI32Const, 0x18, - kExprI32ShrS, - kExprI32Const, 0x18, - kExprI32Shl, - kExprEnd, - ]) - .exportFunc(); - var module = builder.instantiate(); - assertEquals(0, module.exports.test(16)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-6931.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-6931.js deleted file mode 100644 index 5edf25761f8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-6931.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -load('test/mjsunit/wasm/wasm-module-builder.js'); - - -// This test checks for accidental sign extension. The Wasm spec says we do -// arbitrary precision unsigned arithmetic to compute the memory address, -// meaning this test should do 0xfffffffc + 8, which is 0x100000004 and out of -// bounds. However, if we interpret 0xfffffffc as -4, then the result is 4 and -// succeeds erroneously. - - -(function() { - let builder = new WasmModuleBuilder(); - builder.addMemory(1, 1, false); - builder.addFunction('test', kSig_v_v) - .addBody([ - kExprI32Const, 0x7c, // address = -4 - kExprI32Const, 0, - kExprI32StoreMem, 0, 8, // align = 0, offset = 8 - ]) - .exportFunc(); - let module = builder.instantiate(); - - assertTraps(kTrapMemOutOfBounds, module.exports.test); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-694433.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-694433.js deleted file mode 100644 index b63f390c622..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-694433.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -var size = Math.floor(0xFFFFFFFF / 4) + 1; -(function() { - // Note: On 32 bit, this throws in the Uint16Array constructor (size does not - // fit in a Smi). On 64 bit, it throws in WebAssembly.validate, because the - // size exceeds the internal module size limit. - assertThrows(() => WebAssembly.validate(new Uint16Array(size)), RangeError); -})(); -gc(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-698587.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-698587.js deleted file mode 100644 index 8e0be882b4d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-698587.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var heap = new ArrayBuffer(); -function asm(stdlib, ffi, heap) { - "use asm"; - return {}; -} -asm({}, {}, heap); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-699485.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-699485.js deleted file mode 100644 index 8a70afa5919..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-699485.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { -"use asm"; -var builder = new WasmModuleBuilder(); -builder.addMemory(0, 5, false); -builder.addFunction("regression_699485", kSig_i_v) - .addBody([ - kExprI32Const, 0x04, - kExprNop, - kExprMemoryGrow, 0x00, - ]).exportFunc(); -let module = builder.instantiate(); -assertEquals(0, module.exports.regression_699485()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-702460.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-702460.js deleted file mode 100644 index 21a84bcf285..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-702460.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -// Non-standard opcodes. -let kSig_s_v = makeSig([], [kWasmS128]); -let kExprS128LoadMem = 0xc0; - -(function() { -"use asm"; - var builder = new WasmModuleBuilder(); - builder.addFunction("regression_702460", kSig_i_v) - .addBody([ - kExprI32Const, 0x52, - kExprI32Const, 0x41, - kExprI32Const, 0x3c, - kExprI32Const, 0xdc, 0x01, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprSetLocal, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprMemoryGrow, 0x00, - kExprS128LoadMem, 0x00, 0x40, - kExprUnreachable, - kExprMemoryGrow, 0x00 - ]).exportFunc(); - assertThrows(() => builder.instantiate()); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-702839.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-702839.js deleted file mode 100644 index 859d268d12c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-702839.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function __f_0() { - "use asm"; - function __f_1() { } - return {__f_1: __f_1}; -} -__f_0(); -__f_0(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7033.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7033.js deleted file mode 100644 index 58dff5e2f99..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7033.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addFunction('test', kSig_i_iii) - .addBodyWithEnd([ - kExprI32Const, 0x07, // i32.const 7 - kExprI32Const, 0x00, // i32.const 0 - kExprI32Const, 0x00, // i32.const 0 - kExprI32And, // i32.and - kExprI32And, // i32.and - kExprEnd, // - - ]) - .exportFunc(); -var module = builder.instantiate(); -assertEquals(0, module.exports.test()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7035.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7035.js deleted file mode 100644 index 73485494b3d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7035.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addFunction('test', kSig_i_iii) - .addBodyWithEnd([ - kExprI32Const, 0x00, // i32.const 0 - kExprI32Const, 0x00, // i32.const 0 - kExprI32Add, // i32.add -> 0 - kExprI32Const, 0x00, // i32.const 0 - kExprI32Const, 0x00, // i32.const 0 - kExprI32Add, // i32.add -> 0 - kExprI32Add, // i32.add -> 0 - kExprI32Const, 0x01, // i32.const 1 - kExprI32Const, 0x00, // i32.const 0 - kExprI32Add, // i32.add -> 1 - kExprBlock, 0x7f, // @39 i32 - kExprI32Const, 0x00, // i32.const 0 - kExprBr, 0x00, // depth=0 - kExprEnd, // @90 - kExprI32Add, // i32.add -> 1 - kExprI32Add, // i32.add -> 1 - kExprEnd - ]) - .exportFunc(); -var module = builder.instantiate(); -assertEquals(1, module.exports.test()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-703568.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-703568.js deleted file mode 100644 index c7d716bffd8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-703568.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --stack-size=100 - -function asm() { - 'use asm'; - return {}; -} -function f() { - asm(); - f(); -} -assertThrows(() => f(), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7049.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7049.js deleted file mode 100644 index 6d2cd351fb9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7049.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -// Build two instances, instance 2 is interpreted, and calls instance 1 (via -// C_WASM_ENTRY), instance 1 then calls JS, which triggers GC. - -let builder1 = new WasmModuleBuilder(); - -function call_gc() { - print('Triggering GC.'); - gc(); - print('Survived GC.'); -} -let func1_sig = makeSig(new Array(8).fill(kWasmI32), [kWasmI32]); -let imp = builder1.addImport('q', 'gc', kSig_v_v); -let func1 = builder1.addFunction('func1', func1_sig) - .addBody([ - kExprGetLocal, 0, // - - kExprCallFunction, imp - ]) - .exportFunc(); -let instance1 = builder1.instantiate({q: {gc: call_gc}}); - -let builder2 = new WasmModuleBuilder(); - -let func1_imp = builder2.addImport('q', 'func1', func1_sig); -let func2 = builder2.addFunction('func2', kSig_i_i) - .addBody([ - kExprGetLocal, 0, // 1 - kExprGetLocal, 0, // 2 - kExprGetLocal, 0, // 3 - kExprGetLocal, 0, // 4 - kExprGetLocal, 0, // 5 - kExprGetLocal, 0, // 6 - kExprGetLocal, 0, // 7 - kExprGetLocal, 0, // 8 - kExprCallFunction, func1_imp - ]) - .exportFunc(); - -let instance2 = builder2.instantiate({q: {func1: instance1.exports.func1}}); - -%RedirectToWasmInterpreter( - instance2, parseInt(instance2.exports.func2.name)); - -// Call with 1. This will be passed by the C_WASM_ENTRY via the stack, and the -// GC will try to dereference it (before the bug fix). -instance2.exports.func2(1); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-708714.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-708714.js deleted file mode 100644 index dc90a0aba37..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-708714.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -var builder = new WasmModuleBuilder(); - -builder.addExplicitSection([kFunctionSectionCode, - // length - 7, - // functions count - 1, - // signature index (invalid LEB) - 0xff, 0xff, 0xff, 0xff, 0xff]); -builder.addExplicitSection([kStartSectionCode, - // length - 1, - // index - 0]); - -assertThrows(() => builder.instantiate(), WebAssembly.CompileError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-709684.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-709684.js deleted file mode 100644 index a6e03e0a0bf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-709684.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --allow-natives-syntax - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let importingModuleBinary1 = (() => { - var builder = new WasmModuleBuilder(); - builder.addImport('', 'f', kSig_i_v); - return new Int8Array(builder.toBuffer()); -})(); - -let importingModuleBinary2 = (() => { - var builder = new WasmModuleBuilder(); - builder.addImport('', 'f', kSig_i_v); - builder.addFunction('g', kSig_v_v) - .addBody([kExprNop]); - return new Int8Array(builder.toBuffer()); -})(); - -let importingModuleBinary3 = (() => { - var builder = new WasmModuleBuilder(); - builder.addImport('', 'f', kSig_i_v); - builder.addImport('', 'f2', kSig_i_v); - builder.addFunction('g', kSig_v_v) - .addBody([kExprNop]); - return new Int8Array(builder.toBuffer()); -})(); - -let importingModuleBinary4 = (() => { - var builder = new WasmModuleBuilder(); - builder.addFunction('g', kSig_v_v) - .addBody([kExprNop]); - return new Int8Array(builder.toBuffer()); -})(); - -const complexImportingModuleBinary1 = (() => { - let builder = new WasmModuleBuilder(); - - builder.addImport('a', 'b', kSig_v_v); - builder.addImportedMemory('c', 'd', 1); - builder.addImportedTable('e', 'f', 1); - builder.addImportedGlobal('g', '⚡', kWasmI32); - builder.addFunction('g', kSig_v_v) - .addBody([kExprNop]); - return builder.toBuffer(); -})(); - -const complexImportingModuleBinary2 = (() => { - let builder = new WasmModuleBuilder(); - - builder.addImport('a', 'b', kSig_v_v); - builder.addImportedMemory('c', 'd', 1); - builder.addImportedTable('e', 'f', 1); - builder.addImportedGlobal('g', '⚡', kWasmI32); - builder.addFunction('g', kSig_v_v) - .addBody([kExprNop]); - return builder.toBuffer(); -})(); - -var tests = [ - importingModuleBinary1, - importingModuleBinary2, - importingModuleBinary3, - importingModuleBinary4, - complexImportingModuleBinary1, - complexImportingModuleBinary2 -]; - -for (var index in tests) { - assertPromiseResult( - WebAssembly.compile(tests[index]), - m => assertTrue(m instanceof WebAssembly.Module), - assertUnreachable); -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-710844.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-710844.js deleted file mode 100644 index 3bafe41c0fc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-710844.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - "use asm"; - var builder = new WasmModuleBuilder(); - builder.addMemory(0, 5, true); - builder.addFunction("regression_710844", kSig_v_v) - .addBody([ - kExprI32Const, 0x03, - kExprNop, - kExprMemoryGrow, 0x00, - kExprI32Const, 0x13, - kExprNop, - kExprI32StoreMem8, 0x00, 0x10 - ]).exportFunc(); - let instance = builder.instantiate(); - instance.exports.regression_710844(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-711203.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-711203.js deleted file mode 100644 index beca86d378c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-711203.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function() { - var builder = new WasmModuleBuilder(); - builder.addMemory(16, 32, false); - builder.addFunction("test", kSig_i_iii) - .addBodyWithEnd([ - // body: - kExprI64Const, 0, - kExprI64Const, 0x1, - kExprI64Clz, - kExprI64Sub, - kExprI64Const, 0x10, - kExprI64Const, 0x1b, - kExprI64Shl, - kExprI64Sub, - kExprI64Popcnt, - kExprI32ConvertI64, - kExprEnd, // @207 - ]) - .exportFunc(); - var module = builder.instantiate(); - const result = module.exports.test(1, 2, 3); - assertEquals(58, result); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-712569.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-712569.js deleted file mode 100644 index ea7e4060a0e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-712569.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// - -var v11 = {}; -Object.defineProperty(v11.__proto__, 0, { - get: function() { - }, - set: function() { - try { - WebAssembly.instantiate(); - v11[0] = 0; - } catch (e) { - assertTrue(e instanceof RangeError); - } - } -}); -v66 = new Array(); -cv = v66; cv[0] = 0.1; cv[2] = 0.2; diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-715216a.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-715216a.js deleted file mode 100644 index 56253414c94..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-715216a.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-interpret-all --validate-asm - -function asm() { - "use asm"; - function f() {} - return {}; -} -asm(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-715216b.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-715216b.js deleted file mode 100644 index 85e93e07c91..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-715216b.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-interpret-all --wasm-lazy-compilation - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -var builder = new WasmModuleBuilder(); -builder.addFunction('f', kSig_v_v).addBody([]); -builder.addFunction('g', kSig_v_v).addBody([]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-717056.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-717056.js deleted file mode 100644 index 534cf74eb76..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-717056.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Check that stack overflow inside asm-wasm translation propagates correctly. - -function asm() { - 'use asm'; - return {}; -} - -function rec() { - asm(); - rec(); -} -assertThrows(() => rec(), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-717194.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-717194.js deleted file mode 100644 index 074b2e4bca9..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-717194.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -PAGE_SIZE = 0x10000; -PAGES = 10; - -memory = new WebAssembly.Memory({initial: PAGES}); -buffer = memory.buffer; - -var func = (function (stdlib, env, heap) { - "use asm"; - - var array = new stdlib.Int32Array(heap); - - return function () { - array[0] = 0x41424344; - array[1] = 0x45464748; - } -}({Int32Array: Int32Array}, {}, buffer)); - -for (var i = 0; i < 1000; ++i) - func(); - -memory.grow(1); - -func(); - -for(var i = 0; i < 2; ++i) - new ArrayBuffer(PAGE_SIZE * PAGES); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-719175.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-719175.js deleted file mode 100644 index c6217b0b01a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-719175.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --wasm-interpret-all - -function asm() { - 'use asm'; - function f() { - if (1.0 % 2.5 == -0.75) { - } - return 0; - } - return {f: f}; -} -asm().f(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-722445.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-722445.js deleted file mode 100644 index 5868d761907..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-722445.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addFunction('f', kSig_v_v).addBody([ - kExprI32Const, 0, kExprBrTable, - // 0x80000000 in LEB: - 0x80, 0x80, 0x80, 0x80, 0x08, - // First break target. Creation of this node triggered the bug. - 0 -]); -assertThrows(() => builder.instantiate(), WebAssembly.CompileError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-724846.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-724846.js deleted file mode 100644 index b215b6021a7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-724846.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -// Flags: --wasm-max-mem-pages=49152 - -let builder = new WasmModuleBuilder(); -const num_pages = 49152; -builder.addMemory(num_pages, num_pages); -// num_pages * 64k (page size) > kMaxInt. -assertThrows(() => builder.instantiate(), RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-724851.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-724851.js deleted file mode 100644 index 5c4c421a1c4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-724851.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-lazy-compilation - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let builder = new WasmModuleBuilder(); -builder.addFunction('f', kSig_i_v).addBody([kExprReturn]); -assertThrows(() => builder.instantiate(), WebAssembly.CompileError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-724972.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-724972.js deleted file mode 100644 index cbe5d35d540..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-724972.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addMemory(0, 0, true); -var instance = builder.instantiate(); -instance.exports.memory.buffer; diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-727219.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-727219.js deleted file mode 100644 index af0d8725bca..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-727219.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc --validate-asm - -function asm() { - "use asm"; - function f(a) { - a = a | 0; - tab[a & 0]() | 0; - } - function unused() { - return 0; - } - var tab = [ unused ]; - return f; -} - -asm(); -gc(); -asm(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-727222.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-727222.js deleted file mode 100644 index 3096334096d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-727222.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addMemory(0, 0, false); -builder.addFunction('f', kSig_i_v) - .addBody([kExprMemorySize, kMemoryZero]) - .exportFunc(); -var instance = builder.instantiate(); -instance.exports.f(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-727560.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-727560.js deleted file mode 100644 index e9ed4418603..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-727560.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -{ - let builder = new WasmModuleBuilder(); - builder.addMemory(); - builder.exportMemoryAs("exported_mem"); - i1 = builder.instantiate(); -} -{ - let builder = new WasmModuleBuilder(); - builder.addImportedMemory("fil", "imported_mem"); - i2 = builder.instantiate({fil: {imported_mem: i1.exports.exported_mem}}); -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-729991.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-729991.js deleted file mode 100644 index 8cabd515b36..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-729991.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let builder = new WasmModuleBuilder(); -builder.addCustomSection('BBBB', []); -builder.addCustomSection('AAAA', new Array(32).fill(0)); -let buffer = builder.toBuffer(); -// Shrink the buffer by 30 bytes (content of the unknown section named 'AAAA'). -buffer = buffer.slice(0, buffer.byteLength - 30); -// Instantiation should fail on the truncated buffer. -assertThrows(() => new WebAssembly.Module(buffer), WebAssembly.CompileError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-731351.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-731351.js deleted file mode 100644 index 238223ac2c0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-731351.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --expose-gc --stress-opt - -gc(); -function asm(stdlib, foreign, buffer) { - "use asm"; - var HEAP32 = new stdlib.Uint32Array(buffer); - function load(a) { - a = a | 0; - return +(HEAP32[a >> 2] >>> 0); - } - return {load: load}; -} - -function RunAsmJsTest() { - buffer = new ArrayBuffer(65536); - var asm_module = asm({Uint32Array: Uint32Array}, {}, buffer); - asm_module.load(buffer.byteLength); -} -RunAsmJsTest(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-734108.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-734108.js deleted file mode 100644 index 74a1717b8d2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-734108.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -__v_0 = new Uint8Array([ - 0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x05, 0x01, - 0x60, 0x00, 0x01, 0x7f, 0x03, 0x02, 0x01, 0x00, 0x05, 0x03, 0x01, - 0x00, 0x01, 0x07, 0x11, 0x02, 0x04, 0x67, 0x72, 0x6f, 0x77, 0x00, - 0x00, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x02, 0x00, 0x0a, - 0x08, 0x01, 0x06, 0x00, 0x41, 0x01, 0x40, 0x00, 0x0b -]); -assertPromiseResult( - WebAssembly.compile(__v_0) -); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-734246.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-734246.js deleted file mode 100644 index b861141db77..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-734246.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let builder = new WasmModuleBuilder(); -builder.addExplicitSection([ - kUnknownSectionCode, - // section length - 0x0f, - // name length: 0xffffffff - 0xf9, 0xff, 0xff, 0xff, 0x0f -]); -assertThrows(() => builder.instantiate(), WebAssembly.CompileError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-734345.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-734345.js deleted file mode 100644 index d7486d2d1e0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-734345.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-gc - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -builder1 = new WasmModuleBuilder(); -builder1.addFunction('exp1', kSig_v_v).addBody([kExprUnreachable]).exportFunc(); - -builder2 = new WasmModuleBuilder(); -builder2.addImport('imp', 'imp', kSig_v_v); -builder2.addFunction('call_imp', kSig_v_v) - .addBody([kExprCallFunction, 0]) - .exportFunc(); - -export1 = builder1.instantiate().exports.exp1; -export2 = builder2.instantiate({imp: {imp: export1}}).exports.call_imp; -export1 = undefined; - -let a = [0]; -for (i = 0; i < 10; ++i) { - a = a.concat(new Array(i).fill(i)); - assertThrows(() => export2(), WebAssembly.RuntimeError); - gc(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7353.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7353.js deleted file mode 100644 index 81f45fe6a5d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7353.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-lazy-compilation - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addMemory(16, 32); -builder.addFunction('grow', kSig_i_i).addBody([ - kExprGetLocal, 0, - kExprMemoryGrow, 0, -]).exportFunc(); -builder.addFunction('main', kSig_i_i).addBody([ - ...wasmI32Const(0x41), - kExprSetLocal, 0, - // Enter loop, such that values are spilled to the stack. - kExprLoop, kWasmStmt, - kExprEnd, - // Reload value. This must be loaded as 32 bit value. - kExprGetLocal, 0, - kExprI32LoadMem, 0, 0, -]).exportFunc(); -const instance = builder.instantiate(); -// Execute grow, such that the stack contains garbage data afterwards. -instance.exports.grow(1); -instance.exports.main(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7364.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7364.js deleted file mode 100644 index f508585ebba..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7364.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const exportingModuleBinary = (() => { - const builder = new WasmModuleBuilder(); - builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 42]).exportFunc(); - return builder.toBuffer(); -})(); - -const exportingModule = new WebAssembly.Module(exportingModuleBinary); -const exportingInstance = new WebAssembly.Instance(exportingModule); - -const reExportingModuleBinary = (() => { - const builder = new WasmModuleBuilder(); - const gIndex = builder.addImport('a', 'g', kSig_i_v); - builder.addExport('y', gIndex); - return builder.toBuffer(); -})(); - -const module = new WebAssembly.Module(reExportingModuleBinary); -const imports = { - a: {g: exportingInstance.exports.f}, -}; -const instance = new WebAssembly.Instance(module, imports); - -// Previously exported Wasm functions are re-exported with the same value -assertEquals(instance.exports.y, exportingInstance.exports.f); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-736584.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-736584.js deleted file mode 100644 index 0e027f3a57f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-736584.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-lazy-compilation - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let mem = new WebAssembly.Memory({initial: 0}); -let builder = new WasmModuleBuilder(); -builder.addImportedMemory("mod", "imported_mem"); -builder.addFunction('mem_size', kSig_i_v) - .addBody([kExprMemorySize, kMemoryZero]) - .exportFunc(); -let instance = builder.instantiate({mod: {imported_mem: mem}}); -instance.exports.mem_size(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7366.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7366.js deleted file mode 100644 index b5cae8daa42..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7366.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction(undefined, kSig_i_iii).addBody([ - // Return the sum of all arguments. - kExprGetLocal, 0, kExprGetLocal, 1, kExprGetLocal, 2, kExprI32Add, kExprI32Add -]); -const sig = builder.addType(kSig_i_iii); -builder.addFunction(undefined, kSig_i_iii) - .addBody([ - ...wasmI32Const(1), // i32.const 0x1 - kExprSetLocal, 0, // set_local 0 - ...wasmI32Const(4), // i32.const 0x1 - kExprSetLocal, 1, // set_local 1 - ...wasmI32Const(16), // i32.const 0x1 - kExprSetLocal, 2, // set_local 2 - kExprLoop, kWasmStmt, // loop - kExprEnd, // end - kExprGetLocal, 0, // get_local 0 - kExprGetLocal, 1, // get_local 1 - kExprGetLocal, 2, // get_local 2 - kExprI32Const, 0, // i32.const 0 (func index) - kExprCallIndirect, sig, 0, // call indirect - ]) - .exportAs('main'); -builder.appendToTable([0]); -const instance = builder.instantiate(); -assertEquals(21, instance.exports.main()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-737069.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-737069.js deleted file mode 100644 index e4c4fae8957..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-737069.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -let binary = new Binary; - -binary.emit_header(); -binary.emit_section(kTypeSectionCode, section => { - section.emit_u32v(1); // number of types - section.emit_u8(kWasmFunctionTypeForm); - section.emit_u32v(0); // number of parameters - section.emit_u32v(0); // number of returns -}); -binary.emit_section(kFunctionSectionCode, section => { - section.emit_u32v(1); // number of functions - section.emit_u32v(0); // type index -}); - -binary.emit_u8(kCodeSectionCode); -binary.emit_u8(0x02); // section length -binary.emit_u8(0x01); // number of functions -binary.emit_u8(0x40); // function body size -// Function body is missing here. - -let buffer = new ArrayBuffer(binary.length); -let view = new Uint8Array(buffer); -for (let i = 0; i < binary.length; i++) { - view[i] = binary[i] | 0; -} -WebAssembly.validate(buffer); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-739768.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-739768.js deleted file mode 100644 index a191c828d6c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-739768.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -// Flags: --wasm-lazy-compilation - -let builder0 = new WasmModuleBuilder(); -builder0.setName('module_0'); -let sig_index = builder0.addType(kSig_i_v); -builder0.addFunction('main', kSig_i_i) - .addBody([ - kExprGetLocal, 0, // -- - kExprCallIndirect, sig_index, kTableZero - ]) // -- - .exportAs('main'); -builder0.setTableBounds(3, 3); -builder0.addExportOfKind('table', kExternalTable); -let module0 = new WebAssembly.Module(builder0.toBuffer()); -let instance0 = new WebAssembly.Instance(module0); - -let builder1 = new WasmModuleBuilder(); -builder1.setName('module_1'); -builder1.addFunction('main', kSig_i_v).addBody([kExprUnreachable]); -builder1.addImportedTable('z', 'table'); -builder1.addElementSegment(0, false, [0], true); -let module1 = new WebAssembly.Module(builder1.toBuffer()); -let instance1 = - new WebAssembly.Instance(module1, {z: {table: instance0.exports.table}}); -assertThrows( - () => instance0.exports.main(0), WebAssembly.RuntimeError, 'unreachable'); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7422.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7422.js deleted file mode 100644 index 71e1eb89bd8..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7422.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -sig = makeSig([kWasmI32, kWasmI32, kWasmI32, kWasmI32, kWasmI32], [kWasmI32]); -builder.addFunction(undefined, sig).addBody([kExprGetLocal, 4]); -builder.addMemory(16, 32); -builder.addFunction('main', sig) - .addBody([ - kExprI32Const, 0, kExprSetLocal, 0, - // Compute five arguments to the function call. - kExprI32Const, 0, kExprI32Const, 0, kExprI32Const, 0, kExprI32Const, 0, - kExprGetLocal, 4, kExprI32Const, 1, kExprI32Add, - // Now some intermediate computation to force the arguments to be spilled - // to the stack: - kExprGetLocal, 0, kExprI32Const, 1, kExprI32Add, kExprGetLocal, 1, - kExprGetLocal, 1, kExprI32Add, kExprI32Add, kExprDrop, - // Now call the function. - kExprCallFunction, 0 - ]) - .exportFunc(); -var instance = builder.instantiate(); -assertEquals(11, instance.exports.main(2, 4, 6, 8, 10)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7499.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7499.js deleted file mode 100644 index 74e4d53a17f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7499.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addMemory(16, 32); -builder.addFunction(undefined, kSig_v_v).addBody([ - kExprI32Const, 0, // i32.const 0 - kExprI64LoadMem, 0, 0xff, 0xff, 0xff, 0xff, - 0x0f, // i64.load align=0 offset=0xffffffff - kExprDrop, // drop -]); -builder.addExport('main', 0); -const module = builder.instantiate(); -assertThrows( - () => module.exports.main(), WebAssembly.RuntimeError, /out of bounds/); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7508.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7508.js deleted file mode 100644 index 10ce500a445..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7508.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction(undefined, kSig_v_v).addLocals({i64_count: 1}).addBody([ - kExprI64Const, 0xeb, 0xd7, 0xaf, 0xdf, - 0xbe, 0xfd, 0xfa, 0xf5, 0x6b, // i64.const - kExprI32Const, 0, // i32.const - kExprIf, kWasmI32, // if i32 - kExprI32Const, 0, // i32.const - kExprElse, // else - kExprI32Const, 0, // i32.const - kExprEnd, // end - kExprBrIf, 0, // br_if depth=0 - kExprSetLocal, 0, // set_local 0 -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-752423.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-752423.js deleted file mode 100644 index 938ecbf2522..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-752423.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm - -'use strict'; - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -var builder = new WasmModuleBuilder(); -builder.addImportedTable("x", "table", 1, 10000000); -builder.addFunction("main", kSig_i_i) - .addBody([ - kExprI32Const, 0, - kExprGetLocal, 0, - kExprCallIndirect, 0, kTableZero]) - .exportAs("main"); -let module = new WebAssembly.Module(builder.toBuffer()); -let table = new WebAssembly.Table({element: "anyfunc", - initial: 1, maximum:1000000}); -let instance = new WebAssembly.Instance(module, {x: {table:table}}); - -table.grow(0x40001); - -let instance2 = new WebAssembly.Instance(module, {x: {table:table}}); - -try { - instance2.exports.main(402982); // should be OOB -} catch (e) { - print("Correctly caught: ", e); -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-753496.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-753496.js deleted file mode 100644 index a056a9fd8eb..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-753496.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module(stdlib, foreign, heap) { - "use asm"; - var MEM64 = new stdlib.Float64Array(heap); - function foo(i) { - i = i | 0; - MEM64[032 ] = +(i >>> 7 ) / 2.; - return +MEM64[0]; - } - return { foo: foo }; -} - -var foo = Module(this, {}, new ArrayBuffer( "" ? this : this)).foo; -assertEquals(NaN, foo(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7565.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7565.js deleted file mode 100644 index c9d4e2ca88d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7565.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -sig0 = makeSig([], [kWasmI32]); -builder.addFunction(undefined, sig0).addLocals({i64_count: 1}).addBody([ - kExprLoop, kWasmI32, // loop i32 - kExprF32Const, 0x00, 0x00, 0x00, 0x00, // f32.const 0 --> f32:0 - kExprGetLocal, 0x00, // get_local 0 --> i64:0 - kExprF32SConvertI64, // f32.sconvert/i64 --> f32:0 - kExprF32Ge, // f32.ge --> i32:1 - kExprEnd, // end -]); -builder.addExport('main', 0); -const module = builder.instantiate(); -assertEquals(1, module.exports.main()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-757217.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-757217.js deleted file mode 100644 index 28e554b87ab..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-757217.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let builder = new WasmModuleBuilder(); -builder.addImport('','f', kSig_v_v); -builder.addExport('a', 0); -builder.addExport('b', 0); -var bytes = builder.toBuffer(); - -var m = new WebAssembly.Module(bytes); -assertTrue(m instanceof WebAssembly.Module); - -assertPromiseResult( - WebAssembly.compile(bytes) - .then(async_result => assertTrue(async_result instanceof WebAssembly.Module), - assertUnreachable)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7579.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7579.js deleted file mode 100644 index 876a76cad93..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7579.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -// Generate function 1 (out of 2). -sig0 = makeSig([], [kWasmI32]); -builder.addFunction(undefined, sig0) - .addBody([ - kExprI64Const, 0xc8, 0xda, 0x9c, 0xbc, 0xf8, 0xf0, 0xe1, 0xc3, 0x87, 0x7f, - kExprLoop, kWasmF64, - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - kExprCallFunction, 0x01, - ...wasmF64Const(0), - kExprEnd, - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - ...wasmF64Const(0), - kExprCallFunction, 0x01, - kExprI64Const, 0xb9, 0xf2, 0xe4, 0x01, - kExprI64LtS]); -// Generate function 2 (out of 2). -sig1 = makeSig(new Array(12).fill(kWasmF64), []); -builder.addFunction(undefined, sig1).addBody([]); -builder.addExport('main', 0); -const instance = builder.instantiate(); -assertEquals(1, instance.exports.main()); - -const builder2 = new WasmModuleBuilder(); -sig0 = makeSig([], [kWasmI32]); -builder2.addFunction(undefined, sig0).addLocals({i64_count: 1}).addBody([ - kExprLoop, kWasmI32, // loop i32 - kExprGetLocal, 0, // get_local 3 - kExprF32SConvertI64, // f32.sconvert/i64 - kExprI32ReinterpretF32, // i32.reinterpret/f32 - kExprEnd // end -]); -builder2.addExport('main', 0); -const instance2 = builder2.instantiate(); -assertEquals(0, instance2.exports.main()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7582.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7582.js deleted file mode 100644 index d8b5e9d7fc5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7582.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addGlobal(kWasmI32, 1); -sig0 = makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]); -builder.addFunction(undefined, sig0) - .addBody([ -kExprF32Const, 0x01, 0x00, 0x00, 0x00, -kExprF32Const, 0x00, 0x00, 0x00, 0x00, -kExprF32Eq, // --> i32:0 -kExprF32Const, 0xc9, 0xc9, 0x69, 0xc9, -kExprF32Const, 0xc9, 0xc9, 0xc9, 0x00, -kExprF32Eq, // --> i32:0 i32:0 -kExprIf, kWasmF32, - kExprF32Const, 0x00, 0x00, 0x00, 0x00, -kExprElse, // @32 - kExprF32Const, 0x00, 0x00, 0x00, 0x00, - kExprEnd, // --> i32:0 f32:0 -kExprF32Const, 0xc9, 0x00, 0x00, 0x00, -kExprF32Const, 0xc9, 0xc9, 0xc9, 0x00, -kExprF32Const, 0xc9, 0xc9, 0xa0, 0x00, // --> i32:0 f32:0 f32 f32 f32 -kExprF32Eq, // --> i32:0 f32:0 f32 i32:0 -kExprIf, kWasmF32, - kExprF32Const, 0x00, 0x00, 0x00, 0x00, -kExprElse, - kExprF32Const, 0x00, 0x00, 0x00, 0x00, - kExprEnd, // --> i32:0 f32:0 f32 f32:0 -kExprF32Eq, // --> i32:0 f32:0 i32:0 -kExprIf, kWasmF32, - kExprF32Const, 0x00, 0x00, 0x00, 0x00, -kExprElse, - kExprF32Const, 0x00, 0x00, 0x00, 0x00, - kExprEnd, // --> i32:0 f32:0 f32:0 -kExprF32Const, 0xc9, 0xc9, 0xff, 0xff, // --> i32:0 f32:0 f32:0 f32 -kExprF32Eq, // --> i32:0 f32:0 i32:0 -kExprDrop, -kExprDrop, // --> i32:0 -kExprI32Const, 1, // --> i32:0 i32:1 -kExprI32GeU, // --> i32:0 - ]); -builder.addExport('main', 0); -const instance = builder.instantiate(); -assertEquals(0, instance.exports.main(1, 2, 3)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-763439.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-763439.js deleted file mode 100644 index ef84b97859f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-763439.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addMemory(0, 1234, false); -builder.addFunction('f', kSig_i_v) - .addBody([ - kExprI32Const, 0x1d, // -- - kExprMemoryGrow, 0x00, // -- - kExprI32LoadMem, 0x00, 0xff, 0xff, 0x45, // -- - ]) - .exportFunc(); - -var module = new WebAssembly.Module(builder.toBuffer()); -var instance1 = new WebAssembly.Instance(module); -instance1.exports.f(); -var instance2 = new WebAssembly.Instance(module); -instance2.exports.f(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-763697.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-763697.js deleted file mode 100644 index c831a55fba5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-763697.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --no-experimental-wasm-simd - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let builder = new WasmModuleBuilder(); - builder.addFunction("main", kSig_i_i) - .addBody([kExprGetLocal, 0]) - .addLocals({s128_count: 1}); - - assertFalse(WebAssembly.validate(builder.toBuffer())); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-766003.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-766003.js deleted file mode 100644 index 3aaff40636b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-766003.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --wasm-interpret-all - -load('test/mjsunit/wasm/wasm-module-builder.js'); - - __v_6 = new WasmModuleBuilder(); -__v_6.addFunction('exp1', kSig_i_i).addBody([kExprUnreachable]).exportFunc(); - __v_7 = new WasmModuleBuilder(); - __v_7.addImport('__v_11', '__v_11', kSig_i_i); -try { -; } catch(e) {; } - __v_8 = __v_6.instantiate().exports.exp1; - __v_9 = __v_7.instantiate({__v_11: {__v_11: __v_8}}).exports.call_imp; diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-769637.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-769637.js deleted file mode 100644 index 71aaa45bfda..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-769637.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let builder = new WasmModuleBuilder(); -builder - .addMemory() - .addFunction("main", kSig_v_v) - .addBody([kExprI32Const, 4, - kExprI32Const, 8, - kExprI32StoreMem, 0, 16]) - .exportAs("main"); -let instance = builder.instantiate(); -assertTraps(kTrapMemOutOfBounds, instance.exports.main); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-769846.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-769846.js deleted file mode 100644 index 297da84f5f0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-769846.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Module() { - "use asm"; - function div_(__v_6) { - __v_6 = __v_6 | 0; - } - return { f: div_} -}; -var __f_0 = Module().f; -__v_8 = [0]; -__v_8.__defineGetter__(0, function() { return __f_0(__v_8); }); -__v_8[0]; diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-771243.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-771243.js deleted file mode 100644 index 81b9e8f2a98..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-771243.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --wasm-interpret-all - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -assertThrows(() => { - __v_29 = 0; -function __f_1() { - __v_19 = new WasmModuleBuilder(); - if (__v_25) { - __v_23 = __v_19.addImport('__v_24', '__v_30', __v_25); - } - if (__v_18) { - __v_19.addMemory(); - __v_19.addFunction('load', kSig_i_i) - .addBody([ 0]) - .exportFunc(); - } - return __v_19; -} - (function TestExternalCallBetweenTwoWasmModulesWithoutAndWithMemory() { - __v_21 = __f_1(__v_18 = false, __v_25 = kSig_i_i); - __v_21.addFunction('plus_one', kSig_i_i) - .addBody([ - kExprGetLocal, 0, // - - kExprCallFunction, __v_29 ]) - .exportFunc(); - __v_32 = - __f_1(__v_18 = true, __v_25 = undefined); - __v_31 = __v_32.instantiate(); try { __v_32[__getRandomProperty()] = __v_0; delete __v_18[__getRandomProperty()]; delete __v_34[__getRandomProperty()]; } catch(e) {; }; - __v_20 = __v_21.instantiate( - {__v_24: {__v_30: __v_31.exports.load}}); - __v_20.exports.plus_one(); __v_33 = __v_43; -})(); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-772332.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-772332.js deleted file mode 100644 index e8547c81758..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-772332.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --wasm-interpret-all - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -assertThrows(() => { -let __v_50315 = 0; -function __f_15356(__v_50316, __v_50317) { - let __v_50318 = new WasmModuleBuilder(); - if (__v_50317) { - let __v_50319 = __v_50318.addImport('import_module', 'other_module_fn', kSig_i_i); - } - __v_50318.addMemory(); - __v_50318.addFunction('load', kSig_i_i).addBody([ 0, 0, 0]).exportFunc(); - return __v_50318; -} - (function __f_15357() { - let __v_50320 = __f_15356(__v_50350 = false, __v_50351 = kSig_i_i); - __v_50320.addFunction('plus_one', kSig_i_i).addBody([kExprGetLocal, 0, kExprCallFunction, __v_50315, kExprI32Const, kExprI32Add, kExprReturn]).exportFunc(); - let __v_50321 = __f_15356(); - let __v_50324 = __v_50321.instantiate(); - let __v_50325 = __v_50320.instantiate({ - import_module: { - other_module_fn: __v_50324.exports.load - } - }); - __v_50325.exports.plus_one(); - })(); -}); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-775366.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-775366.js deleted file mode 100644 index 69a1f68dc0e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-775366.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function BadTypeSection() { - var data = bytes( - kWasmH0, - kWasmH1, - kWasmH2, - kWasmH3, - - kWasmV0, - kWasmV1, - kWasmV2, - kWasmV3, - - kTypeSectionCode, - 5, - 2, - 0x60, - 0, - 0, - 13 - ); - - assertFalse(WebAssembly.validate(data)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-775710.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-775710.js deleted file mode 100644 index 5e6fb8c50b7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-775710.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --validate-asm --allow-natives-syntax - -const kMaxLocals = 50000; -const fn_template = '"use asm";\nfunction f() { LOCALS }\nreturn f;'; -for (var num_locals = kMaxLocals; num_locals < kMaxLocals + 2; ++num_locals) { - const fn_code = fn_template.replace( - 'LOCALS', - Array(num_locals) - .fill() - .map((_, idx) => 'var l' + idx + ' = 0;') - .join('\n')); - const asm_fn = new Function(fn_code); - const f = asm_fn(); - f(); - assertEquals(num_locals <= kMaxLocals, %IsAsmWasmCode(asm_fn)); -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-776677.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-776677.js deleted file mode 100644 index 87bf8fac7ef..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-776677.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function module(stdlib,foreign,buffer) { - "use asm"; - var fl = new stdlib.Uint32Array(buffer); - function f1(x) { - x = x | 0; - fl[0] = x; - fl[0x10000] = x; - fl[0x100000] = x; - } - return f1; -} - -var global = {Uint32Array:Uint32Array}; -var env = {}; -memory = new WebAssembly.Memory({initial:128}); -var buffer = memory.buffer; -evil_f = module(global,env,buffer); - -zz = {}; -zz.toString = function() { - Array.prototype.slice.call([]); - return 0xffffffff; -} -evil_f(3); -assertThrows(() => memory.grow(1), RangeError); -evil_f(zz); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7785.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7785.js deleted file mode 100644 index 72638b16858..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7785.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --experimental-wasm-anyref - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function testAnyRefNull() { - const builder = new WasmModuleBuilder(); - builder.addFunction('main', kSig_r_v) - .addBody([kExprRefNull]) - .exportFunc(); - - var wire_bytes = builder.toBuffer(); - var module = new WebAssembly.Module(wire_bytes); - var buffer = %SerializeWasmModule(module); - module = %DeserializeWasmModule(buffer, wire_bytes); - var instance = new WebAssembly.Instance(module); - - assertEquals(null, instance.exports.main()); -})(); - -(function testAnyRefIsNull() { - const builder = new WasmModuleBuilder(); - builder.addFunction('main', kSig_i_r) - .addBody([kExprGetLocal, 0, kExprRefIsNull]) - .exportFunc(); - - var wire_bytes = builder.toBuffer(); - var module = new WebAssembly.Module(wire_bytes); - var buffer = %SerializeWasmModule(module); - module = %DeserializeWasmModule(buffer, wire_bytes); - var instance = new WebAssembly.Instance(module); - - assertEquals(0, instance.exports.main({'hello' : 'world'})); - assertEquals(0, instance.exports.main(1234)); - assertEquals(0, instance.exports.main(0)); - assertEquals(0, instance.exports.main(123.4)); - assertEquals(0, instance.exports.main(undefined)); - assertEquals(1, instance.exports.main(null)); - assertEquals(0, instance.exports.main(print)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-778917.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-778917.js deleted file mode 100644 index c7eb033d950..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-778917.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --wasm-interpret-all - -load("test/mjsunit/wasm/wasm-module-builder.js"); - - -const builder = new WasmModuleBuilder(); - -const index = builder.addFunction("huge_frame", kSig_v_v) - .addBody([kExprCallFunction, 0]) - .addLocals({f64_count: 49555}).exportFunc().index; -// We assume above that the function we added has index 0. -assertEquals(0, index); - -const module = builder.instantiate(); -assertThrows(module.exports.huge_frame, RangeError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-782280.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-782280.js deleted file mode 100644 index 008ab16159c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-782280.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addFunction('test', kSig_i_iii) - .addBodyWithEnd([ - kExprI32Const, 0, // 0 - kExprI32Const, 0, // 0, 0 - kExprI32Add, // 0 + 0 -> 0 - kExprI32Const, 0, // 0, 0 - kExprI32Const, 0, // 0, 0, 0 - kExprI32Add, // 0, 0 + 0 -> 0 - kExprDrop, // 0 - kExprDrop, // - - kExprI32Const, 0, // 0 - kExprI32Const, 0, // 0, 0 - kExprI32Add, // 0 + 0 -> 0 - kExprI32Const, 0, // 0, 0 - kExprI32Const, 1, // 0, 0, 1 - kExprI32Add, // 0, 0 + 1 -> 1 - kExprBlock, kWasmStmt, // 0, 1 - kExprBr, 0, // 0, 1 - kExprEnd, // 0, 1 - kExprI32Add, // 0 + 1 -> 1 - kExprEnd - ]) - .exportFunc(); -var module = builder.instantiate(); -assertEquals(1, module.exports.test()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-784050.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-784050.js deleted file mode 100644 index acf4539aeed..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-784050.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addFunction('test', kSig_v_v) - .addBodyWithEnd([ - kExprI32Const, 0x0, // const 0 - kExprI32Const, 0x0, // const 0 - kExprBrIf, 0x00, // br depth=0 - kExprLoop, 0x7f, // loop i32 - kExprBlock, 0x7f, // block i32 - kExprI32Const, 0x0, // const 0 - kExprBr, 0x00, // br depth=0 - kExprEnd, // end - kExprBr, 0x00, // br depth=0 - kExprEnd, // end - kExprUnreachable, // unreachable - kExprEnd, // end - ]) - .exportFunc(); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-789952.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-789952.js deleted file mode 100644 index f73d8dc4717..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-789952.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let module_size = 19; -let string_len = 0x00fffff0 - module_size; - -print("Allocating backing store: " + (string_len + module_size)); -let backing = new ArrayBuffer(string_len + module_size); - -print("Allocating typed array buffer"); -let buffer = new Uint8Array(backing); - -print("Filling..."); -buffer.fill(0x41); - -print("Setting up array buffer"); -// Magic -buffer.set([0x00, 0x61, 0x73, 0x6D], 0); -// Version -buffer.set([0x01, 0x00, 0x00, 0x00], 4); -// kUnknownSection (0) -buffer.set([0], 8); -// Section length -buffer.set([0x80, 0x80, 0x80, 0x80, 0x00], 9); -// Name length -let x = string_len + 1; -let b1 = ((x >> 0) & 0x7F) | 0x80; -let b2 = ((x >> 7) & 0x7F) | 0x80; -let b3 = ((x >> 14) & 0x7F) | 0x80; -let b4 = ((x >> 21) & 0x7F); -//buffer.set([0xDE, 0xFF, 0xFF, 0x7F], 14); - buffer.set([b1, b2, b3, b4], 14); - -print("Parsing module..."); -let m = new WebAssembly.Module(buffer); - -print("Triggering!"); -let c = WebAssembly.Module.customSections(m, "A".repeat(string_len + 1)); -assertEquals(0, c.length); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7914.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-7914.js deleted file mode 100644 index 48f8b902f06..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-7914.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addMemory(16, 32, false); -builder.addFunction('main', kSig_i_v) - .addBody([ - ...wasmI32Const(10000), // i32.const 10000 - kExprMemoryGrow, 0, // grow_memory --> -1 - kExprI32Popcnt, // i32.popcnt --> 32 - ]) - .exportFunc(); -const instance = builder.instantiate(); -assertEquals(32, instance.exports.main()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-791810.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-791810.js deleted file mode 100644 index 73b47bdd78a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-791810.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction('test', kSig_i_i) - .addBody([ - kExprGetLocal, 0x00, // get_local 0 - kExprBlock, kWasmStmt, // block - kExprBr, 0x00, // br depth=0 - kExprEnd, // end - kExprBlock, kWasmStmt, // block - kExprBr, 0x00, // br depth=0 - kExprEnd, // end - kExprBr, 0x00, // br depth=0 - ]) - .exportFunc(); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-793551.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-793551.js deleted file mode 100644 index 657b2c00134..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-793551.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction('test', kSig_i_i) - .addBody([ - // body: - kExprGetLocal, 0, // get_local 0 - kExprGetLocal, 0, // get_local 0 - kExprLoop, kWasmStmt, // loop - kExprBr, 0, // br depth=0 - kExprEnd, // end - kExprUnreachable, // unreachable - ]) - .exportFunc(); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-797846.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-797846.js deleted file mode 100644 index 1470de4fc6f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-797846.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -// We need a module with one valid function. -const builder = new WasmModuleBuilder(); -builder.addFunction('test', kSig_v_v).addBody([]); - -const buffer = builder.toBuffer(); -assertPromiseResult( - WebAssembly.compile(buffer), _ => Realm.createAllowCrossRealmAccess()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-799952.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-799952.js deleted file mode 100644 index 17371343e44..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-799952.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var sentinel = {}; -Object.defineProperty(Promise, Symbol.species, { - value: function(f) { - f(function() {}, function() {}) - return sentinel; - } -}); - -// According to the WebAssembly JavaScript API spec, WebAssembly.instantiate is -// using the initial value of the Promise constructor. Specifically it ignores -// the Promise species constructor installed above. -var promise = WebAssembly.instantiate(new ArrayBuffer()); -assertInstanceof(promise, Promise); -assertNotSame(promise, sentinel); - -// All further uses of the returned Promise, like using Promise.prototype.then, -// will respect the Promise species constructor installed above however. -var monkey = promise.then(r => { print(r) }, e => { print(e) }); -assertSame(monkey, sentinel); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-800756.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-800756.js deleted file mode 100644 index 76afc88d8f7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-800756.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addMemory(16, 32); -builder.addFunction(undefined, kSig_i_iii).addBody([ - kExprI32Const, 0, // i32.const 0 - kExprI32LoadMem8S, 0, 0, // i32.load8_s offset=0 align=0 - kExprI32Eqz, // i32.eqz -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-801785.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-801785.js deleted file mode 100644 index 105fd4bc38e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-801785.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -// Flags: --print-wasm-code - -const builder = new WasmModuleBuilder(); -builder.addMemory(8, 16); -builder.addFunction(undefined, kSig_i_i).addBody([ - // wasm to wasm call. - kExprGetLocal, 0, kExprCallFunction, 0x1 -]); -builder.addFunction(undefined, kSig_i_i).addBody([ - // load from to create trap code. - kExprGetLocal, 0, kExprI32LoadMem, 0, - // unreachable to create a runtime call. - kExprUnreachable -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-801850.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-801850.js deleted file mode 100644 index 0e0f5c249c2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-801850.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -let module = new WebAssembly.Module(builder.toBuffer()); -var worker = new Worker('onmessage = function() {};', {type: 'string'}); -worker.postMessage(module) diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-802244.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-802244.js deleted file mode 100644 index aeaf850365d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-802244.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction(undefined, kSig_v_iii).addBody([ - kExprI32Const, 0x41, // i32.const 0x41 - kExprLoop, 0x7c, // loop f64 - kExprGetLocal, 0x00, // get_local 0 - kExprGetLocal, 0x01, // get_local 1 - kExprBrIf, 0x01, // br_if depth=1 - kExprGetLocal, 0x00, // get_local 0 - kExprI32Rol, // i32.rol - kExprBrIf, 0x00, // br_if depth=0 - kExprUnreachable, // unreachable - kExprEnd, // end - kExprUnreachable, // unreachable -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-803427.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-803427.js deleted file mode 100644 index 26b1413c3b5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-803427.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-lazy-compilation - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -let module = new WebAssembly.Module(builder.toBuffer()); -var worker = new Worker('onmessage = function() {};', {type: 'string'}); -worker.postMessage(module) diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-803788.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-803788.js deleted file mode 100644 index 17325538f1a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-803788.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-lazy-compilation - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -let q_table = builder.addImportedTable("q", "table") -let q_base = builder.addImportedGlobal("q", "base", kWasmI32); -let q_fun = builder.addImport("q", "fun", kSig_v_v); -builder.addType(kSig_i_ii); -builder.addElementSegment(q_base, true, [ q_fun ]) -let module = new WebAssembly.Module(builder.toBuffer()); -let table = new WebAssembly.Table({ - element: "anyfunc", - initial: 10, -}); -let instance = new WebAssembly.Instance(module, { - q: { - base: 0, - table: table, - fun: () => (0) - } -}); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8059.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-8059.js deleted file mode 100644 index 78ee6bd1d26..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8059.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-wasm-disable-structured-cloning - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function TestPostModule() { - let builder = new WasmModuleBuilder(); - builder.addFunction("add", kSig_i_ii) - .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32Add]) - .exportFunc(); - - let module = builder.toModule(); - - let workerScript = ` - onmessage = function(module) { - try { - let instance = new WebAssembly.Instance(module); - let result = instance.exports.add(40, 2); - postMessage(result); - } catch(e) { - postMessage('ERROR: ' + e); - } - } - `; - - let realm = Realm.create(); - Realm.shared = { m:module, s:workerScript }; - - let realmScript = ` - let worker = new Worker(Realm.shared.s, {type: 'string'}); - worker.postMessage(Realm.shared.m); - let message = worker.getMessage(); - worker.terminate(); - message; - `; - let message = Realm.eval(realm, realmScript); - assertEquals(42, message); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-808012.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-808012.js deleted file mode 100644 index a54b88a5e1e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-808012.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-lazy-compilation - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction('test', kSig_i_i).addBody([kExprUnreachable]); -let module = new WebAssembly.Module(builder.toBuffer()); -var worker = new Worker('onmessage = function() {};', {type: 'string'}); -worker.postMessage(module); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-808848.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-808848.js deleted file mode 100644 index 57920de09d1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-808848.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -// The number of locals must be greater than the constant defined here: -// https://cs.chromium.org/chromium/src/v8/src/compiler/x64/code-generator-x64.cc?l=3146 -const kNumLocals = 128; - -function varuint32(val) { - let bytes = []; - for (let i = 0; i < 4; ++i) { - bytes.push(0x80 | ((val >> (7 * i)) & 0x7f)); - } - bytes.push((val >> (7 * 4)) & 0x7f); - return bytes; -} - -// Generate a function that calls the "get" import `kNumLocals` times, and -// stores each result in a local, then calls the "call" import `kNumLocals` -// times with the stored local values. -// -// The intention is to create a function that has a large stack frame. -let body = []; - -for (let i = 0; i < kNumLocals; ++i) { - body.push(kExprCallFunction, 0, kExprSetLocal, ...varuint32(i)); -} - -for (let i = 0; i < kNumLocals; ++i) { - body.push(kExprGetLocal, ...varuint32(i), kExprCallFunction, 1); -} - -let builder = new WasmModuleBuilder(); -builder.addImport('mod', 'get', kSig_i_v); -builder.addImport('mod', 'call', kSig_v_i); -builder. - addFunction('main', kSig_v_v). - addLocals({i32_count: kNumLocals}). - addBody(body). - exportAs('main'); -let m1_bytes = builder.toBuffer(); -let m1 = new WebAssembly.Module(m1_bytes); - -// Serialize the module and postMessage it to another thread. -let serialized_m1 = %SerializeWasmModule(m1); - -let worker_onmessage = function(msg) { - let {serialized_m1, m1_bytes} = msg; - - let m1_clone = %DeserializeWasmModule(serialized_m1, m1_bytes); - let imports = {mod: {get: () => 3, call: () => {}}}; - let i2 = new WebAssembly.Instance(m1_clone, imports); - i2.exports.main(); - postMessage('done'); -} -let workerScript = "onmessage = " + worker_onmessage.toString(); - -let worker = new Worker(workerScript, {type: 'string'}); -worker.postMessage({serialized_m1, m1_bytes}); - -// Wait for worker to finish. -print(worker.getMessage()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-808980.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-808980.js deleted file mode 100644 index d78c07f36c2..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-808980.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --throws - -load('test/mjsunit/wasm/wasm-module-builder.js'); -let kTableSize = 3; - -var builder = new WasmModuleBuilder(); -var sig_index1 = builder.addType(kSig_i_v); -builder.addFunction('main', kSig_i_ii).addBody([ - kExprGetLocal, - 0, - kExprCallIndirect, - sig_index1, - kTableZero -]).exportAs('main'); -builder.setTableBounds(kTableSize, kTableSize); -var m1_bytes = builder.toBuffer(); -var m1 = new WebAssembly.Module(m1_bytes); - -var serialized_m1 = %SerializeWasmModule(m1); -var m1_clone = %DeserializeWasmModule(serialized_m1, m1_bytes); -var i1 = new WebAssembly.Instance(m1_clone); - -i1.exports.main(123123); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8094.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-8094.js deleted file mode 100644 index dc78366ed8c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8094.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --experimental-wasm-eh - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -// Instantiate a throwing module. -var builder = new WasmModuleBuilder(); -builder.addException(kSig_v_v); -builder.addFunction("propel", kSig_v_v) - .addBody([kExprThrow, 0]) - .exportFunc(); -var instance = builder.instantiate(); - -// Catch the exception. -var exception; -try { - instance.exports.propel(); -} catch (e) { - exception = e; -} - -// Check that the exception is an instance of the correct error function and -// that no extraneous properties exist. Setting such properties could be -// observable by JavaScript and could break compatibility. -assertInstanceof(exception, WebAssembly.RuntimeError); -assertArrayEquals(["stack", "message"], Object.getOwnPropertyNames(exception)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8095.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-8095.js deleted file mode 100644 index 7d21932ec45..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8095.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --experimental-wasm-eh - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -// Prepare a special error object to throw. -var error = new Error("my error"); -error.__proto__ = new Proxy(new Error(), { - has(target, property, receiver) { - assertUnreachable(); - } -}); - -// Throw it through a WebAssembly module. -var builder = new WasmModuleBuilder(); -builder.addImport('mod', 'fun', kSig_v_v); -builder.addFunction("funnel", kSig_v_v) - .addBody([kExprCallFunction, 0]) - .exportFunc(); -var instance = builder.instantiate({ mod: {fun: function() { throw error }}}); -assertThrows(instance.exports.funnel, Error); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-810973.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-810973.js deleted file mode 100644 index bd3d902772c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-810973.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - this.WScript = new Proxy({}, { - get() { - switch (name) { - } - } - }); -function MjsUnitAssertionError() { -}; -let __v_692 = `(function module() { "use asm";function foo(`; -const __v_693 = -1005; -for (let __v_695 = 0; __v_695 < __v_693; ++__v_695) { - __v_692 += `arg${__v_695},`; -} -try { - __v_692 += `arg${__v_693}){`; -} catch (e) {} -for (let __v_696 = 0; __v_696 <= __v_693; ++__v_696) { - __v_692 += `arg${__v_696}=+arg${__v_696};`; -} - __v_692 += "return 10;}function bar(){return foo("; -for (let __v_697 = 0; __v_697 < __v_693; ++__v_697) { - __v_692 += "0.0,"; -} - __v_692 += "1.0)|0;}"; - -__v_692 += "return bar})()()"; - -const __v_694 = eval(__v_692); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-810973b.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-810973b.js deleted file mode 100644 index 227bf55fc0d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-810973b.js +++ /dev/null @@ -1,1209 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function module() { - "use asm"; - function foo( - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, - a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, - a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, - a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, - a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, - a52, a53, a54, a55, a56, a57, a58, a59, a60, a61, - a62, a63, a64, a65, a66, a67, a68, a69, a70, a71, - a72, a73, a74, a75, a76, a77, a78, a79, a80, a81, - a82, a83, a84, a85, a86, a87, a88, a89, a90, a91, - a92, a93, a94, a95, a96, a97, a98, a99, a100, a101, - a102, a103, a104, a105, a106, a107, a108, a109, a110, - a111, a112, a113, a114, a115, a116, a117, a118, a119, - a120, a121, a122, a123, a124, a125, a126, a127, a128, - a129, a130, a131, a132, a133, a134, a135, a136, a137, - a138, a139, a140, a141, a142, a143, a144, a145, a146, - a147, a148, a149, a150, a151, a152, a153, a154, a155, - a156, a157, a158, a159, a160, a161, a162, a163, a164, - a165, a166, a167, a168, a169, a170, a171, a172, a173, - a174, a175, a176, a177, a178, a179, a180, a181, a182, - a183, a184, a185, a186, a187, a188, a189, a190, a191, - a192, a193, a194, a195, a196, a197, a198, a199, a200, - a201, a202, a203, a204, a205, a206, a207, a208, a209, - a210, a211, a212, a213, a214, a215, a216, a217, a218, - a219, a220, a221, a222, a223, a224, a225, a226, a227, - a228, a229, a230, a231, a232, a233, a234, a235, a236, - a237, a238, a239, a240, a241, a242, a243, a244, a245, - a246, a247, a248, a249, a250, a251, a252, a253, a254, - a255, a256, a257, a258, a259, a260, a261, a262, a263, - a264, a265, a266, a267, a268, a269, a270, a271, a272, - a273, a274, a275, a276, a277, a278, a279, a280, a281, - a282, a283, a284, a285, a286, a287, a288, a289, a290, - a291, a292, a293, a294, a295, a296, a297, a298, a299, - a300, a301, a302, a303, a304, a305, a306, a307, a308, - a309, a310, a311, a312, a313, a314, a315, a316, a317, - a318, a319, a320, a321, a322, a323, a324, a325, a326, - a327, a328, a329, a330, a331, a332, a333, a334, a335, - a336, a337, a338, a339, a340, a341, a342, a343, a344, - a345, a346, a347, a348, a349, a350, a351, a352, a353, - a354, a355, a356, a357, a358, a359, a360, a361, a362, - a363, a364, a365, a366, a367, a368, a369, a370, a371, - a372, a373, a374, a375, a376, a377, a378, a379, a380, - a381, a382, a383, a384, a385, a386, a387, a388, a389, - a390, a391, a392, a393, a394, a395, a396, a397, a398, - a399, a400, a401, a402, a403, a404, a405, a406, a407, - a408, a409, a410, a411, a412, a413, a414, a415, a416, - a417, a418, a419, a420, a421, a422, a423, a424, a425, - a426, a427, a428, a429, a430, a431, a432, a433, a434, - a435, a436, a437, a438, a439, a440, a441, a442, a443, - a444, a445, a446, a447, a448, a449, a450, a451, a452, - a453, a454, a455, a456, a457, a458, a459, a460, a461, - a462, a463, a464, a465, a466, a467, a468, a469, a470, - a471, a472, a473, a474, a475, a476, a477, a478, a479, - a480, a481, a482, a483, a484, a485, a486, a487, a488, - a489, a490, a491, a492, a493, a494, a495, a496, a497, - a498, a499, a500, a501, a502, a503, a504, a505, a506, - a507, a508, a509, a510, a511, a512, a513, a514, a515, - a516, a517, a518, a519, a520, a521, a522, a523, a524, - a525, a526, a527, a528, a529, a530, a531, a532, a533, - a534, a535, a536, a537, a538, a539, a540, a541, a542, - a543, a544, a545, a546, a547, a548, a549, a550, a551, - a552, a553, a554, a555, a556, a557, a558, a559, a560, - a561, a562, a563, a564, a565, a566, a567, a568, a569, - a570, a571, a572, a573, a574, a575, a576, a577, a578, - a579, a580, a581, a582, a583, a584, a585, a586, a587, - a588, a589, a590, a591, a592, a593, a594, a595, a596, - a597, a598, a599, a600, a601, a602, a603, a604, a605, - a606, a607, a608, a609, a610, a611, a612, a613, a614, - a615, a616, a617, a618, a619, a620, a621, a622, a623, - a624, a625, a626, a627, a628, a629, a630, a631, a632, - a633, a634, a635, a636, a637, a638, a639, a640, a641, - a642, a643, a644, a645, a646, a647, a648, a649, a650, - a651, a652, a653, a654, a655, a656, a657, a658, a659, - a660, a661, a662, a663, a664, a665, a666, a667, a668, - a669, a670, a671, a672, a673, a674, a675, a676, a677, - a678, a679, a680, a681, a682, a683, a684, a685, a686, - a687, a688, a689, a690, a691, a692, a693, a694, a695, - a696, a697, a698, a699, a700, a701, a702, a703, a704, - a705, a706, a707, a708, a709, a710, a711, a712, a713, - a714, a715, a716, a717, a718, a719, a720, a721, a722, - a723, a724, a725, a726, a727, a728, a729, a730, a731, - a732, a733, a734, a735, a736, a737, a738, a739, a740, - a741, a742, a743, a744, a745, a746, a747, a748, a749, - a750, a751, a752, a753, a754, a755, a756, a757, a758, - a759, a760, a761, a762, a763, a764, a765, a766, a767, - a768, a769, a770, a771, a772, a773, a774, a775, a776, - a777, a778, a779, a780, a781, a782, a783, a784, a785, - a786, a787, a788, a789, a790, a791, a792, a793, a794, - a795, a796, a797, a798, a799, a800, a801, a802, a803, - a804, a805, a806, a807, a808, a809, a810, a811, a812, - a813, a814, a815, a816, a817, a818, a819, a820, a821, - a822, a823, a824, a825, a826, a827, a828, a829, a830, - a831, a832, a833, a834, a835, a836, a837, a838, a839, - a840, a841, a842, a843, a844, a845, a846, a847, a848, - a849, a850, a851, a852, a853, a854, a855, a856, a857, - a858, a859, a860, a861, a862, a863, a864, a865, a866, - a867, a868, a869, a870, a871, a872, a873, a874, a875, - a876, a877, a878, a879, a880, a881, a882, a883, a884, - a885, a886, a887, a888, a889, a890, a891, a892, a893, - a894, a895, a896, a897, a898, a899, a900, a901, a902, - a903, a904, a905, a906, a907, a908, a909, a910, a911, - a912, a913, a914, a915, a916, a917, a918, a919, a920, - a921, a922, a923, a924, a925, a926, a927, a928, a929, - a930, a931, a932, a933, a934, a935, a936, a937, a938, - a939, a940, a941, a942, a943, a944, a945, a946, a947, - a948, a949, a950, a951, a952, a953, a954, a955, a956, - a957, a958, a959, a960, a961, a962, a963, a964, a965, - a966, a967, a968, a969, a970, a971, a972, a973, a974, - a975, a976, a977, a978, a979, a980, a981, a982, a983, - a984, a985, a986, a987, a988, a989, a990, a991, a992, - a993, a994, a995, a996, a997, a998, a999, a1000, a1001, - a1002, a1003, a1004, a1005) { - a0 = +a0; - a1 = +a1; - a2 = +a2; - a3 = +a3; - a4 = +a4; - a5 = +a5; - a6 = +a6; - a7 = +a7; - a8 = +a8; - a9 = +a9; - a10 = +a10; - a11 = +a11; - a12 = +a12; - a13 = +a13; - a14 = +a14; - a15 = +a15; - a16 = +a16; - a17 = +a17; - a18 = +a18; - a19 = +a19; - a20 = +a20; - a21 = +a21; - a22 = +a22; - a23 = +a23; - a24 = +a24; - a25 = +a25; - a26 = +a26; - a27 = +a27; - a28 = +a28; - a29 = +a29; - a30 = +a30; - a31 = +a31; - a32 = +a32; - a33 = +a33; - a34 = +a34; - a35 = +a35; - a36 = +a36; - a37 = +a37; - a38 = +a38; - a39 = +a39; - a40 = +a40; - a41 = +a41; - a42 = +a42; - a43 = +a43; - a44 = +a44; - a45 = +a45; - a46 = +a46; - a47 = +a47; - a48 = +a48; - a49 = +a49; - a50 = +a50; - a51 = +a51; - a52 = +a52; - a53 = +a53; - a54 = +a54; - a55 = +a55; - a56 = +a56; - a57 = +a57; - a58 = +a58; - a59 = +a59; - a60 = +a60; - a61 = +a61; - a62 = +a62; - a63 = +a63; - a64 = +a64; - a65 = +a65; - a66 = +a66; - a67 = +a67; - a68 = +a68; - a69 = +a69; - a70 = +a70; - a71 = +a71; - a72 = +a72; - a73 = +a73; - a74 = +a74; - a75 = +a75; - a76 = +a76; - a77 = +a77; - a78 = +a78; - a79 = +a79; - a80 = +a80; - a81 = +a81; - a82 = +a82; - a83 = +a83; - a84 = +a84; - a85 = +a85; - a86 = +a86; - a87 = +a87; - a88 = +a88; - a89 = +a89; - a90 = +a90; - a91 = +a91; - a92 = +a92; - a93 = +a93; - a94 = +a94; - a95 = +a95; - a96 = +a96; - a97 = +a97; - a98 = +a98; - a99 = +a99; - a100 = +a100; - a101 = +a101; - a102 = +a102; - a103 = +a103; - a104 = +a104; - a105 = +a105; - a106 = +a106; - a107 = +a107; - a108 = +a108; - a109 = +a109; - a110 = +a110; - a111 = +a111; - a112 = +a112; - a113 = +a113; - a114 = +a114; - a115 = +a115; - a116 = +a116; - a117 = +a117; - a118 = +a118; - a119 = +a119; - a120 = +a120; - a121 = +a121; - a122 = +a122; - a123 = +a123; - a124 = +a124; - a125 = +a125; - a126 = +a126; - a127 = +a127; - a128 = +a128; - a129 = +a129; - a130 = +a130; - a131 = +a131; - a132 = +a132; - a133 = +a133; - a134 = +a134; - a135 = +a135; - a136 = +a136; - a137 = +a137; - a138 = +a138; - a139 = +a139; - a140 = +a140; - a141 = +a141; - a142 = +a142; - a143 = +a143; - a144 = +a144; - a145 = +a145; - a146 = +a146; - a147 = +a147; - a148 = +a148; - a149 = +a149; - a150 = +a150; - a151 = +a151; - a152 = +a152; - a153 = +a153; - a154 = +a154; - a155 = +a155; - a156 = +a156; - a157 = +a157; - a158 = +a158; - a159 = +a159; - a160 = +a160; - a161 = +a161; - a162 = +a162; - a163 = +a163; - a164 = +a164; - a165 = +a165; - a166 = +a166; - a167 = +a167; - a168 = +a168; - a169 = +a169; - a170 = +a170; - a171 = +a171; - a172 = +a172; - a173 = +a173; - a174 = +a174; - a175 = +a175; - a176 = +a176; - a177 = +a177; - a178 = +a178; - a179 = +a179; - a180 = +a180; - a181 = +a181; - a182 = +a182; - a183 = +a183; - a184 = +a184; - a185 = +a185; - a186 = +a186; - a187 = +a187; - a188 = +a188; - a189 = +a189; - a190 = +a190; - a191 = +a191; - a192 = +a192; - a193 = +a193; - a194 = +a194; - a195 = +a195; - a196 = +a196; - a197 = +a197; - a198 = +a198; - a199 = +a199; - a200 = +a200; - a201 = +a201; - a202 = +a202; - a203 = +a203; - a204 = +a204; - a205 = +a205; - a206 = +a206; - a207 = +a207; - a208 = +a208; - a209 = +a209; - a210 = +a210; - a211 = +a211; - a212 = +a212; - a213 = +a213; - a214 = +a214; - a215 = +a215; - a216 = +a216; - a217 = +a217; - a218 = +a218; - a219 = +a219; - a220 = +a220; - a221 = +a221; - a222 = +a222; - a223 = +a223; - a224 = +a224; - a225 = +a225; - a226 = +a226; - a227 = +a227; - a228 = +a228; - a229 = +a229; - a230 = +a230; - a231 = +a231; - a232 = +a232; - a233 = +a233; - a234 = +a234; - a235 = +a235; - a236 = +a236; - a237 = +a237; - a238 = +a238; - a239 = +a239; - a240 = +a240; - a241 = +a241; - a242 = +a242; - a243 = +a243; - a244 = +a244; - a245 = +a245; - a246 = +a246; - a247 = +a247; - a248 = +a248; - a249 = +a249; - a250 = +a250; - a251 = +a251; - a252 = +a252; - a253 = +a253; - a254 = +a254; - a255 = +a255; - a256 = +a256; - a257 = +a257; - a258 = +a258; - a259 = +a259; - a260 = +a260; - a261 = +a261; - a262 = +a262; - a263 = +a263; - a264 = +a264; - a265 = +a265; - a266 = +a266; - a267 = +a267; - a268 = +a268; - a269 = +a269; - a270 = +a270; - a271 = +a271; - a272 = +a272; - a273 = +a273; - a274 = +a274; - a275 = +a275; - a276 = +a276; - a277 = +a277; - a278 = +a278; - a279 = +a279; - a280 = +a280; - a281 = +a281; - a282 = +a282; - a283 = +a283; - a284 = +a284; - a285 = +a285; - a286 = +a286; - a287 = +a287; - a288 = +a288; - a289 = +a289; - a290 = +a290; - a291 = +a291; - a292 = +a292; - a293 = +a293; - a294 = +a294; - a295 = +a295; - a296 = +a296; - a297 = +a297; - a298 = +a298; - a299 = +a299; - a300 = +a300; - a301 = +a301; - a302 = +a302; - a303 = +a303; - a304 = +a304; - a305 = +a305; - a306 = +a306; - a307 = +a307; - a308 = +a308; - a309 = +a309; - a310 = +a310; - a311 = +a311; - a312 = +a312; - a313 = +a313; - a314 = +a314; - a315 = +a315; - a316 = +a316; - a317 = +a317; - a318 = +a318; - a319 = +a319; - a320 = +a320; - a321 = +a321; - a322 = +a322; - a323 = +a323; - a324 = +a324; - a325 = +a325; - a326 = +a326; - a327 = +a327; - a328 = +a328; - a329 = +a329; - a330 = +a330; - a331 = +a331; - a332 = +a332; - a333 = +a333; - a334 = +a334; - a335 = +a335; - a336 = +a336; - a337 = +a337; - a338 = +a338; - a339 = +a339; - a340 = +a340; - a341 = +a341; - a342 = +a342; - a343 = +a343; - a344 = +a344; - a345 = +a345; - a346 = +a346; - a347 = +a347; - a348 = +a348; - a349 = +a349; - a350 = +a350; - a351 = +a351; - a352 = +a352; - a353 = +a353; - a354 = +a354; - a355 = +a355; - a356 = +a356; - a357 = +a357; - a358 = +a358; - a359 = +a359; - a360 = +a360; - a361 = +a361; - a362 = +a362; - a363 = +a363; - a364 = +a364; - a365 = +a365; - a366 = +a366; - a367 = +a367; - a368 = +a368; - a369 = +a369; - a370 = +a370; - a371 = +a371; - a372 = +a372; - a373 = +a373; - a374 = +a374; - a375 = +a375; - a376 = +a376; - a377 = +a377; - a378 = +a378; - a379 = +a379; - a380 = +a380; - a381 = +a381; - a382 = +a382; - a383 = +a383; - a384 = +a384; - a385 = +a385; - a386 = +a386; - a387 = +a387; - a388 = +a388; - a389 = +a389; - a390 = +a390; - a391 = +a391; - a392 = +a392; - a393 = +a393; - a394 = +a394; - a395 = +a395; - a396 = +a396; - a397 = +a397; - a398 = +a398; - a399 = +a399; - a400 = +a400; - a401 = +a401; - a402 = +a402; - a403 = +a403; - a404 = +a404; - a405 = +a405; - a406 = +a406; - a407 = +a407; - a408 = +a408; - a409 = +a409; - a410 = +a410; - a411 = +a411; - a412 = +a412; - a413 = +a413; - a414 = +a414; - a415 = +a415; - a416 = +a416; - a417 = +a417; - a418 = +a418; - a419 = +a419; - a420 = +a420; - a421 = +a421; - a422 = +a422; - a423 = +a423; - a424 = +a424; - a425 = +a425; - a426 = +a426; - a427 = +a427; - a428 = +a428; - a429 = +a429; - a430 = +a430; - a431 = +a431; - a432 = +a432; - a433 = +a433; - a434 = +a434; - a435 = +a435; - a436 = +a436; - a437 = +a437; - a438 = +a438; - a439 = +a439; - a440 = +a440; - a441 = +a441; - a442 = +a442; - a443 = +a443; - a444 = +a444; - a445 = +a445; - a446 = +a446; - a447 = +a447; - a448 = +a448; - a449 = +a449; - a450 = +a450; - a451 = +a451; - a452 = +a452; - a453 = +a453; - a454 = +a454; - a455 = +a455; - a456 = +a456; - a457 = +a457; - a458 = +a458; - a459 = +a459; - a460 = +a460; - a461 = +a461; - a462 = +a462; - a463 = +a463; - a464 = +a464; - a465 = +a465; - a466 = +a466; - a467 = +a467; - a468 = +a468; - a469 = +a469; - a470 = +a470; - a471 = +a471; - a472 = +a472; - a473 = +a473; - a474 = +a474; - a475 = +a475; - a476 = +a476; - a477 = +a477; - a478 = +a478; - a479 = +a479; - a480 = +a480; - a481 = +a481; - a482 = +a482; - a483 = +a483; - a484 = +a484; - a485 = +a485; - a486 = +a486; - a487 = +a487; - a488 = +a488; - a489 = +a489; - a490 = +a490; - a491 = +a491; - a492 = +a492; - a493 = +a493; - a494 = +a494; - a495 = +a495; - a496 = +a496; - a497 = +a497; - a498 = +a498; - a499 = +a499; - a500 = +a500; - a501 = +a501; - a502 = +a502; - a503 = +a503; - a504 = +a504; - a505 = +a505; - a506 = +a506; - a507 = +a507; - a508 = +a508; - a509 = +a509; - a510 = +a510; - a511 = +a511; - a512 = +a512; - a513 = +a513; - a514 = +a514; - a515 = +a515; - a516 = +a516; - a517 = +a517; - a518 = +a518; - a519 = +a519; - a520 = +a520; - a521 = +a521; - a522 = +a522; - a523 = +a523; - a524 = +a524; - a525 = +a525; - a526 = +a526; - a527 = +a527; - a528 = +a528; - a529 = +a529; - a530 = +a530; - a531 = +a531; - a532 = +a532; - a533 = +a533; - a534 = +a534; - a535 = +a535; - a536 = +a536; - a537 = +a537; - a538 = +a538; - a539 = +a539; - a540 = +a540; - a541 = +a541; - a542 = +a542; - a543 = +a543; - a544 = +a544; - a545 = +a545; - a546 = +a546; - a547 = +a547; - a548 = +a548; - a549 = +a549; - a550 = +a550; - a551 = +a551; - a552 = +a552; - a553 = +a553; - a554 = +a554; - a555 = +a555; - a556 = +a556; - a557 = +a557; - a558 = +a558; - a559 = +a559; - a560 = +a560; - a561 = +a561; - a562 = +a562; - a563 = +a563; - a564 = +a564; - a565 = +a565; - a566 = +a566; - a567 = +a567; - a568 = +a568; - a569 = +a569; - a570 = +a570; - a571 = +a571; - a572 = +a572; - a573 = +a573; - a574 = +a574; - a575 = +a575; - a576 = +a576; - a577 = +a577; - a578 = +a578; - a579 = +a579; - a580 = +a580; - a581 = +a581; - a582 = +a582; - a583 = +a583; - a584 = +a584; - a585 = +a585; - a586 = +a586; - a587 = +a587; - a588 = +a588; - a589 = +a589; - a590 = +a590; - a591 = +a591; - a592 = +a592; - a593 = +a593; - a594 = +a594; - a595 = +a595; - a596 = +a596; - a597 = +a597; - a598 = +a598; - a599 = +a599; - a600 = +a600; - a601 = +a601; - a602 = +a602; - a603 = +a603; - a604 = +a604; - a605 = +a605; - a606 = +a606; - a607 = +a607; - a608 = +a608; - a609 = +a609; - a610 = +a610; - a611 = +a611; - a612 = +a612; - a613 = +a613; - a614 = +a614; - a615 = +a615; - a616 = +a616; - a617 = +a617; - a618 = +a618; - a619 = +a619; - a620 = +a620; - a621 = +a621; - a622 = +a622; - a623 = +a623; - a624 = +a624; - a625 = +a625; - a626 = +a626; - a627 = +a627; - a628 = +a628; - a629 = +a629; - a630 = +a630; - a631 = +a631; - a632 = +a632; - a633 = +a633; - a634 = +a634; - a635 = +a635; - a636 = +a636; - a637 = +a637; - a638 = +a638; - a639 = +a639; - a640 = +a640; - a641 = +a641; - a642 = +a642; - a643 = +a643; - a644 = +a644; - a645 = +a645; - a646 = +a646; - a647 = +a647; - a648 = +a648; - a649 = +a649; - a650 = +a650; - a651 = +a651; - a652 = +a652; - a653 = +a653; - a654 = +a654; - a655 = +a655; - a656 = +a656; - a657 = +a657; - a658 = +a658; - a659 = +a659; - a660 = +a660; - a661 = +a661; - a662 = +a662; - a663 = +a663; - a664 = +a664; - a665 = +a665; - a666 = +a666; - a667 = +a667; - a668 = +a668; - a669 = +a669; - a670 = +a670; - a671 = +a671; - a672 = +a672; - a673 = +a673; - a674 = +a674; - a675 = +a675; - a676 = +a676; - a677 = +a677; - a678 = +a678; - a679 = +a679; - a680 = +a680; - a681 = +a681; - a682 = +a682; - a683 = +a683; - a684 = +a684; - a685 = +a685; - a686 = +a686; - a687 = +a687; - a688 = +a688; - a689 = +a689; - a690 = +a690; - a691 = +a691; - a692 = +a692; - a693 = +a693; - a694 = +a694; - a695 = +a695; - a696 = +a696; - a697 = +a697; - a698 = +a698; - a699 = +a699; - a700 = +a700; - a701 = +a701; - a702 = +a702; - a703 = +a703; - a704 = +a704; - a705 = +a705; - a706 = +a706; - a707 = +a707; - a708 = +a708; - a709 = +a709; - a710 = +a710; - a711 = +a711; - a712 = +a712; - a713 = +a713; - a714 = +a714; - a715 = +a715; - a716 = +a716; - a717 = +a717; - a718 = +a718; - a719 = +a719; - a720 = +a720; - a721 = +a721; - a722 = +a722; - a723 = +a723; - a724 = +a724; - a725 = +a725; - a726 = +a726; - a727 = +a727; - a728 = +a728; - a729 = +a729; - a730 = +a730; - a731 = +a731; - a732 = +a732; - a733 = +a733; - a734 = +a734; - a735 = +a735; - a736 = +a736; - a737 = +a737; - a738 = +a738; - a739 = +a739; - a740 = +a740; - a741 = +a741; - a742 = +a742; - a743 = +a743; - a744 = +a744; - a745 = +a745; - a746 = +a746; - a747 = +a747; - a748 = +a748; - a749 = +a749; - a750 = +a750; - a751 = +a751; - a752 = +a752; - a753 = +a753; - a754 = +a754; - a755 = +a755; - a756 = +a756; - a757 = +a757; - a758 = +a758; - a759 = +a759; - a760 = +a760; - a761 = +a761; - a762 = +a762; - a763 = +a763; - a764 = +a764; - a765 = +a765; - a766 = +a766; - a767 = +a767; - a768 = +a768; - a769 = +a769; - a770 = +a770; - a771 = +a771; - a772 = +a772; - a773 = +a773; - a774 = +a774; - a775 = +a775; - a776 = +a776; - a777 = +a777; - a778 = +a778; - a779 = +a779; - a780 = +a780; - a781 = +a781; - a782 = +a782; - a783 = +a783; - a784 = +a784; - a785 = +a785; - a786 = +a786; - a787 = +a787; - a788 = +a788; - a789 = +a789; - a790 = +a790; - a791 = +a791; - a792 = +a792; - a793 = +a793; - a794 = +a794; - a795 = +a795; - a796 = +a796; - a797 = +a797; - a798 = +a798; - a799 = +a799; - a800 = +a800; - a801 = +a801; - a802 = +a802; - a803 = +a803; - a804 = +a804; - a805 = +a805; - a806 = +a806; - a807 = +a807; - a808 = +a808; - a809 = +a809; - a810 = +a810; - a811 = +a811; - a812 = +a812; - a813 = +a813; - a814 = +a814; - a815 = +a815; - a816 = +a816; - a817 = +a817; - a818 = +a818; - a819 = +a819; - a820 = +a820; - a821 = +a821; - a822 = +a822; - a823 = +a823; - a824 = +a824; - a825 = +a825; - a826 = +a826; - a827 = +a827; - a828 = +a828; - a829 = +a829; - a830 = +a830; - a831 = +a831; - a832 = +a832; - a833 = +a833; - a834 = +a834; - a835 = +a835; - a836 = +a836; - a837 = +a837; - a838 = +a838; - a839 = +a839; - a840 = +a840; - a841 = +a841; - a842 = +a842; - a843 = +a843; - a844 = +a844; - a845 = +a845; - a846 = +a846; - a847 = +a847; - a848 = +a848; - a849 = +a849; - a850 = +a850; - a851 = +a851; - a852 = +a852; - a853 = +a853; - a854 = +a854; - a855 = +a855; - a856 = +a856; - a857 = +a857; - a858 = +a858; - a859 = +a859; - a860 = +a860; - a861 = +a861; - a862 = +a862; - a863 = +a863; - a864 = +a864; - a865 = +a865; - a866 = +a866; - a867 = +a867; - a868 = +a868; - a869 = +a869; - a870 = +a870; - a871 = +a871; - a872 = +a872; - a873 = +a873; - a874 = +a874; - a875 = +a875; - a876 = +a876; - a877 = +a877; - a878 = +a878; - a879 = +a879; - a880 = +a880; - a881 = +a881; - a882 = +a882; - a883 = +a883; - a884 = +a884; - a885 = +a885; - a886 = +a886; - a887 = +a887; - a888 = +a888; - a889 = +a889; - a890 = +a890; - a891 = +a891; - a892 = +a892; - a893 = +a893; - a894 = +a894; - a895 = +a895; - a896 = +a896; - a897 = +a897; - a898 = +a898; - a899 = +a899; - a900 = +a900; - a901 = +a901; - a902 = +a902; - a903 = +a903; - a904 = +a904; - a905 = +a905; - a906 = +a906; - a907 = +a907; - a908 = +a908; - a909 = +a909; - a910 = +a910; - a911 = +a911; - a912 = +a912; - a913 = +a913; - a914 = +a914; - a915 = +a915; - a916 = +a916; - a917 = +a917; - a918 = +a918; - a919 = +a919; - a920 = +a920; - a921 = +a921; - a922 = +a922; - a923 = +a923; - a924 = +a924; - a925 = +a925; - a926 = +a926; - a927 = +a927; - a928 = +a928; - a929 = +a929; - a930 = +a930; - a931 = +a931; - a932 = +a932; - a933 = +a933; - a934 = +a934; - a935 = +a935; - a936 = +a936; - a937 = +a937; - a938 = +a938; - a939 = +a939; - a940 = +a940; - a941 = +a941; - a942 = +a942; - a943 = +a943; - a944 = +a944; - a945 = +a945; - a946 = +a946; - a947 = +a947; - a948 = +a948; - a949 = +a949; - a950 = +a950; - a951 = +a951; - a952 = +a952; - a953 = +a953; - a954 = +a954; - a955 = +a955; - a956 = +a956; - a957 = +a957; - a958 = +a958; - a959 = +a959; - a960 = +a960; - a961 = +a961; - a962 = +a962; - a963 = +a963; - a964 = +a964; - a965 = +a965; - a966 = +a966; - a967 = +a967; - a968 = +a968; - a969 = +a969; - a970 = +a970; - a971 = +a971; - a972 = +a972; - a973 = +a973; - a974 = +a974; - a975 = +a975; - a976 = +a976; - a977 = +a977; - a978 = +a978; - a979 = +a979; - a980 = +a980; - a981 = +a981; - a982 = +a982; - a983 = +a983; - a984 = +a984; - a985 = +a985; - a986 = +a986; - a987 = +a987; - a988 = +a988; - a989 = +a989; - a990 = +a990; - a991 = +a991; - a992 = +a992; - a993 = +a993; - a994 = +a994; - a995 = +a995; - a996 = +a996; - a997 = +a997; - a998 = +a998; - a999 = +a999; - a1000 = +a1000; - a1001 = +a1001; - a1002 = +a1002; - a1003 = +a1003; - a1004 = +a1004; - a1005 = +a1005; - return 10; - } - function bar() { - return foo(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 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; - } - return bar -})()(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-812005.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-812005.js deleted file mode 100644 index ba49987de5c..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-812005.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction(undefined, kSig_d_v).addBody([ - ...wasmF64Const(0), // f64.const 0 - ...wasmF64Const(0), // f64.const 0 - ...wasmI32Const(0), // i32.const 0 - kExprBrIf, 0x00, // br_if depth=0 - kExprF64Add // f64.add -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-816226.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-816226.js deleted file mode 100644 index 1fca02fe827..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-816226.js +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(new Int8Array((new WebAssembly.Memory({initial: 0})).buffer)).buffer; diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-817380.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-817380.js deleted file mode 100644 index 5b3281a150f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-817380.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-lazy-compilation - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder1 = new WasmModuleBuilder(); -builder1.addFunction('mul', kSig_i_ii) - .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32Mul]) - .exportFunc(); -const mul = builder1.instantiate().exports.mul; -const table = new WebAssembly.Table({ - element: 'anyfunc', - initial: 10, -}); -const builder2 = new WasmModuleBuilder(); -const mul_import = builder2.addImport('q', 'wasm_mul', kSig_i_ii); -builder2.addImportedTable('q', 'table'); -const glob_import = builder2.addImportedGlobal('q', 'glob', kWasmI32); -builder2.addElementSegment(glob_import, true, [mul_import]); -builder2.instantiate( - {q: {glob: 0, js_div: i => i, wasm_mul: mul, table: table}}); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-819869.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-819869.js deleted file mode 100644 index a32928ab0c1..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-819869.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addFunction(undefined, kSig_i_i) - .addLocals({i32_count: 0xffffffff}) - .addBody([]); -assertThrows(() => builder.instantiate(), WebAssembly.CompileError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-820802.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-820802.js deleted file mode 100644 index 214e71819f4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-820802.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addMemory(16, 32); -builder.addGlobal(kWasmI32, 0); -const sig0 = makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]); -builder.addFunction(undefined, sig0).addBody([ - kExprI32Const, 1, // i32.const 1 - kExprI32Const, 0, // i32.const 0 - kExprI32Const, 3, // i32.const 3 - kExprI32GeU, // i32.ge_u - kExprI32Rol, // i32.rol -]); -builder.addExport('main', 0); -const instance = builder.instantiate(); -assertEquals(1, instance.exports.main()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-824681.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-824681.js deleted file mode 100644 index 9d712e6ddbe..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-824681.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let chain = Promise.resolve(); -const builder = new WasmModuleBuilder(); -for (let i = 0; i < 50; ++i) { - builder.addFunction('fun' + i, kSig_i_v) - .addBody([...wasmI32Const(i)]) - .exportFunc(); -} -const buffer = builder.toBuffer(); -for (let i = 0; i < 100; ++i) { - chain = chain.then(() => WebAssembly.instantiate(buffer)); -} -chain.then(({module, instance}) => instance.exports.fun1155()) - .then(res => print('Result of executing fun1155: ' + res)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-825087a.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-825087a.js deleted file mode 100644 index 9a986d08398..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-825087a.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -PAGES = 10; -memory = new WebAssembly.Memory({initial: PAGES}); -buffer = memory.buffer; -memory.grow(0); -WebAssembly.validate(buffer); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-825087b.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-825087b.js deleted file mode 100644 index 266fd53219d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-825087b.js +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -PAGES = 10; -memory = new WebAssembly.Memory({initial: PAGES}); -buffer = memory.buffer; -buffer = new Uint8Array(buffer); -memory.grow(0); -WebAssembly.validate(buffer); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-827806.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-827806.js deleted file mode 100644 index 8576de2e794..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-827806.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -try { - (function () { - let m = new WasmModuleBuilder(); - m.addFunction("sub", kSig_i_ii) - m.instantiate(); - })(); -} catch (e) { - console.info("caught exception"); - console.info(e); -} -for (let i = 0; i < 150; i++) { - var m = new WasmModuleBuilder(); - m.addMemory(2); - m.instantiate(); -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-831463.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-831463.js deleted file mode 100644 index 2818ad350b6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-831463.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-interpret-all - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -const builder = new WasmModuleBuilder(); -const sig = builder.addType(kSig_i_i); -builder.addFunction('call', kSig_i_v) - .addBody([ - kExprI32Const, 0, kExprI32Const, 0, kExprCallIndirect, sig, kTableZero - ]) - .exportAs('call'); -builder.addImportedTable('imp', 'table'); -const table = new WebAssembly.Table({element: 'anyfunc', initial: 1}); -const instance = builder.instantiate({imp: {table: table}}); -assertThrows( - () => instance.exports.call(), WebAssembly.RuntimeError, - /function signature mismatch/); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-834619.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-834619.js deleted file mode 100644 index 145f415221d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-834619.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-lazy-compilation - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function ExportedFunctionsImportedOrder() { - print(arguments.callee.name); - - let i1 = (() => { - let builder = new WasmModuleBuilder(); - builder.addFunction("f1", kSig_i_v) - .addBody( - [kExprI32Const, 1]) - .exportFunc(); - builder.addFunction("f2", kSig_i_v) - .addBody( - [kExprI32Const, 2]) - .exportFunc(); - return builder.instantiate(); - })(); - - let i2 = (() => { - let builder = new WasmModuleBuilder(); - builder.addImport("q", "f2", kSig_i_v); - builder.addImport("q", "f1", kSig_i_v); - builder.addFunction("main", kSig_i_i) - .addBody([ - kExprGetLocal, 0, - kExprCallIndirect, 0, kTableZero - ]) - .exportFunc(); - builder.addElementSegment(0, false, [0, 1, 1, 0]); - - return builder.instantiate({q: {f2: i1.exports.f2, f1: i1.exports.f1}}); - })(); - - print("--->calling 0"); - assertEquals(2, i2.exports.main(0)); - print("--->calling 1"); - assertEquals(1, i2.exports.main(1)); - print("--->calling 2"); - assertEquals(1, i2.exports.main(2)); - print("--->calling 3"); - assertEquals(2, i2.exports.main(3)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-834624.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-834624.js deleted file mode 100644 index 45af23cde22..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-834624.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-interpret-all - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -let instance; -(function DoTest() { - function call_main() { - instance.exports.main(); - } - let module = new WasmModuleBuilder(); - module.addImport('mod', 'func', kSig_v_i); - module.addFunction('main', kSig_v_i) - .addBody([kExprGetLocal, 0, kExprCallFunction, 0]) - .exportFunc(); - instance = module.instantiate({ - mod: { - func: call_main - } - }); - try { - instance.exports.main(); - } catch (e) { - // ignore - } -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-834693.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-834693.js deleted file mode 100644 index ad51b2a4009..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-834693.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// flags: --wasm-lazy-compilation - -load("test/mjsunit/wasm/wasm-module-builder.js"); - -var module = new WasmModuleBuilder(); -module.addMemory(); -module.addFunction("main", kSig_v_v) - .addBody([ - kExprI32Const, 20, - kExprI32Const, 29, - kExprMemoryGrow, kMemoryZero, - kExprI32StoreMem, 0, 0xFF, 0xFF, 0x7A]) - .exportAs("main"); -var instance = module.instantiate(); -assertTraps(kTrapMemOutOfBounds, instance.exports.main); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-836141.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-836141.js deleted file mode 100644 index 5ac58042e49..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-836141.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addMemory(16, 32); -builder.addFunction("test", kSig_i_v).addBody([ - kExprI32Const, 12, // i32.const 0 -]); - -let module = new WebAssembly.Module(builder.toBuffer()); -module.then = () => { - // Use setTimeout to get out of the promise chain. - setTimeout(assertUnreachable); -}; - -WebAssembly.instantiate(module); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-837417.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-837417.js deleted file mode 100644 index ef1d3cfaf65..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-837417.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addMemory(16, 32); -builder.addFunction("test", kSig_i_v).addBody([ - kExprI32Const, 12, // i32.const 12 -]); - -WebAssembly.Module.prototype.then = resolve => { - assertUnreachable(); -}; - -WebAssembly.instantiate(builder.toBuffer()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-840757.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-840757.js deleted file mode 100644 index ad1cf9f64ff..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-840757.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -// Also enable predictable mode. Otherwise, concurrent recompilation will be -// enabled, and the code generator will not try to print the InliningStack -// (see CodeGenerator::AssembleSourcePosition). -// These preconditions make this test quite fragile, but it's the only way -// currently to reproduce the crash. -// Flags: --code-comments --predictable --print-wasm-code - -const builder = new WasmModuleBuilder(); -// Add a call instruction, because the segfault happens when processing source -// positions. -builder.addFunction('foo', kSig_v_v).addBody([]); -builder.addFunction('test', kSig_v_v).addBody([kExprCallFunction, 0]); - -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-842501.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-842501.js deleted file mode 100644 index d54507cc59f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-842501.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-wasm-trap-handler - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -(function() { - const builder = new WasmModuleBuilder(); - builder.addMemory(16, 32); - // Generate function 1 (out of 1). - sig1 = makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]); - builder.addFunction(undefined, sig1) - .addBodyWithEnd([ - // signature: i_iii - // body: - kExprI32Const, 0xe1, 0xc8, 0xd5, 0x01, - kExprI32Const, 0xe2, 0xe4, 0x00, - kExprI32Sub, - kExprF32Const, 0x00, 0x00, 0x00, 0x00, - kExprF32Const, 0xc9, 0xc9, 0xc9, 0x00, - kExprF32Eq, - kExprI32LoadMem, 0x01, 0xef, 0xec, 0x95, 0x93, 0x07, - kExprI32Add, - kExprIf, kWasmStmt, // @30 - kExprEnd, // @32 - kExprI32Const, 0xc9, 0x93, 0xdf, 0xcc, 0x7c, - kExprEnd, // @39 - ]); - builder.addExport('main', 0); - const instance = builder.instantiate(); - assertTraps(kTrapMemOutOfBounds, _ => instance.exports.main(1, 2, 3)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-843563.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-843563.js deleted file mode 100644 index ca222992540..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-843563.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -sig1 = makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]); -const imp_idx = builder.addImport('q', 'imp', kSig_i_i); -builder.addExport('exp', imp_idx); -const module = builder.toModule(); - -function bad(a, b, c, d, e, f, g, h) { - print(JSON.stringify([a, b, c, d, e, f, g, h])); -} -const instance1 = new WebAssembly.Instance(module, {q: {imp: bad}}); -const instance2 = new WebAssembly.Instance(module, {q: {imp: i => i}}); - -print(instance1.exports.exp(5)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8505.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-8505.js deleted file mode 100644 index 0488723e4f7..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8505.js +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-wasm --wasm-math-intrinsics --validate-asm --allow-natives-syntax - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -function verbose(args) { - // print(...args); -} - -//============================================= -// Global count of failures -//============================================= -let numFailures = 0; - -function reportFailure(name, vals, m, w) { - print(" error: " + name + "(" + vals + ") == " + w + ", expected " + m); - numFailures++; -} - -let global_imports = {Math: Math}; - -let inputs = [ - 1 / 0, - -1 / 0, - 0 / 0, - -2.70497e+38, - -1.4698e+37, - -1.22813e+35, - -1.34584e+34, - -1.0079e+32, - -6.49364e+26, - -3.06077e+25, - -1.46821e+25, - -1.17658e+23, - -1.9617e+22, - -2.7357e+20, - -9223372036854775808.0, // INT64_MIN - -1.48708e+13, - -1.89633e+12, - -4.66622e+11, - -2.22581e+11, - -1.45381e+10, - -2147483904.0, // First float32 after INT32_MIN - -2147483648.0, // INT32_MIN - -2147483520.0, // Last float32 before INT32_MIN - -1.3956e+09, - -1.32951e+09, - -1.30721e+09, - -1.19756e+09, - -9.26822e+08, - -5.09256e+07, - -964300.0, - -192446.0, - -28455.0, - -27194.0, - -20575.0, - -17069.0, - -9167.0, - -960.178, - -113.0, - -62.0, - -15.0, - -7.0, - -1.0, - -0.0256635, - -4.60374e-07, - -3.63759e-10, - -4.30175e-14, - -5.27385e-15, - -1.5707963267948966, - -1.48084e-15, - -2.220446049250313e-16, - -1.05755e-19, - -3.2995e-21, - -1.67354e-23, - -1.11885e-23, - -1.78506e-30, - -1.43718e-34, - -1.27126e-38, - -0.0, - 3e-88, - -2e66, - 0.0, - 2e66, - 1.17549e-38, - 1.56657e-37, - 4.08512e-29, - 6.25073e-22, - 4.1723e-13, - 1.44343e-09, - 1.5707963267948966, - 5.27004e-08, - 9.48298e-08, - 5.57888e-07, - 4.89988e-05, - 0.244326, - 1.0, - 12.4895, - 19.0, - 47.0, - 106.0, - 538.324, - 564.536, - 819.124, - 7048.0, - 12611.0, - 19878.0, - 20309.0, - 797056.0, - 1.77219e+09, - 2147483648.0, // INT32_MAX + 1 - 4294967296.0, // UINT32_MAX + 1 - 1.51116e+11, - 4.18193e+13, - 3.59167e+16, - 9223372036854775808.0, // INT64_MAX + 1 - 18446744073709551616.0, // UINT64_MAX + 1 - 3.38211e+19, - 2.67488e+20, - 1.78831e+21, - 9.20914e+21, - 8.35654e+23, - 1.4495e+24, - 5.94015e+25, - 4.43608e+30, - 2.44502e+33, - 1.38178e+37, - 1.71306e+37, - 3.31899e+38, - 3.40282e+38, -]; - -function assertBinop(name, math_func, wasm_func) { - let inputs2 = [ 1, 0.5, -1, -0.5, 0, -0, 1/0, -1/0, 0/0 ]; - for (val of inputs) { - verbose(" ", val); - for (val2 of inputs2) { - verbose(" ", val2); - let m = math_func(val, val2); - let w = wasm_func(val, val2); - if (!deepEquals(m, w)) reportFailure(name, [val, val2], m, w); - m = math_func(val2, val); - w = wasm_func(val2, val); - if (!deepEquals(m, w)) reportFailure(name, [val2, val], m, w); - } - } -} - -let stdlib = this; -function Module_exp(stdlib) { - "use asm"; - - var Stdlib = stdlib.Math.exp; - - function NAME(a, b) { - a = +a; - b = +b; - return +Stdlib(a, b); - } - - return {exp: exp}; -} - -function wasmBinop(name, sig) { - var builder = new WasmModuleBuilder(); - - var sig_index = builder.addType(sig); - builder.addImport('Math', name, sig_index); - builder.addFunction('main', sig_index) - .addBody([ - kExprGetLocal, 0, // -- - kExprGetLocal, 1, // -- - kExprCallFunction, 0 - ]) // -- - .exportAs('main'); - - return builder.instantiate(global_imports).exports.main; -} - -function asmBinop(name) { - let instance = Module_exp(stdlib); - assertTrue(%IsAsmWasmCode(Module_exp)); - - let asm_func = instance[name]; - if (typeof asm_func != "function") throw "asm[" + full_name + "] not found"; - return asm_func; -} - -(function TestF64() { - let name = 'exp'; - let math_func = Math[name]; - - let wasm_func = wasmBinop(name, kSig_d_dd); - assertBinop("(f64)" + name, math_func, wasm_func); - - let asm_func = asmBinop(name); - assertBinop("(f64)" + name, math_func, asm_func); -})(); - -assertEquals(0, numFailures); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8533.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-8533.js deleted file mode 100644 index da5f44925af..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-8533.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-shared-engine --no-wasm-disable-structured-cloning --allow-natives-syntax --experimental-wasm-threads - -load('test/mjsunit/wasm/wasm-module-builder.js'); - - -// In this test we start a worker which enters wasm and stays there in a loop. -// The main thread stays in JS and checks that its thread-in-wasm flag is not -// set. The main thread calls setTimeout after every check to give the worker a -// chance to be scheculed. -const sync_address = 12; -(function TestPostModule() { - let builder = new WasmModuleBuilder(); - let sig_index = builder.addType(kSig_v_v); - let import_id = builder.addImport('m', 'func', sig_index); - builder.addFunction('wait', kSig_v_v) - .addBody([ - // Calling the imported function sets the thread-in-wasm flag of the - // main thread. - kExprCallFunction, import_id, // -- - kExprLoop, kWasmStmt, // -- - kExprI32Const, sync_address, // -- - kExprI32LoadMem, 0, 0, // -- - kExprI32Eqz, - kExprBrIf, 0, // -- - kExprEnd, - ]) - .exportFunc(); - - builder.addFunction('signal', kSig_v_v) - .addBody([ - kExprI32Const, sync_address, // -- - kExprI32Const, 1, // -- - kExprI32StoreMem, 0, 0, // -- - ]) - .exportFunc(); - builder.addImportedMemory("m", "imported_mem", 0, 1, "shared"); - - let module = builder.toModule(); - let memory = new WebAssembly.Memory({initial: 1, maximum: 1, shared: true}); - - let workerScript = ` - onmessage = function(msg) { - try { - let worker_instance = new WebAssembly.Instance(msg.module, - {m: {imported_mem: msg.memory, - func: _ => 5}}); - postMessage("start running"); - worker_instance.exports.wait(); - postMessage("finished"); - } catch(e) { - postMessage('ERROR: ' + e); - } - } - `; - - let worker = new Worker(workerScript, {type: 'string'}); - worker.postMessage({module: module, memory: memory}); - - let main_instance = new WebAssembly.Instance( - module, {m: {imported_mem: memory, func: _ => 7}}); - - let counter = 0; - function CheckThreadNotInWasm() { - // We check the thread-in-wasm flag many times and reschedule ourselves in - // between to increase the chance that we read the flag set by the worker. - assertFalse(%IsThreadInWasm()); - counter++; - if (counter < 100) { - setTimeout(CheckThreadNotInWasm, 0); - } else { - main_instance.exports.signal(sync_address); - assertEquals('finished', worker.getMessage()); - worker.terminate(); - } - } - - assertFalse(%IsThreadInWasm()); - assertEquals('start running', worker.getMessage()); - CheckThreadNotInWasm(); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-853453.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-853453.js deleted file mode 100644 index fcf5f678850..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-853453.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --experimental-wasm-threads - -assertThrows(() => new WebAssembly.Module( - new Uint8Array([ - 0x00, 0x61, 0x73, 0x6d, // wasm magic - 0x01, 0x00, 0x00, 0x00, // wasm version - 0x04, // section code - 0x04, // section length - /* Section: Table */ - 0x01, // table count - 0x70, // table type - 0x03, // resizable limits flags - 0x00])), - WebAssembly.CompileError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-854011.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-854011.js deleted file mode 100644 index b0356a873f3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-854011.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction('main', kSig_d_d) - .addBody([ - // Call with param 0 (converted to i64), to fill the stack with non-zero - // values. - kExprGetLocal, 0, kExprI64SConvertF64, // arg 0 - kExprGetLocal, 0, kExprI64SConvertF64, // arg 1 - kExprGetLocal, 0, kExprI64SConvertF64, // arg 2 - kExprGetLocal, 0, kExprI64SConvertF64, // arg 3 - kExprGetLocal, 0, kExprI64SConvertF64, // arg 4 - kExprGetLocal, 0, kExprI64SConvertF64, // arg 5 - kExprGetLocal, 0, kExprI64SConvertF64, // arg 6 - kExprGetLocal, 0, kExprI64SConvertF64, // arg 7 - kExprCallFunction, 1, // call #1 - // Now call with 0 constants. - // The bug was that they were written out as i32 values, thus the upper 32 - // bit were the previous values on that stack memory. - kExprI64Const, 0, // i64.const 0 [0] - kExprI64Const, 0, // i64.const 0 [1] - kExprI64Const, 0, // i64.const 0 [2] - kExprI64Const, 0, // i64.const 0 [3] - kExprI64Const, 0, // i64.const 0 [4] - kExprI64Const, 0, // i64.const 0 [5] - kExprI64Const, 0, // i64.const 0 [6] - kExprI64Const, 0, // i64.const 0 [7] - kExprCallFunction, 1, // call #1 - // Return the sum of the two returned values. - kExprF64Add - ]) - .exportFunc(); -builder.addFunction(undefined, makeSig(new Array(8).fill(kWasmI64), [kWasmF64])) - .addBody([ - kExprGetLocal, 7, // get_local 7 (last parameter) - kExprF64SConvertI64, // f64.convert_s/i64 - ]); -const instance = builder.instantiate(); -const big_num_1 = 2 ** 48; -const big_num_2 = 2 ** 56 / 3; -assertEquals(big_num_1, instance.exports.main(big_num_1)); -assertEquals(big_num_2, instance.exports.main(big_num_2)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-854050.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-854050.js deleted file mode 100644 index d6c4829acd5..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-854050.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction(undefined, makeSig([kWasmI32, kWasmF32], [])) - .addLocals({i32_count: 7}) - .addBody([ - kExprGetLocal, 0, // get_local - kExprI32Const, 0, // i32.const 0 - kExprIf, kWasmStmt, // if - kExprUnreachable, // unreachable - kExprEnd, // end if - kExprGetLocal, 4, // get_local - kExprTeeLocal, 8, // tee_local - kExprBrIf, 0, // br_if depth=0 - kExprTeeLocal, 7, // tee_local - kExprTeeLocal, 0, // tee_local - kExprTeeLocal, 2, // tee_local - kExprTeeLocal, 8, // tee_local - kExprDrop, // drop - kExprLoop, kWasmStmt, // loop - kExprEnd, // end loop - ]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-864509.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-864509.js deleted file mode 100644 index 19e3bfcfb80..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-864509.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --liftoff --no-wasm-tier-up --no-future --wasm-tier-mask-for-testing=2 - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addMemory(1, 1); -// First function is Liftoff. The first parameter is used as memory offset. -builder.addFunction(undefined, kSig_v_i).addBody([ - kExprGetLocal, 0, // get_local 0 - kExprI32Const, 0, // i32.const 0 - kExprI32StoreMem, 0, 0, // i32.store offset=0 -]); -// Second function is Turbofan. It loads the sixth parameter from the stack -// into a register for the first argument. Even though it's a 32-bit value, it -// is loaded as 64-bit value on x64. -builder.addFunction(undefined, makeSig(new Array(6).fill(kWasmI32), [])) - .addBody([ - kExprGetLocal, 5, // get_local 5 - kExprCallFunction, 0 // call 0 - ]); -// The third function is Liftoff again. A value is spilled on the stack as i32, -// then used as a call argument, passed via the stack. The full 64-bit are -// copied on the stack, even though just 32-bit were written before. Hence, the -// stack slot is not zero-extended. -const gen_i32_code = [ - kExprTeeLocal, 0, // tee_local 0 - kExprGetLocal, 0, // get_local 0 - kExprI32Const, 1, // i32.const 1 - kExprI32Add // i32.add --> 2nd param -]; -builder.addFunction(undefined, kSig_v_v).addLocals({i32_count: 1}).addBody([ - // Generate six values on the stack, then six more to force the other six on - // the stack. - ...wasmI32Const(0), // i32.const 0 - ...wasmI32Const(1), // i32.const 1 - kExprI32Add, // i32.add --> 1st param - ...gen_i32_code, // --> 2nd param - ...gen_i32_code, // --> 3rd param - ...gen_i32_code, // --> 4th param - ...gen_i32_code, // --> 5th param - ...gen_i32_code, // --> 6th param - ...gen_i32_code, // --> garbage - ...gen_i32_code, // --> garbage - ...gen_i32_code, // --> garbage - ...gen_i32_code, // --> garbage - ...gen_i32_code, // --> garbage - ...gen_i32_code, // --> garbage - kExprDrop, // drop garbage - kExprDrop, // drop garbage - kExprDrop, // drop garbage - kExprDrop, // drop garbage - kExprDrop, // drop garbage - kExprDrop, // drop garbage - kExprCallFunction, 1 // call 1 -]).exportAs('three'); -const instance = builder.instantiate(); -instance.exports.three(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-873600.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-873600.js deleted file mode 100644 index b3f2d739a28..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-873600.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function DoTest() { - - var stdlib = this; - try { - var buffer = new ArrayBuffer((2097120) * 1024); - } catch (e) { - // Out of memory: soft pass because 2GiB is actually a lot! - print("OOM: soft pass"); - return; - } - var foreign = {} - - var m = (function Module(stdlib, foreign, heap) { - "use asm"; - var MEM16 = new stdlib.Int16Array(heap); - function load(i) { - i = i|0; - i = MEM16[i >> 1]|0; - return i | 0; - } - function store(i, v) { - i = i|0; - v = v|0; - MEM16[i >> 1] = v; - } - function load8(i) { - i = i|0; - i = MEM16[i + 8 >> 1]|0; - return i | 0; - } - function store8(i, v) { - i = i|0; - v = v|0; - MEM16[i + 8 >> 1] = v; - } - return { load: load, store: store, load8: load8, store8: store8 }; - })(stdlib, foreign, buffer); - - assertEquals(0, m.load(-8)); - assertEquals(0, m.load8(-16)); - m.store(2014, 2, 30, 1, 0); - assertEquals(0, m.load8(-8)); - m.store8(-8, 99); - assertEquals(99, m.load(0)); - assertEquals(99, m.load8(-8)); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-875556.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-875556.js deleted file mode 100644 index cc8bc5cc3e3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-875556.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// Flags: --expose-wasm --experimental-wasm-mv - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -(function() { - const builder = new WasmModuleBuilder(); - // Generate function 1 (out of 2). - sig1 = makeSig([kWasmI32], []); - builder.addFunction("main", sig1).addBodyWithEnd([ - // signature: v_i - // body: - kExprBlock, - ]); - assertThrows(function() { builder.instantiate(); }, WebAssembly.CompileError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-894307.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-894307.js deleted file mode 100644 index f40388fcb40..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-894307.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -const sig = makeSig([kWasmI32, kWasmI64, kWasmI64], [kWasmI64]); -builder.addFunction(undefined, sig) - .addBody([ - kExprGetLocal, 2, - kExprGetLocal, 1, - kExprI64Shl, -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-894374.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-894374.js deleted file mode 100644 index 02be0088cf6..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-894374.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addMemory(16, 32, false); -const sig = makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]); -builder.addFunction(undefined, sig) - .addBodyWithEnd([ - kExprMemorySize, 0, - kExprI32Const, 0, - kExprI64Const, 0, - kExprI64StoreMem8, 0, 0, - kExprEnd, - ]); -builder.addExport('main', 0); -builder.instantiate(); // shouldn't crash diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-898932.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-898932.js deleted file mode 100644 index e3d1bbf3786..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-898932.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-max-mem-pages=49152 - -let mem = new WebAssembly.Memory({initial: 1}); -try { - mem.grow(49151); -} catch (e) { - // This can fail on 32-bit systems if we cannot make such a big reservation. - if (!(e instanceof RangeError)) throw e; -} diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-905815.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-905815.js deleted file mode 100644 index 7967d99756b..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-905815.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-constants.js'); -load('test/mjsunit/wasm/wasm-module-builder.js'); - -(function() { - const builder = new WasmModuleBuilder(); - builder.addType(makeSig([], [])); - builder.addType(makeSig([kWasmI32], [kWasmI32])); - builder.addFunction(undefined, 0 /* sig */) - .addBodyWithEnd([ - kExprEnd, // @1 - ]); - builder.addFunction(undefined, 1 /* sig */) - .addLocals({i32_count: 65}) - .addBodyWithEnd([ - kExprLoop, kWasmStmt, // @3 - kSimdPrefix, - kExprF32x4Min, - kExprI64UConvertI32, - kExprI64RemS, - kExprUnreachable, - kExprLoop, 0x02, // @10 - ]); -}) diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-910824.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-910824.js deleted file mode 100644 index b795425b1f0..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-910824.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addGlobal(kWasmI32, 1); -builder.addGlobal(kWasmF32, 1); -builder.addType(makeSig([kWasmI32, kWasmF32, kWasmF32, kWasmF64], [kWasmI32])); -builder.addFunction(undefined, 0 /* sig */) - .addLocals({i32_count: 504}) - .addBody([ -kExprGetGlobal, 0x00, -kExprSetLocal, 0x04, -kExprGetLocal, 0x04, -kExprI32Const, 0x01, -kExprI32Sub, -kExprGetGlobal, 0x00, -kExprI32Const, 0x00, -kExprI32Eqz, -kExprGetGlobal, 0x00, -kExprI32Const, 0x01, -kExprI32Const, 0x01, -kExprI32Sub, -kExprGetGlobal, 0x00, -kExprI32Const, 0x00, -kExprI32Eqz, -kExprGetGlobal, 0x00, -kExprI32Const, 0x00, -kExprI32Const, 0x01, -kExprI32Sub, -kExprGetGlobal, 0x01, -kExprUnreachable, -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-913804.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-913804.js deleted file mode 100644 index e9d4026308a..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-913804.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction('main', kSig_v_v).addBody([ - kExprLoop, kWasmStmt, // loop - /**/ kExprBr, 0x01, // br depth=1 - /**/ kExprBlock, kWasmStmt, // block - /**/ /**/ kExprBr, 0x02, // br depth=2 - /**/ /**/ kExprEnd, // end [block] - /**/ kExprEnd // end [loop] -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-916869.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-916869.js deleted file mode 100644 index 30bb011364e..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-916869.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -const sig = builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32])); -builder.addFunction('main', sig) - .addBody([kExprI32Const, 0x01, kExprI32SExtendI8]) - .exportFunc(); -const instance = builder.instantiate(); -assertEquals(1, instance.exports.main()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-917412.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-917412.js deleted file mode 100644 index fd7ab990209..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-917412.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-constants.js'); -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -const sig = builder.addType(makeSig([kWasmI32, kWasmI64], [])); -builder.addFunction(undefined, sig) - .addBody([ -kExprI32Const, 0, -kExprIf, kWasmI32, - kExprI32Const, 0, -kExprElse, - kExprI32Const, 1, - kExprEnd, -kExprTeeLocal, 0, -kExprGetLocal, 0, -kExprLoop, kWasmStmt, - kExprI64Const, 0x80, 0x80, 0x80, 0x70, - kExprSetLocal, 0x01, - kExprI32Const, 0x00, - kExprIf, kWasmI32, - kExprI32Const, 0x00, - kExprElse, - kExprI32Const, 0x00, - kExprEnd, - kExprBrIf, 0x00, - kExprUnreachable, - kExprEnd, -kExprUnreachable, -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-917588.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-917588.js deleted file mode 100644 index cb07bb52804..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-917588.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-constants.js'); -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -const sig = builder.addType(makeSig([], [kWasmF64])); -builder.addFunction(undefined, sig) - .addLocals({f32_count: 5}).addLocals({f64_count: 3}) - .addBody([ -kExprBlock, kWasmF64, - kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, - kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - kExprI32Const, 0, - kExprIf, kWasmI32, - kExprI32Const, 0, - kExprElse, - kExprI32Const, 1, - kExprEnd, - kExprBrIf, 0, - kExprUnreachable, -kExprEnd -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-917588b.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-917588b.js deleted file mode 100644 index 9d461cfd84f..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-917588b.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-constants.js'); -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -const sig0 = builder.addType(makeSig([kWasmF32], [kWasmI32])); -const sig1 = builder.addType(makeSig([kWasmI64, kWasmI32, kWasmI64, kWasmF32, kWasmI64], [kWasmF32])); -const sig2 = builder.addType(makeSig([kWasmF32], [kWasmF32])); -// Generate function 1 (out of 3). -builder.addFunction(undefined, sig0).addBody([kExprI32Const, 0x00]); -// Generate function 2 (out of 3). -builder.addFunction(undefined, sig1) - .addBody([ - // signature: f_lilfl - kExprBlock, kWasmF32, // @1 f32 - kExprI32Const, 0x00, - kExprIf, kWasmStmt, // @5 - kExprLoop, kWasmStmt, // @7 - kExprBlock, kWasmI32, // @9 i32 - kExprF32Const, 0x00, 0x00, 0x80, 0xc1, - kExprF32Const, 0x00, 0x00, 0x80, 0x45, - kExprCallFunction, 0x00, // function #0: i_f - kExprBrIf, 0x03, // depth=3 - kExprDrop, - kExprI32Const, 0xd8, 0x00, - kExprEnd, // @29 - kExprBrIf, 0x00, // depth=0 - kExprEnd, // @32 - kExprF32Const, 0x00, 0x00, 0x80, 0x3f, - kExprF32Const, 0x00, 0x00, 0x80, 0xc6, - kExprBlock, kWasmI32, // @43 i32 - kExprF32Const, 0x00, 0x00, 0x80, 0x3f, - kExprCallFunction, 0x02, // function #2: f_f - kExprDrop, - kExprI32Const, 0x68, - kExprEnd, // @55 - kExprBrIf, 0x01, // depth=1 - kExprI32Const, 0x00, - kExprSelect, - kExprDrop, - kExprUnreachable, - kExprElse, // @63 - kExprNop, - kExprEnd, // @65 - kExprF32Const, 0x00, 0x00, 0x69, 0x43, - kExprEnd // @71 -]); -// Generate function 3 (out of 3). -builder.addFunction(undefined, sig2).addBody([ - kExprF32Const, 0x00, 0x00, 0x80, 0x3f -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-918149.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-918149.js deleted file mode 100644 index f19a26d2a3d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-918149.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-constants.js'); -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -const sig = - builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI64])); -builder.addFunction('main', sig).addBody([kExprI64Const, 1, kExprI64SExtendI8]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-918284.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-918284.js deleted file mode 100644 index 05614edf3cc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-918284.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-constants.js'); -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction(undefined, kSig_i_i) - .addLocals({i32_count: 7}) - .addBody([ - kExprI32Const, 0, - kExprIf, kWasmI32, // @11 i32 - kExprI32Const, 0, - kExprElse, // @15 - kExprI32Const, 1, - kExprEnd, // @18 - kExprTeeLocal, 0, - kExprI32Popcnt -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-918917.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-918917.js deleted file mode 100644 index 725287ae74d..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-918917.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-constants.js'); -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction(undefined, kSig_v_v) - .addLocals({i32_count: 1}).addLocals({f32_count: 1}).addLocals({f64_count: 1}) - .addBody([ -kExprGetLocal, 1, -kExprGetLocal, 2, -kExprGetLocal, 0, -kExprIf, kWasmI32, - kExprI32Const, 1, -kExprElse, - kExprUnreachable, - kExprEnd, -kExprUnreachable -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-919308.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-919308.js deleted file mode 100644 index cb106622902..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-919308.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-constants.js'); -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction(undefined, kSig_i_i) - .addLocals({i32_count: 5}) - .addBody([ - kExprGetLocal, 0, // --> 1 - kExprIf, kWasmI32, - kExprGetLocal, 0, // --> 1 - kExprElse, - kExprUnreachable, - kExprEnd, - kExprIf, kWasmI32, - kExprGetLocal, 0, // --> 1 - kExprElse, - kExprUnreachable, - kExprEnd, - kExprIf, kWasmI32, - kExprI32Const, 0, - kExprGetLocal, 0, - kExprI32Sub, // --> -1 - kExprGetLocal, 0, - kExprGetLocal, 0, - kExprI32Sub, // --> 0 - kExprI32Sub, // --> -1 - kExprElse, - kExprUnreachable, - kExprEnd -]); -builder.addExport('main', 0); -const instance = builder.instantiate(); -assertEquals(-1, instance.exports.main(1)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-919533.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-919533.js deleted file mode 100644 index 58273f666bc..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-919533.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-constants.js'); -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -builder.addFunction(undefined, kSig_v_v).addBody([]); -builder.addFunction(undefined, kSig_i_i) - .addBody([ - kExprGetLocal, 0, - kExprGetLocal, 0, - // Stack now contains two copies of the first param register. - // Start a loop to create a merge point (values still in registers). - kExprLoop, kWasmStmt, - // The call spills all values. - kExprCallFunction, 0, - // Break to the loop. Now the spilled values need to be loaded back *into - // the same register*. - kExprBr, 0, - kExprEnd, - kExprDrop -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-922432.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-922432.js deleted file mode 100644 index 8f1ad11ebc3..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-922432.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --experimental-wasm-eh - -load("test/mjsunit/wasm/wasm-constants.js"); -load("test/mjsunit/wasm/wasm-module-builder.js"); - -(function TestTruncatedBrOnExnInLoop() { - let builder = new WasmModuleBuilder(); - let fun = builder.addFunction(undefined, kSig_v_v) - .addLocals({except_count: 1}) - .addBody([ - kExprLoop, kWasmStmt, - kExprGetLocal, 0, - kExprBrOnExn // Bytecode truncated here. - ]).exportFunc(); - fun.body.pop(); // Pop implicitly added kExprEnd from body. - assertThrows(() => builder.instantiate(), WebAssembly.CompileError); -})(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-922670.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-922670.js deleted file mode 100644 index 2988eddf302..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-922670.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -const sig = builder.addType(makeSig([kWasmI32], [])); -builder.addFunction(undefined, sig) - .addLocals({i64_count: 1}) - .addBody([ - kExprLoop, kWasmI32, - kExprGetLocal, 1, - kExprI64Const, 1, - kExprLoop, kWasmI32, - kExprGetLocal, 0, - kExprI32Const, 1, - kExprI32Const, 1, - kExprIf, kWasmI32, - kExprI32Const, 1, - kExprElse, - kExprUnreachable, - kExprEnd, - kExprSelect, - kExprUnreachable, - kExprEnd, - kExprUnreachable, - kExprEnd, - kExprUnreachable -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-922933.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-922933.js deleted file mode 100644 index 4d445095988..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-922933.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -const sig = builder.addType(makeSig([kWasmI64], [kWasmI64])); -builder.addFunction(undefined, sig) - .addLocals({i32_count: 14}).addLocals({i64_count: 17}).addLocals({f32_count: 14}) - .addBody([ - kExprBlock, kWasmStmt, - kExprBr, 0x00, - kExprEnd, - kExprBlock, kWasmStmt, - kExprI32Const, 0x00, - kExprSetLocal, 0x09, - kExprI32Const, 0x00, - kExprIf, kWasmStmt, - kExprBlock, kWasmStmt, - kExprI32Const, 0x00, - kExprSetLocal, 0x0a, - kExprBr, 0x00, - kExprEnd, - kExprBlock, kWasmStmt, - kExprBlock, kWasmStmt, - kExprGetLocal, 0x00, - kExprSetLocal, 0x12, - kExprBr, 0x00, - kExprEnd, - kExprGetLocal, 0x16, - kExprSetLocal, 0x0f, - kExprGetLocal, 0x0f, - kExprSetLocal, 0x17, - kExprGetLocal, 0x0f, - kExprSetLocal, 0x18, - kExprGetLocal, 0x17, - kExprGetLocal, 0x18, - kExprI64ShrS, - kExprSetLocal, 0x19, - kExprUnreachable, - kExprEnd, - kExprUnreachable, - kExprElse, - kExprUnreachable, - kExprEnd, - kExprUnreachable, - kExprEnd, - kExprUnreachable -]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-924843.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-924843.js deleted file mode 100644 index 0549a769fbf..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-924843.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -const builder = new WasmModuleBuilder(); -const sig = builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32])); -builder.addFunction(undefined, sig) - .addBody([ - kExprGetLocal, 2, - kExprIf, kWasmStmt, - kExprBlock, kWasmStmt - ]); -builder.addExport('main', 0); -assertThrows(() => builder.instantiate(), WebAssembly.CompileError); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-924905.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-924905.js deleted file mode 100644 index 9dbdf7e2998..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-924905.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -let builder = new WasmModuleBuilder(); -builder.addFunction("kaboom", kSig_i_v) - .addBody([ - kExprI32Const, 0, - kExprI32Const, 0, - kExprI32And, - kExprI32Const, 0, - kExprI32ShrU, - ]).exportFunc(); -let instance = builder.instantiate(); -assertEquals(0, instance.exports.kaboom()); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-925671.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-925671.js deleted file mode 100644 index c6113c272e4..00000000000 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-925671.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --wasm-tier-mask-for-testing=1 - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -var builder = new WasmModuleBuilder(); -builder.addFunction('f0', kSig_v_v).addBody([]); -builder.addFunction('f1', kSig_v_v).addBody([]); -builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/result-table-max.js b/implementation-contributed/v8/mjsunit/result-table-max.js deleted file mode 100644 index 9b4b1441482..00000000000 --- a/implementation-contributed/v8/mjsunit/result-table-max.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [1,1,1,NaN,1,1,1,1,1,1,1,1.25,1,2147483648,Infinity,1,NaN], - [1,0,0,NaN,0,0,0,0,0,0,1,1.25,0,2147483648,Infinity,0,NaN], - [1,0,0,NaN,0,0,0,0,0,0,1,1.25,0,2147483648,Infinity,0,NaN], - [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN], - [1,0,0,NaN,0,0,0,0,0,0,1,1.25,0,2147483648,Infinity,0,NaN], - [1,0,0,NaN,0,0,0,0,0,0,1,1.25,0,2147483648,Infinity,0,NaN], - [1,0,0,NaN,0,0,-0,0,-0,-0,1,1.25,-0,2147483648,Infinity,-0,NaN], - [1,0,0,NaN,0,0,0,0,0,0,1,1.25,0,2147483648,Infinity,0,NaN], - [1,0,0,NaN,0,0,-0,0,-1,-1,1,1.25,-1,2147483648,Infinity,-1,NaN], - [1,0,0,NaN,0,0,-0,0,-1,-1.25,1,1.25,-1.25,2147483648,Infinity,-1.25,NaN], - [1,1,1,NaN,1,1,1,1,1,1,1,1.25,1,2147483648,Infinity,1,NaN], - [1.25,1.25,1.25,NaN,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,2147483648,Infinity,1.25,NaN], - [1,0,0,NaN,0,0,-0,0,-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-2147483648,NaN], - [2147483648,2147483648,2147483648,NaN,2147483648,2147483648,2147483648,2147483648,2147483648,2147483648,2147483648,2147483648,2147483648,2147483648,Infinity,2147483648,NaN], - [Infinity,Infinity,Infinity,NaN,Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,NaN], - [1,0,0,NaN,0,0,-0,0,-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN], - [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN] -]; -var func = (function max(a,b) { return Math.max(a, b); }); -var left_funcs = [ - (function max_L0(b) { return Math.max(true, b); }), - (function max_L1(b) { return Math.max(false, b); }), - (function max_L2(b) { return Math.max(null, b); }), - (function max_L3(b) { return Math.max(void 0, b); }), - (function max_L4(b) { return Math.max(0, b); }), - (function max_L5(b) { return Math.max(0.0, b); }), - (function max_L6(b) { return Math.max(-0, b); }), - (function max_L7(b) { return Math.max("", b); }), - (function max_L8(b) { return Math.max(-1, b); }), - (function max_L9(b) { return Math.max(-1.25, b); }), - (function max_L10(b) { return Math.max(1, b); }), - (function max_L11(b) { return Math.max(1.25, b); }), - (function max_L12(b) { return Math.max(-2147483648, b); }), - (function max_L13(b) { return Math.max(2147483648, b); }), - (function max_L14(b) { return Math.max(Infinity, b); }), - (function max_L15(b) { return Math.max(-Infinity, b); }), - (function max_L16(b) { return Math.max(NaN, b); }) -]; -var right_funcs = [ - (function max_R0(a) { return Math.max(a, true); }), - (function max_R1(a) { return Math.max(a, false); }), - (function max_R2(a) { return Math.max(a, null); }), - (function max_R3(a) { return Math.max(a, void 0); }), - (function max_R4(a) { return Math.max(a, 0); }), - (function max_R5(a) { return Math.max(a, 0.0); }), - (function max_R6(a) { return Math.max(a, -0); }), - (function max_R7(a) { return Math.max(a, ""); }), - (function max_R8(a) { return Math.max(a, -1); }), - (function max_R9(a) { return Math.max(a, -1.25); }), - (function max_R10(a) { return Math.max(a, 1); }), - (function max_R11(a) { return Math.max(a, 1.25); }), - (function max_R12(a) { return Math.max(a, -2147483648); }), - (function max_R13(a) { return Math.max(a, 2147483648); }), - (function max_R14(a) { return Math.max(a, Infinity); }), - (function max_R15(a) { return Math.max(a, -Infinity); }), - (function max_R16(a) { return Math.max(a, NaN); }) -]; -function matrix() { - return [ - [Math.max(true, true),Math.max(true, false),Math.max(true, null),Math.max(true, void 0),Math.max(true, 0),Math.max(true, 0.0),Math.max(true, -0),Math.max(true, ""),Math.max(true, -1),Math.max(true, -1.25),Math.max(true, 1),Math.max(true, 1.25),Math.max(true, -2147483648),Math.max(true, 2147483648),Math.max(true, Infinity),Math.max(true, -Infinity),Math.max(true, NaN)], - [Math.max(false, true),Math.max(false, false),Math.max(false, null),Math.max(false, void 0),Math.max(false, 0),Math.max(false, 0.0),Math.max(false, -0),Math.max(false, ""),Math.max(false, -1),Math.max(false, -1.25),Math.max(false, 1),Math.max(false, 1.25),Math.max(false, -2147483648),Math.max(false, 2147483648),Math.max(false, Infinity),Math.max(false, -Infinity),Math.max(false, NaN)], - [Math.max(null, true),Math.max(null, false),Math.max(null, null),Math.max(null, void 0),Math.max(null, 0),Math.max(null, 0.0),Math.max(null, -0),Math.max(null, ""),Math.max(null, -1),Math.max(null, -1.25),Math.max(null, 1),Math.max(null, 1.25),Math.max(null, -2147483648),Math.max(null, 2147483648),Math.max(null, Infinity),Math.max(null, -Infinity),Math.max(null, NaN)], - [Math.max(void 0, true),Math.max(void 0, false),Math.max(void 0, null),Math.max(void 0, void 0),Math.max(void 0, 0),Math.max(void 0, 0.0),Math.max(void 0, -0),Math.max(void 0, ""),Math.max(void 0, -1),Math.max(void 0, -1.25),Math.max(void 0, 1),Math.max(void 0, 1.25),Math.max(void 0, -2147483648),Math.max(void 0, 2147483648),Math.max(void 0, Infinity),Math.max(void 0, -Infinity),Math.max(void 0, NaN)], - [Math.max(0, true),Math.max(0, false),Math.max(0, null),Math.max(0, void 0),Math.max(0, 0),Math.max(0, 0.0),Math.max(0, -0),Math.max(0, ""),Math.max(0, -1),Math.max(0, -1.25),Math.max(0, 1),Math.max(0, 1.25),Math.max(0, -2147483648),Math.max(0, 2147483648),Math.max(0, Infinity),Math.max(0, -Infinity),Math.max(0, NaN)], - [Math.max(0.0, true),Math.max(0.0, false),Math.max(0.0, null),Math.max(0.0, void 0),Math.max(0.0, 0),Math.max(0.0, 0.0),Math.max(0.0, -0),Math.max(0.0, ""),Math.max(0.0, -1),Math.max(0.0, -1.25),Math.max(0.0, 1),Math.max(0.0, 1.25),Math.max(0.0, -2147483648),Math.max(0.0, 2147483648),Math.max(0.0, Infinity),Math.max(0.0, -Infinity),Math.max(0.0, NaN)], - [Math.max(-0, true),Math.max(-0, false),Math.max(-0, null),Math.max(-0, void 0),Math.max(-0, 0),Math.max(-0, 0.0),Math.max(-0, -0),Math.max(-0, ""),Math.max(-0, -1),Math.max(-0, -1.25),Math.max(-0, 1),Math.max(-0, 1.25),Math.max(-0, -2147483648),Math.max(-0, 2147483648),Math.max(-0, Infinity),Math.max(-0, -Infinity),Math.max(-0, NaN)], - [Math.max("", true),Math.max("", false),Math.max("", null),Math.max("", void 0),Math.max("", 0),Math.max("", 0.0),Math.max("", -0),Math.max("", ""),Math.max("", -1),Math.max("", -1.25),Math.max("", 1),Math.max("", 1.25),Math.max("", -2147483648),Math.max("", 2147483648),Math.max("", Infinity),Math.max("", -Infinity),Math.max("", NaN)], - [Math.max(-1, true),Math.max(-1, false),Math.max(-1, null),Math.max(-1, void 0),Math.max(-1, 0),Math.max(-1, 0.0),Math.max(-1, -0),Math.max(-1, ""),Math.max(-1, -1),Math.max(-1, -1.25),Math.max(-1, 1),Math.max(-1, 1.25),Math.max(-1, -2147483648),Math.max(-1, 2147483648),Math.max(-1, Infinity),Math.max(-1, -Infinity),Math.max(-1, NaN)], - [Math.max(-1.25, true),Math.max(-1.25, false),Math.max(-1.25, null),Math.max(-1.25, void 0),Math.max(-1.25, 0),Math.max(-1.25, 0.0),Math.max(-1.25, -0),Math.max(-1.25, ""),Math.max(-1.25, -1),Math.max(-1.25, -1.25),Math.max(-1.25, 1),Math.max(-1.25, 1.25),Math.max(-1.25, -2147483648),Math.max(-1.25, 2147483648),Math.max(-1.25, Infinity),Math.max(-1.25, -Infinity),Math.max(-1.25, NaN)], - [Math.max(1, true),Math.max(1, false),Math.max(1, null),Math.max(1, void 0),Math.max(1, 0),Math.max(1, 0.0),Math.max(1, -0),Math.max(1, ""),Math.max(1, -1),Math.max(1, -1.25),Math.max(1, 1),Math.max(1, 1.25),Math.max(1, -2147483648),Math.max(1, 2147483648),Math.max(1, Infinity),Math.max(1, -Infinity),Math.max(1, NaN)], - [Math.max(1.25, true),Math.max(1.25, false),Math.max(1.25, null),Math.max(1.25, void 0),Math.max(1.25, 0),Math.max(1.25, 0.0),Math.max(1.25, -0),Math.max(1.25, ""),Math.max(1.25, -1),Math.max(1.25, -1.25),Math.max(1.25, 1),Math.max(1.25, 1.25),Math.max(1.25, -2147483648),Math.max(1.25, 2147483648),Math.max(1.25, Infinity),Math.max(1.25, -Infinity),Math.max(1.25, NaN)], - [Math.max(-2147483648, true),Math.max(-2147483648, false),Math.max(-2147483648, null),Math.max(-2147483648, void 0),Math.max(-2147483648, 0),Math.max(-2147483648, 0.0),Math.max(-2147483648, -0),Math.max(-2147483648, ""),Math.max(-2147483648, -1),Math.max(-2147483648, -1.25),Math.max(-2147483648, 1),Math.max(-2147483648, 1.25),Math.max(-2147483648, -2147483648),Math.max(-2147483648, 2147483648),Math.max(-2147483648, Infinity),Math.max(-2147483648, -Infinity),Math.max(-2147483648, NaN)], - [Math.max(2147483648, true),Math.max(2147483648, false),Math.max(2147483648, null),Math.max(2147483648, void 0),Math.max(2147483648, 0),Math.max(2147483648, 0.0),Math.max(2147483648, -0),Math.max(2147483648, ""),Math.max(2147483648, -1),Math.max(2147483648, -1.25),Math.max(2147483648, 1),Math.max(2147483648, 1.25),Math.max(2147483648, -2147483648),Math.max(2147483648, 2147483648),Math.max(2147483648, Infinity),Math.max(2147483648, -Infinity),Math.max(2147483648, NaN)], - [Math.max(Infinity, true),Math.max(Infinity, false),Math.max(Infinity, null),Math.max(Infinity, void 0),Math.max(Infinity, 0),Math.max(Infinity, 0.0),Math.max(Infinity, -0),Math.max(Infinity, ""),Math.max(Infinity, -1),Math.max(Infinity, -1.25),Math.max(Infinity, 1),Math.max(Infinity, 1.25),Math.max(Infinity, -2147483648),Math.max(Infinity, 2147483648),Math.max(Infinity, Infinity),Math.max(Infinity, -Infinity),Math.max(Infinity, NaN)], - [Math.max(-Infinity, true),Math.max(-Infinity, false),Math.max(-Infinity, null),Math.max(-Infinity, void 0),Math.max(-Infinity, 0),Math.max(-Infinity, 0.0),Math.max(-Infinity, -0),Math.max(-Infinity, ""),Math.max(-Infinity, -1),Math.max(-Infinity, -1.25),Math.max(-Infinity, 1),Math.max(-Infinity, 1.25),Math.max(-Infinity, -2147483648),Math.max(-Infinity, 2147483648),Math.max(-Infinity, Infinity),Math.max(-Infinity, -Infinity),Math.max(-Infinity, NaN)], - [Math.max(NaN, true),Math.max(NaN, false),Math.max(NaN, null),Math.max(NaN, void 0),Math.max(NaN, 0),Math.max(NaN, 0.0),Math.max(NaN, -0),Math.max(NaN, ""),Math.max(NaN, -1),Math.max(NaN, -1.25),Math.max(NaN, 1),Math.max(NaN, 1.25),Math.max(NaN, -2147483648),Math.max(NaN, 2147483648),Math.max(NaN, Infinity),Math.max(NaN, -Infinity),Math.max(NaN, NaN)] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/result-table-min.js b/implementation-contributed/v8/mjsunit/result-table-min.js deleted file mode 100644 index 543632abade..00000000000 --- a/implementation-contributed/v8/mjsunit/result-table-min.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var values = [true,false,null,void 0,0,0.0,-0,"",-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN]; -var expected = [ - [1,0,0,NaN,0,0,-0,0,-1,-1.25,1,1,-2147483648,1,1,-Infinity,NaN], - [0,0,0,NaN,0,0,-0,0,-1,-1.25,0,0,-2147483648,0,0,-Infinity,NaN], - [0,0,0,NaN,0,0,-0,0,-1,-1.25,0,0,-2147483648,0,0,-Infinity,NaN], - [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN], - [0,0,0,NaN,0,0,-0,0,-1,-1.25,0,0,-2147483648,0,0,-Infinity,NaN], - [0,0,0,NaN,0,0,-0,0,-1,-1.25,0,0,-2147483648,0,0,-Infinity,NaN], - [-0,-0,-0,NaN,-0,-0,-0,-0,-1,-1.25,-0,-0,-2147483648,-0,-0,-Infinity,NaN], - [0,0,0,NaN,0,0,-0,0,-1,-1.25,0,0,-2147483648,0,0,-Infinity,NaN], - [-1,-1,-1,NaN,-1,-1,-1,-1,-1,-1.25,-1,-1,-2147483648,-1,-1,-Infinity,NaN], - [-1.25,-1.25,-1.25,NaN,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-1.25,-2147483648,-1.25,-1.25,-Infinity,NaN], - [1,0,0,NaN,0,0,-0,0,-1,-1.25,1,1,-2147483648,1,1,-Infinity,NaN], - [1,0,0,NaN,0,0,-0,0,-1,-1.25,1,1.25,-2147483648,1.25,1.25,-Infinity,NaN], - [-2147483648,-2147483648,-2147483648,NaN,-2147483648,-2147483648,-2147483648,-2147483648,-2147483648,-2147483648,-2147483648,-2147483648,-2147483648,-2147483648,-2147483648,-Infinity,NaN], - [1,0,0,NaN,0,0,-0,0,-1,-1.25,1,1.25,-2147483648,2147483648,2147483648,-Infinity,NaN], - [1,0,0,NaN,0,0,-0,0,-1,-1.25,1,1.25,-2147483648,2147483648,Infinity,-Infinity,NaN], - [-Infinity,-Infinity,-Infinity,NaN,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,-Infinity,NaN], - [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN] -]; -var func = (function min(a,b) { return Math.min(a, b); }); -var left_funcs = [ - (function min_L0(b) { return Math.min(true, b); }), - (function min_L1(b) { return Math.min(false, b); }), - (function min_L2(b) { return Math.min(null, b); }), - (function min_L3(b) { return Math.min(void 0, b); }), - (function min_L4(b) { return Math.min(0, b); }), - (function min_L5(b) { return Math.min(0.0, b); }), - (function min_L6(b) { return Math.min(-0, b); }), - (function min_L7(b) { return Math.min("", b); }), - (function min_L8(b) { return Math.min(-1, b); }), - (function min_L9(b) { return Math.min(-1.25, b); }), - (function min_L10(b) { return Math.min(1, b); }), - (function min_L11(b) { return Math.min(1.25, b); }), - (function min_L12(b) { return Math.min(-2147483648, b); }), - (function min_L13(b) { return Math.min(2147483648, b); }), - (function min_L14(b) { return Math.min(Infinity, b); }), - (function min_L15(b) { return Math.min(-Infinity, b); }), - (function min_L16(b) { return Math.min(NaN, b); }) -]; -var right_funcs = [ - (function min_R0(a) { return Math.min(a, true); }), - (function min_R1(a) { return Math.min(a, false); }), - (function min_R2(a) { return Math.min(a, null); }), - (function min_R3(a) { return Math.min(a, void 0); }), - (function min_R4(a) { return Math.min(a, 0); }), - (function min_R5(a) { return Math.min(a, 0.0); }), - (function min_R6(a) { return Math.min(a, -0); }), - (function min_R7(a) { return Math.min(a, ""); }), - (function min_R8(a) { return Math.min(a, -1); }), - (function min_R9(a) { return Math.min(a, -1.25); }), - (function min_R10(a) { return Math.min(a, 1); }), - (function min_R11(a) { return Math.min(a, 1.25); }), - (function min_R12(a) { return Math.min(a, -2147483648); }), - (function min_R13(a) { return Math.min(a, 2147483648); }), - (function min_R14(a) { return Math.min(a, Infinity); }), - (function min_R15(a) { return Math.min(a, -Infinity); }), - (function min_R16(a) { return Math.min(a, NaN); }) -]; -function matrix() { - return [ - [Math.min(true, true),Math.min(true, false),Math.min(true, null),Math.min(true, void 0),Math.min(true, 0),Math.min(true, 0.0),Math.min(true, -0),Math.min(true, ""),Math.min(true, -1),Math.min(true, -1.25),Math.min(true, 1),Math.min(true, 1.25),Math.min(true, -2147483648),Math.min(true, 2147483648),Math.min(true, Infinity),Math.min(true, -Infinity),Math.min(true, NaN)], - [Math.min(false, true),Math.min(false, false),Math.min(false, null),Math.min(false, void 0),Math.min(false, 0),Math.min(false, 0.0),Math.min(false, -0),Math.min(false, ""),Math.min(false, -1),Math.min(false, -1.25),Math.min(false, 1),Math.min(false, 1.25),Math.min(false, -2147483648),Math.min(false, 2147483648),Math.min(false, Infinity),Math.min(false, -Infinity),Math.min(false, NaN)], - [Math.min(null, true),Math.min(null, false),Math.min(null, null),Math.min(null, void 0),Math.min(null, 0),Math.min(null, 0.0),Math.min(null, -0),Math.min(null, ""),Math.min(null, -1),Math.min(null, -1.25),Math.min(null, 1),Math.min(null, 1.25),Math.min(null, -2147483648),Math.min(null, 2147483648),Math.min(null, Infinity),Math.min(null, -Infinity),Math.min(null, NaN)], - [Math.min(void 0, true),Math.min(void 0, false),Math.min(void 0, null),Math.min(void 0, void 0),Math.min(void 0, 0),Math.min(void 0, 0.0),Math.min(void 0, -0),Math.min(void 0, ""),Math.min(void 0, -1),Math.min(void 0, -1.25),Math.min(void 0, 1),Math.min(void 0, 1.25),Math.min(void 0, -2147483648),Math.min(void 0, 2147483648),Math.min(void 0, Infinity),Math.min(void 0, -Infinity),Math.min(void 0, NaN)], - [Math.min(0, true),Math.min(0, false),Math.min(0, null),Math.min(0, void 0),Math.min(0, 0),Math.min(0, 0.0),Math.min(0, -0),Math.min(0, ""),Math.min(0, -1),Math.min(0, -1.25),Math.min(0, 1),Math.min(0, 1.25),Math.min(0, -2147483648),Math.min(0, 2147483648),Math.min(0, Infinity),Math.min(0, -Infinity),Math.min(0, NaN)], - [Math.min(0.0, true),Math.min(0.0, false),Math.min(0.0, null),Math.min(0.0, void 0),Math.min(0.0, 0),Math.min(0.0, 0.0),Math.min(0.0, -0),Math.min(0.0, ""),Math.min(0.0, -1),Math.min(0.0, -1.25),Math.min(0.0, 1),Math.min(0.0, 1.25),Math.min(0.0, -2147483648),Math.min(0.0, 2147483648),Math.min(0.0, Infinity),Math.min(0.0, -Infinity),Math.min(0.0, NaN)], - [Math.min(-0, true),Math.min(-0, false),Math.min(-0, null),Math.min(-0, void 0),Math.min(-0, 0),Math.min(-0, 0.0),Math.min(-0, -0),Math.min(-0, ""),Math.min(-0, -1),Math.min(-0, -1.25),Math.min(-0, 1),Math.min(-0, 1.25),Math.min(-0, -2147483648),Math.min(-0, 2147483648),Math.min(-0, Infinity),Math.min(-0, -Infinity),Math.min(-0, NaN)], - [Math.min("", true),Math.min("", false),Math.min("", null),Math.min("", void 0),Math.min("", 0),Math.min("", 0.0),Math.min("", -0),Math.min("", ""),Math.min("", -1),Math.min("", -1.25),Math.min("", 1),Math.min("", 1.25),Math.min("", -2147483648),Math.min("", 2147483648),Math.min("", Infinity),Math.min("", -Infinity),Math.min("", NaN)], - [Math.min(-1, true),Math.min(-1, false),Math.min(-1, null),Math.min(-1, void 0),Math.min(-1, 0),Math.min(-1, 0.0),Math.min(-1, -0),Math.min(-1, ""),Math.min(-1, -1),Math.min(-1, -1.25),Math.min(-1, 1),Math.min(-1, 1.25),Math.min(-1, -2147483648),Math.min(-1, 2147483648),Math.min(-1, Infinity),Math.min(-1, -Infinity),Math.min(-1, NaN)], - [Math.min(-1.25, true),Math.min(-1.25, false),Math.min(-1.25, null),Math.min(-1.25, void 0),Math.min(-1.25, 0),Math.min(-1.25, 0.0),Math.min(-1.25, -0),Math.min(-1.25, ""),Math.min(-1.25, -1),Math.min(-1.25, -1.25),Math.min(-1.25, 1),Math.min(-1.25, 1.25),Math.min(-1.25, -2147483648),Math.min(-1.25, 2147483648),Math.min(-1.25, Infinity),Math.min(-1.25, -Infinity),Math.min(-1.25, NaN)], - [Math.min(1, true),Math.min(1, false),Math.min(1, null),Math.min(1, void 0),Math.min(1, 0),Math.min(1, 0.0),Math.min(1, -0),Math.min(1, ""),Math.min(1, -1),Math.min(1, -1.25),Math.min(1, 1),Math.min(1, 1.25),Math.min(1, -2147483648),Math.min(1, 2147483648),Math.min(1, Infinity),Math.min(1, -Infinity),Math.min(1, NaN)], - [Math.min(1.25, true),Math.min(1.25, false),Math.min(1.25, null),Math.min(1.25, void 0),Math.min(1.25, 0),Math.min(1.25, 0.0),Math.min(1.25, -0),Math.min(1.25, ""),Math.min(1.25, -1),Math.min(1.25, -1.25),Math.min(1.25, 1),Math.min(1.25, 1.25),Math.min(1.25, -2147483648),Math.min(1.25, 2147483648),Math.min(1.25, Infinity),Math.min(1.25, -Infinity),Math.min(1.25, NaN)], - [Math.min(-2147483648, true),Math.min(-2147483648, false),Math.min(-2147483648, null),Math.min(-2147483648, void 0),Math.min(-2147483648, 0),Math.min(-2147483648, 0.0),Math.min(-2147483648, -0),Math.min(-2147483648, ""),Math.min(-2147483648, -1),Math.min(-2147483648, -1.25),Math.min(-2147483648, 1),Math.min(-2147483648, 1.25),Math.min(-2147483648, -2147483648),Math.min(-2147483648, 2147483648),Math.min(-2147483648, Infinity),Math.min(-2147483648, -Infinity),Math.min(-2147483648, NaN)], - [Math.min(2147483648, true),Math.min(2147483648, false),Math.min(2147483648, null),Math.min(2147483648, void 0),Math.min(2147483648, 0),Math.min(2147483648, 0.0),Math.min(2147483648, -0),Math.min(2147483648, ""),Math.min(2147483648, -1),Math.min(2147483648, -1.25),Math.min(2147483648, 1),Math.min(2147483648, 1.25),Math.min(2147483648, -2147483648),Math.min(2147483648, 2147483648),Math.min(2147483648, Infinity),Math.min(2147483648, -Infinity),Math.min(2147483648, NaN)], - [Math.min(Infinity, true),Math.min(Infinity, false),Math.min(Infinity, null),Math.min(Infinity, void 0),Math.min(Infinity, 0),Math.min(Infinity, 0.0),Math.min(Infinity, -0),Math.min(Infinity, ""),Math.min(Infinity, -1),Math.min(Infinity, -1.25),Math.min(Infinity, 1),Math.min(Infinity, 1.25),Math.min(Infinity, -2147483648),Math.min(Infinity, 2147483648),Math.min(Infinity, Infinity),Math.min(Infinity, -Infinity),Math.min(Infinity, NaN)], - [Math.min(-Infinity, true),Math.min(-Infinity, false),Math.min(-Infinity, null),Math.min(-Infinity, void 0),Math.min(-Infinity, 0),Math.min(-Infinity, 0.0),Math.min(-Infinity, -0),Math.min(-Infinity, ""),Math.min(-Infinity, -1),Math.min(-Infinity, -1.25),Math.min(-Infinity, 1),Math.min(-Infinity, 1.25),Math.min(-Infinity, -2147483648),Math.min(-Infinity, 2147483648),Math.min(-Infinity, Infinity),Math.min(-Infinity, -Infinity),Math.min(-Infinity, NaN)], - [Math.min(NaN, true),Math.min(NaN, false),Math.min(NaN, null),Math.min(NaN, void 0),Math.min(NaN, 0),Math.min(NaN, 0.0),Math.min(NaN, -0),Math.min(NaN, ""),Math.min(NaN, -1),Math.min(NaN, -1.25),Math.min(NaN, 1),Math.min(NaN, 1.25),Math.min(NaN, -2147483648),Math.min(NaN, 2147483648),Math.min(NaN, Infinity),Math.min(NaN, -Infinity),Math.min(NaN, NaN)] - ]; -} -function test() { - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - var a = values[i]; - var b = values[j]; - var x = expected[i][j]; - assertEquals(x, func(a,b)); - assertEquals(x, left_funcs[i](b)); - assertEquals(x, right_funcs[j](a)); - } - } - - var result = matrix(); - for (var i = 0; i < values.length; i++) { - for (var j = 0; j < values.length; j++) { - assertEquals(expected[i][j], result[i][j]); - } - } -} -test(); -test(); diff --git a/implementation-contributed/v8/mjsunit/samevalue.js b/implementation-contributed/v8/mjsunit/samevalue.js deleted file mode 100644 index 30cce35bcce..00000000000 --- a/implementation-contributed/v8/mjsunit/samevalue.js +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Flags: --allow-natives-syntax -// Test the SameValue and SameValueZero internal methods. - -var obj1 = {x: 10, y: 11, z: "test"}; -var obj2 = {x: 10, y: 11, z: "test"}; - -// Object.is() uses the SameValue algorithm. -var sameValue = Object.is; - -// Set#has() uses the SameValueZero algorithm. -var sameValueZero = (x, y) => new Set([x]).has(y); - -// Calls SameValue and SameValueZero and checks that their results match. -function sameValueBoth(a, b) { - var result = sameValue(a, b); - assertTrue(result === sameValueZero(a, b)); - return result; -} - -// Calls SameValue and SameValueZero and checks that their results don't match. -function sameValueZeroOnly(a, b) { - var result = sameValueZero(a, b); - assertTrue(result && !sameValue(a, b)); - return result; -} - -assertTrue(sameValueBoth(0, 0)); -assertTrue(sameValueBoth(+0, +0)); -assertTrue(sameValueBoth(-0, -0)); -assertTrue(sameValueBoth(1, 1)); -assertTrue(sameValueBoth(2, 2)); -assertTrue(sameValueBoth(-1, -1)); -assertTrue(sameValueBoth(0.5, 0.5)); -assertTrue(sameValueBoth(true, true)); -assertTrue(sameValueBoth(false, false)); -assertTrue(sameValueBoth(NaN, NaN)); -assertTrue(sameValueBoth(null, null)); -assertTrue(sameValueBoth("foo", "foo")); -assertTrue(sameValueBoth(obj1, obj1)); -// Undefined values. -assertTrue(sameValueBoth()); -assertTrue(sameValueBoth(undefined, undefined)); - -assertFalse(sameValueBoth(0,1)); -assertFalse(sameValueBoth("foo", "bar")); -assertFalse(sameValueBoth(obj1, obj2)); -assertFalse(sameValueBoth(true, false)); - -assertFalse(sameValueBoth(obj1, true)); -assertFalse(sameValueBoth(obj1, "foo")); -assertFalse(sameValueBoth(obj1, 1)); -assertFalse(sameValueBoth(obj1, undefined)); -assertFalse(sameValueBoth(obj1, NaN)); - -assertFalse(sameValueBoth(undefined, true)); -assertFalse(sameValueBoth(undefined, "foo")); -assertFalse(sameValueBoth(undefined, 1)); -assertFalse(sameValueBoth(undefined, obj1)); -assertFalse(sameValueBoth(undefined, NaN)); - -assertFalse(sameValueBoth(NaN, true)); -assertFalse(sameValueBoth(NaN, "foo")); -assertFalse(sameValueBoth(NaN, 1)); -assertFalse(sameValueBoth(NaN, obj1)); -assertFalse(sameValueBoth(NaN, undefined)); - -assertFalse(sameValueBoth("foo", true)); -assertFalse(sameValueBoth("foo", 1)); -assertFalse(sameValueBoth("foo", obj1)); -assertFalse(sameValueBoth("foo", undefined)); -assertFalse(sameValueBoth("foo", NaN)); - -assertFalse(sameValueBoth(true, 1)); -assertFalse(sameValueBoth(true, obj1)); -assertFalse(sameValueBoth(true, undefined)); -assertFalse(sameValueBoth(true, NaN)); -assertFalse(sameValueBoth(true, "foo")); - -assertFalse(sameValueBoth(1, true)); -assertFalse(sameValueBoth(1, obj1)); -assertFalse(sameValueBoth(1, undefined)); -assertFalse(sameValueBoth(1, NaN)); -assertFalse(sameValueBoth(1, "foo")); - -// Special string cases. -assertFalse(sameValueBoth("1", 1)); -assertFalse(sameValueBoth("true", true)); -assertFalse(sameValueBoth("false", false)); -assertFalse(sameValueBoth("undefined", undefined)); -assertFalse(sameValueBoth("NaN", NaN)); - -// SameValue considers -0 and +0 to be different; SameValueZero considers -// -0 and +0 to be the same. -assertTrue(sameValueZeroOnly(+0, -0)); -assertTrue(sameValueZeroOnly(-0, +0)); diff --git a/implementation-contributed/v8/mjsunit/scanner.js b/implementation-contributed/v8/mjsunit/scanner.js deleted file mode 100644 index 516a4e88803..00000000000 --- a/implementation-contributed/v8/mjsunit/scanner.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests that we check if escaped characters are valid indentifier -// start characters. -assertThrows('var \\u0030') diff --git a/implementation-contributed/v8/mjsunit/scope-calls-eval.js b/implementation-contributed/v8/mjsunit/scope-calls-eval.js deleted file mode 100644 index 4a941aaa940..00000000000 --- a/implementation-contributed/v8/mjsunit/scope-calls-eval.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests if the information about eval calls in a function is -// propagated correctly through catch and with blocks. - - -function f1() { - var x = 5; - function g() { - try { - throw ''; - } catch (e) { - eval('var x = 3;'); - } - try { - throw ''; - } catch (e) { - return x; - } - } - return g(); -} - - -function f2() { - var x = 5; - function g() { - with ({e:42}) { - eval('var x = 3;'); - } - with ({e:42}) { - return x; - } - } - return g(); -} - - -assertEquals(3, f1()); -assertEquals(3, f2()); diff --git a/implementation-contributed/v8/mjsunit/search-string-multiple.js b/implementation-contributed/v8/mjsunit/search-string-multiple.js deleted file mode 100644 index b28fded7a90..00000000000 --- a/implementation-contributed/v8/mjsunit/search-string-multiple.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test search and replace where we search for a string, not a regexp. - -function TestCase(id, expected_output, regexp_source, flags, input) { - print(id); - var re = new RegExp(regexp_source, flags); - var output = input.replace(re, MakeReplaceString); - assertEquals(expected_output, output, id); -} - - -function MakeReplaceString() { - // Arg 0 is the match, n captures follow, n + 1 is offset of match, n + 2 is - // the subject. - var l = arguments.length; - var a = new Array(l - 3); - a.push(arguments[0]); - for (var i = 2; i < l - 2; i++) { - a.push(arguments[i]); - } - return "[@" + arguments[l - 2] + ":" + a.join(",") + "]"; -} - - -(function () { - TestCase(1, - "ajaxNiceForm.villesHome([@24:#OBJ#])", - "#OBJ#", - "g", - "ajaxNiceForm.villesHome(#OBJ#)"); - TestCase(2, - "A long string with no non-ASCII characters", - "Unicode string \u1234", - "g", - "A long string with no non-ASCII characters"); -})(); diff --git a/implementation-contributed/v8/mjsunit/serialize-after-execute.js b/implementation-contributed/v8/mjsunit/serialize-after-execute.js deleted file mode 100644 index a3e6bc82aee..00000000000 --- a/implementation-contributed/v8/mjsunit/serialize-after-execute.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --cache=after-execute - -function g() { - function h() { - function k() { return 0; }; - return k; - } - return h(); -} - -g(); diff --git a/implementation-contributed/v8/mjsunit/serialize-embedded-error.js b/implementation-contributed/v8/mjsunit/serialize-embedded-error.js deleted file mode 100644 index 320fe475b00..00000000000 --- a/implementation-contributed/v8/mjsunit/serialize-embedded-error.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// --cache=code - -var caught = false; -try { - parseInt() = 0; -} catch(e) { - caught = true; -} -assertTrue(caught); diff --git a/implementation-contributed/v8/mjsunit/serialize-ic.js b/implementation-contributed/v8/mjsunit/serialize-ic.js deleted file mode 100644 index 74821a9ec32..00000000000 --- a/implementation-contributed/v8/mjsunit/serialize-ic.js +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --cache=code - -var foo = []; -foo[0] = "bar"; -assertEquals(["bar"], foo); - -var a; -var b = 1; -a = [2]; // STORE_IC -a[0] = a[0] + 1; // KEYED_STORE_IC, KEYED_LOAD_IC, BINARY_OP_IC -assertTrue(a[0] > b); // CALL_IC, COMPARE_IC -b = b == null; // COMPARE_NIL_IC -b = b || Boolean(''); // TO_BOOLEAN_IC -assertFalse(b); diff --git a/implementation-contributed/v8/mjsunit/setter-on-constructor-prototype.js b/implementation-contributed/v8/mjsunit/setter-on-constructor-prototype.js deleted file mode 100644 index a74f7da7b36..00000000000 --- a/implementation-contributed/v8/mjsunit/setter-on-constructor-prototype.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function RunTest(ensure_fast_case) { - function C1() { - this.x = 23; - }; - C1.prototype = { set x(value) { this.y = 23; } }; - if (ensure_fast_case) { - %ToFastProperties(C1.prototype); - } - - for (var i = 0; i < 10; i++) { - var c1 = new C1(); - assertEquals("undefined", typeof c1.x); - assertEquals(23, c1.y); - } - - - function C2() { - this.x = 23; - }; - C2.prototype = { }; - C2.prototype.__proto__ = { set x(value) { this.y = 23; } }; - if (ensure_fast_case) { - %ToFastProperties(C2.prototype.__proto__) - } - - for (var i = 0; i < 10; i++) { - var c2 = new C2(); - assertEquals("undefined", typeof c2.x); - assertEquals(23, c2.y); - } - - - function C3() { - this.x = 23; - }; - C3.prototype = { }; - C3.prototype.__defineSetter__('x', function(value) { this.y = 23; }); - if (ensure_fast_case) { - %ToFastProperties(C3.prototype); - } - - for (var i = 0; i < 10; i++) { - var c3 = new C3(); - assertEquals("undefined", typeof c3.x); - assertEquals(23, c3.y); - } - - - function C4() { - this.x = 23; - }; - C4.prototype = { }; - C4.prototype.__proto__ = { }; - C4.prototype.__proto__.__defineSetter__('x', function(value) { this.y = 23; }); - if (ensure_fast_case) { - %ToFastProperties(C4.prototype.__proto__); - } - - for (var i = 0; i < 10; i++) { - var c4 = new C4(); - assertEquals("undefined", typeof c4.x); - assertEquals(23, c4.y); - } - - - function D() { - this.x = 23; - }; - D.prototype = 1; - if (ensure_fast_case) { - %ToFastProperties(D.prototype); - } - - for (var i = 0; i < 10; i++) { - var d = new D(); - assertEquals(23, d.x); - assertEquals("undefined", typeof d.y); - } -} - -RunTest(false); -RunTest(true); diff --git a/implementation-contributed/v8/mjsunit/setters-on-elements.js b/implementation-contributed/v8/mjsunit/setters-on-elements.js deleted file mode 100644 index 48fa33b5fe5..00000000000 --- a/implementation-contributed/v8/mjsunit/setters-on-elements.js +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --noalways-opt --opt - -// It's nice to run this in other browsers too. -var standalone = false; -if (standalone) { - assertTrue = function(val) { - if (val != true) { - print("FAILURE"); - } - } - - assertFalse = function(val) { - if (val != false) { - print("FAILURE"); - } - } - - assertEquals = function(expected, val) { - if (expected !== val) { - print("FAILURE"); - } - } - - empty_func = function(name) { } - assertUnoptimized = empty_func; - assertOptimized = empty_func; - - optimize = empty_func; - clearFunctionTypeFeedback = empty_func; - deoptimizeFunction = empty_func; -} else { - optimize = function(name) { - %OptimizeFunctionOnNextCall(name); - } - clearFunctionTypeFeedback = function(name) { - %ClearFunctionFeedback(name); - } - deoptimizeFunction = function(name) { - %DeoptimizeFunction(name); - } -} - -function base_setter_test(create_func, index, store_value) { - var calls = 0; - - // Testcase: setter in prototype chain - foo = function(a) { a[index] = store_value; } - var a = create_func(); - var ap = []; - ap.__defineSetter__(index, function() { calls++; }); - - foo(a); - foo(a); - foo(a); - delete a[index]; - - assertEquals(0, calls); - a.__proto__ = ap; - foo(a); - assertEquals(1, calls); - optimize(foo); - foo(a); - assertEquals(2, calls); - assertOptimized(foo); - - // Testcase: setter added on prototype chain object already in place. - clearFunctionTypeFeedback(foo); - deoptimizeFunction(foo); - clearFunctionTypeFeedback(foo); - calls = 0; - a = create_func(); - var apap = []; - a.__proto__ = apap; - foo(a); - foo(a); - foo(a); - delete a[index]; - apap.__defineSetter__(index, function() { calls++; }); - foo(a); - foo(a); - foo(a); - assertEquals(3, calls); - - // Testcase: setter "deep" in prototype chain. - clearFunctionTypeFeedback(foo); - deoptimizeFunction(foo); - clearFunctionTypeFeedback(foo); - calls = 0; - - a = create_func(); - var ap2 = []; - a.__proto__ = ap2; - foo(a); - foo(a); - foo(a); - delete a[index]; - - assertEquals(0, calls); - - ap2.__proto__ = ap; // "sneak" in a callback. - // The sneak case should be caught by unoptimized code too. - assertUnoptimized(foo); - foo(a); - foo(a); - foo(a); - assertEquals(3, calls); - - // Testcase: setter added after optimization (feedback is monomorphic) - clearFunctionTypeFeedback(foo); - deoptimizeFunction(foo); - clearFunctionTypeFeedback(foo); - calls = 0; - - a = create_func(); - ap2 = []; - a.__proto__ = ap2; - foo(a); - foo(a); - foo(a); - optimize(foo); - foo(a); - assertOptimized(foo); - delete a[index]; - ap2.__proto__ = ap; - foo(a); - assertUnoptimized(foo); // map shape change should deopt foo. - assertEquals(1, calls); - - // Testcase: adding additional setters to a prototype chain that already has - // one shouldn't deopt anything. (ie, we aren't changing the map shape). - clearFunctionTypeFeedback(foo); - calls = 0; - - a = create_func(); - a.__proto__ = ap2; - bar = function(a) { a[index+1] = store_value; } - bar(a); - bar(a); - bar(a); // store should be generic - optimize(bar); - bar(a); - assertOptimized(bar); - assertEquals(0, calls); - delete a[index+1]; - ap2.__defineSetter__(index+1, function() { calls++; }); - bar(a); - assertOptimized(bar); - assertEquals(1, calls); -} - -// Verify that map transitions don't confuse us. -create_func_smi = function() { return [,,,,,,5]; } -create_func_double = function() { return [0,,3.2,,,,5.5]; } -create_func_fast = function() { return [,,,,,,true]; } -create_func_dictionary = function() { var a = []; a.length = 100000; return a; } - -var cf = [create_func_smi, - create_func_double, - create_func_fast, - create_func_dictionary]; - -var values = [3, 3.5, true]; - -for(var c = 0; c < cf.length; c++) { - for(var s = 0; s < values.length; s++) { - base_setter_test(cf[c], 0, values[s]); - base_setter_test(cf[c], 1, values[s]); - } -} diff --git a/implementation-contributed/v8/mjsunit/shared-function-tier-up-turbo.js b/implementation-contributed/v8/mjsunit/shared-function-tier-up-turbo.js deleted file mode 100644 index 0d23b4f8436..00000000000 --- a/implementation-contributed/v8/mjsunit/shared-function-tier-up-turbo.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --mark-shared-functions-for-tier-up --allow-natives-syntax -// Flags: --opt --no-always-opt --turbo-filter=* - -// If we are always or never optimizing it is useless. -if (isNeverOptimizeLiteMode()) { - print("Warning: skipping test that requires optimization in Lite mode."); - quit(0); -} -assertFalse(isAlwaysOptimize()); -assertFalse(isNeverOptimize()); - -(function() { - var sum = 0; - var i = 0; - for (var i = 0; i < 3; ++i) { - var f = function(x) { - return 2 * x; - } - sum += f(i); - - if (i == 1) { - // f must be interpreted code. - assertTrue(isInterpreted(f)); - - // Run twice (i = 0, 1), then tier-up. - %OptimizeFunctionOnNextCall(f); - } else if (i == 2) { - // Tier-up at i = 2 should go up to turbofan. - assertTrue(isTurboFanned(f)); - } - } -})() diff --git a/implementation-contributed/v8/mjsunit/shift-for-integer-div.js b/implementation-contributed/v8/mjsunit/shift-for-integer-div.js deleted file mode 100644 index 92642428796..00000000000 --- a/implementation-contributed/v8/mjsunit/shift-for-integer-div.js +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -function divp4(x) { - return x / 4; -} - -divp4(8); -divp4(8); -%OptimizeFunctionOnNextCall(divp4); -assertEquals(2, divp4(8)); -assertEquals(0.5, divp4(2)); - - -function divn4(x) { - return x / (-4); -} - -divn4(8); -divn4(8); -%OptimizeFunctionOnNextCall(divn4); -assertEquals(-2, divn4(8)); -// Check for (0 / -x) -assertEquals(-0, divn4(0)); - - -// Check for (kMinInt / -1) -function divn1(x) { - return x / (-1); -} - -var two_31 = 1 << 31; -divn1(2); -divn1(2); -%OptimizeFunctionOnNextCall(divn1); -assertEquals(-2, divn1(2)); -assertEquals(-two_31, divn1(two_31)); - - -//Check for truncating to int32 case -function divp4t(x) { - return (x / 4) | 0; -} - -divp4t(8); -divp4t(8); -%OptimizeFunctionOnNextCall(divp4t); -assertEquals(-1, divp4t(-5)); -assertEquals(1, divp4t(5)); -assertOptimized(divp4t); - -function divn4t(x) { - return (x / -4) | 0; -} - -divn4t(8); -divn4t(8); -%OptimizeFunctionOnNextCall(divn4t); -assertEquals(1, divn4t(-5)); -assertEquals(-1, divn4t(5)); -assertOptimized(divn4t); - -// Check kMinInt case. -function div_by_two(x) { - return (x / 2) | 0; -} - -div_by_two(12); -div_by_two(34); -%OptimizeFunctionOnNextCall(div_by_two); -div_by_two(56); -assertEquals(-(1 << 30), div_by_two(1 << 31)); diff --git a/implementation-contributed/v8/mjsunit/shifts.js b/implementation-contributed/v8/mjsunit/shifts.js deleted file mode 100644 index 37ba9d17c1b..00000000000 --- a/implementation-contributed/v8/mjsunit/shifts.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// test a few corners cases with shifts - -// The result of the shift is not a Smi. -var s1 = 0x3fffffff; -assertEquals(0x7fffffff, (s1 << 1) + 1); - -// The result of the shift is not a Smi. -var s2 = -1; -assertEquals(0xffffffff, (s2 >>> 0)); diff --git a/implementation-contributed/v8/mjsunit/short-circuit-boolean.js b/implementation-contributed/v8/mjsunit/short-circuit-boolean.js deleted file mode 100644 index df40c2232b4..00000000000 --- a/implementation-contributed/v8/mjsunit/short-circuit-boolean.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test some code paths through the compiler for short-circuited -// boolean expressions. - -function andTest0() { - var a = 0; - // Left subexpression is known false at compile time. - return a != 0 && "failure"; -} - -assertFalse(andTest0()); - - -function orTest0() { - var a = 0; - // Left subexpression is known true at compile time. - return a == 0 || "failure"; -} - -assertTrue(orTest0()); diff --git a/implementation-contributed/v8/mjsunit/simple-constructor.js b/implementation-contributed/v8/mjsunit/simple-constructor.js deleted file mode 100644 index 391ef3d6d14..00000000000 --- a/implementation-contributed/v8/mjsunit/simple-constructor.js +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function props(x) { - var array = []; - for (var p in x) array.push(p); - return array.sort(); -} - -function f1() { - this.x = 1; -} - -function f2(x) { - this.x = x; -} - -function f3(x) { - this.x = x; - this.y = 1; - this.z = f1; -} - -function f4(x) { - this.x = x; - this.y = 1; - if (x == 1) return; - this.z = f1; -} - -o1_1 = new f1(); -assertEquals(1, o1_1.x, "1"); -o1_2 = new f1(); -assertEquals(1, o1_1.x, "2"); -assertArrayEquals(["x"], props(o1_1), "3"); -assertArrayEquals(["x"], props(o1_2), "4"); - -o2_1 = new f2(0); -o2_2 = new f2(0); -assertArrayEquals(["x"], props(o2_1)); -assertArrayEquals(["x"], props(o2_2)); - -o3_1 = new f3(0); -o3_2 = new f3(0); -assertArrayEquals(["x", "y", "z"], props(o3_1)); -assertArrayEquals(["x", "y", "z"], props(o3_2)); - -o4_0_1 = new f4(0); -o4_0_2 = new f4(0); -assertArrayEquals(["x", "y", "z"], props(o4_0_1)); -assertArrayEquals(["x", "y", "z"], props(o4_0_2)); - -o4_1_1 = new f4(1); -o4_1_2 = new f4(1); -assertArrayEquals(["x", "y"], props(o4_1_1)); -assertArrayEquals(["x", "y"], props(o4_1_2)); - -function f5(x, y) { - this.x = x; - this.y = y; -} - -function f6(x, y) { - this.y = y; - this.x = x; -} - -function f7(x, y, z) { - this.x = x; - this.y = y; -} - -function testArgs(fun) { - obj = new fun(); - assertArrayEquals(["x", "y"], props(obj)); - assertEquals(void 0, obj.x); - assertEquals(void 0, obj.y); - - obj = new fun("x"); - assertArrayEquals(["x", "y"], props(obj)); - assertEquals("x", obj.x); - assertEquals(void 0, obj.y); - - obj = new fun("x", "y"); - assertArrayEquals(["x", "y"], props(obj)); - assertEquals("x", obj.x); - assertEquals("y", obj.y); - - obj = new fun("x", "y", "z"); - assertArrayEquals(["x", "y"], props(obj)); - assertEquals("x", obj.x); - assertEquals("y", obj.y); -} - -for (var i = 0; i < 10; i++) { - testArgs(f5); - testArgs(f6); - testArgs(f7); -} - -function g(){ - this.x=1 -} - -o = new g(); -assertEquals(1, o.x); -o = new g(); -assertEquals(1, o.x); -g.prototype = {y:2} -o = new g(); -assertEquals(1, o.x); -assertEquals(2, o.y); -o = new g(); -assertEquals(1, o.x); -assertEquals(2, o.y); diff --git a/implementation-contributed/v8/mjsunit/sin-cos.js b/implementation-contributed/v8/mjsunit/sin-cos.js deleted file mode 100644 index 7af471d3c03..00000000000 --- a/implementation-contributed/v8/mjsunit/sin-cos.js +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test Math.sin and Math.cos. - -// Flags: --allow-natives-syntax --opt - -assertEquals("-Infinity", String(1/Math.sin(-0))); -assertEquals(1, Math.cos(-0)); -assertEquals("-Infinity", String(1/Math.tan(-0))); - -// Assert that minus zero does not cause deopt. -function no_deopt_on_minus_zero(x) { - return Math.sin(x) + Math.cos(x) + Math.tan(x); -} - -no_deopt_on_minus_zero(1); -no_deopt_on_minus_zero(1); -%OptimizeFunctionOnNextCall(no_deopt_on_minus_zero); -no_deopt_on_minus_zero(-0); -assertOptimized(no_deopt_on_minus_zero); - - -function sinTest() { - assertEquals(0, Math.sin(0)); - assertEquals(1, Math.sin(Math.PI / 2)); -} - -function cosTest() { - assertEquals(1, Math.cos(0)); - assertEquals(-1, Math.cos(Math.PI)); -} - -sinTest(); -cosTest(); - -// By accident, the slow case for sine and cosine were both sine at -// some point. This is a regression test for that issue. -var x = Math.pow(2, 30); -assertTrue(Math.sin(x) != Math.cos(x)); - -// Ensure that sine and log are not the same. -x = 0.5; -assertTrue(Math.sin(x) != Math.log(x)); - -// Test against approximation by series. -var factorial = [1]; -var accuracy = 50; -for (var i = 1; i < accuracy; i++) { - factorial[i] = factorial[i-1] * i; -} - -// We sum up in the reverse order for higher precision, as we expect the terms -// to grow smaller for x reasonably close to 0. -function precision_sum(array) { - var result = 0; - while (array.length > 0) { - result += array.pop(); - } - return result; -} - -function sin(x) { - var sign = 1; - var x2 = x*x; - var terms = []; - for (var i = 1; i < accuracy; i += 2) { - terms.push(sign * x / factorial[i]); - x *= x2; - sign *= -1; - } - return precision_sum(terms); -} - -function cos(x) { - var sign = -1; - var x2 = x*x; - x = x2; - var terms = [1]; - for (var i = 2; i < accuracy; i += 2) { - terms.push(sign * x / factorial[i]); - x *= x2; - sign *= -1; - } - return precision_sum(terms); -} - -function abs_error(fun, ref, x) { - return Math.abs(ref(x) - fun(x)); -} - -var test_inputs = []; -for (var i = -10000; i < 10000; i += 177) test_inputs.push(i/1257); -var epsilon = 0.0000001; - -test_inputs.push(0); -test_inputs.push(0 + epsilon); -test_inputs.push(0 - epsilon); -test_inputs.push(Math.PI/2); -test_inputs.push(Math.PI/2 + epsilon); -test_inputs.push(Math.PI/2 - epsilon); -test_inputs.push(Math.PI); -test_inputs.push(Math.PI + epsilon); -test_inputs.push(Math.PI - epsilon); -test_inputs.push(- 2*Math.PI); -test_inputs.push(- 2*Math.PI + epsilon); -test_inputs.push(- 2*Math.PI - epsilon); - -var squares = []; -for (var i = 0; i < test_inputs.length; i++) { - var x = test_inputs[i]; - var err_sin = abs_error(Math.sin, sin, x); - var err_cos = abs_error(Math.cos, cos, x) - assertEqualsDelta(0, err_sin, 1E-13); - assertEqualsDelta(0, err_cos, 1E-13); - squares.push(err_sin*err_sin + err_cos*err_cos); -} - -// Sum squares up by adding them pairwise, to avoid losing precision. -while (squares.length > 1) { - var reduced = []; - if (squares.length % 2 == 1) reduced.push(squares.pop()); - // Remaining number of elements is even. - while(squares.length > 1) reduced.push(squares.pop() + squares.pop()); - squares = reduced; -} - -var err_rms = Math.sqrt(squares[0] / test_inputs.length / 2); -assertEqualsDelta(0, err_rms, 1E-14); - -assertEquals(-1, Math.cos({ valueOf: function() { return Math.PI; } })); -assertEquals(0, Math.sin("0x00000")); -assertEquals(1, Math.cos("0x00000")); -assertTrue(isNaN(Math.sin(Infinity))); -assertTrue(isNaN(Math.cos("-Infinity"))); -assertTrue(Math.tan(Math.PI/2) > 1e16); -assertTrue(Math.tan(-Math.PI/2) < -1e16); -assertEquals("-Infinity", String(1/Math.sin("-0"))); - -// Assert that the remainder after division by pi is reasonably precise. -function assertError(expected, x, epsilon) { - assertTrue(Math.abs(x - expected) < epsilon); -} - -assertEqualsDelta(0.9367521275331447, Math.cos(1e06), 1e-15); -assertEqualsDelta(0.8731196226768560, Math.cos(1e10), 1e-08); -assertEqualsDelta(0.9367521275331447, Math.cos(-1e06), 1e-15); -assertEqualsDelta(0.8731196226768560, Math.cos(-1e10), 1e-08); -assertEqualsDelta(-0.3499935021712929, Math.sin(1e06), 1e-15); -assertEqualsDelta(-0.4875060250875106, Math.sin(1e10), 1e-08); -assertEqualsDelta(0.3499935021712929, Math.sin(-1e06), 1e-15); -assertEqualsDelta(0.4875060250875106, Math.sin(-1e10), 1e-08); -assertEqualsDelta(0.7796880066069787, Math.sin(1e16), 1e-05); -assertEqualsDelta(-0.6261681981330861, Math.cos(1e16), 1e-05); - -// Assert that remainder calculation terminates. -for (var i = -1024; i < 1024; i++) { - assertFalse(isNaN(Math.sin(Math.pow(2, i)))); -} - -assertFalse(isNaN(Math.cos(1.57079632679489700))); -assertFalse(isNaN(Math.cos(-1e-100))); -assertFalse(isNaN(Math.cos(-1e-323))); - -// Tests for specific values expected from the fdlibm implementation. - -var two_32 = Math.pow(2, -32); -var two_28 = Math.pow(2, -28); - -// Tests for Math.sin for |x| < pi/4 -assertEquals(Infinity, 1/Math.sin(+0.0)); -assertEquals(-Infinity, 1/Math.sin(-0.0)); -// sin(x) = x for x < 2^-27 -assertEquals(two_32, Math.sin(two_32)); -assertEquals(-two_32, Math.sin(-two_32)); -// sin(pi/8) = sqrt(sqrt(2)-1)/2^(3/4) -assertEquals(0.3826834323650898, Math.sin(Math.PI/8)); -assertEquals(-0.3826834323650898, -Math.sin(Math.PI/8)); - -// Tests for Math.cos for |x| < pi/4 -// cos(x) = 1 for |x| < 2^-27 -assertEquals(1, Math.cos(two_32)); -assertEquals(1, Math.cos(-two_32)); -// Test KERNELCOS for |x| < 0.3. -// cos(pi/20) = sqrt(sqrt(2)*sqrt(sqrt(5)+5)+4)/2^(3/2) -assertEquals(0.9876883405951378, Math.cos(Math.PI/20)); -// Test KERNELCOS for x ~= 0.78125 -assertEquals(0.7100335477927638, Math.cos(0.7812504768371582)); -assertEquals(0.7100338835660797, Math.cos(0.78125)); -// Test KERNELCOS for |x| > 0.3. -// cos(pi/8) = sqrt(sqrt(2)+1)/2^(3/4) -assertEquals(0.9238795325112867, Math.cos(Math.PI/8)); -// Test KERNELTAN for |x| < 0.67434. -assertEquals(0.9238795325112867, Math.cos(-Math.PI/8)); - -// Tests for Math.tan for |x| < pi/4 -assertEquals(Infinity, 1/Math.tan(0.0)); -assertEquals(-Infinity, 1/Math.tan(-0.0)); -// tan(x) = x for |x| < 2^-28 -assertEquals(two_32, Math.tan(two_32)); -assertEquals(-two_32, Math.tan(-two_32)); -// Test KERNELTAN for |x| > 0.67434. -assertEquals(0.8211418015898941, Math.tan(11/16)); -assertEquals(-0.8211418015898941, Math.tan(-11/16)); -assertEquals(0.41421356237309503, Math.tan(Math.PI / 8)); -// crbug/427468 -assertEquals(0.7993357819992383, Math.tan(0.6743358)); - -// Tests for Math.sin. -assertEquals(0.479425538604203, Math.sin(0.5)); -assertEquals(-0.479425538604203, Math.sin(-0.5)); -assertEquals(1, Math.sin(Math.PI/2)); -assertEquals(-1, Math.sin(-Math.PI/2)); -// Test that Math.sin(Math.PI) != 0 since Math.PI is not exact. -assertEquals(1.2246467991473532e-16, Math.sin(Math.PI)); -assertEquals(-7.047032979958965e-14, Math.sin(2200*Math.PI)); -// Test Math.sin for various phases. -assertEquals(-0.7071067811865477, Math.sin(7/4 * Math.PI)); -assertEquals(0.7071067811865474, Math.sin(9/4 * Math.PI)); -assertEquals(0.7071067811865483, Math.sin(11/4 * Math.PI)); -assertEquals(-0.7071067811865479, Math.sin(13/4 * Math.PI)); -assertEquals(-3.2103381051568376e-11, Math.sin(1048576/4 * Math.PI)); - -// Tests for Math.cos. -assertEquals(1, Math.cos(two_28)); -// Cover different code paths in KERNELCOS. -assertEquals(0.9689124217106447, Math.cos(0.25)); -assertEquals(0.8775825618903728, Math.cos(0.5)); -assertEquals(0.7073882691671998, Math.cos(0.785)); -// Test that Math.cos(Math.PI/2) != 0 since Math.PI is not exact. -assertEquals(6.123233995736766e-17, Math.cos(Math.PI/2)); -// Test Math.cos for various phases. -assertEquals(0.7071067811865474, Math.cos(7/4 * Math.PI)); -assertEquals(0.7071067811865477, Math.cos(9/4 * Math.PI)); -assertEquals(-0.7071067811865467, Math.cos(11/4 * Math.PI)); -assertEquals(-0.7071067811865471, Math.cos(13/4 * Math.PI)); -assertEquals(0.9367521275331447, Math.cos(1000000)); -assertEquals(-3.435757038074824e-12, Math.cos(1048575/2 * Math.PI)); - -// Tests for Math.tan. -assertEquals(two_28, Math.tan(two_28)); -// Test that Math.tan(Math.PI/2) != Infinity since Math.PI is not exact. -assertEquals(1.633123935319537e16, Math.tan(Math.PI/2)); -// Cover different code paths in KERNELTAN (tangent and cotangent) -assertEquals(0.5463024898437905, Math.tan(0.5)); -assertEquals(2.0000000000000027, Math.tan(1.107148717794091)); -assertEquals(-1.0000000000000004, Math.tan(7/4*Math.PI)); -assertEquals(0.9999999999999994, Math.tan(9/4*Math.PI)); -assertEquals(-6.420676210313675e-11, Math.tan(1048576/2*Math.PI)); -assertEquals(2.910566692924059e11, Math.tan(1048575/2*Math.PI)); - -// Test Hayne-Panek reduction. -assertEquals(0.377820109360752e0, Math.sin(Math.pow(2, 120))); -assertEquals(-0.9258790228548379e0, Math.cos(Math.pow(2, 120))); -assertEquals(-0.40806638884180424e0, Math.tan(Math.pow(2, 120))); -assertEquals(-0.377820109360752e0, Math.sin(-Math.pow(2, 120))); -assertEquals(-0.9258790228548379e0, Math.cos(-Math.pow(2, 120))); -assertEquals(0.40806638884180424e0, Math.tan(-Math.pow(2, 120))); diff --git a/implementation-contributed/v8/mjsunit/skipping-inner-functions-bailout.js b/implementation-contributed/v8/mjsunit/skipping-inner-functions-bailout.js deleted file mode 100644 index f2b6c5bc41e..00000000000 --- a/implementation-contributed/v8/mjsunit/skipping-inner-functions-bailout.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --preparser-scope-analysis - -// Tests for cases where PreParser must bail out of creating data for skipping -// inner functions, since it cannot replicate the Scope structure created by -// Parser. - -function TestBailoutBecauseOfSloppyEvalInArrowParams() { - let bailout = (a = function() {}, b = eval('')) => 0 - bailout(); - - function not_skippable() {} -} -TestBailoutBecauseOfSloppyEvalInArrowParams(); - -function TestBailoutBecauseOfSloppyEvalInArrowParams2() { - let bailout = (a = function() {}, b = eval('')) => {} - bailout(); - - function not_skippable() {} -} -TestBailoutBecauseOfSloppyEvalInArrowParams2(); - -function TestBailoutBecauseOfSloppyEvalInParams() { - function bailout(a = function() {}, b = eval('')) { - function not_skippable() {} - } - bailout(); - - function not_skippable_either() {} -} -TestBailoutBecauseOfSloppyEvalInParams(); - - // Test bailing out from 2 places. -function TestMultiBailout1() { - function bailout(a = function() {}, b = eval('')) { - function not_skippable() {} - } - bailout(); - - function bailout_too(a = function() {}, b = eval('')) { - function not_skippable_either() {} - } - bailout_too(); -} -TestMultiBailout1(); - -function TestMultiBailout2() { - function f(a = function() {}, b = eval('')) { - function not_skippable() {} - } - f(); - - function not_skippable_either() { - function bailout_too(a = function() {}, b = eval('')) { - function inner_not_skippable() {} - } - bailout_too(); - } - not_skippable_either(); -} -TestMultiBailout2(); - -function TestMultiBailout3() { - function bailout(a = function() {}, b = eval('')) { - function bailout_too(a = function() {}, b = eval('')) { - function not_skippable() {} - } - bailout_too(); - } - bailout(); - - function not_skippable_either() {} -} -TestMultiBailout3(); - -// Regression test for -// https://bugs.chromium.org/p/chromium/issues/detail?id=761980. The conditions -// triggering a bailout occur in a context where we're not generating data -// anyway (inside an arrow function). (This needs to be at top level.) -x => { (y=eval()) => {} } diff --git a/implementation-contributed/v8/mjsunit/skipping-inner-functions.js b/implementation-contributed/v8/mjsunit/skipping-inner-functions.js deleted file mode 100644 index fba9a3e2776..00000000000 --- a/implementation-contributed/v8/mjsunit/skipping-inner-functions.js +++ /dev/null @@ -1,379 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --preparser-scope-analysis --enable-slow-asserts - -(function TestBasicSkipping() { - var result = 0; - - function lazy(ctxt_alloc_param) { - var ctxt_alloc_var = 10; - function skip_me() { - result = ctxt_alloc_param + ctxt_alloc_var; - } - return skip_me; - } - // Test that parameters and variables of the outer function get context - // allocated even if we skip the inner function. - lazy(9)(); - assertEquals(19, result); -})(); - -(function TestSkippingFunctionWithEval() { - var result = 0; - - function lazy(ctxt_alloc_param) { - var ctxt_alloc_var = 10; - function skip_me() { - eval('result = ctxt_alloc_param + ctxt_alloc_var'); - } - return skip_me; - } - // Test that parameters and variables of the outer function get context - // allocated even if we skip the inner function. - lazy(9)(); - assertEquals(19, result); -})(); - -(function TestCtxtAllocatingNonSimpleParams1() { - var result = 0; - - function lazy([other_param1, ctxt_alloc_param, other_param2]) { - function skip_me() { - result = ctxt_alloc_param; - } - return skip_me; - } - // Test that parameters and variables of the outer function get context - // allocated even if we skip the inner function. - lazy([30, 29, 28])(); - assertEquals(29, result); -})(); - -(function TestCtxtAllocatingNonSimpleParams2() { - var result = 0; - - function lazy({a: other_param1, b: ctxt_alloc_param, c: other_param2}) { - function skip_me() { - result = ctxt_alloc_param; - } - return skip_me; - } - // Test that parameters and variables of the outer function get context - // allocated even if we skip the inner function. - lazy({a: 31, b: 32, c: 33})(); - assertEquals(32, result); -})(); - -(function TestCtxtAllocatingNonSimpleParams3() { - var result = 0; - - function lazy(...ctxt_alloc_param) { - function skip_me() { - result = ctxt_alloc_param; - } - return skip_me; - } - // Test that parameters and variables of the outer function get context - // allocated even if we skip the inner function. - lazy(34, 35)(); - assertEquals([34, 35], result); -})(); - -// Skippable top level functions. -var result = 0; -function lazy_top_level(ctxt_alloc_param) { - let ctxt_alloc_var = 24; - function skip_me() { - result = ctxt_alloc_param + ctxt_alloc_var; - } - skip_me(); -} - -lazy_top_level(10); -assertEquals(34, result); - -// Tests for using a function name in an inner function. -var TestUsingNamedExpressionName1 = function this_is_the_name() { - function inner() { - this_is_the_name; - } - inner(); -} -TestUsingNamedExpressionName1(); - -function TestUsingNamedExpressionName2() { - let f = function this_is_the_name() { - function inner() { - this_is_the_name; - } - inner(); - } - f(); -} -TestUsingNamedExpressionName2(); - -function TestSkippedFunctionInsideLoopInitializer() { - let saved_func; - for (let i = 0, f = function() { return i }; i < 1; ++i) { - saved_func = f; - } - assertEquals(0, saved_func()); -} -TestSkippedFunctionInsideLoopInitializer(); - -(function TestSkippedFunctionWithParameters() { - var result = 0; - - function lazy(ctxt_alloc_param) { - var ctxt_alloc_var = 10; - function skip_me(param1, param2) { - result = ctxt_alloc_param + ctxt_alloc_var + param1 + param2; - } - return skip_me; - } - lazy(9)(8, 7); - assertEquals(34, result); -})(); - -function TestSkippingDeeperLazyFunctions() { - let result = 0; - function inner_lazy(ctxt_alloc_param) { - let ctxt_alloc_var = 13; - function skip_me() { - result = ctxt_alloc_param + ctxt_alloc_var; - } - return skip_me; - } - let f = inner_lazy(12); - f(); - assertEquals(25, result); -} - -TestSkippingDeeperLazyFunctions(); - -function TestEagerFunctionsBetweenLazyFunctions() { - let result = 0; - // We produce one data set for TestEagerFunctionsBetweenLazyFunctions and - // another one for inner. The variable data for eager belongs to the former - // data set. - let ctxt_allocated1 = 3; - (function eager() { - let ctxt_allocated2 = 4; - function inner() { - result = ctxt_allocated1 + ctxt_allocated2; - } - return inner; - })()(); - assertEquals(7, result); -} - -TestEagerFunctionsBetweenLazyFunctions(); - -function TestEagerNotIifeFunctionsBetweenLazyFunctions() { - let result = 0; - // We produce one data set for TestEagerFunctionsBetweenLazyFunctions and - // another one for inner. The variable data for eager belongs to the former - // data set. - let ctxt_allocated1 = 3; - (function eager_not_iife() { - let ctxt_allocated2 = 4; - function inner() { - result = ctxt_allocated1 + ctxt_allocated2; - } - return inner; - }); // Function not called; not an iife. - // This is just a regression test. We cannot test that the context allocation - // was done correctly (since there's no way to call eager_not_iife), but code - // like this used to trigger some DCHECKs. -} - -TestEagerNotIifeFunctionsBetweenLazyFunctions(); - -// Regression test for functions inside a lazy arrow function. (Only top-level -// arrow functions are lazy, so this cannot be wrapped in a function.) -result = 0; -let f1 = (ctxt_alloc_param) => { - let ctxt_alloc_var = 10; - function inner() { - result = ctxt_alloc_param + ctxt_alloc_var; - } - return inner; -} -f1(9)(); -assertEquals(19, result); - -function TestStrictEvalInParams() { - "use strict"; - var result = 0; - - function lazy(a = function() { return 2; }, b = eval('3')) { - function skip_me() { - result = a() + b; - } - return skip_me; - } - lazy()(); - assertEquals(5, result); - - function not_skippable_either() {} -} - -TestStrictEvalInParams(); - -function TestSloppyEvalInFunctionWithComplexParams() { - var result = 0; - - function lazy1(ctxt_alloc_param = 2) { - var ctxt_alloc_var = 3; - function skip_me() { - result = ctxt_alloc_param + ctxt_alloc_var; - } - eval(''); - return skip_me; - } - lazy1()(); - assertEquals(5, result); - - function lazy2(ctxt_alloc_param = 4) { - var ctxt_alloc_var = 5; - function skip_me() { - eval('result = ctxt_alloc_param + ctxt_alloc_var;'); - } - return skip_me; - } - lazy2()(); - assertEquals(9, result); -} - -TestSloppyEvalInFunctionWithComplexParams(); - -function TestSkippableFunctionInForOfHeader() { - var c; - function inner() { - for (let [a, b = c = function() { return a; }] of [[10]]) { - } - } - inner(); - var result = c(); - assertEquals(10, result); -} - -TestSkippableFunctionInForOfHeader(); - -function TestSkippableFunctionInForOfBody() { - var c; - function inner() { - for (let [a, b] of [[10, 11]]) { - c = function f() { - return a + b; - } - } - } - inner(); - var result = c(); - assertEquals(21, result); -} - -TestSkippableFunctionInForOfBody(); - - -function TestSkippableFunctionInForOfHeaderAndBody() { - var c1; - var c2; - function inner() { - for (let [a, b = c1 = function() { return a; }] of [[10]]) { - c2 = function f() { - return a + 1; - } - } - } - inner(); - var result = c1() + c2(); - assertEquals(21, result); -} - -TestSkippableFunctionInForOfHeaderAndBody(); - -(function TestSkippableGeneratorInSloppyBlock() { - var result = 0; - - function lazy(ctxt_alloc_param) { - var ctxt_alloc_var = 10; - { - function *skip_me() { - result = ctxt_alloc_param + ctxt_alloc_var; - yield 3; - } - return skip_me; - } - } - // Test that parameters and variables of the outer function get context - // allocated even if we skip the inner function. - assertEquals(3, lazy(9)().next().value); - assertEquals(19, result); -})(); - -(function TestRestoringDataToAsyncArrowFunctionWithNonSimpleParams_1() { - // Regression test for - // https://bugs.chromium.org/p/chromium/issues/detail?id=765532 - function lazy() { - // The arrow function is not skippable, but we need to traverse its scopes - // and restore data to them. - async(a=0) => { const d = 0; } - function skippable() {} - } - lazy(); -})(); - -(function TestRestoringDataToAsyncArrowFunctionWithNonSimpleParams_2() { - // Regression test for - // https://bugs.chromium.org/p/chromium/issues/detail?id=765532 - function lazy() { - // The arrow function is not skippable, but we need to traverse its scopes - // and restore data to them. - async(...a) => { const d = 0; } - function skippable() {} - } - lazy(); -})(); - -(function TestSloppyBlockFunctionShadowingCatchVariable() { - // Regression test for - // https://bugs.chromium.org/p/chromium/issues/detail?id=771474 - function lazy() { - try { - } catch (my_var) { - if (false) { - function my_var() { } - } - } - } - lazy(); -})(); - - -(function TestLazinessDecisionWithDefaultConstructors() { - // Regression test for - // https://bugs.chromium.org/p/chromium/issues/detail?id=773576 - - // The problem was that Parser and PreParser treated default constructors - // differently, and that threw off the "next / previous function is likely - // called" logic. - - function lazy(p = (function() {}, class {}, function() {}, class { method1() { } })) { } - lazy(); -})(); - -(function TestOneByteTwoByteMismatch() { - // Regression test for - // https://bugs.chromium.org/p/v8/issues/detail?id=7428 - - let name = 'weird_string\u2653'.slice(0, 12); - let o = {}; - o[name] = null; - var x; - eval('x = function weird_string() { function skip() {} };'); - x(); -})(); diff --git a/implementation-contributed/v8/mjsunit/smi-mul-const.js b/implementation-contributed/v8/mjsunit/smi-mul-const.js deleted file mode 100644 index e5255014dc6..00000000000 --- a/implementation-contributed/v8/mjsunit/smi-mul-const.js +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --noalways-opt - -function check(func, input, expected) { - func(-1); - func(-1); - %OptimizeFunctionOnNextCall(func); - assertEquals(expected, func(input)); - assertOptimized(func); -} - -function mul_by_neg_1(a) { return a * -1; } -function mul_by_0(a) { return a * 0; } -function mul_by_1(a) { return a * 1; } -function mul_by_2(a) { return a * 2; } - -check(mul_by_neg_1, 2, -2); -check(mul_by_0, 2, 0); -check(mul_by_1, 2, 2); -check(mul_by_2, 2, 4); - -function limit_range(a) { - // Limit the range of 'a' to enable no-overflow optimizations. - return Math.max(Math.min(a | 0, 10), -10); -} - -function mul_by_neg_127(a) { return limit_range(a) * -127; } -function mul_by_neg_128(a) { return limit_range(a) * -128; } -function mul_by_neg_129(a) { return limit_range(a) * -129; } -function mul_by_1023(a) { return limit_range(a) * 1023; } -function mul_by_1024(a) { return limit_range(a) * 1024; } -function mul_by_1025(a) { return limit_range(a) * 1025; } - -check(mul_by_neg_127, 2, -254); -check(mul_by_neg_128, 2, -256); -check(mul_by_neg_129, 2, -258); -check(mul_by_1023, 2, 2046); -check(mul_by_1024, 2, 2048); -check(mul_by_1025, 2, 2050); - -// Deopt on minus zero. -assertEquals(-0, mul_by_neg_128(0)); -assertUnoptimized(mul_by_neg_128); -assertEquals(-0, mul_by_2(-0)); -assertUnoptimized(mul_by_2); - -// Deopt on overflow. - -// 2^30 is a smi boundary on arm and ia32. -var two_30 = 1 << 30; -// 2^31 is a smi boundary on arm64 and x64. -var two_31 = 2 * two_30; - -// TODO(rmcilroy): replace after r16361 with: if (%IsValidSmi(two_31)) { -if (true) { - assertEquals(two_31, mul_by_neg_1(-two_31)); - assertUnoptimized(mul_by_neg_1); -} else { - assertEquals(two_30, mul_by_neg_1(-two_30)); - assertUnoptimized(mul_by_neg_1); -} diff --git a/implementation-contributed/v8/mjsunit/smi-mul.js b/implementation-contributed/v8/mjsunit/smi-mul.js deleted file mode 100644 index 12d206abec7..00000000000 --- a/implementation-contributed/v8/mjsunit/smi-mul.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --noalways-opt - -function mul(a, b) { - return a * b; -} - - -mul(-1, 2); -mul(-1, 2); -%OptimizeFunctionOnNextCall(mul); -assertEquals(-2, mul(-1, 2)); -assertOptimized(mul); - -// Deopt on minus zero. -assertEquals(-0, mul(-1, 0)); -assertUnoptimized(mul); - - -function mul2(a, b) { - return a * b; -} - -mul2(-1, 2); -mul2(-1, 2); -%OptimizeFunctionOnNextCall(mul2); - -// 2^30 is a smi boundary on arm and ia32. -var two_30 = 1 << 30; -// 2^31 is a smi boundary on x64. -var two_31 = 2 * two_30; - -if (%IsValidSmi(two_31)) { - // Deopt on two_31 on x64. - assertEquals(two_31, mul2(-two_31, -1)); - assertUnoptimized(mul2); -} else { - // Deopt on two_30 on ia32. - assertEquals(two_30, mul2(-two_30, -1)); - assertUnoptimized(mul2); -} diff --git a/implementation-contributed/v8/mjsunit/smi-negative-zero.js b/implementation-contributed/v8/mjsunit/smi-negative-zero.js deleted file mode 100644 index 1bab920dfc6..00000000000 --- a/implementation-contributed/v8/mjsunit/smi-negative-zero.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Ensure that operations on small integers handle -0. - -var zero = 0; -var one = 1; -var minus_one = -1; -var two = 2; -var four = 4; -var minus_two = -2; -var minus_four = -4; - -// variable op variable - -assertEquals(-Infinity, one / (-zero), "one / -0 I"); - -assertEquals(-Infinity, one / (zero * minus_one), "one / -1"); -assertEquals(-Infinity, one / (minus_one * zero), "one / -0 II"); -assertEquals(Infinity, one / (zero * zero), "one / 0 I"); -assertEquals(1, one / (minus_one * minus_one), "one / 1"); - -assertEquals(-Infinity, one / (zero / minus_one), "one / -0 III"); -assertEquals(Infinity, one / (zero / one), "one / 0 II"); - -assertEquals(-Infinity, one / (minus_four % two), "foo1"); -assertEquals(-Infinity, one / (minus_four % minus_two), "foo2"); -assertEquals(Infinity, one / (four % two), "foo3"); -assertEquals(Infinity, one / (four % minus_two), "foo4"); - -// literal op variable - -assertEquals(-Infinity, one / (0 * minus_one), "bar1"); -assertEquals(-Infinity, one / (-1 * zero), "bar2"); -assertEquals(Infinity, one / (0 * zero), "bar3"); -assertEquals(1, one / (-1 * minus_one), "bar4"); - -assertEquals(-Infinity, one / (0 / minus_one), "baz1"); -assertEquals(Infinity, one / (0 / one), "baz2"); - -assertEquals(-Infinity, one / (-4 % two), "baz3"); -assertEquals(-Infinity, one / (-4 % minus_two), "baz4"); -assertEquals(Infinity, one / (4 % two), "baz5"); -assertEquals(Infinity, one / (4 % minus_two), "baz6"); - -// variable op literal - -assertEquals(-Infinity, one / (zero * -1), "fizz1"); -assertEquals(-Infinity, one / (minus_one * 0), "fizz2"); -assertEquals(Infinity, one / (zero * 0), "fizz3"); -assertEquals(1, one / (minus_one * -1), "fizz4"); - -assertEquals(-Infinity, one / (zero / -1), "buzz1"); -assertEquals(Infinity, one / (zero / 1), "buzz2"); - -assertEquals(-Infinity, one / (minus_four % 2), "buzz3"); -assertEquals(-Infinity, one / (minus_four % -2), "buzz4"); -assertEquals(Infinity, one / (four % 2), "buzz5"); -assertEquals(Infinity, one / (four % -2), "buzz6"); - -// literal op literal - -assertEquals(-Infinity, one / (-0), "fisk1"); - -assertEquals(-Infinity, one / (0 * -1), "fisk2"); -assertEquals(-Infinity, one / (-1 * 0), "fisk3"); -assertEquals(Infinity, one / (0 * 0), "fisk4"); -assertEquals(1, one / (-1 * -1), "fisk5"); - -assertEquals(-Infinity, one / (0 / -1), "hest1"); -assertEquals(Infinity, one / (0 / 1), "hest2"); - -assertEquals(-Infinity, one / (-4 % 2), "fiskhest1"); -assertEquals(-Infinity, one / (-4 % -2), "fiskhest2"); -assertEquals(Infinity, one / (4 % 2), "fiskhest3"); -assertEquals(Infinity, one / (4 % -2), "fiskhest4"); - - -// This tests against a singleton -0.0 object being overwritten.gc -x = 0; -z = 3044; - -function foo(x) { - var y = -x + z; - return -x; -} - -assertEquals(-0, foo(x)); -assertEquals(-0, foo(x)); diff --git a/implementation-contributed/v8/mjsunit/smi-ops-inlined.js b/implementation-contributed/v8/mjsunit/smi-ops-inlined.js deleted file mode 100644 index dd753d17b0b..00000000000 --- a/implementation-contributed/v8/mjsunit/smi-ops-inlined.js +++ /dev/null @@ -1,671 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -const SMI_MAX = (1 << 30) - 1; -const SMI_MIN = -(1 << 30); -const ONE = 1; -const ONE_HUNDRED = 100; - -const OBJ_42 = new (function() { - this.valueOf = function() { return 42; }; -})(); - -assertEquals(42, OBJ_42.valueOf()); - - -function Add1(x) { - return x + 1; -} - -function Add100(x) { - return x + 100; -} - -function Add1Reversed(x) { - return 1 + x; -} - -function Add100Reversed(x) { - return 100 + x; -} - - -assertEquals(1, Add1(0)); // fast case -assertEquals(1, Add1Reversed(0)); // fast case -assertEquals(SMI_MAX + ONE, Add1(SMI_MAX), "smimax + 1"); -assertEquals(SMI_MAX + ONE, Add1Reversed(SMI_MAX), "1 + smimax"); -assertEquals(42 + ONE, Add1(OBJ_42)); // non-smi -assertEquals(42 + ONE, Add1Reversed(OBJ_42)); // non-smi - -assertEquals(100, Add100(0)); // fast case -assertEquals(100, Add100Reversed(0)); // fast case -assertEquals(SMI_MAX + ONE_HUNDRED, Add100(SMI_MAX), "smimax + 100"); -assertEquals(SMI_MAX + ONE_HUNDRED, Add100Reversed(SMI_MAX), " 100 + smimax"); -assertEquals(42 + ONE_HUNDRED, Add100(OBJ_42)); // non-smi -assertEquals(42 + ONE_HUNDRED, Add100Reversed(OBJ_42)); // non-smi - - - -function Sub1(x) { - return x - 1; -} - -function Sub100(x) { - return x - 100; -} - -function Sub1Reversed(x) { - return 1 - x; -} - -function Sub100Reversed(x) { - return 100 - x; -} - - -assertEquals(0, Sub1(1)); // fast case -assertEquals(-1, Sub1Reversed(2)); // fast case -assertEquals(SMI_MIN - ONE, Sub1(SMI_MIN)); // overflow -assertEquals(ONE - SMI_MIN, Sub1Reversed(SMI_MIN)); // overflow -assertEquals(42 - ONE, Sub1(OBJ_42)); // non-smi -assertEquals(ONE - 42, Sub1Reversed(OBJ_42)); // non-smi - -assertEquals(0, Sub100(100)); // fast case -assertEquals(1, Sub100Reversed(99)); // fast case -assertEquals(SMI_MIN - ONE_HUNDRED, Sub100(SMI_MIN)); // overflow -assertEquals(ONE_HUNDRED - SMI_MIN, Sub100Reversed(SMI_MIN)); // overflow -assertEquals(42 - ONE_HUNDRED, Sub100(OBJ_42)); // non-smi -assertEquals(ONE_HUNDRED - 42, Sub100Reversed(OBJ_42)); // non-smi - - -function Shr1(x) { - return x >>> 1; -} - -function Shr100(x) { - return x >>> 100; -} - -function Shr1Reversed(x) { - return 1 >>> x; -} - -function Shr100Reversed(x) { - return 100 >>> x; -} - -function Sar1(x) { - return x >> 1; -} - -function Sar100(x) { - return x >> 100; -} - -function Sar1Reversed(x) { - return 1 >> x; -} - -function Sar100Reversed(x) { - return 100 >> x; -} - - -assertEquals(0, Shr1(1)); -assertEquals(0, Sar1(1)); -assertEquals(0, Shr1Reversed(2)); -assertEquals(0, Sar1Reversed(2)); -assertEquals(1610612736, Shr1(SMI_MIN)); -assertEquals(-536870912, Sar1(SMI_MIN)); -assertEquals(1, Shr1Reversed(SMI_MIN)); -assertEquals(1, Sar1Reversed(SMI_MIN)); -assertEquals(21, Shr1(OBJ_42)); -assertEquals(21, Sar1(OBJ_42)); -assertEquals(0, Shr1Reversed(OBJ_42)); -assertEquals(0, Sar1Reversed(OBJ_42)); - -assertEquals(6, Shr100(100), "100 >>> 100"); -assertEquals(6, Sar100(100), "100 >> 100"); -assertEquals(12, Shr100Reversed(99)); -assertEquals(12, Sar100Reversed(99)); -assertEquals(201326592, Shr100(SMI_MIN)); -assertEquals(-67108864, Sar100(SMI_MIN)); -assertEquals(100, Shr100Reversed(SMI_MIN)); -assertEquals(100, Sar100Reversed(SMI_MIN)); -assertEquals(2, Shr100(OBJ_42)); -assertEquals(2, Sar100(OBJ_42)); -assertEquals(0, Shr100Reversed(OBJ_42)); -assertEquals(0, Sar100Reversed(OBJ_42)); - - -function Xor1(x) { - return x ^ 1; -} - -function Xor100(x) { - return x ^ 100; -} - -function Xor1Reversed(x) { - return 1 ^ x; -} - -function Xor100Reversed(x) { - return 100 ^ x; -} - - -assertEquals(0, Xor1(1)); -assertEquals(3, Xor1Reversed(2)); -assertEquals(SMI_MIN + 1, Xor1(SMI_MIN)); -assertEquals(SMI_MIN + 1, Xor1Reversed(SMI_MIN)); -assertEquals(43, Xor1(OBJ_42)); -assertEquals(43, Xor1Reversed(OBJ_42)); - -assertEquals(0, Xor100(100)); -assertEquals(7, Xor100Reversed(99)); -assertEquals(-1073741724, Xor100(SMI_MIN)); -assertEquals(-1073741724, Xor100Reversed(SMI_MIN)); -assertEquals(78, Xor100(OBJ_42)); -assertEquals(78, Xor100Reversed(OBJ_42)); - -var x = 0x23; var y = 0x35; -assertEquals(0x16, x ^ y); - - -// Bitwise not. -var v = 0; -assertEquals(-1, ~v); -v = SMI_MIN; -assertEquals(0x3fffffff, ~v, "~smimin"); -v = SMI_MAX; -assertEquals(-0x40000000, ~v, "~smimax"); - -// Overflowing ++ and --. -v = SMI_MAX; -v++; -assertEquals(0x40000000, v, "smimax++"); -v = SMI_MIN; -v--; -assertEquals(-0x40000001, v, "smimin--"); - -// Not actually Smi operations. -// Check that relations on unary ops work. -var v = -1.2; -assertTrue(v == v); -assertTrue(v === v); -assertTrue(v <= v); -assertTrue(v >= v); -assertFalse(v < v); -assertFalse(v > v); -assertFalse(v != v); -assertFalse(v !== v); - -// Right hand side of unary minus is overwritable. -v = 1.5 -assertEquals(-2.25, -(v * v)); - -// Smi input to bitop gives non-smi result where the rhs is a float that -// can be overwritten. -var x1 = 0x10000000; -var x2 = 0x40000002; -var x3 = 0x40000000; -assertEquals(0x40000000, x1 << (x2 - x3), "0x10000000<<1(1)"); - -// Smi input to bitop gives non-smi result where the rhs could be overwritten -// if it were a float, but it isn't. -x1 = 0x10000000 -x2 = 4 -x3 = 2 -assertEquals(0x40000000, x1 << (x2 - x3), "0x10000000<<2(2)"); - - -// Test shift operators on non-smi inputs, giving smi and non-smi results. -function testShiftNonSmis() { - var pos_non_smi = 2000000000; - var neg_non_smi = -pos_non_smi; - var pos_smi = 1000000000; - var neg_smi = -pos_smi; - - // Begin block A - assertEquals(pos_non_smi, (pos_non_smi) >> 0); - assertEquals(pos_non_smi, (pos_non_smi) >>> 0); - assertEquals(pos_non_smi, (pos_non_smi) << 0); - assertEquals(neg_non_smi, (neg_non_smi) >> 0); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi) >>> 0); - assertEquals(neg_non_smi, (neg_non_smi) << 0); - assertEquals(pos_smi, (pos_smi) >> 0, "possmi >> 0"); - assertEquals(pos_smi, (pos_smi) >>> 0, "possmi >>>0"); - assertEquals(pos_smi, (pos_smi) << 0, "possmi << 0"); - assertEquals(neg_smi, (neg_smi) >> 0, "negsmi >> 0"); - assertEquals(neg_smi + 0x100000000, (neg_smi) >>> 0, "negsmi >>> 0"); - assertEquals(neg_smi, (neg_smi) << 0), "negsmi << 0"; - - assertEquals(pos_non_smi / 2, (pos_non_smi) >> 1); - assertEquals(pos_non_smi / 2, (pos_non_smi) >>> 1); - assertEquals(-0x1194D800, (pos_non_smi) << 1); - assertEquals(pos_non_smi / 8, (pos_non_smi) >> 3); - assertEquals(pos_non_smi / 8, (pos_non_smi) >>> 3); - assertEquals(-0x46536000, (pos_non_smi) << 3); - assertEquals(0x73594000, (pos_non_smi) << 4); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >> 0); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >>> 0); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) << 0); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >> 1); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >>> 1); - assertEquals(-0x1194D800, (pos_non_smi + 0.5) << 1); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >> 3); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >>> 3); - assertEquals(-0x46536000, (pos_non_smi + 0.5) << 3); - assertEquals(0x73594000, (pos_non_smi + 0.5) << 4); - - assertEquals(neg_non_smi / 2, (neg_non_smi) >> 1, "negnonsmi >> 1"); - - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi) >>> 1, - "negnonsmi >>> 1"); - assertEquals(0x1194D800, (neg_non_smi) << 1); - assertEquals(neg_non_smi / 8, (neg_non_smi) >> 3); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi) >>> 3); - assertEquals(0x46536000, (neg_non_smi) << 3); - assertEquals(-0x73594000, (neg_non_smi) << 4); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) >> 0); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi - 0.5) >>> 0, - "negnonsmi.5 >>> 0"); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) << 0); - assertEquals(neg_non_smi / 2, (neg_non_smi - 0.5) >> 1); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi - 0.5) >>> 1, - "negnonsmi.5 >>> 1"); - assertEquals(0x1194D800, (neg_non_smi - 0.5) << 1); - assertEquals(neg_non_smi / 8, (neg_non_smi - 0.5) >> 3); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi - 0.5) >>> 3); - assertEquals(0x46536000, (neg_non_smi - 0.5) << 3); - assertEquals(-0x73594000, (neg_non_smi - 0.5) << 4); - - assertEquals(pos_smi / 2, (pos_smi) >> 1); - assertEquals(pos_smi / 2, (pos_smi) >>> 1); - assertEquals(pos_non_smi, (pos_smi) << 1); - assertEquals(pos_smi / 8, (pos_smi) >> 3); - assertEquals(pos_smi / 8, (pos_smi) >>> 3); - assertEquals(-0x2329b000, (pos_smi) << 3); - assertEquals(0x73594000, (pos_smi) << 5); - assertEquals(pos_smi, (pos_smi + 0.5) >> 0, "possmi.5 >> 0"); - assertEquals(pos_smi, (pos_smi + 0.5) >>> 0, "possmi.5 >>> 0"); - assertEquals(pos_smi, (pos_smi + 0.5) << 0, "possmi.5 << 0"); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >> 1); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >>> 1); - assertEquals(pos_non_smi, (pos_smi + 0.5) << 1); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >> 3); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >>> 3); - assertEquals(-0x2329b000, (pos_smi + 0.5) << 3); - assertEquals(0x73594000, (pos_smi + 0.5) << 5); - - assertEquals(neg_smi / 2, (neg_smi) >> 1); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi) >>> 1); - assertEquals(neg_non_smi, (neg_smi) << 1); - assertEquals(neg_smi / 8, (neg_smi) >> 3); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi) >>> 3); - assertEquals(0x46536000, (neg_smi) << 4); - assertEquals(-0x73594000, (neg_smi) << 5); - assertEquals(neg_smi, (neg_smi - 0.5) >> 0, "negsmi.5 >> 0"); - assertEquals(neg_smi + 0x100000000, (neg_smi - 0.5) >>> 0, "negsmi.5 >>> 0"); - assertEquals(neg_smi, (neg_smi - 0.5) << 0, "negsmi.5 << 0"); - assertEquals(neg_smi / 2, (neg_smi - 0.5) >> 1); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi - 0.5) >>> 1); - assertEquals(neg_non_smi, (neg_smi - 0.5) << 1); - assertEquals(neg_smi / 8, (neg_smi - 0.5) >> 3); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi - 0.5) >>> 3); - assertEquals(0x46536000, (neg_smi - 0.5) << 4); - assertEquals(-0x73594000, (neg_smi - 0.5) << 5); - // End block A - - // Repeat block A with 2^32 added to positive numbers and - // 2^32 subtracted from negative numbers. - // Begin block A repeat 1 - var two_32 = 0x100000000; - var neg_32 = -two_32; - assertEquals(pos_non_smi, (two_32 + pos_non_smi) >> 0); - assertEquals(pos_non_smi, (two_32 + pos_non_smi) >>> 0); - assertEquals(pos_non_smi, (two_32 + pos_non_smi) << 0); - assertEquals(neg_non_smi, (neg_32 + neg_non_smi) >> 0); - assertEquals(neg_non_smi + 0x100000000, (neg_32 + neg_non_smi) >>> 0); - assertEquals(neg_non_smi, (neg_32 + neg_non_smi) << 0); - assertEquals(pos_smi, (two_32 + pos_smi) >> 0, "2^32+possmi >> 0"); - assertEquals(pos_smi, (two_32 + pos_smi) >>> 0, "2^32+possmi >>> 0"); - assertEquals(pos_smi, (two_32 + pos_smi) << 0, "2^32+possmi << 0"); - assertEquals(neg_smi, (neg_32 + neg_smi) >> 0, "2^32+negsmi >> 0"); - assertEquals(neg_smi + 0x100000000, (neg_32 + neg_smi) >>> 0); - assertEquals(neg_smi, (neg_32 + neg_smi) << 0, "2^32+negsmi << 0"); - - assertEquals(pos_non_smi / 2, (two_32 + pos_non_smi) >> 1); - assertEquals(pos_non_smi / 2, (two_32 + pos_non_smi) >>> 1); - assertEquals(-0x1194D800, (two_32 + pos_non_smi) << 1); - assertEquals(pos_non_smi / 8, (two_32 + pos_non_smi) >> 3); - assertEquals(pos_non_smi / 8, (two_32 + pos_non_smi) >>> 3); - assertEquals(-0x46536000, (two_32 + pos_non_smi) << 3); - assertEquals(0x73594000, (two_32 + pos_non_smi) << 4); - assertEquals(pos_non_smi, (two_32 + pos_non_smi + 0.5) >> 0); - assertEquals(pos_non_smi, (two_32 + pos_non_smi + 0.5) >>> 0); - assertEquals(pos_non_smi, (two_32 + pos_non_smi + 0.5) << 0); - assertEquals(pos_non_smi / 2, (two_32 + pos_non_smi + 0.5) >> 1); - assertEquals(pos_non_smi / 2, (two_32 + pos_non_smi + 0.5) >>> 1); - assertEquals(-0x1194D800, (two_32 + pos_non_smi + 0.5) << 1); - assertEquals(pos_non_smi / 8, (two_32 + pos_non_smi + 0.5) >> 3); - assertEquals(pos_non_smi / 8, (two_32 + pos_non_smi + 0.5) >>> 3); - assertEquals(-0x46536000, (two_32 + pos_non_smi + 0.5) << 3); - assertEquals(0x73594000, (two_32 + pos_non_smi + 0.5) << 4); - - assertEquals(neg_non_smi / 2, (neg_32 + neg_non_smi) >> 1); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_32 + neg_non_smi) >>> 1); - assertEquals(0x1194D800, (neg_32 + neg_non_smi) << 1); - assertEquals(neg_non_smi / 8, (neg_32 + neg_non_smi) >> 3); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_32 + neg_non_smi) >>> 3); - assertEquals(0x46536000, (neg_32 + neg_non_smi) << 3); - assertEquals(-0x73594000, (neg_32 + neg_non_smi) << 4); - assertEquals(neg_non_smi, (neg_32 + neg_non_smi - 0.5) >> 0); - assertEquals(neg_non_smi + 0x100000000, (neg_32 + neg_non_smi - 0.5) >>> 0); - assertEquals(neg_non_smi, (neg_32 + neg_non_smi - 0.5) << 0); - assertEquals(neg_non_smi / 2, (neg_32 + neg_non_smi - 0.5) >> 1); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_32 + neg_non_smi - 0.5) - >>> 1); - assertEquals(0x1194D800, (neg_32 + neg_non_smi - 0.5) << 1); - assertEquals(neg_non_smi / 8, (neg_32 + neg_non_smi - 0.5) >> 3); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_32 + neg_non_smi - 0.5) - >>> 3); - assertEquals(0x46536000, (neg_32 + neg_non_smi - 0.5) << 3); - assertEquals(-0x73594000, (neg_32 + neg_non_smi - 0.5) << 4); - - assertEquals(pos_smi / 2, (two_32 + pos_smi) >> 1); - assertEquals(pos_smi / 2, (two_32 + pos_smi) >>> 1); - assertEquals(pos_non_smi, (two_32 + pos_smi) << 1); - assertEquals(pos_smi / 8, (two_32 + pos_smi) >> 3); - assertEquals(pos_smi / 8, (two_32 + pos_smi) >>> 3); - assertEquals(-0x2329b000, (two_32 + pos_smi) << 3); - assertEquals(0x73594000, (two_32 + pos_smi) << 5); - assertEquals(pos_smi, (two_32 + pos_smi + 0.5) >> 0); - assertEquals(pos_smi, (two_32 + pos_smi + 0.5) >>> 0); - assertEquals(pos_smi, (two_32 + pos_smi + 0.5) << 0); - assertEquals(pos_smi / 2, (two_32 + pos_smi + 0.5) >> 1); - assertEquals(pos_smi / 2, (two_32 + pos_smi + 0.5) >>> 1); - assertEquals(pos_non_smi, (two_32 + pos_smi + 0.5) << 1); - assertEquals(pos_smi / 8, (two_32 + pos_smi + 0.5) >> 3); - assertEquals(pos_smi / 8, (two_32 + pos_smi + 0.5) >>> 3); - assertEquals(-0x2329b000, (two_32 + pos_smi + 0.5) << 3); - assertEquals(0x73594000, (two_32 + pos_smi + 0.5) << 5); - - assertEquals(neg_smi / 2, (neg_32 + neg_smi) >> 1); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_32 + neg_smi) >>> 1); - assertEquals(neg_non_smi, (neg_32 + neg_smi) << 1); - assertEquals(neg_smi / 8, (neg_32 + neg_smi) >> 3); - assertEquals((neg_smi + 0x100000000) / 8, (neg_32 + neg_smi) >>> 3); - assertEquals(0x46536000, (neg_32 + neg_smi) << 4); - assertEquals(-0x73594000, (neg_32 + neg_smi) << 5); - assertEquals(neg_smi, (neg_32 + neg_smi - 0.5) >> 0, "-2^32+negsmi.5 >> 0"); - assertEquals(neg_smi + 0x100000000, (neg_32 + neg_smi - 0.5) >>> 0); - assertEquals(neg_smi, (neg_32 + neg_smi - 0.5) << 0, "-2^32+negsmi.5 << 0"); - assertEquals(neg_smi / 2, (neg_32 + neg_smi - 0.5) >> 1); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_32 + neg_smi - 0.5) >>> 1); - assertEquals(neg_non_smi, (neg_32 + neg_smi - 0.5) << 1); - assertEquals(neg_smi / 8, (neg_32 + neg_smi - 0.5) >> 3); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_32 + neg_smi - 0.5) >>> 3); - assertEquals(0x46536000, (neg_32 + neg_smi - 0.5) << 4); - assertEquals(-0x73594000, (neg_32 + neg_smi - 0.5) << 5); - // End block A repeat 1 - // Repeat block A with shift amounts in variables intialized with - // a constant. - var zero = 0; - var one = 1; - var three = 3; - var four = 4; - var five = 5; - // Begin block A repeat 2 - assertEquals(pos_non_smi, (pos_non_smi) >> zero); - assertEquals(pos_non_smi, (pos_non_smi) >>> zero); - assertEquals(pos_non_smi, (pos_non_smi) << zero); - assertEquals(neg_non_smi, (neg_non_smi) >> zero); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi) >>> zero); - assertEquals(neg_non_smi, (neg_non_smi) << zero); - assertEquals(pos_smi, (pos_smi) >> zero); - assertEquals(pos_smi, (pos_smi) >>> zero); - assertEquals(pos_smi, (pos_smi) << zero); - assertEquals(neg_smi, (neg_smi) >> zero, "negsmi >> zero"); - assertEquals(neg_smi + 0x100000000, (neg_smi) >>> zero); - assertEquals(neg_smi, (neg_smi) << zero, "negsmi << zero"); - - assertEquals(pos_non_smi / 2, (pos_non_smi) >> one); - assertEquals(pos_non_smi / 2, (pos_non_smi) >>> one); - assertEquals(-0x1194D800, (pos_non_smi) << one); - assertEquals(pos_non_smi / 8, (pos_non_smi) >> three); - assertEquals(pos_non_smi / 8, (pos_non_smi) >>> three); - assertEquals(-0x46536000, (pos_non_smi) << three); - assertEquals(0x73594000, (pos_non_smi) << four); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >> zero); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >>> zero); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) << zero); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >> one); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >>> one); - assertEquals(-0x1194D800, (pos_non_smi + 0.5) << one); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >> three); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >>> three); - assertEquals(-0x46536000, (pos_non_smi + 0.5) << three); - assertEquals(0x73594000, (pos_non_smi + 0.5) << four); - - assertEquals(neg_non_smi / 2, (neg_non_smi) >> one); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi) >>> one); - assertEquals(0x1194D800, (neg_non_smi) << one); - assertEquals(neg_non_smi / 8, (neg_non_smi) >> three); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi) >>> three); - assertEquals(0x46536000, (neg_non_smi) << three); - assertEquals(-0x73594000, (neg_non_smi) << four); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) >> zero); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi - 0.5) >>> zero); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) << zero); - assertEquals(neg_non_smi / 2, (neg_non_smi - 0.5) >> one); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi - 0.5) >>> one); - assertEquals(0x1194D800, (neg_non_smi - 0.5) << one); - assertEquals(neg_non_smi / 8, (neg_non_smi - 0.5) >> three); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi - 0.5) - >>> three); - assertEquals(0x46536000, (neg_non_smi - 0.5) << three); - assertEquals(-0x73594000, (neg_non_smi - 0.5) << four); - - assertEquals(pos_smi / 2, (pos_smi) >> one); - assertEquals(pos_smi / 2, (pos_smi) >>> one); - assertEquals(pos_non_smi, (pos_smi) << one); - assertEquals(pos_smi / 8, (pos_smi) >> three); - assertEquals(pos_smi / 8, (pos_smi) >>> three); - assertEquals(-0x2329b000, (pos_smi) << three); - assertEquals(0x73594000, (pos_smi) << five); - assertEquals(pos_smi, (pos_smi + 0.5) >> zero); - assertEquals(pos_smi, (pos_smi + 0.5) >>> zero); - assertEquals(pos_smi, (pos_smi + 0.5) << zero); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >> one); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >>> one); - assertEquals(pos_non_smi, (pos_smi + 0.5) << one); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >> three); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >>> three); - assertEquals(-0x2329b000, (pos_smi + 0.5) << three); - assertEquals(0x73594000, (pos_smi + 0.5) << five); - - assertEquals(neg_smi / 2, (neg_smi) >> one); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi) >>> one); - assertEquals(neg_non_smi, (neg_smi) << one); - assertEquals(neg_smi / 8, (neg_smi) >> three); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi) >>> three); - assertEquals(0x46536000, (neg_smi) << four); - assertEquals(-0x73594000, (neg_smi) << five); - assertEquals(neg_smi, (neg_smi - 0.5) >> zero); - assertEquals(neg_smi + 0x100000000, (neg_smi - 0.5) >>> zero); - assertEquals(neg_smi, (neg_smi - 0.5) << zero); - assertEquals(neg_smi / 2, (neg_smi - 0.5) >> one); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi - 0.5) >>> one); - assertEquals(neg_non_smi, (neg_smi - 0.5) << one); - assertEquals(neg_smi / 8, (neg_smi - 0.5) >> three); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi - 0.5) >>> three); - assertEquals(0x46536000, (neg_smi - 0.5) << four); - assertEquals(-0x73594000, (neg_smi - 0.5) << five); - // End block A repeat 2 - - // Repeat previous block, with computed values in the shift variables. - five = 0; - while (five < 5 ) ++five; - four = five - one; - three = four - one; - one = four - three; - zero = one - one; - - // Begin block A repeat 3 - assertEquals(pos_non_smi, (pos_non_smi) >> zero); - assertEquals(pos_non_smi, (pos_non_smi) >>> zero); - assertEquals(pos_non_smi, (pos_non_smi) << zero); - assertEquals(neg_non_smi, (neg_non_smi) >> zero); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi) >>> zero); - assertEquals(neg_non_smi, (neg_non_smi) << zero); - assertEquals(pos_smi, (pos_smi) >> zero); - assertEquals(pos_smi, (pos_smi) >>> zero); - assertEquals(pos_smi, (pos_smi) << zero); - assertEquals(neg_smi, (neg_smi) >> zero, "negsmi >> zero(2)"); - assertEquals(neg_smi + 0x100000000, (neg_smi) >>> zero); - assertEquals(neg_smi, (neg_smi) << zero, "negsmi << zero(2)"); - - assertEquals(pos_non_smi / 2, (pos_non_smi) >> one); - assertEquals(pos_non_smi / 2, (pos_non_smi) >>> one); - assertEquals(-0x1194D800, (pos_non_smi) << one); - assertEquals(pos_non_smi / 8, (pos_non_smi) >> three); - assertEquals(pos_non_smi / 8, (pos_non_smi) >>> three); - assertEquals(-0x46536000, (pos_non_smi) << three); - assertEquals(0x73594000, (pos_non_smi) << four); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >> zero); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >>> zero); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) << zero); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >> one); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >>> one); - assertEquals(-0x1194D800, (pos_non_smi + 0.5) << one); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >> three); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >>> three); - assertEquals(-0x46536000, (pos_non_smi + 0.5) << three); - assertEquals(0x73594000, (pos_non_smi + 0.5) << four); - - assertEquals(neg_non_smi / 2, (neg_non_smi) >> one); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi) >>> one); - assertEquals(0x1194D800, (neg_non_smi) << one); - assertEquals(neg_non_smi / 8, (neg_non_smi) >> three); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi) >>> three); - assertEquals(0x46536000, (neg_non_smi) << three); - assertEquals(-0x73594000, (neg_non_smi) << four); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) >> zero); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi - 0.5) >>> zero); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) << zero); - assertEquals(neg_non_smi / 2, (neg_non_smi - 0.5) >> one); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi - 0.5) >>> one); - assertEquals(0x1194D800, (neg_non_smi - 0.5) << one); - assertEquals(neg_non_smi / 8, (neg_non_smi - 0.5) >> three); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi - 0.5) - >>> three); - assertEquals(0x46536000, (neg_non_smi - 0.5) << three); - assertEquals(-0x73594000, (neg_non_smi - 0.5) << four); - - assertEquals(pos_smi / 2, (pos_smi) >> one); - assertEquals(pos_smi / 2, (pos_smi) >>> one); - assertEquals(pos_non_smi, (pos_smi) << one); - assertEquals(pos_smi / 8, (pos_smi) >> three); - assertEquals(pos_smi / 8, (pos_smi) >>> three); - assertEquals(-0x2329b000, (pos_smi) << three); - assertEquals(0x73594000, (pos_smi) << five); - assertEquals(pos_smi, (pos_smi + 0.5) >> zero); - assertEquals(pos_smi, (pos_smi + 0.5) >>> zero); - assertEquals(pos_smi, (pos_smi + 0.5) << zero); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >> one); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >>> one); - assertEquals(pos_non_smi, (pos_smi + 0.5) << one); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >> three); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >>> three); - assertEquals(-0x2329b000, (pos_smi + 0.5) << three); - assertEquals(0x73594000, (pos_smi + 0.5) << five); - - assertEquals(neg_smi / 2, (neg_smi) >> one); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi) >>> one); - assertEquals(neg_non_smi, (neg_smi) << one); - assertEquals(neg_smi / 8, (neg_smi) >> three); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi) >>> three); - assertEquals(0x46536000, (neg_smi) << four); - assertEquals(-0x73594000, (neg_smi) << five); - assertEquals(neg_smi, (neg_smi - 0.5) >> zero, "negsmi.5 >> zero"); - assertEquals(neg_smi + 0x100000000, (neg_smi - 0.5) >>> zero); - assertEquals(neg_smi, (neg_smi - 0.5) << zero, "negsmi.5 << zero"); - assertEquals(neg_smi / 2, (neg_smi - 0.5) >> one); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi - 0.5) >>> one); - assertEquals(neg_non_smi, (neg_smi - 0.5) << one); - assertEquals(neg_smi / 8, (neg_smi - 0.5) >> three); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi - 0.5) >>> three); - assertEquals(0x46536000, (neg_smi - 0.5) << four); - assertEquals(-0x73594000, (neg_smi - 0.5) << five); - // End block A repeat 3 - - // Test non-integer shift value - assertEquals(5, 20.5 >> 2.4); - assertEquals(5, 20.5 >> 2.7); - var shift = 2.4; - assertEquals(5, 20.5 >> shift); - assertEquals(5, 20.5 >> shift + 0.3); - shift = shift + zero; - assertEquals(5, 20.5 >> shift); - assertEquals(5, 20.5 >> shift + 0.3); -} - -testShiftNonSmis(); - -function intConversion() { - function foo(x) { - assertEquals(x, (x * 1.0000000001) | 0, "foo more " + x); - assertEquals(x, x | 0, "foo " + x); - if (x > 0) { - assertEquals(x - 1, (x * 0.9999999999) | 0, "foo less " + x); - } else { - assertEquals(x + 1, (x * 0.9999999999) | 0, "foo less " + x); - } - } - for (var i = 1; i < 0x80000000; i *= 2) { - foo(i); - foo(-i); - } - for (var i = 1; i < 1/0; i *= 2) { - assertEquals(i | 0, (i * 1.0000000000000001) | 0, "b" + i); - assertEquals(-i | 0, (i * -1.0000000000000001) | 0, "c" + i); - } - for (var i = 0.5; i > 0; i /= 2) { - assertEquals(0, i | 0, "d" + i); - assertEquals(0, -i | 0, "e" + i); - } -} - -intConversion(); - -// Verify that we handle the (optimized) corner case of shifting by -// zero even for non-smis. -function shiftByZero(n) { return n << 0; } - -assertEquals(3, shiftByZero(3.1415)); diff --git a/implementation-contributed/v8/mjsunit/smi-ops.js b/implementation-contributed/v8/mjsunit/smi-ops.js deleted file mode 100644 index 7945855f39c..00000000000 --- a/implementation-contributed/v8/mjsunit/smi-ops.js +++ /dev/null @@ -1,704 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -const SMI_MAX = (1 << 29) - 1 + (1 << 29); // Create without overflowing. -const SMI_MIN = -SMI_MAX - 1; // Create without overflowing. -const ONE = 1; -const ONE_HUNDRED = 100; - -const OBJ_42 = new (function() { - this.valueOf = function() { return 42; }; -})(); - -assertEquals(42, OBJ_42.valueOf()); - - -function Add1(x) { - return x + 1; -} - -function Add100(x) { - return x + 100; -} - -function Add1Reversed(x) { - return 1 + x; -} - -function Add100Reversed(x) { - return 100 + x; -} - - -assertEquals(1, Add1(0)); // fast case -assertEquals(1, Add1Reversed(0)); // fast case -assertEquals(SMI_MAX + ONE, Add1(SMI_MAX), "smimax + 1"); -assertEquals(SMI_MAX + ONE, Add1Reversed(SMI_MAX), "1 + smimax"); -assertEquals(42 + ONE, Add1(OBJ_42)); // non-smi -assertEquals(42 + ONE, Add1Reversed(OBJ_42)); // non-smi - -assertEquals(100, Add100(0)); // fast case -assertEquals(100, Add100Reversed(0)); // fast case -assertEquals(SMI_MAX + ONE_HUNDRED, Add100(SMI_MAX), "smimax + 100"); -assertEquals(SMI_MAX + ONE_HUNDRED, Add100Reversed(SMI_MAX), " 100 + smimax"); -assertEquals(42 + ONE_HUNDRED, Add100(OBJ_42)); // non-smi -assertEquals(42 + ONE_HUNDRED, Add100Reversed(OBJ_42)); // non-smi - - - -function Sub1(x) { - return x - 1; -} - -function Sub100(x) { - return x - 100; -} - -function Sub1Reversed(x) { - return 1 - x; -} - -function Sub100Reversed(x) { - return 100 - x; -} - - -assertEquals(0, Sub1(1)); // fast case -assertEquals(-1, Sub1Reversed(2)); // fast case -assertEquals(SMI_MIN - ONE, Sub1(SMI_MIN)); // overflow -assertEquals(ONE - SMI_MIN, Sub1Reversed(SMI_MIN)); // overflow -assertEquals(42 - ONE, Sub1(OBJ_42)); // non-smi -assertEquals(ONE - 42, Sub1Reversed(OBJ_42)); // non-smi - -assertEquals(0, Sub100(100)); // fast case -assertEquals(1, Sub100Reversed(99)); // fast case -assertEquals(SMI_MIN - ONE_HUNDRED, Sub100(SMI_MIN)); // overflow -assertEquals(ONE_HUNDRED - SMI_MIN, Sub100Reversed(SMI_MIN)); // overflow -assertEquals(42 - ONE_HUNDRED, Sub100(OBJ_42)); // non-smi -assertEquals(ONE_HUNDRED - 42, Sub100Reversed(OBJ_42)); // non-smi - - -function Shr1(x) { - return x >>> 1; -} - -function Shr100(x) { - return x >>> 100; -} - -function Shr1Reversed(x) { - return 1 >>> x; -} - -function Shr100Reversed(x) { - return 100 >>> x; -} - -function Sar1(x) { - return x >> 1; -} - -function Sar100(x) { - return x >> 100; -} - -function Sar1Reversed(x) { - return 1 >> x; -} - -function Sar100Reversed(x) { - return 100 >> x; -} - - -assertEquals(0, Shr1(1)); -assertEquals(0, Sar1(1)); -assertEquals(0, Shr1Reversed(2)); -assertEquals(0, Sar1Reversed(2)); -assertEquals(1610612736, Shr1(SMI_MIN)); -assertEquals(-536870912, Sar1(SMI_MIN)); -assertEquals(1, Shr1Reversed(SMI_MIN)); -assertEquals(1, Sar1Reversed(SMI_MIN)); -assertEquals(21, Shr1(OBJ_42)); -assertEquals(21, Sar1(OBJ_42)); -assertEquals(0, Shr1Reversed(OBJ_42)); -assertEquals(0, Sar1Reversed(OBJ_42)); - -assertEquals(6, Shr100(100), "100 >>> 100"); -assertEquals(6, Sar100(100), "100 >> 100"); -assertEquals(12, Shr100Reversed(99)); -assertEquals(12, Sar100Reversed(99)); -assertEquals(201326592, Shr100(SMI_MIN)); -assertEquals(-67108864, Sar100(SMI_MIN)); -assertEquals(100, Shr100Reversed(SMI_MIN)); -assertEquals(100, Sar100Reversed(SMI_MIN)); -assertEquals(2, Shr100(OBJ_42)); -assertEquals(2, Sar100(OBJ_42)); -assertEquals(0, Shr100Reversed(OBJ_42)); -assertEquals(0, Sar100Reversed(OBJ_42)); - - -function Xor1(x) { - return x ^ 1; -} - -function Xor100(x) { - return x ^ 100; -} - -function Xor1Reversed(x) { - return 1 ^ x; -} - -function Xor100Reversed(x) { - return 100 ^ x; -} - - -assertEquals(0, Xor1(1)); -assertEquals(3, Xor1Reversed(2)); -assertEquals(SMI_MIN + 1, Xor1(SMI_MIN)); -assertEquals(SMI_MIN + 1, Xor1Reversed(SMI_MIN)); -assertEquals(43, Xor1(OBJ_42)); -assertEquals(43, Xor1Reversed(OBJ_42)); - -assertEquals(0, Xor100(100)); -assertEquals(7, Xor100Reversed(99)); -assertEquals(-1073741724, Xor100(SMI_MIN)); -assertEquals(-1073741724, Xor100Reversed(SMI_MIN)); -assertEquals(78, Xor100(OBJ_42)); -assertEquals(78, Xor100Reversed(OBJ_42)); - -var x = 0x23; var y = 0x35; -assertEquals(0x16, x ^ y); - - -// Bitwise not. -var v = 0; -assertEquals(-1, ~v); -v = SMI_MIN; -assertEquals(0x3fffffff, ~v, "~smimin"); -v = SMI_MAX; -assertEquals(-0x40000000, ~v, "~smimax"); - -// Overflowing ++ and --. -v = SMI_MAX; -v++; -assertEquals(0x40000000, v, "smimax++"); -v = SMI_MIN; -v--; -assertEquals(-0x40000001, v, "smimin--"); - -// Check that comparisons of numbers separated by MIN_SMI work. -assertFalse(SMI_MIN > 0); -assertFalse(SMI_MIN + 1 > 1); -assertFalse(SMI_MIN + 1 > 2); -assertFalse(SMI_MIN + 2 > 1); -assertFalse(0 < SMI_MIN); -assertTrue(-1 < SMI_MAX); -assertFalse(SMI_MAX < -1); - -// Not actually Smi operations. -// Check that relations on unary ops work. -var v = -1.2; -assertTrue(v == v); -assertTrue(v === v); -assertTrue(v <= v); -assertTrue(v >= v); -assertFalse(v < v); -assertFalse(v > v); -assertFalse(v != v); -assertFalse(v !== v); - -// Right hand side of unary minus is overwritable. -v = 1.5 -assertEquals(-2.25, -(v * v)); - -// Smi input to bitop gives non-smi result where the rhs is a float that -// can be overwritten. -var x1 = 0x10000000; -var x2 = 0x40000002; -var x3 = 0x40000000; -assertEquals(0x40000000, x1 << (x2 - x3), "0x10000000<<1(1)"); - -// Smi input to bitop gives non-smi result where the rhs could be overwritten -// if it were a float, but it isn't. -x1 = 0x10000000 -x2 = 4 -x3 = 2 -assertEquals(0x40000000, x1 << (x2 - x3), "0x10000000<<2(2)"); - - -// Test shift operators on non-smi inputs, giving smi and non-smi results. -function testShiftNonSmis() { - var pos_non_smi = 2000000000; - var neg_non_smi = -pos_non_smi; - var pos_smi = 1000000000; - var neg_smi = -pos_smi; - - // Begin block A - assertEquals(pos_non_smi, (pos_non_smi) >> 0); - assertEquals(pos_non_smi, (pos_non_smi) >>> 0); - assertEquals(pos_non_smi, (pos_non_smi) << 0); - assertEquals(neg_non_smi, (neg_non_smi) >> 0); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi) >>> 0); - assertEquals(neg_non_smi, (neg_non_smi) << 0); - assertEquals(pos_smi, (pos_smi) >> 0, "possmi >> 0"); - assertEquals(pos_smi, (pos_smi) >>> 0, "possmi >>>0"); - assertEquals(pos_smi, (pos_smi) << 0, "possmi << 0"); - assertEquals(neg_smi, (neg_smi) >> 0, "negsmi >> 0"); - assertEquals(neg_smi + 0x100000000, (neg_smi) >>> 0, "negsmi >>> 0"); - assertEquals(neg_smi, (neg_smi) << 0), "negsmi << 0"; - - assertEquals(pos_non_smi / 2, (pos_non_smi) >> 1); - assertEquals(pos_non_smi / 2, (pos_non_smi) >>> 1); - assertEquals(-0x1194D800, (pos_non_smi) << 1); - assertEquals(pos_non_smi / 8, (pos_non_smi) >> 3); - assertEquals(pos_non_smi / 8, (pos_non_smi) >>> 3); - assertEquals(-0x46536000, (pos_non_smi) << 3); - assertEquals(0x73594000, (pos_non_smi) << 4); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >> 0); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >>> 0); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) << 0); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >> 1); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >>> 1); - assertEquals(-0x1194D800, (pos_non_smi + 0.5) << 1); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >> 3); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >>> 3); - assertEquals(-0x46536000, (pos_non_smi + 0.5) << 3); - assertEquals(0x73594000, (pos_non_smi + 0.5) << 4); - - assertEquals(neg_non_smi / 2, (neg_non_smi) >> 1, "negnonsmi >> 1"); - - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi) >>> 1, - "negnonsmi >>> 1"); - assertEquals(0x1194D800, (neg_non_smi) << 1); - assertEquals(neg_non_smi / 8, (neg_non_smi) >> 3); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi) >>> 3); - assertEquals(0x46536000, (neg_non_smi) << 3); - assertEquals(-0x73594000, (neg_non_smi) << 4); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) >> 0); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi - 0.5) >>> 0, - "negnonsmi.5 >>> 0"); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) << 0); - assertEquals(neg_non_smi / 2, (neg_non_smi - 0.5) >> 1); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi - 0.5) >>> 1, - "negnonsmi.5 >>> 1"); - assertEquals(0x1194D800, (neg_non_smi - 0.5) << 1); - assertEquals(neg_non_smi / 8, (neg_non_smi - 0.5) >> 3); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi - 0.5) >>> 3); - assertEquals(0x46536000, (neg_non_smi - 0.5) << 3); - assertEquals(-0x73594000, (neg_non_smi - 0.5) << 4); - - assertEquals(pos_smi / 2, (pos_smi) >> 1); - assertEquals(pos_smi / 2, (pos_smi) >>> 1); - assertEquals(pos_non_smi, (pos_smi) << 1); - assertEquals(pos_smi / 8, (pos_smi) >> 3); - assertEquals(pos_smi / 8, (pos_smi) >>> 3); - assertEquals(-0x2329b000, (pos_smi) << 3); - assertEquals(0x73594000, (pos_smi) << 5); - assertEquals(pos_smi, (pos_smi + 0.5) >> 0, "possmi.5 >> 0"); - assertEquals(pos_smi, (pos_smi + 0.5) >>> 0, "possmi.5 >>> 0"); - assertEquals(pos_smi, (pos_smi + 0.5) << 0, "possmi.5 << 0"); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >> 1); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >>> 1); - assertEquals(pos_non_smi, (pos_smi + 0.5) << 1); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >> 3); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >>> 3); - assertEquals(-0x2329b000, (pos_smi + 0.5) << 3); - assertEquals(0x73594000, (pos_smi + 0.5) << 5); - - assertEquals(neg_smi / 2, (neg_smi) >> 1); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi) >>> 1); - assertEquals(neg_non_smi, (neg_smi) << 1); - assertEquals(neg_smi / 8, (neg_smi) >> 3); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi) >>> 3); - assertEquals(0x46536000, (neg_smi) << 4); - assertEquals(-0x73594000, (neg_smi) << 5); - assertEquals(neg_smi, (neg_smi - 0.5) >> 0, "negsmi.5 >> 0"); - assertEquals(neg_smi + 0x100000000, (neg_smi - 0.5) >>> 0, "negsmi.5 >>> 0"); - assertEquals(neg_smi, (neg_smi - 0.5) << 0, "negsmi.5 << 0"); - assertEquals(neg_smi / 2, (neg_smi - 0.5) >> 1); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi - 0.5) >>> 1); - assertEquals(neg_non_smi, (neg_smi - 0.5) << 1); - assertEquals(neg_smi / 8, (neg_smi - 0.5) >> 3); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi - 0.5) >>> 3); - assertEquals(0x46536000, (neg_smi - 0.5) << 4); - assertEquals(-0x73594000, (neg_smi - 0.5) << 5); - // End block A - - // Repeat block A with 2^32 added to positive numbers and - // 2^32 subtracted from negative numbers. - // Begin block A repeat 1 - var two_32 = 0x100000000; - var neg_32 = -two_32; - assertEquals(pos_non_smi, (two_32 + pos_non_smi) >> 0); - assertEquals(pos_non_smi, (two_32 + pos_non_smi) >>> 0); - assertEquals(pos_non_smi, (two_32 + pos_non_smi) << 0); - assertEquals(neg_non_smi, (neg_32 + neg_non_smi) >> 0); - assertEquals(neg_non_smi + 0x100000000, (neg_32 + neg_non_smi) >>> 0); - assertEquals(neg_non_smi, (neg_32 + neg_non_smi) << 0); - assertEquals(pos_smi, (two_32 + pos_smi) >> 0, "2^32+possmi >> 0"); - assertEquals(pos_smi, (two_32 + pos_smi) >>> 0, "2^32+possmi >>> 0"); - assertEquals(pos_smi, (two_32 + pos_smi) << 0, "2^32+possmi << 0"); - assertEquals(neg_smi, (neg_32 + neg_smi) >> 0, "2^32+negsmi >> 0"); - assertEquals(neg_smi + 0x100000000, (neg_32 + neg_smi) >>> 0); - assertEquals(neg_smi, (neg_32 + neg_smi) << 0, "2^32+negsmi << 0"); - - assertEquals(pos_non_smi / 2, (two_32 + pos_non_smi) >> 1); - assertEquals(pos_non_smi / 2, (two_32 + pos_non_smi) >>> 1); - assertEquals(-0x1194D800, (two_32 + pos_non_smi) << 1); - assertEquals(pos_non_smi / 8, (two_32 + pos_non_smi) >> 3); - assertEquals(pos_non_smi / 8, (two_32 + pos_non_smi) >>> 3); - assertEquals(-0x46536000, (two_32 + pos_non_smi) << 3); - assertEquals(0x73594000, (two_32 + pos_non_smi) << 4); - assertEquals(pos_non_smi, (two_32 + pos_non_smi + 0.5) >> 0); - assertEquals(pos_non_smi, (two_32 + pos_non_smi + 0.5) >>> 0); - assertEquals(pos_non_smi, (two_32 + pos_non_smi + 0.5) << 0); - assertEquals(pos_non_smi / 2, (two_32 + pos_non_smi + 0.5) >> 1); - assertEquals(pos_non_smi / 2, (two_32 + pos_non_smi + 0.5) >>> 1); - assertEquals(-0x1194D800, (two_32 + pos_non_smi + 0.5) << 1); - assertEquals(pos_non_smi / 8, (two_32 + pos_non_smi + 0.5) >> 3); - assertEquals(pos_non_smi / 8, (two_32 + pos_non_smi + 0.5) >>> 3); - assertEquals(-0x46536000, (two_32 + pos_non_smi + 0.5) << 3); - assertEquals(0x73594000, (two_32 + pos_non_smi + 0.5) << 4); - - assertEquals(neg_non_smi / 2, (neg_32 + neg_non_smi) >> 1); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_32 + neg_non_smi) >>> 1); - assertEquals(0x1194D800, (neg_32 + neg_non_smi) << 1); - assertEquals(neg_non_smi / 8, (neg_32 + neg_non_smi) >> 3); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_32 + neg_non_smi) >>> 3); - assertEquals(0x46536000, (neg_32 + neg_non_smi) << 3); - assertEquals(-0x73594000, (neg_32 + neg_non_smi) << 4); - assertEquals(neg_non_smi, (neg_32 + neg_non_smi - 0.5) >> 0); - assertEquals(neg_non_smi + 0x100000000, (neg_32 + neg_non_smi - 0.5) >>> 0); - assertEquals(neg_non_smi, (neg_32 + neg_non_smi - 0.5) << 0); - assertEquals(neg_non_smi / 2, (neg_32 + neg_non_smi - 0.5) >> 1); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_32 + neg_non_smi - 0.5) - >>> 1); - assertEquals(0x1194D800, (neg_32 + neg_non_smi - 0.5) << 1); - assertEquals(neg_non_smi / 8, (neg_32 + neg_non_smi - 0.5) >> 3); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_32 + neg_non_smi - 0.5) - >>> 3); - assertEquals(0x46536000, (neg_32 + neg_non_smi - 0.5) << 3); - assertEquals(-0x73594000, (neg_32 + neg_non_smi - 0.5) << 4); - - assertEquals(pos_smi / 2, (two_32 + pos_smi) >> 1); - assertEquals(pos_smi / 2, (two_32 + pos_smi) >>> 1); - assertEquals(pos_non_smi, (two_32 + pos_smi) << 1); - assertEquals(pos_smi / 8, (two_32 + pos_smi) >> 3); - assertEquals(pos_smi / 8, (two_32 + pos_smi) >>> 3); - assertEquals(-0x2329b000, (two_32 + pos_smi) << 3); - assertEquals(0x73594000, (two_32 + pos_smi) << 5); - assertEquals(pos_smi, (two_32 + pos_smi + 0.5) >> 0); - assertEquals(pos_smi, (two_32 + pos_smi + 0.5) >>> 0); - assertEquals(pos_smi, (two_32 + pos_smi + 0.5) << 0); - assertEquals(pos_smi / 2, (two_32 + pos_smi + 0.5) >> 1); - assertEquals(pos_smi / 2, (two_32 + pos_smi + 0.5) >>> 1); - assertEquals(pos_non_smi, (two_32 + pos_smi + 0.5) << 1); - assertEquals(pos_smi / 8, (two_32 + pos_smi + 0.5) >> 3); - assertEquals(pos_smi / 8, (two_32 + pos_smi + 0.5) >>> 3); - assertEquals(-0x2329b000, (two_32 + pos_smi + 0.5) << 3); - assertEquals(0x73594000, (two_32 + pos_smi + 0.5) << 5); - - assertEquals(neg_smi / 2, (neg_32 + neg_smi) >> 1); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_32 + neg_smi) >>> 1); - assertEquals(neg_non_smi, (neg_32 + neg_smi) << 1); - assertEquals(neg_smi / 8, (neg_32 + neg_smi) >> 3); - assertEquals((neg_smi + 0x100000000) / 8, (neg_32 + neg_smi) >>> 3); - assertEquals(0x46536000, (neg_32 + neg_smi) << 4); - assertEquals(-0x73594000, (neg_32 + neg_smi) << 5); - assertEquals(neg_smi, (neg_32 + neg_smi - 0.5) >> 0, "-2^32+negsmi.5 >> 0"); - assertEquals(neg_smi + 0x100000000, (neg_32 + neg_smi - 0.5) >>> 0); - assertEquals(neg_smi, (neg_32 + neg_smi - 0.5) << 0, "-2^32+negsmi.5 << 0"); - assertEquals(neg_smi / 2, (neg_32 + neg_smi - 0.5) >> 1); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_32 + neg_smi - 0.5) >>> 1); - assertEquals(neg_non_smi, (neg_32 + neg_smi - 0.5) << 1); - assertEquals(neg_smi / 8, (neg_32 + neg_smi - 0.5) >> 3); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_32 + neg_smi - 0.5) >>> 3); - assertEquals(0x46536000, (neg_32 + neg_smi - 0.5) << 4); - assertEquals(-0x73594000, (neg_32 + neg_smi - 0.5) << 5); - // End block A repeat 1 - // Repeat block A with shift amounts in variables intialized with - // a constant. - var zero = 0; - var one = 1; - var three = 3; - var four = 4; - var five = 5; - // Begin block A repeat 2 - assertEquals(pos_non_smi, (pos_non_smi) >> zero); - assertEquals(pos_non_smi, (pos_non_smi) >>> zero); - assertEquals(pos_non_smi, (pos_non_smi) << zero); - assertEquals(neg_non_smi, (neg_non_smi) >> zero); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi) >>> zero); - assertEquals(neg_non_smi, (neg_non_smi) << zero); - assertEquals(pos_smi, (pos_smi) >> zero); - assertEquals(pos_smi, (pos_smi) >>> zero); - assertEquals(pos_smi, (pos_smi) << zero); - assertEquals(neg_smi, (neg_smi) >> zero, "negsmi >> zero"); - assertEquals(neg_smi + 0x100000000, (neg_smi) >>> zero); - assertEquals(neg_smi, (neg_smi) << zero, "negsmi << zero"); - - assertEquals(pos_non_smi / 2, (pos_non_smi) >> one); - assertEquals(pos_non_smi / 2, (pos_non_smi) >>> one); - assertEquals(-0x1194D800, (pos_non_smi) << one); - assertEquals(pos_non_smi / 8, (pos_non_smi) >> three); - assertEquals(pos_non_smi / 8, (pos_non_smi) >>> three); - assertEquals(-0x46536000, (pos_non_smi) << three); - assertEquals(0x73594000, (pos_non_smi) << four); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >> zero); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >>> zero); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) << zero); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >> one); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >>> one); - assertEquals(-0x1194D800, (pos_non_smi + 0.5) << one); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >> three); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >>> three); - assertEquals(-0x46536000, (pos_non_smi + 0.5) << three); - assertEquals(0x73594000, (pos_non_smi + 0.5) << four); - - assertEquals(neg_non_smi / 2, (neg_non_smi) >> one); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi) >>> one); - assertEquals(0x1194D800, (neg_non_smi) << one); - assertEquals(neg_non_smi / 8, (neg_non_smi) >> three); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi) >>> three); - assertEquals(0x46536000, (neg_non_smi) << three); - assertEquals(-0x73594000, (neg_non_smi) << four); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) >> zero); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi - 0.5) >>> zero); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) << zero); - assertEquals(neg_non_smi / 2, (neg_non_smi - 0.5) >> one); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi - 0.5) >>> one); - assertEquals(0x1194D800, (neg_non_smi - 0.5) << one); - assertEquals(neg_non_smi / 8, (neg_non_smi - 0.5) >> three); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi - 0.5) - >>> three); - assertEquals(0x46536000, (neg_non_smi - 0.5) << three); - assertEquals(-0x73594000, (neg_non_smi - 0.5) << four); - - assertEquals(pos_smi / 2, (pos_smi) >> one); - assertEquals(pos_smi / 2, (pos_smi) >>> one); - assertEquals(pos_non_smi, (pos_smi) << one); - assertEquals(pos_smi / 8, (pos_smi) >> three); - assertEquals(pos_smi / 8, (pos_smi) >>> three); - assertEquals(-0x2329b000, (pos_smi) << three); - assertEquals(0x73594000, (pos_smi) << five); - assertEquals(pos_smi, (pos_smi + 0.5) >> zero); - assertEquals(pos_smi, (pos_smi + 0.5) >>> zero); - assertEquals(pos_smi, (pos_smi + 0.5) << zero); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >> one); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >>> one); - assertEquals(pos_non_smi, (pos_smi + 0.5) << one); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >> three); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >>> three); - assertEquals(-0x2329b000, (pos_smi + 0.5) << three); - assertEquals(0x73594000, (pos_smi + 0.5) << five); - - assertEquals(neg_smi / 2, (neg_smi) >> one); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi) >>> one); - assertEquals(neg_non_smi, (neg_smi) << one); - assertEquals(neg_smi / 8, (neg_smi) >> three); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi) >>> three); - assertEquals(0x46536000, (neg_smi) << four); - assertEquals(-0x73594000, (neg_smi) << five); - assertEquals(neg_smi, (neg_smi - 0.5) >> zero); - assertEquals(neg_smi + 0x100000000, (neg_smi - 0.5) >>> zero); - assertEquals(neg_smi, (neg_smi - 0.5) << zero); - assertEquals(neg_smi / 2, (neg_smi - 0.5) >> one); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi - 0.5) >>> one); - assertEquals(neg_non_smi, (neg_smi - 0.5) << one); - assertEquals(neg_smi / 8, (neg_smi - 0.5) >> three); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi - 0.5) >>> three); - assertEquals(0x46536000, (neg_smi - 0.5) << four); - assertEquals(-0x73594000, (neg_smi - 0.5) << five); - // End block A repeat 2 - - // Repeat previous block, with computed values in the shift variables. - five = 0; - while (five < 5 ) ++five; - four = five - one; - three = four - one; - one = four - three; - zero = one - one; - - // Begin block A repeat 3 - assertEquals(pos_non_smi, (pos_non_smi) >> zero); - assertEquals(pos_non_smi, (pos_non_smi) >>> zero); - assertEquals(pos_non_smi, (pos_non_smi) << zero); - assertEquals(neg_non_smi, (neg_non_smi) >> zero); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi) >>> zero); - assertEquals(neg_non_smi, (neg_non_smi) << zero); - assertEquals(pos_smi, (pos_smi) >> zero); - assertEquals(pos_smi, (pos_smi) >>> zero); - assertEquals(pos_smi, (pos_smi) << zero); - assertEquals(neg_smi, (neg_smi) >> zero, "negsmi >> zero(2)"); - assertEquals(neg_smi + 0x100000000, (neg_smi) >>> zero); - assertEquals(neg_smi, (neg_smi) << zero, "negsmi << zero(2)"); - - assertEquals(pos_non_smi / 2, (pos_non_smi) >> one); - assertEquals(pos_non_smi / 2, (pos_non_smi) >>> one); - assertEquals(-0x1194D800, (pos_non_smi) << one); - assertEquals(pos_non_smi / 8, (pos_non_smi) >> three); - assertEquals(pos_non_smi / 8, (pos_non_smi) >>> three); - assertEquals(-0x46536000, (pos_non_smi) << three); - assertEquals(0x73594000, (pos_non_smi) << four); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >> zero); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) >>> zero); - assertEquals(pos_non_smi, (pos_non_smi + 0.5) << zero); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >> one); - assertEquals(pos_non_smi / 2, (pos_non_smi + 0.5) >>> one); - assertEquals(-0x1194D800, (pos_non_smi + 0.5) << one); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >> three); - assertEquals(pos_non_smi / 8, (pos_non_smi + 0.5) >>> three); - assertEquals(-0x46536000, (pos_non_smi + 0.5) << three); - assertEquals(0x73594000, (pos_non_smi + 0.5) << four); - - assertEquals(neg_non_smi / 2, (neg_non_smi) >> one); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi) >>> one); - assertEquals(0x1194D800, (neg_non_smi) << one); - assertEquals(neg_non_smi / 8, (neg_non_smi) >> three); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi) >>> three); - assertEquals(0x46536000, (neg_non_smi) << three); - assertEquals(-0x73594000, (neg_non_smi) << four); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) >> zero); - assertEquals(neg_non_smi + 0x100000000, (neg_non_smi - 0.5) >>> zero); - assertEquals(neg_non_smi, (neg_non_smi - 0.5) << zero); - assertEquals(neg_non_smi / 2, (neg_non_smi - 0.5) >> one); - assertEquals(neg_non_smi / 2 + 0x100000000 / 2, (neg_non_smi - 0.5) >>> one); - assertEquals(0x1194D800, (neg_non_smi - 0.5) << one); - assertEquals(neg_non_smi / 8, (neg_non_smi - 0.5) >> three); - assertEquals(neg_non_smi / 8 + 0x100000000 / 8, (neg_non_smi - 0.5) - >>> three); - assertEquals(0x46536000, (neg_non_smi - 0.5) << three); - assertEquals(-0x73594000, (neg_non_smi - 0.5) << four); - - assertEquals(pos_smi / 2, (pos_smi) >> one); - assertEquals(pos_smi / 2, (pos_smi) >>> one); - assertEquals(pos_non_smi, (pos_smi) << one); - assertEquals(pos_smi / 8, (pos_smi) >> three); - assertEquals(pos_smi / 8, (pos_smi) >>> three); - assertEquals(-0x2329b000, (pos_smi) << three); - assertEquals(0x73594000, (pos_smi) << five); - assertEquals(pos_smi, (pos_smi + 0.5) >> zero); - assertEquals(pos_smi, (pos_smi + 0.5) >>> zero); - assertEquals(pos_smi, (pos_smi + 0.5) << zero); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >> one); - assertEquals(pos_smi / 2, (pos_smi + 0.5) >>> one); - assertEquals(pos_non_smi, (pos_smi + 0.5) << one); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >> three); - assertEquals(pos_smi / 8, (pos_smi + 0.5) >>> three); - assertEquals(-0x2329b000, (pos_smi + 0.5) << three); - assertEquals(0x73594000, (pos_smi + 0.5) << five); - - assertEquals(neg_smi / 2, (neg_smi) >> one); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi) >>> one); - assertEquals(neg_non_smi, (neg_smi) << one); - assertEquals(neg_smi / 8, (neg_smi) >> three); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi) >>> three); - assertEquals(0x46536000, (neg_smi) << four); - assertEquals(-0x73594000, (neg_smi) << five); - assertEquals(neg_smi, (neg_smi - 0.5) >> zero, "negsmi.5 >> zero"); - assertEquals(neg_smi + 0x100000000, (neg_smi - 0.5) >>> zero); - assertEquals(neg_smi, (neg_smi - 0.5) << zero, "negsmi.5 << zero"); - assertEquals(neg_smi / 2, (neg_smi - 0.5) >> one); - assertEquals(neg_smi / 2 + 0x100000000 / 2, (neg_smi - 0.5) >>> one); - assertEquals(neg_non_smi, (neg_smi - 0.5) << one); - assertEquals(neg_smi / 8, (neg_smi - 0.5) >> three); - assertEquals(neg_smi / 8 + 0x100000000 / 8, (neg_smi - 0.5) >>> three); - assertEquals(0x46536000, (neg_smi - 0.5) << four); - assertEquals(-0x73594000, (neg_smi - 0.5) << five); - // End block A repeat 3 - - // Test non-integer shift value - assertEquals(5, 20.5 >> 2.4); - assertEquals(5, 20.5 >> 2.7); - var shift = 2.4; - assertEquals(5, 20.5 >> shift); - assertEquals(5, 20.5 >> shift + 0.3); - shift = shift + zero; - assertEquals(5, 20.5 >> shift); - assertEquals(5, 20.5 >> shift + 0.3); -} - -testShiftNonSmis(); - -function intConversion() { - function foo(x) { - assertEquals(x, (x * 1.0000000001) | 0, "foo more " + x); - assertEquals(x, x | 0, "foo " + x); - if (x > 0) { - assertEquals(x - 1, (x * 0.9999999999) | 0, "foo less " + x); - } else { - assertEquals(x + 1, (x * 0.9999999999) | 0, "foo less " + x); - } - } - for (var i = 1; i < 0x80000000; i *= 2) { - foo(i); - foo(-i); - } - for (var i = 1; i < 1/0; i *= 2) { - assertEquals(i | 0, (i * 1.0000000000000001) | 0, "b" + i); - assertEquals(-i | 0, (i * -1.0000000000000001) | 0, "c" + i); - } - for (var i = 0.5; i > 0; i /= 2) { - assertEquals(0, i | 0, "d" + i); - assertEquals(0, -i | 0, "e" + i); - } -} - -intConversion(); - -// Verify that we handle the (optimized) corner case of shifting by -// zero even for non-smis. -function shiftByZero(n) { return n << 0; } - -assertEquals(3, shiftByZero(3.1415)); - -// Verify that the static type information of x >>> 32 is computed correctly. -function LogicalShiftRightByMultipleOf32(x) { - x = x >>> 32; - return x + x; -} - -assertEquals(4589934592, LogicalShiftRightByMultipleOf32(-2000000000)); -assertEquals(4589934592, LogicalShiftRightByMultipleOf32(-2000000000)); - -// Verify that the shift amount is reduced modulo 32, not modulo 64. -function LeftShiftThreeBy(x) {return 3 << x;} -assertEquals(24, LeftShiftThreeBy(3)); -assertEquals(24, LeftShiftThreeBy(35)); -assertEquals(24, LeftShiftThreeBy(67)); -assertEquals(24, LeftShiftThreeBy(-29)); - -// Regression test for a bug in the ARM code generator. For some register -// allocations we got the Smi overflow case wrong. -function f(x, y) { return y + ( 1 << (x & 31)); } -assertEquals(-2147483647, f(31, 1)); - -// Regression test for correct handling of overflow in smi comparison. -assertTrue(-0x40000000 < 42); diff --git a/implementation-contributed/v8/mjsunit/smi-representation.js b/implementation-contributed/v8/mjsunit/smi-representation.js deleted file mode 100644 index 10545c76806..00000000000 --- a/implementation-contributed/v8/mjsunit/smi-representation.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --track-fields --track-double-fields --allow-natives-syntax - -function smi_field() { - // Assign twice to make the field non-constant. - // TODO(ishell): update test once constant field tracking is done. - var o = {smi: 1}; - o.smi = 0; - return o; -} - -function check_smi_repr(o, d1, d2) { - var s = o.smi; - var d = d1 - d2; - s = s + d; - o.smi = s; - return o; -} - -var test = smi_field(); -check_smi_repr(smi_field(), 5, 3); -check_smi_repr(smi_field(), 6, 2); -%OptimizeFunctionOnNextCall(check_smi_repr); -var val = check_smi_repr(smi_field(), 8, 1); -assertTrue(%HaveSameMap(val, test)); - -function tagged_smi_field() { - var o = {"tag":false}; - o.tag = 10; - return o; -} - -function check_smi_repr_from_tagged(o, o2) { - var t = o2.tag; - o.smi = t; - return o; -} - -check_smi_repr_from_tagged(smi_field(), tagged_smi_field()); -check_smi_repr_from_tagged(smi_field(), tagged_smi_field()); -%OptimizeFunctionOnNextCall(check_smi_repr_from_tagged); -var val = check_smi_repr_from_tagged(smi_field(), tagged_smi_field()); -assertTrue(%HaveSameMap(val, test)); -var overflow = tagged_smi_field(); -overflow.tag = 0x80000000; -var val = check_smi_repr_from_tagged(smi_field(), overflow); diff --git a/implementation-contributed/v8/mjsunit/sparse-array.js b/implementation-contributed/v8/mjsunit/sparse-array.js deleted file mode 100644 index 114ab0aafdd..00000000000 --- a/implementation-contributed/v8/mjsunit/sparse-array.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Because of a bug in the heuristics used to figure out when to -// convert a slow-case elements backing storage to fast case, the -// following took a very long time. -// -// This test passes if it finishes almost immediately. -for (var repetitions = 0; repetitions < 20; repetitions++) { - var stride = 500; - var array = []; - for (var i = 0; i < 1000; i++) { - array[i * stride] = i; - } -} diff --git a/implementation-contributed/v8/mjsunit/splice-proxy.js b/implementation-contributed/v8/mjsunit/splice-proxy.js deleted file mode 100644 index d33a2efeb07..00000000000 --- a/implementation-contributed/v8/mjsunit/splice-proxy.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var array = []; -var proxy = new Proxy(new Proxy(array, {}), {}); -var Ctor = function() {}; -var result; - -array.constructor = function() {}; -array.constructor[Symbol.species] = Ctor; - -Array.prototype.slice.call(proxy); diff --git a/implementation-contributed/v8/mjsunit/spread-large-array.js b/implementation-contributed/v8/mjsunit/spread-large-array.js deleted file mode 100644 index 5ec7a82e381..00000000000 --- a/implementation-contributed/v8/mjsunit/spread-large-array.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that spread can create arrays in large object space. - -const n = 130000; - -{ - let x = new Array(n); - for (let i = 0; i < n; ++i) x[i] = i; - let a = [...x]; -} diff --git a/implementation-contributed/v8/mjsunit/spread-large-map.js b/implementation-contributed/v8/mjsunit/spread-large-map.js deleted file mode 100644 index f70770d028f..00000000000 --- a/implementation-contributed/v8/mjsunit/spread-large-map.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that spread can create arrays in large object space. - -const n = 130000; - -{ - let x = new Map(); - for (let i = 0; i < n; ++i) x.set(i, String(i)); - let a = [...x.values()]; -}{ - let x = new Map(); - for (let i = 0; i < n; ++i) x.set(i, String(i)); - let a = [...x.keys()]; -} diff --git a/implementation-contributed/v8/mjsunit/spread-large-set.js b/implementation-contributed/v8/mjsunit/spread-large-set.js deleted file mode 100644 index e9f406ea023..00000000000 --- a/implementation-contributed/v8/mjsunit/spread-large-set.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that spread can create arrays in large object space. - -const n = 130000; - -{ - let x = new Set(); - for (let i = 0; i < n; ++i) x.add(i); - let a = [...x]; -}{ - let x = new Set(); - for (let i = 0; i < n; ++i) x.add(i); - let a = [...x.values()]; -}{ - let x = new Set(); - for (let i = 0; i < n; ++i) x.add(i); - let a = [...x.keys()]; -} diff --git a/implementation-contributed/v8/mjsunit/spread-large-string.js b/implementation-contributed/v8/mjsunit/spread-large-string.js deleted file mode 100644 index 14320ee5d6c..00000000000 --- a/implementation-contributed/v8/mjsunit/spread-large-string.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Test that spread can create arrays in large object space. - -const n = 130000; - -{ - let x = new Array(n); - for (let i = 0; i < n; ++i) x[i] = i; - let a = [...String(x)]; -} diff --git a/implementation-contributed/v8/mjsunit/stack-overflow-arity-catch-noinline.js b/implementation-contributed/v8/mjsunit/stack-overflow-arity-catch-noinline.js deleted file mode 100644 index 6d434c2ecba..00000000000 --- a/implementation-contributed/v8/mjsunit/stack-overflow-arity-catch-noinline.js +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var stackOverflowIn20ArgFn = false, gotRegexCatch = false, gotDateCatch = false; - -function funcWith20Args(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, - arg9, arg10, arg11, arg12, arg13, arg14, arg15, - arg16, arg17, arg18, arg19, arg20) -{ - assertUnreachable("shouldn't arrive in non-inlined 20 arg function after stack overflow"); -} - -// If we should run with TurboFan, then make sure {funcWith20Args} does -// not get inlined. -%NeverOptimizeFunction(funcWith20Args); - -function mutual_recursion_1() -{ - try { - mutual_recursion_2(); - } catch (err) { - // Should get here because of stack overflow, - // now cause a stack overflow exception due to arity processing - try { - var dummy = new RegExp('a|b|c'); - } catch(err) { - // (1) It is dependent on the stack size if we arrive here, in (2) or - // both. - gotRegexCatch = true; - } - - try { - funcWith20Args(1, 2, 3); - } catch (err2) { - stackOverflowIn20ArgFn = true; - } - } -} - -function mutual_recursion_2() -{ - try { - var dummy = new Date(); - } catch(err) { - // (2) It is dependent on the stack size if we arrive here, in (1) or - // both. - gotDateCatch = true; - } - - try { - mutual_recursion_1(); - } catch (err) { - // Should get here because of stack overflow, - // now cause a stack overflow exception due to arity processing - try { - funcWith20Args(1, 2, 3, 4, 5, 6); - } catch (err2) { - stackOverflowIn20ArgFn = true; - } - } -} - -mutual_recursion_1(); - -assertTrue(stackOverflowIn20ArgFn); diff --git a/implementation-contributed/v8/mjsunit/stack-traces-2.js b/implementation-contributed/v8/mjsunit/stack-traces-2.js deleted file mode 100644 index ca78ed3858f..00000000000 --- a/implementation-contributed/v8/mjsunit/stack-traces-2.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --builtins-in-stack-traces - - -// Poisonous object that throws a reference error if attempted converted to -// a primitive values. -var thrower = { valueOf: function() { FAIL; }, - toString: function() { FAIL; } }; - -// Tests that a native constructor function is included in the -// stack trace. -function testTraceNativeConstructor(nativeFunc) { - var nativeFuncName = nativeFunc.name; - try { - new nativeFunc(thrower); - assertUnreachable(nativeFuncName); - } catch (e) { - assertTrue(e.stack.indexOf(nativeFuncName) >= 0, nativeFuncName); - } -} - -// Tests that a native conversion function is included in the -// stack trace. -function testTraceNativeConversion(nativeFunc) { - var nativeFuncName = nativeFunc.name; - try { - nativeFunc(thrower); - assertUnreachable(nativeFuncName); - } catch (e) { - assertTrue(e.stack.indexOf(nativeFuncName) >= 0, nativeFuncName); - } -} - -testTraceNativeConversion(String); // Does ToString on argument. -testTraceNativeConversion(RegExp); // Does ToString on argument. - -testTraceNativeConstructor(String); // Does ToString on argument. -testTraceNativeConstructor(RegExp); // Does ToString on argument. diff --git a/implementation-contributed/v8/mjsunit/stack-traces-class-fields.js b/implementation-contributed/v8/mjsunit/stack-traces-class-fields.js deleted file mode 100644 index d40abbab9a5..00000000000 --- a/implementation-contributed/v8/mjsunit/stack-traces-class-fields.js +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Flags: --harmony-class-fields - -// Utility function for testing that the expected strings occur -// in the stack trace produced when running the given function. -function testTrace(name, fun, expected, unexpected) { - var threw = false; - try { - fun(); - } catch (e) { - for (var i = 0; i < expected.length; i++) { - assertTrue( - e.stack.indexOf(expected[i]) != -1, - name + " doesn't contain expected[" + i + "] stack = " + e.stack - ); - } - if (unexpected) { - for (var i = 0; i < unexpected.length; i++) { - assertEquals( - e.stack.indexOf(unexpected[i]), - -1, - name + " contains unexpected[" + i + "]" - ); - } - } - threw = true; - } - assertTrue(threw, name + " didn't throw"); -} - -function thrower() { - FAIL; -} - -function testClassConstruction() { - class X { - static x = thrower(); - } -} - -// ReferenceError: FAIL is not defined -// at thrower -// at -// at testClassConstruction -// at testTrace -testTrace( - "during class construction", - testClassConstruction, - ["thrower", ""], - ["anonymous"] -); - -function testClassConstruction2() { - class X { - [thrower()]; - } -} - -// ReferenceError: FAIL is not defined -// at thrower -// at testClassConstruction2 -// at testTrace -testTrace("during class construction2", testClassConstruction2, ["thrower"]); - -function testClassInstantiation() { - class X { - x = thrower(); - } - - new X(); -} - -// ReferenceError: FAIL is not defined -// at thrower -// at X. -// at new X -// at testClassInstantiation -// at testTrace -testTrace( - "during class instantiation", - testClassInstantiation, - ["thrower", "X.", "new X"], - ["anonymous"] -); - -function testClassInstantiationWithSuper() { - class Base {} - - class X extends Base { - x = thrower(); - } - - new X(); -} - -// ReferenceError: FAIL is not defined -// at thrower -// at X. -// at new X -// at testClassInstantiation -// at testTrace -testTrace( - "during class instantiation with super", - testClassInstantiationWithSuper, - ["thrower", "X.", "new X"], - ["Base", "anonymous"] -); - -function testClassInstantiationWithSuper2() { - class Base {} - - class X extends Base { - constructor() { - super(); - } - x = thrower(); - } - - new X(); -} - -// ReferenceError: FAIL is not defined -// at thrower -// at X. -// at new X -// at testClassInstantiation -// at testTrace -testTrace( - "during class instantiation with super2", - testClassInstantiationWithSuper2, - ["thrower", "X.", "new X"], - ["Base", "anonymous"] -); - -function testClassInstantiationWithSuper3() { - class Base { - x = thrower(); - } - - class X extends Base { - constructor() { - super(); - } - } - - new X(); -} - -// ReferenceError: FAIL is not defined -// at thrower -// at X. -// at new Base -// at new X -// at testClassInstantiationWithSuper3 -// at testTrace -testTrace( - "during class instantiation with super3", - testClassInstantiationWithSuper3, - ["thrower", "X.", "new Base", "new X"], - ["anonymous"] -); - -function testClassFieldCall() { - class X { - x = thrower; - } - - let x = new X(); - x.x(); -} - -// ReferenceError: FAIL is not defined -// at X.thrower [as x] -// at testClassFieldCall -// at testTrace -testTrace( - "during class field call", - testClassFieldCall, - ["X.thrower"], - ["anonymous"] -); - -function testStaticClassFieldCall() { - class X { - static x = thrower; - } - - X.x(); -} - -// ReferenceError: FAIL is not defined -// at Function.thrower [as x] -// at testStaticClassFieldCall -// at testTrace -testTrace( - "during static class field call", - testStaticClassFieldCall, - ["Function.thrower"], - ["anonymous"] -); - -function testClassFieldCallWithFNI() { - class X { - x = function() { - FAIL; - }; - } - - let x = new X(); - x.x(); -} - -// ReferenceError: FAIL is not defined -// at X.x -// at testClassFieldCallWithFNI -// at testTrace -testTrace( - "during class field call with FNI", - testClassFieldCallWithFNI, - ["X.x"], - ["anonymous"] -); - -function testStaticClassFieldCallWithFNI() { - class X { - static x = function() { - FAIL; - }; - } - - X.x(); -} - -// ReferenceError: FAIL is not defined -// at Function.x -// at testStaticClassFieldCallWithFNI -// at testTrace -testTrace( - "during static class field call with FNI", - testStaticClassFieldCallWithFNI, - ["Function.x"], - ["anonymous"] -); diff --git a/implementation-contributed/v8/mjsunit/stack-traces-custom-lazy.js b/implementation-contributed/v8/mjsunit/stack-traces-custom-lazy.js deleted file mode 100644 index 02a465e6580..00000000000 --- a/implementation-contributed/v8/mjsunit/stack-traces-custom-lazy.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function testPrepareStackTrace(closure) { - var error = undefined; - try { - closure(); - assertUnreachable(); - } catch (e) { - error = e; - } - - // We expect custom formatting to be lazy. Setting the custom - // function right before calling error.stack should be fine. - Error.prepareStackTrace = function(e, frames) { - return "bar"; - } - - assertEquals("bar", error.stack); - Error.prepareStackTrace = undefined; -} - -testPrepareStackTrace(function() { throw new Error("foo"); }); -testPrepareStackTrace(function f() { f(); }); diff --git a/implementation-contributed/v8/mjsunit/stack-traces-custom.js b/implementation-contributed/v8/mjsunit/stack-traces-custom.js deleted file mode 100644 index 0cb53faaec8..00000000000 --- a/implementation-contributed/v8/mjsunit/stack-traces-custom.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var o = { - f: function() { throw new Error(); }, - get j() { o.h(); }, - set k(_) { o.j; }, -}; -o.g1 = function() { o.f() } -o.g2 = o.g1; -o.h = function() { o.g1() } - -try { - o.k = 42; -} catch (e) { - Error.prepareStackTrace = function(e, frames) { return frames; }; - var frames = e.stack; - Error.prepareStackTrace = undefined; - assertEquals("f", frames[0].getMethodName()); - assertEquals(null, frames[1].getMethodName()); - assertEquals("h", frames[2].getMethodName()); - assertEquals("j", frames[3].getMethodName()); - assertEquals("k", frames[4].getMethodName()); - assertEquals(null, frames[5].getMethodName()); -} - -function testMethodName(f, frameNumber, expectedName) { - try { - Error.prepareStackTrace = function(e, frames) { return frames; } - f(); - assertUnreachable(); - } catch (e) { - const frame = e.stack[frameNumber]; - assertEquals(expectedName, frame.getMethodName()); - } finally { - Error.prepareStackTrace = undefined; - } -} - -const thrower = { valueOf: () => { throw new Error(); }}; - -{ - const str = ""; - testMethodName(() => { str.indexOf(str, thrower); }, 1, "indexOf"); -} - -{ - const nr = 42; - testMethodName(() => { nr.toString(thrower); }, 1, "toString"); -} diff --git a/implementation-contributed/v8/mjsunit/stack-traces-overflow.js b/implementation-contributed/v8/mjsunit/stack-traces-overflow.js deleted file mode 100644 index 61153b38583..00000000000 --- a/implementation-contributed/v8/mjsunit/stack-traces-overflow.js +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --stack-size=100 - -function overflow() { - var a, b, c, d, e; // Allocates some locals on the function's stack frame. - overflow(); -} -function rec1(a) { rec1(a+1); } -function rec2(a) { rec3(a+1); } -function rec3(a) { rec2(a+1); } - -// Test stack trace has correct function location at top of the stack. -try { - overflow(); -} catch (e) { - var first_frame = e.stack.split("\n")[1] - // The overflow can happen when pushing the arguments (in interpreter) or when - // the new function execution is starting. So the stack trace could either - // point to start of the function (stack-traces-overflow.js30:18) or to the - // location of call (stack-traces-overflow.js32:3). - assertTrue((first_frame.indexOf("stack-traces-overflow.js:30:18") > 0) || - (first_frame.indexOf("stack-traces-overflow.js:32:3") > 0) ); -} - -// Test stack trace getter and setter. -try { - rec1(0); -} catch (e) { - assertTrue(e.stack.indexOf("rec1") > 0); - e.stack = "123"; - assertEquals("123", e.stack); -} - -// Test setter w/o calling the getter. -try { - rec2(0); -} catch (e) { - assertTrue(e.stack.indexOf("rec2") > 0); - assertTrue(e.stack.indexOf("rec3") > 0); - e.stack = "123"; - assertEquals("123", e.stack); -} - -// Test getter to make sure setter does not affect the boilerplate. -try { - rec1(0); -} catch (e) { - assertTrue(e.stack.indexOf("rec1") > 0); - assertInstanceof(e, RangeError); -} - - -// Check setting/getting stack property on the prototype chain. -function testErrorPrototype(prototype) { - var object = {}; - object.__proto__ = prototype; - object.stack = "123"; // Overwriting stack property succeeds. - assertTrue(prototype.stack != object.stack); - assertEquals("123", object.stack); -} - -try { - rec1(0); -} catch (e) { - e.stack; - testErrorPrototype(e); -} - -try { - rec1(0); -} catch (e) { - testErrorPrototype(e); -} - -try { - throw new Error(); -} catch (e) { - testErrorPrototype(e); -} - -Error.stackTraceLimit = 3; -try { - rec1(0); -} catch (e) { - assertEquals(4, e.stack.split('\n').length); -} - -Error.stackTraceLimit = 25.9; -try { - rec1(0); -} catch (e) { - assertEquals(26, e.stack.split('\n').length); -} - -Error.stackTraceLimit = NaN; -try { - rec1(0); -} catch (e) { - assertEquals(1, e.stack.split('\n').length); -} - -// A limit outside the range of integers. -Error.stackTraceLimit = 1e12; -try { - rec1(0); -} catch (e) { - assertTrue(e.stack.split('\n').length > 100); -} - -Error.stackTraceLimit = Infinity; -try { - rec1(0); -} catch (e) { - assertTrue(e.stack.split('\n').length > 100); -} - -Error.stackTraceLimit = "not a number"; -try { - rec1(0); -} catch (e) { - assertEquals(undefined, e.stack); - e.stack = "abc"; - assertEquals("abc", e.stack); -} - -Error.stackTraceLimit = 3; -Error = ""; // Overwrite Error in the global object. -try { - rec1(0); -} catch (e) { - assertEquals(4, e.stack.split('\n').length); -} diff --git a/implementation-contributed/v8/mjsunit/stack-traces.js b/implementation-contributed/v8/mjsunit/stack-traces.js deleted file mode 100644 index 81418f70f7e..00000000000 --- a/implementation-contributed/v8/mjsunit/stack-traces.js +++ /dev/null @@ -1,437 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function testMethodNameInference() { - function Foo() { } - Foo.prototype.bar = function () { FAIL; }; - (new Foo).bar(); -} - -function testNested() { - function one() { - function two() { - function three() { - FAIL; - } - three(); - } - two(); - } - one(); -} - -function testArrayNative() { - [1, 2, 3].map(function () { FAIL; }); -} - -function testImplicitConversion() { - function Nirk() { } - Nirk.prototype.valueOf = function () { FAIL; }; - return 1 + (new Nirk); -} - -function testEval() { - eval("function Doo() { FAIL; }; Doo();"); -} - -function testNestedEval() { - var x = "FAIL"; - eval("function Outer() { eval('function Inner() { eval(x); }'); Inner(); }; Outer();"); -} - -function testEvalWithSourceURL() { - eval("function Doo() { FAIL; }; Doo();\n//# sourceURL=res://name"); -} - -function testNestedEvalWithSourceURL() { - var x = "FAIL"; - var innerEval = 'function Inner() { eval(x); }\n//@ sourceURL=res://inner-eval'; - eval("function Outer() { eval(innerEval); Inner(); }; Outer();\n//# sourceURL=res://outer-eval"); -} - -function testValue() { - Number.prototype.causeError = function () { FAIL; }; - (1).causeError(); -} - -function testConstructor() { - function Plonk() { FAIL; } - new Plonk(); -} - -function testRenamedMethod() { - function a$b$c$d() { return FAIL; } - function Wookie() { } - Wookie.prototype.d = a$b$c$d; - (new Wookie).d(); -} - -function testAnonymousMethod() { - (function () { FAIL }).call([1, 2, 3]); -} - -function testFunctionName() { - function gen(name, counter) { - var f = function foo() { - if (counter === 0) { - FAIL; - } - gen(name, counter - 1)(); - } - if (counter === 4) { - Object.defineProperty(f, 'name', {get: function(){ throw 239; }}); - } else if (counter == 3) { - Object.defineProperty(f, 'name', {value: 'boo' + '_' + counter}); - } else { - Object.defineProperty(f, 'name', {writable: true}); - if (counter === 2) - f.name = 42; - else - f.name = name + '_' + counter; - } - return f; - } - gen('foo', 4)(); -} - -function testFunctionInferredName() { - var f = function() { - FAIL; - } - f(); -} - -function CustomError(message, stripPoint) { - this.message = message; - Error.captureStackTrace(this, stripPoint); -} - -CustomError.prototype.toString = function () { - return "CustomError: " + this.message; -}; - -function testDefaultCustomError() { - throw new CustomError("hep-hey", undefined); -} - -function testStrippedCustomError() { - throw new CustomError("hep-hey", CustomError); -} - -MyObj = function() { FAIL; } - -MyObjCreator = function() {} - -MyObjCreator.prototype.Create = function() { - return new MyObj(); -} - -function testClassNames() { - (new MyObjCreator).Create(); -} - -// Utility function for testing that the expected strings occur -// in the stack trace produced when running the given function. -function testTrace(name, fun, expected, unexpected) { - var threw = false; - try { - fun(); - } catch (e) { - for (var i = 0; i < expected.length; i++) { - assertTrue(e.stack.indexOf(expected[i]) != -1, - name + " doesn't contain expected[" + i + "] stack = " + e.stack); - } - if (unexpected) { - for (var i = 0; i < unexpected.length; i++) { - assertEquals(e.stack.indexOf(unexpected[i]), -1, - name + " contains unexpected[" + i + "]"); - } - } - threw = true; - } - assertTrue(threw, name + " didn't throw"); -} - -// Test that the error constructor is not shown in the trace -function testCallerCensorship() { - var threw = false; - try { - FAIL; - } catch (e) { - assertEquals(-1, e.stack.indexOf('at new ReferenceError'), - "CallerCensorship contained new ReferenceError"); - threw = true; - } - assertTrue(threw, "CallerCensorship didn't throw"); -} - -// Test that the explicit constructor call is shown in the trace -function testUnintendedCallerCensorship() { - var threw = false; - try { - new ReferenceError({ - toString: function () { - FAIL; - } - }); - } catch (e) { - assertTrue(e.stack.indexOf('at new ReferenceError') != -1, - "UnintendedCallerCensorship didn't contain new ReferenceError"); - threw = true; - } - assertTrue(threw, "UnintendedCallerCensorship didn't throw"); -} - -// If an error occurs while the stack trace is being formatted it should -// be handled gracefully. -function testErrorsDuringFormatting() { - function Nasty() { } - Nasty.prototype.foo = function () { throw new RangeError(); }; - var n = new Nasty(); - n.__defineGetter__('constructor', function () { CONS_FAIL; }); - assertThrows(()=>n.foo(), RangeError); - // Now we can't even format the message saying that we couldn't format - // the stack frame. Put that in your pipe and smoke it! - ReferenceError.prototype.toString = function () { NESTED_FAIL; }; - assertThrows(()=>n.foo(), RangeError); -} - - -// Poisonous object that throws a reference error if attempted converted to -// a primitive values. -var thrower = { valueOf: function() { FAIL; }, - toString: function() { FAIL; } }; - -// Tests that a native constructor function is included in the -// stack trace. -function testTraceNativeConstructor(nativeFunc) { - var nativeFuncName = nativeFunc.name; - try { - new nativeFunc(thrower); - assertUnreachable(nativeFuncName); - } catch (e) { - assertTrue(e.stack.indexOf(nativeFuncName) >= 0, nativeFuncName); - } -} - -// Tests that a native conversion function is included in the -// stack trace. -function testTraceNativeConversion(nativeFunc) { - var nativeFuncName = nativeFunc.name; - try { - nativeFunc(thrower); - assertUnreachable(nativeFuncName); - } catch (e) { - assertTrue(e.stack.indexOf(nativeFuncName) >= 0, nativeFuncName); - } -} - - -function testOmittedBuiltin(throwing, omitted) { - var reached = false; - try { - throwing(); - reached = true; - } catch (e) { - assertTrue(e.stack.indexOf(omitted) < 0, omitted); - } finally { - assertFalse(reached); - } -} - - -testTrace("testArrayNative", testArrayNative, ["Array.map"]); -testTrace("testNested", testNested, ["at one", "at two", "at three"]); -testTrace("testMethodNameInference", testMethodNameInference, ["at Foo.bar"]); -testTrace("testImplicitConversion", testImplicitConversion, ["at Nirk.valueOf"]); -testTrace("testEval", testEval, ["at Doo (eval at testEval"]); -testTrace("testNestedEval", testNestedEval, ["eval at Inner (eval at Outer"]); -testTrace("testEvalWithSourceURL", testEvalWithSourceURL, - [ "at Doo (res://name:1:18)" ]); -testTrace("testNestedEvalWithSourceURL", testNestedEvalWithSourceURL, - [" at Inner (res://inner-eval:1:20)", - " at Outer (res://outer-eval:1:37)"]); -testTrace("testValue", testValue, ["at Number.causeError"]); -testTrace("testConstructor", testConstructor, ["new Plonk"]); -testTrace("testRenamedMethod", testRenamedMethod, ["Wookie.a$b$c$d [as d]"]); -testTrace("testAnonymousMethod", testAnonymousMethod, ["Array."]); -testTrace("testFunctionName", testFunctionName, - [" at foo_0 ", " at foo_1", " at foo ", " at boo_3 ", " at foo "]); -testTrace("testFunctionInferredName", testFunctionInferredName, [" at f "]); -testTrace("testDefaultCustomError", testDefaultCustomError, - ["hep-hey", "new CustomError"], - ["collectStackTrace"]); -testTrace("testStrippedCustomError", testStrippedCustomError, ["hep-hey"], - ["new CustomError", "collectStackTrace"]); -testTrace("testClassNames", testClassNames, - ["new MyObj", "MyObjCreator.Create"], ["as Create"]); -testCallerCensorship(); -testUnintendedCallerCensorship(); -testErrorsDuringFormatting(); - -testTraceNativeConversion(String); // Does ToString on argument. -testTraceNativeConversion(RegExp); // Does ToString on argument. - -testTraceNativeConstructor(String); // Does ToString on argument. -testTraceNativeConstructor(RegExp); // Does ToString on argument. - -// Omitted because QuickSort has builtins object as receiver, and is non-native -// builtin. -testOmittedBuiltin(function(){ [thrower, 2].sort(function (a,b) { - (b < a) - (a < b); }); - }, "QuickSort"); - -var reached = false; -var error = new Error(); -error.toString = function() { reached = true; }; -error.stack; -assertFalse(reached); - -reached = false; -error = new Error(); -Array.prototype.push = function(x) { reached = true; }; -Array.prototype.join = function(x) { reached = true; }; -error.stack; -assertFalse(reached); - -var fired = false; -error = new Error({ toString: function() { fired = true; } }); -assertTrue(fired); -error.stack; -assertTrue(fired); - -// Check that throwing exception in a custom stack trace formatting function -// does not lead to recursion. -Error.prepareStackTrace = function() { throw new Error("abc"); }; -var message; -try { - try { - throw new Error(); - } catch (e) { - e.stack; - } -} catch (e) { - message = e.message; -} - -assertEquals("abc", message); - -// Test that modifying Error.prepareStackTrace by itself works. -Error.prepareStackTrace = function() { Error.prepareStackTrace = "custom"; }; -new Error().stack; - -assertEquals("custom", Error.prepareStackTrace); - -// Check that the formatted stack trace can be set to undefined. -error = new Error(); -error.stack = undefined; -assertEquals(undefined, error.stack); - -// Check that the stack trace accessors are not forcibly set. -var my_error = {}; -Object.freeze(my_error); -assertThrows(function() { Error.captureStackTrace(my_error); }); - -my_error = {}; -Object.preventExtensions(my_error); -assertThrows(function() { Error.captureStackTrace(my_error); }); - -var fake_error = {}; -my_error = new Error(); -var stolen_getter = Object.getOwnPropertyDescriptor(my_error, 'stack').get; -Object.defineProperty(fake_error, 'stack', { get: stolen_getter }); -assertEquals(undefined, fake_error.stack); - -// Check that overwriting the stack property during stack trace formatting -// does not crash. -error = new Error(); -error.__defineGetter__("name", function() { error.stack = "abc"; }); -assertEquals("abc", error.stack); - -error = new Error(); -error.__defineGetter__("name", function() { delete error.stack; }); -assertEquals(undefined, error.stack); - -// Check that repeated trace collection does not crash. -error = new Error(); -Error.captureStackTrace(error); - -// Check property descriptor. -var o = {}; -Error.captureStackTrace(o); -assertEquals([], Object.keys(o)); -var desc = Object.getOwnPropertyDescriptor(o, "stack"); -assertFalse(desc.enumerable); -assertTrue(desc.configurable); -assertTrue(desc.writable); - -// Check that exceptions thrown within prepareStackTrace throws an exception. -Error.prepareStackTrace = function(e, frames) { throw 42; } -assertThrows(() => new Error().stack); - -// Check that we don't crash when CaptureSimpleStackTrace returns undefined. -var o = {}; -var oldStackTraceLimit = Error.stackTraceLimit; -Error.stackTraceLimit = "not a number"; -Error.captureStackTrace(o); -Error.stackTraceLimit = oldStackTraceLimit; - -// Check that we don't crash when a callsite's function's script is empty. -Error.prepareStackTrace = function(e, frames) { - assertEquals(undefined, frames[0].getEvalOrigin()); -} -try { - DataView(); - assertUnreachable(); -} catch (e) { - assertEquals(undefined, e.stack); -} - -// Check that a tight recursion in prepareStackTrace throws when accessing -// stack. Trying again without a custom formatting function formats correctly. -var err = new Error("abc"); -Error.prepareStackTrace = () => Error.prepareStackTrace(); -try { - err.stack; - assertUnreachable(); -} catch (e) { - err = e; -} - -Error.prepareStackTrace = undefined; -assertTrue( - err.stack.indexOf("RangeError: Maximum call stack size exceeded") != -1); -assertTrue(err.stack.indexOf("prepareStackTrace") != -1); - -// Check that the callsite constructor throws. - -Error.prepareStackTrace = (e,s) => s; -var constructor = new Error().stack[0].constructor; - -assertThrows(() => constructor.call()); -assertThrows(() => constructor.call( - null, {}, () => undefined, {valueOf() { return 0 }}, false)); diff --git a/implementation-contributed/v8/mjsunit/store-dictionary.js b/implementation-contributed/v8/mjsunit/store-dictionary.js deleted file mode 100644 index 5b22ebfe5c0..00000000000 --- a/implementation-contributed/v8/mjsunit/store-dictionary.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test dictionary store ICs. - -// Function that stores property 'x' on an object. -function store(obj) { obj.x = 42; } - -// Create object and force it to dictionary mode by deleting property. -var o = { x: 32, y: 33 }; -delete o.y; - -// Make the store ic in the 'store' function go into dictionary store -// case. -for (var i = 0; i < 3; i++) { - store(o); -} -assertEquals(42, o.x); - -// Test that READ_ONLY property attribute is respected. Make 'x' -// READ_ONLY. -Object.defineProperty(o, 'x', { value: 32, writable: false }); - -// Attempt to store using the store ic in the 'store' function. -store(o); - -// Check that the store did not change the value. -assertEquals(32, o.x); - -// Check that bail-out code works. -// Smi. -store(1); -// Fast case object. -o = new Object(); -store(o); -assertEquals(42, o.x); -// Slow case object without x property. -delete o.x; -store(o); -assertEquals(42, o.x); - -(function() { - var o = {}; - for (var i = 0; i < 100; i++) { - var k = "key" + i; - o[k] = "foo"; - delete o[k]; - } -})(); - -(function() { - function f(a, i, v) { - a[i] = v; - } - - f("make it generic", 0, 0); - - var o = {}; - for (var i = 0; i < 100; i++) { - var k = %InternalizeString("key" + i); - f(o, k, "foo"); - delete o[k]; - } -})(); diff --git a/implementation-contributed/v8/mjsunit/str-to-num.js b/implementation-contributed/v8/mjsunit/str-to-num.js deleted file mode 100644 index 8c9a3070014..00000000000 --- a/implementation-contributed/v8/mjsunit/str-to-num.js +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function toNumber(val) { - return Number(val); -} - -function repeat(s, num) { - var result = ''; - while (num > 0) { - if ((num & 1) != 0) result += s; - s += s; - num >>= 1; - } - - return result; -} - -assertEquals('0000000000', repeat('0', 10)); - -// assertEquals(, toNumber()); - -assertEquals(123, toNumber(" 123")); -assertEquals(123, toNumber("\n123")); -assertEquals(123, toNumber("\r123")); -assertEquals(123, toNumber("\t123")); -assertEquals(123, toNumber("\f123")); - -assertEquals(123, toNumber("123 ")); -assertEquals(123, toNumber("123\n")); -assertEquals(123, toNumber("123\r")); -assertEquals(123, toNumber("123\t")); -assertEquals(123, toNumber("123\f")); - -assertEquals(123, toNumber(" 123 ")); -assertEquals(123, toNumber("\n123\n")); -assertEquals(123, toNumber("\r123\r")); -assertEquals(123, toNumber("\t123\t")); -assertEquals(123, toNumber("\f123\f")); - -assertEquals(16, toNumber(" 0x10 ")); -assertEquals(NaN, toNumber("0x")); -assertEquals(NaN, toNumber("0x ")); - -assertTrue(isNaN(toNumber(" NaN "))); -assertEquals(Infinity, toNumber(" Infinity ") ," Infinity"); -assertEquals(-Infinity, toNumber(" -Infinity ")); -assertEquals(Infinity, toNumber(" +Infinity "), " +Infinity"); -assertEquals(Infinity, toNumber("Infinity ") ,"Infinity"); -assertEquals(-Infinity, toNumber("-Infinity ")); -assertEquals(Infinity, toNumber("+Infinity "), "+Infinity"); - -assertEquals(0, toNumber("0")); -assertEquals(0, toNumber("+0")); -assertEquals(-0, toNumber("-0")); -assertEquals(-Infinity, 1 / toNumber("-0")); - -assertEquals(1, toNumber("1")); -assertEquals(1, toNumber("+1")); -assertEquals(-1, toNumber("-1")); - -assertEquals(2, toNumber("2")); -assertEquals(2, toNumber("+2")); -assertEquals(-2, toNumber("-2")); - -assertEquals(3.1415926, toNumber("3.1415926")); -assertEquals(3.1415926, toNumber("+3.1415926")); -assertEquals(-3.1415926, toNumber("-3.1415926")); - -assertEquals(5, toNumber("5.")); -assertEquals(5, toNumber("+5.")); -assertEquals(-5, toNumber("-5.")); - -assertEquals(500, toNumber("5e2")); -assertEquals(500, toNumber("+5e2")); -assertEquals(-500, toNumber("-5e2")); -assertEquals(500, toNumber("5e+2")); -assertEquals(500, toNumber("+5e+2")); -assertEquals(-500, toNumber("-5e+2")); -assertEquals(0.05, toNumber("5e-2")); -assertEquals(0.05, toNumber("+5e-2")); -assertEquals(-0.05, toNumber("-5e-2")); - -assertEquals(0.00001, toNumber(".00001")); -assertEquals(0.00001, toNumber("+.00001")); -assertEquals(-0.00001, toNumber("-.00001")); -assertEquals(1, toNumber(".00001e5")); -assertEquals(1, toNumber("+.00001e5")); -assertEquals(-1, toNumber("-.00001e5")); -assertEquals(1, toNumber(".00001e+5")); -assertEquals(1, toNumber("+.00001e+5")); -assertEquals(-1, toNumber("-.00001e+5")); -assertEquals(0.00001, toNumber(".001e-2")); -assertEquals(0.00001, toNumber("+.001e-2")); -assertEquals(-0.00001, toNumber("-.001e-2")); - -assertEquals(12340000, toNumber("1234e4")); -assertEquals(12340000, toNumber("+1234e4")); -assertEquals(-12340000, toNumber("-1234e4")); -assertEquals(12340000, toNumber("1234e+4")); -assertEquals(12340000, toNumber("+1234e+4")); -assertEquals(-12340000, toNumber("-1234e+4")); -assertEquals(0.1234, toNumber("1234e-4")); -assertEquals(0.1234, toNumber("+1234e-4")); -assertEquals(-0.1234, toNumber("-1234e-4")); - -assertEquals(0, toNumber("0x0")); -assertEquals(1, toNumber("0x1")); -assertEquals(2, toNumber("0x2")); -assertEquals(9, toNumber("0x9")); -assertEquals(10, toNumber("0xa")); -assertEquals(11, toNumber("0xb")); -assertEquals(15, toNumber("0xf")); -assertEquals(10, toNumber("0xA")); -assertEquals(11, toNumber("0xB")); -assertEquals(15, toNumber("0xF")); - -assertEquals(0, toNumber("0X0")); -assertEquals(9, toNumber("0X9")); -assertEquals(10, toNumber("0Xa")); -assertEquals(10, toNumber("0XA")); -assertEquals(15, toNumber("0Xf")); -assertEquals(15, toNumber("0XF")); - -assertEquals(0, toNumber("0x000")); -assertEquals(0, toNumber("0x000" + repeat('0', 1000))); -assertEquals(9, toNumber("0x009")); -assertEquals(10, toNumber("0x00a")); -assertEquals(10, toNumber("0x00A")); -assertEquals(15, toNumber("0x00f")); -assertEquals(15, toNumber("0x00F")); -assertEquals(15, toNumber("0x00F ")); -assertEquals(Infinity, toNumber("0x" + repeat('0', 1000) + '1' - + repeat('0', 1000))); - -assertEquals(0x1000000 * 0x10000000, toNumber("0x10000000000000")); -assertEquals(0x1000000 * 0x10000000 + 1, toNumber("0x10000000000001")); -assertEquals(0x10 * 0x1000000 * 0x10000000, toNumber("0x100000000000000")); -assertEquals(0x10 * 0x1000000 * 0x10000000, toNumber("0x100000000000001")); -assertEquals(0x10 * 0x1000000 * 0x10000000, toNumber("0x100000000000007")); -assertEquals(0x10 * 0x1000000 * 0x10000000, toNumber("0x100000000000008")); -assertEquals(0x10 * (0x1000000 * 0x10000000 + 1), - toNumber("0x100000000000009")); -assertEquals(0x10 * (0x1000000 * 0x10000000 + 1), - toNumber("0x10000000000000F")); -assertEquals(0x10 * (0x1000000 * 0x10000000 + 1), - toNumber("0x100000000000010")); -assertEquals(0x100000000000 * 0x1000000 * 0x10000000, - toNumber("0x1000000000000000000000000")); -assertEquals(0x100000000000 * 0x1000000 * 0x10000000, - toNumber("0x1000000000000080000000000")); -assertEquals(0x100000000000 * (0x1000000 * 0x10000000 + 1), - toNumber("0x1000000000000080000000001")); -assertEquals(0x100000000000 * 0x1000000 * 0x10000000, - toNumber(" 0x1000000000000000000000000 ")); - -assertEquals(0, toNumber("00")); -assertEquals(1, toNumber("01")); -assertEquals(2, toNumber("02")); -assertEquals(10, toNumber("010")); -assertEquals(100, toNumber("0100")); -assertEquals(100, toNumber("000100")); - -assertEquals(Infinity, toNumber("1e999"), "1e999"); -assertEquals(-Infinity, toNumber("-1e999")); -assertEquals(0, toNumber("1e-999")); -assertEquals(-0, toNumber("-1e-999")); -assertEquals(Infinity, 1 / toNumber("1e-999"), "1e-999"); -assertEquals(-Infinity, 1 / toNumber("-1e-999")); - -assertTrue(isNaN(toNumber("junk")), "junk"); -assertTrue(isNaN(toNumber("100 junk")), "100 junk"); -assertTrue(isNaN(toNumber("0x100 junk")), "0x100 junk"); -assertTrue(isNaN(toNumber("100.0 junk")), "100.0 junk"); -assertTrue(isNaN(toNumber(".1e4 junk")), ".1e4 junk"); -assertTrue(isNaN(toNumber("Infinity junk")), "Infinity junk"); -assertTrue(isNaN(toNumber("1e")), "1e"); -assertTrue(isNaN(toNumber("1e ")), "1e_"); -assertTrue(isNaN(toNumber("1" + repeat('0', 1000) + 'junk')), "1e1000 junk"); - -for (var i = 1; i < 12; i++) { - assertEquals(toNumber('1' + repeat('0', i)), Math.pow(10.0, i)); -} - -assertTrue(isNaN(toNumber("+0x0"))); -assertTrue(isNaN(toNumber("+0xFF"))); -assertTrue(isNaN(toNumber("+0x012"))); -assertTrue(isNaN(toNumber("-0x0"))); -assertTrue(isNaN(toNumber("-0xFF"))); -assertTrue(isNaN(toNumber("-0x012"))); diff --git a/implementation-contributed/v8/mjsunit/stress-array-push.js b/implementation-contributed/v8/mjsunit/stress-array-push.js deleted file mode 100644 index 1db2e2ae830..00000000000 --- a/implementation-contributed/v8/mjsunit/stress-array-push.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Rewrite of mozilla_js_tests/js1_5/GC/regress-278725 -// to stress test pushing elements to an array. -var results = []; -for (var k = 0; k < 60000; k++) { - if ((k%10000) == 0) results.length = 0; - results.push({}); -} diff --git a/implementation-contributed/v8/mjsunit/strict-equals.js b/implementation-contributed/v8/mjsunit/strict-equals.js deleted file mode 100644 index d5577c7a353..00000000000 --- a/implementation-contributed/v8/mjsunit/strict-equals.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var n = null; -var u = void 0; -assertTrue(null === null); -assertTrue(null === n); -assertTrue(n === null); -assertTrue(n === n); -assertFalse(null === void 0); -assertFalse(void 0 === null); -assertFalse(u === null); -assertFalse(null === u); -assertFalse(n === u); -assertFalse(u === n); -assertTrue(void 0 === void 0); -assertTrue(u === u); -assertTrue(u === void 0); -assertTrue(void 0 === u); - -assertTrue('foo' === 'foo'); -assertFalse('bar' === 'foo'); -assertFalse('foo' === new String('foo')); -assertFalse(new String('foo') === new String('foo')); -var s = new String('foo'); -assertTrue(s === s); -assertFalse(s === null); -assertFalse(s === void 0); -assertFalse('foo' === null); -assertFalse('foo' === 7); -assertFalse('foo' === true); -assertFalse('foo' === void 0); -assertFalse('foo' === {}); - -assertFalse({} === {}); -var x = {}; -assertTrue(x === x); -assertFalse(x === null); -assertFalse(x === 7); -assertFalse(x === true); -assertFalse(x === void 0); -assertFalse(x === {}); - -assertTrue(true === true); -assertTrue(false === false); -assertFalse(false === true); -assertFalse(true === false); -assertFalse(true === new Boolean(true)); -assertFalse(true === new Boolean(false)); -assertFalse(false === new Boolean(true)); -assertFalse(false === new Boolean(false)); -assertFalse(true === 0); -assertFalse(true === 1); - -assertTrue(0 === 0); -assertTrue(-0 === -0); -assertTrue(-0 === 0); -assertTrue(0 === -0); -assertFalse(0 === new Number(0)); -assertFalse(1 === new Number(1)); -assertTrue(4.2 === 4.2); -assertTrue(4.2 === Number(4.2)); diff --git a/implementation-contributed/v8/mjsunit/strict-mode-eval.js b/implementation-contributed/v8/mjsunit/strict-mode-eval.js deleted file mode 100644 index 391daaa37c6..00000000000 --- a/implementation-contributed/v8/mjsunit/strict-mode-eval.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"use strict"; - -var code1 = "function f(eval) {}"; -var code2 = "function f(a, a) {}"; -var code3 = "var x = '\\020;'"; -var code4 = "function arguments() {}"; - -// Verify the code compiles just fine in non-strict mode -// (using aliased eval to force non-strict mode) -var eval_alias = eval; - -eval_alias(code1); -eval_alias(code2); -eval_alias(code3); -eval_alias(code4); - -function strict1() { - var exception = false; - try { - eval(code1); - } catch (e) { - exception = true; - assertInstanceof(e, SyntaxError); - } - assertTrue(exception); - - function strict2() { - var exception = false; - try { - eval(code2); - } catch (e) { - exception = true; - assertInstanceof(e, SyntaxError); - } - assertTrue(exception); - - function strict3() { - var exception = false; - try { - eval(code3); - } catch (e) { - exception = true; - assertInstanceof(e, SyntaxError); - } - assertTrue(exception); - - function strict4() { - var exception = false; - try { - eval(code4); - } catch (e) { - exception = true; - assertInstanceof(e, SyntaxError); - } - assertTrue(exception); - } - strict4(); - } - strict3(); - } - strict2(); -} -strict1(); diff --git a/implementation-contributed/v8/mjsunit/strict-mode-implicit-receiver.js b/implementation-contributed/v8/mjsunit/strict-mode-implicit-receiver.js deleted file mode 100644 index 8284eddc2d9..00000000000 --- a/implementation-contributed/v8/mjsunit/strict-mode-implicit-receiver.js +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var y = 3; - -function get_y() { return this.y; } -function strict_get_y() { "use strict"; return this.y; } - -// Test calls to strict mode function as methods. -for (var i = 0; i < 10; i++) assertEquals(3, strict_get_y.call(this)); -var o = { y: 42 }; -for (var i = 0; i < 10; i++) assertEquals(42, strict_get_y.call(o)); - -// Test calls to strict mode function with implicit receiver. -function g() { - var exception = false; - try { strict_get_y(); } catch(e) { exception = true; } - assertTrue(exception); -} -for (var i = 0; i < 3; i++) g(); - -// Test calls to local strict mode function with implicit receiver. -function local_function_test() { - function get_y() { return this.y; } - function strict_get_y() { "use strict"; return this.y; } - assertEquals(3, get_y()); - assertEquals(3, get_y(23)); - var exception = false; - try { - strict_get_y(); - } catch(e) { - exception = true; - } - assertTrue(exception); -} - -for (var i = 0; i < 10; i++) { - local_function_test(); -} - -// Test call to catch variable strict-mode function. Implicit -// receiver. -var exception = false; -try { - throw strict_get_y; -} catch(f) { - try { - f(); - } catch(e) { - exception = true; - } - assertTrue(exception); -} - - -// Test calls to strict-mode function with the object from a with -// statement as the receiver. -with(this) { - assertEquals(3, strict_get_y()); - assertEquals(3, strict_get_y(32)); -} - -var o = { y: 27 }; -o.f = strict_get_y; -with(o) { - assertEquals(27, f()); - assertEquals(27, f(23)); -} - - -// Check calls to eval within a function with 'undefined' as receiver. -function implicit_receiver_eval() { - "use strict"; - return eval("this"); -} - -assertEquals(void 0, implicit_receiver_eval()); -assertEquals(void 0, implicit_receiver_eval(32)); - - -// Strict mode function to get inlined. -function strict_return_receiver() { - "use strict"; - return this; -} - -// Inline with implicit receiver. -function g() { - return strict_return_receiver(); -} - -for (var i = 0; i < 5; i++) { - assertEquals(void 0, g()); - assertEquals(void 0, g(42)); -} -%OptimizeFunctionOnNextCall(g); -assertEquals(void 0, g(42)); -assertEquals(void 0, g()); - -// Inline with explicit receiver. -function g2() { - var o = {}; - o.f = strict_return_receiver; - return o.f(); -} - -for (var i = 0; i < 5; i++) { - assertTrue(typeof g2() == "object"); - assertTrue(typeof g2(42) == "object"); -} -%OptimizeFunctionOnNextCall(g2); -assertTrue(typeof g2() == "object"); -assertTrue(typeof g2(42) == "object"); - -// Test calls of aliased eval. -function outer_eval_receiver() { - var eval = function() { return this; } - function inner_strict() { - "use strict"; - assertEquals('object', typeof eval()); - } - inner_strict(); -} -outer_eval_receiver(); - -function outer_eval_conversion3(eval, expected) { - function inner_strict() { - "use strict"; - var x = eval("this"); - assertEquals(expected, typeof x); - } - inner_strict(); -} - -function strict_return_this() { "use strict"; return this; } -function return_this() { return this; } -function strict_eval(s) { "use strict"; return eval(s); } -function non_strict_eval(s) { return eval(s); } - -outer_eval_conversion3(strict_return_this, 'undefined'); -outer_eval_conversion3(return_this, 'object'); -outer_eval_conversion3(strict_eval, 'undefined'); -outer_eval_conversion3(non_strict_eval, 'object'); - -outer_eval_conversion3(eval, 'undefined'); - -function test_constant_function() { - var o = { f: function() { "use strict"; return this; } }; - this.__proto__ = o; - for (var i = 0; i < 10; i++) assertEquals(void 0, f()); -} -test_constant_function(); - -function test_field() { - var o = { }; - o.f = function() {}; - o.f = function() { "use strict"; return this; }; - this.__proto__ = o; - for (var i = 0; i < 10; i++) assertEquals(void 0, f()); -} -test_field(); diff --git a/implementation-contributed/v8/mjsunit/strict-mode-opt.js b/implementation-contributed/v8/mjsunit/strict-mode-opt.js deleted file mode 100644 index 5ca5c279e10..00000000000 --- a/implementation-contributed/v8/mjsunit/strict-mode-opt.js +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var global = 0; -var MAX = 5; - -// Attempt to inline strcit in non-strict. - -function strictToBeInlined(n) { - "use strict"; - global = "strict"; - if (n == MAX) { undefined_variable_strict = "value"; } -} - -function nonstrictCallStrict(n) { - strictToBeInlined(n); -} - -(function testInlineStrictInNonStrict() { - for (var i = 0; i <= MAX; i ++) { - try { - if (i == MAX - 1) %OptimizeFunctionOnNextCall(nonstrictCallStrict); - nonstrictCallStrict(i); - } catch (e) { - assertInstanceof(e, ReferenceError); - assertEquals(MAX, i); - return; - } - } - fail("ReferenceError after MAX iterations", "no exception"); -})(); - -// Attempt to inline non-strict in strict. - -function nonstrictToBeInlined(n) { - global = "nonstrict"; - if (n == MAX) { undefined_variable_nonstrict = "The nonstrict value"; } -} - -function strictCallNonStrict(n) { - "use strict"; - nonstrictToBeInlined(n); -} - -(function testInlineNonStrictInStrict() { - for (var i = 0; i <= MAX; i ++) { - try { - if (i == MAX - 1) %OptimizeFunctionOnNextCall(nonstrictCallStrict); - strictCallNonStrict(i); - } catch (e) { - fail("no exception", "exception"); - } - } - assertEquals("The nonstrict value", undefined_variable_nonstrict); -})(); - -// Optimize strict function. - -function strictAssignToUndefined(n) { - "use strict"; - global = "strict"; - if (n == MAX) { undefined_variable_strict_2 = "value"; } -} - -(function testOptimizeStrictAssignToUndefined() { - for (var i = 0; i <= MAX; i ++) { - try { - if (i == MAX - 1) %OptimizeFunctionOnNextCall(nonstrictCallStrict); - strictAssignToUndefined(i); - } catch (e) { - assertInstanceof(e, ReferenceError); - assertEquals(MAX, i); - return; - } - } - fail("ReferenceError after MAX iterations", "no exception"); -})(); diff --git a/implementation-contributed/v8/mjsunit/strict-mode.js b/implementation-contributed/v8/mjsunit/strict-mode.js deleted file mode 100644 index 736ff1b9f11..00000000000 --- a/implementation-contributed/v8/mjsunit/strict-mode.js +++ /dev/null @@ -1,1231 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function CheckStrictMode(code, exception) { - assertDoesNotThrow(code); - assertThrows("'use strict';\n" + code, exception); - assertThrows('"use strict";\n' + code, exception); - assertDoesNotThrow("\ - function outer() {\ - function inner() {\n" - + code + - "\n}\ - }"); - assertThrows("\ - function outer() {\ - 'use strict';\ - function inner() {\n" - + code + - "\n}\ - }", exception); -} - -function CheckFunctionConstructorStrictMode() { - var args = []; - for (var i = 0; i < arguments.length; i ++) { - args[i] = arguments[i]; - } - // Create non-strict function. No exception. - args[arguments.length] = ""; - assertDoesNotThrow(function() { - Function.apply(this, args); - }); - // Create strict mode function. Exception expected. - args[arguments.length] = "'use strict';"; - assertThrows(function() { - Function.apply(this, args); - }, SyntaxError); -} - -// Incorrect 'use strict' directive. -(function UseStrictEscape() { - "use\\x20strict"; - with ({}) {}; -})(); - -// Incorrectly place 'use strict' directive. -assertThrows("function foo (x) 'use strict'; {}", SyntaxError); - -// 'use strict' in non-directive position. -(function UseStrictNonDirective() { - void(0); - "use strict"; - with ({}) {}; -})(); - -// Multiple directives, including "use strict". -assertThrows('\ -"directive 1";\ -"another directive";\ -"use strict";\ -"directive after strict";\ -"and one more";\ -with({}) {}', SyntaxError); - -// 'with' disallowed in strict mode. -CheckStrictMode("with({}) {}", SyntaxError); - -// Function named 'eval'. -CheckStrictMode("function eval() {}", SyntaxError); - -// Function named 'arguments'. -CheckStrictMode("function arguments() {}", SyntaxError); - -// Function parameter named 'eval'. -CheckStrictMode("function foo(a, b, eval, c, d) {}", SyntaxError); - -// Function parameter named 'arguments'. -CheckStrictMode("function foo(a, b, arguments, c, d) {}", SyntaxError); - -// Property accessor parameter named 'eval'. -CheckStrictMode("var o = { set foo(eval) {} }", SyntaxError); - -// Property accessor parameter named 'arguments'. -CheckStrictMode("var o = { set foo(arguments) {} }", SyntaxError); - -// Duplicate function parameter name. -CheckStrictMode("function foo(a, b, c, d, b) {}", SyntaxError); - -// Function constructor: eval parameter name. -CheckFunctionConstructorStrictMode("eval"); - -// Function constructor: arguments parameter name. -CheckFunctionConstructorStrictMode("arguments"); - -// Function constructor: duplicate parameter name. -CheckFunctionConstructorStrictMode("a", "b", "c", "b"); -CheckFunctionConstructorStrictMode("a,b,c,b"); - -// catch(eval) -CheckStrictMode("try{}catch(eval){};", SyntaxError); - -// catch(arguments) -CheckStrictMode("try{}catch(arguments){};", SyntaxError); - -// var eval -CheckStrictMode("var eval;", SyntaxError); - -// var arguments -CheckStrictMode("var arguments;", SyntaxError); - -// Strict mode applies to the function in which the directive is used.. -assertThrows('\ -function foo(eval) {\ - "use strict";\ -}', SyntaxError); - -// Strict mode doesn't affect the outer stop of strict code. -(function NotStrict(eval) { - function Strict() { - "use strict"; - } - with ({}) {}; -})(); - -// Octal literal -CheckStrictMode("var x = 012"); -CheckStrictMode("012"); -CheckStrictMode("'Hello octal\\032'"); -CheckStrictMode("function octal() { return 012; }"); -CheckStrictMode("function octal() { return '\\032'; }"); - -(function ValidEscape() { - "use strict"; - var x = '\0'; - var y = "\0"; -})(); - -// Octal before "use strict" -assertThrows('\ - function strict() {\ - "octal\\032directive";\ - "use strict";\ - }', SyntaxError); - -(function StrictModeNonDuplicate() { - "use strict"; - var x = { 123 : 1, "0123" : 2 }; - var x = { - 123: 1, - '123.00000000000000000000000000000000000000000000000000000000000000000001': - 2 - }; -})(); - -// Duplicate data properties are allowed in ES6 -(function StrictModeDuplicateES6() { - 'use strict'; - var x = { - 123: 1, - 123.00000000000000000000000000000000000000000000000000000000000000000001: 2 - }; - var x = { dupe : 1, nondupe: 3, dupe : 2 }; - var x = { '1234' : 1, '2345' : 2, '1234' : 3 }; - var x = { '1234' : 1, '2345' : 2, 1234 : 3 }; - var x = { 3.14 : 1, 2.71 : 2, 3.14 : 3 }; - var x = { 3.14 : 1, '3.14' : 2 }; - - var x = { get foo() { }, get foo() { } }; - var x = { get foo(){}, get 'foo'(){}}; - var x = { get 12(){}, get '12'(){}}; - - // Two setters - var x = { set foo(v) { }, set foo(v) { } }; - var x = { set foo(v) { }, set 'foo'(v) { } }; - var x = { set 13(v) { }, set '13'(v) { } }; - - // Setter and data - var x = { foo: 'data', set foo(v) { } }; - var x = { set foo(v) { }, foo: 'data' }; - var x = { foo: 'data', set 'foo'(v) { } }; - var x = { set foo(v) { }, 'foo': 'data' }; - var x = { 'foo': 'data', set foo(v) { } }; - var x = { set 'foo'(v) { }, foo: 'data' }; - var x = { 'foo': 'data', set 'foo'(v) { } }; - var x = { set 'foo'(v) { }, 'foo': 'data' }; - var x = { 12: 1, set '12'(v){}}; - var x = { 12: 1, set 12(v){}}; - var x = { '12': 1, set '12'(v){}}; - var x = { '12': 1, set 12(v){}}; - - // Getter and data - var x = { foo: 'data', get foo() { } }; - var x = { get foo() { }, foo: 'data' }; - var x = { 'foo': 'data', get foo() { } }; - var x = { get 'foo'() { }, 'foo': 'data' }; - var x = { '12': 1, get '12'(){}}; - var x = { '12': 1, get 12(){}}; -})(); - -// Assignment to eval or arguments -CheckStrictMode("function strict() { eval = undefined; }", SyntaxError); -CheckStrictMode("function strict() { arguments = undefined; }", SyntaxError); -CheckStrictMode("function strict() { print(eval = undefined); }", SyntaxError); -CheckStrictMode("function strict() { print(arguments = undefined); }", - SyntaxError); -CheckStrictMode("function strict() { var x = eval = undefined; }", SyntaxError); -CheckStrictMode("function strict() { var x = arguments = undefined; }", - SyntaxError); - -// Compound assignment to eval or arguments -CheckStrictMode("function strict() { eval *= undefined; }", SyntaxError); -CheckStrictMode("function strict() { arguments /= undefined; }", SyntaxError); -CheckStrictMode("function strict() { print(eval %= undefined); }", SyntaxError); -CheckStrictMode("function strict() { print(arguments %= undefined); }", - SyntaxError); -CheckStrictMode("function strict() { var x = eval += undefined; }", - SyntaxError); -CheckStrictMode("function strict() { var x = arguments -= undefined; }", - SyntaxError); -CheckStrictMode("function strict() { eval <<= undefined; }", SyntaxError); -CheckStrictMode("function strict() { arguments >>= undefined; }", SyntaxError); -CheckStrictMode("function strict() { print(eval >>>= undefined); }", - SyntaxError); -CheckStrictMode("function strict() { print(arguments &= undefined); }", - SyntaxError); -CheckStrictMode("function strict() { var x = eval ^= undefined; }", - SyntaxError); -CheckStrictMode("function strict() { var x = arguments |= undefined; }", - SyntaxError); - -// Postfix increment with eval or arguments -CheckStrictMode("function strict() { eval++; }", SyntaxError); -CheckStrictMode("function strict() { arguments++; }", SyntaxError); -CheckStrictMode("function strict() { print(eval++); }", SyntaxError); -CheckStrictMode("function strict() { print(arguments++); }", SyntaxError); -CheckStrictMode("function strict() { var x = eval++; }", SyntaxError); -CheckStrictMode("function strict() { var x = arguments++; }", SyntaxError); - -// Postfix decrement with eval or arguments -CheckStrictMode("function strict() { eval--; }", SyntaxError); -CheckStrictMode("function strict() { arguments--; }", SyntaxError); -CheckStrictMode("function strict() { print(eval--); }", SyntaxError); -CheckStrictMode("function strict() { print(arguments--); }", SyntaxError); -CheckStrictMode("function strict() { var x = eval--; }", SyntaxError); -CheckStrictMode("function strict() { var x = arguments--; }", SyntaxError); - -// Prefix increment with eval or arguments -CheckStrictMode("function strict() { ++eval; }", SyntaxError); -CheckStrictMode("function strict() { ++arguments; }", SyntaxError); -CheckStrictMode("function strict() { print(++eval); }", SyntaxError); -CheckStrictMode("function strict() { print(++arguments); }", SyntaxError); -CheckStrictMode("function strict() { var x = ++eval; }", SyntaxError); -CheckStrictMode("function strict() { var x = ++arguments; }", SyntaxError); - -// Prefix decrement with eval or arguments -CheckStrictMode("function strict() { --eval; }", SyntaxError); -CheckStrictMode("function strict() { --arguments; }", SyntaxError); -CheckStrictMode("function strict() { print(--eval); }", SyntaxError); -CheckStrictMode("function strict() { print(--arguments); }", SyntaxError); -CheckStrictMode("function strict() { var x = --eval; }", SyntaxError); -CheckStrictMode("function strict() { var x = --arguments; }", SyntaxError); - -// Delete of an unqualified identifier -CheckStrictMode("delete unqualified;", SyntaxError); -CheckStrictMode("function strict() { delete unqualified; }", SyntaxError); -CheckStrictMode("function function_name() { delete function_name; }", - SyntaxError); -CheckStrictMode("function strict(parameter) { delete parameter; }", - SyntaxError); -CheckStrictMode("function strict() { var variable; delete variable; }", - SyntaxError); -CheckStrictMode("var variable; delete variable;", SyntaxError); - -(function TestStrictDelete() { - "use strict"; - // "delete this" is allowed in strict mode and should work. - function strict_delete() { delete this; } - strict_delete(); -})(); - -// Prefix unary operators other than delete, ++, -- are valid in strict mode -(function StrictModeUnaryOperators() { - "use strict"; - var x = [void eval, typeof eval, +eval, -eval, ~eval, !eval]; - var y = [void arguments, typeof arguments, - +arguments, -arguments, ~arguments, !arguments]; -})(); - -// 7.6.1.2 Future Reserved Words in strict mode -var future_strict_reserved_words = [ - "implements", - "interface", - "let", - "package", - "private", - "protected", - "public", - "static", - "yield" ]; - -function testFutureStrictReservedWord(word) { - // Simple use of each reserved word - CheckStrictMode("var " + word + " = 1;", SyntaxError); - CheckStrictMode("typeof (" + word + ");", SyntaxError); - - // object literal properties - eval("var x = { " + word + " : 42 };"); - eval("var x = { get " + word + " () {} };"); - eval("var x = { set " + word + " (value) {} };"); - eval("var x = { get " + word + " () { 'use strict'; } };"); - eval("var x = { set " + word + " (value) { 'use strict'; } };"); - - // object literal with string literal property names - eval("var x = { '" + word + "' : 42 };"); - eval("var x = { get '" + word + "' () { } };"); - eval("var x = { set '" + word + "' (value) { } };"); - eval("var x = { get '" + word + "' () { 'use strict'; } };"); - eval("var x = { set '" + word + "' (value) { 'use strict'; } };"); - - // Function names and arguments, strict and non-strict contexts - CheckStrictMode("function " + word + " () {}", SyntaxError); - CheckStrictMode("function foo (" + word + ") {}", SyntaxError); - CheckStrictMode("function foo (" + word + ", " + word + ") {}", SyntaxError); - CheckStrictMode("function foo (a, " + word + ") {}", SyntaxError); - CheckStrictMode("function foo (" + word + ", a) {}", SyntaxError); - CheckStrictMode("function foo (a, " + word + ", b) {}", SyntaxError); - CheckStrictMode("var foo = function (" + word + ") {}", SyntaxError); - - // Function names and arguments when the body is strict - assertThrows("function " + word + " () { 'use strict'; }", SyntaxError); - assertThrows("function foo (" + word + ", " + word + ") { 'use strict'; }", - SyntaxError); - assertThrows("function foo (a, " + word + ") { 'use strict'; }", SyntaxError); - assertThrows("function foo (" + word + ", a) { 'use strict'; }", SyntaxError); - assertThrows("function foo (a, " + word + ", b) { 'use strict'; }", - SyntaxError); - assertThrows("var foo = function (" + word + ") { 'use strict'; }", - SyntaxError); - - // setter parameter when the body is strict - CheckStrictMode("var x = { set foo(" + word + ") {} };", SyntaxError); - assertThrows("var x = { set foo(" + word + ") { 'use strict'; } };", - SyntaxError); -} - -for (var i = 0; i < future_strict_reserved_words.length; i++) { - testFutureStrictReservedWord(future_strict_reserved_words[i]); -} - -function testAssignToUndefined(test, should_throw) { - try { - test(); - } catch (e) { - assertTrue(should_throw, "strict mode"); - assertInstanceof(e, ReferenceError, "strict mode"); - return; - } - assertFalse(should_throw, "strict mode"); -} - -function repeat(n, f) { - for (var i = 0; i < n; i ++) { f(); } -} - -function assignToUndefined() { - "use strict"; - possibly_undefined_variable_for_strict_mode_test = "should throw?"; -} - -testAssignToUndefined(assignToUndefined, true); -testAssignToUndefined(assignToUndefined, true); -testAssignToUndefined(assignToUndefined, true); - -possibly_undefined_variable_for_strict_mode_test = "value"; - -testAssignToUndefined(assignToUndefined, false); -testAssignToUndefined(assignToUndefined, false); -testAssignToUndefined(assignToUndefined, false); - -delete possibly_undefined_variable_for_strict_mode_test; - -testAssignToUndefined(assignToUndefined, true); -testAssignToUndefined(assignToUndefined, true); -testAssignToUndefined(assignToUndefined, true); - -repeat(10, function() { testAssignToUndefined(assignToUndefined, true); }); -possibly_undefined_variable_for_strict_mode_test = "value"; -repeat(10, function() { testAssignToUndefined(assignToUndefined, false); }); -delete possibly_undefined_variable_for_strict_mode_test; -repeat(10, function() { testAssignToUndefined(assignToUndefined, true); }); -possibly_undefined_variable_for_strict_mode_test = undefined; -repeat(10, function() { testAssignToUndefined(assignToUndefined, false); }); - -function assignToUndefinedWithEval() { - "use strict"; - possibly_undefined_variable_for_strict_mode_test_with_eval = "should throw?"; - eval(""); -} - -testAssignToUndefined(assignToUndefinedWithEval, true); -testAssignToUndefined(assignToUndefinedWithEval, true); -testAssignToUndefined(assignToUndefinedWithEval, true); - -possibly_undefined_variable_for_strict_mode_test_with_eval = "value"; - -testAssignToUndefined(assignToUndefinedWithEval, false); -testAssignToUndefined(assignToUndefinedWithEval, false); -testAssignToUndefined(assignToUndefinedWithEval, false); - -delete possibly_undefined_variable_for_strict_mode_test_with_eval; - -testAssignToUndefined(assignToUndefinedWithEval, true); -testAssignToUndefined(assignToUndefinedWithEval, true); -testAssignToUndefined(assignToUndefinedWithEval, true); - -repeat(10, function() { - testAssignToUndefined(assignToUndefinedWithEval, true); - }); -possibly_undefined_variable_for_strict_mode_test_with_eval = "value"; -repeat(10, function() { - testAssignToUndefined(assignToUndefinedWithEval, false); - }); -delete possibly_undefined_variable_for_strict_mode_test_with_eval; -repeat(10, function() { - testAssignToUndefined(assignToUndefinedWithEval, true); - }); -possibly_undefined_variable_for_strict_mode_test_with_eval = undefined; -repeat(10, function() { - testAssignToUndefined(assignToUndefinedWithEval, false); - }); - - - -(function testDeleteNonConfigurable() { - function delete_property(o) { - "use strict"; - delete o.property; - } - function delete_element(o, i) { - "use strict"; - delete o[i]; - } - - var object = {}; - - Object.defineProperty(object, "property", { value: "property_value" }); - Object.defineProperty(object, "1", { value: "one" }); - Object.defineProperty(object, 7, { value: "seven" }); - Object.defineProperty(object, 3.14, { value: "pi" }); - - assertThrows(function() { delete_property(object); }, TypeError); - assertEquals(object.property, "property_value"); - assertThrows(function() { delete_element(object, "1"); }, TypeError); - assertThrows(function() { delete_element(object, 1); }, TypeError); - assertEquals(object[1], "one"); - assertThrows(function() { delete_element(object, "7"); }, TypeError); - assertThrows(function() { delete_element(object, 7); }, TypeError); - assertEquals(object[7], "seven"); - assertThrows(function() { delete_element(object, "3.14"); }, TypeError); - assertThrows(function() { delete_element(object, 3.14); }, TypeError); - assertEquals(object[3.14], "pi"); -})(); - -// Not transforming this in Function.call and Function.apply. -(function testThisTransformCallApply() { - function non_strict() { - return this; - } - function strict() { - "use strict"; - return this; - } - - var global_object = (function() { return this; })(); - var object = {}; - - // Non-strict call. - assertTrue(non_strict.call(null) === global_object); - assertTrue(non_strict.call(undefined) === global_object); - assertEquals(typeof non_strict.call(7), "object"); - assertEquals(typeof non_strict.call("Hello"), "object"); - assertTrue(non_strict.call(object) === object); - - // Non-strict apply. - assertTrue(non_strict.apply(null) === global_object); - assertTrue(non_strict.apply(undefined) === global_object); - assertEquals(typeof non_strict.apply(7), "object"); - assertEquals(typeof non_strict.apply("Hello"), "object"); - assertTrue(non_strict.apply(object) === object); - - // Strict call. - assertTrue(strict.call(null) === null); - assertTrue(strict.call(undefined) === undefined); - assertEquals(typeof strict.call(7), "number"); - assertEquals(typeof strict.call("Hello"), "string"); - assertTrue(strict.call(object) === object); - - // Strict apply. - assertTrue(strict.apply(null) === null); - assertTrue(strict.apply(undefined) === undefined); - assertEquals(typeof strict.apply(7), "number"); - assertEquals(typeof strict.apply("Hello"), "string"); - assertTrue(strict.apply(object) === object); -})(); - -(function testThisTransform() { - try { - function strict() { - "use strict"; - return typeof(this); - } - function nonstrict() { - return typeof(this); - } - - // Concat to avoid symbol. - var strict_name = "str" + "ict"; - var nonstrict_name = "non" + "str" + "ict"; - var strict_number = 17; - var nonstrict_number = 19; - var strict_name_get = "str" + "ict" + "get"; - var nonstrict_name_get = "non" + "str" + "ict" + "get" - var strict_number_get = 23; - var nonstrict_number_get = 29; - - function install(t) { - t.prototype.strict = strict; - t.prototype.nonstrict = nonstrict; - t.prototype[strict_number] = strict; - t.prototype[nonstrict_number] = nonstrict; - Object.defineProperty(t.prototype, strict_name_get, - { get: function() { return strict; }, - configurable: true }); - Object.defineProperty(t.prototype, nonstrict_name_get, - { get: function() { return nonstrict; }, - configurable: true }); - Object.defineProperty(t.prototype, strict_number_get, - { get: function() { return strict; }, - configurable: true }); - Object.defineProperty(t.prototype, nonstrict_number_get, - { get: function() { return nonstrict; }, - configurable: true }); - } - - function cleanup(t) { - delete t.prototype.strict; - delete t.prototype.nonstrict; - delete t.prototype[strict_number]; - delete t.prototype[nonstrict_number]; - delete t.prototype[strict_name_get]; - delete t.prototype[nonstrict_name_get]; - delete t.prototype[strict_number_get]; - delete t.prototype[nonstrict_number_get]; - } - - // Set up fakes - install(String); - install(Number); - install(Boolean) - - function callStrict(o) { - return o.strict(); - } - function callNonStrict(o) { - return o.nonstrict(); - } - function callKeyedStrict(o) { - return o[strict_name](); - } - function callKeyedNonStrict(o) { - return o[nonstrict_name](); - } - function callIndexedStrict(o) { - return o[strict_number](); - } - function callIndexedNonStrict(o) { - return o[nonstrict_number](); - } - function callStrictGet(o) { - return o.strictget(); - } - function callNonStrictGet(o) { - return o.nonstrictget(); - } - function callKeyedStrictGet(o) { - return o[strict_name_get](); - } - function callKeyedNonStrictGet(o) { - return o[nonstrict_name_get](); - } - function callIndexedStrictGet(o) { - return o[strict_number_get](); - } - function callIndexedNonStrictGet(o) { - return o[nonstrict_number_get](); - } - - for (var i = 0; i < 10; i ++) { - assertEquals(("hello").strict(), "string"); - assertEquals(("hello").nonstrict(), "object"); - assertEquals(("hello")[strict_name](), "string"); - assertEquals(("hello")[nonstrict_name](), "object"); - assertEquals(("hello")[strict_number](), "string"); - assertEquals(("hello")[nonstrict_number](), "object"); - - assertEquals((10 + i).strict(), "number"); - assertEquals((10 + i).nonstrict(), "object"); - assertEquals((10 + i)[strict_name](), "number"); - assertEquals((10 + i)[nonstrict_name](), "object"); - assertEquals((10 + i)[strict_number](), "number"); - assertEquals((10 + i)[nonstrict_number](), "object"); - - assertEquals((true).strict(), "boolean"); - assertEquals((true).nonstrict(), "object"); - assertEquals((true)[strict_name](), "boolean"); - assertEquals((true)[nonstrict_name](), "object"); - assertEquals((true)[strict_number](), "boolean"); - assertEquals((true)[nonstrict_number](), "object"); - - assertEquals((false).strict(), "boolean"); - assertEquals((false).nonstrict(), "object"); - assertEquals((false)[strict_name](), "boolean"); - assertEquals((false)[nonstrict_name](), "object"); - assertEquals((false)[strict_number](), "boolean"); - assertEquals((false)[nonstrict_number](), "object"); - - assertEquals(callStrict("howdy"), "string"); - assertEquals(callNonStrict("howdy"), "object"); - assertEquals(callKeyedStrict("howdy"), "string"); - assertEquals(callKeyedNonStrict("howdy"), "object"); - assertEquals(callIndexedStrict("howdy"), "string"); - assertEquals(callIndexedNonStrict("howdy"), "object"); - - assertEquals(callStrict(17 + i), "number"); - assertEquals(callNonStrict(17 + i), "object"); - assertEquals(callKeyedStrict(17 + i), "number"); - assertEquals(callKeyedNonStrict(17 + i), "object"); - assertEquals(callIndexedStrict(17 + i), "number"); - assertEquals(callIndexedNonStrict(17 + i), "object"); - - assertEquals(callStrict(true), "boolean"); - assertEquals(callNonStrict(true), "object"); - assertEquals(callKeyedStrict(true), "boolean"); - assertEquals(callKeyedNonStrict(true), "object"); - assertEquals(callIndexedStrict(true), "boolean"); - assertEquals(callIndexedNonStrict(true), "object"); - - assertEquals(callStrict(false), "boolean"); - assertEquals(callNonStrict(false), "object"); - assertEquals(callKeyedStrict(false), "boolean"); - assertEquals(callKeyedNonStrict(false), "object"); - assertEquals(callIndexedStrict(false), "boolean"); - assertEquals(callIndexedNonStrict(false), "object"); - - // All of the above, with getters - assertEquals(("hello").strictget(), "string"); - assertEquals(("hello").nonstrictget(), "object"); - assertEquals(("hello")[strict_name_get](), "string"); - assertEquals(("hello")[nonstrict_name_get](), "object"); - assertEquals(("hello")[strict_number_get](), "string"); - assertEquals(("hello")[nonstrict_number_get](), "object"); - - assertEquals((10 + i).strictget(), "number"); - assertEquals((10 + i).nonstrictget(), "object"); - assertEquals((10 + i)[strict_name_get](), "number"); - assertEquals((10 + i)[nonstrict_name_get](), "object"); - assertEquals((10 + i)[strict_number_get](), "number"); - assertEquals((10 + i)[nonstrict_number_get](), "object"); - - assertEquals((true).strictget(), "boolean"); - assertEquals((true).nonstrictget(), "object"); - assertEquals((true)[strict_name_get](), "boolean"); - assertEquals((true)[nonstrict_name_get](), "object"); - assertEquals((true)[strict_number_get](), "boolean"); - assertEquals((true)[nonstrict_number_get](), "object"); - - assertEquals((false).strictget(), "boolean"); - assertEquals((false).nonstrictget(), "object"); - assertEquals((false)[strict_name_get](), "boolean"); - assertEquals((false)[nonstrict_name_get](), "object"); - assertEquals((false)[strict_number_get](), "boolean"); - assertEquals((false)[nonstrict_number_get](), "object"); - - assertEquals(callStrictGet("howdy"), "string"); - assertEquals(callNonStrictGet("howdy"), "object"); - assertEquals(callKeyedStrictGet("howdy"), "string"); - assertEquals(callKeyedNonStrictGet("howdy"), "object"); - assertEquals(callIndexedStrictGet("howdy"), "string"); - assertEquals(callIndexedNonStrictGet("howdy"), "object"); - - assertEquals(callStrictGet(17 + i), "number"); - assertEquals(callNonStrictGet(17 + i), "object"); - assertEquals(callKeyedStrictGet(17 + i), "number"); - assertEquals(callKeyedNonStrictGet(17 + i), "object"); - assertEquals(callIndexedStrictGet(17 + i), "number"); - assertEquals(callIndexedNonStrictGet(17 + i), "object"); - - assertEquals(callStrictGet(true), "boolean"); - assertEquals(callNonStrictGet(true), "object"); - assertEquals(callKeyedStrictGet(true), "boolean"); - assertEquals(callKeyedNonStrictGet(true), "object"); - assertEquals(callIndexedStrictGet(true), "boolean"); - assertEquals(callIndexedNonStrictGet(true), "object"); - - assertEquals(callStrictGet(false), "boolean"); - assertEquals(callNonStrictGet(false), "object"); - assertEquals(callKeyedStrictGet(false), "boolean"); - assertEquals(callKeyedNonStrictGet(false), "object"); - assertEquals(callIndexedStrictGet(false), "boolean"); - assertEquals(callIndexedNonStrictGet(false), "object"); - - } - } finally { - // Cleanup - cleanup(String); - cleanup(Number); - cleanup(Boolean); - } -})(); - - -(function ObjectEnvironment() { - var o = {}; - Object.defineProperty(o, "foo", { value: "FOO", writable: false }); - assertThrows( - function () { - with (o) { - (function() { - "use strict"; - foo = "Hello"; - })(); - } - }, - TypeError); -})(); - - -(function TestSetPropertyWithoutSetter() { - var o = { get foo() { return "Yey"; } }; - assertThrows( - function broken() { - "use strict"; - o.foo = (0xBADBAD00 >> 1); - }, - TypeError); -})(); - - -(function TestSetPropertyNonConfigurable() { - var frozen = Object.freeze({}); - var sealed = Object.seal({}); - - function strict(o) { - "use strict"; - o.property = "value"; - } - - assertThrows(function() { strict(frozen); }, TypeError); - assertThrows(function() { strict(sealed); }, TypeError); -})(); - - -(function TestAssignmentToReadOnlyProperty() { - "use strict"; - - var o = {}; - Object.defineProperty(o, "property", { value: 7 }); - - assertThrows(function() { o.property = "new value"; }, TypeError); - assertThrows(function() { o.property += 10; }, TypeError); - assertThrows(function() { o.property -= 10; }, TypeError); - assertThrows(function() { o.property *= 10; }, TypeError); - assertThrows(function() { o.property /= 10; }, TypeError); - assertThrows(function() { o.property++; }, TypeError); - assertThrows(function() { o.property--; }, TypeError); - assertThrows(function() { ++o.property; }, TypeError); - assertThrows(function() { --o.property; }, TypeError); - - var name = "prop" + "erty"; // to avoid symbol path. - assertThrows(function() { o[name] = "new value"; }, TypeError); - assertThrows(function() { o[name] += 10; }, TypeError); - assertThrows(function() { o[name] -= 10; }, TypeError); - assertThrows(function() { o[name] *= 10; }, TypeError); - assertThrows(function() { o[name] /= 10; }, TypeError); - assertThrows(function() { o[name]++; }, TypeError); - assertThrows(function() { o[name]--; }, TypeError); - assertThrows(function() { ++o[name]; }, TypeError); - assertThrows(function() { --o[name]; }, TypeError); - - assertEquals(o.property, 7); -})(); - - -(function TestAssignmentToReadOnlyLoop() { - var name = "prop" + "erty"; // to avoid symbol path. - var o = {}; - Object.defineProperty(o, "property", { value: 7 }); - - function strict(o, name) { - "use strict"; - o[name] = "new value"; - } - - for (var i = 0; i < 10; i ++) { - var exception = false; - try { - strict(o, name); - } catch(e) { - exception = true; - assertInstanceof(e, TypeError); - } - assertTrue(exception); - } -})(); - - -// Specialized KeyedStoreIC experiencing miss. -(function testKeyedStoreICStrict() { - var o = [9,8,7,6,5,4,3,2,1]; - - function test(o, i, v) { - "use strict"; - o[i] = v; - } - - for (var i = 0; i < 10; i ++) { - test(o, 5, 17); // start specialized for smi indices - assertEquals(o[5], 17); - test(o, "a", 19); - assertEquals(o["a"], 19); - test(o, "5", 29); - assertEquals(o[5], 29); - test(o, 100000, 31); - assertEquals(o[100000], 31); - } -})(); - - -(function TestSetElementWithoutSetter() { - "use strict"; - - var o = { }; - Object.defineProperty(o, 0, { get : function() { } }); - - var zero_smi = 0; - var zero_number = new Number(0); - var zero_symbol = "0"; - var zero_string = "-0-".substring(1,2); - - assertThrows(function() { o[zero_smi] = "new value"; }, TypeError); - assertThrows(function() { o[zero_number] = "new value"; }, TypeError); - assertThrows(function() { o[zero_symbol] = "new value"; }, TypeError); - assertThrows(function() { o[zero_string] = "new value"; }, TypeError); -})(); - - -(function TestSetElementNonConfigurable() { - "use strict"; - var frozen = Object.freeze({}); - var sealed = Object.seal({}); - - var zero_number = 0; - var zero_symbol = "0"; - var zero_string = "-0-".substring(1,2); - - assertThrows(function() { frozen[zero_number] = "value"; }, TypeError); - assertThrows(function() { sealed[zero_number] = "value"; }, TypeError); - assertThrows(function() { frozen[zero_symbol] = "value"; }, TypeError); - assertThrows(function() { sealed[zero_symbol] = "value"; }, TypeError); - assertThrows(function() { frozen[zero_string] = "value"; }, TypeError); - assertThrows(function() { sealed[zero_string] = "value"; }, TypeError); -})(); - - -(function TestAssignmentToReadOnlyElement() { - "use strict"; - - var o = {}; - Object.defineProperty(o, 7, { value: 17 }); - - var seven_smi = 7; - var seven_number = new Number(7); - var seven_symbol = "7"; - var seven_string = "-7-".substring(1,2); - - // Index with number. - assertThrows(function() { o[seven_smi] = "value"; }, TypeError); - assertThrows(function() { o[seven_smi] += 10; }, TypeError); - assertThrows(function() { o[seven_smi] -= 10; }, TypeError); - assertThrows(function() { o[seven_smi] *= 10; }, TypeError); - assertThrows(function() { o[seven_smi] /= 10; }, TypeError); - assertThrows(function() { o[seven_smi]++; }, TypeError); - assertThrows(function() { o[seven_smi]--; }, TypeError); - assertThrows(function() { ++o[seven_smi]; }, TypeError); - assertThrows(function() { --o[seven_smi]; }, TypeError); - - assertThrows(function() { o[seven_number] = "value"; }, TypeError); - assertThrows(function() { o[seven_number] += 10; }, TypeError); - assertThrows(function() { o[seven_number] -= 10; }, TypeError); - assertThrows(function() { o[seven_number] *= 10; }, TypeError); - assertThrows(function() { o[seven_number] /= 10; }, TypeError); - assertThrows(function() { o[seven_number]++; }, TypeError); - assertThrows(function() { o[seven_number]--; }, TypeError); - assertThrows(function() { ++o[seven_number]; }, TypeError); - assertThrows(function() { --o[seven_number]; }, TypeError); - - assertThrows(function() { o[seven_symbol] = "value"; }, TypeError); - assertThrows(function() { o[seven_symbol] += 10; }, TypeError); - assertThrows(function() { o[seven_symbol] -= 10; }, TypeError); - assertThrows(function() { o[seven_symbol] *= 10; }, TypeError); - assertThrows(function() { o[seven_symbol] /= 10; }, TypeError); - assertThrows(function() { o[seven_symbol]++; }, TypeError); - assertThrows(function() { o[seven_symbol]--; }, TypeError); - assertThrows(function() { ++o[seven_symbol]; }, TypeError); - assertThrows(function() { --o[seven_symbol]; }, TypeError); - - assertThrows(function() { o[seven_string] = "value"; }, TypeError); - assertThrows(function() { o[seven_string] += 10; }, TypeError); - assertThrows(function() { o[seven_string] -= 10; }, TypeError); - assertThrows(function() { o[seven_string] *= 10; }, TypeError); - assertThrows(function() { o[seven_string] /= 10; }, TypeError); - assertThrows(function() { o[seven_string]++; }, TypeError); - assertThrows(function() { o[seven_string]--; }, TypeError); - assertThrows(function() { ++o[seven_string]; }, TypeError); - assertThrows(function() { --o[seven_string]; }, TypeError); - - assertEquals(o[seven_number], 17); - assertEquals(o[seven_symbol], 17); - assertEquals(o[seven_string], 17); -})(); - - -(function TestAssignmentToReadOnlyLoop() { - "use strict"; - - var o = {}; - Object.defineProperty(o, 7, { value: 17 }); - - var seven_smi = 7; - var seven_number = new Number(7); - var seven_symbol = "7"; - var seven_string = "-7-".substring(1,2); - - for (var i = 0; i < 10; i ++) { - assertThrows(function() { o[seven_smi] = "value" }, TypeError); - assertThrows(function() { o[seven_number] = "value" }, TypeError); - assertThrows(function() { o[seven_symbol] = "value" }, TypeError); - assertThrows(function() { o[seven_string] = "value" }, TypeError); - } - - assertEquals(o[7], 17); -})(); - - -(function TestAssignmentToStringLength() { - "use strict"; - - var str_val = "string"; - var str_obj = new String(str_val); - var str_cat = str_val + str_val + str_obj; - - assertThrows(function() { str_val.length = 1; }, TypeError); - assertThrows(function() { str_obj.length = 1; }, TypeError); - assertThrows(function() { str_cat.length = 1; }, TypeError); -})(); - - -(function TestArgumentsAliasing() { - function strict(a, b) { - "use strict"; - a = "c"; - b = "d"; - return [a, b, arguments[0], arguments[1]]; - } - - function nonstrict(a, b) { - a = "c"; - b = "d"; - return [a, b, arguments[0], arguments[1]]; - } - - assertEquals(["c", "d", "a", "b"], strict("a", "b")); - assertEquals(["c", "d", "c", "d"], nonstrict("a", "b")); -})(); - - -function CheckFunctionPillDescriptor(func, name) { - - function CheckPill(pill) { - assertEquals("function", typeof pill); - assertInstanceof(pill, Function); - pill.property = "value"; - assertEquals(pill.value, undefined); - assertThrows(function() { 'use strict'; pill.property = "value"; }, - TypeError); - assertThrows(pill, TypeError); - assertEquals(undefined, pill.prototype); - } - - // Poisoned accessors are no longer own properties - func = Object.getPrototypeOf(func); - var descriptor = Object.getOwnPropertyDescriptor(func, name); - CheckPill(descriptor.get) - CheckPill(descriptor.set); - assertFalse(descriptor.enumerable); - // In ES6, restricted function properties are configurable - assertTrue(descriptor.configurable); -} - - -function CheckArgumentsPillDescriptor(func, name) { - - function CheckPill(pill) { - assertEquals("function", typeof pill); - assertInstanceof(pill, Function); - pill.property = "value"; - assertEquals(pill.value, undefined); - assertThrows(function() { 'use strict'; pill.property = "value"; }, - TypeError); - assertThrows(pill, TypeError); - assertEquals(undefined, pill.prototype); - } - - var descriptor = Object.getOwnPropertyDescriptor(func, name); - CheckPill(descriptor.get) - CheckPill(descriptor.set); - assertFalse(descriptor.enumerable); - assertFalse(descriptor.configurable); -} - - -(function TestStrictFunctionPills() { - function strict() { - "use strict"; - } - assertThrows(function() { strict.caller; }, TypeError); - assertThrows(function() { strict.arguments; }, TypeError); - assertThrows(function() { strict.caller = 42; }, TypeError); - assertThrows(function() { strict.arguments = 42; }, TypeError); - - var another = new Function("'use strict'"); - assertThrows(function() { another.caller; }, TypeError); - assertThrows(function() { another.arguments; }, TypeError); - assertThrows(function() { another.caller = 42; }, TypeError); - assertThrows(function() { another.arguments = 42; }, TypeError); - - var third = (function() { "use strict"; return function() {}; })(); - assertThrows(function() { third.caller; }, TypeError); - assertThrows(function() { third.arguments; }, TypeError); - assertThrows(function() { third.caller = 42; }, TypeError); - assertThrows(function() { third.arguments = 42; }, TypeError); - - CheckFunctionPillDescriptor(strict, "caller"); - CheckFunctionPillDescriptor(strict, "arguments"); - CheckFunctionPillDescriptor(another, "caller"); - CheckFunctionPillDescriptor(another, "arguments"); - CheckFunctionPillDescriptor(third, "caller"); - CheckFunctionPillDescriptor(third, "arguments"); -})(); - - -(function TestStrictFunctionWritablePrototype() { - "use strict"; - function TheClass() { - } - assertThrows(function() { TheClass.caller; }, TypeError); - assertThrows(function() { TheClass.arguments; }, TypeError); - - // Strict functions must have writable prototype. - TheClass.prototype = { - func: function() { return "func_value"; }, - get accessor() { return "accessor_value"; }, - property: "property_value", - }; - - var o = new TheClass(); - assertEquals(o.func(), "func_value"); - assertEquals(o.accessor, "accessor_value"); - assertEquals(o.property, "property_value"); -})(); - - -(function TestStrictArgumentPills() { - function strict() { - "use strict"; - return arguments; - } - - var args = strict(); - assertEquals(undefined, Object.getOwnPropertyDescriptor(args, "caller")); - CheckArgumentsPillDescriptor(args, "callee"); - - args = strict(17, "value", strict); - assertEquals(17, args[0]) - assertEquals("value", args[1]) - assertEquals(strict, args[2]); - assertEquals(undefined, Object.getOwnPropertyDescriptor(args, "caller")); - CheckArgumentsPillDescriptor(args, "callee"); - - function outer() { - "use strict"; - function inner() { - return arguments; - } - return inner; - } - - var args = outer()(); - assertEquals(undefined, Object.getOwnPropertyDescriptor(args, "caller")); - CheckArgumentsPillDescriptor(args, "callee"); - - args = outer()(17, "value", strict); - assertEquals(17, args[0]) - assertEquals("value", args[1]) - assertEquals(strict, args[2]); - assertEquals(undefined, Object.getOwnPropertyDescriptor(args, "caller")); - CheckArgumentsPillDescriptor(args, "callee"); -})(); - - -(function TestNonStrictFunctionCallerPillSimple() { - function return_my_caller() { - return return_my_caller.caller; - } - - function strict() { - "use strict"; - // Returning result via local variable to avoid tail call elimination. - var res = return_my_caller(); - return res; - } - assertSame(null, strict()); - - function non_strict() { - return return_my_caller(); - } - assertSame(non_strict(), non_strict); -})(); - - -(function TestNonStrictFunctionCallerPill() { - function strict(n) { - "use strict"; - // Returning result via local variable to avoid tail call elimination. - var res = non_strict(n); - return res; - } - - function recurse(n, then) { - if (n > 0) { - return recurse(n - 1, then); - } else { - return then(); - } - } - - function non_strict(n) { - return recurse(n, function() { return non_strict.caller; }); - } - - function test(n) { - return recurse(n, function() { return strict(n); }); - } - - for (var i = 0; i < 10; i ++) { - assertSame(null, test(i)); - } -})(); - - -(function TestNonStrictFunctionCallerDescriptorPill() { - function strict(n) { - "use strict"; - // Returning result via local variable to avoid tail call elimination. - var res = non_strict(n); - return res; - } - - function recurse(n, then) { - if (n > 0) { - return recurse(n - 1, then); - } else { - return then(); - } - } - - function non_strict(n) { - return recurse(n, function() { - return Object.getOwnPropertyDescriptor(non_strict, "caller").value; - }); - } - - function test(n) { - return recurse(n, function() { return strict(n); }); - } - - for (var i = 0; i < 10; i ++) { - assertSame(null, test(i)); - } -})(); - - -(function TestStrictModeEval() { - "use strict"; - eval("var eval_local = 10;"); - assertThrows(function() { return eval_local; }, ReferenceError); -})(); diff --git a/implementation-contributed/v8/mjsunit/string-add.js b/implementation-contributed/v8/mjsunit/string-add.js deleted file mode 100644 index f226ca18c49..00000000000 --- a/implementation-contributed/v8/mjsunit/string-add.js +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertEquals("ab", "a" + "b", "ll"); - -assertEquals("12", "1" + "2", "dd"); -assertEquals("123", "1" + "2" + "3", "ddd"); -assertEquals("123", 1 + "2" + "3", "ndd"); -assertEquals("123", "1" + 2 + "3", "dnd"); -assertEquals("123", "1" + "2" + 3, "ddn"); - -assertEquals("123", "1" + 2 + 3, "dnn"); -assertEquals("123", 1 + "2" + 3, "ndn"); -assertEquals("33", 1 + 2 + "3", "nnd"); - -var x = "1"; -assertEquals("12", x + 2, "vn"); -assertEquals("12", x + "2", "vd"); -assertEquals("21", 2 + x, "nv"); -assertEquals("21", "2" + x, "dv"); - -var y = "2"; -assertEquals("12", x + y, "vdvd"); - -x = 1; -assertEquals("12", x + y, "vnvd"); - -y = 2; -assertEquals(3, x + y, "vnvn"); - -x = "1"; -assertEquals("12", x + y, "vdvn"); - -y = "2"; -assertEquals("12", x + y, "vdvd2"); - -(function(x, y) { - var z = "3"; - var w = "4"; - - assertEquals("11", x + x, "xx"); - assertEquals("12", x + y, "xy"); - assertEquals("13", x + z, "xz"); - assertEquals("14", x + w, "xw"); - - assertEquals("21", y + x, "yx"); - assertEquals("22", y + y, "yy"); - assertEquals("23", y + z, "yz"); - assertEquals("24", y + w, "yw"); - - assertEquals("31", z + x, "zx"); - assertEquals("32", z + y, "zy"); - assertEquals("33", z + z, "zz"); - assertEquals("34", z + w, "zw"); - - assertEquals("41", w + x, "wx"); - assertEquals("42", w + y, "wy"); - assertEquals("43", w + z, "wz"); - assertEquals("44", w + w, "ww"); - - (function(){x = 1; z = 3;})(); - - assertEquals(2, x + x, "x'x"); - assertEquals("12", x + y, "x'y"); - assertEquals(4, x + z, "x'z'"); - assertEquals("14", x + w, "x'w"); - - assertEquals("21", y + x, "yx'"); - assertEquals("22", y + y, "yy"); - assertEquals("23", y + z, "yz'"); - assertEquals("24", y + w, "yw"); - - assertEquals(4, z + x, "z'x'"); - assertEquals("32", z + y, "z'y"); - assertEquals(6, z + z, "z'z'"); - assertEquals("34", z + w, "z'w"); - - assertEquals("41", w + x, "wx'"); - assertEquals("42", w + y, "wy"); - assertEquals("43", w + z, "wz'"); - assertEquals("44", w + w, "ww"); -})("1", "2"); - -assertEquals("142", "1" + new Number(42), "sN"); -assertEquals("421", new Number(42) + "1", "Ns"); -assertEquals(84, new Number(42) + new Number(42), "NN"); - -assertEquals("142", "1" + new String("42"), "sS"); -assertEquals("421", new String("42") + "1", "Ss"); -assertEquals("142", "1" + new String("42"), "sS"); -assertEquals("4242", new String("42") + new String("42"), "SS"); - -assertEquals("1true", "1" + true, "sb"); -assertEquals("true1", true + "1", "bs"); -assertEquals(2, true + true, "bs"); - -assertEquals("1true", "1" + new Boolean(true), "sB"); -assertEquals("true1", new Boolean(true) + "1", "Bs"); -assertEquals(2, new Boolean(true) + new Boolean(true), "Bs"); - -assertEquals("1undefined", "1" + void 0, "sv"); -assertEquals("undefined1", (void 0) + "1", "vs"); -assertTrue(isNaN(void 0 + void 0), "vv"); - -assertEquals("1null", "1" + null, "su"); -assertEquals("null1", null + "1", "us"); -assertEquals(0, null + null, "uu"); - -(function (i) { - // Check that incoming frames are merged correctly. - var x; - var y; - var z; - var w; - switch (i) { - case 1: x = 42; y = "stry"; z = "strz"; w = 42; break; - default: x = "strx", y = 42; z = "strz"; w = 42; break; - } - var resxx = x + x; - var resxy = x + y; - var resxz = x + z; - var resxw = x + w; - var resyx = y + x; - var resyy = y + y; - var resyz = y + z; - var resyw = y + w; - var reszx = z + x; - var reszy = z + y; - var reszz = z + z; - var reszw = z + w; - var reswx = w + x; - var reswy = w + y; - var reswz = w + z; - var resww = w + w; - assertEquals(84, resxx, "swxx"); - assertEquals("42stry", resxy, "swxy"); - assertEquals("42strz", resxz, "swxz"); - assertEquals(84, resxw, "swxw"); - assertEquals("stry42", resyx, "swyx"); - assertEquals("strystry", resyy, "swyy"); - assertEquals("strystrz", resyz, "swyz"); - assertEquals("stry42", resyw, "swyw"); - assertEquals("strz42", reszx, "swzx"); - assertEquals("strzstry", reszy, "swzy"); - assertEquals("strzstrz", reszz, "swzz"); - assertEquals("strz42", reszw, "swzw"); - assertEquals(84, reswx, "swwx"); - assertEquals("42stry", reswy, "swwy"); - assertEquals("42strz", reswz, "swwz"); - assertEquals(84, resww, "swww"); -})(1); - -// Generate ascii and non ascii strings from length 0 to 20. -var ascii = 'aaaaaaaaaaaaaaaaaaaa'; -var non_ascii = '\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234\u1234'; -assertEquals(20, ascii.length); -assertEquals(20, non_ascii.length); -var a = Array(21); -var b = Array(21); -for (var i = 0; i <= 20; i++) { - a[i] = ascii.substring(0, i); - b[i] = non_ascii.substring(0, i); -} - -// Add ascii and non-ascii strings generating strings with length from 0 to 20. -for (var i = 0; i <= 20; i++) { - for (var j = 0; j < i; j++) { - assertEquals(a[i], a[j] + a[i - j]) - assertEquals(b[i], b[j] + b[i - j]) - } -} diff --git a/implementation-contributed/v8/mjsunit/string-case.js b/implementation-contributed/v8/mjsunit/string-case.js deleted file mode 100644 index b6934eb705e..00000000000 --- a/implementation-contributed/v8/mjsunit/string-case.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --random-seed=17 --allow-natives-syntax -// Flags: --expose-externalize-string - -assertEquals("ΚΟΣΜΟΣ ΚΟΣΜΟΣ".toLowerCase(), "κοσμος κοσμος"); - -var A_CODE = "A".charCodeAt(0); -var Z_CODE = "Z".charCodeAt(0); -var a_CODE = "a".charCodeAt(0); -var z_CODE = "z".charCodeAt(0); - -function charCodeToLower(charCode) { - if (A_CODE <= charCode && charCode <= Z_CODE) { - return charCode + a_CODE - A_CODE; - } - return charCode; -} - -function charCodeToUpper(charCode) { - if (a_CODE <= charCode && charCode <= z_CODE) { - return charCode - (a_CODE - A_CODE); - } - return charCode; -} - -function test(length) { - var str = ""; - var strLower = ""; - var strUpper = ""; - for (var i = 0; i < length; i++) { - var c = Math.round(0x7f * Math.random()); - str += String.fromCharCode(c); - strLower += String.fromCharCode(charCodeToLower(c)); - strUpper += String.fromCharCode(charCodeToUpper(c)); - } - str = %FlattenString(str); - strLower = %FlattenString(strLower); - strUpper = %FlattenString(strUpper); - // Sequential string. - assertEquals(strLower, str.toLowerCase()); - assertEquals(strUpper, str.toUpperCase()); - // Cons string. - assertEquals(strLower + strLower, (str + str).toLowerCase()); - assertEquals(strUpper + strUpper, (str + str).toUpperCase()); - // Sliced string. - assertEquals(strLower.substring(1), str.substring(1).toLowerCase()); - assertEquals(strUpper.substring(1), str.substring(1).toUpperCase()); - // External string. - externalizeString(str, false); - assertEquals(strLower, str.toLowerCase()); - assertEquals(strUpper, str.toUpperCase()); -} - -for (var i = 1; i <= 128; i <<= 1); { - for (var j = 0; j < 8; j++) { - for (var k = 0; k < 3; k++) { - test(i + j); - } - } -} diff --git a/implementation-contributed/v8/mjsunit/string-charat.js b/implementation-contributed/v8/mjsunit/string-charat.js deleted file mode 100644 index 5ce4e89473b..00000000000 --- a/implementation-contributed/v8/mjsunit/string-charat.js +++ /dev/null @@ -1,255 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var s = "test"; - -function getTwoByteString() { return "\u1234t"; } -function getCons() { return "testtesttesttest" + getTwoByteString() } - -var slowIndex1 = { valueOf: function() { return 1; } }; -var slowIndex2 = { toString: function() { return "2"; } }; -var slowIndexOutOfRange = { valueOf: function() { return -1; } }; - -function basicTest(s, len) { - assertEquals("t", s().charAt()); - assertEquals("t", s().charAt("string")); - assertEquals("t", s().charAt(null)); - assertEquals("t", s().charAt(void 0)); - assertEquals("t", s().charAt(false)); - assertEquals("e", s().charAt(true)); - assertEquals("", s().charAt(-1)); - assertEquals("", s().charAt(len)); - assertEquals("", s().charAt(slowIndexOutOfRange)); - assertEquals("", s().charAt(1/0)); - assertEquals("", s().charAt(-1/0)); - assertEquals("t", s().charAt(0)); - assertEquals("t", s().charAt(-0.0)); - assertEquals("t", s().charAt(-0.1)); - assertEquals("t", s().charAt(0.4)); - assertEquals("e", s().charAt(slowIndex1)); - assertEquals("s", s().charAt(slowIndex2)); - assertEquals("t", s().charAt(3)); - assertEquals("t", s().charAt(3.4)); - assertEquals("t", s().charAt(NaN)); - - assertEquals(116, s().charCodeAt()); - assertEquals(116, s().charCodeAt("string")); - assertEquals(116, s().charCodeAt(null)); - assertEquals(116, s().charCodeAt(void 0)); - assertEquals(116, s().charCodeAt(false)); - assertEquals(101, s().charCodeAt(true)); - assertEquals(116, s().charCodeAt(0)); - assertEquals(116, s().charCodeAt(-0.0)); - assertEquals(116, s().charCodeAt(-0.1)); - assertEquals(116, s().charCodeAt(0.4)); - assertEquals(101, s().charCodeAt(slowIndex1)); - assertEquals(115, s().charCodeAt(slowIndex2)); - assertEquals(116, s().charCodeAt(3)); - assertEquals(116, s().charCodeAt(3.4)); - assertEquals(116, s().charCodeAt(NaN)); - assertTrue(isNaN(s().charCodeAt(-1))); - assertTrue(isNaN(s().charCodeAt(len))); - assertTrue(isNaN(s().charCodeAt(slowIndexOutOfRange))); - assertTrue(isNaN(s().charCodeAt(1/0))); - assertTrue(isNaN(s().charCodeAt(-1/0))); -} -basicTest(function() { return s; }, s.length); -basicTest(getCons, getCons().length); - -// Make sure enough of the one-char string cache is filled. -var alpha = ['@']; -for (var i = 1; i < 128; i++) { - var c = String.fromCharCode(i); - alpha[i] = c.charAt(0); -} -var alphaStr = alpha.join(""); - -// Now test chars. -for (var i = 1; i < 128; i++) { - assertEquals(alpha[i], alphaStr.charAt(i)); - assertEquals(String.fromCharCode(i), alphaStr.charAt(i)); -} - -// Test stealing String.prototype.{charAt,charCodeAt}. -var o = { - charAt: String.prototype.charAt, - charCodeAt: String.prototype.charCodeAt, - toString: function() { return "012"; }, - valueOf: function() { return "should not be called"; } -}; - -function stealTest() { - assertEquals("0", o.charAt(0)); - assertEquals("1", o.charAt(1)); - assertEquals("1", o.charAt(1.4)); - assertEquals("1", o.charAt(slowIndex1)); - assertEquals("2", o.charAt(2)); - assertEquals("2", o.charAt(slowIndex2)); - assertEquals(48, o.charCodeAt(0)); - assertEquals(49, o.charCodeAt(1)); - assertEquals(49, o.charCodeAt(1.4)); - assertEquals(49, o.charCodeAt(slowIndex1)); - assertEquals(50, o.charCodeAt(2)); - assertEquals(50, o.charCodeAt(slowIndex2)); - assertEquals("", o.charAt(-1)); - assertEquals("", o.charAt(-1.4)); - assertEquals("", o.charAt(10)); - assertEquals("", o.charAt(slowIndexOutOfRange)); - assertTrue(isNaN(o.charCodeAt(-1))); - assertTrue(isNaN(o.charCodeAt(-1.4))); - assertTrue(isNaN(o.charCodeAt(10))); - assertTrue(isNaN(o.charCodeAt(slowIndexOutOfRange))); -} -stealTest(); - -// Test custom string IC-s. -for (var i = 0; i < 20; i++) { - basicTest(function() { return s; }, s.length); - basicTest(getCons, getCons().length); - stealTest(); -} - -var badToString = function() { return []; }; - -function testBadToString_charAt() { - var goodToString = o.toString; - var hasCaught = false; - var numCalls = 0; - var result; - try { - for (var i = 0; i < 20; i++) { - if (i == 10) o.toString = o.valueOf = badToString; - result = o.charAt(1); - numCalls++; - } - } catch (e) { - hasCaught = true; - } finally { - o.toString = goodToString; - } - assertTrue(hasCaught); - assertEquals("1", result); - assertEquals(10, numCalls); -} -testBadToString_charAt(); - -function testBadToString_charCodeAt() { - var goodToString = o.toString; - var hasCaught = false; - var numCalls = 0; - var result; - try { - for (var i = 0; i < 20; i++) { - if (i == 10) o.toString = o.valueOf = badToString; - result = o.charCodeAt(1); - numCalls++; - } - } catch (e) { - hasCaught = true; - } finally { - o.toString = goodToString; - } - assertTrue(hasCaught); - assertEquals(49, result); - assertEquals(10, numCalls); -} -testBadToString_charCodeAt(); - -var badIndex = { - toString: badToString, - valueOf: badToString -}; - -function testBadIndex_charAt() { - var index = 1; - var hasCaught = false; - var numCalls = 0; - var result; - try { - for (var i = 0; i < 20; i++) { - if (i == 10) index = badIndex; - result = o.charAt(index); - numCalls++; - } - } catch (e) { - hasCaught = true; - } - assertTrue(hasCaught); - assertEquals("1", result); - assertEquals(10, numCalls); -} -testBadIndex_charAt(); - -function testBadIndex_charCodeAt() { - var index = 1; - var hasCaught = false; - var numCalls = 0; - var result; - try { - for (var i = 0; i < 20; i++) { - if (i == 10) index = badIndex; - result = o.charCodeAt(index); - numCalls++; - } - } catch (e) { - hasCaught = true; - } - assertTrue(hasCaught); - assertEquals(49, result); - assertEquals(10, numCalls); -} -testBadIndex_charCodeAt(); - -function testPrototypeChange_charAt() { - var result, oldResult; - for (var i = 0; i < 20; i++) { - if (i == 10) { - oldResult = result; - String.prototype.charAt = function() { return "%"; }; - } - result = s.charAt(1); - } - assertEquals("%", result); - assertEquals("e", oldResult); - delete String.prototype.charAt; // Restore the default. -} -testPrototypeChange_charAt(); - -function testPrototypeChange_charCodeAt() { - var result, oldResult; - for (var i = 0; i < 20; i++) { - if (i == 10) { - oldResult = result; - String.prototype.charCodeAt = function() { return 42; }; - } - result = s.charCodeAt(1); - } - assertEquals(42, result); - assertEquals(101, oldResult); - delete String.prototype.charCodeAt; // Restore the default. -} -testPrototypeChange_charCodeAt(); diff --git a/implementation-contributed/v8/mjsunit/string-charcodeat-external.js b/implementation-contributed/v8/mjsunit/string-charcodeat-external.js deleted file mode 100644 index 8b291dad33e..00000000000 --- a/implementation-contributed/v8/mjsunit/string-charcodeat-external.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --expose-externalize-string --expose-gc --allow-natives-syntax - -function foo(s) { - return s.charCodeAt(12); -} - -var extern = "internalized dummy"; -extern = "1234567890qiaipppiúöäöáœba"+"jalsdjasldjasdlasjdalsdjasldk"; -externalizeString(extern, true /* force two-byte */); -assertEquals(97, foo(extern)); -assertEquals(97, foo(extern)); -%OptimizeFunctionOnNextCall(foo); -assertEquals(97, foo(extern)); diff --git a/implementation-contributed/v8/mjsunit/string-charcodeat.js b/implementation-contributed/v8/mjsunit/string-charcodeat.js deleted file mode 100644 index 6031096e0bb..00000000000 --- a/implementation-contributed/v8/mjsunit/string-charcodeat.js +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -/** - * @fileoverview Check all sorts of borderline cases for charCodeAt. - */ - -function Cons() { - return "Te" + "st testing 123"; -} - - -function Deep() { - var a = "T"; - a += "e"; - a += "s"; - a += "ting testing 123"; - return a; -} - - -function Slice() { - return "testing Testing testing 123456789012345".substring(8, 22); -} - - -function Flat() { - return "Testing testing 123"; -} - -function Cons16() { - return "Te" + "\u1234t testing 123"; -} - - -function Deep16() { - var a = "T"; - a += "e"; - a += "\u1234"; - a += "ting testing 123"; - return a; -} - - -function Slice16Beginning() { - return "Te\u1234t testing testing 123".substring(0, 14); -} - - -function Slice16Middle() { - return "test Te\u1234t testing testing 123".substring(5, 19); -} - - -function Slice16End() { - return "test Te\u1234t".substring(5, 9); -} - - -function Flat16() { - return "Te\u1234ting testing 123"; -} - - -function Thing() { -} - - -function NotAString() { - var n = new Thing(); - n.toString = function() { return "Test"; }; - n.charCodeAt = String.prototype.charCodeAt; - return n; -} - - -function NotAString16() { - var n = new Thing(); - n.toString = function() { return "Te\u1234t"; }; - n.charCodeAt = String.prototype.charCodeAt; - return n; -} - - -function TestStringType(generator, sixteen) { - var g = generator; - var len = g().toString().length; - var t = sixteen ? "t" : "f" - t += generator.name; - assertTrue(isNaN(g().charCodeAt(-1e19)), 1 + t); - assertTrue(isNaN(g().charCodeAt(-0x80000001)), 2 + t); - assertTrue(isNaN(g().charCodeAt(-0x80000000)), 3 + t); - assertTrue(isNaN(g().charCodeAt(-0x40000000)), 4 + t); - assertTrue(isNaN(g().charCodeAt(-1)), 5 + t); - assertTrue(isNaN(g().charCodeAt(len)), 6 + t); - assertTrue(isNaN(g().charCodeAt(len + 1)), 7 + t); - assertTrue(isNaN(g().charCodeAt(0x3fffffff)), 8 + t); - assertTrue(isNaN(g().charCodeAt(0x7fffffff)), 9 + t); - assertTrue(isNaN(g().charCodeAt(0x80000000)), 10 + t); - assertTrue(isNaN(g().charCodeAt(1e9)), 11 + t); - assertEquals(84, g().charCodeAt(0), 12 + t); - assertEquals(84, g().charCodeAt("test"), 13 + t); - assertEquals(84, g().charCodeAt(""), 14 + t); - assertEquals(84, g().charCodeAt(null), 15 + t); - assertEquals(84, g().charCodeAt(undefined), 16 + t); - assertEquals(84, g().charCodeAt(), 17 + t); - assertEquals(84, g().charCodeAt(void 0), 18 + t); - assertEquals(84, g().charCodeAt(false), 19 + t); - assertEquals(101, g().charCodeAt(true), 20 + t); - assertEquals(101, g().charCodeAt(1), 21 + t); - assertEquals(sixteen ? 0x1234 : 115, g().charCodeAt(2), 22 + t); - assertEquals(116, g().charCodeAt(3), 23 + t); - assertEquals(101, g().charCodeAt(1.1), 24 + t); - assertEquals(sixteen ? 0x1234 : 115, g().charCodeAt(2.1718), 25 + t); - assertEquals(116, g().charCodeAt(3.14159), 26 + t); -} - -TestStringType(Cons, false); -TestStringType(Deep, false); -TestStringType(Slice, false); -TestStringType(Flat, false); -TestStringType(NotAString, false); -TestStringType(Cons16, true); -TestStringType(Deep16, true); -TestStringType(Slice16Beginning, true); -TestStringType(Slice16Middle, true); -TestStringType(Slice16End, true); -TestStringType(Flat16, true); -TestStringType(NotAString16, true); - -function Flat16Optimized() { - var str = Flat16(); - return str.charCodeAt(2); -} - -assertEquals(0x1234, Flat16Optimized()); -assertEquals(0x1234, Flat16Optimized()); -%OptimizeFunctionOnNextCall(Flat16Optimized); -assertEquals(0x1234, Flat16Optimized()); - -function ConsNotSmiIndex() { - var str = Cons(); - assertTrue(isNaN(str.charCodeAt(0x7fffffff))); -} - -for (var i = 0; i < 5; i++) { - ConsNotSmiIndex(); -} -%OptimizeFunctionOnNextCall(ConsNotSmiIndex); -ConsNotSmiIndex(); - - -for (var i = 0; i != 10; i++) { - assertEquals(101, Cons16().charCodeAt(1.1)); - assertEquals('e', Cons16().charAt(1.1)); -} - -function StupidThing() { - // Doesn't return a string from toString! - this.toString = function() { return 42; } - this.charCodeAt = String.prototype.charCodeAt; -} - -assertEquals(52, new StupidThing().charCodeAt(0), 27); -assertEquals(50, new StupidThing().charCodeAt(1), 28); -assertTrue(isNaN(new StupidThing().charCodeAt(2)), 29); -assertTrue(isNaN(new StupidThing().charCodeAt(-1)), 30); - - -// Medium (>255) and long (>65535) strings. - -var medium = "12345678"; -medium += medium; // 16. -medium += medium; // 32. -medium += medium; // 64. -medium += medium; // 128. -medium += medium; // 256. - -var long = medium; -long += long + long + long; // 1024. -long += long + long + long; // 4096. -long += long + long + long; // 16384. -long += long + long + long; // 65536. - -assertTrue(isNaN(medium.charCodeAt(-1)), 31); -assertEquals(49, medium.charCodeAt(0), 32); -assertEquals(56, medium.charCodeAt(255), 33); -assertTrue(isNaN(medium.charCodeAt(256)), 34); - -assertTrue(isNaN(long.charCodeAt(-1)), 35); -assertEquals(49, long.charCodeAt(0), 36); -assertEquals(56, long.charCodeAt(65535), 37); -assertTrue(isNaN(long.charCodeAt(65536)), 38); - - -// Test crankshaft code when the function is set directly on the -// string prototype object instead of the hidden prototype object. -// See http://code.google.com/p/v8/issues/detail?id=1070 - -String.prototype.x = String.prototype.charCodeAt; - -function directlyOnPrototype() { - assertEquals(97, "a".x(0)); - assertEquals(98, "b".x(0)); - assertEquals(99, "c".x(0)); - assertEquals(97, "a".x(0)); - assertEquals(98, "b".x(0)); - assertEquals(99, "c".x(0)); -} - -for (var i = 0; i < 5; i++) { - directlyOnPrototype(); -} -%OptimizeFunctionOnNextCall(directlyOnPrototype); -directlyOnPrototype(); diff --git a/implementation-contributed/v8/mjsunit/string-compare-alignment.js b/implementation-contributed/v8/mjsunit/string-compare-alignment.js deleted file mode 100644 index 0ae8eb79109..00000000000 --- a/implementation-contributed/v8/mjsunit/string-compare-alignment.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we can compare two strings that are not 4-byte aligned. -// This situation can arise with sliced strings. This tests for an ARM bug -// that was fixed in r554. - -var base = - "Now is the time for all good men to come to the aid of the party. " + - "Now is the time for all good men to come to the aid of the party." -var s1 = base.substring(0, 64); -var s2 = base.substring(66, 130); - -var o = new Object(); -o[s1] = 1; -o[s2] = 2; - -var first_time = true; - -for (var x in o) { - assertTrue(o[x] == 2, "expect 2"); - assertTrue(first_time, "once only"); - first_time = false; -} diff --git a/implementation-contributed/v8/mjsunit/string-concat.js b/implementation-contributed/v8/mjsunit/string-concat.js deleted file mode 100644 index c669b3bd4ba..00000000000 --- a/implementation-contributed/v8/mjsunit/string-concat.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function Stringified(toString) { - var valueOf = "-" + toString + "-"; - return { - toString: function() { return toString; }, - valueOf: function() { return valueOf; } - }; -} - -assertEquals("a.b.", "a.".concat(Stringified("b."))); -assertEquals("a.b.c.", "a.".concat(Stringified("b."), Stringified("c."))); diff --git a/implementation-contributed/v8/mjsunit/string-deopt.js b/implementation-contributed/v8/mjsunit/string-deopt.js deleted file mode 100644 index 15549186ea5..00000000000 --- a/implementation-contributed/v8/mjsunit/string-deopt.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license -// that can be found in the LICENSE file. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -(()=> { - function f(a, b, c) { - return a.indexOf(b, c); - } - f("abc", "de", 1); - f("abc", "de", 1); - %OptimizeFunctionOnNextCall(f); - f("abc", "de", {}); - %OptimizeFunctionOnNextCall(f); - f("abc", "de", {}); - assertOptimized(f); -})(); - -(()=> { - function f(a, b, c) { - return a.indexOf(b, c); - } - f("abc", "de", 1); - f("abc", "de", 1); - %OptimizeFunctionOnNextCall(f); - f("abc", {}, 1); - %OptimizeFunctionOnNextCall(f); - f("abc", {}, 1); - assertOptimized(f); -})(); - -(()=> { - function f(a, b, c) { - return a.substring(b, c); - } - f("abcde", 1, 4); - f("abcde", 1, 4); - %OptimizeFunctionOnNextCall(f); - f("abcde", 1, {}); - %OptimizeFunctionOnNextCall(f); - f("abcde", 1, {}); - assertOptimized(f); -})(); - -(()=> { - function f(a, b, c) { - return a.substring(b, c); - } - f("abcde", 1, 4); - f("abcde", 1, 4); - %OptimizeFunctionOnNextCall(f); - f("abcde", {}, 4); - %OptimizeFunctionOnNextCall(f); - f("abcde", {}, 4); - assertOptimized(f); -})(); diff --git a/implementation-contributed/v8/mjsunit/string-equal.js b/implementation-contributed/v8/mjsunit/string-equal.js deleted file mode 100644 index 26aac23e071..00000000000 --- a/implementation-contributed/v8/mjsunit/string-equal.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -(function() { - const s = '\u8765abc'; - - assertTrue(s === s); - assertFalse(s === 'abc'); - assertFalse('abc' === s); - assertTrue(s.slice(-3) === 'abc'); - assertTrue('abc' === s.slice(-3)); - assertTrue(s.slice(0, 1) === '\u8765'); - assertTrue('\u8765' === s.slice(0, 1)); - assertTrue(s === '' + s); - assertTrue('' + s === s); -})(); diff --git a/implementation-contributed/v8/mjsunit/string-external-cached.js b/implementation-contributed/v8/mjsunit/string-external-cached.js deleted file mode 100644 index cd368f660a0..00000000000 --- a/implementation-contributed/v8/mjsunit/string-external-cached.js +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-externalize-string --expose-gc -// Test data pointer caching of external strings. - -function test() { - // Test string.charAt. - var charat_str = new Array(5); - charat_str[0] = "0123456789ABCDEF0123456789ABCDEF\ -0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF\ -0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF\ -0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF\ -0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"; - charat_str[1] = "0123456789ABCDEF"; - for (var i = 0; i < 6; i++) charat_str[1] += charat_str[1]; - try { // String can only be externalized once - externalizeString(charat_str[0], false); - externalizeString(charat_str[1], true); - } catch (ex) { } - charat_str[2] = charat_str[0].slice(0, -1); - charat_str[3] = charat_str[1].slice(0, -1); - charat_str[4] = charat_str[0] + charat_str[0]; - - for (var i = 0; i < 5; i++) { - assertEquals('B', charat_str[i].charAt(6*16 + 11)); - assertEquals('C', charat_str[i].charAt(6*16 + 12)); - assertEquals('A', charat_str[i].charAt(3*16 + 10)); - assertEquals('B', charat_str[i].charAt(3*16 + 11)); - } - - charat_short = "012"; - try { // String can only be externalized once - externalizeString(charat_short, true); - } catch (ex) { } - assertEquals("1", charat_short.charAt(1)); - - // Test regexp and short substring. - var re = /(A|B)/; - var rere = /(T.{1,2}B)/; - var ascii = "ABCDEFGHIJKLMNOPQRST"; - var twobyte = "_ABCDEFGHIJKLMNOPQRST"; - try { - externalizeString(ascii, false); - externalizeString(twobyte, true); - } catch (ex) { } - assertTrue(isOneByteString(ascii)); - assertFalse(isOneByteString(twobyte)); - var ascii_slice = ascii.slice(1,-1); - var twobyte_slice = twobyte.slice(2,-1); - var ascii_cons = ascii + ascii; - var twobyte_cons = twobyte + twobyte; - for (var i = 0; i < 2; i++) { - assertEquals(["A", "A"], re.exec(ascii)); - assertEquals(["B", "B"], re.exec(ascii_slice)); - assertEquals(["TAB", "TAB"], rere.exec(ascii_cons)); - assertEquals(["A", "A"], re.exec(twobyte)); - assertEquals(["B", "B"], re.exec(twobyte_slice)); - assertEquals(["T_AB", "T_AB"], rere.exec(twobyte_cons)); - assertEquals("DEFG", ascii_slice.substr(2, 4)); - assertEquals("DEFG", twobyte_slice.substr(2, 4)); - assertEquals("DEFG", ascii_cons.substr(3, 4)); - assertEquals("DEFG", twobyte_cons.substr(4, 4)); - } - - // Test adding external strings - var short_ascii = "E="; - var long_ascii = "MCsquared"; - var short_twobyte = "E\u1234"; - var long_twobyte = "MCsquare\u1234"; - try { // String can only be externalized once - externalizeString(short_ascii, false); - externalizeString(long_ascii, false); - externalizeString(short_twobyte, true); - externalizeString(long_twobyte, true); - assertTrue(isOneByteString(short_asii) && isOneByteString(long_ascii)); - assertFalse(isOneByteString(short_twobyte) || isOneByteString(long_twobyte)); - } catch (ex) { } - assertEquals("E=MCsquared", short_ascii + long_ascii); - assertTrue(isOneByteString(short_ascii + long_ascii)); - assertEquals("MCsquaredE=", long_ascii + short_ascii); - assertEquals("E\u1234MCsquare\u1234", short_twobyte + long_twobyte); - assertFalse(isOneByteString(short_twobyte + long_twobyte)); - assertEquals("E=MCsquared", "E=" + long_ascii); - assertEquals("E\u1234MCsquared", short_twobyte + "MCsquared"); - assertEquals("E\u1234MCsquared", short_twobyte + long_ascii); - assertFalse(isOneByteString(short_twobyte + long_ascii)); -} - -// Run the test many times to ensure IC-s don't break things. -for (var i = 0; i < 10; i++) { - test(); -} - -// Clean up string to make Valgrind happy. -gc(); -gc(); diff --git a/implementation-contributed/v8/mjsunit/string-externalize.js b/implementation-contributed/v8/mjsunit/string-externalize.js deleted file mode 100644 index dd861e88163..00000000000 --- a/implementation-contributed/v8/mjsunit/string-externalize.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-externalize-string --expose-gc --allow-natives-syntax - -var size = 1024; - -function dont_inline() { return "A"; } -%NeverOptimizeFunction(dont_inline); - -function dont_inline2() { return "\u1234"; } -%NeverOptimizeFunction(dont_inline2); - -function test() { - var str = ""; - - // Build an ascii cons string. - for (var i = 0; i < size; i++) { - str += String.fromCharCode(i & 0x7f); - } - assertTrue(isOneByteString(str)); - - var twoByteExternalWithOneByteData = - "AA" + dont_inline(); - externalizeString(twoByteExternalWithOneByteData, true /* force two-byte */); - assertFalse(isOneByteString(twoByteExternalWithOneByteData)); - - var realTwoByteExternalString = - "\u1234\u1234\u1234\u1234" + dont_inline2(); - externalizeString(realTwoByteExternalString); - assertFalse(isOneByteString(realTwoByteExternalString)); - - assertTrue(isOneByteString(["a", twoByteExternalWithOneByteData].join(""))); - - // Appending a two-byte string that contains only ascii chars should - // still produce an ascii cons. - var str1 = str + twoByteExternalWithOneByteData; - assertTrue(isOneByteString(str1)); - - // Force flattening of the string. - var old_length = str1.length - twoByteExternalWithOneByteData.length; - for (var i = 0; i < old_length; i++) { - assertEquals(String.fromCharCode(i & 0x7f), str1[i]); - } - for (var i = old_length; i < str1.length; i++) { - assertEquals("A", str1[i]); - } - - // Flattened string should still be ascii. - assertTrue(isOneByteString(str1)); - - // Lower-casing an ascii string should produce ascii. - assertTrue(isOneByteString(str1.toLowerCase())); - - assertFalse(isOneByteString(["a", realTwoByteExternalString].join(""))); - - // Appending a real two-byte string should produce a two-byte cons. - var str2 = str + realTwoByteExternalString; - assertFalse(isOneByteString(str2)); - - // Force flattening of the string. - old_length = str2.length - realTwoByteExternalString.length; - for (var i = 0; i < old_length; i++) { - assertEquals(String.fromCharCode(i & 0x7f), str2[i]); - } - for (var i = old_length; i < str.length; i++) { - assertEquals("\u1234", str2[i]); - } - - // Flattened string should still be two-byte. - assertFalse(isOneByteString(str2)); -} - -// Run the test many times to ensure IC-s don't break things. -for (var i = 0; i < 10; i++) { - test(); -} - -// Clean up string to make Valgrind happy. -gc(); -gc(); diff --git a/implementation-contributed/v8/mjsunit/string-flatten.js b/implementation-contributed/v8/mjsunit/string-flatten.js deleted file mode 100644 index 91877b2df63..00000000000 --- a/implementation-contributed/v8/mjsunit/string-flatten.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Check for regression of bug 1011505 (out of memory when flattening strings). -var i; -var s = ""; - -for (i = 0; i < 1024; i++) { - s = s + (i + (i+1)); - s = s.substring(1); -} -// Flatten the string. -assertEquals(57, s.charCodeAt(0)); diff --git a/implementation-contributed/v8/mjsunit/string-fromcharcode.js b/implementation-contributed/v8/mjsunit/string-fromcharcode.js deleted file mode 100644 index ac51682b72c..00000000000 --- a/implementation-contributed/v8/mjsunit/string-fromcharcode.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Test String.fromCharCode. - -// Test char codes larger than 0xffff. -var expected = ""; -for (var i = 100; i < 500; i++) { - expected += String.fromCharCode(i); -} - -function testCharCodeTruncation() { - var result = ""; - for (var i = 0x100000 + 100; i < 0x100000 + 500; i++) { - result += String.fromCharCode(i); - } - assertEquals(String.fromCharCode(0xFFFF), String.fromCharCode(0xFFFFFFFF)); - return result; -} - -assertEquals(expected, testCharCodeTruncation()); -assertEquals(expected, testCharCodeTruncation()); -%OptimizeFunctionOnNextCall(testCharCodeTruncation); -assertEquals(expected, testCharCodeTruncation()); - -// Test various receivers and arguments passed to String.fromCharCode. - -Object.prototype.fromCharCode = function(x) { return this; }; - -var fcc = String.fromCharCode; -var fcc2 = fcc; - -function constFun(x) { return function(y) { return x; }; } - -function test(num) { - assertEquals(" ", String.fromCharCode(0x20)); - assertEquals(" ", String.fromCharCode(0x20 + 0x10000)); - assertEquals(" ", String.fromCharCode(0x20 - 0x10000)); - assertEquals(" ", String.fromCharCode(0x20 + 0.5)); - - assertEquals("\u1234", String.fromCharCode(0x1234)); - assertEquals("\u1234", String.fromCharCode(0x1234 + 0x10000)); - assertEquals("\u1234", String.fromCharCode(0x1234 - 0x10000)); - assertEquals("\u1234", String.fromCharCode(0x1234 + 0.5)); - - assertEquals(" ", String.fromCharCode(0x20, 0x20)); - assertEquals(" ", String.fromCharCode(0x20 + 0.5, 0x20)); - - assertEquals(" ", fcc(0x20)); - assertEquals(" ", fcc(0x20 + 0x10000)); - assertEquals(" ", fcc(0x20 - 0x10000)); - assertEquals(" ", fcc(0x20 + 0.5)); - - assertEquals("\u1234", fcc(0x1234)); - assertEquals("\u1234", fcc(0x1234 + 0x10000)); - assertEquals("\u1234", fcc(0x1234 - 0x10000)); - assertEquals("\u1234", fcc(0x1234 + 0.5)); - - assertEquals(" ", fcc(0x20, 0x20)); - assertEquals(" ", fcc(0x20 + 0.5, 0x20)); - - var receiver = (num < 5) ? String : (num < 9) ? "dummy" : 42; - fcc2 = (num < 5) ? fcc - : (num < 9) ? constFun(Object("dummy")) - : constFun(Object(42)); - var expected = (num < 5) ? " " : (num < 9) ? Object("dummy") : Object(42); - assertEquals(expected, receiver.fromCharCode(0x20)); - assertEquals(expected, receiver.fromCharCode(0x20 - 0x10000)); - assertEquals(expected, receiver.fromCharCode(0x20 + 0.5)); - assertEquals(expected, fcc2(0x20)); - assertEquals(expected, fcc2(0x20 - 0x10000)); - assertEquals(expected, fcc2(0x20 + 0.5)); -} - -// Use loop to test the custom IC. -for (var i = 0; i < 10; i++) { - test(i); -} - -// Test the custom IC works correctly when the map changes. -for (var i = 0; i < 10; i++) { - var expected = (i < 5) ? " " : 42; - if (i == 5) String.fromCharCode = function() { return 42; }; - assertEquals(expected, String.fromCharCode(0x20)); -} diff --git a/implementation-contributed/v8/mjsunit/string-index.js b/implementation-contributed/v8/mjsunit/string-index.js deleted file mode 100644 index 1c0e3d915d1..00000000000 --- a/implementation-contributed/v8/mjsunit/string-index.js +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -/** - * @fileoverview Test indexing on strings with []. - */ - -var foo = "Foo"; -assertEquals("Foo", foo); -assertEquals("F", foo[0]); -assertEquals("o", foo[1]); -assertEquals("o", foo[2]); - -// Test string keyed load IC. -for (var i = 0; i < 10; i++) { - assertEquals("F", foo[0]); - assertEquals("o", foo[1]); - assertEquals("o", foo[2]); - assertEquals("F", (foo[0] + "BarBazQuuxFooBarQuux")[0]); -} - -assertEquals("F", foo["0" + ""], "string index"); -assertEquals("o", foo["1"], "string index"); -assertEquals("o", foo["2"], "string index"); - -assertEquals("undefined", typeof(foo[3]), "out of range"); -// SpiderMonkey 1.5 fails this next one. So does FF 2.0.6. -assertEquals("undefined", typeof(foo[-1]), "known failure in SpiderMonkey 1.5"); -assertEquals("undefined", typeof(foo[-2]), "negative index"); - -foo[0] = "f"; -assertEquals("Foo", foo); - -foo[3] = "t"; -assertEquals("Foo", foo); -assertEquals("undefined", typeof(foo[3]), "out of range"); -assertEquals("undefined", typeof(foo[-2]), "negative index"); - -var S = new String("foo"); -assertEquals(Object("foo"), S); -assertEquals("f", S[0], "string object"); -assertEquals("f", S["0"], "string object"); -S[0] = 'bente'; -assertEquals("f", S[0], "string object"); -assertEquals("f", S["0"], "string object"); -S[-2] = 'spider'; -assertEquals('spider', S[-2]); -S[3] = 'monkey'; -assertEquals('monkey', S[3]); -S['foo'] = 'Fu'; -assertEquals("Fu", S.foo); - -// In FF this is ignored I think. In V8 it puts a property on the String object -// but you won't ever see it because it is hidden by the 0th character in the -// string. The net effect is pretty much the same. -S["0"] = 'bente'; -assertEquals("f", S[0], "string object"); -assertEquals("f", S["0"], "string object"); - -assertEquals(true, 0 in S, "0 in"); -assertEquals(false, -1 in S, "-1 in"); -assertEquals(true, 2 in S, "2 in"); -assertEquals(true, 3 in S, "3 in"); -assertEquals(false, 4 in S, "3 in"); - -assertEquals(true, "0" in S, '"0" in'); -assertEquals(false, "-1" in S, '"-1" in'); -assertEquals(true, "2" in S, '"2" in'); -assertEquals(true, "3" in S, '"3" in'); -assertEquals(false, "4" in S, '"3" in'); - -assertEquals(true, S.hasOwnProperty(0), "0 hasOwnProperty"); -assertEquals(false, S.hasOwnProperty(-1), "-1 hasOwnProperty"); -assertEquals(true, S.hasOwnProperty(2), "2 hasOwnProperty"); -assertEquals(true, S.hasOwnProperty(3), "3 hasOwnProperty"); -assertEquals(false, S.hasOwnProperty(4), "3 hasOwnProperty"); - -assertEquals(true, S.hasOwnProperty("0"), '"0" hasOwnProperty'); -assertEquals(false, S.hasOwnProperty("-1"), '"-1" hasOwnProperty'); -assertEquals(true, S.hasOwnProperty("2"), '"2" hasOwnProperty'); -assertEquals(true, S.hasOwnProperty("3"), '"3" hasOwnProperty'); -assertEquals(false, S.hasOwnProperty("4"), '"3" hasOwnProperty'); - -assertEquals(true, "foo".hasOwnProperty(0), "foo 0 hasOwnProperty"); -assertEquals(false, "foo".hasOwnProperty(-1), "foo -1 hasOwnProperty"); -assertEquals(true, "foo".hasOwnProperty(2), "foo 2 hasOwnProperty"); -assertEquals(false, "foo".hasOwnProperty(4), "foo 3 hasOwnProperty"); - -assertEquals(true, "foo".hasOwnProperty("0"), 'foo "0" hasOwnProperty'); -assertEquals(false, "foo".hasOwnProperty("-1"), 'foo "-1" hasOwnProperty'); -assertEquals(true, "foo".hasOwnProperty("2"), 'foo "2" hasOwnProperty'); -assertEquals(false, "foo".hasOwnProperty("4"), 'foo "3" hasOwnProperty'); - -//assertEquals(true, 0 in "foo", "0 in"); -//assertEquals(false, -1 in "foo", "-1 in"); -//assertEquals(true, 2 in "foo", "2 in"); -//assertEquals(false, 3 in "foo", "3 in"); -// -//assertEquals(true, "0" in "foo", '"0" in'); -//assertEquals(false, "-1" in "foo", '"-1" in'); -//assertEquals(true, "2" in "foo", '"2" in'); -//assertEquals(false, "3" in "foo", '"3" in'); - -delete S[3]; -assertEquals("undefined", typeof(S[3])); -assertEquals(false, 3 in S); -assertEquals(false, "3" in S); - -var N = new Number(43); -assertEquals(Object(43), N); -N[-2] = "Alpha"; -assertEquals("Alpha", N[-2]); -N[0] = "Zappa"; -assertEquals("Zappa", N[0]); -assertEquals("Zappa", N["0"]); - -var A = ["V", "e", "t", "t", "e", "r"]; -var A2 = (A[0] = "v"); -assertEquals('v', A[0]); -assertEquals('v', A2); - -var S = new String("Onkel"); -var S2 = (S[0] = 'o'); -assertEquals('O', S[0]); -assertEquals('o', S2); - -var s = "Tante"; -var s2 = (s[0] = 't'); -assertEquals('T', s[0]); -assertEquals('t', s2); - -var S2 = (S[-2] = 'o'); -assertEquals('o', S[-2]); -assertEquals('o', S2); - -var s2 = (s[-2] = 't'); -assertEquals('undefined', typeof(s[-2])); -assertEquals('t', s2); - -// Make sure enough of the one-char string cache is filled. -var alpha = ['@']; -for (var i = 1; i < 128; i++) { - var c = String.fromCharCode(i); - alpha[i] = c[0]; -} -var alphaStr = alpha.join(""); - -// Now test chars. -for (var i = 1; i < 128; i++) { - assertEquals(alpha[i], alphaStr[i]); - assertEquals(String.fromCharCode(i), alphaStr[i]); -} - -// Test for keyed ic. -var foo = ['a12', ['a', 2, 'c'], 'a31', 42]; -var results = [1, 2, 3, NaN]; -for (var i = 0; i < 200; ++i) { - var index = Math.floor(i / 50); - var receiver = foo[index]; - var expected = results[index]; - var actual = +(receiver[1]); - assertEquals(expected, actual); -} - -var keys = [0, '1', 2, 3.0, -1, 10]; -var str = 'abcd', arr = ['a', 'b', 'c', 'd', undefined, undefined]; -for (var i = 0; i < 300; ++i) { - var index = Math.floor(i / 50); - var key = keys[index]; - var expected = arr[index]; - var actual = str[key]; - assertEquals(expected, actual); -} - -// Test heap number case. -var keys = [0, Math.floor(2) * 0.5]; -var str = 'ab', arr = ['a', 'b']; -for (var i = 0; i < 100; ++i) { - var index = Math.floor(i / 50); - var key = keys[index]; - var expected = arr[index]; - var actual = str[key]; - assertEquals(expected, actual); -} - -// Test negative zero case. -var keys = [0, -0.0]; -var str = 'ab', arr = ['a', 'a']; -for (var i = 0; i < 100; ++i) { - var index = Math.floor(i / 50); - var key = keys[index]; - var expected = arr[index]; - var actual = str[key]; - assertEquals(expected, actual); -} - -// Test "not-an-array-index" case. -var keys = [0, 0.5]; -var str = 'ab', arr = ['a', undefined]; -for (var i = 0; i < 100; ++i) { - var index = Math.floor(i / 50); - var key = keys[index]; - var expected = arr[index]; - var actual = str[key]; - assertEquals(expected, actual); -} - -// Test out of range case. -var keys = [0, -1]; -var str = 'ab', arr = ['a', undefined]; -for (var i = 0; i < 100; ++i) { - var index = Math.floor(i / 50); - var key = keys[index]; - var expected = arr[index]; - var actual = str[key]; - assertEquals(expected, actual); -} - -var keys = [0, 10]; -var str = 'ab', arr = ['a', undefined]; -for (var i = 0; i < 100; ++i) { - var index = Math.floor(i / 50); - var key = keys[index]; - var expected = arr[index]; - var actual = str[key]; - assertEquals(expected, actual); -} - -// Test out of range with a heap number case. -var num = Math.floor(4) * 0.5; -// TODO(mvstanton): figure out a reliable way to get a heap number every time. -// assertFalse(!%_IsSmi(num)); -var keys = [0, num]; -var str = 'ab', arr = ['a', undefined]; -for (var i = 0; i < 100; ++i) { - var index = Math.floor(i / 50); - var key = keys[index]; - var expected = arr[index]; - var actual = str[key]; - assertEquals(expected, actual); -} - -// Test two byte string. -var str = '\u0427', arr = ['\u0427']; -for (var i = 0; i < 50; ++i) { - var expected = arr[0]; - var actual = str[0]; - assertEquals(expected, actual); -} diff --git a/implementation-contributed/v8/mjsunit/string-indexof-1.js b/implementation-contributed/v8/mjsunit/string-indexof-1.js deleted file mode 100644 index 0267b2c6250..00000000000 --- a/implementation-contributed/v8/mjsunit/string-indexof-1.js +++ /dev/null @@ -1,303 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -var s = "test test test"; - -assertEquals(0, s.indexOf("t")); -assertEquals(3, s.indexOf("t", 1)); -assertEquals(5, s.indexOf("t", 4)); -assertEquals(5, s.indexOf("t", 4.1)); -assertEquals(0, s.indexOf("t", 0)); -assertEquals(0, s.indexOf("t", -1)); -assertEquals(0, s.indexOf("t", -1)); -assertEquals(0, s.indexOf("t", -1.1)); -assertEquals(0, s.indexOf("t", -1073741825)); -assertEquals(1, s.indexOf("e")); -assertEquals(2, s.indexOf("s")); - -assertEquals(5, s.indexOf("test", 4)); -assertEquals(5, s.indexOf("test", 5)); -assertEquals(10, s.indexOf("test", 6)); -assertEquals(10, s.indexOf("test", 6.0)); -assertEquals(0, s.indexOf("test", 0)); -assertEquals(0, s.indexOf("test", 0.0)); -assertEquals(0, s.indexOf("test", -1)); -assertEquals(-1, s.indexOf("not found", -1)); -assertEquals(0, s.indexOf("test", -1.0)); -assertEquals(0, s.indexOf("test", -1073741825)); -assertEquals(0, s.indexOf("test")); -assertEquals(-1, s.indexOf("notpresent")); -assertEquals(-1, s.indexOf()); - -for (var i = 0; i < s.length+10; i++) { - var expected = i < s.length ? i : s.length; - assertEquals(expected, s.indexOf("", i)); -} - -var reString = "asdf[a-z]+(asdf)?"; - -assertEquals(4, reString.indexOf("[a-z]+")); -assertEquals(10, reString.indexOf("(asdf)?")); - -assertEquals(1, String.prototype.indexOf.length); - -// Random greek letters -var twoByteString = "\u039a\u0391\u03a3\u03a3\u0395"; - -// Test single char pattern -assertEquals(0, twoByteString.indexOf("\u039a"), "Lamda"); -assertEquals(1, twoByteString.indexOf("\u0391"), "Alpha"); -assertEquals(2, twoByteString.indexOf("\u03a3"), "First Sigma"); -assertEquals(3, twoByteString.indexOf("\u03a3",3), "Second Sigma"); -assertEquals(4, twoByteString.indexOf("\u0395"), "Epsilon"); -assertEquals(-1, twoByteString.indexOf("\u0392"), "Not beta"); - -// Test multi-char pattern -assertEquals(0, twoByteString.indexOf("\u039a\u0391"), "lambda Alpha"); -assertEquals(1, twoByteString.indexOf("\u0391\u03a3"), "Alpha Sigma"); -assertEquals(2, twoByteString.indexOf("\u03a3\u03a3"), "Sigma Sigma"); -assertEquals(3, twoByteString.indexOf("\u03a3\u0395"), "Sigma Epsilon"); - -assertEquals(-1, twoByteString.indexOf("\u0391\u03a3\u0395"), - "Not Alpha Sigma Epsilon"); - -//single char pattern -assertEquals(4, twoByteString.indexOf("\u0395")); - -// test string with alignment traps -var alignmentString = "\u1122\u2211\u2222\uFF00\u00FF\u00FF"; -assertEquals(2, alignmentString.indexOf("\u2222")); -assertEquals(4, alignmentString.indexOf("\u00FF\u00FF")); - -var longAlignmentString = "\uFF00" + "\u00FF".repeat(10); -assertEquals(1, - longAlignmentString.indexOf("\u00FF".repeat(10))); - -// test string with first character match at the end -var boundsString = "112233"; -assertEquals(-1, boundsString.indexOf("334455")); -assertEquals(-1, boundsString.indexOf("334455".repeat(10))); - -// Test complex string indexOf algorithms. Only trigger for long strings. - -// Long string that isn't a simple repeat of a shorter string. -var long = "A"; -for(var i = 66; i < 76; i++) { // from 'B' to 'K' - long = long + String.fromCharCode(i) + long; -} - -// pattern of 15 chars, repeated every 16 chars in long -var pattern = "ABACABADABACABA"; -for(var i = 0; i < long.length - pattern.length; i+= 7) { - var index = long.indexOf(pattern, i); - assertEquals((i + 15) & ~0xf, index, "Long ABACABA...-string at index " + i); -} -assertEquals(510, long.indexOf("AJABACA"), "Long AJABACA, First J"); -assertEquals(1534, long.indexOf("AJABACA", 511), "Long AJABACA, Second J"); - -pattern = "JABACABADABACABA"; -assertEquals(511, long.indexOf(pattern), "Long JABACABA..., First J"); -assertEquals(1535, long.indexOf(pattern, 512), "Long JABACABA..., Second J"); - - -// Search for a non-ASCII string in a pure ASCII string. -var asciiString = "arglebargleglopglyfarglebargleglopglyfarglebargleglopglyf"; -assertEquals(-1, asciiString.indexOf("\x2061")); - - -// Search in string containing many non-ASCII chars. -var allCodePoints = []; -for (var i = 0; i < 65536; i++) allCodePoints[i] = i; -var allCharsString = String.fromCharCode.apply(String, allCodePoints); -// Search for string long enough to trigger complex search with ASCII pattern -// and UC16 subject. -assertEquals(-1, allCharsString.indexOf("notfound")); - -// Find substrings. -var lengths = [1, 4, 15]; // Single char, simple and complex. -var indices = [0x5, 0x65, 0x85, 0x105, 0x205, 0x285, 0x2005, 0x2085, 0xfff0]; -for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - var length = lengths[lengthIndex]; - for (var i = 0; i < indices.length; i++) { - var index = indices[i]; - var pattern = allCharsString.substring(index, index + length); - assertEquals(index, allCharsString.indexOf(pattern)); - } -} - -(function nonStringReceivers() { - let indexOf = String.prototype.indexOf; - assertThrows(() => indexOf.call(null), TypeError); - assertThrows(() => indexOf.call(undefined), TypeError); - - assertEquals(-1, indexOf.call(1)); - assertEquals(0, indexOf.call(1, "1")); - - assertEquals(-1, indexOf.call(1.2)); - assertEquals(0, indexOf.call(1.2, "1")); - assertEquals(1, indexOf.call(1.2, ".")); - assertEquals(2, indexOf.call(1.2, "2")); - assertEquals(-1, indexOf.call(1.2, "1", 2)); - - assertEquals(-1, indexOf.call({})); - assertEquals(0, indexOf.call({}, "[object Object]")); - assertEquals(-1, indexOf.call({}, "[object", 1)); - - assertEquals(-1, indexOf.call([])); - assertEquals(0, indexOf.call([1,2], "1,2")); - - assertEquals(-1, indexOf.call(this)); -})(); - -(function nonStringSearchString() { - - assertEquals(-1, "".indexOf(1)); - assertEquals(2, "_0123".indexOf(1)); - - assertEquals(-1, "".indexOf(1.2)); - assertEquals(1, "01.2".indexOf(1.2)); - assertEquals(1, "01.2".indexOf(1.2, 1)); - assertEquals(-1, "01.2".indexOf(1.2, 2)); - - assertEquals(-1, "".indexOf(null)); - assertEquals(0, "null".indexOf(null)); - - assertEquals(-1, "".indexOf(undefined)); - assertEquals(1, "_undefined_".indexOf(undefined)); - - assertEquals(0, "".indexOf([])); - assertEquals(0, "123".indexOf([])); - assertEquals(2, "1,2,3".indexOf([2,3])); - - assertEquals(-1, "".indexOf({})); - assertEquals(-1, "".indexOf(this)); -})(); - -(function nonStringPosition() { - assertEquals(0, "aba".indexOf("a", false)); - assertEquals(2, "aba".indexOf("a", true)); - assertEquals(2, "aba".indexOf("a", "1")); - assertEquals(2, "aba".indexOf("a", "1.00000")); - assertEquals(2, "aba".indexOf("a", "2.00000")); - assertEquals(-1, "aba".indexOf("a", "3.00000")); -})(); - -(function optimize() { - function f() { - return 'abc'.indexOf('a'); - } - assertEquals(0, f()); - assertEquals(0, f()); - assertEquals(0, f()); - %OptimizeFunctionOnNextCall(f); - assertEquals(0, f()); - - function f2() { - return 'abc'.indexOf('a', 1); - } - assertEquals(-1, f2()); - assertEquals(-1, f2()); - assertEquals(-1, f2()); - %OptimizeFunctionOnNextCall(f2); - assertEquals(-1, f2()); - - function f3() { - return 'abc'.indexOf('a'); - } - assertEquals(0, f3()); - assertEquals(0, f3()); - assertEquals(0, f3()); - %OptimizeFunctionOnNextCall(f3); - assertEquals(0, f3()); - - function f4() { - return 'abcbc'.indexOf('bc', 2); - } - assertEquals(3, f4()); - assertEquals(3, f4()); - assertEquals(3, f4()); - %OptimizeFunctionOnNextCall(f4); - assertEquals(3, f4()); - - function f5() { - return 'abcbc'.indexOf('b', -1); - } - assertEquals(1, f5()); - assertEquals(1, f5()); - assertEquals(1, f5()); - %OptimizeFunctionOnNextCall(f5); - assertEquals(1, f5()); - - function f6() { - return 'abcbc'.indexOf('b', -10737418); - } - assertEquals(1, f6()); - assertEquals(1, f6()); - assertEquals(1, f6()); - %OptimizeFunctionOnNextCall(f6); - assertEquals(1, f6()); -})(); - -(function optimizeOSR() { - function f() { - var result; - for (var i = 0; i < 100000; i++) { - result = 'abc'.indexOf('a'); - } - return result; - } - assertEquals(0, f()); - - function f2() { - var result; - for (var i = 0; i < 100000; i++) { - result = 'abc'.indexOf('a', 1); - } - return result; - } - assertEquals(-1, f2()); - - function f3() { - var result; - for (var i = 0; i < 100000; i++) { - result = 'abc'.indexOf('a'); - } - return result; - } - assertEquals(0, f3()); - - function f4() { - var result; - for (var i = 0; i < 100000; i++) { - result = 'abcbc'.indexOf('bc', 2); - } - return result; - } - assertEquals(3, f4()); -})(); diff --git a/implementation-contributed/v8/mjsunit/string-indexof-2.js b/implementation-contributed/v8/mjsunit/string-indexof-2.js deleted file mode 100644 index 48db84d26e6..00000000000 --- a/implementation-contributed/v8/mjsunit/string-indexof-2.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var lipsum = "lorem ipsum per se esse fugiendum. itaque aiunt hanc quasi " - + "naturalem atque insitam in animis nostris inesse notionem, ut " - + "alterum esse appetendum, alterum aspernandum sentiamus. Alii autem," - + " quibus ego assentior, cum a philosophis compluribus permulta " - + "dicantur, cur nec voluptas in bonis sit numeranda nec in malis " - + "dolor, non existimant oportere nimium nos causae confidere, sed et" - + " argumentandum et accurate disserendum et rationibus conquisitis de" - + " voluptate et dolore disputandum putant.\n" - + "Sed ut perspiciatis, unde omnis iste natus error sit voluptatem " - + "accusantium doloremque laudantium, totam rem aperiam eaque ipsa," - + "quae ab illo inventore veritatis et quasi architecto beatae vitae " - + "dicta sunt, explicabo. nemo enim ipsam voluptatem, quia voluptas" - + "sit, aspernatur aut odit aut fugit, sed quia consequuntur magni" - + " dolores eos, qui ratione voluptatem sequi nesciunt, neque porro" - + " quisquam est, qui dolorem ipsum, quia dolor sit, amet, " - + "consectetur, adipisci velit, sed quia non numquam eius modi" - + " tempora incidunt, ut labore et dolore magnam aliquam quaerat " - + "voluptatem. ut enim ad minima veniam, quis nostrum exercitationem " - + "ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi " - + "consequatur? quis autem vel eum iure reprehenderit, qui in ea " - + "voluptate velit esse, quam nihil molestiae consequatur, vel illum, " - + "qui dolorem eum fugiat, quo voluptas nulla pariatur?\n"; - -assertEquals(893, lipsum.indexOf("lorem ipsum, quia dolor sit, amet"), - "Lipsum"); -// test a lot of substrings of differing length and start-position. -for(var i = 0; i < lipsum.length; i += 3) { - for(var len = 1; i + len < lipsum.length; len += 7) { - var substring = lipsum.substring(i, i + len); - var index = -1; - do { - index = lipsum.indexOf(substring, index + 1); - assertTrue(index != -1, - "Lipsum substring " + i + ".." + (i + len-1) + " not found"); - assertEquals(lipsum.substring(index, index + len), substring, - "Wrong lipsum substring found: " + i + ".." + (i + len - 1) + "/" + - index + ".." + (index + len - 1)); - } while (index >= 0 && index < i); - assertEquals(i, index, "Lipsum match at " + i + ".." + (i + len - 1)); - } -} diff --git a/implementation-contributed/v8/mjsunit/string-lastindexof.js b/implementation-contributed/v8/mjsunit/string-lastindexof.js deleted file mode 100644 index 27378f7895c..00000000000 --- a/implementation-contributed/v8/mjsunit/string-lastindexof.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var s = "test test test"; - -var MAX_DOUBLE = 1.7976931348623157e+308; -var MIN_DOUBLE = -MAX_DOUBLE; -var MAX_SMI = Math.pow(2,30)-1; -var MIN_SMI = -Math.pow(2,30); - -assertEquals(10, s.lastIndexOf("test", Infinity), "tinf"); -assertEquals(10, s.lastIndexOf("test", MAX_DOUBLE), "tmaxdouble"); -assertEquals(10, s.lastIndexOf("test", MAX_SMI), "tmaxsmi"); -assertEquals(10, s.lastIndexOf("test", s.length * 2), "t2length"); -assertEquals(10, s.lastIndexOf("test", 15), "t15"); -assertEquals(10, s.lastIndexOf("test", 14), "t14"); -assertEquals(10, s.lastIndexOf("test", 10), "t10"); -assertEquals(5, s.lastIndexOf("test", 9), "t9"); -assertEquals(5, s.lastIndexOf("test", 6), "t6"); -assertEquals(5, s.lastIndexOf("test", 5), "t5"); -assertEquals(0, s.lastIndexOf("test", 4), "t4"); -assertEquals(0, s.lastIndexOf("test", 0), "t0"); -assertEquals(0, s.lastIndexOf("test", -1), "t-1"); -assertEquals(0, s.lastIndexOf("test", -s.length), "t-len"); -assertEquals(0, s.lastIndexOf("test", MIN_SMI), "tminsmi"); -assertEquals(0, s.lastIndexOf("test", MIN_DOUBLE), "tmindouble"); -assertEquals(0, s.lastIndexOf("test", -Infinity), "tneginf"); -assertEquals(10, s.lastIndexOf("test"), "t"); -assertEquals(-1, s.lastIndexOf("notpresent"), "n"); -assertEquals(-1, s.lastIndexOf(), "none"); -assertEquals(10, s.lastIndexOf("test", "not a number"), "nan"); - -var longNonMatch = "overlong string that doesn't match"; -var longAlmostMatch = "test test test!"; -var longAlmostMatch2 = "!test test test"; - - -assertEquals(-1, s.lastIndexOf(longNonMatch), "long"); -assertEquals(-1, s.lastIndexOf(longNonMatch, 10), "longpos"); -assertEquals(-1, s.lastIndexOf(longNonMatch, NaN), "longnan"); -assertEquals(-1, s.lastIndexOf(longAlmostMatch), "tlong"); -assertEquals(-1, s.lastIndexOf(longAlmostMatch, 10), "tlongpos"); -assertEquals(-1, s.lastIndexOf(longAlmostMatch), "tlongnan"); - -var nonInitialMatch = "est"; - -assertEquals(-1, s.lastIndexOf(nonInitialMatch, 0), "noninit"); -assertEquals(-1, s.lastIndexOf(nonInitialMatch, -1), "noninitneg"); -assertEquals(-1, s.lastIndexOf(nonInitialMatch, MIN_SMI), "noninitminsmi"); -assertEquals(-1, s.lastIndexOf(nonInitialMatch, MIN_DOUBLE), "noninitmindbl"); -assertEquals(-1, s.lastIndexOf(nonInitialMatch, -Infinity), "noninitneginf"); - -for (var i = s.length + 10; i >= 0; i--) { - var expected = i < s.length ? i : s.length; - assertEquals(expected, s.lastIndexOf("", i), "empty" + i); -} - - -var reString = "asdf[a-z]+(asdf)?"; - -assertEquals(4, reString.lastIndexOf("[a-z]+"), "r4"); -assertEquals(10, reString.lastIndexOf("(asdf)?"), "r10"); - -assertEquals(1, String.prototype.lastIndexOf.length, "length"); diff --git a/implementation-contributed/v8/mjsunit/string-localecompare.js b/implementation-contributed/v8/mjsunit/string-localecompare.js deleted file mode 100644 index 90a18133361..00000000000 --- a/implementation-contributed/v8/mjsunit/string-localecompare.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// String.prototype.localeCompare. -// -// Implementation dependent function. For now, we do not do anything -// locale specific. - -// Equal prefix. -assertTrue("asdf".localeCompare("asdf") == 0); -assertTrue("asd".localeCompare("asdf") < 0); -assertTrue("asdff".localeCompare("asdf") > 0); - -// Chars differ. -assertTrue("asdf".localeCompare("asdq") < 0); -assertTrue("asdq".localeCompare("asdf") > 0); diff --git a/implementation-contributed/v8/mjsunit/string-match.js b/implementation-contributed/v8/mjsunit/string-match.js deleted file mode 100644 index 7689652cee9..00000000000 --- a/implementation-contributed/v8/mjsunit/string-match.js +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * @fileoverview Test String.prototype.match - */ - - -function testMatch(name, input, regexp, result, captures, from, to) { - var matchResult = input.match(regexp); - assertEquals(result, matchResult, name + "-match"); - - var match = input.substring(from, to); - var preMatch = input.substring(0, from); - var postMatch = input.substring(to); - var lastParen = captures.length > 0 ? captures[captures.length - 1] : ""; - - if (regexp.global) { - // Returns array of matched strings. - var lastMatch = matchResult[matchResult.length - 1]; - assertEquals(match, lastMatch, name + "-match-string_g"); - } else { - // Returns array of match and captures. - assertEquals(match, matchResult[0], name + "-match-string"); - assertEquals(captures.length + 1, matchResult.length, name + "-cap-return"); - for (var i = 1; i < matchResult.length; i++) { - assertEquals(captures[i - 1], matchResult[i], name + "-cap-return-" + i); - } - } - - assertEquals(match, RegExp["$&"], name + "-$&"); - assertEquals(match, RegExp.lastMatch, name + "-lastMatch"); - - assertEquals(undefined, RegExp.$0, name + "-nocapture-10"); - for (var i = 1; i <= 9; i++) { - if (i <= captures.length) { - assertEquals(captures[i - 1], RegExp["$" + i], name + "-capture-" + i); - } else { - assertEquals("", RegExp["$" + i], name + "-nocapture-" + i); - } - } - assertEquals(undefined, RegExp.$10, name + "-nocapture-10"); - - assertEquals(input, RegExp.input, name + "-input"); - assertEquals(input, RegExp.$_, name + "-$_"); - - assertEquals(preMatch, RegExp["$`"], name + "-$`"); - assertEquals(preMatch, RegExp.leftContext, name + "-leftContex"); - - assertEquals(postMatch, RegExp["$'"], name + "-$'"); - assertEquals(postMatch, RegExp.rightContext, name + "-rightContex"); - - assertEquals(lastParen, RegExp["$+"], name + "-$+"); - assertEquals(lastParen, RegExp.lastParen, name + "-lastParen"); - -} - - -var stringSample = "A man, a plan, a canal: Panama"; -var stringSample2 = "Argle bargle glop glyf!"; -var stringSample3 = "abcdefghijxxxxxxxxxx"; - - -// Non-capturing, non-global regexp. - -var re_nog = /\w+/; - -testMatch("Nonglobal", stringSample, re_nog, - ["A"], - [], 0, 1); - - -re_nog.lastIndex = 2; - -testMatch("Nonglobal-ignore-lastIndex", stringSample, re_nog, - ["A"], - [], 0, 1); - - -// Capturing non-global regexp. - -var re_multicap = /(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)/; -testMatch("Capture-Nonglobal", stringSample3, re_multicap, - ["abcdefghij", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j"], - ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"], 0, 10); - - -// Global regexp (also check that capture from before are cleared) - -var re = /\w+/g; -testMatch("Global", stringSample2, re, - ["Argle", "bargle", "glop", "glyf"], [], 18, 22); - -re.lastIndex = 10; - -testMatch("Global-ignore-lastIndex", stringSample2, re, - ["Argle", "bargle", "glop", "glyf"], [], 18, 22); - - -// Capturing global regexp - -var re_cap = /\w(\w*)/g; - -testMatch("Capture-Global", stringSample, re_cap, - ["A", "man", "a", "plan", "a", "canal", "Panama"], - ["anama"], 24, 30); - - -// Atom, non-global - -var re_atom = /an/; - -testMatch("Atom", stringSample, re_atom, - ["an"], - [], 3, 5); - - -// Atom, global - -var re_atomg = /an/g; - -testMatch("Global-Atom", stringSample, re_atomg, - ["an", "an", "an", "an"], - [], 25, 27); diff --git a/implementation-contributed/v8/mjsunit/string-normalize.js b/implementation-contributed/v8/mjsunit/string-normalize.js deleted file mode 100644 index d8ae74d4eaf..00000000000 --- a/implementation-contributed/v8/mjsunit/string-normalize.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals('', ''.normalize()); -assertTrue(delete Array.prototype.indexOf); -assertEquals('', ''.normalize()); - -assertThrows(function() { ''.normalize('invalid'); }, RangeError); -assertTrue(delete Array.prototype.join); -assertThrows(function() { ''.normalize('invalid'); }, RangeError); - -// All of these toString to an invalid form argument. -assertThrows(function() { ''.normalize(null) }, RangeError); -assertThrows(function() { ''.normalize(true) }, RangeError); -assertThrows(function() { ''.normalize(false) }, RangeError); -assertThrows(function() { ''.normalize(42) }, RangeError); -assertThrows(function() { ''.normalize({}) }, RangeError); -assertThrows(function() { ''.normalize([]) }, RangeError); diff --git a/implementation-contributed/v8/mjsunit/string-oom-array-join.js b/implementation-contributed/v8/mjsunit/string-oom-array-join.js deleted file mode 100644 index 2ed51900dee..00000000000 --- a/implementation-contributed/v8/mjsunit/string-oom-array-join.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = "a".repeat(%StringMaxLength() / 10); -var b = []; -for (var i = 0; i < 11; i++) b.push(a); - -function join() { - b.join(); -} - -assertThrows(join, RangeError); diff --git a/implementation-contributed/v8/mjsunit/string-oom-concat.js b/implementation-contributed/v8/mjsunit/string-oom-concat.js deleted file mode 100644 index 0b35021c338..00000000000 --- a/implementation-contributed/v8/mjsunit/string-oom-concat.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function concat() { - var a = " "; - for (var i = 0; i < 100; i++) { - a += a; - } - return a; -} - -assertThrows(concat, RangeError); diff --git a/implementation-contributed/v8/mjsunit/string-oom-replace-global-regexp-with-string.js b/implementation-contributed/v8/mjsunit/string-oom-replace-global-regexp-with-string.js deleted file mode 100644 index 5053d81e8ca..00000000000 --- a/implementation-contributed/v8/mjsunit/string-oom-replace-global-regexp-with-string.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = 'a'.repeat(32); -var b = 'b'.repeat(%StringMaxLength() / 32 + 1); - -function replace1() { - a.replace(/./g, b); -} - -assertThrows(replace1, RangeError); - - -var a = 'a'.repeat(Math.sqrt(%StringMaxLength()) + 1); - -function replace2() { - a.replace(/a/g, a); -} - -assertThrows(replace2, RangeError); diff --git a/implementation-contributed/v8/mjsunit/string-oom-replace-regexp-global-with-function.js b/implementation-contributed/v8/mjsunit/string-oom-replace-regexp-global-with-function.js deleted file mode 100644 index 567920b4119..00000000000 --- a/implementation-contributed/v8/mjsunit/string-oom-replace-regexp-global-with-function.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var a = 'a'.repeat(32); -var b = 'b'.repeat(%StringMaxLength() / 32 + 1); - -function replace() { - a.replace(/a/g, function() { return b }); -} - -assertThrows(replace, RangeError); diff --git a/implementation-contributed/v8/mjsunit/string-pad.js b/implementation-contributed/v8/mjsunit/string-pad.js deleted file mode 100644 index 836ab8160ed..00000000000 --- a/implementation-contributed/v8/mjsunit/string-pad.js +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -class MyError {}; -const throwing = {toString() {throw new MyError}}; -const empties = ['', {toString() {return ''}}]; - -{ - const s = ''; - - assertThrows(_ => s.padStart(Symbol(), throwing), TypeError); - assertEquals(s, s.padStart(NaN, throwing)); - assertEquals(s, s.padStart(-Infinity, throwing)); - assertEquals(s, s.padStart(-9, throwing)); - assertEquals(s, s.padStart(-1, throwing)); - assertEquals(s, s.padStart(-0, throwing)); - assertEquals(s, s.padStart(0, throwing)); - assertThrows(_ => s.padStart(3, throwing), MyError); - assertThrows(_ => s.padStart(9, throwing), MyError); - assertThrows(_ => s.padStart(2**31-1, throwing), MyError); - assertThrows(_ => s.padStart(2**31, throwing), MyError); - assertThrows(_ => s.padStart(2**32-1, throwing), MyError); - assertThrows(_ => s.padStart(2**32, throwing), MyError); - assertThrows(_ => s.padStart(2**53-1, throwing), MyError); - assertThrows(_ => s.padStart(2**53, throwing), MyError); - assertThrows(_ => s.padStart(Infinity, throwing), MyError); - - assertThrows(_ => s.padEnd(Symbol(), throwing), TypeError); - assertEquals(s, s.padEnd(NaN, throwing)); - assertEquals(s, s.padEnd(-Infinity, throwing)); - assertEquals(s, s.padEnd(-9, throwing)); - assertEquals(s, s.padEnd(-1, throwing)); - assertEquals(s, s.padEnd(-0, throwing)); - assertEquals(s, s.padEnd(0, throwing)); - assertThrows(_ => s.padEnd(3, throwing), MyError); - assertThrows(_ => s.padEnd(9, throwing), MyError); - assertThrows(_ => s.padEnd(2**31-1, throwing), MyError); - assertThrows(_ => s.padEnd(2**31, throwing), MyError); - assertThrows(_ => s.padEnd(2**32-1, throwing), MyError); - assertThrows(_ => s.padEnd(2**32, throwing), MyError); - assertThrows(_ => s.padEnd(2**53-1, throwing), MyError); - assertThrows(_ => s.padEnd(2**53, throwing), MyError); - assertThrows(_ => s.padEnd(Infinity, throwing), MyError); - - for (const empty of empties) { - assertThrows(_ => s.padStart(Symbol(), empty), TypeError); - assertEquals(s, s.padStart(NaN, empty)); - assertEquals(s, s.padStart(-Infinity, empty)); - assertEquals(s, s.padStart(-9, empty)); - assertEquals(s, s.padStart(-1, empty)); - assertEquals(s, s.padStart(-0, empty)); - assertEquals(s, s.padStart(0, empty)); - assertEquals(s, s.padStart(3, empty)); - assertEquals(s, s.padStart(9, empty)); - assertEquals(s, s.padStart(2**31-1, empty)); - assertEquals(s, s.padStart(2**31, empty)); - assertEquals(s, s.padStart(2**32-1, empty)); - assertEquals(s, s.padStart(2**32, empty)); - assertEquals(s, s.padStart(2**53-1, empty)); - assertEquals(s, s.padStart(2**53, empty)); - assertEquals(s, s.padStart(Infinity, empty)); - - assertThrows(_ => s.padEnd(Symbol(), empty), TypeError); - assertEquals(s, s.padEnd(NaN, empty)); - assertEquals(s, s.padEnd(-Infinity, empty)); - assertEquals(s, s.padEnd(-9, empty)); - assertEquals(s, s.padEnd(-1, empty)); - assertEquals(s, s.padEnd(-0, empty)); - assertEquals(s, s.padEnd(0, empty)); - assertEquals(s, s.padEnd(3, empty)); - assertEquals(s, s.padEnd(9, empty)); - assertEquals(s, s.padEnd(2**31-1, empty)); - assertEquals(s, s.padEnd(2**31, empty)); - assertEquals(s, s.padEnd(2**32-1, empty)); - assertEquals(s, s.padEnd(2**32, empty)); - assertEquals(s, s.padEnd(2**53-1, empty)); - assertEquals(s, s.padEnd(2**53, empty)); - assertEquals(s, s.padEnd(Infinity, empty)); - } -} - -{ - const s = 'hello'; - - assertThrows(_ => s.padStart(Symbol(), throwing), TypeError); - assertEquals(s, s.padStart(NaN, throwing)); - assertEquals(s, s.padStart(-Infinity, throwing)); - assertEquals(s, s.padStart(-9, throwing)); - assertEquals(s, s.padStart(-1, throwing)); - assertEquals(s, s.padStart(-0, throwing)); - assertEquals(s, s.padStart(0, throwing)); - assertEquals(s, s.padStart(3, throwing)); - assertThrows(_ => s.padStart(9, throwing), MyError); - assertThrows(_ => s.padStart(2**31-1, throwing), MyError); - assertThrows(_ => s.padStart(2**31, throwing), MyError); - assertThrows(_ => s.padStart(2**32-1, throwing), MyError); - assertThrows(_ => s.padStart(2**32, throwing), MyError); - assertThrows(_ => s.padStart(2**53-1, throwing), MyError); - assertThrows(_ => s.padStart(2**53, throwing), MyError); - assertThrows(_ => s.padStart(Infinity, throwing), MyError); - - assertThrows(_ => s.padEnd(Symbol(), throwing), TypeError); - assertEquals(s, s.padEnd(NaN, throwing)); - assertEquals(s, s.padEnd(-Infinity, throwing)); - assertEquals(s, s.padEnd(-9, throwing)); - assertEquals(s, s.padEnd(-1, throwing)); - assertEquals(s, s.padEnd(-0, throwing)); - assertEquals(s, s.padEnd(0, throwing)); - assertEquals(s, s.padEnd(3, throwing)); - assertThrows(_ => s.padEnd(9, throwing), MyError); - assertThrows(_ => s.padEnd(2**31-1, throwing), MyError); - assertThrows(_ => s.padEnd(2**31, throwing), MyError); - assertThrows(_ => s.padEnd(2**32-1, throwing), MyError); - assertThrows(_ => s.padEnd(2**32, throwing), MyError); - assertThrows(_ => s.padEnd(2**53-1, throwing), MyError); - assertThrows(_ => s.padEnd(2**53, throwing), MyError); - assertThrows(_ => s.padEnd(Infinity, throwing), MyError); - - for (const empty of empties) { - assertThrows(_ => s.padStart(Symbol(), empty), TypeError); - assertEquals(s, s.padStart(NaN, empty)); - assertEquals(s, s.padStart(-Infinity, empty)); - assertEquals(s, s.padStart(-9, empty)); - assertEquals(s, s.padStart(-1, empty)); - assertEquals(s, s.padStart(-0, empty)); - assertEquals(s, s.padStart(0, empty)); - assertEquals(s, s.padStart(3, empty)); - assertEquals(s, s.padStart(9, empty)); - assertEquals(s, s.padStart(2**31-1, empty)); - assertEquals(s, s.padStart(2**31, empty)); - assertEquals(s, s.padStart(2**32-1, empty)); - assertEquals(s, s.padStart(2**32, empty)); - assertEquals(s, s.padStart(2**53-1, empty)); - assertEquals(s, s.padStart(2**53, empty)); - assertEquals(s, s.padStart(Infinity, empty)); - - assertThrows(_ => s.padEnd(Symbol(), empty), TypeError); - assertEquals(s, s.padEnd(NaN, empty)); - assertEquals(s, s.padEnd(-Infinity, empty)); - assertEquals(s, s.padEnd(-9, empty)); - assertEquals(s, s.padEnd(-1, empty)); - assertEquals(s, s.padEnd(-0, empty)); - assertEquals(s, s.padEnd(0, empty)); - assertEquals(s, s.padEnd(3, empty)); - assertEquals(s, s.padEnd(9, empty)); - assertEquals(s, s.padEnd(2**31-1, empty)); - assertEquals(s, s.padEnd(2**31, empty)); - assertEquals(s, s.padEnd(2**32-1, empty)); - assertEquals(s, s.padEnd(2**32, empty)); - assertEquals(s, s.padEnd(2**53-1, empty)); - assertEquals(s, s.padEnd(2**53, empty)); - assertEquals(s, s.padEnd(Infinity, empty)); - } -} diff --git a/implementation-contributed/v8/mjsunit/string-replace-gc.js b/implementation-contributed/v8/mjsunit/string-replace-gc.js deleted file mode 100644 index 2f1efd8813c..00000000000 --- a/implementation-contributed/v8/mjsunit/string-replace-gc.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// -// Regression test for the r1512 fix. - -var foo = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; -foo = foo + foo; - -foo.replace(/[b]/, "c"); // Flatten foo. - -var moving_string = "b" + "c"; - -var bar = foo.replace(/[a]/g, moving_string); - -print(bar.length); diff --git a/implementation-contributed/v8/mjsunit/string-replace-one-char.js b/implementation-contributed/v8/mjsunit/string-replace-one-char.js deleted file mode 100644 index cb4167ba7f0..00000000000 --- a/implementation-contributed/v8/mjsunit/string-replace-one-char.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure the strings are long enough to trigger the one-char string replace. -var prefix1024 = "0123456789ABCDEF"; -for (var i = 0; i < 6; i++) prefix1024 += prefix1024; - -function test_replace(result, expected, search, replace) { - assertEquals(expected, result.replace(search, replace)); -} - -// '$' in the replace string. -test_replace(prefix1024 + "abcdefghijklmnopqrstuvwxyz", - prefix1024 + "abcdefghijk#l#mnopqrstuvwxyz", - "l", "#$&#"); - -test_replace(prefix1024 + "abcdefghijklmnopqrstuvwxyz\u1234", - prefix1024 + "abcdefghijk\u2012l\u2012mnopqrstuvwxyz\u1234", - "l", "\u2012$&\u2012"); - -test_replace(prefix1024 + "abcdefghijklmnopqrstuvwxyz", - prefix1024 + "abcdefghijk$mnopqrstuvwxyz", - "l", "$$"); - -test_replace(prefix1024 + "abcdefghijklmnopqrstuvwxyz\u1234", - prefix1024 + "abcdefghijk$mnopqrstuvwxyz\u1234", - "l", "$$"); - -// Zero length replace string. -test_replace(prefix1024 + "abcdefghijklmnopqrstuvwxyz", - prefix1024 + "abcdefghijklmnopqstuvwxyz", - "r", ""); - -test_replace(prefix1024 + "abcdefghijklmnopq\u1234stuvwxyz", - prefix1024 + "abcdefghijklmnopqstuvwxyz", - "\u1234", ""); - -// Search char not found. -var not_found_1 = prefix1024 + "abcdefghijklmnopqrstuvwxyz"; -test_replace(not_found_1, not_found_1, "+", "-"); - -var not_found_2 = prefix1024 + "abcdefghijklm\u1234nopqrstuvwxyz"; -test_replace(not_found_2, not_found_2, "+", "---"); - -var not_found_3 = prefix1024 + "abcdefghijklmnopqrstuvwxyz"; -test_replace(not_found_3, not_found_3, "\u1234", "ZZZ"); - -// Deep cons tree. -var nested_1 = ""; -for (var i = 0; i < 100000; i++) nested_1 += "y"; -var nested_1_result = prefix1024 + nested_1 + "aa"; -nested_1 = prefix1024 + nested_1 + "z"; -test_replace(nested_1, nested_1_result, "z", "aa"); - -var nested_2 = "\u2244"; -for (var i = 0; i < 100000; i++) nested_2 += "y"; -var nested_2_result = prefix1024 + nested_2 + "aa"; -nested_2 = prefix1024 + nested_2 + "\u2012"; -test_replace(nested_2, nested_2_result, "\u2012", "aa"); - -// Sliced string as input. A cons string is always flattened before sliced. -var slice_1 = ("ab" + prefix1024 + "cdefghijklmnopqrstuvwxyz").slice(1, -1); -var slice_1_result = "b" + prefix1024 + "cdefghijklmnopqrstuvwxQ"; -test_replace(slice_1, slice_1_result, "y", "Q"); - -var slice_2 = (prefix1024 + "abcdefghijklmno\u1234\u1234p").slice(1, -1); -var slice_2_result = prefix1024.substr(1) + "abcdefghijklmnoQ\u1234"; -test_replace(slice_2, slice_2_result, "\u1234", "Q"); diff --git a/implementation-contributed/v8/mjsunit/string-replace-with-empty.js b/implementation-contributed/v8/mjsunit/string-replace-with-empty.js deleted file mode 100644 index aa97f27ac28..00000000000 --- a/implementation-contributed/v8/mjsunit/string-replace-with-empty.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-externalize-string --expose-gc - -function test() { - assertEquals("0123", "aa0bb1cc2dd3".replace(/[a-z]/g, "")); - assertEquals("0123", "\u1234a0bb1cc2dd3".replace(/[\u1234a-z]/g, "")); - - var expected = "0123"; - var cons = "a0b1c2d3"; - for (var i = 0; i < 5; i++) { - expected += expected; - cons += cons; - } - assertEquals(expected, cons.replace(/[a-z]/g, "")); - cons = "\u12340b1c2d3"; - for (var i = 0; i < 5; i++) { - cons += cons; - } - assertEquals(expected, cons.replace(/[\u1234a-z]/g, "")); - - cons = "a0b1c2d3"; - for (var i = 0; i < 5; i++) { - cons += cons; - } - externalizeString(cons, true/* force two-byte */); - assertEquals(expected, cons.replace(/[a-z]/g, "")); - cons = "\u12340b1c2d3"; - for (var i = 0; i < 5; i++) { - cons += cons; - } - externalizeString(cons); - assertEquals(expected, cons.replace(/[\u1234a-z]/g, "")); -} - -test(); - -// Clear the regexp cache to allow the GC to work. -"foo".replace(/foo/g, ""); - -// GC in order to free up things on the C side so we don't get -// a memory leak. This makes valgrind happy. -gc(); -gc(); diff --git a/implementation-contributed/v8/mjsunit/string-replace.js b/implementation-contributed/v8/mjsunit/string-replace.js deleted file mode 100644 index b391b8c2f5f..00000000000 --- a/implementation-contributed/v8/mjsunit/string-replace.js +++ /dev/null @@ -1,298 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/** - * @fileoverview Test String.prototype.replace - */ - -function replaceTest(result, subject, pattern, replacement) { - var name = - "\"" + subject + "\".replace(" + pattern + ", " + replacement + ")"; - assertEquals(result, subject.replace(pattern, replacement), name); -} - - -var short = "xaxbxcx"; - -replaceTest("axbxcx", short, "x", ""); -replaceTest("axbxcx", short, /x/, ""); -replaceTest("abc", short, /x/g, ""); - -replaceTest("xaxxcx", short, "b", ""); -replaceTest("xaxxcx", short, /b/, ""); -replaceTest("xaxxcx", short, /b/g, ""); - - -replaceTest("[]axbxcx", short, "x", "[]"); -replaceTest("[]axbxcx", short, /x/, "[]"); -replaceTest("[]a[]b[]c[]", short, /x/g, "[]"); - -replaceTest("xax[]xcx", short, "b", "[]"); -replaceTest("xax[]xcx", short, /b/, "[]"); -replaceTest("xax[]xcx", short, /b/g, "[]"); - - -replaceTest("[$]axbxcx", short, "x", "[$$]"); -replaceTest("[$]axbxcx", short, /x/, "[$$]"); -replaceTest("[$]a[$]b[$]c[$]", short, /x/g, "[$$]"); - -replaceTest("xax[$]xcx", short, "b", "[$$]"); -replaceTest("xax[$]xcx", short, /b/, "[$$]"); -replaceTest("xax[$]xcx", short, /b/g, "[$$]"); - - -replaceTest("[]axbxcx", short, "x", "[$`]"); -replaceTest("[]axbxcx", short, /x/, "[$`]"); -replaceTest("[]a[xa]b[xaxb]c[xaxbxc]", short, /x/g, "[$`]"); - -replaceTest("xax[xax]xcx", short, "b", "[$`]"); -replaceTest("xax[xax]xcx", short, /b/, "[$`]"); -replaceTest("xax[xax]xcx", short, /b/g, "[$`]"); - - -replaceTest("[x]axbxcx", short, "x", "[$&]"); -replaceTest("[x]axbxcx", short, /x/, "[$&]"); -replaceTest("[x]a[x]b[x]c[x]", short, /x/g, "[$&]"); - -replaceTest("xax[b]xcx", short, "b", "[$&]"); -replaceTest("xax[b]xcx", short, /b/, "[$&]"); -replaceTest("xax[b]xcx", short, /b/g, "[$&]"); - - -replaceTest("[axbxcx]axbxcx", short, "x", "[$']"); -replaceTest("[axbxcx]axbxcx", short, /x/, "[$']"); -replaceTest("[axbxcx]a[bxcx]b[cx]c[]", short, /x/g, "[$']"); - -replaceTest("xax[xcx]xcx", short, "b", "[$']"); -replaceTest("xax[xcx]xcx", short, /b/, "[$']"); -replaceTest("xax[xcx]xcx", short, /b/g, "[$']"); - - -replaceTest("[$1]axbxcx", short, "x", "[$1]"); -replaceTest("[$1]axbxcx", short, /x/, "[$1]"); -replaceTest("[]axbxcx", short, /x()/, "[$1]"); -replaceTest("[$1]a[$1]b[$1]c[$1]", short, /x/g, "[$1]"); -replaceTest("[]a[]b[]c[]", short, /x()/g, "[$1]"); - -replaceTest("xax[$1]xcx", short, "b", "[$1]"); -replaceTest("xax[$1]xcx", short, /b/, "[$1]"); -replaceTest("xax[]xcx", short, /b()/, "[$1]"); -replaceTest("xax[$1]xcx", short, /b/g, "[$1]"); -replaceTest("xax[]xcx", short, /b()/g, "[$1]"); - -// Bug 317 look-alikes. If "$e" has no meaning, the "$" must be retained. -replaceTest("xax$excx", short, "b", "$e"); -replaceTest("xax$excx", short, /b/, "$e"); -replaceTest("xax$excx", short, /b/g, "$e"); - -replaceTest("xaxe$xcx", short, "b", "e$"); -replaceTest("xaxe$xcx", short, /b/, "e$"); -replaceTest("xaxe$xcx", short, /b/g, "e$"); - - -replaceTest("[$$$1$$a1abb1bb0$002$3$03][$$$1$$b1bcc1cc0$002$3$03]c", - "abc", /(.)(?=(.))/g, "[$$$$$$1$$$$$11$01$2$21$02$020$002$3$03]"); - -// Replace with functions. - - -var ctr = 0; -replaceTest("0axbxcx", short, "x", function r(m, i, s) { - assertEquals(3, arguments.length, "replace('x',func) func-args"); - assertEquals("x", m, "replace('x',func(m,..))"); - assertEquals(0, i, "replace('x',func(..,i,..))"); - assertEquals(short, s, "replace('x',func(..,s))"); - return String(ctr++); -}); -assertEquals(1, ctr, "replace('x',func) num-match"); - -ctr = 0; -replaceTest("0axbxcx", short, /x/, function r(m, i, s) { - assertEquals(3, arguments.length, "replace(/x/,func) func-args"); - assertEquals("x", m, "replace(/x/,func(m,..))"); - assertEquals(0, i, "replace(/x/,func(..,i,..))"); - assertEquals(short, s, "replace(/x/,func(..,s))"); - return String(ctr++); -}); -assertEquals(1, ctr, "replace(/x/,func) num-match"); - -ctr = 0; -replaceTest("0a1b2c3", short, /x/g, function r(m, i, s) { - assertEquals(3, arguments.length, "replace(/x/g,func) func-args"); - assertEquals("x", m, "replace(/x/g,func(m,..))"); - assertEquals(ctr * 2, i, "replace(/x/g,func(..,i,.))"); - assertEquals(short, s, "replace(/x/g,func(..,s))"); - return String(ctr++); -}); -assertEquals(4, ctr, "replace(/x/g,func) num-match"); - -ctr = 0; -replaceTest("0a1b2cx", short, /(x)(?=(.))/g, function r(m, c1, c2, i, s) { - assertEquals(5, arguments.length, "replace(/(x)(?=(.))/g,func) func-args"); - assertEquals("x", m, "replace(/(x)(?=(.))/g,func(m,..))"); - assertEquals("x", c1, "replace(/(x)(?=(.))/g,func(..,c1,..))"); - assertEquals(["a","b","c"][ctr], c2, "replace(/(x)(?=(.))/g,func(..,c2,..))"); - assertEquals(ctr * 2, i, "replace(/(x)(?=(.))/g,func(..,i,..))"); - assertEquals(short, s, "replace(/(x)(?=(.))/g,func(..,s))"); - return String(ctr++); -}); -assertEquals(3, ctr, "replace(/x/g,func) num-match"); - - -replaceTest("ABCD", "abcd", /(.)/g, function r(m, c1, i, s) { - assertEquals("d", RegExp.lastMatch); - assertEquals("d", RegExp.$1); - assertEquals("abc", RegExp.leftContext); - return m.toUpperCase(); -}); - - -var long = ""; -while (long.length < 0x2000) { - long += String.fromCharCode(65 + Math.random() * 26); -} - -for (var i = 0; i < 3; i++) { - replaceTest(long.toLowerCase(), long, /(..)/g, function r(m, c1, i, s) { - var expected = long.substring(0x1ffe, 0x2000); - assertEquals(expected, RegExp.lastMatch); - assertEquals(expected, RegExp.$1); - assertEquals(long.substring(0, 0x1ffe), RegExp.leftContext); - return m.toLowerCase(); - }); -} - - -// Test special cases of replacement parts longer than 1<<11. -var longstring = "xyzzy"; -longstring = longstring + longstring; -longstring = longstring + longstring; -longstring = longstring + longstring; -longstring = longstring + longstring; -longstring = longstring + longstring; -longstring = longstring + longstring; -longstring = longstring + longstring; -longstring = longstring + longstring; -longstring = longstring + longstring; -longstring = longstring + longstring; -longstring = longstring + longstring; -// longstring.length == 5 << 11 - -replaceTest(longstring + longstring, - "<" + longstring + ">", /<(.*)>/g, "$1$1"); - -replaceTest("string 42", "string x", /x/g, function() { return 42; }); -replaceTest("string 42", "string x", /x/, function() { return 42; }); -replaceTest("string 42", "string x", /[xy]/g, function() { return 42; }); -replaceTest("string 42", "string x", /[xy]/, function() { return 42; }); -replaceTest("string true", "string x", /x/g, function() { return true; }); -replaceTest("string null", "string x", /x/g, function() { return null; }); -replaceTest("string undefined", "string x", /x/g, function() { return undefined; }); - -replaceTest("aundefinedbundefinedcundefined", - "abc", /(.)|(.)/g, function(m, m1, m2, i, s) { return m1+m2; }); - -// Test nested calls to replace, including that it sets RegExp.$& correctly. - -var str = 'She sells seashells by the seashore.'; -var re = /sh/g; -assertEquals('She sells sea$schells by the sea$schore.', - str.replace(re,"$$" + 'sch')) - - -var replace_obj = { length: 0, toString: function() { return "x"; }}; -assertEquals("axc", "abc".replace(/b/, replace_obj)); -assertEquals("axc", "abc".replace(/b/g, replace_obj)); - -var search_obj = { length: 1, toString: function() { return "b"; }}; -assertEquals("axc", "abc".replace(search_obj, function() { return "x"; })); - -var side_effect_flag = false; -var replace_obj_side_effects = { - toString: function() { side_effect_flag = true; return "x" } -} -assertEquals("abc", "abc".replace(/z/g, replace_obj_side_effects)); -assertTrue(side_effect_flag); // Side effect triggers even without a match. - -var regexp99pattern = ""; -var subject = ""; -for (var i = 0; i < 99; i++) { - regexp99pattern += "(.)"; - subject += String.fromCharCode(i + 24); -} - -function testIndices99(re) { - // Test $1 .. $99 - for (var i = 1; i < 100; i++) { - assertEquals(String.fromCharCode(i + 23), - subject.replace(re, "$" + i)); - } - - // Test $01 .. $09 - for (var i = 1; i < 10; i++) { - assertEquals(String.fromCharCode(i + 23), - subject.replace(re, "$0" + i)); - } - - assertEquals("$0", subject.replace(re, "$0")); - assertEquals("$00", subject.replace(re, "$00")); - assertEquals(String.fromCharCode(10 + 23) + "0", - subject.replace(re, "$100")); -} - -testIndices99(new RegExp(regexp99pattern)); -testIndices99(new RegExp(regexp99pattern, "g")); - -var regexp59pattern = ""; -for (var i = 0; i < 59; i++) regexp59pattern += "(.)"; - -function testIndices59(re) { - // Test $60 .. $99. Captures reach up to 59. Per spec, how to deal - // with this is implementation-dependent. We interpret $60 as $6 - // followed by "0", $61 as $6, followed by "1" and so on. - var tail = subject.substr(59); - for (var i = 60; i < 100; i++) { - assertEquals(String.fromCharCode(i / 10 + 23) + (i % 10) + tail, - subject.replace(re, "$" + i)); - } -} - -testIndices59(new RegExp(regexp59pattern)); -testIndices59(new RegExp(regexp59pattern, "g")); - -// Test that ToString(replace) is called. - -let replace_tostring_count = 0; -const fake_replacer = { - [Symbol.toPrimitive]: () => { replace_tostring_count++; return "b"; } -}; - -"a".replace("x", fake_replacer); -assertEquals(1, replace_tostring_count); - -"a".replace("a", fake_replacer); -assertEquals(2, replace_tostring_count); diff --git a/implementation-contributed/v8/mjsunit/string-search.js b/implementation-contributed/v8/mjsunit/string-search.js deleted file mode 100644 index 037725b95eb..00000000000 --- a/implementation-contributed/v8/mjsunit/string-search.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var str="ABC abc"; -var r = str.search('a'); -assertEquals(r, 4); - -// Test for a lot of different string. - -var s = ""; -for (var i = 0; i < 100; i++) { - s += i; - var r = s.search(s); - assertEquals(0, r); -} diff --git a/implementation-contributed/v8/mjsunit/string-slices-regexp.js b/implementation-contributed/v8/mjsunit/string-slices-regexp.js deleted file mode 100644 index 98b8ef9d49b..00000000000 --- a/implementation-contributed/v8/mjsunit/string-slices-regexp.js +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var foo = "lsdfj sldkfj sdklfj læsdfjl sdkfjlsdk fjsdl fjsdljskdj flsj flsdkj flskd regexp: /foobar/\nldkfj sdlkfj sdkl"; -for(var i = 0; i < 1000; i++) { - assertTrue(/^([a-z]+): (.*)/.test(foo.substring(foo.indexOf("regexp:")))); - assertEquals("regexp", RegExp.$1, "RegExp.$1"); -} - -var re = /^(((N({)?)|(R)|(U)|(V)|(B)|(H)|(n((n)|(r)|(v)|(h))?)|(r(r)?)|(v)|(b((n)|(b))?)|(h))|((Y)|(A)|(E)|(o(u)?)|(p(u)?)|(q(u)?)|(s)|(t)|(u)|(w)|(x(u)?)|(y)|(z)|(a((T)|(A)|(L))?)|(c)|(e)|(f(u)?)|(g(u)?)|(i)|(j)|(l)|(m(u)?)))+/; -var r = new RegExp(re) -var str = "_Avtnennan gunzvmu pubExnY nEvln vaTxh rmuhguhaTxnY_".slice(1,-1); -str = str + str; -assertTrue(r.test(str)); -assertTrue(r.test(str)); -var re = /x/; -assertEquals("a.yb", "_axyb_".slice(1,-1).replace(re, ".")); -re.compile("y"); -assertEquals("ax.b", "_axyb_".slice(1,-1).replace(re, ".")); -re.compile("(x)"); -assertEquals(["x", "x"], re.exec("_axyb_".slice(1,-1))); -re.compile("(y)"); -assertEquals(["y", "y"], re.exec("_axyb_".slice(1,-1))); - -for(var i = 0; i < 100; i++) { - var a = "aaaaaaaaaaaaaaaaaaaaaaaabbaacabbabaaaaabbaaaabbac".slice(24,-1); - var b = "bbaacabbabaaaaabbaaaabba" + a; - // The first time, the cons string will be flattened and handled by the - // runtime system. - assertEquals(["bbaa", "a", "", "a"], /((\3|b)\2(a)){2,}/.exec(b)); - // The second time, the cons string is already flattened and will be - // handled by generated code. - assertEquals(["bbaa", "a", "", "a"], /((\3|b)\2(a)){2,}/.exec(b)); - assertEquals(["bbaa", "a", "", "a"], /((\3|b)\2(a)){2,}/.exec(a)); - assertEquals(["bbaa", "a", "", "a"], /((\3|b)\2(a)){2,}/.exec(a)); -} - -var c = "ABCDEFGHIJKLMN".slice(2,-2); -var d = "ABCDEF\u1234GHIJKLMN".slice(2,-2); -var e = "ABCDEFGHIJKLMN".slice(0,-2); -assertTrue(/^C.*L$/.test(c)); -assertTrue(/^C.*L$/.test(c)); -assertTrue(/^C.*L$/.test(d)); -assertTrue(/^C.*L$/.test(d)); -assertTrue(/^A\w{10}L$/.test(e)); -assertTrue(/^A\w{10}L$/.test(e)); - -var e = "qui-opIasd-fghjklzx-cvbn-mqwer-tyuio-pasdf-ghIjkl-zx".slice(6,-6); -var e_split = e.split("-"); -assertEquals(e_split[0], "Iasd"); -assertEquals(e_split[1], "fghjklzx"); -assertEquals(e_split[6], "ghI"); diff --git a/implementation-contributed/v8/mjsunit/string-slices.js b/implementation-contributed/v8/mjsunit/string-slices.js deleted file mode 100644 index 52f15061806..00000000000 --- a/implementation-contributed/v8/mjsunit/string-slices.js +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-externalize-string --allow-natives-syntax - -var s = 'abcdefghijklmn'; -assertEquals(s, s.substr()); -assertEquals(s, s.substr(0)); -assertEquals(s, s.substr('0')); -assertEquals(s, s.substr(void 0)); -assertEquals(s, s.substr(null)); -assertEquals(s, s.substr(false)); -assertEquals(s, s.substr(0.9)); -assertEquals(s, s.substr({ valueOf: function() { return 0; } })); -assertEquals(s, s.substr({ toString: function() { return '0'; } })); - -var s1 = s.substring(1); -assertEquals(s1, s.substr(1)); -assertEquals(s1, s.substr('1')); -assertEquals(s1, s.substr(true)); -assertEquals(s1, s.substr(1.1)); -assertEquals(s1, s.substr({ valueOf: function() { return 1; } })); -assertEquals(s1, s.substr({ toString: function() { return '1'; } })); - - -assertEquals(s.substring(s.length - 1), s.substr(-1)); -assertEquals(s.substring(s.length - 1), s.substr(-1.2)); -assertEquals(s.substring(s.length - 1), s.substr(-1.7)); -assertEquals(s.substring(s.length - 2), s.substr(-2)); -assertEquals(s.substring(s.length - 2), s.substr(-2.3)); -assertEquals(s.substring(s.length - 2, s.length - 1), s.substr(-2, 1)); -assertEquals(s, s.substr(-100)); -assertEquals('abc', s.substr(-100, 3)); -assertEquals(s1, s.substr(-s.length + 1)); - -// assertEquals('', s.substr(0, void 0)); // smjs and rhino -assertEquals('abcdefghijklmn', s.substr(0, void 0)); // kjs and v8 -assertEquals('', s.substr(0, null)); -assertEquals(s, s.substr(0, String(s.length))); -assertEquals('a', s.substr(0, true)); - - -// Test substrings of different lengths and alignments. -// First ASCII. -var x = "ASCII"; -for (var i = 0; i < 25; i++) { - x += (i >> 4).toString(16) + (i & 0x0f).toString(16); -} -/x/.exec(x); // Try to force a flatten. -for (var i = 5; i < 25; i++) { - for (var j = 0; j < 25; j++) { - var z = x.substring(i, i+j); - var w = Math.random() * 42; // Allocate something new in new-space. - assertEquals(j, z.length); - for (var k = 0; k < j; k++) { - assertEquals(x.charAt(i+k), z.charAt(k)); - } - } -} -// Then two-byte strings. -x = "UC16\u2028"; // Non-ascii char forces two-byte string. -for (var i = 0; i < 25; i++) { - x += (i >> 4).toString(16) + (i & 0x0f).toString(16); -} -/x/.exec(x); // Try to force a flatten. -for (var i = 5; i < 25; i++) { - for (var j = 0; j < 25; j++) { - var z = x.substring(i, i + j); - var w = Math.random() * 42; // Allocate something new in new-space. - assertEquals(j, z.length); - for (var k = 0; k < j; k++) { - assertEquals(x.charAt(i+k), z.charAt(k)); - } - } -} - -// Keep creating strings to to force allocation failure on substring creation. -var x = "0123456789ABCDEF"; -for (var i = 0; i < 8; i++) x += x; -var xl = x.length; -var cache = []; -for (var i = 0; i < 1000; i++) { - var z = x.substring(i % xl); - assertEquals(xl - (i % xl), z.length); - cache.push(z); -} - - -// Same with two-byte strings -var x = "\u2028123456789ABCDEF"; -for (var i = 0; i < 8; i++) x += x; -var xl = x.length; -var cache = []; -for (var i = 0; i < 1000; i++) { - var z = x.substring(i % xl); - assertEquals(xl - (i % xl), z.length); - cache.push(z); -} - -// Substring of substring. -var cache = []; -var last = x; -var offset = 0; -for (var i = 0; i < 64; i++) { - var z = last.substring(i); - last = z; - cache.push(z); - offset += i; -} -for (var i = 63; i >= 0; i--) { - var z = cache.pop(); - assertTrue(/\u2028123456789ABCDEF/.test(z)); - assertEquals(xl - offset, z.length); - assertEquals(x.charAt(i*(i+1)/2), z.charAt(0)); - offset -= i; -} - -// Test charAt for different strings. -function f(s1, s2, s3, i) { - assertEquals(String.fromCharCode(97+i%11), s1.charAt(i%11)); - assertEquals(String.fromCharCode(97+i%11), s2.charAt(i%11)); - assertEquals(String.fromCharCode(98+i%11), s3.charAt(i%11)); - assertEquals(String.fromCharCode(101), s3.charAt(3)); -} - -flat = "abcdefghijkl12345"; -cons = flat + flat.toUpperCase(); -slice = "abcdefghijklmn12345".slice(1, -1); -for ( var i = 0; i < 1000; i++) { - f(flat, cons, slice, i); -} -flat = "abcdefghijkl1\u20232345"; -cons = flat + flat.toUpperCase(); -slice = "abcdefghijklmn1\u20232345".slice(1, -1); -for ( var i = 0; i < 1000; i++) { - f(flat, cons, slice, i); -} - -// Short substrings. -flat = "abcdefghijkl12345"; -cons = flat + flat.toUpperCase(); -/x/.exec(cons); // Flatten cons -slice = "abcdefghijklmn12345".slice(1, -1); -assertEquals("cdefg", flat.substr(2, 5)); -assertEquals("cdefg", cons.substr(2, 5)); -assertEquals("cdefg", slice.substr(1, 5)); - -flat = "abc\u1234defghijkl12345"; -cons = flat + flat.toUpperCase(); -/x/.exec(cons); // Flatten cons -slice = "abc\u1234defghijklmn12345".slice(1, -1); -assertEquals("c\u1234def", flat.substr(2, 5)); -assertEquals("c\u1234def", cons.substr(2, 5)); -assertEquals("c\u1234def", slice.substr(1, 5)); - -// Concatenate substrings. -var ascii = 'abcdefghijklmnop'; -var utf = '\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB'; -assertEquals("klmno", ascii.substring(10,15) + ascii.substring(16)); -assertEquals("\u03B4\u03B7", utf.substring(3,4) + utf.substring(6,7)); -assertEquals("klp", ascii.substring(10,12) + ascii.substring(15,16)); -assertEquals("\u03B1\u03B4\u03B5", utf.substring(0,1) + utf.substring(5,3)); -assertEquals("", ascii.substring(16) + utf.substring(16)); -assertEquals("bcdef\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9", - ascii.substring(1,6) + utf.substring(3,9)); -assertEquals("\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9abcdefghijklmnop", - utf.substring(3,9) + ascii); -assertEquals("\u03B2\u03B3\u03B4\u03B5\u03B4\u03B5\u03B6\u03B7", - utf.substring(5,1) + utf.substring(3,7)); - -// Externalizing strings. -var a = "internalized dummy"; -a = "123456789" + "qwertyuiopasdfghjklzxcvbnm"; -var b = "23456789qwertyuiopasdfghjklzxcvbn" -assertEquals(a.slice(1,-1), b); - -assertTrue(isOneByteString(a)); -externalizeString(a, true); -assertFalse(isOneByteString(a)); - -assertEquals(a.slice(1,-1), b); -assertTrue(/3456789qwe/.test(a)); -assertEquals(5, a.indexOf("678")); -assertEquals("12345", a.split("6")[0]); - -// Create a slice with an external string as parent string. -var c = a.slice(1,-1); - -function test_crankshaft() { - for (var i = 0; i < 20; i++) { - assertEquals(b.charAt(i), a.charAt(i + 1)); - assertEquals(b.charAt(i), c.charAt(i)); - assertEquals(b.charAt(4), c.charAt(4)); - assertTrue(/3456789qwe/.test(c)); - assertEquals(4, c.indexOf("678")); - assertEquals("2345", c.split("6")[0]); - } -} - -test_crankshaft(); -%OptimizeFunctionOnNextCall(test_crankshaft); -test_crankshaft(); - -var s1 = "12345678901234567890"; -var s2 = "abcdefghijklmnopqrstuvwxyz"; -var c1 = s1 + s2; -var c2 = s1 + c1 + s2; -assertEquals("234567890123456789", c1.substring(1, 19)); -assertEquals("bcdefghijklmno", c1.substring(21, 35)); -assertEquals("2345678901234567890abcdefghijklmno", c1.substring(1, 35)); -assertEquals("234567890123456789", c2.substring(1, 19)); -assertEquals("bcdefghijklmno", c2.substring(41, 55)); -assertEquals("2345678901234567890abcdefghijklmno", c2.substring(21, 55)); diff --git a/implementation-contributed/v8/mjsunit/string-split-cache.js b/implementation-contributed/v8/mjsunit/string-split-cache.js deleted file mode 100644 index 37c550f471f..00000000000 --- a/implementation-contributed/v8/mjsunit/string-split-cache.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -var str = "abcdef"; - -// Get a prefix of the string into the one-char string cache. -assertEquals("a", str[0]); -assertEquals("b", str[1]); -assertEquals("c", str[2]); - -// Splitting by "" calls runtime StringToArray function that uses the -// cache. So this test hits a case where only a prefix is cached. -var array = str.split(""); -var expected = ["a", "b", "c", "d", "e", "f"]; -assertArrayEquals(expected, array); diff --git a/implementation-contributed/v8/mjsunit/string-split.js b/implementation-contributed/v8/mjsunit/string-split.js deleted file mode 100644 index 9ee74464acd..00000000000 --- a/implementation-contributed/v8/mjsunit/string-split.js +++ /dev/null @@ -1,185 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -expected = ["A", undefined, "B", "bold", "/", "B", "and", undefined, "CODE", "coded", "/", "CODE", ""]; -result = "Aboldandcoded".split(/<(\/)?([^<>]+)>/); -assertArrayEquals(expected, result); - - -assertArrayEquals(["a", "b"], "ab".split(/a*?/)); - -assertArrayEquals(["", "b"], "ab".split(/a*/)); - -assertArrayEquals(["a"], "ab".split(/a*?/, 1)); - -assertArrayEquals([""], "ab".split(/a*/, 1)); - -assertArrayEquals(["as","fas","fas","f"], "asdfasdfasdf".split("d")); - -assertArrayEquals(["as","fas","fas","f"], "asdfasdfasdf".split("d", -1)); - -assertArrayEquals(["as", "fas"], "asdfasdfasdf".split("d", 2)); - -assertArrayEquals([], "asdfasdfasdf".split("d", 0)); - -assertArrayEquals(["as","fas","fas",""], "asdfasdfasd".split("d")); - -assertArrayEquals([], "".split("")); - -assertArrayEquals([""], "".split("a")); - -assertArrayEquals(["a","b"], "axxb".split(/x*/)); - -assertArrayEquals(["a","b"], "axxb".split(/x+/)); - -assertArrayEquals(["a","","b"], "axxb".split(/x/)); - -// This was http://b/issue?id=1151354 -assertArrayEquals(["div", "#id", ".class"], "div#id.class".split(/(?=[#.])/)); - - -assertArrayEquals(["div", "#i", "d", ".class"], "div#id.class".split(/(?=[d#.])/)); - -assertArrayEquals(["a", "b", "c"], "abc".split(/(?=.)/)); - -assertArrayEquals(["Wenige", "sind", "auserwählt."], - "Wenige sind auserwählt.".split(" ")); - -assertArrayEquals([], "Wenige sind auserwählt.".split(" ", 0)); - -assertArrayEquals(["Wenige"], "Wenige sind auserwählt.".split(" ", 1)); - -assertArrayEquals(["Wenige", "sind"], "Wenige sind auserwählt.".split(" ", 2)); - -assertArrayEquals(["Wenige", "sind", "auserwählt."], - "Wenige sind auserwählt.".split(" ", 3)); - -assertArrayEquals(["Wenige sind auserw", "hlt."], - "Wenige sind auserwählt.".split("ä")); - -assertArrayEquals(["Wenige sind ", "."], - "Wenige sind auserwählt.".split("auserwählt")); - -/* "ab".split(/((?=.))/) - * - * KJS: ,a,,b - * SM: a,,b, - * IE: a,b - * Opera: a,,b - * V8: a,,b - * - * Opera seems to have this right. The others make no sense. - */ -assertArrayEquals(["a", "", "b"], "ab".split(/((?=.))/)); - -/* "ab".split(/(?=)/) - * - * KJS: a,b - * SM: ab - * IE: a,b - * Opera: a,bb - * V8: a,b - */ -assertArrayEquals(["a", "b"], "ab".split(/(?=)/)); - - -// For issue http://code.google.com/p/v8/issues/detail?id=924 -// Splitting the empty string is a special case. -assertEquals([""], ''.split()); -assertEquals([""], ''.split(/./)); -assertEquals([], ''.split(/.?/)); -assertEquals([], ''.split(/.??/)); -assertEquals([], ''.split(/()()/)); - - -// Issue http://code.google.com/p/v8/issues/detail?id=929 -// (Splitting with empty separator and a limit.) - -function numberObj(num) { - return {valueOf: function() { return num; }}; -} - -assertEquals([], "abc".split("", 0)); -assertEquals([], "abc".split("", numberObj(0))); -assertEquals(["a"], "abc".split("", 1)); -assertEquals(["a"], "abc".split("", numberObj(1))); -assertEquals(["a", "b"], "abc".split("", 2)); -assertEquals(["a", "b"], "abc".split("", numberObj(2))); -assertEquals(["a", "b", "c"], "abc".split("", 3)); -assertEquals(["a", "b", "c"], "abc".split("", numberObj(3))); -assertEquals(["a", "b", "c"], "abc".split("", 4)); -assertEquals(["a", "b", "c"], "abc".split("", numberObj(4))); - -// Check if split works also for sliced strings. -let sliced_string = %ConstructSlicedString("abcdefghijklmnopqrstuvwxyz", 13); -assertEquals("nopqrstuvwxyz".split(""), sliced_string.split("")); -// Invoke twice for caching -assertEquals("nopqrstuvwxyz".split(""), sliced_string.split("")); - -var all_ascii_codes = []; -for (var i = 0; i < 128; i++) all_ascii_codes[i] = i; -var all_ascii_string = String.fromCharCode.apply(String, all_ascii_codes); - -var split_chars = all_ascii_string.split(""); -assertEquals(128, split_chars.length); -for (var i = 0; i < 128; i++) { - assertEquals(1, split_chars[i].length); - assertEquals(i, split_chars[i].charCodeAt(0)); -} - -// Check that the separator is converted to string before returning due to -// limit == 0. -var counter = 0; -var separator = { toString: function() { counter++; return "b"; }}; -assertEquals([], "abc".split(separator, 0)); -assertEquals(1, counter); - -// Check that the subject is converted to string before the separator. -counter = 0; -var subject = { toString: function() { assertEquals(0, counter); - counter++; - return "abc"; }}; -separator = { toString: function() { assertEquals(1, counter); - counter++; - return "b"; }}; - -assertEquals(["a", "c"], String.prototype.split.call(subject, separator)); -assertEquals(2, counter); - -// Check ToUint32 conversion of limit. -assertArrayEquals(["a"], "a,b,c,d,e,f".split(/,/, -4294967295)); -assertArrayEquals(["a", "b"], "a,b,c,d,e,f".split(/,/, -4294967294.001)); -assertArrayEquals(["a", "b"], "a,b,c,d,e,f".split(/,/, -4294967294.5)); -assertArrayEquals(["a", "b"], "a,b,c,d,e,f".split(/,/, -4294967294.999)); -assertArrayEquals(["a", "b"], "a,b,c,d,e,f".split(/,/, -4294967294)); -assertArrayEquals(["a", "b", "c"], "a,b,c,d,e,f".split(/,/, -4294967293)); -assertArrayEquals(["a", "b", "c", "d"], "a,b,c,d,e,f".split(/,/, -4294967292)); -assertArrayEquals(["a", "b", "c", "d", "e", "f"], "a,b,c,d,e,f".split(/,/, -1)); -assertArrayEquals(["a", "b", "c"], "abc".split("", 0xffffffff)); -assertArrayEquals(["\u0427", "\u0427"], "\u0427\u0427".split("", 0xffffffff)); diff --git a/implementation-contributed/v8/mjsunit/string-trim.js b/implementation-contributed/v8/mjsunit/string-trim.js deleted file mode 100644 index 587e7db5dbe..00000000000 --- a/implementation-contributed/v8/mjsunit/string-trim.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -assertEquals('trim', String.prototype.trim.name); -assertEquals('trimStart', String.prototype.trimStart.name); -assertEquals('trimStart', String.prototype.trimLeft.name); -assertEquals('trimEnd', String.prototype.trimEnd.name); -assertEquals('trimEnd', String.prototype.trimRight.name); diff --git a/implementation-contributed/v8/mjsunit/string-wrapper.js b/implementation-contributed/v8/mjsunit/string-wrapper.js deleted file mode 100644 index d4b65005d3b..00000000000 --- a/implementation-contributed/v8/mjsunit/string-wrapper.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var limit = 10000; - -function testStringWrapper(string) { - assertEquals('a', string[0]); - assertEquals('b', string[1]); - assertEquals('c', string[2]); -} - -(function testFastStringWrapperGrow() { - var string = new String("abc"); - for (var i = 0; i < limit; i += 2) { - string[i] = {}; - } - testStringWrapper(string); - - for (var i = limit; i > 0; i -= 2) { - delete string[i]; - } - testStringWrapper(string); -})(); - -(function testSlowStringWrapperGrow() { - var string = new String("abc"); - // Force Slow String Wrapper Elements Kind - string[limit] = limit; - for (var i = 0; i < limit; i += 2) { - string[i] = {}; - } - testStringWrapper(string); - assertEquals(limit, string[limit]); - - for (var i = limit; i > 0; i -= 2) { - delete string[i]; - } - testStringWrapper(string); - assertEquals(undefined, string[limit]); -})(); - - -(function testReconfigureStringWrapperElements() { - var s = new String('abc'); - // Can't reconfigure string contents. - assertThrows(() => Object.defineProperty(s, '1', {value: "value"}), TypeError); - - // Configure a property outside the string range - var value = 'v1'; - Object.defineProperty(s, '3', { - get: () => {return value}, - configurable:true - }); - assertEquals('v1', s[3]); - value = 'v2'; - assertEquals('v2', s[3]); - - Object.defineProperty(s, '3', {value: 'v3', configurable: false}); - assertEquals('v3', s[3]); - assertThrows(() => Object.defineProperty(s, '3', {value:2}), TypeError); -})(); diff --git a/implementation-contributed/v8/mjsunit/strong-rooted-literals.js b/implementation-contributed/v8/mjsunit/strong-rooted-literals.js deleted file mode 100644 index 68804e5a327..00000000000 --- a/implementation-contributed/v8/mjsunit/strong-rooted-literals.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --expose-gc --opt - -// Make sure literals are strongly rooted and safe from weak-code deopts. - -(function() { - function foo() { - var a = {y: 0}; - a.y = 1; - return a; - } - - foo(); - foo(); - %OptimizeFunctionOnNextCall(foo); - foo(); - gc(); - assertOptimized(foo); -})(); - -(function() { - function hot(o) { - return o.x + o.y; - } - function mapPlus(a, y) { - return a.map(x => hot({x, y})); - } - - var a = [1, 2, 3]; - print(mapPlus(a, 1)); - print(mapPlus(a, 2)); - %OptimizeFunctionOnNextCall(hot); - print(mapPlus(a, 3)); - gc(); // BOOOM! - assertOptimized(hot); - print(mapPlus(a, 4)); -})(); - -// Verify that we can handle the creation of a new script, where the -// code is cached and the feedback vector has to be re-created. -(function() { - var sopen = 'function wrapper() { '; - var s1 = 'function foo() { return bar(5); } '; - var s2 = 'foo(); foo(); %OptimizeFunctionOnNextCall(foo); foo(); '; - var sclose = '} wrapper(); '; - var s = sopen + s1 + s2 + sclose; - function bar(i){return i + 3}; - - for (var i = 0; i < 4; i++) { - eval(s); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/substr.js b/implementation-contributed/v8/mjsunit/substr.js deleted file mode 100644 index ff9d777dbb4..00000000000 --- a/implementation-contributed/v8/mjsunit/substr.js +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var s = 'abcdefghijklmn'; -assertEquals(s, s.substr()); -assertEquals(s, s.substr(0)); -assertEquals(s, s.substr('0')); -assertEquals(s, s.substr(void 0)); -assertEquals(s, s.substr(null)); -assertEquals(s, s.substr(false)); -assertEquals(s, s.substr(0.9)); -assertEquals(s, s.substr({ valueOf: function() { return 0; } })); -assertEquals(s, s.substr({ toString: function() { return '0'; } })); - -var s1 = s.substring(1); -assertEquals(s1, s.substr(1)); -assertEquals(s1, s.substr('1')); -assertEquals(s1, s.substr(true)); -assertEquals(s1, s.substr(1.1)); -assertEquals(s1, s.substr({ valueOf: function() { return 1; } })); -assertEquals(s1, s.substr({ toString: function() { return '1'; } })); - - -assertEquals(s.substring(s.length - 1), s.substr(-1)); -assertEquals(s.substring(s.length - 1), s.substr(-1.2)); -assertEquals(s.substring(s.length - 1), s.substr(-1.7)); -assertEquals(s.substring(s.length - 2), s.substr(-2)); -assertEquals(s.substring(s.length - 2), s.substr(-2.3)); -assertEquals(s.substring(s.length - 2, s.length - 1), s.substr(-2, 1)); -assertEquals(s, s.substr(-100)); -assertEquals('abc', s.substr(-100, 3)); -assertEquals(s1, s.substr(-s.length + 1)); - -// assertEquals('', s.substr(0, void 0)); // smjs and rhino -assertEquals('abcdefghijklmn', s.substr(0, void 0)); // kjs and v8 -assertEquals('', s.substr(0, null)); -assertEquals(s, s.substr(0, String(s.length))); -assertEquals('a', s.substr(0, true)); - - -// Test substrings of different lengths and alignments. -// First ASCII. -var x = "ASCII"; -for (var i = 0; i < 25; i++) { - x += (i >> 4).toString(16) + (i & 0x0f).toString(16); -} -/x/.exec(x); // Try to force a flatten. -for (var i = 5; i < 25; i++) { - for (var j = 0; j < 25; j++) { - var z = x.substring(i, i+j); - var w = Math.random() * 42; // Allocate something new in new-space. - assertEquals(j, z.length); - for (var k = 0; k < j; k++) { - assertEquals(x.charAt(i+k), z.charAt(k)); - } - } -} - - -// Then two-byte strings. -x = "UC16\u2028"; // Non-ascii char forces two-byte string. -for (var i = 0; i < 25; i++) { - x += (i >> 4).toString(16) + (i & 0x0f).toString(16); -} -/x/.exec(x); // Try to force a flatten. -for (var i = 5; i < 25; i++) { - for (var j = 0; j < 25; j++) { - var z = x.substring(i, i + j); - var w = Math.random() * 42; // Allocate something new in new-space. - assertEquals(j, z.length); - for (var k = 0; k < j; k++) { - assertEquals(x.charAt(i+k), z.charAt(k)); - } - } -} - - -// Keep creating strings to to force allocation failure on substring creation. -var x = "0123456789ABCDEF"; -x += x; // 2^5 -x += x; -x += x; -x += x; -x += x; -x += x; // 2^10 -x += x; -x += x; -var xl = x.length; -var cache = []; -for (var i = 0; i < 10000; i++) { - var z = x.substring(i % xl); - assertEquals(xl - (i % xl), z.length); - cache.push(z); -} - - -// Same with two-byte strings -var x = "\u2028123456789ABCDEF"; -x += x; // 2^5 -x += x; -x += x; -x += x; -x += x; -x += x; // 2^10 -x += x; -x += x; -var xl = x.length; -var cache = []; -for (var i = 0; i < 10000; i++) { - var z = x.substring(i % xl); - assertEquals(xl - (i % xl), z.length); - cache.push(z); -} - -// Substring of substring. -var cache = []; -var last = x; -var offset = 0; -for (var i = 0; i < 64; i++) { - var z = last.substring(i); - last = z; - cache.push(z); - offset += i; -} -for (var i = 63; i >= 0; i--) { - var z = cache.pop(); - assertTrue(/\u2028123456789ABCDEF/.test(z)); - assertEquals(xl - offset, z.length); - offset -= i; -} - - -// Order of conversions. -{ - let log = []; - let string = {[Symbol.toPrimitive]() { log.push("this"); return "abc" }}; - let start = {[Symbol.toPrimitive]() { log.push("start"); return 0 }}; - let length = {[Symbol.toPrimitive]() { log.push("length"); return 1 }}; - assertEquals("a", String.prototype.substr.call(string, start, length)); - assertEquals(["this", "start", "length"], log); -} -{ - let log = []; - let string = {[Symbol.toPrimitive]() { log.push("this"); return "abc" }}; - let start = {[Symbol.toPrimitive]() { log.push("start"); return 0 }}; - let length = {[Symbol.toPrimitive]() { log.push("length"); return 0 }}; - assertEquals("", String.prototype.substr.call(string, start, length)); - assertEquals(["this", "start", "length"], log); -} - -// Bounds edge cases. -{ - const str = "abc"; - const negativeHeapNumber = -1 * 2**32; - const positiveHeapNumber = 2**32; - - assertEquals("abc", str.substr(negativeHeapNumber)); - assertEquals("abc", str.substr(negativeHeapNumber, str.length)); - assertEquals("abc", str.substr(-str.length, str.length)); - assertEquals("abc", str.substr(0, str.length)); - assertEquals("bc", str.substr(-2, str.length)); - assertEquals("c", str.substr(-1, str.length)); - - assertEquals("", str.substr(str.length)); - assertEquals("", str.substr(4)); - assertEquals("", str.substr(positiveHeapNumber)); - - assertEquals("abc", str.substr(negativeHeapNumber, positiveHeapNumber)); - assertEquals("abc", str.substr(negativeHeapNumber, positiveHeapNumber)); - assertEquals("abc", str.substr(-str.length, positiveHeapNumber)); - assertEquals("abc", str.substr(0, positiveHeapNumber)); - assertEquals("bc", str.substr(-2, positiveHeapNumber)); - assertEquals("c", str.substr(-1, positiveHeapNumber)); - - assertEquals("", str.substr(str.length, positiveHeapNumber)); - assertEquals("", str.substr(4, positiveHeapNumber)); - assertEquals("", str.substr(positiveHeapNumber, positiveHeapNumber)); - - assertEquals("", str.substr(negativeHeapNumber, negativeHeapNumber)); - assertEquals("", str.substr(negativeHeapNumber, negativeHeapNumber)); - assertEquals("", str.substr(-str.length, negativeHeapNumber)); - assertEquals("", str.substr(0, negativeHeapNumber)); - assertEquals("", str.substr(-2, negativeHeapNumber)); - assertEquals("", str.substr(-1, negativeHeapNumber)); - - assertEquals("", str.substr(str.length, negativeHeapNumber)); - assertEquals("", str.substr(4, negativeHeapNumber)); - assertEquals("", str.substr(positiveHeapNumber, negativeHeapNumber)); - - assertEquals("", str.substr(negativeHeapNumber, -1)); - assertEquals("", str.substr(negativeHeapNumber, -1)); - assertEquals("", str.substr(-str.length, -1)); - assertEquals("", str.substr(0, -1)); - assertEquals("", str.substr(-2, -1)); - assertEquals("", str.substr(-1, -1)); - - assertEquals("", str.substr(str.length, -1)); - assertEquals("", str.substr(4, -1)); - assertEquals("", str.substr(positiveHeapNumber, -1)); - - assertEquals("abc", str.substr(undefined)); - assertEquals("abc", str.substr(undefined, undefined)); -} diff --git a/implementation-contributed/v8/mjsunit/sum-0-plus-undefined-is-NaN.js b/implementation-contributed/v8/mjsunit/sum-0-plus-undefined-is-NaN.js deleted file mode 100644 index 5d662d1dc67..00000000000 --- a/implementation-contributed/v8/mjsunit/sum-0-plus-undefined-is-NaN.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -/** - * @fileoverview Test addition of 0 and undefined. - */ - -function sum(a, b) { return a + b; } - -function test(x, y, expectNaN) { - for (var i = 0; i < 5; i++) { - assertEquals(expectNaN, isNaN(sum(x, y))); - } - %OptimizeFunctionOnNextCall(sum); - assertEquals(expectNaN, isNaN(sum(x, y))); -} - -test(0, 1, false); -test(0, undefined, true); diff --git a/implementation-contributed/v8/mjsunit/switch-opt.js b/implementation-contributed/v8/mjsunit/switch-opt.js deleted file mode 100644 index c1d5d383742..00000000000 --- a/implementation-contributed/v8/mjsunit/switch-opt.js +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -(function() { - var result = []; - var x = 0; - - function branch(b) { - if (b == "deopt") { - %DeoptimizeFunction(f); - return "c"; - } - - return b ? "a" : "b"; - } - - function f(label, b1, b2, b3) { - switch (label) { - case "string": - result.push(1); - break; - case branch(b1) + branch(b2): - result.push(2); - break; - case 10: - result.push(3); - break; - default: - branch(b3); - result.push(4); - break; - case x++: - branch(b3); - result.push(5); - break; - } - } - - function assertResult(r, label, b1, b2, b3) { - f(label, b1, b2, b3); - assertEquals(result, r); - result = []; - } - - // Warmup. - assertResult([2], "aa", true, true); - assertResult([2], "ab", true, false); - assertResult([2], "ba", false, true); - assertResult([2], "bb", false, false); - assertEquals(0, x); - assertResult([4], "other"); - assertEquals(1, x); - assertResult([5], 1, true, true); - assertResult([4], 1, true, true); - assertResult([5], 3, true, true); - assertResult([4], 3, true, true); - assertResult([5], 5, true, true); - assertResult([4], 5, true, true); - assertEquals(7, x); - - // Test regular behavior. - %OptimizeFunctionOnNextCall(f); - assertResult([2], "aa", true, true); - assertResult([1], "string"); - assertResult([4], "other"); - assertEquals(8, x); - assertResult([5], 8); - assertEquals(9, x); - - // Test deopt at the beginning of the case label evaluation. - assertResult([2], "ca", "deopt", true); - %OptimizeFunctionOnNextCall(f); - assertResult([4], "ca", "deopt", false); - assertEquals(10, x); - %OptimizeFunctionOnNextCall(f); - - // Test deopt in the middle of the case label evaluation. - assertResult([2], "ac", true, "deopt"); - %OptimizeFunctionOnNextCall(f); - assertResult([4], "ac", false, "deopt"); - assertEquals(11, x); - - // Test deopt in the default case. - %OptimizeFunctionOnNextCall(f); - print("here"); - assertResult([4], 10000, false, false, "deopt"); - assertEquals(12, x); - - // Test deopt in the default case. - %OptimizeFunctionOnNextCall(f); - assertResult([4], 10000, false, false, "deopt"); - assertEquals(13, x); - - // Test deopt in x++ case. - %OptimizeFunctionOnNextCall(f); - assertResult([5], 13, false, false, "deopt"); - assertEquals(14, x); -})(); - - -(function() { - var result = []; - var x = 0; - - function branch(b) { - if (b == "deopt") { - %DeoptimizeFunction(f); - return "c"; - } - - return b ? "a" : "b"; - } - - function f(label, b1, b2, b3) { - switch (label) { - case "string": - result.push(1); - break; - case branch(b1) + branch(b2): - result.push(2); - // Fall through. - case 10: - result.push(3); - break; - default: - branch(b3); - result.push(4); - // Fall through. - case x++: - branch(b3); - result.push(5); - break; - } - } - - function assertResult(r, label, b1, b2, b3) { - f(label, b1, b2, b3); - assertEquals(r, result); - result = []; - } - - // Warmup. - assertResult([2,3], "aa", true, true); - assertResult([2,3], "ab", true, false); - assertResult([2,3], "ba", false, true); - assertResult([2,3], "bb", false, false); - assertEquals(0, x); - assertResult([4,5], "other"); - assertEquals(1, x); - assertResult([5], 1, true, true); - assertResult([4,5], 1, true, true); - assertResult([5], 3, true, true); - assertResult([4,5], 3, true, true); - assertResult([5], 5, true, true); - assertResult([4,5], 5, true, true); - assertEquals(7, x); - - // Test regular behavior. - %OptimizeFunctionOnNextCall(f); - assertResult([2,3], "aa", true, true); - assertResult([1], "string"); - assertResult([4,5], "other"); - assertEquals(8, x); - assertResult([5], 8); - assertEquals(9, x); - - // Test deopt at the beginning of the case label evaluation. - assertResult([2,3], "ca", "deopt", true); - %OptimizeFunctionOnNextCall(f); - assertResult([4,5], "ca", "deopt", false); - assertEquals(10, x); - %OptimizeFunctionOnNextCall(f); - - // Test deopt in the middle of the case label evaluation. - assertResult([2,3], "ac", true, "deopt"); - %OptimizeFunctionOnNextCall(f); - assertResult([4,5], "ac", false, "deopt"); - assertEquals(11, x); - - // Test deopt in the default case. - %OptimizeFunctionOnNextCall(f); - print("here"); - assertResult([4,5], 10000, false, false, "deopt"); - assertEquals(12, x); - - // Test deopt in the default case. - %OptimizeFunctionOnNextCall(f); - assertResult([4,5], 10000, false, false, "deopt"); - assertEquals(13, x); - - // Test deopt in x++ case. - %OptimizeFunctionOnNextCall(f); - assertResult([5], 13, false, false, "deopt"); - assertEquals(14, x); -})(); diff --git a/implementation-contributed/v8/mjsunit/switch.js b/implementation-contributed/v8/mjsunit/switch.js deleted file mode 100644 index 4722e9e5d80..00000000000 --- a/implementation-contributed/v8/mjsunit/switch.js +++ /dev/null @@ -1,517 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -function f0() { - switch (0) { - // switch deliberately left empty - } -} - -f0(); // no errors - -function f1(x) { - switch (x) { - default: return "f1"; - } - return "foo"; -} - -assertEquals("f1", f1(0), "default-switch.0"); -assertEquals("f1", f1(1), "default-switch.1"); - -function f2(x) { - var r; - switch (x) { - case 0: - r = "zero"; - break; - case 1: - r = "one"; - break; - case 2: - r = "two"; - break; - case 3: - r = "three"; - break; - default: - r = "default"; - } - return r; -} - -assertEquals("zero", f2(0), "0-1-switch.0"); -assertEquals("one", f2(1), "0-1-switch.1"); -assertEquals("default", f2(7), "0-1-switch.2"); -assertEquals("default", f2(-1), "0-1-switch.-1"); -assertEquals("default", f2(NaN), "0-1-switch.NaN"); -assertEquals("default", f2(Math.pow(2,34)), "0-1-switch.largeNum"); -assertEquals("default", f2("0"), "0-1-switch.string"); -assertEquals("default", f2(false), "0-1-switch.bool"); -assertEquals("default", f2(null), "0-1-switch.null"); -assertEquals("default", f2(undefined), "0-1-switch.undef"); -assertEquals("default", f2(new Number(2)), "0-1-switch.undef"); -assertEquals("default", f2({valueOf: function(){return 2; }}), "0-1-switch.obj"); - - -function f3(x, c) { - var r = 0; - switch (x) { - default: - r = "default"; - break; - case c: - r = "value is c = " + c; - break; - case 2: - r = "two"; - break; - case -5: - r = "minus 5"; - break; - case 9: - r = "nine"; - break; - } - return r; -} - -assertEquals("two", f3(2,0), "value-switch.2-0"); -assertEquals("minus 5", f3(-5,0), "value-switch.-5-0"); -assertEquals("nine", f3(9,0), "value-switch.9-0"); -assertEquals("value is c = 0", f3(0,0), "value-switch.0-0"); -assertEquals("value is c = 2", f3(2,2), "value-switch.2-2"); -assertEquals("default", f3(7,0), "value-switch.7-0"); - - -function f4(x) { - switch(x) { - case 0: - x++; - default: - x++; - case 2: - x++; - } - return x; -} - - -assertEquals(3, f4(0), "fallthrough-switch.0"); -assertEquals(3, f4(1), "fallthrough-switch.1"); -assertEquals(3, f4(2), "fallthrough-switch.2"); -assertEquals(5, f4(3), "fallthrough-switch.3"); - -function f4_string(tag, x) { - switch(tag) { - case 'zero': - x++; - case 'two': - x++; - } - return x; -} - -// Symbols -assertEquals(2, f4_string('zero', 0), "fallthrough-string-switch.0"); -assertEquals(1, f4_string('one', 1), "fallthrough-string-switch.1"); -assertEquals(3, f4_string('two', 2), "fallthrough-string-switch.2"); - -// Strings -assertEquals(2, f4_string('_zero'.slice(1), 0), "fallthrough-string-switch.3"); -assertEquals(1, f4_string('_one'.slice(1), 1), "fallthrough-string-switch.4"); -assertEquals(3, f4_string('_two'.slice(1), 2), "fallthrough-string-switch.5"); - -// Oddball -assertEquals(3, f4_string(null, 3), "fallthrough-string-switch.6"); - -// Test for regression -function regress_string(value) { - var json = 1; - switch (typeof value) { - case 'object': - break; - - default: - - } - return json; -}; -assertEquals(1, regress_string('object'), 'regression-string'); - -function f5(x) { - switch(x) { - case -2: return true; - case -1: return false; - case 0: return true; - case 2: return false; - default: return 42; - } -} - -assertTrue(f5(-2), "negcase.-2"); -assertFalse(f5(-1), "negcase.-1"); -assertTrue(f5(0), "negcase.-0"); -assertEquals(42, f5(1), "negcase.1"); -assertFalse(f5(2), "negcase.2"); - -function f6(N) { - // long enough case that code buffer grows during code-generation - var res = 0; - for(var i = 0; i < N; i++) { - switch(i & 0x3f) { - case 0: res += 0; break; - case 1: res += 1; break; - case 2: res += 2; break; - case 3: res += 3; break; - case 4: res += 4; break; - case 5: res += 5; break; - case 6: res += 6; break; - case 7: res += 7; break; - case 8: res += 8; break; - case 9: res += 9; break; - case 10: res += 10; break; - case 11: res += 11; break; - case 12: res += 12; break; - case 13: res += 13; break; - case 14: res += 14; break; - case 15: res += 15; break; - case 16: res += 16; break; - case 17: res += 17; break; - case 18: res += 18; break; - case 19: res += 19; break; - case 20: res += 20; break; - case 21: res += 21; break; - case 22: res += 22; break; - case 23: res += 23; break; - case 24: res += 24; break; - case 25: res += 25; break; - case 26: res += 26; break; - case 27: res += 27; break; - case 28: res += 28; break; - case 29: res += 29; break; - case 30: res += 30; break; - case 31: res += 31; break; - case 32: res += 32; break; - case 33: res += 33; break; - case 34: res += 34; break; - case 35: res += 35; break; - case 36: res += 36; break; - case 37: res += 37; break; - case 38: res += 38; break; - case 39: res += 39; break; - case 40: res += 40; break; - case 41: res += 41; break; - case 42: res += 42; break; - case 43: res += 43; break; - case 44: res += 44; break; - case 45: res += 45; break; - case 46: res += 46; break; - case 47: res += 47; break; - case 48: res += 48; break; - case 49: res += 49; break; - case 50: res += 50; break; - case 51: res += 51; break; - case 52: res += 52; break; - case 53: res += 53; break; - case 54: res += 54; break; - case 55: res += 55; break; - case 56: res += 56; break; - case 57: res += 57; break; - case 58: res += 58; break; - case 59: res += 59; break; - case 60: res += 60; break; - case 61: res += 61; break; - case 62: res += 62; break; - case 63: res += 63; break; - case 64: break; - default: break; - } - } - return res; -} - -assertEquals(190, f6(20), "largeSwitch.20"); -assertEquals(2016, f6(64), "largeSwitch.64"); -assertEquals(4032, f6(128), "largeSwitch.128"); -assertEquals(4222, f6(148), "largeSwitch.148"); - - -function f7(value) { - switch (value) { - case 0: return "0"; - case -0: return "-0"; - case 1: case 2: case 3: case 4: // Dummy fillers. - } - switch (value) { - case 0x3fffffff: return "MaxSmi"; - case 0x3ffffffe: - case 0x3ffffffd: - case 0x3ffffffc: - case 0x3ffffffb: - case 0x3ffffffa: // Dummy fillers - } - switch (value) { - case -0x40000000: return "MinSmi"; - case -0x3fffffff: - case -0x3ffffffe: - case -0x3ffffffd: - case -0x3ffffffc: - case -0x3ffffffb: // Dummy fillers - } - switch (value) { - case 10: return "A"; - case 11: - case 12: - case 13: - case 14: - case 15: // Dummy fillers - } - return "default"; -} - - -assertEquals("default", f7(0.1), "0-1-switch.double-0.1"); -assertEquals("0", f7(-0), "0-1-switch.double-neg0"); -assertEquals("MaxSmi", f7((1<<30)-1), "0-1-switch.maxsmi"); -assertEquals("MinSmi", f7(-(1<<30)), "0-1-switch.minsmi"); -assertEquals("default", f7(1<<30), "0-1-switch.maxsmi++"); -assertEquals("default", f7(-(1<<30)-1), "0-1-switch.minsmi--"); -assertEquals("A", f7((170/16)-(170%16/16)), "0-1-switch.heapnum"); - - -function makeVeryLong(length) { - var res = "(function () {\n" + - " var res = 0;\n" + - " for (var i = 0; i <= " + length + "; i++) {\n" + - " switch(i) {\n"; - for (var i = 0; i < length; i++) { - res += " case " + i + ": res += 2; break;\n"; - } - res += " default: res += 1;\n" + - " }\n" + - " }\n" + - " return res;\n" + - "})"; - return eval(res); -} -var verylong_size = 1000; -var verylong = makeVeryLong(verylong_size); - -assertEquals(verylong_size * 2 + 1, verylong()); - -// -// Test suite below aims to cover all possible combinations of following: -// -// clauses | tags | type feedback | optimization -// ========================================================= -// strings | symbol | all | on -// smis | string | target | off -// mixed | oddball | non-target | -// | smis | none | -// | heapnum | | -// ========================================================= - -// Function-with-switch generator -var test_id = 0, - clause_values = { - string: ['abc', 'def', 'ghi', 'jkl'], - smi: [1, 2, 3, 4], - mixed: ['abc', 1, 'def', 2, 'ghi', 3, 'jkl', 4] - }; - -function switch_gen(clause_type, feedback, optimize) { - var values = clause_values[clause_type]; - - function opt(fn) { - if (feedback === 'all') { - values.forEach(fn); - } else if (Array.isArray(feedback)) { - // Non-target - values.filter(function(v) { - return feedback.indexOf(v) === -1; - }).forEach(fn); - } else if (feedback !== undefined) { - // Target - fn(feedback); - } else { - // None - } - - if (optimize) %OptimizeFunctionOnNextCall(fn); - - return fn; - }; - - return opt(new Function( - 'tag', - '"' + (test_id++) + '";' + - 'switch(tag) {' + - values.map(function(value) { - return 'case ' + JSON.stringify(value) + ': return' + - JSON.stringify('ok-' + value); - }).join(';') + - '}' - )); -}; - -function test_switch(clause_type, test_type, feedback, optimize) { - var pairs = [], - fn = switch_gen(clause_type, feedback, optimize); - - if (Array.isArray(test_type)) { - pairs = test_type.map(function(v) { - return { - value: v, - expected: 'ok-' + v - }; - }); - } else if (test_type === 'symbols') { - pairs = clause_values.string.map(function(v) { - return { - value: v, - expected: clause_type !== 'smi' ? 'ok-' + v : undefined - }; - }); - } else if (test_type === 'strings') { - pairs = clause_values.string.map(function(v) { - return { - value: ('%%' + v).slice(2), - expected: clause_type !== 'smi' ? 'ok-' + v : undefined - }; - }); - } else if (test_type === 'oddball') { - pairs = [ - { value: null, expected: undefined }, - { value: NaN, expected: undefined }, - { value: undefined, expected: undefined } - ]; - } else if (test_type === 'smi') { - pairs = clause_values.smi.map(function(v) { - return { - value: v, - expected: clause_type !== 'string' ? 'ok-' + v : undefined - }; - }); - } else if (test_type === 'heapnum') { - pairs = clause_values.smi.map(function(v) { - return { - value: ((v * 17)/16) - ((v*17)%16/16), - expected: clause_type !== 'string' ? 'ok-' + v : undefined - }; - }); - } - - pairs.forEach(function(pair) { - assertEquals(fn(pair.value), pair.expected); - }); -}; - -// test_switch(clause_type, test_type, feedback, optimize); - -function test_switches(opt) { - var test_types = ['symbols', 'strings', 'oddball', 'smi', 'heapnum']; - - function test(clause_type) { - var values = clause_values[clause_type]; - - test_types.forEach(function(test_type) { - test_switch(clause_type, test_type, 'all', opt); - test_switch(clause_type, test_type, 'none', opt); - - // Targeting specific clause feedback - values.forEach(function(value) { - test_switch(clause_type, test_type, [value], value, opt); - test_switch(clause_type, test_type, value, value, opt); - }); - }); - }; - - test('string'); - test('smi'); - test('mixed'); -}; - -test_switches(false); -test_switches(true); - - -// Test labeled and anonymous breaks in switch statements -(function test_switch_break() { - A: for (var i = 1; i < 10; i++) { - switch (i) { - case 1: - break A; - } - } - assertEquals(1, i); - - for (var i = 1; i < 10; i++) { - B: switch (i) { - case 1: - break B; - } - } - assertEquals(10, i); - - for (var i = 1; i < 10; i++) { - switch (i) { - case 1: - break; - } - } - assertEquals(10, i); - - switch (1) { - case 1: - C: for (var i = 1; i < 10; i++) { - break C; - } - i = 2; - } - assertEquals(2, i); - - switch (1) { - case 1: - for (var i = 1; i < 10; i++) { - break; - } - i = 2; - } - assertEquals(2, i); - - D: switch (1) { - case 1: - for (var i = 1; i < 10; i++) { - break D; - } - i = 2; - } - assertEquals(1, i); -})(); diff --git a/implementation-contributed/v8/mjsunit/test-async.js b/implementation-contributed/v8/mjsunit/test-async.js deleted file mode 100644 index 8f7b553988a..00000000000 --- a/implementation-contributed/v8/mjsunit/test-async.js +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -// Used for async tests. See definition below for more documentation. -var testAsync; - -(function () { // Scope for utility functions. - /** - * This is to be used through the testAsync helper function defined - * below. - * - * This requires the --allow-natives-syntax flag to allow calling - * runtime functions. - * - * There must be at least one assertion in an async test. A test - * with no assertions will fail. - * - * @example - * testAsync(assert => { - * assert.plan(1) // There should be one assertion in this test. - * Promise.resolve(1) - * .then(val => assert.equals(1, val), - * assert.unreachable); - * }) - */ - class AsyncAssertion { - constructor(test, name) { - this.expectedAsserts_ = -1; - this.actualAsserts_ = 0; - this.test_ = test; - this.name_ = name || ''; - } - - /** - * Sets the number of expected asserts in the test. The test fails - * if the number of asserts computed after running the test is not - * equal to this specified value. - * @param {number} expectedAsserts - */ - plan(expectedAsserts) { - this.expectedAsserts_ = expectedAsserts; - } - - fail(expectedText, found) { - let message = formatFailureText(expectedText, found); - message += "\nin test:" + this.name_ - message += "\n" + Function.prototype.toString.apply(this.test_); - %AbortJS(message); - } - - equals(expected, found, name_opt) { - this.actualAsserts_++; - if (!deepEquals(expected, found)) { - this.fail(prettyPrinted(expected), found, name_opt); - } - } - - unreachable() { - let message = "Failure: unreachable in test: " + this.name_; - message += "\n" + Function.prototype.toString.apply(this.test_); - %AbortJS(message); - } - - unexpectedRejection(details) { - return (error) => { - let message = - "Failure: unexpected Promise rejection in test: " + this.name_; - if (details) message += "\n @" + details; - if (error instanceof Error) { - message += "\n" + String(error.stack); - } else { - message += "\n" + String(error); - } - message += "\n\n" + Function.prototype.toString.apply(this.test_); - %AbortJS(message); - }; - } - - drainMicrotasks() { - %PerformMicrotaskCheckpoint(); - } - - done_() { - if (this.expectedAsserts_ === -1) { - let message = "Please call t.plan(count) to initialize test harness " + - "with correct assert count (Note: count > 0)"; - %AbortJS(message); - } - - if (this.expectedAsserts_ !== this.actualAsserts_) { - let message = "Expected asserts: " + this.expectedAsserts_; - message += ", Actual asserts: " + this.actualAsserts_; - message += "\nin test: " + this.name_; - message += "\n" + Function.prototype.toString.apply(this.test_); - %AbortJS(message); - } - } - } - - /** This is used to test async functions and promises. - * @param {testCallback} test - test function - * @param {string} [name] - optional name of the test - * - * - * @callback testCallback - * @param {AsyncAssertion} assert - */ - testAsync = function(test, name) { - let assert = new AsyncAssertion(test, name); - test(assert); - %PerformMicrotaskCheckpoint(); - assert.done_(); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/test-builtins-setup.js b/implementation-contributed/v8/mjsunit/test-builtins-setup.js deleted file mode 100644 index ba5e0587e49..00000000000 --- a/implementation-contributed/v8/mjsunit/test-builtins-setup.js +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - - -function CheckNoPrototype(object) { - var desc = Object.getOwnPropertyDescriptor(object, "prototype"); - assertEquals(undefined, desc); -} - -function CheckReadonlyPrototype(object) { - var desc = Object.getOwnPropertyDescriptor(object, "prototype"); - assertTrue(desc != undefined); - assertFalse(desc.enumerable); - assertFalse(desc.configurable); - assertFalse(desc.writable); -} - -function CheckMethodEx(object, prop_name, function_name, length) { - var desc = Object.getOwnPropertyDescriptor(object, prop_name); - assertTrue(desc != undefined); - assertEquals(function_name, desc.value.name); - assertEquals(length, desc.value.length, "Bad length of \"" + function_name + "\""); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - assertTrue(desc.writable); - assertThrows(() => new desc.value()); - // Check that built-in function is strict. - assertThrows(() => desc.value.arguments); - assertThrows(() => desc.value.caller); -} - -function CheckMethod(object, name, length) { - CheckMethodEx(object, name, name, length); -} - -function CheckGetter(object, name) { - var desc = Object.getOwnPropertyDescriptor(object, name); - assertTrue(desc != undefined); - var expected_name = "get "; - if (typeof(name) == "symbol") { - name = name.toString().match("Symbol\\((.*)\\)")[1]; - expected_name += "[" + name + "]"; - } else { - expected_name += name; - } - assertEquals(expected_name, desc.get.name); - assertEquals(0, desc.get.length); - assertFalse(desc.enumerable); - assertTrue(desc.configurable); - // Check that built-in function is strict. - assertThrows(() => desc.get.arguments); - assertThrows(() => desc.get.caller); -} - - -(function TestIntrinsicConstructors() { - CheckReadonlyPrototype(Object); - CheckReadonlyPrototype(Function); - CheckReadonlyPrototype(Number); - CheckReadonlyPrototype(Boolean); - CheckReadonlyPrototype(Symbol); - CheckReadonlyPrototype(Date); - CheckReadonlyPrototype(RegExp); - CheckReadonlyPrototype(DataView); - CheckReadonlyPrototype(ArrayBuffer); - - var AsyncFunction = (async function(){}).constructor; - CheckReadonlyPrototype(AsyncFunction); - var GeneratorFunction = (function*(){}).constructor; - CheckReadonlyPrototype(GeneratorFunction); - - CheckReadonlyPrototype(Error); - CheckReadonlyPrototype(SyntaxError); - CheckReadonlyPrototype(RangeError); - CheckReadonlyPrototype(TypeError); - CheckReadonlyPrototype(ReferenceError); - CheckReadonlyPrototype(EvalError); - CheckReadonlyPrototype(URIError); - CheckReadonlyPrototype(Error); -})(); - - -(function TestIntl() { - if (typeof (Intl) == "undefined") return; - CheckMethod(Intl, "getCanonicalLocales", 1); - - CheckReadonlyPrototype(Intl.Collator); - CheckMethod(Intl.Collator, "supportedLocalesOf", 1); - CheckGetter(Intl.Collator.prototype, "compare"); - CheckMethod(Intl.Collator.prototype, "resolvedOptions", 0); - - CheckReadonlyPrototype(Intl.NumberFormat); - CheckMethod(Intl.NumberFormat, "supportedLocalesOf", 1); - CheckGetter(Intl.NumberFormat.prototype, "format"); - CheckMethod(Intl.NumberFormat.prototype, "resolvedOptions", 0); - - CheckReadonlyPrototype(Intl.DateTimeFormat); - CheckMethod(Intl.DateTimeFormat, "supportedLocalesOf", 1); - CheckGetter(Intl.DateTimeFormat.prototype, "format"); - CheckMethod(Intl.DateTimeFormat.prototype, "resolvedOptions", 0); - CheckMethod(Intl.DateTimeFormat.prototype, "formatToParts", 1); - - CheckReadonlyPrototype(Intl.v8BreakIterator); - CheckMethod(Intl.v8BreakIterator, "supportedLocalesOf", 1); - CheckMethod(Intl.v8BreakIterator.prototype, "resolvedOptions", 0); - CheckGetter(Intl.v8BreakIterator.prototype, "adoptText"); - CheckGetter(Intl.v8BreakIterator.prototype, "first"); - CheckGetter(Intl.v8BreakIterator.prototype, "next"); - CheckGetter(Intl.v8BreakIterator.prototype, "current"); - CheckGetter(Intl.v8BreakIterator.prototype, "breakType"); - - CheckMethod(String.prototype, "localeCompare", 1); - CheckMethod(String.prototype, "toLocaleLowerCase", 0); - CheckMethod(String.prototype, "toLocaleUpperCase", 0); - - CheckMethod(Number.prototype, "toLocaleString", 0); - - CheckMethod(Date.prototype, "toLocaleString", 0); - CheckMethod(Date.prototype, "toLocaleDateString", 0); - CheckMethod(Date.prototype, "toLocaleTimeString", 0); -})(); - - -(function TestCollection() { - CheckReadonlyPrototype(Set); - CheckMethod(Set.prototype, "add", 1); - CheckMethod(Set.prototype, "delete", 1); - CheckMethod(Set.prototype, "entries", 0); - assertTrue(Set.prototype.keys === Set.prototype.values); - assertTrue(Set.prototype[Symbol.iterator] === Set.prototype.values); - CheckMethod(Set.prototype, "values", 0); - - var SetIteratorPrototype = (new Set())[Symbol.iterator]().__proto__; - CheckMethod(SetIteratorPrototype, "next", 0); - assertEquals("Set Iterator", SetIteratorPrototype[Symbol.toStringTag]); - assertEquals( - undefined, - Object.getOwnPropertyDescriptor(SetIteratorPrototype, "constructor")); - - CheckReadonlyPrototype(Map); - CheckMethod(Map.prototype, "set", 2); - CheckMethod(Map.prototype, "delete", 1); - CheckMethod(Map.prototype, "entries", 0); - CheckMethod(Map.prototype, "keys", 0); - CheckMethod(Map.prototype, "values", 0); - assertTrue(Map.prototype[Symbol.iterator] === Map.prototype.entries); - - var MapIteratorPrototype = (new Map())[Symbol.iterator]().__proto__; - CheckMethod(MapIteratorPrototype, "next", 0); - assertEquals("Map Iterator", MapIteratorPrototype[Symbol.toStringTag]); - assertEquals( - undefined, - Object.getOwnPropertyDescriptor(MapIteratorPrototype, "constructor")); - - CheckReadonlyPrototype(WeakSet); - assertEquals(0, WeakSet.length); - CheckMethod(WeakSet.prototype, "add", 1); - CheckMethod(WeakSet.prototype, "delete", 1); - CheckMethod(WeakSet.prototype, "has", 1); - - CheckReadonlyPrototype(WeakMap); - assertEquals(0, WeakMap.length); - CheckMethod(WeakMap.prototype, "delete", 1); - CheckMethod(WeakMap.prototype, "get", 1); - CheckMethod(WeakMap.prototype, "has", 1); - CheckMethod(WeakMap.prototype, "set", 2); -})(); - - -(function TestTypedArrays() { - var TypedArray = Uint8Array.__proto__; - - CheckReadonlyPrototype(Int8Array); - CheckReadonlyPrototype(Uint8Array); - CheckReadonlyPrototype(Uint8ClampedArray); - CheckReadonlyPrototype(Int16Array); - CheckReadonlyPrototype(Uint16Array); - CheckReadonlyPrototype(Int32Array); - CheckReadonlyPrototype(Uint32Array); - CheckReadonlyPrototype(Float32Array); - CheckReadonlyPrototype(Float64Array); - - CheckReadonlyPrototype(TypedArray); - CheckMethod(TypedArray, "of", 0); - CheckMethod(TypedArray, "from", 1); - - CheckMethod(TypedArray.prototype, "subarray", 2); - CheckMethod(TypedArray.prototype, "set", 1); - CheckGetter(TypedArray.prototype, Symbol.toStringTag); - CheckMethod(TypedArray.prototype, "filter", 1); - CheckMethod(TypedArray.prototype, "find", 1); - CheckMethod(TypedArray.prototype, "findIndex", 1); - CheckMethod(TypedArray.prototype, "sort", 1); - CheckMethod(TypedArray.prototype, "toLocaleString", 0); - CheckMethod(TypedArray.prototype, "join", 1); -})(); - - -(function TestArray() { - CheckReadonlyPrototype(Array); - - CheckMethod(Array, "of", 0); - CheckMethod(Array, "from", 1); - - CheckMethod(Array.prototype, "concat", 1); - CheckMethod(Array.prototype, "copyWithin", 2); - CheckMethod(Array.prototype, "every", 1); - CheckMethod(Array.prototype, "fill", 1); - CheckMethod(Array.prototype, "filter", 1); - CheckMethod(Array.prototype, "find", 1); - CheckMethod(Array.prototype, "findIndex", 1); - CheckMethod(Array.prototype, "includes", 1); - CheckMethod(Array.prototype, "indexOf", 1); - CheckMethod(Array.prototype, "join", 1); - CheckMethod(Array.prototype, "lastIndexOf", 1); - CheckMethod(Array.prototype, "map", 1); - CheckMethod(Array.prototype, "pop", 0); - CheckMethod(Array.prototype, "push", 1); - CheckMethod(Array.prototype, "reduce", 1); - CheckMethod(Array.prototype, "reduceRight", 1); - CheckMethod(Array.prototype, "reverse", 0); - CheckMethod(Array.prototype, "shift", 0); - CheckMethod(Array.prototype, "slice", 2); - CheckMethod(Array.prototype, "some", 1); - CheckMethod(Array.prototype, "sort", 1); - CheckMethod(Array.prototype, "splice", 2); - CheckMethod(Array.prototype, "toLocaleString", 0); - CheckMethod(Array.prototype, "toString", 0); - CheckMethod(Array.prototype, "unshift", 1); - - CheckMethod(Array.prototype, "entries", 0); - CheckMethod(Array.prototype, "forEach", 1); - CheckMethod(Array.prototype, "keys", 0); - CheckMethodEx(Array.prototype, Symbol.iterator, "values", 0); -})(); - - -(function TestPromise() { - CheckReadonlyPrototype(Promise); - CheckMethod(Promise, "all", 1); - CheckMethod(Promise, "race", 1); - CheckMethod(Promise, "reject", 1); - CheckMethod(Promise, "resolve", 1); -})(); - - -(function TestProxy() { - CheckNoPrototype(Proxy); - CheckMethod(Proxy, "revocable", 2); -})(); - - -(function TestString() { - CheckReadonlyPrototype(String); - CheckMethod(String, "raw", 1); - - CheckMethod(String.prototype, "codePointAt", 1); - CheckMethod(String.prototype, "match", 1); - CheckMethod(String.prototype, "padEnd", 1); - CheckMethod(String.prototype, "padStart", 1); - CheckMethod(String.prototype, "repeat", 1); - CheckMethod(String.prototype, "search", 1); - CheckMethod(String.prototype, "link", 1); - CheckMethod(String.prototype, "anchor", 1); - CheckMethod(String.prototype, "fontcolor", 1); - CheckMethod(String.prototype, "fontsize", 1); - CheckMethod(String.prototype, "big", 0); - CheckMethod(String.prototype, "blink", 0); - CheckMethod(String.prototype, "bold", 0); - CheckMethod(String.prototype, "fixed", 0); - CheckMethod(String.prototype, "italics", 0); - CheckMethod(String.prototype, "small", 0); - CheckMethod(String.prototype, "strike", 0); - CheckMethod(String.prototype, "sub", 0); - CheckMethod(String.prototype, "sup", 0); -})(); diff --git a/implementation-contributed/v8/mjsunit/thin-strings.js b/implementation-contributed/v8/mjsunit/thin-strings.js deleted file mode 100644 index c86764259ac..00000000000 --- a/implementation-contributed/v8/mjsunit/thin-strings.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function get_thin_string(a, b) { - var str = a + b; // Make a ConsString. - var o = {}; - o[str]; // Turn it into a ThinString. - return str; -} - -var str = get_thin_string("foo", "bar"); - -var re = /.o+ba./; -assertEquals(["foobar"], re.exec(str)); -assertEquals(["foobar"], re.exec(str)); -assertEquals(["foobar"], re.exec(str)); - -function CheckCS() { - assertEquals("o", str.substring(1, 2)); - assertEquals("f".charCodeAt(0), str.charCodeAt(0)); - assertEquals("f", str.split(/oo/)[0]); -} -CheckCS(); -%OptimizeFunctionOnNextCall(CheckCS); -CheckCS(); - -function CheckTF() { - try {} catch(e) {} // Turbofan. - assertEquals("o", str.substring(1, 2)); - assertEquals("f".charCodeAt(0), str.charCodeAt(0)); - assertEquals("f", str.split(/oo/)[0]); -} -CheckTF(); -%OptimizeFunctionOnNextCall(CheckTF); -CheckTF(); - -// Flat cons strings can point to a thin string. - -function get_cons_thin_string(a, b) { - // Make a ConsString. - var s = a + b; - // Flatten it. - s.endsWith("a"); - // Internalize the first part. - var o = {}; - o[s]; - return s; -} - -var s = get_cons_thin_string("__________", "@@@@@@@@@@a"); -s.match(/.*a/); -assertEquals("________", s.substring(0, 8)); - -function cc1(s) { - assertEquals(95, s.charCodeAt(0)); - assertEquals(95, s.codePointAt(0)); -} -cc1(s); -cc1(s); -%OptimizeFunctionOnNextCall(cc1); -cc1(s); - -// Sliced strings can have a thin string as their parent. - -function get_sliced_thin_string(a, b) { - // Make a long thin string. - var s = a + b; - // Slice a substring out of it. - var slice = s.substring(0, 20); - // Make the original string thin. - var o = {}; - o[s]; - return slice; -} - -var t = get_sliced_thin_string("abcdefghijklmnopqrstuvwxyz", - "abcdefghijklmnopqrstuvwxyz"); -assertEquals("abcdefghijklmnopqrst", decodeURI(t)); - -function cc2(s) { - assertEquals(97, s.charCodeAt(0)); - assertEquals(97, s.codePointAt(0)); -} -cc2(t); -cc2(t); -%OptimizeFunctionOnNextCall(cc2); -cc2(t); diff --git a/implementation-contributed/v8/mjsunit/third_party/object-keys/LICENSE b/implementation-contributed/v8/mjsunit/third_party/object-keys/LICENSE deleted file mode 100644 index 67002b44000..00000000000 --- a/implementation-contributed/v8/mjsunit/third_party/object-keys/LICENSE +++ /dev/null @@ -1,30 +0,0 @@ -Copyright (c) 2006 Apple Computer, Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following -disclaimer in the documentation and/or other materials provided -with the distribution. - -3. Neither the name of the copyright holder(s) nor the names of any -contributors may be used to endorse or promote products derived -from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/implementation-contributed/v8/mjsunit/third_party/object-keys/object-keys.js b/implementation-contributed/v8/mjsunit/third_party/object-keys/object-keys.js deleted file mode 100644 index 39336090ea5..00000000000 --- a/implementation-contributed/v8/mjsunit/third_party/object-keys/object-keys.js +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) 2006 Apple Computer, Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -// OF THE POSSIBILITY OF SUCH DAMAGE. - -// Based on LayoutTests/fast/js/Object-keys.html - -assertEquals(Object.keys(2), []); -assertEquals(Object.keys("foo"), ["0", "1", "2"]); -assertThrows(function () { Object.keys(null) }, TypeError); -assertThrows(function () { Object.keys(undefined) }, TypeError); - -assertEquals(Object.keys({}), []); -assertEquals(Object.keys({a:null}), ['a']); -assertEquals(Object.keys({a:null, b:null}), ['a', 'b']); -assertEquals(Object.keys({b:null, a:null}), ['b', 'a']); -assertEquals(Object.keys([]), []); -assertEquals(Object.keys([null]), ['0']); -assertEquals(Object.keys([undefined]), ['0']); -assertEquals(Object.keys([null,null]), ['0', '1']); -assertEquals(Object.keys([null,null,,,,null]), ['0', '1', '5']); -assertEquals(Object.keys({__proto__:{a:null}}), []); -assertEquals(Object.keys({__proto__:[1,2,3]}), []); -var x = []; -x.__proto__ = [1, 2, 3]; -assertEquals(Object.keys(x), []); -assertEquals(Object.keys(function () {}), []); - -assertEquals('string', typeof(Object.keys([1])[0])); - -function argsTest(a, b, c) { - assertEquals(['0', '1', '2'], Object.keys(arguments)); -} - -argsTest(1, 2, 3); - -var literal = {a: 1, b: 2, c: 3}; -var keysBefore = Object.keys(literal); -assertEquals(['a', 'b', 'c'], keysBefore); -keysBefore[0] = 'x'; -var keysAfter = Object.keys(literal); -assertEquals(['a', 'b', 'c'], keysAfter); -assertEquals(['x', 'b', 'c'], keysBefore); - - -var o = [1, 2, 3]; -assertEquals(['0', '1', '2'], Object.keys(o)); -Object.defineProperty(o, '0', { - enumerable: false, -}); -assertEquals(['1', '2'], Object.keys(o)); - - -(function(){ - assertEquals(['0', '1', '2'], Object.keys(arguments)); - Object.defineProperty(arguments, '0', { - enumerable: false, - }); - assertEquals(['1', '2'], Object.keys(arguments)); -})(0,1,2); - - -(function(a, b){ - assertEquals(['0', '1', '2'], Object.keys(arguments)); - Object.defineProperty(arguments, '0', { - enumerable: false, - }); - assertEquals(['1', '2'], Object.keys(arguments)); -})(0,1,2); - -var b = []; -assertEquals(0, Object.keys(b).length); -b[0] = undefined; -assertEquals(1, Object.keys(b).length); diff --git a/implementation-contributed/v8/mjsunit/third_party/regexp-pcre/LICENSE b/implementation-contributed/v8/mjsunit/third_party/regexp-pcre/LICENSE deleted file mode 100644 index 4baa7d83a13..00000000000 --- a/implementation-contributed/v8/mjsunit/third_party/regexp-pcre/LICENSE +++ /dev/null @@ -1,68 +0,0 @@ -PCRE LICENCE ------------- - -PCRE is a library of functions to support regular expressions whose syntax -and semantics are as close as possible to those of the Perl 5 language. - -Release 7 of PCRE is distributed under the terms of the "BSD" licence, as -specified below. The documentation for PCRE, supplied in the "doc" -directory, is distributed under the same terms as the software itself. - -The basic library functions are written in C and are freestanding. Also -included in the distribution is a set of C++ wrapper functions. - - -THE BASIC LIBRARY FUNCTIONS ---------------------------- - -Written by: Philip Hazel -Email local part: ph10 -Email domain: cam.ac.uk - -University of Cambridge Computing Service, -Cambridge, England. - -Copyright (c) 1997-2007 University of Cambridge -All rights reserved. - - -THE C++ WRAPPER FUNCTIONS -------------------------- - -Contributed by: Google Inc. - -Copyright (c) 2007, Google Inc. -All rights reserved. - - -THE "BSD" LICENCE ------------------ - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - * Neither the name of the University of Cambridge nor the name of Google - Inc. nor the names of their contributors may be used to endorse or - promote products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -End diff --git a/implementation-contributed/v8/mjsunit/third_party/regexp-pcre/regexp-pcre.js b/implementation-contributed/v8/mjsunit/third_party/regexp-pcre/regexp-pcre.js deleted file mode 100644 index 8b603e45d16..00000000000 --- a/implementation-contributed/v8/mjsunit/third_party/regexp-pcre/regexp-pcre.js +++ /dev/null @@ -1,6603 +0,0 @@ -// Autogenerated from the PCRE test suite Mon Feb 2 15:14:04 CET 2009 - -// Note that some regexps in the PCRE test suite use features not present -// in JavaScript. These don't work in JS, but they fail to work in a -// predictable way, and the expected results reflect this. - -// PCRE comes with the following license - -// PCRE LICENCE -// ------------ -// -// PCRE is a library of functions to support regular expressions whose syntax -// and semantics are as close as possible to those of the Perl 5 language. -// -// Release 7 of PCRE is distributed under the terms of the "BSD" licence, as -// specified below. The documentation for PCRE, supplied in the "doc" -// directory, is distributed under the same terms as the software itself. -// -// The basic library functions are written in C and are freestanding. Also -// included in the distribution is a set of C++ wrapper functions. -// -// -// THE BASIC LIBRARY FUNCTIONS -// --------------------------- -// -// Written by: Philip Hazel -// Email local part: ph10 -// Email domain: cam.ac.uk -// -// University of Cambridge Computing Service, -// Cambridge, England. -// -// Copyright (c) 1997-2007 University of Cambridge -// All rights reserved. -// -// -// THE C++ WRAPPER FUNCTIONS -// ------------------------- -// -// Contributed by: Google Inc. -// -// Copyright (c) 2007, Google Inc. -// All rights reserved. -// -// -// THE "BSD" LICENCE -// ----------------- -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// * Neither the name of the University of Cambridge nor the name of Google -// Inc. nor the names of their contributors may be used to endorse or -// promote products derived from this software without specific prior -// written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// End - -var res = new Array(); -res[0] = /(a)b|/i; -res[1] = /abc/i; -res[2] = /^abc/i; -res[3] = /a+bc/i; -res[4] = /a*bc/i; -res[5] = /a{3}bc/i; -res[6] = /(abc|a+z)/i; -res[7] = /^abc$/i; -res[8] = /ab\idef/; -res[9] = /.*b/i; -res[10] = /.*?b/i; -res[11] = /cat|dog|elephant/i; -res[12] = /cat|dog|elephant/i; -res[13] = /cat|dog|elephant/i; -res[14] = /a|[bcd]/i; -res[15] = /(a|[^\dZ])/i; -res[16] = /(a|b)*[\s]/i; -res[17] = /(ab\2)/; -res[18] = /(a)(b)(c)\2/i; -res[19] = /(a)bc|(a)(b)\2/i; -res[20] = /abc$/i; -res[21] = /(a)(b)(c)(d)(e)\6/; -res[22] = /the quick brown fox/i; -res[23] = /^abc|def/i; -res[24] = /.*((abc)$|(def))/i; -res[25] = /abc/i; -res[26] = /^abc|def/i; -res[27] = /.*((abc)$|(def))/i; -res[28] = /the quick brown fox/i; -res[29] = /the quick brown fox/i; -res[30] = /abc.def/i; -res[31] = /abc$/i; -res[32] = /(abc)\2/i; -res[33] = /(abc\1)/i; -res[34] = /a[]b/; -res[35] = /[^aeiou ]{3,}/i; -res[36] = /<.*>/i; -res[37] = /<.*?>/i; -res[38] = /[abcd]/i; -res[39] = /(^a|^b)/im; -res[40] = /a$/i; -res[41] = /a$/im; -res[42] = /\Aabc/im; -res[43] = /^abc/im; -res[44] = /(?!alphabet)[ab]/i; -res[45] = /The next three are in testinput2 because they have variable length branches/; -res[46] = /This one is here because Perl 5.005_02 doesn't fail it/i; -res[47] = /This one is here because I think Perl 5.005_02 gets the setting of $1 wrong/i; -res[48] = /^(a\1?){4}$/i; -res[49] = /These are syntax tests from Perl 5.005/i; -res[50] = /a[]b/; -res[51] = /\1/; -res[52] = /\2/; -res[53] = /(a)|\2/; -res[54] = /a[]b/i; -res[55] = /abc/; -res[56] = /abc/; -res[57] = /abc/i; -res[58] = /(a)bc(d)/i; -res[59] = /(.{20})/i; -res[60] = /(.{15})/i; -res[61] = /(.{16})/i; -res[62] = /^(a|(bc))de(f)/i; -res[63] = /^abc\00def/i; -res[64] = /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+\n)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+\n)?)?)?)?)?)?)?)?)?otherword/i; -res[65] = /.*X/i; -res[66] = /.*X/i; -res[67] = /(.*X|^B)/i; -res[68] = /(.*X|^B)/i; -res[69] = /\Biss\B/i; -res[70] = /\Biss\B/i; -res[71] = /iss/ig; -res[72] = /\Biss\B/ig; -res[73] = /\Biss\B/ig; -res[74] = /^iss/ig; -res[75] = /.*iss/ig; -res[76] = /.i./ig; -res[77] = /^.is/ig; -res[78] = /^ab\n/ig; -res[79] = /^ab\n/img; -res[80] = /abc/i; -res[81] = /abc|bac/i; -res[82] = /(abc|bac)/i; -res[83] = /(abc|(c|dc))/i; -res[84] = /(abc|(d|de)c)/i; -res[85] = /a*/i; -res[86] = /a+/i; -res[87] = /(baa|a+)/i; -res[88] = /a{0,3}/i; -res[89] = /baa{3,}/i; -res[90] = /"([^\\"]+|\\.)*"/i; -res[91] = /(abc|ab[cd])/i; -res[92] = /(a|.)/i; -res[93] = /a|ba|\w/i; -res[94] = /abc(?=pqr)/i; -res[95] = /abc(?!pqr)/i; -res[96] = /ab./i; -res[97] = /ab[xyz]/i; -res[98] = /abc*/i; -res[99] = /ab.c*/i; -res[100] = /a.c*/i; -res[101] = /.c*/i; -res[102] = /ac*/i; -res[103] = /(a.c*|b.c*)/i; -res[104] = /a.c*|aba/i; -res[105] = /.+a/i; -res[106] = /(?=abcda)a.*/i; -res[107] = /(?=a)a.*/i; -res[108] = /a(b)*/i; -res[109] = /a\d*/i; -res[110] = /ab\d*/i; -res[111] = /a(\d)*/i; -res[112] = /abcde{0,0}/i; -res[113] = /ab\d+/i; -res[114] = /ab\d{0}e/i; -res[115] = /a?b?/i; -res[116] = /|-/i; -res[117] = /a*(b+)(z)(z)/i; -res[118] = /^.?abcd/i; -res[119] = /^[[:alnum:]]/; -res[120] = /^[[:^alnum:]]/; -res[121] = /^[[:alpha:]]/; -res[122] = /^[[:^alpha:]]/; -res[123] = /[_[:alpha:]]/i; -res[124] = /^[[:ascii:]]/; -res[125] = /^[[:^ascii:]]/; -res[126] = /^[[:blank:]]/; -res[127] = /^[[:^blank:]]/; -res[128] = /[\n\x0b\x0c\x0d[:blank:]]/i; -res[129] = /^[[:cntrl:]]/; -res[130] = /^[[:digit:]]/; -res[131] = /^[[:graph:]]/; -res[132] = /^[[:lower:]]/; -res[133] = /^[[:print:]]/; -res[134] = /^[[:punct:]]/; -res[135] = /^[[:space:]]/; -res[136] = /^[[:upper:]]/; -res[137] = /^[[:xdigit:]]/; -res[138] = /^[[:word:]]/; -res[139] = /^[[:^cntrl:]]/; -res[140] = /^[12[:^digit:]]/; -res[141] = /^[[:^blank:]]/; -res[142] = /[01[:alpha:]%]/; -res[143] = /[[.ch.]]/i; -res[144] = /[[=ch=]]/i; -res[145] = /[[:rhubarb:]]/i; -res[146] = /[[:upper:]]/i; -res[147] = /[[:lower:]]/i; -res[148] = /This one's here because of the large output vector needed/i; -res[149] = /(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/i; -res[150] = /This one's here because Perl does this differently and PCRE can't at present/i; -res[151] = /(main(O)?)+/i; -res[152] = /These are all cases where Perl does it differently (nested captures)/i; -res[153] = /^(a(b)?)+$/i; -res[154] = /^(aa(bb)?)+$/i; -res[155] = /^(aa|aa(bb))+$/i; -res[156] = /^(aa(bb)??)+$/i; -res[157] = /^(?:aa(bb)?)+$/i; -res[158] = /^(aa(b(b))?)+$/i; -res[159] = /^(?:aa(b(b))?)+$/i; -res[160] = /^(?:aa(b(?:b))?)+$/i; -res[161] = /^(?:aa(bb(?:b))?)+$/i; -res[162] = /^(?:aa(b(?:bb))?)+$/i; -res[163] = /^(?:aa(?:b(b))?)+$/i; -res[164] = /^(?:aa(?:b(bb))?)+$/i; -res[165] = /^(aa(b(bb))?)+$/i; -res[166] = /^(aa(bb(bb))?)+$/i; -res[167] = /a/i; -res[168] = /[\s]/; -res[169] = /[\S]/; -res[170] = /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/; -res[171] = /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/; -res[172] = /\Q\E/; -res[173] = /\Q\Ex/; -res[174] = / \Q\E/; -res[175] = /a\Q\E/; -res[176] = /a\Q\Eb/; -res[177] = /\Q\Eabc/; -res[178] = /[.x.]/i; -res[179] = /[=x=]/i; -res[180] = /[:x:]/i; -res[181] = /\l/i; -res[182] = /\L/i; -res[183] = /\N{name}/i; -res[184] = /\u/i; -res[185] = /\U/i; -res[186] = /[[:space:]/i; -res[187] = /[\s]/i; -res[188] = /[[:space:]]/i; -res[189] = /[[:space:]abcde]/i; -res[190] = /(.*)\d+\1/i; -res[191] = /(.*)\d+/i; -res[192] = /(.*)\d+\1/i; -res[193] = /(.*)\d+/i; -res[194] = /(.*(xyz))\d+\2/i; -res[195] = /((.*))\d+\1/i; -res[196] = /a[b]/i; -res[197] = /(?=a).*/i; -res[198] = /(?=abc).xyz/i; -res[199] = /(?=a)(?=b)/i; -res[200] = /(?=.)a/i; -res[201] = /((?=abcda)a)/i; -res[202] = /((?=abcda)ab)/i; -res[203] = /()a/i; -res[204] = /(a)+/i; -res[205] = /(a){2,3}/i; -res[206] = /(a)*/i; -res[207] = /[a]/i; -res[208] = /[ab]/i; -res[209] = /[ab]/i; -res[210] = /[^a]/i; -res[211] = /\d456/i; -res[212] = /\d456/i; -res[213] = /a^b/i; -res[214] = /^a/im; -res[215] = /c|abc/i; -res[216] = /(.*)a/i; -res[217] = /(.*)a\1/i; -res[218] = /(.*)a(b)\2/i; -res[219] = /((.*)a|(.*)b)z/i; -res[220] = /((.*)a|(.*)b)z\1/i; -res[221] = /((.*)a|(.*)b)z\2/i; -res[222] = /((.*)a|(.*)b)z\3/i; -res[223] = /((.*)a|^(.*)b)z\3/i; -res[224] = /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/i; -res[225] = /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/i; -res[226] = /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/i; -res[227] = /(a)(bc)/i; -res[228] = /(a+)*zz/i; -res[229] = /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/i; -res[230] = /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/i; -res[231] = /a*.*b/i; -res[232] = /(a|b)*.?c/i; -res[233] = /abcde/i; -res[234] = /a*b/i; -res[235] = /a+b/i; -res[236] = /(abc|def)x/i; -res[237] = /(ab|cd){3,4}/i; -res[238] = /([ab]{,4}c|xy)/i; -res[239] = /([ab]{1,4}c|xy){4,5}?123/i; -res[240] = /\b.*/i; -res[241] = /\b.*/i; -res[242] = /(?!.bcd).*/i; -res[243] = /abcde/i; -res[244] = /0{0,2}ABC/i; -res[245] = /\d{3,}ABC/i; -res[246] = /\d*ABC/i; -res[247] = /[abc]+DE/i; -res[248] = /[abc]?123/i; -res[249] = /^(?:\d){3,5}X/i; -res[250] = /^a/i; -res[251] = /line\nbreak/i; -res[252] = /line\nbreak/i; -res[253] = /line\nbreak/im; -res[254] = /ab.cd/i; -res[255] = /ab.cd/i; -res[256] = /a(b)c/i; -res[257] = /Inthisnexttest,Jisnotsetattheouterlevel;consequentlyitisn'tsetinthepattern'soptions;consequentlypcre_get_named_substring()producesarandomvalue./i; -res[258] = /\777/i; -res[259] = /\s*,\s*/i; -res[260] = /^abc/im; -res[261] = /abc$/im; -res[262] = /^abc/im; -res[263] = /^abc/im; -res[264] = /^abc/im; -res[265] = /^abc/im; -res[266] = /abc/i; -res[267] = /.*/i; -res[268] = /\w+(.)(.)?def/i; -res[269] = /()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(.(.))/i; -res[270] = /()[ab]xyz/i; -res[271] = /(|)[ab]xyz/i; -res[272] = /(|c)[ab]xyz/i; -res[273] = /(|c?)[ab]xyz/i; -res[274] = /(d?|c?)[ab]xyz/i; -res[275] = /(d?|c)[ab]xyz/i; -res[276] = /^a*b\d/; -res[277] = /^a*?b\d/; -res[278] = /^a+A\d/; -res[279] = /^a*A\d/i; -res[280] = /(a*|b*)[cd]/i; -res[281] = /(a+|b*)[cd]/i; -res[282] = /(a*|b+)[cd]/i; -res[283] = /(a+|b+)[cd]/i; -res[284] = /(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/i; -res[285] = /a*\d/; -res[286] = /a*\D/; -res[287] = /0*\d/; -res[288] = /0*\D/; -res[289] = /a*\s/; -res[290] = /a*\S/; -res[291] = / *\s/; -res[292] = / *\S/; -res[293] = /a*\w/; -res[294] = /a*\W/; -res[295] = /=*\w/; -res[296] = /=*\W/; -res[297] = /\d*a/; -res[298] = /\d*2/; -res[299] = /\d*\d/; -res[300] = /\d*\D/; -res[301] = /\d*\s/; -res[302] = /\d*\S/; -res[303] = /\d*\w/; -res[304] = /\d*\W/; -res[305] = /\D*a/; -res[306] = /\D*2/; -res[307] = /\D*\d/; -res[308] = /\D*\D/; -res[309] = /\D*\s/; -res[310] = /\D*\S/; -res[311] = /\D*\w/; -res[312] = /\D*\W/; -res[313] = /\s*a/; -res[314] = /\s*2/; -res[315] = /\s*\d/; -res[316] = /\s*\D/; -res[317] = /\s*\s/; -res[318] = /\s*\S/; -res[319] = /\s*\w/; -res[320] = /\s*\W/; -res[321] = /\S*a/; -res[322] = /\S*2/; -res[323] = /\S*\d/; -res[324] = /\S*\D/; -res[325] = /\S*\s/; -res[326] = /\S*\S/; -res[327] = /\S*\w/; -res[328] = /\S*\W/; -res[329] = /\w*a/; -res[330] = /\w*2/; -res[331] = /\w*\d/; -res[332] = /\w*\D/; -res[333] = /\w*\s/; -res[334] = /\w*\S/; -res[335] = /\w*\w/; -res[336] = /\w*\W/; -res[337] = /\W*a/; -res[338] = /\W*2/; -res[339] = /\W*\d/; -res[340] = /\W*\D/; -res[341] = /\W*\s/; -res[342] = /\W*\S/; -res[343] = /\W*\w/; -res[344] = /\W*\W/; -res[345] = /[^a]+a/; -res[346] = /[^a]+a/i; -res[347] = /[^a]+A/i; -res[348] = /[^a]+b/; -res[349] = /[^a]+\d/; -res[350] = /a*[^a]/; -res[351] = /^(?:(?:\1|X)(a|b))+/; -res[352] = /^[\E\Qa\E-\Qz\E]+/; -res[353] = /^[a\Q]bc\E]/; -res[354] = /(?=(\w+))\1:/i; -res[355] = /(a|)*\d/; -res[356] = /^a.b/; -res[357] = /^abc./mg; -res[358] = /abc.$/mg; -res[359] = /a/; -res[360] = /a/; -res[361] = /^a\Rb/i; -res[362] = /^a\R*b/i; -res[363] = /^a\R+b/i; -res[364] = /^a\R{1,3}b/i; -res[365] = /^a[\R]b/i; -res[366] = /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/; -res[367] = /^(a)\g-2/; -res[368] = /^(a)\g/; -res[369] = /^(a)\g{0}/; -res[370] = /^(a)\g{3/; -res[371] = /^(a)\g{4a}/; -res[372] = /^a.b/; -res[373] = /.+foo/; -res[374] = /.+foo/; -res[375] = /.+foo/; -res[376] = /.+foo/; -res[377] = /^$/mg; -res[378] = /abc.$/mg; -res[379] = /^X/m; -res[380] = /(foo)\Kbar/; -res[381] = /(foo)(\Kbar|baz)/; -res[382] = /(foo\Kbar)baz/; -res[383] = /\g{A/; -res[384] = /\H\h\V\v/; -res[385] = /\H*\h+\V?\v{3,4}/; -res[386] = /\H{3,4}/; -res[387] = /.\h{3,4}./; -res[388] = /\h*X\h?\H+Y\H?Z/; -res[389] = /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/; -res[390] = /[\h]/; -res[391] = /[\h]+/; -res[392] = /[\v]/; -res[393] = /[\H]/; -res[394] = /[^\h]/; -res[395] = /[\V]/; -res[396] = /[\x0a\V]/; -res[397] = /\H+\hY/; -res[398] = /\H+ Y/; -res[399] = /\h+A/; -res[400] = /\v*B/; -res[401] = /\V+\x0a/; -res[402] = /A+\h/; -res[403] = / *\H/; -res[404] = /A*\v/; -res[405] = /\x0b*\V/; -res[406] = /\d+\h/; -res[407] = /\d*\v/; -res[408] = /S+\h\S+\v/; -res[409] = /\w{3,}\h\w+\v/; -res[410] = /\h+\d\h+\w\h+\S\h+\H/; -res[411] = /\v+\d\v+\w\v+\S\v+\V/; -res[412] = /\H+\h\H+\d/; -res[413] = /\V+\v\V+\w/; -res[414] = /[\E]AAA/; -res[415] = /[\Q\E]AAA/; -res[416] = /[^\E]AAA/; -res[417] = /[^\Q\E]AAA/; -res[418] = /[\E^]AAA/; -res[419] = /[\Q\E^]AAA/; -res[420] = /\g6666666666/; -res[421] = /[\g6666666666]/; -res[422] = /.+A/; -res[423] = /\nA/; -res[424] = /[\r\n]A/; -res[425] = /(\r|\n)A/; -res[426] = /a\Rb/i; -res[427] = /a\Rb/i; -res[428] = /a\R?b/i; -res[429] = /a\R?b/i; -res[430] = /a\R{2,4}b/i; -res[431] = /a\R{2,4}b/i; -res[432] = /\k''/; -res[433] = /\k<>/; -res[434] = /\k{}/; -res[435] = /[[:foo:]]/; -res[436] = /[[:1234:]]/; -res[437] = /[[:f\oo:]]/; -res[438] = /[[: :]]/; -res[439] = /[[:...:]]/; -res[440] = /[[:l\ower:]]/; -res[441] = /[[:abc\:]]/; -res[442] = /[abc[:x\]pqr:]]/; -res[443] = /[[:a\dz:]]/; -res[444] = /^(a|b\g<1>c)/; -res[445] = /^(a|b\g'1'c)/; -res[446] = /^(a|b\g'-1'c)/; -res[447] = /(^(a|b\g<-1>c))/; -res[448] = /(^(a|b\g<-1'c))/; -res[449] = /(^(a|b\g{-1}))/; -res[450] = /(\3)(\1)(a)/; -res[451] = /(\3)(\1)(a)/; -res[452] = /TA]/; -res[453] = /TA]/; -res[454] = /a[]b/; -res[455] = /a[^]b/; -res[456] = /a[]b/; -res[457] = /a[]+b/; -res[458] = /a[^]b/; -res[459] = /a[^]+b/; -res[460] = /a(?!)+b/; -res[461] = /(abc|pqr|123){0}[xyz]/i; -res[462] = / End of testinput2 /; -res[463] = /a.b/; -res[464] = /a(.{3})b/; -res[465] = /a(.*?)(.)/; -res[466] = /a(.*?)(.)/; -res[467] = /a(.*)(.)/; -res[468] = /a(.*)(.)/; -res[469] = /a(.)(.)/; -res[470] = /a(.)(.)/; -res[471] = /a(.?)(.)/; -res[472] = /a(.?)(.)/; -res[473] = /a(.??)(.)/; -res[474] = /a(.??)(.)/; -res[475] = /a(.{3})b/; -res[476] = /a(.{3,})b/; -res[477] = /a(.{3,}?)b/; -res[478] = /a(.{3,5})b/; -res[479] = /a(.{3,5}?)b/; -res[480] = /X(\C{3})/; -res[481] = /X(\C{4})/; -res[482] = /X\C*/; -res[483] = /X\C*?/; -res[484] = /X\C{3,5}/; -res[485] = /X\C{3,5}?/; -res[486] = /[^a]+/g; -res[487] = /^[^a]{2}/; -res[488] = /^[^a]{2,}/; -res[489] = /^[^a]{2,}?/; -res[490] = /[^a]+/ig; -res[491] = /^[^a]{2}/i; -res[492] = /^[^a]{2,}/i; -res[493] = /^[^a]{2,}?/i; -res[494] = /\D*/; -res[495] = /\D*/; -res[496] = /\D/; -res[497] = />\S/; -res[498] = /\d/; -res[499] = /\s/; -res[500] = /\D+/; -res[501] = /\D{2,3}/; -res[502] = /\D{2,3}?/; -res[503] = /\d+/; -res[504] = /\d{2,3}/; -res[505] = /\d{2,3}?/; -res[506] = /\S+/; -res[507] = /\S{2,3}/; -res[508] = /\S{2,3}?/; -res[509] = />\s+\s{2,3}\s{2,3}?@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*"))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\)|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")*<(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*,(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*)*:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*"))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*>)(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*/; -res[861] = /[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*(?:(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*)*<[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*(?:,[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*)*:[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*>)/; -res[862] = /abc\x0def\x00pqr\x000xyz\x0000AB/; -res[863] = /^[\000-\037]/; -res[864] = /\0*/; -res[865] = /A\x0{2,3}Z/; -res[866] = /^\s/; -res[867] = /^abc/; -res[868] = /ab{1,3}bc/; -res[869] = /([^.]*)\.([^:]*):[T ]+(.*)/; -res[870] = /([^.]*)\.([^:]*):[T ]+(.*)/i; -res[871] = /([^.]*)\.([^:]*):[t ]+(.*)/i; -res[872] = /^[W-c]+$/; -res[873] = /^[W-c]+$/i; -res[874] = /^[\x3f-\x5F]+$/i; -res[875] = /^abc$/m; -res[876] = /^abc$/; -res[877] = /\Aabc\Z/m; -res[878] = /\A(.)*\Z/; -res[879] = /\A(.)*\Z/m; -res[880] = /(?:b)|(?::+)/; -res[881] = /[-az]+/; -res[882] = /[az-]+/; -res[883] = /[a\-z]+/; -res[884] = /[a-z]+/; -res[885] = /[\d-]+/; -res[886] = /[\d-z]+/; -res[887] = /\x5c/; -res[888] = /\x20Z/; -res[889] = /ab{3cd/; -res[890] = /ab{3,cd/; -res[891] = /ab{3,4a}cd/; -res[892] = /{4,5a}bc/; -res[893] = /^a.b/; -res[894] = /abc$/; -res[895] = /(abc)\123/; -res[896] = /(abc)\223/; -res[897] = /(abc)\323/; -res[898] = /(abc)\100/; -res[899] = /abc\81/; -res[900] = /abc\91/; -res[901] = /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/; -res[902] = /ab\idef/; -res[903] = /a{0}bc/; -res[904] = /(a|(bc)){0,0}?xyz/; -res[905] = /abc[\10]de/; -res[906] = /abc[\1]de/; -res[907] = /(abc)[\1]de/; -res[908] = /^([^a])([^\b])([^c]*)([^d]{3,4})/; -res[909] = /[^a]/; -res[910] = /[^a]/i; -res[911] = /[^a]+/; -res[912] = /[^a]+/i; -res[913] = /[^a]+/; -res[914] = /[^k]$/; -res[915] = /[^k]{2,3}$/; -res[916] = /^\d{8,}\@.+[^k]$/; -res[917] = /[^a]/; -res[918] = /[^a]/i; -res[919] = /[^az]/; -res[920] = /[^az]/i; -res[921] = /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/; -res[922] = /P[^*]TAIRE[^*]{1,6}?LL/; -res[923] = /P[^*]TAIRE[^*]{1,}?LL/; -res[924] = /(\.\d\d[1-9]?)\d+/; -res[925] = /(\.\d\d((?=0)|\d(?=\d)))/; -res[926] = /\b(foo)\s+(\w+)/i; -res[927] = /foo(.*)bar/; -res[928] = /foo(.*?)bar/; -res[929] = /(.*)(\d*)/; -res[930] = /(.*)(\d+)/; -res[931] = /(.*?)(\d*)/; -res[932] = /(.*?)(\d+)/; -res[933] = /(.*)(\d+)$/; -res[934] = /(.*?)(\d+)$/; -res[935] = /(.*)\b(\d+)$/; -res[936] = /(.*\D)(\d+)$/; -res[937] = /^\D*(?!123)/; -res[938] = /^(\D*)(?=\d)(?!123)/; -res[939] = /^[W-]46]/; -res[940] = /^[W-\]46]/; -res[941] = /\d\d\/\d\d\/\d\d\d\d/; -res[942] = /word (?:[a-zA-Z0-9]+ ){0,10}otherword/; -res[943] = /word (?:[a-zA-Z0-9]+ ){0,300}otherword/; -res[944] = /^(a){0,0}/; -res[945] = /^(a){0,1}/; -res[946] = /^(a){0,2}/; -res[947] = /^(a){0,3}/; -res[948] = /^(a){0,}/; -res[949] = /^(a){1,1}/; -res[950] = /^(a){1,2}/; -res[951] = /^(a){1,3}/; -res[952] = /^(a){1,}/; -res[953] = /.*\.gif/; -res[954] = /.{0,}\.gif/; -res[955] = /.*\.gif/m; -res[956] = /.*\.gif/; -res[957] = /.*\.gif/m; -res[958] = /.*$/; -res[959] = /.*$/m; -res[960] = /.*$/; -res[961] = /.*$/m; -res[962] = /.*$/; -res[963] = /.*$/m; -res[964] = /.*$/; -res[965] = /.*$/m; -res[966] = /(.*X|^B)/; -res[967] = /(.*X|^B)/m; -res[968] = /(.*X|^B)/; -res[969] = /(.*X|^B)/m; -res[970] = /^.*B/; -res[971] = /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/; -res[972] = /^\d\d\d\d\d\d\d\d\d\d\d\d/; -res[973] = /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/; -res[974] = /^[abc]{12}/; -res[975] = /^[a-c]{12}/; -res[976] = /^(a|b|c){12}/; -res[977] = /^[abcdefghijklmnopqrstuvwxy0123456789]/; -res[978] = /abcde{0,0}/; -res[979] = /ab[cd]{0,0}e/; -res[980] = /ab(c){0,0}d/; -res[981] = /a(b*)/; -res[982] = /ab\d{0}e/; -res[983] = /"([^\\"]+|\\.)*"/; -res[984] = /.*?/g; -res[985] = /\b/g; -res[986] = /\b/g; -res[987] = /]{0,})>]{0,})>([\d]{0,}\.)(.*)((
([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/i; -res[988] = /a[^a]b/; -res[989] = /a.b/; -res[990] = /a[^a]b/; -res[991] = /a.b/; -res[992] = /^(b+?|a){1,2}?c/; -res[993] = /^(b+|a){1,2}?c/; -res[994] = /(?!\A)x/m; -res[995] = /\x0{ab}/; -res[996] = /(A|B)*?CD/; -res[997] = /(A|B)*CD/; -res[998] = /\Aabc\z/m; -res[999] = /(\d+)(\w)/; -res[1000] = /(a+|b+|c+)*c/; -res[1001] = /(abc|)+/; -res[1002] = /([a]*)*/; -res[1003] = /([ab]*)*/; -res[1004] = /([^a]*)*/; -res[1005] = /([^ab]*)*/; -res[1006] = /([a]*?)*/; -res[1007] = /([ab]*?)*/; -res[1008] = /([^a]*?)*/; -res[1009] = /([^ab]*?)*/; -res[1010] = /The following tests are taken from the Perl 5.005 test suite; some of them/; -res[1011] = /are compatible with 5.004, but I'd rather not have to sort them out./; -res[1012] = /abc/; -res[1013] = /ab*c/; -res[1014] = /ab*bc/; -res[1015] = /.{1}/; -res[1016] = /.{3,4}/; -res[1017] = /ab{0,}bc/; -res[1018] = /ab+bc/; -res[1019] = /ab{1,}bc/; -res[1020] = /ab+bc/; -res[1021] = /ab{1,}bc/; -res[1022] = /ab{1,3}bc/; -res[1023] = /ab{3,4}bc/; -res[1024] = /ab{4,5}bc/; -res[1025] = /ab?bc/; -res[1026] = /ab{0,1}bc/; -res[1027] = /ab?bc/; -res[1028] = /ab?c/; -res[1029] = /ab{0,1}c/; -res[1030] = /^abc$/; -res[1031] = /^abc/; -res[1032] = /^abc$/; -res[1033] = /abc$/; -res[1034] = /^/; -res[1035] = /$/; -res[1036] = /a.c/; -res[1037] = /a.*c/; -res[1038] = /a[bc]d/; -res[1039] = /a[b-d]e/; -res[1040] = /a[b-d]/; -res[1041] = /a[-b]/; -res[1042] = /a[b-]/; -res[1043] = /a]/; -res[1044] = /a[]]b/; -res[1045] = /a[^bc]d/; -res[1046] = /a[^-b]c/; -res[1047] = /a[^]b]c/; -res[1048] = /\ba\b/; -res[1049] = /\by\b/; -res[1050] = /\Ba\B/; -res[1051] = /\By\b/; -res[1052] = /\by\B/; -res[1053] = /\By\B/; -res[1054] = /\w/; -res[1055] = /\W/; -res[1056] = /a\sb/; -res[1057] = /a\Sb/; -res[1058] = /\d/; -res[1059] = /\D/; -res[1060] = /[\w]/; -res[1061] = /[\W]/; -res[1062] = /a[\s]b/; -res[1063] = /a[\S]b/; -res[1064] = /[\d]/; -res[1065] = /[\D]/; -res[1066] = /ab|cd/; -res[1067] = /()ef/; -res[1068] = /$b/; -res[1069] = /a\(b/; -res[1070] = /a\\b/; -res[1071] = /((a))/; -res[1072] = /(a)b(c)/; -res[1073] = /a+b+c/; -res[1074] = /a{1,}b{1,}c/; -res[1075] = /a.+?c/; -res[1076] = /(a+|b)*/; -res[1077] = /(a+|b){0,}/; -res[1078] = /(a+|b)+/; -res[1079] = /(a+|b){1,}/; -res[1080] = /(a+|b)?/; -res[1081] = /(a+|b){0,1}/; -res[1082] = /[^ab]*/; -res[1083] = /abc/; -res[1084] = /a*/; -res[1085] = /([abc])*d/; -res[1086] = /([abc])*bcd/; -res[1087] = /a|b|c|d|e/; -res[1088] = /(a|b|c|d|e)f/; -res[1089] = /abcd*efg/; -res[1090] = /ab*/; -res[1091] = /(ab|cd)e/; -res[1092] = /[abhgefdc]ij/; -res[1093] = /^(ab|cd)e/; -res[1094] = /(abc|)ef/; -res[1095] = /(a|b)c*d/; -res[1096] = /(ab|ab*)bc/; -res[1097] = /a([bc]*)c*/; -res[1098] = /a([bc]*)(c*d)/; -res[1099] = /a([bc]+)(c*d)/; -res[1100] = /a([bc]*)(c+d)/; -res[1101] = /a[bcd]*dcdcde/; -res[1102] = /a[bcd]+dcdcde/; -res[1103] = /(ab|a)b*c/; -res[1104] = /((a)(b)c)(d)/; -res[1105] = /[a-zA-Z_][a-zA-Z0-9_]*/; -res[1106] = /^a(bc+|b[eh])g|.h$/; -res[1107] = /(bc+d$|ef*g.|h?i(j|k))/; -res[1108] = /((((((((((a))))))))))/; -res[1109] = /(((((((((a)))))))))/; -res[1110] = /multiple words of text/; -res[1111] = /multiple words/; -res[1112] = /(.*)c(.*)/; -res[1113] = /\((.*), (.*)\)/; -res[1114] = /[k]/; -res[1115] = /abcd/; -res[1116] = /a(bc)d/; -res[1117] = /a[-]?c/; -res[1118] = /abc/i; -res[1119] = /ab*c/i; -res[1120] = /ab*bc/i; -res[1121] = /ab*?bc/i; -res[1122] = /ab{0,}?bc/i; -res[1123] = /ab+?bc/i; -res[1124] = /ab+bc/i; -res[1125] = /ab{1,}bc/i; -res[1126] = /ab+bc/i; -res[1127] = /ab{1,}?bc/i; -res[1128] = /ab{1,3}?bc/i; -res[1129] = /ab{3,4}?bc/i; -res[1130] = /ab{4,5}?bc/i; -res[1131] = /ab??bc/i; -res[1132] = /ab{0,1}?bc/i; -res[1133] = /ab??bc/i; -res[1134] = /ab??c/i; -res[1135] = /ab{0,1}?c/i; -res[1136] = /^abc$/i; -res[1137] = /^abc/i; -res[1138] = /^abc$/i; -res[1139] = /abc$/i; -res[1140] = /^/i; -res[1141] = /$/i; -res[1142] = /a.c/i; -res[1143] = /a.*?c/i; -res[1144] = /a.*c/i; -res[1145] = /a[bc]d/i; -res[1146] = /a[b-d]e/i; -res[1147] = /a[b-d]/i; -res[1148] = /a[-b]/i; -res[1149] = /a[b-]/i; -res[1150] = /a]/i; -res[1151] = /a[]]b/i; -res[1152] = /a[^bc]d/i; -res[1153] = /a[^-b]c/i; -res[1154] = /a[^]b]c/i; -res[1155] = /ab|cd/i; -res[1156] = /()ef/i; -res[1157] = /$b/i; -res[1158] = /a\(b/i; -res[1159] = /a\\b/i; -res[1160] = /((a))/i; -res[1161] = /(a)b(c)/i; -res[1162] = /a+b+c/i; -res[1163] = /a{1,}b{1,}c/i; -res[1164] = /a.+?c/i; -res[1165] = /a.*?c/i; -res[1166] = /a.{0,5}?c/i; -res[1167] = /(a+|b)*/i; -res[1168] = /(a+|b){0,}/i; -res[1169] = /(a+|b)+/i; -res[1170] = /(a+|b){1,}/i; -res[1171] = /(a+|b)?/i; -res[1172] = /(a+|b){0,1}/i; -res[1173] = /(a+|b){0,1}?/i; -res[1174] = /[^ab]*/i; -res[1175] = /abc/i; -res[1176] = /a*/i; -res[1177] = /([abc])*d/i; -res[1178] = /([abc])*bcd/i; -res[1179] = /a|b|c|d|e/i; -res[1180] = /(a|b|c|d|e)f/i; -res[1181] = /abcd*efg/i; -res[1182] = /ab*/i; -res[1183] = /(ab|cd)e/i; -res[1184] = /[abhgefdc]ij/i; -res[1185] = /^(ab|cd)e/i; -res[1186] = /(abc|)ef/i; -res[1187] = /(a|b)c*d/i; -res[1188] = /(ab|ab*)bc/i; -res[1189] = /a([bc]*)c*/i; -res[1190] = /a([bc]*)(c*d)/i; -res[1191] = /a([bc]+)(c*d)/i; -res[1192] = /a([bc]*)(c+d)/i; -res[1193] = /a[bcd]*dcdcde/i; -res[1194] = /a[bcd]+dcdcde/i; -res[1195] = /(ab|a)b*c/i; -res[1196] = /((a)(b)c)(d)/i; -res[1197] = /[a-zA-Z_][a-zA-Z0-9_]*/i; -res[1198] = /^a(bc+|b[eh])g|.h$/i; -res[1199] = /(bc+d$|ef*g.|h?i(j|k))/i; -res[1200] = /((((((((((a))))))))))/i; -res[1201] = /(((((((((a)))))))))/i; -res[1202] = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i; -res[1203] = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i; -res[1204] = /multiple words of text/i; -res[1205] = /multiple words/i; -res[1206] = /(.*)c(.*)/i; -res[1207] = /\((.*), (.*)\)/i; -res[1208] = /[k]/i; -res[1209] = /abcd/i; -res[1210] = /a(bc)d/i; -res[1211] = /a[-]?c/i; -res[1212] = /a(?!b)./; -res[1213] = /a(?=d)./; -res[1214] = /a(?=c|d)./; -res[1215] = /a(?:b|c|d)(.)/; -res[1216] = /a(?:b|c|d)*(.)/; -res[1217] = /a(?:b|c|d)+?(.)/; -res[1218] = /a(?:b|c|d)+(.)/; -res[1219] = /a(?:b|c|d){2}(.)/; -res[1220] = /a(?:b|c|d){4,5}(.)/; -res[1221] = /a(?:b|c|d){4,5}?(.)/; -res[1222] = /((foo)|(bar))*/; -res[1223] = /a(?:b|c|d){6,7}(.)/; -res[1224] = /a(?:b|c|d){6,7}?(.)/; -res[1225] = /a(?:b|c|d){5,6}(.)/; -res[1226] = /a(?:b|c|d){5,6}?(.)/; -res[1227] = /a(?:b|c|d){5,7}(.)/; -res[1228] = /a(?:b|c|d){5,7}?(.)/; -res[1229] = /a(?:b|(c|e){1,2}?|d)+?(.)/; -res[1230] = /^(.+)?B/; -res[1231] = /^([^a-z])|(\^)$/; -res[1232] = /^[<>]&/; -res[1233] = /(?:(f)(o)(o)|(b)(a)(r))*/; -res[1234] = /(?:..)*a/; -res[1235] = /(?:..)*?a/; -res[1236] = /^(){3,5}/; -res[1237] = /^(a+)*ax/; -res[1238] = /^((a|b)+)*ax/; -res[1239] = /^((a|bc)+)*ax/; -res[1240] = /(a|x)*ab/; -res[1241] = /(a)*ab/; -res[1242] = /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/; -res[1243] = /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/; -res[1244] = /foo\w*\d{4}baz/; -res[1245] = /x(~~)*(?:(?:F)?)?/; -res[1246] = /^a{3}c/; -res[1247] = /^a{3}c/; -res[1248] = /^(?:a?b?)*$/; -res[1249] = /^b/; -res[1250] = /()^b/; -res[1251] = /(\w+:)+/; -res[1252] = /([\w:]+::)?(\w+)$/; -res[1253] = /^[^bcd]*(c+)/; -res[1254] = /(a*)b+/; -res[1255] = /([\w:]+::)?(\w+)$/; -res[1256] = /^[^bcd]*(c+)/; -res[1257] = /(>a+)ab/; -res[1258] = /([[:]+)/; -res[1259] = /([[=]+)/; -res[1260] = /([[.]+)/; -res[1261] = /a\Z/; -res[1262] = /b\Z/; -res[1263] = /b\z/; -res[1264] = /b\Z/; -res[1265] = /b\z/; -res[1266] = /((Z)+|A)*/; -res[1267] = /(Z()|A)*/; -res[1268] = /(Z(())|A)*/; -res[1269] = /a*/g; -res[1270] = /^[\d-a]/; -res[1271] = /[[:space:]]+/; -res[1272] = /[[:blank:]]+/; -res[1273] = /[\s]+/; -res[1274] = /\s+/; -res[1275] = /a b/; -res[1276] = /(?!\A)x/m; -res[1277] = /(?!^)x/m; -res[1278] = /abc\Qabc\Eabc/; -res[1279] = /abc\Qabc\Eabc/; -res[1280] = /abc\Qliteral\E/; -res[1281] = /abc\Qliteral/; -res[1282] = /abc\Qliteral\E/; -res[1283] = /abc\Qliteral\E/; -res[1284] = /\Qabc\$xyz\E/; -res[1285] = /\Qabc\E\$\Qxyz\E/; -res[1286] = /\Gabc/; -res[1287] = /\Gabc./g; -res[1288] = /abc./g; -res[1289] = /[z\Qa-d]\E]/; -res[1290] = /[\z\C]/; -res[1291] = /\M/; -res[1292] = /(a+)*b/; -res[1293] = /line\nbreak/; -res[1294] = /line\nbreak/; -res[1295] = /line\nbreak/m; -res[1296] = /1234/; -res[1297] = /1234/; -res[1298] = /^/mg; -res[1299] = /Content-Type\x3A[^\r\n]{6,}/; -res[1300] = /Content-Type\x3A[^\r\n]{6,}z/; -res[1301] = /Content-Type\x3A[^a]{6,}/; -res[1302] = /Content-Type\x3A[^a]{6,}z/; -res[1303] = /^abc/m; -res[1304] = /abc$/m; -res[1305] = /^abc/m; -res[1306] = /^abc/m; -res[1307] = /^abc/m; -res[1308] = /.*/; -res[1309] = /\w+(.)(.)?def/; -res[1310] = /^\w+=.*(\\\n.*)*/; -res[1311] = /^(a()*)*/; -res[1312] = /^(?:a(?:(?:))*)*/; -res[1313] = /^(a()+)+/; -res[1314] = /^(?:a(?:(?:))+)+/; -res[1315] = /(a|)*\d/; -res[1316] = /(?:a|)*\d/; -res[1317] = /^a.b/; -res[1318] = /^abc./mg; -res[1319] = /abc.$/mg; -res[1320] = /^a\Rb/i; -res[1321] = /^a\R*b/i; -res[1322] = /^a\R+b/i; -res[1323] = /^a\R{1,3}b/i; -res[1324] = /^a[\R]b/i; -res[1325] = /.+foo/; -res[1326] = /.+foo/; -res[1327] = /.+foo/; -res[1328] = /.+foo/; -res[1329] = /^$/mg; -res[1330] = /^X/m; -res[1331] = /\H\h\V\v/; -res[1332] = /\H*\h+\V?\v{3,4}/; -res[1333] = /\H{3,4}/; -res[1334] = /.\h{3,4}./; -res[1335] = /\h*X\h?\H+Y\H?Z/; -res[1336] = /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/; -res[1337] = /.+A/; -res[1338] = /\nA/; -res[1339] = /[\r\n]A/; -res[1340] = /(\r|\n)A/; -res[1341] = /a\Rb/i; -res[1342] = /a\Rb/i; -res[1343] = /a\R?b/i; -res[1344] = /a\R?b/i; -res[1345] = /a\R{2,4}b/i; -res[1346] = /a\R{2,4}b/i; -res[1347] = /a(?!)|\wbc/; -res[1348] = /a[]b/; -res[1349] = /a[]+b/; -res[1350] = /a[^]b/; -res[1351] = /a[^]+b/; -res[1352] = / End of testinput7 /; -res[1353] = /\bX/; -res[1354] = /\BX/; -res[1355] = /X\b/; -res[1356] = /X\B/; -res[1357] = /[^a]/; -res[1358] = /abc/; -res[1359] = /a.b/; -res[1360] = /a(.{3})b/; -res[1361] = /a(.*?)(.)/; -res[1362] = /a(.*?)(.)/; -res[1363] = /a(.*)(.)/; -res[1364] = /a(.*)(.)/; -res[1365] = /a(.)(.)/; -res[1366] = /a(.)(.)/; -res[1367] = /a(.?)(.)/; -res[1368] = /a(.?)(.)/; -res[1369] = /a(.??)(.)/; -res[1370] = /a(.??)(.)/; -res[1371] = /a(.{3})b/; -res[1372] = /a(.{3,})b/; -res[1373] = /a(.{3,}?)b/; -res[1374] = /a(.{3,5})b/; -res[1375] = /a(.{3,5}?)b/; -res[1376] = /[^a]+/g; -res[1377] = /^[^a]{2}/; -res[1378] = /^[^a]{2,}/; -res[1379] = /^[^a]{2,}?/; -res[1380] = /[^a]+/ig; -res[1381] = /^[^a]{2}/i; -res[1382] = /^[^a]{2,}/i; -res[1383] = /^[^a]{2,}?/i; -res[1384] = /\D*/; -res[1385] = /\D*/; -res[1386] = /\D/; -res[1387] = />\S/; -res[1388] = /\d/; -res[1389] = /\s/; -res[1390] = /\D+/; -res[1391] = /\D{2,3}/; -res[1392] = /\D{2,3}?/; -res[1393] = /\d+/; -res[1394] = /\d{2,3}/; -res[1395] = /\d{2,3}?/; -res[1396] = /\S+/; -res[1397] = /\S{2,3}/; -res[1398] = /\S{2,3}?/; -res[1399] = />\s+\s{2,3}\s{2,3}?ghi", res[36].exec("abcghinop"), 71); -assertToStringEquals("", res[37].exec("abcghinop"), 72); -assertToStringEquals("", res[37].exec("abcghinop"), 73); -assertNull(res[37].exec("abc========def", 74)); -assertNull(res[37].exec("foo", 75)); -assertNull(res[37].exec("catfoo", 76)); -assertNull(res[37].exec("*** Failers", 77)); -assertNull(res[37].exec("the barfoo", 78)); -assertNull(res[37].exec("and cattlefoo", 79)); -assertToStringEquals("a", res[40].exec("a"), 80); -assertNull(res[40].exec("a\n", 81)); -assertNull(res[40].exec("*** Failers", 82)); -assertToStringEquals("a", res[40].exec("Za"), 83); -assertNull(res[40].exec("Za\n", 84)); -assertToStringEquals("a", res[41].exec("a"), 85); -assertToStringEquals("a", res[41].exec("a\n"), 86); -assertToStringEquals("a", res[41].exec("Za\n"), 87); -assertNull(res[41].exec("*** Failers", 88)); -assertToStringEquals("a", res[41].exec("Za"), 89); -assertToStringEquals("b", res[44].exec("foo\nbarbar"), 90); -assertToStringEquals("a", res[44].exec("***Failers"), 91); -assertToStringEquals("b", res[44].exec("rhubarb"), 92); -assertToStringEquals("b", res[44].exec("barbell"), 93); -assertToStringEquals("a", res[44].exec("abc\nbarton"), 94); -assertToStringEquals("b", res[44].exec("foo\nbarbar"), 95); -assertToStringEquals("a", res[44].exec("***Failers"), 96); -assertToStringEquals("b", res[44].exec("rhubarb"), 97); -assertToStringEquals("b", res[44].exec("barbell"), 98); -assertToStringEquals("a", res[44].exec("abc\nbarton"), 99); -assertToStringEquals("a", res[44].exec("abc"), 100); -assertToStringEquals("a", res[44].exec("def\nabc"), 101); -assertToStringEquals("a", res[44].exec("*** Failers"), 102); -assertToStringEquals("a", res[44].exec("defabc"), 103); -assertNull(res[45].exec("the bullock-cart", 104)); -assertNull(res[45].exec("a donkey-cart race", 105)); -assertNull(res[45].exec("*** Failers", 106)); -assertNull(res[45].exec("cart", 107)); -assertNull(res[45].exec("horse-and-cart", 108)); -assertNull(res[45].exec("alphabetabcd", 109)); -assertNull(res[45].exec("endingxyz", 110)); -assertNull(res[45].exec("abxyZZ", 111)); -assertNull(res[45].exec("abXyZZ", 112)); -assertNull(res[45].exec("ZZZ", 113)); -assertNull(res[45].exec("zZZ", 114)); -assertNull(res[45].exec("bZZ", 115)); -assertNull(res[45].exec("BZZ", 116)); -assertNull(res[45].exec("*** Failers", 117)); -assertNull(res[45].exec("ZZ", 118)); -assertNull(res[45].exec("abXYZZ", 119)); -assertNull(res[45].exec("zzz", 120)); -assertNull(res[45].exec("bzz", 121)); -assertNull(res[45].exec("bar", 122)); -assertNull(res[45].exec("foobbar", 123)); -assertNull(res[45].exec("*** Failers", 124)); -assertNull(res[45].exec("fooabar", 125)); -assertNull(res[46].exec("*** Failers", 126)); -assertNull(res[46].exec("a", 127)); -assertNull(res[48].exec("aaaaaa", 128)); -assertThrows("var re = /a[b-a]/;"); -assertThrows("var re = /a[/;"); -assertThrows("var re = /*a/;"); -assertThrows("var re = /abc)/;"); -assertThrows("var re = /(abc/;"); -assertThrows("var re = /a**/;"); -assertThrows("var re = /)(/;"); -assertThrows("var re = /a[b-a]/;"); -assertThrows("var re = /a[/;"); -assertThrows("var re = /*a/;"); -assertThrows("var re = /abc)/;"); -assertThrows("var re = /(abc/;"); -assertThrows("var re = /a**/;"); -assertThrows("var re = /)(/;"); -assertThrows("var re = /:(?:/;"); -assertThrows("var re = /a(?{)b/;"); -assertThrows("var re = /a(?{{})b/;"); -assertThrows("var re = /a(?{}})b/;"); -assertThrows("var re = /a(?{\"{\"})b/;"); -assertThrows("var re = /a(?{\"{\"}})b/;"); -assertThrows("var re = /[a[:xyz:/;"); -assertThrows("var re = /a{37,17}/;"); -assertToStringEquals("abcd,a,d", res[58].exec("abcd"), 151); -assertToStringEquals("abcd,a,d", res[58].exec("abcdC2"), 152); -assertToStringEquals("abcd,a,d", res[58].exec("abcdC5"), 153); -assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyz"), 154); -assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzC1"), 155); -assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzG1"), 156); -assertToStringEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyz"), 157); -assertToStringEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyzC1G1"), 158); -assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyz"), 159); -assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyzC1G1L"), 160); -assertToStringEquals("adef,a,,f", res[62].exec("adefG1G2G3G4L"), 161); -assertToStringEquals("bcdef,bc,bc,f", res[62].exec("bcdefG1G2G3G4L"), 162); -assertToStringEquals("adef,a,,f", res[62].exec("adefghijkC0"), 163); -assertToStringEquals("abc\x00def", res[63].exec("abc\x00defLC0"), 164); -assertToStringEquals("iss", res[69].exec("Mississippi"), 165); -assertToStringEquals("iss", res[70].exec("Mississippi"), 166); -assertToStringEquals("iss", res[71].exec("Mississippi"), 167); -assertToStringEquals("iss", res[72].exec("Mississippi"), 168); -assertToStringEquals("iss", res[73].exec("Mississippi"), 169); -assertNull(res[73].exec("*** Failers", 170)); -assertToStringEquals("iss", res[73].exec("MississippiA"), 171); -assertToStringEquals("iss", res[73].exec("Mississippi"), 172); -assertNull(res[73].exec("Mississippi", 173)); -assertToStringEquals("iss", res[74].exec("ississippi"), 174); -assertToStringEquals("abciss", res[75].exec("abciss\nxyzisspqr"), 175); -assertToStringEquals("Mis", res[76].exec("Mississippi"), 176); -assertToStringEquals("sis", res[76].exec("MississippiA"), 177); -assertToStringEquals("ri ", res[76].exec("Missouri river"), 178); -assertToStringEquals("riv", res[76].exec("Missouri riverA"), 179); -assertToStringEquals("Mis", res[77].exec("Mississippi"), 180); -assertToStringEquals("ab\n", res[78].exec("ab\nab\ncd"), 181); -assertToStringEquals("ab\n", res[79].exec("ab\nab\ncd"), 182); -assertToStringEquals("a", res[115].exec("a"), 183); -assertToStringEquals("b", res[115].exec("b"), 184); -assertToStringEquals("ab", res[115].exec("ab"), 185); -assertToStringEquals("", res[115].exec("\\"), 186); -assertToStringEquals("", res[115].exec("*** Failers"), 187); -assertToStringEquals("", res[115].exec("N"), 188); -assertToStringEquals("", res[116].exec("abcd"), 189); -assertToStringEquals("", res[116].exec("-abc"), 190); -assertToStringEquals("", res[116].exec("Nab-c"), 191); -assertToStringEquals("", res[116].exec("*** Failers"), 192); -assertToStringEquals("", res[116].exec("Nabc"), 193); -assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzz"), 194); -assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO0"), 195); -assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO1"), 196); -assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO2"), 197); -assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO3"), 198); -assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO4"), 199); -assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO5"), 200); -assertToStringEquals("(abcd", res[118].exec("(abcd)"), 201); -assertToStringEquals("(abcd", res[118].exec("(abcd)xyz"), 202); -assertNull(res[118].exec("xyz(abcd)", 203)); -assertNull(res[118].exec("(ab(xy)cd)pqr", 204)); -assertNull(res[118].exec("(ab(xycd)pqr", 205)); -assertNull(res[118].exec("() abc ()", 206)); -assertNull(res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 207)); -assertNull(res[118].exec("*** Failers", 208)); -assertToStringEquals("abcd", res[118].exec("abcd"), 209); -assertToStringEquals("abcd", res[118].exec("abcd)"), 210); -assertToStringEquals("(abcd", res[118].exec("(abcd"), 211); -assertNull(res[118].exec("(ab(xy)cd)pqr", 212)); -assertNull(res[118].exec("1(abcd)(x(y)z)pqr", 213)); -assertToStringEquals("(abcd", res[118].exec("(abcd)"), 214); -assertNull(res[118].exec("(ab(xy)cd)", 215)); -assertNull(res[118].exec("(a(b(c)d)e)", 216)); -assertNull(res[118].exec("((ab))", 217)); -assertNull(res[118].exec("*** Failers", 218)); -assertNull(res[118].exec("()", 219)); -assertNull(res[118].exec("()", 220)); -assertNull(res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 221)); -assertNull(res[118].exec("(ab(xy)cd)", 222)); -assertNull(res[118].exec("(ab(xy)cd)", 223)); -assertNull(res[118].exec("(ab(xy)cd)", 224)); -assertNull(res[118].exec("(123ab(xy)cd)", 225)); -assertNull(res[118].exec("(ab(xy)cd)", 226)); -assertNull(res[118].exec("(123ab(xy)cd)", 227)); -assertNull(res[118].exec("(ab(xy)cd)", 228)); -assertToStringEquals("(abcd", res[118].exec("(abcd(xyz

qrs)123)"), 229); -assertNull(res[118].exec("(ab(cd)ef)", 230)); -assertNull(res[118].exec("(ab(cd(ef)gh)ij)", 231)); -assertNull(res[146].exec("A", 232)); -assertNull(res[146].exec("a", 233)); -assertNull(res[147].exec("A", 234)); -assertNull(res[147].exec("a", 235)); -assertNull(res[147].exec("ab", 236)); -assertNull(res[147].exec("aB", 237)); -assertNull(res[147].exec("*** Failers", 238)); -assertNull(res[147].exec("Ab", 239)); -assertNull(res[147].exec("AB", 240)); -assertThrows("var re = /[\\200-\\110]/;"); -assertToStringEquals("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 ,73 ,74 ,75 ,76 ,77 ,78 ,79 ,80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 ,96 ,97 ,98 ,99 ,100 ,101 ,102 ,103 ,104 ,105 ,106 ,107 ,108 ,109 ,110 ,111 ,112 ,113 ,114 ,115 ,116 ,117 ,118 ,119 ,120 ,121 ,122 ,123 ,124 ,125 ,126 ,127 ,128 ,129 ,130 ,131 ,132 ,133 ,134 ,135 ,136 ,137 ,138 ,139 ,140 ,141 ,142 ,143 ,144 ,145 ,146 ,147 ,148 ,149 ,150 ,151 ,152 ,153 ,154 ,155 ,156 ,157 ,158 ,159 ,160 ,161 ,162 ,163 ,164 ,165 ,166 ,167 ,168 ,169 ,170 ,171 ,172 ,173 ,174 ,175 ,176 ,177 ,178 ,179 ,180 ,181 ,182 ,183 ,184 ,185 ,186 ,187 ,188 ,189 ,190 ,191 ,192 ,193 ,194 ,195 ,196 ,197 ,198 ,199 ,200 ,201 ,202 ,203 ,204 ,205 ,206 ,207 ,208 ,209 ,210 ,211 ,212 ,213 ,214 ,215 ,216 ,217 ,218 ,219 ,220 ,221 ,222 ,223 ,224 ,225 ,226 ,227 ,228 ,229 ,230 ,231 ,232 ,233 ,234 ,235 ,236 ,237 ,238 ,239 ,240 ,241 ,242 ,243 ,244 ,245 ,246 ,247 ,248 ,249 ,250 ,251 ,252 ,253 ,254 ,255 ,256 ,257 ,258 ,259 ,260 ,261 ,262 ,263 ,264 ,265 ,266 ,267 ,268 ,269 ,ABC,ABC", res[149].exec("O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC"), 242); -assertToStringEquals("mainmain,main,", res[151].exec("mainmain"), 243); -assertToStringEquals("mainOmain,main,", res[151].exec("mainOmain"), 244); -assertToStringEquals("aba,a,", res[153].exec("aba"), 245); -assertToStringEquals("aabbaa,aa,", res[154].exec("aabbaa"), 246); -assertToStringEquals("aabbaa,aa,", res[155].exec("aabbaa"), 247); -assertToStringEquals("aabbaa,aa,", res[156].exec("aabbaa"), 248); -assertToStringEquals("aabbaa,", res[157].exec("aabbaa"), 249); -assertToStringEquals("aabbaa,aa,,", res[158].exec("aabbaa"), 250); -assertToStringEquals("aabbaa,,", res[159].exec("aabbaa"), 251); -assertToStringEquals("aabbaa,", res[160].exec("aabbaa"), 252); -assertToStringEquals("aabbbaa,", res[161].exec("aabbbaa"), 253); -assertToStringEquals("aabbbaa,", res[162].exec("aabbbaa"), 254); -assertToStringEquals("aabbaa,", res[163].exec("aabbaa"), 255); -assertToStringEquals("aabbbaa,", res[164].exec("aabbbaa"), 256); -assertToStringEquals("aabbbaa,aa,,", res[165].exec("aabbbaa"), 257); -assertToStringEquals("aabbbbaa,aa,,", res[166].exec("aabbbbaa"), 258); -assertThrows("var re = //;"); -assertToStringEquals("a", res[169].exec("ab"), 260); -assertToStringEquals("a", res[169].exec("aB"), 261); -assertToStringEquals("*", res[169].exec("*** Failers"), 262); -assertToStringEquals("A", res[169].exec("AB"), 263); -assertToStringEquals("a", res[169].exec("ab"), 264); -assertToStringEquals("a", res[169].exec("aB"), 265); -assertToStringEquals("*", res[169].exec("*** Failers"), 266); -assertToStringEquals("A", res[169].exec("AB"), 267); -assertNull(res[172].exec("\\", 268)); -assertNull(res[177].exec("*** Failers", 269)); -assertNull(res[177].exec("xxxxx", 270)); -assertNull(res[177].exec("now is the time for all good men to come to the aid of the party", 271)); -assertNull(res[177].exec("*** Failers", 272)); -assertNull(res[177].exec("this is not a line with only words and spaces!", 273)); -assertNull(res[177].exec("12345a", 274)); -assertNull(res[177].exec("*** Failers", 275)); -assertNull(res[177].exec("12345+", 276)); -assertNull(res[177].exec("aaab", 277)); -assertNull(res[177].exec("aaab", 278)); -assertNull(res[177].exec("aaab", 279)); -assertNull(res[177].exec("((abc(ade)ufh()()x", 280)); -assertNull(res[177].exec("(abc)", 281)); -assertNull(res[177].exec("(abc(def)xyz)", 282)); -assertNull(res[177].exec("*** Failers", 283)); -assertNull(res[177].exec("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 284)); -assertNull(res[177].exec("xaaaab", 285)); -assertNull(res[177].exec("xaaaab", 286)); -assertThrows("var re = /[/;"); -assertThrows("var re = /[a-/;"); -assertNull(res[189].exec("<>", 289)); -assertNull(res[189].exec("", 290)); -assertNull(res[189].exec(" hij>", 291)); -assertNull(res[189].exec(" hij>", 292)); -assertNull(res[189].exec("def>", 293)); -assertNull(res[189].exec("", 294)); -assertNull(res[189].exec("*** Failers", 295)); -assertNull(res[189].exec("", 355)); -assertToStringEquals("abc", res[215].exec(""), 356); -assertToStringEquals("abc", res[215].exec(" hij>"), 357); -assertToStringEquals("abc", res[215].exec(" hij>"), 358); -assertToStringEquals("abc", res[215].exec("def>"), 359); -assertToStringEquals("abc", res[215].exec(""), 360); -assertNull(res[215].exec("*** Failers", 361)); -assertToStringEquals("abc", res[215].exec("\n\n\nPartner der LCO\nde\nPartner der LINEAS Consulting\nGmbH\nLINEAS Consulting GmbH Hamburg\nPartnerfirmen\n30 days\nindex,follow\n\nja\n3\nPartner\n\n\nLCO\nLINEAS Consulting\n15.10.2003\n\n\n\n\nDie Partnerfirmen der LINEAS Consulting\nGmbH\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", 448)); -assertToStringEquals("line\nbreak", res[251].exec("this is a line\nbreak"), 449); -assertToStringEquals("line\nbreak", res[251].exec("line one\nthis is a line\nbreak in the second line"), 450); -assertToStringEquals("line\nbreak", res[252].exec("this is a line\nbreak"), 451); -assertNull(res[252].exec("** Failers", 452)); -assertToStringEquals("line\nbreak", res[252].exec("line one\nthis is a line\nbreak in the second line"), 453); -assertToStringEquals("line\nbreak", res[253].exec("this is a line\nbreak"), 454); -assertNull(res[253].exec("** Failers", 455)); -assertToStringEquals("line\nbreak", res[253].exec("line one\nthis is a line\nbreak in the second line"), 456); -assertToStringEquals("ab-cd", res[254].exec("ab-cd"), 457); -assertToStringEquals("ab=cd", res[254].exec("ab=cd"), 458); -assertNull(res[254].exec("** Failers", 459)); -assertNull(res[254].exec("ab\ncd", 460)); -assertToStringEquals("ab-cd", res[255].exec("ab-cd"), 461); -assertToStringEquals("ab=cd", res[255].exec("ab=cd"), 462); -assertNull(res[255].exec("ab\ncd", 463)); -assertNull(res[255].exec("AbCd", 464)); -assertNull(res[255].exec("** Failers", 465)); -assertNull(res[255].exec("abcd", 466)); -// We are compatible with JSC, and don't throw an exception in this case. -// assertThrows("var re = /(){2,4294967295}/;"); -assertNull(res[255].exec("abcdefghijklAkB", 468)); -assertNull(res[255].exec("abcdefghijklAkB", 469)); -assertNull(res[255].exec("abcdefghijklAkB", 470)); -assertNull(res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 471)); -assertNull(res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 472)); -assertNull(res[255].exec("(this(and)that", 473)); -assertNull(res[255].exec("(this(and)that)", 474)); -assertNull(res[255].exec("(this(and)that)stuff", 475)); -assertNull(res[255].exec("(this(and)that", 476)); -assertNull(res[255].exec("(this(and)that)", 477)); -assertNull(res[255].exec("(this(and)that", 478)); -assertNull(res[255].exec("(this(and)that)", 479)); -assertNull(res[255].exec("(this(and)that", 480)); -assertNull(res[255].exec("(this(and)that)", 481)); -assertNull(res[255].exec("((this))", 482)); -assertNull(res[255].exec("(this(and)that", 483)); -assertNull(res[255].exec("(this(and)that)", 484)); -assertNull(res[255].exec("(this)", 485)); -assertNull(res[255].exec("((this))", 486)); -assertToStringEquals("abc,b", res[256].exec("abc"), 487); -assertToStringEquals("abc,b", res[256].exec("abc"), 488); -assertNull(res[256].exec("a1bCA", 489)); -assertNull(res[256].exec("a2bCA", 490)); -assertNull(res[257].exec("a bc dCACBCC", 491)); -assertNull(res[257].exec("aabc", 492)); -assertNull(res[257].exec("bc", 493)); -assertNull(res[257].exec("** Failers", 494)); -assertNull(res[257].exec("abc", 495)); -assertNull(res[257].exec("bXaX", 496)); -assertNull(res[257].exec("bbXaaX", 497)); -assertNull(res[257].exec("(b)\\Xa\\X", 498)); -assertNull(res[257].exec("bXXaYYaY", 499)); -assertNull(res[257].exec("bXYaXXaX", 500)); -assertNull(res[257].exec("bXXaYYaY", 501)); -assertToStringEquals("\x0b,\x0b", res[259].exec("\x0b,\x0b"), 502); -assertToStringEquals("\x0c,\x0d", res[259].exec("\x0c,\x0d"), 503); -assertToStringEquals("abc", res[260].exec("xyz\nabc"), 504); -assertToStringEquals("abc", res[260].exec("xyz\nabc"), 505); -assertToStringEquals("abc", res[260].exec("xyz\x0d\nabc"), 506); -assertToStringEquals("abc", res[260].exec("xyz\x0dabc"), 507); -assertToStringEquals("abc", res[260].exec("xyz\x0d\nabc"), 508); -assertNull(res[260].exec("** Failers", 509)); -assertToStringEquals("abc", res[260].exec("xyz\nabc"), 510); -assertToStringEquals("abc", res[260].exec("xyz\x0d\nabc"), 511); -assertToStringEquals("abc", res[260].exec("xyz\nabc"), 512); -assertToStringEquals("abc", res[260].exec("xyz\x0dabc"), 513); -assertToStringEquals("abc", res[260].exec("xyz\x0dabc"), 514); -assertToStringEquals("abc", res[261].exec("xyzabc"), 515); -assertToStringEquals("abc", res[261].exec("xyzabc\n"), 516); -assertToStringEquals("abc", res[261].exec("xyzabc\npqr"), 517); -assertToStringEquals("abc", res[261].exec("xyzabc\x0d"), 518); -assertToStringEquals("abc", res[261].exec("xyzabc\x0dpqr"), 519); -assertToStringEquals("abc", res[261].exec("xyzabc\x0d\n"), 520); -assertToStringEquals("abc", res[261].exec("xyzabc\x0d\npqr"), 521); -assertNull(res[261].exec("** Failers", 522)); -assertToStringEquals("abc", res[261].exec("xyzabc\x0d"), 523); -assertToStringEquals("abc", res[261].exec("xyzabc\x0dpqr"), 524); -assertToStringEquals("abc", res[261].exec("xyzabc\x0d\n"), 525); -assertToStringEquals("abc", res[261].exec("xyzabc\x0d\npqr"), 526); -assertToStringEquals("abc", res[262].exec("xyz\x0dabcdef"), 527); -assertToStringEquals("abc", res[262].exec("xyz\nabcdef"), 528); -assertNull(res[262].exec("** Failers", 529)); -assertToStringEquals("abc", res[262].exec("xyz\nabcdef"), 530); -assertToStringEquals("abc", res[263].exec("xyz\nabcdef"), 531); -assertToStringEquals("abc", res[263].exec("xyz\x0dabcdef"), 532); -assertNull(res[263].exec("** Failers", 533)); -assertToStringEquals("abc", res[263].exec("xyz\x0dabcdef"), 534); -assertToStringEquals("abc", res[264].exec("xyz\x0d\nabcdef"), 535); -assertToStringEquals("abc", res[264].exec("xyz\x0dabcdef"), 536); -assertNull(res[264].exec("** Failers", 537)); -assertToStringEquals("abc", res[264].exec("xyz\x0dabcdef"), 538); -assertToStringEquals("abc", res[266].exec("xyz\x0dabc"), 539); -assertToStringEquals("abc", res[266].exec("abc"), 540); -assertToStringEquals("abc", res[267].exec("abc\ndef"), 541); -assertToStringEquals("abc", res[267].exec("abc\x0ddef"), 542); -assertToStringEquals("abc", res[267].exec("abc\x0d\ndef"), 543); -assertToStringEquals("abc", res[267].exec("abc\ndef"), 544); -assertToStringEquals("abc", res[267].exec("abc\x0ddef"), 545); -assertToStringEquals("abc", res[267].exec("abc\x0d\ndef"), 546); -assertToStringEquals("abc", res[267].exec("abc\ndef"), 547); -assertToStringEquals("abc", res[267].exec("abc\x0ddef"), 548); -assertToStringEquals("abc", res[267].exec("abc\x0d\ndef"), 549); -assertNull(res[268].exec("abc\ndef", 550)); -assertNull(res[268].exec("abc\x0ddef", 551)); -assertNull(res[268].exec("abc\x0d\ndef", 552)); -assertToStringEquals("XY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XY,Y", res[269].exec("XYO400"), 553); -assertToStringEquals("aaaA5", res[278].exec("aaaA5"), 554); -assertNull(res[278].exec("** Failers", 555)); -assertNull(res[278].exec("aaaa5", 556)); -assertToStringEquals("aaaA5", res[279].exec("aaaA5"), 557); -assertToStringEquals("aaaa5", res[279].exec("aaaa5"), 558); -assertToStringEquals("x", res[350].exec("xyCabcCxyz"), 559); -assertToStringEquals("x", res[350].exec("xyCabcCxyz"), 560); -assertToStringEquals("b", res[350].exec("bXaX"), 561); -assertToStringEquals("b", res[350].exec("bXbX"), 562); -assertToStringEquals("*", res[350].exec("** Failers"), 563); -assertToStringEquals("aX", res[350].exec("aXaX"), 564); -assertToStringEquals("aX", res[350].exec("aXbX"), 565); -assertToStringEquals("x", res[350].exec("xx"), 566); -assertToStringEquals("x", res[350].exec("xy"), 567); -assertToStringEquals("y", res[350].exec("yy"), 568); -assertToStringEquals("y", res[350].exec("yx"), 569); -assertToStringEquals("x", res[350].exec("xx"), 570); -assertToStringEquals("x", res[350].exec("xy"), 571); -assertToStringEquals("y", res[350].exec("yy"), 572); -assertToStringEquals("y", res[350].exec("yx"), 573); -assertToStringEquals("b", res[350].exec("bxay"), 574); -assertToStringEquals("b", res[350].exec("bxby"), 575); -assertToStringEquals("*", res[350].exec("** Failers"), 576); -assertToStringEquals("ax", res[350].exec("axby"), 577); -assertToStringEquals("X", res[350].exec("XxXxxx"), 578); -assertToStringEquals("X", res[350].exec("XxXyyx"), 579); -assertToStringEquals("X", res[350].exec("XxXyxx"), 580); -assertToStringEquals("*", res[350].exec("** Failers"), 581); -assertToStringEquals("x", res[350].exec("x"), 582); -assertToStringEquals("ab", res[350].exec("abcabc"), 583); -assertToStringEquals("Xaaa,a", res[351].exec("Xaaa"), 584); -assertToStringEquals("Xaba,a", res[351].exec("Xaba"), 585); -assertThrows("var re = /^[a-\\Q\\E]/;"); -assertNull(res[353].exec("(xy)x", 587)); -assertNull(res[353].exec("1221", 588)); -assertNull(res[353].exec("Satan, oscillate my metallic sonatas!", 589)); -assertNull(res[353].exec("A man, a plan, a canal: Panama!", 590)); -assertNull(res[353].exec("Able was I ere I saw Elba.", 591)); -assertNull(res[353].exec("*** Failers", 592)); -assertNull(res[353].exec("The quick brown fox", 593)); -assertToStringEquals("abcd:,abcd", res[354].exec("abcd:"), 594); -assertToStringEquals("abcd:,abcd", res[354].exec("abcd:"), 595); -assertToStringEquals("a:,a", res[354].exec("a:aaxyz"), 596); -assertToStringEquals("ab:,ab", res[354].exec("ab:ababxyz"), 597); -assertNull(res[354].exec("** Failers", 598)); -assertToStringEquals("a:,a", res[354].exec("a:axyz"), 599); -assertToStringEquals("ab:,ab", res[354].exec("ab:abxyz"), 600); -assertNull(res[354].exec("abd", 601)); -assertNull(res[354].exec("ce", 602)); -assertNull(res[354].exec("abcabc1Xabc2XabcXabcabc", 603)); -assertNull(res[354].exec("abcabc1Xabc2XabcXabcabc", 604)); -assertNull(res[354].exec("abcabc1Xabc2XabcXabcabc", 605)); -assertNull(res[354].exec("abcd", 606)); -assertNull(res[354].exec("metcalfe 33", 607)); -assertNull(res[356].exec("a\x0db", 608)); -assertNull(res[356].exec("a\nb", 609)); -assertToStringEquals("a\x85b", res[356].exec("a\x85b "), 610); -assertNull(res[356].exec("** Failers", 611)); -assertNull(res[356].exec("a\nb", 612)); -assertNull(res[356].exec("a\nb", 613)); -assertNull(res[356].exec("a\x0db", 614)); -assertNull(res[356].exec("a\x0db", 615)); -assertToStringEquals("a\x85b", res[356].exec("a\x85b "), 616); -assertNull(res[356].exec("a\x0db", 617)); -assertToStringEquals("abc1", res[357].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 618); -assertToStringEquals("abc1", res[358].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc7 abc9"), 619); -assertNull(res[361].exec("a\nb", 620)); -assertNull(res[361].exec("a\x0db", 621)); -assertNull(res[361].exec("a\x0d\nb", 622)); -assertNull(res[361].exec("a\x0bb", 623)); -assertNull(res[361].exec("a\x0cb", 624)); -assertNull(res[361].exec("a\x85b", 625)); -assertNull(res[361].exec("** Failers", 626)); -assertNull(res[361].exec("a\n\x0db", 627)); -assertToStringEquals("ab", res[362].exec("ab"), 628); -assertNull(res[362].exec("a\nb", 629)); -assertNull(res[362].exec("a\x0db", 630)); -assertNull(res[362].exec("a\x0d\nb", 631)); -assertNull(res[362].exec("a\x0bb", 632)); -assertNull(res[362].exec("a\x0cb", 633)); -assertNull(res[362].exec("a\x85b", 634)); -assertNull(res[362].exec("a\n\x0db", 635)); -assertNull(res[362].exec("a\n\x0d\x85\x0cb", 636)); -assertNull(res[363].exec("a\nb", 637)); -assertNull(res[363].exec("a\x0db", 638)); -assertNull(res[363].exec("a\x0d\nb", 639)); -assertNull(res[363].exec("a\x0bb", 640)); -assertNull(res[363].exec("a\x0cb", 641)); -assertNull(res[363].exec("a\x85b", 642)); -assertNull(res[363].exec("a\n\x0db", 643)); -assertNull(res[363].exec("a\n\x0d\x85\x0cb", 644)); -assertNull(res[363].exec("** Failers", 645)); -assertNull(res[363].exec("ab", 646)); -assertNull(res[364].exec("a\nb", 647)); -assertNull(res[364].exec("a\n\x0db", 648)); -assertNull(res[364].exec("a\n\x0d\x85b", 649)); -assertNull(res[364].exec("a\x0d\n\x0d\nb", 650)); -assertNull(res[364].exec("a\x0d\n\x0d\n\x0d\nb", 651)); -assertNull(res[364].exec("a\n\x0d\n\x0db", 652)); -assertNull(res[364].exec("a\n\n\x0d\nb", 653)); -assertNull(res[364].exec("** Failers", 654)); -assertNull(res[364].exec("a\n\n\n\x0db", 655)); -assertNull(res[364].exec("a\x0d", 656)); -assertToStringEquals("aRb", res[365].exec("aRb"), 657); -assertNull(res[365].exec("** Failers", 658)); -assertNull(res[365].exec("a\nb", 659)); -assertNull(res[365].exec("abcPXP123", 660)); -assertNull(res[365].exec("abcPXP123", 661)); -assertNull(res[365].exec("1.2.3.4", 662)); -assertNull(res[365].exec("131.111.10.206", 663)); -assertNull(res[365].exec("10.0.0.0", 664)); -assertNull(res[365].exec("** Failers", 665)); -assertNull(res[365].exec("10.6", 666)); -assertNull(res[365].exec("455.3.4.5", 667)); -assertNull(res[365].exec("1.2.3.4", 668)); -assertNull(res[365].exec("131.111.10.206", 669)); -assertNull(res[365].exec("10.0.0.0", 670)); -assertNull(res[365].exec("** Failers", 671)); -assertNull(res[365].exec("10.6", 672)); -assertNull(res[365].exec("455.3.4.5", 673)); -assertNull(res[365].exec("123axbaxbaxbx456", 674)); -assertNull(res[365].exec("123axbaxbaxb456", 675)); -assertNull(res[365].exec("123axbaxbaxbx456", 676)); -assertNull(res[365].exec("123axbaxbaxbx456", 677)); -assertNull(res[365].exec("123axbaxbaxbx456", 678)); -assertNull(res[366].exec("ababababbbabZXXXX", 679)); -assertNull(res[372].exec("a\x0db", 680)); -assertNull(res[372].exec("*** Failers", 681)); -assertNull(res[372].exec("a\nb", 682)); -assertToStringEquals("afoo", res[373].exec("afoo"), 683); -assertNull(res[373].exec("** Failers", 684)); -assertNull(res[373].exec("\x0d\nfoo", 685)); -assertNull(res[373].exec("\nfoo", 686)); -assertToStringEquals("afoo", res[374].exec("afoo"), 687); -assertNull(res[374].exec("\nfoo", 688)); -assertNull(res[374].exec("** Failers", 689)); -assertNull(res[374].exec("\x0d\nfoo", 690)); -assertToStringEquals("afoo", res[375].exec("afoo"), 691); -assertNull(res[375].exec("** Failers", 692)); -assertNull(res[375].exec("\nfoo", 693)); -assertNull(res[375].exec("\x0d\nfoo", 694)); -assertToStringEquals("afoo", res[376].exec("afoo"), 695); -assertNull(res[376].exec("\x0d\nfoo", 696)); -assertNull(res[376].exec("\nfoo", 697)); -assertToStringEquals("", res[377].exec("abc\x0d\x0dxyz"), 698); -assertToStringEquals("", res[377].exec("abc\n\x0dxyz "), 699); -assertNull(res[377].exec("** Failers ", 700)); -assertToStringEquals("", res[377].exec("abc\x0d\nxyz"), 701); -assertToStringEquals("", res[377].exec("abc\x0d\n\x0d\n"), 702); -assertToStringEquals("", res[377].exec("abc\x0d\n\x0d\n"), 703); -assertToStringEquals("", res[377].exec("abc\x0d\n\x0d\n"), 704); -assertToStringEquals("abc1", res[378].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 705); -assertToStringEquals("X", res[379].exec("XABC"), 706); -assertNull(res[379].exec("** Failers ", 707)); -assertToStringEquals("X", res[379].exec("XABCB"), 708); -assertThrows("var re = /(ab|c)(?-1)/;"); -assertNull(res[379].exec("abc", 710)); -assertNull(res[379].exec("xyabcabc", 711)); -assertNull(res[379].exec("** Failers", 712)); -assertNull(res[379].exec("xyabc ", 713)); -assertThrows("var re = /x(?-0)y/;"); -assertThrows("var re = /x(?-1)y/;"); -assertNull(res[379].exec("abcX", 716)); -assertNull(res[379].exec("Y", 717)); -assertNull(res[379].exec("** Failers", 718)); -assertNull(res[379].exec("abcY ", 719)); -assertNull(res[379].exec("YabcXabc", 720)); -assertNull(res[379].exec("YabcXabcXabc", 721)); -assertNull(res[379].exec("** Failers", 722)); -assertToStringEquals("X", res[379].exec("XabcXabc "), 723); -assertNull(res[379].exec("Y!", 724)); -assertNull(res[380].exec("foobar", 725)); -assertNull(res[381].exec("foobar", 726)); -assertToStringEquals("foobaz,foo,baz", res[381].exec("foobaz "), 727); -assertNull(res[382].exec("foobarbaz", 728)); -assertNull(res[382].exec("tom-tom", 729)); -assertNull(res[382].exec("bon-bon ", 730)); -assertNull(res[382].exec("** Failers", 731)); -assertNull(res[382].exec("tom-bon ", 732)); -assertNull(res[382].exec("tom-tom", 733)); -assertNull(res[382].exec("bon-bon ", 734)); -assertThrows("var re = /(?|(abc)|(xyz))/;"); -assertThrows("var re = /(x)(?|(abc)|(xyz))(x)/;"); -assertNull(res[383].exec("xabcx", 737)); -assertNull(res[383].exec("xxyzx ", 738)); -assertThrows("var re = /(x)(?|(abc)(pqr)|(xyz))(x)/;"); -assertNull(res[383].exec("xabcpqrx", 740)); -assertNull(res[383].exec("xxyzx ", 741)); -assertThrows("var re = /(?|(abc)|(xyz))\\1/;"); -assertNull(res[383].exec("abcabc", 743)); -assertNull(res[383].exec("xyzxyz ", 744)); -assertNull(res[383].exec("** Failers", 745)); -assertNull(res[383].exec("abcxyz", 746)); -assertNull(res[383].exec("xyzabc ", 747)); -assertNull(res[383].exec("abcabc", 748)); -assertNull(res[383].exec("xyzabc ", 749)); -assertNull(res[383].exec("** Failers ", 750)); -assertNull(res[383].exec("xyzxyz ", 751)); -assertNull(res[384].exec("X X\n", 752)); -assertNull(res[384].exec("X\x09X\x0b", 753)); -assertNull(res[384].exec("** Failers", 754)); -assertNull(res[384].exec("\xa0 X\n ", 755)); -assertNull(res[385].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 756)); -assertNull(res[385].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 757)); -assertNull(res[385].exec("\x09 \xa0\n\x0b\x0c", 758)); -assertNull(res[385].exec("** Failers ", 759)); -assertNull(res[385].exec("\x09 \xa0\n\x0b", 760)); -assertNull(res[385].exec(" ", 761)); -assertNull(res[386].exec("XY ABCDE", 762)); -assertNull(res[386].exec("XY PQR ST ", 763)); -assertNull(res[387].exec("XY AB PQRS", 764)); -assertNull(res[388].exec(">XNNNYZ", 765)); -assertNull(res[388].exec("> X NYQZ", 766)); -assertNull(res[388].exec("** Failers", 767)); -assertNull(res[388].exec(">XYZ ", 768)); -assertNull(res[388].exec("> X NY Z", 769)); -assertNull(res[389].exec(">XY\nZ\nA\x0bNN\x0c", 770)); -assertNull(res[389].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 771)); -assertNull(res[390].exec(">\x09<", 772)); -assertNull(res[391].exec(">\x09 \xa0<", 773)); -assertNull(res[396].exec("** Failers", 774)); -assertNull(res[396].exec("XXXX", 775)); -assertNull(res[397].exec("XXXX Y ", 776)); -assertNull(res[419].exec("aaaaaa", 777)); -assertNull(res[419].exec("aaabccc", 778)); -assertNull(res[419].exec("aaabccc", 779)); -assertNull(res[419].exec("aaabccc", 780)); -assertNull(res[419].exec("aaabcccaaabccc", 781)); -assertNull(res[419].exec("aaaxxxxxx", 782)); -assertNull(res[419].exec("aaa++++++ ", 783)); -assertNull(res[419].exec("bbbxxxxx", 784)); -assertNull(res[419].exec("bbb+++++ ", 785)); -assertNull(res[419].exec("cccxxxx", 786)); -assertNull(res[419].exec("ccc++++ ", 787)); -assertNull(res[419].exec("dddddddd ", 788)); -assertNull(res[419].exec("aaaxxxxxx", 789)); -assertNull(res[419].exec("aaa++++++ ", 790)); -assertNull(res[419].exec("bbbxxxxx", 791)); -assertNull(res[419].exec("bbb+++++ ", 792)); -assertNull(res[419].exec("cccxxxx", 793)); -assertNull(res[419].exec("ccc++++ ", 794)); -assertNull(res[419].exec("dddddddd ", 795)); -assertNull(res[419].exec("aaabccc", 796)); -assertNull(res[419].exec("ABX", 797)); -assertNull(res[419].exec("AADE", 798)); -assertNull(res[419].exec("ACDE", 799)); -assertNull(res[419].exec("** Failers", 800)); -assertNull(res[419].exec("AD ", 801)); -assertNull(res[419].exec(" ", 802)); -assertNull(res[419].exec("aaaaaa", 803)); -assertNull(res[419].exec("aaabccc", 804)); -assertNull(res[419].exec("aaabccc", 805)); -assertNull(res[419].exec("aaabccc", 806)); -assertNull(res[419].exec("aaabcccaaabccc", 807)); -assertNull(res[419].exec("aaabccc", 808)); -assertNull(res[422].exec("\x0d\nA", 809)); -assertToStringEquals("\nA", res[423].exec("\x0d\nA "), 810); -assertToStringEquals("\nA", res[424].exec("\x0d\nA "), 811); -assertToStringEquals("\nA,\n", res[425].exec("\x0d\nA "), 812); -assertNull(res[425].exec("a\nb", 813)); -assertNull(res[425].exec("** Failers", 814)); -assertNull(res[425].exec("a\x0db ", 815)); -assertNull(res[425].exec("a\nb", 816)); -assertNull(res[425].exec("** Failers", 817)); -assertNull(res[425].exec("a\x0db ", 818)); -assertNull(res[425].exec("a\x0db", 819)); -assertNull(res[425].exec("** Failers", 820)); -assertNull(res[425].exec("a\nb ", 821)); -assertNull(res[425].exec("a\x0db", 822)); -assertNull(res[425].exec("a\nb ", 823)); -assertNull(res[425].exec("** Failers", 824)); -assertNull(res[425].exec("a\x0d\nb ", 825)); -assertNull(res[425].exec("** Failers", 826)); -assertNull(res[425].exec("a\x0db", 827)); -assertNull(res[425].exec("a\nb ", 828)); -assertNull(res[425].exec("a\x0d\nb ", 829)); -assertNull(res[425].exec("** Failers", 830)); -assertNull(res[425].exec("a\x0db", 831)); -assertNull(res[425].exec("a\nb ", 832)); -assertNull(res[425].exec("a\x0d\nb ", 833)); -assertNull(res[425].exec("a\x85b ", 834)); -assertNull(res[426].exec("a\x0db", 835)); -assertNull(res[426].exec("a\nb", 836)); -assertNull(res[426].exec("a\x0d\nb", 837)); -assertNull(res[426].exec("** Failers", 838)); -assertNull(res[426].exec("a\x85b", 839)); -assertNull(res[426].exec("a\x0bb ", 840)); -assertNull(res[427].exec("a\x0db", 841)); -assertNull(res[427].exec("a\nb", 842)); -assertNull(res[427].exec("a\x0d\nb", 843)); -assertNull(res[427].exec("a\x85b", 844)); -assertNull(res[427].exec("a\x0bb ", 845)); -assertNull(res[427].exec("** Failers ", 846)); -assertNull(res[427].exec("a\x85b", 847)); -assertNull(res[427].exec("a\x0bb", 848)); -assertNull(res[428].exec("a\x0db", 849)); -assertNull(res[428].exec("a\nb", 850)); -assertNull(res[428].exec("a\x0d\nb", 851)); -assertNull(res[428].exec("** Failers", 852)); -assertNull(res[428].exec("a\x85b", 853)); -assertNull(res[428].exec("a\x0bb ", 854)); -assertNull(res[429].exec("a\x0db", 855)); -assertNull(res[429].exec("a\nb", 856)); -assertNull(res[429].exec("a\x0d\nb", 857)); -assertNull(res[429].exec("a\x85b", 858)); -assertNull(res[429].exec("a\x0bb ", 859)); -assertNull(res[429].exec("** Failers ", 860)); -assertNull(res[429].exec("a\x85b", 861)); -assertNull(res[429].exec("a\x0bb", 862)); -assertNull(res[430].exec("a\x0d\n\nb", 863)); -assertNull(res[430].exec("a\n\x0d\x0db", 864)); -assertNull(res[430].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 865)); -assertNull(res[430].exec("** Failers", 866)); -assertNull(res[430].exec("a\x8585b", 867)); -assertNull(res[430].exec("a\x0b\x00bb ", 868)); -assertNull(res[431].exec("a\x0d\x0db", 869)); -assertNull(res[431].exec("a\n\n\nb", 870)); -assertNull(res[431].exec("a\x0d\n\n\x0d\x0db", 871)); -assertNull(res[431].exec("a\x8585b", 872)); -assertNull(res[431].exec("a\x0b\x00bb ", 873)); -assertNull(res[431].exec("** Failers ", 874)); -assertNull(res[431].exec("a\x0d\x0d\x0d\x0d\x0db ", 875)); -assertNull(res[431].exec("a\x8585b", 876)); -assertNull(res[431].exec("a\x0b\x00bb", 877)); -assertNull(res[431].exec("a\nb", 878)); -assertNull(res[431].exec("a\x0db ", 879)); -assertNull(res[431].exec("a\x85b", 880)); -assertNull(res[431].exec("a\nb", 881)); -assertNull(res[431].exec("a\x0db ", 882)); -assertNull(res[431].exec("a\x85b", 883)); -assertThrows("var re = /(?-+a)/;"); -assertNull(res[443].exec("aaaa", 885)); -assertNull(res[443].exec("bacxxx", 886)); -assertNull(res[443].exec("bbaccxxx ", 887)); -assertNull(res[443].exec("bbbacccxx", 888)); -assertNull(res[443].exec("aaaa", 889)); -assertNull(res[443].exec("bacxxx", 890)); -assertNull(res[443].exec("bbaccxxx ", 891)); -assertNull(res[443].exec("bbbacccxx", 892)); -assertToStringEquals("a,a", res[444].exec("aaaa"), 893); -assertNull(res[444].exec("bacxxx", 894)); -assertNull(res[444].exec("bbaccxxx ", 895)); -assertNull(res[444].exec("bbbacccxx", 896)); -assertToStringEquals("a,a", res[445].exec("aaaa"), 897); -assertNull(res[445].exec("bacxxx", 898)); -assertNull(res[445].exec("bbaccxxx ", 899)); -assertNull(res[445].exec("bbbacccxx", 900)); -assertToStringEquals("a,a", res[446].exec("aaaa"), 901); -assertNull(res[446].exec("bacxxx", 902)); -assertNull(res[446].exec("bbaccxxx ", 903)); -assertNull(res[446].exec("bbbacccxx", 904)); -assertToStringEquals("a,a,a", res[447].exec("aaaa"), 905); -assertNull(res[447].exec("bacxxx", 906)); -assertNull(res[447].exec("bbaccxxx ", 907)); -assertNull(res[447].exec("bbbacccxx", 908)); -assertNull(res[449].exec("bacxxx", 909)); -assertNull(res[449].exec("XaaX", 910)); -assertNull(res[449].exec("XAAX ", 911)); -assertNull(res[449].exec("XaaX", 912)); -assertNull(res[449].exec("** Failers ", 913)); -assertNull(res[449].exec("XAAX ", 914)); -assertNull(res[449].exec("XaaX", 915)); -assertNull(res[449].exec("XAAX ", 916)); -assertNull(res[449].exec("xzxx", 917)); -assertNull(res[449].exec("yzyy ", 918)); -assertNull(res[449].exec("** Failers", 919)); -assertNull(res[449].exec("xxz ", 920)); -assertToStringEquals("a,,,a", res[450].exec("cat"), 921); -assertToStringEquals("a,,,a", res[451].exec("cat"), 922); -assertToStringEquals("TA]", res[452].exec("The ACTA] comes "), 923); -assertToStringEquals("TA]", res[453].exec("The ACTA] comes "), 924); -assertNull(res[453].exec("abcbabc", 925)); -assertNull(res[453].exec("abcbabc", 926)); -assertNull(res[453].exec("abcbabc", 927)); -assertNull(res[453].exec("** Failers ", 928)); -assertNull(res[453].exec("abcXabc", 929)); -assertNull(res[453].exec("abcXabc", 930)); -assertNull(res[453].exec("** Failers ", 931)); -assertNull(res[453].exec("abcbabc", 932)); -assertNull(res[453].exec("xyzbabcxyz", 933)); -assertNull(res[456].exec("** Failers", 934)); -assertNull(res[456].exec("ab", 935)); -assertNull(res[457].exec("** Failers", 936)); -assertNull(res[457].exec("ab ", 937)); -assertNull(res[457].exec("** Failers", 938)); -assertNull(res[457].exec("ab ", 939)); -assertToStringEquals("aXb", res[458].exec("aXb"), 940); -assertToStringEquals("a\nb", res[458].exec("a\nb "), 941); -assertNull(res[458].exec("** Failers", 942)); -assertNull(res[458].exec("ab ", 943)); -assertToStringEquals("aXb", res[459].exec("aXb"), 944); -assertToStringEquals("a\nX\nXb", res[459].exec("a\nX\nXb "), 945); -assertNull(res[459].exec("** Failers", 946)); -assertNull(res[459].exec("ab ", 947)); -assertToStringEquals("acb", res[463].exec("acb"), 948); -assertToStringEquals("ab", res[463].exec("ab"), 949); -assertNull(res[463].exec("ax{100}b ", 950)); -assertNull(res[463].exec("*** Failers", 951)); -assertNull(res[463].exec("a\nb ", 952)); -assertNull(res[464].exec("ax{4000}xyb ", 953)); -assertNull(res[464].exec("ax{4000}yb ", 954)); -assertNull(res[464].exec("ax{4000}x{100}yb ", 955)); -assertNull(res[464].exec("*** Failers", 956)); -assertNull(res[464].exec("ax{4000}b ", 957)); -assertNull(res[464].exec("ac\ncb ", 958)); -assertToStringEquals("a\xc0,,\xc0", res[465].exec("a\xc0\x88b"), 959); -assertToStringEquals("ax,,x", res[466].exec("ax{100}b"), 960); -assertToStringEquals("a\xc0\x88b,\xc0\x88,b", res[467].exec("a\xc0\x88b"), 961); -assertToStringEquals("ax{100}b,x{100},b", res[468].exec("ax{100}b"), 962); -assertToStringEquals("a\xc0\x92,\xc0,\x92", res[469].exec("a\xc0\x92bcd"), 963); -assertToStringEquals("ax{,x,{", res[470].exec("ax{240}bcd"), 964); -assertToStringEquals("a\xc0\x92,\xc0,\x92", res[471].exec("a\xc0\x92bcd"), 965); -assertToStringEquals("ax{,x,{", res[472].exec("ax{240}bcd"), 966); -assertToStringEquals("a\xc0,,\xc0", res[473].exec("a\xc0\x92bcd"), 967); -assertToStringEquals("ax,,x", res[474].exec("ax{240}bcd"), 968); -assertNull(res[475].exec("ax{1234}xyb ", 969)); -assertNull(res[475].exec("ax{1234}x{4321}yb ", 970)); -assertNull(res[475].exec("ax{1234}x{4321}x{3412}b ", 971)); -assertNull(res[475].exec("*** Failers", 972)); -assertNull(res[475].exec("ax{1234}b ", 973)); -assertNull(res[475].exec("ac\ncb ", 974)); -assertToStringEquals("ax{1234}xyb,x{1234}xy", res[476].exec("ax{1234}xyb "), 975); -assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[476].exec("ax{1234}x{4321}yb "), 976); -assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[476].exec("ax{1234}x{4321}x{3412}b "), 977); -assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij", res[476].exec("axxxxbcdefghijb "), 978); -assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[476].exec("ax{1234}x{4321}x{3412}x{3421}b "), 979); -assertNull(res[476].exec("*** Failers", 980)); -assertToStringEquals("ax{1234}b,x{1234}", res[476].exec("ax{1234}b "), 981); -assertToStringEquals("ax{1234}xyb,x{1234}xy", res[477].exec("ax{1234}xyb "), 982); -assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[477].exec("ax{1234}x{4321}yb "), 983); -assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[477].exec("ax{1234}x{4321}x{3412}b "), 984); -assertToStringEquals("axxxxb,xxxx", res[477].exec("axxxxbcdefghijb "), 985); -assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[477].exec("ax{1234}x{4321}x{3412}x{3421}b "), 986); -assertNull(res[477].exec("*** Failers", 987)); -assertToStringEquals("ax{1234}b,x{1234}", res[477].exec("ax{1234}b "), 988); -assertNull(res[478].exec("ax{1234}xyb ", 989)); -assertNull(res[478].exec("ax{1234}x{4321}yb ", 990)); -assertNull(res[478].exec("ax{1234}x{4321}x{3412}b ", 991)); -assertToStringEquals("axxxxb,xxxx", res[478].exec("axxxxbcdefghijb "), 992); -assertNull(res[478].exec("ax{1234}x{4321}x{3412}x{3421}b ", 993)); -assertToStringEquals("axbxxb,xbxx", res[478].exec("axbxxbcdefghijb "), 994); -assertToStringEquals("axxxxxb,xxxxx", res[478].exec("axxxxxbcdefghijb "), 995); -assertNull(res[478].exec("*** Failers", 996)); -assertNull(res[478].exec("ax{1234}b ", 997)); -assertNull(res[478].exec("axxxxxxbcdefghijb ", 998)); -assertNull(res[479].exec("ax{1234}xyb ", 999)); -assertNull(res[479].exec("ax{1234}x{4321}yb ", 1000)); -assertNull(res[479].exec("ax{1234}x{4321}x{3412}b ", 1001)); -assertToStringEquals("axxxxb,xxxx", res[479].exec("axxxxbcdefghijb "), 1002); -assertNull(res[479].exec("ax{1234}x{4321}x{3412}x{3421}b ", 1003)); -assertToStringEquals("axbxxb,xbxx", res[479].exec("axbxxbcdefghijb "), 1004); -assertToStringEquals("axxxxxb,xxxxx", res[479].exec("axxxxxbcdefghijb "), 1005); -assertNull(res[479].exec("*** Failers", 1006)); -assertNull(res[479].exec("ax{1234}b ", 1007)); -assertNull(res[479].exec("axxxxxxbcdefghijb ", 1008)); -assertNull(res[479].exec("*** Failers", 1009)); -assertNull(res[479].exec("x{100}", 1010)); -assertNull(res[479].exec("aXbcd", 1011)); -assertNull(res[479].exec("ax{100}bcd", 1012)); -assertNull(res[479].exec("ax{100000}bcd", 1013)); -assertNull(res[479].exec("x{100}x{100}x{100}b", 1014)); -assertNull(res[479].exec("*** Failers ", 1015)); -assertNull(res[479].exec("x{100}x{100}b", 1016)); -assertNull(res[479].exec("x{ab} ", 1017)); -assertNull(res[479].exec("\xc2\xab", 1018)); -assertNull(res[479].exec("*** Failers ", 1019)); -assertNull(res[479].exec("\x00{ab}", 1020)); -assertNull(res[479].exec("WXYZ", 1021)); -assertNull(res[479].exec("x{256}XYZ ", 1022)); -assertNull(res[479].exec("*** Failers", 1023)); -assertNull(res[479].exec("XYZ ", 1024)); -assertNull(res[480].exec("Xx{1234}", 1025)); -assertNull(res[481].exec("Xx{1234}YZ", 1026)); -assertToStringEquals("X", res[482].exec("XYZabcdce"), 1027); -assertToStringEquals("X", res[483].exec("XYZabcde"), 1028); -assertNull(res[484].exec("Xabcdefg ", 1029)); -assertNull(res[484].exec("Xx{1234} ", 1030)); -assertNull(res[484].exec("Xx{1234}YZ", 1031)); -assertNull(res[484].exec("Xx{1234}x{512} ", 1032)); -assertNull(res[484].exec("Xx{1234}x{512}YZ", 1033)); -assertNull(res[485].exec("Xabcdefg ", 1034)); -assertNull(res[485].exec("Xx{1234} ", 1035)); -assertNull(res[485].exec("Xx{1234}YZ", 1036)); -assertNull(res[485].exec("Xx{1234}x{512} ", 1037)); -assertToStringEquals("bcd", res[486].exec("bcd"), 1038); -assertToStringEquals("00}", res[486].exec("x{100}aYx{256}Z "), 1039); -assertToStringEquals("x{", res[487].exec("x{100}bc"), 1040); -assertToStringEquals("x{100}bcA", res[488].exec("x{100}bcAa"), 1041); -assertToStringEquals("x{", res[489].exec("x{100}bca"), 1042); -assertToStringEquals("bcd", res[490].exec("bcd"), 1043); -assertToStringEquals("00}", res[490].exec("x{100}aYx{256}Z "), 1044); -assertToStringEquals("x{", res[491].exec("x{100}bc"), 1045); -assertToStringEquals("x{100}bc", res[492].exec("x{100}bcAa"), 1046); -assertToStringEquals("x{", res[493].exec("x{100}bca"), 1047); -assertNull(res[493].exec("abcd", 1048)); -assertNull(res[493].exec("abcd", 1049)); -assertToStringEquals("x{", res[493].exec("x{100}x{100} "), 1050); -assertToStringEquals("x{", res[493].exec("x{100}x{100} "), 1051); -assertToStringEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1052); -assertNull(res[493].exec("abce", 1053)); -assertToStringEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1054); -assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1055)); -assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1056)); -assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1057)); -assertNull(res[493].exec("abcdx{100}x{100}x{100}XX", 1058)); -assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1059)); -assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1060)); -assertToStringEquals("Xy", res[493].exec("Xyyyax{100}x{100}bXzzz"), 1061); -assertToStringEquals("X", res[496].exec("1X2"), 1062); -assertToStringEquals("x", res[496].exec("1x{100}2 "), 1063); -assertToStringEquals(">X", res[497].exec("> >X Y"), 1064); -assertToStringEquals(">x", res[497].exec("> >x{100} Y"), 1065); -assertToStringEquals("1", res[498].exec("x{100}3"), 1066); -assertToStringEquals(" ", res[499].exec("x{100} X"), 1067); -assertToStringEquals("abcd", res[500].exec("12abcd34"), 1068); -assertToStringEquals("*** Failers", res[500].exec("*** Failers"), 1069); -assertToStringEquals(" ", res[500].exec("1234 "), 1070); -assertToStringEquals("abc", res[501].exec("12abcd34"), 1071); -assertToStringEquals("ab", res[501].exec("12ab34"), 1072); -assertToStringEquals("***", res[501].exec("*** Failers "), 1073); -assertNull(res[501].exec("1234", 1074)); -assertToStringEquals(" ", res[501].exec("12a34 "), 1075); -assertToStringEquals("ab", res[502].exec("12abcd34"), 1076); -assertToStringEquals("ab", res[502].exec("12ab34"), 1077); -assertToStringEquals("**", res[502].exec("*** Failers "), 1078); -assertNull(res[502].exec("1234", 1079)); -assertToStringEquals(" ", res[502].exec("12a34 "), 1080); -assertToStringEquals("12", res[503].exec("12abcd34"), 1081); -assertNull(res[503].exec("*** Failers", 1082)); -assertToStringEquals("12", res[504].exec("12abcd34"), 1083); -assertToStringEquals("123", res[504].exec("1234abcd"), 1084); -assertNull(res[504].exec("*** Failers ", 1085)); -assertNull(res[504].exec("1.4 ", 1086)); -assertToStringEquals("12", res[505].exec("12abcd34"), 1087); -assertToStringEquals("12", res[505].exec("1234abcd"), 1088); -assertNull(res[505].exec("*** Failers ", 1089)); -assertNull(res[505].exec("1.4 ", 1090)); -assertToStringEquals("12abcd34", res[506].exec("12abcd34"), 1091); -assertToStringEquals("***", res[506].exec("*** Failers"), 1092); -assertNull(res[506].exec(" ", 1093)); -assertToStringEquals("12a", res[507].exec("12abcd34"), 1094); -assertToStringEquals("123", res[507].exec("1234abcd"), 1095); -assertToStringEquals("***", res[507].exec("*** Failers"), 1096); -assertNull(res[507].exec(" ", 1097)); -assertToStringEquals("12", res[508].exec("12abcd34"), 1098); -assertToStringEquals("12", res[508].exec("1234abcd"), 1099); -assertToStringEquals("**", res[508].exec("*** Failers"), 1100); -assertNull(res[508].exec(" ", 1101)); -assertToStringEquals("> <", res[509].exec("12> <34"), 1102); -assertNull(res[509].exec("*** Failers", 1103)); -assertToStringEquals("> <", res[510].exec("ab> <", res[510].exec("ab> <", res[511].exec("ab> <", res[511].exec("ab> \xff<"), 1186); -assertNull(res[521].exec(">x{ff}<", 1187)); -assertToStringEquals("X", res[522].exec("XYZ"), 1188); -assertToStringEquals("X", res[523].exec("XYZ"), 1189); -assertToStringEquals("x", res[523].exec("x{123} "), 1190); -assertToStringEquals(",", res[528].exec("catac"), 1191); -assertToStringEquals(",", res[528].exec("ax{256}a "), 1192); -assertToStringEquals(",", res[528].exec("x{85}"), 1193); -assertToStringEquals(",", res[528].exec("\u1234 "), 1194); -assertToStringEquals(",", res[528].exec("\u1234 "), 1195); -assertToStringEquals(",", res[528].exec("abcdefg"), 1196); -assertToStringEquals(",", res[528].exec("ab"), 1197); -assertToStringEquals(",", res[528].exec("a "), 1198); -assertToStringEquals("Ax", res[529].exec("Ax{a3}BC"), 1199); -assertToStringEquals("Ax", res[530].exec("Ax{a3}BC"), 1200); -assertToStringEquals("}=", res[531].exec("+x{a3}== "), 1201); -assertToStringEquals("}=", res[532].exec("+x{a3}== "), 1202); -assertToStringEquals("x", res[533].exec("x{442}x{435}x{441}x{442}"), 1203); -assertToStringEquals("x", res[534].exec("x{442}x{435}x{441}x{442}"), 1204); -assertToStringEquals("x", res[535].exec("x{442}x{435}x{441}x{442}"), 1205); -assertToStringEquals("x", res[536].exec("x{442}x{435}x{441}x{442}"), 1206); -assertToStringEquals("{", res[537].exec("x{2442}x{2435}x{2441}x{2442}"), 1207); -assertToStringEquals("{", res[538].exec("x{2442}x{2435}x{2441}x{2442}"), 1208); -assertToStringEquals("abc\n\x0dx{442}x{435}x{441}x{442}xyz ", res[539].exec("abc\n\x0dx{442}x{435}x{441}x{442}xyz "), 1209); -assertToStringEquals("x{442}x{435}x{441}x{442}", res[539].exec("x{442}x{435}x{441}x{442}"), 1210); -assertToStringEquals("c d", res[540].exec("abc defx{442}x{443}xyz\npqr"), 1211); -assertToStringEquals("c d", res[541].exec("abc defx{442}x{443}xyz\npqr"), 1212); -assertNull(res[542].exec("+x{2442}", 1213)); -assertNull(res[543].exec("+x{2442}", 1214)); -assertNull(res[544].exec("Ax{442}", 1215)); -assertNull(res[545].exec("Ax{442}", 1216)); -assertNull(res[546].exec("Ax{442}", 1217)); -assertNull(res[547].exec("Ax{442}", 1218)); -assertNull(res[548].exec("\x19x{e01ff}", 1219)); -assertNull(res[549].exec("Ax{422}", 1220)); -assertNull(res[550].exec("x{19}x{e01ff}", 1221)); -assertNull(res[551].exec("Ax{442}", 1222)); -assertNull(res[552].exec("Ax{442}", 1223)); -assertNull(res[553].exec("ax{442}", 1224)); -assertNull(res[554].exec("+x{2442}", 1225)); -assertNull(res[555].exec("Mx{442}", 1226)); -assertToStringEquals("abc", res[556].exec("abc"), 1227); -assertToStringEquals("abc", res[557].exec("abc"), 1228); -assertToStringEquals("abc", res[558].exec("abc"), 1229); -assertToStringEquals("abc", res[559].exec("abc"), 1230); -assertNull(res[560].exec("x{100}ax{1234}bcd", 1231)); -assertNull(res[562].exec("x{0041}x{2262}x{0391}x{002e}", 1232)); -assertNull(res[562].exec("x{D55c}x{ad6d}x{C5B4} ", 1233)); -assertNull(res[562].exec("x{65e5}x{672c}x{8a9e}", 1234)); -assertToStringEquals("{861}X", res[563].exec("x{212ab}x{212ab}x{212ab}x{861}X"), 1235); -assertToStringEquals("x{2", res[564].exec("x{212ab}x{212ab}x{212ab}x{861}"), 1236); -assertToStringEquals("x{c", res[564].exec("x{c0}b"), 1237); -assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1238); -assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1239); -assertToStringEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1240); -assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1241); -assertToStringEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1242); -assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1243); -assertToStringEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1244); -assertToStringEquals("Sho", res[564].exec("Should produce an error diagnostic"), 1245); -assertNull(res[565].exec("Xx{1234}", 1246)); -assertNull(res[565].exec("X\nabc ", 1247)); -assertToStringEquals("b", res[566].exec("bar"), 1248); -assertNull(res[566].exec("*** Failers", 1249)); -assertNull(res[566].exec("c", 1250)); -assertNull(res[566].exec("x{ff}", 1251)); -assertNull(res[566].exec("x{100} ", 1252)); -assertToStringEquals("c", res[567].exec("c"), 1253); -assertToStringEquals("x", res[567].exec("x{ff}"), 1254); -assertToStringEquals("x", res[567].exec("x{100} "), 1255); -assertToStringEquals("*", res[567].exec("*** Failers "), 1256); -assertNull(res[567].exec("aaa", 1257)); -assertToStringEquals("x", res[568].exec("x{f1}"), 1258); -assertToStringEquals("x", res[568].exec("x{bf}"), 1259); -assertToStringEquals("x", res[568].exec("x{100}"), 1260); -assertToStringEquals("x", res[568].exec("x{1000} "), 1261); -assertToStringEquals("*", res[568].exec("*** Failers"), 1262); -assertToStringEquals("x", res[568].exec("x{c0} "), 1263); -assertToStringEquals("x", res[568].exec("x{f0} "), 1264); -assertToStringEquals("1", res[568].exec("1234"), 1265); -assertToStringEquals("\"", res[568].exec("\"1234\" "), 1266); -assertToStringEquals("x", res[568].exec("x{100}1234"), 1267); -assertToStringEquals("\"", res[568].exec("\"x{100}1234\" "), 1268); -assertToStringEquals("x", res[568].exec("x{100}x{100}12ab "), 1269); -assertToStringEquals("x", res[568].exec("x{100}x{100}\"12\" "), 1270); -assertToStringEquals("*", res[568].exec("*** Failers "), 1271); -assertToStringEquals("x", res[568].exec("x{100}x{100}abcd"), 1272); -assertToStringEquals("A", res[568].exec("A"), 1273); -assertToStringEquals("x", res[568].exec("x{100}"), 1274); -assertToStringEquals("Z", res[568].exec("Zx{100}"), 1275); -assertToStringEquals("x", res[568].exec("x{100}Z"), 1276); -assertToStringEquals("*", res[568].exec("*** Failers "), 1277); -assertToStringEquals("Z", res[568].exec("Zx{100}"), 1278); -assertToStringEquals("x", res[568].exec("x{100}"), 1279); -assertToStringEquals("x", res[568].exec("x{100}Z"), 1280); -assertToStringEquals("*", res[568].exec("*** Failers "), 1281); -assertToStringEquals("x", res[568].exec("x{100}"), 1282); -assertToStringEquals("x", res[568].exec("x{104}"), 1283); -assertToStringEquals("*", res[568].exec("*** Failers"), 1284); -assertToStringEquals("x", res[568].exec("x{105}"), 1285); -assertToStringEquals("x", res[568].exec("x{ff} "), 1286); -assertToStringEquals("x", res[568].exec("x{100}"), 1287); -assertToStringEquals("\u0100", res[568].exec("\u0100 "), 1288); -assertToStringEquals("\xff", res[569].exec(">\xff<"), 1289); -assertNull(res[570].exec(">x{ff}<", 1290)); -assertToStringEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1291); -assertToStringEquals("x", res[572].exec("x{d6}"), 1292); -assertToStringEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1293); -assertToStringEquals("x", res[572].exec("x{d6}"), 1294); -assertToStringEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1295); -assertToStringEquals("x", res[572].exec("x{d6} "), 1296); -assertToStringEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1297); -assertToStringEquals("x", res[572].exec("x{d6} "), 1298); -assertToStringEquals("\ufffd", res[572].exec("\ufffd]"), 1299); -assertToStringEquals("\ufffd", res[572].exec("\ufffd"), 1300); -assertToStringEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd"), 1301); -assertToStringEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd?"), 1302); -assertNull(res[573].exec("\xc0\x80", 1303)); -assertNull(res[573].exec("\xc1\x8f ", 1304)); -assertNull(res[573].exec("\xe0\x9f\x80", 1305)); -assertNull(res[573].exec("\xf0\x8f\x80\x80 ", 1306)); -assertNull(res[573].exec("\xf8\x87\x80\x80\x80 ", 1307)); -assertNull(res[573].exec("\xfc\x83\x80\x80\x80\x80", 1308)); -assertNull(res[573].exec("\xfe\x80\x80\x80\x80\x80 ", 1309)); -assertNull(res[573].exec("\xff\x80\x80\x80\x80\x80 ", 1310)); -assertNull(res[573].exec("\xc3\x8f", 1311)); -assertNull(res[573].exec("\xe0\xaf\x80", 1312)); -assertNull(res[573].exec("\xe1\x80\x80", 1313)); -assertNull(res[573].exec("\xf0\x9f\x80\x80 ", 1314)); -assertNull(res[573].exec("\xf1\x8f\x80\x80 ", 1315)); -assertNull(res[573].exec("\xf8\x88\x80\x80\x80 ", 1316)); -assertNull(res[573].exec("\xf9\x87\x80\x80\x80 ", 1317)); -assertNull(res[573].exec("\xfc\x84\x80\x80\x80\x80", 1318)); -assertNull(res[573].exec("\xfd\x83\x80\x80\x80\x80", 1319)); -assertNull(res[573].exec("?\xf8\x88\x80\x80\x80 ", 1320)); -assertNull(res[573].exec("?\xf9\x87\x80\x80\x80 ", 1321)); -assertNull(res[573].exec("?\xfc\x84\x80\x80\x80\x80", 1322)); -assertNull(res[573].exec("?\xfd\x83\x80\x80\x80\x80", 1323)); -assertToStringEquals(".", res[574].exec("A.B"), 1324); -assertToStringEquals("{", res[574].exec("Ax{100}B "), 1325); -assertToStringEquals("x", res[575].exec("x{100}X "), 1326); -assertToStringEquals("a", res[575].exec("ax{1234}b"), 1327); -assertNull(res[577].exec("AxxB ", 1328)); -assertToStringEquals("abc1", res[578].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 1329); -assertToStringEquals("abc1", res[579].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 1330); -assertNull(res[580].exec("a\nb", 1331)); -assertNull(res[580].exec("a\x0db", 1332)); -assertNull(res[580].exec("a\x0d\nb", 1333)); -assertNull(res[580].exec("a\x0bb", 1334)); -assertNull(res[580].exec("a\x0cb", 1335)); -assertNull(res[580].exec("ax{85}b ", 1336)); -assertNull(res[580].exec("ax{2028}b ", 1337)); -assertNull(res[580].exec("ax{2029}b ", 1338)); -assertNull(res[580].exec("** Failers", 1339)); -assertNull(res[580].exec("a\n\x0db ", 1340)); -assertToStringEquals("ab", res[581].exec("ab"), 1341); -assertNull(res[581].exec("a\nb", 1342)); -assertNull(res[581].exec("a\x0db", 1343)); -assertNull(res[581].exec("a\x0d\nb", 1344)); -assertNull(res[581].exec("a\x0bb", 1345)); -assertNull(res[581].exec("a\x0cx{2028}x{2029}b", 1346)); -assertNull(res[581].exec("ax{85}b ", 1347)); -assertNull(res[581].exec("a\n\x0db ", 1348)); -assertNull(res[581].exec("a\n\x0dx{85}\x0cb ", 1349)); -assertNull(res[582].exec("a\nb", 1350)); -assertNull(res[582].exec("a\x0db", 1351)); -assertNull(res[582].exec("a\x0d\nb", 1352)); -assertNull(res[582].exec("a\x0bb", 1353)); -assertNull(res[582].exec("a\x0cx{2028}x{2029}b", 1354)); -assertNull(res[582].exec("ax{85}b ", 1355)); -assertNull(res[582].exec("a\n\x0db ", 1356)); -assertNull(res[582].exec("a\n\x0dx{85}\x0cb ", 1357)); -assertNull(res[582].exec("** Failers", 1358)); -assertNull(res[582].exec("ab ", 1359)); -assertNull(res[583].exec("a\nb", 1360)); -assertNull(res[583].exec("a\n\x0db", 1361)); -assertNull(res[583].exec("a\n\x0dx{85}b", 1362)); -assertNull(res[583].exec("a\x0d\n\x0d\nb ", 1363)); -assertNull(res[583].exec("a\x0d\n\x0d\n\x0d\nb ", 1364)); -assertNull(res[583].exec("a\n\x0d\n\x0db", 1365)); -assertNull(res[583].exec("a\n\n\x0d\nb ", 1366)); -assertNull(res[583].exec("** Failers", 1367)); -assertNull(res[583].exec("a\n\n\n\x0db", 1368)); -assertNull(res[583].exec("a\x0d", 1369)); -assertNull(res[584].exec("X X\n", 1370)); -assertNull(res[584].exec("X\x09X\x0b", 1371)); -assertNull(res[584].exec("** Failers", 1372)); -assertNull(res[584].exec("x{a0} X\n ", 1373)); -assertNull(res[585].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 1374)); -assertNull(res[585].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 1375)); -assertNull(res[585].exec("\x09 x{a0}\n\x0b\x0c", 1376)); -assertNull(res[585].exec("** Failers ", 1377)); -assertNull(res[585].exec("\x09 x{a0}\n\x0b", 1378)); -assertNull(res[585].exec(" ", 1379)); -assertNull(res[586].exec("x{3001}x{3000}x{2030}x{2028}", 1380)); -assertNull(res[586].exec("Xx{180e}Xx{85}", 1381)); -assertNull(res[586].exec("** Failers", 1382)); -assertNull(res[586].exec("x{2009} X\n ", 1383)); -assertNull(res[587].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 1384)); -assertNull(res[587].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 1385)); -assertNull(res[587].exec("\x09 x{202f}\n\x0b\x0c", 1386)); -assertNull(res[587].exec("** Failers ", 1387)); -assertNull(res[587].exec("\x09x{200a}x{a0}x{2028}\x0b", 1388)); -assertNull(res[587].exec(" ", 1389)); -assertNull(res[588].exec(">x{1680}", 1390)); -assertNull(res[589].exec(">x{1680}x{180e}x{2000}x{2003}x{200a}x{202f}x{205f}x{3000}<", 1391)); -assertToStringEquals("x{1ec5} ", res[593].exec("x{1ec5} "), 1392); -assertNull(res[594].exec("x{0}x{d7ff}x{e000}x{10ffff}", 1393)); -assertNull(res[594].exec("x{d800}", 1394)); -assertNull(res[594].exec("x{d800}?", 1395)); -assertNull(res[594].exec("x{da00}", 1396)); -assertNull(res[594].exec("x{da00}?", 1397)); -assertNull(res[594].exec("x{dfff}", 1398)); -assertNull(res[594].exec("x{dfff}?", 1399)); -assertNull(res[594].exec("x{110000} ", 1400)); -assertNull(res[594].exec("x{110000}? ", 1401)); -assertNull(res[594].exec("x{2000000} ", 1402)); -assertNull(res[594].exec("x{2000000}? ", 1403)); -assertNull(res[594].exec("x{7fffffff} ", 1404)); -assertNull(res[594].exec("x{7fffffff}? ", 1405)); -assertNull(res[595].exec("a\x0db", 1406)); -assertNull(res[595].exec("a\nb", 1407)); -assertNull(res[595].exec("a\x0d\nb", 1408)); -assertNull(res[595].exec("** Failers", 1409)); -assertNull(res[595].exec("ax{85}b", 1410)); -assertNull(res[595].exec("a\x0bb ", 1411)); -assertNull(res[596].exec("a\x0db", 1412)); -assertNull(res[596].exec("a\nb", 1413)); -assertNull(res[596].exec("a\x0d\nb", 1414)); -assertNull(res[596].exec("ax{85}b", 1415)); -assertNull(res[596].exec("a\x0bb ", 1416)); -assertNull(res[596].exec("** Failers ", 1417)); -assertNull(res[596].exec("ax{85}b", 1418)); -assertNull(res[596].exec("a\x0bb", 1419)); -assertNull(res[597].exec("a\x0db", 1420)); -assertNull(res[597].exec("a\nb", 1421)); -assertNull(res[597].exec("a\x0d\nb", 1422)); -assertNull(res[597].exec("** Failers", 1423)); -assertNull(res[597].exec("ax{85}b", 1424)); -assertNull(res[597].exec("a\x0bb ", 1425)); -assertNull(res[598].exec("a\x0db", 1426)); -assertNull(res[598].exec("a\nb", 1427)); -assertNull(res[598].exec("a\x0d\nb", 1428)); -assertNull(res[598].exec("ax{85}b", 1429)); -assertNull(res[598].exec("a\x0bb ", 1430)); -assertNull(res[598].exec("** Failers ", 1431)); -assertNull(res[598].exec("ax{85}b", 1432)); -assertNull(res[598].exec("a\x0bb", 1433)); -assertToStringEquals("QQQx{2029}ABCaXYZ=!bPQR", res[599].exec("QQQx{2029}ABCaXYZ=!bPQR"), 1434); -assertNull(res[599].exec("** Failers", 1435)); -assertNull(res[599].exec("ax{2029}b", 1436)); -assertNull(res[599].exec("a\xe2\x80\xa9b ", 1437)); -assertNull(res[600].exec("ax{1234}b", 1438)); -assertToStringEquals("a\nb", res[600].exec("a\nb "), 1439); -assertNull(res[600].exec("** Failers", 1440)); -assertNull(res[600].exec("ab ", 1441)); -assertToStringEquals("aXb", res[601].exec("aXb"), 1442); -assertToStringEquals("a\nX\nXx{1234}b", res[601].exec("a\nX\nXx{1234}b "), 1443); -assertNull(res[601].exec("** Failers", 1444)); -assertNull(res[601].exec("ab ", 1445)); -assertNull(res[601].exec("x{de}x{de}", 1446)); -assertNull(res[601].exec("x{123} ", 1447)); -assertToStringEquals("X", res[602].exec("Ax{1ec5}ABCXYZ"), 1448); -assertNull(res[604].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 1449)); -assertNull(res[604].exec("\npx{300}9!$ < ", 1450)); -assertNull(res[604].exec("** Failers ", 1451)); -assertNull(res[604].exec("apx{300}9!$ < ", 1452)); -assertNull(res[605].exec("X", 1453)); -assertNull(res[605].exec("** Failers ", 1454)); -assertNull(res[605].exec("", 1455)); -assertNull(res[606].exec("9", 1456)); -assertNull(res[606].exec("** Failers ", 1457)); -assertNull(res[606].exec("x{c0}", 1458)); -assertNull(res[607].exec("X", 1459)); -assertNull(res[607].exec("** Failers ", 1460)); -assertNull(res[607].exec("x{30f}", 1461)); -assertNull(res[608].exec("X", 1462)); -assertNull(res[608].exec("** Failers ", 1463)); -assertNull(res[608].exec("x{660}", 1464)); -assertNull(res[609].exec("X", 1465)); -assertNull(res[609].exec("** Failers ", 1466)); -assertNull(res[609].exec("x{66c}", 1467)); -assertNull(res[610].exec("X", 1468)); -assertNull(res[610].exec("** Failers ", 1469)); -assertNull(res[610].exec("x{f01}", 1470)); -assertNull(res[611].exec("X", 1471)); -assertNull(res[611].exec("** Failers ", 1472)); -assertNull(res[611].exec("x{1680}", 1473)); -assertNull(res[612].exec("x{017}", 1474)); -assertNull(res[612].exec("x{09f} ", 1475)); -assertNull(res[612].exec("** Failers", 1476)); -assertNull(res[612].exec("x{0600} ", 1477)); -assertNull(res[613].exec("x{601}", 1478)); -assertNull(res[613].exec("** Failers", 1479)); -assertNull(res[613].exec("x{09f} ", 1480)); -assertNull(res[614].exec("x{e0000}", 1481)); -assertNull(res[614].exec("** Failers", 1482)); -assertNull(res[614].exec("x{09f} ", 1483)); -assertNull(res[615].exec("x{f8ff}", 1484)); -assertNull(res[615].exec("** Failers", 1485)); -assertNull(res[615].exec("x{09f} ", 1486)); -assertNull(res[616].exec("?x{dfff}", 1487)); -assertNull(res[616].exec("** Failers", 1488)); -assertNull(res[616].exec("x{09f} ", 1489)); -assertNull(res[617].exec("a", 1490)); -assertNull(res[617].exec("** Failers ", 1491)); -assertNull(res[617].exec("Z", 1492)); -assertNull(res[617].exec("x{e000} ", 1493)); -assertNull(res[618].exec("x{2b0}", 1494)); -assertNull(res[618].exec("** Failers", 1495)); -assertNull(res[618].exec("a ", 1496)); -assertNull(res[619].exec("x{1bb}", 1497)); -assertNull(res[619].exec("x{3400}", 1498)); -assertNull(res[619].exec("x{3401}", 1499)); -assertNull(res[619].exec("x{4d00}", 1500)); -assertNull(res[619].exec("x{4db4}", 1501)); -assertNull(res[619].exec("x{4db5} ", 1502)); -assertNull(res[619].exec("** Failers", 1503)); -assertNull(res[619].exec("a ", 1504)); -assertNull(res[619].exec("x{2b0}", 1505)); -assertNull(res[619].exec("x{4db6} ", 1506)); -assertNull(res[620].exec("x{1c5}", 1507)); -assertNull(res[620].exec("** Failers", 1508)); -assertNull(res[620].exec("a ", 1509)); -assertNull(res[620].exec("x{2b0}", 1510)); -assertNull(res[621].exec("A", 1511)); -assertNull(res[621].exec("** Failers", 1512)); -assertNull(res[621].exec("x{2b0}", 1513)); -assertNull(res[622].exec("x{903}", 1514)); -assertNull(res[622].exec("** Failers", 1515)); -assertNull(res[622].exec("X", 1516)); -assertNull(res[622].exec("x{300}", 1517)); -assertNull(res[622].exec(" ", 1518)); -assertNull(res[623].exec("x{488}", 1519)); -assertNull(res[623].exec("** Failers", 1520)); -assertNull(res[623].exec("X", 1521)); -assertNull(res[623].exec("x{903}", 1522)); -assertNull(res[623].exec("x{300}", 1523)); -assertNull(res[624].exec("x{300}", 1524)); -assertNull(res[624].exec("** Failers", 1525)); -assertNull(res[624].exec("X", 1526)); -assertNull(res[624].exec("x{903}", 1527)); -assertNull(res[624].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 1528)); -assertNull(res[624].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 1529)); -assertNull(res[624].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 1530)); -assertNull(res[624].exec("** Failers", 1531)); -assertNull(res[624].exec("X", 1532)); -assertNull(res[625].exec("x{16ee}", 1533)); -assertNull(res[625].exec("** Failers", 1534)); -assertNull(res[625].exec("X", 1535)); -assertNull(res[625].exec("x{966}", 1536)); -assertNull(res[626].exec("x{b2}", 1537)); -assertNull(res[626].exec("x{b3}", 1538)); -assertNull(res[626].exec("** Failers", 1539)); -assertNull(res[626].exec("X", 1540)); -assertNull(res[626].exec("x{16ee}", 1541)); -assertNull(res[627].exec("_", 1542)); -assertNull(res[627].exec("x{203f}", 1543)); -assertNull(res[627].exec("** Failers", 1544)); -assertNull(res[627].exec("X", 1545)); -assertNull(res[627].exec("-", 1546)); -assertNull(res[627].exec("x{58a}", 1547)); -assertNull(res[628].exec("-", 1548)); -assertNull(res[628].exec("x{58a}", 1549)); -assertNull(res[628].exec("** Failers", 1550)); -assertNull(res[628].exec("X", 1551)); -assertNull(res[628].exec("x{203f}", 1552)); -assertNull(res[629].exec(")", 1553)); -assertNull(res[629].exec("]", 1554)); -assertNull(res[629].exec("}", 1555)); -assertNull(res[629].exec("x{f3b}", 1556)); -assertNull(res[629].exec("** Failers", 1557)); -assertNull(res[629].exec("X", 1558)); -assertNull(res[629].exec("x{203f}", 1559)); -assertNull(res[629].exec("(", 1560)); -assertNull(res[629].exec("[", 1561)); -assertNull(res[629].exec("{", 1562)); -assertNull(res[629].exec("x{f3c}", 1563)); -assertNull(res[630].exec("x{bb}", 1564)); -assertNull(res[630].exec("x{2019}", 1565)); -assertNull(res[630].exec("** Failers", 1566)); -assertNull(res[630].exec("X", 1567)); -assertNull(res[630].exec("x{203f}", 1568)); -assertNull(res[631].exec("x{ab}", 1569)); -assertNull(res[631].exec("x{2018}", 1570)); -assertNull(res[631].exec("** Failers", 1571)); -assertNull(res[631].exec("X", 1572)); -assertNull(res[631].exec("x{203f}", 1573)); -assertNull(res[632].exec("!", 1574)); -assertNull(res[632].exec("x{37e}", 1575)); -assertNull(res[632].exec("** Failers", 1576)); -assertNull(res[632].exec("X", 1577)); -assertNull(res[632].exec("x{203f}", 1578)); -assertNull(res[633].exec("(", 1579)); -assertNull(res[633].exec("[", 1580)); -assertNull(res[633].exec("{", 1581)); -assertNull(res[633].exec("x{f3c}", 1582)); -assertNull(res[633].exec("** Failers", 1583)); -assertNull(res[633].exec("X", 1584)); -assertNull(res[633].exec(")", 1585)); -assertNull(res[633].exec("]", 1586)); -assertNull(res[633].exec("}", 1587)); -assertNull(res[633].exec("x{f3b}", 1588)); -assertNull(res[633].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 1589)); -assertNull(res[633].exec("x{9f2}", 1590)); -assertNull(res[633].exec("** Failers", 1591)); -assertNull(res[633].exec("X", 1592)); -assertNull(res[633].exec("x{2c2}", 1593)); -assertNull(res[634].exec("x{2c2}", 1594)); -assertNull(res[634].exec("** Failers", 1595)); -assertNull(res[634].exec("X", 1596)); -assertNull(res[634].exec("x{9f2}", 1597)); -assertNull(res[634].exec("+<|~x{ac}x{2044}", 1598)); -assertNull(res[634].exec("** Failers", 1599)); -assertNull(res[634].exec("X", 1600)); -assertNull(res[634].exec("x{9f2}", 1601)); -assertNull(res[635].exec("x{a6}", 1602)); -assertNull(res[635].exec("x{482} ", 1603)); -assertNull(res[635].exec("** Failers", 1604)); -assertNull(res[635].exec("X", 1605)); -assertNull(res[635].exec("x{9f2}", 1606)); -assertNull(res[636].exec("x{2028}", 1607)); -assertNull(res[636].exec("** Failers", 1608)); -assertNull(res[636].exec("X", 1609)); -assertNull(res[636].exec("x{2029}", 1610)); -assertNull(res[637].exec("x{2029}", 1611)); -assertNull(res[637].exec("** Failers", 1612)); -assertNull(res[637].exec("X", 1613)); -assertNull(res[637].exec("x{2028}", 1614)); -assertNull(res[638].exec("\\ \\", 1615)); -assertNull(res[638].exec("x{a0}", 1616)); -assertNull(res[638].exec("x{1680}", 1617)); -assertNull(res[638].exec("x{180e}", 1618)); -assertNull(res[638].exec("x{2000}", 1619)); -assertNull(res[638].exec("x{2001} ", 1620)); -assertNull(res[638].exec("** Failers", 1621)); -assertNull(res[638].exec("x{2028}", 1622)); -assertNull(res[638].exec("x{200d} ", 1623)); -assertNull(res[638].exec(" x{660}x{661}x{662}ABC", 1624)); -assertNull(res[638].exec(" x{660}x{661}x{662}ABC", 1625)); -assertNull(res[639].exec(" x{660}x{661}x{662}ABC", 1626)); -assertNull(res[640].exec(" x{660}x{661}x{662}ABC", 1627)); -assertNull(res[641].exec(" x{660}x{661}x{662}ABC", 1628)); -assertNull(res[642].exec(" x{660}x{661}x{662}ABC", 1629)); -assertNull(res[643].exec(" x{660}x{661}x{662}ABC", 1630)); -assertNull(res[644].exec(" x{660}x{661}x{662}ABC", 1631)); -assertNull(res[645].exec(" x{660}x{661}x{662}ABC", 1632)); -assertNull(res[646].exec(" x{660}x{661}x{662}ABC", 1633)); -assertNull(res[647].exec(" x{660}x{661}x{662}ABC", 1634)); -assertNull(res[647].exec(" x{660}x{661}x{662}ABC", 1635)); -assertNull(res[647].exec(" x{660}x{661}x{662}ABC", 1636)); -assertNull(res[647].exec(" ** Failers", 1637)); -assertNull(res[647].exec(" x{660}x{661}x{662}ABC", 1638)); -assertNull(res[648].exec("A", 1639)); -assertNull(res[648].exec("ax{10a0}B ", 1640)); -assertNull(res[648].exec("** Failers ", 1641)); -assertNull(res[648].exec("a", 1642)); -assertNull(res[648].exec("x{1d00} ", 1643)); -assertNull(res[649].exec("1234", 1644)); -assertNull(res[649].exec("** Failers", 1645)); -assertNull(res[649].exec("ABC ", 1646)); -assertNull(res[650].exec("1234", 1647)); -assertNull(res[650].exec("** Failers", 1648)); -assertNull(res[650].exec("ABC ", 1649)); -assertNull(res[650].exec("A2XYZ", 1650)); -assertNull(res[650].exec("123A5XYZPQR", 1651)); -assertNull(res[650].exec("ABAx{660}XYZpqr", 1652)); -assertNull(res[650].exec("** Failers", 1653)); -assertNull(res[650].exec("AXYZ", 1654)); -assertNull(res[650].exec("XYZ ", 1655)); -assertNull(res[650].exec("1XYZ", 1656)); -assertNull(res[650].exec("AB=XYZ.. ", 1657)); -assertNull(res[650].exec("XYZ ", 1658)); -assertNull(res[650].exec("** Failers", 1659)); -assertNull(res[650].exec("WXYZ ", 1660)); -assertNull(res[655].exec("1234", 1661)); -assertNull(res[655].exec("1234", 1662)); -assertNull(res[655].exec("12-34", 1663)); -assertToStringEquals("{", res[655].exec("12+x{661}-34 "), 1664); -assertNull(res[655].exec("** Failers", 1665)); -assertToStringEquals("d", res[655].exec("abcd "), 1666); -assertToStringEquals("d", res[656].exec("abcd"), 1667); -assertNull(res[656].exec("** Failers", 1668)); -assertNull(res[656].exec("1234", 1669)); -assertNull(res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1670)); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1671); -assertToStringEquals(" ", res[657].exec(" "), 1672); -assertNull(res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1673)); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1674); -assertNull(res[658].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1675)); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[658].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1676); -assertNull(res[659].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1677)); -assertNull(res[659].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 1678)); -assertNull(res[660].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1679)); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[660].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1680); -assertNull(res[661].exec("a", 1681)); -assertNull(res[661].exec("A ", 1682)); -assertNull(res[662].exec("a", 1683)); -assertNull(res[662].exec("A ", 1684)); -assertNull(res[663].exec("A", 1685)); -assertNull(res[663].exec("aZ", 1686)); -assertNull(res[663].exec("** Failers", 1687)); -assertNull(res[663].exec("abc ", 1688)); -assertNull(res[664].exec("A", 1689)); -assertNull(res[664].exec("aZ", 1690)); -assertNull(res[664].exec("** Failers", 1691)); -assertNull(res[664].exec("abc ", 1692)); -assertNull(res[665].exec("a", 1693)); -assertNull(res[665].exec("Az", 1694)); -assertNull(res[665].exec("** Failers", 1695)); -assertNull(res[665].exec("ABC ", 1696)); -assertNull(res[666].exec("a", 1697)); -assertNull(res[666].exec("Az", 1698)); -assertNull(res[666].exec("** Failers", 1699)); -assertNull(res[666].exec("ABC ", 1700)); -assertNull(res[666].exec("x{c0}", 1701)); -assertNull(res[666].exec("x{e0} ", 1702)); -assertNull(res[666].exec("x{c0}", 1703)); -assertNull(res[666].exec("x{e0} ", 1704)); -assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1705)); -assertNull(res[666].exec("** Failers", 1706)); -assertNull(res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 1707)); -assertNull(res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1708)); -assertNull(res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1709)); -assertNull(res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1710)); -assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1711)); -assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1712)); -assertNull(res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 1713)); -assertNull(res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1714)); -assertNull(res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1715)); -assertNull(res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1716)); -assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1717)); -assertNull(res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 1718)); -assertNull(res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1719)); -assertNull(res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1720)); -assertNull(res[666].exec("x{391}", 1721)); -assertNull(res[666].exec("x{ff3a}", 1722)); -assertNull(res[666].exec("x{3b1}", 1723)); -assertNull(res[666].exec("x{ff5a} ", 1724)); -assertNull(res[666].exec("x{c0}", 1725)); -assertNull(res[666].exec("x{e0} ", 1726)); -assertNull(res[666].exec("x{104}", 1727)); -assertNull(res[666].exec("x{105}", 1728)); -assertNull(res[666].exec("x{109} ", 1729)); -assertNull(res[666].exec("** Failers", 1730)); -assertNull(res[666].exec("x{100}", 1731)); -assertNull(res[666].exec("x{10a} ", 1732)); -assertNull(res[666].exec("Z", 1733)); -assertNull(res[666].exec("z", 1734)); -assertNull(res[666].exec("x{39c}", 1735)); -assertNull(res[666].exec("x{178}", 1736)); -assertNull(res[666].exec("|", 1737)); -assertNull(res[666].exec("x{80}", 1738)); -assertNull(res[666].exec("x{ff}", 1739)); -assertNull(res[666].exec("x{100}", 1740)); -assertNull(res[666].exec("x{101} ", 1741)); -assertNull(res[666].exec("** Failers", 1742)); -assertNull(res[666].exec("x{102}", 1743)); -assertNull(res[666].exec("Y", 1744)); -assertNull(res[666].exec("y ", 1745)); -assertNull(res[667].exec("A", 1746)); -assertNull(res[667].exec("Ax{300}BC ", 1747)); -assertNull(res[667].exec("Ax{300}x{301}x{302}BC ", 1748)); -assertNull(res[667].exec("*** Failers", 1749)); -assertNull(res[667].exec("x{300} ", 1750)); -assertToStringEquals("X", res[668].exec("X123"), 1751); -assertNull(res[668].exec("*** Failers", 1752)); -assertNull(res[668].exec("AXYZ", 1753)); -assertNull(res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1754)); -assertNull(res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1755)); -assertNull(res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1756)); -assertNull(res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1757)); -assertToStringEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1758); -assertToStringEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1759); -assertToStringEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1760); -assertToStringEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1761); -assertNull(res[673].exec("*** Failers", 1762)); -assertNull(res[673].exec("Ax{300}x{301}x{302}", 1763)); -assertNull(res[674].exec("Ax{300}x{301}Bx{300}X", 1764)); -assertNull(res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1765)); -assertNull(res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1766)); -assertNull(res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1767)); -assertNull(res[675].exec("Ax{300}x{301}Bx{300}X", 1768)); -assertNull(res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1769)); -assertNull(res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1770)); -assertNull(res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1771)); -assertNull(res[675].exec("x{2e81}x{3007}x{2f804}x{31a0}", 1772)); -assertNull(res[675].exec("** Failers", 1773)); -assertNull(res[675].exec("x{2e7f} ", 1774)); -assertNull(res[675].exec("x{3105}", 1775)); -assertNull(res[675].exec("** Failers", 1776)); -assertNull(res[675].exec("x{30ff} ", 1777)); -assertNull(res[676].exec("x{06e9}", 1778)); -assertNull(res[676].exec("x{060b}", 1779)); -assertNull(res[676].exec("** Failers", 1780)); -assertNull(res[676].exec("Xx{06e9} ", 1781)); -assertNull(res[677].exec("x{2f800}", 1782)); -assertNull(res[677].exec("** Failers", 1783)); -assertNull(res[677].exec("x{a014}", 1784)); -assertNull(res[677].exec("x{a4c6} ", 1785)); -assertNull(res[678].exec("AXYZ", 1786)); -assertNull(res[678].exec("x{1234}XYZ ", 1787)); -assertNull(res[678].exec("** Failers", 1788)); -assertNull(res[678].exec("X ", 1789)); -assertNull(res[679].exec("** Failers", 1790)); -assertNull(res[679].exec("AX", 1791)); -assertNull(res[680].exec("XYZ", 1792)); -assertNull(res[680].exec("AXYZ", 1793)); -assertNull(res[680].exec("x{1234}XYZ ", 1794)); -assertNull(res[680].exec("** Failers", 1795)); -assertNull(res[680].exec("ABXYZ ", 1796)); -assertNull(res[681].exec("XYZ", 1797)); -assertNull(res[681].exec("** Failers", 1798)); -assertNull(res[681].exec("AXYZ", 1799)); -assertNull(res[681].exec("x{1234}XYZ ", 1800)); -assertNull(res[681].exec("ABXYZ ", 1801)); -assertNull(res[681].exec("AXYZ", 1802)); -assertNull(res[681].exec("x{1234}XYZ", 1803)); -assertNull(res[681].exec("Ax{1234}XYZ", 1804)); -assertNull(res[681].exec("** Failers", 1805)); -assertNull(res[681].exec("XYZ", 1806)); -assertNull(res[681].exec("** Failers", 1807)); -assertNull(res[681].exec("AXYZ", 1808)); -assertNull(res[681].exec("x{1234}XYZ", 1809)); -assertNull(res[681].exec("Ax{1234}XYZ", 1810)); -assertNull(res[681].exec("XYZ", 1811)); -assertNull(res[682].exec("XYZ", 1812)); -assertNull(res[682].exec("AXYZ", 1813)); -assertNull(res[682].exec("x{1234}XYZ", 1814)); -assertNull(res[682].exec("Ax{1234}XYZ", 1815)); -assertNull(res[682].exec("** Failers", 1816)); -assertNull(res[683].exec("XYZ", 1817)); -assertNull(res[683].exec("** Failers", 1818)); -assertNull(res[683].exec("AXYZ", 1819)); -assertNull(res[683].exec("x{1234}XYZ", 1820)); -assertNull(res[683].exec("Ax{1234}XYZ", 1821)); -assertToStringEquals("AX", res[684].exec("AXYZ"), 1822); -assertNull(res[684].exec("x{1234}XYZ ", 1823)); -assertNull(res[684].exec("** Failers", 1824)); -assertNull(res[684].exec("X ", 1825)); -assertNull(res[685].exec("** Failers", 1826)); -assertToStringEquals("AX", res[685].exec("AX"), 1827); -assertToStringEquals("X", res[686].exec("XYZ"), 1828); -assertToStringEquals("AX", res[686].exec("AXYZ"), 1829); -assertNull(res[686].exec("x{1234}XYZ ", 1830)); -assertNull(res[686].exec("** Failers", 1831)); -assertNull(res[686].exec("ABXYZ ", 1832)); -assertToStringEquals("X", res[687].exec("XYZ"), 1833); -assertNull(res[687].exec("** Failers", 1834)); -assertToStringEquals("AX", res[687].exec("AXYZ"), 1835); -assertNull(res[687].exec("x{1234}XYZ ", 1836)); -assertNull(res[687].exec("ABXYZ ", 1837)); -assertToStringEquals("AX", res[688].exec("AXYZ"), 1838); -assertNull(res[688].exec("x{1234}XYZ", 1839)); -assertNull(res[688].exec("Ax{1234}XYZ", 1840)); -assertNull(res[688].exec("** Failers", 1841)); -assertNull(res[688].exec("XYZ", 1842)); -assertNull(res[689].exec("** Failers", 1843)); -assertToStringEquals("AX", res[689].exec("AXYZ"), 1844); -assertNull(res[689].exec("x{1234}XYZ", 1845)); -assertNull(res[689].exec("Ax{1234}XYZ", 1846)); -assertNull(res[689].exec("XYZ", 1847)); -assertToStringEquals("X", res[690].exec("XYZ"), 1848); -assertToStringEquals("AX", res[690].exec("AXYZ"), 1849); -assertNull(res[690].exec("x{1234}XYZ", 1850)); -assertNull(res[690].exec("Ax{1234}XYZ", 1851)); -assertNull(res[690].exec("** Failers", 1852)); -assertToStringEquals("X", res[691].exec("XYZ"), 1853); -assertNull(res[691].exec("** Failers", 1854)); -assertToStringEquals("AX", res[691].exec("AXYZ"), 1855); -assertNull(res[691].exec("x{1234}XYZ", 1856)); -assertNull(res[691].exec("Ax{1234}XYZ", 1857)); -assertNull(res[692].exec("abcdefgh", 1858)); -assertNull(res[692].exec("x{1234}\n\x0dx{3456}xyz ", 1859)); -assertNull(res[693].exec("abcdefgh", 1860)); -assertNull(res[693].exec("x{1234}\n\x0dx{3456}xyz ", 1861)); -assertNull(res[694].exec("** Failers", 1862)); -assertNull(res[694].exec("abcdefgh", 1863)); -assertNull(res[694].exec("x{1234}\n\x0dx{3456}xyz ", 1864)); -assertNull(res[695].exec(" AXY", 1865)); -assertNull(res[695].exec(" aXY", 1866)); -assertNull(res[695].exec(" x{1c5}XY", 1867)); -assertNull(res[695].exec(" ** Failers", 1868)); -assertNull(res[695].exec(" x{1bb}XY", 1869)); -assertNull(res[695].exec(" x{2b0}XY", 1870)); -assertNull(res[695].exec(" !XY ", 1871)); -assertNull(res[696].exec(" AXY", 1872)); -assertNull(res[696].exec(" aXY", 1873)); -assertNull(res[696].exec(" x{1c5}XY", 1874)); -assertNull(res[696].exec(" ** Failers", 1875)); -assertNull(res[696].exec(" x{1bb}XY", 1876)); -assertNull(res[696].exec(" x{2b0}XY", 1877)); -assertNull(res[696].exec(" !XY ", 1878)); -assertNull(res[696].exec(" AXY", 1879)); -assertNull(res[696].exec(" aXY", 1880)); -assertNull(res[696].exec(" AbcdeXyz ", 1881)); -assertNull(res[696].exec(" x{1c5}AbXY", 1882)); -assertNull(res[696].exec(" abcDEXypqreXlmn ", 1883)); -assertNull(res[696].exec(" ** Failers", 1884)); -assertNull(res[696].exec(" x{1bb}XY", 1885)); -assertNull(res[696].exec(" x{2b0}XY", 1886)); -assertNull(res[696].exec(" !XY ", 1887)); -assertNull(res[697].exec(" AXY", 1888)); -assertNull(res[697].exec(" aXY", 1889)); -assertNull(res[697].exec(" AbcdeXyz ", 1890)); -assertNull(res[697].exec(" x{1c5}AbXY", 1891)); -assertNull(res[697].exec(" abcDEXypqreXlmn ", 1892)); -assertNull(res[697].exec(" ** Failers", 1893)); -assertNull(res[697].exec(" x{1bb}XY", 1894)); -assertNull(res[697].exec(" x{2b0}XY", 1895)); -assertNull(res[697].exec(" !XY ", 1896)); -assertNull(res[697].exec(" AXY", 1897)); -assertNull(res[697].exec(" aXY", 1898)); -assertNull(res[697].exec(" AbcdeXyz ", 1899)); -assertNull(res[697].exec(" x{1c5}AbXY", 1900)); -assertNull(res[697].exec(" abcDEXypqreXlmn ", 1901)); -assertNull(res[697].exec(" ** Failers", 1902)); -assertNull(res[697].exec(" x{1bb}XY", 1903)); -assertNull(res[697].exec(" x{2b0}XY", 1904)); -assertNull(res[697].exec(" !XY ", 1905)); -assertNull(res[698].exec(" AXY", 1906)); -assertNull(res[698].exec(" aXY", 1907)); -assertNull(res[698].exec(" AbcdeXyz ", 1908)); -assertNull(res[698].exec(" x{1c5}AbXY", 1909)); -assertNull(res[698].exec(" abcDEXypqreXlmn ", 1910)); -assertNull(res[698].exec(" ** Failers", 1911)); -assertNull(res[698].exec(" x{1bb}XY", 1912)); -assertNull(res[698].exec(" x{2b0}XY", 1913)); -assertNull(res[698].exec(" !XY ", 1914)); -assertNull(res[699].exec(" !XY", 1915)); -assertNull(res[699].exec(" x{1bb}XY", 1916)); -assertNull(res[699].exec(" x{2b0}XY", 1917)); -assertNull(res[699].exec(" ** Failers", 1918)); -assertNull(res[699].exec(" x{1c5}XY", 1919)); -assertNull(res[699].exec(" AXY ", 1920)); -assertNull(res[700].exec(" !XY", 1921)); -assertNull(res[700].exec(" x{1bb}XY", 1922)); -assertNull(res[700].exec(" x{2b0}XY", 1923)); -assertNull(res[700].exec(" ** Failers", 1924)); -assertNull(res[700].exec(" x{1c5}XY", 1925)); -assertNull(res[700].exec(" AXY ", 1926)); -assertNull(res[701].exec("\xa0!", 1927)); -assertNull(res[701].exec("AabcabcYZ ", 1928)); -assertToStringEquals("L=abcX,L=abc,abc", res[702].exec("L=abcX"), 1929); -assertNull(res[702].exec("x{c0}", 1930)); -assertNull(res[702].exec("x{e0} ", 1931)); -assertNull(res[702].exec("x{c0}", 1932)); -assertNull(res[702].exec("x{e0} ", 1933)); -assertNull(res[703].exec("x{1b00}x{12000}x{7c0}x{a840}x{10900}", 1934)); -assertNull(res[706].exec("123abcdefg", 1935)); -assertNull(res[706].exec("123abc\xc4\xc5zz", 1936)); -assertNull(res[710].exec("A\x80", 1937)); -assertNull(res[725].exec("x{60e} ", 1938)); -assertNull(res[725].exec("x{656} ", 1939)); -assertNull(res[725].exec("x{657} ", 1940)); -assertNull(res[725].exec("x{658} ", 1941)); -assertNull(res[725].exec("x{659} ", 1942)); -assertNull(res[725].exec("x{65a} ", 1943)); -assertNull(res[725].exec("x{65b} ", 1944)); -assertNull(res[725].exec("x{65c} ", 1945)); -assertNull(res[725].exec("x{65d} ", 1946)); -assertNull(res[725].exec("x{65e} ", 1947)); -assertNull(res[725].exec("x{66a} ", 1948)); -assertNull(res[725].exec("x{6e9} ", 1949)); -assertNull(res[725].exec("x{6ef}", 1950)); -assertNull(res[725].exec("x{6fa} ", 1951)); -assertNull(res[725].exec("** Failers", 1952)); -assertNull(res[725].exec("x{600}", 1953)); -assertNull(res[725].exec("x{650}", 1954)); -assertNull(res[725].exec("x{651} ", 1955)); -assertNull(res[725].exec("x{652} ", 1956)); -assertNull(res[725].exec("x{653} ", 1957)); -assertNull(res[725].exec("x{654} ", 1958)); -assertNull(res[725].exec("x{655} ", 1959)); -assertNull(res[725].exec("x{65f} ", 1960)); -assertNull(res[726].exec("x{1d2b} ", 1961)); -assertNull(res[727].exec("x{589}", 1962)); -assertNull(res[727].exec("x{60c}", 1963)); -assertNull(res[727].exec("x{61f} ", 1964)); -assertNull(res[727].exec("x{964}", 1965)); -assertNull(res[727].exec("x{965} ", 1966)); -assertNull(res[727].exec("x{970} ", 1967)); -assertNull(res[728].exec("x{64b}", 1968)); -assertNull(res[728].exec("x{654}", 1969)); -assertNull(res[728].exec("x{655}", 1970)); -assertNull(res[728].exec("x{200c} ", 1971)); -assertNull(res[728].exec("** Failers", 1972)); -assertNull(res[728].exec("x{64a}", 1973)); -assertNull(res[728].exec("x{656} ", 1974)); -assertNull(res[729].exec("x{10450}", 1975)); -assertNull(res[729].exec("x{1047f}", 1976)); -assertNull(res[730].exec("x{10400}", 1977)); -assertNull(res[730].exec("x{1044f}", 1978)); -assertNull(res[731].exec("x{10480}", 1979)); -assertNull(res[731].exec("x{1049d}", 1980)); -assertNull(res[731].exec("x{104a0}", 1981)); -assertNull(res[731].exec("x{104a9}", 1982)); -assertNull(res[731].exec("** Failers", 1983)); -assertNull(res[731].exec("x{1049e}", 1984)); -assertNull(res[731].exec("x{1049f}", 1985)); -assertNull(res[731].exec("x{104aa} ", 1986)); -assertNull(res[731].exec("\xe2\x80\xa8\xe2\x80\xa8", 1987)); -assertNull(res[731].exec("x{2028}x{2028}x{2028}", 1988)); -assertNull(res[732].exec("x{c0}x{e0}x{116}x{117}", 1989)); -assertNull(res[732].exec("x{c0}x{e0}x{116}x{117}", 1990)); -assertNull(res[733].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 1991)); -assertNull(res[733].exec("x{a77d}x{1d79}", 1992)); -assertNull(res[733].exec("x{1d79}x{a77d} ", 1993)); -assertNull(res[733].exec("x{a77d}x{1d79}", 1994)); -assertNull(res[733].exec("** Failers ", 1995)); -assertNull(res[733].exec("x{1d79}x{a77d} ", 1996)); -assertToStringEquals("AA,A", res[734].exec("AA"), 1997); -assertToStringEquals("Aa,A", res[734].exec("Aa"), 1998); -assertToStringEquals("aa,a", res[734].exec("aa"), 1999); -assertToStringEquals("aA,a", res[734].exec("aA"), 2000); -assertNull(res[734].exec("x{de}x{de}", 2001)); -assertNull(res[734].exec("x{de}x{fe}", 2002)); -assertNull(res[734].exec("x{fe}x{fe}", 2003)); -assertNull(res[734].exec("x{fe}x{de}", 2004)); -assertNull(res[734].exec("x{10a}x{10a}", 2005)); -assertNull(res[734].exec("x{10a}x{10b}", 2006)); -assertNull(res[734].exec("x{10b}x{10b}", 2007)); -assertNull(res[734].exec("x{10b}x{10a}", 2008)); -assertToStringEquals("abc", res[736].exec("abc"), 2009); -assertToStringEquals("abc", res[737].exec("abc"), 2010); -assertToStringEquals("abbbbc", res[737].exec("abbbbc"), 2011); -assertToStringEquals("ac", res[737].exec("ac"), 2012); -assertToStringEquals("abc", res[738].exec("abc"), 2013); -assertToStringEquals("abbbbbbc", res[738].exec("abbbbbbc"), 2014); -assertNull(res[738].exec("*** Failers ", 2015)); -assertNull(res[738].exec("ac", 2016)); -assertNull(res[738].exec("ab", 2017)); -assertToStringEquals("a", res[739].exec("a"), 2018); -assertToStringEquals("aaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaa"), 2019); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "), 2020); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaF "), 2021); -assertToStringEquals("a,a", res[740].exec("a"), 2022); -assertToStringEquals("a,a", res[740].exec("abcd"), 2023); -assertToStringEquals("a,a", res[740].exec("african"), 2024); -assertToStringEquals("abc", res[741].exec("abcdef"), 2025); -assertNull(res[741].exec("*** Failers", 2026)); -assertNull(res[741].exec("xyzabc", 2027)); -assertNull(res[741].exec("xyz\nabc ", 2028)); -assertToStringEquals("abc", res[742].exec("abcdef"), 2029); -assertToStringEquals("abc", res[742].exec("xyz\nabc "), 2030); -assertNull(res[742].exec("*** Failers", 2031)); -assertNull(res[742].exec("xyzabc", 2032)); -assertNull(res[743].exec("abcdef", 2033)); -assertNull(res[743].exec("*** Failers", 2034)); -assertNull(res[743].exec("xyzabc", 2035)); -assertNull(res[743].exec("xyz\nabc ", 2036)); -assertNull(res[744].exec("abcdef", 2037)); -assertNull(res[744].exec("*** Failers", 2038)); -assertNull(res[744].exec("xyzabc", 2039)); -assertNull(res[744].exec("xyz\nabc ", 2040)); -assertNull(res[745].exec("abcdef", 2041)); -assertNull(res[745].exec("xyzabc>3", 2042)); -assertNull(res[745].exec("*** Failers", 2043)); -assertNull(res[745].exec("xyzabc ", 2044)); -assertNull(res[745].exec("xyzabc>2 ", 2045)); -assertToStringEquals("x9yzz", res[746].exec("x9yzz"), 2046); -assertToStringEquals("x0y+z", res[746].exec("x0y+z"), 2047); -assertNull(res[746].exec("*** Failers", 2048)); -assertNull(res[746].exec("xyz", 2049)); -assertNull(res[746].exec("xxy0z ", 2050)); -assertToStringEquals("x yzz", res[747].exec("x yzz"), 2051); -assertToStringEquals("x y+z", res[747].exec("x y+z"), 2052); -assertNull(res[747].exec("*** Failers", 2053)); -assertNull(res[747].exec("xyz", 2054)); -assertNull(res[747].exec("xxyyz", 2055)); -assertToStringEquals("xxy+z", res[748].exec("xxy+z"), 2056); -assertNull(res[748].exec("*** Failers", 2057)); -assertNull(res[748].exec("xxy0z", 2058)); -assertNull(res[748].exec("x+y+z ", 2059)); -assertToStringEquals("x+y", res[749].exec("x+y"), 2060); -assertToStringEquals("x-y", res[749].exec("x-y"), 2061); -assertNull(res[749].exec("*** Failers", 2062)); -assertNull(res[749].exec("x\ny", 2063)); -assertToStringEquals("x+y", res[750].exec("x+y"), 2064); -assertToStringEquals("x-y", res[750].exec("x-y"), 2065); -assertNull(res[750].exec("x\ny", 2066)); -assertNull(res[750].exec("a+bc+dp+q", 2067)); -assertNull(res[750].exec("a+bc\ndp+q", 2068)); -assertNull(res[750].exec("x\nyp+q ", 2069)); -assertNull(res[750].exec("*** Failers ", 2070)); -assertNull(res[750].exec("a\nbc\ndp+q", 2071)); -assertNull(res[750].exec("a+bc\ndp\nq", 2072)); -assertNull(res[750].exec("x\nyp\nq ", 2073)); -assertNull(res[751].exec("ba0", 2074)); -assertNull(res[751].exec("*** Failers", 2075)); -assertNull(res[751].exec("ba0\n", 2076)); -assertNull(res[751].exec("ba0\ncd ", 2077)); -assertNull(res[752].exec("ba0", 2078)); -assertNull(res[752].exec("*** Failers", 2079)); -assertNull(res[752].exec("ba0\n", 2080)); -assertNull(res[752].exec("ba0\ncd ", 2081)); -assertNull(res[753].exec("ba0", 2082)); -assertNull(res[753].exec("ba0\n", 2083)); -assertNull(res[753].exec("*** Failers", 2084)); -assertNull(res[753].exec("ba0\ncd ", 2085)); -assertNull(res[754].exec("ba0", 2086)); -assertNull(res[754].exec("ba0\n", 2087)); -assertNull(res[754].exec("*** Failers", 2088)); -assertNull(res[754].exec("ba0\ncd ", 2089)); -assertToStringEquals("a0", res[755].exec("ba0"), 2090); -assertNull(res[755].exec("ba0\n", 2091)); -assertNull(res[755].exec("*** Failers", 2092)); -assertNull(res[755].exec("ba0\ncd ", 2093)); -assertToStringEquals("a0", res[756].exec("ba0"), 2094); -assertToStringEquals("a0", res[756].exec("ba0\n"), 2095); -assertToStringEquals("a0", res[756].exec("ba0\ncd "), 2096); -assertNull(res[756].exec("*** Failers", 2097)); -assertToStringEquals("abc", res[757].exec("abc"), 2098); -assertToStringEquals("aBc", res[757].exec("aBc"), 2099); -assertToStringEquals("ABC", res[757].exec("ABC"), 2100); -assertToStringEquals("b", res[758].exec("abcd"), 2101); -assertToStringEquals("abz", res[759].exec("abz"), 2102); -assertToStringEquals("abb", res[759].exec("abbz"), 2103); -assertToStringEquals("az", res[759].exec("azz "), 2104); -assertToStringEquals("yz", res[760].exec("ayzq"), 2105); -assertToStringEquals("xyz", res[760].exec("axyzq"), 2106); -assertToStringEquals("xxyz", res[760].exec("axxyz"), 2107); -assertToStringEquals("xxxyz", res[760].exec("axxxyzq"), 2108); -assertToStringEquals("xxxyz", res[760].exec("axxxxyzq"), 2109); -assertNull(res[760].exec("*** Failers", 2110)); -assertNull(res[760].exec("ax", 2111)); -assertNull(res[760].exec("axx ", 2112)); -assertNull(res[760].exec(" ", 2113)); -assertToStringEquals("xxxyz", res[761].exec("axxxyzq"), 2114); -assertToStringEquals("xxxyz", res[761].exec("axxxxyzq"), 2115); -assertNull(res[761].exec("*** Failers", 2116)); -assertNull(res[761].exec("ax", 2117)); -assertNull(res[761].exec("axx ", 2118)); -assertNull(res[761].exec("ayzq", 2119)); -assertNull(res[761].exec("axyzq", 2120)); -assertNull(res[761].exec("axxyz", 2121)); -assertNull(res[761].exec(" ", 2122)); -assertToStringEquals("xxyz", res[762].exec("axxyz"), 2123); -assertToStringEquals("xxxyz", res[762].exec("axxxyzq"), 2124); -assertToStringEquals("xxxyz", res[762].exec("axxxxyzq"), 2125); -assertNull(res[762].exec("*** Failers", 2126)); -assertNull(res[762].exec("ax", 2127)); -assertNull(res[762].exec("axx ", 2128)); -assertNull(res[762].exec("ayzq", 2129)); -assertNull(res[762].exec("axyzq", 2130)); -assertNull(res[762].exec(" ", 2131)); -assertToStringEquals("b", res[763].exec("bac"), 2132); -assertToStringEquals("bcdef", res[763].exec("bcdefax"), 2133); -assertToStringEquals("*** F", res[763].exec("*** Failers"), 2134); -assertToStringEquals(" ", res[763].exec("aaaaa "), 2135); -assertToStringEquals("b", res[764].exec("bac"), 2136); -assertToStringEquals("bcdef", res[764].exec("bcdefax"), 2137); -assertToStringEquals("*** F", res[764].exec("*** Failers"), 2138); -assertToStringEquals("", res[764].exec("aaaaa "), 2139); -assertToStringEquals("xyz", res[765].exec("xyz"), 2140); -assertToStringEquals("wxyz", res[765].exec("awxyza"), 2141); -assertToStringEquals("bcdef", res[765].exec("abcdefa"), 2142); -assertToStringEquals("bcdef", res[765].exec("abcdefghijk"), 2143); -assertToStringEquals("*** F", res[765].exec("*** Failers"), 2144); -assertNull(res[765].exec("axya", 2145)); -assertNull(res[765].exec("axa", 2146)); -assertToStringEquals(" ", res[765].exec("aaaaa "), 2147); -assertToStringEquals("1234", res[766].exec("1234b567"), 2148); -assertToStringEquals("", res[766].exec("xyz"), 2149); -assertToStringEquals("a", res[767].exec("a1234b567"), 2150); -assertToStringEquals("xyz", res[767].exec("xyz"), 2151); -assertToStringEquals(" ", res[767].exec(" "), 2152); -assertToStringEquals("1234", res[768].exec("ab1234c56"), 2153); -assertNull(res[768].exec("*** Failers", 2154)); -assertNull(res[768].exec("xyz", 2155)); -assertToStringEquals("ab", res[769].exec("ab123c56"), 2156); -assertToStringEquals("*** Failers", res[769].exec("*** Failers"), 2157); -assertNull(res[769].exec("789", 2158)); -assertToStringEquals("5A", res[770].exec("045ABC"), 2159); -assertToStringEquals("A", res[770].exec("ABC"), 2160); -assertNull(res[770].exec("*** Failers", 2161)); -assertNull(res[770].exec("XYZ", 2162)); -assertToStringEquals("A", res[771].exec("ABC"), 2163); -assertToStringEquals("BA", res[771].exec("BAC"), 2164); -assertToStringEquals("A", res[771].exec("9ABC "), 2165); -assertNull(res[771].exec("*** Failers", 2166)); -assertToStringEquals("aaaa", res[772].exec("aaaa"), 2167); -assertToStringEquals("xyz", res[773].exec("xyz"), 2168); -assertToStringEquals("ggggggggxyz", res[773].exec("ggggggggxyz"), 2169); -assertToStringEquals("abcdxyz", res[774].exec("abcdxyz"), 2170); -assertToStringEquals("axyz", res[774].exec("axyz"), 2171); -assertNull(res[774].exec("*** Failers", 2172)); -assertNull(res[774].exec("xyz", 2173)); -assertToStringEquals("xyz", res[775].exec("xyz"), 2174); -assertToStringEquals("cxyz", res[775].exec("cxyz "), 2175); -assertToStringEquals("12X", res[776].exec("12X"), 2176); -assertToStringEquals("123X", res[776].exec("123X"), 2177); -assertNull(res[776].exec("*** Failers", 2178)); -assertNull(res[776].exec("X", 2179)); -assertNull(res[776].exec("1X", 2180)); -assertNull(res[776].exec("1234X ", 2181)); -assertToStringEquals("a4", res[777].exec("a45"), 2182); -assertToStringEquals("b9", res[777].exec("b93"), 2183); -assertToStringEquals("c9", res[777].exec("c99z"), 2184); -assertToStringEquals("d0", res[777].exec("d04"), 2185); -assertNull(res[777].exec("*** Failers", 2186)); -assertNull(res[777].exec("e45", 2187)); -assertNull(res[777].exec("abcd ", 2188)); -assertNull(res[777].exec("abcd1234", 2189)); -assertNull(res[777].exec("1234 ", 2190)); -assertToStringEquals("a4", res[778].exec("a45"), 2191); -assertToStringEquals("b9", res[778].exec("b93"), 2192); -assertToStringEquals("c9", res[778].exec("c99z"), 2193); -assertToStringEquals("d0", res[778].exec("d04"), 2194); -assertToStringEquals("abcd1", res[778].exec("abcd1234"), 2195); -assertToStringEquals("1", res[778].exec("1234 "), 2196); -assertNull(res[778].exec("*** Failers", 2197)); -assertNull(res[778].exec("e45", 2198)); -assertNull(res[778].exec("abcd ", 2199)); -assertToStringEquals("a4", res[779].exec("a45"), 2200); -assertToStringEquals("b9", res[779].exec("b93"), 2201); -assertToStringEquals("c9", res[779].exec("c99z"), 2202); -assertToStringEquals("d0", res[779].exec("d04"), 2203); -assertToStringEquals("abcd1", res[779].exec("abcd1234"), 2204); -assertNull(res[779].exec("*** Failers", 2205)); -assertNull(res[779].exec("1234 ", 2206)); -assertNull(res[779].exec("e45", 2207)); -assertNull(res[779].exec("abcd ", 2208)); -assertToStringEquals("aX", res[780].exec("aX"), 2209); -assertToStringEquals("aaX", res[780].exec("aaX "), 2210); -assertToStringEquals("a4", res[781].exec("a45"), 2211); -assertToStringEquals("b9", res[781].exec("b93"), 2212); -assertToStringEquals("c9", res[781].exec("c99z"), 2213); -assertToStringEquals("d0", res[781].exec("d04"), 2214); -assertToStringEquals("1", res[781].exec("1234 "), 2215); -assertNull(res[781].exec("*** Failers", 2216)); -assertNull(res[781].exec("abcd1234", 2217)); -assertNull(res[781].exec("e45", 2218)); -assertToStringEquals("ab4", res[782].exec("ab45"), 2219); -assertToStringEquals("bcd9", res[782].exec("bcd93"), 2220); -assertNull(res[782].exec("*** Failers", 2221)); -assertNull(res[782].exec("1234 ", 2222)); -assertNull(res[782].exec("a36 ", 2223)); -assertNull(res[782].exec("abcd1234", 2224)); -assertNull(res[782].exec("ee45", 2225)); -assertToStringEquals("abc4,abc", res[783].exec("abc45"), 2226); -assertToStringEquals("abcabcabc4,abc", res[783].exec("abcabcabc45"), 2227); -assertToStringEquals("4,", res[783].exec("42xyz "), 2228); -assertNull(res[783].exec("*** Failers", 2229)); -assertToStringEquals("abc4,abc", res[784].exec("abc45"), 2230); -assertToStringEquals("abcabcabc4,abc", res[784].exec("abcabcabc45"), 2231); -assertNull(res[784].exec("*** Failers", 2232)); -assertNull(res[784].exec("42xyz ", 2233)); -assertToStringEquals("abc4,abc", res[785].exec("abc45"), 2234); -assertToStringEquals("4,", res[785].exec("42xyz "), 2235); -assertNull(res[785].exec("*** Failers", 2236)); -assertNull(res[785].exec("abcabcabc45", 2237)); -assertToStringEquals("abcabc4,abc", res[786].exec("abcabc45"), 2238); -assertToStringEquals("abcabcabc4,abc", res[786].exec("abcabcabc45"), 2239); -assertNull(res[786].exec("*** Failers", 2240)); -assertNull(res[786].exec("abcabcabcabc45", 2241)); -assertNull(res[786].exec("abc45", 2242)); -assertNull(res[786].exec("42xyz ", 2243)); -assertNull(res[786].exec("1abc2abc3456", 2244)); -assertNull(res[786].exec("1abc2xyz3456 ", 2245)); -assertToStringEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2246); -assertToStringEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2247); -assertNull(res[787].exec("abc", 2248)); -assertNull(res[787].exec("a(b)c", 2249)); -assertNull(res[787].exec("a(b(c))d ", 2250)); -assertNull(res[787].exec("*** Failers)", 2251)); -assertNull(res[787].exec("a(b(c)d ", 2252)); -assertNull(res[787].exec(">abc>123abc>1(2)3abc>(1(2)3)", 2259)); -assertNull(res[787].exec("", 2260)); -assertNull(res[787].exec(" hij>", 2261)); -assertNull(res[787].exec(" hij>", 2262)); -assertNull(res[787].exec("def> ", 2263)); -assertNull(res[787].exec(" ", 2264)); -assertNull(res[787].exec("*** Failers", 2265)); -assertNull(res[787].exec("3 ", 2323)); -assertNull(res[795].exec("*** Failers ", 2324)); -assertNull(res[795].exec("defabcxyz", 2325)); -assertNull(res[796].exec("abP", 2326)); -assertNull(res[796].exec("abcdeP", 2327)); -assertToStringEquals("abcdef", res[796].exec("abcdefP"), 2328); -assertNull(res[796].exec("*** Failers", 2329)); -assertNull(res[796].exec("abxP ", 2330)); -assertNull(res[797].exec("aP", 2331)); -assertNull(res[797].exec("aaP", 2332)); -assertNull(res[797].exec("aa2P ", 2333)); -assertNull(res[797].exec("aaaP", 2334)); -assertNull(res[797].exec("aaa23P ", 2335)); -assertNull(res[797].exec("aaaa12345P", 2336)); -assertToStringEquals("aa0z", res[797].exec("aa0zP"), 2337); -assertToStringEquals("aaaa4444444444444z", res[797].exec("aaaa4444444444444zP "), 2338); -assertNull(res[797].exec("*** Failers", 2339)); -assertNull(res[797].exec("azP ", 2340)); -assertNull(res[797].exec("aaaaaP ", 2341)); -assertNull(res[797].exec("a56P ", 2342)); -assertNull(res[799].exec("adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkjPZ", 2343)); -assertNull(res[799].exec("lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefaPBZ", 2344)); -assertNull(res[799].exec("cdabbbbbbbbPRBZ", 2345)); -assertNull(res[799].exec("efabbbbbbbbbbbbbbbbPRBZ", 2346)); -assertNull(res[799].exec("bbbbbbbbbbbbcdXyasdfadfPRBZ ", 2347)); -assertNull(res[799].exec("abc", 2348)); -assertNull(res[799].exec("** Failers", 2349)); -assertNull(res[799].exec("def ", 2350)); -assertToStringEquals("the quick brown fox", res[800].exec("the quick brown fox"), 2351); -assertNull(res[800].exec("The quick brown FOX", 2352)); -assertToStringEquals("the quick brown fox", res[800].exec("What do you know about the quick brown fox?"), 2353); -assertNull(res[800].exec("What do you know about THE QUICK BROWN FOX?", 2354)); -assertToStringEquals("the quick brown fox", res[801].exec("the quick brown fox"), 2355); -assertToStringEquals("The quick brown FOX", res[801].exec("The quick brown FOX"), 2356); -assertToStringEquals("the quick brown fox", res[801].exec("What do you know about the quick brown fox?"), 2357); -assertToStringEquals("THE QUICK BROWN FOX", res[801].exec("What do you know about THE QUICK BROWN FOX?"), 2358); -assertToStringEquals("abcd\x09\n\x0d\x0cae9;$\\?caxyz", res[802].exec("abcd\x09\n\x0d\x0cae9;$\\?caxyz"), 2359); -assertToStringEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2360); -assertToStringEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2361); -assertToStringEquals("aabxyzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzpqrrrabbxyyyypqAzz"), 2362); -assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzpqrrrabbxyyyypqAzz"), 2363); -assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzpqrrrabbxyyyypqAzz"), 2364); -assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzpqrrrabbxyyyypqAzz"), 2365); -assertToStringEquals("aabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzpqrrrabbxyyyypqAzz"), 2366); -assertToStringEquals("aaabcxyzpqrrrabbxyyyypAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypAzz"), 2367); -assertToStringEquals("aaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqAzz"), 2368); -assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqAzz"), 2369); -assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqAzz"), 2370); -assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqAzz"), 2371); -assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqAzz"), 2372); -assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqAzz"), 2373); -assertToStringEquals("aaaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzpqrrrabbxyyyypqAzz"), 2374); -assertToStringEquals("abxyzzpqrrrabbxyyyypqAzz", res[803].exec("abxyzzpqrrrabbxyyyypqAzz"), 2375); -assertToStringEquals("aabxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzzzpqrrrabbxyyyypqAzz"), 2376); -assertToStringEquals("aaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzzzzpqrrrabbxyyyypqAzz"), 2377); -assertToStringEquals("aaaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzzzzpqrrrabbxyyyypqAzz"), 2378); -assertToStringEquals("abcxyzzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzzpqrrrabbxyyyypqAzz"), 2379); -assertToStringEquals("aabcxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzzzpqrrrabbxyyyypqAzz"), 2380); -assertToStringEquals("aaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzzzzpqrrrabbxyyyypqAzz"), 2381); -assertToStringEquals("aaaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbxyyyypqAzz"), 2382); -assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyypqAzz"), 2383); -assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz"), 2384); -assertToStringEquals("aaabcxyzpqrrrabbxyyyypABzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABzz"), 2385); -assertToStringEquals("aaabcxyzpqrrrabbxyyyypABBzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABBzz"), 2386); -assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>aaabxyzpqrrrabbxyyyypqAzz"), 2387); -assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">aaaabxyzpqrrrabbxyyyypqAzz"), 2388); -assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>>abcxyzpqrrrabbxyyyypqAzz"), 2389); -assertNull(res[803].exec("*** Failers", 2390)); -assertNull(res[803].exec("abxyzpqrrabbxyyyypqAzz", 2391)); -assertNull(res[803].exec("abxyzpqrrrrabbxyyyypqAzz", 2392)); -assertNull(res[803].exec("abxyzpqrrrabxyyyypqAzz", 2393)); -assertNull(res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz", 2394)); -assertNull(res[803].exec("aaaabcxyzzzzpqrrrabbbxyyypqAzz", 2395)); -assertNull(res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz", 2396)); -assertToStringEquals("abczz,abc", res[804].exec("abczz"), 2397); -assertToStringEquals("abcabczz,abc", res[804].exec("abcabczz"), 2398); -assertNull(res[804].exec("*** Failers", 2399)); -assertNull(res[804].exec("zz", 2400)); -assertNull(res[804].exec("abcabcabczz", 2401)); -assertNull(res[804].exec(">>abczz", 2402)); -assertToStringEquals("bc,b", res[805].exec("bc"), 2403); -assertToStringEquals("bbc,b", res[805].exec("bbc"), 2404); -assertToStringEquals("bbbc,bb", res[805].exec("bbbc"), 2405); -assertToStringEquals("bac,a", res[805].exec("bac"), 2406); -assertToStringEquals("bbac,a", res[805].exec("bbac"), 2407); -assertToStringEquals("aac,a", res[805].exec("aac"), 2408); -assertToStringEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[805].exec("abbbbbbbbbbbc"), 2409); -assertToStringEquals("bbbbbbbbbbbac,a", res[805].exec("bbbbbbbbbbbac"), 2410); -assertNull(res[805].exec("*** Failers", 2411)); -assertNull(res[805].exec("aaac", 2412)); -assertNull(res[805].exec("abbbbbbbbbbbac", 2413)); -assertToStringEquals("bc,b", res[806].exec("bc"), 2414); -assertToStringEquals("bbc,bb", res[806].exec("bbc"), 2415); -assertToStringEquals("bbbc,bbb", res[806].exec("bbbc"), 2416); -assertToStringEquals("bac,a", res[806].exec("bac"), 2417); -assertToStringEquals("bbac,a", res[806].exec("bbac"), 2418); -assertToStringEquals("aac,a", res[806].exec("aac"), 2419); -assertToStringEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[806].exec("abbbbbbbbbbbc"), 2420); -assertToStringEquals("bbbbbbbbbbbac,a", res[806].exec("bbbbbbbbbbbac"), 2421); -assertNull(res[806].exec("*** Failers", 2422)); -assertNull(res[806].exec("aaac", 2423)); -assertNull(res[806].exec("abbbbbbbbbbbac", 2424)); -assertToStringEquals("bbc,bb", res[806].exec("bbc"), 2425); -assertToStringEquals("babc,ba", res[807].exec("babc"), 2426); -assertToStringEquals("bbabc,ba", res[807].exec("bbabc"), 2427); -assertToStringEquals("bababc,ba", res[807].exec("bababc"), 2428); -assertNull(res[807].exec("*** Failers", 2429)); -assertNull(res[807].exec("bababbc", 2430)); -assertNull(res[807].exec("babababc", 2431)); -assertToStringEquals("babc,ba", res[808].exec("babc"), 2432); -assertToStringEquals("bbabc,ba", res[808].exec("bbabc"), 2433); -assertToStringEquals("bababc,ba", res[808].exec("bababc"), 2434); -assertNull(res[808].exec("*** Failers", 2435)); -assertNull(res[808].exec("bababbc", 2436)); -assertNull(res[808].exec("babababc", 2437)); -assertThrows("var re = /^\\ca\\cA\\c[\\c{\\c:/;"); -assertNull(res[808].exec("\x01\x01e;z", 2439)); -assertToStringEquals("a", res[809].exec("athing"), 2440); -assertToStringEquals("b", res[809].exec("bthing"), 2441); -assertToStringEquals("]", res[809].exec("]thing"), 2442); -assertToStringEquals("c", res[809].exec("cthing"), 2443); -assertToStringEquals("d", res[809].exec("dthing"), 2444); -assertToStringEquals("e", res[809].exec("ething"), 2445); -assertNull(res[809].exec("*** Failers", 2446)); -assertNull(res[809].exec("fthing", 2447)); -assertNull(res[809].exec("[thing", 2448)); -assertNull(res[809].exec("\\thing", 2449)); -assertNull(res[810].exec("]thing", 2450)); -assertNull(res[810].exec("cthing", 2451)); -assertNull(res[810].exec("dthing", 2452)); -assertNull(res[810].exec("ething", 2453)); -assertNull(res[810].exec("*** Failers", 2454)); -assertNull(res[810].exec("athing", 2455)); -assertNull(res[810].exec("fthing", 2456)); -assertToStringEquals("f", res[811].exec("fthing"), 2457); -assertToStringEquals("[", res[811].exec("[thing"), 2458); -assertToStringEquals("\\", res[811].exec("\\thing"), 2459); -assertToStringEquals("*", res[811].exec("*** Failers"), 2460); -assertNull(res[811].exec("athing", 2461)); -assertNull(res[811].exec("bthing", 2462)); -assertNull(res[811].exec("]thing", 2463)); -assertNull(res[811].exec("cthing", 2464)); -assertNull(res[811].exec("dthing", 2465)); -assertNull(res[811].exec("ething", 2466)); -assertNull(res[812].exec("athing", 2467)); -assertNull(res[812].exec("fthing", 2468)); -assertNull(res[812].exec("*** Failers", 2469)); -assertNull(res[812].exec("]thing", 2470)); -assertNull(res[812].exec("cthing", 2471)); -assertNull(res[812].exec("dthing", 2472)); -assertNull(res[812].exec("ething", 2473)); -assertNull(res[812].exec("\ufffd", 2474)); -assertNull(res[812].exec("\ufffd", 2475)); -assertToStringEquals("0", res[813].exec("0"), 2476); -assertToStringEquals("1", res[813].exec("1"), 2477); -assertToStringEquals("2", res[813].exec("2"), 2478); -assertToStringEquals("3", res[813].exec("3"), 2479); -assertToStringEquals("4", res[813].exec("4"), 2480); -assertToStringEquals("5", res[813].exec("5"), 2481); -assertToStringEquals("6", res[813].exec("6"), 2482); -assertToStringEquals("7", res[813].exec("7"), 2483); -assertToStringEquals("8", res[813].exec("8"), 2484); -assertToStringEquals("9", res[813].exec("9"), 2485); -assertToStringEquals("10", res[813].exec("10"), 2486); -assertToStringEquals("100", res[813].exec("100"), 2487); -assertNull(res[813].exec("*** Failers", 2488)); -assertNull(res[813].exec("abc", 2489)); -assertToStringEquals("enter", res[814].exec("enter"), 2490); -assertToStringEquals("inter", res[814].exec("inter"), 2491); -assertToStringEquals("uponter", res[814].exec("uponter"), 2492); -assertToStringEquals("xxx0", res[815].exec("xxx0"), 2493); -assertToStringEquals("xxx1234", res[815].exec("xxx1234"), 2494); -assertNull(res[815].exec("*** Failers", 2495)); -assertNull(res[815].exec("xxx", 2496)); -assertToStringEquals("x123", res[816].exec("x123"), 2497); -assertToStringEquals("xx123", res[816].exec("xx123"), 2498); -assertToStringEquals("123456", res[816].exec("123456"), 2499); -assertNull(res[816].exec("*** Failers", 2500)); -assertNull(res[816].exec("123", 2501)); -assertToStringEquals("x1234", res[816].exec("x1234"), 2502); -assertToStringEquals("x123", res[817].exec("x123"), 2503); -assertToStringEquals("xx123", res[817].exec("xx123"), 2504); -assertToStringEquals("123456", res[817].exec("123456"), 2505); -assertNull(res[817].exec("*** Failers", 2506)); -assertNull(res[817].exec("123", 2507)); -assertToStringEquals("x1234", res[817].exec("x1234"), 2508); -assertToStringEquals("abc!pqr=apquxz.ixr.zzz.ac.uk,abc,pqr", res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.uk"), 2509); -assertNull(res[818].exec("*** Failers", 2510)); -assertNull(res[818].exec("!pqr=apquxz.ixr.zzz.ac.uk", 2511)); -assertNull(res[818].exec("abc!=apquxz.ixr.zzz.ac.uk", 2512)); -assertNull(res[818].exec("abc!pqr=apquxz:ixr.zzz.ac.uk", 2513)); -assertNull(res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.ukk", 2514)); -assertToStringEquals(":", res[819].exec("Well, we need a colon: somewhere"), 2515); -assertNull(res[819].exec("*** Fail if we don't", 2516)); -assertToStringEquals("0abc,0abc", res[820].exec("0abc"), 2517); -assertToStringEquals("abc,abc", res[820].exec("abc"), 2518); -assertToStringEquals("fed,fed", res[820].exec("fed"), 2519); -assertToStringEquals("E,E", res[820].exec("E"), 2520); -assertToStringEquals("::,::", res[820].exec("::"), 2521); -assertToStringEquals("5f03:12C0::932e,5f03:12C0::932e", res[820].exec("5f03:12C0::932e"), 2522); -assertToStringEquals("def,def", res[820].exec("fed def"), 2523); -assertToStringEquals("ff,ff", res[820].exec("Any old stuff"), 2524); -assertNull(res[820].exec("*** Failers", 2525)); -assertNull(res[820].exec("0zzz", 2526)); -assertNull(res[820].exec("gzzz", 2527)); -assertNull(res[820].exec("fed ", 2528)); -assertNull(res[820].exec("Any old rubbish", 2529)); -assertToStringEquals(".1.2.3,1,2,3", res[821].exec(".1.2.3"), 2530); -assertToStringEquals("A.12.123.0,12,123,0", res[821].exec("A.12.123.0"), 2531); -assertNull(res[821].exec("*** Failers", 2532)); -assertNull(res[821].exec(".1.2.3333", 2533)); -assertNull(res[821].exec("1.2.3", 2534)); -assertNull(res[821].exec("1234.2.3", 2535)); -assertToStringEquals("1 IN SOA non-sp1 non-sp2(,1,non-sp1,non-sp2", res[822].exec("1 IN SOA non-sp1 non-sp2("), 2536); -assertToStringEquals("1 IN SOA non-sp1 non-sp2 (,1,non-sp1,non-sp2", res[822].exec("1 IN SOA non-sp1 non-sp2 ("), 2537); -assertNull(res[822].exec("*** Failers", 2538)); -assertNull(res[822].exec("1IN SOA non-sp1 non-sp2(", 2539)); -assertToStringEquals("a.,", res[823].exec("a."), 2540); -assertToStringEquals("Z.,", res[823].exec("Z."), 2541); -assertToStringEquals("2.,", res[823].exec("2."), 2542); -assertToStringEquals("ab-c.pq-r.,.pq-r", res[823].exec("ab-c.pq-r."), 2543); -assertToStringEquals("sxk.zzz.ac.uk.,.uk", res[823].exec("sxk.zzz.ac.uk."), 2544); -assertToStringEquals("x-.y-.,.y-", res[823].exec("x-.y-."), 2545); -assertNull(res[823].exec("*** Failers", 2546)); -assertNull(res[823].exec("-abc.peq.", 2547)); -assertToStringEquals("*.a,,,", res[824].exec("*.a"), 2548); -assertToStringEquals("*.b0-a,0-a,,", res[824].exec("*.b0-a"), 2549); -assertToStringEquals("*.c3-b.c,3-b,.c,", res[824].exec("*.c3-b.c"), 2550); -assertToStringEquals("*.c-a.b-c,-a,.b-c,-c", res[824].exec("*.c-a.b-c"), 2551); -assertNull(res[824].exec("*** Failers", 2552)); -assertNull(res[824].exec("*.0", 2553)); -assertNull(res[824].exec("*.a-", 2554)); -assertNull(res[824].exec("*.a-b.c-", 2555)); -assertNull(res[824].exec("*.c-a.0-c", 2556)); -assertToStringEquals("abde,de,abd,e", res[825].exec("abde"), 2557); -assertToStringEquals("abdf,,abd,f", res[826].exec("abdf"), 2558); -assertToStringEquals("ab,abcd,cd,ab", res[827].exec("abcd"), 2559); -assertToStringEquals("a.b.c.d,.d", res[828].exec("a.b.c.d"), 2560); -assertToStringEquals("A.B.C.D,.D", res[828].exec("A.B.C.D"), 2561); -assertToStringEquals("a.b.c.1.2.3.C,.C", res[828].exec("a.b.c.1.2.3.C"), 2562); -assertToStringEquals("\"1234\",", res[829].exec("\"1234\""), 2563); -assertToStringEquals("\"abcd\" ;,;", res[829].exec("\"abcd\" ;"), 2564); -assertToStringEquals("\"\" ; rhubarb,; rhubarb", res[829].exec("\"\" ; rhubarb"), 2565); -assertNull(res[829].exec("*** Failers", 2566)); -assertNull(res[829].exec("\"1234\" : things", 2567)); -assertNull(res[830].exec("\\", 2568)); -assertNull(res[830].exec("*** Failers", 2569)); -assertToStringEquals("ab c", res[831].exec("ab c"), 2570); -assertNull(res[831].exec("*** Failers", 2571)); -assertNull(res[831].exec("abc", 2572)); -assertNull(res[831].exec("ab cde", 2573)); -assertToStringEquals("ab c", res[831].exec("ab c"), 2574); -assertNull(res[831].exec("*** Failers", 2575)); -assertNull(res[831].exec("abc", 2576)); -assertNull(res[831].exec("ab cde", 2577)); -assertToStringEquals("a bcd", res[832].exec("a bcd"), 2578); -assertNull(res[832].exec("a b d", 2579)); -assertNull(res[832].exec("*** Failers", 2580)); -assertNull(res[832].exec("abcd", 2581)); -assertNull(res[832].exec("ab d", 2582)); -assertToStringEquals("abcdefhijklm,abc,bc,c,def,ef,f,hij,ij,j,klm,lm,m", res[833].exec("abcdefhijklm"), 2583); -assertToStringEquals("abcdefhijklm,bc,c,ef,f,ij,j,lm,m", res[834].exec("abcdefhijklm"), 2584); -assertNull(res[835].exec("a+ Z0+\x08\n\x1d\x12", 2585)); -assertNull(res[835].exec(".^$(*+)|{?,?}", 2586)); -assertToStringEquals("z", res[836].exec("z"), 2587); -assertToStringEquals("az", res[836].exec("az"), 2588); -assertToStringEquals("aaaz", res[836].exec("aaaz"), 2589); -assertToStringEquals("a", res[836].exec("a"), 2590); -assertToStringEquals("aa", res[836].exec("aa"), 2591); -assertToStringEquals("aaaa", res[836].exec("aaaa"), 2592); -assertToStringEquals("a", res[836].exec("a+"), 2593); -assertToStringEquals("aa", res[836].exec("aa+"), 2594); -assertToStringEquals("z", res[837].exec("z"), 2595); -assertToStringEquals("a", res[837].exec("az"), 2596); -assertToStringEquals("a", res[837].exec("aaaz"), 2597); -assertToStringEquals("a", res[837].exec("a"), 2598); -assertToStringEquals("a", res[837].exec("aa"), 2599); -assertToStringEquals("a", res[837].exec("aaaa"), 2600); -assertToStringEquals("a", res[837].exec("a+"), 2601); -assertToStringEquals("a", res[837].exec("aa+"), 2602); -assertToStringEquals("az", res[838].exec("az"), 2603); -assertToStringEquals("aaaz", res[838].exec("aaaz"), 2604); -assertToStringEquals("aa", res[838].exec("aa"), 2605); -assertToStringEquals("aaaa", res[838].exec("aaaa"), 2606); -assertToStringEquals("aa", res[838].exec("aa+"), 2607); -assertToStringEquals("az", res[839].exec("az"), 2608); -assertToStringEquals("aa", res[839].exec("aaaz"), 2609); -assertToStringEquals("aa", res[839].exec("aa"), 2610); -assertToStringEquals("aa", res[839].exec("aaaa"), 2611); -assertToStringEquals("aa", res[839].exec("aa+"), 2612); -assertToStringEquals("1234567890", res[840].exec("1234567890"), 2613); -assertToStringEquals("12345678ab", res[840].exec("12345678ab"), 2614); -assertToStringEquals("12345678__", res[840].exec("12345678__"), 2615); -assertNull(res[840].exec("*** Failers", 2616)); -assertNull(res[840].exec("1234567", 2617)); -assertToStringEquals("uoie", res[841].exec("uoie"), 2618); -assertToStringEquals("1234", res[841].exec("1234"), 2619); -assertToStringEquals("12345", res[841].exec("12345"), 2620); -assertToStringEquals("aaaaa", res[841].exec("aaaaa"), 2621); -assertNull(res[841].exec("*** Failers", 2622)); -assertNull(res[841].exec("123456", 2623)); -assertToStringEquals("uoie", res[842].exec("uoie"), 2624); -assertToStringEquals("1234", res[842].exec("1234"), 2625); -assertToStringEquals("1234", res[842].exec("12345"), 2626); -assertToStringEquals("aaaa", res[842].exec("aaaaa"), 2627); -assertToStringEquals("1234", res[842].exec("123456"), 2628); -assertToStringEquals("From abcd Mon Sep 01 12:33,abcd", res[843].exec("From abcd Mon Sep 01 12:33:02 1997"), 2629); -assertToStringEquals("From abcd Mon Sep 01 12:33,Sep ", res[844].exec("From abcd Mon Sep 01 12:33:02 1997"), 2630); -assertToStringEquals("From abcd Mon Sep 1 12:33,Sep ", res[844].exec("From abcd Mon Sep 1 12:33:02 1997"), 2631); -assertNull(res[844].exec("*** Failers", 2632)); -assertNull(res[844].exec("From abcd Sep 01 12:33:02 1997", 2633)); -assertNull(res[845].exec("12\n34", 2634)); -assertNull(res[845].exec("12\x0d34", 2635)); -assertToStringEquals("brown", res[846].exec("the quick brown\x09 fox"), 2636); -assertToStringEquals("foolish see?,lish see?", res[847].exec("foobar is foolish see?"), 2637); -assertToStringEquals("rowbar etc, etc", res[848].exec("foobar crowbar etc"), 2638); -assertToStringEquals("barrel,rel", res[848].exec("barrel"), 2639); -assertToStringEquals("2barrel,rel", res[848].exec("2barrel"), 2640); -assertToStringEquals("A barrel,rel", res[848].exec("A barrel"), 2641); -assertToStringEquals("abc,abc", res[849].exec("abc456"), 2642); -assertNull(res[849].exec("*** Failers", 2643)); -assertNull(res[849].exec("abc123", 2644)); -assertToStringEquals("1234", res[850].exec("1234"), 2645); -assertToStringEquals("1234", res[851].exec("1234"), 2646); -assertToStringEquals("abcd", res[852].exec("abcd"), 2647); -assertToStringEquals("abcd", res[853].exec("abcd"), 2648); -assertToStringEquals("abc", res[854].exec("the abc"), 2649); -assertNull(res[854].exec("*** Failers", 2650)); -assertNull(res[854].exec("abc", 2651)); -assertToStringEquals("abc", res[855].exec("abc"), 2652); -assertNull(res[855].exec("*** Failers", 2653)); -assertNull(res[855].exec("the abc", 2654)); -assertToStringEquals("aabb,b", res[856].exec("aabbbbb"), 2655); -assertToStringEquals("aabbbbb,abbbbb", res[857].exec("aabbbbb"), 2656); -assertToStringEquals("aa,a", res[858].exec("aabbbbb"), 2657); -assertToStringEquals("aabb,b", res[859].exec("aabbbbb"), 2658); -assertToStringEquals("Alan Other ", res[860].exec("Alan Other "), 2659); -assertToStringEquals("user@dom.ain", res[860].exec(""), 2660); -assertToStringEquals("user@dom.ain", res[860].exec("user@dom.ain"), 2661); -assertToStringEquals("\"A. Other\" (a comment)", res[860].exec("\"A. Other\" (a comment)"), 2662); -assertToStringEquals(" Other (a comment)", res[860].exec("A. Other (a comment)"), 2663); -assertToStringEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[860].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2664); -assertToStringEquals("user@some.where", res[860].exec("A missing angle ", res[861].exec("Alan Other "), 2668); -assertToStringEquals("user@dom.ain", res[861].exec(""), 2669); -assertToStringEquals("user@dom.ain", res[861].exec("user@dom.ain"), 2670); -assertToStringEquals("\"A. Other\" ", res[861].exec("\"A. Other\" (a comment)"), 2671); -assertToStringEquals(" Other ", res[861].exec("A. Other (a comment)"), 2672); -assertToStringEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[861].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2673); -assertToStringEquals("user@some.where", res[861].exec("A missing angle \x09\n\x0c\x0d\x0b<", 3716)); -assertNull(res[1271].exec(" ", 3717)); -assertNull(res[1272].exec("> \x09\n\x0c\x0d\x0b<", 3718)); -assertNull(res[1272].exec(" ", 3719)); -assertToStringEquals(" \x09\n\x0c\x0d\x0b", res[1273].exec("> \x09\n\x0c\x0d\x0b<"), 3720); -assertToStringEquals(" ", res[1273].exec(" "), 3721); -assertToStringEquals(" \x09\n\x0c\x0d\x0b", res[1274].exec("> \x09\n\x0c\x0d\x0b<"), 3722); -assertToStringEquals(" ", res[1274].exec(" "), 3723); -assertNull(res[1275].exec("ab", 3724)); -assertNull(res[1278].exec("abcabcabc", 3725)); -assertNull(res[1278].exec("abc(*+|abc ", 3726)); -assertNull(res[1279].exec("abc abcabc", 3727)); -assertNull(res[1279].exec("*** Failers", 3728)); -assertNull(res[1279].exec("abcabcabc ", 3729)); -assertNull(res[1280].exec("abc#not comment\n literal ", 3730)); -assertNull(res[1281].exec("abc#not comment\n literal ", 3731)); -assertNull(res[1282].exec("abc#not comment\n literal ", 3732)); -assertNull(res[1283].exec("abc#not comment\n literal ", 3733)); -assertNull(res[1284].exec("abc\\$xyz", 3734)); -assertNull(res[1285].exec("abc$xyz", 3735)); -assertNull(res[1286].exec("abc", 3736)); -assertNull(res[1286].exec("*** Failers", 3737)); -assertNull(res[1286].exec("xyzabc ", 3738)); -assertNull(res[1287].exec("abc1abc2xyzabc3", 3739)); -assertToStringEquals("abc1", res[1288].exec("abc1abc2xyzabc3 "), 3740); -assertNull(res[1288].exec("XabcdY", 3741)); -assertNull(res[1288].exec("*** Failers ", 3742)); -assertNull(res[1288].exec("Xa b c d Y ", 3743)); -assertToStringEquals("abcY", res[1288].exec("XabcY"), 3744); -assertNull(res[1288].exec("AxyzB ", 3745)); -assertNull(res[1288].exec("XabCY", 3746)); -assertNull(res[1288].exec("*** Failers", 3747)); -assertToStringEquals("abcY", res[1288].exec("XabcY "), 3748); -assertNull(res[1288].exec("abCE", 3749)); -assertNull(res[1288].exec("DE", 3750)); -assertNull(res[1288].exec("*** Failers", 3751)); -assertToStringEquals("abcE", res[1288].exec("abcE"), 3752); -assertNull(res[1288].exec("abCe ", 3753)); -assertNull(res[1288].exec("dE", 3754)); -assertNull(res[1288].exec("De ", 3755)); -assertNull(res[1289].exec("z", 3756)); -assertNull(res[1289].exec("a", 3757)); -assertNull(res[1289].exec("-", 3758)); -assertNull(res[1289].exec("d", 3759)); -assertNull(res[1289].exec("] ", 3760)); -assertNull(res[1289].exec("*** Failers", 3761)); -assertNull(res[1289].exec("b ", 3762)); -assertToStringEquals("z", res[1290].exec("z"), 3763); -assertToStringEquals("C", res[1290].exec("C "), 3764); -assertToStringEquals("M", res[1291].exec("M "), 3765); -assertNull(res[1292].exec("", 3766)); -assertNull(res[1292].exec("REGular", 3767)); -assertNull(res[1292].exec("regulaer", 3768)); -assertNull(res[1292].exec("Regex ", 3769)); -assertNull(res[1292].exec("regul\ufffdr ", 3770)); -assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3771)); -assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3772)); -assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3773)); -assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3774)); -assertNull(res[1292].exec("\x84XAZXB", 3775)); -assertNull(res[1292].exec("123a", 3776)); -assertNull(res[1292].exec("ac", 3777)); -assertToStringEquals("b,", res[1292].exec("bbbbc"), 3778); -assertToStringEquals("ab,a", res[1292].exec("abc"), 3779); -assertNull(res[1292].exec("*** Failers", 3780)); -assertToStringEquals("b,", res[1292].exec("bca"), 3781); -assertNull(res[1292].exec("", 3782)); -assertToStringEquals("ab,a", res[1292].exec("abc"), 3783); -assertNull(res[1292].exec("*** Failers", 3784)); -assertToStringEquals("b,", res[1292].exec("bca"), 3785); -assertToStringEquals("ab,a", res[1292].exec("abc"), 3786); -assertNull(res[1292].exec("*** Failers", 3787)); -assertNull(res[1292].exec("def ", 3788)); -assertNull(res[1292].exec("", 3789)); -assertToStringEquals("ab,a", res[1292].exec("abc"), 3790); -assertNull(res[1292].exec("*** Failers", 3791)); -assertNull(res[1292].exec("def ", 3792)); -assertNull(res[1292].exec("", 3793)); -assertToStringEquals("line\nbreak", res[1293].exec("this is a line\nbreak"), 3794); -assertToStringEquals("line\nbreak", res[1293].exec("line one\nthis is a line\nbreak in the second line "), 3795); -assertToStringEquals("line\nbreak", res[1294].exec("this is a line\nbreak"), 3796); -assertNull(res[1294].exec("** Failers ", 3797)); -assertToStringEquals("line\nbreak", res[1294].exec("line one\nthis is a line\nbreak in the second line "), 3798); -assertToStringEquals("line\nbreak", res[1295].exec("this is a line\nbreak"), 3799); -assertNull(res[1295].exec("** Failers ", 3800)); -assertToStringEquals("line\nbreak", res[1295].exec("line one\nthis is a line\nbreak in the second line "), 3801); -assertNull(res[1296].exec("123P", 3802)); -assertNull(res[1296].exec("a4PR", 3803)); -assertNull(res[1297].exec("123P", 3804)); -assertNull(res[1297].exec("4PR", 3805)); -assertToStringEquals("", res[1298].exec("a\nb\nc\n"), 3806); -assertToStringEquals("", res[1298].exec(" "), 3807); -assertToStringEquals("", res[1298].exec("A\nC\nC\n "), 3808); -assertToStringEquals("", res[1298].exec("AB"), 3809); -assertToStringEquals("", res[1298].exec("aB "), 3810); -assertToStringEquals("", res[1298].exec("AB"), 3811); -assertToStringEquals("", res[1298].exec("aB "), 3812); -assertToStringEquals("", res[1298].exec("AB"), 3813); -assertToStringEquals("", res[1298].exec("aB "), 3814); -assertToStringEquals("", res[1298].exec("AB"), 3815); -assertToStringEquals("", res[1298].exec("aB "), 3816); -assertToStringEquals("Content-Type:xxxxxyyy ", res[1299].exec("Content-Type:xxxxxyyy "), 3817); -assertToStringEquals("Content-Type:xxxxxyyyz", res[1300].exec("Content-Type:xxxxxyyyz"), 3818); -assertToStringEquals("Content-Type:xxxyyy ", res[1301].exec("Content-Type:xxxyyy "), 3819); -assertToStringEquals("Content-Type:xxxyyyz", res[1302].exec("Content-Type:xxxyyyz"), 3820); -assertToStringEquals("abc", res[1303].exec("xyz\nabc"), 3821); -assertToStringEquals("abc", res[1303].exec("xyz\nabc"), 3822); -assertToStringEquals("abc", res[1303].exec("xyz\x0d\nabc"), 3823); -assertToStringEquals("abc", res[1303].exec("xyz\x0dabc"), 3824); -assertToStringEquals("abc", res[1303].exec("xyz\x0d\nabc"), 3825); -assertNull(res[1303].exec("** Failers ", 3826)); -assertToStringEquals("abc", res[1303].exec("xyz\nabc"), 3827); -assertToStringEquals("abc", res[1303].exec("xyz\x0d\nabc"), 3828); -assertToStringEquals("abc", res[1303].exec("xyz\nabc"), 3829); -assertToStringEquals("abc", res[1303].exec("xyz\x0dabc"), 3830); -assertToStringEquals("abc", res[1303].exec("xyz\x0dabc"), 3831); -assertToStringEquals("abc", res[1304].exec("xyzabc"), 3832); -assertToStringEquals("abc", res[1304].exec("xyzabc\n "), 3833); -assertToStringEquals("abc", res[1304].exec("xyzabc\npqr "), 3834); -assertToStringEquals("abc", res[1304].exec("xyzabc\x0d "), 3835); -assertToStringEquals("abc", res[1304].exec("xyzabc\x0dpqr "), 3836); -assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\n "), 3837); -assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\npqr "), 3838); -assertNull(res[1304].exec("** Failers", 3839)); -assertToStringEquals("abc", res[1304].exec("xyzabc\x0d "), 3840); -assertToStringEquals("abc", res[1304].exec("xyzabc\x0dpqr "), 3841); -assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\n "), 3842); -assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\npqr "), 3843); -assertToStringEquals("abc", res[1305].exec("xyz\x0dabcdef"), 3844); -assertToStringEquals("abc", res[1305].exec("xyz\nabcdef"), 3845); -assertNull(res[1305].exec("** Failers ", 3846)); -assertToStringEquals("abc", res[1305].exec("xyz\nabcdef"), 3847); -assertNull(res[1305].exec(" ", 3848)); -assertToStringEquals("abc", res[1306].exec("xyz\nabcdef"), 3849); -assertToStringEquals("abc", res[1306].exec("xyz\x0dabcdef"), 3850); -assertNull(res[1306].exec("** Failers ", 3851)); -assertToStringEquals("abc", res[1306].exec("xyz\x0dabcdef"), 3852); -assertNull(res[1306].exec(" ", 3853)); -assertToStringEquals("abc", res[1307].exec("xyz\x0d\nabcdef"), 3854); -assertToStringEquals("abc", res[1307].exec("xyz\x0dabcdef"), 3855); -assertNull(res[1307].exec("** Failers ", 3856)); -assertToStringEquals("abc", res[1307].exec("xyz\x0dabcdef"), 3857); -assertToStringEquals("abc", res[1308].exec("abc\ndef"), 3858); -assertToStringEquals("abc", res[1308].exec("abc\x0ddef"), 3859); -assertToStringEquals("abc", res[1308].exec("abc\x0d\ndef"), 3860); -assertToStringEquals("abc", res[1308].exec("abc\ndef"), 3861); -assertToStringEquals("abc", res[1308].exec("abc\x0ddef"), 3862); -assertToStringEquals("abc", res[1308].exec("abc\x0d\ndef"), 3863); -assertToStringEquals("abc", res[1308].exec("abc\ndef"), 3864); -assertToStringEquals("abc", res[1308].exec("abc\x0ddef"), 3865); -assertToStringEquals("abc", res[1308].exec("abc\x0d\ndef"), 3866); -assertNull(res[1309].exec("abc\ndef", 3867)); -assertNull(res[1309].exec("abc\x0ddef", 3868)); -assertNull(res[1309].exec("abc\x0d\ndef", 3869)); -assertToStringEquals("abc=xyz\\,", res[1310].exec("abc=xyz\\\npqr"), 3870); -assertToStringEquals("aaaa,a,", res[1311].exec("aaaa"), 3871); -assertToStringEquals("aaaa", res[1312].exec("aaaa"), 3872); -assertToStringEquals("aaaa,a,", res[1313].exec("aaaa"), 3873); -assertToStringEquals("aaaa", res[1314].exec("aaaa"), 3874); -assertNull(res[1317].exec("a\x0db", 3875)); -assertNull(res[1317].exec("a\nb ", 3876)); -assertNull(res[1317].exec("** Failers", 3877)); -assertNull(res[1317].exec("a\nb", 3878)); -assertNull(res[1317].exec("a\nb", 3879)); -assertNull(res[1317].exec("a\x0db ", 3880)); -assertNull(res[1317].exec("a\x0db ", 3881)); -assertToStringEquals("abc1", res[1318].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 3882); -assertToStringEquals("abc1", res[1319].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 3883); -assertNull(res[1320].exec("a\nb", 3884)); -assertNull(res[1320].exec("a\x0db", 3885)); -assertNull(res[1320].exec("a\x0d\nb", 3886)); -assertNull(res[1320].exec("a\x0bb", 3887)); -assertNull(res[1320].exec("a\x0cb", 3888)); -assertNull(res[1320].exec("a\x85b ", 3889)); -assertNull(res[1320].exec("** Failers", 3890)); -assertNull(res[1320].exec("a\n\x0db ", 3891)); -assertToStringEquals("ab", res[1321].exec("ab"), 3892); -assertNull(res[1321].exec("a\nb", 3893)); -assertNull(res[1321].exec("a\x0db", 3894)); -assertNull(res[1321].exec("a\x0d\nb", 3895)); -assertNull(res[1321].exec("a\x0bb", 3896)); -assertNull(res[1321].exec("a\x0cb", 3897)); -assertNull(res[1321].exec("a\x85b ", 3898)); -assertNull(res[1321].exec("a\n\x0db ", 3899)); -assertNull(res[1321].exec("a\n\x0d\x85\x0cb ", 3900)); -assertNull(res[1322].exec("a\nb", 3901)); -assertNull(res[1322].exec("a\x0db", 3902)); -assertNull(res[1322].exec("a\x0d\nb", 3903)); -assertNull(res[1322].exec("a\x0bb", 3904)); -assertNull(res[1322].exec("a\x0cb", 3905)); -assertNull(res[1322].exec("a\x85b ", 3906)); -assertNull(res[1322].exec("a\n\x0db ", 3907)); -assertNull(res[1322].exec("a\n\x0d\x85\x0cb ", 3908)); -assertNull(res[1322].exec("** Failers", 3909)); -assertNull(res[1322].exec("ab ", 3910)); -assertNull(res[1323].exec("a\nb", 3911)); -assertNull(res[1323].exec("a\n\x0db", 3912)); -assertNull(res[1323].exec("a\n\x0d\x85b", 3913)); -assertNull(res[1323].exec("a\x0d\n\x0d\nb ", 3914)); -assertNull(res[1323].exec("a\x0d\n\x0d\n\x0d\nb ", 3915)); -assertNull(res[1323].exec("a\n\x0d\n\x0db", 3916)); -assertNull(res[1323].exec("a\n\n\x0d\nb ", 3917)); -assertNull(res[1323].exec("** Failers", 3918)); -assertNull(res[1323].exec("a\n\n\n\x0db", 3919)); -assertNull(res[1323].exec("a\x0d", 3920)); -assertToStringEquals("aRb", res[1324].exec("aRb"), 3921); -assertNull(res[1324].exec("** Failers", 3922)); -assertNull(res[1324].exec("a\nb ", 3923)); -assertToStringEquals("afoo", res[1325].exec("afoo"), 3924); -assertNull(res[1325].exec("** Failers ", 3925)); -assertNull(res[1325].exec("\x0d\nfoo ", 3926)); -assertNull(res[1325].exec("\nfoo ", 3927)); -assertToStringEquals("afoo", res[1326].exec("afoo"), 3928); -assertNull(res[1326].exec("\nfoo ", 3929)); -assertNull(res[1326].exec("** Failers ", 3930)); -assertNull(res[1326].exec("\x0d\nfoo ", 3931)); -assertToStringEquals("afoo", res[1327].exec("afoo"), 3932); -assertNull(res[1327].exec("** Failers ", 3933)); -assertNull(res[1327].exec("\nfoo ", 3934)); -assertNull(res[1327].exec("\x0d\nfoo ", 3935)); -assertToStringEquals("afoo", res[1328].exec("afoo"), 3936); -assertNull(res[1328].exec("\x0d\nfoo ", 3937)); -assertNull(res[1328].exec("\nfoo ", 3938)); -assertToStringEquals("", res[1329].exec("abc\x0d\x0dxyz"), 3939); -assertToStringEquals("", res[1329].exec("abc\n\x0dxyz "), 3940); -assertNull(res[1329].exec("** Failers ", 3941)); -assertToStringEquals("", res[1329].exec("abc\x0d\nxyz"), 3942); -assertToStringEquals("X", res[1330].exec("XABC"), 3943); -assertNull(res[1330].exec("** Failers ", 3944)); -assertToStringEquals("X", res[1330].exec("XABCB"), 3945); -assertNull(res[1330].exec("abc\x0d\n\x0d\n", 3946)); -assertNull(res[1330].exec("abc\x0d\n\x0d\n", 3947)); -assertNull(res[1330].exec("abc\x0d\n\x0d\n", 3948)); -assertThrows("var re = /(?|(abc)|(xyz))/;"); -assertThrows("var re = /(x)(?|(abc)|(xyz))(x)/;"); -assertNull(res[1330].exec("xabcx", 3951)); -assertNull(res[1330].exec("xxyzx ", 3952)); -assertThrows("var re = /(x)(?|(abc)(pqr)|(xyz))(x)/;"); -assertNull(res[1330].exec("xabcpqrx", 3954)); -assertNull(res[1330].exec("xxyzx ", 3955)); -assertNull(res[1330].exec("abcabc", 3956)); -assertNull(res[1330].exec("xyzabc ", 3957)); -assertNull(res[1330].exec("** Failers ", 3958)); -assertNull(res[1330].exec("xyzxyz ", 3959)); -assertNull(res[1331].exec("X X\n", 3960)); -assertNull(res[1331].exec("X\x09X\x0b", 3961)); -assertNull(res[1331].exec("** Failers", 3962)); -assertNull(res[1331].exec("\xa0 X\n ", 3963)); -assertNull(res[1332].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 3964)); -assertNull(res[1332].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 3965)); -assertNull(res[1332].exec("\x09 \xa0\n\x0b\x0c", 3966)); -assertNull(res[1332].exec("** Failers ", 3967)); -assertNull(res[1332].exec("\x09 \xa0\n\x0b", 3968)); -assertNull(res[1332].exec(" ", 3969)); -assertNull(res[1333].exec("XY ABCDE", 3970)); -assertNull(res[1333].exec("XY PQR ST ", 3971)); -assertNull(res[1334].exec("XY AB PQRS", 3972)); -assertNull(res[1335].exec(">XNNNYZ", 3973)); -assertNull(res[1335].exec("> X NYQZ", 3974)); -assertNull(res[1335].exec("** Failers", 3975)); -assertNull(res[1335].exec(">XYZ ", 3976)); -assertNull(res[1335].exec("> X NY Z", 3977)); -assertNull(res[1336].exec(">XY\nZ\nA\x0bNN\x0c", 3978)); -assertNull(res[1336].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 3979)); -assertNull(res[1337].exec("\x0d\nA", 3980)); -assertToStringEquals("\nA", res[1338].exec("\x0d\nA "), 3981); -assertToStringEquals("\nA", res[1339].exec("\x0d\nA "), 3982); -assertToStringEquals("\nA,\n", res[1340].exec("\x0d\nA "), 3983); -assertNull(res[1341].exec("a\x0db", 3984)); -assertNull(res[1341].exec("a\nb", 3985)); -assertNull(res[1341].exec("a\x0d\nb", 3986)); -assertNull(res[1341].exec("** Failers", 3987)); -assertNull(res[1341].exec("a\x85b", 3988)); -assertNull(res[1341].exec("a\x0bb ", 3989)); -assertNull(res[1342].exec("a\x0db", 3990)); -assertNull(res[1342].exec("a\nb", 3991)); -assertNull(res[1342].exec("a\x0d\nb", 3992)); -assertNull(res[1342].exec("a\x85b", 3993)); -assertNull(res[1342].exec("a\x0bb ", 3994)); -assertNull(res[1342].exec("** Failers ", 3995)); -assertNull(res[1342].exec("a\x85b", 3996)); -assertNull(res[1342].exec("a\x0bb", 3997)); -assertNull(res[1343].exec("a\x0db", 3998)); -assertNull(res[1343].exec("a\nb", 3999)); -assertNull(res[1343].exec("a\x0d\nb", 4000)); -assertNull(res[1343].exec("** Failers", 4001)); -assertNull(res[1343].exec("a\x85b", 4002)); -assertNull(res[1343].exec("a\x0bb ", 4003)); -assertNull(res[1344].exec("a\x0db", 4004)); -assertNull(res[1344].exec("a\nb", 4005)); -assertNull(res[1344].exec("a\x0d\nb", 4006)); -assertNull(res[1344].exec("a\x85b", 4007)); -assertNull(res[1344].exec("a\x0bb ", 4008)); -assertNull(res[1344].exec("** Failers ", 4009)); -assertNull(res[1344].exec("a\x85b", 4010)); -assertNull(res[1344].exec("a\x0bb", 4011)); -assertNull(res[1345].exec("a\x0d\n\nb", 4012)); -assertNull(res[1345].exec("a\n\x0d\x0db", 4013)); -assertNull(res[1345].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 4014)); -assertNull(res[1345].exec("** Failers", 4015)); -assertNull(res[1345].exec("a\x8585b", 4016)); -assertNull(res[1345].exec("a\x0b\x00bb ", 4017)); -assertNull(res[1346].exec("a\x0d\x0db", 4018)); -assertNull(res[1346].exec("a\n\n\nb", 4019)); -assertNull(res[1346].exec("a\x0d\n\n\x0d\x0db", 4020)); -assertNull(res[1346].exec("a\x8585b", 4021)); -assertNull(res[1346].exec("a\x0b\x00bb ", 4022)); -assertNull(res[1346].exec("** Failers ", 4023)); -assertNull(res[1346].exec("a\x0d\x0d\x0d\x0d\x0db ", 4024)); -assertNull(res[1346].exec("a\x8585b", 4025)); -assertNull(res[1346].exec("a\x0b\x00bb", 4026)); -assertToStringEquals("abc", res[1347].exec("abc "), 4027); -assertNull(res[1348].exec("** Failers", 4028)); -assertNull(res[1348].exec("ab", 4029)); -assertNull(res[1349].exec("** Failers", 4030)); -assertNull(res[1349].exec("ab ", 4031)); -assertNull(res[1349].exec("** Failers", 4032)); -assertNull(res[1349].exec("ab ", 4033)); -assertToStringEquals("aXb", res[1350].exec("aXb"), 4034); -assertToStringEquals("a\nb", res[1350].exec("a\nb "), 4035); -assertNull(res[1350].exec("** Failers", 4036)); -assertNull(res[1350].exec("ab ", 4037)); -assertToStringEquals("aXb", res[1351].exec("aXb"), 4038); -assertToStringEquals("a\nX\nXb", res[1351].exec("a\nX\nXb "), 4039); -assertNull(res[1351].exec("** Failers", 4040)); -assertNull(res[1351].exec("ab ", 4041)); -assertNull(res[1352].exec("ab", 4042)); -assertNull(res[1352].exec("ax{100}b ", 4043)); -assertNull(res[1352].exec("ax{100}x{100}b ", 4044)); -assertNull(res[1352].exec("ax{100}b ", 4045)); -assertNull(res[1352].exec("ax{100}x{100}b ", 4046)); -assertNull(res[1352].exec("*** Failers ", 4047)); -assertNull(res[1352].exec("ab", 4048)); -assertNull(res[1352].exec(" ", 4049)); -assertToStringEquals("X", res[1353].exec("Xoanon"), 4050); -assertToStringEquals("X", res[1353].exec("+Xoanon"), 4051); -assertToStringEquals("X", res[1353].exec("x{300}Xoanon "), 4052); -assertNull(res[1353].exec("*** Failers ", 4053)); -assertNull(res[1353].exec("YXoanon ", 4054)); -assertToStringEquals("X", res[1354].exec("YXoanon"), 4055); -assertNull(res[1354].exec("*** Failers", 4056)); -assertNull(res[1354].exec("Xoanon", 4057)); -assertNull(res[1354].exec("+Xoanon ", 4058)); -assertNull(res[1354].exec("x{300}Xoanon ", 4059)); -assertToStringEquals("X", res[1355].exec("X+oanon"), 4060); -assertNull(res[1355].exec("ZXx{300}oanon ", 4061)); -assertToStringEquals("X", res[1355].exec("FAX "), 4062); -assertNull(res[1355].exec("*** Failers ", 4063)); -assertNull(res[1355].exec("Xoanon ", 4064)); -assertToStringEquals("X", res[1356].exec("Xoanon "), 4065); -assertNull(res[1356].exec("*** Failers", 4066)); -assertNull(res[1356].exec("X+oanon", 4067)); -assertToStringEquals("X", res[1356].exec("ZXx{300}oanon "), 4068); -assertNull(res[1356].exec("FAX ", 4069)); -assertToStringEquals("b", res[1357].exec("abcd"), 4070); -assertToStringEquals("x", res[1357].exec("ax{100} "), 4071); -assertToStringEquals("b", res[1357].exec("ab99"), 4072); -assertToStringEquals("x", res[1357].exec("x{123}x{123}45"), 4073); -assertToStringEquals("x", res[1357].exec("x{400}x{401}x{402}6 "), 4074); -assertToStringEquals("*", res[1357].exec("*** Failers"), 4075); -assertToStringEquals("d", res[1357].exec("d99"), 4076); -assertToStringEquals("x", res[1357].exec("x{123}x{122}4 "), 4077); -assertToStringEquals("x", res[1357].exec("x{400}x{403}6 "), 4078); -assertToStringEquals("x", res[1357].exec("x{400}x{401}x{402}x{402}6 "), 4079); -assertNull(res[1358].exec("\ufffd]", 4080)); -assertNull(res[1358].exec("\ufffd", 4081)); -assertNull(res[1358].exec("\ufffd\ufffd\ufffd", 4082)); -assertNull(res[1358].exec("\ufffd\ufffd\ufffd?", 4083)); -assertToStringEquals("acb", res[1359].exec("acb"), 4084); -assertToStringEquals("ab", res[1359].exec("ab"), 4085); -assertNull(res[1359].exec("ax{100}b ", 4086)); -assertNull(res[1359].exec("*** Failers", 4087)); -assertNull(res[1359].exec("a\nb ", 4088)); -assertNull(res[1360].exec("ax{4000}xyb ", 4089)); -assertNull(res[1360].exec("ax{4000}yb ", 4090)); -assertNull(res[1360].exec("ax{4000}x{100}yb ", 4091)); -assertNull(res[1360].exec("*** Failers", 4092)); -assertNull(res[1360].exec("ax{4000}b ", 4093)); -assertNull(res[1360].exec("ac\ncb ", 4094)); -assertToStringEquals("a\xc0,,\xc0", res[1361].exec("a\xc0\x88b"), 4095); -assertToStringEquals("ax,,x", res[1362].exec("ax{100}b"), 4096); -assertToStringEquals("a\xc0\x88b,\xc0\x88,b", res[1363].exec("a\xc0\x88b"), 4097); -assertToStringEquals("ax{100}b,x{100},b", res[1364].exec("ax{100}b"), 4098); -assertToStringEquals("a\xc0\x92,\xc0,\x92", res[1365].exec("a\xc0\x92bcd"), 4099); -assertToStringEquals("ax{,x,{", res[1366].exec("ax{240}bcd"), 4100); -assertToStringEquals("a\xc0\x92,\xc0,\x92", res[1367].exec("a\xc0\x92bcd"), 4101); -assertToStringEquals("ax{,x,{", res[1368].exec("ax{240}bcd"), 4102); -assertToStringEquals("a\xc0,,\xc0", res[1369].exec("a\xc0\x92bcd"), 4103); -assertToStringEquals("ax,,x", res[1370].exec("ax{240}bcd"), 4104); -assertNull(res[1371].exec("ax{1234}xyb ", 4105)); -assertNull(res[1371].exec("ax{1234}x{4321}yb ", 4106)); -assertNull(res[1371].exec("ax{1234}x{4321}x{3412}b ", 4107)); -assertNull(res[1371].exec("*** Failers", 4108)); -assertNull(res[1371].exec("ax{1234}b ", 4109)); -assertNull(res[1371].exec("ac\ncb ", 4110)); -assertToStringEquals("ax{1234}xyb,x{1234}xy", res[1372].exec("ax{1234}xyb "), 4111); -assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1372].exec("ax{1234}x{4321}yb "), 4112); -assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1372].exec("ax{1234}x{4321}x{3412}b "), 4113); -assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij", res[1372].exec("axxxxbcdefghijb "), 4114); -assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1372].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4115); -assertNull(res[1372].exec("*** Failers", 4116)); -assertToStringEquals("ax{1234}b,x{1234}", res[1372].exec("ax{1234}b "), 4117); -assertToStringEquals("ax{1234}xyb,x{1234}xy", res[1373].exec("ax{1234}xyb "), 4118); -assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1373].exec("ax{1234}x{4321}yb "), 4119); -assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1373].exec("ax{1234}x{4321}x{3412}b "), 4120); -assertToStringEquals("axxxxb,xxxx", res[1373].exec("axxxxbcdefghijb "), 4121); -assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1373].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4122); -assertNull(res[1373].exec("*** Failers", 4123)); -assertToStringEquals("ax{1234}b,x{1234}", res[1373].exec("ax{1234}b "), 4124); -assertNull(res[1374].exec("ax{1234}xyb ", 4125)); -assertNull(res[1374].exec("ax{1234}x{4321}yb ", 4126)); -assertNull(res[1374].exec("ax{1234}x{4321}x{3412}b ", 4127)); -assertToStringEquals("axxxxb,xxxx", res[1374].exec("axxxxbcdefghijb "), 4128); -assertNull(res[1374].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4129)); -assertToStringEquals("axbxxb,xbxx", res[1374].exec("axbxxbcdefghijb "), 4130); -assertToStringEquals("axxxxxb,xxxxx", res[1374].exec("axxxxxbcdefghijb "), 4131); -assertNull(res[1374].exec("*** Failers", 4132)); -assertNull(res[1374].exec("ax{1234}b ", 4133)); -assertNull(res[1374].exec("axxxxxxbcdefghijb ", 4134)); -assertNull(res[1375].exec("ax{1234}xyb ", 4135)); -assertNull(res[1375].exec("ax{1234}x{4321}yb ", 4136)); -assertNull(res[1375].exec("ax{1234}x{4321}x{3412}b ", 4137)); -assertToStringEquals("axxxxb,xxxx", res[1375].exec("axxxxbcdefghijb "), 4138); -assertNull(res[1375].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4139)); -assertToStringEquals("axbxxb,xbxx", res[1375].exec("axbxxbcdefghijb "), 4140); -assertToStringEquals("axxxxxb,xxxxx", res[1375].exec("axxxxxbcdefghijb "), 4141); -assertNull(res[1375].exec("*** Failers", 4142)); -assertNull(res[1375].exec("ax{1234}b ", 4143)); -assertNull(res[1375].exec("axxxxxxbcdefghijb ", 4144)); -assertNull(res[1375].exec("*** Failers", 4145)); -assertNull(res[1375].exec("x{100}", 4146)); -assertNull(res[1375].exec("aXbcd", 4147)); -assertNull(res[1375].exec("ax{100}bcd", 4148)); -assertNull(res[1375].exec("ax{100000}bcd", 4149)); -assertNull(res[1375].exec("x{100}x{100}x{100}b", 4150)); -assertNull(res[1375].exec("*** Failers ", 4151)); -assertNull(res[1375].exec("x{100}x{100}b", 4152)); -assertNull(res[1375].exec("x{ab} ", 4153)); -assertNull(res[1375].exec("\xc2\xab", 4154)); -assertNull(res[1375].exec("*** Failers ", 4155)); -assertNull(res[1375].exec("\x00{ab}", 4156)); -assertNull(res[1375].exec("WXYZ", 4157)); -assertNull(res[1375].exec("x{256}XYZ ", 4158)); -assertNull(res[1375].exec("*** Failers", 4159)); -assertNull(res[1375].exec("XYZ ", 4160)); -assertToStringEquals("bcd", res[1376].exec("bcd"), 4161); -assertToStringEquals("00}", res[1376].exec("x{100}aYx{256}Z "), 4162); -assertToStringEquals("x{", res[1377].exec("x{100}bc"), 4163); -assertToStringEquals("x{100}bcA", res[1378].exec("x{100}bcAa"), 4164); -assertToStringEquals("x{", res[1379].exec("x{100}bca"), 4165); -assertToStringEquals("bcd", res[1380].exec("bcd"), 4166); -assertToStringEquals("00}", res[1380].exec("x{100}aYx{256}Z "), 4167); -assertToStringEquals("x{", res[1381].exec("x{100}bc"), 4168); -assertToStringEquals("x{100}bc", res[1382].exec("x{100}bcAa"), 4169); -assertToStringEquals("x{", res[1383].exec("x{100}bca"), 4170); -assertNull(res[1383].exec("abcd", 4171)); -assertNull(res[1383].exec("abcd", 4172)); -assertToStringEquals("x{", res[1383].exec("x{100}x{100} "), 4173); -assertToStringEquals("x{", res[1383].exec("x{100}x{100} "), 4174); -assertToStringEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4175); -assertNull(res[1383].exec("abce", 4176)); -assertToStringEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4177); -assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4178)); -assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4179)); -assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4180)); -assertNull(res[1383].exec("abcdx{100}x{100}x{100}XX", 4181)); -assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4182)); -assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4183)); -assertToStringEquals("Xy", res[1383].exec("Xyyyax{100}x{100}bXzzz"), 4184); -assertToStringEquals("X", res[1386].exec("1X2"), 4185); -assertToStringEquals("x", res[1386].exec("1x{100}2 "), 4186); -assertToStringEquals(">X", res[1387].exec("> >X Y"), 4187); -assertToStringEquals(">x", res[1387].exec("> >x{100} Y"), 4188); -assertToStringEquals("1", res[1388].exec("x{100}3"), 4189); -assertToStringEquals(" ", res[1389].exec("x{100} X"), 4190); -assertToStringEquals("abcd", res[1390].exec("12abcd34"), 4191); -assertToStringEquals("*** Failers", res[1390].exec("*** Failers"), 4192); -assertToStringEquals(" ", res[1390].exec("1234 "), 4193); -assertToStringEquals("abc", res[1391].exec("12abcd34"), 4194); -assertToStringEquals("ab", res[1391].exec("12ab34"), 4195); -assertToStringEquals("***", res[1391].exec("*** Failers "), 4196); -assertNull(res[1391].exec("1234", 4197)); -assertToStringEquals(" ", res[1391].exec("12a34 "), 4198); -assertToStringEquals("ab", res[1392].exec("12abcd34"), 4199); -assertToStringEquals("ab", res[1392].exec("12ab34"), 4200); -assertToStringEquals("**", res[1392].exec("*** Failers "), 4201); -assertNull(res[1392].exec("1234", 4202)); -assertToStringEquals(" ", res[1392].exec("12a34 "), 4203); -assertToStringEquals("12", res[1393].exec("12abcd34"), 4204); -assertNull(res[1393].exec("*** Failers", 4205)); -assertToStringEquals("12", res[1394].exec("12abcd34"), 4206); -assertToStringEquals("123", res[1394].exec("1234abcd"), 4207); -assertNull(res[1394].exec("*** Failers ", 4208)); -assertNull(res[1394].exec("1.4 ", 4209)); -assertToStringEquals("12", res[1395].exec("12abcd34"), 4210); -assertToStringEquals("12", res[1395].exec("1234abcd"), 4211); -assertNull(res[1395].exec("*** Failers ", 4212)); -assertNull(res[1395].exec("1.4 ", 4213)); -assertToStringEquals("12abcd34", res[1396].exec("12abcd34"), 4214); -assertToStringEquals("***", res[1396].exec("*** Failers"), 4215); -assertNull(res[1396].exec(" ", 4216)); -assertToStringEquals("12a", res[1397].exec("12abcd34"), 4217); -assertToStringEquals("123", res[1397].exec("1234abcd"), 4218); -assertToStringEquals("***", res[1397].exec("*** Failers"), 4219); -assertNull(res[1397].exec(" ", 4220)); -assertToStringEquals("12", res[1398].exec("12abcd34"), 4221); -assertToStringEquals("12", res[1398].exec("1234abcd"), 4222); -assertToStringEquals("**", res[1398].exec("*** Failers"), 4223); -assertNull(res[1398].exec(" ", 4224)); -assertToStringEquals("> <", res[1399].exec("12> <34"), 4225); -assertNull(res[1399].exec("*** Failers", 4226)); -assertToStringEquals("> <", res[1400].exec("ab> <", res[1400].exec("ab> <", res[1401].exec("ab> <", res[1401].exec("ab> \xff<"), 4303); -assertNull(res[1409].exec(">x{ff}<", 4304)); -assertToStringEquals("X", res[1410].exec("XYZ"), 4305); -assertToStringEquals("X", res[1411].exec("XYZ"), 4306); -assertToStringEquals("x", res[1411].exec("x{123} "), 4307); -assertToStringEquals(",", res[1416].exec("catac"), 4308); -assertToStringEquals(",", res[1416].exec("ax{256}a "), 4309); -assertToStringEquals(",", res[1416].exec("x{85}"), 4310); -assertToStringEquals("abc1", res[1417].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 4311); -assertToStringEquals("abc1", res[1418].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 4312); -assertNull(res[1419].exec("a\nb", 4313)); -assertNull(res[1419].exec("a\x0db", 4314)); -assertNull(res[1419].exec("a\x0d\nb", 4315)); -assertNull(res[1419].exec("a\x0bb", 4316)); -assertNull(res[1419].exec("a\x0cb", 4317)); -assertNull(res[1419].exec("ax{85}b ", 4318)); -assertNull(res[1419].exec("ax{2028}b ", 4319)); -assertNull(res[1419].exec("ax{2029}b ", 4320)); -assertNull(res[1419].exec("** Failers", 4321)); -assertNull(res[1419].exec("a\n\x0db ", 4322)); -assertToStringEquals("ab", res[1420].exec("ab"), 4323); -assertNull(res[1420].exec("a\nb", 4324)); -assertNull(res[1420].exec("a\x0db", 4325)); -assertNull(res[1420].exec("a\x0d\nb", 4326)); -assertNull(res[1420].exec("a\x0bb", 4327)); -assertNull(res[1420].exec("a\x0cx{2028}x{2029}b", 4328)); -assertNull(res[1420].exec("ax{85}b ", 4329)); -assertNull(res[1420].exec("a\n\x0db ", 4330)); -assertNull(res[1420].exec("a\n\x0dx{85}\x0cb ", 4331)); -assertNull(res[1421].exec("a\nb", 4332)); -assertNull(res[1421].exec("a\x0db", 4333)); -assertNull(res[1421].exec("a\x0d\nb", 4334)); -assertNull(res[1421].exec("a\x0bb", 4335)); -assertNull(res[1421].exec("a\x0cx{2028}x{2029}b", 4336)); -assertNull(res[1421].exec("ax{85}b ", 4337)); -assertNull(res[1421].exec("a\n\x0db ", 4338)); -assertNull(res[1421].exec("a\n\x0dx{85}\x0cb ", 4339)); -assertNull(res[1421].exec("** Failers", 4340)); -assertNull(res[1421].exec("ab ", 4341)); -assertNull(res[1422].exec("a\nb", 4342)); -assertNull(res[1422].exec("a\n\x0db", 4343)); -assertNull(res[1422].exec("a\n\x0dx{85}b", 4344)); -assertNull(res[1422].exec("a\x0d\n\x0d\nb ", 4345)); -assertNull(res[1422].exec("a\x0d\n\x0d\n\x0d\nb ", 4346)); -assertNull(res[1422].exec("a\n\x0d\n\x0db", 4347)); -assertNull(res[1422].exec("a\n\n\x0d\nb ", 4348)); -assertNull(res[1422].exec("** Failers", 4349)); -assertNull(res[1422].exec("a\n\n\n\x0db", 4350)); -assertNull(res[1422].exec("a\x0d", 4351)); -assertNull(res[1423].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4352)); -assertNull(res[1424].exec(" x{a0}X\n\x0b\x0c\x0d\n", 4353)); -assertNull(res[1425].exec(">\x09 x{a0}X\n\n\n<", 4354)); -assertNull(res[1426].exec(">\x09 x{a0}X\n\n\n<", 4355)); -assertNull(res[1427].exec("X X\n", 4356)); -assertNull(res[1427].exec("X\x09X\x0b", 4357)); -assertNull(res[1427].exec("** Failers", 4358)); -assertNull(res[1427].exec("x{a0} X\n ", 4359)); -assertNull(res[1428].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4360)); -assertNull(res[1428].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 4361)); -assertNull(res[1428].exec("\x09 x{a0}\n\x0b\x0c", 4362)); -assertNull(res[1428].exec("** Failers ", 4363)); -assertNull(res[1428].exec("\x09 x{a0}\n\x0b", 4364)); -assertNull(res[1428].exec(" ", 4365)); -assertNull(res[1429].exec("x{3001}x{3000}x{2030}x{2028}", 4366)); -assertNull(res[1429].exec("Xx{180e}Xx{85}", 4367)); -assertNull(res[1429].exec("** Failers", 4368)); -assertNull(res[1429].exec("x{2009} X\n ", 4369)); -assertNull(res[1430].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 4370)); -assertNull(res[1430].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 4371)); -assertNull(res[1430].exec("\x09 x{202f}\n\x0b\x0c", 4372)); -assertNull(res[1430].exec("** Failers ", 4373)); -assertNull(res[1430].exec("\x09x{200a}x{a0}x{2028}\x0b", 4374)); -assertNull(res[1430].exec(" ", 4375)); -assertNull(res[1431].exec("a\x0db", 4376)); -assertNull(res[1431].exec("a\nb", 4377)); -assertNull(res[1431].exec("a\x0d\nb", 4378)); -assertNull(res[1431].exec("** Failers", 4379)); -assertNull(res[1431].exec("ax{85}b", 4380)); -assertNull(res[1431].exec("a\x0bb ", 4381)); -assertNull(res[1432].exec("a\x0db", 4382)); -assertNull(res[1432].exec("a\nb", 4383)); -assertNull(res[1432].exec("a\x0d\nb", 4384)); -assertNull(res[1432].exec("ax{85}b", 4385)); -assertNull(res[1432].exec("a\x0bb ", 4386)); -assertNull(res[1432].exec("** Failers ", 4387)); -assertNull(res[1432].exec("ax{85}b", 4388)); -assertNull(res[1432].exec("a\x0bb", 4389)); -assertNull(res[1433].exec("a\x0db", 4390)); -assertNull(res[1433].exec("a\nb", 4391)); -assertNull(res[1433].exec("a\x0d\nb", 4392)); -assertNull(res[1433].exec("** Failers", 4393)); -assertNull(res[1433].exec("ax{85}b", 4394)); -assertNull(res[1433].exec("a\x0bb ", 4395)); -assertNull(res[1434].exec("a\x0db", 4396)); -assertNull(res[1434].exec("a\nb", 4397)); -assertNull(res[1434].exec("a\x0d\nb", 4398)); -assertNull(res[1434].exec("ax{85}b", 4399)); -assertNull(res[1434].exec("a\x0bb ", 4400)); -assertNull(res[1434].exec("** Failers ", 4401)); -assertNull(res[1434].exec("ax{85}b", 4402)); -assertNull(res[1434].exec("a\x0bb", 4403)); -assertToStringEquals("X", res[1435].exec("Ax{1ec5}ABCXYZ"), 4404); -assertNull(res[1437].exec("AB", 4405)); -assertNull(res[1437].exec("*** Failers", 4406)); -assertNull(res[1437].exec("A0", 4407)); -assertNull(res[1437].exec("00 ", 4408)); -assertNull(res[1438].exec("AB", 4409)); -assertNull(res[1438].exec("Ax{300}BC ", 4410)); -assertNull(res[1438].exec("Ax{300}x{301}x{302}BC ", 4411)); -assertNull(res[1438].exec("*** Failers", 4412)); -assertNull(res[1438].exec("x{300} ", 4413)); -assertNull(res[1439].exec("ABC", 4414)); -assertNull(res[1439].exec("Ax{300}Bx{300}x{301}C ", 4415)); -assertNull(res[1439].exec("Ax{300}x{301}x{302}BC ", 4416)); -assertNull(res[1439].exec("*** Failers", 4417)); -assertNull(res[1439].exec("x{300} ", 4418)); -assertNull(res[1440].exec("abcd", 4419)); -assertNull(res[1440].exec("a ", 4420)); -assertNull(res[1440].exec("*** Failers ", 4421)); -assertNull(res[1441].exec("1234", 4422)); -assertNull(res[1441].exec("= ", 4423)); -assertNull(res[1441].exec("*** Failers ", 4424)); -assertNull(res[1441].exec("abcd ", 4425)); -assertNull(res[1442].exec("abcdAx{300}x{301}x{302}", 4426)); -assertNull(res[1442].exec("Ax{300}x{301}x{302}", 4427)); -assertNull(res[1442].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}", 4428)); -assertNull(res[1442].exec("a ", 4429)); -assertNull(res[1442].exec("*** Failers ", 4430)); -assertNull(res[1442].exec("x{300}x{301}x{302}", 4431)); -assertToStringEquals("abc", res[1443].exec("abc"), 4432); -assertToStringEquals("abc", res[1443].exec("Ax{300}abc"), 4433); -assertToStringEquals("abc", res[1443].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4434); -assertToStringEquals("abc", res[1443].exec("x{300}abc "), 4435); -assertNull(res[1443].exec("*** Failers", 4436)); -assertToStringEquals("abc", res[1444].exec("abc"), 4437); -assertNull(res[1444].exec("Ax{300}abc", 4438)); -assertNull(res[1444].exec("*** Failers", 4439)); -assertNull(res[1444].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4440)); -assertNull(res[1444].exec("x{300}abc ", 4441)); -assertToStringEquals("abc", res[1445].exec("abc"), 4442); -assertToStringEquals("abc", res[1445].exec("Ax{300}abc"), 4443); -assertToStringEquals("abc", res[1445].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4444); -assertToStringEquals("abc", res[1445].exec("x{300}abc "), 4445); -assertNull(res[1445].exec("*** Failers", 4446)); -assertToStringEquals("abc", res[1446].exec("abc"), 4447); -assertNull(res[1446].exec("Ax{300}abc", 4448)); -assertNull(res[1446].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4449)); -assertNull(res[1446].exec("*** Failers", 4450)); -assertNull(res[1446].exec("x{300}abc ", 4451)); -assertNull(res[1447].exec("A=b", 4452)); -assertNull(res[1447].exec("=c ", 4453)); -assertNull(res[1447].exec("*** Failers", 4454)); -assertNull(res[1447].exec("1=2 ", 4455)); -assertNull(res[1447].exec("AAAA=b ", 4456)); -assertNull(res[1448].exec("AAAA=b", 4457)); -assertNull(res[1448].exec("=c ", 4458)); -assertNull(res[1448].exec("*** Failers", 4459)); -assertNull(res[1448].exec("1=2 ", 4460)); -assertNull(res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4461)); -assertNull(res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X ", 4462)); -assertNull(res[1449].exec("*** Failers", 4463)); -assertNull(res[1449].exec("X", 4464)); -assertNull(res[1449].exec("Ax{300}x{301}x{302}X", 4465)); -assertNull(res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4466)); -assertNull(res[1450].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 4467)); -assertNull(res[1450].exec("\npx{300}9!$ < ", 4468)); -assertNull(res[1450].exec("** Failers ", 4469)); -assertNull(res[1450].exec("apx{300}9!$ < ", 4470)); -assertNull(res[1451].exec("X", 4471)); -assertNull(res[1451].exec("** Failers ", 4472)); -assertNull(res[1451].exec("", 4473)); -assertNull(res[1452].exec("9", 4474)); -assertNull(res[1452].exec("** Failers ", 4475)); -assertNull(res[1452].exec("x{c0}", 4476)); -assertNull(res[1453].exec("X", 4477)); -assertNull(res[1453].exec("** Failers ", 4478)); -assertNull(res[1453].exec("x{30f}", 4479)); -assertNull(res[1454].exec("X", 4480)); -assertNull(res[1454].exec("** Failers ", 4481)); -assertNull(res[1454].exec("x{660}", 4482)); -assertNull(res[1455].exec("X", 4483)); -assertNull(res[1455].exec("** Failers ", 4484)); -assertNull(res[1455].exec("x{66c}", 4485)); -assertNull(res[1456].exec("X", 4486)); -assertNull(res[1456].exec("** Failers ", 4487)); -assertNull(res[1456].exec("x{f01}", 4488)); -assertNull(res[1457].exec("X", 4489)); -assertNull(res[1457].exec("** Failers ", 4490)); -assertNull(res[1457].exec("x{1680}", 4491)); -assertNull(res[1458].exec("x{017}", 4492)); -assertNull(res[1458].exec("x{09f} ", 4493)); -assertNull(res[1458].exec("** Failers", 4494)); -assertNull(res[1458].exec("x{0600} ", 4495)); -assertNull(res[1459].exec("x{601}", 4496)); -assertNull(res[1459].exec("** Failers", 4497)); -assertNull(res[1459].exec("x{09f} ", 4498)); -assertNull(res[1460].exec("** Failers", 4499)); -assertNull(res[1460].exec("x{09f} ", 4500)); -assertNull(res[1461].exec("x{f8ff}", 4501)); -assertNull(res[1461].exec("** Failers", 4502)); -assertNull(res[1461].exec("x{09f} ", 4503)); -assertNull(res[1462].exec("?x{dfff}", 4504)); -assertNull(res[1462].exec("** Failers", 4505)); -assertNull(res[1462].exec("x{09f} ", 4506)); -assertNull(res[1463].exec("a", 4507)); -assertNull(res[1463].exec("** Failers ", 4508)); -assertNull(res[1463].exec("Z", 4509)); -assertNull(res[1463].exec("x{e000} ", 4510)); -assertNull(res[1464].exec("x{2b0}", 4511)); -assertNull(res[1464].exec("** Failers", 4512)); -assertNull(res[1464].exec("a ", 4513)); -assertNull(res[1465].exec("x{1bb}", 4514)); -assertNull(res[1465].exec("** Failers", 4515)); -assertNull(res[1465].exec("a ", 4516)); -assertNull(res[1465].exec("x{2b0}", 4517)); -assertNull(res[1466].exec("x{1c5}", 4518)); -assertNull(res[1466].exec("** Failers", 4519)); -assertNull(res[1466].exec("a ", 4520)); -assertNull(res[1466].exec("x{2b0}", 4521)); -assertNull(res[1467].exec("A", 4522)); -assertNull(res[1467].exec("** Failers", 4523)); -assertNull(res[1467].exec("x{2b0}", 4524)); -assertNull(res[1468].exec("x{903}", 4525)); -assertNull(res[1468].exec("** Failers", 4526)); -assertNull(res[1468].exec("X", 4527)); -assertNull(res[1468].exec("x{300}", 4528)); -assertNull(res[1468].exec(" ", 4529)); -assertNull(res[1469].exec("x{488}", 4530)); -assertNull(res[1469].exec("** Failers", 4531)); -assertNull(res[1469].exec("X", 4532)); -assertNull(res[1469].exec("x{903}", 4533)); -assertNull(res[1469].exec("x{300}", 4534)); -assertNull(res[1470].exec("x{300}", 4535)); -assertNull(res[1470].exec("** Failers", 4536)); -assertNull(res[1470].exec("X", 4537)); -assertNull(res[1470].exec("x{903}", 4538)); -assertNull(res[1470].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 4539)); -assertNull(res[1470].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 4540)); -assertNull(res[1470].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 4541)); -assertNull(res[1470].exec("** Failers", 4542)); -assertNull(res[1470].exec("X", 4543)); -assertNull(res[1471].exec("x{16ee}", 4544)); -assertNull(res[1471].exec("** Failers", 4545)); -assertNull(res[1471].exec("X", 4546)); -assertNull(res[1471].exec("x{966}", 4547)); -assertNull(res[1472].exec("x{b2}", 4548)); -assertNull(res[1472].exec("x{b3}", 4549)); -assertNull(res[1472].exec("** Failers", 4550)); -assertNull(res[1472].exec("X", 4551)); -assertNull(res[1472].exec("x{16ee}", 4552)); -assertNull(res[1473].exec("_", 4553)); -assertNull(res[1473].exec("x{203f}", 4554)); -assertNull(res[1473].exec("** Failers", 4555)); -assertNull(res[1473].exec("X", 4556)); -assertNull(res[1473].exec("-", 4557)); -assertNull(res[1473].exec("x{58a}", 4558)); -assertNull(res[1474].exec("-", 4559)); -assertNull(res[1474].exec("x{58a}", 4560)); -assertNull(res[1474].exec("** Failers", 4561)); -assertNull(res[1474].exec("X", 4562)); -assertNull(res[1474].exec("x{203f}", 4563)); -assertNull(res[1475].exec(")", 4564)); -assertNull(res[1475].exec("]", 4565)); -assertNull(res[1475].exec("}", 4566)); -assertNull(res[1475].exec("x{f3b}", 4567)); -assertNull(res[1475].exec("** Failers", 4568)); -assertNull(res[1475].exec("X", 4569)); -assertNull(res[1475].exec("x{203f}", 4570)); -assertNull(res[1475].exec("(", 4571)); -assertNull(res[1475].exec("[", 4572)); -assertNull(res[1475].exec("{", 4573)); -assertNull(res[1475].exec("x{f3c}", 4574)); -assertNull(res[1476].exec("x{bb}", 4575)); -assertNull(res[1476].exec("x{2019}", 4576)); -assertNull(res[1476].exec("** Failers", 4577)); -assertNull(res[1476].exec("X", 4578)); -assertNull(res[1476].exec("x{203f}", 4579)); -assertNull(res[1477].exec("x{ab}", 4580)); -assertNull(res[1477].exec("x{2018}", 4581)); -assertNull(res[1477].exec("** Failers", 4582)); -assertNull(res[1477].exec("X", 4583)); -assertNull(res[1477].exec("x{203f}", 4584)); -assertNull(res[1478].exec("!", 4585)); -assertNull(res[1478].exec("x{37e}", 4586)); -assertNull(res[1478].exec("** Failers", 4587)); -assertNull(res[1478].exec("X", 4588)); -assertNull(res[1478].exec("x{203f}", 4589)); -assertNull(res[1479].exec("(", 4590)); -assertNull(res[1479].exec("[", 4591)); -assertNull(res[1479].exec("{", 4592)); -assertNull(res[1479].exec("x{f3c}", 4593)); -assertNull(res[1479].exec("** Failers", 4594)); -assertNull(res[1479].exec("X", 4595)); -assertNull(res[1479].exec(")", 4596)); -assertNull(res[1479].exec("]", 4597)); -assertNull(res[1479].exec("}", 4598)); -assertNull(res[1479].exec("x{f3b}", 4599)); -assertNull(res[1479].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 4600)); -assertNull(res[1479].exec("x{9f2}", 4601)); -assertNull(res[1479].exec("** Failers", 4602)); -assertNull(res[1479].exec("X", 4603)); -assertNull(res[1479].exec("x{2c2}", 4604)); -assertNull(res[1480].exec("x{2c2}", 4605)); -assertNull(res[1480].exec("** Failers", 4606)); -assertNull(res[1480].exec("X", 4607)); -assertNull(res[1480].exec("x{9f2}", 4608)); -assertNull(res[1480].exec("+<|~x{ac}x{2044}", 4609)); -assertNull(res[1480].exec("** Failers", 4610)); -assertNull(res[1480].exec("X", 4611)); -assertNull(res[1480].exec("x{9f2}", 4612)); -assertNull(res[1481].exec("x{a6}", 4613)); -assertNull(res[1481].exec("x{482} ", 4614)); -assertNull(res[1481].exec("** Failers", 4615)); -assertNull(res[1481].exec("X", 4616)); -assertNull(res[1481].exec("x{9f2}", 4617)); -assertNull(res[1482].exec("x{2028}", 4618)); -assertNull(res[1482].exec("** Failers", 4619)); -assertNull(res[1482].exec("X", 4620)); -assertNull(res[1482].exec("x{2029}", 4621)); -assertNull(res[1483].exec("x{2029}", 4622)); -assertNull(res[1483].exec("** Failers", 4623)); -assertNull(res[1483].exec("X", 4624)); -assertNull(res[1483].exec("x{2028}", 4625)); -assertNull(res[1484].exec("\\ \\", 4626)); -assertNull(res[1484].exec("x{a0}", 4627)); -assertNull(res[1484].exec("x{1680}", 4628)); -assertNull(res[1484].exec("x{180e}", 4629)); -assertNull(res[1484].exec("x{2000}", 4630)); -assertNull(res[1484].exec("x{2001} ", 4631)); -assertNull(res[1484].exec("** Failers", 4632)); -assertNull(res[1484].exec("x{2028}", 4633)); -assertNull(res[1484].exec("x{200d} ", 4634)); -assertNull(res[1484].exec(" x{660}x{661}x{662}ABC", 4635)); -assertNull(res[1484].exec(" x{660}x{661}x{662}ABC", 4636)); -assertNull(res[1485].exec(" x{660}x{661}x{662}ABC", 4637)); -assertNull(res[1486].exec(" x{660}x{661}x{662}ABC", 4638)); -assertNull(res[1487].exec(" x{660}x{661}x{662}ABC", 4639)); -assertNull(res[1488].exec(" x{660}x{661}x{662}ABC", 4640)); -assertNull(res[1489].exec(" x{660}x{661}x{662}ABC", 4641)); -assertNull(res[1490].exec(" x{660}x{661}x{662}ABC", 4642)); -assertNull(res[1491].exec(" x{660}x{661}x{662}ABC", 4643)); -assertNull(res[1492].exec(" x{660}x{661}x{662}ABC", 4644)); -assertNull(res[1493].exec(" x{660}x{661}x{662}ABC", 4645)); -assertNull(res[1493].exec(" x{660}x{661}x{662}ABC", 4646)); -assertNull(res[1493].exec(" x{660}x{661}x{662}ABC", 4647)); -assertNull(res[1493].exec(" ** Failers", 4648)); -assertNull(res[1493].exec(" x{660}x{661}x{662}ABC", 4649)); -assertNull(res[1494].exec("A", 4650)); -assertNull(res[1494].exec("ax{10a0}B ", 4651)); -assertNull(res[1494].exec("** Failers ", 4652)); -assertNull(res[1494].exec("a", 4653)); -assertNull(res[1494].exec("x{1d00} ", 4654)); -assertNull(res[1495].exec("1234", 4655)); -assertNull(res[1495].exec("** Failers", 4656)); -assertNull(res[1495].exec("ABC ", 4657)); -assertNull(res[1496].exec("1234", 4658)); -assertNull(res[1496].exec("** Failers", 4659)); -assertNull(res[1496].exec("ABC ", 4660)); -assertNull(res[1496].exec("A2XYZ", 4661)); -assertNull(res[1496].exec("123A5XYZPQR", 4662)); -assertNull(res[1496].exec("ABAx{660}XYZpqr", 4663)); -assertNull(res[1496].exec("** Failers", 4664)); -assertNull(res[1496].exec("AXYZ", 4665)); -assertNull(res[1496].exec("XYZ ", 4666)); -assertNull(res[1496].exec("1XYZ", 4667)); -assertNull(res[1496].exec("AB=XYZ.. ", 4668)); -assertNull(res[1496].exec("XYZ ", 4669)); -assertNull(res[1496].exec("** Failers", 4670)); -assertNull(res[1496].exec("WXYZ ", 4671)); -assertNull(res[1497].exec("1234", 4672)); -assertNull(res[1497].exec("1234", 4673)); -assertNull(res[1497].exec("12-34", 4674)); -assertToStringEquals("{", res[1497].exec("12+x{661}-34 "), 4675); -assertNull(res[1497].exec("** Failers", 4676)); -assertToStringEquals("d", res[1497].exec("abcd "), 4677); -assertToStringEquals("d", res[1498].exec("abcd"), 4678); -assertNull(res[1498].exec("** Failers", 4679)); -assertNull(res[1498].exec("1234", 4680)); -assertNull(res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4681)); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4682); -assertToStringEquals(" ", res[1499].exec(" "), 4683); -assertNull(res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4684)); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4685); -assertNull(res[1500].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4686)); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1500].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4687); -assertNull(res[1501].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4688)); -assertNull(res[1501].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 4689)); -assertNull(res[1502].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4690)); -assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1502].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4691); -assertNull(res[1503].exec("a", 4692)); -assertNull(res[1503].exec("A ", 4693)); -assertNull(res[1504].exec("a", 4694)); -assertNull(res[1504].exec("A ", 4695)); -assertNull(res[1505].exec("A", 4696)); -assertNull(res[1505].exec("aZ", 4697)); -assertNull(res[1505].exec("** Failers", 4698)); -assertNull(res[1505].exec("abc ", 4699)); -assertNull(res[1506].exec("A", 4700)); -assertNull(res[1506].exec("aZ", 4701)); -assertNull(res[1506].exec("** Failers", 4702)); -assertNull(res[1506].exec("abc ", 4703)); -assertNull(res[1507].exec("a", 4704)); -assertNull(res[1507].exec("Az", 4705)); -assertNull(res[1507].exec("** Failers", 4706)); -assertNull(res[1507].exec("ABC ", 4707)); -assertNull(res[1508].exec("a", 4708)); -assertNull(res[1508].exec("Az", 4709)); -assertNull(res[1508].exec("** Failers", 4710)); -assertNull(res[1508].exec("ABC ", 4711)); -assertNull(res[1508].exec("x{c0}", 4712)); -assertNull(res[1508].exec("x{e0} ", 4713)); -assertNull(res[1508].exec("x{c0}", 4714)); -assertNull(res[1508].exec("x{e0} ", 4715)); -assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4716)); -assertNull(res[1508].exec("** Failers", 4717)); -assertNull(res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 4718)); -assertNull(res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4719)); -assertNull(res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4720)); -assertNull(res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4721)); -assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4722)); -assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4723)); -assertNull(res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 4724)); -assertNull(res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4725)); -assertNull(res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4726)); -assertNull(res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4727)); -assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4728)); -assertNull(res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 4729)); -assertNull(res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4730)); -assertNull(res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4731)); -assertNull(res[1508].exec("x{391}", 4732)); -assertNull(res[1508].exec("x{ff3a}", 4733)); -assertNull(res[1508].exec("x{3b1}", 4734)); -assertNull(res[1508].exec("x{ff5a} ", 4735)); -assertNull(res[1508].exec("x{c0}", 4736)); -assertNull(res[1508].exec("x{e0} ", 4737)); -assertNull(res[1508].exec("x{104}", 4738)); -assertNull(res[1508].exec("x{105}", 4739)); -assertNull(res[1508].exec("x{109} ", 4740)); -assertNull(res[1508].exec("** Failers", 4741)); -assertNull(res[1508].exec("x{100}", 4742)); -assertNull(res[1508].exec("x{10a} ", 4743)); -assertNull(res[1508].exec("Z", 4744)); -assertNull(res[1508].exec("z", 4745)); -assertNull(res[1508].exec("x{39c}", 4746)); -assertNull(res[1508].exec("x{178}", 4747)); -assertNull(res[1508].exec("|", 4748)); -assertNull(res[1508].exec("x{80}", 4749)); -assertNull(res[1508].exec("x{ff}", 4750)); -assertNull(res[1508].exec("x{100}", 4751)); -assertNull(res[1508].exec("x{101} ", 4752)); -assertNull(res[1508].exec("** Failers", 4753)); -assertNull(res[1508].exec("x{102}", 4754)); -assertNull(res[1508].exec("Y", 4755)); -assertNull(res[1508].exec("y ", 4756)); -assertNull(res[1509].exec("A", 4757)); -assertNull(res[1509].exec("Ax{300}BC ", 4758)); -assertNull(res[1509].exec("Ax{300}x{301}x{302}BC ", 4759)); -assertNull(res[1509].exec("*** Failers", 4760)); -assertNull(res[1509].exec("x{300} ", 4761)); -assertToStringEquals("X", res[1510].exec("X123"), 4762); -assertNull(res[1510].exec("*** Failers", 4763)); -assertNull(res[1510].exec("AXYZ", 4764)); -assertNull(res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4765)); -assertNull(res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4766)); -assertNull(res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4767)); -assertNull(res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4768)); -assertToStringEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4769); -assertToStringEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4770); -assertToStringEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4771); -assertToStringEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4772); -assertNull(res[1515].exec("*** Failers", 4773)); -assertNull(res[1515].exec("Ax{300}x{301}x{302}", 4774)); -assertNull(res[1516].exec("Ax{300}x{301}Bx{300}X", 4775)); -assertNull(res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4776)); -assertNull(res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4777)); -assertNull(res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4778)); -assertNull(res[1517].exec("Ax{300}x{301}Bx{300}X", 4779)); -assertNull(res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4780)); -assertNull(res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4781)); -assertNull(res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4782)); -assertNull(res[1518].exec("12X", 4783)); -assertNull(res[1518].exec("123X", 4784)); -assertNull(res[1518].exec("*** Failers", 4785)); -assertNull(res[1518].exec("X", 4786)); -assertNull(res[1518].exec("1X", 4787)); -assertNull(res[1518].exec("1234X ", 4788)); -assertNull(res[1518].exec("x{100} ", 4789)); -assertNull(res[1518].exec("x{101} ", 4790)); -assertNull(res[1518].exec("x{2e81}x{3007}x{2f804}x{31a0}", 4791)); -assertNull(res[1518].exec("** Failers", 4792)); -assertNull(res[1518].exec("x{2e7f} ", 4793)); -assertNull(res[1518].exec("x{3105}", 4794)); -assertNull(res[1518].exec("** Failers", 4795)); -assertNull(res[1518].exec("x{30ff} ", 4796)); -assertNull(res[1519].exec("x{06e9}", 4797)); -assertNull(res[1519].exec("x{060b}", 4798)); -assertNull(res[1519].exec("** Failers", 4799)); -assertNull(res[1519].exec("Xx{06e9} ", 4800)); -assertNull(res[1520].exec("x{2f800}", 4801)); -assertNull(res[1520].exec("** Failers", 4802)); -assertNull(res[1520].exec("x{a014}", 4803)); -assertNull(res[1520].exec("x{a4c6} ", 4804)); -assertNull(res[1521].exec("AXYZ", 4805)); -assertNull(res[1521].exec("x{1234}XYZ ", 4806)); -assertNull(res[1521].exec("** Failers", 4807)); -assertNull(res[1521].exec("X ", 4808)); -assertNull(res[1522].exec("** Failers", 4809)); -assertNull(res[1522].exec("AX", 4810)); -assertNull(res[1523].exec("XYZ", 4811)); -assertNull(res[1523].exec("AXYZ", 4812)); -assertNull(res[1523].exec("x{1234}XYZ ", 4813)); -assertNull(res[1523].exec("** Failers", 4814)); -assertNull(res[1523].exec("ABXYZ ", 4815)); -assertNull(res[1524].exec("XYZ", 4816)); -assertNull(res[1524].exec("** Failers", 4817)); -assertNull(res[1524].exec("AXYZ", 4818)); -assertNull(res[1524].exec("x{1234}XYZ ", 4819)); -assertNull(res[1524].exec("ABXYZ ", 4820)); -assertNull(res[1524].exec("AXYZ", 4821)); -assertNull(res[1524].exec("x{1234}XYZ", 4822)); -assertNull(res[1524].exec("Ax{1234}XYZ", 4823)); -assertNull(res[1524].exec("** Failers", 4824)); -assertNull(res[1524].exec("XYZ", 4825)); -assertNull(res[1524].exec("** Failers", 4826)); -assertNull(res[1524].exec("AXYZ", 4827)); -assertNull(res[1524].exec("x{1234}XYZ", 4828)); -assertNull(res[1524].exec("Ax{1234}XYZ", 4829)); -assertNull(res[1524].exec("XYZ", 4830)); -assertNull(res[1525].exec("XYZ", 4831)); -assertNull(res[1525].exec("AXYZ", 4832)); -assertNull(res[1525].exec("x{1234}XYZ", 4833)); -assertNull(res[1525].exec("Ax{1234}XYZ", 4834)); -assertNull(res[1525].exec("** Failers", 4835)); -assertNull(res[1526].exec("XYZ", 4836)); -assertNull(res[1526].exec("** Failers", 4837)); -assertNull(res[1526].exec("AXYZ", 4838)); -assertNull(res[1526].exec("x{1234}XYZ", 4839)); -assertNull(res[1526].exec("Ax{1234}XYZ", 4840)); -assertToStringEquals("AX", res[1527].exec("AXYZ"), 4841); -assertNull(res[1527].exec("x{1234}XYZ ", 4842)); -assertNull(res[1527].exec("** Failers", 4843)); -assertNull(res[1527].exec("X ", 4844)); -assertNull(res[1528].exec("** Failers", 4845)); -assertToStringEquals("AX", res[1528].exec("AX"), 4846); -assertToStringEquals("X", res[1529].exec("XYZ"), 4847); -assertToStringEquals("AX", res[1529].exec("AXYZ"), 4848); -assertNull(res[1529].exec("x{1234}XYZ ", 4849)); -assertNull(res[1529].exec("** Failers", 4850)); -assertNull(res[1529].exec("ABXYZ ", 4851)); -assertToStringEquals("X", res[1530].exec("XYZ"), 4852); -assertNull(res[1530].exec("** Failers", 4853)); -assertToStringEquals("AX", res[1530].exec("AXYZ"), 4854); -assertNull(res[1530].exec("x{1234}XYZ ", 4855)); -assertNull(res[1530].exec("ABXYZ ", 4856)); -assertToStringEquals("AX", res[1531].exec("AXYZ"), 4857); -assertNull(res[1531].exec("x{1234}XYZ", 4858)); -assertNull(res[1531].exec("Ax{1234}XYZ", 4859)); -assertNull(res[1531].exec("** Failers", 4860)); -assertNull(res[1531].exec("XYZ", 4861)); -assertNull(res[1532].exec("** Failers", 4862)); -assertToStringEquals("AX", res[1532].exec("AXYZ"), 4863); -assertNull(res[1532].exec("x{1234}XYZ", 4864)); -assertNull(res[1532].exec("Ax{1234}XYZ", 4865)); -assertNull(res[1532].exec("XYZ", 4866)); -assertToStringEquals("X", res[1533].exec("XYZ"), 4867); -assertToStringEquals("AX", res[1533].exec("AXYZ"), 4868); -assertNull(res[1533].exec("x{1234}XYZ", 4869)); -assertNull(res[1533].exec("Ax{1234}XYZ", 4870)); -assertNull(res[1533].exec("** Failers", 4871)); -assertToStringEquals("X", res[1534].exec("XYZ"), 4872); -assertNull(res[1534].exec("** Failers", 4873)); -assertToStringEquals("AX", res[1534].exec("AXYZ"), 4874); -assertNull(res[1534].exec("x{1234}XYZ", 4875)); -assertNull(res[1534].exec("Ax{1234}XYZ", 4876)); -assertNull(res[1535].exec("abcdefgh", 4877)); -assertNull(res[1535].exec("x{1234}\n\x0dx{3456}xyz ", 4878)); -assertNull(res[1536].exec("abcdefgh", 4879)); -assertNull(res[1536].exec("x{1234}\n\x0dx{3456}xyz ", 4880)); -assertNull(res[1537].exec("** Failers", 4881)); -assertNull(res[1537].exec("abcdefgh", 4882)); -assertNull(res[1537].exec("x{1234}\n\x0dx{3456}xyz ", 4883)); -assertNull(res[1538].exec(" AXY", 4884)); -assertNull(res[1538].exec(" aXY", 4885)); -assertNull(res[1538].exec(" x{1c5}XY", 4886)); -assertNull(res[1538].exec(" ** Failers", 4887)); -assertNull(res[1538].exec(" x{1bb}XY", 4888)); -assertNull(res[1538].exec(" x{2b0}XY", 4889)); -assertNull(res[1538].exec(" !XY ", 4890)); -assertNull(res[1539].exec(" AXY", 4891)); -assertNull(res[1539].exec(" aXY", 4892)); -assertNull(res[1539].exec(" x{1c5}XY", 4893)); -assertNull(res[1539].exec(" ** Failers", 4894)); -assertNull(res[1539].exec(" x{1bb}XY", 4895)); -assertNull(res[1539].exec(" x{2b0}XY", 4896)); -assertNull(res[1539].exec(" !XY ", 4897)); -assertNull(res[1539].exec(" AXY", 4898)); -assertNull(res[1539].exec(" aXY", 4899)); -assertNull(res[1539].exec(" AbcdeXyz ", 4900)); -assertNull(res[1539].exec(" x{1c5}AbXY", 4901)); -assertNull(res[1539].exec(" abcDEXypqreXlmn ", 4902)); -assertNull(res[1539].exec(" ** Failers", 4903)); -assertNull(res[1539].exec(" x{1bb}XY", 4904)); -assertNull(res[1539].exec(" x{2b0}XY", 4905)); -assertNull(res[1539].exec(" !XY ", 4906)); -assertNull(res[1540].exec(" AXY", 4907)); -assertNull(res[1540].exec(" aXY", 4908)); -assertNull(res[1540].exec(" AbcdeXyz ", 4909)); -assertNull(res[1540].exec(" x{1c5}AbXY", 4910)); -assertNull(res[1540].exec(" abcDEXypqreXlmn ", 4911)); -assertNull(res[1540].exec(" ** Failers", 4912)); -assertNull(res[1540].exec(" x{1bb}XY", 4913)); -assertNull(res[1540].exec(" x{2b0}XY", 4914)); -assertNull(res[1540].exec(" !XY ", 4915)); -assertNull(res[1540].exec(" AXY", 4916)); -assertNull(res[1540].exec(" aXY", 4917)); -assertNull(res[1540].exec(" AbcdeXyz ", 4918)); -assertNull(res[1540].exec(" x{1c5}AbXY", 4919)); -assertNull(res[1540].exec(" abcDEXypqreXlmn ", 4920)); -assertNull(res[1540].exec(" ** Failers", 4921)); -assertNull(res[1540].exec(" x{1bb}XY", 4922)); -assertNull(res[1540].exec(" x{2b0}XY", 4923)); -assertNull(res[1540].exec(" !XY ", 4924)); -assertNull(res[1541].exec(" AXY", 4925)); -assertNull(res[1541].exec(" aXY", 4926)); -assertNull(res[1541].exec(" AbcdeXyz ", 4927)); -assertNull(res[1541].exec(" x{1c5}AbXY", 4928)); -assertNull(res[1541].exec(" abcDEXypqreXlmn ", 4929)); -assertNull(res[1541].exec(" ** Failers", 4930)); -assertNull(res[1541].exec(" x{1bb}XY", 4931)); -assertNull(res[1541].exec(" x{2b0}XY", 4932)); -assertNull(res[1541].exec(" !XY ", 4933)); -assertNull(res[1542].exec(" !XY", 4934)); -assertNull(res[1542].exec(" x{1bb}XY", 4935)); -assertNull(res[1542].exec(" x{2b0}XY", 4936)); -assertNull(res[1542].exec(" ** Failers", 4937)); -assertNull(res[1542].exec(" x{1c5}XY", 4938)); -assertNull(res[1542].exec(" AXY ", 4939)); -assertNull(res[1543].exec(" !XY", 4940)); -assertNull(res[1543].exec(" x{1bb}XY", 4941)); -assertNull(res[1543].exec(" x{2b0}XY", 4942)); -assertNull(res[1543].exec(" ** Failers", 4943)); -assertNull(res[1543].exec(" x{1c5}XY", 4944)); -assertNull(res[1543].exec(" AXY ", 4945)); -assertNull(res[1543].exec("x{c0}x{e0}x{116}x{117}", 4946)); -assertNull(res[1543].exec("x{c0}x{e0}x{116}x{117}", 4947)); -assertNull(res[1545].exec("123abcdefg", 4948)); -assertNull(res[1545].exec("123abc\xc4\xc5zz", 4949)); -assertNull(res[1546].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 4950)); -assertNull(res[1546].exec("x{a77d}x{1d79}", 4951)); -assertNull(res[1546].exec("x{1d79}x{a77d} ", 4952)); -assertNull(res[1546].exec("x{a77d}x{1d79}", 4953)); -assertNull(res[1546].exec("** Failers ", 4954)); -assertNull(res[1546].exec("x{1d79}x{a77d} ", 4955)); -assertThrows("var re = //;"); diff --git a/implementation-contributed/v8/mjsunit/this-dynamic-lookup.js b/implementation-contributed/v8/mjsunit/this-dynamic-lookup.js deleted file mode 100644 index eedda6000b5..00000000000 --- a/implementation-contributed/v8/mjsunit/this-dynamic-lookup.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// NO HARNESS - -var globalEval = eval; -globalEval("this; eval('42')"); -globalEval("eval('42'); this"); diff --git a/implementation-contributed/v8/mjsunit/this-in-callbacks.js b/implementation-contributed/v8/mjsunit/this-in-callbacks.js deleted file mode 100644 index d50be6c193f..00000000000 --- a/implementation-contributed/v8/mjsunit/this-in-callbacks.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test 'this' is the right global object of callback functions passed to -// builtin functions. -// See bug 1231592 - -var my_identity = 'id'; -// test Array.sort -function cp(x, y) { - assertEquals('id', this.my_identity); - return 0; -} - -[1, 2].sort(cp); - -// test String.replace -function r(x) { - return this.my_identity; -} - -assertEquals('id', 'hello'.replace('hello', r)); -assertEquals('id', 'hello'.replace(/hello/, r)); diff --git a/implementation-contributed/v8/mjsunit/this-property-assignment.js b/implementation-contributed/v8/mjsunit/this-property-assignment.js deleted file mode 100644 index 54c6537256c..00000000000 --- a/implementation-contributed/v8/mjsunit/this-property-assignment.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests the handling of multiple assignments to the same property in a -// constructor that only has simple this property assignments. - -function Node() { - this.a = 1; - this.a = 2; - this.a = 3; -} - -var n1 = new Node(); -assertEquals(3, n1.a); - -var n2 = new Node(); -assertEquals(3, n2.a); diff --git a/implementation-contributed/v8/mjsunit/this.js b/implementation-contributed/v8/mjsunit/this.js deleted file mode 100644 index 890dea4f253..00000000000 --- a/implementation-contributed/v8/mjsunit/this.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { return this; } - -assertFalse(this == null); // the global object shouldn't be null or undefined -assertEquals('[object global]', String(this)); - -assertTrue(this === this); -assertTrue(this === (function() { return this; })()); -assertTrue(this === f()); - -var x = {}, y = {}; -x.f = y.f = f; -assertFalse(x === f()); -assertFalse(y === f()); -assertTrue(x === x.f()); -assertTrue(x === x[new String('f')]()); -assertTrue(y === y.f(), "y.f()"); -assertTrue(y === y[new String('f')]()); -assertFalse(x === y.f()); -assertFalse(y === x.f()); diff --git a/implementation-contributed/v8/mjsunit/throw-and-catch-function.js b/implementation-contributed/v8/mjsunit/throw-and-catch-function.js deleted file mode 100644 index fd24f6e6658..00000000000 --- a/implementation-contributed/v8/mjsunit/throw-and-catch-function.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var g = this; -var x = new Object(); -x.e = function() { return this; }; -try { - throw x.e; -} catch (e) { - assertTrue(e() === g); -} -try { - throw x.e; -} catch (e) { - with(x) { assertTrue(e() === x); } -} -with(x) { - try { throw e; } catch (e) { assertTrue(e() === g); } -} -var e = 0; -try { - throw x.e; -} catch (e) { - var e = 7; -} -assertEquals(0, e); diff --git a/implementation-contributed/v8/mjsunit/throw-exception-for-null-access.js b/implementation-contributed/v8/mjsunit/throw-exception-for-null-access.js deleted file mode 100644 index 018cfef9ecb..00000000000 --- a/implementation-contributed/v8/mjsunit/throw-exception-for-null-access.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Must throw TypeError when accessing properties of null. -var caught = false -try { - null[0]; - assertTrue(false); -} catch (e) { - caught = true; - assertTrue(e instanceof TypeError); -} -assertTrue(caught); diff --git a/implementation-contributed/v8/mjsunit/to-precision.js b/implementation-contributed/v8/mjsunit/to-precision.js deleted file mode 100644 index ded71853b49..00000000000 --- a/implementation-contributed/v8/mjsunit/to-precision.js +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the exponential notation output. -assertEquals("1e+27", (1.2345e+27).toPrecision(1)); -assertEquals("1.2e+27", (1.2345e+27).toPrecision(2)); -assertEquals("1.23e+27", (1.2345e+27).toPrecision(3)); -assertEquals("1.234e+27", (1.2345e+27).toPrecision(4)); -assertEquals("1.2345e+27", (1.2345e+27).toPrecision(5)); -assertEquals("1.23450e+27", (1.2345e+27).toPrecision(6)); -assertEquals("1.234500e+27", (1.2345e+27).toPrecision(7)); - -assertEquals("-1e+27", (-1.2345e+27).toPrecision(1)); -assertEquals("-1.2e+27", (-1.2345e+27).toPrecision(2)); -assertEquals("-1.23e+27", (-1.2345e+27).toPrecision(3)); -assertEquals("-1.234e+27", (-1.2345e+27).toPrecision(4)); -assertEquals("-1.2345e+27", (-1.2345e+27).toPrecision(5)); -assertEquals("-1.23450e+27", (-1.2345e+27).toPrecision(6)); -assertEquals("-1.234500e+27", (-1.2345e+27).toPrecision(7)); - - -// Test the fixed notation output. -assertEquals("7", (7).toPrecision(1)); -assertEquals("7.0", (7).toPrecision(2)); -assertEquals("7.00", (7).toPrecision(3)); - -assertEquals("-7", (-7).toPrecision(1)); -assertEquals("-7.0", (-7).toPrecision(2)); -assertEquals("-7.00", (-7).toPrecision(3)); - -assertEquals("9e+1", (91).toPrecision(1)); -assertEquals("91", (91).toPrecision(2)); -assertEquals("91.0", (91).toPrecision(3)); -assertEquals("91.00", (91).toPrecision(4)); - -assertEquals("-9e+1", (-91).toPrecision(1)); -assertEquals("-91", (-91).toPrecision(2)); -assertEquals("-91.0", (-91).toPrecision(3)); -assertEquals("-91.00", (-91).toPrecision(4)); - -assertEquals("9e+1", (91.1234).toPrecision(1)); -assertEquals("91", (91.1234).toPrecision(2)); -assertEquals("91.1", (91.1234).toPrecision(3)); -assertEquals("91.12", (91.1234).toPrecision(4)); -assertEquals("91.123", (91.1234).toPrecision(5)); -assertEquals("91.1234", (91.1234).toPrecision(6)); -assertEquals("91.12340", (91.1234).toPrecision(7)); -assertEquals("91.123400", (91.1234).toPrecision(8)); - -assertEquals("-9e+1", (-91.1234).toPrecision(1)); -assertEquals("-91", (-91.1234).toPrecision(2)); -assertEquals("-91.1", (-91.1234).toPrecision(3)); -assertEquals("-91.12", (-91.1234).toPrecision(4)); -assertEquals("-91.123", (-91.1234).toPrecision(5)); -assertEquals("-91.1234", (-91.1234).toPrecision(6)); -assertEquals("-91.12340", (-91.1234).toPrecision(7)); -assertEquals("-91.123400", (-91.1234).toPrecision(8)); diff --git a/implementation-contributed/v8/mjsunit/to_number_order.js b/implementation-contributed/v8/mjsunit/to_number_order.js deleted file mode 100644 index c20ec5e147a..00000000000 --- a/implementation-contributed/v8/mjsunit/to_number_order.js +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var x = ""; -var v = new Object(); -var w = new Object(); -var vv = function() { x += "hest"; return 1; } -var ww = function() { x += "fisk"; return 2; } -v.valueOf = vv; -w.valueOf = ww; -assertEquals(1, Math.min(v,w)); -assertEquals("hestfisk", x, "min"); - -x = ""; -assertEquals(2, Math.max(v,w)); -assertEquals("hestfisk", x, "max"); - -x = ""; -assertEquals(1, Math.max(v,v)); -assertEquals("hesthest", x, "max_identical"); - -x = ""; -assertEquals(2, Math.min(w,w)); -assertEquals("fiskfisk", x, "max"); - -x = ""; -assertEquals(Math.atan2(1, 2), Math.atan2(v, w)); -// JSC says fiskhest. -assertEquals("hestfisk", x, "atan2"); - -x = ""; -assertEquals(1, Math.pow(v, w)); -assertEquals("hestfisk", x, "pow"); - -x = ""; -var a = {valueOf: function() { x += "hest"; return 1/0; }}; -var b = {valueOf: function() { x += "fisk"; return 1}}; -assertEquals(1/0, Math.hypot(a, b)); -assertEquals("hestfisk", x, "hypot"); - - -var year = { valueOf: function() { x += 1; return 2007; } }; -var month = { valueOf: function() { x += 2; return 2; } }; -var date = { valueOf: function() { x += 3; return 4; } }; -var hours = { valueOf: function() { x += 4; return 13; } }; -var minutes = { valueOf: function() { x += 5; return 50; } }; -var seconds = { valueOf: function() { x += 6; return 0; } }; -var ms = { valueOf: function() { x += 7; return 999; } }; - -x = ""; -new Date(year, month, date, hours, minutes, seconds, ms); -// JSC fails this one: Returns 12345671234567. -assertEquals("1234567", x, "Date"); - -x = ""; -Date(year, month, date, hours, minutes, seconds, ms); -assertEquals("", x, "Date not constructor"); - -x = ""; -Date.UTC(year, month, date, hours, minutes, seconds, ms); -// JSC fails this one: Returns 12345671234567. -assertEquals("1234567", x, "Date.UTC"); - -x = ""; -new Date().setSeconds(seconds, ms); -assertEquals("67", x, "Date.UTC"); - -x = ""; -new Date().setSeconds(seconds, ms); -assertEquals("67", x, "Date.setSeconds"); - -x = ""; -new Date().setUTCSeconds(seconds, ms); -assertEquals("67", x, "Date.setUTCSeconds"); - -x = ""; -new Date().setMinutes(minutes, seconds, ms); -assertEquals("567", x, "Date.setMinutes"); - -x = ""; -new Date().setUTCMinutes(minutes, seconds, ms); -assertEquals("567", x, "Date.setUTCMinutes"); - -x = ""; -new Date().setHours(hours, minutes, seconds, ms); -assertEquals("4567", x, "Date.setHours"); - -x = ""; -new Date().setUTCHours(hours, minutes, seconds, ms); -assertEquals("4567", x, "Date.setUTCHours"); - -x = ""; -new Date().setDate(date, hours, minutes, seconds, ms); -assertEquals("3", x, "Date.setDate"); - -x = ""; -new Date().setUTCDate(date, hours, minutes, seconds, ms); -assertEquals("3", x, "Date.setUTCDate"); - -x = ""; -new Date().setMonth(month, date, hours, minutes, seconds, ms); -assertEquals("23", x, "Date.setMonth"); - -x = ""; -new Date().setUTCMonth(month, date, hours, minutes, seconds, ms); -assertEquals("23", x, "Date.setUTCMonth"); - -x = ""; -new Date().setFullYear(year, month, date, hours, minutes, seconds, ms); -assertEquals("123", x, "Date.setFullYear"); - -x = ""; -new Date().setUTCFullYear(year, month, date, hours, minutes, seconds, ms); -assertEquals("123", x, "Date.setUTCFullYear"); - -x = ""; -var a = { valueOf: function() { x += "hest"; return 97; } }; -var b = { valueOf: function() { x += "fisk"; return 98; } }; -assertEquals("ab", String.fromCharCode(a, b), "String.fromCharCode"); -assertEquals("hestfisk", x, "String.fromCharCode valueOf order"); - - - -// Test whether valueOf is called when comparing identical objects -x = ""; -assertTrue(a < b, "Compare objects a < b"); -assertEquals("hestfisk", x, "Compare objects a < b valueOf order"); - -x = ""; -assertFalse(a < a, "Compare objects a < a"); -// assertEquals("hesthest", x, "Compare objects a < a valueOf order"); - -x = ""; -assertTrue(a == a, "Compare objects a == a"); -assertEquals("", x, "Compare objects a == a valueOf not called"); - -x = ""; -assertFalse(b > b, "Compare objects b > b"); -assertEquals("fiskfisk", x, "Compare objects b > b valueOf order"); - -x = ""; -assertTrue(b >= b, "Compare objects b >= b"); -assertEquals("fiskfisk", x, "Compare objects b >= b valueOf order"); - -x = ""; -assertFalse(a > b, "Compare objects a > b"); -assertEquals("hestfisk", x, "Compare objects a > b valueOf order"); - -x = ""; -assertFalse(a > void(0), "Compare objects a > undefined"); -assertEquals("hest", x, "Compare objects a > undefined valueOf order"); - -x = ""; -assertFalse(void(0) > b, "Compare objects undefined > b"); -assertEquals("fisk", x, "Compare objects undefined > b valueOf order"); - - -function identical_object_comparison() { - x = ""; - assertTrue(a < b, "Compare objects a < b"); - assertEquals("hestfisk", x, "Compare objects a < b valueOf order"); - - x = ""; - assertFalse(a < a, "Compare objects a < a"); - // assertEquals("hesthest", x, "Compare objects a < a valueOf order"); - - x = ""; - assertTrue(a == a, "Compare objects a == a"); - assertEquals("", x, "Compare objects a == a valueOf not called"); - - x = ""; - assertFalse(b > b, "Compare objects b > b"); - assertEquals("fiskfisk", x, "Compare objects b > b valueOf order"); - - x = ""; - assertTrue(b >= b, "Compare objects b >= b"); - assertEquals("fiskfisk", x, "Compare objects b >= b valueOf order"); - - x = ""; - assertFalse(a > b, "Compare objects a > b"); - assertEquals("hestfisk", x, "Compare objects a > b valueOf order"); - - x = ""; - assertFalse(a > void(0), "Compare objects a > undefined"); - assertEquals("hest", x, "Compare objects a > undefined valueOf order"); - - x = ""; - assertFalse(void(0) > b, "Compare objects undefined > b"); - assertEquals("fisk", x, "Compare objects undefined > b valueOf order"); -} - -// Call inside loop to test optimization and possible caching. -for (i = 0; i < 3; ++i) { - identical_object_comparison(); -} - - -print("ok"); diff --git a/implementation-contributed/v8/mjsunit/tobool.js b/implementation-contributed/v8/mjsunit/tobool.js deleted file mode 100644 index 44a5a3cd40c..00000000000 --- a/implementation-contributed/v8/mjsunit/tobool.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// All objects, including wrappers, must convert to true. -assertTrue(!!new Boolean(true), "new Boolean(true)"); -assertTrue(!!new Boolean(false), "new Boolean(false)"); - -assertTrue(!!new Number(-1), "new Number(-1)"); -assertTrue(!!new Number(0), "new Number(0)"); -assertTrue(!!new Number(1), "new Number(1)"); diff --git a/implementation-contributed/v8/mjsunit/toint32.js b/implementation-contributed/v8/mjsunit/toint32.js deleted file mode 100644 index 9dad9c9dc12..00000000000 --- a/implementation-contributed/v8/mjsunit/toint32.js +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function toInt32(x) { - return x | 0; -} - -assertEquals(0, toInt32(Infinity), "Inf"); -assertEquals(0, toInt32(-Infinity), "-Inf"); -assertEquals(0, toInt32(NaN), "NaN"); -assertEquals(0, toInt32(0.0), "zero"); -assertEquals(0, toInt32(-0.0), "-zero"); - -assertEquals(0, toInt32(Number.MIN_VALUE)); -assertEquals(0, toInt32(-Number.MIN_VALUE)); -assertEquals(0, toInt32(0.1)); -assertEquals(0, toInt32(-0.1)); -assertEquals(1, toInt32(1), "one"); -assertEquals(1, toInt32(1.1), "onepointone"); -assertEquals(-1, toInt32(-1), "-one"); -assertEquals(0, toInt32(0.6), "truncate positive (0.6)"); -assertEquals(1, toInt32(1.6), "truncate positive (1.6)"); -assertEquals(0, toInt32(-0.6), "truncate negative (-0.6)"); -assertEquals(-1, toInt32(-1.6), "truncate negative (-1.6)"); - -assertEquals(2147483647, toInt32(2147483647)); -assertEquals(-2147483648, toInt32(2147483648)); -assertEquals(-2147483647, toInt32(2147483649)); - -assertEquals(-1, toInt32(4294967295)); -assertEquals(0, toInt32(4294967296)); -assertEquals(1, toInt32(4294967297)); - -assertEquals(-2147483647, toInt32(-2147483647)); -assertEquals(-2147483648, toInt32(-2147483648)); -assertEquals(2147483647, toInt32(-2147483649)); - -assertEquals(1, toInt32(-4294967295)); -assertEquals(0, toInt32(-4294967296)); -assertEquals(-1, toInt32(-4294967297)); - -assertEquals(-2147483648, toInt32(2147483648.25)); -assertEquals(-2147483648, toInt32(2147483648.5)); -assertEquals(-2147483648, toInt32(2147483648.75)); -assertEquals(-1, toInt32(4294967295.25)); -assertEquals(-1, toInt32(4294967295.5)); -assertEquals(-1, toInt32(4294967295.75)); -assertEquals(-1294967296, toInt32(3000000000.25)); -assertEquals(-1294967296, toInt32(3000000000.5)); -assertEquals(-1294967296, toInt32(3000000000.75)); - -assertEquals(-2147483648, toInt32(-2147483648.25)); -assertEquals(-2147483648, toInt32(-2147483648.5)); -assertEquals(-2147483648, toInt32(-2147483648.75)); -assertEquals(1, toInt32(-4294967295.25)); -assertEquals(1, toInt32(-4294967295.5)); -assertEquals(1, toInt32(-4294967295.75)); -assertEquals(1294967296, toInt32(-3000000000.25)); -assertEquals(1294967296, toInt32(-3000000000.5)); -assertEquals(1294967296, toInt32(-3000000000.75)); - -var base = Math.pow(2, 64); -assertEquals(0, toInt32(base + 0)); -assertEquals(0, toInt32(base + 1117)); -assertEquals(4096, toInt32(base + 2234)); -assertEquals(4096, toInt32(base + 3351)); -assertEquals(4096, toInt32(base + 4468)); -assertEquals(4096, toInt32(base + 5585)); -assertEquals(8192, toInt32(base + 6702)); -assertEquals(8192, toInt32(base + 7819)); -assertEquals(8192, toInt32(base + 8936)); -assertEquals(8192, toInt32(base + 10053)); -assertEquals(12288, toInt32(base + 11170)); -assertEquals(12288, toInt32(base + 12287)); -assertEquals(12288, toInt32(base + 13404)); -assertEquals(16384, toInt32(base + 14521)); -assertEquals(16384, toInt32(base + 15638)); -assertEquals(16384, toInt32(base + 16755)); -assertEquals(16384, toInt32(base + 17872)); -assertEquals(20480, toInt32(base + 18989)); -assertEquals(20480, toInt32(base + 20106)); -assertEquals(20480, toInt32(base + 21223)); -assertEquals(20480, toInt32(base + 22340)); -assertEquals(24576, toInt32(base + 23457)); -assertEquals(24576, toInt32(base + 24574)); -assertEquals(24576, toInt32(base + 25691)); -assertEquals(28672, toInt32(base + 26808)); -assertEquals(28672, toInt32(base + 27925)); -assertEquals(28672, toInt32(base + 29042)); -assertEquals(28672, toInt32(base + 30159)); -assertEquals(32768, toInt32(base + 31276)); - -// bignum is (2^53 - 1) * 2^31 - highest number with bit 31 set. -var bignum = Math.pow(2, 84) - Math.pow(2, 31); -assertEquals(-Math.pow(2,31), toInt32(bignum)); -assertEquals(-Math.pow(2,31), toInt32(-bignum)); -assertEquals(0, toInt32(2 * bignum)); -assertEquals(0, toInt32(-(2 * bignum))); -assertEquals(0, toInt32(bignum - Math.pow(2,31))); -assertEquals(0, toInt32(-(bignum - Math.pow(2,31)))); - -// max_fraction is largest number below 1. -var max_fraction = (1 - Math.pow(2,-53)); -assertEquals(0, toInt32(max_fraction)); -assertEquals(0, toInt32(-max_fraction)); diff --git a/implementation-contributed/v8/mjsunit/tools/codemap.js b/implementation-contributed/v8/mjsunit/tools/codemap.js deleted file mode 100644 index 33d7e4e0875..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/codemap.js +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Load Splay tree and CodeMap implementations from /tools. -// Files: tools/splaytree.js tools/codemap.js - - -function newCodeEntry(size, name) { - return new CodeMap.CodeEntry(size, name); -}; - - -function assertEntry(codeMap, expected_name, addr) { - var entry = codeMap.findEntry(addr); - assertNotNull(entry, 'no entry at ' + addr.toString(16)); - assertEquals(expected_name, entry.name, 'at ' + addr.toString(16)); -}; - - -function assertNoEntry(codeMap, addr) { - assertNull(codeMap.findEntry(addr), 'at ' + addr.toString(16)); -}; - - -(function testLibrariesAndStaticCode() { - var codeMap = new CodeMap(); - codeMap.addLibrary(0x1500, newCodeEntry(0x3000, 'lib1')); - codeMap.addLibrary(0x15500, newCodeEntry(0x5000, 'lib2')); - codeMap.addLibrary(0x155500, newCodeEntry(0x10000, 'lib3')); - assertNoEntry(codeMap, 0); - assertNoEntry(codeMap, 0x1500 - 1); - assertEntry(codeMap, 'lib1', 0x1500); - assertEntry(codeMap, 'lib1', 0x1500 + 0x100); - assertEntry(codeMap, 'lib1', 0x1500 + 0x1000); - assertEntry(codeMap, 'lib1', 0x1500 + 0x3000 - 1); - assertNoEntry(codeMap, 0x1500 + 0x3000); - assertNoEntry(codeMap, 0x15500 - 1); - assertEntry(codeMap, 'lib2', 0x15500); - assertEntry(codeMap, 'lib2', 0x15500 + 0x100); - assertEntry(codeMap, 'lib2', 0x15500 + 0x1000); - assertEntry(codeMap, 'lib2', 0x15500 + 0x5000 - 1); - assertNoEntry(codeMap, 0x15500 + 0x5000); - assertNoEntry(codeMap, 0x155500 - 1); - assertEntry(codeMap, 'lib3', 0x155500); - assertEntry(codeMap, 'lib3', 0x155500 + 0x100); - assertEntry(codeMap, 'lib3', 0x155500 + 0x1000); - assertEntry(codeMap, 'lib3', 0x155500 + 0x10000 - 1); - assertNoEntry(codeMap, 0x155500 + 0x10000); - assertNoEntry(codeMap, 0xFFFFFFFF); - - codeMap.addStaticCode(0x1510, newCodeEntry(0x30, 'lib1-f1')); - codeMap.addStaticCode(0x1600, newCodeEntry(0x50, 'lib1-f2')); - codeMap.addStaticCode(0x15520, newCodeEntry(0x100, 'lib2-f1')); - assertEntry(codeMap, 'lib1', 0x1500); - assertEntry(codeMap, 'lib1', 0x1510 - 1); - assertEntry(codeMap, 'lib1-f1', 0x1510); - assertEntry(codeMap, 'lib1-f1', 0x1510 + 0x15); - assertEntry(codeMap, 'lib1-f1', 0x1510 + 0x30 - 1); - assertEntry(codeMap, 'lib1', 0x1510 + 0x30); - assertEntry(codeMap, 'lib1', 0x1600 - 1); - assertEntry(codeMap, 'lib1-f2', 0x1600); - assertEntry(codeMap, 'lib1-f2', 0x1600 + 0x30); - assertEntry(codeMap, 'lib1-f2', 0x1600 + 0x50 - 1); - assertEntry(codeMap, 'lib1', 0x1600 + 0x50); - assertEntry(codeMap, 'lib2', 0x15500); - assertEntry(codeMap, 'lib2', 0x15520 - 1); - assertEntry(codeMap, 'lib2-f1', 0x15520); - assertEntry(codeMap, 'lib2-f1', 0x15520 + 0x80); - assertEntry(codeMap, 'lib2-f1', 0x15520 + 0x100 - 1); - assertEntry(codeMap, 'lib2', 0x15520 + 0x100); - -})(); - - -(function testDynamicCode() { - var codeMap = new CodeMap(); - codeMap.addCode(0x1500, newCodeEntry(0x200, 'code1')); - codeMap.addCode(0x1700, newCodeEntry(0x100, 'code2')); - codeMap.addCode(0x1900, newCodeEntry(0x50, 'code3')); - codeMap.addCode(0x1950, newCodeEntry(0x10, 'code4')); - assertNoEntry(codeMap, 0); - assertNoEntry(codeMap, 0x1500 - 1); - assertEntry(codeMap, 'code1', 0x1500); - assertEntry(codeMap, 'code1', 0x1500 + 0x100); - assertEntry(codeMap, 'code1', 0x1500 + 0x200 - 1); - assertEntry(codeMap, 'code2', 0x1700); - assertEntry(codeMap, 'code2', 0x1700 + 0x50); - assertEntry(codeMap, 'code2', 0x1700 + 0x100 - 1); - assertNoEntry(codeMap, 0x1700 + 0x100); - assertNoEntry(codeMap, 0x1900 - 1); - assertEntry(codeMap, 'code3', 0x1900); - assertEntry(codeMap, 'code3', 0x1900 + 0x28); - assertEntry(codeMap, 'code4', 0x1950); - assertEntry(codeMap, 'code4', 0x1950 + 0x7); - assertEntry(codeMap, 'code4', 0x1950 + 0x10 - 1); - assertNoEntry(codeMap, 0x1950 + 0x10); - assertNoEntry(codeMap, 0xFFFFFFFF); -})(); - - -(function testCodeMovesAndDeletions() { - var codeMap = new CodeMap(); - codeMap.addCode(0x1500, newCodeEntry(0x200, 'code1')); - codeMap.addCode(0x1700, newCodeEntry(0x100, 'code2')); - assertEntry(codeMap, 'code1', 0x1500); - assertEntry(codeMap, 'code2', 0x1700); - codeMap.moveCode(0x1500, 0x1800); - assertNoEntry(codeMap, 0x1500); - assertEntry(codeMap, 'code2', 0x1700); - assertEntry(codeMap, 'code1', 0x1800); - codeMap.deleteCode(0x1700); - assertNoEntry(codeMap, 0x1700); - assertEntry(codeMap, 'code1', 0x1800); -})(); - - -(function testDynamicNamesDuplicates() { - var codeMap = new CodeMap(); - // Code entries with same names but different addresses. - codeMap.addCode(0x1500, newCodeEntry(0x200, 'code')); - codeMap.addCode(0x1700, newCodeEntry(0x100, 'code')); - assertEntry(codeMap, 'code', 0x1500); - assertEntry(codeMap, 'code {1}', 0x1700); - // Test name stability. - assertEntry(codeMap, 'code', 0x1500); - assertEntry(codeMap, 'code {1}', 0x1700); -})(); - - -(function testStaticEntriesExport() { - var codeMap = new CodeMap(); - codeMap.addStaticCode(0x1500, newCodeEntry(0x3000, 'lib1')); - codeMap.addStaticCode(0x15500, newCodeEntry(0x5000, 'lib2')); - codeMap.addStaticCode(0x155500, newCodeEntry(0x10000, 'lib3')); - var allStatics = codeMap.getAllStaticEntries(); - allStatics = allStatics.map(String); - allStatics.sort(); - assertEquals(['lib1: 3000', 'lib2: 5000', 'lib3: 10000'], allStatics); -})(); - - -(function testDynamicEntriesExport() { - var codeMap = new CodeMap(); - codeMap.addCode(0x1500, newCodeEntry(0x200, 'code1')); - codeMap.addCode(0x1700, newCodeEntry(0x100, 'code2')); - codeMap.addCode(0x1900, newCodeEntry(0x50, 'code3')); - var allDynamics = codeMap.getAllDynamicEntries(); - allDynamics = allDynamics.map(String); - allDynamics.sort(); - assertEquals(['code1: 200', 'code2: 100', 'code3: 50'], allDynamics); - codeMap.deleteCode(0x1700); - var allDynamics2 = codeMap.getAllDynamicEntries(); - allDynamics2 = allDynamics2.map(String); - allDynamics2.sort(); - assertEquals(['code1: 200', 'code3: 50'], allDynamics2); - codeMap.deleteCode(0x1500); - var allDynamics3 = codeMap.getAllDynamicEntries(); - assertEquals(['code3: 50'], allDynamics3.map(String)); -})(); diff --git a/implementation-contributed/v8/mjsunit/tools/compiler-trace-flags.js b/implementation-contributed/v8/mjsunit/tools/compiler-trace-flags.js deleted file mode 100644 index ea6f816f5d6..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/compiler-trace-flags.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --trace-turbo --trace-turbo-graph -// Flags: --trace-turbo-cfg-file=test/mjsunit/tools/turbo.cfg -// Flags: --trace-turbo-path=test/mjsunit/tools - -load('test/mjsunit/wasm/wasm-module-builder.js'); - -// The idea behind this test is to make sure we do not crash when using the -// --trace-turbo flag given different sort of inputs, JS or WASM. - -(function testOptimizedJS() { - function add(a, b) { - return a + b; - } - - add(21, 21); - %OptimizeFunctionOnNextCall(add); - add(20, 22); -})(); - -(function testWASM() { - let builder = new WasmModuleBuilder(); - - builder.addFunction("add", kSig_i_ii) - .addBody([kExprGetLocal, 0, - kExprGetLocal, 1, - kExprI32Add]) - .exportFunc(); - - let instance = builder.instantiate(); - instance.exports.add(21, 21); -})(); diff --git a/implementation-contributed/v8/mjsunit/tools/consarray.js b/implementation-contributed/v8/mjsunit/tools/consarray.js deleted file mode 100644 index 8b2c59beac9..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/consarray.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Load ConsArray implementation from /tools. -// Files: tools/consarray.js - - -var arr1 = new ConsArray(); -assertTrue(arr1.atEnd()); - -arr1.concat([]); -assertTrue(arr1.atEnd()); - -arr1.concat([1]); -assertFalse(arr1.atEnd()); -assertEquals(1, arr1.next()); -assertTrue(arr1.atEnd()); - -arr1.concat([2, 3, 4]); -arr1.concat([5]); -arr1.concat([]); -arr1.concat([6, 7]); - -assertFalse(arr1.atEnd()); -assertEquals(2, arr1.next()); -assertFalse(arr1.atEnd()); -assertEquals(3, arr1.next()); -assertFalse(arr1.atEnd()); -assertEquals(4, arr1.next()); -assertFalse(arr1.atEnd()); -assertEquals(5, arr1.next()); -assertFalse(arr1.atEnd()); -assertEquals(6, arr1.next()); -assertFalse(arr1.atEnd()); -assertEquals(7, arr1.next()); -assertTrue(arr1.atEnd()); diff --git a/implementation-contributed/v8/mjsunit/tools/csvparser.js b/implementation-contributed/v8/mjsunit/tools/csvparser.js deleted file mode 100644 index 91eb3e45b5f..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/csvparser.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Load CSV parser implementation from /tools. -// Files: tools/csvparser.js - -var parser = new CsvParser(); - -assertEquals( - [], - parser.parseLine('')); - -assertEquals( - ['', ''], - parser.parseLine(',')); - -assertEquals( - ['1997','Ford','E350'], - parser.parseLine('1997,Ford,E350')); - -assertEquals( - ['"', '\'', ',', '\n'], - parser.parseLine('",\',\\x2c,\\x0a')); - -assertEquals( - ['"1997"','Ford','E350'], - parser.parseLine('"1997",Ford,E350')); -assertEquals( - ['1997', 'Ford', 'E350', 'Super', ' luxurious truck'], - parser.parseLine('1997,Ford,E350,Super, luxurious truck')); - -assertEquals( - ['1997','Ford','E350','Super "luxurious" truck'], - parser.parseLine('1997,Ford,E350,Super "luxurious" truck')); - -assertEquals( - ['1997','Ford','E350','Super "luxurious" "truck"'], - parser.parseLine('1997,Ford,E350,Super "luxurious" "truck"')); - -assertEquals( - ['1997','Ford','E350','Super "luxurious""truck"'], - parser.parseLine('1997,Ford,E350,Super "luxurious""truck"')); - -assertEquals( - ['shared-library','/lib/ld-2.3.6.so','0x489a2000','0x489b7000'], - parser.parseLine('shared-library,/lib/ld-2.3.6.so,0x489a2000,0x489b7000')); - -assertEquals( - ['code-creation','LazyCompile','0xf6fe2d20','1201','APPLY_PREPARE native runtime.js:165'], - parser.parseLine('code-creation,LazyCompile,0xf6fe2d20,1201,APPLY_PREPARE native runtime.js:165')); - -assertEquals( - ['code-creation','LazyCompile','0xf6fe4bc0','282',' native v8natives.js:69'], - parser.parseLine('code-creation,LazyCompile,0xf6fe4bc0,282, native v8natives.js:69')); - -assertEquals( - ['code-creation','RegExp','0xf6c21c00','826','NccyrJroXvg\\/([^,]*)'], - parser.parseLine('code-creation,RegExp,0xf6c21c00,826,NccyrJroXvg\\x5C/([^\\x2C]*)')); - -assertEquals( - ['code-creation','Function','0x42f0a0','163','""'], - parser.parseLine('code-creation,Function,0x42f0a0,163,""')); - -assertEquals( - ['foo C:\\Users\\someuser\\script.js:1:13'], - parser.parseLine('foo C:\\\\Users\\\\someuser\\\\script.js:1:13')); diff --git a/implementation-contributed/v8/mjsunit/tools/dumpcpp.js b/implementation-contributed/v8/mjsunit/tools/dumpcpp.js deleted file mode 100644 index 2d9f17971f2..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/dumpcpp.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Load implementations from /tools. -// Files: tools/splaytree.js tools/codemap.js tools/csvparser.js -// Files: tools/consarray.js tools/profile.js tools/profile_view.js -// Files: tools/logreader.js tools/arguments.js tools/tickprocessor.js -// Files: tools/dumpcpp.js -// Env: TEST_FILE_NAME - -(function testProcessSharedLibrary() { - var oldLoadSymbols = UnixCppEntriesProvider.prototype.loadSymbols; - - UnixCppEntriesProvider.prototype.loadSymbols = function(libName) { - this.symbols = [[ - '00000100 00000001 t v8::internal::Runtime_StringReplaceRegExpWithString(v8::internal::Arguments)', - '00000110 00000001 T v8::internal::Runtime::GetElementOrCharAt(v8::internal::Handle, unsigned int)', - '00000120 00000001 t v8::internal::Runtime_DebugGetPropertyDetails(v8::internal::Arguments)', - '00000130 00000001 W v8::internal::RegExpMacroAssembler::CheckPosition(int, v8::internal::Label*)' - ].join('\n'), '']; - }; - - var testCppProcessor = new CppProcessor(new UnixCppEntriesProvider(), - false, false); - testCppProcessor.processSharedLibrary( - '/usr/local/google/home/lpy/v8/out/native/d8', - 0x00000100, 0x00000400, 0); - - var staticEntries = testCppProcessor.codeMap_.getAllStaticEntriesWithAddresses(); - var total = staticEntries.length; - assertEquals(total, 3); - assertEquals(staticEntries[0], - [288,{size:1, - name:'v8::internal::Runtime_DebugGetPropertyDetails(v8::internal::Arguments)', - type:'CPP', - nameUpdated_:false} - ]); - assertEquals(staticEntries[1], - [272,{size:1, - name:'v8::internal::Runtime::GetElementOrCharAt(v8::internal::Handle, unsigned int)', - type:'CPP', - nameUpdated_:false} - ]); - assertEquals(staticEntries[2], - [256,{size:1, - name:'v8::internal::Runtime_StringReplaceRegExpWithString(v8::internal::Arguments)', - type:'CPP', - nameUpdated_:false} - ]); - - UnixCppEntriesProvider.prototype.loadSymbols = oldLoadSymbols; -})(); diff --git a/implementation-contributed/v8/mjsunit/tools/profile.js b/implementation-contributed/v8/mjsunit/tools/profile.js deleted file mode 100644 index c9d2da78dc5..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/profile.js +++ /dev/null @@ -1,347 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Load source code files from /tools. -// Files: tools/splaytree.js tools/codemap.js tools/consarray.js tools/profile.js - - -function stackToString(stack) { - return stack.join(' -> '); -}; - - -function assertPathExists(root, path, opt_message) { - var message = opt_message ? ' (' + opt_message + ')' : ''; - assertNotNull(root.descendToChild(path, function(node, pos) { - assertNotNull(node, - stackToString(path.slice(0, pos)) + ' has no child ' + - path[pos] + message); - }), opt_message); -}; - - -function assertNoPathExists(root, path, opt_message) { - var message = opt_message ? ' (' + opt_message + ')' : ''; - assertNull(root.descendToChild(path), opt_message); -}; - - -function countNodes(profile, traverseFunc) { - var count = 0; - traverseFunc.call(profile, function () { count++; }); - return count; -}; - - -function ProfileTestDriver() { - this.profile = new Profile(); - this.stack_ = []; - this.addFunctions_(); -}; - - -// Addresses inside functions. -ProfileTestDriver.prototype.funcAddrs_ = { - 'lib1-f1': 0x11110, 'lib1-f2': 0x11210, - 'lib2-f1': 0x21110, 'lib2-f2': 0x21210, - 'T: F1': 0x50110, 'T: F2': 0x50210, 'T: F3': 0x50410 }; - - -ProfileTestDriver.prototype.addFunctions_ = function() { - this.profile.addLibrary('lib1', 0x11000, 0x12000); - this.profile.addStaticCode('lib1-f1', 0x11100, 0x11900); - this.profile.addStaticCode('lib1-f2', 0x11200, 0x11500); - this.profile.addLibrary('lib2', 0x21000, 0x22000); - this.profile.addStaticCode('lib2-f1', 0x21100, 0x21900); - this.profile.addStaticCode('lib2-f2', 0x21200, 0x21500); - this.profile.addCode('T', 'F1', 1, 0x50100, 0x100); - this.profile.addCode('T', 'F2', 2, 0x50200, 0x100); - this.profile.addCode('T', 'F3', 3, 0x50400, 0x100); -}; - - -ProfileTestDriver.prototype.enter = function(funcName) { - // Stack looks like this: [pc, caller, ..., main]. - // Therefore, we are adding entries at the beginning. - this.stack_.unshift(this.funcAddrs_[funcName]); - this.profile.recordTick(0, 0, this.stack_); -}; - - -ProfileTestDriver.prototype.stay = function() { - this.profile.recordTick(0, 0, this.stack_); -}; - - -ProfileTestDriver.prototype.leave = function() { - this.stack_.shift(); -}; - - -ProfileTestDriver.prototype.execute = function() { - this.enter('lib1-f1'); - this.enter('lib1-f2'); - this.enter('T: F1'); - this.enter('T: F2'); - this.leave(); - this.stay(); - this.enter('lib2-f1'); - this.enter('lib2-f1'); - this.leave(); - this.stay(); - this.leave(); - this.enter('T: F3'); - this.enter('T: F3'); - this.enter('T: F3'); - this.leave(); - this.enter('T: F2'); - this.stay(); - this.leave(); - this.leave(); - this.leave(); - this.leave(); - this.enter('lib2-f1'); - this.enter('lib1-f1'); - this.leave(); - this.leave(); - this.stay(); - this.leave(); -}; - - -function Inherits(childCtor, parentCtor) { - function tempCtor() {}; - tempCtor.prototype = parentCtor.prototype; - childCtor.superClass_ = parentCtor.prototype; - childCtor.prototype = new tempCtor(); - childCtor.prototype.constructor = childCtor; -}; - - -(function testCallTreeBuilding() { - function Driver() { - ProfileTestDriver.call(this); - this.namesTopDown = []; - this.namesBottomUp = []; - }; - Inherits(Driver, ProfileTestDriver); - - Driver.prototype.enter = function(func) { - this.namesTopDown.push(func); - this.namesBottomUp.unshift(func); - assertNoPathExists(this.profile.getTopDownProfile().getRoot(), this.namesTopDown, - 'pre enter/topDown'); - assertNoPathExists(this.profile.getBottomUpProfile().getRoot(), this.namesBottomUp, - 'pre enter/bottomUp'); - Driver.superClass_.enter.call(this, func); - assertPathExists(this.profile.getTopDownProfile().getRoot(), this.namesTopDown, - 'post enter/topDown'); - assertPathExists(this.profile.getBottomUpProfile().getRoot(), this.namesBottomUp, - 'post enter/bottomUp'); - }; - - Driver.prototype.stay = function() { - var preTopDownNodes = countNodes(this.profile, this.profile.traverseTopDownTree); - var preBottomUpNodes = countNodes(this.profile, this.profile.traverseBottomUpTree); - Driver.superClass_.stay.call(this); - var postTopDownNodes = countNodes(this.profile, this.profile.traverseTopDownTree); - var postBottomUpNodes = countNodes(this.profile, this.profile.traverseBottomUpTree); - // Must be no changes in tree layout. - assertEquals(preTopDownNodes, postTopDownNodes, 'stay/topDown'); - assertEquals(preBottomUpNodes, postBottomUpNodes, 'stay/bottomUp'); - }; - - Driver.prototype.leave = function() { - Driver.superClass_.leave.call(this); - this.namesTopDown.pop(); - this.namesBottomUp.shift(); - }; - - var testDriver = new Driver(); - testDriver.execute(); -})(); - - -function assertNodeWeights(root, path, selfTicks, totalTicks) { - var node = root.descendToChild(path); - var stack = stackToString(path); - assertNotNull(node, 'node not found: ' + stack); - assertEquals(selfTicks, node.selfWeight, 'self of ' + stack); - assertEquals(totalTicks, node.totalWeight, 'total of ' + stack); -}; - - -(function testTopDownRootProfileTicks() { - var testDriver = new ProfileTestDriver(); - testDriver.execute(); - - var pathWeights = [ - [['lib1-f1'], 1, 16], - [['lib1-f1', 'lib1-f2'], 2, 15], - [['lib1-f1', 'lib1-f2', 'T: F1'], 2, 11], - [['lib1-f1', 'lib1-f2', 'T: F1', 'T: F2'], 1, 1], - [['lib1-f1', 'lib1-f2', 'T: F1', 'lib2-f1'], 2, 3], - [['lib1-f1', 'lib1-f2', 'T: F1', 'lib2-f1', 'lib2-f1'], 1, 1], - [['lib1-f1', 'lib1-f2', 'T: F1', 'T: F3'], 1, 5], - [['lib1-f1', 'lib1-f2', 'T: F1', 'T: F3', 'T: F3'], 1, 4], - [['lib1-f1', 'lib1-f2', 'T: F1', 'T: F3', 'T: F3', 'T: F3'], 1, 1], - [['lib1-f1', 'lib1-f2', 'T: F1', 'T: F3', 'T: F3', 'T: F2'], 2, 2], - [['lib1-f1', 'lib1-f2', 'lib2-f1'], 1, 2], - [['lib1-f1', 'lib1-f2', 'lib2-f1', 'lib1-f1'], 1, 1] - ]; - - var root = testDriver.profile.getTopDownProfile().getRoot(); - for (var i = 0; i < pathWeights.length; ++i) { - var data = pathWeights[i]; - assertNodeWeights(root, data[0], data[1], data[2]); - } -})(); - - -(function testRootFlatProfileTicks() { - function Driver() { - ProfileTestDriver.call(this); - this.namesTopDown = ['']; - this.counters = {}; - this.root = null; - }; - Inherits(Driver, ProfileTestDriver); - - Driver.prototype.increment = function(func, self, total) { - if (!(func in this.counters)) { - this.counters[func] = { self: 0, total: 0 }; - } - this.counters[func].self += self; - this.counters[func].total += total; - }; - - Driver.prototype.incrementTotals = function() { - // Only count each function in the stack once. - var met = {}; - for (var i = 0; i < this.namesTopDown.length; ++i) { - var name = this.namesTopDown[i]; - if (!(name in met)) { - this.increment(name, 0, 1); - } - met[name] = true; - } - }; - - Driver.prototype.enter = function(func) { - Driver.superClass_.enter.call(this, func); - this.namesTopDown.push(func); - this.increment(func, 1, 0); - this.incrementTotals(); - }; - - Driver.prototype.stay = function() { - Driver.superClass_.stay.call(this); - this.increment(this.namesTopDown[this.namesTopDown.length - 1], 1, 0); - this.incrementTotals(); - }; - - Driver.prototype.leave = function() { - Driver.superClass_.leave.call(this); - this.namesTopDown.pop(); - }; - - Driver.prototype.extractRoot = function() { - assertTrue('' in this.counters); - this.root = this.counters['']; - delete this.counters['']; - }; - - var testDriver = new Driver(); - testDriver.execute(); - testDriver.extractRoot(); - - var counted = 0; - for (var c in testDriver.counters) { - counted++; - } - - var flatProfileRoot = testDriver.profile.getFlatProfile().getRoot(); - assertEquals(testDriver.root.self, flatProfileRoot.selfWeight); - assertEquals(testDriver.root.total, flatProfileRoot.totalWeight); - - var flatProfile = flatProfileRoot.exportChildren(); - assertEquals(counted, flatProfile.length, 'counted vs. flatProfile'); - for (var i = 0; i < flatProfile.length; ++i) { - var rec = flatProfile[i]; - assertTrue(rec.label in testDriver.counters, 'uncounted: ' + rec.label); - var reference = testDriver.counters[rec.label]; - assertEquals(reference.self, rec.selfWeight, 'self of ' + rec.label); - assertEquals(reference.total, rec.totalWeight, 'total of ' + rec.label); - } - -})(); - - -(function testFunctionCalleesProfileTicks() { - var testDriver = new ProfileTestDriver(); - testDriver.execute(); - - var pathWeights = [ - [['lib2-f1'], 3, 5], - [['lib2-f1', 'lib2-f1'], 1, 1], - [['lib2-f1', 'lib1-f1'], 1, 1] - ]; - - var profile = testDriver.profile.getTopDownProfile('lib2-f1'); - var root = profile.getRoot(); - for (var i = 0; i < pathWeights.length; ++i) { - var data = pathWeights[i]; - assertNodeWeights(root, data[0], data[1], data[2]); - } -})(); - - -(function testFunctionFlatProfileTicks() { - var testDriver = new ProfileTestDriver(); - testDriver.execute(); - - var flatWeights = { - 'lib2-f1': [1, 1], - 'lib1-f1': [1, 1] - }; - - var flatProfileRoot = - testDriver.profile.getFlatProfile('lib2-f1').findOrAddChild('lib2-f1'); - assertEquals(3, flatProfileRoot.selfWeight); - assertEquals(5, flatProfileRoot.totalWeight); - - var flatProfile = flatProfileRoot.exportChildren(); - assertEquals(2, flatProfile.length, 'counted vs. flatProfile'); - for (var i = 0; i < flatProfile.length; ++i) { - var rec = flatProfile[i]; - assertTrue(rec.label in flatWeights, 'uncounted: ' + rec.label); - var reference = flatWeights[rec.label]; - assertEquals(reference[0], rec.selfWeight, 'self of ' + rec.label); - assertEquals(reference[1], rec.totalWeight, 'total of ' + rec.label); - } - -})(); diff --git a/implementation-contributed/v8/mjsunit/tools/profile_view.js b/implementation-contributed/v8/mjsunit/tools/profile_view.js deleted file mode 100644 index d62205be167..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/profile_view.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Load source code files from /tools. -// Files: tools/codemap.js tools/consarray.js tools/profile.js -// Files: tools/profile_view.js - - -function createNode(name, time, opt_parent) { - var node = new ProfileView.Node(name, time, time, null); - if (opt_parent) { - opt_parent.addChild(node); - } - return node; -} - - -(function testSorting() { - // - // Build a tree: - // root +--c/5 - // | | - // +--a/2 +--b/3--+--d/4 - // | | | - // +--a/1--+--c/1 +--d/2 - // | | - // +--c/1 +--b/2 - // - // So we can sort it using 2 fields: name and time. - var root = createNode('root', 0); - createNode('a', 2, root); - var a1 = createNode('a', 1, root); - createNode('c', 1, root); - var b3 = createNode('b', 3, a1); - createNode('c', 1, a1); - createNode('b', 2, a1); - createNode('c', 5, b3); - createNode('d', 4, b3); - createNode('d', 2, b3); - - var view = new ProfileView(root); - var flatTree = []; - - function fillFlatTree(node) { - flatTree.push(node.internalFuncName); - flatTree.push(node.selfTime); - } - - view.traverse(fillFlatTree); - assertEquals( - ['root', 0, - 'a', 2, 'a', 1, 'c', 1, - 'b', 3, 'c', 1, 'b', 2, - 'c', 5, 'd', 4, 'd', 2], flatTree); - - function cmpStrs(s1, s2) { - return s1 == s2 ? 0 : (s1 < s2 ? -1 : 1); - } - - view.sort(function(n1, n2) { - return cmpStrs(n1.internalFuncName, n2.internalFuncName) || - (n1.selfTime - n2.selfTime); - }); - - flatTree = []; - view.traverse(fillFlatTree); - assertEquals( - ['root', 0, - 'a', 1, 'a', 2, 'c', 1, - 'b', 2, 'b', 3, 'c', 1, - 'c', 5, 'd', 2, 'd', 4], flatTree); -})(); diff --git a/implementation-contributed/v8/mjsunit/tools/profviz-test.default b/implementation-contributed/v8/mjsunit/tools/profviz-test.default deleted file mode 100644 index 0c33e11abdb..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/profviz-test.default +++ /dev/null @@ -1,1566 +0,0 @@ -[ - "set yrange [0:24.5]", - "set xlabel \"execution time in ms\"", - "set xrange [2.4204999999999997:141.1669999999999]", - "set style fill pattern 2 bo 1", - "set style rect fs solid 1 noborder", - "set style line 1 lt 1 lw 1 lc rgb \"#000000\"", - "set border 15 lw 0.2", - "set style line 2 lt 1 lw 1 lc rgb \"#9944CC\"", - "set xtics out nomirror", - "unset key", - "set object 1 rect from 87.51699999999991, 7 to 87.60371656249991, 3 fc rgb \"#9944CC\"", - "set object 2 rect from 110.7114999999999, 7 to 110.7982165624999, 3 fc rgb \"#9944CC\"", - "set object 3 rect from 133.5129999999999, 7 to 133.59971656249988, 3 fc rgb \"#9944CC\"", - "set object 4 rect from 61.49249999999995, 7 to 61.57921656249995, 5.020618556701031 fc rgb \"#9944CC\"", - "set object 5 rect from 101.40849999999992, 7 to 101.49521656249992, 5.103092783505154 fc rgb \"#9944CC\"", - "set object 6 rect from 57.242999999999974, 7 to 57.329716562499975, 6.766323024054983 fc rgb \"#9944CC\"", - "set object 7 rect from 58.751499999999965, 7 to 58.838216562499966, 6.766323024054983 fc rgb \"#9944CC\"", - "set object 8 rect from 60.72499999999996, 7 to 60.81171656249996, 6.766323024054983 fc rgb \"#9944CC\"", - "set ytics out nomirror (\"execution (59.6%%)\" 12.5, \"external (0.2%%)\" 13.5, \"compile unopt (3.1%%)\" 14.5, \"recompile sync (6.6%%)\" 15.5, \"recompile async (11.6%%)\" 16.5, \"compile eval (0.0%%)\" 17.5, \"parse (9.9%%)\" 18.5, \"preparse (0.6%%)\" 19.5, \"lazy parse (2.9%%)\" 20.5, \"gc scavenge (1.6%%)\" 21.5, \"gc compaction (3.3%%)\" 22.5, \"gc context (0.0%%)\" 23.5, \"code kind color coding\" 11, \"code kind in execution\" 10, \"top 8 js stack frames\" 9, \"pause times\" 0, \"max deopt size: 9.1 kB\" 7)", - "set object 9 rect from 42.11000000000001, 12.83 to 42.28050000000001, 12.17 fc rgb \"#000000\"", - "set object 10 rect from 42.298000000000016, 12.83 to 42.30000000000002, 12.17 fc rgb \"#000000\"", - "set object 11 rect from 42.31450000000002, 12.83 to 42.62700000000002, 12.17 fc rgb \"#000000\"", - "set object 12 rect from 42.656500000000015, 12.83 to 42.66150000000002, 12.17 fc rgb \"#000000\"", - "set object 13 rect from 42.70600000000002, 12.83 to 42.747000000000014, 12.17 fc rgb \"#000000\"", - "set object 14 rect from 42.763500000000015, 12.83 to 42.76550000000001, 12.17 fc rgb \"#000000\"", - "set object 15 rect from 42.795000000000016, 12.83 to 42.812500000000014, 12.17 fc rgb \"#000000\"", - "set object 16 rect from 42.83300000000001, 12.83 to 42.844000000000015, 12.17 fc rgb \"#000000\"", - "set object 17 rect from 42.858500000000014, 12.83 to 42.85950000000001, 12.17 fc rgb \"#000000\"", - "set object 18 rect from 42.88200000000001, 12.83 to 43.60550000000001, 12.17 fc rgb \"#000000\"", - "set object 19 rect from 43.62000000000002, 12.83 to 43.622000000000014, 12.17 fc rgb \"#000000\"", - "set object 20 rect from 43.632500000000014, 12.83 to 44.796000000000014, 12.17 fc rgb \"#000000\"", - "set object 21 rect from 44.81150000000002, 12.83 to 44.812500000000014, 12.17 fc rgb \"#000000\"", - "set object 22 rect from 44.82200000000002, 12.83 to 44.84500000000001, 12.17 fc rgb \"#000000\"", - "set object 23 rect from 44.87150000000002, 12.83 to 44.87550000000002, 12.17 fc rgb \"#000000\"", - "set object 24 rect from 44.917000000000016, 12.83 to 44.996000000000016, 12.17 fc rgb \"#000000\"", - "set object 25 rect from 45.00850000000001, 12.83 to 45.01150000000001, 12.17 fc rgb \"#000000\"", - "set object 26 rect from 45.02900000000001, 12.83 to 45.04700000000001, 12.17 fc rgb \"#000000\"", - "set object 27 rect from 45.06450000000002, 12.83 to 45.068500000000014, 12.17 fc rgb \"#000000\"", - "set object 28 rect from 45.08700000000001, 12.83 to 45.09600000000001, 12.17 fc rgb \"#000000\"", - "set object 29 rect from 45.107500000000016, 12.83 to 45.110500000000016, 12.17 fc rgb \"#000000\"", - "set object 30 rect from 45.13500000000002, 12.83 to 45.14400000000002, 12.17 fc rgb \"#000000\"", - "set object 31 rect from 45.16150000000002, 12.83 to 45.32050000000002, 12.17 fc rgb \"#000000\"", - "set object 32 rect from 45.33700000000002, 12.83 to 45.34000000000002, 12.17 fc rgb \"#000000\"", - "set object 33 rect from 45.361500000000014, 12.83 to 45.38750000000002, 12.17 fc rgb \"#000000\"", - "set object 34 rect from 45.402000000000015, 12.83 to 45.405000000000015, 12.17 fc rgb \"#000000\"", - "set object 35 rect from 45.41750000000002, 12.83 to 45.43250000000002, 12.17 fc rgb \"#000000\"", - "set object 36 rect from 45.442000000000014, 12.83 to 45.49750000000001, 12.17 fc rgb \"#000000\"", - "set object 37 rect from 45.55900000000001, 12.83 to 45.56900000000001, 12.17 fc rgb \"#000000\"", - "set object 38 rect from 45.626500000000014, 12.83 to 45.66050000000001, 12.17 fc rgb \"#000000\"", - "set object 39 rect from 45.70300000000001, 12.83 to 45.71200000000001, 12.17 fc rgb \"#000000\"", - "set object 40 rect from 45.76150000000001, 12.83 to 45.79350000000001, 12.17 fc rgb \"#000000\"", - "set object 41 rect from 45.81700000000001, 12.83 to 45.82000000000001, 12.17 fc rgb \"#000000\"", - "set object 42 rect from 45.84850000000001, 12.83 to 45.86950000000001, 12.17 fc rgb \"#000000\"", - "set object 43 rect from 45.92300000000001, 12.83 to 45.93000000000001, 12.17 fc rgb \"#000000\"", - "set object 44 rect from 45.97850000000001, 12.83 to 45.99450000000001, 12.17 fc rgb \"#000000\"", - "set object 45 rect from 46.060500000000005, 12.83 to 46.08650000000001, 12.17 fc rgb \"#000000\"", - "set object 46 rect from 46.13100000000001, 12.83 to 46.18500000000001, 12.17 fc rgb \"#000000\"", - "set object 47 rect from 46.28150000000001, 12.83 to 46.291500000000006, 12.17 fc rgb \"#000000\"", - "set object 48 rect from 46.37200000000001, 12.83 to 46.550000000000004, 12.17 fc rgb \"#000000\"", - "set object 49 rect from 46.5915, 12.83 to 46.59550000000001, 12.17 fc rgb \"#000000\"", - "set object 50 rect from 46.621, 12.83 to 46.65500000000001, 12.17 fc rgb \"#000000\"", - "set object 51 rect from 46.691500000000005, 12.83 to 46.694500000000005, 12.17 fc rgb \"#000000\"", - "set object 52 rect from 46.74, 12.83 to 46.861000000000004, 12.17 fc rgb \"#000000\"", - "set object 53 rect from 46.8935, 12.83 to 46.8975, 12.17 fc rgb \"#000000\"", - "set object 54 rect from 46.9925, 12.83 to 47.039500000000004, 12.17 fc rgb \"#000000\"", - "set object 55 rect from 47.049, 12.83 to 47.0765, 12.17 fc rgb \"#000000\"", - "set object 56 rect from 47.135000000000005, 12.83 to 47.141, 12.17 fc rgb \"#000000\"", - "set object 57 rect from 47.3935, 12.83 to 47.4125, 12.17 fc rgb \"#000000\"", - "set object 58 rect from 47.465, 12.83 to 47.472, 12.17 fc rgb \"#000000\"", - "set object 59 rect from 47.5235, 12.83 to 49.454499999999996, 12.17 fc rgb \"#000000\"", - "set object 60 rect from 49.467, 12.83 to 49.469, 12.17 fc rgb \"#000000\"", - "set object 61 rect from 49.4955, 12.83 to 49.6855, 12.17 fc rgb \"#000000\"", - "set object 62 rect from 49.726, 12.83 to 49.732, 12.17 fc rgb \"#000000\"", - "set object 63 rect from 49.780499999999996, 12.83 to 49.799499999999995, 12.17 fc rgb \"#000000\"", - "set object 64 rect from 49.812999999999995, 12.83 to 49.814, 12.17 fc rgb \"#000000\"", - "set object 65 rect from 49.82449999999999, 12.83 to 49.851, 12.17 fc rgb \"#000000\"", - "set object 66 rect from 49.8685, 12.83 to 49.894499999999994, 12.17 fc rgb \"#000000\"", - "set object 67 rect from 49.9695, 12.83 to 50.083999999999996, 12.17 fc rgb \"#000000\"", - "set object 68 rect from 50.14149999999999, 12.83 to 50.147499999999994, 12.17 fc rgb \"#000000\"", - "set object 69 rect from 50.20799999999999, 12.83 to 50.29299999999999, 12.17 fc rgb \"#000000\"", - "set object 70 rect from 50.31249999999999, 12.83 to 50.314499999999995, 12.17 fc rgb \"#000000\"", - "set object 71 rect from 50.32899999999999, 12.83 to 50.36699999999999, 12.17 fc rgb \"#000000\"", - "set object 72 rect from 50.39849999999999, 12.83 to 50.40249999999999, 12.17 fc rgb \"#000000\"", - "set object 73 rect from 50.43099999999999, 12.83 to 50.54899999999999, 12.17 fc rgb \"#000000\"", - "set object 74 rect from 50.62049999999999, 12.83 to 50.62949999999999, 12.17 fc rgb \"#000000\"", - "set object 75 rect from 51.02349999999999, 12.83 to 51.27549999999999, 12.17 fc rgb \"#000000\"", - "set object 76 rect from 51.29099999999999, 12.83 to 51.292999999999985, 12.17 fc rgb \"#000000\"", - "set object 77 rect from 51.30249999999999, 12.83 to 51.52249999999999, 12.17 fc rgb \"#000000\"", - "set object 78 rect from 51.56899999999999, 12.83 to 51.57499999999999, 12.17 fc rgb \"#000000\"", - "set object 79 rect from 51.78349999999999, 12.83 to 51.87299999999998, 12.17 fc rgb \"#000000\"", - "set object 80 rect from 51.89049999999999, 12.83 to 51.89349999999999, 12.17 fc rgb \"#000000\"", - "set object 81 rect from 51.91599999999998, 12.83 to 52.115999999999985, 12.17 fc rgb \"#000000\"", - "set object 82 rect from 52.13449999999999, 12.83 to 52.13749999999999, 12.17 fc rgb \"#000000\"", - "set object 83 rect from 52.15399999999998, 12.83 to 52.286999999999985, 12.17 fc rgb \"#000000\"", - "set object 84 rect from 52.300499999999985, 12.83 to 52.30249999999998, 12.17 fc rgb \"#000000\"", - "set object 85 rect from 52.31499999999998, 12.83 to 52.362999999999985, 12.17 fc rgb \"#000000\"", - "set object 86 rect from 52.404499999999985, 12.83 to 52.40949999999998, 12.17 fc rgb \"#000000\"", - "set object 87 rect from 52.448999999999984, 12.83 to 54.55999999999998, 12.17 fc rgb \"#000000\"", - "set object 88 rect from 54.951999999999984, 12.83 to 55.48599999999998, 12.17 fc rgb \"#000000\"", - "set object 89 rect from 55.66249999999998, 12.83 to 55.79999999999998, 12.17 fc rgb \"#000000\"", - "set object 90 rect from 56.198999999999984, 12.83 to 56.25149999999998, 12.17 fc rgb \"#000000\"", - "set object 91 rect from 56.52499999999998, 12.83 to 56.55699999999998, 12.17 fc rgb \"#000000\"", - "set object 92 rect from 56.634499999999974, 12.83 to 56.63999999999998, 12.17 fc rgb \"#000000\"", - "set object 93 rect from 56.69449999999998, 12.83 to 56.746499999999976, 12.17 fc rgb \"#000000\"", - "set object 94 rect from 56.845999999999975, 12.83 to 56.85849999999998, 12.17 fc rgb \"#000000\"", - "set object 95 rect from 56.97649999999997, 12.83 to 57.03599999999997, 12.17 fc rgb \"#000000\"", - "set object 96 rect from 57.205999999999975, 12.83 to 57.27249999999997, 12.17 fc rgb \"#000000\"", - "set object 97 rect from 57.33299999999997, 12.83 to 57.565999999999974, 12.17 fc rgb \"#000000\"", - "set object 98 rect from 57.64849999999997, 12.83 to 57.878499999999974, 12.17 fc rgb \"#000000\"", - "set object 99 rect from 57.934999999999974, 12.83 to 57.97299999999997, 12.17 fc rgb \"#000000\"", - "set object 100 rect from 58.07699999999997, 12.83 to 58.09149999999997, 12.17 fc rgb \"#000000\"", - "set object 101 rect from 58.12149999999997, 12.83 to 58.14299999999997, 12.17 fc rgb \"#000000\"", - "set object 102 rect from 58.17349999999997, 12.83 to 58.17499999999997, 12.17 fc rgb \"#000000\"", - "set object 103 rect from 58.21549999999997, 12.83 to 58.23599999999997, 12.17 fc rgb \"#000000\"", - "set object 104 rect from 58.275499999999965, 12.83 to 58.27599999999997, 12.17 fc rgb \"#000000\"", - "set object 105 rect from 58.300499999999964, 12.83 to 58.30299999999997, 12.17 fc rgb \"#000000\"", - "set object 106 rect from 58.316999999999965, 12.83 to 58.409499999999966, 12.17 fc rgb \"#000000\"", - "set object 107 rect from 58.58699999999997, 12.83 to 58.589499999999965, 12.17 fc rgb \"#000000\"", - "set object 108 rect from 58.65749999999996, 12.83 to 58.92499999999996, 12.17 fc rgb \"#000000\"", - "set object 109 rect from 59.02199999999996, 12.83 to 59.02349999999996, 12.17 fc rgb \"#000000\"", - "set object 110 rect from 59.042999999999964, 12.83 to 59.641499999999965, 12.17 fc rgb \"#000000\"", - "set object 111 rect from 59.69699999999996, 12.83 to 59.89099999999996, 12.17 fc rgb \"#000000\"", - "set object 112 rect from 59.93649999999996, 12.83 to 60.04699999999996, 12.17 fc rgb \"#000000\"", - "set object 113 rect from 60.08349999999996, 12.83 to 60.17149999999996, 12.17 fc rgb \"#000000\"", - "set object 114 rect from 60.54849999999996, 12.83 to 60.55099999999995, 12.17 fc rgb \"#000000\"", - "set object 115 rect from 60.65699999999996, 12.83 to 60.91649999999996, 12.17 fc rgb \"#000000\"", - "set object 116 rect from 61.253999999999955, 12.83 to 61.31249999999996, 12.17 fc rgb \"#000000\"", - "set object 117 rect from 61.464999999999954, 12.83 to 62.16149999999996, 12.17 fc rgb \"#000000\"", - "set object 118 rect from 62.548999999999964, 12.83 to 62.62699999999996, 12.17 fc rgb \"#000000\"", - "set object 119 rect from 63.024999999999956, 12.83 to 63.14749999999995, 12.17 fc rgb \"#000000\"", - "set object 120 rect from 63.41299999999995, 12.83 to 64.40899999999996, 12.17 fc rgb \"#000000\"", - "set object 121 rect from 64.61749999999995, 12.83 to 65.56449999999995, 12.17 fc rgb \"#000000\"", - "set object 122 rect from 65.61699999999995, 12.83 to 67.34249999999994, 12.17 fc rgb \"#000000\"", - "set object 123 rect from 67.45099999999994, 12.83 to 67.45549999999994, 12.17 fc rgb \"#000000\"", - "set object 124 rect from 67.48749999999995, 12.83 to 67.53599999999994, 12.17 fc rgb \"#000000\"", - "set object 125 rect from 67.57649999999995, 12.83 to 67.57799999999995, 12.17 fc rgb \"#000000\"", - "set object 126 rect from 67.59199999999996, 12.83 to 68.70599999999996, 12.17 fc rgb \"#000000\"", - "set object 127 rect from 68.76649999999995, 12.83 to 69.10849999999995, 12.17 fc rgb \"#000000\"", - "set object 128 rect from 69.49599999999995, 12.83 to 70.31749999999994, 12.17 fc rgb \"#000000\"", - "set object 129 rect from 70.33949999999994, 12.83 to 70.34449999999994, 12.17 fc rgb \"#000000\"", - "set object 130 rect from 70.35799999999995, 12.83 to 70.40899999999993, 12.17 fc rgb \"#000000\"", - "set object 131 rect from 70.58649999999994, 12.83 to 72.22199999999995, 12.17 fc rgb \"#000000\"", - "set object 132 rect from 72.28049999999995, 12.83 to 74.40699999999995, 12.17 fc rgb \"#000000\"", - "set object 133 rect from 74.63849999999994, 12.83 to 75.04799999999994, 12.17 fc rgb \"#000000\"", - "set object 134 rect from 75.20099999999994, 12.83 to 75.41849999999994, 12.17 fc rgb \"#000000\"", - "set object 135 rect from 75.46799999999995, 12.83 to 78.16449999999993, 12.17 fc rgb \"#000000\"", - "set object 136 rect from 78.23649999999994, 12.83 to 80.90399999999994, 12.17 fc rgb \"#000000\"", - "set object 137 rect from 80.95049999999993, 12.83 to 83.58349999999993, 12.17 fc rgb \"#000000\"", - "set object 138 rect from 83.63999999999993, 12.83 to 84.09549999999993, 12.17 fc rgb \"#000000\"", - "set object 139 rect from 84.84549999999993, 12.83 to 84.91749999999993, 12.17 fc rgb \"#000000\"", - "set object 140 rect from 85.13799999999992, 12.83 to 85.37849999999993, 12.17 fc rgb \"#000000\"", - "set object 141 rect from 86.05649999999993, 12.83 to 86.75549999999993, 12.17 fc rgb \"#000000\"", - "set object 142 rect from 87.27399999999992, 12.83 to 87.27549999999992, 12.17 fc rgb \"#000000\"", - "set object 143 rect from 87.36899999999991, 12.83 to 88.75199999999992, 12.17 fc rgb \"#000000\"", - "set object 144 rect from 88.82299999999992, 12.83 to 88.83949999999992, 12.17 fc rgb \"#000000\"", - "set object 145 rect from 89.21399999999991, 12.83 to 91.90999999999991, 12.17 fc rgb \"#000000\"", - "set object 146 rect from 91.96649999999993, 12.83 to 94.55599999999993, 12.17 fc rgb \"#000000\"", - "set object 147 rect from 94.6054999999999, 12.83 to 97.20749999999991, 12.17 fc rgb \"#000000\"", - "set object 148 rect from 97.26099999999992, 12.83 to 99.86649999999992, 12.17 fc rgb \"#000000\"", - "set object 149 rect from 99.92199999999991, 12.83 to 102.56049999999992, 12.17 fc rgb \"#000000\"", - "set object 150 rect from 102.61199999999991, 12.83 to 102.74149999999992, 12.17 fc rgb \"#000000\"", - "set object 151 rect from 102.99499999999992, 12.83 to 104.13299999999992, 12.17 fc rgb \"#000000\"", - "set object 152 rect from 104.4429999999999, 12.83 to 105.88099999999991, 12.17 fc rgb \"#000000\"", - "set object 153 rect from 105.93349999999991, 12.83 to 107.51699999999991, 12.17 fc rgb \"#000000\"", - "set object 154 rect from 108.09449999999991, 12.83 to 109.2659999999999, 12.17 fc rgb \"#000000\"", - "set object 155 rect from 109.41799999999989, 12.83 to 110.0909999999999, 12.17 fc rgb \"#000000\"", - "set object 156 rect from 110.4839999999999, 12.83 to 112.6029999999999, 12.17 fc rgb \"#000000\"", - "set object 157 rect from 112.6564999999999, 12.83 to 115.36399999999989, 12.17 fc rgb \"#000000\"", - "set object 158 rect from 115.4124999999999, 12.83 to 118.1434999999999, 12.17 fc rgb \"#000000\"", - "set object 159 rect from 118.19199999999991, 12.83 to 120.9194999999999, 12.17 fc rgb \"#000000\"", - "set object 160 rect from 121.0314999999999, 12.83 to 123.77499999999989, 12.17 fc rgb \"#000000\"", - "set object 161 rect from 123.8254999999999, 12.83 to 126.55149999999989, 12.17 fc rgb \"#000000\"", - "set object 162 rect from 126.59899999999989, 12.83 to 129.3344999999999, 12.17 fc rgb \"#000000\"", - "set object 163 rect from 129.48849999999987, 12.83 to 130.5424999999999, 12.17 fc rgb \"#000000\"", - "set object 164 rect from 131.1209999999999, 12.83 to 132.8659999999999, 12.17 fc rgb \"#000000\"", - "set object 165 rect from 132.92249999999987, 12.83 to 133.04349999999988, 12.17 fc rgb \"#000000\"", - "set object 166 rect from 133.4079999999999, 12.83 to 136.14449999999988, 12.17 fc rgb \"#000000\"", - "set object 167 rect from 136.19799999999987, 12.83 to 138.9289999999999, 12.17 fc rgb \"#000000\"", - "set object 168 rect from 138.98049999999986, 12.83 to 140.86699999999988, 12.17 fc rgb \"#000000\"", - "set object 169 rect from 140.8814999999999, 12.83 to 140.88349999999988, 12.17 fc rgb \"#000000\"", - "set object 170 rect from 140.89599999999987, 12.83 to 140.9319999999999, 12.17 fc rgb \"#000000\"", - "set object 171 rect from 140.9574999999999, 12.83 to 140.96249999999986, 12.17 fc rgb \"#000000\"", - "set object 172 rect from 140.9779999999999, 12.83 to 141.0599999999999, 12.17 fc rgb \"#000000\"", - "set object 173 rect from 141.0984999999999, 12.83 to 141.09999999999988, 12.17 fc rgb \"#000000\"", - "set object 174 rect from 2.4490000000000003, 13.83 to 2.4545, 13.17 fc rgb \"#3399FF\"", - "set object 175 rect from 3.7920000000000003, 13.83 to 3.8075, 13.17 fc rgb \"#3399FF\"", - "set object 176 rect from 6.276000000000001, 13.83 to 6.2805, 13.17 fc rgb \"#3399FF\"", - "set object 177 rect from 7.373, 13.83 to 7.3865, 13.17 fc rgb \"#3399FF\"", - "set object 178 rect from 9.299, 13.83 to 9.302499999999998, 13.17 fc rgb \"#3399FF\"", - "set object 179 rect from 10.405000000000001, 13.83 to 10.4235, 13.17 fc rgb \"#3399FF\"", - "set object 180 rect from 12.882, 13.83 to 12.8865, 13.17 fc rgb \"#3399FF\"", - "set object 181 rect from 13.897, 13.83 to 13.910499999999999, 13.17 fc rgb \"#3399FF\"", - "set object 182 rect from 55.80349999999998, 13.83 to 55.80399999999998, 13.17 fc rgb \"#3399FF\"", - "set object 183 rect from 56.19399999999998, 13.83 to 56.19849999999998, 13.17 fc rgb \"#3399FF\"", - "set object 184 rect from 62.16599999999996, 13.83 to 62.166499999999964, 13.17 fc rgb \"#3399FF\"", - "set object 185 rect from 62.54499999999995, 13.83 to 62.54849999999996, 13.17 fc rgb \"#3399FF\"", - "set object 186 rect from 65.56999999999996, 13.83 to 65.57049999999997, 13.17 fc rgb \"#3399FF\"", - "set object 187 rect from 65.61499999999995, 13.83 to 65.61649999999995, 13.17 fc rgb \"#3399FF\"", - "set object 188 rect from 68.71249999999995, 13.83 to 68.71399999999994, 13.17 fc rgb \"#3399FF\"", - "set object 189 rect from 68.76249999999995, 13.83 to 68.76599999999993, 13.17 fc rgb \"#3399FF\"", - "set object 190 rect from 72.22849999999994, 13.83 to 72.22899999999994, 13.17 fc rgb \"#3399FF\"", - "set object 191 rect from 72.27749999999995, 13.83 to 72.27999999999994, 13.17 fc rgb \"#3399FF\"", - "set object 192 rect from 75.42299999999994, 13.83 to 75.42349999999995, 13.17 fc rgb \"#3399FF\"", - "set object 193 rect from 75.46599999999995, 13.83 to 75.46749999999994, 13.17 fc rgb \"#3399FF\"", - "set object 194 rect from 78.17099999999994, 13.83 to 78.17149999999994, 13.17 fc rgb \"#3399FF\"", - "set object 195 rect from 78.23049999999994, 13.83 to 78.23599999999993, 13.17 fc rgb \"#3399FF\"", - "set object 196 rect from 80.91049999999994, 13.83 to 80.91099999999994, 13.17 fc rgb \"#3399FF\"", - "set object 197 rect from 80.94849999999994, 13.83 to 80.94999999999993, 13.17 fc rgb \"#3399FF\"", - "set object 198 rect from 83.58999999999995, 13.83 to 83.59049999999995, 13.17 fc rgb \"#3399FF\"", - "set object 199 rect from 83.63699999999994, 13.83 to 83.63949999999993, 13.17 fc rgb \"#3399FF\"", - "set object 200 rect from 88.75849999999993, 13.83 to 88.75899999999993, 13.17 fc rgb \"#3399FF\"", - "set object 201 rect from 88.81899999999993, 13.83 to 88.82249999999992, 13.17 fc rgb \"#3399FF\"", - "set object 202 rect from 91.91649999999991, 13.83 to 91.91699999999992, 13.17 fc rgb \"#3399FF\"", - "set object 203 rect from 91.96349999999993, 13.83 to 91.96599999999992, 13.17 fc rgb \"#3399FF\"", - "set object 204 rect from 94.56249999999991, 13.83 to 94.56299999999992, 13.17 fc rgb \"#3399FF\"", - "set object 205 rect from 94.60349999999991, 13.83 to 94.6049999999999, 13.17 fc rgb \"#3399FF\"", - "set object 206 rect from 97.21399999999991, 13.83 to 97.21449999999992, 13.17 fc rgb \"#3399FF\"", - "set object 207 rect from 97.25899999999993, 13.83 to 97.26049999999992, 13.17 fc rgb \"#3399FF\"", - "set object 208 rect from 99.87599999999992, 13.83 to 99.87649999999992, 13.17 fc rgb \"#3399FF\"", - "set object 209 rect from 99.91899999999993, 13.83 to 99.92149999999991, 13.17 fc rgb \"#3399FF\"", - "set object 210 rect from 102.56599999999992, 13.83 to 102.56649999999992, 13.17 fc rgb \"#3399FF\"", - "set object 211 rect from 102.6099999999999, 13.83 to 102.61149999999991, 13.17 fc rgb \"#3399FF\"", - "set object 212 rect from 105.88749999999992, 13.83 to 105.88799999999992, 13.17 fc rgb \"#3399FF\"", - "set object 213 rect from 105.93149999999991, 13.83 to 105.93299999999991, 13.17 fc rgb \"#3399FF\"", - "set object 214 rect from 109.27249999999991, 13.83 to 109.27299999999991, 13.17 fc rgb \"#3399FF\"", - "set object 215 rect from 109.38599999999991, 13.83 to 109.4024999999999, 13.17 fc rgb \"#3399FF\"", - "set object 216 rect from 112.6104999999999, 13.83 to 112.6109999999999, 13.17 fc rgb \"#3399FF\"", - "set object 217 rect from 112.6544999999999, 13.83 to 112.65599999999989, 13.17 fc rgb \"#3399FF\"", - "set object 218 rect from 115.37049999999991, 13.83 to 115.37099999999991, 13.17 fc rgb \"#3399FF\"", - "set object 219 rect from 115.4104999999999, 13.83 to 115.41199999999989, 13.17 fc rgb \"#3399FF\"", - "set object 220 rect from 118.14999999999989, 13.83 to 118.1504999999999, 13.17 fc rgb \"#3399FF\"", - "set object 221 rect from 118.18999999999991, 13.83 to 118.1914999999999, 13.17 fc rgb \"#3399FF\"", - "set object 222 rect from 120.9319999999999, 13.83 to 120.9324999999999, 13.17 fc rgb \"#3399FF\"", - "set object 223 rect from 121.0104999999999, 13.83 to 121.0259999999999, 13.17 fc rgb \"#3399FF\"", - "set object 224 rect from 123.78149999999991, 13.83 to 123.78199999999991, 13.17 fc rgb \"#3399FF\"", - "set object 225 rect from 123.8234999999999, 13.83 to 123.8249999999999, 13.17 fc rgb \"#3399FF\"", - "set object 226 rect from 126.5569999999999, 13.83 to 126.5574999999999, 13.17 fc rgb \"#3399FF\"", - "set object 227 rect from 126.5969999999999, 13.83 to 126.59849999999989, 13.17 fc rgb \"#3399FF\"", - "set object 228 rect from 129.4124999999999, 13.83 to 129.4249999999999, 13.17 fc rgb \"#3399FF\"", - "set object 229 rect from 129.4864999999999, 13.83 to 129.4879999999999, 13.17 fc rgb \"#3399FF\"", - "set object 230 rect from 132.87149999999988, 13.83 to 132.87199999999987, 13.17 fc rgb \"#3399FF\"", - "set object 231 rect from 132.9204999999999, 13.83 to 132.92199999999988, 13.17 fc rgb \"#3399FF\"", - "set object 232 rect from 136.15099999999987, 13.83 to 136.15149999999986, 13.17 fc rgb \"#3399FF\"", - "set object 233 rect from 136.19599999999988, 13.83 to 136.19749999999988, 13.17 fc rgb \"#3399FF\"", - "set object 234 rect from 138.93549999999988, 13.83 to 138.93599999999986, 13.17 fc rgb \"#3399FF\"", - "set object 235 rect from 138.97849999999988, 13.83 to 138.97999999999988, 13.17 fc rgb \"#3399FF\"", - "set object 236 rect from 141.0599999999999, 13.83 to 141.0984999999999, 13.17 fc rgb \"#3399FF\"", - "set object 237 rect from 16.9945, 14.83 to 17.7705, 14.17 fc rgb \"#CC0000\"", - "set object 238 rect from 18.046, 14.83 to 18.1735, 14.17 fc rgb \"#CC0000\"", - "set object 239 rect from 19.0915, 14.83 to 19.152, 14.17 fc rgb \"#CC0000\"", - "set object 240 rect from 20.624499999999998, 14.83 to 21.063999999999997, 14.17 fc rgb \"#CC0000\"", - "set object 241 rect from 21.148500000000002, 14.83 to 21.175, 14.17 fc rgb \"#CC0000\"", - "set object 242 rect from 21.2875, 14.83 to 21.363, 14.17 fc rgb \"#CC0000\"", - "set object 243 rect from 21.505, 14.83 to 21.525499999999997, 14.17 fc rgb \"#CC0000\"", - "set object 244 rect from 21.604000000000003, 14.83 to 21.619500000000002, 14.17 fc rgb \"#CC0000\"", - "set object 245 rect from 21.747, 14.83 to 21.8475, 14.17 fc rgb \"#CC0000\"", - "set object 246 rect from 22.400499999999997, 14.83 to 22.416999999999998, 14.17 fc rgb \"#CC0000\"", - "set object 247 rect from 22.4715, 14.83 to 22.486, 14.17 fc rgb \"#CC0000\"", - "set object 248 rect from 22.517500000000002, 14.83 to 22.528, 14.17 fc rgb \"#CC0000\"", - "set object 249 rect from 22.5655, 14.83 to 22.570999999999998, 14.17 fc rgb \"#CC0000\"", - "set object 250 rect from 23.1575, 14.83 to 23.189, 14.17 fc rgb \"#CC0000\"", - "set object 251 rect from 23.376, 14.83 to 23.3945, 14.17 fc rgb \"#CC0000\"", - "set object 252 rect from 23.518, 14.83 to 23.5775, 14.17 fc rgb \"#CC0000\"", - "set object 253 rect from 23.617, 14.83 to 23.8365, 14.17 fc rgb \"#CC0000\"", - "set object 254 rect from 23.912000000000003, 14.83 to 23.9205, 14.17 fc rgb \"#CC0000\"", - "set object 255 rect from 24.4405, 14.83 to 24.458, 14.17 fc rgb \"#CC0000\"", - "set object 256 rect from 24.5085, 14.83 to 24.544000000000004, 14.17 fc rgb \"#CC0000\"", - "set object 257 rect from 41.91250000000001, 14.83 to 42.05100000000001, 14.17 fc rgb \"#CC0000\"", - "set object 258 rect from 42.30000000000002, 14.83 to 42.31450000000002, 14.17 fc rgb \"#CC0000\"", - "set object 259 rect from 42.66150000000002, 14.83 to 42.70600000000002, 14.17 fc rgb \"#CC0000\"", - "set object 260 rect from 42.76550000000001, 14.83 to 42.795000000000016, 14.17 fc rgb \"#CC0000\"", - "set object 261 rect from 42.812500000000014, 14.83 to 42.83300000000001, 14.17 fc rgb \"#CC0000\"", - "set object 262 rect from 42.85950000000001, 14.83 to 42.88200000000001, 14.17 fc rgb \"#CC0000\"", - "set object 263 rect from 43.622000000000014, 14.83 to 43.632500000000014, 14.17 fc rgb \"#CC0000\"", - "set object 264 rect from 44.812500000000014, 14.83 to 44.82200000000002, 14.17 fc rgb \"#CC0000\"", - "set object 265 rect from 44.87550000000002, 14.83 to 44.917000000000016, 14.17 fc rgb \"#CC0000\"", - "set object 266 rect from 45.01150000000001, 14.83 to 45.02900000000001, 14.17 fc rgb \"#CC0000\"", - "set object 267 rect from 45.068500000000014, 14.83 to 45.08700000000001, 14.17 fc rgb \"#CC0000\"", - "set object 268 rect from 45.110500000000016, 14.83 to 45.13500000000002, 14.17 fc rgb \"#CC0000\"", - "set object 269 rect from 45.16350000000002, 14.83 to 45.17200000000002, 14.17 fc rgb \"#CC0000\"", - "set object 270 rect from 45.34000000000002, 14.83 to 45.361500000000014, 14.17 fc rgb \"#CC0000\"", - "set object 271 rect from 45.405000000000015, 14.83 to 45.41750000000002, 14.17 fc rgb \"#CC0000\"", - "set object 272 rect from 45.44250000000002, 14.83 to 45.44850000000002, 14.17 fc rgb \"#CC0000\"", - "set object 273 rect from 45.466000000000015, 14.83 to 45.470500000000015, 14.17 fc rgb \"#CC0000\"", - "set object 274 rect from 45.484000000000016, 14.83 to 45.489500000000014, 14.17 fc rgb \"#CC0000\"", - "set object 275 rect from 45.56900000000001, 14.83 to 45.626500000000014, 14.17 fc rgb \"#CC0000\"", - "set object 276 rect from 45.71200000000001, 14.83 to 45.76150000000001, 14.17 fc rgb \"#CC0000\"", - "set object 277 rect from 45.82000000000001, 14.83 to 45.84850000000001, 14.17 fc rgb \"#CC0000\"", - "set object 278 rect from 45.93000000000001, 14.83 to 45.97850000000001, 14.17 fc rgb \"#CC0000\"", - "set object 279 rect from 46.08650000000001, 14.83 to 46.13100000000001, 14.17 fc rgb \"#CC0000\"", - "set object 280 rect from 46.291500000000006, 14.83 to 46.37200000000001, 14.17 fc rgb \"#CC0000\"", - "set object 281 rect from 46.59550000000001, 14.83 to 46.621, 14.17 fc rgb \"#CC0000\"", - "set object 282 rect from 46.694500000000005, 14.83 to 46.74, 14.17 fc rgb \"#CC0000\"", - "set object 283 rect from 46.8975, 14.83 to 46.9925, 14.17 fc rgb \"#CC0000\"", - "set object 284 rect from 47.050000000000004, 14.83 to 47.057500000000005, 14.17 fc rgb \"#CC0000\"", - "set object 285 rect from 47.141, 14.83 to 47.3935, 14.17 fc rgb \"#CC0000\"", - "set object 286 rect from 47.472, 14.83 to 47.5235, 14.17 fc rgb \"#CC0000\"", - "set object 287 rect from 49.469, 14.83 to 49.4955, 14.17 fc rgb \"#CC0000\"", - "set object 288 rect from 49.732, 14.83 to 49.780499999999996, 14.17 fc rgb \"#CC0000\"", - "set object 289 rect from 49.814, 14.83 to 49.82449999999999, 14.17 fc rgb \"#CC0000\"", - "set object 290 rect from 49.851, 14.83 to 49.8685, 14.17 fc rgb \"#CC0000\"", - "set object 291 rect from 49.99849999999999, 14.83 to 50.007, 14.17 fc rgb \"#CC0000\"", - "set object 292 rect from 50.147499999999994, 14.83 to 50.20799999999999, 14.17 fc rgb \"#CC0000\"", - "set object 293 rect from 50.314499999999995, 14.83 to 50.32899999999999, 14.17 fc rgb \"#CC0000\"", - "set object 294 rect from 50.40249999999999, 14.83 to 50.43099999999999, 14.17 fc rgb \"#CC0000\"", - "set object 295 rect from 50.52949999999999, 14.83 to 50.53499999999999, 14.17 fc rgb \"#CC0000\"", - "set object 296 rect from 50.62949999999999, 14.83 to 51.02349999999999, 14.17 fc rgb \"#CC0000\"", - "set object 297 rect from 51.292999999999985, 14.83 to 51.30249999999999, 14.17 fc rgb \"#CC0000\"", - "set object 298 rect from 51.57499999999999, 14.83 to 51.78349999999999, 14.17 fc rgb \"#CC0000\"", - "set object 299 rect from 51.89349999999999, 14.83 to 51.91599999999998, 14.17 fc rgb \"#CC0000\"", - "set object 300 rect from 52.13749999999999, 14.83 to 52.15399999999998, 14.17 fc rgb \"#CC0000\"", - "set object 301 rect from 52.30249999999998, 14.83 to 52.31499999999998, 14.17 fc rgb \"#CC0000\"", - "set object 302 rect from 52.331499999999984, 14.83 to 52.338999999999984, 14.17 fc rgb \"#CC0000\"", - "set object 303 rect from 52.40949999999998, 14.83 to 52.448999999999984, 14.17 fc rgb \"#CC0000\"", - "set object 304 rect from 70.34449999999994, 14.83 to 70.35799999999995, 14.17 fc rgb \"#CC0000\"", - "set object 305 rect from 140.88349999999988, 14.83 to 140.89599999999987, 14.17 fc rgb \"#CC0000\"", - "set object 306 rect from 140.96249999999986, 14.83 to 140.9779999999999, 14.17 fc rgb \"#CC0000\"", - "set object 307 rect from 141.0404999999999, 14.83 to 141.04699999999988, 14.17 fc rgb \"#CC0000\"", - "set object 308 rect from 25.285, 15.83 to 25.4055, 15.17 fc rgb \"#CC0044\"", - "set object 309 rect from 25.428000000000004, 15.83 to 25.507500000000004, 15.17 fc rgb \"#CC0044\"", - "set object 310 rect from 25.526500000000002, 15.83 to 25.591500000000003, 15.17 fc rgb \"#CC0044\"", - "set object 311 rect from 54.55999999999998, 15.83 to 54.566499999999984, 15.17 fc rgb \"#CC0044\"", - "set object 312 rect from 54.64299999999998, 15.83 to 54.951999999999984, 15.17 fc rgb \"#CC0044\"", - "set object 313 rect from 55.48599999999998, 15.83 to 55.49149999999998, 15.17 fc rgb \"#CC0044\"", - "set object 314 rect from 55.53099999999998, 15.83 to 55.66249999999998, 15.17 fc rgb \"#CC0044\"", - "set object 315 rect from 56.25149999999998, 15.83 to 56.52499999999998, 15.17 fc rgb \"#CC0044\"", - "set object 316 rect from 56.55699999999998, 15.83 to 56.64049999999998, 15.17 fc rgb \"#CC0044\"", - "set object 317 rect from 56.64999999999998, 15.83 to 56.69449999999998, 15.17 fc rgb \"#CC0044\"", - "set object 318 rect from 56.746499999999976, 15.83 to 56.750999999999976, 15.17 fc rgb \"#CC0044\"", - "set object 319 rect from 56.76449999999998, 15.83 to 56.845999999999975, 15.17 fc rgb \"#CC0044\"", - "set object 320 rect from 56.85849999999998, 15.83 to 56.97649999999997, 15.17 fc rgb \"#CC0044\"", - "set object 321 rect from 57.03599999999997, 15.83 to 57.039499999999975, 15.17 fc rgb \"#CC0044\"", - "set object 322 rect from 57.076499999999974, 15.83 to 57.205999999999975, 15.17 fc rgb \"#CC0044\"", - "set object 323 rect from 57.27249999999997, 15.83 to 57.33299999999997, 15.17 fc rgb \"#CC0044\"", - "set object 324 rect from 57.565999999999974, 15.83 to 57.64849999999997, 15.17 fc rgb \"#CC0044\"", - "set object 325 rect from 57.878499999999974, 15.83 to 57.934999999999974, 15.17 fc rgb \"#CC0044\"", - "set object 326 rect from 57.97299999999997, 15.83 to 57.97749999999997, 15.17 fc rgb \"#CC0044\"", - "set object 327 rect from 57.99099999999997, 15.83 to 58.04499999999997, 15.17 fc rgb \"#CC0044\"", - "set object 328 rect from 58.055499999999974, 15.83 to 58.07699999999997, 15.17 fc rgb \"#CC0044\"", - "set object 329 rect from 58.09149999999997, 15.83 to 58.12149999999997, 15.17 fc rgb \"#CC0044\"", - "set object 330 rect from 58.14299999999997, 15.83 to 58.21549999999997, 15.17 fc rgb \"#CC0044\"", - "set object 331 rect from 58.23599999999997, 15.83 to 58.316999999999965, 15.17 fc rgb \"#CC0044\"", - "set object 332 rect from 58.409499999999966, 15.83 to 58.40999999999997, 15.17 fc rgb \"#CC0044\"", - "set object 333 rect from 58.431499999999964, 15.83 to 58.51699999999997, 15.17 fc rgb \"#CC0044\"", - "set object 334 rect from 58.53049999999997, 15.83 to 58.590999999999966, 15.17 fc rgb \"#CC0044\"", - "set object 335 rect from 58.60049999999997, 15.83 to 58.65749999999996, 15.17 fc rgb \"#CC0044\"", - "set object 336 rect from 58.92499999999996, 15.83 to 59.042999999999964, 15.17 fc rgb \"#CC0044\"", - "set object 337 rect from 59.641499999999965, 15.83 to 59.65599999999996, 15.17 fc rgb \"#CC0044\"", - "set object 338 rect from 59.669499999999964, 15.83 to 59.69699999999996, 15.17 fc rgb \"#CC0044\"", - "set object 339 rect from 59.89099999999996, 15.83 to 59.93649999999996, 15.17 fc rgb \"#CC0044\"", - "set object 340 rect from 60.04699999999996, 15.83 to 60.05149999999996, 15.17 fc rgb \"#CC0044\"", - "set object 341 rect from 60.060999999999964, 15.83 to 60.08349999999996, 15.17 fc rgb \"#CC0044\"", - "set object 342 rect from 60.17149999999996, 15.83 to 60.176999999999964, 15.17 fc rgb \"#CC0044\"", - "set object 343 rect from 60.19499999999996, 15.83 to 60.26949999999996, 15.17 fc rgb \"#CC0044\"", - "set object 344 rect from 60.27999999999996, 15.83 to 60.31149999999996, 15.17 fc rgb \"#CC0044\"", - "set object 345 rect from 60.34699999999996, 15.83 to 60.471499999999956, 15.17 fc rgb \"#CC0044\"", - "set object 346 rect from 60.48399999999996, 15.83 to 60.508499999999955, 15.17 fc rgb \"#CC0044\"", - "set object 347 rect from 60.51999999999996, 15.83 to 60.65699999999996, 15.17 fc rgb \"#CC0044\"", - "set object 348 rect from 60.91649999999996, 15.83 to 60.92099999999996, 15.17 fc rgb \"#CC0044\"", - "set object 349 rect from 60.98249999999996, 15.83 to 61.253999999999955, 15.17 fc rgb \"#CC0044\"", - "set object 350 rect from 61.31249999999996, 15.83 to 61.464999999999954, 15.17 fc rgb \"#CC0044\"", - "set object 351 rect from 62.62699999999996, 15.83 to 63.024999999999956, 15.17 fc rgb \"#CC0044\"", - "set object 352 rect from 63.14749999999995, 15.83 to 63.15199999999995, 15.17 fc rgb \"#CC0044\"", - "set object 353 rect from 63.228499999999954, 15.83 to 63.41299999999995, 15.17 fc rgb \"#CC0044\"", - "set object 354 rect from 64.40899999999996, 15.83 to 64.61749999999995, 15.17 fc rgb \"#CC0044\"", - "set object 355 rect from 67.34249999999994, 15.83 to 67.34999999999994, 15.17 fc rgb \"#CC0044\"", - "set object 356 rect from 67.36349999999995, 15.83 to 67.45699999999994, 15.17 fc rgb \"#CC0044\"", - "set object 357 rect from 67.46599999999995, 15.83 to 67.48749999999995, 15.17 fc rgb \"#CC0044\"", - "set object 358 rect from 67.53599999999994, 15.83 to 67.59199999999996, 15.17 fc rgb \"#CC0044\"", - "set object 359 rect from 69.10849999999995, 15.83 to 69.11299999999994, 15.17 fc rgb \"#CC0044\"", - "set object 360 rect from 69.12949999999995, 15.83 to 69.19199999999995, 15.17 fc rgb \"#CC0044\"", - "set object 361 rect from 69.22649999999994, 15.83 to 69.30799999999994, 15.17 fc rgb \"#CC0044\"", - "set object 362 rect from 69.31949999999995, 15.83 to 69.34699999999995, 15.17 fc rgb \"#CC0044\"", - "set object 363 rect from 69.35749999999994, 15.83 to 69.38399999999996, 15.17 fc rgb \"#CC0044\"", - "set object 364 rect from 69.40549999999995, 15.83 to 69.45099999999994, 15.17 fc rgb \"#CC0044\"", - "set object 365 rect from 69.46349999999994, 15.83 to 69.49599999999995, 15.17 fc rgb \"#CC0044\"", - "set object 366 rect from 70.40899999999993, 15.83 to 70.58649999999994, 15.17 fc rgb \"#CC0044\"", - "set object 367 rect from 74.40699999999995, 15.83 to 74.41449999999995, 15.17 fc rgb \"#CC0044\"", - "set object 368 rect from 74.43899999999994, 15.83 to 74.52049999999994, 15.17 fc rgb \"#CC0044\"", - "set object 369 rect from 74.54499999999993, 15.83 to 74.59549999999994, 15.17 fc rgb \"#CC0044\"", - "set object 370 rect from 74.60899999999995, 15.83 to 74.63849999999994, 15.17 fc rgb \"#CC0044\"", - "set object 371 rect from 75.04799999999994, 15.83 to 75.20099999999994, 15.17 fc rgb \"#CC0044\"", - "set object 372 rect from 84.09549999999993, 15.83 to 84.09999999999994, 15.17 fc rgb \"#CC0044\"", - "set object 373 rect from 84.15349999999994, 15.83 to 84.26099999999994, 15.17 fc rgb \"#CC0044\"", - "set object 374 rect from 84.27549999999994, 15.83 to 84.34199999999993, 15.17 fc rgb \"#CC0044\"", - "set object 375 rect from 84.35349999999993, 15.83 to 84.37299999999993, 15.17 fc rgb \"#CC0044\"", - "set object 376 rect from 84.40149999999993, 15.83 to 84.43999999999994, 15.17 fc rgb \"#CC0044\"", - "set object 377 rect from 84.46149999999993, 15.83 to 84.53049999999993, 15.17 fc rgb \"#CC0044\"", - "set object 378 rect from 84.60099999999994, 15.83 to 84.68049999999992, 15.17 fc rgb \"#CC0044\"", - "set object 379 rect from 84.69199999999992, 15.83 to 84.71649999999993, 15.17 fc rgb \"#CC0044\"", - "set object 380 rect from 84.72799999999992, 15.83 to 84.84549999999993, 15.17 fc rgb \"#CC0044\"", - "set object 381 rect from 84.91749999999993, 15.83 to 84.92199999999994, 15.17 fc rgb \"#CC0044\"", - "set object 382 rect from 84.93849999999993, 15.83 to 84.99799999999993, 15.17 fc rgb \"#CC0044\"", - "set object 383 rect from 85.01049999999992, 15.83 to 85.06199999999993, 15.17 fc rgb \"#CC0044\"", - "set object 384 rect from 85.07249999999993, 15.83 to 85.13799999999992, 15.17 fc rgb \"#CC0044\"", - "set object 385 rect from 85.37849999999993, 15.83 to 85.38399999999993, 15.17 fc rgb \"#CC0044\"", - "set object 386 rect from 85.43999999999994, 15.83 to 85.59949999999992, 15.17 fc rgb \"#CC0044\"", - "set object 387 rect from 85.61599999999993, 15.83 to 85.63749999999993, 15.17 fc rgb \"#CC0044\"", - "set object 388 rect from 85.65899999999993, 15.83 to 85.69649999999993, 15.17 fc rgb \"#CC0044\"", - "set object 389 rect from 85.70599999999993, 15.83 to 85.73249999999993, 15.17 fc rgb \"#CC0044\"", - "set object 390 rect from 85.76899999999992, 15.83 to 85.86549999999993, 15.17 fc rgb \"#CC0044\"", - "set object 391 rect from 85.87599999999992, 15.83 to 85.91149999999992, 15.17 fc rgb \"#CC0044\"", - "set object 392 rect from 85.92499999999993, 15.83 to 86.05649999999993, 15.17 fc rgb \"#CC0044\"", - "set object 393 rect from 86.75549999999993, 15.83 to 87.36899999999991, 15.17 fc rgb \"#CC0044\"", - "set object 394 rect from 88.83949999999992, 15.83 to 89.21399999999991, 15.17 fc rgb \"#CC0044\"", - "set object 395 rect from 102.74149999999992, 15.83 to 102.74599999999992, 15.17 fc rgb \"#CC0044\"", - "set object 396 rect from 102.80749999999992, 15.83 to 102.99499999999992, 15.17 fc rgb \"#CC0044\"", - "set object 397 rect from 104.13299999999992, 15.83 to 104.4429999999999, 15.17 fc rgb \"#CC0044\"", - "set object 398 rect from 107.51699999999991, 15.83 to 107.5244999999999, 15.17 fc rgb \"#CC0044\"", - "set object 399 rect from 107.57199999999992, 15.83 to 107.62449999999991, 15.17 fc rgb \"#CC0044\"", - "set object 400 rect from 107.6389999999999, 15.83 to 107.69849999999991, 15.17 fc rgb \"#CC0044\"", - "set object 401 rect from 107.70999999999992, 15.83 to 107.7294999999999, 15.17 fc rgb \"#CC0044\"", - "set object 402 rect from 107.7469999999999, 15.83 to 107.7834999999999, 15.17 fc rgb \"#CC0044\"", - "set object 403 rect from 107.79299999999992, 15.83 to 107.82049999999991, 15.17 fc rgb \"#CC0044\"", - "set object 404 rect from 107.8529999999999, 15.83 to 107.9294999999999, 15.17 fc rgb \"#CC0044\"", - "set object 405 rect from 107.94099999999992, 15.83 to 107.9654999999999, 15.17 fc rgb \"#CC0044\"", - "set object 406 rect from 107.97599999999991, 15.83 to 108.09449999999991, 15.17 fc rgb \"#CC0044\"", - "set object 407 rect from 110.0909999999999, 15.83 to 110.4839999999999, 15.17 fc rgb \"#CC0044\"", - "set object 408 rect from 130.5424999999999, 15.83 to 130.5489999999999, 15.17 fc rgb \"#CC0044\"", - "set object 409 rect from 130.5954999999999, 15.83 to 130.6469999999999, 15.17 fc rgb \"#CC0044\"", - "set object 410 rect from 130.6614999999999, 15.83 to 130.68999999999988, 15.17 fc rgb \"#CC0044\"", - "set object 411 rect from 130.6994999999999, 15.83 to 130.7219999999999, 15.17 fc rgb \"#CC0044\"", - "set object 412 rect from 130.7324999999999, 15.83 to 130.7519999999999, 15.17 fc rgb \"#CC0044\"", - "set object 413 rect from 130.76949999999988, 15.83 to 130.8059999999999, 15.17 fc rgb \"#CC0044\"", - "set object 414 rect from 130.8154999999999, 15.83 to 130.84299999999988, 15.17 fc rgb \"#CC0044\"", - "set object 415 rect from 130.87549999999987, 15.83 to 130.95199999999988, 15.17 fc rgb \"#CC0044\"", - "set object 416 rect from 130.9644999999999, 15.83 to 130.99099999999987, 15.17 fc rgb \"#CC0044\"", - "set object 417 rect from 131.00249999999988, 15.83 to 131.1209999999999, 15.17 fc rgb \"#CC0044\"", - "set object 418 rect from 133.04349999999988, 15.83 to 133.4079999999999, 15.17 fc rgb \"#CC0044\"", - "set object 419 rect from 54.97249999999998, 16.83 to 56.20849999999998, 16.17 fc rgb \"#CC4499\"", - "set object 420 rect from 56.238999999999976, 16.83 to 56.53849999999998, 16.17 fc rgb \"#CC4499\"", - "set object 421 rect from 56.71599999999998, 16.83 to 56.830999999999975, 16.17 fc rgb \"#CC4499\"", - "set object 422 rect from 56.84349999999998, 16.83 to 57.062999999999974, 16.17 fc rgb \"#CC4499\"", - "set object 423 rect from 57.228499999999976, 16.83 to 57.545499999999976, 16.17 fc rgb \"#CC4499\"", - "set object 424 rect from 57.957499999999975, 16.83 to 58.00149999999997, 16.17 fc rgb \"#CC4499\"", - "set object 425 rect from 58.09499999999997, 16.83 to 58.30249999999997, 16.17 fc rgb \"#CC4499\"", - "set object 426 rect from 58.603999999999964, 16.83 to 58.964499999999965, 16.17 fc rgb \"#CC4499\"", - "set object 427 rect from 59.773999999999965, 16.83 to 59.88149999999996, 16.17 fc rgb \"#CC4499\"", - "set object 428 rect from 60.106999999999964, 16.83 to 60.18549999999996, 16.17 fc rgb \"#CC4499\"", - "set object 429 rect from 60.56649999999996, 16.83 to 62.55849999999995, 16.17 fc rgb \"#CC4499\"", - "set object 430 rect from 63.43549999999995, 16.83 to 64.39649999999995, 16.17 fc rgb \"#CC4499\"", - "set object 431 rect from 67.45849999999994, 16.83 to 67.57949999999995, 16.17 fc rgb \"#CC4499\"", - "set object 432 rect from 69.52049999999994, 16.83 to 70.32799999999995, 16.17 fc rgb \"#CC4499\"", - "set object 433 rect from 74.66299999999993, 16.83 to 75.03649999999993, 16.17 fc rgb \"#CC4499\"", - "set object 434 rect from 84.86699999999993, 16.83 to 88.80849999999992, 16.17 fc rgb \"#CC4499\"", - "set object 435 rect from 103.02549999999991, 16.83 to 104.04749999999991, 16.17 fc rgb \"#CC4499\"", - "set object 436 rect from 108.1159999999999, 16.83 to 110.07649999999991, 16.17 fc rgb \"#CC4499\"", - "set object 437 rect from 131.1424999999999, 16.83 to 133.02899999999988, 16.17 fc rgb \"#CC4499\"", - "set object 438 rect from 141.13349999999986, 16.83 to 141.1669999999999, 16.17 fc rgb \"#CC4499\"", - "set object 439 rect from 22.2675, 18.83 to 22.3815, 18.17 fc rgb \"#00CC00\"", - "set object 440 rect from 22.665, 18.83 to 23.1135, 18.17 fc rgb \"#00CC00\"", - "set object 441 rect from 27.951000000000004, 18.83 to 27.972500000000004, 18.17 fc rgb \"#00CC00\"", - "set object 442 rect from 27.993000000000002, 18.83 to 28.013500000000004, 18.17 fc rgb \"#00CC00\"", - "set object 443 rect from 28.043000000000003, 18.83 to 28.063500000000005, 18.17 fc rgb \"#00CC00\"", - "set object 444 rect from 28.085000000000004, 18.83 to 28.087500000000002, 18.17 fc rgb \"#00CC00\"", - "set object 445 rect from 28.115000000000002, 18.83 to 28.139500000000005, 18.17 fc rgb \"#00CC00\"", - "set object 446 rect from 28.154000000000007, 18.83 to 28.260000000000005, 18.17 fc rgb \"#00CC00\"", - "set object 447 rect from 28.309500000000003, 18.83 to 28.374000000000006, 18.17 fc rgb \"#00CC00\"", - "set object 448 rect from 28.383500000000005, 18.83 to 28.385000000000005, 18.17 fc rgb \"#00CC00\"", - "set object 449 rect from 28.396500000000003, 18.83 to 28.445000000000007, 18.17 fc rgb \"#00CC00\"", - "set object 450 rect from 28.459500000000006, 18.83 to 28.463000000000005, 18.17 fc rgb \"#00CC00\"", - "set object 451 rect from 28.489500000000007, 18.83 to 28.499000000000006, 18.17 fc rgb \"#00CC00\"", - "set object 452 rect from 28.512500000000006, 18.83 to 28.516000000000005, 18.17 fc rgb \"#00CC00\"", - "set object 453 rect from 28.529500000000006, 18.83 to 28.533000000000005, 18.17 fc rgb \"#00CC00\"", - "set object 454 rect from 28.554500000000004, 18.83 to 28.557000000000006, 18.17 fc rgb \"#00CC00\"", - "set object 455 rect from 28.573500000000006, 18.83 to 28.579000000000008, 18.17 fc rgb \"#00CC00\"", - "set object 456 rect from 28.59950000000001, 18.83 to 28.602000000000007, 18.17 fc rgb \"#00CC00\"", - "set object 457 rect from 28.623500000000007, 18.83 to 28.625000000000007, 18.17 fc rgb \"#00CC00\"", - "set object 458 rect from 28.637500000000006, 18.83 to 28.647000000000006, 18.17 fc rgb \"#00CC00\"", - "set object 459 rect from 28.657500000000006, 18.83 to 28.669000000000008, 18.17 fc rgb \"#00CC00\"", - "set object 460 rect from 28.682500000000005, 18.83 to 28.686000000000007, 18.17 fc rgb \"#00CC00\"", - "set object 461 rect from 28.695500000000006, 18.83 to 28.701000000000008, 18.17 fc rgb \"#00CC00\"", - "set object 462 rect from 28.72450000000001, 18.83 to 28.811000000000007, 18.17 fc rgb \"#00CC00\"", - "set object 463 rect from 28.83250000000001, 18.83 to 28.907500000000006, 18.17 fc rgb \"#00CC00\"", - "set object 464 rect from 28.97100000000001, 18.83 to 28.97450000000001, 18.17 fc rgb \"#00CC00\"", - "set object 465 rect from 28.99600000000001, 18.83 to 28.99850000000001, 18.17 fc rgb \"#00CC00\"", - "set object 466 rect from 29.01200000000001, 18.83 to 29.01350000000001, 18.17 fc rgb \"#00CC00\"", - "set object 467 rect from 29.02600000000001, 18.83 to 29.056500000000007, 18.17 fc rgb \"#00CC00\"", - "set object 468 rect from 29.06900000000001, 18.83 to 29.159500000000012, 18.17 fc rgb \"#00CC00\"", - "set object 469 rect from 29.17100000000001, 18.83 to 29.18450000000001, 18.17 fc rgb \"#00CC00\"", - "set object 470 rect from 29.19400000000001, 18.83 to 41.84850000000001, 18.17 fc rgb \"#00CC00\"", - "set object 471 rect from 41.87900000000001, 18.83 to 41.88650000000001, 18.17 fc rgb \"#00CC00\"", - "set object 472 rect from 27.972500000000004, 19.83 to 28.053000000000004, 19.17 fc rgb \"#44CC00\"", - "set object 473 rect from 28.063500000000005, 19.83 to 28.169000000000004, 19.17 fc rgb \"#44CC00\"", - "set object 474 rect from 28.260000000000005, 19.83 to 28.489500000000007, 19.17 fc rgb \"#44CC00\"", - "set object 475 rect from 28.499000000000006, 19.83 to 28.761500000000005, 19.17 fc rgb \"#44CC00\"", - "set object 476 rect from 28.78900000000001, 19.83 to 28.847500000000007, 19.17 fc rgb \"#44CC00\"", - "set object 477 rect from 28.907500000000006, 19.83 to 29.047000000000008, 19.17 fc rgb \"#44CC00\"", - "set object 478 rect from 29.056500000000007, 19.83 to 29.111000000000008, 19.17 fc rgb \"#44CC00\"", - "set object 479 rect from 29.12350000000001, 19.83 to 29.21900000000001, 19.17 fc rgb \"#44CC00\"", - "set object 480 rect from 41.82650000000001, 19.83 to 41.83500000000001, 19.17 fc rgb \"#44CC00\"", - "set object 481 rect from 41.84850000000001, 19.83 to 41.87900000000001, 19.17 fc rgb \"#44CC00\"", - "set object 482 rect from 16.737, 20.83 to 16.9595, 20.17 fc rgb \"#00CC44\"", - "set object 483 rect from 17.8715, 20.83 to 18.017000000000003, 20.17 fc rgb \"#00CC44\"", - "set object 484 rect from 18.992, 20.83 to 19.0685, 20.17 fc rgb \"#00CC44\"", - "set object 485 rect from 20.52, 20.83 to 20.5975, 20.17 fc rgb \"#00CC44\"", - "set object 486 rect from 21.109, 20.83 to 21.1335, 20.17 fc rgb \"#00CC44\"", - "set object 487 rect from 21.212, 20.83 to 21.2695, 20.17 fc rgb \"#00CC44\"", - "set object 488 rect from 21.4595, 20.83 to 21.49, 20.17 fc rgb \"#00CC44\"", - "set object 489 rect from 21.566499999999998, 20.83 to 21.588, 20.17 fc rgb \"#00CC44\"", - "set object 490 rect from 21.6535, 20.83 to 21.727, 20.17 fc rgb \"#00CC44\"", - "set object 491 rect from 22.445, 20.83 to 22.4625, 20.17 fc rgb \"#00CC44\"", - "set object 492 rect from 22.502000000000002, 20.83 to 22.5165, 20.17 fc rgb \"#00CC44\"", - "set object 493 rect from 22.553, 20.83 to 22.5645, 20.17 fc rgb \"#00CC44\"", - "set object 494 rect from 23.233, 20.83 to 23.336000000000002, 20.17 fc rgb \"#00CC44\"", - "set object 495 rect from 23.4255, 20.83 to 23.506, 20.17 fc rgb \"#00CC44\"", - "set object 496 rect from 23.5895, 20.83 to 23.613, 20.17 fc rgb \"#00CC44\"", - "set object 497 rect from 23.870500000000003, 20.83 to 23.907, 20.17 fc rgb \"#00CC44\"", - "set object 498 rect from 24.393, 20.83 to 24.430500000000002, 20.17 fc rgb \"#00CC44\"", - "set object 499 rect from 24.470000000000002, 20.83 to 24.504500000000004, 20.17 fc rgb \"#00CC44\"", - "set object 500 rect from 25.267500000000002, 20.83 to 25.283, 20.17 fc rgb \"#00CC44\"", - "set object 501 rect from 25.4195, 20.83 to 25.427, 20.17 fc rgb \"#00CC44\"", - "set object 502 rect from 25.519500000000004, 20.83 to 25.526000000000003, 20.17 fc rgb \"#00CC44\"", - "set object 503 rect from 42.28050000000001, 20.83 to 42.298000000000016, 20.17 fc rgb \"#00CC44\"", - "set object 504 rect from 42.62700000000002, 20.83 to 42.656500000000015, 20.17 fc rgb \"#00CC44\"", - "set object 505 rect from 42.747000000000014, 20.83 to 42.763500000000015, 20.17 fc rgb \"#00CC44\"", - "set object 506 rect from 42.80300000000001, 20.83 to 42.81050000000001, 20.17 fc rgb \"#00CC44\"", - "set object 507 rect from 42.844000000000015, 20.83 to 42.858500000000014, 20.17 fc rgb \"#00CC44\"", - "set object 508 rect from 43.60550000000001, 20.83 to 43.62000000000002, 20.17 fc rgb \"#00CC44\"", - "set object 509 rect from 44.796000000000014, 20.83 to 44.81150000000002, 20.17 fc rgb \"#00CC44\"", - "set object 510 rect from 44.84500000000001, 20.83 to 44.87150000000002, 20.17 fc rgb \"#00CC44\"", - "set object 511 rect from 44.996000000000016, 20.83 to 45.00850000000001, 20.17 fc rgb \"#00CC44\"", - "set object 512 rect from 45.04700000000001, 20.83 to 45.06450000000002, 20.17 fc rgb \"#00CC44\"", - "set object 513 rect from 45.09600000000001, 20.83 to 45.107500000000016, 20.17 fc rgb \"#00CC44\"", - "set object 514 rect from 45.14400000000002, 20.83 to 45.16150000000002, 20.17 fc rgb \"#00CC44\"", - "set object 515 rect from 45.32050000000002, 20.83 to 45.33700000000002, 20.17 fc rgb \"#00CC44\"", - "set object 516 rect from 45.38750000000002, 20.83 to 45.402000000000015, 20.17 fc rgb \"#00CC44\"", - "set object 517 rect from 45.43250000000002, 20.83 to 45.442000000000014, 20.17 fc rgb \"#00CC44\"", - "set object 518 rect from 45.46050000000002, 20.83 to 45.46500000000002, 20.17 fc rgb \"#00CC44\"", - "set object 519 rect from 45.47750000000001, 20.83 to 45.48300000000001, 20.17 fc rgb \"#00CC44\"", - "set object 520 rect from 45.49750000000001, 20.83 to 45.55900000000001, 20.17 fc rgb \"#00CC44\"", - "set object 521 rect from 45.66050000000001, 20.83 to 45.70300000000001, 20.17 fc rgb \"#00CC44\"", - "set object 522 rect from 45.79350000000001, 20.83 to 45.81700000000001, 20.17 fc rgb \"#00CC44\"", - "set object 523 rect from 45.86950000000001, 20.83 to 45.92300000000001, 20.17 fc rgb \"#00CC44\"", - "set object 524 rect from 45.99450000000001, 20.83 to 46.060500000000005, 20.17 fc rgb \"#00CC44\"", - "set object 525 rect from 46.18500000000001, 20.83 to 46.28150000000001, 20.17 fc rgb \"#00CC44\"", - "set object 526 rect from 46.550000000000004, 20.83 to 46.5915, 20.17 fc rgb \"#00CC44\"", - "set object 527 rect from 46.65500000000001, 20.83 to 46.691500000000005, 20.17 fc rgb \"#00CC44\"", - "set object 528 rect from 46.861000000000004, 20.83 to 46.8935, 20.17 fc rgb \"#00CC44\"", - "set object 529 rect from 47.039500000000004, 20.83 to 47.049, 20.17 fc rgb \"#00CC44\"", - "set object 530 rect from 47.0765, 20.83 to 47.135000000000005, 20.17 fc rgb \"#00CC44\"", - "set object 531 rect from 47.4125, 20.83 to 47.465, 20.17 fc rgb \"#00CC44\"", - "set object 532 rect from 49.454499999999996, 20.83 to 49.467, 20.17 fc rgb \"#00CC44\"", - "set object 533 rect from 49.6855, 20.83 to 49.726, 20.17 fc rgb \"#00CC44\"", - "set object 534 rect from 49.799499999999995, 20.83 to 49.812999999999995, 20.17 fc rgb \"#00CC44\"", - "set object 535 rect from 49.841499999999996, 20.83 to 49.849999999999994, 20.17 fc rgb \"#00CC44\"", - "set object 536 rect from 49.894499999999994, 20.83 to 49.9695, 20.17 fc rgb \"#00CC44\"", - "set object 537 rect from 50.083999999999996, 20.83 to 50.14149999999999, 20.17 fc rgb \"#00CC44\"", - "set object 538 rect from 50.29299999999999, 20.83 to 50.31249999999999, 20.17 fc rgb \"#00CC44\"", - "set object 539 rect from 50.36699999999999, 20.83 to 50.39849999999999, 20.17 fc rgb \"#00CC44\"", - "set object 540 rect from 50.520999999999994, 20.83 to 50.528499999999994, 20.17 fc rgb \"#00CC44\"", - "set object 541 rect from 50.54899999999999, 20.83 to 50.62049999999999, 20.17 fc rgb \"#00CC44\"", - "set object 542 rect from 51.27549999999999, 20.83 to 51.29099999999999, 20.17 fc rgb \"#00CC44\"", - "set object 543 rect from 51.52249999999999, 20.83 to 51.56899999999999, 20.17 fc rgb \"#00CC44\"", - "set object 544 rect from 51.87299999999998, 20.83 to 51.89049999999999, 20.17 fc rgb \"#00CC44\"", - "set object 545 rect from 52.115999999999985, 20.83 to 52.13449999999999, 20.17 fc rgb \"#00CC44\"", - "set object 546 rect from 52.286999999999985, 20.83 to 52.300499999999985, 20.17 fc rgb \"#00CC44\"", - "set object 547 rect from 52.326999999999984, 20.83 to 52.33049999999999, 20.17 fc rgb \"#00CC44\"", - "set object 548 rect from 52.362999999999985, 20.83 to 52.404499999999985, 20.17 fc rgb \"#00CC44\"", - "set object 549 rect from 54.566499999999984, 20.83 to 54.64299999999998, 20.17 fc rgb \"#00CC44\"", - "set object 550 rect from 55.49149999999998, 20.83 to 55.53099999999998, 20.17 fc rgb \"#00CC44\"", - "set object 551 rect from 56.64049999999998, 20.83 to 56.64999999999998, 20.17 fc rgb \"#00CC44\"", - "set object 552 rect from 56.750999999999976, 20.83 to 56.76449999999998, 20.17 fc rgb \"#00CC44\"", - "set object 553 rect from 57.039499999999975, 20.83 to 57.076499999999974, 20.17 fc rgb \"#00CC44\"", - "set object 554 rect from 57.885999999999974, 20.83 to 57.893499999999975, 20.17 fc rgb \"#00CC44\"", - "set object 555 rect from 57.97749999999997, 20.83 to 57.99099999999997, 20.17 fc rgb \"#00CC44\"", - "set object 556 rect from 58.04499999999997, 20.83 to 58.055499999999974, 20.17 fc rgb \"#00CC44\"", - "set object 557 rect from 58.14549999999997, 20.83 to 58.15399999999997, 20.17 fc rgb \"#00CC44\"", - "set object 558 rect from 58.17549999999997, 20.83 to 58.18399999999997, 20.17 fc rgb \"#00CC44\"", - "set object 559 rect from 58.40999999999997, 20.83 to 58.431499999999964, 20.17 fc rgb \"#00CC44\"", - "set object 560 rect from 58.51699999999997, 20.83 to 58.53049999999997, 20.17 fc rgb \"#00CC44\"", - "set object 561 rect from 58.590999999999966, 20.83 to 58.60049999999997, 20.17 fc rgb \"#00CC44\"", - "set object 562 rect from 59.65599999999996, 20.83 to 59.669499999999964, 20.17 fc rgb \"#00CC44\"", - "set object 563 rect from 60.05149999999996, 20.83 to 60.060999999999964, 20.17 fc rgb \"#00CC44\"", - "set object 564 rect from 60.176999999999964, 20.83 to 60.19499999999996, 20.17 fc rgb \"#00CC44\"", - "set object 565 rect from 60.26949999999996, 20.83 to 60.27999999999996, 20.17 fc rgb \"#00CC44\"", - "set object 566 rect from 60.31149999999996, 20.83 to 60.34699999999996, 20.17 fc rgb \"#00CC44\"", - "set object 567 rect from 60.471499999999956, 20.83 to 60.48399999999996, 20.17 fc rgb \"#00CC44\"", - "set object 568 rect from 60.508499999999955, 20.83 to 60.51999999999996, 20.17 fc rgb \"#00CC44\"", - "set object 569 rect from 60.92099999999996, 20.83 to 60.98249999999996, 20.17 fc rgb \"#00CC44\"", - "set object 570 rect from 63.15199999999995, 20.83 to 63.228499999999954, 20.17 fc rgb \"#00CC44\"", - "set object 571 rect from 67.34999999999994, 20.83 to 67.36349999999995, 20.17 fc rgb \"#00CC44\"", - "set object 572 rect from 67.40699999999995, 20.83 to 67.41249999999995, 20.17 fc rgb \"#00CC44\"", - "set object 573 rect from 67.45699999999994, 20.83 to 67.46599999999995, 20.17 fc rgb \"#00CC44\"", - "set object 574 rect from 69.11299999999994, 20.83 to 69.12949999999995, 20.17 fc rgb \"#00CC44\"", - "set object 575 rect from 69.19199999999995, 20.83 to 69.22649999999994, 20.17 fc rgb \"#00CC44\"", - "set object 576 rect from 69.30799999999994, 20.83 to 69.31949999999995, 20.17 fc rgb \"#00CC44\"", - "set object 577 rect from 69.34699999999995, 20.83 to 69.35749999999994, 20.17 fc rgb \"#00CC44\"", - "set object 578 rect from 69.38399999999996, 20.83 to 69.40549999999995, 20.17 fc rgb \"#00CC44\"", - "set object 579 rect from 69.45099999999994, 20.83 to 69.46349999999994, 20.17 fc rgb \"#00CC44\"", - "set object 580 rect from 70.31749999999994, 20.83 to 70.33949999999994, 20.17 fc rgb \"#00CC44\"", - "set object 581 rect from 74.41449999999995, 20.83 to 74.43899999999994, 20.17 fc rgb \"#00CC44\"", - "set object 582 rect from 74.52049999999994, 20.83 to 74.54499999999993, 20.17 fc rgb \"#00CC44\"", - "set object 583 rect from 74.59549999999994, 20.83 to 74.60899999999995, 20.17 fc rgb \"#00CC44\"", - "set object 584 rect from 84.09999999999994, 20.83 to 84.15349999999994, 20.17 fc rgb \"#00CC44\"", - "set object 585 rect from 84.26099999999994, 20.83 to 84.27549999999994, 20.17 fc rgb \"#00CC44\"", - "set object 586 rect from 84.31099999999992, 20.83 to 84.31949999999993, 20.17 fc rgb \"#00CC44\"", - "set object 587 rect from 84.34199999999993, 20.83 to 84.35349999999993, 20.17 fc rgb \"#00CC44\"", - "set object 588 rect from 84.37299999999993, 20.83 to 84.40149999999993, 20.17 fc rgb \"#00CC44\"", - "set object 589 rect from 84.43999999999994, 20.83 to 84.46149999999993, 20.17 fc rgb \"#00CC44\"", - "set object 590 rect from 84.53049999999993, 20.83 to 84.60099999999994, 20.17 fc rgb \"#00CC44\"", - "set object 591 rect from 84.68049999999992, 20.83 to 84.69199999999992, 20.17 fc rgb \"#00CC44\"", - "set object 592 rect from 84.71649999999993, 20.83 to 84.72799999999992, 20.17 fc rgb \"#00CC44\"", - "set object 593 rect from 84.92199999999994, 20.83 to 84.93849999999993, 20.17 fc rgb \"#00CC44\"", - "set object 594 rect from 84.99799999999993, 20.83 to 85.01049999999992, 20.17 fc rgb \"#00CC44\"", - "set object 595 rect from 85.03599999999992, 20.83 to 85.04449999999993, 20.17 fc rgb \"#00CC44\"", - "set object 596 rect from 85.06199999999993, 20.83 to 85.07249999999993, 20.17 fc rgb \"#00CC44\"", - "set object 597 rect from 85.09499999999994, 20.83 to 85.10249999999992, 20.17 fc rgb \"#00CC44\"", - "set object 598 rect from 85.38399999999993, 20.83 to 85.43999999999994, 20.17 fc rgb \"#00CC44\"", - "set object 599 rect from 85.59949999999992, 20.83 to 85.61599999999993, 20.17 fc rgb \"#00CC44\"", - "set object 600 rect from 85.63749999999993, 20.83 to 85.65899999999993, 20.17 fc rgb \"#00CC44\"", - "set object 601 rect from 85.69649999999993, 20.83 to 85.70599999999993, 20.17 fc rgb \"#00CC44\"", - "set object 602 rect from 85.73249999999993, 20.83 to 85.76899999999992, 20.17 fc rgb \"#00CC44\"", - "set object 603 rect from 85.86549999999993, 20.83 to 85.87599999999992, 20.17 fc rgb \"#00CC44\"", - "set object 604 rect from 85.91149999999992, 20.83 to 85.92499999999993, 20.17 fc rgb \"#00CC44\"", - "set object 605 rect from 102.74599999999992, 20.83 to 102.80749999999992, 20.17 fc rgb \"#00CC44\"", - "set object 606 rect from 107.5244999999999, 20.83 to 107.57199999999992, 20.17 fc rgb \"#00CC44\"", - "set object 607 rect from 107.62449999999991, 20.83 to 107.6389999999999, 20.17 fc rgb \"#00CC44\"", - "set object 608 rect from 107.6674999999999, 20.83 to 107.6759999999999, 20.17 fc rgb \"#00CC44\"", - "set object 609 rect from 107.69849999999991, 20.83 to 107.70999999999992, 20.17 fc rgb \"#00CC44\"", - "set object 610 rect from 107.7294999999999, 20.83 to 107.7469999999999, 20.17 fc rgb \"#00CC44\"", - "set object 611 rect from 107.7834999999999, 20.83 to 107.79299999999992, 20.17 fc rgb \"#00CC44\"", - "set object 612 rect from 107.82049999999991, 20.83 to 107.8529999999999, 20.17 fc rgb \"#00CC44\"", - "set object 613 rect from 107.9294999999999, 20.83 to 107.94099999999992, 20.17 fc rgb \"#00CC44\"", - "set object 614 rect from 107.9654999999999, 20.83 to 107.97599999999991, 20.17 fc rgb \"#00CC44\"", - "set object 615 rect from 130.5489999999999, 20.83 to 130.5954999999999, 20.17 fc rgb \"#00CC44\"", - "set object 616 rect from 130.6469999999999, 20.83 to 130.6614999999999, 20.17 fc rgb \"#00CC44\"", - "set object 617 rect from 130.68999999999988, 20.83 to 130.6994999999999, 20.17 fc rgb \"#00CC44\"", - "set object 618 rect from 130.7219999999999, 20.83 to 130.7324999999999, 20.17 fc rgb \"#00CC44\"", - "set object 619 rect from 130.7519999999999, 20.83 to 130.76949999999988, 20.17 fc rgb \"#00CC44\"", - "set object 620 rect from 130.8059999999999, 20.83 to 130.8154999999999, 20.17 fc rgb \"#00CC44\"", - "set object 621 rect from 130.84299999999988, 20.83 to 130.87549999999987, 20.17 fc rgb \"#00CC44\"", - "set object 622 rect from 130.95199999999988, 20.83 to 130.9644999999999, 20.17 fc rgb \"#00CC44\"", - "set object 623 rect from 130.99099999999987, 20.83 to 131.00249999999988, 20.17 fc rgb \"#00CC44\"", - "set object 624 rect from 140.86699999999988, 20.83 to 140.8814999999999, 20.17 fc rgb \"#00CC44\"", - "set object 625 rect from 140.9319999999999, 20.83 to 140.9574999999999, 20.17 fc rgb \"#00CC44\"", - "set object 626 rect from 141.0299999999999, 20.83 to 141.03849999999989, 20.17 fc rgb \"#00CC44\"", - "set object 627 rect from 55.79999999999998, 21.83 to 56.198999999999984, 21.17 fc rgb \"#0044CC\"", - "set object 628 rect from 62.16149999999996, 21.83 to 62.548999999999964, 21.17 fc rgb \"#0044CC\"", - "set object 629 rect from 65.56449999999995, 21.83 to 65.61699999999995, 21.17 fc rgb \"#0044CC\"", - "set object 630 rect from 68.70599999999996, 21.83 to 68.76649999999995, 21.17 fc rgb \"#0044CC\"", - "set object 631 rect from 72.22199999999995, 21.83 to 72.28049999999995, 21.17 fc rgb \"#0044CC\"", - "set object 632 rect from 75.41849999999994, 21.83 to 75.46799999999995, 21.17 fc rgb \"#0044CC\"", - "set object 633 rect from 78.16449999999993, 21.83 to 78.23649999999994, 21.17 fc rgb \"#0044CC\"", - "set object 634 rect from 80.90399999999994, 21.83 to 80.95049999999993, 21.17 fc rgb \"#0044CC\"", - "set object 635 rect from 83.58349999999993, 21.83 to 83.63999999999993, 21.17 fc rgb \"#0044CC\"", - "set object 636 rect from 88.75199999999992, 21.83 to 88.82299999999992, 21.17 fc rgb \"#0044CC\"", - "set object 637 rect from 91.90999999999991, 21.83 to 91.96649999999993, 21.17 fc rgb \"#0044CC\"", - "set object 638 rect from 94.55599999999993, 21.83 to 94.6054999999999, 21.17 fc rgb \"#0044CC\"", - "set object 639 rect from 97.20749999999991, 21.83 to 97.26099999999992, 21.17 fc rgb \"#0044CC\"", - "set object 640 rect from 99.86649999999992, 21.83 to 99.92199999999991, 21.17 fc rgb \"#0044CC\"", - "set object 641 rect from 102.56049999999992, 21.83 to 102.61199999999991, 21.17 fc rgb \"#0044CC\"", - "set object 642 rect from 105.88099999999991, 21.83 to 105.93349999999991, 21.17 fc rgb \"#0044CC\"", - "set object 643 rect from 109.2659999999999, 21.83 to 109.38599999999991, 21.17 fc rgb \"#0044CC\"", - "set object 644 rect from 109.4024999999999, 21.83 to 109.41799999999989, 21.17 fc rgb \"#0044CC\"", - "set object 645 rect from 112.6029999999999, 21.83 to 112.6564999999999, 21.17 fc rgb \"#0044CC\"", - "set object 646 rect from 115.36399999999989, 21.83 to 115.4124999999999, 21.17 fc rgb \"#0044CC\"", - "set object 647 rect from 118.1434999999999, 21.83 to 118.19199999999991, 21.17 fc rgb \"#0044CC\"", - "set object 648 rect from 120.9194999999999, 21.83 to 121.0104999999999, 21.17 fc rgb \"#0044CC\"", - "set object 649 rect from 121.0259999999999, 21.83 to 121.0314999999999, 21.17 fc rgb \"#0044CC\"", - "set object 650 rect from 123.77499999999989, 21.83 to 123.8254999999999, 21.17 fc rgb \"#0044CC\"", - "set object 651 rect from 126.55149999999989, 21.83 to 126.59899999999989, 21.17 fc rgb \"#0044CC\"", - "set object 652 rect from 129.3344999999999, 21.83 to 129.4124999999999, 21.17 fc rgb \"#0044CC\"", - "set object 653 rect from 129.4249999999999, 21.83 to 129.48849999999987, 21.17 fc rgb \"#0044CC\"", - "set object 654 rect from 132.8659999999999, 21.83 to 132.92249999999987, 21.17 fc rgb \"#0044CC\"", - "set object 655 rect from 136.14449999999988, 21.83 to 136.19799999999987, 21.17 fc rgb \"#0044CC\"", - "set object 656 rect from 138.9289999999999, 21.83 to 138.98049999999986, 21.17 fc rgb \"#0044CC\"", - "set object 657 rect from 2.4204999999999997, 22.83 to 3.7920000000000003, 22.17 fc rgb \"#4444CC\"", - "set object 658 rect from 3.8075, 22.83 to 3.8129999999999997, 22.17 fc rgb \"#4444CC\"", - "set object 659 rect from 6.2695, 22.83 to 7.373, 22.17 fc rgb \"#4444CC\"", - "set object 660 rect from 7.3865, 22.83 to 7.3919999999999995, 22.17 fc rgb \"#4444CC\"", - "set object 661 rect from 9.2915, 22.83 to 10.405000000000001, 22.17 fc rgb \"#4444CC\"", - "set object 662 rect from 10.4235, 22.83 to 10.43, 22.17 fc rgb \"#4444CC\"", - "set object 663 rect from 12.8765, 22.83 to 13.897, 22.17 fc rgb \"#4444CC\"", - "set object 664 rect from 13.910499999999999, 22.83 to 13.915999999999999, 22.17 fc rgb \"#4444CC\"", - "set object 665 rect from 18.803, 10.2 to 19.803, 9.8 fc rgb \"#000000\"", - "set object 666 rect from 19.8815, 10.2 to 20.8815, 9.8 fc rgb \"#000000\"", - "set object 667 rect from 20.910999999999998, 10.2 to 21.910999999999998, 9.8 fc rgb \"#000000\"", - "set object 668 rect from 28.357000000000006, 10.2 to 30.17350000000001, 9.8 fc rgb \"#000000\"", - "set object 669 rect from 30.235000000000014, 10.2 to 31.235000000000014, 9.8 fc rgb \"#000000\"", - "set object 670 rect from 31.28350000000001, 10.2 to 32.28350000000001, 9.8 fc rgb \"#000000\"", - "set object 671 rect from 32.353000000000016, 10.2 to 33.353000000000016, 9.8 fc rgb \"#000000\"", - "set object 672 rect from 33.42150000000001, 10.2 to 34.42150000000001, 9.8 fc rgb \"#000000\"", - "set object 673 rect from 34.47700000000001, 10.2 to 35.47700000000001, 9.8 fc rgb \"#000000\"", - "set object 674 rect from 35.531500000000015, 10.2 to 36.531500000000015, 9.8 fc rgb \"#000000\"", - "set object 675 rect from 36.59600000000001, 10.2 to 37.59600000000001, 9.8 fc rgb \"#000000\"", - "set object 676 rect from 37.65150000000001, 10.2 to 38.65150000000001, 9.8 fc rgb \"#000000\"", - "set object 677 rect from 38.70800000000001, 10.2 to 39.70800000000001, 9.8 fc rgb \"#000000\"", - "set object 678 rect from 39.76650000000001, 10.2 to 40.76650000000001, 9.8 fc rgb \"#000000\"", - "set object 679 rect from 40.82900000000001, 10.2 to 42.82200000000002, 9.8 fc rgb \"#000000\"", - "set object 680 rect from 43.79150000000001, 10.2 to 44.79150000000001, 9.8 fc rgb \"#000000\"", - "set object 681 rect from 45.50300000000001, 10.2 to 48.4035, 9.8 fc rgb \"#000000\"", - "set object 682 rect from 48.49, 10.2 to 53.228999999999985, 9.8 fc rgb \"#000000\"", - "set object 683 rect from 54.33049999999998, 10.2 to 55.33049999999998, 9.8 fc rgb \"#000000\"", - "set object 684 rect from 55.37549999999998, 10.2 to 56.37549999999998, 9.8 fc rgb \"#000000\"", - "set object 685 rect from 58.19399999999997, 10.2 to 59.19399999999997, 9.8 fc rgb \"#000000\"", - "set object 686 rect from 62.20049999999995, 10.2 to 63.20049999999995, 9.8 fc rgb \"#000000\"", - "set object 687 rect from 65.31249999999996, 10.2 to 66.31249999999996, 9.8 fc rgb \"#000000\"", - "set object 688 rect from 66.37099999999995, 10.2 to 67.37099999999995, 9.8 fc rgb \"#000000\"", - "set object 689 rect from 68.37699999999995, 10.2 to 70.37999999999994, 9.8 fc rgb \"#000000\"", - "set object 690 rect from 72.48699999999994, 10.2 to 73.48699999999994, 9.8 fc rgb \"#000000\"", - "set object 691 rect from 73.55549999999994, 10.2 to 74.55549999999994, 9.8 fc rgb \"#000000\"", - "set object 692 rect from 76.64899999999994, 10.2 to 77.64899999999994, 9.8 fc rgb \"#000000\"", - "set object 693 rect from 79.81349999999993, 10.2 to 80.81349999999993, 9.8 fc rgb \"#000000\"", - "set object 694 rect from 81.90449999999993, 10.2 to 82.90449999999993, 9.8 fc rgb \"#000000\"", - "set object 695 rect from 83.96999999999994, 10.2 to 85.90049999999992, 9.8 fc rgb \"#000000\"", - "set object 696 rect from 90.04699999999991, 10.2 to 91.04699999999991, 9.8 fc rgb \"#000000\"", - "set object 697 rect from 91.11749999999992, 10.2 to 92.11749999999992, 9.8 fc rgb \"#000000\"", - "set object 698 rect from 94.24599999999992, 10.2 to 95.24599999999992, 9.8 fc rgb \"#000000\"", - "set object 699 rect from 96.36399999999992, 10.2 to 97.36399999999992, 9.8 fc rgb \"#000000\"", - "set object 700 rect from 108.83549999999991, 10.2 to 109.83549999999991, 9.8 fc rgb \"#000000\"", - "set object 701 rect from 109.87949999999991, 10.2 to 110.87949999999991, 9.8 fc rgb \"#000000\"", - "set object 702 rect from 112.9859999999999, 10.2 to 113.9859999999999, 9.8 fc rgb \"#000000\"", - "set object 703 rect from 114.0484999999999, 10.2 to 115.0484999999999, 9.8 fc rgb \"#000000\"", - "set object 704 rect from 119.3669999999999, 10.2 to 120.3669999999999, 9.8 fc rgb \"#000000\"", - "set object 705 rect from 120.4439999999999, 10.2 to 121.4439999999999, 9.8 fc rgb \"#000000\"", - "set object 706 rect from 121.46899999999991, 10.2 to 122.46899999999991, 9.8 fc rgb \"#000000\"", - "set object 707 rect from 126.7234999999999, 10.2 to 127.7234999999999, 9.8 fc rgb \"#000000\"", - "set object 708 rect from 127.77299999999991, 10.2 to 128.7729999999999, 9.8 fc rgb \"#000000\"", - "set object 709 rect from 132.9344999999999, 10.2 to 133.9344999999999, 9.8 fc rgb \"#000000\"", - "set object 710 rect from 135.0459999999999, 10.2 to 136.0459999999999, 9.8 fc rgb \"#000000\"", - "set object 711 rect from 137.1609999999999, 10.2 to 138.1609999999999, 9.8 fc rgb \"#000000\"", - "set object 712 rect from 139.24899999999988, 10.2 to 140.24899999999988, 9.8 fc rgb \"#000000\"", - "set object 713 rect from 61.17299999999995, 10.2 to 62.17299999999995, 9.8 fc rgb \"#DD0000\"", - "set object 714 rect from 63.23999999999996, 10.2 to 64.23999999999995, 9.8 fc rgb \"#DD0000\"", - "set object 715 rect from 88.98349999999992, 10.2 to 89.98349999999992, 9.8 fc rgb \"#DD0000\"", - "set object 716 rect from 106.85949999999991, 10.2 to 107.85949999999991, 9.8 fc rgb \"#DD0000\"", - "set object 717 rect from 18.803, 9.399999999999999 to 19.803, 9.2 fc rgb \"#DD0000\"", - "set object 718 rect from 19.8815, 9.399999999999999 to 20.8815, 9.2 fc rgb \"#DD0000\"", - "set object 719 rect from 20.910999999999998, 9.399999999999999 to 21.910999999999998, 9.2 fc rgb \"#DD0000\"", - "set object 720 rect from 41.82200000000002, 9.399999999999999 to 42.82200000000002, 9.2 fc rgb \"#DD0000\"", - "set object 721 rect from 43.79150000000001, 9.399999999999999 to 44.79150000000001, 9.2 fc rgb \"#DD0000\"", - "set object 722 rect from 45.50300000000001, 9.399999999999999 to 48.4035, 9.2 fc rgb \"#DD0000\"", - "set object 723 rect from 48.49, 9.399999999999999 to 53.228999999999985, 9.2 fc rgb \"#DD0000\"", - "set object 724 rect from 54.33049999999998, 9.399999999999999 to 55.33049999999998, 9.2 fc rgb \"#DD0000\"", - "set object 725 rect from 57.33799999999997, 9.399999999999999 to 59.19399999999997, 9.2 fc rgb \"#DD0000\"", - "set object 726 rect from 62.20049999999995, 9.399999999999999 to 63.20049999999995, 9.2 fc rgb \"#DD0000\"", - "set object 727 rect from 64.28099999999995, 9.399999999999999 to 65.28099999999995, 9.2 fc rgb \"#DD0000\"", - "set object 728 rect from 67.35049999999995, 9.399999999999999 to 68.35049999999995, 9.2 fc rgb \"#DD0000\"", - "set object 729 rect from 71.44949999999994, 9.399999999999999 to 72.44949999999994, 9.2 fc rgb \"#DD0000\"", - "set object 730 rect from 75.59449999999994, 9.399999999999999 to 76.59449999999994, 9.2 fc rgb \"#DD0000\"", - "set object 731 rect from 77.68599999999995, 9.399999999999999 to 78.68599999999995, 9.2 fc rgb \"#DD0000\"", - "set object 732 rect from 78.74099999999993, 9.399999999999999 to 79.74099999999993, 9.2 fc rgb \"#DD0000\"", - "set object 733 rect from 82.96499999999995, 9.399999999999999 to 84.96999999999994, 9.2 fc rgb \"#DD0000\"", - "set object 734 rect from 88.98349999999992, 9.399999999999999 to 89.98349999999992, 9.2 fc rgb \"#DD0000\"", - "set object 735 rect from 90.04699999999991, 9.399999999999999 to 91.04699999999991, 9.2 fc rgb \"#DD0000\"", - "set object 736 rect from 91.11749999999992, 9.399999999999999 to 92.11749999999992, 9.2 fc rgb \"#DD0000\"", - "set object 737 rect from 94.24599999999992, 9.399999999999999 to 95.24599999999992, 9.2 fc rgb \"#DD0000\"", - "set object 738 rect from 98.46299999999991, 9.399999999999999 to 99.46299999999991, 9.2 fc rgb \"#DD0000\"", - "set object 739 rect from 106.85949999999991, 9.399999999999999 to 108.7474999999999, 9.2 fc rgb \"#DD0000\"", - "set object 740 rect from 109.87949999999991, 9.399999999999999 to 110.87949999999991, 9.2 fc rgb \"#DD0000\"", - "set object 741 rect from 115.0789999999999, 9.399999999999999 to 116.0789999999999, 9.2 fc rgb \"#DD0000\"", - "set object 742 rect from 119.3669999999999, 9.399999999999999 to 120.3669999999999, 9.2 fc rgb \"#DD0000\"", - "set object 743 rect from 123.56399999999988, 9.399999999999999 to 124.56399999999988, 9.2 fc rgb \"#DD0000\"", - "set object 744 rect from 127.77299999999991, 9.399999999999999 to 128.7729999999999, 9.2 fc rgb \"#DD0000\"", - "set object 745 rect from 128.8479999999999, 9.399999999999999 to 129.8479999999999, 9.2 fc rgb \"#DD0000\"", - "set object 746 rect from 131.90949999999987, 9.399999999999999 to 132.90949999999987, 9.2 fc rgb \"#DD0000\"", - "set object 747 rect from 132.9344999999999, 9.399999999999999 to 133.9344999999999, 9.2 fc rgb \"#DD0000\"", - "set object 748 rect from 138.2054999999999, 9.399999999999999 to 139.2054999999999, 9.2 fc rgb \"#DD0000\"", - "set object 749 rect from 18.803, 9.149999999999999 to 19.803, 8.95 fc rgb \"#DD0000\"", - "set object 750 rect from 19.8815, 9.149999999999999 to 20.8815, 8.95 fc rgb \"#DD0000\"", - "set object 751 rect from 20.910999999999998, 9.149999999999999 to 21.910999999999998, 8.95 fc rgb \"#DD0000\"", - "set object 752 rect from 45.50300000000001, 9.149999999999999 to 48.4035, 8.95 fc rgb \"#DD0000\"", - "set object 753 rect from 48.49, 9.149999999999999 to 53.228999999999985, 8.95 fc rgb \"#DD0000\"", - "set object 754 rect from 54.33049999999998, 9.149999999999999 to 55.33049999999998, 8.95 fc rgb \"#DD0000\"", - "set object 755 rect from 57.33799999999997, 9.149999999999999 to 59.19399999999997, 8.95 fc rgb \"#DD0000\"", - "set object 756 rect from 61.17299999999995, 9.149999999999999 to 62.17299999999995, 8.95 fc rgb \"#DD0000\"", - "set object 757 rect from 62.20049999999995, 9.149999999999999 to 63.20049999999995, 8.95 fc rgb \"#DD0000\"", - "set object 758 rect from 63.23999999999996, 9.149999999999999 to 64.23999999999995, 8.95 fc rgb \"#DD0000\"", - "set object 759 rect from 64.28099999999995, 9.149999999999999 to 65.28099999999995, 8.95 fc rgb \"#DD0000\"", - "set object 760 rect from 65.31249999999996, 9.149999999999999 to 66.31249999999996, 8.95 fc rgb \"#DD0000\"", - "set object 761 rect from 66.37099999999995, 9.149999999999999 to 68.35049999999995, 8.95 fc rgb \"#DD0000\"", - "set object 762 rect from 68.37699999999995, 9.149999999999999 to 70.37999999999994, 8.95 fc rgb \"#DD0000\"", - "set object 763 rect from 70.39199999999994, 9.149999999999999 to 71.39199999999994, 8.95 fc rgb \"#DD0000\"", - "set object 764 rect from 71.44949999999994, 9.149999999999999 to 72.44949999999994, 8.95 fc rgb \"#DD0000\"", - "set object 765 rect from 72.48699999999994, 9.149999999999999 to 73.48699999999994, 8.95 fc rgb \"#DD0000\"", - "set object 766 rect from 73.55549999999994, 9.149999999999999 to 75.56249999999994, 8.95 fc rgb \"#DD0000\"", - "set object 767 rect from 75.59449999999994, 9.149999999999999 to 76.59449999999994, 8.95 fc rgb \"#DD0000\"", - "set object 768 rect from 76.64899999999994, 9.149999999999999 to 77.64899999999994, 8.95 fc rgb \"#DD0000\"", - "set object 769 rect from 77.68599999999995, 9.149999999999999 to 78.68599999999995, 8.95 fc rgb \"#DD0000\"", - "set object 770 rect from 78.74099999999993, 9.149999999999999 to 79.74099999999993, 8.95 fc rgb \"#DD0000\"", - "set object 771 rect from 79.81349999999993, 9.149999999999999 to 80.81349999999993, 8.95 fc rgb \"#DD0000\"", - "set object 772 rect from 80.83699999999993, 9.149999999999999 to 81.83699999999993, 8.95 fc rgb \"#DD0000\"", - "set object 773 rect from 81.90449999999993, 9.149999999999999 to 82.90449999999993, 8.95 fc rgb \"#DD0000\"", - "set object 774 rect from 82.96499999999995, 9.149999999999999 to 84.96999999999994, 8.95 fc rgb \"#DD0000\"", - "set object 775 rect from 85.90099999999993, 9.149999999999999 to 86.90099999999993, 8.95 fc rgb \"#DD0000\"", - "set object 776 rect from 87.97249999999993, 9.149999999999999 to 88.97249999999993, 8.95 fc rgb \"#DD0000\"", - "set object 777 rect from 88.98349999999992, 9.149999999999999 to 89.98349999999992, 8.95 fc rgb \"#DD0000\"", - "set object 778 rect from 90.04699999999991, 9.149999999999999 to 91.04699999999991, 8.95 fc rgb \"#DD0000\"", - "set object 779 rect from 91.11749999999992, 9.149999999999999 to 92.11749999999992, 8.95 fc rgb \"#DD0000\"", - "set object 780 rect from 92.14499999999992, 9.149999999999999 to 93.14499999999992, 8.95 fc rgb \"#DD0000\"", - "set object 781 rect from 93.21149999999992, 9.149999999999999 to 94.21149999999992, 8.95 fc rgb \"#DD0000\"", - "set object 782 rect from 96.36399999999992, 9.149999999999999 to 97.36399999999992, 8.95 fc rgb \"#DD0000\"", - "set object 783 rect from 98.46299999999991, 9.149999999999999 to 99.46299999999991, 8.95 fc rgb \"#DD0000\"", - "set object 784 rect from 101.62199999999993, 9.149999999999999 to 102.62199999999993, 8.95 fc rgb \"#DD0000\"", - "set object 785 rect from 102.63099999999991, 9.149999999999999 to 103.63099999999991, 8.95 fc rgb \"#DD0000\"", - "set object 786 rect from 104.73949999999991, 9.149999999999999 to 105.73949999999991, 8.95 fc rgb \"#DD0000\"", - "set object 787 rect from 106.85949999999991, 9.149999999999999 to 108.7474999999999, 8.95 fc rgb \"#DD0000\"", - "set object 788 rect from 109.87949999999991, 9.149999999999999 to 110.87949999999991, 8.95 fc rgb \"#DD0000\"", - "set object 789 rect from 110.93299999999991, 9.149999999999999 to 111.93299999999991, 8.95 fc rgb \"#DD0000\"", - "set object 790 rect from 112.00149999999991, 9.149999999999999 to 113.9859999999999, 8.95 fc rgb \"#DD0000\"", - "set object 791 rect from 115.0789999999999, 9.149999999999999 to 116.0789999999999, 8.95 fc rgb \"#DD0000\"", - "set object 792 rect from 117.26799999999992, 9.149999999999999 to 118.26799999999992, 8.95 fc rgb \"#DD0000\"", - "set object 793 rect from 120.4439999999999, 9.149999999999999 to 121.4439999999999, 8.95 fc rgb \"#DD0000\"", - "set object 794 rect from 121.46899999999991, 9.149999999999999 to 122.46899999999991, 8.95 fc rgb \"#DD0000\"", - "set object 795 rect from 122.52449999999989, 9.149999999999999 to 123.52449999999989, 8.95 fc rgb \"#DD0000\"", - "set object 796 rect from 123.56399999999988, 9.149999999999999 to 124.56399999999988, 8.95 fc rgb \"#DD0000\"", - "set object 797 rect from 126.7234999999999, 9.149999999999999 to 127.7234999999999, 8.95 fc rgb \"#DD0000\"", - "set object 798 rect from 127.77299999999991, 9.149999999999999 to 128.7729999999999, 8.95 fc rgb \"#DD0000\"", - "set object 799 rect from 128.8479999999999, 9.149999999999999 to 129.8479999999999, 8.95 fc rgb \"#DD0000\"", - "set object 800 rect from 131.90949999999987, 9.149999999999999 to 132.90949999999987, 8.95 fc rgb \"#DD0000\"", - "set object 801 rect from 132.9344999999999, 9.149999999999999 to 133.9344999999999, 8.95 fc rgb \"#DD0000\"", - "set object 802 rect from 133.9804999999999, 9.149999999999999 to 134.9804999999999, 8.95 fc rgb \"#DD0000\"", - "set object 803 rect from 137.1609999999999, 9.149999999999999 to 138.1609999999999, 8.95 fc rgb \"#DD0000\"", - "set object 804 rect from 138.2054999999999, 9.149999999999999 to 139.2054999999999, 8.95 fc rgb \"#DD0000\"", - "set object 805 rect from 140.3004999999999, 9.149999999999999 to 141.3004999999999, 8.95 fc rgb \"#DD0000\"", - "set object 806 rect from 18.803, 8.899999999999999 to 19.803, 8.7 fc rgb \"#DD0000\"", - "set object 807 rect from 19.8815, 8.899999999999999 to 20.8815, 8.7 fc rgb \"#DD0000\"", - "set object 808 rect from 20.910999999999998, 8.899999999999999 to 21.910999999999998, 8.7 fc rgb \"#DD0000\"", - "set object 809 rect from 45.50300000000001, 8.899999999999999 to 48.4035, 8.7 fc rgb \"#DD0000\"", - "set object 810 rect from 48.49, 8.899999999999999 to 53.228999999999985, 8.7 fc rgb \"#DD0000\"", - "set object 811 rect from 54.33049999999998, 8.899999999999999 to 55.33049999999998, 8.7 fc rgb \"#DD0000\"", - "set object 812 rect from 57.33799999999997, 8.899999999999999 to 59.19399999999997, 8.7 fc rgb \"#DD0000\"", - "set object 813 rect from 61.17299999999995, 8.899999999999999 to 62.17299999999995, 8.7 fc rgb \"#DD0000\"", - "set object 814 rect from 62.20049999999995, 8.899999999999999 to 63.20049999999995, 8.7 fc rgb \"#DD0000\"", - "set object 815 rect from 63.23999999999996, 8.899999999999999 to 64.23999999999995, 8.7 fc rgb \"#DD0000\"", - "set object 816 rect from 64.28099999999995, 8.899999999999999 to 65.28099999999995, 8.7 fc rgb \"#DD0000\"", - "set object 817 rect from 65.31249999999996, 8.899999999999999 to 66.31249999999996, 8.7 fc rgb \"#DD0000\"", - "set object 818 rect from 66.37099999999995, 8.899999999999999 to 68.35049999999995, 8.7 fc rgb \"#DD0000\"", - "set object 819 rect from 68.37699999999995, 8.899999999999999 to 70.37999999999994, 8.7 fc rgb \"#DD0000\"", - "set object 820 rect from 70.39199999999994, 8.899999999999999 to 71.39199999999994, 8.7 fc rgb \"#DD0000\"", - "set object 821 rect from 71.44949999999994, 8.899999999999999 to 72.44949999999994, 8.7 fc rgb \"#DD0000\"", - "set object 822 rect from 72.48699999999994, 8.899999999999999 to 73.48699999999994, 8.7 fc rgb \"#DD0000\"", - "set object 823 rect from 73.55549999999994, 8.899999999999999 to 75.56249999999994, 8.7 fc rgb \"#DD0000\"", - "set object 824 rect from 75.59449999999994, 8.899999999999999 to 76.59449999999994, 8.7 fc rgb \"#DD0000\"", - "set object 825 rect from 76.64899999999994, 8.899999999999999 to 77.64899999999994, 8.7 fc rgb \"#DD0000\"", - "set object 826 rect from 77.68599999999995, 8.899999999999999 to 78.68599999999995, 8.7 fc rgb \"#DD0000\"", - "set object 827 rect from 78.74099999999993, 8.899999999999999 to 79.74099999999993, 8.7 fc rgb \"#DD0000\"", - "set object 828 rect from 79.81349999999993, 8.899999999999999 to 80.81349999999993, 8.7 fc rgb \"#DD0000\"", - "set object 829 rect from 80.83699999999993, 8.899999999999999 to 81.83699999999993, 8.7 fc rgb \"#DD0000\"", - "set object 830 rect from 81.90449999999993, 8.899999999999999 to 82.90449999999993, 8.7 fc rgb \"#DD0000\"", - "set object 831 rect from 82.96499999999995, 8.899999999999999 to 86.90099999999993, 8.7 fc rgb \"#DD0000\"", - "set object 832 rect from 87.97249999999993, 8.899999999999999 to 88.97249999999993, 8.7 fc rgb \"#DD0000\"", - "set object 833 rect from 88.98349999999992, 8.899999999999999 to 89.98349999999992, 8.7 fc rgb \"#DD0000\"", - "set object 834 rect from 90.04699999999991, 8.899999999999999 to 91.04699999999991, 8.7 fc rgb \"#DD0000\"", - "set object 835 rect from 91.11749999999992, 8.899999999999999 to 92.11749999999992, 8.7 fc rgb \"#DD0000\"", - "set object 836 rect from 92.14499999999992, 8.899999999999999 to 93.14499999999992, 8.7 fc rgb \"#DD0000\"", - "set object 837 rect from 93.21149999999992, 8.899999999999999 to 94.21149999999992, 8.7 fc rgb \"#DD0000\"", - "set object 838 rect from 94.24599999999992, 8.899999999999999 to 95.24599999999992, 8.7 fc rgb \"#DD0000\"", - "set object 839 rect from 95.31249999999991, 8.899999999999999 to 96.31249999999991, 8.7 fc rgb \"#DD0000\"", - "set object 840 rect from 96.36399999999992, 8.899999999999999 to 97.36399999999992, 8.7 fc rgb \"#DD0000\"", - "set object 841 rect from 97.39349999999992, 8.899999999999999 to 98.39349999999992, 8.7 fc rgb \"#DD0000\"", - "set object 842 rect from 98.46299999999991, 8.899999999999999 to 99.46299999999991, 8.7 fc rgb \"#DD0000\"", - "set object 843 rect from 99.48249999999992, 8.899999999999999 to 100.48249999999992, 8.7 fc rgb \"#DD0000\"", - "set object 844 rect from 100.56199999999993, 8.899999999999999 to 101.56199999999993, 8.7 fc rgb \"#DD0000\"", - "set object 845 rect from 101.62199999999993, 8.899999999999999 to 102.62199999999993, 8.7 fc rgb \"#DD0000\"", - "set object 846 rect from 102.63099999999991, 8.899999999999999 to 103.63099999999991, 8.7 fc rgb \"#DD0000\"", - "set object 847 rect from 103.67849999999991, 8.899999999999999 to 104.67849999999991, 8.7 fc rgb \"#DD0000\"", - "set object 848 rect from 104.73949999999991, 8.899999999999999 to 105.73949999999991, 8.7 fc rgb \"#DD0000\"", - "set object 849 rect from 105.77499999999992, 8.899999999999999 to 106.77499999999992, 8.7 fc rgb \"#DD0000\"", - "set object 850 rect from 106.85949999999991, 8.899999999999999 to 108.7474999999999, 8.7 fc rgb \"#DD0000\"", - "set object 851 rect from 109.87949999999991, 8.899999999999999 to 110.87949999999991, 8.7 fc rgb \"#DD0000\"", - "set object 852 rect from 110.93299999999991, 8.899999999999999 to 111.93299999999991, 8.7 fc rgb \"#DD0000\"", - "set object 853 rect from 112.00149999999991, 8.899999999999999 to 113.9859999999999, 8.7 fc rgb \"#DD0000\"", - "set object 854 rect from 114.0484999999999, 8.899999999999999 to 115.0484999999999, 8.7 fc rgb \"#DD0000\"", - "set object 855 rect from 115.0789999999999, 8.899999999999999 to 116.0789999999999, 8.7 fc rgb \"#DD0000\"", - "set object 856 rect from 116.14449999999991, 8.899999999999999 to 117.14449999999991, 8.7 fc rgb \"#DD0000\"", - "set object 857 rect from 117.26799999999992, 8.899999999999999 to 118.26799999999992, 8.7 fc rgb \"#DD0000\"", - "set object 858 rect from 118.3064999999999, 8.899999999999999 to 119.3064999999999, 8.7 fc rgb \"#DD0000\"", - "set object 859 rect from 119.3669999999999, 8.899999999999999 to 120.3669999999999, 8.7 fc rgb \"#DD0000\"", - "set object 860 rect from 120.4439999999999, 8.899999999999999 to 121.4439999999999, 8.7 fc rgb \"#DD0000\"", - "set object 861 rect from 121.46899999999991, 8.899999999999999 to 122.46899999999991, 8.7 fc rgb \"#DD0000\"", - "set object 862 rect from 122.52449999999989, 8.899999999999999 to 123.52449999999989, 8.7 fc rgb \"#DD0000\"", - "set object 863 rect from 123.56399999999988, 8.899999999999999 to 124.56399999999988, 8.7 fc rgb \"#DD0000\"", - "set object 864 rect from 124.6324999999999, 8.899999999999999 to 125.6324999999999, 8.7 fc rgb \"#DD0000\"", - "set object 865 rect from 125.6929999999999, 8.899999999999999 to 126.6929999999999, 8.7 fc rgb \"#DD0000\"", - "set object 866 rect from 126.7234999999999, 8.899999999999999 to 127.7234999999999, 8.7 fc rgb \"#DD0000\"", - "set object 867 rect from 127.77299999999991, 8.899999999999999 to 128.7729999999999, 8.7 fc rgb \"#DD0000\"", - "set object 868 rect from 128.8479999999999, 8.899999999999999 to 129.8479999999999, 8.7 fc rgb \"#DD0000\"", - "set object 869 rect from 129.8879999999999, 8.899999999999999 to 131.8519999999999, 8.7 fc rgb \"#DD0000\"", - "set object 870 rect from 131.90949999999987, 8.899999999999999 to 132.90949999999987, 8.7 fc rgb \"#DD0000\"", - "set object 871 rect from 132.9344999999999, 8.899999999999999 to 133.9344999999999, 8.7 fc rgb \"#DD0000\"", - "set object 872 rect from 133.9804999999999, 8.899999999999999 to 134.9804999999999, 8.7 fc rgb \"#DD0000\"", - "set object 873 rect from 135.0459999999999, 8.899999999999999 to 136.0459999999999, 8.7 fc rgb \"#DD0000\"", - "set object 874 rect from 136.08249999999987, 8.899999999999999 to 137.08249999999987, 8.7 fc rgb \"#DD0000\"", - "set object 875 rect from 137.1609999999999, 8.899999999999999 to 138.1609999999999, 8.7 fc rgb \"#DD0000\"", - "set object 876 rect from 138.2054999999999, 8.899999999999999 to 139.2054999999999, 8.7 fc rgb \"#DD0000\"", - "set object 877 rect from 139.24899999999988, 8.899999999999999 to 140.24899999999988, 8.7 fc rgb \"#DD0000\"", - "set object 878 rect from 140.3004999999999, 8.899999999999999 to 141.3004999999999, 8.7 fc rgb \"#DD0000\"", - "set object 879 rect from 18.803, 8.649999999999999 to 19.803, 8.45 fc rgb \"#DD0000\"", - "set object 880 rect from 19.8815, 8.649999999999999 to 20.8815, 8.45 fc rgb \"#DD0000\"", - "set object 881 rect from 20.910999999999998, 8.649999999999999 to 21.910999999999998, 8.45 fc rgb \"#DD0000\"", - "set object 882 rect from 45.50300000000001, 8.649999999999999 to 48.4035, 8.45 fc rgb \"#DD0000\"", - "set object 883 rect from 48.49, 8.649999999999999 to 53.228999999999985, 8.45 fc rgb \"#DD0000\"", - "set object 884 rect from 54.33049999999998, 8.649999999999999 to 55.33049999999998, 8.45 fc rgb \"#DD0000\"", - "set object 885 rect from 57.33799999999997, 8.649999999999999 to 59.19399999999997, 8.45 fc rgb \"#DD0000\"", - "set object 886 rect from 61.17299999999995, 8.649999999999999 to 62.17299999999995, 8.45 fc rgb \"#DD0000\"", - "set object 887 rect from 62.20049999999995, 8.649999999999999 to 63.20049999999995, 8.45 fc rgb \"#DD0000\"", - "set object 888 rect from 63.23999999999996, 8.649999999999999 to 64.23999999999995, 8.45 fc rgb \"#DD0000\"", - "set object 889 rect from 64.28099999999995, 8.649999999999999 to 65.28099999999995, 8.45 fc rgb \"#DD0000\"", - "set object 890 rect from 65.31249999999996, 8.649999999999999 to 66.31249999999996, 8.45 fc rgb \"#DD0000\"", - "set object 891 rect from 66.37099999999995, 8.649999999999999 to 68.35049999999995, 8.45 fc rgb \"#DD0000\"", - "set object 892 rect from 68.37699999999995, 8.649999999999999 to 70.37999999999994, 8.45 fc rgb \"#DD0000\"", - "set object 893 rect from 70.39199999999994, 8.649999999999999 to 71.39199999999994, 8.45 fc rgb \"#DD0000\"", - "set object 894 rect from 71.44949999999994, 8.649999999999999 to 72.44949999999994, 8.45 fc rgb \"#DD0000\"", - "set object 895 rect from 72.48699999999994, 8.649999999999999 to 73.48699999999994, 8.45 fc rgb \"#DD0000\"", - "set object 896 rect from 73.55549999999994, 8.649999999999999 to 75.56249999999994, 8.45 fc rgb \"#DD0000\"", - "set object 897 rect from 75.59449999999994, 8.649999999999999 to 76.59449999999994, 8.45 fc rgb \"#DD0000\"", - "set object 898 rect from 76.64899999999994, 8.649999999999999 to 77.64899999999994, 8.45 fc rgb \"#DD0000\"", - "set object 899 rect from 77.68599999999995, 8.649999999999999 to 78.68599999999995, 8.45 fc rgb \"#DD0000\"", - "set object 900 rect from 78.74099999999993, 8.649999999999999 to 79.74099999999993, 8.45 fc rgb \"#DD0000\"", - "set object 901 rect from 79.81349999999993, 8.649999999999999 to 80.81349999999993, 8.45 fc rgb \"#DD0000\"", - "set object 902 rect from 80.83699999999993, 8.649999999999999 to 81.83699999999993, 8.45 fc rgb \"#DD0000\"", - "set object 903 rect from 81.90449999999993, 8.649999999999999 to 82.90449999999993, 8.45 fc rgb \"#DD0000\"", - "set object 904 rect from 82.96499999999995, 8.649999999999999 to 86.90099999999993, 8.45 fc rgb \"#DD0000\"", - "set object 905 rect from 87.97249999999993, 8.649999999999999 to 88.97249999999993, 8.45 fc rgb \"#DD0000\"", - "set object 906 rect from 88.98349999999992, 8.649999999999999 to 89.98349999999992, 8.45 fc rgb \"#DD0000\"", - "set object 907 rect from 90.04699999999991, 8.649999999999999 to 91.04699999999991, 8.45 fc rgb \"#DD0000\"", - "set object 908 rect from 91.11749999999992, 8.649999999999999 to 92.11749999999992, 8.45 fc rgb \"#DD0000\"", - "set object 909 rect from 92.14499999999992, 8.649999999999999 to 93.14499999999992, 8.45 fc rgb \"#DD0000\"", - "set object 910 rect from 93.21149999999992, 8.649999999999999 to 94.21149999999992, 8.45 fc rgb \"#DD0000\"", - "set object 911 rect from 94.24599999999992, 8.649999999999999 to 95.24599999999992, 8.45 fc rgb \"#DD0000\"", - "set object 912 rect from 95.31249999999991, 8.649999999999999 to 96.31249999999991, 8.45 fc rgb \"#DD0000\"", - "set object 913 rect from 96.36399999999992, 8.649999999999999 to 97.36399999999992, 8.45 fc rgb \"#DD0000\"", - "set object 914 rect from 97.39349999999992, 8.649999999999999 to 98.39349999999992, 8.45 fc rgb \"#DD0000\"", - "set object 915 rect from 98.46299999999991, 8.649999999999999 to 99.46299999999991, 8.45 fc rgb \"#DD0000\"", - "set object 916 rect from 99.48249999999992, 8.649999999999999 to 100.48249999999992, 8.45 fc rgb \"#DD0000\"", - "set object 917 rect from 100.56199999999993, 8.649999999999999 to 101.56199999999993, 8.45 fc rgb \"#DD0000\"", - "set object 918 rect from 101.62199999999993, 8.649999999999999 to 102.62199999999993, 8.45 fc rgb \"#DD0000\"", - "set object 919 rect from 102.63099999999991, 8.649999999999999 to 103.63099999999991, 8.45 fc rgb \"#DD0000\"", - "set object 920 rect from 103.67849999999991, 8.649999999999999 to 104.67849999999991, 8.45 fc rgb \"#DD0000\"", - "set object 921 rect from 104.73949999999991, 8.649999999999999 to 105.73949999999991, 8.45 fc rgb \"#DD0000\"", - "set object 922 rect from 105.77499999999992, 8.649999999999999 to 106.77499999999992, 8.45 fc rgb \"#DD0000\"", - "set object 923 rect from 106.85949999999991, 8.649999999999999 to 108.7474999999999, 8.45 fc rgb \"#DD0000\"", - "set object 924 rect from 109.87949999999991, 8.649999999999999 to 110.87949999999991, 8.45 fc rgb \"#DD0000\"", - "set object 925 rect from 110.93299999999991, 8.649999999999999 to 111.93299999999991, 8.45 fc rgb \"#DD0000\"", - "set object 926 rect from 112.00149999999991, 8.649999999999999 to 113.9859999999999, 8.45 fc rgb \"#DD0000\"", - "set object 927 rect from 114.0484999999999, 8.649999999999999 to 115.0484999999999, 8.45 fc rgb \"#DD0000\"", - "set object 928 rect from 115.0789999999999, 8.649999999999999 to 116.0789999999999, 8.45 fc rgb \"#DD0000\"", - "set object 929 rect from 116.14449999999991, 8.649999999999999 to 117.14449999999991, 8.45 fc rgb \"#DD0000\"", - "set object 930 rect from 117.26799999999992, 8.649999999999999 to 118.26799999999992, 8.45 fc rgb \"#DD0000\"", - "set object 931 rect from 118.3064999999999, 8.649999999999999 to 119.3064999999999, 8.45 fc rgb \"#DD0000\"", - "set object 932 rect from 119.3669999999999, 8.649999999999999 to 120.3669999999999, 8.45 fc rgb \"#DD0000\"", - "set object 933 rect from 120.4439999999999, 8.649999999999999 to 121.4439999999999, 8.45 fc rgb \"#DD0000\"", - "set object 934 rect from 121.46899999999991, 8.649999999999999 to 122.46899999999991, 8.45 fc rgb \"#DD0000\"", - "set object 935 rect from 122.52449999999989, 8.649999999999999 to 123.52449999999989, 8.45 fc rgb \"#DD0000\"", - "set object 936 rect from 123.56399999999988, 8.649999999999999 to 124.56399999999988, 8.45 fc rgb \"#DD0000\"", - "set object 937 rect from 124.6324999999999, 8.649999999999999 to 125.6324999999999, 8.45 fc rgb \"#DD0000\"", - "set object 938 rect from 125.6929999999999, 8.649999999999999 to 126.6929999999999, 8.45 fc rgb \"#DD0000\"", - "set object 939 rect from 126.7234999999999, 8.649999999999999 to 127.7234999999999, 8.45 fc rgb \"#DD0000\"", - "set object 940 rect from 127.77299999999991, 8.649999999999999 to 128.7729999999999, 8.45 fc rgb \"#DD0000\"", - "set object 941 rect from 128.8479999999999, 8.649999999999999 to 129.8479999999999, 8.45 fc rgb \"#DD0000\"", - "set object 942 rect from 129.8879999999999, 8.649999999999999 to 131.8519999999999, 8.45 fc rgb \"#DD0000\"", - "set object 943 rect from 131.90949999999987, 8.649999999999999 to 132.90949999999987, 8.45 fc rgb \"#DD0000\"", - "set object 944 rect from 132.9344999999999, 8.649999999999999 to 133.9344999999999, 8.45 fc rgb \"#DD0000\"", - "set object 945 rect from 133.9804999999999, 8.649999999999999 to 134.9804999999999, 8.45 fc rgb \"#DD0000\"", - "set object 946 rect from 135.0459999999999, 8.649999999999999 to 136.0459999999999, 8.45 fc rgb \"#DD0000\"", - "set object 947 rect from 136.08249999999987, 8.649999999999999 to 137.08249999999987, 8.45 fc rgb \"#DD0000\"", - "set object 948 rect from 137.1609999999999, 8.649999999999999 to 138.1609999999999, 8.45 fc rgb \"#DD0000\"", - "set object 949 rect from 138.2054999999999, 8.649999999999999 to 139.2054999999999, 8.45 fc rgb \"#DD0000\"", - "set object 950 rect from 139.24899999999988, 8.649999999999999 to 140.24899999999988, 8.45 fc rgb \"#DD0000\"", - "set object 951 rect from 140.3004999999999, 8.649999999999999 to 141.3004999999999, 8.45 fc rgb \"#DD0000\"", - "set object 952 rect from 18.803, 8.399999999999999 to 19.803, 8.2 fc rgb \"#DD0000\"", - "set object 953 rect from 19.8815, 8.399999999999999 to 20.8815, 8.2 fc rgb \"#DD0000\"", - "set object 954 rect from 20.910999999999998, 8.399999999999999 to 21.910999999999998, 8.2 fc rgb \"#DD0000\"", - "set object 955 rect from 45.50300000000001, 8.399999999999999 to 48.4035, 8.2 fc rgb \"#DD0000\"", - "set object 956 rect from 48.49, 8.399999999999999 to 53.228999999999985, 8.2 fc rgb \"#DD0000\"", - "set object 957 rect from 54.33049999999998, 8.399999999999999 to 55.33049999999998, 8.2 fc rgb \"#DD0000\"", - "set object 958 rect from 57.33799999999997, 8.399999999999999 to 59.19399999999997, 8.2 fc rgb \"#DD0000\"", - "set object 959 rect from 61.17299999999995, 8.399999999999999 to 62.17299999999995, 8.2 fc rgb \"#DD0000\"", - "set object 960 rect from 62.20049999999995, 8.399999999999999 to 63.20049999999995, 8.2 fc rgb \"#DD0000\"", - "set object 961 rect from 63.23999999999996, 8.399999999999999 to 64.23999999999995, 8.2 fc rgb \"#DD0000\"", - "set object 962 rect from 64.28099999999995, 8.399999999999999 to 65.28099999999995, 8.2 fc rgb \"#DD0000\"", - "set object 963 rect from 65.31249999999996, 8.399999999999999 to 66.31249999999996, 8.2 fc rgb \"#DD0000\"", - "set object 964 rect from 66.37099999999995, 8.399999999999999 to 68.35049999999995, 8.2 fc rgb \"#DD0000\"", - "set object 965 rect from 68.37699999999995, 8.399999999999999 to 70.37999999999994, 8.2 fc rgb \"#DD0000\"", - "set object 966 rect from 70.39199999999994, 8.399999999999999 to 71.39199999999994, 8.2 fc rgb \"#DD0000\"", - "set object 967 rect from 71.44949999999994, 8.399999999999999 to 72.44949999999994, 8.2 fc rgb \"#DD0000\"", - "set object 968 rect from 72.48699999999994, 8.399999999999999 to 73.48699999999994, 8.2 fc rgb \"#DD0000\"", - "set object 969 rect from 73.55549999999994, 8.399999999999999 to 75.56249999999994, 8.2 fc rgb \"#DD0000\"", - "set object 970 rect from 75.59449999999994, 8.399999999999999 to 76.59449999999994, 8.2 fc rgb \"#DD0000\"", - "set object 971 rect from 76.64899999999994, 8.399999999999999 to 77.64899999999994, 8.2 fc rgb \"#DD0000\"", - "set object 972 rect from 77.68599999999995, 8.399999999999999 to 78.68599999999995, 8.2 fc rgb \"#DD0000\"", - "set object 973 rect from 78.74099999999993, 8.399999999999999 to 79.74099999999993, 8.2 fc rgb \"#DD0000\"", - "set object 974 rect from 79.81349999999993, 8.399999999999999 to 80.81349999999993, 8.2 fc rgb \"#DD0000\"", - "set object 975 rect from 80.83699999999993, 8.399999999999999 to 81.83699999999993, 8.2 fc rgb \"#DD0000\"", - "set object 976 rect from 81.90449999999993, 8.399999999999999 to 82.90449999999993, 8.2 fc rgb \"#DD0000\"", - "set object 977 rect from 82.96499999999995, 8.399999999999999 to 86.90099999999993, 8.2 fc rgb \"#DD0000\"", - "set object 978 rect from 87.97249999999993, 8.399999999999999 to 88.97249999999993, 8.2 fc rgb \"#DD0000\"", - "set object 979 rect from 88.98349999999992, 8.399999999999999 to 89.98349999999992, 8.2 fc rgb \"#DD0000\"", - "set object 980 rect from 90.04699999999991, 8.399999999999999 to 91.04699999999991, 8.2 fc rgb \"#DD0000\"", - "set object 981 rect from 91.11749999999992, 8.399999999999999 to 92.11749999999992, 8.2 fc rgb \"#DD0000\"", - "set object 982 rect from 92.14499999999992, 8.399999999999999 to 93.14499999999992, 8.2 fc rgb \"#DD0000\"", - "set object 983 rect from 93.21149999999992, 8.399999999999999 to 94.21149999999992, 8.2 fc rgb \"#DD0000\"", - "set object 984 rect from 94.24599999999992, 8.399999999999999 to 95.24599999999992, 8.2 fc rgb \"#DD0000\"", - "set object 985 rect from 95.31249999999991, 8.399999999999999 to 96.31249999999991, 8.2 fc rgb \"#DD0000\"", - "set object 986 rect from 96.36399999999992, 8.399999999999999 to 97.36399999999992, 8.2 fc rgb \"#DD0000\"", - "set object 987 rect from 97.39349999999992, 8.399999999999999 to 98.39349999999992, 8.2 fc rgb \"#DD0000\"", - "set object 988 rect from 98.46299999999991, 8.399999999999999 to 99.46299999999991, 8.2 fc rgb \"#DD0000\"", - "set object 989 rect from 99.48249999999992, 8.399999999999999 to 100.48249999999992, 8.2 fc rgb \"#DD0000\"", - "set object 990 rect from 100.56199999999993, 8.399999999999999 to 101.56199999999993, 8.2 fc rgb \"#DD0000\"", - "set object 991 rect from 101.62199999999993, 8.399999999999999 to 102.62199999999993, 8.2 fc rgb \"#DD0000\"", - "set object 992 rect from 102.63099999999991, 8.399999999999999 to 103.63099999999991, 8.2 fc rgb \"#DD0000\"", - "set object 993 rect from 103.67849999999991, 8.399999999999999 to 104.67849999999991, 8.2 fc rgb \"#DD0000\"", - "set object 994 rect from 104.73949999999991, 8.399999999999999 to 105.73949999999991, 8.2 fc rgb \"#DD0000\"", - "set object 995 rect from 105.77499999999992, 8.399999999999999 to 106.77499999999992, 8.2 fc rgb \"#DD0000\"", - "set object 996 rect from 106.85949999999991, 8.399999999999999 to 108.7474999999999, 8.2 fc rgb \"#DD0000\"", - "set object 997 rect from 109.87949999999991, 8.399999999999999 to 110.87949999999991, 8.2 fc rgb \"#DD0000\"", - "set object 998 rect from 110.93299999999991, 8.399999999999999 to 111.93299999999991, 8.2 fc rgb \"#DD0000\"", - "set object 999 rect from 112.00149999999991, 8.399999999999999 to 113.9859999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1000 rect from 114.0484999999999, 8.399999999999999 to 115.0484999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1001 rect from 115.0789999999999, 8.399999999999999 to 116.0789999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1002 rect from 116.14449999999991, 8.399999999999999 to 117.14449999999991, 8.2 fc rgb \"#DD0000\"", - "set object 1003 rect from 117.26799999999992, 8.399999999999999 to 118.26799999999992, 8.2 fc rgb \"#DD0000\"", - "set object 1004 rect from 118.3064999999999, 8.399999999999999 to 119.3064999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1005 rect from 119.3669999999999, 8.399999999999999 to 120.3669999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1006 rect from 120.4439999999999, 8.399999999999999 to 121.4439999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1007 rect from 121.46899999999991, 8.399999999999999 to 122.46899999999991, 8.2 fc rgb \"#DD0000\"", - "set object 1008 rect from 122.52449999999989, 8.399999999999999 to 123.52449999999989, 8.2 fc rgb \"#DD0000\"", - "set object 1009 rect from 123.56399999999988, 8.399999999999999 to 124.56399999999988, 8.2 fc rgb \"#DD0000\"", - "set object 1010 rect from 124.6324999999999, 8.399999999999999 to 125.6324999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1011 rect from 125.6929999999999, 8.399999999999999 to 126.6929999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1012 rect from 126.7234999999999, 8.399999999999999 to 127.7234999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1013 rect from 127.77299999999991, 8.399999999999999 to 128.7729999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1014 rect from 128.8479999999999, 8.399999999999999 to 129.8479999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1015 rect from 129.8879999999999, 8.399999999999999 to 131.8519999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1016 rect from 131.90949999999987, 8.399999999999999 to 132.90949999999987, 8.2 fc rgb \"#DD0000\"", - "set object 1017 rect from 132.9344999999999, 8.399999999999999 to 133.9344999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1018 rect from 133.9804999999999, 8.399999999999999 to 134.9804999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1019 rect from 135.0459999999999, 8.399999999999999 to 136.0459999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1020 rect from 136.08249999999987, 8.399999999999999 to 137.08249999999987, 8.2 fc rgb \"#DD0000\"", - "set object 1021 rect from 137.1609999999999, 8.399999999999999 to 138.1609999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1022 rect from 138.2054999999999, 8.399999999999999 to 139.2054999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1023 rect from 139.24899999999988, 8.399999999999999 to 140.24899999999988, 8.2 fc rgb \"#DD0000\"", - "set object 1024 rect from 140.3004999999999, 8.399999999999999 to 141.3004999999999, 8.2 fc rgb \"#DD0000\"", - "set object 1025 rect from 19.8815, 8.149999999999999 to 20.8815, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1026 rect from 20.910999999999998, 8.149999999999999 to 21.910999999999998, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1027 rect from 45.50300000000001, 8.149999999999999 to 48.4035, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1028 rect from 48.49, 8.149999999999999 to 53.228999999999985, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1029 rect from 54.33049999999998, 8.149999999999999 to 55.33049999999998, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1030 rect from 57.33799999999997, 8.149999999999999 to 59.19399999999997, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1031 rect from 61.17299999999995, 8.149999999999999 to 62.17299999999995, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1032 rect from 62.20049999999995, 8.149999999999999 to 63.20049999999995, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1033 rect from 63.23999999999996, 8.149999999999999 to 64.23999999999995, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1034 rect from 64.28099999999995, 8.149999999999999 to 65.28099999999995, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1035 rect from 65.31249999999996, 8.149999999999999 to 66.31249999999996, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1036 rect from 66.37099999999995, 8.149999999999999 to 68.35049999999995, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1037 rect from 68.37699999999995, 8.149999999999999 to 70.37999999999994, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1038 rect from 70.39199999999994, 8.149999999999999 to 71.39199999999994, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1039 rect from 71.44949999999994, 8.149999999999999 to 72.44949999999994, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1040 rect from 72.48699999999994, 8.149999999999999 to 73.48699999999994, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1041 rect from 73.55549999999994, 8.149999999999999 to 75.56249999999994, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1042 rect from 75.59449999999994, 8.149999999999999 to 76.59449999999994, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1043 rect from 76.64899999999994, 8.149999999999999 to 77.64899999999994, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1044 rect from 77.68599999999995, 8.149999999999999 to 78.68599999999995, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1045 rect from 78.74099999999993, 8.149999999999999 to 79.74099999999993, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1046 rect from 79.81349999999993, 8.149999999999999 to 80.81349999999993, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1047 rect from 80.83699999999993, 8.149999999999999 to 81.83699999999993, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1048 rect from 81.90449999999993, 8.149999999999999 to 82.90449999999993, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1049 rect from 82.96499999999995, 8.149999999999999 to 86.90099999999993, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1050 rect from 87.97249999999993, 8.149999999999999 to 88.97249999999993, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1051 rect from 88.98349999999992, 8.149999999999999 to 89.98349999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1052 rect from 90.04699999999991, 8.149999999999999 to 91.04699999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1053 rect from 91.11749999999992, 8.149999999999999 to 92.11749999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1054 rect from 92.14499999999992, 8.149999999999999 to 93.14499999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1055 rect from 93.21149999999992, 8.149999999999999 to 94.21149999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1056 rect from 94.24599999999992, 8.149999999999999 to 95.24599999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1057 rect from 95.31249999999991, 8.149999999999999 to 96.31249999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1058 rect from 96.36399999999992, 8.149999999999999 to 97.36399999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1059 rect from 97.39349999999992, 8.149999999999999 to 98.39349999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1060 rect from 98.46299999999991, 8.149999999999999 to 99.46299999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1061 rect from 99.48249999999992, 8.149999999999999 to 100.48249999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1062 rect from 100.56199999999993, 8.149999999999999 to 101.56199999999993, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1063 rect from 101.62199999999993, 8.149999999999999 to 102.62199999999993, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1064 rect from 102.63099999999991, 8.149999999999999 to 103.63099999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1065 rect from 103.67849999999991, 8.149999999999999 to 104.67849999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1066 rect from 104.73949999999991, 8.149999999999999 to 105.73949999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1067 rect from 105.77499999999992, 8.149999999999999 to 106.77499999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1068 rect from 106.85949999999991, 8.149999999999999 to 108.7474999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1069 rect from 109.87949999999991, 8.149999999999999 to 110.87949999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1070 rect from 110.93299999999991, 8.149999999999999 to 111.93299999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1071 rect from 112.00149999999991, 8.149999999999999 to 113.9859999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1072 rect from 114.0484999999999, 8.149999999999999 to 115.0484999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1073 rect from 115.0789999999999, 8.149999999999999 to 116.0789999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1074 rect from 116.14449999999991, 8.149999999999999 to 117.14449999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1075 rect from 117.26799999999992, 8.149999999999999 to 118.26799999999992, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1076 rect from 118.3064999999999, 8.149999999999999 to 119.3064999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1077 rect from 119.3669999999999, 8.149999999999999 to 120.3669999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1078 rect from 120.4439999999999, 8.149999999999999 to 121.4439999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1079 rect from 121.46899999999991, 8.149999999999999 to 122.46899999999991, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1080 rect from 122.52449999999989, 8.149999999999999 to 123.52449999999989, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1081 rect from 123.56399999999988, 8.149999999999999 to 124.56399999999988, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1082 rect from 124.6324999999999, 8.149999999999999 to 125.6324999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1083 rect from 125.6929999999999, 8.149999999999999 to 126.6929999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1084 rect from 126.7234999999999, 8.149999999999999 to 127.7234999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1085 rect from 127.77299999999991, 8.149999999999999 to 128.7729999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1086 rect from 128.8479999999999, 8.149999999999999 to 129.8479999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1087 rect from 129.8879999999999, 8.149999999999999 to 131.8519999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1088 rect from 131.90949999999987, 8.149999999999999 to 132.90949999999987, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1089 rect from 132.9344999999999, 8.149999999999999 to 133.9344999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1090 rect from 133.9804999999999, 8.149999999999999 to 134.9804999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1091 rect from 135.0459999999999, 8.149999999999999 to 136.0459999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1092 rect from 136.08249999999987, 8.149999999999999 to 137.08249999999987, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1093 rect from 137.1609999999999, 8.149999999999999 to 138.1609999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1094 rect from 138.2054999999999, 8.149999999999999 to 139.2054999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1095 rect from 139.24899999999988, 8.149999999999999 to 140.24899999999988, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1096 rect from 140.3004999999999, 8.149999999999999 to 141.3004999999999, 7.949999999999999 fc rgb \"#DD0000\"", - "set object 1097 rect from 19.8815, 7.899999999999999 to 20.8815, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1098 rect from 20.910999999999998, 7.899999999999999 to 21.910999999999998, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1099 rect from 45.50300000000001, 7.899999999999999 to 48.4035, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1100 rect from 48.49, 7.899999999999999 to 53.228999999999985, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1101 rect from 54.33049999999998, 7.899999999999999 to 55.33049999999998, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1102 rect from 57.33799999999997, 7.899999999999999 to 59.19399999999997, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1103 rect from 61.17299999999995, 7.899999999999999 to 62.17299999999995, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1104 rect from 62.20049999999995, 7.899999999999999 to 63.20049999999995, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1105 rect from 63.23999999999996, 7.899999999999999 to 64.23999999999995, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1106 rect from 64.28099999999995, 7.899999999999999 to 65.28099999999995, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1107 rect from 65.31249999999996, 7.899999999999999 to 66.31249999999996, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1108 rect from 66.37099999999995, 7.899999999999999 to 68.35049999999995, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1109 rect from 68.37699999999995, 7.899999999999999 to 70.37999999999994, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1110 rect from 70.39199999999994, 7.899999999999999 to 71.39199999999994, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1111 rect from 71.44949999999994, 7.899999999999999 to 72.44949999999994, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1112 rect from 72.48699999999994, 7.899999999999999 to 73.48699999999994, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1113 rect from 73.55549999999994, 7.899999999999999 to 75.56249999999994, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1114 rect from 75.59449999999994, 7.899999999999999 to 76.59449999999994, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1115 rect from 76.64899999999994, 7.899999999999999 to 77.64899999999994, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1116 rect from 77.68599999999995, 7.899999999999999 to 78.68599999999995, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1117 rect from 78.74099999999993, 7.899999999999999 to 79.74099999999993, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1118 rect from 79.81349999999993, 7.899999999999999 to 80.81349999999993, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1119 rect from 80.83699999999993, 7.899999999999999 to 81.83699999999993, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1120 rect from 81.90449999999993, 7.899999999999999 to 82.90449999999993, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1121 rect from 82.96499999999995, 7.899999999999999 to 86.90099999999993, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1122 rect from 87.97249999999993, 7.899999999999999 to 88.97249999999993, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1123 rect from 88.98349999999992, 7.899999999999999 to 89.98349999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1124 rect from 90.04699999999991, 7.899999999999999 to 91.04699999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1125 rect from 91.11749999999992, 7.899999999999999 to 92.11749999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1126 rect from 92.14499999999992, 7.899999999999999 to 93.14499999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1127 rect from 93.21149999999992, 7.899999999999999 to 94.21149999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1128 rect from 94.24599999999992, 7.899999999999999 to 95.24599999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1129 rect from 95.31249999999991, 7.899999999999999 to 96.31249999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1130 rect from 96.36399999999992, 7.899999999999999 to 97.36399999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1131 rect from 97.39349999999992, 7.899999999999999 to 98.39349999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1132 rect from 98.46299999999991, 7.899999999999999 to 99.46299999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1133 rect from 99.48249999999992, 7.899999999999999 to 100.48249999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1134 rect from 100.56199999999993, 7.899999999999999 to 101.56199999999993, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1135 rect from 101.62199999999993, 7.899999999999999 to 102.62199999999993, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1136 rect from 102.63099999999991, 7.899999999999999 to 103.63099999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1137 rect from 103.67849999999991, 7.899999999999999 to 104.67849999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1138 rect from 104.73949999999991, 7.899999999999999 to 105.73949999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1139 rect from 105.77499999999992, 7.899999999999999 to 106.77499999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1140 rect from 106.85949999999991, 7.899999999999999 to 108.7474999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1141 rect from 109.87949999999991, 7.899999999999999 to 110.87949999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1142 rect from 110.93299999999991, 7.899999999999999 to 111.93299999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1143 rect from 112.00149999999991, 7.899999999999999 to 113.9859999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1144 rect from 114.0484999999999, 7.899999999999999 to 115.0484999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1145 rect from 115.0789999999999, 7.899999999999999 to 116.0789999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1146 rect from 116.14449999999991, 7.899999999999999 to 117.14449999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1147 rect from 117.26799999999992, 7.899999999999999 to 118.26799999999992, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1148 rect from 118.3064999999999, 7.899999999999999 to 119.3064999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1149 rect from 119.3669999999999, 7.899999999999999 to 120.3669999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1150 rect from 120.4439999999999, 7.899999999999999 to 121.4439999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1151 rect from 121.46899999999991, 7.899999999999999 to 122.46899999999991, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1152 rect from 122.52449999999989, 7.899999999999999 to 123.52449999999989, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1153 rect from 123.56399999999988, 7.899999999999999 to 124.56399999999988, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1154 rect from 124.6324999999999, 7.899999999999999 to 125.6324999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1155 rect from 125.6929999999999, 7.899999999999999 to 126.6929999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1156 rect from 126.7234999999999, 7.899999999999999 to 127.7234999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1157 rect from 127.77299999999991, 7.899999999999999 to 128.7729999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1158 rect from 128.8479999999999, 7.899999999999999 to 129.8479999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1159 rect from 129.8879999999999, 7.899999999999999 to 131.8519999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1160 rect from 131.90949999999987, 7.899999999999999 to 132.90949999999987, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1161 rect from 132.9344999999999, 7.899999999999999 to 133.9344999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1162 rect from 133.9804999999999, 7.899999999999999 to 134.9804999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1163 rect from 135.0459999999999, 7.899999999999999 to 136.0459999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1164 rect from 136.08249999999987, 7.899999999999999 to 137.08249999999987, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1165 rect from 137.1609999999999, 7.899999999999999 to 138.1609999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1166 rect from 138.2054999999999, 7.899999999999999 to 139.2054999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1167 rect from 139.24899999999988, 7.899999999999999 to 140.24899999999988, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1168 rect from 140.3004999999999, 7.899999999999999 to 141.3004999999999, 7.699999999999999 fc rgb \"#DD0000\"", - "set object 1169 rect from 19.8815, 7.649999999999999 to 20.8815, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1170 rect from 20.910999999999998, 7.649999999999999 to 21.910999999999998, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1171 rect from 45.50300000000001, 7.649999999999999 to 48.4035, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1172 rect from 48.49, 7.649999999999999 to 53.228999999999985, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1173 rect from 54.33049999999998, 7.649999999999999 to 55.33049999999998, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1174 rect from 57.33799999999997, 7.649999999999999 to 59.19399999999997, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1175 rect from 61.17299999999995, 7.649999999999999 to 62.17299999999995, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1176 rect from 62.20049999999995, 7.649999999999999 to 63.20049999999995, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1177 rect from 63.23999999999996, 7.649999999999999 to 64.23999999999995, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1178 rect from 64.28099999999995, 7.649999999999999 to 65.28099999999995, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1179 rect from 65.31249999999996, 7.649999999999999 to 66.31249999999996, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1180 rect from 66.37099999999995, 7.649999999999999 to 68.35049999999995, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1181 rect from 68.37699999999995, 7.649999999999999 to 70.37999999999994, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1182 rect from 70.39199999999994, 7.649999999999999 to 71.39199999999994, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1183 rect from 71.44949999999994, 7.649999999999999 to 72.44949999999994, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1184 rect from 72.48699999999994, 7.649999999999999 to 73.48699999999994, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1185 rect from 73.55549999999994, 7.649999999999999 to 75.56249999999994, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1186 rect from 75.59449999999994, 7.649999999999999 to 76.59449999999994, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1187 rect from 76.64899999999994, 7.649999999999999 to 77.64899999999994, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1188 rect from 77.68599999999995, 7.649999999999999 to 78.68599999999995, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1189 rect from 78.74099999999993, 7.649999999999999 to 79.74099999999993, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1190 rect from 79.81349999999993, 7.649999999999999 to 80.81349999999993, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1191 rect from 80.83699999999993, 7.649999999999999 to 81.83699999999993, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1192 rect from 81.90449999999993, 7.649999999999999 to 82.90449999999993, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1193 rect from 82.96499999999995, 7.649999999999999 to 86.90099999999993, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1194 rect from 87.97249999999993, 7.649999999999999 to 88.97249999999993, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1195 rect from 88.98349999999992, 7.649999999999999 to 89.98349999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1196 rect from 90.04699999999991, 7.649999999999999 to 91.04699999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1197 rect from 91.11749999999992, 7.649999999999999 to 92.11749999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1198 rect from 92.14499999999992, 7.649999999999999 to 93.14499999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1199 rect from 93.21149999999992, 7.649999999999999 to 94.21149999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1200 rect from 94.24599999999992, 7.649999999999999 to 95.24599999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1201 rect from 95.31249999999991, 7.649999999999999 to 96.31249999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1202 rect from 96.36399999999992, 7.649999999999999 to 97.36399999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1203 rect from 97.39349999999992, 7.649999999999999 to 98.39349999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1204 rect from 98.46299999999991, 7.649999999999999 to 99.46299999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1205 rect from 99.48249999999992, 7.649999999999999 to 100.48249999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1206 rect from 100.56199999999993, 7.649999999999999 to 101.56199999999993, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1207 rect from 101.62199999999993, 7.649999999999999 to 102.62199999999993, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1208 rect from 102.63099999999991, 7.649999999999999 to 103.63099999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1209 rect from 103.67849999999991, 7.649999999999999 to 104.67849999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1210 rect from 104.73949999999991, 7.649999999999999 to 105.73949999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1211 rect from 105.77499999999992, 7.649999999999999 to 106.77499999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1212 rect from 106.85949999999991, 7.649999999999999 to 108.7474999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1213 rect from 109.87949999999991, 7.649999999999999 to 110.87949999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1214 rect from 110.93299999999991, 7.649999999999999 to 111.93299999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1215 rect from 112.00149999999991, 7.649999999999999 to 113.9859999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1216 rect from 114.0484999999999, 7.649999999999999 to 115.0484999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1217 rect from 115.0789999999999, 7.649999999999999 to 116.0789999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1218 rect from 116.14449999999991, 7.649999999999999 to 117.14449999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1219 rect from 117.26799999999992, 7.649999999999999 to 118.26799999999992, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1220 rect from 118.3064999999999, 7.649999999999999 to 119.3064999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1221 rect from 119.3669999999999, 7.649999999999999 to 120.3669999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1222 rect from 120.4439999999999, 7.649999999999999 to 121.4439999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1223 rect from 121.46899999999991, 7.649999999999999 to 122.46899999999991, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1224 rect from 122.52449999999989, 7.649999999999999 to 123.52449999999989, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1225 rect from 123.56399999999988, 7.649999999999999 to 124.56399999999988, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1226 rect from 124.6324999999999, 7.649999999999999 to 125.6324999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1227 rect from 125.6929999999999, 7.649999999999999 to 126.6929999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1228 rect from 126.7234999999999, 7.649999999999999 to 127.7234999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1229 rect from 127.77299999999991, 7.649999999999999 to 128.7729999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1230 rect from 128.8479999999999, 7.649999999999999 to 129.8479999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1231 rect from 129.8879999999999, 7.649999999999999 to 131.8519999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1232 rect from 131.90949999999987, 7.649999999999999 to 132.90949999999987, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1233 rect from 132.9344999999999, 7.649999999999999 to 133.9344999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1234 rect from 133.9804999999999, 7.649999999999999 to 134.9804999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1235 rect from 135.0459999999999, 7.649999999999999 to 136.0459999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1236 rect from 136.08249999999987, 7.649999999999999 to 137.08249999999987, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1237 rect from 137.1609999999999, 7.649999999999999 to 138.1609999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1238 rect from 138.2054999999999, 7.649999999999999 to 139.2054999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1239 rect from 139.24899999999988, 7.649999999999999 to 140.24899999999988, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1240 rect from 140.3004999999999, 7.649999999999999 to 141.3004999999999, 7.449999999999999 fc rgb \"#DD0000\"", - "set object 1241 rect from 64.28099999999995, 10.2 to 65.28099999999995, 9.8 fc rgb \"#00EE00\"", - "set object 1242 rect from 70.39199999999994, 10.2 to 71.39199999999994, 9.8 fc rgb \"#00EE00\"", - "set object 1243 rect from 74.56249999999994, 10.2 to 75.56249999999994, 9.8 fc rgb \"#00EE00\"", - "set object 1244 rect from 75.59449999999994, 10.2 to 76.59449999999994, 9.8 fc rgb \"#00EE00\"", - "set object 1245 rect from 77.68599999999995, 10.2 to 78.68599999999995, 9.8 fc rgb \"#00EE00\"", - "set object 1246 rect from 82.96499999999995, 10.2 to 83.96499999999995, 9.8 fc rgb \"#00EE00\"", - "set object 1247 rect from 85.90099999999993, 10.2 to 86.90099999999993, 9.8 fc rgb \"#00EE00\"", - "set object 1248 rect from 87.97249999999993, 10.2 to 88.97249999999993, 9.8 fc rgb \"#00EE00\"", - "set object 1249 rect from 92.14499999999992, 10.2 to 93.14499999999992, 9.8 fc rgb \"#00EE00\"", - "set object 1250 rect from 95.31249999999991, 10.2 to 96.31249999999991, 9.8 fc rgb \"#00EE00\"", - "set object 1251 rect from 97.39349999999992, 10.2 to 98.39349999999992, 9.8 fc rgb \"#00EE00\"", - "set object 1252 rect from 98.46299999999991, 10.2 to 99.46299999999991, 9.8 fc rgb \"#00EE00\"", - "set object 1253 rect from 99.48249999999992, 10.2 to 100.48249999999992, 9.8 fc rgb \"#00EE00\"", - "set object 1254 rect from 100.56199999999993, 10.2 to 101.56199999999993, 9.8 fc rgb \"#00EE00\"", - "set object 1255 rect from 101.62199999999993, 10.2 to 102.62199999999993, 9.8 fc rgb \"#00EE00\"", - "set object 1256 rect from 102.63099999999991, 10.2 to 103.63099999999991, 9.8 fc rgb \"#00EE00\"", - "set object 1257 rect from 103.67849999999991, 10.2 to 104.67849999999991, 9.8 fc rgb \"#00EE00\"", - "set object 1258 rect from 104.73949999999991, 10.2 to 105.73949999999991, 9.8 fc rgb \"#00EE00\"", - "set object 1259 rect from 105.77499999999992, 10.2 to 106.77499999999992, 9.8 fc rgb \"#00EE00\"", - "set object 1260 rect from 107.7474999999999, 10.2 to 108.7474999999999, 9.8 fc rgb \"#00EE00\"", - "set object 1261 rect from 110.93299999999991, 10.2 to 111.93299999999991, 9.8 fc rgb \"#00EE00\"", - "set object 1262 rect from 115.0789999999999, 10.2 to 116.0789999999999, 9.8 fc rgb \"#00EE00\"", - "set object 1263 rect from 116.14449999999991, 10.2 to 117.14449999999991, 9.8 fc rgb \"#00EE00\"", - "set object 1264 rect from 117.26799999999992, 10.2 to 118.26799999999992, 9.8 fc rgb \"#00EE00\"", - "set object 1265 rect from 118.3064999999999, 10.2 to 119.3064999999999, 9.8 fc rgb \"#00EE00\"", - "set object 1266 rect from 122.52449999999989, 10.2 to 123.52449999999989, 9.8 fc rgb \"#00EE00\"", - "set object 1267 rect from 123.56399999999988, 10.2 to 124.56399999999988, 9.8 fc rgb \"#00EE00\"", - "set object 1268 rect from 124.6324999999999, 10.2 to 125.6324999999999, 9.8 fc rgb \"#00EE00\"", - "set object 1269 rect from 125.6929999999999, 10.2 to 126.6929999999999, 9.8 fc rgb \"#00EE00\"", - "set object 1270 rect from 128.8479999999999, 10.2 to 129.8479999999999, 9.8 fc rgb \"#00EE00\"", - "set object 1271 rect from 129.8879999999999, 10.2 to 131.8519999999999, 9.8 fc rgb \"#00EE00\"", - "set object 1272 rect from 131.90949999999987, 10.2 to 132.90949999999987, 9.8 fc rgb \"#00EE00\"", - "set object 1273 rect from 133.9804999999999, 10.2 to 134.9804999999999, 9.8 fc rgb \"#00EE00\"", - "set object 1274 rect from 136.08249999999987, 10.2 to 137.08249999999987, 9.8 fc rgb \"#00EE00\"", - "set object 1275 rect from 140.3004999999999, 10.2 to 141.3004999999999, 9.8 fc rgb \"#00EE00\"", - "set object 1276 rect from 61.17299999999995, 9.399999999999999 to 62.17299999999995, 9.2 fc rgb \"#00EE00\"", - "set object 1277 rect from 63.23999999999996, 9.399999999999999 to 64.23999999999995, 9.2 fc rgb \"#00EE00\"", - "set object 1278 rect from 65.31249999999996, 9.399999999999999 to 66.31249999999996, 9.2 fc rgb \"#00EE00\"", - "set object 1279 rect from 66.37099999999995, 9.399999999999999 to 67.37099999999995, 9.2 fc rgb \"#00EE00\"", - "set object 1280 rect from 68.37699999999995, 9.399999999999999 to 70.37999999999994, 9.2 fc rgb \"#00EE00\"", - "set object 1281 rect from 70.39199999999994, 9.399999999999999 to 71.39199999999994, 9.2 fc rgb \"#00EE00\"", - "set object 1282 rect from 72.48699999999994, 9.399999999999999 to 73.48699999999994, 9.2 fc rgb \"#00EE00\"", - "set object 1283 rect from 73.55549999999994, 9.399999999999999 to 75.56249999999994, 9.2 fc rgb \"#00EE00\"", - "set object 1284 rect from 76.64899999999994, 9.399999999999999 to 77.64899999999994, 9.2 fc rgb \"#00EE00\"", - "set object 1285 rect from 79.81349999999993, 9.399999999999999 to 80.81349999999993, 9.2 fc rgb \"#00EE00\"", - "set object 1286 rect from 80.83699999999993, 9.399999999999999 to 81.83699999999993, 9.2 fc rgb \"#00EE00\"", - "set object 1287 rect from 81.90449999999993, 9.399999999999999 to 82.90449999999993, 9.2 fc rgb \"#00EE00\"", - "set object 1288 rect from 84.90049999999992, 9.399999999999999 to 86.90099999999993, 9.2 fc rgb \"#00EE00\"", - "set object 1289 rect from 87.97249999999993, 9.399999999999999 to 88.97249999999993, 9.2 fc rgb \"#00EE00\"", - "set object 1290 rect from 92.14499999999992, 9.399999999999999 to 93.14499999999992, 9.2 fc rgb \"#00EE00\"", - "set object 1291 rect from 93.21149999999992, 9.399999999999999 to 94.21149999999992, 9.2 fc rgb \"#00EE00\"", - "set object 1292 rect from 95.31249999999991, 9.399999999999999 to 96.31249999999991, 9.2 fc rgb \"#00EE00\"", - "set object 1293 rect from 96.36399999999992, 9.399999999999999 to 97.36399999999992, 9.2 fc rgb \"#00EE00\"", - "set object 1294 rect from 97.39349999999992, 9.399999999999999 to 98.39349999999992, 9.2 fc rgb \"#00EE00\"", - "set object 1295 rect from 99.48249999999992, 9.399999999999999 to 100.48249999999992, 9.2 fc rgb \"#00EE00\"", - "set object 1296 rect from 100.56199999999993, 9.399999999999999 to 101.56199999999993, 9.2 fc rgb \"#00EE00\"", - "set object 1297 rect from 101.62199999999993, 9.399999999999999 to 102.62199999999993, 9.2 fc rgb \"#00EE00\"", - "set object 1298 rect from 102.63099999999991, 9.399999999999999 to 103.63099999999991, 9.2 fc rgb \"#00EE00\"", - "set object 1299 rect from 103.67849999999991, 9.399999999999999 to 104.67849999999991, 9.2 fc rgb \"#00EE00\"", - "set object 1300 rect from 104.73949999999991, 9.399999999999999 to 105.73949999999991, 9.2 fc rgb \"#00EE00\"", - "set object 1301 rect from 105.77499999999992, 9.399999999999999 to 106.77499999999992, 9.2 fc rgb \"#00EE00\"", - "set object 1302 rect from 110.93299999999991, 9.399999999999999 to 111.93299999999991, 9.2 fc rgb \"#00EE00\"", - "set object 1303 rect from 112.00149999999991, 9.399999999999999 to 113.9859999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1304 rect from 114.0484999999999, 9.399999999999999 to 115.0484999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1305 rect from 116.14449999999991, 9.399999999999999 to 117.14449999999991, 9.2 fc rgb \"#00EE00\"", - "set object 1306 rect from 117.26799999999992, 9.399999999999999 to 118.26799999999992, 9.2 fc rgb \"#00EE00\"", - "set object 1307 rect from 118.3064999999999, 9.399999999999999 to 119.3064999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1308 rect from 120.4439999999999, 9.399999999999999 to 121.4439999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1309 rect from 121.46899999999991, 9.399999999999999 to 122.46899999999991, 9.2 fc rgb \"#00EE00\"", - "set object 1310 rect from 122.52449999999989, 9.399999999999999 to 123.52449999999989, 9.2 fc rgb \"#00EE00\"", - "set object 1311 rect from 124.6324999999999, 9.399999999999999 to 125.6324999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1312 rect from 125.6929999999999, 9.399999999999999 to 126.6929999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1313 rect from 126.7234999999999, 9.399999999999999 to 127.7234999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1314 rect from 129.8879999999999, 9.399999999999999 to 131.8519999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1315 rect from 133.9804999999999, 9.399999999999999 to 134.9804999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1316 rect from 135.0459999999999, 9.399999999999999 to 136.0459999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1317 rect from 136.08249999999987, 9.399999999999999 to 137.08249999999987, 9.2 fc rgb \"#00EE00\"", - "set object 1318 rect from 137.1609999999999, 9.399999999999999 to 138.1609999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1319 rect from 139.24899999999988, 9.399999999999999 to 140.24899999999988, 9.2 fc rgb \"#00EE00\"", - "set object 1320 rect from 140.3004999999999, 9.399999999999999 to 141.3004999999999, 9.2 fc rgb \"#00EE00\"", - "set object 1321 rect from 84.90049999999992, 9.149999999999999 to 85.90049999999992, 8.95 fc rgb \"#00EE00\"", - "set object 1322 rect from 94.24599999999992, 9.149999999999999 to 95.24599999999992, 8.95 fc rgb \"#00EE00\"", - "set object 1323 rect from 95.31249999999991, 9.149999999999999 to 96.31249999999991, 8.95 fc rgb \"#00EE00\"", - "set object 1324 rect from 97.39349999999992, 9.149999999999999 to 98.39349999999992, 8.95 fc rgb \"#00EE00\"", - "set object 1325 rect from 99.48249999999992, 9.149999999999999 to 100.48249999999992, 8.95 fc rgb \"#00EE00\"", - "set object 1326 rect from 100.56199999999993, 9.149999999999999 to 101.56199999999993, 8.95 fc rgb \"#00EE00\"", - "set object 1327 rect from 103.67849999999991, 9.149999999999999 to 104.67849999999991, 8.95 fc rgb \"#00EE00\"", - "set object 1328 rect from 105.77499999999992, 9.149999999999999 to 106.77499999999992, 8.95 fc rgb \"#00EE00\"", - "set object 1329 rect from 114.0484999999999, 9.149999999999999 to 115.0484999999999, 8.95 fc rgb \"#00EE00\"", - "set object 1330 rect from 116.14449999999991, 9.149999999999999 to 117.14449999999991, 8.95 fc rgb \"#00EE00\"", - "set object 1331 rect from 118.3064999999999, 9.149999999999999 to 119.3064999999999, 8.95 fc rgb \"#00EE00\"", - "set object 1332 rect from 119.3669999999999, 9.149999999999999 to 120.3669999999999, 8.95 fc rgb \"#00EE00\"", - "set object 1333 rect from 124.6324999999999, 9.149999999999999 to 125.6324999999999, 8.95 fc rgb \"#00EE00\"", - "set object 1334 rect from 125.6929999999999, 9.149999999999999 to 126.6929999999999, 8.95 fc rgb \"#00EE00\"", - "set object 1335 rect from 129.8879999999999, 9.149999999999999 to 131.8519999999999, 8.95 fc rgb \"#00EE00\"", - "set object 1336 rect from 135.0459999999999, 9.149999999999999 to 136.0459999999999, 8.95 fc rgb \"#00EE00\"", - "set object 1337 rect from 136.08249999999987, 9.149999999999999 to 137.08249999999987, 8.95 fc rgb \"#00EE00\"", - "set object 1338 rect from 139.24899999999988, 9.149999999999999 to 140.24899999999988, 8.95 fc rgb \"#00EE00\"", - "set object 1339 rect from 78.74099999999993, 10.2 to 79.74099999999993, 9.8 fc rgb \"#FF00FF\"", - "set object 1340 rect from 93.21149999999992, 10.2 to 94.21149999999992, 9.8 fc rgb \"#FF00FF\"", - "set object 1341 rect from 112.00149999999991, 10.2 to 113.00149999999991, 9.8 fc rgb \"#FF00FF\"", - "set object 1342 rect from 80.83699999999993, 10.2 to 81.83699999999993, 9.8 fc rgb \"#AA00AA\"", - "set object 1343 rect from 57.33799999999997, 10.2 to 58.33799999999997, 9.8 fc rgb \"#4444AA\"", - "set object 1344 rect from 67.35049999999995, 10.2 to 68.35049999999995, 9.8 fc rgb \"#4444AA\"", - "set object 1345 rect from 71.44949999999994, 10.2 to 72.44949999999994, 9.8 fc rgb \"#4444AA\"", - "set object 1346 rect from 138.2054999999999, 10.2 to 139.2054999999999, 9.8 fc rgb \"#4444AA\"", - "set label \"external \" at 11.092156249999992,11 textcolor rgb \"#3399FF\" font \"Helvetica,9'\"", - "set label \"runtime \" at 19.763812499999986,11 textcolor rgb \"#000000\" font \"Helvetica,9'\"", - "set label \"full code\" at 28.435468749999977,11 textcolor rgb \"#DD0000\" font \"Helvetica,9'\"", - "set label \"opt code \" at 37.10712499999997,11 textcolor rgb \"#00EE00\" font \"Helvetica,9'\"", - "set label \"code stub\" at 45.77878124999996,11 textcolor rgb \"#FF00FF\" font \"Helvetica,9'\"", - "set label \"built-in \" at 54.45043749999995,11 textcolor rgb \"#AA00AA\" font \"Helvetica,9'\"", - "set label \"inl.cache\" at 63.12209374999994,11 textcolor rgb \"#4444AA\" font \"Helvetica,9'\"", - "set label \"reg.exp. \" at 71.79374999999993,11 textcolor rgb \"#0000FF\" font \"Helvetica,9'\"", - "set label \"13 ms\" at 42.32008281250001,5.5 font \"Helvetica,7'\"", - "set label \"1 ms\" at 4.2255828125,1 font \"Helvetica,7'\"", - "set label \"1 ms\" at 10.8385828125,1 font \"Helvetica,7'\"", - "set label \"1 ms\" at 7.8065828125,1 font \"Helvetica,7'\"", - "set label \"1 ms\" at 14.3305828125,1 font \"Helvetica,7'\"", - "set label \"0 ms\" at 18.204082812499998,1 font \"Helvetica,7'\"", - "set label \"0 ms\" at 85.27908281249994,1 font \"Helvetica,7'\"", - "set y2range [0:59.54259090909095]", - "plot '-' using 1:2 axes x1y2 with impulses ls 1", - "41.88650000000001 13.935500000000008", - "3.7920000000000003 1.3375000000000004", - "10.405000000000001 1.113500000000002", - "7.373 1.1035000000000004", - "13.897 1.0205000000000002", - "17.7705 0.7759999999999998", - "84.84549999999993 0.75", - "86.05649999999993 0.6779999999999973", - "87.36899999999991 0.6134999999999877", - "131.1209999999999 0.5784999999999911", - "108.09449999999991 0.5775000000000006", - "60.65699999999996 0.4855000000000018", - "23.1135 0.44849999999999923", - "21.063999999999997 0.4394999999999989", - "56.198999999999984 0.3990000000000009", - "63.024999999999956 0.39799999999999613", - "51.02349999999999 0.39399999999999835", - "110.4839999999999 0.3930000000000007", - "54.951999999999984 0.392000000000003", - "69.49599999999995 0.38750000000000284", - "62.548999999999964 0.38750000000000284", - "89.21399999999991 0.3744999999999976", - "133.4079999999999 0.3645000000000209", - "61.253999999999955 0.3374999999999986", - "104.4429999999999 0.30999999999997385", - "56.52499999999998 0.2734999999999985", - "63.41299999999995 0.26549999999999585", - "102.99499999999992 0.2535000000000025", - "47.3935 0.25250000000000483", - "58.65749999999996 0.24799999999999756", - "23.8365 0.2469999999999999", - "74.63849999999994 0.23149999999998272", - "16.9595 0.22250000000000014", - "85.13799999999992 0.22049999999998704", - "51.78349999999999 0.2085000000000008", - "64.61749999999995 0.20849999999998658", - "70.58649999999994 0.1775000000000091", - "55.66249999999998 0.17649999999999721", - "57.205999999999975 0.1700000000000017", - "75.20099999999994 0.1529999999999916", - "61.464999999999954 0.1524999999999963", - "18.017000000000003 0.14550000000000196", - "67.48749999999995 0.14500000000001023", - "42.05100000000001 0.1385000000000005", - "25.4055 0.13799999999999812", - "46.9925 0.1314999999999955", - "18.1735 0.12750000000000128", - "109.38599999999991 0.12000000000000455", - "59.042999999999964 0.1180000000000021", - "56.97649999999997 0.117999999999995", - "22.3815 0.11400000000000077", - "58.07699999999997 0.1039999999999992", - "23.336000000000002 0.10300000000000153", - "21.8475 0.10050000000000026", - "56.845999999999975 0.09949999999999903", - "46.28150000000001 0.09649999999999892", - "121.0104999999999 0.09099999999999397", - "25.507500000000004 0.08800000000000452", - "52.448999999999984 0.08599999999999852", - "46.74 0.08499999999999375", - "57.64849999999997 0.08249999999999602", - "58.316999999999965 0.08099999999999596", - "46.37200000000001 0.08050000000000068", - "23.506 0.08050000000000068", - "42.70600000000002 0.07900000000000063", - "129.4124999999999 0.07800000000000296", - "20.5975 0.07750000000000057", - "56.634499999999974 0.07749999999999346", - "19.0685 0.07649999999999935", - "21.363 0.07549999999999812", - "49.9695 0.07500000000000284", - "24.544000000000004 0.07400000000000162", - "21.727 0.07349999999999923", - "58.21549999999997 0.07249999999999801", - "44.917000000000016 0.07200000000000273", - "25.591500000000003 0.07199999999999918", - "50.62049999999999 0.07150000000000034", - "88.82299999999992 0.07099999999999795", - "46.621 0.07099999999999795", - "78.23049999999994 0.0660000000000025", - "46.060500000000005 0.0659999999999954", - "50.43099999999999 0.06400000000000006", - "129.48849999999987 0.06349999999997635", - "45.55900000000001 0.06150000000000233", - "19.152 0.06050000000000111", - "57.33299999999997 0.060499999999997556", - "50.20799999999999 0.060499999999997556", - "68.76649999999995 0.06049999999999045", - "23.5775 0.059499999999999886", - "47.135000000000005 0.05850000000000222", - "72.28049999999995 0.05849999999999511", - "45.626500000000014 0.05750000000000455", - "21.2695 0.057500000000000995", - "50.14149999999999 0.05749999999999744", - "91.96649999999993 0.056500000000013983", - "83.63999999999993 0.05649999999999977", - "57.934999999999974 0.05649999999999977", - "132.92249999999987 0.05649999999997135", - "67.59199999999996 0.056000000000011596", - "99.92199999999991 0.055499999999995", - "59.69699999999996 0.055499999999995", - "45.84850000000001 0.054999999999999716", - "56.69449999999998 0.05449999999999733", - "97.26099999999992 0.05350000000001387", - "112.6564999999999 0.05349999999999966", - "45.92300000000001 0.05349999999999966", - "136.19799999999987 0.05349999999998545", - "47.465 0.05250000000000199", - "105.93349999999991 0.052499999999994884", - "65.61699999999995 0.052499999999994884", - "47.5235 0.051499999999997215", - "102.61199999999991 0.05149999999999011", - "138.98049999999986 0.0514999999999759", - "123.8254999999999 0.050500000000013756", - "75.46799999999995 0.04950000000000898", - "45.76150000000001 0.049500000000001876", - "94.6054999999999 0.04949999999998056", - "118.19199999999991 0.048500000000004206", - "115.4124999999999 0.048500000000004206", - "45.97850000000001 0.048500000000004206", - "49.780499999999996 0.0484999999999971", - "42.795000000000016 0.04800000000000182", - "126.59899999999989 0.04749999999999943", - "51.56899999999999 0.04650000000000176", - "80.95049999999993 0.04649999999999466", - "140.9779999999999 0.04599999999999227", - "59.93649999999996 0.04549999999999699", - "46.13100000000001 0.04449999999999932", - "51.91599999999998 0.04299999999999926", - "45.70300000000001 0.042499999999996874", - "49.4955 0.04100000000000392", - "45.361500000000014 0.04099999999999682", - "70.35799999999995 0.04050000000000864", - "49.726 0.040500000000001535", - "45.08700000000001 0.03999999999999915", - "45.13500000000002 0.03900000000000858", - "52.15399999999998 0.0379999999999967", - "42.88200000000001 0.0379999999999967", - "24.430500000000002 0.03750000000000142", - "60.08349999999996 0.036499999999996646", - "23.907 0.036499999999996646", - "50.32899999999999 0.036000000000001364", - "42.31450000000002 0.034000000000006025", - "45.02900000000001 0.032999999999994145", - "23.189 0.031500000000001194", - "21.49 0.03049999999999997", - "58.12149999999997 0.030000000000001137", - "45.41750000000002 0.030000000000001137", - "42.83300000000001 0.030000000000001137", - "140.89599999999987 0.028999999999996362", - "2.4490000000000003 0.028500000000000636", - "52.31499999999998 0.027999999999998693", - "45.17200000000002 0.027999999999998693", - "51.30249999999999 0.027000000000001023", - "49.8685 0.027000000000001023", - "43.632500000000014 0.027000000000001023", - "21.175 0.026499999999998636", - "44.82200000000002 0.026000000000003354", - "22.528 0.02599999999999625", - "49.82449999999999 0.02499999999999858", - "21.1335 0.024499999999999744", - "21.588 0.021500000000003183", - "21.525499999999997 0.02049999999999841", - "23.3945 0.018499999999999517", - "47.057500000000005 0.018000000000000682", - "22.570999999999998 0.01799999999999713", - "24.458 0.017499999999998295", - "22.4625 0.017499999999998295", - "141.04699999999988 0.016999999999995907", - "22.416999999999998 0.016500000000000625", - "45.44850000000002 0.015999999999998238", - "21.619500000000002 0.015499999999999403", - "109.41799999999989 0.015499999999988745", - "22.486 0.014500000000001734", - "50.53499999999999 0.013999999999995794", - "52.338999999999984 0.012000000000000455", - "45.489500000000014 0.012000000000000455", - "45.470500000000015 0.00999999999999801", - "50.007 0.008500000000005059", - "23.9205 0.008499999999997954", - "10.43 0.006499999999999062", - "13.915999999999999 0.005499999999999616", - "7.3919999999999995 0.005499999999999616", - "3.8129999999999997 0.005499999999999616", - "121.0314999999999 0.00549999999999784", - "78.23649999999994 0.0005000000000023874", - "e", - "# start: 2.4204999999999997", - "# end: 141.1669999999999", - "# objects: 1547" -] diff --git a/implementation-contributed/v8/mjsunit/tools/profviz-test.log b/implementation-contributed/v8/mjsunit/tools/profviz-test.log deleted file mode 100644 index 720def9d5a7..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/profviz-test.log +++ /dev/null @@ -1,2613 +0,0 @@ -shared-library,/usr/local/google/home/yangguo/v8/out/ia32.release/d8,0x08048000,0x08557000 -shared-library,2506f000-25070000,0x2506f000,0x25070000 -shared-library,31e60000-31e61000,0x31e60000,0x31e61000 -shared-library,35dff000-35e00000,0x35dff000,0x35e00000 -shared-library,48218000-48219000,0x48218000,0x48219000 -shared-library,4af7d000-4af7e000,0x4af7d000,0x4af7e000 -shared-library,55bf2000-55bf3000,0x55bf2000,0x55bf3000 -shared-library,/lib/i386-linux-gnu/libc-2.15.so,0xf7450000,0xf75f3000 -shared-library,/lib/i386-linux-gnu/libpthread-2.15.so,0xf75f9000,0xf7610000 -shared-library,/lib/i386-linux-gnu/libgcc_s.so.1,0xf7614000,0xf7630000 -shared-library,/lib/i386-linux-gnu/libm-2.15.so,0xf7633000,0xf765d000 -shared-library,/usr/lib/i386-linux-gnu/libstdc++.so.6.0.16,0xf765f000,0xf7737000 -shared-library,[vdso],0xf776d000,0xf776e000 -shared-library,/lib/i386-linux-gnu/ld-2.15.so,0xf776e000,0xf778e000 -profiler,begin,1 -timer-event-start,V8.GCCompactor,2425 -timer-event-start,V8.External,2458 -timer-event-end,V8.External,2468 -timer-event-start,V8.External,3810 -timer-event-end,V8.External,3830 -timer-event-end,V8.GCCompactor,3840 -code-creation,Stub,2,0x2b80a000,484,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80a200,622,CEntryStub -code-creation,Stub,2,0x2b80a480,540,ArrayNArgumentsConstructorStub -code-creation,Stub,13,0x2b80a6a0,116,CompareICStub -code-creation,Stub,2,0x2b80a720,1428,RecordWriteStub -code-creation,Stub,2,0x2b80acc0,97,StoreBufferOverflowStub -code-creation,Stub,2,0x2b80ad40,611,RecordWriteStub -code-creation,Stub,2,0x2b80afc0,76,InterruptStub -code-creation,Stub,13,0x2b80b020,104,CompareICStub -code-creation,Stub,2,0x2b80b0a0,130,ArgumentsAccessStub -code-creation,Stub,2,0x2b80b140,160,FastNewContextStub -code-creation,Stub,2,0x2b80b1e0,79,StubFailureTrampolineStub -code-creation,Stub,2,0x2b80b240,704,ArraySingleArgumentConstructorStub -code-creation,Stub,14,0x2b80b500,93,CompareNilICStub -code-creation,Stub,2,0x2b80b560,289,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80b6a0,664,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80b940,740,NameDictionaryLookupStub -code-creation,Stub,13,0x2b80bc40,156,CompareICStub -code-creation,Stub,2,0x2b80bce0,611,RecordWriteStub -code-creation,Stub,13,0x2b80bf60,122,CompareICStub -code-creation,Stub,2,0x2b80bfe0,217,CreateAllocationSiteStub -code-creation,Stub,2,0x2b80c0c0,1456,RecordWriteStub -code-creation,Stub,2,0x2b80c680,245,StoreArrayLiteralElementStub -code-creation,Stub,2,0x2b80c780,1448,RecordWriteStub -code-creation,Stub,2,0x2b80cd40,1471,StringAddStub -code-creation,Stub,2,0x2b80d300,1448,RecordWriteStub -code-creation,Stub,2,0x2b80d8c0,1453,RecordWriteStub -code-creation,Stub,12,0x2b80de80,146,BinaryOpStub -code-creation,Stub,2,0x2b80df20,640,InternalArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80e1a0,517,ArrayConstructorStub -code-creation,Stub,2,0x2b80e3c0,305,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80e500,305,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80e640,349,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80e7a0,349,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80e900,289,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80ea40,680,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80ed00,692,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80efc0,704,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80f280,664,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80f520,488,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80f720,540,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80f940,432,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80fb00,432,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80fcc0,1453,RecordWriteStub -code-creation,Stub,2,0x2b810280,400,InternalArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b810420,611,RecordWriteStub -code-creation,Stub,2,0x2b8106a0,213,JSEntryStub -code-creation,Stub,13,0x2b810780,104,CompareICStub -code-creation,Stub,12,0x2b810800,124,BinaryOpStub -code-creation,Stub,2,0x2b810880,1447,StringAddStub -code-creation,Stub,2,0x2b810e40,640,InternalArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b8110c0,400,InternalArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b811260,261,FastCloneShallowArrayStub -code-creation,Stub,12,0x2b811380,88,BinaryOpStub -code-creation,Stub,2,0x2b8113e0,76,StackCheckStub -code-creation,Stub,2,0x2b811440,1437,RecordWriteStub -code-creation,Stub,2,0x2b8119e0,289,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b811b20,331,CallFunctionStub -code-creation,Builtin,3,0x2b811c80,174,A builtin from the snapshot -code-creation,Stub,14,0x2b811d40,124,CompareNilICStub -code-creation,Stub,2,0x2b811dc0,1420,RecordWriteStub -code-creation,Stub,13,0x2b812360,104,CompareICStub -code-creation,Stub,2,0x2b8123e0,76,LoadFieldStub -code-creation,Stub,13,0x2b812440,104,CompareICStub -code-creation,Stub,2,0x2b8124c0,195,NumberToStringStub -code-creation,Stub,15,0x2b8125a0,148,ToBooleanStub -code-creation,Stub,2,0x2b812640,351,ArgumentsAccessStub -code-creation,Stub,2,0x2b8127a0,664,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b812a40,1420,RecordWriteStub -code-creation,Stub,12,0x2b812fe0,133,BinaryOpStub -code-creation,Stub,2,0x2b813080,1664,StringAddStub -code-creation,Stub,2,0x2b813700,1661,StringAddStub -code-creation,Stub,2,0x2b813d80,472,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b813f60,80,StubFailureTrampolineStub -code-creation,Stub,13,0x2b813fc0,104,CompareICStub -code-creation,Stub,2,0x2b814040,331,CallFunctionStub -code-creation,Stub,2,0x2b8141a0,660,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b814440,1433,RecordWriteStub -code-creation,Stub,12,0x2b8149e0,146,BinaryOpStub -code-creation,Stub,2,0x2b814a80,271,CallConstructStub -code-creation,Stub,15,0x2b814ba0,136,ToBooleanStub -code-creation,Stub,2,0x2b814c40,468,ArrayNArgumentsConstructorStub -code-creation,Stub,15,0x2b814e20,128,ToBooleanStub -code-creation,Stub,2,0x2b814ea0,163,FastNewContextStub -code-creation,Stub,2,0x2b814f60,1425,RecordWriteStub -code-creation,LoadIC,5,0x2b815500,145,A load IC from the snapshot -code-creation,Builtin,3,0x2b8155a0,83,A builtin from the snapshot -code-creation,Stub,12,0x2b815600,88,BinaryOpStub -code-creation,Stub,2,0x2b815660,1433,RecordWriteStub -code-creation,Stub,2,0x2b815c00,331,CallFunctionStub -code-creation,Stub,13,0x2b815d60,104,CompareICStub -code-creation,Stub,2,0x2b815de0,304,FastNewClosureStub -code-creation,Stub,2,0x2b815f20,285,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b816040,1433,RecordWriteStub -code-creation,Stub,2,0x2b8165e0,233,InternalArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b8166e0,740,NameDictionaryLookupStub -code-creation,Stub,2,0x2b8169e0,740,NameDictionaryLookupStub -code-creation,Stub,12,0x2b816ce0,88,BinaryOpStub -code-creation,Stub,2,0x2b816d40,216,StringCompareStub -code-creation,Stub,15,0x2b816e20,93,ToBooleanStub -code-creation,Stub,12,0x2b816e80,88,BinaryOpStub -code-creation,Stub,2,0x2b816ee0,1433,RecordWriteStub -code-creation,Stub,12,0x2b817480,155,BinaryOpStub -code-creation,Stub,2,0x2b817520,169,InternalArrayConstructorStub -code-creation,Stub,2,0x2b8175e0,233,InternalArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b8176e0,1433,RecordWriteStub -code-creation,Stub,12,0x2b817c80,88,BinaryOpStub -code-creation,Stub,2,0x2b817ce0,328,KeyedLoadElementStub -code-creation,Stub,2,0x2b817e40,1461,RecordWriteStub -code-creation,Stub,2,0x2b818400,98,ToNumberStub -code-creation,Stub,13,0x2b818480,122,CompareICStub -code-creation,Stub,12,0x2b818500,124,BinaryOpStub -code-creation,Stub,2,0x2b818580,148,CallConstructStub -code-creation,Stub,13,0x2b818620,491,CompareICStub -code-creation,Stub,2,0x2b818820,213,JSEntryStub -code-creation,CallIC,7,0x2b818900,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b8189c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818a80,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818b40,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818c00,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818cc0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818d80,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b818e40,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818f00,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b818fc0,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b819080,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819140,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819200,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b8192c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819380,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819440,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b819500,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b8195c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819680,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b819740,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819800,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b8198c0,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b819980,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819a40,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819b00,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b819bc0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819c80,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819d40,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b819e00,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819ec0,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b819f80,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a040,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a100,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a1c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a280,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a340,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a400,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a4c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a580,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a640,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a700,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a7c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a880,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a940,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81aa00,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81aac0,180,A call IC from the snapshot -code-creation,Builtin,3,0x2b81ab80,107,A builtin from the snapshot -code-creation,Builtin,3,0x2b81ac00,105,A builtin from the snapshot -code-creation,Builtin,3,0x2b81ac80,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b81ace0,432,A builtin from the snapshot -code-creation,Builtin,3,0x2b81afc0,101,A builtin from the snapshot -code-creation,LoadIC,5,0x2b81b1a0,83,A load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b81bf00,83,A keyed load IC from the snapshot -code-creation,StoreIC,9,0x2b81c680,84,A store IC from the snapshot -code-creation,Builtin,3,0x2b8262e0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826340,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8263a0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826400,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826460,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8264c0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826520,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826580,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8265e0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826640,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8266a0,80,A builtin from the snapshot -code-creation,Builtin,3,0x2b826700,80,A builtin from the snapshot -code-creation,Builtin,3,0x2b826760,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8267c0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826820,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826880,75,A builtin from the snapshot -code-creation,Builtin,3,0x2b8268e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b826960,491,A builtin from the snapshot -code-creation,Builtin,3,0x2b826b60,406,A builtin from the snapshot -code-creation,Builtin,3,0x2b826d00,157,A builtin from the snapshot -code-creation,Builtin,3,0x2b826da0,131,A builtin from the snapshot -code-creation,Builtin,3,0x2b826e40,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b826ec0,107,A builtin from the snapshot -code-creation,Builtin,3,0x2b826f40,143,A builtin from the snapshot -code-creation,Builtin,3,0x2b826fe0,143,A builtin from the snapshot -code-creation,Builtin,3,0x2b827080,143,A builtin from the snapshot -code-creation,Builtin,3,0x2b827120,94,A builtin from the snapshot -code-creation,Builtin,3,0x2b827180,91,A builtin from the snapshot -code-creation,Builtin,3,0x2b8271e0,83,A builtin from the snapshot -code-creation,Builtin,3,0x2b827240,83,A builtin from the snapshot -code-creation,Builtin,3,0x2b8272a0,83,A builtin from the snapshot -code-creation,Builtin,3,0x2b827300,84,A builtin from the snapshot -code-creation,Builtin,3,0x2b827360,84,A builtin from the snapshot -code-creation,Builtin,3,0x2b8273c0,84,A builtin from the snapshot -code-creation,Builtin,3,0x2b827420,84,A builtin from the snapshot -code-creation,Builtin,3,0x2b827480,84,A builtin from the snapshot -code-creation,LoadIC,5,0x2b8274e0,83,A load IC from the snapshot -code-creation,LoadIC,5,0x2b827540,313,A load IC from the snapshot -code-creation,LoadIC,5,0x2b827680,266,A load IC from the snapshot -code-creation,LoadIC,5,0x2b8277a0,80,A load IC from the snapshot -code-creation,LoadIC,5,0x2b827800,83,A load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b827860,83,A keyed load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b8278c0,896,A keyed load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b827c40,499,A keyed load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b827e40,144,A keyed load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b827ee0,216,A keyed load IC from the snapshot -code-creation,StoreIC,9,0x2b827fc0,365,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828140,293,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828280,88,A store IC from the snapshot -code-creation,StoreIC,9,0x2b8282e0,88,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828340,88,A store IC from the snapshot -code-creation,StoreIC,9,0x2b8283a0,84,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828400,365,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828580,293,A store IC from the snapshot -code-creation,StoreIC,9,0x2b8286c0,88,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828720,82,A store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b828780,84,A keyed store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b8287e0,2082,A keyed store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b829020,84,A keyed store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b829080,2082,A keyed store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b8298c0,286,A keyed store IC from the snapshot -code-creation,Builtin,3,0x2b8299e0,355,A builtin from the snapshot -code-creation,Builtin,3,0x2b829b60,416,A builtin from the snapshot -code-creation,Builtin,3,0x2b829d00,376,A builtin from the snapshot -code-creation,Builtin,3,0x2b829e80,388,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a020,78,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a080,83,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a0e0,357,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a260,359,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a3e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a460,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a4e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a560,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a5e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a660,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a6e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a760,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a7e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a860,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a8e0,104,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a960,106,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a9e0,110,A builtin from the snapshot -code-creation,Builtin,3,0x2b82aa60,112,A builtin from the snapshot -code-creation,LoadIC,5,0x2b82aae0,106,A load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b82ab60,106,A keyed load IC from the snapshot -code-creation,StoreIC,9,0x2b82abe0,108,A store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b82ac60,108,A keyed store IC from the snapshot -code-creation,Stub,14,0x2b82ace0,104,CallFunctionStub -code-creation,Builtin,3,0x2b82ad60,65,A builtin from the snapshot -code-creation,Builtin,3,0x2b82adc0,93,A builtin from the snapshot -timer-event-start,V8.GCCompactor,6301 -timer-event-start,V8.External,6312 -timer-event-end,V8.External,6321 -timer-event-start,V8.External,7418 -timer-event-end,V8.External,7436 -timer-event-end,V8.GCCompactor,7446 -code-creation,LazyCompile,3,0x2b81ac80,77,Empty :1,0x4420e5cc, -code-creation,LazyCompile,0,0x2b81aea0,264, native uri.js:1,0x4420e668, -code-creation,LazyCompile,0,0x2b81b040,336,SetUpUri native uri.js:442,0x4420f5b4, -code-creation,LazyCompile,0,0x2b81b200,1880, native messages.js:1,0x4420f670, -code-creation,LazyCompile,0,0x2b81b960,1429,FormatString native messages.js:187,0x4420f918, -code-creation,LazyCompile,0,0x2b81bf60,280,MakeGenericError native messages.js:282,0x44211088, -code-creation,LazyCompile,0,0x2b81c080,264,FormatMessage native messages.js:301,0x4421113c, -code-creation,LazyCompile,0,0x2b81c1a0,200,MakeRangeError native messages.js:335,0x442112f0, -code-creation,LazyCompile,0,0x2b81c280,1012,captureStackTrace native messages.js:1123,0x44212280, -code-creation,LazyCompile,0,0x2b81c6e0,460,SetUpError native messages.js:1173,0x44212410, -code-creation,LazyCompile,0,0x2b81c8c0,692,SetUpError.a native messages.js:1176,0x442124c0, -code-creation,LazyCompile,0,0x2b81cb80,164,d native messages.js:1192,0x44212548, -code-creation,LazyCompile,0,0x2b81cc40,360, native messages.js:1202,0x442125d0, -code-creation,LazyCompile,0,0x2b81cc40,360,Error,0x44212698, -code-creation,LazyCompile,0,0x2b81cc40,360,TypeError,0x442126f8, -code-creation,LazyCompile,0,0x2b81cc40,360,RangeError,0x44212758, -code-creation,LazyCompile,0,0x2b81cc40,360,SyntaxError,0x442127b8, -code-creation,LazyCompile,0,0x2b81cc40,360,ReferenceError,0x44212818, -code-creation,LazyCompile,0,0x2b81cc40,360,EvalError,0x44212878, -code-creation,LazyCompile,0,0x2b81cc40,360,URIError,0x442128d8, -code-creation,LazyCompile,0,0x2b81cdc0,424,SetUpStackOverflowBoilerplate native messages.js:1301,0x44212a74, -code-creation,LazyCompile,0,0x2b81cf80,216, native messages.js:294,0x44214b3c, -code-creation,LazyCompile,0,0x2b81d060,408, native string.js:1,0x44214c2c, -code-creation,LazyCompile,0,0x2b81d200,380,StringConstructor native string.js:35,0x44214e2c, -code-creation,LazyCompile,0,0x2b81d380,1132,SetUpString native string.js:962,0x44216ea8, -code-creation,LazyCompile,0,0x2b81d800,616, native date.js:1,0x44216fa0, -code-creation,LazyCompile,0,0x2b81da80,1392,DateConstructor native date.js:141,0x442182bc, -code-creation,LazyCompile,0,0x2b81e000,1396,SetUpDate native date.js:761,0x44219944, -code-creation,LazyCompile,0,0x2b81e580,268, native array.js:1,0x44219b20, -code-creation,LazyCompile,0,0x2b81e6a0,2272,SetUpArray native array.js:1591,0x4421c6ac, -code-creation,LazyCompile,0,0x2b81ef80,292,SetUpArray.b native array.js:1605,0x4421c814, -code-creation,LazyCompile,0,0x2b81f0c0,1084, native v8natives.js:1,0x4421c904, -code-creation,LazyCompile,0,0x2b81f500,561,InstallFunctions native v8natives.js:46,0x4421cc1c, -code-creation,LazyCompile,0,0x2b81f740,304,InstallGetterSetter native v8natives.js:72,0x4421ea1c, -code-creation,LazyCompile,0,0x2b81f880,814,SetUpLockedPrototype native v8natives.js:87,0x4421eab4, -code-creation,LazyCompile,0,0x2b81fbc0,452,SetUpGlobal native v8natives.js:197,0x4421ed3c, -code-creation,LazyCompile,0,0x2b81fda0,404,hasOwnProperty native v8natives.js:251,0x4421eee4, -code-creation,LazyCompile,0,0x2b81ff40,308,ObjectConstructor native v8natives.js:1371,0x442200b4, -code-creation,LazyCompile,0,0x2b820080,1044,SetUpObject native v8natives.js:1385,0x44220140, -code-creation,LazyCompile,0,0x2b8204a0,292,BooleanConstructor native v8natives.js:1437,0x442201c8, -code-creation,LazyCompile,0,0x2b8205e0,448,SetUpBoolean native v8natives.js:1472,0x44220314, -code-creation,LazyCompile,0,0x2b8207a0,336,NumberConstructor native v8natives.js:1491,0x442203ac, -code-creation,LazyCompile,0,0x2b820900,924,SetUpNumber native v8natives.js:1635,0x4422073c, -code-creation,LazyCompile,0,0x2b820ca0,440,FunctionConstructor native v8natives.js:1813,0x44220954, -code-creation,LazyCompile,0,0x2b820e60,380,SetUpFunction native v8natives.js:1826,0x442209f8, -code-creation,LazyCompile,0,0x2b820fe0,264, native json.js:1,0x44221238, -code-creation,LazyCompile,0,0x2b821100,260,SetUpJSON native json.js:219,0x44221940, -code-creation,LazyCompile,0,0x2b821220,340, native math.js:1,0x44221a5c, -code-creation,LazyCompile,0,0x2b821380,164,MathConstructor native math.js:40,0x44221ba4, -code-creation,LazyCompile,0,0x2b821440,1112,SetUpMath native math.js:226,0x4422283c, -code-creation,LazyCompile,0,0x2b8218a0,404, native regexp.js:1,0x442228f8, -code-creation,LazyCompile,0,0x2b821a40,324,RegExpConstructor native regexp.js:90,0x44223264, -code-creation,LazyCompile,0,0x2b821ba0,224,RegExpMakeCaptureGetter native regexp.js:360,0x44223784, -code-creation,LazyCompile,0,0x2b821c80,1561,SetUpRegExp native regexp.js:400,0x44223878, -code-creation,LazyCompile,0,0x2b8222a0,280, native apinatives.js:1,0x44223b98, -code-creation,LazyCompile,0,0x2b8223c0,612, native runtime.js:1,0x44223e30, -code-creation,LazyCompile,0,0x2b822640,1728,EQUALS native runtime.js:54,0x44224078, -code-creation,LazyCompile,0,0x2b822d00,376,STRICT_EQUALS native runtime.js:108,0x44224c18, -code-creation,LazyCompile,0,0x2b822e80,924,COMPARE native runtime.js:128,0x44224ca4, -code-creation,LazyCompile,0,0x2b823220,596,ADD native runtime.js:171,0x44224d44, -code-creation,LazyCompile,0,0x2b823480,572,STRING_ADD_LEFT native runtime.js:191,0x44224dd8, -code-creation,LazyCompile,0,0x2b8236c0,580,STRING_ADD_RIGHT native runtime.js:206,0x44224e64, -code-creation,LazyCompile,0,0x2b823920,296,SUB native runtime.js:222,0x44224ef4, -code-creation,LazyCompile,0,0x2b823a60,296,MUL native runtime.js:230,0x44224f84, -code-creation,LazyCompile,0,0x2b823ba0,296,DIV native runtime.js:238,0x44225014, -code-creation,LazyCompile,0,0x2b823ce0,296,MOD native runtime.js:246,0x442250a4, -code-creation,LazyCompile,0,0x2b823e20,296,BIT_OR native runtime.js:260,0x44225134, -code-creation,LazyCompile,0,0x2b823f60,384,BIT_AND native runtime.js:268,0x442251c4, -code-creation,LazyCompile,0,0x2b8240e0,296,BIT_XOR native runtime.js:290,0x44225254, -code-creation,LazyCompile,0,0x2b824220,244,UNARY_MINUS native runtime.js:298,0x442252e4, -code-creation,LazyCompile,0,0x2b824320,244,BIT_NOT native runtime.js:305,0x44225370, -code-creation,LazyCompile,0,0x2b824420,296,SHL native runtime.js:312,0x442253fc, -code-creation,LazyCompile,0,0x2b824560,384,SAR native runtime.js:320,0x4422548c, -code-creation,LazyCompile,0,0x2b8246e0,296,SHR native runtime.js:342,0x4422551c, -code-creation,LazyCompile,0,0x2b824820,228,DELETE native runtime.js:356,0x442255ac, -code-creation,LazyCompile,0,0x2b824920,368,IN native runtime.js:362,0x4422563c, -code-creation,LazyCompile,0,0x2b824aa0,644,INSTANCE_OF native runtime.js:375,0x442256e8, -code-creation,LazyCompile,0,0x2b824d40,236,FILTER_KEY native runtime.js:406,0x442257b8, -code-creation,LazyCompile,0,0x2b824e40,380,CALL_NON_FUNCTION native runtime.js:413,0x44225848, -code-creation,LazyCompile,0,0x2b824fc0,380,CALL_NON_FUNCTION_AS_CONSTRUCTOR native runtime.js:422,0x442258f4, -code-creation,LazyCompile,0,0x2b825140,288,CALL_FUNCTION_PROXY native runtime.js:431,0x442259a0, -code-creation,LazyCompile,0,0x2b825260,260,CALL_FUNCTION_PROXY_AS_CONSTRUCTOR native runtime.js:439,0x44225a38, -code-creation,LazyCompile,0,0x2b825380,912,APPLY_PREPARE native runtime.js:446,0x44225acc, -code-creation,LazyCompile,0,0x2b825720,232,APPLY_OVERFLOW native runtime.js:484,0x44225b9c, -code-creation,LazyCompile,0,0x2b825820,188,TO_OBJECT native runtime.js:490,0x44225c38, -code-creation,LazyCompile,0,0x2b8258e0,188,TO_NUMBER native runtime.js:496,0x44225cc0, -code-creation,LazyCompile,0,0x2b8259a0,188,TO_STRING native runtime.js:502,0x44225d48, -code-creation,LazyCompile,0,0x2b825a60,600,ToPrimitive native runtime.js:514,0x44225dd0, -code-creation,LazyCompile,0,0x2b825cc0,404,ToBoolean native runtime.js:526,0x44225e60, -code-creation,LazyCompile,0,0x2b825e60,504,ToNumber native runtime.js:536,0x44225eec, -code-creation,LazyCompile,0,0x2b826060,416,ToString native runtime.js:561,0x44225fd8, -code-creation,LazyCompile,0,0x2b826200,220,ToName native runtime.js:578,0x442260c4, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x44227108, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x44227168, -code-creation,LazyCompile,3,0x2b8262e0,77,OpaqueReference,0x442271c8, -code-creation,LazyCompile,3,0x2b8262e0,77,JSON,0x44227228, -code-creation,LazyCompile,0,0x2b8204a0,292,Boolean,0x44227288, -code-creation,LazyCompile,3,0x2b82a080,83,Array,0x442272e8, -code-creation,LazyCompile,3,0x2b826460,77,pop,0x44227348, -code-creation,LazyCompile,3,0x2b826400,77,push,0x442273a8, -code-creation,LazyCompile,3,0x2b826640,77,concat,0x44227408, -code-creation,LazyCompile,3,0x2b8264c0,77,shift,0x44227468, -code-creation,LazyCompile,3,0x2b826520,77,unshift,0x442274c8, -code-creation,LazyCompile,3,0x2b826580,77,slice,0x44227528, -code-creation,LazyCompile,3,0x2b8265e0,77,splice,0x44227588, -code-creation,LazyCompile,0,0x2b8207a0,336,Number,0x442275e8, -code-creation,LazyCompile,3,0x2b82a020,78,InternalArray,0x44227648, -code-creation,LazyCompile,3,0x2b82a020,78,InternalPackedArray,0x442276b4, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x44227714, -code-creation,LazyCompile,0,0x2b821a40,324,RegExp,0x44227774, -code-creation,LazyCompile,0,0x2b81da80,1392,Date,0x442277d4, -code-creation,LazyCompile,0,0x2b820ca0,440,Function,0x44227834, -code-creation,LazyCompile,0,0x2b81d200,380,String,0x44227894, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x442278f4, -code-creation,LazyCompile,0,0x2b81cf80,216,Script,0x44227960, -code-creation,LazyCompile,0,0x2b81ff40,308,Object,0x44227a00, -code-creation,LazyCompile,3,0x2b829d00,376,call,0x44227a60, -code-creation,LazyCompile,3,0x2b829e80,388,apply,0x44227ac0, -code-creation,LazyCompile,3,0x2b8262e0,77,Arguments,0x44227b20, -code-creation,LazyCompile,3,0x2b826820,77,ThrowTypeError,0x44227b80, -code-creation,LazyCompile,3,0x2b826760,77,,0x44227be0, -code-creation,LazyCompile,3,0x2b8267c0,77,,0x44227c40, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x44227ca0, -timer-event-start,V8.GCCompactor,9350 -timer-event-start,V8.External,9362 -timer-event-end,V8.External,9370 -timer-event-start,V8.External,10477 -timer-event-end,V8.External,10500 -timer-event-end,V8.GCCompactor,10511 -code-creation,Stub,2,0x2b80a000,484,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80a200,622,CEntryStub -code-creation,Stub,2,0x2b80a480,540,ArrayNArgumentsConstructorStub -code-creation,Stub,13,0x2b80a6a0,116,CompareICStub -code-creation,Stub,2,0x2b80a720,1428,RecordWriteStub -code-creation,Stub,2,0x2b80acc0,97,StoreBufferOverflowStub -code-creation,Stub,2,0x2b80ad40,611,RecordWriteStub -code-creation,Stub,2,0x2b80afc0,76,InterruptStub -code-creation,Stub,13,0x2b80b020,104,CompareICStub -code-creation,Stub,2,0x2b80b0a0,130,ArgumentsAccessStub -code-creation,Stub,2,0x2b80b140,160,FastNewContextStub -code-creation,Stub,2,0x2b80b1e0,79,StubFailureTrampolineStub -code-creation,Stub,2,0x2b80b240,704,ArraySingleArgumentConstructorStub -code-creation,Stub,14,0x2b80b500,93,CompareNilICStub -code-creation,Stub,2,0x2b80b560,289,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80b6a0,664,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80b940,740,NameDictionaryLookupStub -code-creation,Stub,13,0x2b80bc40,156,CompareICStub -code-creation,Stub,2,0x2b80bce0,611,RecordWriteStub -code-creation,Stub,13,0x2b80bf60,122,CompareICStub -code-creation,Stub,2,0x2b80bfe0,217,CreateAllocationSiteStub -code-creation,Stub,2,0x2b80c0c0,1456,RecordWriteStub -code-creation,Stub,2,0x2b80c680,245,StoreArrayLiteralElementStub -code-creation,Stub,2,0x2b80c780,1448,RecordWriteStub -code-creation,Stub,2,0x2b80cd40,1471,StringAddStub -code-creation,Stub,2,0x2b80d300,1448,RecordWriteStub -code-creation,Stub,2,0x2b80d8c0,1453,RecordWriteStub -code-creation,Stub,12,0x2b80de80,146,BinaryOpStub -code-creation,Stub,2,0x2b80df20,640,InternalArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80e1a0,517,ArrayConstructorStub -code-creation,Stub,2,0x2b80e3c0,305,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80e500,305,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80e640,349,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80e7a0,349,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80e900,289,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b80ea40,680,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80ed00,692,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80efc0,704,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80f280,664,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b80f520,488,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80f720,540,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80f940,432,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80fb00,432,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b80fcc0,1453,RecordWriteStub -code-creation,Stub,2,0x2b810280,400,InternalArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b810420,611,RecordWriteStub -code-creation,Stub,2,0x2b8106a0,213,JSEntryStub -code-creation,Stub,13,0x2b810780,104,CompareICStub -code-creation,Stub,12,0x2b810800,124,BinaryOpStub -code-creation,Stub,2,0x2b810880,1447,StringAddStub -code-creation,Stub,2,0x2b810e40,640,InternalArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b8110c0,400,InternalArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b811260,261,FastCloneShallowArrayStub -code-creation,Stub,12,0x2b811380,88,BinaryOpStub -code-creation,Stub,2,0x2b8113e0,76,StackCheckStub -code-creation,Stub,2,0x2b811440,1437,RecordWriteStub -code-creation,Stub,2,0x2b8119e0,289,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b811b20,331,CallFunctionStub -code-creation,Builtin,3,0x2b811c80,174,A builtin from the snapshot -code-creation,Stub,14,0x2b811d40,124,CompareNilICStub -code-creation,Stub,2,0x2b811dc0,1420,RecordWriteStub -code-creation,Stub,13,0x2b812360,104,CompareICStub -code-creation,Stub,2,0x2b8123e0,76,LoadFieldStub -code-creation,Stub,13,0x2b812440,104,CompareICStub -code-creation,Stub,2,0x2b8124c0,195,NumberToStringStub -code-creation,Stub,15,0x2b8125a0,148,ToBooleanStub -code-creation,Stub,2,0x2b812640,351,ArgumentsAccessStub -code-creation,Stub,2,0x2b8127a0,664,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b812a40,1420,RecordWriteStub -code-creation,Stub,12,0x2b812fe0,133,BinaryOpStub -code-creation,Stub,2,0x2b813080,1664,StringAddStub -code-creation,Stub,2,0x2b813700,1661,StringAddStub -code-creation,Stub,2,0x2b813d80,472,ArrayNArgumentsConstructorStub -code-creation,Stub,2,0x2b813f60,80,StubFailureTrampolineStub -code-creation,Stub,13,0x2b813fc0,104,CompareICStub -code-creation,Stub,2,0x2b814040,331,CallFunctionStub -code-creation,Stub,2,0x2b8141a0,660,ArraySingleArgumentConstructorStub -code-creation,Stub,2,0x2b814440,1433,RecordWriteStub -code-creation,Stub,12,0x2b8149e0,146,BinaryOpStub -code-creation,Stub,2,0x2b814a80,271,CallConstructStub -code-creation,Stub,15,0x2b814ba0,136,ToBooleanStub -code-creation,Stub,2,0x2b814c40,468,ArrayNArgumentsConstructorStub -code-creation,Stub,15,0x2b814e20,128,ToBooleanStub -code-creation,Stub,2,0x2b814ea0,163,FastNewContextStub -code-creation,Stub,2,0x2b814f60,1425,RecordWriteStub -code-creation,LoadIC,5,0x2b815500,145,A load IC from the snapshot -code-creation,Builtin,3,0x2b8155a0,83,A builtin from the snapshot -code-creation,Stub,12,0x2b815600,88,BinaryOpStub -code-creation,Stub,2,0x2b815660,1433,RecordWriteStub -code-creation,Stub,2,0x2b815c00,331,CallFunctionStub -code-creation,Stub,13,0x2b815d60,104,CompareICStub -code-creation,Stub,2,0x2b815de0,304,FastNewClosureStub -code-creation,Stub,2,0x2b815f20,285,ArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b816040,1433,RecordWriteStub -code-creation,Stub,2,0x2b8165e0,233,InternalArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b8166e0,740,NameDictionaryLookupStub -code-creation,Stub,2,0x2b8169e0,740,NameDictionaryLookupStub -code-creation,Stub,12,0x2b816ce0,88,BinaryOpStub -code-creation,Stub,2,0x2b816d40,216,StringCompareStub -code-creation,Stub,15,0x2b816e20,93,ToBooleanStub -code-creation,Stub,12,0x2b816e80,88,BinaryOpStub -code-creation,Stub,2,0x2b816ee0,1433,RecordWriteStub -code-creation,Stub,12,0x2b817480,155,BinaryOpStub -code-creation,Stub,2,0x2b817520,169,InternalArrayConstructorStub -code-creation,Stub,2,0x2b8175e0,233,InternalArrayNoArgumentConstructorStub -code-creation,Stub,2,0x2b8176e0,1433,RecordWriteStub -code-creation,Stub,12,0x2b817c80,88,BinaryOpStub -code-creation,Stub,2,0x2b817ce0,328,KeyedLoadElementStub -code-creation,Stub,2,0x2b817e40,1461,RecordWriteStub -code-creation,Stub,2,0x2b818400,98,ToNumberStub -code-creation,Stub,13,0x2b818480,122,CompareICStub -code-creation,Stub,12,0x2b818500,124,BinaryOpStub -code-creation,Stub,2,0x2b818580,148,CallConstructStub -code-creation,Stub,13,0x2b818620,491,CompareICStub -code-creation,Stub,2,0x2b818820,213,JSEntryStub -code-creation,CallIC,7,0x2b818900,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b8189c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818a80,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818b40,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818c00,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818cc0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818d80,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b818e40,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b818f00,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b818fc0,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b819080,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819140,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819200,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b8192c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819380,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819440,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b819500,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b8195c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819680,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b819740,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819800,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b8198c0,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b819980,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819a40,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819b00,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b819bc0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819c80,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819d40,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b819e00,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b819ec0,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b819f80,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a040,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a100,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a1c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a280,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a340,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a400,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a4c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a580,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a640,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a700,189,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a7c0,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a880,178,A call IC from the snapshot -code-creation,CallIC,7,0x2b81a940,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81aa00,180,A call IC from the snapshot -code-creation,CallIC,7,0x2b81aac0,180,A call IC from the snapshot -code-creation,Builtin,3,0x2b81ab80,107,A builtin from the snapshot -code-creation,Builtin,3,0x2b81ac00,105,A builtin from the snapshot -code-creation,Builtin,3,0x2b81ac80,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b81ace0,432,A builtin from the snapshot -code-creation,Builtin,3,0x2b81afc0,101,A builtin from the snapshot -code-creation,LoadIC,5,0x2b81b1a0,83,A load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b81bf00,83,A keyed load IC from the snapshot -code-creation,StoreIC,9,0x2b81c680,84,A store IC from the snapshot -code-creation,Builtin,3,0x2b8262e0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826340,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8263a0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826400,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826460,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8264c0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826520,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826580,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8265e0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826640,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8266a0,80,A builtin from the snapshot -code-creation,Builtin,3,0x2b826700,80,A builtin from the snapshot -code-creation,Builtin,3,0x2b826760,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b8267c0,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826820,77,A builtin from the snapshot -code-creation,Builtin,3,0x2b826880,75,A builtin from the snapshot -code-creation,Builtin,3,0x2b8268e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b826960,491,A builtin from the snapshot -code-creation,Builtin,3,0x2b826b60,406,A builtin from the snapshot -code-creation,Builtin,3,0x2b826d00,157,A builtin from the snapshot -code-creation,Builtin,3,0x2b826da0,131,A builtin from the snapshot -code-creation,Builtin,3,0x2b826e40,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b826ec0,107,A builtin from the snapshot -code-creation,Builtin,3,0x2b826f40,143,A builtin from the snapshot -code-creation,Builtin,3,0x2b826fe0,143,A builtin from the snapshot -code-creation,Builtin,3,0x2b827080,143,A builtin from the snapshot -code-creation,Builtin,3,0x2b827120,94,A builtin from the snapshot -code-creation,Builtin,3,0x2b827180,91,A builtin from the snapshot -code-creation,Builtin,3,0x2b8271e0,83,A builtin from the snapshot -code-creation,Builtin,3,0x2b827240,83,A builtin from the snapshot -code-creation,Builtin,3,0x2b8272a0,83,A builtin from the snapshot -code-creation,Builtin,3,0x2b827300,84,A builtin from the snapshot -code-creation,Builtin,3,0x2b827360,84,A builtin from the snapshot -code-creation,Builtin,3,0x2b8273c0,84,A builtin from the snapshot -code-creation,Builtin,3,0x2b827420,84,A builtin from the snapshot -code-creation,Builtin,3,0x2b827480,84,A builtin from the snapshot -code-creation,LoadIC,5,0x2b8274e0,83,A load IC from the snapshot -code-creation,LoadIC,5,0x2b827540,313,A load IC from the snapshot -code-creation,LoadIC,5,0x2b827680,266,A load IC from the snapshot -code-creation,LoadIC,5,0x2b8277a0,80,A load IC from the snapshot -code-creation,LoadIC,5,0x2b827800,83,A load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b827860,83,A keyed load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b8278c0,896,A keyed load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b827c40,499,A keyed load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b827e40,144,A keyed load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b827ee0,216,A keyed load IC from the snapshot -code-creation,StoreIC,9,0x2b827fc0,365,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828140,293,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828280,88,A store IC from the snapshot -code-creation,StoreIC,9,0x2b8282e0,88,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828340,88,A store IC from the snapshot -code-creation,StoreIC,9,0x2b8283a0,84,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828400,365,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828580,293,A store IC from the snapshot -code-creation,StoreIC,9,0x2b8286c0,88,A store IC from the snapshot -code-creation,StoreIC,9,0x2b828720,82,A store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b828780,84,A keyed store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b8287e0,2082,A keyed store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b829020,84,A keyed store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b829080,2082,A keyed store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b8298c0,286,A keyed store IC from the snapshot -code-creation,Builtin,3,0x2b8299e0,355,A builtin from the snapshot -code-creation,Builtin,3,0x2b829b60,416,A builtin from the snapshot -code-creation,Builtin,3,0x2b829d00,376,A builtin from the snapshot -code-creation,Builtin,3,0x2b829e80,388,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a020,78,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a080,83,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a0e0,357,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a260,359,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a3e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a460,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a4e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a560,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a5e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a660,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a6e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a760,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a7e0,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a860,101,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a8e0,104,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a960,106,A builtin from the snapshot -code-creation,Builtin,3,0x2b82a9e0,110,A builtin from the snapshot -code-creation,Builtin,3,0x2b82aa60,112,A builtin from the snapshot -code-creation,LoadIC,5,0x2b82aae0,106,A load IC from the snapshot -code-creation,KeyedLoadIC,6,0x2b82ab60,106,A keyed load IC from the snapshot -code-creation,StoreIC,9,0x2b82abe0,108,A store IC from the snapshot -code-creation,KeyedStoreIC,10,0x2b82ac60,108,A keyed store IC from the snapshot -code-creation,Stub,14,0x2b82ace0,104,CallFunctionStub -code-creation,Builtin,3,0x2b82ad60,65,A builtin from the snapshot -code-creation,Builtin,3,0x2b82adc0,93,A builtin from the snapshot -timer-event-start,V8.GCCompactor,12962 -timer-event-start,V8.External,12972 -timer-event-end,V8.External,12981 -timer-event-start,V8.External,13996 -timer-event-end,V8.External,14014 -timer-event-end,V8.GCCompactor,14024 -code-creation,LazyCompile,3,0x2b81ac80,77,Empty :1,0x4420e5cc, -code-creation,LazyCompile,0,0x2b81b040,336,SetUpUri native uri.js:442,0x4420f5b4, -code-creation,LazyCompile,0,0x2b81b960,1429,FormatString native messages.js:187,0x4420f918, -code-creation,LazyCompile,0,0x2b81bf60,280,MakeGenericError native messages.js:282,0x44211088, -code-creation,LazyCompile,0,0x2b81c080,264,FormatMessage native messages.js:301,0x4421113c, -code-creation,LazyCompile,0,0x2b81c1a0,200,MakeRangeError native messages.js:335,0x442112f0, -code-creation,LazyCompile,0,0x2b81c280,1012,captureStackTrace native messages.js:1123,0x44212280, -code-creation,LazyCompile,0,0x2b81c6e0,460,SetUpError native messages.js:1173,0x44212410, -code-creation,LazyCompile,0,0x2b81c8c0,692,SetUpError.a native messages.js:1176,0x442124c0, -code-creation,LazyCompile,0,0x2b81cb80,164,d native messages.js:1192,0x44212548, -code-creation,LazyCompile,0,0x2b81cc40,360, native messages.js:1202,0x442125d0, -code-creation,LazyCompile,0,0x2b81cc40,360,Error,0x44212698, -code-creation,LazyCompile,0,0x2b81cc40,360,TypeError,0x442126f8, -code-creation,LazyCompile,0,0x2b81cc40,360,RangeError,0x44212758, -code-creation,LazyCompile,0,0x2b81cc40,360,SyntaxError,0x442127b8, -code-creation,LazyCompile,0,0x2b81cc40,360,ReferenceError,0x44212818, -code-creation,LazyCompile,0,0x2b81cc40,360,EvalError,0x44212878, -code-creation,LazyCompile,0,0x2b81cc40,360,URIError,0x442128d8, -code-creation,LazyCompile,0,0x2b81cdc0,424,SetUpStackOverflowBoilerplate native messages.js:1301,0x44212a74, -code-creation,LazyCompile,0,0x2b81d200,380,StringConstructor native string.js:35,0x44214e2c, -code-creation,LazyCompile,0,0x2b81d380,1132,SetUpString native string.js:962,0x44216ea8, -code-creation,LazyCompile,0,0x2b81da80,1392,DateConstructor native date.js:141,0x442182bc, -code-creation,LazyCompile,0,0x2b81e000,1396,SetUpDate native date.js:761,0x44219944, -code-creation,LazyCompile,0,0x2b81e6a0,2272,SetUpArray native array.js:1591,0x4421c6ac, -code-creation,LazyCompile,0,0x2b81f500,561,InstallFunctions native v8natives.js:46,0x4421cc1c, -code-creation,LazyCompile,0,0x2b81f740,304,InstallGetterSetter native v8natives.js:72,0x4421ea1c, -code-creation,LazyCompile,0,0x2b81f880,814,SetUpLockedPrototype native v8natives.js:87,0x4421eab4, -code-creation,LazyCompile,0,0x2b81fbc0,452,SetUpGlobal native v8natives.js:197,0x4421ed3c, -code-creation,LazyCompile,0,0x2b81fda0,404,hasOwnProperty native v8natives.js:251,0x4421eee4, -code-creation,LazyCompile,0,0x2b81ff40,308,ObjectConstructor native v8natives.js:1371,0x442200b4, -code-creation,LazyCompile,0,0x2b820080,1044,SetUpObject native v8natives.js:1385,0x44220140, -code-creation,LazyCompile,0,0x2b8204a0,292,BooleanConstructor native v8natives.js:1437,0x442201c8, -code-creation,LazyCompile,0,0x2b8205e0,448,SetUpBoolean native v8natives.js:1472,0x44220314, -code-creation,LazyCompile,0,0x2b8207a0,336,NumberConstructor native v8natives.js:1491,0x442203ac, -code-creation,LazyCompile,0,0x2b820900,924,SetUpNumber native v8natives.js:1635,0x4422073c, -code-creation,LazyCompile,0,0x2b820ca0,440,FunctionConstructor native v8natives.js:1813,0x44220954, -code-creation,LazyCompile,0,0x2b820e60,380,SetUpFunction native v8natives.js:1826,0x442209f8, -code-creation,LazyCompile,0,0x2b821100,260,SetUpJSON native json.js:219,0x44221940, -code-creation,LazyCompile,0,0x2b821380,164,MathConstructor native math.js:40,0x44221ba4, -code-creation,LazyCompile,0,0x2b821440,1112,SetUpMath native math.js:226,0x4422283c, -code-creation,LazyCompile,0,0x2b821a40,324,RegExpConstructor native regexp.js:90,0x44223264, -code-creation,LazyCompile,0,0x2b821ba0,224,RegExpMakeCaptureGetter native regexp.js:360,0x44223784, -code-creation,LazyCompile,0,0x2b821c80,1561,SetUpRegExp native regexp.js:400,0x44223878, -code-creation,LazyCompile,0,0x2b822640,1728,EQUALS native runtime.js:54,0x44224078, -code-creation,LazyCompile,0,0x2b822d00,376,STRICT_EQUALS native runtime.js:108,0x44224c18, -code-creation,LazyCompile,0,0x2b822e80,924,COMPARE native runtime.js:128,0x44224ca4, -code-creation,LazyCompile,0,0x2b823220,596,ADD native runtime.js:171,0x44224d44, -code-creation,LazyCompile,0,0x2b823480,572,STRING_ADD_LEFT native runtime.js:191,0x44224dd8, -code-creation,LazyCompile,0,0x2b8236c0,580,STRING_ADD_RIGHT native runtime.js:206,0x44224e64, -code-creation,LazyCompile,0,0x2b823920,296,SUB native runtime.js:222,0x44224ef4, -code-creation,LazyCompile,0,0x2b823a60,296,MUL native runtime.js:230,0x44224f84, -code-creation,LazyCompile,0,0x2b823ba0,296,DIV native runtime.js:238,0x44225014, -code-creation,LazyCompile,0,0x2b823ce0,296,MOD native runtime.js:246,0x442250a4, -code-creation,LazyCompile,0,0x2b823e20,296,BIT_OR native runtime.js:260,0x44225134, -code-creation,LazyCompile,0,0x2b823f60,384,BIT_AND native runtime.js:268,0x442251c4, -code-creation,LazyCompile,0,0x2b8240e0,296,BIT_XOR native runtime.js:290,0x44225254, -code-creation,LazyCompile,0,0x2b824220,244,UNARY_MINUS native runtime.js:298,0x442252e4, -code-creation,LazyCompile,0,0x2b824320,244,BIT_NOT native runtime.js:305,0x44225370, -code-creation,LazyCompile,0,0x2b824420,296,SHL native runtime.js:312,0x442253fc, -code-creation,LazyCompile,0,0x2b824560,384,SAR native runtime.js:320,0x4422548c, -code-creation,LazyCompile,0,0x2b8246e0,296,SHR native runtime.js:342,0x4422551c, -code-creation,LazyCompile,0,0x2b824820,228,DELETE native runtime.js:356,0x442255ac, -code-creation,LazyCompile,0,0x2b824920,368,IN native runtime.js:362,0x4422563c, -code-creation,LazyCompile,0,0x2b824aa0,644,INSTANCE_OF native runtime.js:375,0x442256e8, -code-creation,LazyCompile,0,0x2b824d40,236,FILTER_KEY native runtime.js:406,0x442257b8, -code-creation,LazyCompile,0,0x2b824e40,380,CALL_NON_FUNCTION native runtime.js:413,0x44225848, -code-creation,LazyCompile,0,0x2b824fc0,380,CALL_NON_FUNCTION_AS_CONSTRUCTOR native runtime.js:422,0x442258f4, -code-creation,LazyCompile,0,0x2b825140,288,CALL_FUNCTION_PROXY native runtime.js:431,0x442259a0, -code-creation,LazyCompile,0,0x2b825260,260,CALL_FUNCTION_PROXY_AS_CONSTRUCTOR native runtime.js:439,0x44225a38, -code-creation,LazyCompile,0,0x2b825380,912,APPLY_PREPARE native runtime.js:446,0x44225acc, -code-creation,LazyCompile,0,0x2b825720,232,APPLY_OVERFLOW native runtime.js:484,0x44225b9c, -code-creation,LazyCompile,0,0x2b825820,188,TO_OBJECT native runtime.js:490,0x44225c38, -code-creation,LazyCompile,0,0x2b8258e0,188,TO_NUMBER native runtime.js:496,0x44225cc0, -code-creation,LazyCompile,0,0x2b8259a0,188,TO_STRING native runtime.js:502,0x44225d48, -code-creation,LazyCompile,0,0x2b825a60,600,ToPrimitive native runtime.js:514,0x44225dd0, -code-creation,LazyCompile,0,0x2b825cc0,404,ToBoolean native runtime.js:526,0x44225e60, -code-creation,LazyCompile,0,0x2b825e60,504,ToNumber native runtime.js:536,0x44225eec, -code-creation,LazyCompile,0,0x2b826060,416,ToString native runtime.js:561,0x44225fd8, -code-creation,LazyCompile,0,0x2b826200,220,ToName native runtime.js:578,0x442260c4, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x44227108, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x44227168, -code-creation,LazyCompile,3,0x2b8262e0,77,OpaqueReference,0x442271c8, -code-creation,LazyCompile,3,0x2b8262e0,77,JSON,0x44227228, -code-creation,LazyCompile,0,0x2b8204a0,292,Boolean,0x44227288, -code-creation,LazyCompile,3,0x2b82a080,83,Array,0x442272e8, -code-creation,LazyCompile,3,0x2b826460,77,pop,0x44227348, -code-creation,LazyCompile,3,0x2b826400,77,push,0x442273a8, -code-creation,LazyCompile,3,0x2b826640,77,concat,0x44227408, -code-creation,LazyCompile,3,0x2b8264c0,77,shift,0x44227468, -code-creation,LazyCompile,3,0x2b826520,77,unshift,0x442274c8, -code-creation,LazyCompile,3,0x2b826580,77,slice,0x44227528, -code-creation,LazyCompile,3,0x2b8265e0,77,splice,0x44227588, -code-creation,LazyCompile,0,0x2b8207a0,336,Number,0x442275e8, -code-creation,LazyCompile,3,0x2b82a020,78,InternalArray,0x44227648, -code-creation,LazyCompile,3,0x2b82a020,78,InternalPackedArray,0x442276b4, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x44227714, -code-creation,LazyCompile,0,0x2b821a40,324,RegExp,0x44227774, -code-creation,LazyCompile,0,0x2b81da80,1392,Date,0x442277d4, -code-creation,LazyCompile,0,0x2b820ca0,440,Function,0x44227834, -code-creation,LazyCompile,0,0x2b81d200,380,String,0x44227894, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x442278f4, -code-creation,LazyCompile,0,0x2b81cf80,216,Script,0x44227960, -code-creation,LazyCompile,0,0x2b81ff40,308,Object,0x44227a00, -code-creation,LazyCompile,3,0x2b829d00,376,call,0x44227a60, -code-creation,LazyCompile,3,0x2b829e80,388,apply,0x44227ac0, -code-creation,LazyCompile,3,0x2b8262e0,77,Arguments,0x44227b20, -code-creation,LazyCompile,3,0x2b826820,77,ThrowTypeError,0x44227b80, -code-creation,LazyCompile,3,0x2b826760,77,,0x44227be0, -code-creation,LazyCompile,3,0x2b8267c0,77,,0x44227c40, -code-creation,LazyCompile,3,0x2b8262e0,77,,0x44227ca0, -code-creation,Stub,2,0x2b81ef80,782,CEntryStub -code-creation,Stub,2,0x2b81f2a0,197,StoreBufferOverflowStub -code-creation,Stub,2,0x2b81f380,79,StubFailureTrampolineStub -code-creation,Stub,2,0x2b81f3e0,80,StubFailureTrampolineStub -tick,0xf776d430,16272,0,0x0,3 -timer-event-start,V8.ParseLazyMicroSeconds,16854 -timer-event-end,V8.ParseLazyMicroSeconds,17081 -timer-event-start,V8.CompileLazy,17098 -timer-event-start,V8.CompileFullCode,17125 -tick,0xf74c79de,17348,0,0xff820034,2 -code-creation,Stub,2,0x2b81b200,246,FastCloneShallowObjectStub -code-creation,Stub,12,0x2b81b300,88,BinaryOpStub_ADD_Alloc_Uninitialized+Uninitialized -code-creation,Stub,12,0x2b81b360,88,BinaryOpStub_ADD_OverwriteLeft_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,17910 -code-creation,LazyCompile,0,0x2b81b3c0,572,Instantiate native apinatives.js:44,0x44223cdc,~ -timer-event-end,V8.CompileLazy,17948 -code-creation,Stub,13,0x2b81b600,116,CompareICStub -timer-event-start,V8.ParseLazyMicroSeconds,18020 -timer-event-end,V8.ParseLazyMicroSeconds,18170 -timer-event-start,V8.CompileLazy,18187 -timer-event-start,V8.CompileFullCode,18208 -code-creation,Stub,12,0x2b81b680,88,BinaryOpStub_BIT_AND_Alloc_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,18340 -code-creation,LazyCompile,0,0x2b82ae20,1008,InstantiateFunction native apinatives.js:65,0x44223d3c, -timer-event-end,V8.CompileLazy,18396 -tick,0xf776d430,18420,0,0x90d68fc,2,0x2b81b4f0 -code-creation,Stub,2,0x2b82b220,1800,RecordWriteStub -code-creation,Stub,2,0x2b82b940,236,KeyedStoreElementStub -code-creation,KeyedStoreIC,10,0x2b82ba40,91, -code-creation,CallIC,7,0x2b82baa0,129,InstantiateFunction -code-creation,LoadIC,5,0x2b82bb40,103,kApiFunctionCache -code-creation,Stub,12,0x2b82bbc0,146,BinaryOpStub_BIT_AND_Alloc_Smi+Smi -code-creation,Stub,15,0x2b82bc60,132,ToBooleanStub(Smi) -timer-event-start,V8.ParseLazyMicroSeconds,19172 -timer-event-end,V8.ParseLazyMicroSeconds,19253 -timer-event-start,V8.CompileLazy,19268 -timer-event-start,V8.CompileFullCode,19285 -timer-event-end,V8.CompileFullCode,19350 -code-creation,LazyCompile,0,0x2b82bd00,753,ConfigureTemplateInstance native apinatives.js:105,0x44223d9c, -timer-event-end,V8.CompileLazy,19384 -tick,0x83c1620,19510,0,0xff81f92c,0,0x2b82b1de,0x2b81b4f0,0x2b81b576,0x2b82b0b8,0x2b81b4f0 -code-creation,Stub,2,0x2b82c000,208,KeyedLoadElementStub -code-creation,KeyedLoadIC,6,0x2b82c0e0,91, -code-creation,Stub,15,0x2b82c140,156,ToBooleanStub(Undefined,SpecObject) -code-creation,KeyedLoadIC,6,0x2b82c1e0,91, -code-creation,Stub,12,0x2b82c240,146,BinaryOpStub_ADD_Alloc_Smi+Smi -code-creation,Stub,15,0x2b82c2e0,168,ToBooleanStub(Undefined,String) -code-creation,CallIC,7,0x2b82c3a0,129,ConfigureTemplateInstance -code-creation,CallIC,7,0x2b82c440,129,Instantiate -code-creation,CallIC,7,0x2b82c4e0,144,Instantiate -code-creation,Stub,13,0x2b82c580,469,CompareICStub -code-creation,Stub,14,0x2b82c760,144,CompareNilICStub(NullValue)(MonomorphicMap) -code-creation,Stub,14,0x2b82c800,144,CompareNilICStub(NullValue)(MonomorphicMap) -tick,0x8132a60,20593,0,0x8141e5e,0,0x2b822c4e,0x2b82af24,0x2b81b4f0,0x2b82beff,0x2b81b59f,0x2b82beff,0x2b81b589,0x2b82b0b8,0x2b81b4f0 -code-creation,Stub,14,0x2b82c8a0,124,CompareNilICStub(NullValue)(Undefined,Null,Undetectable,Generic) -code-creation,Stub,13,0x2b82c920,156,CompareICStub -timer-event-start,V8.ParseLazyMicroSeconds,20736 -timer-event-end,V8.ParseLazyMicroSeconds,20818 -timer-event-start,V8.CompileLazy,20838 -timer-event-start,V8.CompileFullCode,20854 -code-creation,Stub,2,0x2b82c9c0,587,FastCloneShallowArrayStub -timer-event-end,V8.CompileFullCode,21298 -code-creation,LazyCompile,0,0x2b82cc20,812,DefaultNumber native runtime.js:645,0x44226390,~ -timer-event-end,V8.CompileLazy,21330 -timer-event-start,V8.ParseLazyMicroSeconds,21352 -timer-event-end,V8.ParseLazyMicroSeconds,21381 -timer-event-start,V8.CompileLazy,21393 -timer-event-start,V8.CompileFullCode,21405 -timer-event-end,V8.CompileFullCode,21436 -code-creation,LazyCompile,0,0x2b82cf60,184,valueOf native v8natives.js:245,0x4421ee84,~ -timer-event-end,V8.CompileLazy,21465 -timer-event-start,V8.ParseLazyMicroSeconds,21482 -timer-event-end,V8.ParseLazyMicroSeconds,21544 -timer-event-start,V8.CompileLazy,21557 -timer-event-start,V8.CompileFullCode,21571 -timer-event-end,V8.CompileFullCode,21651 -code-creation,LazyCompile,0,0x2b82d020,652,ToObject native runtime.js:584,0x44226150,~ -timer-event-end,V8.CompileLazy,21690 -tick,0x80eabe2,21708,0,0xff81f7a8,2,0x2b82cfe4,0x2b82cd79,0x2b825c84,0x2b822ca7,0x2b82af24,0x2b81b4f0,0x2b82beff,0x2b81b59f,0x2b82beff,0x2b81b589,0x2b82b0b8,0x2b81b4f0 -timer-event-start,V8.ParseLazyMicroSeconds,21761 -timer-event-end,V8.ParseLazyMicroSeconds,21796 -timer-event-start,V8.CompileLazy,21808 -timer-event-start,V8.CompileFullCode,21820 -timer-event-end,V8.CompileFullCode,21845 -code-creation,LazyCompile,0,0x2b82d2c0,220,IsPrimitive native runtime.js:636,0x44226330,~ -timer-event-end,V8.CompileLazy,21873 -timer-event-start,V8.ParseLazyMicroSeconds,21895 -timer-event-end,V8.ParseLazyMicroSeconds,21921 -timer-event-start,V8.CompileLazy,21932 -timer-event-start,V8.CompileFullCode,21946 -timer-event-end,V8.CompileFullCode,21966 -code-creation,LazyCompile,0,0x2b82d3a0,184,toString native v8natives.js:1721,0x44220834,~ -timer-event-end,V8.CompileLazy,21994 -timer-event-start,V8.ParseLazyMicroSeconds,22009 -timer-event-end,V8.ParseLazyMicroSeconds,22087 -timer-event-start,V8.CompileLazy,22101 -timer-event-start,V8.CompileFullCode,22116 -timer-event-end,V8.CompileFullCode,22221 -code-creation,LazyCompile,0,0x2b82d460,681,FunctionSourceString native v8natives.js:1693,0x442207d4,~ -timer-event-end,V8.CompileLazy,22237 -code-creation,Stub,15,0x2b82d720,156,ToBooleanStub(String) -code-creation,Stub,12,0x2b82d7c0,124,BinaryOpStub_ADD_Alloc_String+String -code-creation,Stub,12,0x2b82d840,124,BinaryOpStub_ADD_OverwriteLeft_String+String -code-creation,CallMiss,7,0x2b82d8c0,178,args_count: 2 -code-creation,CallIC,7,0x2b82d980,128,ToPrimitive -code-creation,CallIC,7,0x2b82da00,128,DefaultNumber -code-creation,Stub,2,0x2b82da80,116,valueOf -code-creation,LoadIC,5,0x2b82db00,93,valueOf -code-creation,CallIC,7,0x2b82db60,129,ToObject -code-creation,CallIC,7,0x2b82dc00,128,IsPrimitive -code-creation,Stub,2,0x2b82dc80,98,toString -code-creation,LoadIC,5,0x2b82dd00,93,toString -code-creation,CallIC,7,0x2b82dd60,129,FunctionSourceString -code-creation,CallIC,7,0x2b82de00,128,ToNumber -timer-event-start,V8.ParseMicroSeconds,22650 -tick,0xf776d430,22726,0,0x0,2 -timer-event-end,V8.ParseMicroSeconds,22773 -timer-event-start,V8.Compile,22785 -timer-event-start,V8.CompileFullCode,22801 -timer-event-end,V8.CompileFullCode,22822 -code-creation,Script,0,0x2b82de80,264,native arraybuffer.js,0x4423ab7c,~ -timer-event-end,V8.Compile,22836 -timer-event-start,V8.ParseLazyMicroSeconds,22859 -timer-event-end,V8.ParseLazyMicroSeconds,22881 -timer-event-start,V8.CompileLazy,22887 -timer-event-start,V8.CompileFullCode,22899 -timer-event-end,V8.CompileFullCode,22918 -code-creation,LazyCompile,0,0x2b82dfa0,480,SetUpArrayBuffer native arraybuffer.js:84,0x4423aac0,~ -timer-event-end,V8.CompileLazy,22934 -timer-event-start,V8.ParseLazyMicroSeconds,22943 -timer-event-end,V8.ParseLazyMicroSeconds,22962 -timer-event-start,V8.CompileLazy,22967 -timer-event-start,V8.CompileFullCode,22972 -timer-event-end,V8.CompileFullCode,22987 -code-creation,LazyCompile,0,0x2b82e180,324,ArrayBufferConstructor native arraybuffer.js:34,0x4423a9a0,~ -timer-event-end,V8.CompileLazy,23000 -code-creation,LazyCompile,0,0x2b82e180,324,ArrayBufferConstructor native arraybuffer.js:34,0x4423a9a0, -timer-event-start,V8.ParseLazyMicroSeconds,23021 -timer-event-end,V8.ParseLazyMicroSeconds,23037 -timer-event-start,V8.CompileLazy,23042 -timer-event-start,V8.CompileFullCode,23047 -timer-event-end,V8.CompileFullCode,23057 -code-creation,LazyCompile,0,0x2b82e2e0,252,InstallGetter native v8natives.js:63,0x4421e9bc,~ -timer-event-end,V8.CompileLazy,23069 -code-creation,KeyedLoadIC,6,0x2b82e3e0,91, -code-creation,LoadIC,5,0x2b82e440,93,length -timer-event-start,V8.ParseMicroSeconds,23160 -timer-event-end,V8.ParseMicroSeconds,23613 -timer-event-start,V8.Compile,23621 -timer-event-start,V8.CompileFullCode,23666 -timer-event-end,V8.CompileFullCode,23702 -code-creation,Script,0,0x2b82e4a0,720,native typedarray.js,0x4423bc04,~ -timer-event-end,V8.Compile,23724 -timer-event-start,V8.ParseLazyMicroSeconds,23755 -tick,0xf776d430,23782,0,0x0,2 -timer-event-end,V8.ParseLazyMicroSeconds,23867 -timer-event-start,V8.CompileLazy,23905 -timer-event-start,V8.CompileFullCode,23916 -timer-event-end,V8.CompileFullCode,23939 -code-creation,LazyCompile,0,0x2b82e780,664,SetupTypedArray native typedarray.js:170,0x4423b238,~ -timer-event-end,V8.CompileLazy,23971 -timer-event-start,V8.ParseLazyMicroSeconds,23979 -timer-event-end,V8.ParseLazyMicroSeconds,24064 -timer-event-start,V8.CompileLazy,24071 -timer-event-start,V8.CompileFullCode,24085 -code-creation,Stub,2,0x2b82ea20,175,FastNewContextStub -code-creation,Stub,2,0x2b82eae0,304,FastNewClosureStub -code-creation,Stub,2,0x2b82ec20,1448,RecordWriteStub -timer-event-end,V8.CompileFullCode,24149 -code-creation,LazyCompile,0,0x2b82f1e0,460,CreateTypedArrayConstructor native typedarray.js:38,0x4423af98,~ -timer-event-end,V8.CompileLazy,24163 -timer-event-start,V8.ParseLazyMicroSeconds,24170 -timer-event-end,V8.ParseLazyMicroSeconds,24198 -timer-event-start,V8.CompileLazy,24203 -timer-event-start,V8.CompileFullCode,24211 -code-creation,Stub,2,0x2b82f3c0,331,CallFunctionStub_Args4_Recording -code-creation,Stub,2,0x2b82f520,631,FastCloneShallowArrayStub -code-creation,Stub,2,0x2b82f7a0,245,StoreArrayLiteralElementStub -timer-event-end,V8.CompileFullCode,24435 -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580,~ -timer-event-end,V8.CompileLazy,24448 -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -timer-event-start,V8.ParseLazyMicroSeconds,24478 -timer-event-end,V8.ParseLazyMicroSeconds,24519 -timer-event-start,V8.CompileLazy,24525 -timer-event-start,V8.CompileFullCode,24533 -timer-event-end,V8.CompileFullCode,24546 -code-creation,LazyCompile,0,0x2b82fbe0,268,CreateSubArray native typedarray.js:121,0x4423b178,~ -timer-event-end,V8.CompileLazy,24559 -code-creation,CallMiss,7,0x2b82fd00,180,args_count: 4 -code-creation,CallIC,7,0x2b82fdc0,129,CreateTypedArrayConstructor -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LoadIC,5,0x2b82fe60,103,$Object -code-creation,LoadIC,5,0x2b82fee0,103,TypedArrayGetBuffer -code-creation,CallMiss,7,0x2b82ff60,180,args_count: 3 -code-creation,CallIC,7,0x2b830020,129,InstallGetter -code-creation,LoadIC,5,0x2b8300c0,103,TypedArrayGetByteOffset -code-creation,LoadIC,5,0x2b830140,103,TypedArrayGetByteLength -code-creation,LoadIC,5,0x2b8301c0,103,TypedArrayGetLength -code-creation,CallIC,7,0x2b830240,129,CreateSubArray -code-creation,LoadIC,5,0x2b8302e0,103,TypedArraySet -code-creation,CallIC,7,0x2b830360,133,$Array -code-creation,CallIC,7,0x2b830400,129,InstallFunctions -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -tick,0xf7492ece,24846,0,0xff81ff10,0,0x2b82e839,0x2b82e5f9 -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -timer-event-start,V8.ParseLazyMicroSeconds,25032 -timer-event-end,V8.ParseLazyMicroSeconds,25074 -timer-event-start,V8.CompileLazy,25081 -timer-event-start,V8.CompileFullCode,25093 -timer-event-end,V8.CompileFullCode,25115 -code-creation,LazyCompile,0,0x2b8304a0,888,SetupDataView native typedarray.js:434,0x4423ba78,~ -timer-event-end,V8.CompileLazy,25128 -timer-event-start,V8.ParseLazyMicroSeconds,25136 -timer-event-end,V8.ParseLazyMicroSeconds,25175 -timer-event-start,V8.CompileLazy,25181 -timer-event-start,V8.CompileFullCode,25188 -code-creation,Stub,12,0x2b830820,88,BinaryOpStub_SUB_Alloc_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,25228 -code-creation,LazyCompile,0,0x2b830880,908,DataViewConstructor native typedarray.js:209,0x4423b298,~ -timer-event-end,V8.CompileLazy,25241 -code-creation,LazyCompile,0,0x2b830880,908,DataViewConstructor native typedarray.js:209,0x4423b298, -code-creation,KeyedStorePolymorphicIC,10,0x2b830c20,101, -code-creation,KeyedStorePolymorphicIC,10,0x2b830c20,101,args_count: 0 -code-creation,CallIC,7,0x2b830ca0,144,Instantiate -code-creation,CallIC,7,0x2b830d40,129,InstantiateFunction -code-creation,LoadIC,5,0x2b830de0,103,kApiFunctionCache -code-creation,KeyedLoadPolymorphicIC,6,0x2b830e60,105, -code-creation,CallIC,7,0x2b830ee0,129,ConfigureTemplateInstance -code-creation,CallIC,7,0x2b830f80,129,Instantiate -code-creation,Stub,2,0x2b831020,116,valueOf -code-creation,LoadPolymorphicIC,5,0x2b8310a0,105,valueOf -code-creation,Stub,2,0x2b831120,98,toString -code-creation,LoadPolymorphicIC,5,0x2b8311a0,105,toString -code-creation,CallIC,7,0x2b831220,128,ToPrimitive -code-creation,CallIC,7,0x2b8312a0,128,DefaultNumber -code-creation,CallIC,7,0x2b831320,129,ToObject -code-creation,CallIC,7,0x2b8313c0,128,IsPrimitive -code-creation,CallIC,7,0x2b831440,129,FunctionSourceString -code-creation,CallIC,7,0x2b8314e0,128,ToNumber -tick,0xf776d430,25914,0,0x90ec418,0,0x2b82cda7,0x2b825c84,0x2b822ca7,0x2b82af24,0x2b81b4f0,0x2b82beff,0x2b81b59f,0x2b82beff,0x2b81b589,0x2b82b0b8,0x2b81b4f0 -timer-event-start,V8.ParseLazyMicroSeconds,25965 -timer-event-end,V8.ParseLazyMicroSeconds,25985 -timer-event-start,V8.CompileLazy,25991 -timer-event-start,V8.RecompileSynchronous,25996 -code-creation,LazyCompile,0,0x2b831560,184,valueOf native v8natives.js:245,0x4421ee84,~ -timer-event-end,V8.RecompileSynchronous,26121 -code-creation,LazyCompile,1,0x2b831620,180,valueOf native v8natives.js:245,0x4421ee84,* -timer-event-end,V8.CompileLazy,26138 -timer-event-start,V8.ParseLazyMicroSeconds,26144 -timer-event-end,V8.ParseLazyMicroSeconds,26156 -timer-event-start,V8.CompileLazy,26161 -timer-event-start,V8.RecompileSynchronous,26166 -code-creation,LazyCompile,0,0x2b8316e0,220,IsPrimitive native runtime.js:636,0x44226330,~ -timer-event-end,V8.RecompileSynchronous,26250 -code-creation,LazyCompile,1,0x2b8317c0,170,IsPrimitive native runtime.js:636,0x44226330,* -timer-event-end,V8.CompileLazy,26266 -timer-event-start,V8.ParseLazyMicroSeconds,26271 -timer-event-end,V8.ParseLazyMicroSeconds,26282 -timer-event-start,V8.CompileLazy,26286 -timer-event-start,V8.RecompileSynchronous,26291 -code-creation,LazyCompile,0,0x2b831880,184,toString native v8natives.js:1721,0x44220834,~ -timer-event-end,V8.RecompileSynchronous,26361 -code-creation,LazyCompile,1,0x2b831940,180,toString native v8natives.js:1721,0x44220834,* -timer-event-end,V8.CompileLazy,26376 -code-creation,LoadIC,5,0x2b831a00,103,global -code-creation,LoadIC,5,0x2b831a80,114,ArrayBuffer -code-creation,CallMiss,7,0x2b831b00,180,args_count: 0 -code-creation,CallIC,7,0x2b831bc0,129,SetUpArrayBuffer -code-creation,LoadIC,5,0x2b831c60,103,$ArrayBuffer -code-creation,LoadIC,5,0x2b831ce0,103,ArrayBufferConstructor -code-creation,LazyCompile,0,0x2b82e180,324,ArrayBufferConstructor native arraybuffer.js:34,0x4423a9a0, -code-creation,LoadIC,5,0x2b831d60,103,$Object -code-creation,LoadIC,5,0x2b831de0,103,ArrayBufferGetByteLength -code-creation,CallIC,7,0x2b831e60,129,InstallGetter -code-creation,LoadIC,5,0x2b831f00,103,ArrayBufferSlice -code-creation,CallIC,7,0x2b831f80,133,$Array -code-creation,CallIC,7,0x2b832020,129,InstallFunctions -code-creation,LoadPolymorphicIC,5,0x2b8320c0,105,length -code-creation,LoadPolymorphicIC,5,0x2b832140,105,length -code-creation,KeyedLoadPolymorphicIC,6,0x2b8321c0,105, -code-creation,LoadIC,5,0x2b832240,114,Uint8Array -code-creation,CallIC,7,0x2b8322c0,129,SetupTypedArray -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LoadIC,5,0x2b832360,103,$Object -code-creation,LoadIC,5,0x2b8323e0,114,Int8Array -code-creation,CallIC,7,0x2b832460,129,CreateTypedArrayConstructor -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LoadIC,5,0x2b832500,103,TypedArrayGetBuffer -code-creation,LoadIC,5,0x2b832580,103,TypedArrayGetByteOffset -code-creation,LoadIC,5,0x2b832600,103,TypedArrayGetByteLength -code-creation,LoadIC,5,0x2b832680,103,TypedArrayGetLength -code-creation,CallIC,7,0x2b832700,129,CreateSubArray -code-creation,LoadIC,5,0x2b8327a0,103,TypedArraySet -code-creation,CallIC,7,0x2b832820,133,$Array -code-creation,LoadIC,5,0x2b8328c0,114,Uint16Array -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -tick,0xf776d430,26979,0,0x90ec418,0,0x2b82e9b7,0x2b82e593 -code-creation,LoadIC,5,0x2b832940,114,Int16Array -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LoadIC,5,0x2b8329c0,114,Uint32Array -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LoadIC,5,0x2b832a40,114,Int32Array -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LoadIC,5,0x2b832ac0,114,Float32Array -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LoadIC,5,0x2b832b40,114,Float64Array -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LoadIC,5,0x2b832bc0,114,Uint8ClampedArray -code-creation,LazyCompile,0,0x2b82f8a0,824, native typedarray.js:88,0x4423c580, -code-creation,LoadIC,5,0x2b832c40,114,DataView -code-creation,CallIC,7,0x2b832cc0,129,SetupDataView -code-creation,LoadIC,5,0x2b832d60,103,$DataView -code-creation,LoadIC,5,0x2b832de0,103,DataViewConstructor -code-creation,LazyCompile,0,0x2b830880,908,DataViewConstructor native typedarray.js:209,0x4423b298, -code-creation,LoadIC,5,0x2b832e60,103,DataViewGetBuffer -code-creation,LoadIC,5,0x2b832ee0,103,DataViewGetByteOffset -code-creation,LoadIC,5,0x2b832f60,103,DataViewGetByteLength -code-creation,LoadIC,5,0x2b832fe0,103,DataViewGetInt8 -code-creation,LoadIC,5,0x2b833060,103,DataViewSetInt8 -code-creation,LoadIC,5,0x2b8330e0,103,DataViewGetUint8 -code-creation,LoadIC,5,0x2b833160,103,DataViewSetUint8 -code-creation,LoadIC,5,0x2b8331e0,103,DataViewGetInt16 -code-creation,LoadIC,5,0x2b833260,103,DataViewSetInt16 -code-creation,LoadIC,5,0x2b8332e0,103,DataViewGetUint16 -code-creation,LoadIC,5,0x2b833360,103,DataViewSetUint16 -code-creation,LoadIC,5,0x2b8333e0,103,DataViewGetInt32 -code-creation,LoadIC,5,0x2b833460,103,DataViewSetInt32 -code-creation,LoadIC,5,0x2b8334e0,103,DataViewGetUint32 -code-creation,LoadIC,5,0x2b833560,103,DataViewSetUint32 -code-creation,LoadIC,5,0x2b8335e0,103,DataViewGetFloat32 -code-creation,LoadIC,5,0x2b833660,103,DataViewSetFloat32 -code-creation,LoadIC,5,0x2b8336e0,103,DataViewGetFloat64 -code-creation,LoadIC,5,0x2b833760,103,DataViewSetFloat64 -code-creation,CallMiss,7,0x2b8337e0,189,args_count: 32 -code-creation,CallIC,7,0x2b8338a0,136,$Array -code-creation,LoadIC,5,0x2b833940,93,length -timer-event-start,V8.ParseMicroSeconds,28734 -timer-event-start,V8.PreParseMicroSeconds,28760 -timer-event-end,V8.PreParseMicroSeconds,28785 -timer-event-start,V8.PreParseMicroSeconds,28796 -timer-event-end,V8.PreParseMicroSeconds,28803 -timer-event-start,V8.PreParseMicroSeconds,28810 -timer-event-end,V8.PreParseMicroSeconds,28817 -timer-event-start,V8.PreParseMicroSeconds,28828 -timer-event-end,V8.PreParseMicroSeconds,28862 -timer-event-start,V8.PreParseMicroSeconds,28872 -timer-event-end,V8.PreParseMicroSeconds,28878 -timer-event-start,V8.PreParseMicroSeconds,28884 -timer-event-end,V8.PreParseMicroSeconds,28890 -timer-event-start,V8.PreParseMicroSeconds,28905 -timer-event-end,V8.PreParseMicroSeconds,28931 -timer-event-start,V8.PreParseMicroSeconds,28938 -timer-event-end,V8.PreParseMicroSeconds,28970 -timer-event-start,V8.PreParseMicroSeconds,28980 -timer-event-end,V8.PreParseMicroSeconds,28989 -timer-event-start,V8.PreParseMicroSeconds,28995 -timer-event-end,V8.PreParseMicroSeconds,29005 -timer-event-start,V8.PreParseMicroSeconds,29012 -timer-event-end,V8.PreParseMicroSeconds,29019 -timer-event-start,V8.PreParseMicroSeconds,29026 -timer-event-end,V8.PreParseMicroSeconds,29045 -timer-event-start,V8.PreParseMicroSeconds,29052 -timer-event-end,V8.PreParseMicroSeconds,29059 -timer-event-start,V8.PreParseMicroSeconds,29066 -timer-event-end,V8.PreParseMicroSeconds,29072 -timer-event-start,V8.PreParseMicroSeconds,29078 -timer-event-end,V8.PreParseMicroSeconds,29087 -tick,0xf776d430,29099,0,0x0,2 -timer-event-start,V8.PreParseMicroSeconds,29187 -timer-event-end,V8.PreParseMicroSeconds,29241 -timer-event-start,V8.PreParseMicroSeconds,29253 -timer-event-end,V8.PreParseMicroSeconds,29261 -timer-event-start,V8.PreParseMicroSeconds,29274 -timer-event-end,V8.PreParseMicroSeconds,29286 -timer-event-start,V8.PreParseMicroSeconds,29293 -timer-event-end,V8.PreParseMicroSeconds,29305 -timer-event-start,V8.PreParseMicroSeconds,29314 -timer-event-end,V8.PreParseMicroSeconds,29324 -timer-event-start,V8.PreParseMicroSeconds,29331 -timer-event-end,V8.PreParseMicroSeconds,29344 -timer-event-start,V8.PreParseMicroSeconds,29355 -timer-event-end,V8.PreParseMicroSeconds,29369 -timer-event-start,V8.PreParseMicroSeconds,29375 -timer-event-end,V8.PreParseMicroSeconds,29391 -timer-event-start,V8.PreParseMicroSeconds,29400 -timer-event-end,V8.PreParseMicroSeconds,29408 -timer-event-start,V8.PreParseMicroSeconds,29416 -timer-event-end,V8.PreParseMicroSeconds,29422 -timer-event-start,V8.PreParseMicroSeconds,29435 -timer-event-end,V8.PreParseMicroSeconds,29442 -timer-event-start,V8.PreParseMicroSeconds,29448 -timer-event-end,V8.PreParseMicroSeconds,29461 -timer-event-start,V8.PreParseMicroSeconds,29467 -timer-event-end,V8.PreParseMicroSeconds,29480 -timer-event-start,V8.PreParseMicroSeconds,29489 -timer-event-end,V8.PreParseMicroSeconds,29508 -timer-event-start,V8.PreParseMicroSeconds,29516 -timer-event-end,V8.PreParseMicroSeconds,29547 -timer-event-start,V8.PreParseMicroSeconds,29561 -timer-event-end,V8.PreParseMicroSeconds,29579 -timer-event-start,V8.PreParseMicroSeconds,29587 -timer-event-end,V8.PreParseMicroSeconds,29605 -timer-event-start,V8.PreParseMicroSeconds,29613 -timer-event-end,V8.PreParseMicroSeconds,29639 -timer-event-start,V8.PreParseMicroSeconds,29646 -timer-event-end,V8.PreParseMicroSeconds,29667 -timer-event-start,V8.PreParseMicroSeconds,29677 -timer-event-end,V8.PreParseMicroSeconds,29702 -timer-event-start,V8.PreParseMicroSeconds,29709 -timer-event-end,V8.PreParseMicroSeconds,29735 -timer-event-start,V8.PreParseMicroSeconds,29741 -timer-event-end,V8.PreParseMicroSeconds,29758 -timer-event-start,V8.PreParseMicroSeconds,29764 -timer-event-end,V8.PreParseMicroSeconds,29773 -timer-event-start,V8.PreParseMicroSeconds,29781 -timer-event-end,V8.PreParseMicroSeconds,29796 -timer-event-start,V8.PreParseMicroSeconds,29805 -timer-event-end,V8.PreParseMicroSeconds,29813 -timer-event-start,V8.PreParseMicroSeconds,29821 -timer-event-end,V8.PreParseMicroSeconds,29839 -timer-event-start,V8.PreParseMicroSeconds,29847 -timer-event-end,V8.PreParseMicroSeconds,29861 -timer-event-start,V8.PreParseMicroSeconds,29868 -timer-event-end,V8.PreParseMicroSeconds,29873 -timer-event-start,V8.PreParseMicroSeconds,29880 -timer-event-end,V8.PreParseMicroSeconds,29908 -timer-event-start,V8.PreParseMicroSeconds,29914 -timer-event-end,V8.PreParseMicroSeconds,29923 -timer-event-start,V8.PreParseMicroSeconds,29930 -timer-event-end,V8.PreParseMicroSeconds,29937 -timer-event-start,V8.PreParseMicroSeconds,29944 -timer-event-end,V8.PreParseMicroSeconds,29955 -timer-event-start,V8.PreParseMicroSeconds,29960 -timer-event-end,V8.PreParseMicroSeconds,29970 -timer-event-start,V8.PreParseMicroSeconds,29977 -timer-event-end,V8.PreParseMicroSeconds,29982 -timer-event-start,V8.PreParseMicroSeconds,29989 -timer-event-end,V8.PreParseMicroSeconds,29999 -timer-event-start,V8.PreParseMicroSeconds,30031 -timer-event-end,V8.PreParseMicroSeconds,30041 -timer-event-start,V8.PreParseMicroSeconds,30047 -timer-event-end,V8.PreParseMicroSeconds,30054 -timer-event-start,V8.PreParseMicroSeconds,30060 -timer-event-end,V8.PreParseMicroSeconds,30069 -timer-event-start,V8.PreParseMicroSeconds,30080 -timer-event-end,V8.PreParseMicroSeconds,30106 -timer-event-start,V8.PreParseMicroSeconds,30113 -timer-event-end,V8.PreParseMicroSeconds,30121 -timer-event-start,V8.PreParseMicroSeconds,30127 -timer-event-end,V8.PreParseMicroSeconds,30133 -timer-event-start,V8.PreParseMicroSeconds,30139 -timer-event-end,V8.PreParseMicroSeconds,30148 -tick,0x825e06c,30162,0,0x0,2 -timer-event-start,V8.PreParseMicroSeconds,30217 -timer-event-end,V8.PreParseMicroSeconds,30285 -timer-event-start,V8.PreParseMicroSeconds,30293 -timer-event-end,V8.PreParseMicroSeconds,30319 -timer-event-start,V8.PreParseMicroSeconds,30326 -timer-event-end,V8.PreParseMicroSeconds,30344 -timer-event-start,V8.PreParseMicroSeconds,30350 -timer-event-end,V8.PreParseMicroSeconds,30367 -timer-event-start,V8.PreParseMicroSeconds,30374 -timer-event-end,V8.PreParseMicroSeconds,30385 -timer-event-start,V8.PreParseMicroSeconds,30392 -timer-event-end,V8.PreParseMicroSeconds,30400 -timer-event-start,V8.PreParseMicroSeconds,30407 -timer-event-end,V8.PreParseMicroSeconds,30415 -timer-event-start,V8.PreParseMicroSeconds,30429 -timer-event-end,V8.PreParseMicroSeconds,30446 -timer-event-start,V8.PreParseMicroSeconds,30456 -timer-event-end,V8.PreParseMicroSeconds,30461 -timer-event-start,V8.PreParseMicroSeconds,30469 -timer-event-end,V8.PreParseMicroSeconds,30480 -timer-event-start,V8.PreParseMicroSeconds,30488 -timer-event-end,V8.PreParseMicroSeconds,30497 -timer-event-start,V8.PreParseMicroSeconds,30503 -timer-event-end,V8.PreParseMicroSeconds,30511 -timer-event-start,V8.PreParseMicroSeconds,30517 -timer-event-end,V8.PreParseMicroSeconds,30528 -timer-event-start,V8.PreParseMicroSeconds,30535 -timer-event-end,V8.PreParseMicroSeconds,30539 -timer-event-start,V8.PreParseMicroSeconds,30546 -timer-event-end,V8.PreParseMicroSeconds,30550 -timer-event-start,V8.PreParseMicroSeconds,30568 -timer-event-end,V8.PreParseMicroSeconds,30577 -timer-event-start,V8.PreParseMicroSeconds,30586 -timer-event-end,V8.PreParseMicroSeconds,30591 -timer-event-start,V8.PreParseMicroSeconds,30600 -timer-event-end,V8.PreParseMicroSeconds,30610 -timer-event-start,V8.PreParseMicroSeconds,30616 -timer-event-end,V8.PreParseMicroSeconds,30621 -timer-event-start,V8.PreParseMicroSeconds,30630 -timer-event-end,V8.PreParseMicroSeconds,30638 -timer-event-start,V8.PreParseMicroSeconds,30649 -timer-event-end,V8.PreParseMicroSeconds,30665 -timer-event-start,V8.PreParseMicroSeconds,30672 -timer-event-end,V8.PreParseMicroSeconds,30682 -timer-event-start,V8.PreParseMicroSeconds,30692 -timer-event-end,V8.PreParseMicroSeconds,30706 -timer-event-start,V8.PreParseMicroSeconds,30719 -timer-event-end,V8.PreParseMicroSeconds,30730 -timer-event-start,V8.PreParseMicroSeconds,30737 -timer-event-end,V8.PreParseMicroSeconds,30749 -tick,0x82b07f6,31208,0,0x0,2 -tick,0x824d3ad,32274,0,0x0,2 -tick,0x82b07c6,33327,0,0x0,2 -tick,0x82b0804,34401,0,0x0,2 -tick,0x81fc62c,35474,0,0x0,2 -tick,0x81fc62c,36534,0,0x0,2 -tick,0x824e954,37593,0,0x0,2 -tick,0x82b07f3,38662,0,0x0,2 -tick,0x81fc625,39722,0,0x0,2 -tick,0x81fc61e,40783,0,0x0,2 -tick,0x821c1a1,41846,0,0x0,2 -tick,0x81fc62c,42913,0,0x0,2 -timer-event-start,V8.PreParseMicroSeconds,43415 -timer-event-end,V8.PreParseMicroSeconds,43428 -timer-event-start,V8.PreParseMicroSeconds,43446 -timer-event-end,V8.PreParseMicroSeconds,43481 -timer-event-end,V8.ParseMicroSeconds,43493 -timer-event-start,V8.Compile,43498 -timer-event-start,V8.CompileFullCode,43528 -timer-event-end,V8.CompileFullCode,43671 -code-creation,Script,0,0x2b8339a0,6060,bsuite/kraken-once/stanford-crypto-ccm.js,0x2f33b684,~ -timer-event-end,V8.Compile,43688 -timer-event-start,V8.Execute,43739 -timer-event-start,V8.ParseLazyMicroSeconds,43914 -timer-event-end,V8.ParseLazyMicroSeconds,43936 -timer-event-start,V8.CompileLazy,43942 -timer-event-start,V8.CompileFullCode,43947 -timer-event-end,V8.CompileFullCode,43966 -tick,0x820b498,43978,0,0x0,0,0x2b83464f -code-creation,LazyCompile,0,0x2b835160,372,sjcl.hash.sha256 bsuite/kraken-once/stanford-crypto-ccm.js:15,0x2f339fb0,~ -timer-event-end,V8.CompileLazy,44194 -code-creation,Stub,2,0x2b8352e0,188,KeyedLoadElementStub -code-creation,KeyedLoadIC,6,0x2b8353a0,91, -code-creation,CallPreMonomorphic,7,0x2b835400,178,args_count: 0 -timer-event-start,V8.ParseLazyMicroSeconds,44292 -timer-event-end,V8.ParseLazyMicroSeconds,44326 -timer-event-start,V8.CompileLazy,44333 -timer-event-start,V8.CompileFullCode,44340 -code-creation,Stub,12,0x2b8354c0,88,BinaryOpStub_MOD_Alloc_Uninitialized+Uninitialized -code-creation,Stub,12,0x2b835520,88,BinaryOpStub_MUL_Alloc_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,44389 -code-creation,LazyCompile,0,0x2b835580,906,sjcl.hash.sha256.w bsuite/kraken-once/stanford-crypto-ccm.js:17,0x2f33a190,~ -timer-event-end,V8.CompileLazy,44407 -code-creation,Stub,12,0x2b835920,167,BinaryOpStub_MUL_Alloc_Smi+Smi -code-creation,Stub,13,0x2b8359e0,122,CompareICStub -timer-event-start,V8.ParseLazyMicroSeconds,44439 -timer-event-end,V8.ParseLazyMicroSeconds,44460 -timer-event-start,V8.CompileLazy,44465 -timer-event-start,V8.CompileFullCode,44471 -code-creation,Stub,2,0x2b835a60,501,MathPowStub -timer-event-end,V8.CompileFullCode,44505 -code-creation,LazyCompile,0,0x2b835c60,304,pow native math.js:181,0x4422259c,~ -timer-event-end,V8.CompileLazy,44517 -timer-event-start,V8.ParseLazyMicroSeconds,44522 -timer-event-end,V8.ParseLazyMicroSeconds,44534 -timer-event-start,V8.CompileLazy,44539 -timer-event-start,V8.CompileFullCode,44545 -code-creation,Stub,12,0x2b835da0,88,BinaryOpStub_MUL_OverwriteLeft_Uninitialized+Uninitialized -code-creation,Stub,12,0x2b835e00,88,BinaryOpStub_BIT_OR_OverwriteLeft_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,44570 -code-creation,LazyCompile,0,0x2b835e60,228,a bsuite/kraken-once/stanford-crypto-ccm.js:17,0x2f33d150,~ -timer-event-end,V8.CompileLazy,44582 -timer-event-start,V8.ParseLazyMicroSeconds,44590 -timer-event-end,V8.ParseLazyMicroSeconds,44609 -timer-event-start,V8.CompileLazy,44614 -timer-event-start,V8.CompileFullCode,44619 -code-creation,Stub,12,0x2b835f60,88,BinaryOpStub_SHR_Alloc_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,44646 -code-creation,LazyCompile,0,0x2b835fc0,344,floor native math.js:99,0x4422241c,~ -timer-event-end,V8.CompileLazy,44657 -code-creation,Stub,13,0x2b836120,404,CompareICStub -code-creation,Stub,13,0x2b8362c0,232,CompareICStub -code-creation,Stub,13,0x2b8363c0,404,CompareICStub -code-creation,Stub,13,0x2b836560,240,CompareICStub -code-creation,Stub,12,0x2b836660,349,BinaryOpStub_SHR_Alloc_Number+Smi -code-creation,Stub,12,0x2b8367c0,246,BinaryOpStub_SUB_Alloc_Number+Smi -code-creation,Stub,12,0x2b8368c0,245,BinaryOpStub_MUL_OverwriteLeft_Number+Number -code-creation,Stub,12,0x2b8369c0,407,BinaryOpStub_BIT_OR_OverwriteLeft_Number+Smi -code-creation,Stub,2,0x2b836b60,1808,RecordWriteStub -code-creation,Stub,2,0x2b837280,606,KeyedStoreElementStub -code-creation,KeyedStoreIC,10,0x2b8374e0,91, -tick,0x31e6020f,45036,0,0x2b836b61,0,0x2b8357c1,0x2b835208,0x2b83464f -code-creation,LoadIC,5,0x2b837540,114,Math -code-creation,CallIC,7,0x2b8375c0,289,floor -code-creation,Stub,2,0x2b837700,80,LoadFieldStub -code-creation,Stub,2,0x2b837760,95,N -code-creation,LoadIC,5,0x2b8377c0,93,N -code-creation,CallIC,7,0x2b837820,113,pow -code-creation,Stub,2,0x2b8378a0,80,LoadFieldStub -code-creation,Stub,2,0x2b837900,95,a -code-creation,LoadIC,5,0x2b837960,93,a -code-creation,Stub,12,0x2b8379c0,190,BinaryOpStub_MOD_Alloc_Smi+Smi -code-creation,Stub,12,0x2b837a80,181,BinaryOpStub_MOD_Alloc_Smi+Smi -timer-event-start,V8.ParseLazyMicroSeconds,45383 -timer-event-end,V8.ParseLazyMicroSeconds,45402 -timer-event-start,V8.CompileLazy,45408 -timer-event-start,V8.CompileFullCode,45413 -timer-event-end,V8.CompileFullCode,45428 -code-creation,LazyCompile,0,0x2b837b40,264,sjcl.hash.sha256.reset bsuite/kraken-once/stanford-crypto-ccm.js:16,0x2f33a070,~ -timer-event-end,V8.CompileLazy,45442 -code-creation,StoreIC,9,0x2b837c60,138,codec -code-creation,StoreIC,9,0x2b837d00,141,hex -tick,0x8294f6f,46096,0,0xff820124,0,0x2b834ff0 -code-creation,StoreIC,9,0x2b837da0,171,ccm -timer-event-start,V8.ParseLazyMicroSeconds,46605 -timer-event-end,V8.ParseLazyMicroSeconds,46625 -timer-event-start,V8.CompileLazy,46630 -timer-event-start,V8.CompileFullCode,46635 -timer-event-end,V8.CompileFullCode,46649 -code-creation,LazyCompile,0,0x2b837e60,300,sjcl.test.TestCase bsuite/kraken-once/stanford-crypto-ccm.js:99,0x2f33b210,~ -timer-event-end,V8.CompileLazy,46663 -timer-event-start,V8.ParseLazyMicroSeconds,46681 -timer-event-end,V8.ParseLazyMicroSeconds,46712 -timer-event-start,V8.CompileLazy,46718 -timer-event-start,V8.CompileFullCode,46725 -code-creation,CallInitialize,7,0x2b837fa0,178,args_count: 4 -timer-event-end,V8.CompileFullCode,46771 -code-creation,LazyCompile,0,0x2b838060,953,sjcl.test.run bsuite/kraken-once/stanford-crypto-ccm.js:180,0x2f33b4b0,~ -timer-event-end,V8.CompileLazy,46788 -code-creation,Stub,13,0x2b838420,485,CompareICStub -code-creation,CallIC,7,0x2b838620,128,ToString -code-creation,CallPreMonomorphic,7,0x2b8386a0,178,args_count: 4 -timer-event-start,V8.ParseLazyMicroSeconds,46859 -timer-event-end,V8.ParseLazyMicroSeconds,46876 -timer-event-start,V8.CompileLazy,46881 -timer-event-start,V8.CompileFullCode,46888 -code-creation,CallInitialize,7,0x2b838760,178,args_count: 5 -timer-event-end,V8.CompileFullCode,46910 -code-creation,LazyCompile,0,0x2b838820,320,browserUtil.cpsMap bsuite/kraken-once/stanford-crypto-ccm.js:63,0x2f33b030,~ -timer-event-end,V8.CompileLazy,46922 -code-creation,CallPreMonomorphic,7,0x2b838960,178,args_count: 5 -timer-event-start,V8.ParseLazyMicroSeconds,46937 -timer-event-end,V8.ParseLazyMicroSeconds,46959 -timer-event-start,V8.CompileLazy,46965 -timer-event-start,V8.CompileFullCode,46972 -code-creation,Stub,2,0x2b838a20,172,FastNewContextStub -timer-event-end,V8.CompileFullCode,46995 -code-creation,LazyCompile,0,0x2b838ae0,420,browserUtil.cpsIterate bsuite/kraken-once/stanford-crypto-ccm.js:49,0x2f33afd0,~ -timer-event-end,V8.CompileLazy,47008 -timer-event-start,V8.ParseLazyMicroSeconds,47013 -timer-event-end,V8.ParseLazyMicroSeconds,47029 -timer-event-start,V8.CompileLazy,47034 -timer-event-start,V8.CompileFullCode,47041 -code-creation,Stub,2,0x2b838ca0,328,CallFunctionStub_Args0_Recording -timer-event-end,V8.CompileFullCode,47070 -code-creation,LazyCompile,0,0x2b838e00,372,go bsuite/kraken-once/stanford-crypto-ccm.js:50,0x2f33da7c,~ -timer-event-end,V8.CompileLazy,47082 -timer-event-start,V8.ParseLazyMicroSeconds,47088 -timer-event-end,V8.ParseLazyMicroSeconds,47110 -timer-event-start,V8.CompileLazy,47115 -timer-event-start,V8.CompileFullCode,47121 -timer-event-end,V8.CompileFullCode,47134 -code-creation,LazyCompile,0,0x2b838f80,236, bsuite/kraken-once/stanford-crypto-ccm.js:64,0x2f33d9d4,~ -timer-event-end,V8.CompileLazy,47146 -tick,0xf776d430,47160,0,0x90ec418,2,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,KeyedLoadIC,6,0x2b839080,91, -timer-event-start,V8.ParseLazyMicroSeconds,47296 -timer-event-end,V8.ParseLazyMicroSeconds,47317 -timer-event-start,V8.CompileLazy,47323 -timer-event-start,V8.CompileFullCode,47329 -code-creation,CallInitialize,7,0x2b8390e0,178,args_count: 3 -timer-event-end,V8.CompileFullCode,47355 -code-creation,LazyCompile,0,0x2b8391a0,260, bsuite/kraken-once/stanford-crypto-ccm.js:192,0x2f33d920,~ -timer-event-end,V8.CompileLazy,47368 -code-creation,CallPreMonomorphic,7,0x2b8392c0,178,args_count: 3 -timer-event-start,V8.ParseLazyMicroSeconds,47390 -timer-event-end,V8.ParseLazyMicroSeconds,47409 -timer-event-start,V8.CompileLazy,47415 -timer-event-start,V8.CompileFullCode,47421 -timer-event-end,V8.CompileFullCode,47438 -code-creation,LazyCompile,0,0x2b839380,344,sjcl.test.TestCase.run bsuite/kraken-once/stanford-crypto-ccm.js:168,0x2f33b450,~ -timer-event-end,V8.CompileLazy,47452 -timer-event-start,V8.ParseLazyMicroSeconds,47462 -timer-event-end,V8.ParseLazyMicroSeconds,47476 -timer-event-start,V8.CompileLazy,47481 -timer-event-start,V8.CompileFullCode,47485 -timer-event-end,V8.CompileFullCode,47496 -code-creation,LazyCompile,0,0x2b8394e0,208,valueOf native date.js:361,0x44218984,~ -timer-event-end,V8.CompileLazy,47507 -timer-event-start,V8.ParseLazyMicroSeconds,47517 -timer-event-end,V8.ParseLazyMicroSeconds,47526 -timer-event-start,V8.CompileLazy,47531 -timer-event-start,V8.CompileFullCode,47536 -timer-event-end,V8.CompileFullCode,47545 -code-creation,LazyCompile,0,0x2b8395c0,192,browserUtil.pauseAndThen bsuite/kraken-once/stanford-crypto-ccm.js:47,0x2f33af70,~ -timer-event-end,V8.CompileLazy,47557 -timer-event-start,V8.ParseLazyMicroSeconds,47561 -timer-event-end,V8.ParseLazyMicroSeconds,47571 -timer-event-start,V8.CompileLazy,47576 -timer-event-start,V8.CompileFullCode,47581 -timer-event-end,V8.CompileFullCode,47591 -code-creation,LazyCompile,0,0x2b839680,192, bsuite/kraken-once/stanford-crypto-ccm.js:171,0x2f33dc70,~ -timer-event-end,V8.CompileLazy,47602 -timer-event-start,V8.ParseLazyMicroSeconds,47608 -timer-event-end,V8.ParseLazyMicroSeconds,47674 -timer-event-start,V8.CompileLazy,47681 -timer-event-start,V8.CompileFullCode,47693 -code-creation,Stub,2,0x2b839740,196,FastNewContextStub -code-creation,Stub,12,0x2b839820,88,BinaryOpStub_DIV_Alloc_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,47755 -code-creation,LazyCompile,0,0x2b839880,716, bsuite/kraken-once/stanford-crypto-ccm.js:7235,0x2f33b5d0,~ -timer-event-end,V8.CompileLazy,47768 -code-creation,Stub,12,0x2b839b60,196,BinaryOpStub_DIV_Alloc_Smi+Smi -timer-event-start,V8.ParseLazyMicroSeconds,47798 -timer-event-end,V8.ParseLazyMicroSeconds,47845 -timer-event-start,V8.CompileLazy,47851 -timer-event-start,V8.CompileFullCode,47863 -code-creation,Stub,12,0x2b839c40,88,BinaryOpStub_MUL_OverwriteRight_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,47917 -code-creation,LazyCompile,0,0x2b839ca0,2065, bsuite/kraken-once/stanford-crypto-ccm.js:7243,0x2f33de10, -timer-event-end,V8.CompileLazy,47930 -code-creation,Stub,12,0x2b83a4c0,167,BinaryOpStub_MUL_OverwriteRight_Smi+Smi -timer-event-start,V8.ParseLazyMicroSeconds,47958 -timer-event-end,V8.ParseLazyMicroSeconds,47986 -timer-event-start,V8.CompileLazy,47992 -timer-event-start,V8.CompileFullCode,47998 -code-creation,Stub,12,0x2b83a580,88,BinaryOpStub_BIT_XOR_Alloc_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,48031 -code-creation,LazyCompile,0,0x2b83a5e0,717,sjcl.codec.hex.toBits bsuite/kraken-once/stanford-crypto-ccm.js:13,0x2f339e90,~ -timer-event-end,V8.CompileLazy,48044 -timer-event-start,V8.ParseLazyMicroSeconds,48061 -timer-event-end,V8.ParseLazyMicroSeconds,48119 -timer-event-start,V8.CompileLazy,48126 -timer-event-start,V8.CompileFullCode,48135 -timer-event-end,V8.CompileFullCode,48188 -code-creation,LazyCompile,0,0x2b83a8c0,1601,DoConstructRegExp native regexp.js:39,0x44222a28,~ -timer-event-end,V8.CompileLazy,48203 -timer-event-start,V8.ParseLazyMicroSeconds,48213 -tick,0x80eabd3,48226,0,0xff81fb44,2,0x2b821ae3,0x2b83a6a4,0x2b839e4e,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-end,V8.ParseLazyMicroSeconds,48288 -timer-event-start,V8.CompileLazy,48309 -timer-event-start,V8.CompileFullCode,48323 -timer-event-end,V8.CompileFullCode,48372 -code-creation,LazyCompile,0,0x2b83af20,1284,charAt native string.js:64,0x44215fa8,~ -timer-event-end,V8.CompileLazy,48386 -code-creation,Stub,14,0x2b83b440,144,CompareNilICStub(NullValue)(MonomorphicMap) -code-creation,Stub,5,0x2b83b4e0,97,StringLengthStub -timer-event-start,V8.ParseLazyMicroSeconds,48435 -timer-event-end,V8.ParseLazyMicroSeconds,48536 -timer-event-start,V8.CompileLazy,48543 -timer-event-start,V8.CompileFullCode,48555 -code-creation,Stub,2,0x2b83b560,828,SubStringStub -timer-event-end,V8.CompileFullCode,48640 -code-creation,LazyCompile,0,0x2b83b8a0,2428,replace native string.js:213,0x44216248,~ -timer-event-end,V8.CompileLazy,48654 -code-creation,StoreIC,9,0x2b83c220,135,lastIndex -code-creation,Stub,14,0x2b83c2c0,124,CompareNilICStub(NullValue)(Null) -code-creation,RegExp,4,0x2b83c340,758,\\s|0x -timer-event-start,V8.ParseLazyMicroSeconds,48827 -timer-event-end,V8.ParseLazyMicroSeconds,48873 -timer-event-start,V8.CompileLazy,48879 -timer-event-start,V8.CompileFullCode,48886 -timer-event-end,V8.CompileFullCode,48916 -code-creation,LazyCompile,0,0x2b83c640,960,substr native string.js:749,0x44216608,~ -timer-event-end,V8.CompileLazy,48930 -code-creation,Stub,14,0x2b83ca00,144,CompareNilICStub(NullValue)(MonomorphicMap) -code-creation,Stub,13,0x2b83caa0,122,CompareICStub -timer-event-start,V8.ParseLazyMicroSeconds,48959 -timer-event-end,V8.ParseLazyMicroSeconds,49000 -timer-event-start,V8.CompileLazy,49006 -timer-event-start,V8.CompileFullCode,49012 -code-creation,Stub,12,0x2b83cb20,88,BinaryOpStub_BIT_OR_Alloc_Uninitialized+Uninitialized -code-creation,Stub,12,0x2b83cb80,88,BinaryOpStub_SAR_Alloc_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,49062 -code-creation,LazyCompile,0,0x2b83cbe0,1096,parseInt native v8natives.js:130,0x4421ec1c,~ -timer-event-end,V8.CompileLazy,49075 -code-creation,Stub,12,0x2b83d040,399,BinaryOpStub_BIT_XOR_Alloc_Number+Smi -code-creation,CallIC,7,0x2b83d1e0,147,substr -code-creation,CallIC,7,0x2b83d280,129,parseInt -code-creation,Stub,2,0x2b83d320,1433,RecordWriteStub -code-creation,Stub,2,0x2b83d8c0,611,RecordWriteStub -code-creation,CallIC,7,0x2b83db40,656,push -timer-event-start,V8.ParseLazyMicroSeconds,49192 -timer-event-end,V8.ParseLazyMicroSeconds,49229 -timer-event-start,V8.CompileLazy,49235 -timer-event-start,V8.CompileFullCode,49242 -code-creation,Stub,12,0x2b83dde0,88,BinaryOpStub_SAR_OverwriteRight_Uninitialized+Uninitialized -code-creation,Stub,12,0x2b83de40,88,BinaryOpStub_BIT_AND_OverwriteRight_Uninitialized+Uninitialized -tick,0x8250358,49284,0,0xff81fe84,2,0x2b83a871,0x2b839e4e,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-end,V8.CompileFullCode,49346 -code-creation,LazyCompile,0,0x2b83dea0,536,sjcl.bitArray.clamp bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339b30,~ -timer-event-end,V8.CompileLazy,49390 -timer-event-start,V8.ParseLazyMicroSeconds,49402 -timer-event-end,V8.ParseLazyMicroSeconds,49416 -timer-event-start,V8.CompileLazy,49421 -timer-event-start,V8.CompileFullCode,49426 -timer-event-end,V8.CompileFullCode,49438 -code-creation,LazyCompile,0,0x2b83e0c0,248,ceil native math.js:81,0x442222fc,~ -timer-event-end,V8.CompileLazy,49450 -timer-event-start,V8.ParseLazyMicroSeconds,49466 -timer-event-end,V8.ParseLazyMicroSeconds,49529 -timer-event-start,V8.CompileLazy,49535 -timer-event-start,V8.CompileFullCode,49544 -code-creation,Stub,2,0x2b83e1c0,647,FastCloneShallowArrayStub -code-creation,Stub,12,0x2b83e460,88,BinaryOpStub_SHL_Alloc_Uninitialized+Uninitialized -code-creation,Stub,12,0x2b83e4c0,88,BinaryOpStub_BIT_AND_OverwriteLeft_Uninitialized+Uninitialized -code-creation,Stub,12,0x2b83e520,88,BinaryOpStub_BIT_XOR_OverwriteLeft_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,49801 -code-creation,LazyCompile,0,0x2b83e580,3002,sjcl.cipher.aes bsuite/kraken-once/stanford-crypto-ccm.js:4,0x2f339830,~ -timer-event-end,V8.CompileLazy,49816 -timer-event-start,V8.ParseLazyMicroSeconds,49829 -timer-event-end,V8.ParseLazyMicroSeconds,49886 -timer-event-start,V8.CompileLazy,49893 -timer-event-start,V8.CompileFullCode,49902 -code-creation,Stub,12,0x2b83f140,88,BinaryOpStub_BIT_XOR_OverwriteRight_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,49958 -code-creation,LazyCompile,0,0x2b83f1a0,2528,sjcl.cipher.aes.w bsuite/kraken-once/stanford-crypto-ccm.js:6,0x2f339950,~ -timer-event-end,V8.CompileLazy,49972 -code-creation,Stub,12,0x2b83fb80,167,BinaryOpStub_SHL_Alloc_Smi+Smi -code-creation,Stub,12,0x2b83fc40,155,BinaryOpStub_SAR_Alloc_Smi+Smi -code-creation,Stub,12,0x2b83fce0,167,BinaryOpStub_MUL_OverwriteLeft_Smi+Smi -code-creation,Stub,12,0x2b83fda0,146,BinaryOpStub_BIT_XOR_OverwriteLeft_Smi+Smi -code-creation,Stub,2,0x2b83fe40,1808,RecordWriteStub -code-creation,Stub,2,0x2b840560,554,KeyedStoreElementStub -code-creation,KeyedStoreIC,10,0x2b8407a0,91, -code-creation,Stub,12,0x2b840800,146,BinaryOpStub_BIT_XOR_Alloc_Smi+Smi -code-creation,Stub,12,0x2b8408a0,146,BinaryOpStub_BIT_XOR_OverwriteRight_Smi+Smi -tick,0x82d1790,50347,0,0xff81fdb8,0,0x2b83f388,0x2b83e64a,0x2b839e65,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,Stub,12,0x2b840940,383,BinaryOpStub_BIT_XOR_OverwriteLeft_Smi+Int32 -code-creation,Stub,12,0x2b840ac0,375,BinaryOpStub_SHL_Alloc_Int32+Smi -code-creation,Stub,12,0x2b840c40,325,BinaryOpStub_SHR_Alloc_Int32+Smi -code-creation,Stub,12,0x2b840da0,167,BinaryOpStub_SHR_Alloc_Smi+Smi -code-creation,Stub,12,0x2b840e60,383,BinaryOpStub_BIT_XOR_OverwriteLeft_Int32+Smi -code-creation,Stub,2,0x2b840fe0,794,ElementsTransitionAndStoreStub -code-creation,KeyedStorePolymorphicIC,10,0x2b841300,107, -code-creation,KeyedStorePolymorphicIC,10,0x2b841300,107,args_count: 0 -code-creation,Stub,2,0x2b841380,204,KeyedLoadElementStub -code-creation,KeyedLoadIC,6,0x2b841460,91, -code-creation,Stub,2,0x2b8414c0,405,ElementsTransitionAndStoreStub -code-creation,Stub,2,0x2b841660,554,KeyedStoreElementStub -code-creation,KeyedStorePolymorphicIC,10,0x2b8418a0,107, -code-creation,KeyedStorePolymorphicIC,10,0x2b8418a0,107,args_count: 0 -code-creation,Stub,12,0x2b841920,233,BinaryOpStub_MUL_Alloc_Smi+Smi -code-creation,Stub,12,0x2b841a20,407,BinaryOpStub_BIT_XOR_OverwriteLeft_Number+Smi -code-creation,Stub,12,0x2b841bc0,407,BinaryOpStub_BIT_XOR_OverwriteLeft_Smi+Number -code-creation,Stub,12,0x2b841d60,355,BinaryOpStub_BIT_XOR_OverwriteLeft_Int32+Int32 -code-creation,Stub,12,0x2b841ee0,379,BinaryOpStub_BIT_XOR_OverwriteLeft_Int32+Number -code-creation,Stub,15,0x2b842060,144,ToBooleanStub(Undefined,Smi) -code-creation,Stub,2,0x2b842100,236,KeyedStoreElementStub -code-creation,KeyedStoreIC,10,0x2b842200,91, -code-creation,CallIC,7,0x2b842260,136,slice -code-creation,CallMegamorphic,7,0x2b842300,685,args_count: 1 -code-creation,Stub,12,0x2b8425c0,146,BinaryOpStub_ADD_OverwriteLeft_Smi+Smi -code-creation,Stub,12,0x2b842660,148,BinaryOpStub_SUB_Alloc_Smi+Smi -code-creation,Stub,2,0x2b842700,301,KeyedLoadElementStub -code-creation,KeyedLoadIC,6,0x2b842840,91, -tick,0x817d391,51438,0,0xff81f9a4,0,0x2b83e81e,0x2b839e65,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,Stub,12,0x2b8428a0,190,BinaryOpStub_MOD_Alloc_Smi+Smi -code-creation,Stub,12,0x2b842960,146,BinaryOpStub_BIT_AND_OverwriteLeft_Smi+Smi -code-creation,Stub,12,0x2b842a00,347,BinaryOpStub_BIT_XOR_Alloc_Int32+Int32 -code-creation,Stub,12,0x2b842b60,214,BinaryOpStub_SHL_Alloc_Smi+Smi -code-creation,Stub,12,0x2b842c40,375,BinaryOpStub_SAR_Alloc_Int32+Smi -code-creation,Stub,12,0x2b842dc0,375,BinaryOpStub_BIT_AND_Alloc_Int32+Smi -code-creation,CallIC,7,0x2b842f40,147,replace -code-creation,Stub,2,0x2b842fe0,76,LoadFieldStub -code-creation,LoadIC,5,0x2b843040,93,lastIndex -code-creation,Stub,2,0x2b8430a0,76,LoadFieldStub -code-creation,LoadIC,5,0x2b843100,93,global -code-creation,LoadIC,5,0x2b843160,103,lastMatchInfoOverride -code-creation,LoadIC,5,0x2b8431e0,103,lastMatchInfo -code-creation,LoadIC,5,0x2b843260,103,sjcl -code-creation,LoadIC,5,0x2b8432e0,93,bitArray -code-creation,CallIC,7,0x2b843340,113,clamp -code-creation,LoadIC,5,0x2b8433c0,93,length -code-creation,CallIC,7,0x2b843420,113,ceil -code-creation,CallIC,7,0x2b8434a0,136,slice -code-creation,Stub,12,0x2b843540,264,BinaryOpStub_DIV_Alloc_Smi+Smi -code-creation,Stub,12,0x2b843660,407,BinaryOpStub_SAR_OverwriteRight_Number+Smi -code-creation,Stub,12,0x2b843800,383,BinaryOpStub_BIT_AND_OverwriteRight_Int32+Smi -timer-event-start,V8.ParseLazyMicroSeconds,51907 -timer-event-end,V8.ParseLazyMicroSeconds,51924 -timer-event-start,V8.CompileLazy,51930 -timer-event-start,V8.CompileFullCode,51935 -code-creation,Stub,12,0x2b843980,88,BinaryOpStub_SHL_OverwriteRight_Uninitialized+Uninitialized -code-creation,Stub,12,0x2b8439e0,88,BinaryOpStub_ADD_OverwriteRight_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,51966 -code-creation,LazyCompile,0,0x2b843a40,288,sjcl.bitArray.partial bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339b90,~ -timer-event-end,V8.CompileLazy,51979 -code-creation,Stub,12,0x2b843b60,375,BinaryOpStub_BIT_OR_Alloc_Int32+Smi -code-creation,Stub,12,0x2b843ce0,247,BinaryOpStub_MUL_Alloc_Smi+Number -code-creation,Stub,12,0x2b843de0,268,BinaryOpStub_ADD_OverwriteRight_Int32+Number -code-creation,Stub,2,0x2b843f00,240,KeyedStoreElementStub -code-creation,KeyedStoreIC,10,0x2b844000,91, -code-creation,CallMiss,7,0x2b844060,178,args_count: 3 -code-creation,CallIC,7,0x2b844120,113,partial -timer-event-start,V8.ParseLazyMicroSeconds,52165 -timer-event-end,V8.ParseLazyMicroSeconds,52210 -timer-event-start,V8.CompileLazy,52217 -timer-event-start,V8.CompileFullCode,52225 -code-creation,Stub,12,0x2b8441a0,88,BinaryOpStub_SHR_OverwriteRight_Uninitialized+Uninitialized -code-creation,CallInitialize,7,0x2b844200,178,args_count: 6 -timer-event-end,V8.CompileFullCode,52278 -code-creation,LazyCompile,0,0x2b8442c0,1057,sjcl.mode.ccm.encrypt bsuite/kraken-once/stanford-crypto-ccm.js:19,0x2f33a250,~ -timer-event-end,V8.CompileLazy,52296 -timer-event-start,V8.ParseLazyMicroSeconds,52306 -timer-event-end,V8.ParseLazyMicroSeconds,52324 -timer-event-start,V8.CompileLazy,52329 -timer-event-start,V8.CompileFullCode,52334 -timer-event-end,V8.CompileFullCode,52349 -code-creation,LazyCompile,0,0x2b844700,336,sjcl.bitArray.bitLength bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339ad0,~ -timer-event-end,V8.CompileLazy,52362 -timer-event-start,V8.ParseLazyMicroSeconds,52375 -timer-event-end,V8.ParseLazyMicroSeconds,52388 -timer-event-start,V8.CompileLazy,52392 -timer-event-start,V8.CompileFullCode,52398 -timer-event-end,V8.CompileFullCode,52420 -code-creation,LazyCompile,0,0x2b844860,236,sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339bf0,~ -timer-event-end,V8.CompileLazy,52433 -code-creation,Stub,12,0x2b844960,264,BinaryOpStub_DIV_Alloc_Int32+Number -timer-event-start,V8.ParseLazyMicroSeconds,52455 -tick,0x8092495,52475,0,0xff81fcd0,2,0x2b844833,0x2b84437f,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-end,V8.ParseLazyMicroSeconds,52539 -timer-event-start,V8.CompileLazy,52558 -timer-event-start,V8.CompileFullCode,52577 -timer-event-end,V8.CompileFullCode,52590 -code-creation,LazyCompile,0,0x2b844a80,248,round native math.js:193,0x4422265c,~ -timer-event-end,V8.CompileLazy,52602 -code-creation,CallIC,7,0x2b844b80,113,getPartial -code-creation,Stub,12,0x2b844c00,238,BinaryOpStub_DIV_Alloc_Number+Number -code-creation,CallIC,7,0x2b844d00,113,round -code-creation,Stub,12,0x2b844d80,167,BinaryOpStub_SHR_OverwriteRight_Smi+Smi -code-creation,CallPreMonomorphic,7,0x2b844e40,178,args_count: 6 -timer-event-start,V8.ParseLazyMicroSeconds,52676 -timer-event-end,V8.ParseLazyMicroSeconds,52738 -timer-event-start,V8.CompileLazy,52745 -timer-event-start,V8.CompileFullCode,52753 -code-creation,Stub,12,0x2b844f00,88,BinaryOpStub_SHL_OverwriteLeft_Uninitialized+Uninitialized -code-creation,Stub,12,0x2b844f60,88,BinaryOpStub_BIT_OR_OverwriteRight_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,52818 -code-creation,LazyCompile,0,0x2b844fc0,1838,sjcl.mode.ccm.G bsuite/kraken-once/stanford-crypto-ccm.js:20,0x2f33a310,~ -timer-event-end,V8.CompileLazy,52833 -code-creation,Stub,13,0x2b845700,241,CompareICStub -code-creation,Stub,12,0x2b845800,167,BinaryOpStub_SHL_OverwriteLeft_Smi+Smi -code-creation,Stub,12,0x2b8458c0,145,BinaryOpStub_BIT_OR_OverwriteRight_Smi+Smi -code-creation,Stub,12,0x2b845960,145,BinaryOpStub_BIT_OR_OverwriteLeft_Smi+Smi -code-creation,Stub,12,0x2b845a00,167,BinaryOpStub_SHL_OverwriteRight_Smi+Smi -timer-event-start,V8.ParseLazyMicroSeconds,52912 -timer-event-end,V8.ParseLazyMicroSeconds,52936 -timer-event-start,V8.CompileLazy,52941 -timer-event-start,V8.CompileFullCode,52947 -timer-event-end,V8.CompileFullCode,52966 -code-creation,LazyCompile,0,0x2b845ac0,560,sjcl.bitArray.concat bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339a70,~ -timer-event-end,V8.CompileLazy,52980 -code-creation,Stub,12,0x2b845d00,399,BinaryOpStub_BIT_OR_Alloc_Number+Smi -timer-event-start,V8.ParseLazyMicroSeconds,53013 -timer-event-end,V8.ParseLazyMicroSeconds,53049 -timer-event-start,V8.CompileLazy,53055 -timer-event-start,V8.CompileFullCode,53062 -timer-event-end,V8.CompileFullCode,53095 -code-creation,LazyCompile,0,0x2b845ea0,1126,sjcl.bitArray.P bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339cb0,~ -timer-event-end,V8.CompileLazy,53110 -code-creation,Stub,13,0x2b846320,485,CompareICStub -code-creation,Stub,12,0x2b846520,383,BinaryOpStub_BIT_OR_OverwriteRight_Int32+Smi -code-creation,Stub,12,0x2b8466a0,383,BinaryOpStub_SHL_OverwriteRight_Int32+Smi -code-creation,Stub,12,0x2b846820,407,BinaryOpStub_BIT_OR_OverwriteRight_Number+Smi -timer-event-start,V8.ParseLazyMicroSeconds,53194 -timer-event-end,V8.ParseLazyMicroSeconds,53206 -timer-event-start,V8.CompileLazy,53211 -timer-event-start,V8.CompileFullCode,53216 -timer-event-end,V8.CompileFullCode,53226 -code-creation,LazyCompile,0,0x2b8469c0,184,sjcl.cipher.aes.encrypt bsuite/kraken-once/stanford-crypto-ccm.js:6,0x2f339890,~ -timer-event-end,V8.CompileLazy,53243 -timer-event-start,V8.ParseLazyMicroSeconds,53249 -timer-event-end,V8.ParseLazyMicroSeconds,53325 -timer-event-start,V8.CompileLazy,53332 -timer-event-start,V8.CompileFullCode,53343 -code-creation,Stub,12,0x2b846a80,88,BinaryOpStub_SUB_OverwriteLeft_Uninitialized+Uninitialized -tick,0x8376055,53535,0,0x81bab7d,2,0x2b846a46,0x2b845312,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,Stub,2,0x2b846ae0,683,FastCloneShallowArrayStub -code-creation,Stub,11,0x2b846da0,132,UnaryOpStubMinus(None) -timer-event-end,V8.CompileFullCode,53746 -code-creation,LazyCompile,0,0x2b846e40,3418,sjcl.cipher.aes.H bsuite/kraken-once/stanford-crypto-ccm.js:7,0x2f3399b0,~ -timer-event-end,V8.CompileLazy,53763 -code-creation,Stub,12,0x2b847ba0,375,BinaryOpStub_BIT_XOR_Alloc_Smi+Int32 -code-creation,Stub,12,0x2b847d20,375,BinaryOpStub_BIT_XOR_Alloc_Int32+Smi -code-creation,Stub,12,0x2b847ea0,148,BinaryOpStub_SUB_OverwriteLeft_Smi+Smi -code-creation,Stub,15,0x2b847f40,164,ToBooleanStub(Smi,HeapNumber) -code-creation,CallMiss,7,0x2b848000,178,args_count: 4 -code-creation,CallIC,7,0x2b8480c0,113,P -code-creation,LoadIC,5,0x2b848140,103,undefined -timer-event-start,V8.ParseLazyMicroSeconds,54007 -timer-event-end,V8.ParseLazyMicroSeconds,54027 -timer-event-start,V8.CompileLazy,54032 -timer-event-start,V8.CompileFullCode,54038 -timer-event-end,V8.CompileFullCode,54052 -code-creation,LazyCompile,0,0x2b8481c0,388,sjcl.bitArray.k bsuite/kraken-once/stanford-crypto-ccm.js:11,0x2f339d10,~ -timer-event-end,V8.CompileLazy,54065 -code-creation,CallIC,7,0x2b848360,132,H -code-creation,LoadIC,5,0x2b848400,93,a -code-creation,Stub,2,0x2b848460,95,h -code-creation,LoadIC,5,0x2b8484c0,93,h -code-creation,CallIC,7,0x2b848520,132,encrypt -code-creation,Stub,12,0x2b8485c0,371,BinaryOpStub_BIT_XOR_Alloc_Int32+Number -timer-event-start,V8.ParseLazyMicroSeconds,54281 -timer-event-end,V8.ParseLazyMicroSeconds,54332 -timer-event-start,V8.CompileLazy,54339 -timer-event-start,V8.CompileFullCode,54347 -code-creation,Stub,2,0x2b848740,663,FastCloneShallowArrayStub -timer-event-end,V8.CompileFullCode,54560 -code-creation,LazyCompile,0,0x2b8489e0,1221,sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21,0x2f33a370,~ -timer-event-end,V8.CompileLazy,54577 -tick,0x82f2dd2,54590,0,0xff81f67c,2,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,Stub,12,0x2b848ec0,371,BinaryOpStub_BIT_XOR_Alloc_Number+Int32 -timer-event-start,V8.ParseLazyMicroSeconds,54663 -timer-event-end,V8.ParseLazyMicroSeconds,54685 -timer-event-start,V8.CompileLazy,54691 -timer-event-start,V8.CompileFullCode,54697 -code-creation,Stub,12,0x2b849040,88,BinaryOpStub_SUB_OverwriteRight_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,54724 -code-creation,LazyCompile,0,0x2b8490a0,392,sjcl.bitArray.bitSlice bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339a10,~ -timer-event-end,V8.CompileLazy,54737 -code-creation,Stub,12,0x2b849240,148,BinaryOpStub_SUB_OverwriteRight_Smi+Smi -code-creation,Stub,13,0x2b8492e0,494,CompareICStub -code-creation,CallMegamorphic,7,0x2b8494e0,685,args_count: 2 -code-creation,Stub,12,0x2b8497a0,246,BinaryOpStub_ADD_Alloc_Number+Smi -code-creation,LoadPolymorphicIC,5,0x2b8498a0,105,length -code-creation,LoadPolymorphicIC,5,0x2b849920,105,length -timer-event-start,V8.ParseLazyMicroSeconds,54933 -timer-event-end,V8.ParseLazyMicroSeconds,54956 -timer-event-start,V8.CompileLazy,54962 -timer-event-start,V8.CompileFullCode,54968 -timer-event-end,V8.CompileFullCode,54989 -code-creation,LazyCompile,0,0x2b8499a0,585,sjcl.bitArray.equal bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339c50,~ -timer-event-end,V8.CompileLazy,55003 -code-creation,Stub,12,0x2b849c00,395,BinaryOpStub_BIT_XOR_Alloc_Number+Number -code-creation,Stub,12,0x2b849da0,133,BinaryOpStub_ADD_Alloc_String+Smi -code-creation,Stub,12,0x2b849e40,133,BinaryOpStub_ADD_OverwriteLeft_String+Smi -timer-event-start,V8.ParseLazyMicroSeconds,55131 -timer-event-end,V8.ParseLazyMicroSeconds,55149 -timer-event-start,V8.CompileLazy,55155 -timer-event-start,V8.CompileFullCode,55160 -timer-event-end,V8.CompileFullCode,55177 -code-creation,LazyCompile,0,0x2b849ee0,292,sjcl.test.TestCase.require bsuite/kraken-once/stanford-crypto-ccm.js:131,0x2f33b390,~ -timer-event-end,V8.CompileLazy,55190 -timer-event-start,V8.ParseLazyMicroSeconds,55198 -timer-event-end,V8.ParseLazyMicroSeconds,55206 -timer-event-start,V8.CompileLazy,55211 -timer-event-start,V8.CompileFullCode,55216 -timer-event-end,V8.CompileFullCode,55228 -code-creation,LazyCompile,0,0x2b84a020,208,sjcl.test.TestCase.pass bsuite/kraken-once/stanford-crypto-ccm.js:110,0x2f33b270,~ -timer-event-end,V8.CompileLazy,55240 -code-creation,StoreIC,9,0x2b84a100,103,passes -timer-event-start,V8.ParseLazyMicroSeconds,55261 -timer-event-end,V8.ParseLazyMicroSeconds,55307 -timer-event-start,V8.CompileLazy,55313 -timer-event-start,V8.CompileFullCode,55321 -code-creation,Stub,12,0x2b84a180,88,BinaryOpStub_DIV_OverwriteLeft_Uninitialized+Uninitialized -timer-event-end,V8.CompileFullCode,55365 -code-creation,LazyCompile,0,0x2b84a1e0,1229,sjcl.mode.ccm.decrypt bsuite/kraken-once/stanford-crypto-ccm.js:19,0x2f33a2b0,~ -timer-event-end,V8.CompileLazy,55379 -code-creation,CallIC,7,0x2b84a6c0,136,slice -code-creation,CallIC,7,0x2b84a760,128,P -code-creation,LoadPolymorphicIC,5,0x2b84a7e0,105,length -code-creation,KeyedLoadPolymorphicIC,6,0x2b84a860,105, -code-creation,CallIC,7,0x2b84a8e0,656,push -code-creation,Stub,12,0x2b84ab80,407,BinaryOpStub_SHL_OverwriteRight_Number+Smi -code-creation,LoadPolymorphicIC,5,0x2b84ad20,105,length -code-creation,LoadPolymorphicIC,5,0x2b84ada0,105,length -code-creation,CallIC,7,0x2b84ae20,136,slice -code-creation,Stub,12,0x2b84aec0,196,BinaryOpStub_DIV_OverwriteLeft_Smi+Smi -code-creation,Stub,2,0x2b84afa0,70,k -code-creation,LoadIC,5,0x2b84b000,93,k -code-creation,CallIC,7,0x2b84b060,113,bitLength -code-creation,CallIC,7,0x2b84b0e0,128,partial -code-creation,CallIC,7,0x2b84b160,113,concat -code-creation,LoadPolymorphicIC,5,0x2b84b1e0,105,length -code-creation,CallIC,7,0x2b84b260,136,concat -code-creation,CallIC,7,0x2b84b300,113,bitSlice -code-creation,CallIC,7,0x2b84b380,136,concat -tick,0x8118ca4,55654,0,0x90ec418,0,0x2b848b2e,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,CallIC,7,0x2b84b420,136,slice -code-creation,StoreIC,9,0x2b84b4c0,138,tag -code-creation,StoreIC,9,0x2b84b560,138,data -code-creation,Stub,12,0x2b84b600,214,BinaryOpStub_SHL_OverwriteRight_Smi+Smi -code-creation,LoadPolymorphicIC,5,0x2b84b6e0,105,length -code-creation,LoadPolymorphicIC,5,0x2b84b760,105,length -code-creation,CallMiss,7,0x2b84b7e0,178,args_count: 0 -code-creation,CallIC,7,0x2b84b8a0,132,pass -code-creation,Stub,2,0x2b84b940,76,LoadFieldStub -code-creation,LoadIC,5,0x2b84b9a0,93,passes -code-creation,LoadIC,5,0x2b84ba00,93,key -code-creation,LoadIC,5,0x2b84ba60,93,cipher -code-creation,Stub,2,0x2b84bac0,70,aes -code-creation,LoadIC,5,0x2b84bb20,93,aes -code-creation,CallIC,7,0x2b84bb80,113,toBits -code-creation,Stub,2,0x2b84bc00,95,h -code-creation,LoadIC,5,0x2b84bc60,93,h -code-creation,StoreIC,9,0x2b84bcc0,246,a -code-creation,LoadIC,5,0x2b84bdc0,93,iv -code-creation,Stub,2,0x2b84be20,76,LoadFieldStub -code-creation,LoadIC,5,0x2b84be80,93,adata -code-creation,LoadIC,5,0x2b84bee0,93,pt -code-creation,Stub,2,0x2b84bf40,76,LoadFieldStub -code-creation,LoadIC,5,0x2b84bfa0,93,ct -code-creation,LoadIC,5,0x2b84c000,93,tag -code-creation,LoadIC,5,0x2b84c060,93,mode -code-creation,LoadIC,5,0x2b84c0c0,93,ccm -code-creation,CallMiss,7,0x2b84c120,178,args_count: 5 -code-creation,CallIC,7,0x2b84c1e0,113,encrypt -code-creation,CallMiss,7,0x2b84c260,178,args_count: 6 -code-creation,CallIC,7,0x2b84c320,113,G -code-creation,CallIC,7,0x2b84c3a0,193,pop -code-creation,CallIC,7,0x2b84c480,113,I -code-creation,LoadIC,5,0x2b84c500,93,data -code-creation,LoadIC,5,0x2b84c560,93,tag -code-creation,CallIC,7,0x2b84c5c0,113,equal -code-creation,CallIC,7,0x2b84c640,132,require -code-creation,CallIC,7,0x2b84c6e0,113,decrypt -code-creation,CallIC,7,0x2b84c760,128,bitSlice -code-creation,CallMegamorphic,7,0x2b84c7e0,685,args_count: 0 -tick,0xf776d430,56728,0,0x90ec418,0,0x2b84a349,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,Stub,15,0x2b84caa0,172,ToBooleanStub(Undefined,Smi,HeapNumber) -code-creation,CallIC,7,0x2b84cb60,193,pop -code-creation,Stub,2,0x2b84cc40,725,ElementsTransitionAndStoreStub -code-creation,Stub,2,0x2b84cf20,1800,RecordWriteStub -code-creation,Stub,2,0x2b84d640,578,KeyedStoreElementStub -code-creation,KeyedStorePolymorphicIC,10,0x2b84d8a0,107, -code-creation,KeyedStorePolymorphicIC,10,0x2b84d8a0,107,args_count: 0 -timer-event-start,V8.RecompileSynchronous,57494 -timer-event-start,V8.ParseLazyMicroSeconds,57505 -timer-event-end,V8.ParseLazyMicroSeconds,57586 -code-creation,LazyCompile,0,0x2b84d920,3418,sjcl.cipher.aes.H bsuite/kraken-once/stanford-crypto-ccm.js:7,0x2f3399b0,~ -tick,0x8092457,57778,0,0x19e,2,0x2b846a46,0x2b8455f6,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-end,V8.RecompileSynchronous,57904 -timer-event-start,V8.RecompileConcurrent,57929 -code-creation,Stub,2,0x2b84e680,559,ElementsTransitionAndStoreStub -code-creation,KeyedStorePolymorphicIC,10,0x2b84e8c0,107, -code-creation,KeyedStorePolymorphicIC,10,0x2b84e8c0,107,args_count: 0 -code-creation,LoadPolymorphicIC,5,0x2b84e940,105,length -code-creation,LoadPolymorphicIC,5,0x2b84e9c0,105,length -code-creation,LoadPolymorphicIC,5,0x2b84ea40,105,length -code-creation,LoadPolymorphicIC,5,0x2b84eac0,105,length -code-creation,LoadPolymorphicIC,5,0x2b84eb40,105,length -timer-event-start,V8.RecompileSynchronous,58447 -timer-event-start,V8.ParseLazyMicroSeconds,58457 -timer-event-end,V8.ParseLazyMicroSeconds,58501 -code-creation,LazyCompile,0,0x2b84ebc0,1096,parseInt native v8natives.js:130,0x4421ec1c,~ -timer-event-end,V8.RecompileSynchronous,58637 -timer-event-start,V8.GCScavenger,58779 -timer-event-start,V8.External,58787 -timer-event-end,V8.External,58791 -tick,0x810f40c,58868,0,0x0,1 -timer-event-start,V8.External,59191 -timer-event-end,V8.External,59200 -timer-event-end,V8.GCScavenger,59205 -timer-event-end,V8.RecompileConcurrent,59219 -timer-event-start,V8.RecompileConcurrent,59254 -timer-event-start,V8.RecompileSynchronous,59271 -code-creation,LazyCompile,1,0x2b84f020,4592,sjcl.cipher.aes.H bsuite/kraken-once/stanford-crypto-ccm.js:7,0x2f3399b0,* -timer-event-end,V8.RecompileSynchronous,59549 -timer-event-end,V8.RecompileConcurrent,59567 -timer-event-start,V8.RecompileSynchronous,59590 -code-creation,LazyCompile,1,0x2b850220,1662,parseInt native v8natives.js:130,0x4421ec1c,* -timer-event-end,V8.RecompileSynchronous,59672 -timer-event-start,V8.RecompileSynchronous,59682 -timer-event-start,V8.ParseLazyMicroSeconds,59687 -timer-event-end,V8.ParseLazyMicroSeconds,59701 -code-creation,LazyCompile,0,0x2b8508a0,236,sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339bf0,~ -timer-event-end,V8.RecompileSynchronous,59750 -timer-event-start,V8.RecompileConcurrent,59776 -timer-event-start,V8.RecompileSynchronous,59811 -timer-event-start,V8.ParseLazyMicroSeconds,59820 -timer-event-end,V8.ParseLazyMicroSeconds,59838 -code-creation,LazyCompile,0,0x2b8509a0,388,sjcl.bitArray.k bsuite/kraken-once/stanford-crypto-ccm.js:11,0x2f339d10,~ -timer-event-end,V8.RecompileConcurrent,59909 -timer-event-start,V8.RecompileConcurrent,59926 -timer-event-end,V8.RecompileSynchronous,59933 -timer-event-start,V8.RecompileSynchronous,59950 -tick,0xf776d430,59966,0,0x90ec418,2,0x2b8455e6,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,LazyCompile,1,0x2b850b40,536,sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339bf0,* -timer-event-end,V8.RecompileSynchronous,60077 -timer-event-start,V8.RecompileSynchronous,60141 -timer-event-start,V8.ParseLazyMicroSeconds,60149 -timer-event-end,V8.RecompileConcurrent,60177 -timer-event-end,V8.ParseLazyMicroSeconds,60195 -code-creation,LazyCompile,0,0x2b850d60,960,substr native string.js:749,0x44216608,~ -timer-event-end,V8.RecompileSynchronous,60329 -timer-event-start,V8.RecompileConcurrent,60356 -code-deopt,60375,544 -timer-event-start,V8.RecompileSynchronous,60409 -code-creation,LazyCompile,1,0x2b851120,1534,sjcl.bitArray.k bsuite/kraken-once/stanford-crypto-ccm.js:11,0x2f339d10,* -timer-event-end,V8.RecompileSynchronous,60474 -code-creation,LoadPolymorphicIC,5,0x2b851720,105,length -code-creation,LoadPolymorphicIC,5,0x2b8517a0,105,length -code-creation,LoadPolymorphicIC,5,0x2b851820,105,length -timer-event-end,V8.RecompileConcurrent,60691 -timer-event-start,V8.RecompileSynchronous,60716 -code-creation,LazyCompile,1,0x2b8518a0,1792,substr native string.js:749,0x44216608,* -timer-event-end,V8.RecompileSynchronous,60803 -tick,0x2b849c4b,60997,0,0x2b849afa,0,0x2b83a0df,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.RecompileSynchronous,61042 -timer-event-start,V8.ParseLazyMicroSeconds,61054 -timer-event-end,V8.ParseLazyMicroSeconds,61066 -code-creation,LazyCompile,0,0x2b851fa0,184,sjcl.cipher.aes.encrypt bsuite/kraken-once/stanford-crypto-ccm.js:6,0x2f339890,~ -timer-event-end,V8.RecompileSynchronous,61112 -timer-event-start,V8.RecompileConcurrent,61139 -timer-event-start,V8.RecompileSynchronous,61159 -timer-event-start,V8.ParseLazyMicroSeconds,61168 -timer-event-end,V8.ParseLazyMicroSeconds,61186 -timer-event-end,V8.RecompileConcurrent,61201 -code-creation,LazyCompile,0,0x2b852060,336,sjcl.bitArray.bitLength bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339ad0,~ -timer-event-start,V8.ParseLazyMicroSeconds,61249 -timer-event-end,V8.ParseLazyMicroSeconds,61264 -timer-event-end,V8.RecompileSynchronous,61290 -timer-event-start,V8.RecompileSynchronous,61309 -timer-event-start,V8.RecompileConcurrent,61317 -code-creation,LazyCompile,1,0x2b8521c0,196,sjcl.cipher.aes.encrypt bsuite/kraken-once/stanford-crypto-ccm.js:6,0x2f339890,* -timer-event-end,V8.RecompileSynchronous,61348 -timer-event-start,V8.RecompileSynchronous,61374 -timer-event-start,V8.ParseLazyMicroSeconds,61381 -timer-event-end,V8.ParseLazyMicroSeconds,61394 -timer-event-end,V8.RecompileSynchronous,61418 -timer-event-start,V8.RecompileSynchronous,61424 -timer-event-start,V8.ParseLazyMicroSeconds,61429 -timer-event-end,V8.ParseLazyMicroSeconds,61442 -code-creation,LazyCompile,0,0x2b8522a0,248,round native math.js:193,0x4422265c,~ -timer-event-end,V8.RecompileConcurrent,61471 -timer-event-start,V8.RecompileConcurrent,61480 -timer-event-end,V8.RecompileSynchronous,61487 -timer-event-start,V8.RecompileSynchronous,61512 -timer-event-end,V8.RecompileConcurrent,61536 -timer-event-start,V8.RecompileConcurrent,61543 -code-creation,LazyCompile,1,0x2b8523a0,888,sjcl.bitArray.bitLength bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339ad0,* -timer-event-end,V8.RecompileSynchronous,61565 -timer-event-start,V8.RecompileSynchronous,61570 -code-creation,LazyCompile,1,0x2b852720,536,sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339bf0,* -timer-event-end,V8.RecompileSynchronous,61599 -timer-event-start,V8.RecompileSynchronous,61606 -timer-event-end,V8.RecompileConcurrent,61610 -code-creation,LazyCompile,1,0x2b852940,242,round native math.js:193,0x4422265c,* -timer-event-end,V8.RecompileSynchronous,61629 -code-creation,LoadPolymorphicIC,5,0x2b852a40,105,length -timer-event-start,V8.RecompileSynchronous,61726 -timer-event-start,V8.ParseLazyMicroSeconds,61731 -timer-event-end,V8.ParseLazyMicroSeconds,61757 -code-creation,LazyCompile,0,0x2b852ac0,536,sjcl.bitArray.clamp bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339b30,~ -timer-event-start,V8.ParseLazyMicroSeconds,61847 -timer-event-end,V8.ParseLazyMicroSeconds,61865 -code-creation,Function,0,0x2b852ce0,288,sjcl.bitArray.partial bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339b90,~ -timer-event-end,V8.RecompileSynchronous,61926 -timer-event-start,V8.RecompileSynchronous,61933 -timer-event-start,V8.ParseLazyMicroSeconds,61939 -timer-event-end,V8.ParseLazyMicroSeconds,61953 -timer-event-start,V8.RecompileConcurrent,61961 -code-creation,LazyCompile,0,0x2b852e00,248,ceil native math.js:81,0x442222fc,~ -timer-event-end,V8.RecompileSynchronous,62019 -tick,0x811e913,62060,0,0xf773bff4,2,0x2b83dfae,0x2b8445e0,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-deopt,62122,544 -timer-event-end,V8.RecompileConcurrent,62287 -timer-event-start,V8.RecompileConcurrent,62297 -timer-event-start,V8.RecompileSynchronous,62309 -timer-event-end,V8.RecompileConcurrent,62353 -code-creation,Stub,2,0x2b852f00,1785,RecordWriteStub -code-creation,LazyCompile,1,0x2b853600,1514,sjcl.bitArray.clamp bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339b30,* -timer-event-end,V8.RecompileSynchronous,62415 -timer-event-start,V8.RecompileSynchronous,62421 -code-creation,LazyCompile,1,0x2b853c00,242,ceil native math.js:81,0x442222fc,* -timer-event-end,V8.RecompileSynchronous,62445 -code-creation,LoadPolymorphicIC,5,0x2b853d00,105,length -code-creation,LoadPolymorphicIC,5,0x2b853d80,105,length -timer-event-start,V8.RecompileSynchronous,63048 -timer-event-start,V8.ParseLazyMicroSeconds,63067 -timer-event-end,V8.ParseLazyMicroSeconds,63085 -timer-event-end,V8.RecompileSynchronous,63117 -tick,0xf776d430,63132,0,0x90ec418,0,0x2b8462cc,0x2b845cd7,0x2b848b0a,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.RecompileConcurrent,63203 -timer-event-end,V8.RecompileConcurrent,63315 -timer-event-start,V8.RecompileSynchronous,63329 -code-creation,LazyCompile,1,0x2b853e00,644,sjcl.bitArray.partial bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339b90,* -timer-event-end,V8.RecompileSynchronous,63379 -timer-event-start,V8.RecompileSynchronous,63494 -timer-event-start,V8.ParseLazyMicroSeconds,63503 -timer-event-end,V8.ParseLazyMicroSeconds,63517 -timer-event-end,V8.RecompileSynchronous,63544 -timer-event-start,V8.RecompileConcurrent,63572 -timer-event-start,V8.RecompileSynchronous,63641 -timer-event-start,V8.ParseLazyMicroSeconds,63651 -timer-event-end,V8.RecompileConcurrent,63664 -timer-event-end,V8.ParseLazyMicroSeconds,63678 -code-creation,LazyCompile,0,0x2b8540a0,560,sjcl.bitArray.concat bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339a70,~ -timer-event-start,V8.ParseLazyMicroSeconds,63757 -timer-event-end,V8.ParseLazyMicroSeconds,63772 -timer-event-start,V8.ParseLazyMicroSeconds,63808 -timer-event-end,V8.ParseLazyMicroSeconds,63848 -code-creation,Function,0,0x2b8542e0,1126,sjcl.bitArray.P bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339cb0,~ -timer-event-start,V8.ParseLazyMicroSeconds,63977 -timer-event-end,V8.ParseLazyMicroSeconds,63994 -timer-event-start,V8.ParseLazyMicroSeconds,64023 -timer-event-end,V8.ParseLazyMicroSeconds,64039 -timer-event-end,V8.RecompileSynchronous,64072 -timer-event-start,V8.RecompileSynchronous,64079 -timer-event-start,V8.RecompileConcurrent,64099 -code-creation,LazyCompile,1,0x2b854760,536,sjcl.bitArray.getPartial bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339bf0,* -timer-event-end,V8.RecompileSynchronous,64194 -tick,0xf776d430,64209,0,0x4059,2,0x2b845c29,0x2b848b0a,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-deopt,64271,544 -timer-event-start,V8.RecompileSynchronous,64467 -timer-event-start,V8.ParseLazyMicroSeconds,64476 -timer-event-end,V8.ParseLazyMicroSeconds,64542 -code-creation,LazyCompile,0,0x2b854980,3002,sjcl.cipher.aes bsuite/kraken-once/stanford-crypto-ccm.js:4,0x2f339830,~ -timer-event-end,V8.RecompileSynchronous,64818 -timer-event-end,V8.RecompileConcurrent,64871 -timer-event-start,V8.RecompileConcurrent,64883 -timer-event-start,V8.RecompileSynchronous,64890 -code-creation,LazyCompile,1,0x2b855540,3364,sjcl.bitArray.concat bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339a70,* -timer-event-end,V8.RecompileSynchronous,65047 -code-deopt,65079,4608 -code-creation,LoadPolymorphicIC,5,0x2b856280,105,length -tick,0x2b8472a7,65264,0,0x52f0b0e1,0,0x2b852252,0x2b848c4b,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,LoadPolymorphicIC,5,0x2b856300,105,length -code-creation,LoadPolymorphicIC,5,0x2b856380,105,length -timer-event-start,V8.GCScavenger,65757 -timer-event-start,V8.External,65766 -timer-event-end,V8.External,65770 -timer-event-start,V8.External,66154 -timer-event-end,V8.External,66162 -timer-event-end,V8.GCScavenger,66166 -timer-event-end,V8.RecompileConcurrent,66181 -timer-event-start,V8.RecompileSynchronous,66254 -tick,0x81c09b0,66332,0,0x91632e8,2,0x2b839e65,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,Stub,2,0x2b856400,1785,RecordWriteStub -code-creation,Stub,2,0x2b856b00,1785,RecordWriteStub -code-creation,Stub,2,0x2b857200,783,RecordWriteStub -code-creation,Stub,2,0x2b857520,1772,RecordWriteStub -code-creation,Stub,2,0x2b857c20,1785,RecordWriteStub -code-creation,LazyCompile,1,0x2b858320,4397,sjcl.cipher.aes bsuite/kraken-once/stanford-crypto-ccm.js:4,0x2f339830,* -timer-event-end,V8.RecompileSynchronous,66661 -timer-event-start,V8.RecompileSynchronous,66788 -timer-event-start,V8.ParseLazyMicroSeconds,66797 -timer-event-end,V8.ParseLazyMicroSeconds,66878 -timer-event-end,V8.RecompileSynchronous,67067 -timer-event-start,V8.RecompileConcurrent,67094 -tick,0x2b8473da,67403,0,0x2f392d35,0,0x2b852252,0x2b8455f6,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-end,V8.RecompileConcurrent,68064 -timer-event-start,V8.RecompileSynchronous,68081 -code-creation,LazyCompile,1,0x2b859460,4752,sjcl.cipher.aes.H bsuite/kraken-once/stanford-crypto-ccm.js:7,0x2f3399b0,* -timer-event-end,V8.RecompileSynchronous,68294 -code-creation,LoadPolymorphicIC,5,0x2b85a700,105,length -tick,0x2b85055a,68462,0,0x527b30d9,0,0x2b83a782,0x2b839f55,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,69250 -timer-event-start,V8.External,69260 -timer-event-end,V8.External,69264 -timer-event-start,V8.External,69314 -timer-event-end,V8.External,69320 -timer-event-end,V8.GCScavenger,69324 -tick,0x82ec00c,69525,0,0xff81fcf4,0,0x2b85056f,0x2b83a782,0x2b839fd2,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,LoadPolymorphicIC,5,0x2b85a780,105,length -code-creation,LoadPolymorphicIC,5,0x2b85a800,117,length -code-creation,LoadPolymorphicIC,5,0x2b85a880,117,length -code-creation,LoadPolymorphicIC,5,0x2b85a900,117,length -code-creation,LoadPolymorphicIC,5,0x2b85a980,117,length -code-creation,LoadPolymorphicIC,5,0x2b85aa00,117,length -tick,0x81168ba,70588,0,0x90d5060,0,0x2b85056f,0x2b83a782,0x2b839f04,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.RecompileSynchronous,71064 -timer-event-start,V8.ParseLazyMicroSeconds,71076 -timer-event-end,V8.ParseLazyMicroSeconds,71094 -code-creation,LazyCompile,0,0x2b85aa80,292,sjcl.test.TestCase.require bsuite/kraken-once/stanford-crypto-ccm.js:131,0x2f33b390,~ -timer-event-start,V8.ParseLazyMicroSeconds,71142 -timer-event-end,V8.ParseLazyMicroSeconds,71152 -code-creation,Function,0,0x2b85abc0,208,sjcl.test.TestCase.pass bsuite/kraken-once/stanford-crypto-ccm.js:110,0x2f33b270,~ -timer-event-end,V8.RecompileSynchronous,71195 -timer-event-start,V8.RecompileSynchronous,71204 -timer-event-start,V8.ParseLazyMicroSeconds,71210 -timer-event-start,V8.RecompileConcurrent,71216 -timer-event-end,V8.ParseLazyMicroSeconds,71228 -timer-event-end,V8.RecompileSynchronous,71254 -timer-event-end,V8.RecompileConcurrent,71304 -timer-event-start,V8.RecompileConcurrent,71312 -timer-event-start,V8.RecompileSynchronous,71316 -code-creation,LazyCompile,1,0x2b85aca0,322,sjcl.test.TestCase.require bsuite/kraken-once/stanford-crypto-ccm.js:131,0x2f33b390,* -timer-event-end,V8.RecompileSynchronous,71361 -timer-event-start,V8.RecompileSynchronous,71367 -timer-event-end,V8.RecompileConcurrent,71373 -code-creation,LazyCompile,1,0x2b85ae00,198,sjcl.test.TestCase.pass bsuite/kraken-once/stanford-crypto-ccm.js:110,0x2f33b270,* -timer-event-end,V8.RecompileSynchronous,71390 -tick,0x2b83c3b1,71653,0,0xffffff6b,0,0x2b83bd35,0x2b83a725,0x2b839f55,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,72513 -timer-event-start,V8.External,72524 -timer-event-end,V8.External,72530 -timer-event-start,V8.External,72583 -timer-event-end,V8.External,72591 -timer-event-end,V8.GCScavenger,72596 -tick,0x8116878,72711,0,0x90d5060,0,0x2b85056f,0x2b83a782,0x2b839f04,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,CallIC,7,0x2b85aee0,136,concat -timer-event-start,V8.RecompileSynchronous,72947 -timer-event-start,V8.ParseLazyMicroSeconds,72956 -timer-event-end,V8.ParseLazyMicroSeconds,72977 -code-creation,LazyCompile,0,0x2b85af80,392,sjcl.bitArray.bitSlice bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339a10,~ -timer-event-start,V8.ParseLazyMicroSeconds,73044 -timer-event-end,V8.ParseLazyMicroSeconds,73083 -timer-event-start,V8.ParseLazyMicroSeconds,73169 -timer-event-end,V8.ParseLazyMicroSeconds,73185 -timer-event-start,V8.ParseLazyMicroSeconds,73217 -timer-event-end,V8.ParseLazyMicroSeconds,73232 -timer-event-start,V8.ParseLazyMicroSeconds,73263 -timer-event-end,V8.ParseLazyMicroSeconds,73289 -timer-event-start,V8.ParseLazyMicroSeconds,73339 -timer-event-end,V8.ParseLazyMicroSeconds,73356 -timer-event-end,V8.RecompileSynchronous,73393 -timer-event-start,V8.RecompileConcurrent,73422 -tick,0x82eea09,73786,0,0x90de9b0,0,0x2b85056f,0x2b83a782,0x2b839e4e,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.ParseLazyMicroSeconds,74228 -timer-event-end,V8.RecompileConcurrent,74243 -timer-event-end,V8.ParseLazyMicroSeconds,74259 -timer-event-start,V8.CompileLazy,74267 -timer-event-start,V8.CompileFullCode,74273 -timer-event-end,V8.CompileFullCode,74291 -code-creation,LazyCompile,0,0x2b85b120,332, bsuite/kraken-once/stanford-crypto-ccm.js:55,0x2f33db50,~ -timer-event-end,V8.CompileLazy,74304 -timer-event-start,V8.RecompileSynchronous,74351 -code-creation,LazyCompile,1,0x2b85b280,4132,sjcl.bitArray.bitSlice bsuite/kraken-once/stanford-crypto-ccm.js:9,0x2f339a10,* -timer-event-end,V8.RecompileSynchronous,74533 -tick,0x2b85a2b8,74843,0,0xf5,0,0x2b852252,0x2b8454f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b84a934,75905,0,0x2b855c42,0,0x2b8446a3,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,76182 -timer-event-start,V8.External,76193 -timer-event-end,V8.External,76197 -timer-event-start,V8.External,76251 -timer-event-end,V8.External,76258 -timer-event-end,V8.GCScavenger,76262 -tick,0x81168ba,76974,0,0x90d5060,0,0x2b85056f,0x2b83a782,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x81168ba,78047,0,0x90d5060,0,0x2b85056f,0x2b83a782,0x2b839f55,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.RecompileSynchronous,78403 -timer-event-start,V8.ParseLazyMicroSeconds,78415 -timer-event-end,V8.ParseLazyMicroSeconds,78444 -code-creation,LazyCompile,0,0x2b85c2c0,717,sjcl.codec.hex.toBits bsuite/kraken-once/stanford-crypto-ccm.js:13,0x2f339e90,~ -timer-event-start,V8.ParseLazyMicroSeconds,78530 -timer-event-end,V8.ParseLazyMicroSeconds,78559 -timer-event-start,V8.ParseLazyMicroSeconds,78614 -timer-event-end,V8.ParseLazyMicroSeconds,78632 -timer-event-end,V8.RecompileSynchronous,78666 -timer-event-start,V8.RecompileConcurrent,78695 -timer-event-end,V8.RecompileConcurrent,79073 -timer-event-start,V8.RecompileSynchronous,79089 -tick,0x2b859d1c,79108,0,0x6,0,0x2b852252,0x2b8455f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,Stub,2,0x2b85c5a0,1421,StringAddStub -code-creation,LazyCompile,1,0x2b85cb40,2261,sjcl.codec.hex.toBits bsuite/kraken-once/stanford-crypto-ccm.js:13,0x2f339e90,* -timer-event-end,V8.RecompileSynchronous,79251 -timer-event-start,V8.GCScavenger,79473 -timer-event-start,V8.External,79482 -timer-event-end,V8.External,79486 -timer-event-start,V8.External,79534 -timer-event-end,V8.External,79540 -timer-event-end,V8.GCScavenger,79544 -tick,0x2b85b446,80176,0,0x256b20d1,0,0x2b848b8c,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x80c4222,81235,0,0x90d5060,0,0x2b85b578,0x2b84a349,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,82255 -timer-event-start,V8.External,82266 -timer-event-end,V8.External,82270 -tick,0x2b858631,82290,0,0x2b80a276,0,0x2b839e65,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.External,82339 -timer-event-end,V8.External,82349 -timer-event-end,V8.GCScavenger,82353 -tick,0x2b82f581,83363,0,0x2b84539a,0,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x808cf8f,84440,0,0x90dabb0,0,0x2b85599a,0x2b845482,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,85035 -timer-event-start,V8.External,85046 -timer-event-end,V8.External,85050 -timer-event-start,V8.External,85093 -timer-event-end,V8.External,85099 -timer-event-end,V8.GCScavenger,85103 -tick,0x2b829c56,85495,0,0x3e60ce29,0,0x2b852252,0x2b8454f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x808b74f,86567,0,0x2f308081,0,0x2b8537a0,0x2b8456a8,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b85d04c,87632,0,0x2b839f55,0,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,87755 -timer-event-start,V8.External,87766 -timer-event-end,V8.External,87770 -timer-event-start,V8.External,87822 -timer-event-end,V8.External,87829 -timer-event-end,V8.GCScavenger,87833 -timer-event-start,V8.RecompileSynchronous,88294 -timer-event-start,V8.ParseLazyMicroSeconds,88303 -timer-event-end,V8.ParseLazyMicroSeconds,88361 -code-creation,LazyCompile,0,0x2b85d420,1221,sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21,0x2f33a370,~ -timer-event-start,V8.ParseLazyMicroSeconds,88473 -timer-event-end,V8.ParseLazyMicroSeconds,88492 -timer-event-start,V8.ParseLazyMicroSeconds,88532 -timer-event-end,V8.ParseLazyMicroSeconds,88545 -timer-event-start,V8.ParseLazyMicroSeconds,88572 -timer-event-end,V8.ParseLazyMicroSeconds,88588 -timer-event-start,V8.ParseLazyMicroSeconds,88612 -timer-event-end,V8.ParseLazyMicroSeconds,88645 -timer-event-start,V8.ParseLazyMicroSeconds,88688 -timer-event-end,V8.ParseLazyMicroSeconds,88714 -tick,0x81fc61b,88727,0,0xff81ebbc,2,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.ParseLazyMicroSeconds,88792 -timer-event-end,V8.ParseLazyMicroSeconds,88867 -timer-event-start,V8.ParseLazyMicroSeconds,88951 -timer-event-end,V8.ParseLazyMicroSeconds,88967 -timer-event-start,V8.ParseLazyMicroSeconds,88996 -timer-event-end,V8.ParseLazyMicroSeconds,89012 -timer-event-end,V8.RecompileSynchronous,89134 -timer-event-start,V8.RecompileConcurrent,89160 -timer-event-start,V8.RecompileSynchronous,89215 -timer-event-start,V8.ParseLazyMicroSeconds,89224 -timer-event-end,V8.ParseLazyMicroSeconds,89245 -code-creation,LazyCompile,0,0x2b85d900,585,sjcl.bitArray.equal bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339c50,~ -timer-event-start,V8.ParseLazyMicroSeconds,89309 -timer-event-end,V8.ParseLazyMicroSeconds,89326 -timer-event-start,V8.ParseLazyMicroSeconds,89356 -timer-event-end,V8.ParseLazyMicroSeconds,89369 -timer-event-start,V8.ParseLazyMicroSeconds,89391 -timer-event-end,V8.ParseLazyMicroSeconds,89406 -timer-event-start,V8.ParseLazyMicroSeconds,89433 -timer-event-end,V8.ParseLazyMicroSeconds,89445 -timer-event-end,V8.RecompileSynchronous,89485 -timer-event-start,V8.RecompileSynchronous,89730 -timer-event-start,V8.ParseLazyMicroSeconds,89740 -tick,0x81168ba,89761,0,0x90d5060,0,0x2b85056f,0x2b85cd2d,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-end,V8.ParseLazyMicroSeconds,89805 -code-creation,LazyCompile,0,0x2b85db60,1838,sjcl.mode.ccm.G bsuite/kraken-once/stanford-crypto-ccm.js:20,0x2f33a310,~ -timer-event-start,V8.ParseLazyMicroSeconds,89969 -timer-event-end,V8.ParseLazyMicroSeconds,89990 -timer-event-start,V8.ParseLazyMicroSeconds,90016 -timer-event-end,V8.ParseLazyMicroSeconds,90042 -timer-event-start,V8.ParseLazyMicroSeconds,90084 -timer-event-end,V8.ParseLazyMicroSeconds,90098 -timer-event-start,V8.ParseLazyMicroSeconds,90129 -timer-event-end,V8.ParseLazyMicroSeconds,90170 -timer-event-start,V8.ParseLazyMicroSeconds,90271 -timer-event-end,V8.ParseLazyMicroSeconds,90286 -timer-event-start,V8.ParseLazyMicroSeconds,90326 -timer-event-end,V8.ParseLazyMicroSeconds,90344 -timer-event-end,V8.RecompileSynchronous,90480 -tick,0x2b8596f9,90829,0,0x8,0,0x2b852252,0x2b8454f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-end,V8.RecompileConcurrent,91133 -timer-event-start,V8.RecompileConcurrent,91145 -timer-event-start,V8.RecompileSynchronous,91197 -code-creation,Stub,2,0x2b85e2a0,1800,RecordWriteStub -code-creation,Stub,2,0x2b85e9c0,1805,RecordWriteStub -code-creation,Stub,2,0x2b85f0e0,1785,RecordWriteStub -code-creation,Stub,2,0x2b85f7e0,1797,RecordWriteStub -timer-event-end,V8.RecompileConcurrent,91529 -timer-event-start,V8.RecompileConcurrent,91540 -code-creation,Stub,2,0x2b85ff00,1789,RecordWriteStub -code-creation,Stub,2,0x2b860600,1805,RecordWriteStub -code-creation,LazyCompile,1,0x2b860d20,9288,sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21,0x2f33a370,* -timer-event-end,V8.RecompileSynchronous,91729 -timer-event-start,V8.RecompileSynchronous,91735 -code-creation,LazyCompile,1,0x2b863180,2119,sjcl.bitArray.equal bsuite/kraken-once/stanford-crypto-ccm.js:10,0x2f339c50,* -timer-event-end,V8.RecompileSynchronous,91833 -tick,0xf74c34b6,91883,0,0x90ebc51,2,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-deopt,91990,9312 -code-creation,LoadPolymorphicIC,5,0x2b8639e0,105,length -tick,0x2b859a99,92950,0,0x4,0,0x2b852252,0x2b8455f6,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,93234 -timer-event-start,V8.External,93245 -timer-event-end,V8.External,93249 -timer-event-end,V8.RecompileConcurrent,93304 -timer-event-start,V8.External,93319 -timer-event-end,V8.External,93327 -timer-event-end,V8.GCScavenger,93331 -timer-event-start,V8.RecompileSynchronous,93353 -code-creation,Stub,2,0x2b863a60,1800,RecordWriteStub -code-creation,Stub,2,0x2b864180,1780,RecordWriteStub -code-creation,LazyCompile,1,0x2b864880,7990,sjcl.mode.ccm.G bsuite/kraken-once/stanford-crypto-ccm.js:20,0x2f33a310,* -timer-event-end,V8.RecompileSynchronous,93732 -code-creation,LoadPolymorphicIC,5,0x2b8667c0,105,length -code-creation,LoadPolymorphicIC,5,0x2b866840,105,length -code-creation,LoadPolymorphicIC,5,0x2b8668c0,105,length -tick,0x2b848cbd,94006,0,0xa,0,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,LoadPolymorphicIC,5,0x2b866940,105,length -tick,0x8231000,95074,0,0x90d5060,0,0x2b848e54,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x83b9d75,96149,0,0x527db159,0,0x2b82364b,0x2b83a13d,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,96446 -timer-event-start,V8.External,96457 -timer-event-end,V8.External,96461 -timer-event-start,V8.External,96513 -timer-event-end,V8.External,96520 -timer-event-end,V8.GCScavenger,96524 -tick,0x2b85960c,97208,0,0xfee0,0,0x2b852252,0x2b848c4b,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b83b5b3,98279,0,0x2b851c24,0,0x2b85cd19,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,99128 -timer-event-start,V8.External,99139 -timer-event-end,V8.External,99143 -timer-event-start,V8.External,99189 -timer-event-end,V8.External,99195 -timer-event-end,V8.GCScavenger,99199 -tick,0x821c54b,99345,0,0x5270e530,0,0x2b83bd35,0x2b85ccab,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b85a010,100416,0,0x0,0,0x2b852252,0x2b865810,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x808b5f1,101472,0,0x2f308081,0,0x2b8537a0,0x2b84a325,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,101820 -timer-event-start,V8.External,101831 -timer-event-end,V8.External,101835 -timer-event-start,V8.External,101885 -timer-event-end,V8.External,101891 -timer-event-end,V8.GCScavenger,101895 -tick,0x2b85a376,102533,0,0x9c155cd6,0,0x2b852252,0x2b865810,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b863678,103607,0,0x4c0,0,0x2b83a0df,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,104515 -timer-event-start,V8.External,104529 -timer-event-end,V8.External,104533 -timer-event-start,V8.External,104581 -timer-event-end,V8.External,104588 -timer-event-end,V8.GCScavenger,104592 -tick,0x2b85a2dc,104658,0,0x29,0,0x2b852252,0x2b8658f7,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b859e24,105742,0,0x80c5e06,0,0x2b852252,0x2b8654d2,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-deopt,106093,4416 -code-creation,Stub,12,0x2b8669c0,190,BinaryOpStub_MOD_Alloc_Smi+Smi -tick,0x2b8514f9,106811,0,0xd1b6f5df,0,0x2b8657f1,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,107254 -timer-event-start,V8.External,107264 -timer-event-end,V8.External,107268 -timer-event-start,V8.External,107317 -timer-event-end,V8.External,107323 -timer-event-end,V8.GCScavenger,107327 -timer-event-start,V8.RecompileSynchronous,107462 -timer-event-start,V8.ParseLazyMicroSeconds,107471 -timer-event-end,V8.ParseLazyMicroSeconds,107537 -timer-event-end,V8.RecompileSynchronous,107729 -timer-event-start,V8.RecompileConcurrent,107764 -tick,0x2b859da9,107874,0,0x2,0,0x2b852252,0x2b848b65,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-end,V8.RecompileConcurrent,108795 -timer-event-start,V8.RecompileSynchronous,108885 -tick,0x2b859d60,108935,0,0x0,0,0x2b852252,0x2b8658f7,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,Stub,2,0x2b866a80,783,RecordWriteStub -code-creation,Stub,2,0x2b866da0,1772,RecordWriteStub -code-creation,LazyCompile,1,0x2b8674a0,4040,sjcl.cipher.aes bsuite/kraken-once/stanford-crypto-ccm.js:4,0x2f339830,* -timer-event-end,V8.RecompileSynchronous,109204 -tick,0x2b851bd9,110005,0,0x68,0,0x2b85cd19,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,110651 -timer-event-start,V8.External,110662 -timer-event-end,V8.External,110666 -timer-event-start,V8.External,110715 -timer-event-end,V8.External,110721 -timer-event-end,V8.GCScavenger,110725 -tick,0x2b85a1d8,111072,0,0x0,0,0x2b852252,0x2b8658f7,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b848d38,112161,0,0x4c,0,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.RecompileSynchronous,112323 -timer-event-start,V8.ParseLazyMicroSeconds,112335 -timer-event-end,V8.ParseLazyMicroSeconds,112387 -timer-event-start,V8.ParseLazyMicroSeconds,112444 -timer-event-end,V8.ParseLazyMicroSeconds,112463 -timer-event-start,V8.ParseLazyMicroSeconds,112496 -timer-event-end,V8.ParseLazyMicroSeconds,112509 -timer-event-start,V8.ParseLazyMicroSeconds,112536 -timer-event-end,V8.ParseLazyMicroSeconds,112552 -timer-event-start,V8.ParseLazyMicroSeconds,112576 -timer-event-end,V8.ParseLazyMicroSeconds,112598 -timer-event-start,V8.ParseLazyMicroSeconds,112639 -timer-event-end,V8.ParseLazyMicroSeconds,112653 -timer-event-start,V8.ParseLazyMicroSeconds,112685 -timer-event-end,V8.ParseLazyMicroSeconds,112722 -timer-event-start,V8.ParseLazyMicroSeconds,112803 -timer-event-end,V8.ParseLazyMicroSeconds,112819 -timer-event-start,V8.ParseLazyMicroSeconds,112848 -timer-event-end,V8.ParseLazyMicroSeconds,112863 -timer-event-end,V8.RecompileSynchronous,112986 -timer-event-start,V8.RecompileConcurrent,113012 -tick,0x2b867dc3,113148,0,0x100,0,0x2b839e65,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,114171 -timer-event-start,V8.External,114182 -timer-event-end,V8.External,114186 -tick,0x82c920e,114254,0,0x0,1 -timer-event-start,V8.External,114309 -timer-event-end,V8.External,114330 -timer-event-end,V8.GCScavenger,114350 -timer-event-end,V8.RecompileConcurrent,115013 -timer-event-start,V8.RecompileSynchronous,115032 -tick,0x8369515,115325,0,0x9135ff0,2,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,LazyCompile,1,0x5120a000,9284,sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21,0x2f33a370,* -timer-event-end,V8.RecompileSynchronous,115434 -code-deopt,115666,9312 -tick,0x2b85056f,116392,0,0x52f8f619,0,0x2b85cd2d,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b812420,117465,0,0x2b85592e,0,0x2b86573b,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,117571 -timer-event-start,V8.External,117583 -timer-event-end,V8.External,117587 -timer-event-start,V8.External,117636 -timer-event-end,V8.External,117642 -timer-event-end,V8.GCScavenger,117646 -tick,0x811db13,118481,0,0x90d5060,0,0x2b85cd53,0x2b839eb3,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x80c4222,119548,0,0x90d5060,0,0x2b85599a,0x2b86573b,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,120368 -timer-event-start,V8.External,120379 -timer-event-end,V8.External,120383 -timer-event-start,V8.External,120428 -timer-event-end,V8.External,120434 -timer-event-end,V8.GCScavenger,120438 -tick,0x2b867eb3,120610,0,0x100,0,0x2b839e65,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b859eae,121680,0,0x80c5e06,0,0x2b852252,0x2b8658f7,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b85981d,122808,0,0x21,0,0x2b852252,0x2b848c4b,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,123188 -timer-event-start,V8.External,123199 -timer-event-end,V8.External,123203 -timer-event-start,V8.External,123248 -timer-event-end,V8.External,123254 -timer-event-end,V8.GCScavenger,123258 -tick,0x2b859ca8,123878,0,0x0,0,0x2b852252,0x2b865810,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x80fa2d1,124943,0,0x5279ab29,0,0x2b83bd35,0x2b85ccab,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,126000 -timer-event-start,V8.External,126017 -timer-event-end,V8.External,126022 -tick,0x808b6b0,126038,0,0x2f308081,0,0x2b855838,0x2b848b0a,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.External,126109 -timer-event-end,V8.External,126129 -timer-event-end,V8.GCScavenger,126139 -tick,0x808b656,127081,0,0x2f308081,0,0x2b8658be,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b85a1f0,128141,0,0x1f,0,0x2b852252,0x2b848c4b,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,128896 -timer-event-start,V8.External,128907 -timer-event-end,V8.External,128911 -timer-event-start,V8.External,128958 -timer-event-end,V8.External,128964 -timer-event-end,V8.GCScavenger,128968 -tick,0x2b867d2b,129212,0,0x100,0,0x2b839e65,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b859a7b,130285,0,0x80c5e06,0,0x2b852252,0x2b865810,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b859c3b,131350,0,0x0,0,0x2b852252,0x2b8658f7,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,131713 -timer-event-start,V8.External,131723 -timer-event-end,V8.External,131727 -timer-event-start,V8.External,131772 -timer-event-end,V8.External,131778 -timer-event-end,V8.GCScavenger,131782 -tick,0x80c413f,132412,0,0x90d5060,0,0x2b855ca8,0x2b8446a3,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x80a1baf,133466,0,0x811e5c0,0,0x2b848b2e,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,134532 -tick,0x2b85d126,134550,0,0x2,0,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.External,134619 -timer-event-end,V8.External,134636 -timer-event-start,V8.External,134702 -timer-event-end,V8.External,134708 -timer-event-end,V8.GCScavenger,134712 -tick,0x2b8594d3,135617,0,0x80c5e06,0,0x2b852252,0x2b8654d2,0x2b844628,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.RecompileSynchronous,135776 -timer-event-start,V8.ParseLazyMicroSeconds,135787 -timer-event-end,V8.ParseLazyMicroSeconds,135838 -timer-event-start,V8.ParseLazyMicroSeconds,135894 -timer-event-end,V8.ParseLazyMicroSeconds,135913 -timer-event-start,V8.ParseLazyMicroSeconds,135946 -timer-event-end,V8.ParseLazyMicroSeconds,135960 -timer-event-start,V8.ParseLazyMicroSeconds,135987 -timer-event-end,V8.ParseLazyMicroSeconds,136002 -timer-event-start,V8.ParseLazyMicroSeconds,136026 -timer-event-end,V8.ParseLazyMicroSeconds,136048 -timer-event-start,V8.ParseLazyMicroSeconds,136089 -timer-event-end,V8.ParseLazyMicroSeconds,136103 -timer-event-start,V8.ParseLazyMicroSeconds,136135 -timer-event-end,V8.ParseLazyMicroSeconds,136172 -timer-event-start,V8.ParseLazyMicroSeconds,136253 -timer-event-end,V8.ParseLazyMicroSeconds,136270 -timer-event-start,V8.ParseLazyMicroSeconds,136301 -timer-event-end,V8.ParseLazyMicroSeconds,136317 -timer-event-end,V8.RecompileSynchronous,136440 -timer-event-start,V8.RecompileConcurrent,136466 -tick,0x2b859c6e,136680,0,0x0,0,0x2b852252,0x2b8658f7,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-creation,LoadPolymorphicIC,5,0x5120c460,105,length -code-creation,LoadPolymorphicIC,5,0x5120c4e0,117,length -code-creation,LoadPolymorphicIC,5,0x5120c560,117,length -code-creation,LoadPolymorphicIC,5,0x5120c5e0,105,length -code-creation,LoadPolymorphicIC,5,0x5120c660,105,length -tick,0x2b855ece,137742,0,0x527d0961,0,0x2b8446a3,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,138203 -timer-event-start,V8.External,138213 -timer-event-end,V8.External,138217 -timer-event-start,V8.External,138271 -timer-event-end,V8.External,138277 -timer-event-end,V8.GCScavenger,138281 -timer-event-end,V8.RecompileConcurrent,138393 -timer-event-start,V8.RecompileSynchronous,138412 -code-creation,LazyCompile,1,0x5120c6e0,9284,sjcl.mode.ccm.I bsuite/kraken-once/stanford-crypto-ccm.js:21,0x2f33a370,* -timer-event-end,V8.RecompileSynchronous,138781 -tick,0x83647f0,138812,0,0xf633ddf4,2,0x2b844670,0x2b83a0cc,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -code-deopt,138895,9312 -tick,0x2b851212,139867,0,0xff81fd00,0,0x2b8657f1,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x82ebff7,140937,0,0x2f33ca81,0,0x2b85056f,0x2b85cd2d,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,141540 -timer-event-start,V8.External,141551 -timer-event-end,V8.External,141555 -timer-event-start,V8.External,141605 -timer-event-end,V8.External,141611 -timer-event-end,V8.GCScavenger,141615 -tick,0x2b85a0a6,142005,0,0x0,0,0x2b852252,0x2b865810,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x8116886,143088,0,0x90d5060,0,0x2b85b862,0x2b848b8c,0x2b84a58b,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b83dbaf,144137,0,0x2b85cd53,0,0x2b839fd2,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.GCScavenger,144365 -timer-event-start,V8.External,144376 -timer-event-end,V8.External,144380 -timer-event-start,V8.External,144428 -timer-event-end,V8.External,144434 -timer-event-end,V8.GCScavenger,144438 -tick,0x81168ba,145212,0,0x90d5060,0,0x2b85056f,0x2b85cd2d,0x2b839f04,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -tick,0x2b851430,146268,0,0xff81fd00,0,0x2b8657f1,0x2b84a5e0,0x2b83a281,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b85b238,0x2b83a474,0x2b838f3f,0x2b838c50,0x2b839b39,0x2b83970e,0x2b83964b,0x2b8394a8,0x2b839273,0x2b839036,0x2b838f3f,0x2b838c50,0x2b83892e,0x2b8383df,0x2b8350ac -timer-event-start,V8.ParseLazyMicroSeconds,146339 -timer-event-end,V8.ParseLazyMicroSeconds,146358 -timer-event-start,V8.CompileLazy,146364 -timer-event-start,V8.CompileFullCode,146369 -timer-event-end,V8.CompileFullCode,146386 -code-creation,LazyCompile,0,0x5120eb40,212, bsuite/kraken-once/stanford-crypto-ccm.js:172,0x2f33dd88,~ -timer-event-end,V8.CompileLazy,146400 -code-creation,Stub,12,0x5120ec20,311,BinaryOpStub_SUB_Alloc_Generic+Generic -timer-event-start,V8.ParseLazyMicroSeconds,146431 -timer-event-end,V8.ParseLazyMicroSeconds,146461 -timer-event-start,V8.CompileLazy,146467 -timer-event-start,V8.CompileFullCode,146475 -timer-event-end,V8.CompileFullCode,146495 -code-creation,LazyCompile,0,0x5120ed60,580,NonNumberToNumber native runtime.js:548,0x44225f78,~ -timer-event-end,V8.CompileLazy,146508 -code-creation,Stub,2,0x5120efc0,98,valueOf -code-creation,LoadPolymorphicIC,5,0x5120f040,117,valueOf -code-creation,CallIC,7,0x5120f0c0,129,ToNumber -timer-event-start,V8.ParseLazyMicroSeconds,146556 -timer-event-end,V8.ParseLazyMicroSeconds,146569 -timer-event-start,V8.CompileLazy,146574 -timer-event-start,V8.CompileFullCode,146580 -timer-event-end,V8.CompileFullCode,146591 -code-creation,LazyCompile,0,0x5120f160,208,record bsuite/kraken-once/stanford-crypto-ccm.js:7229,0x2f339680,~ -timer-event-end,V8.CompileLazy,146603 -timer-event-start,V8.External,146613 -timer-event-end,V8.External,146656 -timer-event-end,V8.Execute,146662 -timer-event-start,V8.RecompileConcurrent,146700 -timer-event-end,V8.RecompileConcurrent,146738 -profiler,end diff --git a/implementation-contributed/v8/mjsunit/tools/profviz.js b/implementation-contributed/v8/mjsunit/tools/profviz.js deleted file mode 100644 index f89a2adeb3c..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/profviz.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Load implementations from /tools. -// Files: tools/csvparser.js tools/splaytree.js tools/codemap.js -// Files: tools/consarray.js tools/profile.js tools/profile_view.js -// Files: tools/logreader.js tools/arguments.js tools/tickprocessor.js -// Files: tools/profviz/composer.js -// Resources: test/mjsunit/tools/profviz-test.log -// Resources: test/mjsunit/tools/profviz-test.default -// Env: TEST_FILE_NAME - -assertEquals('string', typeof TEST_FILE_NAME); -var path_length = TEST_FILE_NAME.lastIndexOf('/'); -if (path_length == -1) { - path_length = TEST_FILE_NAME.lastIndexOf('\\'); -} -assertTrue(path_length != -1); - -var path = TEST_FILE_NAME.substr(0, path_length + 1); -var input_file = path + "profviz-test.log"; -var reference_file = path + "profviz-test.default"; - -var content_lines = read(input_file).split("\n"); -var line_cursor = 0; -var output_lines = []; - -function input() { - return content_lines[line_cursor++]; -} - -function output(line) { - output_lines.push(line); -} - -function set_range(start, end) { - range_start = start; - range_end = end; -} - -var distortion = 4500 / 1000000; -var resx = 1600; -var resy = 600; - -var psc = new PlotScriptComposer(resx, resy); -psc.collectData(input, distortion); -psc.findPlotRange(undefined, undefined, set_range); -var objects = psc.assembleOutput(output); - -output("# start: " + range_start); -output("# end: " + range_end); -output("# objects: " + objects); - -var create_baseline = false; - -if (create_baseline) { - print(JSON.stringify(output_lines, null, 2)); -} else { - assertArrayEquals(JSON.parse(read(reference_file)), output_lines); -} diff --git a/implementation-contributed/v8/mjsunit/tools/splaytree.js b/implementation-contributed/v8/mjsunit/tools/splaytree.js deleted file mode 100644 index d582dc972f0..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/splaytree.js +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Load the Splay tree implementation from /tools. -// Files: tools/splaytree.js - - -(function testIsEmpty() { - var tree = new SplayTree(); - assertTrue(tree.isEmpty()); - tree.insert(0, 'value'); - assertFalse(tree.isEmpty()); -})(); - - -(function testExportValues() { - var tree = new SplayTree(); - assertArrayEquals([], tree.exportValues()); - tree.insert(0, 'value'); - assertArrayEquals(['value'], tree.exportValues()); - tree.insert(0, 'value'); - assertArrayEquals(['value'], tree.exportValues()); -})(); - - -function createSampleTree() { - // Creates the following tree: - // 50 - // / \ - // 30 60 - // / \ \ - // 10 40 90 - // \ / \ - // 20 70 100 - // / \ - // 15 80 - // - // We can't use the 'insert' method because it also uses 'splay_'. - return { key: 50, value: 50, - left: { key: 30, value: 30, - left: { key: 10, value: 10, left: null, - right: { key: 20, value: 20, - left: { key: 15, value: 15, - left: null, right: null }, - right: null } }, - right: { key: 40, value: 40, left: null, right: null } }, - right: { key: 60, value: 60, left: null, - right: { key: 90, value: 90, - left: { key: 70, value: 70, left: null, - right: { key: 80, value: 80, - left: null, right: null } }, - right: { key: 100, value: 100, - left: null, right: null } } } }; -}; - - -(function testSplay() { - var tree = new SplayTree(); - tree.root_ = createSampleTree(); - assertArrayEquals([50, 30, 60, 10, 40, 90, 20, 70, 100, 15, 80], - tree.exportValues()); - tree.splay_(50); - assertArrayEquals([50, 30, 60, 10, 40, 90, 20, 70, 100, 15, 80], - tree.exportValues()); - tree.splay_(80); - assertArrayEquals([80, 60, 90, 50, 70, 100, 30, 10, 40, 20, 15], - tree.exportValues()); -})(); - - -(function testInsert() { - var tree = new SplayTree(); - tree.insert(5, 'root'); - tree.insert(3, 'left'); - assertArrayEquals(['left', 'root'], tree.exportValues()); - tree.insert(7, 'right'); - assertArrayEquals(['right', 'root', 'left'], tree.exportValues()); -})(); - - -(function testFind() { - var tree = new SplayTree(); - tree.insert(5, 'root'); - tree.insert(3, 'left'); - tree.insert(7, 'right'); - assertEquals('root', tree.find(5).value); - assertEquals('left', tree.find(3).value); - assertEquals('right', tree.find(7).value); - assertEquals(null, tree.find(0)); - assertEquals(null, tree.find(100)); - assertEquals(null, tree.find(-100)); -})(); - - -(function testFindMin() { - var tree = new SplayTree(); - assertEquals(null, tree.findMin()); - tree.insert(5, 'root'); - tree.insert(3, 'left'); - tree.insert(7, 'right'); - assertEquals('left', tree.findMin().value); -})(); - - -(function testFindMax() { - var tree = new SplayTree(); - assertEquals(null, tree.findMax()); - tree.insert(5, 'root'); - tree.insert(3, 'left'); - tree.insert(7, 'right'); - assertEquals('right', tree.findMax().value); -})(); - - -(function testFindGreatestLessThan() { - var tree = new SplayTree(); - assertEquals(null, tree.findGreatestLessThan(10)); - tree.insert(5, 'root'); - tree.insert(3, 'left'); - tree.insert(7, 'right'); - assertEquals('right', tree.findGreatestLessThan(10).value); - assertEquals('right', tree.findGreatestLessThan(7).value); - assertEquals('root', tree.findGreatestLessThan(6).value); - assertEquals('left', tree.findGreatestLessThan(4).value); - assertEquals(null, tree.findGreatestLessThan(2)); -})(); - - -(function testRemove() { - var tree = new SplayTree(); - assertThrows('tree.remove(5)'); - tree.insert(5, 'root'); - tree.insert(3, 'left'); - tree.insert(7, 'right'); - assertThrows('tree.remove(1)'); - assertThrows('tree.remove(6)'); - assertThrows('tree.remove(10)'); - assertEquals('root', tree.remove(5).value); - assertEquals('left', tree.remove(3).value); - assertEquals('right', tree.remove(7).value); - assertArrayEquals([], tree.exportValues()); -})(); diff --git a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test-func-info.log b/implementation-contributed/v8/mjsunit/tools/tickprocessor-test-func-info.log deleted file mode 100644 index 67511217e11..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test-func-info.log +++ /dev/null @@ -1,11 +0,0 @@ -shared-library,shell,0x08048000,0x081ee000,0 -shared-library,/lib32/libm-2.7.so,0xf7db6000,0xf7dd9000,0 -shared-library,ffffe000-fffff000,0xffffe000,0xfffff000,0 -profiler,begin,1 -code-creation,Stub,0,100,0x424260,348,CompareStub_GE -code-creation,LazyCompile,0,101,0x2a8100,18535,DrawQube 3d-cube.js:188,0xf43abcac, -code-creation,LazyCompile,0,102,0x480100,3908,DrawLine 3d-cube.js:17,0xf43abc50, -tick,0x424284,0,0,0x480600,0,0x2aaaa5 -tick,0x42429f,0,0,0x480600,0,0x2aacb4 -tick,0x48063d,0,0,0x2d0f7c,0,0x2aaec6 -profiler,end diff --git a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.default b/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.default deleted file mode 100644 index e50911f600b..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.default +++ /dev/null @@ -1,62 +0,0 @@ -Statistical profiling result from v8.log, (13 ticks, 2 unaccounted, 0 excluded). - - [Shared libraries]: - ticks total nonlib name - 3 23.1% /lib32/libm-2.7.so - 1 7.7% ffffe000-fffff000 - - [JavaScript]: - ticks total nonlib name - - [C++]: - ticks total nonlib name - 2 15.4% 22.2% v8::internal::Runtime_Math_exp(v8::internal::Arguments) - 1 7.7% 11.1% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) - 1 7.7% 11.1% v8::internal::HashTable::FindEntry(v8::internal::String*) - 1 7.7% 11.1% exp - - [Summary]: - ticks total nonlib name - 0 0.0% 0.0% JavaScript - 5 38.5% 55.6% C++ - 0 0.0% 0.0% GC - 4 30.8% Shared libraries - 2 15.4% Unaccounted - - [C++ entry points]: - ticks cpp total name - 2 40.0% 15.4% v8::internal::Runtime_Math_exp(v8::internal::Arguments) - 1 20.0% 7.7% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) - 1 20.0% 7.7% v8::internal::HashTable::FindEntry(v8::internal::String*) - 1 20.0% 7.7% exp - - [Bottom up (heavy) profile]: - Note: percentage shows a share of a particular caller in the total - amount of its parent calls. - Callers occupying less than 1.0% are not shown. - - ticks parent name - 3 23.1% /lib32/libm-2.7.so - 3 100.0% LazyCompile: exp native math.js:41 - 3 100.0% Script: exp.js - - 2 15.4% v8::internal::Runtime_Math_exp(v8::internal::Arguments) - 2 100.0% LazyCompile: exp native math.js:41 - 2 100.0% Script: exp.js - - 2 15.4% UNKNOWN - 1 50.0% LazyCompile: exp native math.js:41 - 1 100.0% Script: exp.js - - 1 7.7% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) - 1 100.0% Script: exp.js - - 1 7.7% v8::internal::HashTable::FindEntry(v8::internal::String*) - 1 100.0% Script: exp.js - - 1 7.7% ffffe000-fffff000 - - 1 7.7% exp - 1 100.0% LazyCompile: exp native math.js:41 - 1 100.0% Script: exp.js - diff --git a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.func-info b/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.func-info deleted file mode 100644 index 7431512fa01..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.func-info +++ /dev/null @@ -1,35 +0,0 @@ -Statistical profiling result from v8.log, (3 ticks, 0 unaccounted, 0 excluded). - - [Shared libraries]: - ticks total nonlib name - - [JavaScript]: - ticks total nonlib name - 2 66.7% 66.7% Stub: CompareStub_GE - 1 33.3% 33.3% LazyCompile: DrawLine 3d-cube.js:17 - - [C++]: - ticks total nonlib name - - [Summary]: - ticks total nonlib name - 3 100.0% 100.0% JavaScript - 0 0.0% 0.0% C++ - 0 0.0% 0.0% GC - 0 0.0% Shared libraries - - [C++ entry points]: - ticks cpp total name - - [Bottom up (heavy) profile]: - Note: percentage shows a share of a particular caller in the total - amount of its parent calls. - Callers occupying less than 1.0% are not shown. - - ticks parent name - 2 66.7% Stub: CompareStub_GE - 2 100.0% LazyCompile: DrawLine 3d-cube.js:17 - 2 100.0% LazyCompile: DrawQube 3d-cube.js:188 - - 1 33.3% LazyCompile: DrawLine 3d-cube.js:17 - 1 100.0% LazyCompile: DrawQube 3d-cube.js:188 diff --git a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.gc-state b/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.gc-state deleted file mode 100644 index 507aaa135c4..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.gc-state +++ /dev/null @@ -1,27 +0,0 @@ -Statistical profiling result from v8.log, (13 ticks, 0 unaccounted, 13 excluded). - - [Shared libraries]: - ticks total nonlib name - - [JavaScript]: - ticks total nonlib name - - [C++]: - ticks total nonlib name - - [Summary]: - ticks total nonlib name - 0 0.0% 0.0% JavaScript - 0 0.0% 0.0% C++ - 0 0.0% 0.0% GC - 0 0.0% Shared libraries - - [C++ entry points]: - ticks cpp total name - - [Bottom up (heavy) profile]: - Note: percentage shows a share of a particular caller in the total - amount of its parent calls. - Callers occupying less than 1.0% are not shown. - - ticks parent name diff --git a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.ignore-unknown b/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.ignore-unknown deleted file mode 100644 index f329f062999..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.ignore-unknown +++ /dev/null @@ -1,61 +0,0 @@ -Statistical profiling result from v8.log, (13 ticks, 2 unaccounted, 0 excluded). - - [Shared libraries]: - ticks total nonlib name - 3 27.3% /lib32/libm-2.7.so - 1 9.1% ffffe000-fffff000 - - [JavaScript]: - ticks total nonlib name - - [C++]: - ticks total nonlib name - 2 18.2% 28.6% v8::internal::Runtime_Math_exp(v8::internal::Arguments) - 1 9.1% 14.3% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) - 1 9.1% 14.3% v8::internal::HashTable::FindEntry(v8::internal::String*) - 1 9.1% 14.3% exp - - [Summary]: - ticks total nonlib name - 0 0.0% 0.0% JavaScript - 5 45.5% 71.4% C++ - 0 0.0% 0.0% GC - 4 36.4% Shared libraries - - [C++ entry points]: - ticks cpp total name - 2 40.0% 18.2% v8::internal::Runtime_Math_exp(v8::internal::Arguments) - 1 20.0% 9.1% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) - 1 20.0% 9.1% v8::internal::HashTable::FindEntry(v8::internal::String*) - 1 20.0% 9.1% exp - - [Bottom up (heavy) profile]: - Note: percentage shows a share of a particular caller in the total - amount of its parent calls. - Callers occupying less than 1.0% are not shown. - - ticks parent name - 3 27.3% /lib32/libm-2.7.so - 3 100.0% LazyCompile: exp native math.js:41 - 3 100.0% Script: exp.js - - 2 18.2% v8::internal::Runtime_Math_exp(v8::internal::Arguments) - 2 100.0% LazyCompile: exp native math.js:41 - 2 100.0% Script: exp.js - - 2 18.2% UNKNOWN - 1 50.0% LazyCompile: exp native math.js:41 - 1 100.0% Script: exp.js - - 1 9.1% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) - 1 100.0% Script: exp.js - - 1 9.1% v8::internal::HashTable::FindEntry(v8::internal::String*) - 1 100.0% Script: exp.js - - 1 9.1% ffffe000-fffff000 - - 1 9.1% exp - 1 100.0% LazyCompile: exp native math.js:41 - 1 100.0% Script: exp.js - diff --git a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.log b/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.log deleted file mode 100644 index 049611e23bc..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.log +++ /dev/null @@ -1,25 +0,0 @@ -shared-library,shell,0x08048000,0x081ee000,0 -shared-library,/lib32/libm-2.7.so,0xf7db6000,0xf7dd9000,0 -shared-library,ffffe000-fffff000,0xffffe000,0xfffff000,0 -profiler,begin,1 -code-creation,Stub,0,100,0xf540a100,474,CEntryStub -code-creation,Script,0,101,0xf541cd80,736,exp.js -code-creation,Stub,0,102,0xf541d0e0,47,RuntimeStub_Math_exp -code-creation,LazyCompile,0,103,0xf541d120,145,exp native math.js:41 -function-creation,0xf441d280,0xf541d120 -code-creation,LoadIC,0,104,0xf541d280,117,j -code-creation,LoadIC,0,105,0xf541d360,63,i -tick,0x80f82d1,0,0,0,0,0xf541ce5c -tick,0x80f89a1,0,0,0,0,0xf541ce5c -tick,0x8123b5c,0,0,0,0,0xf541d1a1,0xf541ceea -tick,0x8123b65,0,0,0,0,0xf541d1a1,0xf541ceea -tick,0xf541d2be,0,0,0,0 -tick,0xf541d320,0,0,0,0 -tick,0xf541d384,0,0,0,0 -tick,0xf7db94da,0,0,0,0,0xf541d1a1,0xf541ceea -tick,0xf7db951c,0,0,0,0,0xf541d1a1,0xf541ceea -tick,0xf7dbc508,0,0,0,0,0xf541d1a1,0xf541ceea -tick,0xf7dbff21,0,0,0,0,0xf541d1a1,0xf541ceea -tick,0xf7edec90,0,0,0,0,0xf541d1a1,0xf541ceea -tick,0xffffe402,0,0,0,0 -profiler,end diff --git a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.only-summary b/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.only-summary deleted file mode 100644 index 0bee2fc270c..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.only-summary +++ /dev/null @@ -1,9 +0,0 @@ -Statistical profiling result from v8.log, (13 ticks, 2 unaccounted, 0 excluded). - - [Summary]: - ticks total nonlib name - 0 0.0% 0.0% JavaScript - 5 38.5% 55.6% C++ - 0 0.0% 0.0% GC - 4 30.8% Shared libraries - 2 15.4% Unaccounted diff --git a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.separate-ic b/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.separate-ic deleted file mode 100644 index de1f0ef424c..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/tickprocessor-test.separate-ic +++ /dev/null @@ -1,68 +0,0 @@ -Statistical profiling result from v8.log, (13 ticks, 2 unaccounted, 0 excluded). - - [Shared libraries]: - ticks total nonlib name - 3 23.1% /lib32/libm-2.7.so - 1 7.7% ffffe000-fffff000 - - [JavaScript]: - ticks total nonlib name - 1 7.7% 11.1% LoadIC: j - 1 7.7% 11.1% LoadIC: i - - [C++]: - ticks total nonlib name - 2 15.4% 22.2% v8::internal::Runtime_Math_exp(v8::internal::Arguments) - 1 7.7% 11.1% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) - 1 7.7% 11.1% v8::internal::HashTable::FindEntry(v8::internal::String*) - 1 7.7% 11.1% exp - - [Summary]: - ticks total nonlib name - 2 15.4% 22.2% JavaScript - 5 38.5% 55.6% C++ - 0 0.0% 0.0% GC - 4 30.8% Shared libraries - 2 15.4% Unaccounted - - [C++ entry points]: - ticks cpp total name - 2 40.0% 15.4% v8::internal::Runtime_Math_exp(v8::internal::Arguments) - 1 20.0% 7.7% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) - 1 20.0% 7.7% v8::internal::HashTable::FindEntry(v8::internal::String*) - 1 20.0% 7.7% exp - - [Bottom up (heavy) profile]: - Note: percentage shows a share of a particular caller in the total - amount of its parent calls. - Callers occupying less than 1.0% are not shown. - - ticks parent name - 3 23.1% /lib32/libm-2.7.so - 3 100.0% LazyCompile: exp native math.js:41 - 3 100.0% Script: exp.js - - 2 15.4% v8::internal::Runtime_Math_exp(v8::internal::Arguments) - 2 100.0% LazyCompile: exp native math.js:41 - 2 100.0% Script: exp.js - - 2 15.4% UNKNOWN - 1 50.0% LazyCompile: exp native math.js:41 - 1 100.0% Script: exp.js - - 1 7.7% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) - 1 100.0% Script: exp.js - - 1 7.7% v8::internal::HashTable::FindEntry(v8::internal::String*) - 1 100.0% Script: exp.js - - 1 7.7% ffffe000-fffff000 - - 1 7.7% exp - 1 100.0% LazyCompile: exp native math.js:41 - 1 100.0% Script: exp.js - - 1 7.7% LoadIC: j - - 1 7.7% LoadIC: i - diff --git a/implementation-contributed/v8/mjsunit/tools/tickprocessor.js b/implementation-contributed/v8/mjsunit/tools/tickprocessor.js deleted file mode 100644 index 3247ddf145e..00000000000 --- a/implementation-contributed/v8/mjsunit/tools/tickprocessor.js +++ /dev/null @@ -1,450 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Load implementations from /tools. -// Files: tools/splaytree.js tools/codemap.js tools/csvparser.js -// Files: tools/consarray.js tools/profile.js tools/profile_view.js -// Files: tools/logreader.js tools/arguments.js tools/tickprocessor.js -// Resources: test/mjsunit/tools/tickprocessor-test-func-info.log -// Resources: test/mjsunit/tools/tickprocessor-test.default -// Resources: test/mjsunit/tools/tickprocessor-test.func-info -// Resources: test/mjsunit/tools/tickprocessor-test.gc-state -// Resources: test/mjsunit/tools/tickprocessor-test.ignore-unknown -// Resources: test/mjsunit/tools/tickprocessor-test.log -// Resources: test/mjsunit/tools/tickprocessor-test.only-summary -// Resources: test/mjsunit/tools/tickprocessor-test.separate-ic -// Env: TEST_FILE_NAME - - -(function testArgumentsProcessor() { - var p_default = new ArgumentsProcessor([]); - assertTrue(p_default.parse()); - assertEquals(p_default.getDefaultResults(), p_default.result()); - - var p_logFile = new ArgumentsProcessor(['logfile.log']); - assertTrue(p_logFile.parse()); - assertEquals('logfile.log', p_logFile.result().logFileName); - - var p_platformAndLog = new ArgumentsProcessor(['--windows', 'winlog.log']); - assertTrue(p_platformAndLog.parse()); - assertEquals('windows', p_platformAndLog.result().platform); - assertEquals('winlog.log', p_platformAndLog.result().logFileName); - - var p_flags = new ArgumentsProcessor(['--gc', '--separate-ic=true']); - assertTrue(p_flags.parse()); - assertEquals(TickProcessor.VmStates.GC, p_flags.result().stateFilter); - assertTrue(p_flags.result().separateIc); - - var p_flags = new ArgumentsProcessor(['--gc', '--separate-ic=false']); - assertTrue(p_flags.parse()); - assertEquals(TickProcessor.VmStates.GC, p_flags.result().stateFilter); - assertFalse(p_flags.result().separateIc); - - var p_nmAndLog = new ArgumentsProcessor(['--nm=mn', 'nmlog.log']); - assertTrue(p_nmAndLog.parse()); - assertEquals('mn', p_nmAndLog.result().nm); - assertEquals('nmlog.log', p_nmAndLog.result().logFileName); - - var p_bad = new ArgumentsProcessor(['--unknown', 'badlog.log']); - assertFalse(p_bad.parse()); -})(); - - -(function testUnixCppEntriesProvider() { - var oldLoadSymbols = UnixCppEntriesProvider.prototype.loadSymbols; - - // shell executable - UnixCppEntriesProvider.prototype.loadSymbols = function(libName) { - this.symbols = [[ - ' U operator delete[](void*)@@GLIBCXX_3.4', - '08049790 T _init', - '08049f50 T _start', - '08139150 00000b4b t v8::internal::Runtime_StringReplaceRegExpWithString(v8::internal::Arguments)', - '08139ca0 000003f1 T v8::internal::Runtime::GetElementOrCharAt(v8::internal::Handle, unsigned int)', - '0813a0b0 00000855 t v8::internal::Runtime_DebugGetPropertyDetails(v8::internal::Arguments)', - '0818b220 00000036 W v8::internal::RegExpMacroAssembler::CheckPosition(int, v8::internal::Label*)', - ' w __gmon_start__', - '081f08a0 00000004 B stdout\n' - ].join('\n'), '']; - }; - - var shell_prov = new UnixCppEntriesProvider(); - var shell_syms = []; - shell_prov.parseVmSymbols('shell', 0x08048000, 0x081ee000, 0, - function (name, start, end) { - shell_syms.push(Array.prototype.slice.apply(arguments, [0])); - }); - assertEquals( - [['_init', 0x08049790, 0x08049f50], - ['_start', 0x08049f50, 0x08139150], - ['v8::internal::Runtime_StringReplaceRegExpWithString(v8::internal::Arguments)', 0x08139150, 0x08139150 + 0xb4b], - ['v8::internal::Runtime::GetElementOrCharAt(v8::internal::Handle, unsigned int)', 0x08139ca0, 0x08139ca0 + 0x3f1], - ['v8::internal::Runtime_DebugGetPropertyDetails(v8::internal::Arguments)', 0x0813a0b0, 0x0813a0b0 + 0x855], - ['v8::internal::RegExpMacroAssembler::CheckPosition(int, v8::internal::Label*)', 0x0818b220, 0x0818b220 + 0x36]], - shell_syms); - - // libc library - UnixCppEntriesProvider.prototype.loadSymbols = function(libName) { - this.symbols = [[ - '000162a0 00000005 T __libc_init_first', - '0002a5f0 0000002d T __isnan', - '0002a5f0 0000002d W isnan', - '0002aaa0 0000000d W scalblnf', - '0002aaa0 0000000d W scalbnf', - '0011a340 00000048 T __libc_thread_freeres', - '00128860 00000024 R _itoa_lower_digits\n'].join('\n'), '']; - }; - var libc_prov = new UnixCppEntriesProvider(); - var libc_syms = []; - libc_prov.parseVmSymbols('libc', 0xf7c5c000, 0xf7da5000, 0, - function (name, start, end) { - libc_syms.push(Array.prototype.slice.apply(arguments, [0])); - }); - var libc_ref_syms = [['__libc_init_first', 0x000162a0, 0x000162a0 + 0x5], - ['__isnan', 0x0002a5f0, 0x0002a5f0 + 0x2d], - ['scalblnf', 0x0002aaa0, 0x0002aaa0 + 0xd], - ['__libc_thread_freeres', 0x0011a340, 0x0011a340 + 0x48]]; - for (var i = 0; i < libc_ref_syms.length; ++i) { - libc_ref_syms[i][1] += 0xf7c5c000; - libc_ref_syms[i][2] += 0xf7c5c000; - } - assertEquals(libc_ref_syms, libc_syms); - - UnixCppEntriesProvider.prototype.loadSymbols = oldLoadSymbols; -})(); - - -(function testMacCppEntriesProvider() { - var oldLoadSymbols = MacCppEntriesProvider.prototype.loadSymbols; - - // shell executable - MacCppEntriesProvider.prototype.loadSymbols = function(libName) { - this.symbols = [[ - ' operator delete[]', - '00001000 __mh_execute_header', - '00001b00 start', - '00001b40 dyld_stub_binding_helper', - '0011b710 v8::internal::RegExpMacroAssembler::CheckPosition', - '00134250 v8::internal::Runtime_StringReplaceRegExpWithString', - '00137220 v8::internal::Runtime::GetElementOrCharAt', - '00137400 v8::internal::Runtime_DebugGetPropertyDetails\n' - ].join('\n'), '']; - }; - - var shell_prov = new MacCppEntriesProvider(); - var shell_syms = []; - shell_prov.parseVmSymbols('shell', 0x00001c00, 0x00163256, 0x100, - function (name, start, end) { - shell_syms.push(Array.prototype.slice.apply(arguments, [0])); - }); - assertEquals( - [['start', 0x00001c00, 0x00001c40], - ['dyld_stub_binding_helper', 0x00001c40, 0x0011b810], - ['v8::internal::RegExpMacroAssembler::CheckPosition', 0x0011b810, 0x00134350], - ['v8::internal::Runtime_StringReplaceRegExpWithString', 0x00134350, 0x00137320], - ['v8::internal::Runtime::GetElementOrCharAt', 0x00137320, 0x00137500], - ['v8::internal::Runtime_DebugGetPropertyDetails', 0x00137500, 0x00163256]], - shell_syms); - - // stdc++ library - MacCppEntriesProvider.prototype.loadSymbols = function(libName) { - this.symbols = [[ - '0000107a __gnu_cxx::balloc::__mini_vector::_Alloc_block*, __gnu_cxx::bitmap_allocator::_Alloc_block*> >::__mini_vector', - '0002c410 std::basic_streambuf >::pubseekoff', - '0002c488 std::basic_streambuf >::pubseekpos', - '000466aa ___cxa_pure_virtual\n'].join('\n'), '']; - }; - var stdc_prov = new MacCppEntriesProvider(); - var stdc_syms = []; - stdc_prov.parseVmSymbols('stdc++', 0x95728fb4, 0x95770005, 0, - function (name, start, end) { - stdc_syms.push(Array.prototype.slice.apply(arguments, [0])); - }); - var stdc_ref_syms = [['__gnu_cxx::balloc::__mini_vector::_Alloc_block*, __gnu_cxx::bitmap_allocator::_Alloc_block*> >::__mini_vector', 0x0000107a, 0x0002c410], - ['std::basic_streambuf >::pubseekoff', 0x0002c410, 0x0002c488], - ['std::basic_streambuf >::pubseekpos', 0x0002c488, 0x000466aa], - ['___cxa_pure_virtual', 0x000466aa, 0x95770005 - 0x95728fb4]]; - for (var i = 0; i < stdc_ref_syms.length; ++i) { - stdc_ref_syms[i][1] += 0x95728fb4; - stdc_ref_syms[i][2] += 0x95728fb4; - } - assertEquals(stdc_ref_syms, stdc_syms); - - MacCppEntriesProvider.prototype.loadSymbols = oldLoadSymbols; -})(); - - -(function testWindowsCppEntriesProvider() { - var oldLoadSymbols = WindowsCppEntriesProvider.prototype.loadSymbols; - - WindowsCppEntriesProvider.prototype.loadSymbols = function(libName) { - this.symbols = [ - ' Start Length Name Class', - ' 0001:00000000 000ac902H .text CODE', - ' 0001:000ac910 000005e2H .text$yc CODE', - ' Address Publics by Value Rva+Base Lib:Object', - ' 0000:00000000 __except_list 00000000 ', - ' 0001:00000000 ?ReadFile@@YA?AV?$Handle@VString@v8@@@v8@@PBD@Z 00401000 f shell.obj', - ' 0001:000000a0 ?Print@@YA?AV?$Handle@VValue@v8@@@v8@@ABVArguments@2@@Z 004010a0 f shell.obj', - ' 0001:00001230 ??1UTF8Buffer@internal@v8@@QAE@XZ 00402230 f v8_snapshot:scanner.obj', - ' 0001:00001230 ??1Utf8Value@String@v8@@QAE@XZ 00402230 f v8_snapshot:api.obj', - ' 0001:000954ba __fclose_nolock 004964ba f LIBCMT:fclose.obj', - ' 0002:00000000 __imp__SetThreadPriority@8 004af000 kernel32:KERNEL32.dll', - ' 0003:00000418 ?in_use_list_@PreallocatedStorage@internal@v8@@0V123@A 00544418 v8_snapshot:allocation.obj', - ' Static symbols', - ' 0001:00000b70 ?DefaultFatalErrorHandler@v8@@YAXPBD0@Z 00401b70 f v8_snapshot:api.obj', - ' 0001:000010b0 ?EnsureInitialized@v8@@YAXPBD@Z 004020b0 f v8_snapshot:api.obj', - ' 0001:000ad17b ??__Fnomem@?5???2@YAPAXI@Z@YAXXZ 004ae17b f LIBCMT:new.obj' - ].join('\r\n'); - }; - var shell_prov = new WindowsCppEntriesProvider(); - var shell_syms = []; - shell_prov.parseVmSymbols('shell.exe', 0x00400000, 0x0057c000, 0, - function (name, start, end) { - shell_syms.push(Array.prototype.slice.apply(arguments, [0])); - }); - assertEquals( - [['ReadFile', 0x00401000, 0x004010a0], - ['Print', 0x004010a0, 0x00402230], - ['v8::String::?1Utf8Value', 0x00402230, 0x004964ba], - ['v8::DefaultFatalErrorHandler', 0x00401b70, 0x004020b0], - ['v8::EnsureInitialized', 0x004020b0, 0x0057c000]], - shell_syms); - - WindowsCppEntriesProvider.prototype.loadSymbols = oldLoadSymbols; -})(); - - -// http://code.google.com/p/v8/issues/detail?id=427 -(function testWindowsProcessExeAndDllMapFile() { - function exeSymbols(exeName) { - return [ - ' 0000:00000000 ___ImageBase 00400000 ', - ' 0001:00000780 ?RunMain@@YAHHQAPAD@Z 00401780 f shell.obj', - ' 0001:00000ac0 _main 00401ac0 f shell.obj', - '' - ].join('\r\n'); - } - - function dllSymbols(dllName) { - return [ - ' 0000:00000000 ___ImageBase 01c30000 ', - ' 0001:00000780 _DllMain@12 01c31780 f libcmt:dllmain.obj', - ' 0001:00000ac0 ___DllMainCRTStartup 01c31ac0 f libcmt:dllcrt0.obj', - '' - ].join('\r\n'); - } - - var oldRead = read; - - read = exeSymbols; - var exe_exe_syms = []; - (new WindowsCppEntriesProvider()).parseVmSymbols( - 'chrome.exe', 0x00400000, 0x00472000, 0, - function (name, start, end) { - exe_exe_syms.push(Array.prototype.slice.apply(arguments, [0])); - }); - assertEquals( - [['RunMain', 0x00401780, 0x00401ac0], - ['_main', 0x00401ac0, 0x00472000]], - exe_exe_syms, '.exe with .exe symbols'); - - read = dllSymbols; - var exe_dll_syms = []; - (new WindowsCppEntriesProvider()).parseVmSymbols( - 'chrome.exe', 0x00400000, 0x00472000, 0, - function (name, start, end) { - exe_dll_syms.push(Array.prototype.slice.apply(arguments, [0])); - }); - assertEquals( - [], - exe_dll_syms, '.exe with .dll symbols'); - - read = dllSymbols; - var dll_dll_syms = []; - (new WindowsCppEntriesProvider()).parseVmSymbols( - 'chrome.dll', 0x01c30000, 0x02b80000, 0, - function (name, start, end) { - dll_dll_syms.push(Array.prototype.slice.apply(arguments, [0])); - }); - assertEquals( - [['_DllMain@12', 0x01c31780, 0x01c31ac0], - ['___DllMainCRTStartup', 0x01c31ac0, 0x02b80000]], - dll_dll_syms, '.dll with .dll symbols'); - - read = exeSymbols; - var dll_exe_syms = []; - (new WindowsCppEntriesProvider()).parseVmSymbols( - 'chrome.dll', 0x01c30000, 0x02b80000, 0, - function (name, start, end) { - dll_exe_syms.push(Array.prototype.slice.apply(arguments, [0])); - }); - assertEquals( - [], - dll_exe_syms, '.dll with .exe symbols'); - - read = oldRead; -})(); - - -function CppEntriesProviderMock() { -}; - - -CppEntriesProviderMock.prototype.parseVmSymbols = function( - name, startAddr, endAddr, slideAddr, symbolAdder) { - var symbols = { - 'shell': - [['v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)', 0x080f8800, 0x080f8d90], - ['v8::internal::HashTable::FindEntry(v8::internal::String*)', 0x080f8210, 0x080f8800], - ['v8::internal::Runtime_Math_exp(v8::internal::Arguments)', 0x08123b20, 0x08123b80]], - '/lib32/libm-2.7.so': - [['exp', startAddr + 0x00009e80, startAddr + 0x00009e80 + 0xa3], - ['fegetexcept', startAddr + 0x000061e0, startAddr + 0x000061e0 + 0x15]], - 'ffffe000-fffff000': []}; - assertTrue(name in symbols); - var syms = symbols[name]; - for (var i = 0; i < syms.length; ++i) { - symbolAdder.apply(null, syms[i]); - } -}; - - -function PrintMonitor(outputOrFileName) { - this.expectedOut = outputOrFileName; - this.outputFile = undefined; - if (typeof outputOrFileName == 'string') { - this.expectedOut = this.loadExpectedOutput(outputOrFileName) - this.outputFile = outputOrFileName; - } - var expectedOut = this.expectedOut; - var outputPos = 0; - var diffs = this.diffs = []; - var realOut = this.realOut = []; - var unexpectedOut = this.unexpectedOut = null; - - this.oldPrint = print; - print = function(str) { - var strSplit = str.split('\n'); - for (var i = 0; i < strSplit.length; ++i) { - var s = strSplit[i]; - realOut.push(s); - if (outputPos < expectedOut.length) { - if (expectedOut[outputPos] != s) { - diffs.push('line ' + outputPos + ': expected <' + - expectedOut[outputPos] + '> found <' + s + '>\n'); - } - outputPos++; - } else { - unexpectedOut = true; - } - } - }; -}; - - -PrintMonitor.prototype.loadExpectedOutput = function(fileName) { - var output = readFile(fileName); - return output.split('\n'); -}; - - -PrintMonitor.prototype.finish = function() { - print = this.oldPrint; - if (this.diffs.length > 0 || this.unexpectedOut != null) { - print("===== actual output: ====="); - print(this.realOut.join('\n')); - print("===== expected output: ====="); - if (this.outputFile) { - print("===== File: " + this.outputFile + " ====="); - } - print(this.expectedOut.join('\n')); - assertEquals([], this.diffs); - assertNull(this.unexpectedOut); - } -}; - - -function driveTickProcessorTest( - separateIc, separateBytecodes, separateBuiltins, separateStubs, - ignoreUnknown, stateFilter, logInput, refOutput, onlySummary) { - // TEST_FILE_NAME must be provided by test runner. - assertEquals('string', typeof TEST_FILE_NAME); - var pathLen = TEST_FILE_NAME.lastIndexOf('/'); - if (pathLen == -1) { - pathLen = TEST_FILE_NAME.lastIndexOf('\\'); - } - assertTrue(pathLen != -1); - var testsPath = TEST_FILE_NAME.substr(0, pathLen + 1); - var tp = new TickProcessor(new CppEntriesProviderMock(), - separateIc, - separateBytecodes, - separateBuiltins, - separateStubs, - TickProcessor.CALL_GRAPH_SIZE, - ignoreUnknown, - stateFilter, - "0", - "auto,auto", - false, - false, - false, - onlySummary); - var pm = new PrintMonitor(testsPath + refOutput); - tp.processLogFileInTest(testsPath + logInput); - tp.printStatistics(); - pm.finish(); -}; - - -(function testProcessing() { - var testData = { - 'Default': [ - false, false, true, true, false, null, - 'tickprocessor-test.log', 'tickprocessor-test.default', false], - 'SeparateIc': [ - true, false, true, true, false, null, - 'tickprocessor-test.log', 'tickprocessor-test.separate-ic', false], - 'IgnoreUnknown': [ - false, false, true, true, true, null, - 'tickprocessor-test.log', 'tickprocessor-test.ignore-unknown', false], - 'GcState': [ - false, false, true, true, false, TickProcessor.VmStates.GC, - 'tickprocessor-test.log', 'tickprocessor-test.gc-state', false], - 'FunctionInfo': [ - false, false, true, true, false, null, - 'tickprocessor-test-func-info.log', 'tickprocessor-test.func-info', - false], - 'OnlySummary': [ - false, false, true, true, false, null, - 'tickprocessor-test.log', 'tickprocessor-test.only-summary', true] - }; - for (var testName in testData) { - print('=== testProcessing-' + testName + ' ==='); - driveTickProcessorTest.apply(null, testData[testName]); - } -})(); diff --git a/implementation-contributed/v8/mjsunit/top-level-assignments.js b/implementation-contributed/v8/mjsunit/top-level-assignments.js deleted file mode 100644 index 7acc9c114c8..00000000000 --- a/implementation-contributed/v8/mjsunit/top-level-assignments.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Testing that optimization of top-level object initialization doesn't -// break V8. - -var x = new Object(); -x.a = 7; -x.b = function() { return 42; }; -x.c = 88; -x.d = "A Man Called Horse"; - -assertEquals(7, x.a); -assertEquals(42, x.b()); -assertEquals(88, x.c); -assertEquals("A Man Called Horse", x.d); - -var y = new Object(); -y.a = 7; -y.b = function() { return 42; }; -y.c = 12 * y.a; -y.d = "A Man Called Horse"; - -assertEquals(84, y.c); - -var z = new Object(); -z.a = 3; -function forty_two() { return 42; }; -z.a += 4; -z.b = forty_two; -z.c = 12; -z.c *= z.a; -z.d = "A Man Called Horse"; - -assertEquals(84, z.c); - -var x1 = new Object(); -var x2 = new Object(); -x1.a = 7; -x1.b = function() { return 42; }; -x2.a = 7; -x2.b = function() { return 42; }; -x1.c = 88; -x1.d = "A Man Called Horse"; -x2.c = 88; -x2.d = "A Man Called Horse"; - -assertEquals(7, x1.a); -assertEquals(42, x1.b()); -assertEquals(88, x1.c); -assertEquals("A Man Called Horse", x1.d); - -assertEquals(7, x2.a); -assertEquals(42, x2.b()); -assertEquals(88, x2.c); -assertEquals("A Man Called Horse", x2.d); - -function Calculator(x, y) { - this.x = x; - this.y = y; -} - -Calculator.prototype.sum = function() { return this.x + this.y; }; -Calculator.prototype.difference = function() { return this.x - this.y; }; -Calculator.prototype.product = function() { return this.x * this.y; }; -Calculator.prototype.quotient = function() { return this.x / this.y; }; - -var calc = new Calculator(20, 10); -assertEquals(30, calc.sum()); -assertEquals(10, calc.difference()); -assertEquals(200, calc.product()); -assertEquals(2, calc.quotient()); - -var x = new Object(); -x.__defineGetter__('a', function() { return 7 }); -x.b = function() { return 42; }; -x.c = 88; -x.d = "A Man Called Horse"; - -assertEquals(7, x.a); -assertEquals(42, x.b()); -assertEquals(88, x.c); -assertEquals("A Man Called Horse", x.d); diff --git a/implementation-contributed/v8/mjsunit/touint32.js b/implementation-contributed/v8/mjsunit/touint32.js deleted file mode 100644 index 9c4cc360161..00000000000 --- a/implementation-contributed/v8/mjsunit/touint32.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function ToUInt32(x) { - return x >>> 0; -} - -assertEquals(0, ToUInt32(0), "0"); -assertEquals(0, ToUInt32(-0), "-0"); -assertEquals(0, ToUInt32(Infinity), "Infinity"); -assertEquals(0, ToUInt32(-Infinity), "-Infinity"); -assertEquals(0, ToUInt32(NaN), "NaN"); - -assertEquals(0, ToUInt32(Number.MIN_VALUE), "MIN"); -assertEquals(0, ToUInt32(-Number.MIN_VALUE), "-MIN"); -assertEquals(0, ToUInt32(0.1), "0.1"); -assertEquals(0, ToUInt32(-0.1), "-0.1"); -assertEquals(1, ToUInt32(1), "1"); -assertEquals(1, ToUInt32(1.1), "1.1"); - -assertEquals(4294967295, ToUInt32(-1), "-1"); -assertEquals(4294967295, ToUInt32(-1.1), "-1.1"); - -assertEquals(2147483647, ToUInt32(2147483647), "2147483647"); -assertEquals(2147483648, ToUInt32(2147483648), "2147483648"); -assertEquals(2147483649, ToUInt32(2147483649), "2147483649"); - -assertEquals(4294967295, ToUInt32(4294967295), "4294967295"); -assertEquals(0, ToUInt32(4294967296), "4294967296"); -assertEquals(1, ToUInt32(4294967297), "4294967297"); - -assertEquals(2147483649, ToUInt32(-2147483647), "-2147483647"); -assertEquals(2147483648, ToUInt32(-2147483648), "-2147483648"); -assertEquals(2147483647, ToUInt32(-2147483649), "-2147483649"); - -assertEquals(1, ToUInt32(-4294967295), "-4294967295"); -assertEquals(0, ToUInt32(-4294967296), "-4294967296"); -assertEquals(4294967295, ToUInt32(-4294967297), "-4294967297"); - -assertEquals(2147483647, ToUInt32('2147483647'), "'2147483647'"); -assertEquals(2147483648, ToUInt32('2147483648'), "'2147483648'"); -assertEquals(2147483649, ToUInt32('2147483649'), "'2147483649'"); - -assertEquals(4294967295, ToUInt32('4294967295'), "'4294967295'"); -assertEquals(0, ToUInt32('4294967296'), "'4294967296'"); -assertEquals(1, ToUInt32('4294967297'), "'4294967297'"); diff --git a/implementation-contributed/v8/mjsunit/track-fields.js b/implementation-contributed/v8/mjsunit/track-fields.js deleted file mode 100644 index 7804fffec03..00000000000 --- a/implementation-contributed/v8/mjsunit/track-fields.js +++ /dev/null @@ -1,409 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --track-fields --track-double-fields --allow-natives-syntax - -// Test transitions caused by changes to field representations. - -function create_smi_object() { - var o = {}; - o.x = 1; - o.y = 2; - o.z = 3; - return o; -} - -var o1 = create_smi_object(); -var o2 = create_smi_object(); - -// o1,o2 are smi, smi, smi -assertTrue(%HaveSameMap(o1, o2)); -o1.y = 1.3; -// o1 is smi, double, smi -assertFalse(%HaveSameMap(o1, o2)); -o2.y = 1.5; -// o2 is smi, double, smi -assertTrue(%HaveSameMap(o1, o2)); - -// o3 is initialized as smi, double, smi -var o3 = create_smi_object(); -assertTrue(%HaveSameMap(o1, o3)); - -function set_large(o, v) { - o.x01 = v; o.x02 = v; o.x03 = v; o.x04 = v; o.x05 = v; o.x06 = v; o.x07 = v; - o.x08 = v; o.x09 = v; o.x10 = v; o.x11 = v; o.x12 = v; o.x13 = v; o.x14 = v; - o.x15 = v; o.x16 = v; o.x17 = v; o.x18 = v; o.x19 = v; o.x20 = v; o.x21 = v; - o.x22 = v; o.x23 = v; o.x24 = v; o.x25 = v; o.x26 = v; o.x27 = v; o.x28 = v; - o.x29 = v; o.x30 = v; o.x31 = v; o.x32 = v; o.x33 = v; o.x34 = v; o.x35 = v; - o.x36 = v; o.x37 = v; o.x38 = v; o.x39 = v; o.x40 = v; o.x41 = v; o.x42 = v; - o.y01 = v; o.y02 = v; o.y03 = v; o.y04 = v; o.y05 = v; o.y06 = v; o.y07 = v; - o.y08 = v; o.y09 = v; o.y10 = v; o.y11 = v; o.y12 = v; o.y13 = v; o.y14 = v; - o.y15 = v; o.y16 = v; o.y17 = v; o.y18 = v; o.y19 = v; o.y20 = v; o.y21 = v; -} - -// Check that large object migrations work. -var o4 = {}; -// All smi. -set_large(o4, 0); -assertTrue(%HasFastProperties(o4)); -// All double. -set_large(o4, 1.5); -// o5 is immediately allocated with doubles. -var o5 = {}; -set_large(o5, 0); -assertTrue(%HaveSameMap(o4, o5)); - -function create_smi_object2() { - var o = {}; - o.a = 1; - o.b = 2; - o.c = 3; - return o; -} - -// All smi -var o6 = create_smi_object2(); -var o7 = create_smi_object2(); - -assertTrue(%HaveSameMap(o6, o7)); -// Smi, double, smi. -o6.b = 1.5; -assertFalse(%HaveSameMap(o6, o7)); -// Smi, double, object. -o7.c = {}; -assertFalse(%HaveSameMap(o6, o7)); -// Smi, double, object. -o6.c = {}; -assertTrue(%HaveSameMap(o6, o7)); - -function poly_load(o, b) { - var v = o.field; - if (b) { - return v + 10; - } - return o; -} - -var of1 = {a:0}; -of1.field = {}; -var of2 = {b:0}; -of2.field = 10; - -poly_load(of1, false); -poly_load(of1, false); -poly_load(of2, true); -%OptimizeFunctionOnNextCall(poly_load); -assertEquals("[object Object]10", poly_load(of1, true)); - -// Ensure small object literals with doubles do not share double storage. -function object_literal() { return {"a":1.5}; } -var o8 = object_literal(); -var o9 = object_literal(); -o8.a = 4.6 -assertEquals(1.5, o9.a); - -// Ensure double storage is not leaked in the case of polymorphic loads. -function load_poly(o) { - return o.a; -} - -var o10 = { "a": 1.6 }; -var o11 = { "b": 1, "a": 1.7 }; -load_poly(o10); -load_poly(o10); -load_poly(o11); -%OptimizeFunctionOnNextCall(load_poly); -var val = load_poly(o10); -o10.a = 19.5; -assertFalse(o10.a == val); - -// Ensure polymorphic loads only go monomorphic when the representations are -// compatible. - -// Check polymorphic load from double + object fields. -function load_mono(o) { - return o.a1; -} - -var object = {"x": 1}; -var o10 = { "a1": 1.6 }; -var o11 = { "a1": object, "b": 1 }; -load_mono(o10); -load_mono(o10); -load_mono(o11); -%OptimizeFunctionOnNextCall(load_mono); -assertEquals(object, load_mono(o11)); - -// Check polymorphic load from smi + object fields. -function load_mono2(o) { - return o.a2; -} - -var o12 = { "a2": 5 }; -var o13 = { "a2": object, "b": 1 }; -load_mono2(o12); -load_mono2(o12); -load_mono2(o13); -%OptimizeFunctionOnNextCall(load_mono2); -assertEquals(object, load_mono2(o13)); - -// Check polymorphic load from double + double fields. -function load_mono3(o) { - return o.a3; -} - -var o14 = { "a3": 1.6 }; -var o15 = { "a3": 1.8, "b": 1 }; -load_mono3(o14); -load_mono3(o14); -load_mono3(o15); -%OptimizeFunctionOnNextCall(load_mono3); -assertEquals(1.6, load_mono3(o14)); -assertEquals(1.8, load_mono3(o15)); - -// Check that JSON parsing respects existing representations. -var o16 = JSON.parse('{"a":1.5}'); -var o17 = JSON.parse('{"a":100}'); -assertTrue(%HaveSameMap(o16, o17)); -var o17_a = o17.a; -assertEquals(100, o17_a); -o17.a = 200; -assertEquals(100, o17_a); -assertEquals(200, o17.a); - -// Ensure normalizing results in ignored representations. -var o18 = {}; -o18.field1 = 100; -o18.field2 = 1; -o18.to_delete = 100; - -var o19 = {}; -o19.field1 = 100; -o19.field2 = 1.6; -o19.to_delete = 100; - -assertFalse(%HaveSameMap(o18, o19)); - -delete o18.to_delete; -delete o19.to_delete; - -assertEquals(1, o18.field2); -assertEquals(1.6, o19.field2); - -// Test megamorphic keyed stub behaviour in combination with representations. -var some_object20 = {"a":1}; -var o20 = {}; -o20.smi = 1; -o20.dbl = 1.5; -o20.obj = some_object20; - -function keyed_load(o, k) { - return o[k]; -} - -function keyed_store(o, k, v) { - return o[k] = v; -} - -var smi20 = keyed_load(o20, "smi"); -var dbl20 = keyed_load(o20, "dbl"); -var obj20 = keyed_load(o20, "obj"); -keyed_load(o20, "smi"); -keyed_load(o20, "dbl"); -keyed_load(o20, "obj"); -keyed_load(o20, "smi"); -keyed_load(o20, "dbl"); -keyed_load(o20, "obj"); - -assertEquals(1, smi20); -assertEquals(1.5, dbl20); -assertEquals(some_object20, obj20); - -keyed_store(o20, "smi", 100); -keyed_store(o20, "dbl", 100); -keyed_store(o20, "obj", 100); -keyed_store(o20, "smi", 100); -keyed_store(o20, "dbl", 100); -keyed_store(o20, "obj", 100); -keyed_store(o20, "smi", 100); -keyed_store(o20, "dbl", 100); -keyed_store(o20, "obj", 100); - -assertEquals(1, smi20); -assertEquals(1.5, dbl20); -assertEquals(some_object20, obj20); - -assertEquals(100, o20.smi); -assertEquals(100, o20.dbl); -assertEquals(100, o20.dbl); - -function attr_mismatch_obj(v, writable) { - var o = {}; - // Assign twice to make the field non-constant. - // TODO(ishell): update test once constant field tracking is done. - o.some_value = 0; - o.some_value = v; - Object.defineProperty(o, "second_value", {value:10, writable:writable}); - return o; -} - -function is_writable(o, p) { - return Object.getOwnPropertyDescriptor(o,p).writable; -} - -var writable = attr_mismatch_obj(10, true); -var non_writable1 = attr_mismatch_obj(10.5, false); -assertTrue(is_writable(writable,"second_value")); -assertFalse(is_writable(non_writable1,"second_value")); -writable.some_value = 20.5; -assertTrue(is_writable(writable,"second_value")); -var non_writable2 = attr_mismatch_obj(10.5, false); -assertTrue(%HaveSameMap(non_writable1, non_writable2)); - -function test_f(v) { - var o = {}; - o.vbf = v; - o.func = test_f; - return o; -} - -function test_fic(o) { - return o.vbf; -} - -var ftest1 = test_f(10); -var ftest2 = test_f(10); -var ftest3 = test_f(10.5); -var ftest4 = test_f(10); -assertFalse(%HaveSameMap(ftest1, ftest3)); -assertTrue(%HaveSameMap(ftest3, ftest4)); -ftest2.func = is_writable; -test_fic(ftest1); -test_fic(ftest2); -test_fic(ftest3); -test_fic(ftest4); -assertTrue(%HaveSameMap(ftest1, ftest3)); -assertTrue(%HaveSameMap(ftest3, ftest4)); - -// Test representations and transition conversions. -function read_first_double(o) { - return o.first_double; -} -var df1 = {}; -df1.first_double=1.6; -read_first_double(df1); -read_first_double(df1); -function some_function1() { return 10; } -var df2 = {}; -df2.first_double = 1.7; -df2.second_function = some_function1; -function some_function2() { return 20; } -var df3 = {}; -df3.first_double = 1.7; -df3.second_function = some_function2; -df1.first_double = 10; -read_first_double(df1); - -// Test boilerplates with computed values. -function none_boilerplate(a) { - return {"a_none":a}; -} -%OptimizeFunctionOnNextCall(none_boilerplate); -var none_double1 = none_boilerplate(1.7); -var none_double2 = none_boilerplate(1.9); -assertTrue(%HaveSameMap(none_double1, none_double2)); -assertEquals(1.7, none_double1.a_none); -assertEquals(1.9, none_double2.a_none); -none_double2.a_none = 3.5; -var none_double1 = none_boilerplate(1.7); -var none_double2 = none_boilerplate(3.5); - -function none_to_smi(a) { - return {"a_smi":a}; -} - -var none_smi1 = none_to_smi(1); -var none_smi2 = none_to_smi(2); -%OptimizeFunctionOnNextCall(none_to_smi); -var none_smi3 = none_to_smi(3); -assertTrue(%HaveSameMap(none_smi1, none_smi2)); -assertTrue(%HaveSameMap(none_smi1, none_smi3)); -assertEquals(1, none_smi1.a_smi); -assertEquals(2, none_smi2.a_smi); -assertEquals(3, none_smi3.a_smi); - -function none_to_double(a) { - return {"a_double":a}; -} - -var none_to_double1 = none_to_double(1.5); -var none_to_double2 = none_to_double(2.8); -%OptimizeFunctionOnNextCall(none_to_double); -var none_to_double3 = none_to_double(3.7); -assertTrue(%HaveSameMap(none_to_double1, none_to_double2)); -assertTrue(%HaveSameMap(none_to_double1, none_to_double3)); -assertEquals(1.5, none_to_double1.a_double); -assertEquals(2.8, none_to_double2.a_double); -assertEquals(3.7, none_to_double3.a_double); - -function none_to_object(a) { - return {"an_object":a}; -} - -var none_to_object1 = none_to_object(true); -var none_to_object2 = none_to_object(false); -%OptimizeFunctionOnNextCall(none_to_object); -var none_to_object3 = none_to_object(3.7); -assertTrue(%HaveSameMap(none_to_object1, none_to_object2)); -assertTrue(%HaveSameMap(none_to_object1, none_to_object3)); -assertEquals(true, none_to_object1.an_object); -assertEquals(false, none_to_object2.an_object); -assertEquals(3.7, none_to_object3.an_object); - -function double_to_object(a) { - var o = {"d_to_h":1.8}; - o.d_to_h = a; - return o; -} - -var dh1 = double_to_object(true); -var dh2 = double_to_object(false); -assertTrue(%HaveSameMap(dh1, dh2)); -assertEquals(true, dh1.d_to_h); -assertEquals(false, dh2.d_to_h); - -function smi_to_object(a) { - var o = {"s_to_t":18}; - o.s_to_t = a; - return o; -} - -var st1 = smi_to_object(true); -var st2 = smi_to_object(false); -assertTrue(%HaveSameMap(st1, st2)); -assertEquals(true, st1.s_to_t); -assertEquals(false, st2.s_to_t); diff --git a/implementation-contributed/v8/mjsunit/transcendentals.js b/implementation-contributed/v8/mjsunit/transcendentals.js deleted file mode 100644 index 2a75d6da82c..00000000000 --- a/implementation-contributed/v8/mjsunit/transcendentals.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Two fp numbers that have the same hash value (see TranscendentalCache -// in heap.h). -var x = 0x123456789ABCD / 0x2000000000000; -var y = 0x1134567899BCD / 0x2000000000000; - -assertTrue(Math.sin(x) != Math.sin(y)); - -assertTrue(Math.cos(x) != Math.cos(y)); - -assertTrue(Math.tan(x) != Math.tan(y)); - -assertTrue(Math.log(x) != Math.log(y)); - -assertTrue(Math.asin(x) != Math.asin(y)); - -assertTrue(Math.acos(x) != Math.acos(y)); - -assertTrue(Math.atan(x) != Math.atan(y)); - -assertTrue(Math.exp(x) != Math.exp(y)); diff --git a/implementation-contributed/v8/mjsunit/transition-elements-kind.js b/implementation-contributed/v8/mjsunit/transition-elements-kind.js deleted file mode 100644 index 9acf52c0d20..00000000000 --- a/implementation-contributed/v8/mjsunit/transition-elements-kind.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// Allocation site for empty double arrays. -function foo() { - return new Array(); -} -var a = foo(); -a[0] = 1.1; - -// Emit a TransitionElementsKindStub which transitions from double to object. -function store(a,x) { - a[0] = x; -} -store([1.1], 'a'); -store([1.1], 1.1); -%OptimizeFunctionOnNextCall(store); - -// Use the TransitionElementsKindStub to transition from double to object. -var b = foo(); -store(b, 'a'); diff --git a/implementation-contributed/v8/mjsunit/try-catch-default-destructuring.js b/implementation-contributed/v8/mjsunit/try-catch-default-destructuring.js deleted file mode 100644 index c254a25855e..00000000000 --- a/implementation-contributed/v8/mjsunit/try-catch-default-destructuring.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function f1() { - let y = 200; - try { - throw {} - } catch ({x=()=>y, y=300}) { - return x() - } -} -assertEquals(300, f1()); - -function f2() { - let y = 200; - try { - throw {} - } catch ({x=()=>y}) { - let y = 300; - return x() - } -} -assertEquals(200, f2()); diff --git a/implementation-contributed/v8/mjsunit/try-catch-extension-object.js b/implementation-contributed/v8/mjsunit/try-catch-extension-object.js deleted file mode 100644 index efab8216630..00000000000 --- a/implementation-contributed/v8/mjsunit/try-catch-extension-object.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Try catch scopes should be implemented with special extension -// objects so that __proto__ accessors and accessor setters in the -// Object prototype have no effect. - -var setterCalled = false; -Object.prototype.__defineSetter__("x", function() { setterCalled = true; }); - -function runTest(test) { - setterCalled = false; - test(); -} - -function testProto() { - try { - throw 42; - } catch(__proto__) { - assertEquals(42, __proto__); - } -} - -function testAccessorSetter() { - try { - throw 42; - } catch(x) { - assertFalse(setterCalled); - assertEquals(42, x); - } -} - -runTest(testProto); -runTest(testAccessorSetter); diff --git a/implementation-contributed/v8/mjsunit/try-catch-scopes.js b/implementation-contributed/v8/mjsunit/try-catch-scopes.js deleted file mode 100644 index c5bada273f7..00000000000 --- a/implementation-contributed/v8/mjsunit/try-catch-scopes.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Exception variables used in try-catch should be scoped, e.g. only -// visible inside the catch block. They should *not* just be treated -// as local variables and they should be allowed to nest. -var e = 0; -try { - throw e + 1; -} catch(e) { - try { - throw e + 1; - } catch (e) { - assertEquals(2, e); - } - assertEquals(1, e); -} -assertEquals(0, e); diff --git a/implementation-contributed/v8/mjsunit/try-finally-continue.js b/implementation-contributed/v8/mjsunit/try-finally-continue.js deleted file mode 100644 index 5e04930c5d9..00000000000 --- a/implementation-contributed/v8/mjsunit/try-finally-continue.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we correctly restore the stack when continuing from a -// finally block inside a for-in. - -var f = 0; -var a = [1, 2, 3]; - -for (x in a) { - try{ - throw 'error'; - } finally { - f++; - continue; - } -} -assertEquals(3, f); - -f = 0; -for (x in a) { - try { - f++; - } finally { - f++; - continue; - } -} -assertEquals(6, f); - -f = 0; -for (x in a) { - try { - f++; - } finally { - try { - throw 'error' - } finally { - try { - f++; - } finally { - f++; - continue; - } - } - } -} -assertEquals(9, f); diff --git a/implementation-contributed/v8/mjsunit/try-finally-nested.js b/implementation-contributed/v8/mjsunit/try-finally-nested.js deleted file mode 100644 index c05f96a9ebb..00000000000 --- a/implementation-contributed/v8/mjsunit/try-finally-nested.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function f() { - try { - return 42; - } finally { - var executed = false; - while (!executed) { - try { - break; - } finally { - executed = true; - } - assertTrue(false, "should not reach here"); - } - assertTrue(executed, "finally block executed"); - } - return 87; -}; - -assertEquals(42, f()); diff --git a/implementation-contributed/v8/mjsunit/try.js b/implementation-contributed/v8/mjsunit/try.js deleted file mode 100644 index 86afdf7f084..00000000000 --- a/implementation-contributed/v8/mjsunit/try.js +++ /dev/null @@ -1,394 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -function Catch(f, g) { - var r; - try { r = f(); } catch (o) { return g(o); } - return r; -} - -function CatchReturn(f, g) { - try { return f(); } catch (o) { return g(o); } -} - - -var a = [Catch, CatchReturn] -for (var n in a) { - var c = a[n]; - assertEquals(1, c(function() { return 1; })); - assertEquals('bar', c(function() { return 'bar'; })); - assertEquals(1, c(function () { throw 1; }, function (x) { return x; })); - assertEquals('bar', c(function () { throw 'bar'; }, function (x) { return x; })); -} - - -assertEquals(1, (function() { try { return 1; } finally { } })()); -assertEquals(1, (function() { try { return 1; } finally { var x = 12; } })()); -assertEquals(2, (function() { try { } finally { return 2; } })()); -assertEquals(4, (function() { try { return 3; } finally { return 4; } })()); - -function f(x, n, v) { try { return x; } finally { x[n] = v; } } -assertEquals(2, f({}, 'foo', 2).foo); -assertEquals(5, f({}, 'bar', 5).bar); - -function guard(f) { try { f(); } catch (o) { return o; } } -assertEquals('baz', guard(function() { throw 'baz'; })); -assertEquals(2, (function() { try { throw {}; } catch(e) {} finally { return 2; } })()); -assertEquals(1, guard(function() { try { throw 1; } finally { } })); -assertEquals(2, guard(function() { try { throw 2; } finally { var x = 12; } })); -assertEquals(4, guard(function() { try { throw 3; } finally { throw 4; } })); - -(function () { - var iter = 1000000; - for (var i = 1; i <= iter; i++) { - try { - if (i == iter) gc(); - } finally { - if (i == iter) gc(); - } - } -})(); - -function trycatch(a) { - var o; - try { - throw 1; - } catch (o) { - a.push(o); - try { - throw 2; - } catch (o) { - a.push(o); - } - a.push(o); - } - a.push(o); -} -var a = []; -trycatch(a); -assertEquals(4, a.length); -assertEquals(1, a[0], "a[0]"); -assertEquals(2, a[1], "a[1]"); - -assertEquals(1, a[2], "a[2]"); -assertTrue(typeof a[3] === 'undefined', "a[3]"); - -assertTrue(typeof o === 'undefined', "global.o"); - - -function return_from_nested_catch(x) { - try { - try { - return x; - } catch (o) { - return -1; - } - } catch (o) { - return -2; - } -} - -assertEquals(0, return_from_nested_catch(0)); -assertEquals(1, return_from_nested_catch(1)); - - -function return_from_nested_finally(x) { - var a = [x-2]; - try { - try { - return a; - } finally { - a[0]++; - } - } finally { - a[0]++; - } -} - -assertEquals(0, return_from_nested_finally(0)[0]); -assertEquals(1, return_from_nested_finally(1)[0]); - - -function break_from_catch(x) { - x--; - L: - { - try { - x++; - if (false) return -1; - break L; - } catch (o) { - x--; - } - } - return x; -} - -assertEquals(0, break_from_catch(0)); -assertEquals(1, break_from_catch(1)); - - -function break_from_finally(x) { - L: - { - try { - x++; - if (false) return -1; - break L; - } finally { - x--; - } - x--; - } - return x; -} - -assertEquals(0, break_from_finally(0), "break from finally"); -assertEquals(1, break_from_finally(1), "break from finally"); - - -function continue_from_catch(x) { - x--; - var cont = true; - while (cont) { - try { - x++; - if (false) return -1; - cont = false; - continue; - } catch (o) { - x--; - } - } - return x; -} - -assertEquals(0, continue_from_catch(0)); -assertEquals(1, continue_from_catch(1)); - - -function continue_from_finally(x) { - var cont = true; - while (cont) { - try { - x++; - if (false) return -1; - cont = false; - continue; - } finally { - x--; - } - x--; - } - return x; -} - -assertEquals(0, continue_from_finally(0)); -assertEquals(1, continue_from_finally(1)); - - -function continue_alot_from_finally(x) { - var j = 0; - for (var i = 0; i < x;) { - try { - j++; - continue; - j++; // should not happen - } finally { - i++; // must happen - } - j++; // should not happen - } - return j; -} - - -assertEquals(100, continue_alot_from_finally(100)); -assertEquals(200, continue_alot_from_finally(200)); - - - -function break_from_nested_catch(x) { - x -= 2; - L: - { - try { - x++; - try { - x++; - if (false) return -1; - break L; - } catch (o) { - x--; - } - } catch (o) { - x--; - } - } - return x; -} - -assertEquals(0, break_from_nested_catch(0)); -assertEquals(1, break_from_nested_catch(1)); - - -function break_from_nested_finally(x) { - L: - { - try { - x++; - try { - x++; - if (false) return -1; - break L; - } finally { - x--; - } - } finally { - x--; - } - x--; // should not happen - } - return x; -} - -assertEquals(0, break_from_nested_finally(0)); -assertEquals(1, break_from_nested_finally(1)); - - -function continue_from_nested_catch(x) { - x -= 2; - var cont = true; - while (cont) { - try { - x++; - try { - x++; - if (false) return -1; - cont = false; - continue; - } catch (o) { - x--; - } - } catch (o) { - x--; - } - } - return x; -} - -assertEquals(0, continue_from_nested_catch(0)); -assertEquals(1, continue_from_nested_catch(1)); - - -function continue_from_nested_finally(x) { - var cont = true; - while (cont) { - try { - x++; - try { - x++; - if (false) return -1; - cont = false; - continue; - } finally { - x--; - } - } finally { - x--; - } - x--; // should not happen - } - return x; -} - -assertEquals(0, continue_from_nested_finally(0)); -assertEquals(1, continue_from_nested_finally(1)); - - -var caught = false; -var finalized = false; -var broke = true; -L: try { - break L; - broke = false; -} catch (o) { - caught = true; -} finally { - finalized = true; -} -assertTrue(broke); -assertFalse(caught); -assertTrue(finalized); - -function return_from_nested_finally_in_finally() { - try { - return 1; - } finally { - try { - return 2; - } finally { - return 42; - } - } -} - -assertEquals(42, return_from_nested_finally_in_finally()); - -function break_from_nested_finally_in_finally() { - L: try { - return 1; - } finally { - try { - return 2; - } finally { - break L; - } - } - return 42; -} - -assertEquals(42, break_from_nested_finally_in_finally()); - -function continue_from_nested_finally_in_finally() { - do { - try { - return 1; - } finally { - try { - return 2; - } finally { - continue; - } - } - } while (false); - return 42; -} - -assertEquals(42, continue_from_nested_finally_in_finally()); diff --git a/implementation-contributed/v8/mjsunit/type-profile/regress-707223.js b/implementation-contributed/v8/mjsunit/type-profile/regress-707223.js deleted file mode 100644 index ea0e84bf68a..00000000000 --- a/implementation-contributed/v8/mjsunit/type-profile/regress-707223.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -let e; -eval("e"); diff --git a/implementation-contributed/v8/mjsunit/typed-array-slice.js b/implementation-contributed/v8/mjsunit/typed-array-slice.js deleted file mode 100644 index b7debce8d94..00000000000 --- a/implementation-contributed/v8/mjsunit/typed-array-slice.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax - -// This is a regression test for overlapping key and value registers. - -var types = [Array, Int8Array, Uint8Array, Int16Array, Uint16Array, - Int32Array, Uint32Array, Uint8ClampedArray, Float32Array, - Float64Array]; - -var results1 = [-2, -2, 254, -2, 65534, -2, 4294967294, 0, -2, -2]; -var results2 = [undefined, -1, 255, -1, 65535, -1, 4294967295, 0, -1, -1]; -var results3 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; -var results4 = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; - -const kElementCount = 40; - -function do_slice(a) { - return Array.prototype.slice.call(a, 4, 8); -} - -for (var t = 0; t < types.length; t++) { - var type = types[t]; - var a = new type(kElementCount); - for (var i = 0; i < kElementCount; ++i ) { - a[i] = i-6; - } - delete a[5]; - var sliced = do_slice(a); - - %ClearFunctionFeedback(do_slice); - assertEquals(results1[t], sliced[0]); - assertEquals(results2[t], sliced[1]); - assertEquals(results3[t], sliced[2]); - assertEquals(results4[t], sliced[3]); -} diff --git a/implementation-contributed/v8/mjsunit/typeof.js b/implementation-contributed/v8/mjsunit/typeof.js deleted file mode 100644 index f6c47f8e2eb..00000000000 --- a/implementation-contributed/v8/mjsunit/typeof.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -// The type of a regular expression should be 'object', including in -// the context of string equality comparisons. -{ - const r = new RegExp; - - assertEquals('object', typeof r); - assertTrue(typeof r == 'object'); - assertFalse(typeof r == 'function'); - - function equals(x, y) { return x == y; } - assertTrue(equals('object', typeof r)); -} - -assertFalse(typeof null == "undefined"); - -assertEquals('undefined', typeof undefined); -assertEquals('object', typeof null); -assertEquals('boolean', typeof true); -assertEquals('boolean', typeof false); -assertEquals('number', typeof 42.42); -assertEquals('number', typeof 42); -assertEquals('bigint', typeof 42n); -assertEquals('string', typeof '42'); -assertEquals('symbol', typeof Symbol(42)); -assertEquals('object', typeof {}); -assertEquals('object', typeof []); -assertEquals('object', typeof new Proxy({}, {})); -assertEquals('object', typeof new Proxy([], {})); -assertEquals('function', typeof (_ => 42)); -assertEquals('function', typeof function() {}); -assertEquals('function', typeof function*() {}); -assertEquals('function', typeof async function() {}); -assertEquals('function', typeof async function*() {}); -assertEquals('function', typeof new Proxy(_ => 42, {})); -assertEquals('function', typeof class {}); -assertEquals('function', typeof Object); diff --git a/implementation-contributed/v8/mjsunit/tzoffset-seoul-noi18n.js b/implementation-contributed/v8/mjsunit/tzoffset-seoul-noi18n.js deleted file mode 100644 index 6894c24090e..00000000000 --- a/implementation-contributed/v8/mjsunit/tzoffset-seoul-noi18n.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-icu-timezone-data -// Environment Variables: TZ=Asia/Seoul - -// Seoul has DST (UTC+10) in 1987 and 1988. -assertEquals(new Date(Date.UTC(1986, 5, 22, 3)), - new Date(1986, 5, 22, 12)) -assertEquals(new Date(Date.UTC(1987, 5, 22, 2)), - new Date(1987, 5, 22, 12)) -assertEquals(new Date(Date.UTC(1987, 11, 22, 3)), - new Date(1987, 11, 22, 12)) -assertEquals(new Date(Date.UTC(1988, 5, 22, 2)), - new Date(1988, 5, 22, 12)) -assertEquals(new Date(Date.UTC(1988, 11, 22, 3)), - new Date(1988, 11, 22, 12)) -assertEquals(new Date(Date.UTC(1989, 5, 22, 3)), - new Date(1989, 5, 22, 12)) diff --git a/implementation-contributed/v8/mjsunit/tzoffset-seoul.js b/implementation-contributed/v8/mjsunit/tzoffset-seoul.js deleted file mode 100644 index 5afa1f8fe29..00000000000 --- a/implementation-contributed/v8/mjsunit/tzoffset-seoul.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --icu-timezone-data -// Environment Variables: TZ=Asia/Seoul - -// Seoul has DST (UTC+10) in 1987 and 1988. -assertEquals(new Date(Date.UTC(1986, 5, 22, 3)), - new Date(1986, 5, 22, 12)) -assertEquals(new Date(Date.UTC(1987, 5, 22, 2)), - new Date(1987, 5, 22, 12)) -assertEquals(new Date(Date.UTC(1987, 11, 22, 3)), - new Date(1987, 11, 22, 12)) -assertEquals(new Date(Date.UTC(1988, 5, 22, 2)), - new Date(1988, 5, 22, 12)) -assertEquals(new Date(Date.UTC(1988, 11, 22, 3)), - new Date(1988, 11, 22, 12)) -assertEquals(new Date(Date.UTC(1989, 5, 22, 3)), - new Date(1989, 5, 22, 12)) diff --git a/implementation-contributed/v8/mjsunit/tzoffset-transition-apia.js b/implementation-contributed/v8/mjsunit/tzoffset-transition-apia.js deleted file mode 100644 index bd6b6f73c34..00000000000 --- a/implementation-contributed/v8/mjsunit/tzoffset-transition-apia.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --icu-timezone-data -// Environment Variables: TZ=Pacific/Apia - -// https://www.timeanddate.com/time/zone/samoa/apia - -// 2011-09-24T03:00 : UTC-11 => UTC-10 -assertEquals(new Date(Date.UTC(2011, 8, 24, 13, 59)), - new Date(2011, 8, 24, 2, 59)) -assertEquals(new Date(Date.UTC(2011, 8, 24, 14, 30)), - new Date(2011, 8, 24, 3, 30)); -assertEquals(new Date(Date.UTC(2011, 8, 24, 14)), - new Date(2011, 8, 24, 4)); -assertEquals(new Date(Date.UTC(2011, 8, 24, 14, 30)), - new Date(2011, 8, 24, 4, 30)); -assertEquals((new Date(2011, 8, 24, 4, 30)).getTimezoneOffset(), - (new Date(2011, 8, 24, 3, 30)).getTimezoneOffset()); - -// 2011-12-30T00:00 : UTC-10 => UTC+14 -// A whole day(2011-12-30; 24 hours) is skipped, but the skipped -// time is to be interpreted with an offset before the transition. -assertEquals(new Date(Date.UTC(2011, 11, 30, 9, 59)), - new Date(2011, 11, 29, 23, 59)); -for (var h = 0; h < 24; ++h) { - assertEquals(new Date(Date.UTC(2011, 11, 30, h + 10)), - new Date(2011, 11, 30, h)); - assertEquals(new Date(Date.UTC(2011, 11, 30, h + 10, 30)), - new Date(2011, 11, 30, h, 30)); - assertEquals(new Date(Date.UTC(2011, 11, 30, h + 10)), - new Date(2011, 11, 31, h)); - assertEquals(new Date(Date.UTC(2011, 11, 30, h + 10, 30)), - new Date(2011, 11, 31, h, 30)); -} -assertEquals(new Date(Date.UTC(2011, 11, 31, 10)), - new Date(2012, 0, 1, 0)); - -// 2012-04-01T0400: UTC+14 => UTC+13 -assertEquals(new Date(Date.UTC(2012, 2, 31, 13)), - new Date(2012, 3, 1, 3)); -assertEquals(new Date(Date.UTC(2012, 2, 31, 13, 30)), - new Date(2012, 3, 1, 3, 30)); -assertEquals(new Date(Date.UTC(2012, 2, 31, 13, 59)), - new Date(2012, 3, 1, 3, 59)) -assertEquals(new Date(Date.UTC(2012, 2, 31, 15)), - new Date(2012, 3, 1, 4)) diff --git a/implementation-contributed/v8/mjsunit/tzoffset-transition-lord-howe.js b/implementation-contributed/v8/mjsunit/tzoffset-transition-lord-howe.js deleted file mode 100644 index 8ca6e872828..00000000000 --- a/implementation-contributed/v8/mjsunit/tzoffset-transition-lord-howe.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --icu-timezone-data -// Environment Variables: TZ=Australia/Lord_Howe - - -// 2017-04-02T02:00 : UTC+11 => UTC+1030 -assertEquals(new Date(Date.UTC(2017, 3, 1, 14, 29)), - new Date(2017, 3, 2, 1, 29)); -assertEquals(new Date(Date.UTC(2017, 3, 1, 14, 30)), - new Date(2017, 3, 2, 1, 30)); -assertEquals(new Date(Date.UTC(2017, 3, 1, 14, 45)), - new Date(2017, 3, 2, 1, 45)); -assertEquals(new Date(Date.UTC(2017, 3, 1, 14, 59)), - new Date(2017, 3, 2, 1, 59)); -assertEquals(new Date(Date.UTC(2017, 3, 1, 15, 30)), - new Date(2017, 3, 2, 2)); -assertEquals(new Date(Date.UTC(2017, 3, 1, 15, 31)), - new Date(2017, 3, 2, 2, 1)); - -// 2017-10-07T02:00 : UTC+1030 => UTC+11 -assertEquals(new Date(Date.UTC(2017, 8, 30, 15, 29)), - new Date(2017, 9, 1, 1, 59)) -assertEquals(new Date(Date.UTC(2017, 8, 30, 15, 30)), - new Date(2017, 9, 1, 2)); -assertEquals(new Date(Date.UTC(2017, 8, 30, 15, 45)), - new Date(2017, 9, 1, 2, 15)); -assertEquals(new Date(Date.UTC(2017, 8, 30, 15, 30)), - new Date(2017, 9, 1, 2, 30)); -assertEquals(new Date(Date.UTC(2017, 8, 30, 15, 45)), - new Date(2017, 9, 1, 2, 45)); -assertEquals((new Date(2017, 9, 1, 2, 45)).getTimezoneOffset(), - (new Date(2017, 9, 1, 2, 15)).getTimezoneOffset()); diff --git a/implementation-contributed/v8/mjsunit/tzoffset-transition-moscow.js b/implementation-contributed/v8/mjsunit/tzoffset-transition-moscow.js deleted file mode 100644 index c94f454f4e1..00000000000 --- a/implementation-contributed/v8/mjsunit/tzoffset-transition-moscow.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --icu-timezone-data -// Environment Variables: TZ=Europe/Moscow - -// https://www.timeanddate.com/time/zone/russia/moscow - -// 2010-03-28T02:00 : UTC+3 => UTC+4 -assertEquals(new Date(Date.UTC(2010, 2, 27, 22, 59)), - new Date(2010, 2, 28, 1, 59)); -assertEquals(new Date(Date.UTC(2010, 2, 27, 23)), - new Date(2010, 2, 28, 2)); -assertEquals(new Date(Date.UTC(2010, 2, 27, 23, 30)), - new Date(2010, 2, 28, 2, 30)); -assertEquals(new Date(Date.UTC(2010, 2, 27, 23)), - new Date(2010, 2, 28, 3)); -assertEquals(new Date(Date.UTC(2010, 2, 27, 23, 30)), - new Date(2010, 2, 28, 3, 30)); -assertEquals((new Date(2010, 2, 28, 3, 30)).getTimezoneOffset(), - (new Date(2010, 2, 28, 2, 30)).getTimezoneOffset()); - -// 2010-10-31T03:00 : UTC+4 => UTC+3 -assertEquals(new Date(Date.UTC(2010, 9, 30, 21, 59)), - new Date(2010, 9, 31, 1, 59)); -assertEquals(new Date(Date.UTC(2010, 9, 30, 22)), - new Date(2010, 9, 31, 2)); -assertEquals(new Date(Date.UTC(2010, 9, 30, 22, 30)), - new Date(2010, 9, 31, 2, 30)); -assertEquals(new Date(Date.UTC(2010, 9, 30, 22, 59)), - new Date(2010, 9, 31, 2, 59)) -assertEquals(new Date(Date.UTC(2010, 9, 31, 0)), - new Date(2010, 9, 31, 3)) -assertEquals(new Date(Date.UTC(2010, 9, 31, 0, 30)), - new Date(2010, 9, 31, 3, 30)) - -// 2011-03-27T02:00 : UTC+3 => UTC+4 -assertEquals(new Date(Date.UTC(2011, 2, 26, 22, 59)), - new Date(2011, 2, 27, 1, 59)) -assertEquals(new Date(Date.UTC(2011, 2, 26, 23)), - new Date(2011, 2, 27, 2)); -assertEquals(new Date(Date.UTC(2011, 2, 26, 23, 30)), - new Date(2011, 2, 27, 2, 30)); -assertEquals(new Date(Date.UTC(2011, 2, 26, 23)), - new Date(2011, 2, 27, 3)); -assertEquals(new Date(Date.UTC(2011, 2, 26, 23, 30)), - new Date(2011, 2, 27, 3, 30)); -assertEquals((new Date(2011, 2, 27, 3, 30)).getTimezoneOffset(), - (new Date(2011, 2, 27, 2, 30)).getTimezoneOffset()); - -// No daylight saving time in 2012, 2013: UTC+4 year-round -assertEquals(new Date(Date.UTC(2012, 5, 21, 0)), - new Date(2012, 5, 21, 4)) -assertEquals(new Date(Date.UTC(2012, 11, 21, 0)), - new Date(2012, 11, 21, 4)) -assertEquals(new Date(Date.UTC(2013, 5, 21, 0)), - new Date(2013, 5, 21, 4)) -assertEquals(new Date(Date.UTC(2013, 11, 21, 0)), - new Date(2013, 11, 21, 4)) - -// 2014-10-26T0200: UTC+4 => UTC+3 (year-round) -assertEquals(new Date(Date.UTC(2014, 9, 25, 20, 59)), - new Date(2014, 9, 26, 0, 59)); -assertEquals(new Date(Date.UTC(2014, 9, 25, 21)), - new Date(2014, 9, 26, 1)); -assertEquals(new Date(Date.UTC(2014, 9, 25, 21, 30)), - new Date(2014, 9, 26, 1, 30)); -assertEquals(new Date(Date.UTC(2014, 9, 25, 21, 59)), - new Date(2014, 9, 26, 1, 59)) -assertEquals(new Date(Date.UTC(2014, 9, 25, 23)), - new Date(2014, 9, 26, 2)) -assertEquals(new Date(Date.UTC(2014, 9, 25, 23, 1)), - new Date(2014, 9, 26, 2, 1)) - -assertEquals(new Date(Date.UTC(2014, 11, 21, 0)), - new Date(2014, 11, 21, 3)) -assertEquals(new Date(Date.UTC(2015, 5, 21, 0)), - new Date(2015, 5, 21, 3)) -assertEquals(new Date(Date.UTC(2015, 11, 21, 0)), - new Date(2015, 11, 21, 3)) -assertEquals(new Date(Date.UTC(2016, 5, 21, 0)), - new Date(2016, 5, 21, 3)) -assertEquals(new Date(Date.UTC(2015, 11, 21, 0)), - new Date(2015, 11, 21, 3)) diff --git a/implementation-contributed/v8/mjsunit/tzoffset-transition-new-york-noi18n.js b/implementation-contributed/v8/mjsunit/tzoffset-transition-new-york-noi18n.js deleted file mode 100644 index b4547ad76a0..00000000000 --- a/implementation-contributed/v8/mjsunit/tzoffset-transition-new-york-noi18n.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --no-icu-timezone-data -// Environment Variables: TZ=America/New_York - -// 2017-03-12T02:00 : UTC-5 => UTC-4 -assertEquals(new Date(Date.UTC(2017, 2, 12, 6, 59)), - new Date(2017, 2, 12, 1, 59)) -assertEquals(new Date(Date.UTC(2017, 2, 12, 7)), - new Date(2017, 2, 12, 2)); -assertEquals(new Date(Date.UTC(2017, 2, 12, 7, 30)), - new Date(2017, 2, 12, 2, 30)); -assertEquals(new Date(Date.UTC(2017, 2, 12, 7)), - new Date(2017, 2, 12, 3)); -assertEquals(new Date(Date.UTC(2017, 2, 12, 7, 30)), - new Date(2017, 2, 12, 3, 30)); -assertEquals((new Date(2017, 2, 12, 3, 30)).getTimezoneOffset(), - (new Date(2017, 2, 12, 2, 30)).getTimezoneOffset()); - -// 2017-11-05T02:00 : UTC-4 => UTC-5 -assertEquals(new Date(Date.UTC(2017, 10, 5, 4, 59)), - new Date(2017, 10, 5, 0, 59)); -assertEquals(new Date(Date.UTC(2017, 10, 5, 5)), - new Date(2017, 10, 5, 1)); -assertEquals(new Date(Date.UTC(2017, 10, 5, 5, 30)), - new Date(2017, 10, 5, 1, 30)); -assertEquals(new Date(Date.UTC(2017, 10, 5, 5, 59)), - new Date(2017, 10, 5, 1, 59)); -assertEquals(new Date(Date.UTC(2017, 10, 5, 7)), - new Date(2017, 10, 5, 2)) -assertEquals(new Date(Date.UTC(2017, 10, 5, 8)), - new Date(2017, 10, 5, 3)) diff --git a/implementation-contributed/v8/mjsunit/tzoffset-transition-new-york.js b/implementation-contributed/v8/mjsunit/tzoffset-transition-new-york.js deleted file mode 100644 index 1f84792325d..00000000000 --- a/implementation-contributed/v8/mjsunit/tzoffset-transition-new-york.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --icu-timezone-data -// Environment Variables: TZ=America/New_York - -// 2017-03-12T02:00 : UTC-5 => UTC-4 -assertEquals(new Date(Date.UTC(2017, 2, 12, 6, 59)), - new Date(2017, 2, 12, 1, 59)) -assertEquals(new Date(Date.UTC(2017, 2, 12, 7)), - new Date(2017, 2, 12, 2)); -assertEquals(new Date(Date.UTC(2017, 2, 12, 7, 30)), - new Date(2017, 2, 12, 2, 30)); -assertEquals(new Date(Date.UTC(2017, 2, 12, 7)), - new Date(2017, 2, 12, 3)); -assertEquals(new Date(Date.UTC(2017, 2, 12, 7, 30)), - new Date(2017, 2, 12, 3, 30)); -assertEquals((new Date(2017, 2, 12, 3, 30)).getTimezoneOffset(), - (new Date(2017, 2, 12, 2, 30)).getTimezoneOffset()); - -// 2017-11-05T02:00 : UTC-4 => UTC-5 -assertEquals(new Date(Date.UTC(2017, 10, 5, 4, 59)), - new Date(2017, 10, 5, 0, 59)); -assertEquals(new Date(Date.UTC(2017, 10, 5, 5)), - new Date(2017, 10, 5, 1)); -assertEquals(new Date(Date.UTC(2017, 10, 5, 5, 30)), - new Date(2017, 10, 5, 1, 30)); -assertEquals(new Date(Date.UTC(2017, 10, 5, 5, 59)), - new Date(2017, 10, 5, 1, 59)); -assertEquals(new Date(Date.UTC(2017, 10, 5, 7)), - new Date(2017, 10, 5, 2)) -assertEquals(new Date(Date.UTC(2017, 10, 5, 8)), - new Date(2017, 10, 5, 3)) diff --git a/implementation-contributed/v8/mjsunit/ubsan-fuzzerbugs.js b/implementation-contributed/v8/mjsunit/ubsan-fuzzerbugs.js deleted file mode 100644 index d2a21288abc..00000000000 --- a/implementation-contributed/v8/mjsunit/ubsan-fuzzerbugs.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2019 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// crbug.com/923466 -__v_5 = [ -1073741825, -2147483648]; -__v_5.sort(); - -// crbug.com/923642 -new RegExp("(abcd){2148473648,}", ""); - -// crbug.com/923626 -new Date(2146399200000).toString(); -new Date(2146940400000).toString(); -new Date(2147481600000).toString(); -new Date(2148022800000).toString(); - -// crbug.com/927212 -assertThrows(() => (2n).toString(-2147483657), RangeError); diff --git a/implementation-contributed/v8/mjsunit/unary-minus-deopt.js b/implementation-contributed/v8/mjsunit/unary-minus-deopt.js deleted file mode 100644 index 07f7e0e4974..00000000000 --- a/implementation-contributed/v8/mjsunit/unary-minus-deopt.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --allow-natives-syntax --opt --no-always-opt - -// This is a boiled-down example happening in the Epic Citadel demo: -// After deopting, the multiplication for unary minus stayed in Smi -// mode instead of going to double mode, leading to deopt loops. - -function unaryMinusTest(x) { - var g = (1 << x) | 0; - // Optimized code will contain a LMulI with -1 as right operand. - return (g & -g) - 1 | 0; -} - -unaryMinusTest(3); -unaryMinusTest(3); -%OptimizeFunctionOnNextCall(unaryMinusTest); -unaryMinusTest(3); -assertOptimized(unaryMinusTest); - -// Deopt on kMinInt -unaryMinusTest(31); -// The following is normally true, but not with --stress-opt. :-/ -// assertUnoptimized(unaryMinusTest); - -// We should have learned something from the deopt. -unaryMinusTest(31); -%OptimizeFunctionOnNextCall(unaryMinusTest); -unaryMinusTest(31); -assertOptimized(unaryMinusTest); diff --git a/implementation-contributed/v8/mjsunit/unbox-double-arrays.js b/implementation-contributed/v8/mjsunit/unbox-double-arrays.js deleted file mode 100644 index d6fc0938f9e..00000000000 --- a/implementation-contributed/v8/mjsunit/unbox-double-arrays.js +++ /dev/null @@ -1,540 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test dictionary -> double elements -> dictionary elements round trip - -// Flags: --allow-natives-syntax --unbox-double-arrays --expose-gc - -var large_array_size = 100000; -var approx_dict_to_elements_threshold = 70000; - -var name = 0; - -function expected_array_value(i) { - if ((i % 50) != 0) { - return i; - } else { - return i + 0.5; - } -} - -function force_to_fast_double_array(a) { - a[large_array_size - 2] = 1; - for (var i= 0; i < approx_dict_to_elements_threshold; ++i ) { - a[i] = expected_array_value(i); - } - assertTrue(%HasDoubleElements(a)); -} - - -function testOneArrayType(allocator) { - var large_array = new allocator(large_array_size); - force_to_fast_double_array(large_array); - var six = 6; - - for (var i= 0; i < approx_dict_to_elements_threshold; i += 501 ) { - assertEquals(expected_array_value(i), large_array[i]); - } - - // This function has a constant and won't get inlined. - function computed_6() { - return six; - } - - // Multiple versions of the test function makes sure that IC/Crankshaft state - // doesn't get reused. - function test_various_loads(a, value_5, value_6, value_7) { - assertTrue(%HasDoubleElements(a)); - assertEquals(value_5, a[5]); - assertEquals(value_6, a[6]); - assertEquals(value_6, a[computed_6()]); // Test non-constant key - assertEquals(value_7, a[7]); - assertEquals(large_array_size, a.length); - assertTrue(%HasDoubleElements(a)); - } - - function test_various_loads2(a, value_5, value_6, value_7) { - assertTrue(%HasDoubleElements(a)); - assertEquals(value_5, a[5]); - assertEquals(value_6, a[6]); - assertEquals(value_6, a[computed_6()]); // Test non-constant key - assertEquals(value_7, a[7]); - assertEquals(large_array_size, a.length); - assertTrue(%HasDoubleElements(a)); - } - - function test_various_loads3(a, value_5, value_6, value_7) { - assertTrue(%HasDoubleElements(a)); - assertEquals(value_5, a[5]); - assertEquals(value_6, a[6]); - assertEquals(value_6, a[computed_6()]); // Test non-constant key - assertEquals(value_7, a[7]); - assertEquals(large_array_size, a.length); - assertTrue(%HasDoubleElements(a)); - } - - function test_various_loads4(a, value_5, value_6, value_7) { - assertTrue(%HasDoubleElements(a)); - assertEquals(value_5, a[5]); - assertEquals(value_6, a[6]); - assertEquals(value_6, a[computed_6()]); // Test non-constant key - assertEquals(value_7, a[7]); - assertEquals(large_array_size, a.length); - assertTrue(%HasDoubleElements(a)); - } - - function test_various_loads5(a, value_5, value_6, value_7) { - assertTrue(%HasDoubleElements(a)); - if (value_5 != undefined) { - assertEquals(value_5, a[5]); - }; - if (value_6 != undefined) { - assertEquals(value_6, a[6]); - assertEquals(value_6, a[computed_6()]); // Test non-constant key - } - assertEquals(value_7, a[7]); - assertEquals(large_array_size, a.length); - assertTrue(%HasDoubleElements(a)); - } - - function test_various_loads6(a, value_5, value_6, value_7) { - assertTrue(%HasDoubleElements(a)); - assertEquals(value_5, a[5]); - assertEquals(value_6, a[6]); - assertEquals(value_6, a[computed_6()]); // Test non-constant key - assertEquals(value_7, a[7]); - assertEquals(large_array_size, a.length); - assertTrue(%HasDoubleElements(a)); - } - - function test_various_loads7(a, value_5, value_6, value_7) { - assertTrue(%HasDoubleElements(a)); - assertEquals(value_5, a[5]); - assertEquals(value_6, a[6]); - assertEquals(value_6, a[computed_6()]); // Test non-constant key - assertEquals(value_7, a[7]); - assertEquals(large_array_size, a.length); - assertTrue(%HasDoubleElements(a)); - } - - function test_various_stores(a, value_5, value_6, value_7) { - assertTrue(%HasDoubleElements(a)); - a[5] = value_5; - a[computed_6()] = value_6; - a[7] = value_7; - assertTrue(%HasDoubleElements(a)); - } - - // Test double and integer values - test_various_loads(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - test_various_loads(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - test_various_loads(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - %OptimizeFunctionOnNextCall(test_various_loads); - test_various_loads(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - - // Test NaN values - test_various_stores(large_array, NaN, -NaN, expected_array_value(7)); - - test_various_loads2(large_array, - NaN, - -NaN, - expected_array_value(7)); - test_various_loads2(large_array, - NaN, - -NaN, - expected_array_value(7)); - test_various_loads2(large_array, - NaN, - -NaN, - expected_array_value(7)); - %OptimizeFunctionOnNextCall(test_various_loads2); - test_various_loads2(large_array, - NaN, - -NaN, - expected_array_value(7)); - - // Test Infinity values - test_various_stores(large_array, - Infinity, - -Infinity, - expected_array_value(7)); - - test_various_loads3(large_array, - Infinity, - -Infinity, - expected_array_value(7)); - test_various_loads3(large_array, - Infinity, - -Infinity, - expected_array_value(7)); - test_various_loads3(large_array, - Infinity, - -Infinity, - expected_array_value(7)); - %OptimizeFunctionOnNextCall(test_various_loads3); - test_various_loads3(large_array, - Infinity, - -Infinity, - expected_array_value(7)); - - // Test the hole for the default runtime implementation. - delete large_array[5]; - delete large_array[6]; - test_various_loads4(large_array, - undefined, - undefined, - expected_array_value(7)); - - // Test the keyed load IC implementation when the value is the hole. - test_various_stores(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - test_various_loads5(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - test_various_loads5(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - delete large_array[5]; - delete large_array[6]; - test_various_loads5(large_array, - undefined, - undefined, - expected_array_value(7)); - test_various_loads5(large_array, - undefined, - undefined, - expected_array_value(7)); - - // Make sure Crankshaft code handles the hole correctly (bailout) - var large_array = new allocator(large_array_size); - force_to_fast_double_array(large_array); - test_various_stores(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - test_various_loads6(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - test_various_loads6(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - %OptimizeFunctionOnNextCall(test_various_loads6); - test_various_loads6(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - - delete large_array[5]; - delete large_array[6]; - test_various_loads6(large_array, - undefined, - undefined, - expected_array_value(7)); - - %DeoptimizeFunction(test_various_loads6); - %ClearFunctionFeedback(test_various_stores); - %ClearFunctionFeedback(test_various_loads7); - - // Test stores for non-NaN. - var large_array = new allocator(large_array_size); - force_to_fast_double_array(large_array); - %OptimizeFunctionOnNextCall(test_various_stores); - test_various_stores(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - - test_various_stores(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - - test_various_loads7(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - - test_various_loads7(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - - %OptimizeFunctionOnNextCall(test_various_loads7); - - test_various_loads7(large_array, - expected_array_value(5), - expected_array_value(6), - expected_array_value(7)); - - // Test NaN behavior for stores. - test_various_stores(large_array, - NaN, - -NaN, - expected_array_value(7)); - - test_various_stores(large_array, - NaN, - -NaN, - expected_array_value(7)); - - test_various_loads7(large_array, - NaN, - -NaN, - expected_array_value(7)); - - // Test Infinity behavior for stores. - test_various_stores(large_array, - Infinity, - -Infinity, - expected_array_value(7)); - - test_various_stores(large_array, - Infinity, - -Infinity, - expected_array_value(7)); - - test_various_loads7(large_array, - Infinity, - -Infinity, - expected_array_value(7)); - - // Make sure that we haven't converted from fast double. - assertTrue(%HasDoubleElements(large_array)); -} - -class ArraySubclass extends Array { - constructor(...args) { - super(...args); - this.marker = 42; - } -} - -// Force gc here to start with a clean heap if we repeat this test multiple -// times. -gc(); -testOneArrayType(Array); -testOneArrayType(ArraySubclass); - -var large_array = new Array(large_array_size); -force_to_fast_double_array(large_array); -assertTrue(%HasDoubleElements(large_array)); - -// Cause the array to grow beyond it's JSArray length. This will double the -// size of the capacity and force the array into "slow" dictionary case. -large_array[5] = Infinity; -large_array[large_array_size+10001] = 50; -assertTrue(%HasDictionaryElements(large_array)); -assertEquals(50, large_array[large_array_size+10001]); -assertEquals(large_array_size+10002, large_array.length); -assertEquals(Infinity, large_array[5]); -assertEquals(undefined, large_array[large_array_size-1]); -assertEquals(undefined, large_array[-1]); -assertEquals(large_array_size+10002, large_array.length); - -// Test dictionary -> double elements -> fast elements. -var large_array2 = new Array(large_array_size); -force_to_fast_double_array(large_array2); -delete large_array2[5]; - -// Convert back to fast elements and make sure the contents of the array are -// unchanged. -large_array2[25] = new Object(); -assertTrue(%HasObjectElements(large_array2)); -for (var i= 0; i < approx_dict_to_elements_threshold; i += 500 ) { - if (i != 25 && i != 5) { - assertEquals(expected_array_value(i), large_array2[i]); - } -} -assertEquals(undefined, large_array2[5]); -assertEquals(undefined, large_array2[large_array_size-1]); -assertEquals(undefined, large_array2[-1]); -assertEquals(large_array_size, large_array2.length); - -// Make sure it's possible to change the array's length and that array is still -// intact after the resize. -var large_array3 = new Array(large_array_size); -force_to_fast_double_array(large_array3); -large_array3.length = 60000; -assertEquals(60000, large_array3.length); -assertEquals(undefined, large_array3[60000]); -assertTrue(%HasDoubleElements(large_array3)); -assertEquals(expected_array_value(5), large_array3[5]); -assertEquals(expected_array_value(6), large_array3[6]); -assertEquals(expected_array_value(7), large_array3[7]); -assertEquals(expected_array_value(large_array3.length-1), - large_array3[large_array3.length-1]); -assertEquals(undefined, large_array3[large_array_size-1]); -assertEquals(undefined, large_array3[-1]); -gc(); - -for (var i= 0; i < large_array3.length; i += 501 ) { - assertEquals(expected_array_value(i), large_array3[i]); -} - -large_array3.length = 25; -assertEquals(25, large_array3.length); -assertTrue(%HasDoubleElements(large_array3)); -assertEquals(undefined, large_array3[25]); -assertEquals(expected_array_value(5), large_array3[5]); -assertEquals(expected_array_value(6), large_array3[6]); -assertEquals(expected_array_value(7), large_array3[7]); -assertEquals(expected_array_value(large_array3.length-1), - large_array3[large_array3.length-1]); -assertEquals(undefined, large_array3[large_array_size-1]); -assertEquals(undefined, large_array3[-1]); -gc(); - -for (var i= 0; i < large_array3.length; ++i) { - assertEquals(expected_array_value(i), large_array3[i]); -} - -large_array3.length = 100; -assertEquals(100, large_array3.length); -large_array3[95] = 95; -assertTrue(%HasDoubleElements(large_array3)); -assertEquals(undefined, large_array3[100]); -assertEquals(95, large_array3[95]); -assertEquals(expected_array_value(5), large_array3[5]); -assertEquals(expected_array_value(6), large_array3[6]); -assertEquals(expected_array_value(7), large_array3[7]); -assertEquals(undefined, large_array3[large_array3.length-1]); -assertEquals(undefined, large_array3[large_array_size-1]); -assertEquals(undefined, large_array3[-1]); -gc(); - -// Test apply on arrays backed by double elements. -function called_by_apply(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { - assertEquals(expected_array_value(0), arg0); - assertEquals(NaN, arg1); - assertEquals(-NaN, arg2); - assertEquals(Infinity, arg3); - assertEquals(-Infinity, arg4); - assertEquals(expected_array_value(5), arg5); -} - -large_array3[1] = NaN; -large_array3[2] = -NaN; -large_array3[3] = Infinity; -large_array3[4] = -Infinity; - -function call_apply() { - called_by_apply.apply({}, large_array3); -} - -call_apply(); -call_apply(); -call_apply(); -%OptimizeFunctionOnNextCall(call_apply); -call_apply(); -call_apply(); -call_apply(); - -function test_for_in() { - // Due to previous tests, keys 0..25 and 95 should be present. - next_expected = 0; - for (x in large_array3) { - assertTrue(next_expected++ == x); - if (next_expected == 25) { - next_expected = 95; - } - } - assertTrue(next_expected == 96); -} - -test_for_in(); -test_for_in(); -test_for_in(); -%OptimizeFunctionOnNextCall(test_for_in); -test_for_in(); -test_for_in(); -test_for_in(); - -// Test elements getters. -assertEquals(expected_array_value(10), large_array3[10]); -assertEquals(expected_array_value(-NaN), large_array3[2]); -large_array3.__defineGetter__("2", function(){ - return expected_array_value(10); -}); - -function test_getter() { - assertEquals(expected_array_value(10), large_array3[10]); - assertEquals(expected_array_value(10), large_array3[2]); -} - -test_getter(); -test_getter(); -test_getter(); -%OptimizeFunctionOnNextCall(test_getter); -test_getter(); -test_getter(); -test_getter(); - -// Test element setters. -large_array4 = new Array(large_array_size); -force_to_fast_double_array(large_array4); - -var setter_called = false; - -assertEquals(expected_array_value(10), large_array4[10]); -assertEquals(expected_array_value(2), large_array4[2]); -large_array4.__defineSetter__("10", function(value){ - setter_called = true; - }); - -function test_setter() { - setter_called = false; - large_array4[10] = 119; - assertTrue(setter_called); - assertEquals(undefined, large_array4[10]); - assertEquals(expected_array_value(2), large_array4[2]); -} - -test_setter(); -test_setter(); -test_setter(); -%OptimizeFunctionOnNextCall(test_setter); -test_setter(); -test_setter(); -test_setter(); diff --git a/implementation-contributed/v8/mjsunit/unbox-double-field-indexed.js b/implementation-contributed/v8/mjsunit/unbox-double-field-indexed.js deleted file mode 100644 index 29dfc79205a..00000000000 --- a/implementation-contributed/v8/mjsunit/unbox-double-field-indexed.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Foo(x) { - this.x = x; -} - -var f = new Foo(1.25); -var g = new Foo(2.25); - -function add(a, b) { - var name = "x"; - return a[name] + b[name]; -} - -assertEquals(3.5, add(f, g)); -assertEquals(3.5, add(g, f)); -%OptimizeFunctionOnNextCall(add); -assertEquals(3.5, add(f, g)); -assertEquals(3.5, add(g, f)); diff --git a/implementation-contributed/v8/mjsunit/unbox-double-field.js b/implementation-contributed/v8/mjsunit/unbox-double-field.js deleted file mode 100644 index 9fb5479be76..00000000000 --- a/implementation-contributed/v8/mjsunit/unbox-double-field.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Foo(x) { - this.x = x; -} - -var f = new Foo(1.25); -var g = new Foo(2.25); - -function add(a, b) { - return a.x + b.x; -} - -assertEquals(3.5, add(f, g)); -assertEquals(3.5, add(g, f)); -%OptimizeFunctionOnNextCall(add); -assertEquals(3.5, add(f, g)); -assertEquals(3.5, add(g, f)); diff --git a/implementation-contributed/v8/mjsunit/unbox-smi-field-indexed.js b/implementation-contributed/v8/mjsunit/unbox-smi-field-indexed.js deleted file mode 100644 index 9e77da03ed6..00000000000 --- a/implementation-contributed/v8/mjsunit/unbox-smi-field-indexed.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Foo(x) { - this.x = x; -} - -var f = new Foo(1); -var g = new Foo(2); - -function add(a, b) { - var name = "x"; - return a[name] + b[name]; -} - -assertEquals(3, add(f, g)); -assertEquals(3, add(g, f)); -%OptimizeFunctionOnNextCall(add); -assertEquals(3, add(f, g)); -assertEquals(3, add(g, f)); diff --git a/implementation-contributed/v8/mjsunit/unbox-smi-field.js b/implementation-contributed/v8/mjsunit/unbox-smi-field.js deleted file mode 100644 index 361911800b2..00000000000 --- a/implementation-contributed/v8/mjsunit/unbox-smi-field.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -function Foo(x) { - this.x = x; -} - -var f = new Foo(1); -var g = new Foo(2); - -function add(a, b) { - return a.x + b.x; -} - -assertEquals(3, add(f, g)); -assertEquals(3, add(g, f)); -%OptimizeFunctionOnNextCall(add); -assertEquals(3, add(f, g)); -assertEquals(3, add(g, f)); diff --git a/implementation-contributed/v8/mjsunit/undeletable-functions.js b/implementation-contributed/v8/mjsunit/undeletable-functions.js deleted file mode 100644 index 635ea6fa9ac..00000000000 --- a/implementation-contributed/v8/mjsunit/undeletable-functions.js +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we match ECMAScript in making most builtin functions -// deletable and only specific ones undeletable or read-only. - -var array; - -array = [ - "toString", "toLocaleString", "join", "pop", "push", "concat", "reverse", - "shift", "unshift", "slice", "splice", "sort", "filter", "forEach", "some", - "every", "map", "indexOf", "lastIndexOf", "reduce", "reduceRight"]; -CheckEcmaSemantics(Array.prototype, array, "Array prototype"); - -var old_Array_prototype = Array.prototype; -var new_Array_prototype = {}; -for (var i = 0; i < 7; i++) { - Array.prototype = new_Array_prototype; - assertEquals(old_Array_prototype, Array.prototype); -} - -array = [ - "toString", "toDateString", "toTimeString", "toLocaleString", - "toLocaleDateString", "toLocaleTimeString", "valueOf", "getTime", - "getFullYear", "getUTCFullYear", "getMonth", "getUTCMonth", "getDate", - "getUTCDate", "getDay", "getUTCDay", "getHours", "getUTCHours", "getMinutes", - "getUTCMinutes", "getSeconds", "getUTCSeconds", "getMilliseconds", - "getUTCMilliseconds", "getTimezoneOffset", "setTime", "setMilliseconds", - "setUTCMilliseconds", "setSeconds", "setUTCSeconds", "setMinutes", - "setUTCMinutes", "setHours", "setUTCHours", "setDate", "setUTCDate", - "setMonth", "setUTCMonth", "setFullYear", "setUTCFullYear", "toGMTString", - "toUTCString", "getYear", "setYear", "toISOString", "toJSON"]; -CheckEcmaSemantics(Date.prototype, array, "Date prototype"); - -array = [ - "random", "abs", "acos", "asin", "atan", "ceil", "cos", "exp", "floor", "log", - "round", "sin", "sqrt", "tan", "atan2", "pow", "max", "min"]; -CheckEcmaSemantics(Math, array, "Math1"); - -CheckEcmaSemantics(Date, ["UTC", "parse", "now"], "Date"); - -array = [ - "E", "LN10", "LN2", "LOG2E", "LOG10E", "PI", "SQRT1_2", "SQRT2"]; -CheckDontDelete(Math, array, "Math2"); - -array = [ - "escape", "unescape", "decodeURI", "decodeURIComponent", "encodeURI", - "encodeURIComponent", "isNaN", "isFinite", "parseInt", "parseFloat", "eval", - "execScript"]; -CheckEcmaSemantics(this, array, "Global"); -CheckReadOnlyAttr(this, "Infinity"); -CheckReadOnlyAttr(this, "NaN"); -CheckReadOnlyAttr(this, "undefined"); - -array = ["exec", "test", "toString", "compile"]; -CheckEcmaSemantics(RegExp.prototype, array, "RegExp prototype"); - -array = [ - "toString", "toLocaleString", "valueOf", "hasOwnProperty", - "isPrototypeOf", "propertyIsEnumerable", "__defineGetter__", - "__lookupGetter__", "__defineSetter__", "__lookupSetter__"]; -CheckEcmaSemantics(Object.prototype, array, "Object prototype"); - -var old_Object_prototype = Object.prototype; -var new_Object_prototype = {}; -for (var i = 0; i < 7; i++) { - Object.prototype = new_Object_prototype; - assertEquals(old_Object_prototype, Object.prototype); -} - -array = [ - "toString", "valueOf", "toJSON"]; -CheckEcmaSemantics(Boolean.prototype, array, "Boolean prototype"); - -array = [ - "toString", "toLocaleString", "valueOf", "toFixed", "toExponential", - "toPrecision", "toJSON"]; -CheckEcmaSemantics(Number.prototype, array, "Number prototype"); - -CheckEcmaSemantics(Function.prototype, ["toString"], "Function prototype"); -CheckEcmaSemantics(Date.prototype, ["constructor"], "Date prototype constructor"); - -array = [ - "charAt", "charCodeAt", "concat", "indexOf", - "lastIndexOf", "localeCompare", "match", "replace", "search", "slice", - "split", "substring", "substr", "toLowerCase", "toLocaleLowerCase", - "toUpperCase", "toLocaleUpperCase", "link", "anchor", "fontcolor", "fontsize", - "big", "blink", "bold", "fixed", "italics", "small", "strike", "sub", "sup", - "toJSON", "toString", "valueOf"]; -CheckEcmaSemantics(String.prototype, array, "String prototype"); -CheckEcmaSemantics(String, ["fromCharCode"], "String"); - - -function CheckEcmaSemantics(type, props, name) { - print(name); - for (var i = 0; i < props.length; i++) { - CheckDeletable(type, props[i]); - } -} - - -function CheckDontDelete(type, props, name) { - print(name); - for (var i = 0; i < props.length; i++) { - CheckDontDeleteAttr(type, props[i]); - } -} - - -function CheckDeletable(type, prop) { - var old = type[prop]; - var hasOwnProperty = Object.prototype.hasOwnProperty; - if (!type[prop]) return; - assertTrue(type.hasOwnProperty(prop), "inherited: " + prop); - var deleted = delete type[prop]; - assertTrue(deleted, "delete operator returned false: " + prop); - assertFalse(hasOwnProperty.call(type, prop), "still there after delete: " + prop); - type[prop] = "foo"; - assertEquals("foo", type[prop], "not overwritable: " + prop); - type[prop] = old; -} - - -function CheckDontDeleteAttr(type, prop) { - var old = type[prop]; - if (!type[prop]) return; - assertTrue(type.hasOwnProperty(prop), "inherited: " + prop); - var deleted = delete type[prop]; - assertFalse(deleted, "delete operator returned true: " + prop); - assertTrue(type.hasOwnProperty(prop), "not there after delete: " + prop); - type[prop] = "foo"; - assertFalse("foo" == type[prop], "overwritable: " + prop); -} - - -function CheckReadOnlyAttr(type, prop) { - var old = type[prop]; - if (!type[prop]) return; - assertTrue(type.hasOwnProperty(prop), "inherited: " + prop); - var deleted = delete type[prop]; - assertFalse(deleted, "delete operator returned true: " + prop); - assertTrue(type.hasOwnProperty(prop), "not there after delete: " + prop); - type[prop] = "foo"; - assertEquals(old, type[prop], "overwritable: " + prop); -} - -print("OK"); diff --git a/implementation-contributed/v8/mjsunit/undetectable-compare.js b/implementation-contributed/v8/mjsunit/undetectable-compare.js deleted file mode 100644 index c78593439c6..00000000000 --- a/implementation-contributed/v8/mjsunit/undetectable-compare.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var undetectable = %GetUndetectable(); - -var tests = [ - true, false, - false, false, - null, true, - void 0, true, - 0, false, - 0.0, false, - -0, false, - "", false, - -1, false, - -1.25, false, - 1, false, - 1.25, false, - -2147483648, false, - 2147483648, false, - Infinity, false, - -Infinity, false, - NaN, false -]; - -var func = (function eq(a) { return a == undetectable; }); -var left_funcs = [ - (function eq_L0() { return true == undetectable; }), - (function eq_L1() { return false == undetectable; }), - (function eq_L2() { return null == undetectable; }), - (function eq_L3() { return void 0 == undetectable; }), - (function eq_L4() { return 0 == undetectable; }), - (function eq_L5() { return 0.0 == undetectable; }), - (function eq_L6() { return -0 == undetectable; }), - (function eq_L7() { return "" == undetectable; }), - (function eq_L8() { return -1 == undetectable; }), - (function eq_L9() { return -1.25 == undetectable; }), - (function eq_L10() { return 1 == undetectable; }), - (function eq_L11() { return 1.25 == undetectable; }), - (function eq_L12() { return -2147483648 == undetectable; }), - (function eq_L13() { return 2147483648 == undetectable; }), - (function eq_L14() { return Infinity == undetectable; }), - (function eq_L15() { return -Infinity == undetectable; }), - (function eq_L16() { return NaN == undetectable; }) -]; - -var right_funcs = [ - (function eq_R0() { return undetectable == true; }), - (function eq_R1() { return undetectable == false; }), - (function eq_R2() { return undetectable == null; }), - (function eq_R3() { return undetectable == void 0; }), - (function eq_R4() { return undetectable == 0; }), - (function eq_R5() { return undetectable == 0.0; }), - (function eq_R6() { return undetectable == -0; }), - (function eq_R7() { return undetectable == ""; }), - (function eq_R8() { return undetectable == -1; }), - (function eq_R9() { return undetectable == -1.25; }), - (function eq_R10() { return undetectable == 1; }), - (function eq_R11() { return undetectable == 1.25; }), - (function eq_R12() { return undetectable == -2147483648; }), - (function eq_R13() { return undetectable == 2147483648; }), - (function eq_R14() { return undetectable == Infinity; }), - (function eq_R15() { return undetectable == -Infinity; }), - (function eq_R16() { return undetectable == NaN; }) -]; - -function test() { - for (var i = 0; i < tests.length; i += 2) { - var val = tests[i]; - var eq = tests[i + 1]; - - assertEquals(eq, val == undetectable); - assertEquals(eq, undetectable == val); - - assertFalse(val === undetectable); - assertFalse(undetectable === val); - - assertEquals(eq, left_funcs[i/2]()); - assertEquals(eq, right_funcs[i/2]()); - } - - assertTrue(undetectable == undetectable); - assertTrue(undetectable === undetectable); - -} - -for (var i = 0; i < 5; i++) { - test(); -} - - -assertFalse(undetectable == %GetUndetectable()); -assertFalse(undetectable === %GetUndetectable()); - - -function test2(a, b) { - return a == b; -} -test2(0, 1); -test2(undetectable, {}); -%OptimizeFunctionOnNextCall(test2); -for (var i = 0; i < 5; ++i) { - assertFalse(test2(undetectable, %GetUndetectable())); -} diff --git a/implementation-contributed/v8/mjsunit/undetectable.js b/implementation-contributed/v8/mjsunit/undetectable.js deleted file mode 100644 index 69a370a00aa..00000000000 --- a/implementation-contributed/v8/mjsunit/undetectable.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax - -var obj = %GetUndetectable(); - -function shouldNotBeTaken() { - fail("Undetectable branch should not be taken", "branch was taken"); -} - -function shouldBeTaken() { - fail("Inverted Undetectable branch should be taken", "branch was not taken"); -} - -function testCompares() { - assertTrue(!obj); - assertFalse(!!obj); - assertFalse(obj == true); - assertFalse(obj == false); - assertFalse(obj === true); - assertFalse(obj === false); - assertEquals(2, obj ? 1 : 2); - assertEquals(obj, true && obj); - assertEquals(obj, false || obj); -} - -function testIfs() { - if (obj) { - shouldNotBeTaken(); - } - - if (obj) { - shouldNotBeTaken(); - } else { - // do nothing - } - - if (!obj) { - // do nothing - } else { - shouldBeTaken(); - } -} - -function testWhiles() { - while (obj) { - shouldNotBeTaken(); - } - - var i = 0; - while (!obj) { - i++; - break; - } - - assertEquals(1, i); -} - -function testFors() { - for (var i = 0; obj; i++) { - shouldNotBeTaken(); - } - - var j = 0; - for (var i = 0; !obj; i++) { - j++; - break; - } - - assertEquals(1, j); -} - -function testCall() { - obj(); -} - -for (var j = 0; j < 5; j++) { - testCompares(); - testIfs(); - testWhiles(); - testFors(); - testCall(); - - if (j == 3) { - %OptimizeFunctionOnNextCall(testCompares); - %OptimizeFunctionOnNextCall(testIfs); - %OptimizeFunctionOnNextCall(testWhiles); - %OptimizeFunctionOnNextCall(testFors); - %OptimizeFunctionOnNextCall(testCall); - } -} diff --git a/implementation-contributed/v8/mjsunit/unicode-case-overoptimization.js b/implementation-contributed/v8/mjsunit/unicode-case-overoptimization.js deleted file mode 100644 index bfda48c77c1..00000000000 --- a/implementation-contributed/v8/mjsunit/unicode-case-overoptimization.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test all non-ASCII characters individually to ensure that our optimizations -// didn't break anything. -for (var i = 0x80; i <= 0xfffe; i++) { - var c = String.fromCharCode(i); - var c2 = String.fromCharCode(i + 1); - var re = new RegExp("[" + c + "-" + c2 + "]", "i"); - assertTrue(re.test(c), i); -} diff --git a/implementation-contributed/v8/mjsunit/unicode-string-to-number.js b/implementation-contributed/v8/mjsunit/unicode-string-to-number.js deleted file mode 100644 index 2376a60cacf..00000000000 --- a/implementation-contributed/v8/mjsunit/unicode-string-to-number.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Make sure not to treat 16-bit unicode characters as ASCII -// characters when converting to numbers. -assertEquals(272, Number('2\u00372')); -assertTrue(isNaN(Number('2\u11372')), "short-string"); - -// Check that long string can convert to proper numbers. -var s = '\u0031'; -for (var i = 0; i < 7; i++) { - s += s; -} -assertTrue(isFinite(Number(s))); - -// Check that long strings with non-ASCII characters cannot convert. -var s = '\u1131'; -for (var i = 0; i < 7; i++) { - s += s; -} -assertTrue(isNaN(Number(s)), "long-string"); diff --git a/implementation-contributed/v8/mjsunit/unicode-test.js b/implementation-contributed/v8/mjsunit/unicode-test.js deleted file mode 100644 index 509eb895668..00000000000 --- a/implementation-contributed/v8/mjsunit/unicode-test.js +++ /dev/null @@ -1,9167 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Texts are from the Unibrow test suite. - -// Note that this file is in UTF-8. smjs and testkjs do not read their -// source files as UTF-8, so they will fail on this test. If you want -// to run the test on them you can do so after filtering it with the -// following piece of perl-based line noise: - -// perl -CIO -ne '$_ =~ s/([^\n -~])/"\\u" . sprintf("%04x", ord($1))/ge; print $_;' < unicode-test.js > unicode-test-ascii.js - -// The result is predictably illegible even for those fluent in Hindi. - -var chinese = -"中国历史\n" + -"[编辑首段]维基百科,自由的百科全书\n" + -"跳转到: 导航, 搜索\n" + -"中國歷史\n" + -"中国历史系列条目\n" + -"史前时期\n" + -"传说时期\n" + -"(另见三皇五帝)\n" + -"夏\n" + -"商\n" + -"西周 周\n" + -"春秋 东周\n" + -"战国\n" + -"秦\n" + -"西汉 汉\n" + -"新朝\n" + -"东汉\n" + -"魏 蜀 吴 三\n" + -"国\n" + -"西晋 晋\n" + -"东晋 十六国\n" + -"宋 南\n" + -"朝 北魏 北\n" + -"朝 南\n" + -"北\n" + -"朝\n" + -"齐\n" + -"梁 东\n" + -"魏 西\n" + -"魏\n" + -"陈 北\n" + -"齐 北\n" + -"周\n" + -"隋\n" + -"唐\n" + -"(另见武周)\n" + -"五代十国\n" + -"辽\n" + -"(西辽) 西\n" + -"夏 北宋 宋\n" + -"金 南宋\n" + -"元\n" + -"明\n" + -"清\n" + -"中华民国\n" + -"中华人民\n" + -"共和国 中华\n" + -"民国\n" + -"(见台湾问题)\n" + -"\n" + -" * 中国历史年表\n" + -" * 中国军事史\n" + -" * 中国美术史\n" + -" * 中国科学技术史\n" + -" * 中国教育史\n" + -"\n" + -"中国\n" + -"天坛\n" + -"文化\n" + -"中文 - 文学 - 哲学 - 教育\n" + -"艺术 - 国画 - 戏曲 - 音乐\n" + -"神话 - 宗教 - 术数 - 建筑\n" + -"文物 - 电影 - 服饰 - 饮食\n" + -"武术 - 书法 - 节日 - 姓名\n" + -"地理\n" + -"疆域 - 行政区划 - 城市\n" + -"地图 - 旅游 - 环境 - 生物\n" + -"人口 - 民族 - 交通 - 时区\n" + -"历史\n" + -"年表 - 传说时代 - 朝代\n" + -"民国史 - 共和国史\n" + -"文化史 - 科技史 - 教育史\n" + -"人口史 - 经济史 - 政治史\n" + -"政治\n" + -"中华人民共和国政治 - 中华民国政治\n" + -"宪法 - 外交 - 军事 - 国旗\n" + -"两岸问题 - 两岸关系\n" + -"一个中国 - 中国统一\n" + -"经济\n" + -"金融 - 农业 - 工业 - 商业\n" + -"中国各省经济 - 五年计划\n" + -"其他\n" + -"列表 - 体育 - 人权 - 媒体\n" + -"\n" + -"中国历史自商朝起算约有3600年,自黄帝时代起算约有4000多年。有历史学者认为,在人类文明史中,“历史时代”的定义是指从有文字发明时起算,那之前则称为“史前”;中国历史中传说伏羲做八卦,黄帝时代仓颉造文字;近代考古发现了3600多年前(公元前1600年)商朝的甲骨文、约4000年前至7000年前的陶文、约7000年前至10000年前具有文字性貭的龟骨契刻符号。另外,目前在中国发现最早的史前人类遗址距今约200万年。\n" + -"\n" + -"从政治形态区分中国历史,可见夏朝以前长达3000年以上的三皇五帝是母系氏族社会到父系氏族社会的过渡时代,而夏朝开始君王世袭,周朝建立完备的封建制度至东周逐渐解构,秦朝首度一统各国政治和许多民间分歧的文字和丈量制度,并建立中央集权政治,汉朝起则以文官主治国家直至清朝,清末以降,民主政治、马克思主义等各种政治思潮流传,先促成中华民国的建立,并于其后四、五十年再出现中华人民共和国,而由于内战失败,中华民国政府退守台湾。\n" + -"\n" + -"由经济形态观察,中国古代人口主要由自由民构成,私有制、商业活动发达。周朝时商业主要由封建领主阶层控制的官商贸易和庶民的自由贸易构成。秦汉以后实行中央集权,人口由士、农、工、商等构成,其中以从事农业的自由民为主体,是一个君权官僚制下的以土地为主要生产资本的较为自由的商业经济社会,一些重要的行业由官商垄断。除了农业,手工业以及商业贸易也有很大的发展。早在汉朝丝路的开通,促进了东亚与中亚至欧洲的陆上交通时,国际贸易早已起步;隋唐时大运河的开通促进了南北贸易;唐朝的盛世及外交的开放、交通的建设,更使各国文化、物资得以交流;宋代时出现了纸币;元代时与中亚的商业交流十分繁荣;明清两代受到西方国家海上发展的影响,海上国际贸易发展迅猛。自中华民国成立起试图建立民主国家,实行自由经济,直到1990年代台湾落实民主制度,1950年代以后30多年迅速实现了向工业化社会的转型;而中国大陆则在1949年后采用一党制统治,起先为公有制的计划经济社会,改革开放后逐步向私有制的市场经济社会転型,同时,1980年代以来工业化发展迅猛,数亿人口在短短20多年内从农民转为产业工人(目前仅仅被称为“农民工”的产业工人就达到约2亿)。伴随经济的迅速国际化,中国经济成为全球经济中越来越重要的组成部分。\n" + -"目录\n" + -"[隐藏]\n" + -"\n" + -" * 1 史前时代\n" + -" * 2 传说时代\n" + -" * 3 先秦时期\n" + -" o 3.1 三代\n" + -" o 3.2 春秋战国\n" + -" * 4 秦汉时期\n" + -" * 5 魏晋南北朝时期\n" + -" * 6 隋唐五代时期\n" + -" * 7 宋元时期\n" + -" * 8 明清时期\n" + -" o 8.1 清末的内忧外患\n" + -" * 9 20世纪至今\n" + -" * 10 参见\n" + -" * 11 其他特定主题中国史\n" + -" * 12 注解\n" + -" * 13 参考文献\n" + -" * 14 相关著作\n" + -" * 15 外部链接\n" + -"\n" + -"[编辑] 史前时代\n" + -"大汶口文化的陶鬹,山東莒县大朱村出土\n" + -"大汶口文化的陶鬹,山东莒县大朱村出土\n" + -"\n" + -"迄今为止发现的最早的高等灵长类中华曙猿在4500万年前生活在中国江南一带。考古证据显示224万年至25万年前,中国就有直立人居住,目前考古发现的有巫山人、元谋人、蓝田人、南京直立人、北京直立人等。这些都是目前所知较早的原始人类踪迹。\n" + -"\n" + -"中国史前时代的各种文化是经过了以下几个阶段:以直立猿\n" + -"人为主的旧石器时代早中期(距今约50至40多万年前),接着进入了旧石器时代中晚期,以山顶洞人为代表,距今约在20至10余万年前。新石器时代早期的代表性文化是裴李岗文化,紧接着是以仰韶文化为代表的新石器时代中期。而以龙山文化为代表的新石器时代晚期,大约出现在公元前2500年到公元前1300年间。\n" + -"\n" + -"根据现在的考古学研究,中国的新石器时代呈现多元并立的情形:约西元前5000年到3000年前在河南省、河北省南部、甘肃省南部和山西省南部出现的仰韶文化便具备使用红陶、彩陶以及食用粟和畜养家畜的特质。而大约在同一时间,尚有在浙江省北边出现的河姆渡文化、山东省的大汶口文化。而之后发现的如二里头遗址和三星堆遗址则为青铜器时代的代表。\n" + -"\n" + -"[编辑] 传说时代\n" + -"\n" + -" 主条目:三皇五帝\n" + -"\n" + -"後人所繪的黄帝像\n" + -"后人所绘的黄帝像\n" + -"\n" + -"华夏文明形成于黄河流域中原地区。早期的历史,口口相传。神话中有盘古开天地、女娲造人的说法。传说中的三皇五帝,是夏朝以前数千年杰出首领的代表,具体而言有不同的说法。一般认为,三皇是燧人、伏羲、神农以及女娲、祝融中的三人,五帝一般指黄帝、颛顼、帝喾、尧、舜。自三皇至五帝,历年无确数,最少当不下数千年。\n" + -"\n" + -"据现今整理出来的传说,黄帝原系炎帝部落的一个分支的首领,强大之后在阪泉之战中击败炎帝,成为新部落联盟首领,之后又与东南方的蚩尤部落发生冲突,在涿鹿之战中彻底击败对手,树立了自己的霸主地位。\n" + -"\n" + -"后来黄帝的孙子颛顼和玄孙帝喾继续担任部落联盟的首领。帝喾的儿子尧继位,他是一名贤君,创立了禅让制,传位给了舜。在舜时期,洪水泛滥,鲧采用堵塞的方法,结果洪水更厉害了,鲧被处决,他的儿子禹采用疏导的方法,成功治理了洪水,因此被推举为首领。然而他的儿子启破坏了禅让制方式,自立为王(但据《史记》及香港中学课本所述,启是被推举为领袖),建立了第一个世袭王朝——夏朝,夏朝持续了400多年,在最后一个夏朝君主——桀末期,东方诸侯国商首领成汤夺取了政权,建立了商朝。\n" + -"\n" + -"[编辑] 先秦时期\n" + -"\n" + -"[编辑] 三代\n" + -"\n" + -" 主条目:夏朝、商朝、周朝和西周\n" + -"\n" + -"甲骨文\n" + -"甲骨文\n" + -"\n" + -"最早的世袭朝代夏朝约在前21世纪到前16世纪,由于这段历史目前没有发现文字性文物做印证,所以只能靠后世的记录和出土文物互相对照考证,中国学者一般认为河南洛阳二里头遗址是夏朝首都遗址,有学者对此持有疑问。根据文字记载,夏朝有了中国最早的历法--夏小正。不过之后的商朝是目前所发现的最早有文字文物的历史时期,存在于前16世纪到约前1046年。据说夏朝最后一个君主——桀,由于荒淫无道而被汤推翻。而商代时文明已经十分发达,有历法、青铜器以及成熟的文字——甲骨文等。商王朝时已经有一个完整的国家组织,并且具有了封建王朝的规模。当时的主要生产部门是农业,不过手工业,特别是青铜器的冶铸水平也已经十分高超。并且已经出现了原始的瓷器。商朝自盘庚之后,定都于殷(今河南安阳),因此也称为殷朝。商朝的王位继承制度是传子或传弟,多按年龄的长幼继承。\n" + -"\n" + -"与此同时,黄河上游的另一个部落周正在逐步兴起,到了大约前1046年,周武王伐纣,在牧野之战中取得决定性胜利,商朝灭亡。周朝正式建立,建都渭河流域的镐京(今陕西西安附近)。之后周朝的势力又慢慢渗透到黄河下游和淮河一带。周王朝依然是封建贵族统治,有许多贵族的封国(诸侯)。到鼎盛时,周朝的影响力已经在南方跨过长江,东北到今天的辽宁,西至甘肃,东到山东。周朝时的宗法制度已经建立,政权机构也较完善。自唐尧、虞舜至周朝皆封建时代,帝王与诸侯分而治之[1]。中国最早有确切时间的历史事件是发生于公元前841年西周的国人暴动。\n" + -"\n" + -"[编辑] 春秋战国\n" + -"\n" + -" 主条目:周朝、东周、春秋时期和战国 (中国)\n" + -"\n" + -"先師孔子行教像,為唐朝画家吳道子所画\n" + -"先师孔子行教像,为唐朝画家吴道子所画\n" + -"\n" + -"前770年,由于遭到北方游牧部落犬戎的侵袭,周平王东迁黄河中游的洛邑(今河南洛阳),东周开始。此后,周王朝的影响力逐渐减弱,取而代之的是大大小小一百多个小国(诸侯国和附属国),史称春秋时期。春秋时期的大国共有十几个,其中包括了晋、秦、郑、齐及楚等。这一时期社会动荡,战争不断,先后有五个国家称霸,即齐、宋、晋、楚、秦(又有一说是齐、晋、楚、吴、越),合称春秋五霸。到了前546年左右,黄河流域的争霸基本结束,晋、楚两国平分了霸权。前403年,晋国被分成韩、赵、魏三个诸侯国,史称“三家分晋”。再加上被田氏夺去了政权的齐国,和秦、楚及燕,并称战国七雄,战国时期正式开始。大部分马克思主义史学家将战国开始划为封建社会,然而大部分西方及台湾学者却又将之划为封建社会的崩溃。前356年秦国商鞅变法开始后,秦国国力大大增强,最后终于在前221年消灭六国最后的齐国,完成统一,中国历史也进入了新时代。\n" + -"\n" + -"春秋战国时期学术思想比较自由,史称百家争鸣。出现了多位对之后中国有深远影响的思想家(诸子百家),例如老子、孔子、墨子、庄子、孟子、荀子、韩非等人。出现了很多学术流派,较出名的有十大家,即道家(自然)、儒家(伦理)、阴阳家(星象占卜)、法家(法治)、名家(修辞辩论)、墨家(科技)、众、杂、农家(农业)、小说家(小说)等。文化上则出现了第一个以个人名字出现在中国文学史上的诗人屈原,他著有楚辞、离骚等文学作品。孔子编成了诗经。战争史上出现了杰出的兵法家孙武、孙膑、吴起等等。科技史上出现了墨子,建筑史上有鲁班,首次发明了瓦当,奠定了中国建筑技术的基础。能制造精良的战车与骑兵,同时此时中国的冶金也十分发达,能制造精良的铁器,在农业上出现了各种灌溉机械,大大提高了生产率,从而为以后人口大大膨胀奠定了基础。历史上出现了春秋(左传),国语,战国策。中华文化的源头基本上都可以在这一时期找到。\n" + -"\n" + -"这一时期科技方面也取得了很大进步。夏朝发明了干支纪年,出现了十进位制。西周人用圭表测日影来确定季节;春秋时期确定了二十八宿;后期则产生了古四分历。\n" + -"\n" + -"[编辑] 秦汉时期\n" + -"\n" + -" 主条目:秦朝、汉朝、西汉、新朝和东汉\n" + -"\n" + -"北京八達嶺長城\n" + -"北京八达岭长城\n" + -"\n" + -"前221年,秦并其他六国后统一了中国主体部分,成为了中国历史上第一个统一的中央集权君主统治国家,定都咸阳(今西安附近)。由于秦王嬴政自认“功盖三皇,德过五帝”,于是改用皇帝称号,自封始皇帝,人称秦始皇,传位后的皇帝称二世,直至千世万世。他对国家进行了许多项改革,包括了中央集权的确立,取代了周朝的诸侯分封制;统一了文字,方便官方行文;统一度量衡,便于工程上的计算。秦始皇还大力修筑驰道,并连接了战国时赵国、燕国和秦国的北面围城,筑成了西起临洮、东至辽东的万里长城以抵御北方来自匈奴,东胡等游牧民族的侵袭。秦始皇推崇法治,重用法家的李斯作为丞相,并听其意见,下令焚书坑儒,收缴天下兵器,役使七十万人修筑阿房宫以及自己的陵墓——包括兵马俑等。部分史学家对以上事件存有怀疑,认为由于秦始皇的一系列激进改革得罪了贵族,平民无法适应,才在史书上留此一笔。[来源请求]\n" + -"\n" + -"前210年,秦始皇病死于出巡途中,胡亥(即秦二世)杀害太子扶苏即位。但十个月后,陈胜、吴广在大泽乡揭竿而起,包括六国遗臣等野心家乘势作乱,前206年刘邦围攻咸阳,秦王子婴自缚出城投降,秦亡。此后,汉王刘邦与西楚霸王项羽展开了争夺天下的楚汉战争。 前202年十二月,项羽被汉军围困于垓下(今安徽灵壁),四面楚歌。项羽在乌江自刎而死。楚汉之争至此结束。汉高祖刘邦登基,定都长安(今陕西西安),西汉开始。到了汉武帝时,西汉到达鼎盛。并与罗马,安息(帕提亚),贵霜并称为四大帝国。武帝实行推恩令,彻底削弱了封国势力,强化监察制度,实现中央集权;他派遣卫青、霍去病、李广等大将北伐,成功地击溃了匈奴,控制了西域,还派遣张骞出使西域,开拓了著名的丝绸之路,发展了对外贸易,使中国真正了解了外面的世界,促进中西文化交流。儒家学说也被确立为官方的主流意识形态,成为了占统治地位的思想。其他艺术与文化也蒸蒸日上。同时期还出现了第一部通史性质的巨著——《史记》,同时这时的中国出现造纸术,大大推动了文化发展。\n" + -"\n" + -"西汉发展到了一世纪左右开始逐渐衰败。公元9年,外戚王莽夺权,宣布进行一系列的改革,改国号为新。然而这些改革却往往不切实际,最终导致农民纷纷起义。公元25年刘秀复辟了汉朝,定都洛阳,史称东汉,而他就是汉光武帝。东汉的发展延续了西汉的传统,此时出现了天文学家张衡。汉的文化吸取了秦的教训,显得相当开明,当时佛教通过西域到达中国,在河南洛阳修建了中国的第一座佛教寺庙——白马寺,佛教正式传入中国。\n" + -"\n" + -"[编辑] 魏晋南北朝时期\n" + -"\n" + -" 主条目:魏晋南北朝、三国、晋朝、十六国和南北朝\n" + -"\n" + -"赤壁\n" + -"赤壁\n" + -"\n" + -"东汉中后期,宦官和外戚长期争权,在黄巾起义的打击下,到了公元二世纪左右时再度衰败,196年曹操控制了东汉朝廷,把汉献帝迎至许都,“挟天子以令诸侯”,220年,曹操死后,长子曹丕废汉献帝自立,建立魏国,同时尚有刘氏的汉和孙氏的吴,历史进入了三国时期。\n" + -"\n" + -"265年,魏权臣司马炎称帝,建立晋朝。280年三国归晋,再度统一。晋朝的文化也有一定发展,当时由于战乱纷纷,很多学士选择归隐,不问世事,典型的代表人物是陶渊明(陶潜),当时的书法艺术也十分兴盛。290年晋武帝死后不到一年,十六年的朝廷权利斗争开始,史称“八王之乱”。与此同时,中原周边的五个游牧民族(匈奴、鲜卑、羌、氐、羯)与各地流民起来反晋,史称五胡乱华。这些游牧民族纷纷建立自己的国家,从304年到409年,北部中国陆陆续续有多个国家建立,包括了汉、前赵、后赵、前燕、前凉、前秦、后秦、后燕、西秦、后凉、北凉、南凉、南燕、西凉、夏和北燕, 史称十六国。\n" + -"\n" + -"自东汉后期开始,为躲避战乱,北方的汉族人民大量迁居南方,造成经济重心南移;晋朝南迁,建都建康(今江苏南京),历史上称此前为西晋,南迁后为东晋。最后,拓跋鲜卑统一北方,建立北朝的第一个王朝——北魏,形成了南北朝的对立。南朝经历了宋、齐、梁、陈的更替,而北朝则有北魏、东魏、西魏、北齐和北周。南北朝时期是佛教十分盛行的时期,西方的佛教大师络绎不绝地来到中国,许多佛经被翻译成汉文。\n" + -"\n" + -"[编辑] 隋唐五代时期\n" + -"\n" + -" 主条目:隋朝、唐朝和五代十国\n" + -"\n" + -"唐代画家张萱作《捣练图》。\n" + -"唐代画家张萱作《捣练图》。\n" + -"\n" + -"581年,杨坚取代北周建立了隋朝,并于589年灭掉南朝最后一个政权——陈,中国历经了三百多年的分裂之后再度实现了统一。不过隋朝也是一个短命的王朝,在修筑了巨大工程——京杭大运河后就灭亡了,只经历了两代37年。\n" + -"\n" + -"618年,唐高祖李渊推翻隋朝建立了唐朝,它是中国历史上延续时间最长的朝代之一。626年,唐太宗李世民即位,唐朝开始进入鼎盛时期,史称贞观之治。长安(今陕西西安)是当时世界上最大的城市,唐王朝也是当时最发达的文明。高宗李治之妻武则天迁都洛阳,并称帝,成为中国史上唯一的女皇帝,改国号周,并定佛教为国教,广修佛寺,大兴土木。隋唐时期开创的科举制是当时比较科学与公平的人材选拔制度。唐王朝与许多邻国发展了良好的关系,文成公主嫁到吐蕃,带去了大批丝织品和手工艺品。日本则不断派遣使节、学问僧和留学生到中国。唐朝的文化也处于鼎盛,特别是诗文得到较大的发展,还编撰了许多纪传体史书。唐代涌现出许多伟大的文学家,例如诗人李白、杜甫、白居易、杜牧,以及散文家韩愈、柳宗元。唐代的佛教是最兴盛的宗教,玄奘曾赴天竺取经,回国后译成1335卷的经文,并于西安修建了大雁塔以存放佛经。唐朝前期对宗教采取宽容政策,佛教外,道教、摩尼教(Manicheism)、景教和伊斯兰教等也得到了广泛传播。这一切都在李世民的曾孙唐玄宗李隆基统治时期达到顶峰,史称开元盛世。然而在755年,爆发了安史之乱,唐朝由此开始走向衰落。\n" + -"\n" + -"875年,黄巢起义爆发,唐朝再度分裂,并于907年灭亡,形成了五代十国的混乱局面。\n" + -"\n" + -"[编辑] 宋元时期\n" + -"\n" + -" 主条目:辽朝、金朝、西夏、宋朝和元朝\n" + -"\n" + -"清明上河圖局部,描繪了清明時節,北宋京城汴梁及汴河兩岸的繁華和熱鬧的景象和優美的自然風光。\n" + -"清明上河图局部,描绘了清明时节,北宋京城汴梁及汴河两岸的繁华和热闹的景象和优美的自然风光。\n" + -"\n" + -"经过了五十多年的纷争后,960年北宋控制了中国大部分地区,但是燕云十六州在北方契丹族建立的辽朝手中(五代中的后晋太祖“儿皇帝”石敬瑭所献),河西走廊被党项族建立的西夏趁中原内乱占据,北宋初期虽然曾出兵讨还(宋太宗)但是以失败告终,木以成舟,无可奈何,不得不向日益坐大的辽和西夏交纳岁币。北宋晚期发生了分别以王安石、司马光为首的党派斗争,增加了社会的不安。到了1125年松花江流域女真族,也就是后来的满族,建立的金国势力逐渐强大,1125年,金国灭辽。金国随即开始进攻积弱的北宋,1127年(靖康元年)金国攻破北宋首都汴京(今河南开封),俘虏三千多皇族,其中包括了当时的皇帝宋钦宗和太上皇宋徽宗,因为钦宗其时的年号为靖康,史称靖康之难,北宋灭亡。同年宋钦宗的弟弟赵构在南京应天府(今河南商丘)即皇位,定都临安(今浙江杭州),史称南宋,偏安江南。\n" + -"\n" + -"此后金与南宋多次交战,英雄人物层出不穷(如名将岳飞)。直到1234年,蒙古南宋联合灭金。随即蒙古与南宋对抗,经历了空前绝后的大规模血腥战争(如襄樊之战, 钓鱼城之战)。1271年忽必烈建立元朝,定都大都(今北京)。元军于1279年与南宋进行了崖山海战,8岁的小皇帝赵昺被民族英雄陆秀夫背着以身殉国惨烈地跳海而死。崖山海战以元朝的胜利告终,南宋随之灭亡。另有一说, 原华夏文明至此夭折.[来源请求]\n" + -"\n" + -"北宋时期中国出现印刷术和火药。当时中国经济发达,中国海上贸易十分兴盛,福建泉州一带成为繁华的港口,中国当时的经济总量占世界的一半,财政收入超过一亿两白银,首都开封和杭州人口达到400到500万人口,相对当时佛罗伦萨和巴黎十几万人口来讲确实是十分繁华,各国商人云集,文化也极盛,出现了程颐、朱熹等理学家,提倡三从四德。与唐诗并驾齐驱的宋词,有苏轼等词文优秀的词人,出现了中国历史上最著名的女词人李清照,社会文化发达,出现了白蛇传,梁祝等浪漫爱情传说,以至于宋朝被西方学者称为中国的“文艺复兴”。\n" + -"\n" + -"元朝建立后,一方面吸收了许多中原、汉族文化,以中原的统治机构和方式来统治人民,并大力宣扬朱熹一派的理论(即程朱理学),使得程朱理学成为元朝(以及其后朝代)的官方思想,另一方面却实行了民族等级制度,第一等是蒙古人;第二等是“色目人”,包括原西夏统治区以及来自西域、中亚等地的人口;第三等是“汉人”,包括原金统治区的汉族和契丹、女真等族人;第四等是“南人”,包括原南宋统治区的汉族和其他族人。这种民族制度导致汉族的不满,许多汉族人将元朝视为外来政权,并发动多次反抗。元朝政府除了传统的农业外,也比较重视商业。元朝首都大都十分繁华,来自世界各国的商人云集。在文化上,则出现了与唐诗、宋词并称的元曲,涌现出诸如关汉卿、马致远、王实甫等著名作曲家。\n" + -"\n" + -"[编辑] 明清时期\n" + -"紫禁城太和殿\n" + -"紫禁城太和殿\n" + -"\n" + -" 主条目:明朝、南明、清朝和中国近代史\n" + -"\n" + -"1368年,农民起义军领袖朱元璋推翻元朝并建立了明朝。明朝前期建都南京,1405年曾帮助明成祖篡位的太监郑和奉命七次下西洋,曾经到达印度洋、东南亚及非洲等地,但后来明朝逐渐走向闭关锁国。1421年,明朝迁都北京。明朝文化上则出现了王阳明、李贽等思想家,以及《三国演义》、《水浒传》、《西游记》和《金瓶梅》等长篇小说。由于明朝末年行政混乱及严重自然灾害,1627年,明末农民大起义爆发,1644年,起义首领李自成攻克北京,明思宗自缢。南方大臣先后拥护福王朱由崧(弘光)、唐王朱聿键(隆武)、桂王朱由榔(永历)为帝,史称南明,最终因实力不足及政治内斗,仍为当时强盛的清朝所灭。\n" + -"\n" + -"明朝晚期,居住在东北地区的满族开始兴盛起来,终于在1644年李自成攻克北京后不久,驱逐李自成,进入北京,建立了清朝,当时明朝旧臣郑成功南撤到台湾岛,并驱逐了那里的荷兰殖民者,后来被清朝军队攻下。清朝在之后的半个世纪还成功地征服了许多地区,例如新疆、西藏、蒙古以及台湾。康熙年间,清廷还与沙俄在黑龙江地区发生战争,最终于1689年签订停战条约——《中俄尼布楚条约》。清朝由于取消了丁税(人头税),导致人口增加,到19世纪已达当时世界总人口的三分之一,人口的增多促进当时农业的兴盛,为当时世界上第一强国,到1820年时中国的经济总量占世界的三分之一。\n" + -"\n" + -"然而到了19世纪初,清朝已经走向衰落,在嘉庆年间先后爆发白莲教、天理教的大规模起义。与此同时海上强国英国、荷兰与葡萄牙等纷纷开始强制与中国进行贸易。1787年,英国商人开始向华输入鸦片,导致中国的国际贸易由顺差变为巨额逆差。清廷于1815年颁布搜查洋船鸦片章程,然而英商无视禁令依然走私大量鸦片,道光皇帝不得不于1838年派林则徐赴广州禁烟。1839年6月,将237万多斤鸦片在虎门销毁,史称虎门销烟。英国政府因此于1840年6月发动鸦片战争。一般中国大陆史学界认为这是中国近代史的开始。\n" + -"\n" + -"[编辑] 清末的内忧外患\n" + -"一幅描繪列強瓜分中國情形的漫畫\n" + -"一幅描绘列强瓜分中国情形的漫画\n" + -"\n" + -"鸦片战争持续了一年多,1841年8月英军到达南京,清廷恐惧英军会进逼北京,于是求和,1842年8月29日,《南京条约》签署。香港岛被割让;上海、广州、厦门、福州和宁波开放作为通商口岸,还赔偿款银(西班牙银圆)2100万元。1844年,美国与法国也与清廷分别签订了《望厦条约》和《黄埔条约》,中国的主权受到破坏。\n" + -"\n" + -"与此同时中国国内反抗清朝的斗争再度兴起。1851年至1864年间,受到基督教影响的秀才洪秀全建立拜上帝会,发动金田起义并创建了太平天国。太平天国曾经一度占领南方部分省份,并定都南京(改名“天京”),建立政教合一的中央政权。同一时期其它的运动还有天地会、捻军、上海小刀会起义、甘肃回民起义等。这些反抗清朝的斗争直到1860年代才基本平息下来。\n" + -"\n" + -"19世纪后期,英、美、法、俄、日等国多次侵入中国,强迫中国与之签定不平等条约。1858年中俄签定《瑷珲条约》,俄国割去黑龙江以北、外兴安岭以南60多万平方公里的中国领土。1860年,英法联军发动第二次鸦片战争,侵入北京,掠夺并烧毁皇家园林圆明园,并于1860年与清廷签定《北京条约》,各赔英法800万两白银,开放更多通商口岸。同年中俄《北京条约》将乌苏里江以东,包括库页岛(萨哈林岛)、海参崴(符拉迪沃斯托克)约40万平方公里的中国领土,划归俄国。1864年,《中俄勘分西北界约记》将巴尔喀什湖以东、以南和斋桑卓尔南北44万平方公里的中国领土,割给俄国。\n" + -"\n" + -"为了增强国力并巩固国防,清朝自1860年代开始推行洋务运动,国力有所恢复,并一度出现了同治中兴的局面。1877年清军收复新疆,1881年通过《伊犁条约》清军收复被沙俄占据多年的伊犁。中法战争后清朝还建立了当时号称亚洲第一、世界第六的近代海军舰队—北洋水师。然而在1894年爆发的中日甲午战争中,中国战败,次年被迫与日本签定《马关条约》,赔偿日本2亿两白银,并割让台湾、澎湖列岛给日本。甲午战争的失败,对当时的中国产生了很大的影响。1898年,光绪帝在亲政后同意康有为、梁启超等人提出的变法主张,从6月11日到9月21日的被称为百日维新的103天中进行了多项改革,但最终在慈禧太后发动政变后失败落幕,康有为、梁启超逃亡国外,谭嗣同、刘光第等六人被杀,史称“戊戌六君子”。\n" + -"\n" + -"1899年,义和团运动爆发,以“扶清灭洋”为宗旨并在慈禧太后默许下开始围攻外国驻北京使馆。于是,各国以解救驻京使馆人员的名义侵入中国,史称八国联军。1901年,清政府被迫与各国签定辛丑条约,赔款4.5亿两白银,分39年还清(本息合计9.8亿两),同时从北京到山海关铁路沿线由各国派兵驻扎,开北京东交民巷为使馆区,国人不得入内等。\n" + -"\n" + -"[编辑] 20世纪至今\n" + -"\n" + -" 主条目:中华民国历史和中华人民共和国史\n" + -"\n" + -"1901年,革命党开始兴起,孙中山等人在海外积极筹款,指挥国内的多次起义运动。经过十次失败的起义后,与革命党互不沟通的湖北新军在武昌起义获得成功。1912年元月,中华民国宣告成立。孙中山就任临时大总统。以清帝退位为条件,孙中山辞去总统位置,由袁世凯接任。但袁世凯妄图恢复帝制。此后,孙中山发起护法运动与护国运动讨伐袁世凯。1916年,袁世凯在称帝83天之后死去,中华民国进入北洋军阀控制中央政府统治时期,地方政府分别由各个军阀派系占据。\n" + -"\n" + -"孙中山之后多次试图联合南方地方军阀北伐北京中央政府未果。1921年,在共产国际的指导下中国共产党成立,并成为共产国际中国支部。1924年,孙中山提出新三民主义并确定联俄联共扶助农工的政策,国民党在共产国际帮助下改组,共产党员以个人身份加入国民党,国共两党进行第一次合作。孙中山自建立广州军政府(1923年改称大元帅府)以后,曾经三次进行北伐,均因条件不具备而未果。1925年春,孙中山病逝于北京。同年,广州国民政府为统一与巩固广东革命根据地,先后举行第一次东征第二次东征与南征,肃清广东境内的军阀势力和反革命武装,并将广东境内倾向革命的军队统一改编为国民革命军,下辖第1至第6军。不久又将广西部队改编为第7军。为北伐战争作了重要准备。1926年6月5日,国民党中央执行委员会正式通过国民革命军出师北伐案,并任命蒋介石为国民革命军总司令正式开始北伐。然而随着北伐和国民革命的深入,国民党不能容忍共产党激进的工人运动,国共两党分裂,大量共产党员及其支持者被清出国民党,有的被拘捕和杀害。1927年8月1日,以周恩来、贺龙、叶挺为首的共产党员在江西南昌发动南昌叛乱,共产党从此有自己独立的军队(中华人民共和国成立后,8月1日被定为建军节)。并于江西瑞金建立了第一个红色苏维埃地方割据政权。此后南京国民政府先后对中央苏区进行五次围剿,红军逃过了前四次围剿,在第五次战争失败,不得不离开红区。1934年开始,红军进行战略转移,在贵州遵义确立了毛泽东对红军的领导和指挥权,四渡赤水河,终于摆脱了追击,途经江西,贵州,四川,甘肃,陕西,经过二万五千里长征,最后在陕西北部与陕北红军刘志丹部会师,建立陕甘宁共产党临时政府。\n" + -"毛泽東在天安门城楼上宣布中华人民共和國的成立\n" + -"毛泽东在天安门城楼上宣布中华人民共和国的成立\n" + -"\n" + -"1931年9月18日,日本开始侵华,占领了东北全境。1936年12月12日,西安事变后国共第二次合作抗日。1937年7月7日,抗日战争全面爆发,蒋中正在庐山发表著名的“最后关头”的演说,号召全国人民一致抗日。在日军进行南京大屠杀前夕,中华民国首都从南京迁至武汉,后来迁至重庆,在八年间蒋中正为统帅的抗日力量共进行了22次大会战,和成千上万次大小战斗。1945年,二战结束后,当时的中国国民政府从日本手里获得了台湾及澎湖列岛以及其他一些领土,但也在1946年与苏联签订的条约中承认了外蒙古的独立(1951年,迁往台湾的国民党国民政府以苏联未履约为由,不承认该条约及依据该条约而独立的外蒙古的独立地位;但是,蒙古独立已为既成事实)。1946年6月,国共两党又进行了内战。中国共产党最终于1949年获得决定性胜利,中华民国中央政府迁往战后的台湾。中华人民共和国在北平成立,并将北平改名为北京,毛泽东宣布中华人民共和国政府为包括台湾在内的全中国的唯一合法政府。与此同时,蒋介石宣布台北为中华民国临时首都,宣誓三年内反攻大陆。(请参看台湾问题)\n" + -"\n" + -"中共执政之初,采取“土地革命”“公私合营”等手段,国内纷乱的局势暂时得到了稳定。按照中共的史观,自1956年“三大改造”完成后,中国正式进入社会主义阶段。并制订第一个五年计划,大力发展重工业,国家经济一度好转。但是1958年,毛泽东发动“大跃进”运动与人民公社话运动,各地浮夸风“放卫星”等谎报数据的情况盛行。自1959年到1961年,国家经济又陷入濒临崩溃的境地,中共称其为“三年自然灾害”。毛泽东因此退居幕后,以刘少奇为首的一批官僚着手恢复经济,国家形式得到了回稳。1966年,文化大革命爆发,刘少奇、贺龙等人被打倒,毛泽东再度成为政治领导,林彪一度成为内定接班人。在林彪阴谋败露后,四人帮成为新的重要政治势力。1976年,周恩来朱德先后去世;9月9日,毛泽东去世。华国锋接替了毛的领导地位,四人帮被打倒。但是华提出了“两个凡是”的路线,国家实质上仍然没有完全脱离文化大革命阶段。 1978年,邓小平复出,中共十一届三中全会召开,改革开放时代正式到来。中国的经济开始步入正轨。但是,由于通货膨胀与政治腐败,民间不满情绪开始酝酿。胡耀邦的去世成为愤怒爆发的导火索,终致爆发了六四事件。从此以后,改革的步伐一度停滞,直到1992年邓小平南巡后才得以改变。1997年,中国收复香港的主权,江泽民也接替邓成为了新的中国领导人。2002 年后,胡锦涛成为新的国家领导人,上海帮淡出政治中心。中共政府近几年渐渐放弃“韬光养晦”的外交方针,在外交舞台上动作频繁,并加强对台湾的攻势。经济改革依然得到了持续,但政治改革的话题仍然是禁忌。而由于贫富差距的拉大与政治腐败不见好转,民间对中共的评价与看法也日益两极。\n" + -"\n" + -"至于中华民国,在国府迁台后,国民党始终保持对政治与言论自由的强力控制。1986年,中华民国第一个反对党民主进步党成立,威权时代的戒严体制开始松动。1987年,中华民国政府正式宣告台湾省解严,进入了一个新的时代。之后,1996年实现了第一次民选总统;2000年更实现第一次政党和平轮替。2005年,末代国民大会召开,中华民国宪法出现了重大修改。今后,民主化的中华民国仍然充满变量。\n" + -"\n" + -"[编辑] 参见\n" + -"\n" + -" * 中国\n" + -" * 中国历史年表\n" + -" * 中国历史事件列表\n" + -" * 诸侯会盟\n" + -" * 中国历史地图\n" + -"\n" + -" \n" + -"\n" + -" * 中华人民共和国历史年表\n" + -" * 中华人民共和国史\n" + -" * 汉学\n" + -" * 中华文明\n" + -" * 中国历史大事年表\n" + -"\n" + -" \n" + -"\n" + -" * 中国文化\n" + -" * 中国行政区划\n" + -" * 中国朝代\n" + -" * 夏商周断代工程\n" + -" * 中国古都\n" + -"\n" + -" \n" + -"\n" + -" * 中国战争列表\n" + -" * 中国国旗\n" + -" * 中国皇帝\n" + -" * 中国历代王朝君主世系表\n" + -" * 中国君王诸子女列表\n" + -" * 中华民国历史\n" + -"\n" + -"[编辑] 其他特定主题中国史\n" + -"\n" + -" * 中国军事史\n" + -" * 中国科学技术史\n" + -" * 中国文化史\n" + -" * 中国文学史\n" + -" * 中国艺术史\n" + -" * 中国经济史\n" + -" * 中国体育史\n" + -" * 中国人口史\n" + -" * 中国疆域史\n" + -" * 中国盗墓史\n" + -" * 中国酷刑史\n" + -" * 中国食人史\n" + -" * 中国盐业史\n" + -"\n" + -"[编辑] 注解\n" + -"\n" + -" 1. ↑ 柳翼谋:《中国文化史》\n" + -"\n" + -"[编辑] 参考文献\n" + -"\n" + -" 1. 白寿彝主编:中国通史纲要,1993年上海:人民出版社,ISBN 7208001367\n" + -" 2. 周谷城著:中国通史,1995年上海:人民出版社,ISBN 7208003300\n" + -" 3. 李敖著:独白下的传统,2000年香港:三联书店(香港)有限公司,ISBN 9620418913\n" + -" 4. 范文澜著:中国近代史,1962年北京:人民出版社,统一书号 11001241\n" + -" 5. 徐中约著:中国近代史(上册),香港2001 中文大学出版社,ISBN 9622019870\n" + -" 6. Korotayev A., Malkov A., Khaltourina D. Introduction to Social Macrodynamics: Secular Cycles and Millennial Trends. Moscow: URSS, 2006. ISBN 5-484-00559-0 [1] (Chapter 2: Historical Population Dynamics in China).\n" + -"\n" + -"[编辑] 相关著作\n" + -"\n" + -" * 《二十四史》 (正史)\n" + -" * 《国史要义》 柳诒徵\n" + -" * 《国史大纲》 钱穆\n" + -" * 《中华五千年史》 张其昀\n" + -"\n" + -"[编辑] 外部链接\n" + -"维基共享资源中相关的多媒体资源:\n" + -"中国历史\n" + -"\n" + -" * 中华万年网\n" + -" * 一个全面专门研究中华历史的论坛:中华历史网论坛\n" + -" * (正体中文 - 台湾)《中国大百科全书》:中国历史概述\n"; - -var cyrillic = -"История Китая\n" + -"[править]\n" + -"Материал из Википедии — свободной энциклопедии\n" + -"Перейти к: навигация, поиск\n" + -"История Китая\n" + -"История Китая\n" + -"Три властителя и пять императоров\n" + -"Династия Ся\n" + -"Династия Шан\n" + -"Династия Чжоу \n" + -"Западное Чжоу\n" + -"Восточное Чжоу Чуньцю\n" + -"Чжаньго\n" + -"Династия Цинь\n" + -"(Династия Чу) - смутное время\n" + -"Династия Хань Западная Хань\n" + -"Синь, Ван Ман\n" + -"Восточная Хань\n" + -"Эпоха Троецарствия Вэй Шу У\n" + -"Цзинь\n" + -" Западная Цзинь\n" + -"Шестнадцать варварских государств Восточная Цзинь\n" + -"Северные и Южные Династии\n" + -"Династия Суй\n" + -"Династия Тан\n" + -"Ляо\n" + -" \n" + -"5 династий и 10 царств\n" + -"Северная Сун\n" + -" \n" + -"Сун\n" + -"Цзинь\n" + -" \n" + -"Западная Ся\n" + -" \n" + -"Южная Сун\n" + -"Династия Юань\n" + -"Династия Мин\n" + -"Династия Цин\n" + -"Китайская республика\n" + -"Китайская Народная Республика\n" + -" Китайская республика (Тайвань)\n" + -"\n" + -"Китайская цивилизация — одна из старейших в мире. По утверждениям китайских учёных, её возраст может составлять пять тысяч лет, при этом имеющиеся письменные источники покрывают период не менее 3500 лет. Наличие систем административного управления, которые совершенствовались сменявшими друг друга династиями, ранняя освоенность крупнейших аграрных очагов в бассейнах рек Хуанхэ и Янцзы создавало преимущества для китайского государства, экономика которого основывалась на развитом земледелии, по сравнению с соседями-кочевниками и горцами. Ещё более укрепило китайскую цивилизацию введение конфуцианства в качестве государственной идеологии (I век до н. э.) и единой системы письма (II век до н. э.).\n" + -"Содержание\n" + -"[убрать]\n" + -"\n" + -" * 1 Древний Китай\n" + -" * 2 Государство Шан-Инь\n" + -" * 3 Государство Чжоу (XI—III вв. до н. э.)\n" + -" * 4 Империя Цинь\n" + -" * 5 Империя Хань\n" + -" * 6 Государство Цзинь и период Нань-бэй чао (IV—VI вв.)\n" + -" * 7 Государство Суй (581—618)\n" + -" * 8 Государство Тан\n" + -" * 9 Государство Сун\n" + -" * 10 Монголы и государство Юань (1280—1368)\n" + -" * 11 Государство Мин (1368—1644)\n" + -" * 12 Государство Цин\n" + -" o 12.1 Внешняя экспансия Цин\n" + -" o 12.2 Цинский Китай и Россия\n" + -" o 12.3 Опиумные войны\n" + -" o 12.4 Японо-китайская война 1894—1895 годов\n" + -" o 12.5 Тройственная интервенция\n" + -" o 12.6 Успехи русской политики в Китае\n" + -" o 12.7 Захват Цзяочжоу Германией\n" + -" o 12.8 Сто дней реформ\n" + -" * 13 XX век\n" + -" o 13.1 Боксерское восстание\n" + -" o 13.2 Русско-японская война\n" + -" o 13.3 Смерть Цыси\n" + -" o 13.4 Аннексия Кореи\n" + -" o 13.5 Революция 1911 года и создание Китайской Республики\n" + -" o 13.6 Первая мировая война\n" + -" o 13.7 Эра милитаристов\n" + -" o 13.8 Победа Гоминьдана\n" + -" o 13.9 Японская оккупация и Вторая мировая война\n" + -" o 13.10 Создание Китайской Народной Республики\n" + -" o 13.11 Культурная революция\n" + -" o 13.12 Экономическая либерализация\n" + -" * 14 См. также\n" + -" * 15 Литература\n" + -"\n" + -"[править] Древний Китай\n" + -"\n" + -"Китайская цивилизация (предков государствообразующего этноса хань) — группа культур (Баньпо 1, Шицзя, Баньпо 2, Мяодигоу, Чжуншаньчжай 2, Хоуган 1 и др.) среднего неолита (ок. 4500-2500 до н.э.) в бассейне реки Хуанхэ, которые традиционно объединяются общим названием Яншао. Представители этих культур выращивали зерновые (чумиза и др.) и занимались разведением скота (свиньи). Позднее в этом районе появились ближневосточные виды злаков (пшеница и ячмень) и породы домашнего скота (коровы, овцы, козы).\n" + -"\n" + -"[править] Государство Шан-Инь\n" + -"\n" + -"Первым известным государством бронзового века на территории Китая было государство Шан-Инь, сформировавшееся в XIV веке до н. э. в среднем течении реки Хуанхэ, в районе Аньяна.\n" + -"\n" + -"В результате войн с соседними племенами его территория расширилась и к XI веку до н. э. охватывала территории современных провинций Хэнань и Шаньси, а также часть территории провинций Шэньси и Хэбэй. Уже тогда появились зачатки лунного календаря и возникла письменность — прообраз современного иероглифического китайского письма. Иньцы значительно превосходили окружающие их племена и с военной точки зрения — у них было профессиональное войско, использовавшее бронзовое оружие, луки, копья и боевые колесницы. Иньцы практиковали человеческие жертвоприношения — чаще всего в жертву приносились пленные.\n" + -"\n" + -"В XI веке до н. э. государство Инь было завоёвано немногочисленным западным племенем Чжоу, которое до этого находилось в вассальных отношениях с иньцами, но постепенно укрепилось и создало коалицию племён.\n" + -"\n" + -"[править] Государство Чжоу (XI—III вв. до н. э.)\n" + -"Китайская медная монета в виде мотыги. Провинция Лоян, V-III в. до н.э.\n" + -"Китайская медная монета в виде мотыги. Провинция Лоян, V-III в. до н.э.\n" + -"\n" + -"Обширная территория государства Чжоу, охватывавшая практически весь бассейн Хуанхэ, со временем распалась на множество соперничающих между собой самостоятельных государственных образований — изначально, наследственных уделов на территориях, заселённых различными племенами и расположенных на удалении от столиц — Цзунчжоу (западной - около г. Сиань) и Чэнчжоу (восточной - Лои, Лоян). Эти уделы предоставлялись во владение родственникам и приближённым верховного правителя — обычно чжоусцам. В междоусобной борьбе число первоначальных уделов постепенно сокращалось, а сами уделы укреплялись и становились более самостоятельными.\n" + -"\n" + -"Население Чжоу было разнородным, причём наиболее крупную и развитую его часть составляли иньцы. В государстве Чжоу значительная часть иньцев была расселена на новых землях на востоке, где была построена новая столица — Чэнчжоу (современная провинция Хэнань).\n" + -"\n" + -"Для периода Чжоу в целом характерно активное освоение новых земель, расселение и этническое смешивание выходцев из различных районов, уделов (впоследствии — царств), что способствовало созданию фундамента будущей китайской общности.\n" + -"\n" + -"Период Чжоу (XI—III вв. до н. э.) делится на так называемые Западное и Восточное Чжоу, что связано с переездом правителя Чжоу в 770 до н. э. под угрозой нашествия варварских племён из Цзунчжоу — первоначальной столицы государства — в Чэнчжоу. Земли в районе старой столицы были отданы одному из союзников правителя государства, который создал здесь новый удел Цинь. Впоследствии именно этот удел станет центром единой китайской империи.\n" + -"\n" + -"Период Восточное Чжоу, в свою очередь, разделяется на два периода:\n" + -"\n" + -" * Чуньцю ( «Период Весны и Осени» VIII—V вв. до н. э.);\n" + -" * Чжаньго («Период Сражающихся царств», V—III вв. до н. э.).\n" + -"\n" + -"В период Восточного Чжоу власть центрального правителя — вана, сына Неба (тянь-цзы), правящего Поднебесной по Мандату Неба (тянь-мин), — постепенно ослабла, а ведущую политическую роль стали играть сильные уделы, превращавшиеся в крупные царства. Большинство из них (за исключением окраинных) именовали себя «срединными государствами» (чжун-го), ведущими своё происхождение от раннечжоуских уделов.\n" + -"\n" + -"В период Восточного Чжоу формируются основные философские школы древнего Китая — конфуцианство (VI—V вв. до н. э.), моизм (V в. до н. э.), даосизм (IV в. до н. э.), легизм.\n" + -"\n" + -"В V—III вв. до н.э. (период Чжаньго) Китай вступает в железный век. Расширяются сельскохозяйственные площади, увеличиваются ирригационные системы, развиваются ремёсла, революционные изменения происходят в военном деле.\n" + -"\n" + -"В период Чжаньго на территории Китая сосуществовало семь крупнейших царств — Вэй, Чжао и Хань (ранее все три входили в царство Цзинь), Цинь, Ци, Янь и Чу. Постепенно в результате ожесточённого соперничества верх стало одерживать самое западное — Цинь. Присоединив одно за другим соседние царства, в 221 до н. э. правитель Цинь — будущий император Цинь Ши Хуан — объединил весь Китай под своей властью.\n" + -"\n" + -"Так в середине III века до н. э. завершился период Восточного Чжоу.\n" + -"\n" + -"[править] Империя Цинь\n" + -"\n" + -"Объединив древнекитайские царства, император Цинь Ши Хуан конфисковал всё оружие у населения, переселил десятки тысяч семей наследственной знати из различных царств в новую столицу — Сяньян и разделил огромную страну на 36 новых областей, которые возглавили назначаемые губернаторы.\n" + -"\n" + -"При Цинь Шихуанди были соединены оборонительные стены (валы) северных чжоуских царств и создана Великая китайская стена. Было сооружено несколько стратегических дорог из столицы на окраины империи. В результате успешных войн на севере гунны (сюнну) были оттеснены за Великую стену. На юге к империи были присоединены значительные территории племён юэ, в том числе северная часть современного Вьетнама.\n" + -"Строительство Великой китайской стены, протянувшейся на более чем 6700 км, было начато в III веке до н. э. для защиты северных районов Китая от набегов кочевников.\n" + -"Строительство Великой китайской стены, протянувшейся на более чем 6700 км, было начато в III веке до н. э. для защиты северных районов Китая от набегов кочевников.\n" + -"\n" + -"Цинь Шихуанди, строивший все свои реформы на основах легизма с казарменной дисциплиной и жестокими наказаниями провинившихся, преследовал конфуцианцев, предавая их казни (погребение заживо) и сжигая их сочинения — за то, что они смели выступать против установившегося в стране жесточайшего гнёта.\n" + -"\n" + -"Империя Цинь прекратила существование вскоре после смерти Цинь Шихуанди.\n" + -"\n" + -"[править] Империя Хань\n" + -"\n" + -"Вторую в истории Китая империю, получившую название Хань (206 до н. э.—220 н. э.) основал выходец из среднего чиновничества Лю Бан (Гао-цзу), один из военачальников возрожденного царства Чу, воевавших против Цинь после смерти императора Цинь Шихуана в 210 г. до н.э.\n" + -"\n" + -"Китай в это время переживал экономический и социальный кризис, вызванный потерей управляемости и войнами военачальников циньских армий с элитами уничтоженных раннее царств, пытавшихся восстановить свою государственность. Из-за переселений и войн значительно сократилась численность сельского населения в основных аграрных районах.\n" + -"\n" + -"Важная особенность смены династий в Китае состояла в том, что каждая новая династия приходила на смену предыдущей в обстановке социально-экономического кризиса, ослабления центральной власти и войн между военачальниками. Основателем нового государства становился тот из них, кто мог захватить столицу и насильственно отстранить правившего императора от власти.\n" + -"\n" + -"С правления Гао-цзу (206–195 до н.э.) начинается новый период китайской истории, который получил название Западная Хань.\n" + -"\n" + -"При императоре У-ди (140—87 до н. э.) была взята на вооружение иная философия — восстановленное и реформированное конфуцианство, которое стало господствующей официальной идеологией вместо дискредитировавшего себя легизма с его жёсткими нормами и бесчеловечной практикой. Именно с этого времени берёт своё начало китайская конфуцианская империя.\n" + -"\n" + -"При нем территория ханьской империи значительно расширяется. Были уничтожены вьетское государство Намвьет (территория современной провинции Гуандун, Гуанси-Чжуанского автономного района и север Индокитайского полуострова), вьетские государства в южных частях современных провинций Чжэцзян и Фуцзянь, корейское государство Чосон, присоеденены земли на юго-западе, сюнну оттеснены далее на севере.\n" + -"\n" + -"Китайский путешественник Чжан Цянь проникает далеко на запад и описывает многие страны Средней Азии (Фергана, Бактрия, Парфия и др.). Вдоль пройденного им маршрута прокладывается торговый путь через Джунгарию и Восточный Туркестан в страны Средней Азии и Ближнего Востока — так называемый «Великий шёлковый путь». Империя на некоторое время подчиняет себе оазисы-протогосударства вдоль Шёлкового пути и распространяет своё влияние до Памира.\n" + -"\n" + -"В I в. н. э. в Китай из Индии начинает проникать буддизм.\n" + -"\n" + -"В период с 8 по 23 гг. н. э. власть захватывает Ван Ман, провозглашающий себя императором и основателем государства Синь. Начинается ряд преобразований, который прерывается экологической катастрофой - река Хуанхэ изменила русло. Из-за трехлетнего голода центральная власть ослабла. В этих условиях началось движение представителей рода Лю за возвращение престола. Ван Ман был убит, столица взята, власть возвратилась династии Лю.\n" + -"\n" + -"Новый период получил название Восточная Хань, он продлился до 220 г. н. э.\n" + -"\n" + -"[править] Государство Цзинь и период Нань-бэй чао (IV—VI вв.)\n" + -"\n" + -"Восточную Хань сменил период Троецарствия (Вэй, Шу и У). В ходе борьбы за власть между военачальниками было основано новое государство Цзинь (265—420).\n" + -"\n" + -"В начале IV века Китай подвергается нашествию кочевников — сюнну (гуннов), сяньбийцев, цянов, цзе и др. Весь Северный Китай был захвачен кочевниками, которые создали здесь свои царства, так называемые 16 варварских государств Китая. Значительная часть китайской знати бежала на юг и юго-восток, основанное там государство получило название Восточная Цзинь.\n" + -"\n" + -"Кочевники приходят волнами, одна за другой, и после каждой из этих волн в Северном Китае возникают новые царства и правящие династии, которые, однако, принимают классические китайские названия (Чжао, Янь, Лян, Цинь, Вэй и др.).\n" + -"\n" + -"В это время, с одной стороны, происходит варваризация образа жизни оседлых китайцев — разгул жестокости, произвола, массовых убийств, нестабильности, казней и бесконечных переворотов. А с другой стороны, пришельцы-кочевники активно стремятся использовыть китайский опыт управления и китайскую культуру для стабилизации и упрочения своей власти — мощь китайской конфуцианской цивилизации в конечном счёте гасит волны нашествий варварских племён, которые подвергаются китаизации. К концу VI века потомки кочевников практически полностью ассимилируются с китайцами.\n" + -"\n" + -"На севере Китая верх в столетней борьбе между некитайскими царствами берёт сяньбийское государство Тоба Вэй (Северная Вэй), объединившее под своей властью весь Северный Китай (бассейн Хуанхэ) и к концу V века в борьбе против южнокитайского государства Сун распространившее своё влияние до берегов Янцзы. При этом уже в VI веке, как было сказано, захватчики-сяньбийцы ассимилировались с подавляющим большинством местного населения.\n" + -"\n" + -"С началом варварских вторжений на север Китая, сопровождавшихся массовым уничтожением и порабощением местного населения, до миллиона местных жителей — в первую очередь знатных, богатых и образованных, включая императорский двор, — перебрались на юг, в районы, сравнительно недавно присоединённые к империи. Пришельцы с севера, заселив речные долины, активно занялись выращиванием риса и постепенно превратили Южный Китай в основной земледельческий район империи. Уже в V веке здесь стали собирать по два урожая риса в год. Резко ускорилась китаизация и ассимиляция местного населения, колонизация новых земель, строительство новых городов и развитие старых. На юге сосредоточился центр китайской культуры.\n" + -"\n" + -"Одновременно здесь укрепляет свои позиции буддизм — на севере и юге построено уже несколько десятков тысяч монастырей с более чем 2 млн. монахов. В немалой степени распространению буддизма способствует ослабление официальной религии — конфуцианства — в связи с варварскими вторжениями и междоусобицами. Первыми китайскими буддистами, способствовавшими популяризации новой религии, были приверженцы даосизма — именно с их помощью переводились с санскрита на китайский древние буддийские тексты. Буддизм постепенно стал процветающей религией.\n" + -"\n" + -"[править] Государство Суй (581—618)\n" + -"\n" + -"Процесс китаизации варваризованного севера и колонизованного юга создаёт предпосылки для нового объединения страны. В 581 севернокитайский полководец Чжоу Ян Цзянь объединяет под своей властью весь Северный Китай и провозглашает новую династию Суй (581—618), а после уничтожения южнокитайского государства Чэнь возглавляет объединённый Китай. В начале VII века его сын Ян Ди ведёт войны против корейского государства Когурё (611 - 614) и вьетнамского государства Вансуан, строит Великий канал между Хуанхэ и Янцзы для транспортировки риса с юга в столицу, создаёт роскошные дворцы в столице Лоян, восстанавливает и строит новые участки Великой китайской стены, пришедшей в упадок за тысячу лет.\n" + -"\n" + -"Подданные не выдерживают тягот и лишений и восстают. Ян Ди убивают, а династию Суй сменяет династия Тан (618—907), основатель — шансийский феодал Ли Юань.\n" + -"\n" + -"[править] Государство Тан\n" + -"\n" + -"Правители из династии Лю покончили с выступлениями знати и провели ряд успешных преобразований. Происходит разделение страны на 10 провинций, была восстановлена \"надельная система\", усовершенствовано административное законодательство, укреплена вертикаль власти, оживились торговля и городская жизнь. Значительно увеличились размеры многих городов и численность городского населения.\n" + -"\n" + -"К концу VII века усилившееся военное могущество Танской империи приводит к расширению территории Китая за счёт Восточно-Тюркского и Западно-Тюркского каганатов. Государства, расположенные в Джунгарии и Восточном Туркестане, на некоторое время становятся данниками Китая. Корейское государство Когурё покорено и становится Аньдунским наместничеством Китая. Вновь открыт Великий шёлковый путь.\n" + -"\n" + -"В VIII—X вв. в Китае получают распространение новые сельскохозяйственные культуры — в частности, чай, хлопок.\n" + -"\n" + -"Развивается морская торговля, главным образом через Гуанчжоу (Кантон), с Индией и Ираном, Арабским Халифатом, корейским государством Силла и Японией.\n" + -"\n" + -"В VIII веке империю Тан ослабляют конфликты между центральной властью и военными наместниками на периферии. Окончательно господство династии Лю подрывает война Хуан Чао за престол 874—901.\n" + -"\n" + -"В течение долгого времени (907—960) в стране не удаётся восстановить единую государственную власть, что связано с междоусобными войнами, особенно на севере страны.\n" + -"\n" + -"[править] Государство Сун\n" + -"\n" + -"В 960 военачальник Чжао Куан-инь основывает династию Сун (960—1279). Все три столетия Сун прошли под знаком успешного давления на Китай со стороны северных степных народов.\n" + -"\n" + -"Ещё в начале X века усилилось развитие и консолидация протомонгольской этнической общности киданей, соседствовавшей с Китаем на северо-востоке. Государство киданей, основанное в 916 и существовавшее по 1125, получило название Ляо. Активно укрепляясь на северных рубежах, кидани отторгли часть китайских территорий (часть современных провинций Хэбэй и Шаньси). Основы управления в государстве Ляо были созданы китайцами и корейцами, на основе китайских иероглифов и из китайских элементов письма была создана письменность, развивались города, ремёсла, торговля. Не сумев справиться с соседями и вернуть утраченные территории, Сунская империя была вынуждена пойти на подписание в 1004 мирного договора и согласиться на выплату дани. В 1042 дань была увеличена, а в 1075 Китай отдал киданям ещё часть своей территории.\n" + -"\n" + -"В то же время на северо-западных окраинах Сунской империи, к западу от киданей, на рубеже X—XI вв. складывается сильное государство тангутов — Западное Ся. Тангуты отторгли от Китая часть современной провинции Шэньси, целиком территорию современной провинции Ганьсу и Нинся-Хуэйского автономного района. С 1047 Сунской империи пришлось и тангутам платить дань серебром и шёлком.\n" + -"\n" + -"Несмотря на вынужденные территориальные уступки соседям период Сун считается эпохой экономического и культурного расцвета Китая. Растёт число городов, продолжается рост численности городского населения, китайские ремесленники достигают высот в изготовлении изделий из фарфора, шёлка, лака, дерева, слоновой кости и др. Изобретены порох и компас, распространяется книгопечатание, выводятся новые высокоурожайные сорта зерновых, увеличиваются посевы хлопка. Одной из наиболее впечатляющих и эффективных из данных инноваций было вполне сознательное, систематическое и хорошо организованное внедрение и распространение новых сортов скороспелого риса из Южного Вьетнама (Чампы).\n" + -"Чжан Цзэдуань. «По реке в День поминовения усопших» (XII век).\n" + -"Чжан Цзэдуань. «По реке в День поминовения усопших» (XII век).\n" + -"\n" + -"В XII веке Китаю приходится отдать ещё большую территорию новым захватчикам — южноманьчжурским чжурчжэням, создавшим (на базе уничтоженной ими в 1125 империи киданей Ляо) государство (впоследствии — империю) Цзинь (1115—1234), границы которой проходили по р. Хуайхэ. При этом часть разбитых киданей ушла на запад, где в районе рек Талас и Чу сложилось небольшое государство кара-китаев — Западное Ляо (1124—1211).\n" + -"\n" + -"В 1127 чжурчжэни захватывают столицу империи Сун — Кайфын и берут в плен императорскую семью. Один из сыновей императора бежит на юг, в Ханчжоу, который впоследствии становится столицей новой — южносунской империи (1127—1280). Продвижение армии чжурчжэней на юг сдерживает лишь река Янцзы. Граница между Цзинь и южносунской империей устанавливается по междуречью Хуанхэ и Янцзы. Северный Китай вновь на длительное время оказывается под господством иноземных завоевателей.\n" + -"\n" + -"В 1141 подписан мирный договор, согласно которому Сунская империя признаёт себя вассалом империи Цзинь и обязуется платить ей дань.\n" + -"\n" + -"[править] Монголы и государство Юань (1280—1368)\n" + -"\n" + -"В начале XIII века в Китай вторгаются монголы. До XIII века монголы являлись частью большой степной общности, которую китайцы называли \"татарами\". Их предшественники — протомонгольские и раннемонгольские группы и народы, одним из которых были кидани, представляли собой степных кочевников, разводивших лошадей и рогатый скот, кочевавших от пастбища к пастбищу и организованных в небольшие родоплеменные коллективы, связанные общностью происхождения, языка, культуры и т. п.\n" + -"\n" + -"Соседство развитой китайской цивилизации способствовало ускорению процесса создания племён, а затем и мощных племенных союзов во главе с влиятельными вождями. В 1206 на всемонгольском курултае вождём всех монголов был провозглашён победивший в жестокой междоусобной борьбе Темучин, принявший имя и титул Чингисхана.\n" + -"\n" + -"Чингисхан создал организованную и боеспособную армию, которая и стала решающим фактором в последующих успехах сравнительно немногочисленного монгольского этноса.\n" + -"\n" + -"Покорив соседние народы Южной Сибири, Чингисхан в 1210 пошёл войной на чжурчжэней и в 1215 взял Пекин.\n" + -"\n" + -"В 1219—1221 была разорена Средняя Азия и разбито государство Хорезмшахов. В 1223 — разбиты русские князья, в 1226—1227 — уничтожено государство тангутов. В 1231 основные силы монголов вернулись в Северный Китай и к 1234 завершили разгром чжурчжэньского государства Цзинь.\n" + -"\n" + -"Завоевания в Южном Китае были продолжены уже в 1250-х, после походов в Европу и на Ближний и Средний Восток. Вначале монголы захватили страны, окружавшие Южно-Сунскую империю — государство Дали (1252—1253), Тибет (1253). В 1258 монгольские войска под предводительством хана Хубилая с разных сторон вторглись в Южный Китай, но осуществлению их планов помешала неожиданная смерть Великого хана Мункэ (1259). Хан Хубилай, захватив ханский престол, в 1260 перенёс столицу из Каракорума на территорию Китая (сначала в Кайпин, а в 1264 в Чжунду — современный Пекин). Столицу южносунского государства Ханчжоу монголам удалось взять лишь в 1276. К 1280 весь Китай был завоёван, а Сунская империя — уничтожена.\n" + -"\n" + -"После покорения Китая хан Хубилай основывает новую династию Юань (1271—1368), на службу новой власти привлекаются кидани, чжурчжэни, тюрки и даже европейцы — в частности, в это время Китай посещает венецианский купец Марко Поло.\n" + -"\n" + -"Тяжёлый экономический, политический и национальный гнёт, установленный монгольскими феодалами, сдерживает развитие страны. Множество китайцев было обращено в рабство. Земледелие и торговля были подорваны. Не выполнялись необходимые работы по поддержанию ирригационных сооружений (дамб и каналов), что привело в 1334 к чудовищному наводнению и гибели нескольких сот тысяч человек. Великтий Китайский канал был построен во время монгольского господства.\n" + -"\n" + -"Народное недовольство новыми правителями вылилось в мощное патриотическое движение и восстания, которые возглавили руководители тайного общества «Белый лотос» (Байляньцзяо).\n" + -"\n" + -"[править] Государство Мин (1368—1644)\n" + -"\n" + -"В результате длительной борьбы в середине XIV века монголы были изгнаны. К власти пришёл один из руководителей восстания — сын крестьянина Чжу Юаньчжан, основавший государствоМин (1368—1644).\n" + -"\n" + -"Монголы, оттеснённые на север, приступают к активному освоению степей современной Монголии. Империя Мин подчиняет себе часть чжурчжэньских племён, государство Наньчжао (современные провинции Юньнань и Гуйчжоу), часть современных провинций Цинхай и Сычуань.\n" + -"\n" + -"Китайский флот под командой Чжэн Хэ, состоящий из нескольких десятков многопалубных фрегатов, за период с 1405 по 1433 совершает несколько морских экспедиций в Юго-Восточную Азию, Индию и к восточному побережью Африки. Не принеся Китаю никакой экономической выгоды, экспедиции были прекращены, а корабли — разобраны.\n" + -"\n" + -"В XVI веке происходит первая попытка усилившейся Японии вторгнуться в Китай и Корею. В это же время в Китай проникают европейцы — португальцы, испанцы, голландцы. В 1557 Португалия овладела на правах «аренды» китайской территорией Аомынь (Макао). В Китае появляются и христианские миссионеры — иезуиты. Они привезли в Китай новые инструменты и механизмы — часы, астрономические приборы, наладили здесь производство огнестрельного оружия. В то же время они занимаются доскональным изучением Китая.\n" + -"\n" + -"[править] Государство Цин\n" + -"\n" + -"К концу XVI века северные соседи империи Мин — потомки чжурчжэньских племён, разбитых в своё время Чингисханом, — объединяются вокруг владения Маньчжоу под предводительством вождя Нурхаци (1559—1626). В 1609 Нурхаци прекращает платить дань Китаю, а затем провозглашает собственную династию Цзинь. С 1618 маньчжуры усиливают вооружённое давление на Китай. За восемь лет они выходят практически к Великой китайской стене (на крайнем востоке).\n" + -"\n" + -"Преемник Нурхаци Абахай провозглашает себя императором и меняет название династии на Цин. В начале XVII века маньчжуры завоевали Южную (Внутреннюю) Монголию. На всей территории Южной Маньчжурии и захваченных ханств Южной Монголии устанавливается централизованная администрация.\n" + -"\n" + -"Маньчжурская конница, поддержанная внутренними монголами, начинает совершать регулярные набеги на Китай, грабя и обращая в рабство сотни тысяч китайцев. Императору Мин приходится направить на северные рубежи свою лучшую армию под командованием У Саньгуя. Тем временем в Китае разгорается очередное крестьянское восстание. В 1644 крестьянские отряды под предводительством Ли Цзычэна, разгромив все остальные армии, занимают Пекин, а сам Ли Цзычэн провозглашает себя императором. У Саньгуй пропускает маньчжурскую конницу на Пекин. 6 июня 1644 маньчжуры захватывают столицу. Ли Цзычэн вскоре гибнет, а маньчжуры объявляют своего малолетнего императора Шуньчжи правителем всего Китая. У Саньгуй вместе со всей армией переходит на службу к завоевателям.\n" + -"\n" + -"Борьба против маньчжурских захватчиков продолжается ещё долго, но ослабленный Китай не в силах противостоять хорошо вооружённому и организованному войску. Последний оплот сопротивления — Тайвань захвачен маньчжурами в 1683.\n" + -"\n" + -"Маньчжурская династия в государстве Цин правила с 1644 по 1911 год. В руках маньчжурской знати находились высшие органы власти и руководство армией. Смешанные браки были запрещены, и тем не менее маньчжуры быстро китаизировались, тем более что, в отличие от монголов, они не противопоставляли себя китайской культуре.\n" + -"\n" + -"Начиная с Канси (годы правления 1662—1723), маньчжурские императоры были ревностными конфуцианцами, управляя страной по древним законам. Китай под властью династии Цин в XVII—XVIII вв. развивался достаточно интенсивно. К началу XIX века в Китае насчитывалось уже около 300 млн. человек — примерно в пять раз больше, чем в среднем на протяжении предыдущих двух тысяч лет. Демографическое давление привело к необходимости интенсификации сельского хозяйственного производства при активном участии государства. Маньчжуры обеспечили покорность китайского населения, но при этом заботились о процветании экономики страны и благосостоянии народа.\n" + -"\n" + -"[править] Внешняя экспансия Цин\n" + -"\n" + -"Правители государства Цин проводили политику изоляции Китая от внешнего мира. Европейская колонизация почти не затронула Китай. Католические миссионеры играли заметную роль при императорском дворе до конца XVII века, после чего христианские церкви были постепенно закрыты, а миссионеры — высланы из страны. В середине XVIII века была ликвидирована торговля с европейцами, за исключением одного порта в Кантоне (Гуанчжоу). Опорным пунктом иностранной торговли оставался остров Макао, находившийся под контролем португальцев.\n" + -"\n" + -"В первые два столетия цинской династии Китай, закрытый от повседневных контактов с внешним миром, проявлял себя как сильное независимое государство, осуществляющее экспансию во всех направлениях.\n" + -"\n" + -"Вассалом Китая была Корея. В середине XVIII века в империю вошла Северная (Внешняя) Монголия. В 1757 было уничтожено Джунгарское ханство, и территория его вместе с покорённым к 1760 Восточным Туркестаном была включена в состав Цинской империи под названием Синьцзян («Новая граница»). После ряда походов маньчжуро-китайской армии против Тибета этот район был в конце XVIII века присоединён к Цинской империи. Войны Цинской империи против Бирмы (1765—1769) и Вьетнама (1788—1789) оказались неудачными и закончились поражением цинских войск.\n" + -"\n" + -"Одновременно осуществлялась экспансия на север и северо-восток, что неминуемо привело к конфликту с Россией в Приамурье. В течение двух веков территория Китая увеличилась практически вдвое. Цинская империя обзавелась своего рода буферными зонами — Маньчжурией, Монголией, Тибетом, Синьцзяном — которые охраняли китайские земли.\n" + -"\n" + -"В цинском Китае любые официальные представители иностранных государств рассматривались исключительно как представители вассальных государств — реальных или потенциальных.\n" + -"\n" + -"[править] Цинский Китай и Россия\n" + -"\n" + -" Основная статья: Российско-китайские отношения\n" + -"\n" + -"Первые шаги по установлению русско-китайских отношений были предприняты Россией в конце периода Мин (миссия И. Петлина в 1618—1619), но основные миссии (Фёдора Байкова в 1654—1657, Николая Спафария в 1675—1678 и др.) последовали уже в цинский период. Параллельно с миссиями шло продвижение на восток русских казаков — походы первопроходцев Василия Пояркова (1643—1646) и Ерофея Хабарова (1649—1653) положили начало освоению русскими людьми Приамурья и привели к присоединению его к России, в то время как маньчжуры считали эти районы своей вотчиной.\n" + -"\n" + -"В середине XVII века на обоих берегах Амура уже существовали русские крепости-остроги (Албазинский, Кумарский и др.), крестьянские слободы и пашни. В 1656 было образовано Даурское (позднее — Албазинское) воеводство, в которое входила долина Верхнего и Среднего Амура по обоим берегам.\n" + -"\n" + -"Хотя граница империи Цин тогда проходила чуть севернее Ляодунского полуострова («Ивовый палисад»), в 1650-е годы и позднее Цинская империя попыталась военной силой захватить русские владения в бассейне Амура и предотвратить принятие местными племенами российского подданства. Маньчжурское войско на какое-то время вытеснило казаков из крепости Албазин. Вслед за миссиями Фёдора Байкова и Николая Спафария Россия направила в 1686 к пограничным властям на Амуре полномочное посольство Фёдора Головина для мирного урегулирования конфликта.\n" + -"\n" + -"Переговоры велись в окружении многотысячной маньчжурской армии. С китайской стороны в переговорах участвовали миссионеры-иезуиты, противившиеся соглашению Китая с Россией, что ещё более осложняло обстановку. Китай отказался определить русско-китайскую границу по Амуру, потребовав себе всё Албазинское воеводство, всё Забайкалье, а впоследствии — вообще все земли к востоку от Лены.\n" + -"\n" + -"Угрожая захватить Нерчинск штурмом, цинские представители вынудили Головина согласиться на уход русских с Верхнего и Среднего Амура. По Нерчинскому договору Россия была вынуждена уступить Цинской империи свои владения по правому берегу р. Аргунь и на части левого и правого берегов Амура. Казаки были обязаны разрушить и оставить Албазин. Вследствие разночтений в текстах договора, составленных каждой из сторон, однако, большая территория оказалась неразграниченной и фактически превратилась в буферную зону между двумя государствами. Разграничение между Россией и Китаем в пределах этой зоны завершилось в XIX веке. Окончательно граница России с Китаем на Дальнем Востоке была определена Айгуньским (1858) и Пекинским (1860) договорами; она прошла по рекам Амур и Уссури через озеро Ханка и горные хребты до р. Туманьцзян; русско-китайское территориальное разграничение в Центральной Азии было завершено к середине 1890-х.\n" + -"\n" + -"[править] Опиумные войны\n" + -"Территория собственно Китая в 1875\n" + -"Территория собственно Китая в 1875\n" + -"\n" + -"К концу XVIII века торговля Китая с внешним миром вновь начала расширяться. Китайский шёлк, фарфор, чай и другие товары пользовались большим спросом в Европе, но китайцы отказывались что-либо покупать у европейцев, так что тем приходилось платить серебром за китайские товары. Тогда англичане начали ввозить в Китай опиум — в основном контрабандой из Индии — и вскоре приобщили к курению опиума местное население, особенно в приморских районах. Ввоз опиума постоянно возрастал и стал подлинным бедствием для страны, что привело к серии Опиумных войн в середине XIX века. Поражение в этих войнах привело к постепенному превращению Китая в фактическую полуколонию европейских держав.\n" + -"\n" + -"[править] Японо-китайская война 1894—1895 годов\n" + -"\n" + -"В 1874 году Япония захватила Формозу, однако вынуждена была покинуть её по требованию Англии. Тогда Япония обратила свои усилия на Корею, находившуюся в вассальной зависимости от Китая и Манчжурию. В июне 1894 по просьбе корейского правительства Китай направил войска в Корею для подавления крестьянского восстания. Воспользовавшись этим предлогом, Япония также направила сюда свои войска, после чего потребовала от корейского короля проведения «реформ», означавших фактически установление в Корее японского контроля.\n" + -"\n" + -"В ночь на 23 июля при поддержке японских войск в Сеуле был организован правительственный переворот. Новое правительство 27 июля обратилось к Японии с «просьбой» об изгнании китайских войск из Кореи. Однако ещё 25 июля японский флот уже без объявления войны начал военные действия против Китая; официальное объявление войны последовало только 1 августа 1894. Началась Японо-китайская война\n" + -"\n" + -"В ходе войны превосходство японской армии и флота привело к крупным поражениям Китая на суше и на море (под Асаном, июль 1894; под Пхеньяном, сентябрь 1894; при Цзюляне, октябрь 1894).\n" + -"\n" + -"С 24 октября 1894 военные действия перешли на территорию Северо-Восточного Китая. К марту 1895 японские войска захватили Ляодунский полуостров, Вэйхайвэй, Инкоу, под угрозой находился Мукден.\n" + -"\n" + -"17 апреля 1895 в Симоносеки представители Японии и Китая подписали унизительный для Китая Симоносекский договор.\n" + -"\n" + -"[править] Тройственная интервенция\n" + -"\n" + -"Условия, навязанные Японией Китаю, привели к так называемой \"тройственной интервенции\" России, Германии и Франции - держав, которые к этому времени уже поддерживали обширные контакты с Китаем и поэтому восприняли подписанный договор как наносящий ущерб их интересам. 23 апреля 1895 Россия, Германия и Франция одновременно, но по отдельности обратились к японскому правительству с требованием отказа от аннексии Ляодунского полуострова, которая могла бы привести к установлению японского контроля над Порт-Артуром, в то время как Николай II, поддерживаемый западными союзниками, имел собственные виды на Порт-Артур как незамерзающий порт для России. Германская нота была наиболее жесткой, даже оскорбительной для Японии.\n" + -"\n" + -"Японии пришлось уступить. 10 мая 1895 года японское правительство заявило о возвращении Китаю Ляодунского полуострова, правда, добившись увеличения суммы китайской контрибуции на 30 миллионов таэлей.\n" + -"\n" + -"[править] Успехи русской политики в Китае\n" + -"\n" + -"В 1895 году Россия предоставила Китаю заём в 150 миллионов рублей под 4% годовых. Договор содержал обязательство Китая не соглашаться на иностранный контроль над своими финансами, если в нём не будет участвовать Россия. В конце 1895 года по инициативе Витте был основан Русско-Китайский банк. 3 июня 1896 года в Москве был подписан русско-китайский договор об оборонительном союзе против Японии. 8 сентября 1896 года между китайским правительством и Русско-Китайским банком был подписан концессионный договор о сроительстве Китайской Восточной железной дороги. Общество КВЖД получало полосу земли вдоль дороги, которая переходила под его юрисдикцию. В марте 1898 года был подписан русско-китайский договор об аренде Россией Порт-Артура и Ляодунского полуострова.\n" + -"\n" + -"[править] Захват Цзяочжоу Германией\n" + -"\n" + -"В августе 1897 года Вильгельм II посетил Николая II в Петергофе и добился согласия на устройство немецкой военно-морской базы в Цзяочжоу (в тогдашнем варианте транскрипции - \"Киао-Чао\"), на южном побережье Шаньдуна. В начале ноября в Шаньдуне китайцами были убиты германские миссионеры. 14 ноября 1897 года немцы высадили десант на побережье Цзяочжоу и захватили его. 6 марта 1898 года было подписано германо-китайское соглашение, по которому Китай арендовал Германии Цзяочжоу сроком на 99 лет. Одновременно китайское правительство предоставило Германии концессию на постройку двух железных дорог в Шаньдуне и ряд горных концессий в этой провинции.\n" + -"\n" + -"[править] Сто дней реформ\n" + -"\n" + -"Непродолжительный период реформ начался 11 июня 1898 с издания маньчжурским императором Цзай Тянем (название годов правления — Гуансюй) указа «Об установлении основной линии государственной политики». Цзай Тянь привлек группу молодых реформаторов — учеников и единомышленников Кан Ювэя для разработки серии указов о реформах. В общей сложности было издано свыше 60 указов, которые касались системы образования, строительства железных дорог, заводов и фабрик, модернизации сельского хозяйства, развития внутренней и внешней торговли, реорганизации вооружённых сил, чистки государственного аппарата и т.д. Период радикальных реформ окончился 21 сентября того же года, когда вдовствующая Императрица Цыси произвела дворцовый переворот и отменила реформы.\n" + -"\n" + -"[править] XX век\n" + -"\n" + -"[править] Боксерское восстание\n" + -"\n" + -"В мае 1900 года в Китае началось большое восстание, получившее название боксерского или Ихэтуаньского восстания. 20 июня в Пекине был убит германский посланник Кеттелер. Вслед за этим восставшими были осаждены дипломатические миссии, находившиеся в особом квартале Пекина. Было осаждено также здание католического кафедрального собора Петанг (Бейтанг). Начались массовые убийства \"ихэтуанями\" китайцев-христиан, в том числе было убито 222 православных китайца. 21 июня 1900 года Императрица Цыси объявила войну Великобритании, Германии, Австро-Венгрии, Франции, Италии, Японии, США и России. Великие державы согласились о совместных действиях против восставших. Главнокомандующим экспедиционными силами был назначен германский генерал Вальдерзее. Однако, когда он прибыл в Китай, Пекин был уже освобожден небольшим передовым отрядом под командованием русского генерала Линевича. Русская армия заняла Манчжурию.\n" + -"\n" + -"[править] Русско-японская война\n" + -"\n" + -"8 февраля 1904 года началась Русско-японская война за контроль над Манчжурией и Кореей. Война, шедшая на территории Китая была для России неудачной, по её результатам, Россия была вынуждена уступить Японии Порт-Артур и Ляодунский полуостров с частью построенной к тому времени КВЖД.\n" + -"\n" + -"[править] Смерть Цыси\n" + -"\n" + -"14 декабря 1908 года в один день умерли Императрица Цыси и Император Гуансюй, которого Цыси ранее отстранила от власти. Возможно, Гуансюй был отравлен, так как Цыси не хотела, чтобы он её пережил. На престол взошёл Император Пу И, которому было два года. Регентом назначен его отец князь Чунь, однако вскоре власть перешла к его брату.\n" + -"\n" + -"[править] Аннексия Кореи\n" + -"\n" + -"В 1910 году Япония аннексировала Корею, хотя японские войска там находились с начала Русско-японской войны.\n" + -"\n" + -"[править] Революция 1911 года и создание Китайской Республики\n" + -"\n" + -"В 1911 году в Китае началось Учанское восстание. Оно стало началом Синьхайской революции (1911—1913) в Китае, в результате которой было свергнута маньчжурская династия Цин и провозглашено создание Китайской республики.\n" + -"\n" + -"После падения монархии правитель Монголии отказался повиноваться республике и отделился от Китая. 3 ноября им было заключено соглашение с Россией. Англия воспользовалась внутренней борьбой в Китае для превращения Тибета в свою зону влияния. Тибет поднялся на борьбу и заставил китайский гарнизон покинуть страну. Все последующие попытки китайцев восстановить там свою власть пресекались Британией. Россия согласилась считать Тибет английской сферой влияния, а Англия признала русские интересы в независимой (внешней) Монголии.\n" + -"\n" + -"12 февраля 1912 года Император Пу И отрекся от престола. К власти пришел генерал Юань Шикай премьер-министр и главнокомандующий армией. Вскоре он был провозглашен президентом Китая.\n" + -"\n" + -"В 1913 году произошла \"Вторая революция\". Юань Шикай подавил разрозненные выступления в центральных и южных провинциях. В стране устанавливается военная диктатура Юань Шикая, основателя группировки бэйянских (северных) милитаристов. Сунь Ятсен вынужден эмигрировать за границу.\n" + -"\n" + -"[править] Первая мировая война\n" + -"\n" + -"После начала первой мировой войны китайское правительство объявляет о своем нейтралитете и просит воюющие державы не переносить военные действия на территорию Китая, в том числе и на \"арендованные\" державами китайские земли. Однако 22 августа 1914 года Япония объявила о своем состоянии войны с Германией и высадила 30-тысячную армию севернее Циндао - центра немецкой колонии в провинции Шаньдун. После двухмесячной военной кампании Япония захватила германские владения в Шаньдуне, а также распространила свой контроль на всю территорию провинции.\n" + -"\n" + -"В 1915 году китайские принцы голосуют за установленче в Китае монархии с Юанем Шикаем на императорском троне. Распускается парламент. Объявляется монархия. Это вызывает ряд восстаний в провинциях Китая. Независимость от Пекина объявляют провинции Юньнань, Гуйчжоу и Гуанси. Потом отделяются Гуандун, Чжэцзян, Сычуань и Хунань.\n" + -"\n" + -"22 марта 1916 года умирает Юань Шикай.\n" + -"\n" + -"[править] Эра милитаристов\n" + -"\n" + -"После смерти Юань Шикая в Китае начали оформляться многочисленные военно-феодальные вотчины различных милитаристских группировок. Наиболее крупной была бэйянская (северная), делившаяся на фэнтяньскую (маньчжурскую) во главе с бывшим главарем шайки хунхузов Чжан Цзолинем, чжилийскую во главе с генералом Фэн Гочжаном, и аньхойскую во главе с генералом Дуань Цижуем. В провинции Шаньси господствовал милитарист Янь Сишань, заигрывавший с бэйянской группировкой, а в провинции Шэньси - генерал Чэнь Шуфань. Лагерь юго-западных милитаристов состоял из двух крупных группировок: юньнаньской во главе с генералом Тан Цзияо, и гуансийской во главе с генералом Лу Жунтином.\n" + -"\n" + -"Под контролем фэнтяньской группировки находились провинции Хэйлунцзян, Гирин и Фэнтянь, под контролем чжилийской - Шаньдун, Цзянсу, Чжэцзян, Фуцзянь, Цзянси, Хунань, Хубэй и часть Чжили. Фэнтяньская и аньхойская клики финансировались Японией, чжилийская - Англией и США. Ли Юаньхун был ставленником юго-западных милитаристов. Вице-президент генерал Фэн Гочжан ориентировался на Англию и США, а премьер-министр генерал Дуань Цижуй держался прояпонского направления. В 1917 году Япония начала предоставлять Дуань Цижую крупные займы, получая за них все новые и новые уступки, в том числе концессии в Маньчжурии.\n" + -"\n" + -"[править] Победа Гоминьдана\n" + -"\n" + -"Партия Гоминьдан была создана в 1912 году в провинции Гуанчжоу. Примерно в тоже время, в 1921 г., была создана и Китайская коммунистическая партия, малочисленная и не пользовавшаяся в тот период особой популярностью. 8 сентября 1923 в Китай по просьбе Сунь Ятсена, который просил прислать ему человека с которым он мог бы говорить по-английски без переводчика, прибыл агент коминтерна М.М.Бородин, ставший политическим советником ЦИК Гоминьдана и советником Сунь Ятсена. Он организовал сотрудничество между Гоминьданом и КПК. 20 января 1924 г. проходит I Всекитайский съезд Гоминьдана в Гуанчжоу. На съезде был принят курс на союз с китайскими коммунистами и СССР. 16 июня учреждена Военная академия Вампу под руководством Чан Кайши. В первый набор было зачислено 400, во второй - 500, в третий - 800 и четвертый - около 2600 слушателей; при школе было создано два учебных полка. В академию Вампу прибыла большая группа советских военных советников. В октябре 1924 г. в Гуанчжоу на должность главного военного советника прибыл Василий Константинович Блюхер.\n" + -"В марте 1926 Чан Кайши осуществил в Кантоне военный переворот, изгнал из города коммунистов, а спустя три месяца был избран председателем Гоминьдана и главнокомандующим вооруженными войсками. Добившись высокой власти, Чан Кайши пригласил немецких советников во главе бывшим генералом рейхсвера фон Сектом.\n" + -"В качестве советников у Чан Кайши действовали офицеры Германии:\n" + -"\n" + -" * полковник В.Бауэр (друг Гитлера и ученик Людендорфа)\n" + -" * нацист подполковник Крибель\n" + -" * генерал-лейтенант Ветцель\n" + -" * генерал Фалькенхаузен\n" + -"\n" + -"Гоминьдановцы старательно перенимали опыт нацистов по наведению порядка в стране. Китайские офицеры в организованном порядке направлялись на обучение в Германию.\n" + -"В 1926 Национально-революционная армия Китая Чан Кайши предприняла так называемый Великий Северный поход. В течение шести месяцев непрерывных боев от власти местных военных правителей были освобождены центральные районы Китая.\n" + -"В начале 1927 Чан Кайши пошел на открытый развал единого фронта ГМД и КПК: его войска начали разоружение шанхайских рабочих отрядов и дружин, начались массовые аресты и казни профсоюзных деятелей и коммунистов. В ответ на это коммунисты организовали 1 августа в городе Наньчан восстание части гоминьдановских войск, вошедшее в историю Китая как \"Наньчанское восстание\".\n" + -"В декабре 1927 было поднято коммунистическое восстание в Кантоне, которое гоминьдановцы жесточайшим образом подавили после четырех дней кровопролитных боев.\n" + -"После нескольких военных операций к 1927 году войска Гоминьдана контролировали большую часть территории Китая.\n" + -"\n" + -"[править] Японская оккупация и Вторая мировая война\n" + -"\n" + -"Осенью 1931 Япония напала на Китай. 18 сентября после серии провокаций японцы перешли в наступление, за короткое оккупировав всю Манчжурию. В марте 1932 здесь было провозглашено прояпонское марионеточное государство Маньчжоу-Го, которое возглавил Пу И – последний отпрыск маньчжурской династии Цин, свергнутой в годы Синьхайской революции.\n" + -"\n" + -"В этих сложных условиях Чан Кайши был вынужден бороться одновременно с тремя врагами: внешней японской агрессией, спорадическими бунтами отдельных милитаристов на местах, и вооружёнными силами КПК, претендовавшими на захват власти в стране. Он выбрал политику компромисса с японцами, с милитаристами вёл дела в зависимости от конкретных обстоятельств, с коммунистами же никакой компромисс был невозможен. В 1934 году основные силы КПК были блокированы в провинции Цзянси. В этих сложных условиях руководство КПК сумело организовать прорыв, и после многомесячного марша привело войска на Северо-Запад страны в т.н. \"особый район\" с центром в городе Яньань; эти события вошли в историю КПК как \"Великий поход\". Чан Кайши планировал продолжать борьбу с коммунистами и там, но тут взбунтовался ряд его генералов, считавших более приоритетной задачей примирение с коммунистами и совместную борьбу с японской агрессией. В результате \"Сианьского инцидента\" было подписано соглашение о создании единого фронта между КПК и Гоминьданом.\n" + -"\n" + -"7 июля 1937 конфликтом у моста Лугоуцяо недалеко от Пекина началась «большая» война. С этого момента, по мнению китайских историков, начинается Вторая мировая война.\n" + -"\n" + -"\n" + -" Этот раздел не завершён. Вы можете помочь проекту, исправив и дополнив его.\n" + -"Японская оккупация (1940)\n" + -"Японская оккупация (1940)\n" + -"\n" + -"[править] Создание Китайской Народной Республики\n" + -"\n" + -"Разгром милитаристской Японии в августе-сентябре 1945 завершил Вторую мировую войну, освободив от порабощения страны Азиатско-Тихоокеанского региона. В Китае шла ожесточенная гражданская война.\n" + -"Советская Красная Армия полностью оккупировала Манчжурию, приняв капитуляцию фактически у всей японской Квантунской армии. К тому времени на территории Манчжурии действовали лишь разрозненные партизанские отряды и разведгруппы китайских партизан.\n" + -"В сентябре 1945 начала осуществляться массовая переброска вооруженных сил КПК из северного и Восточного Китая на северо-восток страны. К ноябрю туда перешли около 100 тысяч бойцов 8-ой и 4-ой армий. Из этих частей, партизанских формирований и местных жителей была сформирована Объединенная демократическая армия (ОДА) Северо-Востока, которая стала костяком Народно-освободительной армии Китая.\n" + -"Советская армия находилась в Манчжурии вплоть до мая 1946. За это время советская сторона помогла китайским коммунистам организовать, обучить и вооружить новые китайские войска. В результате, когда гоминьдановские войска начали в апреле 1946 входить в Манчжурию, они, к своему удивлению, обнаружили там не разрозненные партизанские отряды, а современную дисциплинированную армию коммунистов, вовсе не намеревавшуюся самораспускаться.\n" + -"Ситуация в Манчжурии стала шоком и для Белого дома. Первый отряд вооруженных сил США в составе двух дивизий морской пехоты высадился в Китае в районе Тяньцзиня еще 30 сентября 1945. К осени в Китае находилось уже свыше 100 тысяч американских военнослужащих.\n" + -"Американские экспедиционные войска, главным образом части морской пехоты, старались не вмешиваться в отношения между КПК и ГМД. Однако они активно взаимодействовали с вооруженными силами легитимного китайского правительства - войсками Гоминьдана, прежде всего в приеме капитуляции японских войск в Северном и Центральном Китае, а также в поддержании порядка и охране различных важных объектов в китайских городах.\n" + -"С самого начала командование войск ГМД допустило стратегическую ошибку: несмотря на успехи первых столкновений с ОДА в Манчжурии, военные действия в Северо-Восточном Китае не были доведены до конца, ГМД направил свои усилия не на борьбу с регулярными войсками КПК, а на уничтожение партизанского движения и партизанских баз в Центральном, Восточном и Северном Китае.\n" + -"Укрепившись с помощью советской стороны, при поддержке местного населения, войска Мао Цзэдуна к осени 1948 достигли численности в 600 тысяч человек. С 1 ноября ОДА стала именоваться 4-й Полевой армией. возглавили ее Линь Бяо.\n" + -"В ноябре 1948 4-я полевая армия перешла к решительным боевым действиям против гоминьдановцев. За короткие сроки было разбито 52 дивизии Чан Кайши, еще 26 дивизий, обученных военными инструкторами США, перешли на сторону КПК. В начале 1949 армия вошла в Северный Китай, где объединилась с войсками 8-й армии КПК. 15 января был взят Тяньцзинь, 22 января - Пекин.\n" + -"К весне 1949 вооруженные силы КПК освободили от гоминьдановцев весь Китай севернее реки Янцзы и восточнее провинции Ганьсу. К концу гражданской войны Народно-освободительная армия представляла собой мощную 4-миллионую армию, крупнейшую в Азии.\n" + -"24 апреля 1949 войска КПК под командованием маршала Лю Бочэна вступили в столицу гоминьдановского Китая - город Нанкин. Само гоминьдановское правительство еще в феврале переехало на юг страны, в Кантон, а затем вместе с остатками верных ему войск - бежало на остров Тайвань.\n" + -"В конце года Народно-освободительная армия Китая уничтожила все основные группировки Гоминьдана на континенте, победоносно завершив тем самым третью гражданскую войну в Китае.\n" + -"1 октября 1949 г. в Пекине была провозглашена Китайская Народная Республика.\n" + -"На следующий же день Советский Союз первым признал КНР и заключил с ней Договор о дружбе, союзе и взаимной помощи. Таким образом, в конце 1949 года родился советско-китайский «монолит» - тот самый, который на многие годы стал кошмаром для Запада.\n" + -"\n" + -"[править] Культурная революция\n" + -"\n" + -"В 1966 году председателем КПК Мао Цзэдуном была начата культурная революция для утверждения маоизма в качестве единственной государственной идеологии и уничтожения политической оппозиции. Было организовано массовое ополчение молодёжи, называвшееся «красногвардейцы». Красногвардейцы занялись преследованием «контререволюционеров» из числа аппарата КПК, интеллигенции и вообще всех, кто мог им не понравиться.\n" + -"\n" + -"[править] Экономическая либерализация\n" + -"\n" + -"После падения \"банды четырех\" власть в стране взяли реформаторы Дэн Сяопин и Ху Яобан, которые в конце 1978 года провозгласили на 3-м пленуме ЦК КПК 11-го созыва политику \"реформ и открытости\". Реальный старт \"Экономической реформе\" был дан на XII съезде КПК (1982 г.). На XIII съезде КПК (1987 г.) было дано подробное толкование теории начального этапа социализма, согласно которой социалистический строй и социалистическая экономическая система - разные вещи, т.е. социалистический политический режим не подразумевает безусловной плановой централизации всей экономики, а позволяет использовать и рыночные механизмы, особенно в паре \"государство-предприятие\". На XIV съезде КПК (1992 г.) был провозглашен курс на построение социалистической рыночной экономической системы с китайской спецификой. Данное изменение идеологии хорошо иллюстрирует высказываение Д.Сяопина: \"Неважно какого цвета кошка - главное, чтобы ловила мышей\".\n" + -"\n" + -"Фактически введение \"Экономической реформы\" означало настоящую \"революцию сверху\", заключавшуюся в постепенном и частичном сворачивании тоталитарной сталинско-маоистской модели жестко централизованной экономики и переводе части отраслей народного хозяйства на рыночные рельсы, но при полностью неизменной политической надстройке в лице монопольно управляющей страной КПК. К концу 70-х исторически слабая экономика Китая \"лежала\" из-за негативных последствий авантюристических кампаний Мао Цзедуна - \"большого скачка\" и \"культурной революции\". От систематического голода в Китае ежегодно страдали практически все 800 млн. крестьян (из миллиардного населения), страна занимала последние места в мире по уровню производства товаров и продовольствия на душу населения. Для решения проблемы голода необходимо было обеспечить стабильный валовый сбор зерна в объеме не менее 400 млн. т в год. Аграрные преобразования были связаны с отменой народной коммуны и заменой ее семейным подрядом и единой коллективной собственностью. Практически все 800 млн. крестьян получили право на свободное сельскохозяйственное производство. В основном была отменена система госзаготовок, освобождены цены на большинство видов сельскохозяйственной продукции. Результатом этих мер стал выход аграрного сектора из застоя, вступление крестьянских хозяйств на путь специализации и повышения товарности. Организованные в деревне по инициативе крестьян волостно-поселковые предприятия позволили обеспечить рост занятости (120 млн. чел.) и повысить жизненный уровень крестьян.Задача обеспечения страны зерном была в основном решена в 80-х. Постепенно в деревне сформировалась двухслойная хозяйственная система на основе сочетания коллективной собственности и семейного подряда.\n" + -"\n" + -"В области промышленной политики правительство Китая, начиная с 1984 года сделало упор концепцию плановой товарной экономики. На практике это означало перевод части отдельных городских предприятий на самоокупаемость. Позже правительство разрешило и подразделениям армии Китая (НОАК) перейти на самообеспечение и заниматься свободным предпринимательством. В соответствии с принципом \"Чжуа Да Фан Сяо\" (\"держать в руках большие предприятия, отпустить маленькие\") многие мелкие госпредприятия получили право изменить не только механизм хозяйствования, но и форму собственности. Это позволило государству сосредоточить силы на улучшении положения крупных предприятий. Четыре города - Шэньчжэнь, Чжухай, Сямынь, Шаньтоу - были объявлены специальными экономическими зонами. Вслед за ними 14 приморских городов, четыре региона в устьях рек Янцзы и Чжуцзян, юго-восточная часть провинции Фуцзянь и регион в районе Бахайского залива стали открытыми экономическими зонами. На острове Хайнань была создана одноименная новая провинция, а сам он стал специальной экономической зоной. Все эти города и районы получили различные инвестиционные и налоговые льготы для привлечения иностранного капитала и технологий, заимствования у иностранных партнеров эффективных методов управления. Быстрое развитие их экономики способствовало эффективному росту в масштабе страны. Характерно, что значительную долю ввозимого капитала на начальном этапе обеспечила китайская диаспора (хуацяо), проживающая преимущественно в странах тихоокеанского бассейна (основные зоны компактного проживания: Гонконг, Макао, Сингапур, Малайзия, США). Успешное проведение политики либерализации в сочетании с жестко проводимой политикой ограничения рождаемости (снижение рождаемости за 20 лет составило не менее 200 млн. человек) позволило создать многоукладную экономику, в которой госпредприятия дают 48% промышленной продукции, коллективные - 38%, частные, в том числе с иностранным участием, - 13,5%. На долю государственной торговли приходится свыше 41% общего розничного оборота, коллективной - почти 28% и частной - 31%. Доля рыночных цен по потребительским товарам достигла 90%, средствам производства - 80%, по сельскохозяйственным продуктам - 85%. Доля видов промышленной продукции, производство которых регулируется государственными директивными планами, снизилась с 95% в 1978 г. до 5% в настоящее время. Удельный вес товаров, ценами которых непосредственно управляет государство, в розничном товарообороте упал с 95 до 6%. Помимо рынка товаров начали создаваться рынки капиталов, машин и оборудования, рабочей силы, других необходимых для производства элементов. ВВП Китая рос в течение 20 лет, начиная с 1985 года в среднем на 9,5% ежегодно. Страна вышла на 1-е место в мире по производству цемента, цветных металлов, хлопчатобумажных тканей, велосипедов (свыше 80 млн.), мотоциклов (21,3 млн.), телевизоров (35 млн.), угля, зерна, хлопка, рапсовых семян, мяса, яиц, на 2-е - химических удобрений, 3-е - сахара, автомобилей (7,3 млн., вкл. 4,6 млн. легковых), 4-е - электроэнергии, 5-е - сырой нефти. По объему ВВП Китай находится на 4-м месте в мире (при расчете по паритетному покупательскому курсу - на 2-м). На его долю приходится 5,4% мирового валового продукта (2006 г.). Золотовалютные резервы страны превысили в 2006 г. триллион долларов США. Положительное сальдо торгового баланса составляет 180 млрд. долларов. Правда, несмотря на такой рекордно длительный и масштабный экономический рост, среднедушевые показатели ВВП Китая остаются еще на относительно низком уровне, ВВП на душу населения в 2005 году составил 7600 долларов (109-110 место в мире рядом с Украиной). В тоже время средний доход горожанина в открытых городах на конец 2006 г. превысил 10000 юаней в месяц. В китайской деревне от 100 до 150 млн. человек не могут найти работу, еще несколько сотен миллионов заняты частично. Официальный уровень безработицы в городах 4,2% (2005 г.).\n" + -"\n" + -"В начале 21-го века Китай превратился в \"мировую фабрику\" куда переводится ряд производств из развитых стран Европы, Северной Америки и Японии. Бурный экономический рост во многом связан с дешевизной рабочей силы, слабым уровнем техники безопасности и низким контролем за экологией. В результате Китай уже стал вторым загрязнителем мировой атмосферы и гидросферы, после гораздо более мощной экономики США, а также вышел в \"лидеры\" по эррозии почвы (особенно в северных областях). Возросший из-за роста авто- и мотопарка уровень импорта Китаем нефти (3,2 млн. баррелей/сут. в 2005-м, 2-е место в мире) приводит в последние годы к росту ее среднемировой цены.\n" + -"\n" + -"В тоже время экономическое и политическое влияние страны в мире в последние годы постоянно возрастает. Так Китаю в 1997-м и 1999-и годах были возращены \"арендованные\" еще у Поднебесной империи территории Гонконг (Сянган) и Макао (Аомынь). Постоянно возрастает уровень обороноспособности страны и техническое оснащение НОАК, чему в немалой степени способствует и РФ, поставляющая в Китай самые современные виды вооружения.\n" + -"\n" + -"Либерализация экономики КНР пока не сопровождается смягчением политического режима. В стране продолжаются политические репрессии против оппозиции, особенно масштабно реализованные во время \"событий на площади Тяньаньмэнь\" в мае 1989-го, жестко контролируются СМИ, включая Интернет. В тоже время в последние годы предпринят ряд важных изменений устава КПК, например, в партию разрешено вступать представителям предпринимательских кругов, введена ротация высших кадров руководства Партии. Во внутренней политике сняты все ограничения на рост личных состояний и разрешено владение личными автомобилями. В тоже время страна лидирует в мире по количеству смертных казней (более 7000 в год). Несмотря на такую суровую практику, уровень преступности и коррупции постоянно возрастает.\n" + -"\n" + -"Политика либерализации дала сенсационно высокие результаты, перевела экономику Китая на иной качественный уровень. При этом развитие экономики идет неравномерно по регионам, накапливаются социальные диспропорции, а экологическим аспектам уделяется недостаточное внимание, что уже затрагивает не только территорию Китая, но и интересы сопредельных с ним стран.\n" + -"\n" + -"[править] См. также\n" + -"\n" + -" * Китай (цивилизация)\n" + -" * События на площади Тяньаньмэнь 1989 года\n" + -"\n" + -"[править] Литература\n" + -"\n" + -" * Васильев Л.С. Древний Китай: в 3 т. Т. 3. Период Чжаньго (V–III вв. до н.э.). М.: Восточная литература, 2006. ISBN 502018103X\n" + -" * Непомнин О.Е. История Китая: Эпоха Цин. XVII – начало XX века. М.: Восточная литература, 2005. ISBN 5020184004\n"; - -var devanagari = -"भारत\n" + -"विकिपीडिया, एक मुक्त ज्ञानकोष से\n" + -"Jump to: navigation, search\n" + -" यह लेख एक निर्वाचित लेख उम्मीदवार है। अधिक जानकारी के लिए और इस लेख को निर्वाचित लेख बनने के लिए क्या आवश्यकताएँ हैं यह जानने के लिए कृपया यहाँ देखें।\n" + -"भारत गणराज्य\n" + -"Flag of भारत Coat of arms of भारत\n" + -"ध्वज कुलचिह्न\n" + -"राष्ट्रवाक्य: \"सत्यमेव जयते\" (संस्कृत)\n" + -"\n" + -"सत्य ही विजयी होता है\n" + -"राष्ट्रगान: जन गण मन\n" + -"भारत की स्थिति\n" + -"राजधानी नई दिल्ली\n" + -"८७, ५९०) 28°34′ N 77°12′ E\n" + -"सबसे बड़ा शहर मुम्बई\n" + -"राजभाषा(एँ) हिन्दी, अंग्रेज़ी तथा अन्य भारतीय भाषाएं\n" + -"सरकार\n" + -"राष्ट्रपति\n" + -"प्रधानमंत्री\n" + -" गणराज्य\n" + -"प्रतिभा पाटिल\n" + -"डॉ मनमोहन सिंह\n" + -"ब्रिटिश राज से स्वतंत्रता\n" + -" १५ अगस्त, १९४७\n" + -"क्षेत्रफल\n" + -" - कुल\n" + -" \n" + -" - जलीय (%) \n" + -"३२, ८७, ५९० km² (सातवां)\n" + -"१२,२२,५५९ sq mi \n" + -"९.५६\n" + -"जनसंख्या\n" + -" - २००५ अनुमान\n" + -" - २००१ जनगणना\n" + -" - जनसंख्या का घनत्व \n" + -"१,१०,३३,७१,००० (द्वितीय)\n" + -"१,०२,७०,१५,२४८\n" + -"३२९/km² (३१ वीं)\n" + -"८५२/sq mi \n" + -"सकल घरेलू उत्पाद (जीडीपी) (पीपीपी)\n" + -" - कुल\n" + -" - प्रतिव्यत्ति २००५ estimate\n" + -"$३.६३३ महासंख (चौथी GDP_PPP_per_capita = $३,३२०)\n" + -"{{{GDP_PPP_per_capita}}} (१२२ वीं)\n" + -"मानव विकास संकेतांक (एइचडीआइ) ०.६११ (१२६ वीं) – medium\n" + -"मुद्रा भारतीय रुपया (आइएनआर)\n" + -"समय मण्डल\n" + -" - ग्रीष्म ऋतु (डेलाइट सेविंग टाइम) आइएसटी (UTC+५:३०)\n" + -"अब्सर्व्ड नहीं है (UTC+५:३०)\n" + -"इंटरनेट टॉप लेवेल डोमेन .आइएन\n" + -"दूरभाष कोड +९१\n" + -"\n" + -"भारत गणराज्य, पौराणिक जम्बुद्वीप, दक्षिण एशिया में स्थित एक देश है। यह भारतीय उपमहाद्वीप का सबसे बड़ा देश है। भारत का भौगोलिक फैलाव 8० 4' से 37० 6' उत्तरी अक्षांश तक तथा 68० 7' से 97० 25'पूर्वी देशान्तर तक है । भारत का क्षेत्रफल ३२,८७,२६३ वर्ग कि. मी. हैं | भारत का विस्तार उत्तर से दक्षिण तक ३,२१४ कि. मी. और पूर्व से पश्चिम तक २,९३३ कि. मी. हैं । भारत की समुद्र तट रेखा ७५१६.६ किलोमीटर लम्बी है। भारत, भौगोलिक दृष्टि से विश्व का सातवाँ सबसे बड़ा और जनसँख्या के दृष्टिकोण से दूसरा बड़ा देश है | भारत के पश्चिम में पाकिस्तान , उत्तर-पूर्व मे चीन, नेपाल, और भूटान और पूर्व में बांग्लादेश और म्यांमार देश स्थित हैं। हिन्द महासागर में इसके दक्षिण पश्चिम में मालदीव, दक्षिण में श्रीलंका और दक्षिण-पूर्व में इंडोनेशिया है। भारत उत्तर-पश्चिम में अफ़्ग़ानिस्तान के साथ सीमा का दावा करता है। इसके उत्तर में हिमालय पर्वत है। दक्षिण में हिन्द महासागर है। पूर्व में बंगाल की खाड़ी है। पश्चिम में अरब सागर है। भारत में कई बड़ी नदियाँ है। गंगा नदी भारतीय सभ्यता मै बहुत पवित्र मानी जाती है। अन्य बड़ी नदियाँ ब्रह्मपुत्र, यमुना, गोदावरी, कावेरी, कृष्णा, चम्बल, सतलज, बियास हैं ।\n" + -"\n" + -"भारत की १०० करोड़ (१ अरब) से अधिक जनसंख्या, चीन के बाद विश्व में सबसे अधिक है। यह विश्व का सबसे बड़ा लोकतंत्र है। यहाँ ३०० से अधिक भाषाएँ बोली जाती है (साइटेसन चाहिए)। यह एक बहुत प्राचीन सभ्यता की भूमि है।\n" + -"\n" + -"भारत विश्व की दसवीं सबसे बड़ी अर्थव्यवस्था है, किन्तु हाल में भारत ने काफी प्रगति की है, और ताज़ा स्थिति में भारत विश्व में तीसरे, चौथे स्थान पर होने का दावा करता है (साइटेसन चाहिए)। भारत भौगोलिक क्षेत्रफल के आधार पर विश्व का सातवाँ सबसे बड़ा राष्ट्र है। यह विश्व की कुछ प्राचीनतम सभ्यताओं का पालना रहा है जैसे - सिन्धु घाटी सभ्यता , और महत्वपूर्ण ऐतिहासिक व्यापार पथों का अभिन्न अंग है। विश्व के चार प्रमुख धर्म : हिन्दू , बौध , जैन तथा सिख भारत में प्रतिपादित हुए | १९४७ में स्वतंत्रता प्राप्ति से पूर्व ब्रिटिश भारत के रूप में ब्रिटिश साम्राज्य के प्रमुख अंग भारत ने विगत २० वर्ष में सार्थक प्रगति की है, विशेष रूप से आर्थिक और सैन्य | भारतीय सेना एक क्षेत्रिय शक्ति और विश्वव्यापक शक्ति है।\n" + -"\n" + -"भारत की राजधानी नई दिल्ली है। भारत के अन्य बड़े महानगर मुम्बई (बम्बई), कोलकाता (कलकत्ता) और चेन्नई (मद्रास) हैं।\n" + -"\n" + -"\n" + -"अनुक्रम\n" + -"[छुपाएं]\n" + -"\n" + -" * १ नाम\n" + -" * २ इतिहास\n" + -" * ३ सरकार\n" + -" * ४ राजनीति\n" + -" * ५ राज्य और केन्द्रशासित प्रदेश\n" + -" * ६ भूगोल और मौसम\n" + -" * ७ अर्थव्यवस्था\n" + -" * ८ जनवृत्त\n" + -" * ९ संस्कृति\n" + -" * १० यह भी देखें\n" + -" * ११ बाहरी कड़ियाँ\n" + -"\n" + -"[संपादित करें] नाम\n" + -"मुख्य लेख: भारत नाम की उत्पत्ति\n" + -"\n" + -"भारत के दो आधिकारिक नाम है हिन्दी में भारत और अंग्रेज़ी में इन्डिया (India)। इन्डिया नाम की उत्पत्ति सिन्धु नदी के फारसी नाम से हुई। भारत नाम एक प्राचीन हिन्दू राजा भरत, जिनकी कथा महाभारत में है, के नाम से लिया गया है। एक तीसरा नाम हिन्दुस्तान (उत्पत्ति फारसी) या हिन्दुओं की भूमि मुगल काल से प्रयोग होता है यद्यपि इसका समकालीन उपयोग कम है।\n" + -"\n" + -"[संपादित करें] इतिहास\n" + -"मुख्य लेख: भारतीय इतिहास\n" + -"\n" + -"पाषाण युग भीमबेटका मध्य प्रदेश की गुफाएं भारत में मानव जीवन का प्राचीनतम प्रमाण है। प्रथम स्थाई बस्तियों ने ९००० वर्ष पूर्व स्वरुप लिया। यही आगे चल कर सिन्धु घाटी सभ्यता में विकसित हुई , जो २६०० ईसवी और १९०० ईसवी के मध्य अपने चरम पर थी। लगभग १६०० ईसापूर्व आर्य भारत आए और उत्तर भारतीय क्षेत्रों में वैदिक सभ्यता का सूत्रपात किया । इस सभ्यता के स्रोत वेद और पुराण हैं। यह परम्परा कई सहस्र वर्ष पुरानी है। इसी समय दक्षिण बारत में द्रविड़ सभ्यता का विकास होता रहा। दोनो जातियों ने एक दूसरे की खूबियों को अपनाते हुए भारत में एक मिश्रित संस्कृति का निर्माण किया।\n" + -"\n" + -"५०० ईसवी पूर्व कॆ बाद, कई स्वतंत्र राज्य बन गए। उत्तर में मौर्य राजवंश, जिसमें बौद्ध महाराजा अशोक सम्मिलित थे, ने भारत के सांस्कृतिक पटल पर उल्लेखनीय छाप छोड़ी। १८० ईसवी के आरम्भ से, मध्य एशिया से कई आक्रमण हुए, जिनके परिणामस्वरूप उत्तरी भारतीय उपमहाद्वीप में यूनानी, शक, पार्थी और अंततः कुषाण राजवंश स्थापित हुए | तीसरी शताब्दी के आगे का समय जब भारत पर गुप्त वंश का शासन था, भारत का \"स्वर्णिम काल\" कहलाया।\n" + -"तीसरी शताब्दी में सम्राट अशोक द्वारा बनाया गया मध्य प्रदेश में साँची का स्तूप\n" + -"तीसरी शताब्दी में सम्राट अशोक द्वारा बनाया गया मध्य प्रदेश में साँची का स्तूप\n" + -"\n" + -"दक्षिण भारत में भिन्न-भिन्न समयकाल में कई राजवंश चालुक्य, चेर, चोल, पल्लव तथा पांड्य चले | विज्ञान, कला, साहित्य, गणित, खगोल शास्त्र, प्राचीन प्रौद्योगिकी, धर्म, तथा दर्शन इन्हीं राजाओं के शासनकाल में फ़ले-फ़ूले |\n" + -"\n" + -"१२वीं शताब्दी के प्रारंभ में, भारत पर इस्लामी आक्रमणों के पश्चात, उत्तरी व केन्द्रीय भारत का अधिकांश भाग दिल्ली सल्तनत के शासनाधीन हो गया; और बाद में, अधिकांश उपमहाद्वीप मुगल वंश के अधीन । दक्षिण भारत में विजयनगर साम्राज्य शक्तिशाली निकला। हालांकि, विशेषतः तुलनात्मक रूप से, संरक्षित दक्षिण में अनेक राज्य शेष रहे अथवा अस्तित्व में आये।\n" + -"\n" + -"१७वीं शताब्दी के मध्यकाल में पुर्तगाल, डच, फ्रांस, ब्रिटेन सहित अनेकों यूरोपीय देशों, जो भारत से व्यापार करने के इच्छुक थे, उन्होनें देश की शासकीय अराजकता का लाभ प्राप्त किया। अंग्रेज दूसरे देशों से व्यापार के इच्छुक लोगों को रोकने में सफल रहे और १८४० तक लगभग संपूर्ण देश पर शासन करने में सफल हुए। १८५७ में ब्रिटिश इस्ट इंडिया कम्पनी के विरुद्ध असफल विद्रोह, जो कि भारतीय स्वतन्त्रता के प्रथम संग्राम से जाना जाता है, के बाद भारत का अधिकांश भाग सीधे अंग्रेजी शासन के प्रशासनिक नियंत्रण में आ गया।\n" + -"कोणार्क चक्र - १३वीं शताब्दी में बने उड़ीसा के सूर्य मन्दिर में स्थित, यह दुनिया के सब से प्रसिद्घ ऐतिहासिक स्थानों में से एक है।\n" + -"कोणार्क चक्र - १३वीं शताब्दी में बने उड़ीसा के सूर्य मन्दिर में स्थित, यह दुनिया के सब से प्रसिद्घ ऐतिहासिक स्थानों में से एक है।\n" + -"\n" + -"बीसवीं शताब्दी के प्रारंभ में एक लम्बे समय तक स्वतंत्रता प्राप्ति के लिये विशाल अहिंसावादी संघर्ष चला, जिसका नेतृत्‍व महात्मा गांधी, जो कि आधिकारिक रुप से आधुनिक भारत के राष्ट्रपिता से संबोधित किये जाते हैं, ने किया। ईसके साथ - साथ चंद्रशेखर आजाद, सरदार भगत सिंह, सुख देव, राजगुरू, नेताजी सुभाष चन्द्र बोस आदि के नेतृत्‍व मे चले क्रांतिकारी संघर्ष के फलस्वरुप 15 अगस्त, 1947 भारत ने अंग्रेजी शासन से पूर्णतः स्वतंत्रता प्राप्त की। तदुपरान्त 26 जनवरी, 1950 को भारत एक गणराज्य बना।\n" + -"\n" + -"एक बहुजातीय तथा बहुधर्मिक राष्ट्र होने के कारण भारत को समय-समय पर साम्प्रदायिक तथा जातीय विद्वेष का शिकार होना पङा है। क्षेत्रीय असंतोष तथा विद्रोह भी हालाँकि देश के अलग-अलग हिस्सों में होते रहे हैं, पर इसकी धर्मनिरपेक्षता तथा जनतांत्रिकता, केवल १९७५-७७ को छोड़, जब तत्कालीन प्रधानमंत्री इंदिरा गांधी ने आपातकाल की घोषणा कर दी थी, अक्षुण्य रही है।\n" + -"\n" + -"भारत के पड़ोसी राष्ट्रों के साथ अनसुलझे सीमा विवाद हैं। इसके कारण इसे छोटे पैमानों पर युद्ध का भी सामना करना पड़ा है। १९६२ में चीन के साथ, तथा १९४७, १९६५, १९७१ एवम् १९९९ में पाकिस्तान के साथ लड़ाइयाँ हो चुकी हैं।\n" + -"\n" + -"भारत गुटनिरपेक्ष आन्दोलन तथा संयुक्त राष्ट्र संघ के संस्थापक सदस्य देशों में से एक है।\n" + -"\n" + -"१९७४ में भारत ने अपना पहला परमाणु परीक्षण किया था जिसके बाद १९९८ में 5 और परीक्षण किये गये। १९९० के दशक में किये गये आर्थिक सुधारीकरण की बदौलत आज देश सबसे तेजी से विकासशील राष्ट्रों की सूची में आ गया है।\n" + -"\n" + -"[संपादित करें] सरकार\n" + -"मुख्य लेख: भारत सरकार\n" + -"\n" + -"भारत का संविधान भारत को एक सार्वभौमिक, समाजवादी, धर्मनिरपेक्ष, लोकतान्त्रिक गणराज्य की उपाधि देता है। भारत एक लोकतांत्रिक गणराज्य है, जिसका द्विसदनात्मक संसद वेस्टमिन्स्टर शैली के संसदीय प्रणाली द्वारा संचालित है। इसके शासन में तीन मुख्य अंग हैं: न्यायपालिका, कार्यपालिका और व्यवस्थापिका।\n" + -"\n" + -"राष्ट्रपति,जो कि राष्ट्र का प्रमुख है, has a largely ceremonial role. उसके कार्यों में संविधान का अभिव्यक्तिकरण, प्रस्तावित कानूनों (विधेयक) पर अपनी सहमति देना, और अध्यादेश जारी करना। वह भारतीय सेनाओं का मुख्य सेनापति भी है। राष्ट्रपति और उपराष्ट्रपति को एक अप्रत्यक्ष मतदान विधि द्वारा ५ वर्षों के लिये चुना जाता है। प्रधानमन्त्री सरकार का प्रमुख है और कार्यपालिका की सारी शक्तियाँ उसी के पास होती हैं। इसका चुनाव राजनैतिक पार्टियों या गठबन्धन के द्वारा प्रत्यक्ष विधि से संसद में बहुमत प्राप्त करने पर होता है। बहुमत बने रहने की स्थिति में इसका कार्यकाल ५ वर्षों का होता है। संविधान में किसी उप-प्रधानमंत्री का प्रावधान नहीं है पर समय-समय पर इसमें फेरबदल होता रहा है।\n" + -"\n" + -"व्यवस्थापिका संसद को कहते हैं जिसके दो सदन हैं - उच्चसदन राज्यसभा, or Council of States,और निम्नसदन लोकसभा. राज्यसभा में २४५ सदस्य होते हैं जबकि लोकसभा में ५५२। राज्यसभा के सदस्यों का चुनाव, अप्रत्यक्ष विधि से ६ वर्षों के लिये होता है, जबकि लोकसभा के सदस्यों का चुनाव प्रत्यक्ष विधि से, ५ वर्षों की अवधि के लिये। १८ वर्ष से अधिक उम्र के सभी भारतीय नागरिक मतदान कर सकते हैं।\n" + -"\n" + -"कार्यपालिका के तीन अंग हैं - राष्ट्रपति, उपराष्ट्रपति और मंत्रीमंडल। मंत्रीमंडल का प्रमुख प्रधानमंत्री होता है। मंत्रीमंडल के प्रत्येक मंत्री को संसद का सदस्य होना अनिवार्य है। कार्यपालिका, व्यवस्थापिका से नीचे होता है।\n" + -"\n" + -"भारत की स्वतंत्र न्यायपालिका का शीर्ष सर्वोच्च न्यायालय है, जिसका प्रधान प्रधान न्यायाधीश होता है। सर्वोच्च न्यायालय को अपने नये मामलों तथा उच्च न्यायालयों के विवादों, दोनो को देखने का अधिकार है। भारत में 21 उच्च न्यायालय हैं, जिनके अधिकार और उत्तरदायित्व सर्वोच्च न्यायालय की अपेक्षा सीमित हैं। न्यायपालिका और व्यवस्थापिका के परस्पर मतभेद या विवाद का सुलह राष्ट्रपति करता है।\n" + -"\n" + -"[संपादित करें] राजनीति\n" + -"मुख्य लेख: भारत की राजनीति\n" + -"भारत का मानचित्र\n" + -"भारत का मानचित्र\n" + -"\n" + -"स्वतंत्र भारत के इतिहास में उसकी सरकार मुख्य रूप से भारतीय राष्ट्रीय कान्ग्रेस पार्टी के हाथ में रही है। स्वतन्त्रतापूर्व भारत में सबसे बडे़ राजनीतिक संगठन होने के कारण काँग्रेस की, जिसका नेता मूल रूप से नेहरू - गाँधी परिवार का कोई न कोई सदस्य होता है, चालीस वर्षों तक राष्ट्रीय राजनीति में प्रमुख भूमिका रही। १९७७ में, पूर्व काँग्रेस शासन की इंदिरा गाँधी के आपातकाल लगाने के बाद एक संगठित विपक्ष जनता पार्टी ने चुनाव जीता और उसने अत्यधिक छोटी अवधि के लिये एक गैर-काँग्रेसी सरकार बनाई।\n" + -"\n" + -"१९९६ में, भारतीय जनता पार्टी (भाजपा), सबसे बड़े राजनीतिक संगठन के रूप में उभरी और उसने काँग्रेस के आगे इतिहास में पहली बार एक ठोस विपक्ष प्रस्तुत किया। परन्तु आगे चलकर सत्ता वास्तविक रूप से दो गठबन्धन सरकारों के हाथ में रही जिन्हें काँग्रेस का सम्पूर्ण समर्थन था। १९९९ में, भाजपा ने छोटे दलों को साथ लेकर राष्ट्रीय जनतान्त्रिक गठबन्धन (राजग) बनाया और ५ वर्षों तक कार्यकाल पूरा करने वाली वह पहली गैर-काँग्रेसी सरकार बनी। १९९९ से पूर्व का दशक अल्पावधि सरकारों का था, इन वर्षों में सात भिन्न सरकारें बनी। परन्तु १९९१ मे बनी काँग्रेस सरकार ने अपना ५ वर्ष का कार्यकाल पूरा किया और कई आर्थिक सुधार लाई।\n" + -"\n" + -"भारतीय आम चुनाव २००४ के फ़लस्वरूप काँग्रेस दल ने सर्वाधिक सीटें जीतीं और वह बड़े ही कम बहुमत से सत्ता में वापिस आई। काँग्रेस ने गठजोड़ द्वारा भारतीय कम्युनिस्ट पार्टी (मार्क्सवादी) और बहुत सी राज्य स्तरीय पार्टियों को साथ लेकर यूनाईटेड प्रोग्रेसिव अलायन्स (यूपीए) नामक सरकार बनाई। आज बीजेपी और उसके सहयोगी विपक्ष में मुख्य भूमिका निभाते हैं। राष्ट्रीय स्तर पर किसी विशेष पार्टी का दबदबा न होने और राज्य स्तर की कई पार्टियों के राष्ट्रीय स्तर पर उभरने के कारण १९९६ से बनी सभी सरकारों को राजनीतिक गठबन्धनों की आवश्यक्ता पड़ी है।\n" + -"\n" + -"[संपादित करें] राज्य और केन्द्रशासित प्रदेश\n" + -"मुख्य लेख: भारत के राज्य\n" + -"\n" + -"वर्तमान में भारत २८ राज्यों, ६ केन्द्रशासित प्रदेशों और राजधानी दिल्ली मे बँटा हुआ है। राज्यों की चुनी हुई स्वतंत्र सरकारें हैं जबकि केन्द्रशासित प्रदेशों पर केन्द्र द्वारा नियुक्त प्रबंधन शासन करता है, हालाँकि कुछ की लोकतांत्रिक सरकार भी है।\n" + -"\n" + -"अन्टार्कटिका और दक्षिण गंगोत्री और मैत्री पर भी भारत के वैज्ञानिक स्थल हैं यद्यपि अभी तक कोई वास्तविक आधिपत्य स्थापित नहीं किया गया है।\n" + -"\n" + -"[संपादित करें] भूगोल और मौसम\n" + -"मुख्य लेख: भारत का भूगोल\n" + -"हिमालय उत्तर में जम्मू और काश्मीर से लेकर पूर्व में अरुणाचल प्रदेश तक भारत की अधिकतर पूर्वी सीमा बनाता है\n" + -"हिमालय उत्तर में जम्मू और काश्मीर से लेकर पूर्व में अरुणाचल प्रदेश तक भारत की अधिकतर पूर्वी सीमा बनाता है\n" + -"\n" + -"भारत के अधिकतर उत्तरी और उत्तरपश्चिमीय प्रांत हिमालय की पहाङियों में स्थित हैं। शेष का उत्तरी, मध्य और पूर्वी भारत गंगा के उपजाऊ मैदानों से बना है। उत्तरी-पूर्वी पाकिस्तान से सटा हुआ, भारत के पश्चिम में थार का मरुस्थल है। दक्षिण भारत लगभग संपूर्ण ही दक्खन के पठार से निर्मित है। यह पठार पूर्वी और पश्चिमी घाटों के बीच स्थित है।\n" + -"\n" + -"कई महत्वपूर्ण और बड़ी नदियाँ जैसे गंगा, ब्रह्मपुत्र, यमुना, गोदावरी और कृष्णा भारत से होकर बहती हैं। इन नदियों के कारण उत्तर भारत की भूमि कृषि के लिए उपजाऊ है।\n" + -"\n" + -"भारत के विस्तार के साथ ही इसके मौसम में भी बहुत भिन्नता है। दक्षिण में जहाँ तटीय और गर्म वातावरण रहता है वहीं उत्तर में कड़ी सर्दी, पूर्व में जहाँ अधिक बरसात है वहीं पश्चिम में रेगिस्तान की शुष्कता। भारत में वर्षा मुख्यतया मानसून हवाओं से होती है।\n" + -"\n" + -"भारत के मुख्य शहर है - दिल्ली, मुम्बई, कोलकाता, चेन्नई, बंगलोर ( बेंगलुरु ) | ये भी देंखे - भारत के शहर\n" + -"\n" + -"[संपादित करें] अर्थव्यवस्था\n" + -"मुख्य लेख: भारत की अर्थव्यवस्था\n" + -"सूचना प्रोद्योगिकी (आईटी) भारत के सबसे अधिक विकासशील उद्योगों में से एक है, वार्षिक आय $२८५० करोड़ डालर, इन्फ़ोसिस, भारत की सबसे बडी आईटी कम्पनियों में से एक\n" + -"सूचना प्रोद्योगिकी (आईटी) भारत के सबसे अधिक विकासशील उद्योगों में से एक है, वार्षिक आय $२८५० करोड़ डालर, इन्फ़ोसिस, भारत की सबसे बडी आईटी कम्पनियों में से एक\n" + -"\n" + -"मुद्रा स्थानांतरण की दर से भारत की अर्थव्यवस्था विश्व में दसवें और क्रयशक्ति के अनुसार चौथे स्थान पर है। वर्ष २००३ में भारत में लगभग ८% की दर से आर्थिक वृद्धि हुई है जो कि विश्व की सबसे तीव्र बढती हुई अर्थव्यवस्थओं में से एक है। परंतु भारत की अत्यधिक जनसंख्या के कारण प्रतिव्यक्ति आय क्रयशक्ति की दर से मात्र ३२६२ अमेरिकन डॉलर है जो कि विश्व बैंक के अनुसार १२५वें स्थान पर है। भारत का विदेशी मुद्रा भंडार १४३ अरब अमेरिकन डॉलर है। मुम्बई भारत की आर्थिक राजधानी है और भारतीय रिजर्व बैंक और बॉम्बे स्टॉक एक्सचेंज का मुख्यालय भी। यद्यपि एक चौथाई भारतीय अभी भी निर्धनता रेखा से नीचे हैं, तीव्रता से बढ़ती हुई सूचना प्रोद्योगिकी कंपनियों के कारण मध्यमवर्गीय लोगों में वृद्धि हुई है। १९९१ के बाद भारत मे आर्थिक सुधार की नीति ने भारत के सर्वंगीण विकास मे बडी भूमिका निभाआयी।\n" + -"\n" + -"१९९१ के बाद भारत मे हुए [आर्थिक सुधार। आर्थिक सुधारोँ]] ने भारत के सर्वांगीण विकास मे बड़ी भूमिका निभाई। भारतीय अर्थव्यवस्था ने कृषि पर अपनी ऐतिहासिक निर्भरता कम की है और कृषि अब भारतीय सकल घरेलू उत्पाद (जीडीपी) का केवल २५% है। दूसरे प्रमुख उद्योग हैं उत्खनन, पेट्रोलियम, बहुमूल्य रत्न, चलचित्र, टेक्स्टाईल, सूचना प्रोद्योगिकी सेवाएं, तथा सजावटी वस्तुऐं। भारत के अधिकतर औद्योगिक क्षेत्र उसके प्रमुख महानगरों के आसपास स्थित हैं। हाल ही के वर्षों में $१७२० करोड़ अमरीकी डालर वार्षिक आय २००४-२००५ के साथ भारत सॉफ़्टवेयर और बीपीओ सेवाओं का सबसे बडा केन्द्र बनकर उभरा है। इसके साथ ही कई लघु स्तर के उद्योग भी हैं जोकि छोटे भारतीय गाँव और भारतीय नगरों के कई नागरिकों को जीविका प्रदान करते हैं। पिछले वषों मंे भारत में वित्तीय संस्थानो ने विकास में बड़ी भूमिका निभाई है।\n" + -"\n" + -"केवल तीस लाख विदेशी पर्यटकों के प्रतिवर्ष आने के बाद भी भार्तीय पर्यटन राष्ट्रीय आय का एक अति आवश्यक परन्तु कम विकसित स्त्रोत है। पर्यटन उद्योग भारत के जीडीपी का कुल ५.३% है। पर्यटन १०% भारतीय कामगारों को आजीविका देता है। वास्तविक संख्या ४.२ करोड है। आर्थिक रूप से देखा जाए तो पर्यटन भारतीय अर्थव्यवस्था को लगभग $४०० करोड डालर प्रदान करता है। भारत के प्रमुख व्यापार सहयोगी हैं अमरीका, जापान, चीन और संयुक्त अरब अमीरात।\n" + -"\n" + -"भारत के निर्यातों में कृषि उत्पाद, चाय, कपड़ा, बहुमूल्य रत्न व ज्वैलरी, साफ़्टवेयर सेवायें, इंजीनियरिंग सामान, रसायन तथा चमड़ा उत्पाद प्रमुख हैं जबकि उसके आयातों में कच्चा तेल, मशीनरी, बहुमूल्य रत्न, फ़र्टिलाइज़र तथा रसायन प्रमुख हैं। वर्ष २००४ के लिये भारत के कुल निर्यात $६९१८ करोड़ डालर के थे जबकि उसके आयात $८९३३ करोड डालर के थे।\n" + -"\n" + -"[संपादित करें] जनवृत्त\n" + -"मुख्य लेख: भारत के लोग\n" + -"\n" + -"भारत चीन के बाद विश्व का दूसरा सबसे बड़ी जनसंख्या वाला देश है। भारत की विभिन्नताओं से भरी जनता में भाषा, जाति और धर्म, सामाजिक और राजनीतिक संगठन के मुख्य शत्रु हैं।\n" + -"हिन्दुत्व भारत का सबसे बङा धर्म है - इस चित्र मे गोआ का एक मंदिर दर्शाया गया है\n" + -"हिन्दुत्व भारत का सबसे बङा धर्म है - इस चित्र मे गोआ का एक मंदिर दर्शाया गया है\n" + -"\n" + -"भारत में ६४.८ प्रतिशत साक्षरता है जिसमे से ७५.३ % पुरुष और ५३.७% स्त्रियाँ साक्षर है। लिंग अनुपात की दृष्टि से भारत में प्रत्येक १००० पुरुषों के पीछे मात्र ९३३ महिलायें हैं। कार्य भागीदारी दर (कुल जनसंख्या मे कार्य करने वालों का भाग) ३९.१% है। पुरुषों के लिये यह दर ५१.७% और स्त्रियों के लिये २५.६% है। भारत की १००० जनसंख्या में २२.३२ जन्मों के साथ बढती जनसंख्या के आधे लोग २२.६६ वर्ष से कम आयु के हैं।\n" + -"\n" + -"यद्यपि भारत की ८०.५ प्रतिशत जनसंख्या हिन्दू है, १३.४ प्रतिशत जनसंख्या के साथ भारत विश्व में मुसलमानों की संख्या में भी इंडोनेशिया के बाद दूसरे स्थान पर है। अन्य धर्मावलम्बियों में ईसाई (२.३३ %), सिख (१.८४ %), बौद्ध (०.७६ %), जैन (०.४० %), अय्यावलि (०.१२ %), यहूदी, पारसी, अहमदी और बहाई आदि सम्मिलित हैं।\n" + -"\n" + -"भारत दो मुख्य भाषा सूत्रों, आर्यन् और द्रविङियन्, का भी स्त्रोत है (साइटेसन चाहिए)। भारत का संविधान कुल २३ भाषाओं को मान्यता देता है। हिन्दी और अंग्रेजी केन्द्रीय सरकार द्वारा सरकारी कामकाज के लिये उपयोग की जाती है। संस्कृत और तमिल जैसी अति प्राचीन भाषाएं भारत में ही जन्मी हैं। कुल मिलाकर भारत में १६५२ से भी अधिक भाषाएं एवं बोलियाँ बोली जातीं हैं।\n" + -"\n" + -"[संपादित करें] संस्कृति\n" + -"मुख्य लेख: भारतीय संस्कृति\n" + -"ताजमहल विश्व के सबसे प्रसिद्ध पर्यटक स्थलों में गिना जाता है।\n" + -"ताजमहल विश्व के सबसे प्रसिद्ध पर्यटक स्थलों में गिना जाता है।\n" + -"\n" + -"भारत की सांस्कृतिक धरोहर बहुत संपन्न है। यहां की संस्कृति अनोखी है, और वर्षों से इसके कई अवयव अबतक अक्षुण्य हैं। आक्रमणकारियों तथा प्रवासियों से विभिन्न चीजों को समेटकर यह एक मिश्रित संस्कृति बन गई है। आधुनिक भारत का समाज, भाषाएं, रीति-रिवाज इत्यादि इसका प्रमाण हैं। ताजमहल और अन्य उदाहरण, इस्लाम प्रभावित स्थापत्य कला के अतिसुन्दर नमूने हैं।\n" + -"गुम्पा नृत्य एक तिब्बती बौद्ध समाज का सिक्किम में छिपा नृत्य है। यह बौद्ध नव बर्ष में है।\n" + -"गुम्पा नृत्य एक तिब्बती बौद्ध समाज का सिक्किम में छिपा नृत्य है। यह बौद्ध नव बर्ष में है।\n" + -"\n" + -"भारतीय समाज बहुधर्मिक, बहुभाषी तथा मिश्र-सांस्कृतिक है। पारंपरिक भारतीय पारिवारिक मूल्यों को काफी आदर की दृष्टि से देखा जाता है।\n" + -"\n" + -"विभिन्न धर्मों के इस भूभाग पर कई मनभावन पर्व त्यौहार मनाए जाते हैं - दिवाली, होली, दशहरा. पोंगल तथा ओणम . ईद-उल-फितर, मुहर्रम, क्रिसमस, ईस्टर आदि भी काफ़ी लोकप्रिय हैं।\n" + -"\n" + -"हालाँकि हॉकी देश का राष्ट्रीय खेल है, क्रिकेट सबसे अधिक लोकप्रिय है। वर्तमान में फुटबॉल, हॉकी तथा टेनिस में भी बहुत भारतीयों की अभिरुचि है। देश की राष्ट्रीय क्रिकेट टीम में 1983 में एक बार विश्व कप भी जीता है। इसके अतिरिक्त वर्ष 2003 में वह विश्व कप के फाइनल तक पहुँचा था। 1930 तथा 40 के दशक में हाकी में भारत अपने चरम पर था। मेजर ध्यानचंद ने हॉकी में भारत को बहुत प्रसिद्धि दिलाई और एक समय भारत ने अमरीका को 24-0 से हराया था जो अब तर विश्व कीर्तिमान है। शतरंज के जनक देश भारत के खिलाड़ी शतरंज में भी अच्छा प्रदर्शन करते आए हैं।\n" + -"\n" + -"भारतीय खानपान बहुत ही समृद्ध है। शाकाहारी तथा मांसाहारी दोनो तरह का खाना पसन्द किया जाता है। भारतीय व्यंजन विदेशों में भी बहुत पसन्द किए जाते है।\n" + -"\n" + -"भारत में संगीत तथा नृत्य की अपनी शैलियां भी विकसित हुईं जो बहुत ही लोकप्रिय हैं। भरतनाट्यम, ओडिसी, कत्थक प्रसिद्ध भारतीय नृत्य शैली है। हिन्दुस्तानी संगीत तथा कर्नाटक संगीत भारतीय परंपरागत संगीत की दो मुख्य धाराएं हैं।\n" + -"\n" + -"वैश्वीकरण के इस युग में शेष विश्व की तरह भारतीय समाज पर भी अंग्रेजी तथा यूरोपीय प्रभाव पड़ रहा है। बाहरी लोगों की खूबियों को अपनाने की भारतीय परंपरा का नया दौर कई भारतीयों की दृष्टि में अनुचित है। एक खुले समाज के जीवन का यत्न कर रहे लोगों को मध्यमवर्गीय तथा वरिष्ठ नागरिकों की उपेक्षा का शिकार होना पड़ता है। कुछ लोग इसे भारतीय पारंपरिक मूल्यों का हनन मानते हैं। विज्ञान तथा साहित्य में अधिक प्रगति ना कर पाने की वजह से भारतीय समाज यूरोपीय लोगों पर निर्भर होता जा रहा है। ऐसे समय में लोग विदेशी अविष्कारों का भारत में प्रयोग अनुचित भी समझते हैं। हालाँकि ऐसे कई लोग है जो ऐसा विचार नहीं रखते।\n" + -"\n" + -"[संपादित करें] यह भी देखें\n" + -"\n" + -" * दक्षिण भारत\n" + -" * उत्तर पूर्वी भारत\n" + -" * भारत की भाषाएँ\n" + -"\n" + -"\n" + -"[संपादित करें] बाहरी कड़ियाँ\n" + -"\n" + -"सरकार (हिन्दी)\n" + -"\n" + -" * भारत का राष्ट्रीय पोर्टल\n" + -"\n" + -"सरकार (अंग्रेज़ी)\n" + -"\n" + -" * भारतीय सरकार का सरकारी वैबसाइट\n" + -" * भारतीय सरकार का वेबसाइट का सरकारी निर्देशिका\n" + -"\n" + -"सेनापति निर्देश (अंग्रेज़ी)\n" + -"\n" + -" * सीआईए में भारत निबन्ध\n" + -" * एन्साक्लोपीडिया ब्रिटैनिका का भारत निबन्ध\n" + -" * बीबीसी का भारत निबन्ध\n" + -"\n" + -"भारत का देश नक्शा\n" + -"\n" + -"सैटेलाइट चित्र (अंग्रेज़ी)\n" + -"\n" + -" * गूगल मानचित्र से भारत का सैटेलाइट चित्र\n" + -"\n" + -"अन्य (अंग्रेज़ी)\n" + -"\n" + -" * विकिभ्रमण का भारत निबन्ध\n" + -" * भारत ओपेन डायरैक्टरी प्रॉजेक्ट में\n" + -" * भारत यात्रा - सामूहिक यात्रा ब्लॉग\n"; - -var english = -"English language\n" + -"From Wikipedia, the free encyclopedia\n" + -"• Learn more about citing Wikipedia •\n" + -"Jump to: navigation, search\n" + -" Editing of this article by unregistered or newly registered users is currently disabled.\n" + -"If you cannot edit this article and you wish to make a change, you can discuss changes on the talk page, request unprotection, log in, or create an account.\n" + -"English \n" + -"Pronunciation: /ˈɪŋɡlɪʃ/[37]\n" + -"Spoken in: Listed in the article\n" + -"Total speakers: First language: 309[38] – 380 million[3]\n" + -"Second language: 199[39] – 600 million[40]\n" + -"Overall: 1.8 billion[41] \n" + -"Ranking: 3 (native speakers)[9][10]\n" + -"Total: 1 or 2 [11]\n" + -"Language family: Indo-European\n" + -" Germanic\n" + -" West Germanic\n" + -" Anglo–Frisian\n" + -" Anglic\n" + -" English \n" + -"Writing system: Latin (English variant) \n" + -"Official status\n" + -"Official language of: 53 countries\n" + -"Flag of the United Nations United Nations\n" + -"Regulated by: no official regulation\n" + -"Language codes\n" + -"ISO 639-1: en\n" + -"ISO 639-2: eng\n" + -"ISO 639-3: eng \n" + -"World countries, states, and provinces where English is a primary language are dark blue; countries, states and provinces where it is an official but not a primary language are light blue. English is also one of the official languages of the European Union.\n" + -"Note: This page may contain IPA phonetic symbols in Unicode. See IPA chart for English for an English-​based pronunciation key.\n" + -"\n" + -"English is a West Germanic language originating in England, and the first language for most people in Australia, Canada, the Commonwealth Caribbean, Ireland, New Zealand, the United Kingdom and the United States of America (also commonly known as the Anglosphere). It is used extensively as a second language and as an official language throughout the world, especially in Commonwealth countries such as India, Sri Lanka, Pakistan and South Africa, and in many international organisations.\n" + -"\n" + -"Modern English is sometimes described as the global lingua franca.[1][2] English is the dominant international language in communications, science, business, aviation, entertainment, radio and diplomacy.[3] The influence of the British Empire is the primary reason for the initial spread of the language far beyond the British Isles.[4] Following World War II, the growing economic and cultural influence of the United States has significantly accelerated the spread of the language.\n" + -"\n" + -"A working knowledge of English is required in certain fields, professions, and occupations. As a result over a billion people speak English at least at a basic level (see English language learning and teaching). English is one of six official languages of the United Nations.\n" + -"Contents\n" + -"[hide]\n" + -"\n" + -" * 1 History\n" + -" * 2 Classification and related languages\n" + -" * 3 Geographical distribution\n" + -" o 3.1 English as a global language\n" + -" o 3.2 Dialects and regional varieties\n" + -" o 3.3 Constructed varieties of English\n" + -" * 4 Phonology\n" + -" o 4.1 Vowels\n" + -" + 4.1.1 See also\n" + -" o 4.2 Consonants\n" + -" + 4.2.1 Voicing and aspiration\n" + -" o 4.3 Supra-segmental features\n" + -" + 4.3.1 Tone groups\n" + -" + 4.3.2 Characteristics of intonation\n" + -" * 5 Grammar\n" + -" * 6 Vocabulary\n" + -" o 6.1 Number of words in English\n" + -" o 6.2 Word origins\n" + -" + 6.2.1 Dutch origins\n" + -" + 6.2.2 French origins\n" + -" * 7 Writing system\n" + -" o 7.1 Basic sound-letter correspondence\n" + -" o 7.2 Written accents\n" + -" * 8 Formal written English\n" + -" * 9 Basic and simplified versions\n" + -" * 10 Notes\n" + -" * 11 References\n" + -" * 12 See also\n" + -" * 13 External links\n" + -" o 13.1 Dictionaries\n" + -"\n" + -"History\n" + -"\n" + -" Main article: History of the English language\n" + -"\n" + -"English is an Anglo-Frisian language. Germanic-speaking peoples from northwest Germany (Saxons and Angles) and Jutland (Jutes) invaded what is now known as Eastern England around the fifth century AD. It is a matter of debate whether the Old English language spread by displacement of the original population, or the native Celts gradually adopted the language and culture of a new ruling class, or a combination of both of these processes (see Sub-Roman Britain).\n" + -"\n" + -"Whatever their origin, these Germanic dialects eventually coalesced to a degree (there remained geographical variation) and formed what is today called Old English. Old English loosely resembles some coastal dialects in what are now northwest Germany and the Netherlands (i.e., Frisia). Throughout the history of written Old English, it retained a synthetic structure closer to that of Proto-Indo-European, largely adopting West Saxon scribal conventions, while spoken Old English became increasingly analytic in nature, losing the more complex noun case system, relying more heavily on prepositions and fixed word order to convey meaning. This is evident in the Middle English period, when literature was to an increasing extent recorded with spoken dialectal variation intact, after written Old English lost its status as the literary language of the nobility. It is postulated that the early development of the language was influenced by a Celtic substratum.[5][6] Later, it was influenced by the related North Germanic language Old Norse, spoken by the Vikings who settled mainly in the north and the east coast down to London, the area known as the Danelaw.\n" + -"\n" + -"The Norman Conquest of England in 1066 profoundly influenced the evolution of the language. For about 300 years after this, the Normans used Anglo-Norman, which was close to Old French, as the language of the court, law and administration. By the fourteenth century, Anglo-Norman borrowings had contributed roughly 10,000 words to English, of which 75% remain in use. These include many words pertaining to the legal and administrative fields, but also include common words for food, such as mutton[7] and beef[8]. The Norman influence gave rise to what is now referred to as Middle English. Later, during the English Renaissance, many words were borrowed directly from Latin (giving rise to a number of doublets) and Greek, leaving a parallel vocabulary that persists into modern times. By the seventeenth century there was a reaction in some circles against so-called inkhorn terms.\n" + -"\n" + -"During the fifteenth century, Middle English was transformed by the Great Vowel Shift, the spread of a prestigious South Eastern-based dialect in the court, administration and academic life, and the standardising effect of printing. Early Modern English can be traced back to around the Elizabethan period.\n" + -"\n" + -"Classification and related languages\n" + -"\n" + -"The English language belongs to the western sub-branch of the Germanic branch of the Indo-European family of languages.\n" + -"\n" + -"The question as to which is the nearest living relative of English is a matter of discussion. Apart from such English-lexified creole languages such as Tok Pisin, Scots (spoken primarily in Scotland and parts of Northern Ireland) is not a Gaelic language, but is part of the English family of languages: both Scots and modern English are descended from Old English, also known as Anglo-Saxon. The closest relative to English after Scots is Frisian, which is spoken in the Northern Netherlands and Northwest Germany. Other less closely related living West Germanic languages include German, Low Saxon, Dutch, and Afrikaans. The North Germanic languages of Scandinavia are less closely related to English than the West Germanic languages.\n" + -"\n" + -"Many French words are also intelligible to an English speaker (though pronunciations are often quite different) because English absorbed a large vocabulary from Norman and French, via Anglo-Norman after the Norman Conquest and directly from French in subsequent centuries. As a result, a large portion of English vocabulary is derived from French, with some minor spelling differences (word endings, use of old French spellings, etc.), as well as occasional divergences in meaning, in so-called \"faux amis\", or false friends.\n" + -"\n" + -"Geographical distribution\n" + -"\n" + -" See also: List of countries by English-speaking population\n" + -"\n" + -"Over 380 million people speak English as their first language. English today is probably the third largest language by number of native speakers, after Mandarin Chinese and Spanish.[9][10] However, when combining native and non-native speakers it is probably the most commonly spoken language in the world, though possibly second to a combination of the Chinese Languages, depending on whether or not distinctions in the latter are classified as \"languages\" or \"dialects.\"[11][12] Estimates that include second language speakers vary greatly from 470 million to over a billion depending on how literacy or mastery is defined.[13][14] There are some who claim that non-native speakers now outnumber native speakers by a ratio of 3 to 1.[15]\n" + -"\n" + -"The countries with the highest populations of native English speakers are, in descending order: United States (215 million),[16] United Kingdom (58 million),[17] Canada (17.7 million),[18] Australia (15 million),[19] Ireland (3.8 million),[17] South Africa (3.7 million),[20] and New Zealand (3.0-3.7 million).[21] Countries such as Jamaica and Nigeria also have millions of native speakers of dialect continuums ranging from an English-based creole to a more standard version of English. Of those nations where English is spoken as a second language, India has the most such speakers ('Indian English') and linguistics professor David Crystal claims that, combining native and non-native speakers, India now has more people who speak or understand English than any other country in the world.[22] Following India is the People's Republic of China.[23]\n" + -"Distribution of native English speakers by country (Crystal 1997)\n" + -"Distribution of native English speakers by country (Crystal 1997)\n" + -" Country Native speakers\n" + -"1 USA 214,809,000[16]\n" + -"2 UK 58,200,000[17]\n" + -"3 Canada 17,694,830[18]\n" + -"4 Australia 15,013,965[19]\n" + -"5 Ireland 4,200,000+ (Approx)[17]\n" + -"6 South Africa 3,673,203[20]\n" + -"7 New Zealand 3,500,000+ (Approx)[21]\n" + -"8 Singapore 665,087[24]\n" + -"\n" + -"English is the primary language in Anguilla, Antigua and Barbuda, Australia (Australian English), the Bahamas, Barbados, Bermuda, Belize, the British Indian Ocean Territory, the British Virgin Islands, Canada (Canadian English), the Cayman Islands, Dominica, the Falkland Islands, Gibraltar, Grenada, Guernsey (Guernsey English), Guyana, Ireland (Hiberno-English), Isle of Man (Manx English), Jamaica (Jamaican English), Jersey, Montserrat, Nauru, New Zealand (New Zealand English), Pitcairn Islands, Saint Helena, Saint Lucia, Saint Kitts and Nevis, Saint Vincent and the Grenadines, Singapore, South Georgia and the South Sandwich Islands, Trinidad and Tobago, the Turks and Caicos Islands, the United Kingdom, the U.S. Virgin Islands, and the United States (various forms of American English).\n" + -"\n" + -"In many other countries, where English is not the most spoken language, it is an official language; these countries include Botswana, Cameroon, Fiji, the Federated States of Micronesia, Ghana, Gambia, Hong Kong, India, Kiribati, Lesotho, Liberia, Kenya, Madagascar, Malta, the Marshall Islands, Namibia, Nigeria, Pakistan, Papua New Guinea, the Philippines, Puerto Rico, Rwanda, the Solomon Islands, Samoa, Sierra Leone, Singapore, Sri Lanka, Swaziland, Tanzania, Uganda, Zambia, and Zimbabwe. It is also one of the 11 official languages that are given equal status in South Africa (\"South African English\"). English is also an important language in several former colonies or current dependent territories of the United Kingdom and the United States, such as in Hong Kong and Mauritius.\n" + -"\n" + -"English is not an official language in either the United States or the United Kingdom.[25][26] Although the United States federal government has no official languages, English has been given official status by 30 of the 50 state governments.[27]\n" + -"\n" + -"English as a global language\n" + -"\n" + -" See also: English on the Internet and global language\n" + -"\n" + -"Because English is so widely spoken, it has often been referred to as a \"global language\", the lingua franca of the modern era.[2] While English is not an official language in many countries, it is currently the language most often taught as a second language around the world. Some linguists believe that it is no longer the exclusive cultural sign of \"native English speakers\", but is rather a language that is absorbing aspects of cultures worldwide as it continues to grow. It is, by international treaty, the official language for aerial and maritime communications, as well as one of the official languages of the European Union, the United Nations, and most international athletic organisations, including the International Olympic Committee.\n" + -"\n" + -"English is the language most often studied as a foreign language in the European Union (by 89% of schoolchildren), followed by French (32%), German (18%), and Spanish (8%).[28] In the EU, a large fraction of the population reports being able to converse to some extent in English. Among non-English speaking countries, a large percentage of the population claimed to be able to converse in English in the Netherlands (87%), Sweden (85%), Denmark (83%), Luxembourg (66%), Finland (60%), Slovenia (56%), Austria (53%), Belgium (52%), and Germany (51%). [29] Norway and Iceland also have a large majority of competent English-speakers.\n" + -"\n" + -"Books, magazines, and newspapers written in English are available in many countries around the world. English is also the most commonly used language in the sciences.[2] In 1997, the Science Citation Index reported that 95% of its articles were written in English, even though only half of them came from authors in English-speaking countries.\n" + -"\n" + -"Dialects and regional varieties\n" + -"\n" + -" Main article: List of dialects of the English language\n" + -"\n" + -"The expansion of the British Empire and—since WWII—the primacy of the United States have spread English throughout the globe.[2] Because of that global spread, English has developed a host of English dialects and English-based creole languages and pidgins.\n" + -"\n" + -"The major varieties of English include, in most cases, several subvarieties, such as Cockney slang within British English; Newfoundland English within Canadian English; and African American Vernacular English (\"Ebonics\") and Southern American English within American English. English is a pluricentric language, without a central language authority like France's Académie française; and, although no variety is clearly considered the only standard, there are a number of accents considered to be more prestigious, such as Received Pronunciation in Britain.\n" + -"\n" + -"Scots developed — largely independently — from the same origins, but following the Acts of Union 1707 a process of language attrition began, whereby successive generations adopted more and more features from English causing dialectalisation. Whether it is now a separate language or a dialect of English better described as Scottish English is in dispute. The pronunciation, grammar and lexis of the traditional forms differ, sometimes substantially, from other varieties of English.\n" + -"\n" + -"Because of the wide use of English as a second language, English speakers have many different accents, which often signal the speaker's native dialect or language. For the more distinctive characteristics of regional accents, see Regional accents of English speakers, and for the more distinctive characteristics of regional dialects, see List of dialects of the English language.\n" + -"\n" + -"Just as English itself has borrowed words from many different languages over its history, English loanwords now appear in a great many languages around the world, indicative of the technological and cultural influence of its speakers. Several pidgins and creole languages have formed using an English base, such as Jamaican Creole, Nigerian Pidgin, and Tok Pisin. There are many words in English coined to describe forms of particular non-English languages that contain a very high proportion of English words. Franglais, for example, is used to describe French with a very high English word content; it is found on the Channel Islands. Another variant, spoken in the border bilingual regions of Québec in Canada, is called FrEnglish.\n" + -"\n" + -"Constructed varieties of English\n" + -"\n" + -" * Basic English is simplified for easy international use. It is used by manufacturers and other international businesses to write manuals and communicate. Some English schools in Asia teach it as a practical subset of English for use by beginners.\n" + -" * Special English is a simplified version of English used by the Voice of America. It uses a vocabulary of only 1500 words.\n" + -" * English reform is an attempt to improve collectively upon the English language.\n" + -" * Seaspeak and the related Airspeak and Policespeak, all based on restricted vocabularies, were designed by Edward Johnson in the 1980s to aid international cooperation and communication in specific areas. There is also a tunnelspeak for use in the Channel Tunnel.\n" + -" * English as a lingua franca for Europe and Euro-English are concepts of standardising English for use as a second language in continental Europe.\n" + -" * Manually Coded English — a variety of systems have been developed to represent the English language with hand signals, designed primarily for use in deaf education. These should not be confused with true sign languages such as British Sign Language and American Sign Language used in Anglophone countries, which are independent and not based on English.\n" + -" * E-Prime excludes forms of the verb to be.\n" + -"\n" + -"Euro-English (also EuroEnglish or Euro-English) terms are English translations of European concepts that are not native to English-speaking countries. Due to the United Kingdom's (and even the Republic of Ireland's) involvement in the European Union, the usage focuses on non-British concepts. This kind of Euro-English was parodied when English was \"made\" one of the constituent languages of Europanto.\n" + -"\n" + -"Phonology\n" + -"\n" + -" Main article: English phonology\n" + -"\n" + -"Vowels\n" + -"IPA Description word\n" + -"monophthongs\n" + -"i/iː Close front unrounded vowel bead\n" + -"ɪ Near-close near-front unrounded vowel bid\n" + -"ɛ Open-mid front unrounded vowel bed\n" + -"æ Near-open front unrounded vowel bad\n" + -"ɒ Open back rounded vowel bod 1\n" + -"ɔ Open-mid back rounded vowel pawed 2\n" + -"ɑ/ɑː Open back unrounded vowel bra\n" + -"ʊ Near-close near-back rounded vowel good\n" + -"u/uː Close back rounded vowel booed\n" + -"ʌ/ɐ Open-mid back unrounded vowel, Near-open central vowel bud\n" + -"ɝ/ɜː Open-mid central unrounded vowel bird 3\n" + -"ə Schwa Rosa's 4\n" + -"ɨ Close central unrounded vowel roses 5\n" + -"diphthongs\n" + -"e(ɪ)/eɪ Close-mid front unrounded vowel\n" + -"Close front unrounded vowel bayed 6\n" + -"o(ʊ)/əʊ Close-mid back rounded vowel\n" + -"Near-close near-back rounded vowel bode 6\n" + -"aɪ Open front unrounded vowel\n" + -"Near-close near-front unrounded vowel cry\n" + -"aʊ Open front unrounded vowel\n" + -"Near-close near-back rounded vowel bough\n" + -"ɔɪ Open-mid back rounded vowel\n" + -"Close front unrounded vowel boy\n" + -"ʊɝ/ʊə Near-close near-back rounded vowel\n" + -"Schwa boor 9\n" + -"ɛɝ/ɛə Open-mid front unrounded vowel\n" + -"Schwa fair 10\n" + -"\n" + -"Notes:\n" + -"\n" + -"It is the vowels that differ most from region to region.\n" + -"\n" + -"Where symbols appear in pairs, the first corresponds to American English, General American accent; the second corresponds to British English, Received Pronunciation.\n" + -"\n" + -" 1. American English lacks this sound; words with this sound are pronounced with /ɑ/ or /ɔ/.\n" + -" 2. Many dialects of North American English do not have this vowel. See Cot-caught merger.\n" + -" 3. The North American variation of this sound is a rhotic vowel.\n" + -" 4. Many speakers of North American English do not distinguish between these two unstressed vowels. For them, roses and Rosa's are pronounced the same, and the symbol usually used is schwa /ə/.\n" + -" 5. This sound is often transcribed with /i/ or with /ɪ/.\n" + -" 6. The diphthongs /eɪ/ and /oʊ/ are monophthongal for many General American speakers, as /eː/ and /oː/.\n" + -" 7. The letter can represent either /u/ or the iotated vowel /ju/. In BRP, if this iotated vowel /ju/ occurs after /t/, /d/, /s/ or /z/, it often triggers palatalization of the preceding consonant, turning it to /ʨ/, /ʥ/, /ɕ/ and /ʑ/ respectively, as in tune, during, sugar, and azure. In American English, palatalization does not generally happen unless the /ju/ is followed by r, with the result that /(t, d,s, z)jur/ turn to /tʃɚ/, /dʒɚ/, /ʃɚ/ and /ʒɚ/ respectively, as in nature, verdure, sure, and treasure.\n" + -" 8. Vowel length plays a phonetic role in the majority of English dialects, and is said to be phonemic in a few dialects, such as Australian English and New Zealand English. In certain dialects of the modern English language, for instance General American, there is allophonic vowel length: vowel phonemes are realized as long vowel allophones before voiced consonant phonemes in the coda of a syllable. Before the Great Vowel Shift, vowel length was phonemically contrastive.\n" + -" 9. This sound only occurs in non-rhotic accents. In some accents, this sound may be, instead of /ʊə/, /ɔ:/. See pour-poor merger.\n" + -" 10. This sound only occurs in non-rhotic accents. In some accents, the schwa offglide of /ɛə/ may be dropped, monophthising and lengthening the sound to /ɛ:/.\n" + -"\n" + -"See also\n" + -"\n" + -" * International Phonetic Alphabet for English for more vowel charts.\n" + -"\n" + -"Consonants\n" + -"\n" + -"This is the English Consonantal System using symbols from the International Phonetic Alphabet (IPA).\n" + -" bilabial labio-\n" + -"dental dental alveolar post-\n" + -"alveolar palatal velar glottal\n" + -"plosive p b t d k ɡ \n" + -"nasal m n ŋ 1 \n" + -"flap ɾ 2 \n" + -"fricative f v θ ð 3 s z ʃ ʒ 4 ç 5 x 6 h\n" + -"affricate tʃ dʒ 4 \n" + -"approximant ɹ 4 j \n" + -"lateral approximant l \n" + -" labial-velar\n" + -"approximant ʍ w 7\n" + -"\n" + -" 1. The velar nasal [ŋ] is a non-phonemic allophone of /n/ in some northerly British accents, appearing only before /k/ and /g/. In all other dialects it is a separate phoneme, although it only occurs in syllable codas.\n" + -" 2. The alveolar flap [ɾ] is an allophone of /t/ and /d/ in unstressed syllables in North American English and Australian English.[30] This is the sound of tt or dd in the words latter and ladder, which are homophones for many speakers of North American English. In some accents such as Scottish English and Indian English it replaces /ɹ/. This is the same sound represented by single r in most varieties of Spanish.\n" + -" 3. In some dialects, such as Cockney, the interdentals /θ/ and /ð/ are usually merged with /f/ and /v/, and in others, like African American Vernacular English, /ð/ is merged with dental /d/. In some Irish varieties, /θ/ and /ð/ become the corresponding dental plosives, which then contrast with the usual alveolar plosives.\n" + -" 4. The sounds /ʃ/, /ʒ/, and /ɹ/ are labialised in some dialects. Labialisation is never contrastive in initial position and therefore is sometimes not transcribed. Most speakers of General American realize (always rhoticized) as the retroflex approximant /ɻ/, whereas the same is realized in Scottish English, etc. as the alveolar trill.\n" + -" 5. The voiceless palatal fricative /ç/ is in most accents just an allophone of /h/ before /j/; for instance human /çjuːmən/. However, in some accents (see this), the /j/ is dropped, but the initial consonant is the same.\n" + -" 6. The voiceless velar fricative /x/ is used only by Scottish or Welsh speakers of English for Scots/Gaelic words such as loch /lɒx/ or by some speakers for loanwords from German and Hebrew like Bach /bax/ or Chanukah /xanuka/. In some dialects such as Scouse (Liverpool) either [x] or the affricate [kx] may be used as an allophone of /k/ in words such as docker [dɒkxə]. Most native speakers have a great deal of trouble pronouncing it correctly when learning a foreign language. Most speakers use the sounds [k] and [h] instead.\n" + -" 7. Voiceless w [ʍ] is found in Scottish and Irish English, as well as in some varieties of American, New Zealand, and English English. In most other dialects it is merged with /w/, in some dialects of Scots it is merged with /f/.\n" + -"\n" + -"Voicing and aspiration\n" + -"\n" + -"Voicing and aspiration of stop consonants in English depend on dialect and context, but a few general rules can be given:\n" + -"\n" + -" * Voiceless plosives and affricates (/ p/, / t/, / k/, and / tʃ/) are aspirated when they are word-initial or begin a stressed syllable — compare pin [pʰɪn] and spin [spɪn], crap [kʰɹ̥æp] and scrap [skɹæp].\n" + -" o In some dialects, aspiration extends to unstressed syllables as well.\n" + -" o In other dialects, such as Indo-Pakistani English, all voiceless stops remain unaspirated.\n" + -" * Word-initial voiced plosives may be devoiced in some dialects.\n" + -" * Word-terminal voiceless plosives may be unreleased or accompanied by a glottal stop in some dialects (e.g. many varieties of American English) — examples: tap [tʰæp̚], sack [sæk̚].\n" + -" * Word-terminal voiced plosives may be devoiced in some dialects (e.g. some varieties of American English) — examples: sad [sæd̥], bag [bæɡ̊]. In other dialects they are fully voiced in final position, but only partially voiced in initial position.\n" + -"\n" + -"Supra-segmental features\n" + -"\n" + -"Tone groups\n" + -"\n" + -"English is an intonation language. This means that the pitch of the voice is used syntactically, for example, to convey surprise and irony, or to change a statement into a question.\n" + -"\n" + -"In English, intonation patterns are on groups of words, which are called tone groups, tone units, intonation groups or sense groups. Tone groups are said on a single breath and, as a consequence, are of limited length, more often being on average five words long or lasting roughly two seconds. For example:\n" + -"\n" + -" - /duː juː niːd ˈɛnɪˌθɪŋ/ Do you need anything?\n" + -" - /aɪ dəʊnt | nəʊ/ I don't, no\n" + -" - /aɪ dəʊnt nəʊ/ I don't know (contracted to, for example, - /aɪ dəʊnəʊ/ or /aɪ dənəʊ/ I dunno in fast or colloquial speech that de-emphasises the pause between don't and know even further)\n" + -"\n" + -"Characteristics of intonation\n" + -"\n" + -"English is a strongly stressed language, in that certain syllables, both within words and within phrases, get a relative prominence/loudness during pronunciation while the others do not. The former kind of syllables are said to be accentuated/stressed and the latter are unaccentuated/unstressed. All good dictionaries of English mark the accentuated syllable(s) by either placing an apostrophe-like ( ˈ ) sign either before (as in IPA, Oxford English Dictionary, or Merriam-Webster dictionaries) or after (as in many other dictionaries) the syllable where the stress accent falls. In general, for a two-syllable word in English, it can be broadly said that if it is a noun or an adjective, the first syllable is accentuated; but if it is a verb, the second syllable is accentuated.\n" + -"\n" + -"Hence in a sentence, each tone group can be subdivided into syllables, which can either be stressed (strong) or unstressed (weak). The stressed syllable is called the nuclear syllable. For example:\n" + -"\n" + -" That | was | the | best | thing | you | could | have | done!\n" + -"\n" + -"Here, all syllables are unstressed, except the syllables/words best and done, which are stressed. Best is stressed harder and, therefore, is the nuclear syllable.\n" + -"\n" + -"The nuclear syllable carries the main point the speaker wishes to make. For example:\n" + -"\n" + -" John hadn't stolen that money. (... Someone else had.)\n" + -" John hadn't stolen that money. (... You said he had. or ... Not at that time, but later he did.)\n" + -" John hadn't stolen that money. (... He acquired the money by some other means.)\n" + -" John hadn't stolen that money. (... He had stolen some other money.)\n" + -" John hadn't stolen that money. (... He stole something else.)\n" + -"\n" + -"Also\n" + -"\n" + -" I didn't tell her that. (... Someone else told her.)\n" + -" I didn't tell her that. (... You said I did. or ... But now I will!)\n" + -" I didn't tell her that. (... I didn't say it; she could have inferred it, etc.)\n" + -" I didn't tell her that. (... I told someone else.)\n" + -" I didn't tell her that. (... I told her something else.)\n" + -"\n" + -"This can also be used to express emotion:\n" + -"\n" + -" Oh really? (...I didn't know that)\n" + -" Oh really? (...I disbelieve you)\n" + -"\n" + -"The nuclear syllable is spoken more loudly than the others and has a characteristic change of pitch. The changes of pitch most commonly encountered in English are the rising pitch and the falling pitch, although the fall-rising pitch and/or the rise-falling pitch are sometimes used. In this opposition between falling and rising pitch, which plays a larger role in English than in most other languages, falling pitch conveys certainty and rising pitch uncertainty. This can have a crucial impact on meaning, specifically in relation to polarity, the positive–negative opposition; thus, falling pitch means \"polarity known\", while rising pitch means \"polarity unknown\". This underlies the rising pitch of yes/no questions. For example:\n" + -"\n" + -" When do you want to be paid?\n" + -" Now? (Rising pitch. In this case, it denotes a question: \"Can I be paid now?\" or \"Do you desire to be paid now?\")\n" + -" Now. (Falling pitch. In this case, it denotes a statement: \"I choose to be paid now.\")\n" + -"\n" + -"Grammar\n" + -"\n" + -" Main article: English grammar\n" + -"\n" + -"English grammar has minimal inflection compared with most other Indo-European languages. For example, Modern English, unlike Modern German or Dutch and the Romance languages, lacks grammatical gender and adjectival agreement. Case marking has almost disappeared from the language and mainly survives in pronouns. The patterning of strong (e.g. speak/spoke/spoken) versus weak verbs inherited from its Germanic origins has declined in importance in modern English, and the remnants of inflection (such as plural marking) have become more regular.\n" + -"\n" + -"At the same time, the language has become more analytic, and has developed features such as modal verbs and word order as rich resources for conveying meaning. Auxiliary verbs mark constructions such as questions, negative polarity, the passive voice and progressive tenses.\n" + -"\n" + -"Vocabulary\n" + -"\n" + -"The English vocabulary has changed considerably over the centuries.[31]\n" + -"\n" + -"Germanic words (generally words of Old English or to a lesser extent Norse origin) which include all the basics such as pronouns (I, my, you, it) and conjunctions (and, or, but) tend to be shorter than the Latinate words of English, and more common in ordinary speech. The longer Latinate words are often regarded as more elegant or educated. However, the excessive or superfluous use of Latinate words is considered at times to be either pretentious (as in the stereotypical policeman's talk of \"apprehending the suspect\") or an attempt to obfuscate an issue. George Orwell's essay \"Politics and the English Language\" is critical of this, as well as other perceived abuses of the language.\n" + -"\n" + -"An English speaker is in many cases able to choose between Germanic and Latinate synonyms: come or arrive; sight or vision; freedom or liberty. In some cases there is a choice between a Germanic derived word (oversee), a Latin derived word (supervise), and a French word derived from the same Latin word (survey). The richness of the language arises from the variety of different meanings and nuances such synonyms harbour, enabling the speaker to express fine variations or shades of thought. Familiarity with the etymology of groups of synonyms can give English speakers greater control over their linguistic register. See: List of Germanic and Latinate equivalents.\n" + -"\n" + -"An exception to this and a peculiarity perhaps unique to English is that the nouns for meats are commonly different from, and unrelated to, those for the animals from which they are produced, the animal commonly having a Germanic name and the meat having a French-derived one. Examples include: deer and venison; cow and beef; swine/pig and pork, or sheep and mutton. This is assumed to be a result of the aftermath of the Norman invasion, where a French-speaking elite were the consumers of the meat, produced by English-speaking lower classes.\n" + -"\n" + -"In everyday speech, the majority of words will normally be Germanic. If a speaker wishes to make a forceful point in an argument in a very blunt way, Germanic words will usually be chosen. A majority of Latinate words (or at least a majority of content words) will normally be used in more formal speech and writing, such as a courtroom or an encyclopedia article. However, there are other Latinate words that are used normally in everyday speech and do not sound formal; these are mainly words for concepts that no longer have Germanic words, and are generally assimilated better and in many cases do not appear Latinate. For instance, the words mountain, valley, river, aunt, uncle, move, use, push and stay are all Latinate.\n" + -"\n" + -"English is noted for the vast size of its active vocabulary and its fluidity.[citation needed][weasel words] English easily accepts technical terms into common usage and imports new words and phrases that often come into common usage. Examples of this phenomenon include: cookie, Internet and URL (technical terms), as well as genre, über, lingua franca and amigo (imported words/phrases from French, German, modern Latin, and Spanish, respectively). In addition, slang often provides new meanings for old words and phrases. In fact, this fluidity is so pronounced that a distinction often needs to be made between formal forms of English and contemporary usage. See also: sociolinguistics.\n" + -"\n" + -"Number of words in English\n" + -"\n" + -"English has an extraordinarily rich vocabulary and willingness to absorb new words. As the General Explanations at the beginning of the Oxford English Dictionary states:\n" + -"\n" + -" The Vocabulary of a widely diffused and highly cultivated living language is not a fixed quantity circumscribed by definite limits... there is absolutely no defining line in any direction: the circle of the English language has a well-defined centre but no discernible circumference.\n" + -"\n" + -"The vocabulary of English is undoubtedly vast, but assigning a specific number to its size is more a matter of definition than of calculation. Unlike other languages, there is no Academy to define officially accepted words. Neologisms are coined regularly in medicine, science and technology and other fields, and new slang is constantly developed. Some of these new words enter wide usage; others remain restricted to small circles. Foreign words used in immigrant communities often make their way into wider English usage. Archaic, dialectal, and regional words might or might not be widely considered as \"English\".\n" + -"\n" + -"The Oxford English Dictionary, 2nd edition (OED2) includes over 600,000 definitions, following a rather inclusive policy:\n" + -"\n" + -" It embraces not only the standard language of literature and conversation, whether current at the moment, or obsolete, or archaic, but also the main technical vocabulary, and a large measure of dialectal usage and slang (Supplement to the OED, 1933).[32]\n" + -"\n" + -"The editors of Webster's Third New International Dictionary, Unabridged (475,000 main headwords) in their preface, estimate the number to be much higher. It is estimated that about 25,000 words are added to the language each year.[33]\n" + -"\n" + -"Word origins\n" + -"Influences in English vocabulary\n" + -"Influences in English vocabulary\n" + -"\n" + -" Main article: Lists of English words of international origin\n" + -"\n" + -"One of the consequences of the French influence is that the vocabulary of English is, to a certain extent, divided between those words which are Germanic (mostly Old English) and those which are \"Latinate\" (Latin-derived, either directly from Norman French or other Romance languages).\n" + -"\n" + -"Numerous sets of statistics have been proposed to demonstrate the various origins of English vocabulary. None, as yet, are considered definitive by a majority of linguists.\n" + -"\n" + -"A computerised survey of about 80,000 words in the old Shorter Oxford Dictionary (3rd ed.) was published in Ordered Profusion by Thomas Finkenstaedt and Dieter Wolff (1973)[34] that estimated the origin of English words as follows:\n" + -"\n" + -" * Langue d'oïl, including French and Old Norman: 28.3%\n" + -" * Latin, including modern scientific and technical Latin: 28.24%\n" + -" * Other Germanic languages (including words directly inherited from Old English): 25%\n" + -" * Greek: 5.32%\n" + -" * No etymology given: 4.03%\n" + -" * Derived from proper names: 3.28%\n" + -" * All other languages contributed less than 1% (e.g. Arabic-English loanwords)\n" + -"\n" + -"A survey by Joseph M. Williams in Origins of the English Language of 10,000 words taken from several thousand business letters[35] gave this set of statistics:\n" + -"\n" + -" * French (langue d'oïl), 41%\n" + -" * \"Native\" English, 33%\n" + -" * Latin, 15%\n" + -" * Danish, 2%\n" + -" * Dutch, 1%\n" + -" * Other, 10%\n" + -"\n" + -"However, 83% of the 1,000 most-common English words are Anglo-Saxon in origin. [36]\n" + -"\n" + -"Dutch origins\n" + -"\n" + -" Main article: List of English words of Dutch origin\n" + -"\n" + -"Words describing the navy, types of ships, and other objects or activities on the water are often from Dutch origin. Yacht (Jacht) and cruiser (kruiser) are examples.\n" + -"\n" + -"French origins\n" + -"\n" + -" Main article: List of French phrases used by English speakers\n" + -"\n" + -"There are many words of French origin in English, such as competition, art, table, publicity, police, role, routine, machine, force, and many others that have been and are being anglicised; they are now pronounced according to English rules of phonology, rather than French. A large portion of English vocabulary is of French or Oïl language origin, most derived from, or transmitted via, the Anglo-Norman spoken by the upper classes in England for several hundred years after the Norman Conquest.\n"; - - -var greek = -"Ελλάδα\n" + -"Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια\n" + -"Ελληνική Δημοκρατία\n" + -" \n" + -"Σημαία Εθνόσημο\n" + -"Εθνικό σύνθημα: Ελευθερία ή Θάνατος\n" + -"Εθνικός ύμνος: Ὕμνος εἰς τὴν Ἐλευθερίαν\n" + -"\n" + -"Πρωτεύουσα Αθήνα \n" + -"38.01.36N 23.44.00E\n" + -"\n" + -"Μεγαλύτερη πόλη Αθήνα\n" + -"Επίσημες γλώσσες Ελληνική\n" + -"Πολίτευμα\n" + -"\n" + -"Πρόεδρος της Δημοκρατίας\n" + -"Πρωθυπουργός Προεδρευόμενη\n" + -"Κοινοβουλευτική Δημοκρατία\n" + -"Κάρολος Παπούλιας\n" + -"Κωνσταντίνος Καραμανλής\n" + -"Ανεξαρτησία\n" + -"- Κηρύχθηκε\n" + -"- Αναγνωρίστηκε\n" + -"\n" + -"25 Μαρτίου, 1821\n" + -"1828\n" + -"Έκταση\n" + -" - Σύνολο\n" + -" - Νερό (%) \n" + -"131.940 km² (94ηη)\n" + -"%0.86\n" + -"Πληθυσμός\n" + -" - Εκτίμηση 2006\n" + -" - Απογραφή 2001\n" + -" - Πυκνότητα \n" + -"11.120.000 [1] (72ηη)\n" + -"10.964.020\n" + -"83.1 κάτ./km² (87ηη)\n" + -"Α.Ε.Π.\n" + -" - Ολικό\n" + -" - Κατά κεφαλή Εκτίμηση 2007\n" + -"$305,595 δισ. (37η)\n" + -"$27,360 (27η)\n" + -"Νόμισμα Ευρώ\n" + -"(€)\n" + -"Ζώνη ώρας\n" + -" - Θερινή ώρα (UTC+2)\n" + -"(UTC+3)\n" + -"Internet TLD .gr\n" + -"Κωδικός κλήσης +30\n" + -"Η Ελλάδα (αρχαΐζουσα: Ἑλλάς, επίσημα: Ελληνική Δημοκρατία), είναι χώρα στην νοτιοανατολική Ευρώπη, στο νοτιότερο άκρο της Βαλκανικής χερσονήσου, στην Ανατολική Μεσόγειο. Συνορεύει στην ξηρά, βόρεια με την Πρώην Γιουγκοσλαβική Δημοκρατία της Μακεδονίας και την Βουλγαρία, στα βορειοδυτικά με την Αλβανία και στα βορειοανατολικά με την Τουρκία. Βρέχεται ανατολικά από το Αιγαίο Πέλαγος, στα δυτικά και νότια από το Ιόνιο και από την Μεσόγειο Θάλασσα. Είναι το λίκνο του Δυτικού πολιτισμού. Η Ελλάδα έχει μια μακρά και πλούσια ιστορία κατά την οποία άσκησε μεγάλη πολιτισμική επίδραση σε τρεις ηπείρους.\n" + -"Πίνακας περιεχομένων [Απόκρυψη]\n" + -"1 Ιστορία\n" + -"2 Πολιτικά\n" + -"2.1 Κόμματα\n" + -"2.2 Κυβέρνηση\n" + -"3 Περιφέρειες\n" + -"3.1 Βουνά της Ελλάδας\n" + -"3.2 Λίμνες της Ελλάδας\n" + -"3.3 Ποτάμια της Ελλάδας\n" + -"3.4 Κλίμα\n" + -"4 Οικονομία\n" + -"5 Δημογραφία\n" + -"6 Ένοπλες δυνάμεις και Σώματα ασφαλείας\n" + -"6.1 Υποχρεωτική στράτευση\n" + -"7 Πολιτισμός\n" + -"7.1 Αργίες\n" + -"8 Σημειώσεις\n" + -"9 Δείτε επίσης\n" + -"10 Εξωτερικές συνδέσεις\n" + -"[Επεξεργασία]\n" + -"Ιστορία\n" + -"\n" + -"Κύριο άρθρο: Ελληνική ιστορία\n" + -"Στις ακτές του Αιγαίου Πελάγους εμφανίστηκαν οι πρώτοι πολιτισμοί της Ευρώπης, ο Μινωικός και ο Μυκηναϊκός. Την εποχή των πολιτισμών αυτών, ακολούθησε μία σκοτεινή περίοδος περίπου μέχρι το 800 π.Χ., οπότε εμφανίζεται ένας καινούριος Ελληνικός πολιτισμός, βασισμένος στο μοντέλο της πόλης-κράτους. Είναι ο πολιτισμός που θα διαδοθεί με τον αποικισμό των ακτών της Μεσογείου, θα αντισταθεί στην Περσική εισβολή με τους δύο επιφανέστερους εκπροσώπους του, την κοσμοπολίτικη και δημοκρατική Αθήνα και την μιλιταριστική και ολιγαρχική Σπάρτη, θα αποτελέσει τη βάση του Ελληνιστικού πολιτισμού που δημιούργησαν οι κατακτήσεις του Μεγάλου Αλεξάνδρου, θα επηρεάσει ως ένα βαθμό την πολιτισμική φυσιογνωμία της Βυζαντινής Αυτοκρατορίας και αργότερα θα πυροδοτήσει την Αναγέννηση στην Ευρώπη.\n" + -"Στρατιωτικά έχανε δύναμη σε σύγκριση με τη Ρωμαϊκή αυτοκρατορία μέχρι που κατακτήθηκε τελικά από τους Ρωμαίους το 146 π.Χ., αν και ο Ελληνικός πολιτισμός τελικά κατέκτησε το Ρωμαϊκό τρόπο ζωής. Οι Ρωμαίοι αναγνώρισαν και θαύμασαν τον πλούτο του Ελληνικού πολιτισμού, τον μελέτησαν βαθιά και έγιναv συνειδητά συνεχιστές του. Διέσωσαν επίσης και μεγάλο μέρος της αρχαιοελληνικής γραμματείας. Αν και ήταν μόνο ένα μέρος της Ρωμαϊκής αυτοκρατορίας, ο ελληνικός πολιτισμός θα συνέχιζε να δεσπόζει στην Ανατολική Μεσόγειο, και όταν τελικά η Αυτοκρατορία χωρίστηκε στα δύο, η ανατολική ή Βυζαντινή Αυτοκρατορία με πρωτεύουσα την Κωνσταντινούπολη, θα είχε κυρίως λόγω γλώσσας έντονο τον ελληνικό χαρακτήρα. Από τον 4ο μέχρι τον 15ο αιώνα, η Ανατολική Ρωμαϊκή Αυτοκρατορία επέζησε επιθέσεις 11 αιώνων από δυτικά και ανατολικά, μέχρι που η Κωνσταντινούπολη έπεσε στις 29 Μαΐου του 1453 στα χέρια της Οθωμανικής Αυτοκρατορίας. Σταδιακά το Βυζάντιο κατακτήθηκε ολόκληρο μέσα στον 15ο αιώνα.\n" + -"Η Οθωμανική κυριαρχία συνεχίστηκε μέχρι το 1821 που οι Έλληνες κήρυξαν την ανεξαρτησία τους. Η Ελληνική Επανάσταση του 1821 έληξε το 1828. Το 1830 αναγνωρίζεται η ανεξαρτησία του νέου ελληνικού κράτους. Εγκαθιδρύθηκε μοναρχία το 1833. Μέσα στον 19ο και τον πρώιμο 20ό αιώνα, η Ελλάδα προσπάθησε να προσαρτήσει στα εδάφη της όλες τις περιοχές που ακόμη ανήκαν στην Οθωμανική Αυτοκρατορία και είχαν Ελληνόφωνο πληθυσμό, πράγμα που κατάφερε εν μέρει, επεκτείνοντας σταδιακά την έκτασή της, μέχρι να φτάσει το σημερινό της μέγεθος το 1947.\n" + -"Μετά τον Δεύτερο Παγκόσμιο Πόλεμο στην Ελλάδα ξέσπασε εμφύλιος πόλεμος μέχρι το 1949. Αργότερα, το 1952, η Ελλάδα έγινε μέλος του ΝΑΤΟ. Στις 21 Απριλίου του 1967 ο στρατός, υποβοηθούμενος από την κυβέρνηση των ΗΠΑ, πήρε την εξουσία με πραξικόπημα. Οι δικτατορες στη συνεχεια διαχωριστηκαν και απο τον βασιλια, τον εκδίωξαν απο την χώρα και κατήργησαν τη μοναρχία. Η στρατιωτική Χούντα υπήρξε η αιτία δημιουργίας, μετά από λανθασμένους χειρισμούς που εκμεταλλεύτηκε η Τουρκική πλευρά, του Κυπριακού ζητήματος, το οποίο οδήγησε στην κατάρρευσή της το 1974. Έπειτα από δημοψήφισμα για την κατάργηση της μοναρχίας στις 8 Δεκεμβρίου 1974 το πολίτευμα της Ελλάδας μετατράπηκε ξανά σε αβασίλευτη Δημοκρατία και συντάχθηκε νέο σύνταγμα από την πέμπτη Αναθεωρητική Βουλή που τέθηκε σε ισχύ στις 11 Ιουνίου 1975, το οποίο ισχύει σήμερα όπως αναθεωρήθηκε το 1986 και το 2001. Η Ελλάδα έγινε μέλος της Ευρωπαϊκής Ένωσης το 1981 και μέλος της Ευρωπαϊκής Οικονομικής και Νομισματικής Ένωσης (ΟΝΕ) γνωστής και ως ζώνης ευρώ, το 2001.\n" + -"Ελληνική ιστορία \n" + -"Κυκλαδικός πολιτισμός (3η χιλιετία π.Χ.)\n" + -"Μινωικός πολιτισμός (3000-1450 π.Χ.)\n" + -"Μυκηναϊκός πολιτισμός (1600-1100 π.Χ.)\n" + -"Γεωμετρική εποχή (1100-800 π.Χ.)\n" + -"Αρχαϊκή εποχή (800-500 π.Χ.)\n" + -"Κλασική εποχή (500 π.Χ.- 323 π.Χ.)\n" + -"Ελληνιστική εποχή (323-146 π.Χ.)\n" + -"Ρωμαϊκή περίοδος (146 π.Χ.-330 μ.Χ.)\n" + -"Βυζαντινή περίοδος (330-1453)\n" + -"Οθωμανική περίοδος (1453-1821)\n" + -"Νεότερη Ελλάδα (1821 έως σήμερα)\n" + -"Σχετικά\n" + -"Αρχαία ελληνική γραμματεία\n" + -"Ελληνική γλώσσα\n" + -"Ονομασίες Ελλήνων\n" + -"\n" + -"[Επεξεργασία]\n" + -"Πολιτικά\n" + -"\n" + -"Το Σύνταγμα του 1975 περιέχει εκτενείς εγγυήσεις των ελευθεριών και των δικαιωμάτων του πολίτη, ελευθερίες και δικαιώματα που ενισχύθηκαν περαιτέρω με την αναθεώρηση του 2001. Είναι χαρακτηριστικό ότι κατά την αναθεώρηση αυτή κατοχυρώθηκαν, για πρώτη φορά συνταγματικά, πέντε ανεξάρτητες αρχές, οι τρεις εκ των οποίων (Συνήγορος του Πολίτη, Αρχή Διασφάλισης Ατομικών Δικαιωμάτων και Αρχή Προστασίας Προσωπικών Δεδομένων) είναι ταγμένες στην προστασία και διασφάλιση των ατομικών δικαιωμάτων. Η Ελλάδα είναι επίσης μέλος της Ευρωπαϊκής Σύμβασης για τα Δικαιώματα του Ανθρώπου.\n" + -"Σε πολιτειακό και οργανωτικό επίπεδο, το Σύνταγμα διακρίνει τρεις εξουσίες: τη νομοθετική, την εκτελεστική και τη δικαστική. Στη νομοθετική μετέχουν ο Πρόεδρος της Δημοκρατίας και η Βουλή· στην εκτελεστική ο Πρόεδρος της Δημοκρατίας και η Κυβέρνηση, ενώ η δικαστική εξουσία ασκείται από τα δικαστήρια στο όνομα του ελληνικού λαού.\n" + -"Ο Πρόεδρος της Δημοκρατίας, ιεραρχικά, βρίσκεται στην κορυφή της εκτελεστικής εξουσίας, μετέχει στη νομοθετική με τη δημοσίευση των νόμων και τη δυνατότητα αναπομπής ψηφισμένου νομοσχεδίου, ενώ ορίζεται από το Σύνταγμα ως ρυθμιστής του πολιτεύματος [2] . Εκλέγεται έμμεσα από τη Βουλή με διαδοχικές ψηφοφορίες των μελών της, στις οποίες επιδιώκεται η εξασφάλιση πλειοψηφίας 2/3, σε πρώτη φάση, και 3/5, σε δεύτερη, του συνόλου των μελών της. Σε περίπτωση αποτυχίας συγκέντρωσης των ανωτέρω πλειοψηφιών, διαλύεται η Βουλή, προκηρύσσονται εκλογές και η νέα Βουλή εκλέγει τον Πρόεδρο της Δημοκρατίας με την απόλυτη πλειοψηφία των μελών της, ή και με σχετική αν δεν συγκεντρωθεί η απόλυτη πλειοψηφία. Οι εξουσίες του Προέδρου είναι περιορισμένες καθώς ασκεί, κυρίως, τελετουργικά καθήκοντα. Όλες, σχεδόν, οι πράξεις του, χρήζουν προσυπογραφής από τον Πρωθυπουργό ή άλλο μέλος της Κυβέρνησης (υπουργό), όπως, π.χ., τα προεδρικά διατάγματα. Από την υποχρέωση προσυπογραφής εξαιρούνται ρητά ελάχιστες πράξεις του Προέδρου που προβλέπονται από το Σύνταγμα, όπως ο διορισμός των υπαλλήλων της Προεδρίας της Δημοκρατίας. Η θητεία του είναι πενταετής με δικαίωμα επανεκλογής για μία ακόμη φορά.\n" + -"Η νομοθετική εξουσία ασκείται από τη Βουλή, τα μέλη της οποίας εκλέγονται με καθολική μυστική ψηφοφορία για τετραετή θητεία. Εκλογές μπορεί να κηρυχθούν νωρίτερα για έκτακτους λόγους, όπως αυτοί ορίζονται στο Σύνταγμα. Μετά, πάντως, το 1975 η προκήρυξη πρόωρων εκλογών αποτελεί τον κανόνα, με την επίκληση, συνήθως, από τις απερχόμενες κυβερνήσεις ιδιαζούσης σημασίας εθνικού θέματος. Η Ελληνική Δημοκρατία χρησιμοποιεί για την ανάδειξη των βουλευτών ένα σύνθετο ενδυναμωμένο εκλογικό σύστημα αναλογικής εκπροσώπησης (ενισχυμένη αναλογική), που αποθαρρύνει τη δημιουργία πολυκομματικών Κυβερνήσεων συνεργασίας και επιτρέπει ισχυρή κυβέρνηση πλειοψηφίας, ακόμα και αν το πρώτο κόμμα υστερεί της πλειοψηφίας των ψήφων. Για να μπορεί να καταλάβει μία από τις 300 βουλευτικές έδρες ένα κόμμα, πρέπει να έχει λάβει τουλάχιστον το 3% του συνόλου των ψήφων, ενώ με τον εκλογικό νόμο, που θα εφαρμοστεί, για πρώτη φορά, στις μετά το 2004 βουλευτικές εκλογές, το πρώτο κόμμα εξασφαλίζει απόλυτη πλειοψηφία στη Βουλή με ποσοστό 41%.\n" + -"Η εκτελεστική εξουσία ασκείται από την Κυβέρνηση, κεφαλή της οποίας είναι ο Πρωθυπουργός, το ισχυρότερο πρόσωπο του ελληνικού πολιτικού συστήματος. Η Κυβέρνηση καθορίζει και κατευθύνει τη γενική πολιτική της Χώρας [3], εφαρμόζει την πολιτική, που εγκρίνει μέσω των νομοθετικών πράξεων η Βουλή, αλλά ταυτόχρονα μετέχει στη νομοπαρασκευαστική διαδικασία, μέσω της σύνταξης και της προώθησης προς ψήφιση των νομοσχεδίων. Η Κυβέρνηση με βάση την αρχή της δεδηλωμένης οφείλει να απολαύει της εμπιστοσύνης της Βουλής, να έχει λάβει δηλαδή ψήφο εμπιστοσύνης από την πλειοψηφία των Βουλευτών. Στα πλαίσια δε της σύγχρονης κομματικής δημοκρατίας, η Κυβέρνηση κυριαρχεί και στη νομοθετική λειτουργία, καθώς προέρχεται από το Κόμμα που ελέγχει την πλειοψηφία του Κοινοβουλίου, καθιστώντας, έτσι, την ψήφιση των νόμων μια τυπική, κατά κανόνα, διαδικασία. Λόγω δε της συχνής έως καταχρηστικής επίκλησης της κομματικής πειθαρχίας, η δυνατότητα διαφωνίας κυβερνητικού βουλευτή με την Κυβέρνηση που στηρίζει θεωρείται σπάνιο φαινόμενο. Σε έκτακτες περιπτώσεις μπορεί η Κυβέρνηση να εκδίδει Πράξεις Νομοθετικού Περιεχομένου. Οι Π.Ν.Π. έχουν ισχύ νόμου και οφείλουν να εγκριθούν εντός 40 ημερών από τη Βουλή.\n" + -"Ο Πρωθυπουργός αποτελεί την κεφαλή της κυβέρνησης και, με βάση το Σύνταγμα, είναι, συνήθως (αν και όχι απαραίτητα), ο αρχηγός του έχοντος την απόλυτη πλειοψηφία στη Βουλή κυβερνώντος κόμματος. Βάσει του άρθρου 82 του Συντάγματος, \"ο Πρωθυπουργός εξασφαλίζει την ενότητα της Κυβέρνησης και κατευθύνει τις ενέργειές της, καθώς και των δημοσίων γενικά υπηρεσιών για την εφαρμογή της κυβερνητικής πολιτικής μέσα στο πλαίσιο των νόμων\" [3]. Οι βασικότερες εξουσίες του είναι οι εξής:\n" + -"Προεδρεύει του Υπουργικού Συμβουλίου, στο οποίο μετέχει μαζί με τους Υπουργούς.\n" + -"Με δέσμια πρόταση του διορίζονται και παύονται από τον Πρόεδρο της Δημοκρατίας οι υπουργοί και οι υφυπουργοί της Κυβέρνησης.\n" + -"Καθορίζει με τον οικείο Υπουργό τις αρμοδιότητες των υφυπουργών.\n" + -"Προΐσταται τεσσάρων αυτοτελών υπηρεσιών και γραμματειών: του Πολιτικού Γραφείου του Πρωθυπουργού, της Γραμματείας της Κυβερνήσεως, της Κεντρικής Νομοπαρασκευαστικής Επιτροπής και της Γενικής Γραμματείας Τύπου.\n" + -"Δίνει άδεια για τη δημοσίευση στην Εφημερίδα της Κυβερνήσεως οποιουδήποτε κειμένου πρέπει, κατά το νόμο, να καταχωρισθεί σε αυτήν.\n" + -"[Επεξεργασία]\n" + -"Κόμματα\n" + -"Περισσότερα: Κατάλογος ελληνικών πολιτικών κομμάτων\n" + -"Μετά την αποκατάσταση της Δημοκρατίας το 1974 (μεταπολίτευση) το πολιτικό σύστημα κυριαρχείται από το φιλελεύθερο κόμμα της Νέας Δημοκρατίας και το σοσιαλιστικό ΠΑΣΟΚ (Πανελλλήνιο Σοσιαλιστικό Κίνημα). Άλλα κόμματα είναι το Κομμουνιστικό Κόμμα Ελλάδας, ο Συνασπισμός της Αριστεράς και ο ΛΑ.Ο.Σ..\n" + -"[Επεξεργασία]\n" + -"Κυβέρνηση\n" + -"Περισσότερα: Κυβέρνηση της Ελλάδας\n" + -"Στις εκλογές της 7 Μαρτίου 2004, πρωθυπουργός εκλέχθηκε ο Κωνσταντίνος Α. Καραμανλής, πρόεδρος της Νέας Δημοκρατίας. Ήταν η πρώτη εκλογική νίκη του κόμματος μετά από 11 χρόνια. Ο Καραμανλής αντικατέστησε τον Κωνσταντίνο Σημίτη και σχημάτισε δική του κυβέρνηση. Οι επόμενες βουλευτικές εκλογές προβλέπονταν από το Σύνταγμα για το 2008, όμως διεξήχθησαν πρόωρα στις 16 Σεπτεμβρίου 2007. Τις εκλογές της 16ης κέρδισε ξανά η ΝΔ. Η Νέα βουλή είναι η πρώτη πεντακομματική Βουλή τα τελευταία χρόνια και σε αυτή συμμετέχουν η ΝΔ το ΠΑΣΟΚ, το ΚΚΕ, ο ΣΥ.ΡΙ.ΖΑ και το ΛΑ.Ο.Σ. Συγκεκριμένα η ΝΔ εξασφάλισε το 41.83% και 152 από τις 300 Έδρες. Το ΠΑΣΟΚ εξασφάλισε το 38.10 % και 102 Έδρες. Το Κ.Κ.Ε εξασφάλισε το 8.15% και 22 έδρες. Ο ΣΥ.ΡΙ.ΖΑ εξασφάλισε το 5.04% και 14 έδρες και τέλος το ΛΑ.Ο.Σ εξασφάλισε το 3.80% κερδίζοντας 10 έδρες.\n" + -"[Επεξεργασία]\n" + -"Περιφέρειες\n" + -"\n" + -"Κύριο άρθρο: Περιφέρειες της Ελλάδας\n" + -"Η Ελλάδα χωρίζεται σε 13 διοικητικές περιοχές γνωστές σαν Περιφέρειες, που διαχωρίζονται περαιτέρω σε 51 Νομούς:\n" + -"Αττική\n" + -"Αττική\n" + -"Στερεά Ελλάδα\n" + -"Εύβοια\n" + -"Ευρυτανία\n" + -"Φωκίδα\n" + -"Φθιώτιδα\n" + -"Βοιωτία\n" + -"Κεντρική Μακεδονία\n" + -"Χαλκιδική\n" + -"Ημαθία\n" + -"Κιλκίς\n" + -"Πέλλα\n" + -"Πιερία\n" + -"Σέρρες\n" + -"Θεσσαλονίκη\n" + -"Κρήτη\n" + -"Χανιά\n" + -"Ηράκλειο\n" + -"Λασίθι\n" + -"Ρέθυμνο\n" + -"Ανατολική Μακεδονία και Θράκη\n" + -"Καβάλα\n" + -"Δράμα\n" + -"Ξάνθη\n" + -"Ροδόπη\n" + -"Έβρος\n" + -"Ήπειρος\n" + -"Άρτα\n" + -"Ιωάννινα\n" + -"Πρέβεζα\n" + -"Θεσπρωτία\n" + -"Ιόνια νησιά\n" + -"Κέρκυρα\n" + -"Κεφαλονιά\n" + -"Λευκάδα\n" + -"Ζάκυνθος\n" + -"Βόρειο Αιγαίο\n" + -"Χίος\n" + -"Λέσβος\n" + -"Σάμος - Ικαρία\n" + -"Πελοπόννησος\n" + -"Αρκαδία\n" + -"Αργολίδα\n" + -"Κορινθία\n" + -"Λακωνία\n" + -"Μεσσηνία\n" + -"Νότιο Αιγαίο\n" + -"Κυκλάδες\n" + -"Δωδεκάνησα\n" + -"Θεσσαλία\n" + -"Καρδίτσα\n" + -"Λάρισα\n" + -"Μαγνησία\n" + -"Τρίκαλα\n" + -"Δυτική Ελλάδα\n" + -"Αχαΐα\n" + -"Αιτωλοακαρνανία\n" + -"Ηλεία\n" + -"Δυτική Μακεδονία\n" + -"Φλώρινα\n" + -"Γρεβενά\n" + -"Καστοριά\n" + -"Κοζάνη\n" + -"Επιπλέον, στη Μακεδονία υπάρχει μία αυτόνομη περιοχή, το Άγιο Όρος, μία μοναστική πολιτεία υπό Ελληνική κυριαρχία. Οι νομοί χωρίζονται σε 147 επαρχίες, που διαιρούνται σε 900 δήμους και 133 κοινότητες. Πριν το 1999, υπήρχαν 5.775 οργανισμοί τοπικής αυτοδιοίκησης: 361 δήμοι και 5.560 κοινότητες, υποδιαιρούμενες σε 12.817 οικισμούς\n" + -"\n" + -"\n" + -"\n" + -"Αλβανία\n" + -"\n" + -"П.Γ.Δ.Μ.\n" + -"\n" + -"Βουλγαρία\n" + -"'\n" + -"\n" + -"Τουρκία\n" + -"\n" + -"EΛΛAΣ\n" + -"AΘHNA\n" + -"Θεσσαλονίκη\n" + -"Καβάλα\n" + -"Αλεξανδρούπολη\n" + -"Κέρκυρα\n" + -"Ηγουμενίτσα\n" + -"Λάρισα\n" + -"Βόλος\n" + -"Ιωάννινα\n" + -"Χαλκίδα\n" + -"Πάτρα\n" + -"Πειραιάς\n" + -"Ελευσίνα\n" + -"Λαύριο\n" + -"Ηράκλειο\n" + -"Μ α κ ε δ ο ν ί α\n" + -"Θράκη\n" + -"Ήπειρος\n" + -"Θεσσαλία\n" + -"Στερεά Ελλάδα\n" + -"Πελοπόννησος\n" + -"Όλυμπος (2917m)\n" + -"Λευκάδα\n" + -"Κεφαλονιά\n" + -"Λήμνος\n" + -"Λέσβος\n" + -"Χίος\n" + -"Σάμος\n" + -"Τήνος\n" + -"Ικαρία\n" + -"Νάξος\n" + -"Σαντορίνη\n" + -"Κως\n" + -"Ρόδος\n" + -"Κάρπαθος\n" + -"Κύθηρα\n" + -"Γαύδος\n" + -"Αιγαίον\n" + -"Πέλαγος\n" + -"Μυρτώον\n" + -"Πέλαγος\n" + -"Κρητικόν Πέλαγος\n" + -"Ιόνιον\n" + -"Πέλαγος\n" + -"Μεσόγειος\n" + -"Θάλασσα\n" + -"Κρήτη\n" + -"[Επεξεργασία]\n" + -"Βουνά της Ελλάδας\n" + -"Κύριο άρθρο: Κατάλογος βουνών της Ελλάδας\n" + -"Περίπου το 80% του εδάφους της χώρας είναι ορεινό ή λοφώδες. Μεγάλο μέρος του είναι ξηρό και βραχώδες, μόνο 28% του εδάφους είναι καλλιεργήσιμο.\n" + -"Όλυμπος 2917 μ. Θεσσαλία, Κεντρική Μακεδονία (Λάρισα, Πιερία)\n" + -"Σμόλικας 2637 μ. Βόρεια Πίνδος (Ιωάννινα)\n" + -"Βόρας 2524 μ. Κεντρική Μακεδονία (Πέλλα, Φλώρινα, Π.Γ.Δ.Μ.)\n" + -"Γράμος 2520 μ. Δυτική Μακεδονία (Καστοριά, Ιωάννινα, Αλβανία)\n" + -"Γκιώνα 2510 μ. Στερεά (Φωκίδα)\n" + -"Τύμφη 2497 μ. Βόρεια Πίνδος (Ιωάννινα)\n" + -"Βαρδούσια 2495 μ. Στερεά (Φωκίδα)\n" + -"Αθαμανικά όρη 2469 μ. Νότια Πίνδος (Άρτα)\n" + -"Παρνασσός 2457 μ. Στερεά (Φωκίδα, Φθιώτιδα)\n" + -"Ψηλορείτης 2456 μ. Κρήτη (Ηράκλειο)\n" + -"\n" + -"\n" + -"\n" + -"\n" + -"Η χώρα αποτελείται από ένα μεγάλο ηπειρωτικό τμήμα, το νότιο άκρο των Βαλκανίων, ενωμένο με την πρώην ηπειρωτική Πελοπόννησο, από τον Ισθμό της Κορίνθου, και το Ιόνιο και Αιγαίο πέλαγος. Η Πελοπόννησος πλέον μετά την κατασκευή της διώρυγας της Κορίνθου είναι στην πραγματικότητα νησί. Το Αιγαίο περιέχει πολυάριθμα νησιά, ανάμεσά τους τη Ρόδο, την Εύβοια, τη Λέσβο και τα συμπλέγματα των Κυκλάδων και Δωδεκανήσων. 180 χιλιόμετρα νότια των ακτών δεσπόζει η Κρήτη, το πέμπτο μεγαλύτερο νησί της Μεσογείου. Η Ελλάδα έχει μήκος ακτών 15.021 χιλιόμετρα, που θεωρείται εξαιρετικά μεγάλο, και οφείλεται στον πλούσιο οριζόντιο εδαφικό διαμελισμό, καθώς και στο πλήθος των αναρίθμητων νησιών, τα οποία είναι πάνω από 1500. Έχει μήκος συνόρων που πλησιάζει τα 1.181 χιλιόμετρα.\n" + -"\n" + -"\n" + -"Δορυφορική εικόνα της Ελλάδας\n" + -"Κύριο άρθρο: Γεωγραφία της Ελλάδας\n" + -"[Επεξεργασία]\n" + -"Λίμνες της Ελλάδας\n" + -"Κύριο άρθρο: Κατάλογος λιμνών της Ελλάδας\n" + -"Η Ελλάδα έχει αρκετές λίμνες, οι περισσότερες των οποίων βρίσκονται στο ηπειρωτικό της τμήμα. Οι μεγαλύτερες λίμνες στην ελληνική επικράτεια είναι:\n" + -"Τριχωνίδα 96.513 τ.χλμ.\n" + -"Βόλβη 75.600 τ.χλμ\n" + -"Λίμνη Βεγορίτιδα 72.488 τ.χλμ\n" + -"Λίμνη Βιστονίδα 45.625 τ.χλμ\n" + -"Λίμνη Κορώνεια 42.823 τ.χλμ\n" + -"Μικρή Πρέσπα (ελληνικό τμήμα) 43.122 τ.χλμ\n" + -"Μεγάλη Πρέσπα (ελληνικό τμήμα) 38.325 τ.χλμ\n" + -"Κερκίνη 37.688 τ.χλμ\n" + -"Υπάρχουν επίσης και αρκετές τεχνητές λίμνες κυρίως για παραγωγή ηλεκτρικού ρεύματος, όπως η Λίμνη Κρεμαστών (68.531 τ.χλμ) και η Λίμνη Πολυφύτου (56.793 τ.χλμ).\n" + -"\n" + -"[Επεξεργασία]\n" + -"Ποτάμια της Ελλάδας\n" + -"Αρκετά ποτάμια διαρρέουν την Ελλάδα, από τα οποίο κανένα δεν είναι πλεύσιμο. Μερικά από τα μεγαλύτερα, τα Δέλτα που σχηματίζουν στην εκροή τους προς την θάλασσα αποτελούν σημαντικούς υγροβιότοπους, όπως αυτοί του Αλιάκμονα και του Έβρου. Ποταμοί όπως ο Πηνειός στην Θεσσαλία, υδροδοτούν μεγάλες γεωργικές εκτάσεις με την βοήθεια καναλιών, ενώ σε άλλα έχουν δημιουργηθεί τεχνητές λίμνες για την λειτουργία υδροηλεκτρικών εργοστασίων. Ένα αμφιλεγόμενο για οικολογικούς λόγους σχέδιο των τελευταίων δεκαετιών, είναι η εκτροπή του Αχελώου από τη νότια Πίνδο για την αντιμετώπιση του υδατικού προβλήματος της Θεσσαλίας.\n" + -"Ακολουθεί κατάλογος των μεγαλύτερων σε μήκος ποταμών της Ελλάδας. Το μήκος που αναγράφεται είναι αυτό που διατρέχει την ελληνική επικράτεια.\n" + -"Αλιάκμονας 297 χλμ.\n" + -"Αχελώος 220 χλμ.\n" + -"Πηνειός (Θεσσαλίας) 205 χλμ.\n" + -"Έβρος [4] 204 χλμ.\n" + -"Νέστος [4] 130 χλμ.\n" + -"Στρυμόνας [4] 118 χλμ.\n" + -"Θύαμις (Καλαμάς) 115 χλμ.\n" + -"Αλφειός 110 χλμ.\n" + -"Άραχθος 110 χλμ.\n" + -"[Επεξεργασία]\n" + -"Κλίμα\n" + -"Η Ελλάδα χαρακτηρίζεται από τον μεσογειακό τύπο του εύκρατου κλίματος και έχει ήπιους υγρούς χειμώνες και ζεστά ξηρά καλοκαίρια. Το κλίμα της χώρας μπορεί να διαιρεθεί σε τέσσερις βασικές κατηγορίες:\n" + -"- υγρό μεσογειακό (δυτική Ελλάδα, δυτική Πελοπόννησος, πεδινά και ημιορεινά της Ηπείρου) - ξηρό μεσογειακό (Κυκλάδες, παραλιακή Κρήτη, Δωδεκάνησα, ανατολική Πελοπόννησος, Αττική, πεδινές περιοχές Ανατολικής Στερεάς) - ηπειρωτικό (δυτική Μακεδονία, εσωτερικά υψίπεδα ηπειρωτικής Ελλάδας, βόρειος Έβρος) - ορεινό (ορεινές περιοχές με υψόμετρο περίπου >1500μ στη βόρεια Ελλάδα, >1800μ στην κεντρική Ελλάδα και >2000μ στην Κρήτη).\n" + -"Οι θερμοκρασίες είναι σπάνια υπερβολικές στις παραθαλάσσιες περιοχές. Στις κλειστές εσωτερικές πεδιάδες και στα υψίπεδα της χώρας παρατηρούνται τα μεγαλύτερα θερμοκρασιακά εύρη -τόσο ετήσια όσο και ημερήσια. Οι χιονοπτώσεις είναι κοινές στα ορεινά από τα τέλη Σεπτεμβρίου (στη βόρεια Ελλάδα, τέλη Οκτωβρίου κατά μέσο όρο στην υπόλοιπη χώρα), ενώ στις πεδινές περιοχές χιονίζει κυρίως από τον Δεκέμβριο μέχρι τα μέσα Μαρτίου. Έχει χιονίσει, πάντως, ακόμα και κατά μήνα Μάιο στη Φλώρινα. Στις παραθαλάσσιες περιοχές των νησιωτικών περιοχών, οι χιονοπτώσεις συμβαίνουν σπανιότερα και δεν αποτελούν βασικό χαρακτηριστικό του κλίματος. Η πόλη της Ρόδου έχει μέσο όρο 0,0 μέρες χιονόπτωσης το χρόνο. Οι καύσωνες επηρεάζουν κυρίως τις πεδινές περιοχές και είναι κοινότεροι τον Ιούλιο και τον Αύγουστο. Σπάνια, πάντως, διαρκούν περισσότερες από 3 μέρες.\n" + -"Η Ελλάδα βρίσκεται μεταξύ των παραλλήλων 34ου και 42oυ του βορείου ημισφαιρίου και έχει μεγάλη ηλιοφάνεια όλο σχεδόν το χρόνο. Λεπτομερέστερα στις διάφορες περιοχές της Ελλάδας παρουσιάζεται μια μεγάλη ποικιλία κλιματικών τύπων, πάντα βέβαια μέσα στα πλαίσια του μεσογειακού κλίματος. Αυτό οφείλεται στην τοπογραφική διαμόρφωση της χώρας που έχει μεγάλες διαφορές υψομέτρου (υπάρχουν μεγάλες οροσειρές κατά μήκος της κεντρικής χώρας και άλλοι ορεινοί όγκοι) και εναλλαγή ξηράς και θάλασσας. Έτσι από το ξηρό κλίμα της Αττικής και γενικά της ανατολικής Ελλάδας μεταπίπτουμε στο υγρό της βόρειας και δυτικής Ελλάδας. Τέτοιες κλιματικές διαφορές συναντώνται ακόμη και σε τόπους που βρίσκονται σε μικρή απόσταση μεταξύ τους, πράγμα που παρουσιάζεται σε λίγες μόνο χώρες σε όλο τον κόσμο.\n" + -"Από κλιματολογικής πλευράς το έτος μπορεί να χωριστεί κυρίως σε δύο εποχές: Την ψυχρή και βροχερή χειμερινή περίοδο που διαρκεί από τα μέσα του Οκτωβρίου και μέχρι το τέλος Μαρτίου και τη θερμή και άνομβρη εποχή που διαρκεί από τον Απρίλιο έως τον Οκτώβριο.\n" + -"Κατά την πρώτη περίοδο οι ψυχρότεροι μήνες είναι ο Ιανουάριος και ο Φεβρουάριος, όπου κατά μέσον όρο η μέση ελάχιστη θερμοκρασία κυμαίνεται από 5-10 °C στις παραθαλάσσιες περιοχές, από 0-5 °C στις ηπειρωτικές περιοχές και σε χαμηλότερες τιμές κάτω από το μηδέν στις βόρειες περιοχές.\n" + -"Οι βροχές ακόμη και τη χειμερινή περίοδο δεν διαρκούν για πολλές ημέρες και ο ουρανός της Ελλάδας δεν μένει συννεφιασμένος για αρκετές συνεχόμενες ημέρες, όπως συμβαίνει σε άλλες περιοχές της γης. Οι χειμερινές κακοκαιρίες διακόπτονται συχνά κατά τον Ιανουάριο και το πρώτο δεκαπενθήμερο του Φεβρουαρίου από ηλιόλουστες ημέρες, τις γνωστές από την αρχαιότητα Αλκυονίδες ημέρες.\n" + -"Η χειμερινή εποχή είναι γλυκύτερη στα νησιά του Αιγαίου και του Ιονίου από ό,τι στη Βόρεια και Ανατολική ηπειρωτική Ελλάδα. Κατά τη θερμή και άνομβρη εποχή ο καιρός είναι σταθερός, ο ουρανός σχεδόν αίθριος, ο ήλιος λαμπερός και δεν βρέχει εκτός από σπάνια διαστήματα με ραγδαίες βροχές ή καταιγίδες μικρής γενικά διάρκειας.\n" + -"Η θερμότερη περίοδος είναι το τελευταίο δεκαήμερο του Ιουλίου και το πρώτο του Αυγούστου οπότε η μέση μεγίστη θερμοκρασία κυμαίνεται από 29 °C μέχρι 35 °C. Κατά τη θερμή εποχή οι υψηλές θερμοκρασίες μετριάζονται από τη δροσερή θαλάσσια αύρα στις παράκτιες περιοχές της χώρας και από τους βόρειους ανέμους (ετησίες) που φυσούν κυρίως στο Αιγαίο.\n" + -"Η άνοιξη έχει μικρή διάρκεια, διότι ο μεν χειμώνας είναι όψιμος, το δε καλοκαίρι αρχίζει πρώιμα. Το φθινόπωρο είναι μακρύ και θερμό και πολλές φορές παρατείνεται στη νότια Ελλάδα μέχρι τα μισά του Δεκεμβρίου.\n" + -"[Επεξεργασία]\n" + -"Οικονομία\n" + -"\n" + -"Κύριο άρθρο: Οικονομία της Ελλάδας\n" + -"Η Ελλάδα έχει μικτή καπιταλιστική οικονομία, με τον δημόσιο τομέα να συνεισφέρει περίπου στο μισό του Α.Ε.Π.. Ο Τουρισμός αποτελεί μία πολύ σημαντική βιομηχανία, που συνεισφέρει κι αυτή σε μεγάλο ποσοστό του Α.Ε.Π., και επίσης αποτελεί πηγή συναλλάγματος. Το 2004 η μεγαλύτερη βιομηχανία στην Ελλάδα με έσοδα γύρω στα 12 δισ. ευρώ ήταν η συνήθως σχετικά αφανής ναυτιλία.\n" + -"Η οικονομία βελτιώνεται σταθερά τα τελευταία χρόνια, καθώς η κυβέρνηση εφάρμοσε αποτελεσματική οικονομική πολιτική, στην προσπάθεια της ένταξης της Ελλάδας στην ζώνη του ευρώ, την 1 Ιανουαρίου 2001. Παράγων που σίγουρα βοήθησε σε αυτήν την πορεία είναι ότι η Ελλάδα είναι αποδέκτης οικονομικής βοήθειας από την Ευρωπαϊκή Ένωση, ίσης περίπου με το 3,3% του Α.Ε.Π. Η συνέχιση τόσο γενναιόδωρων ενισχύσεων από την Ε.Ε. όμως είναι υπό αμφισβήτηση. Η διεύρυνση της Ευρωπαϊκής Ένωσης με την είσοδο χωρών πολύ φτωχότερων από την Ελλάδα σε συνδυασμό με την ανοδική πορεία της ελληνικής οικονομίας θα βγάλει πιθανότατα πολλές περιοχές από τον λεγόμενο Στόχο 1 του Κοινοτικού Πλαισίου Στήριξης στον οποίο κατευθύνονται και οι περισσότερες επιδοτήσεις και στον οποίο ανήκουν περιοχές με Α.Ε.Π. κατά κεφαλήν μικρότερο του 75% του ευρωπαϊκού μέσου όρου. Με τα στοιχεία του 2003 από τον Στόχο 1 έχουν βγει οι εξής περιοχές: Αττική, Νότιο Αιγαίο, Στερεά Ελλάδα, Κεντρική Μακεδονία, Βόρειο Αιγαίο και οριακά η Πελοπόννησος.\n" + -"Μεγάλες προκλήσεις παραμένουν, η μείωση της ανεργίας και η περαιτέρω ανοικοδόμηση της οικονομίας μέσω και της ιδιωτικοποίησης διαφόρων μεγάλων κρατικών εταιρειών, η αναμόρφωση της κοινωνικής ασφάλισης, διόρθωση του φορολογικού συστήματος, και η ελαχιστοποίηση των γραφειοκρατικών αδυναμιών. Η ανάπτυξη υπολογίζεται σε 3,9% για το 2004.\n" + -"Η εθνική κεντρική τράπεζα του κράτους της Ελλάδας είναι η Τράπεζα της Ελλάδος (ΤτΕ), η οποία όμως έχει παραχωρήσει τις περισσότερες αρμοδιότητές της στην Ευρωπαϊκή Κεντρική Τράπεζα (Ε.Κ.Τ.), μετά την είσοδό της στην ζώνη του ευρώ το 2001.\n" + -"[Επεξεργασία]\n" + -"Δημογραφία\n" + -"\n" + -"Κύριο άρθρο: Δημογραφία της Ελλάδας\n" + -"Άρθρο βασικών αποτελεσμάτων απογραφής: Απογραφή 2001\n" + -"Σύμφωνα με την τελευταία απογραφή (2001)[5] ο μόνιμος πληθυσμός της χώρας είναι 10.934.097 κ. Την ημέρα της απογραφής, στη χώρα βρέθηκαν και απογράφηκαν (πραγματικός πληθυσμός) 10.964.020 κ.\n" + -"Η Διεθνής Έκθεση για τις Θρησκευτικές Ελευθερίες που συντάσσει κάθε έτος το Υπουργείο Εξωτερικών των Ηνωμένων Πολιτειών, αναφέρει το 2005: «Περίπου 97% των πολιτών αυτοπροσδιορίζονται, τουλάχιστον κατ’ όνομα, ως Ελληνoρθόδοξοι. Υπάρχουν περίπου 500.000-800.000 παλαιοημερολογίτες σε ολόκληρη τη χώρα – υπερ-συντηρητικοί Ορθόδοξοι, οι οποίοι χρησιμοποιούν το Ιουλιανό ημερολόγιο και είναι αφοσιωμένοι στις παραδοσιακές Ελληνορθόδοξες πρακτικές. Η κυβέρνηση δεν τηρεί στατιστικά στοιχεία για τις θρησκευτικές ομάδες. Κατά τη διάρκεια των απογραφών πληθυσμού, οι κάτοικοι δεν ερωτώνται για το θρησκευτικό τους πιστεύω. Οι αρχές υπολογίζουν ότι η Τουρκόφωνη Μουσουλμανική κοινότητα αριθμεί 98.000 άτομα, αλλά, άλλοι υπολογίζουν ότι ο αριθμός αυτός ανέρχεται σε 140.000 άτομα. Τα περισσότερα χριστιανικά μη Ορθόδοξα δόγματα συναπαρτίζονται κατά κύριο λόγο από γηγενείς Έλληνες. Οι Μάρτυρες του Ιεχωβά αναφέρουν ότι έχουν 30.000 περίπου ενεργά μέλη και 50.000 άτομα που έχουν προσχωρήσει στην πίστη. Οι Καθολικοί υπολογίζονται σε 50.000. Οι Προτεστάντες, συμπεριλαμβανόμενων των Ευαγγελιστών, είναι 30.000, και οι οπαδοί της Εκκλησίας του Ιησού Χριστού των Αγίων των Τελευταίων Ημερών (Μορμόνοι) 300. Οι Σαϊεντολόγοι ισχυρίζονται ότι έχουν 500 ενεργά εγγεγραμμένα μέλη. Η από αιώνων υπάρχουσα Εβραϊκή κοινότητα αριθμεί περίπου 5.000 πιστούς, από τους οποίους 2.000 υπολογίζεται ότι διαμένουν στη Θεσσαλονίκη. Περίπου 250 μέλη της κοινότητας των Μπαχάι είναι διασκορπισμένα στην χώρα, τα περισσότερα των οποίων δεν είναι πολίτες ελληνικής καταγωγής. Η αρχαία Ελληνική Θρησκεία του Δωδεκαθέου έχει περίπου 2.000 μέλη. Υπάρχουν ακόμα μικρές ομάδες Αγγλικανών, Βαπτιστών, καθώς και άλλοι Χριστιανοί που δεν ανήκουν σε κάποιο συγκεκριμένο δόγμα. Δεν υπάρχει επίσημη ή ανεπίσημη εκτίμηση ως προς τον αριθμό των αθέων. Η πλειοψηφία των κατοίκων μη ελληνικής υπηκοότητας δεν είναι Ορθόδοξοι. Η μεγαλύτερη από αυτές τις ομάδες είναι Αλβανοί[5], συμπεριλαμβανόμενων των νομίμων και παρανόμων μεταναστών. Αν και οι περισσότεροι Αλβανοί δεν ανήκουν σε κάποια θρησκεία, παραδοσιακά συνδέονται με τη Μουσουλμανική, την Ορθόδοξη, ή τη Ρωμαιοκαθολική πίστη. Εκτός της εντόπιας Μουσουλμανικής μειονότητας στη Θράκη, οι Μουσουλμάνοι μετανάστες που βρίσκονται στην υπόλοιπη χώρα υπολογίζεται ότι ανέρχονται σε 200.000-300.000.» [6]\n" + -"Τις τελευταίες δεκαετίες η Ελλάδα έχει δεχτεί ένα μεγάλο κύμα μετανάστευσης. Ο συνολικός αριθμός των μεταναστών υπολογίζεται περίπου στο 10% του συνολικού πληθυσμού ή στις 950.000 ανθρώπους. Νόμιμοι κάτοικοι της χώρας είναι περίπου οι μισοί αν και οι αριθμοί έχουν μεγάλη διακύμανση λόγω της έλλειψης επίσημης μεταναστευτικής πολιτικής και της αστάθειας στις γειτονικές χώρες πηγές μεταναστών. Οι μεγαλύτερες πληθυσμιακές ομάδες σύμφωνα με την απογραφή του 2001 φαίνεται να είναι οι προερχόμενοι από Αλβανία, Ρουμανία, Βουλγαρία, Πακιστάν, Ουκρανία, Πολωνία, Αίγυπτο.\n" + -"Πέρα από τους αλλοδαπούς μετανάστες έχουν έρθει μετά την πτώση του Τείχους και αρκετοί ομογενείς από περιοχές της πρώην Ε.Σ.Σ.Δ. και από τα Βαλκάνια. Οι μεγαλύτερες ομάδες παλιννοστούντων είναι από την Αλβανία, την Ρωσία και την Γεωργία.\n" + -"[Επεξεργασία]\n" + -"Ένοπλες δυνάμεις και Σώματα ασφαλείας\n" + -"\n" + -"Ελληνικές Ένοπλες Δυνάμεις:\n" + -"Ελληνικός Στρατός\n" + -"Ελληνικό Πολεμικό Ναυτικό\n" + -"Ελληνική Πολεμική Αεροπορία\n" + -"Σώματα ασφαλείας:\n" + -"Ελληνική Αστυνομία\n" + -"Πυροσβεστικό Σώμα\n" + -"Λιμενικό Σώμα\n" + -"[Επεξεργασία]\n" + -"Υποχρεωτική στράτευση\n" + -"Κύριο άρθρο: Η θητεία στην Ελλάδα\n" + -"Μέχρι το 2004, η Ελλάδα είχε νομοθετήσει υποχρεωτική θητεία 12 μηνών, για όλους τους άνδρες άνω των 18 ετών. Ωστόσο, κινείται προς την ανάπτυξη ενός πλήρως επαγγελματικού στρατού, με στόχο την πλήρη κατάργηση της θητείας. Το Υπουργείο Εθνικής Άμυνας έχει αναγγείλει τη σταδιακή μείωση στους 6 μήνες το 2008 και πιθανολογείται ότι μπορεί και να καταργηθεί τελείως. Παρότι γίνονται δεκτές αιτήσεις γυναικών που θέλουν να υπηρετήσουν, δεν είναι υποχρεωτικό. Η κίνηση αυτή δημιουργεί αντιρρήσεις από τους κύκλους που αντιτίθενται στην υποχρεωτική στράτευση, γιατί ενώ το Άρθρο 2 του Ελληνικού Συντάγματος θέτει υπόχρεους όλους τους Έλληνες πολίτες να υπερασπιστούν την Ελλάδα, ο φόρτος έγκειται ολοκληρωτικά στον ανδρικό πληθυσμό.\n" + -"Οι κληρωτοί δεν λαμβάνουν ιατρική ασφάλιση κατά τη διάρκεια της θητείας τους, ούτε ο χρόνος της θητείας συνυπολογίζεται στα χρόνια εργασίας τους που θεμελιώνουν το συνταξιοδοτικό δικαίωμα. Λαμβάνουν, όμως, πλήρη ιατρική και νοσοκομειακή περίθαλψη από τα κατά τόπους στρατιωτικά νοσοκομεία, εφ' όσον αυτά υπάρχουν στον τόπο που υπηρετούν, αλλιώς αναγκάζονται να μεταφερθούν στην Αθήνα. Ο μισθός του κληρωτού είναι συμβολικός (9 ευρώ το μήνα για τους οπλίτες, σμηνίτες, κληρωτούς, 11 ευρώ για τους στρατεύσιμους δεκανείς, υποσμηνίες, υποκελευστές και τους στρατεύσιμους λοχίες, σμηνίες, κελευστές και 600 ευρώ για τους δόκιμους και των τριών σωμάτων). Οι δόκιμοι υπηρετούν 5 μήνες παραπάνω από τους υπόλοιπους συναδέλφους τους. Ο μισθός δεν αρκεί για να καλύψει τα έξοδα των κληρωτών, ιδιαίτερα όταν ένας κληρωτός υπηρετεί μακριά από τον τόπο διαμονής του, με αποτέλεσμα πρακτικά οι κληρωτοί να ζούνε από την οικονομική στήριξη των γονέων τους κατά την διάρκεια της θητείας τους.\n" + -"[Επεξεργασία]\n" + -"Πολιτισμός\n" + -"\n" + -"Κατάλογος διάσημων Ελλήνων\n" + -"Ελληνική μυθολογία\n" + -"Αρχαία ελληνική λογοτεχνία\n" + -"Ελληνική Αρχιτεκτονική\n" + -"Ελληνική κουζίνα\n" + -"Ελληνική Γλώσσα\n" + -"Ελληνική Μουσική\n" + -"Ελληνικά Μουσεία\n" + -"Μέσα Ενημέρωσης\n" + -"[Επεξεργασία]\n" + -"Αργίες\n" + -"Ημερομηνία Ονομασία Σχόλια\n" + -"1 Ιανουαρίου Πρωτοχρονιά \n" + -"6 Ιανουαρίου Θεοφάνεια \n" + -"κινητή Καθαρά Δευτέρα έναρξη της Μεγάλης Τεσσαρακοστής\n" + -"25η Μαρτίου Ευαγγελισμός της Θεοτόκου και Εθνική Εορτή Εθνική Εορτή για την Επανάσταση του 1821\n" + -"κινητή Μεγάλη Παρασκευή \n" + -"κινητή Πάσχα Ανάσταση του Χριστού\n" + -"κινητή Δευτέρα Διακαινησίμου (Δευτέρα του Πάσχα) Δευτέρα μετά την Ανάσταση\n" + -"1 Μαΐου Πρωτομαγιά \n" + -"κινητή Αγίου Πνεύματος \n" + -"15 Αυγούστου Κοίμηση της Θεοτόκου \n" + -"28η Οκτωβρίου Επέτειος του Όχι Εθνική Εορτή (1940)\n" + -"25 Δεκεμβρίου Χριστούγεννα \n" + -"26 Δεκεμβρίου Σύναξις Θεοτόκου \n" + -"[Επεξεργασία]\n" + -"Σημειώσεις\n" + -"\n" + -"↑ www.destatis.de εκτίμηση πληθυσμού χώρας, 2006\n" + -"↑ Σύνταγμα της Ελλάδας, άρθρο 30\n" + -"↑ 3,0 3,1 Σύνταγμα της Ελλάδας, άρθρο 82\n" + -"↑ 4,0 4,1 4,2 Πηγάζει στη Βουλγαρία\n" + -"↑ 5,0 5,1 απογραφή 2001\n" + -"↑ Πηγή: Διεθνής Έκθεση Θρησκευτικής Ελευθερίας του 2005 στην ελληνική και στην αγγλική, Υπουργείο Εξωτερικών των Η.Π.Α.\n" + -"[Επεξεργασία]\n" + -"Δείτε επίσης\n" + -"\n" + -"Σημαία της Ελλάδας\n" + -"Κατάλογος γλωσσών της Ελλάδας\n" + -"Τράπεζα της Ελλάδος\n" + -"Ονομασίες της Ελλάδας σε διάφορες γλώσσες\n" + -"Άτλας της Ελλάδας: συλλογή διαφόρων χαρτών της Ελλάδας στα Κοινά (Commons).\n" + -"Κατάλογος νοσοκομείων της Ελλάδας\n" + -"[Επεξεργασία]\n" + -"Εξωτερικές συνδέσεις\n" + -"\n" + -"Πρωθυπουργός της Ελλάδας (Γραφείο Πρωθυπουργού)\n" + -"Βουλή των Ελλήνων\n" + -"Παράθυρο στην Ελλάδα (χρήσιμες πληροφορίες και σύνδεσμοι για την Ελλάδα)\n" + -"Παράθυρο στην Ελλάδα (παλαιότερη «έκδοση»)\n" + -"Ελληνικός Οργανισμός Τουρισμού\n" + -"Υπουργείο Εξωτερικών\n"; - - -var hebrew = -"היסטוריה של סין\n" + -"מתוך ויקיפדיה, האנציקלופדיה החופשית\n" + -"קפיצה אל: ניווט, חפש\n" + -"\n" + -" ערך זה עוסק בההיסטוריה של הישות התרבותית והגאוגרפית במזרח אסיה. אם התכוונתם לההיסטוריה של מדינה המוכרת היום בשם \"סין\", ראו היסטוריה של הרפובליקה העממית של סין.\n" + -"\n" + -"בערך זה מופיע גופן מזרח אסייתי\n" + -"\n" + -"כדי שתוכלו לראות את הכתוב בערך זה בצורה תקינה, תצטרכו להתקין גופן מזרח אסייתי במחשבכם. אם אינכם יודעים כיצד לעשות זאת, לחצו כאן לקבלת עזרה\n" + -"\n" + -"סין הנה התרבות המפותחת והרציפה העתיקה ביותר בעולם, תיעודים כתובים של התרבות נמצאים כבר מלפני 3,500 שנים והסינים עצמם נוקבים במספר 5,000 כמספר שנות קיומה של תרבותם. שושלות השלטון בסין פיתחו לאורך השנים שיטות בירוקרטיה שלטונית שהעניקו לסינים יתרון משמעותי על העמים השבטיים שחיו מסביבם. פיתוח אידאולוגיה למדינה, המבוססת על משנתו הפילוסופית של קונפוציוס (המאה ה-1 לפנה\"ס), יחד עם פיתוח מערכת כתב זמינה לכל (המאה ה-2 לפנה\"ס) חיזקו עוד יותר את התרבות הסינית. מבחינה פוליטית, סין נעה בתנועה מתמדת בין איחוד ופירוד ולעתים גם נכבשה על ידי כוחות זרים אשר מרביתם התמזגו לתוך תרבותה והפכו לחלק בלתי נפרד ממנה. השפעות תרבותיות ופוליטיות אלו שהגיעו מכל קצוות אסיה כמו גם גלי הגירה אל ומחוץ למדינה יצרו יחד את דמותם של התרבות והעם הסיני כפי שהם מוכרים לנו היום.\n" + -"היסטוריה של סין\n" + -"\n" + -" * התקופה הקדומה\n" + -"\n" + -" שלושת המלכים וחמשת הקיסרים\n" + -" שושלת שיה\n" + -" שושלת שאנג\n" + -" שושלת ג'ואו\n" + -" תקופת האביב והסתיו\n" + -" תקופת המדינות הלוחמות\n" + -"\n" + -" * סין הקיסרית\n" + -"\n" + -" שושלת צ'ין\n" + -" שושלת האן המערבית\n" + -" שושלת שין\n" + -" שושלת האן המזרחית\n" + -" שלושת הממלכות\n" + -" שושלת ג'ין\n" + -" השושלת הצפונית והדרומית\n" + -" שושלת סוי\n" + -" שושלת טאנג\n" + -" שושלת סונג\n" + -" שושלת יו'אן\n" + -" שושלת מינג\n" + -" שושלת צ'ינג\n" + -"\n" + -" * התפוררות הקיסרות\n" + -"\n" + -" מלחמת האופיום הראשונה\n" + -" מרד טאיפינג\n" + -" מלחמת האופיום השנייה\n" + -" מלחמת סין-צרפת\n" + -" מלחמת סין-יפן הראשונה\n" + -" רפורמת מאה הימים\n" + -" מרד הבוקסרים\n" + -"\n" + -" * סין המודרנית\n" + -"\n" + -" מהפכת שינהאי\n" + -" הקמתה של המפלגה הקומניסטית של סין\n" + -" המצעד הארוך\n" + -" תקרית שיאן\n" + -" מלחמת סין-יפן השנייה\n" + -" מלחמת האזרחים הסינית\n" + -"\n" + -" * העת החדשה\n" + -"\n" + -" הקמת הרפובליקה העממית של סין\n" + -" מערכת מאה הפרחים\n" + -" הזינוק הגדול קדימה\n" + -" הפיצול הסיני-סובייטי\n" + -" מלחמת הודו-סין\n" + -" מהפכת התרבות בסין\n" + -" תקרית טיאנאנמן\n" + -"\n" + -"ראו גם\n" + -"\n" + -" * הרפובליקה הסינית\n" + -" * לוח זמנים של ההיסטוריה של סין\n" + -"\n" + -"פורטל סין\n" + -"קטגוריה ראשית\n" + -"\n" + -"\n" + -"תוכן עניינים\n" + -"[הסתר]\n" + -"\n" + -" * 1 פרה-היסטוריה\n" + -" o 1.1 שלושת המלכים וחמשת הקיסרים\n" + -" * 2 היסטוריה קדומה\n" + -" o 2.1 שושלת שְׂיָה\n" + -" o 2.2 שושלת שָׁאנְג\n" + -" o 2.3 שושלת ג'וֹאוּ\n" + -" o 2.4 תקופת האביב והסתיו\n" + -" o 2.5 תקופת המדינות הלוחמות\n" + -" * 3 שושלת צ'ין: האימפריה הסינית הראשונה\n" + -" * 4 שושלת האן: תקופה של שגשוג\n" + -" * 5 ג'ין, שש עשרה הממלכות והשושלות הדרומית והצפונית: התקופה האפלה של סין\n" + -" * 6 שושלת טאנג: חזרה לשיגשוג\n" + -" * 7 שושלת סונג ושכנותיה הצפוניות, ליאו וג'ין\n" + -" * 8 המונגולים\n" + -" * 9 תחייתה מחדש של התרבות הסינית\n" + -" * 10 תקופת מינג: מהתפתחות לבידוד\n" + -" * 11 שושלת צ'ינג\n" + -" * 12 הרפובליקה הסינית\n" + -" * 13 הרפובליקה העממית של סין\n" + -" * 14 ראו גם\n" + -" * 15 לקריאה נוספת\n" + -" * 16 קישורים חיצוניים\n" + -" * 17 הערות שוליים\n" + -"\n" + -"[עריכה] פרה-היסטוריה\n" + -"\n" + -"העדויות הארכאולוגיות הקדומות ביותר לנוכחות אנושית בסין של ימינו הן של הומו ארקטוס. מחקרים חדשים מגלים כי עמודי האבן שנמצאו באתר שיאוצ'אנגליאנג מתאורכים מבחינה סטרטיגרפית מלפני 1.36 מיליוני שנים. באתר הארכאולוגי שִׂיהוֹאוּדוּ שבמחוז שאנסי נמצאות העדויות הראשונות בעולם לשימוש באש על ידי ההומו ארקטוס, ומתאורכות ללפני 1.27 מיליוני שנים. עם זאת תושביו הנוכחיים של האזור אינם צאצאי אותו הומו ארקטוס, אלא צאצאי הומו סאפיינס שהגיע לאזור מאזור אפריקה רק לפני 65,000 שנים.\n" + -"\n" + -"עדויות מוקדמות לחקלאות סינית טיפוסית – גידולי אורז בברכות – מתוארכות לשנת 6,000 לפנה\"ס. בדומה לתרבויות קדומות בכל העולם, הביאה החקלאות לגידול מהיר באוכלוסייה, כיוון שהתבססות על גידולים חקלאיים הבטיחה יכולת שימור המזון ואגירתו לזמן ממושך יותר, וזו הביאה בהדרגה לגידול האוכלוסייה, להתפתחותה התרבותית ולריבוד חברתי.\n" + -"\n" + -"בשלהי התקופה הניאוליטית החל עמק הנהר הצהוב בסין לפתח את מעמדו כמרכז תרבותי, כאשר ראשוני הכפרים באזור הופיעו שם. מרבית העדויות למרכז חשוב זה נמצאות באזור העיר שי-אן בסין.\n" + -"\n" + -"[עריכה] שלושת המלכים וחמשת הקיסרים\n" + -"\n" + -" ערך מורחב – שלושת המלכים וחמשת הקיסרים\n" + -"\n" + -"ספרי ההיסטוריה הקדומים, רשומות ההיסטוריון, שנכתבו על ידי ההיסטורוגרף הסיני סְה-מָה צְ'ייֵן במאה השנייה לפנה\"ס, וספר תולדות החיזרן, שנכתבו במאה הרביעית לפנה\"ס מתארכים את תחילת ההיסטוריה הסינית לתקופת שלושת המלכים וחמשת הקיסרים - 2800 לפנה\"ס. לתקופה זו מאפיינים מיתולוגיים מובהקים. למלכים ולקיסרים תכונות מיסטיות והם מתוארים כשליטים נבונים ובעלי מוסר למופת. אחד מהם, הקיסר הצהוב נחשב לאבי בני ההאן.\n" + -"\n" + -"סה-מה צ'יאן כותב כי תחילת ביסוס מערכת ממשלתית נעשה בימי שושלת שיה, וסגנון המערכת הונצח על ידי שושלות שאנג וג'ואו. בתקופת שלושת השושלות האלו, החלה סין לפצוע על שחר ההיסטוריה. מכאן ואילך, עד למאה העשרים, מתוארות תולדות סין לפי השושלות שמשלו בה.\n" + -"\n" + -"[עריכה] היסטוריה קדומה\n" + -"\n" + -"[עריכה] שושלת שְׂיָה\n" + -"\n" + -" ערך מורחב – שושלת שיה\n" + -"\n" + -"שושלת שְׂיָה (סינית: 夏, פיניין: Xià), היא השושלת הראשונה בתולדות סין. שושלת זו התקיימה לפני המצאת הכתב בסין, כך שהעדויות לקיומה מסתמכות על מסמכים מאוחרים יותר ועל ארכאולוגיה. סְה-מָה צְ'ייֵן וספר תולדות החיזרן מתארכים את ימי השושלת לכלפני 4,200 שנה, אולם אין בידינו לאמת את הדברים. 17 מלכים ו-14 דורות מנתה השושלת, שהתחילה בימיו של יוּ'‏ הגדול והסתיימה בימיו של גְ'יֵה איש שְׂיָה, כך על-פי סְה-מָה צְ'ייֵן ומקורות אחרים מתקופת שושלת צ'ין.\n" + -"\n" + -"שושלות שאנג וג'ואו התקיימו במקביל לשושלת שיה כבר מתחילתה, אך היו כפופות לה. אורך ימיה של השושלת לא ברור, אך 431 או 471 שנים הן שתי החלופות הסבירות ביותר.\n" + -"\n" + -"ארכאולוגים רבים מזהים את שושלת שְׂיָה עם אתר אָרלִיטוֹאוּ שבמרכז מחוז הנאן[1]. באתר זה נתגלה כור היתוך מברונזה משנת 2000 לפנה\"ס לערך. נטען גם כי סימונים על-גבי חרס וקונכיות מתקופה זו הן גילגול קדום של הכתב הסיני[2]. בהיעדר עדויות כתובות בכתב המוכר מעצמות הניחוש של שושלת שאנג ומכלי הברונזה של שושלת ג'ואו, נותר טיבה של שושלת שיה לוט בערפל.\n" + -"\n" + -"[עריכה] שושלת שָׁאנְג\n" + -"\n" + -" ערך מורחב – שושלת שאנג\n" + -"\n" + -"הרישומים הכתובים העתיקים ביותר בסין נחרטו לצורך הגדת עתידות על עצמות או קונכיות. כתבים אלה, המכונים עצמות ניחוש, מתוארכים למאה ה-13 לפנה\"ס לערך, תקופת שושלת שָׁאנְג (סינית: 商, פיניין: Shāng). ממצאים ארכאולוגיים, המעידים על קיומה של השושלת בשנים 1600-1046 לפנה\"ס בקירוב, מחולקים לשתי קבוצות. הקבוצה המוקדמת, עד ל-1300 בקירוב, מגיעה מאתרים שונים במחוז הנאן. הקבוצה המאוחרת, מתקופת יִין (殷), מורכבת מאסופה רחבה של עצמות ניחוש, גם הן ממחוז הנאן. אָנְיָאנְג שבמחוז הנאן הייתה הבירה התשיעית והאחרונה של שושלת שאנג. לשושלת היו 31 מלכים, והיא הייתה הארוכה שבשושלות סין.\n" + -"\n" + -"על פי רשומות ההיסטוריון העבירה שושלת שאנג את בירתה שש פעמים, כשהמעבר השישי והאחרון לעיר יִין ב-1350 לפנה\"ס סימן את תחילת תור הזהב של השושלת. ההיסטוריה התמטית של סין מתארת בדרך-כלל קיום של שושלת אחת אחרי השנייה, אך המצב לאשורו באותה עת היה מורכב יותר. חוקרים טוענים כי ייתכן ושושלות שיה ושאנג התקיימו במקביל, כשם ששושלת ג'ואו (שֶׁירשה את שושלת שאנג), התקיימה אף היא בזמן שושלת שאנג. עדויות כתובות מאתר אניאנג מאששים אמנם את קיומה של שושלת שאנג, אך חוקרים מערביים אינם נוטים לזהות יישובים בני אותה תקופה עם שושלת שאנג דווקא. כך למשל, ממצאים ארכאולוגיים מאותה עת באתר סָאנְשִׂינְגְדְווֵי מצביעים על חברה מתקדמת, השונה בתרבותה מזו שנתגלתה בְּאָנְיָאנְג. אין עדויות מכריעות במוגע לתחום שליטתה של שושלת שאנג. ההנחה המקובלת היא כי שושלת שאנג שבהיסטוריה הרשמית אכן שלטה בעיר אניאנג, תוך שהיא מקיימת קשרי מסחר עם יישובים שונים בסביבתה, שהיו שונים זה מזה מבחינה תרבותית.\n" + -"\n" + -"[עריכה] שושלת ג'וֹאוּ\n" + -"\n" + -" ערך מורחב – שושלת ג'ואו\n" + -"\n" + -"שושלת ג'וֹאוּ (סינית: 周, פיניין: Zhōu), הייתה השושלת ששלטה את הזמן הארוך ביותר בסין, מ-1122 לפנה\"ס ועד 256 לפנה\"ס - 866 שנה. השושלת התחילה להתגלות בנהר הצהוב והתפשטה אל תוך גבולותיה של השאנג. השושלת התחילה את שליטתה כפיאודליזם. הג'ואו חיו מערבית לשאנג, ושליטם היה מכונה בפיהם של שאנג כ\"מגן המערבי\". שליט ג'ואו המלך ווּ, בעזרת דודו הדוכס של ג'ואו, הצליחו להכניע את אחרון קיסרי שאנג בקרב שקבל את השם הקרב של מויה. היה זה מלכה של ג'ואו באותו הזמן, שטבע את מושג מנדט השמים, רעיון לפיו השמים הם המחליטים מי יהיה הקעסר הבא, ודרכם להביע את זה היא הצלחתו של הקיסר בניהול מלכותו, כך שמרד נתפס כלגיטימי, כל עוד זכה להצלחה. הקיסר העביר את בירתו אל עבר מערב האזור, סמוך למקום המכונה כיום שיאן, לגדות הנהר הצהוב, אולם שליטתם התפרסה אל כל עבר מושבות נהר היאנגטסה. זו הייתה ההגירה הראשונה בגודל כזה מצפון סין לדרומה.\n" + -"\n" + -"[עריכה] תקופת האביב והסתיו\n" + -"\n" + -" ערך מורחב – תקופת האביב והסתיו\n" + -"\n" + -"תקופת האביב והסתיו (בסינית: 春秋時代) הוא כינויה של תקופה בין השנים 722 לפנה\"ס ל 481 לפנה\"ס. שמה של התקופה לקוח משם הספר רשומות האביב והסתיו, תיעוד היסטורי של אותה תקופה אשר נכתב בידי קונפוציוס.\n" + -"\n" + -"במהלך התקופה נערכו מלחמות רבות בין המדינות שהרכיבו באותה תקופה את סין מה שהביא לביזור של הכח השלטוני בסין העתיקה. בעקבות המלחמות הודחו שליטים רבים מכסאם, ושכבת האצולה בסין התפוררה למעשה. עם התפשטותם של האצילים ברחבי הארץ נפוצה איתם גם ידיעת הקרוא וכתוב אשר הייתה נחלתם הכמעט בלעדית של האצילים עד לאותה תקופה. התפשטות הקריאה והכתיבה עודדה את חופש המחשבה וההתפתחות הטכנולוגית. לאחר תקופת האביב והסתיו החלה בסין תקופת מלחמת המדינות.\n" + -"\n" + -"[עריכה] תקופת המדינות הלוחמות\n" + -"\n" + -" ערך מורחב – תקופת המדינות הלוחמות\n" + -"\n" + -"תקופת המדינות הלוחמות (סינית: 戰國, פיניין: Zhàn Guó) החלה במאה החמישית לפנה\"ס והסתיימה בשנת 221 לפנה\"ס באיחודה של סין על ידי שושלת צ'ין. רשמית, בתקופת המדינות הלוחמות, כמו גם בתקופה שקדמה לה, תקופת האביב והסתיו, הייתה סין תחת שלטונה של שושלת ג'וֹאוּ המזרחית, אך שליטה זו הייתה רק להלכה, ולשושלת לא הייתה השפעה ממשית, ולמעשה חדלה להתקיים 35 שנה לפני סיומה הרשמי של התקופה. את שמה קיבלה התקופה מ\"רשומות המדינות הלוחמות\", תיעוד היסטורי של התקופה, שנכתב בתקופת שושלת האן.\n" + -"\n" + -"תקופת המדינות הלוחמות, שלא כמו תקופת האביב והסתיו, הייתה תקופה בה שרי צבא ואריסטוקרטים מקומיים סיפחו לאחוזותיהם כפרים, ערים ומדינות זעירות סמוכות והשליטו עליהם את שלטונם. במאה השלישית לפנה\"ס הביא מצב זה ליצירת שבע מדינות עיקריות בסין: מדינות צִ'י (齊), צ'וּ (楚), יֵן (燕), הַאן (韓), גָ'או (趙), ווֶי (魏) וצִ'ין (秦). סימן נוסף לשינוי במעמדם של הגנרלים היה שינוי תארם הרשמי מגונג (公 - המקבילה הסינית לדוכס), הכפופים כביכול למלך של ג'ואו, לוואנג (王) - מלכים, השווים במעמדם למלך של ג'ואו.\n" + -"\n" + -"תקופת המדינות הלוחמות היא גם תחילתו של השימוש בברזל במקום ארד בסין כמתכת עיקרית בכל תחומי החיים האזרחיים והצבאיים. במהלך תקופה זו החלו להבנות החומות, שיגנו על הממלכות מפני פלישה של שבטים ברבריים מהצפון חומות, שהיוו את היסוד לחומה הסינית המאוחרת יותר. מאפיין תרבותי נוסף של התקופה היה הפיכתן של פילוסופיות שונות כגון קונפוציזם, דאואיזם, לגאליזם, ומוהיזם למעמד של דתות במדינות השונות.\n" + -"\n" + -"בתום התקופה, לאחר שממלכת צ'ין הצליחה להביס ולכבוש את שאר הממלכות, הפך המלך צ'ין לקיסר הראשון של סין המאוחדת.\n" + -"\n" + -"[עריכה] שושלת צ'ין: האימפריה הסינית הראשונה\n" + -"\n" + -" ערך מורחב – שושלת צ'ין\n" + -"\n" + -"סין אוחדה לראשונה בשנת 212 לפנה\"ס בידי צִ'ין שְׁה-חְוָאנג, מייסד שושלת צ'ין. קדמה לאיחוד תקופת מלחמת המדינות ותקופת האביב והסתיו, שהתאפיינו שתיהן במספר ממלכות שהתקיימו במקביל ולחמו זו בזו. בשנת 212 לפנה\"ס עלה בידו של צ'ין להשתלט סופית על כל הממלכות בסין העתיקה ולשים קץ למלחמות הפנימיות.\n" + -"\n" + -"למרות שהאימפריה המאוחדת של הקיסר צ'ין התקיימה רק 12 שנים, הצליח הקיסר בזמן מועט זה למסד את רוב שטחה של המדינה כפי שאנו מכירים אותה כיום ולהשליט בה משטר ריכוזי המבוסס על לגאליזם אשר מושבו היה בשיאניאנג, שיאן של ימינו. שושלת צ'ין מפורסמת גם בשל תחילת בנייתה של החומה הסינית הגדולה (החומה הוגדלה בתקופת שושלת מינג). בניו של הקיסר לא היו מוצלחים כמוהו, ועם מותו של הקיסר תמה תקופת שלטונה של שושלתו.\n" + -"\n" + -"מקור המילה סין בשפה העברית וכן בשפה האנגלית (China), מגיע ככל הנראה מהמילה צ'ין (秦), שמה של השושלת הראשונה.\n" + -"\n" + -"[עריכה] שושלת האן: תקופה של שגשוג\n" + -"\n" + -" ערך מורחב – שושלת האן\n" + -"\n" + -"שושלת האן הופיעה בסין בשנת 202 לפנה\"ס. בתקופת שלטונה הפכה הקונפוציוניזם לדת המדינה ולפילוסופיה המנחה אותה ואשר המשיכה להנחות את המשטר הסיני עד לסוף התקופה הקיסרית בתחילת המאה ה-20. תחת שלטון ההאן עשתה התרבות הסינית התקדמות אדירה בתחומי ההיסטוריוגפיה, האומנות והמדע. הקיסר וו חיזק והרחיב את הממלכה בהודפו את ה\"שׂיוֹנג-נוּ\" (שבטים שלעתים מזוהים עם ההונים) אל תוך מונגוליה של ימינו, תוך שהוא מספח לממלכתו את השטחים בהם ישבו שבטים אלו. שטחים חדשים אלו אפשרו לסין לראשונה לפתוח קשר מסחר עם המערב: דרך המשי.\n" + -"\n" + -"אולם, השתלטותן של משפחות אצולה על אדמות המדינה, עירערה את בסיס המיסוי של הממלכה, גורמות בכך חוסר יציבות שלטוני. חוסר היציבות הזה נוצל על ידי וואנג מנג, שהקים את שושלת שין שהחזיקה מעמד זמן קצר מאוד. וואנג החל לבצע רפורמות ענפות בהחזקת האדמות ובכלכלה. תומכיה העיקריים של הרפורמה היו האיכרים ובני המעמדות הנמוכים, אך משפחות האצולה שהחזיקו באדמות, התנגדות להן בכל תוקף. עקב כך נוצא מצב של כאוס והתקוממויות רבות במדינה. צאצאה של שושלת האן, הקיסר גואנגוו, ייסד מחדש את שושלת האן בתמיכתם של משפחות האצילים והסוחרים בלוו-יאנג, מזרחית לשיאן, מכאן קיבל העידן החדש שהחל אז את שמו: שושלת האן המזרחית. אולם ייסודה מחדש של השושלת לא הביא את השקט הרצוי לממלכה. עימותים עם בעלי הקרקעות, יחד עם פלישות מבחוץ ומאבקים פנימיים במיעוטים החלישו שוב את השלטון. מרד הטורבן הצהוב שפרץ בשנת 184, סימן את תחילתו של עידן בו שליטים צבאיים מובילים מלחמות בתוך המדינה ומחלקים את המדינה למספר מדינות קטנות. תקופה זו ידועה כתקופת שלוש הממלכות.\n" + -"\n" + -"[עריכה] ג'ין, שש עשרה הממלכות והשושלות הדרומית והצפונית: התקופה האפלה של סין\n" + -"\n" + -" ערך מורחב – שושלת ג'ין\n" + -"\n" + -"שלוש הממלכות התאחדו בשנת 280 תחת שלטונה של שושלת ג'ין. אולם איחוד זה נמשך זמן קצר מאוד. בתחילת המאה ה-4 החלו המיעוטים בסין (כיום מכונים סינים לא בני האן ) להתמרד ולבתר את המדינה, גורמים בכך להגירה עצומה של סינים בני האן אל מדרום לנהר היאנגטסה. בשנת 303 החלו אנשי מיעוט הדאי במרד שבסופו הם כבשו את צ'נגדו שבסצ'ואן. השׂיוֹנְג-נוּ, שנהדפו מסין בתחילת שלטונה של שושלת האן, חזרו להלחם בסין, כבשו חלקים ממנה והוציאו להורג את שני קיסריה האחרונים של שושלת ג'ין. יותר משש-עשרה מדינות הוקמו על ידי המיעוטים האתניים בצפונה של סין. הצפון הכאוטי אוחד לזמן קצר על ידי פו ג'יאן, אך הוא הובס בנסיון פלישתו לדרום סין וממלכתו התפוררה. נסיון נוסף לאיחוד הצפון בוצע על ידי הקיסר טאיוון, שהקים את השושלות הצפוניות, סדרה של משטרים מקומיים ששלטו בסין שמצפון לנהר היאנג צה.\n" + -"\n" + -"עם הפליטים שנסו לדרומה של המדינה, היה גם הקיסר יואן, נצר לשושלת ג'ין, שחידש את שלטון השושלת בדרום המדינה . שושלת זו הייתה הראשונה מבין השושלות הדרומיות שכללו את שושלות סונג, צי, ליאנג וצ'ן. בירתן של השושלות הדרומיות הייתה ג'יאנקאנג, ליד ננג'ינג של ימינו. התקופה בה התקיימו במקביל שתי מדינות הנשלטות על ידי שושלות שונות בצפונה ובדרומה של הארץ נקראה תקופת השושלות הצפונית והדרומית. שושלת סוי קצרת המועד, הצליחה לאחד את המדינה ב589 לאחר כמעט 300 שנות פירוד.\n" + -"\n" + -"[עריכה] שושלת טאנג: חזרה לשיגשוג\n" + -"\n" + -" ערך מורחב – שושלת טאנג\n" + -"\n" + -"בשנת 618 נוסדה שושלת טאנג, פותחת עידן חדש של שיגשוג וחידושים בתחומי האמנות והטכנולוגיה. בתקופה זו פעלו משוררים נודעים כלי באי ודו פו. הבודהיזם, שהחל חודר לסין כבר במאה ה-1, הוכרז כדת הרשמית של המדינה ואומץ על ידי המשפחה הקיסרית. צ'אנג-אן (שיאן של ימינו), בירת השושלת הייתה באותה תקופה העיר הגדולה ביותר בעולם. תקופות טאנג והאן נחשבות לרוב כתקופות השגשוג הממושכות ביותר בהיסטוריה של סין. אולם, על אף השגשוג, כוחה של שושלת טאנג החל להחלש והמדינה החלה נקרעת בשנית בידי שליטים מקומיים. תקופה נוספת של כאוס הגיעה למדינה: תקופת חמש השושלות ועשר הממלכות.\n" + -"\n" + -"[עריכה] שושלת סונג ושכנותיה הצפוניות, ליאו וג'ין\n" + -"\n" + -" ערך מורחב – שושלת סונג\n" + -"\n" + -"בשנת 960 הצליחה שושלת סונג לאסוף מספיק כח כדי לאחד את סין תחת שלטונה. תחת שלטון סונג, שבירתו הייתה קאיפנג, החלה תקופת צמיחה חדשה בסין. אולם שושלת סונג לא הייתה הכח הפוליטי הגדול היחיד באזור. במנצ'וריה ובמזרח מונגוליה התהוותה ממלכתה של שושלת ליאו החיטאנית וב1115 עלתה לשלטון במנצ'וריה שושלת ג'ין הג'ורצ'נית (הג'ורצ'נים היו אבותיהם של המנצ'ורים) שתוך 10 שנים בלעה את שושלת ליאו לתוכה. שושלת ג'ין השתלטה גם על שטחים בצפון סין, בתוכם הבירה הסינית קאיפנג, מה שאילץ את שושלת סונג הסינית להעביר את בירתה לחאנגג'ואו. שושלת סונג גם אולצה על ידי שושלת ג'ין להכריז על הכרתה בשושלת ג'ין כשליטה העליונה שלה. בתקופה שלאחר מכן הוקמו שלוש ממלכות גדולות בשטחה של סין (ממלכת סונג, ממלכת ג'ין וממלכה שלישית של מיעוטים שנקראה ממלכת שיה המערבית). בתקופה זו נעשו פיתוחים משמעותיים בטכנולוגיה, ככל הנראה עקב הלחץ הצבאי שהופעל על ממלכת סונג מצד שכנותיה הצפוניות.\n" + -"\n" + -"[עריכה] המונגולים\n" + -"\n" + -"ממלכת ג'ין הייתה הראשונה מבין הממלכות בסין שהובסה על ידי המונגולים, שהמשיכו וכבשו גם את ממלכת סונג במלחמה ארוכה ועקובה מדם שהייתה המלחמה הראשונה בהיסטוריה בה נעשה שימוש מכריע בנשק חם. לאחר תום המלחמה החל עידן של שלום כמעט בכל אסיה (שהייתה נתונה לשלטון המונגולים), עידן שנקרא \"השלום המונגולי\" (Pax Mongolica). שלום זה איפשר לנוסעים מהמערב, דוגמת מרקו פולו, להגיע לסין ולחשוף לראשונה את אוצרתיה למערב. בסין, נחלקו המונגולים בין אלו שרצו להחיל בסין את מנהגי המונגולים ובין אלו שרצו לאמץ את המנהגים הסינים לעצמם. קובלאי חאן, שנמנה עם הקבוצה השנייה, הקים בסין את שושלת יואן (מילולית: \"השושלת הראשונה\") זו הייתה הממלכה הראשונה שהשתרעה על כל שטחה של סין ושבירתה הייתה בייג'ינג (בייג'ינג הייתה בירתה של שושלת גי'ן אך השושלת לא שלטה על סין כולה).\n" + -"\n" + -"[עריכה] תחייתה מחדש של התרבות הסינית\n" + -"\n" + -"בקרב העם בסין, הייתה התמרמרות רבה ביחס לשלטון ה\"זרים\" החדש, התמרמרות שלבסוף הובילה להתקוממויות איכרים במדינה שהתפתחו למאבק בשלטון שנדחף למעשה אל מחוץ לגבולותיה של סין. את השלטון המונגולי החליף שלטונה של שושלת מינג בשנת 1368. שושלת זו פתחה תקופה של פריחה והתחדשות תרבותית: האומנות, ובעיקר תעשיית הפורצלן, נסקה לגבהים שלא נודעו קודם לכן, סחורות סיניות נעו ברחבי האוקיינוס ההודי, מגיעות עד לחופיה המזרחיים של אפריקה במסעותיו של צ'נג חה. סין בנתה צי ספינות שהגדולות מבניהן שינעו 1,500 טונות של סחורות וחיילים מהצבא בן מיליון החיילים שהיה ברשותה באותה העת. יותר מ100,000 טונות ברזל יוצרו כל שנה וספרים רבים נדפסו. יש הטוענים כי שהאומה הסינית בתקופת מינג הייתה האומה המתקדמת ביותר בעולם.\n" + -"\n" + -"הקיסר חונג-וו, מייסד השושלת, הניח את היסודות לנטייתה של המדינה למעט במסחר ותעשייה ולהתמקד בעיקר בהגדלת הרווחים מהמגזר החקלאי, כנראה בשל מוצאו החקלאי של הקיסר. חברות פאודליות זעירות שהתפתחו במהלך שנות שלטונם של שושלת סונג ושל המונגולים פורקו ואדמותיהם הולאמו, חולקו והושכרו לאיכרים מחדש. כמו כן, הוטל חוק האוסר החזקת עבדים במדינה. החוקים נגד מסחר נשארו בממלכה עוד מתקופת שושלת סונג, אך כעת הם חלו גם על סוחרים זרים מה שהביא במהרה לגוויעת סחר החוץ בין סין לשאר העולם.\n" + -"\n" + -"ככל שחלף הזמן, שלטון הקיסר נעשה חזק יותר ויותר על אף שהחצר הקיסרית עשתה שימוש נרחב בפקידים ממשלתיים שהיו אחראיים לתפקודה השוטף של המדינה.\n" + -"\n" + -"במהלך שלטון המונגולים פחתה האוכלוסייה בכ-40% לכ-60 מיליון נפש. שתי מאות מאוחר יותר המספר הוכפל. הערים החלו להתפתח בקצב מואץ ובעקבות כך החלה להופיע גם תעשייה זעירה. כתוצאה מהתערבות שלטונית, נמנעה בסין התפתחותו של מרכז אורבני מצומצם ובמקום זאת צמחו מספר רב של ערים שהיוו מרכזים מקומיים לאזורים המקיפים אותן.\n" + -"\n" + -"[עריכה] תקופת מינג: מהתפתחות לבידוד\n" + -"\n" + -" ערך מורחב – שושלת מינג\n" + -"\n" + -"למרות הסלידה ממסחר עם מדינות אחרות, וההתרכזות הפנימית בענייני המדינה, סין תחת שלטונה של שושלת מינג לא הייתה מבודדת. הסחר עם מדינות אחרות, ובעיקר עם יפן, המשיך להתקיים והקיסר יונגלה השתדל ככל יכולתו למסד קשרים דיפלומטיים עם המדינות הסובבות את סין. צבאה של סין כבש את אנאם והצי הימי שלה הפליג במסעותיו עד לחופי אפריקה. הסינים גם הצליחו לייצר השפעה מסוימת בטורקסטן.\n" + -"\n" + -"אחת הדרכים המרשימות ביותר בהן התבטאה מדיניות החוץ הסינית של אותה תקופה הייתה מסעותיו הימיים של צ'אנג חֶה, סריס מוסלמי ונצר למשפחה מונגולית, אשר הוביל שבעה מסעות ימיים מפוארים בין 1405 ל1433 שעברו בכל האוקיינוס ההודי והאיים שבו והגיעו עד לכף התקווה הטובה. מסעו הראשון של הה, כלל 62 ספינות שנשאו 28,000 מלחים – ללא ספק המסע הימי הגדול ביותר בהיסטוריה האנושית.\n" + -"\n" + -"אולם, לקראת סופה של המאה ה-15, הוטל איסור על אזרחי המדינה לבנות ספינות בעלות כושר הפלגה באוקיינוס וכן נאסר על כלל האזרחים לעזוב את המדינה. כיום קיימת הסכמה על כך שצעד זה ננקט כדי להגן על הקיסרות מפני התקפות של שודדי ים. הגבלות אלו בוטלו לבסוף באמצע המאה ה-17.\n" + -"\n" + -"[עריכה] שושלת צ'ינג\n" + -"\n" + -" ערך מורחב – שושלת צ'ינג\n" + -"\n" + -"השושלת הקיסרית האחרונה בסין, נוסדה ב1644 כאשר המנצ'ורים כבשו את המדינה, הדיחו מהשלטון את שושלת מינג המקומית והקימו את שושלת צ'ינג שבירתה בייג'ינג. במשך חצי מאה נלחמו המנצ'ורים מלחמות עקובות מדם שבמהלכן השתלטו על האזורים שהיו בשליטת שושלת מינג ובכללם מחוז יונאן המרוחקת, טיבט ומונגוליה. את ההצלחה לה זכו המנצ'ורים בתחילת תקופת שלטונם יש לזקוף לזכות כוחם הצבאי האדיר והמיומן ששולב עם מיומנויות בירוקרטיות סיניות.\n" + -"\n" + -"חלק מההיסטוריונים רואים בתקופה של תחילת שלטון צ'ינג המשך רציף להתדרדרות התרבותית שחלה בסוף תקופת מינג. אך יש כאלה הרואים בתחילת שלטון צ'ינג תקופה של שיגשוג יותר מאשר נסיגה. בהוראת הקיסר קנגשי נכתב המילון המקיף והמפורט ביותר לשפה הסינית שנכתב עד אז ותחת שלטונו של הקיסר קיאנלונג חובר הקטלוג המלא של כל העבודות החשובות של התרבות הסינית. שושלת צ'ינג גם המשיכה בהרחבת אוצר הספרות העממית ובפיתוח החקלאות תוך יבוא גידולים חדשים מהעולם החדש דוגמת התירס. גם צמיחת האוכלוסייה המשיכה להאיץ בתקופת צ'ינג ואוכלוסיית המדינה, שבשנת 1700 מנתה 100 מיליון נפש, הגיעה לכדי 220 מליון בשנת 1800.\n" + -"\n" + -"\n" + -"בקריקטורה צרפתית מפורסמת זו, נראית חלוקתה של סין בין בריטניה, גרמניה, רוסיה, צרפת ויפן\n" + -"בקריקטורה צרפתית מפורסמת זו, נראית חלוקתה של סין בין בריטניה, גרמניה, רוסיה, צרפת ויפן\n" + -"\n" + -"במהלך המאה ה-19, נחלשה שליטתה של שושלת צ'ינג במדינה והשגשוג שהיה בה התפוגג. סין סבלה מרעב קשה, התפוצצות אוכלוסין וחדירה בלתי פוסקת של מדינות המערב בנסיון להשיג לעצמן השפעה במדינה. שאיפתה של בריטניה להמשיך בסחר הבלתי חוקי באופיום, נתקל בהתנגדות עזה של המשטר הקיסרי, מה שהביא לפריצתה של מלחמת האופיום הראשונה ב1840. סין, שהפסידה במלחמה, אולצה לבצע ויתורים כואבים ולפתוח את נמליה לסחר חפשי עם מדינות המערב. ויתוריה הטריטוריאלים של סין כללו את העברת הונג קונג לידיה של בריטניה ב1842 כחלק מחוזה נאנג'ינג. בנוסף מרד טאי פינג (1864-1851) ומרד ניאן (1868-1853), יחד עם תנועות לאומיות מוסלמיות ששאפו לעצמאות וחוזקו על ידי רוסיה ייבשו את קופת המדינה וכמעט שהביאו לנפילת השלטון בה.\n" + -"\n" + -"המרידות בשלטון דוכאו בעיקר על ידי כוחות המערב שבאותו הזמן עשו במדינה כבשלהם וניצלו את שווקיה ואת מערכתה הכלכלית.\n" + -"\n" + -"לאחר שוך המהומות בשנות השישים של המאה ה-19, החלה שושלת צ'ינג לטפל בבעיות המודרניזציה במדינה על ידי ביצוע רפורמות בכל תחומי שליטתה. אבל, הקיסרית האלמנה צישי, יחד עם גורמים שמרניים במדינה, ביצעה מעין הפיכה והדיחה את הקיסר הצעיר מהשלטון, מורידה בכך לטמיון את הרפורמות שאך החלו להתבצע. הרפורמות הצבאיות, שהושארו על כנן, היו חסרות ערך עקב השחיתות האיומה שהתפשטה בצמרת השלטון. חלק מספינות הקרב החדישות של הצבא כלל לא יכלו לבצע ירי, וזאת עקב מעילות גדולות בתקציבי בנייתן שלא השאירו די כסף לרכישת אבק שריפה. כתוצאה מכך כוחות \"הצבא הסיני החדש\" נחלו תבוסות משפילות הן במלחמת סין-צרפת (1885-1883) והן במלחמת סין-יפן הראשונה (1895-1894)\n" + -"\n" + -"עם תחילתה של המאה ה-20, הייתה החצר הקיסרית בסין הרוסה, שחיתות הייתה בכל והאוכלוסייה גדלה בקצב בלתי ניתן לעצירה. המדינה נשלטה על ידי הקיסרית צישי, דמות שמרנית ביותר שהתנגדה לכל סוג של רפורמה. מותו של הקיסר גוואנגשו יום אחד לפני מותה של הקיסרית (יש הטוענים שהוא הורעל על ידה) הרס את הסיכוי האחרון לביסוס הנהגה אפקטיבית במדינה.\n" + -"\n" + -"[עריכה] הרפובליקה הסינית\n" + -"\n" + -" ערך מורחב – היסטוריה של הרפובליקה הסינית\n" + -"\n" + -"ביאושם מאוזלת ידו של השלטון, החלו פקידי ממשל צעירים, קציני צבא וסטודנטים, שהושפעו מרעיונותיו המהפכניים של סון יאט-סן להתארגן לקראת הפיכה במדינה שתסלק את שושלת צ'ינג מהשלטון ותהפוך את המדינה לרפובליקה. התקוממות ווצ'אנג, התקוממות מהפכנית צבאית, החלה ב10 באוקטובר 1911. כחצי שנה מאוחר יותר, ב12 בפברואר 1912 הוקמה הממשלה הזמנית של הרפובליקה הסינית בנאנג'ינג כשבראשה עומד סון יאט-סן כנשיאה הזמני. אך סון נאלץ לוותר על תפקידו לטובת יואן שיקאי אשר פיקד באותו הזמן על \"הצבא החדש\" והיה ראש הממשלה תחת שלטון צ'ינג, כחלק מהסכם שנחתם להדחת הקיסר האחרון – הילד הנרי פו-יי. בשנים שלאחר הכתרתו כנשיא, ניסה יואן שיקאי לעקוף את סמכויותיהן של הוועדות הפרובינציאליות של הרפובליקה ואף הכריז על עצמו קיסר ב1915. שאיפותיו הקיסריות של יואן נתקלו בהתנגדות עזה של המהפכנים שראו כיצד מהפכתם הולכת לכינונה מחדש של קיסרות במדינה ולא של רפובליקה, והם החלו מתמרדים נגד יואן עד למותו ב1916 שהשאיר ריק שלטוני בסין. סין שלאחר מותו של יואן נחלקה בין הממשל הרפובליקני החדש, ובין מצביאים מקומיים ששלטו באזוריהם עוד מתקופת צ'ינג.\n" + -"\n" + -"לאירוע חסר החשיבות (בעיני המעצמות מחוץ לסין) שהתרחש ב1919 הייתה השלכה מכריעה על המשך ההיסטוריה הסינית במאה ה-20, אירוע זה הוא תנועת הארבעה במאי. התנועה, שהוציאה שם רע לפילוסופיות המערביות המקובלות והאימוץ של קוי מחשבה קיצוניים יותר שבאו לאחר מכן זרעו את הזרעים לקונפליקט בלתי ניתן לגישור בין הימין והשמאל בסין, קונפליקט שהמשיך עד לסופה של המאה.\n" + -"\n" + -"ב1920, הקים סון יאט-סן בסיס לתנועתו המהפכנית בדרום סין, אשר ממנו הוא יצא לאיחוד האומה השסועה. בעזרתם של הסובייטים, הוא הקים ברית עם המפלגה הקומוניסטית הסינית, ברית שלחמה בשאריות המשטר הקיסרי שהיו מפוזרות בצפון המדינה. לאחר מותו של סון ב1925 השתלט יורשו צ'יאנג קאי שק על המפלגה הלאומנית (הקוומינטנג) והצליח לאחד תחת שלטונו את מרבית דרום המדינה ומרכזה במערכה צבאית שנקראה המשלחת הצפונית. לאחר שהצליח להביס גם את תומכי הקיסר בצפון, פנה צ'יאנג למלחמה באנשי המפלגה הקומוניסטית, שעד לאותה תקופה נלחמו יחד איתו. הקומוניסטים פרשו מהקוומינטנג ב1927 וברחו להרים שבדרום סין. ב1934 יצאו הקומוניסטים מההרים שבשליטתם (שם הקימו את הרפובליקה הסינית-סובייטית) למצעד הארוך, מסע צבאי מפרך באזורים הטרשיים ביותר במדינה אל עבר צפון מערבה של המדינה לפרובינציית שאאנסי שם הקימו לעצמם בסיסי לוחמת גרילה.\n" + -"\n" + -"במהלך המצעד הארוך, הכירו הקומוניסטים במנהיגם החדש מאו צה דונג. המאבק בין הקוומינטנג והמפלגה הקומוניסטית הסינית נמשך לעתים בגלוי ולעתים בחשאי תוך כדי מלחמת סין-יפן השנייה (1945-1931) על אף שהכוחות יצרו לכאורה חזית מאוחדת כנגד פלישת היפנים ב1937 כחלק ממלחמת העולם השנייה. הלחימה בין שתי המפלגות המשיכה לאחר תבוסתם של היפנים ב-1945, וב-1949 שלטו הקומוניסטים ברוב שטחה של המדינה.\n" + -"\n" + -"[עריכה] הרפובליקה העממית של סין\n" + -"\n" + -" ערך מורחב – היסטוריה של הרפובליקה העממית של סין\n" + -"\n" + -"פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיפדיה ולהשלים אותו. ראו פירוט בדף השיחה.\n" + -"\n" + -"צ'יאנג קאי שק נמלט עם שאריות ממשלתו וצבאו לטיוואן שם הוא הכריז על טייפה כבירה הזמנית של הרפובליקה עד להשלמת הכיבוש מחדש של סין היבשתית על ידי כוחותיו. הרפובליקה הסינית ממשיכה להתקיים עד ימינו (סוף 2004) בטיוואן אך היא טרם הכריזה עצמאות והיא אינה מוכרת רשמית כמדינה על ידי שאר העולם.\n" + -"\n" + -"עם ההכרזה על הקמתה של הרפובליקה העממית של סין ב1 באוקטובר 1949, חולקה סין שוב לרפובליקה העממית של סין בסין היבשתית ולרפובליקה הסינית שישבה בטיוואן ובמספר איים קטנים בסביבה, כאשר לכל רפובליקה יש ממשלה הרואה בעצמה את הממשלה הסינית האמיתית והמתייחסת אל הממשלה האחרת בבוז ובביטול. מצב זה נמשך עד לשנות התשעים של המאה ה-20, כאשר שינויים פוליטים ברפובליקה הסינית הביאו אותה להפסקת הטענה הפומבית להיותה ממשלת סין היחידה.\n" + -"\n" + -"[עריכה] ראו גם\n" + -"\n" + -" * לוח זמנים של ההיסטוריה של סין – טבלה המתארת את האירועים והאישים החשובים בתולדותיה של סין.\n" + -"\n" + -"[עריכה] לקריאה נוספת\n" + -"\n" + -" * עמנואל צ' י' שו, צמיחתה של סין המודרנית, הוצאת שוקן, 2005.\n" + -"\n" + -"[עריכה] קישורים חיצוניים\n" + -"\n" + -" * ירדן ניר-בוכבינדר, סין אימנו, קונפוציוס אבינו, באתר \"האייל הקורא\"\n" + -"\n" + -"\n" + -"[עריכה] הערות שוליים\n" + -"\n" + -" 1. ^ סין של תקופת הברונזה בגלריה הלאומית לאמנות של ארצות-הברית\n" + -" 2. ^ כתב על חרסים מאתר ארליטואו (כתוב בסינית מפושטת)\n"; - - -var japanese = -"中国の歴史\n" + -"出典: フリー百科事典『ウィキペディア(Wikipedia)』\n" + -"移動: ナビゲーション, 検索\n" + -"中国歴史\n" + -"中国の歴史\n" + -"元謀・藍田・北京原人\n" + -"神話伝説(三皇五帝)\n" + -"黄河・長江文明\n" + -"夏\n" + -"殷\n" + -"周 西周\n" + -"東周 春秋\n" + -"戦国\n" + -"秦\n" + -"漢 前漢\n" + -"新\n" + -"後漢\n" + -"三国 魏 呉 蜀\n" + -"晋 西晋\n" + -"東晋 十六国\n" + -"南北朝 宋 北魏\n" + -"斉\n" + -"梁 西魏 東魏\n" + -"陳 北周 北斉\n" + -"隋\n" + -"唐\n" + -"五代十国\n" + -"宋 北宋 遼 西夏\n" + -"南宋 金\n" + -"元\n" + -"明 北元\n" + -"後金 南明 大順\n" + -"清\n" + -"中華民国\n" + -"中華人民共和国 (参考:\n" + -"台湾問題)\n" + -"\n" + -"中国の歴史(ちゅうごくのれきし)、或いは中国史(ちゅうごくし)\n" + -"\n" + -"中国の黄河文明は古代の四大文明の一つに数えられ、また黄河文明よりも更に遡る長江文明が存在した。\n" + -"目次\n" + -"[非表示]\n" + -"\n" + -" * 1 王朝、政権の変遷\n" + -" * 2 概略\n" + -" o 2.1 先史人類史\n" + -" o 2.2 文明の萌芽\n" + -" + 2.2.1 黄河文明\n" + -" + 2.2.2 長江文明\n" + -" + 2.2.3 その他\n" + -" o 2.3 先秦時代\n" + -" + 2.3.1 三代\n" + -" + 2.3.2 春秋戦国\n" + -" o 2.4 秦漢帝国\n" + -" o 2.5 魏晋南北朝時代\n" + -" o 2.6 隋唐帝国\n" + -" o 2.7 五代十国・宋\n" + -" o 2.8 モンゴル帝国\n" + -" o 2.9 明清帝国\n" + -" o 2.10 中国の半植民地化\n" + -" o 2.11 中華民国\n" + -" + 2.11.1 革命後の中国の政局\n" + -" + 2.11.2 袁世凱の台頭と帝制運動(1913年~1916年)\n" + -" + 2.11.3 袁世凱死後の政局(1916年~1920年)\n" + -" + 2.11.4 国民革命(1920年~1928年)\n" + -" + 2.11.5 国民政府(1928年~1931年)\n" + -" + 2.11.6 抗日戦争(1931年~1937年)\n" + -" + 2.11.7 日中戦争(1937年~1945年)\n" + -" + 2.11.8 漢民族以外の民族の動向\n" + -" # 2.11.8.1 モンゴルとチベットでの動き\n" + -" # 2.11.8.2 東トルキスタン(新疆)での動き\n" + -" o 2.12 中華人民共和国\n" + -" + 2.12.1 社会主義国化と粛清(1949年~1957年)\n" + -" + 2.12.2 中国共産党の対ソ自立化(1958年~1965年)\n" + -" + 2.12.3 文化大革命前期(1966年~1969年)\n" + -" + 2.12.4 文化大革命後期(1969~1976年)\n" + -" + 2.12.5 改革開放以後の現在(1976年~)\n" + -" # 2.12.5.1 一党独裁\n" + -" # 2.12.5.2 少数民族問題\n" + -" * 3 人口の変遷\n" + -" * 4 地方行政制度\n" + -" o 4.1 封建制度(前1600年頃~前221年)\n" + -" o 4.2 郡県制度(前221年~249年)\n" + -" o 4.3 軍府による広域行政(249年~583年)\n" + -" o 4.4 州県制(583年~1276年)\n" + -" * 5 祭祀制度\n" + -" * 6 外交\n" + -" o 6.1 漢帝国\n" + -" o 6.2 魏晋南北朝時代\n" + -" o 6.3 隋唐帝国\n" + -" * 7 関連項目\n" + -" * 8 脚注\n" + -"\n" + -"[編集] 王朝、政権の変遷\n" + -"現在の中国、すなわち中華人民共和国の領域\n" + -"現在の中国、すなわち中華人民共和国の領域\n" + -"\n" + -" * 長江文明\n" + -" * 黄河文明\n" + -" * 夏(紀元前2070年頃 - 紀元前1600年頃\n" + -" * 殷(紀元前1600年頃 - 紀元前12世紀・紀元前11世紀ごろ)\n" + -"\n" + -" * 周(紀元前12世紀・紀元前11世紀ごろ - 紀元前256年)…殷を倒し、西周建国。克殷の年代については諸説あり、はっきりしない。\n" + -" o 春秋時代(紀元前770年 - 紀元前403年)…紀元前453年晋が韓魏趙に分割された時点、または紀元前403年韓魏趙が諸侯に列した時点をもって春秋時代の終わり、戦国時代の始まりとする。\n" + -" o 戦国時代(紀元前403年 - 紀元前221年)…晋が韓・趙・魏に分裂し、戦国時代突入。\n" + -" * 秦(紀元前221年 - 紀元前207年)…秦王・政が6国を滅ぼし中華統一。\n" + -" * 漢\n" + -" o 前漢(紀元前206年 - 8年)…秦滅亡後、楚の項羽との楚漢戦争に勝ち、劉邦が建国。\n" + -" o 新(8年 - 23年)…外戚の王莽が前漢皇帝から帝位を簒奪し建国。\n" + -" o 後漢(25年 - 220年)…前漢の景帝の子孫の劉秀(光武帝)が王莽軍を破り、漢を再興。\n" + -" * 三国時代(220年 - 280年)\n" + -" o 魏、蜀(蜀漢・漢)、呉…曹操の子曹丕が献帝から禅譲を受け即位すると、蜀の劉備も漢皇帝を名乗り即位、さらに呉の孫権も大帝として即位し、三国時代に入る。\n" + -" * 晋(265年 - 420年)\n" + -" o 西晋(265年 - 316年)…晋王司馬炎が魏の元帝より禅譲を受け即位し建国。だが、異民族五胡の侵入により衰退。異民族の漢に滅ぼされた。\n" + -" o 東晋(317年 - 420年)…皇族でただ一人生き残った琅邪王・司馬睿は江南に逃れ、建康で即位(元帝)。これを中原の晋と区別して東晋という。\n" + -" o 五胡十六国時代(304年 - 439年)\n" + -" * 南北朝時代(439年 - 589年)\n" + -" o 北魏、東魏、西魏、北斉、北周\n" + -" o 宋、斉、梁、陳\n" + -" * 隋(581年 - 619年)\n" + -" * 唐(618年 - 907年)\n" + -" o 武周\n" + -" * 五代十国時代\n" + -" o 後梁、後唐、後晋、後漢、後周……五代(中原を中心とする国)\n" + -" o 呉、南唐・閩・呉越・荊南・楚・南漢・前蜀・後蜀・北漢……十国(中華東西南北に拠る勢力)\n" + -" * 宋\n" + -" o 北宋(960年 - 1127年)\n" + -" o 南宋(1127年 - 1279年)\n" + -" o 遼、西夏、金\n" + -" * 元(1271年 - 1368年)\n" + -" * 明(1368年 - 1644年)\n" + -" o 南明\n" + -" * 清(1616年 - 1912年)(1616年 - 1636年は後金、それ以前はマンジュ国)\n" + -" o 太平天国、満州国\n" + -" * 中華民国(台湾)(1912年 - 現在)\n" + -" * 中華人民共和国(1949年 - 現在)\n" + -"\n" + -"[編集] 概略\n" + -"\n" + -"[編集] 先史人類史\n" + -"\n" + -"中国に現れた最初期の人類としては、元謀原人や藍田原人、そして北京原人が知られている。\n" + -"\n" + -"[編集] 文明の萌芽\n" + -"\n" + -"中国大陸では、古くから文明が発達した。中国文明と呼ばれるものは、大きく分けて黄河文明と長江文明の2つがある。黄河文明は、畑作が中心、長江文明は稲作が中心であった。黄河文明が、歴史時代の殷(商)や周などにつながっていき、中国大陸の歴史の中軸となった。長江文明は次第に、中央集権国家を創出した黄河文明に同化吸収されていった。\n" + -"\n" + -"[編集] 黄河文明\n" + -"龍山文化時代の高杯。1976年山東省出土\n" + -"龍山文化時代の高杯。1976年山東省出土\n" + -"\n" + -"黄河文明は、その後の中国の歴史の主軸となる。\n" + -"\n" + -" * 裴李崗文化…紀元前7000?~紀元前5000?。一般的な「新石器時代」のはじまり。定住し、農業も行われていた。河南省(黄河中流)。土器は赤褐色\n" + -" * 老官台文化…紀元前6000?~紀元前5000?。土器作りや粟作りが行われていた。陝西省(黄河上流)。土器は赤色。\n" + -" * 北辛文化…紀元前6000?~紀元前5000?。土器は黄褐色。山東省(黄河下流)\n" + -" * 磁山文化…紀元前6000?~紀元前5000?。土器は赤褐色。河北省(黄河下流)\n" + -" * 仰韶文化…紀元前4800?~紀元前2500?。前期黄河文明における最大の文化。陝西省から河南省にかけて存在。このころは母系社会で、農村の階層化も始まった。文化後期になると、社会の階層化、分業化が進み、マルクス経済学でいうところの原始共産制は仰韶文化のころに終焉したと見られる。土器は赤色。\n" + -" * 後岡文化…紀元前5000?~紀元前4000?。北辛文化が発展。河南省。\n" + -" * 大汶口文化…紀元前4300?~紀元前2400?。土器は前期は赤色(彩陶)、後期は黒色(黒陶)。なお、この区分は黄河文明全体に見られる。山東省。\n" + -" * 龍山文化…紀元前2500?~紀元前2000?。大汶口文化から発展。後期黄河文明最大の文化。土器は黒色。山東省。\n" + -" * 二里頭文化…紀元前2000?~紀元前1600?。遺跡の中心部には二つの宮殿がある。河南省。\n" + -"\n" + -"[編集] 長江文明\n" + -"母なる長江\n" + -"母なる長江\n" + -"\n" + -"長江文明は黄河文明が萌芽する遥か前より栄えていた。夏王朝の始祖とされる禹が南方出身であるとされるため、この長江流域に夏王朝が存在したのではないかという説[1]がある。\n" + -"\n" + -" * 玉蟾岩遺跡…湖南省(長江中流)。紀元前14000年?~紀元前12000年?の稲モミが見つかっているが、栽培したものかは確定できない。\n" + -" * 仙人洞・呂桶環遺跡…江西省(長江中流)。紀元前12000年ごろ?の栽培した稲が見つかっており、それまで他から伝播してきたと考えられていた中国の農耕が中国独自でかつ最も古いものの一つだと確かめられた。\n" + -" * 彭頭山文化…湖南省(長江中流)。紀元前7000年?~紀元前5000年?。散播農法が行われており、中国における最古の水稲とされる。\n" + -" * 大渓文化…四川省(長江上流)。紀元前4500年?~紀元前3300年?。彩文紅陶(紋様を付けた紅い土器)が特徴で、後期には黒陶・灰陶が登場。灌漑農法が確立され、住居地が水の補給のための水辺から大規模に農耕を行う事の出来る平野部へ移動した。\n" + -" * 屈家嶺文化…湖北省。紀元前3000年?~紀元前2500年?大渓文化を引き継いで、ろくろを使用した黒陶が特徴。河南地方の黄河文明にも影響を与えたと考えられる。\n" + -" * 石家河文化…屈家嶺文化から発展し、湖北省天門県石家河に大規模な都城を作った紀元前2500年頃を境として屈家嶺と区別する。この都城は南北1.3Km、東西1.1Kmという大きさで、上述の黄河流域の部族と抗争したのはこの頃と考えられる。\n" + -" * 河姆渡文化 …紀元前5000年?~紀元前4000年?下流域では最古の稲作。狩猟や漁労も合わせて行われ、ブタの家畜化なども行われた。\n" + -" * 良渚文化… 浙江省(銭塘江流域)。紀元前5260年?~紀元前4200年?(以前は文化形態から大汶口文化中期ごろにはじまったとされていたが、1977年出土木材の年輪分析で改められた)青銅器以前の文明。多数の玉器の他に、絹が出土している。分業や階層化も行われたと見られ、殉死者を伴う墓が発見されている。黄河文明の山東竜山文化とは相互に関係があったと見られ、同時期に衰退したことは何らかの共通の原因があると見られている。\n" + -" * 三星堆遺跡… 紀元前2600年?~紀元前850年?。大量の青銅器が出土し、前述の他に目が飛び出た仮面・縦目の仮面・黄金の杖などがあり、また子安貝や象牙なども集められており、権力の階層があったことがうかがい知れる。青銅器については原始的な部分が無いままに高度な青銅器を作っているため他の地域、おそらくは黄河流域からの技術の流入と考えられる。長江文明と同じく文字は発見されていないが、「巴蜀文字」と呼ばれる文字らしきものがあり、一部にこれをインダス文字と結びつける説もある。\n" + -"\n" + -"[編集] その他\n" + -"\n" + -" * 新楽遺跡…遼寧省(遼河流域)。紀元前5200年?ごろの定住集落。母系社会が定着し、農業も行われていた。\n" + -"\n" + -"[編集] 先秦時代\n" + -"\n" + -"[編集] 三代\n" + -"\n" + -"史記では伝説と目される三皇五帝時代に続いて夏[2]王朝について記述されている。夏については実在が確かでなくまた定説もない。\n" + -"\n" + -"殷[3](商)が実在の確認されている最古の王朝である。殷では、王が占いによって政治を行っていた(神権政治)。殷は以前は山東で興ったとされたが、近年は河北付近に興ったとする見方が有力で、黄河文明で生まれた村のうち強大になり発展した都市国家の盟主であった[4]と考えられる。\n" + -"\n" + -"紀元前11世紀頃に殷を滅ぼした周は、各地の有力者や王族を諸侯として封建制をおこなった。しかし、周王朝は徐々に弱体化し、異民族に攻められ、紀元前770年には成周へ遷都した。その後、史記周本紀によれば犬戎の侵入により西周が滅び、洛陽に東周が再興されたされるが、同じく平勢隆郎の検討によれば幽王が殺害されたあと短期間携王が西、平王が東に並立し、紀元前759年平王が携王を滅ぼしたと考えられる。平王のもとで周は洛陽にあり、西周の故地には秦が入る。これ以降を春秋時代と呼ぶ。春秋時代には、周王朝の権威はまだ残っていたが、紀元前403年から始まるとされる戦国時代には、周王朝の権威は無視されるようになる。\n" + -"\n" + -"[編集] 春秋戦国\n" + -"諸子百家の一、孔子\n" + -"諸子百家の一、孔子\n" + -"\n" + -"春秋戦国時代は、諸侯が争う戦乱の時代であった。\n" + -"\n" + -"春秋時代は都市国家の盟主どうしの戦いだった。しかし春秋末期最強の都市国家晋が三分割されたころから様子が変わる。その当時の晋の有力な家臣六家が相争い、最初力が抜きん出ていた智氏が弱小な趙氏を攻めたものの、趙氏がよく農村を経済的ではなく封建的に支配し、それによって集めた食糧が多かったために城を守りきり、疲弊した智氏を魏氏、韓氏が攻め滅ぼしたために最終的に趙、魏、韓の三国が出来た。このこともあってそれまで人口多くてもせいぜい5万人程度だった都市国家が富国強兵に努め、商工業が発達し、貨幣も使用し始めやがて領土国家に変貌しその国都となった旧都市国家は30万人規模の都市に変貌する。また鉄器が普及したこともあいまって、農業生産も増大した。晋の分裂以後を一般に戦国時代という。\n" + -"\n" + -"また、このような戦乱の世をどのように過ごすべきかという思想がさまざまな人たちによって作られた。このような思想を説いた人たちを諸子百家(陰陽家、儒家、墨家、法家、名家、道家、兵家等が代表的)という。\n" + -"\n" + -"[編集] 秦漢帝国\n" + -"始皇帝\n" + -"\n" + -"現在の陝西省あたりにあった秦は、戦国時代に着々と勢力を伸ばした。勢力を伸ばした背景には、厳格な法律で人々を統治しようとする法家の思想を採用して、富国強兵に努めたことにあった。秦王政は、他の6つの列強を次々と滅ぼし、紀元前221年には史上はじめての中国統一を成し遂げた。秦王政は、自らの偉業をたたえ、王を超える称号として皇帝を用い、自ら始皇帝と名乗った。\n" + -"兵馬俑\n" + -"\n" + -"始皇帝は、法家の李斯を登用し、中央集権化を推し進めた。このとき、中央から派遣した役人が全国の各地方を支配する郡県制が施行された。また、文字・貨幣・度量衡の統一も行われた。さらに、当時モンゴル高原に勢力をもっていた遊牧民族の匈奴を防ぐために万里の長城を建設させた。さらに、軍隊を派遣して、匈奴の南下を抑えた。また、嶺南地方(現在の広東省)にも軍を派遣し、この地にいた百越諸族を制圧した。しかし、このような中央集権化や土木事業・軍事作戦は人々に多大な負担を与えた。そのため、紀元前210年に始皇帝が死ぬと、翌年には陳勝・呉広の乱という農民反乱がおきた。これに刺激され各地で反乱がおき、ついに秦は紀元前206年に滅びた。\n" + -"漢の偉大な発明、紙\n" + -"漢の偉大な発明、紙\n" + -"\n" + -"秦が滅びたあと、劉邦と項羽が覇権をめぐって争った(楚漢戦争)が、紀元前202年には、劉邦が項羽を破り、漢の皇帝となった。劉邦は、始皇帝が急速な中央集権化を推し進めて失敗したことから、一部の地域には親戚や臣下を王として治めさせ、ほかの地域を中央が直接管理できるようにした。これを郡国制という。しかし、紀元前154年には、各地の王が中央に対して呉楚七国の乱と呼ばれる反乱を起こした。この反乱は鎮圧され、結果として、中央集権化が進んだ。紀元前141年に即位した武帝は、国内の安定もあり、対外発展を推し進めた。武帝は匈奴を撃退し、シルクロードを通じた西方との貿易を直接行えるようにした。また、朝鮮半島北部、ベトナム北中部にも侵攻した。これらの地域はその後も強く中国文化の影響を受けることとなった。また、武帝は董仲舒の意見を聞いて、儒教を統治の基本とした。これ以降、中国の王朝は基本的に儒教を統治の基本としていく。一方で文帝の頃より貨幣経済が広汎に浸透しており、度重なる軍事行動と相まって、農民の生活を苦しめた。漢の宮廷では貨幣の浸透が農民に不利益であることがしばしば論じられており、農民の救済策が検討され、富商を中心に増税をおこなうなど大土地所有を抑制しようと努力した。また儒教の国教化に関連して儒教の教義論争がしばしば宮廷の重大問題とされるようになった。\n" + -"\n" + -"8年には、王莽が皇帝の位を奪って、一旦漢を滅ぼした。王莽は当初儒教主義的な徳治政治をおこなったが、相次ぐ貨幣の改鋳や頻繁な地名、官名の変更など理想主義的で恣意的な政策をおこなったため徐々に民心を失い、辺境異民族が頻繁に侵入し、赤眉の乱など漢の復興を求める反乱が起き、内乱状態に陥った。結局、漢の皇族の血を引く劉秀によって漢王朝が復興された。この劉秀が建てた漢を後漢という。王朝初期には雲南に進出し、また班超によって西域経営がおこなわれ、シルクロードをおさえた。初期の後漢王朝は豪族連合的な政権であったが、章帝の時代までは中央集権化につとめ安定した政治が行われた。しかし安帝時代以後外戚や宦官の権力の増大と官僚の党派対立に悩まされるようになった。\n" + -"\n" + -"[編集] 魏晋南北朝時代\n" + -"三国決戦の地、赤壁\n" + -"三国決戦の地、赤壁\n" + -"\n" + -"後漢末期の184年には、黄巾の乱と呼ばれる農民反乱がおきた。これ以降、隋が589年に中国を再統一するまで、一時期を除いて中国は分裂を続けた。この隋の再統一までの分裂の時代を魏晋南北朝時代という。また、この時期には日本や朝鮮など中国周辺の諸民族が独自の国家を形成し始めた時期でもある。\n" + -"\n" + -"さて、黄巾の乱が鎮圧されたあと、豪族が各地に独自政権を立てた。中でも有力であったのが、漢王朝の皇帝を擁していた曹操である。しかし、中国統一を目指していた曹操は、208年に赤壁の戦いで、江南の豪族孫権に敗れた。結局、曹操の死後、220年に曹操の子の曹丕が後漢の皇帝から皇帝の位を譲られ、魏を建国した。これに対して、221年には、現在の四川省に割拠していた劉備が皇帝となり、蜀を建国した。さらに、江南の孫権も229年に皇帝と称して、呉を建国した。この魏・呉・蜀の三国が並立した時代を三国時代という。\n" + -"\n" + -"三国の中で、もっとも有力であったのは魏であった。魏は後漢の半分以上の領土を継承したが、戦乱で荒廃した地域に積極的な屯田をおこない、支配地域の国力の回復につとめた。魏では官吏登用法として、九品官人法[5]がおこなわれた。\n" + -"\n" + -"三国は基本的に魏と呉・蜀同盟との争いを軸としてしばしば交戦したが、蜀がまず263年に魏に滅ぼされ、その魏も有力な臣下であった司馬炎に265年に皇帝の位を譲るという形で滅亡した。司馬炎は皇帝となって国号を晋と命名し、さらに280年に呉を滅ぼし、中国を統一した。しかし、300年から帝位をめぐって各地の皇族が戦争を起こした(八王の乱)。このとき、五胡と呼ばれる異民族を軍隊として用いたため、これらの五胡が非常に強い力を持つようになった。316年には、五胡の1つである匈奴が晋をいったん滅ぼした。これ以降、中国の北方は、五胡の建てた国々が支配し、南方は江南に避難した晋王朝(南に移ったあとの晋を東晋という)が支配した。この時期は、戦乱を憎み、宗教に頼る向きがあった。代表的な宗教が仏教と道教であり、この2つの宗教は時には激しく対立することがあった。\n" + -"\n" + -"さて、江南を中心とする中国の南方では、異民族を恐れて、中国の北方から人々が多く移住してきた。これらの人々によって、江南の開発が進んだ。それに伴い、貴族が大土地所有を行うということが一般的になり、貴族が国の政治を左右した。一部の貴族の権力は、しばしば皇帝権力よりも強かった。これらの貴族階層の者により散文、書画等の六朝文化と呼ばれる文化が発展した。東晋滅亡後、宋・斉・梁・陳という4つの王朝が江南地方を支配したが、貴族が強い力を握ることは変わらなかった。梁の武帝は仏教の保護に努めた。\n" + -"\n" + -"北方では、鮮卑族の王朝である北魏が台頭し、439年には、華北を統一した。471年に即位した孝文帝は漢化政策を推し進めた。また、土地を国家が民衆に割り振る均田制を始め、律令制の基礎付けをした。しかし、このような漢化政策に反対するものがいたこともあり、北魏は、西魏と東魏に分裂した。西魏は北周へと、東魏は北斉へと王朝が交代した。577年には北周が北斉を滅ぼしたが、581年に隋が北周にとって代わった。589年に隋は南方の陳を滅ぼし、中国を統一した。\n" + -"\n" + -"魏晋南北朝表も参照。\n" + -"\n" + -"[編集] 隋唐帝国\n" + -"現在でも使用される世界最大の大運河\n" + -"現在でも使用される世界最大の大運河\n" + -"\n" + -"中国を統一した隋の文帝は、均田制・租庸調制・府兵制などを進め、中央集権化を目指した。また同時に九品中正法を廃止し、試験によって実力を測る科挙を採用した。しかし、文帝の後を継いだ煬帝は、江南・華北を結ぶ大運河を建設したり、度重なる遠征を行ったために、民衆の負担が増大した。このため農民反乱が起き、618年に隋は滅亡した。\n" + -"\n" + -"隋に代わって、中国を支配したのが、唐である。唐は基本的に隋の支配システムを受け継いだ。626年に即位した太宗は、租庸調制を整備し、律令制を完成させた。唐の都の長安は、当時世界最大級の都市であり、各国の商人などが集まった。長安は、西方にはシルクロードによってイスラム帝国や東ローマ帝国などと結ばれ、ゾロアスター教・景教・マニ教をはじめとする各地の宗教が流入した。また、文化史上も唐時代の詩は最高のものとされる。\n" + -"当時世界最大の都市だった長安のシンボルタワー・大雁塔\n" + -"当時世界最大の都市だった長安のシンボルタワー・大雁塔\n" + -"\n" + -"太宗の死後着々と力を付けた太宗とその子の高宗の皇后武則天はついに690年皇帝に即位した。前にも後にも中国にはこれのほかに女帝はいない。\n" + -"\n" + -"712年に即位した玄宗は国内の安定を目指したが、すでに律令制は制度疲労を起こしていた。また、周辺諸民族の統治に失敗したため、辺境に強大な軍事力が置かれた。これを節度使という。節度使は、後に軍権以外にも、民政権・財政権をももつようになり、力を強めていく。763年には、節度使の安禄山たちが安史の乱と呼ばれる反乱を起こした。この反乱は郭子儀や僕固懐恩、ウイグル帝国の太子葉護らの活躍で何とか鎮圧されたが、反乱軍の投降者の勢力を無視できず、投降者を節度使に任じたことなどから各地で土地の私有(荘園)が進み、土地の国有を前提とする均田制が行えなくなっていった。結局、政府は土地の私有を認めざるを得なくなった。結果として、律令制度は崩壊した。875年から884年には黄巣の乱と呼ばれる農民反乱がおき、唐王朝の権威は失墜した。このような中、各地の節度使はますます権力を強めた。907年には、節度使の1人である朱全忠が唐を滅ぼした。\n" + -"\n" + -"[編集] 五代十国・宋\n" + -"画像:Compass in a wooden frame.jpg\n" + -"中国航海術の偉大な発明、羅針盤\n" + -"\n" + -"唐の滅亡後、各地で節度使があい争った。この時代を五代十国時代という。この戦乱を静めたのが、960年に皇帝となって宋を建国した趙匡胤である。ただし、完全に中国を宋が統一したのは趙匡胤の死後の976年である。\n" + -"\n" + -"趙匡胤は、節度使が強い権力をもっていたことで戦乱が起きていたことを考え、軍隊は文官が率いるという文治主義をとった。また、これらの文官は、科挙によって登用された。宋からは、科挙の最終試験は皇帝自らが行うものとされ、科挙で登用された官吏と皇帝の結びつきは深まった。また、多くの国家機関を皇帝直属のものとし、中央集権・皇帝権力強化を進めた。科挙を受験した人々は大体が、地主層であった。これらの地主層を士大夫と呼び、のちの清時代まで、この層が皇帝権力を支え、官吏を輩出し続けた。\n" + -"杭州\n" + -"杭州\n" + -"\n" + -"唐は、その強大な力によって、周辺諸民族を影響下においていたが、唐の衰退によってこれらの諸民族は自立し、独自文化を発達させた。また、宋は文治主義を採用していたたため、戦いに不慣れな文官が軍隊を統制したので、軍事力が弱く、周辺諸民族との戦いにも負け続けた。なかでも、契丹族の遼・タングート族の西夏・女真族の金は、中国本土にも侵入し、宋を圧迫した。これらの民族は、魏晋南北朝時代の五胡と違い、中国文化を唯一絶対なものとせず、独自文化を保持し続けた。このような王朝を征服王朝という。後代の元や清も征服王朝であり、以降、中国文化はこれらの周辺諸民族の影響を強く受けるようになった。\n" + -"\n" + -"1127年には、金の圧迫を受け、宋は、江南に移った。これ以前の宋を北宋、以降を南宋という。南宋時代には、江南の経済が急速に発展した。また、すでに唐代の終わりから、陸上の東西交易は衰退していたが、この時期には、ムスリム商人を中心とした海上の東西交易が発達した。当時の宋の特産品であった陶磁器から、この交易路は陶磁の道と呼ばれる。南宋の首都にして海上貿易の中心港だった杭州は経済都市として栄え、元時代に中国を訪れたマルコ・ポーロは杭州を「世界一繁栄し、世界一豊かな都市」と評している。\n" + -"\n" + -"文化的には、経済発展に伴って庶民文化が発達した。また、士大夫の中では新しい学問をもとめる動きが出て、儒教の一派として朱子学が生まれた。\n" + -"\n" + -"[編集] モンゴル帝国\n" + -"\n" + -"13世紀初頭にモンゴル高原で、チンギス・ハーンが、モンゴルの諸部族を統一し、ユーラシア大陸各地へと、征服運動を開始した。モンゴル人たちは、東ヨーロッパ、ロシア、小アジア、メソポタミア、ペルシャ、アフガニスタン、チベットに至る広大な領域を支配し、この帝国はモンゴル帝国と呼ばれる。中国もまた征服活動の例外ではなかった。当時、黄河が南流し、山東半島の南に流れていたため、漢民族は北方民族の攻勢を防げなかった。華北は満州系の女真族による金が、南部を南宋が支配していたが、金は1234年、南宋は1279年にモンゴルに滅ぼされた。\n" + -"\n" + -"モンゴル帝国は各地に王族や漢人有力者を分封した。モンゴル帝国の5代目の君主(ハーン)にクビライが即位すると、これに反発する者たちが、反乱を起こした。結局、モンゴル帝国西部に対する大ハーン直轄支配は消滅し、大ハーンの政権は中国に軸足を置くようになった。もっとも、西方が離反しても、帝国としての緩やかな連合は保たれ、ユーラシアには平和が訪れていた。1271年にクビライは元を国号として中国支配をすすめた。\n" + -"宋代に発明された火薬は元寇の時使用され、日本の武士を驚かせた\n" + -"宋代に発明された火薬は元寇の時使用され、日本の武士を驚かせた\n" + -"\n" + -"モンゴル帝国(元)は未だ征服していなかった南宋への牽制のためにも日本に対して通交を求めたが、日本側は断った。このため二度に渡り日本に侵攻したが、成功しなかった(元寇)。元は三度目の日本侵攻を計画したが、実現には至らなかった。\n" + -"\n" + -"中国南部を支配していた南宋を1279年に元が滅ぼしたのはすでに見たとおりである。\n" + -"\n" + -"元の中国支配は、伝統的な中国王朝とは大きく異なっていた。元は中国の伝統的な統治機構を採用せず、遊牧民の政治の仕組みを中国に移入したからである。元の支配階級の人々は、すでに西方の優れた文化に触れていたため、中国文化を無批判に取り入れることはなかった。それは政治においても同様だったのである。それに伴い、伝統的な統治機構を担ってきた、儒教的な教養を身に付けた士大夫層は冷遇され、政権から遠ざけられた。そのため、彼らは曲や小説などの娯楽性の強い文学作品の執筆に携わった。この時代の曲は元曲と呼ばれ、中国文学史上最高のものとされる。また、モンゴル帝国がユーラシア大陸を広く支配したために、この時期は東西交易が前代に増して盛んになった。\n" + -"\n" + -"元は、宮廷費用などを浪費しており、そのため塩の専売策や紙幣の濫発で収入を増やそうとした。しかし、これは経済を混乱させるだけであった。そして、庶民の生活は困窮した。こうした中、各地で反乱が発生した。中でも最大規模のものは1351年に勃発した紅巾党の乱であった。紅巾党の中から頭角をあらわした朱元璋は、1368年に南京で皇帝に即位して明を建国した。同年、朱元璋は元の都の大都を陥落させ、元の政府はモンゴル高原へと撤退した。撤退後の元のことを北元といい、明と北元はしばしば争った。明側は1388年に北元は滅んだと称しているが、実質的にはその後も両者の争いは続いた。\n" + -"\n" + -"[編集] 明清帝国\n" + -"鄭和の南海大遠征の時の巨艦・「宝船」\n" + -"鄭和の南海大遠征の時の巨艦・「宝船」\n" + -"\n" + -"洪武帝の死後、孫の建文帝が即位したが、洪武帝の四男である朱棣が反乱(靖難の変)を起こし、朱棣が永楽帝として皇帝になった。永楽帝は、モンゴルを攻撃するなど、積極的に対外進出を進めた。また、鄭和を南洋に派遣して、諸国に朝貢を求めた。この時の船が近年の研究によって長さ170m余、幅50m余という巨艦で、その約70年後の大航海時代の船の5倍から10倍近い船であったことが分かっている。\n" + -"\n" + -"また、永楽帝によって現在に至るまで世界最大の宮殿である紫禁城が北京に築かれた。\n" + -"\n" + -"永楽帝の死後、財政事情もあって、明は海禁政策をとり、貿易を著しく制限することとなる。このとき永楽帝を引き継いで、鄭和のようにずっと積極的に海外へ進出していれば、ヨーロッパのアジア・アフリカ支配も実現しなかっただろうと多くの歴史家は推測する。その後、モンゴルが再び勢力を強めはじめ、1449年には皇帝がモンゴルの捕虜になるという事件(土木の変)まで起きた。同じ頃、中国南部沿岸には、倭寇と呼ばれる海上の無法者たちが襲撃を重ねていた。これは、海禁政策で貿易が自由にできなくなっていたためである。倭寇とモンゴルを併称して北虜南倭というが、北虜南倭は明を強く苦しめた。\n" + -"紫禁城の中心、太和殿\n" + -"紫禁城の中心、太和殿\n" + -"\n" + -"また、皇帝による贅沢や多額の軍事費用の負担は民衆に重税となって圧し掛かってきた。これに対し、各地で反乱がおき、その中で頭角をあらわした李自成が1644年に明を滅ぼした。\n" + -"\n" + -"17世紀初頭には、現在の中国東北地方でヌルハチが女真族を統一した。その子のホンタイジは中国東北地方と内モンゴルを征服し、1636年にはモンゴル人から元の玉璽を譲られ、清を建国した。李自成が明を滅ぼすと清の軍隊は万里の長城を越えて、李自成の軍隊を打ち破り、中国全土を支配下に置いた。17世紀後半から18世紀にかけて、康熙帝・雍正帝・乾隆帝という3人の賢い皇帝の下で、清の支配領域は中国本土と中国東北地方・モンゴルのほかに、台湾・東トルキスタン・チベットにまで及んだ。\n" + -"\n" + -"この清の支配領域が大幅に広がった時期は、『四庫全書』の編纂など文化事業も盛んになった。しかし、これは学者をこのような事業に動員して、異民族支配に反抗する暇をなくそうとした面もあった。\n" + -"\n" + -"明代の後期には、メキシコや日本から大量の銀が中国に流入し、貨幣として基本的に銀が使われるようになった。そのため、政府も一条鞭法と呼ばれる税を銀で払わせる税法を始めた。また、清代に入ると、人頭税を廃止し土地課税のみとする地丁銀制が始まった。また明清両代ともに商品経済が盛んになり、農業生産も向上した。\n" + -"\n" + -"[編集] 中国の半植民地化\n" + -"フランス人が描いた中国半植民地化の風刺画。イギリス、ドイツ、ロシア、フランス、日本が中国を分割している。\n" + -"フランス人が描いた中国半植民地化の風刺画。イギリス、ドイツ、ロシア、フランス、日本が中国を分割している。\n" + -"\n" + -"18世紀が終わるまでには、清とヨーロッパとの貿易はイギリスがほぼ独占していた。しかし、当時イギリスの物産で中国に売れるものはほとんどなく、逆に中国の安いお茶はイギリスの労働者階級を中心に大きな需要があったこともあり、イギリスは貿易赤字に苦しんだ。そこで、イギリスは麻薬であるアヘンを中国に輸出し始めた。結果、イギリスは大幅な貿易黒字に転じた。しかし、中国にはアヘン中毒者が蔓延し、この事態を重く見た清朝政府は、1839年に林則徐に命じてアヘン貿易を取り締まらせた。しかし、これに反発したイギリス政府は清に対して翌1840年宣戦布告した。アヘン戦争と呼ばれるこの戦争では、工業化をとげ、近代兵器を持っていたイギリス軍が勝利した。これ以降、イギリスをはじめとするヨーロッパの列強は中国に対し、不平等条約(治外法権の承認、関税自主権の喪失、片務的最恵国待遇の承認、開港、租借といった)を締結させ、中国の半植民地化が進んだ。\n" + -"\n" + -"国内的には、太平天国の乱などの反乱もしばしば起きた。これに対し、同治帝(在位1861年 - 1875年)の治世の下で、ヨーロッパの技術の取り入れ(洋務運動)が行われた。\n" + -"\n" + -"1894年から翌1895年にかけて清と日本との間で行われた日清戦争にも清は敗退した。これは洋務運動の失敗を意味するものであった。この戦争の結果、日本と清との間で結んだ下関条約により、李氏朝鮮の独立が認められ、中国の王朝が長年続けてきた冊封体制が崩壊した。\n" + -"\n" + -"その後、清朝政府は改革を進めようとしたものの、沿岸地域を租借地とされるなどのイギリス・フランス・ロシア・ドイツ・アメリカ合衆国・日本による半植民地化の動きは止まらなかった。結局、1911年の武昌での軍隊蜂起をきっかけに辛亥革命が起こり、各地の省が清からの独立を宣言した。翌1912年1月1日、革命派の首領の孫文によって南京で中華民国の樹立が宣言された。北京にいた清の皇帝溥儀(宣統帝)は、清朝政府内部の実力者である袁世凱により2月12日に退位させられ、清は完全に滅亡した。\n" + -"\n" + -"[編集] 中華民国\n" + -"\n" + -"[編集] 革命後の中国の政局\n" + -"\n" + -"中華民国は成立したものの、清朝を打倒した時点で革命に参加した勢力どうしで利害をめぐって対立するようになり、政局は混乱した。各地の軍閥も民国政府の税金を横領したり勝手に新税を導入して独自の財源を持つようになり、自立化した。\n" + -"\n" + -"[編集] 袁世凱の台頭と帝制運動(1913年~1916年)\n" + -"袁世凱\n" + -"袁世凱\n" + -"\n" + -"臨時大総統であった袁世凱は大総統の権力強化を図って議会主義的な国民党の勢力削減を企てた。国民党の急進派はこれに反発、第二革命を起こしたが鎮圧された。1913年10月袁は正式な大総統となり、さらに11月には国民党を非合法化し、解散を命じた。1914年1月には国会を廃止、5月1日には立法府の権限を弱め大総統の権力を大幅に強化した中華民国約法を公布した。\n" + -"\n" + -"袁は列強から多額の借款を借り受けて積極的な軍備強化・経済政策に着手した。当初列強の袁政権に対する期待は高かった。しかしこのような外国依存の財政は、のちに列強による中国の半植民地化をますます進めることにもなった。第一次世界大戦が始まると、新規借款の望みがなくなったため、袁は財政的に行き詰まった。また日本が中国での権益拡大に積極的に動いた。\n" + -"\n" + -"1915年5月9日に、袁が大隈重信内閣の21ヶ条要求を受けたことは大きな外交的失敗と見られ、同日は国恥記念日とされ袁の外交姿勢は激しく非難された。袁は独裁を強化することでこの危機を乗り越えようとし、立憲君主制的な皇帝制度へ移行し、自身が皇帝となることを望んだ。日本も立憲君主制には当初賛成していたようだが、中国国内で帝制反対運動が激化すると反対に転じ外交圧力をかけた。1916年袁は失意のうちに没した。\n" + -"\n" + -"[編集] 袁世凱死後の政局(1916年~1920年)\n" + -"\n" + -"袁の死後、北京政府の実権を掌握したのは国務総理となった段祺瑞であった。段は当初国会[6]の国民党議員などと提携し、調整的な政策をとっていた。しかし、第一次世界戦に対独参戦しようとしたため徐々に国会と対立した。段は日本の援助の下に強硬な政策を断行した。1917年8月14日第一次世界大戦に対独参戦。軍備を拡張して国内の統一を進めた。また鉄道や通信などの業界を背景とする利権集団が段を支えた。1918年には国会議員改定選挙を強行した。国民党はこれに激しく対立し、南方の地方軍とともに孫文を首班とする広東軍政府をつくった。5月には日本と日中軍事協定[7]を結んだ。寺内正毅内閣失脚後に日本の外交方針が転回すると、段は急速に没落した。段の安徽派と対立関係にあった直隷派の馮国璋は徐世昌を大総統に推薦し、段もこれを受け入れた。親日的な安徽派は徐々に影響力を失っていった。1919年5月4日、山東半島での主権回復と反日を訴えるデモ行進が始まった。これを五・四運動という。なお山東半島は1922年に返還された。1920年7月の安直戦争で直隷派に敗れたことで段は失脚した。\n" + -"\n" + -"[編集] 国民革命(1920年~1928年)\n" + -"革命家・孫文\n" + -"革命家・孫文\n" + -"\n" + -"袁世凱により国民党が非合法化されたのち、孫文は1914年7月に中国革命党を東京で結成した。1919年には拠点を上海に移し、中国国民党と改称した。1921年には上海で中国共産党が成立した。これらの政党は1918年のロシア革命の影響を受けており、議会政党というよりも明確な計画性と組織性を備えた革命政党を目指した。1924年国民党は第一回全国大会をおこない、党の組織を改編するとともに共産党との合同(第一次国共合作)を打ち出した。孫文はこのころ全く機能していなかった国会に代わって国内の団体代表による国民会議を提唱し、これに呼応した馮国璋により北京に迎えられた。1925年には国民会議促成会が開かれたが、この会期中に孫文は没した。7月には広東軍政府で機構再編が進み、中華民国国民政府の成立が宣言された。一方で1924年6月には蒋介石を校長として黄埔軍官学校が設立された。1925年4月に国民革命軍が正式に発足され、国民党は蒋介石を指導者として軍事的な革命路線を推し進めることとなった。1926年に広州から北伐を開始した。1927年1月には武漢に政府を移し、武漢国民政府と呼ばれるようになった。この武漢国民政府では当初国民党左派と共産党が優位にあったが、蒋介石は同年4月12日上海クーデターを起こしてこれらを弾圧し、4月18日には反共を前面に打ち出した南京国民政府を成立させた。南京国民政府は主に上海系の資本家に支えられ、北京・武漢・南京に3つの政権が鼎立することになったが、9月ごろから武漢政府も反共に転じ、南京政府に吸収された。1928年6月南京政府の国民革命軍は北京の中華民国政府を打倒し、12月に張学良もこれを承認したことから、国民政府によって中国は再び統一された。\n" + -"\n" + -"[編集] 国民政府(1928年~1931年)\n" + -"蒋介石\n" + -"蒋介石\n" + -"\n" + -"国民政府においては基本的に国民党の一党独裁の立場が貫かれた。しかし一般党員の数は50万人以下であったとされており、4億をこえると考えられた中国国民のなかではかなり少数であった(国民の多くが「国民」として登録されておらず、しかも文盲のものも多かった)。そのため支配基盤は完全とは言えず、土地税を中心として地方政権の財源を確保する国地画分政策がおこなって、割拠的傾向がいまだに強い地方勢力に配慮したりした。1930年代前半には国民政府に叛旗を翻す形で地方政権が樹立される例が多くなり、軍事衝突なども起きた。1930年に閻錫山と汪兆銘が中心となった北平政府や1931年に孫科らがたてた広州政府などである。\n" + -"\n" + -"しかしこのような軍事的緊張は国民政府の中央軍を掌握していた蒋介石の立場を強めることにもなった。蒋介石は経済政策[8]でも手腕を発揮し影響力を増した。\n" + -"\n" + -"[編集] 抗日戦争(1931年~1937年)\n" + -"満州国皇帝愛新覚羅溥儀\n" + -"満州国皇帝愛新覚羅溥儀\n" + -"\n" + -"張作霖が関東軍に爆殺されたあとをついだ張学良は国民革命を支持しており、自身の支配していた中国東北地方を国民政府へ合流させた。このために反日運動が中国東北地方にも広がったが、日本は中国東北地方の権益を確保しようとしていたためにこれに大きく反発した。1931年9月、満州事変がおこり、関東軍によって日本政府の意向を無視して大規模な武力行動がおこなわれた。しかし列強はこれを傍観する姿勢をとったので、日本政府はこの行動を追認した。\n" + -"\n" + -"東北地方をほぼ制圧した日本軍は、1932年に上海事変を起こし、列強がそれに注目している間に傀儡政権として満州国を東北地方に樹立した。同年10月、リットン調査団が国際連盟によって派遣され、満州国を中国の主権の下に列強の共同管理による自治政府とするべきという妥協案を示したが、日本は採択に反対した。1933年5月日中間で停戦協定(塘沽協定)が結ばれた。1934年には満州国は帝制に移行し、満州帝国となった。\n" + -"\n" + -"1931年に瑞金に政権を樹立していた中国共産党は満州国建国時に日本に宣戦布告していたが、国民党との抗争に忙しく、中国国民で一致して日本の侵略に立ち向かうことはできなかった。1934年には瑞金は国民党により陥落し、打撃を受けた中国共産党は長征と称して西部に移動し、組織の再編をはかった。長征の結果中国共産党は延安に拠点を移した。\n" + -"\n" + -"[編集] 日中戦争(1937年~1945年)\n" + -"\n" + -"1937年には、盧溝橋事件を契機に、日本軍が中国本土に進出し、中華民国と全面戦争に入った(日中戦争)。これに対し、蒋介石は当初日本との戦いよりも中国共産党との戦いを優先していたが、西安事件により、二つの党が協力して日本と戦うことになった(第二次国共合作)。\n" + -"カイロ会談に出席した蒋介石とアメリカのフランクリン・D・ルーズベルト大統領、イギリスのウィンストン・チャーチル首相\n" + -"カイロ会談に出席した蒋介石とアメリカのフランクリン・D・ルーズベルト大統領、イギリスのウィンストン・チャーチル首相\n" + -"\n" + -"しかし日中戦争は当初日本軍優位に進み、日本軍は多くの都市を占領したが、各拠点支配はできても広大な中国において面での支配はできず、これを利用した国民党軍・共産党軍ともに各地でゲリラ戦を行い日本軍を苦しめ、戦線を膠着させた。日本は汪兆銘ら国民党左派を懐柔、南京国民政府を樹立させたが、国内外ともに支持は得られなかった。加えて1941年12月、日本はアメリカやイギリス(連合国)とも戦端を開いたが(太平洋戦争)、一方で中国で多くの戦力を釘付けにされるなど、苦しい状況に落ち込まされた。国民党政府は連合国側に所属し、アメリカやイギリスなどから豊富な援助を受けることとなった。\n" + -"\n" + -"結局、中国大陸戦線では終始日本側が優勢であったものの、1945年8月ポツダム宣言の受諾とともに日本が無条件降伏することで終結した。国民党政府は連合国の1国として大きな地位を占めていたこともあり、戦勝国として有利な立場を有することとなり、日本だけでなくヨーロッパ諸国も租界を返還するなど、中国の半植民地化は一応の終わりを見せた。\n" + -"\n" + -"しかしまもなく国民党と共産党との対立が激化して国共内戦が勃発し、結果として左派が力を持ったアメリカからの支援が減った国民党に対して、ソビエト連邦からの支援を受けていた中国共産党が勝利し、1949年10月1日に毛沢東が中華人民共和国の成立を宣言した。内戦に敗れた中国国民党率いる中華民国政府は台湾島に撤退し、現在に至るまで中国共産党率いる中華人民共和国と「中国を代表する正統な政府」の地位を争っている。\n" + -"\n" + -"[編集] 漢民族以外の民族の動向\n" + -"\n" + -"[編集] モンゴルとチベットでの動き\n" + -"\n" + -"辛亥革命により清国が消滅すると、その旧領をめぐって中国、モンゴル、チベットは、それぞれに自領域を主張した。\n" + -"\n" + -"中国は清領全域を主張した。これに対して、モンゴルとチベットは、自分たちは清朝の皇帝に服属していたのであって中国という国家に帰属するものではなく、服属先の清帝退位後は中国と対等の国家であると主張し独立を目指す動きが強まった。\n" + -"ポタラ宮、当時のチベットの中心地\n" + -"ポタラ宮、当時のチベットの中心地\n" + -"\n" + -"1913年、モンゴルではボグド・ハーンによって、チベットではダライ・ラマ13世よって中国からの独立が宣言され、両者はモンゴル・チベット相互承認条約を締結するなど国際的承認をもとめ、これを認めない中華民国とは戦火を交えた。 この状況は、モンゴル域への勢力浸透をはかるロシア、チベット域への進出をねらうイギリスの介入をゆるし、モンゴル・ロシア・中華民国はキャフタ協定に調印批准、チベット・イギリス・中華民国はシムラ協定(民国政府のみ調印、批准されなかった)が模索されたものの問題の解決には至らなかった。\n" + -"\n" + -"ダライ・ラマを補佐していたパンチェン・ラマは親中国的であったために、イギリスに接近するダライ・ラマに反発し、1925年に中国に亡命した。1933年、ダライ・ラマ13世が死去、中国の統治下にあったチベット東北部のアムド地方(青海省)で生まれたダライ・ラマ14世の即位式典に列席した国民政府の使節団は、式典が終了したのちも、蒙蔵委員会駐蔵弁事處を自称してラサにとどまった。1936年には長征中の中国共産党の労農紅軍が、カム地方東部(四川省西部、当時西康省)に滞留中、同地のチベット人に「チベット人人民共和国」(博巴人民共和国)[9]を組織させたが、紅軍の退出とともに、ほどなく消滅した。\n" + -"\n" + -"この問題は、モンゴルについては、1947年、外蒙古部分のみの独立を中華民国政府が承認することによって、チベットについては、1950年、十七ヶ条協定によってチベットの独立が否定され中華人民共和国の一地方となったことによって、一応の決着をみた。\n" + -"\n" + -"[編集] 東トルキスタン(新疆)での動き\n" + -"\n" + -"東トルキスタン(新疆)では、19世紀中に統治機構の中国化が達成されていた。すなわち、旗人の3将軍による軍政と、地元ムスリムによるベク官人制にかわり、省を頂点に府、州、県に行政区画された各地方に漢人科挙官僚が派遣されて統治する体制である。そのため、辛亥革命時、東トルキスタンでは、地元ムスリムがチベットやモンゴルと歩調をあわせて自身の独立国家を形成しようとする動きはみられず、新疆省の当局者たちは、すみやかに新共和国へ合流する姿勢を示した。この地では、楊増新が自立的な政権を維持し、またソ連と独自に難民や貿易の問題について交渉した。楊増新の暗殺後は金樹仁が実権が握ったが、彼は重税を課して腐敗した政治をおこなったため、1931年には大規模な内乱状態に陥った。その後金樹仁の部下であった盛世才が実権を握るようになり、彼はソ連にならった政策を打ち出して徐々に権力を強化した。一方で1933年には南部で東トルキスタン共和国の独立が宣言されたが、わずか6ヶ月で倒れた。\n" + -"\n" + -"[編集] 中華人民共和国\n" + -"\n" + -"[編集] 社会主義国化と粛清(1949年~1957年)\n" + -"「建国宣言」を行なう毛沢東\n" + -"「建国宣言」を行なう毛沢東\n" + -"\n" + -"1950年中ソ友好同盟相互援助条約が結ばれた。これは日本およびその同盟国との戦争を想定して締結されたものである。この条約でソ連が租借していた大連、旅順が返還され、ソ連の経済援助の下で復興を目指すこととなった。1953年より社会主義化が進み、人民政治協商会議に代わって全国人民代表大会が成立、農業生産合作社が組織された。\n" + -"\n" + -"1956年にソ連でフルシチョフによって「スターリン批判」がおこなわれると、東欧の社会主義国に動揺がはしった。中国共産党政府も共産圏にある国としてこの問題への対処を迫られ、この年初めて開催された党全国代表大会では、「毛沢東思想」という文言が党規約から消えた。そして全く一時的に(わずか2ヶ月)「百花斉放、百家争鳴」と称して民主党などの「ブルジョワ政党」の政治参加が試みられた。しかしブルジョワ政党が中国共産党政府による一党独裁に対して激しい批判を噴出させたため、逆に共産党による反右派闘争を惹起し、一党支配体制は強められた。一方で中ソ協定が結ばれ、軍事上の対ソ依存は強くなった。この時代の中華人民共和国をソ連のアメリカに対する緩衝国家あるいは衛星国家とみなすことも可能である。しかし徐々にデタント政策へと転回し始めていたソ連の対外政策は、中国共産党政府の中華民国に対する強硬政策と明らかに矛盾していた。\n" + -"\n" + -"[編集] 中国共産党の対ソ自立化(1958年~1965年)\n" + -"\n" + -"1958年に、毛沢東は大躍進政策を開始し、人民公社化を推進した。当初はかなりの効果をあげたかに見えた人民公社であったが、党幹部を意識した誇大報告の存在、極端な労働平均化などの問題が開始3ヶ月にしてすでに報告されていた。毛沢東はこのような報告を右派的な日和見主義であり、過渡的な問題に過ぎないと見ていたため、反対意見を封殺したが、あまりに急速な人民公社化は都市人口の異様な増大など深刻な問題を引き起こしていた。\n" + -"\n" + -"一方でこの年、中国共産党政府は台湾海峡で中華民国に対して大規模な軍事行動を起こし、アメリカ軍の介入を招いた。フルシチョフは中国共産党政府の強硬な姿勢を非難し、また自国がアメリカとの全面戦争に引きずり込まれないように努力した。ソ連はワルシャワ条約機構の東アジア版ともいうべき中ソの共同防衛体制を提案したが、中国共産党政府はソ連の対外政策への不信からこれを断った。その後1959年6月ソ連は中ソ協定を一方的に破棄した。1960年には経済技術援助条約も打ち切られ、この年の中国のGNPは1%も下落した。\n" + -"\n" + -"1959年と1960年に大規模な飢饉が中国を襲い、1500万人程度(2000万から5000万人以上とも)と言われる餓死者を出して大躍進政策も失敗に終わった。1960年代初頭には人民公社の縮小がおこなわれ、毛沢東自身が自己批判をおこなうなど、一見調整的な時期に入ったように思われた。劉少奇が第2次5ヶ年計画の失敗を人民公社による分権的傾向にあると指摘し、中央集権を目指した政治改革、個人経営を一部認めるなど官僚主義的な経済調整をおこなった。\n" + -"\n" + -"しかし党組織の中央集権化と個人経営に懐疑的であった毛沢東はこれを修正主義に陥るものであると見ていた。1963年に毛沢東は「社会主義教育運動」を提唱し、下部構造である「農村の基層組織の3分の1」は地主やブルジョワ分子によって簒奪されていると述べた。これは劉少奇ら「実権派」を暗に批判するものであった。またこのころ毛沢東は「文芸整風」運動と称して学術界、芸術界の刷新をはかっていたことも、のちの文化大革命の伏線となった。1964年中国は核実験に成功し、軍事的な自立化に大きな一歩を踏み出した。一方で1965年にアメリカによる北爆が始まりベトナム戦争が本格化すると、軍事的緊張も高まった。\n" + -"\n" + -"チベットでは独立運動が高まったが、政府はこれを運動家に対する拷問など暴力によって弾圧した。このため多数の難民がインドへ流入した。\n" + -"\n" + -"[編集] 文化大革命前期(1966年~1969年)\n" + -"天安門広場は中華人民共和国時代にも多くの歴史の舞台となった\n" + -"天安門広場は中華人民共和国時代にも多くの歴史の舞台となった\n" + -"\n" + -"1966年に毛沢東は文化大革命を提唱した。毛沢東の指示によって中央文化革命小組が設置され、北京の青少年によって革命に賛同する組織である紅衛兵が結成された。毛沢東は「造反有理」(反動派に対する謀反には道理がある)という言葉でこの運動を支持したので、紅衛兵は各地で組織されるようになった。\n" + -"\n" + -"毛沢東は文革の目的をブルジョワ的反動主義者と「実権派」であるとし、劉少奇とその支持者を攻撃対象とした。毛沢東は林彪の掌握する軍を背景として劉少奇を失脚させた。しかし文化大革命は政治だけにとどまることがなく、広く社会や文化一般にも批判の矛先が向けられ、反革命派とされた文化人をつるし上げたり、反動的とされた文物が破壊されたりした。\n" + -"\n" + -"1966年の末ごろから武力的な闘争が本格化し、地方では党組織と紅衛兵との間で武力を伴った激しい権力闘争がおこなわれた。毛沢東は秩序維持の目的から軍を介入させたが、軍は毛沢東の意向を汲んで紅衛兵などの中国共産党左派に加担した。中央では周恩来らと文革小組の間で権力闘争がおこなわれた。1967年の後半になると、毛沢東は内乱状態になった国内を鎮めるために軍を紅衛兵運動の基盤であった学校や工場に駐屯させた。\n" + -"\n" + -"この時期軍の影響力は極端に増大し、それに伴って林彪が急速に台頭した。1969年には中ソ国境の珍宝島で両国の軍事衝突があり(中ソ国境紛争)、軍事的緊張が高まったこともこれを推進した。同年採択された党規約で林彪は毛沢東の後継者であると定められた。\n" + -"\n" + -"[編集] 文化大革命後期(1969~1976年)\n" + -"\n" + -"文化大革命は後期になると国内の権力闘争や内乱状態を引き起こしたが、最終的に文化大革命は1976年の毛沢東死去で終結した。 文化大革命では各地で文化財破壊や大量の殺戮が行われ、その犠牲者の合計数は数百万人とも数千万人とも言われている。また学生たちが下放され農村で働くなど、生産現場や教育現場は混乱し、特に産業育成や高等教育などで長いブランクをもたらした。\n" + -"\n" + -"一方この時期、ソ連に敵対する中国共産党政府は、同じくソ連と敵対する日本やアメリカなどからの外交的承認を受け、この結果国連の常任理事国の議席も台湾島に遷都した中華民国政府(国民党政権)に変わって手にするなど、国際政治での存在感を高めつつあった。\n" + -"\n" + -"[編集] 改革開放以後の現在(1976年~)\n" + -"返還された香港は中国経済の牽引都市になっている\n" + -"返還された香港は中国経済の牽引都市になっている\n" + -"\n" + -"その後は一旦華国鋒が後を継いだが、1978年12月第11期三中全会で鄧小平が政権を握った。鄧小平は、政治体制は共産党一党独裁を堅持しつつ、資本主義経済導入などの改革開放政策を取り、近代化を進めた(社会主義市場経済、鄧小平理論)。この結果、香港ほか日米欧などの外資の流入が開始され、中国経済は離陸を始めた。\n" + -"\n" + -"[編集] 一党独裁\n" + -"\n" + -"冷戦崩壊後に、複数政党による選挙や言論の自由などの民主主義化を達成した中華民国と違い、いまだに中国共産党政府による一党独裁から脱却できない中華人民共和国には多数の問題が山積している。\n" + -"\n" + -"1989年には北京で、1980年代の改革開放政策を進めながら失脚していた胡耀邦の死を悼み、民主化を求める学生や市民の百万人規模のデモ(天安門事件)が起きたが、これは政府により武力鎮圧された。その一連の民主化運動の犠牲者数は中国共産党政府の報告と諸外国の調査との意見の違いがあるが、数百人から数万人に上るといわれている。しかし中国共産党政府はこの事件に関しては国内での正確な報道を許さず、事件後の国外からの非難についても虐殺の正当化に終始している。\n" + -"\n" + -"この事件以降も、中国共産党政府は情報や政策の透明化、民主化や法整備の充実などの国際市場が要求する近代化と、暴動や国家分裂につながる事態を避けるため、内外の報道機関やインターネットに統制を加え、反政府活動家に対する弾圧を加えるなどの前近代的な動きとの間で揺れている。この様な中、2003年には国内でSARSの大発生があったが、このときも政府は虚偽の発表を行なうなど問題の隠蔽を繰り返した。\n" + -"\n" + -"天安門事件で外資流入に急ブレーキがかかったが、1990年代には、江沢民政権のもとで、鄧小平路線に従い、経済の改革開放が進み、特に安い人件費を生かした工場誘致で「世界の工場」と呼ばれるほど経済は急成長した。なお、1997年にイギリスから香港が、1999年にポルトガルからマカオが、それぞれ中華人民共和国に返還され、植民地時代に整備された経済的、法的インフラを引き継ぎ、中華人民共和国の経済の大きな推進役となっている。また、敵対している中華民国との間にも経済的な交流が進み、両国の首都の間に直行便が就航するまでになっている。\n" + -"\n" + -"人口、面積ともに世界的な規模をもつことから、アメリカの証券会社であるゴールドマンサックスは、「中華人民共和国は2050年に世界最大の経済大国になる」と予想するなど、現在、中国経済の動向は良くも悪くも注目されているが、低賃金による大量生産を売り物にしてきた経済成長は賃金上昇・東南アジアやインドの追い上げなどで限界に達しており、産業の高度化や高付加価値化などの難題に迫られている。また、各種経済統計も中国共産党政府発表のそれは信憑性が乏しいと諸外国から指摘されている。各省など地方も独自の産業振興策に走り、中国共産党中央政府に対して経済統計の水増し発表や災害などの情報隠蔽を行うなど、統計や発表の信憑性不足に拍車をかけている。\n" + -"\n" + -"これらのことより、中国共産党の一党独裁による言論統制や貧富格差、地域格差など国内のひずみを放置し続ければ、いずれ内部崩壊を起こして再度混乱状態に陥り、ソ連同様に中華人民共和国という国家体制そのものが解体、消滅するという意見も多い。\n" + -"\n" + -"[編集] 少数民族問題\n" + -"\n" + -"なお、少数民族が住む新疆ウイグル自治区(東トルキスタン)では現在漢化政策の進展によって、漢民族が同地域へ大量に流入する、都市を中心として就職などに有利な中国語教育の充実によりウイグル語が廃れるなどの民族的なマイノリティ問題が発生している。またタクラマカン砂漠の石油資源利用や新疆南北の経済格差が広がっているなど、中国共産党政府の経済政策に対する批判も根強い。\n" + -"\n" + -"1997年には新疆ウイグル自治区で大規模な暴動が起きた。海外で東トルキスタン独立運動がおこなわれている一方国内でもウイグル人活動家の処刑などが行われているが、民族自治における権限拡大という現実主義的な主張もあらわれている。たとえば中国語教育を受けたウイグル人が中国共産党組織に参加する、新疆での中国共産党政府の経済政策に積極的に参加するといった事例も見られる。\n" + -"\n" + -"チベット自治区では歴史的なチベットの主権を主張するダライ・ラマの亡命政権が海外に存在し、中国共産党政府が不法な領土占拠をしていると訴えるとともに独立運動が継続されている。中国共産党政府はこれを武力で弾圧し続け、独立運動家への拷問などを行なったために、多数の難民が隣国のインドに流入した。\n" + -"\n" + -"[編集] 人口の変遷\n" + -"\n" + -"以下のデータは主に楊学通「計画生育是我国人口史発展的必然」(1980年)による。\n" + -"時代 年代 戸数 人口 資料出所\n" + -"(夏) 禹(前2205年とされる) 13,553,923 『帝王世紀』\n" + -"秦 20,000,000? \n" + -"前漢 平帝元始2年(2年) 12,233,062 59,594,978 『漢書』地理志\n" + -"新 20,000,000? \n" + -"後漢 順帝建康元年(144年) 9,946,919 49,730,550 『冊府元亀』\n" + -"晋 武帝泰康元年(280年) 2,459,804 16,163,863 『晋書』食貨志\n" + -"隋 煬帝大業2年(606年) 8,907,536 46,019,056 『隋書』地理志・食貨志\n" + -"唐 玄宗天宝14年(755年) 8,914,709 52,919,309 『通志』\n" + -"宋 神宗元豊3年(1080年) 14,852,684 33,303,889 『宋史』地理志\n" + -"金 章宗明昌6年(1195年) 7,223,400 48,490,400 『金史』食貨志\n" + -"元 世祖至元27年(1290年) 13,196,206 58,834,711 『元史』地理志\n" + -"明 神宗万暦6年(1570年) 10,621,436 60,692,850 『続文献通考』\n" + -"清 清初(1644年) 45,000,000 \n" + -"聖祖康熙50年(1711年) 100,000,000以上 \n" + -"高宗乾隆27年(1762年) 200,000,000以上 \n" + -"高宗乾隆55年(1790年) 300,000,000以上 \n" + -"仁宗嘉慶17年(1812年) 333,700,560 『東華録』\n" + -"宣宗道光14年(1834年) 400,000,000以上 \n" + -"中華民国 民国36年(1947年) 455,590,000 『統計提要』\n" + -"中華人民共和国 1995年 1,211,210,000 『中国統計年鑑』\n" + -"\n" + -"[編集] 地方行政制度\n" + -"\n" + -"[編集] 封建制度(前1600年頃~前221年)\n" + -"\n" + -"殷・周の時代は封建制度[10]によって一定の直轄地以外は間接的に統治された。\n" + -"\n" + -"[編集] 郡県制度(前221年~249年)\n" + -"\n" + -"中国最初の統一王朝である秦は全国を郡とその下級単位である県に分ける郡県制度によって征服地を統治した。前漢初期においては、郡以上に広域な自治を認められた行政単位である国が一部の功臣や皇族のために設置された。しかし徐々に国の行政権限が回収されるとともに、推恩政策によって国の細分化が進められ、国は郡県と等しいものとなり、後漢時代には実質郡県制度そのままとなっていた。\n" + -"\n" + -"前漢時代に広域な監察制度としての刺史制度が始められると全国を13州[11]に分けた。これはいまだ行政的なものではない[12]と考えられている。後漢の後の魏王朝では官僚登用制度としての九品官人法が249年に司馬懿によって州単位でおこなわれるように適用されたので、行政単位として郡以上に広域な州が現実的な行政単位として確立したと考えられている。が、軍政面と官吏登用面のほかにどれほど地方行政に貢献したか[13]はあまり明確ではない。\n" + -"\n" + -"[編集] 軍府による広域行政(249年~583年)\n" + -"\n" + -"魏晋時代から都督府などの軍府の重要性が高まった。五胡十六国および南北朝時代になると、中国内部で複数の王朝が割拠し軍事的な緊張が高まったことから、とくに南朝において重要性が増した。これは本来特定の行政機関を持たなかったと思われる刺史に対して、軍事的に重要な地域の刺史に例外的に複数の州を統括できる行政権を与えたものであった。長官である府主(府の長官は一般的にさまざまな将軍号を帯び、呼称は一定ではないため便宜的に府主とする)は属僚の選定に対して大幅な裁量権が与えられており、そのため地方で自治的な支配を及ぼすことが出来た。また南朝では西晋末期から官吏登用において州は形骸化しており、吏部尚書によって官制における中央集権化が進行している。したがって中正官も単なる地方官吏に過ぎなくなり、広域行政単位としての州は官吏登用の面からは重要性が低下したが、地方行政単位としてはより実際性を帯びた。この時代州は一般に細分化傾向にあり、南北朝前期には中国全土で5,60州、南北朝末期に至ると中国全土で300州以上になり、ひとつの州がわずか2郡、ひとつの郡はわずか2,3県しか含まないという有様であった。\n" + -"\n" + -"[編集] 州県制(583年~1276年)\n" + -"\n" + -"南朝では都督制度が発達していたころ、北魏では州鎮制度が発達した。北魏では征服地にまず軍事的性格の強い鎮を置き、鎮は一般の平民と区別され軍籍に登録された鎮民を隷属させて支配した。鎮は徐々に州に改められたようであるが、北部辺境などでは鎮がずっと維持された。583年に隋の文帝が郡を廃止し、州県二級の行政制度を開始した。この際従来の軍府制度[14]にあった漢代地方制度的な旧州刺史系統の地方官は廃止され、軍府系統の地方官に統一されたと考えられている。595年には形骸化していた中正官も最終的に廃止されたという指摘もされている。またこれにより府主の属官任命権が著しく制限され、中央集権化がはかられた。唐では辺境を中心に広域な州鎮的軍府である総管府が置かれたが徐々に廃止され、刺史制度に基づいた地方軍的軍府、それに中央軍に対する吏部の人事権が強化・一元化され、軍事制度の中央集権化が完成された。特定の州に折衝府が置かれ、自営農民を中心として府兵が組織され常備地方軍[15]とされた。唐では州の上に10の道も設置されたが、これは監察区域で行政単位ではないと考えられている。\n" + -"\n" + -"[編集] 祭祀制度\n" + -"\n" + -"中国でおこなわれた国家祭祀については皇帝祭祀を参照。\n" + -"\n" + -"[編集] 外交\n" + -"\n" + -"中国大陸の諸王朝は前近代まで基本的に東アジアでの優越的な地位を主張し、外交的には大国として近隣諸国を従属的に扱う冊封体制が主流であった。\n" + -"\n" + -"[編集] 漢帝国\n" + -"\n" + -"漢代には南越、閩越、衛氏朝鮮などが漢の宗主権下にあったと考えられ、これらの国々は漢の冊封体制下にあったと考えられている。前漢武帝の時にこれらの諸国は征服され郡県に編入された。このことは漢の冊封が必ずしも永続的な冊封秩序を形成することを意図したものではなく、機会さえあれば実効支配を及ぼそうとしていたことを示す。また匈奴は基本的には冊封体制に組み込まれず、匈奴の単于と中国王朝の皇帝は原則的には対等であった。大秦(ローマ帝国のことを指すとされる)や大月氏などとの外交関係は冊封を前提とされていない。\n" + -"\n" + -"[編集] 魏晋南北朝時代\n" + -"\n" + -"魏晋南北朝時代には、中国王朝が分立する事態になったので、冊封体制は変質し実効支配を意図しない名目的な傾向が強くなったと考えられている。朝鮮半島では高句麗をはじめとして中小国家が分立する状態があらわれ、日本列島の古代国家[16] も半島の紛争に介入するようになったために、半島の紛争での外交的優位を得るため、これらの国々は積極的に中国王朝の冊封を求めた。しかし高句麗が北朝の実効支配には頑強に抵抗しているように、あくまで名目的関係にとどめようという努力がなされており、南越と閩越の紛争においておこなわれたような中国王朝の主導による紛争解決などは期待されていないという見方が主流である。\n" + -"\n" + -"[編集] 隋唐帝国\n" + -"\n" + -"再び中国大陸を統一した隋・唐の王朝の時代は東アジアの冊封体制がもっとも典型的となったという見方が主流である。隋は高句麗がみだりに突厥と通交し、辺境を侵したことからこれを討伐しようとしたが、遠征に失敗した。唐は、新羅と連合し、高句麗・百済を滅亡させ、朝鮮半島を州県支配しようとしたが、新羅に敗北し、願いは、叶わなかった。したがって隋・唐の冊封は実効支配とは無関係に形成されるようになった。唐の冊封体制の下では、律令的な政治体制・仏教的な文化が共有された。\n" + -"\n" + -"一方、突厥や西域諸国が服属すると、それらの地域に対する支配は直接支配としての州県、外交支配としての冊封とは異なった羈縻政策[17]がおこなわれた。\n" + -"\n" + -"[編集] 関連項目\n" + -"\n" + -" * 中華人民共和国\n" + -" * 中華民国\n" + -" * 中国帝王一覧\n" + -" * 中国の首都\n" + -" * 中国史時代区分表\n" + -" o 夏商周年表\n" + -" o 魏晋南北朝表\n" + -" * 元号一覧\n" + -" * 二十四史(清によって公認された正史)\n" + -" * 中国史関係記事一覧\n" + -" * マカオの歴史\n" + -" * 香港の歴史\n" + -" * 台湾の歴史\n" + -" * 中国の通貨制度史\n" + -" * 中国の仏教\n" + -" * 中国法制史\n" + -" * 中国化\n" + -"\n" + -"Wikibooks\n" + -"ウィキブックスに中国史関連の教科書や解説書があります。\n" + -"[編集] 脚注\n" + -"\n" + -" 1. ^ 浙江省紹興市郊外にある陵墓が禹のものであるとされ、戦国時代同地を支配していた越王勾践が禹の子孫を標榜していること、夏の桀王が『史記』鄭玄注などで淮河と長江の中間にある南巣で死んだとしていることなどによる。\n" + -" 2. ^ 河南省にある偃師二里頭遺跡が夏のものではないかとされているが、文書などが発見されていないため確定はされていない。また偃師二里頭遺跡での発掘結果から殷との連続性が確認されたが、細かい分析においては殷との非連続性も確認されているため、偃師二里頭遺跡が夏王朝のものであっても、夏が黄河流域起源の王朝であったかどうかは論争中である。\n" + -" 3. ^ 代表的な遺跡殷墟が有名であるため日本では一般に殷と呼ばれるが、商の地が殷王朝の故郷とされており、商が自称であるという説もあるため、中国では商と呼ぶほうが一般的である。\n" + -" 4. ^ ただし殷を北西から侵入してきた遊牧民族による征服王朝だとする説もある。これは偃師二里頭遺跡では青銅器が現地生産されているのに対し、殷時代の青銅器は主に蜀方面で生産されていたことが確認されていることによる。\n" + -" 5. ^ 当初は漢魏革命の際に漢の官僚を魏宮廷に回収する目的で制定されたものであったが、優れたものであったために一般的な官吏登用に使用されるようになった。これは中正官を通して地方の世論を反映した人事政策をおこなうもので、地方で名望のあったものをその程度に応じて品位に分け官僚として登用するものであった。官僚は自身の品位と官職の官品に従って一定の官職を歴任した。地方の世論に基づくとはいえ、一般的に家柄が重視される傾向にあり、「上品に寒門なく、下品に勢族なし」といわれた。南北朝時代になると官職内で名誉的な清流官職と濁流官職が貴族意識によって明確に分けられ、また家柄によって官職が固定される傾向が顕著となった。このような傾向は専制支配を貫徹しようとする皇帝の意向と対立するものであったため、官品の整理をおこなって清濁の区別をなくす努力が続けられた。しかし皇帝も貴族社会の解体そのものを望んでおらず、貴族社会の上位に皇帝権力を位置づけることでヒエラルキーを維持しようとしていたから、官職制度の根幹的な改変には至らず、官職の家柄による独占傾向を抑えることは出来なかった。\n" + -" 6. ^ 1916年8月に復活された。\n" + -" 7. ^ これはロシア革命に対するシベリア出兵において日中両軍が協力するという秘密条約である。\n" + -" 8. ^ 1928年~30年に各国と交渉して関税自主権を回復し、関税を引き上げ、塩税と統一消費税をさだめて財源を確保した。アメリカとイギリスの銀行資本に「法幣」という紙幣を使用させ、秤量貨幣であった銀両を廃止した。さらにアメリカ政府に銀を売ってドルを外為資金として貯蓄した。これにより国際的な銀価格の中国の国内経済に対する影響が大幅に緩和された。このような経済政策を積極的に推進したのは国民政府財政部長の宋子文で、彼は孫文の妻宋慶齢の弟で、妹はのちに蒋介石と結婚した宋美齢であった。\n" + -" 9. ^ 博巴あるいは波巴とはチベット人の自称。日本語に訳せばチベット人の人民政府という意味である。博巴と波巴はともに「ぽぱ」と読む。\n" + -" 10. ^ 封建制度は殷代からおこなわれているが、殷代封建制についてはあまり明確なことはわからない。殷では封建がおこなわれている地域と方国と呼ばれる、外様あるいは異民族の国家の存在が知られ、殷を方国の連盟の盟主であり、封建された国々は殷の同族国家であるとする説もあるが詳しいことはわからない。周では一定の城市を基準とした邑に基づいた封建制が広汎におこなわれたと考えられているが、この邑制国家の実態も不明である。邑をポリス的な都市国家とみる見方から、邑と周辺農地である鄙が一緒になって(これを邑土という)、貴族による大土地所有であるとする見方もある。明らかであるのは邑を支配した貴族が長子相続を根幹とした血族共同体をもっていたということで、このような共同体に基づいた支配形態を宗法制度という。宗法制度については殷代にさかのぼる見方もあるが、広汎におこなわれたのは春秋あるいは戦国時代であったとする説もある。周の封建制を宗法制度の延長にあるものと捉え、封建儀礼を宗族への加盟儀礼の延長として捉える見方もある。\n" + -" 11. ^ 中国古来より中国世界を9つの地方に分ける考え方が漠然と存在した。中国王朝の支配領域を「九州」といい、それがすなわち「天下」であった。ただし九州の概念は後漢時代にいたるまでははっきりしたものではなく一様でない。\n" + -" 12. ^ 前漢成帝のときに州の監察権が御史中丞へ移行され、刺史が行政官となったという見方もあるが、後漢末期に刺史に軍事権が認められると、広域行政単位としての州はにわかに現実化したとみる見方もある。\n" + -" 13. ^ このころの州を行政単位ではなく、軍管区のような概念上の管理単位であるとする見方も強い。\n" + -" 14. ^ 北周の宇文護が創始した二十四軍制をもっていわゆる府兵制の成立と見做す見方があるがこれについては詳しいことはわからない。\n" + -" 15. ^ 折衝府の置かれた州と非設置州では当然差異があったのであるが、唐代はほかに募兵に基づく行軍制度もおこなわれており、大規模な対外戦争の際にはおもに折衝府非設置州を中心として兵が集められた。唐後期にはこの募兵制が常態化することで節度使制度がおこなわれるようになった。\n" + -" 16. ^ なお、史書からうかがえる外交記録と日本国内での銅鏡など出土品に記載された年号の問題などから、日本の古代王朝は特に南朝との外交関係を重視していたという見方が主流であるが、北朝との通交事実を明らかにしようという研究は続けられている。\n" + -" 17. ^ これは都護府を通じて服属民族を部族別に自治権を与えて間接支配するもので、羈縻政策がおこなわれた地域では現地民の国家は否定された。このことは羈縻州の住民が自発的に中国王朝の文化を受け入れることを阻害したと考えられており、羈縻政策のおこなわれた地域では冊封のおこなわれた地域とは異なり、漢字や律令などの文化の共有はおこなわれず、唐の支配が後退すると、唐の文化もこの地域では衰退することになった。冊封された国々で唐の支配が後退したあとも漢字文化が存続したことと対照的である。\n"; - - -var korean = -"한국의 역사\n" + -"위키백과 ― 우리 모두의 백과사전.\n" + -" 이 문서는 남, 북으로 분단된 1945년 이전의 한국에 대한 역사를 주로 기술하고 있다.\n" + -"\n" + -"한국의 역사 (연표)\n" + -"한국의 선사 시대 (유적)\n" + -"환인 · 환웅 (신시)\n" + -"  고조선 - 단군\n" + -"진국\n" + -"원\n" + -"삼\n" + -"국\n" + -"|\n" + -"삼\n" + -"국\n" + -"|\n" + -"남\n" + -"북\n" + -"국\n" + -"|\n" + -"후\n" + -"삼\n" + -"국 삼한 옥\n" + -"저 동\n" + -"예 부\n" + -"여\n" + -"진\n" + -"한 변\n" + -"한 마\n" + -"한\n" + -"  가\n" + -"야  \n" + -" \n" + -"백\n" + -"제\n" + -" \n" + -"  고\n" + -"구\n" + -"려    \n" + -"신\n" + -"라    \n" + -"   \n" + -"후\n" + -"백\n" + -"제 태\n" + -"봉 발\n" + -"해\n" + -" \n" + -"고려\n" + -" \n" + -" \n" + -"조선\n" + -" \n" + -"대한제국\n" + -"대한민국임시정부\n" + -"일제 강점기 (조선총독부)\n" + -"군정기\n" + -"대한민국 조선민주주의\n" + -"인민공화국\n" + -"한국의 인물\n" + -"한국의 역사는 구석기 시대 이후의 주로 한반도와 만주, 넓게는 동아시아 지역을 배경으로 발전되어 온 한국인의 역사이다.\n" + -"목차 [숨기기]\n" + -"1 선사 시대\n" + -"1.1 유적에 의한 구분\n" + -"1.2 문헌에 의한 구분\n" + -"2 상고 시대 (B.C. 2333년 ~ A.D. 1세기)\n" + -"2.1 고조선 시대\n" + -"2.2 고조선 멸망 이후 여러나라의 성장\n" + -"3 고대 시대 (A.D. 1세기~A.D. 900)\n" + -"3.1 삼국시대\n" + -"3.1.1 삼국시대 경제\n" + -"3.1.2 삼국시대 정치\n" + -"3.2 남북국시대\n" + -"4 중세시대 (A.D. 918년 ~ A.D. 1392년)\n" + -"4.1 고려의 정치\n" + -"4.2 고려의 경제\n" + -"4.3 고려의 사회\n" + -"4.4 고려의 문화\n" + -"5 근세시대 (A.D. 1392년 ~ A.D. 1506년)\n" + -"5.1 초기 조선의 정치\n" + -"5.2 초기 조선의 경제\n" + -"5.3 초기 조선의 사회\n" + -"5.4 초기 조선의 문화\n" + -"6 근대 태동기 (A.D. 1506년 ~ A.D. 1907년)\n" + -"6.1 후기 조선의 정치\n" + -"6.2 후기 조선의 경제\n" + -"6.3 후기 조선의 사회\n" + -"6.4 후기 조선의 문화\n" + -"7 근현대시대 (A.D. 1907년 ~ )\n" + -"7.1 개괄\n" + -"7.2 근대시대\n" + -"7.3 현대시대\n" + -"8 주석\n" + -"9 같이 보기\n" + -"10 참고문헌 및 링크\n" + -"10.1 역사 일반\n" + -"10.2 재단, 기타, 정부 기관\n" + -"[편집]\n" + -"선사 시대\n" + -"\n" + -"[편집]\n" + -"유적에 의한 구분\n" + -"한국의 구석기 시대(20만 년 이전 ~ 약 1만 년 전)\n" + -"한국의 신석기 시대(약 1만 년 전 ~ 약 4천 년 전)\n" + -"참고>> 웅기 부포리와 평양 만달리 유적, 통영 상노대도의 조개더미 최하층, 거창 임불리, 홍천 화화계리 유적 등을 중석기 유적지로 보는 사학자도 있다.\n" + -"[편집]\n" + -"문헌에 의한 구분\n" + -"환국시대 [1](비공식)\n" + -"신시[2] 또는 배달국 시대 [3](비공식)\n" + -"[편집]\n" + -"상고 시대 (B.C. 2333년 ~ A.D. 1세기)\n" + -"\n" + -"농경의 발달로 잉여 생산물이 생기고 청동기가 사용되면서 사유 재산 제도와 계급이 발생하였고, 그 결과, 부와 권력을 가진 족장(군장)이 출현하였다고 추측된다. 이 시기의 대표적인 유적으로 고인돌, 비파형 동검, 미송리식 토기 등이 있다. 부족장은 세력을 키워 주변 지역을 아우르고, 마침내 국가를 이룩하였다. 이 시기에 성립된 한국 최초의 국가가 고조선이다. 기원전 4세기경 철기가 보급되었고, 이후, 고조선은 철기 문화를 수용하면서 중국과 대립할 정도로 크게 발전하였으며, 만주와 한반도 각지에는 부여, 고구려, 옥저, 동예, 삼한 등 여러 나라가 성립될 수 있는 터전이 마련되었다.\n" + -"[편집]\n" + -"고조선 시대\n" + -"단군조선\n" + -"위만조선\n" + -"조선 시대 이전에는 은나라에서 건너온 기자가 세운 기자조선이 정식 역사로서 인정되었으나, 일제강점기를 전후로 점차 부인되어 현재에는 대한민국과 조선민주주의인민공화국의 역사학계 모두 이를 공식적으로 인정하지 않고 있으며, 사학자들도 대체적으로 이 설을 부정한다.\n" + -"[편집]\n" + -"고조선 멸망 이후 여러나라의 성장\n" + -"철기문명을 받아들인 각 나라들은 철기를 이용하여 농업을 발전시키면서도 독특한 사회 풍습을 유지하였다. 많은 소국들이 경쟁하는 가운데 일부는 다른 나라를 병합되었고, 다시 연맹 왕국으로 발전하여 중앙 집권 국가를 형성할 수 있는 기반을 마련하게 되었다.\n" + -"부여: 북부여, 동부여, 졸본부여\n" + -"옥저\n" + -"동예\n" + -"삼한:\n" + -"마한\n" + -"변한\n" + -"진한\n" + -"[편집]\n" + -"고대 시대 (A.D. 1세기~A.D. 900)\n" + -"\n" + -"[편집]\n" + -"삼국시대\n" + -"고구려\n" + -"백제\n" + -"신라\n" + -"삼국시대 초반은 고구려와 백제가 주도했으나 진흥왕 이후 국력이 막강해진 신라가 삼국시대 후기를 주도 했다.\n" + -"[편집]\n" + -"삼국시대 경제\n" + -"삼국의 경제는 기본적으로 물물교환 경제를 못 벗어난 체제였다고 한다.[출처 필요]\n" + -"삼국사기에는 신라가 수도에 시전을 세웠다는 기록이 있다.\n" + -"[편집]\n" + -"삼국시대 정치\n" + -"삼국의 정치는 기본적으로 중앙집권체제를 토대로 한 전제왕권 또는 귀족정치였다.\n" + -"[편집]\n" + -"남북국시대\n" + -"신라\n" + -"발해\n" + -"[편집]\n" + -"중세시대 (A.D. 918년 ~ A.D. 1392년)\n" + -"\n" + -"한국사에서는 고려시대를 중세시대로 보고 있다.\n" + -"[편집]\n" + -"고려의 정치\n" + -"고려는 새로운 통일 왕조로서 커다란 역사적 의의를 지닌다. 고려의 성립은 고대 사회에서 중세 사회로 이행하는 우리 역사의 내재적 발전을 의미한다. 신라말의 득난(6두품 세력) 출신 지식인과 호족 출신을 중심으로 성립한 고려는 골품 위주의 신라 사회보다 개방적이었고, 통치 체제도 과거제를 실시하는 등 효율성과 합리성이 강화되는 방향으로 정비되었다. 특히, 사상적으로 유교 정치 이념을 수용하여 고대적 성격을 벗어날 수 있었다.\n" + -"고려 시대는 외적의 침입이 유달리 많았던 시기였다. 그러나 고려는 줄기찬 항쟁으로 이를 극복할 수 있었다. 12세기 후반에 무신들이 일으킨 무신정변은 종전의 문신 귀족 중심의 사회를 변화 시키는 계기가 되어 신분이 낮은 사람도 정치적으로 진출할 수 있었다.\n" + -"이후, 무신 집권기와 원나라 간섭기를 지나 고려 후기에 이르러서는 새롭게 성장한 신진 사대부를 중심으로 성리학이 수용되어 합리적이고 민본적인 정치 이념이 성립되었고, 이에 따른 사회 개혁이 진전되었다.\n" + -"[편집]\n" + -"고려의 경제\n" + -"고려는 후삼국 시기의 혼란을 극복하고 전시과 제도를 만드는 등 토지 제도를 정비하여 통치 체제의 토대를 확립하였다. 또, 수취 체제를 정비하면서 토지와 인구를 파악하기 위하여 양전 사업을 실시하고 호적을 작성하였다. 아울러 국가가 주도하여 산업을 재편하면서 경작지를 확대시키고, 상업과 수공업의 체제를 확립하여 안정된 경제 기반을 확보하였다.\n" + -"농업에서는 기술의 발달로 농업 생산력이 증대되었고, 상업은 시전을 중심으로 도시 상업이 발달하면서 점차 지방에서도 상업 활동이 증가하였다. 수공업도 관청 수공업 중심에서 점차 사원이나 농민을 중심으로한 민간 수공업을 중심으로 발전해 갔다.\n" + -"[편집]\n" + -"고려의 사회\n" + -"고려의 사회 신분은 귀족, 중류층, 양민, 천민으로 구성되었다. 고려 지배층의 핵심은 귀족이었다. 신분은 세습되는 것이 원칙이었고, 각 신분에는 그에 따른 역이 부과되었다. 그러나 그렇지 않은 경우도 있었는데, 향리로부터 문반직에 오르는 경우와 군인이 군공을 쌓아 무반으로 출세하는 경우를 들 수 있다.\n" + -"백성의 대부분을 이루는 양민은 군현에 거주하는 농민으로, 조세, 공납, 역을 부담하였다. 향, 부곡, 소 같은 특수 행정 구역에 거주하는 백성은 조세 부담에 있어서 군현민보다 차별받았으나, 고려 후기 이후 특수 행정 구역은 일반 군현으로 바뀌어 갔다. 흉년이나 재해 등으로 어려움을 겪는 백성들의 생활을 안정시키기 위하여 국가는 의창과 상평창을 설치하고, 여러 가지 사회 복지 시책을 실시 하였다.\n" + -"[편집]\n" + -"고려의 문화\n" + -"고려 시대에 해당하는 중세 문화는 고대 문화의 기반 위에서 조상들의 노력과 슬기가 보태져 새로운 양상을 보였다.\n" + -"유교가 정치 이념으로 채택, 적용됨으로써 유교에 대한 인식이 확대 되었으며, 후기에는 성리학도 전래 되었다. 불교는 그 저변이 확대되어 생활 전반에 영향을 끼쳤다. 이런 가운데 불교 사상이 심화되고, 교종과 선종의 통합운동이 꾸준히 추진되었다.\n" + -"중세의 예술은 귀족 중심의 우아하고 세련된 특징을 드러내고 있다. 건축과 조각에서는 고대의 성격을 벗어나 중세적 양식을 창출하였으며, 청자와 인쇄술은 세계적인 수준을 자랑하고 있다. 그림과 문학에서도 중세의 품격 높은 멋을 찾아 볼 수 있다.\n" + -"[편집]\n" + -"근세시대 (A.D. 1392년 ~ A.D. 1506년)\n" + -"\n" + -"한국사에서는 초기 조선 시대를 근세시대로 보고 있다.\n" + -"[편집]\n" + -"초기 조선의 정치\n" + -"조선은 왕과 양반 관료들에 의하여 통치되었다. 왕은 최고 명령권자로서 통치 체제의 중심이었다. 조선 초기에는 고려 말에 성리학을 정치 이념으로 하면서 지방에서 성장한 신진 사대부들이 지배층이 되어 정국을 이끌어 나갔다. 그러나 15세기 말부터 새롭게 성장한 사림이 16세기 후반 이후 정국을 주도해 나가면서 학파를 중심으로 사림이 분열하여 붕당을 이루었다. 이후 여러 붕당 사이에 서로 비판하며 견제하는 붕당 정치를 전개하였다.\n" + -"정치 구조는 권력의 집중을 방지하면서 행정의 효율성을 높이는 방향으로 정비되었다. 관리 등용에 혈연이나 지연보다 능력을 중시하였고, 언로를 개방하여 독점적인 권력 행사를 견제하였다. 아울러 육조를 중심으로 행정을 분담하여 효율성을 높이면서 정책의 협의나 집행 과정에서 유기적인 연결이 가능하도록 하였다. 조선은 고려에 비하여 한 단계 발전된 모습을 보여 주면서 중세 사회에서 벗어나 근세 사회로 나아갔다.\n" + -"[편집]\n" + -"초기 조선의 경제\n" + -"조선은 고려 말기의 파탄된 국가 재정과 민생 문제를 해결하고 재정 확충과 민생 안정을 위한 방안으로 농본주의 경제 정책을 내세웠다. 특히 애민사상을 주장하는 왕도 정치 사상에서 민생 안정은 가장 먼저 해결해야 할 과제였다.\n" + -"조선 건국을 주도하였던 신진 사대부들은 중농 정책을 표방하면서 농경지를 확대하고 농업 생산력을 증가시키며, 농민의 조세 부담을 줄여 농민들의 생활을 안정시키려 하였다. 그리하여 건국 초부터 토지 개간을 장려하고 양전 사업을 실시한 결과 고려 말 50여만 결이었던 경지 면적이 15세기 중엽에는 160여만 결로 증가하였다. 또한 농업 생산력을 향상시키기 위하여 새로운 농업 기술과 농기구를 개발하여 민간에 널리 보급하였다.\n" + -"반면 상공업자가 허가 없이 마음대로 영업 활동을 벌이는 것을 규제하였는데, 이는 당시 검약한 생활을 강조하는 유교적인 경제관을 가진 사대부들이 물화의 수량과 종류를 정부가 통제하지 않고 자유 활동에 맡겨 두면 사치와 낭비가 조장되며 농업이 피폐하여 빈부의 격차가 커지게 된다고 생각하였기 때문이다. 더욱이 당시 사회에서는 직업적인 차별이 있어 상공업자들이 제대로 대우받지 못하였다.\n" + -"[편집]\n" + -"초기 조선의 사회\n" + -"조선은 사회 신분을 양인과 천민으로 구분하는 양천 제도를 법제화하였다. 양인은 과거에 응시하고 벼슬길에 오를 수 있는 자유민으로서 조세, 국역 등의 의무를 지녔다. 천민은 비(非)자유민으로서 개인이나 국가에 소속되어 천역을 담당하였다.\n" + -"양천 제도는 갑오개혁 이전까지 조선 사회를 지탱해 온 기본적인 신분 제도였다. 그러나 실제로는 양천 제도의 원칙에만 입각하여 운영되지는 않았다. 세월이 흐를수록 관직을 가진 사람을 의미하던 양반은 하나의 신분으로 굳어져 갔고, 양반 관료들을 보좌하던 중인도 신분층으로 정착되어 갔다. 그리하여 지배층인 양반과 피지배층인 상민 간의 차별을 두는 반상 제도가 일반화되고 양반, 중인, 상민, 천민의 신분 제도가 점차 정착되었다.\n" + -"조선 시대는 엄격한 신분제 사회였으나 신분 이동이 가능하였다. 법적으로 양인 이상이면 누구나 과거에 응시하여 관직에 오를 수 있었고, 양반도 죄를 지으면 노비가 되거나 경제적으로 몰락하여 중인이나 상민이 되기도 하였다.\n" + -"[편집]\n" + -"초기 조선의 문화\n" + -"조선 초기에는 괄목할 만한 민족적이면서 실용적인 성격의 학문이 발달하여 다른 시기보다 민족 문화의 발전이 크게 이루어졌다. 당시의 집권층은 민생 안정과 부국강병을 위하여 과학 기술과 실용적 학문을 중시하여, 한글이 창제되고 역사책을 비롯한 각 분야의 서적들이 출반되는 등 민족 문화 발전의 기반이 형성되었다.\n" + -"성리학이 정착, 발달하여 전 사회에 큰 영향을 끼쳤고, 여러 갈래의 학파가 나타났다. 15세기 문화를 주도한 관학파 계열의 관료들과 학자들은 성리학을 지도 이념으로 내세웠으나 성리학 이외의 학문과 사상이라도 좋은 점이 있으면 받아들이는 융통성을 보였다. 불교는 정부에 의하여 정비되면서 위축되었으나 민간에서는 여전히 신앙의 대상으로 자리 잡고 있었다.\n" + -"천문학, 의학 등 과학 기술에 있어서도 큰 발전을 이룩하여 생활에 응용되었고, 농업 기술은 크게 향상되어 농업 생산력을 증대시켰다.\n" + -"예술 분야에서도 민족적 특색이 돋보이는 발전을 나타내었고, 사대부들의 검소하고 소박한 생활이 반영된 그림과 필체 및 자기 공예가 두드러졌다.\n" + -"[편집]\n" + -"근대 태동기 (A.D. 1506년 ~ A.D. 1907년)\n" + -"\n" + -"한국사에서는 후기 조선 시대를 근대 태동기로 보고 있다.\n" + -"[편집]\n" + -"후기 조선의 정치\n" + -"숙종 때에 이르러 붕당 정치가 변질되고 그 폐단이 심화되면서 특정 붕당이 정권을 독점하는 일당 전제화의 추세가 대두되었다. 붕당 정치가 변질되자 정치 집단 간의 세력 균형이 무너지고 왕권 자체도 불안하게 되었다. 이에 영조와 정조는 특정 붕당의 권력 장악을 견제하기 위하여 탕평 정치를 추진하였다. 탕평 정치는 특정 권력 집단을 억제하고 왕권을 강화하려는 방향으로 진행되어 어느 정도 성과를 거두었지만, 붕당 정치의 폐단을 일소하지는 못하였다.\n" + -"탕평 정치로 강화된 왕권을 순조 이후의 왕들이 제대로 행사하지 못하면서 왕실의 외척을 중심으로 한 소수 가문에 권력이 집중되고 정치 기강이 문란해지는 세도 정치가 전개되었다. 이로써 부정부패가 만연해지고 정부의 백성들에 대한 수탈이 심해졌다.\n" + -"[편집]\n" + -"후기 조선의 경제\n" + -"임진왜란과 병자호란을 거치면서 농촌 사회는 심각하게 파괴되었다. 수많은 농민들이 전란 중에 죽거나 피난을 가고 경작지는 황폐화되었다. 이에 정부는 수취 체제를 개편하여 농촌 사회를 안정시키고 재정 기반을 확대하려 하였다. 그것은 전세 제도, 공납 제도, 군역 제도의 개편으로 나타났다.\n" + -"서민들은 생산력을 높이기 위하여 농기구와 시비법을 개량하는 등 새로운 영농 방법을 추구하였고, 상품 작물을 재배하여 소득을 늘리려 하였다. 상인들도 상업 활동에 적극적으로 참여하여 대자본을 가진 상인들도 출현하였다. 수공업 생산도 활발해져 민간에서 생산 활동을 주도하여 갔다. 이러한 과정에서 자본 축적이 이루어지고, 지방의 상공업 활동이 활기를 띠었으며, 상업 도시가 출현하기에 이르렀다.\n" + -"[편집]\n" + -"후기 조선의 사회\n" + -"조선 후기 사회는 사회 경제적 변화로 인하여 신분 변동이 활발해져 양반 중심의 신분 체제가 크게 흔들렸다. 붕당 정치가 날이 갈수록 변질되어 가면서 양반 상호 간에 일어난 정치적 갈등은 양반층의 분화을 불러왔다. 이러한 현상은 일당 전제화가 전개되면서 더욱 두드러지고 권력을 장악한 소수의 양반을 제외한 다수의 양반들이 몰락하는 계기가 되었다. 이렇게 양반 계층의 도태 현상이 날로 심화되어 가면서도 양반의 수는 늘어나고 상민과 노비의 숫자는 줄어드는 경향을 보였다. 이는 부를 축적한 농민들이나 해방된 노비들이 자신들의 지위를 높이기 위하여 또는 역의 부담을 모면하기 위하여 양반 신분을 사는 경우가 많았기 때문이다.\n" + -"이러한 급격한 사회 변화에 대한 집권층의 자세는 극히 보수적이고 임기응변적이었다. 이에 계층 간의 갈등은 더욱 심화되어 갔으며, 19세기에 들어와 평등 사상과 내세 신앙을 주장한 로마 가톨릭이 유포되면서 백성들의 의식이 점차 높아져서[출처 필요] 크고 작은 봉기가 전국적으로 일어나게 되었다. 정부는 로마 가톨릭이 점차 교세가 확장되자 양반 중심의 신분 질서 부정과 왕권에 대한 도전으로 받아들여[출처 필요] 사교로 규정하고 탄압을 가하기에 이르렀다.\n" + -"[편집]\n" + -"후기 조선의 문화\n" + -"임진왜란과 병자호란 이후 사회 각 분야의 변화와 함께 문화에서는 새로운 기운이 나타났다. 양반층 뿐만 아니라 중인층과 서민층도 문화의 한 주역으로 등장하면서 문화의 질적 변화와 함께 문화의 폭이 확대되었다.\n" + -"학문에서는 성리학의 교조화와 형식화를 비판하며 실천성을 강조한 양명학을 받아들였으며 민생 안정과 부국강병을 목표로 하여 비판적이면서 실증적인 논리로 사회 개혁론을 제시한 실학이 대두되어 개혁 추진을 주장하기도 하였다.\n" + -"천문학의 의학 등 각 분야의 기술적 성과들이 농업과 상업 등 산업 발전을 촉진하였다. 서양 문물의 유입도 이러한 발전을 가속화하는 데 이바지하였다.\n" + -"예술 분야에서는 판소리, 탈품, 서민 음악 등 서민 문화가 크게 유행하였고, 백자 등 공예도 생활 공예가 중심이 되었다. 자연 경치와 삶을 소재로 하는 문예 풍토가 진작되어 문학과 서화에 큰 영향을 끼쳤다.\n" + -"[편집]\n" + -"근현대시대 (A.D. 1907년 ~ )\n" + -"\n" + -"[편집]\n" + -"개괄\n" + -"조선 사회는 안에서 성장하고 있던 근대적인 요소를 충분히 발전시키지 못한 채 19C 후반 제국주의 열강에 문호를 개방하였다. 이후 정부와 각계(各界), 각당(各堂), 각단체(各單體), 각층(各層), 각파(各派)에서는 근대화하려는 노력을 하였으나, 성공하지 못하였다.\n" + -"개항 이후 조선은 서구 문물을 수용하고 새로운 경제 정책을 펼치면서 자주적인 근대화를 모색하였다. 그러나 일본과 청을 비롯한 외세의 경제 침략이 본격화 되면서, 이러한 노력은 큰 성과를 거두지 못했다.\n" + -"개항 이후, 사회 개혁이 진행되면서 신분 제도가 폐지되고 평등 의식도 점차 성장하였다. 또, 외국과의 교류를 통해 외래 문물과 제도 등이 수용됨에 따라 전통적인 생활 모습에도 많은 변화가 생겨났다.\n" + -"개항 이후 서양 과학 기술에 대한 관심이 높아지자, 전기, 철도, 같은 근대 기술과 서양 의술 등 각종 근대 문물이 들어왔다. 근대 시설은 일상생활을 편리하게 해 주었으나, 열강의 침략 목적에 이용되기도 하였다.\n" + -"일제는 강압적인 식민 통치를 통하여 우리 민족을 지배하였다. 이에 맞서 우리 민족은 국내외에서 무장 독립 투쟁, 민족 실력 양성 운동, 독립 외교 활동 등을 벌여 일제에 줄기차게 저항하였다. 이러한 우리 민족의 투쟁과 연합군의 승리로 1945년 8월에 광복을 맞이하였다.\n" + -"일제 강점기에는 일제의 경제적 침략으로 경제 발전이 왜곡되어, 우리 민족은 고통을 겪게 되었다. 광복 이후 일제의 식민 지배를 벗어나면서부터는 새로운 경제 발전의 계기를 마련할 수 있었다. 그러나 분단과 전쟁으로 인한 경제적 어려움도 대단히 컸다.\n" + -"일제 강점기에는 국권을 되찾으려는 독립 운동이 줄기차게 일어났고, 다른 한편에서는 근대화를 위한 각계(各界), 각당(各堂), 각단체(各單體), 각층(各層), 각파(各派)에서는 근대화하려는 노력이 펼쳐졌다. 이러한 가운데 근대 자본주의 문명이 본격적으로 유입되어 전통 사회는 점차 근대 사회로 변모해 갔는데, 식민지 현실 아래에서 근대화는 왜곡될 수밖에 없었다.\n" + -"일제는 국권을 탈취한 후에 동화와 차별의 이중 정책을 바탕으로 황국 신민화를 강력하게 추진하였다. 특히, 우리 민족의 독립 의지를 꺾으려고 우리의 역사와 문화를 왜곡하였다. 이에 맞서 우리의 전통과 문화를 지키려는 움직임이 일어났다.\n" + -"그런데, 미∙소의 한반도 분할 정책과 좌∙우익 세력의 갈등으로 남북이 분단되어 통일 국가를 세우지 못하였다. 특히, 6∙25 전쟁을 겪으면서 분단은 더욱 고착화되고 남북 사이의 상호 불신이 깊어 갔다.\n" + -"대한민국 정부 수립 이후, 민주주의가 정착되는 과정에서 많은 시련을 겪었다. 그러나 4∙19혁명과 5∙18민주화 운동, 6월 민주 항쟁 등으로 민주주의가 점차 발전하였다. 이와 함께, 냉전 체제가 해체되면서 민족 통일을 위한 노력도 계속 되고 있다.\n" + -"1960년대 이후 한국 경제는 비약적인 성장을 일구어 냈다. 한국은 이제 가난한 농업 국가가 아닌, 세계적인 경제 대국으로 변모하고 있다.\n" + -"광복 후에 한국은 많은 어려움 속에서도 경제 발전을 이룩하였는데, 이는 커다란 사회 변화를 가져왔다. 농업 사회에서 산업 사회로, 다시 정보화 사회로 발전하면서 사람들의 생활양식과 가치관도 많이 변하였다.1980년대에 진행된 민주화 운동으로 권위주의적 정치 문화가 점차 극복되고, 사회의 민주화도 꾸준히 이루어 졌다.\n" + -"광복 이후에는 학문 활동이 활발해지고 교육의 기회가 크게 확대되었다. 그러나 미국을 비롯한 서구 문화가 급속하게 유입되면서 가치관의 혼란과 전통문화의 위축 현상을 가져오기도 하였다.\n" + -"민주화와 더불어 문화의 다양화가 촉진되고, 반도체 등 몇몇 과학 기술 분야는 세계적인 수준까지 도달하였다. 한편, 현대 사회의 윤리와 생명 과학 기술의 발달 사이에서 빚어지는 갈등을 해소하려는 노력도 펼쳐지고 있다.\n" + -"[편집]\n" + -"근대시대\n" + -"대한 제국\n" + -"일제강점기 : 일본의 제국주의 세력이 한반도를 강제적으로 식민지로 삼은 시기로서, 무단 통치 시기, 문화 통치 시기, 전시 체계 시기로 나뉜다.\n" + -"무단 통치 시기 : 조선을 영구히 통치하기 위해 조선 총독부를 설치하고, 군대를 파견하여 의병 활동을 억누르고 국내의 저항 세력을 무단으로 통치한 시기이다. 언론, 집회, 출판, 결사의 자유같은 기본권을 박탈하고, 독립운동을 무자비하게 탄압하였다. 또, 헌병 경찰과 헌병 보조원을 전국에 배치하고 즉결 처분권을 부여하여 한국인을 태형에 처하기도 했다. 토지조사령을 공포하여 식민지 수탈을 시작하였고, 회사령을 공포하여 국내의 자본 세력을 억압하고 일본 자본 세력의 편의를 봐주었다. 이 시기의 한국인 노동자는 극악한 환경과 저임금, 민족적 차별까지 받으며 혹사 하였다.\n" + -"문화 통치 시기 : 3·1 운동이 발발하자 일제는 무단통치로는 조선을 효과적으로 지배할 수 없다는 판단하에, 친일파를 육성하는 문화정책을 펼친다. 이 문화정치는 가혹한 식민 통치를 은폐하려는 술책에 불과 했다. 헌병 경찰제를 보통 경찰제로 전환하였지만, 경찰력은 오히려 증강되었다. 이 들은 교육의 기회를 늘리고 자본 운용의 기회와 참정권의 기회등을 제공하겠다고 선전 하였으나 소수의 친일 분자를 육성하고, 민족 운동가들을 회유하여 민족을 기만하고 분열을 획책하였다.\n" + -"전시 체계 시기 : 1930년대 일제는 대륙침략을 본격적으로 시작하면서 한반도를 대륙 침략의 병참기지로 삼았다. 또한, 1941년 일제가 미국의 진주만을 불법적으로 기습하자 태평양 전쟁이 발발하였다. 조선에서는 일제의 강제 징용으로 한국인 노동력이 착취 되었고, 학도 지원병 제도, 징병 제도 등을 실시하여 수많은 젊은이를 전쟁에 동원하였다. 또, 젊은 여성을 정신대라는 이름으로 강제 동원하여 군수 공장 등에서 혹사시켰으며, 그 중 일부는 전선으로 끌고 가 일본군 위안부로 삼는 만행을 저질렀다.\n" + -"[편집]\n" + -"현대시대\n" + -"군정기 : 미국과 소련의 군대가 진주하여 한반도에 정부가 세워지기 이전까지의 시기\n" + -"대한민국\n" + -"제1공화국\n" + -"한국전쟁\n" + -"제2공화국\n" + -"제3공화국\n" + -"제4공화국 - 유신헌법시기. 종신 대통령제 채택\n" + -"제5공화국\n" + -"1. 정치 : 전두환 정부(군사 쿠데타에 의한 정부 - 12.12 사태) 시기. 대통령 간접선거제도 채택. 이 시기에는 민주화에 대한 무자비한 탄압이 자행되었으나, 광범위한 대중들의 1987년 6월 혁명으로 6월29선언(대통령 직접선거제도 공약)을 이끌어 내기도 하였다.\n" + -"2. 경제 : 1960~70년대에 닦아온 중공업, 경공업 기반을 첨단공업 수준으로 이끌어 올린 시기이다. 이 시기의 한국 경제는 세계에서 유래 없을 정도로 빠르게 성장했으며, 국내 물가가 가장 안정된 시기였다.\n" + -"3. 문화 : 1986년 서울 아시안 게임을 개최하였고, 1988년 서울 올림픽 게임을 유치하는 데 성공했다.\n" + -"제6공화국\n" + -"노태우 정권\n" + -"문민정부\n" + -"국민의 정부\n" + -"참여정부\n" + -"조선민주주의인민공화국\n" + -"조선민주주의인민공화국의 역사\n" + -"[편집]\n" + -"주석\n" + -"\n" + -"↑ 삼국유사 - 동경제국대학 1904년 판본, 환단고기 - 1979년 복원본\n" + -"↑ 동사 - 허목 숙종조, 규원사화 - 북애자 숙종원년\n" + -"↑ 환단고기 - 1979년 복원본\n" + -"[편집]\n" + -"같이 보기\n" + -"\n" + -"중국의 역사\n" + -"일본의 역사\n" + -"민족사관\n" + -"식민사관\n" + -"[편집]\n" + -"참고문헌 및 링크\n" + -"\n" + -"[편집]\n" + -"역사 일반\n" + -"국사 편찬 위원회 : 한국사에 관한 정보를 수집, 정리, 편찬하는 국가 연구 기관, 소장 자료, 논문, 저서 검색, 한국사 관련 연구 기관. 소장 자료, 논문, 저서 검색, 한국사 관련 안내\n" + -"국사 전자 교과서 : 현직 교사들이 연구.감수하고, 국사편찬위원회가 지원하였다. 2007년 개정된 국사교과서의 내용이 아직 반영되지 않았다.\n" + -"한국 역사 정보 시스템 : 한국사 연표, 한국사 기초 사전 및 신문 자료, 문헌 자료, 문집 등을 제공\n" + -"한국학 중앙 연구원 : 한국 문화 및 한국학 여러 분햐에 관한 연구와 교육을 수행하는 연구 기관. 디지털 한국학 개발, 정보 광장, 전자 도서관, 전통 문화 등 수록\n" + -"역사 문제 연구소 : 순수 민간 연구 단체(역사적 중립성이 의심됨), 근현대사 자료실, 간행물 자료, 한국사 학습 자료 등 수록\n" + -"[편집]\n" + -"재단, 기타, 정부 기관\n" + -"고구려 연구재단 : 고구려사를 비롯한 중국의 역사 왜곡에 학술적으로 대응하기 위하여 2004年 설립된 법인. 고구려, 발해를 비롯한 동아시아 역사 관련 자료의 조사, 수집, 정리, 정보화 자료 제공. 동북아역사재단으로 편입되어 더이상 유용하지 않다.\n" + -"국가 기록 영상관 : 대한 뉴스, 문화 기록 영화, 대통령 기록 영상 등 멀티미디어 역사 자료 제공\n" + -"국가 문화 유산 종합 정보 서비스 : 국보, 보물, 사적, 명승, 천연 기념물 지정 종목별, 시대별, 지역별, 유형별, 유물 정보, 검색 서비스 제공\n" + -"국가 지식 정보 통합 검색 시스템 : 정보 통신부 제공, 과학 기술, 정보 통신, 교육, 학술, 문화, 역사 등의 포괄적이고 연동적인 학술 데이터 검색\n" + -"국가기록유산 : 국가적 기록유산의 원본과 원문 열람 서비스 제공\n"; - - -var persian = -"تاریخ ایران پیش از اسلام\n" + -"از ویکی‌پدیا، دانشنامهٔ آزاد.\n" + -"تمدنهای باستانی آسیای غربی\n" + -"بین‌النهرین، سومر، اکد، آشور، بابل\n" + -"هیتی‌ها، لیدیه\n" + -"ایلام، اورارتو، ماننا، ماد، هخامنشی\n" + -"امپراتوری‌ها / شهرها\n" + -"سومر: اوروک – اور – اریدو\n" + -"کیش – لاگاش – نیپور – اکد\n" + -"بابل – ایسین – کلدانی\n" + -"آشور: آسور، نینوا، نوزی، نمرود\n" + -"ایلامیان – اموری‌ها – شوش\n" + -"هوری‌ها – میتانی\n" + -"کاسی‌ها – اورارتو\n" + -"گاهشماری\n" + -"شاهان سومر\n" + -"شاهان ایلام\n" + -"شاهان آشور\n" + -"شاهان بابل\n" + -"شاهان ماد\n" + -"شاهان هخامنشی\n" + -"زبان\n" + -"خط میخی\n" + -"سومری – اکدی\n" + -"ایلامی – هوری\n" + -"اساطیر بین‌النهرین\n" + -"انوما الیش\n" + -"گیل گمش – مردوخ\n" + -"نیبیرو\n" + -"اگر بخواهیم تاریخ ایران پیش از اسلام را بررسی ‌‌کنیم باید از مردمانی که در دوران نوسنگی در فلات ایران زندگی می‌‌کردند نام ببریم. پیش از مهاجرت آریائیان به فلات ایران، اقوامی با تمدن‌های متفاوت در ایران می‌زیستند که آثار زیادی از آنها در نقاط مختلف فلات ایران مانند تمدن جیرفت (در کرمانِ کنونی) و شهر سوخته در سیستان، و تمدن ساکنان تمدن تپه سیلک (در کاشان)، تمدن اورارتو و ماننا (در آذربایجان)، تپه گیان نهاوند و تمدن کاسی‌ها (در لرستان امروز) بجای مانده است. اما تمدن این اقوام کم کم با ورود آریائیان، در فرهنگ و تمدن آنها حل شد.\n" + -"برای بررسی تاریخ ایران پیش از اسلام باید از دیگر تمدنهای باستانی آسیای غربی نیز نام ببریم. شناخت اوضاع و رابطه این مناطق ایران در رابطه با تمدن‌های دیگر نظیر سومر - اکد، کلده - بابل - آشور، و غیره نیز مهم است.\n" + -"فهرست مندرجات [مخفی شود]\n" + -"۱ ایلامیان\n" + -"۲ مهاجرت آریائیان به ایران\n" + -"۳ مادها\n" + -"۴ هخامنشیان\n" + -"۵ سلوکیان\n" + -"۶ اشکانیان\n" + -"۷ ساسانیان\n" + -"۸ منابع\n" + -"۹ جستارهای وابسته\n" + -"۱۰ پیوند به بیرون\n" + -"[ویرایش]\n" + -"ایلامیان\n" + -"\n" + -"ایلامیان یا عیلامی‌ها اقوامی بودند که از هزاره سوم پ. م. تا هزاره نخست پ. م. ، بر بخش بزرگی از مناطق جنوب و غرب ایران فرمانروایی داشتند. بر حسب تقسیمات جغرافیای سیاسی امروز، ایلام باستان سرزمین‌های خوزستان، فارس، ایلام و بخش‌هایی از استان‌های بوشهر، کرمان، لرستان و کردستان را شامل می‌شد.\n" + -"آثار كشف ‌شده تمدن ایلامیان، در شوش نمایانگر تمدن شهری قابل توجهی است. تمدن ایلامیان از راه شهر سوخته در سیستان، با تمدن پیرامون رود سند هند و از راه شوش با تمدن سومر مربوط می‌شده است. ایلامیان نخستین مخترعان خط در ایران هستند.\n" + -"به قدرت رسیدن حكومت ایلامیان و قدرت یافتن سلسله عیلامی پادشاهی اوان در شمال دشت خوزستان مهم ‌ترین رویداد سیاسی ایران در هزاره سوم پ. م. است. پادشاهی اَوان یکی از دودمان‌های ایلامی باستان در جنوب غربی ایران بود. پادشاهی آوان پس از شکوه و قدرت کوتیک ـ این شوشینک همچون امپراتوری اکد، ناگهان فرو پاشید؛ این فروپاشی و هرج و مرج در منطقه در پی تاخت و تاز گوتیان زاگرس نشین رخ داد. تا پیش از ورود مادها و پارسها حدود یك هزار سال تاریخ سرزمین ایران منحصر به تاریخ عیلام است.\n" + -"سرزمین اصلی عیلام در شمال دشت خوزستان بوده. فرهنگ و تمدن عیلامی از شرق رودخانه دجله تا شهر سوخته زابل و از ارتفاعات زاگرس مركزی تا بوشهر اثر گذار بوده است. عیلامیان نه سامی نژادند و نه آریایی آنان ساكنان اوليه دشت خوزستان هستند.\n" + -"[ویرایش]\n" + -"مهاجرت آریائیان به ایران\n" + -"\n" + -"آریائیان، مردمانی از نژاد هند و اروپایی بودند که در شمال فلات ایران می‌‌زیستند. دلیل اصلی مهاجرت آنها مشخص نیست اما به نظر می‌‌رسد دشوار شدن شرایط آب و هوایی و کمبود چراگاه ها، از دلایل آن باشد. مهاجرت آریائیان به فلات ایران یک مهاجرت تدریجی بوده است که در پایان دوران نوسنگی (7000 سال پیش از میلاد) آغاز شد و تا 4000 پیش از میلاد ادامه داشته است.\n" + -"نخستین آریایی‌هایی که به ایران آمدند شامل کاسی‌ها (کانتوها ـ کاشی‌ها)، لولوبیان و گوتیان بودند. کا‌سی‌ها تمدنی را پایه گذاری کردند که امروزه ما آن را بنام تمدن تپه سیلک می‌‌شناسیم. لولوبیان و گوتیان نیز در زاگرس مرکزی اقامت گزیدند که بعدها با آمدن مادها بخشی از آنها شدند. در حدود 5000 سال پیش از میلاد، مهاجرت بزرگ آریائیان به ایران آغاز شد و سه گروه بزرگ آریایی به ایران آمدند و هر یک در قسمتی از ایران سکنی گزیدند: مادها در شمال غربی ایران، پارس‌ها در قسمت جنوبی و پارت‌ها در حدود خراسان امروزی.\n" + -"شاخه‌های قومِ ایرانی در نیمه‌های هزاره‌ی اول قبل از مسیح عبارت بوده‌اند از: باختریان در باختریه (تاجیکستان و شمالشرق افغانستانِ کنونی)، سکاهای هوم‌کار در سگائیه (شرقِ ازبکستانِ کنونی)، سُغدیان در سغدیه (جنوب ازبکستان کنونی)، خوارزمیان در خوارزمیه (شمال ازبکستان و شمالشرق ترکمنستانِ کنونی)، مرغزیان در مرغوه یا مرو (جنوبغرب ازبکستان و شرق ترکمستان کنونی)، داهه در مرکز ترکمستان کنونی، هَرَیویان در هَرَیوَه یا هرات (غرب افغانستان کنونی)، دِرَنگِیان در درنگیانه یا سیستان (غرب افغانستان کنونی و شرق ایران کنونی)، مکائیان در مکائیه یا مَک‌کُران (بلوچستانِ ایران و پاکستان کنونی)، هیرکانیان در هیرکانیا یا گرگان (جنوبغربِ ترکمنستان کنونی و شمال ایرانِ کنونی)، پَرتُوَه‌ئیان در پارتیه (شمالشرق ایران کنونی)، تپوریان در تپوریه یا تپورستان (گیلان و مازندران کنونی)، آریازَنتا در اسپدانه در مرکزِ ایرانِ کنونی، سکاهای تیزخود در الانیه یا اران (آذربایجان مستقل کنونی)، آترپاتیگان در آذربایجان ایرانِ کنونی، مادایَه در ماد (غرب ایرانِ کنونی)، کُردوخ در کردستانِ (چهارپاره‌شده‌ی) کنونی، پارسَی در پارس و کرمانِ کنونی، انشان در لرستان و شمال خوزستان کنونی. قبایلی که در تاریخ با نامهای مانناها، لولوبیان‌ها، گوتیان‌ها، و کاسی‌ها شناسانده شده‌اند و در مناطق غربی ایران ساکن بوده‌اند تیره‌هائی از شاخه‌های قوم ایرانی بوده‌اند که زمانی برای خودشان اتحادیه‌های قبایلی و امیرنشین داشته‌اند، و سپس در پادشاهی ماد ادغام شده‌اند.\n" + -"مادها در ایران نزدیک 150 سال (708- 550 ق.م) هخامنشی‌ها کمی بیش از دویست سال (550-330 ق.م) اسکندر و سلوکی‌ها در حدود صد سال (330 -250 ق.م) اشکانیان قریب پانصد سال (250 ق.م – 226 م) و ساسانیان قریب چهار صد و سی سال (226-651 م) فرمانروایی داشتند.\n" + -"[ویرایش]\n" + -"مادها\n" + -"\n" + -"\n" + -"\n" + -"ماد در 675 پیش از میلاد\n" + -"\n" + -"\n" + -"ماد در 600 پیش از میلاد\n" + -"مادها قومی ایرانی بودند از تبار آریایی که در بخش غربی فلات ایران ساکن شدند. سرزمین مادها دربرگیرنده بخش غربی فلات ایران بود. سرزمین آذربایجان در شمال غربی فلات ایران را با نام ماد کوچک و بقیهٔ ناحیه زاگرس را با نام ماد بزرگ می‌شناختند. پایتخت ماد هگمتانه است آنها توانستند در اوایل قرن هفتم قبل از میلاد اولین دولت ایرانی را تأسیس کنند\n" + -"پس از حملات شدید و خونین آشوریان به مناطق مادنشین، گروهی از بزرگان ماد گرد رهبری به نام دیاکو جمع شدند.\n" + -"از پادشاهان بزرگ این دودمان هووخشتره بود که با دولت بابل متحد شد و سرانجام امپراتوری آشور را منقرض کرد و پایه‌های نخستین شاهنشاهی آریایی‌تباران در ایران را بنیاد نهاد.\n" + -"دولت ماد در ۵۵۰ پیش از میلاد به دست کوروش منقرض شد و سلطنت ایران به پارسی‌ها منتقل گشت. در زمان داریوش بزرگ، امپراتوری هخامنشی به منتهای بزرگی خود رسید: از هند تا دریای آدریاتیک و از دریای عمان تا کوه‌های قفقاز.\n" + -"[ویرایش]\n" + -"هخامنشیان\n" + -"\n" + -"\n" + -"\n" + -"شاهنشاهی بزرگ هخامنشی در 330 ق.م.\n" + -"هخامنشیان نخست پادشاهان بومی پارس و سپس انشان بودند ولی با شکستی که کوروش بزرگ بزرگ بر ایشتوویگو واپسین پادشاه ماد وارد ساخت و سپس فتح لیدیه و بابل پادشاهی هخامنشیان تبدیل به شاهنشاهی بزرگی شد. از این رو کوروش بزرگ را بنیادگذار شاهنشاهی هخامنشی می‌دانند.\n" + -"در ۵۲۹ پ.م کوروش بزرگ پایه گذار دولت هخامنشی در جنگ‌های شمال شرقی ایران با سکاها، کشته شد. لشکرکشی کمبوجیه جانشین او به مصر آخرین رمق کشاورزان و مردم مغلوب را کشید و زمینه را برای شورشی همگانی فراهم کرد. داریوش بزرگ در کتیبهً بیستون می‌‌گوید: \" بعد از رفتن او (کمبوجیه) به مصر مردم از او برگشتند...\"\n" + -"شورش‌ها بزرگ شد و حتی پارس زادگاه شاهان هخامنشی را نیز در برگرفت. داریوش در کتیبه بیستون شمه‌ای از این قیام‌ها را در بند دوم چنین نقل می‌کند: \" زمانی که من در بابل بودم این ایالات از من برگشتند: پارس، خوزستان، ماد، آشور، مصر، پارت خراسان (مرو، گوش) افغانستان (مکائیه).\" داریوش از 9 مهر ماه 522 تا 19 اسفند 520 ق.م به سرکوبی این جنبش‌ها مشغول بود.\n" + -"جنگ‌های ایران و یونان در زمان داریوش آغاز شد. دولت هخامنشی سر انجام در 330 ق. م به دست اسکندر مقدونی منقرض گشت و ایران به دست سپاهیان او افتاد.\n" + -"اسکندر سلسله هخامنشیان را نابود کرد، دارا را کشت ولی در حرکت خود به شرق همه جا به مقاومت‌های سخت برخورد، از جمله سغد و باکتریا یکی از سرداران جنگی او بنام سپتامان 327- 329 ق. م در راس جنبش همگانی مردم بیش از دو سال علیه مهاجم خارجی مبارزه دلاورانه کرد. در این ناحیه مکرر مردم علیه ساتراپهای اسکندر قیام کردند. گرچه سرانجام نیروهای مجهز و ورزیده اسکندر این جنبش‌ها را سرکوب کردند ولی از این تاریخ اسکندر ناچار روش خشونت آمیز خود را به نرمش و خوشخویی بدل کرد.\n" + -"\n" + -"ایران\n" + -"تاریخ ایران\n" + -"ایران پیش از آریایی‌ها \n" + -"تاریخ ایران پیش از اسلام \n" + -" | دودمان‌ها و حکومت‌ها\n" + -"ایلامیان\n" + -"ماد\n" + -"هخامنشیان\n" + -"سلوکیان\n" + -"اشکانیان\n" + -"ساسانیان\n" + -"تاریخ ایران پس از اسلام \n" + -" | دودمان‌ها و حکومت‌ها\n" + -"خلفای راشدین\n" + -"امویان\n" + -"عباسیان\n" + -"ایران در دوران حکومت‌های محلی \n" + -" | دودمان‌ها و حکومت‌ها\n" + -"طاهریان\n" + -"صفاریان\n" + -"سامانیان\n" + -"آل زیار\n" + -"آل بویه\n" + -"غزنویان\n" + -"سلجوقیان\n" + -"خوارزمشاهیان\n" + -"ایران در دوره مغول \n" + -" | دودمان‌ها و حکومت‌ها\n" + -"ایلخانیان\n" + -"ایران در دوران ملوک‌الطوایفی \n" + -" | دودمان‌ها و حکومت‌ها\n" + -"سربداران\n" + -"تیموریان\n" + -"مرعشیان\n" + -"کیائیان\n" + -"قراقویونلو\n" + -"آق‌قویونلو\n" + -"ایران در دوران حکومت‌های ملی \n" + -" | دودمان‌ها و حکومت‌ها\n" + -"صفوی\n" + -"افشاریان\n" + -"زند\n" + -"قاجار\n" + -"پهلوی\n" + -"جمهوری اسلامی\n" + -"موضوعی\n" + -"تاریخ معاصر ایران\n" + -"تاریخ مذاهب ایران\n" + -"مهرپرستی\n" + -"زرتشتی\n" + -"تسنن\n" + -"تصوف\n" + -"تشیع\n" + -"تاریخ اسلام\n" + -"تاریخ زبان و ادبیات ایران\n" + -"جغرافیای ایران\n" + -"استان‌های تاریخی ایران\n" + -"اقتصاد ایران\n" + -"گاهشمار تاریخ ایران\n" + -"پروژه ایران\n" + -"[ویرایش]\n" + -"سلوکیان\n" + -"\n" + -"\n" + -"ایران در زمان سلوکیان (330 - 150 ق.م.)\n" + -"پس از مرگ اسکندر (323 ق. م) فتوحاتش بین سردارانش تقسیم شد و بیشتر متصرفات آسیائی او که ایران هسته آن بود به سلوکوس اول رسید. به این ترتیب ایران تحت حکومت سلوکیان (330 - 150 ق.م.) در آمد. پس از مدتی پارت‌ها نفوذ خود را گسترش دادند و سرانجام توانستند سلوکیان را نابود و امپراتوری اشکانی را ایجاد کنند.\n" + -"[ویرایش]\n" + -"اشکانیان\n" + -"\n" + -"\n" + -"\n" + -"امپراتوری اشکانی 250 ق.م. 224 م.\n" + -"اشکانیان (250 ق. م 224 م) که از تیره ایرانی پرنی و شاخه‌ای از طوایف وابسته به اتحادیه داهه از عشایر سکاهای حدود باختر بودند، از ایالت پارت که مشتمل بر خراسان فعلی بود برخاستند. نام سرزمین پارت در کتیبه‌های داریوش پرثوه آمده است که به زبان پارتی پهلوه می‌شود. چون پارتیان از اهل ایالت پهله بودند، از این جهت در نسبت به آن سرزمین ایشان را پهلوی نیز می‌‌توان خواند. ایالت پارتیها از مغرب به دامغان و سواحل جنوب شرقی دریای خزر و از شمال به ترکستان و از مشرق به رود تجن و از جنوب به کویر نمک و سیستان محدود می‌‌شد. قبایل پارتی در آغاز با قوم داهه که در مشرق دریای خزر می‌‌زیستند در یک جا سکونت داشتند و سپس از آنان جدا شده در ناحیه خراسان مسکن گزیدند.\n" + -"این امپراتوری در دوره اقتدارش از رود فرات تا هندوکش و از کوه‌های قفقاز تا خلیج فارس توسعه یافت. در عهد اشکانی جنگ‌های ایران و روم آغاز شد. سلسله اشکانی در اثر اختلافات داخلی و جنگ‌های خارجی به تدریج ضعیف شد تا سر انجام به دست اردشیر اول ساسانی منقرض گردید.\n" + -"[ویرایش]\n" + -"ساسانیان\n" + -"\n" + -"\n" + -"\n" + -"شاهنشاهی ساسانی در سالهای ۲۲۴ تا ۶۵۱ م.\n" + -"ساسانیان خاندان شاهنشاهی ایرانی در سالهای ۲۲۴ تا ۶۵۱ میلادی بودند. شاهنشاهان ساسانی که اصلیتشان از استان پارس بود بر بخش بزرگی از غرب قارهٔ آسیا چیرگی یافتند. پایتخت ساسانیان شهر تیسفون در نزدیکی بغداد در عراق امروزی بود.\n" + -"سلسله اشکانی به دست اردشیر اول ساسانی منقرض گردید. وی سلسله ساسانیان را بنا نهاد که تا 652 میلادی در ایران ادامه یافت. دولت ساسانی حکومتی ملی و متکی به دین و تمدن ایرانی بود و قدرت بسیار زیادی کسب کرد. در این دوره نیز جنگ‌های ایران و روم ادامه یافت.\n" + -"\n" + -"در همين دوران مانی[1] (216 - 276 میلادی) به تبلیغ مذهب خود پرداخت. مانی پس از مسافرت به هند و آشنائی با مذهب بودائی سیستم جهان مذهبی مانوی خود را که التقاطی از مذهب زردشتی، بودائی و مسیحی و اسطوره بود با دقت تنظیم کرد و در کتاب \"شاهپورگان\" اصول آن‌ها را بیان و هنگام تاجگذاری شاپوراول به شاه هدیه کرد. مانی اصول اخلاقی خود را بر پایه فلسفی مثنویت: روشنائی و تاریکی که ازلی و ابدی هستند استوار نمود. در واقع این اصول) خودداری از قتل نفس حتی در مورد حیوانات، نخوردن می، دوری از زن و جمع نکردن مال (واکنش در مقابل زندگی پر تجمل و پر از لذت طبقات حاکم و عکس العمل منفی در برابر بحران اجتماعی پایان حکومت اشکانی و آغاز حکومت ساسانی است. شاپور و هرمزد، نشر چنین مذهبی را تجویز کردند، زیرا با وجود مخالفت آن با شهوت پرستی و غارتگری و سود جوئی طبقات حاکم، از جانبی مردم را به راه \"معنویت\" و \"آشتی‌خواهی\" سوق می‌‌داد و از جانب دیگر از قدرت مذهب زردشت می‌‌کاست.\n" + -"جنبش معنوی مانی به سرعت در جهان آن روز گسترش یافت و تبدیل به نیروئی شد که با وجود جنبه منفی آن با هدف‌های شاهان و نجبا و پیشرفت جامعه آن روزی وفق نمی‌داد. پیشوایان زردتشتی و عیسوی که با هم دائما در نبرد بودند، متحد شدند و در دوران شاهی بهرام اول که شاهی تن آسا و شهوت پرست بود در جریان محاکمه او را محکوم و مقتول نمودند ( 276 میلادی). از آن پس مانی کشی آغاز شد و مغان مردم بسیاری را به نام زندک(زندیق) کشتند. مانویان درد و جانب شرق و غرب، در آسیای میانه تا سرحد چین و در غرب تا روم پراکنده شدند.\n" + -"\n" + -"امپراتوری پهناور ساسانی که از رود سند تا دریای سرخ وسعت داشت، در اثر مشکلات خارجی و داخلی ضعیف شد. آخرین پادشاه این سلسله یزدگرد سوم بود. در دوره او مسلمانان عرب به ایران حمله کردند و ایرانیان را در جنگ‌های قادسیه، مدائن، جلولاء و نهاوند شکست دادند و بدین ترتیب دولت ساسانی از میان رفت.\n" + -"در پایان سده پنجم و آغاز قرن ششم میلادی جنبش بزرگی جامعه ایران را تکان داد که به صورت قیامی واقعی سی سال ( 24-494 م.) دوام آورد و تأثیر شگرفی در تکامل جامعه آن روزایران بخشید.\n" + -"در چنین اوضاعی مزدک[2] پسر بامدادان به تبلیغ مذهب خود که گویند موسسش زردشت خورک بابوندس بوده، پرداخت. عقاید مزدک بر دو گانگی مانوی استوار است:\n" + -"روشنائی دانا و تاریکی نادان، به عبارت دیگر نیکی با عقل و بدی جاهل، این دو نیرو با هم در نبردند و چون روشنائی داناست سرانجام پیروز خواهد شد.\n" + -"اساس تعلیمات اجتماعی مزدک دو چیز است: یکی برابری و دیگری دادگری.\n" + -"مردم بسیاری به سرعت پیرو مذهب مزدک شدند. جنبش مزدکی با قتل او و پیروانش به طرز وحشیانه‌ای سرکوب شد، اما افکار او اثر خود را حتی در قیام‌ها و جنبش‌های مردم ایران در دوران اسلام، باقی گذاشت.\n" + -"[ویرایش]\n" + -"منابع\n" + -"\n" + -"تاریخ ایران - دکتر خنجی\n" + -"تاریخ اجتماعی ایران. مرتضی راوندی. ( جلد ۱ ) 1354\n" + -"تاریخ ماد. ایگور میخائیلوویچ دیاکونوف. ترجمه کریم کشاورز، تهران: نشر امیرکبیر.\n" + -"تاريخ ايران باستان. دياكونوف، ميخائيل ميخائيلوويچ. روحی ارباب. انتشارات علمی و فرهنگی، چاپ دوم 1380\n" + -"سهم ایرانیان در پیدایش و آفرینش خط در جهان ،دکتر رکن الدین همایونفرخ، انتشارات اساطیر.\n" + -"کمرون، جرج. ایران در سپیده دم تاریخ. ترجمه حسن انوشه. تهران، مرکز نشر دانشگاهی، 1379\n" + -"تاریخ ایران از زمان باستان تا امروز، ا. آ. گرانتوسكی - م. آ. داندامایو، مترجم، كیخسرو كشاورزی، ناشر: مرواريد 1385\n" + -"تاریخ ایران از عهد باستان تا قرن 18، پیگولووسکایا، ترجمه کریم کشاورز، تهران، 1353.\n" + -"[ویرایش]\n" + -"جستارهای وابسته\n" + -"\n" + -"ماد\n" + -"کاسی\n" + -"ایلامیان\n" + -"تپه هگمتانه\n" + -"تاریخ ایران\n" + -"ایران پیش از آریایی‌ها\n" + -"تمدنهای باستانی آسیای غربی\n" + -"[ویرایش]\n" + -"پیوند به بیرون\n" + -"\n" + -"ایران قبل از آریاها\n" + -"ايران پيش از آريایی‌ها\n" + -"تمدنهای قبل از آریایی ایران\n" + -"ایران ازدیدگاه باستانشناسی\n" + -"سنگ‌نبشته‌ی داریوش بزرگ در بیستون\n" + -"شیوه آسیائی تولید در ایران\n" + -"نیای اساطیری ایرانیان\n" + -"قیام‌های ایرانیان در طول تاریخ\n" + -"خلاصهٔ تاریخ ایران\n" + -"شهر، شهرسازی و شهرنشينی در ايران پيش از اسلام\n" + -"\n" + -"[3]\n" + -"[4]\n" + -"[5]\n" + -"[6]\n" + -"[7]\n" + -"\n" + -"\n" + -"\n" + -" این نوشتار خُرد است. با گسترش آن به ویکی‌پدیا کمک کنید.\n" + -"\n" + -"این مقاله نیازمند ویکی‌سازی است. لطفاً با توجه به راهنمای ویرایش و شیوه‌نامه آن را تغییر دهید. در پایان، پس از ویکی‌سازی این الگوی پیامی را بردارید.\n"; - - -var source = -("/*\n" + -" This is a version (aka dlmalloc) of malloc/free/realloc written by\n" + -" Doug Lea and released to the public domain. Use, modify, and\n" + -" redistribute this code without permission or acknowledgement in any\n" + -" way you wish. Send questions, comments, complaints, performance\n" + -" data, etc to dl@cs.oswego.edu\n" + -"\n" + -"* VERSION 2.7.2 Sat Aug 17 09:07:30 2002 Doug Lea (dl at gee)\n" + -"\n" + -" Note: There may be an updated version of this malloc obtainable at\n" + -" ftp://gee.cs.oswego.edu/pub/misc/malloc.c\n" + -" Check before installing!\n" + -"\n" + -"* Quickstart\n" + -"\n" + -" This library is all in one file to simplify the most common usage:\n" + -" ftp it, compile it (-O), and link it into another program. All\n" + -" of the compile-time options default to reasonable values for use on\n" + -" most unix platforms. Compile -DWIN32 for reasonable defaults on windows.\n" + -" You might later want to step through various compile-time and dynamic\n" + -" tuning options.\n" + -"\n" + -" For convenience, an include file for code using this malloc is at:\n" + -" ftp://gee.cs.oswego.edu/pub/misc/malloc-2.7.1.h\n" + -" You don't really need this .h file unless you call functions not\n" + -" defined in your system include files. The .h file contains only the\n" + -" excerpts from this file needed for using this malloc on ANSI C/C++\n" + -" systems, so long as you haven't changed compile-time options about\n" + -" naming and tuning parameters. If you do, then you can create your\n" + -" own malloc.h that does include all settings by cutting at the point\n" + -" indicated below.\n" + -"\n" + -"* Why use this malloc?\n" + -"\n" + -" This is not the fastest, most space-conserving, most portable, or\n" + -" most tunable malloc ever written. However it is among the fastest\n" + -" while also being among the most space-conserving, portable and tunable.\n" + -" Consistent balance across these factors results in a good general-purpose\n" + -" allocator for malloc-intensive programs.\n" + -"\n" + -" The main properties of the algorithms are:\n" + -" * For large (>= 512 bytes) requests, it is a pure best-fit allocator,\n" + -" with ties normally decided via FIFO (i.e. least recently used).\n" + -" * For small (<= 64 bytes by default) requests, it is a caching\n" + -" allocator, that maintains pools of quickly recycled chunks.\n" + -" * In between, and for combinations of large and small requests, it does\n" + -" the best it can trying to meet both goals at once.\n" + -" * For very large requests (>= 128KB by default), it relies on system\n" + -" memory mapping facilities, if supported.\n" + -"\n" + -" For a longer but slightly out of date high-level description, see\n" + -" http://gee.cs.oswego.edu/dl/html/malloc.html\n" + -"\n" + -" You may already by default be using a C library containing a malloc\n" + -" that is based on some version of this malloc (for example in\n" + -" linux). You might still want to use the one in this file in order to\n" + -" customize settings or to avoid overheads associated with library\n" + -" versions.\n" + -"\n" + -"* Contents, described in more detail in \"description of public routines\" below.\n" + -"\n" + -" Standard (ANSI/SVID/...) functions:\n" + -" malloc(size_t n);\n" + -" calloc(size_t n_elements, size_t element_size);\n" + -" free(Void_t* p);\n" + -" realloc(Void_t* p, size_t n);\n" + -" memalign(size_t alignment, size_t n);\n" + -" valloc(size_t n);\n" + -" mallinfo()\n" + -" mallopt(int parameter_number, int parameter_value)\n" + -"\n" + -" Additional functions:\n" + -" independent_calloc(size_t n_elements, size_t size, Void_t* chunks[]);\n" + -" independent_comalloc(size_t n_elements, size_t sizes[], Void_t* chunks[]);\n" + -" pvalloc(size_t n);\n" + -" cfree(Void_t* p);\n" + -" malloc_trim(size_t pad);\n" + -" malloc_usable_size(Void_t* p);\n" + -" malloc_stats();\n" + -"\n" + -"* Vital statistics:\n" + -"\n" + -" Supported pointer representation: 4 or 8 bytes\n" + -" Supported size_t representation: 4 or 8 bytes\n" + -" Note that size_t is allowed to be 4 bytes even if pointers are 8.\n" + -" You can adjust this by defining INTERNAL_SIZE_T\n" + -"\n" + -" Alignment: 2 * sizeof(size_t) (default)\n" + -" (i.e., 8 byte alignment with 4byte size_t). This suffices for\n" + -" nearly all current machines and C compilers. However, you can\n" + -" define MALLOC_ALIGNMENT to be wider than this if necessary.\n" + -"\n" + -" Minimum overhead per allocated chunk: 4 or 8 bytes\n" + -" Each malloced chunk has a hidden word of overhead holding size\n" + -" and status information.\n" + -"\n" + -" Minimum allocated size: 4-byte ptrs: 16 bytes (including 4 overhead)\n" + -" 8-byte ptrs: 24/32 bytes (including, 4/8 overhead)\n" + -"\n" + -" When a chunk is freed, 12 (for 4byte ptrs) or 20 (for 8 byte\n" + -" ptrs but 4 byte size) or 24 (for 8/8) additional bytes are\n" + -" needed; 4 (8) for a trailing size field and 8 (16) bytes for\n" + -" free list pointers. Thus, the minimum allocatable size is\n" + -" 16/24/32 bytes.\n" + -"\n" + -" Even a request for zero bytes (i.e., malloc(0)) returns a\n" + -" pointer to something of the minimum allocatable size.\n" + -"\n" + -" The maximum overhead wastage (i.e., number of extra bytes\n" + -" allocated than were requested in malloc) is less than or equal\n" + -" to the minimum size, except for requests >= mmap_threshold that\n" + -" are serviced via mmap(), where the worst case wastage is 2 *\n" + -" sizeof(size_t) bytes plus the remainder from a system page (the\n" + -" minimal mmap unit); typically 4096 or 8192 bytes.\n" + -"\n" + -" Maximum allocated size: 4-byte size_t: 2^32 minus about two pages\n" + -" 8-byte size_t: 2^64 minus about two pages\n" + -"\n" + -" It is assumed that (possibly signed) size_t values suffice to\n" + -" represent chunk sizes. `Possibly signed' is due to the fact\n" + -" that `size_t' may be defined on a system as either a signed or\n" + -" an unsigned type. The ISO C standard says that it must be\n" + -" unsigned, but a few systems are known not to adhere to this.\n" + -" Additionally, even when size_t is unsigned, sbrk (which is by\n" + -" default used to obtain memory from system) accepts signed\n" + -" arguments, and may not be able to handle size_t-wide arguments\n" + -" with negative sign bit. Generally, values that would\n" + -" appear as negative after accounting for overhead and alignment\n" + -" are supported only via mmap(), which does not have this\n" + -" limitation.\n" + -"\n" + -" Requests for sizes outside the allowed range will perform an optional\n" + -" failure action and then return null. (Requests may also\n" + -" also fail because a system is out of memory.)\n" + -"\n" + -" Thread-safety: NOT thread-safe unless USE_MALLOC_LOCK defined\n" + -"\n" + -" When USE_MALLOC_LOCK is defined, wrappers are created to\n" + -" surround every public call with either a pthread mutex or\n" + -" a win32 spinlock (depending on WIN32). This is not\n" + -" especially fast, and can be a major bottleneck.\n" + -" It is designed only to provide minimal protection\n" + -" in concurrent environments, and to provide a basis for\n" + -" extensions. If you are using malloc in a concurrent program,\n" + -" you would be far better off obtaining ptmalloc, which is\n" + -" derived from a version of this malloc, and is well-tuned for\n" + -" concurrent programs. (See http://www.malloc.de) Note that\n" + -" even when USE_MALLOC_LOCK is defined, you can can guarantee\n" + -" full thread-safety only if no threads acquire memory through\n" + -" direct calls to MORECORE or other system-level allocators.\n" + -"\n" + -" Compliance: I believe it is compliant with the 1997 Single Unix Specification\n" + -" (See http://www.opennc.org). Also SVID/XPG, ANSI C, and probably\n" + -" others as well.\n" + -"\n" + -"* Synopsis of compile-time options:\n" + -"\n" + -" People have reported using previous versions of this malloc on all\n" + -" versions of Unix, sometimes by tweaking some of the defines\n" + -" below. It has been tested most extensively on Solaris and\n" + -" Linux. It is also reported to work on WIN32 platforms.\n" + -" People also report using it in stand-alone embedded systems.\n" + -"\n" + -" The implementation is in straight, hand-tuned ANSI C. It is not\n" + -" at all modular. (Sorry!) It uses a lot of macros. To be at all\n" + -" usable, this code should be compiled using an optimizing compiler\n" + -" (for example gcc -O3) that can simplify expressions and control\n" + -" paths. (FAQ: some macros import variables as arguments rather than\n" + -" declare locals because people reported that some debuggers\n" + -" otherwise get confused.)\n" + -"\n" + -" OPTION DEFAULT VALUE\n" + -"\n" + -" Compilation Environment options:\n" + -"\n" + -" __STD_C derived from C compiler defines\n" + -" WIN32 NOT defined\n" + -" HAVE_MEMCPY defined\n" + -" USE_MEMCPY 1 if HAVE_MEMCPY is defined\n" + -" HAVE_MMAP defined as 1\n" + -" MMAP_CLEARS 1\n" + -" HAVE_MREMAP 0 unless linux defined\n" + -" malloc_getpagesize derived from system #includes, or 4096 if not\n" + -" HAVE_USR_INCLUDE_MALLOC_H NOT defined\n" + -" LACKS_UNISTD_H NOT defined unless WIN32\n" + -" LACKS_SYS_PARAM_H NOT defined unless WIN32\n" + -" LACKS_SYS_MMAN_H NOT defined unless WIN32\n" + -" LACKS_FCNTL_H NOT defined\n" + -"\n" + -" Changing default word sizes:\n" + -"\n" + -" INTERNAL_SIZE_T size_t\n" + -" MALLOC_ALIGNMENT 2 * sizeof(INTERNAL_SIZE_T)\n" + -" PTR_UINT unsigned long\n" + -" CHUNK_SIZE_T unsigned long\n" + -"\n" + -" Configuration and functionality options:\n" + -"\n" + -" USE_DL_PREFIX NOT defined\n" + -" USE_PUBLIC_MALLOC_WRAPPERS NOT defined\n" + -" USE_MALLOC_LOCK NOT defined\n" + -" DEBUG NOT defined\n" + -" REALLOC_ZERO_BYTES_FREES NOT defined\n" + -" MALLOC_FAILURE_ACTION errno = ENOMEM, if __STD_C defined, else no-op\n" + -" TRIM_FASTBINS 0\n" + -" FIRST_SORTED_BIN_SIZE 512\n" + -"\n" + -" Options for customizing MORECORE:\n" + -"\n" + -" MORECORE sbrk\n" + -" MORECORE_CONTIGUOUS 1\n" + -" MORECORE_CANNOT_TRIM NOT defined\n" + -" MMAP_AS_MORECORE_SIZE (1024 * 1024)\n" + -"\n" + -" Tuning options that are also dynamically changeable via mallopt:\n" + -"\n" + -" DEFAULT_MXFAST 64\n" + -" DEFAULT_TRIM_THRESHOLD 256 * 1024\n" + -" DEFAULT_TOP_PAD 0\n" + -" DEFAULT_MMAP_THRESHOLD 256 * 1024\n" + -" DEFAULT_MMAP_MAX 65536\n" + -"\n" + -" There are several other #defined constants and macros that you\n" + -" probably don't want to touch unless you are extending or adapting malloc.\n" + -"*/\n" + -"\n" + -"#define MORECORE_CONTIGUOUS 0\n" + -"#define MORECORE_CANNOT_TRIM 1\n" + -"#define MALLOC_FAILURE_ACTION abort()\n" + -"\n" + -"\n" + -"namespace khtml {\n" + -"\n" + -"#ifndef NDEBUG\n" + -"\n" + -"// In debugging builds, use the system malloc for its debugging features.\n" + -"\n" + -"void *main_thread_malloc(size_t n)\n" + -"{\n" + -" assert(pthread_main_np());\n" + -" return malloc(n);\n" + -"}\n" + -"\n" + -"void *main_thread_calloc(size_t n_elements, size_t element_size)\n" + -"{\n" + -" assert(pthread_main_np());\n" + -" return calloc(n_elements, element_size);\n" + -"}\n" + -"\n" + -"void main_thread_free(void* p)\n" + -"{\n" + -" // it's ok to main_thread_free on a non-main thread - the actual\n" + -" // free will be scheduled on the main thread in that case.\n" + -" free(p);\n" + -"}\n" + -"\n" + -"void *main_thread_realloc(void* p, size_t n)\n" + -"{\n" + -" assert(pthread_main_np());\n" + -" return realloc(p, n);\n" + -"}\n" + -"\n" + -"#else\n" + -"\n" + -"/*\n" + -" WIN32 sets up defaults for MS environment and compilers.\n" + -" Otherwise defaults are for unix.\n" + -"*/\n" + -"\n" + -"/* #define WIN32 */\n" + -"\n" + -"#ifdef WIN32\n" + -"\n" + -"#define WIN32_LEAN_AND_MEAN\n" + -"#include \n" + -"\n" + -"/* Win32 doesn't supply or need the following headers */\n" + -"#define LACKS_UNISTD_H\n" + -"#define LACKS_SYS_PARAM_H\n" + -"#define LACKS_SYS_MMAN_H\n" + -"\n" + -"/* Use the supplied emulation of sbrk */\n" + -"#define MORECORE sbrk\n" + -"#define MORECORE_CONTIGUOUS 1\n" + -"#define MORECORE_FAILURE ((void*)(-1))\n" + -"\n" + -"/* Use the supplied emulation of mmap and munmap */\n" + -"#define HAVE_MMAP 1\n" + -"#define MUNMAP_FAILURE (-1)\n" + -"#define MMAP_CLEARS 1\n" + -"\n" + -"/* These values don't really matter in windows mmap emulation */\n" + -"#define MAP_PRIVATE 1\n" + -"#define MAP_ANONYMOUS 2\n" + -"#define PROT_READ 1\n" + -"#define PROT_WRITE 2\n" + -"\n" + -"/* Emulation functions defined at the end of this file */\n" + -"\n" + -"/* If USE_MALLOC_LOCK, use supplied critical-section-based lock functions */\n" + -"#ifdef USE_MALLOC_LOCK\n") + -("static int slwait(int *sl);\n" + -"static int slrelease(int *sl);\n" + -"#endif\n" + -"\n" + -"static long getpagesize(void);\n" + -"static long getregionsize(void);\n" + -"static void *sbrk(long size);\n" + -"static void *mmap(void *ptr, long size, long prot, long type, long handle, long arg);\n" + -"static long munmap(void *ptr, long size);\n" + -"\n" + -"static void vminfo (unsigned long*free, unsigned long*reserved, unsigned long*committed);\n" + -"static int cpuinfo (int whole, unsigned long*kernel, unsigned long*user);\n" + -"\n" + -"#endif\n" + -"\n" + -"/*\n" + -" __STD_C should be nonzero if using ANSI-standard C compiler, a C++\n" + -" compiler, or a C compiler sufficiently close to ANSI to get away\n" + -" with it.\n" + -"*/\n" + -"\n" + -"#ifndef __STD_C\n" + -"#if defined(__STDC__) || defined(_cplusplus)\n" + -"#define __STD_C 1\n" + -"#else\n" + -"#define __STD_C 0\n" + -"#endif\n" + -"#endif /*__STD_C*/\n" + -"\n" + -"\n" + -"/*\n" + -" Void_t* is the pointer type that malloc should say it returns\n" + -"*/\n" + -"\n" + -"#ifndef Void_t\n" + -"#if (__STD_C || defined(WIN32))\n" + -"#define Void_t void\n" + -"#else\n" + -"#define Void_t char\n" + -"#endif\n" + -"#endif /*Void_t*/\n" + -"\n" + -"#if __STD_C\n" + -"#include /* for size_t */\n" + -"#else\n" + -"#include \n" + -"#endif\n" + -"\n" + -"/* define LACKS_UNISTD_H if your system does not have a . */\n" + -"\n" + -"/* #define LACKS_UNISTD_H */\n" + -"\n" + -"#ifndef LACKS_UNISTD_H\n" + -"#include \n" + -"#endif\n" + -"\n" + -"/* define LACKS_SYS_PARAM_H if your system does not have a . */\n" + -"\n" + -"/* #define LACKS_SYS_PARAM_H */\n" + -"\n" + -"\n" + -"#include /* needed for malloc_stats */\n" + -"#include /* needed for optional MALLOC_FAILURE_ACTION */\n" + -"\n" + -"\n" + -"/*\n" + -" Debugging:\n" + -"\n" + -" Because freed chunks may be overwritten with bookkeeping fields, this\n" + -" malloc will often die when freed memory is overwritten by user\n" + -" programs. This can be very effective (albeit in an annoying way)\n" + -" in helping track down dangling pointers.\n" + -"\n" + -" If you compile with -DDEBUG, a number of assertion checks are\n" + -" enabled that will catch more memory errors. You probably won't be\n" + -" able to make much sense of the actual assertion errors, but they\n" + -" should help you locate incorrectly overwritten memory. The\n" + -" checking is fairly extensive, and will slow down execution\n" + -" noticeably. Calling malloc_stats or mallinfo with DEBUG set will\n" + -" attempt to check every non-mmapped allocated and free chunk in the\n" + -" course of computing the summmaries. (By nature, mmapped regions\n" + -" cannot be checked very much automatically.)\n" + -"\n" + -" Setting DEBUG may also be helpful if you are trying to modify\n" + -" this code. The assertions in the check routines spell out in more\n" + -" detail the assumptions and invariants underlying the algorithms.\n" + -"\n" + -" Setting DEBUG does NOT provide an automated mechanism for checking\n" + -" that all accesses to malloced memory stay within their\n" + -" bounds. However, there are several add-ons and adaptations of this\n" + -" or other mallocs available that do this.\n" + -"*/\n" + -"\n" + -"/*\n" + -" The unsigned integer type used for comparing any two chunk sizes.\n" + -" This should be at least as wide as size_t, but should not be signed.\n" + -"*/\n" + -"\n" + -"#ifndef CHUNK_SIZE_T\n" + -"#define CHUNK_SIZE_T unsigned long\n" + -"#endif\n" + -"\n" + -"/*\n" + -" The unsigned integer type used to hold addresses when they are are\n" + -" manipulated as integers. Except that it is not defined on all\n" + -" systems, intptr_t would suffice.\n" + -"*/\n" + -"#ifndef PTR_UINT\n" + -"#define PTR_UINT unsigned long\n" + -"#endif\n" + -"\n" + -"\n" + -"/*\n" + -" INTERNAL_SIZE_T is the word-size used for internal bookkeeping\n" + -" of chunk sizes.\n" + -"\n" + -" The default version is the same as size_t.\n" + -"\n" + -" While not strictly necessary, it is best to define this as an\n" + -" unsigned type, even if size_t is a signed type. This may avoid some\n" + -" artificial size limitations on some systems.\n" + -"\n" + -" On a 64-bit machine, you may be able to reduce malloc overhead by\n" + -" defining INTERNAL_SIZE_T to be a 32 bit `unsigned int' at the\n" + -" expense of not being able to handle more than 2^32 of malloced\n" + -" space. If this limitation is acceptable, you are encouraged to set\n" + -" this unless you are on a platform requiring 16byte alignments. In\n" + -" this case the alignment requirements turn out to negate any\n" + -" potential advantages of decreasing size_t word size.\n" + -"\n" + -" Implementors: Beware of the possible combinations of:\n" + -" - INTERNAL_SIZE_T might be signed or unsigned, might be 32 or 64 bits,\n" + -" and might be the same width as int or as long\n" + -" - size_t might have different width and signedness as INTERNAL_SIZE_T\n" + -" - int and long might be 32 or 64 bits, and might be the same width\n" + -" To deal with this, most comparisons and difference computations\n" + -" among INTERNAL_SIZE_Ts should cast them to CHUNK_SIZE_T, being\n" + -" aware of the fact that casting an unsigned int to a wider long does\n" + -" not sign-extend. (This also makes checking for negative numbers\n" + -" awkward.) Some of these casts result in harmless compiler warnings\n" + -" on some systems.\n" + -"*/\n" + -"\n" + -"#ifndef INTERNAL_SIZE_T\n" + -"#define INTERNAL_SIZE_T size_t\n" + -"#endif\n" + -"\n" + -"/* The corresponding word size */\n" + -"#define SIZE_SZ (sizeof(INTERNAL_SIZE_T))\n" + -"\n" + -"\n") + -("\n" + -"/*\n" + -" MALLOC_ALIGNMENT is the minimum alignment for malloc'ed chunks.\n" + -" It must be a power of two at least 2 * SIZE_SZ, even on machines\n" + -" for which smaller alignments would suffice. It may be defined as\n" + -" larger than this though. Note however that code and data structures\n" + -" are optimized for the case of 8-byte alignment.\n" + -"*/\n" + -"\n" + -"\n" + -"#ifndef MALLOC_ALIGNMENT\n" + -"#define MALLOC_ALIGNMENT (2 * SIZE_SZ)\n" + -"#endif\n" + -"\n" + -"/* The corresponding bit mask value */\n" + -"#define MALLOC_ALIGN_MASK (MALLOC_ALIGNMENT - 1)\n" + -"\n" + -"\n" + -"\n" + -"/*\n" + -" REALLOC_ZERO_BYTES_FREES should be set if a call to\n" + -" realloc with zero bytes should be the same as a call to free.\n" + -" Some people think it should. Otherwise, since this malloc\n" + -" returns a unique pointer for malloc(0), so does realloc(p, 0).\n" + -"*/\n" + -"\n" + -"/* #define REALLOC_ZERO_BYTES_FREES */\n" + -"\n" + -"/*\n" + -" TRIM_FASTBINS controls whether free() of a very small chunk can\n" + -" immediately lead to trimming. Setting to true (1) can reduce memory\n" + -" footprint, but will almost always slow down programs that use a lot\n" + -" of small chunks.\n" + -"\n" + -" Define this only if you are willing to give up some speed to more\n" + -" aggressively reduce system-level memory footprint when releasing\n" + -" memory in programs that use many small chunks. You can get\n" + -" essentially the same effect by setting MXFAST to 0, but this can\n" + -" lead to even greater slowdowns in programs using many small chunks.\n" + -" TRIM_FASTBINS is an in-between compile-time option, that disables\n" + -" only those chunks bordering topmost memory from being placed in\n" + -" fastbins.\n" + -"*/\n" + -"\n" + -"#ifndef TRIM_FASTBINS\n" + -"#define TRIM_FASTBINS 0\n" + -"#endif\n" + -"\n" + -"\n" + -"/*\n" + -" USE_DL_PREFIX will prefix all public routines with the string 'dl'.\n" + -" This is necessary when you only want to use this malloc in one part\n" + -" of a program, using your regular system malloc elsewhere.\n" + -"*/\n" + -"\n" + -"#define USE_DL_PREFIX\n" + -"\n" + -"\n" + -"/*\n" + -" USE_MALLOC_LOCK causes wrapper functions to surround each\n" + -" callable routine with pthread mutex lock/unlock.\n" + -"\n" + -" USE_MALLOC_LOCK forces USE_PUBLIC_MALLOC_WRAPPERS to be defined\n" + -"*/\n" + -"\n" + -"\n" + -"/* #define USE_MALLOC_LOCK */\n" + -"\n" + -"\n" + -"/*\n" + -" If USE_PUBLIC_MALLOC_WRAPPERS is defined, every public routine is\n" + -" actually a wrapper function that first calls MALLOC_PREACTION, then\n" + -" calls the internal routine, and follows it with\n" + -" MALLOC_POSTACTION. This is needed for locking, but you can also use\n" + -" this, without USE_MALLOC_LOCK, for purposes of interception,\n" + -" instrumentation, etc. It is a sad fact that using wrappers often\n" + -" noticeably degrades performance of malloc-intensive programs.\n" + -"*/\n" + -"\n" + -"#ifdef USE_MALLOC_LOCK\n" + -"#define USE_PUBLIC_MALLOC_WRAPPERS\n" + -"#else\n" + -"/* #define USE_PUBLIC_MALLOC_WRAPPERS */\n" + -"#endif\n" + -"\n" + -"\n" + -"/*\n" + -" Two-phase name translation.\n" + -" All of the actual routines are given mangled names.\n" + -" When wrappers are used, they become the public callable versions.\n" + -" When DL_PREFIX is used, the callable names are prefixed.\n" + -"*/\n" + -"\n" + -"#ifndef USE_PUBLIC_MALLOC_WRAPPERS\n" + -"#define cALLOc public_cALLOc\n" + -"#define fREe public_fREe\n" + -"#define cFREe public_cFREe\n" + -"#define mALLOc public_mALLOc\n" + -"#define mEMALIGn public_mEMALIGn\n" + -"#define rEALLOc public_rEALLOc\n" + -"#define vALLOc public_vALLOc\n" + -"#define pVALLOc public_pVALLOc\n" + -"#define mALLINFo public_mALLINFo\n" + -"#define mALLOPt public_mALLOPt\n" + -"#define mTRIm public_mTRIm\n" + -"#define mSTATs public_mSTATs\n" + -"#define mUSABLe public_mUSABLe\n" + -"#define iCALLOc public_iCALLOc\n" + -"#define iCOMALLOc public_iCOMALLOc\n" + -"#endif\n" + -"\n" + -"#ifdef USE_DL_PREFIX\n" + -"#define public_cALLOc main_thread_calloc\n" + -"#define public_fREe main_thread_free\n" + -"#define public_cFREe main_thread_cfree\n" + -"#define public_mALLOc main_thread_malloc\n" + -"#define public_mEMALIGn main_thread_memalign\n" + -"#define public_rEALLOc main_thread_realloc\n" + -"#define public_vALLOc main_thread_valloc\n" + -"#define public_pVALLOc main_thread_pvalloc\n" + -"#define public_mALLINFo main_thread_mallinfo\n" + -"#define public_mALLOPt main_thread_mallopt\n" + -"#define public_mTRIm main_thread_malloc_trim\n" + -"#define public_mSTATs main_thread_malloc_stats\n" + -"#define public_mUSABLe main_thread_malloc_usable_size\n" + -"#define public_iCALLOc main_thread_independent_calloc\n" + -"#define public_iCOMALLOc main_thread_independent_comalloc\n" + -"#else /* USE_DL_PREFIX */\n" + -"#define public_cALLOc calloc\n" + -"#define public_fREe free\n" + -"#define public_cFREe cfree\n" + -"#define public_mALLOc malloc\n" + -"#define public_mEMALIGn memalign\n" + -"#define public_rEALLOc realloc\n" + -"#define public_vALLOc valloc\n" + -"#define public_pVALLOc pvalloc\n" + -"#define public_mALLINFo mallinfo\n" + -"#define public_mALLOPt mallopt\n" + -"#define public_mTRIm malloc_trim\n" + -"#define public_mSTATs malloc_stats\n" + -"#define public_mUSABLe malloc_usable_size\n" + -"#define public_iCALLOc independent_calloc\n" + -"#define public_iCOMALLOc independent_comalloc\n" + -"#endif /* USE_DL_PREFIX */\n" + -"\n" + -"\n" + -"/*\n" + -" HAVE_MEMCPY should be defined if you are not otherwise using\n" + -" ANSI STD C, but still have memcpy and memset in your C library\n" + -" and want to use them in calloc and realloc. Otherwise simple\n" + -" macro versions are defined below.\n" + -"\n") + -(" USE_MEMCPY should be defined as 1 if you actually want to\n" + -" have memset and memcpy called. People report that the macro\n" + -" versions are faster than libc versions on some systems.\n" + -"\n" + -" Even if USE_MEMCPY is set to 1, loops to copy/clear small chunks\n" + -" (of <= 36 bytes) are manually unrolled in realloc and calloc.\n" + -"*/\n" + -"\n" + -"#define HAVE_MEMCPY\n" + -"\n" + -"#ifndef USE_MEMCPY\n" + -"#ifdef HAVE_MEMCPY\n" + -"#define USE_MEMCPY 1\n" + -"#else\n" + -"#define USE_MEMCPY 0\n" + -"#endif\n" + -"#endif\n" + -"\n" + -"\n" + -"#if (__STD_C || defined(HAVE_MEMCPY))\n" + -"\n" + -"#ifdef WIN32\n" + -"/* On Win32 memset and memcpy are already declared in windows.h */\n" + -"#else\n" + -"#if __STD_C\n" + -"extern \"C\" {\n" + -"void* memset(void*, int, size_t);\n" + -"void* memcpy(void*, const void*, size_t);\n" + -"}\n" + -"#else\n" + -"extern \"C\" {\n" + -"Void_t* memset();\n" + -"Void_t* memcpy();\n" + -"}\n" + -"#endif\n" + -"#endif\n" + -"#endif\n" + -"\n" + -"/*\n" + -" MALLOC_FAILURE_ACTION is the action to take before \"return 0\" when\n" + -" malloc fails to be able to return memory, either because memory is\n" + -" exhausted or because of illegal arguments.\n" + -"\n" + -" By default, sets errno if running on STD_C platform, else does nothing.\n" + -"*/\n" + -"\n" + -"#ifndef MALLOC_FAILURE_ACTION\n" + -"#if __STD_C\n" + -"#define MALLOC_FAILURE_ACTION \\n" + -" errno = ENOMEM;\n" + -"\n" + -"#else\n" + -"#define MALLOC_FAILURE_ACTION\n" + -"#endif\n" + -"#endif\n" + -"\n" + -"/*\n" + -" MORECORE-related declarations. By default, rely on sbrk\n" + -"*/\n" + -"\n" + -"\n" + -"#ifdef LACKS_UNISTD_H\n" + -"#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__)\n" + -"#if __STD_C\n" + -"extern Void_t* sbrk(ptrdiff_t);\n" + -"#else\n" + -"extern Void_t* sbrk();\n" + -"#endif\n" + -"#endif\n" + -"#endif\n" + -"\n" + -"/*\n" + -" MORECORE is the name of the routine to call to obtain more memory\n" + -" from the system. See below for general guidance on writing\n" + -" alternative MORECORE functions, as well as a version for WIN32 and a\n" + -" sample version for pre-OSX macos.\n" + -"*/\n" + -"\n" + -"#ifndef MORECORE\n" + -"#define MORECORE sbrk\n" + -"#endif\n" + -"\n" + -"/*\n" + -" MORECORE_FAILURE is the value returned upon failure of MORECORE\n" + -" as well as mmap. Since it cannot be an otherwise valid memory address,\n" + -" and must reflect values of standard sys calls, you probably ought not\n" + -" try to redefine it.\n" + -"*/\n" + -"\n" + -"#ifndef MORECORE_FAILURE\n" + -"#define MORECORE_FAILURE (-1)\n" + -"#endif\n" + -"\n" + -"/*\n" + -" If MORECORE_CONTIGUOUS is true, take advantage of fact that\n" + -" consecutive calls to MORECORE with positive arguments always return\n" + -" contiguous increasing addresses. This is true of unix sbrk. Even\n" + -" if not defined, when regions happen to be contiguous, malloc will\n" + -" permit allocations spanning regions obtained from different\n" + -" calls. But defining this when applicable enables some stronger\n" + -" consistency checks and space efficiencies.\n" + -"*/\n" + -"\n" + -"#ifndef MORECORE_CONTIGUOUS\n" + -"#define MORECORE_CONTIGUOUS 1\n" + -"#endif\n" + -"\n" + -"/*\n" + -" Define MORECORE_CANNOT_TRIM if your version of MORECORE\n" + -" cannot release space back to the system when given negative\n" + -" arguments. This is generally necessary only if you are using\n" + -" a hand-crafted MORECORE function that cannot handle negative arguments.\n" + -"*/\n" + -"\n" + -"/* #define MORECORE_CANNOT_TRIM */\n" + -"\n" + -"\n" + -"/*\n" + -" Define HAVE_MMAP as true to optionally make malloc() use mmap() to\n" + -" allocate very large blocks. These will be returned to the\n" + -" operating system immediately after a free(). Also, if mmap\n" + -" is available, it is used as a backup strategy in cases where\n" + -" MORECORE fails to provide space from system.\n" + -"\n" + -" This malloc is best tuned to work with mmap for large requests.\n" + -" If you do not have mmap, operations involving very large chunks (1MB\n" + -" or so) may be slower than you'd like.\n" + -"*/\n" + -"\n" + -"#ifndef HAVE_MMAP\n" + -"#define HAVE_MMAP 1\n" + -"#endif\n" + -"\n" + -"#if HAVE_MMAP\n" + -"/*\n" + -" Standard unix mmap using /dev/zero clears memory so calloc doesn't\n" + -" need to.\n" + -"*/\n" + -"\n" + -"#ifndef MMAP_CLEARS\n" + -"#define MMAP_CLEARS 1\n" + -"#endif\n" + -"\n" + -"#else /* no mmap */\n" + -"#ifndef MMAP_CLEARS\n" + -"#define MMAP_CLEARS 0\n" + -"#endif\n" + -"#endif\n" + -"\n" + -"\n" + -"/*\n") + -(" MMAP_AS_MORECORE_SIZE is the minimum mmap size argument to use if\n" + -" sbrk fails, and mmap is used as a backup (which is done only if\n" + -" HAVE_MMAP). The value must be a multiple of page size. This\n" + -" backup strategy generally applies only when systems have \"holes\" in\n" + -" address space, so sbrk cannot perform contiguous expansion, but\n" + -" there is still space available on system. On systems for which\n" + -" this is known to be useful (i.e. most linux kernels), this occurs\n" + -" only when programs allocate huge amounts of memory. Between this,\n" + -" and the fact that mmap regions tend to be limited, the size should\n" + -" be large, to avoid too many mmap calls and thus avoid running out\n" + -" of kernel resources.\n" + -"*/\n" + -"\n" + -"#ifndef MMAP_AS_MORECORE_SIZE\n" + -"#define MMAP_AS_MORECORE_SIZE (1024 * 1024)\n" + -"#endif\n" + -"\n" + -"/*\n" + -" Define HAVE_MREMAP to make realloc() use mremap() to re-allocate\n" + -" large blocks. This is currently only possible on Linux with\n" + -" kernel versions newer than 1.3.77.\n" + -"*/\n" + -"\n" + -"#ifndef HAVE_MREMAP\n" + -"#ifdef linux\n" + -"#define HAVE_MREMAP 1\n" + -"#else\n" + -"#define HAVE_MREMAP 0\n" + -"#endif\n" + -"\n" + -"#endif /* HAVE_MMAP */\n" + -"\n" + -"\n" + -"/*\n" + -" The system page size. To the extent possible, this malloc manages\n" + -" memory from the system in page-size units. Note that this value is\n" + -" cached during initialization into a field of malloc_state. So even\n" + -" if malloc_getpagesize is a function, it is only called once.\n" + -"\n" + -" The following mechanics for getpagesize were adapted from bsd/gnu\n" + -" getpagesize.h. If none of the system-probes here apply, a value of\n" + -" 4096 is used, which should be OK: If they don't apply, then using\n" + -" the actual value probably doesn't impact performance.\n" + -"*/\n" + -"\n" + -"\n" + -"#ifndef malloc_getpagesize\n" + -"\n" + -"#ifndef LACKS_UNISTD_H\n" + -"# include \n" + -"#endif\n" + -"\n" + -"# ifdef _SC_PAGESIZE /* some SVR4 systems omit an underscore */\n" + -"# ifndef _SC_PAGE_SIZE\n" + -"# define _SC_PAGE_SIZE _SC_PAGESIZE\n" + -"# endif\n" + -"# endif\n" + -"\n" + -"# ifdef _SC_PAGE_SIZE\n" + -"# define malloc_getpagesize sysconf(_SC_PAGE_SIZE)\n" + -"# else\n" + -"# if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE)\n" + -" extern size_t getpagesize();\n" + -"# define malloc_getpagesize getpagesize()\n" + -"# else\n" + -"# ifdef WIN32 /* use supplied emulation of getpagesize */\n" + -"# define malloc_getpagesize getpagesize()\n" + -"# else\n" + -"# ifndef LACKS_SYS_PARAM_H\n" + -"# include \n" + -"# endif\n" + -"# ifdef EXEC_PAGESIZE\n" + -"# define malloc_getpagesize EXEC_PAGESIZE\n" + -"# else\n" + -"# ifdef NBPG\n" + -"# ifndef CLSIZE\n" + -"# define malloc_getpagesize NBPG\n" + -"# else\n" + -"# define malloc_getpagesize (NBPG * CLSIZE)\n" + -"# endif\n" + -"# else\n" + -"# ifdef NBPC\n" + -"# define malloc_getpagesize NBPC\n" + -"# else\n" + -"# ifdef PAGESIZE\n" + -"# define malloc_getpagesize PAGESIZE\n" + -"# else /* just guess */\n" + -"# define malloc_getpagesize (4096)\n" + -"# endif\n" + -"# endif\n" + -"# endif\n" + -"# endif\n" + -"# endif\n" + -"# endif\n" + -"# endif\n" + -"#endif\n" + -"\n" + -"/*\n" + -" This version of malloc supports the standard SVID/XPG mallinfo\n" + -" routine that returns a struct containing usage properties and\n" + -" statistics. It should work on any SVID/XPG compliant system that has\n" + -" a /usr/include/malloc.h defining struct mallinfo. (If you'd like to\n" + -" install such a thing yourself, cut out the preliminary declarations\n" + -" as described above and below and save them in a malloc.h file. But\n" + -" there's no compelling reason to bother to do this.)\n" + -"\n" + -" The main declaration needed is the mallinfo struct that is returned\n" + -" (by-copy) by mallinfo(). The SVID/XPG malloinfo struct contains a\n" + -" bunch of fields that are not even meaningful in this version of\n" + -" malloc. These fields are are instead filled by mallinfo() with\n" + -" other numbers that might be of interest.\n" + -"\n" + -" HAVE_USR_INCLUDE_MALLOC_H should be set if you have a\n" + -" /usr/include/malloc.h file that includes a declaration of struct\n" + -" mallinfo. If so, it is included; else an SVID2/XPG2 compliant\n" + -" version is declared below. These must be precisely the same for\n" + -" mallinfo() to work. The original SVID version of this struct,\n" + -" defined on most systems with mallinfo, declares all fields as\n" + -" ints. But some others define as unsigned long. If your system\n" + -" defines the fields using a type of different width than listed here,\n" + -" you must #include your system version and #define\n" + -" HAVE_USR_INCLUDE_MALLOC_H.\n" + -"*/\n" + -"\n" + -"/* #define HAVE_USR_INCLUDE_MALLOC_H */\n" + -"\n" + -"#ifdef HAVE_USR_INCLUDE_MALLOC_H\n" + -"#include \"/usr/include/malloc.h\"\n" + -"#else\n" + -"\n" + -"/* SVID2/XPG mallinfo structure */\n" + -"\n" + -"struct mallinfo {\n" + -" int arena; /* non-mmapped space allocated from system */\n" + -" int ordblks; /* number of free chunks */\n" + -" int smblks; /* number of fastbin blocks */\n" + -" int hblks; /* number of mmapped regions */\n" + -" int hblkhd; /* space in mmapped regions */\n" + -" int usmblks; /* maximum total allocated space */\n" + -" int fsmblks; /* space available in freed fastbin blocks */\n" + -" int uordblks; /* total allocated space */\n" + -" int fordblks; /* total free space */\n" + -" int keepcost; /* top-most, releasable (via malloc_trim) space */\n" + -"};\n" + -"\n" + -"/*\n" + -" SVID/XPG defines four standard parameter numbers for mallopt,\n" + -" normally defined in malloc.h. Only one of these (M_MXFAST) is used\n" + -" in this malloc. The others (M_NLBLKS, M_GRAIN, M_KEEP) don't apply,\n" + -" so setting them has no effect. But this malloc also supports other\n" + -" options in mallopt described below.\n" + -"*/\n") + -("#endif\n" + -"\n" + -"\n" + -"/* ---------- description of public routines ------------ */\n" + -"\n" + -"/*\n" + -" malloc(size_t n)\n" + -" Returns a pointer to a newly allocated chunk of at least n bytes, or null\n" + -" if no space is available. Additionally, on failure, errno is\n" + -" set to ENOMEM on ANSI C systems.\n" + -"\n" + -" If n is zero, malloc returns a minimum-sized chunk. (The minimum\n" + -" size is 16 bytes on most 32bit systems, and 24 or 32 bytes on 64bit\n" + -" systems.) On most systems, size_t is an unsigned type, so calls\n" + -" with negative arguments are interpreted as requests for huge amounts\n" + -" of space, which will often fail. The maximum supported value of n\n" + -" differs across systems, but is in all cases less than the maximum\n" + -" representable value of a size_t.\n" + -"*/\n" + -"#if __STD_C\n" + -"Void_t* public_mALLOc(size_t);\n" + -"#else\n" + -"Void_t* public_mALLOc();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" free(Void_t* p)\n" + -" Releases the chunk of memory pointed to by p, that had been previously\n" + -" allocated using malloc or a related routine such as realloc.\n" + -" It has no effect if p is null. It can have arbitrary (i.e., bad!)\n" + -" effects if p has already been freed.\n" + -"\n" + -" Unless disabled (using mallopt), freeing very large spaces will\n" + -" when possible, automatically trigger operations that give\n" + -" back unused memory to the system, thus reducing program footprint.\n" + -"*/\n" + -"#if __STD_C\n" + -"void public_fREe(Void_t*);\n" + -"#else\n" + -"void public_fREe();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" calloc(size_t n_elements, size_t element_size);\n" + -" Returns a pointer to n_elements * element_size bytes, with all locations\n" + -" set to zero.\n" + -"*/\n" + -"#if __STD_C\n" + -"Void_t* public_cALLOc(size_t, size_t);\n" + -"#else\n" + -"Void_t* public_cALLOc();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" realloc(Void_t* p, size_t n)\n" + -" Returns a pointer to a chunk of size n that contains the same data\n" + -" as does chunk p up to the minimum of (n, p's size) bytes, or null\n" + -" if no space is available.\n" + -"\n" + -" The returned pointer may or may not be the same as p. The algorithm\n" + -" prefers extending p when possible, otherwise it employs the\n" + -" equivalent of a malloc-copy-free sequence.\n" + -"\n" + -" If p is null, realloc is equivalent to malloc.\n" + -"\n" + -" If space is not available, realloc returns null, errno is set (if on\n" + -" ANSI) and p is NOT freed.\n" + -"\n" + -" if n is for fewer bytes than already held by p, the newly unused\n" + -" space is lopped off and freed if possible. Unless the #define\n" + -" REALLOC_ZERO_BYTES_FREES is set, realloc with a size argument of\n" + -" zero (re)allocates a minimum-sized chunk.\n" + -"\n" + -" Large chunks that were internally obtained via mmap will always\n" + -" be reallocated using malloc-copy-free sequences unless\n" + -" the system supports MREMAP (currently only linux).\n" + -"\n" + -" The old unix realloc convention of allowing the last-free'd chunk\n" + -" to be used as an argument to realloc is not supported.\n" + -"*/\n" + -"#if __STD_C\n" + -"Void_t* public_rEALLOc(Void_t*, size_t);\n" + -"#else\n" + -"Void_t* public_rEALLOc();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" memalign(size_t alignment, size_t n);\n" + -" Returns a pointer to a newly allocated chunk of n bytes, aligned\n" + -" in accord with the alignment argument.\n" + -"\n" + -" The alignment argument should be a power of two. If the argument is\n" + -" not a power of two, the nearest greater power is used.\n" + -" 8-byte alignment is guaranteed by normal malloc calls, so don't\n" + -" bother calling memalign with an argument of 8 or less.\n" + -"\n" + -" Overreliance on memalign is a sure way to fragment space.\n" + -"*/\n" + -"#if __STD_C\n" + -"Void_t* public_mEMALIGn(size_t, size_t);\n" + -"#else\n" + -"Void_t* public_mEMALIGn();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" valloc(size_t n);\n" + -" Equivalent to memalign(pagesize, n), where pagesize is the page\n" + -" size of the system. If the pagesize is unknown, 4096 is used.\n" + -"*/\n" + -"#if __STD_C\n" + -"Void_t* public_vALLOc(size_t);\n" + -"#else\n" + -"Void_t* public_vALLOc();\n" + -"#endif\n" + -"\n" + -"\n" + -"\n" + -"/*\n" + -" mallopt(int parameter_number, int parameter_value)\n" + -" Sets tunable parameters The format is to provide a\n" + -" (parameter-number, parameter-value) pair. mallopt then sets the\n" + -" corresponding parameter to the argument value if it can (i.e., so\n" + -" long as the value is meaningful), and returns 1 if successful else\n" + -" 0. SVID/XPG/ANSI defines four standard param numbers for mallopt,\n" + -" normally defined in malloc.h. Only one of these (M_MXFAST) is used\n" + -" in this malloc. The others (M_NLBLKS, M_GRAIN, M_KEEP) don't apply,\n" + -" so setting them has no effect. But this malloc also supports four\n" + -" other options in mallopt. See below for details. Briefly, supported\n" + -" parameters are as follows (listed defaults are for \"typical\"\n" + -" configurations).\n" + -"\n" + -" Symbol param # default allowed param values\n" + -" M_MXFAST 1 64 0-80 (0 disables fastbins)\n" + -" M_TRIM_THRESHOLD -1 256*1024 any (-1U disables trimming)\n" + -" M_TOP_PAD -2 0 any\n" + -" M_MMAP_THRESHOLD -3 256*1024 any (or 0 if no MMAP support)\n" + -" M_MMAP_MAX -4 65536 any (0 disables use of mmap)\n" + -"*/\n" + -"#if __STD_C\n" + -"int public_mALLOPt(int, int);\n" + -"#else\n" + -"int public_mALLOPt();\n" + -"#endif\n" + -"\n" + -"\n" + -"/*\n" + -" mallinfo()\n" + -" Returns (by copy) a struct containing various summary statistics:\n" + -"\n") + -(" arena: current total non-mmapped bytes allocated from system\n" + -" ordblks: the number of free chunks\n" + -" smblks: the number of fastbin blocks (i.e., small chunks that\n" + -" have been freed but not use resused or consolidated)\n" + -" hblks: current number of mmapped regions\n" + -" hblkhd: total bytes held in mmapped regions\n" + -" usmblks: the maximum total allocated space. This will be greater\n" + -" than current total if trimming has occurred.\n" + -" fsmblks: total bytes held in fastbin blocks\n" + -" uordblks: current total allocated space (normal or mmapped)\n" + -" fordblks: total free space\n" + -" keepcost: the maximum number of bytes that could ideally be released\n" + -" back to system via malloc_trim. (\"ideally\" means that\n" + -" it ignores page restrictions etc.)\n" + -"\n" + -" Because these fields are ints, but internal bookkeeping may\n" + -" be kept as longs, the reported values may wrap around zero and\n" + -" thus be inaccurate.\n" + -"*/\n" + -"#if __STD_C\n" + -"struct mallinfo public_mALLINFo(void);\n" + -"#else\n" + -"struct mallinfo public_mALLINFo();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" independent_calloc(size_t n_elements, size_t element_size, Void_t* chunks[]);\n" + -"\n" + -" independent_calloc is similar to calloc, but instead of returning a\n" + -" single cleared space, it returns an array of pointers to n_elements\n" + -" independent elements that can hold contents of size elem_size, each\n" + -" of which starts out cleared, and can be independently freed,\n" + -" realloc'ed etc. The elements are guaranteed to be adjacently\n" + -" allocated (this is not guaranteed to occur with multiple callocs or\n" + -" mallocs), which may also improve cache locality in some\n" + -" applications.\n" + -"\n" + -" The \"chunks\" argument is optional (i.e., may be null, which is\n" + -" probably the most typical usage). If it is null, the returned array\n" + -" is itself dynamically allocated and should also be freed when it is\n" + -" no longer needed. Otherwise, the chunks array must be of at least\n" + -" n_elements in length. It is filled in with the pointers to the\n" + -" chunks.\n" + -"\n" + -" In either case, independent_calloc returns this pointer array, or\n" + -" null if the allocation failed. If n_elements is zero and \"chunks\"\n" + -" is null, it returns a chunk representing an array with zero elements\n" + -" (which should be freed if not wanted).\n" + -"\n" + -" Each element must be individually freed when it is no longer\n" + -" needed. If you'd like to instead be able to free all at once, you\n" + -" should instead use regular calloc and assign pointers into this\n" + -" space to represent elements. (In this case though, you cannot\n" + -" independently free elements.)\n" + -"\n" + -" independent_calloc simplifies and speeds up implementations of many\n" + -" kinds of pools. It may also be useful when constructing large data\n" + -" structures that initially have a fixed number of fixed-sized nodes,\n" + -" but the number is not known at compile time, and some of the nodes\n" + -" may later need to be freed. For example:\n" + -"\n" + -" struct Node { int item; struct Node* next; };\n" + -"\n" + -" struct Node* build_list() {\n" + -" struct Node** pool;\n" + -" int n = read_number_of_nodes_needed();\n" + -" if (n <= 0) return 0;\n" + -" pool = (struct Node**)(independent_calloc(n, sizeof(struct Node), 0);\n" + -" if (pool == 0) die();\n" + -" // organize into a linked list...\n" + -" struct Node* first = pool[0];\n" + -" for (i = 0; i < n-1; ++i)\n" + -" pool[i]->next = pool[i+1];\n" + -" free(pool); // Can now free the array (or not, if it is needed later)\n" + -" return first;\n" + -" }\n" + -"*/\n" + -"#if __STD_C\n" + -"Void_t** public_iCALLOc(size_t, size_t, Void_t**);\n" + -"#else\n" + -"Void_t** public_iCALLOc();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" independent_comalloc(size_t n_elements, size_t sizes[], Void_t* chunks[]);\n" + -"\n" + -" independent_comalloc allocates, all at once, a set of n_elements\n" + -" chunks with sizes indicated in the \"sizes\" array. It returns\n" + -" an array of pointers to these elements, each of which can be\n" + -" independently freed, realloc'ed etc. The elements are guaranteed to\n" + -" be adjacently allocated (this is not guaranteed to occur with\n" + -" multiple callocs or mallocs), which may also improve cache locality\n" + -" in some applications.\n" + -"\n" + -" The \"chunks\" argument is optional (i.e., may be null). If it is null\n" + -" the returned array is itself dynamically allocated and should also\n" + -" be freed when it is no longer needed. Otherwise, the chunks array\n" + -" must be of at least n_elements in length. It is filled in with the\n" + -" pointers to the chunks.\n" + -"\n" + -" In either case, independent_comalloc returns this pointer array, or\n" + -" null if the allocation failed. If n_elements is zero and chunks is\n" + -" null, it returns a chunk representing an array with zero elements\n" + -" (which should be freed if not wanted).\n" + -"\n" + -" Each element must be individually freed when it is no longer\n" + -" needed. If you'd like to instead be able to free all at once, you\n" + -" should instead use a single regular malloc, and assign pointers at\n" + -" particular offsets in the aggregate space. (In this case though, you\n" + -" cannot independently free elements.)\n" + -"\n" + -" independent_comallac differs from independent_calloc in that each\n" + -" element may have a different size, and also that it does not\n" + -" automatically clear elements.\n" + -"\n" + -" independent_comalloc can be used to speed up allocation in cases\n" + -" where several structs or objects must always be allocated at the\n" + -" same time. For example:\n" + -"\n" + -" struct Head { ... }\n" + -" struct Foot { ... }\n" + -"\n" + -" void send_message(char* msg) {\n" + -" int msglen = strlen(msg);\n" + -" size_t sizes[3] = { sizeof(struct Head), msglen, sizeof(struct Foot) };\n" + -" void* chunks[3];\n" + -" if (independent_comalloc(3, sizes, chunks) == 0)\n" + -" die();\n" + -" struct Head* head = (struct Head*)(chunks[0]);\n" + -" char* body = (char*)(chunks[1]);\n" + -" struct Foot* foot = (struct Foot*)(chunks[2]);\n" + -" // ...\n" + -" }\n" + -"\n" + -" In general though, independent_comalloc is worth using only for\n" + -" larger values of n_elements. For small values, you probably won't\n" + -" detect enough difference from series of malloc calls to bother.\n" + -"\n" + -" Overuse of independent_comalloc can increase overall memory usage,\n" + -" since it cannot reuse existing noncontiguous small chunks that\n" + -" might be available for some of the elements.\n" + -"*/\n" + -"#if __STD_C\n" + -"Void_t** public_iCOMALLOc(size_t, size_t*, Void_t**);\n" + -"#else\n" + -"Void_t** public_iCOMALLOc();\n" + -"#endif\n" + -"\n" + -"\n" + -"/*\n") + -(" pvalloc(size_t n);\n" + -" Equivalent to valloc(minimum-page-that-holds(n)), that is,\n" + -" round up n to nearest pagesize.\n" + -" */\n" + -"#if __STD_C\n" + -"Void_t* public_pVALLOc(size_t);\n" + -"#else\n" + -"Void_t* public_pVALLOc();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" cfree(Void_t* p);\n" + -" Equivalent to free(p).\n" + -"\n" + -" cfree is needed/defined on some systems that pair it with calloc,\n" + -" for odd historical reasons (such as: cfree is used in example\n" + -" code in the first edition of K&R).\n" + -"*/\n" + -"#if __STD_C\n" + -"void public_cFREe(Void_t*);\n" + -"#else\n" + -"void public_cFREe();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" malloc_trim(size_t pad);\n" + -"\n" + -" If possible, gives memory back to the system (via negative\n" + -" arguments to sbrk) if there is unused memory at the `high' end of\n" + -" the malloc pool. You can call this after freeing large blocks of\n" + -" memory to potentially reduce the system-level memory requirements\n" + -" of a program. However, it cannot guarantee to reduce memory. Under\n" + -" some allocation patterns, some large free blocks of memory will be\n" + -" locked between two used chunks, so they cannot be given back to\n" + -" the system.\n" + -"\n" + -" The `pad' argument to malloc_trim represents the amount of free\n" + -" trailing space to leave untrimmed. If this argument is zero,\n" + -" only the minimum amount of memory to maintain internal data\n" + -" structures will be left (one page or less). Non-zero arguments\n" + -" can be supplied to maintain enough trailing space to service\n" + -" future expected allocations without having to re-obtain memory\n" + -" from the system.\n" + -"\n" + -" Malloc_trim returns 1 if it actually released any memory, else 0.\n" + -" On systems that do not support \"negative sbrks\", it will always\n" + -" rreturn 0.\n" + -"*/\n" + -"#if __STD_C\n" + -"int public_mTRIm(size_t);\n" + -"#else\n" + -"int public_mTRIm();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" malloc_usable_size(Void_t* p);\n" + -"\n" + -" Returns the number of bytes you can actually use in\n" + -" an allocated chunk, which may be more than you requested (although\n" + -" often not) due to alignment and minimum size constraints.\n" + -" You can use this many bytes without worrying about\n" + -" overwriting other allocated objects. This is not a particularly great\n" + -" programming practice. malloc_usable_size can be more useful in\n" + -" debugging and assertions, for example:\n" + -"\n" + -" p = malloc(n);\n" + -" assert(malloc_usable_size(p) >= 256);\n" + -"\n" + -"*/\n" + -"#if __STD_C\n" + -"size_t public_mUSABLe(Void_t*);\n" + -"#else\n" + -"size_t public_mUSABLe();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" malloc_stats();\n" + -" Prints on stderr the amount of space obtained from the system (both\n" + -" via sbrk and mmap), the maximum amount (which may be more than\n" + -" current if malloc_trim and/or munmap got called), and the current\n" + -" number of bytes allocated via malloc (or realloc, etc) but not yet\n" + -" freed. Note that this is the number of bytes allocated, not the\n" + -" number requested. It will be larger than the number requested\n" + -" because of alignment and bookkeeping overhead. Because it includes\n" + -" alignment wastage as being in use, this figure may be greater than\n" + -" zero even when no user-level chunks are allocated.\n" + -"\n" + -" The reported current and maximum system memory can be inaccurate if\n" + -" a program makes other calls to system memory allocation functions\n" + -" (normally sbrk) outside of malloc.\n" + -"\n" + -" malloc_stats prints only the most commonly interesting statistics.\n" + -" More information can be obtained by calling mallinfo.\n" + -"\n" + -"*/\n" + -"#if __STD_C\n" + -"void public_mSTATs();\n" + -"#else\n" + -"void public_mSTATs();\n" + -"#endif\n" + -"\n" + -"/* mallopt tuning options */\n" + -"\n" + -"/*\n" + -" M_MXFAST is the maximum request size used for \"fastbins\", special bins\n" + -" that hold returned chunks without consolidating their spaces. This\n" + -" enables future requests for chunks of the same size to be handled\n" + -" very quickly, but can increase fragmentation, and thus increase the\n" + -" overall memory footprint of a program.\n" + -"\n" + -" This malloc manages fastbins very conservatively yet still\n" + -" efficiently, so fragmentation is rarely a problem for values less\n" + -" than or equal to the default. The maximum supported value of MXFAST\n" + -" is 80. You wouldn't want it any higher than this anyway. Fastbins\n" + -" are designed especially for use with many small structs, objects or\n" + -" strings -- the default handles structs/objects/arrays with sizes up\n" + -" to 16 4byte fields, or small strings representing words, tokens,\n" + -" etc. Using fastbins for larger objects normally worsens\n" + -" fragmentation without improving speed.\n" + -"\n" + -" M_MXFAST is set in REQUEST size units. It is internally used in\n" + -" chunksize units, which adds padding and alignment. You can reduce\n" + -" M_MXFAST to 0 to disable all use of fastbins. This causes the malloc\n" + -" algorithm to be a closer approximation of fifo-best-fit in all cases,\n" + -" not just for larger requests, but will generally cause it to be\n" + -" slower.\n" + -"*/\n" + -"\n" + -"\n" + -"/* M_MXFAST is a standard SVID/XPG tuning option, usually listed in malloc.h */\n" + -"#ifndef M_MXFAST\n" + -"#define M_MXFAST 1\n" + -"#endif\n" + -"\n" + -"#ifndef DEFAULT_MXFAST\n" + -"#define DEFAULT_MXFAST 64\n" + -"#endif\n" + -"\n" + -"\n" + -"/*\n" + -" M_TRIM_THRESHOLD is the maximum amount of unused top-most memory\n" + -" to keep before releasing via malloc_trim in free().\n" + -"\n" + -" Automatic trimming is mainly useful in long-lived programs.\n" + -" Because trimming via sbrk can be slow on some systems, and can\n" + -" sometimes be wasteful (in cases where programs immediately\n" + -" afterward allocate more large chunks) the value should be high\n" + -" enough so that your overall system performance would improve by\n" + -" releasing this much memory.\n" + -"\n") + -(" The trim threshold and the mmap control parameters (see below)\n" + -" can be traded off with one another. Trimming and mmapping are\n" + -" two different ways of releasing unused memory back to the\n" + -" system. Between these two, it is often possible to keep\n" + -" system-level demands of a long-lived program down to a bare\n" + -" minimum. For example, in one test suite of sessions measuring\n" + -" the XF86 X server on Linux, using a trim threshold of 128K and a\n" + -" mmap threshold of 192K led to near-minimal long term resource\n" + -" consumption.\n" + -"\n" + -" If you are using this malloc in a long-lived program, it should\n" + -" pay to experiment with these values. As a rough guide, you\n" + -" might set to a value close to the average size of a process\n" + -" (program) running on your system. Releasing this much memory\n" + -" would allow such a process to run in memory. Generally, it's\n" + -" worth it to tune for trimming rather tham memory mapping when a\n" + -" program undergoes phases where several large chunks are\n" + -" allocated and released in ways that can reuse each other's\n" + -" storage, perhaps mixed with phases where there are no such\n" + -" chunks at all. And in well-behaved long-lived programs,\n" + -" controlling release of large blocks via trimming versus mapping\n" + -" is usually faster.\n" + -"\n" + -" However, in most programs, these parameters serve mainly as\n" + -" protection against the system-level effects of carrying around\n" + -" massive amounts of unneeded memory. Since frequent calls to\n" + -" sbrk, mmap, and munmap otherwise degrade performance, the default\n" + -" parameters are set to relatively high values that serve only as\n" + -" safeguards.\n" + -"\n" + -" The trim value must be greater than page size to have any useful\n" + -" effect. To disable trimming completely, you can set to\n" + -" (unsigned long)(-1)\n" + -"\n" + -" Trim settings interact with fastbin (MXFAST) settings: Unless\n" + -" TRIM_FASTBINS is defined, automatic trimming never takes place upon\n" + -" freeing a chunk with size less than or equal to MXFAST. Trimming is\n" + -" instead delayed until subsequent freeing of larger chunks. However,\n" + -" you can still force an attempted trim by calling malloc_trim.\n" + -"\n" + -" Also, trimming is not generally possible in cases where\n" + -" the main arena is obtained via mmap.\n" + -"\n" + -" Note that the trick some people use of mallocing a huge space and\n" + -" then freeing it at program startup, in an attempt to reserve system\n" + -" memory, doesn't have the intended effect under automatic trimming,\n" + -" since that memory will immediately be returned to the system.\n" + -"*/\n" + -"\n" + -"#define M_TRIM_THRESHOLD -1\n" + -"\n" + -"#ifndef DEFAULT_TRIM_THRESHOLD\n" + -"#define DEFAULT_TRIM_THRESHOLD (256 * 1024)\n" + -"#endif\n" + -"\n" + -"/*\n" + -" M_TOP_PAD is the amount of extra `padding' space to allocate or\n" + -" retain whenever sbrk is called. It is used in two ways internally:\n" + -"\n" + -" * When sbrk is called to extend the top of the arena to satisfy\n" + -" a new malloc request, this much padding is added to the sbrk\n" + -" request.\n" + -"\n" + -" * When malloc_trim is called automatically from free(),\n" + -" it is used as the `pad' argument.\n" + -"\n" + -" In both cases, the actual amount of padding is rounded\n" + -" so that the end of the arena is always a system page boundary.\n" + -"\n" + -" The main reason for using padding is to avoid calling sbrk so\n" + -" often. Having even a small pad greatly reduces the likelihood\n" + -" that nearly every malloc request during program start-up (or\n" + -" after trimming) will invoke sbrk, which needlessly wastes\n" + -" time.\n" + -"\n" + -" Automatic rounding-up to page-size units is normally sufficient\n" + -" to avoid measurable overhead, so the default is 0. However, in\n" + -" systems where sbrk is relatively slow, it can pay to increase\n" + -" this value, at the expense of carrying around more memory than\n" + -" the program needs.\n" + -"*/\n" + -"\n" + -"#define M_TOP_PAD -2\n" + -"\n" + -"#ifndef DEFAULT_TOP_PAD\n" + -"#define DEFAULT_TOP_PAD (0)\n" + -"#endif\n" + -"\n" + -"/*\n" + -" M_MMAP_THRESHOLD is the request size threshold for using mmap()\n" + -" to service a request. Requests of at least this size that cannot\n" + -" be allocated using already-existing space will be serviced via mmap.\n" + -" (If enough normal freed space already exists it is used instead.)\n" + -"\n" + -" Using mmap segregates relatively large chunks of memory so that\n" + -" they can be individually obtained and released from the host\n" + -" system. A request serviced through mmap is never reused by any\n" + -" other request (at least not directly; the system may just so\n" + -" happen to remap successive requests to the same locations).\n" + -"\n" + -" Segregating space in this way has the benefits that:\n" + -"\n" + -" 1. Mmapped space can ALWAYS be individually released back\n" + -" to the system, which helps keep the system level memory\n" + -" demands of a long-lived program low.\n" + -" 2. Mapped memory can never become `locked' between\n" + -" other chunks, as can happen with normally allocated chunks, which\n" + -" means that even trimming via malloc_trim would not release them.\n" + -" 3. On some systems with \"holes\" in address spaces, mmap can obtain\n" + -" memory that sbrk cannot.\n" + -"\n" + -" However, it has the disadvantages that:\n" + -"\n" + -" 1. The space cannot be reclaimed, consolidated, and then\n" + -" used to service later requests, as happens with normal chunks.\n" + -" 2. It can lead to more wastage because of mmap page alignment\n" + -" requirements\n" + -" 3. It causes malloc performance to be more dependent on host\n" + -" system memory management support routines which may vary in\n" + -" implementation quality and may impose arbitrary\n" + -" limitations. Generally, servicing a request via normal\n" + -" malloc steps is faster than going through a system's mmap.\n" + -"\n" + -" The advantages of mmap nearly always outweigh disadvantages for\n" + -" \"large\" chunks, but the value of \"large\" varies across systems. The\n" + -" default is an empirically derived value that works well in most\n" + -" systems.\n" + -"*/\n" + -"\n" + -"#define M_MMAP_THRESHOLD -3\n" + -"\n" + -"#ifndef DEFAULT_MMAP_THRESHOLD\n" + -"#define DEFAULT_MMAP_THRESHOLD (256 * 1024)\n" + -"#endif\n" + -"\n" + -"/*\n" + -" M_MMAP_MAX is the maximum number of requests to simultaneously\n" + -" service using mmap. This parameter exists because\n" + -". Some systems have a limited number of internal tables for\n" + -" use by mmap, and using more than a few of them may degrade\n" + -" performance.\n" + -"\n" + -" The default is set to a value that serves only as a safeguard.\n" + -" Setting to 0 disables use of mmap for servicing large requests. If\n" + -" HAVE_MMAP is not set, the default value is 0, and attempts to set it\n" + -" to non-zero values in mallopt will fail.\n" + -"*/\n" + -"\n" + -"#define M_MMAP_MAX -4\n" + -"\n") + -("#ifndef DEFAULT_MMAP_MAX\n" + -"#if HAVE_MMAP\n" + -"#define DEFAULT_MMAP_MAX (65536)\n" + -"#else\n" + -"#define DEFAULT_MMAP_MAX (0)\n" + -"#endif\n" + -"#endif\n" + -"\n" + -"/*\n" + -" ========================================================================\n" + -" To make a fully customizable malloc.h header file, cut everything\n" + -" above this line, put into file malloc.h, edit to suit, and #include it\n" + -" on the next line, as well as in programs that use this malloc.\n" + -" ========================================================================\n" + -"*/\n" + -"\n" + -"/* #include \"malloc.h\" */\n" + -"\n" + -"/* --------------------- public wrappers ---------------------- */\n" + -"\n" + -"#ifdef USE_PUBLIC_MALLOC_WRAPPERS\n" + -"\n" + -"/* Declare all routines as internal */\n" + -"#if __STD_C\n" + -"static Void_t* mALLOc(size_t);\n" + -"static void fREe(Void_t*);\n" + -"static Void_t* rEALLOc(Void_t*, size_t);\n" + -"static Void_t* mEMALIGn(size_t, size_t);\n" + -"static Void_t* vALLOc(size_t);\n" + -"static Void_t* pVALLOc(size_t);\n" + -"static Void_t* cALLOc(size_t, size_t);\n" + -"static Void_t** iCALLOc(size_t, size_t, Void_t**);\n" + -"static Void_t** iCOMALLOc(size_t, size_t*, Void_t**);\n" + -"static void cFREe(Void_t*);\n" + -"static int mTRIm(size_t);\n" + -"static size_t mUSABLe(Void_t*);\n" + -"static void mSTATs();\n" + -"static int mALLOPt(int, int);\n" + -"static struct mallinfo mALLINFo(void);\n" + -"#else\n" + -"static Void_t* mALLOc();\n" + -"static void fREe();\n" + -"static Void_t* rEALLOc();\n" + -"static Void_t* mEMALIGn();\n" + -"static Void_t* vALLOc();\n" + -"static Void_t* pVALLOc();\n" + -"static Void_t* cALLOc();\n" + -"static Void_t** iCALLOc();\n" + -"static Void_t** iCOMALLOc();\n" + -"static void cFREe();\n" + -"static int mTRIm();\n" + -"static size_t mUSABLe();\n" + -"static void mSTATs();\n" + -"static int mALLOPt();\n" + -"static struct mallinfo mALLINFo();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" MALLOC_PREACTION and MALLOC_POSTACTION should be\n" + -" defined to return 0 on success, and nonzero on failure.\n" + -" The return value of MALLOC_POSTACTION is currently ignored\n" + -" in wrapper functions since there is no reasonable default\n" + -" action to take on failure.\n" + -"*/\n" + -"\n" + -"\n" + -"#ifdef USE_MALLOC_LOCK\n" + -"\n" + -"#ifdef WIN32\n" + -"\n" + -"static int mALLOC_MUTEx;\n" + -"#define MALLOC_PREACTION slwait(&mALLOC_MUTEx)\n" + -"#define MALLOC_POSTACTION slrelease(&mALLOC_MUTEx)\n" + -"\n" + -"#else\n" + -"\n" + -"#include \n" + -"\n" + -"static pthread_mutex_t mALLOC_MUTEx = PTHREAD_MUTEX_INITIALIZER;\n" + -"\n" + -"#define MALLOC_PREACTION pthread_mutex_lock(&mALLOC_MUTEx)\n" + -"#define MALLOC_POSTACTION pthread_mutex_unlock(&mALLOC_MUTEx)\n" + -"\n" + -"#endif /* USE_MALLOC_LOCK */\n" + -"\n" + -"#else\n" + -"\n" + -"/* Substitute anything you like for these */\n" + -"\n" + -"#define MALLOC_PREACTION (0)\n" + -"#define MALLOC_POSTACTION (0)\n" + -"\n" + -"#endif\n" + -"\n" + -"Void_t* public_mALLOc(size_t bytes) {\n" + -" Void_t* m;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" m = mALLOc(bytes);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return m;\n" + -"}\n" + -"\n" + -"\n" + -"static pthread_once_t free_mutex_once = PTHREAD_ONCE_INIT;\n" + -"static pthread_mutex_t free_mutex;\n" + -"static int scheduled_free_size;\n" + -"static int scheduled_free_capacity;\n" + -"static int scheduled_free_list;\n" + -"bool free_is_scheduled;\n" + -"\n" + -"static void initialize_scheduled_free_list()\n" + -"{\n" + -" pthread_mutex_init(&free_mutex, NULL);\n" + -"}\n" + -"\n" + -"static void drain_scheduled_free_list()\n" + -"{\n" + -" pthread_mutex_lock(&free_mutex);\n" + -" if (free_is_scheduled) {\n" + -" for(int i = 0; i < scheduled_free_size; i++) {\n" + -" main_thread_free(scheduled_free_list[i]);\n" + -" }\n" + -" free(scheduled_free_list);\n" + -" scheduled_free_list = NULL;\n" + -" scheduled_free_size = 0;\n" + -" scheduled_free_capacity = 0;\n" + -" free_is_scheduled = false;\n" + -" }\n" + -" pthread_mutex_unlock(&free_mutex);\n" + -"}\n" + -"\n" + -"static void schedule_free_on_main_thread(Void_t* m)\n" + -"{\n" + -" pthread_once(&free_mutex_once, initialize_scheduled_free_list);\n" + -"\n" + -" pthread_mutex_lock(&free_mutex);\n" + -" if (scheduled_free_size == scheduled_free_capacity) {\n" + -" scheduled_free_capacity = scheduled_free_capacity == 0 ? 16 : scheduled_free_capacity * 1.2;\n" + -" scheduled_free_list = (Void_t**)realloc(scheduled_free_list, sizeof(Void_t*) * scheduled_free_capacity);\n" + -" }\n" + -" scheduled_free_list[scheduled_free_size++] = m;\n" + -" if (!free_is_scheduled) {\n" + -" QTimer::immediateSingleShotOnMainThread(0, drain_scheduled_free_list);\n" + -" free_is_scheduled = true;\n" + -" }\n" + -" pthread_mutex_unlock(&free_mutex);\n" + -"}\n") + -("\n" + -"void public_fREe(Void_t* m) {\n" + -" if (!pthread_main_np()) {\n" + -" schedule_free_on_main_thread(m);\n" + -" return;\n" + -" }\n" + -"\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return;\n" + -" }\n" + -" fREe(m);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -"}\n" + -"\n" + -"Void_t* public_rEALLOc(Void_t* m, size_t bytes) {\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" m = rEALLOc(m, bytes);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return m;\n" + -"}\n" + -"\n" + -"Void_t* public_mEMALIGn(size_t alignment, size_t bytes) {\n" + -" Void_t* m;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" m = mEMALIGn(alignment, bytes);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return m;\n" + -"}\n" + -"\n" + -"Void_t* public_vALLOc(size_t bytes) {\n" + -" Void_t* m;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" m = vALLOc(bytes);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return m;\n" + -"}\n" + -"\n" + -"Void_t* public_pVALLOc(size_t bytes) {\n" + -" Void_t* m;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" m = pVALLOc(bytes);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return m;\n" + -"}\n" + -"\n" + -"Void_t* public_cALLOc(size_t n, size_t elem_size) {\n" + -" Void_t* m;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" m = cALLOc(n, elem_size);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return m;\n" + -"}\n" + -"\n" + -"\n" + -"Void_t** public_iCALLOc(size_t n, size_t elem_size, Void_t** chunks) {\n" + -" Void_t** m;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" m = iCALLOc(n, elem_size, chunks);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return m;\n" + -"}\n" + -"\n" + -"Void_t** public_iCOMALLOc(size_t n, size_t sizes[], Void_t** chunks) {\n" + -" Void_t** m;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" m = iCOMALLOc(n, sizes, chunks);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return m;\n" + -"}\n" + -"\n" + -"void public_cFREe(Void_t* m) {\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return;\n" + -" }\n" + -" cFREe(m);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -"}\n" + -"\n" + -"int public_mTRIm(size_t s) {\n" + -" int result;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" result = mTRIm(s);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return result;\n" + -"}\n" + -"\n" + -"size_t public_mUSABLe(Void_t* m) {\n" + -" size_t result;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" result = mUSABLe(m);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return result;\n" + -"}\n" + -"\n" + -"void public_mSTATs() {\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return;\n" + -" }\n" + -" mSTATs();\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -"}\n" + -"\n" + -"struct mallinfo public_mALLINFo() {\n" + -" struct mallinfo m;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };\n" + -" return nm;\n" + -" }\n" + -" m = mALLINFo();\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return m;\n" + -"}\n" + -"\n" + -"int public_mALLOPt(int p, int v) {\n" + -" int result;\n" + -" if (MALLOC_PREACTION != 0) {\n" + -" return 0;\n" + -" }\n" + -" result = mALLOPt(p, v);\n" + -" if (MALLOC_POSTACTION != 0) {\n" + -" }\n" + -" return result;\n" + -"}\n" + -"\n") + -("#endif\n" + -"\n" + -"\n" + -"\n" + -"/* ------------- Optional versions of memcopy ---------------- */\n" + -"\n" + -"\n" + -"#if USE_MEMCPY\n" + -"\n" + -"/*\n" + -" Note: memcpy is ONLY invoked with non-overlapping regions,\n" + -" so the (usually slower) memmove is not needed.\n" + -"*/\n" + -"\n" + -"#define MALLOC_COPY(dest, src, nbytes) memcpy(dest, src, nbytes)\n" + -"#define MALLOC_ZERO(dest, nbytes) memset(dest, 0, nbytes)\n" + -"\n" + -"#else /* !USE_MEMCPY */\n" + -"\n" + -"/* Use Duff's device for good zeroing/copying performance. */\n" + -"\n" + -"#define MALLOC_ZERO(charp, nbytes) \\n" + -"do { \\n" + -" INTERNAL_SIZE_T* mzp = (INTERNAL_SIZE_T*)(charp); \\n" + -" CHUNK_SIZE_T mctmp = (nbytes)/sizeof(INTERNAL_SIZE_T); \\n" + -" long mcn; \\n" + -" if (mctmp < 8) mcn = 0; else { mcn = (mctmp-1)/8; mctmp %= 8; } \\n" + -" switch (mctmp) { \\n" + -" case 0: for(;;) { *mzp++ = 0; \\n" + -" case 7: *mzp++ = 0; \\n" + -" case 6: *mzp++ = 0; \\n" + -" case 5: *mzp++ = 0; \\n" + -" case 4: *mzp++ = 0; \\n" + -" case 3: *mzp++ = 0; \\n" + -" case 2: *mzp++ = 0; \\n" + -" case 1: *mzp++ = 0; if(mcn <= 0) break; mcn--; } \\n" + -" } \\n" + -"} while(0)\n" + -"\n" + -"#define MALLOC_COPY(dest,src,nbytes) \\n" + -"do { \\n" + -" INTERNAL_SIZE_T* mcsrc = (INTERNAL_SIZE_T*) src; \\n" + -" INTERNAL_SIZE_T* mcdst = (INTERNAL_SIZE_T*) dest; \\n" + -" CHUNK_SIZE_T mctmp = (nbytes)/sizeof(INTERNAL_SIZE_T); \\n" + -" long mcn; \\n" + -" if (mctmp < 8) mcn = 0; else { mcn = (mctmp-1)/8; mctmp %= 8; } \\n" + -" switch (mctmp) { \\n" + -" case 0: for(;;) { *mcdst++ = *mcsrc++; \\n" + -" case 7: *mcdst++ = *mcsrc++; \\n" + -" case 6: *mcdst++ = *mcsrc++; \\n" + -" case 5: *mcdst++ = *mcsrc++; \\n" + -" case 4: *mcdst++ = *mcsrc++; \\n" + -" case 3: *mcdst++ = *mcsrc++; \\n" + -" case 2: *mcdst++ = *mcsrc++; \\n" + -" case 1: *mcdst++ = *mcsrc++; if(mcn <= 0) break; mcn--; } \\n" + -" } \\n" + -"} while(0)\n" + -"\n" + -"#endif\n" + -"\n" + -"/* ------------------ MMAP support ------------------ */\n" + -"\n" + -"\n" + -"#if HAVE_MMAP\n" + -"\n" + -"#ifndef LACKS_FCNTL_H\n" + -"#include \n" + -"#endif\n" + -"\n" + -"#ifndef LACKS_SYS_MMAN_H\n" + -"#include \n" + -"#endif\n" + -"\n" + -"#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)\n" + -"#define MAP_ANONYMOUS MAP_ANON\n" + -"#endif\n" + -"\n" + -"/*\n" + -" Nearly all versions of mmap support MAP_ANONYMOUS,\n" + -" so the following is unlikely to be needed, but is\n" + -" supplied just in case.\n" + -"*/\n" + -"\n" + -"#ifndef MAP_ANONYMOUS\n" + -"\n" + -"static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */\n" + -"\n" + -"#define MMAP(addr, size, prot, flags) ((dev_zero_fd < 0) ? \\n" + -" (dev_zero_fd = open(\"/dev/zero\", O_RDWR), \\n" + -" mmap((addr), (size), (prot), (flags), dev_zero_fd, 0)) : \\n" + -" mmap((addr), (size), (prot), (flags), dev_zero_fd, 0))\n" + -"\n" + -"#else\n" + -"\n" + -"#define MMAP(addr, size, prot, flags) \\n" + -" (mmap((addr), (size), (prot), (flags)|MAP_ANONYMOUS, -1, 0))\n" + -"\n" + -"#endif\n" + -"\n" + -"\n" + -"#endif /* HAVE_MMAP */\n" + -"\n" + -"\n" + -"/*\n" + -" ----------------------- Chunk representations -----------------------\n" + -"*/\n" + -"\n" + -"\n" + -"/*\n" + -" This struct declaration is misleading (but accurate and necessary).\n" + -" It declares a \"view\" into memory allowing access to necessary\n" + -" fields at known offsets from a given base. See explanation below.\n" + -"*/\n" + -"\n" + -"struct malloc_chunk {\n" + -"\n" + -" INTERNAL_SIZE_T prev_size; /* Size of previous chunk (if free). */\n" + -" INTERNAL_SIZE_T size; /* Size in bytes, including overhead. */\n" + -"\n" + -" struct malloc_chunk* fd; /* double links -- used only if free. */\n" + -" struct malloc_chunk* bk;\n" + -"};\n" + -"\n" + -"\n" + -"typedef struct malloc_chunk* mchunkptr;\n" + -"\n" + -"/*\n" + -" malloc_chunk details:\n" + -"\n" + -" (The following includes lightly edited explanations by Colin Plumb.)\n" + -"\n" + -" Chunks of memory are maintained using a `boundary tag' method as\n" + -" described in e.g., Knuth or Standish. (See the paper by Paul\n" + -" Wilson ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps for a\n" + -" survey of such techniques.) Sizes of free chunks are stored both\n" + -" in the front of each chunk and at the end. This makes\n" + -" consolidating fragmented chunks into bigger chunks very fast. The\n" + -" size fields also hold bits representing whether chunks are free or\n" + -" in use.\n" + -"\n" + -" An allocated chunk looks like this:\n" + -"\n" + -"\n" + -" chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" | Size of previous chunk, if allocated | |\n" + -" +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" | Size of chunk, in bytes |P|\n" + -" mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" | User data starts here... .\n" + -" . .\n" + -" . (malloc_usable_space() bytes) .\n" + -" . |\n" + -"nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" | Size of chunk |\n" + -" +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -"\n") + -("\n" + -" Where \"chunk\" is the front of the chunk for the purpose of most of\n" + -" the malloc code, but \"mem\" is the pointer that is returned to the\n" + -" user. \"Nextchunk\" is the beginning of the next contiguous chunk.\n" + -"\n" + -" Chunks always begin on even word boundries, so the mem portion\n" + -" (which is returned to the user) is also on an even word boundary, and\n" + -" thus at least double-word aligned.\n" + -"\n" + -" Free chunks are stored in circular doubly-linked lists, and look like this:\n" + -"\n" + -" chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" | Size of previous chunk |\n" + -" +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" `head:' | Size of chunk, in bytes |P|\n" + -" mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" | Forward pointer to next chunk in list |\n" + -" +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" | Back pointer to previous chunk in list |\n" + -" +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" | Unused space (may be 0 bytes long) .\n" + -" . .\n" + -" . |\n" + -"nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -" `foot:' | Size of chunk, in bytes |\n" + -" +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + -"\n" + -" The P (PREV_INUSE) bit, stored in the unused low-order bit of the\n" + -" chunk size (which is always a multiple of two words), is an in-use\n" + -" bit for the *previous* chunk. If that bit is *clear*, then the\n" + -" word before the current chunk size contains the previous chunk\n" + -" size, and can be used to find the front of the previous chunk.\n" + -" The very first chunk allocated always has this bit set,\n" + -" preventing access to non-existent (or non-owned) memory. If\n" + -" prev_inuse is set for any given chunk, then you CANNOT determine\n" + -" the size of the previous chunk, and might even get a memory\n" + -" addressing fault when trying to do so.\n" + -"\n" + -" Note that the `foot' of the current chunk is actually represented\n" + -" as the prev_size of the NEXT chunk. This makes it easier to\n" + -" deal with alignments etc but can be very confusing when trying\n" + -" to extend or adapt this code.\n" + -"\n" + -" The two exceptions to all this are\n" + -"\n" + -" 1. The special chunk `top' doesn't bother using the\n" + -" trailing size field since there is no next contiguous chunk\n" + -" that would have to index off it. After initialization, `top'\n" + -" is forced to always exist. If it would become less than\n" + -" MINSIZE bytes long, it is replenished.\n" + -"\n" + -" 2. Chunks allocated via mmap, which have the second-lowest-order\n" + -" bit (IS_MMAPPED) set in their size fields. Because they are\n" + -" allocated one-by-one, each must contain its own trailing size field.\n" + -"\n" + -"*/\n" + -"\n" + -"/*\n" + -" ---------- Size and alignment checks and conversions ----------\n" + -"*/\n" + -"\n" + -"/* conversion from malloc headers to user pointers, and back */\n" + -"\n" + -"#define chunk2mem(p) ((Void_t*)((char*)(p) + 2*SIZE_SZ))\n" + -"#define mem2chunk(mem) ((mchunkptr)((char*)(mem) - 2*SIZE_SZ))\n" + -"\n" + -"/* The smallest possible chunk */\n" + -"#define MIN_CHUNK_SIZE (sizeof(struct malloc_chunk))\n" + -"\n" + -"/* The smallest size we can malloc is an aligned minimal chunk */\n" + -"\n" + -"#define MINSIZE \\n" + -" (CHUNK_SIZE_T)(((MIN_CHUNK_SIZE+MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK))\n" + -"\n" + -"/* Check if m has acceptable alignment */\n" + -"\n" + -"#define aligned_OK(m) (((PTR_UINT)((m)) & (MALLOC_ALIGN_MASK)) == 0)\n" + -"\n" + -"\n" + -"/*\n" + -" Check if a request is so large that it would wrap around zero when\n" + -" padded and aligned. To simplify some other code, the bound is made\n" + -" low enough so that adding MINSIZE will also not wrap around sero.\n" + -"*/\n" + -"\n" + -"#define REQUEST_OUT_OF_RANGE(req) \\n" + -" ((CHUNK_SIZE_T)(req) >= \\n" + -" (CHUNK_SIZE_T)(INTERNAL_SIZE_T)(-2 * MINSIZE))\n" + -"\n" + -"/* pad request bytes into a usable size -- internal version */\n" + -"\n" + -"#define request2size(req) \\n" + -" (((req) + SIZE_SZ + MALLOC_ALIGN_MASK < MINSIZE) ? \\n" + -" MINSIZE : \\n" + -" ((req) + SIZE_SZ + MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK)\n" + -"\n" + -"/* Same, except also perform argument check */\n" + -"\n" + -"#define checked_request2size(req, sz) \\n" + -" if (REQUEST_OUT_OF_RANGE(req)) { \\n" + -" MALLOC_FAILURE_ACTION; \\n" + -" return 0; \\n" + -" } \\n" + -" (sz) = request2size(req);\n" + -"\n" + -"/*\n" + -" --------------- Physical chunk operations ---------------\n" + -"*/\n" + -"\n" + -"\n" + -"/* size field is or'ed with PREV_INUSE when previous adjacent chunk in use */\n" + -"#define PREV_INUSE 0x1\n" + -"\n" + -"/* extract inuse bit of previous chunk */\n" + -"#define prev_inuse(p) ((p)->size & PREV_INUSE)\n" + -"\n" + -"\n" + -"/* size field is or'ed with IS_MMAPPED if the chunk was obtained with mmap() */\n" + -"#define IS_MMAPPED 0x2\n" + -"\n" + -"/* check for mmap()'ed chunk */\n" + -"#define chunk_is_mmapped(p) ((p)->size & IS_MMAPPED)\n" + -"\n" + -"/*\n" + -" Bits to mask off when extracting size\n" + -"\n" + -" Note: IS_MMAPPED is intentionally not masked off from size field in\n" + -" macros for which mmapped chunks should never be seen. This should\n" + -" cause helpful core dumps to occur if it is tried by accident by\n" + -" people extending or adapting this malloc.\n" + -"*/\n" + -"#define SIZE_BITS (PREV_INUSE|IS_MMAPPED)\n" + -"\n" + -"/* Get size, ignoring use bits */\n" + -"#define chunksize(p) ((p)->size & ~(SIZE_BITS))\n" + -"\n" + -"\n" + -"/* Ptr to next physical malloc_chunk. */\n" + -"#define next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->size & ~PREV_INUSE) ))\n" + -"\n" + -"/* Ptr to previous physical malloc_chunk */\n" + -"#define prev_chunk(p) ((mchunkptr)( ((char*)(p)) - ((p)->prev_size) ))\n" + -"\n" + -"/* Treat space at ptr + offset as a chunk */\n" + -"#define chunk_at_offset(p, s) ((mchunkptr)(((char*)(p)) + (s)))\n" + -"\n" + -"/* extract p's inuse bit */\n" + -"#define inuse(p)\\n" + -"((((mchunkptr)(((char*)(p))+((p)->size & ~PREV_INUSE)))->size) & PREV_INUSE)\n" + -"\n" + -"/* set/clear chunk as being inuse without otherwise disturbing */\n" + -"#define set_inuse(p)\\n" + -"((mchunkptr)(((char*)(p)) + ((p)->size & ~PREV_INUSE)))->size |= PREV_INUSE\n" + -"\n") + -("#define clear_inuse(p)\\n" + -"((mchunkptr)(((char*)(p)) + ((p)->size & ~PREV_INUSE)))->size &= ~(PREV_INUSE)\n" + -"\n" + -"\n" + -"/* check/set/clear inuse bits in known places */\n" + -"#define inuse_bit_at_offset(p, s)\\n" + -" (((mchunkptr)(((char*)(p)) + (s)))->size & PREV_INUSE)\n" + -"\n" + -"#define set_inuse_bit_at_offset(p, s)\\n" + -" (((mchunkptr)(((char*)(p)) + (s)))->size |= PREV_INUSE)\n" + -"\n" + -"#define clear_inuse_bit_at_offset(p, s)\\n" + -" (((mchunkptr)(((char*)(p)) + (s)))->size &= ~(PREV_INUSE))\n" + -"\n" + -"\n" + -"/* Set size at head, without disturbing its use bit */\n" + -"#define set_head_size(p, s) ((p)->size = (((p)->size & PREV_INUSE) | (s)))\n" + -"\n" + -"/* Set size/use field */\n" + -"#define set_head(p, s) ((p)->size = (s))\n" + -"\n" + -"/* Set size at footer (only when chunk is not in use) */\n" + -"#define set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_size = (s))\n" + -"\n" + -"\n" + -"/*\n" + -" -------------------- Internal data structures --------------------\n" + -"\n" + -" All internal state is held in an instance of malloc_state defined\n" + -" below. There are no other static variables, except in two optional\n" + -" cases:\n" + -" * If USE_MALLOC_LOCK is defined, the mALLOC_MUTEx declared above.\n" + -" * If HAVE_MMAP is true, but mmap doesn't support\n" + -" MAP_ANONYMOUS, a dummy file descriptor for mmap.\n" + -"\n" + -" Beware of lots of tricks that minimize the total bookkeeping space\n" + -" requirements. The result is a little over 1K bytes (for 4byte\n" + -" pointers and size_t.)\n" + -"*/\n" + -"\n" + -"/*\n" + -" Bins\n" + -"\n" + -" An array of bin headers for free chunks. Each bin is doubly\n" + -" linked. The bins are approximately proportionally (log) spaced.\n" + -" There are a lot of these bins (128). This may look excessive, but\n" + -" works very well in practice. Most bins hold sizes that are\n" + -" unusual as malloc request sizes, but are more usual for fragments\n" + -" and consolidated sets of chunks, which is what these bins hold, so\n" + -" they can be found quickly. All procedures maintain the invariant\n" + -" that no consolidated chunk physically borders another one, so each\n" + -" chunk in a list is known to be preceded and followed by either\n" + -" inuse chunks or the ends of memory.\n" + -"\n" + -" Chunks in bins are kept in size order, with ties going to the\n" + -" approximately least recently used chunk. Ordering isn't needed\n" + -" for the small bins, which all contain the same-sized chunks, but\n" + -" facilitates best-fit allocation for larger chunks. These lists\n" + -" are just sequential. Keeping them in order almost never requires\n" + -" enough traversal to warrant using fancier ordered data\n" + -" structures.\n" + -"\n" + -" Chunks of the same size are linked with the most\n" + -" recently freed at the front, and allocations are taken from the\n" + -" back. This results in LRU (FIFO) allocation order, which tends\n" + -" to give each chunk an equal opportunity to be consolidated with\n" + -" adjacent freed chunks, resulting in larger free chunks and less\n" + -" fragmentation.\n" + -"\n" + -" To simplify use in double-linked lists, each bin header acts\n" + -" as a malloc_chunk. This avoids special-casing for headers.\n" + -" But to conserve space and improve locality, we allocate\n" + -" only the fd/bk pointers of bins, and then use repositioning tricks\n" + -" to treat these as the fields of a malloc_chunk*.\n" + -"*/\n" + -"\n" + -"typedef struct malloc_chunk* mbinptr;\n" + -"\n" + -"/* addressing -- note that bin_at(0) does not exist */\n" + -"#define bin_at(m, i) ((mbinptr)((char*)&((m)->bins[(i)<<1]) - (SIZE_SZ<<1)))\n" + -"\n" + -"/* analog of ++bin */\n" + -"#define next_bin(b) ((mbinptr)((char*)(b) + (sizeof(mchunkptr)<<1)))\n" + -"\n" + -"/* Reminders about list directionality within bins */\n" + -"#define first(b) ((b)->fd)\n" + -"#define last(b) ((b)->bk)\n" + -"\n" + -"/* Take a chunk off a bin list */\n" + -"#define unlink(P, BK, FD) { \\n" + -" FD = P->fd; \\n" + -" BK = P->bk; \\n" + -" FD->bk = BK; \\n" + -" BK->fd = FD; \\n" + -"}\n" + -"\n" + -"/*\n" + -" Indexing\n" + -"\n" + -" Bins for sizes < 512 bytes contain chunks of all the same size, spaced\n" + -" 8 bytes apart. Larger bins are approximately logarithmically spaced:\n" + -"\n" + -" 64 bins of size 8\n" + -" 32 bins of size 64\n" + -" 16 bins of size 512\n" + -" 8 bins of size 4096\n" + -" 4 bins of size 32768\n" + -" 2 bins of size 262144\n" + -" 1 bin of size what's left\n" + -"\n" + -" The bins top out around 1MB because we expect to service large\n" + -" requests via mmap.\n" + -"*/\n" + -"\n" + -"#define NBINS 96\n" + -"#define NSMALLBINS 32\n" + -"#define SMALLBIN_WIDTH 8\n" + -"#define MIN_LARGE_SIZE 256\n" + -"\n" + -"#define in_smallbin_range(sz) \\n" + -" ((CHUNK_SIZE_T)(sz) < (CHUNK_SIZE_T)MIN_LARGE_SIZE)\n" + -"\n" + -"#define smallbin_index(sz) (((unsigned)(sz)) >> 3)\n" + -"\n" + -"/*\n" + -" Compute index for size. We expect this to be inlined when\n" + -" compiled with optimization, else not, which works out well.\n" + -"*/\n" + -"static int largebin_index(unsigned int sz) {\n" + -" unsigned int x = sz >> SMALLBIN_WIDTH;\n" + -" unsigned int m; /* bit position of highest set bit of m */\n" + -"\n" + -" if (x >= 0x10000) return NBINS-1;\n" + -"\n" + -" /* On intel, use BSRL instruction to find highest bit */\n" + -"#if defined(__GNUC__) && defined(i386)\n" + -"\n" + -" __asm__(\"bsrl %1,%0\\n\\t\"\n" + -" : \"=r\" (m)\n" + -" : \"g\" (x));\n" + -"\n" + -"#else\n" + -" {\n" + -" /*\n" + -" Based on branch-free nlz algorithm in chapter 5 of Henry\n" + -" S. Warren Jr's book \"Hacker's Delight\".\n" + -" */\n" + -"\n" + -" unsigned int n = ((x - 0x100) >> 16) & 8;\n" + -" x <<= n;\n" + -" m = ((x - 0x1000) >> 16) & 4;\n" + -" n += m;\n" + -" x <<= m;\n" + -" m = ((x - 0x4000) >> 16) & 2;\n" + -" n += m;\n" + -" x = (x << m) >> 14;\n" + -" m = 13 - n + (x & ~(x>>1));\n" + -" }\n" + -"#endif\n" + -"\n") + -( -" /* Use next 2 bits to create finer-granularity bins */\n" + -" return NSMALLBINS + (m << 2) + ((sz >> (m + 6)) & 3);\n" + -"}\n" + -"\n" + -"#define bin_index(sz) \\n" + -" ((in_smallbin_range(sz)) ? smallbin_index(sz) : largebin_index(sz))\n" + -"\n" + -"/*\n" + -" FIRST_SORTED_BIN_SIZE is the chunk size corresponding to the\n" + -" first bin that is maintained in sorted order. This must\n" + -" be the smallest size corresponding to a given bin.\n" + -"\n" + -" Normally, this should be MIN_LARGE_SIZE. But you can weaken\n" + -" best fit guarantees to sometimes speed up malloc by increasing value.\n" + -" Doing this means that malloc may choose a chunk that is\n" + -" non-best-fitting by up to the width of the bin.\n" + -"\n" + -" Some useful cutoff values:\n" + -" 512 - all bins sorted\n" + -" 2560 - leaves bins <= 64 bytes wide unsorted\n" + -" 12288 - leaves bins <= 512 bytes wide unsorted\n" + -" 65536 - leaves bins <= 4096 bytes wide unsorted\n" + -" 262144 - leaves bins <= 32768 bytes wide unsorted\n" + -" -1 - no bins sorted (not recommended!)\n" + -"*/\n" + -"\n" + -"#define FIRST_SORTED_BIN_SIZE MIN_LARGE_SIZE\n" + -"/* #define FIRST_SORTED_BIN_SIZE 65536 */\n" + -"\n" + -"/*\n" + -" Unsorted chunks\n" + -"\n" + -" All remainders from chunk splits, as well as all returned chunks,\n" + -" are first placed in the \"unsorted\" bin. They are then placed\n" + -" in regular bins after malloc gives them ONE chance to be used before\n" + -" binning. So, basically, the unsorted_chunks list acts as a queue,\n" + -" with chunks being placed on it in free (and malloc_consolidate),\n" + -" and taken off (to be either used or placed in bins) in malloc.\n" + -"*/\n" + -"\n" + -"/* The otherwise unindexable 1-bin is used to hold unsorted chunks. */\n" + -"#define unsorted_chunks(M) (bin_at(M, 1))\n" + -"\n" + -"/*\n" + -" Top\n" + -"\n" + -" The top-most available chunk (i.e., the one bordering the end of\n" + -" available memory) is treated specially. It is never included in\n" + -" any bin, is used only if no other chunk is available, and is\n" + -" released back to the system if it is very large (see\n" + -" M_TRIM_THRESHOLD). Because top initially\n" + -" points to its own bin with initial zero size, thus forcing\n" + -" extension on the first malloc request, we avoid having any special\n" + -" code in malloc to check whether it even exists yet. But we still\n" + -" need to do so when getting memory from system, so we make\n" + -" initial_top treat the bin as a legal but unusable chunk during the\n" + -" interval between initialization and the first call to\n" + -" sYSMALLOc. (This is somewhat delicate, since it relies on\n" + -" the 2 preceding words to be zero during this interval as well.)\n" + -"*/\n" + -"\n" + -"/* Conveniently, the unsorted bin can be used as dummy top on first call */\n" + -"#define initial_top(M) (unsorted_chunks(M))\n" + -"\n" + -"/*\n" + -" Binmap\n" + -"\n" + -" To help compensate for the large number of bins, a one-level index\n" + -" structure is used for bin-by-bin searching. `binmap' is a\n" + -" bitvector recording whether bins are definitely empty so they can\n" + -" be skipped over during during traversals. The bits are NOT always\n" + -" cleared as soon as bins are empty, but instead only\n" + -" when they are noticed to be empty during traversal in malloc.\n" + -"*/\n" + -"\n" + -"/* Conservatively use 32 bits per map word, even if on 64bit system */\n" + -"#define BINMAPSHIFT 5\n" + -"#define BITSPERMAP (1U << BINMAPSHIFT)\n" + -"#define BINMAPSIZE (NBINS / BITSPERMAP)\n" + -"\n" + -"#define idx2block(i) ((i) >> BINMAPSHIFT)\n" + -"#define idx2bit(i) ((1U << ((i) & ((1U << BINMAPSHIFT)-1))))\n" + -"\n" + -"#define mark_bin(m,i) ((m)->binmap[idx2block(i)] |= idx2bit(i))\n" + -"#define unmark_bin(m,i) ((m)->binmap[idx2block(i)] &= ~(idx2bit(i)))\n" + -"#define get_binmap(m,i) ((m)->binmap[idx2block(i)] & idx2bit(i))\n" + -"\n" + -"/*\n" + -" Fastbins\n" + -"\n" + -" An array of lists holding recently freed small chunks. Fastbins\n" + -" are not doubly linked. It is faster to single-link them, and\n" + -" since chunks are never removed from the middles of these lists,\n" + -" double linking is not necessary. Also, unlike regular bins, they\n" + -" are not even processed in FIFO order (they use faster LIFO) since\n" + -" ordering doesn't much matter in the transient contexts in which\n" + -" fastbins are normally used.\n" + -"\n" + -" Chunks in fastbins keep their inuse bit set, so they cannot\n" + -" be consolidated with other free chunks. malloc_consolidate\n" + -" releases all chunks in fastbins and consolidates them with\n" + -" other free chunks.\n" + -"*/\n" + -"\n" + -"typedef struct malloc_chunk* mfastbinptr;\n" + -"\n" + -"/* offset 2 to use otherwise unindexable first 2 bins */\n" + -"#define fastbin_index(sz) ((((unsigned int)(sz)) >> 3) - 2)\n" + -"\n" + -"/* The maximum fastbin request size we support */\n" + -"#define MAX_FAST_SIZE 80\n" + -"\n" + -"#define NFASTBINS (fastbin_index(request2size(MAX_FAST_SIZE))+1)\n" + -"\n" + -"/*\n" + -" FASTBIN_CONSOLIDATION_THRESHOLD is the size of a chunk in free()\n" + -" that triggers automatic consolidation of possibly-surrounding\n" + -" fastbin chunks. This is a heuristic, so the exact value should not\n" + -" matter too much. It is defined at half the default trim threshold as a\n" + -" compromise heuristic to only attempt consolidation if it is likely\n" + -" to lead to trimming. However, it is not dynamically tunable, since\n" + -" consolidation reduces fragmentation surrounding loarge chunks even\n" + -" if trimming is not used.\n" + -"*/\n" + -"\n" + -"#define FASTBIN_CONSOLIDATION_THRESHOLD \\n" + -" ((unsigned long)(DEFAULT_TRIM_THRESHOLD) >> 1)\n" + -"\n" + -"/*\n" + -" Since the lowest 2 bits in max_fast don't matter in size comparisons,\n" + -" they are used as flags.\n" + -"*/\n" + -"\n" + -"/*\n" + -" ANYCHUNKS_BIT held in max_fast indicates that there may be any\n" + -" freed chunks at all. It is set true when entering a chunk into any\n" + -" bin.\n" + -"*/\n" + -"\n" + -"#define ANYCHUNKS_BIT (1U)\n" + -"\n" + -"#define have_anychunks(M) (((M)->max_fast & ANYCHUNKS_BIT))\n" + -"#define set_anychunks(M) ((M)->max_fast |= ANYCHUNKS_BIT)\n" + -"#define clear_anychunks(M) ((M)->max_fast &= ~ANYCHUNKS_BIT)\n" + -"\n" + -"/*\n" + -" FASTCHUNKS_BIT held in max_fast indicates that there are probably\n" + -" some fastbin chunks. It is set true on entering a chunk into any\n" + -" fastbin, and cleared only in malloc_consolidate.\n" + -"*/\n" + -"\n") + -( -"#define FASTCHUNKS_BIT (2U)\n" + -"\n" + -"#define have_fastchunks(M) (((M)->max_fast & FASTCHUNKS_BIT))\n" + -"#define set_fastchunks(M) ((M)->max_fast |= (FASTCHUNKS_BIT|ANYCHUNKS_BIT))\n" + -"#define clear_fastchunks(M) ((M)->max_fast &= ~(FASTCHUNKS_BIT))\n" + -"\n" + -"/*\n" + -" Set value of max_fast.\n" + -" Use impossibly small value if 0.\n" + -"*/\n" + -"\n" + -"#define set_max_fast(M, s) \\n" + -" (M)->max_fast = (((s) == 0)? SMALLBIN_WIDTH: request2size(s)) | \\n" + -" ((M)->max_fast & (FASTCHUNKS_BIT|ANYCHUNKS_BIT))\n" + -"\n" + -"#define get_max_fast(M) \\n" + -" ((M)->max_fast & ~(FASTCHUNKS_BIT | ANYCHUNKS_BIT))\n" + -"\n" + -"\n" + -"/*\n" + -" morecore_properties is a status word holding dynamically discovered\n" + -" or controlled properties of the morecore function\n" + -"*/\n" + -"\n" + -"#define MORECORE_CONTIGUOUS_BIT (1U)\n" + -"\n" + -"#define contiguous(M) \\n" + -" (((M)->morecore_properties & MORECORE_CONTIGUOUS_BIT))\n" + -"#define noncontiguous(M) \\n" + -" (((M)->morecore_properties & MORECORE_CONTIGUOUS_BIT) == 0)\n" + -"#define set_contiguous(M) \\n" + -" ((M)->morecore_properties |= MORECORE_CONTIGUOUS_BIT)\n" + -"#define set_noncontiguous(M) \\n" + -" ((M)->morecore_properties &= ~MORECORE_CONTIGUOUS_BIT)\n" + -"\n" + -"\n" + -"/*\n" + -" ----------- Internal state representation and initialization -----------\n" + -"*/\n" + -"\n" + -"struct malloc_state {\n" + -"\n" + -" /* The maximum chunk size to be eligible for fastbin */\n" + -" INTERNAL_SIZE_T max_fast; /* low 2 bits used as flags */\n" + -"\n" + -" /* Fastbins */\n" + -" mfastbinptr fastbins[NFASTBINS];\n" + -"\n" + -" /* Base of the topmost chunk -- not otherwise kept in a bin */\n" + -" mchunkptr top;\n" + -"\n" + -" /* The remainder from the most recent split of a small request */\n" + -" mchunkptr last_remainder;\n" + -"\n" + -" /* Normal bins packed as described above */\n" + -" mchunkptr bins[NBINS * 2];\n" + -"\n" + -" /* Bitmap of bins. Trailing zero map handles cases of largest binned size */\n" + -" unsigned int binmap[BINMAPSIZE+1];\n" + -"\n" + -" /* Tunable parameters */\n" + -" CHUNK_SIZE_T trim_threshold;\n" + -" INTERNAL_SIZE_T top_pad;\n" + -" INTERNAL_SIZE_T mmap_threshold;\n" + -"\n" + -" /* Memory map support */\n" + -" int n_mmaps;\n" + -" int n_mmaps_max;\n" + -" int max_n_mmaps;\n" + -"\n" + -" /* Cache malloc_getpagesize */\n" + -" unsigned int pagesize;\n" + -"\n" + -" /* Track properties of MORECORE */\n" + -" unsigned int morecore_properties;\n" + -"\n" + -" /* Statistics */\n" + -" INTERNAL_SIZE_T mmapped_mem;\n" + -" INTERNAL_SIZE_T sbrked_mem;\n" + -" INTERNAL_SIZE_T max_sbrked_mem;\n" + -" INTERNAL_SIZE_T max_mmapped_mem;\n" + -" INTERNAL_SIZE_T max_total_mem;\n" + -"};\n" + -"\n" + -"typedef struct malloc_state *mstate;\n" + -"\n" + -"/*\n" + -" There is exactly one instance of this struct in this malloc.\n" + -" If you are adapting this malloc in a way that does NOT use a static\n" + -" malloc_state, you MUST explicitly zero-fill it before using. This\n" + -" malloc relies on the property that malloc_state is initialized to\n" + -" all zeroes (as is true of C statics).\n" + -"*/\n" + -"\n" + -"static struct malloc_state av_; /* never directly referenced */\n" + -"\n" + -"/*\n" + -" All uses of av_ are via get_malloc_state().\n" + -" At most one \"call\" to get_malloc_state is made per invocation of\n" + -" the public versions of malloc and free, but other routines\n" + -" that in turn invoke malloc and/or free may call more than once.\n" + -" Also, it is called in check* routines if DEBUG is set.\n" + -"*/\n" + -"\n" + -"#define get_malloc_state() (&(av_))\n" + -"\n" + -"/*\n" + -" Initialize a malloc_state struct.\n" + -"\n" + -" This is called only from within malloc_consolidate, which needs\n" + -" be called in the same contexts anyway. It is never called directly\n" + -" outside of malloc_consolidate because some optimizing compilers try\n" + -" to inline it at all call points, which turns out not to be an\n" + -" optimization at all. (Inlining it in malloc_consolidate is fine though.)\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"static void malloc_init_state(mstate av)\n" + -"#else\n" + -"static void malloc_init_state(av) mstate av;\n" + -"#endif\n" + -"{\n" + -" int i;\n" + -" mbinptr bin;\n" + -"\n" + -" /* Establish circular links for normal bins */\n" + -" for (i = 1; i < NBINS; ++i) {\n" + -" bin = bin_at(av,i);\n" + -" bin->fd = bin->bk = bin;\n" + -" }\n" + -"\n" + -" av->top_pad = DEFAULT_TOP_PAD;\n" + -" av->n_mmaps_max = DEFAULT_MMAP_MAX;\n" + -" av->mmap_threshold = DEFAULT_MMAP_THRESHOLD;\n" + -" av->trim_threshold = DEFAULT_TRIM_THRESHOLD;\n" + -"\n" + -"#if MORECORE_CONTIGUOUS\n" + -" set_contiguous(av);\n" + -"#else\n" + -" set_noncontiguous(av);\n" + -"#endif\n" + -"\n" + -"\n" + -" set_max_fast(av, DEFAULT_MXFAST);\n" + -"\n" + -" av->top = initial_top(av);\n" + -" av->pagesize = malloc_getpagesize;\n" + -"}\n" + -"\n" + -"/*\n" + -" Other internal utilities operating on mstates\n" + -"*/\n" + -"\n") + -( -"#if __STD_C\n" + -"static Void_t* sYSMALLOc(INTERNAL_SIZE_T, mstate);\n" + -"#ifndef MORECORE_CANNOT_TRIM\n" + -"static int sYSTRIm(size_t, mstate);\n" + -"#endif\n" + -"static void malloc_consolidate(mstate);\n" + -"static Void_t** iALLOc(size_t, size_t*, int, Void_t**);\n" + -"#else\n" + -"static Void_t* sYSMALLOc();\n" + -"static int sYSTRIm();\n" + -"static void malloc_consolidate();\n" + -"static Void_t** iALLOc();\n" + -"#endif\n" + -"\n" + -"/*\n" + -" Debugging support\n" + -"\n" + -" These routines make a number of assertions about the states\n" + -" of data structures that should be true at all times. If any\n" + -" are not true, it's very likely that a user program has somehow\n" + -" trashed memory. (It's also possible that there is a coding error\n" + -" in malloc. In which case, please report it!)\n" + -"*/\n" + -"\n" + -"#if ! DEBUG\n" + -"\n" + -"#define check_chunk(P)\n" + -"#define check_free_chunk(P)\n" + -"#define check_inuse_chunk(P)\n" + -"#define check_remalloced_chunk(P,N)\n" + -"#define check_malloced_chunk(P,N)\n" + -"#define check_malloc_state()\n" + -"\n" + -"#else\n" + -"#define check_chunk(P) do_check_chunk(P)\n" + -"#define check_free_chunk(P) do_check_free_chunk(P)\n" + -"#define check_inuse_chunk(P) do_check_inuse_chunk(P)\n" + -"#define check_remalloced_chunk(P,N) do_check_remalloced_chunk(P,N)\n" + -"#define check_malloced_chunk(P,N) do_check_malloced_chunk(P,N)\n" + -"#define check_malloc_state() do_check_malloc_state()\n" + -"\n" + -"/*\n" + -" Properties of all chunks\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"static void do_check_chunk(mchunkptr p)\n" + -"#else\n" + -"static void do_check_chunk(p) mchunkptr p;\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -" CHUNK_SIZE_T sz = chunksize(p);\n" + -" /* min and max possible addresses assuming contiguous allocation */\n" + -" char* max_address = (char*)(av->top) + chunksize(av->top);\n" + -" char* min_address = max_address - av->sbrked_mem;\n" + -"\n" + -" if (!chunk_is_mmapped(p)) {\n" + -"\n" + -" /* Has legal address ... */\n" + -" if (p != av->top) {\n" + -" if (contiguous(av)) {\n" + -" assert(((char*)p) >= min_address);\n" + -" assert(((char*)p + sz) <= ((char*)(av->top)));\n" + -" }\n" + -" }\n" + -" else {\n" + -" /* top size is always at least MINSIZE */\n" + -" assert((CHUNK_SIZE_T)(sz) >= MINSIZE);\n" + -" /* top predecessor always marked inuse */\n" + -" assert(prev_inuse(p));\n" + -" }\n" + -"\n" + -" }\n" + -" else {\n" + -"#if HAVE_MMAP\n" + -" /* address is outside main heap */\n" + -" if (contiguous(av) && av->top != initial_top(av)) {\n" + -" assert(((char*)p) < min_address || ((char*)p) > max_address);\n" + -" }\n" + -" /* chunk is page-aligned */\n" + -" assert(((p->prev_size + sz) & (av->pagesize-1)) == 0);\n" + -" /* mem is aligned */\n" + -" assert(aligned_OK(chunk2mem(p)));\n" + -"#else\n" + -" /* force an appropriate assert violation if debug set */\n" + -" assert(!chunk_is_mmapped(p));\n" + -"#endif\n" + -" }\n" + -"}\n" + -"\n" + -"/*\n" + -" Properties of free chunks\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"static void do_check_free_chunk(mchunkptr p)\n" + -"#else\n" + -"static void do_check_free_chunk(p) mchunkptr p;\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -"\n" + -" INTERNAL_SIZE_T sz = p->size & ~PREV_INUSE;\n" + -" mchunkptr next = chunk_at_offset(p, sz);\n" + -"\n" + -" do_check_chunk(p);\n" + -"\n" + -" /* Chunk must claim to be free ... */\n" + -" assert(!inuse(p));\n" + -" assert (!chunk_is_mmapped(p));\n" + -"\n" + -" /* Unless a special marker, must have OK fields */\n" + -" if ((CHUNK_SIZE_T)(sz) >= MINSIZE)\n" + -" {\n" + -" assert((sz & MALLOC_ALIGN_MASK) == 0);\n" + -" assert(aligned_OK(chunk2mem(p)));\n" + -" /* ... matching footer field */\n" + -" assert(next->prev_size == sz);\n" + -" /* ... and is fully consolidated */\n" + -" assert(prev_inuse(p));\n" + -" assert (next == av->top || inuse(next));\n" + -"\n" + -" /* ... and has minimally sane links */\n" + -" assert(p->fd->bk == p);\n" + -" assert(p->bk->fd == p);\n" + -" }\n" + -" else /* markers are always of size SIZE_SZ */\n" + -" assert(sz == SIZE_SZ);\n" + -"}\n" + -"\n" + -"/*\n" + -" Properties of inuse chunks\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"static void do_check_inuse_chunk(mchunkptr p)\n" + -"#else\n" + -"static void do_check_inuse_chunk(p) mchunkptr p;\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -" mchunkptr next;\n" + -" do_check_chunk(p);\n" + -"\n" + -" if (chunk_is_mmapped(p))\n" + -" return; /* mmapped chunks have no next/prev */\n" + -"\n" + -" /* Check whether it claims to be in use ... */\n" + -" assert(inuse(p));\n" + -"\n") + -( -" next = next_chunk(p);\n" + -"\n" + -" /* ... and is surrounded by OK chunks.\n" + -" Since more things can be checked with free chunks than inuse ones,\n" + -" if an inuse chunk borders them and debug is on, it's worth doing them.\n" + -" */\n" + -" if (!prev_inuse(p)) {\n" + -" /* Note that we cannot even look at prev unless it is not inuse */\n" + -" mchunkptr prv = prev_chunk(p);\n" + -" assert(next_chunk(prv) == p);\n" + -" do_check_free_chunk(prv);\n" + -" }\n" + -"\n" + -" if (next == av->top) {\n" + -" assert(prev_inuse(next));\n" + -" assert(chunksize(next) >= MINSIZE);\n" + -" }\n" + -" else if (!inuse(next))\n" + -" do_check_free_chunk(next);\n" + -"}\n" + -"\n" + -"/*\n" + -" Properties of chunks recycled from fastbins\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"static void do_check_remalloced_chunk(mchunkptr p, INTERNAL_SIZE_T s)\n" + -"#else\n" + -"static void do_check_remalloced_chunk(p, s) mchunkptr p; INTERNAL_SIZE_T s;\n" + -"#endif\n" + -"{\n" + -" INTERNAL_SIZE_T sz = p->size & ~PREV_INUSE;\n" + -"\n" + -" do_check_inuse_chunk(p);\n" + -"\n" + -" /* Legal size ... */\n" + -" assert((sz & MALLOC_ALIGN_MASK) == 0);\n" + -" assert((CHUNK_SIZE_T)(sz) >= MINSIZE);\n" + -" /* ... and alignment */\n" + -" assert(aligned_OK(chunk2mem(p)));\n" + -" /* chunk is less than MINSIZE more than request */\n" + -" assert((long)(sz) - (long)(s) >= 0);\n" + -" assert((long)(sz) - (long)(s + MINSIZE) < 0);\n" + -"}\n" + -"\n" + -"/*\n" + -" Properties of nonrecycled chunks at the point they are malloced\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"static void do_check_malloced_chunk(mchunkptr p, INTERNAL_SIZE_T s)\n" + -"#else\n" + -"static void do_check_malloced_chunk(p, s) mchunkptr p; INTERNAL_SIZE_T s;\n" + -"#endif\n" + -"{\n" + -" /* same as recycled case ... */\n" + -" do_check_remalloced_chunk(p, s);\n" + -"\n" + -" /*\n" + -" ... plus, must obey implementation invariant that prev_inuse is\n" + -" always true of any allocated chunk; i.e., that each allocated\n" + -" chunk borders either a previously allocated and still in-use\n" + -" chunk, or the base of its memory arena. This is ensured\n" + -" by making all allocations from the the `lowest' part of any found\n" + -" chunk. This does not necessarily hold however for chunks\n" + -" recycled via fastbins.\n" + -" */\n" + -"\n" + -" assert(prev_inuse(p));\n" + -"}\n" + -"\n" + -"\n" + -"/*\n" + -" Properties of malloc_state.\n" + -"\n" + -" This may be useful for debugging malloc, as well as detecting user\n" + -" programmer errors that somehow write into malloc_state.\n" + -"\n" + -" If you are extending or experimenting with this malloc, you can\n" + -" probably figure out how to hack this routine to print out or\n" + -" display chunk addresses, sizes, bins, and other instrumentation.\n" + -"*/\n" + -"\n" + -"static void do_check_malloc_state()\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -" unsigned int i;\n" + -" mchunkptr p;\n" + -" mchunkptr q;\n" + -" mbinptr b;\n" + -" unsigned int binbit;\n" + -" int empty;\n" + -" unsigned int idx;\n" + -" INTERNAL_SIZE_T size;\n" + -" CHUNK_SIZE_T total = 0;\n" + -" int max_fast_bin;\n" + -"\n" + -" /* internal size_t must be no wider than pointer type */\n" + -" assert(sizeof(INTERNAL_SIZE_T) <= sizeof(char*));\n" + -"\n" + -" /* alignment is a power of 2 */\n" + -" assert((MALLOC_ALIGNMENT & (MALLOC_ALIGNMENT-1)) == 0);\n" + -"\n" + -" /* cannot run remaining checks until fully initialized */\n" + -" if (av->top == 0 || av->top == initial_top(av))\n" + -" return;\n" + -"\n" + -" /* pagesize is a power of 2 */\n" + -" assert((av->pagesize & (av->pagesize-1)) == 0);\n" + -"\n" + -" /* properties of fastbins */\n" + -"\n" + -" /* max_fast is in allowed range */\n" + -" assert(get_max_fast(av) <= request2size(MAX_FAST_SIZE));\n" + -"\n" + -" max_fast_bin = fastbin_index(av->max_fast);\n" + -"\n" + -" for (i = 0; i < NFASTBINS; ++i) {\n" + -" p = av->fastbins[i];\n" + -"\n" + -" /* all bins past max_fast are empty */\n" + -" if (i > max_fast_bin)\n" + -" assert(p == 0);\n" + -"\n" + -" while (p != 0) {\n" + -" /* each chunk claims to be inuse */\n" + -" do_check_inuse_chunk(p);\n" + -" total += chunksize(p);\n" + -" /* chunk belongs in this bin */\n" + -" assert(fastbin_index(chunksize(p)) == i);\n" + -" p = p->fd;\n" + -" }\n" + -" }\n" + -"\n" + -" if (total != 0)\n" + -" assert(have_fastchunks(av));\n" + -" else if (!have_fastchunks(av))\n" + -" assert(total == 0);\n" + -"\n" + -" /* check normal bins */\n" + -" for (i = 1; i < NBINS; ++i) {\n" + -" b = bin_at(av,i);\n" + -"\n" + -" /* binmap is accurate (except for bin 1 == unsorted_chunks) */\n" + -" if (i >= 2) {\n" + -" binbit = get_binmap(av,i);\n" + -" empty = last(b) == b;\n" + -" if (!binbit)\n" + -" assert(empty);\n" + -" else if (!empty)\n" + -" assert(binbit);\n" + -" }\n" + -"\n") + -( -" for (p = last(b); p != b; p = p->bk) {\n" + -" /* each chunk claims to be free */\n" + -" do_check_free_chunk(p);\n" + -" size = chunksize(p);\n" + -" total += size;\n" + -" if (i >= 2) {\n" + -" /* chunk belongs in bin */\n" + -" idx = bin_index(size);\n" + -" assert(idx == i);\n" + -" /* lists are sorted */\n" + -" if ((CHUNK_SIZE_T) size >= (CHUNK_SIZE_T)(FIRST_SORTED_BIN_SIZE)) {\n" + -" assert(p->bk == b ||\n" + -" (CHUNK_SIZE_T)chunksize(p->bk) >=\n" + -" (CHUNK_SIZE_T)chunksize(p));\n" + -" }\n" + -" }\n" + -" /* chunk is followed by a legal chain of inuse chunks */\n" + -" for (q = next_chunk(p);\n" + -" (q != av->top && inuse(q) &&\n" + -" (CHUNK_SIZE_T)(chunksize(q)) >= MINSIZE);\n" + -" q = next_chunk(q))\n" + -" do_check_inuse_chunk(q);\n" + -" }\n" + -" }\n" + -"\n" + -" /* top chunk is OK */\n" + -" check_chunk(av->top);\n" + -"\n" + -" /* sanity checks for statistics */\n" + -"\n" + -" assert(total <= (CHUNK_SIZE_T)(av->max_total_mem));\n" + -" assert(av->n_mmaps >= 0);\n" + -" assert(av->n_mmaps <= av->max_n_mmaps);\n" + -"\n" + -" assert((CHUNK_SIZE_T)(av->sbrked_mem) <=\n" + -" (CHUNK_SIZE_T)(av->max_sbrked_mem));\n" + -"\n" + -" assert((CHUNK_SIZE_T)(av->mmapped_mem) <=\n" + -" (CHUNK_SIZE_T)(av->max_mmapped_mem));\n" + -"\n" + -" assert((CHUNK_SIZE_T)(av->max_total_mem) >=\n" + -" (CHUNK_SIZE_T)(av->mmapped_mem) + (CHUNK_SIZE_T)(av->sbrked_mem));\n" + -"}\n" + -"#endif\n" + -"\n" + -"\n" + -"/* ----------- Routines dealing with system allocation -------------- */\n" + -"\n" + -"/*\n" + -" sysmalloc handles malloc cases requiring more memory from the system.\n" + -" On entry, it is assumed that av->top does not have enough\n" + -" space to service request for nb bytes, thus requiring that av->top\n" + -" be extended or replaced.\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"static Void_t* sYSMALLOc(INTERNAL_SIZE_T nb, mstate av)\n" + -"#else\n" + -"static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;\n" + -"#endif\n" + -"{\n" + -" mchunkptr old_top; /* incoming value of av->top */\n" + -" INTERNAL_SIZE_T old_size; /* its size */\n" + -" char* old_end; /* its end address */\n" + -"\n" + -" long size; /* arg to first MORECORE or mmap call */\n" + -" char* brk; /* return value from MORECORE */\n" + -"\n" + -" long correction; /* arg to 2nd MORECORE call */\n" + -" char* snd_brk; /* 2nd return val */\n" + -"\n" + -" INTERNAL_SIZE_T front_misalign; /* unusable bytes at front of new space */\n" + -" INTERNAL_SIZE_T end_misalign; /* partial page left at end of new space */\n" + -" char* aligned_brk; /* aligned offset into brk */\n" + -"\n" + -" mchunkptr p; /* the allocated/returned chunk */\n" + -" mchunkptr remainder; /* remainder from allocation */\n" + -" CHUNK_SIZE_T remainder_size; /* its size */\n" + -"\n" + -" CHUNK_SIZE_T sum; /* for updating stats */\n" + -"\n" + -" size_t pagemask = av->pagesize - 1;\n" + -"\n" + -" /*\n" + -" If there is space available in fastbins, consolidate and retry\n" + -" malloc from scratch rather than getting memory from system. This\n" + -" can occur only if nb is in smallbin range so we didn't consolidate\n" + -" upon entry to malloc. It is much easier to handle this case here\n" + -" than in malloc proper.\n" + -" */\n" + -"\n" + -" if (have_fastchunks(av)) {\n" + -" assert(in_smallbin_range(nb));\n" + -" malloc_consolidate(av);\n" + -" return mALLOc(nb - MALLOC_ALIGN_MASK);\n" + -" }\n" + -"\n" + -"\n" + -"#if HAVE_MMAP\n" + -"\n" + -" /*\n" + -" If have mmap, and the request size meets the mmap threshold, and\n" + -" the system supports mmap, and there are few enough currently\n" + -" allocated mmapped regions, try to directly map this request\n" + -" rather than expanding top.\n" + -" */\n" + -"\n" + -" if ((CHUNK_SIZE_T)(nb) >= (CHUNK_SIZE_T)(av->mmap_threshold) &&\n" + -" (av->n_mmaps < av->n_mmaps_max)) {\n" + -"\n" + -" char* mm; /* return value from mmap call*/\n" + -"\n" + -" /*\n" + -" Round up size to nearest page. For mmapped chunks, the overhead\n" + -" is one SIZE_SZ unit larger than for normal chunks, because there\n" + -" is no following chunk whose prev_size field could be used.\n" + -" */\n" + -" size = (nb + SIZE_SZ + MALLOC_ALIGN_MASK + pagemask) & ~pagemask;\n" + -"\n" + -" /* Don't try if size wraps around 0 */\n" + -" if ((CHUNK_SIZE_T)(size) > (CHUNK_SIZE_T)(nb)) {\n" + -"\n" + -" mm = (char*)(MMAP(0, size, PROT_READ|PROT_WRITE, MAP_PRIVATE));\n" + -"\n" + -" if (mm != (char*)(MORECORE_FAILURE)) {\n" + -"\n" + -" /*\n" + -" The offset to the start of the mmapped region is stored\n" + -" in the prev_size field of the chunk. This allows us to adjust\n" + -" returned start address to meet alignment requirements here\n" + -" and in memalign(), and still be able to compute proper\n" + -" address argument for later munmap in free() and realloc().\n" + -" */\n" + -"\n" + -" front_misalign = (INTERNAL_SIZE_T)chunk2mem(mm) & MALLOC_ALIGN_MASK;\n" + -" if (front_misalign > 0) {\n" + -" correction = MALLOC_ALIGNMENT - front_misalign;\n" + -" p = (mchunkptr)(mm + correction);\n" + -" p->prev_size = correction;\n" + -" set_head(p, (size - correction) |IS_MMAPPED);\n" + -" }\n" + -" else {\n" + -" p = (mchunkptr)mm;\n" + -" p->prev_size = 0;\n" + -" set_head(p, size|IS_MMAPPED);\n" + -" }\n" + -"\n" + -" /* update statistics */\n" + -"\n" + -" if (++av->n_mmaps > av->max_n_mmaps)\n" + -" av->max_n_mmaps = av->n_mmaps;\n" + -"\n") + -( -" sum = av->mmapped_mem += size;\n" + -" if (sum > (CHUNK_SIZE_T)(av->max_mmapped_mem))\n" + -" av->max_mmapped_mem = sum;\n" + -" sum += av->sbrked_mem;\n" + -" if (sum > (CHUNK_SIZE_T)(av->max_total_mem))\n" + -" av->max_total_mem = sum;\n" + -"\n" + -" check_chunk(p);\n" + -"\n" + -" return chunk2mem(p);\n" + -" }\n" + -" }\n" + -" }\n" + -"#endif\n" + -"\n" + -" /* Record incoming configuration of top */\n" + -"\n" + -" old_top = av->top;\n" + -" old_size = chunksize(old_top);\n" + -" old_end = (char*)(chunk_at_offset(old_top, old_size));\n" + -"\n" + -" brk = snd_brk = (char*)(MORECORE_FAILURE);\n" + -"\n" + -" /*\n" + -" If not the first time through, we require old_size to be\n" + -" at least MINSIZE and to have prev_inuse set.\n" + -" */\n" + -"\n" + -" assert((old_top == initial_top(av) && old_size == 0) ||\n" + -" ((CHUNK_SIZE_T) (old_size) >= MINSIZE &&\n" + -" prev_inuse(old_top)));\n" + -"\n" + -" /* Precondition: not enough current space to satisfy nb request */\n" + -" assert((CHUNK_SIZE_T)(old_size) < (CHUNK_SIZE_T)(nb + MINSIZE));\n" + -"\n" + -" /* Precondition: all fastbins are consolidated */\n" + -" assert(!have_fastchunks(av));\n" + -"\n" + -"\n" + -" /* Request enough space for nb + pad + overhead */\n" + -"\n" + -" size = nb + av->top_pad + MINSIZE;\n" + -"\n" + -" /*\n" + -" If contiguous, we can subtract out existing space that we hope to\n" + -" combine with new space. We add it back later only if\n" + -" we don't actually get contiguous space.\n" + -" */\n" + -"\n" + -" if (contiguous(av))\n" + -" size -= old_size;\n" + -"\n" + -" /*\n" + -" Round to a multiple of page size.\n" + -" If MORECORE is not contiguous, this ensures that we only call it\n" + -" with whole-page arguments. And if MORECORE is contiguous and\n" + -" this is not first time through, this preserves page-alignment of\n" + -" previous calls. Otherwise, we correct to page-align below.\n" + -" */\n" + -"\n" + -" size = (size + pagemask) & ~pagemask;\n" + -"\n" + -" /*\n" + -" Don't try to call MORECORE if argument is so big as to appear\n" + -" negative. Note that since mmap takes size_t arg, it may succeed\n" + -" below even if we cannot call MORECORE.\n" + -" */\n" + -"\n" + -" if (size > 0)\n" + -" brk = (char*)(MORECORE(size));\n" + -"\n" + -" /*\n" + -" If have mmap, try using it as a backup when MORECORE fails or\n" + -" cannot be used. This is worth doing on systems that have \"holes\" in\n" + -" address space, so sbrk cannot extend to give contiguous space, but\n" + -" space is available elsewhere. Note that we ignore mmap max count\n" + -" and threshold limits, since the space will not be used as a\n" + -" segregated mmap region.\n" + -" */\n" + -"\n" + -"#if HAVE_MMAP\n" + -" if (brk == (char*)(MORECORE_FAILURE)) {\n" + -"\n" + -" /* Cannot merge with old top, so add its size back in */\n" + -" if (contiguous(av))\n" + -" size = (size + old_size + pagemask) & ~pagemask;\n" + -"\n" + -" /* If we are relying on mmap as backup, then use larger units */\n" + -" if ((CHUNK_SIZE_T)(size) < (CHUNK_SIZE_T)(MMAP_AS_MORECORE_SIZE))\n" + -" size = MMAP_AS_MORECORE_SIZE;\n" + -"\n" + -" /* Don't try if size wraps around 0 */\n" + -" if ((CHUNK_SIZE_T)(size) > (CHUNK_SIZE_T)(nb)) {\n" + -"\n" + -" brk = (char*)(MMAP(0, size, PROT_READ|PROT_WRITE, MAP_PRIVATE));\n" + -"\n" + -" if (brk != (char*)(MORECORE_FAILURE)) {\n" + -"\n" + -" /* We do not need, and cannot use, another sbrk call to find end */\n" + -" snd_brk = brk + size;\n" + -"\n" + -" /*\n" + -" Record that we no longer have a contiguous sbrk region.\n" + -" After the first time mmap is used as backup, we do not\n" + -" ever rely on contiguous space since this could incorrectly\n" + -" bridge regions.\n" + -" */\n" + -" set_noncontiguous(av);\n" + -" }\n" + -" }\n" + -" }\n" + -"#endif\n" + -"\n" + -" if (brk != (char*)(MORECORE_FAILURE)) {\n" + -" av->sbrked_mem += size;\n" + -"\n" + -" /*\n" + -" If MORECORE extends previous space, we can likewise extend top size.\n" + -" */\n" + -"\n" + -" if (brk == old_end && snd_brk == (char*)(MORECORE_FAILURE)) {\n" + -" set_head(old_top, (size + old_size) | PREV_INUSE);\n" + -" }\n" + -"\n" + -" /*\n" + -" Otherwise, make adjustments:\n" + -"\n" + -" * If the first time through or noncontiguous, we need to call sbrk\n" + -" just to find out where the end of memory lies.\n" + -"\n" + -" * We need to ensure that all returned chunks from malloc will meet\n" + -" MALLOC_ALIGNMENT\n" + -"\n" + -" * If there was an intervening foreign sbrk, we need to adjust sbrk\n" + -" request size to account for fact that we will not be able to\n" + -" combine new space with existing space in old_top.\n" + -"\n" + -" * Almost all systems internally allocate whole pages at a time, in\n" + -" which case we might as well use the whole last page of request.\n" + -" So we allocate enough more memory to hit a page boundary now,\n" + -" which in turn causes future contiguous calls to page-align.\n" + -" */\n" + -"\n" + -" else {\n" + -" front_misalign = 0;\n" + -" end_misalign = 0;\n" + -" correction = 0;\n" + -" aligned_brk = brk;\n" + -"\n") + -( -" /*\n" + -" If MORECORE returns an address lower than we have seen before,\n" + -" we know it isn't really contiguous. This and some subsequent\n" + -" checks help cope with non-conforming MORECORE functions and\n" + -" the presence of \"foreign\" calls to MORECORE from outside of\n" + -" malloc or by other threads. We cannot guarantee to detect\n" + -" these in all cases, but cope with the ones we do detect.\n" + -" */\n" + -" if (contiguous(av) && old_size != 0 && brk < old_end) {\n" + -" set_noncontiguous(av);\n" + -" }\n" + -"\n" + -" /* handle contiguous cases */\n" + -" if (contiguous(av)) {\n" + -"\n" + -" /*\n" + -" We can tolerate forward non-contiguities here (usually due\n" + -" to foreign calls) but treat them as part of our space for\n" + -" stats reporting.\n" + -" */\n" + -" if (old_size != 0)\n" + -" av->sbrked_mem += brk - old_end;\n" + -"\n" + -" /* Guarantee alignment of first new chunk made from this space */\n" + -"\n" + -" front_misalign = (INTERNAL_SIZE_T)chunk2mem(brk) & MALLOC_ALIGN_MASK;\n" + -" if (front_misalign > 0) {\n" + -"\n" + -" /*\n" + -" Skip over some bytes to arrive at an aligned position.\n" + -" We don't need to specially mark these wasted front bytes.\n" + -" They will never be accessed anyway because\n" + -" prev_inuse of av->top (and any chunk created from its start)\n" + -" is always true after initialization.\n" + -" */\n" + -"\n" + -" correction = MALLOC_ALIGNMENT - front_misalign;\n" + -" aligned_brk += correction;\n" + -" }\n" + -"\n" + -" /*\n" + -" If this isn't adjacent to existing space, then we will not\n" + -" be able to merge with old_top space, so must add to 2nd request.\n" + -" */\n" + -"\n" + -" correction += old_size;\n" + -"\n" + -" /* Extend the end address to hit a page boundary */\n" + -" end_misalign = (INTERNAL_SIZE_T)(brk + size + correction);\n" + -" correction += ((end_misalign + pagemask) & ~pagemask) - end_misalign;\n" + -"\n" + -" assert(correction >= 0);\n" + -" snd_brk = (char*)(MORECORE(correction));\n" + -"\n" + -" if (snd_brk == (char*)(MORECORE_FAILURE)) {\n" + -" /*\n" + -" If can't allocate correction, try to at least find out current\n" + -" brk. It might be enough to proceed without failing.\n" + -" */\n" + -" correction = 0;\n" + -" snd_brk = (char*)(MORECORE(0));\n" + -" }\n" + -" else if (snd_brk < brk) {\n" + -" /*\n" + -" If the second call gives noncontiguous space even though\n" + -" it says it won't, the only course of action is to ignore\n" + -" results of second call, and conservatively estimate where\n" + -" the first call left us. Also set noncontiguous, so this\n" + -" won't happen again, leaving at most one hole.\n" + -"\n" + -" Note that this check is intrinsically incomplete. Because\n" + -" MORECORE is allowed to give more space than we ask for,\n" + -" there is no reliable way to detect a noncontiguity\n" + -" producing a forward gap for the second call.\n" + -" */\n" + -" snd_brk = brk + size;\n" + -" correction = 0;\n" + -" set_noncontiguous(av);\n" + -" }\n" + -"\n" + -" }\n" + -"\n" + -" /* handle non-contiguous cases */\n" + -" else {\n" + -" /* MORECORE/mmap must correctly align */\n" + -" assert(aligned_OK(chunk2mem(brk)));\n" + -"\n" + -" /* Find out current end of memory */\n" + -" if (snd_brk == (char*)(MORECORE_FAILURE)) {\n" + -" snd_brk = (char*)(MORECORE(0));\n" + -" av->sbrked_mem += snd_brk - brk - size;\n" + -" }\n" + -" }\n" + -"\n" + -" /* Adjust top based on results of second sbrk */\n" + -" if (snd_brk != (char*)(MORECORE_FAILURE)) {\n" + -" av->top = (mchunkptr)aligned_brk;\n" + -" set_head(av->top, (snd_brk - aligned_brk + correction) | PREV_INUSE);\n" + -" av->sbrked_mem += correction;\n" + -"\n" + -" /*\n" + -" If not the first time through, we either have a\n" + -" gap due to foreign sbrk or a non-contiguous region. Insert a\n" + -" double fencepost at old_top to prevent consolidation with space\n" + -" we don't own. These fenceposts are artificial chunks that are\n" + -" marked as inuse and are in any case too small to use. We need\n" + -" two to make sizes and alignments work out.\n" + -" */\n" + -"\n" + -" if (old_size != 0) {\n" + -" /*\n" + -" Shrink old_top to insert fenceposts, keeping size a\n" + -" multiple of MALLOC_ALIGNMENT. We know there is at least\n" + -" enough space in old_top to do this.\n" + -" */\n" + -" old_size = (old_size - 3*SIZE_SZ) & ~MALLOC_ALIGN_MASK;\n" + -" set_head(old_top, old_size | PREV_INUSE);\n" + -"\n" + -" /*\n" + -" Note that the following assignments completely overwrite\n" + -" old_top when old_size was previously MINSIZE. This is\n" + -" intentional. We need the fencepost, even if old_top otherwise gets\n" + -" lost.\n" + -" */\n" + -" chunk_at_offset(old_top, old_size )->size =\n" + -" SIZE_SZ|PREV_INUSE;\n" + -"\n" + -" chunk_at_offset(old_top, old_size + SIZE_SZ)->size =\n" + -" SIZE_SZ|PREV_INUSE;\n" + -"\n" + -" /*\n" + -" If possible, release the rest, suppressing trimming.\n" + -" */\n" + -" if (old_size >= MINSIZE) {\n" + -" INTERNAL_SIZE_T tt = av->trim_threshold;\n" + -" av->trim_threshold = (INTERNAL_SIZE_T)(-1);\n" + -" fREe(chunk2mem(old_top));\n" + -" av->trim_threshold = tt;\n" + -" }\n" + -" }\n" + -" }\n" + -" }\n" + -"\n" + -" /* Update statistics */\n" + -" sum = av->sbrked_mem;\n" + -" if (sum > (CHUNK_SIZE_T)(av->max_sbrked_mem))\n" + -" av->max_sbrked_mem = sum;\n" + -"\n") + -( -" sum += av->mmapped_mem;\n" + -" if (sum > (CHUNK_SIZE_T)(av->max_total_mem))\n" + -" av->max_total_mem = sum;\n" + -"\n" + -" check_malloc_state();\n" + -"\n" + -" /* finally, do the allocation */\n" + -"\n" + -" p = av->top;\n" + -" size = chunksize(p);\n" + -"\n" + -" /* check that one of the above allocation paths succeeded */\n" + -" if ((CHUNK_SIZE_T)(size) >= (CHUNK_SIZE_T)(nb + MINSIZE)) {\n" + -" remainder_size = size - nb;\n" + -" remainder = chunk_at_offset(p, nb);\n" + -" av->top = remainder;\n" + -" set_head(p, nb | PREV_INUSE);\n" + -" set_head(remainder, remainder_size | PREV_INUSE);\n" + -" check_malloced_chunk(p, nb);\n" + -" return chunk2mem(p);\n" + -" }\n" + -"\n" + -" }\n" + -"\n" + -" /* catch all failure paths */\n" + -" MALLOC_FAILURE_ACTION;\n" + -" return 0;\n" + -"}\n" + -"\n" + -"\n" + -"\n" + -"\n" + -"/*\n" + -" sYSTRIm is an inverse of sorts to sYSMALLOc. It gives memory back\n" + -" to the system (via negative arguments to sbrk) if there is unused\n" + -" memory at the `high' end of the malloc pool. It is called\n" + -" automatically by free() when top space exceeds the trim\n" + -" threshold. It is also called by the public malloc_trim routine. It\n" + -" returns 1 if it actually released any memory, else 0.\n" + -"*/\n" + -"\n" + -"#ifndef MORECORE_CANNOT_TRIM\n" + -"\n" + -"#if __STD_C\n" + -"static int sYSTRIm(size_t pad, mstate av)\n" + -"#else\n" + -"static int sYSTRIm(pad, av) size_t pad; mstate av;\n" + -"#endif\n" + -"{\n" + -" long top_size; /* Amount of top-most memory */\n" + -" long extra; /* Amount to release */\n" + -" long released; /* Amount actually released */\n" + -" char* current_brk; /* address returned by pre-check sbrk call */\n" + -" char* new_brk; /* address returned by post-check sbrk call */\n" + -" size_t pagesz;\n" + -"\n" + -" pagesz = av->pagesize;\n" + -" top_size = chunksize(av->top);\n" + -"\n" + -" /* Release in pagesize units, keeping at least one page */\n" + -" extra = ((top_size - pad - MINSIZE + (pagesz-1)) / pagesz - 1) * pagesz;\n" + -"\n" + -" if (extra > 0) {\n" + -"\n" + -" /*\n" + -" Only proceed if end of memory is where we last set it.\n" + -" This avoids problems if there were foreign sbrk calls.\n" + -" */\n" + -" current_brk = (char*)(MORECORE(0));\n" + -" if (current_brk == (char*)(av->top) + top_size) {\n" + -"\n" + -" /*\n" + -" Attempt to release memory. We ignore MORECORE return value,\n" + -" and instead call again to find out where new end of memory is.\n" + -" This avoids problems if first call releases less than we asked,\n" + -" of if failure somehow altered brk value. (We could still\n" + -" encounter problems if it altered brk in some very bad way,\n" + -" but the only thing we can do is adjust anyway, which will cause\n" + -" some downstream failure.)\n" + -" */\n" + -"\n" + -" MORECORE(-extra);\n" + -" new_brk = (char*)(MORECORE(0));\n" + -"\n" + -" if (new_brk != (char*)MORECORE_FAILURE) {\n" + -" released = (long)(current_brk - new_brk);\n" + -"\n" + -" if (released != 0) {\n" + -" /* Success. Adjust top. */\n" + -" av->sbrked_mem -= released;\n" + -" set_head(av->top, (top_size - released) | PREV_INUSE);\n" + -" check_malloc_state();\n" + -" return 1;\n" + -" }\n" + -" }\n" + -" }\n" + -" }\n" + -" return 0;\n" + -"}\n" + -"\n" + -"#endif\n" + -"\n" + -"/*\n" + -" ------------------------------ malloc ------------------------------\n" + -"*/\n" + -"\n" + -"\n" + -"#if __STD_C\n" + -"Void_t* mALLOc(size_t bytes)\n" + -"#else\n" + -" Void_t* mALLOc(bytes) size_t bytes;\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -"\n" + -" INTERNAL_SIZE_T nb; /* normalized request size */\n" + -" unsigned int idx; /* associated bin index */\n" + -" mbinptr bin; /* associated bin */\n" + -" mfastbinptr* fb; /* associated fastbin */\n" + -"\n" + -" mchunkptr victim; /* inspected/selected chunk */\n" + -" INTERNAL_SIZE_T size; /* its size */\n" + -" int victim_index; /* its bin index */\n" + -"\n" + -" mchunkptr remainder; /* remainder from a split */\n" + -" CHUNK_SIZE_T remainder_size; /* its size */\n" + -"\n" + -" unsigned int block; /* bit map traverser */\n" + -" unsigned int bit; /* bit map traverser */\n" + -" unsigned int map; /* current word of binmap */\n" + -"\n" + -" mchunkptr fwd; /* misc temp for linking */\n" + -" mchunkptr bck; /* misc temp for linking */\n" + -"\n" + -" /*\n" + -" Convert request size to internal form by adding SIZE_SZ bytes\n" + -" overhead plus possibly more to obtain necessary alignment and/or\n" + -" to obtain a size of at least MINSIZE, the smallest allocatable\n" + -" size. Also, checked_request2size traps (returning 0) request sizes\n" + -" that are so large that they wrap around zero when padded and\n" + -" aligned.\n" + -" */\n" + -"\n" + -" checked_request2size(bytes, nb);\n" + -"\n" + -" /*\n" + -" Bypass search if no frees yet\n" + -" */\n" + -" if (!have_anychunks(av)) {\n" + -" if (av->max_fast == 0) /* initialization check */\n" + -" malloc_consolidate(av);\n" + -" goto use_top;\n" + -" }\n" + -"\n") + -( -" /*\n" + -" If the size qualifies as a fastbin, first check corresponding bin.\n" + -" */\n" + -"\n" + -" if ((CHUNK_SIZE_T)(nb) <= (CHUNK_SIZE_T)(av->max_fast)) {\n" + -" fb = &(av->fastbins[(fastbin_index(nb))]);\n" + -" if ( (victim = *fb) != 0) {\n" + -" *fb = victim->fd;\n" + -" check_remalloced_chunk(victim, nb);\n" + -" return chunk2mem(victim);\n" + -" }\n" + -" }\n" + -"\n" + -" /*\n" + -" If a small request, check regular bin. Since these \"smallbins\"\n" + -" hold one size each, no searching within bins is necessary.\n" + -" (For a large request, we need to wait until unsorted chunks are\n" + -" processed to find best fit. But for small ones, fits are exact\n" + -" anyway, so we can check now, which is faster.)\n" + -" */\n" + -"\n" + -" if (in_smallbin_range(nb)) {\n" + -" idx = smallbin_index(nb);\n" + -" bin = bin_at(av,idx);\n" + -"\n" + -" if ( (victim = last(bin)) != bin) {\n" + -" bck = victim->bk;\n" + -" set_inuse_bit_at_offset(victim, nb);\n" + -" bin->bk = bck;\n" + -" bck->fd = bin;\n" + -"\n" + -" check_malloced_chunk(victim, nb);\n" + -" return chunk2mem(victim);\n" + -" }\n" + -" }\n" + -"\n" + -" /*\n" + -" If this is a large request, consolidate fastbins before continuing.\n" + -" While it might look excessive to kill all fastbins before\n" + -" even seeing if there is space available, this avoids\n" + -" fragmentation problems normally associated with fastbins.\n" + -" Also, in practice, programs tend to have runs of either small or\n" + -" large requests, but less often mixtures, so consolidation is not\n" + -" invoked all that often in most programs. And the programs that\n" + -" it is called frequently in otherwise tend to fragment.\n" + -" */\n" + -"\n" + -" else {\n" + -" idx = largebin_index(nb);\n" + -" if (have_fastchunks(av))\n" + -" malloc_consolidate(av);\n" + -" }\n" + -"\n" + -" /*\n" + -" Process recently freed or remaindered chunks, taking one only if\n" + -" it is exact fit, or, if this a small request, the chunk is remainder from\n" + -" the most recent non-exact fit. Place other traversed chunks in\n" + -" bins. Note that this step is the only place in any routine where\n" + -" chunks are placed in bins.\n" + -" */\n" + -"\n" + -" while ( (victim = unsorted_chunks(av)->bk) != unsorted_chunks(av)) {\n" + -" bck = victim->bk;\n" + -" size = chunksize(victim);\n" + -"\n" + -" /*\n" + -" If a small request, try to use last remainder if it is the\n" + -" only chunk in unsorted bin. This helps promote locality for\n" + -" runs of consecutive small requests. This is the only\n" + -" exception to best-fit, and applies only when there is\n" + -" no exact fit for a small chunk.\n" + -" */\n" + -"\n" + -" if (in_smallbin_range(nb) &&\n" + -" bck == unsorted_chunks(av) &&\n" + -" victim == av->last_remainder &&\n" + -" (CHUNK_SIZE_T)(size) > (CHUNK_SIZE_T)(nb + MINSIZE)) {\n" + -"\n" + -" /* split and reattach remainder */\n" + -" remainder_size = size - nb;\n" + -" remainder = chunk_at_offset(victim, nb);\n" + -" unsorted_chunks(av)->bk = unsorted_chunks(av)->fd = remainder;\n" + -" av->last_remainder = remainder;\n" + -" remainder->bk = remainder->fd = unsorted_chunks(av);\n" + -"\n" + -" set_head(victim, nb | PREV_INUSE);\n" + -" set_head(remainder, remainder_size | PREV_INUSE);\n" + -" set_foot(remainder, remainder_size);\n" + -"\n" + -" check_malloced_chunk(victim, nb);\n" + -" return chunk2mem(victim);\n" + -" }\n" + -"\n" + -" /* remove from unsorted list */\n" + -" unsorted_chunks(av)->bk = bck;\n" + -" bck->fd = unsorted_chunks(av);\n" + -"\n" + -" /* Take now instead of binning if exact fit */\n" + -"\n" + -" if (size == nb) {\n" + -" set_inuse_bit_at_offset(victim, size);\n" + -" check_malloced_chunk(victim, nb);\n" + -" return chunk2mem(victim);\n" + -" }\n" + -"\n" + -" /* place chunk in bin */\n" + -"\n" + -" if (in_smallbin_range(size)) {\n" + -" victim_index = smallbin_index(size);\n" + -" bck = bin_at(av, victim_index);\n" + -" fwd = bck->fd;\n" + -" }\n" + -" else {\n" + -" victim_index = largebin_index(size);\n" + -" bck = bin_at(av, victim_index);\n" + -" fwd = bck->fd;\n" + -"\n" + -" if (fwd != bck) {\n" + -" /* if smaller than smallest, place first */\n" + -" if ((CHUNK_SIZE_T)(size) < (CHUNK_SIZE_T)(bck->bk->size)) {\n" + -" fwd = bck;\n" + -" bck = bck->bk;\n" + -" }\n" + -" else if ((CHUNK_SIZE_T)(size) >=\n" + -" (CHUNK_SIZE_T)(FIRST_SORTED_BIN_SIZE)) {\n" + -"\n" + -" /* maintain large bins in sorted order */\n" + -" size |= PREV_INUSE; /* Or with inuse bit to speed comparisons */\n" + -" while ((CHUNK_SIZE_T)(size) < (CHUNK_SIZE_T)(fwd->size))\n" + -" fwd = fwd->fd;\n" + -" bck = fwd->bk;\n" + -" }\n" + -" }\n" + -" }\n" + -"\n" + -" mark_bin(av, victim_index);\n" + -" victim->bk = bck;\n" + -" victim->fd = fwd;\n" + -" fwd->bk = victim;\n" + -" bck->fd = victim;\n" + -" }\n" + -"\n" + -" /*\n" + -" If a large request, scan through the chunks of current bin to\n" + -" find one that fits. (This will be the smallest that fits unless\n" + -" FIRST_SORTED_BIN_SIZE has been changed from default.) This is\n" + -" the only step where an unbounded number of chunks might be\n" + -" scanned without doing anything useful with them. However the\n" + -" lists tend to be short.\n" + -" */\n" + -"\n") + -( -" if (!in_smallbin_range(nb)) {\n" + -" bin = bin_at(av, idx);\n" + -"\n" + -" for (victim = last(bin); victim != bin; victim = victim->bk) {\n" + -" size = chunksize(victim);\n" + -"\n" + -" if ((CHUNK_SIZE_T)(size) >= (CHUNK_SIZE_T)(nb)) {\n" + -" remainder_size = size - nb;\n" + -" unlink(victim, bck, fwd);\n" + -"\n" + -" /* Exhaust */\n" + -" if (remainder_size < MINSIZE) {\n" + -" set_inuse_bit_at_offset(victim, size);\n" + -" check_malloced_chunk(victim, nb);\n" + -" return chunk2mem(victim);\n" + -" }\n" + -" /* Split */\n" + -" else {\n" + -" remainder = chunk_at_offset(victim, nb);\n" + -" unsorted_chunks(av)->bk = unsorted_chunks(av)->fd = remainder;\n" + -" remainder->bk = remainder->fd = unsorted_chunks(av);\n" + -" set_head(victim, nb | PREV_INUSE);\n" + -" set_head(remainder, remainder_size | PREV_INUSE);\n" + -" set_foot(remainder, remainder_size);\n" + -" check_malloced_chunk(victim, nb);\n" + -" return chunk2mem(victim);\n" + -" }\n" + -" }\n" + -" }\n" + -" }\n" + -"\n" + -" /*\n" + -" Search for a chunk by scanning bins, starting with next largest\n" + -" bin. This search is strictly by best-fit; i.e., the smallest\n" + -" (with ties going to approximately the least recently used) chunk\n" + -" that fits is selected.\n" + -"\n" + -" The bitmap avoids needing to check that most blocks are nonempty.\n" + -" */\n" + -"\n" + -" ++idx;\n" + -" bin = bin_at(av,idx);\n" + -" block = idx2block(idx);\n" + -" map = av->binmap[block];\n" + -" bit = idx2bit(idx);\n" + -"\n" + -" for (;;) {\n" + -"\n" + -" /* Skip rest of block if there are no more set bits in this block. */\n" + -" if (bit > map || bit == 0) {\n" + -" do {\n" + -" if (++block >= BINMAPSIZE) /* out of bins */\n" + -" goto use_top;\n" + -" } while ( (map = av->binmap[block]) == 0);\n" + -"\n" + -" bin = bin_at(av, (block << BINMAPSHIFT));\n" + -" bit = 1;\n" + -" }\n" + -"\n" + -" /* Advance to bin with set bit. There must be one. */\n" + -" while ((bit & map) == 0) {\n" + -" bin = next_bin(bin);\n" + -" bit <<= 1;\n" + -" assert(bit != 0);\n" + -" }\n" + -"\n" + -" /* Inspect the bin. It is likely to be non-empty */\n" + -" victim = last(bin);\n" + -"\n" + -" /* If a false alarm (empty bin), clear the bit. */\n" + -" if (victim == bin) {\n" + -" av->binmap[block] = map &= ~bit; /* Write through */\n" + -" bin = next_bin(bin);\n" + -" bit <<= 1;\n" + -" }\n" + -"\n" + -" else {\n" + -" size = chunksize(victim);\n" + -"\n" + -" /* We know the first chunk in this bin is big enough to use. */\n" + -" assert((CHUNK_SIZE_T)(size) >= (CHUNK_SIZE_T)(nb));\n" + -"\n" + -" remainder_size = size - nb;\n" + -"\n" + -" /* unlink */\n" + -" bck = victim->bk;\n" + -" bin->bk = bck;\n" + -" bck->fd = bin;\n" + -"\n" + -" /* Exhaust */\n" + -" if (remainder_size < MINSIZE) {\n" + -" set_inuse_bit_at_offset(victim, size);\n" + -" check_malloced_chunk(victim, nb);\n" + -" return chunk2mem(victim);\n" + -" }\n" + -"\n" + -" /* Split */\n" + -" else {\n" + -" remainder = chunk_at_offset(victim, nb);\n" + -"\n" + -" unsorted_chunks(av)->bk = unsorted_chunks(av)->fd = remainder;\n" + -" remainder->bk = remainder->fd = unsorted_chunks(av);\n" + -" /* advertise as last remainder */\n" + -" if (in_smallbin_range(nb))\n" + -" av->last_remainder = remainder;\n" + -"\n" + -" set_head(victim, nb | PREV_INUSE);\n" + -" set_head(remainder, remainder_size | PREV_INUSE);\n" + -" set_foot(remainder, remainder_size);\n" + -" check_malloced_chunk(victim, nb);\n" + -" return chunk2mem(victim);\n" + -" }\n" + -" }\n" + -" }\n" + -"\n" + -" use_top:\n" + -" /*\n" + -" If large enough, split off the chunk bordering the end of memory\n" + -" (held in av->top). Note that this is in accord with the best-fit\n" + -" search rule. In effect, av->top is treated as larger (and thus\n" + -" less well fitting) than any other available chunk since it can\n" + -" be extended to be as large as necessary (up to system\n" + -" limitations).\n" + -"\n" + -" We require that av->top always exists (i.e., has size >=\n" + -" MINSIZE) after initialization, so if it would otherwise be\n" + -" exhuasted by current request, it is replenished. (The main\n" + -" reason for ensuring it exists is that we may need MINSIZE space\n" + -" to put in fenceposts in sysmalloc.)\n" + -" */\n" + -"\n" + -" victim = av->top;\n" + -" size = chunksize(victim);\n" + -"\n" + -" if ((CHUNK_SIZE_T)(size) >= (CHUNK_SIZE_T)(nb + MINSIZE)) {\n" + -" remainder_size = size - nb;\n" + -" remainder = chunk_at_offset(victim, nb);\n" + -" av->top = remainder;\n" + -" set_head(victim, nb | PREV_INUSE);\n" + -" set_head(remainder, remainder_size | PREV_INUSE);\n" + -"\n" + -" check_malloced_chunk(victim, nb);\n" + -" return chunk2mem(victim);\n" + -" }\n" + -"\n" + -" /*\n" + -" If no space in top, relay to handle system-dependent cases\n" + -" */\n" + -" return sYSMALLOc(nb, av);\n" + -"}\n" + -"\n") + -( -"/*\n" + -" ------------------------------ free ------------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"void fREe(Void_t* mem)\n" + -"#else\n" + -"void fREe(mem) Void_t* mem;\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -"\n" + -" mchunkptr p; /* chunk corresponding to mem */\n" + -" INTERNAL_SIZE_T size; /* its size */\n" + -" mfastbinptr* fb; /* associated fastbin */\n" + -" mchunkptr nextchunk; /* next contiguous chunk */\n" + -" INTERNAL_SIZE_T nextsize; /* its size */\n" + -" int nextinuse; /* true if nextchunk is used */\n" + -" INTERNAL_SIZE_T prevsize; /* size of previous contiguous chunk */\n" + -" mchunkptr bck; /* misc temp for linking */\n" + -" mchunkptr fwd; /* misc temp for linking */\n" + -"\n" + -" /* free(0) has no effect */\n" + -" if (mem != 0) {\n" + -" p = mem2chunk(mem);\n" + -" size = chunksize(p);\n" + -"\n" + -" check_inuse_chunk(p);\n" + -"\n" + -" /*\n" + -" If eligible, place chunk on a fastbin so it can be found\n" + -" and used quickly in malloc.\n" + -" */\n" + -"\n" + -" if ((CHUNK_SIZE_T)(size) <= (CHUNK_SIZE_T)(av->max_fast)\n" + -"\n" + -"#if TRIM_FASTBINS\n" + -" /*\n" + -" If TRIM_FASTBINS set, don't place chunks\n" + -" bordering top into fastbins\n" + -" */\n" + -" && (chunk_at_offset(p, size) != av->top)\n" + -"#endif\n" + -" ) {\n" + -"\n" + -" set_fastchunks(av);\n" + -" fb = &(av->fastbins[fastbin_index(size)]);\n" + -" p->fd = *fb;\n" + -" *fb = p;\n" + -" }\n" + -"\n" + -" /*\n" + -" Consolidate other non-mmapped chunks as they arrive.\n" + -" */\n" + -"\n" + -" else if (!chunk_is_mmapped(p)) {\n" + -" set_anychunks(av);\n" + -"\n" + -" nextchunk = chunk_at_offset(p, size);\n" + -" nextsize = chunksize(nextchunk);\n" + -"\n" + -" /* consolidate backward */\n" + -" if (!prev_inuse(p)) {\n" + -" prevsize = p->prev_size;\n" + -" size += prevsize;\n" + -" p = chunk_at_offset(p, -((long) prevsize));\n" + -" unlink(p, bck, fwd);\n" + -" }\n" + -"\n" + -" if (nextchunk != av->top) {\n" + -" /* get and clear inuse bit */\n" + -" nextinuse = inuse_bit_at_offset(nextchunk, nextsize);\n" + -" set_head(nextchunk, nextsize);\n" + -"\n" + -" /* consolidate forward */\n" + -" if (!nextinuse) {\n" + -" unlink(nextchunk, bck, fwd);\n" + -" size += nextsize;\n" + -" }\n" + -"\n" + -" /*\n" + -" Place the chunk in unsorted chunk list. Chunks are\n" + -" not placed into regular bins until after they have\n" + -" been given one chance to be used in malloc.\n" + -" */\n" + -"\n" + -" bck = unsorted_chunks(av);\n" + -" fwd = bck->fd;\n" + -" p->bk = bck;\n" + -" p->fd = fwd;\n" + -" bck->fd = p;\n" + -" fwd->bk = p;\n" + -"\n" + -" set_head(p, size | PREV_INUSE);\n" + -" set_foot(p, size);\n" + -"\n" + -" check_free_chunk(p);\n" + -" }\n" + -"\n" + -" /*\n" + -" If the chunk borders the current high end of memory,\n" + -" consolidate into top\n" + -" */\n" + -"\n" + -" else {\n" + -" size += nextsize;\n" + -" set_head(p, size | PREV_INUSE);\n" + -" av->top = p;\n" + -" check_chunk(p);\n" + -" }\n" + -"\n" + -" /*\n" + -" If freeing a large space, consolidate possibly-surrounding\n" + -" chunks. Then, if the total unused topmost memory exceeds trim\n" + -" threshold, ask malloc_trim to reduce top.\n" + -"\n" + -" Unless max_fast is 0, we don't know if there are fastbins\n" + -" bordering top, so we cannot tell for sure whether threshold\n" + -" has been reached unless fastbins are consolidated. But we\n" + -" don't want to consolidate on each free. As a compromise,\n" + -" consolidation is performed if FASTBIN_CONSOLIDATION_THRESHOLD\n" + -" is reached.\n" + -" */\n" + -"\n" + -" if ((CHUNK_SIZE_T)(size) >= FASTBIN_CONSOLIDATION_THRESHOLD) {\n" + -" if (have_fastchunks(av))\n" + -" malloc_consolidate(av);\n" + -"\n" + -"#ifndef MORECORE_CANNOT_TRIM\n" + -" if ((CHUNK_SIZE_T)(chunksize(av->top)) >=\n" + -" (CHUNK_SIZE_T)(av->trim_threshold))\n" + -" sYSTRIm(av->top_pad, av);\n" + -"#endif\n" + -" }\n" + -"\n" + -" }\n" + -" /*\n" + -" If the chunk was allocated via mmap, release via munmap()\n" + -" Note that if HAVE_MMAP is false but chunk_is_mmapped is\n" + -" true, then user must have overwritten memory. There's nothing\n" + -" we can do to catch this error unless DEBUG is set, in which case\n" + -" check_inuse_chunk (above) will have triggered error.\n" + -" */\n" + -"\n" + -" else {\n" + -"#if HAVE_MMAP\n" + -" int ret;\n" + -" INTERNAL_SIZE_T offset = p->prev_size;\n" + -" av->n_mmaps--;\n" + -" av->mmapped_mem -= (size + offset);\n" + -" ret = munmap((char*)p - offset, size + offset);\n" + -" /* munmap returns non-zero on failure */\n" + -" assert(ret == 0);\n" + -"#endif\n" + -" }\n" + -" }\n" + -"}\n" + -"\n") + -( -"/*\n" + -" ------------------------- malloc_consolidate -------------------------\n" + -"\n" + -" malloc_consolidate is a specialized version of free() that tears\n" + -" down chunks held in fastbins. Free itself cannot be used for this\n" + -" purpose since, among other things, it might place chunks back onto\n" + -" fastbins. So, instead, we need to use a minor variant of the same\n" + -" code.\n" + -"\n" + -" Also, because this routine needs to be called the first time through\n" + -" malloc anyway, it turns out to be the perfect place to trigger\n" + -" initialization code.\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"static void malloc_consolidate(mstate av)\n" + -"#else\n" + -"static void malloc_consolidate(av) mstate av;\n" + -"#endif\n" + -"{\n" + -" mfastbinptr* fb; /* current fastbin being consolidated */\n" + -" mfastbinptr* maxfb; /* last fastbin (for loop control) */\n" + -" mchunkptr p; /* current chunk being consolidated */\n" + -" mchunkptr nextp; /* next chunk to consolidate */\n" + -" mchunkptr unsorted_bin; /* bin header */\n" + -" mchunkptr first_unsorted; /* chunk to link to */\n" + -"\n" + -" /* These have same use as in free() */\n" + -" mchunkptr nextchunk;\n" + -" INTERNAL_SIZE_T size;\n" + -" INTERNAL_SIZE_T nextsize;\n" + -" INTERNAL_SIZE_T prevsize;\n" + -" int nextinuse;\n" + -" mchunkptr bck;\n" + -" mchunkptr fwd;\n" + -"\n" + -" /*\n" + -" If max_fast is 0, we know that av hasn't\n" + -" yet been initialized, in which case do so below\n" + -" */\n" + -"\n" + -" if (av->max_fast != 0) {\n" + -" clear_fastchunks(av);\n" + -"\n" + -" unsorted_bin = unsorted_chunks(av);\n" + -"\n" + -" /*\n" + -" Remove each chunk from fast bin and consolidate it, placing it\n" + -" then in unsorted bin. Among other reasons for doing this,\n" + -" placing in unsorted bin avoids needing to calculate actual bins\n" + -" until malloc is sure that chunks aren't immediately going to be\n" + -" reused anyway.\n" + -" */\n" + -"\n" + -" maxfb = &(av->fastbins[fastbin_index(av->max_fast)]);\n" + -" fb = &(av->fastbins[0]);\n" + -" do {\n" + -" if ( (p = *fb) != 0) {\n" + -" *fb = 0;\n" + -"\n" + -" do {\n" + -" check_inuse_chunk(p);\n" + -" nextp = p->fd;\n" + -"\n" + -" /* Slightly streamlined version of consolidation code in free() */\n" + -" size = p->size & ~PREV_INUSE;\n" + -" nextchunk = chunk_at_offset(p, size);\n" + -" nextsize = chunksize(nextchunk);\n" + -"\n" + -" if (!prev_inuse(p)) {\n" + -" prevsize = p->prev_size;\n" + -" size += prevsize;\n" + -" p = chunk_at_offset(p, -((long) prevsize));\n" + -" unlink(p, bck, fwd);\n" + -" }\n" + -"\n" + -" if (nextchunk != av->top) {\n" + -" nextinuse = inuse_bit_at_offset(nextchunk, nextsize);\n" + -" set_head(nextchunk, nextsize);\n" + -"\n" + -" if (!nextinuse) {\n" + -" size += nextsize;\n" + -" unlink(nextchunk, bck, fwd);\n" + -" }\n" + -"\n" + -" first_unsorted = unsorted_bin->fd;\n" + -" unsorted_bin->fd = p;\n" + -" first_unsorted->bk = p;\n" + -"\n" + -" set_head(p, size | PREV_INUSE);\n" + -" p->bk = unsorted_bin;\n" + -" p->fd = first_unsorted;\n" + -" set_foot(p, size);\n" + -" }\n" + -"\n" + -" else {\n" + -" size += nextsize;\n" + -" set_head(p, size | PREV_INUSE);\n" + -" av->top = p;\n" + -" }\n" + -"\n" + -" } while ( (p = nextp) != 0);\n" + -"\n" + -" }\n" + -" } while (fb++ != maxfb);\n" + -" }\n" + -" else {\n" + -" malloc_init_state(av);\n" + -" check_malloc_state();\n" + -" }\n" + -"}\n" + -"\n" + -"/*\n" + -" ------------------------------ realloc ------------------------------\n" + -"*/\n" + -"\n" + -"\n" + -"#if __STD_C\n" + -"Void_t* rEALLOc(Void_t* oldmem, size_t bytes)\n" + -"#else\n" + -"Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes;\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -"\n" + -" INTERNAL_SIZE_T nb; /* padded request size */\n" + -"\n" + -" mchunkptr oldp; /* chunk corresponding to oldmem */\n" + -" INTERNAL_SIZE_T oldsize; /* its size */\n" + -"\n" + -" mchunkptr newp; /* chunk to return */\n" + -" INTERNAL_SIZE_T newsize; /* its size */\n" + -" Void_t* newmem; /* corresponding user mem */\n" + -"\n" + -" mchunkptr next; /* next contiguous chunk after oldp */\n" + -"\n" + -" mchunkptr remainder; /* extra space at end of newp */\n" + -" CHUNK_SIZE_T remainder_size; /* its size */\n" + -"\n" + -" mchunkptr bck; /* misc temp for linking */\n" + -" mchunkptr fwd; /* misc temp for linking */\n" + -"\n" + -" CHUNK_SIZE_T copysize; /* bytes to copy */\n" + -" unsigned int ncopies; /* INTERNAL_SIZE_T words to copy */\n" + -" INTERNAL_SIZE_T* s; /* copy source */\n" + -" INTERNAL_SIZE_T* d; /* copy destination */\n" + -"\n" + -"\n" + -"#ifdef REALLOC_ZERO_BYTES_FREES\n" + -" if (bytes == 0) {\n" + -" fREe(oldmem);\n" + -" return 0;\n" + -" }\n" + -"#endif\n" + -"\n") + -( -" /* realloc of null is supposed to be same as malloc */\n" + -" if (oldmem == 0) return mALLOc(bytes);\n" + -"\n" + -" checked_request2size(bytes, nb);\n" + -"\n" + -" oldp = mem2chunk(oldmem);\n" + -" oldsize = chunksize(oldp);\n" + -"\n" + -" check_inuse_chunk(oldp);\n" + -"\n" + -" if (!chunk_is_mmapped(oldp)) {\n" + -"\n" + -" if ((CHUNK_SIZE_T)(oldsize) >= (CHUNK_SIZE_T)(nb)) {\n" + -" /* already big enough; split below */\n" + -" newp = oldp;\n" + -" newsize = oldsize;\n" + -" }\n" + -"\n" + -" else {\n" + -" next = chunk_at_offset(oldp, oldsize);\n" + -"\n" + -" /* Try to expand forward into top */\n" + -" if (next == av->top &&\n" + -" (CHUNK_SIZE_T)(newsize = oldsize + chunksize(next)) >=\n" + -" (CHUNK_SIZE_T)(nb + MINSIZE)) {\n" + -" set_head_size(oldp, nb);\n" + -" av->top = chunk_at_offset(oldp, nb);\n" + -" set_head(av->top, (newsize - nb) | PREV_INUSE);\n" + -" return chunk2mem(oldp);\n" + -" }\n" + -"\n" + -" /* Try to expand forward into next chunk; split off remainder below */\n" + -" else if (next != av->top &&\n" + -" !inuse(next) &&\n" + -" (CHUNK_SIZE_T)(newsize = oldsize + chunksize(next)) >=\n" + -" (CHUNK_SIZE_T)(nb)) {\n" + -" newp = oldp;\n" + -" unlink(next, bck, fwd);\n" + -" }\n" + -"\n" + -" /* allocate, copy, free */\n" + -" else {\n" + -" newmem = mALLOc(nb - MALLOC_ALIGN_MASK);\n" + -" if (newmem == 0)\n" + -" return 0; /* propagate failure */\n" + -"\n" + -" newp = mem2chunk(newmem);\n" + -" newsize = chunksize(newp);\n" + -"\n" + -" /*\n" + -" Avoid copy if newp is next chunk after oldp.\n" + -" */\n" + -" if (newp == next) {\n" + -" newsize += oldsize;\n" + -" newp = oldp;\n" + -" }\n" + -" else {\n" + -" /*\n" + -" Unroll copy of <= 36 bytes (72 if 8byte sizes)\n" + -" We know that contents have an odd number of\n" + -" INTERNAL_SIZE_T-sized words; minimally 3.\n" + -" */\n" + -"\n" + -" copysize = oldsize - SIZE_SZ;\n" + -" s = (INTERNAL_SIZE_T*)(oldmem);\n" + -" d = (INTERNAL_SIZE_T*)(newmem);\n" + -" ncopies = copysize / sizeof(INTERNAL_SIZE_T);\n" + -" assert(ncopies >= 3);\n" + -"\n" + -" if (ncopies > 9)\n" + -" MALLOC_COPY(d, s, copysize);\n" + -"\n" + -" else {\n" + -" *(d+0) = *(s+0);\n" + -" *(d+1) = *(s+1);\n" + -" *(d+2) = *(s+2);\n" + -" if (ncopies > 4) {\n" + -" *(d+3) = *(s+3);\n" + -" *(d+4) = *(s+4);\n" + -" if (ncopies > 6) {\n" + -" *(d+5) = *(s+5);\n" + -" *(d+6) = *(s+6);\n" + -" if (ncopies > 8) {\n" + -" *(d+7) = *(s+7);\n" + -" *(d+8) = *(s+8);\n" + -" }\n" + -" }\n" + -" }\n" + -" }\n" + -"\n" + -" fREe(oldmem);\n" + -" check_inuse_chunk(newp);\n" + -" return chunk2mem(newp);\n" + -" }\n" + -" }\n" + -" }\n" + -"\n" + -" /* If possible, free extra space in old or extended chunk */\n" + -"\n" + -" assert((CHUNK_SIZE_T)(newsize) >= (CHUNK_SIZE_T)(nb));\n" + -"\n" + -" remainder_size = newsize - nb;\n" + -"\n" + -" if (remainder_size < MINSIZE) { /* not enough extra to split off */\n" + -" set_head_size(newp, newsize);\n" + -" set_inuse_bit_at_offset(newp, newsize);\n" + -" }\n" + -" else { /* split remainder */\n" + -" remainder = chunk_at_offset(newp, nb);\n" + -" set_head_size(newp, nb);\n" + -" set_head(remainder, remainder_size | PREV_INUSE);\n" + -" /* Mark remainder as inuse so free() won't complain */\n" + -" set_inuse_bit_at_offset(remainder, remainder_size);\n" + -" fREe(chunk2mem(remainder));\n" + -" }\n" + -"\n" + -" check_inuse_chunk(newp);\n" + -" return chunk2mem(newp);\n" + -" }\n" + -"\n" + -" /*\n" + -" Handle mmap cases\n" + -" */\n" + -"\n" + -" else {\n" + -"#if HAVE_MMAP\n" + -"\n" + -"#if HAVE_MREMAP\n" + -" INTERNAL_SIZE_T offset = oldp->prev_size;\n" + -" size_t pagemask = av->pagesize - 1;\n" + -" char *cp;\n" + -" CHUNK_SIZE_T sum;\n" + -"\n" + -" /* Note the extra SIZE_SZ overhead */\n" + -" newsize = (nb + offset + SIZE_SZ + pagemask) & ~pagemask;\n" + -"\n" + -" /* don't need to remap if still within same page */\n" + -" if (oldsize == newsize - offset)\n" + -" return oldmem;\n" + -"\n" + -" cp = (char*)mremap((char*)oldp - offset, oldsize + offset, newsize, 1);\n" + -"\n" + -" if (cp != (char*)MORECORE_FAILURE) {\n" + -"\n" + -" newp = (mchunkptr)(cp + offset);\n" + -" set_head(newp, (newsize - offset)|IS_MMAPPED);\n" + -"\n" + -" assert(aligned_OK(chunk2mem(newp)));\n" + -" assert((newp->prev_size == offset));\n" + -"\n") + -( -" /* update statistics */\n" + -" sum = av->mmapped_mem += newsize - oldsize;\n" + -" if (sum > (CHUNK_SIZE_T)(av->max_mmapped_mem))\n" + -" av->max_mmapped_mem = sum;\n" + -" sum += av->sbrked_mem;\n" + -" if (sum > (CHUNK_SIZE_T)(av->max_total_mem))\n" + -" av->max_total_mem = sum;\n" + -"\n" + -" return chunk2mem(newp);\n" + -" }\n" + -"#endif\n" + -"\n" + -" /* Note the extra SIZE_SZ overhead. */\n" + -" if ((CHUNK_SIZE_T)(oldsize) >= (CHUNK_SIZE_T)(nb + SIZE_SZ))\n" + -" newmem = oldmem; /* do nothing */\n" + -" else {\n" + -" /* Must alloc, copy, free. */\n" + -" newmem = mALLOc(nb - MALLOC_ALIGN_MASK);\n" + -" if (newmem != 0) {\n" + -" MALLOC_COPY(newmem, oldmem, oldsize - 2*SIZE_SZ);\n" + -" fREe(oldmem);\n" + -" }\n" + -" }\n" + -" return newmem;\n" + -"\n" + -"#else\n" + -" /* If !HAVE_MMAP, but chunk_is_mmapped, user must have overwritten mem */\n" + -" check_malloc_state();\n" + -" MALLOC_FAILURE_ACTION;\n" + -" return 0;\n" + -"#endif\n" + -" }\n" + -"}\n" + -"\n" + -"/*\n" + -" ------------------------------ memalign ------------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"Void_t* mEMALIGn(size_t alignment, size_t bytes)\n" + -"#else\n" + -"Void_t* mEMALIGn(alignment, bytes) size_t alignment; size_t bytes;\n" + -"#endif\n" + -"{\n" + -" INTERNAL_SIZE_T nb; /* padded request size */\n" + -" char* m; /* memory returned by malloc call */\n" + -" mchunkptr p; /* corresponding chunk */\n" + -" char* brk; /* alignment point within p */\n" + -" mchunkptr newp; /* chunk to return */\n" + -" INTERNAL_SIZE_T newsize; /* its size */\n" + -" INTERNAL_SIZE_T leadsize; /* leading space before alignment point */\n" + -" mchunkptr remainder; /* spare room at end to split off */\n" + -" CHUNK_SIZE_T remainder_size; /* its size */\n" + -" INTERNAL_SIZE_T size;\n" + -"\n" + -" /* If need less alignment than we give anyway, just relay to malloc */\n" + -"\n" + -" if (alignment <= MALLOC_ALIGNMENT) return mALLOc(bytes);\n" + -"\n" + -" /* Otherwise, ensure that it is at least a minimum chunk size */\n" + -"\n" + -" if (alignment < MINSIZE) alignment = MINSIZE;\n" + -"\n" + -" /* Make sure alignment is power of 2 (in case MINSIZE is not). */\n" + -" if ((alignment & (alignment - 1)) != 0) {\n" + -" size_t a = MALLOC_ALIGNMENT * 2;\n" + -" while ((CHUNK_SIZE_T)a < (CHUNK_SIZE_T)alignment) a <<= 1;\n" + -" alignment = a;\n" + -" }\n" + -"\n" + -" checked_request2size(bytes, nb);\n" + -"\n" + -" /*\n" + -" Strategy: find a spot within that chunk that meets the alignment\n" + -" request, and then possibly free the leading and trailing space.\n" + -" */\n" + -"\n" + -"\n" + -" /* Call malloc with worst case padding to hit alignment. */\n" + -"\n" + -" m = (char*)(mALLOc(nb + alignment + MINSIZE));\n" + -"\n" + -" if (m == 0) return 0; /* propagate failure */\n" + -"\n" + -" p = mem2chunk(m);\n" + -"\n" + -" if ((((PTR_UINT)(m)) % alignment) != 0) { /* misaligned */\n" + -"\n" + -" /*\n" + -" Find an aligned spot inside chunk. Since we need to give back\n" + -" leading space in a chunk of at least MINSIZE, if the first\n" + -" calculation places us at a spot with less than MINSIZE leader,\n" + -" we can move to the next aligned spot -- we've allocated enough\n" + -" total room so that this is always possible.\n" + -" */\n" + -"\n" + -" brk = (char*)mem2chunk((PTR_UINT)(((PTR_UINT)(m + alignment - 1)) &\n" + -" -((signed long) alignment)));\n" + -" if ((CHUNK_SIZE_T)(brk - (char*)(p)) < MINSIZE)\n" + -" brk += alignment;\n" + -"\n" + -" newp = (mchunkptr)brk;\n" + -" leadsize = brk - (char*)(p);\n" + -" newsize = chunksize(p) - leadsize;\n" + -"\n" + -" /* For mmapped chunks, just adjust offset */\n" + -" if (chunk_is_mmapped(p)) {\n" + -" newp->prev_size = p->prev_size + leadsize;\n" + -" set_head(newp, newsize|IS_MMAPPED);\n" + -" return chunk2mem(newp);\n" + -" }\n" + -"\n" + -" /* Otherwise, give back leader, use the rest */\n" + -" set_head(newp, newsize | PREV_INUSE);\n" + -" set_inuse_bit_at_offset(newp, newsize);\n" + -" set_head_size(p, leadsize);\n" + -" fREe(chunk2mem(p));\n" + -" p = newp;\n" + -"\n" + -" assert (newsize >= nb &&\n" + -" (((PTR_UINT)(chunk2mem(p))) % alignment) == 0);\n" + -" }\n" + -"\n" + -" /* Also give back spare room at the end */\n" + -" if (!chunk_is_mmapped(p)) {\n" + -" size = chunksize(p);\n" + -" if ((CHUNK_SIZE_T)(size) > (CHUNK_SIZE_T)(nb + MINSIZE)) {\n" + -" remainder_size = size - nb;\n" + -" remainder = chunk_at_offset(p, nb);\n" + -" set_head(remainder, remainder_size | PREV_INUSE);\n" + -" set_head_size(p, nb);\n" + -" fREe(chunk2mem(remainder));\n" + -" }\n" + -" }\n" + -"\n" + -" check_inuse_chunk(p);\n" + -" return chunk2mem(p);\n" + -"}\n" + -"\n" + -"/*\n" + -" ------------------------------ calloc ------------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"Void_t* cALLOc(size_t n_elements, size_t elem_size)\n" + -"#else\n" + -"Void_t* cALLOc(n_elements, elem_size) size_t n_elements; size_t elem_size;\n" + -"#endif\n" + -"{\n" + -" mchunkptr p;\n" + -" CHUNK_SIZE_T clearsize;\n" + -" CHUNK_SIZE_T nclears;\n" + -" INTERNAL_SIZE_T* d;\n" + -"\n") + -( -" Void_t* mem = mALLOc(n_elements * elem_size);\n" + -"\n" + -" if (mem != 0) {\n" + -" p = mem2chunk(mem);\n" + -"\n" + -" if (!chunk_is_mmapped(p))\n" + -" {\n" + -" /*\n" + -" Unroll clear of <= 36 bytes (72 if 8byte sizes)\n" + -" We know that contents have an odd number of\n" + -" INTERNAL_SIZE_T-sized words; minimally 3.\n" + -" */\n" + -"\n" + -" d = (INTERNAL_SIZE_T*)mem;\n" + -" clearsize = chunksize(p) - SIZE_SZ;\n" + -" nclears = clearsize / sizeof(INTERNAL_SIZE_T);\n" + -" assert(nclears >= 3);\n" + -"\n" + -" if (nclears > 9)\n" + -" MALLOC_ZERO(d, clearsize);\n" + -"\n" + -" else {\n" + -" *(d+0) = 0;\n" + -" *(d+1) = 0;\n" + -" *(d+2) = 0;\n" + -" if (nclears > 4) {\n" + -" *(d+3) = 0;\n" + -" *(d+4) = 0;\n" + -" if (nclears > 6) {\n" + -" *(d+5) = 0;\n" + -" *(d+6) = 0;\n" + -" if (nclears > 8) {\n" + -" *(d+7) = 0;\n" + -" *(d+8) = 0;\n" + -" }\n" + -" }\n" + -" }\n" + -" }\n" + -" }\n" + -"#if ! MMAP_CLEARS\n" + -" else\n" + -" {\n" + -" d = (INTERNAL_SIZE_T*)mem;\n" + -" /*\n" + -" Note the additional SIZE_SZ\n" + -" */\n" + -" clearsize = chunksize(p) - 2*SIZE_SZ;\n" + -" MALLOC_ZERO(d, clearsize);\n" + -" }\n" + -"#endif\n" + -" }\n" + -" return mem;\n" + -"}\n" + -"\n" + -"/*\n" + -" ------------------------------ cfree ------------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"void cFREe(Void_t *mem)\n" + -"#else\n" + -"void cFREe(mem) Void_t *mem;\n" + -"#endif\n" + -"{\n" + -" fREe(mem);\n" + -"}\n" + -"\n" + -"/*\n" + -" ------------------------- independent_calloc -------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"Void_t** iCALLOc(size_t n_elements, size_t elem_size, Void_t* chunks[])\n" + -"#else\n" + -"Void_t** iCALLOc(n_elements, elem_size, chunks) size_t n_elements; size_t elem_size; Void_t* chunks[];\n" + -"#endif\n" + -"{\n" + -" size_t sz = elem_size; /* serves as 1-element array */\n" + -" /* opts arg of 3 means all elements are same size, and should be cleared */\n" + -" return iALLOc(n_elements, &sz, 3, chunks);\n" + -"}\n" + -"\n" + -"/*\n" + -" ------------------------- independent_comalloc -------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"Void_t** iCOMALLOc(size_t n_elements, size_t sizes[], Void_t* chunks[])\n" + -"#else\n" + -"Void_t** iCOMALLOc(n_elements, sizes, chunks) size_t n_elements; size_t sizes[]; Void_t* chunks[];\n" + -"#endif\n" + -"{\n" + -" return iALLOc(n_elements, sizes, 0, chunks);\n" + -"}\n" + -"\n" + -"\n" + -"/*\n" + -" ------------------------------ ialloc ------------------------------\n" + -" ialloc provides common support for independent_X routines, handling all of\n" + -" the combinations that can result.\n" + -"\n" + -" The opts arg has:\n" + -" bit 0 set if all elements are same size (using sizes[0])\n" + -" bit 1 set if elements should be zeroed\n" + -"*/\n" + -"\n" + -"\n" + -"#if __STD_C\n" + -"static Void_t** iALLOc(size_t n_elements,\n" + -" size_t* sizes,\n" + -" int opts,\n" + -" Void_t* chunks[])\n" + -"#else\n" + -"static Void_t** iALLOc(n_elements, sizes, opts, chunks) size_t n_elements; size_t* sizes; int opts; Void_t* chunks[];\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -" INTERNAL_SIZE_T element_size; /* chunksize of each element, if all same */\n" + -" INTERNAL_SIZE_T contents_size; /* total size of elements */\n" + -" INTERNAL_SIZE_T array_size; /* request size of pointer array */\n" + -" Void_t* mem; /* malloced aggregate space */\n" + -" mchunkptr p; /* corresponding chunk */\n" + -" INTERNAL_SIZE_T remainder_size; /* remaining bytes while splitting */\n" + -" Void_t** marray; /* either \"chunks\" or malloced ptr array */\n" + -" mchunkptr array_chunk; /* chunk for malloced ptr array */\n" + -" int mmx; /* to disable mmap */\n" + -" INTERNAL_SIZE_T size;\n" + -" size_t i;\n" + -"\n" + -" /* Ensure initialization */\n" + -" if (av->max_fast == 0) malloc_consolidate(av);\n" + -"\n" + -" /* compute array length, if needed */\n" + -" if (chunks != 0) {\n" + -" if (n_elements == 0)\n" + -" return chunks; /* nothing to do */\n" + -" marray = chunks;\n" + -" array_size = 0;\n" + -" }\n" + -" else {\n" + -" /* if empty req, must still return chunk representing empty array */\n" + -" if (n_elements == 0)\n" + -" return (Void_t**) mALLOc(0);\n" + -" marray = 0;\n" + -" array_size = request2size(n_elements * (sizeof(Void_t*)));\n" + -" }\n" + -"\n" + -" /* compute total element size */\n" + -" if (opts & 0x1) { /* all-same-size */\n" + -" element_size = request2size(*sizes);\n" + -" contents_size = n_elements * element_size;\n" + -" }\n" + -" else { /* add up all the sizes */\n" + -" element_size = 0;\n" + -" contents_size = 0;\n" + -" for (i = 0; i != n_elements; ++i)\n" + -" contents_size += request2size(sizes[i]);\n" + -" }\n" + -"\n") + -( -" /* subtract out alignment bytes from total to minimize overallocation */\n" + -" size = contents_size + array_size - MALLOC_ALIGN_MASK;\n" + -"\n" + -" /*\n" + -" Allocate the aggregate chunk.\n" + -" But first disable mmap so malloc won't use it, since\n" + -" we would not be able to later free/realloc space internal\n" + -" to a segregated mmap region.\n" + -" */\n" + -" mmx = av->n_mmaps_max; /* disable mmap */\n" + -" av->n_mmaps_max = 0;\n" + -" mem = mALLOc(size);\n" + -" av->n_mmaps_max = mmx; /* reset mmap */\n" + -" if (mem == 0)\n" + -" return 0;\n" + -"\n" + -" p = mem2chunk(mem);\n" + -" assert(!chunk_is_mmapped(p));\n" + -" remainder_size = chunksize(p);\n" + -"\n" + -" if (opts & 0x2) { /* optionally clear the elements */\n" + -" MALLOC_ZERO(mem, remainder_size - SIZE_SZ - array_size);\n" + -" }\n" + -"\n" + -" /* If not provided, allocate the pointer array as final part of chunk */\n" + -" if (marray == 0) {\n" + -" array_chunk = chunk_at_offset(p, contents_size);\n" + -" marray = (Void_t**) (chunk2mem(array_chunk));\n" + -" set_head(array_chunk, (remainder_size - contents_size) | PREV_INUSE);\n" + -" remainder_size = contents_size;\n" + -" }\n" + -"\n" + -" /* split out elements */\n" + -" for (i = 0; ; ++i) {\n" + -" marray[i] = chunk2mem(p);\n" + -" if (i != n_elements-1) {\n" + -" if (element_size != 0)\n" + -" size = element_size;\n" + -" else\n" + -" size = request2size(sizes[i]);\n" + -" remainder_size -= size;\n" + -" set_head(p, size | PREV_INUSE);\n" + -" p = chunk_at_offset(p, size);\n" + -" }\n" + -" else { /* the final element absorbs any overallocation slop */\n" + -" set_head(p, remainder_size | PREV_INUSE);\n" + -" break;\n" + -" }\n" + -" }\n" + -"\n" + -"#if DEBUG\n" + -" if (marray != chunks) {\n" + -" /* final element must have exactly exhausted chunk */\n" + -" if (element_size != 0)\n" + -" assert(remainder_size == element_size);\n" + -" else\n" + -" assert(remainder_size == request2size(sizes[i]));\n" + -" check_inuse_chunk(mem2chunk(marray));\n" + -" }\n" + -"\n" + -" for (i = 0; i != n_elements; ++i)\n" + -" check_inuse_chunk(mem2chunk(marray[i]));\n" + -"#endif\n" + -"\n" + -" return marray;\n" + -"}\n" + -"\n" + -"\n" + -"/*\n" + -" ------------------------------ valloc ------------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"Void_t* vALLOc(size_t bytes)\n" + -"#else\n" + -"Void_t* vALLOc(bytes) size_t bytes;\n" + -"#endif\n" + -"{\n" + -" /* Ensure initialization */\n" + -" mstate av = get_malloc_state();\n" + -" if (av->max_fast == 0) malloc_consolidate(av);\n" + -" return mEMALIGn(av->pagesize, bytes);\n" + -"}\n" + -"\n" + -"/*\n" + -" ------------------------------ pvalloc ------------------------------\n" + -"*/\n" + -"\n" + -"\n" + -"#if __STD_C\n" + -"Void_t* pVALLOc(size_t bytes)\n" + -"#else\n" + -"Void_t* pVALLOc(bytes) size_t bytes;\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -" size_t pagesz;\n" + -"\n" + -" /* Ensure initialization */\n" + -" if (av->max_fast == 0) malloc_consolidate(av);\n" + -" pagesz = av->pagesize;\n" + -" return mEMALIGn(pagesz, (bytes + pagesz - 1) & ~(pagesz - 1));\n" + -"}\n" + -"\n" + -"\n" + -"/*\n" + -" ------------------------------ malloc_trim ------------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"int mTRIm(size_t pad)\n" + -"#else\n" + -"int mTRIm(pad) size_t pad;\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -" /* Ensure initialization/consolidation */\n" + -" malloc_consolidate(av);\n" + -"\n" + -"#ifndef MORECORE_CANNOT_TRIM\n" + -" return sYSTRIm(pad, av);\n" + -"#else\n" + -" return 0;\n" + -"#endif\n" + -"}\n" + -"\n" + -"\n" + -"/*\n" + -" ------------------------- malloc_usable_size -------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"size_t mUSABLe(Void_t* mem)\n" + -"#else\n" + -"size_t mUSABLe(mem) Void_t* mem;\n" + -"#endif\n" + -"{\n" + -" mchunkptr p;\n" + -" if (mem != 0) {\n" + -" p = mem2chunk(mem);\n" + -" if (chunk_is_mmapped(p))\n" + -" return chunksize(p) - 2*SIZE_SZ;\n" + -" else if (inuse(p))\n" + -" return chunksize(p) - SIZE_SZ;\n" + -" }\n" + -" return 0;\n" + -"}\n" + -"\n" + -"/*\n" + -" ------------------------------ mallinfo ------------------------------\n" + -"*/\n" + -"\n") + -( -"struct mallinfo mALLINFo()\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -" struct mallinfo mi;\n" + -" unsigned int i;\n" + -" mbinptr b;\n" + -" mchunkptr p;\n" + -" INTERNAL_SIZE_T avail;\n" + -" INTERNAL_SIZE_T fastavail;\n" + -" int nblocks;\n" + -" int nfastblocks;\n" + -"\n" + -" /* Ensure initialization */\n" + -" if (av->top == 0) malloc_consolidate(av);\n" + -"\n" + -" check_malloc_state();\n" + -"\n" + -" /* Account for top */\n" + -" avail = chunksize(av->top);\n" + -" nblocks = 1; /* top always exists */\n" + -"\n" + -" /* traverse fastbins */\n" + -" nfastblocks = 0;\n" + -" fastavail = 0;\n" + -"\n" + -" for (i = 0; i < NFASTBINS; ++i) {\n" + -" for (p = av->fastbins[i]; p != 0; p = p->fd) {\n" + -" ++nfastblocks;\n" + -" fastavail += chunksize(p);\n" + -" }\n" + -" }\n" + -"\n" + -" avail += fastavail;\n" + -"\n" + -" /* traverse regular bins */\n" + -" for (i = 1; i < NBINS; ++i) {\n" + -" b = bin_at(av, i);\n" + -" for (p = last(b); p != b; p = p->bk) {\n" + -" ++nblocks;\n" + -" avail += chunksize(p);\n" + -" }\n" + -" }\n" + -"\n" + -" mi.smblks = nfastblocks;\n" + -" mi.ordblks = nblocks;\n" + -" mi.fordblks = avail;\n" + -" mi.uordblks = av->sbrked_mem - avail;\n" + -" mi.arena = av->sbrked_mem;\n" + -" mi.hblks = av->n_mmaps;\n" + -" mi.hblkhd = av->mmapped_mem;\n" + -" mi.fsmblks = fastavail;\n" + -" mi.keepcost = chunksize(av->top);\n" + -" mi.usmblks = av->max_total_mem;\n" + -" return mi;\n" + -"}\n" + -"\n" + -"/*\n" + -" ------------------------------ malloc_stats ------------------------------\n" + -"*/\n" + -"\n" + -"void mSTATs()\n" + -"{\n" + -" struct mallinfo mi = mALLINFo();\n" + -"\n" + -"#ifdef WIN32\n" + -" {\n" + -" CHUNK_SIZE_T free, reserved, committed;\n" + -" vminfo (&free, &reserved, &committed);\n" + -" fprintf(stderr, \"free bytes = %10lu\\n\",\n" + -" free);\n" + -" fprintf(stderr, \"reserved bytes = %10lu\\n\",\n" + -" reserved);\n" + -" fprintf(stderr, \"committed bytes = %10lu\\n\",\n" + -" committed);\n" + -" }\n" + -"#endif\n" + -"\n" + -"\n" + -" fprintf(stderr, \"max system bytes = %10lu\\n\",\n" + -" (CHUNK_SIZE_T)(mi.usmblks));\n" + -" fprintf(stderr, \"system bytes = %10lu\\n\",\n" + -" (CHUNK_SIZE_T)(mi.arena + mi.hblkhd));\n" + -" fprintf(stderr, \"in use bytes = %10lu\\n\",\n" + -" (CHUNK_SIZE_T)(mi.uordblks + mi.hblkhd));\n" + -"\n" + -"#ifdef WIN32\n" + -" {\n" + -" CHUNK_SIZE_T kernel, user;\n" + -" if (cpuinfo (TRUE, &kernel, &user)) {\n" + -" fprintf(stderr, \"kernel ms = %10lu\\n\",\n" + -" kernel);\n" + -" fprintf(stderr, \"user ms = %10lu\\n\",\n" + -" user);\n" + -" }\n" + -" }\n" + -"#endif\n" + -"}\n" + -"\n" + -"\n" + -"/*\n" + -" ------------------------------ mallopt ------------------------------\n" + -"*/\n" + -"\n" + -"#if __STD_C\n" + -"int mALLOPt(int param_number, int value)\n" + -"#else\n" + -"int mALLOPt(param_number, value) int param_number; int value;\n" + -"#endif\n" + -"{\n" + -" mstate av = get_malloc_state();\n" + -" /* Ensure initialization/consolidation */\n" + -" malloc_consolidate(av);\n" + -"\n" + -" switch(param_number) {\n" + -" case M_MXFAST:\n" + -" if (value >= 0 && value <= MAX_FAST_SIZE) {\n" + -" set_max_fast(av, value);\n" + -" return 1;\n" + -" }\n" + -" else\n" + -" return 0;\n" + -"\n" + -" case M_TRIM_THRESHOLD:\n" + -" av->trim_threshold = value;\n" + -" return 1;\n" + -"\n" + -" case M_TOP_PAD:\n" + -" av->top_pad = value;\n" + -" return 1;\n" + -"\n" + -" case M_MMAP_THRESHOLD:\n" + -" av->mmap_threshold = value;\n" + -" return 1;\n" + -"\n" + -" case M_MMAP_MAX:\n" + -"#if !HAVE_MMAP\n" + -" if (value != 0)\n" + -" return 0;\n" + -"#endif\n" + -" av->n_mmaps_max = value;\n" + -" return 1;\n" + -"\n" + -" default:\n" + -" return 0;\n" + -" }\n" + -"}\n" + -"\n" + -"\n" + -"/*\n" + -" -------------------- Alternative MORECORE functions --------------------\n" + -"*/\n" + -"\n") + -( -"\n" + -"/*\n" + -" General Requirements for MORECORE.\n" + -"\n" + -" The MORECORE function must have the following properties:\n" + -"\n" + -" If MORECORE_CONTIGUOUS is false:\n" + -"\n" + -" * MORECORE must allocate in multiples of pagesize. It will\n" + -" only be called with arguments that are multiples of pagesize.\n" + -"\n" + -" * MORECORE(0) must return an address that is at least\n" + -" MALLOC_ALIGNMENT aligned. (Page-aligning always suffices.)\n" + -"\n" + -" else (i.e. If MORECORE_CONTIGUOUS is true):\n" + -"\n" + -" * Consecutive calls to MORECORE with positive arguments\n" + -" return increasing addresses, indicating that space has been\n" + -" contiguously extended.\n" + -"\n" + -" * MORECORE need not allocate in multiples of pagesize.\n" + -" Calls to MORECORE need not have args of multiples of pagesize.\n" + -"\n" + -" * MORECORE need not page-align.\n" + -"\n" + -" In either case:\n" + -"\n" + -" * MORECORE may allocate more memory than requested. (Or even less,\n" + -" but this will generally result in a malloc failure.)\n" + -"\n" + -" * MORECORE must not allocate memory when given argument zero, but\n" + -" instead return one past the end address of memory from previous\n" + -" nonzero call. This malloc does NOT call MORECORE(0)\n" + -" until at least one call with positive arguments is made, so\n" + -" the initial value returned is not important.\n" + -"\n" + -" * Even though consecutive calls to MORECORE need not return contiguous\n" + -" addresses, it must be OK for malloc'ed chunks to span multiple\n" + -" regions in those cases where they do happen to be contiguous.\n" + -"\n" + -" * MORECORE need not handle negative arguments -- it may instead\n" + -" just return MORECORE_FAILURE when given negative arguments.\n" + -" Negative arguments are always multiples of pagesize. MORECORE\n" + -" must not misinterpret negative args as large positive unsigned\n" + -" args. You can suppress all such calls from even occurring by defining\n" + -" MORECORE_CANNOT_TRIM,\n" + -"\n" + -" There is some variation across systems about the type of the\n" + -" argument to sbrk/MORECORE. If size_t is unsigned, then it cannot\n" + -" actually be size_t, because sbrk supports negative args, so it is\n" + -" normally the signed type of the same width as size_t (sometimes\n" + -" declared as \"intptr_t\", and sometimes \"ptrdiff_t\"). It doesn't much\n" + -" matter though. Internally, we use \"long\" as arguments, which should\n" + -" work across all reasonable possibilities.\n" + -"\n" + -" Additionally, if MORECORE ever returns failure for a positive\n" + -" request, and HAVE_MMAP is true, then mmap is used as a noncontiguous\n" + -" system allocator. This is a useful backup strategy for systems with\n" + -" holes in address spaces -- in this case sbrk cannot contiguously\n" + -" expand the heap, but mmap may be able to map noncontiguous space.\n" + -"\n" + -" If you'd like mmap to ALWAYS be used, you can define MORECORE to be\n" + -" a function that always returns MORECORE_FAILURE.\n" + -"\n" + -" Malloc only has limited ability to detect failures of MORECORE\n" + -" to supply contiguous space when it says it can. In particular,\n" + -" multithreaded programs that do not use locks may result in\n" + -" rece conditions across calls to MORECORE that result in gaps\n" + -" that cannot be detected as such, and subsequent corruption.\n" + -"\n" + -" If you are using this malloc with something other than sbrk (or its\n" + -" emulation) to supply memory regions, you probably want to set\n" + -" MORECORE_CONTIGUOUS as false. As an example, here is a custom\n" + -" allocator kindly contributed for pre-OSX macOS. It uses virtually\n" + -" but not necessarily physically contiguous non-paged memory (locked\n" + -" in, present and won't get swapped out). You can use it by\n" + -" uncommenting this section, adding some #includes, and setting up the\n" + -" appropriate defines above:\n" + -"\n" + -" #define MORECORE osMoreCore\n" + -" #define MORECORE_CONTIGUOUS 0\n" + -"\n" + -" There is also a shutdown routine that should somehow be called for\n" + -" cleanup upon program exit.\n" + -"\n" + -" #define MAX_POOL_ENTRIES 100\n" + -" #define MINIMUM_MORECORE_SIZE (64 * 1024)\n" + -" static int next_os_pool;\n" + -" void *our_os_pools[MAX_POOL_ENTRIES];\n" + -"\n" + -" void *osMoreCore(int size)\n" + -" {\n" + -" void *ptr = 0;\n" + -" static void *sbrk_top = 0;\n" + -"\n" + -" if (size > 0)\n" + -" {\n" + -" if (size < MINIMUM_MORECORE_SIZE)\n" + -" size = MINIMUM_MORECORE_SIZE;\n" + -" if (CurrentExecutionLevel() == kTaskLevel)\n" + -" ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0);\n" + -" if (ptr == 0)\n" + -" {\n" + -" return (void *) MORECORE_FAILURE;\n" + -" }\n" + -" // save ptrs so they can be freed during cleanup\n" + -" our_os_pools[next_os_pool] = ptr;\n" + -" next_os_pool++;\n" + -" ptr = (void *) ((((CHUNK_SIZE_T) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK);\n" + -" sbrk_top = (char *) ptr + size;\n" + -" return ptr;\n" + -" }\n" + -" else if (size < 0)\n" + -" {\n" + -" // we don't currently support shrink behavior\n" + -" return (void *) MORECORE_FAILURE;\n" + -" }\n" + -" else\n" + -" {\n" + -" return sbrk_top;\n" + -" }\n" + -" }\n" + -"\n" + -" // cleanup any allocated memory pools\n" + -" // called as last thing before shutting down driver\n" + -"\n" + -" void osCleanupMem(void)\n" + -" {\n" + -" void **ptr;\n" + -"\n" + -" for (ptr = our_os_pools; ptr < &our_os_pools[MAX_POOL_ENTRIES]; ptr++)\n" + -" if (*ptr)\n" + -" {\n" + -" PoolDeallocate(*ptr);\n" + -" *ptr = 0;\n" + -" }\n" + -" }\n" + -"\n" + -"*/\n" + -"\n" + -"\n" + -"/*\n" + -" --------------------------------------------------------------\n" + -"\n" + -" Emulation of sbrk for win32.\n" + -" Donated by J. Walter .\n" + -" For additional information about this code, and malloc on Win32, see\n" + -" http://www.genesys-e.de/jwalter/\n" + -"*/\n" + -"\n" + -"\n") + -( -"#ifdef WIN32\n" + -"\n" + -"#ifdef _DEBUG\n" + -"/* #define TRACE */\n" + -"#endif\n" + -"\n" + -"/* Support for USE_MALLOC_LOCK */\n" + -"#ifdef USE_MALLOC_LOCK\n" + -"\n" + -"/* Wait for spin lock */\n" + -"static int slwait (int *sl) {\n" + -" while (InterlockedCompareExchange ((void **) sl, (void *) 1, (void *) 0) != 0)\n" + -" Sleep (0);\n" + -" return 0;\n" + -"}\n" + -"\n" + -"/* Release spin lock */\n" + -"static int slrelease (int *sl) {\n" + -" InterlockedExchange (sl, 0);\n" + -" return 0;\n" + -"}\n" + -"\n" + -"#ifdef NEEDED\n" + -"/* Spin lock for emulation code */\n" + -"static int g_sl;\n" + -"#endif\n" + -"\n" + -"#endif /* USE_MALLOC_LOCK */\n" + -"\n" + -"/* getpagesize for windows */\n" + -"static long getpagesize (void) {\n" + -" static long g_pagesize = 0;\n" + -" if (! g_pagesize) {\n" + -" SYSTEM_INFO system_info;\n" + -" GetSystemInfo (&system_info);\n" + -" g_pagesize = system_info.dwPageSize;\n" + -" }\n" + -" return g_pagesize;\n" + -"}\n" + -"static long getregionsize (void) {\n" + -" static long g_regionsize = 0;\n" + -" if (! g_regionsize) {\n" + -" SYSTEM_INFO system_info;\n" + -" GetSystemInfo (&system_info);\n" + -" g_regionsize = system_info.dwAllocationGranularity;\n" + -" }\n" + -" return g_regionsize;\n" + -"}\n" + -"\n" + -"/* A region list entry */\n" + -"typedef struct _region_list_entry {\n" + -" void *top_allocated;\n" + -" void *top_committed;\n" + -" void *top_reserved;\n" + -" long reserve_size;\n" + -" struct _region_list_entry *previous;\n" + -"} region_list_entry;\n" + -"\n" + -"/* Allocate and link a region entry in the region list */\n" + -"static int region_list_append (region_list_entry **last, void *base_reserved, long reserve_size) {\n" + -" region_list_entry *next = HeapAlloc (GetProcessHeap (), 0, sizeof (region_list_entry));\n" + -" if (! next)\n" + -" return FALSE;\n" + -" next->top_allocated = (char *) base_reserved;\n" + -" next->top_committed = (char *) base_reserved;\n" + -" next->top_reserved = (char *) base_reserved + reserve_size;\n" + -" next->reserve_size = reserve_size;\n" + -" next->previous = *last;\n" + -" *last = next;\n" + -" return TRUE;\n" + -"}\n" + -"/* Free and unlink the last region entry from the region list */\n" + -"static int region_list_remove (region_list_entry **last) {\n" + -" region_list_entry *previous = (*last)->previous;\n" + -" if (! HeapFree (GetProcessHeap (), sizeof (region_list_entry), *last))\n" + -" return FALSE;\n" + -" *last = previous;\n" + -" return TRUE;\n" + -"}\n" + -"\n" + -"#define CEIL(size,to) (((size)+(to)-1)&~((to)-1))\n" + -"#define FLOOR(size,to) ((size)&~((to)-1))\n" + -"\n" + -"#define SBRK_SCALE 0\n" + -"/* #define SBRK_SCALE 1 */\n" + -"/* #define SBRK_SCALE 2 */\n" + -"/* #define SBRK_SCALE 4 */\n" + -"\n" + -"/* sbrk for windows */\n" + -"static void *sbrk (long size) {\n" + -" static long g_pagesize, g_my_pagesize;\n" + -" static long g_regionsize, g_my_regionsize;\n" + -" static region_list_entry *g_last;\n" + -" void *result = (void *) MORECORE_FAILURE;\n" + -"#ifdef TRACE\n" + -" printf (\"sbrk %d\\n\", size);\n" + -"#endif\n" + -"#if defined (USE_MALLOC_LOCK) && defined (NEEDED)\n" + -" /* Wait for spin lock */\n" + -" slwait (&g_sl);\n" + -"#endif\n" + -" /* First time initialization */\n" + -" if (! g_pagesize) {\n" + -" g_pagesize = getpagesize ();\n" + -" g_my_pagesize = g_pagesize << SBRK_SCALE;\n" + -" }\n" + -" if (! g_regionsize) {\n" + -" g_regionsize = getregionsize ();\n" + -" g_my_regionsize = g_regionsize << SBRK_SCALE;\n" + -" }\n" + -" if (! g_last) {\n" + -" if (! region_list_append (&g_last, 0, 0))\n" + -" goto sbrk_exit;\n" + -" }\n" + -" /* Assert invariants */\n" + -" assert (g_last);\n" + -" assert ((char *) g_last->top_reserved - g_last->reserve_size <= (char *) g_last->top_allocated &&\n" + -" g_last->top_allocated <= g_last->top_committed);\n" + -" assert ((char *) g_last->top_reserved - g_last->reserve_size <= (char *) g_last->top_committed &&\n" + -" g_last->top_committed <= g_last->top_reserved &&\n" + -" (unsigned) g_last->top_committed % g_pagesize == 0);\n" + -" assert ((unsigned) g_last->top_reserved % g_regionsize == 0);\n" + -" assert ((unsigned) g_last->reserve_size % g_regionsize == 0);\n" + -" /* Allocation requested? */\n" + -" if (size >= 0) {\n" + -" /* Allocation size is the requested size */\n" + -" long allocate_size = size;\n" + -" /* Compute the size to commit */\n" + -" long to_commit = (char *) g_last->top_allocated + allocate_size - (char *) g_last->top_committed;\n" + -" /* Do we reach the commit limit? */\n" + -" if (to_commit > 0) {\n" + -" /* Round size to commit */\n" + -" long commit_size = CEIL (to_commit, g_my_pagesize);\n" + -" /* Compute the size to reserve */\n" + -" long to_reserve = (char *) g_last->top_committed + commit_size - (char *) g_last->top_reserved;\n" + -" /* Do we reach the reserve limit? */\n" + -" if (to_reserve > 0) {\n" + -" /* Compute the remaining size to commit in the current region */\n" + -" long remaining_commit_size = (char *) g_last->top_reserved - (char *) g_last->top_committed;\n" + -" if (remaining_commit_size > 0) {\n" + -" /* Assert preconditions */\n" + -" assert ((unsigned) g_last->top_committed % g_pagesize == 0);\n" + -" assert (0 < remaining_commit_size && remaining_commit_size % g_pagesize == 0); {\n" + -" /* Commit this */\n" + -" void *base_committed = VirtualAlloc (g_last->top_committed, remaining_commit_size,\n" + -" MEM_COMMIT, PAGE_READWRITE);\n" + -" /* Check returned pointer for consistency */\n" + -" if (base_committed != g_last->top_committed)\n" + -" goto sbrk_exit;\n") + -( -" /* Assert postconditions */\n" + -" assert ((unsigned) base_committed % g_pagesize == 0);\n" + -"#ifdef TRACE\n" + -" printf (\"Commit %p %d\\n\", base_committed, remaining_commit_size);\n" + -"#endif\n" + -" /* Adjust the regions commit top */\n" + -" g_last->top_committed = (char *) base_committed + remaining_commit_size;\n" + -" }\n" + -" } {\n" + -" /* Now we are going to search and reserve. */\n" + -" int contiguous = -1;\n" + -" int found = FALSE;\n" + -" MEMORY_BASIC_INFORMATION memory_info;\n" + -" void *base_reserved;\n" + -" long reserve_size;\n" + -" do {\n" + -" /* Assume contiguous memory */\n" + -" contiguous = TRUE;\n" + -" /* Round size to reserve */\n" + -" reserve_size = CEIL (to_reserve, g_my_regionsize);\n" + -" /* Start with the current region's top */\n" + -" memory_info.BaseAddress = g_last->top_reserved;\n" + -" /* Assert preconditions */\n" + -" assert ((unsigned) memory_info.BaseAddress % g_pagesize == 0);\n" + -" assert (0 < reserve_size && reserve_size % g_regionsize == 0);\n" + -" while (VirtualQuery (memory_info.BaseAddress, &memory_info, sizeof (memory_info))) {\n" + -" /* Assert postconditions */\n" + -" assert ((unsigned) memory_info.BaseAddress % g_pagesize == 0);\n" + -"#ifdef TRACE\n" + -" printf (\"Query %p %d %s\\n\", memory_info.BaseAddress, memory_info.RegionSize,\n" + -" memory_info.State == MEM_FREE ? \"FREE\":\n" + -" (memory_info.State == MEM_RESERVE ? \"RESERVED\":\n" + -" (memory_info.State == MEM_COMMIT ? \"COMMITTED\": \"?\")));\n" + -"#endif\n" + -" /* Region is free, well aligned and big enough: we are done */\n" + -" if (memory_info.State == MEM_FREE &&\n" + -" (unsigned) memory_info.BaseAddress % g_regionsize == 0 &&\n" + -" memory_info.RegionSize >= (unsigned) reserve_size) {\n" + -" found = TRUE;\n" + -" break;\n" + -" }\n" + -" /* From now on we can't get contiguous memory! */\n" + -" contiguous = FALSE;\n" + -" /* Recompute size to reserve */\n" + -" reserve_size = CEIL (allocate_size, g_my_regionsize);\n" + -" memory_info.BaseAddress = (char *) memory_info.BaseAddress + memory_info.RegionSize;\n" + -" /* Assert preconditions */\n" + -" assert ((unsigned) memory_info.BaseAddress % g_pagesize == 0);\n" + -" assert (0 < reserve_size && reserve_size % g_regionsize == 0);\n" + -" }\n" + -" /* Search failed? */\n" + -" if (! found)\n" + -" goto sbrk_exit;\n" + -" /* Assert preconditions */\n" + -" assert ((unsigned) memory_info.BaseAddress % g_regionsize == 0);\n" + -" assert (0 < reserve_size && reserve_size % g_regionsize == 0);\n" + -" /* Try to reserve this */\n" + -" base_reserved = VirtualAlloc (memory_info.BaseAddress, reserve_size,\n" + -" MEM_RESERVE, PAGE_NOACCESS);\n" + -" if (! base_reserved) {\n" + -" int rc = GetLastError ();\n" + -" if (rc != ERROR_INVALID_ADDRESS)\n" + -" goto sbrk_exit;\n" + -" }\n" + -" /* A null pointer signals (hopefully) a race condition with another thread. */\n" + -" /* In this case, we try again. */\n" + -" } while (! base_reserved);\n" + -" /* Check returned pointer for consistency */\n" + -" if (memory_info.BaseAddress && base_reserved != memory_info.BaseAddress)\n" + -" goto sbrk_exit;\n" + -" /* Assert postconditions */\n" + -" assert ((unsigned) base_reserved % g_regionsize == 0);\n" + -"#ifdef TRACE\n" + -" printf (\"Reserve %p %d\\n\", base_reserved, reserve_size);\n" + -"#endif\n" + -" /* Did we get contiguous memory? */\n" + -" if (contiguous) {\n" + -" long start_size = (char *) g_last->top_committed - (char *) g_last->top_allocated;\n" + -" /* Adjust allocation size */\n" + -" allocate_size -= start_size;\n" + -" /* Adjust the regions allocation top */\n" + -" g_last->top_allocated = g_last->top_committed;\n" + -" /* Recompute the size to commit */\n" + -" to_commit = (char *) g_last->top_allocated + allocate_size - (char *) g_last->top_committed;\n" + -" /* Round size to commit */\n" + -" commit_size = CEIL (to_commit, g_my_pagesize);\n" + -" }\n" + -" /* Append the new region to the list */\n" + -" if (! region_list_append (&g_last, base_reserved, reserve_size))\n" + -" goto sbrk_exit;\n" + -" /* Didn't we get contiguous memory? */\n" + -" if (! contiguous) {\n" + -" /* Recompute the size to commit */\n" + -" to_commit = (char *) g_last->top_allocated + allocate_size - (char *) g_last->top_committed;\n" + -" /* Round size to commit */\n" + -" commit_size = CEIL (to_commit, g_my_pagesize);\n" + -" }\n" + -" }\n" + -" }\n" + -" /* Assert preconditions */\n" + -" assert ((unsigned) g_last->top_committed % g_pagesize == 0);\n" + -" assert (0 < commit_size && commit_size % g_pagesize == 0); {\n" + -" /* Commit this */\n" + -" void *base_committed = VirtualAlloc (g_last->top_committed, commit_size,\n" + -" MEM_COMMIT, PAGE_READWRITE);\n" + -" /* Check returned pointer for consistency */\n" + -" if (base_committed != g_last->top_committed)\n" + -" goto sbrk_exit;\n" + -" /* Assert postconditions */\n" + -" assert ((unsigned) base_committed % g_pagesize == 0);\n" + -"#ifdef TRACE\n" + -" printf (\"Commit %p %d\\n\", base_committed, commit_size);\n" + -"#endif\n" + -" /* Adjust the regions commit top */\n" + -" g_last->top_committed = (char *) base_committed + commit_size;\n" + -" }\n" + -" }\n" + -" /* Adjust the regions allocation top */\n" + -" g_last->top_allocated = (char *) g_last->top_allocated + allocate_size;\n" + -" result = (char *) g_last->top_allocated - size;\n" + -" /* Deallocation requested? */\n" + -" } else if (size < 0) {\n" + -" long deallocate_size = - size;\n" + -" /* As long as we have a region to release */\n" + -" while ((char *) g_last->top_allocated - deallocate_size < (char *) g_last->top_reserved - g_last->reserve_size) {\n" + -" /* Get the size to release */\n" + -" long release_size = g_last->reserve_size;\n" + -" /* Get the base address */\n" + -" void *base_reserved = (char *) g_last->top_reserved - release_size;\n" + -" /* Assert preconditions */\n" + -" assert ((unsigned) base_reserved % g_regionsize == 0);\n" + -" assert (0 < release_size && release_size % g_regionsize == 0); {\n" + -" /* Release this */\n" + -" int rc = VirtualFree (base_reserved, 0,\n" + -" MEM_RELEASE);\n" + -" /* Check returned code for consistency */\n" + -" if (! rc)\n" + -" goto sbrk_exit;\n" + -"#ifdef TRACE\n" + -" printf (\"Release %p %d\\n\", base_reserved, release_size);\n" + -"#endif\n" + -" }\n" + -" /* Adjust deallocation size */\n" + -" deallocate_size -= (char *) g_last->top_allocated - (char *) base_reserved;\n" + -" /* Remove the old region from the list */\n" + -" if (! region_list_remove (&g_last))\n" + -" goto sbrk_exit;\n" + -" } {\n") + -( -" /* Compute the size to decommit */\n" + -" long to_decommit = (char *) g_last->top_committed - ((char *) g_last->top_allocated - deallocate_size);\n" + -" if (to_decommit >= g_my_pagesize) {\n" + -" /* Compute the size to decommit */\n" + -" long decommit_size = FLOOR (to_decommit, g_my_pagesize);\n" + -" /* Compute the base address */\n" + -" void *base_committed = (char *) g_last->top_committed - decommit_size;\n" + -" /* Assert preconditions */\n" + -" assert ((unsigned) base_committed % g_pagesize == 0);\n" + -" assert (0 < decommit_size && decommit_size % g_pagesize == 0); {\n" + -" /* Decommit this */\n" + -" int rc = VirtualFree ((char *) base_committed, decommit_size,\n" + -" MEM_DECOMMIT);\n" + -" /* Check returned code for consistency */\n" + -" if (! rc)\n" + -" goto sbrk_exit;\n" + -"#ifdef TRACE\n" + -" printf (\"Decommit %p %d\\n\", base_committed, decommit_size);\n" + -"#endif\n" + -" }\n" + -" /* Adjust deallocation size and regions commit and allocate top */\n" + -" deallocate_size -= (char *) g_last->top_allocated - (char *) base_committed;\n" + -" g_last->top_committed = base_committed;\n" + -" g_last->top_allocated = base_committed;\n" + -" }\n" + -" }\n" + -" /* Adjust regions allocate top */\n" + -" g_last->top_allocated = (char *) g_last->top_allocated - deallocate_size;\n" + -" /* Check for underflow */\n" + -" if ((char *) g_last->top_reserved - g_last->reserve_size > (char *) g_last->top_allocated ||\n" + -" g_last->top_allocated > g_last->top_committed) {\n" + -" /* Adjust regions allocate top */\n" + -" g_last->top_allocated = (char *) g_last->top_reserved - g_last->reserve_size;\n" + -" goto sbrk_exit;\n" + -" }\n" + -" result = g_last->top_allocated;\n" + -" }\n" + -" /* Assert invariants */\n" + -" assert (g_last);\n" + -" assert ((char *) g_last->top_reserved - g_last->reserve_size <= (char *) g_last->top_allocated &&\n" + -" g_last->top_allocated <= g_last->top_committed);\n" + -" assert ((char *) g_last->top_reserved - g_last->reserve_size <= (char *) g_last->top_committed &&\n" + -" g_last->top_committed <= g_last->top_reserved &&\n" + -" (unsigned) g_last->top_committed % g_pagesize == 0);\n" + -" assert ((unsigned) g_last->top_reserved % g_regionsize == 0);\n" + -" assert ((unsigned) g_last->reserve_size % g_regionsize == 0);\n" + -"\n" + -"sbrk_exit:\n" + -"#if defined (USE_MALLOC_LOCK) && defined (NEEDED)\n" + -" /* Release spin lock */\n" + -" slrelease (&g_sl);\n" + -"#endif\n" + -" return result;\n" + -"}\n" + -"\n" + -"/* mmap for windows */\n" + -"static void *mmap (void *ptr, long size, long prot, long type, long handle, long arg) {\n" + -" static long g_pagesize;\n" + -" static long g_regionsize;\n" + -"#ifdef TRACE\n" + -" printf (\"mmap %d\\n\", size);\n" + -"#endif\n" + -"#if defined (USE_MALLOC_LOCK) && defined (NEEDED)\n" + -" /* Wait for spin lock */\n" + -" slwait (&g_sl);\n" + -"#endif\n" + -" /* First time initialization */\n" + -" if (! g_pagesize)\n" + -" g_pagesize = getpagesize ();\n" + -" if (! g_regionsize)\n" + -" g_regionsize = getregionsize ();\n" + -" /* Assert preconditions */\n" + -" assert ((unsigned) ptr % g_regionsize == 0);\n" + -" assert (size % g_pagesize == 0);\n" + -" /* Allocate this */\n" + -" ptr = VirtualAlloc (ptr, size,\n" + -" MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE);\n" + -" if (! ptr) {\n" + -" ptr = (void *) MORECORE_FAILURE;\n" + -" goto mmap_exit;\n" + -" }\n" + -" /* Assert postconditions */\n" + -" assert ((unsigned) ptr % g_regionsize == 0);\n" + -"#ifdef TRACE\n" + -" printf (\"Commit %p %d\\n\", ptr, size);\n" + -"#endif\n" + -"mmap_exit:\n" + -"#if defined (USE_MALLOC_LOCK) && defined (NEEDED)\n" + -" /* Release spin lock */\n" + -" slrelease (&g_sl);\n" + -"#endif\n" + -" return ptr;\n" + -"}\n" + -"\n" + -"/* munmap for windows */\n" + -"static long munmap (void *ptr, long size) {\n" + -" static long g_pagesize;\n" + -" static long g_regionsize;\n" + -" int rc = MUNMAP_FAILURE;\n" + -"#ifdef TRACE\n" + -" printf (\"munmap %p %d\\n\", ptr, size);\n" + -"#endif\n" + -"#if defined (USE_MALLOC_LOCK) && defined (NEEDED)\n" + -" /* Wait for spin lock */\n" + -" slwait (&g_sl);\n" + -"#endif\n" + -" /* First time initialization */\n" + -" if (! g_pagesize)\n" + -" g_pagesize = getpagesize ();\n" + -" if (! g_regionsize)\n" + -" g_regionsize = getregionsize ();\n" + -" /* Assert preconditions */\n" + -" assert ((unsigned) ptr % g_regionsize == 0);\n" + -" assert (size % g_pagesize == 0);\n" + -" /* Free this */\n" + -" if (! VirtualFree (ptr, 0,\n" + -" MEM_RELEASE))\n" + -" goto munmap_exit;\n" + -" rc = 0;\n" + -"#ifdef TRACE\n" + -" printf (\"Release %p %d\\n\", ptr, size);\n" + -"#endif\n" + -"munmap_exit:\n" + -"#if defined (USE_MALLOC_LOCK) && defined (NEEDED)\n" + -" /* Release spin lock */\n" + -" slrelease (&g_sl);\n" + -"#endif\n" + -" return rc;\n" + -"}\n" + -"\n" + -"static void vminfo (CHUNK_SIZE_T *free, CHUNK_SIZE_T *reserved, CHUNK_SIZE_T *committed) {\n" + -" MEMORY_BASIC_INFORMATION memory_info;\n" + -" memory_info.BaseAddress = 0;\n" + -" *free = *reserved = *committed = 0;\n" + -" while (VirtualQuery (memory_info.BaseAddress, &memory_info, sizeof (memory_info))) {\n" + -" switch (memory_info.State) {\n" + -" case MEM_FREE:\n" + -" *free += memory_info.RegionSize;\n" + -" break;\n" + -" case MEM_RESERVE:\n" + -" *reserved += memory_info.RegionSize;\n" + -" break;\n" + -" case MEM_COMMIT:\n" + -" *committed += memory_info.RegionSize;\n" + -" break;\n" + -" }\n" + -" memory_info.BaseAddress = (char *) memory_info.BaseAddress + memory_info.RegionSize;\n" + -" }\n" + -"}\n" + -"\n") + -( -"static int cpuinfo (int whole, CHUNK_SIZE_T *kernel, CHUNK_SIZE_T *user) {\n" + -" if (whole) {\n" + -" __int64 creation64, exit64, kernel64, user64;\n" + -" int rc = GetProcessTimes (GetCurrentProcess (),\n" + -" (FILETIME *) &creation64,\n" + -" (FILETIME *) &exit64,\n" + -" (FILETIME *) &kernel64,\n" + -" (FILETIME *) &user64);\n" + -" if (! rc) {\n" + -" *kernel = 0;\n" + -" *user = 0;\n" + -" return FALSE;\n" + -" }\n" + -" *kernel = (CHUNK_SIZE_T) (kernel64 / 10000);\n" + -" *user = (CHUNK_SIZE_T) (user64 / 10000);\n" + -" return TRUE;\n" + -" } else {\n" + -" __int64 creation64, exit64, kernel64, user64;\n" + -" int rc = GetThreadTimes (GetCurrentThread (),\n" + -" (FILETIME *) &creation64,\n" + -" (FILETIME *) &exit64,\n" + -" (FILETIME *) &kernel64,\n" + -" (FILETIME *) &user64);\n" + -" if (! rc) {\n" + -" *kernel = 0;\n" + -" *user = 0;\n" + -" return FALSE;\n" + -" }\n" + -" *kernel = (CHUNK_SIZE_T) (kernel64 / 10000);\n" + -" *user = (CHUNK_SIZE_T) (user64 / 10000);\n" + -" return TRUE;\n" + -" }\n" + -"}\n" + -"\n" + -"#endif /* WIN32 */\n" + -"\n" + -"#endif // NDEBUG\n" + -"\n" + -"}; /* end of namespace KJS */\n"); - - -var thai = -"ประเทศไทย\n" + -"จากวิกิพีเดีย สารานุกรมเสรี\n" + -"ไปที่: ป้ายบอกทาง, ค้นหา\n" + -" \n" + -"\n" + -"เนื่องจากบทความนี้ถูกล็อกเนื่องจาก ถูกก่อกวนหลายครั้งติดต่อกัน การแก้ไขจากผู้ที่ไม่ได้ลงทะเบียน หรือผู้ใช้ใหม่ไม่สามารถทำได้ขณะนี้\n" + -"คุณสามารถแสดงความเห็น เสนอข้อความ หรือขอให้ยกเลิกการป้องกันได้ในหน้าอภิปราย หรือลงทะเบียนโดยสร้างชื่อผู้ใช้\n" + -" \n" + -"วิกิพีเดีย:บทความคัดสรร\n" + -"\n" + -" \"ไทย\" เปลี่ยนทางมาที่นี่ สำหรับความหมายอื่น ดูที่ ไทย (แก้ความกำกวม)\n" + -"\n" + -"ราชอาณาจักรไทย\n" + -"ธงชาติไทย ตราแผ่นดินของไทย\n" + -"ธงชาติ ตราแผ่นดิน\n" + -"คำขวัญ: ชาติ ศาสนา พระมหากษัตริย์\n" + -"เพลงชาติ: เพลงชาติไทย\n" + -"แผนที่แสดงที่ตั้งของประเทศไทย\n" + -"เมืองหลวง กรุงเทพมหานคร\n" + -"13°44′N 100°30′E\n" + -"เมืองใหญ่สุด กรุงเทพมหานคร\n" + -"ภาษาราชการ ภาษาไทย\n" + -"รัฐบาล เผด็จการทหาร\n" + -" - ประมุขแห่งรัฐ พระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช\n" + -" - นายกรัฐมนตรี พลเอกสุรยุทธ์ จุลานนท์\n" + -" - ประธานคณะมนตรีความมั่นคงแห่งชาติ พลอากาศเอก ชลิต พุกผาสุข (รักษาการ)\n" + -"สถาปนาเป็น\n" + -"• สุโขทัย\n" + -"• กรุงศรีอยุธยา\n" + -"• กรุงธนบุรี\n" + -"• กรุงรัตนโกสินทร์ \n" + -"พ.ศ. 1781–1911\n" + -"1893–2310\n" + -"2310–6 เมษายน 2325\n" + -"6 เมษายน 2325–ปัจจุบัน\n" + -"เนื้อที่\n" + -" - ทั้งหมด\n" + -" \n" + -" - พื้นน้ำ (%) \n" + -"514,000 กม.² (อันดับที่ 49)\n" + -"198,457 ไมล์² \n" + -"0.4%\n" + -"ประชากร\n" + -" - 2548 ประมาณ\n" + -" - 2543\n" + -" - ความหนาแน่น \n" + -"62,418,054 (อันดับที่ 19)\n" + -"60,916,441\n" + -"122/กม² (อันดับที่ 59)\n" + -"{{{population_densitymi²}}}/ไมล์² \n" + -"GDP (PPP)\n" + -" - รวม\n" + -" - ต่อประชากร 2548 ค่าประมาณ\n" + -"$559.5 billion (อันดับที่ 21)\n" + -"$8,542 (อันดับที่ 72)\n" + -"HDI (2546) 0.778 (อันดับที่ 73) – ปานกลาง\n" + -"สกุลเงิน บาท (฿) (THB)\n" + -"เขตเวลา (UTC+7)\n" + -"รหัสอินเทอร์เน็ต .th\n" + -"รหัสโทรศัพท์ +66\n" + -"\n" + -"ประเทศไทย หรือ ราชอาณาจักรไทย ตั้งอยู่ในเอเชียตะวันออกเฉียงใต้ มีพรมแดนทางทิศตะวันออกติดลาวและกัมพูชา ทิศใต้ติดอ่าวไทยและมาเลเซีย ทิศตะวันตกติดทะเลอันดามันและพม่า และทิศเหนือติดพม่าและลาว โดยมีแม่น้ำโขงกั้นเป็นบางช่วง\n" + -"\n" + -"ประเทศไทยเป็นสมาชิกของสหประชาชาติ เอเปค และ อาเซียน มีศูนย์รวมการปกครองอยู่ที่ กรุงเทพมหานคร ซึ่งเป็นเมืองหลวงของประเทศ\n" + -"\n" + -"พระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช ทรงเป็นพระมหากษัตริย์ที่ครองราชย์ ในฐานะประมุขแห่งรัฐ ยาวนานที่สุดในโลกถึง 60 ปี\n" + -"\n" + -"\n" + -"เนื้อหา\n" + -"[ซ่อน]\n" + -"\n" + -" * 1 ประวัติศาสตร์\n" + -" o 1.1 ชื่อประเทศไทย\n" + -" * 2 การเมืองการปกครอง\n" + -" o 2.1 เขตการปกครอง\n" + -" o 2.2 เมืองใหญ่ / จังหวัดใหญ่\n" + -" * 3 ภูมิอากาศและภูมิประเทศ\n" + -" o 3.1 ภูมิประเทศ\n" + -" o 3.2 ภูมิอากาศ\n" + -" * 4 เศรษฐกิจ\n" + -" o 4.1 เศรษฐกิจหลักของประเทศ\n" + -" o 4.2 การคมนาคม\n" + -" o 4.3 การสื่อสาร\n" + -" * 5 สังคม\n" + -" o 5.1 ชนชาติ\n" + -" o 5.2 ศาสนา\n" + -" o 5.3 การศึกษา\n" + -" o 5.4 ภาษา\n" + -" o 5.5 ศิลปะและวัฒนธรรม\n" + -" o 5.6 กีฬา\n" + -" o 5.7 วันสำคัญ\n" + -" * 6 ลำดับที่สำคัญ\n" + -" * 7 อ้างอิง\n" + -" * 8 แหล่งข้อมูลอื่น\n" + -"\n" + -"ประวัติศาสตร์\n" + -"\n" + -" ดูบทความหลักที่ ประวัติศาสตร์ไทย\n" + -"\n" + -"ประเทศไทยมีประวัติศาสตร์ยาวนานมากนับเริ่มแต่การล่มสลายของราชอาณาจักรขอม-จักรวรรดินครวัต นครธม เมื่อต้นๆ คริสต์ศตวรรษที่ 13 [1]โดยมีความสืบเนื่องและคาบเกี่ยวระหว่างอาณาจักรโบราณหลายแห่ง เช่น อาณาจักรทวารวดี ศรีวิชัย ละโว้ เขมร ฯลฯ โดยเริ่มมีความชัดเจนในอาณาจักรสุโขทัยตั้งแต่ปี พ.ศ. 1781 อาณาจักรล้านนาทางภาคเหนือ กระทั่งเสื่อมอำนาจลงในช่วงต้นพุทธศตวรรษที่ 19 แล้วความรุ่งเรืองได้ปรากฏขึ้นในอาณาจักรทางใต้ ณ กรุงศรีอยุธยา โดยยังมีอาณาเขตที่ไม่แน่ชัด ครั้นเมื่อเสียกรุงศรีอยุธยาเป็นครั้งที่สองในปี พ.ศ. 2310 พระเจ้าตากสินจึงได้ย้ายราชธานีมาอยู่ที่กรุงธนบุรี\n" + -"\n" + -"ภายหลังสิ้นสุดอำนาจและมีการสถาปนากรุงรัตนโกสินทร์เมื่อ พ.ศ. 2325 อาณาจักรสยามเริ่มมีความเป็นปึกแผ่น มีการผนวกดินแดนบางส่วนของอาณาจักรล้านช้าง ครั้นในรัชกาลที่ 5 ได้ผนวกดินแดนของเมืองเชียงใหม่ หรืออาณาจักรล้านนาส่วนล่าง (ส่วนบนอยู่บริเวณเชียงตุง) เป็นการรวบรวมดินแดนครั้งใหญ่ครั้งสุดท้าย วันที่ 24 มิถุนายน พ.ศ. 2475 ได้เปลี่ยนแปลงการปกครองมาเป็นระบอบประชาธิปไตยแต่ก็ต้องรออีกถึง 41 ปี กว่าจะได้นายกรัฐมนตรีที่มาจากการเลือกตั้งครั้งแรกเมื่อ พ.ศ. 2516 หลังจากเหตุการณ์ 14 ตุลา หลังจากนั้นมีเหตุการณ์เรียกร้องประชาธิปไตยอีกสองครั้งคือ เหตุการณ์ 6 ตุลา และ เหตุการณ์พฤษภาทมิฬ ล่าสุดได้เกิดรัฐประหารขึ้นอีกครั้งในเดือนกันยายน พ.ศ. 2549 ซึ่งเป็นการยึดอำนาจจากรัฐบาลรักษาการ หลังจากได้มีการยุบสภาผู้แทนราษฎรเมื่อเดือนกุมภาพันธ์ 2549\n" + -"\n" + -"ชื่อประเทศไทย\n" + -"\n" + -"คำว่า ไทย มีความหมายในภาษาไทยว่า อิสรภาพ เสรีภาพ หรืออีกความหมายคือ ใหญ่ ยิ่งใหญ่ เพราะการจะเป็นอิสระได้จะต้องมีกำลังที่มากกว่า แข็งแกร่งกว่า เพื่อป้องกันการรุกรานจากข้าศึก เดิมประเทศไทยใช้ชื่อ สยาม (Siam) แต่ได้เปลี่ยนมาเป็นชื่อปัจจุบัน เมื่อปี พ.ศ. 2482 ตามประกาศรัฐนิยม ฉบับที่ 1 ของรัฐบาลจอมพล ป. พิบูลสงคราม ให้ใช้ชื่อ ประเทศ ประชาชน และสัญชาติว่า \"ไทย\" โดยในช่วงต่อมาได้เปลี่ยนกลับเป็นสยามเมื่อปี พ.ศ. 2488 ในช่วงเปลี่ยนนายกรัฐมนตรี แต่ในที่สุดได้เปลี่ยนกลับมาชื่อไทยอีกครั้งในปี พ.ศ. 2491 ซึ่งเป็นช่วงที่จอมพล ป. พิบูลสงครามเป็นนายกรัฐมนตรีในสมัยต่อมา ช่วงแรกเปลี่ยนเฉพาะชื่อภาษาไทยเท่านั้น ชื่อภาษาฝรั่งเศส[2]และอังกฤษคงยังเป็น \"Siam\" อยู่จนกระทั่งเดือนเมษายน พ.ศ. 2491 จึงได้เปลี่ยนชื่อภาษาฝรั่งเศสเป็น \"Thaïlande\" และภาษาอังกฤษเป็น \"Thailand\" อย่างในปัจจุบัน อย่างไรก็ตาม ชื่อ สยาม ยังเป็นที่รู้จักแพร่หลายทั้งในและต่างประเทศ.\n" + -"\n" + -"การเมืองการปกครอง\n" + -"\n" + -"เดิมประเทศไทยมีการปกครองระบอบสมบูรณาญาสิทธิราชย์ จนกระทั่งวันที่ 24 มิถุนายน พ.ศ. 2475 คณะราษฎรได้ทำการเปลี่ยนแปลงการปกครองเป็นราชาธิปไตยภายใต้รัฐธรรมนูญ โดยแบ่งอำนาจเป็นสามฝ่าย ได้แก่ ฝ่ายบริหาร ฝ่ายนิติบัญญัติและฝ่ายตุลาการ โดยฝ่ายบริหารจะมีนายกรัฐมนตรีเป็นหัวหน้ารัฐบาลซึ่งมากจากการแต่งตั้ง ฝ่ายนิติบัญญัติ ได้แก่ สภานิติบัญญัติแห่งชาติ และฝ่ายตุลาการ คือ ศาลยุติธรรม ศาลรัฐธรรมนูญ และศาลปกครอง\n" + -"\n" + -"ปัจจุบัน ประเทศไทยอยู่ภายใต้การปกครองระบอบเผด็จการทหาร โดยมีรัฐบาลชั่วคราวซึ่งแต่งตั้งโดยคณะมนตรีความมั่นคงแห่งชาติ หลังเกิดเหตุการณ์รัฐประหารเมื่อคืนวันที่ 19 กันยายน พ.ศ. 2549\n" + -"\n" + -"เขตการปกครอง\n" + -"\n" + -"ประเทศไทยแบ่งเขตการบริหารออกเป็น การบริหารราชการส่วนภูมิภาค ได้แก่จังหวัด 75 จังหวัด นอกจากนั้นยังมีการปกครองส่วนท้องถิ่น ได้แก่ กรุงเทพมหานคร เมืองพัทยา องค์การบริหารส่วนจังหวัด เทศบาล และองค์การบริหารส่วนตำบล ส่วน'สุขาภิบาล'นั้นถูกยกฐานะไปเป็นเทศบาลทั้งหมดในปี พ.ศ. 2542\n" + -"\n" + -" รายชื่อจังหวัดทั้งหมดดูเพิ่มเติมที่ จังหวัดในประเทศไทย\n" + -"\n" + -"เมืองใหญ่ / จังหวัดใหญ่\n" + -"ประเทศไทย จังหวัดในประเทศไทย\n" + -"ประเทศไทย จังหวัดในประเทศไทย\n" + -"กรุงเทพมหานครริมแม่น้ำเจ้าพระยา\n" + -"กรุงเทพมหานครริมแม่น้ำเจ้าพระยา\n" + -"\n" + -"นอกจากกรุงเทพมหานครแล้ว มีหลายเมืองที่มีประชากรอยู่เป็นจำนวนมาก (ข้อมูลเดือนตุลาคม พ.ศ. 2549 ของ กรมการปกครอง กระทรวงมหาดไทย ) โดยเรียงลำดับตามตารางด้านล่าง โดยดูจากจำนวนประชากรในเขตเทศบาลและกรุงเทพมหานคร ซึ่งจะแสดงประชากรในเขตเมืองได้อย่างแท้จริง\n" + -"อันดับ เมือง / เทศบาล จำนวนประชากร จังหวัด\n" + -"1 กรุงเทพมหานคร 6,121,672 กรุงเทพมหานคร\n" + -"2 นนทบุรี 266,941 นนทบุรี\n" + -"3 ปากเกร็ด 167,138 นนทบุรี\n" + -"4 หาดใหญ่ 157,678 สงขลา\n" + -"5 เชียงใหม่ 150,805 เชียงใหม่\n" + -"6 นครราชสีมา 149,938 นครราชสีมา\n" + -"7 อุดรธานี 142,670 อุดรธานี\n" + -"8 สุราษฎร์ธานี 124,665 สุราษฎร์ธานี\n" + -"9 ขอนแก่น 121,283 ขอนแก่น\n" + -"10 นครศรีธรรมราช 106,293 นครศรีธรรมราช\n" + -"\n" + -"นอกจากนี้ยังมีการเรียงลำดับประชากรตามจังหวัดได้ดังต่อไปนี้\n" + -"อันดับ จังหวัด จำนวนประชากร ภาค\n" + -"1 กรุงเทพมหานคร 6,121,672 ภาคกลาง\n" + -"2 นครราชสีมา 2,546,763 ภาคตะวันออกเฉียงเหนือ\n" + -"3 อุบลราชธานี 1,774,808 ภาคตะวันออกเฉียงเหนือ\n" + -"4 ขอนแก่น 1,747,542 ภาคตะวันออกเฉียงเหนือ\n" + -"5 เชียงใหม่ 1,650,009 ภาคเหนือ\n" + -"6 บุรีรัมย์ 1,531,430 ภาคตะวันออกเฉียงเหนือ\n" + -"7 อุดรธานี 1,523,802 ภาคตะวันออกเฉียงเหนือ\n" + -"8 นครศรีธรรมราช 1,504,420 ภาคใต้\n" + -"9 ศรีสะเกษ 1,443,975 ภาคตะวันออกเฉียงเหนือ\n" + -"10 สุรินทร์ 1,374,700 ภาคตะวันออกเฉียงเหนือ\n" + -"\n" + -" ดูข้อมูลทั้งหมดที่ เมืองใหญ่ของประเทศไทยเรียงตามจำนวนประชากร และ จังหวัดในประเทศไทยเรียงตามจำนวนประชากร\n" + -"\n" + -"ภูมิอากาศและภูมิประเทศ\n" + -"\n" + -"ภูมิประเทศ\n" + -"ประเทศไทย สภาพทางภูมิศาสตร์\n" + -"ประเทศไทย สภาพทางภูมิศาสตร์\n" + -"\n" + -"ประเทศไทยมีสภาพทางภูมิศาสตร์ที่หลากหลาย ภาคเหนือประกอบด้วยเทือกเขาจำนวนมาก จุดที่สูงที่สุด คือ ดอยอินทนนท์ (2,576 เมตร) ในจังหวัดเชียงใหม่ ภาคตะวันออกเฉียงเหนือเป็นที่ราบสูงโคราชติดกับแม่น้ำโขงทางด้านตะวันออก ภาคกลางเป็นที่ราบลุ่มแม่น้ำเจ้าพระยา ซึ่งสายน้ำไหลลงสู่อ่าวไทย ภาคใต้มีจุดที่แคบลง ณ คอคอดกระแล้วขยายใหญ่เป็นคาบสมุทรมลายู\n" + -"\n" + -" * เมื่อเปรียบเทียบพื้นที่ของประเทศไทย กับ ประเทศอื่น จะได้ดังนี้\n" + -" o ประเทศพม่า ใหญ่กว่าประเทศไทยประมาณ 1.3 เท่า\n" + -" o ประเทศอินโดนีเซีย ใหญ่กว่าประมาณ 3.7 เท่า\n" + -" o ประเทศอินเดีย ใหญ่กว่าประมาณ 6.4 เท่า\n" + -" o ประเทศจีน และ สหรัฐอเมริกา ใหญ่กว่าประมาณ 19 เท่า\n" + -" o ประเทศรัสเซีย ใหญ่กว่าประมาณ 33 เท่า\n" + -" o ขนาดใกล้เคียงกับ ประเทศฝรั่งเศส ประเทศสวีเดน และ ประเทศสเปน\n" + -"\n" + -"วันที่ 26 ธันวาคม พ.ศ. 2547 ได้มีเหตุการณ์คลื่นสึนามิเกิดขึ้นก่อความเสียหายในเขตภาคใต้ของประเทศไทย\n" + -"\n" + -"ภูมิอากาศ\n" + -"\n" + -"ภูมิอากาศของไทยเป็นแบบเขตร้อน อากาศร้อนที่สุดในเดือนเมษายน-พฤษภาคม โดยจะมีฝนตกและเมฆมากจากลมมรสุมตะวันตกเฉียงใต้ในช่วงกลางเดือนพฤษภาคม-เดือนตุลาคม ส่วนในเดือนพฤศจิกายนถึงกลางเดือนมีนาคม อากาศแห้ง และหนาวเย็นจากลมมรสุมตะวันออกเฉียงเหนือ ยกเว้นภาคใต้ที่มีอากาศร้อนชื้นตลอดทั้งปี\n" + -"\n" + -"เศรษฐกิจ\n" + -"\n" + -"เศรษฐกิจหลักของประเทศ\n" + -"\n" + -"เกษตรกรรม อุตสาหกรรม การท่องเที่ยว การบริการ และ ทรัพยากรธรรมชาติ ถือเป็นเศรษฐกิจหลักที่ทำรายได้ให้กับคนในประเทศ โดยภาพรวมทางเศรษฐกิจอ้างอิงเมื่อ พ.ศ. 2546 มี GDP 5,930.4 พันล้านบาท ส่งออกมูลค่า 78.1 พันล้านเหรียญสหรัฐ ในขณะที่นำเข้า 74.3 พันล้านเหรียญสหรัฐ[3]\n" + -"ภาพพันธุ์ข้าวจากกรมวิชาการเกษตร\n" + -"ภาพพันธุ์ข้าวจากกรมวิชาการเกษตร\n" + -"ภาพยางพาราจากกรมวิชาการเกษตร\n" + -"ภาพยางพาราจากกรมวิชาการเกษตร\n" + -"\n" + -"ในด้านเกษตรกรรม ข้าว ถือเป็นผลผลิตที่สำคัญที่สุด เป็นผู้ผลิตและส่งออกข้าว เป็นอันดับหนึ่งของโลก ด้วยสัดส่วนการส่งออก ร้อยละ 36 รองลงมาคือ เวียดนาม ร้อยละ 20 อินเดีย ร้อยละ 18 สหรัฐอเมริกา ร้อยละ14 ปากีสถาน ร้อยละ 12 ตามลำดับ [4] พืชผลทางการเกษตรอื่นๆ ได้แก่ ยางพารา ผักและผลไม้ต่างๆ มีการเพาะเลี้ยงปศุสัตว์เช่น วัว สุกร เป็ด ไก่ สัตว์น้ำทั้งปลาน้ำจืด ปลาน้ำเค็มในกระชัง นากุ้ง เลี้ยงหอย รวมถึงการประมงทางทะเล ปี 2549 ไทยมีการส่งออกกุ้งไปสหรัฐฯ 177,717.29 ตัน มูลค่า 45,434.57 ล้านบาท [5]\n" + -"\n" + -"อุตสาหกรรมที่สำคัญ ได้แก่ อุตสาหกรรมแปรรูปทางการเกษตร สิ่งทอ อิเล็กทรอนิกส์ รถยนต์ ส่วนทรัพยากรธรรมชาติที่สำคัญเช่น ดีบุก ก๊าซธรรมชาติ จากข้อมูลปี พ.ศ. 2547 มีการผลิตสิ่งทอมูลค่า 211.4 พันล้านบาท แผงวงจรรวม 196.4 พันล้านบาท อาหารทะเลกระป๋อง 36.5 พันล้านบาท สับปะรดกระป๋อง 11.1 พันล้านบาท รถยนต์ส่วนบุคคล 2.99 แสนคัน รถบรรทุก รถกระบะ และอื่นๆ รวม 6.28 แสนคัน จักรยานยนต์ 2.28 ล้านคัน ดีบุก 694 ตัน ก๊าซธรรมชาติ 789 พันล้านลูกบาศก์ฟุต น้ำมันดิบ]] 31.1 ล้านบาร์เรล [6]\n" + -"เกาะพีพี สถานท่องเที่ยวที่สำคัญแห่งหนึ่งของประเทศ\n" + -"เกาะพีพี สถานท่องเที่ยวที่สำคัญแห่งหนึ่งของประเทศ\n" + -"\n" + -"ส่วนด้านการท่องเที่ยว การบริการและโรงแรม ในปี พ.ศ. 2547 มีนักท่องเที่ยวรวม 11.65 ล้านคน 56.52% มาจากเอเชียตะวันออกและอาเซียน (โดยเฉพาะมาเลเซียคิดเป็น 11.97% ญี่ปุ่น 10.33%) ยุโรป 24.29% ทวีปอเมริกาเหนือและใต้รวมกัน 7.02% [7] สถานที่ท่องเที่ยวที่สำคัญได้แก่ กรุงเทพมหานคร พัทยา ภาคใต้ฝั่งทะเลอันดามัน จังหวัดเชียงใหม่\n" + -"\n" + -"การคมนาคม\n" + -"\n" + -"ดูบทความหลัก การคมนาคมในประเทศไทย\n" + -"\n" + -"การคมนาคมในประเทศไทย ส่วนใหญ่ประกอบด้วย การเดินทางโดยรถยนต์ และ จักรยานยนต์ ทางหลวงสายหลักในประเทศไทย ได้แก่ ถนนพหลโยธิน (ทางหลวงหมายเลข 1) ถนนมิตรภาพ (ทางหลวงหมายเลข 2) ถนนสุขุมวิท (ทางหลวงหมายเลข 3) และถนนเพชรเกษม (ทางหลวงหมายเลข 4) และยังมีทางหลวงพิเศษระหว่างเมือง (มอเตอร์เวย์) ใน 2 เส้นทางคือ มอเตอร์เวย์กรุงเทพฯ-ชลบุรี (ทางหลวงหมายเลข 7) และถนนกาญจนาภิเษก (วงแหวนรอบนอกกรุงเทพมหานคร - ทางหลวงหมายเลข 9) นอกจากนี้ระบบขนส่งมวลชนจะมีการบริการตามเมืองใหญ่ต่างๆ ได้แก่ระบบรถเมล์ และรถไฟ รวมถึงระบบที่เริ่มมีการใช้งาน รถไฟลอยฟ้า และรถไฟใต้ดิน และในหลายพื้นที่จะมีการบริการรถสองแถว รวมถึงรถรับจ้างต่างๆ ได้แก่ แท็กซี่ เมลเครื่อง มอเตอร์ไซค์รับจ้าง และ รถตุ๊กตุ๊ก ในบางพื้นที่ ที่อยู่ริมน้ำจะมีเรือรับจ้าง และแพข้ามฟาก บริการ\n" + -"รถไฟฟ้าบีทีเอส สถานีอโศก\n" + -"รถไฟฟ้าบีทีเอส สถานีอโศก\n" + -"\n" + -"สำหรับการคมนาคมทางอากาศนั้น ปัจจุบันประเทศไทยได้เปิดใช้ท่าอากาศยานสุวรรณภูมิ ซึ่งเป็นท่าอากาศยานที่มีขนาดตัวอาคารที่ใหญ่ที่สุดในโลก และมีหอบังคับการบินที่สูงที่สุดในโลก ด้วยความสูง 132.2 เมตร ซึ่งรองรับผู้โดยสารได้ 45 ล้านคนต่อปี โดยเปิดอย่างเป็นทางการตั้งแต่วันที่ 29 กันยายน พ.ศ. 2549 ทดแทนท่าอากาศยานนานาชาติกรุงเทพ (ดอนเมือง) ที่เปิดใช้งานมานานถึง 92 ปี\n" + -"\n" + -"ส่วนการคมนาคมทางน้ำ ประเทศไทยมีท่าเรือหลักๆ คือ ท่าเรือกรุงเทพ(คลองเตย) และท่าเรือแหลมฉบัง\n" + -"\n" + -"การสื่อสาร\n" + -"\n" + -" * ระบบโทรศัพท์ในประเทศไทยมีโทรศัพท์พื้นฐาน 7.035 ล้านหมายเลข (2548) และโทรศัพท์มือถือ 27.4 ล้านหมายเลข (2548) [8]\n" + -" * สถานีวิทยุ: คลื่นเอฟเอ็ม 334 สถานี , คลื่นเอเอ็ม 204 สถานี และ คลื่นสั้น 6 สถานี (2542) โดยมีจำนวนผู้ใช้วิทยุ 13.96 ล้านคน (2540) [8]\n" + -" * สถานีโทรทัศน์ มี 6 ช่องสถานี (โดยทุกช่องสถานีแม่ข่ายอยู่ในกรุงเทพ) มีสถานีเครือข่ายทั้งหมด 111 สถานี และจำนวนผู้ใช้โทรทัศน์ 15.19 ล้านคน (2540) [8]\n" + -" * รหัสโดเมนอินเทอร์เน็ตใช้รหัส th\n" + -"\n" + -"สังคม\n" + -"วัดพระศรีรัตนศาสดาราม กรุงเทพมหานคร\n" + -"วัดพระศรีรัตนศาสดาราม กรุงเทพมหานคร\n" + -"\n" + -"ชนชาติ\n" + -"\n" + -"ในประเทศไทย ถือได้ว่า มีความหลากหลายทางเชื้อชาติ มีทั้ง ชาวไทย ชาวไทยเชื้อสายลาว ชาวไทยเชื้อสายมอญ ชาวไทยเชื้อสายเขมร รวมไปถึงกลุ่มชาวไทยเชื้อสายจีน ชาวไทยเชื้อสายมลายู ชาวชวา(แขกแพ) ชาวจาม(แขกจาม) ชาวเวียด ไปจนถึงชาวพม่า และชาวไทยภูเขาเผ่าต่างๆ เช่น ชาวกะเหรี่ยง ชาวลีซอ ชาวอ่าข่า ชาวอีก้อ ชาวม้ง ชาวเย้า รวมไปจนถึงชาวส่วย ชาวกูบ ชาวกวย ชาวจะราย ชาวระแดว์ ชาวข่า ชาวขมุ ซึ่งมีในปัจจุบันก็มีความสำคัญมาก ต่อวิถีชีวิต และวัฒนธรรมไทยในปัจจุบัน\n" + -"\n" + -"ประชากรชาวไทย 75% ชาวไทยเชื้อสายจีน 14% และอื่นๆ 11% [8]\n" + -"\n" + -" ดูเพิ่มที่ ชาวไทย\n" + -"\n" + -"ศาสนา\n" + -"พระพุทธชินราช วัดพระศรีรัตนมหาธาตุวรมหาวิหาร จังหวัดพิษณุโลก\n" + -"พระพุทธชินราช วัดพระศรีรัตนมหาธาตุวรมหาวิหาร จังหวัดพิษณุโลก\n" + -"\n" + -"ประมาณร้อยละ 95 ของประชากรไทยนับถือศาสนาพุทธซึ่งเป็นศาสนาประจำชาติ(โดยพฤตินัย) นิกายเถรวาท ศาสนาอิสลามประมาณร้อยละ 4 (ส่วนใหญ่เป็นชาวไทยทางภาคใต้ตอนล่าง) ศาสนาคริสต์และศาสนาอื่นประมาณร้อยละ 1\n" + -"\n" + -" ดูเพิ่มที่ พระพุทธศาสนาในประเทศไทย\n" + -"\n" + -"การศึกษา\n" + -"\n" + -"ในทางกฎหมาย รัฐบาลจะต้องจัดการศึกษาให้ขั้นพื้นฐานสิบสองปี แต่การศึกษาขั้นบังคับของประเทศไทยในปัจจุบันคือเก้าปี บุคคลทั่วไปจะเริ่มจากระดับชั้นอนุบาล เป็นการเตรียมความพร้อมก่อนการเรียนตามหลักสูตรพื้นฐาน ต่อเนื่องด้วยระดับประถมศึกษาและมัธยมศึกษาตอนต้น หลังจากจบการศึกษาระดับมัธยมต้น สามารถเลือกได้ระหว่างศึกษาต่อสายสามัญ ระดับมัธยมศึกษาตอนปลายเพื่อศึกษาต่อในระดับมหาวิทยาลัย หรือเลือกศึกษาต่อสายวิชาชีพ ในวิทยาลัยเทคนิค หรือพาณิชยการ หรือเลือกศึกษาต่อในสถาบันทางทหารหรือตำรวจ\n" + -"\n" + -"โรงเรียนและมหาวิทยาลัยในประเทศไทย แบ่งออกเป็น 2 ประเภทหลักได้แก่ โรงเรียนรัฐบาล และโรงเรียนเอกชน และ มหาวิทยาลัยรัฐบาล และมหาวิทยาลัยเอกชน โดยโรงเรียนรัฐบาลและมหาวิทยาลัยรัฐบาล จะเสียค่าเล่าเรียนน้อยกว่า โรงเรียนเอกชนและมหาวิทยาลัยเอกชน\n" + -"\n" + -" ดูเพิ่มที่ รายชื่อสถาบันอุดมศึกษาในประเทศไทย\n" + -"\n" + -"ภาษา\n" + -"\n" + -" ดูบทความหลักที่ ภาษาในประเทศไทย\n" + -"\n" + -"ภาษาไทย ประเทศไทยมีภาษาไทยเป็นภาษาราชการ ภาษาพูดของคนไทยมีมาแต่เมื่อไรยังไม่เป็นที่ทราบแน่ชัด แต่จากการสันนิฐานน่าจะมีมากว่า 4,000 ปีแล้ว ส่วนตัวอักษรนั้นเพิ่งมีการประดิษฐ์ขึ้นอย่างเป็นทางการในสมัยสุโขทัยโดย พ่อขุนรามคำแหงมหาราช ส่วนภาษาอื่นที่มีการใช้อยู่บ้าง เช่น ภาษาอังกฤษ ภาษาจีน เป็นต้น\n" + -"\n" + -"ศิลปะและวัฒนธรรม\n" + -"พระที่นั่งไอศวรรย์ทิพย์อาสน์ พระราชวังบางปะอิน จังหวัดพระนครศรีอยุธยา\n" + -"พระที่นั่งไอศวรรย์ทิพย์อาสน์ พระราชวังบางปะอิน จังหวัดพระนครศรีอยุธยา\n" + -"\n" + -"ศิลปะไทยมีลักษณะเฉพาะตัวค่อนข้างสูง โดยมีความกลมกลืนและคล้ายคลึงกับศิลปวัฒนธรรมเพื่อนบ้านอยู่บ้าง แต่ด้วยการสืบทอดและการสร้างสรรค์ใหม่ ทำให้ศิลปะไทยมีเอกลักษณ์สูง\n" + -"\n" + -" * จิตรกรรม งานจิตรกรรมไทยนับว่าเป็นงานศิลปะชั้นสูง ได้รับการสืบทอดมาช้านาน มักปรากฏในงานจิตรกรรมฝาผนัง ตามวัดวาอาราม รวมทั้งในสมุดข่อยโบราณ งานจิตรกรรมไทยยังเกี่ยวข้องกับงานศิลปะแขนงอื่นๆ เช่น งานลงรักปิดทอง ภาพวาดพระบฏ เป็นต้น\n" + -" * ประติมากรรม เดิมนั้นช่างไทยทำงานประติมากรรมเฉพาะสิ่งศักดิ์สิทธิ์ เช่น พระพุทธรูป เทวรูป โดยมีสกุลช่างต่างๆ นับตั้งแต่ก่อนสมัยสุโขทัย เรียกว่า สกุลช่างเชียงแสน สกุลช่างสุโขทัย อยุธยา และกระทั่งรัตนโกสินทร์ โดยใช้ทองสำริดเป็นวัสดุหลักในงานประติมากรรม เนื่องจากสามารถแกะแบบด้วยขี้ผึ้งและตกแต่งได้ แล้วจึงนำไปหล่อโลหะ เมื่อเทียบกับประติมากรรมศิลาในยุคก่อนนั้น งานสำริดนับว่าอ่อนช้อยงดงามกว่ามาก\n" + -" * สถาปัตยกรรม สถาปัตยกรรมไทยมีปรากฏให้เห็นในชั้นหลัง เนื่องจากงานสถาปัตยกรรมส่วนใหญ่ชำรุดทรุดโทรมได้ง่าย โดยเฉพาะงานไม้ ไม่ปรากฏร่องรอยสมัยโบราณเลย สถาปัตยกรรมไทยมีให้เห็นอยู่ในรูปของบ้านเรือนไทย โบสถ์ วัด และปราสาทราชวัง ซึ่งล้วนแต่สร้างขึ้นให้เหมาะสมกับสภาพอากาศและการใช้สอยจริง\n" + -"\n" + -" ดูเพิ่มที่ ศิลปะไทย\n" + -"\n" + -"กีฬา\n" + -"ราชมังคลากีฬาสถาน การกีฬาแห่งประเทศไทย\n" + -"ราชมังคลากีฬาสถาน การกีฬาแห่งประเทศไทย\n" + -"\n" + -"กีฬาที่นิยมมากที่สุดในประเทศไทยได้แก่ ฟุตบอล โดยในการแข่งขันระหว่างประเทศ ทีมชาติไทยได้เข้าเล่นและได้อันดับสูงสุดในเอเชียนคัพ ได้อันดับ 3 ใน เอเชียนคัพ 1972 กีฬาอื่นที่นิยมเล่นได้แก่ บาสเกตบอล มวย และแบดมินตัน โดยในประเทศไทยมีการจัดฟุตบอลอาชีพ โดยแบ่งแยกตามทีมประจำจังหวัด สำหรับกีฬาไทย ได้แก่ มวยไทย และ ตะกร้อ แม้จะมีความนิยมไม่เท่ากีฬาทั่วไป แต่ยังมีการเล่นโดยทั่วไปรวมถึงการเปิดสอนในโรงเรียน\n" + -"\n" + -"ประเทศไทยเป็นตัวแทนจัดงานเอเชียนเกมส์ 4 ครั้ง และซีเกมส์ ทั้งหมด 5 ครั้ง โดยจัดครั้งแรกที่ประเทศไทย\n" + -"\n" + -"นักกีฬาไทยที่มีชื่อเสียงมาก ได้แก่\n" + -"\n" + -" * นักมวย - เขาทราย แกแล็คซี่, สด จิตรลดา, สามารถ พยัคฆ์อรุณ, สมรักษ์ คำสิงห์\n" + -" * นักเทนนิส - ภราดร ศรีชาพันธุ์, แทมมารีน ธนสุกาญจน์, ดนัย อุดมโชค\n" + -" * นักว่ายน้ำ - รัฐพงษ์ ศิริสานนท์(ฉลามนุ้ก), ต่อวัย เสฎฐโสธร, ต่อลาภ เสฎฐโสธร\n" + -" * นักฟุตบอล - ปิยะพงษ์ ผิวอ่อน, เกียรติศักดิ์ เสนาเมือง\n" + -" * นักสนุกเกอร์ - ต๋อง ศิษย์ฉ่อย\n" + -" * นักกรีฑา - เรวดี ศรีท้าว\n" + -" * นักเทควันโด - เยาวภา บุรพลชัย\n" + -" * นักยกน้ำหนัก - อุดมพร พลศักดิ์, ปวีณา ทองสุก\n" + -" * นักกอล์ฟ - ธงชัย ใจดี\n" + -"\n" + -"วันสำคัญ\n" + -"\n" + -"วันสำคัญในประเทศไทยจะมีจำนวนมากโดยเฉพาะวันที่ไม่ใช่วันหยุดราชการ ซึ่งจะตั้งขึ้นหลังจากมีเหตุการณ์สำคัญเกิดขึ้น โดยวันชาติของประเทศไทยตรงกับวันที่ 5 ธันวาคม เป็น ตามวันพระราชสมภพ ของพระบาทสมเด็จพระเจ้าอยู่หัว ภูมิพลอดุลยเดช\n" + -"\n" + -" ดูบทความหลักที่ วันสำคัญในประเทศไทย\n" + -"\n" + -"ลำดับที่สำคัญ\n" + -"\n" + -" * พระมหากษัตริย์ไทยพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช เป็นพระมหากษัตริย์ที่ครองราชย์ในฐานะประมุขแห่งรัฐที่นานที่สุดในโลก\n" + -" * กรุงเทพฯ เป็นเมืองหลวงที่มีชื่อยาวที่สุดในโลก (169 ตัวอักษร)\n" + -" * ดัชนีเศรษฐกิจของประเทศไทย อยู่อันดับที่ 71 จาก 155 เขตเศรษฐกิจ ตาม Index of Economic Freedom\n" + -" * จังหวัดหนองคายได้รับการจัดอันดับจากนิตยสาร Modern Maturity ของสหรัฐเมื่อ พ.ศ. 2544 ว่าเป็นเมืองที่น่าอยู่สำหรับผู้สูงอายุชาวอเมริกันอันดับที่ 7 ของโลก [9]\n" + -" * Growth Competitiveness Index Ranking พ.ศ. 2546 อยู่อันดับที่ 34 จาก 104 [10]\n" + -" * ตึกใบหยก 2 เป็นตึกที่สูงที่สุดในประเทศไทย และสูงเป็นอันดับ 30 ของโลก พ.ศ. 2549\n" + -"\n" + -"อ้างอิง\n" + -"\n" + -" 1. ↑ 4th edition \"ANKOR an introduction to the temples\" Dawn Rooney ISBN: 962-217-683-6\n" + -" 2. ↑ ในสมัยก่อนนั้น (ตั้งแต่คริสต์ศตวรรษที่ 17 ในยุโรป) ภาษาสากลในการติดต่อระหว่างประเทศ (lingua franca) คือ ภาษาฝรั่งเศส เอกสารระหว่างประเทศจะใช้ภาษาฝรั่งเศสเป็นหลัก รวมถึงหนังสือเดินทางไทยรุ่นแรกๆ ด้วย\n" + -" 3. ↑ ดัชนีเศรษฐกิจประเทศไทย จากเว็บไซต์ธนาคารแห่งประเทศไทย\n" + -" 4. ↑ ข้าวไทย ย่างก้าวพัฒนา สร้างไทยเป็นศูนย์กลางข้าวโลก โดย เทคโนโลยีชาวบ้าน มติชน วันที่ 01 มิถุนายน พ.ศ. 2550 ปีที่ 19 ฉบับที่ 408\n" + -" 5. ↑ http://www.thairath.co.th/news.php?section=agriculture&content=52868\n" + -" 6. ↑ ผลผลิตของประเทศไทย จากเว็บไซต์ธนาคารแห่งประเทศไทย\n" + -" 7. ↑ ข้อมูลการท่องเที่ยว จากการท่องเที่ยวแห่งประเทศไทย (ข้อมูลเป็นไฟล์เอกเซล)\n" + -" 8. ↑ 8.0 8.1 8.2 8.3 รายละเอียดประเทศไทยจากเว็บซีไอเอ\n" + -" 9. ↑ http://207.5.46.81/tat_news/detail.asp?id=963\n" + -" 10. ↑ ข้อมูลจาก Webforum.org พ.ศ. 2546\n" + -"\n" + -"แหล่งข้อมูลอื่น\n" + -"Commons\n" + -"คอมมอนส์ มีภาพและสื่ออื่นๆ เกี่ยวกับ:\n" + -"ประเทศไทย\n" + -"ฟลิคเกอร์\n" + -"ฟลิคเกอร์ มีรูปภาพเกี่ยวกับ: ประเทศไทย\n" + -"\n" + -" * รัฐบาลไทย\n" + -" * การท่องเที่ยวแห่งประเทศไทย\n" + -" * ประเทศไทยศึกษา ห้องสมุดรัฐสภา สหรัฐอเมริกา\n" + -" * พจนานุกรมท่องเที่ยวไทย\n" + -" * แผนที่ประเทศไทย Longdo Map\n"; - -function get_most_popular(text) { - var i; - var frequencies = new Object(); - var letter; - for (i = 0; i < text.length; i++) { - letter = text.charAt(i); - if (typeof(frequencies[letter]) == 'undefined') - frequencies[letter] = 0; - frequencies[letter]++; - } - var most = []; - for (letter in frequencies) { - if (frequencies[letter] > 50) { - most.push(letter); - } - } - most.sort(); - return most; -} - - -var languages = new Array( - chinese, // 1 - cyrillic, // 2 - devanagari, // 3 - english, // 4 - greek, // 5 - hebrew, // 6 - japanese, // 7 - korean, // 8 - persian, // 9 - source, // 10 - thai); // 11 - - -var number_re = /[0-9]/; -var latin_lc = "[a-zA\u0631]"; -assertEquals(7, latin_lc.length); -var latin_lc_re = new RegExp(latin_lc); -var latin_lc_re2 = new RegExp(/[a-zA\u0631]/); - -assertEquals(13793, chinese.length, "chinese utf8 in source"); -assertEquals(60606, cyrillic.length, "cyrillic utf8 in source"); -assertEquals(20203, devanagari.length, "devanagari utf8 in source"); -assertEquals(37505, english.length, "english utf8 in source"); -assertEquals(30052, greek.length, "greek utf8 in source"); -assertEquals(25640, hebrew.length, "hebrew utf8 in source"); -assertEquals(31082, japanese.length, "japanese utf8 in source"); -assertEquals(12291, korean.length, "korean utf8 in source"); -assertEquals(13851, persian.length, "persian utf8 in source"); -assertEquals(177469, source.length, "source utf8 in source"); -assertEquals(18315, thai.length, "thai utf8 in source"); - -munged_sizes = new Array(17197, 2511, 2645, 3820, 3086, 2609, - 27231, 12972, 2014, 24943, 2773); - - -var i = 0; -for (idx in languages) { - i++; - var text = languages[idx]; - assertTrue(latin_lc_re.test(text), "latin_lc" + i); - assertTrue(latin_lc_re2.test(text), "latin_lc" + i); - assertTrue(number_re.test(text), "number " + i); - var most_popular = get_most_popular(text); - var idx; - var re = "([x"; - var last_c = -9999; - for (idx in most_popular) { - var c = most_popular[idx]; - if ("^]-\n\\".indexOf(c) == -1) { - if (c.charCodeAt(0) > last_c && - c.charCodeAt(0) - 20 < last_c) { - re += "-" + c; - last_c = -9999; - } else { - re += c; - last_c = c.charCodeAt(0); - } - } - } - re += "]+)"; - var char_class = new RegExp(re, "g"); - var munged = text.replace(char_class, "foo"); - assertEquals(munged_sizes[i - 1], munged.length, "munged size " + i); -} - - -function hex(x) { - x &= 15; - if (x < 10) { - return String.fromCharCode(x + 48); - } else { - return String.fromCharCode(x + 97 - 10); - } -} - - -function dump_re(re) { - var out = ""; - for (var i = 0; i < re.length; i++) { - var c = re.charCodeAt(i); - if (c >= 32 && c <= 126) { - out += re[i]; - } else if (c < 256) { - out += "\\x" + hex(c >> 4) + hex(c); - } else { - out += "\\u" + hex(c >> 12) + hex(c >> 8) + hex(c >> 4) + hex(c); - } - } - print ("re = " + out); -} - -var thai_l_thingy = "\u0e44"; -var thai_l_regexp = new RegExp(thai_l_thingy); -var thai_l_regexp2 = new RegExp("[" + thai_l_thingy + "]"); -assertTrue(thai_l_regexp.test(thai_l_thingy)); -assertTrue(thai_l_regexp2.test(thai_l_thingy)); diff --git a/implementation-contributed/v8/mjsunit/unicodelctest-no-optimization.js b/implementation-contributed/v8/mjsunit/unicodelctest-no-optimization.js deleted file mode 100644 index 0b31c560e07..00000000000 --- a/implementation-contributed/v8/mjsunit/unicodelctest-no-optimization.js +++ /dev/null @@ -1,4915 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Flags: --noregexp-optimization - -// This regexp should pick up all lower case characters. The non-BMP -// characters are coded using explicit surrogate pairs. -var re = /^([a-zªµºß-öø-ÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķ-ĸĺļľŀłńņň-ʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżž-ƀƃƅƈƌ-ƍƒƕƙ-ƛƞơƣƥƨƪ-ƫƭưƴƶƹ-ƺƽ-ƿdžljnjǎǐǒǔǖǘǚǜ-ǝǟǡǣǥǧǩǫǭǯ-ǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳ-ȹȼȿ-ɀɂɇɉɋɍɏ-ʓʕ-ʯͱͳͷͻ-ͽΐά-ώϐ-ϑϕ-ϗϙϛϝϟϡϣϥϧϩϫϭϯ-ϳϵϸϻ-ϼа-џѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎ-ӏӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣա-ևᴀ-ᴫᵢ-ᵷᵹ-ᶚḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕ-ẝẟạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶ-ᾷιῂ-ῄῆ-ῇῐ-ΐῖ-ῗῠ-ῧῲ-ῴῶ-ῷⁱⁿℊℎ-ℏℓℯℴℹℼ-ℽⅆ-ⅉⅎↄⰰ-ⱞⱡⱥ-ⱦⱨⱪⱬⱱⱳ-ⱴⱶ-ⱼⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣ-ⳤⴀ-ⴥꙁꙃꙅꙇꙉꙋꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꜣꜥꜧꜩꜫꜭꜯ-ꜱꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝱ-ꝸꝺꝼꝿꞁꞃꞅꞇꞌff-stﬓ-ﬗa-z]|\ud801[\udc28-\udc4f]|\ud835[\udc1a-\udc33\udc4e-\udc54\udc56-\udc67\udc82-\udc9b\udcb6-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udccf\udcea-\udd03\udd1e-\udd37\udd52-\udd6b\udd86-\udd9f\uddba-\uddd3\uddee-\ude07\ude22-\ude3b\ude56-\ude6f\ude8a-\udea5\udec2-\udeda\udedc-\udee1\udefc-\udf14\udf16-\udf1b\udf36-\udf4e\udf50-\udf55\udf70-\udf88\udf8a-\udf8f\udfaa-\udfc2\udfc4-\udfc9\udfcb])$/; - - -var answer = get_answer(); -var fuzz_answer = get_fuzz_answer(); - - -for (var i = 0; i < 0x10000; i++) { - var s = String.fromCharCode(i); - assertTrue(!!re.test(s) == !!answer[i]); -} - - -function BuildSurrogatePair(c) { - return String.fromCharCode(+0xd800 + (c >> 10)) + - String.fromCharCode(+0xdc00 + (c & 0x3ff)); -} - -fuzz_index = 0; -fuzz(); - -for (var i = 0x10000; i < 0x110000 && i < answer.length + 256; i++) { - var c = i - 0x10000; - assertTrue(!!re.test(BuildSurrogatePair(c)) == !!answer[i]); -} - -var seed = 49734321; - -function rand() { - // To make the test results predictable, we use a 100% deterministic - // alternative. - // Robert Jenkins' 32 bit integer hash function. - seed = seed & 0xffffffff; - seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff; - seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff; - seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff; - seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff; - seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff; - seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff; - return (seed & 0xffff) -} - - -// Random character. -function rc(last) { - var c = rand(); - // Increase the concentration of problematic values around the page - // edges. - if (rand() & 1) { - c = (c & 0xff80) + (c & 3) - 2; - } - // Increase the concentration of problematic values around the ends. - if (rand() & 31 == 0) c = 0xfff8 + (rand() & 7) - if (rand() & 31 == 0) c = (rand() & 7) - - // Increase the concentration of values near each other. - if (rand() & 1) c = last + (rand() & 15) - 8; - return c & 0xffff; // Only code unit values. -} - - -function fuzz() { - fuzz_index = 0; - seed = 49734321; - for (var i = 0; i < 1000; i++) { - print(i); - var len = rand() & 0x1f; - var ranges = new Array(len); - var last = rand(); - for (var j = 0; j < len; j++) { - ranges.push(last); - last = rc(last); - } - ranges.sort(function (a, b) { return a - b }); - var cc = ""; - for (var j = 0; j < len; j++) { - var ch = String.fromCharCode(ranges[j]); - if (ch == '\\' || ch == ']') ch = '\\' + ch; - cc += ch; - if (j < len - 1 && rand() & 1) cc += '-'; - } - var negated = (last & 2) != 0; - var prefix = negated ? "[^" : "["; - var re = new RegExp(prefix + cc + "]"); - for (var j = 0; j < len; j++) { - retest(re, (ranges[j] - 1), negated); - retest(re, (ranges[j]), negated); - retest(re, (ranges[j] + 1), negated); - } - } -} - - -function retest(re, code, negated) { - var s = String.fromCharCode(code >>> 0); - assertTrue(negated != (!!re.test(s) == !!fuzz_answer[fuzz_index++])); -} - - -function get_fuzz_answer() { - // Test data generated with V8 version 3.7. -return [ - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0, - - - 0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0, - 0,1,1,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - - 0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0, - 0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, -]; -} - - -function get_answer() { - // Test data generated with V8 version 3.7. -return [ - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , ,1, , , , , , , , , , ,1, , , , ,1, , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1,1,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1, ,1, ,1, ,1, , - 1, ,1, ,1, ,1, ,1,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, , ,1, ,1, ,1,1, - 1, , ,1, ,1, , ,1, , , ,1,1, , , , ,1, , ,1, , , ,1,1,1, , ,1, , - ,1, ,1, ,1, , ,1, ,1,1, ,1, , ,1, , , ,1, ,1, , ,1,1, , ,1,1,1, - , , , , , ,1, , ,1, , ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1, , ,1, ,1, , , ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1,1,1,1,1, , ,1, , ,1, - 1, ,1, , , , ,1, ,1, ,1, ,1, ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , ,1, ,1, , , ,1, , , ,1,1,1, , , - , , , , , , , , , , , , , , , ,1, , , , , , , , , , , , , , , , - , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1, , , ,1,1,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1,1,1, ,1, , ,1, , ,1,1, , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, , , , , , , , , ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - , ,1, ,1, ,1, ,1, ,1, ,1, ,1,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1,1,1,1,1,1,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1,1, , , , , , , , , , , - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1,1,1,1, , , , , , , , , - 1,1,1,1,1,1, , , , , , , , , , ,1,1,1,1,1,1,1,1, , , , , , , , , - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1,1,1,1, , , , , , , , , - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1, ,1,1, , , , , , ,1, , - , ,1,1,1, ,1,1, , , , , , , , ,1,1,1,1, , ,1,1, , , , , , , , , - 1,1,1,1,1,1,1,1, , , , , , , , , , ,1,1,1, ,1,1, , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , ,1, , , , , , , , , , , , , ,1, - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , ,1, , , ,1,1, , , ,1, , , , , , , , , , , , , - , , , , , , , , , , , , , , ,1, , , , ,1, , , , ,1, , ,1,1, , , - , , , , , ,1,1,1,1, , , , ,1, , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , ,1, , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , - ,1, , , ,1,1, ,1, ,1, ,1, , , , ,1, ,1,1, ,1,1,1,1,1,1,1, , , , - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1,1, , , , , , , , , , , , , , , , , , , , , , , , , , , , - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - , , ,1, ,1, ,1, ,1, ,1, ,1, , , , , , , , , , , , , , , , , , , - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1,1,1,1,1,1, ,1, ,1, , ,1, - ,1, ,1, ,1, ,1, , , , ,1, , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - 1,1,1,1,1,1,1, , , , , , , , , , , , ,1,1,1,1,1, , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , - , , , , , , , , , , , , , ,1,1,1,1,1,1,1, ,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , - , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , - , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1, ,1, ,1,1,1, - 1,1,1,1, ,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , , ,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , - , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , - , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - , , , , , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , - , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , - , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , - , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , , , - , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1, - 1,1, , , , , , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1, , , , , - , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1, , , , , , , , , , , - , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1, ,1,1,1,1,1,1, ,1]; -} diff --git a/implementation-contributed/v8/mjsunit/unicodelctest.js b/implementation-contributed/v8/mjsunit/unicodelctest.js deleted file mode 100644 index 95d6dac78f0..00000000000 --- a/implementation-contributed/v8/mjsunit/unicodelctest.js +++ /dev/null @@ -1,4913 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// This regexp should pick up all lower case characters. The non-BMP -// characters are coded using explicit surrogate pairs. -var re = /^([a-zªµºß-öø-ÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķ-ĸĺļľŀłńņň-ʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżž-ƀƃƅƈƌ-ƍƒƕƙ-ƛƞơƣƥƨƪ-ƫƭưƴƶƹ-ƺƽ-ƿdžljnjǎǐǒǔǖǘǚǜ-ǝǟǡǣǥǧǩǫǭǯ-ǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳ-ȹȼȿ-ɀɂɇɉɋɍɏ-ʓʕ-ʯͱͳͷͻ-ͽΐά-ώϐ-ϑϕ-ϗϙϛϝϟϡϣϥϧϩϫϭϯ-ϳϵϸϻ-ϼа-џѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎ-ӏӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣա-ևᴀ-ᴫᵢ-ᵷᵹ-ᶚḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕ-ẝẟạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶ-ᾷιῂ-ῄῆ-ῇῐ-ΐῖ-ῗῠ-ῧῲ-ῴῶ-ῷⁱⁿℊℎ-ℏℓℯℴℹℼ-ℽⅆ-ⅉⅎↄⰰ-ⱞⱡⱥ-ⱦⱨⱪⱬⱱⱳ-ⱴⱶ-ⱼⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣ-ⳤⴀ-ⴥꙁꙃꙅꙇꙉꙋꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꜣꜥꜧꜩꜫꜭꜯ-ꜱꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝱ-ꝸꝺꝼꝿꞁꞃꞅꞇꞌff-stﬓ-ﬗa-z]|\ud801[\udc28-\udc4f]|\ud835[\udc1a-\udc33\udc4e-\udc54\udc56-\udc67\udc82-\udc9b\udcb6-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udccf\udcea-\udd03\udd1e-\udd37\udd52-\udd6b\udd86-\udd9f\uddba-\uddd3\uddee-\ude07\ude22-\ude3b\ude56-\ude6f\ude8a-\udea5\udec2-\udeda\udedc-\udee1\udefc-\udf14\udf16-\udf1b\udf36-\udf4e\udf50-\udf55\udf70-\udf88\udf8a-\udf8f\udfaa-\udfc2\udfc4-\udfc9\udfcb])$/; - - -var answer = get_answer(); -var fuzz_answer = get_fuzz_answer(); - - -for (var i = 0; i < 0x10000; i++) { - var s = String.fromCharCode(i); - assertTrue(!!re.test(s) == !!answer[i]); -} - - -function BuildSurrogatePair(c) { - return String.fromCharCode(+0xd800 + (c >> 10)) + - String.fromCharCode(+0xdc00 + (c & 0x3ff)); -} - -fuzz_index = 0; -fuzz(); - -for (var i = 0x10000; i < 0x110000 && i < answer.length + 256; i++) { - var c = i - 0x10000; - assertTrue(!!re.test(BuildSurrogatePair(c)) == !!answer[i]); -} - -var seed = 49734321; - -function rand() { - // To make the test results predictable, we use a 100% deterministic - // alternative. - // Robert Jenkins' 32 bit integer hash function. - seed = seed & 0xffffffff; - seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff; - seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff; - seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff; - seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff; - seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff; - seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff; - return (seed & 0xffff) -} - - -// Random character. -function rc(last) { - var c = rand(); - // Increase the concentration of problematic values around the page - // edges. - if (rand() & 1) { - c = (c & 0xff80) + (c & 3) - 2; - } - // Increase the concentration of problematic values around the ends. - if (rand() & 31 == 0) c = 0xfff8 + (rand() & 7) - if (rand() & 31 == 0) c = (rand() & 7) - - // Increase the concentration of values near each other. - if (rand() & 1) c = last + (rand() & 15) - 8; - return c & 0xffff; // Only code unit values. -} - - -function fuzz() { - fuzz_index = 0; - seed = 49734321; - for (var i = 0; i < 1000; i++) { - var len = rand() & 0x1f; - var ranges = new Array(len); - var last = rand(); - for (var j = 0; j < len; j++) { - ranges.push(last); - last = rc(last); - } - ranges.sort(function (a, b) { return a - b }); - var cc = ""; - for (var j = 0; j < len; j++) { - var ch = String.fromCharCode(ranges[j]); - if (ch == '\\' || ch == ']') ch = '\\' + ch; - cc += ch; - if (j < len - 1 && rand() & 1) cc += '-'; - } - var negated = (last & 2) != 0; - var prefix = negated ? "[^" : "["; - var re = new RegExp(prefix + cc + "]"); - for (var j = 0; j < len; j++) { - retest(re, (ranges[j] - 1), negated); - retest(re, (ranges[j]), negated); - retest(re, (ranges[j] + 1), negated); - } - } -} - - -function retest(re, code, negated) { - var s = String.fromCharCode(code >>> 0); - assertTrue(negated != (!!re.test(s) == !!fuzz_answer[fuzz_index++])); -} - - -function get_fuzz_answer() { - // Test data generated with V8 version 3.7. -return [ - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0, - - - 0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0, - 0,1,1,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - - 0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0, - 0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0, - 0,1,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0, - 0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - - 0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0, - - 0,1,1,1,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0, - 0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0, - 0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0, - 0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0, - 0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0, -]; -} - - -function get_answer() { - // Test data generated with V8 version 3.7. -return [ - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , ,1, , , , , , , , , , ,1, , , , ,1, , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1,1,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1, ,1, ,1, ,1, , - 1, ,1, ,1, ,1, ,1,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, , ,1, ,1, ,1,1, - 1, , ,1, ,1, , ,1, , , ,1,1, , , , ,1, , ,1, , , ,1,1,1, , ,1, , - ,1, ,1, ,1, , ,1, ,1,1, ,1, , ,1, , , ,1, ,1, , ,1,1, , ,1,1,1, - , , , , , ,1, , ,1, , ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1, , ,1, ,1, , , ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1,1,1,1,1, , ,1, , ,1, - 1, ,1, , , , ,1, ,1, ,1, ,1, ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , ,1, ,1, , , ,1, , , ,1,1,1, , , - , , , , , , , , , , , , , , , ,1, , , , , , , , , , , , , , , , - , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1, , , ,1,1,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1,1,1, ,1, , ,1, , ,1,1, , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, , , , , , , , , ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - , ,1, ,1, ,1, ,1, ,1, ,1, ,1,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1,1,1,1,1,1,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1,1, , , , , , , , , , , - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1,1,1,1, , , , , , , , , - 1,1,1,1,1,1, , , , , , , , , , ,1,1,1,1,1,1,1,1, , , , , , , , , - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1,1,1,1, , , , , , , , , - 1,1,1,1,1,1,1,1, , , , , , , , ,1,1,1,1,1, ,1,1, , , , , , ,1, , - , ,1,1,1, ,1,1, , , , , , , , ,1,1,1,1, , ,1,1, , , , , , , , , - 1,1,1,1,1,1,1,1, , , , , , , , , , ,1,1,1, ,1,1, , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , ,1, , , , , , , , , , , , , ,1, - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , ,1, , , ,1,1, , , ,1, , , , , , , , , , , , , - , , , , , , , , , , , , , , ,1, , , , ,1, , , , ,1, , ,1,1, , , - , , , , , ,1,1,1,1, , , , ,1, , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , ,1, , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , - ,1, , , ,1,1, ,1, ,1, ,1, , , , ,1, ,1,1, ,1,1,1,1,1,1,1, , , , - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1,1, , , , , , , , , , , , , , , , , , , , , , , , , , , , - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - , , ,1, ,1, ,1, ,1, ,1, ,1, , , , , , , , , , , , , , , , , , , - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, - ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1, ,1,1,1,1,1,1,1,1, ,1, ,1, , ,1, - ,1, ,1, ,1, ,1, , , , ,1, , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - 1,1,1,1,1,1,1, , , , , , , , , , , , ,1,1,1,1,1, , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - , , , , , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , - , , , , , , , , , , , , , ,1,1,1,1,1,1,1, ,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , - , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , - , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1, ,1, ,1,1,1, - 1,1,1,1, ,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , , ,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , - , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , - , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - , , , , , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , - , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , - , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , - , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1, , , , , , , , , , , , , , , , , , , , , , , , , , , - , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1, - 1,1, , , , , , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1, , , , , - , , , , , , , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1, , , , , , , , , , , - , , , , , , , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1, ,1,1,1,1,1,1, , , , , , , , , , , , , , , , , - , , , , , , , , , ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1, ,1,1,1,1,1,1, ,1]; -} diff --git a/implementation-contributed/v8/mjsunit/unused-context-in-with.js b/implementation-contributed/v8/mjsunit/unused-context-in-with.js deleted file mode 100644 index 2973ca2e5a5..00000000000 --- a/implementation-contributed/v8/mjsunit/unused-context-in-with.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var x = 1; -function foo(object) { - with(object) { - x; - } - return 100; -} - -assertEquals(100,foo("str")); diff --git a/implementation-contributed/v8/mjsunit/unusual-constructor.js b/implementation-contributed/v8/mjsunit/unusual-constructor.js deleted file mode 100644 index 82b9bd65443..00000000000 --- a/implementation-contributed/v8/mjsunit/unusual-constructor.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var threw = false; -try { - var obj = new (Function.__proto__)(); -} catch (e) { - assertInstanceof(e, TypeError); - threw = true; -} -assertTrue(threw); diff --git a/implementation-contributed/v8/mjsunit/uri.js b/implementation-contributed/v8/mjsunit/uri.js deleted file mode 100644 index 862e420f892..00000000000 --- a/implementation-contributed/v8/mjsunit/uri.js +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests of URI encoding and decoding. - -assertEquals("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.!~*'();/?:@&=+$,#", - encodeURI("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.!~*'();/?:@&=+$,#")); - -var cc1 = 0x007D; -var s1 = String.fromCharCode(cc1); -var cc2 = 0x0000; -var s2 = String.fromCharCode(cc2); -var cc3 = 0x0080; -var s3 = String.fromCharCode(cc3); -var cc4 = 0x0555; -var s4 = String.fromCharCode(cc4); -var cc5 = 0x07FF; -var s5 = String.fromCharCode(cc5); -var cc6 = 0x0800; -var s6 = String.fromCharCode(cc6); -var cc7 = 0xAEEE; -var s7 = String.fromCharCode(cc7); -var cc8_1 = 0xD800; -var cc8_2 = 0xDC00; -var s8 = String.fromCharCode(cc8_1)+String.fromCharCode(cc8_2); -var cc9_1 = 0xDBFF; -var cc9_2 = 0xDFFF; -var s9 = String.fromCharCode(cc9_1)+String.fromCharCode(cc9_2); -var cc10 = 0xE000; -var s10 = String.fromCharCode(cc10); - -assertEquals('%7D', encodeURI(s1)); -assertEquals('%00', encodeURI(s2)); -assertEquals('%C2%80', encodeURI(s3)); -assertEquals('%D5%95', encodeURI(s4)); -assertEquals('%DF%BF', encodeURI(s5)); -assertEquals('%E0%A0%80', encodeURI(s6)); -assertEquals('%EA%BB%AE', encodeURI(s7)); -assertEquals('%F0%90%80%80', encodeURI(s8)); -assertEquals('%F4%8F%BF%BF', encodeURI(s9)); -assertEquals('%EE%80%80', encodeURI(s10)); - -assertEquals(cc1, decodeURI(encodeURI(s1)).charCodeAt(0)); -assertEquals(cc2, decodeURI(encodeURI(s2)).charCodeAt(0)); -assertEquals(cc3, decodeURI(encodeURI(s3)).charCodeAt(0)); -assertEquals(cc4, decodeURI(encodeURI(s4)).charCodeAt(0)); -assertEquals(cc5, decodeURI(encodeURI(s5)).charCodeAt(0)); -assertEquals(cc6, decodeURI(encodeURI(s6)).charCodeAt(0)); -assertEquals(cc7, decodeURI(encodeURI(s7)).charCodeAt(0)); -assertEquals(cc8_1, decodeURI(encodeURI(s8)).charCodeAt(0)); -assertEquals(cc8_2, decodeURI(encodeURI(s8)).charCodeAt(1)); -assertEquals(cc9_1, decodeURI(encodeURI(s9)).charCodeAt(0)); -assertEquals(cc9_2, decodeURI(encodeURI(s9)).charCodeAt(1)); -assertEquals(cc10, decodeURI(encodeURI(s10)).charCodeAt(0)); - -assertEquals("", decodeURI("")); -assertEquals("", encodeURI("")); - -function test(string) { - assertEquals(string, decodeURI(encodeURI(string))); -} - -test("\u1234\u0123\uabcd"); -test("abcd"); -test("ab<\u1234\u0123"); -test("ab\u1234<\u0123"); - - -(function TestDeleteCharCodeAt() { - assertEquals('abc', encodeURI('abc')); - assertEquals('abc', decodeURI('abc')); - assertTrue(delete String.prototype.charCodeAt); - assertTrue(delete String.prototype.charAt); - assertEquals('abc', encodeURI('abc')); - assertEquals('abc', decodeURI('abc')); -})(); diff --git a/implementation-contributed/v8/mjsunit/value-callic-prototype-change.js b/implementation-contributed/v8/mjsunit/value-callic-prototype-change.js deleted file mode 100644 index 52f06297b02..00000000000 --- a/implementation-contributed/v8/mjsunit/value-callic-prototype-change.js +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that the inline caches correctly detect that constant -// functions on value prototypes change. - -function testString() { - function f(s, expected) { - var result = s.toString(); - assertEquals(expected, result); - }; - - for (var i = 0; i < 10; i++) { - var s = String.fromCharCode(i); - f(s, s); - } - - String.prototype.toString = function() { return "ostehaps"; }; - - for (var i = 0; i < 10; i++) { - var s = String.fromCharCode(i); - f(s, "ostehaps"); - } -} - -testString(); - - -function testNumber() { - Number.prototype.toString = function() { return 0; }; - - function f(n, expected) { - var result = n.toString(); - assertEquals(expected, result); - }; - - for (var i = 0; i < 10; i++) { - f(i, 0); - } - - Number.prototype.toString = function() { return 42; }; - - for (var i = 0; i < 10; i++) { - f(i, 42); - } -} - -testNumber(); - - -function testBoolean() { - Boolean.prototype.toString = function() { return 0; }; - - function f(b, expected) { - var result = b.toString(); - assertEquals(expected, result); - }; - - for (var i = 0; i < 10; i++) { - f((i % 2 == 0), 0); - } - - Boolean.prototype.toString = function() { return 42; }; - - for (var i = 0; i < 10; i++) { - f((i % 2 == 0), 42); - } -} - -testBoolean(); diff --git a/implementation-contributed/v8/mjsunit/value-of.js b/implementation-contributed/v8/mjsunit/value-of.js deleted file mode 100644 index 88dad0a9b90..00000000000 --- a/implementation-contributed/v8/mjsunit/value-of.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -let valueOf = Object.prototype.valueOf; - -assertEquals('object', typeof valueOf.call(true)); -assertEquals('object', typeof valueOf.call(false)); -assertEquals('object', typeof valueOf.call(1.23)); -assertEquals('object', typeof valueOf.call(0)); -assertEquals('object', typeof valueOf.call('a')); -assertEquals('object', typeof valueOf.call(Symbol.isConcatSpreadable)); -assertThrows(() => valueOf.call(undefined), TypeError); -assertThrows(() => valueOf.call(null), TypeError); - -function MyException() { } -var o = new Object(); -o.valueOf = function() { throw new MyException(); } - -assertThrows(function() { o + 1 }, MyException); diff --git a/implementation-contributed/v8/mjsunit/value-wrapper-accessor.js b/implementation-contributed/v8/mjsunit/value-wrapper-accessor.js deleted file mode 100644 index 79db407121c..00000000000 --- a/implementation-contributed/v8/mjsunit/value-wrapper-accessor.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// When calling user-defined accessors on strings, booleans or -// numbers, we should create a wrapper object in sloppy mode. - -// Flags: --allow-natives-syntax - -function test(object, prototype) { - var result; - Object.defineProperty(prototype, "nonstrict", { - get: function() { result = this; }, - set: function(v) { result = this; } - }); - Object.defineProperty(prototype, "strict", { - get: function() { "use strict"; result = this; }, - set: function(v) { "use strict"; result = this; } - }); - - (function() { - function nonstrict(s) { - return s.nonstrict; - } - function strict(s) { - return s.strict; - } - - nonstrict(object); - nonstrict(object); - %OptimizeFunctionOnNextCall(nonstrict); - result = undefined; - nonstrict(object); - assertEquals("object", typeof result); - - strict(object); - strict(object); - %OptimizeFunctionOnNextCall(strict); - result = undefined; - strict(object); - assertEquals(typeof object, typeof result); - })(); - - (function() { - function nonstrict(s) { - return s.nonstrict = 10; - } - function strict(s) { - return s.strict = 10; - } - - nonstrict(object); - nonstrict(object); - %OptimizeFunctionOnNextCall(nonstrict); - result = undefined; - nonstrict(object); - assertEquals("object", typeof result); - - strict(object); - strict(object); - %OptimizeFunctionOnNextCall(strict); - result = undefined; - strict(object); - assertEquals(object, result); - })(); -} - -test(1, Number.prototype); -test("string", String.prototype); -test(true, Boolean.prototype); diff --git a/implementation-contributed/v8/mjsunit/value-wrapper.js b/implementation-contributed/v8/mjsunit/value-wrapper.js deleted file mode 100644 index cc81f955593..00000000000 --- a/implementation-contributed/v8/mjsunit/value-wrapper.js +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// When calling user-defined functions on strings, booleans or -// numbers, we should create a wrapper object. - -// When running the tests use loops to ensure that the call site moves through -// the different IC states and that both the runtime system and the generated -// IC code is tested. - -function RunTests() { - for (var i = 0; i < 10; i++) { - assertEquals('object', 'xxx'.TypeOfThis()); - assertEquals('object', true.TypeOfThis(2,3)); - assertEquals('object', false.TypeOfThis()); - assertEquals('object', (42).TypeOfThis()); - assertEquals('object', (3.14).TypeOfThis()); - } - - for (var i = 0; i < 10; i++) { - assertEquals('object', 'xxx'['TypeOfThis']()); - assertEquals('object', true['TypeOfThis']()); - assertEquals('object', false['TypeOfThis']()); - assertEquals('object', (42)['TypeOfThis']()); - assertEquals('object', (3.14)['TypeOfThis']()); - } - - function CallTypeOfThis(obj) { - assertEquals('object', obj.TypeOfThis()); - } - - for (var i = 0; i < 10; i++) { - CallTypeOfThis('xxx'); - CallTypeOfThis(true); - CallTypeOfThis(false); - CallTypeOfThis(42); - CallTypeOfThis(3.14); - } - - function TestWithWith(obj) { - with (obj) { - for (var i = 0; i < 10; i++) { - assertEquals('object', TypeOfThis()); - } - } - } - - TestWithWith('xxx'); - TestWithWith(true); - TestWithWith(false); - TestWithWith(42); - TestWithWith(3.14); - - for (var i = 0; i < 10; i++) { - assertEquals('object', true[7]()); - assertEquals('object', false[7]()); - assertEquals('object', (42)[7]()); - assertEquals('object', (3.14)[7]()); - } - - for (var i = 0; i < 10; i++) { - assertEquals('object', typeof 'xxx'.ObjectValueOf()); - assertEquals('object', typeof true.ObjectValueOf()); - assertEquals('object', typeof false.ObjectValueOf()); - assertEquals('object', typeof (42).ObjectValueOf()); - assertEquals('object', typeof (3.14).ObjectValueOf()); - } - - for (var i = 0; i < 10; i++) { - assertEquals('[object String]', 'xxx'.ObjectToString()); - assertEquals('[object Boolean]', true.ObjectToString()); - assertEquals('[object Boolean]', false.ObjectToString()); - assertEquals('[object Number]', (42).ObjectToString()); - assertEquals('[object Number]', (3.14).ObjectToString()); - } -} - -function TypeOfThis() { return typeof this; } - -// Test with normal setup of prototype. -String.prototype.TypeOfThis = TypeOfThis; -Boolean.prototype.TypeOfThis = TypeOfThis; -Number.prototype.TypeOfThis = TypeOfThis; -Boolean.prototype[7] = TypeOfThis; -Number.prototype[7] = TypeOfThis; - -String.prototype.ObjectValueOf = Object.prototype.valueOf; -Boolean.prototype.ObjectValueOf = Object.prototype.valueOf; -Number.prototype.ObjectValueOf = Object.prototype.valueOf; - -String.prototype.ObjectToString = Object.prototype.toString; -Boolean.prototype.ObjectToString = Object.prototype.toString; -Number.prototype.ObjectToString = Object.prototype.toString; - -RunTests(); - -// Run test after properties have been set to a different value. -String.prototype.TypeOfThis = 'x'; -Boolean.prototype.TypeOfThis = 'x'; -Number.prototype.TypeOfThis = 'x'; -Boolean.prototype[7] = 'x'; -Number.prototype[7] = 'x'; - -String.prototype.TypeOfThis = TypeOfThis; -Boolean.prototype.TypeOfThis = TypeOfThis; -Number.prototype.TypeOfThis = TypeOfThis; -Boolean.prototype[7] = TypeOfThis; -Number.prototype[7] = TypeOfThis; - -RunTests(); - -// Force the prototype into slow case and run the test again. -delete String.prototype.TypeOfThis; -delete Boolean.prototype.TypeOfThis; -delete Number.prototype.TypeOfThis; -Boolean.prototype[7]; -Number.prototype[7]; - -String.prototype.TypeOfThis = TypeOfThis; -Boolean.prototype.TypeOfThis = TypeOfThis; -Number.prototype.TypeOfThis = TypeOfThis; -Boolean.prototype[7] = TypeOfThis; -Number.prototype[7] = TypeOfThis; - -RunTests(); - -// According to ES3 15.3.4.3 the this value passed to Function.prototyle.apply -// should wrapped. According to ES5 it should not. -assertEquals('object', TypeOfThis.apply('xxx', [])); -assertEquals('object', TypeOfThis.apply(true, [])); -assertEquals('object', TypeOfThis.apply(false, [])); -assertEquals('object', TypeOfThis.apply(42, [])); -assertEquals('object', TypeOfThis.apply(3.14, [])); - -// According to ES3 15.3.4.3 the this value passed to Function.prototyle.call -// should wrapped. According to ES5 it should not. -assertEquals('object', TypeOfThis.call('xxx')); -assertEquals('object', TypeOfThis.call(true)); -assertEquals('object', TypeOfThis.call(false)); -assertEquals('object', TypeOfThis.call(42)); -assertEquals('object', TypeOfThis.call(3.14)); diff --git a/implementation-contributed/v8/mjsunit/var.js b/implementation-contributed/v8/mjsunit/var.js deleted file mode 100644 index c3c331ea3cc..00000000000 --- a/implementation-contributed/v8/mjsunit/var.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -assertTrue(!x && typeof x == 'undefined'); -assertTrue(!y && typeof y == 'undefined'); -if (false) { var x = 42; } -if (true) { var y = 87; } -assertTrue(!x && typeof x == 'undefined'); -assertEquals(87, y); - -assertTrue(!z && typeof z == 'undefined'); -if (false) { var z; } -assertTrue(!z && typeof z == 'undefined'); - -assertThrows("var \u2E2F;", SyntaxError); -assertThrows("var \\u2E2F;", SyntaxError); - -assertDoesNotThrow("var \u2118;"); -assertDoesNotThrow("var \\u2118;"); -assertDoesNotThrow("var \u212E;"); -assertDoesNotThrow("var \\u212E;"); -assertDoesNotThrow("var \u309B;"); -assertDoesNotThrow("var \\u309B;"); -assertDoesNotThrow("var \u309C;"); -assertDoesNotThrow("var \\u309C;"); - -assertDoesNotThrow("var $\u00B7;"); -assertDoesNotThrow("var $\u0387;"); -assertDoesNotThrow("var $\u1369;"); -assertDoesNotThrow("var $\u1370;"); -assertDoesNotThrow("var $\u1371;"); -assertDoesNotThrow("var $\u19DA;"); diff --git a/implementation-contributed/v8/mjsunit/verify-assert-false.js b/implementation-contributed/v8/mjsunit/verify-assert-false.js deleted file mode 100644 index 8bea7df3999..00000000000 --- a/implementation-contributed/v8/mjsunit/verify-assert-false.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-trigger-failure - -triggerAssertFalse(); diff --git a/implementation-contributed/v8/mjsunit/verify-check-false.js b/implementation-contributed/v8/mjsunit/verify-check-false.js deleted file mode 100644 index 426bf846a68..00000000000 --- a/implementation-contributed/v8/mjsunit/verify-check-false.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-trigger-failure - -triggerCheckFalse(); diff --git a/implementation-contributed/v8/mjsunit/whitespaces.js b/implementation-contributed/v8/mjsunit/whitespaces.js deleted file mode 100644 index cd8595fcc76..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2014 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -var whitespaces = [ - // WhiteSpace defined in ECMA-262 5.1, 7.2 - 0x0009, // Tab TAB - 0x000B, // Vertical Tab VT - 0x000C, // Form Feed FF - 0x0020, // Space SP - 0x00A0, // No-break space NBSP - 0xFEFF, // Byte Order Mark BOM - - // LineTerminator defined in ECMA-262 5.1, 7.3 - 0x000A, // Line Feed LF - 0x000D, // Carriage Return CR - 0x2028, // Line Separator LS - 0x2029, // Paragraph Separator PS - - // Unicode 6.3.0 whitespaces (category 'Zs') - 0x1680, // Ogham Space Mark - 0x2000, // EN QUAD - 0x2001, // EM QUAD - 0x2002, // EN SPACE - 0x2003, // EM SPACE - 0x2004, // THREE-PER-EM SPACE - 0x2005, // FOUR-PER-EM SPACE - 0x2006, // SIX-PER-EM SPACE - 0x2007, // FIGURE SPACE - 0x2008, // PUNCTUATION SPACE - 0x2009, // THIN SPACE - 0x200A, // HAIR SPACE - 0x2028, // LINE SEPARATOR - 0x2029, // PARAGRAPH SEPARATOR - 0x202F, // NARROW NO-BREAK SPACE - 0x205F, // MEDIUM MATHEMATICAL SPACE - 0x3000, // IDEOGRAPHIC SPACE -]; - -// Add single twobyte char to force twobyte representation. -// Interestingly, snowman is not "white" space :) -var twobyte = "\u2603"; -var onebyte = "\u007E"; -var twobytespace = "\u2000"; -var onebytespace = "\u0020"; - -function is_whitespace(c) { - return whitespaces.indexOf(c.charCodeAt(0)) > -1; -} - -function test_regexp(str) { - var pos_match = str.match(/\s/); - var neg_match = str.match(/\S/); - var test_char = str[0]; - var postfix = str[1]; - if (is_whitespace(test_char)) { - assertEquals(test_char, pos_match[0]); - assertEquals(postfix, neg_match[0]); - } else { - assertEquals(test_char, neg_match[0]); - assertNull(pos_match); - } -} - -function test_trim(c, infix) { - var str = c + c + c + infix + c; - if (is_whitespace(c)) { - assertEquals(infix, str.trim()); - } else { - assertEquals(str, str.trim()); - } -} - -function test_parseInt(c, postfix) { - // Skip if prefix is a digit. - if (c >= "0" && c <= "9") return; - var str = c + c + "123" + postfix; - if (is_whitespace(c)) { - assertEquals(123, parseInt(str)); - } else { - assertEquals(NaN, parseInt(str)); - } -} - -function test_eval(c, content) { - if (!is_whitespace(c)) return; - var str = c + c + "'" + content + "'" + c + c; - assertEquals(content, eval(str)); -} - -function test_stringtonumber(c, postfix) { - // Skip if prefix is a digit. - if (c >= "0" && c <= "9") return; - var result = 1 + Number(c + "123" + c + postfix); - if (is_whitespace(c)) { - assertEquals(124, result); - } else { - assertEquals(NaN, result); - } -} - -// Test is split into parts to increase parallelism. -const number_of_tests = 10; -const max_codepoint = 0x10000; - -function firstCodePointOfRange(i) { - return Math.floor(i * (max_codepoint / number_of_tests)); -} - -function testCodePointRange(i) { - assertTrue(i >= 0 && i < number_of_tests); - - const from = firstCodePointOfRange(i); - const to = (i == number_of_tests - 1) - ? max_codepoint : firstCodePointOfRange(i + 1); - - for (let i = from; i < to; i++) { - c = String.fromCharCode(i); - test_regexp(c + onebyte); - test_regexp(c + twobyte); - test_trim(c, onebyte + "trim"); - test_trim(c, twobyte + "trim"); - test_parseInt(c, onebyte); - test_parseInt(c, twobyte); - test_eval(c, onebyte); - test_eval(c, twobyte); - test_stringtonumber(c, onebytespace); - test_stringtonumber(c, twobytespace); - } -} diff --git a/implementation-contributed/v8/mjsunit/whitespaces0.js b/implementation-contributed/v8/mjsunit/whitespaces0.js deleted file mode 100644 index 9bcd4a7024f..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces0.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(0); diff --git a/implementation-contributed/v8/mjsunit/whitespaces1.js b/implementation-contributed/v8/mjsunit/whitespaces1.js deleted file mode 100644 index 8d09f4c29e8..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces1.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(1); diff --git a/implementation-contributed/v8/mjsunit/whitespaces2.js b/implementation-contributed/v8/mjsunit/whitespaces2.js deleted file mode 100644 index 2919d0367bd..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces2.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(2); diff --git a/implementation-contributed/v8/mjsunit/whitespaces3.js b/implementation-contributed/v8/mjsunit/whitespaces3.js deleted file mode 100644 index db28a92fc20..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces3.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(3); diff --git a/implementation-contributed/v8/mjsunit/whitespaces4.js b/implementation-contributed/v8/mjsunit/whitespaces4.js deleted file mode 100644 index e1033418fad..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces4.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(4); diff --git a/implementation-contributed/v8/mjsunit/whitespaces5.js b/implementation-contributed/v8/mjsunit/whitespaces5.js deleted file mode 100644 index 5b748ad9b76..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces5.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(5); diff --git a/implementation-contributed/v8/mjsunit/whitespaces6.js b/implementation-contributed/v8/mjsunit/whitespaces6.js deleted file mode 100644 index 6944700054c..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces6.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(6); diff --git a/implementation-contributed/v8/mjsunit/whitespaces7.js b/implementation-contributed/v8/mjsunit/whitespaces7.js deleted file mode 100644 index ad01584351b..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces7.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(7); diff --git a/implementation-contributed/v8/mjsunit/whitespaces8.js b/implementation-contributed/v8/mjsunit/whitespaces8.js deleted file mode 100644 index aff47d5c6cf..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces8.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(8); diff --git a/implementation-contributed/v8/mjsunit/whitespaces9.js b/implementation-contributed/v8/mjsunit/whitespaces9.js deleted file mode 100644 index 8d5e97aceb9..00000000000 --- a/implementation-contributed/v8/mjsunit/whitespaces9.js +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Files: test/mjsunit/whitespaces.js - -testCodePointRange(9); diff --git a/implementation-contributed/v8/mjsunit/with-function-expression.js b/implementation-contributed/v8/mjsunit/with-function-expression.js deleted file mode 100644 index 17de8175da9..00000000000 --- a/implementation-contributed/v8/mjsunit/with-function-expression.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -var source = "(function x() { with({}) { return '' + x; } })()"; - -// Don't throw exceptions. -assertDoesNotThrow(source); - -// Check that the return value is a function. Use regexp to avoid -// depending on the exact printing of the function. -var regexp = /function/; -var res = assertTrue(eval(source).match(regexp) == 'function'); diff --git a/implementation-contributed/v8/mjsunit/with-leave.js b/implementation-contributed/v8/mjsunit/with-leave.js deleted file mode 100644 index 7369faa505f..00000000000 --- a/implementation-contributed/v8/mjsunit/with-leave.js +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -L: with ({x:12}) { - assertEquals(12, x); - break L; - assertTrue(false); -} - -do { - with ({x:15}) { - assertEquals(15, x); - continue; - assertTrue(false); - } -} while (false); - -var caught = false; -try { - with ({x:18}) { throw 25; assertTrue(false); } -} catch (e) { - caught = true; - assertEquals(25, e); - with ({y:19}) { - assertEquals(19, y); - try { - // NOTE: This checks that the object containing x has been - // removed from the context chain. - x; - assertTrue(false); // should not reach here - } catch (e2) { - assertTrue(e2 instanceof ReferenceError); - } - } -} -assertTrue(caught); - - -// We want to test the context chain shape. In each of the tests cases -// below, the outer with is to force a runtime lookup of the identifier 'x' -// to actually verify that the inner context has been discarded. A static -// lookup of 'x' might accidentally succeed. -with ({x: 'outer'}) { - label: { - with ({x: 'inner'}) { - break label; - } - } - assertEquals('outer', x); -} - - -with ({x: 'outer'}) { - label: { - with ({x: 'middle'}) { - with ({x: 'inner'}) { - break label; - } - } - } - assertEquals('outer', x); -} - - -with ({x: 'outer'}) { - for (var i = 0; i < 10; ++i) { - with ({x: 'inner' + i}) { - continue; - } - } - assertEquals('outer', x); -} - - -with ({x: 'outer'}) { - label: for (var i = 0; i < 10; ++i) { - with ({x: 'middle' + i}) { - for (var j = 0; j < 10; ++j) { - with ({x: 'inner' + j}) { - continue label; - } - } - } - } - assertEquals('outer', x); -} - - -with ({x: 'outer'}) { - try { - with ({x: 'inner'}) { - throw 0; - } - } catch (e) { - assertEquals('outer', x); - } -} - - -with ({x: 'outer'}) { - try { - with ({x: 'middle'}) { - with ({x: 'inner'}) { - throw 0; - } - } - } catch (e) { - assertEquals('outer', x); - } -} - - -try { - with ({x: 'outer'}) { - try { - with ({x: 'inner'}) { - throw 0; - } - } finally { - assertEquals('outer', x); - } - } -} catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; -} - - -try { - with ({x: 'outer'}) { - try { - with ({x: 'middle'}) { - with ({x: 'inner'}) { - throw 0; - } - } - } finally { - assertEquals('outer', x); - } - } -} catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; -} - - -// Verify that the context is correctly set in the stack frame after exiting -// from with. -function f() {} - -with ({x: 'outer'}) { - label: { - with ({x: 'inner'}) { - break label; - } - } - f(); // The context could be restored from the stack after the call. - assertEquals('outer', x); -} - - -with ({x: 'outer'}) { - for (var i = 0; i < 10; ++i) { - with ({x: 'inner' + i}) { - continue; - } - } - f(); - assertEquals('outer', x); -} - - -with ({x: 'outer'}) { - try { - with ({x: 'inner'}) { - throw 0; - } - } catch (e) { - f(); - assertEquals('outer', x); - } -} - - -try { - with ({x: 'outer'}) { - try { - with ({x: 'inner'}) { - throw 0; - } - } finally { - f(); - assertEquals('outer', x); - } - } -} catch (e) { - if (e instanceof MjsUnitAssertionError) throw e; -} diff --git a/implementation-contributed/v8/mjsunit/with-parameter-access.js b/implementation-contributed/v8/mjsunit/with-parameter-access.js deleted file mode 100644 index 747da22bff3..00000000000 --- a/implementation-contributed/v8/mjsunit/with-parameter-access.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Return a parameter from inside a with statement. -function f(x) { - with ({}) { - return x; - } -} - -assertEquals(5, f(5)); - - -function g(x) { - function h() { - with ({}) { - return x; - } - } - return h(); -} - -assertEquals(7, g(7)); diff --git a/implementation-contributed/v8/mjsunit/with-prototype.js b/implementation-contributed/v8/mjsunit/with-prototype.js deleted file mode 100644 index e760f4e2f3c..00000000000 --- a/implementation-contributed/v8/mjsunit/with-prototype.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test the behavior of an assignment in a with statement where the -// extension object contains a property with the name assigned to in -// the prototype chain. - -var o = {}; -var p = { x: 42 }; -o.__proto__ = p; - -function f() { - with (o) { - x = 123; - } -} -f(); - -assertEquals(42, p.x); -assertEquals(123, o.x); diff --git a/implementation-contributed/v8/mjsunit/with-readonly.js b/implementation-contributed/v8/mjsunit/with-readonly.js deleted file mode 100644 index 43583348e95..00000000000 --- a/implementation-contributed/v8/mjsunit/with-readonly.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that readonly variables are treated correctly. - -// Create an object with a read-only length property in the prototype -// chain by putting the string split function in the prototype chain. -var o = {}; -o.__proto__ = String.prototype.split; - -function f() { - with (o) { - length = 23; - length = 24; - assertEquals(2, length); - } - assertEquals(2, o.length); -} -f(); diff --git a/implementation-contributed/v8/mjsunit/with-value.js b/implementation-contributed/v8/mjsunit/with-value.js deleted file mode 100644 index f7a89f3fb61..00000000000 --- a/implementation-contributed/v8/mjsunit/with-value.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Values used in 'with' statements should be wrapped in an object -// before establishing the context. -(function() { - // 7 should be converted to an number object - with (7) { assertTrue(typeof valueOf == 'function'); } -})(); - -/* This should be fairly easy again. May need some work in the -compiler's VisitWith() function, or perhaps the runtime routine's -PushContextForWith(). -*/ diff --git a/implementation-contributed/v8/test262/BUILD.gn b/implementation-contributed/v8/test262/BUILD.gn deleted file mode 100644 index 093e489df08..00000000000 --- a/implementation-contributed/v8/test262/BUILD.gn +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2016 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -group("v8_test262") { - testonly = true - - data_deps = [ - "../..:d8", - "../../tools:v8_testrunner", - ] - - data = [ - "data/", - "detachArrayBuffer.js", - "harness/", - "harness-adapt.js", - "harness-adapt-donotevaluate.js", - "harness-agent.js", - "test262.status", - "testcfg.py", - "local-tests/", - ] -} diff --git a/implementation-contributed/v8/test262/README b/implementation-contributed/v8/test262/README deleted file mode 100644 index e563e85dd41..00000000000 --- a/implementation-contributed/v8/test262/README +++ /dev/null @@ -1,20 +0,0 @@ -This directory contains code for binding the test262 test suite -into the v8 test harness. The tests are checked out as a dependency from - - https://chromium.googlesource.com/external/github.com/tc39/test262 - -at a revision specified in the DEPS file as 'data' in this directory. They are -fetched with 'gclient sync'. To update to a newer version, please change the -DEPS file. - -Using a newer version, e.g. 'deadbeef' may be possible but the tests are only -known to pass (and indeed run) with the DEPS revision. Example: - - cd data - git fetch - git checkout deadbeef - -If you do update to a newer revision you may have to change the test -harness adapter code since it uses internal functionality from the -harness that comes bundled with the tests. You will most likely also -have to update the test expectation file. diff --git a/implementation-contributed/v8/test262/detachArrayBuffer.js b/implementation-contributed/v8/test262/detachArrayBuffer.js deleted file mode 100644 index d9ca415c2bf..00000000000 --- a/implementation-contributed/v8/test262/detachArrayBuffer.js +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -function $DETACHBUFFER(buffer) { - %ArrayBufferDetach(buffer); -} - -$262.detachArrayBuffer = $DETACHBUFFER; diff --git a/implementation-contributed/v8/test262/harness-adapt-donotevaluate.js b/implementation-contributed/v8/test262/harness-adapt-donotevaluate.js deleted file mode 100644 index d489c0008c2..00000000000 --- a/implementation-contributed/v8/test262/harness-adapt-donotevaluate.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// V8 has several long-standing bugs where "early errors", i.e. errors that are -// supposed to be thrown at parse time, end up being thrown at runtime instead. -// This file is used to implement the FAIL_PHASE_ONLY outcome as used in -// test/test262/test262.status. Tests marked with this outcome are run in a -// special mode that verifies that a) V8 throws an exception at all, and b) that -// the exception has the correct type, but ignores the fact that they are thrown -// after parsing is done. See crbug.com/v8/8467 for details. -$DONOTEVALUATE = () => {}; diff --git a/implementation-contributed/v8/test262/harness-adapt.js b/implementation-contributed/v8/test262/harness-adapt.js deleted file mode 100644 index 3d3ad7e8a01..00000000000 --- a/implementation-contributed/v8/test262/harness-adapt.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function fnGlobalObject() { return (function() { return this; })(); } - -var ES5Harness = (function() { - var currentTest = {}; - var $this = this; - - function Test262Error(id, path, description, codeString, - preconditionString, result, error) { - this.id = id; - this.path = path; - this.description = description; - this.result = result; - this.error = error; - this.code = codeString; - this.pre = preconditionString; - } - - Test262Error.prototype.toString = function() { - return this.result + " " + this.error; - } - - function registerTest(test) { - if (!(test.precondition && !test.precondition())) { - var error; - try { - var res = test.test.call($this); - } catch(e) { - res = 'fail'; - error = e; - } - var retVal = /^s/i.test(test.id) - ? (res === true || typeof res == 'undefined' ? 'pass' : 'fail') - : (res === true ? 'pass' : 'fail'); - - if (retVal != 'pass') { - var precondition = (test.precondition !== undefined) - ? test.precondition.toString() - : ''; - - throw new Test262Error( - test.id, - test.path, - test.description, - test.test.toString(), - precondition, - retVal, - error); - } - } - } - - return { - registerTest: registerTest - } -})(); - -function $DONE(arg){ - if (arg) { - print('FAILED! Error: ' + arg); - quit(1); - } - - quit(0); -}; - -function RealmOperators(realm) { - let $262 = { - evalScript(script) { - return Realm.eval(realm, script); - }, - createRealm() { - return RealmOperators(Realm.createAllowCrossRealmAccess()); - }, - global: Realm.eval(realm, 'this') - }; - $262.global.$262 = $262; - return $262; -} - -var $262 = RealmOperators(Realm.current()); diff --git a/implementation-contributed/v8/test262/harness-agent.js b/implementation-contributed/v8/test262/harness-agent.js deleted file mode 100644 index 254df2469ff..00000000000 --- a/implementation-contributed/v8/test262/harness-agent.js +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2017 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -$262.agent = (function () { - -var workers = []; -var i32a = null; -var pendingReports = []; - -// Agents call Atomics.wait on this location to sleep. -var SLEEP_LOC = 0; -// 1 if the started worker is ready, 0 otherwise. -var START_LOC = 1; -// The number of workers that have received the broadcast. -var BROADCAST_LOC = 2; -// Each worker has a count of outstanding reports; worker N uses memory -// location [WORKER_REPORT_LOC + N]. -var WORKER_REPORT_LOC = 3; - -function workerScript(script) { - return ` - var index; - var i32a = null; - var broadcasts = []; - var pendingReceiver = null; - - function handleBroadcast() { - if (pendingReceiver && broadcasts.length > 0) { - pendingReceiver.apply(null, broadcasts.shift()); - pendingReceiver = null; - } - }; - - var onmessage = function(msg) { - switch (msg.kind) { - case 'start': - i32a = msg.i32a; - index = msg.index; - (0, eval)(\`${script}\`); - break; - - case 'broadcast': - Atomics.add(i32a, ${BROADCAST_LOC}, 1); - broadcasts.push([msg.sab, msg.id]); - handleBroadcast(); - break; - } - }; - - var $262 = { - agent: { - receiveBroadcast(receiver) { - pendingReceiver = receiver; - handleBroadcast(); - }, - - report(msg) { - postMessage(String(msg)); - Atomics.add(i32a, ${WORKER_REPORT_LOC} + index, 1); - }, - - sleep(s) { Atomics.wait(i32a, ${SLEEP_LOC}, 0, s); }, - - leaving() {}, - - monotonicNow() { - return performance.now(); - } - } - };`; -} - -var agent = { - start(script) { - if (i32a === null) { - i32a = new Int32Array(new SharedArrayBuffer(256)); - } - var w = new Worker(workerScript(script), {type: 'string'}); - w.index = workers.length; - w.postMessage({kind: 'start', i32a: i32a, index: w.index}); - workers.push(w); - }, - - broadcast(sab, id) { - if (!(sab instanceof SharedArrayBuffer)) { - throw new TypeError('sab must be a SharedArrayBuffer.'); - } - - Atomics.store(i32a, BROADCAST_LOC, 0); - - for (var w of workers) { - w.postMessage({kind: 'broadcast', sab: sab, id: id|0}); - } - - while (Atomics.load(i32a, BROADCAST_LOC) != workers.length) {} - }, - - getReport() { - for (var w of workers) { - while (Atomics.load(i32a, WORKER_REPORT_LOC + w.index) > 0) { - pendingReports.push(w.getMessage()); - Atomics.sub(i32a, WORKER_REPORT_LOC + w.index, 1); - } - } - - return pendingReports.shift() || null; - }, - - sleep(s) { Atomics.wait(i32a, SLEEP_LOC, 0, s); }, - - monotonicNow() { - return performance.now(); - } -}; -return agent; - -})(); diff --git a/implementation-contributed/v8/test262/local-tests/test/intl402/DateTimeFormat/12.1.1_1.js b/implementation-contributed/v8/test262/local-tests/test/intl402/DateTimeFormat/12.1.1_1.js deleted file mode 100644 index 64845e74a92..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/intl402/DateTimeFormat/12.1.1_1.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2012 Mozilla Corporation. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -es5id: 12.1.1_1 -description: Tests that the this-value is ignored in DateTimeFormat. -author: Norbert Lindenberg -includes: [testIntl.js] ----*/ - -testWithIntlConstructors(function (Constructor) { - var obj, newObj; - - if (Constructor === Intl.DateTimeFormat) { - obj = new Constructor(); - newObj = Intl.DateTimeFormat.call(obj); - if (obj !== newObj) { - throw new Test262Error("Should have modified existing object."); - } - var key = Object.getOwnPropertySymbols(newObj)[0]; - if (!(newObj[key] instanceof Intl.DateTimeFormat)) { - throw new Test262Error("Should have installed a DateTimeFormat instance."); - } - return true; - } - - // variant 1: use constructor in a "new" expression - obj = new Constructor(); - newObj = Intl.DateTimeFormat.call(obj); - if (obj === newObj) { - throw new Test262Error("DateTimeFormat object created with \"new\" was not ignored as this-value."); - } - - return true; -}); diff --git a/implementation-contributed/v8/test262/local-tests/test/intl402/NumberFormat/prototype/formatToParts/default-parameter.js b/implementation-contributed/v8/test262/local-tests/test/intl402/NumberFormat/prototype/formatToParts/default-parameter.js deleted file mode 100644 index 408694c48c1..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/intl402/NumberFormat/prototype/formatToParts/default-parameter.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2017 Josh Wolfe. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: #sec-intl.numberformat.prototype.formattoparts -description: Intl.NumberFormat.prototype.formatToParts called with no parameters -info: > - Intl.NumberFormat.prototype.formatToParts ([ value ]) - - 3. If value is not provided, let value be undefined. ----*/ - -var nf = new Intl.NumberFormat(); - -// Example value: [{"type":"nan","value":"NaN"}] -var implicit = nf.formatToParts(); -var explicit = nf.formatToParts(undefined); - -assert(partsEquals(implicit, explicit), - "formatToParts() should be equivalent to formatToParts(undefined)"); - -function partsEquals(parts1, parts2) { - if (parts1.length !== parts2.length) return false; - for (var i = 0; i < parts1.length; i++) { - var part1 = parts1[i]; - var part2 = parts2[i]; - if (part1.type !== part2.type) return false; - if (part1.value !== part2.value) return false; - } - return true; -} diff --git a/implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-arrow-err-contains-arguments.js b/implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-arrow-err-contains-arguments.js deleted file mode 100644 index a260f59de77..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-arrow-err-contains-arguments.js +++ /dev/null @@ -1,26 +0,0 @@ -/*--- -description: Syntax error if `arguments` used in class field (arrow function expression) -esid: sec-class-definitions-static-semantics-early-errors -features: [class, class-fields-public, arrow-function] -flags: [generated] -negative: - phase: early - type: SyntaxError -info: | - Static Semantics: Early Errors - FieldDefinition: - PropertyNameInitializeropt - - It is a Syntax Error if ContainsArguments of Initializer is true. - Static Semantics: ContainsArguments - IdentifierReference : Identifier - 1. If the StringValue of Identifier is "arguments", return true. - ... - For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. ----*/ -throw "Test262: This statement should not be evaluated."; -var C = class { - x = () => { - var t = () => { arguments; }; - t(); - } -} diff --git a/implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-arrow-eval-err-contains-arguments.js b/implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-arrow-eval-err-contains-arguments.js deleted file mode 100644 index 20e2bac839c..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-arrow-eval-err-contains-arguments.js +++ /dev/null @@ -1,33 +0,0 @@ -/*--- -description: error if `arguments` in StatementList of eval (direct eval) -esid: sec-performeval-rules-in-initializer -features: [class, class-fields-public, arrow-function] -flags: [generated] -info: | - Static Semantics: Early Errors - - FieldDefinition: - PropertyNameInitializeropt - - - It is a Syntax Error if ContainsArguments of Initializer is true. - - Static Semantics: ContainsArguments - IdentifierReference : Identifier - - 1. If the StringValue of Identifier is "arguments", return true. - ... - For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. - ----*/ - -var C = class { - x = () => { - var t = () => { eval("arguments"); }; - t(); - } -} - -assert.throws(SyntaxError, function() { - var c = new C(); - c.x(); -}); diff --git a/implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-eval-arrow-err-contains-arguments.js b/implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-eval-arrow-err-contains-arguments.js deleted file mode 100644 index 28ae79ed94d..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/language/expressions/class/fields-inner-eval-arrow-err-contains-arguments.js +++ /dev/null @@ -1,30 +0,0 @@ -/*--- -description: error if `arguments` in StatementList of eval (direct eval) -esid: sec-performeval-rules-in-initializer -features: [class, class-fields-public, arrow-function] -flags: [generated] -info: | - Static Semantics: Early Errors - - FieldDefinition: - PropertyNameInitializeropt - - - It is a Syntax Error if ContainsArguments of Initializer is true. - - Static Semantics: ContainsArguments - IdentifierReference : Identifier - - 1. If the StringValue of Identifier is "arguments", return true. - ... - For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. - ----*/ - -var C = class { - x = eval("() => arguments"); -} - -assert.throws(SyntaxError, function() { - var c = new C(); - c.x(); -}); diff --git a/implementation-contributed/v8/test262/local-tests/test/language/module-code/comment-single-line-html-close-comment-before-function.js b/implementation-contributed/v8/test262/local-tests/test/language/module-code/comment-single-line-html-close-comment-before-function.js deleted file mode 100644 index 92d7507cffd..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/language/module-code/comment-single-line-html-close-comment-before-function.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (C) 2017 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -description: > - HTML-like comments are not available in module code - (SingleLineHTMLCloseComment) -esid: sec-html-like-comments -es6id: B1.3 -negative: - phase: early - type: SyntaxError -flags: [module] ----*/ - ---> -function f(){} diff --git a/implementation-contributed/v8/test262/local-tests/test/language/module-code/comment-single-line-html-close-comment-newline-before-function.js b/implementation-contributed/v8/test262/local-tests/test/language/module-code/comment-single-line-html-close-comment-newline-before-function.js deleted file mode 100644 index 19b0c99250e..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/language/module-code/comment-single-line-html-close-comment-newline-before-function.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (C) 2017 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -description: > - HTML-like comments are not available in module code - (SingleLineHTMLCloseComment) -esid: sec-html-like-comments -es6id: B1.3 -negative: - phase: early - type: SyntaxError -flags: [module] ----*/ ---> -function f(){} diff --git a/implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-arrow-err-contains-arguments.js b/implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-arrow-err-contains-arguments.js deleted file mode 100644 index 2ce086c6121..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-arrow-err-contains-arguments.js +++ /dev/null @@ -1,26 +0,0 @@ -/*--- -description: Syntax error if `arguments` used in class field (arrow function expression) -esid: sec-class-definitions-static-semantics-early-errors -features: [class, class-fields-public, arrow-function] -flags: [generated] -negative: - phase: early - type: SyntaxError -info: | - Static Semantics: Early Errors - FieldDefinition: - PropertyNameInitializeropt - - It is a Syntax Error if ContainsArguments of Initializer is true. - Static Semantics: ContainsArguments - IdentifierReference : Identifier - 1. If the StringValue of Identifier is "arguments", return true. - ... - For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. ----*/ -throw "Test262: This statement should not be evaluated."; -class C { - x = () => { - var t = () => { arguments; }; - t(); - } -} diff --git a/implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-arrow-eval-err-contains-arguments.js b/implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-arrow-eval-err-contains-arguments.js deleted file mode 100644 index 9b295032565..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-arrow-eval-err-contains-arguments.js +++ /dev/null @@ -1,34 +0,0 @@ -/*--- -description: error if `arguments` in StatementList of eval (direct eval) -esid: sec-performeval-rules-in-initializer -features: [class, class-fields-public, arrow-function] -flags: [generated] -info: | - Static Semantics: Early Errors - - FieldDefinition: - PropertyNameInitializeropt - - - It is a Syntax Error if ContainsArguments of Initializer is true. - - Static Semantics: ContainsArguments - IdentifierReference : Identifier - - 1. If the StringValue of Identifier is "arguments", return true. - ... - For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. - ----*/ - - -class C { - x = () => { - var t = () => { eval("arguments"); }; - t(); - } -} - -assert.throws(SyntaxError, function() { - var c = new C(); - c.x(); -}); diff --git a/implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-eval-arrow-err-contains-arguments.js b/implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-eval-arrow-err-contains-arguments.js deleted file mode 100644 index f2680e4b679..00000000000 --- a/implementation-contributed/v8/test262/local-tests/test/language/statements/class/fields-inner-eval-arrow-err-contains-arguments.js +++ /dev/null @@ -1,30 +0,0 @@ -/*--- -description: error if `arguments` in StatementList of eval (direct eval) -esid: sec-performeval-rules-in-initializer -features: [class, class-fields-public, arrow-function] -flags: [generated] -info: | - Static Semantics: Early Errors - - FieldDefinition: - PropertyNameInitializeropt - - - It is a Syntax Error if ContainsArguments of Initializer is true. - - Static Semantics: ContainsArguments - IdentifierReference : Identifier - - 1. If the StringValue of Identifier is "arguments", return true. - ... - For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. - ----*/ - -class C { - x = eval("() => arguments"); -} - -assert.throws(SyntaxError, function() { - var c = new C(); - c.x(); -}); diff --git a/implementation-contributed/v8/test262/prune-local-tests.sh b/implementation-contributed/v8/test262/prune-local-tests.sh deleted file mode 100755 index 3d78f6963c5..00000000000 --- a/implementation-contributed/v8/test262/prune-local-tests.sh +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2016 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# usage: test/test262/prune-local-tests.sh -# This script removes redundant tests present in the local-tests directory -# when they are identical to upstreamed tests. It should be run as part of -# the test262 roll process. - -find test/test262/local-tests -type f | while read localpath; do - datapath=${localpath/local-tests/data} - if [ -e $datapath ] ; then - if diff $localpath $datapath >/dev/null ; then - git rm $localpath || exit 1 - fi - fi -done diff --git a/implementation-contributed/v8/test262/test262.status b/implementation-contributed/v8/test262/test262.status deleted file mode 100644 index 34fc0a999e1..00000000000 --- a/implementation-contributed/v8/test262/test262.status +++ /dev/null @@ -1,2619 +0,0 @@ -# Copyright 2011 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -[ - -[ALWAYS, { - ###################### MISSING ES6 FEATURES ####################### - - # https://code.google.com/p/v8/issues/detail?id=4248 - 'language/expressions/compound-assignment/S11.13.2_A5.*': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A6.*': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.10_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.11_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.1_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.2_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.3_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.4_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.5_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.6_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.7_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.8_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.9_T4': [FAIL], - 'language/statements/with/unscopables-inc-dec': [FAIL], - - # https://code.google.com/p/v8/issues/detail?id=4249 - 'language/expressions/assignment/S11.13.1_A7_T1': [FAIL], - 'language/expressions/assignment/S11.13.1_A7_T2': [FAIL], - 'language/expressions/assignment/S11.13.1_A7_T3': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A6_T3': [FAIL], - 'language/expressions/postfix-decrement/S11.3.2_A6_T3': [FAIL], - 'language/expressions/prefix-decrement/S11.4.5_A6_T3': [FAIL], - 'language/expressions/prefix-increment/S11.4.4_A6_T3': [FAIL], - - # https://code.google.com/p/v8/issues/detail?id=4250 - 'language/expressions/assignment/S11.13.1_A5*': [FAIL], - 'language/expressions/assignment/S11.13.1_A6*': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4709 - 'built-ins/Promise/reject-function-name': [FAIL], - 'built-ins/Promise/resolve-function-name': [FAIL], - 'built-ins/Promise/all/resolve-element-function-name': [FAIL], - 'built-ins/Promise/executor-function-name': [FAIL], - 'built-ins/Proxy/revocable/revocation-function-name': [FAIL], - 'language/expressions/assignment/fn-name-lhs-cover': [FAIL], - 'language/expressions/assignment/fn-name-lhs-member': [FAIL], - 'language/expressions/function/name': [FAIL], - 'language/expressions/generators/name': [FAIL], - 'intl402/NumberFormat/prototype/format/format-function-name': [FAIL], - 'intl402/DateTimeFormat/prototype/format/format-function-name': [FAIL], - 'intl402/Collator/prototype/compare/compare-function-name': [FAIL], - - # https://code.google.com/p/v8/issues/detail?id=4251 - 'language/expressions/postfix-increment/S11.3.1_A5_T1': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A5_T2': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A5_T3': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A5_T4': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A5_T5': [FAIL], - 'language/expressions/postfix-decrement/S11.3.2_A5_*': [FAIL], - 'language/expressions/prefix-decrement/S11.4.5_A5_*': [FAIL], - 'language/expressions/prefix-increment/S11.4.4_A5_*': [FAIL], - 'language/statements/variable/binding-resolution': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4895 - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/tonumber-value-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/infinity-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/BigInt/infinity-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/enumerate-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/enumerate-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/infinity-with-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/infinity-with-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-detached-buffer': [FAIL], - # Some TypedArray methods throw due to the same bug, from Get - 'built-ins/TypedArray/prototype/every/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/every/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/find/predicate-may-detach-buffer': [FAIL], - 'built-ins/TypedArray/prototype/find/BigInt/predicate-may-detach-buffer': [FAIL], - 'built-ins/TypedArray/prototype/findIndex/predicate-may-detach-buffer': [FAIL], - 'built-ins/TypedArray/prototype/findIndex/BigInt/predicate-may-detach-buffer': [FAIL], - 'built-ins/TypedArray/prototype/forEach/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/map/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/map/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/reduce/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/reduceRight/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/some/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/some/BigInt/callbackfn-detachbuffer': [FAIL], - # DataView functions should also throw on detached buffers - 'built-ins/ArrayBuffer/prototype/byteLength/detached-buffer': [FAIL], - 'built-ins/DataView/detached-buffer': [FAIL], - 'built-ins/DataView/prototype/byteLength/detached-buffer': [FAIL], - 'built-ins/DataView/prototype/byteOffset/detached-buffer': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4231 - 'language/eval-code/direct/var-env-lower-lex-catch-non-strict': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4951 - 'language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order': [FAIL], - 'language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=896 - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/character-class-range-end': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/character-class-range-no-dash-end': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/character-class-range-no-dash-start': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/character-class-range-start': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-empty': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-empty-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-invalid': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-invalid-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-only': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-unclosed': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-unopened': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-unopened-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-01': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-01-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-02': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-02-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-03': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-03-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-04': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-04-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-05': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-05-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-06': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-06-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-07': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-07-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-08': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-08-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-09': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-09-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-10': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-10-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-11': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-11-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-12': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-12-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-13': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-13-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-14': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-14-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-binary-property': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-binary-property-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-and-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-and-value-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-existing-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-general-category': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated': [FAIL_PHASE_ONLY], - 'language/literals/regexp/early-err-pattern': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-braced-quantifier-exact': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-braced-quantifier-lower': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-braced-quantifier-range': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-optional-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-optional-negative-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-range-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-range-negative-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-3': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-3-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-4': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-4-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-5': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-empty-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-empty-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-3': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-4': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-5': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-6': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-3': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-6': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-7': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-9-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-numeric-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-dec-esc': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-class-escape': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-extended-pattern-char': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-identity-escape': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-legacy-octal-escape': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-non-empty-class-ranges': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-oob-decimal-escape': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-optional-lookahead': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-optional-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-optional-negative-lookahead': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-optional-negative-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-range-lookahead': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-range-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-range-negative-lookahead': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-range-negative-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-unicode-esc-bounds': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-unicode-esc-non-hex': [FAIL_PHASE_ONLY], - 'language/literals/regexp/unicode-escape-nls-err': [FAIL_PHASE_ONLY], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7829 - 'language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration-nested-in-function': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4628 - 'language/eval-code/direct/non-definable-function-with-function': [FAIL], - 'language/eval-code/direct/non-definable-function-with-variable': [FAIL], - 'language/eval-code/indirect/non-definable-function-with-function': [FAIL], - 'language/eval-code/indirect/non-definable-function-with-variable': [FAIL], - 'language/global-code/script-decl-func-err-non-configurable': [FAIL], - 'language/global-code/script-decl-var-collision': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=5116 - 'built-ins/TypedArray/prototype/fill/fill-values-conversion-operations-consistent-nan': [PASS, FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4698 - 'language/expressions/call/tco-call-args': [SKIP], - 'language/expressions/call/tco-cross-realm-class-construct': [SKIP], - 'language/expressions/call/tco-cross-realm-class-derived-construct': [SKIP], - 'language/expressions/call/tco-cross-realm-fun-call': [SKIP], - 'language/expressions/call/tco-cross-realm-fun-construct': [SKIP], - 'language/expressions/call/tco-member-args': [SKIP], - 'language/expressions/call/tco-non-eval-function': [SKIP], - 'language/expressions/call/tco-non-eval-function-dynamic': [SKIP], - 'language/expressions/call/tco-non-eval-global': [SKIP], - 'language/expressions/call/tco-non-eval-with': [SKIP], - 'language/expressions/comma/tco-final': [SKIP], - 'language/expressions/conditional/tco-cond': [SKIP], - 'language/expressions/conditional/tco-pos': [SKIP], - 'language/expressions/logical-and/tco-right': [SKIP], - 'language/expressions/logical-or/tco-right': [SKIP], - 'language/expressions/tagged-template/tco-call': [SKIP], - 'language/expressions/tagged-template/tco-member': [SKIP], - 'language/expressions/tco-pos': [SKIP], - 'language/statements/block/tco-stmt': [SKIP], - 'language/statements/block/tco-stmt-list': [SKIP], - 'language/statements/do-while/tco-body': [SKIP], - 'language/statements/for/tco-const-body': [SKIP], - 'language/statements/for/tco-let-body': [SKIP], - 'language/statements/for/tco-lhs-body': [SKIP], - 'language/statements/for/tco-var-body': [SKIP], - 'language/statements/if/tco-else-body': [SKIP], - 'language/statements/if/tco-if-body': [SKIP], - 'language/statements/labeled/tco': [SKIP], - 'language/statements/return/tco': [SKIP], - 'language/statements/switch/tco-case-body': [SKIP], - 'language/statements/switch/tco-case-body-dflt': [SKIP], - 'language/statements/switch/tco-dftl-body': [SKIP], - 'language/statements/try/tco-catch': [SKIP], - 'language/statements/try/tco-catch-finally': [SKIP], - 'language/statements/try/tco-finally': [SKIP], - 'language/statements/while/tco-body': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=5327 - 'built-ins/TypedArrayConstructors/internals/Set/key-is-minus-zero': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-minus-zero': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/key-is-not-integer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-integer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds': [FAIL], - - # SharedArrayBuffer tests that require flags - 'built-ins/SharedArrayBuffer/*': ['--harmony-sharedarraybuffer'], - 'built-ins/Atomics/*': ['--harmony-sharedarraybuffer'], - 'built-ins/ArrayBuffer/prototype/byteLength/this-is-sharedarraybuffer': ['--harmony-sharedarraybuffer'], - 'built-ins/ArrayBuffer/prototype/slice/this-is-sharedarraybuffer': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/buffer-does-not-have-arraybuffer-data-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/buffer-reference-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/byteoffset-is-negative-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/custom-proto-if-not-object-fallbacks-to-default-prototype-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/custom-proto-if-object-is-used-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/defined-bytelength-and-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/defined-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/defined-byteoffset-undefined-bytelength-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/excessive-bytelength-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/excessive-byteoffset-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/instance-extensibility-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/negative-bytelength-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/negative-byteoffset-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/newtarget-undefined-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/proto-from-ctor-realm-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/buffer/return-buffer-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/buffer/this-has-no-dataview-internal-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/byteLength/return-bytelength-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/byteLength/this-has-no-dataview-internal-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/byteOffset/return-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/byteOffset/this-has-no-dataview-internal-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/index-is-out-of-range-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/negative-byteoffset-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-value-clean-arraybuffer-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-values-custom-offset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-values-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/this-has-no-dataview-internal-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-abrupt-tonumber-bytelength-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-abrupt-tonumber-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-instance-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/toindex-bytelength-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/toindex-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-other-type-conversions-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-other-type-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-same-type-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-same-type-sab': ['--harmony-sharedarraybuffer'], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8100 - 'built-ins/Atomics/notify/bigint/*': [SKIP], - 'built-ins/Atomics/wait/bigint/*': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=6049 - 'built-ins/Object/internals/DefineOwnProperty/consistent-value-function-caller': [FAIL_SLOPPY], - 'built-ins/Object/internals/DefineOwnProperty/consistent-value-function-arguments': [FAIL_SLOPPY], - - # https://bugs.chromium.org/p/v8/issues/detail?id=6776 - 'built-ins/Proxy/ownKeys/return-duplicate-entries-throws': [FAIL], - 'built-ins/Proxy/ownKeys/return-duplicate-symbol-entries-throws': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7184 - 'annexB/language/expressions/yield/star-iterable-return-emulates-undefined-throws-when-called': [FAIL], - 'annexB/language/statements/for-await-of/iterator-close-return-emulates-undefined-throws-when-called': [FAIL], - 'annexB/language/statements/for-of/iterator-close-return-emulates-undefined-throws-when-called': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7468 - 'language/statements/class/privatename-not-valid-earlyerr-script-8': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=5690 - 'language/expressions/call/eval-spread': [FAIL], - 'language/expressions/call/eval-spread-empty-leading': [FAIL], - 'language/expressions/call/eval-spread-empty-trailing': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8398 - 'intl402/supportedLocalesOf-returned-array-elements-are-frozen': [FAIL], - 'intl402/ListFormat/constructor/supportedLocalesOf/result-type': [FAIL], - 'intl402/RelativeTimeFormat/constructor/supportedLocalesOf/result-type': [FAIL], - 'intl402/Segmenter/constructor/supportedLocalesOf/result-type': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7472 - 'intl402/NumberFormat/currency-digits': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7482 - 'intl402/DateTimeFormat/prototype/resolvedOptions/resolved-locale-with-hc-unicode': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7483 - 'annexB/built-ins/Function/createdynfn-html-close-comment-params': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7669 - 'intl402/Intl/getCanonicalLocales/canonicalized-tags': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8260 - 'intl402/Locale/constructor-non-iana-canon': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8261 - 'intl402/Locale/constructor-options-language-valid': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8262 - 'intl402/Locale/constructor-parse-twice': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8246 - 'intl402/Locale/constructor-tag': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8243 - 'intl402/Locale/extensions-private': [FAIL], - 'intl402/Locale/getters-privateuse': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8236 - 'intl402/Locale/likely-subtags': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8242 - 'intl402/Locale/extensions-grandfathered': [FAIL], - 'intl402/Locale/getters-grandfathered': [FAIL], - 'intl402/Locale/likely-subtags-grandfathered': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8613 - 'intl402/RelativeTimeFormat/prototype/resolvedOptions/order': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=6705 - 'built-ins/Object/assign/strings-and-symbol-order': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7831 - 'language/statements/generators/generator-created-after-decl-inst': [FAIL], - 'language/expressions/generators/generator-created-after-decl-inst': [FAIL], - 'language/expressions/async-generator/generator-created-after-decl-inst': [FAIL], - 'language/statements/async-generator/generator-created-after-decl-inst': [FAIL], - - # await tests that require flags - 'language/expressions/await/async-generator-interleaved': ['--harmony-await-optimization'], - 'language/expressions/await/await-monkey-patched-promise': ['--harmony-await-optimization'], - 'language/expressions/await/for-await-of-interleaved': ['--harmony-await-optimization'], - 'language/expressions/await/async-await-interleaved': ['--harmony-await-optimization'], - - ######################## NEEDS INVESTIGATION ########################### - - # These test failures are specific to the intl402 suite and need investigation - # to be either marked as bugs with issues filed for them or as deliberate - # incompatibilities if the test cases turn out to be broken or ambiguous. - # Some of these are related to v8:4361 in being visible side effects from Intl. - - # https://bugs.chromium.org/p/v8/issues/detail?id=7833 - 'built-ins/Atomics/wait/cannot-suspend-throws': [SKIP], - 'built-ins/Atomics/wait/undefined-index-defaults-to-zero': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8258 - 'intl402/Locale/constructor-options-language-valid-undefined': [FAIL], - 'intl402/NumberFormat/prototype/format/format-fraction-digits-precision': [FAIL], - 'intl402/NumberFormat/prototype/format/format-significant-digits-precision': [FAIL], - - ##################### DELIBERATE INCOMPATIBILITIES ##################### - - # https://github.com/tc39/ecma262/pull/889 - 'annexB/language/function-code/block-decl-func-skip-arguments': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=6538 - - # https://bugs.chromium.org/p/v8/issues/detail?id=6541 - 'language/export/escaped-as-export-specifier': [FAIL], - 'language/export/escaped-from': [FAIL], - 'language/expressions/object/method-definition/escaped-get': [FAIL], - 'language/expressions/object/method-definition/escaped-set': [FAIL], - 'language/import/escaped-as-import-specifier': [FAIL], - 'language/import/escaped-as-namespace-import': [FAIL], - 'language/import/escaped-from': [FAIL], - 'language/statements/for-await-of/escaped-of': [FAIL], - 'language/statements/for-of/escaped-of': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=6543 - 'language/statements/labeled/value-await-non-module-escaped': [FAIL], - 'language/statements/labeled/value-yield-non-strict-escaped': [FAIL], - 'language/expressions/async-arrow-function/escaped-async-line-terminator': [FAIL], - 'language/expressions/class/class-name-ident-await-escaped': [FAIL], - 'language/statements/class/class-name-ident-await-escaped': [FAIL], - - ############################ INVALID TESTS ############################# - - # Test makes unjustified assumptions about the number of calls to SortCompare. - # Test262 Bug: https://bugs.ecmascript.org/show_bug.cgi?id=596 - 'built-ins/Array/prototype/sort/bug_596_1': [PASS, FAIL_OK], - - # https://github.com/tc39/test262/pull/688#pullrequestreview-14025354 - 'built-ins/Function/internals/Construct/derived-this-uninitialized-realm': [FAIL], - - # Date tests that fail in CE(S)T timezone. - # https://bugs.chromium.org/p/v8/issues/detail?id=5449 - 'built-ins/Date/prototype/setFullYear/new-value-time-clip': [PASS, FAIL], - 'built-ins/Date/prototype/setMonth/new-value-time-clip': [PASS, FAIL], - - # Test against internals of harness; we plug in differently - 'harness/detachArrayBuffer': [SKIP], - 'harness/detachArrayBuffer-host-detachArrayBuffer': [SKIP], - - ############################ SKIPPED TESTS ############################# - - # These tests take a looong time to run. - 'built-ins/decodeURI/S15.1.3.1_A1.10_T1': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A1.11_T1': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A1.11_T2': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A1.12_T1': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A1.12_T2': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A2.5_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A1.11_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A1.12_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A2.5_T1': [SKIP], - 'language/literals/regexp/S7.8.5_A1.1_T2': [SKIP], - 'language/literals/regexp/S7.8.5_A1.4_T2': [SKIP], - 'language/literals/regexp/S7.8.5_A2.1_T2': [SKIP], - 'language/literals/regexp/S7.8.5_A2.4_T2': [SKIP], - 'built-ins/Array/prototype/slice/S15.4.4.10_A3_T1': [SKIP], - 'built-ins/Array/prototype/slice/S15.4.4.10_A3_T2': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7187 - 'built-ins/Function/prototype/toString/line-terminator-normalisation-CR': [SKIP], - 'language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall': [FAIL], - 'language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall-1': [FAIL], - 'language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall-2': [FAIL], - 'language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall': [FAIL], - 'language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-1': [FAIL], - 'language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-2': [FAIL], - 'language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall': [FAIL], - 'language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall-1': [FAIL], - 'language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall-2': [FAIL], - 'language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall': [FAIL], - 'language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-1': [FAIL], - 'language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-2': [FAIL], - - ############################ SLOW TESTS ############################# - - 'annexB/built-ins/RegExp/RegExp-leading-escape-BMP': [PASS, SLOW], - 'annexB/built-ins/RegExp/RegExp-trailing-escape-BMP': [PASS, SLOW], - 'language/comments/S7.4_A5': [PASS, SLOW], - 'language/comments/S7.4_A6': [PASS, SLOW], - -}], # ALWAYS - -['no_i18n == True', { - # Unicode canonicalization is not available with i18n turned off. - 'built-ins/String/prototype/localeCompare/15.5.4.9_CE': [SKIP], - - # Unicode regexp case mapping is not available with i18n turned off. - 'language/literals/regexp/u-case-mapping': [SKIP], - - # BUG(v8:4437). - 'built-ins/String/prototype/normalize/return-normalized-string': [SKIP], - 'built-ins/String/prototype/normalize/return-normalized-string-from-coerced-form': [SKIP], - 'built-ins/String/prototype/normalize/return-normalized-string-using-default-parameter': [SKIP], - - # Case-conversion is not fully compliant to the Unicode spec with i18n off. - 'built-ins/String/prototype/toLocaleLowerCase/Final_Sigma_U180E': [FAIL], - 'built-ins/String/prototype/toLocaleLowerCase/special_casing_conditional': [FAIL], - 'built-ins/String/prototype/toLocaleLowerCase/supplementary_plane': [FAIL], - 'built-ins/String/prototype/toLowerCase/Final_Sigma_U180E': [FAIL], - 'built-ins/String/prototype/toLowerCase/special_casing_conditional': [FAIL], - 'built-ins/String/prototype/toLowerCase/supplementary_plane': [FAIL], - 'built-ins/String/prototype/toLocaleUpperCase/supplementary_plane': [FAIL], - 'built-ins/String/prototype/toUpperCase/supplementary_plane': [FAIL], - - # Locale-sensitive case-conversion is not available with i18n off. - 'intl402/String/prototype/toLocaleLowerCase/special_casing_Azeri': [FAIL], - 'intl402/String/prototype/toLocaleLowerCase/special_casing_Lithuanian': [FAIL], - 'intl402/String/prototype/toLocaleLowerCase/special_casing_Turkish': [FAIL], - 'intl402/String/prototype/toLocaleUpperCase/special_casing_Azeri': [FAIL], - 'intl402/String/prototype/toLocaleUpperCase/special_casing_Lithuanian': [FAIL], - 'intl402/String/prototype/toLocaleUpperCase/special_casing_Turkish': [FAIL], - - # Unicode property escapes unavailable without i18n - 'built-ins/RegExp/property-escapes/*': [SKIP], - 'built-ins/RegExp/named-groups/unicode-property-names': [SKIP], -}], # no_i18n == True - -['arch == arm or arch == mipsel or arch == mips or arch == arm64 or arch == mips64 or arch == mips64el', { - - # TODO(mstarzinger): Causes stack overflow on simulators due to eager - # compilation of parenthesized function literals. Needs investigation. - 'language/statements/function/S13.2.1_A1_T1': [SKIP], - - # BUG(3251225): Tests that timeout with --noopt. - 'built-ins/decodeURI/S15.1.3.1_A2.4_T1': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A2.5_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A2.4_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A2.5_T1': [SKIP], - 'built-ins/encodeURI/S15.1.3.3_A2.3_T1': [SKIP], - 'built-ins/encodeURIComponent/S15.1.3.4_A2.3_T1': [SKIP], -}], # 'arch == arm or arch == mipsel or arch == mips or arch == arm64' - -['byteorder == big', { - # Test failures on big endian platforms due to the way the tests - # are written - - # https://github.com/tc39/test262/issues/757 - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type': [SKIP], -}], - -['asan == True', { - # BUG(v8:4653): Test262 tests which rely on quit() are not compatible with - # asan's --omit-quit flag. - 'built-ins/Promise/prototype/then/deferred-is-resolved-value': [SKIP], - 'language/expressions/dynamic-import/always-create-new-promise': [SKIP], - 'language/expressions/dynamic-import/assign-expr-get-value-abrupt-throws': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/additive-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/array-literal': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/arrow-function': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/await-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/await-identifier': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/call-expr-arguments': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/call-expr-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/call-expr-identifier': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/cover-call-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/cover-parenthesized-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/identifier': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/import-meta': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/lhs-assign-operator-assign-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/lhs-eq-assign-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/lhs-eq-assign-expr-nostrict': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/logical-and-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/logical-or-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/member-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/new-target': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/object-literal': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/tagged-function-call': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/ternary': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/this': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/unary-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/yield-assign-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/yield-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/yield-identifier': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/yield-star': [SKIP], - 'language/expressions/dynamic-import/await-import-evaluation': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/custom-primitive': [SKIP], - 'language/expressions/dynamic-import/double-error-resolution': [SKIP], - 'language/expressions/dynamic-import/double-error-resolution-promise': [SKIP], - 'language/expressions/dynamic-import/escape-sequence-import': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-cls-anon': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-cls-named': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-cls-name-meth': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-cls-anon': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-cls-named': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-cls-name-meth': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-fn-anon': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-fn-named': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-gen-anon': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-gen-named': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-in': [SKIP], - 'language/expressions/dynamic-import/eval-rqstd-once': [SKIP], - 'language/expressions/dynamic-import/eval-self-once-module': [SKIP], - 'language/expressions/dynamic-import/eval-self-once-script': [SKIP], - 'language/expressions/dynamic-import/for-await-resolution-and-error-agen': [SKIP], - 'language/expressions/dynamic-import/for-await-resolution-and-error-agen-yield': [SKIP], - 'language/expressions/dynamic-import/for-await-resolution-and-error': [SKIP], - 'language/expressions/dynamic-import/imported-self-update': [SKIP], - 'language/expressions/dynamic-import/indirect-resolution': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-define-own-property': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-delete-exported-init-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-delete-exported-init-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-delete-non-exported-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-delete-non-exported-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-extensible': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-direct': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-indirect': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-props-nrml': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-found-init': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-own-property-sym': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-str-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-sym-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-sym-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-has-property-str-found-init': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-has-property-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-has-property-sym-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-has-property-sym-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-no-iterator': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-own-property-keys-sort': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-object': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-reflect': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-prop-descs': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-prototype': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-prototype-of': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-prototype-of-null': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-same-values-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-same-values-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-Symbol-toStringTag': [SKIP], - 'language/expressions/dynamic-import/namespace/default-property-not-set-own': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-define-own-property': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-delete-exported-init-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-delete-exported-init-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-delete-non-exported-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-delete-non-exported-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-extensible': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-direct': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-indirect': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-props-nrml': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-found-init': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-sym': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-str-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-found-init': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-no-iterator': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-own-property-keys-sort': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-object': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-reflect': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-prop-descs': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-prototype': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of-null': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-same-values-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-same-values-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-Symbol-toStringTag': [SKIP], - 'language/expressions/dynamic-import/returns-promise': [SKIP], - 'language/expressions/dynamic-import/reuse-namespace-object': [SKIP], - 'language/expressions/dynamic-import/reuse-namespace-object-from-import': [SKIP], - 'language/expressions/dynamic-import/reuse-namespace-object-from-script': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-10-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-11-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-12-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-13-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-14-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-15-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-16-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-17-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-1-update-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-2-update-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-3-update-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-4-update-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-5-lhs-equals-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-6-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-7-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-8-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-9-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/callexpression-arguments': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/callexpression-templateliteral': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-labeled-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-labeled-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-labeled-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-do-while-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-do-while-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-do-while-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-braceless-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-braceless-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-braceless-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-return-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-return-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-return-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-braceless-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-braceless-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-braceless-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-while-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-while-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-while-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-expression-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-expression-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-expression-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/new-covered-expression-is-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/top-level-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/top-level-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/top-level-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/update-to-dynamic-import': [SKIP], - 'language/expressions/dynamic-import/usage-from-eval': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-specifier-tostring': [SKIP], -}], # asan == True - -['asan == True or msan == True or tsan == True', { - # https://bugs.chromium.org/p/v8/issues/detail?id=4639 - # The failed allocation causes an asan/msan/tsan error - 'built-ins/ArrayBuffer/allocation-limit': [SKIP], - 'built-ins/ArrayBuffer/length-is-too-large-throws': [SKIP], - 'built-ins/SharedArrayBuffer/allocation-limit': [SKIP], - 'built-ins/SharedArrayBuffer/length-is-too-large-throws': [SKIP], -}], # asan == True or msan == True or tsan == True - -['variant == no_wasm_traps', { - '*': [SKIP], -}], # variant == no_wasm_traps - -['variant != default or arch == arm or arch == arm64 or arch == mipsel or arch == mips or arch == mips64 or arch == mips64el', { - # These tests take a long time to run - 'built-ins/RegExp/property-escapes/generated/*': [SKIP], -}], # variant != default or arch == arm or arch == arm64 - -['system == windows', { - # https://crbug.com/856119 - 'intl402/DateTimeFormat/prototype/resolvedOptions/basic': [SKIP], -}], # system == windows - -] - - /* - ********************************** test262-automation ********************************** - Summary: The two files have now diverged. - File Status: Partially curated & modified. - Source Status: Modified since its export. - Below is the current and modified source which was exported on Mon Feb 04 2019 19:40:41 GMT+0000 (Coordinated Universal Time) - */ - # Copyright 2011 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -[ - -[ALWAYS, { - ###################### MISSING ES6 FEATURES ####################### - - # https://code.google.com/p/v8/issues/detail?id=4248 - 'language/expressions/compound-assignment/S11.13.2_A5.*': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A6.*': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.10_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.11_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.1_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.2_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.3_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.4_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.5_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.6_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.7_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.8_T4': [FAIL], - 'language/expressions/compound-assignment/S11.13.2_A7.9_T4': [FAIL], - 'language/statements/with/unscopables-inc-dec': [FAIL], - - # https://code.google.com/p/v8/issues/detail?id=4249 - 'language/expressions/assignment/S11.13.1_A7_T1': [FAIL], - 'language/expressions/assignment/S11.13.1_A7_T2': [FAIL], - 'language/expressions/assignment/S11.13.1_A7_T3': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A6_T3': [FAIL], - 'language/expressions/postfix-decrement/S11.3.2_A6_T3': [FAIL], - 'language/expressions/prefix-decrement/S11.4.5_A6_T3': [FAIL], - 'language/expressions/prefix-increment/S11.4.4_A6_T3': [FAIL], - - # https://code.google.com/p/v8/issues/detail?id=4250 - 'language/expressions/assignment/S11.13.1_A5*': [FAIL], - 'language/expressions/assignment/S11.13.1_A6*': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4709 - 'built-ins/Promise/reject-function-name': [FAIL], - 'built-ins/Promise/resolve-function-name': [FAIL], - 'built-ins/Promise/all/resolve-element-function-name': [FAIL], - 'built-ins/Promise/executor-function-name': [FAIL], - 'built-ins/Proxy/revocable/revocation-function-name': [FAIL], - 'language/expressions/assignment/fn-name-lhs-cover': [FAIL], - 'language/expressions/assignment/fn-name-lhs-member': [FAIL], - 'language/expressions/function/name': [FAIL], - 'language/expressions/generators/name': [FAIL], - 'intl402/NumberFormat/prototype/format/format-function-name': [FAIL], - 'intl402/DateTimeFormat/prototype/format/format-function-name': [FAIL], - 'intl402/Collator/prototype/compare/compare-function-name': [FAIL], - - # https://code.google.com/p/v8/issues/detail?id=4251 - 'language/expressions/postfix-increment/S11.3.1_A5_T1': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A5_T2': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A5_T3': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A5_T4': [FAIL], - 'language/expressions/postfix-increment/S11.3.1_A5_T5': [FAIL], - 'language/expressions/postfix-decrement/S11.3.2_A5_*': [FAIL], - 'language/expressions/prefix-decrement/S11.4.5_A5_*': [FAIL], - 'language/expressions/prefix-increment/S11.4.4_A5_*': [FAIL], - 'language/statements/variable/binding-resolution': [FAIL], - - # https://code.google.com/p/v8/issues/detail?id=8771 - 'language/computed-property-names/class/static/method-number': [FAIL], - 'language/computed-property-names/class/static/method-string': [FAIL], - 'language/computed-property-names/class/static/method-symbol': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4895 - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/tonumber-value-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/infinity-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Get/BigInt/infinity-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/enumerate-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/enumerate-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/infinity-with-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/infinity-with-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-realm': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-detached-buffer': [FAIL], - # Some TypedArray methods throw due to the same bug, from Get - 'built-ins/TypedArray/prototype/every/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/every/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/find/predicate-may-detach-buffer': [FAIL], - 'built-ins/TypedArray/prototype/find/BigInt/predicate-may-detach-buffer': [FAIL], - 'built-ins/TypedArray/prototype/findIndex/predicate-may-detach-buffer': [FAIL], - 'built-ins/TypedArray/prototype/findIndex/BigInt/predicate-may-detach-buffer': [FAIL], - 'built-ins/TypedArray/prototype/forEach/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/map/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/map/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/reduce/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/reduceRight/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/some/callbackfn-detachbuffer': [FAIL], - 'built-ins/TypedArray/prototype/some/BigInt/callbackfn-detachbuffer': [FAIL], - # DataView functions should also throw on detached buffers - 'built-ins/ArrayBuffer/prototype/byteLength/detached-buffer': [FAIL], - 'built-ins/DataView/detached-buffer': [FAIL], - 'built-ins/DataView/prototype/byteLength/detached-buffer': [FAIL], - 'built-ins/DataView/prototype/byteOffset/detached-buffer': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4951 - 'language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order': [FAIL], - 'language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=896 - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/character-class-range-end': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/character-class-range-no-dash-end': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/character-class-range-no-dash-start': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/character-class-range-start': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-empty': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-empty-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-invalid': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-invalid-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-only': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-unclosed': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-unopened': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/grammar-extension-unopened-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-01': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-01-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-02': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-02-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-03': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-03-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-04': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-04-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-05': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-05-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-06': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-06-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-07': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-07-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-08': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-08-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-09': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-09-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-10': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-10-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-11': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-11-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-12': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-12-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-13': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-13-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-14': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/loose-matching-14-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-binary-property': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-binary-property-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-and-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-and-value-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-existing-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/non-existent-property-value-general-category': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated': [FAIL_PHASE_ONLY], - 'language/literals/regexp/early-err-pattern': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-braced-quantifier-exact': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-braced-quantifier-lower': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-braced-quantifier-range': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-optional-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-optional-negative-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-range-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/invalid-range-negative-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-3': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-3-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-4': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-4-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-5': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-empty-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-empty-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-3': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-4': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-5': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-6': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-3': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-6': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-7': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-9-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-numeric-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier-2': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier': [FAIL_PHASE_ONLY], - 'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-dec-esc': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-class-escape': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-extended-pattern-char': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-identity-escape': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-legacy-octal-escape': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-non-empty-class-ranges': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-oob-decimal-escape': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-optional-lookahead': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-optional-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-optional-negative-lookahead': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-optional-negative-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-range-lookahead': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-range-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-range-negative-lookahead': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-invalid-range-negative-lookbehind': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-unicode-esc-bounds': [FAIL_PHASE_ONLY], - 'language/literals/regexp/u-unicode-esc-non-hex': [FAIL_PHASE_ONLY], - 'language/literals/regexp/unicode-escape-nls-err': [FAIL_PHASE_ONLY], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4628 - 'language/eval-code/direct/non-definable-function-with-function': [FAIL], - 'language/eval-code/direct/non-definable-function-with-variable': [FAIL], - 'language/eval-code/indirect/non-definable-function-with-function': [FAIL], - 'language/eval-code/indirect/non-definable-function-with-variable': [FAIL], - 'language/global-code/script-decl-func-err-non-configurable': [FAIL], - 'language/global-code/script-decl-var-collision': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=5116 - 'built-ins/TypedArray/prototype/fill/fill-values-conversion-operations-consistent-nan': [PASS, FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=4698 - 'language/expressions/call/tco-call-args': [SKIP], - 'language/expressions/call/tco-cross-realm-class-construct': [SKIP], - 'language/expressions/call/tco-cross-realm-class-derived-construct': [SKIP], - 'language/expressions/call/tco-cross-realm-fun-call': [SKIP], - 'language/expressions/call/tco-cross-realm-fun-construct': [SKIP], - 'language/expressions/call/tco-member-args': [SKIP], - 'language/expressions/call/tco-non-eval-function': [SKIP], - 'language/expressions/call/tco-non-eval-function-dynamic': [SKIP], - 'language/expressions/call/tco-non-eval-global': [SKIP], - 'language/expressions/call/tco-non-eval-with': [SKIP], - 'language/expressions/comma/tco-final': [SKIP], - 'language/expressions/conditional/tco-cond': [SKIP], - 'language/expressions/conditional/tco-pos': [SKIP], - 'language/expressions/logical-and/tco-right': [SKIP], - 'language/expressions/logical-or/tco-right': [SKIP], - 'language/expressions/tagged-template/tco-call': [SKIP], - 'language/expressions/tagged-template/tco-member': [SKIP], - 'language/expressions/tco-pos': [SKIP], - 'language/statements/block/tco-stmt': [SKIP], - 'language/statements/block/tco-stmt-list': [SKIP], - 'language/statements/do-while/tco-body': [SKIP], - 'language/statements/for/tco-const-body': [SKIP], - 'language/statements/for/tco-let-body': [SKIP], - 'language/statements/for/tco-lhs-body': [SKIP], - 'language/statements/for/tco-var-body': [SKIP], - 'language/statements/if/tco-else-body': [SKIP], - 'language/statements/if/tco-if-body': [SKIP], - 'language/statements/labeled/tco': [SKIP], - 'language/statements/return/tco': [SKIP], - 'language/statements/switch/tco-case-body': [SKIP], - 'language/statements/switch/tco-case-body-dflt': [SKIP], - 'language/statements/switch/tco-dftl-body': [SKIP], - 'language/statements/try/tco-catch': [SKIP], - 'language/statements/try/tco-catch-finally': [SKIP], - 'language/statements/try/tco-finally': [SKIP], - 'language/statements/while/tco-body': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=5327 - 'built-ins/TypedArrayConstructors/internals/Set/key-is-minus-zero': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-minus-zero': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/key-is-not-integer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-integer': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds': [FAIL], - 'built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds': [FAIL], - - # SharedArrayBuffer tests that require flags - 'built-ins/SharedArrayBuffer/*': ['--harmony-sharedarraybuffer'], - 'built-ins/Atomics/*': ['--harmony-sharedarraybuffer'], - 'built-ins/ArrayBuffer/prototype/byteLength/this-is-sharedarraybuffer': ['--harmony-sharedarraybuffer'], - 'built-ins/ArrayBuffer/prototype/slice/this-is-sharedarraybuffer': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/buffer-does-not-have-arraybuffer-data-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/buffer-reference-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/byteoffset-is-negative-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/custom-proto-if-not-object-fallbacks-to-default-prototype-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/custom-proto-if-object-is-used-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/defined-bytelength-and-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/defined-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/defined-byteoffset-undefined-bytelength-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/excessive-bytelength-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/excessive-byteoffset-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/instance-extensibility-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/negative-bytelength-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/negative-byteoffset-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/newtarget-undefined-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/proto-from-ctor-realm-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/buffer/return-buffer-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/buffer/this-has-no-dataview-internal-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/byteLength/return-bytelength-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/byteLength/this-has-no-dataview-internal-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/byteOffset/return-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/byteOffset/this-has-no-dataview-internal-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/index-is-out-of-range-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/negative-byteoffset-throws-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-value-clean-arraybuffer-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-values-custom-offset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/return-values-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/this-has-no-dataview-internal-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-abrupt-tonumber-bytelength-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-abrupt-tonumber-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/return-instance-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/toindex-bytelength-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/DataView/toindex-byteoffset-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-other-type-conversions-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-other-type-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-same-type-sab': ['--harmony-sharedarraybuffer'], - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-same-type-sab': ['--harmony-sharedarraybuffer'], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8100 - 'built-ins/Atomics/notify/bigint/*': [SKIP], - 'built-ins/Atomics/wait/bigint/*': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=6049 - 'built-ins/Object/internals/DefineOwnProperty/consistent-value-function-caller': [FAIL_SLOPPY], - 'built-ins/Object/internals/DefineOwnProperty/consistent-value-function-arguments': [FAIL_SLOPPY], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7184 - 'annexB/language/expressions/yield/star-iterable-return-emulates-undefined-throws-when-called': [FAIL], - 'annexB/language/statements/for-await-of/iterator-close-return-emulates-undefined-throws-when-called': [FAIL], - 'annexB/language/statements/for-of/iterator-close-return-emulates-undefined-throws-when-called': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7468 - 'language/statements/class/elements/privatename-not-valid-earlyerr-script-8': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=5690 - 'language/expressions/call/eval-spread': [FAIL], - 'language/expressions/call/eval-spread-empty-leading': [FAIL], - 'language/expressions/call/eval-spread-empty-trailing': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8664 - 'intl402/Collator/missing-unicode-ext-value-defaults-to-true': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8717 - 'intl402/Segmenter/constructor/constructor/options-granularity-valid': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7472 - 'intl402/NumberFormat/currency-digits': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7483 - 'annexB/built-ins/Function/createdynfn-html-close-comment-params': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8260 - 'intl402/Locale/constructor-non-iana-canon': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8261 - 'intl402/Locale/constructor-options-language-valid': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8262 - 'intl402/Locale/constructor-parse-twice': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8246 - 'intl402/Locale/constructor-tag': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8243 - 'intl402/Locale/extensions-private': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8236 - 'intl402/Locale/likely-subtags': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8242 - 'intl402/Locale/extensions-grandfathered': [FAIL], - 'intl402/Locale/getters-grandfathered': [FAIL], - 'intl402/Locale/likely-subtags-grandfathered': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7831 - 'language/statements/generators/generator-created-after-decl-inst': [FAIL], - 'language/expressions/generators/generator-created-after-decl-inst': [FAIL], - 'language/expressions/async-generator/generator-created-after-decl-inst': [FAIL], - 'language/statements/async-generator/generator-created-after-decl-inst': [FAIL], - - # await tests that require flags - 'language/expressions/await/async-generator-interleaved': ['--harmony-await-optimization'], - 'language/expressions/await/await-monkey-patched-promise': ['--harmony-await-optimization'], - 'language/expressions/await/for-await-of-interleaved': ['--harmony-await-optimization'], - 'language/expressions/await/async-await-interleaved': ['--harmony-await-optimization'], - - # https://github.com/tc39/test262/issues/2033 - 'language/expressions/class/elements/private-derived-cls-direct-eval-err-contains-supercall': [SKIP], - 'language/expressions/class/elements/private-derived-cls-direct-eval-err-contains-supercall-1': [SKIP], - 'language/expressions/class/elements/private-derived-cls-direct-eval-err-contains-supercall-2': [SKIP], - 'language/expressions/class/elements/private-derived-cls-indirect-eval-err-contains-supercall': [SKIP], - 'language/expressions/class/elements/private-derived-cls-indirect-eval-err-contains-supercall-1': [SKIP], - 'language/expressions/class/elements/private-derived-cls-indirect-eval-err-contains-supercall-2': [SKIP], - 'language/statements/class/elements/private-derived-cls-direct-eval-err-contains-supercall': [SKIP], - 'language/statements/class/elements/private-derived-cls-direct-eval-err-contains-supercall-1': [SKIP], - 'language/statements/class/elements/private-derived-cls-direct-eval-err-contains-supercall-2': [SKIP], - 'language/statements/class/elements/private-derived-cls-indirect-eval-err-contains-supercall': [SKIP], - 'language/statements/class/elements/private-derived-cls-indirect-eval-err-contains-supercall-1': [SKIP], - 'language/statements/class/elements/private-derived-cls-indirect-eval-err-contains-supercall-2': [SKIP], - - # https://github.com/tc39/test262/issues/2034 - 'language/expressions/postfix-decrement/arguments': [SKIP], - 'language/expressions/postfix-decrement/arguments-nostrict': [SKIP], - 'language/expressions/postfix-decrement/eval': [SKIP], - 'language/expressions/postfix-decrement/eval-nostrict': [SKIP], - 'language/expressions/postfix-increment/arguments': [SKIP], - 'language/expressions/postfix-increment/arguments-nostrict': [SKIP], - 'language/expressions/postfix-increment/eval': [SKIP], - 'language/expressions/postfix-increment/eval-nostrict': [SKIP], - 'language/expressions/prefix-decrement/arguments': [SKIP], - 'language/expressions/prefix-decrement/arguments-nostrict': [SKIP], - 'language/expressions/prefix-decrement/eval': [SKIP], - 'language/expressions/prefix-decrement/eval-nostrict': [SKIP], - 'language/expressions/prefix-increment/arguments': [SKIP], - 'language/expressions/prefix-increment/arguments-nostrict': [SKIP], - 'language/expressions/prefix-increment/eval': [SKIP], - 'language/expressions/prefix-increment/eval-nostrict': [SKIP], - - # https://github.com/tc39/proposal-class-fields/issues/215 - 'language/expressions/function/early-errors/invalid-names-call-expression-bad-reference': [FAIL], - 'language/expressions/function/early-errors/invalid-names-call-expression-this': [FAIL], - 'language/expressions/function/early-errors/invalid-names-member-expression-bad-reference': [FAIL], - 'language/expressions/function/early-errors/invalid-names-member-expression-this': [FAIL], - 'language/statements/function/early-errors/invalid-names-call-expression-bad-reference': [FAIL], - 'language/statements/function/early-errors/invalid-names-call-expression-this': [FAIL], - 'language/statements/function/early-errors/invalid-names-member-expression-bad-reference': [FAIL], - 'language/statements/function/early-errors/invalid-names-member-expression-this': [FAIL], - - ######################## NEEDS INVESTIGATION ########################### - - # These test failures are specific to the intl402 suite and need investigation - # to be either marked as bugs with issues filed for them or as deliberate - # incompatibilities if the test cases turn out to be broken or ambiguous. - # Some of these are related to v8:4361 in being visible side effects from Intl. - - # https://bugs.chromium.org/p/v8/issues/detail?id=7833 - 'built-ins/Atomics/wait/cannot-suspend-throws': [SKIP], - 'built-ins/Atomics/wait/undefined-index-defaults-to-zero': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=8258 - 'intl402/Locale/constructor-options-language-valid-undefined': [FAIL], - - ##################### DELIBERATE INCOMPATIBILITIES ##################### - - # https://github.com/tc39/ecma262/pull/889 - 'annexB/language/function-code/block-decl-func-skip-arguments': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=6538 - - # https://bugs.chromium.org/p/v8/issues/detail?id=6541 - 'language/export/escaped-as-export-specifier': [FAIL], - 'language/export/escaped-from': [FAIL], - 'language/expressions/object/method-definition/escaped-get': [FAIL], - 'language/expressions/object/method-definition/escaped-set': [FAIL], - 'language/import/escaped-as-import-specifier': [FAIL], - 'language/import/escaped-as-namespace-import': [FAIL], - 'language/import/escaped-from': [FAIL], - 'language/statements/for-await-of/escaped-of': [FAIL], - 'language/statements/for-of/escaped-of': [FAIL], - - # https://bugs.chromium.org/p/v8/issues/detail?id=6543 - 'language/statements/labeled/value-await-non-module-escaped': [FAIL], - 'language/statements/labeled/value-yield-non-strict-escaped': [FAIL], - 'language/expressions/async-arrow-function/escaped-async-line-terminator': [FAIL], - 'language/expressions/class/class-name-ident-await-escaped': [FAIL], - 'language/statements/class/class-name-ident-await-escaped': [FAIL], - - ############################ INVALID TESTS ############################# - - # Test makes unjustified assumptions about the number of calls to SortCompare. - # Test262 Bug: https://bugs.ecmascript.org/show_bug.cgi?id=596 - 'built-ins/Array/prototype/sort/bug_596_1': [PASS, FAIL_OK], - - # https://github.com/tc39/test262/pull/688#pullrequestreview-14025354 - 'built-ins/Function/internals/Construct/derived-this-uninitialized-realm': [FAIL], - - # Date tests that fail in CE(S)T timezone. - # https://bugs.chromium.org/p/v8/issues/detail?id=5449 - 'built-ins/Date/prototype/setFullYear/new-value-time-clip': [PASS, FAIL], - 'built-ins/Date/prototype/setMonth/new-value-time-clip': [PASS, FAIL], - - # Test against internals of harness; we plug in differently - 'harness/detachArrayBuffer': [SKIP], - 'harness/detachArrayBuffer-host-detachArrayBuffer': [SKIP], - - ############################ SKIPPED TESTS ############################# - - # These tests take a looong time to run. - 'built-ins/decodeURI/S15.1.3.1_A1.10_T1': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A1.11_T1': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A1.11_T2': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A1.12_T1': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A1.12_T2': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A2.5_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A1.11_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A1.12_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A2.5_T1': [SKIP], - 'language/literals/regexp/S7.8.5_A1.1_T2': [SKIP], - 'language/literals/regexp/S7.8.5_A1.4_T2': [SKIP], - 'language/literals/regexp/S7.8.5_A2.1_T2': [SKIP], - 'language/literals/regexp/S7.8.5_A2.4_T2': [SKIP], - 'built-ins/Array/prototype/slice/S15.4.4.10_A3_T1': [SKIP], - 'built-ins/Array/prototype/slice/S15.4.4.10_A3_T2': [SKIP], - - # https://bugs.chromium.org/p/v8/issues/detail?id=7187 - 'built-ins/Function/prototype/toString/line-terminator-normalisation-CR': [SKIP], - - ############################ SLOW TESTS ############################# - - 'annexB/built-ins/RegExp/RegExp-leading-escape-BMP': [PASS, SLOW], - 'annexB/built-ins/RegExp/RegExp-trailing-escape-BMP': [PASS, SLOW], - 'language/comments/S7.4_A5': [PASS, SLOW], - 'language/comments/S7.4_A6': [PASS, SLOW], - -}], # ALWAYS - -['no_i18n == True', { - # Unicode canonicalization is not available with i18n turned off. - 'built-ins/String/prototype/localeCompare/15.5.4.9_CE': [SKIP], - - # Unicode regexp case mapping is not available with i18n turned off. - 'language/literals/regexp/u-case-mapping': [SKIP], - - # BUG(v8:4437). - 'built-ins/String/prototype/normalize/return-normalized-string': [SKIP], - 'built-ins/String/prototype/normalize/return-normalized-string-from-coerced-form': [SKIP], - 'built-ins/String/prototype/normalize/return-normalized-string-using-default-parameter': [SKIP], - - # Case-conversion is not fully compliant to the Unicode spec with i18n off. - 'built-ins/String/prototype/toLocaleLowerCase/Final_Sigma_U180E': [FAIL], - 'built-ins/String/prototype/toLocaleLowerCase/special_casing_conditional': [FAIL], - 'built-ins/String/prototype/toLocaleLowerCase/supplementary_plane': [FAIL], - 'built-ins/String/prototype/toLowerCase/Final_Sigma_U180E': [FAIL], - 'built-ins/String/prototype/toLowerCase/special_casing_conditional': [FAIL], - 'built-ins/String/prototype/toLowerCase/supplementary_plane': [FAIL], - 'built-ins/String/prototype/toLocaleUpperCase/supplementary_plane': [FAIL], - 'built-ins/String/prototype/toUpperCase/supplementary_plane': [FAIL], - - # Locale-sensitive case-conversion is not available with i18n off. - 'intl402/String/prototype/toLocaleLowerCase/special_casing_Azeri': [FAIL], - 'intl402/String/prototype/toLocaleLowerCase/special_casing_Lithuanian': [FAIL], - 'intl402/String/prototype/toLocaleLowerCase/special_casing_Turkish': [FAIL], - 'intl402/String/prototype/toLocaleUpperCase/special_casing_Azeri': [FAIL], - 'intl402/String/prototype/toLocaleUpperCase/special_casing_Lithuanian': [FAIL], - 'intl402/String/prototype/toLocaleUpperCase/special_casing_Turkish': [FAIL], - - # Unicode property escapes unavailable without i18n - 'built-ins/RegExp/property-escapes/*': [SKIP], - 'built-ins/RegExp/named-groups/unicode-property-names': [SKIP], -}], # no_i18n == True - -['arch == arm or arch == mipsel or arch == mips or arch == arm64 or arch == mips64 or arch == mips64el', { - - # TODO(mstarzinger): Causes stack overflow on simulators due to eager - # compilation of parenthesized function literals. Needs investigation. - 'language/statements/function/S13.2.1_A1_T1': [SKIP], - - # BUG(3251225): Tests that timeout with --noopt. - 'built-ins/decodeURI/S15.1.3.1_A2.4_T1': [SKIP], - 'built-ins/decodeURI/S15.1.3.1_A2.5_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A2.4_T1': [SKIP], - 'built-ins/decodeURIComponent/S15.1.3.2_A2.5_T1': [SKIP], - 'built-ins/encodeURI/S15.1.3.3_A2.3_T1': [SKIP], - 'built-ins/encodeURIComponent/S15.1.3.4_A2.3_T1': [SKIP], -}], # 'arch == arm or arch == mipsel or arch == mips or arch == arm64' - -['byteorder == big', { - # Test failures on big endian platforms due to the way the tests - # are written - - # https://github.com/tc39/test262/issues/757 - 'built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type': [SKIP], -}], - -['asan == True', { - # BUG(v8:4653): Test262 tests which rely on quit() are not compatible with - # asan's --omit-quit flag. - 'built-ins/Promise/prototype/then/deferred-is-resolved-value': [SKIP], - 'language/expressions/dynamic-import/always-create-new-promise': [SKIP], - 'language/expressions/dynamic-import/assign-expr-get-value-abrupt-throws': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/additive-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/array-literal': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/arrow-function': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/await-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/await-identifier': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/call-expr-arguments': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/call-expr-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/call-expr-identifier': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/cover-call-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/cover-parenthesized-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/identifier': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/import-meta': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/lhs-assign-operator-assign-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/lhs-eq-assign-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/lhs-eq-assign-expr-nostrict': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/logical-and-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/logical-or-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/member-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/new-target': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/object-literal': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/tagged-function-call': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/ternary': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/this': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/unary-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/yield-assign-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/yield-expr': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/yield-identifier': [SKIP], - 'language/expressions/dynamic-import/assignment-expression/yield-star': [SKIP], - 'language/expressions/dynamic-import/await-import-evaluation': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-arrow-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-return-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-function-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-async-gen-return-await-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-block-labeled-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-do-while-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-else-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-function-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-if-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/nested-while-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-typeerror': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-urierror': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-eval-script-code-target': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-file-does-not-exist': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-ambiguous-import': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-circular': [SKIP], - 'language/expressions/dynamic-import/catch/top-level-import-catch-specifier-tostring-abrupt-rejects': [SKIP], - 'language/expressions/dynamic-import/custom-primitive': [SKIP], - 'language/expressions/dynamic-import/double-error-resolution': [SKIP], - 'language/expressions/dynamic-import/double-error-resolution-promise': [SKIP], - 'language/expressions/dynamic-import/escape-sequence-import': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-cls-anon': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-cls-named': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-cls-name-meth': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-cls-anon': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-cls-named': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-cls-name-meth': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-fn-anon': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-fn-named': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-gen-anon': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-gen-named': [SKIP], - 'language/expressions/dynamic-import/eval-export-dflt-expr-in': [SKIP], - 'language/expressions/dynamic-import/eval-rqstd-once': [SKIP], - 'language/expressions/dynamic-import/eval-self-once-module': [SKIP], - 'language/expressions/dynamic-import/eval-self-once-script': [SKIP], - 'language/expressions/dynamic-import/for-await-resolution-and-error-agen': [SKIP], - 'language/expressions/dynamic-import/for-await-resolution-and-error-agen-yield': [SKIP], - 'language/expressions/dynamic-import/for-await-resolution-and-error': [SKIP], - 'language/expressions/dynamic-import/imported-self-update': [SKIP], - 'language/expressions/dynamic-import/indirect-resolution': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-define-own-property': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-delete-exported-init-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-delete-exported-init-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-delete-non-exported-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-delete-non-exported-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-extensible': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-direct': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-indirect': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-props-nrml': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-found-init': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-own-property-sym': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-str-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-sym-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-get-sym-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-has-property-str-found-init': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-has-property-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-has-property-sym-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-has-property-sym-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-no-iterator': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-own-property-keys-sort': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-object': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-reflect': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-prop-descs': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-prototype': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-prototype-of': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-prototype-of-null': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-same-values-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-same-values-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-set-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/await-ns-Symbol-toStringTag': [SKIP], - 'language/expressions/dynamic-import/namespace/default-property-not-set-own': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-define-own-property': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-delete-exported-init-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-delete-exported-init-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-delete-non-exported-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-delete-non-exported-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-extensible': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-direct': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-indirect': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-props-nrml': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-found-init': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-sym': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-str-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-found-init': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-not-found': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-no-iterator': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-own-property-keys-sort': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-object': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-reflect': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-prop-descs': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-prototype': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of-null': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-same-values-no-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-same-values-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-set-strict': [SKIP], - 'language/expressions/dynamic-import/namespace/promise-then-ns-Symbol-toStringTag': [SKIP], - 'language/expressions/dynamic-import/returns-promise': [SKIP], - 'language/expressions/dynamic-import/reuse-namespace-object': [SKIP], - 'language/expressions/dynamic-import/reuse-namespace-object-from-import': [SKIP], - 'language/expressions/dynamic-import/reuse-namespace-object-from-script': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-10-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-11-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-12-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-13-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-14-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-15-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-16-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-17-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-1-update-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-2-update-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-3-update-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-4-update-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-5-lhs-equals-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-6-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-7-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-8-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/invalid-asssignmenttargettype-reference-error-9-lhs-assignment-operator-assignment-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-arrow-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-block-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-do-while-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-else-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-function-return-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-if-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-while-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-expression-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/nested-with-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-assignment-expr-not-optional': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-no-new-call-expression': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-no-rest-param': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-not-extensible-args': [SKIP], - 'language/expressions/dynamic-import/syntax/invalid/top-level-not-extensible-no-trailing-comma': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/callexpression-arguments': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/callexpression-templateliteral': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-arrow-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-function-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-labeled-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-labeled-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-labeled-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-block-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-do-while-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-do-while-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-do-while-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-braceless-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-braceless-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-braceless-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-else-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-return-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-return-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-return-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-function-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-braceless-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-braceless-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-braceless-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-if-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-while-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-while-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-while-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-expression-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-expression-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-expression-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/nested-with-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/new-covered-expression-is-valid': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/top-level-empty-str-is-valid-assign-expr': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/top-level-nested-imports': [SKIP], - 'language/expressions/dynamic-import/syntax/valid/top-level-script-code-valid': [SKIP], - 'language/expressions/dynamic-import/update-to-dynamic-import': [SKIP], - 'language/expressions/dynamic-import/usage-from-eval': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-arrow-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-return-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-function-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-async-gen-return-await-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-block-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-do-while-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-else-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-function-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-braceless-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-if-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/nested-while-import-then-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/syntax-nested-block-labeled-specifier-tostring': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update-dflt': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-eval-script-code-host-resolves-module-code': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-is-call-expression-square-brackets': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-returns-thenable': [SKIP], - 'language/expressions/dynamic-import/usage/top-level-import-then-specifier-tostring': [SKIP], -}], # asan == True - -['asan == True or msan == True or tsan == True', { - # https://bugs.chromium.org/p/v8/issues/detail?id=4639 - # The failed allocation causes an asan/msan/tsan error - 'built-ins/ArrayBuffer/allocation-limit': [SKIP], - 'built-ins/ArrayBuffer/length-is-too-large-throws': [SKIP], - 'built-ins/SharedArrayBuffer/allocation-limit': [SKIP], - 'built-ins/SharedArrayBuffer/length-is-too-large-throws': [SKIP], -}], # asan == True or msan == True or tsan == True - -['variant == interpreted_regexp', { - # Call stack exceeded: https://crbug.com/v8/8678 - 'built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier-flags-u': [SKIP], - 'built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier-flags-u': [SKIP], - 'built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier-flags-u': [SKIP], -}], # variant == interpreted_regexp - -############################################################################## -['variant == jitless', { - # https://crbug.com/v8/7777 - 'built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier-flags-u': [SKIP], - 'built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier-flags-u': [SKIP], - 'built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier-flags-u': [SKIP], -}], # variant == jitless - -['variant == no_wasm_traps', { - '*': [SKIP], -}], # variant == no_wasm_traps - -['variant != default or arch == arm or arch == arm64 or arch == mipsel or arch == mips or arch == mips64 or arch == mips64el', { - # These tests take a long time to run - 'built-ins/RegExp/property-escapes/generated/*': [SKIP], -}], # variant != default or arch == arm or arch == arm64 - -['system == windows', { - # https://crbug.com/856119 - 'intl402/DateTimeFormat/prototype/resolvedOptions/basic': [SKIP], -}], # system == windows - -] diff --git a/implementation-contributed/v8/test262/testcfg.py b/implementation-contributed/v8/test262/testcfg.py deleted file mode 100644 index 8bec9965e28..00000000000 --- a/implementation-contributed/v8/test262/testcfg.py +++ /dev/null @@ -1,254 +0,0 @@ -# Copyright 2012 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -import imp -import itertools -import os -import re -import sys - -from testrunner.local import statusfile -from testrunner.local import testsuite -from testrunner.local import utils -from testrunner.objects import testcase -from testrunner.outproc import base as outproc -from testrunner.outproc import test262 - - -# TODO(littledan): move the flag mapping into the status file -FEATURE_FLAGS = { - 'class-fields-public': '--harmony-public-fields', - 'class-static-fields-public': '--harmony-class-fields', - 'class-fields-private': '--harmony-private-fields', - 'class-static-fields-private': '--harmony-private-fields', - 'String.prototype.matchAll': '--harmony-string-matchall', - 'Symbol.matchAll': '--harmony-string-matchall', - 'numeric-separator-literal': '--harmony-numeric-separator', - 'Intl.ListFormat': '--harmony-intl-list-format', - 'Intl.Locale': '--harmony-locale', - 'Intl.Segmenter': '--harmony-intl-segmenter', - 'Symbol.prototype.description': '--harmony-symbol-description', - 'globalThis': '--harmony-global', - 'well-formed-json-stringify': '--harmony-json-stringify', - 'export-star-as-namespace-from-module': '--harmony-namespace-exports', - 'Object.fromEntries': '--harmony-object-from-entries', -} - -SKIPPED_FEATURES = set(['class-methods-private', - 'class-static-methods-private', - 'Intl.NumberFormat-unified']) - -DATA = os.path.join(os.path.dirname(os.path.abspath(__file__)), "data") - -TEST_262_HARNESS_FILES = ["sta.js", "assert.js"] -TEST_262_NATIVE_FILES = ["detachArrayBuffer.js"] - -TEST_262_SUITE_PATH = ["data", "test"] -TEST_262_HARNESS_PATH = ["data", "harness"] -TEST_262_TOOLS_PATH = ["harness", "src"] -TEST_262_LOCAL_TESTS_PATH = ["local-tests", "test"] - -TEST_262_RELPATH_REGEXP = re.compile( - r'.*[\\/]test[\\/]test262[\\/][^\\/]+[\\/]test[\\/](.*)\.js') - -sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), - *TEST_262_TOOLS_PATH)) - - -class VariantsGenerator(testsuite.VariantsGenerator): - def gen(self, test): - flags_set = self._get_flags_set(test) - test_record = test.test_record - - # Add a reverse test ensuring that FAIL_PHASE_ONLY is only used for tests - # that actually fail to throw an exception at wrong phase. - phase_variants = [''] - if test.fail_phase_only: - phase_variants.append('-fail-phase-reverse') - - for phase_var in phase_variants: - for n, variant in enumerate(self._get_variants(test)): - flags = flags_set[variant][0] - if 'noStrict' in test_record: - yield (variant, flags, str(n) + phase_var) - elif 'onlyStrict' in test_record: - yield (variant, flags + ['--use-strict'], 'strict-%d' % n + phase_var) - else: - yield (variant, flags, str(n)) - yield (variant, flags + ['--use-strict'], 'strict-%d' % n + phase_var) - - -class TestSuite(testsuite.TestSuite): - # Match the (...) in '/path/to/v8/test/test262/subdir/test/(...).js' - # In practice, subdir is data or local-tests - - def __init__(self, *args, **kwargs): - super(TestSuite, self).__init__(*args, **kwargs) - self.testroot = os.path.join(self.root, *TEST_262_SUITE_PATH) - self.harnesspath = os.path.join(self.root, *TEST_262_HARNESS_PATH) - self.harness = [os.path.join(self.harnesspath, f) - for f in TEST_262_HARNESS_FILES] - self.harness += [os.path.join(self.root, "harness-adapt.js")] - self.localtestroot = os.path.join(self.root, *TEST_262_LOCAL_TESTS_PATH) - self.parse_test_record = self._load_parse_test_record() - - def _load_parse_test_record(self): - root = os.path.join(self.root, *TEST_262_TOOLS_PATH) - f = None - try: - (f, pathname, description) = imp.find_module("parseTestRecord", [root]) - module = imp.load_module("parseTestRecord", f, pathname, description) - return module.parseTestRecord - except: - print ('Cannot load parseTestRecord; ' - 'you may need to gclient sync for test262') - raise - finally: - if f: - f.close() - - def ListTests(self): - testnames = set() - for dirname, dirs, files in itertools.chain(os.walk(self.testroot), - os.walk(self.localtestroot)): - for dotted in [x for x in dirs if x.startswith(".")]: - dirs.remove(dotted) - if self.test_config.noi18n and "intl402" in dirs: - dirs.remove("intl402") - dirs.sort() - files.sort() - for filename in files: - if not filename.endswith(".js"): - continue - if filename.endswith("_FIXTURE.js"): - continue - fullpath = os.path.join(dirname, filename) - relpath = re.match(TEST_262_RELPATH_REGEXP, fullpath).group(1) - testnames.add(relpath.replace(os.path.sep, "/")) - cases = map(self._create_test, testnames) - return [case for case in cases if len( - SKIPPED_FEATURES.intersection( - case.test_record.get("features", []))) == 0] - - def _test_class(self): - return TestCase - - def _variants_gen_class(self): - return VariantsGenerator - - -class TestCase(testcase.D8TestCase): - def __init__(self, *args, **kwargs): - super(TestCase, self).__init__(*args, **kwargs) - - source = self.get_source() - self.test_record = self.suite.parse_test_record(source, self.path) - self._expected_exception = ( - self.test_record - .get('negative', {}) - .get('type', None) - ) - - # We disallow combining FAIL_PHASE_ONLY with any other fail outcome types. - # Outcome parsing logic in the base class converts all outcomes specified in - # the status file into either FAIL, CRASH or PASS, thus we do not need to - # handle FAIL_OK, FAIL_SLOPPY and various other outcomes. - if self.fail_phase_only: - assert ( - statusfile.FAIL not in self.expected_outcomes and - statusfile.CRASH not in self.expected_outcomes), self.name - - @property - def fail_phase_only(self): - # The FAIL_PHASE_ONLY is defined in tools/testrunner/local/statusfile.py and - # can be used in status files to mark tests that throw an exception at wrong - # phase, e.g. SyntaxError is thrown at execution phase instead of parsing - # phase. See https://crbug.com/v8/8467 for more details. - return statusfile.FAIL_PHASE_ONLY in self._statusfile_outcomes - - @property - def _fail_phase_reverse(self): - return 'fail-phase-reverse' in self.procid - - def _get_files_params(self): - return ( - list(self.suite.harness) + - ([os.path.join(self.suite.root, "harness-agent.js")] - if self.path.startswith('built-ins/Atomics') else []) + - ([os.path.join(self.suite.root, "harness-adapt-donotevaluate.js")] - if self.fail_phase_only and not self._fail_phase_reverse else []) + - self._get_includes() + - (["--module"] if "module" in self.test_record else []) + - [self._get_source_path()] - ) - - def _get_suite_flags(self): - return ( - (["--throws"] if "negative" in self.test_record else []) + - (["--allow-natives-syntax"] - if "detachArrayBuffer.js" in self.test_record.get("includes", []) - else []) + - [flag for (feature, flag) in FEATURE_FLAGS.items() - if feature in self.test_record.get("features", [])] + - ["--no-arguments"] # disable top-level arguments in d8 - ) - - def _get_includes(self): - return [os.path.join(self._base_path(filename), filename) - for filename in self.test_record.get("includes", [])] - - def _base_path(self, filename): - if filename in TEST_262_NATIVE_FILES: - return self.suite.root - else: - return self.suite.harnesspath - - def _get_source_path(self): - filename = self.path + self._get_suffix() - path = os.path.join(self.suite.localtestroot, filename) - if os.path.exists(path): - return path - return os.path.join(self.suite.testroot, filename) - - @property - def output_proc(self): - if self._expected_exception is not None: - return test262.ExceptionOutProc(self.expected_outcomes, - self._expected_exception, - self._fail_phase_reverse) - else: - # We only support fail phase reverse on tests that expect an exception. - assert not self._fail_phase_reverse - - if self.expected_outcomes == outproc.OUTCOMES_PASS: - return test262.PASS_NO_EXCEPTION - return test262.NoExceptionOutProc(self.expected_outcomes) - - -def GetSuite(*args, **kwargs): - return TestSuite(*args, **kwargs) diff --git a/implementation-contributed/v8/test262/upstream-local-tests.sh b/implementation-contributed/v8/test262/upstream-local-tests.sh deleted file mode 100755 index 35e7e30977a..00000000000 --- a/implementation-contributed/v8/test262/upstream-local-tests.sh +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2016 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# usage: test/test262/upstream-local-tests.sh -# This script takes the files which were modified in the test262 local-test -# directory (test/test262/local-tests) in the top patch of the v8 tree and -# creates a new patch in the local test262 checkout (test/test262/data). -# This patch could then hopefully be used for upstreaming tests. -# The script should be run from the top level directory of the V8 checkout. - -git show $1 | grep '+++ b/test/test262/local-tests' | while read test; do - path=${test:6} - datapath=${path/local-tests/data} - echo cp $path $datapath - cp $path $datapath - cd test/test262/data - git add ${datapath:18} || exit 1 - cd ../../../ -done -cd test/test262/data -git commit || exit 1 diff --git a/implementation-contributed/v8/wasm-js/BUILD.gn b/implementation-contributed/v8/wasm-js/BUILD.gn deleted file mode 100644 index 2f7b8c31fbe..00000000000 --- a/implementation-contributed/v8/wasm-js/BUILD.gn +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2018 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -group("v8_wasm_js") { - testonly = true - - data_deps = [ - "../..:d8", - "../../tools:v8_testrunner", - ] - - data = [ - "./", - "../mjsunit/mjsunit.js", - ] -} diff --git a/implementation-contributed/v8/wasm-js/LICENSE.testharness b/implementation-contributed/v8/wasm-js/LICENSE.testharness deleted file mode 100644 index 45896e6be2b..00000000000 --- a/implementation-contributed/v8/wasm-js/LICENSE.testharness +++ /dev/null @@ -1,30 +0,0 @@ -W3C 3-clause BSD License - -http://www.w3.org/Consortium/Legal/2008/03-bsd-license.html - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of works must retain the original copyright notice, - this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the original copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name of the W3C nor the names of its contributors may be - used to endorse or promote products derived from this work without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/implementation-contributed/v8/wasm-js/testcfg.py b/implementation-contributed/v8/wasm-js/testcfg.py deleted file mode 100644 index b0763e008a7..00000000000 --- a/implementation-contributed/v8/wasm-js/testcfg.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2018 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import os -import re - -from testrunner.local import testsuite -from testrunner.objects import testcase - -ANY_JS = ".any.js" -WPT_ROOT = "/wasm/jsapi/" -META_SCRIPT_REGEXP = re.compile(r"META:\s*script=(.*)") - -class TestSuite(testsuite.TestSuite): - def __init__(self, *args, **kwargs): - super(TestSuite, self).__init__(*args, **kwargs) - self.testroot = os.path.join(self.root, "data", "test", "js-api") - self.mjsunit_js = os.path.join(os.path.dirname(self.root), "mjsunit", - "mjsunit.js") - - def ListTests(self): - tests = [] - for dirname, dirs, files in os.walk(self.testroot): - for dotted in [x for x in dirs if x.startswith(".")]: - dirs.remove(dotted) - dirs.sort() - files.sort() - for filename in files: - if (filename.endswith(ANY_JS)): - fullpath = os.path.join(dirname, filename) - relpath = fullpath[len(self.testroot) + 1 : -len(ANY_JS)] - testname = relpath.replace(os.path.sep, "/") - test = self._create_test(testname) - tests.append(test) - return tests - - def _test_class(self): - return TestCase - - -class TestCase(testcase.D8TestCase): - def _get_files_params(self): - files = [os.path.join(self.suite.mjsunit_js), - os.path.join(self.suite.root, "testharness.js")] - - source = self.get_source() - for script in META_SCRIPT_REGEXP.findall(source): - if script.startswith(WPT_ROOT): - # Matched an absolute path, strip the root and replace it with our - # local root. - script = os.path.join(self.suite.testroot, script[len(WPT_ROOT):]) - elif not script.startswith("/"): - # Matched a relative path, prepend this test's directory. - thisdir = os.path.dirname(self._get_source_path()) - script = os.path.join(thisdir, script) - else: - raise Exception("Unexpected absolute path for script: \"%s\"" % script); - - files.append(script) - - files.extend([ - self._get_source_path(), - os.path.join(self.suite.root, "testharness-after.js") - ]) - return files - - def _get_source_path(self): - # All tests are named `path/name.any.js` - return os.path.join(self.suite.testroot, self.path + ANY_JS) - - -def GetSuite(*args, **kwargs): - return TestSuite(*args, **kwargs) diff --git a/implementation-contributed/v8/wasm-js/testharness-after.js b/implementation-contributed/v8/wasm-js/testharness-after.js deleted file mode 100644 index 9520be1c9bd..00000000000 --- a/implementation-contributed/v8/wasm-js/testharness-after.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Uses lastPromise defined in testharness.js - -assertPromiseResult(lastPromise, _ => { - if (failures.length > 0) { - let message = 'Some tests FAILED:\n'; - for (const failure of failures) { - message += ` ${failure}\n`; - } - - failWithMessage(message); - } -}); diff --git a/implementation-contributed/v8/wasm-js/testharness.js b/implementation-contributed/v8/wasm-js/testharness.js deleted file mode 100644 index 904a973519e..00000000000 --- a/implementation-contributed/v8/wasm-js/testharness.js +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Implementations of some functions from testharness.js -// See https://github.com/web-platform-tests/wpt/blob/master/resources/testharness.js -// Licensed as follows: -// -// Distributed under both the W3C Test Suite License [1] and the W3C -// 3-clause BSD License [2]. To contribute to a W3C Test Suite, see the -// policies and contribution forms [3]. -// [1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license -// [2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license -// [3] http://www.w3.org/2004/10/27-testcases - -const failures = []; - -let lastPromise = Promise.resolve(); - -function test(func, description) { - let maybeErr; - try { func({unreached_func: unreached_func}); } - catch(e) { maybeErr = e; } - if (typeof maybeErr !== 'undefined') { - console.log(`${description}: FAIL. ${maybeErr}`); - failures.push(description); - } else { - console.log(`${description}: PASS.`); - } -} - -function promise_test(func, description) { - lastPromise = lastPromise.then(func) - .then(_ => { - console.log(`${description}: PASS.`); - }) - .catch(err => { - console.log(`${description}: FAIL. ${err}`); - failures.push(description); - }); -} - -const assert_true = assertEquals.bind(null, true); -const assert_false = assertEquals.bind(null, false); - -function same_value(x, y) { - if (y !== y) { - // NaN case - return x!==x; - } - if (x === 0 && y === 0) { - // Distinguish +0 and -0 - return 1/x === 1/y; - } - return x === y; -} - -function assert_equals(expected, found, description) { - if (typeof found != typeof expected) { - assert_true(false, "assert_equals", description, - "expected (" + typeof expected + ") ${expected} but got (" + - typeof found + ") ${found}", {expected:expected, found:found}); - } - assert_true(same_value(found, expected), "assert_equals", description, - "expected ${expected} but got ${found}", - {expected:expected, found:found}); -} - -function assert_not_equals(expected, found, description) { - assert_true(!same_value(found, expected), "assert_not_equals", description, - "got disallowed value ${found}", {found:found}); -} - -function assert_array_equals(actual, expected, description) { - assert_true( - typeof actual === 'object' && actual !== null && 'length' in actual, - 'assert_array_equals', description, 'value is ${actual}, expected array', - {actual: actual}); - assert_true( - actual.length === expected.length, 'assert_array_equals', description, - 'lengths differ, expected ${expected} got ${actual}', - {expected: expected.length, actual: actual.length}); - - for (let i = 0; i < actual.length; i++) { - assert_true( - actual.hasOwnProperty(i) === expected.hasOwnProperty(i), - 'assert_array_equals', description, - 'property ${i}, property expected to be ${expected} but was ${actual}', - { - i: i, - expected: expected.hasOwnProperty(i) ? 'present' : 'missing', - actual: actual.hasOwnProperty(i) ? 'present' : 'missing' - }); - assert_true( - same_value(expected[i], actual[i]), 'assert_array_equals', description, - 'property ${i}, expected ${expected} but got ${actual}', - {i: i, expected: expected[i], actual: actual[i]}); - } -} - -function unreached_func(msg) { - return function trap() { - assert_unreached(msg); - }; -} - -function assert_unreached(description) { - throw new Error(`unreachable:\n${description}`); -} - -function format_value(s) { - // TODO - try { - return String(s); - } catch(e) { - return ``; - } -} - -function promise_rejects(test, expected, promise, description) { - return promise - .then(() => assert_unreached('Should have rejected: ' + description)) - .catch(function(e) { - assert_throws(expected, function() { - throw e; - }, description); - }); -} - -function assert_class_string(object, class_string, description) { - assert_equals( - {}.toString.call(object), '[object ' + class_string + ']', description); -} - -function assert_throws(code, func, description) { - try { - func(); - } catch (e) { - assert_true(e.name === code.name, "expected exception " + code.name + ", got " + e.name); - return; - } - assert_true(false, "expected exception " + code.name + ", no exception thrown"); -} - -function setup(func) { - // TODO need to do anything fancier here? - func(); -} diff --git a/implementation-contributed/v8/wasm-js/wasm-js.status b/implementation-contributed/v8/wasm-js/wasm-js.status deleted file mode 100644 index 16de4f98223..00000000000 --- a/implementation-contributed/v8/wasm-js/wasm-js.status +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2018 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -[ -[ALWAYS, { - # https://bugs.chromium.org/p/v8/issues/detail?id=8633 - 'limits': [SKIP], -}], # ALWAYS - -['arch == s390 or arch == s390x or system == aix', { - # https://bugs.chromium.org/p/v8/issues/detail?id=8402 - 'instance/constructor': [SKIP], - 'constructor/instantiate': [SKIP], -}], # 'arch == s390 or arch == s390x or system == aix' - -############################################################################## -['lite_mode or variant == jitless', { - # TODO(v8:7777): Re-enable once wasm is supported in jitless mode. - '*': [SKIP], -}], # lite_mode or variant == jitless - -]

>>0){o=31;break}j=c[B>>2]|0;k=c[B+4>>2]|0;h=c[B+12>>2]|0;A=c[B+20>>2]|0;z=c[B+28>>2]|0}if((o|0)==12){c[d+44>>2]=99;H=1;i=l;return H|0}else if((o|0)==20){c[d+44>>2]=98;H=1;i=l;return H|0}else if((o|0)==31){c[n>>2]=j;c[m>>2]=k;H=0;i=l;return H|0}else if((o|0)==32){i=l;return d|0}return 0}function vO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=a+24|0;d=c[b>>2]|0;c[a+48>>2]=d;e=a+8|0;f=a+16|0;g=c[f>>2]|0;h=(c[e>>2]|0)+1|0;j=h+(c[a>>2]|0)>>1;c[e>>2]=j;d=g+1+d>>1;c[a+40>>2]=d;g=(h+g>>1)+1|0;j=g+j>>1;c[f>>2]=j;d=g+d>>1;c[a+32>>2]=d;c[b>>2]=j+1+d>>1;b=a+28|0;d=c[b>>2]|0;c[a+52>>2]=d;j=a+12|0;g=a+20|0;f=c[g>>2]|0;h=(c[j>>2]|0)+1|0;e=h+(c[a+4>>2]|0)>>1;c[j>>2]=e;d=f+1+d>>1;c[a+44>>2]=d;f=(h+f>>1)+1|0;e=f+e>>1;c[g>>2]=e;d=f+d>>1;c[a+36>>2]=d;c[b>>2]=e+1+d>>1;i=i;return}function wO(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;k=b+92|0;h=b+40|0;j=c[h>>2]|0;if((c[k>>2]|0)==0){c[b+88>>2]=j;c[k>>2]=j;j=j+32|0;c[h>>2]=j}if(j>>>0>=(c[b+36>>2]|0)>>>0){c[b+44>>2]=98;k=1;i=g;return k|0}h=b+88|0;c[(c[h>>2]|0)+12>>2]=0;c[(c[h>>2]|0)+20>>2]=0;c[(c[h>>2]|0)+16>>2]=0;c[(c[h>>2]|0)+8>>2]=c[b+40>>2];c[(c[h>>2]|0)+4>>2]=0;c[(c[h>>2]|0)+28>>2]=0;c[(c[h>>2]|0)+12>>2]=d[b+180|0]|0;do{if((e|0)==2){if(f<<24>>24==0){break}k=(c[h>>2]|0)+12|0;c[k>>2]=c[k>>2]|16}else if((e|0)==1){k=(c[h>>2]|0)+12|0;c[k>>2]=c[k>>2]|8;if(f<<24>>24==0){break}k=(c[h>>2]|0)+12|0;c[k>>2]=c[k>>2]|32}else{c[b+44>>2]=20;k=1;i=g;return k|0}}while(0);f=b+96|0;if((c[f>>2]|0)==0){c[f>>2]=c[h>>2]}c[b+100>>2]=e;a[b+86|0]=1;a[b+87|0]=0;k=0;i=g;return k|0}function xO(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var 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;j=i;k=b+52|0;m=c[k>>2]|0;o=c[m+(d<<3)+4>>2]|0;r=c[m+4>>2]|0;h=b+40|0;n=c[h>>2]|0;a:do{if(!((r|0)<(f|0)|(o|0)>(g|0))){l=b+4|0;p=c[l>>2]|0;q=0-p|0;r=r&q;g=(r|0)>(g|0)?g:r;do{if((o|0)<(f|0)){o=f;q=n}else{f=o+ -1+p&q;if((o&65535&p+65535|0)!=0){o=f;q=n;break}o=b+87|0;if((a[o]|0)!=0){a[o]=0;n=n+ -4|0}c[n>>2]=c[m+(d<<3)>>2];o=f;f=(c[l>>2]|0)+f|0;q=n+4|0}}while(0);n=b+86|0;if((a[n]|0)!=0){c[(c[b+88>>2]|0)+20>>2]=o>>c[b>>2];a[n]=0}if((g|0)<(f|0)){n=q;break}if((q+((g-f>>c[b>>2])+1<<2)|0)>>>0>=(c[b+36>>2]|0)>>>0){c[h>>2]=q;c[b+44>>2]=98;u=1;i=j;return u|0}n=b+87|0;o=b+16|0;b=0-d|0;r=m;while(1){while(1){a[n]=0;u=c[r+4>>2]|0;if((u|0)<=(f|0)){p=19;break}t=r+(d<<3)|0;s=c[r+(d<<3)+4>>2]|0;u=u-s|0;if((u|0)<(c[o>>2]|0)){p=16;break}fd[e&511](r);if(t>>>0>>0){n=q;break a}else{r=t}}do{if((p|0)==16){t=c[t>>2]|0;c[q>>2]=((da((c[r>>2]|0)-t|0,f-s|0)|0)/(u|0)|0)+t;f=(c[l>>2]|0)+f|0;q=q+4|0}else if((p|0)==19){if((u|0)!=(f|0)){break}a[n]=1;c[q>>2]=c[r>>2];f=(c[l>>2]|0)+f|0;q=q+4|0}}while(0);r=r+(b<<3)|0;if(r>>>0>>0|(f|0)>(g|0)){n=q;break}}}}while(0);c[h>>2]=n;c[k>>2]=(c[k>>2]|0)+(0-d<<3);u=0;i=j;return u|0}function yO(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+16|0;d=c[b>>2]|0;c[a+32>>2]=d;f=a+8|0;e=c[f>>2]|0;d=(d+e|0)/2|0;c[a+24>>2]=d;e=((c[a>>2]|0)+e|0)/2|0;c[f>>2]=e;c[b>>2]=(e+d|0)/2|0;b=a+20|0;d=c[b>>2]|0;c[a+36>>2]=d;e=a+12|0;f=c[e>>2]|0;d=(d+f|0)/2|0;c[a+28>>2]=d;a=((c[a+4>>2]|0)+f|0)/2|0;c[e>>2]=a;c[b>>2]=(a+d|0)/2|0;i=i;return}function zO(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;k=i;l=f-d|0;f=g-e|0;if((f|0)<1|(g|0)<(h|0)|(e|0)>(j|0)){o=0;i=k;return o|0}if((e|0)<(h|0)){d=(_I(l,h-e|0,f)|0)+d|0;n=c[b>>2]|0;m=n;h=h>>n;n=0}else{h=c[b>>2]|0;m=h;h=e>>h;n=(c[b+4>>2]|0)+ -1&e}if((g|0)>(j|0)){e=0}else{e=(c[b+4>>2]|0)+ -1&g;j=g}g=j>>m;do{if((n|0)>0){if((h|0)==(g|0)){o=0;i=k;return o|0}else{d=(_I(l,(c[b+4>>2]|0)-n|0,f)|0)+d|0;j=b+87|0;h=h+1|0;break}}else{j=b+87|0;if((a[j]|0)==0){break}o=b+40|0;c[o>>2]=(c[o>>2]|0)+ -4;a[j]=0}}while(0);a[j]=(e|0)==0|0;e=b+86|0;if((a[e]|0)!=0){c[(c[b+88>>2]|0)+20>>2]=h;a[e]=0}o=g-h|0;n=o+1|0;e=b+40|0;if(((c[e>>2]|0)+(n<<2)|0)>>>0>=(c[b+36>>2]|0)>>>0){c[b+44>>2]=98;o=1;i=k;return o|0}m=b+4|0;b=c[m>>2]|0;if((l|0)>0){b=_I(b,l,f)|0;j=1;l=da(c[m>>2]|0,l)|0}else{l=0-l|0;b=0-(_I(b,l,f)|0)|0;j=-1;l=da(c[m>>2]|0,l)|0}m=(l|0)%(f|0)|0;l=c[e>>2]|0;if((o|0)>-1){o=h+ -1-g|0;g=g+((o|0)>-1?o:-1)+2-h|0;o=0-f|0;h=l;while(1){c[h>>2]=d;d=d+b|0;o=o+m|0;if((o|0)>-1){o=o-f|0;d=d+j|0}n=n+ -1|0;if((n|0)>0){h=h+4|0}else{break}}l=l+(g<<2)|0}c[e>>2]=l;o=0;i=k;return o|0}function AO(a,b){a=a|0;b=b|0;c[a+16>>2]=b;i=i;return 0}function BO(a,b){a=a|0;b=b|0;var e=0;e=i;if(b>>>0>=256){b=0;i=e;return b|0}b=d[(c[a+16>>2]|0)+(b+6)|0]|0;i=e;return b|0}function CO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=c[b+16>>2]|0;h=c[d>>2]|0;g=0;while(1){b=h+1|0;if(b>>>0>=256){b=0;break}h=a[f+(h+7)|0]|0;g=h&255;if(h<<24>>24==0){h=b}else{break}}c[d>>2]=b;i=e;return g|0}function DO(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=i;g=(d[a+2|0]|0)<<8&65535|(d[a+3|0]|0);if((a+(g&65535)|0)>>>0>(c[b+4>>2]|0)>>>0|(g&65535)<262){wJ(b,8)}if((c[b+8>>2]|0)==0){i=e;return 0}f=b+172|0;g=1;a=a+6|0;while(1){if((d[a]|0)>>>0>=(c[f>>2]|0)>>>0){f=6;break}if(g>>>0>=256){f=9;break}g=g+1|0;a=a+1|0}if((f|0)==6){wJ(b,16)}else if((f|0)==9){i=e;return 0}return 0}function EO(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=0;c[b>>2]=((d[a+4|0]|0)<<8&65535|(d[a+5|0]|0))&65535;i=i;return 0}function FO(a,b){a=a|0;b=b|0;var e=0,f=0;e=i;a=c[a+16>>2]|0;if(b>>>0>=65536){f=0;i=e;return f|0}f=b>>>8;do{if((f|0)==0){f=b<<1&510;if(((d[a+(f+6)|0]|0)<<8&65535|(d[a+(f+7)|0]|0))<<16>>16==0){a=a+518|0;break}else{b=0}i=e;return b|0}else{f=f<<1;f=((d[a+(f+6)|0]|0)<<8&65535|(d[a+(f+7)|0]|0))&65528;if((f|0)==0){b=0}else{a=a+(f+518)|0;break}i=e;return b|0}}while(0);f=(d[a+6|0]|0)<<8&65535|(d[a+7|0]|0);b=(b&255)-(((d[a]|0)<<8&65535|(d[a+1|0]|0))&65535)|0;if(b>>>0>=(((d[a+2|0]|0)<<8&65535|(d[a+3|0]|0))&65535)>>>0|f<<16>>16==0){f=0;i=e;return f|0}b=(f&65535)+(b<<1)|0;b=(d[a+(b+6)|0]|0)<<8&65535|(d[a+(b+7)|0]|0);if(b<<16>>16==0){f=0;i=e;return f|0}f=(b&65535)+(((d[a+4|0]|0)<<8&65535|(d[a+5|0]|0))&65535)&65535;i=e;return f|0}function GO(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;a=c[a+16>>2]|0;k=(c[b>>2]|0)+1|0;if(k>>>0>=65536){q=0;o=0;p=b;c[p>>2]=o;i=f;return q|0}g=a+518|0;a:while(1){h=k>>>8;if((h|0)==0){q=k<<1&510;if(((d[a+(q+6)|0]|0)<<8&65535|(d[a+(q+7)|0]|0))<<16>>16==0){m=g;e=6}}else{h=h<<1;h=((d[a+(h+6)|0]|0)<<8&65535|(d[a+(h+7)|0]|0))&65528;if((h|0)!=0){m=a+(h+518)|0;e=6}}do{if((e|0)==6){e=0;o=((d[m]|0)<<8&65535|(d[m+1|0]|0))&65535;j=((d[m+2|0]|0)<<8&65535|(d[m+3|0]|0))&65535;h=((d[m+4|0]|0)<<8&65535|(d[m+5|0]|0))&65535;n=(d[m+6|0]|0)<<8&65535|(d[m+7|0]|0);p=k&255;if(n<<16>>16==0){break}q=p>>>0>>0;l=q?0:p-o|0;k=(q?o:p)+(k&-256)|0;if(l>>>0>=j>>>0){break}n=m+((l<<1)+6+(n&65535))|0;while(1){m=n+2|0;n=(d[n]|0)<<8&65535|(d[n+1|0]|0);if(n<<16>>16!=0){n=(n&65535)+h&65535;if((n|0)!=0){e=13;break a}}l=l+1|0;k=k+1|0;if(l>>>0>>0){n=m}else{break}}}}while(0);k=k+256&-256;if(k>>>0>=65536){n=0;k=0;e=13;break}}if((e|0)==13){q=b;c[q>>2]=k;i=f;return n|0}return 0}function HO(a,b){a=a|0;b=b|0;var 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;f=i;s=(d[a+2|0]|0)<<8&65535|(d[a+3|0]|0);e=a+(s&65535)|0;k=b+4|0;if(e>>>0>(c[k>>2]|0)>>>0|(s&65535)<518){wJ(b,8)}g=b+8|0;l=a+518|0;m=0;o=0;p=a+6|0;while(1){n=p+2|0;p=((d[p]|0)<<8&65535|(d[p+1|0]|0))&65535;if((c[g>>2]|0)>>>0>1){if((p&7|0)!=0){j=6;break}}h=p>>>3;h=h>>>0>m>>>0?h:m;o=o+1|0;if(o>>>0<256){m=h;p=n}else{break}}if((j|0)==6){wJ(b,8)}j=a+((h<<3)+526)|0;if(j>>>0>(c[k>>2]|0)>>>0){wJ(b,8)}k=b+172|0;a=0;o=l;a:while(1){q=(d[o]|0)<<8&65535|(d[o+1|0]|0);r=q&65535;t=(d[o+2|0]|0)<<8&65535|(d[o+3|0]|0);n=t&65535;l=((d[o+4|0]|0)<<8&65535|(d[o+5|0]|0))&65535;m=o+8|0;s=(d[o+6|0]|0)<<8&65535|(d[o+7|0]|0);p=s&65535;do{if(t<<16>>16!=0){if((c[g>>2]|0)>>>0>1){if((q&65535)>255){j=15;break a}if((n+r|0)>>>0>256){j=15;break a}}if(s<<16>>16==0){break}p=p+6|0;if((o+p|0)>>>0>>0){j=19;break a}if((o+(p+(n<<1))|0)>>>0>e>>>0){j=19;break a}if((c[g>>2]|0)==0){break}t=(n<<1)+8|0;n=o+t|0;if(t>>>0>8){o=m}else{break}while(1){m=o+2|0;o=(d[o]|0)<<8&65535|(d[o+1|0]|0);if(o<<16>>16!=0){if(((o&65535)+l&65535)>>>0>=(c[k>>2]|0)>>>0){j=24;break a}}if(m>>>0>>0){o=m}else{break}}}}while(0);a=a+1|0;if(a>>>0>h>>>0){j=27;break}else{o=m}}if((j|0)==15){wJ(b,8)}else if((j|0)==19){wJ(b,9)}else if((j|0)==24){wJ(b,16)}else if((j|0)==27){i=f;return 0}return 0}function IO(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=2;c[b>>2]=((d[a+4|0]|0)<<8&65535|(d[a+5|0]|0))&65535;i=i;return 0}function JO(a,b){a=a|0;b=b|0;c[a+16>>2]=b;c[a+32>>2]=(((d[b+6|0]|0)<<8&65535|(d[b+7|0]|0))&65535)>>>1;c[a+24>>2]=-1;c[a+28>>2]=0;i=i;return 0}function KO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;f=i;i=i+8|0;e=f;c[f>>2]=b;if(b>>>0>65535){f=0;i=d;return f|0}if((c[a+20>>2]&1|0)==0){f=DQ(a,e,0)|0;i=d;return f|0}else{f=BQ(a,e,0)|0;i=d;return f|0}return 0}function LO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;f=c[b>>2]|0;if(f>>>0>65534){f=0;i=d;return f|0}if((c[a+20>>2]&1|0)!=0){f=BQ(a,b,1)|0;i=d;return f|0}e=a+24|0;if((f|0)!=(c[e>>2]|0)){f=DQ(a,b,1)|0;i=d;return f|0}CQ(a);a=c[a+28>>2]|0;if((a|0)==0){f=0;i=d;return f|0}c[b>>2]=c[e>>2];f=a;i=d;return f|0}function MO(b,e){b=b|0;e=e|0;var 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,A=0,B=0,C=0;f=i;C=(d[b+2|0]|0)<<8&65535|(d[b+3|0]|0);j=C&65535;if((C&65535)<16){wJ(e,8)}h=e+4|0;g=e+8|0;do{if((b+j|0)>>>0>(c[h>>2]|0)>>>0){if((c[g>>2]|0)==0){n=(c[h>>2]|0)-b|0;break}else{wJ(e,8)}}else{n=j}}while(0);j=((d[b+6|0]|0)<<8&65535|(d[b+7|0]|0))&65535;do{if((c[g>>2]|0)>>>0>1){if((j&1|0)==0){break}wJ(e,8)}}while(0);j=j>>>1;l=j<<1;if(n>>>0<((j<<3)+16|0)>>>0){wJ(e,8)}do{if((c[g>>2]|0)>>>0>1){C=a[b+9|0]|0;o=((d[b+8|0]|0)<<8&65535|C&255)&65535;m=((d[b+10|0]|0)<<8&65535|(d[b+11|0]|0))&65535;B=a[b+13|0]|0;k=((d[b+12|0]|0)<<8&65535|B&255)&65535;if(((B|C)&1)!=0){wJ(e,8)}o=o>>>1;if(o>>>0>j>>>0|o<<1>>>0>>0){wJ(e,8)}if(((k>>>1)+o|0)!=(j|0)){wJ(e,8)}if((o|0)==(1<>2]|0)>>>0>1){if(((d[b+(l+12)|0]|0)<<8&65535|(d[b+(l+13)|0]|0))<<16>>16==-1){break}wJ(e,8)}}while(0);if((j|0)==0){C=0;i=f;return C|0}l=j+ -1|0;m=e+172|0;b=b+n|0;u=0;x=0;v=0;n=0;z=o;a:while(1){o=z+2|0;z=(d[z]|0)<<8&65535|(d[z+1|0]|0);s=z&65535;p=w+2|0;A=(d[w]|0)<<8&65535|(d[w+1|0]|0);q=A&65535;r=t+2|0;w=((d[t]|0)<<8&65535|(d[t+1|0]|0))&65535;t=y+2|0;C=(d[y]|0)<<8&65535|(d[y+1|0]|0);B=C&65535;if((z&65535)>(A&65535)){g=25;break}do{if(!(s>>>0>x>>>0|(n|0)==0)){if((c[g>>2]|0)!=0){g=28;break a}if(v>>>0>s>>>0|x>>>0>q>>>0){u=u|1;break}else{u=u|2;break}}}while(0);do{if(C<<16>>16==-1){if((c[g>>2]|0)>>>0>1){g=48;break a}if(!((n|0)==(l|0)&z<<16>>16==-1&A<<16>>16==-1)){g=48;break a}}else if(C<<16>>16!=0){v=y+B|0;do{if((c[g>>2]|0)==0){if((n|0)==(l|0)&z<<16>>16==-1&A<<16>>16==-1){break}if(v>>>0>>0){g=40;break a}if((y+((q-s<<1)+2+B)|0)>>>0>(c[h>>2]|0)>>>0){g=40;break a}}else{if(v>>>0>>0){g=36;break a}if((y+((q-s<<1)+2+B)|0)>>>0>b>>>0){g=36;break a}}}while(0);if((c[g>>2]|0)!=0&(z&65535)<(A&65535)){y=s}else{break}while(1){x=v+2|0;v=(d[v]|0)<<8&65535|(d[v+1|0]|0);if(v<<16>>16!=0){if(((v&65535)+w&65535)>>>0>=(c[m>>2]|0)>>>0){g=44;break a}}y=y+1|0;if(y>>>0>>0){v=x}else{break}}}}while(0);n=n+1|0;if(n>>>0>>0){z=o;y=t;w=p;t=r;v=s;x=q}else{g=50;break}}if((g|0)==25){wJ(e,8)}else if((g|0)==28){wJ(e,8)}else if((g|0)==36){wJ(e,8)}else if((g|0)==40){wJ(e,8)}else if((g|0)==44){wJ(e,16)}else if((g|0)==48){wJ(e,8)}else if((g|0)==50){i=f;return u|0}return 0}function NO(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=4;c[b>>2]=((d[a+4|0]|0)<<8&65535|(d[a+5|0]|0))&65535;i=i;return 0}function OO(a,b){a=a|0;b=b|0;var e=0;e=i;a=c[a+16>>2]|0;b=b-(((d[a+6|0]|0)<<8&65535|(d[a+7|0]|0))&65535)|0;if(b>>>0>=(((d[a+8|0]|0)<<8&65535|(d[a+9|0]|0))&65535)>>>0){a=0;i=e;return a|0}b=b<<1;a=((d[a+(b+10)|0]|0)<<8&65535|(d[a+(b+11)|0]|0))&65535;i=e;return a|0}function PO(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;g=c[a+16>>2]|0;f=(c[b>>2]|0)+1|0;h=((d[g+6|0]|0)<<8&65535|(d[g+7|0]|0))&65535;a=((d[g+8|0]|0)<<8&65535|(d[g+9|0]|0))&65535;a:do{if(f>>>0>65535){g=0;f=0}else{f=f>>>0>>0?h:f;j=f-h|0;if(j>>>0>=a>>>0){g=0;f=0;break}h=j;j=g+((j<<1)+10)|0;while(1){k=(d[j]|0)<<8&65535|(d[j+1|0]|0);g=k&65535;if(k<<16>>16!=0){break a}h=h+1|0;if(h>>>0>>0){f=f+1|0;j=j+2|0}else{f=0;break}}}}while(0);c[b>>2]=f;i=e;return g|0}function QO(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=a+10|0;j=b+4|0;if(f>>>0>(c[j>>2]|0)>>>0){wJ(b,8)}k=((d[a+2|0]|0)<<8&65535|(d[a+3|0]|0))&65535;h=(d[a+8|0]|0)<<8&65535|(d[a+9|0]|0);g=h&65535;if((a+k|0)>>>0>(c[j>>2]|0)>>>0){wJ(b,8)}if(k>>>0<((g<<1)+10|0)>>>0){wJ(b,8)}if((c[b+8>>2]|0)==0|h<<16>>16==0){i=e;return 0}a=b+172|0;while(1){if((((d[f]|0)<<8&65535|(d[f+1|0]|0))&65535)>>>0>=(c[a>>2]|0)>>>0){f=9;break}g=g+ -1|0;if((g|0)==0){f=11;break}else{f=f+2|0}}if((f|0)==9){wJ(b,16)}else if((f|0)==11){i=e;return 0}return 0}function RO(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=6;c[b>>2]=((d[a+4|0]|0)<<8&65535|(d[a+5|0]|0))&65535;i=i;return 0}function SO(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;a=c[a+16>>2]|0;j=(d[a+8205|0]|0)<<16|(d[a+8204|0]|0)<<24|(d[a+8206|0]|0)<<8|(d[a+8207|0]|0);if((j|0)==0){j=0;i=e;return j|0}h=a+8208|0;while(1){g=(d[h+1|0]|0)<<16|(d[h]|0)<<24|(d[h+2|0]|0)<<8|(d[h+3|0]|0);f=(d[h+9|0]|0)<<16|(d[h+8|0]|0)<<24|(d[h+10|0]|0)<<8;a=d[h+11|0]|0;if(g>>>0>b>>>0){b=0;h=7;break}j=j+ -1|0;if(((d[h+4|0]|0)<<24|(d[h+5|0]|0)<<16|(d[h+6|0]|0)<<8|(d[h+7|0]|0))>>>0>=b>>>0){h=6;break}if((j|0)==0){b=0;h=7;break}else{h=h+12|0}}if((h|0)==6){j=b-g+(f|a)|0;i=e;return j|0}else if((h|0)==7){i=e;return b|0}return 0}function TO(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=c[a+16>>2]|0;g=(d[f+8205|0]|0)<<16|(d[f+8204|0]|0)<<24|(d[f+8206|0]|0)<<8|(d[f+8207|0]|0);if((g|0)==0){j=0;g=0;h=b;c[h>>2]=g;i=e;return j|0}a=(c[b>>2]|0)+1|0;j=f+8208|0;while(1){h=(d[j+1|0]|0)<<16|(d[j]|0)<<24|(d[j+2|0]|0)<<8|(d[j+3|0]|0);f=j+12|0;a=a>>>0>>0?h:a;if(a>>>0<=((d[j+5|0]|0)<<16|(d[j+4|0]|0)<<24|(d[j+6|0]|0)<<8|(d[j+7|0]|0))>>>0){h=((d[j+8|0]|0)<<24|(d[j+9|0]|0)<<16|(d[j+10|0]|0)<<8|(d[j+11|0]|0))+(a-h)|0;if((h|0)!=0){f=6;break}}g=g+ -1|0;if((g|0)==0){h=0;a=0;f=6;break}else{j=f}}if((f|0)==6){j=b;c[j>>2]=a;i=e;return h|0}return 0}function UO(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;q=a+8208|0;g=b+4|0;if(q>>>0>(c[g>>2]|0)>>>0){wJ(b,8)}p=(d[a+5|0]|0)<<16|(d[a+4|0]|0)<<24|(d[a+6|0]|0)<<8|(d[a+7|0]|0);if(p>>>0>((c[g>>2]|0)-a|0)>>>0|p>>>0<8208){wJ(b,8)}f=(d[a+8205|0]|0)<<16|(d[a+8204|0]|0)<<24|(d[a+8206|0]|0)<<8|(d[a+8207|0]|0);if((a+((f*12|0)+8208)|0)>>>0>(c[g>>2]|0)>>>0){wJ(b,8)}if((f|0)==0){i=e;return 0}h=b+8|0;g=b+172|0;p=0;k=0;a:while(1){n=(d[q+1|0]|0)<<16|(d[q]|0)<<24;m=n|(d[q+2|0]|0)<<8|(d[q+3|0]|0);o=(d[q+5|0]|0)<<16|(d[q+4|0]|0)<<24;j=o|(d[q+6|0]|0)<<8|(d[q+7|0]|0);l=q+12|0;if(m>>>0>j>>>0){a=10;break}if(!((k|0)==0|m>>>0>p>>>0)){a=12;break}do{if((c[h>>2]|0)!=0){p=j-m|0;if((p+((d[q+9|0]|0)<<16|(d[q+8|0]|0)<<24|(d[q+10|0]|0)<<8|(d[q+11|0]|0))|0)>>>0>=(c[g>>2]|0)>>>0){a=15;break a}p=p+1|0;if((n|0)==0){if((o|0)!=0){a=24;break a}if((p|0)==0){break}while(1){if(((d[a+((m>>>3&8191)+12)|0]|0)&128>>>(m&7)|0)!=0){a=27;break a}p=p+ -1|0;if((p|0)==0){break}else{m=m+1|0}}}else{if((p|0)==0){break}while(1){if(((d[a+((m>>>19)+12)|0]|0)&128>>>(m>>>16&7)|0)==0){a=19;break a}if(((d[a+((m>>>3&8191)+12)|0]|0)&128>>>(m&7)|0)==0){a=21;break a}p=p+ -1|0;if((p|0)==0){break}else{m=m+1|0}}}}}while(0);k=k+1|0;if(k>>>0>>0){q=l;p=j}else{a=30;break}}if((a|0)==10){wJ(b,8)}else if((a|0)==12){wJ(b,8)}else if((a|0)==15){wJ(b,16)}else if((a|0)==19){wJ(b,8)}else if((a|0)==21){wJ(b,8)}else if((a|0)==24){wJ(b,8)}else if((a|0)==27){wJ(b,8)}else if((a|0)==30){i=e;return 0}return 0}function VO(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=8;c[b>>2]=(d[a+9|0]|0)<<16|(d[a+8|0]|0)<<24|(d[a+10|0]|0)<<8|(d[a+11|0]|0);i=i;return 0}function WO(a,b){a=a|0;b=b|0;var e=0;e=i;a=c[a+16>>2]|0;b=b-((d[a+13|0]|0)<<16|(d[a+12|0]|0)<<24|(d[a+14|0]|0)<<8|(d[a+15|0]|0))|0;if(b>>>0>=((d[a+17|0]|0)<<16|(d[a+16|0]|0)<<24|(d[a+18|0]|0)<<8|(d[a+19|0]|0))>>>0){a=0;i=e;return a|0}b=b<<1;a=((d[a+(b+20)|0]|0)<<8&65535|(d[a+(b+21)|0]|0))&65535;i=e;return a|0}function XO(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=c[a+16>>2]|0;h=(c[b>>2]|0)+1|0;g=(d[f+13|0]|0)<<16|(d[f+12|0]|0)<<24|(d[f+14|0]|0)<<8|(d[f+15|0]|0);a=(d[f+17|0]|0)<<16|(d[f+16|0]|0)<<24|(d[f+18|0]|0)<<8|(d[f+19|0]|0);h=h>>>0>>0?g:h;j=h-g|0;if(j>>>0>=a>>>0){g=h;j=0;h=b;c[h>>2]=g;i=e;return j|0}g=j;j=f+((j<<1)+20)|0;while(1){k=(d[j]|0)<<8&65535|(d[j+1|0]|0);f=k&65535;if(k<<16>>16!=0){a=5;break}h=h+1|0;g=g+1|0;if(g>>>0>>0){j=j+2|0}else{a=5;break}}if((a|0)==5){k=b;c[k>>2]=h;i=e;return f|0}return 0}function YO(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=a+20|0;j=b+4|0;if(f>>>0>(c[j>>2]|0)>>>0){wJ(b,8)}h=(d[a+5|0]|0)<<16|(d[a+4|0]|0)<<24|(d[a+6|0]|0)<<8|(d[a+7|0]|0);g=(d[a+17|0]|0)<<16|(d[a+16|0]|0)<<24|(d[a+18|0]|0)<<8|(d[a+19|0]|0);if(h>>>0>((c[j>>2]|0)-a|0)>>>0){wJ(b,8)}if(h>>>0<((g<<1)+20|0)>>>0){wJ(b,8)}if((c[b+8>>2]|0)==0|(g|0)==0){i=e;return 0}h=b+172|0;while(1){if((((d[f]|0)<<8&65535|(d[f+1|0]|0))&65535)>>>0>=(c[h>>2]|0)>>>0){f=9;break}g=g+ -1|0;if((g|0)==0){f=11;break}else{f=f+2|0}}if((f|0)==9){wJ(b,16)}else if((f|0)==11){i=e;return 0}return 0}function ZO(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=10;c[b>>2]=(d[a+9|0]|0)<<16|(d[a+8|0]|0)<<24|(d[a+10|0]|0)<<8|(d[a+11|0]|0);i=i;return 0}function _O(b,e){b=b|0;e=e|0;c[b+16>>2]=e;c[b+40>>2]=(d[e+13|0]|0)<<16|(d[e+12|0]|0)<<24|(d[e+14|0]|0)<<8|(d[e+15|0]|0);a[b+24|0]=0;i=i;return 0}function $O(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=i;i=i+8|0;c[e>>2]=b;b=AQ(a,e,0)|0;i=d;return b|0}function aP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=b+28|0;g=c[f>>2]|0;if((g|0)==-1){h=0;i=e;return h|0}h=b+24|0;do{if((a[h]|0)!=0){if((g|0)!=(c[d>>2]|0)){break}zQ(b);if((a[h]|0)==0){h=0;i=e;return h|0}b=c[b+32>>2]|0;if((b|0)==0){h=0;i=e;return h|0}c[d>>2]=c[f>>2];h=b;i=e;return h|0}}while(0);h=AQ(b,d,1)|0;i=e;return h|0}function bP(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;k=a+16|0;h=b+4|0;if(k>>>0>(c[h>>2]|0)>>>0){wJ(b,8)}g=(d[a+5|0]|0)<<16|(d[a+4|0]|0)<<24|(d[a+6|0]|0)<<8|(d[a+7|0]|0);f=(d[a+13|0]|0)<<16|(d[a+12|0]|0)<<24|(d[a+14|0]|0)<<8|(d[a+15|0]|0);if(g>>>0>((c[h>>2]|0)-a|0)>>>0){wJ(b,8)}if(g>>>0<((f*12|0)+16|0)>>>0){wJ(b,8)}if((f|0)==0){i=e;return 0}h=b+8|0;g=b+172|0;a=0;j=0;n=k;while(1){m=(d[n+1|0]|0)<<16|(d[n]|0)<<24|(d[n+2|0]|0)<<8|(d[n+3|0]|0);k=(d[n+5|0]|0)<<16|(d[n+4|0]|0)<<24|(d[n+6|0]|0)<<8|(d[n+7|0]|0);l=n+12|0;if(m>>>0>k>>>0){f=9;break}if(!((j|0)==0|m>>>0>a>>>0)){f=11;break}if((c[h>>2]|0)!=0){if((k-m+((d[n+9|0]|0)<<16|(d[n+8|0]|0)<<24|(d[n+10|0]|0)<<8|(d[n+11|0]|0))|0)>>>0>=(c[g>>2]|0)>>>0){f=14;break}}j=j+1|0;if(j>>>0>>0){n=l;a=k}else{f=16;break}}if((f|0)==9){wJ(b,8)}else if((f|0)==11){wJ(b,8)}else if((f|0)==14){wJ(b,16)}else if((f|0)==16){i=e;return 0}return 0}function cP(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=12;c[b>>2]=(d[a+9|0]|0)<<16|(d[a+8|0]|0)<<24|(d[a+10|0]|0)<<8|(d[a+11|0]|0);i=i;return 0}function dP(b,e){b=b|0;e=e|0;c[b+16>>2]=e;c[b+40>>2]=(d[e+13|0]|0)<<16|(d[e+12|0]|0)<<24|(d[e+14|0]|0)<<8|(d[e+15|0]|0);a[b+24|0]=0;i=i;return 0}function eP(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=i;i=i+8|0;c[e>>2]=b;b=yQ(a,e,0)|0;i=d;return b|0}function fP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=b+28|0;g=c[f>>2]|0;if((g|0)==-1){h=0;i=e;return h|0}h=b+24|0;do{if((a[h]|0)!=0){if((g|0)!=(c[d>>2]|0)){break}xQ(b);if((a[h]|0)==0){h=0;i=e;return h|0}b=c[b+32>>2]|0;if((b|0)==0){h=0;i=e;return h|0}c[d>>2]=c[f>>2];h=b;i=e;return h|0}}while(0);h=yQ(b,d,1)|0;i=e;return h|0}function gP(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;k=a+16|0;h=b+4|0;if(k>>>0>(c[h>>2]|0)>>>0){wJ(b,8)}g=(d[a+5|0]|0)<<16|(d[a+4|0]|0)<<24|(d[a+6|0]|0)<<8|(d[a+7|0]|0);f=(d[a+13|0]|0)<<16|(d[a+12|0]|0)<<24|(d[a+14|0]|0)<<8|(d[a+15|0]|0);if(g>>>0>((c[h>>2]|0)-a|0)>>>0){wJ(b,8)}if(g>>>0<((f*12|0)+16|0)>>>0){wJ(b,8)}if((f|0)==0){i=e;return 0}h=b+8|0;g=b+172|0;a=0;j=0;n=k;while(1){m=(d[n+1|0]|0)<<16|(d[n]|0)<<24|(d[n+2|0]|0)<<8|(d[n+3|0]|0);k=(d[n+5|0]|0)<<16|(d[n+4|0]|0)<<24|(d[n+6|0]|0)<<8|(d[n+7|0]|0);l=n+12|0;if(m>>>0>k>>>0){f=9;break}if(!((j|0)==0|m>>>0>a>>>0)){f=11;break}if((c[h>>2]|0)!=0){if(((d[n+9|0]|0)<<16|(d[n+8|0]|0)<<24|(d[n+10|0]|0)<<8|(d[n+11|0]|0))>>>0>=(c[g>>2]|0)>>>0){f=14;break}}j=j+1|0;if(j>>>0>>0){n=l;a=k}else{f=16;break}}if((f|0)==9){wJ(b,8)}else if((f|0)==11){wJ(b,8)}else if((f|0)==14){wJ(b,16)}else if((f|0)==16){i=e;return 0}return 0}function hP(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=13;c[b>>2]=(d[a+9|0]|0)<<16|(d[a+8|0]|0)<<24|(d[a+10|0]|0)<<8|(d[a+11|0]|0);i=i;return 0}function iP(a,b){a=a|0;b=b|0;c[a+16>>2]=b;c[a+24>>2]=(d[b+7|0]|0)<<16|(d[b+6|0]|0)<<24|(d[b+8|0]|0)<<8|(d[b+9|0]|0);c[a+28>>2]=0;c[a+32>>2]=0;i=i;return 0}function jP(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a+36>>2]|0;c[a+28>>2]=0;if((d|0)==0){i=b;return}e=a+32|0;a=c[e>>2]|0;if((a|0)==0){i=b;return}lJ(d,a);c[e>>2]=0;i=b;return}function kP(a,b){a=a|0;b=b|0;i=i;return 0}function lP(a,b){a=a|0;b=b|0;c[b>>2]=0;i=i;return 0}function mP(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;a=c[a+16>>2]|0;j=(d[a+7|0]|0)<<16|(d[a+6|0]|0)<<24|(d[a+8|0]|0)<<8|(d[a+9|0]|0);if((j|0)==0){q=0;i=g;return q|0}else{l=0}a:while(1){while(1){m=(l+j|0)>>>1;h=m*11|0;k=(d[a+(h+11)|0]|0)<<8|(d[a+(h+10)|0]|0)<<16|(d[a+(h+12)|0]|0);if(k>>>0>f>>>0){break}l=m+1|0;if(k>>>0>=f>>>0){f=7;break a}if(l>>>0>=j>>>0){e=0;f=17;break a}}if(l>>>0>>0){j=m}else{e=0;f=17;break}}if((f|0)==7){f=a+(h+13)|0;if((f|0)==0){q=0;i=g;return q|0}m=(d[a+(h+14)|0]|0)<<16|(d[f]|0)<<24|(d[a+(h+15)|0]|0)<<8|(d[a+(h+16)|0]|0);j=(d[a+(h+18)|0]|0)<<16|(d[a+(h+17)|0]|0)<<24|(d[a+(h+19)|0]|0)<<8|(d[a+(h+20)|0]|0);b:do{if((m|0)!=0){f=m+4|0;k=m+5|0;h=m+6|0;l=m+7|0;p=(d[a+(m+1)|0]|0)<<16|(d[a+m|0]|0)<<24|(d[a+(m+2)|0]|0)<<8|(d[a+(m+3)|0]|0);m=0;while(1){while(1){if(m>>>0>=p>>>0){break b}n=(p+m|0)>>>1;o=n<<2;q=(d[a+(k+o)|0]|0)<<8|(d[a+(f+o)|0]|0)<<16|(d[a+(h+o)|0]|0);if(q>>>0>e>>>0){p=n}else{break}}if(((d[a+(l+o)|0]|0)+q|0)>>>0>>0){m=n+1|0}else{break}}q=Bd[c[(c[b+12>>2]|0)+12>>2]&255](b,e)|0;i=g;return q|0}}while(0);if((j|0)==0){q=0;i=g;return q|0}q=wQ(a+j|0,e)|0;i=g;return q|0}else if((f|0)==17){i=g;return e|0}return 0}function nP(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;a=c[a+16>>2]|0;h=(d[a+7|0]|0)<<16|(d[a+6|0]|0)<<24|(d[a+8|0]|0)<<8|(d[a+9|0]|0);if((h|0)==0){p=-1;i=f;return p|0}else{k=0}a:while(1){while(1){l=(k+h|0)>>>1;g=l*11|0;j=(d[a+(g+11)|0]|0)<<8|(d[a+(g+10)|0]|0)<<16|(d[a+(g+12)|0]|0);if(j>>>0>e>>>0){break}k=l+1|0;if(j>>>0>=e>>>0){e=7;break a}if(k>>>0>=h>>>0){b=-1;e=17;break a}}if(k>>>0>>0){h=l}else{b=-1;e=17;break}}if((e|0)==7){e=a+(g+13)|0;if((e|0)==0){p=-1;i=f;return p|0}l=(d[a+(g+14)|0]|0)<<16|(d[e]|0)<<24|(d[a+(g+15)|0]|0)<<8|(d[a+(g+16)|0]|0);e=(d[a+(g+18)|0]|0)<<16|(d[a+(g+17)|0]|0)<<24|(d[a+(g+19)|0]|0)<<8|(d[a+(g+20)|0]|0);b:do{if((l|0)!=0){h=l+4|0;j=l+5|0;g=l+6|0;k=l+7|0;o=(d[a+(l+1)|0]|0)<<16|(d[a+l|0]|0)<<24|(d[a+(l+2)|0]|0)<<8|(d[a+(l+3)|0]|0);l=0;while(1){while(1){if(l>>>0>=o>>>0){break b}m=(o+l|0)>>>1;p=m<<2;n=(d[a+(j+p)|0]|0)<<8|(d[a+(h+p)|0]|0)<<16|(d[a+(g+p)|0]|0);if(n>>>0>b>>>0){o=m}else{break}}if(((d[a+(k+p)|0]|0)+n|0)>>>0>>0){l=m+1|0}else{b=1;break}}i=f;return b|0}}while(0);do{if((e|0)!=0){if((wQ(a+e|0,b)|0)==0){break}else{b=0}i=f;return b|0}}while(0);p=-1;i=f;return p|0}else if((e|0)==17){i=f;return b|0}return 0}function oP(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;k=i;i=i+8|0;f=c[a+24>>2]|0;g=c[a+16>>2]|0;j=f+1|0;h=a+28|0;l=c[h>>2]|0;c[k>>2]=0;do{if(l>>>0>>0){c[a+36>>2]=b;a=a+32|0;l=oJ(b,4,l,j,c[a>>2]|0,k)|0;c[a>>2]=l;if((c[k>>2]|0)==0){c[h>>2]=j;h=l;break}else{a=0;i=e;return a|0}}else{h=c[a+32>>2]|0}}while(0);if((f|0)==0){f=0}else{j=0;g=g+10|0;while(1){c[h+(j<<2)>>2]=(d[g+1|0]|0)<<8|(d[g]|0)<<16|(d[g+2|0]|0);j=j+1|0;if(j>>>0>>0){g=g+11|0}else{break}}}c[h+(f<<2)>>2]=0;a=h;i=e;return a|0}function pP(a,b,e){a=a|0;b=b|0;e=e|0;var 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;f=i;k=i;i=i+8|0;h=c[a+24>>2]|0;g=a+16|0;j=c[g>>2]|0;m=h+1|0;l=a+28|0;n=c[l>>2]|0;c[k>>2]=0;do{if(n>>>0>>0){c[a+36>>2]=b;v=a+32|0;b=oJ(b,4,n,m,c[v>>2]|0,k)|0;c[v>>2]=b;if((c[k>>2]|0)==0){c[l>>2]=m;break}else{v=0;i=f;return v|0}}else{b=c[a+32>>2]|0}}while(0);a=a+32|0;if((h|0)!=0){l=j+10|0;while(1){k=(d[l+1|0]|0)<<8|(d[l]|0)<<16|(d[l+2|0]|0);r=(d[l+4|0]|0)<<16|(d[l+3|0]|0)<<24|(d[l+5|0]|0)<<8|(d[l+6|0]|0);j=l+11|0;l=(d[l+8|0]|0)<<16|(d[l+7|0]|0)<<24|(d[l+9|0]|0)<<8|(d[l+10|0]|0);a:do{if((r|0)==0){m=13}else{o=c[g>>2]|0;q=r+4|0;p=r+5|0;m=r+6|0;n=r+7|0;u=(d[o+(r+1)|0]|0)<<16|(d[o+r|0]|0)<<24|(d[o+(r+2)|0]|0)<<8|(d[o+(r+3)|0]|0);s=0;while(1){while(1){if(s>>>0>=u>>>0){m=13;break a}r=(u+s|0)>>>1;t=r<<2;v=(d[o+(p+t)|0]|0)<<8|(d[o+(q+t)|0]|0)<<16|(d[o+(m+t)|0]|0);if(v>>>0>e>>>0){u=r}else{break}}if(((d[o+(n+t)|0]|0)+v|0)>>>0>>0){s=r+1|0}else{m=15;break}}}}while(0);do{if((m|0)==13){m=0;if((l|0)==0){break}if((wQ((c[g>>2]|0)+l|0,e)|0)!=0){m=15}}}while(0);if((m|0)==15){c[b>>2]=k;b=b+4|0}h=h+ -1|0;if((h|0)==0){break}else{l=j}}}c[b>>2]=0;v=c[a>>2]|0;i=f;return v|0}function qP(a,b,e){a=a|0;b=b|0;e=e|0;var 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;f=i;n=i;i=i+8|0;o=n;h=i;i=i+8|0;g=h;m=i;i=i+8|0;l=m;j=c[a+16>>2]|0;p=(d[j+7|0]|0)<<16|(d[j+6|0]|0)<<24|(d[j+8|0]|0)<<8|(d[j+9|0]|0);if((p|0)==0){s=0;i=f;return s|0}else{s=0}a:while(1){while(1){r=(s+p|0)>>>1;k=r*11|0;q=(d[j+(k+11)|0]|0)<<8|(d[j+(k+10)|0]|0)<<16|(d[j+(k+12)|0]|0);if(q>>>0>e>>>0){break}s=r+1|0;if(q>>>0>=e>>>0){e=7;break a}if(s>>>0>=p>>>0){g=0;e=59;break a}}if(s>>>0>>0){p=r}else{g=0;e=59;break}}if((e|0)==7){e=j+(k+13)|0;if((e|0)==0){s=0;i=f;return s|0}e=(d[j+(k+14)|0]|0)<<16|(d[e]|0)<<24|(d[j+(k+15)|0]|0)<<8|(d[j+(k+16)|0]|0);k=(d[j+(k+18)|0]|0)<<16|(d[j+(k+17)|0]|0)<<24|(d[j+(k+19)|0]|0)<<8|(d[j+(k+20)|0]|0);q=(k|0)==0;if((k|e|0)==0){s=0;i=f;return s|0}if((e|0)==0){l=(d[j+(k+1)|0]|0)<<16|(d[j+k|0]|0)<<24|(d[j+(k+2)|0]|0)<<8|(d[j+(k+3)|0]|0);n=l+1|0;o=a+28|0;m=c[o>>2]|0;c[h>>2]=0;do{if(m>>>0>>0){c[a+36>>2]=b;a=a+32|0;c[a>>2]=oJ(b,4,m,n,c[a>>2]|0,g)|0;if((c[h>>2]|0)==0){c[o>>2]=n;break}else{s=0;i=f;return s|0}}else{a=a+32|0}}while(0);g=c[a>>2]|0;if((l|0)==0){l=0}else{h=j+(k+4)|0;b=0;while(1){c[g+(b<<2)>>2]=(d[h+1|0]|0)<<8|(d[h]|0)<<16|(d[h+2|0]|0);b=b+1|0;if(b>>>0>>0){h=h+5|0}else{break}}}c[g+(l<<2)>>2]=0;s=g;i=f;return s|0}p=j+e|0;if(q){s=vQ(a,p,b)|0;i=f;return s|0}h=(d[j+(k+1)|0]|0)<<16|(d[j+k|0]|0)<<24|(d[j+(k+2)|0]|0)<<8|(d[j+(k+3)|0]|0);g=(d[j+(e+1)|0]|0)<<16|(d[p]|0)<<24|(d[j+(e+2)|0]|0)<<8|(d[j+(e+3)|0]|0);if((g|0)==0){r=0}else{q=j+(e+7)|0;s=g;r=0;while(1){r=r+1+(d[q]|0)|0;s=s+ -1|0;if((s|0)==0){break}else{q=q+4|0}}}if((h|0)==0){s=vQ(a,p,b)|0;i=f;return s|0}p=h+1|0;if((r|0)==0){g=a+28|0;l=c[g>>2]|0;c[n>>2]=0;do{if(l>>>0